[
  {
    "path": ".dockerignore",
    "content": "bin\nvendor\npkg\n"
  },
  {
    "path": ".gitignore",
    "content": "bin/\n.idea/"
  },
  {
    "path": ".travis.yml",
    "content": "language: go\ngo:\n  - 1.x\n  - tip\nenv:\n  - VAULT_ADDR='http://127.0.0.1:8200' CONSUL_VERSION=0.9.3 ETCD_VERSION=3.3.1 DYNAMODB_VERSION=2017-02-16 VAULT_VERSION=0.10.1 ZOOKEEPER_VERSION=3.4.10 RANCHER_VERSION=0.6.0\nservices:\n  - redis\nbefore_install:\n  # install consul\n  - wget https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip\n  - unzip consul_${CONSUL_VERSION}_linux_amd64.zip\n  - sudo mv consul /bin/\n  - consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -bind 127.0.0.1 &\n  # install etcd\n  - wget https://github.com/coreos/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gz\n  - tar xzf etcd-v${ETCD_VERSION}-linux-amd64.tar.gz\n  - sudo mv etcd-v${ETCD_VERSION}-linux-amd64/etcd /bin/\n  - sudo mv etcd-v${ETCD_VERSION}-linux-amd64/etcdctl /bin/\n  - unset ETCD_VERSION\n  - etcd &\n  # install DynamoDB\n  - sudo pip install awscli\n  - mkdir /tmp/dynamodb\n  - wget -O - https://s3-us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_${DYNAMODB_VERSION}.tar.gz | tar xz --directory /tmp/dynamodb\n  - java -Djava.library.path=/tmp/dynamodb/DynamoDBLocal_lib -jar /tmp/dynamodb/DynamoDBLocal.jar -inMemory &\n  # Install rancher metadata\n  - wget https://github.com/rancher/rancher-metadata/releases/download/v${RANCHER_VERSION}/rancher-metadata.tar.gz\n  - mkdir -p ./rancher-metadata\n  - tar xzf rancher-metadata.tar.gz --strip-components=1 -C ./rancher-metadata\n  - sudo mv ./rancher-metadata/bin/rancher-metadata /bin/\n  # Install vault\n  - wget https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip\n  - unzip vault_${VAULT_VERSION}_linux_amd64.zip\n  - sudo mv vault /bin/\n  - vault server -dev &\n  # Install zookeeper\n  - wget http://www.eu.apache.org/dist/zookeeper/zookeeper-${ZOOKEEPER_VERSION}/zookeeper-${ZOOKEEPER_VERSION}.tar.gz\n  - tar xzf zookeeper-${ZOOKEEPER_VERSION}.tar.gz\n  - mkdir /tmp/zookeeper && cp integration/zookeeper/zoo.cfg zookeeper-${ZOOKEEPER_VERSION}/conf/zoo.cfg\n  - zookeeper-${ZOOKEEPER_VERSION}/bin/zkServer.sh start\n  # Run AWS SSM mocking server\n  - go run ./integration/ssm/main.go &\ninstall:\n  - make build\n  - sudo make install\nscript:\n  - make test\n  - make integration\n"
  },
  {
    "path": "CHANGELOG",
    "content": "### v0.16.0\n\n28f72608 Release arm64 binaries\n4528af01 Add option to specify auth backend mount path in Vault\nb51998d6 new etcdv3 implementation\nfa37c993 isFileExist() was not defined in windows\na23aa1c7 Update Vault Kubernetes authentication doc\n9b0ce8e6 Fix vendor name for logrus\nccc17eb5 fix fileStat close when open failed on windows\ne3864219 add parseBool to template_funcs\n94bf80e7 Add Kubernetes auth for Vault backend\n304efb5a Add AppRole authN for Vault backend\nfb208461 Redis Backend Updates: WatchPrefix Support, Hash Support, Standard Redis Key Naming Convention\n36d874f5 Fix bug with multiple watches for etcdv3\n1fd12493 backend/etcd: add scheme to srv discovered endpoints\na88c922a Vault TLS certificates auth method\nb77b9232 Add atoi function to template funcs and test\n\n### v0.15.0\n\n0c4cb29e Don't pass empty prefix to zookeeper nodeWalk\n5d6e2790 Update template.md - added forgotten verb\n19d6514d remove fmt.Println\n802e6a11 Added windows cmd support\n59001ca3 Fix handling of absent parameters for ssm backend\n8419c708 AWS SSM - don't treat \"ParameterNotFound\" as a fatal error\n0a09632a Add support for consul BasicAuth\nadf8d486 Fix panic during Consul client creation\n027be91f Update docker Multi-Stage build\n376d3f99 fix etcdv3 client watch: reuse previous watch to avoid memory leak\nf711530d fix(confd): etcd curl err when make integration\n\n### v0.14.0\n\n95ba861f Replace godep with dep\ncb53644c Template integration with https://github.com/xordataexchange/crypt provided values\n6da43945 add go version and git commit sha1 to version string\n8f052819 yaml/json file backend\n61652a2c Add AWS SSM Parameter Store backend\n\n### v0.13.0\n\n181e3e3 Update dependencies\n509268d Remove StackEngine backend\n3a61969 Add further installation instructions\ndd47bbb Introducing WaitPrefix for the Rancher backend\n35ffe8f Adding nested key support to Vault backend v2\nf1833a6 ETCD V3 support\n89c59d4 Feature new template func add\n2b080af added some additional text/template sorting methods\nfbea3b9 Fixes #562 by not adding the URL scheme to the node at DNS lookup time\nab93ff1 Windows support\n695e62e add trimSuffix template function\n3049df8 Add base64 encode/decode template helpers\n485b31c improved etcd watch support\n8528d3c added support to specify a redis database (in the connection string)\n\n### v0.12.0\n\n5f3f79d Change etcd node port because the official port of etcd is 2379\n9073dae Fix typo in docs\n0ea1edb Remove unnecessary loop in Consul backend.\ndbbee0a Fix travis configuration to use latest dynamoDB binary\nad5f74f Fix typo in quick-start-guide.md\n7ac1091 Upgrade Dockerfile to use latest stable Alpine which has Go 1.6\n20b3d37 add env backend integration tests\nc6622ed updated template docs\n9d57489 Specify default Vault backend node\nb34d223 Add simple redis example since one was missing from quickstart\n32d46e5 Fix typo in template-resources.md\n7c89004 Fix up Rancher metadata service description and links\n2a54c58 Fix missing braces and extra parenthesis on formatted datatime example\n6e198db Fix DynamoDB credentials handling\n705f2ee Fix dynamodb nil pointers\ne48e48f Use SVG for the build image\n6bb3c21 Add file exists function to template functions\n57b649d zookeeper watch support\n59da585 extended getenv & map template functions\nd423123 updated README for vault\ne60c2e2 Add support for redis password authentication\nf3a02e7 Adding example goreman Procfile for etcd\naae4190 updated Dockerfile.build.alpine\ncf62311 update some docs\n54f715c Add lookupSRV function.\n7afb8d6 fixed broken etcd watch support\n5a5af59 switched to new etcd client\n5d2955a Remove gb install\n1577855 Fix typos in docs/tomcat-sample.md\nd133c25 Added support for Vault backend\n071e6ab IP dns resolving function for templates\nccf2486 redis: try to recover from closed connections\n66a31bf Add support for etcd BasicAuth\nd9ea46c Added documentation for stackengine as a backend\na1dee21 add -sync-only flag\nc615c18 update checklist\n233ac99 Add more debugging output for onetime and env.\nd7f835d Create tomcat-sample.md\n\n### v0.11.0\n\n46d3c69 load template resources every interval\n6b01b27 Add Rancher Metadata backend\nbec0b60 link to the right command-line-flags doc\nbe20ca7 Fix typo in templates.md\n745cf2b add default node for zookeeper backend\n0dd4c53 Add StackEngine backend support\nf446ce4 Load AWS credentials through a provider chain\nf206b47 Add strings.Replace support\n\n### v0.10.0\n\n70cf76a move contrib to root dir\n34a0ff7 Updating README.md to include new backends\nfee8361 Fix broken links to documentation\nd9d4cb1 Use the gb tool for dep management and building.\n1ef34cb template: don't crash on template error\n7531530 Log command output on error\nfed32fe Draft: Support for DynamoDB\n7f59d50 Use correct application name for ZooKeeper example\n03a7c7e feat: add strings.Contains support\n6307c26 change opdemand emails to engine yard\n5350113 client cert config from environment variables\nb6f414e Adding better support for Consul, enabling SSL/TLS client config\ne94151b update release checklist\nce4eb5c bump to v1.0.0-dev\n503d745 remove --quiet, --debug and --verbose\nc9cefaf random doc fixes\n\n### v0.9.0\n\n8888b7a Add maintainers file\n431e31b add release checklist document\nf782957 bump etcd to v2.0.9 for integration tests\n1b2d669 *feature) add recursive get toml files.\n94fc0a6 allow override of BIN_DIR\n7cce514 log that we're skipping config file to debug\n6e0cbfc Enable watch from the config file\n0410cbd bump version to 0.8.0\nc7f53e1 add go 1.4 to travis.ci version matrix\n7a2e2f4 Add toUpper, toLower support\n4a8e079 Fix \"The event in requested index is outdated and cleared\" error\n211a5cb add --log-level flag\n0a0858c fix godeps\n821cd61 properly format error messages\n2ad79d6 general integration test nitpicks\n913eb2e hook up etcd integration tests\n2ad2fd4 Improved docs for how to use go templates to traverse json\n7b4f06a hook up consul integration tests to travis\nae640bf hook up redis integration tests\n828d568 remove unused service templates\n7d374e6 remove unused log_test\n68eb9ad Add simple redis support\nb4c103c Revert \"Added jsonGet support to template_funcs\"\n1e08562 Added jsonGet support to template_funcs\nf84b57d add scripts for building, installing and testing confd\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing to Confd\n\nWant to hack on Confd? Awesome! Here are instructions to get you started. They are probably not\nperfect, please let us know if anything feels wrong or incomplete.\n\n# Who are the Maintainers?\n\n## BDFL\n\nConfd follows the timeless, highly efficient and totally unfair system known as [Benevolent dictator\nfor life](http://en.wikipedia.org/wiki/Benevolent_Dictator_for_Life).\n\nKelsey Hightower - the creator of Confd - serves as the project's BDFL. Kelsey serves as the final\narbiter of any disputes and has the final say on project direction.\n\n## Core Maintainers\n\nCore maintainers are exceptionally knowledgeable about Confd. Core maintainers are responsible for\nthe following:\n\n - respond to github issues, review and merge pull requests\n - help shape confd's roadmap\n - actively participate in feature development and general maintenance\n - answer and help users in #confd\n - interview and recruit new members as contributing maintainers\n\nPull requests which are considered minor or \"showstoppers\" can be merged with at least one core maintainer's\nLGTM, otherwise they need approval from the BDFL.\n\n### Who assigns maintainers?\n\nKelsey.\n\n### How can I become a maintainer?\n\n - make yourself useful by contributing code, bugfixes, support etc.\n - volunteer on the irc channel\n\nDon't forget: being a maintainer is a time investment. Make sure you will have time to make\nyourself available. You don't have to be a maintainer to make a difference on the project!\n"
  },
  {
    "path": "Dockerfile.build.alpine",
    "content": "FROM golang:1.10.2-alpine\n\nRUN apk add --no-cache make git\nRUN mkdir -p /go/src/github.com/kelseyhightower/confd && \\\n  ln -s /go/src/github.com/kelseyhightower/confd /app\n\nWORKDIR /app\n"
  },
  {
    "path": "LICENSE",
    "content": "Copyright (c) 2013 Kelsey Hightower\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "MAINTAINERS",
    "content": "Chris Armstrong <carmstrong@engineyard.com> (@carmstrong)\nGabriel Monroy <gmonroy@engineyard.com> (@gabrtv)\nKelsey Hightower <kelsey.hightower@gmail.com> (@kelseyhightower)\nMatthew Fisher <mfisher@engineyard.com> (@bacongobbler)\nOleksandr Kushchenko <gearok@gmail.com> (@okushchenko)\n"
  },
  {
    "path": "Makefile",
    "content": ".PHONY: build install clean test integration dep release\nVERSION=`egrep -o '[0-9]+\\.[0-9a-z.\\-]+' version.go`\nGIT_SHA=`git rev-parse --short HEAD || echo`\n\nbuild:\n\t@echo \"Building confd...\"\n\t@mkdir -p bin\n\t@go build -ldflags \"-X main.GitSHA=${GIT_SHA}\" -o bin/confd .\n\ninstall:\n\t@echo \"Installing confd...\"\n\t@install -c bin/confd /usr/local/bin/confd\n\nclean:\n\t@rm -f bin/*\n\ntest:\n\t@echo \"Running tests...\"\n\t@go test `go list ./... | grep -v vendor/`\n\nintegration:\n\t@echo \"Running integration tests...\"\n\t@for i in `find ./integration -name test.sh`; do \\\n\t\techo \"Running $$i\"; \\\n\t\tbash $$i || exit 1; \\\n\t\tbash integration/expect/check.sh || exit 1; \\\n\t\trm /tmp/confd-*; \\\n\tdone\n\ndep:\n\t@dep ensure\n\nrelease:\n\t@docker build -q -t confd_builder -f Dockerfile.build.alpine .\n\t@for platform in darwin linux windows; do \\\n\t\tif [ $$platform == windows ]; then extension=.exe; fi; \\\n\t\tdocker run -it --rm -v ${PWD}:/app -e \"GOOS=$$platform\" -e \"GOARCH=amd64\" -e \"CGO_ENABLED=0\" confd_builder go build -ldflags=\"-s -w -X main.GitSHA=${GIT_SHA}\" -o bin/confd-${VERSION}-$$platform-amd64$$extension; \\\n\tdone\n\t@docker run -it --rm -v ${PWD}:/app -e \"GOOS=linux\" -e \"GOARCH=arm64\" -e \"CGO_ENABLED=0\" confd_builder go build -ldflags=\"-s -w -X main.GitSHA=${GIT_SHA}\" -o bin/confd-${VERSION}-linux-arm64;\n\t@upx bin/confd-${VERSION}-*\n"
  },
  {
    "path": "README.md",
    "content": "# confd\n\n[![Build Status](https://travis-ci.org/kelseyhightower/confd.svg?branch=master)](https://travis-ci.org/kelseyhightower/confd)\n\n`confd` is a lightweight configuration management tool focused on:\n\n* keeping local configuration files up-to-date using data stored in [etcd](https://github.com/coreos/etcd),\n  [consul](http://consul.io), [dynamodb](http://aws.amazon.com/dynamodb/), [redis](http://redis.io),\n  [vault](https://vaultproject.io), [zookeeper](https://zookeeper.apache.org), [aws ssm parameter store](https://aws.amazon.com/ec2/systems-manager/) or env vars and processing [template resources](docs/template-resources.md).\n* reloading applications to pick up new config file changes\n\n## Project Status\n\n`confd` is currently being cleaned up to build on later versions of Go and moving to adopt native support for [Go modules](https://go.dev/blog/using-go-modules). As part of this work the following major changes are being made:\n\n* The `etcd` and `etcdv3` backend are going to be merged. etcd v2 has been deprecated and both backend will now use etcdv3 client libraries.\n* The `cget`, `cgets`, `cgetv`, and `cgetvs` templates function have been removed due to an unmaintained dependency `github.com/xordataexchange/crypt/encoding/secconf`. We need to rethink encryption in the core project and rely only on the standard library going forward. In the meanwhile these template function will not work and if support is required you will need to stick with an older version of confd.\n\n## Community\n\n* IRC: `#confd` on Freenode\n* Mailing list: [Google Groups](https://groups.google.com/forum/#!forum/confd-users)\n* Website: [www.confd.io](http://www.confd.io)\n\n## Building\n\nGo 1.10 is required to build confd, which uses the new vendor directory.\n\n```\n$ mkdir -p $GOPATH/src/github.com/kelseyhightower\n$ git clone https://github.com/kelseyhightower/confd.git $GOPATH/src/github.com/kelseyhightower/confd\n$ cd $GOPATH/src/github.com/kelseyhightower/confd\n$ make\n```\n\nYou should now have confd in your `bin/` directory:\n\n```\n$ ls bin/\nconfd\n```\n\n## Getting Started\n\nBefore we begin be sure to [download and install confd](docs/installation.md).\n\n* [quick start guide](docs/quick-start-guide.md)\n\n## Next steps\n\nCheck out the [docs directory](docs) for more docs.\n"
  },
  {
    "path": "backends/client.go",
    "content": "package backends\n\nimport (\n\t\"errors\"\n\t\"strings\"\n\n\t\"github.com/kelseyhightower/confd/backends/consul\"\n\t\"github.com/kelseyhightower/confd/backends/dynamodb\"\n\t\"github.com/kelseyhightower/confd/backends/env\"\n\t\"github.com/kelseyhightower/confd/backends/etcdv3\"\n\t\"github.com/kelseyhightower/confd/backends/file\"\n\t\"github.com/kelseyhightower/confd/backends/rancher\"\n\t\"github.com/kelseyhightower/confd/backends/redis\"\n\t\"github.com/kelseyhightower/confd/backends/ssm\"\n\t\"github.com/kelseyhightower/confd/backends/vault\"\n\t\"github.com/kelseyhightower/confd/backends/zookeeper\"\n\t\"github.com/kelseyhightower/confd/log\"\n)\n\n// The StoreClient interface is implemented by objects that can retrieve\n// key/value pairs from a backend store.\ntype StoreClient interface {\n\tGetValues(keys []string) (map[string]string, error)\n\tWatchPrefix(prefix string, keys []string, waitIndex uint64, stopChan chan bool) (uint64, error)\n}\n\n// New is used to create a storage client based on our configuration.\nfunc New(config Config) (StoreClient, error) {\n\n\tif config.Backend == \"\" {\n\t\tconfig.Backend = \"etcd\"\n\t}\n\tbackendNodes := config.BackendNodes\n\n\tif config.Backend == \"file\" {\n\t\tlog.Info(\"Backend source(s) set to \" + strings.Join(config.YAMLFile, \", \"))\n\t} else {\n\t\tlog.Info(\"Backend source(s) set to \" + strings.Join(backendNodes, \", \"))\n\t}\n\n\tswitch config.Backend {\n\tcase \"consul\":\n\t\treturn consul.New(config.BackendNodes, config.Scheme,\n\t\t\tconfig.ClientCert, config.ClientKey,\n\t\t\tconfig.ClientCaKeys,\n\t\t\tconfig.BasicAuth,\n\t\t\tconfig.Username,\n\t\t\tconfig.Password,\n\t\t)\n\tcase \"etcd\":\n\t\t// etcd v2 has been deprecated and etcdv3 is now the client for both the etcd and etcdv3 backends.\n\t\treturn etcdv3.NewEtcdClient(backendNodes, config.ClientCert, config.ClientKey, config.ClientCaKeys, config.BasicAuth, config.Username, config.Password)\n\tcase \"etcdv3\":\n\t\treturn etcdv3.NewEtcdClient(backendNodes, config.ClientCert, config.ClientKey, config.ClientCaKeys, config.BasicAuth, config.Username, config.Password)\n\tcase \"zookeeper\":\n\t\treturn zookeeper.NewZookeeperClient(backendNodes)\n\tcase \"rancher\":\n\t\treturn rancher.NewRancherClient(backendNodes)\n\tcase \"redis\":\n\t\treturn redis.NewRedisClient(backendNodes, config.ClientKey, config.Separator)\n\tcase \"env\":\n\t\treturn env.NewEnvClient()\n\tcase \"file\":\n\t\treturn file.NewFileClient(config.YAMLFile, config.Filter)\n\tcase \"vault\":\n\t\tvaultConfig := map[string]string{\n\t\t\t\"app-id\":    config.AppID,\n\t\t\t\"user-id\":   config.UserID,\n\t\t\t\"role-id\":   config.RoleID,\n\t\t\t\"secret-id\": config.SecretID,\n\t\t\t\"username\":  config.Username,\n\t\t\t\"password\":  config.Password,\n\t\t\t\"token\":     config.AuthToken,\n\t\t\t\"cert\":      config.ClientCert,\n\t\t\t\"key\":       config.ClientKey,\n\t\t\t\"caCert\":    config.ClientCaKeys,\n\t\t\t\"path\":      config.Path,\n\t\t}\n\t\treturn vault.New(backendNodes[0], config.AuthType, vaultConfig)\n\tcase \"dynamodb\":\n\t\ttable := config.Table\n\t\tlog.Info(\"DynamoDB table set to \" + table)\n\t\treturn dynamodb.NewDynamoDBClient(table)\n\tcase \"ssm\":\n\t\treturn ssm.New()\n\t}\n\treturn nil, errors.New(\"Invalid backend\")\n}\n"
  },
  {
    "path": "backends/config.go",
    "content": "package backends\n\nimport (\n\tutil \"github.com/kelseyhightower/confd/util\"\n)\n\ntype Config struct {\n\tAuthToken    string     `toml:\"auth_token\"`\n\tAuthType     string     `toml:\"auth_type\"`\n\tBackend      string     `toml:\"backend\"`\n\tBasicAuth    bool       `toml:\"basic_auth\"`\n\tClientCaKeys string     `toml:\"client_cakeys\"`\n\tClientCert   string     `toml:\"client_cert\"`\n\tClientKey    string     `toml:\"client_key\"`\n        ClientInsecure bool     `toml:\"client_insecure\"`\n\tBackendNodes util.Nodes `toml:\"nodes\"`\n\tPassword     string     `toml:\"password\"`\n\tScheme       string     `toml:\"scheme\"`\n\tTable        string     `toml:\"table\"`\n\tSeparator    string     `toml:\"separator\"`\n\tUsername     string     `toml:\"username\"`\n\tAppID        string     `toml:\"app_id\"`\n\tUserID       string     `toml:\"user_id\"`\n\tRoleID       string     `toml:\"role_id\"`\n\tSecretID     string     `toml:\"secret_id\"`\n\tYAMLFile     util.Nodes `toml:\"file\"`\n\tFilter       string     `toml:\"filter\"`\n\tPath         string     `toml:\"path\"`\n\tRole         string\n}\n"
  },
  {
    "path": "backends/consul/client.go",
    "content": "package consul\n\nimport (\n\t\"path\"\n\t\"strings\"\n\n\t\"github.com/hashicorp/consul/api\"\n)\n\n// Client provides a wrapper around the consulkv client\ntype ConsulClient struct {\n\tclient *api.KV\n}\n\n// NewConsulClient returns a new client to Consul for the given address\nfunc New(nodes []string, scheme, cert, key, caCert string, basicAuth bool, username string, password string) (*ConsulClient, error) {\n\tconf := api.DefaultConfig()\n\n\tconf.Scheme = scheme\n\n\tif len(nodes) > 0 {\n\t\tconf.Address = nodes[0]\n\t}\n\n\tif basicAuth {\n\t\tconf.HttpAuth = &api.HttpBasicAuth{\n\t\t\tUsername: username,\n\t\t\tPassword: password,\n\t\t}\n\t}\n\n\tif cert != \"\" && key != \"\" {\n\t\tconf.TLSConfig.CertFile = cert\n\t\tconf.TLSConfig.KeyFile = key\n\t}\n\tif caCert != \"\" {\n\t\tconf.TLSConfig.CAFile = caCert\n\t}\n\n\tclient, err := api.NewClient(conf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &ConsulClient{client.KV()}, nil\n}\n\n// GetValues queries Consul for keys\nfunc (c *ConsulClient) GetValues(keys []string) (map[string]string, error) {\n\tvars := make(map[string]string)\n\tfor _, key := range keys {\n\t\tkey := strings.TrimPrefix(key, \"/\")\n\t\tpairs, _, err := c.client.List(key, nil)\n\t\tif err != nil {\n\t\t\treturn vars, err\n\t\t}\n\t\tfor _, p := range pairs {\n\t\t\tvars[path.Join(\"/\", p.Key)] = string(p.Value)\n\t\t}\n\t}\n\treturn vars, nil\n}\n\ntype watchResponse struct {\n\twaitIndex uint64\n\terr       error\n}\n\nfunc (c *ConsulClient) WatchPrefix(prefix string, keys []string, waitIndex uint64, stopChan chan bool) (uint64, error) {\n\trespChan := make(chan watchResponse)\n\tgo func() {\n\t\topts := api.QueryOptions{\n\t\t\tWaitIndex: waitIndex,\n\t\t}\n\t\t_, meta, err := c.client.List(prefix, &opts)\n\t\tif err != nil {\n\t\t\trespChan <- watchResponse{waitIndex, err}\n\t\t\treturn\n\t\t}\n\t\trespChan <- watchResponse{meta.LastIndex, err}\n\t}()\n\n\tselect {\n\tcase <-stopChan:\n\t\treturn waitIndex, nil\n\tcase r := <-respChan:\n\t\treturn r.waitIndex, r.err\n\t}\n}\n"
  },
  {
    "path": "backends/dynamodb/client.go",
    "content": "package dynamodb\n\nimport (\n\t\"os\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/session\"\n\t\"github.com/aws/aws-sdk-go/service/dynamodb\"\n\t\"github.com/kelseyhightower/confd/log\"\n)\n\n// Client is a wrapper around the DynamoDB client\n// and also holds the table to lookup key value pairs from\ntype Client struct {\n\tclient *dynamodb.DynamoDB\n\ttable  string\n}\n\n// NewDynamoDBClient returns an *dynamodb.Client with a connection to the region\n// configured via the AWS_REGION environment variable.\n// It returns an error if the connection cannot be made or the table does not exist.\nfunc NewDynamoDBClient(table string) (*Client, error) {\n\tvar c *aws.Config\n\tif os.Getenv(\"DYNAMODB_LOCAL\") != \"\" {\n\t\tlog.Debug(\"DYNAMODB_LOCAL is set\")\n\t\tendpoint := \"http://localhost:8000\"\n\t\tc = &aws.Config{\n\t\t\tEndpoint: &endpoint,\n\t\t}\n\t} else {\n\t\tc = nil\n\t}\n\n\tsession := session.New(c)\n\n\t// Fail early, if no credentials can be found\n\t_, err := session.Config.Credentials.Get()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\td := dynamodb.New(session)\n\n\t// Check if the table exists\n\t_, err = d.DescribeTable(&dynamodb.DescribeTableInput{TableName: &table})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &Client{d, table}, nil\n}\n\n// GetValues retrieves the values for the given keys from DynamoDB\nfunc (c *Client) GetValues(keys []string) (map[string]string, error) {\n\tvars := make(map[string]string)\n\tfor _, key := range keys {\n\t\t// Check if we can find the single item\n\t\tm := make(map[string]*dynamodb.AttributeValue)\n\t\tm[\"key\"] = &dynamodb.AttributeValue{S: aws.String(key)}\n\t\tg, err := c.client.GetItem(&dynamodb.GetItemInput{Key: m, TableName: &c.table})\n\t\tif err != nil {\n\t\t\treturn vars, err\n\t\t}\n\n\t\tif g.Item != nil {\n\t\t\tif val, ok := g.Item[\"value\"]; ok {\n\t\t\t\tif val.S != nil {\n\t\t\t\t\tvars[key] = *val.S\n\t\t\t\t} else {\n\t\t\t\t\tlog.Warning(\"Skipping key '%s'. 'value' is not of type 'string'.\", key)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// Check for nested keys\n\t\tq, err := c.client.Scan(\n\t\t\t&dynamodb.ScanInput{\n\t\t\t\tScanFilter: map[string]*dynamodb.Condition{\n\t\t\t\t\t\"key\": &dynamodb.Condition{\n\t\t\t\t\t\tAttributeValueList: []*dynamodb.AttributeValue{\n\t\t\t\t\t\t\t&dynamodb.AttributeValue{S: aws.String(key)}},\n\t\t\t\t\t\tComparisonOperator: aws.String(\"BEGINS_WITH\")}},\n\t\t\t\tAttributesToGet: []*string{aws.String(\"key\"), aws.String(\"value\")},\n\t\t\t\tTableName:       aws.String(c.table),\n\t\t\t\tSelect:          aws.String(\"SPECIFIC_ATTRIBUTES\"),\n\t\t\t})\n\n\t\tif err != nil {\n\t\t\treturn vars, err\n\t\t}\n\n\t\tfor _, i := range q.Items {\n\t\t\titem := i\n\t\t\tif val, ok := item[\"value\"]; ok {\n\t\t\t\tif val.S != nil {\n\t\t\t\t\tvars[*item[\"key\"].S] = *val.S\n\t\t\t\t} else {\n\t\t\t\t\tlog.Warning(\"Skipping key '%s'. 'value' is not of type 'string'.\", *item[\"key\"].S)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t}\n\treturn vars, nil\n}\n\n// WatchPrefix is not implemented\nfunc (c *Client) WatchPrefix(prefix string, keys []string, waitIndex uint64, stopChan chan bool) (uint64, error) {\n\t<-stopChan\n\treturn 0, nil\n}\n"
  },
  {
    "path": "backends/env/client.go",
    "content": "package env\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/kelseyhightower/confd/log\"\n)\n\nvar replacer = strings.NewReplacer(\"/\", \"_\")\n\n// Client provides a shell for the env client\ntype Client struct{}\n\n// NewEnvClient returns a new client\nfunc NewEnvClient() (*Client, error) {\n\treturn &Client{}, nil\n}\n\n// GetValues queries the environment for keys\nfunc (c *Client) GetValues(keys []string) (map[string]string, error) {\n\tallEnvVars := os.Environ()\n\tenvMap := make(map[string]string)\n\tfor _, e := range allEnvVars {\n\t\tindex := strings.Index(e, \"=\")\n\t\tenvMap[e[:index]] = e[index+1:]\n\t}\n\tvars := make(map[string]string)\n\tfor _, key := range keys {\n\t\tk := transform(key)\n\t\tfor envKey, envValue := range envMap {\n\t\t\tif strings.HasPrefix(envKey, k) {\n\t\t\t\tvars[clean(envKey)] = envValue\n\t\t\t}\n\t\t}\n\t}\n\n\tlog.Debug(fmt.Sprintf(\"Key Map: %#v\", vars))\n\n\treturn vars, nil\n}\n\nfunc transform(key string) string {\n\tk := strings.TrimPrefix(key, \"/\")\n\treturn strings.ToUpper(replacer.Replace(k))\n}\n\nvar cleanReplacer = strings.NewReplacer(\"_\", \"/\")\n\nfunc clean(key string) string {\n\tnewKey := \"/\" + key\n\treturn cleanReplacer.Replace(strings.ToLower(newKey))\n}\n\nfunc (c *Client) WatchPrefix(prefix string, keys []string, waitIndex uint64, stopChan chan bool) (uint64, error) {\n\t<-stopChan\n\treturn 0, nil\n}\n"
  },
  {
    "path": "backends/etcd/client.go",
    "content": "package etcd\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"io/ioutil\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/kelseyhightower/confd/log\"\n\tclientv3 \"go.etcd.io/etcd/client/v3\"\n\t\"sync\"\n)\n\n// A watch only tells the latest revision\ntype Watch struct {\n\t// Last seen revision\n\trevision int64\n\t// A channel to wait, will be closed after revision changes\n\tcond chan struct{}\n\t// Use RWMutex to protect cond variable\n\trwl sync.RWMutex\n}\n\n// Wait until revision is greater than lastRevision\nfunc (w *Watch) WaitNext(ctx context.Context, lastRevision int64, notify chan<- int64) {\n\tfor {\n\t\tw.rwl.RLock()\n\t\tif w.revision > lastRevision {\n\t\t\tw.rwl.RUnlock()\n\t\t\tbreak\n\t\t}\n\t\tcond := w.cond\n\t\tw.rwl.RUnlock()\n\t\tselect {\n\t\tcase <-cond:\n\t\tcase <-ctx.Done():\n\t\t\treturn\n\t\t}\n\t}\n\t// We accept larger revision, so do not need to use RLock\n\tselect {\n\tcase notify <- w.revision:\n\tcase <-ctx.Done():\n\t}\n}\n\n// Update revision\nfunc (w *Watch) update(newRevision int64) {\n\tw.rwl.Lock()\n\tdefer w.rwl.Unlock()\n\tw.revision = newRevision\n\tclose(w.cond)\n\tw.cond = make(chan struct{})\n}\n\nfunc createWatch(client *clientv3.Client, prefix string) (*Watch, error) {\n\tw := &Watch{0, make(chan struct{}), sync.RWMutex{}}\n\tgo func() {\n\t\trch := client.Watch(context.Background(), prefix, clientv3.WithPrefix(),\n\t\t\tclientv3.WithCreatedNotify())\n\t\tlog.Debug(\"Watch created on %s\", prefix)\n\t\tfor {\n\t\t\tfor wresp := range rch {\n\t\t\t\tif wresp.CompactRevision > w.revision {\n\t\t\t\t\t// respect CompactRevision\n\t\t\t\t\tw.update(wresp.CompactRevision)\n\t\t\t\t\tlog.Debug(\"Watch to '%s' updated to %d by CompactRevision\", prefix, wresp.CompactRevision)\n\t\t\t\t} else if wresp.Header.GetRevision() > w.revision {\n\t\t\t\t\t// Watch created or updated\n\t\t\t\t\tw.update(wresp.Header.GetRevision())\n\t\t\t\t\tlog.Debug(\"Watch to '%s' updated to %d by header revision\", prefix, wresp.Header.GetRevision())\n\t\t\t\t}\n\t\t\t\tif err := wresp.Err(); err != nil {\n\t\t\t\t\tlog.Error(\"Watch error: %s\", err.Error())\n\t\t\t\t}\n\t\t\t}\n\t\t\tlog.Warning(\"Watch to '%s' stopped at revision %d\", prefix, w.revision)\n\t\t\t// Disconnected or cancelled\n\t\t\t// Wait for a moment to avoid reconnecting\n\t\t\t// too quickly\n\t\t\ttime.Sleep(time.Duration(1) * time.Second)\n\t\t\t// Start from next revision so we are not missing anything\n\t\t\tif w.revision > 0 {\n\t\t\t\trch = client.Watch(context.Background(), prefix, clientv3.WithPrefix(),\n\t\t\t\t\tclientv3.WithRev(w.revision+1))\n\t\t\t} else {\n\t\t\t\t// Start from the latest revision\n\t\t\t\trch = client.Watch(context.Background(), prefix, clientv3.WithPrefix(),\n\t\t\t\t\tclientv3.WithCreatedNotify())\n\t\t\t}\n\t\t}\n\t}()\n\treturn w, nil\n}\n\n// Client is a wrapper around the etcd client\ntype Client struct {\n\tclient  *clientv3.Client\n\twatches map[string]*Watch\n\t// Protect watch\n\twm sync.Mutex\n}\n\n// NewEtcdClient returns an *etcdv3.Client with a connection to named machines.\nfunc NewEtcdClient(machines []string, cert, key, caCert string, basicAuth bool, username string, password string) (*Client, error) {\n\tcfg := clientv3.Config{\n\t\tEndpoints:            machines,\n\t\tDialTimeout:          5 * time.Second,\n\t\tDialKeepAliveTime:    10 * time.Second,\n\t\tDialKeepAliveTimeout: 3 * time.Second,\n\t}\n\n\tif basicAuth {\n\t\tcfg.Username = username\n\t\tcfg.Password = password\n\t}\n\n\ttlsEnabled := false\n\ttlsConfig := &tls.Config{\n\t\tInsecureSkipVerify: false,\n\t}\n\n\tif caCert != \"\" {\n\t\tcertBytes, err := ioutil.ReadFile(caCert)\n\t\tif err != nil {\n\t\t\treturn &Client{}, err\n\t\t}\n\n\t\tcaCertPool := x509.NewCertPool()\n\t\tok := caCertPool.AppendCertsFromPEM(certBytes)\n\n\t\tif ok {\n\t\t\ttlsConfig.RootCAs = caCertPool\n\t\t}\n\t\ttlsEnabled = true\n\t}\n\n\tif cert != \"\" && key != \"\" {\n\t\ttlsCert, err := tls.LoadX509KeyPair(cert, key)\n\t\tif err != nil {\n\t\t\treturn &Client{}, err\n\t\t}\n\t\ttlsConfig.Certificates = []tls.Certificate{tlsCert}\n\t\ttlsEnabled = true\n\t}\n\n\tif tlsEnabled {\n\t\tcfg.TLS = tlsConfig\n\t}\n\n\tclient, err := clientv3.New(cfg)\n\tif err != nil {\n\t\treturn &Client{}, err\n\t}\n\n\treturn &Client{client, make(map[string]*Watch), sync.Mutex{}}, nil\n}\n\n// GetValues queries etcd for keys prefixed by prefix.\nfunc (c *Client) GetValues(keys []string) (map[string]string, error) {\n\t// Use all operations on the same revision\n\tvar first_rev int64 = 0\n\tvars := make(map[string]string)\n\t// Default ETCDv3 TXN limitation. Since it is configurable from v3.3,\n\t// maybe an option should be added (also set max-txn=0 can disable Txn?)\n\tmaxTxnOps := 128\n\tgetOps := make([]string, 0, maxTxnOps)\n\tdoTxn := func(ops []string) error {\n\t\tctx, cancel := context.WithTimeout(context.Background(), time.Duration(3)*time.Second)\n\t\tdefer cancel()\n\n\t\ttxnOps := make([]clientv3.Op, 0, maxTxnOps)\n\n\t\tfor _, k := range ops {\n\t\t\ttxnOps = append(txnOps, clientv3.OpGet(k,\n\t\t\t\tclientv3.WithPrefix(),\n\t\t\t\tclientv3.WithSort(clientv3.SortByKey, clientv3.SortDescend),\n\t\t\t\tclientv3.WithRev(first_rev)))\n\t\t}\n\n\t\tresult, err := c.client.Txn(ctx).Then(txnOps...).Commit()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfor i, r := range result.Responses {\n\t\t\toriginKey := ops[i]\n\t\t\t// append a '/' if not already exists\n\t\t\toriginKeyFixed := originKey\n\t\t\tif !strings.HasSuffix(originKeyFixed, \"/\") {\n\t\t\t\toriginKeyFixed = originKey + \"/\"\n\t\t\t}\n\t\t\tfor _, ev := range r.GetResponseRange().Kvs {\n\t\t\t\tk := string(ev.Key)\n\t\t\t\tif k == originKey || strings.HasPrefix(k, originKeyFixed) {\n\t\t\t\t\tvars[string(ev.Key)] = string(ev.Value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif first_rev == 0 {\n\t\t\t// Save the revison of the first request\n\t\t\tfirst_rev = result.Header.GetRevision()\n\t\t}\n\t\treturn nil\n\t}\n\tfor _, key := range keys {\n\t\tgetOps = append(getOps, key)\n\t\tif len(getOps) >= maxTxnOps {\n\t\t\tif err := doTxn(getOps); err != nil {\n\t\t\t\treturn vars, err\n\t\t\t}\n\t\t\tgetOps = getOps[:0]\n\t\t}\n\t}\n\tif len(getOps) > 0 {\n\t\tif err := doTxn(getOps); err != nil {\n\t\t\treturn vars, err\n\t\t}\n\t}\n\treturn vars, nil\n}\n\nfunc (c *Client) WatchPrefix(prefix string, keys []string, waitIndex uint64, stopChan chan bool) (uint64, error) {\n\tvar err error\n\n\t// Create watch for each key\n\twatches := make(map[string]*Watch)\n\tc.wm.Lock()\n\tfor _, k := range keys {\n\t\twatch, ok := c.watches[k]\n\t\tif !ok {\n\t\t\twatch, err = createWatch(c.client, k)\n\t\t\tif err != nil {\n\t\t\t\tc.wm.Unlock()\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\tc.watches[k] = watch\n\t\t}\n\t\twatches[k] = watch\n\t}\n\tc.wm.Unlock()\n\n\tctx, cancel := context.WithCancel(context.Background())\n\tcancelRoutine := make(chan struct{})\n\tdefer cancel()\n\tdefer close(cancelRoutine)\n\tgo func() {\n\t\tselect {\n\t\tcase <-stopChan:\n\t\t\tcancel()\n\t\tcase <-cancelRoutine:\n\t\t\treturn\n\t\t}\n\t}()\n\n\tnotify := make(chan int64)\n\t// Wait for all watches\n\tfor _, v := range watches {\n\t\tgo v.WaitNext(ctx, int64(waitIndex), notify)\n\t}\n\tselect {\n\tcase nextRevision := <-notify:\n\t\treturn uint64(nextRevision), err\n\tcase <-ctx.Done():\n\t\treturn 0, ctx.Err()\n\t}\n\treturn 0, err\n}\n"
  },
  {
    "path": "backends/etcdv3/client.go",
    "content": "package etcdv3\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"io/ioutil\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/kelseyhightower/confd/log\"\n\tclientv3 \"go.etcd.io/etcd/client/v3\"\n\t\"sync\"\n)\n\n// A watch only tells the latest revision\ntype Watch struct {\n\t// Last seen revision\n\trevision int64\n\t// A channel to wait, will be closed after revision changes\n\tcond chan struct{}\n\t// Use RWMutex to protect cond variable\n\trwl sync.RWMutex\n}\n\n// Wait until revision is greater than lastRevision\nfunc (w *Watch) WaitNext(ctx context.Context, lastRevision int64, notify chan<- int64) {\n\tfor {\n\t\tw.rwl.RLock()\n\t\tif w.revision > lastRevision {\n\t\t\tw.rwl.RUnlock()\n\t\t\tbreak\n\t\t}\n\t\tcond := w.cond\n\t\tw.rwl.RUnlock()\n\t\tselect {\n\t\tcase <-cond:\n\t\tcase <-ctx.Done():\n\t\t\treturn\n\t\t}\n\t}\n\t// We accept larger revision, so do not need to use RLock\n\tselect {\n\tcase notify <- w.revision:\n\tcase <-ctx.Done():\n\t}\n}\n\n// Update revision\nfunc (w *Watch) update(newRevision int64) {\n\tw.rwl.Lock()\n\tdefer w.rwl.Unlock()\n\tw.revision = newRevision\n\tclose(w.cond)\n\tw.cond = make(chan struct{})\n}\n\nfunc createWatch(client *clientv3.Client, prefix string) (*Watch, error) {\n\tw := &Watch{0, make(chan struct{}), sync.RWMutex{}}\n\tgo func() {\n\t\trch := client.Watch(context.Background(), prefix, clientv3.WithPrefix(),\n\t\t\tclientv3.WithCreatedNotify())\n\t\tlog.Debug(\"Watch created on %s\", prefix)\n\t\tfor {\n\t\t\tfor wresp := range rch {\n\t\t\t\tif wresp.CompactRevision > w.revision {\n\t\t\t\t\t// respect CompactRevision\n\t\t\t\t\tw.update(wresp.CompactRevision)\n\t\t\t\t\tlog.Debug(\"Watch to '%s' updated to %d by CompactRevision\", prefix, wresp.CompactRevision)\n\t\t\t\t} else if wresp.Header.GetRevision() > w.revision {\n\t\t\t\t\t// Watch created or updated\n\t\t\t\t\tw.update(wresp.Header.GetRevision())\n\t\t\t\t\tlog.Debug(\"Watch to '%s' updated to %d by header revision\", prefix, wresp.Header.GetRevision())\n\t\t\t\t}\n\t\t\t\tif err := wresp.Err(); err != nil {\n\t\t\t\t\tlog.Error(\"Watch error: %s\", err.Error())\n\t\t\t\t}\n\t\t\t}\n\t\t\tlog.Warning(\"Watch to '%s' stopped at revision %d\", prefix, w.revision)\n\t\t\t// Disconnected or cancelled\n\t\t\t// Wait for a moment to avoid reconnecting\n\t\t\t// too quickly\n\t\t\ttime.Sleep(time.Duration(1) * time.Second)\n\t\t\t// Start from next revision so we are not missing anything\n\t\t\tif w.revision > 0 {\n\t\t\t\trch = client.Watch(context.Background(), prefix, clientv3.WithPrefix(),\n\t\t\t\t\tclientv3.WithRev(w.revision+1))\n\t\t\t} else {\n\t\t\t\t// Start from the latest revision\n\t\t\t\trch = client.Watch(context.Background(), prefix, clientv3.WithPrefix(),\n\t\t\t\t\tclientv3.WithCreatedNotify())\n\t\t\t}\n\t\t}\n\t}()\n\treturn w, nil\n}\n\n// Client is a wrapper around the etcd client\ntype Client struct {\n\tclient  *clientv3.Client\n\twatches map[string]*Watch\n\t// Protect watch\n\twm sync.Mutex\n}\n\n// NewEtcdClient returns an *etcdv3.Client with a connection to named machines.\nfunc NewEtcdClient(machines []string, cert, key, caCert string, basicAuth bool, username string, password string) (*Client, error) {\n\tcfg := clientv3.Config{\n\t\tEndpoints:            machines,\n\t\tDialTimeout:          5 * time.Second,\n\t\tDialKeepAliveTime:    10 * time.Second,\n\t\tDialKeepAliveTimeout: 3 * time.Second,\n\t}\n\n\tif basicAuth {\n\t\tcfg.Username = username\n\t\tcfg.Password = password\n\t}\n\n\ttlsEnabled := false\n\ttlsConfig := &tls.Config{\n\t\tInsecureSkipVerify: false,\n\t}\n\n\tif caCert != \"\" {\n\t\tcertBytes, err := ioutil.ReadFile(caCert)\n\t\tif err != nil {\n\t\t\treturn &Client{}, err\n\t\t}\n\n\t\tcaCertPool := x509.NewCertPool()\n\t\tok := caCertPool.AppendCertsFromPEM(certBytes)\n\n\t\tif ok {\n\t\t\ttlsConfig.RootCAs = caCertPool\n\t\t}\n\t\ttlsEnabled = true\n\t}\n\n\tif cert != \"\" && key != \"\" {\n\t\ttlsCert, err := tls.LoadX509KeyPair(cert, key)\n\t\tif err != nil {\n\t\t\treturn &Client{}, err\n\t\t}\n\t\ttlsConfig.Certificates = []tls.Certificate{tlsCert}\n\t\ttlsEnabled = true\n\t}\n\n\tif tlsEnabled {\n\t\tcfg.TLS = tlsConfig\n\t}\n\n\tclient, err := clientv3.New(cfg)\n\tif err != nil {\n\t\treturn &Client{}, err\n\t}\n\n\treturn &Client{client, make(map[string]*Watch), sync.Mutex{}}, nil\n}\n\n// GetValues queries etcd for keys prefixed by prefix.\nfunc (c *Client) GetValues(keys []string) (map[string]string, error) {\n\t// Use all operations on the same revision\n\tvar first_rev int64 = 0\n\tvars := make(map[string]string)\n\t// Default ETCDv3 TXN limitation. Since it is configurable from v3.3,\n\t// maybe an option should be added (also set max-txn=0 can disable Txn?)\n\tmaxTxnOps := 128\n\tgetOps := make([]string, 0, maxTxnOps)\n\tdoTxn := func(ops []string) error {\n\t\tctx, cancel := context.WithTimeout(context.Background(), time.Duration(3)*time.Second)\n\t\tdefer cancel()\n\n\t\ttxnOps := make([]clientv3.Op, 0, maxTxnOps)\n\n\t\tfor _, k := range ops {\n\t\t\ttxnOps = append(txnOps, clientv3.OpGet(k,\n\t\t\t\tclientv3.WithPrefix(),\n\t\t\t\tclientv3.WithSort(clientv3.SortByKey, clientv3.SortDescend),\n\t\t\t\tclientv3.WithRev(first_rev)))\n\t\t}\n\n\t\tresult, err := c.client.Txn(ctx).Then(txnOps...).Commit()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfor i, r := range result.Responses {\n\t\t\toriginKey := ops[i]\n\t\t\t// append a '/' if not already exists\n\t\t\toriginKeyFixed := originKey\n\t\t\tif !strings.HasSuffix(originKeyFixed, \"/\") {\n\t\t\t\toriginKeyFixed = originKey + \"/\"\n\t\t\t}\n\t\t\tfor _, ev := range r.GetResponseRange().Kvs {\n\t\t\t\tk := string(ev.Key)\n\t\t\t\tif k == originKey || strings.HasPrefix(k, originKeyFixed) {\n\t\t\t\t\tvars[string(ev.Key)] = string(ev.Value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif first_rev == 0 {\n\t\t\t// Save the revison of the first request\n\t\t\tfirst_rev = result.Header.GetRevision()\n\t\t}\n\t\treturn nil\n\t}\n\tfor _, key := range keys {\n\t\tgetOps = append(getOps, key)\n\t\tif len(getOps) >= maxTxnOps {\n\t\t\tif err := doTxn(getOps); err != nil {\n\t\t\t\treturn vars, err\n\t\t\t}\n\t\t\tgetOps = getOps[:0]\n\t\t}\n\t}\n\tif len(getOps) > 0 {\n\t\tif err := doTxn(getOps); err != nil {\n\t\t\treturn vars, err\n\t\t}\n\t}\n\treturn vars, nil\n}\n\nfunc (c *Client) WatchPrefix(prefix string, keys []string, waitIndex uint64, stopChan chan bool) (uint64, error) {\n\tvar err error\n\n\t// Create watch for each key\n\twatches := make(map[string]*Watch)\n\tc.wm.Lock()\n\tfor _, k := range keys {\n\t\twatch, ok := c.watches[k]\n\t\tif !ok {\n\t\t\twatch, err = createWatch(c.client, k)\n\t\t\tif err != nil {\n\t\t\t\tc.wm.Unlock()\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\tc.watches[k] = watch\n\t\t}\n\t\twatches[k] = watch\n\t}\n\tc.wm.Unlock()\n\n\tctx, cancel := context.WithCancel(context.Background())\n\tcancelRoutine := make(chan struct{})\n\tdefer cancel()\n\tdefer close(cancelRoutine)\n\tgo func() {\n\t\tselect {\n\t\tcase <-stopChan:\n\t\t\tcancel()\n\t\tcase <-cancelRoutine:\n\t\t\treturn\n\t\t}\n\t}()\n\n\tnotify := make(chan int64)\n\t// Wait for all watches\n\tfor _, v := range watches {\n\t\tgo v.WaitNext(ctx, int64(waitIndex), notify)\n\t}\n\tselect {\n\tcase nextRevision := <-notify:\n\t\treturn uint64(nextRevision), err\n\tcase <-ctx.Done():\n\t\treturn 0, ctx.Err()\n\t}\n\treturn 0, err\n}\n"
  },
  {
    "path": "backends/file/client.go",
    "content": "package file\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"path\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/fsnotify/fsnotify\"\n\t\"github.com/kelseyhightower/confd/log\"\n\tutil \"github.com/kelseyhightower/confd/util\"\n\t\"gopkg.in/yaml.v2\"\n)\n\nvar replacer = strings.NewReplacer(\"/\", \"_\")\n\n// Client provides a shell for the yaml client\ntype Client struct {\n\tfilepath []string\n\tfilter   string\n}\n\ntype ResultError struct {\n\tresponse uint64\n\terr      error\n}\n\nfunc NewFileClient(filepath []string, filter string) (*Client, error) {\n\treturn &Client{filepath: filepath, filter: filter}, nil\n}\n\nfunc readFile(path string, vars map[string]string) error {\n\tyamlMap := make(map[interface{}]interface{})\n\tdata, err := ioutil.ReadFile(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = yaml.Unmarshal(data, &yamlMap)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = nodeWalk(yamlMap, \"/\", vars)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (c *Client) GetValues(keys []string) (map[string]string, error) {\n\tvars := make(map[string]string)\n\tvar filePaths []string\n\tfor _, path := range c.filepath {\n\t\tp, err := util.RecursiveFilesLookup(path, c.filter)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfilePaths = append(filePaths, p...)\n\t}\n\n\tfor _, path := range filePaths {\n\t\terr := readFile(path, vars)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\nVarsLoop:\n\tfor k, _ := range vars {\n\t\tfor _, key := range keys {\n\t\t\tif strings.HasPrefix(k, key) {\n\t\t\t\tcontinue VarsLoop\n\t\t\t}\n\t\t}\n\t\tdelete(vars, k)\n\t}\n\tlog.Debug(fmt.Sprintf(\"Key Map: %#v\", vars))\n\treturn vars, nil\n}\n\n// nodeWalk recursively descends nodes, updating vars.\nfunc nodeWalk(node interface{}, key string, vars map[string]string) error {\n\tswitch node.(type) {\n\tcase []interface{}:\n\t\tfor i, j := range node.([]interface{}) {\n\t\t\tkey := path.Join(key, strconv.Itoa(i))\n\t\t\tnodeWalk(j, key, vars)\n\t\t}\n\tcase map[interface{}]interface{}:\n\t\tfor k, v := range node.(map[interface{}]interface{}) {\n\t\t\tkey := path.Join(key, k.(string))\n\t\t\tnodeWalk(v, key, vars)\n\t\t}\n\tcase string:\n\t\tvars[key] = node.(string)\n\tcase int:\n\t\tvars[key] = strconv.Itoa(node.(int))\n\tcase bool:\n\t\tvars[key] = strconv.FormatBool(node.(bool))\n\tcase float64:\n\t\tvars[key] = strconv.FormatFloat(node.(float64), 'f', -1, 64)\n\t}\n\treturn nil\n}\n\nfunc (c *Client) watchChanges(watcher *fsnotify.Watcher, stopChan chan bool) ResultError {\n\toutputChannel := make(chan ResultError)\n\tgo func() error {\n\t\tdefer close(outputChannel)\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase event := <-watcher.Events:\n\t\t\t\tlog.Debug(fmt.Sprintf(\"Event: %s\", event))\n\t\t\t\tif event.Op&fsnotify.Write == fsnotify.Write ||\n\t\t\t\t\tevent.Op&fsnotify.Remove == fsnotify.Remove ||\n\t\t\t\t\tevent.Op&fsnotify.Create == fsnotify.Create {\n\t\t\t\t\toutputChannel <- ResultError{response: 1, err: nil}\n\t\t\t\t}\n\t\t\tcase err := <-watcher.Errors:\n\t\t\t\toutputChannel <- ResultError{response: 0, err: err}\n\t\t\tcase <-stopChan:\n\t\t\t\toutputChannel <- ResultError{response: 1, err: nil}\n\t\t\t}\n\t\t}\n\t}()\n\treturn <-outputChannel\n}\n\nfunc (c *Client) WatchPrefix(prefix string, keys []string, waitIndex uint64, stopChan chan bool) (uint64, error) {\n\tif waitIndex == 0 {\n\t\treturn 1, nil\n\t}\n\n\twatcher, err := fsnotify.NewWatcher()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer watcher.Close()\n\tfor _, path := range c.filepath {\n\t\tisDir, err := util.IsDirectory(path)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tif isDir {\n\t\t\tdirs, err := util.RecursiveDirsLookup(path, \"*\")\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\tfor _, dir := range dirs {\n\t\t\t\terr = watcher.Add(dir)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\terr = watcher.Add(path)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t}\n\t}\n\toutput := c.watchChanges(watcher, stopChan)\n\tif output.response != 2 {\n\t\treturn output.response, output.err\n\t}\n\treturn waitIndex, nil\n}\n"
  },
  {
    "path": "backends/rancher/client.go",
    "content": "package rancher\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\tlog \"github.com/kelseyhightower/confd/log\"\n)\n\nconst (\n\tMetaDataURL = \"http://rancher-metadata\"\n)\n\ntype Client struct {\n\turl        string\n\thttpClient *http.Client\n}\n\nfunc NewRancherClient(backendNodes []string) (*Client, error) {\n\turl := MetaDataURL\n\n\tif len(backendNodes) > 0 {\n\t\turl = \"http://\" + backendNodes[0]\n\t}\n\n\tlog.Info(\"Using Rancher Metadata URL: \" + url)\n\tclient := &Client{\n\t\turl:        url,\n\t\thttpClient: &http.Client{},\n\t}\n\n\terr := client.testConnection()\n\treturn client, err\n\n}\n\nfunc (c *Client) GetValues(keys []string) (map[string]string, error) {\n\tvars := map[string]string{}\n\n\tfor _, key := range keys {\n\t\tbody, err := c.makeMetaDataRequest(key)\n\t\tif err != nil {\n\t\t\treturn vars, err\n\t\t}\n\n\t\tvar jsonResponse interface{}\n\t\tif err = json.Unmarshal(body, &jsonResponse); err != nil {\n\t\t\treturn vars, err\n\t\t}\n\n\t\tif err = treeWalk(key, jsonResponse, vars); err != nil {\n\t\t\treturn vars, err\n\t\t}\n\t}\n\treturn vars, nil\n}\n\nfunc treeWalk(root string, val interface{}, vars map[string]string) error {\n\tswitch val.(type) {\n\tcase map[string]interface{}:\n\t\tfor k := range val.(map[string]interface{}) {\n\t\t\ttreeWalk(strings.Join([]string{root, k}, \"/\"), val.(map[string]interface{})[k], vars)\n\t\t}\n\tcase []interface{}:\n\t\tfor i, item := range val.([]interface{}) {\n\t\t\tidx := strconv.Itoa(i)\n\t\t\tif i, isMap := item.(map[string]interface{}); isMap {\n\t\t\t\tif name, exists := i[\"name\"]; exists {\n\t\t\t\t\tidx = name.(string)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttreeWalk(strings.Join([]string{root, idx}, \"/\"), item, vars)\n\t\t}\n\tcase bool:\n\t\tvars[root] = strconv.FormatBool(val.(bool))\n\tcase string:\n\t\tvars[root] = val.(string)\n\tcase float64:\n\t\tvars[root] = strconv.FormatFloat(val.(float64), 'f', -1, 64)\n\tcase nil:\n\t\tvars[root] = \"null\"\n\tdefault:\n\t\tlog.Error(\"Unknown type: \" + reflect.TypeOf(val).Name())\n\t}\n\treturn nil\n}\n\nfunc (c *Client) makeMetaDataRequest(path string) ([]byte, error) {\n\treq, _ := http.NewRequest(\"GET\", strings.Join([]string{c.url, path}, \"\"), nil)\n\treq.Header.Set(\"Accept\", \"application/json\")\n\n\tresp, err := c.httpClient.Do(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ioutil.ReadAll(resp.Body)\n}\n\nfunc (c *Client) testConnection() error {\n\tvar err error\n\tmaxTime := 20 * time.Second\n\n\tfor i := 1 * time.Second; i < maxTime; i *= time.Duration(2) {\n\t\tif _, err = c.makeMetaDataRequest(\"/\"); err != nil {\n\t\t\ttime.Sleep(i)\n\t\t} else {\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn err\n}\n\ntype watchResponse struct {\n\twaitIndex uint64\n\terr       error\n}\n\ntype timeout interface {\n\tTimeout() bool\n}\n\nfunc (c *Client) waitVersion(prefix string, version string) (string, error) {\n\t// Long poll for 10 seconds\n\tpath := fmt.Sprintf(\"%s/version?wait=true&value=%s&maxWait=10\", prefix, version)\n\n\tfor {\n\t\tresp, err := c.makeMetaDataRequest(path)\n\t\tif err != nil {\n\t\t\tt, ok := err.(timeout)\n\t\t\tif ok && t.Timeout() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn \"\", err\n\t\t}\n\t\terr = json.Unmarshal(resp, &version)\n\t\treturn version, err\n\t}\n}\n\nfunc (c *Client) WatchPrefix(prefix string, keys []string, waitIndex uint64, stopChan chan bool) (uint64, error) {\n\t// return something > 0 to trigger an initial retrieval from the store\n\tif waitIndex == 0 {\n\t\treturn 1, nil\n\t}\n\n\trespChan := make(chan watchResponse)\n\tgo func() {\n\t\tversion := \"init\"\n\t\tfor {\n\t\t\tnewVersion, err := c.waitVersion(prefix, version)\n\t\t\tif err != nil {\n\t\t\t\trespChan <- watchResponse{0, err}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif version != newVersion && version != \"init\" {\n\t\t\t\trespChan <- watchResponse{1, nil}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tversion = newVersion\n\t\t}\n\t}()\n\n\tfor {\n\t\tselect {\n\t\tcase <-stopChan:\n\t\t\treturn waitIndex, nil\n\t\tcase r := <-respChan:\n\t\t\treturn r.waitIndex, r.err\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "backends/redis/client.go",
    "content": "package redis\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/garyburd/redigo/redis\"\n\t\"github.com/kelseyhightower/confd/log\"\n)\n\n\ntype watchResponse struct {\n\twaitIndex uint64\n\terr       error\n}\n\n// Client is a wrapper around the redis client\ntype Client struct {\n\tclient    redis.Conn\n\tmachines  []string\n\tpassword  string\n\tseparator string\n\tpsc \t  redis.PubSubConn\n\tpscChan   chan watchResponse\n}\n\n// Iterate through `machines`, trying to connect to each in turn.\n// Returns the first successful connection or the last error encountered.\n// Assumes that `machines` is non-empty.\nfunc tryConnect(machines []string, password string, timeout bool) (redis.Conn, int, error) {\n\tvar err error\n\tfor _, address := range machines {\n\t\tvar conn redis.Conn\n\t\tvar db int\n\n\t\tidx := strings.Index(address, \"/\")\n\t\tif idx != -1 {\n\t\t\t// a database is provided\n\t\t\tdb, err = strconv.Atoi(address[idx+1:])\n\t\t\tif err == nil {\n\t\t\t\taddress = address[:idx]\n\t\t\t}\n\t\t}\n\n\t\tnetwork := \"tcp\"\n\t\tif _, err = os.Stat(address); err == nil {\n\t\t\tnetwork = \"unix\"\n\t\t}\n\t\tlog.Debug(fmt.Sprintf(\"Trying to connect to redis node %s\", address))\n\n\t\tvar dialops []redis.DialOption\n\t\tif timeout {\n\t\t\tdialops = []redis.DialOption{\n\t\t\t\tredis.DialConnectTimeout(time.Second),\n\t\t\t\tredis.DialReadTimeout(time.Second),\n\t\t\t\tredis.DialWriteTimeout(time.Second),\n\t\t\t\tredis.DialDatabase(db),\n\t\t\t}\n\t\t} else {\n\t\t\tdialops = []redis.DialOption{\n\t\t\t\tredis.DialConnectTimeout(time.Second),\n\t\t\t\tredis.DialWriteTimeout(time.Second),\n\t\t\t\tredis.DialDatabase(db),\n\t\t\t}\n\t\t}\n\n\t\tif password != \"\" {\n\t\t\tdialops = append(dialops, redis.DialPassword(password))\n\t\t}\n\n\t\tconn, err = redis.Dial(network, address, dialops...)\n\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\treturn conn, db, nil\n\t}\n\treturn nil, 0, err\n}\n\n// Retrieves a connected redis client from the client wrapper.\n// Existing connections will be tested with a PING command before being returned. Tries to reconnect once if necessary.\n// Returns the established redis connection or the error encountered.\nfunc (c *Client) connectedClient() (redis.Conn, error) {\n\tif c.client != nil {\n\t\tlog.Debug(\"Testing existing redis connection.\")\n\n\t\tresp, err := c.client.Do(\"PING\")\n\t\tif (err != nil && err == redis.ErrNil) || resp != \"PONG\" {\n\t\t\tlog.Error(fmt.Sprintf(\"Existing redis connection no longer usable. \"+\n\t\t\t\t\"Will try to re-establish. Error: %s\", err.Error()))\n\t\t\tc.client = nil\n\t\t}\n\t}\n\n\t// Existing client could have been deleted by previous block\n\tif c.client == nil {\n\t\tvar err error\n\t\tc.client, _, err = tryConnect(c.machines, c.password, true)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn c.client, nil\n}\n\n// NewRedisClient returns an *redis.Client with a connection to named machines.\n// It returns an error if a connection to the cluster cannot be made.\nfunc NewRedisClient(machines []string, password string, separator string) (*Client, error) {\n\tif separator == \"\" {\n\t\tseparator = \"/\"\n\t}\n\tlog.Debug(fmt.Sprintf(\"Redis Separator: %#v\", separator))\n\tvar err error\n\tclientWrapper := &Client{machines: machines, password: password, separator: separator, client: nil, pscChan: make(chan watchResponse), psc: redis.PubSubConn{Conn: nil} }\n\tclientWrapper.client, _, err = tryConnect(machines, password, true)\n\treturn clientWrapper, err\n}\n\nfunc (c *Client) transform(key string) string {\n\tif c.separator == \"/\" {\n\t\treturn key;\n\t}\n\tk := strings.TrimPrefix(key, \"/\")\n\treturn strings.Replace(k, \"/\", c.separator, -1);\n}\n\nfunc (c *Client) clean(key string) string {\n\tk := key\n\tif !strings.HasPrefix(k, \"/\") {\n\t\tk = \"/\" + k\n\t}\n\treturn strings.Replace(k, c.separator, \"/\", -1);\n}\n\n// GetValues queries redis for keys prefixed by prefix.\nfunc (c *Client) GetValues(keys []string) (map[string]string, error) {\n\t// Ensure we have a connected redis client\n\trClient, err := c.connectedClient()\n\tif err != nil && err != redis.ErrNil {\n\t\treturn nil, err\n\t}\n\n\tvars := make(map[string]string)\n\tfor _, key := range keys {\n\t\tkey = strings.Replace(key, \"/*\", \"\", -1)\n\n\t\tk := c.transform(key)\n\t\tt, err := redis.String(rClient.Do(\"TYPE\", k))\n\n\t\tif err == nil && err != redis.ErrNil {\n\n\t\t\tif t == \"string\" {\n\t\t\t\tvalue, err := redis.String(rClient.Do(\"GET\", k))\n\t\t\t\tif err == nil {\n\t\t\t\t\tvars[key] = value\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif err != redis.ErrNil {\n\t\t\t\t\treturn vars, err\n\t\t\t\t}\n\t\t\t} else if t == \"hash\" {\n\t\t\t\tidx := 0\n\t\t\t\tfor {\n\t\t\t\t\tvalues, err := redis.Values(rClient.Do(\"HSCAN\", k, idx, \"MATCH\", \"*\", \"COUNT\", \"1000\"))\n\t\t\t\t\tif err != nil && err != redis.ErrNil {\n\t\t\t\t\t\treturn vars, err\n\t\t\t\t\t}\n\t\t\t\t\tidx, _ = redis.Int(values[0], nil)\n\t\t\t\t\titems, _ := redis.Strings(values[1], nil)\n\t\t\t\t\tfor i := 0; i < len(items); i+=2 {\n\t\t\t\t\t\tvar newKey, value string\n\t\t\t\t\t\tif newKey, err = redis.String(items[i], nil); err != nil {\n\t\t\t\t\t\t\treturn vars, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif value, err = redis.String(items[i+1], nil); err != nil {\n\t\t\t\t\t\t\treturn vars, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvars[c.clean(k + \"/\" + newKey)] = value\n\t\t\t\t\t}\n\t\t\t\t\tif idx == 0 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif key == \"/\" {\n\t\t\t\t\tk = \"*\"\n\t\t\t\t} else {\n\t\t\t\t\tk = fmt.Sprintf(c.transform(\"%s/*\"), k)\n\t\t\t\t}\n\t\t\n\t\t\t\tidx := 0\n\t\t\t\tfor {\n\t\t\t\t\tvalues, err := redis.Values(rClient.Do(\"SCAN\", idx, \"MATCH\", k, \"COUNT\", \"1000\"))\n\t\t\t\t\tif err != nil && err != redis.ErrNil {\n\t\t\t\t\t\treturn vars, err\n\t\t\t\t\t}\n\t\t\t\t\tidx, _ = redis.Int(values[0], nil)\n\t\t\t\t\titems, _ := redis.Strings(values[1], nil)\n\t\t\t\t\tfor _, item := range items {\n\t\t\t\t\t\tvar newKey string\n\t\t\t\t\t\tif newKey, err = redis.String(item, nil); err != nil {\n\t\t\t\t\t\t\treturn vars, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif value, err := redis.String(rClient.Do(\"GET\", newKey)); err == nil {\n\t\t\t\t\t\t\tvars[c.clean(newKey)] = value\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif idx == 0 {\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} else {\n\t\t\treturn vars, err\n\t\t}\n\t}\n\n\tlog.Debug(fmt.Sprintf(\"Key Map: %#v\", vars))\n\n\treturn vars, nil\n}\n\nfunc (c *Client) WatchPrefix(prefix string, keys []string, waitIndex uint64, stopChan chan bool) (uint64, error) {\n\t\t\n\tif waitIndex == 0 {\n\t\treturn 1, nil\n\t}\n\n\tif len(c.pscChan) > 0 {\n\t\tvar respChan watchResponse\n\t\tfor len(c.pscChan) > 0 {\n\t\t\trespChan = <-c.pscChan\n\t\t}\n\t\treturn respChan.waitIndex, respChan.err\n\t}\n\n\tgo func() {\n\t\tif c.psc.Conn == nil {\n\t\t\trClient, db, err := tryConnect(c.machines, c.password, false);\n\t\n\t\t\tif err != nil {\n\t\t\t\tc.psc = redis.PubSubConn{Conn: nil}\n\t\t\t\tc.pscChan <- watchResponse{0, err}\n\t\t\t\treturn\n\t\t\t}\n\t\t\n\t\t\tc.psc = redis.PubSubConn{Conn: rClient}\t\t\n\n\t\t\tgo func() {\n\t\t\t\tdefer func() {\n\t\t\t\t\tc.psc.Close()\n\t\t\t\t\tc.psc = redis.PubSubConn{Conn: nil}\n\t\t\t\t}()\n\t\t\t\tfor {\n\t\t\t\t\tswitch n := c.psc.Receive().(type) {\n\t\t\t\t\t\tcase redis.PMessage:\n\t\t\t\t\t\t\tlog.Debug(fmt.Sprintf(\"Redis Message: %s %s\\n\", n.Channel, n.Data))\n\t\t\t\t\t\t\tdata := string(n.Data)\n\t\t\t\t\t\t\tcommands := [12]string{\"del\", \"append\", \"rename_from\", \"rename_to\", \"expire\", \"set\", \"incrby\", \"incrbyfloat\", \"hset\", \"hincrby\", \"hincrbyfloat\", \"hdel\"}\n\t\t\t\t\t\t\tfor _, command := range commands {\n\t\t\t\t\t\t\t\tif command == data {\n\t\t\t\t\t\t\t\t\tc.pscChan <- watchResponse{1, nil}\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\tcase redis.Subscription:\n\t\t\t\t\t\t\tlog.Debug(fmt.Sprintf(\"Redis Subscription: %s %s %d\\n\", n.Kind, n.Channel, n.Count))\n\t\t\t\t\t\t\tif n.Count == 0 {\n\t\t\t\t\t\t\t\tc.pscChan <- watchResponse{0, nil}\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase error:\n\t\t\t\t\t\t\tlog.Debug(fmt.Sprintf(\"Redis error: %v\\n\", n))\n\t\t\t\t\t\t\tc.pscChan <- watchResponse{0, n}\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}()\n\t\t\t\n\t\t\tc.psc.PSubscribe(\"__keyspace@\" + strconv.Itoa(db) + \"__:\" + c.transform(prefix) + \"*\")\n\t\t}\n\t}()\n\n\tselect {\n\tcase <-stopChan:\n\t\tc.psc.PUnsubscribe()\n\t\treturn waitIndex, nil\n\tcase r := <- c.pscChan:\n\t\treturn r.waitIndex, r.err\n\t}\n}"
  },
  {
    "path": "backends/ssm/client.go",
    "content": "package ssm\n\nimport (\n\t\"os\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/session\"\n\t\"github.com/aws/aws-sdk-go/service/ssm\"\n\t\"github.com/kelseyhightower/confd/log\"\n)\n\ntype Client struct {\n\tclient *ssm.SSM\n}\n\nfunc New() (*Client, error) {\n\t// Create a session to share configuration, and load external configuration.\n\tsess := session.Must(session.NewSession())\n\n\t// Fail early, if no credentials can be found\n\t_, err := sess.Config.Credentials.Get()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar c *aws.Config\n\tif os.Getenv(\"SSM_LOCAL\") != \"\" {\n\t\tlog.Debug(\"SSM_LOCAL is set\")\n\t\tendpoint := \"http://localhost:8001\"\n\t\tc = &aws.Config{\n\t\t\tEndpoint: &endpoint,\n\t\t}\n\t} else {\n\t\tc = nil\n\t}\n\n\t// Create the service's client with the session.\n\tsvc := ssm.New(sess, c)\n\treturn &Client{svc}, nil\n}\n\n// GetValues retrieves the values for the given keys from AWS SSM Parameter Store\nfunc (c *Client) GetValues(keys []string) (map[string]string, error) {\n\tvars := make(map[string]string)\n\tvar err error\n\tfor _, key := range keys {\n\t\tlog.Debug(\"Processing key=%s\", key)\n\t\tvar resp map[string]string\n\t\tresp, err = c.getParametersWithPrefix(key)\n\t\tif err != nil {\n\t\t\treturn vars, err\n\t\t}\n\t\tif len(resp) == 0 {\n\t\t\tresp, err = c.getParameter(key)\n\t\t\tif err != nil && err.(awserr.Error).Code() != ssm.ErrCodeParameterNotFound {\n\t\t\t\treturn vars, err\n\t\t\t}\n\t\t}\n\t\tfor k, v := range resp {\n\t\t\tvars[k] = v\n\t\t}\n\t}\n\treturn vars, nil\n}\n\nfunc (c *Client) getParametersWithPrefix(prefix string) (map[string]string, error) {\n\tvar err error\n\tparameters := make(map[string]string)\n\tparams := &ssm.GetParametersByPathInput{\n\t\tPath:           aws.String(prefix),\n\t\tRecursive:      aws.Bool(true),\n\t\tWithDecryption: aws.Bool(true),\n\t}\n\tc.client.GetParametersByPathPages(params,\n\t\tfunc(page *ssm.GetParametersByPathOutput, lastPage bool) bool {\n\t\t\tfor _, p := range page.Parameters {\n\t\t\t\tparameters[*p.Name] = *p.Value\n\t\t\t}\n\t\t\treturn !lastPage\n\t\t})\n\treturn parameters, err\n}\n\nfunc (c *Client) getParameter(name string) (map[string]string, error) {\n\tparameters := make(map[string]string)\n\tparams := &ssm.GetParameterInput{\n\t\tName:           aws.String(name),\n\t\tWithDecryption: aws.Bool(true),\n\t}\n\tresp, err := c.client.GetParameter(params)\n\tif err != nil {\n\t\treturn parameters, err\n\t}\n\tparameters[*resp.Parameter.Name] = *resp.Parameter.Value\n\treturn parameters, nil\n}\n\n// WatchPrefix is not implemented\nfunc (c *Client) WatchPrefix(prefix string, keys []string, waitIndex uint64, stopChan chan bool) (uint64, error) {\n\t<-stopChan\n\treturn 0, nil\n}\n"
  },
  {
    "path": "backends/vault/client.go",
    "content": "package vault\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"path\"\n\n\tvaultapi \"github.com/hashicorp/vault/api\"\n\t\"github.com/kelseyhightower/confd/log\"\n)\n\n// Client is a wrapper around the vault client\ntype Client struct {\n\tclient *vaultapi.Client\n}\n\n// get a\nfunc getParameter(key string, parameters map[string]string) string {\n\tvalue := parameters[key]\n\tif value == \"\" {\n\t\t// panic if a configuration is missing\n\t\tpanic(fmt.Sprintf(\"%s is missing from configuration\", key))\n\t}\n\treturn value\n}\n\n// panicToError converts a panic to an error\nfunc panicToError(err *error) {\n\tif r := recover(); r != nil {\n\t\tswitch t := r.(type) {\n\t\tcase string:\n\t\t\t*err = errors.New(t)\n\t\tcase error:\n\t\t\t*err = t\n\t\tdefault: // panic again if we don't know how to handle\n\t\t\tpanic(r)\n\t\t}\n\t}\n}\n\n// authenticate with the remote client\nfunc authenticate(c *vaultapi.Client, authType string, params map[string]string) (err error) {\n\tvar secret *vaultapi.Secret\n\n\t// handle panics gracefully by creating an error\n\t// this would happen when we get a parameter that is missing\n\tdefer panicToError(&err)\n\n\tpath := params[\"path\"]\n\tif path == \"\" {\n\t\tpath = authType\n\t\tif authType == \"app-role\" {\n\t\t\tpath = \"approle\"\n\t\t}\n\t}\n\turl := fmt.Sprintf(\"/auth/%s/login\", path)\n\n\tswitch authType {\n\tcase \"app-role\":\n\t\tsecret, err = c.Logical().Write(url, map[string]interface{}{\n\t\t\t\"role_id\":   getParameter(\"role-id\", params),\n\t\t\t\"secret_id\": getParameter(\"secret-id\", params),\n\t\t})\n\tcase \"app-id\":\n\t\tsecret, err = c.Logical().Write(url, map[string]interface{}{\n\t\t\t\"app_id\":  getParameter(\"app-id\", params),\n\t\t\t\"user_id\": getParameter(\"user-id\", params),\n\t\t})\n\tcase \"github\":\n\t\tsecret, err = c.Logical().Write(url, map[string]interface{}{\n\t\t\t\"token\": getParameter(\"token\", params),\n\t\t})\n\tcase \"token\":\n\t\tc.SetToken(getParameter(\"token\", params))\n\t\tsecret, err = c.Logical().Read(\"/auth/token/lookup-self\")\n\tcase \"userpass\":\n\t\tusername, password := getParameter(\"username\", params), getParameter(\"password\", params)\n\t\tsecret, err = c.Logical().Write(fmt.Sprintf(\"%s/%s\", url, username), map[string]interface{}{\n\t\t\t\"password\": password,\n\t\t})\n\tcase \"kubernetes\":\n\t\tjwt, err := ioutil.ReadFile(\"/var/run/secrets/kubernetes.io/serviceaccount/token\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err = c.Logical().Write(url, map[string]interface{}{\n\t\t\t\"jwt\":  string(jwt[:]),\n\t\t\t\"role\": getParameter(\"role-id\", params),\n\t\t})\n\tcase \"cert\":\n\t\tsecret, err = c.Logical().Write(url, map[string]interface{}{})\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// if the token has already been set\n\tif c.Token() != \"\" {\n\t\treturn nil\n\t}\n\n\tif secret == nil || secret.Auth == nil {\n\t\treturn errors.New(\"Unable to authenticate\")\n\t}\n\n\tlog.Debug(\"client authenticated with auth backend: %s\", authType)\n\t// the default place for a token is in the auth section\n\t// otherwise, the backend will set the token itself\n\tc.SetToken(secret.Auth.ClientToken)\n\treturn nil\n}\n\nfunc getConfig(address, cert, key, caCert string) (*vaultapi.Config, error) {\n\tconf := vaultapi.DefaultConfig()\n\tconf.Address = address\n\n\ttlsConfig := &tls.Config{}\n\tif cert != \"\" && key != \"\" {\n\t\tclientCert, err := tls.LoadX509KeyPair(cert, key)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttlsConfig.Certificates = []tls.Certificate{clientCert}\n\t\ttlsConfig.BuildNameToCertificate()\n\t}\n\n\tif caCert != \"\" {\n\t\tca, err := ioutil.ReadFile(caCert)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tcaCertPool := x509.NewCertPool()\n\t\tcaCertPool.AppendCertsFromPEM(ca)\n\t\ttlsConfig.RootCAs = caCertPool\n\t}\n\n\tconf.HttpClient.Transport = &http.Transport{\n\t\tTLSClientConfig: tlsConfig,\n\t}\n\n\treturn conf, nil\n}\n\n// New returns an *vault.Client with a connection to named machines.\n// It returns an error if a connection to the cluster cannot be made.\nfunc New(address, authType string, params map[string]string) (*Client, error) {\n\tif authType == \"\" {\n\t\treturn nil, errors.New(\"you have to set the auth type when using the vault backend\")\n\t}\n\tlog.Info(\"Vault authentication backend set to %s\", authType)\n\tconf, err := getConfig(address, params[\"cert\"], params[\"key\"], params[\"caCert\"])\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tc, err := vaultapi.NewClient(conf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := authenticate(c, authType, params); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &Client{c}, nil\n}\n\n// GetValues queries etcd for keys prefixed by prefix.\nfunc (c *Client) GetValues(keys []string) (map[string]string, error) {\n\tbranches := make(map[string]bool)\n\tfor _, key := range keys {\n\t\twalkTree(c, key, branches)\n\t}\n\tvars := make(map[string]string)\n\tfor key := range branches {\n\t\tlog.Debug(\"getting %s from vault\", key)\n\t\tresp, err := c.client.Logical().Read(key)\n\n\t\tif err != nil {\n\t\t\tlog.Debug(\"there was an error extracting %s\", key)\n\t\t\treturn nil, err\n\t\t}\n\t\tif resp == nil || resp.Data == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\t// if the key has only one string value\n\t\t// treat it as a string and not a map of values\n\t\tif val, ok := isKV(resp.Data); ok {\n\t\t\tvars[key] = val\n\t\t} else {\n\t\t\t// save the json encoded response\n\t\t\t// and flatten it to allow usage of gets & getvs\n\t\t\tjs, _ := json.Marshal(resp.Data)\n\t\t\tvars[key] = string(js)\n\t\t\tflatten(key, resp.Data, vars)\n\t\t}\n\t}\n\treturn vars, nil\n}\n\n// isKV checks if a given map has only one key of type string\n// if so, returns the value of that key\nfunc isKV(data map[string]interface{}) (string, bool) {\n\tif len(data) == 1 {\n\t\tif value, ok := data[\"value\"]; ok {\n\t\t\tif text, ok := value.(string); ok {\n\t\t\t\treturn text, true\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\", false\n}\n\n// recursively walks on all the values of a specific key and set them in the variables map\nfunc flatten(key string, value interface{}, vars map[string]string) {\n\tswitch value.(type) {\n\tcase string:\n\t\tlog.Debug(\"setting key %s to: %s\", key, value)\n\t\tvars[key] = value.(string)\n\tcase map[string]interface{}:\n\t\tinner := value.(map[string]interface{})\n\t\tfor innerKey, innerValue := range inner {\n\t\t\tinnerKey = path.Join(key, \"/\", innerKey)\n\t\t\tflatten(innerKey, innerValue, vars)\n\t\t}\n\tdefault: // we don't know how to handle non string or maps of strings\n\t\tlog.Warning(\"type of '%s' is not supported (%T)\", key, value)\n\t}\n}\n\n// recursively walk the branches in the Vault, adding to branches map\nfunc walkTree(c *Client, key string, branches map[string]bool) error {\n\tlog.Debug(\"listing %s from vault\", key)\n\n\t// strip trailing slash as long as it's not the only character\n\tif last := len(key) - 1; last > 0 && key[last] == '/' {\n\t\tkey = key[:last]\n\t}\n\tif branches[key] {\n\t\t// already processed this branch\n\t\treturn nil\n\t}\n\tbranches[key] = true\n\n\tresp, err := c.client.Logical().List(key)\n\n\tif err != nil {\n\t\tlog.Debug(\"there was an error extracting %s\", key)\n\t\treturn err\n\t}\n\tif resp == nil || resp.Data == nil || resp.Data[\"keys\"] == nil {\n\t\treturn nil\n\t}\n\n\tswitch resp.Data[\"keys\"].(type) {\n\tcase []interface{}:\n\t\t// expected\n\tdefault:\n\t\tlog.Warning(\"key list type of '%s' is not supported (%T)\", key, resp.Data[\"keys\"])\n\t\treturn nil\n\t}\n\n\tkeyList := resp.Data[\"keys\"].([]interface{})\n\tfor _, innerKey := range keyList {\n\t\tswitch innerKey.(type) {\n\n\t\tcase string:\n\t\t\tinnerKey = path.Join(key, \"/\", innerKey.(string))\n\t\t\twalkTree(c, innerKey.(string), branches)\n\n\t\tdefault: // we don't know how to handle other data types\n\t\t\tlog.Warning(\"type of '%s' is not supported (%T)\", key, keyList)\n\t\t}\n\t}\n\treturn nil\n}\n\n// WatchPrefix - not implemented at the moment\nfunc (c *Client) WatchPrefix(prefix string, keys []string, waitIndex uint64, stopChan chan bool) (uint64, error) {\n\t<-stopChan\n\treturn 0, nil\n}\n"
  },
  {
    "path": "backends/zookeeper/client.go",
    "content": "package zookeeper\n\nimport (\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/kelseyhightower/confd/log\"\n\tzk \"github.com/samuel/go-zookeeper/zk\"\n)\n\n// Client provides a wrapper around the zookeeper client\ntype Client struct {\n\tclient *zk.Conn\n}\n\nfunc NewZookeeperClient(machines []string) (*Client, error) {\n\tc, _, err := zk.Connect(machines, time.Second) //*10)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn &Client{c}, nil\n}\n\nfunc nodeWalk(prefix string, c *Client, vars map[string]string) error {\n\tvar s string\n\tl, stat, err := c.client.Children(prefix)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif stat.NumChildren == 0 {\n\t\tb, _, err := c.client.Get(prefix)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvars[prefix] = string(b)\n\n\t} else {\n\t\tfor _, key := range l {\n\t\t\tif prefix == \"/\" {\n\t\t\t\ts = \"/\" + key\n\t\t\t} else {\n\t\t\t\ts = prefix + \"/\" + key\n\t\t\t}\n\t\t\t_, stat, err := c.client.Exists(s)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif stat.NumChildren == 0 {\n\t\t\t\tb, _, err := c.client.Get(s)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvars[s] = string(b)\n\t\t\t} else {\n\t\t\t\tnodeWalk(s, c, vars)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (c *Client) GetValues(keys []string) (map[string]string, error) {\n\tvars := make(map[string]string)\n\tfor _, v := range keys {\n\t\tv = strings.Replace(v, \"/*\", \"\", -1)\n\t\t_, _, err := c.client.Exists(v)\n\t\tif err != nil {\n\t\t\treturn vars, err\n\t\t}\n\t\terr = nodeWalk(v, c, vars)\n\t\tif err != nil {\n\t\t\treturn vars, err\n\t\t}\n\t}\n\treturn vars, nil\n}\n\ntype watchResponse struct {\n\twaitIndex uint64\n\terr       error\n}\n\nfunc (c *Client) watch(key string, respChan chan watchResponse, cancelRoutine chan bool) {\n\t_, _, keyEventCh, err := c.client.GetW(key)\n\tif err != nil {\n\t\trespChan <- watchResponse{0, err}\n\t}\n\t_, _, childEventCh, err := c.client.ChildrenW(key)\n\tif err != nil {\n\t\trespChan <- watchResponse{0, err}\n\t}\n\n\tfor {\n\t\tselect {\n\t\tcase e := <-keyEventCh:\n\t\t\tif e.Type == zk.EventNodeDataChanged {\n\t\t\t\trespChan <- watchResponse{1, e.Err}\n\t\t\t}\n\t\tcase e := <-childEventCh:\n\t\t\tif e.Type == zk.EventNodeChildrenChanged {\n\t\t\t\trespChan <- watchResponse{1, e.Err}\n\t\t\t}\n\t\tcase <-cancelRoutine:\n\t\t\tlog.Debug(\"Stop watching: \" + key)\n\t\t\t// There is no way to stop GetW/ChildrenW so just quit\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (c *Client) WatchPrefix(prefix string, keys []string, waitIndex uint64, stopChan chan bool) (uint64, error) {\n\t// return something > 0 to trigger a key retrieval from the store\n\tif waitIndex == 0 {\n\t\treturn 1, nil\n\t}\n\n\t// List the childrens first\n\tentries, err := c.GetValues([]string{prefix})\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\trespChan := make(chan watchResponse)\n\tcancelRoutine := make(chan bool)\n\tdefer close(cancelRoutine)\n\n\t//watch all subfolders for changes\n\twatchMap := make(map[string]string)\n\tfor k, _ := range entries {\n\t\tfor _, v := range keys {\n\t\t\tif strings.HasPrefix(k, v) {\n\t\t\t\tfor dir := filepath.Dir(k); dir != \"/\"; dir = filepath.Dir(dir) {\n\t\t\t\t\tif _, ok := watchMap[dir]; !ok {\n\t\t\t\t\t\twatchMap[dir] = \"\"\n\t\t\t\t\t\tlog.Debug(\"Watching: \" + dir)\n\t\t\t\t\t\tgo c.watch(dir, respChan, cancelRoutine)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t//watch all keys in prefix for changes\n\tfor k, _ := range entries {\n\t\tfor _, v := range keys {\n\t\t\tif strings.HasPrefix(k, v) {\n\t\t\t\tlog.Debug(\"Watching: \" + k)\n\t\t\t\tgo c.watch(k, respChan, cancelRoutine)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tfor {\n\t\tselect {\n\t\tcase <-stopChan:\n\t\t\treturn waitIndex, nil\n\t\tcase r := <-respChan:\n\t\t\treturn r.waitIndex, r.err\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "confd.go",
    "content": "package main\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/signal\"\n\t\"runtime\"\n\t\"syscall\"\n\n\t\"github.com/kelseyhightower/confd/backends\"\n\t\"github.com/kelseyhightower/confd/log\"\n\t\"github.com/kelseyhightower/confd/resource/template\"\n)\n\nfunc main() {\n\tflag.Parse()\n\tif config.PrintVersion {\n\t\tfmt.Printf(\"confd %s (Git SHA: %s, Go Version: %s)\\n\", Version, GitSHA, runtime.Version())\n\t\tos.Exit(0)\n\t}\n\tif err := initConfig(); err != nil {\n\t\tlog.Fatal(err.Error())\n\t}\n\n\tlog.Info(\"Starting confd\")\n\n\tstoreClient, err := backends.New(config.BackendsConfig)\n\tif err != nil {\n\t\tlog.Fatal(err.Error())\n\t}\n\n\tconfig.TemplateConfig.StoreClient = storeClient\n\tif config.OneTime {\n\t\tif err := template.Process(config.TemplateConfig); err != nil {\n\t\t\tlog.Fatal(err.Error())\n\t\t}\n\t\tos.Exit(0)\n\t}\n\n\tstopChan := make(chan bool)\n\tdoneChan := make(chan bool)\n\terrChan := make(chan error, 10)\n\n\tvar processor template.Processor\n\tswitch {\n\tcase config.Watch:\n\t\tprocessor = template.WatchProcessor(config.TemplateConfig, stopChan, doneChan, errChan)\n\tdefault:\n\t\tprocessor = template.IntervalProcessor(config.TemplateConfig, stopChan, doneChan, errChan, config.Interval)\n\t}\n\n\tgo processor.Process()\n\n\tsignalChan := make(chan os.Signal, 1)\n\tsignal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)\n\tfor {\n\t\tselect {\n\t\tcase err := <-errChan:\n\t\t\tlog.Error(err.Error())\n\t\tcase s := <-signalChan:\n\t\t\tlog.Info(fmt.Sprintf(\"Captured %v. Exiting...\", s))\n\t\t\tclose(doneChan)\n\t\tcase <-doneChan:\n\t\t\tos.Exit(0)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config.go",
    "content": "package main\n\nimport (\n\t\"errors\"\n\t\"flag\"\n\t\"fmt\"\n\t\"net\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/BurntSushi/toml\"\n\t\"github.com/kelseyhightower/confd/backends\"\n\t\"github.com/kelseyhightower/confd/log\"\n\t\"github.com/kelseyhightower/confd/resource/template\"\n)\n\ntype TemplateConfig = template.Config\ntype BackendsConfig = backends.Config\n\n// A Config structure is used to configure confd.\ntype Config struct {\n\tTemplateConfig\n\tBackendsConfig\n\tInterval     int    `toml:\"interval\"`\n\tSRVDomain    string `toml:\"srv_domain\"`\n\tSRVRecord    string `toml:\"srv_record\"`\n\tLogLevel     string `toml:\"log-level\"`\n\tWatch        bool   `toml:\"watch\"`\n\tPrintVersion bool\n\tConfigFile   string\n\tOneTime      bool\n}\n\nvar config Config\n\nfunc init() {\n\tflag.StringVar(&config.AuthToken, \"auth-token\", \"\", \"Auth bearer token to use\")\n\tflag.StringVar(&config.Backend, \"backend\", \"etcd\", \"backend to use\")\n\tflag.BoolVar(&config.BasicAuth, \"basic-auth\", false, \"Use Basic Auth to authenticate (only used with -backend=consul and -backend=etcd)\")\n\tflag.StringVar(&config.ClientCaKeys, \"client-ca-keys\", \"\", \"client ca keys\")\n\tflag.StringVar(&config.ClientCert, \"client-cert\", \"\", \"the client cert\")\n\tflag.StringVar(&config.ClientKey, \"client-key\", \"\", \"the client key\")\n\tflag.BoolVar(&config.ClientInsecure, \"client-insecure\", false, \"Allow connections to SSL sites without certs (only used with -backend=etcd)\")\n\tflag.StringVar(&config.ConfDir, \"confdir\", \"/etc/confd\", \"confd conf directory\")\n\tflag.StringVar(&config.ConfigFile, \"config-file\", \"/etc/confd/confd.toml\", \"the confd config file\")\n\tflag.Var(&config.YAMLFile, \"file\", \"the YAML file to watch for changes (only used with -backend=file)\")\n\tflag.StringVar(&config.Filter, \"filter\", \"*\", \"files filter (only used with -backend=file)\")\n\tflag.IntVar(&config.Interval, \"interval\", 600, \"backend polling interval\")\n\tflag.BoolVar(&config.KeepStageFile, \"keep-stage-file\", false, \"keep staged files\")\n\tflag.StringVar(&config.LogLevel, \"log-level\", \"\", \"level which confd should log messages\")\n\tflag.Var(&config.BackendNodes, \"node\", \"list of backend nodes\")\n\tflag.BoolVar(&config.Noop, \"noop\", false, \"only show pending changes\")\n\tflag.BoolVar(&config.OneTime, \"onetime\", false, \"run once and exit\")\n\tflag.StringVar(&config.Prefix, \"prefix\", \"\", \"key path prefix\")\n\tflag.BoolVar(&config.PrintVersion, \"version\", false, \"print version and exit\")\n\tflag.StringVar(&config.Scheme, \"scheme\", \"http\", \"the backend URI scheme for nodes retrieved from DNS SRV records (http or https)\")\n\tflag.StringVar(&config.SRVDomain, \"srv-domain\", \"\", \"the name of the resource record\")\n\tflag.StringVar(&config.SRVRecord, \"srv-record\", \"\", \"the SRV record to search for backends nodes. Example: _etcd-client._tcp.example.com\")\n\tflag.BoolVar(&config.SyncOnly, \"sync-only\", false, \"sync without check_cmd and reload_cmd\")\n\tflag.StringVar(&config.AuthType, \"auth-type\", \"\", \"Vault auth backend type to use (only used with -backend=vault)\")\n\tflag.StringVar(&config.AppID, \"app-id\", \"\", \"Vault app-id to use with the app-id backend (only used with -backend=vault and auth-type=app-id)\")\n\tflag.StringVar(&config.UserID, \"user-id\", \"\", \"Vault user-id to use with the app-id backend (only used with -backend=value and auth-type=app-id)\")\n\tflag.StringVar(&config.RoleID, \"role-id\", \"\", \"Vault role-id to use with the AppRole, Kubernetes backends (only used with -backend=vault and either auth-type=app-role or auth-type=kubernetes)\")\n\tflag.StringVar(&config.SecretID, \"secret-id\", \"\", \"Vault secret-id to use with the AppRole backend (only used with -backend=vault and auth-type=app-role)\")\n\tflag.StringVar(&config.Path, \"path\", \"\", \"Vault mount path of the auth method (only used with -backend=vault)\")\n\tflag.StringVar(&config.Table, \"table\", \"\", \"the name of the DynamoDB table (only used with -backend=dynamodb)\")\n\tflag.StringVar(&config.Separator, \"separator\", \"\", \"the separator to replace '/' with when looking up keys in the backend, prefixed '/' will also be removed (only used with -backend=redis)\")\n\tflag.StringVar(&config.Username, \"username\", \"\", \"the username to authenticate as (only used with vault and etcd backends)\")\n\tflag.StringVar(&config.Password, \"password\", \"\", \"the password to authenticate with (only used with vault and etcd backends)\")\n\tflag.BoolVar(&config.Watch, \"watch\", false, \"enable watch support\")\n}\n\n// initConfig initializes the confd configuration by first setting defaults,\n// then overriding settings from the confd config file, then overriding\n// settings from environment variables, and finally overriding\n// settings from flags set on the command line.\n// It returns an error if any.\nfunc initConfig() error {\n\t_, err := os.Stat(config.ConfigFile)\n\tif os.IsNotExist(err) {\n\t\tlog.Debug(\"Skipping confd config file.\")\n\t} else {\n\t\tlog.Debug(\"Loading \" + config.ConfigFile)\n\t\tconfigBytes, err := os.ReadFile(config.ConfigFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t_, err = toml.Decode(string(configBytes), &config)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Update config from environment variables.\n\tprocessEnv()\n\n\tif config.LogLevel != \"\" {\n\t\tlog.SetLevel(config.LogLevel)\n\t}\n\n\tif config.SRVDomain != \"\" && config.SRVRecord == \"\" {\n\t\tconfig.SRVRecord = fmt.Sprintf(\"_%s._tcp.%s.\", config.Backend, config.SRVDomain)\n\t}\n\n\t// Update BackendNodes from SRV records.\n\tif config.Backend != \"env\" && config.SRVRecord != \"\" {\n\t\tlog.Info(\"SRV record set to \" + config.SRVRecord)\n\t\tsrvNodes, err := getBackendNodesFromSRV(config.SRVRecord)\n\t\tif err != nil {\n\t\t\treturn errors.New(\"Cannot get nodes from SRV records \" + err.Error())\n\t\t}\n\n\t\tswitch config.Backend {\n\t\tcase \"etcd\":\n\t\t\tvsm := make([]string, len(srvNodes))\n\t\t\tfor i, v := range srvNodes {\n\t\t\t\tvsm[i] = config.Scheme + \"://\" + v\n\t\t\t}\n\t\t\tsrvNodes = vsm\n\t\t}\n\n\t\tconfig.BackendNodes = srvNodes\n\t}\n\tif len(config.BackendNodes) == 0 {\n\t\tswitch config.Backend {\n\t\tcase \"consul\":\n\t\t\tconfig.BackendNodes = []string{\"127.0.0.1:8500\"}\n\t\tcase \"etcd\":\n\t\t\tpeerstr := os.Getenv(\"ETCDCTL_PEERS\")\n\t\t\tif len(peerstr) > 0 {\n\t\t\t\tconfig.BackendNodes = strings.Split(peerstr, \",\")\n\t\t\t} else {\n\t\t\t\tconfig.BackendNodes = []string{\"http://127.0.0.1:4001\"}\n\t\t\t}\n\t\tcase \"etcdv3\":\n\t\t\tconfig.BackendNodes = []string{\"127.0.0.1:2379\"}\n\t\tcase \"redis\":\n\t\t\tconfig.BackendNodes = []string{\"127.0.0.1:6379\"}\n\t\tcase \"vault\":\n\t\t\tconfig.BackendNodes = []string{\"http://127.0.0.1:8200\"}\n\t\tcase \"zookeeper\":\n\t\t\tconfig.BackendNodes = []string{\"127.0.0.1:2181\"}\n\t\t}\n\t}\n\t// Initialize the storage client\n\tlog.Info(\"Backend set to \" + config.Backend)\n\n\tif config.Watch {\n\t\tunsupportedBackends := map[string]bool{\n\t\t\t\"dynamodb\": true,\n\t\t\t\"ssm\":      true,\n\t\t}\n\n\t\tif unsupportedBackends[config.Backend] {\n\t\t\tlog.Info(fmt.Sprintf(\"Watch is not supported for backend %s. Exiting...\", config.Backend))\n\t\t\tos.Exit(1)\n\t\t}\n\t}\n\n\tif config.Backend == \"dynamodb\" && config.Table == \"\" {\n\t\treturn errors.New(\"no DynamoDB table configured\")\n\t}\n\tconfig.ConfigDir = filepath.Join(config.ConfDir, \"conf.d\")\n\tconfig.TemplateDir = filepath.Join(config.ConfDir, \"templates\")\n\treturn nil\n}\n\nfunc getBackendNodesFromSRV(record string) ([]string, error) {\n\tnodes := make([]string, 0)\n\n\t// Ignore the CNAME as we don't need it.\n\t_, addrs, err := net.LookupSRV(\"\", \"\", record)\n\tif err != nil {\n\t\treturn nodes, err\n\t}\n\tfor _, srv := range addrs {\n\t\thost := strings.TrimRight(srv.Target, \".\")\n\t\tport := strconv.FormatUint(uint64(srv.Port), 10)\n\t\tnodes = append(nodes, net.JoinHostPort(host, port))\n\t}\n\treturn nodes, nil\n}\n\nfunc processEnv() {\n\tcakeys := os.Getenv(\"CONFD_CLIENT_CAKEYS\")\n\tif len(cakeys) > 0 && config.ClientCaKeys == \"\" {\n\t\tconfig.ClientCaKeys = cakeys\n\t}\n\n\tcert := os.Getenv(\"CONFD_CLIENT_CERT\")\n\tif len(cert) > 0 && config.ClientCert == \"\" {\n\t\tconfig.ClientCert = cert\n\t}\n\n\tkey := os.Getenv(\"CONFD_CLIENT_KEY\")\n\tif len(key) > 0 && config.ClientKey == \"\" {\n\t\tconfig.ClientKey = key\n\t}\n}\n"
  },
  {
    "path": "config_test.go",
    "content": "package main\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/kelseyhightower/confd/log\"\n)\n\nfunc TestInitConfigDefaultConfig(t *testing.T) {\n\tlog.SetLevel(\"warn\")\n\twant := Config{\n\t\tBackendsConfig: BackendsConfig{\n\t\t\tBackend:      \"etcd\",\n\t\t\tBackendNodes: []string{\"http://127.0.0.1:4001\"},\n\t\t\tScheme:       \"http\",\n\t\t\tFilter:       \"*\",\n\t\t},\n\t\tTemplateConfig: TemplateConfig{\n\t\t\tConfDir:     \"/etc/confd\",\n\t\t\tConfigDir:   \"/etc/confd/conf.d\",\n\t\t\tTemplateDir: \"/etc/confd/templates\",\n\t\t\tNoop:        false,\n\t\t},\n\t\tConfigFile: \"/etc/confd/confd.toml\",\n\t\tInterval:   600,\n\t}\n\tif err := initConfig(); err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\tif !reflect.DeepEqual(want, config) {\n\t\tt.Errorf(\"initConfig() = %v, want %v\", config, want)\n\t}\n}\n"
  },
  {
    "path": "contrib/etcd/Procfile",
    "content": "# Use goreman to run `go get github.com/mattn/goreman`\netcd0: /usr/local/bin/etcd --name etcd0 --listen-client-urls http://127.0.0.1:2379 --advertise-client-urls http://127.0.0.1:2379 --listen-peer-urls http://127.0.0.1:2380 --initial-advertise-peer-urls http://127.0.0.1:2380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'etcd0=http://127.0.0.1:2380,etcd1=http://127.0.0.1:12380,etcd2=http://127.0.0.1:22380,etcd3=http://127.0.0.1:32380,etcd4=http://127.0.0.1:42380' --initial-cluster-state new --data-dir=/tmp/etcd0\netcd1: /usr/local/bin/etcd --name etcd1 --listen-client-urls http://127.0.0.1:12379 --advertise-client-urls http://127.0.0.1:12379 --listen-peer-urls http://127.0.0.1:12380 --initial-advertise-peer-urls http://127.0.0.1:12380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'etcd0=http://127.0.0.1:2380,etcd1=http://127.0.0.1:12380,etcd2=http://127.0.0.1:22380,etcd3=http://127.0.0.1:32380,etcd4=http://127.0.0.1:42380' --initial-cluster-state new --data-dir=/tmp/etcd1\netcd2: /usr/local/bin/etcd --name etcd2 --listen-client-urls http://127.0.0.1:22379 --advertise-client-urls http://127.0.0.1:22379 --listen-peer-urls http://127.0.0.1:22380 --initial-advertise-peer-urls http://127.0.0.1:22380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'etcd0=http://127.0.0.1:2380,etcd1=http://127.0.0.1:12380,etcd2=http://127.0.0.1:22380,etcd3=http://127.0.0.1:32380,etcd4=http://127.0.0.1:42380' --initial-cluster-state new --data-dir=/tmp/etcd2\netcd3: /usr/local/bin/etcd --name etcd3 --listen-client-urls http://127.0.0.1:32379 --advertise-client-urls http://127.0.0.1:32379 --listen-peer-urls http://127.0.0.1:32380 --initial-advertise-peer-urls http://127.0.0.1:32380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'etcd0=http://127.0.0.1:2380,etcd1=http://127.0.0.1:12380,etcd2=http://127.0.0.1:22380,etcd3=http://127.0.0.1:32380,etcd4=http://127.0.0.1:42380' --initial-cluster-state new --data-dir=/tmp/etcd3\netcd4: /usr/local/bin/etcd --name etcd4 --listen-client-urls http://127.0.0.1:42379 --advertise-client-urls http://127.0.0.1:42379 --listen-peer-urls http://127.0.0.1:42380 --initial-advertise-peer-urls http://127.0.0.1:42380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'etcd0=http://127.0.0.1:2380,etcd1=http://127.0.0.1:12380,etcd2=http://127.0.0.1:22380,etcd3=http://127.0.0.1:32380,etcd4=http://127.0.0.1:42380' --initial-cluster-state new --data-dir=/tmp/etcd4"
  },
  {
    "path": "contrib/generate-changelog.sh",
    "content": "#!/usr/bin/env bash\n# Generates a changelog of all merges from a given release all the way to HEAD.\n\nREPO=https://github.com/kelseyhightower/confd\n\nusage() {\n    echo \"Usage: $0 <FROM> [TO]\"\n}\n\n# Print usage summary if user didn't specify a beginning\nif [ -z \"$1\" ];\nthen\n    usage\n    exit 1\nfi\n\nFROM=$1\nTO=${2:-HEAD}\n\nprintf \"### $TO\\n\\n\"\n\ngit --no-pager log --merges --format=\"%h %b\" $FROM..$TO\n"
  },
  {
    "path": "docs/command-line-flags.md",
    "content": "# Command Line Flags\n\nCommand line flags override the confd [configuration file](configuration-guide.md).\n\n```\nconfd -h\n```\n\n```Text\nUsage of confd:\n  -app-id string\n      Vault app-id to use with the app-id backend (only used with -backend=vault and auth-type=app-id)\n  -auth-token string\n      Auth bearer token to use\n  -auth-type string\n      Vault auth backend type to use (only used with -backend=vault)\n  -backend string\n      backend to use (default \"etcd\")\n  -basic-auth\n      Use Basic Auth to authenticate (only used with -backend=consul and -backend=etcd)\n  -client-ca-keys string\n      client ca keys\n  -client-cert string\n      the client cert\n  -client-key string\n      the client key\n  -confdir string\n      confd conf directory (default \"/etc/confd\")\n  -config-file string\n      the confd config file (default \"/etc/confd/confd.toml\")\n  -file value\n      the YAML file to watch for changes (only used with -backend=file)\n  -filter string\n      files filter (only used with -backend=file) (default \"*\")\n  -interval int\n      backend polling interval (default 600)\n  -keep-stage-file\n      keep staged files\n  -log-level string\n      level which confd should log messages\n  -node value\n      list of backend nodes\n  -noop\n      only show pending changes\n  -onetime\n      run once and exit\n  -password string\n      the password to authenticate with (only used with vault and etcd backends)\n  -path string\n      Vault mount path of the auth method (only used with -backend=vault)\n  -prefix string\n      key path prefix\n  -role-id string\n      Vault role-id to use with the AppRole, Kubernetes backends (only used with -backend=vault and either auth-type=app-role or auth-type=kubernetes)\n  -scheme string\n      the backend URI scheme for nodes retrieved from DNS SRV records (http or https) (default \"http\")\n  -secret-id string\n      Vault secret-id to use with the AppRole backend (only used with -backend=vault and auth-type=app-role)\n  -secret-keyring string\n      path to armored PGP secret keyring (for use with crypt functions)\n  -separator string\n      the separator to replace '/' with when looking up keys in the backend, prefixed '/' will also be removed (only used with -backend=redis)\n  -srv-domain string\n      the name of the resource record\n  -srv-record string\n      the SRV record to search for backends nodes. Example: _etcd-client._tcp.example.com\n  -sync-only\n      sync without check_cmd and reload_cmd\n  -table string\n      the name of the DynamoDB table (only used with -backend=dynamodb)\n  -user-id string\n      Vault user-id to use with the app-id backend (only used with -backend=value and auth-type=app-id)\n  -username string\n      the username to authenticate as (only used with vault and etcd backends)\n  -version\n      print version and exit\n  -watch\n      enable watch support\n```\n\n> The -scheme flag is only used to set the URL scheme for nodes retrieved from DNS SRV records.\n"
  },
  {
    "path": "docs/configuration-guide.md",
    "content": "# Configuration Guide\n\nThe confd configuration file is written in [TOML](https://github.com/mojombo/toml)\nand loaded from `/etc/confd/confd.toml` by default. You can specify the config file via the `-config-file` command line flag.\n\n> Note: You can use confd without a configuration file. See [Command Line Flags](https://github.com/kelseyhightower/confd/blob/master/docs/command-line-flags.md).\n\nOptional:\n\n* `backend` (string) - The backend to use. (\"etcd\")\n* `client_cakeys` (string) - The client CA key file.\n* `client_cert` (string) - The client cert file.\n* `client_key` (string) - The client key file.\n* `confdir` (string) - The path to confd configs. (\"/etc/confd\")\n* `interval` (int) - The backend polling interval in seconds. (600)\n* `log-level` (string) - level which confd should log messages (\"info\")\n* `nodes` (array of strings) - List of backend nodes. ([\"http://127.0.0.1:4001\"])\n* `noop` (bool) - Enable noop mode. Process all template resources; skip target update.\n* `prefix` (string) - The string to prefix to keys. (\"/\")\n* `scheme` (string) - The backend URI scheme. (\"http\" or \"https\")\n* `srv_domain` (string) - The name of the resource record.\n* `srv_record` (string) - The SRV record to search for backends nodes.\n* `sync-only` (bool) - sync without check_cmd and reload_cmd.\n* `watch` (bool) - Enable watch support.\n* `auth_token` (string) - Auth bearer token to use.\n* `auth_type` (string) - Vault auth backend type to use.\n* `basic_auth` (bool) - Use Basic Auth to authenticate (only used with -backend=consul and -backend=etcd).\n* `table` (string) - The name of the DynamoDB table (only used with -backend=dynamodb).\n* `separator` (string) - The separator to replace '/' with when looking up keys in the backend, prefixed '/' will also be removed (only used with -backend=redis)\n* `username` (string) - The username to authenticate as (only used with vault and etcd backends).\n* `password` (string) - The password to authenticate with (only used with vault and etcd backends).\n* `app_id` (string) - Vault app-id to use with the app-id backend (only used with -backend=vault and auth-type=app-id).\n* `user_id` (string) - Vault user-id to use with the app-id backend (only used with -backend=value and auth-type=app-id).\n* `role_id` (string) - Vault role-id to use with the AppRole, Kubernetes backends (only used with -backend=vault and either auth-type=app-role or auth-type=kubernetes).\n* `secret_id` (string) - Vault secret-id to use with the AppRole backend (only used with -backend=vault and auth-type=app-role).\n* `file` (array of strings) - The YAML file to watch for changes (only used with -backend=file).\n* `filter` (string) - Files filter (only used with -backend=file) (default \"*\").\n* `path` (string) - Vault mount path of the auth method (only used with -backend=vault).\n\nExample:\n\n```TOML\nbackend = \"etcd\"\nclient_cert = \"/etc/confd/ssl/client.crt\"\nclient_key = \"/etc/confd/ssl/client.key\"\nconfdir = \"/etc/confd\"\nlog-level = \"debug\"\ninterval = 600\nnodes = [\n  \"http://127.0.0.1:4001\",\n]\nnoop = false\nprefix = \"/production\"\nscheme = \"https\"\nsrv_domain = \"etcd.example.com\"\n```\n"
  },
  {
    "path": "docs/data_encryption.md",
    "content": "Encrypting your data\n====================\n\nThis example is shown using etcd, but any of the supported backends *should* work.\n\n\n## Creating PGP keys\n\n[`crypt`](https://github.com/xordataexchange/crypt), unlike gpg, requires your keypair to be in ASCII armor format.\nFor the purpose of this example you can use [the pair provided below](#local-testing-keypair-sample), or you can\n[create your own](#local-testing-keypair-generating).\n\n\n### Using my sample key pair (unsafe for anything other than local testing)\n\nsave the following as `.pubring.gpg`\n\n```no-highlight\n-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQENBFUbhEMBCADHqlGZuIDSyw7ZXngMJYltREr8llsfdSR8kmEaoCp2ts3rqzZ2\nhRX6xLrRnV0gB8+H1y+1Ly5IqR5guAG2Gs5j4ds6R4xtwHN9OnXXqTfqlXroUg55\n/1RjEIxaso5GPY6+DO7GVYMY1hXgiLhlkvpdUAcZeZNS/HR/ytw7dDPaM51DTREm\nXZ1+IHaNgIFtHtbHx44TZ4a0CvFSefRJXV6/o7ik9GLE6CyBsb80vXN1KiRLL5kl\nItPWqlF1mH2SvKAxfn0xQuGWenoiILq7Nj79XVcrKOVdrQ7m/oXiW/Rp8pzMcFNo\na2KuQkHI3+PPQnCR0qPXNSPQM0bF8hXLHMQpABEBAAG0LWFwcCAoYXBwIGNvbmZp\nZ3VyYXRpb24ga2V5KSA8YXBwQGV4YW1wbGUuY29tPokBNwQTAQoAIQUCVRuEQwIb\nAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRCvl84Mdvp1vzfqB/9YNCDixrE5\nAfJTsK9qzhyENHpssd0z0zKNTKCKSU/Qe86tTE6OixFHJPquSJNvz74pY/6skC5C\n1fAMBMSzTiie4jsKS5jj0OpXbMTCgRChN+p0zHXOmVkP80mE3+YifCruhhMriJO5\nobhk81e6QiwKqiiijwpDKH/hT2oWTrKjxEC11pVtZ4GGwQlttfWr1csGWfK7ge5M\nBH/RAKL4YBPWw5HPud5rXV8GItId1TQZsGYrW3lsDOytDAzIPypvkvX5+ZcyHgVs\nHmpjjVj1zWfVLq0xKwkDYsf+W5k3wedmbCGbZWIfE2U1iBr3mSvJWpqSYw5VhgJ4\nxOQTNPE2I+3GuQENBFUbhEMBCACfnBVTyoHtRe/D3ie7plkxBmzMfHlKbw4E7JPR\n7/KIXARYSfUPdxgtekGZSTJ+I+CLqaGQncpcGGoTPe7gV/EH1j3VJNKh9z3pdXYP\nTgWM+BhLCdoE58eBDnoSIoNkZDbwxTt+bCHXz2Nl4nCXDZWW23WE3gbr+sNPL3e2\n/A4lGeCJYgS1ZMxRn74HkXNV6BnR/pgHnuZkN+Psz0XAqACPHIlYmWjI9WA5hTFA\nhT7pvsYbGZKTFu1nGqdL2S7vT5cRt6s61nolJ9zm2fjRKZAHBGIh/+ha9KqMqABy\nDD+vgkWRubcshSXJuhbbKSt8VICKFtkYqRxyJ5YRX4hIh73TABEBAAGJAR8EGAEK\nAAkFAlUbhEMCGwwACgkQr5fODHb6db8dYwgAjtaNFTRswtRfK6O/M9utcZNgkXrY\n9jO5KqrRCIFRNpjqpH9ELVVzqsyCjhYGjV9nQmcKe6t6ngbN/NvZElylJNxzI5S1\nX2zJEjiFR30CMH1iV4YDA4uymRXRk5E/MtChv/2jZkoLNNZjIAgWpbfsKBI/iyWW\n3plHWaquDB+q10kf9YY0t4L8t50Q11vUsTlaeQW96OzdwCJwopmFzb1DWWv89lJm\nnqa+WVcyIIcWzb5yk7BaAVEcBAazSQRIVKL1CbF3CT5B+bCxrSZW/J1ujss6NbkO\nWkuw67YL468ms6fPlLihzyCcxFE1S5c6k4PKXuixcFF4/tvn+7i40vL9yw==\n=oNlb\n-----END PGP PUBLIC KEY BLOCK-----\n```\n\nsave the following as `.secring.gpg`\n\n```no-highlight\n-----BEGIN PGP PRIVATE KEY BLOCK-----\n\nlQOYBFUbhEMBCADHqlGZuIDSyw7ZXngMJYltREr8llsfdSR8kmEaoCp2ts3rqzZ2\nhRX6xLrRnV0gB8+H1y+1Ly5IqR5guAG2Gs5j4ds6R4xtwHN9OnXXqTfqlXroUg55\n/1RjEIxaso5GPY6+DO7GVYMY1hXgiLhlkvpdUAcZeZNS/HR/ytw7dDPaM51DTREm\nXZ1+IHaNgIFtHtbHx44TZ4a0CvFSefRJXV6/o7ik9GLE6CyBsb80vXN1KiRLL5kl\nItPWqlF1mH2SvKAxfn0xQuGWenoiILq7Nj79XVcrKOVdrQ7m/oXiW/Rp8pzMcFNo\na2KuQkHI3+PPQnCR0qPXNSPQM0bF8hXLHMQpABEBAAEAB/0UKGlZnCuBXJfQsT1s\neIOx4OGzM5jaibCX1Q1xqzbuSlFq2BvFBnWsHh2AWSNUPwWgQMTjxXImStCy0hD2\nKimpIt3Huf5+/B2MyJCqJ77p85J3jwVAItuJrtuEsp8zjzZwkIywwGReZwrJYvQ+\n6QJW1mQJGeGaULuQRVJLvFUZ08tUg73RIdHaiLauBu+jjcWL0HrpA7sK+EiMcSgJ\nPqgD2myHy7e3+7Cp+gGn5dvA4l6eVLvujg55b79kcae/N7lV1I/+nvNCkx7bWubg\nOlTu4I8MzH7KEI0CF3hHD0Oo8qGQH4P0fxAhCyHxrq342JEdx4HD2iJVwFdP4ZzG\nyFwBBADN516627Ijgz5NJFBTDtZMDTaJbXwzWJGBDz2sisVMjC2XUyBnxa0i45/N\nvzGhqa+IgBg0HJtuohyUq6dukzpcWv8h/N+3VzXRSYY3XUxWlQzat+TFKfLxlCAW\nyS2syJywjLE3r0OCR7M7XgDNp8hOoynzbZlzA/jUC8WyJUZRKQQA+D5jNdC6uKpT\na/0yXFpl+2TiR70g5CuoqQ1yZAMgwcMCCrcrf9Dh1FVS+letEZZQAm7lZUEYhlM/\nGrRF0tGkQMxsIi+mW1hiJRWXFH4J5jGp2J47G3q7QMxIVjMQRC2yJI3cZPwIYIql\nvLzBp+wQuE+1/0VDANW4XbWXZyJSOwEEAPMPb9S7s94RRvDUXWAWhDi3U9Ak4A3Z\novdFZNMR6hQ5fS0LObwGWbGpu9d11yoOOpM7VK6+0y7BfZLDaDKdTEVArCZ1SoRY\n6gbwUTSAm/JYFSFMHgFcSMrHH35cEL08SFGRJzpSt72M0IsQfj29IhXfBMOUe0rD\neXZEIafzrIYbOLC0LWFwcCAoYXBwIGNvbmZpZ3VyYXRpb24ga2V5KSA8YXBwQGV4\nYW1wbGUuY29tPokBNwQTAQoAIQUCVRuEQwIbAwULCQgHAwUVCgkICwUWAgMBAAIe\nAQIXgAAKCRCvl84Mdvp1vzfqB/9YNCDixrE5AfJTsK9qzhyENHpssd0z0zKNTKCK\nSU/Qe86tTE6OixFHJPquSJNvz74pY/6skC5C1fAMBMSzTiie4jsKS5jj0OpXbMTC\ngRChN+p0zHXOmVkP80mE3+YifCruhhMriJO5obhk81e6QiwKqiiijwpDKH/hT2oW\nTrKjxEC11pVtZ4GGwQlttfWr1csGWfK7ge5MBH/RAKL4YBPWw5HPud5rXV8GItId\n1TQZsGYrW3lsDOytDAzIPypvkvX5+ZcyHgVsHmpjjVj1zWfVLq0xKwkDYsf+W5k3\nwedmbCGbZWIfE2U1iBr3mSvJWpqSYw5VhgJ4xOQTNPE2I+3GnQOYBFUbhEMBCACf\nnBVTyoHtRe/D3ie7plkxBmzMfHlKbw4E7JPR7/KIXARYSfUPdxgtekGZSTJ+I+CL\nqaGQncpcGGoTPe7gV/EH1j3VJNKh9z3pdXYPTgWM+BhLCdoE58eBDnoSIoNkZDbw\nxTt+bCHXz2Nl4nCXDZWW23WE3gbr+sNPL3e2/A4lGeCJYgS1ZMxRn74HkXNV6BnR\n/pgHnuZkN+Psz0XAqACPHIlYmWjI9WA5hTFAhT7pvsYbGZKTFu1nGqdL2S7vT5cR\nt6s61nolJ9zm2fjRKZAHBGIh/+ha9KqMqAByDD+vgkWRubcshSXJuhbbKSt8VICK\nFtkYqRxyJ5YRX4hIh73TABEBAAEAB/4g9azrzDZPZrFQC8i9tejWOGLwSUYMymkl\nOCuAX2IAqavWBZO/GVNbVNNGEbkFFmiQvrtX71Wx9fK1vYTePBrQiPvkz4FVpAZb\ndv+lwnFf/n2ZxVOJzslCi9hGdW0XpqA30SrrfO3yMGfwyrWAY/Q/nlsi0Gyyf2qk\nqAM7PMq4+08CwuOwHOorS+ibLARX778ug5JKqiJhAt5s+sXQFId7cnozU24MDrOc\nJvBgsCaPO1NbPYE+whIsWTigmc4YCAiIlKjPghxAS8kFOaO2FnGAzeS0S8o02R+f\n/JNL24+z7kpY7JxUe9c1+n5DD88fRllBCmWr0HtSFFMgsQ0ZZ6E9BADFpse6Jm/i\nq6qb9WJKHJAg+w3klBHwB+P18oGtinzCvnaSSayJRjUDmmJMURvR1FUZHNsxhm4D\n3yGlr3XAAES6ijaajRRzl2q7yG63quN72FGH/sBE57KatXtI30hds62HJlZks16I\nQxaFpaqRSYIPf5yQFseLn7YboXqSR2QgzQQAzrpZ7jECITDxCiQHdyitSl9IOqYw\nsti73WkBYFr5GApJQ6mW9XthAMI762vGUWlm8NMi/S1lwI+A1VAcXyHsk16TYL9B\nuQcyqHjkKrrPE5AePPrTPXsVQoFIXfDk3JfBhRclcWsG3HGtFj6LZUKsmXncoCZD\nYL7tu9RYM4oC2R8D/Rai2XkEnmJkxbdogm4k8ZHYWbxPemZtaa/nBdlB9WEmFKDv\n86rkS+JHJouc+h7fIT4WaL/e2589w7RimdUw+5b4zA5mvFdqT2zYWBEKbmZwoGOM\npYGIYa2v01mCgO/fy55lrZFQdVGP0nz5ob1R3Eaoh5rTClxiWe6KYjgr1UmgP9uJ\nAR8EGAEKAAkFAlUbhEMCGwwACgkQr5fODHb6db8dYwgAjtaNFTRswtRfK6O/M9ut\ncZNgkXrY9jO5KqrRCIFRNpjqpH9ELVVzqsyCjhYGjV9nQmcKe6t6ngbN/NvZElyl\nJNxzI5S1X2zJEjiFR30CMH1iV4YDA4uymRXRk5E/MtChv/2jZkoLNNZjIAgWpbfs\nKBI/iyWW3plHWaquDB+q10kf9YY0t4L8t50Q11vUsTlaeQW96OzdwCJwopmFzb1D\nWWv89lJmnqa+WVcyIIcWzb5yk7BaAVEcBAazSQRIVKL1CbF3CT5B+bCxrSZW/J1u\njss6NbkOWkuw67YL468ms6fPlLihzyCcxFE1S5c6k4PKXuixcFF4/tvn+7i40vL9\nyw==\n=DPU+\n-----END PGP PRIVATE KEY BLOCK-----\n```\n\n\n### Generating your own key pair\n\n```shell\n$ cat << EOF > app.batch\n%echo Generating a configuration OpenPGP key\nKey-Type: default\nSubkey-Type: default\nName-Real: app\nName-Comment: app configuration key\nName-Email: app@example.com\nExpire-Date: 0\n%pubring .pubring.gpg\n%secring .secring.gpg\n%commit\n%echo done\nEOF\n$ gpg2 --batch --armor --gen-key app.batch\n```\n\n\n## Encrypting and storing your data \n\nThere are many ways of doing this as long as the input data follows the following format, `base64(gpg(gzip(data)))`.\nBelow are two ways to get you going quickly, the first using plain old [gpg](https://gnupg.org/) and second using the\n[crypt cli utility](https://github.com/xordataexchange/crypt/tree/master/bin/crypt) (which is not the same as\n[`man 3 crypt`](http://linux.die.net/man/3/crypt)).\n\n\n### Storing data using gpg(2)\n\n```shell\n$ mkdir -p ~/tmp/gpg # so we don't interfere with any current pgp keys\n$ chmod 700 ~/tmp/gpg\n$ gpg2 --homedir ~/tmp/gpg --import .pubring.gpg\n$ export TEST_RECIPIENT=76FA75BF # if you used my key from above\n$ export TEST_RECIPIENT=\"$(gpg2 --homedir ~/tmp/gpg --list-keys\\\n  | grep 'pub '\\\n  | cut -f2 -d/\\\n  | cut -f1 -d' ')\" # if you generated your own keypair\n$ curl\\\n  --location\\\n  --request PUT\\\n  --data-urlencode value=\"$(echo 'secret text'\\\n   | gzip -c\\\n   | gpg2 --homedir ~/tmp/gpg\\\n      --compress-level 0\\\n      --encrypt\\\n      --default-recipient ${TEST_RECIPIENT}\\\n   | base64)\"\\\n  http://127.0.0.1:4001/v2/keys/secret/test1\n# - or if you have etcdctl -\n$ echo 'secret text'\\\n  | gzip -c\\\n  | gpg2 --homedir ~/tmp/gpg\\\n     --compress-level 0\\\n     --encrypt\\\n     --default-recipient ${TEST_RECIPIENT}\\\n  | base64\\\n  | etcdctl set /secret/test1\n```\n\n\n### Storing data using [`crypt`](https://github.com/xordataexchange/crypt)\n\n```shell\n$ go get github.com/xordataexchange/crypt/bin/crypt\n$ crypt set /secret/test1 /path/to/secret-file.txt\n# - or -\n$ crypt set /secret/test1 <(echo \"secret text\") \n```\n\n\n## Verify your encrypted data\n\nYou should see your base64 encrypted data here\n\n```shell\n$ curl http://127.0.0.1:4001/v2/keys/secret/test1\n# - or -\n$ etcdctl get /secret/test1\n```\n\nGet [`crypt`](https://github.com/xordataexchange/crypt) if you haven't done so already.\n```shell\n$ go get github.com/xordataexchange/crypt/bin/crypt\n```\n\nThe following will print your decrypted text to stdout.\n```shell\n$ crypt get /secret/test1\n```\n\n\n## Putting it all together, using with confd\n\nNow that we've verified we can put encrypted data in your datastore, lets have\nconfd extract it into a template.\n\n\n```\n$ mkdir ~/tmp/confd-config/{conf.d,templates}\n$ cat << EOF > ~/tmp/confd-config/conf.d/secret.toml\n[template]\nprefix = \"/secret\"\nsrc = \"secret.tmpl\"\ndest = \"/tmp/secret.txt\"\nkeys = [\n  \"/test1\"\n]\nEOF\n$ cat << EOF > ~/tmp/confd-config/templates/secret.tmpl\nyour secret value is: {{ cgetv \"/test1\" }}\n\nand again with the key here:\n{{with cget \"/test1\"}}\n    key: {{.Key}}\n    value: {{.Value}}\n{{end}}\n\nand here again in a loop:\n{{range cgets \"/*\"}}\n    key: {{.Key}}\n    value: {{.Value}}\n{{end}}\n\nand again in another loop:\n{{range cgetvs \"/*\"}}\n    value: {{.}}\n{{end}}\nEOF\n$ confd -node=http://127.0.0.1:4001 -secret-keyring=/path/to/.secring.gpg -confdir ~/tmp/confd-config -interval 2\n```\n\nNow take a look at `/tmp/secret.txt`.\n"
  },
  {
    "path": "docs/dns-srv-records.md",
    "content": "# DNS SRV Records\n\nSRV records can be used to declare the backend nodes; just use the `-srv-domain` flag.\n\n## Examples\n\n### etcd\n\n```\ndig SRV _etcd._tcp.confd.io\n```\n\n```\n...\n;; ANSWER SECTION:\n_etcd._tcp.confd.io.\t300\tIN\tSRV\t1 100 4001 etcd.confd.io.\n```\n\n-\n\n```\nconfd -backend etcd -srv-domain confd.io\n```\n\n### consul\n\n```\ndig SRV _consul._tcp.confd.io\n```\n\n```\n...\n;; ANSWER SECTION:\n_consul._tcp.confd.io.\t300\tIN\tSRV\t1 100 8500 consul.confd.io.\n```\n\n-\n\n```\nconfd -backend consul -srv-domain confd.io\n```\n\n## The backend scheme\n\nBy default the `scheme` is set to http; change it with the `-scheme` flag.\n\n```\nconfd -scheme https -srv-domain confd.io\n```\n\nBoth the SRV domain and scheme can be configured in the confd configuration file. See the [Configuration Guide](configuration-guide.md) for more details.\n"
  },
  {
    "path": "docs/installation.md",
    "content": "# Installation\n\n### Binary Download\n\nCurrently confd ships binaries for OS X and Linux 64bit systems. You can download the latest release from [GitHub](https://github.com/kelseyhightower/confd/releases)\n\n#### OS X\n\n```\n$ wget https://github.com/kelseyhightower/confd/releases/download/v0.16.0/confd-0.16.0-darwin-amd64\n```\n\n#### Linux\n\nDownload the binary\n```\n$ wget https://github.com/kelseyhightower/confd/releases/download/v0.16.0/confd-0.16.0-linux-amd64\n```\nMove the binary to an installation path, make it executable, and add to path\n```\nmkdir -p /opt/confd/bin\nmv confd-0.16.0-linux-amd64 /opt/confd/bin/confd\nchmod +x /opt/confd/bin/confd\nexport PATH=\"$PATH:/opt/confd/bin\"\n```\n\n#### Building from Source\n\n```\n$ make build\n$ make install\n```\n\n#### Building from Source for Alpine Linux\n\nSince many people are using Alpine Linux as their base images for Docker there's support to build Alpine package also. Naturally by using Docker itself. :)\n\n```\n$ docker build -t confd_builder -f Dockerfile.build.alpine .\n$ docker run -ti --rm -v $(pwd):/app confd_builder make build\n```\nThe above docker commands will produce binary in the local bin directory.\n\n#### Build for your Image using Multi-Stage build\n\nWith multi-stage builds you can keep the whole process contained in your Dockerfile using:\n\n```\nFROM golang:1.9-alpine as confd\n\nARG CONFD_VERSION=0.16.0\n\nADD https://github.com/kelseyhightower/confd/archive/v${CONFD_VERSION}.tar.gz /tmp/\n\nRUN apk add --no-cache \\\n    bzip2 \\\n    make && \\\n  mkdir -p /go/src/github.com/kelseyhightower/confd && \\\n  cd /go/src/github.com/kelseyhightower/confd && \\\n  tar --strip-components=1 -zxf /tmp/v${CONFD_VERSION}.tar.gz && \\\n  go install github.com/kelseyhightower/confd && \\\n  rm -rf /tmp/v${CONFD_VERSION}.tar.gz\n\nFROM tomcat:8.5.15-jre8-alpine\n\nCOPY --from=confd /go/bin/confd /usr/local/bin/confd\n\n# Then do other useful things...\n```\n\n### Next Steps\n\nGet up and running with the [Quick Start Guide](quick-start-guide.md).\n"
  },
  {
    "path": "docs/logging.md",
    "content": "# Logging\n\nconfd logs everything to stdout. You can control the types of messages that get printed by using the `-log-level` flag and corresponding configuration file settings. See the [Configuration Guide](configuration-guide.md) for more details.\n\nExample log messages:\n\n```Bash\n2013-11-03T19:04:53-08:00 confd[21356]: INFO SRV domain set to confd.io\n2013-11-03T19:04:53-08:00 confd[21356]: INFO Starting confd\n2013-11-03T19:04:53-08:00 confd[21356]: INFO etcd nodes set to http://etcd0.confd.io:4001, http://etcd1.confd.io:4001\n2013-11-03T19:04:54-08:00 confd[21356]: INFO /tmp/myconf2.conf has md5sum ae5c061f41de8895b6ef70803de9a455 should be 50d4ce679e1cf13e10cd9de90d258996\n2013-11-03T19:04:54-08:00 confd[21356]: INFO Target config /tmp/myconf2.conf out of sync\n2013-11-03T19:04:54-08:00 confd[21356]: INFO Target config /tmp/myconf2.conf has been updated\n```\n"
  },
  {
    "path": "docs/noop-mode.md",
    "content": "# Noop Mode\n\nWhen in noop mode target configuration files will not be modified.\n\n## Usage\n\n### commandline flag\n\n```\nconfd -noop\n```\n\n### configuration file\n\n```\nnoop = true\n```\n\n### Example\n\n```\nconfd -onetime -noop\n```\n\n-\n\n```\n2014-07-08T22:30:10-07:00 confd[16397]: INFO /tmp/myconfig.conf has md5sum c1924fc5c5f2698e2019080b7c043b7a should be 8e76340b541b8ee29023c001a5e4da18\n2014-07-08T22:30:10-07:00 confd[16397]: WARNING Noop mode enabled /tmp/myconfig.conf will not be modified\n```\n"
  },
  {
    "path": "docs/quick-start-guide.md",
    "content": "# Quick Start Guide\n\nBefore we begin be sure to [download and install confd](installation.md).\n\n## Select a backend\n\nconfd supports the following backends:\n\n* etcd\n* consul\n* vault\n* environment variables\n* file\n* redis\n* zookeeper\n* dynamodb\n* rancher\n* ssm (AWS Simple Systems Manager Parameter Store)\n\n### Add keys\n\nThis guide assumes you have a working [etcd](https://github.com/coreos/etcd#getting-started), or [consul](http://www.consul.io/intro/getting-started/install.html) server up and running and the ability to add new keys.\n\n#### etcd\n\n```\netcdctl set /myapp/database/url db.example.com\netcdctl set /myapp/database/user rob\n```\n\n#### consul\n\n```\ncurl -X PUT -d 'db.example.com' http://localhost:8500/v1/kv/myapp/database/url\ncurl -X PUT -d 'rob' http://localhost:8500/v1/kv/myapp/database/user\n```\n\n#### vault\n```\nvault mount -path myapp generic\nvault write myapp/database url=db.example.com user=rob\n```\n\n#### environment variables\n\n```\nexport MYAPP_DATABASE_URL=db.example.com\nexport MYAPP_DATABASE_USER=rob\n```\n\n#### file\n\nmyapp.yaml\n```\nmyapp:\n  database:\n    url: db.example.com\n    user: rob\n```\n\n#### redis\n\n```\nredis-cli set /myapp/database/url db.example.com\nredis-cli set /myapp/database/user rob\n```\n\n#### zookeeper\n\n```\n[zk: localhost:2181(CONNECTED) 1] create /myapp \"\"\n[zk: localhost:2181(CONNECTED) 2] create /myapp/database \"\"\n[zk: localhost:2181(CONNECTED) 3] create /myapp/database/url \"db.example.com\"\n[zk: localhost:2181(CONNECTED) 4] create /myapp/database/user \"rob\"\n```\n\n#### dynamodb\n\nFirst create a table with the following schema:\n\n```\naws dynamodb create-table \\\n    --region <YOUR_REGION> --table-name <YOUR_TABLE> \\\n    --attribute-definitions AttributeName=key,AttributeType=S \\\n    --key-schema AttributeName=key,KeyType=HASH \\\n    --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1\n```\n\nNow create the items. The attribute value `value` must be of type [string](http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_AttributeValue.html):\n\n```\naws dynamodb put-item --table-name <YOUR_TABLE> --region <YOUR_REGION> \\\n    --item '{ \"key\": { \"S\": \"/myapp/database/url\" }, \"value\": {\"S\": \"db.example.com\"}}'\naws dynamodb put-item --table-name <YOUR_TABLE> --region <YOUR_REGION> \\\n    --item '{ \"key\": { \"S\": \"/myapp/database/user\" }, \"value\": {\"S\": \"rob\"}}'\n```\n\n#### Rancher\n\nThis backend consumes the [Rancher](https://www.rancher.com) metadata service. For available keys, see the [Rancher Metadata Service docs](http://docs.rancher.com/rancher/rancher-services/metadata-service/).\n\n#### ssm\n\n```\naws ssm put-parameter --name \"/myapp/database/url\" --type \"String\" --value \"db.example.com\"\naws ssm put-parameter --name \"/myapp/database/user\" --type \"SecureString\" --value \"rob\"\n```\n\n### Create the confdir\n\nThe confdir is where template resource configs and source templates are stored.\n\n```\nsudo mkdir -p /etc/confd/{conf.d,templates}\n```\n\n### Create a template resource config\n\nTemplate resources are defined in [TOML](https://github.com/mojombo/toml) config files under the `confdir`.\n\n/etc/confd/conf.d/myconfig.toml\n```\n[template]\nsrc = \"myconfig.conf.tmpl\"\ndest = \"/tmp/myconfig.conf\"\nkeys = [\n    \"/myapp/database/url\",\n    \"/myapp/database/user\",\n]\n```\n\n### Create the source template\n\nSource templates are [Golang text templates](http://golang.org/pkg/text/template/#pkg-overview).\n\n/etc/confd/templates/myconfig.conf.tmpl\n```\n[myconfig]\ndatabase_url = {{getv \"/myapp/database/url\"}}\ndatabase_user = {{getv \"/myapp/database/user\"}}\n```\n\n### Process the template\n\nconfd supports two modes of operation daemon and onetime. In daemon mode confd polls a backend for changes and updates destination configuration files if necessary.\n\n#### etcd\n\n```\nconfd -onetime -backend etcd -node http://127.0.0.1:2379\n```\n\n#### consul\n\n```\nconfd -onetime -backend consul -node 127.0.0.1:8500\n```\n\n#### vault\n```\nROOT_TOKEN=$(vault read -field id auth/token/lookup-self)\n\nconfd -onetime -backend vault -node http://127.0.0.1:8200 \\\n      -auth-type token -auth-token $ROOT_TOKEN\n```\n\n#### dynamodb\n\n```\nconfd -onetime -backend dynamodb -table <YOUR_TABLE>\n```\n\n#### env\n\n```\nconfd -onetime -backend env\n```\n\n#### file\n\n```\nconfd -onetime -backend file -file myapp.yaml\n```\n\n#### redis\n\n```\nconfd -onetime -backend redis -node 192.168.255.210:6379\n```\nor if you want to connect to a specific redis database (4 in this example):\n\n```\nconfd -onetime -backend redis -node 192.168.255.210:6379/4\n```\n\n#### rancher\n\n```\nconfd -onetime -backend rancher -prefix /2015-07-25\n```\n\n*Note*: The metadata api prefix can be defined on the cli, or as part of your keys in the template toml file.\n\nOutput:\n```\n2014-07-08T20:38:36-07:00 confd[16252]: INFO Target config /tmp/myconfig.conf out of sync\n2014-07-08T20:38:36-07:00 confd[16252]: INFO Target config /tmp/myconfig.conf has been updated\n```\n\nThe `dest` configuration file should now be in sync.\n\n```\ncat /tmp/myconfig.conf\n```\n\nOutput:\n```\n# This a comment\n[myconfig]\ndatabase_url = db.example.com\ndatabase_user = rob\n```\n\n#### ssm\n\n```\nconfd -onetime -backend ssm\n```\n\n## Advanced Example\n\nIn this example we will use confd to manage two nginx config files using a single template.\n\n### Add keys\n\n#### etcd\n\n```\netcdctl set /myapp/subdomain myapp\netcdctl set /myapp/upstream/app2 \"10.0.1.100:80\"\netcdctl set /myapp/upstream/app1 \"10.0.1.101:80\"\netcdctl set /yourapp/subdomain yourapp\netcdctl set /yourapp/upstream/app2 \"10.0.1.102:80\"\netcdctl set /yourapp/upstream/app1 \"10.0.1.103:80\"\n```\n\n#### consul\n\n```\ncurl -X PUT -d 'myapp' http://localhost:8500/v1/kv/myapp/subdomain\ncurl -X PUT -d '10.0.1.100:80' http://localhost:8500/v1/kv/myapp/upstream/app1\ncurl -X PUT -d '10.0.1.101:80' http://localhost:8500/v1/kv/myapp/upstream/app2\ncurl -X PUT -d 'yourapp' http://localhost:8500/v1/kv/yourapp/subdomain\ncurl -X PUT -d '10.0.1.102:80' http://localhost:8500/v1/kv/yourapp/upstream/app1\ncurl -X PUT -d '10.0.1.103:80' http://localhost:8500/v1/kv/yourapp/upstream/app2\n```\n\n### Create template resources\n\n/etc/confd/conf.d/myapp-nginx.toml\n\n```\n[template]\nprefix = \"/myapp\"\nsrc = \"nginx.tmpl\"\ndest = \"/tmp/myapp.conf\"\nowner = \"nginx\"\nmode = \"0644\"\nkeys = [\n  \"/subdomain\",\n  \"/upstream\",\n]\ncheck_cmd = \"/usr/sbin/nginx -t -c {{.src}}\"\nreload_cmd = \"/usr/sbin/service nginx reload\"\n```\n\n/etc/confd/conf.d/yourapp-nginx.toml\n\n```\n[template]\nprefix = \"/yourapp\"\nsrc = \"nginx.tmpl\"\ndest = \"/tmp/yourapp.conf\"\nowner = \"nginx\"\nmode = \"0644\"\nkeys = [\n  \"/subdomain\",\n  \"/upstream\",\n]\ncheck_cmd = \"/usr/sbin/nginx -t -c {{.src}}\"\nreload_cmd = \"/usr/sbin/service nginx reload\"\n```\n\n### Create the source template\n\n/etc/confd/templates/nginx.tmpl\n```\nupstream {{getv \"/subdomain\"}} {\n{{range getvs \"/upstream/*\"}}\n    server {{.}};\n{{end}}\n}\n\nserver {\n    server_name  {{getv \"/subdomain\"}}.example.com;\n    location / {\n        proxy_pass        http://{{getv \"/subdomain\"}};\n        proxy_redirect    off;\n        proxy_set_header  Host             $host;\n        proxy_set_header  X-Real-IP        $remote_addr;\n        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;\n   }\n}\n```\n"
  },
  {
    "path": "docs/release-checklist.md",
    "content": "# Release Checklist\n\nIn order to cut a new release, a few things must be done:\n\n1. auto-generate the CHANGELOG using the provided script\n2. bump version.go and docs/installation.md to the new release\n3. push a tag for the new release\n4. draft a [new release](https://github.com/kelseyhightower/confd/releases/new)\n5. bump version.go to the next release, appending `-dev`\n\nFor the former, you can use the following script:\n\n    $ echo -e \"$(./contrib/generate-changelog.sh v$LATEST_RELEASE)\\n\" | cat - CHANGELOG | sponge CHANGELOG\n\nYou can find `sponge` in the `moreutils` package on Ubuntu.\n\nThis script will generate all merged changes since $LATEST_RELEASE and append it to the top of the CHANGELOG. However, this will show up as \"HEAD\" at the top:\n\n    $ ./contrib/generate-changelog.sh v$LATEST_RELEASE\n    ### HEAD\n\n    abc123 Some merged PR summary\n    ...\n\nYou'll need to manually modify \"HEAD\" to show up as the latest release.\n\nWhen drafting a new release, you must make sure that a `darwin`, `linux` and `windows` build of confd have\nbeen uploaded. You must have Docker installed to build release binaries:\n\n    $ make release\n\nYou can then drag and drop these binaries into the release draft.\n"
  },
  {
    "path": "docs/template-resources.md",
    "content": "# Template Resources\n\nTemplate resources are written in TOML and define a single template resource.\nTemplate resources are stored under the `/etc/confd/conf.d` directory by default.\n\n### Required\n\n* `dest` (string) - The target file.\n* `keys` (array of strings) - An array of keys.\n* `src` (string) - The relative path of a [configuration template](templates.md).\n\n### Optional\n\n* `gid` (int) - The gid that should own the file. Defaults to the effective gid.\n* `mode` (string) - The permission mode of the file.\n* `uid` (int) - The uid that should own the file. Defaults to the effective uid.\n* `reload_cmd` (string) - The command to reload config.\n* `check_cmd` (string) - The command to check config. Use `{{.src}}` to reference the rendered source template.\n* `prefix` (string) - The string to prefix to keys.\n\n### Notes\n\nWhen using the `reload_cmd` feature it's important that the command exits on its own. The reload\ncommand is not managed by confd, and will block the configuration run until it exits.\n\n## Example\n\n```TOML\n[template]\nsrc = \"nginx.conf.tmpl\"\ndest = \"/etc/nginx/nginx.conf\"\nuid = 0\ngid = 0\nmode = \"0644\"\nkeys = [\n  \"/nginx\",\n]\ncheck_cmd = \"/usr/sbin/nginx -t -c {{.src}}\"\nreload_cmd = \"/usr/sbin/service nginx restart\"\n```\n"
  },
  {
    "path": "docs/templates.md",
    "content": "# Templates\n\nTemplates define a single application configuration template.\nTemplates are stored under the `/etc/confd/templates` directory by default.\n\nTemplates are written in Go's [`text/template`](http://golang.org/pkg/text/template/).\n\n## Template Functions\n\n### map\n\ncreates a key-value map of string -> interface{}\n\n```\n{{$endpoint := map \"name\" \"elasticsearch\" \"private_port\" 9200 \"public_port\" 443}}\n\nname: {{index $endpoint \"name\"}}\nprivate-port: {{index $endpoint \"private_port\"}}\npublic-port: {{index $endpoint \"public_port\"}}\n```\n\nspecifically useful if you use a sub-template and you want to pass multiple values to it.\n\n### base\n\nAlias for the [path.Base](https://golang.org/pkg/path/#Base) function.\n\n```\n{{with get \"/key\"}}\n    key: {{base .Key}}\n    value: {{.Value}}\n{{end}}\n```\n\n### exists\n\nChecks if the key exists. Return false if key is not found.\n\n```\n{{if exists \"/key\"}}\n    value: {{getv \"/key\"}}\n{{end}}\n```\n\n### get\n\nReturns the KVPair where key matches its argument. Returns an error if key is not found.\n\n```\n{{with get \"/key\"}}\n    key: {{.Key}}\n    value: {{.Value}}\n{{end}}\n```\n\n### cget\n\nReturns the KVPair where key matches its argument and the value has been *encrypted*. Returns an error if key is not found.\n\n```\n{{with cget \"/key\"}}\n    key: {{.Key}}\n    value: {{.Value}}\n{{end}}\n```\n\n### gets\n\nReturns all KVPair, []KVPair, where key matches its argument. Returns an error if key is not found.\n\n```\n{{range gets \"/*\"}}\n    key: {{.Key}}\n    value: {{.Value}}\n{{end}}\n```\n\n### cgets\n\nReturns all KVPair, []KVPair, where key matches its argument and the values have been *encrypted*.\nReturns an error if key is not found.\n\n```\n{{range cgets \"/*\"}}\n    key: {{.Key}}\n    value: {{.Value}}\n{{end}}\n```\n\n### getv\n\nReturns the value as a string where key matches its argument or an optional default value.\nReturns an error if key is not found and no default value given.\n\n```\nvalue: {{getv \"/key\"}}\n```\n\n#### With a default value\n\n```\nvalue: {{getv \"/key\" \"default_value\"}}\n```\n\n### cgetv\n\nReturns the *encrypted* value as a string where key matches its argument. Returns an error if key is not found.\n\n```\nvalue: {{cgetv \"/key\"}}\n```\n\n### getvs\n\nReturns all values, []string, where key matches its argument. Returns an error if key is not found.\n\n```\n{{range getvs \"/*\"}}\n    value: {{.}}\n{{end}}\n```\n\n### cgetvs\n\nReturns all *encrypted* values, []string, where key matches its argument. Returns an error if key is not found.\n\n```\n{{range cgetvs \"/*\"}}\n    value: {{.}}\n{{end}}\n```\n\n### getenv\n\nWrapper for [os.Getenv](https://golang.org/pkg/os/#Getenv). Retrieves the value of the environment variable named by the key. It returns the value, which will be empty if the variable is not present. Optionally, you can give a default value that will be returned if the key is not present.\n\n```\nexport HOSTNAME=`hostname`\n```\n\n```\nhostname: {{getenv \"HOSTNAME\"}}\n```\n\n\n#### With a default value\n\n```\nipaddr: {{getenv \"HOST_IP\" \"127.0.0.1\"}}\n```\n\n### datetime\n\nAlias for [time.Now](https://golang.org/pkg/time/#Now)\n\n```\n# Generated by confd {{datetime}}\n```\n\nOutputs:\n\n```\n# Generated by confd 2015-01-23 13:34:56.093250283 -0800 PST\n```\n\n```\n# Generated by confd {{datetime.Format \"Jan 2, 2006 at 3:04pm (MST)\"}}\n```\n\nOutputs:\n\n```\n# Generated by confd Jan 23, 2015 at 1:34pm (EST)\n```\n\nSee the time package for more usage: http://golang.org/pkg/time/\n\n### split\n\nWrapper for [strings.Split](http://golang.org/pkg/strings/#Split). Splits the input string on the separating string and returns a slice of substrings.\n\n```\n{{ $url := split (getv \"/deis/service\") \":\" }}\n    host: {{index $url 0}}\n    port: {{index $url 1}}\n```\n\n### toUpper\n\nAlias for [strings.ToUpper](http://golang.org/pkg/strings/#ToUpper) Returns uppercased string.\n\n```\nkey: {{toUpper \"value\"}}\n```\n\n### toLower\n\nAlias for [strings.ToLower](http://golang.org/pkg/strings/#ToLower). Returns lowercased string.\n\n```\nkey: {{toLower \"Value\"}}\n```\n\n### json\n\nReturns an map[string]interface{} of the json value.\n\n### lookupSRV\n\nWrapper for [net.LookupSRV](https://golang.org/pkg/net/#LookupSRV). The wrapper also sorts the SRV records alphabetically by combining all the fields of the net.SRV struct to reduce unnecessary config reloads.\n\n```\n{{range lookupSRV \"mail\" \"tcp\" \"example.com\"}}\n  target: {{.Target}}\n  port: {{.Port}}\n  priority: {{.Priority}}\n  weight: {{.Weight}}\n{{end}}\n```\n\n### base64Encode\n\nReturns a base64 encoded string of the value.\n\n```\nkey: {{base64Encode \"Value\"}}\n```\n\n### base64Decode\n\nReturns the string representing the decoded base64 value.\n\n```\nkey: {{base64Decode \"VmFsdWU=\"}}\n```\n\n#### Add keys to etcd\n\n```\netcdctl set /services/zookeeper/host1 '{\"Id\":\"host1\", \"IP\":\"192.168.10.11\"}'\netcdctl set /services/zookeeper/host2 '{\"Id\":\"host2\", \"IP\":\"192.168.10.12\"}'\n```\n\n#### Create the template resource\n\n```\n[template]\nsrc = \"services.conf.tmpl\"\ndest = \"/tmp/services.conf\"\nkeys = [\n  \"/services/zookeeper/\"\n]\n```\n\n#### Create the template\n\n```\n{{range gets \"/services/zookeeper/*\"}}\n{{$data := json .Value}}\n  id: {{$data.Id}}\n  ip: {{$data.IP}}\n{{end}}\n```\n\n#### Advanced Map Traversals\n\nOnce you have parsed the JSON, it is possible to traverse it with normal Go\ntemplate functions such as `index`.\n\nA more advanced structure, like this:\n\n```\n{\n  \"animals\": [\n    {\"type\": \"dog\", \"name\": \"Fido\"},\n    {\"type\": \"cat\", \"name\": \"Misse\"}\n  ]\n}\n```\n\nIt can be traversed like this:\n\n```\n{{$data := json (getv \"/test/data/\")}}\ntype: {{ (index $data.animals 1).type }}\nname: {{ (index $data.animals 1).name }}\n{{range $data.animals}}\n{{.name}}\n{{end}}\n```\n\n### jsonArray\n\nReturns a []interface{} from a json array such as `[\"a\", \"b\", \"c\"]`.\n\n```\n{{range jsonArray (getv \"/services/data/\")}}\nval: {{.}}\n{{end}}\n```\n\n### ls\n\nReturns all subkeys, []string, where path matches its argument. Returns an empty list if path is not found.\n\n```\n{{range ls \"/deis/services\"}}\n   value: {{.}}\n{{end}}\n```\n\n### lsdir\n\nReturns all subkeys, []string, where path matches its argument. It only returns subkeys that also have subkeys. Returns an empty list if path is not found.\n\n```\n{{range lsdir \"/deis/services\"}}\n   value: {{.}}\n{{end}}\n```\n\n### dir\n\nReturns the parent directory of a given key.\n```\n{{with dir \"/services/data/url\"}}\ndir: {{.}}\n{{end}}\n```\n\n### join\n\nAlias for the [strings.Join](https://golang.org/pkg/strings/#Join) function.\n\n```\n{{$services := getvs \"/services/elasticsearch/*\"}}\nservices: {{join $services \",\"}}\n```\n\n### replace\n\nAlias for the [strings.Replace](https://golang.org/pkg/strings/#Replace) function.\n\n```\n{{$backend := getv \"/services/backend/nginx\"}}\nbackend = {{replace $backend \"-\" \"_\" -1}}\n```\n\n### lookupIP\n\nWrapper for [net.LookupIP](https://golang.org/pkg/net/#LookupIP) function. The wrapper also sorts (alphabeticaly) the IP addresses. This is crucial since in dynamic environments DNS servers typically shuffle the addresses linked to domain name. And that would cause unnecessary config reloads.\n\n```\n{{range lookupIP \"some.host.local\"}}\n    server {{.}};\n{{end}}\n```\n\n### atoi\n\nAlias for the [strconv.Atoi](https://golang.org/pkg/strconv/#Atoi) function.\n\n```\n{{seq 1 (atoi (getv \"/count\"))}}\n```\n\n## Example Usage\n\n```Bash\netcdctl set /nginx/domain 'example.com'\netcdctl set /nginx/root '/var/www/example_dotcom'\netcdctl set /nginx/worker_processes '2'\netcdctl set /app/upstream/app1 \"10.0.1.100:80\"\netcdctl set /app/upstream/app2 \"10.0.1.101:80\"\n```\n\n`/etc/confd/templates/nginx.conf.tmpl`\n\n```Text\nworker_processes {{getv \"/nginx/worker_processes\"}};\n\nupstream app {\n{{range getvs \"/app/upstream/*\"}}\n    server {{.}};\n{{end}}\n}\n\nserver {\n    listen 80;\n    server_name www.{{getv \"/nginx/domain\"}};\n    access_log /var/log/nginx/{{getv \"/nginx/domain\"}}.access.log;\n    error_log /var/log/nginx/{{getv \"/nginx/domain\"}}.log;\n\n    location / {\n        root              {{getv \"/nginx/root\"}};\n        index             index.html index.htm;\n        proxy_pass        http://app;\n        proxy_redirect    off;\n        proxy_set_header  Host             $host;\n        proxy_set_header  X-Real-IP        $remote_addr;\n        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;\n    }\n}\n```\n\nOutput: `/etc/nginx/nginx.conf`\n\n```Text\nworker_processes 2;\n\nupstream app {\n    server 10.0.1.100:80;\n    server 10.0.1.101:80;\n}\n\nserver {\n    listen 80;\n    server_name www.example.com;\n    access_log /var/log/nginx/example.com.access.log;\n    error_log /var/log/nginx/example.com.error.log;\n\n    location / {\n        root              /var/www/example_dotcom;\n        index             index.html index.htm;\n        proxy_pass        http://app;\n        proxy_redirect    off;\n        proxy_set_header  Host             $host;\n        proxy_set_header  X-Real-IP        $remote_addr;\n        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;\n    }\n}\n```\n\n### Complex example\n\nThis examples show how to use a combination of the templates functions to do nested iteration.\n\n#### Add keys to etcd\n\n```\netcdctl mkdir /services/web/cust1/\netcdctl mkdir /services/web/cust2/\netcdctl set /services/web/cust1/2 '{\"IP\": \"10.0.0.2\"}'\netcdctl set /services/web/cust2/2 '{\"IP\": \"10.0.0.4\"}'\netcdctl set /services/web/cust2/1 '{\"IP\": \"10.0.0.3\"}'\netcdctl set /services/web/cust1/1 '{\"IP\": \"10.0.0.1\"}'\n```\n\n#### Create the template resource\n\n```\n[template]\nsrc = \"services.conf.tmpl\"\ndest = \"/tmp/services.conf\"\nkeys = [\n  \"/services/web\"\n]\n```\n\n#### Create the template\n\n```\n{{range $dir := lsdir \"/services/web\"}}\nupstream {{base $dir}} {\n    {{$custdir := printf \"/services/web/%s/*\" $dir}}{{range gets $custdir}}\n    server {{$data := json .Value}}{{$data.IP}}:80;\n    {{end}}\n}\n\nserver {\n    server_name {{base $dir}}.example.com;\n    location / {\n        proxy_pass {{base $dir}};\n    }\n}\n{{end}}\n```\n\nOutput:`/tmp/services.conf`\n\n```Text\nupstream cust1 {\n    server 10.0.0.1:80;\n    server 10.0.0.2:80;\n}\n\nserver {\n    server_name cust1.example.com;\n    location / {\n        proxy_pass cust1;\n    }\n}\n\nupstream cust2 {\n    server 10.0.0.3:80;\n    server 10.0.0.4:80;\n}\n\nserver {\n    server_name cust2.example.com;\n    location / {\n        proxy_pass cust2;\n    }\n}\n```\n\nGo's [`text/template`](http://golang.org/pkg/text/template/) package is very powerful. For more details on it's capabilities see its [documentation.](http://golang.org/pkg/text/template/)\n"
  },
  {
    "path": "docs/tomcat-sample.md",
    "content": "# confd for Apache Tomcat\nIf you administrate an [Apache Tomcat](http://tomcat.apache.org/) you usually need to edit multiple config files and set some environment variables. \n[confd](https://github.com/kelseyhightower/confd) can help here especially if you have multiple Tomcats in a cluster. Configuring Tomcat is an interesting sample, because it needs multiple config files and some environment variables.\n\nImportant configuration files of Tomcat are \n- server.xml: e.g. configure here jvmRoute for load balancing, ports etc.\n- tomcat-users.xml: configure access rights for manager webapp\n\nA frequently used environment variable is CATALINA_OPTS: Here you can define memory settings\n\n## server.xml\nIn this case we simply want to use the hostname for jvmRoute. Because it is not possible to execute a Unix command within a toml template, we use an environment variable \"HOSTNAME\" instead.\n\nCopy the file conf/server.xml from your Tomcat installation to /etc/confd/templates/server.xml.tmpl and edit \"Engine tag\" and add jvmRoute\n```\n<Engine name=\"Catalina\" defaultHost=\"localhost\" jvmRoute=\"{{getenv \"HOSTNAME\"}}\">\n```\n\nCreate /etc/confd/conf.d/server.xml.toml\n```\n[template]\nsrc = \"server.xml.tmpl\"\ndest = \"/usr/local/tomcat/conf/server.xml\"\n\ncheck_cmd = \"/usr/local/tomcat/bin/catalina.sh configtest\"\nreload_cmd = \"/usr/local/tomcat/bin/catalina.sh stop -force && /usr/local/tomcat/bin/catalina.sh start\"\n```\n\n## tomcat-users.xml\nWe want to get the Tomcat-manager's credentials from a central configuration repository. \nCopy the file conf/tomcat-users.xml from your Tomcat installation to /etc/confd/templates/tomcat-users.xml.tmpl\nAdd the following lines:\n```\n<role rolename=\"tomcat\"/>\n<role rolename=\"manager-gui\"/>\n<user username=\"{{getv \"/user\"}}\" password=\"{{getv \"/password\"}}\" roles=\"tomcat,manager-gui\"/>\n```\n\nCreate a /etc/confd/conf.d/tomcat-users.xml.toml\n```\n[template]\nprefix = \"tomcat\"\nkeys = [\n  \"user\",\n  \"password\"\n]\n\nsrc = \"tomcat-users.xml.tmpl\"\ndest = \"/usr/local/tomcat/conf/tomcat-users.xml\"\n\nreload_cmd = \"/usr/local/tomcat/bin/catalina.sh stop -force && /usr/local/tomcat/bin/catalina.sh start\"\n```\n\n \n## catalina.sh\nFile catalina.sh is the startscript for Tomcat. If confd should set memory settings like Xmx or Xms, we could either create a catalina.sh.tmpl and proceed like above or we can try to use environment variables and leave catalina.sh untouched. Leaving catalina.sh untouched is preferred here. Because it is not possible to use environment variables within toml files, we need to write a minimal shell script that passes CATALINA_OPTS variable.\n\nCreate the file /etc/confd/conf.d/catalina_start.sh.tmpl\n```\n#!/bin/sh\nCATALINA_OPTS=\"-Xms{{getv \"/Xms\"}} -Xmx{{getv \"/Xmx\"}}\" /usr/local/tomcat/bin/catalina.sh start\n```\n\nCreate the file /etc/confd/conf.d/catalina_start.sh.toml\n```\n[template]\nprefix = \"tomcat\"\nkeys = [\n  \"Xmx\",\n  \"Xms\"\n]\n\nsrc = \"catalina_start.sh.tmpl\"\ndest = \"/usr/local/tomcat/bin/catalina_start.sh\"\nmode = \"0775\"\n\nreload_cmd = \"/usr/local/tomcat/bin/catalina.sh stop -force && /usr/local/tomcat/bin/catalina_start.sh start\"\n```\n\nFinally we need to replace in all above templates ```catalina.sh start``` by ```catalina_start.sh start```\n\n## test it\nFollow conf documentation and test it calling ```confd -onetime``` or you try the complete sample in a Docker and/or Vagrant environment [here](https://github.com/muenchhausen/tomcat-confd)\n\n"
  },
  {
    "path": "docs/vault-kubernetes-auth.md",
    "content": "These are steps to get vault with Kubernetes auth working on minikube.\n\n*Do not use default service account in prod instead create dedicated acount for Vault auth.*\n\n- Deploy Helm\n  ```\n  # Install Helm\n  Use the correct method for your OS from https://docs.helm.sh/using_helm/#installing-the-helm-client\n  # Deploy tiller into the cluster\n  helm init\n\n- Install Vault in dev mode\n  ```\n  # Add Vault chart\n  helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator\n  # Install Vault\n  # We need at least Vault 0.8.3\n  helm install incubator/vault --name vault --set vault.dev=true --set image.tag=\"0.9.5\"\n  ```\n\n- Enable Kubernetes backend\n  ```\n  # Get Vault pod name\n  export POD_NAME=$(kubectl get pods --namespace default -l \"app=vault\" -o jsonpath=\"{.items[0].metadata.name}\")\n  # Get inside pod\n  kubectl exec -i -t ${POD_NAME} sh\n  # Set env vars for Vault client\n  export VAULT_TOKEN=$(cat /root/.vault-token)\n  # Set Vault host URL (do this everytime you exec back into container)\n  export VAULT_ADDR=http://127.0.0.1:8200\n  # Enable Kube auth backend\n  vault auth enable kubernetes\n  # Configure Kube auth backend\n  vault write auth/kubernetes/config \\\n    kubernetes_host=https://kubernetes \\\n    kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n  # Create Vault policy for testing\n  vault policy write test -<<EOF\n  path \"secret/*\" {\n    capabilities = [\"create\"]\n  }\n\n  path \"secret/foo\" {\n    capabilities = [\"read\"]\n  }\n  EOF\n\n  # Create role for confd\n  vault write auth/kubernetes/role/confd \\\n    bound_service_account_names=vault-auth \\\n    bound_service_account_namespaces=default \\\n    policies=test \\\n    ttl=1h\n  # Write test secret\n  vault write secret/foo value=bar\n\n  # Now exit vault container\n  exit\n  ```\n  \n- Create RBAC (if used) rule to allow acccess to TokenReview API\n  ```\n  kubectl create -f - <<EOF\n  apiVersion: rbac.authorization.k8s.io/v1beta1\n  kind: ClusterRoleBinding\n  metadata:\n    name: role-tokenreview-binding\n    namespace: default\n  roleRef:\n    apiGroup: rbac.authorization.k8s.io\n    kind: ClusterRole\n    name: system:auth-delegator\n  subjects:\n  - kind: ServiceAccount\n    name: vault-auth\n    namespace: default\n  EOF\n  ```\n\n- Start a pod with confd and get a secret\n  ```\n  # Create service account for kube auth\n  kubectl create serviceaccount vault-auth\n  # Start pod\n  kubectl run test -i -t --image=quay.io/stepanstipl/test:confd-v7 \\\n    --overrides='{ \"apiVersion\": \"v1\", \"spec\": {\"serviceAccount\": \"vault-auth\", \"serviceAccountName\": \"vault-auth\"} }' \\\n    --restart=Never -- sh\n  # Inside the pod\n  # Create confd config\n  mkdir -p /etc/confd/conf.d /etc/confd/templates\n  echo '[template]\n  src = \"test.conf.tmpl\"\n  dest = \"/tmp/test.conf\"\n  keys = [\n      \"/secret/foo\",\n  ]' > /etc/confd/conf.d/test.toml\n  # And template\n  echo '{{getv \"/secret/foo\"}}' > /etc/confd/templates/test.conf.tmpl\n  # and finally run confd\n  confd -onetime -backend vault -auth-type kubernetes -role confd -node http://vault-vault:8200 -log-level debug\n  ```\n\n- Check `/tmp/test.conf`, it should contain your secret\n  ```\n  cat /tmp/test.conf\n  ```\n"
  },
  {
    "path": "go.mod",
    "content": "module github.com/kelseyhightower/confd\n\ngo 1.19\n\nrequire (\n\tgithub.com/BurntSushi/toml v1.3.2\n\tgithub.com/aws/aws-sdk-go v1.48.16\n\tgithub.com/fsnotify/fsnotify v1.7.0\n\tgithub.com/garyburd/redigo v1.6.4\n\tgithub.com/hashicorp/consul/api v1.26.1\n\tgithub.com/hashicorp/vault/api v1.10.0\n\tgithub.com/kelseyhightower/memkv v0.1.1\n\tgithub.com/samuel/go-zookeeper v0.0.0-20201211165307-7117e9ea2414\n\tgithub.com/sirupsen/logrus v1.9.3\n\tgo.etcd.io/etcd/client/v3 v3.5.11\n\tgopkg.in/yaml.v2 v2.4.0\n)\n\nrequire (\n\tgithub.com/armon/go-metrics v0.4.1 // indirect\n\tgithub.com/cenkalti/backoff/v3 v3.2.2 // indirect\n\tgithub.com/coreos/go-semver v0.3.1 // indirect\n\tgithub.com/coreos/go-systemd/v22 v22.5.0 // indirect\n\tgithub.com/fatih/color v1.16.0 // indirect\n\tgithub.com/go-jose/go-jose/v3 v3.0.1 // indirect\n\tgithub.com/go-test/deep v1.1.0 // indirect\n\tgithub.com/gogo/protobuf v1.3.2 // indirect\n\tgithub.com/golang/protobuf v1.5.3 // indirect\n\tgithub.com/hashicorp/errwrap v1.1.0 // indirect\n\tgithub.com/hashicorp/go-cleanhttp v0.5.2 // indirect\n\tgithub.com/hashicorp/go-hclog v1.6.1 // indirect\n\tgithub.com/hashicorp/go-immutable-radix v1.3.1 // indirect\n\tgithub.com/hashicorp/go-multierror v1.1.1 // indirect\n\tgithub.com/hashicorp/go-retryablehttp v0.7.5 // indirect\n\tgithub.com/hashicorp/go-rootcerts v1.0.2 // indirect\n\tgithub.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect\n\tgithub.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect\n\tgithub.com/hashicorp/go-sockaddr v1.0.6 // indirect\n\tgithub.com/hashicorp/go-version v1.6.0 // indirect\n\tgithub.com/hashicorp/golang-lru v1.0.2 // indirect\n\tgithub.com/hashicorp/hcl v1.0.1-vault-5 // indirect\n\tgithub.com/hashicorp/serf v0.10.1 // indirect\n\tgithub.com/jmespath/go-jmespath v0.4.0 // indirect\n\tgithub.com/mattn/go-colorable v0.1.13 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/mitchellh/go-homedir v1.1.0 // indirect\n\tgithub.com/mitchellh/mapstructure v1.5.0 // indirect\n\tgithub.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect\n\tgithub.com/ryanuber/go-glob v1.0.0 // indirect\n\tgo.etcd.io/etcd/api/v3 v3.5.11 // indirect\n\tgo.etcd.io/etcd/client/pkg/v3 v3.5.11 // indirect\n\tgo.uber.org/multierr v1.11.0 // indirect\n\tgo.uber.org/zap v1.26.0 // indirect\n\tgolang.org/x/crypto v0.16.0 // indirect\n\tgolang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb // indirect\n\tgolang.org/x/net v0.19.0 // indirect\n\tgolang.org/x/sys v0.15.0 // indirect\n\tgolang.org/x/text v0.14.0 // indirect\n\tgolang.org/x/time v0.5.0 // indirect\n\tgoogle.golang.org/genproto v0.0.0-20231127180814-3a041ad873d4 // indirect\n\tgoogle.golang.org/genproto/googleapis/api v0.0.0-20231127180814-3a041ad873d4 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect\n\tgoogle.golang.org/grpc v1.59.0 // indirect\n\tgoogle.golang.org/protobuf v1.31.0 // indirect\n\tgopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect\n)\n"
  },
  {
    "path": "go.sum",
    "content": "github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=\ngithub.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=\ngithub.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=\ngithub.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=\ngithub.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=\ngithub.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=\ngithub.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=\ngithub.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=\ngithub.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=\ngithub.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA=\ngithub.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4=\ngithub.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=\ngithub.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=\ngithub.com/aws/aws-sdk-go v1.48.16 h1:mcj2/9J/MJ55Dov+ocMevhR8Jv6jW/fAxbrn4a1JFc8=\ngithub.com/aws/aws-sdk-go v1.48.16/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=\ngithub.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=\ngithub.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=\ngithub.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=\ngithub.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=\ngithub.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M=\ngithub.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs=\ngithub.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=\ngithub.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=\ngithub.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=\ngithub.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=\ngithub.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=\ngithub.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=\ngithub.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=\ngithub.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=\ngithub.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=\ngithub.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=\ngithub.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=\ngithub.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=\ngithub.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=\ngithub.com/garyburd/redigo v1.6.4 h1:LFu2R3+ZOPgSMWMOL+saa/zXRjw0ID2G8FepO53BGlg=\ngithub.com/garyburd/redigo v1.6.4/go.mod h1:rTb6epsqigu3kYKBnaF028A7Tf/Aw5s0cqA47doKKqw=\ngithub.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA=\ngithub.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8=\ngithub.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=\ngithub.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=\ngithub.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=\ngithub.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=\ngithub.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=\ngithub.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg=\ngithub.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=\ngithub.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=\ngithub.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=\ngithub.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=\ngithub.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=\ngithub.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4=\ngithub.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=\ngithub.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=\ngithub.com/hashicorp/consul/api v1.26.1 h1:5oSXOO5fboPZeW5SN+TdGFP/BILDgBm19OrPZ/pICIM=\ngithub.com/hashicorp/consul/api v1.26.1/go.mod h1:B4sQTeaSO16NtynqrAdwOlahJ7IUDZM9cj2420xYL8A=\ngithub.com/hashicorp/consul/sdk v0.15.0 h1:2qK9nDrr4tiJKRoxPGhm6B7xJjLVIQqkjiab2M4aKjU=\ngithub.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=\ngithub.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=\ngithub.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=\ngithub.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=\ngithub.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=\ngithub.com/hashicorp/go-hclog v1.6.1 h1:pa92nu9bPoAqI7p+uPDCIWGAibUdlCi6TYWJEQQkLf8=\ngithub.com/hashicorp/go-hclog v1.6.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=\ngithub.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=\ngithub.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc=\ngithub.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=\ngithub.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=\ngithub.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI=\ngithub.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=\ngithub.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA=\ngithub.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=\ngithub.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=\ngithub.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=\ngithub.com/hashicorp/go-retryablehttp v0.7.5 h1:bJj+Pj19UZMIweq/iie+1u5YCdGrnxCT9yvm0e+Nd5M=\ngithub.com/hashicorp/go-retryablehttp v0.7.5/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=\ngithub.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=\ngithub.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=\ngithub.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 h1:iBt4Ew4XEGLfh6/bPk4rSYmuZJGizr6/x/AEizP0CQc=\ngithub.com/hashicorp/go-secure-stdlib/parseutil v0.1.8/go.mod h1:aiJI+PIApBRQG7FZTEBx5GiiX+HbOHilUdNxUZi4eV0=\ngithub.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts=\ngithub.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4=\ngithub.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=\ngithub.com/hashicorp/go-sockaddr v1.0.6 h1:RSG8rKU28VTUTvEKghe5gIhIQpv8evvNpnDEyqO4u9I=\ngithub.com/hashicorp/go-sockaddr v1.0.6/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI=\ngithub.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=\ngithub.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=\ngithub.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=\ngithub.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=\ngithub.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=\ngithub.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=\ngithub.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM=\ngithub.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM=\ngithub.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=\ngithub.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc=\ngithub.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM=\ngithub.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0=\ngithub.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY=\ngithub.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4=\ngithub.com/hashicorp/vault/api v1.10.0 h1:/US7sIjWN6Imp4o/Rj1Ce2Nr5bki/AXi9vAW3p2tOJQ=\ngithub.com/hashicorp/vault/api v1.10.0/go.mod h1:jo5Y/ET+hNyz+JnKDt8XLAdKs+AM0G5W0Vp1IrFI8N8=\ngithub.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=\ngithub.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=\ngithub.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=\ngithub.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=\ngithub.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=\ngithub.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=\ngithub.com/kelseyhightower/memkv v0.1.1 h1:O7n2MB8cdrwb4UmyyXS2tVETc2DR7KlJRihRgNh4zqc=\ngithub.com/kelseyhightower/memkv v0.1.1/go.mod h1:uIeINg0Dy2aioPWSdga9VnueJjfSvul2dW7o758NxO4=\ngithub.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=\ngithub.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=\ngithub.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=\ngithub.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=\ngithub.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=\ngithub.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=\ngithub.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=\ngithub.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=\ngithub.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=\ngithub.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=\ngithub.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=\ngithub.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=\ngithub.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=\ngithub.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=\ngithub.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=\ngithub.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=\ngithub.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=\ngithub.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=\ngithub.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY=\ngithub.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=\ngithub.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=\ngithub.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=\ngithub.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=\ngithub.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=\ngithub.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=\ngithub.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=\ngithub.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=\ngithub.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=\ngithub.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=\ngithub.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=\ngithub.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=\ngithub.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=\ngithub.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=\ngithub.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=\ngithub.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=\ngithub.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=\ngithub.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=\ngithub.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=\ngithub.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=\ngithub.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=\ngithub.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=\ngithub.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=\ngithub.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=\ngithub.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=\ngithub.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=\ngithub.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=\ngithub.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=\ngithub.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=\ngithub.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=\ngithub.com/samuel/go-zookeeper v0.0.0-20201211165307-7117e9ea2414 h1:AJNDS0kP60X8wwWFvbLPwDuojxubj9pbfK7pjHw0vKg=\ngithub.com/samuel/go-zookeeper v0.0.0-20201211165307-7117e9ea2414/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=\ngithub.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=\ngithub.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=\ngithub.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=\ngithub.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=\ngithub.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=\ngithub.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=\ngithub.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=\ngithub.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=\ngithub.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=\ngithub.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngo.etcd.io/etcd/api/v3 v3.5.11 h1:B54KwXbWDHyD3XYAwprxNzTe7vlhR69LuBgZnMVvS7E=\ngo.etcd.io/etcd/api/v3 v3.5.11/go.mod h1:Ot+o0SWSyT6uHhA56al1oCED0JImsRiU9Dc26+C2a+4=\ngo.etcd.io/etcd/client/pkg/v3 v3.5.11 h1:bT2xVspdiCj2910T0V+/KHcVKjkUrCZVtk8J2JF2z1A=\ngo.etcd.io/etcd/client/pkg/v3 v3.5.11/go.mod h1:seTzl2d9APP8R5Y2hFL3NVlD6qC/dOT+3kvrqPyTas4=\ngo.etcd.io/etcd/client/v3 v3.5.11 h1:ajWtgoNSZJ1gmS8k+icvPtqsqEav+iUorF7b0qozgUU=\ngo.etcd.io/etcd/client/v3 v3.5.11/go.mod h1:a6xQUEqFJ8vztO1agJh/KQKOMfFI8og52ZconzcDJwE=\ngo.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk=\ngo.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=\ngo.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=\ngo.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=\ngo.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=\ngolang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY=\ngolang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=\ngolang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb h1:c0vyKkb6yr3KR7jEfJaOSv4lG7xPkbN6r52aJz1d8a8=\ngolang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8=\ngolang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=\ngolang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=\ngolang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=\ngolang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=\ngolang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=\ngolang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=\ngolang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngoogle.golang.org/genproto v0.0.0-20231127180814-3a041ad873d4 h1:W12Pwm4urIbRdGhMEg2NM9O3TWKjNcxQhs46V0ypf/k=\ngoogle.golang.org/genproto v0.0.0-20231127180814-3a041ad873d4/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20231127180814-3a041ad873d4 h1:ZcOkrmX74HbKFYnpPY8Qsw93fC29TbJXspYKaBkSXDQ=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20231127180814-3a041ad873d4/go.mod h1:k2dtGpRrbsSyKcNPKKI5sstZkrNCZwpU/ns96JoHbGg=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM=\ngoogle.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=\ngoogle.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=\ngoogle.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=\ngopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=\ngopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=\ngopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\n"
  },
  {
    "path": "integration/confdir/conf.d/basic.toml",
    "content": "[template]\nmode = \"0644\"\nsrc = \"basic.conf.tmpl\"\ndest = \"/tmp/confd-basic-test.conf\"\nkeys = [\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n]\n"
  },
  {
    "path": "integration/confdir/conf.d/exists.toml",
    "content": "[template]\nmode = \"0644\"\nsrc = \"exists-test.conf.tmpl\"\ndest = \"/tmp/confd-exists-test.conf\"\nkeys = [\n  \"/key\",\n]\n"
  },
  {
    "path": "integration/confdir/conf.d/iteration.toml",
    "content": "[template]\nmode = \"0644\"\nsrc = \"iteration.conf.tmpl\"\ndest = \"/tmp/confd-iteration-test.conf\"\nkeys = [\n  \"/upstream\",\n]\n"
  },
  {
    "path": "integration/confdir/conf.d/manykeys.toml",
    "content": "[template]\nmode = \"0644\"\nsrc = \"basic.conf.tmpl\"\ndest = \"/tmp/confd-manykeys-test.conf\"\nkeys = [\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\",\n  \"/database/host\",\n  \"/database/password\",\n  \"/database/port\",\n  \"/database/username\"\n]\n"
  },
  {
    "path": "integration/confdir/conf.d/nested.toml",
    "content": "[template]\nmode = \"0644\"\nsrc = \"nested.conf.tmpl\"\ndest = \"/tmp/confd-nested-test.conf\"\nkeys = [\n  \"/nested\",\n]\n"
  },
  {
    "path": "integration/confdir/templates/basic.conf.tmpl",
    "content": "hostname: {{ getenv \"HOSTNAME\" }}\n[database]\nhost={{ getv \"/database/host\" }}\npassword={{ getv \"/database/password\" }}\nport={{ getv \"/database/port\" }}\nusername={{ getv \"/database/username\" }}\n"
  },
  {
    "path": "integration/confdir/templates/exists-test.conf.tmpl",
    "content": "{{ if exists \"/key\" }}value: {{ getv \"/key\" }}{{ end }}\n{{- if exists \"/doesnotexist\" }}This line will not be printed value: {{ getv \"/key\" }}{{ end }}\n"
  },
  {
    "path": "integration/confdir/templates/iteration.conf.tmpl",
    "content": "upstream app {\n{{- range gets \"/upstream/*\" }}\n  server {{ .Value }};\n{{- end }}\n}\n\nserver {\n    server_name  www.example.com;\n    location / {\n        proxy_pass        http://app;\n        proxy_redirect    off;\n        proxy_set_header  Host             $host;\n        proxy_set_header  X-Real-IP        $remote_addr;\n        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;\n   }\n}\n"
  },
  {
    "path": "integration/confdir/templates/nested.conf.tmpl",
    "content": "upstream app {\n{{ range gets \"/nested/*\" }}\n  {{ range gets .Key }}\n    server {{ .Value }};\n  {{ end }}\n{{ end }}\n}\n\nserver {\n    server_name  www.example.com;\n    location / {\n        proxy_pass        http://app;\n        proxy_redirect    off;\n        proxy_set_header  Host             $host;\n        proxy_set_header  X-Real-IP        $remote_addr;\n        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;\n   }\n}\n"
  },
  {
    "path": "integration/consul/test.sh",
    "content": "#!/bin/bash\n\nexport HOSTNAME=\"localhost\"\n\n# Configure consul\ncurl -X PUT http://127.0.0.1:8500/v1/kv/key -d 'foobar'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/database/host -d '127.0.0.1'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/database/password -d 'p@sSw0rd'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/database/port -d '3306'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/database/username -d 'confd'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/upstream/app1 -d '10.0.1.10:8080'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/upstream/app2 -d '10.0.1.11:8080'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/nested/east/app1 -d '10.0.1.10:8080'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/nested/west/app2 -d '10.0.1.11:8080'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/prefix/database/host -d '127.0.0.1'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/prefix/database/password -d 'p@sSw0rd'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/prefix/database/port -d '3306'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/prefix/database/username -d 'confd'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/prefix/upstream/app1 -d '10.0.1.10:8080'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/prefix/upstream/app2 -d '10.0.1.11:8080'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/prefix/nested/east/app1 -d '10.0.1.10:8080'\ncurl -X PUT http://127.0.0.1:8500/v1/kv/prefix/nested/west/app2 -d '10.0.1.11:8080'\n\n# Run confd\nconfd --onetime --log-level debug --confdir ./integration/confdir --backend consul --node 127.0.0.1:8500\n"
  },
  {
    "path": "integration/dynamodb/test.sh",
    "content": "#!/bin/bash\n\nexport HOSTNAME=\"localhost\"\nexport DYNAMODB_LOCAL=\"1\"\nexport AWS_ACCESS_KEY_ID=\"foo\"\nexport AWS_SECRET_ACCESS_KEY=\"bar\"\nexport AWS_REGION=\"eu-west-1\"\nexport AWS_DEFAULT_REGION=\"eu-west-1\"\n\naws dynamodb create-table \\\n    --region eu-west-1 --table-name confd \\\n    --attribute-definitions AttributeName=key,AttributeType=S \\\n    --key-schema AttributeName=key,KeyType=HASH \\\n    --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1 \\\n    --endpoint-url http://localhost:8000\n\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/key\" }, \"value\": {\"S\": \"foobar\"}}' \\\n    --endpoint-url http://localhost:8000\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/database/host\" }, \"value\": {\"S\": \"127.0.0.1\"}}' \\\n    --endpoint-url http://localhost:8000\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/database/password\" }, \"value\": {\"S\": \"p@sSw0rd\"}}' \\\n    --endpoint-url http://localhost:8000\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/database/port\" }, \"value\": {\"S\": \"3306\"}}' \\\n    --endpoint-url http://localhost:8000\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/database/username\" }, \"value\": {\"S\": \"confd\"}}' \\\n    --endpoint-url http://localhost:8000\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/upstream/app1\" }, \"value\": {\"S\": \"10.0.1.10:8080\"}}' \\\n    --endpoint-url http://localhost:8000\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/upstream/app2\" }, \"value\": {\"S\": \"10.0.1.11:8080\"}}' \\\n    --endpoint-url http://localhost:8000\n# Add a broken value, to see if it is handled\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/upstream/broken\" }, \"value\": {\"N\": \"4711\"}}' \\\n    --endpoint-url http://localhost:8000\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/prefix/database/host\" }, \"value\": {\"S\": \"127.0.0.1\"}}' \\\n    --endpoint-url http://localhost:8000\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/prefix/database/password\" }, \"value\": {\"S\": \"p@sSw0rd\"}}' \\\n    --endpoint-url http://localhost:8000\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/prefix/database/port\" }, \"value\": {\"S\": \"3306\"}}' \\\n    --endpoint-url http://localhost:8000\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/prefix/database/username\" }, \"value\": {\"S\": \"confd\"}}' \\\n    --endpoint-url http://localhost:8000\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/prefix/upstream/app1\" }, \"value\": {\"S\": \"10.0.1.10:8080\"}}' \\\n    --endpoint-url http://localhost:8000\naws dynamodb put-item --table-name confd --region eu-west-1 \\\n    --item '{ \"key\": { \"S\": \"/prefix/upstream/app2\" }, \"value\": {\"S\": \"10.0.1.11:8080\"}}' \\\n    --endpoint-url http://localhost:8000\n\n# Run confd, expect it to work\nconfd --onetime --log-level debug --confdir ./integration/confdir --interval 5 --backend dynamodb --table confd\nif [ $? -ne 0 ]\nthen\n        exit 1\nfi\n\n# Run confd with --watch, expecting it to fail\nconfd --onetime --log-level debug --confdir ./integration/confdir --interval 5 --backend dynamodb --table confd --watch\nif [ $? -eq 0 ]\nthen\n        exit 1\nfi\n\n# Run confd without AWS credentials, expecting it to fail\nunset AWS_ACCESS_KEY_ID\nunset AWS_SECRET_ACCESS_KEY\n\nconfd --onetime --log-level debug --confdir ./integration/confdir --interval 5 --backend dynamodb --table confd\nif [ $? -eq 0 ]\nthen\n        exit 1\nfi\n"
  },
  {
    "path": "integration/env/test.sh",
    "content": "#!/bin/bash\n\nexport HOSTNAME=\"localhost\"\nexport KEY=\"foobar\"\nexport DATABASE_HOST=\"127.0.0.1\"\nexport DATABASE_PASSWORD=\"p@sSw0rd\"\nexport DATABASE_PORT=\"3306\"\nexport DATABASE_USERNAME=\"confd\"\nexport UPSTREAM_APP1=\"10.0.1.10:8080\"\nexport UPSTREAM_APP2=\"10.0.1.11:8080\"\nexport PREFIX_DATABASE_HOST=\"127.0.0.1\"\nexport PREFIX_DATABASE_PASSWORD=\"p@sSw0rd\"\nexport PREFIX_DATABASE_PORT=\"3306\"\nexport PREFIX_DATABASE_USERNAME=\"confd\"\nexport PREFIX_UPSTREAM_APP1=\"10.0.1.10:8080\"\nexport PREFIX_UPSTREAM_APP2=\"10.0.1.11:8080\"\n\nconfd --onetime --log-level debug --confdir ./integration/confdir --interval 5 --backend env\n"
  },
  {
    "path": "integration/etcd/test.sh",
    "content": "#!/bin/bash\n\nexport HOSTNAME=\"localhost\"\n\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/key -d value=foobar\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/database/host -d value=127.0.0.1\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/database/password -d value=p@sSw0rd\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/database/port -d value=3306\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/database/username -d value=confd\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/upstream/app1 -d value=10.0.1.10:8080\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/upstream/app2 -d value=10.0.1.11:8080\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/nested/east/app1 -d value=10.0.1.10:8080\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/nested/west/app2 -d value=10.0.1.11:8080\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/prefix/database/host -d value=127.0.0.1\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/prefix/database/password -d value=p@sSw0rd\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/prefix/database/port -d value=3306\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/prefix/database/username -d value=confd\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/prefix/upstream/app1 -d value=10.0.1.10:8080\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/prefix/upstream/app2 -d value=10.0.1.11:8080\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/prefix/nested/east/app1 -d value=10.0.1.10:8080\ncurl -L -X PUT http://127.0.0.1:2379/v2/keys/prefix/nested/west/app2 -d value=10.0.1.11:8080\n\n# Run confd\nconfd --onetime --log-level debug --confdir ./integration/confdir --backend etcd --node http://127.0.0.1:2379 --watch\n"
  },
  {
    "path": "integration/etcdv3/test.sh",
    "content": "#!/bin/bash\n\nexport HOSTNAME=\"localhost\"\nexport ETCDCTL_API=\"3\"\n\netcdctl put /key foobar\netcdctl put /database/host 127.0.0.1\netcdctl put /database/password p@sSw0rd\netcdctl put /database/port 3306\netcdctl put /database/username confd\netcdctl put /upstream/app1 10.0.1.10:8080\netcdctl put /upstream/app2 10.0.1.11:8080\netcdctl put /prefix/database/host 127.0.0.1\netcdctl put /prefix/database/password p@sSw0rd\netcdctl put /prefix/database/port 3306\netcdctl put /prefix/database/username confd\netcdctl put /prefix/upstream/app1 10.0.1.10:8080\netcdctl put /prefix/upstream/app2 10.0.1.11:8080\n\n# Run confd\nconfd --onetime --log-level debug --confdir ./integration/confdir --backend etcdv3 --node http://127.0.0.1:2379 --watch\n"
  },
  {
    "path": "integration/expect/basic.conf",
    "content": "hostname: localhost\n[database]\nhost=127.0.0.1\npassword=p@sSw0rd\nport=3306\nusername=confd\n"
  },
  {
    "path": "integration/expect/check.sh",
    "content": "#!/bin/bash\nset -ex\n\ndiff /tmp/confd-basic-test.conf integration/expect/basic.conf\ndiff /tmp/confd-exists-test.conf integration/expect/exists-test.conf\ndiff /tmp/confd-iteration-test.conf integration/expect/iteration.conf\ndiff /tmp/confd-manykeys-test.conf integration/expect/basic.conf\n"
  },
  {
    "path": "integration/expect/exists-test.conf",
    "content": "value: foobar\n"
  },
  {
    "path": "integration/expect/iteration.conf",
    "content": "upstream app {\n  server 10.0.1.10:8080;\n  server 10.0.1.11:8080;\n}\n\nserver {\n    server_name  www.example.com;\n    location / {\n        proxy_pass        http://app;\n        proxy_redirect    off;\n        proxy_set_header  Host             $host;\n        proxy_set_header  X-Real-IP        $remote_addr;\n        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;\n   }\n}\n"
  },
  {
    "path": "integration/file/test.sh",
    "content": "#!/bin/bash\n\nexport HOSTNAME=\"localhost\"\nmkdir backends1 backends2\ncat <<EOT >> backends1/1.yaml\nkey: foobar\ndatabase:\n  host: 127.0.0.1\n  password: p@sSw0rd\n  port: \"3306\"\n  username: confd\nEOT\n\ncat <<EOT >> backends1/2.yaml\nupstream:\n  app1: 10.0.1.10:8080\n  app2: 10.0.1.11:8080\nEOT\n\ncat <<EOT >> backends2/1.yaml\nnested:\n  app1: 10.0.1.10:8080\n  app2: 10.0.1.11:8080\nEOT\n\ncat <<EOT >> backends2/2.yaml\nprefix:\n  database:\n    host: 127.0.0.1\n    password: p@sSw0rd\n    port: \"3306\"\n    username: confd\n  upstream:\n    app1: 10.0.1.10:8080\n    app2: 10.0.1.11:8080\nEOT\n\n# Run confd\nconfd --onetime --log-level debug --confdir ./integration/confdir --backend file --file backends1/ --file backends2/  --watch\n"
  },
  {
    "path": "integration/rancher/test.sh",
    "content": "#!/bin/bash\n\nexport HOSTNAME=\"localhost\"\n\ncat > ./rancher-answers.json<<EOF\n{\n  \"2015-07-25\": {\n    \"default\": {\n      \"key\": \"foobar\",\n      \"database\": {\n        \"host\": \"127.0.0.1\",\n        \"password\": \"p@sSw0rd\",\n        \"port\": 3306,\n        \"username\": \"confd\"\n      },\n      \"upstream\": {\n        \"app1\": \"10.0.1.10:8080\",\n        \"app2\": \"10.0.1.11:8080\"\n      },\n      \"nested\": {\n        \"east\": {\n          \"app1\": \"10.0.1.10:8080\"\n        },\n        \"west\": {\n          \"app2\": \"10.0.1.11:8080\"\n        }\n      }\n    }\n  }\n}\nEOF\nrancher-metadata -listen 127.0.0.1:8080 --answers ./rancher-answers.json &\n\nconfd --onetime --log-level debug --prefix /2015-07-25 --confdir ./integration/confdir --backend rancher --node 127.0.0.1:8080 --watch\n"
  },
  {
    "path": "integration/redis/test.sh",
    "content": "#!/bin/bash\n\nexport HOSTNAME=\"localhost\"\n\nredis-cli set /key foobar\nredis-cli set /database/host 127.0.0.1\nredis-cli set /database/password p@sSw0rd\nredis-cli set /database/port 3306\nredis-cli set /database/username confd\nredis-cli set /upstream/app1 10.0.1.10:8080\nredis-cli set /upstream/app2 10.0.1.11:8080\nredis-cli hset /prefix/database host 127.0.0.1\nredis-cli hset /prefix/database password p@sSw0rd\nredis-cli hset /prefix/database port 3306\nredis-cli hset /prefix/database username confd\nredis-cli hset /prefix/upstream app1 10.0.1.10:8080\nredis-cli hset /prefix/upstream app2 10.0.1.11:8080\n\nconfd --onetime --log-level debug --confdir ./integration/confdir --interval 5 --backend redis --node 127.0.0.1:6379\nif [ $? -ne 0 ]\nthen\n        exit 1\nfi\n\nconfd --onetime --log-level debug --confdir ./integration/confdir --interval 5 --backend redis --node 127.0.0.1:6379/0\nif [ $? -ne 0 ]\nthen\n        exit 1\nfi\n"
  },
  {
    "path": "integration/ssm/main.go",
    "content": "package main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/json/jsonutil\"\n\t\"github.com/aws/aws-sdk-go/service/ssm\"\n)\n\nvar db map[string]string\n\nfunc handler(w http.ResponseWriter, r *http.Request) {\n\tif r.Method != \"POST\" || r.Header.Get(\"Authorization\") == \"\" {\n\t\tlog.Println(\"Unauthorized request\")\n\t\treturn\n\t}\n\tswitch t := r.Header.Get(\"X-Amz-Target\"); t {\n\tcase \"AmazonSSM.PutParameter\":\n\t\tdefer r.Body.Close()\n\t\tvar b ssm.PutParameterInput\n\t\terr := jsonutil.UnmarshalJSON(&b, r.Body)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tlog.Printf(\"Body=%#v\\n\", b)\n\t\tlog.Printf(\"DB: Setting key=%s value=%s\", *b.Name, *b.Value)\n\t\tdb[*b.Name] = *b.Value\n\t\treturn\n\tcase \"AmazonSSM.GetParametersByPath\":\n\t\tdefer r.Body.Close()\n\t\tvar b ssm.GetParametersByPathInput\n\t\terr := jsonutil.UnmarshalJSON(&b, r.Body)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tlog.Printf(\"Body=%#v\\n\", b)\n\t\tvar GetParametersByPathOutput ssm.GetParametersByPathOutput\n\t\tparameters := make([]*ssm.Parameter, 0, 0)\n\t\tpath := b.Path\n\t\tfor k, v := range db {\n\t\t\tif strings.HasPrefix(k, *path+\"/\") == false {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tlog.Printf(\"DB: Getting key=%s\", k)\n\t\t\tparameters = append(parameters, &ssm.Parameter{\n\t\t\t\tName:  aws.String(k),\n\t\t\t\tType:  aws.String(\"String\"),\n\t\t\t\tValue: aws.String(v),\n\t\t\t})\n\t\t}\n\t\tGetParametersByPathOutput.SetParameters(parameters)\n\t\tresp, err := jsonutil.BuildJSON(GetParametersByPathOutput)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tfmt.Fprint(w, string(resp))\n\t\treturn\n\tcase \"AmazonSSM.GetParameter\":\n\t\tdefer r.Body.Close()\n\t\tvar b ssm.GetParameterInput\n\t\terr := jsonutil.UnmarshalJSON(&b, r.Body)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tlog.Printf(\"Body=%#v\\n\", b)\n\t\tvar GetParameterOutput ssm.GetParameterOutput\n\t\tlog.Printf(\"DB: Getting key=%s\", *b.Name)\n\t\tparameter := &ssm.Parameter{\n\t\t\tName:  aws.String(*b.Name),\n\t\t\tType:  aws.String(\"String\"),\n\t\t\tValue: aws.String(db[*b.Name]),\n\t\t}\n\t\tGetParameterOutput.SetParameter(parameter)\n\t\tresp, err := jsonutil.BuildJSON(GetParameterOutput)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tfmt.Fprint(w, string(resp))\n\t\treturn\n\tdefault:\n\t\tlog.Println(\"Unknown target\")\n\t\treturn\n\t}\n}\n\nfunc main() {\n\tdb = make(map[string]string)\n\thttp.HandleFunc(\"/\", handler)\n\tlog.Println(\"Starting AWS SSM HTTP mocking server\")\n\thttp.ListenAndServe(\":8001\", nil)\n}\n"
  },
  {
    "path": "integration/ssm/test.sh",
    "content": "#!/bin/bash\n\nexport HOSTNAME=\"localhost\"\nexport SSM_LOCAL=\"1\"\nexport AWS_ACCESS_KEY_ID=\"foo\"\nexport AWS_SECRET_ACCESS_KEY=\"bar\"\nexport AWS_DEFAULT_REGION=\"us-east-1\"\nexport AWS_REGION=\"us-east-1\"\nexport SSM_ENDPOINT_URL=\"http://localhost:8001\"\n\naws ssm put-parameter --name \"/key\" --type \"String\" --value \"foobar\" --endpoint-url $SSM_ENDPOINT_URL\naws ssm put-parameter --name \"/database/host\" --type \"String\" --value \"127.0.0.1\" --endpoint-url $SSM_ENDPOINT_URL\naws ssm put-parameter --name \"/database/password\" --type \"String\" --value \"p@sSw0rd\" --endpoint-url $SSM_ENDPOINT_URL\naws ssm put-parameter --name \"/database/port\" --type \"String\" --value \"3306\" --endpoint-url $SSM_ENDPOINT_URL\naws ssm put-parameter --name \"/database/username\" --type \"String\" --value \"confd\" --endpoint-url $SSM_ENDPOINT_URL\naws ssm put-parameter --name \"/upstream/app1\" --type \"String\" --value \"10.0.1.10:8080\" --endpoint-url $SSM_ENDPOINT_URL\naws ssm put-parameter --name \"/upstream/app2\" --type \"String\" --value \"10.0.1.11:8080\" --endpoint-url $SSM_ENDPOINT_URL\naws ssm put-parameter --name \"/prefix/database/host\" --type \"String\" --value \"127.0.0.1\" --endpoint-url $SSM_ENDPOINT_URL\naws ssm put-parameter --name \"/prefix/database/password\" --type \"String\" --value \"p@sSw0rd\" --endpoint-url $SSM_ENDPOINT_URL\naws ssm put-parameter --name \"/prefix/database/port\" --type \"String\" --value \"3306\" --endpoint-url $SSM_ENDPOINT_URL\naws ssm put-parameter --name \"/prefix/database/username\" --type \"String\" --value \"confd\" --endpoint-url $SSM_ENDPOINT_URL\naws ssm put-parameter --name \"/prefix/upstream/app1\" --type \"String\" --value \"10.0.1.10:8080\" --endpoint-url $SSM_ENDPOINT_URL\naws ssm put-parameter --name \"/prefix/upstream/app2\" --type \"String\" --value \"10.0.1.11:8080\" --endpoint-url $SSM_ENDPOINT_URL\n\n# Run confd, expect it to work\nconfd --onetime --log-level debug --confdir ./integration/confdir --interval 5 --backend ssm --table confd\nif [ $? -ne 0 ]\nthen\n        exit 1\nfi\n\n# Run confd with --watch, expecting it to fail\nconfd --onetime --log-level debug --confdir ./integration/confdir --interval 5 --backend ssm --table confd --watch\nif [ $? -eq 0 ]\nthen\n        exit 1\nfi\n\n# Run confd without AWS credentials, expecting it to fail\nunset AWS_ACCESS_KEY_ID\nunset AWS_SECRET_ACCESS_KEY\n\nconfd --onetime --log-level debug --confdir ./integration/confdir --interval 5 --backend ssm --table confd\nif [ $? -eq 0 ]\nthen\n        exit 1\nfi\n"
  },
  {
    "path": "integration/vault/test.sh",
    "content": "#!/bin/bash\n\nexport HOSTNAME=\"localhost\"\nexport ROOT_TOKEN=\"$(vault read -field id auth/token/lookup-self)\"\n\nvault secrets enable -path database kv\nvault secrets enable -path key kv\nvault secrets enable -path upstream kv\nvault secrets enable -path nested kv\n\nvault write key value=foobar\nvault write database/host value=127.0.0.1\nvault write database/port value=3306\nvault write database/username value=confd\nvault write database/password value=p@sSw0rd\nvault write upstream app1=10.0.1.10:8080 app2=10.0.1.11:8080\nvault write nested/east/app1 value=10.0.1.10:8080\nvault write nested/west/app2 value=10.0.1.11:8080\n\n# Run confd\nconfd --onetime --log-level debug \\\n      --confdir ./integration/confdir \\\n      --backend vault \\\n      --auth-type token \\\n      --auth-token $ROOT_TOKEN \\\n      --node http://127.0.0.1:8200\n"
  },
  {
    "path": "integration/vault-path/test.sh",
    "content": "#!/bin/bash\n\nexport HOSTNAME=\"localhost\"\nexport ROOT_TOKEN=\"$(vault read -field id auth/token/lookup-self)\"\n\nvault secrets enable -path database kv\nvault secrets enable -path key kv\nvault secrets enable -path upstream kv\nvault secrets enable -path nested kv\n\nvault write key value=foobar\nvault write database/host value=127.0.0.1\nvault write database/port value=3306\nvault write database/username value=confd\nvault write database/password value=p@sSw0rd\nvault write upstream app1=10.0.1.10:8080 app2=10.0.1.11:8080\nvault write nested/east/app1 value=10.0.1.10:8080\nvault write nested/west/app2 value=10.0.1.11:8080\n\nvault auth enable -path=test approle\n\necho 'path \"*\" {\n  capabilities = [\"read\"]\n}' > my-policy.hcl\n\nvault write sys/policy/my-policy policy=@my-policy.hcl\n\nvault write auth/test/role/my-role secret_id_ttl=120m token_num_uses=1000 token_ttl=60m token_max_ttl=120m secret_id_num_uses=10000 policies=my-policy\n\nexport ROLE_ID=$(vault read -field=role_id auth/test/role/my-role/role-id)\nexport SECRET_ID=$(vault write -f -field=secret_id auth/test/role/my-role/secret-id)\n\n# Run confd\nconfd --onetime --log-level debug \\\n      --confdir ./integration/confdir \\\n      --backend vault \\\n      --auth-type app-role \\\n      --role-id $ROLE_ID \\\n      --secret-id $SECRET_ID \\\n      --path=test \\\n      --node http://127.0.0.1:8200\n"
  },
  {
    "path": "integration/zookeeper/main.go",
    "content": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"strconv\"\n\t\"time\"\n\n\tzk \"github.com/samuel/go-zookeeper/zk\"\n)\n\nfunc check(e error) {\n\tif e != nil {\n\t\tpanic(e)\n\t}\n}\n\nfunc zk_write(k string, v string, c *zk.Conn) {\n\te, stat, err := c.Exists(k)\n\tcheck(err)\n\tif e {\n\t\tstat, err = c.Set(k, []byte(v), stat.Version)\n\t\tcheck(err)\n\t} else {\n\t\tstring, err := c.Create(k, []byte(v), int32(0), zk.WorldACL(zk.PermAll))\n\t\tif string == \"\" {\n\t\t\tcheck(err)\n\t\t}\n\t}\n}\n\nfunc parsejson(prefix string, x interface{}, c *zk.Conn) {\n\n\tswitch t := x.(type) {\n\tcase map[string]interface{}:\n\t\tfor k, v := range t {\n\t\t\tif prefix != \"\" {\n\t\t\t\tzk_write(prefix, \"\", c)\n\t\t\t}\n\t\t\tparsejson(prefix+\"/\"+k, v, c)\n\t\t}\n\tcase []interface{}:\n\t\tfor i, v := range t {\n\t\t\tparsejson(prefix+\"[\"+strconv.Itoa(i)+\"]\", v, c)\n\t\t}\n\tcase string:\n\t\tzk_write(prefix, t, c)\n\t\tfmt.Printf(\"%s = %q\\n\", prefix, t)\n\tdefault:\n\t\tfmt.Printf(\"Unhandled: %T\\n\", t)\n\t}\n}\n\nfunc main() {\n\tvar pj interface{}\n\tdat, err := ioutil.ReadFile(\"test.json\")\n\tcheck(err)\n\terr = json.Unmarshal(dat, &pj)\n\tcheck(err)\n\tc, _, err := zk.Connect([]string{\"127.0.0.1\"}, time.Second) //*10)\n\tcheck(err)\n\tparsejson(\"\", pj, c)\n}\n"
  },
  {
    "path": "integration/zookeeper/test.json",
    "content": "{\n   \"key\": \"foobar\",\n   \"database\" : {\n        \"host\": \"127.0.0.1\",\n        \"password\": \"p@sSw0rd\",\n        \"port\": \"3306\",\n        \"username\": \"confd\"\n        },\n    \"upstream\" : {\n        \"app1\": \"10.0.1.10:8080\",\n        \"app2\": \"10.0.1.11:8080\"\n        },\n    \"nested\" : {\n        \"east\": {\n            \"app1\": \"10.0.1.10:8080\"\n        },\n        \"west\": {\n            \"app2\": \"10.0.1.11:8080\"\n        }\n    },\n     \"prefix\": {\n        \"database\": {\n            \"host\": \"127.0.0.1\",\n            \"password\": \"p@sSw0rd\",\n            \"port\": \"3306\",\n            \"username\": \"confd\"\n            },\n            \"upstream\" : {\n                \"app1\": \"10.0.1.10:8080\",\n                \"app2\": \"10.0.1.11:8080\"\n                },\n            \"nested\" : {\n                    \"east\": {\n                        \"app1\": \"10.0.1.10:8080\"\n                    },\n                    \"west\": {\n                        \"app2\": \"10.0.1.11:8080\"\n                    }\n                }\n            }\n}\n"
  },
  {
    "path": "integration/zookeeper/test.sh",
    "content": "#!/bin/bash\n\nexport HOSTNAME=\"localhost\"\n\n# feed zookeeper\nexport ZK_PATH=\"`dirname \\\"$0\\\"`\"\nsh -c \"cd $ZK_PATH; go run main.go\"\n\n# Run confd\nconfd --onetime --log-level debug --confdir ./integration/confdir --interval 5 --backend zookeeper --node 127.0.0.1:2181 -watch\n"
  },
  {
    "path": "integration/zookeeper/zoo.cfg",
    "content": "tickTime=2000\ndataDir=/tmp/zookeeper\nclientPort=2181\n"
  },
  {
    "path": "log/log.go",
    "content": "/*\nPackage log provides support for logging to stdout and stderr.\n\nLog entries will be logged in the following format:\n\n    timestamp hostname tag[pid]: SEVERITY Message\n*/\npackage log\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\t\"time\"\n\n\tlog \"github.com/sirupsen/logrus\"\n)\n\ntype ConfdFormatter struct {\n}\n\nfunc (c *ConfdFormatter) Format(entry *log.Entry) ([]byte, error) {\n\ttimestamp := time.Now().Format(time.RFC3339)\n\thostname, _ := os.Hostname()\n\treturn []byte(fmt.Sprintf(\"%s %s %s[%d]: %s %s\\n\", timestamp, hostname, tag, os.Getpid(), strings.ToUpper(entry.Level.String()), entry.Message)), nil\n}\n\n// tag represents the application name generating the log message. The tag\n// string will appear in all log entires.\nvar tag string\n\nfunc init() {\n\ttag = os.Args[0]\n\tlog.SetFormatter(&ConfdFormatter{})\n}\n\n// SetTag sets the tag.\nfunc SetTag(t string) {\n\ttag = t\n}\n\n// SetLevel sets the log level. Valid levels are panic, fatal, error, warn, info and debug.\nfunc SetLevel(level string) {\n\tlvl, err := log.ParseLevel(level)\n\tif err != nil {\n\t\tFatal(fmt.Sprintf(`not a valid level: \"%s\"`, level))\n\t}\n\tlog.SetLevel(lvl)\n}\n\n// Debug logs a message with severity DEBUG.\nfunc Debug(format string, v ...interface{}) {\n\tlog.Debug(fmt.Sprintf(format, v...))\n}\n\n// Error logs a message with severity ERROR.\nfunc Error(format string, v ...interface{}) {\n\tlog.Error(fmt.Sprintf(format, v...))\n}\n\n// Fatal logs a message with severity ERROR followed by a call to os.Exit().\nfunc Fatal(format string, v ...interface{}) {\n\tlog.Fatal(fmt.Sprintf(format, v...))\n}\n\n// Info logs a message with severity INFO.\nfunc Info(format string, v ...interface{}) {\n\tlog.Info(fmt.Sprintf(format, v...))\n}\n\n// Warning logs a message with severity WARNING.\nfunc Warning(format string, v ...interface{}) {\n\tlog.Warning(fmt.Sprintf(format, v...))\n}\n"
  },
  {
    "path": "resource/template/processor.go",
    "content": "package template\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/kelseyhightower/confd/log\"\n\tutil \"github.com/kelseyhightower/confd/util\"\n)\n\ntype Processor interface {\n\tProcess()\n}\n\nfunc Process(config Config) error {\n\tts, err := getTemplateResources(config)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn process(ts)\n}\n\nfunc process(ts []*TemplateResource) error {\n\tvar lastErr error\n\tfor _, t := range ts {\n\t\tif err := t.process(); err != nil {\n\t\t\tlog.Error(err.Error())\n\t\t\tlastErr = err\n\t\t}\n\t}\n\treturn lastErr\n}\n\ntype intervalProcessor struct {\n\tconfig   Config\n\tstopChan chan bool\n\tdoneChan chan bool\n\terrChan  chan error\n\tinterval int\n}\n\nfunc IntervalProcessor(config Config, stopChan, doneChan chan bool, errChan chan error, interval int) Processor {\n\treturn &intervalProcessor{config, stopChan, doneChan, errChan, interval}\n}\n\nfunc (p *intervalProcessor) Process() {\n\tdefer close(p.doneChan)\n\tfor {\n\t\tts, err := getTemplateResources(p.config)\n\t\tif err != nil {\n\t\t\tlog.Fatal(err.Error())\n\t\t\tbreak\n\t\t}\n\t\tprocess(ts)\n\t\tselect {\n\t\tcase <-p.stopChan:\n\t\t\tbreak\n\t\tcase <-time.After(time.Duration(p.interval) * time.Second):\n\t\t\tcontinue\n\t\t}\n\t}\n}\n\ntype watchProcessor struct {\n\tconfig   Config\n\tstopChan chan bool\n\tdoneChan chan bool\n\terrChan  chan error\n\twg       sync.WaitGroup\n}\n\nfunc WatchProcessor(config Config, stopChan, doneChan chan bool, errChan chan error) Processor {\n\tvar wg sync.WaitGroup\n\treturn &watchProcessor{config, stopChan, doneChan, errChan, wg}\n}\n\nfunc (p *watchProcessor) Process() {\n\tdefer close(p.doneChan)\n\tts, err := getTemplateResources(p.config)\n\tif err != nil {\n\t\tlog.Fatal(err.Error())\n\t\treturn\n\t}\n\tfor _, t := range ts {\n\t\tt := t\n\t\tp.wg.Add(1)\n\t\tgo p.monitorPrefix(t)\n\t}\n\tp.wg.Wait()\n}\n\nfunc (p *watchProcessor) monitorPrefix(t *TemplateResource) {\n\tdefer p.wg.Done()\n\tkeys := util.AppendPrefix(t.Prefix, t.Keys)\n\tfor {\n\t\tindex, err := t.storeClient.WatchPrefix(t.Prefix, keys, t.lastIndex, p.stopChan)\n\t\tif err != nil {\n\t\t\tp.errChan <- err\n\t\t\t// Prevent backend errors from consuming all resources.\n\t\t\ttime.Sleep(time.Second * 2)\n\t\t\tcontinue\n\t\t}\n\t\tt.lastIndex = index\n\t\tif err := t.process(); err != nil {\n\t\t\tp.errChan <- err\n\t\t}\n\t}\n}\n\nfunc getTemplateResources(config Config) ([]*TemplateResource, error) {\n\tvar lastError error\n\ttemplates := make([]*TemplateResource, 0)\n\tlog.Debug(\"Loading template resources from confdir \" + config.ConfDir)\n\tif !util.IsFileExist(config.ConfDir) {\n\t\tlog.Warning(fmt.Sprintf(\"Cannot load template resources: confdir '%s' does not exist\", config.ConfDir))\n\t\treturn nil, nil\n\t}\n\tpaths, err := util.RecursiveFilesLookup(config.ConfigDir, \"*toml\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(paths) < 1 {\n\t\tlog.Warning(\"Found no templates\")\n\t}\n\n\tfor _, p := range paths {\n\t\tlog.Debug(fmt.Sprintf(\"Found template: %s\", p))\n\t\tt, err := NewTemplateResource(p, config)\n\t\tif err != nil {\n\t\t\tlastError = err\n\t\t\tcontinue\n\t\t}\n\t\ttemplates = append(templates, t)\n\t}\n\treturn templates, lastError\n}\n"
  },
  {
    "path": "resource/template/resource.go",
    "content": "package template\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"text/template\"\n\n\t\"github.com/BurntSushi/toml\"\n\t\"github.com/kelseyhightower/confd/backends\"\n\t\"github.com/kelseyhightower/confd/log\"\n\tutil \"github.com/kelseyhightower/confd/util\"\n\t\"github.com/kelseyhightower/memkv\"\n)\n\ntype Config struct {\n\tConfDir       string `toml:\"confdir\"`\n\tConfigDir     string\n\tKeepStageFile bool\n\tNoop          bool   `toml:\"noop\"`\n\tPrefix        string `toml:\"prefix\"`\n\tStoreClient   backends.StoreClient\n\tSyncOnly      bool `toml:\"sync-only\"`\n\tTemplateDir   string\n}\n\n// TemplateResourceConfig holds the parsed template resource.\ntype TemplateResourceConfig struct {\n\tTemplateResource TemplateResource `toml:\"template\"`\n}\n\n// TemplateResource is the representation of a parsed template resource.\ntype TemplateResource struct {\n\tCheckCmd      string `toml:\"check_cmd\"`\n\tDest          string\n\tFileMode      os.FileMode\n\tGid           int\n\tKeys          []string\n\tMode          string\n\tPrefix        string\n\tReloadCmd     string `toml:\"reload_cmd\"`\n\tSrc           string\n\tStageFile     *os.File\n\tUid           int\n\tfuncMap       map[string]interface{}\n\tlastIndex     uint64\n\tkeepStageFile bool\n\tnoop          bool\n\tstore         memkv.Store\n\tstoreClient   backends.StoreClient\n\tsyncOnly      bool\n\tPGPPrivateKey []byte\n}\n\nvar ErrEmptySrc = errors.New(\"empty src template\")\n\n// NewTemplateResource creates a TemplateResource.\nfunc NewTemplateResource(path string, config Config) (*TemplateResource, error) {\n\tif config.StoreClient == nil {\n\t\treturn nil, errors.New(\"A valid StoreClient is required.\")\n\t}\n\n\t// Set the default uid and gid so we can determine if it was\n\t// unset from configuration.\n\ttc := &TemplateResourceConfig{TemplateResource{Uid: -1, Gid: -1}}\n\n\tlog.Debug(\"Loading template resource from \" + path)\n\t_, err := toml.DecodeFile(path, &tc)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Cannot process template resource %s - %s\", path, err.Error())\n\t}\n\n\ttr := tc.TemplateResource\n\ttr.keepStageFile = config.KeepStageFile\n\ttr.noop = config.Noop\n\ttr.storeClient = config.StoreClient\n\ttr.funcMap = newFuncMap()\n\ttr.store = memkv.New()\n\ttr.syncOnly = config.SyncOnly\n\taddFuncs(tr.funcMap, tr.store.FuncMap)\n\n\tif config.Prefix != \"\" {\n\t\ttr.Prefix = config.Prefix\n\t}\n\n\tif !strings.HasPrefix(tr.Prefix, \"/\") {\n\t\ttr.Prefix = \"/\" + tr.Prefix\n\t}\n\n\tif tr.Src == \"\" {\n\t\treturn nil, ErrEmptySrc\n\t}\n\n\tif tr.Uid == -1 {\n\t\ttr.Uid = os.Geteuid()\n\t}\n\n\tif tr.Gid == -1 {\n\t\ttr.Gid = os.Getegid()\n\t}\n\n\ttr.Src = filepath.Join(config.TemplateDir, tr.Src)\n\treturn &tr, nil\n}\n\n// setVars sets the Vars for template resource.\nfunc (t *TemplateResource) setVars() error {\n\tvar err error\n\tlog.Debug(\"Retrieving keys from store\")\n\tlog.Debug(\"Key prefix set to \" + t.Prefix)\n\n\tresult, err := t.storeClient.GetValues(util.AppendPrefix(t.Prefix, t.Keys))\n\tif err != nil {\n\t\treturn err\n\t}\n\tlog.Debug(\"Got the following map from store: %v\", result)\n\n\tt.store.Purge()\n\n\tfor k, v := range result {\n\t\tt.store.Set(path.Join(\"/\", strings.TrimPrefix(k, t.Prefix)), v)\n\t}\n\treturn nil\n}\n\n// createStageFile stages the src configuration file by processing the src\n// template and setting the desired owner, group, and mode. It also sets the\n// StageFile for the template resource.\n// It returns an error if any.\nfunc (t *TemplateResource) createStageFile() error {\n\tlog.Debug(\"Using source template \" + t.Src)\n\n\tif !util.IsFileExist(t.Src) {\n\t\treturn errors.New(\"Missing template: \" + t.Src)\n\t}\n\n\tlog.Debug(\"Compiling source template \" + t.Src)\n\n\ttmpl, err := template.New(filepath.Base(t.Src)).Funcs(t.funcMap).ParseFiles(t.Src)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Unable to process template %s, %s\", t.Src, err)\n\t}\n\n\t// create TempFile in Dest directory to avoid cross-filesystem issues\n\ttemp, err := ioutil.TempFile(filepath.Dir(t.Dest), \".\"+filepath.Base(t.Dest))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err = tmpl.Execute(temp, nil); err != nil {\n\t\ttemp.Close()\n\t\tos.Remove(temp.Name())\n\t\treturn err\n\t}\n\tdefer temp.Close()\n\n\t// Set the owner, group, and mode on the stage file now to make it easier to\n\t// compare against the destination configuration file later.\n\tos.Chmod(temp.Name(), t.FileMode)\n\tos.Chown(temp.Name(), t.Uid, t.Gid)\n\tt.StageFile = temp\n\treturn nil\n}\n\n// sync compares the staged and dest config files and attempts to sync them\n// if they differ. sync will run a config check command if set before\n// overwriting the target config file. Finally, sync will run a reload command\n// if set to have the application or service pick up the changes.\n// It returns an error if any.\nfunc (t *TemplateResource) sync() error {\n\tstaged := t.StageFile.Name()\n\tif t.keepStageFile {\n\t\tlog.Info(\"Keeping staged file: \" + staged)\n\t} else {\n\t\tdefer os.Remove(staged)\n\t}\n\n\tlog.Debug(\"Comparing candidate config to \" + t.Dest)\n\tok, err := util.IsConfigChanged(staged, t.Dest)\n\tif err != nil {\n\t\tlog.Error(err.Error())\n\t}\n\tif t.noop {\n\t\tlog.Warning(\"Noop mode enabled. \" + t.Dest + \" will not be modified\")\n\t\treturn nil\n\t}\n\tif ok {\n\t\tlog.Info(\"Target config \" + t.Dest + \" out of sync\")\n\t\tif !t.syncOnly && t.CheckCmd != \"\" {\n\t\t\tif err := t.check(); err != nil {\n\t\t\t\treturn errors.New(\"Config check failed: \" + err.Error())\n\t\t\t}\n\t\t}\n\t\tlog.Debug(\"Overwriting target config \" + t.Dest)\n\t\terr := os.Rename(staged, t.Dest)\n\t\tif err != nil {\n\t\t\tif strings.Contains(err.Error(), \"device or resource busy\") {\n\t\t\t\tlog.Debug(\"Rename failed - target is likely a mount. Trying to write instead\")\n\t\t\t\t// try to open the file and write to it\n\t\t\t\tvar contents []byte\n\t\t\t\tvar rerr error\n\t\t\t\tcontents, rerr = ioutil.ReadFile(staged)\n\t\t\t\tif rerr != nil {\n\t\t\t\t\treturn rerr\n\t\t\t\t}\n\t\t\t\terr := ioutil.WriteFile(t.Dest, contents, t.FileMode)\n\t\t\t\t// make sure owner and group match the temp file, in case the file was created with WriteFile\n\t\t\t\tos.Chown(t.Dest, t.Uid, t.Gid)\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\treturn err\n\t\t\t}\n\t\t}\n\t\tif !t.syncOnly && t.ReloadCmd != \"\" {\n\t\t\tif err := t.reload(); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tlog.Info(\"Target config \" + t.Dest + \" has been updated\")\n\t} else {\n\t\tlog.Debug(\"Target config \" + t.Dest + \" in sync\")\n\t}\n\treturn nil\n}\n\n// check executes the check command to validate the staged config file. The\n// command is modified so that any references to src template are substituted\n// with a string representing the full path of the staged file. This allows the\n// check to be run on the staged file before overwriting the destination config\n// file.\n// It returns nil if the check command returns 0 and there are no other errors.\nfunc (t *TemplateResource) check() error {\n\tvar cmdBuffer bytes.Buffer\n\tdata := make(map[string]string)\n\tdata[\"src\"] = t.StageFile.Name()\n\ttmpl, err := template.New(\"checkcmd\").Parse(t.CheckCmd)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := tmpl.Execute(&cmdBuffer, data); err != nil {\n\t\treturn err\n\t}\n\treturn runCommand(cmdBuffer.String())\n}\n\n// reload executes the reload command.\n// It returns nil if the reload command returns 0.\nfunc (t *TemplateResource) reload() error {\n\treturn runCommand(t.ReloadCmd)\n}\n\n// runCommand is a shared function used by check and reload\n// to run the given command and log its output.\n// It returns nil if the given cmd returns 0.\n// The command can be run on unix and windows.\nfunc runCommand(cmd string) error {\n\tlog.Debug(\"Running \" + cmd)\n\tvar c *exec.Cmd\n\tif runtime.GOOS == \"windows\" {\n\t\tc = exec.Command(\"cmd\", \"/C\", cmd)\n\t} else {\n\t\tc = exec.Command(\"/bin/sh\", \"-c\", cmd)\n\t}\n\n\toutput, err := c.CombinedOutput()\n\tif err != nil {\n\t\tlog.Error(fmt.Sprintf(\"%q\", string(output)))\n\t\treturn err\n\t}\n\tlog.Debug(fmt.Sprintf(\"%q\", string(output)))\n\treturn nil\n}\n\n// process is a convenience function that wraps calls to the three main tasks\n// required to keep local configuration files in sync. First we gather vars\n// from the store, then we stage a candidate configuration file, and finally sync\n// things up.\n// It returns an error if any.\nfunc (t *TemplateResource) process() error {\n\tif err := t.setFileMode(); err != nil {\n\t\treturn err\n\t}\n\tif err := t.setVars(); err != nil {\n\t\treturn err\n\t}\n\tif err := t.createStageFile(); err != nil {\n\t\treturn err\n\t}\n\tif err := t.sync(); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// setFileMode sets the FileMode.\nfunc (t *TemplateResource) setFileMode() error {\n\tif t.Mode == \"\" {\n\t\tif !util.IsFileExist(t.Dest) {\n\t\t\tt.FileMode = 0644\n\t\t} else {\n\t\t\tfi, err := os.Stat(t.Dest)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tt.FileMode = fi.Mode()\n\t\t}\n\t} else {\n\t\tmode, err := strconv.ParseUint(t.Mode, 0, 32)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tt.FileMode = os.FileMode(mode)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "resource/template/resource_test.go",
    "content": "package template\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\t\"text/template\"\n\n\t\"github.com/kelseyhightower/confd/backends/env\"\n\t\"github.com/kelseyhightower/confd/log\"\n)\n\n// createTempDirs is a helper function which creates temporary directories\n// required by confd. createTempDirs returns the path name representing the\n// confd confDir.\n// It returns an error if any.\nfunc createTempDirs() (string, error) {\n\tconfDir, err := ioutil.TempDir(\"\", \"\")\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\terr = os.Mkdir(filepath.Join(confDir, \"templates\"), 0755)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\terr = os.Mkdir(filepath.Join(confDir, \"conf.d\"), 0755)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn confDir, nil\n}\n\nvar templateResourceConfigTmpl = `\n[template]\nsrc = \"{{.src}}\"\ndest = \"{{.dest}}\"\nkeys = [\n  \"foo\",\n]\n`\n\nfunc TestProcessTemplateResources(t *testing.T) {\n\tlog.SetLevel(\"warn\")\n\t// Setup temporary conf, config, and template directories.\n\ttempConfDir, err := createTempDirs()\n\tif err != nil {\n\t\tt.Errorf(\"Failed to create temp dirs: %s\", err.Error())\n\t}\n\tdefer os.RemoveAll(tempConfDir)\n\n\t// Create the src template.\n\tsrcTemplateFile := filepath.Join(tempConfDir, \"templates\", \"foo.tmpl\")\n\terr = ioutil.WriteFile(srcTemplateFile, []byte(`foo = {{getv \"/foo\"}}`), 0644)\n\tif err != nil {\n\t\tt.Error(err.Error())\n\t}\n\n\t// Create the dest.\n\tdestFile, err := ioutil.TempFile(\"\", \"\")\n\tif err != nil {\n\t\tt.Errorf(\"Failed to create destFile: %s\", err.Error())\n\t}\n\tdefer os.Remove(destFile.Name())\n\n\t// Create the template resource configuration file.\n\ttemplateResourcePath := filepath.Join(tempConfDir, \"conf.d\", \"foo.toml\")\n\ttemplateResourceFile, err := os.Create(templateResourcePath)\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\ttmpl, err := template.New(\"templateResourceConfig\").Parse(templateResourceConfigTmpl)\n\tif err != nil {\n\t\tt.Errorf(\"Unable to parse template resource template: %s\", err.Error())\n\t}\n\tdata := make(map[string]string)\n\tdata[\"src\"] = \"foo.tmpl\"\n\tdata[\"dest\"] = destFile.Name()\n\terr = tmpl.Execute(templateResourceFile, data)\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\n\tos.Setenv(\"FOO\", \"bar\")\n\tstoreClient, err := env.NewEnvClient()\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\tc := Config{\n\t\tConfDir:     tempConfDir,\n\t\tConfigDir:   filepath.Join(tempConfDir, \"conf.d\"),\n\t\tStoreClient: storeClient,\n\t\tTemplateDir: filepath.Join(tempConfDir, \"templates\"),\n\t}\n\t// Process the test template resource.\n\terr = Process(c)\n\tif err != nil {\n\t\tt.Error(err.Error())\n\t}\n\t// Verify the results.\n\texpected := \"foo = bar\"\n\tresults, err := ioutil.ReadFile(destFile.Name())\n\tif err != nil {\n\t\tt.Error(err.Error())\n\t}\n\tif string(results) != expected {\n\t\tt.Errorf(\"Expected contents of dest == '%s', got %s\", expected, string(results))\n\t}\n}\n"
  },
  {
    "path": "resource/template/template_funcs.go",
    "content": "package template\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"os\"\n\t\"path\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\tutil \"github.com/kelseyhightower/confd/util\"\n\t\"github.com/kelseyhightower/memkv\"\n)\n\nfunc newFuncMap() map[string]interface{} {\n\tm := make(map[string]interface{})\n\tm[\"base\"] = path.Base\n\tm[\"split\"] = strings.Split\n\tm[\"json\"] = UnmarshalJsonObject\n\tm[\"jsonArray\"] = UnmarshalJsonArray\n\tm[\"dir\"] = path.Dir\n\tm[\"map\"] = CreateMap\n\tm[\"getenv\"] = Getenv\n\tm[\"join\"] = strings.Join\n\tm[\"datetime\"] = time.Now\n\tm[\"toUpper\"] = strings.ToUpper\n\tm[\"toLower\"] = strings.ToLower\n\tm[\"contains\"] = strings.Contains\n\tm[\"replace\"] = strings.Replace\n\tm[\"trimSuffix\"] = strings.TrimSuffix\n\tm[\"lookupIP\"] = LookupIP\n\tm[\"lookupIPV4\"] = LookupIPV4\n\tm[\"lookupIPV6\"] = LookupIPV6\n\tm[\"lookupSRV\"] = LookupSRV\n\tm[\"fileExists\"] = util.IsFileExist\n\tm[\"base64Encode\"] = Base64Encode\n\tm[\"base64Decode\"] = Base64Decode\n\tm[\"parseBool\"] = strconv.ParseBool\n\tm[\"reverse\"] = Reverse\n\tm[\"sortByLength\"] = SortByLength\n\tm[\"sortKVByLength\"] = SortKVByLength\n\tm[\"add\"] = func(a, b int) int { return a + b }\n\tm[\"sub\"] = func(a, b int) int { return a - b }\n\tm[\"div\"] = func(a, b int) int { return a / b }\n\tm[\"mod\"] = func(a, b int) int { return a % b }\n\tm[\"mul\"] = func(a, b int) int { return a * b }\n\tm[\"seq\"] = Seq\n\tm[\"atoi\"] = strconv.Atoi\n\treturn m\n}\n\nfunc addFuncs(out, in map[string]interface{}) {\n\tfor name, fn := range in {\n\t\tout[name] = fn\n\t}\n}\n\n// Seq creates a sequence of integers. It's named and used as GNU's seq.\n// Seq takes the first and the last element as arguments. So Seq(3, 5) will generate [3,4,5]\nfunc Seq(first, last int) []int {\n\tvar arr []int\n\tfor i := first; i <= last; i++ {\n\t\tarr = append(arr, i)\n\t}\n\treturn arr\n}\n\ntype byLengthKV []memkv.KVPair\n\nfunc (s byLengthKV) Len() int {\n\treturn len(s)\n}\n\nfunc (s byLengthKV) Swap(i, j int) {\n\ts[i], s[j] = s[j], s[i]\n}\n\nfunc (s byLengthKV) Less(i, j int) bool {\n\treturn len(s[i].Key) < len(s[j].Key)\n}\n\nfunc SortKVByLength(values []memkv.KVPair) []memkv.KVPair {\n\tsort.Sort(byLengthKV(values))\n\treturn values\n}\n\ntype byLength []string\n\nfunc (s byLength) Len() int {\n\treturn len(s)\n}\nfunc (s byLength) Swap(i, j int) {\n\ts[i], s[j] = s[j], s[i]\n}\nfunc (s byLength) Less(i, j int) bool {\n\treturn len(s[i]) < len(s[j])\n}\n\nfunc SortByLength(values []string) []string {\n\tsort.Sort(byLength(values))\n\treturn values\n}\n\n//Reverse returns the array in reversed order\n//works with []string and []KVPair\nfunc Reverse(values interface{}) interface{} {\n\tswitch values.(type) {\n\tcase []string:\n\t\tv := values.([]string)\n\t\tfor left, right := 0, len(v)-1; left < right; left, right = left+1, right-1 {\n\t\t\tv[left], v[right] = v[right], v[left]\n\t\t}\n\tcase []memkv.KVPair:\n\t\tv := values.([]memkv.KVPair)\n\t\tfor left, right := 0, len(v)-1; left < right; left, right = left+1, right-1 {\n\t\t\tv[left], v[right] = v[right], v[left]\n\t\t}\n\t}\n\treturn values\n}\n\n// Getenv retrieves the value of the environment variable named by the key.\n// It returns the value, which will the default value if the variable is not present.\n// If no default value was given - returns \"\".\nfunc Getenv(key string, v ...string) string {\n\tdefaultValue := \"\"\n\tif len(v) > 0 {\n\t\tdefaultValue = v[0]\n\t}\n\n\tvalue := os.Getenv(key)\n\tif value == \"\" {\n\t\treturn defaultValue\n\t}\n\treturn value\n}\n\n// CreateMap creates a key-value map of string -> interface{}\n// The i'th is the key and the i+1 is the value\nfunc CreateMap(values ...interface{}) (map[string]interface{}, error) {\n\tif len(values)%2 != 0 {\n\t\treturn nil, errors.New(\"invalid map call\")\n\t}\n\tdict := make(map[string]interface{}, len(values)/2)\n\tfor i := 0; i < len(values); i += 2 {\n\t\tkey, ok := values[i].(string)\n\t\tif !ok {\n\t\t\treturn nil, errors.New(\"map keys must be strings\")\n\t\t}\n\t\tdict[key] = values[i+1]\n\t}\n\treturn dict, nil\n}\n\nfunc UnmarshalJsonObject(data string) (map[string]interface{}, error) {\n\tvar ret map[string]interface{}\n\terr := json.Unmarshal([]byte(data), &ret)\n\treturn ret, err\n}\n\nfunc UnmarshalJsonArray(data string) ([]interface{}, error) {\n\tvar ret []interface{}\n\terr := json.Unmarshal([]byte(data), &ret)\n\treturn ret, err\n}\n\nfunc LookupIP(data string) []string {\n\tips, err := net.LookupIP(data)\n\tif err != nil {\n\t\treturn nil\n\t}\n\t// \"Cast\" IPs into strings and sort the array\n\tipStrings := make([]string, len(ips))\n\n\tfor i, ip := range ips {\n\t\tipStrings[i] = ip.String()\n\t}\n\tsort.Strings(ipStrings)\n\treturn ipStrings\n}\n\nfunc LookupIPV6(data string) []string {\n\tvar addresses []string\n\tfor _, ip := range LookupIP(data) {\n\t\tif strings.Contains(ip, \":\") {\n\t\t\taddresses = append(addresses, ip)\n\t\t}\n\t}\n\treturn addresses\n}\n\nfunc LookupIPV4(data string) []string {\n\tvar addresses []string\n\tfor _, ip := range LookupIP(data) {\n\t\tif strings.Contains(ip, \".\") {\n\t\t\taddresses = append(addresses, ip)\n\t\t}\n\t}\n\treturn addresses\n}\n\ntype sortSRV []*net.SRV\n\nfunc (s sortSRV) Len() int {\n\treturn len(s)\n}\n\nfunc (s sortSRV) Swap(i, j int) {\n\ts[i], s[j] = s[j], s[i]\n}\n\nfunc (s sortSRV) Less(i, j int) bool {\n\tstr1 := fmt.Sprintf(\"%s%d%d%d\", s[i].Target, s[i].Port, s[i].Priority, s[i].Weight)\n\tstr2 := fmt.Sprintf(\"%s%d%d%d\", s[j].Target, s[j].Port, s[j].Priority, s[j].Weight)\n\treturn str1 < str2\n}\n\nfunc LookupSRV(service, proto, name string) []*net.SRV {\n\t_, addrs, err := net.LookupSRV(service, proto, name)\n\tif err != nil {\n\t\treturn []*net.SRV{}\n\t}\n\tsort.Sort(sortSRV(addrs))\n\treturn addrs\n}\n\nfunc Base64Encode(data string) string {\n\treturn base64.StdEncoding.EncodeToString([]byte(data))\n}\n\nfunc Base64Decode(data string) (string, error) {\n\ts, err := base64.StdEncoding.DecodeString(data)\n\treturn string(s), err\n}\n"
  },
  {
    "path": "resource/template/template_test.go",
    "content": "package template\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/kelseyhightower/confd/backends\"\n)\n\nconst (\n\ttomlFilePath = \"test/confd/config.toml\"\n\ttmplFilePath = \"test/templates/test.conf.tmpl\"\n)\n\ntype templateTest struct {\n\tdesc        string                  // description of the test (for helpful errors)\n\ttoml        string                  // toml file contents\n\ttmpl        string                  // template file contents\n\texpected    interface{}             // expected generated file contents\n\tupdateStore func(*TemplateResource) // function for setting values in store\n}\n\n// templateTests is an array of templateTest structs, each representing a test of\n// some aspect of template processing. When the input tmpl and toml files are\n// processed, they should produce a config file matching expected.\nvar templateTests = []templateTest{\n\n\ttemplateTest{\n\t\tdesc: \"base, get test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/key\",\n]\n`,\n\t\ttmpl: `\n{{with get \"/test/key\"}}\nkey: {{base .Key}}\nval: {{.Value}}\n{{end}}\n`,\n\t\texpected: `\n\nkey: key\nval: abc\n\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/key\", \"abc\")\n\t\t},\n\t},\n\n\ttemplateTest{\n\t\tdesc: \"gets test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/user\",\n    \"/test/pass\",\n    \"/nada/url\",\n]\n`,\n\t\ttmpl: `\n{{range gets \"/test/*\"}}\nkey: {{.Key}}\nval: {{.Value}}\n{{end}}\n`,\n\t\texpected: `\n\nkey: /test/pass\nval: abc\n\nkey: /test/user\nval: mary\n\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/user\", \"mary\")\n\t\t\ttr.store.Set(\"/test/pass\", \"abc\")\n\t\t\ttr.store.Set(\"/nada/url\", \"url\")\n\t\t},\n\t},\n\n\ttemplateTest{\n\t\tdesc: \"getv test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/url\",\n    \"/test/user\",\n]\n`,\n\t\ttmpl: `\nurl = {{getv \"/test/url\"}}\nuser = {{getv \"/test/user\"}}\n`,\n\t\texpected: `\nurl = http://www.abc.com\nuser = bob\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/url\", \"http://www.abc.com\")\n\t\t\ttr.store.Set(\"/test/user\", \"bob\")\n\t\t},\n\t},\n\n\ttemplateTest{\n\t\tdesc: \"getvs test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/user\",\n    \"/test/pass\",\n    \"/nada/url\",\n]\n`,\n\t\ttmpl: `\n{{range getvs \"/test/*\"}}\nval: {{.}}\n{{end}}\n`,\n\t\texpected: `\n\nval: abc\n\nval: mary\n\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/user\", \"mary\")\n\t\t\ttr.store.Set(\"/test/pass\", \"abc\")\n\t\t\ttr.store.Set(\"/nada/url\", \"url\")\n\t\t},\n\t},\n\n\ttemplateTest{\n\t\tdesc: \"split test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/data\",\n]\n`,\n\t\ttmpl: `\n{{$data := split (getv \"/test/data\") \":\"}}\nf: {{index $data 0}}\nbr: {{index $data 1}}\nbz: {{index $data 2}}\n`,\n\t\texpected: `\n\nf: foo\nbr: bar\nbz: baz\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/data\", \"foo:bar:baz\")\n\t\t},\n\t},\n\n\ttemplateTest{\n\t\tdesc: \"toUpper test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/data/\",\n]\n`,\n\t\ttmpl: `\n{{$data := toUpper (getv \"/test/data\") }}\nkey: {{$data}}\n`,\n\t\texpected: `\n\nkey: VALUE\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/data\", `Value`)\n\t\t},\n\t},\n\n\ttemplateTest{\n\t\tdesc: \"toLower test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/data/\",\n]\n`,\n\t\ttmpl: `\n{{$data := toLower (getv \"/test/data\") }}\nkey: {{$data}}\n`,\n\t\texpected: `\n\nkey: value\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/data\", `Value`)\n\t\t},\n\t},\n\n\ttemplateTest{\n\t\tdesc: \"json test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/data/\",\n]\n`,\n\t\ttmpl: `\n{{range getvs \"/test/data/*\"}}\n{{$data := json .}}\nid: {{$data.Id}}\nip: {{$data.IP}}\n{{end}}\n`,\n\t\texpected: `\n\n\nid: host1\nip: 192.168.10.11\n\n\nid: host2\nip: 192.168.10.12\n\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/data/1\", `{\"Id\":\"host1\", \"IP\":\"192.168.10.11\"}`)\n\t\t\ttr.store.Set(\"/test/data/2\", `{\"Id\":\"host2\", \"IP\":\"192.168.10.12\"}`)\n\t\t},\n\t},\n\n\ttemplateTest{\n\t\tdesc: \"jsonArray test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/data/\",\n]\n`,\n\t\ttmpl: `\n{{range jsonArray (getv \"/test/data/\")}}\nnum: {{.}}\n{{end}}\n`,\n\t\texpected: `\n\nnum: 1\n\nnum: 2\n\nnum: 3\n\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/data/\", `[\"1\", \"2\", \"3\"]`)\n\t\t},\n\t},\n\n\ttemplateTest{\n\t\tdesc: \"ls test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/data/abc\",\n    \"/test/data/def\",\n    \"/test/data/ghi\",\n]\n`,\n\t\ttmpl: `\n{{range ls \"/test/data\"}}\nvalue: {{.}}\n{{end}}\n`,\n\t\texpected: `\n\nvalue: abc\n\nvalue: def\n\nvalue: ghi\n\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/data/abc\", \"123\")\n\t\t\ttr.store.Set(\"/test/data/def\", \"456\")\n\t\t\ttr.store.Set(\"/test/data/ghi\", \"789\")\n\t\t},\n\t},\n\n\ttemplateTest{\n\t\tdesc: \"lsdir test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/data/abc\",\n    \"/test/data/def/ghi\",\n    \"/test/data/jkl/mno\",\n]\n`,\n\t\ttmpl: `\n{{range lsdir \"/test/data\"}}\nvalue: {{.}}\n{{end}}\n`,\n\t\texpected: `\n\nvalue: def\n\nvalue: jkl\n\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/data/abc\", \"123\")\n\t\t\ttr.store.Set(\"/test/data/def/ghi\", \"456\")\n\t\t\ttr.store.Set(\"/test/data/jkl/mno\", \"789\")\n\t\t},\n\t},\n\ttemplateTest{\n\t\tdesc: \"dir test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/data\",\n    \"/test/data/abc\",\n]\n`,\n\t\ttmpl: `\n{{with dir \"/test/data/abc\"}}\ndir: {{.}}\n{{end}}\n`,\n\t\texpected: `\n\ndir: /test/data\n\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/data\", \"parent\")\n\t\t\ttr.store.Set(\"/test/data/def\", \"child\")\n\t\t},\n\t},\n\ttemplateTest{\n\t\tdesc: \"ipv4 lookup test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/data\",\n    \"/test/data/abc\",\n]\n`,\n\t\ttmpl: `\n{{range lookupIPV4 \"localhost\"}}\nip: {{.}}\n{{end}}\n`,\n\t\texpected: `\n\nip: 127.0.0.1\n\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/data\", \"parent\")\n\t\t\ttr.store.Set(\"/test/data/def\", \"child\")\n\t\t},\n\t},\n\ttemplateTest{\n\t\tdesc: \"ipv6 lookup test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/data\",\n    \"/test/data/abc\",\n]\n`,\n\t\ttmpl: `\n{{range lookupIPV6 \"localhost\"}}\nip: {{.}}\n{{end}}\n`,\n\t\texpected: [...]string{\n\t\t\t`\nip: ::1\n\n`,\n\t\t\t`\n\n`,\n\t\t},\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/data\", \"parent\")\n\t\t\ttr.store.Set(\"/test/data/def\", \"child\")\n\t\t},\n\t},\n\ttemplateTest{\n\t\tdesc: \"ip lookup test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/data\",\n    \"/test/data/abc\",\n]\n`,\n\t\ttmpl: `\n{{range lookupIP \"localhost\"}}\nip: {{.}}\n{{end}}\n`,\n\t\texpected: [...]string{\n\t\t\t`\n\nip: 127.0.0.1\n\n`,\n\t\t\t`\n\nip: 127.0.0.1\n\nip: ::1\n\n`,\n\t\t\t`\n\nip: ::1\n\n`,\n\t\t},\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/data\", \"parent\")\n\t\t\ttr.store.Set(\"/test/data/def\", \"child\")\n\t\t},\n\t},\n\ttemplateTest{\n\t\tdesc: \"base64Encode test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/data/\",\n]\n`,\n\t\ttmpl: `\n{{$data := base64Encode (getv \"/test/data\") }}\nkey: {{$data}}\n`,\n\t\texpected: `\n\nkey: VmFsdWU=\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/data\", `Value`)\n\t\t},\n\t},\n\ttemplateTest{\n\t\tdesc: \"base64Decode test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/data/\",\n]\n`,\n\t\ttmpl: `\n{{$data := base64Decode (getv \"/test/data\") }}\nkey: {{$data}}\n`,\n\t\texpected: `\n\nkey: Value\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/data\", `VmFsdWU=`)\n\t\t},\n\t}, templateTest{\n\t\tdesc: \"seq test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\n`,\n\t\ttmpl: `\n{{ seq 1 3 }}\n`,\n\t\texpected: `\n[1 2 3]\n`,\n\t\tupdateStore: func(tr *TemplateResource) {},\n\t}, templateTest{\n\t\tdesc: \"atoi test\",\n\t\ttoml: `\n[template]\nsrc = \"test.conf.tmpl\"\ndest = \"./tmp/test.conf\"\nkeys = [\n    \"/test/count/\",\n]\n`,\n\t\ttmpl: `\n{{ seq 1 (atoi (getv \"/test/count\")) }}\n`,\n\t\texpected: `\n[1 2 3]\n`,\n\t\tupdateStore: func(tr *TemplateResource) {\n\t\t\ttr.store.Set(\"/test/count\", \"3\")\n\t\t},\n\t},\n}\n\n// TestTemplates runs all tests in templateTests\nfunc TestTemplates(t *testing.T) {\n\tfor _, tt := range templateTests {\n\t\tExecuteTestTemplate(tt, t)\n\t}\n}\n\n// ExectureTestTemplate builds a TemplateResource based on the toml and tmpl files described\n// in the templateTest, writes a config file, and compares the result against the expectation\n// in the templateTest.\nfunc ExecuteTestTemplate(tt templateTest, t *testing.T) {\n\tsetupDirectoriesAndFiles(tt, t)\n\tdefer os.RemoveAll(\"test\")\n\n\ttr, err := templateResource()\n\tif err != nil {\n\t\tt.Errorf(tt.desc + \": failed to create TemplateResource: \" + err.Error())\n\t}\n\n\ttt.updateStore(tr)\n\n\tif err := tr.createStageFile(); err != nil {\n\t\tt.Errorf(tt.desc + \": failed createStageFile: \" + err.Error())\n\t}\n\n\tactual, err := ioutil.ReadFile(tr.StageFile.Name())\n\tif err != nil {\n\t\tt.Errorf(tt.desc + \": failed to read StageFile: \" + err.Error())\n\t}\n\tswitch tt.expected.(type) {\n\tcase string:\n\t\tif string(actual) != tt.expected.(string) {\n\t\t\tt.Errorf(fmt.Sprintf(\"%v: invalid StageFile. Expected %v, actual %v\", tt.desc, tt.expected, string(actual)))\n\t\t}\n\tcase []string:\n\t\tfor _, expected := range tt.expected.([]string) {\n\t\t\tif string(actual) == expected {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tt.Errorf(fmt.Sprintf(\"%v: invalid StageFile. Possible expected values %v, actual %v\", tt.desc, tt.expected, string(actual)))\n\t}\n}\n\n// setUpDirectoriesAndFiles creates folders for the toml, tmpl, and output files and\n// creates the toml and tmpl files as specified in the templateTest struct.\nfunc setupDirectoriesAndFiles(tt templateTest, t *testing.T) {\n\t// create confd directory and toml file\n\tif err := os.MkdirAll(\"./test/confd\", os.ModePerm); err != nil {\n\t\tt.Errorf(tt.desc + \": failed to created confd directory: \" + err.Error())\n\t}\n\tif err := ioutil.WriteFile(tomlFilePath, []byte(tt.toml), os.ModePerm); err != nil {\n\t\tt.Errorf(tt.desc + \": failed to write toml file: \" + err.Error())\n\t}\n\t// create templates directory and tmpl file\n\tif err := os.MkdirAll(\"./test/templates\", os.ModePerm); err != nil {\n\t\tt.Errorf(tt.desc + \": failed to create template directory: \" + err.Error())\n\t}\n\tif err := ioutil.WriteFile(tmplFilePath, []byte(tt.tmpl), os.ModePerm); err != nil {\n\t\tt.Errorf(tt.desc + \": failed to write toml file: \" + err.Error())\n\t}\n\t// create tmp directory for output\n\tif err := os.MkdirAll(\"./test/tmp\", os.ModePerm); err != nil {\n\t\tt.Errorf(tt.desc + \": failed to create tmp directory: \" + err.Error())\n\t}\n}\n\n// templateResource creates a templateResource for creating a config file\nfunc templateResource() (*TemplateResource, error) {\n\tbackendConf := backends.Config{\n\t\tBackend: \"env\"}\n\tclient, err := backends.New(backendConf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tconfig := Config{\n\t\tStoreClient: client, // not used but must be set\n\t\tTemplateDir: \"./test/templates\",\n\t}\n\n\ttr, err := NewTemplateResource(tomlFilePath, config)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ttr.Dest = \"./test/tmp/test.conf\"\n\ttr.FileMode = 0666\n\treturn tr, nil\n}\n"
  },
  {
    "path": "util/filestat_posix.go",
    "content": "// +build !windows\n\npackage util\n\nimport (\n\t\"crypto/md5\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"syscall\"\n)\n\n// filestat return a FileInfo describing the named file.\nfunc FileStat(name string) (fi FileInfo, err error) {\n\tif IsFileExist(name) {\n\t\tf, err := os.Open(name)\n\t\tif err != nil {\n\t\t\treturn fi, err\n\t\t}\n\t\tdefer f.Close()\n\t\tstats, _ := f.Stat()\n\t\tfi.Uid = stats.Sys().(*syscall.Stat_t).Uid\n\t\tfi.Gid = stats.Sys().(*syscall.Stat_t).Gid\n\t\tfi.Mode = stats.Mode()\n\t\th := md5.New()\n\t\tio.Copy(h, f)\n\t\tfi.Md5 = fmt.Sprintf(\"%x\", h.Sum(nil))\n\t\treturn fi, nil\n\t}\n\treturn fi, errors.New(\"File not found\")\n}\n"
  },
  {
    "path": "util/filestat_windows.go",
    "content": "package util\n\nimport (\n\t\"crypto/md5\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n)\n\n// filestat return a FileInfo describing the named file.\nfunc FileStat(name string) (fi FileInfo, err error) {\n\tif IsFileExist(name) {\n\t\tf, err := os.Open(name)\n\t\tif err != nil {\n\t\t\treturn fi, err\n\t\t}\n\t\tdefer f.Close()\n\t\tstats, _ := f.Stat()\n\t\tfi.Mode = stats.Mode()\n\t\th := md5.New()\n\t\tio.Copy(h, f)\n\t\tfi.Md5 = fmt.Sprintf(\"%x\", h.Sum(nil))\n\t\treturn fi, nil\n\t}\n\treturn fi, errors.New(\"File not found\")\n}\n"
  },
  {
    "path": "util/util.go",
    "content": "package util\n\nimport (\n\t\"fmt\"\n\t\"github.com/kelseyhightower/confd/log\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n)\n\n// Nodes is a custom flag Var representing a list of etcd nodes.\ntype Nodes []string\n\n// String returns the string representation of a node var.\nfunc (n *Nodes) String() string {\n\treturn fmt.Sprintf(\"%s\", *n)\n}\n\n// Set appends the node to the etcd node list.\nfunc (n *Nodes) Set(node string) error {\n\t*n = append(*n, node)\n\treturn nil\n}\n\n// fileInfo describes a configuration file and is returned by fileStat.\ntype FileInfo struct {\n\tUid  uint32\n\tGid  uint32\n\tMode os.FileMode\n\tMd5  string\n}\n\nfunc AppendPrefix(prefix string, keys []string) []string {\n\ts := make([]string, len(keys))\n\tfor i, k := range keys {\n\t\ts[i] = path.Join(prefix, k)\n\t}\n\treturn s\n}\n\n// isFileExist reports whether path exits.\nfunc IsFileExist(fpath string) bool {\n\tif _, err := os.Stat(fpath); os.IsNotExist(err) {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// IsConfigChanged reports whether src and dest config files are equal.\n// Two config files are equal when they have the same file contents and\n// Unix permissions. The owner, group, and mode must match.\n// It return false in other cases.\nfunc IsConfigChanged(src, dest string) (bool, error) {\n\tif !IsFileExist(dest) {\n\t\treturn true, nil\n\t}\n\td, err := FileStat(dest)\n\tif err != nil {\n\t\treturn true, err\n\t}\n\ts, err := FileStat(src)\n\tif err != nil {\n\t\treturn true, err\n\t}\n\tif d.Uid != s.Uid {\n\t\tlog.Info(fmt.Sprintf(\"%s has UID %d should be %d\", dest, d.Uid, s.Uid))\n\t}\n\tif d.Gid != s.Gid {\n\t\tlog.Info(fmt.Sprintf(\"%s has GID %d should be %d\", dest, d.Gid, s.Gid))\n\t}\n\tif d.Mode != s.Mode {\n\t\tlog.Info(fmt.Sprintf(\"%s has mode %s should be %s\", dest, os.FileMode(d.Mode), os.FileMode(s.Mode)))\n\t}\n\tif d.Md5 != s.Md5 {\n\t\tlog.Info(fmt.Sprintf(\"%s has md5sum %s should be %s\", dest, d.Md5, s.Md5))\n\t}\n\tif d.Uid != s.Uid || d.Gid != s.Gid || d.Mode != s.Mode || d.Md5 != s.Md5 {\n\t\treturn true, nil\n\t}\n\treturn false, nil\n}\n\nfunc IsDirectory(path string) (bool, error) {\n\tf, err := os.Stat(path)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tswitch mode := f.Mode(); {\n\tcase mode.IsDir():\n\t\treturn true, nil\n\tcase mode.IsRegular():\n\t\treturn false, nil\n\t}\n\treturn false, nil\n}\n\nfunc RecursiveFilesLookup(root string, pattern string) ([]string, error) {\n\treturn recursiveLookup(root, pattern, false)\n}\n\nfunc RecursiveDirsLookup(root string, pattern string) ([]string, error) {\n\treturn recursiveLookup(root, pattern, true)\n}\n\nfunc recursiveLookup(root string, pattern string, dirsLookup bool) ([]string, error) {\n\tvar result []string\n\tisDir, err := IsDirectory(root)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif isDir {\n\t\terr := filepath.Walk(root, func(root string, f os.FileInfo, err error) error {\n\t\t\tmatch, err := filepath.Match(pattern, f.Name())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif match {\n\t\t\t\tisDir, err := IsDirectory(root)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif isDir && dirsLookup {\n\t\t\t\t\tresult = append(result, root)\n\t\t\t\t} else if !isDir && !dirsLookup {\n\t\t\t\t\tresult = append(result, root)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil\n\t\t})\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else {\n\t\tif !dirsLookup {\n\t\t\tresult = append(result, root)\n\t\t}\n\t}\n\treturn result, nil\n}\n"
  },
  {
    "path": "util/util_test.go",
    "content": "package util\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"testing\"\n\n\t\"github.com/kelseyhightower/confd/log\"\n)\n\n// createRecursiveDirs is a helper function which creates temporary directorie\n// has sub directories, and files with different extionname which will be used\n// fo function findrecursiveFindFiles's test case.The result looks like:\n// ├── root.other1\n// ├── root.toml\n// ├── subDir1\n// │   ├── sub1.other\n// │   ├── sub1.toml\n// │   └── sub12.toml\n// └── subDir2\n//       ├── sub2.other\n//       ├── sub2.toml\n//       ├── sub22.toml\n//       └── subSubDir\n//             ├── subsub.other\n//             ├── subsub.toml\n//             └── subsub2.toml\nfunc createDirStructure() (rootDir string, err error) {\n\tmod := os.FileMode(0755)\n\tflag := os.O_RDWR | os.O_CREATE | os.O_EXCL\n\trootDir, err = ioutil.TempDir(\"\", \"\")\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t_, err = os.OpenFile(rootDir+\"/root.toml\", flag, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t_, err = os.OpenFile(rootDir+\"/root.other1\", flag, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tsubDir := filepath.Join(rootDir, \"subDir1\")\n\terr = os.Mkdir(subDir, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t_, err = os.OpenFile(subDir+\"/sub1.toml\", flag, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t_, err = os.OpenFile(subDir+\"/sub12.toml\", flag, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t_, err = os.OpenFile(subDir+\"/sub1.other\", flag, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tsubDir2 := filepath.Join(rootDir, \"subDir2\")\n\terr = os.Mkdir(subDir2, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t_, err = os.OpenFile(subDir2+\"/sub2.toml\", flag, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t_, err = os.OpenFile(subDir2+\"/sub22.toml\", flag, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t_, err = os.OpenFile(subDir2+\"/sub2.other\", flag, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tsubSubDir := filepath.Join(subDir2, \"subSubDir\")\n\terr = os.Mkdir(subSubDir, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t_, err = os.OpenFile(subSubDir+\"/subsub.toml\", flag, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t_, err = os.OpenFile(subSubDir+\"/subsub2.toml\", flag, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t_, err = os.OpenFile(subSubDir+\"/subsub.other\", flag, mod)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn\n}\n\nfunc TestRecursiveFilesLookup(t *testing.T) {\n\tlog.SetLevel(\"warn\")\n\t// Setup temporary directories\n\trootDir, err := createDirStructure()\n\tif err != nil {\n\t\tt.Errorf(\"Failed to create temp dirs: %s\", err.Error())\n\t}\n\tdefer os.RemoveAll(rootDir)\n\tfiles, err := RecursiveFilesLookup(rootDir, \"*toml\")\n\tif err != nil {\n\t\tt.Errorf(\"Failed to run recursiveFindFiles, got error: \" + err.Error())\n\t}\n\tsort.Strings(files)\n\texceptedFiles := []string{\n\t\trootDir + \"/\" + \"root.toml\",\n\t\trootDir + \"/subDir1/\" + \"sub1.toml\",\n\t\trootDir + \"/subDir1/\" + \"sub12.toml\",\n\t\trootDir + \"/subDir2/\" + \"sub2.toml\",\n\t\trootDir + \"/subDir2/\" + \"sub22.toml\",\n\t\trootDir + \"/subDir2/subSubDir/\" + \"subsub.toml\",\n\t\trootDir + \"/subDir2/subSubDir/\" + \"subsub2.toml\",\n\t}\n\tfor i, f := range exceptedFiles {\n\t\tif f != files[i] {\n\t\t\tt.FailNow()\n\t\t}\n\t}\n}\n\nfunc TestIsConfigChangedTrue(t *testing.T) {\n\tlog.SetLevel(\"warn\")\n\tsrc, err := ioutil.TempFile(\"\", \"src\")\n\tdefer os.Remove(src.Name())\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\t_, err = src.WriteString(\"foo\")\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\tdest, err := ioutil.TempFile(\"\", \"dest\")\n\tdefer os.Remove(dest.Name())\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\t_, err = dest.WriteString(\"foo\")\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\tstatus, err := IsConfigChanged(src.Name(), dest.Name())\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\tif status == true {\n\t\tt.Errorf(\"Expected IsConfigChanged(src, dest) to be %v, got %v\", true, status)\n\t}\n}\n\nfunc TestIsConfigChangedFalse(t *testing.T) {\n\tlog.SetLevel(\"warn\")\n\tsrc, err := ioutil.TempFile(\"\", \"src\")\n\tdefer os.Remove(src.Name())\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\t_, err = src.WriteString(\"src\")\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\tdest, err := ioutil.TempFile(\"\", \"dest\")\n\tdefer os.Remove(dest.Name())\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\t_, err = dest.WriteString(\"dest\")\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\tstatus, err := IsConfigChanged(src.Name(), dest.Name())\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\tif status == false {\n\t\tt.Errorf(\"Expected sameConfig(src, dest) to be %v, got %v\", false, status)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/.gitignore",
    "content": "/toml.test\n/toml-test\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/COPYING",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2013 TOML authors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/README.md",
    "content": "TOML stands for Tom's Obvious, Minimal Language. This Go package provides a\nreflection interface similar to Go's standard library `json` and `xml` packages.\n\nCompatible with TOML version [v1.0.0](https://toml.io/en/v1.0.0).\n\nDocumentation: https://godocs.io/github.com/BurntSushi/toml\n\nSee the [releases page](https://github.com/BurntSushi/toml/releases) for a\nchangelog; this information is also in the git tag annotations (e.g. `git show\nv0.4.0`).\n\nThis library requires Go 1.13 or newer; add it to your go.mod with:\n\n    % go get github.com/BurntSushi/toml@latest\n\nIt also comes with a TOML validator CLI tool:\n\n    % go install github.com/BurntSushi/toml/cmd/tomlv@latest\n    % tomlv some-toml-file.toml\n\n### Examples\nFor the simplest example, consider some TOML file as just a list of keys and\nvalues:\n\n```toml\nAge = 25\nCats = [ \"Cauchy\", \"Plato\" ]\nPi = 3.14\nPerfection = [ 6, 28, 496, 8128 ]\nDOB = 1987-07-05T05:45:00Z\n```\n\nWhich can be decoded with:\n\n```go\ntype Config struct {\n\tAge        int\n\tCats       []string\n\tPi         float64\n\tPerfection []int\n\tDOB        time.Time\n}\n\nvar conf Config\n_, err := toml.Decode(tomlData, &conf)\n```\n\nYou can also use struct tags if your struct field name doesn't map to a TOML key\nvalue directly:\n\n```toml\nsome_key_NAME = \"wat\"\n```\n\n```go\ntype TOML struct {\n    ObscureKey string `toml:\"some_key_NAME\"`\n}\n```\n\nBeware that like other decoders **only exported fields** are considered when\nencoding and decoding; private fields are silently ignored.\n\n### Using the `Marshaler` and `encoding.TextUnmarshaler` interfaces\nHere's an example that automatically parses values in a `mail.Address`:\n\n```toml\ncontacts = [\n    \"Donald Duck <donald@duckburg.com>\",\n    \"Scrooge McDuck <scrooge@duckburg.com>\",\n]\n```\n\nCan be decoded with:\n\n```go\n// Create address type which satisfies the encoding.TextUnmarshaler interface.\ntype address struct {\n\t*mail.Address\n}\n\nfunc (a *address) UnmarshalText(text []byte) error {\n\tvar err error\n\ta.Address, err = mail.ParseAddress(string(text))\n\treturn err\n}\n\n// Decode it.\nfunc decode() {\n\tblob := `\n\t\tcontacts = [\n\t\t\t\"Donald Duck <donald@duckburg.com>\",\n\t\t\t\"Scrooge McDuck <scrooge@duckburg.com>\",\n\t\t]\n\t`\n\n\tvar contacts struct {\n\t\tContacts []address\n\t}\n\n\t_, err := toml.Decode(blob, &contacts)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tfor _, c := range contacts.Contacts {\n\t\tfmt.Printf(\"%#v\\n\", c.Address)\n\t}\n\n\t// Output:\n\t// &mail.Address{Name:\"Donald Duck\", Address:\"donald@duckburg.com\"}\n\t// &mail.Address{Name:\"Scrooge McDuck\", Address:\"scrooge@duckburg.com\"}\n}\n```\n\nTo target TOML specifically you can implement `UnmarshalTOML` TOML interface in\na similar way.\n\n### More complex usage\nSee the [`_example/`](/_example) directory for a more complex example.\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/decode.go",
    "content": "package toml\n\nimport (\n\t\"bytes\"\n\t\"encoding\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"math\"\n\t\"os\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// Unmarshaler is the interface implemented by objects that can unmarshal a\n// TOML description of themselves.\ntype Unmarshaler interface {\n\tUnmarshalTOML(interface{}) error\n}\n\n// Unmarshal decodes the contents of data in TOML format into a pointer v.\n//\n// See [Decoder] for a description of the decoding process.\nfunc Unmarshal(data []byte, v interface{}) error {\n\t_, err := NewDecoder(bytes.NewReader(data)).Decode(v)\n\treturn err\n}\n\n// Decode the TOML data in to the pointer v.\n//\n// See [Decoder] for a description of the decoding process.\nfunc Decode(data string, v interface{}) (MetaData, error) {\n\treturn NewDecoder(strings.NewReader(data)).Decode(v)\n}\n\n// DecodeFile reads the contents of a file and decodes it with [Decode].\nfunc DecodeFile(path string, v interface{}) (MetaData, error) {\n\tfp, err := os.Open(path)\n\tif err != nil {\n\t\treturn MetaData{}, err\n\t}\n\tdefer fp.Close()\n\treturn NewDecoder(fp).Decode(v)\n}\n\n// Primitive is a TOML value that hasn't been decoded into a Go value.\n//\n// This type can be used for any value, which will cause decoding to be delayed.\n// You can use [PrimitiveDecode] to \"manually\" decode these values.\n//\n// NOTE: The underlying representation of a `Primitive` value is subject to\n// change. Do not rely on it.\n//\n// NOTE: Primitive values are still parsed, so using them will only avoid the\n// overhead of reflection. They can be useful when you don't know the exact type\n// of TOML data until runtime.\ntype Primitive struct {\n\tundecoded interface{}\n\tcontext   Key\n}\n\n// The significand precision for float32 and float64 is 24 and 53 bits; this is\n// the range a natural number can be stored in a float without loss of data.\nconst (\n\tmaxSafeFloat32Int = 16777215                // 2^24-1\n\tmaxSafeFloat64Int = int64(9007199254740991) // 2^53-1\n)\n\n// Decoder decodes TOML data.\n//\n// TOML tables correspond to Go structs or maps; they can be used\n// interchangeably, but structs offer better type safety.\n//\n// TOML table arrays correspond to either a slice of structs or a slice of maps.\n//\n// TOML datetimes correspond to [time.Time]. Local datetimes are parsed in the\n// local timezone.\n//\n// [time.Duration] types are treated as nanoseconds if the TOML value is an\n// integer, or they're parsed with time.ParseDuration() if they're strings.\n//\n// All other TOML types (float, string, int, bool and array) correspond to the\n// obvious Go types.\n//\n// An exception to the above rules is if a type implements the TextUnmarshaler\n// interface, in which case any primitive TOML value (floats, strings, integers,\n// booleans, datetimes) will be converted to a []byte and given to the value's\n// UnmarshalText method. See the Unmarshaler example for a demonstration with\n// email addresses.\n//\n// # Key mapping\n//\n// TOML keys can map to either keys in a Go map or field names in a Go struct.\n// The special `toml` struct tag can be used to map TOML keys to struct fields\n// that don't match the key name exactly (see the example). A case insensitive\n// match to struct names will be tried if an exact match can't be found.\n//\n// The mapping between TOML values and Go values is loose. That is, there may\n// exist TOML values that cannot be placed into your representation, and there\n// may be parts of your representation that do not correspond to TOML values.\n// This loose mapping can be made stricter by using the IsDefined and/or\n// Undecoded methods on the MetaData returned.\n//\n// This decoder does not handle cyclic types. Decode will not terminate if a\n// cyclic type is passed.\ntype Decoder struct {\n\tr io.Reader\n}\n\n// NewDecoder creates a new Decoder.\nfunc NewDecoder(r io.Reader) *Decoder {\n\treturn &Decoder{r: r}\n}\n\nvar (\n\tunmarshalToml = reflect.TypeOf((*Unmarshaler)(nil)).Elem()\n\tunmarshalText = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem()\n\tprimitiveType = reflect.TypeOf((*Primitive)(nil)).Elem()\n)\n\n// Decode TOML data in to the pointer `v`.\nfunc (dec *Decoder) Decode(v interface{}) (MetaData, error) {\n\trv := reflect.ValueOf(v)\n\tif rv.Kind() != reflect.Ptr {\n\t\ts := \"%q\"\n\t\tif reflect.TypeOf(v) == nil {\n\t\t\ts = \"%v\"\n\t\t}\n\n\t\treturn MetaData{}, fmt.Errorf(\"toml: cannot decode to non-pointer \"+s, reflect.TypeOf(v))\n\t}\n\tif rv.IsNil() {\n\t\treturn MetaData{}, fmt.Errorf(\"toml: cannot decode to nil value of %q\", reflect.TypeOf(v))\n\t}\n\n\t// Check if this is a supported type: struct, map, interface{}, or something\n\t// that implements UnmarshalTOML or UnmarshalText.\n\trv = indirect(rv)\n\trt := rv.Type()\n\tif rv.Kind() != reflect.Struct && rv.Kind() != reflect.Map &&\n\t\t!(rv.Kind() == reflect.Interface && rv.NumMethod() == 0) &&\n\t\t!rt.Implements(unmarshalToml) && !rt.Implements(unmarshalText) {\n\t\treturn MetaData{}, fmt.Errorf(\"toml: cannot decode to type %s\", rt)\n\t}\n\n\t// TODO: parser should read from io.Reader? Or at the very least, make it\n\t// read from []byte rather than string\n\tdata, err := ioutil.ReadAll(dec.r)\n\tif err != nil {\n\t\treturn MetaData{}, err\n\t}\n\n\tp, err := parse(string(data))\n\tif err != nil {\n\t\treturn MetaData{}, err\n\t}\n\n\tmd := MetaData{\n\t\tmapping: p.mapping,\n\t\tkeyInfo: p.keyInfo,\n\t\tkeys:    p.ordered,\n\t\tdecoded: make(map[string]struct{}, len(p.ordered)),\n\t\tcontext: nil,\n\t\tdata:    data,\n\t}\n\treturn md, md.unify(p.mapping, rv)\n}\n\n// PrimitiveDecode is just like the other Decode* functions, except it decodes a\n// TOML value that has already been parsed. Valid primitive values can *only* be\n// obtained from values filled by the decoder functions, including this method.\n// (i.e., v may contain more [Primitive] values.)\n//\n// Meta data for primitive values is included in the meta data returned by the\n// Decode* functions with one exception: keys returned by the Undecoded method\n// will only reflect keys that were decoded. Namely, any keys hidden behind a\n// Primitive will be considered undecoded. Executing this method will update the\n// undecoded keys in the meta data. (See the example.)\nfunc (md *MetaData) PrimitiveDecode(primValue Primitive, v interface{}) error {\n\tmd.context = primValue.context\n\tdefer func() { md.context = nil }()\n\treturn md.unify(primValue.undecoded, rvalue(v))\n}\n\n// unify performs a sort of type unification based on the structure of `rv`,\n// which is the client representation.\n//\n// Any type mismatch produces an error. Finding a type that we don't know\n// how to handle produces an unsupported type error.\nfunc (md *MetaData) unify(data interface{}, rv reflect.Value) error {\n\t// Special case. Look for a `Primitive` value.\n\t// TODO: #76 would make this superfluous after implemented.\n\tif rv.Type() == primitiveType {\n\t\t// Save the undecoded data and the key context into the primitive\n\t\t// value.\n\t\tcontext := make(Key, len(md.context))\n\t\tcopy(context, md.context)\n\t\trv.Set(reflect.ValueOf(Primitive{\n\t\t\tundecoded: data,\n\t\t\tcontext:   context,\n\t\t}))\n\t\treturn nil\n\t}\n\n\trvi := rv.Interface()\n\tif v, ok := rvi.(Unmarshaler); ok {\n\t\treturn v.UnmarshalTOML(data)\n\t}\n\tif v, ok := rvi.(encoding.TextUnmarshaler); ok {\n\t\treturn md.unifyText(data, v)\n\t}\n\n\t// TODO:\n\t// The behavior here is incorrect whenever a Go type satisfies the\n\t// encoding.TextUnmarshaler interface but also corresponds to a TOML hash or\n\t// array. In particular, the unmarshaler should only be applied to primitive\n\t// TOML values. But at this point, it will be applied to all kinds of values\n\t// and produce an incorrect error whenever those values are hashes or arrays\n\t// (including arrays of tables).\n\n\tk := rv.Kind()\n\n\tif k >= reflect.Int && k <= reflect.Uint64 {\n\t\treturn md.unifyInt(data, rv)\n\t}\n\tswitch k {\n\tcase reflect.Ptr:\n\t\telem := reflect.New(rv.Type().Elem())\n\t\terr := md.unify(data, reflect.Indirect(elem))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trv.Set(elem)\n\t\treturn nil\n\tcase reflect.Struct:\n\t\treturn md.unifyStruct(data, rv)\n\tcase reflect.Map:\n\t\treturn md.unifyMap(data, rv)\n\tcase reflect.Array:\n\t\treturn md.unifyArray(data, rv)\n\tcase reflect.Slice:\n\t\treturn md.unifySlice(data, rv)\n\tcase reflect.String:\n\t\treturn md.unifyString(data, rv)\n\tcase reflect.Bool:\n\t\treturn md.unifyBool(data, rv)\n\tcase reflect.Interface:\n\t\tif rv.NumMethod() > 0 { /// Only empty interfaces are supported.\n\t\t\treturn md.e(\"unsupported type %s\", rv.Type())\n\t\t}\n\t\treturn md.unifyAnything(data, rv)\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn md.unifyFloat64(data, rv)\n\t}\n\treturn md.e(\"unsupported type %s\", rv.Kind())\n}\n\nfunc (md *MetaData) unifyStruct(mapping interface{}, rv reflect.Value) error {\n\ttmap, ok := mapping.(map[string]interface{})\n\tif !ok {\n\t\tif mapping == nil {\n\t\t\treturn nil\n\t\t}\n\t\treturn md.e(\"type mismatch for %s: expected table but found %T\",\n\t\t\trv.Type().String(), mapping)\n\t}\n\n\tfor key, datum := range tmap {\n\t\tvar f *field\n\t\tfields := cachedTypeFields(rv.Type())\n\t\tfor i := range fields {\n\t\t\tff := &fields[i]\n\t\t\tif ff.name == key {\n\t\t\t\tf = ff\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif f == nil && strings.EqualFold(ff.name, key) {\n\t\t\t\tf = ff\n\t\t\t}\n\t\t}\n\t\tif f != nil {\n\t\t\tsubv := rv\n\t\t\tfor _, i := range f.index {\n\t\t\t\tsubv = indirect(subv.Field(i))\n\t\t\t}\n\n\t\t\tif isUnifiable(subv) {\n\t\t\t\tmd.decoded[md.context.add(key).String()] = struct{}{}\n\t\t\t\tmd.context = append(md.context, key)\n\n\t\t\t\terr := md.unify(datum, subv)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tmd.context = md.context[0 : len(md.context)-1]\n\t\t\t} else if f.name != \"\" {\n\t\t\t\treturn md.e(\"cannot write unexported field %s.%s\", rv.Type().String(), f.name)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (md *MetaData) unifyMap(mapping interface{}, rv reflect.Value) error {\n\tkeyType := rv.Type().Key().Kind()\n\tif keyType != reflect.String && keyType != reflect.Interface {\n\t\treturn fmt.Errorf(\"toml: cannot decode to a map with non-string key type (%s in %q)\",\n\t\t\tkeyType, rv.Type())\n\t}\n\n\ttmap, ok := mapping.(map[string]interface{})\n\tif !ok {\n\t\tif tmap == nil {\n\t\t\treturn nil\n\t\t}\n\t\treturn md.badtype(\"map\", mapping)\n\t}\n\tif rv.IsNil() {\n\t\trv.Set(reflect.MakeMap(rv.Type()))\n\t}\n\tfor k, v := range tmap {\n\t\tmd.decoded[md.context.add(k).String()] = struct{}{}\n\t\tmd.context = append(md.context, k)\n\n\t\trvval := reflect.Indirect(reflect.New(rv.Type().Elem()))\n\n\t\terr := md.unify(v, indirect(rvval))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmd.context = md.context[0 : len(md.context)-1]\n\n\t\trvkey := indirect(reflect.New(rv.Type().Key()))\n\n\t\tswitch keyType {\n\t\tcase reflect.Interface:\n\t\t\trvkey.Set(reflect.ValueOf(k))\n\t\tcase reflect.String:\n\t\t\trvkey.SetString(k)\n\t\t}\n\n\t\trv.SetMapIndex(rvkey, rvval)\n\t}\n\treturn nil\n}\n\nfunc (md *MetaData) unifyArray(data interface{}, rv reflect.Value) error {\n\tdatav := reflect.ValueOf(data)\n\tif datav.Kind() != reflect.Slice {\n\t\tif !datav.IsValid() {\n\t\t\treturn nil\n\t\t}\n\t\treturn md.badtype(\"slice\", data)\n\t}\n\tif l := datav.Len(); l != rv.Len() {\n\t\treturn md.e(\"expected array length %d; got TOML array of length %d\", rv.Len(), l)\n\t}\n\treturn md.unifySliceArray(datav, rv)\n}\n\nfunc (md *MetaData) unifySlice(data interface{}, rv reflect.Value) error {\n\tdatav := reflect.ValueOf(data)\n\tif datav.Kind() != reflect.Slice {\n\t\tif !datav.IsValid() {\n\t\t\treturn nil\n\t\t}\n\t\treturn md.badtype(\"slice\", data)\n\t}\n\tn := datav.Len()\n\tif rv.IsNil() || rv.Cap() < n {\n\t\trv.Set(reflect.MakeSlice(rv.Type(), n, n))\n\t}\n\trv.SetLen(n)\n\treturn md.unifySliceArray(datav, rv)\n}\n\nfunc (md *MetaData) unifySliceArray(data, rv reflect.Value) error {\n\tl := data.Len()\n\tfor i := 0; i < l; i++ {\n\t\terr := md.unify(data.Index(i).Interface(), indirect(rv.Index(i)))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (md *MetaData) unifyString(data interface{}, rv reflect.Value) error {\n\t_, ok := rv.Interface().(json.Number)\n\tif ok {\n\t\tif i, ok := data.(int64); ok {\n\t\t\trv.SetString(strconv.FormatInt(i, 10))\n\t\t} else if f, ok := data.(float64); ok {\n\t\t\trv.SetString(strconv.FormatFloat(f, 'f', -1, 64))\n\t\t} else {\n\t\t\treturn md.badtype(\"string\", data)\n\t\t}\n\t\treturn nil\n\t}\n\n\tif s, ok := data.(string); ok {\n\t\trv.SetString(s)\n\t\treturn nil\n\t}\n\treturn md.badtype(\"string\", data)\n}\n\nfunc (md *MetaData) unifyFloat64(data interface{}, rv reflect.Value) error {\n\trvk := rv.Kind()\n\n\tif num, ok := data.(float64); ok {\n\t\tswitch rvk {\n\t\tcase reflect.Float32:\n\t\t\tif num < -math.MaxFloat32 || num > math.MaxFloat32 {\n\t\t\t\treturn md.parseErr(errParseRange{i: num, size: rvk.String()})\n\t\t\t}\n\t\t\tfallthrough\n\t\tcase reflect.Float64:\n\t\t\trv.SetFloat(num)\n\t\tdefault:\n\t\t\tpanic(\"bug\")\n\t\t}\n\t\treturn nil\n\t}\n\n\tif num, ok := data.(int64); ok {\n\t\tif (rvk == reflect.Float32 && (num < -maxSafeFloat32Int || num > maxSafeFloat32Int)) ||\n\t\t\t(rvk == reflect.Float64 && (num < -maxSafeFloat64Int || num > maxSafeFloat64Int)) {\n\t\t\treturn md.parseErr(errParseRange{i: num, size: rvk.String()})\n\t\t}\n\t\trv.SetFloat(float64(num))\n\t\treturn nil\n\t}\n\n\treturn md.badtype(\"float\", data)\n}\n\nfunc (md *MetaData) unifyInt(data interface{}, rv reflect.Value) error {\n\t_, ok := rv.Interface().(time.Duration)\n\tif ok {\n\t\t// Parse as string duration, and fall back to regular integer parsing\n\t\t// (as nanosecond) if this is not a string.\n\t\tif s, ok := data.(string); ok {\n\t\t\tdur, err := time.ParseDuration(s)\n\t\t\tif err != nil {\n\t\t\t\treturn md.parseErr(errParseDuration{s})\n\t\t\t}\n\t\t\trv.SetInt(int64(dur))\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tnum, ok := data.(int64)\n\tif !ok {\n\t\treturn md.badtype(\"integer\", data)\n\t}\n\n\trvk := rv.Kind()\n\tswitch {\n\tcase rvk >= reflect.Int && rvk <= reflect.Int64:\n\t\tif (rvk == reflect.Int8 && (num < math.MinInt8 || num > math.MaxInt8)) ||\n\t\t\t(rvk == reflect.Int16 && (num < math.MinInt16 || num > math.MaxInt16)) ||\n\t\t\t(rvk == reflect.Int32 && (num < math.MinInt32 || num > math.MaxInt32)) {\n\t\t\treturn md.parseErr(errParseRange{i: num, size: rvk.String()})\n\t\t}\n\t\trv.SetInt(num)\n\tcase rvk >= reflect.Uint && rvk <= reflect.Uint64:\n\t\tunum := uint64(num)\n\t\tif rvk == reflect.Uint8 && (num < 0 || unum > math.MaxUint8) ||\n\t\t\trvk == reflect.Uint16 && (num < 0 || unum > math.MaxUint16) ||\n\t\t\trvk == reflect.Uint32 && (num < 0 || unum > math.MaxUint32) {\n\t\t\treturn md.parseErr(errParseRange{i: num, size: rvk.String()})\n\t\t}\n\t\trv.SetUint(unum)\n\tdefault:\n\t\tpanic(\"unreachable\")\n\t}\n\treturn nil\n}\n\nfunc (md *MetaData) unifyBool(data interface{}, rv reflect.Value) error {\n\tif b, ok := data.(bool); ok {\n\t\trv.SetBool(b)\n\t\treturn nil\n\t}\n\treturn md.badtype(\"boolean\", data)\n}\n\nfunc (md *MetaData) unifyAnything(data interface{}, rv reflect.Value) error {\n\trv.Set(reflect.ValueOf(data))\n\treturn nil\n}\n\nfunc (md *MetaData) unifyText(data interface{}, v encoding.TextUnmarshaler) error {\n\tvar s string\n\tswitch sdata := data.(type) {\n\tcase Marshaler:\n\t\ttext, err := sdata.MarshalTOML()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ts = string(text)\n\tcase encoding.TextMarshaler:\n\t\ttext, err := sdata.MarshalText()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ts = string(text)\n\tcase fmt.Stringer:\n\t\ts = sdata.String()\n\tcase string:\n\t\ts = sdata\n\tcase bool:\n\t\ts = fmt.Sprintf(\"%v\", sdata)\n\tcase int64:\n\t\ts = fmt.Sprintf(\"%d\", sdata)\n\tcase float64:\n\t\ts = fmt.Sprintf(\"%f\", sdata)\n\tdefault:\n\t\treturn md.badtype(\"primitive (string-like)\", data)\n\t}\n\tif err := v.UnmarshalText([]byte(s)); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (md *MetaData) badtype(dst string, data interface{}) error {\n\treturn md.e(\"incompatible types: TOML value has type %T; destination has type %s\", data, dst)\n}\n\nfunc (md *MetaData) parseErr(err error) error {\n\tk := md.context.String()\n\treturn ParseError{\n\t\tLastKey:  k,\n\t\tPosition: md.keyInfo[k].pos,\n\t\tLine:     md.keyInfo[k].pos.Line,\n\t\terr:      err,\n\t\tinput:    string(md.data),\n\t}\n}\n\nfunc (md *MetaData) e(format string, args ...interface{}) error {\n\tf := \"toml: \"\n\tif len(md.context) > 0 {\n\t\tf = fmt.Sprintf(\"toml: (last key %q): \", md.context)\n\t\tp := md.keyInfo[md.context.String()].pos\n\t\tif p.Line > 0 {\n\t\t\tf = fmt.Sprintf(\"toml: line %d (last key %q): \", p.Line, md.context)\n\t\t}\n\t}\n\treturn fmt.Errorf(f+format, args...)\n}\n\n// rvalue returns a reflect.Value of `v`. All pointers are resolved.\nfunc rvalue(v interface{}) reflect.Value {\n\treturn indirect(reflect.ValueOf(v))\n}\n\n// indirect returns the value pointed to by a pointer.\n//\n// Pointers are followed until the value is not a pointer. New values are\n// allocated for each nil pointer.\n//\n// An exception to this rule is if the value satisfies an interface of interest\n// to us (like encoding.TextUnmarshaler).\nfunc indirect(v reflect.Value) reflect.Value {\n\tif v.Kind() != reflect.Ptr {\n\t\tif v.CanSet() {\n\t\t\tpv := v.Addr()\n\t\t\tpvi := pv.Interface()\n\t\t\tif _, ok := pvi.(encoding.TextUnmarshaler); ok {\n\t\t\t\treturn pv\n\t\t\t}\n\t\t\tif _, ok := pvi.(Unmarshaler); ok {\n\t\t\t\treturn pv\n\t\t\t}\n\t\t}\n\t\treturn v\n\t}\n\tif v.IsNil() {\n\t\tv.Set(reflect.New(v.Type().Elem()))\n\t}\n\treturn indirect(reflect.Indirect(v))\n}\n\nfunc isUnifiable(rv reflect.Value) bool {\n\tif rv.CanSet() {\n\t\treturn true\n\t}\n\trvi := rv.Interface()\n\tif _, ok := rvi.(encoding.TextUnmarshaler); ok {\n\t\treturn true\n\t}\n\tif _, ok := rvi.(Unmarshaler); ok {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/decode_go116.go",
    "content": "//go:build go1.16\n// +build go1.16\n\npackage toml\n\nimport (\n\t\"io/fs\"\n)\n\n// DecodeFS reads the contents of a file from [fs.FS] and decodes it with\n// [Decode].\nfunc DecodeFS(fsys fs.FS, path string, v interface{}) (MetaData, error) {\n\tfp, err := fsys.Open(path)\n\tif err != nil {\n\t\treturn MetaData{}, err\n\t}\n\tdefer fp.Close()\n\treturn NewDecoder(fp).Decode(v)\n}\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/deprecated.go",
    "content": "package toml\n\nimport (\n\t\"encoding\"\n\t\"io\"\n)\n\n// TextMarshaler is an alias for encoding.TextMarshaler.\n//\n// Deprecated: use encoding.TextMarshaler\ntype TextMarshaler encoding.TextMarshaler\n\n// TextUnmarshaler is an alias for encoding.TextUnmarshaler.\n//\n// Deprecated: use encoding.TextUnmarshaler\ntype TextUnmarshaler encoding.TextUnmarshaler\n\n// PrimitiveDecode is an alias for MetaData.PrimitiveDecode().\n//\n// Deprecated: use MetaData.PrimitiveDecode.\nfunc PrimitiveDecode(primValue Primitive, v interface{}) error {\n\tmd := MetaData{decoded: make(map[string]struct{})}\n\treturn md.unify(primValue.undecoded, rvalue(v))\n}\n\n// DecodeReader is an alias for NewDecoder(r).Decode(v).\n//\n// Deprecated: use NewDecoder(reader).Decode(&value).\nfunc DecodeReader(r io.Reader, v interface{}) (MetaData, error) { return NewDecoder(r).Decode(v) }\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/doc.go",
    "content": "// Package toml implements decoding and encoding of TOML files.\n//\n// This package supports TOML v1.0.0, as specified at https://toml.io\n//\n// There is also support for delaying decoding with the Primitive type, and\n// querying the set of keys in a TOML document with the MetaData type.\n//\n// The github.com/BurntSushi/toml/cmd/tomlv package implements a TOML validator,\n// and can be used to verify if TOML document is valid. It can also be used to\n// print the type of each key.\npackage toml\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/encode.go",
    "content": "package toml\n\nimport (\n\t\"bufio\"\n\t\"encoding\"\n\t\"encoding/json\"\n\t\"errors\"\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\n\t\"github.com/BurntSushi/toml/internal\"\n)\n\ntype tomlEncodeError struct{ error }\n\nvar (\n\terrArrayNilElement = errors.New(\"toml: cannot encode array with nil element\")\n\terrNonString       = errors.New(\"toml: cannot encode a map with non-string key type\")\n\terrNoKey           = errors.New(\"toml: top-level values must be Go maps or structs\")\n\terrAnything        = errors.New(\"\") // used in testing\n)\n\nvar dblQuotedReplacer = strings.NewReplacer(\n\t\"\\\"\", \"\\\\\\\"\",\n\t\"\\\\\", \"\\\\\\\\\",\n\t\"\\x00\", `\\u0000`,\n\t\"\\x01\", `\\u0001`,\n\t\"\\x02\", `\\u0002`,\n\t\"\\x03\", `\\u0003`,\n\t\"\\x04\", `\\u0004`,\n\t\"\\x05\", `\\u0005`,\n\t\"\\x06\", `\\u0006`,\n\t\"\\x07\", `\\u0007`,\n\t\"\\b\", `\\b`,\n\t\"\\t\", `\\t`,\n\t\"\\n\", `\\n`,\n\t\"\\x0b\", `\\u000b`,\n\t\"\\f\", `\\f`,\n\t\"\\r\", `\\r`,\n\t\"\\x0e\", `\\u000e`,\n\t\"\\x0f\", `\\u000f`,\n\t\"\\x10\", `\\u0010`,\n\t\"\\x11\", `\\u0011`,\n\t\"\\x12\", `\\u0012`,\n\t\"\\x13\", `\\u0013`,\n\t\"\\x14\", `\\u0014`,\n\t\"\\x15\", `\\u0015`,\n\t\"\\x16\", `\\u0016`,\n\t\"\\x17\", `\\u0017`,\n\t\"\\x18\", `\\u0018`,\n\t\"\\x19\", `\\u0019`,\n\t\"\\x1a\", `\\u001a`,\n\t\"\\x1b\", `\\u001b`,\n\t\"\\x1c\", `\\u001c`,\n\t\"\\x1d\", `\\u001d`,\n\t\"\\x1e\", `\\u001e`,\n\t\"\\x1f\", `\\u001f`,\n\t\"\\x7f\", `\\u007f`,\n)\n\nvar (\n\tmarshalToml = reflect.TypeOf((*Marshaler)(nil)).Elem()\n\tmarshalText = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem()\n\ttimeType    = reflect.TypeOf((*time.Time)(nil)).Elem()\n)\n\n// Marshaler is the interface implemented by types that can marshal themselves\n// into valid TOML.\ntype Marshaler interface {\n\tMarshalTOML() ([]byte, error)\n}\n\n// Encoder encodes a Go to a TOML document.\n//\n// The mapping between Go values and TOML values should be precisely the same as\n// for [Decode].\n//\n// time.Time is encoded as a RFC 3339 string, and time.Duration as its string\n// representation.\n//\n// The [Marshaler] and [encoding.TextMarshaler] interfaces are supported to\n// encoding the value as custom TOML.\n//\n// If you want to write arbitrary binary data then you will need to use\n// something like base64 since TOML does not have any binary types.\n//\n// When encoding TOML hashes (Go maps or structs), keys without any sub-hashes\n// are encoded first.\n//\n// Go maps will be sorted alphabetically by key for deterministic output.\n//\n// The toml struct tag can be used to provide the key name; if omitted the\n// struct field name will be used. If the \"omitempty\" option is present the\n// following value will be skipped:\n//\n//   - arrays, slices, maps, and string with len of 0\n//   - struct with all zero values\n//   - bool false\n//\n// If omitzero is given all int and float types with a value of 0 will be\n// skipped.\n//\n// Encoding Go values without a corresponding TOML representation will return an\n// error. Examples of this includes maps with non-string keys, slices with nil\n// elements, embedded non-struct types, and nested slices containing maps or\n// structs. (e.g. [][]map[string]string is not allowed but []map[string]string\n// is okay, as is []map[string][]string).\n//\n// NOTE: only exported keys are encoded due to the use of reflection. Unexported\n// keys are silently discarded.\ntype Encoder struct {\n\t// String to use for a single indentation level; default is two spaces.\n\tIndent string\n\n\tw          *bufio.Writer\n\thasWritten bool // written any output to w yet?\n}\n\n// NewEncoder create a new Encoder.\nfunc NewEncoder(w io.Writer) *Encoder {\n\treturn &Encoder{\n\t\tw:      bufio.NewWriter(w),\n\t\tIndent: \"  \",\n\t}\n}\n\n// Encode writes a TOML representation of the Go value to the [Encoder]'s writer.\n//\n// An error is returned if the value given cannot be encoded to a valid TOML\n// document.\nfunc (enc *Encoder) Encode(v interface{}) error {\n\trv := eindirect(reflect.ValueOf(v))\n\terr := enc.safeEncode(Key([]string{}), rv)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn enc.w.Flush()\n}\n\nfunc (enc *Encoder) safeEncode(key Key, rv reflect.Value) (err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tif terr, ok := r.(tomlEncodeError); ok {\n\t\t\t\terr = terr.error\n\t\t\t\treturn\n\t\t\t}\n\t\t\tpanic(r)\n\t\t}\n\t}()\n\tenc.encode(key, rv)\n\treturn nil\n}\n\nfunc (enc *Encoder) encode(key Key, rv reflect.Value) {\n\t// If we can marshal the type to text, then we use that. This prevents the\n\t// encoder for handling these types as generic structs (or whatever the\n\t// underlying type of a TextMarshaler is).\n\tswitch {\n\tcase isMarshaler(rv):\n\t\tenc.writeKeyValue(key, rv, false)\n\t\treturn\n\tcase rv.Type() == primitiveType: // TODO: #76 would make this superfluous after implemented.\n\t\tenc.encode(key, reflect.ValueOf(rv.Interface().(Primitive).undecoded))\n\t\treturn\n\t}\n\n\tk := rv.Kind()\n\tswitch k {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32,\n\t\treflect.Int64,\n\t\treflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32,\n\t\treflect.Uint64,\n\t\treflect.Float32, reflect.Float64, reflect.String, reflect.Bool:\n\t\tenc.writeKeyValue(key, rv, false)\n\tcase reflect.Array, reflect.Slice:\n\t\tif typeEqual(tomlArrayHash, tomlTypeOfGo(rv)) {\n\t\t\tenc.eArrayOfTables(key, rv)\n\t\t} else {\n\t\t\tenc.writeKeyValue(key, rv, false)\n\t\t}\n\tcase reflect.Interface:\n\t\tif rv.IsNil() {\n\t\t\treturn\n\t\t}\n\t\tenc.encode(key, rv.Elem())\n\tcase reflect.Map:\n\t\tif rv.IsNil() {\n\t\t\treturn\n\t\t}\n\t\tenc.eTable(key, rv)\n\tcase reflect.Ptr:\n\t\tif rv.IsNil() {\n\t\t\treturn\n\t\t}\n\t\tenc.encode(key, rv.Elem())\n\tcase reflect.Struct:\n\t\tenc.eTable(key, rv)\n\tdefault:\n\t\tencPanic(fmt.Errorf(\"unsupported type for key '%s': %s\", key, k))\n\t}\n}\n\n// eElement encodes any value that can be an array element.\nfunc (enc *Encoder) eElement(rv reflect.Value) {\n\tswitch v := rv.Interface().(type) {\n\tcase time.Time: // Using TextMarshaler adds extra quotes, which we don't want.\n\t\tformat := time.RFC3339Nano\n\t\tswitch v.Location() {\n\t\tcase internal.LocalDatetime:\n\t\t\tformat = \"2006-01-02T15:04:05.999999999\"\n\t\tcase internal.LocalDate:\n\t\t\tformat = \"2006-01-02\"\n\t\tcase internal.LocalTime:\n\t\t\tformat = \"15:04:05.999999999\"\n\t\t}\n\t\tswitch v.Location() {\n\t\tdefault:\n\t\t\tenc.wf(v.Format(format))\n\t\tcase internal.LocalDatetime, internal.LocalDate, internal.LocalTime:\n\t\t\tenc.wf(v.In(time.UTC).Format(format))\n\t\t}\n\t\treturn\n\tcase Marshaler:\n\t\ts, err := v.MarshalTOML()\n\t\tif err != nil {\n\t\t\tencPanic(err)\n\t\t}\n\t\tif s == nil {\n\t\t\tencPanic(errors.New(\"MarshalTOML returned nil and no error\"))\n\t\t}\n\t\tenc.w.Write(s)\n\t\treturn\n\tcase encoding.TextMarshaler:\n\t\ts, err := v.MarshalText()\n\t\tif err != nil {\n\t\t\tencPanic(err)\n\t\t}\n\t\tif s == nil {\n\t\t\tencPanic(errors.New(\"MarshalText returned nil and no error\"))\n\t\t}\n\t\tenc.writeQuoted(string(s))\n\t\treturn\n\tcase time.Duration:\n\t\tenc.writeQuoted(v.String())\n\t\treturn\n\tcase json.Number:\n\t\tn, _ := rv.Interface().(json.Number)\n\n\t\tif n == \"\" { /// Useful zero value.\n\t\t\tenc.w.WriteByte('0')\n\t\t\treturn\n\t\t} else if v, err := n.Int64(); err == nil {\n\t\t\tenc.eElement(reflect.ValueOf(v))\n\t\t\treturn\n\t\t} else if v, err := n.Float64(); err == nil {\n\t\t\tenc.eElement(reflect.ValueOf(v))\n\t\t\treturn\n\t\t}\n\t\tencPanic(fmt.Errorf(\"unable to convert %q to int64 or float64\", n))\n\t}\n\n\tswitch rv.Kind() {\n\tcase reflect.Ptr:\n\t\tenc.eElement(rv.Elem())\n\t\treturn\n\tcase reflect.String:\n\t\tenc.writeQuoted(rv.String())\n\tcase reflect.Bool:\n\t\tenc.wf(strconv.FormatBool(rv.Bool()))\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tenc.wf(strconv.FormatInt(rv.Int(), 10))\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tenc.wf(strconv.FormatUint(rv.Uint(), 10))\n\tcase reflect.Float32:\n\t\tf := rv.Float()\n\t\tif math.IsNaN(f) {\n\t\t\tenc.wf(\"nan\")\n\t\t} else if math.IsInf(f, 0) {\n\t\t\tenc.wf(\"%cinf\", map[bool]byte{true: '-', false: '+'}[math.Signbit(f)])\n\t\t} else {\n\t\t\tenc.wf(floatAddDecimal(strconv.FormatFloat(f, 'f', -1, 32)))\n\t\t}\n\tcase reflect.Float64:\n\t\tf := rv.Float()\n\t\tif math.IsNaN(f) {\n\t\t\tenc.wf(\"nan\")\n\t\t} else if math.IsInf(f, 0) {\n\t\t\tenc.wf(\"%cinf\", map[bool]byte{true: '-', false: '+'}[math.Signbit(f)])\n\t\t} else {\n\t\t\tenc.wf(floatAddDecimal(strconv.FormatFloat(f, 'f', -1, 64)))\n\t\t}\n\tcase reflect.Array, reflect.Slice:\n\t\tenc.eArrayOrSliceElement(rv)\n\tcase reflect.Struct:\n\t\tenc.eStruct(nil, rv, true)\n\tcase reflect.Map:\n\t\tenc.eMap(nil, rv, true)\n\tcase reflect.Interface:\n\t\tenc.eElement(rv.Elem())\n\tdefault:\n\t\tencPanic(fmt.Errorf(\"unexpected type: %T\", rv.Interface()))\n\t}\n}\n\n// By the TOML spec, all floats must have a decimal with at least one number on\n// either side.\nfunc floatAddDecimal(fstr string) string {\n\tif !strings.Contains(fstr, \".\") {\n\t\treturn fstr + \".0\"\n\t}\n\treturn fstr\n}\n\nfunc (enc *Encoder) writeQuoted(s string) {\n\tenc.wf(\"\\\"%s\\\"\", dblQuotedReplacer.Replace(s))\n}\n\nfunc (enc *Encoder) eArrayOrSliceElement(rv reflect.Value) {\n\tlength := rv.Len()\n\tenc.wf(\"[\")\n\tfor i := 0; i < length; i++ {\n\t\telem := eindirect(rv.Index(i))\n\t\tenc.eElement(elem)\n\t\tif i != length-1 {\n\t\t\tenc.wf(\", \")\n\t\t}\n\t}\n\tenc.wf(\"]\")\n}\n\nfunc (enc *Encoder) eArrayOfTables(key Key, rv reflect.Value) {\n\tif len(key) == 0 {\n\t\tencPanic(errNoKey)\n\t}\n\tfor i := 0; i < rv.Len(); i++ {\n\t\ttrv := eindirect(rv.Index(i))\n\t\tif isNil(trv) {\n\t\t\tcontinue\n\t\t}\n\t\tenc.newline()\n\t\tenc.wf(\"%s[[%s]]\", enc.indentStr(key), key)\n\t\tenc.newline()\n\t\tenc.eMapOrStruct(key, trv, false)\n\t}\n}\n\nfunc (enc *Encoder) eTable(key Key, rv reflect.Value) {\n\tif len(key) == 1 {\n\t\t// Output an extra newline between top-level tables.\n\t\t// (The newline isn't written if nothing else has been written though.)\n\t\tenc.newline()\n\t}\n\tif len(key) > 0 {\n\t\tenc.wf(\"%s[%s]\", enc.indentStr(key), key)\n\t\tenc.newline()\n\t}\n\tenc.eMapOrStruct(key, rv, false)\n}\n\nfunc (enc *Encoder) eMapOrStruct(key Key, rv reflect.Value, inline bool) {\n\tswitch rv.Kind() {\n\tcase reflect.Map:\n\t\tenc.eMap(key, rv, inline)\n\tcase reflect.Struct:\n\t\tenc.eStruct(key, rv, inline)\n\tdefault:\n\t\t// Should never happen?\n\t\tpanic(\"eTable: unhandled reflect.Value Kind: \" + rv.Kind().String())\n\t}\n}\n\nfunc (enc *Encoder) eMap(key Key, rv reflect.Value, inline bool) {\n\trt := rv.Type()\n\tif rt.Key().Kind() != reflect.String {\n\t\tencPanic(errNonString)\n\t}\n\n\t// Sort keys so that we have deterministic output. And write keys directly\n\t// underneath this key first, before writing sub-structs or sub-maps.\n\tvar mapKeysDirect, mapKeysSub []string\n\tfor _, mapKey := range rv.MapKeys() {\n\t\tk := mapKey.String()\n\t\tif typeIsTable(tomlTypeOfGo(eindirect(rv.MapIndex(mapKey)))) {\n\t\t\tmapKeysSub = append(mapKeysSub, k)\n\t\t} else {\n\t\t\tmapKeysDirect = append(mapKeysDirect, k)\n\t\t}\n\t}\n\n\tvar writeMapKeys = func(mapKeys []string, trailC bool) {\n\t\tsort.Strings(mapKeys)\n\t\tfor i, mapKey := range mapKeys {\n\t\t\tval := eindirect(rv.MapIndex(reflect.ValueOf(mapKey)))\n\t\t\tif isNil(val) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif inline {\n\t\t\t\tenc.writeKeyValue(Key{mapKey}, val, true)\n\t\t\t\tif trailC || i != len(mapKeys)-1 {\n\t\t\t\t\tenc.wf(\", \")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tenc.encode(key.add(mapKey), val)\n\t\t\t}\n\t\t}\n\t}\n\n\tif inline {\n\t\tenc.wf(\"{\")\n\t}\n\twriteMapKeys(mapKeysDirect, len(mapKeysSub) > 0)\n\twriteMapKeys(mapKeysSub, false)\n\tif inline {\n\t\tenc.wf(\"}\")\n\t}\n}\n\nconst is32Bit = (32 << (^uint(0) >> 63)) == 32\n\nfunc pointerTo(t reflect.Type) reflect.Type {\n\tif t.Kind() == reflect.Ptr {\n\t\treturn pointerTo(t.Elem())\n\t}\n\treturn t\n}\n\nfunc (enc *Encoder) eStruct(key Key, rv reflect.Value, inline bool) {\n\t// Write keys for fields directly under this key first, because if we write\n\t// a field that creates a new table then all keys under it will be in that\n\t// table (not the one we're writing here).\n\t//\n\t// Fields is a [][]int: for fieldsDirect this always has one entry (the\n\t// struct index). For fieldsSub it contains two entries: the parent field\n\t// index from tv, and the field indexes for the fields of the sub.\n\tvar (\n\t\trt                      = rv.Type()\n\t\tfieldsDirect, fieldsSub [][]int\n\t\taddFields               func(rt reflect.Type, rv reflect.Value, start []int)\n\t)\n\taddFields = func(rt reflect.Type, rv reflect.Value, start []int) {\n\t\tfor i := 0; i < rt.NumField(); i++ {\n\t\t\tf := rt.Field(i)\n\t\t\tisEmbed := f.Anonymous && pointerTo(f.Type).Kind() == reflect.Struct\n\t\t\tif f.PkgPath != \"\" && !isEmbed { /// Skip unexported fields.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\topts := getOptions(f.Tag)\n\t\t\tif opts.skip {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfrv := eindirect(rv.Field(i))\n\n\t\t\tif is32Bit {\n\t\t\t\t// Copy so it works correct on 32bit archs; not clear why this\n\t\t\t\t// is needed. See #314, and https://www.reddit.com/r/golang/comments/pnx8v4\n\t\t\t\t// This also works fine on 64bit, but 32bit archs are somewhat\n\t\t\t\t// rare and this is a wee bit faster.\n\t\t\t\tcopyStart := make([]int, len(start))\n\t\t\t\tcopy(copyStart, start)\n\t\t\t\tstart = copyStart\n\t\t\t}\n\n\t\t\t// Treat anonymous struct fields with tag names as though they are\n\t\t\t// not anonymous, like encoding/json does.\n\t\t\t//\n\t\t\t// Non-struct anonymous fields use the normal encoding logic.\n\t\t\tif isEmbed {\n\t\t\t\tif getOptions(f.Tag).name == \"\" && frv.Kind() == reflect.Struct {\n\t\t\t\t\taddFields(frv.Type(), frv, append(start, f.Index...))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif typeIsTable(tomlTypeOfGo(frv)) {\n\t\t\t\tfieldsSub = append(fieldsSub, append(start, f.Index...))\n\t\t\t} else {\n\t\t\t\tfieldsDirect = append(fieldsDirect, append(start, f.Index...))\n\t\t\t}\n\t\t}\n\t}\n\taddFields(rt, rv, nil)\n\n\twriteFields := func(fields [][]int) {\n\t\tfor _, fieldIndex := range fields {\n\t\t\tfieldType := rt.FieldByIndex(fieldIndex)\n\t\t\tfieldVal := rv.FieldByIndex(fieldIndex)\n\n\t\t\topts := getOptions(fieldType.Tag)\n\t\t\tif opts.skip {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif opts.omitempty && isEmpty(fieldVal) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfieldVal = eindirect(fieldVal)\n\n\t\t\tif isNil(fieldVal) { /// Don't write anything for nil fields.\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tkeyName := fieldType.Name\n\t\t\tif opts.name != \"\" {\n\t\t\t\tkeyName = opts.name\n\t\t\t}\n\n\t\t\tif opts.omitzero && isZero(fieldVal) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif inline {\n\t\t\t\tenc.writeKeyValue(Key{keyName}, fieldVal, true)\n\t\t\t\tif fieldIndex[0] != len(fields)-1 {\n\t\t\t\t\tenc.wf(\", \")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tenc.encode(key.add(keyName), fieldVal)\n\t\t\t}\n\t\t}\n\t}\n\n\tif inline {\n\t\tenc.wf(\"{\")\n\t}\n\twriteFields(fieldsDirect)\n\twriteFields(fieldsSub)\n\tif inline {\n\t\tenc.wf(\"}\")\n\t}\n}\n\n// tomlTypeOfGo returns the TOML type name of the Go value's type.\n//\n// It is used to determine whether the types of array elements are mixed (which\n// is forbidden). If the Go value is nil, then it is illegal for it to be an\n// array element, and valueIsNil is returned as true.\n//\n// The type may be `nil`, which means no concrete TOML type could be found.\nfunc tomlTypeOfGo(rv reflect.Value) tomlType {\n\tif isNil(rv) || !rv.IsValid() {\n\t\treturn nil\n\t}\n\n\tif rv.Kind() == reflect.Struct {\n\t\tif rv.Type() == timeType {\n\t\t\treturn tomlDatetime\n\t\t}\n\t\tif isMarshaler(rv) {\n\t\t\treturn tomlString\n\t\t}\n\t\treturn tomlHash\n\t}\n\n\tif isMarshaler(rv) {\n\t\treturn tomlString\n\t}\n\n\tswitch rv.Kind() {\n\tcase reflect.Bool:\n\t\treturn tomlBool\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32,\n\t\treflect.Int64,\n\t\treflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32,\n\t\treflect.Uint64:\n\t\treturn tomlInteger\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn tomlFloat\n\tcase reflect.Array, reflect.Slice:\n\t\tif isTableArray(rv) {\n\t\t\treturn tomlArrayHash\n\t\t}\n\t\treturn tomlArray\n\tcase reflect.Ptr, reflect.Interface:\n\t\treturn tomlTypeOfGo(rv.Elem())\n\tcase reflect.String:\n\t\treturn tomlString\n\tcase reflect.Map:\n\t\treturn tomlHash\n\tdefault:\n\t\tencPanic(errors.New(\"unsupported type: \" + rv.Kind().String()))\n\t\tpanic(\"unreachable\")\n\t}\n}\n\nfunc isMarshaler(rv reflect.Value) bool {\n\treturn rv.Type().Implements(marshalText) || rv.Type().Implements(marshalToml)\n}\n\n// isTableArray reports if all entries in the array or slice are a table.\nfunc isTableArray(arr reflect.Value) bool {\n\tif isNil(arr) || !arr.IsValid() || arr.Len() == 0 {\n\t\treturn false\n\t}\n\n\tret := true\n\tfor i := 0; i < arr.Len(); i++ {\n\t\ttt := tomlTypeOfGo(eindirect(arr.Index(i)))\n\t\t// Don't allow nil.\n\t\tif tt == nil {\n\t\t\tencPanic(errArrayNilElement)\n\t\t}\n\n\t\tif ret && !typeEqual(tomlHash, tt) {\n\t\t\tret = false\n\t\t}\n\t}\n\treturn ret\n}\n\ntype tagOptions struct {\n\tskip      bool // \"-\"\n\tname      string\n\tomitempty bool\n\tomitzero  bool\n}\n\nfunc getOptions(tag reflect.StructTag) tagOptions {\n\tt := tag.Get(\"toml\")\n\tif t == \"-\" {\n\t\treturn tagOptions{skip: true}\n\t}\n\tvar opts tagOptions\n\tparts := strings.Split(t, \",\")\n\topts.name = parts[0]\n\tfor _, s := range parts[1:] {\n\t\tswitch s {\n\t\tcase \"omitempty\":\n\t\t\topts.omitempty = true\n\t\tcase \"omitzero\":\n\t\t\topts.omitzero = true\n\t\t}\n\t}\n\treturn opts\n}\n\nfunc isZero(rv reflect.Value) bool {\n\tswitch rv.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn rv.Int() == 0\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\treturn rv.Uint() == 0\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn rv.Float() == 0.0\n\t}\n\treturn false\n}\n\nfunc isEmpty(rv reflect.Value) bool {\n\tswitch rv.Kind() {\n\tcase reflect.Array, reflect.Slice, reflect.Map, reflect.String:\n\t\treturn rv.Len() == 0\n\tcase reflect.Struct:\n\t\tif rv.Type().Comparable() {\n\t\t\treturn reflect.Zero(rv.Type()).Interface() == rv.Interface()\n\t\t}\n\t\t// Need to also check if all the fields are empty, otherwise something\n\t\t// like this with uncomparable types will always return true:\n\t\t//\n\t\t//   type a struct{ field b }\n\t\t//   type b struct{ s []string }\n\t\t//   s := a{field: b{s: []string{\"AAA\"}}}\n\t\tfor i := 0; i < rv.NumField(); i++ {\n\t\t\tif !isEmpty(rv.Field(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\tcase reflect.Bool:\n\t\treturn !rv.Bool()\n\tcase reflect.Ptr:\n\t\treturn rv.IsNil()\n\t}\n\treturn false\n}\n\nfunc (enc *Encoder) newline() {\n\tif enc.hasWritten {\n\t\tenc.wf(\"\\n\")\n\t}\n}\n\n// Write a key/value pair:\n//\n//\tkey = <any value>\n//\n// This is also used for \"k = v\" in inline tables; so something like this will\n// be written in three calls:\n//\n//\t┌───────────────────┐\n//\t│      ┌───┐  ┌────┐│\n//\tv      v   v  v    vv\n//\tkey = {k = 1, k2 = 2}\nfunc (enc *Encoder) writeKeyValue(key Key, val reflect.Value, inline bool) {\n\t/// Marshaler used on top-level document; call eElement() to just call\n\t/// Marshal{TOML,Text}.\n\tif len(key) == 0 {\n\t\tenc.eElement(val)\n\t\treturn\n\t}\n\tenc.wf(\"%s%s = \", enc.indentStr(key), key.maybeQuoted(len(key)-1))\n\tenc.eElement(val)\n\tif !inline {\n\t\tenc.newline()\n\t}\n}\n\nfunc (enc *Encoder) wf(format string, v ...interface{}) {\n\t_, err := fmt.Fprintf(enc.w, format, v...)\n\tif err != nil {\n\t\tencPanic(err)\n\t}\n\tenc.hasWritten = true\n}\n\nfunc (enc *Encoder) indentStr(key Key) string {\n\treturn strings.Repeat(enc.Indent, len(key)-1)\n}\n\nfunc encPanic(err error) {\n\tpanic(tomlEncodeError{err})\n}\n\n// Resolve any level of pointers to the actual value (e.g. **string → string).\nfunc eindirect(v reflect.Value) reflect.Value {\n\tif v.Kind() != reflect.Ptr && v.Kind() != reflect.Interface {\n\t\tif isMarshaler(v) {\n\t\t\treturn v\n\t\t}\n\t\tif v.CanAddr() { /// Special case for marshalers; see #358.\n\t\t\tif pv := v.Addr(); isMarshaler(pv) {\n\t\t\t\treturn pv\n\t\t\t}\n\t\t}\n\t\treturn v\n\t}\n\n\tif v.IsNil() {\n\t\treturn v\n\t}\n\n\treturn eindirect(v.Elem())\n}\n\nfunc isNil(rv reflect.Value) bool {\n\tswitch rv.Kind() {\n\tcase reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:\n\t\treturn rv.IsNil()\n\tdefault:\n\t\treturn false\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/error.go",
    "content": "package toml\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// ParseError is returned when there is an error parsing the TOML syntax such as\n// invalid syntax, duplicate keys, etc.\n//\n// In addition to the error message itself, you can also print detailed location\n// information with context by using [ErrorWithPosition]:\n//\n//\ttoml: error: Key 'fruit' was already created and cannot be used as an array.\n//\n//\tAt line 4, column 2-7:\n//\n//\t      2 | fruit = []\n//\t      3 |\n//\t      4 | [[fruit]] # Not allowed\n//\t            ^^^^^\n//\n// [ErrorWithUsage] can be used to print the above with some more detailed usage\n// guidance:\n//\n//\ttoml: error: newlines not allowed within inline tables\n//\n//\tAt line 1, column 18:\n//\n//\t      1 | x = [{ key = 42 #\n//\t                           ^\n//\n//\tError help:\n//\n//\t  Inline tables must always be on a single line:\n//\n//\t      table = {key = 42, second = 43}\n//\n//\t  It is invalid to split them over multiple lines like so:\n//\n//\t      # INVALID\n//\t      table = {\n//\t          key    = 42,\n//\t          second = 43\n//\t      }\n//\n//\t  Use regular for this:\n//\n//\t      [table]\n//\t      key    = 42\n//\t      second = 43\ntype ParseError struct {\n\tMessage  string   // Short technical message.\n\tUsage    string   // Longer message with usage guidance; may be blank.\n\tPosition Position // Position of the error\n\tLastKey  string   // Last parsed key, may be blank.\n\n\t// Line the error occurred.\n\t//\n\t// Deprecated: use [Position].\n\tLine int\n\n\terr   error\n\tinput string\n}\n\n// Position of an error.\ntype Position struct {\n\tLine  int // Line number, starting at 1.\n\tStart int // Start of error, as byte offset starting at 0.\n\tLen   int // Lenght in bytes.\n}\n\nfunc (pe ParseError) Error() string {\n\tmsg := pe.Message\n\tif msg == \"\" { // Error from errorf()\n\t\tmsg = pe.err.Error()\n\t}\n\n\tif pe.LastKey == \"\" {\n\t\treturn fmt.Sprintf(\"toml: line %d: %s\", pe.Position.Line, msg)\n\t}\n\treturn fmt.Sprintf(\"toml: line %d (last key %q): %s\",\n\t\tpe.Position.Line, pe.LastKey, msg)\n}\n\n// ErrorWithPosition returns the error with detailed location context.\n//\n// See the documentation on [ParseError].\nfunc (pe ParseError) ErrorWithPosition() string {\n\tif pe.input == \"\" { // Should never happen, but just in case.\n\t\treturn pe.Error()\n\t}\n\n\tvar (\n\t\tlines = strings.Split(pe.input, \"\\n\")\n\t\tcol   = pe.column(lines)\n\t\tb     = new(strings.Builder)\n\t)\n\n\tmsg := pe.Message\n\tif msg == \"\" {\n\t\tmsg = pe.err.Error()\n\t}\n\n\t// TODO: don't show control characters as literals? This may not show up\n\t// well everywhere.\n\n\tif pe.Position.Len == 1 {\n\t\tfmt.Fprintf(b, \"toml: error: %s\\n\\nAt line %d, column %d:\\n\\n\",\n\t\t\tmsg, pe.Position.Line, col+1)\n\t} else {\n\t\tfmt.Fprintf(b, \"toml: error: %s\\n\\nAt line %d, column %d-%d:\\n\\n\",\n\t\t\tmsg, pe.Position.Line, col, col+pe.Position.Len)\n\t}\n\tif pe.Position.Line > 2 {\n\t\tfmt.Fprintf(b, \"% 7d | %s\\n\", pe.Position.Line-2, lines[pe.Position.Line-3])\n\t}\n\tif pe.Position.Line > 1 {\n\t\tfmt.Fprintf(b, \"% 7d | %s\\n\", pe.Position.Line-1, lines[pe.Position.Line-2])\n\t}\n\tfmt.Fprintf(b, \"% 7d | %s\\n\", pe.Position.Line, lines[pe.Position.Line-1])\n\tfmt.Fprintf(b, \"% 10s%s%s\\n\", \"\", strings.Repeat(\" \", col), strings.Repeat(\"^\", pe.Position.Len))\n\treturn b.String()\n}\n\n// ErrorWithUsage returns the error with detailed location context and usage\n// guidance.\n//\n// See the documentation on [ParseError].\nfunc (pe ParseError) ErrorWithUsage() string {\n\tm := pe.ErrorWithPosition()\n\tif u, ok := pe.err.(interface{ Usage() string }); ok && u.Usage() != \"\" {\n\t\tlines := strings.Split(strings.TrimSpace(u.Usage()), \"\\n\")\n\t\tfor i := range lines {\n\t\t\tif lines[i] != \"\" {\n\t\t\t\tlines[i] = \"    \" + lines[i]\n\t\t\t}\n\t\t}\n\t\treturn m + \"Error help:\\n\\n\" + strings.Join(lines, \"\\n\") + \"\\n\"\n\t}\n\treturn m\n}\n\nfunc (pe ParseError) column(lines []string) int {\n\tvar pos, col int\n\tfor i := range lines {\n\t\tll := len(lines[i]) + 1 // +1 for the removed newline\n\t\tif pos+ll >= pe.Position.Start {\n\t\t\tcol = pe.Position.Start - pos\n\t\t\tif col < 0 { // Should never happen, but just in case.\n\t\t\t\tcol = 0\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tpos += ll\n\t}\n\n\treturn col\n}\n\ntype (\n\terrLexControl       struct{ r rune }\n\terrLexEscape        struct{ r rune }\n\terrLexUTF8          struct{ b byte }\n\terrLexInvalidNum    struct{ v string }\n\terrLexInvalidDate   struct{ v string }\n\terrLexInlineTableNL struct{}\n\terrLexStringNL      struct{}\n\terrParseRange       struct {\n\t\ti    interface{} // int or float\n\t\tsize string      // \"int64\", \"uint16\", etc.\n\t}\n\terrParseDuration struct{ d string }\n)\n\nfunc (e errLexControl) Error() string {\n\treturn fmt.Sprintf(\"TOML files cannot contain control characters: '0x%02x'\", e.r)\n}\nfunc (e errLexControl) Usage() string { return \"\" }\n\nfunc (e errLexEscape) Error() string        { return fmt.Sprintf(`invalid escape in string '\\%c'`, e.r) }\nfunc (e errLexEscape) Usage() string        { return usageEscape }\nfunc (e errLexUTF8) Error() string          { return fmt.Sprintf(\"invalid UTF-8 byte: 0x%02x\", e.b) }\nfunc (e errLexUTF8) Usage() string          { return \"\" }\nfunc (e errLexInvalidNum) Error() string    { return fmt.Sprintf(\"invalid number: %q\", e.v) }\nfunc (e errLexInvalidNum) Usage() string    { return \"\" }\nfunc (e errLexInvalidDate) Error() string   { return fmt.Sprintf(\"invalid date: %q\", e.v) }\nfunc (e errLexInvalidDate) Usage() string   { return \"\" }\nfunc (e errLexInlineTableNL) Error() string { return \"newlines not allowed within inline tables\" }\nfunc (e errLexInlineTableNL) Usage() string { return usageInlineNewline }\nfunc (e errLexStringNL) Error() string      { return \"strings cannot contain newlines\" }\nfunc (e errLexStringNL) Usage() string      { return usageStringNewline }\nfunc (e errParseRange) Error() string       { return fmt.Sprintf(\"%v is out of range for %s\", e.i, e.size) }\nfunc (e errParseRange) Usage() string       { return usageIntOverflow }\nfunc (e errParseDuration) Error() string    { return fmt.Sprintf(\"invalid duration: %q\", e.d) }\nfunc (e errParseDuration) Usage() string    { return usageDuration }\n\nconst usageEscape = `\nA '\\' inside a \"-delimited string is interpreted as an escape character.\n\nThe following escape sequences are supported:\n\\b, \\t, \\n, \\f, \\r, \\\", \\\\, \\uXXXX, and \\UXXXXXXXX\n\nTo prevent a '\\' from being recognized as an escape character, use either:\n\n- a ' or '''-delimited string; escape characters aren't processed in them; or\n- write two backslashes to get a single backslash: '\\\\'.\n\nIf you're trying to add a Windows path (e.g. \"C:\\Users\\martin\") then using '/'\ninstead of '\\' will usually also work: \"C:/Users/martin\".\n`\n\nconst usageInlineNewline = `\nInline tables must always be on a single line:\n\n    table = {key = 42, second = 43}\n\nIt is invalid to split them over multiple lines like so:\n\n    # INVALID\n    table = {\n        key    = 42,\n        second = 43\n    }\n\nUse regular for this:\n\n    [table]\n    key    = 42\n    second = 43\n`\n\nconst usageStringNewline = `\nStrings must always be on a single line, and cannot span more than one line:\n\n    # INVALID\n    string = \"Hello,\n    world!\"\n\nInstead use \"\"\" or ''' to split strings over multiple lines:\n\n    string = \"\"\"Hello,\n    world!\"\"\"\n`\n\nconst usageIntOverflow = `\nThis number is too large; this may be an error in the TOML, but it can also be a\nbug in the program that uses too small of an integer.\n\nThe maximum and minimum values are:\n\n    size   │ lowest         │ highest\n    ───────┼────────────────┼──────────\n    int8   │ -128           │ 127\n    int16  │ -32,768        │ 32,767\n    int32  │ -2,147,483,648 │ 2,147,483,647\n    int64  │ -9.2 × 10¹⁷    │ 9.2 × 10¹⁷\n    uint8  │ 0              │ 255\n    uint16 │ 0              │ 65535\n    uint32 │ 0              │ 4294967295\n    uint64 │ 0              │ 1.8 × 10¹⁸\n\nint refers to int32 on 32-bit systems and int64 on 64-bit systems.\n`\n\nconst usageDuration = `\nA duration must be as \"number<unit>\", without any spaces. Valid units are:\n\n    ns         nanoseconds (billionth of a second)\n    us, µs     microseconds (millionth of a second)\n    ms         milliseconds (thousands of a second)\n    s          seconds\n    m          minutes\n    h          hours\n\nYou can combine multiple units; for example \"5m10s\" for 5 minutes and 10\nseconds.\n`\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/internal/tz.go",
    "content": "package internal\n\nimport \"time\"\n\n// Timezones used for local datetime, date, and time TOML types.\n//\n// The exact way times and dates without a timezone should be interpreted is not\n// well-defined in the TOML specification and left to the implementation. These\n// defaults to current local timezone offset of the computer, but this can be\n// changed by changing these variables before decoding.\n//\n// TODO:\n// Ideally we'd like to offer people the ability to configure the used timezone\n// by setting Decoder.Timezone and Encoder.Timezone; however, this is a bit\n// tricky: the reason we use three different variables for this is to support\n// round-tripping – without these specific TZ names we wouldn't know which\n// format to use.\n//\n// There isn't a good way to encode this right now though, and passing this sort\n// of information also ties in to various related issues such as string format\n// encoding, encoding of comments, etc.\n//\n// So, for the time being, just put this in internal until we can write a good\n// comprehensive API for doing all of this.\n//\n// The reason they're exported is because they're referred from in e.g.\n// internal/tag.\n//\n// Note that this behaviour is valid according to the TOML spec as the exact\n// behaviour is left up to implementations.\nvar (\n\tlocalOffset   = func() int { _, o := time.Now().Zone(); return o }()\n\tLocalDatetime = time.FixedZone(\"datetime-local\", localOffset)\n\tLocalDate     = time.FixedZone(\"date-local\", localOffset)\n\tLocalTime     = time.FixedZone(\"time-local\", localOffset)\n)\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/lex.go",
    "content": "package toml\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n)\n\ntype itemType int\n\nconst (\n\titemError itemType = iota\n\titemNIL            // used in the parser to indicate no type\n\titemEOF\n\titemText\n\titemString\n\titemRawString\n\titemMultilineString\n\titemRawMultilineString\n\titemBool\n\titemInteger\n\titemFloat\n\titemDatetime\n\titemArray // the start of an array\n\titemArrayEnd\n\titemTableStart\n\titemTableEnd\n\titemArrayTableStart\n\titemArrayTableEnd\n\titemKeyStart\n\titemKeyEnd\n\titemCommentStart\n\titemInlineTableStart\n\titemInlineTableEnd\n)\n\nconst eof = 0\n\ntype stateFn func(lx *lexer) stateFn\n\nfunc (p Position) String() string {\n\treturn fmt.Sprintf(\"at line %d; start %d; length %d\", p.Line, p.Start, p.Len)\n}\n\ntype lexer struct {\n\tinput    string\n\tstart    int\n\tpos      int\n\tline     int\n\tstate    stateFn\n\titems    chan item\n\ttomlNext bool\n\n\t// Allow for backing up up to 4 runes. This is necessary because TOML\n\t// contains 3-rune tokens (\"\"\" and ''').\n\tprevWidths [4]int\n\tnprev      int  // how many of prevWidths are in use\n\tatEOF      bool // If we emit an eof, we can still back up, but it is not OK to call next again.\n\n\t// A stack of state functions used to maintain context.\n\t//\n\t// The idea is to reuse parts of the state machine in various places. For\n\t// example, values can appear at the top level or within arbitrarily nested\n\t// arrays. The last state on the stack is used after a value has been lexed.\n\t// Similarly for comments.\n\tstack []stateFn\n}\n\ntype item struct {\n\ttyp itemType\n\tval string\n\terr error\n\tpos Position\n}\n\nfunc (lx *lexer) nextItem() item {\n\tfor {\n\t\tselect {\n\t\tcase item := <-lx.items:\n\t\t\treturn item\n\t\tdefault:\n\t\t\tlx.state = lx.state(lx)\n\t\t\t//fmt.Printf(\"     STATE %-24s  current: %-10s\tstack: %s\\n\", lx.state, lx.current(), lx.stack)\n\t\t}\n\t}\n}\n\nfunc lex(input string, tomlNext bool) *lexer {\n\tlx := &lexer{\n\t\tinput:    input,\n\t\tstate:    lexTop,\n\t\titems:    make(chan item, 10),\n\t\tstack:    make([]stateFn, 0, 10),\n\t\tline:     1,\n\t\ttomlNext: tomlNext,\n\t}\n\treturn lx\n}\n\nfunc (lx *lexer) push(state stateFn) {\n\tlx.stack = append(lx.stack, state)\n}\n\nfunc (lx *lexer) pop() stateFn {\n\tif len(lx.stack) == 0 {\n\t\treturn lx.errorf(\"BUG in lexer: no states to pop\")\n\t}\n\tlast := lx.stack[len(lx.stack)-1]\n\tlx.stack = lx.stack[0 : len(lx.stack)-1]\n\treturn last\n}\n\nfunc (lx *lexer) current() string {\n\treturn lx.input[lx.start:lx.pos]\n}\n\nfunc (lx lexer) getPos() Position {\n\tp := Position{\n\t\tLine:  lx.line,\n\t\tStart: lx.start,\n\t\tLen:   lx.pos - lx.start,\n\t}\n\tif p.Len <= 0 {\n\t\tp.Len = 1\n\t}\n\treturn p\n}\n\nfunc (lx *lexer) emit(typ itemType) {\n\t// Needed for multiline strings ending with an incomplete UTF-8 sequence.\n\tif lx.start > lx.pos {\n\t\tlx.error(errLexUTF8{lx.input[lx.pos]})\n\t\treturn\n\t}\n\tlx.items <- item{typ: typ, pos: lx.getPos(), val: lx.current()}\n\tlx.start = lx.pos\n}\n\nfunc (lx *lexer) emitTrim(typ itemType) {\n\tlx.items <- item{typ: typ, pos: lx.getPos(), val: strings.TrimSpace(lx.current())}\n\tlx.start = lx.pos\n}\n\nfunc (lx *lexer) next() (r rune) {\n\tif lx.atEOF {\n\t\tpanic(\"BUG in lexer: next called after EOF\")\n\t}\n\tif lx.pos >= len(lx.input) {\n\t\tlx.atEOF = true\n\t\treturn eof\n\t}\n\n\tif lx.input[lx.pos] == '\\n' {\n\t\tlx.line++\n\t}\n\tlx.prevWidths[3] = lx.prevWidths[2]\n\tlx.prevWidths[2] = lx.prevWidths[1]\n\tlx.prevWidths[1] = lx.prevWidths[0]\n\tif lx.nprev < 4 {\n\t\tlx.nprev++\n\t}\n\n\tr, w := utf8.DecodeRuneInString(lx.input[lx.pos:])\n\tif r == utf8.RuneError {\n\t\tlx.error(errLexUTF8{lx.input[lx.pos]})\n\t\treturn utf8.RuneError\n\t}\n\n\t// Note: don't use peek() here, as this calls next().\n\tif isControl(r) || (r == '\\r' && (len(lx.input)-1 == lx.pos || lx.input[lx.pos+1] != '\\n')) {\n\t\tlx.errorControlChar(r)\n\t\treturn utf8.RuneError\n\t}\n\n\tlx.prevWidths[0] = w\n\tlx.pos += w\n\treturn r\n}\n\n// ignore skips over the pending input before this point.\nfunc (lx *lexer) ignore() {\n\tlx.start = lx.pos\n}\n\n// backup steps back one rune. Can be called 4 times between calls to next.\nfunc (lx *lexer) backup() {\n\tif lx.atEOF {\n\t\tlx.atEOF = false\n\t\treturn\n\t}\n\tif lx.nprev < 1 {\n\t\tpanic(\"BUG in lexer: backed up too far\")\n\t}\n\tw := lx.prevWidths[0]\n\tlx.prevWidths[0] = lx.prevWidths[1]\n\tlx.prevWidths[1] = lx.prevWidths[2]\n\tlx.prevWidths[2] = lx.prevWidths[3]\n\tlx.nprev--\n\n\tlx.pos -= w\n\tif lx.pos < len(lx.input) && lx.input[lx.pos] == '\\n' {\n\t\tlx.line--\n\t}\n}\n\n// accept consumes the next rune if it's equal to `valid`.\nfunc (lx *lexer) accept(valid rune) bool {\n\tif lx.next() == valid {\n\t\treturn true\n\t}\n\tlx.backup()\n\treturn false\n}\n\n// peek returns but does not consume the next rune in the input.\nfunc (lx *lexer) peek() rune {\n\tr := lx.next()\n\tlx.backup()\n\treturn r\n}\n\n// skip ignores all input that matches the given predicate.\nfunc (lx *lexer) skip(pred func(rune) bool) {\n\tfor {\n\t\tr := lx.next()\n\t\tif pred(r) {\n\t\t\tcontinue\n\t\t}\n\t\tlx.backup()\n\t\tlx.ignore()\n\t\treturn\n\t}\n}\n\n// error stops all lexing by emitting an error and returning `nil`.\n//\n// Note that any value that is a character is escaped if it's a special\n// character (newlines, tabs, etc.).\nfunc (lx *lexer) error(err error) stateFn {\n\tif lx.atEOF {\n\t\treturn lx.errorPrevLine(err)\n\t}\n\tlx.items <- item{typ: itemError, pos: lx.getPos(), err: err}\n\treturn nil\n}\n\n// errorfPrevline is like error(), but sets the position to the last column of\n// the previous line.\n//\n// This is so that unexpected EOF or NL errors don't show on a new blank line.\nfunc (lx *lexer) errorPrevLine(err error) stateFn {\n\tpos := lx.getPos()\n\tpos.Line--\n\tpos.Len = 1\n\tpos.Start = lx.pos - 1\n\tlx.items <- item{typ: itemError, pos: pos, err: err}\n\treturn nil\n}\n\n// errorPos is like error(), but allows explicitly setting the position.\nfunc (lx *lexer) errorPos(start, length int, err error) stateFn {\n\tpos := lx.getPos()\n\tpos.Start = start\n\tpos.Len = length\n\tlx.items <- item{typ: itemError, pos: pos, err: err}\n\treturn nil\n}\n\n// errorf is like error, and creates a new error.\nfunc (lx *lexer) errorf(format string, values ...interface{}) stateFn {\n\tif lx.atEOF {\n\t\tpos := lx.getPos()\n\t\tpos.Line--\n\t\tpos.Len = 1\n\t\tpos.Start = lx.pos - 1\n\t\tlx.items <- item{typ: itemError, pos: pos, err: fmt.Errorf(format, values...)}\n\t\treturn nil\n\t}\n\tlx.items <- item{typ: itemError, pos: lx.getPos(), err: fmt.Errorf(format, values...)}\n\treturn nil\n}\n\nfunc (lx *lexer) errorControlChar(cc rune) stateFn {\n\treturn lx.errorPos(lx.pos-1, 1, errLexControl{cc})\n}\n\n// lexTop consumes elements at the top level of TOML data.\nfunc lexTop(lx *lexer) stateFn {\n\tr := lx.next()\n\tif isWhitespace(r) || isNL(r) {\n\t\treturn lexSkip(lx, lexTop)\n\t}\n\tswitch r {\n\tcase '#':\n\t\tlx.push(lexTop)\n\t\treturn lexCommentStart\n\tcase '[':\n\t\treturn lexTableStart\n\tcase eof:\n\t\tif lx.pos > lx.start {\n\t\t\treturn lx.errorf(\"unexpected EOF\")\n\t\t}\n\t\tlx.emit(itemEOF)\n\t\treturn nil\n\t}\n\n\t// At this point, the only valid item can be a key, so we back up\n\t// and let the key lexer do the rest.\n\tlx.backup()\n\tlx.push(lexTopEnd)\n\treturn lexKeyStart\n}\n\n// lexTopEnd is entered whenever a top-level item has been consumed. (A value\n// or a table.) It must see only whitespace, and will turn back to lexTop\n// upon a newline. If it sees EOF, it will quit the lexer successfully.\nfunc lexTopEnd(lx *lexer) stateFn {\n\tr := lx.next()\n\tswitch {\n\tcase r == '#':\n\t\t// a comment will read to a newline for us.\n\t\tlx.push(lexTop)\n\t\treturn lexCommentStart\n\tcase isWhitespace(r):\n\t\treturn lexTopEnd\n\tcase isNL(r):\n\t\tlx.ignore()\n\t\treturn lexTop\n\tcase r == eof:\n\t\tlx.emit(itemEOF)\n\t\treturn nil\n\t}\n\treturn lx.errorf(\n\t\t\"expected a top-level item to end with a newline, comment, or EOF, but got %q instead\",\n\t\tr)\n}\n\n// lexTable lexes the beginning of a table. Namely, it makes sure that\n// it starts with a character other than '.' and ']'.\n// It assumes that '[' has already been consumed.\n// It also handles the case that this is an item in an array of tables.\n// e.g., '[[name]]'.\nfunc lexTableStart(lx *lexer) stateFn {\n\tif lx.peek() == '[' {\n\t\tlx.next()\n\t\tlx.emit(itemArrayTableStart)\n\t\tlx.push(lexArrayTableEnd)\n\t} else {\n\t\tlx.emit(itemTableStart)\n\t\tlx.push(lexTableEnd)\n\t}\n\treturn lexTableNameStart\n}\n\nfunc lexTableEnd(lx *lexer) stateFn {\n\tlx.emit(itemTableEnd)\n\treturn lexTopEnd\n}\n\nfunc lexArrayTableEnd(lx *lexer) stateFn {\n\tif r := lx.next(); r != ']' {\n\t\treturn lx.errorf(\"expected end of table array name delimiter ']', but got %q instead\", r)\n\t}\n\tlx.emit(itemArrayTableEnd)\n\treturn lexTopEnd\n}\n\nfunc lexTableNameStart(lx *lexer) stateFn {\n\tlx.skip(isWhitespace)\n\tswitch r := lx.peek(); {\n\tcase r == ']' || r == eof:\n\t\treturn lx.errorf(\"unexpected end of table name (table names cannot be empty)\")\n\tcase r == '.':\n\t\treturn lx.errorf(\"unexpected table separator (table names cannot be empty)\")\n\tcase r == '\"' || r == '\\'':\n\t\tlx.ignore()\n\t\tlx.push(lexTableNameEnd)\n\t\treturn lexQuotedName\n\tdefault:\n\t\tlx.push(lexTableNameEnd)\n\t\treturn lexBareName\n\t}\n}\n\n// lexTableNameEnd reads the end of a piece of a table name, optionally\n// consuming whitespace.\nfunc lexTableNameEnd(lx *lexer) stateFn {\n\tlx.skip(isWhitespace)\n\tswitch r := lx.next(); {\n\tcase isWhitespace(r):\n\t\treturn lexTableNameEnd\n\tcase r == '.':\n\t\tlx.ignore()\n\t\treturn lexTableNameStart\n\tcase r == ']':\n\t\treturn lx.pop()\n\tdefault:\n\t\treturn lx.errorf(\"expected '.' or ']' to end table name, but got %q instead\", r)\n\t}\n}\n\n// lexBareName lexes one part of a key or table.\n//\n// It assumes that at least one valid character for the table has already been\n// read.\n//\n// Lexes only one part, e.g. only 'a' inside 'a.b'.\nfunc lexBareName(lx *lexer) stateFn {\n\tr := lx.next()\n\tif isBareKeyChar(r, lx.tomlNext) {\n\t\treturn lexBareName\n\t}\n\tlx.backup()\n\tlx.emit(itemText)\n\treturn lx.pop()\n}\n\n// lexBareName lexes one part of a key or table.\n//\n// It assumes that at least one valid character for the table has already been\n// read.\n//\n// Lexes only one part, e.g. only '\"a\"' inside '\"a\".b'.\nfunc lexQuotedName(lx *lexer) stateFn {\n\tr := lx.next()\n\tswitch {\n\tcase isWhitespace(r):\n\t\treturn lexSkip(lx, lexValue)\n\tcase r == '\"':\n\t\tlx.ignore() // ignore the '\"'\n\t\treturn lexString\n\tcase r == '\\'':\n\t\tlx.ignore() // ignore the \"'\"\n\t\treturn lexRawString\n\tcase r == eof:\n\t\treturn lx.errorf(\"unexpected EOF; expected value\")\n\tdefault:\n\t\treturn lx.errorf(\"expected value but found %q instead\", r)\n\t}\n}\n\n// lexKeyStart consumes all key parts until a '='.\nfunc lexKeyStart(lx *lexer) stateFn {\n\tlx.skip(isWhitespace)\n\tswitch r := lx.peek(); {\n\tcase r == '=' || r == eof:\n\t\treturn lx.errorf(\"unexpected '=': key name appears blank\")\n\tcase r == '.':\n\t\treturn lx.errorf(\"unexpected '.': keys cannot start with a '.'\")\n\tcase r == '\"' || r == '\\'':\n\t\tlx.ignore()\n\t\tfallthrough\n\tdefault: // Bare key\n\t\tlx.emit(itemKeyStart)\n\t\treturn lexKeyNameStart\n\t}\n}\n\nfunc lexKeyNameStart(lx *lexer) stateFn {\n\tlx.skip(isWhitespace)\n\tswitch r := lx.peek(); {\n\tcase r == '=' || r == eof:\n\t\treturn lx.errorf(\"unexpected '='\")\n\tcase r == '.':\n\t\treturn lx.errorf(\"unexpected '.'\")\n\tcase r == '\"' || r == '\\'':\n\t\tlx.ignore()\n\t\tlx.push(lexKeyEnd)\n\t\treturn lexQuotedName\n\tdefault:\n\t\tlx.push(lexKeyEnd)\n\t\treturn lexBareName\n\t}\n}\n\n// lexKeyEnd consumes the end of a key and trims whitespace (up to the key\n// separator).\nfunc lexKeyEnd(lx *lexer) stateFn {\n\tlx.skip(isWhitespace)\n\tswitch r := lx.next(); {\n\tcase isWhitespace(r):\n\t\treturn lexSkip(lx, lexKeyEnd)\n\tcase r == eof:\n\t\treturn lx.errorf(\"unexpected EOF; expected key separator '='\")\n\tcase r == '.':\n\t\tlx.ignore()\n\t\treturn lexKeyNameStart\n\tcase r == '=':\n\t\tlx.emit(itemKeyEnd)\n\t\treturn lexSkip(lx, lexValue)\n\tdefault:\n\t\treturn lx.errorf(\"expected '.' or '=', but got %q instead\", r)\n\t}\n}\n\n// lexValue starts the consumption of a value anywhere a value is expected.\n// lexValue will ignore whitespace.\n// After a value is lexed, the last state on the next is popped and returned.\nfunc lexValue(lx *lexer) stateFn {\n\t// We allow whitespace to precede a value, but NOT newlines.\n\t// In array syntax, the array states are responsible for ignoring newlines.\n\tr := lx.next()\n\tswitch {\n\tcase isWhitespace(r):\n\t\treturn lexSkip(lx, lexValue)\n\tcase isDigit(r):\n\t\tlx.backup() // avoid an extra state and use the same as above\n\t\treturn lexNumberOrDateStart\n\t}\n\tswitch r {\n\tcase '[':\n\t\tlx.ignore()\n\t\tlx.emit(itemArray)\n\t\treturn lexArrayValue\n\tcase '{':\n\t\tlx.ignore()\n\t\tlx.emit(itemInlineTableStart)\n\t\treturn lexInlineTableValue\n\tcase '\"':\n\t\tif lx.accept('\"') {\n\t\t\tif lx.accept('\"') {\n\t\t\t\tlx.ignore() // Ignore \"\"\"\n\t\t\t\treturn lexMultilineString\n\t\t\t}\n\t\t\tlx.backup()\n\t\t}\n\t\tlx.ignore() // ignore the '\"'\n\t\treturn lexString\n\tcase '\\'':\n\t\tif lx.accept('\\'') {\n\t\t\tif lx.accept('\\'') {\n\t\t\t\tlx.ignore() // Ignore \"\"\"\n\t\t\t\treturn lexMultilineRawString\n\t\t\t}\n\t\t\tlx.backup()\n\t\t}\n\t\tlx.ignore() // ignore the \"'\"\n\t\treturn lexRawString\n\tcase '.': // special error case, be kind to users\n\t\treturn lx.errorf(\"floats must start with a digit, not '.'\")\n\tcase 'i', 'n':\n\t\tif (lx.accept('n') && lx.accept('f')) || (lx.accept('a') && lx.accept('n')) {\n\t\t\tlx.emit(itemFloat)\n\t\t\treturn lx.pop()\n\t\t}\n\tcase '-', '+':\n\t\treturn lexDecimalNumberStart\n\t}\n\tif unicode.IsLetter(r) {\n\t\t// Be permissive here; lexBool will give a nice error if the\n\t\t// user wrote something like\n\t\t//   x = foo\n\t\t// (i.e. not 'true' or 'false' but is something else word-like.)\n\t\tlx.backup()\n\t\treturn lexBool\n\t}\n\tif r == eof {\n\t\treturn lx.errorf(\"unexpected EOF; expected value\")\n\t}\n\treturn lx.errorf(\"expected value but found %q instead\", r)\n}\n\n// lexArrayValue consumes one value in an array. It assumes that '[' or ','\n// have already been consumed. All whitespace and newlines are ignored.\nfunc lexArrayValue(lx *lexer) stateFn {\n\tr := lx.next()\n\tswitch {\n\tcase isWhitespace(r) || isNL(r):\n\t\treturn lexSkip(lx, lexArrayValue)\n\tcase r == '#':\n\t\tlx.push(lexArrayValue)\n\t\treturn lexCommentStart\n\tcase r == ',':\n\t\treturn lx.errorf(\"unexpected comma\")\n\tcase r == ']':\n\t\treturn lexArrayEnd\n\t}\n\n\tlx.backup()\n\tlx.push(lexArrayValueEnd)\n\treturn lexValue\n}\n\n// lexArrayValueEnd consumes everything between the end of an array value and\n// the next value (or the end of the array): it ignores whitespace and newlines\n// and expects either a ',' or a ']'.\nfunc lexArrayValueEnd(lx *lexer) stateFn {\n\tswitch r := lx.next(); {\n\tcase isWhitespace(r) || isNL(r):\n\t\treturn lexSkip(lx, lexArrayValueEnd)\n\tcase r == '#':\n\t\tlx.push(lexArrayValueEnd)\n\t\treturn lexCommentStart\n\tcase r == ',':\n\t\tlx.ignore()\n\t\treturn lexArrayValue // move on to the next value\n\tcase r == ']':\n\t\treturn lexArrayEnd\n\tdefault:\n\t\treturn lx.errorf(\"expected a comma (',') or array terminator (']'), but got %s\", runeOrEOF(r))\n\t}\n}\n\n// lexArrayEnd finishes the lexing of an array.\n// It assumes that a ']' has just been consumed.\nfunc lexArrayEnd(lx *lexer) stateFn {\n\tlx.ignore()\n\tlx.emit(itemArrayEnd)\n\treturn lx.pop()\n}\n\n// lexInlineTableValue consumes one key/value pair in an inline table.\n// It assumes that '{' or ',' have already been consumed. Whitespace is ignored.\nfunc lexInlineTableValue(lx *lexer) stateFn {\n\tr := lx.next()\n\tswitch {\n\tcase isWhitespace(r):\n\t\treturn lexSkip(lx, lexInlineTableValue)\n\tcase isNL(r):\n\t\tif lx.tomlNext {\n\t\t\treturn lexSkip(lx, lexInlineTableValue)\n\t\t}\n\t\treturn lx.errorPrevLine(errLexInlineTableNL{})\n\tcase r == '#':\n\t\tlx.push(lexInlineTableValue)\n\t\treturn lexCommentStart\n\tcase r == ',':\n\t\treturn lx.errorf(\"unexpected comma\")\n\tcase r == '}':\n\t\treturn lexInlineTableEnd\n\t}\n\tlx.backup()\n\tlx.push(lexInlineTableValueEnd)\n\treturn lexKeyStart\n}\n\n// lexInlineTableValueEnd consumes everything between the end of an inline table\n// key/value pair and the next pair (or the end of the table):\n// it ignores whitespace and expects either a ',' or a '}'.\nfunc lexInlineTableValueEnd(lx *lexer) stateFn {\n\tswitch r := lx.next(); {\n\tcase isWhitespace(r):\n\t\treturn lexSkip(lx, lexInlineTableValueEnd)\n\tcase isNL(r):\n\t\tif lx.tomlNext {\n\t\t\treturn lexSkip(lx, lexInlineTableValueEnd)\n\t\t}\n\t\treturn lx.errorPrevLine(errLexInlineTableNL{})\n\tcase r == '#':\n\t\tlx.push(lexInlineTableValueEnd)\n\t\treturn lexCommentStart\n\tcase r == ',':\n\t\tlx.ignore()\n\t\tlx.skip(isWhitespace)\n\t\tif lx.peek() == '}' {\n\t\t\tif lx.tomlNext {\n\t\t\t\treturn lexInlineTableValueEnd\n\t\t\t}\n\t\t\treturn lx.errorf(\"trailing comma not allowed in inline tables\")\n\t\t}\n\t\treturn lexInlineTableValue\n\tcase r == '}':\n\t\treturn lexInlineTableEnd\n\tdefault:\n\t\treturn lx.errorf(\"expected a comma or an inline table terminator '}', but got %s instead\", runeOrEOF(r))\n\t}\n}\n\nfunc runeOrEOF(r rune) string {\n\tif r == eof {\n\t\treturn \"end of file\"\n\t}\n\treturn \"'\" + string(r) + \"'\"\n}\n\n// lexInlineTableEnd finishes the lexing of an inline table.\n// It assumes that a '}' has just been consumed.\nfunc lexInlineTableEnd(lx *lexer) stateFn {\n\tlx.ignore()\n\tlx.emit(itemInlineTableEnd)\n\treturn lx.pop()\n}\n\n// lexString consumes the inner contents of a string. It assumes that the\n// beginning '\"' has already been consumed and ignored.\nfunc lexString(lx *lexer) stateFn {\n\tr := lx.next()\n\tswitch {\n\tcase r == eof:\n\t\treturn lx.errorf(`unexpected EOF; expected '\"'`)\n\tcase isNL(r):\n\t\treturn lx.errorPrevLine(errLexStringNL{})\n\tcase r == '\\\\':\n\t\tlx.push(lexString)\n\t\treturn lexStringEscape\n\tcase r == '\"':\n\t\tlx.backup()\n\t\tlx.emit(itemString)\n\t\tlx.next()\n\t\tlx.ignore()\n\t\treturn lx.pop()\n\t}\n\treturn lexString\n}\n\n// lexMultilineString consumes the inner contents of a string. It assumes that\n// the beginning '\"\"\"' has already been consumed and ignored.\nfunc lexMultilineString(lx *lexer) stateFn {\n\tr := lx.next()\n\tswitch r {\n\tdefault:\n\t\treturn lexMultilineString\n\tcase eof:\n\t\treturn lx.errorf(`unexpected EOF; expected '\"\"\"'`)\n\tcase '\\\\':\n\t\treturn lexMultilineStringEscape\n\tcase '\"':\n\t\t/// Found \" → try to read two more \"\".\n\t\tif lx.accept('\"') {\n\t\t\tif lx.accept('\"') {\n\t\t\t\t/// Peek ahead: the string can contain \" and \"\", including at the\n\t\t\t\t/// end: \"\"\"str\"\"\"\"\"\n\t\t\t\t/// 6 or more at the end, however, is an error.\n\t\t\t\tif lx.peek() == '\"' {\n\t\t\t\t\t/// Check if we already lexed 5 's; if so we have 6 now, and\n\t\t\t\t\t/// that's just too many man!\n\t\t\t\t\t///\n\t\t\t\t\t/// Second check is for the edge case:\n\t\t\t\t\t///\n\t\t\t\t\t///            two quotes allowed.\n\t\t\t\t\t///            vv\n\t\t\t\t\t///   \"\"\"lol \\\"\"\"\"\"\"\n\t\t\t\t\t///          ^^  ^^^---- closing three\n\t\t\t\t\t///     escaped\n\t\t\t\t\t///\n\t\t\t\t\t/// But ugly, but it works\n\t\t\t\t\tif strings.HasSuffix(lx.current(), `\"\"\"\"\"`) && !strings.HasSuffix(lx.current(), `\\\"\"\"\"\"`) {\n\t\t\t\t\t\treturn lx.errorf(`unexpected '\"\"\"\"\"\"'`)\n\t\t\t\t\t}\n\t\t\t\t\tlx.backup()\n\t\t\t\t\tlx.backup()\n\t\t\t\t\treturn lexMultilineString\n\t\t\t\t}\n\n\t\t\t\tlx.backup() /// backup: don't include the \"\"\" in the item.\n\t\t\t\tlx.backup()\n\t\t\t\tlx.backup()\n\t\t\t\tlx.emit(itemMultilineString)\n\t\t\t\tlx.next() /// Read over ''' again and discard it.\n\t\t\t\tlx.next()\n\t\t\t\tlx.next()\n\t\t\t\tlx.ignore()\n\t\t\t\treturn lx.pop()\n\t\t\t}\n\t\t\tlx.backup()\n\t\t}\n\t\treturn lexMultilineString\n\t}\n}\n\n// lexRawString consumes a raw string. Nothing can be escaped in such a string.\n// It assumes that the beginning \"'\" has already been consumed and ignored.\nfunc lexRawString(lx *lexer) stateFn {\n\tr := lx.next()\n\tswitch {\n\tdefault:\n\t\treturn lexRawString\n\tcase r == eof:\n\t\treturn lx.errorf(`unexpected EOF; expected \"'\"`)\n\tcase isNL(r):\n\t\treturn lx.errorPrevLine(errLexStringNL{})\n\tcase r == '\\'':\n\t\tlx.backup()\n\t\tlx.emit(itemRawString)\n\t\tlx.next()\n\t\tlx.ignore()\n\t\treturn lx.pop()\n\t}\n}\n\n// lexMultilineRawString consumes a raw string. Nothing can be escaped in such a\n// string. It assumes that the beginning triple-' has already been consumed and\n// ignored.\nfunc lexMultilineRawString(lx *lexer) stateFn {\n\tr := lx.next()\n\tswitch r {\n\tdefault:\n\t\treturn lexMultilineRawString\n\tcase eof:\n\t\treturn lx.errorf(`unexpected EOF; expected \"'''\"`)\n\tcase '\\'':\n\t\t/// Found ' → try to read two more ''.\n\t\tif lx.accept('\\'') {\n\t\t\tif lx.accept('\\'') {\n\t\t\t\t/// Peek ahead: the string can contain ' and '', including at the\n\t\t\t\t/// end: '''str'''''\n\t\t\t\t/// 6 or more at the end, however, is an error.\n\t\t\t\tif lx.peek() == '\\'' {\n\t\t\t\t\t/// Check if we already lexed 5 's; if so we have 6 now, and\n\t\t\t\t\t/// that's just too many man!\n\t\t\t\t\tif strings.HasSuffix(lx.current(), \"'''''\") {\n\t\t\t\t\t\treturn lx.errorf(`unexpected \"''''''\"`)\n\t\t\t\t\t}\n\t\t\t\t\tlx.backup()\n\t\t\t\t\tlx.backup()\n\t\t\t\t\treturn lexMultilineRawString\n\t\t\t\t}\n\n\t\t\t\tlx.backup() /// backup: don't include the ''' in the item.\n\t\t\t\tlx.backup()\n\t\t\t\tlx.backup()\n\t\t\t\tlx.emit(itemRawMultilineString)\n\t\t\t\tlx.next() /// Read over ''' again and discard it.\n\t\t\t\tlx.next()\n\t\t\t\tlx.next()\n\t\t\t\tlx.ignore()\n\t\t\t\treturn lx.pop()\n\t\t\t}\n\t\t\tlx.backup()\n\t\t}\n\t\treturn lexMultilineRawString\n\t}\n}\n\n// lexMultilineStringEscape consumes an escaped character. It assumes that the\n// preceding '\\\\' has already been consumed.\nfunc lexMultilineStringEscape(lx *lexer) stateFn {\n\tif isNL(lx.next()) { /// \\ escaping newline.\n\t\treturn lexMultilineString\n\t}\n\tlx.backup()\n\tlx.push(lexMultilineString)\n\treturn lexStringEscape(lx)\n}\n\nfunc lexStringEscape(lx *lexer) stateFn {\n\tr := lx.next()\n\tswitch r {\n\tcase 'e':\n\t\tif !lx.tomlNext {\n\t\t\treturn lx.error(errLexEscape{r})\n\t\t}\n\t\tfallthrough\n\tcase 'b':\n\t\tfallthrough\n\tcase 't':\n\t\tfallthrough\n\tcase 'n':\n\t\tfallthrough\n\tcase 'f':\n\t\tfallthrough\n\tcase 'r':\n\t\tfallthrough\n\tcase '\"':\n\t\tfallthrough\n\tcase ' ', '\\t':\n\t\t// Inside \"\"\" .. \"\"\" strings you can use \\ to escape newlines, and any\n\t\t// amount of whitespace can be between the \\ and \\n.\n\t\tfallthrough\n\tcase '\\\\':\n\t\treturn lx.pop()\n\tcase 'x':\n\t\tif !lx.tomlNext {\n\t\t\treturn lx.error(errLexEscape{r})\n\t\t}\n\t\treturn lexHexEscape\n\tcase 'u':\n\t\treturn lexShortUnicodeEscape\n\tcase 'U':\n\t\treturn lexLongUnicodeEscape\n\t}\n\treturn lx.error(errLexEscape{r})\n}\n\nfunc lexHexEscape(lx *lexer) stateFn {\n\tvar r rune\n\tfor i := 0; i < 2; i++ {\n\t\tr = lx.next()\n\t\tif !isHexadecimal(r) {\n\t\t\treturn lx.errorf(\n\t\t\t\t`expected two hexadecimal digits after '\\x', but got %q instead`,\n\t\t\t\tlx.current())\n\t\t}\n\t}\n\treturn lx.pop()\n}\n\nfunc lexShortUnicodeEscape(lx *lexer) stateFn {\n\tvar r rune\n\tfor i := 0; i < 4; i++ {\n\t\tr = lx.next()\n\t\tif !isHexadecimal(r) {\n\t\t\treturn lx.errorf(\n\t\t\t\t`expected four hexadecimal digits after '\\u', but got %q instead`,\n\t\t\t\tlx.current())\n\t\t}\n\t}\n\treturn lx.pop()\n}\n\nfunc lexLongUnicodeEscape(lx *lexer) stateFn {\n\tvar r rune\n\tfor i := 0; i < 8; i++ {\n\t\tr = lx.next()\n\t\tif !isHexadecimal(r) {\n\t\t\treturn lx.errorf(\n\t\t\t\t`expected eight hexadecimal digits after '\\U', but got %q instead`,\n\t\t\t\tlx.current())\n\t\t}\n\t}\n\treturn lx.pop()\n}\n\n// lexNumberOrDateStart processes the first character of a value which begins\n// with a digit. It exists to catch values starting with '0', so that\n// lexBaseNumberOrDate can differentiate base prefixed integers from other\n// types.\nfunc lexNumberOrDateStart(lx *lexer) stateFn {\n\tr := lx.next()\n\tswitch r {\n\tcase '0':\n\t\treturn lexBaseNumberOrDate\n\t}\n\n\tif !isDigit(r) {\n\t\t// The only way to reach this state is if the value starts\n\t\t// with a digit, so specifically treat anything else as an\n\t\t// error.\n\t\treturn lx.errorf(\"expected a digit but got %q\", r)\n\t}\n\n\treturn lexNumberOrDate\n}\n\n// lexNumberOrDate consumes either an integer, float or datetime.\nfunc lexNumberOrDate(lx *lexer) stateFn {\n\tr := lx.next()\n\tif isDigit(r) {\n\t\treturn lexNumberOrDate\n\t}\n\tswitch r {\n\tcase '-', ':':\n\t\treturn lexDatetime\n\tcase '_':\n\t\treturn lexDecimalNumber\n\tcase '.', 'e', 'E':\n\t\treturn lexFloat\n\t}\n\n\tlx.backup()\n\tlx.emit(itemInteger)\n\treturn lx.pop()\n}\n\n// lexDatetime consumes a Datetime, to a first approximation.\n// The parser validates that it matches one of the accepted formats.\nfunc lexDatetime(lx *lexer) stateFn {\n\tr := lx.next()\n\tif isDigit(r) {\n\t\treturn lexDatetime\n\t}\n\tswitch r {\n\tcase '-', ':', 'T', 't', ' ', '.', 'Z', 'z', '+':\n\t\treturn lexDatetime\n\t}\n\n\tlx.backup()\n\tlx.emitTrim(itemDatetime)\n\treturn lx.pop()\n}\n\n// lexHexInteger consumes a hexadecimal integer after seeing the '0x' prefix.\nfunc lexHexInteger(lx *lexer) stateFn {\n\tr := lx.next()\n\tif isHexadecimal(r) {\n\t\treturn lexHexInteger\n\t}\n\tswitch r {\n\tcase '_':\n\t\treturn lexHexInteger\n\t}\n\n\tlx.backup()\n\tlx.emit(itemInteger)\n\treturn lx.pop()\n}\n\n// lexOctalInteger consumes an octal integer after seeing the '0o' prefix.\nfunc lexOctalInteger(lx *lexer) stateFn {\n\tr := lx.next()\n\tif isOctal(r) {\n\t\treturn lexOctalInteger\n\t}\n\tswitch r {\n\tcase '_':\n\t\treturn lexOctalInteger\n\t}\n\n\tlx.backup()\n\tlx.emit(itemInteger)\n\treturn lx.pop()\n}\n\n// lexBinaryInteger consumes a binary integer after seeing the '0b' prefix.\nfunc lexBinaryInteger(lx *lexer) stateFn {\n\tr := lx.next()\n\tif isBinary(r) {\n\t\treturn lexBinaryInteger\n\t}\n\tswitch r {\n\tcase '_':\n\t\treturn lexBinaryInteger\n\t}\n\n\tlx.backup()\n\tlx.emit(itemInteger)\n\treturn lx.pop()\n}\n\n// lexDecimalNumber consumes a decimal float or integer.\nfunc lexDecimalNumber(lx *lexer) stateFn {\n\tr := lx.next()\n\tif isDigit(r) {\n\t\treturn lexDecimalNumber\n\t}\n\tswitch r {\n\tcase '.', 'e', 'E':\n\t\treturn lexFloat\n\tcase '_':\n\t\treturn lexDecimalNumber\n\t}\n\n\tlx.backup()\n\tlx.emit(itemInteger)\n\treturn lx.pop()\n}\n\n// lexDecimalNumber consumes the first digit of a number beginning with a sign.\n// It assumes the sign has already been consumed. Values which start with a sign\n// are only allowed to be decimal integers or floats.\n//\n// The special \"nan\" and \"inf\" values are also recognized.\nfunc lexDecimalNumberStart(lx *lexer) stateFn {\n\tr := lx.next()\n\n\t// Special error cases to give users better error messages\n\tswitch r {\n\tcase 'i':\n\t\tif !lx.accept('n') || !lx.accept('f') {\n\t\t\treturn lx.errorf(\"invalid float: '%s'\", lx.current())\n\t\t}\n\t\tlx.emit(itemFloat)\n\t\treturn lx.pop()\n\tcase 'n':\n\t\tif !lx.accept('a') || !lx.accept('n') {\n\t\t\treturn lx.errorf(\"invalid float: '%s'\", lx.current())\n\t\t}\n\t\tlx.emit(itemFloat)\n\t\treturn lx.pop()\n\tcase '0':\n\t\tp := lx.peek()\n\t\tswitch p {\n\t\tcase 'b', 'o', 'x':\n\t\t\treturn lx.errorf(\"cannot use sign with non-decimal numbers: '%s%c'\", lx.current(), p)\n\t\t}\n\tcase '.':\n\t\treturn lx.errorf(\"floats must start with a digit, not '.'\")\n\t}\n\n\tif isDigit(r) {\n\t\treturn lexDecimalNumber\n\t}\n\n\treturn lx.errorf(\"expected a digit but got %q\", r)\n}\n\n// lexBaseNumberOrDate differentiates between the possible values which\n// start with '0'. It assumes that before reaching this state, the initial '0'\n// has been consumed.\nfunc lexBaseNumberOrDate(lx *lexer) stateFn {\n\tr := lx.next()\n\t// Note: All datetimes start with at least two digits, so we don't\n\t// handle date characters (':', '-', etc.) here.\n\tif isDigit(r) {\n\t\treturn lexNumberOrDate\n\t}\n\tswitch r {\n\tcase '_':\n\t\t// Can only be decimal, because there can't be an underscore\n\t\t// between the '0' and the base designator, and dates can't\n\t\t// contain underscores.\n\t\treturn lexDecimalNumber\n\tcase '.', 'e', 'E':\n\t\treturn lexFloat\n\tcase 'b':\n\t\tr = lx.peek()\n\t\tif !isBinary(r) {\n\t\t\tlx.errorf(\"not a binary number: '%s%c'\", lx.current(), r)\n\t\t}\n\t\treturn lexBinaryInteger\n\tcase 'o':\n\t\tr = lx.peek()\n\t\tif !isOctal(r) {\n\t\t\tlx.errorf(\"not an octal number: '%s%c'\", lx.current(), r)\n\t\t}\n\t\treturn lexOctalInteger\n\tcase 'x':\n\t\tr = lx.peek()\n\t\tif !isHexadecimal(r) {\n\t\t\tlx.errorf(\"not a hexidecimal number: '%s%c'\", lx.current(), r)\n\t\t}\n\t\treturn lexHexInteger\n\t}\n\n\tlx.backup()\n\tlx.emit(itemInteger)\n\treturn lx.pop()\n}\n\n// lexFloat consumes the elements of a float. It allows any sequence of\n// float-like characters, so floats emitted by the lexer are only a first\n// approximation and must be validated by the parser.\nfunc lexFloat(lx *lexer) stateFn {\n\tr := lx.next()\n\tif isDigit(r) {\n\t\treturn lexFloat\n\t}\n\tswitch r {\n\tcase '_', '.', '-', '+', 'e', 'E':\n\t\treturn lexFloat\n\t}\n\n\tlx.backup()\n\tlx.emit(itemFloat)\n\treturn lx.pop()\n}\n\n// lexBool consumes a bool string: 'true' or 'false.\nfunc lexBool(lx *lexer) stateFn {\n\tvar rs []rune\n\tfor {\n\t\tr := lx.next()\n\t\tif !unicode.IsLetter(r) {\n\t\t\tlx.backup()\n\t\t\tbreak\n\t\t}\n\t\trs = append(rs, r)\n\t}\n\ts := string(rs)\n\tswitch s {\n\tcase \"true\", \"false\":\n\t\tlx.emit(itemBool)\n\t\treturn lx.pop()\n\t}\n\treturn lx.errorf(\"expected value but found %q instead\", s)\n}\n\n// lexCommentStart begins the lexing of a comment. It will emit\n// itemCommentStart and consume no characters, passing control to lexComment.\nfunc lexCommentStart(lx *lexer) stateFn {\n\tlx.ignore()\n\tlx.emit(itemCommentStart)\n\treturn lexComment\n}\n\n// lexComment lexes an entire comment. It assumes that '#' has been consumed.\n// It will consume *up to* the first newline character, and pass control\n// back to the last state on the stack.\nfunc lexComment(lx *lexer) stateFn {\n\tswitch r := lx.next(); {\n\tcase isNL(r) || r == eof:\n\t\tlx.backup()\n\t\tlx.emit(itemText)\n\t\treturn lx.pop()\n\tdefault:\n\t\treturn lexComment\n\t}\n}\n\n// lexSkip ignores all slurped input and moves on to the next state.\nfunc lexSkip(lx *lexer, nextState stateFn) stateFn {\n\tlx.ignore()\n\treturn nextState\n}\n\nfunc (s stateFn) String() string {\n\tname := runtime.FuncForPC(reflect.ValueOf(s).Pointer()).Name()\n\tif i := strings.LastIndexByte(name, '.'); i > -1 {\n\t\tname = name[i+1:]\n\t}\n\tif s == nil {\n\t\tname = \"<nil>\"\n\t}\n\treturn name + \"()\"\n}\n\nfunc (itype itemType) String() string {\n\tswitch itype {\n\tcase itemError:\n\t\treturn \"Error\"\n\tcase itemNIL:\n\t\treturn \"NIL\"\n\tcase itemEOF:\n\t\treturn \"EOF\"\n\tcase itemText:\n\t\treturn \"Text\"\n\tcase itemString, itemRawString, itemMultilineString, itemRawMultilineString:\n\t\treturn \"String\"\n\tcase itemBool:\n\t\treturn \"Bool\"\n\tcase itemInteger:\n\t\treturn \"Integer\"\n\tcase itemFloat:\n\t\treturn \"Float\"\n\tcase itemDatetime:\n\t\treturn \"DateTime\"\n\tcase itemTableStart:\n\t\treturn \"TableStart\"\n\tcase itemTableEnd:\n\t\treturn \"TableEnd\"\n\tcase itemKeyStart:\n\t\treturn \"KeyStart\"\n\tcase itemKeyEnd:\n\t\treturn \"KeyEnd\"\n\tcase itemArray:\n\t\treturn \"Array\"\n\tcase itemArrayEnd:\n\t\treturn \"ArrayEnd\"\n\tcase itemCommentStart:\n\t\treturn \"CommentStart\"\n\tcase itemInlineTableStart:\n\t\treturn \"InlineTableStart\"\n\tcase itemInlineTableEnd:\n\t\treturn \"InlineTableEnd\"\n\t}\n\tpanic(fmt.Sprintf(\"BUG: Unknown type '%d'.\", int(itype)))\n}\n\nfunc (item item) String() string {\n\treturn fmt.Sprintf(\"(%s, %s)\", item.typ.String(), item.val)\n}\n\nfunc isWhitespace(r rune) bool { return r == '\\t' || r == ' ' }\nfunc isNL(r rune) bool         { return r == '\\n' || r == '\\r' }\nfunc isControl(r rune) bool { // Control characters except \\t, \\r, \\n\n\tswitch r {\n\tcase '\\t', '\\r', '\\n':\n\t\treturn false\n\tdefault:\n\t\treturn (r >= 0x00 && r <= 0x1f) || r == 0x7f\n\t}\n}\nfunc isDigit(r rune) bool  { return r >= '0' && r <= '9' }\nfunc isBinary(r rune) bool { return r == '0' || r == '1' }\nfunc isOctal(r rune) bool  { return r >= '0' && r <= '7' }\nfunc isHexadecimal(r rune) bool {\n\treturn (r >= '0' && r <= '9') || (r >= 'a' && r <= 'f') || (r >= 'A' && r <= 'F')\n}\n\nfunc isBareKeyChar(r rune, tomlNext bool) bool {\n\tif tomlNext {\n\t\treturn (r >= 'A' && r <= 'Z') ||\n\t\t\t(r >= 'a' && r <= 'z') ||\n\t\t\t(r >= '0' && r <= '9') ||\n\t\t\tr == '_' || r == '-' ||\n\t\t\tr == 0xb2 || r == 0xb3 || r == 0xb9 || (r >= 0xbc && r <= 0xbe) ||\n\t\t\t(r >= 0xc0 && r <= 0xd6) || (r >= 0xd8 && r <= 0xf6) || (r >= 0xf8 && r <= 0x037d) ||\n\t\t\t(r >= 0x037f && r <= 0x1fff) ||\n\t\t\t(r >= 0x200c && r <= 0x200d) || (r >= 0x203f && r <= 0x2040) ||\n\t\t\t(r >= 0x2070 && r <= 0x218f) || (r >= 0x2460 && r <= 0x24ff) ||\n\t\t\t(r >= 0x2c00 && r <= 0x2fef) || (r >= 0x3001 && r <= 0xd7ff) ||\n\t\t\t(r >= 0xf900 && r <= 0xfdcf) || (r >= 0xfdf0 && r <= 0xfffd) ||\n\t\t\t(r >= 0x10000 && r <= 0xeffff)\n\t}\n\n\treturn (r >= 'A' && r <= 'Z') ||\n\t\t(r >= 'a' && r <= 'z') ||\n\t\t(r >= '0' && r <= '9') ||\n\t\tr == '_' || r == '-'\n}\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/meta.go",
    "content": "package toml\n\nimport (\n\t\"strings\"\n)\n\n// MetaData allows access to meta information about TOML data that's not\n// accessible otherwise.\n//\n// It allows checking if a key is defined in the TOML data, whether any keys\n// were undecoded, and the TOML type of a key.\ntype MetaData struct {\n\tcontext Key // Used only during decoding.\n\n\tkeyInfo map[string]keyInfo\n\tmapping map[string]interface{}\n\tkeys    []Key\n\tdecoded map[string]struct{}\n\tdata    []byte // Input file; for errors.\n}\n\n// IsDefined reports if the key exists in the TOML data.\n//\n// The key should be specified hierarchically, for example to access the TOML\n// key \"a.b.c\" you would use IsDefined(\"a\", \"b\", \"c\"). Keys are case sensitive.\n//\n// Returns false for an empty key.\nfunc (md *MetaData) IsDefined(key ...string) bool {\n\tif len(key) == 0 {\n\t\treturn false\n\t}\n\n\tvar (\n\t\thash      map[string]interface{}\n\t\tok        bool\n\t\thashOrVal interface{} = md.mapping\n\t)\n\tfor _, k := range key {\n\t\tif hash, ok = hashOrVal.(map[string]interface{}); !ok {\n\t\t\treturn false\n\t\t}\n\t\tif hashOrVal, ok = hash[k]; !ok {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Type returns a string representation of the type of the key specified.\n//\n// Type will return the empty string if given an empty key or a key that does\n// not exist. Keys are case sensitive.\nfunc (md *MetaData) Type(key ...string) string {\n\tif ki, ok := md.keyInfo[Key(key).String()]; ok {\n\t\treturn ki.tomlType.typeString()\n\t}\n\treturn \"\"\n}\n\n// Keys returns a slice of every key in the TOML data, including key groups.\n//\n// Each key is itself a slice, where the first element is the top of the\n// hierarchy and the last is the most specific. The list will have the same\n// order as the keys appeared in the TOML data.\n//\n// All keys returned are non-empty.\nfunc (md *MetaData) Keys() []Key {\n\treturn md.keys\n}\n\n// Undecoded returns all keys that have not been decoded in the order in which\n// they appear in the original TOML document.\n//\n// This includes keys that haven't been decoded because of a [Primitive] value.\n// Once the Primitive value is decoded, the keys will be considered decoded.\n//\n// Also note that decoding into an empty interface will result in no decoding,\n// and so no keys will be considered decoded.\n//\n// In this sense, the Undecoded keys correspond to keys in the TOML document\n// that do not have a concrete type in your representation.\nfunc (md *MetaData) Undecoded() []Key {\n\tundecoded := make([]Key, 0, len(md.keys))\n\tfor _, key := range md.keys {\n\t\tif _, ok := md.decoded[key.String()]; !ok {\n\t\t\tundecoded = append(undecoded, key)\n\t\t}\n\t}\n\treturn undecoded\n}\n\n// Key represents any TOML key, including key groups. Use [MetaData.Keys] to get\n// values of this type.\ntype Key []string\n\nfunc (k Key) String() string {\n\tss := make([]string, len(k))\n\tfor i := range k {\n\t\tss[i] = k.maybeQuoted(i)\n\t}\n\treturn strings.Join(ss, \".\")\n}\n\nfunc (k Key) maybeQuoted(i int) string {\n\tif k[i] == \"\" {\n\t\treturn `\"\"`\n\t}\n\tfor _, c := range k[i] {\n\t\tif !isBareKeyChar(c, false) {\n\t\t\treturn `\"` + dblQuotedReplacer.Replace(k[i]) + `\"`\n\t\t}\n\t}\n\treturn k[i]\n}\n\nfunc (k Key) add(piece string) Key {\n\tnewKey := make(Key, len(k)+1)\n\tcopy(newKey, k)\n\tnewKey[len(k)] = piece\n\treturn newKey\n}\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/parse.go",
    "content": "package toml\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"github.com/BurntSushi/toml/internal\"\n)\n\ntype parser struct {\n\tlx         *lexer\n\tcontext    Key      // Full key for the current hash in scope.\n\tcurrentKey string   // Base key name for everything except hashes.\n\tpos        Position // Current position in the TOML file.\n\ttomlNext   bool\n\n\tordered []Key // List of keys in the order that they appear in the TOML data.\n\n\tkeyInfo   map[string]keyInfo     // Map keyname → info about the TOML key.\n\tmapping   map[string]interface{} // Map keyname → key value.\n\timplicits map[string]struct{}    // Record implicit keys (e.g. \"key.group.names\").\n}\n\ntype keyInfo struct {\n\tpos      Position\n\ttomlType tomlType\n}\n\nfunc parse(data string) (p *parser, err error) {\n\t_, tomlNext := os.LookupEnv(\"BURNTSUSHI_TOML_110\")\n\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tif pErr, ok := r.(ParseError); ok {\n\t\t\t\tpErr.input = data\n\t\t\t\terr = pErr\n\t\t\t\treturn\n\t\t\t}\n\t\t\tpanic(r)\n\t\t}\n\t}()\n\n\t// Read over BOM; do this here as the lexer calls utf8.DecodeRuneInString()\n\t// which mangles stuff. UTF-16 BOM isn't strictly valid, but some tools add\n\t// it anyway.\n\tif strings.HasPrefix(data, \"\\xff\\xfe\") || strings.HasPrefix(data, \"\\xfe\\xff\") { // UTF-16\n\t\tdata = data[2:]\n\t} else if strings.HasPrefix(data, \"\\xef\\xbb\\xbf\") { // UTF-8\n\t\tdata = data[3:]\n\t}\n\n\t// Examine first few bytes for NULL bytes; this probably means it's a UTF-16\n\t// file (second byte in surrogate pair being NULL). Again, do this here to\n\t// avoid having to deal with UTF-8/16 stuff in the lexer.\n\tex := 6\n\tif len(data) < 6 {\n\t\tex = len(data)\n\t}\n\tif i := strings.IndexRune(data[:ex], 0); i > -1 {\n\t\treturn nil, ParseError{\n\t\t\tMessage:  \"files cannot contain NULL bytes; probably using UTF-16; TOML files must be UTF-8\",\n\t\t\tPosition: Position{Line: 1, Start: i, Len: 1},\n\t\t\tLine:     1,\n\t\t\tinput:    data,\n\t\t}\n\t}\n\n\tp = &parser{\n\t\tkeyInfo:   make(map[string]keyInfo),\n\t\tmapping:   make(map[string]interface{}),\n\t\tlx:        lex(data, tomlNext),\n\t\tordered:   make([]Key, 0),\n\t\timplicits: make(map[string]struct{}),\n\t\ttomlNext:  tomlNext,\n\t}\n\tfor {\n\t\titem := p.next()\n\t\tif item.typ == itemEOF {\n\t\t\tbreak\n\t\t}\n\t\tp.topLevel(item)\n\t}\n\n\treturn p, nil\n}\n\nfunc (p *parser) panicErr(it item, err error) {\n\tpanic(ParseError{\n\t\terr:      err,\n\t\tPosition: it.pos,\n\t\tLine:     it.pos.Len,\n\t\tLastKey:  p.current(),\n\t})\n}\n\nfunc (p *parser) panicItemf(it item, format string, v ...interface{}) {\n\tpanic(ParseError{\n\t\tMessage:  fmt.Sprintf(format, v...),\n\t\tPosition: it.pos,\n\t\tLine:     it.pos.Len,\n\t\tLastKey:  p.current(),\n\t})\n}\n\nfunc (p *parser) panicf(format string, v ...interface{}) {\n\tpanic(ParseError{\n\t\tMessage:  fmt.Sprintf(format, v...),\n\t\tPosition: p.pos,\n\t\tLine:     p.pos.Line,\n\t\tLastKey:  p.current(),\n\t})\n}\n\nfunc (p *parser) next() item {\n\tit := p.lx.nextItem()\n\t//fmt.Printf(\"ITEM %-18s line %-3d │ %q\\n\", it.typ, it.pos.Line, it.val)\n\tif it.typ == itemError {\n\t\tif it.err != nil {\n\t\t\tpanic(ParseError{\n\t\t\t\tPosition: it.pos,\n\t\t\t\tLine:     it.pos.Line,\n\t\t\t\tLastKey:  p.current(),\n\t\t\t\terr:      it.err,\n\t\t\t})\n\t\t}\n\n\t\tp.panicItemf(it, \"%s\", it.val)\n\t}\n\treturn it\n}\n\nfunc (p *parser) nextPos() item {\n\tit := p.next()\n\tp.pos = it.pos\n\treturn it\n}\n\nfunc (p *parser) bug(format string, v ...interface{}) {\n\tpanic(fmt.Sprintf(\"BUG: \"+format+\"\\n\\n\", v...))\n}\n\nfunc (p *parser) expect(typ itemType) item {\n\tit := p.next()\n\tp.assertEqual(typ, it.typ)\n\treturn it\n}\n\nfunc (p *parser) assertEqual(expected, got itemType) {\n\tif expected != got {\n\t\tp.bug(\"Expected '%s' but got '%s'.\", expected, got)\n\t}\n}\n\nfunc (p *parser) topLevel(item item) {\n\tswitch item.typ {\n\tcase itemCommentStart: // # ..\n\t\tp.expect(itemText)\n\tcase itemTableStart: // [ .. ]\n\t\tname := p.nextPos()\n\n\t\tvar key Key\n\t\tfor ; name.typ != itemTableEnd && name.typ != itemEOF; name = p.next() {\n\t\t\tkey = append(key, p.keyString(name))\n\t\t}\n\t\tp.assertEqual(itemTableEnd, name.typ)\n\n\t\tp.addContext(key, false)\n\t\tp.setType(\"\", tomlHash, item.pos)\n\t\tp.ordered = append(p.ordered, key)\n\tcase itemArrayTableStart: // [[ .. ]]\n\t\tname := p.nextPos()\n\n\t\tvar key Key\n\t\tfor ; name.typ != itemArrayTableEnd && name.typ != itemEOF; name = p.next() {\n\t\t\tkey = append(key, p.keyString(name))\n\t\t}\n\t\tp.assertEqual(itemArrayTableEnd, name.typ)\n\n\t\tp.addContext(key, true)\n\t\tp.setType(\"\", tomlArrayHash, item.pos)\n\t\tp.ordered = append(p.ordered, key)\n\tcase itemKeyStart: // key = ..\n\t\touterContext := p.context\n\t\t/// Read all the key parts (e.g. 'a' and 'b' in 'a.b')\n\t\tk := p.nextPos()\n\t\tvar key Key\n\t\tfor ; k.typ != itemKeyEnd && k.typ != itemEOF; k = p.next() {\n\t\t\tkey = append(key, p.keyString(k))\n\t\t}\n\t\tp.assertEqual(itemKeyEnd, k.typ)\n\n\t\t/// The current key is the last part.\n\t\tp.currentKey = key[len(key)-1]\n\n\t\t/// All the other parts (if any) are the context; need to set each part\n\t\t/// as implicit.\n\t\tcontext := key[:len(key)-1]\n\t\tfor i := range context {\n\t\t\tp.addImplicitContext(append(p.context, context[i:i+1]...))\n\t\t}\n\t\tp.ordered = append(p.ordered, p.context.add(p.currentKey))\n\n\t\t/// Set value.\n\t\tvItem := p.next()\n\t\tval, typ := p.value(vItem, false)\n\t\tp.set(p.currentKey, val, typ, vItem.pos)\n\n\t\t/// Remove the context we added (preserving any context from [tbl] lines).\n\t\tp.context = outerContext\n\t\tp.currentKey = \"\"\n\tdefault:\n\t\tp.bug(\"Unexpected type at top level: %s\", item.typ)\n\t}\n}\n\n// Gets a string for a key (or part of a key in a table name).\nfunc (p *parser) keyString(it item) string {\n\tswitch it.typ {\n\tcase itemText:\n\t\treturn it.val\n\tcase itemString, itemMultilineString,\n\t\titemRawString, itemRawMultilineString:\n\t\ts, _ := p.value(it, false)\n\t\treturn s.(string)\n\tdefault:\n\t\tp.bug(\"Unexpected key type: %s\", it.typ)\n\t}\n\tpanic(\"unreachable\")\n}\n\nvar datetimeRepl = strings.NewReplacer(\n\t\"z\", \"Z\",\n\t\"t\", \"T\",\n\t\" \", \"T\")\n\n// value translates an expected value from the lexer into a Go value wrapped\n// as an empty interface.\nfunc (p *parser) value(it item, parentIsArray bool) (interface{}, tomlType) {\n\tswitch it.typ {\n\tcase itemString:\n\t\treturn p.replaceEscapes(it, it.val), p.typeOfPrimitive(it)\n\tcase itemMultilineString:\n\t\treturn p.replaceEscapes(it, p.stripEscapedNewlines(stripFirstNewline(it.val))), p.typeOfPrimitive(it)\n\tcase itemRawString:\n\t\treturn it.val, p.typeOfPrimitive(it)\n\tcase itemRawMultilineString:\n\t\treturn stripFirstNewline(it.val), p.typeOfPrimitive(it)\n\tcase itemInteger:\n\t\treturn p.valueInteger(it)\n\tcase itemFloat:\n\t\treturn p.valueFloat(it)\n\tcase itemBool:\n\t\tswitch it.val {\n\t\tcase \"true\":\n\t\t\treturn true, p.typeOfPrimitive(it)\n\t\tcase \"false\":\n\t\t\treturn false, p.typeOfPrimitive(it)\n\t\tdefault:\n\t\t\tp.bug(\"Expected boolean value, but got '%s'.\", it.val)\n\t\t}\n\tcase itemDatetime:\n\t\treturn p.valueDatetime(it)\n\tcase itemArray:\n\t\treturn p.valueArray(it)\n\tcase itemInlineTableStart:\n\t\treturn p.valueInlineTable(it, parentIsArray)\n\tdefault:\n\t\tp.bug(\"Unexpected value type: %s\", it.typ)\n\t}\n\tpanic(\"unreachable\")\n}\n\nfunc (p *parser) valueInteger(it item) (interface{}, tomlType) {\n\tif !numUnderscoresOK(it.val) {\n\t\tp.panicItemf(it, \"Invalid integer %q: underscores must be surrounded by digits\", it.val)\n\t}\n\tif numHasLeadingZero(it.val) {\n\t\tp.panicItemf(it, \"Invalid integer %q: cannot have leading zeroes\", it.val)\n\t}\n\n\tnum, err := strconv.ParseInt(it.val, 0, 64)\n\tif err != nil {\n\t\t// Distinguish integer values. Normally, it'd be a bug if the lexer\n\t\t// provides an invalid integer, but it's possible that the number is\n\t\t// out of range of valid values (which the lexer cannot determine).\n\t\t// So mark the former as a bug but the latter as a legitimate user\n\t\t// error.\n\t\tif e, ok := err.(*strconv.NumError); ok && e.Err == strconv.ErrRange {\n\t\t\tp.panicErr(it, errParseRange{i: it.val, size: \"int64\"})\n\t\t} else {\n\t\t\tp.bug(\"Expected integer value, but got '%s'.\", it.val)\n\t\t}\n\t}\n\treturn num, p.typeOfPrimitive(it)\n}\n\nfunc (p *parser) valueFloat(it item) (interface{}, tomlType) {\n\tparts := strings.FieldsFunc(it.val, func(r rune) bool {\n\t\tswitch r {\n\t\tcase '.', 'e', 'E':\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t})\n\tfor _, part := range parts {\n\t\tif !numUnderscoresOK(part) {\n\t\t\tp.panicItemf(it, \"Invalid float %q: underscores must be surrounded by digits\", it.val)\n\t\t}\n\t}\n\tif len(parts) > 0 && numHasLeadingZero(parts[0]) {\n\t\tp.panicItemf(it, \"Invalid float %q: cannot have leading zeroes\", it.val)\n\t}\n\tif !numPeriodsOK(it.val) {\n\t\t// As a special case, numbers like '123.' or '1.e2',\n\t\t// which are valid as far as Go/strconv are concerned,\n\t\t// must be rejected because TOML says that a fractional\n\t\t// part consists of '.' followed by 1+ digits.\n\t\tp.panicItemf(it, \"Invalid float %q: '.' must be followed by one or more digits\", it.val)\n\t}\n\tval := strings.Replace(it.val, \"_\", \"\", -1)\n\tif val == \"+nan\" || val == \"-nan\" { // Go doesn't support this, but TOML spec does.\n\t\tval = \"nan\"\n\t}\n\tnum, err := strconv.ParseFloat(val, 64)\n\tif err != nil {\n\t\tif e, ok := err.(*strconv.NumError); ok && e.Err == strconv.ErrRange {\n\t\t\tp.panicErr(it, errParseRange{i: it.val, size: \"float64\"})\n\t\t} else {\n\t\t\tp.panicItemf(it, \"Invalid float value: %q\", it.val)\n\t\t}\n\t}\n\treturn num, p.typeOfPrimitive(it)\n}\n\nvar dtTypes = []struct {\n\tfmt  string\n\tzone *time.Location\n\tnext bool\n}{\n\t{time.RFC3339Nano, time.Local, false},\n\t{\"2006-01-02T15:04:05.999999999\", internal.LocalDatetime, false},\n\t{\"2006-01-02\", internal.LocalDate, false},\n\t{\"15:04:05.999999999\", internal.LocalTime, false},\n\n\t// tomlNext\n\t{\"2006-01-02T15:04Z07:00\", time.Local, true},\n\t{\"2006-01-02T15:04\", internal.LocalDatetime, true},\n\t{\"15:04\", internal.LocalTime, true},\n}\n\nfunc (p *parser) valueDatetime(it item) (interface{}, tomlType) {\n\tit.val = datetimeRepl.Replace(it.val)\n\tvar (\n\t\tt   time.Time\n\t\tok  bool\n\t\terr error\n\t)\n\tfor _, dt := range dtTypes {\n\t\tif dt.next && !p.tomlNext {\n\t\t\tcontinue\n\t\t}\n\t\tt, err = time.ParseInLocation(dt.fmt, it.val, dt.zone)\n\t\tif err == nil {\n\t\t\tok = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !ok {\n\t\tp.panicItemf(it, \"Invalid TOML Datetime: %q.\", it.val)\n\t}\n\treturn t, p.typeOfPrimitive(it)\n}\n\nfunc (p *parser) valueArray(it item) (interface{}, tomlType) {\n\tp.setType(p.currentKey, tomlArray, it.pos)\n\n\tvar (\n\t\ttypes []tomlType\n\n\t\t// Initialize to a non-nil empty slice. This makes it consistent with\n\t\t// how S = [] decodes into a non-nil slice inside something like struct\n\t\t// { S []string }. See #338\n\t\tarray = []interface{}{}\n\t)\n\tfor it = p.next(); it.typ != itemArrayEnd; it = p.next() {\n\t\tif it.typ == itemCommentStart {\n\t\t\tp.expect(itemText)\n\t\t\tcontinue\n\t\t}\n\n\t\tval, typ := p.value(it, true)\n\t\tarray = append(array, val)\n\t\ttypes = append(types, typ)\n\n\t\t// XXX: types isn't used here, we need it to record the accurate type\n\t\t// information.\n\t\t//\n\t\t// Not entirely sure how to best store this; could use \"key[0]\",\n\t\t// \"key[1]\" notation, or maybe store it on the Array type?\n\t\t_ = types\n\t}\n\treturn array, tomlArray\n}\n\nfunc (p *parser) valueInlineTable(it item, parentIsArray bool) (interface{}, tomlType) {\n\tvar (\n\t\thash         = make(map[string]interface{})\n\t\touterContext = p.context\n\t\touterKey     = p.currentKey\n\t)\n\n\tp.context = append(p.context, p.currentKey)\n\tprevContext := p.context\n\tp.currentKey = \"\"\n\n\tp.addImplicit(p.context)\n\tp.addContext(p.context, parentIsArray)\n\n\t/// Loop over all table key/value pairs.\n\tfor it := p.next(); it.typ != itemInlineTableEnd; it = p.next() {\n\t\tif it.typ == itemCommentStart {\n\t\t\tp.expect(itemText)\n\t\t\tcontinue\n\t\t}\n\n\t\t/// Read all key parts.\n\t\tk := p.nextPos()\n\t\tvar key Key\n\t\tfor ; k.typ != itemKeyEnd && k.typ != itemEOF; k = p.next() {\n\t\t\tkey = append(key, p.keyString(k))\n\t\t}\n\t\tp.assertEqual(itemKeyEnd, k.typ)\n\n\t\t/// The current key is the last part.\n\t\tp.currentKey = key[len(key)-1]\n\n\t\t/// All the other parts (if any) are the context; need to set each part\n\t\t/// as implicit.\n\t\tcontext := key[:len(key)-1]\n\t\tfor i := range context {\n\t\t\tp.addImplicitContext(append(p.context, context[i:i+1]...))\n\t\t}\n\t\tp.ordered = append(p.ordered, p.context.add(p.currentKey))\n\n\t\t/// Set the value.\n\t\tval, typ := p.value(p.next(), false)\n\t\tp.set(p.currentKey, val, typ, it.pos)\n\t\thash[p.currentKey] = val\n\n\t\t/// Restore context.\n\t\tp.context = prevContext\n\t}\n\tp.context = outerContext\n\tp.currentKey = outerKey\n\treturn hash, tomlHash\n}\n\n// numHasLeadingZero checks if this number has leading zeroes, allowing for '0',\n// +/- signs, and base prefixes.\nfunc numHasLeadingZero(s string) bool {\n\tif len(s) > 1 && s[0] == '0' && !(s[1] == 'b' || s[1] == 'o' || s[1] == 'x') { // Allow 0b, 0o, 0x\n\t\treturn true\n\t}\n\tif len(s) > 2 && (s[0] == '-' || s[0] == '+') && s[1] == '0' {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// numUnderscoresOK checks whether each underscore in s is surrounded by\n// characters that are not underscores.\nfunc numUnderscoresOK(s string) bool {\n\tswitch s {\n\tcase \"nan\", \"+nan\", \"-nan\", \"inf\", \"-inf\", \"+inf\":\n\t\treturn true\n\t}\n\taccept := false\n\tfor _, r := range s {\n\t\tif r == '_' {\n\t\t\tif !accept {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// isHexadecimal is a superset of all the permissable characters\n\t\t// surrounding an underscore.\n\t\taccept = isHexadecimal(r)\n\t}\n\treturn accept\n}\n\n// numPeriodsOK checks whether every period in s is followed by a digit.\nfunc numPeriodsOK(s string) bool {\n\tperiod := false\n\tfor _, r := range s {\n\t\tif period && !isDigit(r) {\n\t\t\treturn false\n\t\t}\n\t\tperiod = r == '.'\n\t}\n\treturn !period\n}\n\n// Set the current context of the parser, where the context is either a hash or\n// an array of hashes, depending on the value of the `array` parameter.\n//\n// Establishing the context also makes sure that the key isn't a duplicate, and\n// will create implicit hashes automatically.\nfunc (p *parser) addContext(key Key, array bool) {\n\tvar ok bool\n\n\t// Always start at the top level and drill down for our context.\n\thashContext := p.mapping\n\tkeyContext := make(Key, 0)\n\n\t// We only need implicit hashes for key[0:-1]\n\tfor _, k := range key[0 : len(key)-1] {\n\t\t_, ok = hashContext[k]\n\t\tkeyContext = append(keyContext, k)\n\n\t\t// No key? Make an implicit hash and move on.\n\t\tif !ok {\n\t\t\tp.addImplicit(keyContext)\n\t\t\thashContext[k] = make(map[string]interface{})\n\t\t}\n\n\t\t// If the hash context is actually an array of tables, then set\n\t\t// the hash context to the last element in that array.\n\t\t//\n\t\t// Otherwise, it better be a table, since this MUST be a key group (by\n\t\t// virtue of it not being the last element in a key).\n\t\tswitch t := hashContext[k].(type) {\n\t\tcase []map[string]interface{}:\n\t\t\thashContext = t[len(t)-1]\n\t\tcase map[string]interface{}:\n\t\t\thashContext = t\n\t\tdefault:\n\t\t\tp.panicf(\"Key '%s' was already created as a hash.\", keyContext)\n\t\t}\n\t}\n\n\tp.context = keyContext\n\tif array {\n\t\t// If this is the first element for this array, then allocate a new\n\t\t// list of tables for it.\n\t\tk := key[len(key)-1]\n\t\tif _, ok := hashContext[k]; !ok {\n\t\t\thashContext[k] = make([]map[string]interface{}, 0, 4)\n\t\t}\n\n\t\t// Add a new table. But make sure the key hasn't already been used\n\t\t// for something else.\n\t\tif hash, ok := hashContext[k].([]map[string]interface{}); ok {\n\t\t\thashContext[k] = append(hash, make(map[string]interface{}))\n\t\t} else {\n\t\t\tp.panicf(\"Key '%s' was already created and cannot be used as an array.\", key)\n\t\t}\n\t} else {\n\t\tp.setValue(key[len(key)-1], make(map[string]interface{}))\n\t}\n\tp.context = append(p.context, key[len(key)-1])\n}\n\n// set calls setValue and setType.\nfunc (p *parser) set(key string, val interface{}, typ tomlType, pos Position) {\n\tp.setValue(key, val)\n\tp.setType(key, typ, pos)\n}\n\n// setValue sets the given key to the given value in the current context.\n// It will make sure that the key hasn't already been defined, account for\n// implicit key groups.\nfunc (p *parser) setValue(key string, value interface{}) {\n\tvar (\n\t\ttmpHash    interface{}\n\t\tok         bool\n\t\thash       = p.mapping\n\t\tkeyContext Key\n\t)\n\tfor _, k := range p.context {\n\t\tkeyContext = append(keyContext, k)\n\t\tif tmpHash, ok = hash[k]; !ok {\n\t\t\tp.bug(\"Context for key '%s' has not been established.\", keyContext)\n\t\t}\n\t\tswitch t := tmpHash.(type) {\n\t\tcase []map[string]interface{}:\n\t\t\t// The context is a table of hashes. Pick the most recent table\n\t\t\t// defined as the current hash.\n\t\t\thash = t[len(t)-1]\n\t\tcase map[string]interface{}:\n\t\t\thash = t\n\t\tdefault:\n\t\t\tp.panicf(\"Key '%s' has already been defined.\", keyContext)\n\t\t}\n\t}\n\tkeyContext = append(keyContext, key)\n\n\tif _, ok := hash[key]; ok {\n\t\t// Normally redefining keys isn't allowed, but the key could have been\n\t\t// defined implicitly and it's allowed to be redefined concretely. (See\n\t\t// the `valid/implicit-and-explicit-after.toml` in toml-test)\n\t\t//\n\t\t// But we have to make sure to stop marking it as an implicit. (So that\n\t\t// another redefinition provokes an error.)\n\t\t//\n\t\t// Note that since it has already been defined (as a hash), we don't\n\t\t// want to overwrite it. So our business is done.\n\t\tif p.isArray(keyContext) {\n\t\t\tp.removeImplicit(keyContext)\n\t\t\thash[key] = value\n\t\t\treturn\n\t\t}\n\t\tif p.isImplicit(keyContext) {\n\t\t\tp.removeImplicit(keyContext)\n\t\t\treturn\n\t\t}\n\n\t\t// Otherwise, we have a concrete key trying to override a previous\n\t\t// key, which is *always* wrong.\n\t\tp.panicf(\"Key '%s' has already been defined.\", keyContext)\n\t}\n\n\thash[key] = value\n}\n\n// setType sets the type of a particular value at a given key. It should be\n// called immediately AFTER setValue.\n//\n// Note that if `key` is empty, then the type given will be applied to the\n// current context (which is either a table or an array of tables).\nfunc (p *parser) setType(key string, typ tomlType, pos Position) {\n\tkeyContext := make(Key, 0, len(p.context)+1)\n\tkeyContext = append(keyContext, p.context...)\n\tif len(key) > 0 { // allow type setting for hashes\n\t\tkeyContext = append(keyContext, key)\n\t}\n\t// Special case to make empty keys (\"\" = 1) work.\n\t// Without it it will set \"\" rather than `\"\"`.\n\t// TODO: why is this needed? And why is this only needed here?\n\tif len(keyContext) == 0 {\n\t\tkeyContext = Key{\"\"}\n\t}\n\tp.keyInfo[keyContext.String()] = keyInfo{tomlType: typ, pos: pos}\n}\n\n// Implicit keys need to be created when tables are implied in \"a.b.c.d = 1\" and\n// \"[a.b.c]\" (the \"a\", \"b\", and \"c\" hashes are never created explicitly).\nfunc (p *parser) addImplicit(key Key)        { p.implicits[key.String()] = struct{}{} }\nfunc (p *parser) removeImplicit(key Key)     { delete(p.implicits, key.String()) }\nfunc (p *parser) isImplicit(key Key) bool    { _, ok := p.implicits[key.String()]; return ok }\nfunc (p *parser) isArray(key Key) bool       { return p.keyInfo[key.String()].tomlType == tomlArray }\nfunc (p *parser) addImplicitContext(key Key) { p.addImplicit(key); p.addContext(key, false) }\n\n// current returns the full key name of the current context.\nfunc (p *parser) current() string {\n\tif len(p.currentKey) == 0 {\n\t\treturn p.context.String()\n\t}\n\tif len(p.context) == 0 {\n\t\treturn p.currentKey\n\t}\n\treturn fmt.Sprintf(\"%s.%s\", p.context, p.currentKey)\n}\n\nfunc stripFirstNewline(s string) string {\n\tif len(s) > 0 && s[0] == '\\n' {\n\t\treturn s[1:]\n\t}\n\tif len(s) > 1 && s[0] == '\\r' && s[1] == '\\n' {\n\t\treturn s[2:]\n\t}\n\treturn s\n}\n\n// stripEscapedNewlines removes whitespace after line-ending backslashes in\n// multiline strings.\n//\n// A line-ending backslash is an unescaped \\ followed only by whitespace until\n// the next newline. After a line-ending backslash, all whitespace is removed\n// until the next non-whitespace character.\nfunc (p *parser) stripEscapedNewlines(s string) string {\n\tvar b strings.Builder\n\tvar i int\n\tfor {\n\t\tix := strings.Index(s[i:], `\\`)\n\t\tif ix < 0 {\n\t\t\tb.WriteString(s)\n\t\t\treturn b.String()\n\t\t}\n\t\ti += ix\n\n\t\tif len(s) > i+1 && s[i+1] == '\\\\' {\n\t\t\t// Escaped backslash.\n\t\t\ti += 2\n\t\t\tcontinue\n\t\t}\n\t\t// Scan until the next non-whitespace.\n\t\tj := i + 1\n\twhitespaceLoop:\n\t\tfor ; j < len(s); j++ {\n\t\t\tswitch s[j] {\n\t\t\tcase ' ', '\\t', '\\r', '\\n':\n\t\t\tdefault:\n\t\t\t\tbreak whitespaceLoop\n\t\t\t}\n\t\t}\n\t\tif j == i+1 {\n\t\t\t// Not a whitespace escape.\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\t\tif !strings.Contains(s[i:j], \"\\n\") {\n\t\t\t// This is not a line-ending backslash.\n\t\t\t// (It's a bad escape sequence, but we can let\n\t\t\t// replaceEscapes catch it.)\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\t\tb.WriteString(s[:i])\n\t\ts = s[j:]\n\t\ti = 0\n\t}\n}\n\nfunc (p *parser) replaceEscapes(it item, str string) string {\n\treplaced := make([]rune, 0, len(str))\n\ts := []byte(str)\n\tr := 0\n\tfor r < len(s) {\n\t\tif s[r] != '\\\\' {\n\t\t\tc, size := utf8.DecodeRune(s[r:])\n\t\t\tr += size\n\t\t\treplaced = append(replaced, c)\n\t\t\tcontinue\n\t\t}\n\t\tr += 1\n\t\tif r >= len(s) {\n\t\t\tp.bug(\"Escape sequence at end of string.\")\n\t\t\treturn \"\"\n\t\t}\n\t\tswitch s[r] {\n\t\tdefault:\n\t\t\tp.bug(\"Expected valid escape code after \\\\, but got %q.\", s[r])\n\t\tcase ' ', '\\t':\n\t\t\tp.panicItemf(it, \"invalid escape: '\\\\%c'\", s[r])\n\t\tcase 'b':\n\t\t\treplaced = append(replaced, rune(0x0008))\n\t\t\tr += 1\n\t\tcase 't':\n\t\t\treplaced = append(replaced, rune(0x0009))\n\t\t\tr += 1\n\t\tcase 'n':\n\t\t\treplaced = append(replaced, rune(0x000A))\n\t\t\tr += 1\n\t\tcase 'f':\n\t\t\treplaced = append(replaced, rune(0x000C))\n\t\t\tr += 1\n\t\tcase 'r':\n\t\t\treplaced = append(replaced, rune(0x000D))\n\t\t\tr += 1\n\t\tcase 'e':\n\t\t\tif p.tomlNext {\n\t\t\t\treplaced = append(replaced, rune(0x001B))\n\t\t\t\tr += 1\n\t\t\t}\n\t\tcase '\"':\n\t\t\treplaced = append(replaced, rune(0x0022))\n\t\t\tr += 1\n\t\tcase '\\\\':\n\t\t\treplaced = append(replaced, rune(0x005C))\n\t\t\tr += 1\n\t\tcase 'x':\n\t\t\tif p.tomlNext {\n\t\t\t\tescaped := p.asciiEscapeToUnicode(it, s[r+1:r+3])\n\t\t\t\treplaced = append(replaced, escaped)\n\t\t\t\tr += 3\n\t\t\t}\n\t\tcase 'u':\n\t\t\t// At this point, we know we have a Unicode escape of the form\n\t\t\t// `uXXXX` at [r, r+5). (Because the lexer guarantees this\n\t\t\t// for us.)\n\t\t\tescaped := p.asciiEscapeToUnicode(it, s[r+1:r+5])\n\t\t\treplaced = append(replaced, escaped)\n\t\t\tr += 5\n\t\tcase 'U':\n\t\t\t// At this point, we know we have a Unicode escape of the form\n\t\t\t// `uXXXX` at [r, r+9). (Because the lexer guarantees this\n\t\t\t// for us.)\n\t\t\tescaped := p.asciiEscapeToUnicode(it, s[r+1:r+9])\n\t\t\treplaced = append(replaced, escaped)\n\t\t\tr += 9\n\t\t}\n\t}\n\treturn string(replaced)\n}\n\nfunc (p *parser) asciiEscapeToUnicode(it item, bs []byte) rune {\n\ts := string(bs)\n\thex, err := strconv.ParseUint(strings.ToLower(s), 16, 32)\n\tif err != nil {\n\t\tp.bug(\"Could not parse '%s' as a hexadecimal number, but the lexer claims it's OK: %s\", s, err)\n\t}\n\tif !utf8.ValidRune(rune(hex)) {\n\t\tp.panicItemf(it, \"Escaped character '\\\\u%s' is not valid UTF-8.\", s)\n\t}\n\treturn rune(hex)\n}\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/type_fields.go",
    "content": "package toml\n\n// Struct field handling is adapted from code in encoding/json:\n//\n// 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 Go distribution.\n\nimport (\n\t\"reflect\"\n\t\"sort\"\n\t\"sync\"\n)\n\n// A field represents a single field found in a struct.\ntype field struct {\n\tname  string       // the name of the field (`toml` tag included)\n\ttag   bool         // whether field has a `toml` tag\n\tindex []int        // represents the depth of an anonymous field\n\ttyp   reflect.Type // the type of the field\n}\n\n// byName sorts field by name, breaking ties with depth,\n// then breaking ties with \"name came from toml tag\", then\n// breaking ties with index sequence.\ntype byName []field\n\nfunc (x byName) Len() int { return len(x) }\n\nfunc (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] }\n\nfunc (x byName) Less(i, j int) bool {\n\tif x[i].name != x[j].name {\n\t\treturn x[i].name < x[j].name\n\t}\n\tif len(x[i].index) != len(x[j].index) {\n\t\treturn len(x[i].index) < len(x[j].index)\n\t}\n\tif x[i].tag != x[j].tag {\n\t\treturn x[i].tag\n\t}\n\treturn byIndex(x).Less(i, j)\n}\n\n// byIndex sorts field by index sequence.\ntype byIndex []field\n\nfunc (x byIndex) Len() int { return len(x) }\n\nfunc (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] }\n\nfunc (x byIndex) Less(i, j int) bool {\n\tfor k, xik := range x[i].index {\n\t\tif k >= len(x[j].index) {\n\t\t\treturn false\n\t\t}\n\t\tif xik != x[j].index[k] {\n\t\t\treturn xik < x[j].index[k]\n\t\t}\n\t}\n\treturn len(x[i].index) < len(x[j].index)\n}\n\n// typeFields returns a list of fields that TOML should recognize for the given\n// type. The algorithm is breadth-first search over the set of structs to\n// include - the top struct and then any reachable anonymous structs.\nfunc typeFields(t reflect.Type) []field {\n\t// Anonymous fields to explore at the current level and the next.\n\tcurrent := []field{}\n\tnext := []field{{typ: t}}\n\n\t// Count of queued names for current level and the next.\n\tvar count map[reflect.Type]int\n\tvar nextCount map[reflect.Type]int\n\n\t// Types already visited at an earlier level.\n\tvisited := map[reflect.Type]bool{}\n\n\t// Fields found.\n\tvar fields []field\n\n\tfor len(next) > 0 {\n\t\tcurrent, next = next, current[:0]\n\t\tcount, nextCount = nextCount, map[reflect.Type]int{}\n\n\t\tfor _, f := range current {\n\t\t\tif visited[f.typ] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvisited[f.typ] = true\n\n\t\t\t// Scan f.typ for fields to include.\n\t\t\tfor i := 0; i < f.typ.NumField(); i++ {\n\t\t\t\tsf := f.typ.Field(i)\n\t\t\t\tif sf.PkgPath != \"\" && !sf.Anonymous { // unexported\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\topts := getOptions(sf.Tag)\n\t\t\t\tif opts.skip {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tindex := make([]int, len(f.index)+1)\n\t\t\t\tcopy(index, f.index)\n\t\t\t\tindex[len(f.index)] = i\n\n\t\t\t\tft := sf.Type\n\t\t\t\tif ft.Name() == \"\" && ft.Kind() == reflect.Ptr {\n\t\t\t\t\t// Follow pointer.\n\t\t\t\t\tft = ft.Elem()\n\t\t\t\t}\n\n\t\t\t\t// Record found field and index sequence.\n\t\t\t\tif opts.name != \"\" || !sf.Anonymous || ft.Kind() != reflect.Struct {\n\t\t\t\t\ttagged := opts.name != \"\"\n\t\t\t\t\tname := opts.name\n\t\t\t\t\tif name == \"\" {\n\t\t\t\t\t\tname = sf.Name\n\t\t\t\t\t}\n\t\t\t\t\tfields = append(fields, field{name, tagged, index, ft})\n\t\t\t\t\tif count[f.typ] > 1 {\n\t\t\t\t\t\t// If there were multiple instances, add a second,\n\t\t\t\t\t\t// so that the annihilation code will see a duplicate.\n\t\t\t\t\t\t// It only cares about the distinction between 1 or 2,\n\t\t\t\t\t\t// so don't bother generating any more copies.\n\t\t\t\t\t\tfields = append(fields, fields[len(fields)-1])\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Record new anonymous struct to explore in next round.\n\t\t\t\tnextCount[ft]++\n\t\t\t\tif nextCount[ft] == 1 {\n\t\t\t\t\tf := field{name: ft.Name(), index: index, typ: ft}\n\t\t\t\t\tnext = append(next, f)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsort.Sort(byName(fields))\n\n\t// Delete all fields that are hidden by the Go rules for embedded fields,\n\t// except that fields with TOML tags are promoted.\n\n\t// The fields are sorted in primary order of name, secondary order\n\t// of field index length. Loop over names; for each name, delete\n\t// hidden fields by choosing the one dominant field that survives.\n\tout := fields[:0]\n\tfor advance, i := 0, 0; i < len(fields); i += advance {\n\t\t// One iteration per name.\n\t\t// Find the sequence of fields with the name of this first field.\n\t\tfi := fields[i]\n\t\tname := fi.name\n\t\tfor advance = 1; i+advance < len(fields); advance++ {\n\t\t\tfj := fields[i+advance]\n\t\t\tif fj.name != name {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif advance == 1 { // Only one field with this name\n\t\t\tout = append(out, fi)\n\t\t\tcontinue\n\t\t}\n\t\tdominant, ok := dominantField(fields[i : i+advance])\n\t\tif ok {\n\t\t\tout = append(out, dominant)\n\t\t}\n\t}\n\n\tfields = out\n\tsort.Sort(byIndex(fields))\n\n\treturn fields\n}\n\n// dominantField looks through the fields, all of which are known to\n// have the same name, to find the single field that dominates the\n// others using Go's embedding rules, modified by the presence of\n// TOML tags. If there are multiple top-level fields, the boolean\n// will be false: This condition is an error in Go and we skip all\n// the fields.\nfunc dominantField(fields []field) (field, bool) {\n\t// The fields are sorted in increasing index-length order. The winner\n\t// must therefore be one with the shortest index length. Drop all\n\t// longer entries, which is easy: just truncate the slice.\n\tlength := len(fields[0].index)\n\ttagged := -1 // Index of first tagged field.\n\tfor i, f := range fields {\n\t\tif len(f.index) > length {\n\t\t\tfields = fields[:i]\n\t\t\tbreak\n\t\t}\n\t\tif f.tag {\n\t\t\tif tagged >= 0 {\n\t\t\t\t// Multiple tagged fields at the same level: conflict.\n\t\t\t\t// Return no field.\n\t\t\t\treturn field{}, false\n\t\t\t}\n\t\t\ttagged = i\n\t\t}\n\t}\n\tif tagged >= 0 {\n\t\treturn fields[tagged], true\n\t}\n\t// All remaining fields have the same length. If there's more than one,\n\t// we have a conflict (two fields named \"X\" at the same level) and we\n\t// return no field.\n\tif len(fields) > 1 {\n\t\treturn field{}, false\n\t}\n\treturn fields[0], true\n}\n\nvar fieldCache struct {\n\tsync.RWMutex\n\tm map[reflect.Type][]field\n}\n\n// cachedTypeFields is like typeFields but uses a cache to avoid repeated work.\nfunc cachedTypeFields(t reflect.Type) []field {\n\tfieldCache.RLock()\n\tf := fieldCache.m[t]\n\tfieldCache.RUnlock()\n\tif f != nil {\n\t\treturn f\n\t}\n\n\t// Compute fields without lock.\n\t// Might duplicate effort but won't hold other computations back.\n\tf = typeFields(t)\n\tif f == nil {\n\t\tf = []field{}\n\t}\n\n\tfieldCache.Lock()\n\tif fieldCache.m == nil {\n\t\tfieldCache.m = map[reflect.Type][]field{}\n\t}\n\tfieldCache.m[t] = f\n\tfieldCache.Unlock()\n\treturn f\n}\n"
  },
  {
    "path": "vendor/github.com/BurntSushi/toml/type_toml.go",
    "content": "package toml\n\n// tomlType represents any Go type that corresponds to a TOML type.\n// While the first draft of the TOML spec has a simplistic type system that\n// probably doesn't need this level of sophistication, we seem to be militating\n// toward adding real composite types.\ntype tomlType interface {\n\ttypeString() string\n}\n\n// typeEqual accepts any two types and returns true if they are equal.\nfunc typeEqual(t1, t2 tomlType) bool {\n\tif t1 == nil || t2 == nil {\n\t\treturn false\n\t}\n\treturn t1.typeString() == t2.typeString()\n}\n\nfunc typeIsTable(t tomlType) bool {\n\treturn typeEqual(t, tomlHash) || typeEqual(t, tomlArrayHash)\n}\n\ntype tomlBaseType string\n\nfunc (btype tomlBaseType) typeString() string {\n\treturn string(btype)\n}\n\nfunc (btype tomlBaseType) String() string {\n\treturn btype.typeString()\n}\n\nvar (\n\ttomlInteger   tomlBaseType = \"Integer\"\n\ttomlFloat     tomlBaseType = \"Float\"\n\ttomlDatetime  tomlBaseType = \"Datetime\"\n\ttomlString    tomlBaseType = \"String\"\n\ttomlBool      tomlBaseType = \"Bool\"\n\ttomlArray     tomlBaseType = \"Array\"\n\ttomlHash      tomlBaseType = \"Hash\"\n\ttomlArrayHash tomlBaseType = \"ArrayHash\"\n)\n\n// typeOfPrimitive returns a tomlType of any primitive value in TOML.\n// Primitive values are: Integer, Float, Datetime, String and Bool.\n//\n// Passing a lexer item other than the following will cause a BUG message\n// to occur: itemString, itemBool, itemInteger, itemFloat, itemDatetime.\nfunc (p *parser) typeOfPrimitive(lexItem item) tomlType {\n\tswitch lexItem.typ {\n\tcase itemInteger:\n\t\treturn tomlInteger\n\tcase itemFloat:\n\t\treturn tomlFloat\n\tcase itemDatetime:\n\t\treturn tomlDatetime\n\tcase itemString:\n\t\treturn tomlString\n\tcase itemMultilineString:\n\t\treturn tomlString\n\tcase itemRawString:\n\t\treturn tomlString\n\tcase itemRawMultilineString:\n\t\treturn tomlString\n\tcase itemBool:\n\t\treturn tomlBool\n\t}\n\tp.bug(\"Cannot infer primitive type of lex item '%s'.\", lexItem)\n\tpanic(\"unreachable\")\n}\n"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n\n/metrics.out\n\n.idea\n"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/.travis.yml",
    "content": "language: go\n\ngo:\n  - \"1.x\"\n\nenv:\n  - GO111MODULE=on\n\ninstall:\n  - go get ./...\n\nscript:\n  - go test ./...\n"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2013 Armon Dadgar\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject 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, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/README.md",
    "content": "go-metrics\n==========\n\nThis library provides a `metrics` package which can be used to instrument code,\nexpose application metrics, and profile runtime performance in a flexible manner.\n\nCurrent API: [![GoDoc](https://godoc.org/github.com/armon/go-metrics?status.svg)](https://godoc.org/github.com/armon/go-metrics)\n\nSinks\n-----\n\nThe `metrics` package makes use of a `MetricSink` interface to support delivery\nto any type of backend. Currently the following sinks are provided:\n\n* StatsiteSink : Sinks to a [statsite](https://github.com/armon/statsite/) instance (TCP)\n* StatsdSink: Sinks to a [StatsD](https://github.com/etsy/statsd/) / statsite instance (UDP)\n* PrometheusSink: Sinks to a [Prometheus](http://prometheus.io/) metrics endpoint (exposed via HTTP for scrapes)\n* InmemSink : Provides in-memory aggregation, can be used to export stats\n* FanoutSink : Sinks to multiple sinks. Enables writing to multiple statsite instances for example.\n* BlackholeSink : Sinks to nowhere\n\nIn addition to the sinks, the `InmemSignal` can be used to catch a signal,\nand dump a formatted output of recent metrics. For example, when a process gets\na SIGUSR1, it can dump to stderr recent performance metrics for debugging.\n\nLabels\n------\n\nMost metrics do have an equivalent ending with `WithLabels`, such methods\nallow to push metrics with labels and use some features of underlying Sinks\n(ex: translated into Prometheus labels).\n\nSince some of these labels may increase greatly cardinality of metrics, the\nlibrary allow to filter labels using a blacklist/whitelist filtering system\nwhich is global to all metrics.\n\n* If `Config.AllowedLabels` is not nil, then only labels specified in this value will be sent to underlying Sink, otherwise, all labels are sent by default.\n* If `Config.BlockedLabels` is not nil, any label specified in this value will not be sent to underlying Sinks.\n\nBy default, both `Config.AllowedLabels` and `Config.BlockedLabels` are nil, meaning that\nno tags are filetered at all, but it allow to a user to globally block some tags with high\ncardinality at application level.\n\nExamples\n--------\n\nHere is an example of using the package:\n\n```go\nfunc SlowMethod() {\n    // Profiling the runtime of a method\n    defer metrics.MeasureSince([]string{\"SlowMethod\"}, time.Now())\n}\n\n// Configure a statsite sink as the global metrics sink\nsink, _ := metrics.NewStatsiteSink(\"statsite:8125\")\nmetrics.NewGlobal(metrics.DefaultConfig(\"service-name\"), sink)\n\n// Emit a Key/Value pair\nmetrics.EmitKey([]string{\"questions\", \"meaning of life\"}, 42)\n```\n\nHere is an example of setting up a signal handler:\n\n```go\n// Setup the inmem sink and signal handler\ninm := metrics.NewInmemSink(10*time.Second, time.Minute)\nsig := metrics.DefaultInmemSignal(inm)\nmetrics.NewGlobal(metrics.DefaultConfig(\"service-name\"), inm)\n\n// Run some code\ninm.SetGauge([]string{\"foo\"}, 42)\ninm.EmitKey([]string{\"bar\"}, 30)\n\ninm.IncrCounter([]string{\"baz\"}, 42)\ninm.IncrCounter([]string{\"baz\"}, 1)\ninm.IncrCounter([]string{\"baz\"}, 80)\n\ninm.AddSample([]string{\"method\", \"wow\"}, 42)\ninm.AddSample([]string{\"method\", \"wow\"}, 100)\ninm.AddSample([]string{\"method\", \"wow\"}, 22)\n\n....\n```\n\nWhen a signal comes in, output like the following will be dumped to stderr:\n\n    [2014-01-28 14:57:33.04 -0800 PST][G] 'foo': 42.000\n    [2014-01-28 14:57:33.04 -0800 PST][P] 'bar': 30.000\n    [2014-01-28 14:57:33.04 -0800 PST][C] 'baz': Count: 3 Min: 1.000 Mean: 41.000 Max: 80.000 Stddev: 39.509\n    [2014-01-28 14:57:33.04 -0800 PST][S] 'method.wow': Count: 3 Min: 22.000 Mean: 54.667 Max: 100.000 Stddev: 40.513"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/const_unix.go",
    "content": "// +build !windows\n\npackage metrics\n\nimport (\n\t\"syscall\"\n)\n\nconst (\n\t// DefaultSignal is used with DefaultInmemSignal\n\tDefaultSignal = syscall.SIGUSR1\n)\n"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/const_windows.go",
    "content": "// +build windows\n\npackage metrics\n\nimport (\n\t\"syscall\"\n)\n\nconst (\n\t// DefaultSignal is used with DefaultInmemSignal\n\t// Windows has no SIGUSR1, use SIGBREAK\n\tDefaultSignal = syscall.Signal(21)\n)\n"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/inmem.go",
    "content": "package metrics\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math\"\n\t\"net/url\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\nvar spaceReplacer = strings.NewReplacer(\" \", \"_\")\n\n// InmemSink provides a MetricSink that does in-memory aggregation\n// without sending metrics over a network. It can be embedded within\n// an application to provide profiling information.\ntype InmemSink struct {\n\t// How long is each aggregation interval\n\tinterval time.Duration\n\n\t// Retain controls how many metrics interval we keep\n\tretain time.Duration\n\n\t// maxIntervals is the maximum length of intervals.\n\t// It is retain / interval.\n\tmaxIntervals int\n\n\t// intervals is a slice of the retained intervals\n\tintervals    []*IntervalMetrics\n\tintervalLock sync.RWMutex\n\n\trateDenom float64\n}\n\n// IntervalMetrics stores the aggregated metrics\n// for a specific interval\ntype IntervalMetrics struct {\n\tsync.RWMutex\n\n\t// The start time of the interval\n\tInterval time.Time\n\n\t// Gauges maps the key to the last set value\n\tGauges map[string]GaugeValue\n\n\t// Points maps the string to the list of emitted values\n\t// from EmitKey\n\tPoints map[string][]float32\n\n\t// Counters maps the string key to a sum of the counter\n\t// values\n\tCounters map[string]SampledValue\n\n\t// Samples maps the key to an AggregateSample,\n\t// which has the rolled up view of a sample\n\tSamples map[string]SampledValue\n\n\t// done is closed when this interval has ended, and a new IntervalMetrics\n\t// has been created to receive any future metrics.\n\tdone chan struct{}\n}\n\n// NewIntervalMetrics creates a new IntervalMetrics for a given interval\nfunc NewIntervalMetrics(intv time.Time) *IntervalMetrics {\n\treturn &IntervalMetrics{\n\t\tInterval: intv,\n\t\tGauges:   make(map[string]GaugeValue),\n\t\tPoints:   make(map[string][]float32),\n\t\tCounters: make(map[string]SampledValue),\n\t\tSamples:  make(map[string]SampledValue),\n\t\tdone:     make(chan struct{}),\n\t}\n}\n\n// AggregateSample is used to hold aggregate metrics\n// about a sample\ntype AggregateSample struct {\n\tCount       int       // The count of emitted pairs\n\tRate        float64   // The values rate per time unit (usually 1 second)\n\tSum         float64   // The sum of values\n\tSumSq       float64   `json:\"-\"` // The sum of squared values\n\tMin         float64   // Minimum value\n\tMax         float64   // Maximum value\n\tLastUpdated time.Time `json:\"-\"` // When value was last updated\n}\n\n// Computes a Stddev of the values\nfunc (a *AggregateSample) Stddev() float64 {\n\tnum := (float64(a.Count) * a.SumSq) - math.Pow(a.Sum, 2)\n\tdiv := float64(a.Count * (a.Count - 1))\n\tif div == 0 {\n\t\treturn 0\n\t}\n\treturn math.Sqrt(num / div)\n}\n\n// Computes a mean of the values\nfunc (a *AggregateSample) Mean() float64 {\n\tif a.Count == 0 {\n\t\treturn 0\n\t}\n\treturn a.Sum / float64(a.Count)\n}\n\n// Ingest is used to update a sample\nfunc (a *AggregateSample) Ingest(v float64, rateDenom float64) {\n\ta.Count++\n\ta.Sum += v\n\ta.SumSq += (v * v)\n\tif v < a.Min || a.Count == 1 {\n\t\ta.Min = v\n\t}\n\tif v > a.Max || a.Count == 1 {\n\t\ta.Max = v\n\t}\n\ta.Rate = float64(a.Sum) / rateDenom\n\ta.LastUpdated = time.Now()\n}\n\nfunc (a *AggregateSample) String() string {\n\tif a.Count == 0 {\n\t\treturn \"Count: 0\"\n\t} else if a.Stddev() == 0 {\n\t\treturn fmt.Sprintf(\"Count: %d Sum: %0.3f LastUpdated: %s\", a.Count, a.Sum, a.LastUpdated)\n\t} else {\n\t\treturn fmt.Sprintf(\"Count: %d Min: %0.3f Mean: %0.3f Max: %0.3f Stddev: %0.3f Sum: %0.3f LastUpdated: %s\",\n\t\t\ta.Count, a.Min, a.Mean(), a.Max, a.Stddev(), a.Sum, a.LastUpdated)\n\t}\n}\n\n// NewInmemSinkFromURL creates an InmemSink from a URL. It is used\n// (and tested) from NewMetricSinkFromURL.\nfunc NewInmemSinkFromURL(u *url.URL) (MetricSink, error) {\n\tparams := u.Query()\n\n\tinterval, err := time.ParseDuration(params.Get(\"interval\"))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Bad 'interval' param: %s\", err)\n\t}\n\n\tretain, err := time.ParseDuration(params.Get(\"retain\"))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Bad 'retain' param: %s\", err)\n\t}\n\n\treturn NewInmemSink(interval, retain), nil\n}\n\n// NewInmemSink is used to construct a new in-memory sink.\n// Uses an aggregation interval and maximum retention period.\nfunc NewInmemSink(interval, retain time.Duration) *InmemSink {\n\trateTimeUnit := time.Second\n\ti := &InmemSink{\n\t\tinterval:     interval,\n\t\tretain:       retain,\n\t\tmaxIntervals: int(retain / interval),\n\t\trateDenom:    float64(interval.Nanoseconds()) / float64(rateTimeUnit.Nanoseconds()),\n\t}\n\ti.intervals = make([]*IntervalMetrics, 0, i.maxIntervals)\n\treturn i\n}\n\nfunc (i *InmemSink) SetGauge(key []string, val float32) {\n\ti.SetGaugeWithLabels(key, val, nil)\n}\n\nfunc (i *InmemSink) SetGaugeWithLabels(key []string, val float32, labels []Label) {\n\tk, name := i.flattenKeyLabels(key, labels)\n\tintv := i.getInterval()\n\n\tintv.Lock()\n\tdefer intv.Unlock()\n\tintv.Gauges[k] = GaugeValue{Name: name, Value: val, Labels: labels}\n}\n\nfunc (i *InmemSink) EmitKey(key []string, val float32) {\n\tk := i.flattenKey(key)\n\tintv := i.getInterval()\n\n\tintv.Lock()\n\tdefer intv.Unlock()\n\tvals := intv.Points[k]\n\tintv.Points[k] = append(vals, val)\n}\n\nfunc (i *InmemSink) IncrCounter(key []string, val float32) {\n\ti.IncrCounterWithLabels(key, val, nil)\n}\n\nfunc (i *InmemSink) IncrCounterWithLabels(key []string, val float32, labels []Label) {\n\tk, name := i.flattenKeyLabels(key, labels)\n\tintv := i.getInterval()\n\n\tintv.Lock()\n\tdefer intv.Unlock()\n\n\tagg, ok := intv.Counters[k]\n\tif !ok {\n\t\tagg = SampledValue{\n\t\t\tName:            name,\n\t\t\tAggregateSample: &AggregateSample{},\n\t\t\tLabels:          labels,\n\t\t}\n\t\tintv.Counters[k] = agg\n\t}\n\tagg.Ingest(float64(val), i.rateDenom)\n}\n\nfunc (i *InmemSink) AddSample(key []string, val float32) {\n\ti.AddSampleWithLabels(key, val, nil)\n}\n\nfunc (i *InmemSink) AddSampleWithLabels(key []string, val float32, labels []Label) {\n\tk, name := i.flattenKeyLabels(key, labels)\n\tintv := i.getInterval()\n\n\tintv.Lock()\n\tdefer intv.Unlock()\n\n\tagg, ok := intv.Samples[k]\n\tif !ok {\n\t\tagg = SampledValue{\n\t\t\tName:            name,\n\t\t\tAggregateSample: &AggregateSample{},\n\t\t\tLabels:          labels,\n\t\t}\n\t\tintv.Samples[k] = agg\n\t}\n\tagg.Ingest(float64(val), i.rateDenom)\n}\n\n// Data is used to retrieve all the aggregated metrics\n// Intervals may be in use, and a read lock should be acquired\nfunc (i *InmemSink) Data() []*IntervalMetrics {\n\t// Get the current interval, forces creation\n\ti.getInterval()\n\n\ti.intervalLock.RLock()\n\tdefer i.intervalLock.RUnlock()\n\n\tn := len(i.intervals)\n\tintervals := make([]*IntervalMetrics, n)\n\n\tcopy(intervals[:n-1], i.intervals[:n-1])\n\tcurrent := i.intervals[n-1]\n\n\t// make its own copy for current interval\n\tintervals[n-1] = &IntervalMetrics{}\n\tcopyCurrent := intervals[n-1]\n\tcurrent.RLock()\n\t*copyCurrent = *current\n\t// RWMutex is not safe to copy, so create a new instance on the copy\n\tcopyCurrent.RWMutex = sync.RWMutex{}\n\n\tcopyCurrent.Gauges = make(map[string]GaugeValue, len(current.Gauges))\n\tfor k, v := range current.Gauges {\n\t\tcopyCurrent.Gauges[k] = v\n\t}\n\t// saved values will be not change, just copy its link\n\tcopyCurrent.Points = make(map[string][]float32, len(current.Points))\n\tfor k, v := range current.Points {\n\t\tcopyCurrent.Points[k] = v\n\t}\n\tcopyCurrent.Counters = make(map[string]SampledValue, len(current.Counters))\n\tfor k, v := range current.Counters {\n\t\tcopyCurrent.Counters[k] = v.deepCopy()\n\t}\n\tcopyCurrent.Samples = make(map[string]SampledValue, len(current.Samples))\n\tfor k, v := range current.Samples {\n\t\tcopyCurrent.Samples[k] = v.deepCopy()\n\t}\n\tcurrent.RUnlock()\n\n\treturn intervals\n}\n\n// getInterval returns the current interval. A new interval is created if no\n// previous interval exists, or if the current time is beyond the window for the\n// current interval.\nfunc (i *InmemSink) getInterval() *IntervalMetrics {\n\tintv := time.Now().Truncate(i.interval)\n\n\t// Attempt to return the existing interval first, because it only requires\n\t// a read lock.\n\ti.intervalLock.RLock()\n\tn := len(i.intervals)\n\tif n > 0 && i.intervals[n-1].Interval == intv {\n\t\tdefer i.intervalLock.RUnlock()\n\t\treturn i.intervals[n-1]\n\t}\n\ti.intervalLock.RUnlock()\n\n\ti.intervalLock.Lock()\n\tdefer i.intervalLock.Unlock()\n\n\t// Re-check for an existing interval now that the lock is re-acquired.\n\tn = len(i.intervals)\n\tif n > 0 && i.intervals[n-1].Interval == intv {\n\t\treturn i.intervals[n-1]\n\t}\n\n\tcurrent := NewIntervalMetrics(intv)\n\ti.intervals = append(i.intervals, current)\n\tif n > 0 {\n\t\tclose(i.intervals[n-1].done)\n\t}\n\n\tn++\n\t// Prune old intervals if the count exceeds the max.\n\tif n >= i.maxIntervals {\n\t\tcopy(i.intervals[0:], i.intervals[n-i.maxIntervals:])\n\t\ti.intervals = i.intervals[:i.maxIntervals]\n\t}\n\treturn current\n}\n\n// Flattens the key for formatting, removes spaces\nfunc (i *InmemSink) flattenKey(parts []string) string {\n\tbuf := &bytes.Buffer{}\n\n\tjoined := strings.Join(parts, \".\")\n\n\tspaceReplacer.WriteString(buf, joined)\n\n\treturn buf.String()\n}\n\n// Flattens the key for formatting along with its labels, removes spaces\nfunc (i *InmemSink) flattenKeyLabels(parts []string, labels []Label) (string, string) {\n\tkey := i.flattenKey(parts)\n\tbuf := bytes.NewBufferString(key)\n\n\tfor _, label := range labels {\n\t\tspaceReplacer.WriteString(buf, fmt.Sprintf(\";%s=%s\", label.Name, label.Value))\n\t}\n\n\treturn buf.String(), key\n}\n"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/inmem_endpoint.go",
    "content": "package metrics\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"sort\"\n\t\"time\"\n)\n\n// MetricsSummary holds a roll-up of metrics info for a given interval\ntype MetricsSummary struct {\n\tTimestamp string\n\tGauges    []GaugeValue\n\tPoints    []PointValue\n\tCounters  []SampledValue\n\tSamples   []SampledValue\n}\n\ntype GaugeValue struct {\n\tName  string\n\tHash  string `json:\"-\"`\n\tValue float32\n\n\tLabels        []Label           `json:\"-\"`\n\tDisplayLabels map[string]string `json:\"Labels\"`\n}\n\ntype PointValue struct {\n\tName   string\n\tPoints []float32\n}\n\ntype SampledValue struct {\n\tName string\n\tHash string `json:\"-\"`\n\t*AggregateSample\n\tMean   float64\n\tStddev float64\n\n\tLabels        []Label           `json:\"-\"`\n\tDisplayLabels map[string]string `json:\"Labels\"`\n}\n\n// deepCopy allocates a new instance of AggregateSample\nfunc (source *SampledValue) deepCopy() SampledValue {\n\tdest := *source\n\tif source.AggregateSample != nil {\n\t\tdest.AggregateSample = &AggregateSample{}\n\t\t*dest.AggregateSample = *source.AggregateSample\n\t}\n\treturn dest\n}\n\n// DisplayMetrics returns a summary of the metrics from the most recent finished interval.\nfunc (i *InmemSink) DisplayMetrics(resp http.ResponseWriter, req *http.Request) (interface{}, error) {\n\tdata := i.Data()\n\n\tvar interval *IntervalMetrics\n\tn := len(data)\n\tswitch {\n\tcase n == 0:\n\t\treturn nil, fmt.Errorf(\"no metric intervals have been initialized yet\")\n\tcase n == 1:\n\t\t// Show the current interval if it's all we have\n\t\tinterval = data[0]\n\tdefault:\n\t\t// Show the most recent finished interval if we have one\n\t\tinterval = data[n-2]\n\t}\n\n\treturn newMetricSummaryFromInterval(interval), nil\n}\n\nfunc newMetricSummaryFromInterval(interval *IntervalMetrics) MetricsSummary {\n\tinterval.RLock()\n\tdefer interval.RUnlock()\n\n\tsummary := MetricsSummary{\n\t\tTimestamp: interval.Interval.Round(time.Second).UTC().String(),\n\t\tGauges:    make([]GaugeValue, 0, len(interval.Gauges)),\n\t\tPoints:    make([]PointValue, 0, len(interval.Points)),\n\t}\n\n\t// Format and sort the output of each metric type, so it gets displayed in a\n\t// deterministic order.\n\tfor name, points := range interval.Points {\n\t\tsummary.Points = append(summary.Points, PointValue{name, points})\n\t}\n\tsort.Slice(summary.Points, func(i, j int) bool {\n\t\treturn summary.Points[i].Name < summary.Points[j].Name\n\t})\n\n\tfor hash, value := range interval.Gauges {\n\t\tvalue.Hash = hash\n\t\tvalue.DisplayLabels = make(map[string]string)\n\t\tfor _, label := range value.Labels {\n\t\t\tvalue.DisplayLabels[label.Name] = label.Value\n\t\t}\n\t\tvalue.Labels = nil\n\n\t\tsummary.Gauges = append(summary.Gauges, value)\n\t}\n\tsort.Slice(summary.Gauges, func(i, j int) bool {\n\t\treturn summary.Gauges[i].Hash < summary.Gauges[j].Hash\n\t})\n\n\tsummary.Counters = formatSamples(interval.Counters)\n\tsummary.Samples = formatSamples(interval.Samples)\n\n\treturn summary\n}\n\nfunc formatSamples(source map[string]SampledValue) []SampledValue {\n\toutput := make([]SampledValue, 0, len(source))\n\tfor hash, sample := range source {\n\t\tdisplayLabels := make(map[string]string)\n\t\tfor _, label := range sample.Labels {\n\t\t\tdisplayLabels[label.Name] = label.Value\n\t\t}\n\n\t\toutput = append(output, SampledValue{\n\t\t\tName:            sample.Name,\n\t\t\tHash:            hash,\n\t\t\tAggregateSample: sample.AggregateSample,\n\t\t\tMean:            sample.AggregateSample.Mean(),\n\t\t\tStddev:          sample.AggregateSample.Stddev(),\n\t\t\tDisplayLabels:   displayLabels,\n\t\t})\n\t}\n\tsort.Slice(output, func(i, j int) bool {\n\t\treturn output[i].Hash < output[j].Hash\n\t})\n\n\treturn output\n}\n\ntype Encoder interface {\n\tEncode(interface{}) error\n}\n\n// Stream writes metrics using encoder.Encode each time an interval ends. Runs\n// until the request context is cancelled, or the encoder returns an error.\n// The caller is responsible for logging any errors from encoder.\nfunc (i *InmemSink) Stream(ctx context.Context, encoder Encoder) {\n\tinterval := i.getInterval()\n\n\tfor {\n\t\tselect {\n\t\tcase <-interval.done:\n\t\t\tsummary := newMetricSummaryFromInterval(interval)\n\t\t\tif err := encoder.Encode(summary); err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// update interval to the next one\n\t\t\tinterval = i.getInterval()\n\t\tcase <-ctx.Done():\n\t\t\treturn\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/inmem_signal.go",
    "content": "package metrics\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"os/signal\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n)\n\n// InmemSignal is used to listen for a given signal, and when received,\n// to dump the current metrics from the InmemSink to an io.Writer\ntype InmemSignal struct {\n\tsignal syscall.Signal\n\tinm    *InmemSink\n\tw      io.Writer\n\tsigCh  chan os.Signal\n\n\tstop     bool\n\tstopCh   chan struct{}\n\tstopLock sync.Mutex\n}\n\n// NewInmemSignal creates a new InmemSignal which listens for a given signal,\n// and dumps the current metrics out to a writer\nfunc NewInmemSignal(inmem *InmemSink, sig syscall.Signal, w io.Writer) *InmemSignal {\n\ti := &InmemSignal{\n\t\tsignal: sig,\n\t\tinm:    inmem,\n\t\tw:      w,\n\t\tsigCh:  make(chan os.Signal, 1),\n\t\tstopCh: make(chan struct{}),\n\t}\n\tsignal.Notify(i.sigCh, sig)\n\tgo i.run()\n\treturn i\n}\n\n// DefaultInmemSignal returns a new InmemSignal that responds to SIGUSR1\n// and writes output to stderr. Windows uses SIGBREAK\nfunc DefaultInmemSignal(inmem *InmemSink) *InmemSignal {\n\treturn NewInmemSignal(inmem, DefaultSignal, os.Stderr)\n}\n\n// Stop is used to stop the InmemSignal from listening\nfunc (i *InmemSignal) Stop() {\n\ti.stopLock.Lock()\n\tdefer i.stopLock.Unlock()\n\n\tif i.stop {\n\t\treturn\n\t}\n\ti.stop = true\n\tclose(i.stopCh)\n\tsignal.Stop(i.sigCh)\n}\n\n// run is a long running routine that handles signals\nfunc (i *InmemSignal) run() {\n\tfor {\n\t\tselect {\n\t\tcase <-i.sigCh:\n\t\t\ti.dumpStats()\n\t\tcase <-i.stopCh:\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// dumpStats is used to dump the data to output writer\nfunc (i *InmemSignal) dumpStats() {\n\tbuf := bytes.NewBuffer(nil)\n\n\tdata := i.inm.Data()\n\t// Skip the last period which is still being aggregated\n\tfor j := 0; j < len(data)-1; j++ {\n\t\tintv := data[j]\n\t\tintv.RLock()\n\t\tfor _, val := range intv.Gauges {\n\t\t\tname := i.flattenLabels(val.Name, val.Labels)\n\t\t\tfmt.Fprintf(buf, \"[%v][G] '%s': %0.3f\\n\", intv.Interval, name, val.Value)\n\t\t}\n\t\tfor name, vals := range intv.Points {\n\t\t\tfor _, val := range vals {\n\t\t\t\tfmt.Fprintf(buf, \"[%v][P] '%s': %0.3f\\n\", intv.Interval, name, val)\n\t\t\t}\n\t\t}\n\t\tfor _, agg := range intv.Counters {\n\t\t\tname := i.flattenLabels(agg.Name, agg.Labels)\n\t\t\tfmt.Fprintf(buf, \"[%v][C] '%s': %s\\n\", intv.Interval, name, agg.AggregateSample)\n\t\t}\n\t\tfor _, agg := range intv.Samples {\n\t\t\tname := i.flattenLabels(agg.Name, agg.Labels)\n\t\t\tfmt.Fprintf(buf, \"[%v][S] '%s': %s\\n\", intv.Interval, name, agg.AggregateSample)\n\t\t}\n\t\tintv.RUnlock()\n\t}\n\n\t// Write out the bytes\n\ti.w.Write(buf.Bytes())\n}\n\n// Flattens the key for formatting along with its labels, removes spaces\nfunc (i *InmemSignal) flattenLabels(name string, labels []Label) string {\n\tbuf := bytes.NewBufferString(name)\n\treplacer := strings.NewReplacer(\" \", \"_\", \":\", \"_\")\n\n\tfor _, label := range labels {\n\t\treplacer.WriteString(buf, \".\")\n\t\treplacer.WriteString(buf, label.Value)\n\t}\n\n\treturn buf.String()\n}\n"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/metrics.go",
    "content": "package metrics\n\nimport (\n\t\"runtime\"\n\t\"strings\"\n\t\"time\"\n\n\tiradix \"github.com/hashicorp/go-immutable-radix\"\n)\n\ntype Label struct {\n\tName  string\n\tValue string\n}\n\nfunc (m *Metrics) SetGauge(key []string, val float32) {\n\tm.SetGaugeWithLabels(key, val, nil)\n}\n\nfunc (m *Metrics) SetGaugeWithLabels(key []string, val float32, labels []Label) {\n\tif m.HostName != \"\" {\n\t\tif m.EnableHostnameLabel {\n\t\t\tlabels = append(labels, Label{\"host\", m.HostName})\n\t\t} else if m.EnableHostname {\n\t\t\tkey = insert(0, m.HostName, key)\n\t\t}\n\t}\n\tif m.EnableTypePrefix {\n\t\tkey = insert(0, \"gauge\", key)\n\t}\n\tif m.ServiceName != \"\" {\n\t\tif m.EnableServiceLabel {\n\t\t\tlabels = append(labels, Label{\"service\", m.ServiceName})\n\t\t} else {\n\t\t\tkey = insert(0, m.ServiceName, key)\n\t\t}\n\t}\n\tallowed, labelsFiltered := m.allowMetric(key, labels)\n\tif !allowed {\n\t\treturn\n\t}\n\tm.sink.SetGaugeWithLabels(key, val, labelsFiltered)\n}\n\nfunc (m *Metrics) EmitKey(key []string, val float32) {\n\tif m.EnableTypePrefix {\n\t\tkey = insert(0, \"kv\", key)\n\t}\n\tif m.ServiceName != \"\" {\n\t\tkey = insert(0, m.ServiceName, key)\n\t}\n\tallowed, _ := m.allowMetric(key, nil)\n\tif !allowed {\n\t\treturn\n\t}\n\tm.sink.EmitKey(key, val)\n}\n\nfunc (m *Metrics) IncrCounter(key []string, val float32) {\n\tm.IncrCounterWithLabels(key, val, nil)\n}\n\nfunc (m *Metrics) IncrCounterWithLabels(key []string, val float32, labels []Label) {\n\tif m.HostName != \"\" && m.EnableHostnameLabel {\n\t\tlabels = append(labels, Label{\"host\", m.HostName})\n\t}\n\tif m.EnableTypePrefix {\n\t\tkey = insert(0, \"counter\", key)\n\t}\n\tif m.ServiceName != \"\" {\n\t\tif m.EnableServiceLabel {\n\t\t\tlabels = append(labels, Label{\"service\", m.ServiceName})\n\t\t} else {\n\t\t\tkey = insert(0, m.ServiceName, key)\n\t\t}\n\t}\n\tallowed, labelsFiltered := m.allowMetric(key, labels)\n\tif !allowed {\n\t\treturn\n\t}\n\tm.sink.IncrCounterWithLabels(key, val, labelsFiltered)\n}\n\nfunc (m *Metrics) AddSample(key []string, val float32) {\n\tm.AddSampleWithLabels(key, val, nil)\n}\n\nfunc (m *Metrics) AddSampleWithLabels(key []string, val float32, labels []Label) {\n\tif m.HostName != \"\" && m.EnableHostnameLabel {\n\t\tlabels = append(labels, Label{\"host\", m.HostName})\n\t}\n\tif m.EnableTypePrefix {\n\t\tkey = insert(0, \"sample\", key)\n\t}\n\tif m.ServiceName != \"\" {\n\t\tif m.EnableServiceLabel {\n\t\t\tlabels = append(labels, Label{\"service\", m.ServiceName})\n\t\t} else {\n\t\t\tkey = insert(0, m.ServiceName, key)\n\t\t}\n\t}\n\tallowed, labelsFiltered := m.allowMetric(key, labels)\n\tif !allowed {\n\t\treturn\n\t}\n\tm.sink.AddSampleWithLabels(key, val, labelsFiltered)\n}\n\nfunc (m *Metrics) MeasureSince(key []string, start time.Time) {\n\tm.MeasureSinceWithLabels(key, start, nil)\n}\n\nfunc (m *Metrics) MeasureSinceWithLabels(key []string, start time.Time, labels []Label) {\n\tif m.HostName != \"\" && m.EnableHostnameLabel {\n\t\tlabels = append(labels, Label{\"host\", m.HostName})\n\t}\n\tif m.EnableTypePrefix {\n\t\tkey = insert(0, \"timer\", key)\n\t}\n\tif m.ServiceName != \"\" {\n\t\tif m.EnableServiceLabel {\n\t\t\tlabels = append(labels, Label{\"service\", m.ServiceName})\n\t\t} else {\n\t\t\tkey = insert(0, m.ServiceName, key)\n\t\t}\n\t}\n\tallowed, labelsFiltered := m.allowMetric(key, labels)\n\tif !allowed {\n\t\treturn\n\t}\n\tnow := time.Now()\n\telapsed := now.Sub(start)\n\tmsec := float32(elapsed.Nanoseconds()) / float32(m.TimerGranularity)\n\tm.sink.AddSampleWithLabels(key, msec, labelsFiltered)\n}\n\n// UpdateFilter overwrites the existing filter with the given rules.\nfunc (m *Metrics) UpdateFilter(allow, block []string) {\n\tm.UpdateFilterAndLabels(allow, block, m.AllowedLabels, m.BlockedLabels)\n}\n\n// UpdateFilterAndLabels overwrites the existing filter with the given rules.\nfunc (m *Metrics) UpdateFilterAndLabels(allow, block, allowedLabels, blockedLabels []string) {\n\tm.filterLock.Lock()\n\tdefer m.filterLock.Unlock()\n\n\tm.AllowedPrefixes = allow\n\tm.BlockedPrefixes = block\n\n\tif allowedLabels == nil {\n\t\t// Having a white list means we take only elements from it\n\t\tm.allowedLabels = nil\n\t} else {\n\t\tm.allowedLabels = make(map[string]bool)\n\t\tfor _, v := range allowedLabels {\n\t\t\tm.allowedLabels[v] = true\n\t\t}\n\t}\n\tm.blockedLabels = make(map[string]bool)\n\tfor _, v := range blockedLabels {\n\t\tm.blockedLabels[v] = true\n\t}\n\tm.AllowedLabels = allowedLabels\n\tm.BlockedLabels = blockedLabels\n\n\tm.filter = iradix.New()\n\tfor _, prefix := range m.AllowedPrefixes {\n\t\tm.filter, _, _ = m.filter.Insert([]byte(prefix), true)\n\t}\n\tfor _, prefix := range m.BlockedPrefixes {\n\t\tm.filter, _, _ = m.filter.Insert([]byte(prefix), false)\n\t}\n}\n\nfunc (m *Metrics) Shutdown() {\n\tif ss, ok := m.sink.(ShutdownSink); ok {\n\t\tss.Shutdown()\n\t}\n}\n\n// labelIsAllowed return true if a should be included in metric\n// the caller should lock m.filterLock while calling this method\nfunc (m *Metrics) labelIsAllowed(label *Label) bool {\n\tlabelName := (*label).Name\n\tif m.blockedLabels != nil {\n\t\t_, ok := m.blockedLabels[labelName]\n\t\tif ok {\n\t\t\t// If present, let's remove this label\n\t\t\treturn false\n\t\t}\n\t}\n\tif m.allowedLabels != nil {\n\t\t_, ok := m.allowedLabels[labelName]\n\t\treturn ok\n\t}\n\t// Allow by default\n\treturn true\n}\n\n// filterLabels return only allowed labels\n// the caller should lock m.filterLock while calling this method\nfunc (m *Metrics) filterLabels(labels []Label) []Label {\n\tif labels == nil {\n\t\treturn nil\n\t}\n\ttoReturn := []Label{}\n\tfor _, label := range labels {\n\t\tif m.labelIsAllowed(&label) {\n\t\t\ttoReturn = append(toReturn, label)\n\t\t}\n\t}\n\treturn toReturn\n}\n\n// Returns whether the metric should be allowed based on configured prefix filters\n// Also return the applicable labels\nfunc (m *Metrics) allowMetric(key []string, labels []Label) (bool, []Label) {\n\tm.filterLock.RLock()\n\tdefer m.filterLock.RUnlock()\n\n\tif m.filter == nil || m.filter.Len() == 0 {\n\t\treturn m.Config.FilterDefault, m.filterLabels(labels)\n\t}\n\n\t_, allowed, ok := m.filter.Root().LongestPrefix([]byte(strings.Join(key, \".\")))\n\tif !ok {\n\t\treturn m.Config.FilterDefault, m.filterLabels(labels)\n\t}\n\n\treturn allowed.(bool), m.filterLabels(labels)\n}\n\n// Periodically collects runtime stats to publish\nfunc (m *Metrics) collectStats() {\n\tfor {\n\t\ttime.Sleep(m.ProfileInterval)\n\t\tm.EmitRuntimeStats()\n\t}\n}\n\n// Emits various runtime statsitics\nfunc (m *Metrics) EmitRuntimeStats() {\n\t// Export number of Goroutines\n\tnumRoutines := runtime.NumGoroutine()\n\tm.SetGauge([]string{\"runtime\", \"num_goroutines\"}, float32(numRoutines))\n\n\t// Export memory stats\n\tvar stats runtime.MemStats\n\truntime.ReadMemStats(&stats)\n\tm.SetGauge([]string{\"runtime\", \"alloc_bytes\"}, float32(stats.Alloc))\n\tm.SetGauge([]string{\"runtime\", \"sys_bytes\"}, float32(stats.Sys))\n\tm.SetGauge([]string{\"runtime\", \"malloc_count\"}, float32(stats.Mallocs))\n\tm.SetGauge([]string{\"runtime\", \"free_count\"}, float32(stats.Frees))\n\tm.SetGauge([]string{\"runtime\", \"heap_objects\"}, float32(stats.HeapObjects))\n\tm.SetGauge([]string{\"runtime\", \"total_gc_pause_ns\"}, float32(stats.PauseTotalNs))\n\tm.SetGauge([]string{\"runtime\", \"total_gc_runs\"}, float32(stats.NumGC))\n\n\t// Export info about the last few GC runs\n\tnum := stats.NumGC\n\n\t// Handle wrap around\n\tif num < m.lastNumGC {\n\t\tm.lastNumGC = 0\n\t}\n\n\t// Ensure we don't scan more than 256\n\tif num-m.lastNumGC >= 256 {\n\t\tm.lastNumGC = num - 255\n\t}\n\n\tfor i := m.lastNumGC; i < num; i++ {\n\t\tpause := stats.PauseNs[i%256]\n\t\tm.AddSample([]string{\"runtime\", \"gc_pause_ns\"}, float32(pause))\n\t}\n\tm.lastNumGC = num\n}\n\n// Creates a new slice with the provided string value as the first element\n// and the provided slice values as the remaining values.\n// Ordering of the values in the provided input slice is kept in tact in the output slice.\nfunc insert(i int, v string, s []string) []string {\n\t// Allocate new slice to avoid modifying the input slice\n\tnewS := make([]string, len(s)+1)\n\n\t// Copy s[0, i-1] into newS\n\tfor j := 0; j < i; j++ {\n\t\tnewS[j] = s[j]\n\t}\n\n\t// Insert provided element at index i\n\tnewS[i] = v\n\n\t// Copy s[i, len(s)-1] into newS starting at newS[i+1]\n\tfor j := i; j < len(s); j++ {\n\t\tnewS[j+1] = s[j]\n\t}\n\n\treturn newS\n}\n"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/sink.go",
    "content": "package metrics\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n)\n\n// The MetricSink interface is used to transmit metrics information\n// to an external system\ntype MetricSink interface {\n\t// A Gauge should retain the last value it is set to\n\tSetGauge(key []string, val float32)\n\tSetGaugeWithLabels(key []string, val float32, labels []Label)\n\n\t// Should emit a Key/Value pair for each call\n\tEmitKey(key []string, val float32)\n\n\t// Counters should accumulate values\n\tIncrCounter(key []string, val float32)\n\tIncrCounterWithLabels(key []string, val float32, labels []Label)\n\n\t// Samples are for timing information, where quantiles are used\n\tAddSample(key []string, val float32)\n\tAddSampleWithLabels(key []string, val float32, labels []Label)\n}\n\ntype ShutdownSink interface {\n\tMetricSink\n\n\t// Shutdown the metric sink, flush metrics to storage, and cleanup resources.\n\t// Called immediately prior to application exit. Implementations must block\n\t// until metrics are flushed to storage.\n\tShutdown()\n}\n\n// BlackholeSink is used to just blackhole messages\ntype BlackholeSink struct{}\n\nfunc (*BlackholeSink) SetGauge(key []string, val float32)                              {}\nfunc (*BlackholeSink) SetGaugeWithLabels(key []string, val float32, labels []Label)    {}\nfunc (*BlackholeSink) EmitKey(key []string, val float32)                               {}\nfunc (*BlackholeSink) IncrCounter(key []string, val float32)                           {}\nfunc (*BlackholeSink) IncrCounterWithLabels(key []string, val float32, labels []Label) {}\nfunc (*BlackholeSink) AddSample(key []string, val float32)                             {}\nfunc (*BlackholeSink) AddSampleWithLabels(key []string, val float32, labels []Label)   {}\n\n// FanoutSink is used to sink to fanout values to multiple sinks\ntype FanoutSink []MetricSink\n\nfunc (fh FanoutSink) SetGauge(key []string, val float32) {\n\tfh.SetGaugeWithLabels(key, val, nil)\n}\n\nfunc (fh FanoutSink) SetGaugeWithLabels(key []string, val float32, labels []Label) {\n\tfor _, s := range fh {\n\t\ts.SetGaugeWithLabels(key, val, labels)\n\t}\n}\n\nfunc (fh FanoutSink) EmitKey(key []string, val float32) {\n\tfor _, s := range fh {\n\t\ts.EmitKey(key, val)\n\t}\n}\n\nfunc (fh FanoutSink) IncrCounter(key []string, val float32) {\n\tfh.IncrCounterWithLabels(key, val, nil)\n}\n\nfunc (fh FanoutSink) IncrCounterWithLabels(key []string, val float32, labels []Label) {\n\tfor _, s := range fh {\n\t\ts.IncrCounterWithLabels(key, val, labels)\n\t}\n}\n\nfunc (fh FanoutSink) AddSample(key []string, val float32) {\n\tfh.AddSampleWithLabels(key, val, nil)\n}\n\nfunc (fh FanoutSink) AddSampleWithLabels(key []string, val float32, labels []Label) {\n\tfor _, s := range fh {\n\t\ts.AddSampleWithLabels(key, val, labels)\n\t}\n}\n\nfunc (fh FanoutSink) Shutdown() {\n\tfor _, s := range fh {\n\t\tif ss, ok := s.(ShutdownSink); ok {\n\t\t\tss.Shutdown()\n\t\t}\n\t}\n}\n\n// sinkURLFactoryFunc is an generic interface around the *SinkFromURL() function provided\n// by each sink type\ntype sinkURLFactoryFunc func(*url.URL) (MetricSink, error)\n\n// sinkRegistry supports the generic NewMetricSink function by mapping URL\n// schemes to metric sink factory functions\nvar sinkRegistry = map[string]sinkURLFactoryFunc{\n\t\"statsd\":   NewStatsdSinkFromURL,\n\t\"statsite\": NewStatsiteSinkFromURL,\n\t\"inmem\":    NewInmemSinkFromURL,\n}\n\n// NewMetricSinkFromURL allows a generic URL input to configure any of the\n// supported sinks. The scheme of the URL identifies the type of the sink, the\n// and query parameters are used to set options.\n//\n// \"statsd://\" - Initializes a StatsdSink. The host and port are passed through\n// as the \"addr\" of the sink\n//\n// \"statsite://\" - Initializes a StatsiteSink. The host and port become the\n// \"addr\" of the sink\n//\n// \"inmem://\" - Initializes an InmemSink. The host and port are ignored. The\n// \"interval\" and \"duration\" query parameters must be specified with valid\n// durations, see NewInmemSink for details.\nfunc NewMetricSinkFromURL(urlStr string) (MetricSink, error) {\n\tu, err := url.Parse(urlStr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsinkURLFactoryFunc := sinkRegistry[u.Scheme]\n\tif sinkURLFactoryFunc == nil {\n\t\treturn nil, fmt.Errorf(\n\t\t\t\"cannot create metric sink, unrecognized sink name: %q\", u.Scheme)\n\t}\n\n\treturn sinkURLFactoryFunc(u)\n}\n"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/start.go",
    "content": "package metrics\n\nimport (\n\t\"os\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\tiradix \"github.com/hashicorp/go-immutable-radix\"\n)\n\n// Config is used to configure metrics settings\ntype Config struct {\n\tServiceName          string        // Prefixed with keys to separate services\n\tHostName             string        // Hostname to use. If not provided and EnableHostname, it will be os.Hostname\n\tEnableHostname       bool          // Enable prefixing gauge values with hostname\n\tEnableHostnameLabel  bool          // Enable adding hostname to labels\n\tEnableServiceLabel   bool          // Enable adding service to labels\n\tEnableRuntimeMetrics bool          // Enables profiling of runtime metrics (GC, Goroutines, Memory)\n\tEnableTypePrefix     bool          // Prefixes key with a type (\"counter\", \"gauge\", \"timer\")\n\tTimerGranularity     time.Duration // Granularity of timers.\n\tProfileInterval      time.Duration // Interval to profile runtime metrics\n\n\tAllowedPrefixes []string // A list of metric prefixes to allow, with '.' as the separator\n\tBlockedPrefixes []string // A list of metric prefixes to block, with '.' as the separator\n\tAllowedLabels   []string // A list of metric labels to allow, with '.' as the separator\n\tBlockedLabels   []string // A list of metric labels to block, with '.' as the separator\n\tFilterDefault   bool     // Whether to allow metrics by default\n}\n\n// Metrics represents an instance of a metrics sink that can\n// be used to emit\ntype Metrics struct {\n\tConfig\n\tlastNumGC     uint32\n\tsink          MetricSink\n\tfilter        *iradix.Tree\n\tallowedLabels map[string]bool\n\tblockedLabels map[string]bool\n\tfilterLock    sync.RWMutex // Lock filters and allowedLabels/blockedLabels access\n}\n\n// Shared global metrics instance\nvar globalMetrics atomic.Value // *Metrics\n\nfunc init() {\n\t// Initialize to a blackhole sink to avoid errors\n\tglobalMetrics.Store(&Metrics{sink: &BlackholeSink{}})\n}\n\n// Default returns the shared global metrics instance.\nfunc Default() *Metrics {\n\treturn globalMetrics.Load().(*Metrics)\n}\n\n// DefaultConfig provides a sane default configuration\nfunc DefaultConfig(serviceName string) *Config {\n\tc := &Config{\n\t\tServiceName:          serviceName, // Use client provided service\n\t\tHostName:             \"\",\n\t\tEnableHostname:       true,             // Enable hostname prefix\n\t\tEnableRuntimeMetrics: true,             // Enable runtime profiling\n\t\tEnableTypePrefix:     false,            // Disable type prefix\n\t\tTimerGranularity:     time.Millisecond, // Timers are in milliseconds\n\t\tProfileInterval:      time.Second,      // Poll runtime every second\n\t\tFilterDefault:        true,             // Don't filter metrics by default\n\t}\n\n\t// Try to get the hostname\n\tname, _ := os.Hostname()\n\tc.HostName = name\n\treturn c\n}\n\n// New is used to create a new instance of Metrics\nfunc New(conf *Config, sink MetricSink) (*Metrics, error) {\n\tmet := &Metrics{}\n\tmet.Config = *conf\n\tmet.sink = sink\n\tmet.UpdateFilterAndLabels(conf.AllowedPrefixes, conf.BlockedPrefixes, conf.AllowedLabels, conf.BlockedLabels)\n\n\t// Start the runtime collector\n\tif conf.EnableRuntimeMetrics {\n\t\tgo met.collectStats()\n\t}\n\treturn met, nil\n}\n\n// NewGlobal is the same as New, but it assigns the metrics object to be\n// used globally as well as returning it.\nfunc NewGlobal(conf *Config, sink MetricSink) (*Metrics, error) {\n\tmetrics, err := New(conf, sink)\n\tif err == nil {\n\t\tglobalMetrics.Store(metrics)\n\t}\n\treturn metrics, err\n}\n\n// Proxy all the methods to the globalMetrics instance\nfunc SetGauge(key []string, val float32) {\n\tglobalMetrics.Load().(*Metrics).SetGauge(key, val)\n}\n\nfunc SetGaugeWithLabels(key []string, val float32, labels []Label) {\n\tglobalMetrics.Load().(*Metrics).SetGaugeWithLabels(key, val, labels)\n}\n\nfunc EmitKey(key []string, val float32) {\n\tglobalMetrics.Load().(*Metrics).EmitKey(key, val)\n}\n\nfunc IncrCounter(key []string, val float32) {\n\tglobalMetrics.Load().(*Metrics).IncrCounter(key, val)\n}\n\nfunc IncrCounterWithLabels(key []string, val float32, labels []Label) {\n\tglobalMetrics.Load().(*Metrics).IncrCounterWithLabels(key, val, labels)\n}\n\nfunc AddSample(key []string, val float32) {\n\tglobalMetrics.Load().(*Metrics).AddSample(key, val)\n}\n\nfunc AddSampleWithLabels(key []string, val float32, labels []Label) {\n\tglobalMetrics.Load().(*Metrics).AddSampleWithLabels(key, val, labels)\n}\n\nfunc MeasureSince(key []string, start time.Time) {\n\tglobalMetrics.Load().(*Metrics).MeasureSince(key, start)\n}\n\nfunc MeasureSinceWithLabels(key []string, start time.Time, labels []Label) {\n\tglobalMetrics.Load().(*Metrics).MeasureSinceWithLabels(key, start, labels)\n}\n\nfunc UpdateFilter(allow, block []string) {\n\tglobalMetrics.Load().(*Metrics).UpdateFilter(allow, block)\n}\n\n// UpdateFilterAndLabels set allow/block prefixes of metrics while allowedLabels\n// and blockedLabels - when not nil - allow filtering of labels in order to\n// block/allow globally labels (especially useful when having large number of\n// values for a given label). See README.md for more information about usage.\nfunc UpdateFilterAndLabels(allow, block, allowedLabels, blockedLabels []string) {\n\tglobalMetrics.Load().(*Metrics).UpdateFilterAndLabels(allow, block, allowedLabels, blockedLabels)\n}\n\n// Shutdown disables metric collection, then blocks while attempting to flush metrics to storage.\n// WARNING: Not all MetricSink backends support this functionality, and calling this will cause them to leak resources.\n// This is intended for use immediately prior to application exit.\nfunc Shutdown() {\n\tm := globalMetrics.Load().(*Metrics)\n\t// Swap whatever MetricSink is currently active with a BlackholeSink. Callers must not have a\n\t// reason to expect that calls to the library will successfully collect metrics after Shutdown\n\t// has been called.\n\tglobalMetrics.Store(&Metrics{sink: &BlackholeSink{}})\n\tm.Shutdown()\n}\n"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/statsd.go",
    "content": "package metrics\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"log\"\n\t\"net\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n)\n\nconst (\n\t// statsdMaxLen is the maximum size of a packet\n\t// to send to statsd\n\tstatsdMaxLen = 1400\n)\n\n// StatsdSink provides a MetricSink that can be used\n// with a statsite or statsd metrics server. It uses\n// only UDP packets, while StatsiteSink uses TCP.\ntype StatsdSink struct {\n\taddr        string\n\tmetricQueue chan string\n}\n\n// NewStatsdSinkFromURL creates an StatsdSink from a URL. It is used\n// (and tested) from NewMetricSinkFromURL.\nfunc NewStatsdSinkFromURL(u *url.URL) (MetricSink, error) {\n\treturn NewStatsdSink(u.Host)\n}\n\n// NewStatsdSink is used to create a new StatsdSink\nfunc NewStatsdSink(addr string) (*StatsdSink, error) {\n\ts := &StatsdSink{\n\t\taddr:        addr,\n\t\tmetricQueue: make(chan string, 4096),\n\t}\n\tgo s.flushMetrics()\n\treturn s, nil\n}\n\n// Close is used to stop flushing to statsd\nfunc (s *StatsdSink) Shutdown() {\n\tclose(s.metricQueue)\n}\n\nfunc (s *StatsdSink) SetGauge(key []string, val float32) {\n\tflatKey := s.flattenKey(key)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|g\\n\", flatKey, val))\n}\n\nfunc (s *StatsdSink) SetGaugeWithLabels(key []string, val float32, labels []Label) {\n\tflatKey := s.flattenKeyLabels(key, labels)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|g\\n\", flatKey, val))\n}\n\nfunc (s *StatsdSink) EmitKey(key []string, val float32) {\n\tflatKey := s.flattenKey(key)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|kv\\n\", flatKey, val))\n}\n\nfunc (s *StatsdSink) IncrCounter(key []string, val float32) {\n\tflatKey := s.flattenKey(key)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|c\\n\", flatKey, val))\n}\n\nfunc (s *StatsdSink) IncrCounterWithLabels(key []string, val float32, labels []Label) {\n\tflatKey := s.flattenKeyLabels(key, labels)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|c\\n\", flatKey, val))\n}\n\nfunc (s *StatsdSink) AddSample(key []string, val float32) {\n\tflatKey := s.flattenKey(key)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|ms\\n\", flatKey, val))\n}\n\nfunc (s *StatsdSink) AddSampleWithLabels(key []string, val float32, labels []Label) {\n\tflatKey := s.flattenKeyLabels(key, labels)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|ms\\n\", flatKey, val))\n}\n\n// Flattens the key for formatting, removes spaces\nfunc (s *StatsdSink) flattenKey(parts []string) string {\n\tjoined := strings.Join(parts, \".\")\n\treturn strings.Map(func(r rune) rune {\n\t\tswitch r {\n\t\tcase ':':\n\t\t\tfallthrough\n\t\tcase ' ':\n\t\t\treturn '_'\n\t\tdefault:\n\t\t\treturn r\n\t\t}\n\t}, joined)\n}\n\n// Flattens the key along with labels for formatting, removes spaces\nfunc (s *StatsdSink) flattenKeyLabels(parts []string, labels []Label) string {\n\tfor _, label := range labels {\n\t\tparts = append(parts, label.Value)\n\t}\n\treturn s.flattenKey(parts)\n}\n\n// Does a non-blocking push to the metrics queue\nfunc (s *StatsdSink) pushMetric(m string) {\n\tselect {\n\tcase s.metricQueue <- m:\n\tdefault:\n\t}\n}\n\n// Flushes metrics\nfunc (s *StatsdSink) flushMetrics() {\n\tvar sock net.Conn\n\tvar err error\n\tvar wait <-chan time.Time\n\tticker := time.NewTicker(flushInterval)\n\tdefer ticker.Stop()\n\nCONNECT:\n\t// Create a buffer\n\tbuf := bytes.NewBuffer(nil)\n\n\t// Attempt to connect\n\tsock, err = net.Dial(\"udp\", s.addr)\n\tif err != nil {\n\t\tlog.Printf(\"[ERR] Error connecting to statsd! Err: %s\", err)\n\t\tgoto WAIT\n\t}\n\n\tfor {\n\t\tselect {\n\t\tcase metric, ok := <-s.metricQueue:\n\t\t\t// Get a metric from the queue\n\t\t\tif !ok {\n\t\t\t\tgoto QUIT\n\t\t\t}\n\n\t\t\t// Check if this would overflow the packet size\n\t\t\tif len(metric)+buf.Len() > statsdMaxLen {\n\t\t\t\t_, err := sock.Write(buf.Bytes())\n\t\t\t\tbuf.Reset()\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Printf(\"[ERR] Error writing to statsd! Err: %s\", err)\n\t\t\t\t\tgoto WAIT\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Append to the buffer\n\t\t\tbuf.WriteString(metric)\n\n\t\tcase <-ticker.C:\n\t\t\tif buf.Len() == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t_, err := sock.Write(buf.Bytes())\n\t\t\tbuf.Reset()\n\t\t\tif err != nil {\n\t\t\t\tlog.Printf(\"[ERR] Error flushing to statsd! Err: %s\", err)\n\t\t\t\tgoto WAIT\n\t\t\t}\n\t\t}\n\t}\n\nWAIT:\n\t// Wait for a while\n\twait = time.After(time.Duration(5) * time.Second)\n\tfor {\n\t\tselect {\n\t\t// Dequeue the messages to avoid backlog\n\t\tcase _, ok := <-s.metricQueue:\n\t\t\tif !ok {\n\t\t\t\tgoto QUIT\n\t\t\t}\n\t\tcase <-wait:\n\t\t\tgoto CONNECT\n\t\t}\n\t}\nQUIT:\n\ts.metricQueue = nil\n}\n"
  },
  {
    "path": "vendor/github.com/armon/go-metrics/statsite.go",
    "content": "package metrics\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"log\"\n\t\"net\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n)\n\nconst (\n\t// We force flush the statsite metrics after this period of\n\t// inactivity. Prevents stats from getting stuck in a buffer\n\t// forever.\n\tflushInterval = 100 * time.Millisecond\n)\n\n// NewStatsiteSinkFromURL creates an StatsiteSink from a URL. It is used\n// (and tested) from NewMetricSinkFromURL.\nfunc NewStatsiteSinkFromURL(u *url.URL) (MetricSink, error) {\n\treturn NewStatsiteSink(u.Host)\n}\n\n// StatsiteSink provides a MetricSink that can be used with a\n// statsite metrics server\ntype StatsiteSink struct {\n\taddr        string\n\tmetricQueue chan string\n}\n\n// NewStatsiteSink is used to create a new StatsiteSink\nfunc NewStatsiteSink(addr string) (*StatsiteSink, error) {\n\ts := &StatsiteSink{\n\t\taddr:        addr,\n\t\tmetricQueue: make(chan string, 4096),\n\t}\n\tgo s.flushMetrics()\n\treturn s, nil\n}\n\n// Close is used to stop flushing to statsite\nfunc (s *StatsiteSink) Shutdown() {\n\tclose(s.metricQueue)\n}\n\nfunc (s *StatsiteSink) SetGauge(key []string, val float32) {\n\tflatKey := s.flattenKey(key)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|g\\n\", flatKey, val))\n}\n\nfunc (s *StatsiteSink) SetGaugeWithLabels(key []string, val float32, labels []Label) {\n\tflatKey := s.flattenKeyLabels(key, labels)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|g\\n\", flatKey, val))\n}\n\nfunc (s *StatsiteSink) EmitKey(key []string, val float32) {\n\tflatKey := s.flattenKey(key)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|kv\\n\", flatKey, val))\n}\n\nfunc (s *StatsiteSink) IncrCounter(key []string, val float32) {\n\tflatKey := s.flattenKey(key)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|c\\n\", flatKey, val))\n}\n\nfunc (s *StatsiteSink) IncrCounterWithLabels(key []string, val float32, labels []Label) {\n\tflatKey := s.flattenKeyLabels(key, labels)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|c\\n\", flatKey, val))\n}\n\nfunc (s *StatsiteSink) AddSample(key []string, val float32) {\n\tflatKey := s.flattenKey(key)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|ms\\n\", flatKey, val))\n}\n\nfunc (s *StatsiteSink) AddSampleWithLabels(key []string, val float32, labels []Label) {\n\tflatKey := s.flattenKeyLabels(key, labels)\n\ts.pushMetric(fmt.Sprintf(\"%s:%f|ms\\n\", flatKey, val))\n}\n\n// Flattens the key for formatting, removes spaces\nfunc (s *StatsiteSink) flattenKey(parts []string) string {\n\tjoined := strings.Join(parts, \".\")\n\treturn strings.Map(func(r rune) rune {\n\t\tswitch r {\n\t\tcase ':':\n\t\t\tfallthrough\n\t\tcase ' ':\n\t\t\treturn '_'\n\t\tdefault:\n\t\t\treturn r\n\t\t}\n\t}, joined)\n}\n\n// Flattens the key along with labels for formatting, removes spaces\nfunc (s *StatsiteSink) flattenKeyLabels(parts []string, labels []Label) string {\n\tfor _, label := range labels {\n\t\tparts = append(parts, label.Value)\n\t}\n\treturn s.flattenKey(parts)\n}\n\n// Does a non-blocking push to the metrics queue\nfunc (s *StatsiteSink) pushMetric(m string) {\n\tselect {\n\tcase s.metricQueue <- m:\n\tdefault:\n\t}\n}\n\n// Flushes metrics\nfunc (s *StatsiteSink) flushMetrics() {\n\tvar sock net.Conn\n\tvar err error\n\tvar wait <-chan time.Time\n\tvar buffered *bufio.Writer\n\tticker := time.NewTicker(flushInterval)\n\tdefer ticker.Stop()\n\nCONNECT:\n\t// Attempt to connect\n\tsock, err = net.Dial(\"tcp\", s.addr)\n\tif err != nil {\n\t\tlog.Printf(\"[ERR] Error connecting to statsite! Err: %s\", err)\n\t\tgoto WAIT\n\t}\n\n\t// Create a buffered writer\n\tbuffered = bufio.NewWriter(sock)\n\n\tfor {\n\t\tselect {\n\t\tcase metric, ok := <-s.metricQueue:\n\t\t\t// Get a metric from the queue\n\t\t\tif !ok {\n\t\t\t\tgoto QUIT\n\t\t\t}\n\n\t\t\t// Try to send to statsite\n\t\t\t_, err := buffered.Write([]byte(metric))\n\t\t\tif err != nil {\n\t\t\t\tlog.Printf(\"[ERR] Error writing to statsite! Err: %s\", err)\n\t\t\t\tgoto WAIT\n\t\t\t}\n\t\tcase <-ticker.C:\n\t\t\tif err := buffered.Flush(); err != nil {\n\t\t\t\tlog.Printf(\"[ERR] Error flushing to statsite! Err: %s\", err)\n\t\t\t\tgoto WAIT\n\t\t\t}\n\t\t}\n\t}\n\nWAIT:\n\t// Wait for a while\n\twait = time.After(time.Duration(5) * time.Second)\n\tfor {\n\t\tselect {\n\t\t// Dequeue the messages to avoid backlog\n\t\tcase _, ok := <-s.metricQueue:\n\t\t\tif !ok {\n\t\t\t\tgoto QUIT\n\t\t\t}\n\t\tcase <-wait:\n\t\t\tgoto CONNECT\n\t\t}\n\t}\nQUIT:\n\ts.metricQueue = nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/LICENSE.txt",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/NOTICE.txt",
    "content": "AWS SDK for Go\nCopyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.\nCopyright 2014-2015 Stripe, Inc.\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/auth/bearer/token.go",
    "content": "package bearer\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"time\"\n)\n\n// Token provides a type wrapping a bearer token and expiration metadata.\ntype Token struct {\n\tValue string\n\n\tCanExpire bool\n\tExpires   time.Time\n}\n\n// Expired returns if the token's Expires time is before or equal to the time\n// provided. If CanExpire is false, Expired will always return false.\nfunc (t Token) Expired(now time.Time) bool {\n\tif !t.CanExpire {\n\t\treturn false\n\t}\n\tnow = now.Round(0)\n\treturn now.Equal(t.Expires) || now.After(t.Expires)\n}\n\n// TokenProvider provides interface for retrieving bearer tokens.\ntype TokenProvider interface {\n\tRetrieveBearerToken(aws.Context) (Token, error)\n}\n\n// TokenProviderFunc provides a helper utility to wrap a function as a type\n// that implements the TokenProvider interface.\ntype TokenProviderFunc func(aws.Context) (Token, error)\n\n// RetrieveBearerToken calls the wrapped function, returning the Token or\n// error.\nfunc (fn TokenProviderFunc) RetrieveBearerToken(ctx aws.Context) (Token, error) {\n\treturn fn(ctx)\n}\n\n// StaticTokenProvider provides a utility for wrapping a static bearer token\n// value within an implementation of a token provider.\ntype StaticTokenProvider struct {\n\tToken Token\n}\n\n// RetrieveBearerToken returns the static token specified.\nfunc (s StaticTokenProvider) RetrieveBearerToken(aws.Context) (Token, error) {\n\treturn s.Token, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go",
    "content": "// Package awserr represents API error interface accessors for the SDK.\npackage awserr\n\n// An Error wraps lower level errors with code, message and an original error.\n// The underlying concrete error type may also satisfy other interfaces which\n// can be to used to obtain more specific information about the error.\n//\n// Calling Error() or String() will always include the full information about\n// an error based on its underlying type.\n//\n// Example:\n//\n//     output, err := s3manage.Upload(svc, input, opts)\n//     if err != nil {\n//         if awsErr, ok := err.(awserr.Error); ok {\n//             // Get error details\n//             log.Println(\"Error:\", awsErr.Code(), awsErr.Message())\n//\n//             // Prints out full error message, including original error if there was one.\n//             log.Println(\"Error:\", awsErr.Error())\n//\n//             // Get original error\n//             if origErr := awsErr.OrigErr(); origErr != nil {\n//                 // operate on original error.\n//             }\n//         } else {\n//             fmt.Println(err.Error())\n//         }\n//     }\n//\ntype Error interface {\n\t// Satisfy the generic error interface.\n\terror\n\n\t// Returns the short phrase depicting the classification of the error.\n\tCode() string\n\n\t// Returns the error details message.\n\tMessage() string\n\n\t// Returns the original error if one was set.  Nil is returned if not set.\n\tOrigErr() error\n}\n\n// BatchError is a batch of errors which also wraps lower level errors with\n// code, message, and original errors. Calling Error() will include all errors\n// that occurred in the batch.\n//\n// Deprecated: Replaced with BatchedErrors. Only defined for backwards\n// compatibility.\ntype BatchError interface {\n\t// Satisfy the generic error interface.\n\terror\n\n\t// Returns the short phrase depicting the classification of the error.\n\tCode() string\n\n\t// Returns the error details message.\n\tMessage() string\n\n\t// Returns the original error if one was set.  Nil is returned if not set.\n\tOrigErrs() []error\n}\n\n// BatchedErrors is a batch of errors which also wraps lower level errors with\n// code, message, and original errors. Calling Error() will include all errors\n// that occurred in the batch.\n//\n// Replaces BatchError\ntype BatchedErrors interface {\n\t// Satisfy the base Error interface.\n\tError\n\n\t// Returns the original error if one was set.  Nil is returned if not set.\n\tOrigErrs() []error\n}\n\n// New returns an Error object described by the code, message, and origErr.\n//\n// If origErr satisfies the Error interface it will not be wrapped within a new\n// Error object and will instead be returned.\nfunc New(code, message string, origErr error) Error {\n\tvar errs []error\n\tif origErr != nil {\n\t\terrs = append(errs, origErr)\n\t}\n\treturn newBaseError(code, message, errs)\n}\n\n// NewBatchError returns an BatchedErrors with a collection of errors as an\n// array of errors.\nfunc NewBatchError(code, message string, errs []error) BatchedErrors {\n\treturn newBaseError(code, message, errs)\n}\n\n// A RequestFailure is an interface to extract request failure information from\n// an Error such as the request ID of the failed request returned by a service.\n// RequestFailures may not always have a requestID value if the request failed\n// prior to reaching the service such as a connection error.\n//\n// Example:\n//\n//     output, err := s3manage.Upload(svc, input, opts)\n//     if err != nil {\n//         if reqerr, ok := err.(RequestFailure); ok {\n//             log.Println(\"Request failed\", reqerr.Code(), reqerr.Message(), reqerr.RequestID())\n//         } else {\n//             log.Println(\"Error:\", err.Error())\n//         }\n//     }\n//\n// Combined with awserr.Error:\n//\n//    output, err := s3manage.Upload(svc, input, opts)\n//    if err != nil {\n//        if awsErr, ok := err.(awserr.Error); ok {\n//            // Generic AWS Error with Code, Message, and original error (if any)\n//            fmt.Println(awsErr.Code(), awsErr.Message(), awsErr.OrigErr())\n//\n//            if reqErr, ok := err.(awserr.RequestFailure); ok {\n//                // A service error occurred\n//                fmt.Println(reqErr.StatusCode(), reqErr.RequestID())\n//            }\n//        } else {\n//            fmt.Println(err.Error())\n//        }\n//    }\n//\ntype RequestFailure interface {\n\tError\n\n\t// The status code of the HTTP response.\n\tStatusCode() int\n\n\t// The request ID returned by the service for a request failure. This will\n\t// be empty if no request ID is available such as the request failed due\n\t// to a connection error.\n\tRequestID() string\n}\n\n// NewRequestFailure returns a wrapped error with additional information for\n// request status code, and service requestID.\n//\n// Should be used to wrap all request which involve service requests. Even if\n// the request failed without a service response, but had an HTTP status code\n// that may be meaningful.\nfunc NewRequestFailure(err Error, statusCode int, reqID string) RequestFailure {\n\treturn newRequestError(err, statusCode, reqID)\n}\n\n// UnmarshalError provides the interface for the SDK failing to unmarshal data.\ntype UnmarshalError interface {\n\tawsError\n\tBytes() []byte\n}\n\n// NewUnmarshalError returns an initialized UnmarshalError error wrapper adding\n// the bytes that fail to unmarshal to the error.\nfunc NewUnmarshalError(err error, msg string, bytes []byte) UnmarshalError {\n\treturn &unmarshalError{\n\t\tawsError: New(\"UnmarshalError\", msg, err),\n\t\tbytes:    bytes,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/awserr/types.go",
    "content": "package awserr\n\nimport (\n\t\"encoding/hex\"\n\t\"fmt\"\n)\n\n// SprintError returns a string of the formatted error code.\n//\n// Both extra and origErr are optional.  If they are included their lines\n// will be added, but if they are not included their lines will be ignored.\nfunc SprintError(code, message, extra string, origErr error) string {\n\tmsg := fmt.Sprintf(\"%s: %s\", code, message)\n\tif extra != \"\" {\n\t\tmsg = fmt.Sprintf(\"%s\\n\\t%s\", msg, extra)\n\t}\n\tif origErr != nil {\n\t\tmsg = fmt.Sprintf(\"%s\\ncaused by: %s\", msg, origErr.Error())\n\t}\n\treturn msg\n}\n\n// A baseError wraps the code and message which defines an error. It also\n// can be used to wrap an original error object.\n//\n// Should be used as the root for errors satisfying the awserr.Error. Also\n// for any error which does not fit into a specific error wrapper type.\ntype baseError struct {\n\t// Classification of error\n\tcode string\n\n\t// Detailed information about error\n\tmessage string\n\n\t// Optional original error this error is based off of. Allows building\n\t// chained errors.\n\terrs []error\n}\n\n// newBaseError returns an error object for the code, message, and errors.\n//\n// code is a short no whitespace phrase depicting the classification of\n// the error that is being created.\n//\n// message is the free flow string containing detailed information about the\n// error.\n//\n// origErrs is the error objects which will be nested under the new errors to\n// be returned.\nfunc newBaseError(code, message string, origErrs []error) *baseError {\n\tb := &baseError{\n\t\tcode:    code,\n\t\tmessage: message,\n\t\terrs:    origErrs,\n\t}\n\n\treturn b\n}\n\n// Error returns the string representation of the error.\n//\n// See ErrorWithExtra for formatting.\n//\n// Satisfies the error interface.\nfunc (b baseError) Error() string {\n\tsize := len(b.errs)\n\tif size > 0 {\n\t\treturn SprintError(b.code, b.message, \"\", errorList(b.errs))\n\t}\n\n\treturn SprintError(b.code, b.message, \"\", nil)\n}\n\n// String returns the string representation of the error.\n// Alias for Error to satisfy the stringer interface.\nfunc (b baseError) String() string {\n\treturn b.Error()\n}\n\n// Code returns the short phrase depicting the classification of the error.\nfunc (b baseError) Code() string {\n\treturn b.code\n}\n\n// Message returns the error details message.\nfunc (b baseError) Message() string {\n\treturn b.message\n}\n\n// OrigErr returns the original error if one was set. Nil is returned if no\n// error was set. This only returns the first element in the list. If the full\n// list is needed, use BatchedErrors.\nfunc (b baseError) OrigErr() error {\n\tswitch len(b.errs) {\n\tcase 0:\n\t\treturn nil\n\tcase 1:\n\t\treturn b.errs[0]\n\tdefault:\n\t\tif err, ok := b.errs[0].(Error); ok {\n\t\t\treturn NewBatchError(err.Code(), err.Message(), b.errs[1:])\n\t\t}\n\t\treturn NewBatchError(\"BatchedErrors\",\n\t\t\t\"multiple errors occurred\", b.errs)\n\t}\n}\n\n// OrigErrs returns the original errors if one was set. An empty slice is\n// returned if no error was set.\nfunc (b baseError) OrigErrs() []error {\n\treturn b.errs\n}\n\n// So that the Error interface type can be included as an anonymous field\n// in the requestError struct and not conflict with the error.Error() method.\ntype awsError Error\n\n// A requestError wraps a request or service error.\n//\n// Composed of baseError for code, message, and original error.\ntype requestError struct {\n\tawsError\n\tstatusCode int\n\trequestID  string\n\tbytes      []byte\n}\n\n// newRequestError returns a wrapped error with additional information for\n// request status code, and service requestID.\n//\n// Should be used to wrap all request which involve service requests. Even if\n// the request failed without a service response, but had an HTTP status code\n// that may be meaningful.\n//\n// Also wraps original errors via the baseError.\nfunc newRequestError(err Error, statusCode int, requestID string) *requestError {\n\treturn &requestError{\n\t\tawsError:   err,\n\t\tstatusCode: statusCode,\n\t\trequestID:  requestID,\n\t}\n}\n\n// Error returns the string representation of the error.\n// Satisfies the error interface.\nfunc (r requestError) Error() string {\n\textra := fmt.Sprintf(\"status code: %d, request id: %s\",\n\t\tr.statusCode, r.requestID)\n\treturn SprintError(r.Code(), r.Message(), extra, r.OrigErr())\n}\n\n// String returns the string representation of the error.\n// Alias for Error to satisfy the stringer interface.\nfunc (r requestError) String() string {\n\treturn r.Error()\n}\n\n// StatusCode returns the wrapped status code for the error\nfunc (r requestError) StatusCode() int {\n\treturn r.statusCode\n}\n\n// RequestID returns the wrapped requestID\nfunc (r requestError) RequestID() string {\n\treturn r.requestID\n}\n\n// OrigErrs returns the original errors if one was set. An empty slice is\n// returned if no error was set.\nfunc (r requestError) OrigErrs() []error {\n\tif b, ok := r.awsError.(BatchedErrors); ok {\n\t\treturn b.OrigErrs()\n\t}\n\treturn []error{r.OrigErr()}\n}\n\ntype unmarshalError struct {\n\tawsError\n\tbytes []byte\n}\n\n// Error returns the string representation of the error.\n// Satisfies the error interface.\nfunc (e unmarshalError) Error() string {\n\textra := hex.Dump(e.bytes)\n\treturn SprintError(e.Code(), e.Message(), extra, e.OrigErr())\n}\n\n// String returns the string representation of the error.\n// Alias for Error to satisfy the stringer interface.\nfunc (e unmarshalError) String() string {\n\treturn e.Error()\n}\n\n// Bytes returns the bytes that failed to unmarshal.\nfunc (e unmarshalError) Bytes() []byte {\n\treturn e.bytes\n}\n\n// An error list that satisfies the golang interface\ntype errorList []error\n\n// Error returns the string representation of the error.\n//\n// Satisfies the error interface.\nfunc (e errorList) Error() string {\n\tmsg := \"\"\n\t// How do we want to handle the array size being zero\n\tif size := len(e); size > 0 {\n\t\tfor i := 0; i < size; i++ {\n\t\t\tmsg += e[i].Error()\n\t\t\t// We check the next index to see if it is within the slice.\n\t\t\t// If it is, then we append a newline. We do this, because unit tests\n\t\t\t// could be broken with the additional '\\n'\n\t\t\tif i+1 < size {\n\t\t\t\tmsg += \"\\n\"\n\t\t\t}\n\t\t}\n\t}\n\treturn msg\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/awsutil/copy.go",
    "content": "package awsutil\n\nimport (\n\t\"io\"\n\t\"reflect\"\n\t\"time\"\n)\n\n// Copy deeply copies a src structure to dst. Useful for copying request and\n// response structures.\n//\n// Can copy between structs of different type, but will only copy fields which\n// are assignable, and exist in both structs. Fields which are not assignable,\n// or do not exist in both structs are ignored.\nfunc Copy(dst, src interface{}) {\n\tdstval := reflect.ValueOf(dst)\n\tif !dstval.IsValid() {\n\t\tpanic(\"Copy dst cannot be nil\")\n\t}\n\n\trcopy(dstval, reflect.ValueOf(src), true)\n}\n\n// CopyOf returns a copy of src while also allocating the memory for dst.\n// src must be a pointer type or this operation will fail.\nfunc CopyOf(src interface{}) (dst interface{}) {\n\tdsti := reflect.New(reflect.TypeOf(src).Elem())\n\tdst = dsti.Interface()\n\trcopy(dsti, reflect.ValueOf(src), true)\n\treturn\n}\n\n// rcopy performs a recursive copy of values from the source to destination.\n//\n// root is used to skip certain aspects of the copy which are not valid\n// for the root node of a object.\nfunc rcopy(dst, src reflect.Value, root bool) {\n\tif !src.IsValid() {\n\t\treturn\n\t}\n\n\tswitch src.Kind() {\n\tcase reflect.Ptr:\n\t\tif _, ok := src.Interface().(io.Reader); ok {\n\t\t\tif dst.Kind() == reflect.Ptr && dst.Elem().CanSet() {\n\t\t\t\tdst.Elem().Set(src)\n\t\t\t} else if dst.CanSet() {\n\t\t\t\tdst.Set(src)\n\t\t\t}\n\t\t} else {\n\t\t\te := src.Type().Elem()\n\t\t\tif dst.CanSet() && !src.IsNil() {\n\t\t\t\tif _, ok := src.Interface().(*time.Time); !ok {\n\t\t\t\t\tdst.Set(reflect.New(e))\n\t\t\t\t} else {\n\t\t\t\t\ttempValue := reflect.New(e)\n\t\t\t\t\ttempValue.Elem().Set(src.Elem())\n\t\t\t\t\t// Sets time.Time's unexported values\n\t\t\t\t\tdst.Set(tempValue)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif src.Elem().IsValid() {\n\t\t\t\t// Keep the current root state since the depth hasn't changed\n\t\t\t\trcopy(dst.Elem(), src.Elem(), root)\n\t\t\t}\n\t\t}\n\tcase reflect.Struct:\n\t\tt := dst.Type()\n\t\tfor i := 0; i < t.NumField(); i++ {\n\t\t\tname := t.Field(i).Name\n\t\t\tsrcVal := src.FieldByName(name)\n\t\t\tdstVal := dst.FieldByName(name)\n\t\t\tif srcVal.IsValid() && dstVal.CanSet() {\n\t\t\t\trcopy(dstVal, srcVal, false)\n\t\t\t}\n\t\t}\n\tcase reflect.Slice:\n\t\tif src.IsNil() {\n\t\t\tbreak\n\t\t}\n\n\t\ts := reflect.MakeSlice(src.Type(), src.Len(), src.Cap())\n\t\tdst.Set(s)\n\t\tfor i := 0; i < src.Len(); i++ {\n\t\t\trcopy(dst.Index(i), src.Index(i), false)\n\t\t}\n\tcase reflect.Map:\n\t\tif src.IsNil() {\n\t\t\tbreak\n\t\t}\n\n\t\ts := reflect.MakeMap(src.Type())\n\t\tdst.Set(s)\n\t\tfor _, k := range src.MapKeys() {\n\t\t\tv := src.MapIndex(k)\n\t\t\tv2 := reflect.New(v.Type()).Elem()\n\t\t\trcopy(v2, v, false)\n\t\t\tdst.SetMapIndex(k, v2)\n\t\t}\n\tdefault:\n\t\t// Assign the value if possible. If its not assignable, the value would\n\t\t// need to be converted and the impact of that may be unexpected, or is\n\t\t// not compatible with the dst type.\n\t\tif src.Type().AssignableTo(dst.Type()) {\n\t\t\tdst.Set(src)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go",
    "content": "package awsutil\n\nimport (\n\t\"reflect\"\n)\n\n// DeepEqual returns if the two values are deeply equal like reflect.DeepEqual.\n// In addition to this, this method will also dereference the input values if\n// possible so the DeepEqual performed will not fail if one parameter is a\n// pointer and the other is not.\n//\n// DeepEqual will not perform indirection of nested values of the input parameters.\nfunc DeepEqual(a, b interface{}) bool {\n\tra := reflect.Indirect(reflect.ValueOf(a))\n\trb := reflect.Indirect(reflect.ValueOf(b))\n\n\tif raValid, rbValid := ra.IsValid(), rb.IsValid(); !raValid && !rbValid {\n\t\t// If the elements are both nil, and of the same type they are equal\n\t\t// If they are of different types they are not equal\n\t\treturn reflect.TypeOf(a) == reflect.TypeOf(b)\n\t} else if raValid != rbValid {\n\t\t// Both values must be valid to be equal\n\t\treturn false\n\t}\n\n\treturn reflect.DeepEqual(ra.Interface(), rb.Interface())\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/awsutil/path_value.go",
    "content": "package awsutil\n\nimport (\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/jmespath/go-jmespath\"\n)\n\nvar indexRe = regexp.MustCompile(`(.+)\\[(-?\\d+)?\\]$`)\n\n// rValuesAtPath returns a slice of values found in value v. The values\n// in v are explored recursively so all nested values are collected.\nfunc rValuesAtPath(v interface{}, path string, createPath, caseSensitive, nilTerm bool) []reflect.Value {\n\tpathparts := strings.Split(path, \"||\")\n\tif len(pathparts) > 1 {\n\t\tfor _, pathpart := range pathparts {\n\t\t\tvals := rValuesAtPath(v, pathpart, createPath, caseSensitive, nilTerm)\n\t\t\tif len(vals) > 0 {\n\t\t\t\treturn vals\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\n\tvalues := []reflect.Value{reflect.Indirect(reflect.ValueOf(v))}\n\tcomponents := strings.Split(path, \".\")\n\tfor len(values) > 0 && len(components) > 0 {\n\t\tvar index *int64\n\t\tvar indexStar bool\n\t\tc := strings.TrimSpace(components[0])\n\t\tif c == \"\" { // no actual component, illegal syntax\n\t\t\treturn nil\n\t\t} else if caseSensitive && c != \"*\" && strings.ToLower(c[0:1]) == c[0:1] {\n\t\t\t// TODO normalize case for user\n\t\t\treturn nil // don't support unexported fields\n\t\t}\n\n\t\t// parse this component\n\t\tif m := indexRe.FindStringSubmatch(c); m != nil {\n\t\t\tc = m[1]\n\t\t\tif m[2] == \"\" {\n\t\t\t\tindex = nil\n\t\t\t\tindexStar = true\n\t\t\t} else {\n\t\t\t\ti, _ := strconv.ParseInt(m[2], 10, 32)\n\t\t\t\tindex = &i\n\t\t\t\tindexStar = false\n\t\t\t}\n\t\t}\n\n\t\tnextvals := []reflect.Value{}\n\t\tfor _, value := range values {\n\t\t\t// pull component name out of struct member\n\t\t\tif value.Kind() != reflect.Struct {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif c == \"*\" { // pull all members\n\t\t\t\tfor i := 0; i < value.NumField(); i++ {\n\t\t\t\t\tif f := reflect.Indirect(value.Field(i)); f.IsValid() {\n\t\t\t\t\t\tnextvals = append(nextvals, f)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvalue = value.FieldByNameFunc(func(name string) bool {\n\t\t\t\tif c == name {\n\t\t\t\t\treturn true\n\t\t\t\t} else if !caseSensitive && strings.EqualFold(name, c) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\n\t\t\tif nilTerm && value.Kind() == reflect.Ptr && len(components[1:]) == 0 {\n\t\t\t\tif !value.IsNil() {\n\t\t\t\t\tvalue.Set(reflect.Zero(value.Type()))\n\t\t\t\t}\n\t\t\t\treturn []reflect.Value{value}\n\t\t\t}\n\n\t\t\tif createPath && value.Kind() == reflect.Ptr && value.IsNil() {\n\t\t\t\t// TODO if the value is the terminus it should not be created\n\t\t\t\t// if the value to be set to its position is nil.\n\t\t\t\tvalue.Set(reflect.New(value.Type().Elem()))\n\t\t\t\tvalue = value.Elem()\n\t\t\t} else {\n\t\t\t\tvalue = reflect.Indirect(value)\n\t\t\t}\n\n\t\t\tif value.Kind() == reflect.Slice || value.Kind() == reflect.Map {\n\t\t\t\tif !createPath && value.IsNil() {\n\t\t\t\t\tvalue = reflect.ValueOf(nil)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif value.IsValid() {\n\t\t\t\tnextvals = append(nextvals, value)\n\t\t\t}\n\t\t}\n\t\tvalues = nextvals\n\n\t\tif indexStar || index != nil {\n\t\t\tnextvals = []reflect.Value{}\n\t\t\tfor _, valItem := range values {\n\t\t\t\tvalue := reflect.Indirect(valItem)\n\t\t\t\tif value.Kind() != reflect.Slice {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tif indexStar { // grab all indices\n\t\t\t\t\tfor i := 0; i < value.Len(); i++ {\n\t\t\t\t\t\tidx := reflect.Indirect(value.Index(i))\n\t\t\t\t\t\tif idx.IsValid() {\n\t\t\t\t\t\t\tnextvals = append(nextvals, idx)\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// pull out index\n\t\t\t\ti := int(*index)\n\t\t\t\tif i >= value.Len() { // check out of bounds\n\t\t\t\t\tif createPath {\n\t\t\t\t\t\t// TODO resize slice\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t} else if i < 0 { // support negative indexing\n\t\t\t\t\ti = value.Len() + i\n\t\t\t\t}\n\t\t\t\tvalue = reflect.Indirect(value.Index(i))\n\n\t\t\t\tif value.Kind() == reflect.Slice || value.Kind() == reflect.Map {\n\t\t\t\t\tif !createPath && value.IsNil() {\n\t\t\t\t\t\tvalue = reflect.ValueOf(nil)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif value.IsValid() {\n\t\t\t\t\tnextvals = append(nextvals, value)\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalues = nextvals\n\t\t}\n\n\t\tcomponents = components[1:]\n\t}\n\treturn values\n}\n\n// ValuesAtPath returns a list of values at the case insensitive lexical\n// path inside of a structure.\nfunc ValuesAtPath(i interface{}, path string) ([]interface{}, error) {\n\tresult, err := jmespath.Search(path, i)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tv := reflect.ValueOf(result)\n\tif !v.IsValid() || (v.Kind() == reflect.Ptr && v.IsNil()) {\n\t\treturn nil, nil\n\t}\n\tif s, ok := result.([]interface{}); ok {\n\t\treturn s, err\n\t}\n\tif v.Kind() == reflect.Map && v.Len() == 0 {\n\t\treturn nil, nil\n\t}\n\tif v.Kind() == reflect.Slice {\n\t\tout := make([]interface{}, v.Len())\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tout[i] = v.Index(i).Interface()\n\t\t}\n\t\treturn out, nil\n\t}\n\n\treturn []interface{}{result}, nil\n}\n\n// SetValueAtPath sets a value at the case insensitive lexical path inside\n// of a structure.\nfunc SetValueAtPath(i interface{}, path string, v interface{}) {\n\trvals := rValuesAtPath(i, path, true, false, v == nil)\n\tfor _, rval := range rvals {\n\t\tif rval.Kind() == reflect.Ptr && rval.IsNil() {\n\t\t\tcontinue\n\t\t}\n\t\tsetValue(rval, v)\n\t}\n}\n\nfunc setValue(dstVal reflect.Value, src interface{}) {\n\tif dstVal.Kind() == reflect.Ptr {\n\t\tdstVal = reflect.Indirect(dstVal)\n\t}\n\tsrcVal := reflect.ValueOf(src)\n\n\tif !srcVal.IsValid() { // src is literal nil\n\t\tif dstVal.CanAddr() {\n\t\t\t// Convert to pointer so that pointer's value can be nil'ed\n\t\t\t//                     dstVal = dstVal.Addr()\n\t\t}\n\t\tdstVal.Set(reflect.Zero(dstVal.Type()))\n\n\t} else if srcVal.Kind() == reflect.Ptr {\n\t\tif srcVal.IsNil() {\n\t\t\tsrcVal = reflect.Zero(dstVal.Type())\n\t\t} else {\n\t\t\tsrcVal = reflect.ValueOf(src).Elem()\n\t\t}\n\t\tdstVal.Set(srcVal)\n\t} else {\n\t\tdstVal.Set(srcVal)\n\t}\n\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/awsutil/prettify.go",
    "content": "package awsutil\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n)\n\n// Prettify returns the string representation of a value.\nfunc Prettify(i interface{}) string {\n\tvar buf bytes.Buffer\n\tprettify(reflect.ValueOf(i), 0, &buf)\n\treturn buf.String()\n}\n\n// prettify will recursively walk value v to build a textual\n// representation of the value.\nfunc prettify(v reflect.Value, indent int, buf *bytes.Buffer) {\n\tfor v.Kind() == reflect.Ptr {\n\t\tv = v.Elem()\n\t}\n\n\tswitch v.Kind() {\n\tcase reflect.Struct:\n\t\tstrtype := v.Type().String()\n\t\tif strtype == \"time.Time\" {\n\t\t\tfmt.Fprintf(buf, \"%s\", v.Interface())\n\t\t\tbreak\n\t\t} else if strings.HasPrefix(strtype, \"io.\") {\n\t\t\tbuf.WriteString(\"<buffer>\")\n\t\t\tbreak\n\t\t}\n\n\t\tbuf.WriteString(\"{\\n\")\n\n\t\tnames := []string{}\n\t\tfor i := 0; i < v.Type().NumField(); i++ {\n\t\t\tname := v.Type().Field(i).Name\n\t\t\tf := v.Field(i)\n\t\t\tif name[0:1] == strings.ToLower(name[0:1]) {\n\t\t\t\tcontinue // ignore unexported fields\n\t\t\t}\n\t\t\tif (f.Kind() == reflect.Ptr || f.Kind() == reflect.Slice || f.Kind() == reflect.Map) && f.IsNil() {\n\t\t\t\tcontinue // ignore unset fields\n\t\t\t}\n\t\t\tnames = append(names, name)\n\t\t}\n\n\t\tfor i, n := range names {\n\t\t\tval := v.FieldByName(n)\n\t\t\tft, ok := v.Type().FieldByName(n)\n\t\t\tif !ok {\n\t\t\t\tpanic(fmt.Sprintf(\"expected to find field %v on type %v, but was not found\", n, v.Type()))\n\t\t\t}\n\n\t\t\tbuf.WriteString(strings.Repeat(\" \", indent+2))\n\t\t\tbuf.WriteString(n + \": \")\n\n\t\t\tif tag := ft.Tag.Get(\"sensitive\"); tag == \"true\" {\n\t\t\t\tbuf.WriteString(\"<sensitive>\")\n\t\t\t} else {\n\t\t\t\tprettify(val, indent+2, buf)\n\t\t\t}\n\n\t\t\tif i < len(names)-1 {\n\t\t\t\tbuf.WriteString(\",\\n\")\n\t\t\t}\n\t\t}\n\n\t\tbuf.WriteString(\"\\n\" + strings.Repeat(\" \", indent) + \"}\")\n\tcase reflect.Slice:\n\t\tstrtype := v.Type().String()\n\t\tif strtype == \"[]uint8\" {\n\t\t\tfmt.Fprintf(buf, \"<binary> len %d\", v.Len())\n\t\t\tbreak\n\t\t}\n\n\t\tnl, id, id2 := \"\", \"\", \"\"\n\t\tif v.Len() > 3 {\n\t\t\tnl, id, id2 = \"\\n\", strings.Repeat(\" \", indent), strings.Repeat(\" \", indent+2)\n\t\t}\n\t\tbuf.WriteString(\"[\" + nl)\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tbuf.WriteString(id2)\n\t\t\tprettify(v.Index(i), indent+2, buf)\n\n\t\t\tif i < v.Len()-1 {\n\t\t\t\tbuf.WriteString(\",\" + nl)\n\t\t\t}\n\t\t}\n\n\t\tbuf.WriteString(nl + id + \"]\")\n\tcase reflect.Map:\n\t\tbuf.WriteString(\"{\\n\")\n\n\t\tfor i, k := range v.MapKeys() {\n\t\t\tbuf.WriteString(strings.Repeat(\" \", indent+2))\n\t\t\tbuf.WriteString(k.String() + \": \")\n\t\t\tprettify(v.MapIndex(k), indent+2, buf)\n\n\t\t\tif i < v.Len()-1 {\n\t\t\t\tbuf.WriteString(\",\\n\")\n\t\t\t}\n\t\t}\n\n\t\tbuf.WriteString(\"\\n\" + strings.Repeat(\" \", indent) + \"}\")\n\tdefault:\n\t\tif !v.IsValid() {\n\t\t\tfmt.Fprint(buf, \"<invalid value>\")\n\t\t\treturn\n\t\t}\n\t\tformat := \"%v\"\n\t\tswitch v.Interface().(type) {\n\t\tcase string:\n\t\t\tformat = \"%q\"\n\t\tcase io.ReadSeeker, io.Reader:\n\t\t\tformat = \"buffer(%p)\"\n\t\t}\n\t\tfmt.Fprintf(buf, format, v.Interface())\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go",
    "content": "package awsutil\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n)\n\n// StringValue returns the string representation of a value.\n//\n// Deprecated: Use Prettify instead.\nfunc StringValue(i interface{}) string {\n\tvar buf bytes.Buffer\n\tstringValue(reflect.ValueOf(i), 0, &buf)\n\treturn buf.String()\n}\n\nfunc stringValue(v reflect.Value, indent int, buf *bytes.Buffer) {\n\tfor v.Kind() == reflect.Ptr {\n\t\tv = v.Elem()\n\t}\n\n\tswitch v.Kind() {\n\tcase reflect.Struct:\n\t\tbuf.WriteString(\"{\\n\")\n\n\t\tfor i := 0; i < v.Type().NumField(); i++ {\n\t\t\tft := v.Type().Field(i)\n\t\t\tfv := v.Field(i)\n\n\t\t\tif ft.Name[0:1] == strings.ToLower(ft.Name[0:1]) {\n\t\t\t\tcontinue // ignore unexported fields\n\t\t\t}\n\t\t\tif (fv.Kind() == reflect.Ptr || fv.Kind() == reflect.Slice) && fv.IsNil() {\n\t\t\t\tcontinue // ignore unset fields\n\t\t\t}\n\n\t\t\tbuf.WriteString(strings.Repeat(\" \", indent+2))\n\t\t\tbuf.WriteString(ft.Name + \": \")\n\n\t\t\tif tag := ft.Tag.Get(\"sensitive\"); tag == \"true\" {\n\t\t\t\tbuf.WriteString(\"<sensitive>\")\n\t\t\t} else {\n\t\t\t\tstringValue(fv, indent+2, buf)\n\t\t\t}\n\n\t\t\tbuf.WriteString(\",\\n\")\n\t\t}\n\n\t\tbuf.WriteString(\"\\n\" + strings.Repeat(\" \", indent) + \"}\")\n\tcase reflect.Slice:\n\t\tnl, id, id2 := \"\", \"\", \"\"\n\t\tif v.Len() > 3 {\n\t\t\tnl, id, id2 = \"\\n\", strings.Repeat(\" \", indent), strings.Repeat(\" \", indent+2)\n\t\t}\n\t\tbuf.WriteString(\"[\" + nl)\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tbuf.WriteString(id2)\n\t\t\tstringValue(v.Index(i), indent+2, buf)\n\n\t\t\tif i < v.Len()-1 {\n\t\t\t\tbuf.WriteString(\",\" + nl)\n\t\t\t}\n\t\t}\n\n\t\tbuf.WriteString(nl + id + \"]\")\n\tcase reflect.Map:\n\t\tbuf.WriteString(\"{\\n\")\n\n\t\tfor i, k := range v.MapKeys() {\n\t\t\tbuf.WriteString(strings.Repeat(\" \", indent+2))\n\t\t\tbuf.WriteString(k.String() + \": \")\n\t\t\tstringValue(v.MapIndex(k), indent+2, buf)\n\n\t\t\tif i < v.Len()-1 {\n\t\t\t\tbuf.WriteString(\",\\n\")\n\t\t\t}\n\t\t}\n\n\t\tbuf.WriteString(\"\\n\" + strings.Repeat(\" \", indent) + \"}\")\n\tdefault:\n\t\tformat := \"%v\"\n\t\tswitch v.Interface().(type) {\n\t\tcase string:\n\t\t\tformat = \"%q\"\n\t\t}\n\t\tfmt.Fprintf(buf, format, v.Interface())\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/client/client.go",
    "content": "package client\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/client/metadata\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// A Config provides configuration to a service client instance.\ntype Config struct {\n\tConfig         *aws.Config\n\tHandlers       request.Handlers\n\tPartitionID    string\n\tEndpoint       string\n\tSigningRegion  string\n\tSigningName    string\n\tResolvedRegion string\n\n\t// States that the signing name did not come from a modeled source but\n\t// was derived based on other data. Used by service client constructors\n\t// to determine if the signin name can be overridden based on metadata the\n\t// service has.\n\tSigningNameDerived bool\n}\n\n// ConfigProvider provides a generic way for a service client to receive\n// the ClientConfig without circular dependencies.\ntype ConfigProvider interface {\n\tClientConfig(serviceName string, cfgs ...*aws.Config) Config\n}\n\n// ConfigNoResolveEndpointProvider same as ConfigProvider except it will not\n// resolve the endpoint automatically. The service client's endpoint must be\n// provided via the aws.Config.Endpoint field.\ntype ConfigNoResolveEndpointProvider interface {\n\tClientConfigNoResolveEndpoint(cfgs ...*aws.Config) Config\n}\n\n// A Client implements the base client request and response handling\n// used by all service clients.\ntype Client struct {\n\trequest.Retryer\n\tmetadata.ClientInfo\n\n\tConfig   aws.Config\n\tHandlers request.Handlers\n}\n\n// New will return a pointer to a new initialized service client.\nfunc New(cfg aws.Config, info metadata.ClientInfo, handlers request.Handlers, options ...func(*Client)) *Client {\n\tsvc := &Client{\n\t\tConfig:     cfg,\n\t\tClientInfo: info,\n\t\tHandlers:   handlers.Copy(),\n\t}\n\n\tswitch retryer, ok := cfg.Retryer.(request.Retryer); {\n\tcase ok:\n\t\tsvc.Retryer = retryer\n\tcase cfg.Retryer != nil && cfg.Logger != nil:\n\t\ts := fmt.Sprintf(\"WARNING: %T does not implement request.Retryer; using DefaultRetryer instead\", cfg.Retryer)\n\t\tcfg.Logger.Log(s)\n\t\tfallthrough\n\tdefault:\n\t\tmaxRetries := aws.IntValue(cfg.MaxRetries)\n\t\tif cfg.MaxRetries == nil || maxRetries == aws.UseServiceDefaultRetries {\n\t\t\tmaxRetries = DefaultRetryerMaxNumRetries\n\t\t}\n\t\tsvc.Retryer = DefaultRetryer{NumMaxRetries: maxRetries}\n\t}\n\n\tsvc.AddDebugHandlers()\n\n\tfor _, option := range options {\n\t\toption(svc)\n\t}\n\n\treturn svc\n}\n\n// NewRequest returns a new Request pointer for the service API\n// operation and parameters.\nfunc (c *Client) NewRequest(operation *request.Operation, params interface{}, data interface{}) *request.Request {\n\treturn request.New(c.Config, c.ClientInfo, c.Handlers, c.Retryer, operation, params, data)\n}\n\n// AddDebugHandlers injects debug logging handlers into the service to log request\n// debug information.\nfunc (c *Client) AddDebugHandlers() {\n\tc.Handlers.Send.PushFrontNamed(LogHTTPRequestHandler)\n\tc.Handlers.Send.PushBackNamed(LogHTTPResponseHandler)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go",
    "content": "package client\n\nimport (\n\t\"math\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/internal/sdkrand\"\n)\n\n// DefaultRetryer implements basic retry logic using exponential backoff for\n// most services. If you want to implement custom retry logic, you can implement the\n// request.Retryer interface.\n//\ntype DefaultRetryer struct {\n\t// Num max Retries is the number of max retries that will be performed.\n\t// By default, this is zero.\n\tNumMaxRetries int\n\n\t// MinRetryDelay is the minimum retry delay after which retry will be performed.\n\t// If not set, the value is 0ns.\n\tMinRetryDelay time.Duration\n\n\t// MinThrottleRetryDelay is the minimum retry delay when throttled.\n\t// If not set, the value is 0ns.\n\tMinThrottleDelay time.Duration\n\n\t// MaxRetryDelay is the maximum retry delay before which retry must be performed.\n\t// If not set, the value is 0ns.\n\tMaxRetryDelay time.Duration\n\n\t// MaxThrottleDelay is the maximum retry delay when throttled.\n\t// If not set, the value is 0ns.\n\tMaxThrottleDelay time.Duration\n}\n\nconst (\n\t// DefaultRetryerMaxNumRetries sets maximum number of retries\n\tDefaultRetryerMaxNumRetries = 3\n\n\t// DefaultRetryerMinRetryDelay sets minimum retry delay\n\tDefaultRetryerMinRetryDelay = 30 * time.Millisecond\n\n\t// DefaultRetryerMinThrottleDelay sets minimum delay when throttled\n\tDefaultRetryerMinThrottleDelay = 500 * time.Millisecond\n\n\t// DefaultRetryerMaxRetryDelay sets maximum retry delay\n\tDefaultRetryerMaxRetryDelay = 300 * time.Second\n\n\t// DefaultRetryerMaxThrottleDelay sets maximum delay when throttled\n\tDefaultRetryerMaxThrottleDelay = 300 * time.Second\n)\n\n// MaxRetries returns the number of maximum returns the service will use to make\n// an individual API request.\nfunc (d DefaultRetryer) MaxRetries() int {\n\treturn d.NumMaxRetries\n}\n\n// setRetryerDefaults sets the default values of the retryer if not set\nfunc (d *DefaultRetryer) setRetryerDefaults() {\n\tif d.MinRetryDelay == 0 {\n\t\td.MinRetryDelay = DefaultRetryerMinRetryDelay\n\t}\n\tif d.MaxRetryDelay == 0 {\n\t\td.MaxRetryDelay = DefaultRetryerMaxRetryDelay\n\t}\n\tif d.MinThrottleDelay == 0 {\n\t\td.MinThrottleDelay = DefaultRetryerMinThrottleDelay\n\t}\n\tif d.MaxThrottleDelay == 0 {\n\t\td.MaxThrottleDelay = DefaultRetryerMaxThrottleDelay\n\t}\n}\n\n// RetryRules returns the delay duration before retrying this request again\nfunc (d DefaultRetryer) RetryRules(r *request.Request) time.Duration {\n\n\t// if number of max retries is zero, no retries will be performed.\n\tif d.NumMaxRetries == 0 {\n\t\treturn 0\n\t}\n\n\t// Sets default value for retryer members\n\td.setRetryerDefaults()\n\n\t// minDelay is the minimum retryer delay\n\tminDelay := d.MinRetryDelay\n\n\tvar initialDelay time.Duration\n\n\tisThrottle := r.IsErrorThrottle()\n\tif isThrottle {\n\t\tif delay, ok := getRetryAfterDelay(r); ok {\n\t\t\tinitialDelay = delay\n\t\t}\n\t\tminDelay = d.MinThrottleDelay\n\t}\n\n\tretryCount := r.RetryCount\n\n\t// maxDelay the maximum retryer delay\n\tmaxDelay := d.MaxRetryDelay\n\n\tif isThrottle {\n\t\tmaxDelay = d.MaxThrottleDelay\n\t}\n\n\tvar delay time.Duration\n\n\t// Logic to cap the retry count based on the minDelay provided\n\tactualRetryCount := int(math.Log2(float64(minDelay))) + 1\n\tif actualRetryCount < 63-retryCount {\n\t\tdelay = time.Duration(1<<uint64(retryCount)) * getJitterDelay(minDelay)\n\t\tif delay > maxDelay {\n\t\t\tdelay = getJitterDelay(maxDelay / 2)\n\t\t}\n\t} else {\n\t\tdelay = getJitterDelay(maxDelay / 2)\n\t}\n\treturn delay + initialDelay\n}\n\n// getJitterDelay returns a jittered delay for retry\nfunc getJitterDelay(duration time.Duration) time.Duration {\n\treturn time.Duration(sdkrand.SeededRand.Int63n(int64(duration)) + int64(duration))\n}\n\n// ShouldRetry returns true if the request should be retried.\nfunc (d DefaultRetryer) ShouldRetry(r *request.Request) bool {\n\n\t// ShouldRetry returns false if number of max retries is 0.\n\tif d.NumMaxRetries == 0 {\n\t\treturn false\n\t}\n\n\t// If one of the other handlers already set the retry state\n\t// we don't want to override it based on the service's state\n\tif r.Retryable != nil {\n\t\treturn *r.Retryable\n\t}\n\treturn r.IsErrorRetryable() || r.IsErrorThrottle()\n}\n\n// This will look in the Retry-After header, RFC 7231, for how long\n// it will wait before attempting another request\nfunc getRetryAfterDelay(r *request.Request) (time.Duration, bool) {\n\tif !canUseRetryAfterHeader(r) {\n\t\treturn 0, false\n\t}\n\n\tdelayStr := r.HTTPResponse.Header.Get(\"Retry-After\")\n\tif len(delayStr) == 0 {\n\t\treturn 0, false\n\t}\n\n\tdelay, err := strconv.Atoi(delayStr)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\n\treturn time.Duration(delay) * time.Second, true\n}\n\n// Will look at the status code to see if the retry header pertains to\n// the status code.\nfunc canUseRetryAfterHeader(r *request.Request) bool {\n\tswitch r.HTTPResponse.StatusCode {\n\tcase 429:\n\tcase 503:\n\tdefault:\n\t\treturn false\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/client/logger.go",
    "content": "package client\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http/httputil\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\nconst logReqMsg = `DEBUG: Request %s/%s Details:\n---[ REQUEST POST-SIGN ]-----------------------------\n%s\n-----------------------------------------------------`\n\nconst logReqErrMsg = `DEBUG ERROR: Request %s/%s:\n---[ REQUEST DUMP ERROR ]-----------------------------\n%s\n------------------------------------------------------`\n\ntype logWriter struct {\n\t// Logger is what we will use to log the payload of a response.\n\tLogger aws.Logger\n\t// buf stores the contents of what has been read\n\tbuf *bytes.Buffer\n}\n\nfunc (logger *logWriter) Write(b []byte) (int, error) {\n\treturn logger.buf.Write(b)\n}\n\ntype teeReaderCloser struct {\n\t// io.Reader will be a tee reader that is used during logging.\n\t// This structure will read from a body and write the contents to a logger.\n\tio.Reader\n\t// Source is used just to close when we are done reading.\n\tSource io.ReadCloser\n}\n\nfunc (reader *teeReaderCloser) Close() error {\n\treturn reader.Source.Close()\n}\n\n// LogHTTPRequestHandler is a SDK request handler to log the HTTP request sent\n// to a service. Will include the HTTP request body if the LogLevel of the\n// request matches LogDebugWithHTTPBody.\nvar LogHTTPRequestHandler = request.NamedHandler{\n\tName: \"awssdk.client.LogRequest\",\n\tFn:   logRequest,\n}\n\nfunc logRequest(r *request.Request) {\n\tif !r.Config.LogLevel.AtLeast(aws.LogDebug) || r.Config.Logger == nil {\n\t\treturn\n\t}\n\n\tlogBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody)\n\tbodySeekable := aws.IsReaderSeekable(r.Body)\n\n\tb, err := httputil.DumpRequestOut(r.HTTPRequest, logBody)\n\tif err != nil {\n\t\tr.Config.Logger.Log(fmt.Sprintf(logReqErrMsg,\n\t\t\tr.ClientInfo.ServiceName, r.Operation.Name, err))\n\t\treturn\n\t}\n\n\tif logBody {\n\t\tif !bodySeekable {\n\t\t\tr.SetReaderBody(aws.ReadSeekCloser(r.HTTPRequest.Body))\n\t\t}\n\t\t// Reset the request body because dumpRequest will re-wrap the\n\t\t// r.HTTPRequest's Body as a NoOpCloser and will not be reset after\n\t\t// read by the HTTP client reader.\n\t\tif err := r.Error; err != nil {\n\t\t\tr.Config.Logger.Log(fmt.Sprintf(logReqErrMsg,\n\t\t\t\tr.ClientInfo.ServiceName, r.Operation.Name, err))\n\t\t\treturn\n\t\t}\n\t}\n\n\tr.Config.Logger.Log(fmt.Sprintf(logReqMsg,\n\t\tr.ClientInfo.ServiceName, r.Operation.Name, string(b)))\n}\n\n// LogHTTPRequestHeaderHandler is a SDK request handler to log the HTTP request sent\n// to a service. Will only log the HTTP request's headers. The request payload\n// will not be read.\nvar LogHTTPRequestHeaderHandler = request.NamedHandler{\n\tName: \"awssdk.client.LogRequestHeader\",\n\tFn:   logRequestHeader,\n}\n\nfunc logRequestHeader(r *request.Request) {\n\tif !r.Config.LogLevel.AtLeast(aws.LogDebug) || r.Config.Logger == nil {\n\t\treturn\n\t}\n\n\tb, err := httputil.DumpRequestOut(r.HTTPRequest, false)\n\tif err != nil {\n\t\tr.Config.Logger.Log(fmt.Sprintf(logReqErrMsg,\n\t\t\tr.ClientInfo.ServiceName, r.Operation.Name, err))\n\t\treturn\n\t}\n\n\tr.Config.Logger.Log(fmt.Sprintf(logReqMsg,\n\t\tr.ClientInfo.ServiceName, r.Operation.Name, string(b)))\n}\n\nconst logRespMsg = `DEBUG: Response %s/%s Details:\n---[ RESPONSE ]--------------------------------------\n%s\n-----------------------------------------------------`\n\nconst logRespErrMsg = `DEBUG ERROR: Response %s/%s:\n---[ RESPONSE DUMP ERROR ]-----------------------------\n%s\n-----------------------------------------------------`\n\n// LogHTTPResponseHandler is a SDK request handler to log the HTTP response\n// received from a service. Will include the HTTP response body if the LogLevel\n// of the request matches LogDebugWithHTTPBody.\nvar LogHTTPResponseHandler = request.NamedHandler{\n\tName: \"awssdk.client.LogResponse\",\n\tFn:   logResponse,\n}\n\nfunc logResponse(r *request.Request) {\n\tif !r.Config.LogLevel.AtLeast(aws.LogDebug) || r.Config.Logger == nil {\n\t\treturn\n\t}\n\n\tlw := &logWriter{r.Config.Logger, bytes.NewBuffer(nil)}\n\n\tif r.HTTPResponse == nil {\n\t\tlw.Logger.Log(fmt.Sprintf(logRespErrMsg,\n\t\t\tr.ClientInfo.ServiceName, r.Operation.Name, \"request's HTTPResponse is nil\"))\n\t\treturn\n\t}\n\n\tlogBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody)\n\tif logBody {\n\t\tr.HTTPResponse.Body = &teeReaderCloser{\n\t\t\tReader: io.TeeReader(r.HTTPResponse.Body, lw),\n\t\t\tSource: r.HTTPResponse.Body,\n\t\t}\n\t}\n\n\thandlerFn := func(req *request.Request) {\n\t\tb, err := httputil.DumpResponse(req.HTTPResponse, false)\n\t\tif err != nil {\n\t\t\tlw.Logger.Log(fmt.Sprintf(logRespErrMsg,\n\t\t\t\treq.ClientInfo.ServiceName, req.Operation.Name, err))\n\t\t\treturn\n\t\t}\n\n\t\tlw.Logger.Log(fmt.Sprintf(logRespMsg,\n\t\t\treq.ClientInfo.ServiceName, req.Operation.Name, string(b)))\n\n\t\tif logBody {\n\t\t\tb, err := ioutil.ReadAll(lw.buf)\n\t\t\tif err != nil {\n\t\t\t\tlw.Logger.Log(fmt.Sprintf(logRespErrMsg,\n\t\t\t\t\treq.ClientInfo.ServiceName, req.Operation.Name, err))\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlw.Logger.Log(string(b))\n\t\t}\n\t}\n\n\tconst handlerName = \"awsdk.client.LogResponse.ResponseBody\"\n\n\tr.Handlers.Unmarshal.SetBackNamed(request.NamedHandler{\n\t\tName: handlerName, Fn: handlerFn,\n\t})\n\tr.Handlers.UnmarshalError.SetBackNamed(request.NamedHandler{\n\t\tName: handlerName, Fn: handlerFn,\n\t})\n}\n\n// LogHTTPResponseHeaderHandler is a SDK request handler to log the HTTP\n// response received from a service. Will only log the HTTP response's headers.\n// The response payload will not be read.\nvar LogHTTPResponseHeaderHandler = request.NamedHandler{\n\tName: \"awssdk.client.LogResponseHeader\",\n\tFn:   logResponseHeader,\n}\n\nfunc logResponseHeader(r *request.Request) {\n\tif !r.Config.LogLevel.AtLeast(aws.LogDebug) || r.Config.Logger == nil {\n\t\treturn\n\t}\n\n\tb, err := httputil.DumpResponse(r.HTTPResponse, false)\n\tif err != nil {\n\t\tr.Config.Logger.Log(fmt.Sprintf(logRespErrMsg,\n\t\t\tr.ClientInfo.ServiceName, r.Operation.Name, err))\n\t\treturn\n\t}\n\n\tr.Config.Logger.Log(fmt.Sprintf(logRespMsg,\n\t\tr.ClientInfo.ServiceName, r.Operation.Name, string(b)))\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go",
    "content": "package metadata\n\n// ClientInfo wraps immutable data from the client.Client structure.\ntype ClientInfo struct {\n\tServiceName    string\n\tServiceID      string\n\tAPIVersion     string\n\tPartitionID    string\n\tEndpoint       string\n\tSigningName    string\n\tSigningRegion  string\n\tJSONVersion    string\n\tTargetPrefix   string\n\tResolvedRegion string\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/client/no_op_retryer.go",
    "content": "package client\n\nimport (\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// NoOpRetryer provides a retryer that performs no retries.\n// It should be used when we do not want retries to be performed.\ntype NoOpRetryer struct{}\n\n// MaxRetries returns the number of maximum returns the service will use to make\n// an individual API; For NoOpRetryer the MaxRetries will always be zero.\nfunc (d NoOpRetryer) MaxRetries() int {\n\treturn 0\n}\n\n// ShouldRetry will always return false for NoOpRetryer, as it should never retry.\nfunc (d NoOpRetryer) ShouldRetry(_ *request.Request) bool {\n\treturn false\n}\n\n// RetryRules returns the delay duration before retrying this request again;\n// since NoOpRetryer does not retry, RetryRules always returns 0.\nfunc (d NoOpRetryer) RetryRules(_ *request.Request) time.Duration {\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/config.go",
    "content": "package aws\n\nimport (\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/endpoints\"\n)\n\n// UseServiceDefaultRetries instructs the config to use the service's own\n// default number of retries. This will be the default action if\n// Config.MaxRetries is nil also.\nconst UseServiceDefaultRetries = -1\n\n// RequestRetryer is an alias for a type that implements the request.Retryer\n// interface.\ntype RequestRetryer interface{}\n\n// A Config provides service configuration for service clients. By default,\n// all clients will use the defaults.DefaultConfig structure.\n//\n//\t// Create Session with MaxRetries configuration to be shared by multiple\n//\t// service clients.\n//\tsess := session.Must(session.NewSession(&aws.Config{\n//\t    MaxRetries: aws.Int(3),\n//\t}))\n//\n//\t// Create S3 service client with a specific Region.\n//\tsvc := s3.New(sess, &aws.Config{\n//\t    Region: aws.String(\"us-west-2\"),\n//\t})\ntype Config struct {\n\t// Enables verbose error printing of all credential chain errors.\n\t// Should be used when wanting to see all errors while attempting to\n\t// retrieve credentials.\n\tCredentialsChainVerboseErrors *bool\n\n\t// The credentials object to use when signing requests. Defaults to a\n\t// chain of credential providers to search for credentials in environment\n\t// variables, shared credential file, and EC2 Instance Roles.\n\tCredentials *credentials.Credentials\n\n\t// An optional endpoint URL (hostname only or fully qualified URI)\n\t// that overrides the default generated endpoint for a client. Set this\n\t// to `nil` or the value to `\"\"` to use the default generated endpoint.\n\t//\n\t// Note: You must still provide a `Region` value when specifying an\n\t// endpoint for a client.\n\tEndpoint *string\n\n\t// The resolver to use for looking up endpoints for AWS service clients\n\t// to use based on region.\n\tEndpointResolver endpoints.Resolver\n\n\t// EnforceShouldRetryCheck is used in the AfterRetryHandler to always call\n\t// ShouldRetry regardless of whether or not if request.Retryable is set.\n\t// This will utilize ShouldRetry method of custom retryers. If EnforceShouldRetryCheck\n\t// is not set, then ShouldRetry will only be called if request.Retryable is nil.\n\t// Proper handling of the request.Retryable field is important when setting this field.\n\tEnforceShouldRetryCheck *bool\n\n\t// The region to send requests to. This parameter is required and must\n\t// be configured globally or on a per-client basis unless otherwise\n\t// noted. A full list of regions is found in the \"Regions and Endpoints\"\n\t// document.\n\t//\n\t// See http://docs.aws.amazon.com/general/latest/gr/rande.html for AWS\n\t// Regions and Endpoints.\n\tRegion *string\n\n\t// Set this to `true` to disable SSL when sending requests. Defaults\n\t// to `false`.\n\tDisableSSL *bool\n\n\t// The HTTP client to use when sending requests. Defaults to\n\t// `http.DefaultClient`.\n\tHTTPClient *http.Client\n\n\t// An integer value representing the logging level. The default log level\n\t// is zero (LogOff), which represents no logging. To enable logging set\n\t// to a LogLevel Value.\n\tLogLevel *LogLevelType\n\n\t// The logger writer interface to write logging messages to. Defaults to\n\t// standard out.\n\tLogger Logger\n\n\t// The maximum number of times that a request will be retried for failures.\n\t// Defaults to -1, which defers the max retry setting to the service\n\t// specific configuration.\n\tMaxRetries *int\n\n\t// Retryer guides how HTTP requests should be retried in case of\n\t// recoverable failures.\n\t//\n\t// When nil or the value does not implement the request.Retryer interface,\n\t// the client.DefaultRetryer will be used.\n\t//\n\t// When both Retryer and MaxRetries are non-nil, the former is used and\n\t// the latter ignored.\n\t//\n\t// To set the Retryer field in a type-safe manner and with chaining, use\n\t// the request.WithRetryer helper function:\n\t//\n\t//   cfg := request.WithRetryer(aws.NewConfig(), myRetryer)\n\t//\n\tRetryer RequestRetryer\n\n\t// Disables semantic parameter validation, which validates input for\n\t// missing required fields and/or other semantic request input errors.\n\tDisableParamValidation *bool\n\n\t// Disables the computation of request and response checksums, e.g.,\n\t// CRC32 checksums in Amazon DynamoDB.\n\tDisableComputeChecksums *bool\n\n\t// Set this to `true` to force the request to use path-style addressing,\n\t// i.e., `http://s3.amazonaws.com/BUCKET/KEY`. By default, the S3 client\n\t// will use virtual hosted bucket addressing when possible\n\t// (`http://BUCKET.s3.amazonaws.com/KEY`).\n\t//\n\t// Note: This configuration option is specific to the Amazon S3 service.\n\t//\n\t// See http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html\n\t// for Amazon S3: Virtual Hosting of Buckets\n\tS3ForcePathStyle *bool\n\n\t// Set this to `true` to disable the SDK adding the `Expect: 100-Continue`\n\t// header to PUT requests over 2MB of content. 100-Continue instructs the\n\t// HTTP client not to send the body until the service responds with a\n\t// `continue` status. This is useful to prevent sending the request body\n\t// until after the request is authenticated, and validated.\n\t//\n\t// http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html\n\t//\n\t// 100-Continue is only enabled for Go 1.6 and above. See `http.Transport`'s\n\t// `ExpectContinueTimeout` for information on adjusting the continue wait\n\t// timeout. https://golang.org/pkg/net/http/#Transport\n\t//\n\t// You should use this flag to disable 100-Continue if you experience issues\n\t// with proxies or third party S3 compatible services.\n\tS3Disable100Continue *bool\n\n\t// Set this to `true` to enable S3 Accelerate feature. For all operations\n\t// compatible with S3 Accelerate will use the accelerate endpoint for\n\t// requests. Requests not compatible will fall back to normal S3 requests.\n\t//\n\t// The bucket must be enable for accelerate to be used with S3 client with\n\t// accelerate enabled. If the bucket is not enabled for accelerate an error\n\t// will be returned. The bucket name must be DNS compatible to also work\n\t// with accelerate.\n\tS3UseAccelerate *bool\n\n\t// S3DisableContentMD5Validation config option is temporarily disabled,\n\t// For S3 GetObject API calls, #1837.\n\t//\n\t// Set this to `true` to disable the S3 service client from automatically\n\t// adding the ContentMD5 to S3 Object Put and Upload API calls. This option\n\t// will also disable the SDK from performing object ContentMD5 validation\n\t// on GetObject API calls.\n\tS3DisableContentMD5Validation *bool\n\n\t// Set this to `true` to have the S3 service client to use the region specified\n\t// in the ARN, when an ARN is provided as an argument to a bucket parameter.\n\tS3UseARNRegion *bool\n\n\t// Set this to `true` to enable the SDK to unmarshal API response header maps to\n\t// normalized lower case map keys.\n\t//\n\t// For example S3's X-Amz-Meta prefixed header will be unmarshaled to lower case\n\t// Metadata member's map keys. The value of the header in the map is unaffected.\n\t//\n\t// The AWS SDK for Go v2, uses lower case header maps by default. The v1\n\t// SDK provides this opt-in for this option, for backwards compatibility.\n\tLowerCaseHeaderMaps *bool\n\n\t// Set this to `true` to disable the EC2Metadata client from overriding the\n\t// default http.Client's Timeout. This is helpful if you do not want the\n\t// EC2Metadata client to create a new http.Client. This options is only\n\t// meaningful if you're not already using a custom HTTP client with the\n\t// SDK. Enabled by default.\n\t//\n\t// Must be set and provided to the session.NewSession() in order to disable\n\t// the EC2Metadata overriding the timeout for default credentials chain.\n\t//\n\t// Example:\n\t//    sess := session.Must(session.NewSession(aws.NewConfig()\n\t//       .WithEC2MetadataDisableTimeoutOverride(true)))\n\t//\n\t//    svc := s3.New(sess)\n\t//\n\tEC2MetadataDisableTimeoutOverride *bool\n\n\t// Set this to `false` to disable EC2Metadata client from falling back to IMDSv1.\n\t// By default, EC2 role credentials will fall back to IMDSv1 as needed for backwards compatibility.\n\t// You can disable this behavior by explicitly setting this flag to `false`. When false, the EC2Metadata\n\t// client will return any errors encountered from attempting to fetch a token instead of silently\n\t// using the insecure data flow of IMDSv1.\n\t//\n\t// Example:\n\t//    sess := session.Must(session.NewSession(aws.NewConfig()\n\t//       .WithEC2MetadataEnableFallback(false)))\n\t//\n\t//    svc := s3.New(sess)\n\t//\n\t// See [configuring IMDS] for more information.\n\t//\n\t// [configuring IMDS]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html\n\tEC2MetadataEnableFallback *bool\n\n\t// Instructs the endpoint to be generated for a service client to\n\t// be the dual stack endpoint. The dual stack endpoint will support\n\t// both IPv4 and IPv6 addressing.\n\t//\n\t// Setting this for a service which does not support dual stack will fail\n\t// to make requests. It is not recommended to set this value on the session\n\t// as it will apply to all service clients created with the session. Even\n\t// services which don't support dual stack endpoints.\n\t//\n\t// If the Endpoint config value is also provided the UseDualStack flag\n\t// will be ignored.\n\t//\n\t// Only supported with.\n\t//\n\t//     sess := session.Must(session.NewSession())\n\t//\n\t//     svc := s3.New(sess, &aws.Config{\n\t//         UseDualStack: aws.Bool(true),\n\t//     })\n\t//\n\t// Deprecated: This option will continue to function for S3 and S3 Control for backwards compatibility.\n\t// UseDualStackEndpoint should be used to enable usage of a service's dual-stack endpoint for all service clients\n\t// moving forward. For S3 and S3 Control, when UseDualStackEndpoint is set to a non-zero value it takes higher\n\t// precedence then this option.\n\tUseDualStack *bool\n\n\t// Sets the resolver to resolve a dual-stack endpoint for the service.\n\tUseDualStackEndpoint endpoints.DualStackEndpointState\n\n\t// UseFIPSEndpoint specifies the resolver must resolve a FIPS endpoint.\n\tUseFIPSEndpoint endpoints.FIPSEndpointState\n\n\t// SleepDelay is an override for the func the SDK will call when sleeping\n\t// during the lifecycle of a request. Specifically this will be used for\n\t// request delays. This value should only be used for testing. To adjust\n\t// the delay of a request see the aws/client.DefaultRetryer and\n\t// aws/request.Retryer.\n\t//\n\t// SleepDelay will prevent any Context from being used for canceling retry\n\t// delay of an API operation. It is recommended to not use SleepDelay at all\n\t// and specify a Retryer instead.\n\tSleepDelay func(time.Duration)\n\n\t// DisableRestProtocolURICleaning will not clean the URL path when making rest protocol requests.\n\t// Will default to false. This would only be used for empty directory names in s3 requests.\n\t//\n\t// Example:\n\t//    sess := session.Must(session.NewSession(&aws.Config{\n\t//         DisableRestProtocolURICleaning: aws.Bool(true),\n\t//    }))\n\t//\n\t//    svc := s3.New(sess)\n\t//    out, err := svc.GetObject(&s3.GetObjectInput {\n\t//    \tBucket: aws.String(\"bucketname\"),\n\t//    \tKey: aws.String(\"//foo//bar//moo\"),\n\t//    })\n\tDisableRestProtocolURICleaning *bool\n\n\t// EnableEndpointDiscovery will allow for endpoint discovery on operations that\n\t// have the definition in its model. By default, endpoint discovery is off.\n\t// To use EndpointDiscovery, Endpoint should be unset or set to an empty string.\n\t//\n\t// Example:\n\t//    sess := session.Must(session.NewSession(&aws.Config{\n\t//         EnableEndpointDiscovery: aws.Bool(true),\n\t//    }))\n\t//\n\t//    svc := s3.New(sess)\n\t//    out, err := svc.GetObject(&s3.GetObjectInput {\n\t//    \tBucket: aws.String(\"bucketname\"),\n\t//    \tKey: aws.String(\"/foo/bar/moo\"),\n\t//    })\n\tEnableEndpointDiscovery *bool\n\n\t// DisableEndpointHostPrefix will disable the SDK's behavior of prefixing\n\t// request endpoint hosts with modeled information.\n\t//\n\t// Disabling this feature is useful when you want to use local endpoints\n\t// for testing that do not support the modeled host prefix pattern.\n\tDisableEndpointHostPrefix *bool\n\n\t// STSRegionalEndpoint will enable regional or legacy endpoint resolving\n\tSTSRegionalEndpoint endpoints.STSRegionalEndpoint\n\n\t// S3UsEast1RegionalEndpoint will enable regional or legacy endpoint resolving\n\tS3UsEast1RegionalEndpoint endpoints.S3UsEast1RegionalEndpoint\n}\n\n// NewConfig returns a new Config pointer that can be chained with builder\n// methods to set multiple configuration values inline without using pointers.\n//\n//\t// Create Session with MaxRetries configuration to be shared by multiple\n//\t// service clients.\n//\tsess := session.Must(session.NewSession(aws.NewConfig().\n//\t    WithMaxRetries(3),\n//\t))\n//\n//\t// Create S3 service client with a specific Region.\n//\tsvc := s3.New(sess, aws.NewConfig().\n//\t    WithRegion(\"us-west-2\"),\n//\t)\nfunc NewConfig() *Config {\n\treturn &Config{}\n}\n\n// WithCredentialsChainVerboseErrors sets a config verbose errors boolean and returning\n// a Config pointer.\nfunc (c *Config) WithCredentialsChainVerboseErrors(verboseErrs bool) *Config {\n\tc.CredentialsChainVerboseErrors = &verboseErrs\n\treturn c\n}\n\n// WithCredentials sets a config Credentials value returning a Config pointer\n// for chaining.\nfunc (c *Config) WithCredentials(creds *credentials.Credentials) *Config {\n\tc.Credentials = creds\n\treturn c\n}\n\n// WithEndpoint sets a config Endpoint value returning a Config pointer for\n// chaining.\nfunc (c *Config) WithEndpoint(endpoint string) *Config {\n\tc.Endpoint = &endpoint\n\treturn c\n}\n\n// WithEndpointResolver sets a config EndpointResolver value returning a\n// Config pointer for chaining.\nfunc (c *Config) WithEndpointResolver(resolver endpoints.Resolver) *Config {\n\tc.EndpointResolver = resolver\n\treturn c\n}\n\n// WithRegion sets a config Region value returning a Config pointer for\n// chaining.\nfunc (c *Config) WithRegion(region string) *Config {\n\tc.Region = &region\n\treturn c\n}\n\n// WithDisableSSL sets a config DisableSSL value returning a Config pointer\n// for chaining.\nfunc (c *Config) WithDisableSSL(disable bool) *Config {\n\tc.DisableSSL = &disable\n\treturn c\n}\n\n// WithHTTPClient sets a config HTTPClient value returning a Config pointer\n// for chaining.\nfunc (c *Config) WithHTTPClient(client *http.Client) *Config {\n\tc.HTTPClient = client\n\treturn c\n}\n\n// WithMaxRetries sets a config MaxRetries value returning a Config pointer\n// for chaining.\nfunc (c *Config) WithMaxRetries(max int) *Config {\n\tc.MaxRetries = &max\n\treturn c\n}\n\n// WithDisableParamValidation sets a config DisableParamValidation value\n// returning a Config pointer for chaining.\nfunc (c *Config) WithDisableParamValidation(disable bool) *Config {\n\tc.DisableParamValidation = &disable\n\treturn c\n}\n\n// WithDisableComputeChecksums sets a config DisableComputeChecksums value\n// returning a Config pointer for chaining.\nfunc (c *Config) WithDisableComputeChecksums(disable bool) *Config {\n\tc.DisableComputeChecksums = &disable\n\treturn c\n}\n\n// WithLogLevel sets a config LogLevel value returning a Config pointer for\n// chaining.\nfunc (c *Config) WithLogLevel(level LogLevelType) *Config {\n\tc.LogLevel = &level\n\treturn c\n}\n\n// WithLogger sets a config Logger value returning a Config pointer for\n// chaining.\nfunc (c *Config) WithLogger(logger Logger) *Config {\n\tc.Logger = logger\n\treturn c\n}\n\n// WithS3ForcePathStyle sets a config S3ForcePathStyle value returning a Config\n// pointer for chaining.\nfunc (c *Config) WithS3ForcePathStyle(force bool) *Config {\n\tc.S3ForcePathStyle = &force\n\treturn c\n}\n\n// WithS3Disable100Continue sets a config S3Disable100Continue value returning\n// a Config pointer for chaining.\nfunc (c *Config) WithS3Disable100Continue(disable bool) *Config {\n\tc.S3Disable100Continue = &disable\n\treturn c\n}\n\n// WithS3UseAccelerate sets a config S3UseAccelerate value returning a Config\n// pointer for chaining.\nfunc (c *Config) WithS3UseAccelerate(enable bool) *Config {\n\tc.S3UseAccelerate = &enable\n\treturn c\n\n}\n\n// WithS3DisableContentMD5Validation sets a config\n// S3DisableContentMD5Validation value returning a Config pointer for chaining.\nfunc (c *Config) WithS3DisableContentMD5Validation(enable bool) *Config {\n\tc.S3DisableContentMD5Validation = &enable\n\treturn c\n\n}\n\n// WithS3UseARNRegion sets a config S3UseARNRegion value and\n// returning a Config pointer for chaining\nfunc (c *Config) WithS3UseARNRegion(enable bool) *Config {\n\tc.S3UseARNRegion = &enable\n\treturn c\n}\n\n// WithUseDualStack sets a config UseDualStack value returning a Config\n// pointer for chaining.\nfunc (c *Config) WithUseDualStack(enable bool) *Config {\n\tc.UseDualStack = &enable\n\treturn c\n}\n\n// WithEC2MetadataDisableTimeoutOverride sets a config EC2MetadataDisableTimeoutOverride value\n// returning a Config pointer for chaining.\nfunc (c *Config) WithEC2MetadataDisableTimeoutOverride(enable bool) *Config {\n\tc.EC2MetadataDisableTimeoutOverride = &enable\n\treturn c\n}\n\n// WithEC2MetadataEnableFallback sets a config EC2MetadataEnableFallback value\n// returning a Config pointer for chaining.\nfunc (c *Config) WithEC2MetadataEnableFallback(v bool) *Config {\n\tc.EC2MetadataEnableFallback = &v\n\treturn c\n}\n\n// WithSleepDelay overrides the function used to sleep while waiting for the\n// next retry. Defaults to time.Sleep.\nfunc (c *Config) WithSleepDelay(fn func(time.Duration)) *Config {\n\tc.SleepDelay = fn\n\treturn c\n}\n\n// WithEndpointDiscovery will set whether or not to use endpoint discovery.\nfunc (c *Config) WithEndpointDiscovery(t bool) *Config {\n\tc.EnableEndpointDiscovery = &t\n\treturn c\n}\n\n// WithDisableEndpointHostPrefix will set whether or not to use modeled host prefix\n// when making requests.\nfunc (c *Config) WithDisableEndpointHostPrefix(t bool) *Config {\n\tc.DisableEndpointHostPrefix = &t\n\treturn c\n}\n\n// WithSTSRegionalEndpoint will set whether or not to use regional endpoint flag\n// when resolving the endpoint for a service\nfunc (c *Config) WithSTSRegionalEndpoint(sre endpoints.STSRegionalEndpoint) *Config {\n\tc.STSRegionalEndpoint = sre\n\treturn c\n}\n\n// WithS3UsEast1RegionalEndpoint will set whether or not to use regional endpoint flag\n// when resolving the endpoint for a service\nfunc (c *Config) WithS3UsEast1RegionalEndpoint(sre endpoints.S3UsEast1RegionalEndpoint) *Config {\n\tc.S3UsEast1RegionalEndpoint = sre\n\treturn c\n}\n\n// WithLowerCaseHeaderMaps sets a config LowerCaseHeaderMaps value\n// returning a Config pointer for chaining.\nfunc (c *Config) WithLowerCaseHeaderMaps(t bool) *Config {\n\tc.LowerCaseHeaderMaps = &t\n\treturn c\n}\n\n// WithDisableRestProtocolURICleaning sets a config DisableRestProtocolURICleaning value\n// returning a Config pointer for chaining.\nfunc (c *Config) WithDisableRestProtocolURICleaning(t bool) *Config {\n\tc.DisableRestProtocolURICleaning = &t\n\treturn c\n}\n\n// MergeIn merges the passed in configs into the existing config object.\nfunc (c *Config) MergeIn(cfgs ...*Config) {\n\tfor _, other := range cfgs {\n\t\tmergeInConfig(c, other)\n\t}\n}\n\nfunc mergeInConfig(dst *Config, other *Config) {\n\tif other == nil {\n\t\treturn\n\t}\n\n\tif other.CredentialsChainVerboseErrors != nil {\n\t\tdst.CredentialsChainVerboseErrors = other.CredentialsChainVerboseErrors\n\t}\n\n\tif other.Credentials != nil {\n\t\tdst.Credentials = other.Credentials\n\t}\n\n\tif other.Endpoint != nil {\n\t\tdst.Endpoint = other.Endpoint\n\t}\n\n\tif other.EndpointResolver != nil {\n\t\tdst.EndpointResolver = other.EndpointResolver\n\t}\n\n\tif other.Region != nil {\n\t\tdst.Region = other.Region\n\t}\n\n\tif other.DisableSSL != nil {\n\t\tdst.DisableSSL = other.DisableSSL\n\t}\n\n\tif other.HTTPClient != nil {\n\t\tdst.HTTPClient = other.HTTPClient\n\t}\n\n\tif other.LogLevel != nil {\n\t\tdst.LogLevel = other.LogLevel\n\t}\n\n\tif other.Logger != nil {\n\t\tdst.Logger = other.Logger\n\t}\n\n\tif other.MaxRetries != nil {\n\t\tdst.MaxRetries = other.MaxRetries\n\t}\n\n\tif other.Retryer != nil {\n\t\tdst.Retryer = other.Retryer\n\t}\n\n\tif other.DisableParamValidation != nil {\n\t\tdst.DisableParamValidation = other.DisableParamValidation\n\t}\n\n\tif other.DisableComputeChecksums != nil {\n\t\tdst.DisableComputeChecksums = other.DisableComputeChecksums\n\t}\n\n\tif other.S3ForcePathStyle != nil {\n\t\tdst.S3ForcePathStyle = other.S3ForcePathStyle\n\t}\n\n\tif other.S3Disable100Continue != nil {\n\t\tdst.S3Disable100Continue = other.S3Disable100Continue\n\t}\n\n\tif other.S3UseAccelerate != nil {\n\t\tdst.S3UseAccelerate = other.S3UseAccelerate\n\t}\n\n\tif other.S3DisableContentMD5Validation != nil {\n\t\tdst.S3DisableContentMD5Validation = other.S3DisableContentMD5Validation\n\t}\n\n\tif other.S3UseARNRegion != nil {\n\t\tdst.S3UseARNRegion = other.S3UseARNRegion\n\t}\n\n\tif other.UseDualStack != nil {\n\t\tdst.UseDualStack = other.UseDualStack\n\t}\n\n\tif other.UseDualStackEndpoint != endpoints.DualStackEndpointStateUnset {\n\t\tdst.UseDualStackEndpoint = other.UseDualStackEndpoint\n\t}\n\n\tif other.EC2MetadataDisableTimeoutOverride != nil {\n\t\tdst.EC2MetadataDisableTimeoutOverride = other.EC2MetadataDisableTimeoutOverride\n\t}\n\n\tif other.EC2MetadataEnableFallback != nil {\n\t\tdst.EC2MetadataEnableFallback = other.EC2MetadataEnableFallback\n\t}\n\n\tif other.SleepDelay != nil {\n\t\tdst.SleepDelay = other.SleepDelay\n\t}\n\n\tif other.DisableRestProtocolURICleaning != nil {\n\t\tdst.DisableRestProtocolURICleaning = other.DisableRestProtocolURICleaning\n\t}\n\n\tif other.EnforceShouldRetryCheck != nil {\n\t\tdst.EnforceShouldRetryCheck = other.EnforceShouldRetryCheck\n\t}\n\n\tif other.EnableEndpointDiscovery != nil {\n\t\tdst.EnableEndpointDiscovery = other.EnableEndpointDiscovery\n\t}\n\n\tif other.DisableEndpointHostPrefix != nil {\n\t\tdst.DisableEndpointHostPrefix = other.DisableEndpointHostPrefix\n\t}\n\n\tif other.STSRegionalEndpoint != endpoints.UnsetSTSEndpoint {\n\t\tdst.STSRegionalEndpoint = other.STSRegionalEndpoint\n\t}\n\n\tif other.S3UsEast1RegionalEndpoint != endpoints.UnsetS3UsEast1Endpoint {\n\t\tdst.S3UsEast1RegionalEndpoint = other.S3UsEast1RegionalEndpoint\n\t}\n\n\tif other.LowerCaseHeaderMaps != nil {\n\t\tdst.LowerCaseHeaderMaps = other.LowerCaseHeaderMaps\n\t}\n\n\tif other.UseDualStackEndpoint != endpoints.DualStackEndpointStateUnset {\n\t\tdst.UseDualStackEndpoint = other.UseDualStackEndpoint\n\t}\n\n\tif other.UseFIPSEndpoint != endpoints.FIPSEndpointStateUnset {\n\t\tdst.UseFIPSEndpoint = other.UseFIPSEndpoint\n\t}\n}\n\n// Copy will return a shallow copy of the Config object. If any additional\n// configurations are provided they will be merged into the new config returned.\nfunc (c *Config) Copy(cfgs ...*Config) *Config {\n\tdst := &Config{}\n\tdst.MergeIn(c)\n\n\tfor _, cfg := range cfgs {\n\t\tdst.MergeIn(cfg)\n\t}\n\n\treturn dst\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/context_1_5.go",
    "content": "//go:build !go1.9\n// +build !go1.9\n\npackage aws\n\nimport \"time\"\n\n// Context is an copy of the Go v1.7 stdlib's context.Context interface.\n// It is represented as a SDK interface to enable you to use the \"WithContext\"\n// API methods with Go v1.6 and a Context type such as golang.org/x/net/context.\n//\n// See https://golang.org/pkg/context on how to use contexts.\ntype Context interface {\n\t// Deadline returns the time when work done on behalf of this context\n\t// should be canceled. Deadline returns ok==false when no deadline is\n\t// set. Successive calls to Deadline return the same results.\n\tDeadline() (deadline time.Time, ok bool)\n\n\t// Done returns a channel that's closed when work done on behalf of this\n\t// context should be canceled. Done may return nil if this context can\n\t// never be canceled. Successive calls to Done return the same value.\n\tDone() <-chan struct{}\n\n\t// Err returns a non-nil error value after Done is closed. Err returns\n\t// Canceled if the context was canceled or DeadlineExceeded if the\n\t// context's deadline passed. No other values for Err are defined.\n\t// After Done is closed, successive calls to Err return the same value.\n\tErr() error\n\n\t// Value returns the value associated with this context for key, or nil\n\t// if no value is associated with key. Successive calls to Value with\n\t// the same key returns the same result.\n\t//\n\t// Use context values only for request-scoped data that transits\n\t// processes and API boundaries, not for passing optional parameters to\n\t// functions.\n\tValue(key interface{}) interface{}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/context_1_9.go",
    "content": "//go:build go1.9\n// +build go1.9\n\npackage aws\n\nimport \"context\"\n\n// Context is an alias of the Go stdlib's context.Context interface.\n// It can be used within the SDK's API operation \"WithContext\" methods.\n//\n// See https://golang.org/pkg/context on how to use contexts.\ntype Context = context.Context\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/context_background_1_5.go",
    "content": "//go:build !go1.7\n// +build !go1.7\n\npackage aws\n\nimport (\n\t\"github.com/aws/aws-sdk-go/internal/context\"\n)\n\n// BackgroundContext returns a context that will never be canceled, has no\n// values, and no deadline. This context is used by the SDK to provide\n// backwards compatibility with non-context API operations and functionality.\n//\n// Go 1.6 and before:\n// This context function is equivalent to context.Background in the Go stdlib.\n//\n// Go 1.7 and later:\n// The context returned will be the value returned by context.Background()\n//\n// See https://golang.org/pkg/context for more information on Contexts.\nfunc BackgroundContext() Context {\n\treturn context.BackgroundCtx\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/context_background_1_7.go",
    "content": "//go:build go1.7\n// +build go1.7\n\npackage aws\n\nimport \"context\"\n\n// BackgroundContext returns a context that will never be canceled, has no\n// values, and no deadline. This context is used by the SDK to provide\n// backwards compatibility with non-context API operations and functionality.\n//\n// Go 1.6 and before:\n// This context function is equivalent to context.Background in the Go stdlib.\n//\n// Go 1.7 and later:\n// The context returned will be the value returned by context.Background()\n//\n// See https://golang.org/pkg/context for more information on Contexts.\nfunc BackgroundContext() Context {\n\treturn context.Background()\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/context_sleep.go",
    "content": "package aws\n\nimport (\n\t\"time\"\n)\n\n// SleepWithContext will wait for the timer duration to expire, or the context\n// is canceled. Which ever happens first. If the context is canceled the Context's\n// error will be returned.\n//\n// Expects Context to always return a non-nil error if the Done channel is closed.\nfunc SleepWithContext(ctx Context, dur time.Duration) error {\n\tt := time.NewTimer(dur)\n\tdefer t.Stop()\n\n\tselect {\n\tcase <-t.C:\n\t\tbreak\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/convert_types.go",
    "content": "package aws\n\nimport \"time\"\n\n// String returns a pointer to the string value passed in.\nfunc String(v string) *string {\n\treturn &v\n}\n\n// StringValue returns the value of the string pointer passed in or\n// \"\" if the pointer is nil.\nfunc StringValue(v *string) string {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn \"\"\n}\n\n// StringSlice converts a slice of string values into a slice of\n// string pointers\nfunc StringSlice(src []string) []*string {\n\tdst := make([]*string, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// StringValueSlice converts a slice of string pointers into a slice of\n// string values\nfunc StringValueSlice(src []*string) []string {\n\tdst := make([]string, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// StringMap converts a string map of string values into a string\n// map of string pointers\nfunc StringMap(src map[string]string) map[string]*string {\n\tdst := make(map[string]*string)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// StringValueMap converts a string map of string pointers into a string\n// map of string values\nfunc StringValueMap(src map[string]*string) map[string]string {\n\tdst := make(map[string]string)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Bool returns a pointer to the bool value passed in.\nfunc Bool(v bool) *bool {\n\treturn &v\n}\n\n// BoolValue returns the value of the bool pointer passed in or\n// false if the pointer is nil.\nfunc BoolValue(v *bool) bool {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn false\n}\n\n// BoolSlice converts a slice of bool values into a slice of\n// bool pointers\nfunc BoolSlice(src []bool) []*bool {\n\tdst := make([]*bool, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// BoolValueSlice converts a slice of bool pointers into a slice of\n// bool values\nfunc BoolValueSlice(src []*bool) []bool {\n\tdst := make([]bool, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// BoolMap converts a string map of bool values into a string\n// map of bool pointers\nfunc BoolMap(src map[string]bool) map[string]*bool {\n\tdst := make(map[string]*bool)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// BoolValueMap converts a string map of bool pointers into a string\n// map of bool values\nfunc BoolValueMap(src map[string]*bool) map[string]bool {\n\tdst := make(map[string]bool)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Int returns a pointer to the int value passed in.\nfunc Int(v int) *int {\n\treturn &v\n}\n\n// IntValue returns the value of the int pointer passed in or\n// 0 if the pointer is nil.\nfunc IntValue(v *int) int {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn 0\n}\n\n// IntSlice converts a slice of int values into a slice of\n// int pointers\nfunc IntSlice(src []int) []*int {\n\tdst := make([]*int, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// IntValueSlice converts a slice of int pointers into a slice of\n// int values\nfunc IntValueSlice(src []*int) []int {\n\tdst := make([]int, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// IntMap converts a string map of int values into a string\n// map of int pointers\nfunc IntMap(src map[string]int) map[string]*int {\n\tdst := make(map[string]*int)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// IntValueMap converts a string map of int pointers into a string\n// map of int values\nfunc IntValueMap(src map[string]*int) map[string]int {\n\tdst := make(map[string]int)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Uint returns a pointer to the uint value passed in.\nfunc Uint(v uint) *uint {\n\treturn &v\n}\n\n// UintValue returns the value of the uint pointer passed in or\n// 0 if the pointer is nil.\nfunc UintValue(v *uint) uint {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn 0\n}\n\n// UintSlice converts a slice of uint values uinto a slice of\n// uint pointers\nfunc UintSlice(src []uint) []*uint {\n\tdst := make([]*uint, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// UintValueSlice converts a slice of uint pointers uinto a slice of\n// uint values\nfunc UintValueSlice(src []*uint) []uint {\n\tdst := make([]uint, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// UintMap converts a string map of uint values uinto a string\n// map of uint pointers\nfunc UintMap(src map[string]uint) map[string]*uint {\n\tdst := make(map[string]*uint)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// UintValueMap converts a string map of uint pointers uinto a string\n// map of uint values\nfunc UintValueMap(src map[string]*uint) map[string]uint {\n\tdst := make(map[string]uint)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Int8 returns a pointer to the int8 value passed in.\nfunc Int8(v int8) *int8 {\n\treturn &v\n}\n\n// Int8Value returns the value of the int8 pointer passed in or\n// 0 if the pointer is nil.\nfunc Int8Value(v *int8) int8 {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn 0\n}\n\n// Int8Slice converts a slice of int8 values into a slice of\n// int8 pointers\nfunc Int8Slice(src []int8) []*int8 {\n\tdst := make([]*int8, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// Int8ValueSlice converts a slice of int8 pointers into a slice of\n// int8 values\nfunc Int8ValueSlice(src []*int8) []int8 {\n\tdst := make([]int8, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// Int8Map converts a string map of int8 values into a string\n// map of int8 pointers\nfunc Int8Map(src map[string]int8) map[string]*int8 {\n\tdst := make(map[string]*int8)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// Int8ValueMap converts a string map of int8 pointers into a string\n// map of int8 values\nfunc Int8ValueMap(src map[string]*int8) map[string]int8 {\n\tdst := make(map[string]int8)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Int16 returns a pointer to the int16 value passed in.\nfunc Int16(v int16) *int16 {\n\treturn &v\n}\n\n// Int16Value returns the value of the int16 pointer passed in or\n// 0 if the pointer is nil.\nfunc Int16Value(v *int16) int16 {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn 0\n}\n\n// Int16Slice converts a slice of int16 values into a slice of\n// int16 pointers\nfunc Int16Slice(src []int16) []*int16 {\n\tdst := make([]*int16, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// Int16ValueSlice converts a slice of int16 pointers into a slice of\n// int16 values\nfunc Int16ValueSlice(src []*int16) []int16 {\n\tdst := make([]int16, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// Int16Map converts a string map of int16 values into a string\n// map of int16 pointers\nfunc Int16Map(src map[string]int16) map[string]*int16 {\n\tdst := make(map[string]*int16)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// Int16ValueMap converts a string map of int16 pointers into a string\n// map of int16 values\nfunc Int16ValueMap(src map[string]*int16) map[string]int16 {\n\tdst := make(map[string]int16)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Int32 returns a pointer to the int32 value passed in.\nfunc Int32(v int32) *int32 {\n\treturn &v\n}\n\n// Int32Value returns the value of the int32 pointer passed in or\n// 0 if the pointer is nil.\nfunc Int32Value(v *int32) int32 {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn 0\n}\n\n// Int32Slice converts a slice of int32 values into a slice of\n// int32 pointers\nfunc Int32Slice(src []int32) []*int32 {\n\tdst := make([]*int32, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// Int32ValueSlice converts a slice of int32 pointers into a slice of\n// int32 values\nfunc Int32ValueSlice(src []*int32) []int32 {\n\tdst := make([]int32, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// Int32Map converts a string map of int32 values into a string\n// map of int32 pointers\nfunc Int32Map(src map[string]int32) map[string]*int32 {\n\tdst := make(map[string]*int32)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// Int32ValueMap converts a string map of int32 pointers into a string\n// map of int32 values\nfunc Int32ValueMap(src map[string]*int32) map[string]int32 {\n\tdst := make(map[string]int32)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Int64 returns a pointer to the int64 value passed in.\nfunc Int64(v int64) *int64 {\n\treturn &v\n}\n\n// Int64Value returns the value of the int64 pointer passed in or\n// 0 if the pointer is nil.\nfunc Int64Value(v *int64) int64 {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn 0\n}\n\n// Int64Slice converts a slice of int64 values into a slice of\n// int64 pointers\nfunc Int64Slice(src []int64) []*int64 {\n\tdst := make([]*int64, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// Int64ValueSlice converts a slice of int64 pointers into a slice of\n// int64 values\nfunc Int64ValueSlice(src []*int64) []int64 {\n\tdst := make([]int64, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// Int64Map converts a string map of int64 values into a string\n// map of int64 pointers\nfunc Int64Map(src map[string]int64) map[string]*int64 {\n\tdst := make(map[string]*int64)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// Int64ValueMap converts a string map of int64 pointers into a string\n// map of int64 values\nfunc Int64ValueMap(src map[string]*int64) map[string]int64 {\n\tdst := make(map[string]int64)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Uint8 returns a pointer to the uint8 value passed in.\nfunc Uint8(v uint8) *uint8 {\n\treturn &v\n}\n\n// Uint8Value returns the value of the uint8 pointer passed in or\n// 0 if the pointer is nil.\nfunc Uint8Value(v *uint8) uint8 {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn 0\n}\n\n// Uint8Slice converts a slice of uint8 values into a slice of\n// uint8 pointers\nfunc Uint8Slice(src []uint8) []*uint8 {\n\tdst := make([]*uint8, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// Uint8ValueSlice converts a slice of uint8 pointers into a slice of\n// uint8 values\nfunc Uint8ValueSlice(src []*uint8) []uint8 {\n\tdst := make([]uint8, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// Uint8Map converts a string map of uint8 values into a string\n// map of uint8 pointers\nfunc Uint8Map(src map[string]uint8) map[string]*uint8 {\n\tdst := make(map[string]*uint8)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// Uint8ValueMap converts a string map of uint8 pointers into a string\n// map of uint8 values\nfunc Uint8ValueMap(src map[string]*uint8) map[string]uint8 {\n\tdst := make(map[string]uint8)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Uint16 returns a pointer to the uint16 value passed in.\nfunc Uint16(v uint16) *uint16 {\n\treturn &v\n}\n\n// Uint16Value returns the value of the uint16 pointer passed in or\n// 0 if the pointer is nil.\nfunc Uint16Value(v *uint16) uint16 {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn 0\n}\n\n// Uint16Slice converts a slice of uint16 values into a slice of\n// uint16 pointers\nfunc Uint16Slice(src []uint16) []*uint16 {\n\tdst := make([]*uint16, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// Uint16ValueSlice converts a slice of uint16 pointers into a slice of\n// uint16 values\nfunc Uint16ValueSlice(src []*uint16) []uint16 {\n\tdst := make([]uint16, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// Uint16Map converts a string map of uint16 values into a string\n// map of uint16 pointers\nfunc Uint16Map(src map[string]uint16) map[string]*uint16 {\n\tdst := make(map[string]*uint16)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// Uint16ValueMap converts a string map of uint16 pointers into a string\n// map of uint16 values\nfunc Uint16ValueMap(src map[string]*uint16) map[string]uint16 {\n\tdst := make(map[string]uint16)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Uint32 returns a pointer to the uint32 value passed in.\nfunc Uint32(v uint32) *uint32 {\n\treturn &v\n}\n\n// Uint32Value returns the value of the uint32 pointer passed in or\n// 0 if the pointer is nil.\nfunc Uint32Value(v *uint32) uint32 {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn 0\n}\n\n// Uint32Slice converts a slice of uint32 values into a slice of\n// uint32 pointers\nfunc Uint32Slice(src []uint32) []*uint32 {\n\tdst := make([]*uint32, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// Uint32ValueSlice converts a slice of uint32 pointers into a slice of\n// uint32 values\nfunc Uint32ValueSlice(src []*uint32) []uint32 {\n\tdst := make([]uint32, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// Uint32Map converts a string map of uint32 values into a string\n// map of uint32 pointers\nfunc Uint32Map(src map[string]uint32) map[string]*uint32 {\n\tdst := make(map[string]*uint32)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// Uint32ValueMap converts a string map of uint32 pointers into a string\n// map of uint32 values\nfunc Uint32ValueMap(src map[string]*uint32) map[string]uint32 {\n\tdst := make(map[string]uint32)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Uint64 returns a pointer to the uint64 value passed in.\nfunc Uint64(v uint64) *uint64 {\n\treturn &v\n}\n\n// Uint64Value returns the value of the uint64 pointer passed in or\n// 0 if the pointer is nil.\nfunc Uint64Value(v *uint64) uint64 {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn 0\n}\n\n// Uint64Slice converts a slice of uint64 values into a slice of\n// uint64 pointers\nfunc Uint64Slice(src []uint64) []*uint64 {\n\tdst := make([]*uint64, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// Uint64ValueSlice converts a slice of uint64 pointers into a slice of\n// uint64 values\nfunc Uint64ValueSlice(src []*uint64) []uint64 {\n\tdst := make([]uint64, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// Uint64Map converts a string map of uint64 values into a string\n// map of uint64 pointers\nfunc Uint64Map(src map[string]uint64) map[string]*uint64 {\n\tdst := make(map[string]*uint64)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// Uint64ValueMap converts a string map of uint64 pointers into a string\n// map of uint64 values\nfunc Uint64ValueMap(src map[string]*uint64) map[string]uint64 {\n\tdst := make(map[string]uint64)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Float32 returns a pointer to the float32 value passed in.\nfunc Float32(v float32) *float32 {\n\treturn &v\n}\n\n// Float32Value returns the value of the float32 pointer passed in or\n// 0 if the pointer is nil.\nfunc Float32Value(v *float32) float32 {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn 0\n}\n\n// Float32Slice converts a slice of float32 values into a slice of\n// float32 pointers\nfunc Float32Slice(src []float32) []*float32 {\n\tdst := make([]*float32, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// Float32ValueSlice converts a slice of float32 pointers into a slice of\n// float32 values\nfunc Float32ValueSlice(src []*float32) []float32 {\n\tdst := make([]float32, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// Float32Map converts a string map of float32 values into a string\n// map of float32 pointers\nfunc Float32Map(src map[string]float32) map[string]*float32 {\n\tdst := make(map[string]*float32)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// Float32ValueMap converts a string map of float32 pointers into a string\n// map of float32 values\nfunc Float32ValueMap(src map[string]*float32) map[string]float32 {\n\tdst := make(map[string]float32)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Float64 returns a pointer to the float64 value passed in.\nfunc Float64(v float64) *float64 {\n\treturn &v\n}\n\n// Float64Value returns the value of the float64 pointer passed in or\n// 0 if the pointer is nil.\nfunc Float64Value(v *float64) float64 {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn 0\n}\n\n// Float64Slice converts a slice of float64 values into a slice of\n// float64 pointers\nfunc Float64Slice(src []float64) []*float64 {\n\tdst := make([]*float64, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// Float64ValueSlice converts a slice of float64 pointers into a slice of\n// float64 values\nfunc Float64ValueSlice(src []*float64) []float64 {\n\tdst := make([]float64, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// Float64Map converts a string map of float64 values into a string\n// map of float64 pointers\nfunc Float64Map(src map[string]float64) map[string]*float64 {\n\tdst := make(map[string]*float64)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// Float64ValueMap converts a string map of float64 pointers into a string\n// map of float64 values\nfunc Float64ValueMap(src map[string]*float64) map[string]float64 {\n\tdst := make(map[string]float64)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n\n// Time returns a pointer to the time.Time value passed in.\nfunc Time(v time.Time) *time.Time {\n\treturn &v\n}\n\n// TimeValue returns the value of the time.Time pointer passed in or\n// time.Time{} if the pointer is nil.\nfunc TimeValue(v *time.Time) time.Time {\n\tif v != nil {\n\t\treturn *v\n\t}\n\treturn time.Time{}\n}\n\n// SecondsTimeValue converts an int64 pointer to a time.Time value\n// representing seconds since Epoch or time.Time{} if the pointer is nil.\nfunc SecondsTimeValue(v *int64) time.Time {\n\tif v != nil {\n\t\treturn time.Unix((*v / 1000), 0)\n\t}\n\treturn time.Time{}\n}\n\n// MillisecondsTimeValue converts an int64 pointer to a time.Time value\n// representing milliseconds sinch Epoch or time.Time{} if the pointer is nil.\nfunc MillisecondsTimeValue(v *int64) time.Time {\n\tif v != nil {\n\t\treturn time.Unix(0, (*v * 1000000))\n\t}\n\treturn time.Time{}\n}\n\n// TimeUnixMilli returns a Unix timestamp in milliseconds from \"January 1, 1970 UTC\".\n// The result is undefined if the Unix time cannot be represented by an int64.\n// Which includes calling TimeUnixMilli on a zero Time is undefined.\n//\n// This utility is useful for service API's such as CloudWatch Logs which require\n// their unix time values to be in milliseconds.\n//\n// See Go stdlib https://golang.org/pkg/time/#Time.UnixNano for more information.\nfunc TimeUnixMilli(t time.Time) int64 {\n\treturn t.UnixNano() / int64(time.Millisecond/time.Nanosecond)\n}\n\n// TimeSlice converts a slice of time.Time values into a slice of\n// time.Time pointers\nfunc TimeSlice(src []time.Time) []*time.Time {\n\tdst := make([]*time.Time, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tdst[i] = &(src[i])\n\t}\n\treturn dst\n}\n\n// TimeValueSlice converts a slice of time.Time pointers into a slice of\n// time.Time values\nfunc TimeValueSlice(src []*time.Time) []time.Time {\n\tdst := make([]time.Time, len(src))\n\tfor i := 0; i < len(src); i++ {\n\t\tif src[i] != nil {\n\t\t\tdst[i] = *(src[i])\n\t\t}\n\t}\n\treturn dst\n}\n\n// TimeMap converts a string map of time.Time values into a string\n// map of time.Time pointers\nfunc TimeMap(src map[string]time.Time) map[string]*time.Time {\n\tdst := make(map[string]*time.Time)\n\tfor k, val := range src {\n\t\tv := val\n\t\tdst[k] = &v\n\t}\n\treturn dst\n}\n\n// TimeValueMap converts a string map of time.Time pointers into a string\n// map of time.Time values\nfunc TimeValueMap(src map[string]*time.Time) map[string]time.Time {\n\tdst := make(map[string]time.Time)\n\tfor k, val := range src {\n\t\tif val != nil {\n\t\t\tdst[k] = *val\n\t\t}\n\t}\n\treturn dst\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/corehandlers/awsinternal.go",
    "content": "// DO NOT EDIT\npackage corehandlers\n\nconst isAwsInternal = \"\""
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go",
    "content": "package corehandlers\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// Interface for matching types which also have a Len method.\ntype lener interface {\n\tLen() int\n}\n\n// BuildContentLengthHandler builds the content length of a request based on the body,\n// or will use the HTTPRequest.Header's \"Content-Length\" if defined. If unable\n// to determine request body length and no \"Content-Length\" was specified it will panic.\n//\n// The Content-Length will only be added to the request if the length of the body\n// is greater than 0. If the body is empty or the current `Content-Length`\n// header is <= 0, the header will also be stripped.\nvar BuildContentLengthHandler = request.NamedHandler{Name: \"core.BuildContentLengthHandler\", Fn: func(r *request.Request) {\n\tvar length int64\n\n\tif slength := r.HTTPRequest.Header.Get(\"Content-Length\"); slength != \"\" {\n\t\tlength, _ = strconv.ParseInt(slength, 10, 64)\n\t} else {\n\t\tif r.Body != nil {\n\t\t\tvar err error\n\t\t\tlength, err = aws.SeekerLen(r.Body)\n\t\t\tif err != nil {\n\t\t\t\tr.Error = awserr.New(request.ErrCodeSerialization, \"failed to get request body's length\", err)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\tif length > 0 {\n\t\tr.HTTPRequest.ContentLength = length\n\t\tr.HTTPRequest.Header.Set(\"Content-Length\", fmt.Sprintf(\"%d\", length))\n\t} else {\n\t\tr.HTTPRequest.ContentLength = 0\n\t\tr.HTTPRequest.Header.Del(\"Content-Length\")\n\t}\n}}\n\nvar reStatusCode = regexp.MustCompile(`^(\\d{3})`)\n\n// ValidateReqSigHandler is a request handler to ensure that the request's\n// signature doesn't expire before it is sent. This can happen when a request\n// is built and signed significantly before it is sent. Or significant delays\n// occur when retrying requests that would cause the signature to expire.\nvar ValidateReqSigHandler = request.NamedHandler{\n\tName: \"core.ValidateReqSigHandler\",\n\tFn: func(r *request.Request) {\n\t\t// Unsigned requests are not signed\n\t\tif r.Config.Credentials == credentials.AnonymousCredentials {\n\t\t\treturn\n\t\t}\n\n\t\tsignedTime := r.Time\n\t\tif !r.LastSignedAt.IsZero() {\n\t\t\tsignedTime = r.LastSignedAt\n\t\t}\n\n\t\t// 5 minutes to allow for some clock skew/delays in transmission.\n\t\t// Would be improved with aws/aws-sdk-go#423\n\t\tif signedTime.Add(5 * time.Minute).After(time.Now()) {\n\t\t\treturn\n\t\t}\n\n\t\tfmt.Println(\"request expired, resigning\")\n\t\tr.Sign()\n\t},\n}\n\n// SendHandler is a request handler to send service request using HTTP client.\nvar SendHandler = request.NamedHandler{\n\tName: \"core.SendHandler\",\n\tFn: func(r *request.Request) {\n\t\tsender := sendFollowRedirects\n\t\tif r.DisableFollowRedirects {\n\t\t\tsender = sendWithoutFollowRedirects\n\t\t}\n\n\t\tif request.NoBody == r.HTTPRequest.Body {\n\t\t\t// Strip off the request body if the NoBody reader was used as a\n\t\t\t// place holder for a request body. This prevents the SDK from\n\t\t\t// making requests with a request body when it would be invalid\n\t\t\t// to do so.\n\t\t\t//\n\t\t\t// Use a shallow copy of the http.Request to ensure the race condition\n\t\t\t// of transport on Body will not trigger\n\t\t\treqOrig, reqCopy := r.HTTPRequest, *r.HTTPRequest\n\t\t\treqCopy.Body = nil\n\t\t\tr.HTTPRequest = &reqCopy\n\t\t\tdefer func() {\n\t\t\t\tr.HTTPRequest = reqOrig\n\t\t\t}()\n\t\t}\n\n\t\tvar err error\n\t\tr.HTTPResponse, err = sender(r)\n\t\tif err != nil {\n\t\t\thandleSendError(r, err)\n\t\t}\n\t},\n}\n\nfunc sendFollowRedirects(r *request.Request) (*http.Response, error) {\n\treturn r.Config.HTTPClient.Do(r.HTTPRequest)\n}\n\nfunc sendWithoutFollowRedirects(r *request.Request) (*http.Response, error) {\n\ttransport := r.Config.HTTPClient.Transport\n\tif transport == nil {\n\t\ttransport = http.DefaultTransport\n\t}\n\n\treturn transport.RoundTrip(r.HTTPRequest)\n}\n\nfunc handleSendError(r *request.Request, err error) {\n\t// Prevent leaking if an HTTPResponse was returned. Clean up\n\t// the body.\n\tif r.HTTPResponse != nil {\n\t\tr.HTTPResponse.Body.Close()\n\t}\n\t// Capture the case where url.Error is returned for error processing\n\t// response. e.g. 301 without location header comes back as string\n\t// error and r.HTTPResponse is nil. Other URL redirect errors will\n\t// comeback in a similar method.\n\tif e, ok := err.(*url.Error); ok && e.Err != nil {\n\t\tif s := reStatusCode.FindStringSubmatch(e.Err.Error()); s != nil {\n\t\t\tcode, _ := strconv.ParseInt(s[1], 10, 64)\n\t\t\tr.HTTPResponse = &http.Response{\n\t\t\t\tStatusCode: int(code),\n\t\t\t\tStatus:     http.StatusText(int(code)),\n\t\t\t\tBody:       ioutil.NopCloser(bytes.NewReader([]byte{})),\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n\tif r.HTTPResponse == nil {\n\t\t// Add a dummy request response object to ensure the HTTPResponse\n\t\t// value is consistent.\n\t\tr.HTTPResponse = &http.Response{\n\t\t\tStatusCode: int(0),\n\t\t\tStatus:     http.StatusText(int(0)),\n\t\t\tBody:       ioutil.NopCloser(bytes.NewReader([]byte{})),\n\t\t}\n\t}\n\t// Catch all request errors, and let the default retrier determine\n\t// if the error is retryable.\n\tr.Error = awserr.New(request.ErrCodeRequestError, \"send request failed\", err)\n\n\t// Override the error with a context canceled error, if that was canceled.\n\tctx := r.Context()\n\tselect {\n\tcase <-ctx.Done():\n\t\tr.Error = awserr.New(request.CanceledErrorCode,\n\t\t\t\"request context canceled\", ctx.Err())\n\t\tr.Retryable = aws.Bool(false)\n\tdefault:\n\t}\n}\n\n// ValidateResponseHandler is a request handler to validate service response.\nvar ValidateResponseHandler = request.NamedHandler{Name: \"core.ValidateResponseHandler\", Fn: func(r *request.Request) {\n\tif r.HTTPResponse.StatusCode == 0 || r.HTTPResponse.StatusCode >= 300 {\n\t\t// this may be replaced by an UnmarshalError handler\n\t\tr.Error = awserr.New(\"UnknownError\", \"unknown error\", r.Error)\n\t}\n}}\n\n// AfterRetryHandler performs final checks to determine if the request should\n// be retried and how long to delay.\nvar AfterRetryHandler = request.NamedHandler{\n\tName: \"core.AfterRetryHandler\",\n\tFn: func(r *request.Request) {\n\t\t// If one of the other handlers already set the retry state\n\t\t// we don't want to override it based on the service's state\n\t\tif r.Retryable == nil || aws.BoolValue(r.Config.EnforceShouldRetryCheck) {\n\t\t\tr.Retryable = aws.Bool(r.ShouldRetry(r))\n\t\t}\n\n\t\tif r.WillRetry() {\n\t\t\tr.RetryDelay = r.RetryRules(r)\n\n\t\t\tif sleepFn := r.Config.SleepDelay; sleepFn != nil {\n\t\t\t\t// Support SleepDelay for backwards compatibility and testing\n\t\t\t\tsleepFn(r.RetryDelay)\n\t\t\t} else if err := aws.SleepWithContext(r.Context(), r.RetryDelay); err != nil {\n\t\t\t\tr.Error = awserr.New(request.CanceledErrorCode,\n\t\t\t\t\t\"request context canceled\", err)\n\t\t\t\tr.Retryable = aws.Bool(false)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// when the expired token exception occurs the credentials\n\t\t\t// need to be expired locally so that the next request to\n\t\t\t// get credentials will trigger a credentials refresh.\n\t\t\tif r.IsErrorExpired() {\n\t\t\t\tr.Config.Credentials.Expire()\n\t\t\t}\n\n\t\t\tr.RetryCount++\n\t\t\tr.Error = nil\n\t\t}\n\t}}\n\n// ValidateEndpointHandler is a request handler to validate a request had the\n// appropriate Region and Endpoint set. Will set r.Error if the endpoint or\n// region is not valid.\nvar ValidateEndpointHandler = request.NamedHandler{Name: \"core.ValidateEndpointHandler\", Fn: func(r *request.Request) {\n\tif r.ClientInfo.SigningRegion == \"\" && aws.StringValue(r.Config.Region) == \"\" {\n\t\tr.Error = aws.ErrMissingRegion\n\t} else if r.ClientInfo.Endpoint == \"\" {\n\t\t// Was any endpoint provided by the user, or one was derived by the\n\t\t// SDK's endpoint resolver?\n\t\tr.Error = aws.ErrMissingEndpoint\n\t}\n}}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go",
    "content": "package corehandlers\n\nimport \"github.com/aws/aws-sdk-go/aws/request\"\n\n// ValidateParametersHandler is a request handler to validate the input parameters.\n// Validating parameters only has meaning if done prior to the request being sent.\nvar ValidateParametersHandler = request.NamedHandler{Name: \"core.ValidateParametersHandler\", Fn: func(r *request.Request) {\n\tif !r.ParamsFilled() {\n\t\treturn\n\t}\n\n\tif v, ok := r.Params.(request.Validator); ok {\n\t\tif err := v.Validate(); err != nil {\n\t\t\tr.Error = err\n\t\t}\n\t}\n}}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go",
    "content": "package corehandlers\n\nimport (\n\t\"os\"\n\t\"runtime\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// SDKVersionUserAgentHandler is a request handler for adding the SDK Version\n// to the user agent.\nvar SDKVersionUserAgentHandler = request.NamedHandler{\n\tName: \"core.SDKVersionUserAgentHandler\",\n\tFn: request.MakeAddToUserAgentHandler(aws.SDKName, aws.SDKVersion,\n\t\truntime.Version(), runtime.GOOS, runtime.GOARCH),\n}\n\nconst execEnvVar = `AWS_EXECUTION_ENV`\nconst execEnvUAKey = `exec-env`\n\n// AddHostExecEnvUserAgentHander is a request handler appending the SDK's\n// execution environment to the user agent.\n//\n// If the environment variable AWS_EXECUTION_ENV is set, its value will be\n// appended to the user agent string.\nvar AddHostExecEnvUserAgentHander = request.NamedHandler{\n\tName: \"core.AddHostExecEnvUserAgentHander\",\n\tFn: func(r *request.Request) {\n\t\tv := os.Getenv(execEnvVar)\n\t\tif len(v) == 0 {\n\t\t\treturn\n\t\t}\n\n\t\trequest.AddToUserAgent(r, execEnvUAKey+\"/\"+v)\n\t},\n}\n\nvar AddAwsInternal = request.NamedHandler{\n\tName: \"core.AddAwsInternal\",\n\tFn: func(r *request.Request) {\n\t\tif len(isAwsInternal) == 0 {\n\t\t\treturn\n\t\t}\n\t\trequest.AddToUserAgent(r, isAwsInternal)\n\t},\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go",
    "content": "package credentials\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\nvar (\n\t// ErrNoValidProvidersFoundInChain Is returned when there are no valid\n\t// providers in the ChainProvider.\n\t//\n\t// This has been deprecated. For verbose error messaging set\n\t// aws.Config.CredentialsChainVerboseErrors to true.\n\tErrNoValidProvidersFoundInChain = awserr.New(\"NoCredentialProviders\",\n\t\t`no valid providers in chain. Deprecated.\n\tFor verbose messaging see aws.Config.CredentialsChainVerboseErrors`,\n\t\tnil)\n)\n\n// A ChainProvider will search for a provider which returns credentials\n// and cache that provider until Retrieve is called again.\n//\n// The ChainProvider provides a way of chaining multiple providers together\n// which will pick the first available using priority order of the Providers\n// in the list.\n//\n// If none of the Providers retrieve valid credentials Value, ChainProvider's\n// Retrieve() will return the error ErrNoValidProvidersFoundInChain.\n//\n// If a Provider is found which returns valid credentials Value ChainProvider\n// will cache that Provider for all calls to IsExpired(), until Retrieve is\n// called again.\n//\n// Example of ChainProvider to be used with an EnvProvider and EC2RoleProvider.\n// In this example EnvProvider will first check if any credentials are available\n// via the environment variables. If there are none ChainProvider will check\n// the next Provider in the list, EC2RoleProvider in this case. If EC2RoleProvider\n// does not return any credentials ChainProvider will return the error\n// ErrNoValidProvidersFoundInChain\n//\n//     creds := credentials.NewChainCredentials(\n//         []credentials.Provider{\n//             &credentials.EnvProvider{},\n//             &ec2rolecreds.EC2RoleProvider{\n//                 Client: ec2metadata.New(sess),\n//             },\n//         })\n//\n//     // Usage of ChainCredentials with aws.Config\n//     svc := ec2.New(session.Must(session.NewSession(&aws.Config{\n//       Credentials: creds,\n//     })))\n//\ntype ChainProvider struct {\n\tProviders     []Provider\n\tcurr          Provider\n\tVerboseErrors bool\n}\n\n// NewChainCredentials returns a pointer to a new Credentials object\n// wrapping a chain of providers.\nfunc NewChainCredentials(providers []Provider) *Credentials {\n\treturn NewCredentials(&ChainProvider{\n\t\tProviders: append([]Provider{}, providers...),\n\t})\n}\n\n// Retrieve returns the credentials value or error if no provider returned\n// without error.\n//\n// If a provider is found it will be cached and any calls to IsExpired()\n// will return the expired state of the cached provider.\nfunc (c *ChainProvider) Retrieve() (Value, error) {\n\tvar errs []error\n\tfor _, p := range c.Providers {\n\t\tcreds, err := p.Retrieve()\n\t\tif err == nil {\n\t\t\tc.curr = p\n\t\t\treturn creds, nil\n\t\t}\n\t\terrs = append(errs, err)\n\t}\n\tc.curr = nil\n\n\tvar err error\n\terr = ErrNoValidProvidersFoundInChain\n\tif c.VerboseErrors {\n\t\terr = awserr.NewBatchError(\"NoCredentialProviders\", \"no valid providers in chain\", errs)\n\t}\n\treturn Value{}, err\n}\n\n// IsExpired will returned the expired state of the currently cached provider\n// if there is one.  If there is no current provider, true will be returned.\nfunc (c *ChainProvider) IsExpired() bool {\n\tif c.curr != nil {\n\t\treturn c.curr.IsExpired()\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/context_background_go1.5.go",
    "content": "//go:build !go1.7\n// +build !go1.7\n\npackage credentials\n\nimport (\n\t\"github.com/aws/aws-sdk-go/internal/context\"\n)\n\n// backgroundContext returns a context that will never be canceled, has no\n// values, and no deadline. This context is used by the SDK to provide\n// backwards compatibility with non-context API operations and functionality.\n//\n// Go 1.6 and before:\n// This context function is equivalent to context.Background in the Go stdlib.\n//\n// Go 1.7 and later:\n// The context returned will be the value returned by context.Background()\n//\n// See https://golang.org/pkg/context for more information on Contexts.\nfunc backgroundContext() Context {\n\treturn context.BackgroundCtx\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/context_background_go1.7.go",
    "content": "//go:build go1.7\n// +build go1.7\n\npackage credentials\n\nimport \"context\"\n\n// backgroundContext returns a context that will never be canceled, has no\n// values, and no deadline. This context is used by the SDK to provide\n// backwards compatibility with non-context API operations and functionality.\n//\n// Go 1.6 and before:\n// This context function is equivalent to context.Background in the Go stdlib.\n//\n// Go 1.7 and later:\n// The context returned will be the value returned by context.Background()\n//\n// See https://golang.org/pkg/context for more information on Contexts.\nfunc backgroundContext() Context {\n\treturn context.Background()\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/context_go1.5.go",
    "content": "//go:build !go1.9\n// +build !go1.9\n\npackage credentials\n\nimport \"time\"\n\n// Context is an copy of the Go v1.7 stdlib's context.Context interface.\n// It is represented as a SDK interface to enable you to use the \"WithContext\"\n// API methods with Go v1.6 and a Context type such as golang.org/x/net/context.\n//\n// This type, aws.Context, and context.Context are equivalent.\n//\n// See https://golang.org/pkg/context on how to use contexts.\ntype Context interface {\n\t// Deadline returns the time when work done on behalf of this context\n\t// should be canceled. Deadline returns ok==false when no deadline is\n\t// set. Successive calls to Deadline return the same results.\n\tDeadline() (deadline time.Time, ok bool)\n\n\t// Done returns a channel that's closed when work done on behalf of this\n\t// context should be canceled. Done may return nil if this context can\n\t// never be canceled. Successive calls to Done return the same value.\n\tDone() <-chan struct{}\n\n\t// Err returns a non-nil error value after Done is closed. Err returns\n\t// Canceled if the context was canceled or DeadlineExceeded if the\n\t// context's deadline passed. No other values for Err are defined.\n\t// After Done is closed, successive calls to Err return the same value.\n\tErr() error\n\n\t// Value returns the value associated with this context for key, or nil\n\t// if no value is associated with key. Successive calls to Value with\n\t// the same key returns the same result.\n\t//\n\t// Use context values only for request-scoped data that transits\n\t// processes and API boundaries, not for passing optional parameters to\n\t// functions.\n\tValue(key interface{}) interface{}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/context_go1.9.go",
    "content": "//go:build go1.9\n// +build go1.9\n\npackage credentials\n\nimport \"context\"\n\n// Context is an alias of the Go stdlib's context.Context interface.\n// It can be used within the SDK's API operation \"WithContext\" methods.\n//\n// This type, aws.Context, and context.Context are equivalent.\n//\n// See https://golang.org/pkg/context on how to use contexts.\ntype Context = context.Context\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go",
    "content": "// Package credentials provides credential retrieval and management\n//\n// The Credentials is the primary method of getting access to and managing\n// credentials Values. Using dependency injection retrieval of the credential\n// values is handled by a object which satisfies the Provider interface.\n//\n// By default the Credentials.Get() will cache the successful result of a\n// Provider's Retrieve() until Provider.IsExpired() returns true. At which\n// point Credentials will call Provider's Retrieve() to get new credential Value.\n//\n// The Provider is responsible for determining when credentials Value have expired.\n// It is also important to note that Credentials will always call Retrieve the\n// first time Credentials.Get() is called.\n//\n// Example of using the environment variable credentials.\n//\n//     creds := credentials.NewEnvCredentials()\n//\n//     // Retrieve the credentials value\n//     credValue, err := creds.Get()\n//     if err != nil {\n//         // handle error\n//     }\n//\n// Example of forcing credentials to expire and be refreshed on the next Get().\n// This may be helpful to proactively expire credentials and refresh them sooner\n// than they would naturally expire on their own.\n//\n//     creds := credentials.NewCredentials(&ec2rolecreds.EC2RoleProvider{})\n//     creds.Expire()\n//     credsValue, err := creds.Get()\n//     // New credentials will be retrieved instead of from cache.\n//\n//\n// Custom Provider\n//\n// Each Provider built into this package also provides a helper method to generate\n// a Credentials pointer setup with the provider. To use a custom Provider just\n// create a type which satisfies the Provider interface and pass it to the\n// NewCredentials method.\n//\n//     type MyProvider struct{}\n//     func (m *MyProvider) Retrieve() (Value, error) {...}\n//     func (m *MyProvider) IsExpired() bool {...}\n//\n//     creds := credentials.NewCredentials(&MyProvider{})\n//     credValue, err := creds.Get()\n//\npackage credentials\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/internal/sync/singleflight\"\n)\n\n// AnonymousCredentials is an empty Credential object that can be used as\n// dummy placeholder credentials for requests that do not need signed.\n//\n// This Credentials can be used to configure a service to not sign requests\n// when making service API calls. For example, when accessing public\n// s3 buckets.\n//\n//     svc := s3.New(session.Must(session.NewSession(&aws.Config{\n//       Credentials: credentials.AnonymousCredentials,\n//     })))\n//     // Access public S3 buckets.\nvar AnonymousCredentials = NewStaticCredentials(\"\", \"\", \"\")\n\n// A Value is the AWS credentials value for individual credential fields.\ntype Value struct {\n\t// AWS Access key ID\n\tAccessKeyID string\n\n\t// AWS Secret Access Key\n\tSecretAccessKey string\n\n\t// AWS Session Token\n\tSessionToken string\n\n\t// Provider used to get credentials\n\tProviderName string\n}\n\n// HasKeys returns if the credentials Value has both AccessKeyID and\n// SecretAccessKey value set.\nfunc (v Value) HasKeys() bool {\n\treturn len(v.AccessKeyID) != 0 && len(v.SecretAccessKey) != 0\n}\n\n// A Provider is the interface for any component which will provide credentials\n// Value. A provider is required to manage its own Expired state, and what to\n// be expired means.\n//\n// The Provider should not need to implement its own mutexes, because\n// that will be managed by Credentials.\ntype Provider interface {\n\t// Retrieve returns nil if it successfully retrieved the value.\n\t// Error is returned if the value were not obtainable, or empty.\n\tRetrieve() (Value, error)\n\n\t// IsExpired returns if the credentials are no longer valid, and need\n\t// to be retrieved.\n\tIsExpired() bool\n}\n\n// ProviderWithContext is a Provider that can retrieve credentials with a Context\ntype ProviderWithContext interface {\n\tProvider\n\n\tRetrieveWithContext(Context) (Value, error)\n}\n\n// An Expirer is an interface that Providers can implement to expose the expiration\n// time, if known.  If the Provider cannot accurately provide this info,\n// it should not implement this interface.\ntype Expirer interface {\n\t// The time at which the credentials are no longer valid\n\tExpiresAt() time.Time\n}\n\n// An ErrorProvider is a stub credentials provider that always returns an error\n// this is used by the SDK when construction a known provider is not possible\n// due to an error.\ntype ErrorProvider struct {\n\t// The error to be returned from Retrieve\n\tErr error\n\n\t// The provider name to set on the Retrieved returned Value\n\tProviderName string\n}\n\n// Retrieve will always return the error that the ErrorProvider was created with.\nfunc (p ErrorProvider) Retrieve() (Value, error) {\n\treturn Value{ProviderName: p.ProviderName}, p.Err\n}\n\n// IsExpired will always return not expired.\nfunc (p ErrorProvider) IsExpired() bool {\n\treturn false\n}\n\n// A Expiry provides shared expiration logic to be used by credentials\n// providers to implement expiry functionality.\n//\n// The best method to use this struct is as an anonymous field within the\n// provider's struct.\n//\n// Example:\n//     type EC2RoleProvider struct {\n//         Expiry\n//         ...\n//     }\ntype Expiry struct {\n\t// The date/time when to expire on\n\texpiration time.Time\n\n\t// If set will be used by IsExpired to determine the current time.\n\t// Defaults to time.Now if CurrentTime is not set.  Available for testing\n\t// to be able to mock out the current time.\n\tCurrentTime func() time.Time\n}\n\n// SetExpiration sets the expiration IsExpired will check when called.\n//\n// If window is greater than 0 the expiration time will be reduced by the\n// window value.\n//\n// Using a window is helpful to trigger credentials to expire sooner than\n// the expiration time given to ensure no requests are made with expired\n// tokens.\nfunc (e *Expiry) SetExpiration(expiration time.Time, window time.Duration) {\n\t// Passed in expirations should have the monotonic clock values stripped.\n\t// This ensures time comparisons will be based on wall-time.\n\te.expiration = expiration.Round(0)\n\tif window > 0 {\n\t\te.expiration = e.expiration.Add(-window)\n\t}\n}\n\n// IsExpired returns if the credentials are expired.\nfunc (e *Expiry) IsExpired() bool {\n\tcurTime := e.CurrentTime\n\tif curTime == nil {\n\t\tcurTime = time.Now\n\t}\n\treturn e.expiration.Before(curTime())\n}\n\n// ExpiresAt returns the expiration time of the credential\nfunc (e *Expiry) ExpiresAt() time.Time {\n\treturn e.expiration\n}\n\n// A Credentials provides concurrency safe retrieval of AWS credentials Value.\n// Credentials will cache the credentials value until they expire. Once the value\n// expires the next Get will attempt to retrieve valid credentials.\n//\n// Credentials is safe to use across multiple goroutines and will manage the\n// synchronous state so the Providers do not need to implement their own\n// synchronization.\n//\n// The first Credentials.Get() will always call Provider.Retrieve() to get the\n// first instance of the credentials Value. All calls to Get() after that\n// will return the cached credentials Value until IsExpired() returns true.\ntype Credentials struct {\n\tsf singleflight.Group\n\n\tm        sync.RWMutex\n\tcreds    Value\n\tprovider Provider\n}\n\n// NewCredentials returns a pointer to a new Credentials with the provider set.\nfunc NewCredentials(provider Provider) *Credentials {\n\tc := &Credentials{\n\t\tprovider: provider,\n\t}\n\treturn c\n}\n\n// GetWithContext returns the credentials value, or error if the credentials\n// Value failed to be retrieved. Will return early if the passed in context is\n// canceled.\n//\n// Will return the cached credentials Value if it has not expired. If the\n// credentials Value has expired the Provider's Retrieve() will be called\n// to refresh the credentials.\n//\n// If Credentials.Expire() was called the credentials Value will be force\n// expired, and the next call to Get() will cause them to be refreshed.\n//\n// Passed in Context is equivalent to aws.Context, and context.Context.\nfunc (c *Credentials) GetWithContext(ctx Context) (Value, error) {\n\t// Check if credentials are cached, and not expired.\n\tselect {\n\tcase curCreds, ok := <-c.asyncIsExpired():\n\t\t// ok will only be true, of the credentials were not expired. ok will\n\t\t// be false and have no value if the credentials are expired.\n\t\tif ok {\n\t\t\treturn curCreds, nil\n\t\t}\n\tcase <-ctx.Done():\n\t\treturn Value{}, awserr.New(\"RequestCanceled\",\n\t\t\t\"request context canceled\", ctx.Err())\n\t}\n\n\t// Cannot pass context down to the actual retrieve, because the first\n\t// context would cancel the whole group when there is not direct\n\t// association of items in the group.\n\tresCh := c.sf.DoChan(\"\", func() (interface{}, error) {\n\t\treturn c.singleRetrieve(&suppressedContext{ctx})\n\t})\n\tselect {\n\tcase res := <-resCh:\n\t\treturn res.Val.(Value), res.Err\n\tcase <-ctx.Done():\n\t\treturn Value{}, awserr.New(\"RequestCanceled\",\n\t\t\t\"request context canceled\", ctx.Err())\n\t}\n}\n\nfunc (c *Credentials) singleRetrieve(ctx Context) (interface{}, error) {\n\tc.m.Lock()\n\tdefer c.m.Unlock()\n\n\tif curCreds := c.creds; !c.isExpiredLocked(curCreds) {\n\t\treturn curCreds, nil\n\t}\n\n\tvar creds Value\n\tvar err error\n\tif p, ok := c.provider.(ProviderWithContext); ok {\n\t\tcreds, err = p.RetrieveWithContext(ctx)\n\t} else {\n\t\tcreds, err = c.provider.Retrieve()\n\t}\n\tif err == nil {\n\t\tc.creds = creds\n\t}\n\n\treturn creds, err\n}\n\n// Get returns the credentials value, or error if the credentials Value failed\n// to be retrieved.\n//\n// Will return the cached credentials Value if it has not expired. If the\n// credentials Value has expired the Provider's Retrieve() will be called\n// to refresh the credentials.\n//\n// If Credentials.Expire() was called the credentials Value will be force\n// expired, and the next call to Get() will cause them to be refreshed.\nfunc (c *Credentials) Get() (Value, error) {\n\treturn c.GetWithContext(backgroundContext())\n}\n\n// Expire expires the credentials and forces them to be retrieved on the\n// next call to Get().\n//\n// This will override the Provider's expired state, and force Credentials\n// to call the Provider's Retrieve().\nfunc (c *Credentials) Expire() {\n\tc.m.Lock()\n\tdefer c.m.Unlock()\n\n\tc.creds = Value{}\n}\n\n// IsExpired returns if the credentials are no longer valid, and need\n// to be retrieved.\n//\n// If the Credentials were forced to be expired with Expire() this will\n// reflect that override.\nfunc (c *Credentials) IsExpired() bool {\n\tc.m.RLock()\n\tdefer c.m.RUnlock()\n\n\treturn c.isExpiredLocked(c.creds)\n}\n\n// asyncIsExpired returns a channel of credentials Value. If the channel is\n// closed the credentials are expired and credentials value are not empty.\nfunc (c *Credentials) asyncIsExpired() <-chan Value {\n\tch := make(chan Value, 1)\n\tgo func() {\n\t\tc.m.RLock()\n\t\tdefer c.m.RUnlock()\n\n\t\tif curCreds := c.creds; !c.isExpiredLocked(curCreds) {\n\t\t\tch <- curCreds\n\t\t}\n\n\t\tclose(ch)\n\t}()\n\n\treturn ch\n}\n\n// isExpiredLocked helper method wrapping the definition of expired credentials.\nfunc (c *Credentials) isExpiredLocked(creds interface{}) bool {\n\treturn creds == nil || creds.(Value) == Value{} || c.provider.IsExpired()\n}\n\n// ExpiresAt provides access to the functionality of the Expirer interface of\n// the underlying Provider, if it supports that interface.  Otherwise, it returns\n// an error.\nfunc (c *Credentials) ExpiresAt() (time.Time, error) {\n\tc.m.RLock()\n\tdefer c.m.RUnlock()\n\n\texpirer, ok := c.provider.(Expirer)\n\tif !ok {\n\t\treturn time.Time{}, awserr.New(\"ProviderNotExpirer\",\n\t\t\tfmt.Sprintf(\"provider %s does not support ExpiresAt()\",\n\t\t\t\tc.creds.ProviderName),\n\t\t\tnil)\n\t}\n\tif c.creds == (Value{}) {\n\t\t// set expiration time to the distant past\n\t\treturn time.Time{}, nil\n\t}\n\treturn expirer.ExpiresAt(), nil\n}\n\ntype suppressedContext struct {\n\tContext\n}\n\nfunc (s *suppressedContext) Deadline() (deadline time.Time, ok bool) {\n\treturn time.Time{}, false\n}\n\nfunc (s *suppressedContext) Done() <-chan struct{} {\n\treturn nil\n}\n\nfunc (s *suppressedContext) Err() error {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider.go",
    "content": "package ec2rolecreds\n\nimport (\n\t\"bufio\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/client\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/ec2metadata\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/internal/sdkuri\"\n)\n\n// ProviderName provides a name of EC2Role provider\nconst ProviderName = \"EC2RoleProvider\"\n\n// A EC2RoleProvider retrieves credentials from the EC2 service, and keeps track if\n// those credentials are expired.\n//\n// Example how to configure the EC2RoleProvider with custom http Client, Endpoint\n// or ExpiryWindow\n//\n//     p := &ec2rolecreds.EC2RoleProvider{\n//         // Pass in a custom timeout to be used when requesting\n//         // IAM EC2 Role credentials.\n//         Client: ec2metadata.New(sess, aws.Config{\n//             HTTPClient: &http.Client{Timeout: 10 * time.Second},\n//         }),\n//\n//         // Do not use early expiry of credentials. If a non zero value is\n//         // specified the credentials will be expired early\n//         ExpiryWindow: 0,\n//     }\ntype EC2RoleProvider struct {\n\tcredentials.Expiry\n\n\t// Required EC2Metadata client to use when connecting to EC2 metadata service.\n\tClient *ec2metadata.EC2Metadata\n\n\t// ExpiryWindow will allow the credentials to trigger refreshing prior to\n\t// the credentials actually expiring. This is beneficial so race conditions\n\t// with expiring credentials do not cause request to fail unexpectedly\n\t// due to ExpiredTokenException exceptions.\n\t//\n\t// So a ExpiryWindow of 10s would cause calls to IsExpired() to return true\n\t// 10 seconds before the credentials are actually expired.\n\t//\n\t// If ExpiryWindow is 0 or less it will be ignored.\n\tExpiryWindow time.Duration\n}\n\n// NewCredentials returns a pointer to a new Credentials object wrapping\n// the EC2RoleProvider. Takes a ConfigProvider to create a EC2Metadata client.\n// The ConfigProvider is satisfied by the session.Session type.\nfunc NewCredentials(c client.ConfigProvider, options ...func(*EC2RoleProvider)) *credentials.Credentials {\n\tp := &EC2RoleProvider{\n\t\tClient: ec2metadata.New(c),\n\t}\n\n\tfor _, option := range options {\n\t\toption(p)\n\t}\n\n\treturn credentials.NewCredentials(p)\n}\n\n// NewCredentialsWithClient returns a pointer to a new Credentials object wrapping\n// the EC2RoleProvider. Takes a EC2Metadata client to use when connecting to EC2\n// metadata service.\nfunc NewCredentialsWithClient(client *ec2metadata.EC2Metadata, options ...func(*EC2RoleProvider)) *credentials.Credentials {\n\tp := &EC2RoleProvider{\n\t\tClient: client,\n\t}\n\n\tfor _, option := range options {\n\t\toption(p)\n\t}\n\n\treturn credentials.NewCredentials(p)\n}\n\n// Retrieve retrieves credentials from the EC2 service.\n// Error will be returned if the request fails, or unable to extract\n// the desired credentials.\nfunc (m *EC2RoleProvider) Retrieve() (credentials.Value, error) {\n\treturn m.RetrieveWithContext(aws.BackgroundContext())\n}\n\n// RetrieveWithContext retrieves credentials from the EC2 service.\n// Error will be returned if the request fails, or unable to extract\n// the desired credentials.\nfunc (m *EC2RoleProvider) RetrieveWithContext(ctx credentials.Context) (credentials.Value, error) {\n\tcredsList, err := requestCredList(ctx, m.Client)\n\tif err != nil {\n\t\treturn credentials.Value{ProviderName: ProviderName}, err\n\t}\n\n\tif len(credsList) == 0 {\n\t\treturn credentials.Value{ProviderName: ProviderName}, awserr.New(\"EmptyEC2RoleList\", \"empty EC2 Role list\", nil)\n\t}\n\tcredsName := credsList[0]\n\n\troleCreds, err := requestCred(ctx, m.Client, credsName)\n\tif err != nil {\n\t\treturn credentials.Value{ProviderName: ProviderName}, err\n\t}\n\n\tm.SetExpiration(roleCreds.Expiration, m.ExpiryWindow)\n\n\treturn credentials.Value{\n\t\tAccessKeyID:     roleCreds.AccessKeyID,\n\t\tSecretAccessKey: roleCreds.SecretAccessKey,\n\t\tSessionToken:    roleCreds.Token,\n\t\tProviderName:    ProviderName,\n\t}, nil\n}\n\n// A ec2RoleCredRespBody provides the shape for unmarshaling credential\n// request responses.\ntype ec2RoleCredRespBody struct {\n\t// Success State\n\tExpiration      time.Time\n\tAccessKeyID     string\n\tSecretAccessKey string\n\tToken           string\n\n\t// Error state\n\tCode    string\n\tMessage string\n}\n\nconst iamSecurityCredsPath = \"iam/security-credentials/\"\n\n// requestCredList requests a list of credentials from the EC2 service.\n// If there are no credentials, or there is an error making or receiving the request\nfunc requestCredList(ctx aws.Context, client *ec2metadata.EC2Metadata) ([]string, error) {\n\tresp, err := client.GetMetadataWithContext(ctx, iamSecurityCredsPath)\n\tif err != nil {\n\t\treturn nil, awserr.New(\"EC2RoleRequestError\", \"no EC2 instance role found\", err)\n\t}\n\n\tcredsList := []string{}\n\ts := bufio.NewScanner(strings.NewReader(resp))\n\tfor s.Scan() {\n\t\tcredsList = append(credsList, s.Text())\n\t}\n\n\tif err := s.Err(); err != nil {\n\t\treturn nil, awserr.New(request.ErrCodeSerialization,\n\t\t\t\"failed to read EC2 instance role from metadata service\", err)\n\t}\n\n\treturn credsList, nil\n}\n\n// requestCred requests the credentials for a specific credentials from the EC2 service.\n//\n// If the credentials cannot be found, or there is an error reading the response\n// and error will be returned.\nfunc requestCred(ctx aws.Context, client *ec2metadata.EC2Metadata, credsName string) (ec2RoleCredRespBody, error) {\n\tresp, err := client.GetMetadataWithContext(ctx, sdkuri.PathJoin(iamSecurityCredsPath, credsName))\n\tif err != nil {\n\t\treturn ec2RoleCredRespBody{},\n\t\t\tawserr.New(\"EC2RoleRequestError\",\n\t\t\t\tfmt.Sprintf(\"failed to get %s EC2 instance role credentials\", credsName),\n\t\t\t\terr)\n\t}\n\n\trespCreds := ec2RoleCredRespBody{}\n\tif err := json.NewDecoder(strings.NewReader(resp)).Decode(&respCreds); err != nil {\n\t\treturn ec2RoleCredRespBody{},\n\t\t\tawserr.New(request.ErrCodeSerialization,\n\t\t\t\tfmt.Sprintf(\"failed to decode %s EC2 instance role credentials\", credsName),\n\t\t\t\terr)\n\t}\n\n\tif respCreds.Code != \"Success\" {\n\t\t// If an error code was returned something failed requesting the role.\n\t\treturn ec2RoleCredRespBody{}, awserr.New(respCreds.Code, respCreds.Message, nil)\n\t}\n\n\treturn respCreds, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/endpointcreds/provider.go",
    "content": "// Package endpointcreds provides support for retrieving credentials from an\n// arbitrary HTTP endpoint.\n//\n// The credentials endpoint Provider can receive both static and refreshable\n// credentials that will expire. Credentials are static when an \"Expiration\"\n// value is not provided in the endpoint's response.\n//\n// Static credentials will never expire once they have been retrieved. The format\n// of the static credentials response:\n//    {\n//        \"AccessKeyId\" : \"MUA...\",\n//        \"SecretAccessKey\" : \"/7PC5om....\",\n//    }\n//\n// Refreshable credentials will expire within the \"ExpiryWindow\" of the Expiration\n// value in the response. The format of the refreshable credentials response:\n//    {\n//        \"AccessKeyId\" : \"MUA...\",\n//        \"SecretAccessKey\" : \"/7PC5om....\",\n//        \"Token\" : \"AQoDY....=\",\n//        \"Expiration\" : \"2016-02-25T06:03:31Z\"\n//    }\n//\n// Errors should be returned in the following format and only returned with 400\n// or 500 HTTP status codes.\n//    {\n//        \"code\": \"ErrorCode\",\n//        \"message\": \"Helpful error message.\"\n//    }\npackage endpointcreds\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/client\"\n\t\"github.com/aws/aws-sdk-go/aws/client/metadata\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/json/jsonutil\"\n)\n\n// ProviderName is the name of the credentials provider.\nconst ProviderName = `CredentialsEndpointProvider`\n\n// Provider satisfies the credentials.Provider interface, and is a client to\n// retrieve credentials from an arbitrary endpoint.\ntype Provider struct {\n\tstaticCreds bool\n\tcredentials.Expiry\n\n\t// Requires a AWS Client to make HTTP requests to the endpoint with.\n\t// the Endpoint the request will be made to is provided by the aws.Config's\n\t// Endpoint value.\n\tClient *client.Client\n\n\t// ExpiryWindow will allow the credentials to trigger refreshing prior to\n\t// the credentials actually expiring. This is beneficial so race conditions\n\t// with expiring credentials do not cause request to fail unexpectedly\n\t// due to ExpiredTokenException exceptions.\n\t//\n\t// So a ExpiryWindow of 10s would cause calls to IsExpired() to return true\n\t// 10 seconds before the credentials are actually expired.\n\t//\n\t// If ExpiryWindow is 0 or less it will be ignored.\n\tExpiryWindow time.Duration\n\n\t// Optional authorization token value if set will be used as the value of\n\t// the Authorization header of the endpoint credential request.\n\t//\n\t// When constructed from environment, the provider will use the value of\n\t// AWS_CONTAINER_AUTHORIZATION_TOKEN environment variable as the token\n\t//\n\t// Will be overridden if AuthorizationTokenProvider is configured\n\tAuthorizationToken string\n\n\t// Optional auth provider func to dynamically load the auth token from a file\n\t// everytime a credential is retrieved\n\t//\n\t// When constructed from environment, the provider will read and use the content\n\t// of the file pointed to by AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE environment variable\n\t// as the auth token everytime credentials are retrieved\n\t//\n\t// Will override AuthorizationToken if configured\n\tAuthorizationTokenProvider AuthTokenProvider\n}\n\n// AuthTokenProvider defines an interface to dynamically load a value to be passed\n// for the Authorization header of a credentials request.\ntype AuthTokenProvider interface {\n\tGetToken() (string, error)\n}\n\n// TokenProviderFunc is a func type implementing AuthTokenProvider interface\n// and enables customizing token provider behavior\ntype TokenProviderFunc func() (string, error)\n\n// GetToken func retrieves auth token according to TokenProviderFunc implementation\nfunc (p TokenProviderFunc) GetToken() (string, error) {\n\treturn p()\n}\n\n// NewProviderClient returns a credentials Provider for retrieving AWS credentials\n// from arbitrary endpoint.\nfunc NewProviderClient(cfg aws.Config, handlers request.Handlers, endpoint string, options ...func(*Provider)) credentials.Provider {\n\tp := &Provider{\n\t\tClient: client.New(\n\t\t\tcfg,\n\t\t\tmetadata.ClientInfo{\n\t\t\t\tServiceName: \"CredentialsEndpoint\",\n\t\t\t\tEndpoint:    endpoint,\n\t\t\t},\n\t\t\thandlers,\n\t\t),\n\t}\n\n\tp.Client.Handlers.Unmarshal.PushBack(unmarshalHandler)\n\tp.Client.Handlers.UnmarshalError.PushBack(unmarshalError)\n\tp.Client.Handlers.Validate.Clear()\n\tp.Client.Handlers.Validate.PushBack(validateEndpointHandler)\n\n\tfor _, option := range options {\n\t\toption(p)\n\t}\n\n\treturn p\n}\n\n// NewCredentialsClient returns a pointer to a new Credentials object\n// wrapping the endpoint credentials Provider.\nfunc NewCredentialsClient(cfg aws.Config, handlers request.Handlers, endpoint string, options ...func(*Provider)) *credentials.Credentials {\n\treturn credentials.NewCredentials(NewProviderClient(cfg, handlers, endpoint, options...))\n}\n\n// IsExpired returns true if the credentials retrieved are expired, or not yet\n// retrieved.\nfunc (p *Provider) IsExpired() bool {\n\tif p.staticCreds {\n\t\treturn false\n\t}\n\treturn p.Expiry.IsExpired()\n}\n\n// Retrieve will attempt to request the credentials from the endpoint the Provider\n// was configured for. And error will be returned if the retrieval fails.\nfunc (p *Provider) Retrieve() (credentials.Value, error) {\n\treturn p.RetrieveWithContext(aws.BackgroundContext())\n}\n\n// RetrieveWithContext will attempt to request the credentials from the endpoint the Provider\n// was configured for. And error will be returned if the retrieval fails.\nfunc (p *Provider) RetrieveWithContext(ctx credentials.Context) (credentials.Value, error) {\n\tresp, err := p.getCredentials(ctx)\n\tif err != nil {\n\t\treturn credentials.Value{ProviderName: ProviderName},\n\t\t\tawserr.New(\"CredentialsEndpointError\", \"failed to load credentials\", err)\n\t}\n\n\tif resp.Expiration != nil {\n\t\tp.SetExpiration(*resp.Expiration, p.ExpiryWindow)\n\t} else {\n\t\tp.staticCreds = true\n\t}\n\n\treturn credentials.Value{\n\t\tAccessKeyID:     resp.AccessKeyID,\n\t\tSecretAccessKey: resp.SecretAccessKey,\n\t\tSessionToken:    resp.Token,\n\t\tProviderName:    ProviderName,\n\t}, nil\n}\n\ntype getCredentialsOutput struct {\n\tExpiration      *time.Time\n\tAccessKeyID     string\n\tSecretAccessKey string\n\tToken           string\n}\n\ntype errorOutput struct {\n\tCode    string `json:\"code\"`\n\tMessage string `json:\"message\"`\n}\n\nfunc (p *Provider) getCredentials(ctx aws.Context) (*getCredentialsOutput, error) {\n\top := &request.Operation{\n\t\tName:       \"GetCredentials\",\n\t\tHTTPMethod: \"GET\",\n\t}\n\n\tout := &getCredentialsOutput{}\n\treq := p.Client.NewRequest(op, nil, out)\n\treq.SetContext(ctx)\n\treq.HTTPRequest.Header.Set(\"Accept\", \"application/json\")\n\n\tauthToken := p.AuthorizationToken\n\tvar err error\n\tif p.AuthorizationTokenProvider != nil {\n\t\tauthToken, err = p.AuthorizationTokenProvider.GetToken()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"get authorization token: %v\", err)\n\t\t}\n\t}\n\n\tif strings.ContainsAny(authToken, \"\\r\\n\") {\n\t\treturn nil, fmt.Errorf(\"authorization token contains invalid newline sequence\")\n\t}\n\tif len(authToken) != 0 {\n\t\treq.HTTPRequest.Header.Set(\"Authorization\", authToken)\n\t}\n\n\treturn out, req.Send()\n}\n\nfunc validateEndpointHandler(r *request.Request) {\n\tif len(r.ClientInfo.Endpoint) == 0 {\n\t\tr.Error = aws.ErrMissingEndpoint\n\t}\n}\n\nfunc unmarshalHandler(r *request.Request) {\n\tdefer r.HTTPResponse.Body.Close()\n\n\tout := r.Data.(*getCredentialsOutput)\n\tif err := json.NewDecoder(r.HTTPResponse.Body).Decode(&out); err != nil {\n\t\tr.Error = awserr.New(request.ErrCodeSerialization,\n\t\t\t\"failed to decode endpoint credentials\",\n\t\t\terr,\n\t\t)\n\t}\n}\n\nfunc unmarshalError(r *request.Request) {\n\tdefer r.HTTPResponse.Body.Close()\n\n\tvar errOut errorOutput\n\terr := jsonutil.UnmarshalJSONError(&errOut, r.HTTPResponse.Body)\n\tif err != nil {\n\t\tr.Error = awserr.NewRequestFailure(\n\t\t\tawserr.New(request.ErrCodeSerialization,\n\t\t\t\t\"failed to decode error message\", err),\n\t\t\tr.HTTPResponse.StatusCode,\n\t\t\tr.RequestID,\n\t\t)\n\t\treturn\n\t}\n\n\t// Response body format is not consistent between metadata endpoints.\n\t// Grab the error message as a string and include that as the source error\n\tr.Error = awserr.New(errOut.Code, errOut.Message, nil)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go",
    "content": "package credentials\n\nimport (\n\t\"os\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\n// EnvProviderName provides a name of Env provider\nconst EnvProviderName = \"EnvProvider\"\n\nvar (\n\t// ErrAccessKeyIDNotFound is returned when the AWS Access Key ID can't be\n\t// found in the process's environment.\n\tErrAccessKeyIDNotFound = awserr.New(\"EnvAccessKeyNotFound\", \"AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY not found in environment\", nil)\n\n\t// ErrSecretAccessKeyNotFound is returned when the AWS Secret Access Key\n\t// can't be found in the process's environment.\n\tErrSecretAccessKeyNotFound = awserr.New(\"EnvSecretNotFound\", \"AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY not found in environment\", nil)\n)\n\n// A EnvProvider retrieves credentials from the environment variables of the\n// running process. Environment credentials never expire.\n//\n// Environment variables used:\n//\n// * Access Key ID:     AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY\n//\n// * Secret Access Key: AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY\ntype EnvProvider struct {\n\tretrieved bool\n}\n\n// NewEnvCredentials returns a pointer to a new Credentials object\n// wrapping the environment variable provider.\nfunc NewEnvCredentials() *Credentials {\n\treturn NewCredentials(&EnvProvider{})\n}\n\n// Retrieve retrieves the keys from the environment.\nfunc (e *EnvProvider) Retrieve() (Value, error) {\n\te.retrieved = false\n\n\tid := os.Getenv(\"AWS_ACCESS_KEY_ID\")\n\tif id == \"\" {\n\t\tid = os.Getenv(\"AWS_ACCESS_KEY\")\n\t}\n\n\tsecret := os.Getenv(\"AWS_SECRET_ACCESS_KEY\")\n\tif secret == \"\" {\n\t\tsecret = os.Getenv(\"AWS_SECRET_KEY\")\n\t}\n\n\tif id == \"\" {\n\t\treturn Value{ProviderName: EnvProviderName}, ErrAccessKeyIDNotFound\n\t}\n\n\tif secret == \"\" {\n\t\treturn Value{ProviderName: EnvProviderName}, ErrSecretAccessKeyNotFound\n\t}\n\n\te.retrieved = true\n\treturn Value{\n\t\tAccessKeyID:     id,\n\t\tSecretAccessKey: secret,\n\t\tSessionToken:    os.Getenv(\"AWS_SESSION_TOKEN\"),\n\t\tProviderName:    EnvProviderName,\n\t}, nil\n}\n\n// IsExpired returns if the credentials have been retrieved.\nfunc (e *EnvProvider) IsExpired() bool {\n\treturn !e.retrieved\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/example.ini",
    "content": "[default]\naws_access_key_id = accessKey\naws_secret_access_key = secret\naws_session_token = token\n\n[no_token]\naws_access_key_id = accessKey\naws_secret_access_key = secret\n\n[with_colon]\naws_access_key_id: accessKey\naws_secret_access_key: secret\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/processcreds/provider.go",
    "content": "/*\nPackage processcreds is a credential Provider to retrieve `credential_process`\ncredentials.\n\nWARNING: The following describes a method of sourcing credentials from an external\nprocess. This can potentially be dangerous, so proceed with caution. Other\ncredential providers should be preferred if at all possible. If using this\noption, you should make sure that the config file is as locked down as possible\nusing security best practices for your operating system.\n\nYou can use credentials from a `credential_process` in a variety of ways.\n\nOne way is to setup your shared config file, located in the default\nlocation, with the `credential_process` key and the command you want to be\ncalled. You also need to set the AWS_SDK_LOAD_CONFIG environment variable\n(e.g., `export AWS_SDK_LOAD_CONFIG=1`) to use the shared config file.\n\n    [default]\n    credential_process = /command/to/call\n\nCreating a new session will use the credential process to retrieve credentials.\nNOTE: If there are credentials in the profile you are using, the credential\nprocess will not be used.\n\n    // Initialize a session to load credentials.\n    sess, _ := session.NewSession(&aws.Config{\n        Region: aws.String(\"us-east-1\")},\n    )\n\n    // Create S3 service client to use the credentials.\n    svc := s3.New(sess)\n\nAnother way to use the `credential_process` method is by using\n`credentials.NewCredentials()` and providing a command to be executed to\nretrieve credentials:\n\n    // Create credentials using the ProcessProvider.\n    creds := processcreds.NewCredentials(\"/path/to/command\")\n\n    // Create service client value configured for credentials.\n    svc := s3.New(sess, &aws.Config{Credentials: creds})\n\nYou can set a non-default timeout for the `credential_process` with another\nconstructor, `credentials.NewCredentialsTimeout()`, providing the timeout. To\nset a one minute timeout:\n\n    // Create credentials using the ProcessProvider.\n    creds := processcreds.NewCredentialsTimeout(\n        \"/path/to/command\",\n        time.Duration(500) * time.Millisecond)\n\nIf you need more control, you can set any configurable options in the\ncredentials using one or more option functions. For example, you can set a two\nminute timeout, a credential duration of 60 minutes, and a maximum stdout\nbuffer size of 2k.\n\n    creds := processcreds.NewCredentials(\n        \"/path/to/command\",\n        func(opt *ProcessProvider) {\n            opt.Timeout = time.Duration(2) * time.Minute\n            opt.Duration = time.Duration(60) * time.Minute\n            opt.MaxBufSize = 2048\n        })\n\nYou can also use your own `exec.Cmd`:\n\n\t// Create an exec.Cmd\n\tmyCommand := exec.Command(\"/path/to/command\")\n\n\t// Create credentials using your exec.Cmd and custom timeout\n\tcreds := processcreds.NewCredentialsCommand(\n\t\tmyCommand,\n\t\tfunc(opt *processcreds.ProcessProvider) {\n\t\t\topt.Timeout = time.Duration(1) * time.Second\n\t\t})\n*/\npackage processcreds\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/exec\"\n\t\"runtime\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/internal/sdkio\"\n)\n\nconst (\n\t// ProviderName is the name this credentials provider will label any\n\t// returned credentials Value with.\n\tProviderName = `ProcessProvider`\n\n\t// ErrCodeProcessProviderParse error parsing process output\n\tErrCodeProcessProviderParse = \"ProcessProviderParseError\"\n\n\t// ErrCodeProcessProviderVersion version error in output\n\tErrCodeProcessProviderVersion = \"ProcessProviderVersionError\"\n\n\t// ErrCodeProcessProviderRequired required attribute missing in output\n\tErrCodeProcessProviderRequired = \"ProcessProviderRequiredError\"\n\n\t// ErrCodeProcessProviderExecution execution of command failed\n\tErrCodeProcessProviderExecution = \"ProcessProviderExecutionError\"\n\n\t// errMsgProcessProviderTimeout process took longer than allowed\n\terrMsgProcessProviderTimeout = \"credential process timed out\"\n\n\t// errMsgProcessProviderProcess process error\n\terrMsgProcessProviderProcess = \"error in credential_process\"\n\n\t// errMsgProcessProviderParse problem parsing output\n\terrMsgProcessProviderParse = \"parse failed of credential_process output\"\n\n\t// errMsgProcessProviderVersion version error in output\n\terrMsgProcessProviderVersion = \"wrong version in process output (not 1)\"\n\n\t// errMsgProcessProviderMissKey missing access key id in output\n\terrMsgProcessProviderMissKey = \"missing AccessKeyId in process output\"\n\n\t// errMsgProcessProviderMissSecret missing secret acess key in output\n\terrMsgProcessProviderMissSecret = \"missing SecretAccessKey in process output\"\n\n\t// errMsgProcessProviderPrepareCmd prepare of command failed\n\terrMsgProcessProviderPrepareCmd = \"failed to prepare command\"\n\n\t// errMsgProcessProviderEmptyCmd command must not be empty\n\terrMsgProcessProviderEmptyCmd = \"command must not be empty\"\n\n\t// errMsgProcessProviderPipe failed to initialize pipe\n\terrMsgProcessProviderPipe = \"failed to initialize pipe\"\n\n\t// DefaultDuration is the default amount of time in minutes that the\n\t// credentials will be valid for.\n\tDefaultDuration = time.Duration(15) * time.Minute\n\n\t// DefaultBufSize limits buffer size from growing to an enormous\n\t// amount due to a faulty process.\n\tDefaultBufSize = int(8 * sdkio.KibiByte)\n\n\t// DefaultTimeout default limit on time a process can run.\n\tDefaultTimeout = time.Duration(1) * time.Minute\n)\n\n// ProcessProvider satisfies the credentials.Provider interface, and is a\n// client to retrieve credentials from a process.\ntype ProcessProvider struct {\n\tstaticCreds bool\n\tcredentials.Expiry\n\toriginalCommand []string\n\n\t// Expiry duration of the credentials. Defaults to 15 minutes if not set.\n\tDuration time.Duration\n\n\t// ExpiryWindow will allow the credentials to trigger refreshing prior to\n\t// the credentials actually expiring. This is beneficial so race conditions\n\t// with expiring credentials do not cause request to fail unexpectedly\n\t// due to ExpiredTokenException exceptions.\n\t//\n\t// So a ExpiryWindow of 10s would cause calls to IsExpired() to return true\n\t// 10 seconds before the credentials are actually expired.\n\t//\n\t// If ExpiryWindow is 0 or less it will be ignored.\n\tExpiryWindow time.Duration\n\n\t// A string representing an os command that should return a JSON with\n\t// credential information.\n\tcommand *exec.Cmd\n\n\t// MaxBufSize limits memory usage from growing to an enormous\n\t// amount due to a faulty process.\n\tMaxBufSize int\n\n\t// Timeout limits the time a process can run.\n\tTimeout time.Duration\n}\n\n// NewCredentials returns a pointer to a new Credentials object wrapping the\n// ProcessProvider. The credentials will expire every 15 minutes by default.\nfunc NewCredentials(command string, options ...func(*ProcessProvider)) *credentials.Credentials {\n\tp := &ProcessProvider{\n\t\tcommand:    exec.Command(command),\n\t\tDuration:   DefaultDuration,\n\t\tTimeout:    DefaultTimeout,\n\t\tMaxBufSize: DefaultBufSize,\n\t}\n\n\tfor _, option := range options {\n\t\toption(p)\n\t}\n\n\treturn credentials.NewCredentials(p)\n}\n\n// NewCredentialsTimeout returns a pointer to a new Credentials object with\n// the specified command and timeout, and default duration and max buffer size.\nfunc NewCredentialsTimeout(command string, timeout time.Duration) *credentials.Credentials {\n\tp := NewCredentials(command, func(opt *ProcessProvider) {\n\t\topt.Timeout = timeout\n\t})\n\n\treturn p\n}\n\n// NewCredentialsCommand returns a pointer to a new Credentials object with\n// the specified command, and default timeout, duration and max buffer size.\nfunc NewCredentialsCommand(command *exec.Cmd, options ...func(*ProcessProvider)) *credentials.Credentials {\n\tp := &ProcessProvider{\n\t\tcommand:    command,\n\t\tDuration:   DefaultDuration,\n\t\tTimeout:    DefaultTimeout,\n\t\tMaxBufSize: DefaultBufSize,\n\t}\n\n\tfor _, option := range options {\n\t\toption(p)\n\t}\n\n\treturn credentials.NewCredentials(p)\n}\n\n// A CredentialProcessResponse is the AWS credentials format that must be\n// returned when executing an external credential_process.\ntype CredentialProcessResponse struct {\n\t// As of this writing, the Version key must be set to 1. This might\n\t// increment over time as the structure evolves.\n\tVersion int\n\n\t// The access key ID that identifies the temporary security credentials.\n\tAccessKeyID string `json:\"AccessKeyId\"`\n\n\t// The secret access key that can be used to sign requests.\n\tSecretAccessKey string\n\n\t// The token that users must pass to the service API to use the temporary credentials.\n\tSessionToken string\n\n\t// The date on which the current credentials expire.\n\tExpiration *time.Time\n}\n\n// Retrieve executes the 'credential_process' and returns the credentials.\nfunc (p *ProcessProvider) Retrieve() (credentials.Value, error) {\n\tout, err := p.executeCredentialProcess()\n\tif err != nil {\n\t\treturn credentials.Value{ProviderName: ProviderName}, err\n\t}\n\n\t// Serialize and validate response\n\tresp := &CredentialProcessResponse{}\n\tif err = json.Unmarshal(out, resp); err != nil {\n\t\treturn credentials.Value{ProviderName: ProviderName}, awserr.New(\n\t\t\tErrCodeProcessProviderParse,\n\t\t\tfmt.Sprintf(\"%s: %s\", errMsgProcessProviderParse, string(out)),\n\t\t\terr)\n\t}\n\n\tif resp.Version != 1 {\n\t\treturn credentials.Value{ProviderName: ProviderName}, awserr.New(\n\t\t\tErrCodeProcessProviderVersion,\n\t\t\terrMsgProcessProviderVersion,\n\t\t\tnil)\n\t}\n\n\tif len(resp.AccessKeyID) == 0 {\n\t\treturn credentials.Value{ProviderName: ProviderName}, awserr.New(\n\t\t\tErrCodeProcessProviderRequired,\n\t\t\terrMsgProcessProviderMissKey,\n\t\t\tnil)\n\t}\n\n\tif len(resp.SecretAccessKey) == 0 {\n\t\treturn credentials.Value{ProviderName: ProviderName}, awserr.New(\n\t\t\tErrCodeProcessProviderRequired,\n\t\t\terrMsgProcessProviderMissSecret,\n\t\t\tnil)\n\t}\n\n\t// Handle expiration\n\tp.staticCreds = resp.Expiration == nil\n\tif resp.Expiration != nil {\n\t\tp.SetExpiration(*resp.Expiration, p.ExpiryWindow)\n\t}\n\n\treturn credentials.Value{\n\t\tProviderName:    ProviderName,\n\t\tAccessKeyID:     resp.AccessKeyID,\n\t\tSecretAccessKey: resp.SecretAccessKey,\n\t\tSessionToken:    resp.SessionToken,\n\t}, nil\n}\n\n// IsExpired returns true if the credentials retrieved are expired, or not yet\n// retrieved.\nfunc (p *ProcessProvider) IsExpired() bool {\n\tif p.staticCreds {\n\t\treturn false\n\t}\n\treturn p.Expiry.IsExpired()\n}\n\n// prepareCommand prepares the command to be executed.\nfunc (p *ProcessProvider) prepareCommand() error {\n\n\tvar cmdArgs []string\n\tif runtime.GOOS == \"windows\" {\n\t\tcmdArgs = []string{\"cmd.exe\", \"/C\"}\n\t} else {\n\t\tcmdArgs = []string{\"sh\", \"-c\"}\n\t}\n\n\tif len(p.originalCommand) == 0 {\n\t\tp.originalCommand = make([]string, len(p.command.Args))\n\t\tcopy(p.originalCommand, p.command.Args)\n\n\t\t// check for empty command because it succeeds\n\t\tif len(strings.TrimSpace(p.originalCommand[0])) < 1 {\n\t\t\treturn awserr.New(\n\t\t\t\tErrCodeProcessProviderExecution,\n\t\t\t\tfmt.Sprintf(\n\t\t\t\t\t\"%s: %s\",\n\t\t\t\t\terrMsgProcessProviderPrepareCmd,\n\t\t\t\t\terrMsgProcessProviderEmptyCmd),\n\t\t\t\tnil)\n\t\t}\n\t}\n\n\tcmdArgs = append(cmdArgs, p.originalCommand...)\n\tp.command = exec.Command(cmdArgs[0], cmdArgs[1:]...)\n\tp.command.Env = os.Environ()\n\n\treturn nil\n}\n\n// executeCredentialProcess starts the credential process on the OS and\n// returns the results or an error.\nfunc (p *ProcessProvider) executeCredentialProcess() ([]byte, error) {\n\n\tif err := p.prepareCommand(); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Setup the pipes\n\toutReadPipe, outWritePipe, err := os.Pipe()\n\tif err != nil {\n\t\treturn nil, awserr.New(\n\t\t\tErrCodeProcessProviderExecution,\n\t\t\terrMsgProcessProviderPipe,\n\t\t\terr)\n\t}\n\n\tp.command.Stderr = os.Stderr    // display stderr on console for MFA\n\tp.command.Stdout = outWritePipe // get creds json on process's stdout\n\tp.command.Stdin = os.Stdin      // enable stdin for MFA\n\n\toutput := bytes.NewBuffer(make([]byte, 0, p.MaxBufSize))\n\n\tstdoutCh := make(chan error, 1)\n\tgo readInput(\n\t\tio.LimitReader(outReadPipe, int64(p.MaxBufSize)),\n\t\toutput,\n\t\tstdoutCh)\n\n\texecCh := make(chan error, 1)\n\tgo executeCommand(*p.command, execCh)\n\n\tfinished := false\n\tvar errors []error\n\tfor !finished {\n\t\tselect {\n\t\tcase readError := <-stdoutCh:\n\t\t\terrors = appendError(errors, readError)\n\t\t\tfinished = true\n\t\tcase execError := <-execCh:\n\t\t\terr := outWritePipe.Close()\n\t\t\terrors = appendError(errors, err)\n\t\t\terrors = appendError(errors, execError)\n\t\t\tif errors != nil {\n\t\t\t\treturn output.Bytes(), awserr.NewBatchError(\n\t\t\t\t\tErrCodeProcessProviderExecution,\n\t\t\t\t\terrMsgProcessProviderProcess,\n\t\t\t\t\terrors)\n\t\t\t}\n\t\tcase <-time.After(p.Timeout):\n\t\t\tfinished = true\n\t\t\treturn output.Bytes(), awserr.NewBatchError(\n\t\t\t\tErrCodeProcessProviderExecution,\n\t\t\t\terrMsgProcessProviderTimeout,\n\t\t\t\terrors) // errors can be nil\n\t\t}\n\t}\n\n\tout := output.Bytes()\n\n\tif runtime.GOOS == \"windows\" {\n\t\t// windows adds slashes to quotes\n\t\tout = []byte(strings.Replace(string(out), `\\\"`, `\"`, -1))\n\t}\n\n\treturn out, nil\n}\n\n// appendError conveniently checks for nil before appending slice\nfunc appendError(errors []error, err error) []error {\n\tif err != nil {\n\t\treturn append(errors, err)\n\t}\n\treturn errors\n}\n\nfunc executeCommand(cmd exec.Cmd, exec chan error) {\n\t// Start the command\n\terr := cmd.Start()\n\tif err == nil {\n\t\terr = cmd.Wait()\n\t}\n\n\texec <- err\n}\n\nfunc readInput(r io.Reader, w io.Writer, read chan error) {\n\ttee := io.TeeReader(r, w)\n\n\t_, err := ioutil.ReadAll(tee)\n\n\tif err == io.EOF {\n\t\terr = nil\n\t}\n\n\tread <- err // will only arrive here when write end of pipe is closed\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go",
    "content": "package credentials\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/internal/ini\"\n\t\"github.com/aws/aws-sdk-go/internal/shareddefaults\"\n)\n\n// SharedCredsProviderName provides a name of SharedCreds provider\nconst SharedCredsProviderName = \"SharedCredentialsProvider\"\n\nvar (\n\t// ErrSharedCredentialsHomeNotFound is emitted when the user directory cannot be found.\n\tErrSharedCredentialsHomeNotFound = awserr.New(\"UserHomeNotFound\", \"user home directory not found.\", nil)\n)\n\n// A SharedCredentialsProvider retrieves access key pair (access key ID,\n// secret access key, and session token if present) credentials from the current\n// user's home directory, and keeps track if those credentials are expired.\n//\n// Profile ini file example: $HOME/.aws/credentials\ntype SharedCredentialsProvider struct {\n\t// Path to the shared credentials file.\n\t//\n\t// If empty will look for \"AWS_SHARED_CREDENTIALS_FILE\" env variable. If the\n\t// env value is empty will default to current user's home directory.\n\t// Linux/OSX: \"$HOME/.aws/credentials\"\n\t// Windows:   \"%USERPROFILE%\\.aws\\credentials\"\n\tFilename string\n\n\t// AWS Profile to extract credentials from the shared credentials file. If empty\n\t// will default to environment variable \"AWS_PROFILE\" or \"default\" if\n\t// environment variable is also not set.\n\tProfile string\n\n\t// retrieved states if the credentials have been successfully retrieved.\n\tretrieved bool\n}\n\n// NewSharedCredentials returns a pointer to a new Credentials object\n// wrapping the Profile file provider.\nfunc NewSharedCredentials(filename, profile string) *Credentials {\n\treturn NewCredentials(&SharedCredentialsProvider{\n\t\tFilename: filename,\n\t\tProfile:  profile,\n\t})\n}\n\n// Retrieve reads and extracts the shared credentials from the current\n// users home directory.\nfunc (p *SharedCredentialsProvider) Retrieve() (Value, error) {\n\tp.retrieved = false\n\n\tfilename, err := p.filename()\n\tif err != nil {\n\t\treturn Value{ProviderName: SharedCredsProviderName}, err\n\t}\n\n\tcreds, err := loadProfile(filename, p.profile())\n\tif err != nil {\n\t\treturn Value{ProviderName: SharedCredsProviderName}, err\n\t}\n\n\tp.retrieved = true\n\treturn creds, nil\n}\n\n// IsExpired returns if the shared credentials have expired.\nfunc (p *SharedCredentialsProvider) IsExpired() bool {\n\treturn !p.retrieved\n}\n\n// loadProfiles loads from the file pointed to by shared credentials filename for profile.\n// The credentials retrieved from the profile will be returned or error. Error will be\n// returned if it fails to read from the file, or the data is invalid.\nfunc loadProfile(filename, profile string) (Value, error) {\n\tconfig, err := ini.OpenFile(filename)\n\tif err != nil {\n\t\treturn Value{ProviderName: SharedCredsProviderName}, awserr.New(\"SharedCredsLoad\", \"failed to load shared credentials file\", err)\n\t}\n\n\tiniProfile, ok := config.GetSection(profile)\n\tif !ok {\n\t\treturn Value{ProviderName: SharedCredsProviderName}, awserr.New(\"SharedCredsLoad\", \"failed to get profile\", nil)\n\t}\n\n\tid := iniProfile.String(\"aws_access_key_id\")\n\tif len(id) == 0 {\n\t\treturn Value{ProviderName: SharedCredsProviderName}, awserr.New(\"SharedCredsAccessKey\",\n\t\t\tfmt.Sprintf(\"shared credentials %s in %s did not contain aws_access_key_id\", profile, filename),\n\t\t\tnil)\n\t}\n\n\tsecret := iniProfile.String(\"aws_secret_access_key\")\n\tif len(secret) == 0 {\n\t\treturn Value{ProviderName: SharedCredsProviderName}, awserr.New(\"SharedCredsSecret\",\n\t\t\tfmt.Sprintf(\"shared credentials %s in %s did not contain aws_secret_access_key\", profile, filename),\n\t\t\tnil)\n\t}\n\n\t// Default to empty string if not found\n\ttoken := iniProfile.String(\"aws_session_token\")\n\n\treturn Value{\n\t\tAccessKeyID:     id,\n\t\tSecretAccessKey: secret,\n\t\tSessionToken:    token,\n\t\tProviderName:    SharedCredsProviderName,\n\t}, nil\n}\n\n// filename returns the filename to use to read AWS shared credentials.\n//\n// Will return an error if the user's home directory path cannot be found.\nfunc (p *SharedCredentialsProvider) filename() (string, error) {\n\tif len(p.Filename) != 0 {\n\t\treturn p.Filename, nil\n\t}\n\n\tif p.Filename = os.Getenv(\"AWS_SHARED_CREDENTIALS_FILE\"); len(p.Filename) != 0 {\n\t\treturn p.Filename, nil\n\t}\n\n\tif home := shareddefaults.UserHomeDir(); len(home) == 0 {\n\t\t// Backwards compatibility of home directly not found error being returned.\n\t\t// This error is too verbose, failure when opening the file would of been\n\t\t// a better error to return.\n\t\treturn \"\", ErrSharedCredentialsHomeNotFound\n\t}\n\n\tp.Filename = shareddefaults.SharedCredentialsFilename()\n\n\treturn p.Filename, nil\n}\n\n// profile returns the AWS shared credentials profile.  If empty will read\n// environment variable \"AWS_PROFILE\". If that is not set profile will\n// return \"default\".\nfunc (p *SharedCredentialsProvider) profile() string {\n\tif p.Profile == \"\" {\n\t\tp.Profile = os.Getenv(\"AWS_PROFILE\")\n\t}\n\tif p.Profile == \"\" {\n\t\tp.Profile = \"default\"\n\t}\n\n\treturn p.Profile\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/doc.go",
    "content": "// Package ssocreds provides a credential provider for retrieving temporary AWS credentials using an SSO access token.\n//\n// IMPORTANT: The provider in this package does not initiate or perform the AWS SSO login flow. The SDK provider\n// expects that you have already performed the SSO login flow using AWS CLI using the \"aws sso login\" command, or by\n// some other mechanism. The provider must find a valid non-expired access token for the AWS SSO user portal URL in\n// ~/.aws/sso/cache. If a cached token is not found, it is expired, or the file is malformed an error will be returned.\n//\n// Loading AWS SSO credentials with the AWS shared configuration file\n//\n// You can use configure AWS SSO credentials from the AWS shared configuration file by\n// providing the specifying the required keys in the profile:\n//\n//  sso_account_id\n//  sso_region\n//  sso_role_name\n//  sso_start_url\n//\n// For example, the following defines a profile \"devsso\" and specifies the AWS SSO parameters that defines the target\n// account, role, sign-on portal, and the region where the user portal is located. Note: all SSO arguments must be\n// provided, or an error will be returned.\n//\n//  [profile devsso]\n//  sso_start_url = https://my-sso-portal.awsapps.com/start\n//  sso_role_name = SSOReadOnlyRole\n//  sso_region = us-east-1\n//  sso_account_id = 123456789012\n//\n// Using the config module, you can load the AWS SDK shared configuration, and specify that this profile be used to\n// retrieve credentials. For example:\n//\n//  sess, err := session.NewSessionWithOptions(session.Options{\n//      SharedConfigState: session.SharedConfigEnable,\n//      Profile:           \"devsso\",\n//  })\n//  if err != nil {\n//      return err\n//  }\n//\n// Programmatically loading AWS SSO credentials directly\n//\n// You can programmatically construct the AWS SSO Provider in your application, and provide the necessary information\n// to load and retrieve temporary credentials using an access token from ~/.aws/sso/cache.\n//\n//  svc := sso.New(sess, &aws.Config{\n//      Region: aws.String(\"us-west-2\"), // Client Region must correspond to the AWS SSO user portal region\n//  })\n//\n//  provider := ssocreds.NewCredentialsWithClient(svc, \"123456789012\", \"SSOReadOnlyRole\", \"https://my-sso-portal.awsapps.com/start\")\n//\n//  credentials, err := provider.Get()\n//  if err != nil {\n//      return err\n//  }\n//\n// Additional Resources\n//\n// Configuring the AWS CLI to use AWS Single Sign-On: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html\n//\n// AWS Single Sign-On User Guide: https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html\npackage ssocreds\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os.go",
    "content": "//go:build !windows\n// +build !windows\n\npackage ssocreds\n\nimport \"os\"\n\nfunc getHomeDirectory() string {\n\treturn os.Getenv(\"HOME\")\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os_windows.go",
    "content": "package ssocreds\n\nimport \"os\"\n\nfunc getHomeDirectory() string {\n\treturn os.Getenv(\"USERPROFILE\")\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/provider.go",
    "content": "package ssocreds\n\nimport (\n\t\"crypto/sha1\"\n\t\"encoding/hex\"\n\t\"encoding/json\"\n\t\"io/ioutil\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/auth/bearer\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/client\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/service/sso\"\n\t\"github.com/aws/aws-sdk-go/service/sso/ssoiface\"\n)\n\n// ErrCodeSSOProviderInvalidToken is the code type that is returned if loaded token has expired or is otherwise invalid.\n// To refresh the SSO session run aws sso login with the corresponding profile.\nconst ErrCodeSSOProviderInvalidToken = \"SSOProviderInvalidToken\"\n\nconst invalidTokenMessage = \"the SSO session has expired or is invalid\"\n\nfunc init() {\n\tnowTime = time.Now\n\tdefaultCacheLocation = defaultCacheLocationImpl\n}\n\nvar nowTime func() time.Time\n\n// ProviderName is the name of the provider used to specify the source of credentials.\nconst ProviderName = \"SSOProvider\"\n\nvar defaultCacheLocation func() string\n\nfunc defaultCacheLocationImpl() string {\n\treturn filepath.Join(getHomeDirectory(), \".aws\", \"sso\", \"cache\")\n}\n\n// Provider is an AWS credential provider that retrieves temporary AWS credentials by exchanging an SSO login token.\ntype Provider struct {\n\tcredentials.Expiry\n\n\t// The Client which is configured for the AWS Region where the AWS SSO user portal is located.\n\tClient ssoiface.SSOAPI\n\n\t// The AWS account that is assigned to the user.\n\tAccountID string\n\n\t// The role name that is assigned to the user.\n\tRoleName string\n\n\t// The URL that points to the organization's AWS Single Sign-On (AWS SSO) user portal.\n\tStartURL string\n\n\t// The filepath the cached token will be retrieved from. If unset Provider will\n\t// use the startURL to determine the filepath at.\n\t//\n\t//    ~/.aws/sso/cache/<sha1-hex-encoded-startURL>.json\n\t//\n\t// If custom cached token filepath is used, the Provider's startUrl\n\t// parameter will be ignored.\n\tCachedTokenFilepath string\n\n\t// Used by the SSOCredentialProvider if a token configuration\n\t// profile is used in the shared config\n\tTokenProvider bearer.TokenProvider\n}\n\n// NewCredentials returns a new AWS Single Sign-On (AWS SSO) credential provider. The ConfigProvider is expected to be configured\n// for the AWS Region where the AWS SSO user portal is located.\nfunc NewCredentials(configProvider client.ConfigProvider, accountID, roleName, startURL string, optFns ...func(provider *Provider)) *credentials.Credentials {\n\treturn NewCredentialsWithClient(sso.New(configProvider), accountID, roleName, startURL, optFns...)\n}\n\n// NewCredentialsWithClient returns a new AWS Single Sign-On (AWS SSO) credential provider. The provided client is expected to be configured\n// for the AWS Region where the AWS SSO user portal is located.\nfunc NewCredentialsWithClient(client ssoiface.SSOAPI, accountID, roleName, startURL string, optFns ...func(provider *Provider)) *credentials.Credentials {\n\tp := &Provider{\n\t\tClient:    client,\n\t\tAccountID: accountID,\n\t\tRoleName:  roleName,\n\t\tStartURL:  startURL,\n\t}\n\n\tfor _, fn := range optFns {\n\t\tfn(p)\n\t}\n\n\treturn credentials.NewCredentials(p)\n}\n\n// Retrieve retrieves temporary AWS credentials from the configured Amazon Single Sign-On (AWS SSO) user portal\n// by exchanging the accessToken present in ~/.aws/sso/cache.\nfunc (p *Provider) Retrieve() (credentials.Value, error) {\n\treturn p.RetrieveWithContext(aws.BackgroundContext())\n}\n\n// RetrieveWithContext retrieves temporary AWS credentials from the configured Amazon Single Sign-On (AWS SSO) user portal\n// by exchanging the accessToken present in ~/.aws/sso/cache.\nfunc (p *Provider) RetrieveWithContext(ctx credentials.Context) (credentials.Value, error) {\n\tvar accessToken *string\n\tif p.TokenProvider != nil {\n\t\ttoken, err := p.TokenProvider.RetrieveBearerToken(ctx)\n\t\tif err != nil {\n\t\t\treturn credentials.Value{}, err\n\t\t}\n\t\taccessToken = &token.Value\n\t} else {\n\t\tif p.CachedTokenFilepath == \"\" {\n\t\t\tcachedTokenFilePath, err := getCachedFilePath(p.StartURL)\n\t\t\tif err != nil {\n\t\t\t\treturn credentials.Value{}, err\n\t\t\t}\n\t\t\tp.CachedTokenFilepath = cachedTokenFilePath\n\t\t}\n\n\t\ttokenFile, err := loadTokenFile(p.CachedTokenFilepath)\n\t\tif err != nil {\n\t\t\treturn credentials.Value{}, err\n\t\t}\n\t\taccessToken = &tokenFile.AccessToken\n\t}\n\n\toutput, err := p.Client.GetRoleCredentialsWithContext(ctx, &sso.GetRoleCredentialsInput{\n\t\tAccessToken: accessToken,\n\t\tAccountId:   &p.AccountID,\n\t\tRoleName:    &p.RoleName,\n\t})\n\tif err != nil {\n\t\treturn credentials.Value{}, err\n\t}\n\n\texpireTime := time.Unix(0, aws.Int64Value(output.RoleCredentials.Expiration)*int64(time.Millisecond)).UTC()\n\tp.SetExpiration(expireTime, 0)\n\n\treturn credentials.Value{\n\t\tAccessKeyID:     aws.StringValue(output.RoleCredentials.AccessKeyId),\n\t\tSecretAccessKey: aws.StringValue(output.RoleCredentials.SecretAccessKey),\n\t\tSessionToken:    aws.StringValue(output.RoleCredentials.SessionToken),\n\t\tProviderName:    ProviderName,\n\t}, nil\n}\n\nfunc getCachedFilePath(startUrl string) (string, error) {\n\thash := sha1.New()\n\t_, err := hash.Write([]byte(startUrl))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn filepath.Join(defaultCacheLocation(), strings.ToLower(hex.EncodeToString(hash.Sum(nil)))+\".json\"), nil\n}\n\ntype token struct {\n\tAccessToken string  `json:\"accessToken\"`\n\tExpiresAt   rfc3339 `json:\"expiresAt\"`\n\tRegion      string  `json:\"region,omitempty\"`\n\tStartURL    string  `json:\"startUrl,omitempty\"`\n}\n\nfunc (t token) Expired() bool {\n\treturn nowTime().Round(0).After(time.Time(t.ExpiresAt))\n}\n\nfunc loadTokenFile(cachedTokenPath string) (t token, err error) {\n\tfileBytes, err := ioutil.ReadFile(cachedTokenPath)\n\tif err != nil {\n\t\treturn token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, err)\n\t}\n\n\tif err := json.Unmarshal(fileBytes, &t); err != nil {\n\t\treturn token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, err)\n\t}\n\n\tif len(t.AccessToken) == 0 {\n\t\treturn token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, nil)\n\t}\n\n\tif t.Expired() {\n\t\treturn token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, nil)\n\t}\n\n\treturn t, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/sso_cached_token.go",
    "content": "package ssocreds\n\nimport (\n\t\"crypto/sha1\"\n\t\"encoding/hex\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"github.com/aws/aws-sdk-go/internal/shareddefaults\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar resolvedOsUserHomeDir = shareddefaults.UserHomeDir\n\n// StandardCachedTokenFilepath returns the filepath for the cached SSO token file, or\n// error if unable get derive the path. Key that will be used to compute a SHA1\n// value that is hex encoded.\n//\n// Derives the filepath using the Key as:\n//\n//\t~/.aws/sso/cache/<sha1-hex-encoded-key>.json\nfunc StandardCachedTokenFilepath(key string) (string, error) {\n\thomeDir := resolvedOsUserHomeDir()\n\tif len(homeDir) == 0 {\n\t\treturn \"\", fmt.Errorf(\"unable to get USER's home directory for cached token\")\n\t}\n\thash := sha1.New()\n\tif _, err := hash.Write([]byte(key)); err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to compute cached token filepath key SHA1 hash, %v\", err)\n\t}\n\n\tcacheFilename := strings.ToLower(hex.EncodeToString(hash.Sum(nil))) + \".json\"\n\n\treturn filepath.Join(homeDir, \".aws\", \"sso\", \"cache\", cacheFilename), nil\n}\n\ntype tokenKnownFields struct {\n\tAccessToken string   `json:\"accessToken,omitempty\"`\n\tExpiresAt   *rfc3339 `json:\"expiresAt,omitempty\"`\n\n\tRefreshToken string `json:\"refreshToken,omitempty\"`\n\tClientID     string `json:\"clientId,omitempty\"`\n\tClientSecret string `json:\"clientSecret,omitempty\"`\n}\n\ntype cachedToken struct {\n\ttokenKnownFields\n\tUnknownFields map[string]interface{} `json:\"-\"`\n}\n\n// MarshalJSON provides custom marshalling because the standard library Go marshaller ignores unknown/unspecified fields\n// when marshalling from a struct: https://pkg.go.dev/encoding/json#Marshal\n// This function adds some extra validation to the known fields and captures unknown fields.\nfunc (t cachedToken) MarshalJSON() ([]byte, error) {\n\tfields := map[string]interface{}{}\n\n\tsetTokenFieldString(fields, \"accessToken\", t.AccessToken)\n\tsetTokenFieldRFC3339(fields, \"expiresAt\", t.ExpiresAt)\n\n\tsetTokenFieldString(fields, \"refreshToken\", t.RefreshToken)\n\tsetTokenFieldString(fields, \"clientId\", t.ClientID)\n\tsetTokenFieldString(fields, \"clientSecret\", t.ClientSecret)\n\n\tfor k, v := range t.UnknownFields {\n\t\tif _, ok := fields[k]; ok {\n\t\t\treturn nil, fmt.Errorf(\"unknown token field %v, duplicates known field\", k)\n\t\t}\n\t\tfields[k] = v\n\t}\n\n\treturn json.Marshal(fields)\n}\n\nfunc setTokenFieldString(fields map[string]interface{}, key, value string) {\n\tif value == \"\" {\n\t\treturn\n\t}\n\tfields[key] = value\n}\nfunc setTokenFieldRFC3339(fields map[string]interface{}, key string, value *rfc3339) {\n\tif value == nil {\n\t\treturn\n\t}\n\tfields[key] = value\n}\n\n// UnmarshalJSON provides custom unmarshalling because the standard library Go unmarshaller ignores unknown/unspecified\n// fields when unmarshalling from a struct: https://pkg.go.dev/encoding/json#Unmarshal\n// This function adds some extra validation to the known fields and captures unknown fields.\nfunc (t *cachedToken) UnmarshalJSON(b []byte) error {\n\tvar fields map[string]interface{}\n\tif err := json.Unmarshal(b, &fields); err != nil {\n\t\treturn nil\n\t}\n\n\tt.UnknownFields = map[string]interface{}{}\n\n\tfor k, v := range fields {\n\t\tvar err error\n\t\tswitch k {\n\t\tcase \"accessToken\":\n\t\t\terr = getTokenFieldString(v, &t.AccessToken)\n\t\tcase \"expiresAt\":\n\t\t\terr = getTokenFieldRFC3339(v, &t.ExpiresAt)\n\t\tcase \"refreshToken\":\n\t\t\terr = getTokenFieldString(v, &t.RefreshToken)\n\t\tcase \"clientId\":\n\t\t\terr = getTokenFieldString(v, &t.ClientID)\n\t\tcase \"clientSecret\":\n\t\t\terr = getTokenFieldString(v, &t.ClientSecret)\n\t\tdefault:\n\t\t\tt.UnknownFields[k] = v\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"field %q, %v\", k, err)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc getTokenFieldString(v interface{}, value *string) error {\n\tvar ok bool\n\t*value, ok = v.(string)\n\tif !ok {\n\t\treturn fmt.Errorf(\"expect value to be string, got %T\", v)\n\t}\n\treturn nil\n}\n\nfunc getTokenFieldRFC3339(v interface{}, value **rfc3339) error {\n\tvar stringValue string\n\tif err := getTokenFieldString(v, &stringValue); err != nil {\n\t\treturn err\n\t}\n\n\ttimeValue, err := parseRFC3339(stringValue)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t*value = &timeValue\n\treturn nil\n}\n\nfunc loadCachedToken(filename string) (cachedToken, error) {\n\tfileBytes, err := ioutil.ReadFile(filename)\n\tif err != nil {\n\t\treturn cachedToken{}, fmt.Errorf(\"failed to read cached SSO token file, %v\", err)\n\t}\n\n\tvar t cachedToken\n\tif err := json.Unmarshal(fileBytes, &t); err != nil {\n\t\treturn cachedToken{}, fmt.Errorf(\"failed to parse cached SSO token file, %v\", err)\n\t}\n\n\tif len(t.AccessToken) == 0 || t.ExpiresAt == nil || time.Time(*t.ExpiresAt).IsZero() {\n\t\treturn cachedToken{}, fmt.Errorf(\n\t\t\t\"cached SSO token must contain accessToken and expiresAt fields\")\n\t}\n\n\treturn t, nil\n}\n\nfunc storeCachedToken(filename string, t cachedToken, fileMode os.FileMode) (err error) {\n\ttmpFilename := filename + \".tmp-\" + strconv.FormatInt(nowTime().UnixNano(), 10)\n\tif err := writeCacheFile(tmpFilename, fileMode, t); err != nil {\n\t\treturn err\n\t}\n\n\tif err := os.Rename(tmpFilename, filename); err != nil {\n\t\treturn fmt.Errorf(\"failed to replace old cached SSO token file, %v\", err)\n\t}\n\n\treturn nil\n}\n\nfunc writeCacheFile(filename string, fileMode os.FileMode, t cachedToken) (err error) {\n\tvar f *os.File\n\tf, err = os.OpenFile(filename, os.O_CREATE|os.O_TRUNC|os.O_RDWR, fileMode)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create cached SSO token file %v\", err)\n\t}\n\n\tdefer func() {\n\t\tcloseErr := f.Close()\n\t\tif err == nil && closeErr != nil {\n\t\t\terr = fmt.Errorf(\"failed to close cached SSO token file, %v\", closeErr)\n\t\t}\n\t}()\n\n\tencoder := json.NewEncoder(f)\n\n\tif err = encoder.Encode(t); err != nil {\n\t\treturn fmt.Errorf(\"failed to serialize cached SSO token, %v\", err)\n\t}\n\n\treturn nil\n}\n\ntype rfc3339 time.Time\n\n// UnmarshalJSON decode rfc3339 from JSON format\nfunc (r *rfc3339) UnmarshalJSON(bytes []byte) error {\n\tvar value string\n\tvar err error\n\n\tif err = json.Unmarshal(bytes, &value); err != nil {\n\t\treturn err\n\t}\n\n\t*r, err = parseRFC3339(value)\n\treturn err\n}\n\nfunc parseRFC3339(v string) (rfc3339, error) {\n\tparsed, err := time.Parse(time.RFC3339, v)\n\tif err != nil {\n\t\treturn rfc3339{}, fmt.Errorf(\"expected RFC3339 timestamp: %v\", err)\n\t}\n\n\treturn rfc3339(parsed), nil\n}\n\n// MarshalJSON encode rfc3339 to JSON format time\nfunc (r *rfc3339) MarshalJSON() ([]byte, error) {\n\tvalue := time.Time(*r).Format(time.RFC3339)\n\n\t// Use JSON unmarshal to unescape the quoted value making use of JSON's\n\t// quoting rules.\n\treturn json.Marshal(value)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/token_provider.go",
    "content": "package ssocreds\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/auth/bearer\"\n\t\"github.com/aws/aws-sdk-go/service/ssooidc\"\n)\n\n// CreateTokenAPIClient provides the interface for the SSOTokenProvider's API\n// client for calling CreateToken operation to refresh the SSO token.\ntype CreateTokenAPIClient interface {\n\tCreateToken(input *ssooidc.CreateTokenInput) (*ssooidc.CreateTokenOutput, error)\n}\n\n// SSOTokenProviderOptions provides the options for configuring the\n// SSOTokenProvider.\ntype SSOTokenProviderOptions struct {\n\t// Client that can be overridden\n\tClient CreateTokenAPIClient\n\n\t// The path the file containing the cached SSO token will be read from.\n\t// Initialized the NewSSOTokenProvider's cachedTokenFilepath parameter.\n\tCachedTokenFilepath string\n}\n\n// SSOTokenProvider provides a utility for refreshing SSO AccessTokens for\n// Bearer Authentication. The SSOTokenProvider can only be used to refresh\n// already cached SSO Tokens. This utility cannot perform the initial SSO\n// create token.\n//\n// The initial SSO create token should be preformed with the AWS CLI before the\n// Go application using the SSOTokenProvider will need to retrieve the SSO\n// token. If the AWS CLI has not created the token cache file, this provider\n// will return an error when attempting to retrieve the cached token.\n//\n// This provider will attempt to refresh the cached SSO token periodically if\n// needed when RetrieveBearerToken is called.\n//\n// A utility such as the AWS CLI must be used to initially create the SSO\n// session and cached token file.\n// https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html\ntype SSOTokenProvider struct {\n\toptions SSOTokenProviderOptions\n}\n\n// NewSSOTokenProvider returns an initialized SSOTokenProvider that will\n// periodically refresh the SSO token cached stored in the cachedTokenFilepath.\n// The cachedTokenFilepath file's content will be rewritten by the token\n// provider when the token is refreshed.\n//\n// The client must be configured for the AWS region the SSO token was created for.\nfunc NewSSOTokenProvider(client CreateTokenAPIClient, cachedTokenFilepath string, optFns ...func(o *SSOTokenProviderOptions)) *SSOTokenProvider {\n\toptions := SSOTokenProviderOptions{\n\t\tClient:              client,\n\t\tCachedTokenFilepath: cachedTokenFilepath,\n\t}\n\tfor _, fn := range optFns {\n\t\tfn(&options)\n\t}\n\n\tprovider := &SSOTokenProvider{\n\t\toptions: options,\n\t}\n\n\treturn provider\n}\n\n// RetrieveBearerToken returns the SSO token stored in the cachedTokenFilepath\n// the SSOTokenProvider was created with. If the token has expired\n// RetrieveBearerToken will attempt to refresh it. If the token cannot be\n// refreshed or is not present an error will be returned.\n//\n// A utility such as the AWS CLI must be used to initially create the SSO\n// session and cached token file. https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html\nfunc (p *SSOTokenProvider) RetrieveBearerToken(ctx aws.Context) (bearer.Token, error) {\n\tcachedToken, err := loadCachedToken(p.options.CachedTokenFilepath)\n\tif err != nil {\n\t\treturn bearer.Token{}, err\n\t}\n\n\tif cachedToken.ExpiresAt != nil && nowTime().After(time.Time(*cachedToken.ExpiresAt)) {\n\t\tcachedToken, err = p.refreshToken(cachedToken)\n\t\tif err != nil {\n\t\t\treturn bearer.Token{}, fmt.Errorf(\"refresh cached SSO token failed, %v\", err)\n\t\t}\n\t}\n\n\texpiresAt := toTime((*time.Time)(cachedToken.ExpiresAt))\n\treturn bearer.Token{\n\t\tValue:     cachedToken.AccessToken,\n\t\tCanExpire: !expiresAt.IsZero(),\n\t\tExpires:   expiresAt,\n\t}, nil\n}\n\nfunc (p *SSOTokenProvider) refreshToken(token cachedToken) (cachedToken, error) {\n\tif token.ClientSecret == \"\" || token.ClientID == \"\" || token.RefreshToken == \"\" {\n\t\treturn cachedToken{}, fmt.Errorf(\"cached SSO token is expired, or not present, and cannot be refreshed\")\n\t}\n\n\tcreateResult, err := p.options.Client.CreateToken(&ssooidc.CreateTokenInput{\n\t\tClientId:     &token.ClientID,\n\t\tClientSecret: &token.ClientSecret,\n\t\tRefreshToken: &token.RefreshToken,\n\t\tGrantType:    aws.String(\"refresh_token\"),\n\t})\n\tif err != nil {\n\t\treturn cachedToken{}, fmt.Errorf(\"unable to refresh SSO token, %v\", err)\n\t}\n\tif createResult.ExpiresIn == nil {\n\t\treturn cachedToken{}, fmt.Errorf(\"missing required field ExpiresIn\")\n\t}\n\tif createResult.AccessToken == nil {\n\t\treturn cachedToken{}, fmt.Errorf(\"missing required field AccessToken\")\n\t}\n\tif createResult.RefreshToken == nil {\n\t\treturn cachedToken{}, fmt.Errorf(\"missing required field RefreshToken\")\n\t}\n\n\texpiresAt := nowTime().Add(time.Duration(*createResult.ExpiresIn) * time.Second)\n\n\ttoken.AccessToken = *createResult.AccessToken\n\ttoken.ExpiresAt = (*rfc3339)(&expiresAt)\n\ttoken.RefreshToken = *createResult.RefreshToken\n\n\tfileInfo, err := os.Stat(p.options.CachedTokenFilepath)\n\tif err != nil {\n\t\treturn cachedToken{}, fmt.Errorf(\"failed to stat cached SSO token file %v\", err)\n\t}\n\n\tif err = storeCachedToken(p.options.CachedTokenFilepath, token, fileInfo.Mode()); err != nil {\n\t\treturn cachedToken{}, fmt.Errorf(\"unable to cache refreshed SSO token, %v\", err)\n\t}\n\n\treturn token, nil\n}\n\nfunc toTime(p *time.Time) (v time.Time) {\n\tif p == nil {\n\t\treturn v\n\t}\n\n\treturn *p\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go",
    "content": "package credentials\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\n// StaticProviderName provides a name of Static provider\nconst StaticProviderName = \"StaticProvider\"\n\nvar (\n\t// ErrStaticCredentialsEmpty is emitted when static credentials are empty.\n\tErrStaticCredentialsEmpty = awserr.New(\"EmptyStaticCreds\", \"static credentials are empty\", nil)\n)\n\n// A StaticProvider is a set of credentials which are set programmatically,\n// and will never expire.\ntype StaticProvider struct {\n\tValue\n}\n\n// NewStaticCredentials returns a pointer to a new Credentials object\n// wrapping a static credentials value provider. Token is only required\n// for temporary security credentials retrieved via STS, otherwise an empty\n// string can be passed for this parameter.\nfunc NewStaticCredentials(id, secret, token string) *Credentials {\n\treturn NewCredentials(&StaticProvider{Value: Value{\n\t\tAccessKeyID:     id,\n\t\tSecretAccessKey: secret,\n\t\tSessionToken:    token,\n\t}})\n}\n\n// NewStaticCredentialsFromCreds returns a pointer to a new Credentials object\n// wrapping the static credentials value provide. Same as NewStaticCredentials\n// but takes the creds Value instead of individual fields\nfunc NewStaticCredentialsFromCreds(creds Value) *Credentials {\n\treturn NewCredentials(&StaticProvider{Value: creds})\n}\n\n// Retrieve returns the credentials or error if the credentials are invalid.\nfunc (s *StaticProvider) Retrieve() (Value, error) {\n\tif s.AccessKeyID == \"\" || s.SecretAccessKey == \"\" {\n\t\treturn Value{ProviderName: StaticProviderName}, ErrStaticCredentialsEmpty\n\t}\n\n\tif len(s.Value.ProviderName) == 0 {\n\t\ts.Value.ProviderName = StaticProviderName\n\t}\n\treturn s.Value, nil\n}\n\n// IsExpired returns if the credentials are expired.\n//\n// For StaticProvider, the credentials never expired.\nfunc (s *StaticProvider) IsExpired() bool {\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go",
    "content": "/*\nPackage stscreds are credential Providers to retrieve STS AWS credentials.\n\nSTS provides multiple ways to retrieve credentials which can be used when making\nfuture AWS service API operation calls.\n\nThe SDK will ensure that per instance of credentials.Credentials all requests\nto refresh the credentials will be synchronized. But, the SDK is unable to\nensure synchronous usage of the AssumeRoleProvider if the value is shared\nbetween multiple Credentials, Sessions or service clients.\n\n# Assume Role\n\nTo assume an IAM role using STS with the SDK you can create a new Credentials\nwith the SDKs's stscreds package.\n\n\t// Initial credentials loaded from SDK's default credential chain. Such as\n\t// the environment, shared credentials (~/.aws/credentials), or EC2 Instance\n\t// Role. These credentials will be used to to make the STS Assume Role API.\n\tsess := session.Must(session.NewSession())\n\n\t// Create the credentials from AssumeRoleProvider to assume the role\n\t// referenced by the \"myRoleARN\" ARN.\n\tcreds := stscreds.NewCredentials(sess, \"myRoleArn\")\n\n\t// Create service client value configured for credentials\n\t// from assumed role.\n\tsvc := s3.New(sess, &aws.Config{Credentials: creds})\n\n# Assume Role with static MFA Token\n\nTo assume an IAM role with a MFA token you can either specify a MFA token code\ndirectly or provide a function to prompt the user each time the credentials\nneed to refresh the role's credentials. Specifying the TokenCode should be used\nfor short lived operations that will not need to be refreshed, and when you do\nnot want to have direct control over the user provides their MFA token.\n\nWith TokenCode the AssumeRoleProvider will be not be able to refresh the role's\ncredentials.\n\n\t// Create the credentials from AssumeRoleProvider to assume the role\n\t// referenced by the \"myRoleARN\" ARN using the MFA token code provided.\n\tcreds := stscreds.NewCredentials(sess, \"myRoleArn\", func(p *stscreds.AssumeRoleProvider) {\n\t\tp.SerialNumber = aws.String(\"myTokenSerialNumber\")\n\t\tp.TokenCode = aws.String(\"00000000\")\n\t})\n\n\t// Create service client value configured for credentials\n\t// from assumed role.\n\tsvc := s3.New(sess, &aws.Config{Credentials: creds})\n\n# Assume Role with MFA Token Provider\n\nTo assume an IAM role with MFA for longer running tasks where the credentials\nmay need to be refreshed setting the TokenProvider field of AssumeRoleProvider\nwill allow the credential provider to prompt for new MFA token code when the\nrole's credentials need to be refreshed.\n\nThe StdinTokenProvider function is available to prompt on stdin to retrieve\nthe MFA token code from the user. You can also implement custom prompts by\nsatisfing the TokenProvider function signature.\n\nUsing StdinTokenProvider with multiple AssumeRoleProviders, or Credentials will\nhave undesirable results as the StdinTokenProvider will not be synchronized. A\nsingle Credentials with an AssumeRoleProvider can be shared safely.\n\n\t// Create the credentials from AssumeRoleProvider to assume the role\n\t// referenced by the \"myRoleARN\" ARN. Prompting for MFA token from stdin.\n\tcreds := stscreds.NewCredentials(sess, \"myRoleArn\", func(p *stscreds.AssumeRoleProvider) {\n\t\tp.SerialNumber = aws.String(\"myTokenSerialNumber\")\n\t\tp.TokenProvider = stscreds.StdinTokenProvider\n\t})\n\n\t// Create service client value configured for credentials\n\t// from assumed role.\n\tsvc := s3.New(sess, &aws.Config{Credentials: creds})\n*/\npackage stscreds\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/client\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/internal/sdkrand\"\n\t\"github.com/aws/aws-sdk-go/service/sts\"\n)\n\n// StdinTokenProvider will prompt on stderr and read from stdin for a string value.\n// An error is returned if reading from stdin fails.\n//\n// Use this function to read MFA tokens from stdin. The function makes no attempt\n// to make atomic prompts from stdin across multiple gorouties.\n//\n// Using StdinTokenProvider with multiple AssumeRoleProviders, or Credentials will\n// have undesirable results as the StdinTokenProvider will not be synchronized. A\n// single Credentials with an AssumeRoleProvider can be shared safely\n//\n// Will wait forever until something is provided on the stdin.\nfunc StdinTokenProvider() (string, error) {\n\tvar v string\n\tfmt.Fprintf(os.Stderr, \"Assume Role MFA token code: \")\n\t_, err := fmt.Scanln(&v)\n\n\treturn v, err\n}\n\n// ProviderName provides a name of AssumeRole provider\nconst ProviderName = \"AssumeRoleProvider\"\n\n// AssumeRoler represents the minimal subset of the STS client API used by this provider.\ntype AssumeRoler interface {\n\tAssumeRole(input *sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error)\n}\n\ntype assumeRolerWithContext interface {\n\tAssumeRoleWithContext(aws.Context, *sts.AssumeRoleInput, ...request.Option) (*sts.AssumeRoleOutput, error)\n}\n\n// DefaultDuration is the default amount of time in minutes that the credentials\n// will be valid for.\nvar DefaultDuration = time.Duration(15) * time.Minute\n\n// AssumeRoleProvider retrieves temporary credentials from the STS service, and\n// keeps track of their expiration time.\n//\n// This credential provider will be used by the SDKs default credential change\n// when shared configuration is enabled, and the shared config or shared credentials\n// file configure assume role. See Session docs for how to do this.\n//\n// AssumeRoleProvider does not provide any synchronization and it is not safe\n// to share this value across multiple Credentials, Sessions, or service clients\n// without also sharing the same Credentials instance.\ntype AssumeRoleProvider struct {\n\tcredentials.Expiry\n\n\t// STS client to make assume role request with.\n\tClient AssumeRoler\n\n\t// Role to be assumed.\n\tRoleARN string\n\n\t// Session name, if you wish to reuse the credentials elsewhere.\n\tRoleSessionName string\n\n\t// Optional, you can pass tag key-value pairs to your session. These tags are called session tags.\n\tTags []*sts.Tag\n\n\t// A list of keys for session tags that you want to set as transitive.\n\t// If you set a tag key as transitive, the corresponding key and value passes to subsequent sessions in a role chain.\n\tTransitiveTagKeys []*string\n\n\t// Expiry duration of the STS credentials. Defaults to 15 minutes if not set.\n\tDuration time.Duration\n\n\t// Optional ExternalID to pass along, defaults to nil if not set.\n\tExternalID *string\n\n\t// The policy plain text must be 2048 bytes or shorter. However, an internal\n\t// conversion compresses it into a packed binary format with a separate limit.\n\t// The PackedPolicySize response element indicates by percentage how close to\n\t// the upper size limit the policy is, with 100% equaling the maximum allowed\n\t// size.\n\tPolicy *string\n\n\t// The ARNs of IAM managed policies you want to use as managed session policies.\n\t// The policies must exist in the same account as the role.\n\t//\n\t// This parameter is optional. You can provide up to 10 managed policy ARNs.\n\t// However, the plain text that you use for both inline and managed session\n\t// policies can't exceed 2,048 characters.\n\t//\n\t// An AWS conversion compresses the passed session policies and session tags\n\t// into a packed binary format that has a separate limit. Your request can fail\n\t// for this limit even if your plain text meets the other requirements. The\n\t// PackedPolicySize response element indicates by percentage how close the policies\n\t// and tags for your request are to the upper size limit.\n\t//\n\t// Passing policies to this operation returns new temporary credentials. The\n\t// resulting session's permissions are the intersection of the role's identity-based\n\t// policy and the session policies. You can use the role's temporary credentials\n\t// in subsequent AWS API calls to access resources in the account that owns\n\t// the role. You cannot use session policies to grant more permissions than\n\t// those allowed by the identity-based policy of the role that is being assumed.\n\t// For more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n\t// in the IAM User Guide.\n\tPolicyArns []*sts.PolicyDescriptorType\n\n\t// The identification number of the MFA device that is associated with the user\n\t// who is making the AssumeRole call. Specify this value if the trust policy\n\t// of the role being assumed includes a condition that requires MFA authentication.\n\t// The value is either the serial number for a hardware device (such as GAHT12345678)\n\t// or an Amazon Resource Name (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user).\n\tSerialNumber *string\n\n\t// The SourceIdentity which is used to identity a persistent identity through the whole session.\n\t// For more details see https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html\n\tSourceIdentity *string\n\n\t// The value provided by the MFA device, if the trust policy of the role being\n\t// assumed requires MFA (that is, if the policy includes a condition that tests\n\t// for MFA). If the role being assumed requires MFA and if the TokenCode value\n\t// is missing or expired, the AssumeRole call returns an \"access denied\" error.\n\t//\n\t// If SerialNumber is set and neither TokenCode nor TokenProvider are also\n\t// set an error will be returned.\n\tTokenCode *string\n\n\t// Async method of providing MFA token code for assuming an IAM role with MFA.\n\t// The value returned by the function will be used as the TokenCode in the Retrieve\n\t// call. See StdinTokenProvider for a provider that prompts and reads from stdin.\n\t//\n\t// This token provider will be called when ever the assumed role's\n\t// credentials need to be refreshed when SerialNumber is also set and\n\t// TokenCode is not set.\n\t//\n\t// If both TokenCode and TokenProvider is set, TokenProvider will be used and\n\t// TokenCode is ignored.\n\tTokenProvider func() (string, error)\n\n\t// ExpiryWindow will allow the credentials to trigger refreshing prior to\n\t// the credentials actually expiring. This is beneficial so race conditions\n\t// with expiring credentials do not cause request to fail unexpectedly\n\t// due to ExpiredTokenException exceptions.\n\t//\n\t// So a ExpiryWindow of 10s would cause calls to IsExpired() to return true\n\t// 10 seconds before the credentials are actually expired.\n\t//\n\t// If ExpiryWindow is 0 or less it will be ignored.\n\tExpiryWindow time.Duration\n\n\t// MaxJitterFrac reduces the effective Duration of each credential requested\n\t// by a random percentage between 0 and MaxJitterFraction. MaxJitterFrac must\n\t// have a value between 0 and 1. Any other value may lead to expected behavior.\n\t// With a MaxJitterFrac value of 0, default) will no jitter will be used.\n\t//\n\t// For example, with a Duration of 30m and a MaxJitterFrac of 0.1, the\n\t// AssumeRole call will be made with an arbitrary Duration between 27m and\n\t// 30m.\n\t//\n\t// MaxJitterFrac should not be negative.\n\tMaxJitterFrac float64\n}\n\n// NewCredentials returns a pointer to a new Credentials value wrapping the\n// AssumeRoleProvider. The credentials will expire every 15 minutes and the\n// role will be named after a nanosecond timestamp of this operation. The\n// Credentials value will attempt to refresh the credentials using the provider\n// when Credentials.Get is called, if the cached credentials are expiring.\n//\n// Takes a Config provider to create the STS client. The ConfigProvider is\n// satisfied by the session.Session type.\n//\n// It is safe to share the returned Credentials with multiple Sessions and\n// service clients. All access to the credentials and refreshing them\n// will be synchronized.\nfunc NewCredentials(c client.ConfigProvider, roleARN string, options ...func(*AssumeRoleProvider)) *credentials.Credentials {\n\tp := &AssumeRoleProvider{\n\t\tClient:   sts.New(c),\n\t\tRoleARN:  roleARN,\n\t\tDuration: DefaultDuration,\n\t}\n\n\tfor _, option := range options {\n\t\toption(p)\n\t}\n\n\treturn credentials.NewCredentials(p)\n}\n\n// NewCredentialsWithClient returns a pointer to a new Credentials value wrapping the\n// AssumeRoleProvider. The credentials will expire every 15 minutes and the\n// role will be named after a nanosecond timestamp of this operation. The\n// Credentials value will attempt to refresh the credentials using the provider\n// when Credentials.Get is called, if the cached credentials are expiring.\n//\n// Takes an AssumeRoler which can be satisfied by the STS client.\n//\n// It is safe to share the returned Credentials with multiple Sessions and\n// service clients. All access to the credentials and refreshing them\n// will be synchronized.\nfunc NewCredentialsWithClient(svc AssumeRoler, roleARN string, options ...func(*AssumeRoleProvider)) *credentials.Credentials {\n\tp := &AssumeRoleProvider{\n\t\tClient:   svc,\n\t\tRoleARN:  roleARN,\n\t\tDuration: DefaultDuration,\n\t}\n\n\tfor _, option := range options {\n\t\toption(p)\n\t}\n\n\treturn credentials.NewCredentials(p)\n}\n\n// Retrieve generates a new set of temporary credentials using STS.\nfunc (p *AssumeRoleProvider) Retrieve() (credentials.Value, error) {\n\treturn p.RetrieveWithContext(aws.BackgroundContext())\n}\n\n// RetrieveWithContext generates a new set of temporary credentials using STS.\nfunc (p *AssumeRoleProvider) RetrieveWithContext(ctx credentials.Context) (credentials.Value, error) {\n\t// Apply defaults where parameters are not set.\n\tif p.RoleSessionName == \"\" {\n\t\t// Try to work out a role name that will hopefully end up unique.\n\t\tp.RoleSessionName = fmt.Sprintf(\"%d\", time.Now().UTC().UnixNano())\n\t}\n\tif p.Duration == 0 {\n\t\t// Expire as often as AWS permits.\n\t\tp.Duration = DefaultDuration\n\t}\n\tjitter := time.Duration(sdkrand.SeededRand.Float64() * p.MaxJitterFrac * float64(p.Duration))\n\tinput := &sts.AssumeRoleInput{\n\t\tDurationSeconds:   aws.Int64(int64((p.Duration - jitter) / time.Second)),\n\t\tRoleArn:           aws.String(p.RoleARN),\n\t\tRoleSessionName:   aws.String(p.RoleSessionName),\n\t\tExternalId:        p.ExternalID,\n\t\tTags:              p.Tags,\n\t\tPolicyArns:        p.PolicyArns,\n\t\tTransitiveTagKeys: p.TransitiveTagKeys,\n\t\tSourceIdentity:    p.SourceIdentity,\n\t}\n\tif p.Policy != nil {\n\t\tinput.Policy = p.Policy\n\t}\n\tif p.SerialNumber != nil {\n\t\tif p.TokenCode != nil {\n\t\t\tinput.SerialNumber = p.SerialNumber\n\t\t\tinput.TokenCode = p.TokenCode\n\t\t} else if p.TokenProvider != nil {\n\t\t\tinput.SerialNumber = p.SerialNumber\n\t\t\tcode, err := p.TokenProvider()\n\t\t\tif err != nil {\n\t\t\t\treturn credentials.Value{ProviderName: ProviderName}, err\n\t\t\t}\n\t\t\tinput.TokenCode = aws.String(code)\n\t\t} else {\n\t\t\treturn credentials.Value{ProviderName: ProviderName},\n\t\t\t\tawserr.New(\"AssumeRoleTokenNotAvailable\",\n\t\t\t\t\t\"assume role with MFA enabled, but neither TokenCode nor TokenProvider are set\", nil)\n\t\t}\n\t}\n\n\tvar roleOutput *sts.AssumeRoleOutput\n\tvar err error\n\n\tif c, ok := p.Client.(assumeRolerWithContext); ok {\n\t\troleOutput, err = c.AssumeRoleWithContext(ctx, input)\n\t} else {\n\t\troleOutput, err = p.Client.AssumeRole(input)\n\t}\n\n\tif err != nil {\n\t\treturn credentials.Value{ProviderName: ProviderName}, err\n\t}\n\n\t// We will proactively generate new credentials before they expire.\n\tp.SetExpiration(*roleOutput.Credentials.Expiration, p.ExpiryWindow)\n\n\treturn credentials.Value{\n\t\tAccessKeyID:     *roleOutput.Credentials.AccessKeyId,\n\t\tSecretAccessKey: *roleOutput.Credentials.SecretAccessKey,\n\t\tSessionToken:    *roleOutput.Credentials.SessionToken,\n\t\tProviderName:    ProviderName,\n\t}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/web_identity_provider.go",
    "content": "package stscreds\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/client\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/service/sts\"\n\t\"github.com/aws/aws-sdk-go/service/sts/stsiface\"\n)\n\nconst (\n\t// ErrCodeWebIdentity will be used as an error code when constructing\n\t// a new error to be returned during session creation or retrieval.\n\tErrCodeWebIdentity = \"WebIdentityErr\"\n\n\t// WebIdentityProviderName is the web identity provider name\n\tWebIdentityProviderName = \"WebIdentityCredentials\"\n)\n\n// now is used to return a time.Time object representing\n// the current time. This can be used to easily test and\n// compare test values.\nvar now = time.Now\n\n// TokenFetcher should return WebIdentity token bytes or an error\ntype TokenFetcher interface {\n\tFetchToken(credentials.Context) ([]byte, error)\n}\n\n// FetchTokenPath is a path to a WebIdentity token file\ntype FetchTokenPath string\n\n// FetchToken returns a token by reading from the filesystem\nfunc (f FetchTokenPath) FetchToken(ctx credentials.Context) ([]byte, error) {\n\tdata, err := ioutil.ReadFile(string(f))\n\tif err != nil {\n\t\terrMsg := fmt.Sprintf(\"unable to read file at %s\", f)\n\t\treturn nil, awserr.New(ErrCodeWebIdentity, errMsg, err)\n\t}\n\treturn data, nil\n}\n\n// WebIdentityRoleProvider is used to retrieve credentials using\n// an OIDC token.\ntype WebIdentityRoleProvider struct {\n\tcredentials.Expiry\n\n\t// The policy ARNs to use with the web identity assumed role.\n\tPolicyArns []*sts.PolicyDescriptorType\n\n\t// Duration the STS credentials will be valid for. Truncated to seconds.\n\t// If unset, the assumed role will use AssumeRoleWithWebIdentity's default\n\t// expiry duration. See\n\t// https://docs.aws.amazon.com/sdk-for-go/api/service/sts/#STS.AssumeRoleWithWebIdentity\n\t// for more information.\n\tDuration time.Duration\n\n\t// The amount of time the credentials will be refreshed before they expire.\n\t// This is useful refresh credentials before they expire to reduce risk of\n\t// using credentials as they expire. If unset, will default to no expiry\n\t// window.\n\tExpiryWindow time.Duration\n\n\tclient stsiface.STSAPI\n\n\ttokenFetcher    TokenFetcher\n\troleARN         string\n\troleSessionName string\n}\n\n// NewWebIdentityCredentials will return a new set of credentials with a given\n// configuration, role arn, and token file path.\n//\n// Deprecated: Use NewWebIdentityRoleProviderWithOptions for flexible\n// functional options, and wrap with credentials.NewCredentials helper.\nfunc NewWebIdentityCredentials(c client.ConfigProvider, roleARN, roleSessionName, path string) *credentials.Credentials {\n\tsvc := sts.New(c)\n\tp := NewWebIdentityRoleProvider(svc, roleARN, roleSessionName, path)\n\treturn credentials.NewCredentials(p)\n}\n\n// NewWebIdentityRoleProvider will return a new WebIdentityRoleProvider with the\n// provided stsiface.STSAPI\n//\n// Deprecated: Use NewWebIdentityRoleProviderWithOptions for flexible\n// functional options.\nfunc NewWebIdentityRoleProvider(svc stsiface.STSAPI, roleARN, roleSessionName, path string) *WebIdentityRoleProvider {\n\treturn NewWebIdentityRoleProviderWithOptions(svc, roleARN, roleSessionName, FetchTokenPath(path))\n}\n\n// NewWebIdentityRoleProviderWithToken will return a new WebIdentityRoleProvider with the\n// provided stsiface.STSAPI and a TokenFetcher\n//\n// Deprecated: Use NewWebIdentityRoleProviderWithOptions for flexible\n// functional options.\nfunc NewWebIdentityRoleProviderWithToken(svc stsiface.STSAPI, roleARN, roleSessionName string, tokenFetcher TokenFetcher) *WebIdentityRoleProvider {\n\treturn NewWebIdentityRoleProviderWithOptions(svc, roleARN, roleSessionName, tokenFetcher)\n}\n\n// NewWebIdentityRoleProviderWithOptions will return an initialize\n// WebIdentityRoleProvider with the provided stsiface.STSAPI, role ARN, and a\n// TokenFetcher. Additional options can be provided as functional options.\n//\n// TokenFetcher is the implementation that will retrieve the JWT token from to\n// assume the role with. Use the provided FetchTokenPath implementation to\n// retrieve the JWT token using a file system path.\nfunc NewWebIdentityRoleProviderWithOptions(svc stsiface.STSAPI, roleARN, roleSessionName string, tokenFetcher TokenFetcher, optFns ...func(*WebIdentityRoleProvider)) *WebIdentityRoleProvider {\n\tp := WebIdentityRoleProvider{\n\t\tclient:          svc,\n\t\ttokenFetcher:    tokenFetcher,\n\t\troleARN:         roleARN,\n\t\troleSessionName: roleSessionName,\n\t}\n\n\tfor _, fn := range optFns {\n\t\tfn(&p)\n\t}\n\n\treturn &p\n}\n\n// Retrieve will attempt to assume a role from a token which is located at\n// 'WebIdentityTokenFilePath' specified destination and if that is empty an\n// error will be returned.\nfunc (p *WebIdentityRoleProvider) Retrieve() (credentials.Value, error) {\n\treturn p.RetrieveWithContext(aws.BackgroundContext())\n}\n\n// RetrieveWithContext will attempt to assume a role from a token which is\n// located at 'WebIdentityTokenFilePath' specified destination and if that is\n// empty an error will be returned.\nfunc (p *WebIdentityRoleProvider) RetrieveWithContext(ctx credentials.Context) (credentials.Value, error) {\n\tb, err := p.tokenFetcher.FetchToken(ctx)\n\tif err != nil {\n\t\treturn credentials.Value{}, awserr.New(ErrCodeWebIdentity, \"failed fetching WebIdentity token: \", err)\n\t}\n\n\tsessionName := p.roleSessionName\n\tif len(sessionName) == 0 {\n\t\t// session name is used to uniquely identify a session. This simply\n\t\t// uses unix time in nanoseconds to uniquely identify sessions.\n\t\tsessionName = strconv.FormatInt(now().UnixNano(), 10)\n\t}\n\n\tvar duration *int64\n\tif p.Duration != 0 {\n\t\tduration = aws.Int64(int64(p.Duration / time.Second))\n\t}\n\n\treq, resp := p.client.AssumeRoleWithWebIdentityRequest(&sts.AssumeRoleWithWebIdentityInput{\n\t\tPolicyArns:       p.PolicyArns,\n\t\tRoleArn:          &p.roleARN,\n\t\tRoleSessionName:  &sessionName,\n\t\tWebIdentityToken: aws.String(string(b)),\n\t\tDurationSeconds:  duration,\n\t})\n\n\treq.SetContext(ctx)\n\n\t// InvalidIdentityToken error is a temporary error that can occur\n\t// when assuming an Role with a JWT web identity token.\n\treq.RetryErrorCodes = append(req.RetryErrorCodes, sts.ErrCodeInvalidIdentityTokenException)\n\tif err := req.Send(); err != nil {\n\t\treturn credentials.Value{}, awserr.New(ErrCodeWebIdentity, \"failed to retrieve credentials\", err)\n\t}\n\n\tp.SetExpiration(aws.TimeValue(resp.Credentials.Expiration), p.ExpiryWindow)\n\n\tvalue := credentials.Value{\n\t\tAccessKeyID:     aws.StringValue(resp.Credentials.AccessKeyId),\n\t\tSecretAccessKey: aws.StringValue(resp.Credentials.SecretAccessKey),\n\t\tSessionToken:    aws.StringValue(resp.Credentials.SessionToken),\n\t\tProviderName:    WebIdentityProviderName,\n\t}\n\treturn value, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/crr/cache.go",
    "content": "package crr\n\nimport (\n\t\"sync/atomic\"\n)\n\n// EndpointCache is an LRU cache that holds a series of endpoints\n// based on some key. The datastructure makes use of a read write\n// mutex to enable asynchronous use.\ntype EndpointCache struct {\n\tendpoints     syncMap\n\tendpointLimit int64\n\t// size is used to count the number elements in the cache.\n\t// The atomic package is used to ensure this size is accurate when\n\t// using multiple goroutines.\n\tsize int64\n}\n\n// NewEndpointCache will return a newly initialized cache with a limit\n// of endpointLimit entries.\nfunc NewEndpointCache(endpointLimit int64) *EndpointCache {\n\treturn &EndpointCache{\n\t\tendpointLimit: endpointLimit,\n\t\tendpoints:     newSyncMap(),\n\t}\n}\n\n// get is a concurrent safe get operation that will retrieve an endpoint\n// based on endpointKey. A boolean will also be returned to illustrate whether\n// or not the endpoint had been found.\nfunc (c *EndpointCache) get(endpointKey string) (Endpoint, bool) {\n\tendpoint, ok := c.endpoints.Load(endpointKey)\n\tif !ok {\n\t\treturn Endpoint{}, false\n\t}\n\n\tev := endpoint.(Endpoint)\n\tev.Prune()\n\n\tc.endpoints.Store(endpointKey, ev)\n\treturn endpoint.(Endpoint), true\n}\n\n// Has returns if the enpoint cache contains a valid entry for the endpoint key\n// provided.\nfunc (c *EndpointCache) Has(endpointKey string) bool {\n\tendpoint, ok := c.get(endpointKey)\n\t_, found := endpoint.GetValidAddress()\n\n\treturn ok && found\n}\n\n// Get will retrieve a weighted address  based off of the endpoint key. If an endpoint\n// should be retrieved, due to not existing or the current endpoint has expired\n// the Discoverer object that was passed in will attempt to discover a new endpoint\n// and add that to the cache.\nfunc (c *EndpointCache) Get(d Discoverer, endpointKey string, required bool) (WeightedAddress, error) {\n\tvar err error\n\tendpoint, ok := c.get(endpointKey)\n\tweighted, found := endpoint.GetValidAddress()\n\tshouldGet := !ok || !found\n\n\tif required && shouldGet {\n\t\tif endpoint, err = c.discover(d, endpointKey); err != nil {\n\t\t\treturn WeightedAddress{}, err\n\t\t}\n\n\t\tweighted, _ = endpoint.GetValidAddress()\n\t} else if shouldGet {\n\t\tgo c.discover(d, endpointKey)\n\t}\n\n\treturn weighted, nil\n}\n\n// Add is a concurrent safe operation that will allow new endpoints to be added\n// to the cache. If the cache is full, the number of endpoints equal endpointLimit,\n// then this will remove the oldest entry before adding the new endpoint.\nfunc (c *EndpointCache) Add(endpoint Endpoint) {\n\t// de-dups multiple adds of an endpoint with a pre-existing key\n\tif iface, ok := c.endpoints.Load(endpoint.Key); ok {\n\t\te := iface.(Endpoint)\n\t\tif e.Len() > 0 {\n\t\t\treturn\n\t\t}\n\t}\n\tc.endpoints.Store(endpoint.Key, endpoint)\n\n\tsize := atomic.AddInt64(&c.size, 1)\n\tif size > 0 && size > c.endpointLimit {\n\t\tc.deleteRandomKey()\n\t}\n}\n\n// deleteRandomKey will delete a random key from the cache. If\n// no key was deleted false will be returned.\nfunc (c *EndpointCache) deleteRandomKey() bool {\n\tatomic.AddInt64(&c.size, -1)\n\tfound := false\n\n\tc.endpoints.Range(func(key, value interface{}) bool {\n\t\tfound = true\n\t\tc.endpoints.Delete(key)\n\n\t\treturn false\n\t})\n\n\treturn found\n}\n\n// discover will get and store and endpoint using the Discoverer.\nfunc (c *EndpointCache) discover(d Discoverer, endpointKey string) (Endpoint, error) {\n\tendpoint, err := d.Discover()\n\tif err != nil {\n\t\treturn Endpoint{}, err\n\t}\n\n\tendpoint.Key = endpointKey\n\tc.Add(endpoint)\n\n\treturn endpoint, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/crr/endpoint.go",
    "content": "package crr\n\nimport (\n\t\"net/url\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n)\n\n// Endpoint represents an endpoint used in endpoint discovery.\ntype Endpoint struct {\n\tKey       string\n\tAddresses WeightedAddresses\n}\n\n// WeightedAddresses represents a list of WeightedAddress.\ntype WeightedAddresses []WeightedAddress\n\n// WeightedAddress represents an address with a given weight.\ntype WeightedAddress struct {\n\tURL     *url.URL\n\tExpired time.Time\n}\n\n// HasExpired will return whether or not the endpoint has expired with\n// the exception of a zero expiry meaning does not expire.\nfunc (e WeightedAddress) HasExpired() bool {\n\treturn e.Expired.Before(time.Now())\n}\n\n// Add will add a given WeightedAddress to the address list of Endpoint.\nfunc (e *Endpoint) Add(addr WeightedAddress) {\n\te.Addresses = append(e.Addresses, addr)\n}\n\n// Len returns the number of valid endpoints where valid means the endpoint\n// has not expired.\nfunc (e *Endpoint) Len() int {\n\tvalidEndpoints := 0\n\tfor _, endpoint := range e.Addresses {\n\t\tif endpoint.HasExpired() {\n\t\t\tcontinue\n\t\t}\n\n\t\tvalidEndpoints++\n\t}\n\treturn validEndpoints\n}\n\n// GetValidAddress will return a non-expired weight endpoint\nfunc (e *Endpoint) GetValidAddress() (WeightedAddress, bool) {\n\tfor i := 0; i < len(e.Addresses); i++ {\n\t\twe := e.Addresses[i]\n\n\t\tif we.HasExpired() {\n\t\t\te.Addresses = append(e.Addresses[:i], e.Addresses[i+1:]...)\n\t\t\ti--\n\t\t\tcontinue\n\t\t}\n\n\t\twe.URL = cloneURL(we.URL)\n\n\t\treturn we, true\n\t}\n\n\treturn WeightedAddress{}, false\n}\n\n// Prune will prune the expired addresses from the endpoint by allocating a new []WeightAddress.\n// This is not concurrent safe, and should be called from a single owning thread.\nfunc (e *Endpoint) Prune() bool {\n\tvalidLen := e.Len()\n\tif validLen == len(e.Addresses) {\n\t\treturn false\n\t}\n\twa := make([]WeightedAddress, 0, validLen)\n\tfor i := range e.Addresses {\n\t\tif e.Addresses[i].HasExpired() {\n\t\t\tcontinue\n\t\t}\n\t\twa = append(wa, e.Addresses[i])\n\t}\n\te.Addresses = wa\n\treturn true\n}\n\n// Discoverer is an interface used to discovery which endpoint hit. This\n// allows for specifics about what parameters need to be used to be contained\n// in the Discoverer implementor.\ntype Discoverer interface {\n\tDiscover() (Endpoint, error)\n}\n\n// BuildEndpointKey will sort the keys in alphabetical order and then retrieve\n// the values in that order. Those values are then concatenated together to form\n// the endpoint key.\nfunc BuildEndpointKey(params map[string]*string) string {\n\tkeys := make([]string, len(params))\n\ti := 0\n\n\tfor k := range params {\n\t\tkeys[i] = k\n\t\ti++\n\t}\n\tsort.Strings(keys)\n\n\tvalues := make([]string, len(params))\n\tfor i, k := range keys {\n\t\tif params[k] == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tvalues[i] = aws.StringValue(params[k])\n\t}\n\n\treturn strings.Join(values, \".\")\n}\n\nfunc cloneURL(u *url.URL) (clone *url.URL) {\n\tclone = &url.URL{}\n\n\t*clone = *u\n\n\tif u.User != nil {\n\t\tuser := *u.User\n\t\tclone.User = &user\n\t}\n\n\treturn clone\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/crr/sync_map.go",
    "content": "//go:build go1.9\n// +build go1.9\n\npackage crr\n\nimport (\n\t\"sync\"\n)\n\ntype syncMap sync.Map\n\nfunc newSyncMap() syncMap {\n\treturn syncMap{}\n}\n\nfunc (m *syncMap) Load(key interface{}) (interface{}, bool) {\n\treturn (*sync.Map)(m).Load(key)\n}\n\nfunc (m *syncMap) Store(key interface{}, value interface{}) {\n\t(*sync.Map)(m).Store(key, value)\n}\n\nfunc (m *syncMap) Delete(key interface{}) {\n\t(*sync.Map)(m).Delete(key)\n}\n\nfunc (m *syncMap) Range(f func(interface{}, interface{}) bool) {\n\t(*sync.Map)(m).Range(f)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/crr/sync_map_1_8.go",
    "content": "//go:build !go1.9\n// +build !go1.9\n\npackage crr\n\nimport (\n\t\"sync\"\n)\n\ntype syncMap struct {\n\tcontainer map[interface{}]interface{}\n\tlock      sync.RWMutex\n}\n\nfunc newSyncMap() syncMap {\n\treturn syncMap{\n\t\tcontainer: map[interface{}]interface{}{},\n\t}\n}\n\nfunc (m *syncMap) Load(key interface{}) (interface{}, bool) {\n\tm.lock.RLock()\n\tdefer m.lock.RUnlock()\n\n\tv, ok := m.container[key]\n\treturn v, ok\n}\n\nfunc (m *syncMap) Store(key interface{}, value interface{}) {\n\tm.lock.Lock()\n\tdefer m.lock.Unlock()\n\n\tm.container[key] = value\n}\n\nfunc (m *syncMap) Delete(key interface{}) {\n\tm.lock.Lock()\n\tdefer m.lock.Unlock()\n\n\tdelete(m.container, key)\n}\n\nfunc (m *syncMap) Range(f func(interface{}, interface{}) bool) {\n\tfor k, v := range m.container {\n\t\tif !f(k, v) {\n\t\t\treturn\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go",
    "content": "// Package csm provides the Client Side Monitoring (CSM) client which enables\n// sending metrics via UDP connection to the CSM agent. This package provides\n// control options, and configuration for the CSM client. The client can be\n// controlled manually, or automatically via the SDK's Session configuration.\n//\n// Enabling CSM client via SDK's Session configuration\n//\n// The CSM client can be enabled automatically via SDK's Session configuration.\n// The SDK's session configuration enables the CSM client if the AWS_CSM_PORT\n// environment variable is set to a non-empty value.\n//\n// The configuration options for the CSM client via the SDK's session\n// configuration are:\n//\n//\t* AWS_CSM_PORT=<port number>\n//\t  The port number the CSM agent will receive metrics on.\n//\n//\t* AWS_CSM_HOST=<hostname or ip>\n//\t  The hostname, or IP address the CSM agent will receive metrics on.\n//\t  Without port number.\n//\n// Manually enabling the CSM client\n//\n// The CSM client can be started, paused, and resumed manually. The Start\n// function will enable the CSM client to publish metrics to the CSM agent. It\n// is safe to call Start concurrently, but if Start is called additional times\n// with different ClientID or address it will panic.\n//\n//\t\tr, err := csm.Start(\"clientID\", \":31000\")\n//\t\tif err != nil {\n//\t\t\tpanic(fmt.Errorf(\"failed starting CSM:  %v\", err))\n//\t\t}\n//\n// When controlling the CSM client manually, you must also inject its request\n// handlers into the SDK's Session configuration for the SDK's API clients to\n// publish metrics.\n//\n//\t\tsess, err := session.NewSession(&aws.Config{})\n//\t\tif err != nil {\n//\t\t\tpanic(fmt.Errorf(\"failed loading session: %v\", err))\n//\t\t}\n//\n//\t\t// Add CSM client's metric publishing request handlers to the SDK's\n//\t\t// Session Configuration.\n//\t\tr.InjectHandlers(&sess.Handlers)\n//\n// Controlling CSM client\n//\n// Once the CSM client has been enabled the Get function will return a Reporter\n// value that you can use to pause and resume the metrics published to the CSM\n// agent. If Get function is called before the reporter is enabled with the\n// Start function or via SDK's Session configuration nil will be returned.\n//\n// The Pause method can be called to stop the CSM client publishing metrics to\n// the CSM agent. The Continue method will resume metric publishing.\n//\n//\t\t// Get the CSM client Reporter.\n//\t\tr := csm.Get()\n//\n//\t\t// Will pause monitoring\n//\t\tr.Pause()\n//\t\tresp, err = client.GetObject(&s3.GetObjectInput{\n//\t\t\tBucket: aws.String(\"bucket\"),\n//\t\t\tKey: aws.String(\"key\"),\n//\t\t})\n//\n//\t\t// Resume monitoring\n//\t\tr.Continue()\npackage csm\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/csm/enable.go",
    "content": "package csm\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"sync\"\n)\n\nvar (\n\tlock sync.Mutex\n)\n\nconst (\n\t// DefaultPort is used when no port is specified.\n\tDefaultPort = \"31000\"\n\n\t// DefaultHost is the host that will be used when none is specified.\n\tDefaultHost = \"127.0.0.1\"\n)\n\n// AddressWithDefaults returns a CSM address built from the host and port\n// values. If the host or port is not set, default values will be used\n// instead. If host is \"localhost\" it will be replaced with \"127.0.0.1\".\nfunc AddressWithDefaults(host, port string) string {\n\tif len(host) == 0 || strings.EqualFold(host, \"localhost\") {\n\t\thost = DefaultHost\n\t}\n\n\tif len(port) == 0 {\n\t\tport = DefaultPort\n\t}\n\n\t// Only IP6 host can contain a colon\n\tif strings.Contains(host, \":\") {\n\t\treturn \"[\" + host + \"]:\" + port\n\t}\n\n\treturn host + \":\" + port\n}\n\n// Start will start a long running go routine to capture\n// client side metrics. Calling start multiple time will only\n// start the metric listener once and will panic if a different\n// client ID or port is passed in.\n//\n//\t\tr, err := csm.Start(\"clientID\", \"127.0.0.1:31000\")\n//\t\tif err != nil {\n//\t\t\tpanic(fmt.Errorf(\"expected no error, but received %v\", err))\n//\t\t}\n//\t\tsess := session.NewSession()\n//\t\tr.InjectHandlers(sess.Handlers)\n//\n//\t\tsvc := s3.New(sess)\n//\t\tout, err := svc.GetObject(&s3.GetObjectInput{\n//\t\t\tBucket: aws.String(\"bucket\"),\n//\t\t\tKey: aws.String(\"key\"),\n//\t\t})\nfunc Start(clientID string, url string) (*Reporter, error) {\n\tlock.Lock()\n\tdefer lock.Unlock()\n\n\tif sender == nil {\n\t\tsender = newReporter(clientID, url)\n\t} else {\n\t\tif sender.clientID != clientID {\n\t\t\tpanic(fmt.Errorf(\"inconsistent client IDs. %q was expected, but received %q\", sender.clientID, clientID))\n\t\t}\n\n\t\tif sender.url != url {\n\t\t\tpanic(fmt.Errorf(\"inconsistent URLs. %q was expected, but received %q\", sender.url, url))\n\t\t}\n\t}\n\n\tif err := connect(url); err != nil {\n\t\tsender = nil\n\t\treturn nil, err\n\t}\n\n\treturn sender, nil\n}\n\n// Get will return a reporter if one exists, if one does not exist, nil will\n// be returned.\nfunc Get() *Reporter {\n\tlock.Lock()\n\tdefer lock.Unlock()\n\n\treturn sender\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go",
    "content": "package csm\n\nimport (\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n)\n\ntype metricTime time.Time\n\nfunc (t metricTime) MarshalJSON() ([]byte, error) {\n\tns := time.Duration(time.Time(t).UnixNano())\n\treturn []byte(strconv.FormatInt(int64(ns/time.Millisecond), 10)), nil\n}\n\ntype metric struct {\n\tClientID  *string     `json:\"ClientId,omitempty\"`\n\tAPI       *string     `json:\"Api,omitempty\"`\n\tService   *string     `json:\"Service,omitempty\"`\n\tTimestamp *metricTime `json:\"Timestamp,omitempty\"`\n\tType      *string     `json:\"Type,omitempty\"`\n\tVersion   *int        `json:\"Version,omitempty\"`\n\n\tAttemptCount *int `json:\"AttemptCount,omitempty\"`\n\tLatency      *int `json:\"Latency,omitempty\"`\n\n\tFqdn           *string `json:\"Fqdn,omitempty\"`\n\tUserAgent      *string `json:\"UserAgent,omitempty\"`\n\tAttemptLatency *int    `json:\"AttemptLatency,omitempty\"`\n\n\tSessionToken   *string `json:\"SessionToken,omitempty\"`\n\tRegion         *string `json:\"Region,omitempty\"`\n\tAccessKey      *string `json:\"AccessKey,omitempty\"`\n\tHTTPStatusCode *int    `json:\"HttpStatusCode,omitempty\"`\n\tXAmzID2        *string `json:\"XAmzId2,omitempty\"`\n\tXAmzRequestID  *string `json:\"XAmznRequestId,omitempty\"`\n\n\tAWSException        *string `json:\"AwsException,omitempty\"`\n\tAWSExceptionMessage *string `json:\"AwsExceptionMessage,omitempty\"`\n\tSDKException        *string `json:\"SdkException,omitempty\"`\n\tSDKExceptionMessage *string `json:\"SdkExceptionMessage,omitempty\"`\n\n\tFinalHTTPStatusCode      *int    `json:\"FinalHttpStatusCode,omitempty\"`\n\tFinalAWSException        *string `json:\"FinalAwsException,omitempty\"`\n\tFinalAWSExceptionMessage *string `json:\"FinalAwsExceptionMessage,omitempty\"`\n\tFinalSDKException        *string `json:\"FinalSdkException,omitempty\"`\n\tFinalSDKExceptionMessage *string `json:\"FinalSdkExceptionMessage,omitempty\"`\n\n\tDestinationIP    *string `json:\"DestinationIp,omitempty\"`\n\tConnectionReused *int    `json:\"ConnectionReused,omitempty\"`\n\n\tAcquireConnectionLatency *int `json:\"AcquireConnectionLatency,omitempty\"`\n\tConnectLatency           *int `json:\"ConnectLatency,omitempty\"`\n\tRequestLatency           *int `json:\"RequestLatency,omitempty\"`\n\tDNSLatency               *int `json:\"DnsLatency,omitempty\"`\n\tTCPLatency               *int `json:\"TcpLatency,omitempty\"`\n\tSSLLatency               *int `json:\"SslLatency,omitempty\"`\n\n\tMaxRetriesExceeded *int `json:\"MaxRetriesExceeded,omitempty\"`\n}\n\nfunc (m *metric) TruncateFields() {\n\tm.ClientID = truncateString(m.ClientID, 255)\n\tm.UserAgent = truncateString(m.UserAgent, 256)\n\n\tm.AWSException = truncateString(m.AWSException, 128)\n\tm.AWSExceptionMessage = truncateString(m.AWSExceptionMessage, 512)\n\n\tm.SDKException = truncateString(m.SDKException, 128)\n\tm.SDKExceptionMessage = truncateString(m.SDKExceptionMessage, 512)\n\n\tm.FinalAWSException = truncateString(m.FinalAWSException, 128)\n\tm.FinalAWSExceptionMessage = truncateString(m.FinalAWSExceptionMessage, 512)\n\n\tm.FinalSDKException = truncateString(m.FinalSDKException, 128)\n\tm.FinalSDKExceptionMessage = truncateString(m.FinalSDKExceptionMessage, 512)\n}\n\nfunc truncateString(v *string, l int) *string {\n\tif v != nil && len(*v) > l {\n\t\tnv := (*v)[:l]\n\t\treturn &nv\n\t}\n\n\treturn v\n}\n\nfunc (m *metric) SetException(e metricException) {\n\tswitch te := e.(type) {\n\tcase awsException:\n\t\tm.AWSException = aws.String(te.exception)\n\t\tm.AWSExceptionMessage = aws.String(te.message)\n\tcase sdkException:\n\t\tm.SDKException = aws.String(te.exception)\n\t\tm.SDKExceptionMessage = aws.String(te.message)\n\t}\n}\n\nfunc (m *metric) SetFinalException(e metricException) {\n\tswitch te := e.(type) {\n\tcase awsException:\n\t\tm.FinalAWSException = aws.String(te.exception)\n\t\tm.FinalAWSExceptionMessage = aws.String(te.message)\n\tcase sdkException:\n\t\tm.FinalSDKException = aws.String(te.exception)\n\t\tm.FinalSDKExceptionMessage = aws.String(te.message)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/csm/metric_chan.go",
    "content": "package csm\n\nimport (\n\t\"sync/atomic\"\n)\n\nconst (\n\trunningEnum = iota\n\tpausedEnum\n)\n\nvar (\n\t// MetricsChannelSize of metrics to hold in the channel\n\tMetricsChannelSize = 100\n)\n\ntype metricChan struct {\n\tch     chan metric\n\tpaused *int64\n}\n\nfunc newMetricChan(size int) metricChan {\n\treturn metricChan{\n\t\tch:     make(chan metric, size),\n\t\tpaused: new(int64),\n\t}\n}\n\nfunc (ch *metricChan) Pause() {\n\tatomic.StoreInt64(ch.paused, pausedEnum)\n}\n\nfunc (ch *metricChan) Continue() {\n\tatomic.StoreInt64(ch.paused, runningEnum)\n}\n\nfunc (ch *metricChan) IsPaused() bool {\n\tv := atomic.LoadInt64(ch.paused)\n\treturn v == pausedEnum\n}\n\n// Push will push metrics to the metric channel if the channel\n// is not paused\nfunc (ch *metricChan) Push(m metric) bool {\n\tif ch.IsPaused() {\n\t\treturn false\n\t}\n\n\tselect {\n\tcase ch.ch <- m:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/csm/metric_exception.go",
    "content": "package csm\n\ntype metricException interface {\n\tException() string\n\tMessage() string\n}\n\ntype requestException struct {\n\texception string\n\tmessage   string\n}\n\nfunc (e requestException) Exception() string {\n\treturn e.exception\n}\nfunc (e requestException) Message() string {\n\treturn e.message\n}\n\ntype awsException struct {\n\trequestException\n}\n\ntype sdkException struct {\n\trequestException\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go",
    "content": "package csm\n\nimport (\n\t\"encoding/json\"\n\t\"net\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// Reporter will gather metrics of API requests made and\n// send those metrics to the CSM endpoint.\ntype Reporter struct {\n\tclientID  string\n\turl       string\n\tconn      net.Conn\n\tmetricsCh metricChan\n\tdone      chan struct{}\n}\n\nvar (\n\tsender *Reporter\n)\n\nfunc connect(url string) error {\n\tconst network = \"udp\"\n\tif err := sender.connect(network, url); err != nil {\n\t\treturn err\n\t}\n\n\tif sender.done == nil {\n\t\tsender.done = make(chan struct{})\n\t\tgo sender.start()\n\t}\n\n\treturn nil\n}\n\nfunc newReporter(clientID, url string) *Reporter {\n\treturn &Reporter{\n\t\tclientID:  clientID,\n\t\turl:       url,\n\t\tmetricsCh: newMetricChan(MetricsChannelSize),\n\t}\n}\n\nfunc (rep *Reporter) sendAPICallAttemptMetric(r *request.Request) {\n\tif rep == nil {\n\t\treturn\n\t}\n\n\tnow := time.Now()\n\tcreds, _ := r.Config.Credentials.Get()\n\n\tm := metric{\n\t\tClientID:  aws.String(rep.clientID),\n\t\tAPI:       aws.String(r.Operation.Name),\n\t\tService:   aws.String(r.ClientInfo.ServiceID),\n\t\tTimestamp: (*metricTime)(&now),\n\t\tUserAgent: aws.String(r.HTTPRequest.Header.Get(\"User-Agent\")),\n\t\tRegion:    r.Config.Region,\n\t\tType:      aws.String(\"ApiCallAttempt\"),\n\t\tVersion:   aws.Int(1),\n\n\t\tXAmzRequestID: aws.String(r.RequestID),\n\n\t\tAttemptLatency: aws.Int(int(now.Sub(r.AttemptTime).Nanoseconds() / int64(time.Millisecond))),\n\t\tAccessKey:      aws.String(creds.AccessKeyID),\n\t}\n\n\tif r.HTTPResponse != nil {\n\t\tm.HTTPStatusCode = aws.Int(r.HTTPResponse.StatusCode)\n\t}\n\n\tif r.Error != nil {\n\t\tif awserr, ok := r.Error.(awserr.Error); ok {\n\t\t\tm.SetException(getMetricException(awserr))\n\t\t}\n\t}\n\n\tm.TruncateFields()\n\trep.metricsCh.Push(m)\n}\n\nfunc getMetricException(err awserr.Error) metricException {\n\tmsg := err.Error()\n\tcode := err.Code()\n\n\tswitch code {\n\tcase request.ErrCodeRequestError,\n\t\trequest.ErrCodeSerialization,\n\t\trequest.CanceledErrorCode:\n\t\treturn sdkException{\n\t\t\trequestException{exception: code, message: msg},\n\t\t}\n\tdefault:\n\t\treturn awsException{\n\t\t\trequestException{exception: code, message: msg},\n\t\t}\n\t}\n}\n\nfunc (rep *Reporter) sendAPICallMetric(r *request.Request) {\n\tif rep == nil {\n\t\treturn\n\t}\n\n\tnow := time.Now()\n\tm := metric{\n\t\tClientID:           aws.String(rep.clientID),\n\t\tAPI:                aws.String(r.Operation.Name),\n\t\tService:            aws.String(r.ClientInfo.ServiceID),\n\t\tTimestamp:          (*metricTime)(&now),\n\t\tUserAgent:          aws.String(r.HTTPRequest.Header.Get(\"User-Agent\")),\n\t\tType:               aws.String(\"ApiCall\"),\n\t\tAttemptCount:       aws.Int(r.RetryCount + 1),\n\t\tRegion:             r.Config.Region,\n\t\tLatency:            aws.Int(int(time.Since(r.Time) / time.Millisecond)),\n\t\tXAmzRequestID:      aws.String(r.RequestID),\n\t\tMaxRetriesExceeded: aws.Int(boolIntValue(r.RetryCount >= r.MaxRetries())),\n\t}\n\n\tif r.HTTPResponse != nil {\n\t\tm.FinalHTTPStatusCode = aws.Int(r.HTTPResponse.StatusCode)\n\t}\n\n\tif r.Error != nil {\n\t\tif awserr, ok := r.Error.(awserr.Error); ok {\n\t\t\tm.SetFinalException(getMetricException(awserr))\n\t\t}\n\t}\n\n\tm.TruncateFields()\n\n\t// TODO: Probably want to figure something out for logging dropped\n\t// metrics\n\trep.metricsCh.Push(m)\n}\n\nfunc (rep *Reporter) connect(network, url string) error {\n\tif rep.conn != nil {\n\t\trep.conn.Close()\n\t}\n\n\tconn, err := net.Dial(network, url)\n\tif err != nil {\n\t\treturn awserr.New(\"UDPError\", \"Could not connect\", err)\n\t}\n\n\trep.conn = conn\n\n\treturn nil\n}\n\nfunc (rep *Reporter) close() {\n\tif rep.done != nil {\n\t\tclose(rep.done)\n\t}\n\n\trep.metricsCh.Pause()\n}\n\nfunc (rep *Reporter) start() {\n\tdefer func() {\n\t\trep.metricsCh.Pause()\n\t}()\n\n\tfor {\n\t\tselect {\n\t\tcase <-rep.done:\n\t\t\trep.done = nil\n\t\t\treturn\n\t\tcase m := <-rep.metricsCh.ch:\n\t\t\t// TODO: What to do with this error? Probably should just log\n\t\t\tb, err := json.Marshal(m)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\trep.conn.Write(b)\n\t\t}\n\t}\n}\n\n// Pause will pause the metric channel preventing any new metrics from being\n// added. It is safe to call concurrently with other calls to Pause, but if\n// called concurently with Continue can lead to unexpected state.\nfunc (rep *Reporter) Pause() {\n\tlock.Lock()\n\tdefer lock.Unlock()\n\n\tif rep == nil {\n\t\treturn\n\t}\n\n\trep.close()\n}\n\n// Continue will reopen the metric channel and allow for monitoring to be\n// resumed. It is safe to call concurrently with other calls to Continue, but\n// if called concurently with Pause can lead to unexpected state.\nfunc (rep *Reporter) Continue() {\n\tlock.Lock()\n\tdefer lock.Unlock()\n\tif rep == nil {\n\t\treturn\n\t}\n\n\tif !rep.metricsCh.IsPaused() {\n\t\treturn\n\t}\n\n\trep.metricsCh.Continue()\n}\n\n// Client side metric handler names\nconst (\n\tAPICallMetricHandlerName        = \"awscsm.SendAPICallMetric\"\n\tAPICallAttemptMetricHandlerName = \"awscsm.SendAPICallAttemptMetric\"\n)\n\n// InjectHandlers will will enable client side metrics and inject the proper\n// handlers to handle how metrics are sent.\n//\n// InjectHandlers is NOT safe to call concurrently. Calling InjectHandlers\n// multiple times may lead to unexpected behavior, (e.g. duplicate metrics).\n//\n//\t\t// Start must be called in order to inject the correct handlers\n//\t\tr, err := csm.Start(\"clientID\", \"127.0.0.1:8094\")\n//\t\tif err != nil {\n//\t\t\tpanic(fmt.Errorf(\"expected no error, but received %v\", err))\n//\t\t}\n//\n//\t\tsess := session.NewSession()\n//\t\tr.InjectHandlers(&sess.Handlers)\n//\n//\t\t// create a new service client with our client side metric session\n//\t\tsvc := s3.New(sess)\nfunc (rep *Reporter) InjectHandlers(handlers *request.Handlers) {\n\tif rep == nil {\n\t\treturn\n\t}\n\n\thandlers.Complete.PushFrontNamed(request.NamedHandler{\n\t\tName: APICallMetricHandlerName,\n\t\tFn:   rep.sendAPICallMetric,\n\t})\n\n\thandlers.CompleteAttempt.PushFrontNamed(request.NamedHandler{\n\t\tName: APICallAttemptMetricHandlerName,\n\t\tFn:   rep.sendAPICallAttemptMetric,\n\t})\n}\n\n// boolIntValue return 1 for true and 0 for false.\nfunc boolIntValue(b bool) int {\n\tif b {\n\t\treturn 1\n\t}\n\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go",
    "content": "// Package defaults is a collection of helpers to retrieve the SDK's default\n// configuration and handlers.\n//\n// Generally this package shouldn't be used directly, but session.Session\n// instead. This package is useful when you need to reset the defaults\n// of a session or service client to the SDK defaults before setting\n// additional parameters.\npackage defaults\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/corehandlers\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials/endpointcreds\"\n\t\"github.com/aws/aws-sdk-go/aws/ec2metadata\"\n\t\"github.com/aws/aws-sdk-go/aws/endpoints\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/internal/shareddefaults\"\n)\n\n// A Defaults provides a collection of default values for SDK clients.\ntype Defaults struct {\n\tConfig   *aws.Config\n\tHandlers request.Handlers\n}\n\n// Get returns the SDK's default values with Config and handlers pre-configured.\nfunc Get() Defaults {\n\tcfg := Config()\n\thandlers := Handlers()\n\tcfg.Credentials = CredChain(cfg, handlers)\n\n\treturn Defaults{\n\t\tConfig:   cfg,\n\t\tHandlers: handlers,\n\t}\n}\n\n// Config returns the default configuration without credentials.\n// To retrieve a config with credentials also included use\n// `defaults.Get().Config` instead.\n//\n// Generally you shouldn't need to use this method directly, but\n// is available if you need to reset the configuration of an\n// existing service client or session.\nfunc Config() *aws.Config {\n\treturn aws.NewConfig().\n\t\tWithCredentials(credentials.AnonymousCredentials).\n\t\tWithRegion(os.Getenv(\"AWS_REGION\")).\n\t\tWithHTTPClient(http.DefaultClient).\n\t\tWithMaxRetries(aws.UseServiceDefaultRetries).\n\t\tWithLogger(aws.NewDefaultLogger()).\n\t\tWithLogLevel(aws.LogOff).\n\t\tWithEndpointResolver(endpoints.DefaultResolver())\n}\n\n// Handlers returns the default request handlers.\n//\n// Generally you shouldn't need to use this method directly, but\n// is available if you need to reset the request handlers of an\n// existing service client or session.\nfunc Handlers() request.Handlers {\n\tvar handlers request.Handlers\n\n\thandlers.Validate.PushBackNamed(corehandlers.ValidateEndpointHandler)\n\thandlers.Validate.AfterEachFn = request.HandlerListStopOnError\n\thandlers.Build.PushBackNamed(corehandlers.SDKVersionUserAgentHandler)\n\thandlers.Build.PushBackNamed(corehandlers.AddAwsInternal)\n\thandlers.Build.PushBackNamed(corehandlers.AddHostExecEnvUserAgentHander)\n\thandlers.Build.AfterEachFn = request.HandlerListStopOnError\n\thandlers.Sign.PushBackNamed(corehandlers.BuildContentLengthHandler)\n\thandlers.Send.PushBackNamed(corehandlers.ValidateReqSigHandler)\n\thandlers.Send.PushBackNamed(corehandlers.SendHandler)\n\thandlers.AfterRetry.PushBackNamed(corehandlers.AfterRetryHandler)\n\thandlers.ValidateResponse.PushBackNamed(corehandlers.ValidateResponseHandler)\n\n\treturn handlers\n}\n\n// CredChain returns the default credential chain.\n//\n// Generally you shouldn't need to use this method directly, but\n// is available if you need to reset the credentials of an\n// existing service client or session's Config.\nfunc CredChain(cfg *aws.Config, handlers request.Handlers) *credentials.Credentials {\n\treturn credentials.NewCredentials(&credentials.ChainProvider{\n\t\tVerboseErrors: aws.BoolValue(cfg.CredentialsChainVerboseErrors),\n\t\tProviders:     CredProviders(cfg, handlers),\n\t})\n}\n\n// CredProviders returns the slice of providers used in\n// the default credential chain.\n//\n// For applications that need to use some other provider (for example use\n// different  environment variables for legacy reasons) but still fall back\n// on the default chain of providers. This allows that default chaint to be\n// automatically updated\nfunc CredProviders(cfg *aws.Config, handlers request.Handlers) []credentials.Provider {\n\treturn []credentials.Provider{\n\t\t&credentials.EnvProvider{},\n\t\t&credentials.SharedCredentialsProvider{Filename: \"\", Profile: \"\"},\n\t\tRemoteCredProvider(*cfg, handlers),\n\t}\n}\n\nconst (\n\thttpProviderAuthorizationEnvVar = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\"\n\thttpProviderAuthFileEnvVar      = \"AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE\"\n\thttpProviderEnvVar              = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\"\n)\n\n// direct representation of the IPv4 address for the ECS container\n// \"169.254.170.2\"\nvar ecsContainerIPv4 net.IP = []byte{\n\t169, 254, 170, 2,\n}\n\n// direct representation of the IPv4 address for the EKS container\n// \"169.254.170.23\"\nvar eksContainerIPv4 net.IP = []byte{\n\t169, 254, 170, 23,\n}\n\n// direct representation of the IPv6 address for the EKS container\n// \"fd00:ec2::23\"\nvar eksContainerIPv6 net.IP = []byte{\n\t0xFD, 0, 0xE, 0xC2,\n\t0, 0, 0, 0,\n\t0, 0, 0, 0,\n\t0, 0, 0, 0x23,\n}\n\n// RemoteCredProvider returns a credentials provider for the default remote\n// endpoints such as EC2 or ECS Roles.\nfunc RemoteCredProvider(cfg aws.Config, handlers request.Handlers) credentials.Provider {\n\tif u := os.Getenv(httpProviderEnvVar); len(u) > 0 {\n\t\treturn localHTTPCredProvider(cfg, handlers, u)\n\t}\n\n\tif uri := os.Getenv(shareddefaults.ECSCredsProviderEnvVar); len(uri) > 0 {\n\t\tu := fmt.Sprintf(\"%s%s\", shareddefaults.ECSContainerCredentialsURI, uri)\n\t\treturn httpCredProvider(cfg, handlers, u)\n\t}\n\n\treturn ec2RoleProvider(cfg, handlers)\n}\n\nvar lookupHostFn = net.LookupHost\n\n// isAllowedHost allows host to be loopback or known ECS/EKS container IPs\n//\n// host can either be an IP address OR an unresolved hostname - resolution will\n// be automatically performed in the latter case\nfunc isAllowedHost(host string) (bool, error) {\n\tif ip := net.ParseIP(host); ip != nil {\n\t\treturn isIPAllowed(ip), nil\n\t}\n\n\taddrs, err := lookupHostFn(host)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tfor _, addr := range addrs {\n\t\tif ip := net.ParseIP(addr); ip == nil || !isIPAllowed(ip) {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\n\treturn true, nil\n}\n\nfunc isIPAllowed(ip net.IP) bool {\n\treturn ip.IsLoopback() ||\n\t\tip.Equal(ecsContainerIPv4) ||\n\t\tip.Equal(eksContainerIPv4) ||\n\t\tip.Equal(eksContainerIPv6)\n}\n\nfunc localHTTPCredProvider(cfg aws.Config, handlers request.Handlers, u string) credentials.Provider {\n\tvar errMsg string\n\n\tparsed, err := url.Parse(u)\n\tif err != nil {\n\t\terrMsg = fmt.Sprintf(\"invalid URL, %v\", err)\n\t} else {\n\t\thost := aws.URLHostname(parsed)\n\t\tif len(host) == 0 {\n\t\t\terrMsg = \"unable to parse host from local HTTP cred provider URL\"\n\t\t} else if parsed.Scheme == \"http\" {\n\t\t\tif isAllowedHost, allowHostErr := isAllowedHost(host); allowHostErr != nil {\n\t\t\t\terrMsg = fmt.Sprintf(\"failed to resolve host %q, %v\", host, allowHostErr)\n\t\t\t} else if !isAllowedHost {\n\t\t\t\terrMsg = fmt.Sprintf(\"invalid endpoint host, %q, only loopback/ecs/eks hosts are allowed.\", host)\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(errMsg) > 0 {\n\t\tif cfg.Logger != nil {\n\t\t\tcfg.Logger.Log(\"Ignoring, HTTP credential provider\", errMsg, err)\n\t\t}\n\t\treturn credentials.ErrorProvider{\n\t\t\tErr:          awserr.New(\"CredentialsEndpointError\", errMsg, err),\n\t\t\tProviderName: endpointcreds.ProviderName,\n\t\t}\n\t}\n\n\treturn httpCredProvider(cfg, handlers, u)\n}\n\nfunc httpCredProvider(cfg aws.Config, handlers request.Handlers, u string) credentials.Provider {\n\treturn endpointcreds.NewProviderClient(cfg, handlers, u,\n\t\tfunc(p *endpointcreds.Provider) {\n\t\t\tp.ExpiryWindow = 5 * time.Minute\n\t\t\tp.AuthorizationToken = os.Getenv(httpProviderAuthorizationEnvVar)\n\t\t\tif authFilePath := os.Getenv(httpProviderAuthFileEnvVar); authFilePath != \"\" {\n\t\t\t\tp.AuthorizationTokenProvider = endpointcreds.TokenProviderFunc(func() (string, error) {\n\t\t\t\t\tif contents, err := ioutil.ReadFile(authFilePath); err != nil {\n\t\t\t\t\t\treturn \"\", fmt.Errorf(\"failed to read authorization token from %v: %v\", authFilePath, err)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn string(contents), nil\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t)\n}\n\nfunc ec2RoleProvider(cfg aws.Config, handlers request.Handlers) credentials.Provider {\n\tresolver := cfg.EndpointResolver\n\tif resolver == nil {\n\t\tresolver = endpoints.DefaultResolver()\n\t}\n\n\te, _ := resolver.EndpointFor(endpoints.Ec2metadataServiceID, \"\")\n\treturn &ec2rolecreds.EC2RoleProvider{\n\t\tClient:       ec2metadata.NewClient(cfg, handlers, e.URL, e.SigningRegion),\n\t\tExpiryWindow: 5 * time.Minute,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/defaults/shared_config.go",
    "content": "package defaults\n\nimport (\n\t\"github.com/aws/aws-sdk-go/internal/shareddefaults\"\n)\n\n// SharedCredentialsFilename returns the SDK's default file path\n// for the shared credentials file.\n//\n// Builds the shared config file path based on the OS's platform.\n//\n//   - Linux/Unix: $HOME/.aws/credentials\n//   - Windows: %USERPROFILE%\\.aws\\credentials\nfunc SharedCredentialsFilename() string {\n\treturn shareddefaults.SharedCredentialsFilename()\n}\n\n// SharedConfigFilename returns the SDK's default file path for\n// the shared config file.\n//\n// Builds the shared config file path based on the OS's platform.\n//\n//   - Linux/Unix: $HOME/.aws/config\n//   - Windows: %USERPROFILE%\\.aws\\config\nfunc SharedConfigFilename() string {\n\treturn shareddefaults.SharedConfigFilename()\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/doc.go",
    "content": "// Package aws provides the core SDK's utilities and shared types. Use this package's\n// utilities to simplify setting and reading API operations parameters.\n//\n// Value and Pointer Conversion Utilities\n//\n// This package includes a helper conversion utility for each scalar type the SDK's\n// API use. These utilities make getting a pointer of the scalar, and dereferencing\n// a pointer easier.\n//\n// Each conversion utility comes in two forms. Value to Pointer and Pointer to Value.\n// The Pointer to value will safely dereference the pointer and return its value.\n// If the pointer was nil, the scalar's zero value will be returned.\n//\n// The value to pointer functions will be named after the scalar type. So get a\n// *string from a string value use the \"String\" function. This makes it easy to\n// to get pointer of a literal string value, because getting the address of a\n// literal requires assigning the value to a variable first.\n//\n//    var strPtr *string\n//\n//    // Without the SDK's conversion functions\n//    str := \"my string\"\n//    strPtr = &str\n//\n//    // With the SDK's conversion functions\n//    strPtr = aws.String(\"my string\")\n//\n//    // Convert *string to string value\n//    str = aws.StringValue(strPtr)\n//\n// In addition to scalars the aws package also includes conversion utilities for\n// map and slice for commonly types used in API parameters. The map and slice\n// conversion functions use similar naming pattern as the scalar conversion\n// functions.\n//\n//    var strPtrs []*string\n//    var strs []string = []string{\"Go\", \"Gophers\", \"Go\"}\n//\n//    // Convert []string to []*string\n//    strPtrs = aws.StringSlice(strs)\n//\n//    // Convert []*string to []string\n//    strs = aws.StringValueSlice(strPtrs)\n//\n// SDK Default HTTP Client\n//\n// The SDK will use the http.DefaultClient if a HTTP client is not provided to\n// the SDK's Session, or service client constructor. This means that if the\n// http.DefaultClient is modified by other components of your application the\n// modifications will be picked up by the SDK as well.\n//\n// In some cases this might be intended, but it is a better practice to create\n// a custom HTTP Client to share explicitly through your application. You can\n// configure the SDK to use the custom HTTP Client by setting the HTTPClient\n// value of the SDK's Config type when creating a Session or service client.\npackage aws\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go",
    "content": "package ec2metadata\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/internal/sdkuri\"\n)\n\n// getToken uses the duration to return a token for EC2 metadata service,\n// or an error if the request failed.\nfunc (c *EC2Metadata) getToken(ctx aws.Context, duration time.Duration) (tokenOutput, error) {\n\top := &request.Operation{\n\t\tName:       \"GetToken\",\n\t\tHTTPMethod: \"PUT\",\n\t\tHTTPPath:   \"/latest/api/token\",\n\t}\n\n\tvar output tokenOutput\n\treq := c.NewRequest(op, nil, &output)\n\treq.SetContext(ctx)\n\n\t// remove the fetch token handler from the request handlers to avoid infinite recursion\n\treq.Handlers.Sign.RemoveByName(fetchTokenHandlerName)\n\n\t// Swap the unmarshalMetadataHandler with unmarshalTokenHandler on this request.\n\treq.Handlers.Unmarshal.Swap(unmarshalMetadataHandlerName, unmarshalTokenHandler)\n\n\tttl := strconv.FormatInt(int64(duration/time.Second), 10)\n\treq.HTTPRequest.Header.Set(ttlHeader, ttl)\n\n\terr := req.Send()\n\n\t// Errors with bad request status should be returned.\n\tif err != nil {\n\t\terr = awserr.NewRequestFailure(\n\t\t\tawserr.New(req.HTTPResponse.Status, http.StatusText(req.HTTPResponse.StatusCode), err),\n\t\t\treq.HTTPResponse.StatusCode, req.RequestID)\n\t}\n\n\treturn output, err\n}\n\n// GetMetadata uses the path provided to request information from the EC2\n// instance metadata service. The content will be returned as a string, or\n// error if the request failed.\nfunc (c *EC2Metadata) GetMetadata(p string) (string, error) {\n\treturn c.GetMetadataWithContext(aws.BackgroundContext(), p)\n}\n\n// GetMetadataWithContext uses the path provided to request information from the EC2\n// instance metadata service. The content will be returned as a string, or\n// error if the request failed.\nfunc (c *EC2Metadata) GetMetadataWithContext(ctx aws.Context, p string) (string, error) {\n\top := &request.Operation{\n\t\tName:       \"GetMetadata\",\n\t\tHTTPMethod: \"GET\",\n\t\tHTTPPath:   sdkuri.PathJoin(\"/latest/meta-data\", p),\n\t}\n\toutput := &metadataOutput{}\n\n\treq := c.NewRequest(op, nil, output)\n\n\treq.SetContext(ctx)\n\n\terr := req.Send()\n\treturn output.Content, err\n}\n\n// GetUserData returns the userdata that was configured for the service. If\n// there is no user-data setup for the EC2 instance a \"NotFoundError\" error\n// code will be returned.\nfunc (c *EC2Metadata) GetUserData() (string, error) {\n\treturn c.GetUserDataWithContext(aws.BackgroundContext())\n}\n\n// GetUserDataWithContext returns the userdata that was configured for the service. If\n// there is no user-data setup for the EC2 instance a \"NotFoundError\" error\n// code will be returned.\nfunc (c *EC2Metadata) GetUserDataWithContext(ctx aws.Context) (string, error) {\n\top := &request.Operation{\n\t\tName:       \"GetUserData\",\n\t\tHTTPMethod: \"GET\",\n\t\tHTTPPath:   \"/latest/user-data\",\n\t}\n\n\toutput := &metadataOutput{}\n\treq := c.NewRequest(op, nil, output)\n\treq.SetContext(ctx)\n\n\terr := req.Send()\n\treturn output.Content, err\n}\n\n// GetDynamicData uses the path provided to request information from the EC2\n// instance metadata service for dynamic data. The content will be returned\n// as a string, or error if the request failed.\nfunc (c *EC2Metadata) GetDynamicData(p string) (string, error) {\n\treturn c.GetDynamicDataWithContext(aws.BackgroundContext(), p)\n}\n\n// GetDynamicDataWithContext uses the path provided to request information from the EC2\n// instance metadata service for dynamic data. The content will be returned\n// as a string, or error if the request failed.\nfunc (c *EC2Metadata) GetDynamicDataWithContext(ctx aws.Context, p string) (string, error) {\n\top := &request.Operation{\n\t\tName:       \"GetDynamicData\",\n\t\tHTTPMethod: \"GET\",\n\t\tHTTPPath:   sdkuri.PathJoin(\"/latest/dynamic\", p),\n\t}\n\n\toutput := &metadataOutput{}\n\treq := c.NewRequest(op, nil, output)\n\treq.SetContext(ctx)\n\n\terr := req.Send()\n\treturn output.Content, err\n}\n\n// GetInstanceIdentityDocument retrieves an identity document describing an\n// instance. Error is returned if the request fails or is unable to parse\n// the response.\nfunc (c *EC2Metadata) GetInstanceIdentityDocument() (EC2InstanceIdentityDocument, error) {\n\treturn c.GetInstanceIdentityDocumentWithContext(aws.BackgroundContext())\n}\n\n// GetInstanceIdentityDocumentWithContext retrieves an identity document describing an\n// instance. Error is returned if the request fails or is unable to parse\n// the response.\nfunc (c *EC2Metadata) GetInstanceIdentityDocumentWithContext(ctx aws.Context) (EC2InstanceIdentityDocument, error) {\n\tresp, err := c.GetDynamicDataWithContext(ctx, \"instance-identity/document\")\n\tif err != nil {\n\t\treturn EC2InstanceIdentityDocument{},\n\t\t\tawserr.New(\"EC2MetadataRequestError\",\n\t\t\t\t\"failed to get EC2 instance identity document\", err)\n\t}\n\n\tdoc := EC2InstanceIdentityDocument{}\n\tif err := json.NewDecoder(strings.NewReader(resp)).Decode(&doc); err != nil {\n\t\treturn EC2InstanceIdentityDocument{},\n\t\t\tawserr.New(request.ErrCodeSerialization,\n\t\t\t\t\"failed to decode EC2 instance identity document\", err)\n\t}\n\n\treturn doc, nil\n}\n\n// IAMInfo retrieves IAM info from the metadata API\nfunc (c *EC2Metadata) IAMInfo() (EC2IAMInfo, error) {\n\treturn c.IAMInfoWithContext(aws.BackgroundContext())\n}\n\n// IAMInfoWithContext retrieves IAM info from the metadata API\nfunc (c *EC2Metadata) IAMInfoWithContext(ctx aws.Context) (EC2IAMInfo, error) {\n\tresp, err := c.GetMetadataWithContext(ctx, \"iam/info\")\n\tif err != nil {\n\t\treturn EC2IAMInfo{},\n\t\t\tawserr.New(\"EC2MetadataRequestError\",\n\t\t\t\t\"failed to get EC2 IAM info\", err)\n\t}\n\n\tinfo := EC2IAMInfo{}\n\tif err := json.NewDecoder(strings.NewReader(resp)).Decode(&info); err != nil {\n\t\treturn EC2IAMInfo{},\n\t\t\tawserr.New(request.ErrCodeSerialization,\n\t\t\t\t\"failed to decode EC2 IAM info\", err)\n\t}\n\n\tif info.Code != \"Success\" {\n\t\terrMsg := fmt.Sprintf(\"failed to get EC2 IAM Info (%s)\", info.Code)\n\t\treturn EC2IAMInfo{},\n\t\t\tawserr.New(\"EC2MetadataError\", errMsg, nil)\n\t}\n\n\treturn info, nil\n}\n\n// Region returns the region the instance is running in.\nfunc (c *EC2Metadata) Region() (string, error) {\n\treturn c.RegionWithContext(aws.BackgroundContext())\n}\n\n// RegionWithContext returns the region the instance is running in.\nfunc (c *EC2Metadata) RegionWithContext(ctx aws.Context) (string, error) {\n\tec2InstanceIdentityDocument, err := c.GetInstanceIdentityDocumentWithContext(ctx)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// extract region from the ec2InstanceIdentityDocument\n\tregion := ec2InstanceIdentityDocument.Region\n\tif len(region) == 0 {\n\t\treturn \"\", awserr.New(\"EC2MetadataError\", \"invalid region received for ec2metadata instance\", nil)\n\t}\n\t// returns region\n\treturn region, nil\n}\n\n// Available returns if the application has access to the EC2 Metadata service.\n// Can be used to determine if application is running within an EC2 Instance and\n// the metadata service is available.\nfunc (c *EC2Metadata) Available() bool {\n\treturn c.AvailableWithContext(aws.BackgroundContext())\n}\n\n// AvailableWithContext returns if the application has access to the EC2 Metadata service.\n// Can be used to determine if application is running within an EC2 Instance and\n// the metadata service is available.\nfunc (c *EC2Metadata) AvailableWithContext(ctx aws.Context) bool {\n\tif _, err := c.GetMetadataWithContext(ctx, \"instance-id\"); err != nil {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n// An EC2IAMInfo provides the shape for unmarshaling\n// an IAM info from the metadata API\ntype EC2IAMInfo struct {\n\tCode               string\n\tLastUpdated        time.Time\n\tInstanceProfileArn string\n\tInstanceProfileID  string\n}\n\n// An EC2InstanceIdentityDocument provides the shape for unmarshaling\n// an instance identity document\ntype EC2InstanceIdentityDocument struct {\n\tDevpayProductCodes      []string  `json:\"devpayProductCodes\"`\n\tMarketplaceProductCodes []string  `json:\"marketplaceProductCodes\"`\n\tAvailabilityZone        string    `json:\"availabilityZone\"`\n\tPrivateIP               string    `json:\"privateIp\"`\n\tVersion                 string    `json:\"version\"`\n\tRegion                  string    `json:\"region\"`\n\tInstanceID              string    `json:\"instanceId\"`\n\tBillingProducts         []string  `json:\"billingProducts\"`\n\tInstanceType            string    `json:\"instanceType\"`\n\tAccountID               string    `json:\"accountId\"`\n\tPendingTime             time.Time `json:\"pendingTime\"`\n\tImageID                 string    `json:\"imageId\"`\n\tKernelID                string    `json:\"kernelId\"`\n\tRamdiskID               string    `json:\"ramdiskId\"`\n\tArchitecture            string    `json:\"architecture\"`\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go",
    "content": "// Package ec2metadata provides the client for making API calls to the\n// EC2 Metadata service.\n//\n// This package's client can be disabled completely by setting the environment\n// variable \"AWS_EC2_METADATA_DISABLED=true\". This environment variable set to\n// true instructs the SDK to disable the EC2 Metadata client. The client cannot\n// be used while the environment variable is set to true, (case insensitive).\n//\n// The endpoint of the EC2 IMDS client can be configured via the environment\n// variable, AWS_EC2_METADATA_SERVICE_ENDPOINT when creating the client with a\n// Session. See aws/session#Options.EC2IMDSEndpoint for more details.\npackage ec2metadata\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/client\"\n\t\"github.com/aws/aws-sdk-go/aws/client/metadata\"\n\t\"github.com/aws/aws-sdk-go/aws/corehandlers\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\nconst (\n\t// ServiceName is the name of the service.\n\tServiceName          = \"ec2metadata\"\n\tdisableServiceEnvVar = \"AWS_EC2_METADATA_DISABLED\"\n\n\t// Headers for Token and TTL\n\tttlHeader   = \"x-aws-ec2-metadata-token-ttl-seconds\"\n\ttokenHeader = \"x-aws-ec2-metadata-token\"\n\n\t// Named Handler constants\n\tfetchTokenHandlerName          = \"FetchTokenHandler\"\n\tunmarshalMetadataHandlerName   = \"unmarshalMetadataHandler\"\n\tunmarshalTokenHandlerName      = \"unmarshalTokenHandler\"\n\tenableTokenProviderHandlerName = \"enableTokenProviderHandler\"\n\n\t// TTL constants\n\tdefaultTTL          = 21600 * time.Second\n\tttlExpirationWindow = 30 * time.Second\n)\n\n// A EC2Metadata is an EC2 Metadata service Client.\ntype EC2Metadata struct {\n\t*client.Client\n}\n\n// New creates a new instance of the EC2Metadata client with a session.\n// This client is safe to use across multiple goroutines.\n//\n// Example:\n//\n//\t// Create a EC2Metadata client from just a session.\n//\tsvc := ec2metadata.New(mySession)\n//\n//\t// Create a EC2Metadata client with additional configuration\n//\tsvc := ec2metadata.New(mySession, aws.NewConfig().WithLogLevel(aws.LogDebugHTTPBody))\nfunc New(p client.ConfigProvider, cfgs ...*aws.Config) *EC2Metadata {\n\tc := p.ClientConfig(ServiceName, cfgs...)\n\treturn NewClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)\n}\n\n// NewClient returns a new EC2Metadata client. Should be used to create\n// a client when not using a session. Generally using just New with a session\n// is preferred.\n//\n// Will remove the URL path from the endpoint provided to ensure the EC2 IMDS\n// client is able to communicate with the EC2 IMDS API.\n//\n// If an unmodified HTTP client is provided from the stdlib default, or no client\n// the EC2RoleProvider's EC2Metadata HTTP client's timeout will be shortened.\n// To disable this set Config.EC2MetadataDisableTimeoutOverride to false. Enabled by default.\nfunc NewClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string, opts ...func(*client.Client)) *EC2Metadata {\n\tif !aws.BoolValue(cfg.EC2MetadataDisableTimeoutOverride) && httpClientZero(cfg.HTTPClient) {\n\t\t// If the http client is unmodified and this feature is not disabled\n\t\t// set custom timeouts for EC2Metadata requests.\n\t\tcfg.HTTPClient = &http.Client{\n\t\t\t// use a shorter timeout than default because the metadata\n\t\t\t// service is local if it is running, and to fail faster\n\t\t\t// if not running on an ec2 instance.\n\t\t\tTimeout: 1 * time.Second,\n\t\t}\n\t\t// max number of retries on the client operation\n\t\tcfg.MaxRetries = aws.Int(2)\n\t}\n\n\tif u, err := url.Parse(endpoint); err == nil {\n\t\t// Remove path from the endpoint since it will be added by requests.\n\t\t// This is an artifact of the SDK adding `/latest` to the endpoint for\n\t\t// EC2 IMDS, but this is now moved to the operation definition.\n\t\tu.Path = \"\"\n\t\tu.RawPath = \"\"\n\t\tendpoint = u.String()\n\t}\n\n\tsvc := &EC2Metadata{\n\t\tClient: client.New(\n\t\t\tcfg,\n\t\t\tmetadata.ClientInfo{\n\t\t\t\tServiceName: ServiceName,\n\t\t\t\tServiceID:   ServiceName,\n\t\t\t\tEndpoint:    endpoint,\n\t\t\t\tAPIVersion:  \"latest\",\n\t\t\t},\n\t\t\thandlers,\n\t\t),\n\t}\n\n\t// token provider instance\n\ttp := newTokenProvider(svc, defaultTTL)\n\n\t// NamedHandler for fetching token\n\tsvc.Handlers.Sign.PushBackNamed(request.NamedHandler{\n\t\tName: fetchTokenHandlerName,\n\t\tFn:   tp.fetchTokenHandler,\n\t})\n\t// NamedHandler for enabling token provider\n\tsvc.Handlers.Complete.PushBackNamed(request.NamedHandler{\n\t\tName: enableTokenProviderHandlerName,\n\t\tFn:   tp.enableTokenProviderHandler,\n\t})\n\n\tsvc.Handlers.Unmarshal.PushBackNamed(unmarshalHandler)\n\tsvc.Handlers.UnmarshalError.PushBack(unmarshalError)\n\tsvc.Handlers.Validate.Clear()\n\tsvc.Handlers.Validate.PushBack(validateEndpointHandler)\n\n\t// Disable the EC2 Metadata service if the environment variable is set.\n\t// This short-circuits the service's functionality to always fail to send\n\t// requests.\n\tif strings.ToLower(os.Getenv(disableServiceEnvVar)) == \"true\" {\n\t\tsvc.Handlers.Send.SwapNamed(request.NamedHandler{\n\t\t\tName: corehandlers.SendHandler.Name,\n\t\t\tFn: func(r *request.Request) {\n\t\t\t\tr.HTTPResponse = &http.Response{\n\t\t\t\t\tHeader: http.Header{},\n\t\t\t\t}\n\t\t\t\tr.Error = awserr.New(\n\t\t\t\t\trequest.CanceledErrorCode,\n\t\t\t\t\t\"EC2 IMDS access disabled via \"+disableServiceEnvVar+\" env var\",\n\t\t\t\t\tnil)\n\t\t\t},\n\t\t})\n\t}\n\n\t// Add additional options to the service config\n\tfor _, option := range opts {\n\t\toption(svc.Client)\n\t}\n\treturn svc\n}\n\nfunc httpClientZero(c *http.Client) bool {\n\treturn c == nil || (c.Transport == nil && c.CheckRedirect == nil && c.Jar == nil && c.Timeout == 0)\n}\n\ntype metadataOutput struct {\n\tContent string\n}\n\ntype tokenOutput struct {\n\tToken string\n\tTTL   time.Duration\n}\n\n// unmarshal token handler is used to parse the response of a getToken operation\nvar unmarshalTokenHandler = request.NamedHandler{\n\tName: unmarshalTokenHandlerName,\n\tFn: func(r *request.Request) {\n\t\tdefer r.HTTPResponse.Body.Close()\n\t\tvar b bytes.Buffer\n\t\tif _, err := io.Copy(&b, r.HTTPResponse.Body); err != nil {\n\t\t\tr.Error = awserr.NewRequestFailure(awserr.New(request.ErrCodeSerialization,\n\t\t\t\t\"unable to unmarshal EC2 metadata response\", err), r.HTTPResponse.StatusCode, r.RequestID)\n\t\t\treturn\n\t\t}\n\n\t\tv := r.HTTPResponse.Header.Get(ttlHeader)\n\t\tdata, ok := r.Data.(*tokenOutput)\n\t\tif !ok {\n\t\t\treturn\n\t\t}\n\n\t\tdata.Token = b.String()\n\t\t// TTL is in seconds\n\t\ti, err := strconv.ParseInt(v, 10, 64)\n\t\tif err != nil {\n\t\t\tr.Error = awserr.NewRequestFailure(awserr.New(request.ParamFormatErrCode,\n\t\t\t\t\"unable to parse EC2 token TTL response\", err), r.HTTPResponse.StatusCode, r.RequestID)\n\t\t\treturn\n\t\t}\n\t\tt := time.Duration(i) * time.Second\n\t\tdata.TTL = t\n\t},\n}\n\nvar unmarshalHandler = request.NamedHandler{\n\tName: unmarshalMetadataHandlerName,\n\tFn: func(r *request.Request) {\n\t\tdefer r.HTTPResponse.Body.Close()\n\t\tvar b bytes.Buffer\n\t\tif _, err := io.Copy(&b, r.HTTPResponse.Body); err != nil {\n\t\t\tr.Error = awserr.NewRequestFailure(awserr.New(request.ErrCodeSerialization,\n\t\t\t\t\"unable to unmarshal EC2 metadata response\", err), r.HTTPResponse.StatusCode, r.RequestID)\n\t\t\treturn\n\t\t}\n\n\t\tif data, ok := r.Data.(*metadataOutput); ok {\n\t\t\tdata.Content = b.String()\n\t\t}\n\t},\n}\n\nfunc unmarshalError(r *request.Request) {\n\tdefer r.HTTPResponse.Body.Close()\n\tvar b bytes.Buffer\n\n\tif _, err := io.Copy(&b, r.HTTPResponse.Body); err != nil {\n\t\tr.Error = awserr.NewRequestFailure(\n\t\t\tawserr.New(request.ErrCodeSerialization, \"unable to unmarshal EC2 metadata error response\", err),\n\t\t\tr.HTTPResponse.StatusCode, r.RequestID)\n\t\treturn\n\t}\n\n\t// Response body format is not consistent between metadata endpoints.\n\t// Grab the error message as a string and include that as the source error\n\tr.Error = awserr.NewRequestFailure(\n\t\tawserr.New(\"EC2MetadataError\", \"failed to make EC2Metadata request\\n\"+b.String(), nil),\n\t\tr.HTTPResponse.StatusCode, r.RequestID)\n}\n\nfunc validateEndpointHandler(r *request.Request) {\n\tif r.ClientInfo.Endpoint == \"\" {\n\t\tr.Error = aws.ErrMissingEndpoint\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/token_provider.go",
    "content": "package ec2metadata\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// A tokenProvider struct provides access to EC2Metadata client\n// and atomic instance of a token, along with configuredTTL for it.\n// tokenProvider also provides an atomic flag to disable the\n// fetch token operation.\n// The disabled member will use 0 as false, and 1 as true.\ntype tokenProvider struct {\n\tclient        *EC2Metadata\n\ttoken         atomic.Value\n\tconfiguredTTL time.Duration\n\tdisabled      uint32\n}\n\n// A ec2Token struct helps use of token in EC2 Metadata service ops\ntype ec2Token struct {\n\ttoken string\n\tcredentials.Expiry\n}\n\n// newTokenProvider provides a pointer to a tokenProvider instance\nfunc newTokenProvider(c *EC2Metadata, duration time.Duration) *tokenProvider {\n\treturn &tokenProvider{client: c, configuredTTL: duration}\n}\n\n// check if fallback is enabled\nfunc (t *tokenProvider) fallbackEnabled() bool {\n\treturn t.client.Config.EC2MetadataEnableFallback == nil || *t.client.Config.EC2MetadataEnableFallback\n}\n\n// fetchTokenHandler fetches token for EC2Metadata service client by default.\nfunc (t *tokenProvider) fetchTokenHandler(r *request.Request) {\n\t// short-circuits to insecure data flow if tokenProvider is disabled.\n\tif v := atomic.LoadUint32(&t.disabled); v == 1 && t.fallbackEnabled() {\n\t\treturn\n\t}\n\n\tif ec2Token, ok := t.token.Load().(ec2Token); ok && !ec2Token.IsExpired() {\n\t\tr.HTTPRequest.Header.Set(tokenHeader, ec2Token.token)\n\t\treturn\n\t}\n\n\toutput, err := t.client.getToken(r.Context(), t.configuredTTL)\n\n\tif err != nil {\n\t\t// only attempt fallback to insecure data flow if IMDSv1 is enabled\n\t\tif !t.fallbackEnabled() {\n\t\t\tr.Error = awserr.New(\"EC2MetadataError\", \"failed to get IMDSv2 token and fallback to IMDSv1 is disabled\", err)\n\t\t\treturn\n\t\t}\n\n\t\t// change the disabled flag on token provider to true and fallback\n\t\tif requestFailureError, ok := err.(awserr.RequestFailure); ok {\n\t\t\tswitch requestFailureError.StatusCode() {\n\t\t\tcase http.StatusForbidden, http.StatusNotFound, http.StatusMethodNotAllowed:\n\t\t\t\tatomic.StoreUint32(&t.disabled, 1)\n\t\t\t\tt.client.Config.Logger.Log(fmt.Sprintf(\"WARN: failed to get session token, falling back to IMDSv1: %v\", requestFailureError))\n\t\t\tcase http.StatusBadRequest:\n\t\t\t\tr.Error = requestFailureError\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\tnewToken := ec2Token{\n\t\ttoken: output.Token,\n\t}\n\tnewToken.SetExpiration(time.Now().Add(output.TTL), ttlExpirationWindow)\n\tt.token.Store(newToken)\n\n\t// Inject token header to the request.\n\tif ec2Token, ok := t.token.Load().(ec2Token); ok {\n\t\tr.HTTPRequest.Header.Set(tokenHeader, ec2Token.token)\n\t}\n}\n\n// enableTokenProviderHandler enables the token provider\nfunc (t *tokenProvider) enableTokenProviderHandler(r *request.Request) {\n\t// If the error code status is 401, we enable the token provider\n\tif e, ok := r.Error.(awserr.RequestFailure); ok && e != nil &&\n\t\te.StatusCode() == http.StatusUnauthorized {\n\t\tt.token.Store(ec2Token{})\n\t\tatomic.StoreUint32(&t.disabled, 0)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go",
    "content": "package endpoints\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\ntype modelDefinition map[string]json.RawMessage\n\n// A DecodeModelOptions are the options for how the endpoints model definition\n// are decoded.\ntype DecodeModelOptions struct {\n\tSkipCustomizations bool\n}\n\n// Set combines all of the option functions together.\nfunc (d *DecodeModelOptions) Set(optFns ...func(*DecodeModelOptions)) {\n\tfor _, fn := range optFns {\n\t\tfn(d)\n\t}\n}\n\n// DecodeModel unmarshals a Regions and Endpoint model definition file into\n// a endpoint Resolver. If the file format is not supported, or an error occurs\n// when unmarshaling the model an error will be returned.\n//\n// Casting the return value of this func to a EnumPartitions will\n// allow you to get a list of the partitions in the order the endpoints\n// will be resolved in.\n//\n//\tresolver, err := endpoints.DecodeModel(reader)\n//\n//\tpartitions := resolver.(endpoints.EnumPartitions).Partitions()\n//\tfor _, p := range partitions {\n//\t    // ... inspect partitions\n//\t}\nfunc DecodeModel(r io.Reader, optFns ...func(*DecodeModelOptions)) (Resolver, error) {\n\tvar opts DecodeModelOptions\n\topts.Set(optFns...)\n\n\t// Get the version of the partition file to determine what\n\t// unmarshaling model to use.\n\tmodelDef := modelDefinition{}\n\tif err := json.NewDecoder(r).Decode(&modelDef); err != nil {\n\t\treturn nil, newDecodeModelError(\"failed to decode endpoints model\", err)\n\t}\n\n\tvar version string\n\tif b, ok := modelDef[\"version\"]; ok {\n\t\tversion = string(b)\n\t} else {\n\t\treturn nil, newDecodeModelError(\"endpoints version not found in model\", nil)\n\t}\n\n\tif version == \"3\" {\n\t\treturn decodeV3Endpoints(modelDef, opts)\n\t}\n\n\treturn nil, newDecodeModelError(\n\t\tfmt.Sprintf(\"endpoints version %s, not supported\", version), nil)\n}\n\nfunc decodeV3Endpoints(modelDef modelDefinition, opts DecodeModelOptions) (Resolver, error) {\n\tb, ok := modelDef[\"partitions\"]\n\tif !ok {\n\t\treturn nil, newDecodeModelError(\"endpoints model missing partitions\", nil)\n\t}\n\n\tps := partitions{}\n\tif err := json.Unmarshal(b, &ps); err != nil {\n\t\treturn nil, newDecodeModelError(\"failed to decode endpoints model\", err)\n\t}\n\n\tif opts.SkipCustomizations {\n\t\treturn ps, nil\n\t}\n\n\t// Customization\n\tfor i := 0; i < len(ps); i++ {\n\t\tp := &ps[i]\n\t\tcustRegionalS3(p)\n\t\tcustRmIotDataService(p)\n\t\tcustFixAppAutoscalingChina(p)\n\t\tcustFixAppAutoscalingUsGov(p)\n\t}\n\n\treturn ps, nil\n}\n\nfunc custRegionalS3(p *partition) {\n\tif p.ID != \"aws\" {\n\t\treturn\n\t}\n\n\tservice, ok := p.Services[\"s3\"]\n\tif !ok {\n\t\treturn\n\t}\n\n\tconst awsGlobal = \"aws-global\"\n\tconst usEast1 = \"us-east-1\"\n\n\t// If global endpoint already exists no customization needed.\n\tif _, ok := service.Endpoints[endpointKey{Region: awsGlobal}]; ok {\n\t\treturn\n\t}\n\n\tservice.PartitionEndpoint = awsGlobal\n\tif _, ok := service.Endpoints[endpointKey{Region: usEast1}]; !ok {\n\t\tservice.Endpoints[endpointKey{Region: usEast1}] = endpoint{}\n\t}\n\tservice.Endpoints[endpointKey{Region: awsGlobal}] = endpoint{\n\t\tHostname: \"s3.amazonaws.com\",\n\t\tCredentialScope: credentialScope{\n\t\t\tRegion: usEast1,\n\t\t},\n\t}\n\n\tp.Services[\"s3\"] = service\n}\n\nfunc custRmIotDataService(p *partition) {\n\tdelete(p.Services, \"data.iot\")\n}\n\nfunc custFixAppAutoscalingChina(p *partition) {\n\tif p.ID != \"aws-cn\" {\n\t\treturn\n\t}\n\n\tconst serviceName = \"application-autoscaling\"\n\ts, ok := p.Services[serviceName]\n\tif !ok {\n\t\treturn\n\t}\n\n\tconst expectHostname = `autoscaling.{region}.amazonaws.com`\n\tserviceDefault := s.Defaults[defaultKey{}]\n\tif e, a := expectHostname, serviceDefault.Hostname; e != a {\n\t\tfmt.Printf(\"custFixAppAutoscalingChina: ignoring customization, expected %s, got %s\\n\", e, a)\n\t\treturn\n\t}\n\tserviceDefault.Hostname = expectHostname + \".cn\"\n\ts.Defaults[defaultKey{}] = serviceDefault\n\tp.Services[serviceName] = s\n}\n\nfunc custFixAppAutoscalingUsGov(p *partition) {\n\tif p.ID != \"aws-us-gov\" {\n\t\treturn\n\t}\n\n\tconst serviceName = \"application-autoscaling\"\n\ts, ok := p.Services[serviceName]\n\tif !ok {\n\t\treturn\n\t}\n\n\tserviceDefault := s.Defaults[defaultKey{}]\n\tif a := serviceDefault.CredentialScope.Service; a != \"\" {\n\t\tfmt.Printf(\"custFixAppAutoscalingUsGov: ignoring customization, expected empty credential scope service, got %s\\n\", a)\n\t\treturn\n\t}\n\n\tif a := serviceDefault.Hostname; a != \"\" {\n\t\tfmt.Printf(\"custFixAppAutoscalingUsGov: ignoring customization, expected empty hostname, got %s\\n\", a)\n\t\treturn\n\t}\n\n\tserviceDefault.CredentialScope.Service = \"application-autoscaling\"\n\tserviceDefault.Hostname = \"autoscaling.{region}.amazonaws.com\"\n\n\tif s.Defaults == nil {\n\t\ts.Defaults = make(endpointDefaults)\n\t}\n\n\ts.Defaults[defaultKey{}] = serviceDefault\n\n\tp.Services[serviceName] = s\n}\n\ntype decodeModelError struct {\n\tawsError\n}\n\nfunc newDecodeModelError(msg string, err error) decodeModelError {\n\treturn decodeModelError{\n\t\tawsError: awserr.New(\"DecodeEndpointsModelError\", msg, err),\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go",
    "content": "// Code generated by aws/endpoints/v3model_codegen.go. DO NOT EDIT.\n\npackage endpoints\n\nimport (\n\t\"regexp\"\n)\n\n// Partition identifiers\nconst (\n\tAwsPartitionID      = \"aws\"        // AWS Standard partition.\n\tAwsCnPartitionID    = \"aws-cn\"     // AWS China partition.\n\tAwsUsGovPartitionID = \"aws-us-gov\" // AWS GovCloud (US) partition.\n\tAwsIsoPartitionID   = \"aws-iso\"    // AWS ISO (US) partition.\n\tAwsIsoBPartitionID  = \"aws-iso-b\"  // AWS ISOB (US) partition.\n\tAwsIsoEPartitionID  = \"aws-iso-e\"  // AWS ISOE (Europe) partition.\n\tAwsIsoFPartitionID  = \"aws-iso-f\"  // AWS ISOF partition.\n)\n\n// AWS Standard partition's regions.\nconst (\n\tAfSouth1RegionID     = \"af-south-1\"     // Africa (Cape Town).\n\tApEast1RegionID      = \"ap-east-1\"      // Asia Pacific (Hong Kong).\n\tApNortheast1RegionID = \"ap-northeast-1\" // Asia Pacific (Tokyo).\n\tApNortheast2RegionID = \"ap-northeast-2\" // Asia Pacific (Seoul).\n\tApNortheast3RegionID = \"ap-northeast-3\" // Asia Pacific (Osaka).\n\tApSouth1RegionID     = \"ap-south-1\"     // Asia Pacific (Mumbai).\n\tApSouth2RegionID     = \"ap-south-2\"     // Asia Pacific (Hyderabad).\n\tApSoutheast1RegionID = \"ap-southeast-1\" // Asia Pacific (Singapore).\n\tApSoutheast2RegionID = \"ap-southeast-2\" // Asia Pacific (Sydney).\n\tApSoutheast3RegionID = \"ap-southeast-3\" // Asia Pacific (Jakarta).\n\tApSoutheast4RegionID = \"ap-southeast-4\" // Asia Pacific (Melbourne).\n\tCaCentral1RegionID   = \"ca-central-1\"   // Canada (Central).\n\tEuCentral1RegionID   = \"eu-central-1\"   // Europe (Frankfurt).\n\tEuCentral2RegionID   = \"eu-central-2\"   // Europe (Zurich).\n\tEuNorth1RegionID     = \"eu-north-1\"     // Europe (Stockholm).\n\tEuSouth1RegionID     = \"eu-south-1\"     // Europe (Milan).\n\tEuSouth2RegionID     = \"eu-south-2\"     // Europe (Spain).\n\tEuWest1RegionID      = \"eu-west-1\"      // Europe (Ireland).\n\tEuWest2RegionID      = \"eu-west-2\"      // Europe (London).\n\tEuWest3RegionID      = \"eu-west-3\"      // Europe (Paris).\n\tIlCentral1RegionID   = \"il-central-1\"   // Israel (Tel Aviv).\n\tMeCentral1RegionID   = \"me-central-1\"   // Middle East (UAE).\n\tMeSouth1RegionID     = \"me-south-1\"     // Middle East (Bahrain).\n\tSaEast1RegionID      = \"sa-east-1\"      // South America (Sao Paulo).\n\tUsEast1RegionID      = \"us-east-1\"      // US East (N. Virginia).\n\tUsEast2RegionID      = \"us-east-2\"      // US East (Ohio).\n\tUsWest1RegionID      = \"us-west-1\"      // US West (N. California).\n\tUsWest2RegionID      = \"us-west-2\"      // US West (Oregon).\n)\n\n// AWS China partition's regions.\nconst (\n\tCnNorth1RegionID     = \"cn-north-1\"     // China (Beijing).\n\tCnNorthwest1RegionID = \"cn-northwest-1\" // China (Ningxia).\n)\n\n// AWS GovCloud (US) partition's regions.\nconst (\n\tUsGovEast1RegionID = \"us-gov-east-1\" // AWS GovCloud (US-East).\n\tUsGovWest1RegionID = \"us-gov-west-1\" // AWS GovCloud (US-West).\n)\n\n// AWS ISO (US) partition's regions.\nconst (\n\tUsIsoEast1RegionID = \"us-iso-east-1\" // US ISO East.\n\tUsIsoWest1RegionID = \"us-iso-west-1\" // US ISO WEST.\n)\n\n// AWS ISOB (US) partition's regions.\nconst (\n\tUsIsobEast1RegionID = \"us-isob-east-1\" // US ISOB East (Ohio).\n)\n\n// AWS ISOE (Europe) partition's regions.\nconst ()\n\n// AWS ISOF partition's regions.\nconst ()\n\n// DefaultResolver returns an Endpoint resolver that will be able\n// to resolve endpoints for: AWS Standard, AWS China, AWS GovCloud (US), AWS ISO (US), AWS ISOB (US), AWS ISOE (Europe), and AWS ISOF.\n//\n// Use DefaultPartitions() to get the list of the default partitions.\nfunc DefaultResolver() Resolver {\n\treturn defaultPartitions\n}\n\n// DefaultPartitions returns a list of the partitions the SDK is bundled\n// with. The available partitions are: AWS Standard, AWS China, AWS GovCloud (US), AWS ISO (US), AWS ISOB (US), AWS ISOE (Europe), and AWS ISOF.\n//\n//    partitions := endpoints.DefaultPartitions\n//    for _, p := range partitions {\n//        // ... inspect partitions\n//    }\nfunc DefaultPartitions() []Partition {\n\treturn defaultPartitions.Partitions()\n}\n\nvar defaultPartitions = partitions{\n\tawsPartition,\n\tawscnPartition,\n\tawsusgovPartition,\n\tawsisoPartition,\n\tawsisobPartition,\n\tawsisoePartition,\n\tawsisofPartition,\n}\n\n// AwsPartition returns the Resolver for AWS Standard.\nfunc AwsPartition() Partition {\n\treturn awsPartition.Partition()\n}\n\nvar awsPartition = partition{\n\tID:        \"aws\",\n\tName:      \"AWS Standard\",\n\tDNSSuffix: \"amazonaws.com\",\n\tRegionRegex: regionRegex{\n\t\tRegexp: func() *regexp.Regexp {\n\t\t\treg, _ := regexp.Compile(\"^(us|eu|ap|sa|ca|me|af|il)\\\\-\\\\w+\\\\-\\\\d+$\")\n\t\t\treturn reg\n\t\t}(),\n\t},\n\tDefaults: endpointDefaults{\n\t\tdefaultKey{}: endpoint{\n\t\t\tHostname:          \"{service}.{region}.{dnsSuffix}\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t\tdefaultKey{\n\t\t\tVariant: dualStackVariant,\n\t\t}: endpoint{\n\t\t\tHostname:          \"{service}.{region}.{dnsSuffix}\",\n\t\t\tDNSSuffix:         \"api.aws\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t\tdefaultKey{\n\t\t\tVariant: fipsVariant,\n\t\t}: endpoint{\n\t\t\tHostname:          \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\tDNSSuffix:         \"amazonaws.com\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t\tdefaultKey{\n\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t}: endpoint{\n\t\t\tHostname:          \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\tDNSSuffix:         \"api.aws\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t},\n\tRegions: regions{\n\t\t\"af-south-1\": region{\n\t\t\tDescription: \"Africa (Cape Town)\",\n\t\t},\n\t\t\"ap-east-1\": region{\n\t\t\tDescription: \"Asia Pacific (Hong Kong)\",\n\t\t},\n\t\t\"ap-northeast-1\": region{\n\t\t\tDescription: \"Asia Pacific (Tokyo)\",\n\t\t},\n\t\t\"ap-northeast-2\": region{\n\t\t\tDescription: \"Asia Pacific (Seoul)\",\n\t\t},\n\t\t\"ap-northeast-3\": region{\n\t\t\tDescription: \"Asia Pacific (Osaka)\",\n\t\t},\n\t\t\"ap-south-1\": region{\n\t\t\tDescription: \"Asia Pacific (Mumbai)\",\n\t\t},\n\t\t\"ap-south-2\": region{\n\t\t\tDescription: \"Asia Pacific (Hyderabad)\",\n\t\t},\n\t\t\"ap-southeast-1\": region{\n\t\t\tDescription: \"Asia Pacific (Singapore)\",\n\t\t},\n\t\t\"ap-southeast-2\": region{\n\t\t\tDescription: \"Asia Pacific (Sydney)\",\n\t\t},\n\t\t\"ap-southeast-3\": region{\n\t\t\tDescription: \"Asia Pacific (Jakarta)\",\n\t\t},\n\t\t\"ap-southeast-4\": region{\n\t\t\tDescription: \"Asia Pacific (Melbourne)\",\n\t\t},\n\t\t\"ca-central-1\": region{\n\t\t\tDescription: \"Canada (Central)\",\n\t\t},\n\t\t\"eu-central-1\": region{\n\t\t\tDescription: \"Europe (Frankfurt)\",\n\t\t},\n\t\t\"eu-central-2\": region{\n\t\t\tDescription: \"Europe (Zurich)\",\n\t\t},\n\t\t\"eu-north-1\": region{\n\t\t\tDescription: \"Europe (Stockholm)\",\n\t\t},\n\t\t\"eu-south-1\": region{\n\t\t\tDescription: \"Europe (Milan)\",\n\t\t},\n\t\t\"eu-south-2\": region{\n\t\t\tDescription: \"Europe (Spain)\",\n\t\t},\n\t\t\"eu-west-1\": region{\n\t\t\tDescription: \"Europe (Ireland)\",\n\t\t},\n\t\t\"eu-west-2\": region{\n\t\t\tDescription: \"Europe (London)\",\n\t\t},\n\t\t\"eu-west-3\": region{\n\t\t\tDescription: \"Europe (Paris)\",\n\t\t},\n\t\t\"il-central-1\": region{\n\t\t\tDescription: \"Israel (Tel Aviv)\",\n\t\t},\n\t\t\"me-central-1\": region{\n\t\t\tDescription: \"Middle East (UAE)\",\n\t\t},\n\t\t\"me-south-1\": region{\n\t\t\tDescription: \"Middle East (Bahrain)\",\n\t\t},\n\t\t\"sa-east-1\": region{\n\t\t\tDescription: \"South America (Sao Paulo)\",\n\t\t},\n\t\t\"us-east-1\": region{\n\t\t\tDescription: \"US East (N. Virginia)\",\n\t\t},\n\t\t\"us-east-2\": region{\n\t\t\tDescription: \"US East (Ohio)\",\n\t\t},\n\t\t\"us-west-1\": region{\n\t\t\tDescription: \"US West (N. California)\",\n\t\t},\n\t\t\"us-west-2\": region{\n\t\t\tDescription: \"US West (Oregon)\",\n\t\t},\n\t},\n\tServices: services{\n\t\t\"a4b\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"access-analyzer\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"account\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"account.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"acm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"acm-pca\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"agreement-marketplace\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"airflow\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"amplify\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"amplifybackend\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"amplifyuibuilder\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"aoss\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"api.detective\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.ecr\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.ap-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.ap-southeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.ap-southeast-4.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dkr-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"dkr-us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dkr-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"dkr-us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dkr-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"dkr-us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dkr-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"dkr-us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.eu-central-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.eu-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-dkr-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-dkr-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-dkr-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-dkr-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.il-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.me-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.ecr-public\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr-public.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr-public.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.elastic-inference\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.elastic-inference.ap-northeast-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.elastic-inference.ap-northeast-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.elastic-inference.eu-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.elastic-inference.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.elastic-inference.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.elastic-inference.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.fleethub.iot\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.fleethub.iot-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.fleethub.iot-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.fleethub.iot-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.fleethub.iot-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.fleethub.iot-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.fleethub.iot-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.fleethub.iot-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.fleethub.iot-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.iotdeviceadvisor\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotdeviceadvisor.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotdeviceadvisor.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotdeviceadvisor.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotdeviceadvisor.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.iotwireless\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotwireless.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotwireless.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotwireless.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotwireless.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotwireless.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotwireless.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotwireless.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.mediatailor\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"api.pricing\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"pricing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"api.sagemaker\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api-fips.sagemaker.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api-fips.sagemaker.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api-fips.sagemaker.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api-fips.sagemaker.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api-fips.sagemaker.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api-fips.sagemaker.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api-fips.sagemaker.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api-fips.sagemaker.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api-fips.sagemaker.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.tunneling.iot\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"apigateway\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apigateway-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apigateway-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apigateway-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apigateway-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apigateway-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apigateway-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apigateway-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apigateway-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apigateway-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apigateway-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"app-integrations\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"appconfig\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"appconfigdata\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"appflow\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appflow-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appflow-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appflow-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appflow-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appflow-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appflow-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appflow-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appflow-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"application-autoscaling\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"applicationinsights\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"appmesh\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"af-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.af-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.ap-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.ap-northeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.ap-northeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.ap-northeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.ap-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.ap-southeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.ap-southeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.ap-southeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.ca-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.ca-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.eu-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.eu-north-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.eu-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.eu-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.eu-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.eu-west-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"il-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.il-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.me-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.sa-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.us-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.us-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"apprunner\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apprunner-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apprunner-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apprunner-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apprunner-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apprunner-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"apprunner-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"appstream2\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"appstream\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appstream2-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appstream2-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appstream2-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appstream2-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appstream2-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"appsync\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"aps\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"arc-zonal-shift\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"athena\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"af-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.af-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.ap-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.ap-northeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.ap-northeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.ap-northeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.ap-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.ap-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.ap-southeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.ap-southeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.ap-southeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-4\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.ap-southeast-4.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.ca-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.eu-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.eu-central-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.eu-north-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.eu-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.eu-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.eu-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.eu-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.eu-west-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"il-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.il-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.me-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.me-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.sa-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.us-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"auditmanager\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"autoscaling\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"autoscaling-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"autoscaling-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"autoscaling-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"autoscaling-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"autoscaling-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"autoscaling-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"autoscaling-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"autoscaling-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"autoscaling-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"autoscaling-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"autoscaling-plans\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"backup\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"backup-gateway\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"backupstorage\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"batch\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.batch.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.batch.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.batch.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.batch.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.batch.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.batch.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.batch.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.batch.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.batch.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"bedrock\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-runtime-ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock-runtime.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-runtime-ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock-runtime.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-runtime-eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock-runtime.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-runtime-fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock-runtime-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-runtime-fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock-runtime-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-runtime-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock-runtime.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-runtime-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock-runtime.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"bedrock-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"bedrock.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"billingconductor\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"billingconductor.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"braket\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"budgets\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"budgets.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cases\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cassandra\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cassandra-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cassandra-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cassandra-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cassandra-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"catalog.marketplace\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ce\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ce.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"chime\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"chime.us-east-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cleanrooms\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloud9\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudcontrolapi\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"clouddirectory\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudformation\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cloudfront\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"cloudfront.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cloudhsm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudhsmv2\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"cloudhsm\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudsearch\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudtrail\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudtrail-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudtrail-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudtrail-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudtrail-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudtrail-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudtrail-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudtrail-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudtrail-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cloudtrail-data\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"codeartifact\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"codebuild\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codebuild-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codebuild-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codebuild-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codebuild-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codebuild-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codebuild-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codebuild-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codebuild-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"codecatalyst\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecatalyst.global.api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"codecommit\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"codedeploy\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codedeploy-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codedeploy-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codedeploy-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codedeploy-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codedeploy-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codedeploy-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codedeploy-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codedeploy-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"codeguru-reviewer\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"codepipeline\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"codestar\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"codestar-connections\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"codestar-notifications\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cognito-identity\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-identity-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-identity-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-identity-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-identity-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-identity-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-identity-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-identity-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-identity-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cognito-idp\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-idp-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-idp-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-idp-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-idp-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-idp-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-idp-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-idp-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-idp-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cognito-sync\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"comprehend\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehend-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehend-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehend-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehend-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehend-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehend-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"comprehendmedical\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehendmedical-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehendmedical-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehendmedical-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehendmedical-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehendmedical-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehendmedical-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"compute-optimizer\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.ap-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.ap-southeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.ap-southeast-4.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.eu-central-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.eu-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.il-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.me-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"config\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"config-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"config-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"config-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"config-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"config-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"config-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"config-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"config-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"connect\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"connect-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"connect-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"connect-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"connect-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"connect-campaigns\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"connect-campaigns-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"connect-campaigns-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"connect-campaigns-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"connect-campaigns-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"contact-lens\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"controltower\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"controltower-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"controltower-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"controltower-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"controltower-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"controltower-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"controltower-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"controltower-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"controltower-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"controltower-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"controltower-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cost-optimization-hub\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cost-optimization-hub.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cur\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"data-ats.iot\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"iotdata\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"iotdata\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"iotdata\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"iotdata\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"iotdata\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"iotdata\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"data.jobs.iot\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"data.mediastore\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"databrew\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"databrew-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"databrew-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"databrew-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"databrew-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"databrew-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"databrew-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"databrew-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"databrew-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"dataexchange\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"datapipeline\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"datasync\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"datazone\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.af-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.ap-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.ap-northeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.ap-northeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.ap-northeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.ap-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.ap-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.ap-southeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.ap-southeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.ap-southeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.ap-southeast-4.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.ca-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.eu-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.eu-central-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.eu-north-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.eu-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.eu-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.eu-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.eu-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.eu-west-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.il-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.me-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.me-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.sa-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.us-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"dax\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"devicefarm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"devops-guru\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"devops-guru-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"devops-guru-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"devops-guru-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"devops-guru-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"devops-guru-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"devops-guru-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"devops-guru-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"devops-guru-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"devops-guru-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"devops-guru-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"directconnect\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"directconnect-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"directconnect-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"directconnect-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"directconnect-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"directconnect-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"directconnect-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"directconnect-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"directconnect-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"discovery\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"dlm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"dms\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dms\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"dms\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dms-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"docdb\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"drs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ds\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"dynamodb\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"local\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"localhost:8000\",\n\t\t\t\t\tProtocols: []string{\"http\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ebs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ebs-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ebs-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ebs-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ebs-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ebs-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ebs-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ebs-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ebs-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ebs-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ebs-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ec2\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2.ap-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2.eu-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2.sa-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ecs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecs-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecs-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecs-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecs-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecs-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecs-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecs-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecs-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"edge.sagemaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"eks\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"fips.eks.{region}.{dnsSuffix}\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.eks.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.eks.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.eks.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.eks.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.eks.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.eks.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.eks.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.eks.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticache\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticache-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticache-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticache-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticache-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticache-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticache-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticache-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticache-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticache-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticbeanstalk\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticfilesystem\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"af-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.af-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-northeast-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-northeast-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-northeast-3.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-south-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-southeast-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-southeast-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-southeast-3.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-4\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-southeast-4.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-central-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-north-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-north-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-south-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-west-3.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-southeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-4\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ap-southeast-4.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-central-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.il-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-me-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.me-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"il-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.il-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.me-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.me-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.sa-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticloadbalancing\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticloadbalancing-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticloadbalancing-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticloadbalancing-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticloadbalancing-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticloadbalancing-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticloadbalancing-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticloadbalancing-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticloadbalancing-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticmapreduce\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tSSLCommonName: \"{region}.{service}.{dnsSuffix}\",\n\t\t\t\t\tProtocols:     []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tSSLCommonName: \"{service}.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tSSLCommonName: \"{service}.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:      \"elasticmapreduce-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tSSLCommonName: \"{service}.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elastictranscoder\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"email\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"email-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"email-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"email-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"email-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"email-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"email-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"email-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"email-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"email-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"email-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"emr-containers\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-containers-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-containers-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-containers-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-containers-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-containers-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-containers-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-containers-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-containers-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-containers-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-containers-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"emr-serverless\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-serverless-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-serverless-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-serverless-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-serverless-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-serverless-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-serverless-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-serverless-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-serverless-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-serverless-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"emr-serverless-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"entitlement.marketplace\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"aws-marketplace\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"es\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"af-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.af-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.ap-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.ap-northeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.ap-northeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.ap-northeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.ap-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.ap-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.ap-southeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.ap-southeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.ap-southeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-4\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.ap-southeast-4.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.ca-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.eu-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.eu-central-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.eu-north-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.eu-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.eu-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.eu-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.eu-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.eu-west-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"il-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.il-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.me-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.me-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.sa-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.us-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"events\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"events-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"events-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"events-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"events-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"events-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"events-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"events-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"events-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"evidently\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"evidently.ap-northeast-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"evidently.ap-southeast-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"evidently.ap-southeast-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"evidently.eu-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"evidently.eu-north-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"evidently.eu-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"evidently.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"evidently.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"evidently.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"finspace\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"finspace-api\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"firehose\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"fms\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"af-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.af-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ap-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ap-northeast-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ap-northeast-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ap-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ap-southeast-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ap-southeast-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.eu-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.eu-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.eu-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.eu-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.eu-west-3.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.me-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.sa-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"forecast\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"forecast-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"forecast-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"forecast-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"forecast-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"forecast-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"forecast-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"forecastquery\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"forecastquery-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"forecastquery-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"forecastquery-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"forecastquery-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"forecastquery-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"forecastquery-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"frauddetector\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"fsx\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-prod-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-prod-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-prod-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-prod-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-prod-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"prod-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"prod-ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"prod-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"prod-us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"prod-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"prod-us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"prod-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"prod-us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"prod-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"prod-us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"gamelift\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"geo\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"glacier\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glacier-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glacier-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glacier-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glacier-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glacier-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glacier-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glacier-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glacier-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glacier-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glacier-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"glue\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"grafana\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"grafana.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"grafana.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"grafana.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"grafana.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"grafana.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"grafana.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"grafana.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"grafana.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"grafana.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"grafana.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"greengrass\": service{\n\t\t\tIsRegionalized: boxedTrue,\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"groundstation\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"groundstation-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"groundstation-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"groundstation-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"groundstation-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"groundstation-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"groundstation-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"guardduty\": service{\n\t\t\tIsRegionalized: boxedTrue,\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"guardduty-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"guardduty-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"guardduty-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"guardduty-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"guardduty-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"guardduty-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"guardduty-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"guardduty-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"health\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tSSLCommonName: \"health.us-east-1.amazonaws.com\",\n\t\t\t\t\tProtocols:     []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"global.health.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"health-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"health-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"healthlake\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"honeycode\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"iam\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iam.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"aws-global\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iam-fips.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iam-fips.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"iam\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"iam\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iam-fips.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"iam-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iam-fips.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"identity-chime\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"identity-chime-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"identity-chime-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"identitystore\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"importexport\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"importexport.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"v2\", \"v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\t\tService: \"IngestionService\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ingest.timestream\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ingest-fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ingest.timestream-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ingest-fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ingest.timestream-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ingest-fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ingest.timestream-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ingest-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ingest-us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ingest.timestream-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ingest-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ingest-us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ingest.timestream-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ingest-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ingest-us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ingest.timestream-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"inspector\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"inspector2\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector2-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector2-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector2-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector2-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector2-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector2-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector2-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector2-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"internetmonitor\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.af-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.ap-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.ap-northeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.ap-northeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.ap-northeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.ap-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.ap-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.ap-southeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.ap-southeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.ap-southeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.ap-southeast-4.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.ca-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.eu-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.eu-central-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.eu-north-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.eu-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.eu-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.eu-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.eu-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.eu-west-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.il-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.me-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.me-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.sa-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.us-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iot\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.ca-central-1.amazonaws.com\",\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.us-east-1.amazonaws.com\",\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.us-east-2.amazonaws.com\",\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.us-west-1.amazonaws.com\",\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.us-west-2.amazonaws.com\",\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iotanalytics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"iotevents\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotevents-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotevents-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotevents-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotevents-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotevents-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotevents-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotevents-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotevents-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ioteventsdata\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iotfleetwise\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"iotroborunner\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"iotsecuredtunneling\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iotsitewise\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotsitewise-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotsitewise-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotsitewise-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotsitewise-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotsitewise-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotsitewise-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotsitewise-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotsitewise-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iotthingsgraph\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"iotthingsgraph\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"iottwinmaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"api-ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iottwinmaker.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"api-ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iottwinmaker.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"api-ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iottwinmaker.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"api-ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iottwinmaker.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"api-ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iottwinmaker.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"api-eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iottwinmaker.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"api-eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iottwinmaker.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"api-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iottwinmaker.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"api-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iottwinmaker.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"data-ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iottwinmaker.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"data-ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iottwinmaker.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"data-ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iottwinmaker.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"data-ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iottwinmaker.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"data-ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iottwinmaker.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"data-eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iottwinmaker.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"data-eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iottwinmaker.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"data-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iottwinmaker.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"data-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iottwinmaker.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-api-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iottwinmaker-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-api-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iottwinmaker-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-data-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iottwinmaker-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-data-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iottwinmaker-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iottwinmaker-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iottwinmaker-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iottwinmaker-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iottwinmaker-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iotwireless\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotwireless.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotwireless.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotwireless.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotwireless.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iotwireless.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ivs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ivschat\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ivsrealtime\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"kafka\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"kafkaconnect\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"kendra\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"kendra-ranking\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.af-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.ap-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.ap-northeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.ap-northeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.ap-northeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.ap-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.ap-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.ap-southeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.ap-southeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.ap-southeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.ap-southeast-4.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.ca-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking-fips.ca-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.eu-central-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.eu-north-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.eu-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.eu-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.eu-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.eu-west-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.il-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.me-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.me-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.sa-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking-fips.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking-fips.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.us-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking-fips.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"kinesis\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"kinesisanalytics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"kinesisvideo\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"kms\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ProdFips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-central-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"af-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.af-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-northeast-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-northeast-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-northeast-3.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-south-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-southeast-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-southeast-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-southeast-3.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-southeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-4\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-southeast-4.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ap-southeast-4.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-central-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-central-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-north-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-north-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-south-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-west-3.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"il-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.il-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.il-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.me-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.me-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.me-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.sa-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"lakeformation\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"lambda\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"af-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.af-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.ap-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.ap-northeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.ap-northeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.ap-northeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.ap-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.ap-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.ap-southeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.ap-southeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.ap-southeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-4\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.ap-southeast-4.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.ca-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.eu-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.eu-central-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.eu-north-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.eu-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.eu-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.eu-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.eu-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.eu-west-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"il-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.il-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.me-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.me-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.sa-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.us-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"license-manager\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"license-manager-linux-subscriptions\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-linux-subscriptions-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-linux-subscriptions-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-linux-subscriptions-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-linux-subscriptions-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-linux-subscriptions-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-linux-subscriptions-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-linux-subscriptions-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-linux-subscriptions-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"license-manager-user-subscriptions\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-user-subscriptions-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-user-subscriptions-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-user-subscriptions-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-user-subscriptions-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-user-subscriptions-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-user-subscriptions-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-user-subscriptions-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-user-subscriptions-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"lightsail\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"logs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"logs-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"logs-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"logs-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"logs-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"logs-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"logs-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"logs-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"logs-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"lookoutequipment\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"lookoutmetrics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"lookoutvision\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"m2\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"machinelearning\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"macie2\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"macie2-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"macie2-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"macie2-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"macie2-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"macie2-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"macie2-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"macie2-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"macie2-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"managedblockchain\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"managedblockchain-query\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"marketplacecommerceanalytics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"media-pipelines-chime\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"media-pipelines-chime-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"media-pipelines-chime-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"media-pipelines-chime-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"media-pipelines-chime-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"mediaconnect\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"mediaconvert\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mediaconvert-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mediaconvert-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mediaconvert-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mediaconvert-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mediaconvert-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mediaconvert-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mediaconvert-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mediaconvert-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mediaconvert-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mediaconvert-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"medialive\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"medialive-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"medialive-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"medialive-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"medialive-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"medialive-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"medialive-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"mediapackage\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"mediapackage-vod\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"mediapackagev2\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"mediastore\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"meetings-chime\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"meetings-chime-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"meetings-chime-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"meetings-chime-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"meetings-chime-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"memory-db\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"memory-db-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"messaging-chime\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"messaging-chime-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"messaging-chime-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"metering.marketplace\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"aws-marketplace\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"metrics.sagemaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"mgh\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"mgn\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mgn-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mgn-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mgn-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mgn-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mgn-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mgn-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mgn-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mgn-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"migrationhub-orchestrator\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"migrationhub-strategy\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"mobileanalytics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"models-v2-lex\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"models.lex\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"lex\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"models-fips.lex.{region}.{dnsSuffix}\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"lex\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"models-fips.lex.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"models-fips.lex.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"models-fips.lex.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"models-fips.lex.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"monitoring\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"monitoring-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"monitoring-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"monitoring-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"monitoring-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"monitoring-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"monitoring-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"monitoring-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"monitoring-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"mq\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mq-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mq-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mq-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mq-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mq-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mq-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mq-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mq-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"mturk-requester\": service{\n\t\t\tIsRegionalized: boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sandbox\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mturk-requester-sandbox.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"neptune\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"network-firewall\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"networkmanager\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"networkmanager.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"aws-global\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"networkmanager-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"networkmanager-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"nimble\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"oam\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"oidc\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.ap-southeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.eu-central-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.il-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"omics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"omics.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"omics.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"omics.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"omics.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"omics-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"omics-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"omics.il-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"omics.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"omics-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"omics.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"omics-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"opsworks\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"opsworks-cm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"organizations\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"organizations.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"aws-global\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"organizations-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"organizations-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"osis\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"outposts\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"participant.connect\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"participant.connect-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"participant.connect-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"participant.connect-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"participant.connect-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"personalize\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"pi\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"pinpoint\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"mobiletargeting\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"pipes\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"polly\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"polly-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"polly-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"polly-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"polly-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"polly-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"polly-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"polly-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"polly-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"portal.sso\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.ap-southeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.eu-central-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.il-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"profile\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"profile-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"profile-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"profile-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"profile-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"profile-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"profile-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"projects.iot1click\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"proton\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"qbusiness\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.af-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.ap-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.ap-northeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.ap-northeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.ap-northeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.ap-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.ap-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.ap-southeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.ap-southeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.ap-southeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.ap-southeast-4.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.ca-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.eu-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.eu-central-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.eu-north-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.eu-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.eu-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.eu-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.eu-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.eu-west-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.il-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.me-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.me-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.sa-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.us-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"qldb\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qldb-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qldb-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qldb-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qldb-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qldb-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qldb-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qldb-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qldb-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"quicksight\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ram\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"rbin\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"rds\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds-fips.ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds-fips.us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds-fips.us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds-fips.us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds-fips.us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds.ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rds.ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds.us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rds.us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds.us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rds.us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds.us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rds.us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds.us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rds.us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tSSLCommonName: \"{service}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:      \"rds-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tSSLCommonName: \"{service}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"rds-data\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-data-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-data-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-data-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-data-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-data-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-data-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-data-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-data-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"redshift\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"redshift-serverless\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"rekognition\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rekognition-fips.ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rekognition-fips.us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rekognition-fips.us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rekognition-fips.us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rekognition-fips.us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rekognition.ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rekognition.ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rekognition.us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rekognition.us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rekognition.us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rekognition.us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rekognition.us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rekognition.us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rekognition.us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rekognition.us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"resiliencehub\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"resource-explorer-2\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.af-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.ap-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.ap-northeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.ap-northeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.ap-northeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.ap-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.ap-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.ap-southeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.ap-southeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.ap-southeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.ap-southeast-4.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.ca-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.eu-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.eu-central-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.eu-north-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.eu-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.eu-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.eu-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.eu-west-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.il-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.me-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.me-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.sa-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.us-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"resource-groups\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-groups-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-groups-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-groups-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-groups-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-groups-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-groups-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-groups-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-groups-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"robomaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"rolesanywhere\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"route53\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"aws-global\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53-fips.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53-fips.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"route53-recovery-control-config\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53-recovery-control-config.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"route53domains\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"route53resolver\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"rum\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"runtime-v2-lex\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"runtime.lex\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"lex\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.lex.{region}.{dnsSuffix}\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"lex\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.lex.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.lex.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.lex.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.lex.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"runtime.sagemaker\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.sagemaker.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.sagemaker.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.sagemaker.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.sagemaker.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.sagemaker.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.sagemaker.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.sagemaker.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.sagemaker.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.sagemaker.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"s3\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedTrue,\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols:         []string{\"http\", \"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"{service}.dualstack.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix:         \"amazonaws.com\",\n\t\t\t\t\tProtocols:         []string{\"http\", \"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"{service}-fips.dualstack.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix:         \"amazonaws.com\",\n\t\t\t\t\tProtocols:         []string{\"http\", \"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"af-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.af-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.ap-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.dualstack.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.ap-northeast-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.ap-northeast-3.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.ap-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.ap-south-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.dualstack.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.dualstack.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.ap-southeast-3.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-4\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.ap-southeast-4.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3-fips.dualstack.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.eu-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.eu-central-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.eu-north-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.eu-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.eu-south-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.eu-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.dualstack.eu-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.eu-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.eu-west-3.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"il-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.il-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.me-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.me-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"s3-external-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-external-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.sa-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.dualstack.sa-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.us-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.dualstack.us-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-fips.dualstack.us-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3-fips.dualstack.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.us-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.dualstack.us-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-fips.dualstack.us-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.us-west-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3.dualstack.us-west-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-fips.dualstack.us-west-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"s3-control\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols:         []string{\"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"{service}.dualstack.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix:         \"amazonaws.com\",\n\t\t\t\t\tProtocols:         []string{\"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"{service}-fips.dualstack.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix:         \"amazonaws.com\",\n\t\t\t\t\tProtocols:         []string{\"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.ap-south-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.ap-south-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.ca-central-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.ca-central-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.dualstack.ca-central-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.eu-central-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.eu-central-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.eu-north-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.eu-north-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.eu-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.eu-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.eu-west-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.eu-west-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.eu-west-3.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.eu-west-3.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.sa-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.sa-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.us-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.us-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.dualstack.us-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.us-east-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.us-east-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.dualstack.us-east-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.us-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.us-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.dualstack.us-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.us-west-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.us-west-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.dualstack.us-west-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"s3-outposts\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"af-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"il-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"sagemaker-geospatial\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"savingsplans\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"savingsplans.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"scheduler\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"schemas\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"sdb\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols:         []string{\"http\", \"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"v2\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sdb.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"secretsmanager\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"af-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-4\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"il-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"securityhub\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"securityhub-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"securityhub-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"securityhub-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"securityhub-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"securityhub-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"securityhub-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"securityhub-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"securityhub-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"securitylake\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"serverlessrepo\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"servicecatalog\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"servicecatalog-appregistry\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-appregistry-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-appregistry-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-appregistry-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-appregistry-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-appregistry-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-appregistry-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-appregistry-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-appregistry-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-appregistry-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-appregistry-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"servicediscovery\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"af-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.af-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.ap-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.ap-northeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.ap-northeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.ap-northeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.ap-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.ap-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.ap-southeast-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.ap-southeast-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.ap-southeast-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-4\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.ap-southeast-4.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.ca-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.ca-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.eu-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.eu-central-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.eu-north-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.eu-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.eu-south-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.eu-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.eu-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.eu-west-3.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"il-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.il-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-central-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.me-central-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-south-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.me-south-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.sa-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-east-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.us-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-west-2.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"servicequotas\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"session.qldb\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"session.qldb-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"session.qldb-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"session.qldb-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"session.qldb-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"session.qldb-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"session.qldb-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"shield\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tSSLCommonName: \"shield.us-east-1.amazonaws.com\",\n\t\t\t\t\tProtocols:     []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"shield.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"aws-global\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"shield-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"shield-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"signer\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"signer-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"signer-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"signer-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"signer-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-verification-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-verification-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-verification-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-verification-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"signer-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"signer-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"signer-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"signer-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"simspaceweaver\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"sms\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sms-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sms-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"sms-voice\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sms-voice-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sms-voice-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sms-voice-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sms-voice-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sms-voice-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sms-voice-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"snowball\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ap-northeast-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ap-northeast-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ap-northeast-3.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ap-south-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ap-southeast-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ap-southeast-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.eu-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.eu-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.eu-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.eu-west-3.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.sa-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"sns\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sns-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sns-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sns-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sns-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sns-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sns-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sns-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sns-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"sqs\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tSSLCommonName: \"{region}.queue.{dnsSuffix}\",\n\t\t\t\t\tProtocols:     []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sqs-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sqs-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sqs-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sqs-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tSSLCommonName: \"queue.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:      \"sqs-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tSSLCommonName: \"queue.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sqs-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sqs-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sqs-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ssm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ssm-contacts\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-contacts-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-contacts-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-contacts-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-contacts-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-contacts-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-contacts-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-contacts-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-contacts-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ssm-incidents\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-incidents-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-incidents-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-incidents-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-incidents-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-incidents-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-incidents-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-incidents-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-incidents-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-incidents-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-incidents-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ssm-sap\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-sap-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-sap-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-sap-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-sap-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-sap-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-sap-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-sap-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-sap-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-sap-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm-sap-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"sso\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"states\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"storagegateway\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"streams.dynamodb\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"dynamodb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"local\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"localhost:8000\",\n\t\t\t\t\tProtocols: []string{\"http\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"sts\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"support\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"support.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"supportapp\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"swf\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"synthetics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"synthetics-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"synthetics-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"synthetics-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"synthetics-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"synthetics-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"synthetics-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"synthetics-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"synthetics-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"tagging\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"textract\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"thinclient\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"tnb\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"transcribe\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"fips.transcribe.{region}.{dnsSuffix}\",\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"transcribestreaming\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"transcribestreaming-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"transcribestreaming-ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transcribestreaming-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"transcribestreaming-fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transcribestreaming-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"transcribestreaming-fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transcribestreaming-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"transcribestreaming-fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transcribestreaming-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"transcribestreaming-fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transcribestreaming-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"transcribestreaming-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"transcribestreaming-us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transcribestreaming-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"transcribestreaming-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"transcribestreaming-us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transcribestreaming-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"transcribestreaming-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"transcribestreaming-us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transcribestreaming-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"transfer\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"translate\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"translate-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"translate-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"translate-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"translate-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"translate-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"translate-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"verifiedpermissions\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"voice-chime\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"voice-chime-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"voice-chime-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"voice-chime-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"voice-chime-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"voice-chime-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"voice-chime-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"voiceid\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"voiceid-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"voiceid-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"voiceid-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"voiceid-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"voiceid-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"voiceid-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"vpc-lattice\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"waf\": service{\n\t\t\tPartitionEndpoint: \"aws-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"aws\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-fips.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-fips.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"aws-global\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-fips.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-global-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-fips.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"waf-regional\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"af-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.ap-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.ap-southeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-southeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.ap-southeast-4.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-4\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-southeast-4.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.eu-central-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-central-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-north-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.eu-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-southeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-4\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ap-southeast-4.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-central-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.il-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-me-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.me-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.il-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"il-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.il-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.me-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.me-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"wafv2\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"af-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-northeast-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.ap-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-south-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.ap-southeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-southeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.ap-southeast-4.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ap-southeast-4\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-southeast-4.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"ca-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.eu-central-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-central-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-central-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-north-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.eu-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-south-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"eu-west-3\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-af-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.af-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-northeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-northeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-northeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-northeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-southeast-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-southeast-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-southeast-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ap-southeast-4\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ap-southeast-4.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-ca-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.ca-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-central-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-central-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-north-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-south-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-south-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-eu-west-3\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.eu-west-3.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.il-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-me-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.me-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.il-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"il-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.il-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.me-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-central-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.me-central-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"me-south-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.me-south-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"sa-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.sa-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"wellarchitected\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"wisdom\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ui-ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ui-ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ui-eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ui-eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ui-us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ui-us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"workdocs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"workdocs-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"workdocs-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"workdocs-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"workdocs-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"workmail\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"workspaces\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"workspaces-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"workspaces-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"workspaces-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"workspaces-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"workspaces-web\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"xray\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"af-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-northeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ap-southeast-4\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ca-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-central-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-south-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"eu-west-3\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"xray-fips.us-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-east-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"xray-fips.us-east-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"xray-fips.us-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-west-2\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"xray-fips.us-west-2.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"il-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-central-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"me-south-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"sa-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"xray-fips.us-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-east-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-east-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"xray-fips.us-east-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"xray-fips.us-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-west-2\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-west-2\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"xray-fips.us-west-2.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n}\n\n// AwsCnPartition returns the Resolver for AWS China.\nfunc AwsCnPartition() Partition {\n\treturn awscnPartition.Partition()\n}\n\nvar awscnPartition = partition{\n\tID:        \"aws-cn\",\n\tName:      \"AWS China\",\n\tDNSSuffix: \"amazonaws.com.cn\",\n\tRegionRegex: regionRegex{\n\t\tRegexp: func() *regexp.Regexp {\n\t\t\treg, _ := regexp.Compile(\"^cn\\\\-\\\\w+\\\\-\\\\d+$\")\n\t\t\treturn reg\n\t\t}(),\n\t},\n\tDefaults: endpointDefaults{\n\t\tdefaultKey{}: endpoint{\n\t\t\tHostname:          \"{service}.{region}.{dnsSuffix}\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t\tdefaultKey{\n\t\t\tVariant: dualStackVariant,\n\t\t}: endpoint{\n\t\t\tHostname:          \"{service}.{region}.{dnsSuffix}\",\n\t\t\tDNSSuffix:         \"api.amazonwebservices.com.cn\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t\tdefaultKey{\n\t\t\tVariant: fipsVariant,\n\t\t}: endpoint{\n\t\t\tHostname:          \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\tDNSSuffix:         \"amazonaws.com.cn\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t\tdefaultKey{\n\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t}: endpoint{\n\t\t\tHostname:          \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\tDNSSuffix:         \"api.amazonwebservices.com.cn\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t},\n\tRegions: regions{\n\t\t\"cn-north-1\": region{\n\t\t\tDescription: \"China (Beijing)\",\n\t\t},\n\t\t\"cn-northwest-1\": region{\n\t\t\tDescription: \"China (Ningxia)\",\n\t\t},\n\t},\n\tServices: services{\n\t\t\"access-analyzer\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"account\": service{\n\t\t\tPartitionEndpoint: \"aws-cn-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-cn-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"account.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"acm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"airflow\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"api.ecr\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.pricing\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"pricing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"api.sagemaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"api.tunneling.iot\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"apigateway\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"appconfig\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"appconfigdata\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"application-autoscaling\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"applicationinsights\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"appmesh\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.cn-north-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appmesh.cn-northwest-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"appsync\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"arc-zonal-shift\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"athena\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.cn-north-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.cn-northwest-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"autoscaling\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"autoscaling-plans\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"backup\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"backupstorage\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"batch\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"budgets\": service{\n\t\t\tPartitionEndpoint: \"aws-cn-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-cn-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"budgets.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cassandra\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ce\": service{\n\t\t\tPartitionEndpoint: \"aws-cn-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-cn-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ce.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cloudcontrolapi\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudformation\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudfront\": service{\n\t\t\tPartitionEndpoint: \"aws-cn-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-cn-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"cloudfront.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cloudtrail\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"codebuild\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"codecommit\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"codedeploy\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"codepipeline\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cognito-identity\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"compute-optimizer\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"config\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cur\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"data-ats.iot\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"iotdata\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"data.ats.iot.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"data.jobs.iot\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"databrew\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"datasync\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"datazone\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.cn-north-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.cn-northwest-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"dax\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"directconnect\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"dlm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"dms\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"docdb\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ds\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"dynamodb\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ebs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ec2\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ecs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"eks\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"elasticache\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"elasticbeanstalk\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"elasticfilesystem\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticloadbalancing\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"elasticmapreduce\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce.cn-north-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce.cn-northwest-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"emr-containers\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"emr-serverless\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"es\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.cn-north-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.cn-northwest-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"events\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"firehose\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose.cn-north-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose.cn-northwest-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"fms\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"fsx\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"gamelift\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"glacier\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"glue\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"greengrass\": service{\n\t\t\tIsRegionalized: boxedTrue,\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"guardduty\": service{\n\t\t\tIsRegionalized: boxedTrue,\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"health\": service{\n\t\t\tPartitionEndpoint: \"aws-cn-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tSSLCommonName: \"health.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tProtocols:     []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-cn-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"global.health.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iam\": service{\n\t\t\tPartitionEndpoint: \"aws-cn-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-cn-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iam.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"identitystore\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"internetmonitor\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.cn-north-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.cn-northwest-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iot\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"iotanalytics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"iotevents\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ioteventsdata\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iotsecuredtunneling\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"iotsitewise\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"kafka\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"kendra-ranking\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.cn-north-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.cn-northwest-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"kinesis\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"kinesisanalytics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"kinesisvideo\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"kms\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"lakeformation\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"lambda\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.cn-north-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.cn-northwest-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"license-manager\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"license-manager-linux-subscriptions\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"logs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"mediaconvert\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"subscribe.mediaconvert.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"memory-db\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"metrics.sagemaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"monitoring\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"mq\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"neptune\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"oam\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"oidc\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"organizations\": service{\n\t\t\tPartitionEndpoint: \"aws-cn-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-cn-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"organizations.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"personalize\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"pi\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"polly\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"portal.sso\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"qbusiness\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.cn-north-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.cn-northwest-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ram\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"rbin\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"rds\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"redshift\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"redshift-serverless\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"resource-explorer-2\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.cn-north-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.cn-northwest-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"resource-groups\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"rolesanywhere\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"route53\": service{\n\t\t\tPartitionEndpoint: \"aws-cn-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-cn-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"route53resolver\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"runtime.sagemaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"s3\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols:         []string{\"http\", \"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"{service}.dualstack.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix:         \"amazonaws.com.cn\",\n\t\t\t\t\tProtocols:         []string{\"http\", \"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3.dualstack.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"s3-control\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols:         []string{\"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"{service}.dualstack.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix:         \"amazonaws.com.cn\",\n\t\t\t\t\tProtocols:         []string{\"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"savingsplans\": service{\n\t\t\tIsRegionalized: boxedTrue,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"savingsplans.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"savingsplans.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"schemas\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"secretsmanager\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"securityhub\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"serverlessrepo\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"servicecatalog\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"servicediscovery\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.cn-north-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.cn-northwest-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"servicequotas\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"signer\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"verification-cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"verification.signer.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"sms\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"snowball\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"sns\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"sqs\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tSSLCommonName: \"{region}.queue.{dnsSuffix}\",\n\t\t\t\t\tProtocols:     []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ssm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"sso\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"states\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states.cn-north-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states.cn-northwest-1.api.amazonwebservices.com.cn\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"storagegateway\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"streams.dynamodb\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"dynamodb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"sts\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"support\": service{\n\t\t\tPartitionEndpoint: \"aws-cn-global\",\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-cn-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"support.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"swf\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"synthetics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"tagging\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"transcribe\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cn.transcribe.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cn.transcribe.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"transcribestreaming\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"transfer\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"waf-regional\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"wafv2\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-north-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"cn-northwest-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-cn-north-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.cn-north-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-cn-northwest-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.cn-northwest-1.amazonaws.com.cn\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"workspaces\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"xray\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-north-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"cn-northwest-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t},\n}\n\n// AwsUsGovPartition returns the Resolver for AWS GovCloud (US).\nfunc AwsUsGovPartition() Partition {\n\treturn awsusgovPartition.Partition()\n}\n\nvar awsusgovPartition = partition{\n\tID:        \"aws-us-gov\",\n\tName:      \"AWS GovCloud (US)\",\n\tDNSSuffix: \"amazonaws.com\",\n\tRegionRegex: regionRegex{\n\t\tRegexp: func() *regexp.Regexp {\n\t\t\treg, _ := regexp.Compile(\"^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$\")\n\t\t\treturn reg\n\t\t}(),\n\t},\n\tDefaults: endpointDefaults{\n\t\tdefaultKey{}: endpoint{\n\t\t\tHostname:          \"{service}.{region}.{dnsSuffix}\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t\tdefaultKey{\n\t\t\tVariant: dualStackVariant,\n\t\t}: endpoint{\n\t\t\tHostname:          \"{service}.{region}.{dnsSuffix}\",\n\t\t\tDNSSuffix:         \"api.aws\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t\tdefaultKey{\n\t\t\tVariant: fipsVariant,\n\t\t}: endpoint{\n\t\t\tHostname:          \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\tDNSSuffix:         \"amazonaws.com\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t\tdefaultKey{\n\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t}: endpoint{\n\t\t\tHostname:          \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\tDNSSuffix:         \"api.aws\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t},\n\tRegions: regions{\n\t\t\"us-gov-east-1\": region{\n\t\t\tDescription: \"AWS GovCloud (US-East)\",\n\t\t},\n\t\t\"us-gov-west-1\": region{\n\t\t\tDescription: \"AWS GovCloud (US-West)\",\n\t\t},\n\t},\n\tServices: services{\n\t\t\"access-analyzer\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"access-analyzer.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"acm\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"acm-pca\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"acm-pca.{region}.{dnsSuffix}\",\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"acm-pca.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.detective\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.detective-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.ecr\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dkr-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"dkr-us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dkr-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"dkr-us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-dkr-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-dkr-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecr-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.sagemaker\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api-fips.sagemaker.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api-fips.sagemaker.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api-fips.sagemaker.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips-secondary\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.sagemaker.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-secondary\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1-secondary\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.sagemaker.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.tunneling.iot\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"apigateway\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"appconfig\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appconfig.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appconfig.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appconfig.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appconfig.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"appconfigdata\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appconfigdata.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appconfigdata.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appconfigdata.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appconfigdata.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"application-autoscaling\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tHostname:  \"autoscaling.{region}.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"application-autoscaling\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"application-autoscaling.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"application-autoscaling.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"application-autoscaling.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"application-autoscaling.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"application-autoscaling.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"application-autoscaling.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"applicationinsights\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"applicationinsights.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"applicationinsights.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"appstream2\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"appstream\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appstream2-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appstream2-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appstream2-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appstream2-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"appstream2-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"arc-zonal-shift\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"athena\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"athena-fips.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"autoscaling\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"autoscaling.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"autoscaling-plans\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"backup\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"backup-gateway\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"backupstorage\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"batch\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"batch.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"batch.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"batch.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"batch.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"batch.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cassandra\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cassandra.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cassandra.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cassandra.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cassandra.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cassandra.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cassandra.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cloudcontrolapi\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudcontrolapi-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"clouddirectory\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"clouddirectory.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"clouddirectory.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cloudformation\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudformation.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cloudhsm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudhsmv2\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"cloudhsm\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudtrail\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudtrail.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudtrail.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudtrail.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudtrail.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cloudtrail.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"codebuild\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codebuild-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codebuild-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codebuild-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codebuild-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"codecommit\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codecommit-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"codedeploy\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codedeploy-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codedeploy-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codedeploy-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codedeploy-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"codepipeline\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"codepipeline-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"codestar-connections\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cognito-identity\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-identity-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-identity-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"cognito-idp\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-idp-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"cognito-idp-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"comprehend\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehend-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehend-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"comprehendmedical\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehendmedical-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"comprehendmedical-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"compute-optimizer\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"compute-optimizer-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"config\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"config.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"config.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"config.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"config.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"config.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"connect\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"connect.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"connect.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"controltower\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"data-ats.iot\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"iotdata\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"iotdata\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"iotdata\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iot-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"data.jobs.iot\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.jobs.iot-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"databrew\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"databrew.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"databrew.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"datasync\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"datazone\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datazone.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"directconnect\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"directconnect.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"directconnect.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"dlm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dlm.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dlm.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dlm.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dlm.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"dms\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dms\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"dms\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dms-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"docdb\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"drs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"drs-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"drs-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"drs-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"drs-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ds\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ds-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"dynamodb\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dynamodb.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ebs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ec2\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2.us-gov-east-1.api.aws\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ec2.us-gov-west-1.api.aws\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ecs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecs-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecs-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecs-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ecs-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"eks\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"eks.{region}.{dnsSuffix}\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"eks.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"eks.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"eks.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"eks.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticache\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticache.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticache.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticache.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticache.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticbeanstalk\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticbeanstalk.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticfilesystem\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticloadbalancing\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticloadbalancing.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticloadbalancing.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticloadbalancing.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticloadbalancing.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"elasticloadbalancing.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticmapreduce\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"elasticmapreduce.us-gov-west-1.api.aws\",\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"elasticmapreduce.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"email\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"email-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"email-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"emr-containers\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"es\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"aos.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"es-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"events\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"events.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"events.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"events.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"events.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"firehose\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"firehose-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"fms\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fms-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"fsx\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-prod-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-prod-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"prod-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"prod-us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"prod-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"prod-us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fsx-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"geo\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"geo-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"geo-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"glacier\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glacier.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glacier.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glacier.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"glacier.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"glue\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"glue-fips.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"greengrass\": service{\n\t\t\tIsRegionalized: boxedTrue,\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dataplane-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass-ats.iot.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dataplane-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass-ats.iot.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"greengrass.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"guardduty\": service{\n\t\t\tIsRegionalized: boxedTrue,\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"guardduty.{region}.{dnsSuffix}\",\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"guardduty.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"guardduty.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"guardduty.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"guardduty.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"health\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tSSLCommonName: \"health.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tProtocols:     []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-us-gov-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"global.health.us-gov.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"health-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"health-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iam\": service{\n\t\t\tPartitionEndpoint: \"aws-us-gov-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-us-gov-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iam.us-gov.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"aws-us-gov-global\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iam.us-gov.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-us-gov-global-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iam.us-gov.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"iam-govcloud\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"iam-govcloud\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iam.us-gov.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"iam-govcloud-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iam.us-gov.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"identitystore\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"identitystore.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"identitystore.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"identitystore.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"identitystore.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"identitystore.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ingest.timestream\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ingest.timestream.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ingest.timestream.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"inspector\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"inspector2\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector2-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector2-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector2-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"inspector2-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"internetmonitor\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"internetmonitor.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iot\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.us-gov-east-1.amazonaws.com\",\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.us-gov-west-1.amazonaws.com\",\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iot-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iotevents\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotevents-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotevents-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ioteventsdata\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iotevents-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iotsecuredtunneling\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.tunneling.iot-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iotsitewise\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotsitewise-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iotsitewise-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"iottwinmaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"api-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iottwinmaker.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"data-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iottwinmaker.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-api-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.iottwinmaker-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-data-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"data.iottwinmaker-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iottwinmaker-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iottwinmaker-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"kafka\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kafka.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"kendra\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"kendra-ranking\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kendra-ranking.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"kinesis\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kinesis.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"kinesisanalytics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"kms\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ProdFips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"lakeformation\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lakeformation-fips.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"lambda\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"lambda-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"license-manager\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"license-manager-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"license-manager-linux-subscriptions\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"logs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"logs.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"logs.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"logs.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"logs.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"m2\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"managedblockchain\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"mediaconvert\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mediaconvert.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mediaconvert.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"meetings-chime\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"meetings-chime-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"meetings-chime-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"meetings-chime-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"meetings-chime-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"metering.marketplace\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"aws-marketplace\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"metrics.sagemaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"mgn\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mgn-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mgn-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mgn-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mgn-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"models.lex\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"lex\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"models-fips.lex.{region}.{dnsSuffix}\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"lex\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"models-fips.lex.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"models-fips.lex.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"monitoring\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"monitoring.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"monitoring.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"monitoring.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"monitoring.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"monitoring.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"mq\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mq-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mq-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mq-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"mq-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"neptune\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"network-firewall\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"network-firewall-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"networkmanager\": service{\n\t\t\tPartitionEndpoint: \"aws-us-gov-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-us-gov-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"networkmanager.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"aws-us-gov-global\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"networkmanager.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-aws-us-gov-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"networkmanager.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"oidc\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"oidc.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"organizations\": service{\n\t\t\tPartitionEndpoint: \"aws-us-gov-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-us-gov-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"organizations.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"aws-us-gov-global\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"organizations.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-aws-us-gov-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"organizations.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"outposts\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"outposts.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"participant.connect\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"participant.connect.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"participant.connect.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"pi\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"pinpoint\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"mobiletargeting\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"pinpoint-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"polly\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"polly-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"polly-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"portal.sso\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"portal.sso.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"qbusiness\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"qbusiness.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"quicksight\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"api\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ram\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ram.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"rbin\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"rds\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds.us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds.us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"redshift\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"rekognition\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rekognition-fips.us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rekognition.us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rekognition.us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rekognition-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"resiliencehub\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resiliencehub-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resiliencehub-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resiliencehub-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resiliencehub-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"resource-explorer-2\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix: \"api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-explorer-2.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"resource-groups\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-groups.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-groups.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-groups.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-groups.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"resource-groups.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"robomaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"rolesanywhere\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"route53\": service{\n\t\t\tPartitionEndpoint: \"aws-us-gov-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-us-gov-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53.us-gov.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"aws-us-gov-global\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53.us-gov.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-aws-us-gov-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53.us-gov.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"route53resolver\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53resolver.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53resolver.us-gov-east-1.amazonaws.com\",\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53resolver.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53resolver.us-gov-west-1.amazonaws.com\",\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"runtime.lex\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"lex\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.lex.{region}.{dnsSuffix}\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"lex\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.lex.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime-fips.lex.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"runtime.sagemaker\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime.sagemaker.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime.sagemaker.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"runtime.sagemaker.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"s3\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"{service}.dualstack.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix:         \"amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"{service}-fips.dualstack.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix:         \"amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3\", \"s3v4\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"s3-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"s3.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"s3.dualstack.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"s3-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"s3.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"s3.dualstack.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"s3-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"s3-control\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols:         []string{\"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"{service}.dualstack.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix:         \"amazonaws.com\",\n\t\t\t\t\tProtocols:         []string{\"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"{service}-fips.dualstack.{region}.{dnsSuffix}\",\n\t\t\t\t\tDNSSuffix:         \"amazonaws.com\",\n\t\t\t\t\tProtocols:         []string{\"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.dualstack.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control.dualstack.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.dualstack.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:          \"s3-control-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"s3-outposts\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"secretsmanager\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"securityhub\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"securityhub-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"securityhub-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"securityhub-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"securityhub-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"serverlessrepo\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"serverlessrepo.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"serverlessrepo.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"serverlessrepo.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"serverlessrepo.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"servicecatalog\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"servicecatalog-appregistry\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicecatalog-appregistry.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"servicediscovery\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"servicediscovery\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"servicediscovery\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"servicediscovery-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-gov-east-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant | dualStackVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-gov-west-1.api.aws\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicediscovery-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"servicequotas\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"servicequotas.{region}.{dnsSuffix}\",\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicequotas.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicequotas.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicequotas.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"servicequotas.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"simspaceweaver\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"simspaceweaver.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"simspaceweaver.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"simspaceweaver.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"simspaceweaver.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"sms\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sms-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sms-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"sms-voice\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sms-voice-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sms-voice-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"snowball\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"snowball-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"sns\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sns.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sns.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sns.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"sns.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"sqs\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sqs.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sqs.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:      \"sqs.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tSSLCommonName: \"{region}.queue.{dnsSuffix}\",\n\t\t\t\t\tProtocols:     []string{\"http\", \"https\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ssm\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"ssm.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"sso\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sso.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sso.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sso.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sso.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sso.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sso.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"states\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"states.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"storagegateway\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"storagegateway-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"streams.dynamodb\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"dynamodb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"streams.dynamodb.{region}.{dnsSuffix}\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"dynamodb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"streams.dynamodb.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"streams.dynamodb.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"streams.dynamodb.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"streams.dynamodb.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"sts\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"sts.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"support\": service{\n\t\t\tPartitionEndpoint: \"aws-us-gov-global\",\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-us-gov-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"support.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"support.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"support.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"swf\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"swf.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"synthetics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"synthetics-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"synthetics-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"synthetics-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"synthetics-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"tagging\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"textract\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"textract-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"transcribe\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"fips.transcribe.{region}.{dnsSuffix}\",\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"fips.transcribe.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"transcribestreaming\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"transfer\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"transfer-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"translate\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"translate-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"translate-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"waf-regional\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"waf-regional-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"wafv2\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"wafv2-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"wellarchitected\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"workspaces\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"workspaces-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"workspaces-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"workspaces-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"workspaces-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"xray\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"xray-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-gov-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"xray-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"xray-fips.us-gov-east-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-gov-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-gov-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"xray-fips.us-gov-west-1.amazonaws.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n}\n\n// AwsIsoPartition returns the Resolver for AWS ISO (US).\nfunc AwsIsoPartition() Partition {\n\treturn awsisoPartition.Partition()\n}\n\nvar awsisoPartition = partition{\n\tID:        \"aws-iso\",\n\tName:      \"AWS ISO (US)\",\n\tDNSSuffix: \"c2s.ic.gov\",\n\tRegionRegex: regionRegex{\n\t\tRegexp: func() *regexp.Regexp {\n\t\t\treg, _ := regexp.Compile(\"^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$\")\n\t\t\treturn reg\n\t\t}(),\n\t},\n\tDefaults: endpointDefaults{\n\t\tdefaultKey{}: endpoint{\n\t\t\tHostname:          \"{service}.{region}.{dnsSuffix}\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t\tdefaultKey{\n\t\t\tVariant: fipsVariant,\n\t\t}: endpoint{\n\t\t\tHostname:          \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\tDNSSuffix:         \"c2s.ic.gov\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t},\n\tRegions: regions{\n\t\t\"us-iso-east-1\": region{\n\t\t\tDescription: \"US ISO East\",\n\t\t},\n\t\t\"us-iso-west-1\": region{\n\t\t\tDescription: \"US ISO WEST\",\n\t\t},\n\t},\n\tServices: services{\n\t\t\"api.ecr\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.sagemaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"apigateway\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"appconfig\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"appconfigdata\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"application-autoscaling\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"athena\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"autoscaling\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudcontrolapi\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudformation\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudtrail\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"codedeploy\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"comprehend\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"config\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"datapipeline\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"datasync\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-iso-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"datasync-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"directconnect\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"dlm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"dms\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dms\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"dms\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dms-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ds\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"dynamodb\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ebs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ec2\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ecs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"eks\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"elasticache\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"elasticfilesystem\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-iso-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticloadbalancing\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"elasticmapreduce\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-iso-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname:  \"elasticmapreduce.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"es\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"events\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"firehose\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"glacier\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"glue\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"health\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"iam\": service{\n\t\t\tPartitionEndpoint: \"aws-iso-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-iso-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iam.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"kinesis\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"kms\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ProdFips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"lambda\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"license-manager\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"logs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"medialive\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"mediapackage\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"metrics.sagemaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"monitoring\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"outposts\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ram\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"rbin\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-iso-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"rds\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds-fips.us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds-fips.us-iso-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds.us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rds.us-iso-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds.us-iso-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rds.us-iso-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"redshift\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-iso-west-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-iso-west-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-iso-west-1.c2s.ic.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"resource-groups\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"route53\": service{\n\t\t\tPartitionEndpoint: \"aws-iso-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-iso-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"route53resolver\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"runtime.sagemaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"s3\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols:         []string{\"http\", \"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"secretsmanager\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"snowball\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"sns\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"sqs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ssm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"states\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"streams.dynamodb\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"dynamodb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"sts\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"support\": service{\n\t\t\tPartitionEndpoint: \"aws-iso-global\",\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-iso-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"support.us-iso-east-1.c2s.ic.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"swf\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"synthetics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"tagging\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"transcribe\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"transcribestreaming\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"translate\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"workspaces\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-iso-west-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t},\n}\n\n// AwsIsoBPartition returns the Resolver for AWS ISOB (US).\nfunc AwsIsoBPartition() Partition {\n\treturn awsisobPartition.Partition()\n}\n\nvar awsisobPartition = partition{\n\tID:        \"aws-iso-b\",\n\tName:      \"AWS ISOB (US)\",\n\tDNSSuffix: \"sc2s.sgov.gov\",\n\tRegionRegex: regionRegex{\n\t\tRegexp: func() *regexp.Regexp {\n\t\t\treg, _ := regexp.Compile(\"^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$\")\n\t\t\treturn reg\n\t\t}(),\n\t},\n\tDefaults: endpointDefaults{\n\t\tdefaultKey{}: endpoint{\n\t\t\tHostname:          \"{service}.{region}.{dnsSuffix}\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t\tdefaultKey{\n\t\t\tVariant: fipsVariant,\n\t\t}: endpoint{\n\t\t\tHostname:          \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\tDNSSuffix:         \"sc2s.sgov.gov\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t},\n\tRegions: regions{\n\t\t\"us-isob-east-1\": region{\n\t\t\tDescription: \"US ISOB East (Ohio)\",\n\t\t},\n\t},\n\tServices: services{\n\t\t\"api.ecr\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"api.ecr.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"api.sagemaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"appconfig\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"appconfigdata\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"application-autoscaling\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"autoscaling\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudcontrolapi\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudformation\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"cloudtrail\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"codedeploy\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"config\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"directconnect\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"dlm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"dms\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{},\n\t\t\t\tdefaultKey{\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.{region}.{dnsSuffix}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dms\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"dms\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"dms-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-isob-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"dms.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"ds\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"dynamodb\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ebs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ec2\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ecs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"eks\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"elasticache\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"elasticfilesystem\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-isob-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-isob-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticfilesystem-fips.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticloadbalancing\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tProtocols: []string{\"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"elasticmapreduce\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-isob-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-isob-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"elasticmapreduce.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"es\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"events\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"glacier\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"health\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"iam\": service{\n\t\t\tPartitionEndpoint: \"aws-iso-b-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-iso-b-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"iam.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"kinesis\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"kms\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"ProdFips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-isob-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"kms-fips.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"lambda\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"license-manager\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"logs\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"metering.marketplace\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"aws-marketplace\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"metrics.sagemaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"monitoring\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"outposts\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ram\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"rbin\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-isob-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-isob-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rbin-fips.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"rds\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds-fips.us-isob-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"rds.us-isob-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"rds.us-isob-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-isob-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1-fips\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"rds-fips.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"redshift\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"fips-us-isob-east-1\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t\tDeprecated: boxedTrue,\n\t\t\t\t},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion:  \"us-isob-east-1\",\n\t\t\t\t\tVariant: fipsVariant,\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"redshift-fips.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"resource-groups\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"route53\": service{\n\t\t\tPartitionEndpoint: \"aws-iso-b-global\",\n\t\t\tIsRegionalized:    boxedFalse,\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-iso-b-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"route53.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"route53resolver\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"runtime.sagemaker\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"s3\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols:         []string{\"http\", \"https\"},\n\t\t\t\t\tSignatureVersions: []string{\"s3v4\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"secretsmanager\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"snowball\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"sns\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"sqs\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tSSLCommonName: \"{region}.queue.{dnsSuffix}\",\n\t\t\t\t\tProtocols:     []string{\"http\", \"https\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"ssm\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"states\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"streams.dynamodb\": service{\n\t\t\tDefaults: endpointDefaults{\n\t\t\t\tdefaultKey{}: endpoint{\n\t\t\t\t\tProtocols: []string{\"http\", \"https\"},\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tService: \"dynamodb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"sts\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"support\": service{\n\t\t\tPartitionEndpoint: \"aws-iso-b-global\",\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"aws-iso-b-global\",\n\t\t\t\t}: endpoint{\n\t\t\t\t\tHostname: \"support.us-isob-east-1.sc2s.sgov.gov\",\n\t\t\t\t\tCredentialScope: credentialScope{\n\t\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\"swf\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"synthetics\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"tagging\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t\t\"workspaces\": service{\n\t\t\tEndpoints: serviceEndpoints{\n\t\t\t\tendpointKey{\n\t\t\t\t\tRegion: \"us-isob-east-1\",\n\t\t\t\t}: endpoint{},\n\t\t\t},\n\t\t},\n\t},\n}\n\n// AwsIsoEPartition returns the Resolver for AWS ISOE (Europe).\nfunc AwsIsoEPartition() Partition {\n\treturn awsisoePartition.Partition()\n}\n\nvar awsisoePartition = partition{\n\tID:        \"aws-iso-e\",\n\tName:      \"AWS ISOE (Europe)\",\n\tDNSSuffix: \"cloud.adc-e.uk\",\n\tRegionRegex: regionRegex{\n\t\tRegexp: func() *regexp.Regexp {\n\t\t\treg, _ := regexp.Compile(\"^eu\\\\-isoe\\\\-\\\\w+\\\\-\\\\d+$\")\n\t\t\treturn reg\n\t\t}(),\n\t},\n\tDefaults: endpointDefaults{\n\t\tdefaultKey{}: endpoint{\n\t\t\tHostname:          \"{service}.{region}.{dnsSuffix}\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t\tdefaultKey{\n\t\t\tVariant: fipsVariant,\n\t\t}: endpoint{\n\t\t\tHostname:          \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\tDNSSuffix:         \"cloud.adc-e.uk\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t},\n\tRegions:  regions{},\n\tServices: services{},\n}\n\n// AwsIsoFPartition returns the Resolver for AWS ISOF.\nfunc AwsIsoFPartition() Partition {\n\treturn awsisofPartition.Partition()\n}\n\nvar awsisofPartition = partition{\n\tID:        \"aws-iso-f\",\n\tName:      \"AWS ISOF\",\n\tDNSSuffix: \"csp.hci.ic.gov\",\n\tRegionRegex: regionRegex{\n\t\tRegexp: func() *regexp.Regexp {\n\t\t\treg, _ := regexp.Compile(\"^us\\\\-isof\\\\-\\\\w+\\\\-\\\\d+$\")\n\t\t\treturn reg\n\t\t}(),\n\t},\n\tDefaults: endpointDefaults{\n\t\tdefaultKey{}: endpoint{\n\t\t\tHostname:          \"{service}.{region}.{dnsSuffix}\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t\tdefaultKey{\n\t\t\tVariant: fipsVariant,\n\t\t}: endpoint{\n\t\t\tHostname:          \"{service}-fips.{region}.{dnsSuffix}\",\n\t\t\tDNSSuffix:         \"csp.hci.ic.gov\",\n\t\t\tProtocols:         []string{\"https\"},\n\t\t\tSignatureVersions: []string{\"v4\"},\n\t\t},\n\t},\n\tRegions:  regions{},\n\tServices: services{},\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/dep_service_ids.go",
    "content": "package endpoints\n\n// Service identifiers\n//\n// Deprecated: Use client package's EndpointsID value instead of these\n// ServiceIDs. These IDs are not maintained, and are out of date.\nconst (\n\tA4bServiceID                          = \"a4b\"                          // A4b.\n\tAcmServiceID                          = \"acm\"                          // Acm.\n\tAcmPcaServiceID                       = \"acm-pca\"                      // AcmPca.\n\tApiMediatailorServiceID               = \"api.mediatailor\"              // ApiMediatailor.\n\tApiPricingServiceID                   = \"api.pricing\"                  // ApiPricing.\n\tApiSagemakerServiceID                 = \"api.sagemaker\"                // ApiSagemaker.\n\tApigatewayServiceID                   = \"apigateway\"                   // Apigateway.\n\tApplicationAutoscalingServiceID       = \"application-autoscaling\"      // ApplicationAutoscaling.\n\tAppstream2ServiceID                   = \"appstream2\"                   // Appstream2.\n\tAppsyncServiceID                      = \"appsync\"                      // Appsync.\n\tAthenaServiceID                       = \"athena\"                       // Athena.\n\tAutoscalingServiceID                  = \"autoscaling\"                  // Autoscaling.\n\tAutoscalingPlansServiceID             = \"autoscaling-plans\"            // AutoscalingPlans.\n\tBatchServiceID                        = \"batch\"                        // Batch.\n\tBudgetsServiceID                      = \"budgets\"                      // Budgets.\n\tCeServiceID                           = \"ce\"                           // Ce.\n\tChimeServiceID                        = \"chime\"                        // Chime.\n\tCloud9ServiceID                       = \"cloud9\"                       // Cloud9.\n\tClouddirectoryServiceID               = \"clouddirectory\"               // Clouddirectory.\n\tCloudformationServiceID               = \"cloudformation\"               // Cloudformation.\n\tCloudfrontServiceID                   = \"cloudfront\"                   // Cloudfront.\n\tCloudhsmServiceID                     = \"cloudhsm\"                     // Cloudhsm.\n\tCloudhsmv2ServiceID                   = \"cloudhsmv2\"                   // Cloudhsmv2.\n\tCloudsearchServiceID                  = \"cloudsearch\"                  // Cloudsearch.\n\tCloudtrailServiceID                   = \"cloudtrail\"                   // Cloudtrail.\n\tCodebuildServiceID                    = \"codebuild\"                    // Codebuild.\n\tCodecommitServiceID                   = \"codecommit\"                   // Codecommit.\n\tCodedeployServiceID                   = \"codedeploy\"                   // Codedeploy.\n\tCodepipelineServiceID                 = \"codepipeline\"                 // Codepipeline.\n\tCodestarServiceID                     = \"codestar\"                     // Codestar.\n\tCognitoIdentityServiceID              = \"cognito-identity\"             // CognitoIdentity.\n\tCognitoIdpServiceID                   = \"cognito-idp\"                  // CognitoIdp.\n\tCognitoSyncServiceID                  = \"cognito-sync\"                 // CognitoSync.\n\tComprehendServiceID                   = \"comprehend\"                   // Comprehend.\n\tConfigServiceID                       = \"config\"                       // Config.\n\tCurServiceID                          = \"cur\"                          // Cur.\n\tDatapipelineServiceID                 = \"datapipeline\"                 // Datapipeline.\n\tDaxServiceID                          = \"dax\"                          // Dax.\n\tDevicefarmServiceID                   = \"devicefarm\"                   // Devicefarm.\n\tDirectconnectServiceID                = \"directconnect\"                // Directconnect.\n\tDiscoveryServiceID                    = \"discovery\"                    // Discovery.\n\tDmsServiceID                          = \"dms\"                          // Dms.\n\tDsServiceID                           = \"ds\"                           // Ds.\n\tDynamodbServiceID                     = \"dynamodb\"                     // Dynamodb.\n\tEc2ServiceID                          = \"ec2\"                          // Ec2.\n\tEc2metadataServiceID                  = \"ec2metadata\"                  // Ec2metadata.\n\tEcrServiceID                          = \"ecr\"                          // Ecr.\n\tEcsServiceID                          = \"ecs\"                          // Ecs.\n\tElasticacheServiceID                  = \"elasticache\"                  // Elasticache.\n\tElasticbeanstalkServiceID             = \"elasticbeanstalk\"             // Elasticbeanstalk.\n\tElasticfilesystemServiceID            = \"elasticfilesystem\"            // Elasticfilesystem.\n\tElasticloadbalancingServiceID         = \"elasticloadbalancing\"         // Elasticloadbalancing.\n\tElasticmapreduceServiceID             = \"elasticmapreduce\"             // Elasticmapreduce.\n\tElastictranscoderServiceID            = \"elastictranscoder\"            // Elastictranscoder.\n\tEmailServiceID                        = \"email\"                        // Email.\n\tEntitlementMarketplaceServiceID       = \"entitlement.marketplace\"      // EntitlementMarketplace.\n\tEsServiceID                           = \"es\"                           // Es.\n\tEventsServiceID                       = \"events\"                       // Events.\n\tFirehoseServiceID                     = \"firehose\"                     // Firehose.\n\tFmsServiceID                          = \"fms\"                          // Fms.\n\tGameliftServiceID                     = \"gamelift\"                     // Gamelift.\n\tGlacierServiceID                      = \"glacier\"                      // Glacier.\n\tGlueServiceID                         = \"glue\"                         // Glue.\n\tGreengrassServiceID                   = \"greengrass\"                   // Greengrass.\n\tGuarddutyServiceID                    = \"guardduty\"                    // Guardduty.\n\tHealthServiceID                       = \"health\"                       // Health.\n\tIamServiceID                          = \"iam\"                          // Iam.\n\tImportexportServiceID                 = \"importexport\"                 // Importexport.\n\tInspectorServiceID                    = \"inspector\"                    // Inspector.\n\tIotServiceID                          = \"iot\"                          // Iot.\n\tIotanalyticsServiceID                 = \"iotanalytics\"                 // Iotanalytics.\n\tKinesisServiceID                      = \"kinesis\"                      // Kinesis.\n\tKinesisanalyticsServiceID             = \"kinesisanalytics\"             // Kinesisanalytics.\n\tKinesisvideoServiceID                 = \"kinesisvideo\"                 // Kinesisvideo.\n\tKmsServiceID                          = \"kms\"                          // Kms.\n\tLambdaServiceID                       = \"lambda\"                       // Lambda.\n\tLightsailServiceID                    = \"lightsail\"                    // Lightsail.\n\tLogsServiceID                         = \"logs\"                         // Logs.\n\tMachinelearningServiceID              = \"machinelearning\"              // Machinelearning.\n\tMarketplacecommerceanalyticsServiceID = \"marketplacecommerceanalytics\" // Marketplacecommerceanalytics.\n\tMediaconvertServiceID                 = \"mediaconvert\"                 // Mediaconvert.\n\tMedialiveServiceID                    = \"medialive\"                    // Medialive.\n\tMediapackageServiceID                 = \"mediapackage\"                 // Mediapackage.\n\tMediastoreServiceID                   = \"mediastore\"                   // Mediastore.\n\tMeteringMarketplaceServiceID          = \"metering.marketplace\"         // MeteringMarketplace.\n\tMghServiceID                          = \"mgh\"                          // Mgh.\n\tMobileanalyticsServiceID              = \"mobileanalytics\"              // Mobileanalytics.\n\tModelsLexServiceID                    = \"models.lex\"                   // ModelsLex.\n\tMonitoringServiceID                   = \"monitoring\"                   // Monitoring.\n\tMturkRequesterServiceID               = \"mturk-requester\"              // MturkRequester.\n\tNeptuneServiceID                      = \"neptune\"                      // Neptune.\n\tOpsworksServiceID                     = \"opsworks\"                     // Opsworks.\n\tOpsworksCmServiceID                   = \"opsworks-cm\"                  // OpsworksCm.\n\tOrganizationsServiceID                = \"organizations\"                // Organizations.\n\tPinpointServiceID                     = \"pinpoint\"                     // Pinpoint.\n\tPollyServiceID                        = \"polly\"                        // Polly.\n\tRdsServiceID                          = \"rds\"                          // Rds.\n\tRedshiftServiceID                     = \"redshift\"                     // Redshift.\n\tRekognitionServiceID                  = \"rekognition\"                  // Rekognition.\n\tResourceGroupsServiceID               = \"resource-groups\"              // ResourceGroups.\n\tRoute53ServiceID                      = \"route53\"                      // Route53.\n\tRoute53domainsServiceID               = \"route53domains\"               // Route53domains.\n\tRuntimeLexServiceID                   = \"runtime.lex\"                  // RuntimeLex.\n\tRuntimeSagemakerServiceID             = \"runtime.sagemaker\"            // RuntimeSagemaker.\n\tS3ServiceID                           = \"s3\"                           // S3.\n\tS3ControlServiceID                    = \"s3-control\"                   // S3Control.\n\tSagemakerServiceID                    = \"api.sagemaker\"                // Sagemaker.\n\tSdbServiceID                          = \"sdb\"                          // Sdb.\n\tSecretsmanagerServiceID               = \"secretsmanager\"               // Secretsmanager.\n\tServerlessrepoServiceID               = \"serverlessrepo\"               // Serverlessrepo.\n\tServicecatalogServiceID               = \"servicecatalog\"               // Servicecatalog.\n\tServicediscoveryServiceID             = \"servicediscovery\"             // Servicediscovery.\n\tShieldServiceID                       = \"shield\"                       // Shield.\n\tSmsServiceID                          = \"sms\"                          // Sms.\n\tSnowballServiceID                     = \"snowball\"                     // Snowball.\n\tSnsServiceID                          = \"sns\"                          // Sns.\n\tSqsServiceID                          = \"sqs\"                          // Sqs.\n\tSsmServiceID                          = \"ssm\"                          // Ssm.\n\tStatesServiceID                       = \"states\"                       // States.\n\tStoragegatewayServiceID               = \"storagegateway\"               // Storagegateway.\n\tStreamsDynamodbServiceID              = \"streams.dynamodb\"             // StreamsDynamodb.\n\tStsServiceID                          = \"sts\"                          // Sts.\n\tSupportServiceID                      = \"support\"                      // Support.\n\tSwfServiceID                          = \"swf\"                          // Swf.\n\tTaggingServiceID                      = \"tagging\"                      // Tagging.\n\tTransferServiceID                     = \"transfer\"                     // Transfer.\n\tTranslateServiceID                    = \"translate\"                    // Translate.\n\tWafServiceID                          = \"waf\"                          // Waf.\n\tWafRegionalServiceID                  = \"waf-regional\"                 // WafRegional.\n\tWorkdocsServiceID                     = \"workdocs\"                     // Workdocs.\n\tWorkmailServiceID                     = \"workmail\"                     // Workmail.\n\tWorkspacesServiceID                   = \"workspaces\"                   // Workspaces.\n\tXrayServiceID                         = \"xray\"                         // Xray.\n)\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go",
    "content": "// Package endpoints provides the types and functionality for defining regions\n// and endpoints, as well as querying those definitions.\n//\n// The SDK's Regions and Endpoints metadata is code generated into the endpoints\n// package, and is accessible via the DefaultResolver function. This function\n// returns a endpoint Resolver will search the metadata and build an associated\n// endpoint if one is found. The default resolver will search all partitions\n// known by the SDK. e.g AWS Standard (aws), AWS China (aws-cn), and\n// AWS GovCloud (US) (aws-us-gov).\n// .\n//\n// # Enumerating Regions and Endpoint Metadata\n//\n// Casting the Resolver returned by DefaultResolver to a EnumPartitions interface\n// will allow you to get access to the list of underlying Partitions with the\n// Partitions method. This is helpful if you want to limit the SDK's endpoint\n// resolving to a single partition, or enumerate regions, services, and endpoints\n// in the partition.\n//\n//\tresolver := endpoints.DefaultResolver()\n//\tpartitions := resolver.(endpoints.EnumPartitions).Partitions()\n//\n//\tfor _, p := range partitions {\n//\t    fmt.Println(\"Regions for\", p.ID())\n//\t    for id, _ := range p.Regions() {\n//\t        fmt.Println(\"*\", id)\n//\t    }\n//\n//\t    fmt.Println(\"Services for\", p.ID())\n//\t    for id, _ := range p.Services() {\n//\t        fmt.Println(\"*\", id)\n//\t    }\n//\t}\n//\n// # Using Custom Endpoints\n//\n// The endpoints package also gives you the ability to use your own logic how\n// endpoints are resolved. This is a great way to define a custom endpoint\n// for select services, without passing that logic down through your code.\n//\n// If a type implements the Resolver interface it can be used to resolve\n// endpoints. To use this with the SDK's Session and Config set the value\n// of the type to the EndpointsResolver field of aws.Config when initializing\n// the session, or service client.\n//\n// In addition the ResolverFunc is a wrapper for a func matching the signature\n// of Resolver.EndpointFor, converting it to a type that satisfies the\n// Resolver interface.\n//\n//\tmyCustomResolver := func(service, region string, optFns ...func(*endpoints.Options)) (endpoints.ResolvedEndpoint, error) {\n//\t    if service == endpoints.S3ServiceID {\n//\t        return endpoints.ResolvedEndpoint{\n//\t            URL:           \"s3.custom.endpoint.com\",\n//\t            SigningRegion: \"custom-signing-region\",\n//\t        }, nil\n//\t    }\n//\n//\t    return endpoints.DefaultResolver().EndpointFor(service, region, optFns...)\n//\t}\n//\n//\tsess := session.Must(session.NewSession(&aws.Config{\n//\t    Region:           aws.String(\"us-west-2\"),\n//\t    EndpointResolver: endpoints.ResolverFunc(myCustomResolver),\n//\t}))\npackage endpoints\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go",
    "content": "package endpoints\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\n// A Logger is a minimalistic interface for the SDK to log messages to.\ntype Logger interface {\n\tLog(...interface{})\n}\n\n// DualStackEndpointState is a constant to describe the dual-stack endpoint resolution\n// behavior.\ntype DualStackEndpointState uint\n\nconst (\n\t// DualStackEndpointStateUnset is the default value behavior for dual-stack endpoint\n\t// resolution.\n\tDualStackEndpointStateUnset DualStackEndpointState = iota\n\n\t// DualStackEndpointStateEnabled enable dual-stack endpoint resolution for endpoints.\n\tDualStackEndpointStateEnabled\n\n\t// DualStackEndpointStateDisabled disables dual-stack endpoint resolution for endpoints.\n\tDualStackEndpointStateDisabled\n)\n\n// FIPSEndpointState is a constant to describe the FIPS endpoint resolution behavior.\ntype FIPSEndpointState uint\n\nconst (\n\t// FIPSEndpointStateUnset is the default value behavior for FIPS endpoint resolution.\n\tFIPSEndpointStateUnset FIPSEndpointState = iota\n\n\t// FIPSEndpointStateEnabled enables FIPS endpoint resolution for service endpoints.\n\tFIPSEndpointStateEnabled\n\n\t// FIPSEndpointStateDisabled disables FIPS endpoint resolution for endpoints.\n\tFIPSEndpointStateDisabled\n)\n\n// Options provide the configuration needed to direct how the\n// endpoints will be resolved.\ntype Options struct {\n\t// DisableSSL forces the endpoint to be resolved as HTTP.\n\t// instead of HTTPS if the service supports it.\n\tDisableSSL bool\n\n\t// Sets the resolver to resolve the endpoint as a dualstack endpoint\n\t// for the service. If dualstack support for a service is not known and\n\t// StrictMatching is not enabled a dualstack endpoint for the service will\n\t// be returned. This endpoint may not be valid. If StrictMatching is\n\t// enabled only services that are known to support dualstack will return\n\t// dualstack endpoints.\n\t//\n\t// Deprecated: This option will continue to function for S3 and S3 Control for backwards compatibility.\n\t// UseDualStackEndpoint should be used to enable usage of a service's dual-stack endpoint for all service clients\n\t// moving forward. For S3 and S3 Control, when UseDualStackEndpoint is set to a non-zero value it takes higher\n\t// precedence then this option.\n\tUseDualStack bool\n\n\t// Sets the resolver to resolve a dual-stack endpoint for the service.\n\tUseDualStackEndpoint DualStackEndpointState\n\n\t// UseFIPSEndpoint specifies the resolver must resolve a FIPS endpoint.\n\tUseFIPSEndpoint FIPSEndpointState\n\n\t// Enables strict matching of services and regions resolved endpoints.\n\t// If the partition doesn't enumerate the exact service and region an\n\t// error will be returned. This option will prevent returning endpoints\n\t// that look valid, but may not resolve to any real endpoint.\n\tStrictMatching bool\n\n\t// Enables resolving a service endpoint based on the region provided if the\n\t// service does not exist. The service endpoint ID will be used as the service\n\t// domain name prefix. By default the endpoint resolver requires the service\n\t// to be known when resolving endpoints.\n\t//\n\t// If resolving an endpoint on the partition list the provided region will\n\t// be used to determine which partition's domain name pattern to the service\n\t// endpoint ID with. If both the service and region are unknown and resolving\n\t// the endpoint on partition list an UnknownEndpointError error will be returned.\n\t//\n\t// If resolving and endpoint on a partition specific resolver that partition's\n\t// domain name pattern will be used with the service endpoint ID. If both\n\t// region and service do not exist when resolving an endpoint on a specific\n\t// partition the partition's domain pattern will be used to combine the\n\t// endpoint and region together.\n\t//\n\t// This option is ignored if StrictMatching is enabled.\n\tResolveUnknownService bool\n\n\t// Specifies the EC2 Instance Metadata Service default endpoint selection mode (IPv4 or IPv6)\n\tEC2MetadataEndpointMode EC2IMDSEndpointModeState\n\n\t// STS Regional Endpoint flag helps with resolving the STS endpoint\n\tSTSRegionalEndpoint STSRegionalEndpoint\n\n\t// S3 Regional Endpoint flag helps with resolving the S3 endpoint\n\tS3UsEast1RegionalEndpoint S3UsEast1RegionalEndpoint\n\n\t// ResolvedRegion is the resolved region string. If provided (non-zero length) it takes priority\n\t// over the region name passed to the ResolveEndpoint call.\n\tResolvedRegion string\n\n\t// Logger is the logger that will be used to log messages.\n\tLogger Logger\n\n\t// Determines whether logging of deprecated endpoints usage is enabled.\n\tLogDeprecated bool\n}\n\nfunc (o Options) getEndpointVariant(service string) (v endpointVariant) {\n\tconst s3 = \"s3\"\n\tconst s3Control = \"s3-control\"\n\n\tif (o.UseDualStackEndpoint == DualStackEndpointStateEnabled) ||\n\t\t((service == s3 || service == s3Control) && (o.UseDualStackEndpoint == DualStackEndpointStateUnset && o.UseDualStack)) {\n\t\tv |= dualStackVariant\n\t}\n\tif o.UseFIPSEndpoint == FIPSEndpointStateEnabled {\n\t\tv |= fipsVariant\n\t}\n\treturn v\n}\n\n// EC2IMDSEndpointModeState is an enum configuration variable describing the client endpoint mode.\ntype EC2IMDSEndpointModeState uint\n\n// Enumeration values for EC2IMDSEndpointModeState\nconst (\n\tEC2IMDSEndpointModeStateUnset EC2IMDSEndpointModeState = iota\n\tEC2IMDSEndpointModeStateIPv4\n\tEC2IMDSEndpointModeStateIPv6\n)\n\n// SetFromString sets the EC2IMDSEndpointModeState based on the provided string value. Unknown values will default to EC2IMDSEndpointModeStateUnset\nfunc (e *EC2IMDSEndpointModeState) SetFromString(v string) error {\n\tv = strings.TrimSpace(v)\n\n\tswitch {\n\tcase len(v) == 0:\n\t\t*e = EC2IMDSEndpointModeStateUnset\n\tcase strings.EqualFold(v, \"IPv6\"):\n\t\t*e = EC2IMDSEndpointModeStateIPv6\n\tcase strings.EqualFold(v, \"IPv4\"):\n\t\t*e = EC2IMDSEndpointModeStateIPv4\n\tdefault:\n\t\treturn fmt.Errorf(\"unknown EC2 IMDS endpoint mode, must be either IPv6 or IPv4\")\n\t}\n\treturn nil\n}\n\n// STSRegionalEndpoint is an enum for the states of the STS Regional Endpoint\n// options.\ntype STSRegionalEndpoint int\n\nfunc (e STSRegionalEndpoint) String() string {\n\tswitch e {\n\tcase LegacySTSEndpoint:\n\t\treturn \"legacy\"\n\tcase RegionalSTSEndpoint:\n\t\treturn \"regional\"\n\tcase UnsetSTSEndpoint:\n\t\treturn \"\"\n\tdefault:\n\t\treturn \"unknown\"\n\t}\n}\n\nconst (\n\n\t// UnsetSTSEndpoint represents that STS Regional Endpoint flag is not specified.\n\tUnsetSTSEndpoint STSRegionalEndpoint = iota\n\n\t// LegacySTSEndpoint represents when STS Regional Endpoint flag is specified\n\t// to use legacy endpoints.\n\tLegacySTSEndpoint\n\n\t// RegionalSTSEndpoint represents when STS Regional Endpoint flag is specified\n\t// to use regional endpoints.\n\tRegionalSTSEndpoint\n)\n\n// GetSTSRegionalEndpoint function returns the STSRegionalEndpointFlag based\n// on the input string provided in env config or shared config by the user.\n//\n// `legacy`, `regional` are the only case-insensitive valid strings for\n// resolving the STS regional Endpoint flag.\nfunc GetSTSRegionalEndpoint(s string) (STSRegionalEndpoint, error) {\n\tswitch {\n\tcase strings.EqualFold(s, \"legacy\"):\n\t\treturn LegacySTSEndpoint, nil\n\tcase strings.EqualFold(s, \"regional\"):\n\t\treturn RegionalSTSEndpoint, nil\n\tdefault:\n\t\treturn UnsetSTSEndpoint, fmt.Errorf(\"unable to resolve the value of STSRegionalEndpoint for %v\", s)\n\t}\n}\n\n// S3UsEast1RegionalEndpoint is an enum for the states of the S3 us-east-1\n// Regional Endpoint options.\ntype S3UsEast1RegionalEndpoint int\n\nfunc (e S3UsEast1RegionalEndpoint) String() string {\n\tswitch e {\n\tcase LegacyS3UsEast1Endpoint:\n\t\treturn \"legacy\"\n\tcase RegionalS3UsEast1Endpoint:\n\t\treturn \"regional\"\n\tcase UnsetS3UsEast1Endpoint:\n\t\treturn \"\"\n\tdefault:\n\t\treturn \"unknown\"\n\t}\n}\n\nconst (\n\n\t// UnsetS3UsEast1Endpoint represents that S3 Regional Endpoint flag is not\n\t// specified.\n\tUnsetS3UsEast1Endpoint S3UsEast1RegionalEndpoint = iota\n\n\t// LegacyS3UsEast1Endpoint represents when S3 Regional Endpoint flag is\n\t// specified to use legacy endpoints.\n\tLegacyS3UsEast1Endpoint\n\n\t// RegionalS3UsEast1Endpoint represents when S3 Regional Endpoint flag is\n\t// specified to use regional endpoints.\n\tRegionalS3UsEast1Endpoint\n)\n\n// GetS3UsEast1RegionalEndpoint function returns the S3UsEast1RegionalEndpointFlag based\n// on the input string provided in env config or shared config by the user.\n//\n// `legacy`, `regional` are the only case-insensitive valid strings for\n// resolving the S3 regional Endpoint flag.\nfunc GetS3UsEast1RegionalEndpoint(s string) (S3UsEast1RegionalEndpoint, error) {\n\tswitch {\n\tcase strings.EqualFold(s, \"legacy\"):\n\t\treturn LegacyS3UsEast1Endpoint, nil\n\tcase strings.EqualFold(s, \"regional\"):\n\t\treturn RegionalS3UsEast1Endpoint, nil\n\tdefault:\n\t\treturn UnsetS3UsEast1Endpoint,\n\t\t\tfmt.Errorf(\"unable to resolve the value of S3UsEast1RegionalEndpoint for %v\", s)\n\t}\n}\n\n// Set combines all of the option functions together.\nfunc (o *Options) Set(optFns ...func(*Options)) {\n\tfor _, fn := range optFns {\n\t\tfn(o)\n\t}\n}\n\n// DisableSSLOption sets the DisableSSL options. Can be used as a functional\n// option when resolving endpoints.\nfunc DisableSSLOption(o *Options) {\n\to.DisableSSL = true\n}\n\n// UseDualStackOption sets the UseDualStack option. Can be used as a functional\n// option when resolving endpoints.\n//\n// Deprecated: UseDualStackEndpointOption should be used to enable usage of a service's dual-stack endpoint.\n// When DualStackEndpointState is set to a non-zero value it takes higher precedence then this option.\nfunc UseDualStackOption(o *Options) {\n\to.UseDualStack = true\n}\n\n// UseDualStackEndpointOption sets the UseDualStackEndpoint option to enabled. Can be used as a functional\n// option when resolving endpoints.\nfunc UseDualStackEndpointOption(o *Options) {\n\to.UseDualStackEndpoint = DualStackEndpointStateEnabled\n}\n\n// UseFIPSEndpointOption sets the UseFIPSEndpoint option to enabled. Can be used as a functional\n// option when resolving endpoints.\nfunc UseFIPSEndpointOption(o *Options) {\n\to.UseFIPSEndpoint = FIPSEndpointStateEnabled\n}\n\n// StrictMatchingOption sets the StrictMatching option. Can be used as a functional\n// option when resolving endpoints.\nfunc StrictMatchingOption(o *Options) {\n\to.StrictMatching = true\n}\n\n// ResolveUnknownServiceOption sets the ResolveUnknownService option. Can be used\n// as a functional option when resolving endpoints.\nfunc ResolveUnknownServiceOption(o *Options) {\n\to.ResolveUnknownService = true\n}\n\n// STSRegionalEndpointOption enables the STS endpoint resolver behavior to resolve\n// STS endpoint to their regional endpoint, instead of the global endpoint.\nfunc STSRegionalEndpointOption(o *Options) {\n\to.STSRegionalEndpoint = RegionalSTSEndpoint\n}\n\n// A Resolver provides the interface for functionality to resolve endpoints.\n// The build in Partition and DefaultResolver return value satisfy this interface.\ntype Resolver interface {\n\tEndpointFor(service, region string, opts ...func(*Options)) (ResolvedEndpoint, error)\n}\n\n// ResolverFunc is a helper utility that wraps a function so it satisfies the\n// Resolver interface. This is useful when you want to add additional endpoint\n// resolving logic, or stub out specific endpoints with custom values.\ntype ResolverFunc func(service, region string, opts ...func(*Options)) (ResolvedEndpoint, error)\n\n// EndpointFor wraps the ResolverFunc function to satisfy the Resolver interface.\nfunc (fn ResolverFunc) EndpointFor(service, region string, opts ...func(*Options)) (ResolvedEndpoint, error) {\n\treturn fn(service, region, opts...)\n}\n\nvar schemeRE = regexp.MustCompile(\"^([^:]+)://\")\n\n// AddScheme adds the HTTP or HTTPS schemes to a endpoint URL if there is no\n// scheme. If disableSSL is true HTTP will set HTTP instead of the default HTTPS.\n//\n// If disableSSL is set, it will only set the URL's scheme if the URL does not\n// contain a scheme.\nfunc AddScheme(endpoint string, disableSSL bool) string {\n\tif !schemeRE.MatchString(endpoint) {\n\t\tscheme := \"https\"\n\t\tif disableSSL {\n\t\t\tscheme = \"http\"\n\t\t}\n\t\tendpoint = fmt.Sprintf(\"%s://%s\", scheme, endpoint)\n\t}\n\n\treturn endpoint\n}\n\n// EnumPartitions a provides a way to retrieve the underlying partitions that\n// make up the SDK's default Resolver, or any resolver decoded from a model\n// file.\n//\n// Use this interface with DefaultResolver and DecodeModels to get the list of\n// Partitions.\ntype EnumPartitions interface {\n\tPartitions() []Partition\n}\n\n// RegionsForService returns a map of regions for the partition and service.\n// If either the partition or service does not exist false will be returned\n// as the second parameter.\n//\n// This example shows how  to get the regions for DynamoDB in the AWS partition.\n//\n//\trs, exists := endpoints.RegionsForService(endpoints.DefaultPartitions(), endpoints.AwsPartitionID, endpoints.DynamodbServiceID)\n//\n// This is equivalent to using the partition directly.\n//\n//\trs := endpoints.AwsPartition().Services()[endpoints.DynamodbServiceID].Regions()\nfunc RegionsForService(ps []Partition, partitionID, serviceID string) (map[string]Region, bool) {\n\tfor _, p := range ps {\n\t\tif p.ID() != partitionID {\n\t\t\tcontinue\n\t\t}\n\t\tif _, ok := p.p.Services[serviceID]; !(ok || serviceID == Ec2metadataServiceID) {\n\t\t\tbreak\n\t\t}\n\n\t\ts := Service{\n\t\t\tid: serviceID,\n\t\t\tp:  p.p,\n\t\t}\n\t\treturn s.Regions(), true\n\t}\n\n\treturn map[string]Region{}, false\n}\n\n// PartitionForRegion returns the first partition which includes the region\n// passed in. This includes both known regions and regions which match\n// a pattern supported by the partition which may include regions that are\n// not explicitly known by the partition. Use the Regions method of the\n// returned Partition if explicit support is needed.\nfunc PartitionForRegion(ps []Partition, regionID string) (Partition, bool) {\n\tfor _, p := range ps {\n\t\tif _, ok := p.p.Regions[regionID]; ok || p.p.RegionRegex.MatchString(regionID) {\n\t\t\treturn p, true\n\t\t}\n\t}\n\n\treturn Partition{}, false\n}\n\n// A Partition provides the ability to enumerate the partition's regions\n// and services.\ntype Partition struct {\n\tid, dnsSuffix string\n\tp             *partition\n}\n\n// DNSSuffix returns the base domain name of the partition.\nfunc (p Partition) DNSSuffix() string { return p.dnsSuffix }\n\n// ID returns the identifier of the partition.\nfunc (p Partition) ID() string { return p.id }\n\n// EndpointFor attempts to resolve the endpoint based on service and region.\n// See Options for information on configuring how the endpoint is resolved.\n//\n// If the service cannot be found in the metadata the UnknownServiceError\n// error will be returned. This validation will occur regardless if\n// StrictMatching is enabled. To enable resolving unknown services set the\n// \"ResolveUnknownService\" option to true. When StrictMatching is disabled\n// this option allows the partition resolver to resolve a endpoint based on\n// the service endpoint ID provided.\n//\n// When resolving endpoints you can choose to enable StrictMatching. This will\n// require the provided service and region to be known by the partition.\n// If the endpoint cannot be strictly resolved an error will be returned. This\n// mode is useful to ensure the endpoint resolved is valid. Without\n// StrictMatching enabled the endpoint returned may look valid but may not work.\n// StrictMatching requires the SDK to be updated if you want to take advantage\n// of new regions and services expansions.\n//\n// Errors that can be returned.\n//   - UnknownServiceError\n//   - UnknownEndpointError\nfunc (p Partition) EndpointFor(service, region string, opts ...func(*Options)) (ResolvedEndpoint, error) {\n\treturn p.p.EndpointFor(service, region, opts...)\n}\n\n// Regions returns a map of Regions indexed by their ID. This is useful for\n// enumerating over the regions in a partition.\nfunc (p Partition) Regions() map[string]Region {\n\trs := make(map[string]Region, len(p.p.Regions))\n\tfor id, r := range p.p.Regions {\n\t\trs[id] = Region{\n\t\t\tid:   id,\n\t\t\tdesc: r.Description,\n\t\t\tp:    p.p,\n\t\t}\n\t}\n\n\treturn rs\n}\n\n// Services returns a map of Service indexed by their ID. This is useful for\n// enumerating over the services in a partition.\nfunc (p Partition) Services() map[string]Service {\n\tss := make(map[string]Service, len(p.p.Services))\n\n\tfor id := range p.p.Services {\n\t\tss[id] = Service{\n\t\t\tid: id,\n\t\t\tp:  p.p,\n\t\t}\n\t}\n\n\t// Since we have removed the customization that injected this into the model\n\t// we still need to pretend that this is a modeled service.\n\tif _, ok := ss[Ec2metadataServiceID]; !ok {\n\t\tss[Ec2metadataServiceID] = Service{\n\t\t\tid: Ec2metadataServiceID,\n\t\t\tp:  p.p,\n\t\t}\n\t}\n\n\treturn ss\n}\n\n// A Region provides information about a region, and ability to resolve an\n// endpoint from the context of a region, given a service.\ntype Region struct {\n\tid, desc string\n\tp        *partition\n}\n\n// ID returns the region's identifier.\nfunc (r Region) ID() string { return r.id }\n\n// Description returns the region's description. The region description\n// is free text, it can be empty, and it may change between SDK releases.\nfunc (r Region) Description() string { return r.desc }\n\n// ResolveEndpoint resolves an endpoint from the context of the region given\n// a service. See Partition.EndpointFor for usage and errors that can be returned.\nfunc (r Region) ResolveEndpoint(service string, opts ...func(*Options)) (ResolvedEndpoint, error) {\n\treturn r.p.EndpointFor(service, r.id, opts...)\n}\n\n// Services returns a list of all services that are known to be in this region.\nfunc (r Region) Services() map[string]Service {\n\tss := map[string]Service{}\n\tfor id, s := range r.p.Services {\n\t\tif _, ok := s.Endpoints[endpointKey{Region: r.id}]; ok {\n\t\t\tss[id] = Service{\n\t\t\t\tid: id,\n\t\t\t\tp:  r.p,\n\t\t\t}\n\t\t}\n\t}\n\n\treturn ss\n}\n\n// A Service provides information about a service, and ability to resolve an\n// endpoint from the context of a service, given a region.\ntype Service struct {\n\tid string\n\tp  *partition\n}\n\n// ID returns the identifier for the service.\nfunc (s Service) ID() string { return s.id }\n\n// ResolveEndpoint resolves an endpoint from the context of a service given\n// a region. See Partition.EndpointFor for usage and errors that can be returned.\nfunc (s Service) ResolveEndpoint(region string, opts ...func(*Options)) (ResolvedEndpoint, error) {\n\treturn s.p.EndpointFor(s.id, region, opts...)\n}\n\n// Regions returns a map of Regions that the service is present in.\n//\n// A region is the AWS region the service exists in. Whereas a Endpoint is\n// an URL that can be resolved to a instance of a service.\nfunc (s Service) Regions() map[string]Region {\n\trs := map[string]Region{}\n\n\tservice, ok := s.p.Services[s.id]\n\n\t// Since ec2metadata customization has been removed we need to check\n\t// if it was defined in non-standard endpoints.json file. If it's not\n\t// then we can return the empty map as there is no regional-endpoints for IMDS.\n\t// Otherwise, we iterate need to iterate the non-standard model.\n\tif s.id == Ec2metadataServiceID && !ok {\n\t\treturn rs\n\t}\n\n\tfor id := range service.Endpoints {\n\t\tif id.Variant != 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif r, ok := s.p.Regions[id.Region]; ok {\n\t\t\trs[id.Region] = Region{\n\t\t\t\tid:   id.Region,\n\t\t\t\tdesc: r.Description,\n\t\t\t\tp:    s.p,\n\t\t\t}\n\t\t}\n\t}\n\n\treturn rs\n}\n\n// Endpoints returns a map of Endpoints indexed by their ID for all known\n// endpoints for a service.\n//\n// A region is the AWS region the service exists in. Whereas a Endpoint is\n// an URL that can be resolved to a instance of a service.\nfunc (s Service) Endpoints() map[string]Endpoint {\n\tes := make(map[string]Endpoint, len(s.p.Services[s.id].Endpoints))\n\tfor id := range s.p.Services[s.id].Endpoints {\n\t\tif id.Variant != 0 {\n\t\t\tcontinue\n\t\t}\n\t\tes[id.Region] = Endpoint{\n\t\t\tid:        id.Region,\n\t\t\tserviceID: s.id,\n\t\t\tp:         s.p,\n\t\t}\n\t}\n\n\treturn es\n}\n\n// A Endpoint provides information about endpoints, and provides the ability\n// to resolve that endpoint for the service, and the region the endpoint\n// represents.\ntype Endpoint struct {\n\tid        string\n\tserviceID string\n\tp         *partition\n}\n\n// ID returns the identifier for an endpoint.\nfunc (e Endpoint) ID() string { return e.id }\n\n// ServiceID returns the identifier the endpoint belongs to.\nfunc (e Endpoint) ServiceID() string { return e.serviceID }\n\n// ResolveEndpoint resolves an endpoint from the context of a service and\n// region the endpoint represents. See Partition.EndpointFor for usage and\n// errors that can be returned.\nfunc (e Endpoint) ResolveEndpoint(opts ...func(*Options)) (ResolvedEndpoint, error) {\n\treturn e.p.EndpointFor(e.serviceID, e.id, opts...)\n}\n\n// A ResolvedEndpoint is an endpoint that has been resolved based on a partition\n// service, and region.\ntype ResolvedEndpoint struct {\n\t// The endpoint URL\n\tURL string\n\n\t// The endpoint partition\n\tPartitionID string\n\n\t// The region that should be used for signing requests.\n\tSigningRegion string\n\n\t// The service name that should be used for signing requests.\n\tSigningName string\n\n\t// States that the signing name for this endpoint was derived from metadata\n\t// passed in, but was not explicitly modeled.\n\tSigningNameDerived bool\n\n\t// The signing method that should be used for signing requests.\n\tSigningMethod string\n}\n\n// So that the Error interface type can be included as an anonymous field\n// in the requestError struct and not conflict with the error.Error() method.\ntype awsError awserr.Error\n\n// A EndpointNotFoundError is returned when in StrictMatching mode, and the\n// endpoint for the service and region cannot be found in any of the partitions.\ntype EndpointNotFoundError struct {\n\tawsError\n\tPartition string\n\tService   string\n\tRegion    string\n}\n\n// A UnknownServiceError is returned when the service does not resolve to an\n// endpoint. Includes a list of all known services for the partition. Returned\n// when a partition does not support the service.\ntype UnknownServiceError struct {\n\tawsError\n\tPartition string\n\tService   string\n\tKnown     []string\n}\n\n// NewUnknownServiceError builds and returns UnknownServiceError.\nfunc NewUnknownServiceError(p, s string, known []string) UnknownServiceError {\n\treturn UnknownServiceError{\n\t\tawsError: awserr.New(\"UnknownServiceError\",\n\t\t\t\"could not resolve endpoint for unknown service\", nil),\n\t\tPartition: p,\n\t\tService:   s,\n\t\tKnown:     known,\n\t}\n}\n\n// String returns the string representation of the error.\nfunc (e UnknownServiceError) Error() string {\n\textra := fmt.Sprintf(\"partition: %q, service: %q\",\n\t\te.Partition, e.Service)\n\tif len(e.Known) > 0 {\n\t\textra += fmt.Sprintf(\", known: %v\", e.Known)\n\t}\n\treturn awserr.SprintError(e.Code(), e.Message(), extra, e.OrigErr())\n}\n\n// String returns the string representation of the error.\nfunc (e UnknownServiceError) String() string {\n\treturn e.Error()\n}\n\n// A UnknownEndpointError is returned when in StrictMatching mode and the\n// service is valid, but the region does not resolve to an endpoint. Includes\n// a list of all known endpoints for the service.\ntype UnknownEndpointError struct {\n\tawsError\n\tPartition string\n\tService   string\n\tRegion    string\n\tKnown     []string\n}\n\n// NewUnknownEndpointError builds and returns UnknownEndpointError.\nfunc NewUnknownEndpointError(p, s, r string, known []string) UnknownEndpointError {\n\treturn UnknownEndpointError{\n\t\tawsError: awserr.New(\"UnknownEndpointError\",\n\t\t\t\"could not resolve endpoint\", nil),\n\t\tPartition: p,\n\t\tService:   s,\n\t\tRegion:    r,\n\t\tKnown:     known,\n\t}\n}\n\n// String returns the string representation of the error.\nfunc (e UnknownEndpointError) Error() string {\n\textra := fmt.Sprintf(\"partition: %q, service: %q, region: %q\",\n\t\te.Partition, e.Service, e.Region)\n\tif len(e.Known) > 0 {\n\t\textra += fmt.Sprintf(\", known: %v\", e.Known)\n\t}\n\treturn awserr.SprintError(e.Code(), e.Message(), extra, e.OrigErr())\n}\n\n// String returns the string representation of the error.\nfunc (e UnknownEndpointError) String() string {\n\treturn e.Error()\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/legacy_regions.go",
    "content": "package endpoints\n\nvar legacyGlobalRegions = map[string]map[string]struct{}{\n\t\"sts\": {\n\t\t\"ap-northeast-1\": {},\n\t\t\"ap-south-1\":     {},\n\t\t\"ap-southeast-1\": {},\n\t\t\"ap-southeast-2\": {},\n\t\t\"ca-central-1\":   {},\n\t\t\"eu-central-1\":   {},\n\t\t\"eu-north-1\":     {},\n\t\t\"eu-west-1\":      {},\n\t\t\"eu-west-2\":      {},\n\t\t\"eu-west-3\":      {},\n\t\t\"sa-east-1\":      {},\n\t\t\"us-east-1\":      {},\n\t\t\"us-east-2\":      {},\n\t\t\"us-west-1\":      {},\n\t\t\"us-west-2\":      {},\n\t},\n\t\"s3\": {\n\t\t\"us-east-1\": {},\n\t},\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model.go",
    "content": "package endpoints\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\tec2MetadataEndpointIPv6 = \"http://[fd00:ec2::254]/latest\"\n\tec2MetadataEndpointIPv4 = \"http://169.254.169.254/latest\"\n)\n\nconst dnsSuffixTemplateKey = \"{dnsSuffix}\"\n\n// defaultKey is a compound map key of a variant and other values.\ntype defaultKey struct {\n\tVariant        endpointVariant\n\tServiceVariant serviceVariant\n}\n\n// endpointKey is a compound map key of a region and associated variant value.\ntype endpointKey struct {\n\tRegion  string\n\tVariant endpointVariant\n}\n\n// endpointVariant is a bit field to describe the endpoints attributes.\ntype endpointVariant uint64\n\n// serviceVariant is a bit field to describe the service endpoint attributes.\ntype serviceVariant uint64\n\nconst (\n\t// fipsVariant indicates that the endpoint is FIPS capable.\n\tfipsVariant endpointVariant = 1 << (64 - 1 - iota)\n\n\t// dualStackVariant indicates that the endpoint is DualStack capable.\n\tdualStackVariant\n)\n\nvar regionValidationRegex = regexp.MustCompile(`^[[:alnum:]]([[:alnum:]\\-]*[[:alnum:]])?$`)\n\ntype partitions []partition\n\nfunc (ps partitions) EndpointFor(service, region string, opts ...func(*Options)) (ResolvedEndpoint, error) {\n\tvar opt Options\n\topt.Set(opts...)\n\n\tif len(opt.ResolvedRegion) > 0 {\n\t\tregion = opt.ResolvedRegion\n\t}\n\n\tfor i := 0; i < len(ps); i++ {\n\t\tif !ps[i].canResolveEndpoint(service, region, opt) {\n\t\t\tcontinue\n\t\t}\n\n\t\treturn ps[i].EndpointFor(service, region, opts...)\n\t}\n\n\t// If loose matching fallback to first partition format to use\n\t// when resolving the endpoint.\n\tif !opt.StrictMatching && len(ps) > 0 {\n\t\treturn ps[0].EndpointFor(service, region, opts...)\n\t}\n\n\treturn ResolvedEndpoint{}, NewUnknownEndpointError(\"all partitions\", service, region, []string{})\n}\n\n// Partitions satisfies the EnumPartitions interface and returns a list\n// of Partitions representing each partition represented in the SDK's\n// endpoints model.\nfunc (ps partitions) Partitions() []Partition {\n\tparts := make([]Partition, 0, len(ps))\n\tfor i := 0; i < len(ps); i++ {\n\t\tparts = append(parts, ps[i].Partition())\n\t}\n\n\treturn parts\n}\n\ntype endpointWithVariants struct {\n\tendpoint\n\tVariants []endpointWithTags `json:\"variants\"`\n}\n\ntype endpointWithTags struct {\n\tendpoint\n\tTags []string `json:\"tags\"`\n}\n\ntype endpointDefaults map[defaultKey]endpoint\n\nfunc (p *endpointDefaults) UnmarshalJSON(data []byte) error {\n\tif *p == nil {\n\t\t*p = make(endpointDefaults)\n\t}\n\n\tvar e endpointWithVariants\n\tif err := json.Unmarshal(data, &e); err != nil {\n\t\treturn err\n\t}\n\n\t(*p)[defaultKey{Variant: 0}] = e.endpoint\n\n\te.Hostname = \"\"\n\te.DNSSuffix = \"\"\n\n\tfor _, variant := range e.Variants {\n\t\tendpointVariant, unknown := parseVariantTags(variant.Tags)\n\t\tif unknown {\n\t\t\tcontinue\n\t\t}\n\n\t\tvar ve endpoint\n\t\tve.mergeIn(e.endpoint)\n\t\tve.mergeIn(variant.endpoint)\n\n\t\t(*p)[defaultKey{Variant: endpointVariant}] = ve\n\t}\n\n\treturn nil\n}\n\nfunc parseVariantTags(tags []string) (ev endpointVariant, unknown bool) {\n\tif len(tags) == 0 {\n\t\tunknown = true\n\t\treturn\n\t}\n\n\tfor _, tag := range tags {\n\t\tswitch {\n\t\tcase strings.EqualFold(\"fips\", tag):\n\t\t\tev |= fipsVariant\n\t\tcase strings.EqualFold(\"dualstack\", tag):\n\t\t\tev |= dualStackVariant\n\t\tdefault:\n\t\t\tunknown = true\n\t\t}\n\t}\n\treturn ev, unknown\n}\n\ntype partition struct {\n\tID          string           `json:\"partition\"`\n\tName        string           `json:\"partitionName\"`\n\tDNSSuffix   string           `json:\"dnsSuffix\"`\n\tRegionRegex regionRegex      `json:\"regionRegex\"`\n\tDefaults    endpointDefaults `json:\"defaults\"`\n\tRegions     regions          `json:\"regions\"`\n\tServices    services         `json:\"services\"`\n}\n\nfunc (p partition) Partition() Partition {\n\treturn Partition{\n\t\tdnsSuffix: p.DNSSuffix,\n\t\tid:        p.ID,\n\t\tp:         &p,\n\t}\n}\n\nfunc (p partition) canResolveEndpoint(service, region string, options Options) bool {\n\ts, hasService := p.Services[service]\n\t_, hasEndpoint := s.Endpoints[endpointKey{\n\t\tRegion:  region,\n\t\tVariant: options.getEndpointVariant(service),\n\t}]\n\n\tif hasEndpoint && hasService {\n\t\treturn true\n\t}\n\n\tif options.StrictMatching {\n\t\treturn false\n\t}\n\n\treturn p.RegionRegex.MatchString(region)\n}\n\nfunc allowLegacyEmptyRegion(service string) bool {\n\tlegacy := map[string]struct{}{\n\t\t\"budgets\":       {},\n\t\t\"ce\":            {},\n\t\t\"chime\":         {},\n\t\t\"cloudfront\":    {},\n\t\t\"ec2metadata\":   {},\n\t\t\"iam\":           {},\n\t\t\"importexport\":  {},\n\t\t\"organizations\": {},\n\t\t\"route53\":       {},\n\t\t\"sts\":           {},\n\t\t\"support\":       {},\n\t\t\"waf\":           {},\n\t}\n\n\t_, allowed := legacy[service]\n\treturn allowed\n}\n\nfunc (p partition) EndpointFor(service, region string, opts ...func(*Options)) (resolved ResolvedEndpoint, err error) {\n\tvar opt Options\n\topt.Set(opts...)\n\n\tif len(opt.ResolvedRegion) > 0 {\n\t\tregion = opt.ResolvedRegion\n\t}\n\n\ts, hasService := p.Services[service]\n\n\tif service == Ec2metadataServiceID && !hasService {\n\t\tendpoint := getEC2MetadataEndpoint(p.ID, service, opt.EC2MetadataEndpointMode)\n\t\treturn endpoint, nil\n\t}\n\n\tif len(service) == 0 || !(hasService || opt.ResolveUnknownService) {\n\t\t// Only return error if the resolver will not fallback to creating\n\t\t// endpoint based on service endpoint ID passed in.\n\t\treturn resolved, NewUnknownServiceError(p.ID, service, serviceList(p.Services))\n\t}\n\n\tif len(region) == 0 && allowLegacyEmptyRegion(service) && len(s.PartitionEndpoint) != 0 {\n\t\tregion = s.PartitionEndpoint\n\t}\n\n\tif r, ok := isLegacyGlobalRegion(service, region, opt); ok {\n\t\tregion = r\n\t}\n\n\tvariant := opt.getEndpointVariant(service)\n\n\tendpoints := s.Endpoints\n\n\tserviceDefaults, hasServiceDefault := s.Defaults[defaultKey{Variant: variant}]\n\t// If we searched for a variant which may have no explicit service defaults,\n\t// then we need to inherit the standard service defaults except the hostname and dnsSuffix\n\tif variant != 0 && !hasServiceDefault {\n\t\tserviceDefaults = s.Defaults[defaultKey{}]\n\t\tserviceDefaults.Hostname = \"\"\n\t\tserviceDefaults.DNSSuffix = \"\"\n\t}\n\n\tpartitionDefaults, hasPartitionDefault := p.Defaults[defaultKey{Variant: variant}]\n\n\tvar dnsSuffix string\n\tif len(serviceDefaults.DNSSuffix) > 0 {\n\t\tdnsSuffix = serviceDefaults.DNSSuffix\n\t} else if variant == 0 {\n\t\t// For legacy reasons the partition dnsSuffix is not in the defaults, so if we looked for\n\t\t// a non-variant endpoint then we need to set the dnsSuffix.\n\t\tdnsSuffix = p.DNSSuffix\n\t}\n\n\tnoDefaults := !hasServiceDefault && !hasPartitionDefault\n\n\te, hasEndpoint := s.endpointForRegion(region, endpoints, variant)\n\tif len(region) == 0 || (!hasEndpoint && (opt.StrictMatching || noDefaults)) {\n\t\treturn resolved, NewUnknownEndpointError(p.ID, service, region, endpointList(endpoints, variant))\n\t}\n\n\tdefs := []endpoint{partitionDefaults, serviceDefaults}\n\n\treturn e.resolve(service, p.ID, region, dnsSuffixTemplateKey, dnsSuffix, defs, opt)\n}\n\nfunc getEC2MetadataEndpoint(partitionID, service string, mode EC2IMDSEndpointModeState) ResolvedEndpoint {\n\tswitch mode {\n\tcase EC2IMDSEndpointModeStateIPv6:\n\t\treturn ResolvedEndpoint{\n\t\t\tURL:                ec2MetadataEndpointIPv6,\n\t\t\tPartitionID:        partitionID,\n\t\t\tSigningRegion:      \"aws-global\",\n\t\t\tSigningName:        service,\n\t\t\tSigningNameDerived: true,\n\t\t\tSigningMethod:      \"v4\",\n\t\t}\n\tcase EC2IMDSEndpointModeStateIPv4:\n\t\tfallthrough\n\tdefault:\n\t\treturn ResolvedEndpoint{\n\t\t\tURL:                ec2MetadataEndpointIPv4,\n\t\t\tPartitionID:        partitionID,\n\t\t\tSigningRegion:      \"aws-global\",\n\t\t\tSigningName:        service,\n\t\t\tSigningNameDerived: true,\n\t\t\tSigningMethod:      \"v4\",\n\t\t}\n\t}\n}\n\nfunc isLegacyGlobalRegion(service string, region string, opt Options) (string, bool) {\n\tif opt.getEndpointVariant(service) != 0 {\n\t\treturn \"\", false\n\t}\n\n\tconst (\n\t\tsts       = \"sts\"\n\t\ts3        = \"s3\"\n\t\tawsGlobal = \"aws-global\"\n\t)\n\n\tswitch {\n\tcase service == sts && opt.STSRegionalEndpoint == RegionalSTSEndpoint:\n\t\treturn region, false\n\tcase service == s3 && opt.S3UsEast1RegionalEndpoint == RegionalS3UsEast1Endpoint:\n\t\treturn region, false\n\tdefault:\n\t\tif _, ok := legacyGlobalRegions[service][region]; ok {\n\t\t\treturn awsGlobal, true\n\t\t}\n\t}\n\n\treturn region, false\n}\n\nfunc serviceList(ss services) []string {\n\tlist := make([]string, 0, len(ss))\n\tfor k := range ss {\n\t\tlist = append(list, k)\n\t}\n\treturn list\n}\nfunc endpointList(es serviceEndpoints, variant endpointVariant) []string {\n\tlist := make([]string, 0, len(es))\n\tfor k := range es {\n\t\tif k.Variant != variant {\n\t\t\tcontinue\n\t\t}\n\t\tlist = append(list, k.Region)\n\t}\n\treturn list\n}\n\ntype regionRegex struct {\n\t*regexp.Regexp\n}\n\nfunc (rr *regionRegex) UnmarshalJSON(b []byte) (err error) {\n\t// Strip leading and trailing quotes\n\tregex, err := strconv.Unquote(string(b))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to strip quotes from regex, %v\", err)\n\t}\n\n\trr.Regexp, err = regexp.Compile(regex)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to unmarshal region regex, %v\", err)\n\t}\n\treturn nil\n}\n\ntype regions map[string]region\n\ntype region struct {\n\tDescription string `json:\"description\"`\n}\n\ntype services map[string]service\n\ntype service struct {\n\tPartitionEndpoint string           `json:\"partitionEndpoint\"`\n\tIsRegionalized    boxedBool        `json:\"isRegionalized,omitempty\"`\n\tDefaults          endpointDefaults `json:\"defaults\"`\n\tEndpoints         serviceEndpoints `json:\"endpoints\"`\n}\n\nfunc (s *service) endpointForRegion(region string, endpoints serviceEndpoints, variant endpointVariant) (endpoint, bool) {\n\tif e, ok := endpoints[endpointKey{Region: region, Variant: variant}]; ok {\n\t\treturn e, true\n\t}\n\n\tif s.IsRegionalized == boxedFalse {\n\t\treturn endpoints[endpointKey{Region: s.PartitionEndpoint, Variant: variant}], region == s.PartitionEndpoint\n\t}\n\n\t// Unable to find any matching endpoint, return\n\t// blank that will be used for generic endpoint creation.\n\treturn endpoint{}, false\n}\n\ntype serviceEndpoints map[endpointKey]endpoint\n\nfunc (s *serviceEndpoints) UnmarshalJSON(data []byte) error {\n\tif *s == nil {\n\t\t*s = make(serviceEndpoints)\n\t}\n\n\tvar regionToEndpoint map[string]endpointWithVariants\n\n\tif err := json.Unmarshal(data, &regionToEndpoint); err != nil {\n\t\treturn err\n\t}\n\n\tfor region, e := range regionToEndpoint {\n\t\t(*s)[endpointKey{Region: region}] = e.endpoint\n\n\t\te.Hostname = \"\"\n\t\te.DNSSuffix = \"\"\n\n\t\tfor _, variant := range e.Variants {\n\t\t\tendpointVariant, unknown := parseVariantTags(variant.Tags)\n\t\t\tif unknown {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvar ve endpoint\n\t\t\tve.mergeIn(e.endpoint)\n\t\t\tve.mergeIn(variant.endpoint)\n\n\t\t\t(*s)[endpointKey{Region: region, Variant: endpointVariant}] = ve\n\t\t}\n\t}\n\n\treturn nil\n}\n\ntype endpoint struct {\n\tHostname        string          `json:\"hostname\"`\n\tProtocols       []string        `json:\"protocols\"`\n\tCredentialScope credentialScope `json:\"credentialScope\"`\n\n\tDNSSuffix string `json:\"dnsSuffix\"`\n\n\t// Signature Version not used\n\tSignatureVersions []string `json:\"signatureVersions\"`\n\n\t// SSLCommonName not used.\n\tSSLCommonName string `json:\"sslCommonName\"`\n\n\tDeprecated boxedBool `json:\"deprecated\"`\n}\n\n// isZero returns whether the endpoint structure is an empty (zero) value.\nfunc (e endpoint) isZero() bool {\n\tswitch {\n\tcase len(e.Hostname) != 0:\n\t\treturn false\n\tcase len(e.Protocols) != 0:\n\t\treturn false\n\tcase e.CredentialScope != (credentialScope{}):\n\t\treturn false\n\tcase len(e.SignatureVersions) != 0:\n\t\treturn false\n\tcase len(e.SSLCommonName) != 0:\n\t\treturn false\n\t}\n\treturn true\n}\n\nconst (\n\tdefaultProtocol = \"https\"\n\tdefaultSigner   = \"v4\"\n)\n\nvar (\n\tprotocolPriority = []string{\"https\", \"http\"}\n\tsignerPriority   = []string{\"v4\", \"v2\"}\n)\n\nfunc getByPriority(s []string, p []string, def string) string {\n\tif len(s) == 0 {\n\t\treturn def\n\t}\n\n\tfor i := 0; i < len(p); i++ {\n\t\tfor j := 0; j < len(s); j++ {\n\t\t\tif s[j] == p[i] {\n\t\t\t\treturn s[j]\n\t\t\t}\n\t\t}\n\t}\n\n\treturn s[0]\n}\n\nfunc (e endpoint) resolve(service, partitionID, region, dnsSuffixTemplateVariable, dnsSuffix string, defs []endpoint, opts Options) (ResolvedEndpoint, error) {\n\tvar merged endpoint\n\tfor _, def := range defs {\n\t\tmerged.mergeIn(def)\n\t}\n\tmerged.mergeIn(e)\n\te = merged\n\n\tsigningRegion := e.CredentialScope.Region\n\tif len(signingRegion) == 0 {\n\t\tsigningRegion = region\n\t}\n\n\tsigningName := e.CredentialScope.Service\n\tvar signingNameDerived bool\n\tif len(signingName) == 0 {\n\t\tsigningName = service\n\t\tsigningNameDerived = true\n\t}\n\n\thostname := e.Hostname\n\n\tif !validateInputRegion(region) {\n\t\treturn ResolvedEndpoint{}, fmt.Errorf(\"invalid region identifier format provided\")\n\t}\n\n\tif len(merged.DNSSuffix) > 0 {\n\t\tdnsSuffix = merged.DNSSuffix\n\t}\n\n\tu := strings.Replace(hostname, \"{service}\", service, 1)\n\tu = strings.Replace(u, \"{region}\", region, 1)\n\tu = strings.Replace(u, dnsSuffixTemplateVariable, dnsSuffix, 1)\n\n\tscheme := getEndpointScheme(e.Protocols, opts.DisableSSL)\n\tu = fmt.Sprintf(\"%s://%s\", scheme, u)\n\n\tif e.Deprecated == boxedTrue && opts.LogDeprecated && opts.Logger != nil {\n\t\topts.Logger.Log(fmt.Sprintf(\"endpoint identifier %q, url %q marked as deprecated\", region, u))\n\t}\n\n\treturn ResolvedEndpoint{\n\t\tURL:                u,\n\t\tPartitionID:        partitionID,\n\t\tSigningRegion:      signingRegion,\n\t\tSigningName:        signingName,\n\t\tSigningNameDerived: signingNameDerived,\n\t\tSigningMethod:      getByPriority(e.SignatureVersions, signerPriority, defaultSigner),\n\t}, nil\n}\n\nfunc getEndpointScheme(protocols []string, disableSSL bool) string {\n\tif disableSSL {\n\t\treturn \"http\"\n\t}\n\n\treturn getByPriority(protocols, protocolPriority, defaultProtocol)\n}\n\nfunc (e *endpoint) mergeIn(other endpoint) {\n\tif len(other.Hostname) > 0 {\n\t\te.Hostname = other.Hostname\n\t}\n\tif len(other.Protocols) > 0 {\n\t\te.Protocols = other.Protocols\n\t}\n\tif len(other.SignatureVersions) > 0 {\n\t\te.SignatureVersions = other.SignatureVersions\n\t}\n\tif len(other.CredentialScope.Region) > 0 {\n\t\te.CredentialScope.Region = other.CredentialScope.Region\n\t}\n\tif len(other.CredentialScope.Service) > 0 {\n\t\te.CredentialScope.Service = other.CredentialScope.Service\n\t}\n\tif len(other.SSLCommonName) > 0 {\n\t\te.SSLCommonName = other.SSLCommonName\n\t}\n\tif len(other.DNSSuffix) > 0 {\n\t\te.DNSSuffix = other.DNSSuffix\n\t}\n\tif other.Deprecated != boxedBoolUnset {\n\t\te.Deprecated = other.Deprecated\n\t}\n}\n\ntype credentialScope struct {\n\tRegion  string `json:\"region\"`\n\tService string `json:\"service\"`\n}\n\ntype boxedBool int\n\nfunc (b *boxedBool) UnmarshalJSON(buf []byte) error {\n\tv, err := strconv.ParseBool(string(buf))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif v {\n\t\t*b = boxedTrue\n\t} else {\n\t\t*b = boxedFalse\n\t}\n\n\treturn nil\n}\n\nconst (\n\tboxedBoolUnset boxedBool = iota\n\tboxedFalse\n\tboxedTrue\n)\n\nfunc validateInputRegion(region string) bool {\n\treturn regionValidationRegex.MatchString(region)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go",
    "content": "//go:build codegen\n// +build codegen\n\npackage endpoints\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n\t\"text/template\"\n\t\"unicode\"\n)\n\n// A CodeGenOptions are the options for code generating the endpoints into\n// Go code from the endpoints model definition.\ntype CodeGenOptions struct {\n\t// Options for how the model will be decoded.\n\tDecodeModelOptions DecodeModelOptions\n\n\t// Disables code generation of the service endpoint prefix IDs defined in\n\t// the model.\n\tDisableGenerateServiceIDs bool\n}\n\n// Set combines all of the option functions together\nfunc (d *CodeGenOptions) Set(optFns ...func(*CodeGenOptions)) {\n\tfor _, fn := range optFns {\n\t\tfn(d)\n\t}\n}\n\n// CodeGenModel given a endpoints model file will decode it and attempt to\n// generate Go code from the model definition. Error will be returned if\n// the code is unable to be generated, or decoded.\nfunc CodeGenModel(modelFile io.Reader, outFile io.Writer, optFns ...func(*CodeGenOptions)) error {\n\tvar opts CodeGenOptions\n\topts.Set(optFns...)\n\n\tresolver, err := DecodeModel(modelFile, func(d *DecodeModelOptions) {\n\t\t*d = opts.DecodeModelOptions\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tv := struct {\n\t\tResolver\n\t\tCodeGenOptions\n\t}{\n\t\tResolver:       resolver,\n\t\tCodeGenOptions: opts,\n\t}\n\n\ttmpl := template.Must(template.New(\"tmpl\").Funcs(funcMap).Parse(v3Tmpl))\n\tif err := tmpl.ExecuteTemplate(outFile, \"defaults\", v); err != nil {\n\t\treturn fmt.Errorf(\"failed to execute template, %v\", err)\n\t}\n\n\treturn nil\n}\n\nfunc toSymbol(v string) string {\n\tout := []rune{}\n\tfor _, c := range strings.Title(v) {\n\t\tif !(unicode.IsNumber(c) || unicode.IsLetter(c)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tout = append(out, c)\n\t}\n\n\treturn string(out)\n}\n\nfunc quoteString(v string) string {\n\treturn fmt.Sprintf(\"%q\", v)\n}\n\nfunc regionConstName(p, r string) string {\n\treturn toSymbol(p) + toSymbol(r)\n}\n\nfunc partitionGetter(id string) string {\n\treturn fmt.Sprintf(\"%sPartition\", toSymbol(id))\n}\n\nfunc partitionVarName(id string) string {\n\treturn fmt.Sprintf(\"%sPartition\", strings.ToLower(toSymbol(id)))\n}\n\nfunc listPartitionNames(ps partitions) string {\n\tnames := []string{}\n\tswitch len(ps) {\n\tcase 1:\n\t\treturn ps[0].Name\n\tcase 2:\n\t\treturn fmt.Sprintf(\"%s and %s\", ps[0].Name, ps[1].Name)\n\tdefault:\n\t\tfor i, p := range ps {\n\t\t\tif i == len(ps)-1 {\n\t\t\t\tnames = append(names, \"and \"+p.Name)\n\t\t\t} else {\n\t\t\t\tnames = append(names, p.Name)\n\t\t\t}\n\t\t}\n\t\treturn strings.Join(names, \", \")\n\t}\n}\n\nfunc boxedBoolIfSet(msg string, v boxedBool) string {\n\tswitch v {\n\tcase boxedTrue:\n\t\treturn fmt.Sprintf(msg, \"boxedTrue\")\n\tcase boxedFalse:\n\t\treturn fmt.Sprintf(msg, \"boxedFalse\")\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\nfunc stringIfSet(msg, v string) string {\n\tif len(v) == 0 {\n\t\treturn \"\"\n\t}\n\n\treturn fmt.Sprintf(msg, v)\n}\n\nfunc stringSliceIfSet(msg string, vs []string) string {\n\tif len(vs) == 0 {\n\t\treturn \"\"\n\t}\n\n\tnames := []string{}\n\tfor _, v := range vs {\n\t\tnames = append(names, `\"`+v+`\"`)\n\t}\n\n\treturn fmt.Sprintf(msg, strings.Join(names, \",\"))\n}\n\nfunc endpointIsSet(v endpoint) bool {\n\treturn !reflect.DeepEqual(v, endpoint{})\n}\n\nfunc serviceSet(ps partitions) map[string]struct{} {\n\tset := map[string]struct{}{}\n\tfor _, p := range ps {\n\t\tfor id := range p.Services {\n\t\t\tset[id] = struct{}{}\n\t\t}\n\t}\n\n\treturn set\n}\n\nfunc endpointVariantSetter(variant endpointVariant) (string, error) {\n\tif variant == 0 {\n\t\treturn \"0\", nil\n\t}\n\n\tif variant > (fipsVariant | dualStackVariant) {\n\t\treturn \"\", fmt.Errorf(\"unknown endpoint variant\")\n\t}\n\n\tvar symbols []string\n\tif variant&fipsVariant != 0 {\n\t\tsymbols = append(symbols, \"fipsVariant\")\n\t}\n\tif variant&dualStackVariant != 0 {\n\t\tsymbols = append(symbols, \"dualStackVariant\")\n\t}\n\tv := strings.Join(symbols, \"|\")\n\n\treturn v, nil\n}\n\nfunc endpointKeySetter(e endpointKey) (string, error) {\n\tvar sb strings.Builder\n\tsb.WriteString(\"endpointKey{\\n\")\n\tsb.WriteString(fmt.Sprintf(\"Region: %q,\\n\", e.Region))\n\tif e.Variant != 0 {\n\t\tvariantSetter, err := endpointVariantSetter(e.Variant)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tsb.WriteString(fmt.Sprintf(\"Variant: %s,\\n\", variantSetter))\n\t}\n\tsb.WriteString(\"}\")\n\treturn sb.String(), nil\n}\n\nfunc defaultKeySetter(e defaultKey) (string, error) {\n\tvar sb strings.Builder\n\tsb.WriteString(\"defaultKey{\\n\")\n\tif e.Variant != 0 {\n\t\tvariantSetter, err := endpointVariantSetter(e.Variant)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tsb.WriteString(fmt.Sprintf(\"Variant: %s,\\n\", variantSetter))\n\t}\n\tsb.WriteString(\"}\")\n\treturn sb.String(), nil\n}\n\nvar funcMap = template.FuncMap{\n\t\"ToSymbol\":              toSymbol,\n\t\"QuoteString\":           quoteString,\n\t\"RegionConst\":           regionConstName,\n\t\"PartitionGetter\":       partitionGetter,\n\t\"PartitionVarName\":      partitionVarName,\n\t\"ListPartitionNames\":    listPartitionNames,\n\t\"BoxedBoolIfSet\":        boxedBoolIfSet,\n\t\"StringIfSet\":           stringIfSet,\n\t\"StringSliceIfSet\":      stringSliceIfSet,\n\t\"EndpointIsSet\":         endpointIsSet,\n\t\"ServicesSet\":           serviceSet,\n\t\"EndpointVariantSetter\": endpointVariantSetter,\n\t\"EndpointKeySetter\":     endpointKeySetter,\n\t\"DefaultKeySetter\":      defaultKeySetter,\n}\n\nconst v3Tmpl = `\n{{ define \"defaults\" -}}\n// Code generated by aws/endpoints/v3model_codegen.go. DO NOT EDIT.\n\npackage endpoints\n\nimport (\n\t\"regexp\"\n)\n\n\t{{ template \"partition consts\" $.Resolver }}\n\n\t{{ range $_, $partition := $.Resolver }}\n\t\t{{ template \"partition region consts\" $partition }}\n\t{{ end }}\n\n\t{{ if not $.DisableGenerateServiceIDs -}}\n\t{{ template \"service consts\" $.Resolver }}\n\t{{- end }}\n\t\n\t{{ template \"endpoint resolvers\" $.Resolver }}\n{{- end }}\n\n{{ define \"partition consts\" }}\n\t// Partition identifiers\n\tconst (\n\t\t{{ range $_, $p := . -}}\n\t\t\t{{ ToSymbol $p.ID }}PartitionID = {{ QuoteString $p.ID }} // {{ $p.Name }} partition.\n\t\t{{ end -}}\n\t)\n{{- end }}\n\n{{ define \"partition region consts\" }}\n\t// {{ .Name }} partition's regions.\n\tconst (\n\t\t{{ range $id, $region := .Regions -}}\n\t\t\t{{ ToSymbol $id }}RegionID = {{ QuoteString $id }} // {{ $region.Description }}.\n\t\t{{ end -}}\n\t)\n{{- end }}\n\n{{ define \"service consts\" }}\n\t// Service identifiers\n\tconst (\n\t\t{{ $serviceSet := ServicesSet . -}}\n\t\t{{ range $id, $_ := $serviceSet -}}\n\t\t\t{{ ToSymbol $id }}ServiceID = {{ QuoteString $id }} // {{ ToSymbol $id }}.\n\t\t{{ end -}}\n\t)\n{{- end }}\n\n{{ define \"endpoint resolvers\" }}\n\t// DefaultResolver returns an Endpoint resolver that will be able\n\t// to resolve endpoints for: {{ ListPartitionNames . }}.\n\t//\n\t// Use DefaultPartitions() to get the list of the default partitions.\n\tfunc DefaultResolver() Resolver {\n\t\treturn defaultPartitions\n\t}\n\n\t// DefaultPartitions returns a list of the partitions the SDK is bundled\n\t// with. The available partitions are: {{ ListPartitionNames . }}.\n\t//\n\t//    partitions := endpoints.DefaultPartitions\n\t//    for _, p := range partitions {\n\t//        // ... inspect partitions\n\t//    }\n\tfunc DefaultPartitions() []Partition {\n\t\treturn defaultPartitions.Partitions()\n\t}\n\n\tvar defaultPartitions = partitions{\n\t\t{{ range $_, $partition := . -}}\n\t\t\t{{ PartitionVarName $partition.ID }},\n\t\t{{ end }}\n\t}\n\t\n\t{{ range $_, $partition := . -}}\n\t\t{{ $name := PartitionGetter $partition.ID -}}\n\t\t// {{ $name }} returns the Resolver for {{ $partition.Name }}.\n\t\tfunc {{ $name }}() Partition {\n\t\t\treturn  {{ PartitionVarName $partition.ID }}.Partition()\n\t\t}\n\t\tvar {{ PartitionVarName $partition.ID }} = {{ template \"gocode Partition\" $partition }}\n\t{{ end }}\n{{ end }}\n\n{{ define \"default partitions\" }}\n\tfunc DefaultPartitions() []Partition {\n\t\treturn []partition{\n\t\t\t{{ range $_, $partition := . -}}\n\t\t\t// {{ ToSymbol $partition.ID}}Partition(),\n\t\t\t{{ end }}\n\t\t}\n\t}\n{{ end }}\n\n{{ define \"gocode Partition\" -}}\npartition{\n\t{{ StringIfSet \"ID: %q,\\n\" .ID -}}\n\t{{ StringIfSet \"Name: %q,\\n\" .Name -}}\n\t{{ StringIfSet \"DNSSuffix: %q,\\n\" .DNSSuffix -}}\n\tRegionRegex: {{ template \"gocode RegionRegex\" .RegionRegex }},\n\t{{ if (gt (len .Defaults) 0) -}}\n\t\tDefaults: {{ template \"gocode Defaults\" .Defaults -}},\n\t{{ end -}}\n\tRegions:  {{ template \"gocode Regions\" .Regions }},\n\tServices: {{ template \"gocode Services\" .Services }},\n}\n{{- end }}\n\n{{ define \"gocode RegionRegex\" -}}\nregionRegex{\n\tRegexp: func() *regexp.Regexp{\n\t\treg, _ := regexp.Compile({{ QuoteString .Regexp.String }})\n\t\treturn reg\n\t}(),\n}\n{{- end }}\n\n{{ define \"gocode Regions\" -}}\nregions{\n\t{{ range $id, $region := . -}}\n\t\t\"{{ $id }}\": {{ template \"gocode Region\" $region }},\n\t{{ end -}}\n}\n{{- end }}\n\n{{ define \"gocode Region\" -}}\nregion{\n\t{{ StringIfSet \"Description: %q,\\n\" .Description -}}\n}\n{{- end }}\n\n{{ define \"gocode Services\" -}}\nservices{\n\t{{ range $id, $service := . -}}\n\t\"{{ $id }}\": {{ template \"gocode Service\" $service }},\n\t{{ end }}\n}\n{{- end }}\n\n{{ define \"gocode Service\" -}}\nservice{\n\t{{ StringIfSet \"PartitionEndpoint: %q,\\n\" .PartitionEndpoint -}}\n\t{{ BoxedBoolIfSet \"IsRegionalized: %s,\\n\" .IsRegionalized -}}\n\t{{ if (gt (len .Defaults) 0) -}}\n\t\tDefaults: {{ template \"gocode Defaults\" .Defaults -}},\n\t{{ end -}}\n\t{{ if .Endpoints -}}\n\t\tEndpoints: {{ template \"gocode Endpoints\" .Endpoints }},\n\t{{- end }}\n}\n{{- end }}\n\n{{ define \"gocode Defaults\" -}}\nendpointDefaults{\n\t{{ range $id, $endpoint := . -}}\n\t{{ DefaultKeySetter $id }}: {{ template \"gocode Endpoint\" $endpoint }},\n\t{{ end }}\n}\n{{- end }}\n\n{{ define \"gocode Endpoints\" -}}\nserviceEndpoints{\n\t{{ range $id, $endpoint := . -}}\n\t{{ EndpointKeySetter $id }}: {{ template \"gocode Endpoint\" $endpoint }},\n\t{{ end }}\n}\n{{- end }}\n\n{{ define \"gocode Endpoint\" -}}\nendpoint{\n\t{{ StringIfSet \"Hostname: %q,\\n\" .Hostname -}}\n\t{{ StringIfSet \"DNSSuffix: %q,\\n\" .DNSSuffix -}}\n\t{{ StringIfSet \"SSLCommonName: %q,\\n\" .SSLCommonName -}}\n\t{{ StringSliceIfSet \"Protocols: []string{%s},\\n\" .Protocols -}}\n\t{{ StringSliceIfSet \"SignatureVersions: []string{%s},\\n\" .SignatureVersions -}}\n\t{{ if or .CredentialScope.Region .CredentialScope.Service -}}\n\tCredentialScope: credentialScope{\n\t\t{{ StringIfSet \"Region: %q,\\n\" .CredentialScope.Region -}}\n\t\t{{ StringIfSet \"Service: %q,\\n\" .CredentialScope.Service -}}\n\t},\n\t{{- end }}\n\t{{ BoxedBoolIfSet \"Deprecated: %s,\\n\" .Deprecated -}}\n}\n{{- end }}\n`\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/errors.go",
    "content": "package aws\n\nimport \"github.com/aws/aws-sdk-go/aws/awserr\"\n\nvar (\n\t// ErrMissingRegion is an error that is returned if region configuration is\n\t// not found.\n\tErrMissingRegion = awserr.New(\"MissingRegion\", \"could not find region configuration\", nil)\n\n\t// ErrMissingEndpoint is an error that is returned if an endpoint cannot be\n\t// resolved for a service.\n\tErrMissingEndpoint = awserr.New(\"MissingEndpoint\", \"'Endpoint' configuration is required for this service\", nil)\n)\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/jsonvalue.go",
    "content": "package aws\n\n// JSONValue is a representation of a grab bag type that will be marshaled\n// into a json string. This type can be used just like any other map.\n//\n//\tExample:\n//\n//\tvalues := aws.JSONValue{\n//\t\t\"Foo\": \"Bar\",\n//\t}\n//\tvalues[\"Baz\"] = \"Qux\"\ntype JSONValue map[string]interface{}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/logger.go",
    "content": "package aws\n\nimport (\n\t\"log\"\n\t\"os\"\n)\n\n// A LogLevelType defines the level logging should be performed at. Used to instruct\n// the SDK which statements should be logged.\ntype LogLevelType uint\n\n// LogLevel returns the pointer to a LogLevel. Should be used to workaround\n// not being able to take the address of a non-composite literal.\nfunc LogLevel(l LogLevelType) *LogLevelType {\n\treturn &l\n}\n\n// Value returns the LogLevel value or the default value LogOff if the LogLevel\n// is nil. Safe to use on nil value LogLevelTypes.\nfunc (l *LogLevelType) Value() LogLevelType {\n\tif l != nil {\n\t\treturn *l\n\t}\n\treturn LogOff\n}\n\n// Matches returns true if the v LogLevel is enabled by this LogLevel. Should be\n// used with logging sub levels. Is safe to use on nil value LogLevelTypes. If\n// LogLevel is nil, will default to LogOff comparison.\nfunc (l *LogLevelType) Matches(v LogLevelType) bool {\n\tc := l.Value()\n\treturn c&v == v\n}\n\n// AtLeast returns true if this LogLevel is at least high enough to satisfies v.\n// Is safe to use on nil value LogLevelTypes. If LogLevel is nil, will default\n// to LogOff comparison.\nfunc (l *LogLevelType) AtLeast(v LogLevelType) bool {\n\tc := l.Value()\n\treturn c >= v\n}\n\nconst (\n\t// LogOff states that no logging should be performed by the SDK. This is the\n\t// default state of the SDK, and should be use to disable all logging.\n\tLogOff LogLevelType = iota * 0x1000\n\n\t// LogDebug state that debug output should be logged by the SDK. This should\n\t// be used to inspect request made and responses received.\n\tLogDebug\n)\n\n// Debug Logging Sub Levels\nconst (\n\t// LogDebugWithSigning states that the SDK should log request signing and\n\t// presigning events. This should be used to log the signing details of\n\t// requests for debugging. Will also enable LogDebug.\n\tLogDebugWithSigning LogLevelType = LogDebug | (1 << iota)\n\n\t// LogDebugWithHTTPBody states the SDK should log HTTP request and response\n\t// HTTP bodys in addition to the headers and path. This should be used to\n\t// see the body content of requests and responses made while using the SDK\n\t// Will also enable LogDebug.\n\tLogDebugWithHTTPBody\n\n\t// LogDebugWithRequestRetries states the SDK should log when service requests will\n\t// be retried. This should be used to log when you want to log when service\n\t// requests are being retried. Will also enable LogDebug.\n\tLogDebugWithRequestRetries\n\n\t// LogDebugWithRequestErrors states the SDK should log when service requests fail\n\t// to build, send, validate, or unmarshal.\n\tLogDebugWithRequestErrors\n\n\t// LogDebugWithEventStreamBody states the SDK should log EventStream\n\t// request and response bodys. This should be used to log the EventStream\n\t// wire unmarshaled message content of requests and responses made while\n\t// using the SDK Will also enable LogDebug.\n\tLogDebugWithEventStreamBody\n\n\t// LogDebugWithDeprecated states the SDK should log details about deprecated functionality.\n\tLogDebugWithDeprecated\n)\n\n// A Logger is a minimalistic interface for the SDK to log messages to. Should\n// be used to provide custom logging writers for the SDK to use.\ntype Logger interface {\n\tLog(...interface{})\n}\n\n// A LoggerFunc is a convenience type to convert a function taking a variadic\n// list of arguments and wrap it so the Logger interface can be used.\n//\n// Example:\n//     s3.New(sess, &aws.Config{Logger: aws.LoggerFunc(func(args ...interface{}) {\n//         fmt.Fprintln(os.Stdout, args...)\n//     })})\ntype LoggerFunc func(...interface{})\n\n// Log calls the wrapped function with the arguments provided\nfunc (f LoggerFunc) Log(args ...interface{}) {\n\tf(args...)\n}\n\n// NewDefaultLogger returns a Logger which will write log messages to stdout, and\n// use same formatting runes as the stdlib log.Logger\nfunc NewDefaultLogger() Logger {\n\treturn &defaultLogger{\n\t\tlogger: log.New(os.Stdout, \"\", log.LstdFlags),\n\t}\n}\n\n// A defaultLogger provides a minimalistic logger satisfying the Logger interface.\ntype defaultLogger struct {\n\tlogger *log.Logger\n}\n\n// Log logs the parameters to the stdlib logger. See log.Println.\nfunc (l defaultLogger) Log(args ...interface{}) {\n\tl.logger.Println(args...)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/connection_reset_error.go",
    "content": "package request\n\nimport (\n\t\"strings\"\n)\n\nfunc isErrConnectionReset(err error) bool {\n\tif strings.Contains(err.Error(), \"read: connection reset\") {\n\t\treturn false\n\t}\n\n\tif strings.Contains(err.Error(), \"use of closed network connection\") ||\n\t\tstrings.Contains(err.Error(), \"connection reset\") ||\n\t\tstrings.Contains(err.Error(), \"broken pipe\") {\n\t\treturn true\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go",
    "content": "package request\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// A Handlers provides a collection of request handlers for various\n// stages of handling requests.\ntype Handlers struct {\n\tValidate         HandlerList\n\tBuild            HandlerList\n\tBuildStream      HandlerList\n\tSign             HandlerList\n\tSend             HandlerList\n\tValidateResponse HandlerList\n\tUnmarshal        HandlerList\n\tUnmarshalStream  HandlerList\n\tUnmarshalMeta    HandlerList\n\tUnmarshalError   HandlerList\n\tRetry            HandlerList\n\tAfterRetry       HandlerList\n\tCompleteAttempt  HandlerList\n\tComplete         HandlerList\n}\n\n// Copy returns a copy of this handler's lists.\nfunc (h *Handlers) Copy() Handlers {\n\treturn Handlers{\n\t\tValidate:         h.Validate.copy(),\n\t\tBuild:            h.Build.copy(),\n\t\tBuildStream:      h.BuildStream.copy(),\n\t\tSign:             h.Sign.copy(),\n\t\tSend:             h.Send.copy(),\n\t\tValidateResponse: h.ValidateResponse.copy(),\n\t\tUnmarshal:        h.Unmarshal.copy(),\n\t\tUnmarshalStream:  h.UnmarshalStream.copy(),\n\t\tUnmarshalError:   h.UnmarshalError.copy(),\n\t\tUnmarshalMeta:    h.UnmarshalMeta.copy(),\n\t\tRetry:            h.Retry.copy(),\n\t\tAfterRetry:       h.AfterRetry.copy(),\n\t\tCompleteAttempt:  h.CompleteAttempt.copy(),\n\t\tComplete:         h.Complete.copy(),\n\t}\n}\n\n// Clear removes callback functions for all handlers.\nfunc (h *Handlers) Clear() {\n\th.Validate.Clear()\n\th.Build.Clear()\n\th.BuildStream.Clear()\n\th.Send.Clear()\n\th.Sign.Clear()\n\th.Unmarshal.Clear()\n\th.UnmarshalStream.Clear()\n\th.UnmarshalMeta.Clear()\n\th.UnmarshalError.Clear()\n\th.ValidateResponse.Clear()\n\th.Retry.Clear()\n\th.AfterRetry.Clear()\n\th.CompleteAttempt.Clear()\n\th.Complete.Clear()\n}\n\n// IsEmpty returns if there are no handlers in any of the handlerlists.\nfunc (h *Handlers) IsEmpty() bool {\n\tif h.Validate.Len() != 0 {\n\t\treturn false\n\t}\n\tif h.Build.Len() != 0 {\n\t\treturn false\n\t}\n\tif h.BuildStream.Len() != 0 {\n\t\treturn false\n\t}\n\tif h.Send.Len() != 0 {\n\t\treturn false\n\t}\n\tif h.Sign.Len() != 0 {\n\t\treturn false\n\t}\n\tif h.Unmarshal.Len() != 0 {\n\t\treturn false\n\t}\n\tif h.UnmarshalStream.Len() != 0 {\n\t\treturn false\n\t}\n\tif h.UnmarshalMeta.Len() != 0 {\n\t\treturn false\n\t}\n\tif h.UnmarshalError.Len() != 0 {\n\t\treturn false\n\t}\n\tif h.ValidateResponse.Len() != 0 {\n\t\treturn false\n\t}\n\tif h.Retry.Len() != 0 {\n\t\treturn false\n\t}\n\tif h.AfterRetry.Len() != 0 {\n\t\treturn false\n\t}\n\tif h.CompleteAttempt.Len() != 0 {\n\t\treturn false\n\t}\n\tif h.Complete.Len() != 0 {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n// A HandlerListRunItem represents an entry in the HandlerList which\n// is being run.\ntype HandlerListRunItem struct {\n\tIndex   int\n\tHandler NamedHandler\n\tRequest *Request\n}\n\n// A HandlerList manages zero or more handlers in a list.\ntype HandlerList struct {\n\tlist []NamedHandler\n\n\t// Called after each request handler in the list is called. If set\n\t// and the func returns true the HandlerList will continue to iterate\n\t// over the request handlers. If false is returned the HandlerList\n\t// will stop iterating.\n\t//\n\t// Should be used if extra logic to be performed between each handler\n\t// in the list. This can be used to terminate a list's iteration\n\t// based on a condition such as error like, HandlerListStopOnError.\n\t// Or for logging like HandlerListLogItem.\n\tAfterEachFn func(item HandlerListRunItem) bool\n}\n\n// A NamedHandler is a struct that contains a name and function callback.\ntype NamedHandler struct {\n\tName string\n\tFn   func(*Request)\n}\n\n// copy creates a copy of the handler list.\nfunc (l *HandlerList) copy() HandlerList {\n\tn := HandlerList{\n\t\tAfterEachFn: l.AfterEachFn,\n\t}\n\tif len(l.list) == 0 {\n\t\treturn n\n\t}\n\n\tn.list = append(make([]NamedHandler, 0, len(l.list)), l.list...)\n\treturn n\n}\n\n// Clear clears the handler list.\nfunc (l *HandlerList) Clear() {\n\tl.list = l.list[0:0]\n}\n\n// Len returns the number of handlers in the list.\nfunc (l *HandlerList) Len() int {\n\treturn len(l.list)\n}\n\n// PushBack pushes handler f to the back of the handler list.\nfunc (l *HandlerList) PushBack(f func(*Request)) {\n\tl.PushBackNamed(NamedHandler{\"__anonymous\", f})\n}\n\n// PushBackNamed pushes named handler f to the back of the handler list.\nfunc (l *HandlerList) PushBackNamed(n NamedHandler) {\n\tif cap(l.list) == 0 {\n\t\tl.list = make([]NamedHandler, 0, 5)\n\t}\n\tl.list = append(l.list, n)\n}\n\n// PushFront pushes handler f to the front of the handler list.\nfunc (l *HandlerList) PushFront(f func(*Request)) {\n\tl.PushFrontNamed(NamedHandler{\"__anonymous\", f})\n}\n\n// PushFrontNamed pushes named handler f to the front of the handler list.\nfunc (l *HandlerList) PushFrontNamed(n NamedHandler) {\n\tif cap(l.list) == len(l.list) {\n\t\t// Allocating new list required\n\t\tl.list = append([]NamedHandler{n}, l.list...)\n\t} else {\n\t\t// Enough room to prepend into list.\n\t\tl.list = append(l.list, NamedHandler{})\n\t\tcopy(l.list[1:], l.list)\n\t\tl.list[0] = n\n\t}\n}\n\n// Remove removes a NamedHandler n\nfunc (l *HandlerList) Remove(n NamedHandler) {\n\tl.RemoveByName(n.Name)\n}\n\n// RemoveByName removes a NamedHandler by name.\nfunc (l *HandlerList) RemoveByName(name string) {\n\tfor i := 0; i < len(l.list); i++ {\n\t\tm := l.list[i]\n\t\tif m.Name == name {\n\t\t\t// Shift array preventing creating new arrays\n\t\t\tcopy(l.list[i:], l.list[i+1:])\n\t\t\tl.list[len(l.list)-1] = NamedHandler{}\n\t\t\tl.list = l.list[:len(l.list)-1]\n\n\t\t\t// decrement list so next check to length is correct\n\t\t\ti--\n\t\t}\n\t}\n}\n\n// SwapNamed will swap out any existing handlers with the same name as the\n// passed in NamedHandler returning true if handlers were swapped. False is\n// returned otherwise.\nfunc (l *HandlerList) SwapNamed(n NamedHandler) (swapped bool) {\n\tfor i := 0; i < len(l.list); i++ {\n\t\tif l.list[i].Name == n.Name {\n\t\t\tl.list[i].Fn = n.Fn\n\t\t\tswapped = true\n\t\t}\n\t}\n\n\treturn swapped\n}\n\n// Swap will swap out all handlers matching the name passed in. The matched\n// handlers will be swapped in. True is returned if the handlers were swapped.\nfunc (l *HandlerList) Swap(name string, replace NamedHandler) bool {\n\tvar swapped bool\n\n\tfor i := 0; i < len(l.list); i++ {\n\t\tif l.list[i].Name == name {\n\t\t\tl.list[i] = replace\n\t\t\tswapped = true\n\t\t}\n\t}\n\n\treturn swapped\n}\n\n// SetBackNamed will replace the named handler if it exists in the handler list.\n// If the handler does not exist the handler will be added to the end of the list.\nfunc (l *HandlerList) SetBackNamed(n NamedHandler) {\n\tif !l.SwapNamed(n) {\n\t\tl.PushBackNamed(n)\n\t}\n}\n\n// SetFrontNamed will replace the named handler if it exists in the handler list.\n// If the handler does not exist the handler will be added to the beginning of\n// the list.\nfunc (l *HandlerList) SetFrontNamed(n NamedHandler) {\n\tif !l.SwapNamed(n) {\n\t\tl.PushFrontNamed(n)\n\t}\n}\n\n// Run executes all handlers in the list with a given request object.\nfunc (l *HandlerList) Run(r *Request) {\n\tfor i, h := range l.list {\n\t\th.Fn(r)\n\t\titem := HandlerListRunItem{\n\t\t\tIndex: i, Handler: h, Request: r,\n\t\t}\n\t\tif l.AfterEachFn != nil && !l.AfterEachFn(item) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// HandlerListLogItem logs the request handler and the state of the\n// request's Error value. Always returns true to continue iterating\n// request handlers in a HandlerList.\nfunc HandlerListLogItem(item HandlerListRunItem) bool {\n\tif item.Request.Config.Logger == nil {\n\t\treturn true\n\t}\n\titem.Request.Config.Logger.Log(\"DEBUG: RequestHandler\",\n\t\titem.Index, item.Handler.Name, item.Request.Error)\n\n\treturn true\n}\n\n// HandlerListStopOnError returns false to stop the HandlerList iterating\n// over request handlers if Request.Error is not nil. True otherwise\n// to continue iterating.\nfunc HandlerListStopOnError(item HandlerListRunItem) bool {\n\treturn item.Request.Error == nil\n}\n\n// WithAppendUserAgent will add a string to the user agent prefixed with a\n// single white space.\nfunc WithAppendUserAgent(s string) Option {\n\treturn func(r *Request) {\n\t\tr.Handlers.Build.PushBack(func(r2 *Request) {\n\t\t\tAddToUserAgent(r, s)\n\t\t})\n\t}\n}\n\n// MakeAddToUserAgentHandler will add the name/version pair to the User-Agent request\n// header. If the extra parameters are provided they will be added as metadata to the\n// name/version pair resulting in the following format.\n// \"name/version (extra0; extra1; ...)\"\n// The user agent part will be concatenated with this current request's user agent string.\nfunc MakeAddToUserAgentHandler(name, version string, extra ...string) func(*Request) {\n\tua := fmt.Sprintf(\"%s/%s\", name, version)\n\tif len(extra) > 0 {\n\t\tua += fmt.Sprintf(\" (%s)\", strings.Join(extra, \"; \"))\n\t}\n\treturn func(r *Request) {\n\t\tAddToUserAgent(r, ua)\n\t}\n}\n\n// MakeAddToUserAgentFreeFormHandler adds the input to the User-Agent request header.\n// The input string will be concatenated with the current request's user agent string.\nfunc MakeAddToUserAgentFreeFormHandler(s string) func(*Request) {\n\treturn func(r *Request) {\n\t\tAddToUserAgent(r, s)\n\t}\n}\n\n// WithSetRequestHeaders updates the operation request's HTTP header to contain\n// the header key value pairs provided. If the header key already exists in the\n// request's HTTP header set, the existing value(s) will be replaced.\n//\n// Header keys added will be added as canonical format with title casing\n// applied via http.Header.Set method.\nfunc WithSetRequestHeaders(h map[string]string) Option {\n\treturn withRequestHeader(h).SetRequestHeaders\n}\n\ntype withRequestHeader map[string]string\n\nfunc (h withRequestHeader) SetRequestHeaders(r *Request) {\n\tfor k, v := range h {\n\t\tr.HTTPRequest.Header.Set(k, v)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/http_request.go",
    "content": "package request\n\nimport (\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n)\n\nfunc copyHTTPRequest(r *http.Request, body io.ReadCloser) *http.Request {\n\treq := new(http.Request)\n\t*req = *r\n\treq.URL = &url.URL{}\n\t*req.URL = *r.URL\n\treq.Body = body\n\n\treq.Header = http.Header{}\n\tfor k, v := range r.Header {\n\t\tfor _, vv := range v {\n\t\t\treq.Header.Add(k, vv)\n\t\t}\n\t}\n\n\treturn req\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/offset_reader.go",
    "content": "package request\n\nimport (\n\t\"io\"\n\t\"sync\"\n\n\t\"github.com/aws/aws-sdk-go/internal/sdkio\"\n)\n\n// offsetReader is a thread-safe io.ReadCloser to prevent racing\n// with retrying requests\ntype offsetReader struct {\n\tbuf    io.ReadSeeker\n\tlock   sync.Mutex\n\tclosed bool\n}\n\nfunc newOffsetReader(buf io.ReadSeeker, offset int64) (*offsetReader, error) {\n\treader := &offsetReader{}\n\t_, err := buf.Seek(offset, sdkio.SeekStart)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treader.buf = buf\n\treturn reader, nil\n}\n\n// Close will close the instance of the offset reader's access to\n// the underlying io.ReadSeeker.\nfunc (o *offsetReader) Close() error {\n\to.lock.Lock()\n\tdefer o.lock.Unlock()\n\to.closed = true\n\treturn nil\n}\n\n// Read is a thread-safe read of the underlying io.ReadSeeker\nfunc (o *offsetReader) Read(p []byte) (int, error) {\n\to.lock.Lock()\n\tdefer o.lock.Unlock()\n\n\tif o.closed {\n\t\treturn 0, io.EOF\n\t}\n\n\treturn o.buf.Read(p)\n}\n\n// Seek is a thread-safe seeking operation.\nfunc (o *offsetReader) Seek(offset int64, whence int) (int64, error) {\n\to.lock.Lock()\n\tdefer o.lock.Unlock()\n\n\treturn o.buf.Seek(offset, whence)\n}\n\n// CloseAndCopy will return a new offsetReader with a copy of the old buffer\n// and close the old buffer.\nfunc (o *offsetReader) CloseAndCopy(offset int64) (*offsetReader, error) {\n\tif err := o.Close(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn newOffsetReader(o.buf, offset)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/request.go",
    "content": "package request\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/client/metadata\"\n\t\"github.com/aws/aws-sdk-go/internal/sdkio\"\n)\n\nconst (\n\t// ErrCodeSerialization is the serialization error code that is received\n\t// during protocol unmarshaling.\n\tErrCodeSerialization = \"SerializationError\"\n\n\t// ErrCodeRead is an error that is returned during HTTP reads.\n\tErrCodeRead = \"ReadError\"\n\n\t// ErrCodeResponseTimeout is the connection timeout error that is received\n\t// during body reads.\n\tErrCodeResponseTimeout = \"ResponseTimeout\"\n\n\t// ErrCodeInvalidPresignExpire is returned when the expire time provided to\n\t// presign is invalid\n\tErrCodeInvalidPresignExpire = \"InvalidPresignExpireError\"\n\n\t// CanceledErrorCode is the error code that will be returned by an\n\t// API request that was canceled. Requests given a aws.Context may\n\t// return this error when canceled.\n\tCanceledErrorCode = \"RequestCanceled\"\n\n\t// ErrCodeRequestError is an error preventing the SDK from continuing to\n\t// process the request.\n\tErrCodeRequestError = \"RequestError\"\n)\n\n// A Request is the service request to be made.\ntype Request struct {\n\tConfig     aws.Config\n\tClientInfo metadata.ClientInfo\n\tHandlers   Handlers\n\n\tRetryer\n\tAttemptTime            time.Time\n\tTime                   time.Time\n\tOperation              *Operation\n\tHTTPRequest            *http.Request\n\tHTTPResponse           *http.Response\n\tBody                   io.ReadSeeker\n\tstreamingBody          io.ReadCloser\n\tBodyStart              int64 // offset from beginning of Body that the request body starts\n\tParams                 interface{}\n\tError                  error\n\tData                   interface{}\n\tRequestID              string\n\tRetryCount             int\n\tRetryable              *bool\n\tRetryDelay             time.Duration\n\tNotHoist               bool\n\tSignedHeaderVals       http.Header\n\tLastSignedAt           time.Time\n\tDisableFollowRedirects bool\n\n\t// Additional API error codes that should be retried. IsErrorRetryable\n\t// will consider these codes in addition to its built in cases.\n\tRetryErrorCodes []string\n\n\t// Additional API error codes that should be retried with throttle backoff\n\t// delay. IsErrorThrottle will consider these codes in addition to its\n\t// built in cases.\n\tThrottleErrorCodes []string\n\n\t// A value greater than 0 instructs the request to be signed as Presigned URL\n\t// You should not set this field directly. Instead use Request's\n\t// Presign or PresignRequest methods.\n\tExpireTime time.Duration\n\n\tcontext aws.Context\n\n\tbuilt bool\n\n\t// Need to persist an intermediate body between the input Body and HTTP\n\t// request body because the HTTP Client's transport can maintain a reference\n\t// to the HTTP request's body after the client has returned. This value is\n\t// safe to use concurrently and wrap the input Body for each HTTP request.\n\tsafeBody *offsetReader\n}\n\n// An Operation is the service API operation to be made.\ntype Operation struct {\n\tName       string\n\tHTTPMethod string\n\tHTTPPath   string\n\t*Paginator\n\n\tBeforePresignFn func(r *Request) error\n}\n\n// New returns a new Request pointer for the service API operation and\n// parameters.\n//\n// A Retryer should be provided to direct how the request is retried. If\n// Retryer is nil, a default no retry value will be used. You can use\n// NoOpRetryer in the Client package to disable retry behavior directly.\n//\n// Params is any value of input parameters to be the request payload.\n// Data is pointer value to an object which the request's response\n// payload will be deserialized to.\nfunc New(cfg aws.Config, clientInfo metadata.ClientInfo, handlers Handlers,\n\tretryer Retryer, operation *Operation, params interface{}, data interface{}) *Request {\n\n\tif retryer == nil {\n\t\tretryer = noOpRetryer{}\n\t}\n\n\tmethod := operation.HTTPMethod\n\tif method == \"\" {\n\t\tmethod = \"POST\"\n\t}\n\n\thttpReq, _ := http.NewRequest(method, \"\", nil)\n\n\tvar err error\n\thttpReq.URL, err = url.Parse(clientInfo.Endpoint)\n\tif err != nil {\n\t\thttpReq.URL = &url.URL{}\n\t\terr = awserr.New(\"InvalidEndpointURL\", \"invalid endpoint uri\", err)\n\t}\n\n\tif len(operation.HTTPPath) != 0 {\n\t\topHTTPPath := operation.HTTPPath\n\t\tvar opQueryString string\n\t\tif idx := strings.Index(opHTTPPath, \"?\"); idx >= 0 {\n\t\t\topQueryString = opHTTPPath[idx+1:]\n\t\t\topHTTPPath = opHTTPPath[:idx]\n\t\t}\n\n\t\tif strings.HasSuffix(httpReq.URL.Path, \"/\") && strings.HasPrefix(opHTTPPath, \"/\") {\n\t\t\topHTTPPath = opHTTPPath[1:]\n\t\t}\n\t\thttpReq.URL.Path += opHTTPPath\n\t\thttpReq.URL.RawQuery = opQueryString\n\t}\n\n\tr := &Request{\n\t\tConfig:     cfg,\n\t\tClientInfo: clientInfo,\n\t\tHandlers:   handlers.Copy(),\n\n\t\tRetryer:     retryer,\n\t\tTime:        time.Now(),\n\t\tExpireTime:  0,\n\t\tOperation:   operation,\n\t\tHTTPRequest: httpReq,\n\t\tBody:        nil,\n\t\tParams:      params,\n\t\tError:       err,\n\t\tData:        data,\n\t}\n\tr.SetBufferBody([]byte{})\n\n\treturn r\n}\n\n// A Option is a functional option that can augment or modify a request when\n// using a WithContext API operation method.\ntype Option func(*Request)\n\n// WithGetResponseHeader builds a request Option which will retrieve a single\n// header value from the HTTP Response. If there are multiple values for the\n// header key use WithGetResponseHeaders instead to access the http.Header\n// map directly. The passed in val pointer must be non-nil.\n//\n// This Option can be used multiple times with a single API operation.\n//\n//    var id2, versionID string\n//    svc.PutObjectWithContext(ctx, params,\n//        request.WithGetResponseHeader(\"x-amz-id-2\", &id2),\n//        request.WithGetResponseHeader(\"x-amz-version-id\", &versionID),\n//    )\nfunc WithGetResponseHeader(key string, val *string) Option {\n\treturn func(r *Request) {\n\t\tr.Handlers.Complete.PushBack(func(req *Request) {\n\t\t\t*val = req.HTTPResponse.Header.Get(key)\n\t\t})\n\t}\n}\n\n// WithGetResponseHeaders builds a request Option which will retrieve the\n// headers from the HTTP response and assign them to the passed in headers\n// variable. The passed in headers pointer must be non-nil.\n//\n//    var headers http.Header\n//    svc.PutObjectWithContext(ctx, params, request.WithGetResponseHeaders(&headers))\nfunc WithGetResponseHeaders(headers *http.Header) Option {\n\treturn func(r *Request) {\n\t\tr.Handlers.Complete.PushBack(func(req *Request) {\n\t\t\t*headers = req.HTTPResponse.Header\n\t\t})\n\t}\n}\n\n// WithLogLevel is a request option that will set the request to use a specific\n// log level when the request is made.\n//\n//     svc.PutObjectWithContext(ctx, params, request.WithLogLevel(aws.LogDebugWithHTTPBody)\nfunc WithLogLevel(l aws.LogLevelType) Option {\n\treturn func(r *Request) {\n\t\tr.Config.LogLevel = aws.LogLevel(l)\n\t}\n}\n\n// ApplyOptions will apply each option to the request calling them in the order\n// the were provided.\nfunc (r *Request) ApplyOptions(opts ...Option) {\n\tfor _, opt := range opts {\n\t\topt(r)\n\t}\n}\n\n// Context will always returns a non-nil context. If Request does not have a\n// context aws.BackgroundContext will be returned.\nfunc (r *Request) Context() aws.Context {\n\tif r.context != nil {\n\t\treturn r.context\n\t}\n\treturn aws.BackgroundContext()\n}\n\n// SetContext adds a Context to the current request that can be used to cancel\n// a in-flight request. The Context value must not be nil, or this method will\n// panic.\n//\n// Unlike http.Request.WithContext, SetContext does not return a copy of the\n// Request. It is not safe to use use a single Request value for multiple\n// requests. A new Request should be created for each API operation request.\n//\n// Go 1.6 and below:\n// The http.Request's Cancel field will be set to the Done() value of\n// the context. This will overwrite the Cancel field's value.\n//\n// Go 1.7 and above:\n// The http.Request.WithContext will be used to set the context on the underlying\n// http.Request. This will create a shallow copy of the http.Request. The SDK\n// may create sub contexts in the future for nested requests such as retries.\nfunc (r *Request) SetContext(ctx aws.Context) {\n\tif ctx == nil {\n\t\tpanic(\"context cannot be nil\")\n\t}\n\tsetRequestContext(r, ctx)\n}\n\n// WillRetry returns if the request's can be retried.\nfunc (r *Request) WillRetry() bool {\n\tif !aws.IsReaderSeekable(r.Body) && r.HTTPRequest.Body != NoBody {\n\t\treturn false\n\t}\n\treturn r.Error != nil && aws.BoolValue(r.Retryable) && r.RetryCount < r.MaxRetries()\n}\n\nfunc fmtAttemptCount(retryCount, maxRetries int) string {\n\treturn fmt.Sprintf(\"attempt %v/%v\", retryCount, maxRetries)\n}\n\n// ParamsFilled returns if the request's parameters have been populated\n// and the parameters are valid. False is returned if no parameters are\n// provided or invalid.\nfunc (r *Request) ParamsFilled() bool {\n\treturn r.Params != nil && reflect.ValueOf(r.Params).Elem().IsValid()\n}\n\n// DataFilled returns true if the request's data for response deserialization\n// target has been set and is a valid. False is returned if data is not\n// set, or is invalid.\nfunc (r *Request) DataFilled() bool {\n\treturn r.Data != nil && reflect.ValueOf(r.Data).Elem().IsValid()\n}\n\n// SetBufferBody will set the request's body bytes that will be sent to\n// the service API.\nfunc (r *Request) SetBufferBody(buf []byte) {\n\tr.SetReaderBody(bytes.NewReader(buf))\n}\n\n// SetStringBody sets the body of the request to be backed by a string.\nfunc (r *Request) SetStringBody(s string) {\n\tr.SetReaderBody(strings.NewReader(s))\n}\n\n// SetReaderBody will set the request's body reader.\nfunc (r *Request) SetReaderBody(reader io.ReadSeeker) {\n\tr.Body = reader\n\n\tif aws.IsReaderSeekable(reader) {\n\t\tvar err error\n\t\t// Get the Bodies current offset so retries will start from the same\n\t\t// initial position.\n\t\tr.BodyStart, err = reader.Seek(0, sdkio.SeekCurrent)\n\t\tif err != nil {\n\t\t\tr.Error = awserr.New(ErrCodeSerialization,\n\t\t\t\t\"failed to determine start of request body\", err)\n\t\t\treturn\n\t\t}\n\t}\n\tr.ResetBody()\n}\n\n// SetStreamingBody set the reader to be used for the request that will stream\n// bytes to the server. Request's Body must not be set to any reader.\nfunc (r *Request) SetStreamingBody(reader io.ReadCloser) {\n\tr.streamingBody = reader\n\tr.SetReaderBody(aws.ReadSeekCloser(reader))\n}\n\n// Presign returns the request's signed URL. Error will be returned\n// if the signing fails. The expire parameter is only used for presigned Amazon\n// S3 API requests. All other AWS services will use a fixed expiration\n// time of 15 minutes.\n//\n// It is invalid to create a presigned URL with a expire duration 0 or less. An\n// error is returned if expire duration is 0 or less.\nfunc (r *Request) Presign(expire time.Duration) (string, error) {\n\tr = r.copy()\n\n\t// Presign requires all headers be hoisted. There is no way to retrieve\n\t// the signed headers not hoisted without this. Making the presigned URL\n\t// useless.\n\tr.NotHoist = false\n\n\tu, _, err := getPresignedURL(r, expire)\n\treturn u, err\n}\n\n// PresignRequest behaves just like presign, with the addition of returning a\n// set of headers that were signed. The expire parameter is only used for\n// presigned Amazon S3 API requests. All other AWS services will use a fixed\n// expiration time of 15 minutes.\n//\n// It is invalid to create a presigned URL with a expire duration 0 or less. An\n// error is returned if expire duration is 0 or less.\n//\n// Returns the URL string for the API operation with signature in the query string,\n// and the HTTP headers that were included in the signature. These headers must\n// be included in any HTTP request made with the presigned URL.\n//\n// To prevent hoisting any headers to the query string set NotHoist to true on\n// this Request value prior to calling PresignRequest.\nfunc (r *Request) PresignRequest(expire time.Duration) (string, http.Header, error) {\n\tr = r.copy()\n\treturn getPresignedURL(r, expire)\n}\n\n// IsPresigned returns true if the request represents a presigned API url.\nfunc (r *Request) IsPresigned() bool {\n\treturn r.ExpireTime != 0\n}\n\nfunc getPresignedURL(r *Request, expire time.Duration) (string, http.Header, error) {\n\tif expire <= 0 {\n\t\treturn \"\", nil, awserr.New(\n\t\t\tErrCodeInvalidPresignExpire,\n\t\t\t\"presigned URL requires an expire duration greater than 0\",\n\t\t\tnil,\n\t\t)\n\t}\n\n\tr.ExpireTime = expire\n\n\tif r.Operation.BeforePresignFn != nil {\n\t\tif err := r.Operation.BeforePresignFn(r); err != nil {\n\t\t\treturn \"\", nil, err\n\t\t}\n\t}\n\n\tif err := r.Sign(); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\treturn r.HTTPRequest.URL.String(), r.SignedHeaderVals, nil\n}\n\nconst (\n\tnotRetrying = \"not retrying\"\n)\n\nfunc debugLogReqError(r *Request, stage, retryStr string, err error) {\n\tif !r.Config.LogLevel.Matches(aws.LogDebugWithRequestErrors) {\n\t\treturn\n\t}\n\n\tr.Config.Logger.Log(fmt.Sprintf(\"DEBUG: %s %s/%s failed, %s, error %v\",\n\t\tstage, r.ClientInfo.ServiceName, r.Operation.Name, retryStr, err))\n}\n\n// Build will build the request's object so it can be signed and sent\n// to the service. Build will also validate all the request's parameters.\n// Any additional build Handlers set on this request will be run\n// in the order they were set.\n//\n// The request will only be built once. Multiple calls to build will have\n// no effect.\n//\n// If any Validate or Build errors occur the build will stop and the error\n// which occurred will be returned.\nfunc (r *Request) Build() error {\n\tif !r.built {\n\t\tr.Handlers.Validate.Run(r)\n\t\tif r.Error != nil {\n\t\t\tdebugLogReqError(r, \"Validate Request\", notRetrying, r.Error)\n\t\t\treturn r.Error\n\t\t}\n\t\tr.Handlers.Build.Run(r)\n\t\tif r.Error != nil {\n\t\t\tdebugLogReqError(r, \"Build Request\", notRetrying, r.Error)\n\t\t\treturn r.Error\n\t\t}\n\t\tr.built = true\n\t}\n\n\treturn r.Error\n}\n\n// Sign will sign the request, returning error if errors are encountered.\n//\n// Sign will build the request prior to signing. All Sign Handlers will\n// be executed in the order they were set.\nfunc (r *Request) Sign() error {\n\tr.Build()\n\tif r.Error != nil {\n\t\tdebugLogReqError(r, \"Build Request\", notRetrying, r.Error)\n\t\treturn r.Error\n\t}\n\n\tSanitizeHostForHeader(r.HTTPRequest)\n\n\tr.Handlers.Sign.Run(r)\n\treturn r.Error\n}\n\nfunc (r *Request) getNextRequestBody() (body io.ReadCloser, err error) {\n\tif r.streamingBody != nil {\n\t\treturn r.streamingBody, nil\n\t}\n\n\tif r.safeBody != nil {\n\t\tr.safeBody.Close()\n\t}\n\n\tr.safeBody, err = newOffsetReader(r.Body, r.BodyStart)\n\tif err != nil {\n\t\treturn nil, awserr.New(ErrCodeSerialization,\n\t\t\t\"failed to get next request body reader\", err)\n\t}\n\n\t// Go 1.8 tightened and clarified the rules code needs to use when building\n\t// requests with the http package. Go 1.8 removed the automatic detection\n\t// of if the Request.Body was empty, or actually had bytes in it. The SDK\n\t// always sets the Request.Body even if it is empty and should not actually\n\t// be sent. This is incorrect.\n\t//\n\t// Go 1.8 did add a http.NoBody value that the SDK can use to tell the http\n\t// client that the request really should be sent without a body. The\n\t// Request.Body cannot be set to nil, which is preferable, because the\n\t// field is exported and could introduce nil pointer dereferences for users\n\t// of the SDK if they used that field.\n\t//\n\t// Related golang/go#18257\n\tl, err := aws.SeekerLen(r.Body)\n\tif err != nil {\n\t\treturn nil, awserr.New(ErrCodeSerialization,\n\t\t\t\"failed to compute request body size\", err)\n\t}\n\n\tif l == 0 {\n\t\tbody = NoBody\n\t} else if l > 0 {\n\t\tbody = r.safeBody\n\t} else {\n\t\t// Hack to prevent sending bodies for methods where the body\n\t\t// should be ignored by the server. Sending bodies on these\n\t\t// methods without an associated ContentLength will cause the\n\t\t// request to socket timeout because the server does not handle\n\t\t// Transfer-Encoding: chunked bodies for these methods.\n\t\t//\n\t\t// This would only happen if a aws.ReaderSeekerCloser was used with\n\t\t// a io.Reader that was not also an io.Seeker, or did not implement\n\t\t// Len() method.\n\t\tswitch r.Operation.HTTPMethod {\n\t\tcase \"GET\", \"HEAD\", \"DELETE\":\n\t\t\tbody = NoBody\n\t\tdefault:\n\t\t\tbody = r.safeBody\n\t\t}\n\t}\n\n\treturn body, nil\n}\n\n// GetBody will return an io.ReadSeeker of the Request's underlying\n// input body with a concurrency safe wrapper.\nfunc (r *Request) GetBody() io.ReadSeeker {\n\treturn r.safeBody\n}\n\n// Send will send the request, returning error if errors are encountered.\n//\n// Send will sign the request prior to sending. All Send Handlers will\n// be executed in the order they were set.\n//\n// Canceling a request is non-deterministic. If a request has been canceled,\n// then the transport will choose, randomly, one of the state channels during\n// reads or getting the connection.\n//\n// readLoop() and getConn(req *Request, cm connectMethod)\n// https://github.com/golang/go/blob/master/src/net/http/transport.go\n//\n// Send will not close the request.Request's body.\nfunc (r *Request) Send() error {\n\tdefer func() {\n\t\t// Ensure a non-nil HTTPResponse parameter is set to ensure handlers\n\t\t// checking for HTTPResponse values, don't fail.\n\t\tif r.HTTPResponse == nil {\n\t\t\tr.HTTPResponse = &http.Response{\n\t\t\t\tHeader: http.Header{},\n\t\t\t\tBody:   ioutil.NopCloser(&bytes.Buffer{}),\n\t\t\t}\n\t\t}\n\t\t// Regardless of success or failure of the request trigger the Complete\n\t\t// request handlers.\n\t\tr.Handlers.Complete.Run(r)\n\t}()\n\n\tif err := r.Error; err != nil {\n\t\treturn err\n\t}\n\n\tfor {\n\t\tr.Error = nil\n\t\tr.AttemptTime = time.Now()\n\n\t\tif err := r.Sign(); err != nil {\n\t\t\tdebugLogReqError(r, \"Sign Request\", notRetrying, err)\n\t\t\treturn err\n\t\t}\n\n\t\tif err := r.sendRequest(); err == nil {\n\t\t\treturn nil\n\t\t}\n\t\tr.Handlers.Retry.Run(r)\n\t\tr.Handlers.AfterRetry.Run(r)\n\n\t\tif r.Error != nil || !aws.BoolValue(r.Retryable) {\n\t\t\treturn r.Error\n\t\t}\n\n\t\tif err := r.prepareRetry(); err != nil {\n\t\t\tr.Error = err\n\t\t\treturn err\n\t\t}\n\t}\n}\n\nfunc (r *Request) prepareRetry() error {\n\tif r.Config.LogLevel.Matches(aws.LogDebugWithRequestRetries) {\n\t\tr.Config.Logger.Log(fmt.Sprintf(\"DEBUG: Retrying Request %s/%s, attempt %d\",\n\t\t\tr.ClientInfo.ServiceName, r.Operation.Name, r.RetryCount))\n\t}\n\n\t// The previous http.Request will have a reference to the r.Body\n\t// and the HTTP Client's Transport may still be reading from\n\t// the request's body even though the Client's Do returned.\n\tr.HTTPRequest = copyHTTPRequest(r.HTTPRequest, nil)\n\tr.ResetBody()\n\tif err := r.Error; err != nil {\n\t\treturn awserr.New(ErrCodeSerialization,\n\t\t\t\"failed to prepare body for retry\", err)\n\n\t}\n\n\t// Closing response body to ensure that no response body is leaked\n\t// between retry attempts.\n\tif r.HTTPResponse != nil && r.HTTPResponse.Body != nil {\n\t\tr.HTTPResponse.Body.Close()\n\t}\n\n\treturn nil\n}\n\nfunc (r *Request) sendRequest() (sendErr error) {\n\tdefer r.Handlers.CompleteAttempt.Run(r)\n\n\tr.Retryable = nil\n\tr.Handlers.Send.Run(r)\n\tif r.Error != nil {\n\t\tdebugLogReqError(r, \"Send Request\",\n\t\t\tfmtAttemptCount(r.RetryCount, r.MaxRetries()),\n\t\t\tr.Error)\n\t\treturn r.Error\n\t}\n\n\tr.Handlers.UnmarshalMeta.Run(r)\n\tr.Handlers.ValidateResponse.Run(r)\n\tif r.Error != nil {\n\t\tr.Handlers.UnmarshalError.Run(r)\n\t\tdebugLogReqError(r, \"Validate Response\",\n\t\t\tfmtAttemptCount(r.RetryCount, r.MaxRetries()),\n\t\t\tr.Error)\n\t\treturn r.Error\n\t}\n\n\tr.Handlers.Unmarshal.Run(r)\n\tif r.Error != nil {\n\t\tdebugLogReqError(r, \"Unmarshal Response\",\n\t\t\tfmtAttemptCount(r.RetryCount, r.MaxRetries()),\n\t\t\tr.Error)\n\t\treturn r.Error\n\t}\n\n\treturn nil\n}\n\n// copy will copy a request which will allow for local manipulation of the\n// request.\nfunc (r *Request) copy() *Request {\n\treq := &Request{}\n\t*req = *r\n\treq.Handlers = r.Handlers.Copy()\n\top := *r.Operation\n\treq.Operation = &op\n\treturn req\n}\n\n// AddToUserAgent adds the string to the end of the request's current user agent.\nfunc AddToUserAgent(r *Request, s string) {\n\tcurUA := r.HTTPRequest.Header.Get(\"User-Agent\")\n\tif len(curUA) > 0 {\n\t\ts = curUA + \" \" + s\n\t}\n\tr.HTTPRequest.Header.Set(\"User-Agent\", s)\n}\n\n// SanitizeHostForHeader removes default port from host and updates request.Host\nfunc SanitizeHostForHeader(r *http.Request) {\n\thost := getHost(r)\n\tport := portOnly(host)\n\tif port != \"\" && isDefaultPort(r.URL.Scheme, port) {\n\t\tr.Host = stripPort(host)\n\t}\n}\n\n// Returns host from request\nfunc getHost(r *http.Request) string {\n\tif r.Host != \"\" {\n\t\treturn r.Host\n\t}\n\n\tif r.URL == nil {\n\t\treturn \"\"\n\t}\n\n\treturn r.URL.Host\n}\n\n// Hostname returns u.Host, without any port number.\n//\n// If Host is an IPv6 literal with a port number, Hostname returns the\n// IPv6 literal without the square brackets. IPv6 literals may include\n// a zone identifier.\n//\n// Copied from the Go 1.8 standard library (net/url)\nfunc stripPort(hostport string) string {\n\tcolon := strings.IndexByte(hostport, ':')\n\tif colon == -1 {\n\t\treturn hostport\n\t}\n\tif i := strings.IndexByte(hostport, ']'); i != -1 {\n\t\treturn strings.TrimPrefix(hostport[:i], \"[\")\n\t}\n\treturn hostport[:colon]\n}\n\n// Port returns the port part of u.Host, without the leading colon.\n// If u.Host doesn't contain a port, Port returns an empty string.\n//\n// Copied from the Go 1.8 standard library (net/url)\nfunc portOnly(hostport string) string {\n\tcolon := strings.IndexByte(hostport, ':')\n\tif colon == -1 {\n\t\treturn \"\"\n\t}\n\tif i := strings.Index(hostport, \"]:\"); i != -1 {\n\t\treturn hostport[i+len(\"]:\"):]\n\t}\n\tif strings.Contains(hostport, \"]\") {\n\t\treturn \"\"\n\t}\n\treturn hostport[colon+len(\":\"):]\n}\n\n// Returns true if the specified URI is using the standard port\n// (i.e. port 80 for HTTP URIs or 443 for HTTPS URIs)\nfunc isDefaultPort(scheme, port string) bool {\n\tif port == \"\" {\n\t\treturn true\n\t}\n\n\tlowerCaseScheme := strings.ToLower(scheme)\n\tif (lowerCaseScheme == \"http\" && port == \"80\") || (lowerCaseScheme == \"https\" && port == \"443\") {\n\t\treturn true\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/request_1_7.go",
    "content": "//go:build !go1.8\n// +build !go1.8\n\npackage request\n\nimport \"io\"\n\n// NoBody is an io.ReadCloser with no bytes. Read always returns EOF\n// and Close always returns nil. It can be used in an outgoing client\n// request to explicitly signal that a request has zero bytes.\n// An alternative, however, is to simply set Request.Body to nil.\n//\n// Copy of Go 1.8 NoBody type from net/http/http.go\ntype noBody struct{}\n\nfunc (noBody) Read([]byte) (int, error)         { return 0, io.EOF }\nfunc (noBody) Close() error                     { return nil }\nfunc (noBody) WriteTo(io.Writer) (int64, error) { return 0, nil }\n\n// NoBody is an empty reader that will trigger the Go HTTP client to not include\n// and body in the HTTP request.\nvar NoBody = noBody{}\n\n// ResetBody rewinds the request body back to its starting position, and\n// sets the HTTP Request body reference. When the body is read prior\n// to being sent in the HTTP request it will need to be rewound.\n//\n// ResetBody will automatically be called by the SDK's build handler, but if\n// the request is being used directly ResetBody must be called before the request\n// is Sent.  SetStringBody, SetBufferBody, and SetReaderBody will automatically\n// call ResetBody.\nfunc (r *Request) ResetBody() {\n\tbody, err := r.getNextRequestBody()\n\tif err != nil {\n\t\tr.Error = err\n\t\treturn\n\t}\n\n\tr.HTTPRequest.Body = body\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/request_1_8.go",
    "content": "//go:build go1.8\n// +build go1.8\n\npackage request\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\n// NoBody is a http.NoBody reader instructing Go HTTP client to not include\n// and body in the HTTP request.\nvar NoBody = http.NoBody\n\n// ResetBody rewinds the request body back to its starting position, and\n// sets the HTTP Request body reference. When the body is read prior\n// to being sent in the HTTP request it will need to be rewound.\n//\n// ResetBody will automatically be called by the SDK's build handler, but if\n// the request is being used directly ResetBody must be called before the request\n// is Sent.  SetStringBody, SetBufferBody, and SetReaderBody will automatically\n// call ResetBody.\n//\n// Will also set the Go 1.8's http.Request.GetBody member to allow retrying\n// PUT/POST redirects.\nfunc (r *Request) ResetBody() {\n\tbody, err := r.getNextRequestBody()\n\tif err != nil {\n\t\tr.Error = awserr.New(ErrCodeSerialization,\n\t\t\t\"failed to reset request body\", err)\n\t\treturn\n\t}\n\n\tr.HTTPRequest.Body = body\n\tr.HTTPRequest.GetBody = r.getNextRequestBody\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/request_context.go",
    "content": "//go:build go1.7\n// +build go1.7\n\npackage request\n\nimport \"github.com/aws/aws-sdk-go/aws\"\n\n// setContext updates the Request to use the passed in context for cancellation.\n// Context will also be used for request retry delay.\n//\n// Creates shallow copy of the http.Request with the WithContext method.\nfunc setRequestContext(r *Request, ctx aws.Context) {\n\tr.context = ctx\n\tr.HTTPRequest = r.HTTPRequest.WithContext(ctx)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/request_context_1_6.go",
    "content": "//go:build !go1.7\n// +build !go1.7\n\npackage request\n\nimport \"github.com/aws/aws-sdk-go/aws\"\n\n// setContext updates the Request to use the passed in context for cancellation.\n// Context will also be used for request retry delay.\n//\n// Creates shallow copy of the http.Request with the WithContext method.\nfunc setRequestContext(r *Request, ctx aws.Context) {\n\tr.context = ctx\n\tr.HTTPRequest.Cancel = ctx.Done()\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go",
    "content": "package request\n\nimport (\n\t\"reflect\"\n\t\"sync/atomic\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awsutil\"\n)\n\n// A Pagination provides paginating of SDK API operations which are paginatable.\n// Generally you should not use this type directly, but use the \"Pages\" API\n// operations method to automatically perform pagination for you. Such as,\n// \"S3.ListObjectsPages\", and \"S3.ListObjectsPagesWithContext\" methods.\n//\n// Pagination differs from a Paginator type in that pagination is the type that\n// does the pagination between API operations, and Paginator defines the\n// configuration that will be used per page request.\n//\n//     for p.Next() {\n//         data := p.Page().(*s3.ListObjectsOutput)\n//         // process the page's data\n//         // ...\n//         // break out of loop to stop fetching additional pages\n//     }\n//\n//     return p.Err()\n//\n// See service client API operation Pages methods for examples how the SDK will\n// use the Pagination type.\ntype Pagination struct {\n\t// Function to return a Request value for each pagination request.\n\t// Any configuration or handlers that need to be applied to the request\n\t// prior to getting the next page should be done here before the request\n\t// returned.\n\t//\n\t// NewRequest should always be built from the same API operations. It is\n\t// undefined if different API operations are returned on subsequent calls.\n\tNewRequest func() (*Request, error)\n\t// EndPageOnSameToken, when enabled, will allow the paginator to stop on\n\t// token that are the same as its previous tokens.\n\tEndPageOnSameToken bool\n\n\tstarted    bool\n\tprevTokens []interface{}\n\tnextTokens []interface{}\n\n\terr     error\n\tcurPage interface{}\n}\n\n// HasNextPage will return true if Pagination is able to determine that the API\n// operation has additional pages. False will be returned if there are no more\n// pages remaining.\n//\n// Will always return true if Next has not been called yet.\nfunc (p *Pagination) HasNextPage() bool {\n\tif !p.started {\n\t\treturn true\n\t}\n\n\thasNextPage := len(p.nextTokens) != 0\n\tif p.EndPageOnSameToken {\n\t\treturn hasNextPage && !awsutil.DeepEqual(p.nextTokens, p.prevTokens)\n\t}\n\treturn hasNextPage\n}\n\n// Err returns the error Pagination encountered when retrieving the next page.\nfunc (p *Pagination) Err() error {\n\treturn p.err\n}\n\n// Page returns the current page. Page should only be called after a successful\n// call to Next. It is undefined what Page will return if Page is called after\n// Next returns false.\nfunc (p *Pagination) Page() interface{} {\n\treturn p.curPage\n}\n\n// Next will attempt to retrieve the next page for the API operation. When a page\n// is retrieved true will be returned. If the page cannot be retrieved, or there\n// are no more pages false will be returned.\n//\n// Use the Page method to retrieve the current page data. The data will need\n// to be cast to the API operation's output type.\n//\n// Use the Err method to determine if an error occurred if Page returns false.\nfunc (p *Pagination) Next() bool {\n\tif !p.HasNextPage() {\n\t\treturn false\n\t}\n\n\treq, err := p.NewRequest()\n\tif err != nil {\n\t\tp.err = err\n\t\treturn false\n\t}\n\n\tif p.started {\n\t\tfor i, intok := range req.Operation.InputTokens {\n\t\t\tawsutil.SetValueAtPath(req.Params, intok, p.nextTokens[i])\n\t\t}\n\t}\n\tp.started = true\n\n\terr = req.Send()\n\tif err != nil {\n\t\tp.err = err\n\t\treturn false\n\t}\n\n\tp.prevTokens = p.nextTokens\n\tp.nextTokens = req.nextPageTokens()\n\tp.curPage = req.Data\n\n\treturn true\n}\n\n// A Paginator is the configuration data that defines how an API operation\n// should be paginated. This type is used by the API service models to define\n// the generated pagination config for service APIs.\n//\n// The Pagination type is what provides iterating between pages of an API. It\n// is only used to store the token metadata the SDK should use for performing\n// pagination.\ntype Paginator struct {\n\tInputTokens     []string\n\tOutputTokens    []string\n\tLimitToken      string\n\tTruncationToken string\n}\n\n// nextPageTokens returns the tokens to use when asking for the next page of data.\nfunc (r *Request) nextPageTokens() []interface{} {\n\tif r.Operation.Paginator == nil {\n\t\treturn nil\n\t}\n\tif r.Operation.TruncationToken != \"\" {\n\t\ttr, _ := awsutil.ValuesAtPath(r.Data, r.Operation.TruncationToken)\n\t\tif len(tr) == 0 {\n\t\t\treturn nil\n\t\t}\n\n\t\tswitch v := tr[0].(type) {\n\t\tcase *bool:\n\t\t\tif !aws.BoolValue(v) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\tcase bool:\n\t\t\tif !v {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\n\ttokens := []interface{}{}\n\ttokenAdded := false\n\tfor _, outToken := range r.Operation.OutputTokens {\n\t\tvs, _ := awsutil.ValuesAtPath(r.Data, outToken)\n\t\tif len(vs) == 0 {\n\t\t\ttokens = append(tokens, nil)\n\t\t\tcontinue\n\t\t}\n\t\tv := vs[0]\n\n\t\tswitch tv := v.(type) {\n\t\tcase *string:\n\t\t\tif len(aws.StringValue(tv)) == 0 {\n\t\t\t\ttokens = append(tokens, nil)\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase string:\n\t\t\tif len(tv) == 0 {\n\t\t\t\ttokens = append(tokens, nil)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\ttokenAdded = true\n\t\ttokens = append(tokens, v)\n\t}\n\tif !tokenAdded {\n\t\treturn nil\n\t}\n\n\treturn tokens\n}\n\n// Ensure a deprecated item is only logged once instead of each time its used.\nfunc logDeprecatedf(logger aws.Logger, flag *int32, msg string) {\n\tif logger == nil {\n\t\treturn\n\t}\n\tif atomic.CompareAndSwapInt32(flag, 0, 1) {\n\t\tlogger.Log(msg)\n\t}\n}\n\nvar (\n\tlogDeprecatedHasNextPage int32\n\tlogDeprecatedNextPage    int32\n\tlogDeprecatedEachPage    int32\n)\n\n// HasNextPage returns true if this request has more pages of data available.\n//\n// Deprecated Use Pagination type for configurable pagination of API operations\nfunc (r *Request) HasNextPage() bool {\n\tlogDeprecatedf(r.Config.Logger, &logDeprecatedHasNextPage,\n\t\t\"Request.HasNextPage deprecated. Use Pagination type for configurable pagination of API operations\")\n\n\treturn len(r.nextPageTokens()) > 0\n}\n\n// NextPage returns a new Request that can be executed to return the next\n// page of result data. Call .Send() on this request to execute it.\n//\n// Deprecated Use Pagination type for configurable pagination of API operations\nfunc (r *Request) NextPage() *Request {\n\tlogDeprecatedf(r.Config.Logger, &logDeprecatedNextPage,\n\t\t\"Request.NextPage deprecated. Use Pagination type for configurable pagination of API operations\")\n\n\ttokens := r.nextPageTokens()\n\tif len(tokens) == 0 {\n\t\treturn nil\n\t}\n\n\tdata := reflect.New(reflect.TypeOf(r.Data).Elem()).Interface()\n\tnr := New(r.Config, r.ClientInfo, r.Handlers, r.Retryer, r.Operation, awsutil.CopyOf(r.Params), data)\n\tfor i, intok := range nr.Operation.InputTokens {\n\t\tawsutil.SetValueAtPath(nr.Params, intok, tokens[i])\n\t}\n\treturn nr\n}\n\n// EachPage iterates over each page of a paginated request object. The fn\n// parameter should be a function with the following sample signature:\n//\n//   func(page *T, lastPage bool) bool {\n//       return true // return false to stop iterating\n//   }\n//\n// Where \"T\" is the structure type matching the output structure of the given\n// operation. For example, a request object generated by\n// DynamoDB.ListTablesRequest() would expect to see dynamodb.ListTablesOutput\n// as the structure \"T\". The lastPage value represents whether the page is\n// the last page of data or not. The return value of this function should\n// return true to keep iterating or false to stop.\n//\n// Deprecated Use Pagination type for configurable pagination of API operations\nfunc (r *Request) EachPage(fn func(data interface{}, isLastPage bool) (shouldContinue bool)) error {\n\tlogDeprecatedf(r.Config.Logger, &logDeprecatedEachPage,\n\t\t\"Request.EachPage deprecated. Use Pagination type for configurable pagination of API operations\")\n\n\tfor page := r; page != nil; page = page.NextPage() {\n\t\tif err := page.Send(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif getNextPage := fn(page.Data, !page.HasNextPage()); !getNextPage {\n\t\t\treturn page.Error\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go",
    "content": "package request\n\nimport (\n\t\"net\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\n// Retryer provides the interface drive the SDK's request retry behavior. The\n// Retryer implementation is responsible for implementing exponential backoff,\n// and determine if a request API error should be retried.\n//\n// client.DefaultRetryer is the SDK's default implementation of the Retryer. It\n// uses the Request.IsErrorRetryable and Request.IsErrorThrottle methods to\n// determine if the request is retried.\ntype Retryer interface {\n\t// RetryRules return the retry delay that should be used by the SDK before\n\t// making another request attempt for the failed request.\n\tRetryRules(*Request) time.Duration\n\n\t// ShouldRetry returns if the failed request is retryable.\n\t//\n\t// Implementations may consider request attempt count when determining if a\n\t// request is retryable, but the SDK will use MaxRetries to limit the\n\t// number of attempts a request are made.\n\tShouldRetry(*Request) bool\n\n\t// MaxRetries is the number of times a request may be retried before\n\t// failing.\n\tMaxRetries() int\n}\n\n// WithRetryer sets a Retryer value to the given Config returning the Config\n// value for chaining. The value must not be nil.\nfunc WithRetryer(cfg *aws.Config, retryer Retryer) *aws.Config {\n\tif retryer == nil {\n\t\tif cfg.Logger != nil {\n\t\t\tcfg.Logger.Log(\"ERROR: Request.WithRetryer called with nil retryer. Replacing with retry disabled Retryer.\")\n\t\t}\n\t\tretryer = noOpRetryer{}\n\t}\n\tcfg.Retryer = retryer\n\treturn cfg\n\n}\n\n// noOpRetryer is a internal no op retryer used when a request is created\n// without a retryer.\n//\n// Provides a retryer that performs no retries.\n// It should be used when we do not want retries to be performed.\ntype noOpRetryer struct{}\n\n// MaxRetries returns the number of maximum returns the service will use to make\n// an individual API; For NoOpRetryer the MaxRetries will always be zero.\nfunc (d noOpRetryer) MaxRetries() int {\n\treturn 0\n}\n\n// ShouldRetry will always return false for NoOpRetryer, as it should never retry.\nfunc (d noOpRetryer) ShouldRetry(_ *Request) bool {\n\treturn false\n}\n\n// RetryRules returns the delay duration before retrying this request again;\n// since NoOpRetryer does not retry, RetryRules always returns 0.\nfunc (d noOpRetryer) RetryRules(_ *Request) time.Duration {\n\treturn 0\n}\n\n// retryableCodes is a collection of service response codes which are retry-able\n// without any further action.\nvar retryableCodes = map[string]struct{}{\n\tErrCodeRequestError:       {},\n\t\"RequestTimeout\":          {},\n\tErrCodeResponseTimeout:    {},\n\t\"RequestTimeoutException\": {}, // Glacier's flavor of RequestTimeout\n}\n\nvar throttleCodes = map[string]struct{}{\n\t\"ProvisionedThroughputExceededException\": {},\n\t\"ThrottledException\":                     {}, // SNS, XRay, ResourceGroupsTagging API\n\t\"Throttling\":                             {},\n\t\"ThrottlingException\":                    {},\n\t\"RequestLimitExceeded\":                   {},\n\t\"RequestThrottled\":                       {},\n\t\"RequestThrottledException\":              {},\n\t\"TooManyRequestsException\":               {}, // Lambda functions\n\t\"PriorRequestNotComplete\":                {}, // Route53\n\t\"TransactionInProgressException\":         {},\n\t\"EC2ThrottledException\":                  {}, // EC2\n}\n\n// credsExpiredCodes is a collection of error codes which signify the credentials\n// need to be refreshed. Expired tokens require refreshing of credentials, and\n// resigning before the request can be retried.\nvar credsExpiredCodes = map[string]struct{}{\n\t\"ExpiredToken\":          {},\n\t\"ExpiredTokenException\": {},\n\t\"RequestExpired\":        {}, // EC2 Only\n}\n\nfunc isCodeThrottle(code string) bool {\n\t_, ok := throttleCodes[code]\n\treturn ok\n}\n\nfunc isCodeRetryable(code string) bool {\n\tif _, ok := retryableCodes[code]; ok {\n\t\treturn true\n\t}\n\n\treturn isCodeExpiredCreds(code)\n}\n\nfunc isCodeExpiredCreds(code string) bool {\n\t_, ok := credsExpiredCodes[code]\n\treturn ok\n}\n\nvar validParentCodes = map[string]struct{}{\n\tErrCodeSerialization: {},\n\tErrCodeRead:          {},\n}\n\nfunc isNestedErrorRetryable(parentErr awserr.Error) bool {\n\tif parentErr == nil {\n\t\treturn false\n\t}\n\n\tif _, ok := validParentCodes[parentErr.Code()]; !ok {\n\t\treturn false\n\t}\n\n\terr := parentErr.OrigErr()\n\tif err == nil {\n\t\treturn false\n\t}\n\n\tif aerr, ok := err.(awserr.Error); ok {\n\t\treturn isCodeRetryable(aerr.Code())\n\t}\n\n\tif t, ok := err.(temporary); ok {\n\t\treturn t.Temporary() || isErrConnectionReset(err)\n\t}\n\n\treturn isErrConnectionReset(err)\n}\n\n// IsErrorRetryable returns whether the error is retryable, based on its Code.\n// Returns false if error is nil.\nfunc IsErrorRetryable(err error) bool {\n\tif err == nil {\n\t\treturn false\n\t}\n\treturn shouldRetryError(err)\n}\n\ntype temporary interface {\n\tTemporary() bool\n}\n\nfunc shouldRetryError(origErr error) bool {\n\tswitch err := origErr.(type) {\n\tcase awserr.Error:\n\t\tif err.Code() == CanceledErrorCode {\n\t\t\treturn false\n\t\t}\n\t\tif isNestedErrorRetryable(err) {\n\t\t\treturn true\n\t\t}\n\n\t\torigErr := err.OrigErr()\n\t\tvar shouldRetry bool\n\t\tif origErr != nil {\n\t\t\tshouldRetry = shouldRetryError(origErr)\n\t\t\tif err.Code() == ErrCodeRequestError && !shouldRetry {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif isCodeRetryable(err.Code()) {\n\t\t\treturn true\n\t\t}\n\t\treturn shouldRetry\n\n\tcase *url.Error:\n\t\tif strings.Contains(err.Error(), \"connection refused\") {\n\t\t\t// Refused connections should be retried as the service may not yet\n\t\t\t// be running on the port. Go TCP dial considers refused\n\t\t\t// connections as not temporary.\n\t\t\treturn true\n\t\t}\n\t\t// *url.Error only implements Temporary after golang 1.6 but since\n\t\t// url.Error only wraps the error:\n\t\treturn shouldRetryError(err.Err)\n\n\tcase temporary:\n\t\tif netErr, ok := err.(*net.OpError); ok && netErr.Op == \"dial\" {\n\t\t\treturn true\n\t\t}\n\t\t// If the error is temporary, we want to allow continuation of the\n\t\t// retry process\n\t\treturn err.Temporary() || isErrConnectionReset(origErr)\n\n\tcase nil:\n\t\t// `awserr.Error.OrigErr()` can be nil, meaning there was an error but\n\t\t// because we don't know the cause, it is marked as retryable. See\n\t\t// TestRequest4xxUnretryable for an example.\n\t\treturn true\n\n\tdefault:\n\t\tswitch err.Error() {\n\t\tcase \"net/http: request canceled\",\n\t\t\t\"net/http: request canceled while waiting for connection\":\n\t\t\t// known 1.5 error case when an http request is cancelled\n\t\t\treturn false\n\t\t}\n\t\t// here we don't know the error; so we allow a retry.\n\t\treturn true\n\t}\n}\n\n// IsErrorThrottle returns whether the error is to be throttled based on its code.\n// Returns false if error is nil.\nfunc IsErrorThrottle(err error) bool {\n\tif aerr, ok := err.(awserr.Error); ok && aerr != nil {\n\t\treturn isCodeThrottle(aerr.Code())\n\t}\n\treturn false\n}\n\n// IsErrorExpiredCreds returns whether the error code is a credential expiry\n// error. Returns false if error is nil.\nfunc IsErrorExpiredCreds(err error) bool {\n\tif aerr, ok := err.(awserr.Error); ok && aerr != nil {\n\t\treturn isCodeExpiredCreds(aerr.Code())\n\t}\n\treturn false\n}\n\n// IsErrorRetryable returns whether the error is retryable, based on its Code.\n// Returns false if the request has no Error set.\n//\n// Alias for the utility function IsErrorRetryable\nfunc (r *Request) IsErrorRetryable() bool {\n\tif isErrCode(r.Error, r.RetryErrorCodes) {\n\t\treturn true\n\t}\n\n\t// HTTP response status code 501 should not be retried.\n\t// 501 represents Not Implemented which means the request method is not\n\t// supported by the server and cannot be handled.\n\tif r.HTTPResponse != nil {\n\t\t// HTTP response status code 500 represents internal server error and\n\t\t// should be retried without any throttle.\n\t\tif r.HTTPResponse.StatusCode == 500 {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn IsErrorRetryable(r.Error)\n}\n\n// IsErrorThrottle returns whether the error is to be throttled based on its\n// code. Returns false if the request has no Error set.\n//\n// Alias for the utility function IsErrorThrottle\nfunc (r *Request) IsErrorThrottle() bool {\n\tif isErrCode(r.Error, r.ThrottleErrorCodes) {\n\t\treturn true\n\t}\n\n\tif r.HTTPResponse != nil {\n\t\tswitch r.HTTPResponse.StatusCode {\n\t\tcase\n\t\t\t429, // error caused due to too many requests\n\t\t\t502, // Bad Gateway error should be throttled\n\t\t\t503, // caused when service is unavailable\n\t\t\t504: // error occurred due to gateway timeout\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn IsErrorThrottle(r.Error)\n}\n\nfunc isErrCode(err error, codes []string) bool {\n\tif aerr, ok := err.(awserr.Error); ok && aerr != nil {\n\t\tfor _, code := range codes {\n\t\t\tif code == aerr.Code() {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false\n}\n\n// IsErrorExpired returns whether the error code is a credential expiry error.\n// Returns false if the request has no Error set.\n//\n// Alias for the utility function IsErrorExpiredCreds\nfunc (r *Request) IsErrorExpired() bool {\n\treturn IsErrorExpiredCreds(r.Error)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/timeout_read_closer.go",
    "content": "package request\n\nimport (\n\t\"io\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\nvar timeoutErr = awserr.New(\n\tErrCodeResponseTimeout,\n\t\"read on body has reached the timeout limit\",\n\tnil,\n)\n\ntype readResult struct {\n\tn   int\n\terr error\n}\n\n// timeoutReadCloser will handle body reads that take too long.\n// We will return a ErrReadTimeout error if a timeout occurs.\ntype timeoutReadCloser struct {\n\treader   io.ReadCloser\n\tduration time.Duration\n}\n\n// Read will spin off a goroutine to call the reader's Read method. We will\n// select on the timer's channel or the read's channel. Whoever completes first\n// will be returned.\nfunc (r *timeoutReadCloser) Read(b []byte) (int, error) {\n\ttimer := time.NewTimer(r.duration)\n\tc := make(chan readResult, 1)\n\n\tgo func() {\n\t\tn, err := r.reader.Read(b)\n\t\ttimer.Stop()\n\t\tc <- readResult{n: n, err: err}\n\t}()\n\n\tselect {\n\tcase data := <-c:\n\t\treturn data.n, data.err\n\tcase <-timer.C:\n\t\treturn 0, timeoutErr\n\t}\n}\n\nfunc (r *timeoutReadCloser) Close() error {\n\treturn r.reader.Close()\n}\n\nconst (\n\t// HandlerResponseTimeout is what we use to signify the name of the\n\t// response timeout handler.\n\tHandlerResponseTimeout = \"ResponseTimeoutHandler\"\n)\n\n// adaptToResponseTimeoutError is a handler that will replace any top level error\n// to a ErrCodeResponseTimeout, if its child is that.\nfunc adaptToResponseTimeoutError(req *Request) {\n\tif err, ok := req.Error.(awserr.Error); ok {\n\t\taerr, ok := err.OrigErr().(awserr.Error)\n\t\tif ok && aerr.Code() == ErrCodeResponseTimeout {\n\t\t\treq.Error = aerr\n\t\t}\n\t}\n}\n\n// WithResponseReadTimeout is a request option that will wrap the body in a timeout read closer.\n// This will allow for per read timeouts. If a timeout occurred, we will return the\n// ErrCodeResponseTimeout.\n//\n//     svc.PutObjectWithContext(ctx, params, request.WithTimeoutReadCloser(30 * time.Second)\nfunc WithResponseReadTimeout(duration time.Duration) Option {\n\treturn func(r *Request) {\n\n\t\tvar timeoutHandler = NamedHandler{\n\t\t\tHandlerResponseTimeout,\n\t\t\tfunc(req *Request) {\n\t\t\t\treq.HTTPResponse.Body = &timeoutReadCloser{\n\t\t\t\t\treader:   req.HTTPResponse.Body,\n\t\t\t\t\tduration: duration,\n\t\t\t\t}\n\t\t\t}}\n\n\t\t// remove the handler so we are not stomping over any new durations.\n\t\tr.Handlers.Send.RemoveByName(HandlerResponseTimeout)\n\t\tr.Handlers.Send.PushBackNamed(timeoutHandler)\n\n\t\tr.Handlers.Unmarshal.PushBack(adaptToResponseTimeoutError)\n\t\tr.Handlers.UnmarshalError.PushBack(adaptToResponseTimeoutError)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/validation.go",
    "content": "package request\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\nconst (\n\t// InvalidParameterErrCode is the error code for invalid parameters errors\n\tInvalidParameterErrCode = \"InvalidParameter\"\n\t// ParamRequiredErrCode is the error code for required parameter errors\n\tParamRequiredErrCode = \"ParamRequiredError\"\n\t// ParamMinValueErrCode is the error code for fields with too low of a\n\t// number value.\n\tParamMinValueErrCode = \"ParamMinValueError\"\n\t// ParamMinLenErrCode is the error code for fields without enough elements.\n\tParamMinLenErrCode = \"ParamMinLenError\"\n\t// ParamMaxLenErrCode is the error code for value being too long.\n\tParamMaxLenErrCode = \"ParamMaxLenError\"\n\n\t// ParamFormatErrCode is the error code for a field with invalid\n\t// format or characters.\n\tParamFormatErrCode = \"ParamFormatInvalidError\"\n)\n\n// Validator provides a way for types to perform validation logic on their\n// input values that external code can use to determine if a type's values\n// are valid.\ntype Validator interface {\n\tValidate() error\n}\n\n// An ErrInvalidParams provides wrapping of invalid parameter errors found when\n// validating API operation input parameters.\ntype ErrInvalidParams struct {\n\t// Context is the base context of the invalid parameter group.\n\tContext string\n\terrs    []ErrInvalidParam\n}\n\n// Add adds a new invalid parameter error to the collection of invalid\n// parameters. The context of the invalid parameter will be updated to reflect\n// this collection.\nfunc (e *ErrInvalidParams) Add(err ErrInvalidParam) {\n\terr.SetContext(e.Context)\n\te.errs = append(e.errs, err)\n}\n\n// AddNested adds the invalid parameter errors from another ErrInvalidParams\n// value into this collection. The nested errors will have their nested context\n// updated and base context to reflect the merging.\n//\n// Use for nested validations errors.\nfunc (e *ErrInvalidParams) AddNested(nestedCtx string, nested ErrInvalidParams) {\n\tfor _, err := range nested.errs {\n\t\terr.SetContext(e.Context)\n\t\terr.AddNestedContext(nestedCtx)\n\t\te.errs = append(e.errs, err)\n\t}\n}\n\n// Len returns the number of invalid parameter errors\nfunc (e ErrInvalidParams) Len() int {\n\treturn len(e.errs)\n}\n\n// Code returns the code of the error\nfunc (e ErrInvalidParams) Code() string {\n\treturn InvalidParameterErrCode\n}\n\n// Message returns the message of the error\nfunc (e ErrInvalidParams) Message() string {\n\treturn fmt.Sprintf(\"%d validation error(s) found.\", len(e.errs))\n}\n\n// Error returns the string formatted form of the invalid parameters.\nfunc (e ErrInvalidParams) Error() string {\n\tw := &bytes.Buffer{}\n\tfmt.Fprintf(w, \"%s: %s\\n\", e.Code(), e.Message())\n\n\tfor _, err := range e.errs {\n\t\tfmt.Fprintf(w, \"- %s\\n\", err.Message())\n\t}\n\n\treturn w.String()\n}\n\n// OrigErr returns the invalid parameters as a awserr.BatchedErrors value\nfunc (e ErrInvalidParams) OrigErr() error {\n\treturn awserr.NewBatchError(\n\t\tInvalidParameterErrCode, e.Message(), e.OrigErrs())\n}\n\n// OrigErrs returns a slice of the invalid parameters\nfunc (e ErrInvalidParams) OrigErrs() []error {\n\terrs := make([]error, len(e.errs))\n\tfor i := 0; i < len(errs); i++ {\n\t\terrs[i] = e.errs[i]\n\t}\n\n\treturn errs\n}\n\n// An ErrInvalidParam represents an invalid parameter error type.\ntype ErrInvalidParam interface {\n\tawserr.Error\n\n\t// Field name the error occurred on.\n\tField() string\n\n\t// SetContext updates the context of the error.\n\tSetContext(string)\n\n\t// AddNestedContext updates the error's context to include a nested level.\n\tAddNestedContext(string)\n}\n\ntype errInvalidParam struct {\n\tcontext       string\n\tnestedContext string\n\tfield         string\n\tcode          string\n\tmsg           string\n}\n\n// Code returns the error code for the type of invalid parameter.\nfunc (e *errInvalidParam) Code() string {\n\treturn e.code\n}\n\n// Message returns the reason the parameter was invalid, and its context.\nfunc (e *errInvalidParam) Message() string {\n\treturn fmt.Sprintf(\"%s, %s.\", e.msg, e.Field())\n}\n\n// Error returns the string version of the invalid parameter error.\nfunc (e *errInvalidParam) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", e.code, e.Message())\n}\n\n// OrigErr returns nil, Implemented for awserr.Error interface.\nfunc (e *errInvalidParam) OrigErr() error {\n\treturn nil\n}\n\n// Field Returns the field and context the error occurred.\nfunc (e *errInvalidParam) Field() string {\n\tfield := e.context\n\tif len(field) > 0 {\n\t\tfield += \".\"\n\t}\n\tif len(e.nestedContext) > 0 {\n\t\tfield += fmt.Sprintf(\"%s.\", e.nestedContext)\n\t}\n\tfield += e.field\n\n\treturn field\n}\n\n// SetContext updates the base context of the error.\nfunc (e *errInvalidParam) SetContext(ctx string) {\n\te.context = ctx\n}\n\n// AddNestedContext prepends a context to the field's path.\nfunc (e *errInvalidParam) AddNestedContext(ctx string) {\n\tif len(e.nestedContext) == 0 {\n\t\te.nestedContext = ctx\n\t} else {\n\t\te.nestedContext = fmt.Sprintf(\"%s.%s\", ctx, e.nestedContext)\n\t}\n\n}\n\n// An ErrParamRequired represents an required parameter error.\ntype ErrParamRequired struct {\n\terrInvalidParam\n}\n\n// NewErrParamRequired creates a new required parameter error.\nfunc NewErrParamRequired(field string) *ErrParamRequired {\n\treturn &ErrParamRequired{\n\t\terrInvalidParam{\n\t\t\tcode:  ParamRequiredErrCode,\n\t\t\tfield: field,\n\t\t\tmsg:   fmt.Sprintf(\"missing required field\"),\n\t\t},\n\t}\n}\n\n// An ErrParamMinValue represents a minimum value parameter error.\ntype ErrParamMinValue struct {\n\terrInvalidParam\n\tmin float64\n}\n\n// NewErrParamMinValue creates a new minimum value parameter error.\nfunc NewErrParamMinValue(field string, min float64) *ErrParamMinValue {\n\treturn &ErrParamMinValue{\n\t\terrInvalidParam: errInvalidParam{\n\t\t\tcode:  ParamMinValueErrCode,\n\t\t\tfield: field,\n\t\t\tmsg:   fmt.Sprintf(\"minimum field value of %v\", min),\n\t\t},\n\t\tmin: min,\n\t}\n}\n\n// MinValue returns the field's require minimum value.\n//\n// float64 is returned for both int and float min values.\nfunc (e *ErrParamMinValue) MinValue() float64 {\n\treturn e.min\n}\n\n// An ErrParamMinLen represents a minimum length parameter error.\ntype ErrParamMinLen struct {\n\terrInvalidParam\n\tmin int\n}\n\n// NewErrParamMinLen creates a new minimum length parameter error.\nfunc NewErrParamMinLen(field string, min int) *ErrParamMinLen {\n\treturn &ErrParamMinLen{\n\t\terrInvalidParam: errInvalidParam{\n\t\t\tcode:  ParamMinLenErrCode,\n\t\t\tfield: field,\n\t\t\tmsg:   fmt.Sprintf(\"minimum field size of %v\", min),\n\t\t},\n\t\tmin: min,\n\t}\n}\n\n// MinLen returns the field's required minimum length.\nfunc (e *ErrParamMinLen) MinLen() int {\n\treturn e.min\n}\n\n// An ErrParamMaxLen represents a maximum length parameter error.\ntype ErrParamMaxLen struct {\n\terrInvalidParam\n\tmax int\n}\n\n// NewErrParamMaxLen creates a new maximum length parameter error.\nfunc NewErrParamMaxLen(field string, max int, value string) *ErrParamMaxLen {\n\treturn &ErrParamMaxLen{\n\t\terrInvalidParam: errInvalidParam{\n\t\t\tcode:  ParamMaxLenErrCode,\n\t\t\tfield: field,\n\t\t\tmsg:   fmt.Sprintf(\"maximum size of %v, %v\", max, value),\n\t\t},\n\t\tmax: max,\n\t}\n}\n\n// MaxLen returns the field's required minimum length.\nfunc (e *ErrParamMaxLen) MaxLen() int {\n\treturn e.max\n}\n\n// An ErrParamFormat represents a invalid format parameter error.\ntype ErrParamFormat struct {\n\terrInvalidParam\n\tformat string\n}\n\n// NewErrParamFormat creates a new invalid format parameter error.\nfunc NewErrParamFormat(field string, format, value string) *ErrParamFormat {\n\treturn &ErrParamFormat{\n\t\terrInvalidParam: errInvalidParam{\n\t\t\tcode:  ParamFormatErrCode,\n\t\t\tfield: field,\n\t\t\tmsg:   fmt.Sprintf(\"format %v, %v\", format, value),\n\t\t},\n\t\tformat: format,\n\t}\n}\n\n// Format returns the field's required format.\nfunc (e *ErrParamFormat) Format() string {\n\treturn e.format\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/request/waiter.go",
    "content": "package request\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/awsutil\"\n)\n\n// WaiterResourceNotReadyErrorCode is the error code returned by a waiter when\n// the waiter's max attempts have been exhausted.\nconst WaiterResourceNotReadyErrorCode = \"ResourceNotReady\"\n\n// A WaiterOption is a function that will update the Waiter value's fields to\n// configure the waiter.\ntype WaiterOption func(*Waiter)\n\n// WithWaiterMaxAttempts returns the maximum number of times the waiter should\n// attempt to check the resource for the target state.\nfunc WithWaiterMaxAttempts(max int) WaiterOption {\n\treturn func(w *Waiter) {\n\t\tw.MaxAttempts = max\n\t}\n}\n\n// WaiterDelay will return a delay the waiter should pause between attempts to\n// check the resource state. The passed in attempt is the number of times the\n// Waiter has checked the resource state.\n//\n// Attempt is the number of attempts the Waiter has made checking the resource\n// state.\ntype WaiterDelay func(attempt int) time.Duration\n\n// ConstantWaiterDelay returns a WaiterDelay that will always return a constant\n// delay the waiter should use between attempts. It ignores the number of\n// attempts made.\nfunc ConstantWaiterDelay(delay time.Duration) WaiterDelay {\n\treturn func(attempt int) time.Duration {\n\t\treturn delay\n\t}\n}\n\n// WithWaiterDelay will set the Waiter to use the WaiterDelay passed in.\nfunc WithWaiterDelay(delayer WaiterDelay) WaiterOption {\n\treturn func(w *Waiter) {\n\t\tw.Delay = delayer\n\t}\n}\n\n// WithWaiterLogger returns a waiter option to set the logger a waiter\n// should use to log warnings and errors to.\nfunc WithWaiterLogger(logger aws.Logger) WaiterOption {\n\treturn func(w *Waiter) {\n\t\tw.Logger = logger\n\t}\n}\n\n// WithWaiterRequestOptions returns a waiter option setting the request\n// options for each request the waiter makes. Appends to waiter's request\n// options already set.\nfunc WithWaiterRequestOptions(opts ...Option) WaiterOption {\n\treturn func(w *Waiter) {\n\t\tw.RequestOptions = append(w.RequestOptions, opts...)\n\t}\n}\n\n// A Waiter provides the functionality to perform a blocking call which will\n// wait for a resource state to be satisfied by a service.\n//\n// This type should not be used directly. The API operations provided in the\n// service packages prefixed with \"WaitUntil\" should be used instead.\ntype Waiter struct {\n\tName      string\n\tAcceptors []WaiterAcceptor\n\tLogger    aws.Logger\n\n\tMaxAttempts int\n\tDelay       WaiterDelay\n\n\tRequestOptions   []Option\n\tNewRequest       func([]Option) (*Request, error)\n\tSleepWithContext func(aws.Context, time.Duration) error\n}\n\n// ApplyOptions updates the waiter with the list of waiter options provided.\nfunc (w *Waiter) ApplyOptions(opts ...WaiterOption) {\n\tfor _, fn := range opts {\n\t\tfn(w)\n\t}\n}\n\n// WaiterState are states the waiter uses based on WaiterAcceptor definitions\n// to identify if the resource state the waiter is waiting on has occurred.\ntype WaiterState int\n\n// String returns the string representation of the waiter state.\nfunc (s WaiterState) String() string {\n\tswitch s {\n\tcase SuccessWaiterState:\n\t\treturn \"success\"\n\tcase FailureWaiterState:\n\t\treturn \"failure\"\n\tcase RetryWaiterState:\n\t\treturn \"retry\"\n\tdefault:\n\t\treturn \"unknown waiter state\"\n\t}\n}\n\n// States the waiter acceptors will use to identify target resource states.\nconst (\n\tSuccessWaiterState WaiterState = iota // waiter successful\n\tFailureWaiterState                    // waiter failed\n\tRetryWaiterState                      // waiter needs to be retried\n)\n\n// WaiterMatchMode is the mode that the waiter will use to match the WaiterAcceptor\n// definition's Expected attribute.\ntype WaiterMatchMode int\n\n// Modes the waiter will use when inspecting API response to identify target\n// resource states.\nconst (\n\tPathAllWaiterMatch  WaiterMatchMode = iota // match on all paths\n\tPathWaiterMatch                            // match on specific path\n\tPathAnyWaiterMatch                         // match on any path\n\tPathListWaiterMatch                        // match on list of paths\n\tStatusWaiterMatch                          // match on status code\n\tErrorWaiterMatch                           // match on error\n)\n\n// String returns the string representation of the waiter match mode.\nfunc (m WaiterMatchMode) String() string {\n\tswitch m {\n\tcase PathAllWaiterMatch:\n\t\treturn \"pathAll\"\n\tcase PathWaiterMatch:\n\t\treturn \"path\"\n\tcase PathAnyWaiterMatch:\n\t\treturn \"pathAny\"\n\tcase PathListWaiterMatch:\n\t\treturn \"pathList\"\n\tcase StatusWaiterMatch:\n\t\treturn \"status\"\n\tcase ErrorWaiterMatch:\n\t\treturn \"error\"\n\tdefault:\n\t\treturn \"unknown waiter match mode\"\n\t}\n}\n\n// WaitWithContext will make requests for the API operation using NewRequest to\n// build API requests. The request's response will be compared against the\n// Waiter's Acceptors to determine the successful state of the resource the\n// waiter is inspecting.\n//\n// The passed in context must not be nil. If it is nil a panic will occur. The\n// Context will be used to cancel the waiter's pending requests and retry delays.\n// Use aws.BackgroundContext if no context is available.\n//\n// The waiter will continue until the target state defined by the Acceptors,\n// or the max attempts expires.\n//\n// Will return the WaiterResourceNotReadyErrorCode error code if the waiter's\n// retryer ShouldRetry returns false. This normally will happen when the max\n// wait attempts expires.\nfunc (w Waiter) WaitWithContext(ctx aws.Context) error {\n\n\tfor attempt := 1; ; attempt++ {\n\t\treq, err := w.NewRequest(w.RequestOptions)\n\t\tif err != nil {\n\t\t\twaiterLogf(w.Logger, \"unable to create request %v\", err)\n\t\t\treturn err\n\t\t}\n\t\treq.Handlers.Build.PushBack(MakeAddToUserAgentFreeFormHandler(\"Waiter\"))\n\t\terr = req.Send()\n\n\t\t// See if any of the acceptors match the request's response, or error\n\t\tfor _, a := range w.Acceptors {\n\t\t\tif matched, matchErr := a.match(w.Name, w.Logger, req, err); matched {\n\t\t\t\treturn matchErr\n\t\t\t}\n\t\t}\n\n\t\t// The Waiter should only check the resource state MaxAttempts times\n\t\t// This is here instead of in the for loop above to prevent delaying\n\t\t// unnecessary when the waiter will not retry.\n\t\tif attempt == w.MaxAttempts {\n\t\t\tbreak\n\t\t}\n\n\t\t// Delay to wait before inspecting the resource again\n\t\tdelay := w.Delay(attempt)\n\t\tif sleepFn := req.Config.SleepDelay; sleepFn != nil {\n\t\t\t// Support SleepDelay for backwards compatibility and testing\n\t\t\tsleepFn(delay)\n\t\t} else {\n\t\t\tsleepCtxFn := w.SleepWithContext\n\t\t\tif sleepCtxFn == nil {\n\t\t\t\tsleepCtxFn = aws.SleepWithContext\n\t\t\t}\n\n\t\t\tif err := sleepCtxFn(ctx, delay); err != nil {\n\t\t\t\treturn awserr.New(CanceledErrorCode, \"waiter context canceled\", err)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn awserr.New(WaiterResourceNotReadyErrorCode, \"exceeded wait attempts\", nil)\n}\n\n// A WaiterAcceptor provides the information needed to wait for an API operation\n// to complete.\ntype WaiterAcceptor struct {\n\tState    WaiterState\n\tMatcher  WaiterMatchMode\n\tArgument string\n\tExpected interface{}\n}\n\n// match returns if the acceptor found a match with the passed in request\n// or error. True is returned if the acceptor made a match, error is returned\n// if there was an error attempting to perform the match.\nfunc (a *WaiterAcceptor) match(name string, l aws.Logger, req *Request, err error) (bool, error) {\n\tresult := false\n\tvar vals []interface{}\n\n\tswitch a.Matcher {\n\tcase PathAllWaiterMatch, PathWaiterMatch:\n\t\t// Require all matches to be equal for result to match\n\t\tvals, _ = awsutil.ValuesAtPath(req.Data, a.Argument)\n\t\tif len(vals) == 0 {\n\t\t\tbreak\n\t\t}\n\t\tresult = true\n\t\tfor _, val := range vals {\n\t\t\tif !awsutil.DeepEqual(val, a.Expected) {\n\t\t\t\tresult = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\tcase PathAnyWaiterMatch:\n\t\t// Only a single match needs to equal for the result to match\n\t\tvals, _ = awsutil.ValuesAtPath(req.Data, a.Argument)\n\t\tfor _, val := range vals {\n\t\t\tif awsutil.DeepEqual(val, a.Expected) {\n\t\t\t\tresult = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\tcase PathListWaiterMatch:\n\t\t// ignored matcher\n\tcase StatusWaiterMatch:\n\t\ts := a.Expected.(int)\n\t\tresult = s == req.HTTPResponse.StatusCode\n\tcase ErrorWaiterMatch:\n\t\tif aerr, ok := err.(awserr.Error); ok {\n\t\t\tresult = aerr.Code() == a.Expected.(string)\n\t\t}\n\tdefault:\n\t\twaiterLogf(l, \"WARNING: Waiter %s encountered unexpected matcher: %s\",\n\t\t\tname, a.Matcher)\n\t}\n\n\tif !result {\n\t\t// If there was no matching result found there is nothing more to do\n\t\t// for this response, retry the request.\n\t\treturn false, nil\n\t}\n\n\tswitch a.State {\n\tcase SuccessWaiterState:\n\t\t// waiter completed\n\t\treturn true, nil\n\tcase FailureWaiterState:\n\t\t// Waiter failure state triggered\n\t\treturn true, awserr.New(WaiterResourceNotReadyErrorCode,\n\t\t\t\"failed waiting for successful resource state\", err)\n\tcase RetryWaiterState:\n\t\t// clear the error and retry the operation\n\t\treturn false, nil\n\tdefault:\n\t\twaiterLogf(l, \"WARNING: Waiter %s encountered unexpected state: %s\",\n\t\t\tname, a.State)\n\t\treturn false, nil\n\t}\n}\n\nfunc waiterLogf(logger aws.Logger, msg string, args ...interface{}) {\n\tif logger != nil {\n\t\tlogger.Log(fmt.Sprintf(msg, args...))\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/session/credentials.go",
    "content": "package session\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials/processcreds\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials/ssocreds\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials/stscreds\"\n\t\"github.com/aws/aws-sdk-go/aws/defaults\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/internal/shareddefaults\"\n\t\"github.com/aws/aws-sdk-go/service/ssooidc\"\n\t\"github.com/aws/aws-sdk-go/service/sts\"\n)\n\n// CredentialsProviderOptions specifies additional options for configuring\n// credentials providers.\ntype CredentialsProviderOptions struct {\n\t// WebIdentityRoleProviderOptions configures a WebIdentityRoleProvider,\n\t// such as setting its ExpiryWindow.\n\tWebIdentityRoleProviderOptions func(*stscreds.WebIdentityRoleProvider)\n\n\t// ProcessProviderOptions configures a ProcessProvider,\n\t// such as setting its Timeout.\n\tProcessProviderOptions func(*processcreds.ProcessProvider)\n}\n\nfunc resolveCredentials(cfg *aws.Config,\n\tenvCfg envConfig, sharedCfg sharedConfig,\n\thandlers request.Handlers,\n\tsessOpts Options,\n) (*credentials.Credentials, error) {\n\n\tswitch {\n\tcase len(sessOpts.Profile) != 0:\n\t\t// User explicitly provided a Profile in the session's configuration\n\t\t// so load that profile from shared config first.\n\t\t// Github(aws/aws-sdk-go#2727)\n\t\treturn resolveCredsFromProfile(cfg, envCfg, sharedCfg, handlers, sessOpts)\n\n\tcase envCfg.Creds.HasKeys():\n\t\t// Environment credentials\n\t\treturn credentials.NewStaticCredentialsFromCreds(envCfg.Creds), nil\n\n\tcase len(envCfg.WebIdentityTokenFilePath) != 0:\n\t\t// Web identity token from environment, RoleARN required to also be\n\t\t// set.\n\t\treturn assumeWebIdentity(cfg, handlers,\n\t\t\tenvCfg.WebIdentityTokenFilePath,\n\t\t\tenvCfg.RoleARN,\n\t\t\tenvCfg.RoleSessionName,\n\t\t\tsessOpts.CredentialsProviderOptions,\n\t\t)\n\n\tdefault:\n\t\t// Fallback to the \"default\" credential resolution chain.\n\t\treturn resolveCredsFromProfile(cfg, envCfg, sharedCfg, handlers, sessOpts)\n\t}\n}\n\n// WebIdentityEmptyRoleARNErr will occur if 'AWS_WEB_IDENTITY_TOKEN_FILE' was set but\n// 'AWS_ROLE_ARN' was not set.\nvar WebIdentityEmptyRoleARNErr = awserr.New(stscreds.ErrCodeWebIdentity, \"role ARN is not set\", nil)\n\n// WebIdentityEmptyTokenFilePathErr will occur if 'AWS_ROLE_ARN' was set but\n// 'AWS_WEB_IDENTITY_TOKEN_FILE' was not set.\nvar WebIdentityEmptyTokenFilePathErr = awserr.New(stscreds.ErrCodeWebIdentity, \"token file path is not set\", nil)\n\nfunc assumeWebIdentity(cfg *aws.Config, handlers request.Handlers,\n\tfilepath string,\n\troleARN, sessionName string,\n\tcredOptions *CredentialsProviderOptions,\n) (*credentials.Credentials, error) {\n\n\tif len(filepath) == 0 {\n\t\treturn nil, WebIdentityEmptyTokenFilePathErr\n\t}\n\n\tif len(roleARN) == 0 {\n\t\treturn nil, WebIdentityEmptyRoleARNErr\n\t}\n\n\tsvc := sts.New(&Session{\n\t\tConfig:   cfg,\n\t\tHandlers: handlers.Copy(),\n\t})\n\n\tvar optFns []func(*stscreds.WebIdentityRoleProvider)\n\tif credOptions != nil && credOptions.WebIdentityRoleProviderOptions != nil {\n\t\toptFns = append(optFns, credOptions.WebIdentityRoleProviderOptions)\n\t}\n\n\tp := stscreds.NewWebIdentityRoleProviderWithOptions(svc, roleARN, sessionName, stscreds.FetchTokenPath(filepath), optFns...)\n\treturn credentials.NewCredentials(p), nil\n}\n\nfunc resolveCredsFromProfile(cfg *aws.Config,\n\tenvCfg envConfig, sharedCfg sharedConfig,\n\thandlers request.Handlers,\n\tsessOpts Options,\n) (creds *credentials.Credentials, err error) {\n\n\tswitch {\n\tcase sharedCfg.SourceProfile != nil:\n\t\t// Assume IAM role with credentials source from a different profile.\n\t\tcreds, err = resolveCredsFromProfile(cfg, envCfg,\n\t\t\t*sharedCfg.SourceProfile, handlers, sessOpts,\n\t\t)\n\n\tcase sharedCfg.Creds.HasKeys():\n\t\t// Static Credentials from Shared Config/Credentials file.\n\t\tcreds = credentials.NewStaticCredentialsFromCreds(\n\t\t\tsharedCfg.Creds,\n\t\t)\n\n\tcase len(sharedCfg.CredentialSource) != 0:\n\t\tcreds, err = resolveCredsFromSource(cfg, envCfg,\n\t\t\tsharedCfg, handlers, sessOpts,\n\t\t)\n\n\tcase len(sharedCfg.WebIdentityTokenFile) != 0:\n\t\t// Credentials from Assume Web Identity token require an IAM Role, and\n\t\t// that roll will be assumed. May be wrapped with another assume role\n\t\t// via SourceProfile.\n\t\treturn assumeWebIdentity(cfg, handlers,\n\t\t\tsharedCfg.WebIdentityTokenFile,\n\t\t\tsharedCfg.RoleARN,\n\t\t\tsharedCfg.RoleSessionName,\n\t\t\tsessOpts.CredentialsProviderOptions,\n\t\t)\n\n\tcase sharedCfg.hasSSOConfiguration():\n\t\tcreds, err = resolveSSOCredentials(cfg, sharedCfg, handlers)\n\n\tcase len(sharedCfg.CredentialProcess) != 0:\n\t\t// Get credentials from CredentialProcess\n\t\tvar optFns []func(*processcreds.ProcessProvider)\n\t\tif sessOpts.CredentialsProviderOptions != nil && sessOpts.CredentialsProviderOptions.ProcessProviderOptions != nil {\n\t\t\toptFns = append(optFns, sessOpts.CredentialsProviderOptions.ProcessProviderOptions)\n\t\t}\n\t\tcreds = processcreds.NewCredentials(sharedCfg.CredentialProcess, optFns...)\n\n\tdefault:\n\t\t// Fallback to default credentials provider, include mock errors for\n\t\t// the credential chain so user can identify why credentials failed to\n\t\t// be retrieved.\n\t\tcreds = credentials.NewCredentials(&credentials.ChainProvider{\n\t\t\tVerboseErrors: aws.BoolValue(cfg.CredentialsChainVerboseErrors),\n\t\t\tProviders: []credentials.Provider{\n\t\t\t\t&credProviderError{\n\t\t\t\t\tErr: awserr.New(\"EnvAccessKeyNotFound\",\n\t\t\t\t\t\t\"failed to find credentials in the environment.\", nil),\n\t\t\t\t},\n\t\t\t\t&credProviderError{\n\t\t\t\t\tErr: awserr.New(\"SharedCredsLoad\",\n\t\t\t\t\t\tfmt.Sprintf(\"failed to load profile, %s.\", envCfg.Profile), nil),\n\t\t\t\t},\n\t\t\t\tdefaults.RemoteCredProvider(*cfg, handlers),\n\t\t\t},\n\t\t})\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(sharedCfg.RoleARN) > 0 {\n\t\tcfgCp := *cfg\n\t\tcfgCp.Credentials = creds\n\t\treturn credsFromAssumeRole(cfgCp, handlers, sharedCfg, sessOpts)\n\t}\n\n\treturn creds, nil\n}\n\nfunc resolveSSOCredentials(cfg *aws.Config, sharedCfg sharedConfig, handlers request.Handlers) (*credentials.Credentials, error) {\n\tif err := sharedCfg.validateSSOConfiguration(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar optFns []func(provider *ssocreds.Provider)\n\tcfgCopy := cfg.Copy()\n\n\tif sharedCfg.SSOSession != nil {\n\t\tcfgCopy.Region = &sharedCfg.SSOSession.SSORegion\n\t\tcachedPath, err := ssocreds.StandardCachedTokenFilepath(sharedCfg.SSOSession.Name)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// create oidcClient with AnonymousCredentials to avoid recursively resolving credentials\n\t\tmySession := Must(NewSession(&aws.Config{\n\t\t\tCredentials: credentials.AnonymousCredentials,\n\t\t}))\n\t\toidcClient := ssooidc.New(mySession, cfgCopy)\n\t\ttokenProvider := ssocreds.NewSSOTokenProvider(oidcClient, cachedPath)\n\t\toptFns = append(optFns, func(p *ssocreds.Provider) {\n\t\t\tp.TokenProvider = tokenProvider\n\t\t\tp.CachedTokenFilepath = cachedPath\n\t\t})\n\t} else {\n\t\tcfgCopy.Region = &sharedCfg.SSORegion\n\t}\n\n\treturn ssocreds.NewCredentials(\n\t\t&Session{\n\t\t\tConfig:   cfgCopy,\n\t\t\tHandlers: handlers.Copy(),\n\t\t},\n\t\tsharedCfg.SSOAccountID,\n\t\tsharedCfg.SSORoleName,\n\t\tsharedCfg.SSOStartURL,\n\t\toptFns...,\n\t), nil\n}\n\n// valid credential source values\nconst (\n\tcredSourceEc2Metadata  = \"Ec2InstanceMetadata\"\n\tcredSourceEnvironment  = \"Environment\"\n\tcredSourceECSContainer = \"EcsContainer\"\n)\n\nfunc resolveCredsFromSource(cfg *aws.Config,\n\tenvCfg envConfig, sharedCfg sharedConfig,\n\thandlers request.Handlers,\n\tsessOpts Options,\n) (creds *credentials.Credentials, err error) {\n\n\tswitch sharedCfg.CredentialSource {\n\tcase credSourceEc2Metadata:\n\t\tp := defaults.RemoteCredProvider(*cfg, handlers)\n\t\tcreds = credentials.NewCredentials(p)\n\n\tcase credSourceEnvironment:\n\t\tcreds = credentials.NewStaticCredentialsFromCreds(envCfg.Creds)\n\n\tcase credSourceECSContainer:\n\t\tif len(os.Getenv(shareddefaults.ECSCredsProviderEnvVar)) == 0 {\n\t\t\treturn nil, ErrSharedConfigECSContainerEnvVarEmpty\n\t\t}\n\n\t\tp := defaults.RemoteCredProvider(*cfg, handlers)\n\t\tcreds = credentials.NewCredentials(p)\n\n\tdefault:\n\t\treturn nil, ErrSharedConfigInvalidCredSource\n\t}\n\n\treturn creds, nil\n}\n\nfunc credsFromAssumeRole(cfg aws.Config,\n\thandlers request.Handlers,\n\tsharedCfg sharedConfig,\n\tsessOpts Options,\n) (*credentials.Credentials, error) {\n\n\tif len(sharedCfg.MFASerial) != 0 && sessOpts.AssumeRoleTokenProvider == nil {\n\t\t// AssumeRole Token provider is required if doing Assume Role\n\t\t// with MFA.\n\t\treturn nil, AssumeRoleTokenProviderNotSetError{}\n\t}\n\n\treturn stscreds.NewCredentials(\n\t\t&Session{\n\t\t\tConfig:   &cfg,\n\t\t\tHandlers: handlers.Copy(),\n\t\t},\n\t\tsharedCfg.RoleARN,\n\t\tfunc(opt *stscreds.AssumeRoleProvider) {\n\t\t\topt.RoleSessionName = sharedCfg.RoleSessionName\n\n\t\t\tif sessOpts.AssumeRoleDuration == 0 &&\n\t\t\t\tsharedCfg.AssumeRoleDuration != nil &&\n\t\t\t\t*sharedCfg.AssumeRoleDuration/time.Minute > 15 {\n\t\t\t\topt.Duration = *sharedCfg.AssumeRoleDuration\n\t\t\t} else if sessOpts.AssumeRoleDuration != 0 {\n\t\t\t\topt.Duration = sessOpts.AssumeRoleDuration\n\t\t\t}\n\n\t\t\t// Assume role with external ID\n\t\t\tif len(sharedCfg.ExternalID) > 0 {\n\t\t\t\topt.ExternalID = aws.String(sharedCfg.ExternalID)\n\t\t\t}\n\n\t\t\t// Assume role with MFA\n\t\t\tif len(sharedCfg.MFASerial) > 0 {\n\t\t\t\topt.SerialNumber = aws.String(sharedCfg.MFASerial)\n\t\t\t\topt.TokenProvider = sessOpts.AssumeRoleTokenProvider\n\t\t\t}\n\t\t},\n\t), nil\n}\n\n// AssumeRoleTokenProviderNotSetError is an error returned when creating a\n// session when the MFAToken option is not set when shared config is configured\n// load assume a role with an MFA token.\ntype AssumeRoleTokenProviderNotSetError struct{}\n\n// Code is the short id of the error.\nfunc (e AssumeRoleTokenProviderNotSetError) Code() string {\n\treturn \"AssumeRoleTokenProviderNotSetError\"\n}\n\n// Message is the description of the error\nfunc (e AssumeRoleTokenProviderNotSetError) Message() string {\n\treturn fmt.Sprintf(\"assume role with MFA enabled, but AssumeRoleTokenProvider session option not set.\")\n}\n\n// OrigErr is the underlying error that caused the failure.\nfunc (e AssumeRoleTokenProviderNotSetError) OrigErr() error {\n\treturn nil\n}\n\n// Error satisfies the error interface.\nfunc (e AssumeRoleTokenProviderNotSetError) Error() string {\n\treturn awserr.SprintError(e.Code(), e.Message(), \"\", nil)\n}\n\ntype credProviderError struct {\n\tErr error\n}\n\nfunc (c credProviderError) Retrieve() (credentials.Value, error) {\n\treturn credentials.Value{}, c.Err\n}\nfunc (c credProviderError) IsExpired() bool {\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/session/custom_transport.go",
    "content": "//go:build go1.13\n// +build go1.13\n\npackage session\n\nimport (\n\t\"net\"\n\t\"net/http\"\n\t\"time\"\n)\n\n// Transport that should be used when a custom CA bundle is specified with the\n// SDK.\nfunc getCustomTransport() *http.Transport {\n\treturn &http.Transport{\n\t\tProxy: http.ProxyFromEnvironment,\n\t\tDialContext: (&net.Dialer{\n\t\t\tTimeout:   30 * time.Second,\n\t\t\tKeepAlive: 30 * time.Second,\n\t\t\tDualStack: true,\n\t\t}).DialContext,\n\t\tForceAttemptHTTP2:     true,\n\t\tMaxIdleConns:          100,\n\t\tIdleConnTimeout:       90 * time.Second,\n\t\tTLSHandshakeTimeout:   10 * time.Second,\n\t\tExpectContinueTimeout: 1 * time.Second,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/session/custom_transport_go1.12.go",
    "content": "//go:build !go1.13 && go1.7\n// +build !go1.13,go1.7\n\npackage session\n\nimport (\n\t\"net\"\n\t\"net/http\"\n\t\"time\"\n)\n\n// Transport that should be used when a custom CA bundle is specified with the\n// SDK.\nfunc getCustomTransport() *http.Transport {\n\treturn &http.Transport{\n\t\tProxy: http.ProxyFromEnvironment,\n\t\tDialContext: (&net.Dialer{\n\t\t\tTimeout:   30 * time.Second,\n\t\t\tKeepAlive: 30 * time.Second,\n\t\t\tDualStack: true,\n\t\t}).DialContext,\n\t\tMaxIdleConns:          100,\n\t\tIdleConnTimeout:       90 * time.Second,\n\t\tTLSHandshakeTimeout:   10 * time.Second,\n\t\tExpectContinueTimeout: 1 * time.Second,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/session/custom_transport_go1.5.go",
    "content": "//go:build !go1.6 && go1.5\n// +build !go1.6,go1.5\n\npackage session\n\nimport (\n\t\"net\"\n\t\"net/http\"\n\t\"time\"\n)\n\n// Transport that should be used when a custom CA bundle is specified with the\n// SDK.\nfunc getCustomTransport() *http.Transport {\n\treturn &http.Transport{\n\t\tProxy: http.ProxyFromEnvironment,\n\t\tDial: (&net.Dialer{\n\t\t\tTimeout:   30 * time.Second,\n\t\t\tKeepAlive: 30 * time.Second,\n\t\t}).Dial,\n\t\tTLSHandshakeTimeout: 10 * time.Second,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/session/custom_transport_go1.6.go",
    "content": "//go:build !go1.7 && go1.6\n// +build !go1.7,go1.6\n\npackage session\n\nimport (\n\t\"net\"\n\t\"net/http\"\n\t\"time\"\n)\n\n// Transport that should be used when a custom CA bundle is specified with the\n// SDK.\nfunc getCustomTransport() *http.Transport {\n\treturn &http.Transport{\n\t\tProxy: http.ProxyFromEnvironment,\n\t\tDial: (&net.Dialer{\n\t\t\tTimeout:   30 * time.Second,\n\t\t\tKeepAlive: 30 * time.Second,\n\t\t}).Dial,\n\t\tTLSHandshakeTimeout:   10 * time.Second,\n\t\tExpectContinueTimeout: 1 * time.Second,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/session/doc.go",
    "content": "/*\nPackage session provides configuration for the SDK's service clients. Sessions\ncan be shared across service clients that share the same base configuration.\n\nSessions are safe to use concurrently as long as the Session is not being\nmodified. Sessions should be cached when possible, because creating a new\nSession will load all configuration values from the environment, and config\nfiles each time the Session is created. Sharing the Session value across all of\nyour service clients will ensure the configuration is loaded the fewest number\nof times possible.\n\nSessions options from Shared Config\n\nBy default NewSession will only load credentials from the shared credentials\nfile (~/.aws/credentials). If the AWS_SDK_LOAD_CONFIG environment variable is\nset to a truthy value the Session will be created from the configuration\nvalues from the shared config (~/.aws/config) and shared credentials\n(~/.aws/credentials) files. Using the NewSessionWithOptions with\nSharedConfigState set to SharedConfigEnable will create the session as if the\nAWS_SDK_LOAD_CONFIG environment variable was set.\n\nCredential and config loading order\n\nThe Session will attempt to load configuration and credentials from the\nenvironment, configuration files, and other credential sources. The order\nconfiguration is loaded in is:\n\n  * Environment Variables\n  * Shared Credentials file\n  * Shared Configuration file (if SharedConfig is enabled)\n  * EC2 Instance Metadata (credentials only)\n\nThe Environment variables for credentials will have precedence over shared\nconfig even if SharedConfig is enabled. To override this behavior, and use\nshared config credentials instead specify the session.Options.Profile, (e.g.\nwhen using credential_source=Environment to assume a role).\n\n  sess, err := session.NewSessionWithOptions(session.Options{\n\t  Profile: \"myProfile\",\n  })\n\nCreating Sessions\n\nCreating a Session without additional options will load credentials region, and\nprofile loaded from the environment and shared config automatically. See,\n\"Environment Variables\" section for information on environment variables used\nby Session.\n\n\t// Create Session\n\tsess, err := session.NewSession()\n\n\nWhen creating Sessions optional aws.Config values can be passed in that will\noverride the default, or loaded, config values the Session is being created\nwith. This allows you to provide additional, or case based, configuration\nas needed.\n\n\t// Create a Session with a custom region\n\tsess, err := session.NewSession(&aws.Config{\n\t\tRegion: aws.String(\"us-west-2\"),\n\t})\n\nUse NewSessionWithOptions to provide additional configuration driving how the\nSession's configuration will be loaded. Such as, specifying shared config\nprofile, or override the shared config state,  (AWS_SDK_LOAD_CONFIG).\n\n\t// Equivalent to session.NewSession()\n\tsess, err := session.NewSessionWithOptions(session.Options{\n\t\t// Options\n\t})\n\n\tsess, err := session.NewSessionWithOptions(session.Options{\n\t\t// Specify profile to load for the session's config\n\t\tProfile: \"profile_name\",\n\n\t\t// Provide SDK Config options, such as Region.\n\t\tConfig: aws.Config{\n\t\t\tRegion: aws.String(\"us-west-2\"),\n\t\t},\n\n\t\t// Force enable Shared Config support\n\t\tSharedConfigState: session.SharedConfigEnable,\n\t})\n\nAdding Handlers\n\nYou can add handlers to a session to decorate API operation, (e.g. adding HTTP\nheaders). All clients that use the Session receive a copy of the Session's\nhandlers. For example, the following request handler added to the Session logs\nevery requests made.\n\n\t// Create a session, and add additional handlers for all service\n\t// clients created with the Session to inherit. Adds logging handler.\n\tsess := session.Must(session.NewSession())\n\n\tsess.Handlers.Send.PushFront(func(r *request.Request) {\n\t\t// Log every request made and its payload\n\t\tlogger.Printf(\"Request: %s/%s, Params: %s\",\n\t\t\tr.ClientInfo.ServiceName, r.Operation, r.Params)\n\t})\n\nShared Config Fields\n\nBy default the SDK will only load the shared credentials file's\n(~/.aws/credentials) credentials values, and all other config is provided by\nthe environment variables, SDK defaults, and user provided aws.Config values.\n\nIf the AWS_SDK_LOAD_CONFIG environment variable is set, or SharedConfigEnable\noption is used to create the Session the full shared config values will be\nloaded. This includes credentials, region, and support for assume role. In\naddition the Session will load its configuration from both the shared config\nfile (~/.aws/config) and shared credentials file (~/.aws/credentials). Both\nfiles have the same format.\n\nIf both config files are present the configuration from both files will be\nread. The Session will be created from configuration values from the shared\ncredentials file (~/.aws/credentials) over those in the shared config file\n(~/.aws/config).\n\nCredentials are the values the SDK uses to authenticating requests with AWS\nServices. When specified in a file, both aws_access_key_id and\naws_secret_access_key must be provided together in the same file to be\nconsidered valid. They will be ignored if both are not present.\naws_session_token is an optional field that can be provided in addition to the\nother two fields.\n\n\taws_access_key_id = AKID\n\taws_secret_access_key = SECRET\n\taws_session_token = TOKEN\n\n\t; region only supported if SharedConfigEnabled.\n\tregion = us-east-1\n\nAssume Role configuration\n\nThe role_arn field allows you to configure the SDK to assume an IAM role using\na set of credentials from another source. Such as when paired with static\ncredentials, \"profile_source\", \"credential_process\", or \"credential_source\"\nfields. If \"role_arn\" is provided, a source of credentials must also be\nspecified, such as \"source_profile\", \"credential_source\", or\n\"credential_process\".\n\n\trole_arn = arn:aws:iam::<account_number>:role/<role_name>\n\tsource_profile = profile_with_creds\n\texternal_id = 1234\n\tmfa_serial = <serial or mfa arn>\n\trole_session_name = session_name\n\n\nThe SDK supports assuming a role with MFA token. If \"mfa_serial\" is set, you\nmust also set the Session Option.AssumeRoleTokenProvider. The Session will fail\nto load if the AssumeRoleTokenProvider is not specified.\n\n    sess := session.Must(session.NewSessionWithOptions(session.Options{\n        AssumeRoleTokenProvider: stscreds.StdinTokenProvider,\n    }))\n\nTo setup Assume Role outside of a session see the stscreds.AssumeRoleProvider\ndocumentation.\n\nEnvironment Variables\n\nWhen a Session is created several environment variables can be set to adjust\nhow the SDK functions, and what configuration data it loads when creating\nSessions. All environment values are optional, but some values like credentials\nrequire multiple of the values to set or the partial values will be ignored.\nAll environment variable values are strings unless otherwise noted.\n\nEnvironment configuration values. If set both Access Key ID and Secret Access\nKey must be provided. Session Token and optionally also be provided, but is\nnot required.\n\n\t# Access Key ID\n\tAWS_ACCESS_KEY_ID=AKID\n\tAWS_ACCESS_KEY=AKID # only read if AWS_ACCESS_KEY_ID is not set.\n\n\t# Secret Access Key\n\tAWS_SECRET_ACCESS_KEY=SECRET\n\tAWS_SECRET_KEY=SECRET=SECRET # only read if AWS_SECRET_ACCESS_KEY is not set.\n\n\t# Session Token\n\tAWS_SESSION_TOKEN=TOKEN\n\nRegion value will instruct the SDK where to make service API requests to. If is\nnot provided in the environment the region must be provided before a service\nclient request is made.\n\n\tAWS_REGION=us-east-1\n\n\t# AWS_DEFAULT_REGION is only read if AWS_SDK_LOAD_CONFIG is also set,\n\t# and AWS_REGION is not also set.\n\tAWS_DEFAULT_REGION=us-east-1\n\nProfile name the SDK should load use when loading shared config from the\nconfiguration files. If not provided \"default\" will be used as the profile name.\n\n\tAWS_PROFILE=my_profile\n\n\t# AWS_DEFAULT_PROFILE is only read if AWS_SDK_LOAD_CONFIG is also set,\n\t# and AWS_PROFILE is not also set.\n\tAWS_DEFAULT_PROFILE=my_profile\n\nSDK load config instructs the SDK to load the shared config in addition to\nshared credentials. This also expands the configuration loaded so the shared\ncredentials will have parity with the shared config file. This also enables\nRegion and Profile support for the AWS_DEFAULT_REGION and AWS_DEFAULT_PROFILE\nenv values as well.\n\n\tAWS_SDK_LOAD_CONFIG=1\n\nCustom Shared Config and Credential Files\n\nShared credentials file path can be set to instruct the SDK to use an alternative\nfile for the shared credentials. If not set the file will be loaded from\n$HOME/.aws/credentials on Linux/Unix based systems, and\n%USERPROFILE%\\.aws\\credentials on Windows.\n\n\tAWS_SHARED_CREDENTIALS_FILE=$HOME/my_shared_credentials\n\nShared config file path can be set to instruct the SDK to use an alternative\nfile for the shared config. If not set the file will be loaded from\n$HOME/.aws/config on Linux/Unix based systems, and\n%USERPROFILE%\\.aws\\config on Windows.\n\n\tAWS_CONFIG_FILE=$HOME/my_shared_config\n\nCustom CA Bundle\n\nPath to a custom Credentials Authority (CA) bundle PEM file that the SDK\nwill use instead of the default system's root CA bundle. Use this only\nif you want to replace the CA bundle the SDK uses for TLS requests.\n\n\tAWS_CA_BUNDLE=$HOME/my_custom_ca_bundle\n\nEnabling this option will attempt to merge the Transport into the SDK's HTTP\nclient. If the client's Transport is not a http.Transport an error will be\nreturned. If the Transport's TLS config is set this option will cause the SDK\nto overwrite the Transport's TLS config's  RootCAs value. If the CA bundle file\ncontains multiple certificates all of them will be loaded.\n\nThe Session option CustomCABundle is also available when creating sessions\nto also enable this feature. CustomCABundle session option field has priority\nover the AWS_CA_BUNDLE environment variable, and will be used if both are set.\n\nSetting a custom HTTPClient in the aws.Config options will override this setting.\nTo use this option and custom HTTP client, the HTTP client needs to be provided\nwhen creating the session. Not the service client.\n\nCustom Client TLS Certificate\n\nThe SDK supports the environment and session option being configured with\nClient TLS certificates that are sent as a part of the client's TLS handshake\nfor client authentication. If used, both Cert and Key values are required. If\none is missing, or either fail to load the contents of the file an error will\nbe returned.\n\nHTTP Client's Transport concrete implementation must be a http.Transport\nor creating the session will fail.\n\n\tAWS_SDK_GO_CLIENT_TLS_KEY=$HOME/my_client_key\n\tAWS_SDK_GO_CLIENT_TLS_CERT=$HOME/my_client_cert\n\nThis can also be configured via the session.Options ClientTLSCert and ClientTLSKey.\n\n\tsess, err := session.NewSessionWithOptions(session.Options{\n\t\tClientTLSCert: myCertFile,\n\t\tClientTLSKey: myKeyFile,\n\t})\n\nCustom EC2 IMDS Endpoint\n\nThe endpoint of the EC2 IMDS client can be configured via the environment\nvariable, AWS_EC2_METADATA_SERVICE_ENDPOINT when creating the client with a\nSession. See Options.EC2IMDSEndpoint for more details.\n\n  AWS_EC2_METADATA_SERVICE_ENDPOINT=http://169.254.169.254\n\nIf using an URL with an IPv6 address literal, the IPv6 address\ncomponent must be enclosed in square brackets.\n\n  AWS_EC2_METADATA_SERVICE_ENDPOINT=http://[::1]\n\nThe custom EC2 IMDS endpoint can also be specified via the Session options.\n\n  sess, err := session.NewSessionWithOptions(session.Options{\n      EC2MetadataEndpoint: \"http://[::1]\",\n  })\n\nFIPS and DualStack Endpoints\n\nThe SDK can be configured to resolve an endpoint with certain capabilities such as FIPS and DualStack.\n\nYou can configure a FIPS endpoint using an environment variable, shared config ($HOME/.aws/config),\nor programmatically.\n\nTo configure a FIPS endpoint set the environment variable set the AWS_USE_FIPS_ENDPOINT to true or false to enable\nor disable FIPS endpoint resolution.\n\n  AWS_USE_FIPS_ENDPOINT=true\n\nTo configure a FIPS endpoint using shared config, set use_fips_endpoint to true or false to enable\nor disable FIPS endpoint resolution.\n\n  [profile myprofile]\n  region=us-west-2\n  use_fips_endpoint=true\n\nTo configure a FIPS endpoint programmatically\n\n  // Option 1: Configure it on a session for all clients\n  sess, err := session.NewSessionWithOptions(session.Options{\n      UseFIPSEndpoint: endpoints.FIPSEndpointStateEnabled,\n  })\n  if err != nil {\n      // handle error\n  }\n\n  client := s3.New(sess)\n\n  // Option 2: Configure it per client\n  sess, err := session.NewSession()\n  if err != nil {\n      // handle error\n  }\n\n  client := s3.New(sess, &aws.Config{\n      UseFIPSEndpoint: endpoints.FIPSEndpointStateEnabled,\n  })\n\nYou can configure a DualStack endpoint using an environment variable, shared config ($HOME/.aws/config),\nor programmatically.\n\nTo configure a DualStack endpoint set the environment variable set the AWS_USE_DUALSTACK_ENDPOINT to true or false to\nenable or disable DualStack endpoint resolution.\n\n  AWS_USE_DUALSTACK_ENDPOINT=true\n\nTo configure a DualStack endpoint using shared config, set use_dualstack_endpoint to true or false to enable\nor disable DualStack endpoint resolution.\n\n  [profile myprofile]\n  region=us-west-2\n  use_dualstack_endpoint=true\n\nTo configure a DualStack endpoint programmatically\n\n  // Option 1: Configure it on a session for all clients\n  sess, err := session.NewSessionWithOptions(session.Options{\n      UseDualStackEndpoint: endpoints.DualStackEndpointStateEnabled,\n  })\n  if err != nil {\n      // handle error\n  }\n\n  client := s3.New(sess)\n\n  // Option 2: Configure it per client\n  sess, err := session.NewSession()\n  if err != nil {\n      // handle error\n  }\n\n  client := s3.New(sess, &aws.Config{\n      UseDualStackEndpoint: endpoints.DualStackEndpointStateEnabled,\n  })\n*/\npackage session\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go",
    "content": "package session\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/defaults\"\n\t\"github.com/aws/aws-sdk-go/aws/endpoints\"\n)\n\n// EnvProviderName provides a name of the provider when config is loaded from environment.\nconst EnvProviderName = \"EnvConfigCredentials\"\n\n// envConfig is a collection of environment values the SDK will read\n// setup config from. All environment values are optional. But some values\n// such as credentials require multiple values to be complete or the values\n// will be ignored.\ntype envConfig struct {\n\t// Environment configuration values. If set both Access Key ID and Secret Access\n\t// Key must be provided. Session Token and optionally also be provided, but is\n\t// not required.\n\t//\n\t//\t# Access Key ID\n\t//\tAWS_ACCESS_KEY_ID=AKID\n\t//\tAWS_ACCESS_KEY=AKID # only read if AWS_ACCESS_KEY_ID is not set.\n\t//\n\t//\t# Secret Access Key\n\t//\tAWS_SECRET_ACCESS_KEY=SECRET\n\t//\tAWS_SECRET_KEY=SECRET=SECRET # only read if AWS_SECRET_ACCESS_KEY is not set.\n\t//\n\t//\t# Session Token\n\t//\tAWS_SESSION_TOKEN=TOKEN\n\tCreds credentials.Value\n\n\t// Region value will instruct the SDK where to make service API requests to. If is\n\t// not provided in the environment the region must be provided before a service\n\t// client request is made.\n\t//\n\t//\tAWS_REGION=us-east-1\n\t//\n\t//\t# AWS_DEFAULT_REGION is only read if AWS_SDK_LOAD_CONFIG is also set,\n\t//\t# and AWS_REGION is not also set.\n\t//\tAWS_DEFAULT_REGION=us-east-1\n\tRegion string\n\n\t// Profile name the SDK should load use when loading shared configuration from the\n\t// shared configuration files. If not provided \"default\" will be used as the\n\t// profile name.\n\t//\n\t//\tAWS_PROFILE=my_profile\n\t//\n\t//\t# AWS_DEFAULT_PROFILE is only read if AWS_SDK_LOAD_CONFIG is also set,\n\t//\t# and AWS_PROFILE is not also set.\n\t//\tAWS_DEFAULT_PROFILE=my_profile\n\tProfile string\n\n\t// SDK load config instructs the SDK to load the shared config in addition to\n\t// shared credentials. This also expands the configuration loaded from the shared\n\t// credentials to have parity with the shared config file. This also enables\n\t// Region and Profile support for the AWS_DEFAULT_REGION and AWS_DEFAULT_PROFILE\n\t// env values as well.\n\t//\n\t//\tAWS_SDK_LOAD_CONFIG=1\n\tEnableSharedConfig bool\n\n\t// Shared credentials file path can be set to instruct the SDK to use an alternate\n\t// file for the shared credentials. If not set the file will be loaded from\n\t// $HOME/.aws/credentials on Linux/Unix based systems, and\n\t// %USERPROFILE%\\.aws\\credentials on Windows.\n\t//\n\t//\tAWS_SHARED_CREDENTIALS_FILE=$HOME/my_shared_credentials\n\tSharedCredentialsFile string\n\n\t// Shared config file path can be set to instruct the SDK to use an alternate\n\t// file for the shared config. If not set the file will be loaded from\n\t// $HOME/.aws/config on Linux/Unix based systems, and\n\t// %USERPROFILE%\\.aws\\config on Windows.\n\t//\n\t//\tAWS_CONFIG_FILE=$HOME/my_shared_config\n\tSharedConfigFile string\n\n\t// Sets the path to a custom Credentials Authority (CA) Bundle PEM file\n\t// that the SDK will use instead of the system's root CA bundle.\n\t// Only use this if you want to configure the SDK to use a custom set\n\t// of CAs.\n\t//\n\t// Enabling this option will attempt to merge the Transport\n\t// into the SDK's HTTP client. If the client's Transport is\n\t// not a http.Transport an error will be returned. If the\n\t// Transport's TLS config is set this option will cause the\n\t// SDK to overwrite the Transport's TLS config's  RootCAs value.\n\t//\n\t// Setting a custom HTTPClient in the aws.Config options will override this setting.\n\t// To use this option and custom HTTP client, the HTTP client needs to be provided\n\t// when creating the session. Not the service client.\n\t//\n\t//  AWS_CA_BUNDLE=$HOME/my_custom_ca_bundle\n\tCustomCABundle string\n\n\t// Sets the TLC client certificate that should be used by the SDK's HTTP transport\n\t// when making requests. The certificate must be paired with a TLS client key file.\n\t//\n\t//  AWS_SDK_GO_CLIENT_TLS_CERT=$HOME/my_client_cert\n\tClientTLSCert string\n\n\t// Sets the TLC client key that should be used by the SDK's HTTP transport\n\t// when making requests. The key must be paired with a TLS client certificate file.\n\t//\n\t//  AWS_SDK_GO_CLIENT_TLS_KEY=$HOME/my_client_key\n\tClientTLSKey string\n\n\tcsmEnabled  string\n\tCSMEnabled  *bool\n\tCSMPort     string\n\tCSMHost     string\n\tCSMClientID string\n\n\t// Enables endpoint discovery via environment variables.\n\t//\n\t//\tAWS_ENABLE_ENDPOINT_DISCOVERY=true\n\tEnableEndpointDiscovery *bool\n\tenableEndpointDiscovery string\n\n\t// Specifies the WebIdentity token the SDK should use to assume a role\n\t// with.\n\t//\n\t//  AWS_WEB_IDENTITY_TOKEN_FILE=file_path\n\tWebIdentityTokenFilePath string\n\n\t// Specifies the IAM role arn to use when assuming an role.\n\t//\n\t//  AWS_ROLE_ARN=role_arn\n\tRoleARN string\n\n\t// Specifies the IAM role session name to use when assuming a role.\n\t//\n\t//  AWS_ROLE_SESSION_NAME=session_name\n\tRoleSessionName string\n\n\t// Specifies the STS Regional Endpoint flag for the SDK to resolve the endpoint\n\t// for a service.\n\t//\n\t// AWS_STS_REGIONAL_ENDPOINTS=regional\n\t// This can take value as `regional` or `legacy`\n\tSTSRegionalEndpoint endpoints.STSRegionalEndpoint\n\n\t// Specifies the S3 Regional Endpoint flag for the SDK to resolve the\n\t// endpoint for a service.\n\t//\n\t// AWS_S3_US_EAST_1_REGIONAL_ENDPOINT=regional\n\t// This can take value as `regional` or `legacy`\n\tS3UsEast1RegionalEndpoint endpoints.S3UsEast1RegionalEndpoint\n\n\t// Specifies if the S3 service should allow ARNs to direct the region\n\t// the client's requests are sent to.\n\t//\n\t// AWS_S3_USE_ARN_REGION=true\n\tS3UseARNRegion bool\n\n\t// Specifies the EC2 Instance Metadata Service endpoint to use. If specified it overrides EC2IMDSEndpointMode.\n\t//\n\t// AWS_EC2_METADATA_SERVICE_ENDPOINT=http://[::1]\n\tEC2IMDSEndpoint string\n\n\t// Specifies the EC2 Instance Metadata Service default endpoint selection mode (IPv4 or IPv6)\n\t//\n\t// AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE=IPv6\n\tEC2IMDSEndpointMode endpoints.EC2IMDSEndpointModeState\n\n\t// Specifies that IMDS clients should not fallback to IMDSv1 if token\n\t// requests fail.\n\t//\n\t// AWS_EC2_METADATA_V1_DISABLED=true\n\tEC2IMDSv1Disabled *bool\n\n\t// Specifies that SDK clients must resolve a dual-stack endpoint for\n\t// services.\n\t//\n\t// AWS_USE_DUALSTACK_ENDPOINT=true\n\tUseDualStackEndpoint endpoints.DualStackEndpointState\n\n\t// Specifies that SDK clients must resolve a FIPS endpoint for\n\t// services.\n\t//\n\t// AWS_USE_FIPS_ENDPOINT=true\n\tUseFIPSEndpoint endpoints.FIPSEndpointState\n}\n\nvar (\n\tcsmEnabledEnvKey = []string{\n\t\t\"AWS_CSM_ENABLED\",\n\t}\n\tcsmHostEnvKey = []string{\n\t\t\"AWS_CSM_HOST\",\n\t}\n\tcsmPortEnvKey = []string{\n\t\t\"AWS_CSM_PORT\",\n\t}\n\tcsmClientIDEnvKey = []string{\n\t\t\"AWS_CSM_CLIENT_ID\",\n\t}\n\tcredAccessEnvKey = []string{\n\t\t\"AWS_ACCESS_KEY_ID\",\n\t\t\"AWS_ACCESS_KEY\",\n\t}\n\tcredSecretEnvKey = []string{\n\t\t\"AWS_SECRET_ACCESS_KEY\",\n\t\t\"AWS_SECRET_KEY\",\n\t}\n\tcredSessionEnvKey = []string{\n\t\t\"AWS_SESSION_TOKEN\",\n\t}\n\n\tenableEndpointDiscoveryEnvKey = []string{\n\t\t\"AWS_ENABLE_ENDPOINT_DISCOVERY\",\n\t}\n\n\tregionEnvKeys = []string{\n\t\t\"AWS_REGION\",\n\t\t\"AWS_DEFAULT_REGION\", // Only read if AWS_SDK_LOAD_CONFIG is also set\n\t}\n\tprofileEnvKeys = []string{\n\t\t\"AWS_PROFILE\",\n\t\t\"AWS_DEFAULT_PROFILE\", // Only read if AWS_SDK_LOAD_CONFIG is also set\n\t}\n\tsharedCredsFileEnvKey = []string{\n\t\t\"AWS_SHARED_CREDENTIALS_FILE\",\n\t}\n\tsharedConfigFileEnvKey = []string{\n\t\t\"AWS_CONFIG_FILE\",\n\t}\n\twebIdentityTokenFilePathEnvKey = []string{\n\t\t\"AWS_WEB_IDENTITY_TOKEN_FILE\",\n\t}\n\troleARNEnvKey = []string{\n\t\t\"AWS_ROLE_ARN\",\n\t}\n\troleSessionNameEnvKey = []string{\n\t\t\"AWS_ROLE_SESSION_NAME\",\n\t}\n\tstsRegionalEndpointKey = []string{\n\t\t\"AWS_STS_REGIONAL_ENDPOINTS\",\n\t}\n\ts3UsEast1RegionalEndpoint = []string{\n\t\t\"AWS_S3_US_EAST_1_REGIONAL_ENDPOINT\",\n\t}\n\ts3UseARNRegionEnvKey = []string{\n\t\t\"AWS_S3_USE_ARN_REGION\",\n\t}\n\tec2IMDSEndpointEnvKey = []string{\n\t\t\"AWS_EC2_METADATA_SERVICE_ENDPOINT\",\n\t}\n\tec2IMDSEndpointModeEnvKey = []string{\n\t\t\"AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE\",\n\t}\n\tec2MetadataV1DisabledEnvKey = []string{\n\t\t\"AWS_EC2_METADATA_V1_DISABLED\",\n\t}\n\tuseCABundleKey = []string{\n\t\t\"AWS_CA_BUNDLE\",\n\t}\n\tuseClientTLSCert = []string{\n\t\t\"AWS_SDK_GO_CLIENT_TLS_CERT\",\n\t}\n\tuseClientTLSKey = []string{\n\t\t\"AWS_SDK_GO_CLIENT_TLS_KEY\",\n\t}\n\tawsUseDualStackEndpoint = []string{\n\t\t\"AWS_USE_DUALSTACK_ENDPOINT\",\n\t}\n\tawsUseFIPSEndpoint = []string{\n\t\t\"AWS_USE_FIPS_ENDPOINT\",\n\t}\n)\n\n// loadEnvConfig retrieves the SDK's environment configuration.\n// See `envConfig` for the values that will be retrieved.\n//\n// If the environment variable `AWS_SDK_LOAD_CONFIG` is set to a truthy value\n// the shared SDK config will be loaded in addition to the SDK's specific\n// configuration values.\nfunc loadEnvConfig() (envConfig, error) {\n\tenableSharedConfig, _ := strconv.ParseBool(os.Getenv(\"AWS_SDK_LOAD_CONFIG\"))\n\treturn envConfigLoad(enableSharedConfig)\n}\n\n// loadEnvSharedConfig retrieves the SDK's environment configuration, and the\n// SDK shared config. See `envConfig` for the values that will be retrieved.\n//\n// Loads the shared configuration in addition to the SDK's specific configuration.\n// This will load the same values as `loadEnvConfig` if the `AWS_SDK_LOAD_CONFIG`\n// environment variable is set.\nfunc loadSharedEnvConfig() (envConfig, error) {\n\treturn envConfigLoad(true)\n}\n\nfunc envConfigLoad(enableSharedConfig bool) (envConfig, error) {\n\tcfg := envConfig{}\n\n\tcfg.EnableSharedConfig = enableSharedConfig\n\n\t// Static environment credentials\n\tvar creds credentials.Value\n\tsetFromEnvVal(&creds.AccessKeyID, credAccessEnvKey)\n\tsetFromEnvVal(&creds.SecretAccessKey, credSecretEnvKey)\n\tsetFromEnvVal(&creds.SessionToken, credSessionEnvKey)\n\tif creds.HasKeys() {\n\t\t// Require logical grouping of credentials\n\t\tcreds.ProviderName = EnvProviderName\n\t\tcfg.Creds = creds\n\t}\n\n\t// Role Metadata\n\tsetFromEnvVal(&cfg.RoleARN, roleARNEnvKey)\n\tsetFromEnvVal(&cfg.RoleSessionName, roleSessionNameEnvKey)\n\n\t// Web identity environment variables\n\tsetFromEnvVal(&cfg.WebIdentityTokenFilePath, webIdentityTokenFilePathEnvKey)\n\n\t// CSM environment variables\n\tsetFromEnvVal(&cfg.csmEnabled, csmEnabledEnvKey)\n\tsetFromEnvVal(&cfg.CSMHost, csmHostEnvKey)\n\tsetFromEnvVal(&cfg.CSMPort, csmPortEnvKey)\n\tsetFromEnvVal(&cfg.CSMClientID, csmClientIDEnvKey)\n\n\tif len(cfg.csmEnabled) != 0 {\n\t\tv, _ := strconv.ParseBool(cfg.csmEnabled)\n\t\tcfg.CSMEnabled = &v\n\t}\n\n\tregionKeys := regionEnvKeys\n\tprofileKeys := profileEnvKeys\n\tif !cfg.EnableSharedConfig {\n\t\tregionKeys = regionKeys[:1]\n\t\tprofileKeys = profileKeys[:1]\n\t}\n\n\tsetFromEnvVal(&cfg.Region, regionKeys)\n\tsetFromEnvVal(&cfg.Profile, profileKeys)\n\n\t// endpoint discovery is in reference to it being enabled.\n\tsetFromEnvVal(&cfg.enableEndpointDiscovery, enableEndpointDiscoveryEnvKey)\n\tif len(cfg.enableEndpointDiscovery) > 0 {\n\t\tcfg.EnableEndpointDiscovery = aws.Bool(cfg.enableEndpointDiscovery != \"false\")\n\t}\n\n\tsetFromEnvVal(&cfg.SharedCredentialsFile, sharedCredsFileEnvKey)\n\tsetFromEnvVal(&cfg.SharedConfigFile, sharedConfigFileEnvKey)\n\n\tif len(cfg.SharedCredentialsFile) == 0 {\n\t\tcfg.SharedCredentialsFile = defaults.SharedCredentialsFilename()\n\t}\n\tif len(cfg.SharedConfigFile) == 0 {\n\t\tcfg.SharedConfigFile = defaults.SharedConfigFilename()\n\t}\n\n\tsetFromEnvVal(&cfg.CustomCABundle, useCABundleKey)\n\tsetFromEnvVal(&cfg.ClientTLSCert, useClientTLSCert)\n\tsetFromEnvVal(&cfg.ClientTLSKey, useClientTLSKey)\n\n\tvar err error\n\t// STS Regional Endpoint variable\n\tfor _, k := range stsRegionalEndpointKey {\n\t\tif v := os.Getenv(k); len(v) != 0 {\n\t\t\tcfg.STSRegionalEndpoint, err = endpoints.GetSTSRegionalEndpoint(v)\n\t\t\tif err != nil {\n\t\t\t\treturn cfg, fmt.Errorf(\"failed to load, %v from env config, %v\", k, err)\n\t\t\t}\n\t\t}\n\t}\n\n\t// S3 Regional Endpoint variable\n\tfor _, k := range s3UsEast1RegionalEndpoint {\n\t\tif v := os.Getenv(k); len(v) != 0 {\n\t\t\tcfg.S3UsEast1RegionalEndpoint, err = endpoints.GetS3UsEast1RegionalEndpoint(v)\n\t\t\tif err != nil {\n\t\t\t\treturn cfg, fmt.Errorf(\"failed to load, %v from env config, %v\", k, err)\n\t\t\t}\n\t\t}\n\t}\n\n\tvar s3UseARNRegion string\n\tsetFromEnvVal(&s3UseARNRegion, s3UseARNRegionEnvKey)\n\tif len(s3UseARNRegion) != 0 {\n\t\tswitch {\n\t\tcase strings.EqualFold(s3UseARNRegion, \"false\"):\n\t\t\tcfg.S3UseARNRegion = false\n\t\tcase strings.EqualFold(s3UseARNRegion, \"true\"):\n\t\t\tcfg.S3UseARNRegion = true\n\t\tdefault:\n\t\t\treturn envConfig{}, fmt.Errorf(\n\t\t\t\t\"invalid value for environment variable, %s=%s, need true or false\",\n\t\t\t\ts3UseARNRegionEnvKey[0], s3UseARNRegion)\n\t\t}\n\t}\n\n\tsetFromEnvVal(&cfg.EC2IMDSEndpoint, ec2IMDSEndpointEnvKey)\n\tif err := setEC2IMDSEndpointMode(&cfg.EC2IMDSEndpointMode, ec2IMDSEndpointModeEnvKey); err != nil {\n\t\treturn envConfig{}, err\n\t}\n\tsetBoolPtrFromEnvVal(&cfg.EC2IMDSv1Disabled, ec2MetadataV1DisabledEnvKey)\n\n\tif err := setUseDualStackEndpointFromEnvVal(&cfg.UseDualStackEndpoint, awsUseDualStackEndpoint); err != nil {\n\t\treturn cfg, err\n\t}\n\n\tif err := setUseFIPSEndpointFromEnvVal(&cfg.UseFIPSEndpoint, awsUseFIPSEndpoint); err != nil {\n\t\treturn cfg, err\n\t}\n\n\treturn cfg, nil\n}\n\nfunc setFromEnvVal(dst *string, keys []string) {\n\tfor _, k := range keys {\n\t\tif v := os.Getenv(k); len(v) != 0 {\n\t\t\t*dst = v\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc setBoolPtrFromEnvVal(dst **bool, keys []string) {\n\tfor _, k := range keys {\n\t\tvalue := os.Getenv(k)\n\t\tif len(value) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch {\n\t\tcase strings.EqualFold(value, \"false\"):\n\t\t\t*dst = new(bool)\n\t\t\t**dst = false\n\t\tcase strings.EqualFold(value, \"true\"):\n\t\t\t*dst = new(bool)\n\t\t\t**dst = true\n\t\t}\n\t}\n}\n\nfunc setEC2IMDSEndpointMode(mode *endpoints.EC2IMDSEndpointModeState, keys []string) error {\n\tfor _, k := range keys {\n\t\tvalue := os.Getenv(k)\n\t\tif len(value) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif err := mode.SetFromString(value); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid value for environment variable, %s=%s, %v\", k, value, err)\n\t\t}\n\t\treturn nil\n\t}\n\treturn nil\n}\n\nfunc setUseDualStackEndpointFromEnvVal(dst *endpoints.DualStackEndpointState, keys []string) error {\n\tfor _, k := range keys {\n\t\tvalue := os.Getenv(k)\n\t\tif len(value) == 0 {\n\t\t\tcontinue // skip if empty\n\t\t}\n\n\t\tswitch {\n\t\tcase strings.EqualFold(value, \"true\"):\n\t\t\t*dst = endpoints.DualStackEndpointStateEnabled\n\t\tcase strings.EqualFold(value, \"false\"):\n\t\t\t*dst = endpoints.DualStackEndpointStateDisabled\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\n\t\t\t\t\"invalid value for environment variable, %s=%s, need true, false\",\n\t\t\t\tk, value)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc setUseFIPSEndpointFromEnvVal(dst *endpoints.FIPSEndpointState, keys []string) error {\n\tfor _, k := range keys {\n\t\tvalue := os.Getenv(k)\n\t\tif len(value) == 0 {\n\t\t\tcontinue // skip if empty\n\t\t}\n\n\t\tswitch {\n\t\tcase strings.EqualFold(value, \"true\"):\n\t\t\t*dst = endpoints.FIPSEndpointStateEnabled\n\t\tcase strings.EqualFold(value, \"false\"):\n\t\t\t*dst = endpoints.FIPSEndpointStateDisabled\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\n\t\t\t\t\"invalid value for environment variable, %s=%s, need true, false\",\n\t\t\t\tk, value)\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/session/session.go",
    "content": "package session\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/client\"\n\t\"github.com/aws/aws-sdk-go/aws/corehandlers\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/csm\"\n\t\"github.com/aws/aws-sdk-go/aws/defaults\"\n\t\"github.com/aws/aws-sdk-go/aws/endpoints\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\nconst (\n\t// ErrCodeSharedConfig represents an error that occurs in the shared\n\t// configuration logic\n\tErrCodeSharedConfig = \"SharedConfigErr\"\n\n\t// ErrCodeLoadCustomCABundle error code for unable to load custom CA bundle.\n\tErrCodeLoadCustomCABundle = \"LoadCustomCABundleError\"\n\n\t// ErrCodeLoadClientTLSCert error code for unable to load client TLS\n\t// certificate or key\n\tErrCodeLoadClientTLSCert = \"LoadClientTLSCertError\"\n)\n\n// ErrSharedConfigSourceCollision will be returned if a section contains both\n// source_profile and credential_source\nvar ErrSharedConfigSourceCollision = awserr.New(ErrCodeSharedConfig, \"only one credential type may be specified per profile: source profile, credential source, credential process, web identity token\", nil)\n\n// ErrSharedConfigECSContainerEnvVarEmpty will be returned if the environment\n// variables are empty and Environment was set as the credential source\nvar ErrSharedConfigECSContainerEnvVarEmpty = awserr.New(ErrCodeSharedConfig, \"EcsContainer was specified as the credential_source, but 'AWS_CONTAINER_CREDENTIALS_RELATIVE_URI' was not set\", nil)\n\n// ErrSharedConfigInvalidCredSource will be returned if an invalid credential source was provided\nvar ErrSharedConfigInvalidCredSource = awserr.New(ErrCodeSharedConfig, \"credential source values must be EcsContainer, Ec2InstanceMetadata, or Environment\", nil)\n\n// A Session provides a central location to create service clients from and\n// store configurations and request handlers for those services.\n//\n// Sessions are safe to create service clients concurrently, but it is not safe\n// to mutate the Session concurrently.\n//\n// The Session satisfies the service client's client.ConfigProvider.\ntype Session struct {\n\tConfig   *aws.Config\n\tHandlers request.Handlers\n\n\toptions Options\n}\n\n// New creates a new instance of the handlers merging in the provided configs\n// on top of the SDK's default configurations. Once the Session is created it\n// can be mutated to modify the Config or Handlers. The Session is safe to be\n// read concurrently, but it should not be written to concurrently.\n//\n// If the AWS_SDK_LOAD_CONFIG environment is set to a truthy value, the New\n// method could now encounter an error when loading the configuration. When\n// The environment variable is set, and an error occurs, New will return a\n// session that will fail all requests reporting the error that occurred while\n// loading the session. Use NewSession to get the error when creating the\n// session.\n//\n// If the AWS_SDK_LOAD_CONFIG environment variable is set to a truthy value\n// the shared config file (~/.aws/config) will also be loaded, in addition to\n// the shared credentials file (~/.aws/credentials). Values set in both the\n// shared config, and shared credentials will be taken from the shared\n// credentials file.\n//\n// Deprecated: Use NewSession functions to create sessions instead. NewSession\n// has the same functionality as New except an error can be returned when the\n// func is called instead of waiting to receive an error until a request is made.\nfunc New(cfgs ...*aws.Config) *Session {\n\t// load initial config from environment\n\tenvCfg, envErr := loadEnvConfig()\n\n\tif envCfg.EnableSharedConfig {\n\t\tvar cfg aws.Config\n\t\tcfg.MergeIn(cfgs...)\n\t\ts, err := NewSessionWithOptions(Options{\n\t\t\tConfig:            cfg,\n\t\t\tSharedConfigState: SharedConfigEnable,\n\t\t})\n\t\tif err != nil {\n\t\t\t// Old session.New expected all errors to be discovered when\n\t\t\t// a request is made, and would report the errors then. This\n\t\t\t// needs to be replicated if an error occurs while creating\n\t\t\t// the session.\n\t\t\tmsg := \"failed to create session with AWS_SDK_LOAD_CONFIG enabled. \" +\n\t\t\t\t\"Use session.NewSession to handle errors occurring during session creation.\"\n\n\t\t\t// Session creation failed, need to report the error and prevent\n\t\t\t// any requests from succeeding.\n\t\t\ts = &Session{Config: defaults.Config()}\n\t\t\ts.logDeprecatedNewSessionError(msg, err, cfgs)\n\t\t}\n\n\t\treturn s\n\t}\n\n\ts := deprecatedNewSession(envCfg, cfgs...)\n\tif envErr != nil {\n\t\tmsg := \"failed to load env config\"\n\t\ts.logDeprecatedNewSessionError(msg, envErr, cfgs)\n\t}\n\n\tif csmCfg, err := loadCSMConfig(envCfg, []string{}); err != nil {\n\t\tif l := s.Config.Logger; l != nil {\n\t\t\tl.Log(fmt.Sprintf(\"ERROR: failed to load CSM configuration, %v\", err))\n\t\t}\n\t} else if csmCfg.Enabled {\n\t\terr := enableCSM(&s.Handlers, csmCfg, s.Config.Logger)\n\t\tif err != nil {\n\t\t\tmsg := \"failed to enable CSM\"\n\t\t\ts.logDeprecatedNewSessionError(msg, err, cfgs)\n\t\t}\n\t}\n\n\treturn s\n}\n\n// NewSession returns a new Session created from SDK defaults, config files,\n// environment, and user provided config files. Once the Session is created\n// it can be mutated to modify the Config or Handlers. The Session is safe to\n// be read concurrently, but it should not be written to concurrently.\n//\n// If the AWS_SDK_LOAD_CONFIG environment variable is set to a truthy value\n// the shared config file (~/.aws/config) will also be loaded in addition to\n// the shared credentials file (~/.aws/credentials). Values set in both the\n// shared config, and shared credentials will be taken from the shared\n// credentials file. Enabling the Shared Config will also allow the Session\n// to be built with retrieving credentials with AssumeRole set in the config.\n//\n// See the NewSessionWithOptions func for information on how to override or\n// control through code how the Session will be created, such as specifying the\n// config profile, and controlling if shared config is enabled or not.\nfunc NewSession(cfgs ...*aws.Config) (*Session, error) {\n\topts := Options{}\n\topts.Config.MergeIn(cfgs...)\n\n\treturn NewSessionWithOptions(opts)\n}\n\n// SharedConfigState provides the ability to optionally override the state\n// of the session's creation based on the shared config being enabled or\n// disabled.\ntype SharedConfigState int\n\nconst (\n\t// SharedConfigStateFromEnv does not override any state of the\n\t// AWS_SDK_LOAD_CONFIG env var. It is the default value of the\n\t// SharedConfigState type.\n\tSharedConfigStateFromEnv SharedConfigState = iota\n\n\t// SharedConfigDisable overrides the AWS_SDK_LOAD_CONFIG env var value\n\t// and disables the shared config functionality.\n\tSharedConfigDisable\n\n\t// SharedConfigEnable overrides the AWS_SDK_LOAD_CONFIG env var value\n\t// and enables the shared config functionality.\n\tSharedConfigEnable\n)\n\n// Options provides the means to control how a Session is created and what\n// configuration values will be loaded.\ntype Options struct {\n\t// Provides config values for the SDK to use when creating service clients\n\t// and making API requests to services. Any value set in with this field\n\t// will override the associated value provided by the SDK defaults,\n\t// environment or config files where relevant.\n\t//\n\t// If not set, configuration values from from SDK defaults, environment,\n\t// config will be used.\n\tConfig aws.Config\n\n\t// Overrides the config profile the Session should be created from. If not\n\t// set the value of the environment variable will be loaded (AWS_PROFILE,\n\t// or AWS_DEFAULT_PROFILE if the Shared Config is enabled).\n\t//\n\t// If not set and environment variables are not set the \"default\"\n\t// (DefaultSharedConfigProfile) will be used as the profile to load the\n\t// session config from.\n\tProfile string\n\n\t// Instructs how the Session will be created based on the AWS_SDK_LOAD_CONFIG\n\t// environment variable. By default a Session will be created using the\n\t// value provided by the AWS_SDK_LOAD_CONFIG environment variable.\n\t//\n\t// Setting this value to SharedConfigEnable or SharedConfigDisable\n\t// will allow you to override the AWS_SDK_LOAD_CONFIG environment variable\n\t// and enable or disable the shared config functionality.\n\tSharedConfigState SharedConfigState\n\n\t// Ordered list of files the session will load configuration from.\n\t// It will override environment variable AWS_SHARED_CREDENTIALS_FILE, AWS_CONFIG_FILE.\n\tSharedConfigFiles []string\n\n\t// When the SDK's shared config is configured to assume a role with MFA\n\t// this option is required in order to provide the mechanism that will\n\t// retrieve the MFA token. There is no default value for this field. If\n\t// it is not set an error will be returned when creating the session.\n\t//\n\t// This token provider will be called when ever the assumed role's\n\t// credentials need to be refreshed. Within the context of service clients\n\t// all sharing the same session the SDK will ensure calls to the token\n\t// provider are atomic. When sharing a token provider across multiple\n\t// sessions additional synchronization logic is needed to ensure the\n\t// token providers do not introduce race conditions. It is recommend to\n\t// share the session where possible.\n\t//\n\t// stscreds.StdinTokenProvider is a basic implementation that will prompt\n\t// from stdin for the MFA token code.\n\t//\n\t// This field is only used if the shared configuration is enabled, and\n\t// the config enables assume role with MFA via the mfa_serial field.\n\tAssumeRoleTokenProvider func() (string, error)\n\n\t// When the SDK's shared config is configured to assume a role this option\n\t// may be provided to set the expiry duration of the STS credentials.\n\t// Defaults to 15 minutes if not set as documented in the\n\t// stscreds.AssumeRoleProvider.\n\tAssumeRoleDuration time.Duration\n\n\t// Reader for a custom Credentials Authority (CA) bundle in PEM format that\n\t// the SDK will use instead of the default system's root CA bundle. Use this\n\t// only if you want to replace the CA bundle the SDK uses for TLS requests.\n\t//\n\t// HTTP Client's Transport concrete implementation must be a http.Transport\n\t// or creating the session will fail.\n\t//\n\t// If the Transport's TLS config is set this option will cause the SDK\n\t// to overwrite the Transport's TLS config's  RootCAs value. If the CA\n\t// bundle reader contains multiple certificates all of them will be loaded.\n\t//\n\t// Can also be specified via the environment variable:\n\t//\n\t//  AWS_CA_BUNDLE=$HOME/ca_bundle\n\t//\n\t// Can also be specified via the shared config field:\n\t//\n\t//  ca_bundle = $HOME/ca_bundle\n\tCustomCABundle io.Reader\n\n\t// Reader for the TLC client certificate that should be used by the SDK's\n\t// HTTP transport when making requests. The certificate must be paired with\n\t// a TLS client key file. Will be ignored if both are not provided.\n\t//\n\t// HTTP Client's Transport concrete implementation must be a http.Transport\n\t// or creating the session will fail.\n\t//\n\t// Can also be specified via the environment variable:\n\t//\n\t//  AWS_SDK_GO_CLIENT_TLS_CERT=$HOME/my_client_cert\n\tClientTLSCert io.Reader\n\n\t// Reader for the TLC client key that should be used by the SDK's HTTP\n\t// transport when making requests. The key must be paired with a TLS client\n\t// certificate file. Will be ignored if both are not provided.\n\t//\n\t// HTTP Client's Transport concrete implementation must be a http.Transport\n\t// or creating the session will fail.\n\t//\n\t// Can also be specified via the environment variable:\n\t//\n\t//  AWS_SDK_GO_CLIENT_TLS_KEY=$HOME/my_client_key\n\tClientTLSKey io.Reader\n\n\t// The handlers that the session and all API clients will be created with.\n\t// This must be a complete set of handlers. Use the defaults.Handlers()\n\t// function to initialize this value before changing the handlers to be\n\t// used by the SDK.\n\tHandlers request.Handlers\n\n\t// Allows specifying a custom endpoint to be used by the EC2 IMDS client\n\t// when making requests to the EC2 IMDS API. The endpoint value should\n\t// include the URI scheme. If the scheme is not present it will be defaulted to http.\n\t//\n\t// If unset, will the EC2 IMDS client will use its default endpoint.\n\t//\n\t// Can also be specified via the environment variable,\n\t// AWS_EC2_METADATA_SERVICE_ENDPOINT.\n\t//\n\t//   AWS_EC2_METADATA_SERVICE_ENDPOINT=http://169.254.169.254\n\t//\n\t// If using an URL with an IPv6 address literal, the IPv6 address\n\t// component must be enclosed in square brackets.\n\t//\n\t//   AWS_EC2_METADATA_SERVICE_ENDPOINT=http://[::1]\n\tEC2IMDSEndpoint string\n\n\t// Specifies the EC2 Instance Metadata Service default endpoint selection mode (IPv4 or IPv6)\n\t//\n\t// AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE=IPv6\n\tEC2IMDSEndpointMode endpoints.EC2IMDSEndpointModeState\n\n\t// Specifies options for creating credential providers.\n\t// These are only used if the aws.Config does not already\n\t// include credentials.\n\tCredentialsProviderOptions *CredentialsProviderOptions\n}\n\n// NewSessionWithOptions returns a new Session created from SDK defaults, config files,\n// environment, and user provided config files. This func uses the Options\n// values to configure how the Session is created.\n//\n// If the AWS_SDK_LOAD_CONFIG environment variable is set to a truthy value\n// the shared config file (~/.aws/config) will also be loaded in addition to\n// the shared credentials file (~/.aws/credentials). Values set in both the\n// shared config, and shared credentials will be taken from the shared\n// credentials file. Enabling the Shared Config will also allow the Session\n// to be built with retrieving credentials with AssumeRole set in the config.\n//\n//\t// Equivalent to session.New\n//\tsess := session.Must(session.NewSessionWithOptions(session.Options{}))\n//\n//\t// Specify profile to load for the session's config\n//\tsess := session.Must(session.NewSessionWithOptions(session.Options{\n//\t     Profile: \"profile_name\",\n//\t}))\n//\n//\t// Specify profile for config and region for requests\n//\tsess := session.Must(session.NewSessionWithOptions(session.Options{\n//\t     Config: aws.Config{Region: aws.String(\"us-east-1\")},\n//\t     Profile: \"profile_name\",\n//\t}))\n//\n//\t// Force enable Shared Config support\n//\tsess := session.Must(session.NewSessionWithOptions(session.Options{\n//\t    SharedConfigState: session.SharedConfigEnable,\n//\t}))\nfunc NewSessionWithOptions(opts Options) (*Session, error) {\n\tvar envCfg envConfig\n\tvar err error\n\tif opts.SharedConfigState == SharedConfigEnable {\n\t\tenvCfg, err = loadSharedEnvConfig()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to load shared config, %v\", err)\n\t\t}\n\t} else {\n\t\tenvCfg, err = loadEnvConfig()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to load environment config, %v\", err)\n\t\t}\n\t}\n\n\tif len(opts.Profile) != 0 {\n\t\tenvCfg.Profile = opts.Profile\n\t}\n\n\tswitch opts.SharedConfigState {\n\tcase SharedConfigDisable:\n\t\tenvCfg.EnableSharedConfig = false\n\tcase SharedConfigEnable:\n\t\tenvCfg.EnableSharedConfig = true\n\t}\n\n\treturn newSession(opts, envCfg, &opts.Config)\n}\n\n// Must is a helper function to ensure the Session is valid and there was no\n// error when calling a NewSession function.\n//\n// This helper is intended to be used in variable initialization to load the\n// Session and configuration at startup. Such as:\n//\n//\tvar sess = session.Must(session.NewSession())\nfunc Must(sess *Session, err error) *Session {\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn sess\n}\n\n// Wraps the endpoint resolver with a resolver that will return a custom\n// endpoint for EC2 IMDS.\nfunc wrapEC2IMDSEndpoint(resolver endpoints.Resolver, endpoint string, mode endpoints.EC2IMDSEndpointModeState) endpoints.Resolver {\n\treturn endpoints.ResolverFunc(\n\t\tfunc(service, region string, opts ...func(*endpoints.Options)) (\n\t\t\tendpoints.ResolvedEndpoint, error,\n\t\t) {\n\t\t\tif service == ec2MetadataServiceID && len(endpoint) > 0 {\n\t\t\t\treturn endpoints.ResolvedEndpoint{\n\t\t\t\t\tURL:           endpoint,\n\t\t\t\t\tSigningName:   ec2MetadataServiceID,\n\t\t\t\t\tSigningRegion: region,\n\t\t\t\t}, nil\n\t\t\t} else if service == ec2MetadataServiceID {\n\t\t\t\topts = append(opts, func(o *endpoints.Options) {\n\t\t\t\t\to.EC2MetadataEndpointMode = mode\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn resolver.EndpointFor(service, region, opts...)\n\t\t})\n}\n\nfunc deprecatedNewSession(envCfg envConfig, cfgs ...*aws.Config) *Session {\n\tcfg := defaults.Config()\n\thandlers := defaults.Handlers()\n\n\t// Apply the passed in configs so the configuration can be applied to the\n\t// default credential chain\n\tcfg.MergeIn(cfgs...)\n\tif cfg.EndpointResolver == nil {\n\t\t// An endpoint resolver is required for a session to be able to provide\n\t\t// endpoints for service client configurations.\n\t\tcfg.EndpointResolver = endpoints.DefaultResolver()\n\t}\n\n\tif !(len(envCfg.EC2IMDSEndpoint) == 0 && envCfg.EC2IMDSEndpointMode == endpoints.EC2IMDSEndpointModeStateUnset) {\n\t\tcfg.EndpointResolver = wrapEC2IMDSEndpoint(cfg.EndpointResolver, envCfg.EC2IMDSEndpoint, envCfg.EC2IMDSEndpointMode)\n\t}\n\n\tcfg.Credentials = defaults.CredChain(cfg, handlers)\n\n\t// Reapply any passed in configs to override credentials if set\n\tcfg.MergeIn(cfgs...)\n\n\ts := &Session{\n\t\tConfig:   cfg,\n\t\tHandlers: handlers,\n\t\toptions: Options{\n\t\t\tEC2IMDSEndpoint: envCfg.EC2IMDSEndpoint,\n\t\t},\n\t}\n\n\tinitHandlers(s)\n\treturn s\n}\n\nfunc enableCSM(handlers *request.Handlers, cfg csmConfig, logger aws.Logger) error {\n\tif logger != nil {\n\t\tlogger.Log(\"Enabling CSM\")\n\t}\n\n\tr, err := csm.Start(cfg.ClientID, csm.AddressWithDefaults(cfg.Host, cfg.Port))\n\tif err != nil {\n\t\treturn err\n\t}\n\tr.InjectHandlers(handlers)\n\n\treturn nil\n}\n\nfunc newSession(opts Options, envCfg envConfig, cfgs ...*aws.Config) (*Session, error) {\n\tcfg := defaults.Config()\n\n\thandlers := opts.Handlers\n\tif handlers.IsEmpty() {\n\t\thandlers = defaults.Handlers()\n\t}\n\n\t// Get a merged version of the user provided config to determine if\n\t// credentials were.\n\tuserCfg := &aws.Config{}\n\tuserCfg.MergeIn(cfgs...)\n\tcfg.MergeIn(userCfg)\n\n\t// Ordered config files will be loaded in with later files overwriting\n\t// previous config file values.\n\tvar cfgFiles []string\n\tif opts.SharedConfigFiles != nil {\n\t\tcfgFiles = opts.SharedConfigFiles\n\t} else {\n\t\tcfgFiles = []string{envCfg.SharedConfigFile, envCfg.SharedCredentialsFile}\n\t\tif !envCfg.EnableSharedConfig {\n\t\t\t// The shared config file (~/.aws/config) is only loaded if instructed\n\t\t\t// to load via the envConfig.EnableSharedConfig (AWS_SDK_LOAD_CONFIG).\n\t\t\tcfgFiles = cfgFiles[1:]\n\t\t}\n\t}\n\n\t// Load additional config from file(s)\n\tsharedCfg, err := loadSharedConfig(envCfg.Profile, cfgFiles, envCfg.EnableSharedConfig)\n\tif err != nil {\n\t\tif len(envCfg.Profile) == 0 && !envCfg.EnableSharedConfig && (envCfg.Creds.HasKeys() || userCfg.Credentials != nil) {\n\t\t\t// Special case where the user has not explicitly specified an AWS_PROFILE,\n\t\t\t// or session.Options.profile, shared config is not enabled, and the\n\t\t\t// environment has credentials, allow the shared config file to fail to\n\t\t\t// load since the user has already provided credentials, and nothing else\n\t\t\t// is required to be read file. Github(aws/aws-sdk-go#2455)\n\t\t} else if _, ok := err.(SharedConfigProfileNotExistsError); !ok {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif err := mergeConfigSrcs(cfg, userCfg, envCfg, sharedCfg, handlers, opts); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := setTLSOptions(&opts, cfg, envCfg, sharedCfg); err != nil {\n\t\treturn nil, err\n\t}\n\n\ts := &Session{\n\t\tConfig:   cfg,\n\t\tHandlers: handlers,\n\t\toptions:  opts,\n\t}\n\n\tinitHandlers(s)\n\n\tif csmCfg, err := loadCSMConfig(envCfg, cfgFiles); err != nil {\n\t\tif l := s.Config.Logger; l != nil {\n\t\t\tl.Log(fmt.Sprintf(\"ERROR: failed to load CSM configuration, %v\", err))\n\t\t}\n\t} else if csmCfg.Enabled {\n\t\terr = enableCSM(&s.Handlers, csmCfg, s.Config.Logger)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\ntype csmConfig struct {\n\tEnabled  bool\n\tHost     string\n\tPort     string\n\tClientID string\n}\n\nvar csmProfileName = \"aws_csm\"\n\nfunc loadCSMConfig(envCfg envConfig, cfgFiles []string) (csmConfig, error) {\n\tif envCfg.CSMEnabled != nil {\n\t\tif *envCfg.CSMEnabled {\n\t\t\treturn csmConfig{\n\t\t\t\tEnabled:  true,\n\t\t\t\tClientID: envCfg.CSMClientID,\n\t\t\t\tHost:     envCfg.CSMHost,\n\t\t\t\tPort:     envCfg.CSMPort,\n\t\t\t}, nil\n\t\t}\n\t\treturn csmConfig{}, nil\n\t}\n\n\tsharedCfg, err := loadSharedConfig(csmProfileName, cfgFiles, false)\n\tif err != nil {\n\t\tif _, ok := err.(SharedConfigProfileNotExistsError); !ok {\n\t\t\treturn csmConfig{}, err\n\t\t}\n\t}\n\tif sharedCfg.CSMEnabled != nil && *sharedCfg.CSMEnabled == true {\n\t\treturn csmConfig{\n\t\t\tEnabled:  true,\n\t\t\tClientID: sharedCfg.CSMClientID,\n\t\t\tHost:     sharedCfg.CSMHost,\n\t\t\tPort:     sharedCfg.CSMPort,\n\t\t}, nil\n\t}\n\n\treturn csmConfig{}, nil\n}\n\nfunc setTLSOptions(opts *Options, cfg *aws.Config, envCfg envConfig, sharedCfg sharedConfig) error {\n\t// CA Bundle can be specified in both environment variable shared config file.\n\tvar caBundleFilename = envCfg.CustomCABundle\n\tif len(caBundleFilename) == 0 {\n\t\tcaBundleFilename = sharedCfg.CustomCABundle\n\t}\n\n\t// Only use environment value if session option is not provided.\n\tcustomTLSOptions := map[string]struct {\n\t\tfilename string\n\t\tfield    *io.Reader\n\t\terrCode  string\n\t}{\n\t\t\"custom CA bundle PEM\":   {filename: caBundleFilename, field: &opts.CustomCABundle, errCode: ErrCodeLoadCustomCABundle},\n\t\t\"custom client TLS cert\": {filename: envCfg.ClientTLSCert, field: &opts.ClientTLSCert, errCode: ErrCodeLoadClientTLSCert},\n\t\t\"custom client TLS key\":  {filename: envCfg.ClientTLSKey, field: &opts.ClientTLSKey, errCode: ErrCodeLoadClientTLSCert},\n\t}\n\tfor name, v := range customTLSOptions {\n\t\tif len(v.filename) != 0 && *v.field == nil {\n\t\t\tf, err := os.Open(v.filename)\n\t\t\tif err != nil {\n\t\t\t\treturn awserr.New(v.errCode, fmt.Sprintf(\"failed to open %s file\", name), err)\n\t\t\t}\n\t\t\tdefer f.Close()\n\t\t\t*v.field = f\n\t\t}\n\t}\n\n\t// Setup HTTP client with custom cert bundle if enabled\n\tif opts.CustomCABundle != nil {\n\t\tif err := loadCustomCABundle(cfg.HTTPClient, opts.CustomCABundle); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Setup HTTP client TLS certificate and key for client TLS authentication.\n\tif opts.ClientTLSCert != nil && opts.ClientTLSKey != nil {\n\t\tif err := loadClientTLSCert(cfg.HTTPClient, opts.ClientTLSCert, opts.ClientTLSKey); err != nil {\n\t\t\treturn err\n\t\t}\n\t} else if opts.ClientTLSCert == nil && opts.ClientTLSKey == nil {\n\t\t// Do nothing if neither values are available.\n\n\t} else {\n\t\treturn awserr.New(ErrCodeLoadClientTLSCert,\n\t\t\tfmt.Sprintf(\"client TLS cert(%t) and key(%t) must both be provided\",\n\t\t\t\topts.ClientTLSCert != nil, opts.ClientTLSKey != nil), nil)\n\t}\n\n\treturn nil\n}\n\nfunc getHTTPTransport(client *http.Client) (*http.Transport, error) {\n\tvar t *http.Transport\n\tswitch v := client.Transport.(type) {\n\tcase *http.Transport:\n\t\tt = v\n\tdefault:\n\t\tif client.Transport != nil {\n\t\t\treturn nil, fmt.Errorf(\"unsupported transport, %T\", client.Transport)\n\t\t}\n\t}\n\tif t == nil {\n\t\t// Nil transport implies `http.DefaultTransport` should be used. Since\n\t\t// the SDK cannot modify, nor copy the `DefaultTransport` specifying\n\t\t// the values the next closest behavior.\n\t\tt = getCustomTransport()\n\t}\n\n\treturn t, nil\n}\n\nfunc loadCustomCABundle(client *http.Client, bundle io.Reader) error {\n\tt, err := getHTTPTransport(client)\n\tif err != nil {\n\t\treturn awserr.New(ErrCodeLoadCustomCABundle,\n\t\t\t\"unable to load custom CA bundle, HTTPClient's transport unsupported type\", err)\n\t}\n\n\tp, err := loadCertPool(bundle)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif t.TLSClientConfig == nil {\n\t\tt.TLSClientConfig = &tls.Config{}\n\t}\n\tt.TLSClientConfig.RootCAs = p\n\n\tclient.Transport = t\n\n\treturn nil\n}\n\nfunc loadCertPool(r io.Reader) (*x509.CertPool, error) {\n\tb, err := ioutil.ReadAll(r)\n\tif err != nil {\n\t\treturn nil, awserr.New(ErrCodeLoadCustomCABundle,\n\t\t\t\"failed to read custom CA bundle PEM file\", err)\n\t}\n\n\tp := x509.NewCertPool()\n\tif !p.AppendCertsFromPEM(b) {\n\t\treturn nil, awserr.New(ErrCodeLoadCustomCABundle,\n\t\t\t\"failed to load custom CA bundle PEM file\", err)\n\t}\n\n\treturn p, nil\n}\n\nfunc loadClientTLSCert(client *http.Client, certFile, keyFile io.Reader) error {\n\tt, err := getHTTPTransport(client)\n\tif err != nil {\n\t\treturn awserr.New(ErrCodeLoadClientTLSCert,\n\t\t\t\"unable to get usable HTTP transport from client\", err)\n\t}\n\n\tcert, err := ioutil.ReadAll(certFile)\n\tif err != nil {\n\t\treturn awserr.New(ErrCodeLoadClientTLSCert,\n\t\t\t\"unable to get read client TLS cert file\", err)\n\t}\n\n\tkey, err := ioutil.ReadAll(keyFile)\n\tif err != nil {\n\t\treturn awserr.New(ErrCodeLoadClientTLSCert,\n\t\t\t\"unable to get read client TLS key file\", err)\n\t}\n\n\tclientCert, err := tls.X509KeyPair(cert, key)\n\tif err != nil {\n\t\treturn awserr.New(ErrCodeLoadClientTLSCert,\n\t\t\t\"unable to load x509 key pair from client cert\", err)\n\t}\n\n\ttlsCfg := t.TLSClientConfig\n\tif tlsCfg == nil {\n\t\ttlsCfg = &tls.Config{}\n\t}\n\n\ttlsCfg.Certificates = append(tlsCfg.Certificates, clientCert)\n\n\tt.TLSClientConfig = tlsCfg\n\tclient.Transport = t\n\n\treturn nil\n}\n\nfunc mergeConfigSrcs(cfg, userCfg *aws.Config,\n\tenvCfg envConfig, sharedCfg sharedConfig,\n\thandlers request.Handlers,\n\tsessOpts Options,\n) error {\n\n\t// Region if not already set by user\n\tif len(aws.StringValue(cfg.Region)) == 0 {\n\t\tif len(envCfg.Region) > 0 {\n\t\t\tcfg.WithRegion(envCfg.Region)\n\t\t} else if envCfg.EnableSharedConfig && len(sharedCfg.Region) > 0 {\n\t\t\tcfg.WithRegion(sharedCfg.Region)\n\t\t}\n\t}\n\n\tif cfg.EnableEndpointDiscovery == nil {\n\t\tif envCfg.EnableEndpointDiscovery != nil {\n\t\t\tcfg.WithEndpointDiscovery(*envCfg.EnableEndpointDiscovery)\n\t\t} else if envCfg.EnableSharedConfig && sharedCfg.EnableEndpointDiscovery != nil {\n\t\t\tcfg.WithEndpointDiscovery(*sharedCfg.EnableEndpointDiscovery)\n\t\t}\n\t}\n\n\t// Regional Endpoint flag for STS endpoint resolving\n\tmergeSTSRegionalEndpointConfig(cfg, []endpoints.STSRegionalEndpoint{\n\t\tuserCfg.STSRegionalEndpoint,\n\t\tenvCfg.STSRegionalEndpoint,\n\t\tsharedCfg.STSRegionalEndpoint,\n\t\tendpoints.LegacySTSEndpoint,\n\t})\n\n\t// Regional Endpoint flag for S3 endpoint resolving\n\tmergeS3UsEast1RegionalEndpointConfig(cfg, []endpoints.S3UsEast1RegionalEndpoint{\n\t\tuserCfg.S3UsEast1RegionalEndpoint,\n\t\tenvCfg.S3UsEast1RegionalEndpoint,\n\t\tsharedCfg.S3UsEast1RegionalEndpoint,\n\t\tendpoints.LegacyS3UsEast1Endpoint,\n\t})\n\n\tvar ec2IMDSEndpoint string\n\tfor _, v := range []string{\n\t\tsessOpts.EC2IMDSEndpoint,\n\t\tenvCfg.EC2IMDSEndpoint,\n\t\tsharedCfg.EC2IMDSEndpoint,\n\t} {\n\t\tif len(v) != 0 {\n\t\t\tec2IMDSEndpoint = v\n\t\t\tbreak\n\t\t}\n\t}\n\n\tvar endpointMode endpoints.EC2IMDSEndpointModeState\n\tfor _, v := range []endpoints.EC2IMDSEndpointModeState{\n\t\tsessOpts.EC2IMDSEndpointMode,\n\t\tenvCfg.EC2IMDSEndpointMode,\n\t\tsharedCfg.EC2IMDSEndpointMode,\n\t} {\n\t\tif v != endpoints.EC2IMDSEndpointModeStateUnset {\n\t\t\tendpointMode = v\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif len(ec2IMDSEndpoint) != 0 || endpointMode != endpoints.EC2IMDSEndpointModeStateUnset {\n\t\tcfg.EndpointResolver = wrapEC2IMDSEndpoint(cfg.EndpointResolver, ec2IMDSEndpoint, endpointMode)\n\t}\n\n\tcfg.EC2MetadataEnableFallback = userCfg.EC2MetadataEnableFallback\n\tif cfg.EC2MetadataEnableFallback == nil && envCfg.EC2IMDSv1Disabled != nil {\n\t\tcfg.EC2MetadataEnableFallback = aws.Bool(!*envCfg.EC2IMDSv1Disabled)\n\t}\n\tif cfg.EC2MetadataEnableFallback == nil && sharedCfg.EC2IMDSv1Disabled != nil {\n\t\tcfg.EC2MetadataEnableFallback = aws.Bool(!*sharedCfg.EC2IMDSv1Disabled)\n\t}\n\n\tcfg.S3UseARNRegion = userCfg.S3UseARNRegion\n\tif cfg.S3UseARNRegion == nil {\n\t\tcfg.S3UseARNRegion = &envCfg.S3UseARNRegion\n\t}\n\tif cfg.S3UseARNRegion == nil {\n\t\tcfg.S3UseARNRegion = &sharedCfg.S3UseARNRegion\n\t}\n\n\tfor _, v := range []endpoints.DualStackEndpointState{userCfg.UseDualStackEndpoint, envCfg.UseDualStackEndpoint, sharedCfg.UseDualStackEndpoint} {\n\t\tif v != endpoints.DualStackEndpointStateUnset {\n\t\t\tcfg.UseDualStackEndpoint = v\n\t\t\tbreak\n\t\t}\n\t}\n\n\tfor _, v := range []endpoints.FIPSEndpointState{userCfg.UseFIPSEndpoint, envCfg.UseFIPSEndpoint, sharedCfg.UseFIPSEndpoint} {\n\t\tif v != endpoints.FIPSEndpointStateUnset {\n\t\t\tcfg.UseFIPSEndpoint = v\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Configure credentials if not already set by the user when creating the Session.\n\t// Credentials are resolved last such that all _resolved_ config values are propagated to credential providers.\n\t// ticket: P83606045\n\tif cfg.Credentials == credentials.AnonymousCredentials && userCfg.Credentials == nil {\n\t\tcreds, err := resolveCredentials(cfg, envCfg, sharedCfg, handlers, sessOpts)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcfg.Credentials = creds\n\t}\n\n\treturn nil\n}\n\nfunc mergeSTSRegionalEndpointConfig(cfg *aws.Config, values []endpoints.STSRegionalEndpoint) {\n\tfor _, v := range values {\n\t\tif v != endpoints.UnsetSTSEndpoint {\n\t\t\tcfg.STSRegionalEndpoint = v\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc mergeS3UsEast1RegionalEndpointConfig(cfg *aws.Config, values []endpoints.S3UsEast1RegionalEndpoint) {\n\tfor _, v := range values {\n\t\tif v != endpoints.UnsetS3UsEast1Endpoint {\n\t\t\tcfg.S3UsEast1RegionalEndpoint = v\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc initHandlers(s *Session) {\n\t// Add the Validate parameter handler if it is not disabled.\n\ts.Handlers.Validate.Remove(corehandlers.ValidateParametersHandler)\n\tif !aws.BoolValue(s.Config.DisableParamValidation) {\n\t\ts.Handlers.Validate.PushBackNamed(corehandlers.ValidateParametersHandler)\n\t}\n}\n\n// Copy creates and returns a copy of the current Session, copying the config\n// and handlers. If any additional configs are provided they will be merged\n// on top of the Session's copied config.\n//\n//\t// Create a copy of the current Session, configured for the us-west-2 region.\n//\tsess.Copy(&aws.Config{Region: aws.String(\"us-west-2\")})\nfunc (s *Session) Copy(cfgs ...*aws.Config) *Session {\n\tnewSession := &Session{\n\t\tConfig:   s.Config.Copy(cfgs...),\n\t\tHandlers: s.Handlers.Copy(),\n\t\toptions:  s.options,\n\t}\n\n\tinitHandlers(newSession)\n\n\treturn newSession\n}\n\n// ClientConfig satisfies the client.ConfigProvider interface and is used to\n// configure the service client instances. Passing the Session to the service\n// client's constructor (New) will use this method to configure the client.\nfunc (s *Session) ClientConfig(service string, cfgs ...*aws.Config) client.Config {\n\ts = s.Copy(cfgs...)\n\n\tresolvedRegion := normalizeRegion(s.Config)\n\n\tregion := aws.StringValue(s.Config.Region)\n\tresolved, err := s.resolveEndpoint(service, region, resolvedRegion, s.Config)\n\tif err != nil {\n\t\ts.Handlers.Validate.PushBack(func(r *request.Request) {\n\t\t\tif len(r.ClientInfo.Endpoint) != 0 {\n\t\t\t\t// Error occurred while resolving endpoint, but the request\n\t\t\t\t// being invoked has had an endpoint specified after the client\n\t\t\t\t// was created.\n\t\t\t\treturn\n\t\t\t}\n\t\t\tr.Error = err\n\t\t})\n\t}\n\n\treturn client.Config{\n\t\tConfig:             s.Config,\n\t\tHandlers:           s.Handlers,\n\t\tPartitionID:        resolved.PartitionID,\n\t\tEndpoint:           resolved.URL,\n\t\tSigningRegion:      resolved.SigningRegion,\n\t\tSigningNameDerived: resolved.SigningNameDerived,\n\t\tSigningName:        resolved.SigningName,\n\t\tResolvedRegion:     resolvedRegion,\n\t}\n}\n\nconst ec2MetadataServiceID = \"ec2metadata\"\n\nfunc (s *Session) resolveEndpoint(service, region, resolvedRegion string, cfg *aws.Config) (endpoints.ResolvedEndpoint, error) {\n\n\tif ep := aws.StringValue(cfg.Endpoint); len(ep) != 0 {\n\t\treturn endpoints.ResolvedEndpoint{\n\t\t\tURL:           endpoints.AddScheme(ep, aws.BoolValue(cfg.DisableSSL)),\n\t\t\tSigningRegion: region,\n\t\t}, nil\n\t}\n\n\tresolved, err := cfg.EndpointResolver.EndpointFor(service, region,\n\t\tfunc(opt *endpoints.Options) {\n\t\t\topt.DisableSSL = aws.BoolValue(cfg.DisableSSL)\n\n\t\t\topt.UseDualStack = aws.BoolValue(cfg.UseDualStack)\n\t\t\topt.UseDualStackEndpoint = cfg.UseDualStackEndpoint\n\n\t\t\topt.UseFIPSEndpoint = cfg.UseFIPSEndpoint\n\n\t\t\t// Support for STSRegionalEndpoint where the STSRegionalEndpoint is\n\t\t\t// provided in envConfig or sharedConfig with envConfig getting\n\t\t\t// precedence.\n\t\t\topt.STSRegionalEndpoint = cfg.STSRegionalEndpoint\n\n\t\t\t// Support for S3UsEast1RegionalEndpoint where the S3UsEast1RegionalEndpoint is\n\t\t\t// provided in envConfig or sharedConfig with envConfig getting\n\t\t\t// precedence.\n\t\t\topt.S3UsEast1RegionalEndpoint = cfg.S3UsEast1RegionalEndpoint\n\n\t\t\t// Support the condition where the service is modeled but its\n\t\t\t// endpoint metadata is not available.\n\t\t\topt.ResolveUnknownService = true\n\n\t\t\topt.ResolvedRegion = resolvedRegion\n\n\t\t\topt.Logger = cfg.Logger\n\t\t\topt.LogDeprecated = cfg.LogLevel.Matches(aws.LogDebugWithDeprecated)\n\t\t},\n\t)\n\tif err != nil {\n\t\treturn endpoints.ResolvedEndpoint{}, err\n\t}\n\n\treturn resolved, nil\n}\n\n// ClientConfigNoResolveEndpoint is the same as ClientConfig with the exception\n// that the EndpointResolver will not be used to resolve the endpoint. The only\n// endpoint set must come from the aws.Config.Endpoint field.\nfunc (s *Session) ClientConfigNoResolveEndpoint(cfgs ...*aws.Config) client.Config {\n\ts = s.Copy(cfgs...)\n\n\tresolvedRegion := normalizeRegion(s.Config)\n\n\tvar resolved endpoints.ResolvedEndpoint\n\tif ep := aws.StringValue(s.Config.Endpoint); len(ep) > 0 {\n\t\tresolved.URL = endpoints.AddScheme(ep, aws.BoolValue(s.Config.DisableSSL))\n\t\tresolved.SigningRegion = aws.StringValue(s.Config.Region)\n\t}\n\n\treturn client.Config{\n\t\tConfig:             s.Config,\n\t\tHandlers:           s.Handlers,\n\t\tEndpoint:           resolved.URL,\n\t\tSigningRegion:      resolved.SigningRegion,\n\t\tSigningNameDerived: resolved.SigningNameDerived,\n\t\tSigningName:        resolved.SigningName,\n\t\tResolvedRegion:     resolvedRegion,\n\t}\n}\n\n// logDeprecatedNewSessionError function enables error handling for session\nfunc (s *Session) logDeprecatedNewSessionError(msg string, err error, cfgs []*aws.Config) {\n\t// Session creation failed, need to report the error and prevent\n\t// any requests from succeeding.\n\ts.Config.MergeIn(cfgs...)\n\ts.Config.Logger.Log(\"ERROR:\", msg, \"Error:\", err)\n\ts.Handlers.Validate.PushBack(func(r *request.Request) {\n\t\tr.Error = err\n\t})\n}\n\n// normalizeRegion resolves / normalizes the configured region (converts pseudo fips regions), and modifies the provided\n// config to have the equivalent options for resolution and returns the resolved region name.\nfunc normalizeRegion(cfg *aws.Config) (resolved string) {\n\tconst fipsInfix = \"-fips-\"\n\tconst fipsPrefix = \"-fips\"\n\tconst fipsSuffix = \"fips-\"\n\n\tregion := aws.StringValue(cfg.Region)\n\n\tif strings.Contains(region, fipsInfix) ||\n\t\tstrings.Contains(region, fipsPrefix) ||\n\t\tstrings.Contains(region, fipsSuffix) {\n\t\tresolved = strings.Replace(strings.Replace(strings.Replace(\n\t\t\tregion, fipsInfix, \"-\", -1), fipsPrefix, \"\", -1), fipsSuffix, \"\", -1)\n\t\tcfg.UseFIPSEndpoint = endpoints.FIPSEndpointStateEnabled\n\t}\n\n\treturn resolved\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go",
    "content": "package session\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/endpoints\"\n\t\"github.com/aws/aws-sdk-go/internal/ini\"\n)\n\nconst (\n\t// Static Credentials group\n\taccessKeyIDKey  = `aws_access_key_id`     // group required\n\tsecretAccessKey = `aws_secret_access_key` // group required\n\tsessionTokenKey = `aws_session_token`     // optional\n\n\t// Assume Role Credentials group\n\troleArnKey             = `role_arn`          // group required\n\tsourceProfileKey       = `source_profile`    // group required (or credential_source)\n\tcredentialSourceKey    = `credential_source` // group required (or source_profile)\n\texternalIDKey          = `external_id`       // optional\n\tmfaSerialKey           = `mfa_serial`        // optional\n\troleSessionNameKey     = `role_session_name` // optional\n\troleDurationSecondsKey = \"duration_seconds\"  // optional\n\n\t// Prefix to be used for SSO sections. These are supposed to only exist in\n\t// the shared config file, not the credentials file.\n\tssoSectionPrefix = `sso-session `\n\n\t// AWS Single Sign-On (AWS SSO) group\n\tssoSessionNameKey = \"sso_session\"\n\n\t// AWS Single Sign-On (AWS SSO) group\n\tssoAccountIDKey = \"sso_account_id\"\n\tssoRegionKey    = \"sso_region\"\n\tssoRoleNameKey  = \"sso_role_name\"\n\tssoStartURL     = \"sso_start_url\"\n\n\t// CSM options\n\tcsmEnabledKey  = `csm_enabled`\n\tcsmHostKey     = `csm_host`\n\tcsmPortKey     = `csm_port`\n\tcsmClientIDKey = `csm_client_id`\n\n\t// Additional Config fields\n\tregionKey = `region`\n\n\t// custom CA Bundle filename\n\tcustomCABundleKey = `ca_bundle`\n\n\t// endpoint discovery group\n\tenableEndpointDiscoveryKey = `endpoint_discovery_enabled` // optional\n\n\t// External Credential Process\n\tcredentialProcessKey = `credential_process` // optional\n\n\t// Web Identity Token File\n\twebIdentityTokenFileKey = `web_identity_token_file` // optional\n\n\t// Additional config fields for regional or legacy endpoints\n\tstsRegionalEndpointSharedKey = `sts_regional_endpoints`\n\n\t// Additional config fields for regional or legacy endpoints\n\ts3UsEast1RegionalSharedKey = `s3_us_east_1_regional_endpoint`\n\n\t// DefaultSharedConfigProfile is the default profile to be used when\n\t// loading configuration from the config files if another profile name\n\t// is not provided.\n\tDefaultSharedConfigProfile = `default`\n\n\t// S3 ARN Region Usage\n\ts3UseARNRegionKey = \"s3_use_arn_region\"\n\n\t// EC2 IMDS Endpoint Mode\n\tec2MetadataServiceEndpointModeKey = \"ec2_metadata_service_endpoint_mode\"\n\n\t// EC2 IMDS Endpoint\n\tec2MetadataServiceEndpointKey = \"ec2_metadata_service_endpoint\"\n\n\t// ECS IMDSv1 disable fallback\n\tec2MetadataV1DisabledKey = \"ec2_metadata_v1_disabled\"\n\n\t// Use DualStack Endpoint Resolution\n\tuseDualStackEndpoint = \"use_dualstack_endpoint\"\n\n\t// Use FIPS Endpoint Resolution\n\tuseFIPSEndpointKey = \"use_fips_endpoint\"\n)\n\n// sharedConfig represents the configuration fields of the SDK config files.\ntype sharedConfig struct {\n\tProfile string\n\n\t// Credentials values from the config file. Both aws_access_key_id and\n\t// aws_secret_access_key must be provided together in the same file to be\n\t// considered valid. The values will be ignored if not a complete group.\n\t// aws_session_token is an optional field that can be provided if both of\n\t// the other two fields are also provided.\n\t//\n\t//\taws_access_key_id\n\t//\taws_secret_access_key\n\t//\taws_session_token\n\tCreds credentials.Value\n\n\tCredentialSource     string\n\tCredentialProcess    string\n\tWebIdentityTokenFile string\n\n\t// SSO session options\n\tSSOSessionName string\n\tSSOSession     *ssoSession\n\n\tSSOAccountID string\n\tSSORegion    string\n\tSSORoleName  string\n\tSSOStartURL  string\n\n\tRoleARN            string\n\tRoleSessionName    string\n\tExternalID         string\n\tMFASerial          string\n\tAssumeRoleDuration *time.Duration\n\n\tSourceProfileName string\n\tSourceProfile     *sharedConfig\n\n\t// Region is the region the SDK should use for looking up AWS service\n\t// endpoints and signing requests.\n\t//\n\t//\tregion\n\tRegion string\n\n\t// CustomCABundle is the file path to a PEM file the SDK will read and\n\t// use to configure the HTTP transport with additional CA certs that are\n\t// not present in the platforms default CA store.\n\t//\n\t// This value will be ignored if the file does not exist.\n\t//\n\t//  ca_bundle\n\tCustomCABundle string\n\n\t// EnableEndpointDiscovery can be enabled in the shared config by setting\n\t// endpoint_discovery_enabled to true\n\t//\n\t//\tendpoint_discovery_enabled = true\n\tEnableEndpointDiscovery *bool\n\n\t// CSM Options\n\tCSMEnabled  *bool\n\tCSMHost     string\n\tCSMPort     string\n\tCSMClientID string\n\n\t// Specifies the Regional Endpoint flag for the SDK to resolve the endpoint for a service\n\t//\n\t// sts_regional_endpoints = regional\n\t// This can take value as `LegacySTSEndpoint` or `RegionalSTSEndpoint`\n\tSTSRegionalEndpoint endpoints.STSRegionalEndpoint\n\n\t// Specifies the Regional Endpoint flag for the SDK to resolve the endpoint for a service\n\t//\n\t// s3_us_east_1_regional_endpoint = regional\n\t// This can take value as `LegacyS3UsEast1Endpoint` or `RegionalS3UsEast1Endpoint`\n\tS3UsEast1RegionalEndpoint endpoints.S3UsEast1RegionalEndpoint\n\n\t// Specifies if the S3 service should allow ARNs to direct the region\n\t// the client's requests are sent to.\n\t//\n\t// s3_use_arn_region=true\n\tS3UseARNRegion bool\n\n\t// Specifies the EC2 Instance Metadata Service default endpoint selection mode (IPv4 or IPv6)\n\t//\n\t// ec2_metadata_service_endpoint_mode=IPv6\n\tEC2IMDSEndpointMode endpoints.EC2IMDSEndpointModeState\n\n\t// Specifies the EC2 Instance Metadata Service endpoint to use. If specified it overrides EC2IMDSEndpointMode.\n\t//\n\t// ec2_metadata_service_endpoint=http://fd00:ec2::254\n\tEC2IMDSEndpoint string\n\n\t// Specifies that IMDS clients should not fallback to IMDSv1 if token\n\t// requests fail.\n\t//\n\t// ec2_metadata_v1_disabled=true\n\tEC2IMDSv1Disabled *bool\n\n\t// Specifies that SDK clients must resolve a dual-stack endpoint for\n\t// services.\n\t//\n\t// use_dualstack_endpoint=true\n\tUseDualStackEndpoint endpoints.DualStackEndpointState\n\n\t// Specifies that SDK clients must resolve a FIPS endpoint for\n\t// services.\n\t//\n\t// use_fips_endpoint=true\n\tUseFIPSEndpoint endpoints.FIPSEndpointState\n}\n\ntype sharedConfigFile struct {\n\tFilename string\n\tIniData  ini.Sections\n}\n\n// SSOSession provides the shared configuration parameters of the sso-session\n// section.\ntype ssoSession struct {\n\tName        string\n\tSSORegion   string\n\tSSOStartURL string\n}\n\nfunc (s *ssoSession) setFromIniSection(section ini.Section) {\n\tupdateString(&s.Name, section, ssoSessionNameKey)\n\tupdateString(&s.SSORegion, section, ssoRegionKey)\n\tupdateString(&s.SSOStartURL, section, ssoStartURL)\n}\n\n// loadSharedConfig retrieves the configuration from the list of files using\n// the profile provided. The order the files are listed will determine\n// precedence. Values in subsequent files will overwrite values defined in\n// earlier files.\n//\n// For example, given two files A and B. Both define credentials. If the order\n// of the files are A then B, B's credential values will be used instead of\n// A's.\n//\n// See sharedConfig.setFromFile for information how the config files\n// will be loaded.\nfunc loadSharedConfig(profile string, filenames []string, exOpts bool) (sharedConfig, error) {\n\tif len(profile) == 0 {\n\t\tprofile = DefaultSharedConfigProfile\n\t}\n\n\tfiles, err := loadSharedConfigIniFiles(filenames)\n\tif err != nil {\n\t\treturn sharedConfig{}, err\n\t}\n\n\tcfg := sharedConfig{}\n\tprofiles := map[string]struct{}{}\n\tif err = cfg.setFromIniFiles(profiles, profile, files, exOpts); err != nil {\n\t\treturn sharedConfig{}, err\n\t}\n\n\treturn cfg, nil\n}\n\nfunc loadSharedConfigIniFiles(filenames []string) ([]sharedConfigFile, error) {\n\tfiles := make([]sharedConfigFile, 0, len(filenames))\n\n\tfor _, filename := range filenames {\n\t\tsections, err := ini.OpenFile(filename)\n\t\tif aerr, ok := err.(awserr.Error); ok && aerr.Code() == ini.ErrCodeUnableToReadFile {\n\t\t\t// Skip files which can't be opened and read for whatever reason\n\t\t\tcontinue\n\t\t} else if err != nil {\n\t\t\treturn nil, SharedConfigLoadError{Filename: filename, Err: err}\n\t\t}\n\n\t\tfiles = append(files, sharedConfigFile{\n\t\t\tFilename: filename, IniData: sections,\n\t\t})\n\t}\n\n\treturn files, nil\n}\n\nfunc (cfg *sharedConfig) setFromIniFiles(profiles map[string]struct{}, profile string, files []sharedConfigFile, exOpts bool) error {\n\tcfg.Profile = profile\n\n\t// Trim files from the list that don't exist.\n\tvar skippedFiles int\n\tvar profileNotFoundErr error\n\tfor _, f := range files {\n\t\tif err := cfg.setFromIniFile(profile, f, exOpts); err != nil {\n\t\t\tif _, ok := err.(SharedConfigProfileNotExistsError); ok {\n\t\t\t\t// Ignore profiles not defined in individual files.\n\t\t\t\tprofileNotFoundErr = err\n\t\t\t\tskippedFiles++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t}\n\tif skippedFiles == len(files) {\n\t\t// If all files were skipped because the profile is not found, return\n\t\t// the original profile not found error.\n\t\treturn profileNotFoundErr\n\t}\n\n\tif _, ok := profiles[profile]; ok {\n\t\t// if this is the second instance of the profile the Assume Role\n\t\t// options must be cleared because they are only valid for the\n\t\t// first reference of a profile. The self linked instance of the\n\t\t// profile only have credential provider options.\n\t\tcfg.clearAssumeRoleOptions()\n\t} else {\n\t\t// First time a profile has been seen. Assert if the credential type\n\t\t// requires a role ARN, the ARN is also set\n\t\tif err := cfg.validateCredentialsConfig(profile); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tprofiles[profile] = struct{}{}\n\n\tif err := cfg.validateCredentialType(); err != nil {\n\t\treturn err\n\t}\n\n\t// Link source profiles for assume roles\n\tif len(cfg.SourceProfileName) != 0 {\n\t\t// Linked profile via source_profile ignore credential provider\n\t\t// options, the source profile must provide the credentials.\n\t\tcfg.clearCredentialOptions()\n\n\t\tsrcCfg := &sharedConfig{}\n\t\terr := srcCfg.setFromIniFiles(profiles, cfg.SourceProfileName, files, exOpts)\n\t\tif err != nil {\n\t\t\t// SourceProfile that doesn't exist is an error in configuration.\n\t\t\tif _, ok := err.(SharedConfigProfileNotExistsError); ok {\n\t\t\t\terr = SharedConfigAssumeRoleError{\n\t\t\t\t\tRoleARN:       cfg.RoleARN,\n\t\t\t\t\tSourceProfile: cfg.SourceProfileName,\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\n\t\tif !srcCfg.hasCredentials() {\n\t\t\treturn SharedConfigAssumeRoleError{\n\t\t\t\tRoleARN:       cfg.RoleARN,\n\t\t\t\tSourceProfile: cfg.SourceProfileName,\n\t\t\t}\n\t\t}\n\n\t\tcfg.SourceProfile = srcCfg\n\t}\n\n\t// If the profile contains an SSO session parameter, the session MUST exist\n\t// as a section in the config file. Load the SSO session using the name\n\t// provided. If the session section is not found or incomplete an error\n\t// will be returned.\n\tif cfg.hasSSOTokenProviderConfiguration() {\n\t\tskippedFiles = 0\n\t\tfor _, f := range files {\n\t\t\tsection, ok := f.IniData.GetSection(fmt.Sprintf(ssoSectionPrefix + strings.TrimSpace(cfg.SSOSessionName)))\n\t\t\tif ok {\n\t\t\t\tvar ssoSession ssoSession\n\t\t\t\tssoSession.setFromIniSection(section)\n\t\t\t\tssoSession.Name = cfg.SSOSessionName\n\t\t\t\tcfg.SSOSession = &ssoSession\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tskippedFiles++\n\t\t}\n\t\tif skippedFiles == len(files) {\n\t\t\t// If all files were skipped because the sso session section is not found, return\n\t\t\t// the sso section not found error.\n\t\t\treturn fmt.Errorf(\"failed to find SSO session section, %v\", cfg.SSOSessionName)\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// setFromFile loads the configuration from the file using the profile\n// provided. A sharedConfig pointer type value is used so that multiple config\n// file loadings can be chained.\n//\n// Only loads complete logically grouped values, and will not set fields in cfg\n// for incomplete grouped values in the config. Such as credentials. For\n// example if a config file only includes aws_access_key_id but no\n// aws_secret_access_key the aws_access_key_id will be ignored.\nfunc (cfg *sharedConfig) setFromIniFile(profile string, file sharedConfigFile, exOpts bool) error {\n\tsection, ok := file.IniData.GetSection(profile)\n\tif !ok {\n\t\t// Fallback to to alternate profile name: profile <name>\n\t\tsection, ok = file.IniData.GetSection(fmt.Sprintf(\"profile %s\", profile))\n\t\tif !ok {\n\t\t\treturn SharedConfigProfileNotExistsError{Profile: profile, Err: nil}\n\t\t}\n\t}\n\n\tif exOpts {\n\t\t// Assume Role Parameters\n\t\tupdateString(&cfg.RoleARN, section, roleArnKey)\n\t\tupdateString(&cfg.ExternalID, section, externalIDKey)\n\t\tupdateString(&cfg.MFASerial, section, mfaSerialKey)\n\t\tupdateString(&cfg.RoleSessionName, section, roleSessionNameKey)\n\t\tupdateString(&cfg.SourceProfileName, section, sourceProfileKey)\n\t\tupdateString(&cfg.CredentialSource, section, credentialSourceKey)\n\t\tupdateString(&cfg.Region, section, regionKey)\n\t\tupdateString(&cfg.CustomCABundle, section, customCABundleKey)\n\n\t\t// we're retaining a behavioral quirk with this field that existed before\n\t\t// the removal of literal parsing for (aws-sdk-go-v2/#2276):\n\t\t//   - if the key is missing, the config field will not be set\n\t\t//   - if the key is set to a non-numeric, the config field will be set to 0\n\t\tif section.Has(roleDurationSecondsKey) {\n\t\t\tvar d time.Duration\n\t\t\tif v, ok := section.Int(roleDurationSecondsKey); ok {\n\t\t\t\td = time.Duration(v) * time.Second\n\t\t\t}\n\t\t\tcfg.AssumeRoleDuration = &d\n\t\t}\n\n\t\tif v := section.String(stsRegionalEndpointSharedKey); len(v) != 0 {\n\t\t\tsre, err := endpoints.GetSTSRegionalEndpoint(v)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"failed to load %s from shared config, %s, %v\",\n\t\t\t\t\tstsRegionalEndpointSharedKey, file.Filename, err)\n\t\t\t}\n\t\t\tcfg.STSRegionalEndpoint = sre\n\t\t}\n\n\t\tif v := section.String(s3UsEast1RegionalSharedKey); len(v) != 0 {\n\t\t\tsre, err := endpoints.GetS3UsEast1RegionalEndpoint(v)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"failed to load %s from shared config, %s, %v\",\n\t\t\t\t\ts3UsEast1RegionalSharedKey, file.Filename, err)\n\t\t\t}\n\t\t\tcfg.S3UsEast1RegionalEndpoint = sre\n\t\t}\n\n\t\t// AWS Single Sign-On (AWS SSO)\n\t\t// SSO session options\n\t\tupdateString(&cfg.SSOSessionName, section, ssoSessionNameKey)\n\n\t\t// AWS Single Sign-On (AWS SSO)\n\t\tupdateString(&cfg.SSOAccountID, section, ssoAccountIDKey)\n\t\tupdateString(&cfg.SSORegion, section, ssoRegionKey)\n\t\tupdateString(&cfg.SSORoleName, section, ssoRoleNameKey)\n\t\tupdateString(&cfg.SSOStartURL, section, ssoStartURL)\n\n\t\tif err := updateEC2MetadataServiceEndpointMode(&cfg.EC2IMDSEndpointMode, section, ec2MetadataServiceEndpointModeKey); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to load %s from shared config, %s, %v\",\n\t\t\t\tec2MetadataServiceEndpointModeKey, file.Filename, err)\n\t\t}\n\t\tupdateString(&cfg.EC2IMDSEndpoint, section, ec2MetadataServiceEndpointKey)\n\t\tupdateBoolPtr(&cfg.EC2IMDSv1Disabled, section, ec2MetadataV1DisabledKey)\n\n\t\tupdateUseDualStackEndpoint(&cfg.UseDualStackEndpoint, section, useDualStackEndpoint)\n\n\t\tupdateUseFIPSEndpoint(&cfg.UseFIPSEndpoint, section, useFIPSEndpointKey)\n\t}\n\n\tupdateString(&cfg.CredentialProcess, section, credentialProcessKey)\n\tupdateString(&cfg.WebIdentityTokenFile, section, webIdentityTokenFileKey)\n\n\t// Shared Credentials\n\tcreds := credentials.Value{\n\t\tAccessKeyID:     section.String(accessKeyIDKey),\n\t\tSecretAccessKey: section.String(secretAccessKey),\n\t\tSessionToken:    section.String(sessionTokenKey),\n\t\tProviderName:    fmt.Sprintf(\"SharedConfigCredentials: %s\", file.Filename),\n\t}\n\tif creds.HasKeys() {\n\t\tcfg.Creds = creds\n\t}\n\n\t// Endpoint discovery\n\tupdateBoolPtr(&cfg.EnableEndpointDiscovery, section, enableEndpointDiscoveryKey)\n\n\t// CSM options\n\tupdateBoolPtr(&cfg.CSMEnabled, section, csmEnabledKey)\n\tupdateString(&cfg.CSMHost, section, csmHostKey)\n\tupdateString(&cfg.CSMPort, section, csmPortKey)\n\tupdateString(&cfg.CSMClientID, section, csmClientIDKey)\n\n\tupdateBool(&cfg.S3UseARNRegion, section, s3UseARNRegionKey)\n\n\treturn nil\n}\n\nfunc updateEC2MetadataServiceEndpointMode(endpointMode *endpoints.EC2IMDSEndpointModeState, section ini.Section, key string) error {\n\tif !section.Has(key) {\n\t\treturn nil\n\t}\n\tvalue := section.String(key)\n\treturn endpointMode.SetFromString(value)\n}\n\nfunc (cfg *sharedConfig) validateCredentialsConfig(profile string) error {\n\tif err := cfg.validateCredentialsRequireARN(profile); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (cfg *sharedConfig) validateCredentialsRequireARN(profile string) error {\n\tvar credSource string\n\n\tswitch {\n\tcase len(cfg.SourceProfileName) != 0:\n\t\tcredSource = sourceProfileKey\n\tcase len(cfg.CredentialSource) != 0:\n\t\tcredSource = credentialSourceKey\n\tcase len(cfg.WebIdentityTokenFile) != 0:\n\t\tcredSource = webIdentityTokenFileKey\n\t}\n\n\tif len(credSource) != 0 && len(cfg.RoleARN) == 0 {\n\t\treturn CredentialRequiresARNError{\n\t\t\tType:    credSource,\n\t\t\tProfile: profile,\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (cfg *sharedConfig) validateCredentialType() error {\n\t// Only one or no credential type can be defined.\n\tif !oneOrNone(\n\t\tlen(cfg.SourceProfileName) != 0,\n\t\tlen(cfg.CredentialSource) != 0,\n\t\tlen(cfg.CredentialProcess) != 0,\n\t\tlen(cfg.WebIdentityTokenFile) != 0,\n\t) {\n\t\treturn ErrSharedConfigSourceCollision\n\t}\n\n\treturn nil\n}\n\nfunc (cfg *sharedConfig) validateSSOConfiguration() error {\n\tif cfg.hasSSOTokenProviderConfiguration() {\n\t\terr := cfg.validateSSOTokenProviderConfiguration()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t}\n\n\tif cfg.hasLegacySSOConfiguration() {\n\t\terr := cfg.validateLegacySSOConfiguration()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (cfg *sharedConfig) hasCredentials() bool {\n\tswitch {\n\tcase len(cfg.SourceProfileName) != 0:\n\tcase len(cfg.CredentialSource) != 0:\n\tcase len(cfg.CredentialProcess) != 0:\n\tcase len(cfg.WebIdentityTokenFile) != 0:\n\tcase cfg.hasSSOConfiguration():\n\tcase cfg.Creds.HasKeys():\n\tdefault:\n\t\treturn false\n\t}\n\n\treturn true\n}\n\nfunc (cfg *sharedConfig) clearCredentialOptions() {\n\tcfg.CredentialSource = \"\"\n\tcfg.CredentialProcess = \"\"\n\tcfg.WebIdentityTokenFile = \"\"\n\tcfg.Creds = credentials.Value{}\n\tcfg.SSOAccountID = \"\"\n\tcfg.SSORegion = \"\"\n\tcfg.SSORoleName = \"\"\n\tcfg.SSOStartURL = \"\"\n}\n\nfunc (cfg *sharedConfig) clearAssumeRoleOptions() {\n\tcfg.RoleARN = \"\"\n\tcfg.ExternalID = \"\"\n\tcfg.MFASerial = \"\"\n\tcfg.RoleSessionName = \"\"\n\tcfg.SourceProfileName = \"\"\n}\n\nfunc (cfg *sharedConfig) hasSSOConfiguration() bool {\n\treturn cfg.hasSSOTokenProviderConfiguration() || cfg.hasLegacySSOConfiguration()\n}\n\nfunc (c *sharedConfig) hasSSOTokenProviderConfiguration() bool {\n\treturn len(c.SSOSessionName) > 0\n}\n\nfunc (c *sharedConfig) hasLegacySSOConfiguration() bool {\n\treturn len(c.SSORegion) > 0 || len(c.SSOAccountID) > 0 || len(c.SSOStartURL) > 0 || len(c.SSORoleName) > 0\n}\n\nfunc (c *sharedConfig) validateSSOTokenProviderConfiguration() error {\n\tvar missing []string\n\n\tif len(c.SSOSessionName) == 0 {\n\t\tmissing = append(missing, ssoSessionNameKey)\n\t}\n\n\tif c.SSOSession == nil {\n\t\tmissing = append(missing, ssoSectionPrefix)\n\t} else {\n\t\tif len(c.SSOSession.SSORegion) == 0 {\n\t\t\tmissing = append(missing, ssoRegionKey)\n\t\t}\n\n\t\tif len(c.SSOSession.SSOStartURL) == 0 {\n\t\t\tmissing = append(missing, ssoStartURL)\n\t\t}\n\t}\n\n\tif len(missing) > 0 {\n\t\treturn fmt.Errorf(\"profile %q is configured to use SSO but is missing required configuration: %s\",\n\t\t\tc.Profile, strings.Join(missing, \", \"))\n\t}\n\n\tif len(c.SSORegion) > 0 && c.SSORegion != c.SSOSession.SSORegion {\n\t\treturn fmt.Errorf(\"%s in profile %q must match %s in %s\", ssoRegionKey, c.Profile, ssoRegionKey, ssoSectionPrefix)\n\t}\n\n\tif len(c.SSOStartURL) > 0 && c.SSOStartURL != c.SSOSession.SSOStartURL {\n\t\treturn fmt.Errorf(\"%s in profile %q must match %s in %s\", ssoStartURL, c.Profile, ssoStartURL, ssoSectionPrefix)\n\t}\n\n\treturn nil\n}\n\nfunc (c *sharedConfig) validateLegacySSOConfiguration() error {\n\tvar missing []string\n\n\tif len(c.SSORegion) == 0 {\n\t\tmissing = append(missing, ssoRegionKey)\n\t}\n\n\tif len(c.SSOStartURL) == 0 {\n\t\tmissing = append(missing, ssoStartURL)\n\t}\n\n\tif len(c.SSOAccountID) == 0 {\n\t\tmissing = append(missing, ssoAccountIDKey)\n\t}\n\n\tif len(c.SSORoleName) == 0 {\n\t\tmissing = append(missing, ssoRoleNameKey)\n\t}\n\n\tif len(missing) > 0 {\n\t\treturn fmt.Errorf(\"profile %q is configured to use SSO but is missing required configuration: %s\",\n\t\t\tc.Profile, strings.Join(missing, \", \"))\n\t}\n\treturn nil\n}\n\nfunc oneOrNone(bs ...bool) bool {\n\tvar count int\n\n\tfor _, b := range bs {\n\t\tif b {\n\t\t\tcount++\n\t\t\tif count > 1 {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true\n}\n\n// updateString will only update the dst with the value in the section key, key\n// is present in the section.\nfunc updateString(dst *string, section ini.Section, key string) {\n\tif !section.Has(key) {\n\t\treturn\n\t}\n\t*dst = section.String(key)\n}\n\n// updateBool will only update the dst with the value in the section key, key\n// is present in the section.\nfunc updateBool(dst *bool, section ini.Section, key string) {\n\tif !section.Has(key) {\n\t\treturn\n\t}\n\n\t// retains pre-(aws-sdk-go-v2#2276) behavior where non-bool value would resolve to false\n\tv, _ := section.Bool(key)\n\t*dst = v\n}\n\n// updateBoolPtr will only update the dst with the value in the section key,\n// key is present in the section.\nfunc updateBoolPtr(dst **bool, section ini.Section, key string) {\n\tif !section.Has(key) {\n\t\treturn\n\t}\n\n\t// retains pre-(aws-sdk-go-v2#2276) behavior where non-bool value would resolve to false\n\tv, _ := section.Bool(key)\n\t*dst = new(bool)\n\t**dst = v\n}\n\n// SharedConfigLoadError is an error for the shared config file failed to load.\ntype SharedConfigLoadError struct {\n\tFilename string\n\tErr      error\n}\n\n// Code is the short id of the error.\nfunc (e SharedConfigLoadError) Code() string {\n\treturn \"SharedConfigLoadError\"\n}\n\n// Message is the description of the error\nfunc (e SharedConfigLoadError) Message() string {\n\treturn fmt.Sprintf(\"failed to load config file, %s\", e.Filename)\n}\n\n// OrigErr is the underlying error that caused the failure.\nfunc (e SharedConfigLoadError) OrigErr() error {\n\treturn e.Err\n}\n\n// Error satisfies the error interface.\nfunc (e SharedConfigLoadError) Error() string {\n\treturn awserr.SprintError(e.Code(), e.Message(), \"\", e.Err)\n}\n\n// SharedConfigProfileNotExistsError is an error for the shared config when\n// the profile was not find in the config file.\ntype SharedConfigProfileNotExistsError struct {\n\tProfile string\n\tErr     error\n}\n\n// Code is the short id of the error.\nfunc (e SharedConfigProfileNotExistsError) Code() string {\n\treturn \"SharedConfigProfileNotExistsError\"\n}\n\n// Message is the description of the error\nfunc (e SharedConfigProfileNotExistsError) Message() string {\n\treturn fmt.Sprintf(\"failed to get profile, %s\", e.Profile)\n}\n\n// OrigErr is the underlying error that caused the failure.\nfunc (e SharedConfigProfileNotExistsError) OrigErr() error {\n\treturn e.Err\n}\n\n// Error satisfies the error interface.\nfunc (e SharedConfigProfileNotExistsError) Error() string {\n\treturn awserr.SprintError(e.Code(), e.Message(), \"\", e.Err)\n}\n\n// SharedConfigAssumeRoleError is an error for the shared config when the\n// profile contains assume role information, but that information is invalid\n// or not complete.\ntype SharedConfigAssumeRoleError struct {\n\tRoleARN       string\n\tSourceProfile string\n}\n\n// Code is the short id of the error.\nfunc (e SharedConfigAssumeRoleError) Code() string {\n\treturn \"SharedConfigAssumeRoleError\"\n}\n\n// Message is the description of the error\nfunc (e SharedConfigAssumeRoleError) Message() string {\n\treturn fmt.Sprintf(\n\t\t\"failed to load assume role for %s, source profile %s has no shared credentials\",\n\t\te.RoleARN, e.SourceProfile,\n\t)\n}\n\n// OrigErr is the underlying error that caused the failure.\nfunc (e SharedConfigAssumeRoleError) OrigErr() error {\n\treturn nil\n}\n\n// Error satisfies the error interface.\nfunc (e SharedConfigAssumeRoleError) Error() string {\n\treturn awserr.SprintError(e.Code(), e.Message(), \"\", nil)\n}\n\n// CredentialRequiresARNError provides the error for shared config credentials\n// that are incorrectly configured in the shared config or credentials file.\ntype CredentialRequiresARNError struct {\n\t// type of credentials that were configured.\n\tType string\n\n\t// Profile name the credentials were in.\n\tProfile string\n}\n\n// Code is the short id of the error.\nfunc (e CredentialRequiresARNError) Code() string {\n\treturn \"CredentialRequiresARNError\"\n}\n\n// Message is the description of the error\nfunc (e CredentialRequiresARNError) Message() string {\n\treturn fmt.Sprintf(\n\t\t\"credential type %s requires role_arn, profile %s\",\n\t\te.Type, e.Profile,\n\t)\n}\n\n// OrigErr is the underlying error that caused the failure.\nfunc (e CredentialRequiresARNError) OrigErr() error {\n\treturn nil\n}\n\n// Error satisfies the error interface.\nfunc (e CredentialRequiresARNError) Error() string {\n\treturn awserr.SprintError(e.Code(), e.Message(), \"\", nil)\n}\n\n// updateEndpointDiscoveryType will only update the dst with the value in the section, if\n// a valid key and corresponding EndpointDiscoveryType is found.\nfunc updateUseDualStackEndpoint(dst *endpoints.DualStackEndpointState, section ini.Section, key string) {\n\tif !section.Has(key) {\n\t\treturn\n\t}\n\n\t// retains pre-(aws-sdk-go-v2/#2276) behavior where non-bool value would resolve to false\n\tif v, _ := section.Bool(key); v {\n\t\t*dst = endpoints.DualStackEndpointStateEnabled\n\t} else {\n\t\t*dst = endpoints.DualStackEndpointStateDisabled\n\t}\n\n\treturn\n}\n\n// updateEndpointDiscoveryType will only update the dst with the value in the section, if\n// a valid key and corresponding EndpointDiscoveryType is found.\nfunc updateUseFIPSEndpoint(dst *endpoints.FIPSEndpointState, section ini.Section, key string) {\n\tif !section.Has(key) {\n\t\treturn\n\t}\n\n\t// retains pre-(aws-sdk-go-v2/#2276) behavior where non-bool value would resolve to false\n\tif v, _ := section.Bool(key); v {\n\t\t*dst = endpoints.FIPSEndpointStateEnabled\n\t} else {\n\t\t*dst = endpoints.FIPSEndpointStateDisabled\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/signer/v4/header_rules.go",
    "content": "package v4\n\nimport (\n\t\"github.com/aws/aws-sdk-go/internal/strings\"\n)\n\n// validator houses a set of rule needed for validation of a\n// string value\ntype rules []rule\n\n// rule interface allows for more flexible rules and just simply\n// checks whether or not a value adheres to that rule\ntype rule interface {\n\tIsValid(value string) bool\n}\n\n// IsValid will iterate through all rules and see if any rules\n// apply to the value and supports nested rules\nfunc (r rules) IsValid(value string) bool {\n\tfor _, rule := range r {\n\t\tif rule.IsValid(value) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// mapRule generic rule for maps\ntype mapRule map[string]struct{}\n\n// IsValid for the map rule satisfies whether it exists in the map\nfunc (m mapRule) IsValid(value string) bool {\n\t_, ok := m[value]\n\treturn ok\n}\n\n// allowList is a generic rule for allow listing\ntype allowList struct {\n\trule\n}\n\n// IsValid for allow list checks if the value is within the allow list\nfunc (w allowList) IsValid(value string) bool {\n\treturn w.rule.IsValid(value)\n}\n\n// excludeList is a generic rule for exclude listing\ntype excludeList struct {\n\trule\n}\n\n// IsValid for exclude list checks if the value is within the exclude list\nfunc (b excludeList) IsValid(value string) bool {\n\treturn !b.rule.IsValid(value)\n}\n\ntype patterns []string\n\n// IsValid for patterns checks each pattern and returns if a match has\n// been found\nfunc (p patterns) IsValid(value string) bool {\n\tfor _, pattern := range p {\n\t\tif strings.HasPrefixFold(value, pattern) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// inclusiveRules rules allow for rules to depend on one another\ntype inclusiveRules []rule\n\n// IsValid will return true if all rules are true\nfunc (r inclusiveRules) IsValid(value string) bool {\n\tfor _, rule := range r {\n\t\tif !rule.IsValid(value) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/signer/v4/options.go",
    "content": "package v4\n\n// WithUnsignedPayload will enable and set the UnsignedPayload field to\n// true of the signer.\nfunc WithUnsignedPayload(v4 *Signer) {\n\tv4.UnsignedPayload = true\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/signer/v4/request_context_go1.5.go",
    "content": "//go:build !go1.7\n// +build !go1.7\n\npackage v4\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n)\n\nfunc requestContext(r *http.Request) aws.Context {\n\treturn aws.BackgroundContext()\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/signer/v4/request_context_go1.7.go",
    "content": "//go:build go1.7\n// +build go1.7\n\npackage v4\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n)\n\nfunc requestContext(r *http.Request) aws.Context {\n\treturn r.Context()\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/signer/v4/stream.go",
    "content": "package v4\n\nimport (\n\t\"encoding/hex\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n)\n\ntype credentialValueProvider interface {\n\tGet() (credentials.Value, error)\n}\n\n// StreamSigner implements signing of event stream encoded payloads\ntype StreamSigner struct {\n\tregion  string\n\tservice string\n\n\tcredentials credentialValueProvider\n\n\tprevSig []byte\n}\n\n// NewStreamSigner creates a SigV4 signer used to sign Event Stream encoded messages\nfunc NewStreamSigner(region, service string, seedSignature []byte, credentials *credentials.Credentials) *StreamSigner {\n\treturn &StreamSigner{\n\t\tregion:      region,\n\t\tservice:     service,\n\t\tcredentials: credentials,\n\t\tprevSig:     seedSignature,\n\t}\n}\n\n// GetSignature takes an event stream encoded headers and payload and returns a signature\nfunc (s *StreamSigner) GetSignature(headers, payload []byte, date time.Time) ([]byte, error) {\n\tcredValue, err := s.credentials.Get()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsigKey := deriveSigningKey(s.region, s.service, credValue.SecretAccessKey, date)\n\n\tkeyPath := buildSigningScope(s.region, s.service, date)\n\n\tstringToSign := buildEventStreamStringToSign(headers, payload, s.prevSig, keyPath, date)\n\n\tsignature := hmacSHA256(sigKey, []byte(stringToSign))\n\ts.prevSig = signature\n\n\treturn signature, nil\n}\n\nfunc buildEventStreamStringToSign(headers, payload, prevSig []byte, scope string, date time.Time) string {\n\treturn strings.Join([]string{\n\t\t\"AWS4-HMAC-SHA256-PAYLOAD\",\n\t\tformatTime(date),\n\t\tscope,\n\t\thex.EncodeToString(prevSig),\n\t\thex.EncodeToString(hashSHA256(headers)),\n\t\thex.EncodeToString(hashSHA256(payload)),\n\t}, \"\\n\")\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/signer/v4/uri_path.go",
    "content": "//go:build go1.5\n// +build go1.5\n\npackage v4\n\nimport (\n\t\"net/url\"\n\t\"strings\"\n)\n\nfunc getURIPath(u *url.URL) string {\n\tvar uri string\n\n\tif len(u.Opaque) > 0 {\n\t\turi = \"/\" + strings.Join(strings.Split(u.Opaque, \"/\")[3:], \"/\")\n\t} else {\n\t\turi = u.EscapedPath()\n\t}\n\n\tif len(uri) == 0 {\n\t\turi = \"/\"\n\t}\n\n\treturn uri\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go",
    "content": "// Package v4 implements signing for AWS V4 signer\n//\n// Provides request signing for request that need to be signed with\n// AWS V4 Signatures.\n//\n// # Standalone Signer\n//\n// Generally using the signer outside of the SDK should not require any additional\n// logic when using Go v1.5 or higher. The signer does this by taking advantage\n// of the URL.EscapedPath method. If your request URI requires additional escaping\n// you may need to use the URL.Opaque to define what the raw URI should be sent\n// to the service as.\n//\n// The signer will first check the URL.Opaque field, and use its value if set.\n// The signer does require the URL.Opaque field to be set in the form of:\n//\n//\t\"//<hostname>/<path>\"\n//\n//\t// e.g.\n//\t\"//example.com/some/path\"\n//\n// The leading \"//\" and hostname are required or the URL.Opaque escaping will\n// not work correctly.\n//\n// If URL.Opaque is not set the signer will fallback to the URL.EscapedPath()\n// method and using the returned value. If you're using Go v1.4 you must set\n// URL.Opaque if the URI path needs escaping. If URL.Opaque is not set with\n// Go v1.5 the signer will fallback to URL.Path.\n//\n// AWS v4 signature validation requires that the canonical string's URI path\n// element must be the URI escaped form of the HTTP request's path.\n// http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html\n//\n// The Go HTTP client will perform escaping automatically on the request. Some\n// of these escaping may cause signature validation errors because the HTTP\n// request differs from the URI path or query that the signature was generated.\n// https://golang.org/pkg/net/url/#URL.EscapedPath\n//\n// Because of this, it is recommended that when using the signer outside of the\n// SDK that explicitly escaping the request prior to being signed is preferable,\n// and will help prevent signature validation errors. This can be done by setting\n// the URL.Opaque or URL.RawPath. The SDK will use URL.Opaque first and then\n// call URL.EscapedPath() if Opaque is not set.\n//\n// If signing a request intended for HTTP2 server, and you're using Go 1.6.2\n// through 1.7.4 you should use the URL.RawPath as the pre-escaped form of the\n// request URL. https://github.com/golang/go/issues/16847 points to a bug in\n// Go pre 1.8 that fails to make HTTP2 requests using absolute URL in the HTTP\n// message. URL.Opaque generally will force Go to make requests with absolute URL.\n// URL.RawPath does not do this, but RawPath must be a valid escaping of Path\n// or url.EscapedPath will ignore the RawPath escaping.\n//\n// Test `TestStandaloneSign` provides a complete example of using the signer\n// outside of the SDK and pre-escaping the URI path.\npackage v4\n\nimport (\n\t\"crypto/hmac\"\n\t\"crypto/sha256\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/internal/sdkio\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/rest\"\n)\n\nconst (\n\tauthorizationHeader     = \"Authorization\"\n\tauthHeaderSignatureElem = \"Signature=\"\n\tsignatureQueryKey       = \"X-Amz-Signature\"\n\n\tauthHeaderPrefix = \"AWS4-HMAC-SHA256\"\n\ttimeFormat       = \"20060102T150405Z\"\n\tshortTimeFormat  = \"20060102\"\n\tawsV4Request     = \"aws4_request\"\n\n\t// emptyStringSHA256 is a SHA256 of an empty string\n\temptyStringSHA256 = `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855`\n)\n\nvar ignoredHeaders = rules{\n\texcludeList{\n\t\tmapRule{\n\t\t\tauthorizationHeader: struct{}{},\n\t\t\t\"User-Agent\":        struct{}{},\n\t\t\t\"X-Amzn-Trace-Id\":   struct{}{},\n\t\t},\n\t},\n}\n\n// requiredSignedHeaders is a allow list for build canonical headers.\nvar requiredSignedHeaders = rules{\n\tallowList{\n\t\tmapRule{\n\t\t\t\"Cache-Control\":                         struct{}{},\n\t\t\t\"Content-Disposition\":                   struct{}{},\n\t\t\t\"Content-Encoding\":                      struct{}{},\n\t\t\t\"Content-Language\":                      struct{}{},\n\t\t\t\"Content-Md5\":                           struct{}{},\n\t\t\t\"Content-Type\":                          struct{}{},\n\t\t\t\"Expires\":                               struct{}{},\n\t\t\t\"If-Match\":                              struct{}{},\n\t\t\t\"If-Modified-Since\":                     struct{}{},\n\t\t\t\"If-None-Match\":                         struct{}{},\n\t\t\t\"If-Unmodified-Since\":                   struct{}{},\n\t\t\t\"Range\":                                 struct{}{},\n\t\t\t\"X-Amz-Acl\":                             struct{}{},\n\t\t\t\"X-Amz-Copy-Source\":                     struct{}{},\n\t\t\t\"X-Amz-Copy-Source-If-Match\":            struct{}{},\n\t\t\t\"X-Amz-Copy-Source-If-Modified-Since\":   struct{}{},\n\t\t\t\"X-Amz-Copy-Source-If-None-Match\":       struct{}{},\n\t\t\t\"X-Amz-Copy-Source-If-Unmodified-Since\": struct{}{},\n\t\t\t\"X-Amz-Copy-Source-Range\":               struct{}{},\n\t\t\t\"X-Amz-Copy-Source-Server-Side-Encryption-Customer-Algorithm\": struct{}{},\n\t\t\t\"X-Amz-Copy-Source-Server-Side-Encryption-Customer-Key\":       struct{}{},\n\t\t\t\"X-Amz-Copy-Source-Server-Side-Encryption-Customer-Key-Md5\":   struct{}{},\n\t\t\t\"X-Amz-Expected-Bucket-Owner\":                                 struct{}{},\n\t\t\t\"X-Amz-Grant-Full-control\":                                    struct{}{},\n\t\t\t\"X-Amz-Grant-Read\":                                            struct{}{},\n\t\t\t\"X-Amz-Grant-Read-Acp\":                                        struct{}{},\n\t\t\t\"X-Amz-Grant-Write\":                                           struct{}{},\n\t\t\t\"X-Amz-Grant-Write-Acp\":                                       struct{}{},\n\t\t\t\"X-Amz-Metadata-Directive\":                                    struct{}{},\n\t\t\t\"X-Amz-Mfa\":                                                   struct{}{},\n\t\t\t\"X-Amz-Request-Payer\":                                         struct{}{},\n\t\t\t\"X-Amz-Server-Side-Encryption\":                                struct{}{},\n\t\t\t\"X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id\":                 struct{}{},\n\t\t\t\"X-Amz-Server-Side-Encryption-Context\":                        struct{}{},\n\t\t\t\"X-Amz-Server-Side-Encryption-Customer-Algorithm\":             struct{}{},\n\t\t\t\"X-Amz-Server-Side-Encryption-Customer-Key\":                   struct{}{},\n\t\t\t\"X-Amz-Server-Side-Encryption-Customer-Key-Md5\":               struct{}{},\n\t\t\t\"X-Amz-Storage-Class\":                                         struct{}{},\n\t\t\t\"X-Amz-Tagging\":                                               struct{}{},\n\t\t\t\"X-Amz-Website-Redirect-Location\":                             struct{}{},\n\t\t\t\"X-Amz-Content-Sha256\":                                        struct{}{},\n\t\t},\n\t},\n\tpatterns{\"X-Amz-Meta-\"},\n\tpatterns{\"X-Amz-Object-Lock-\"},\n}\n\n// allowedHoisting is a allow list for build query headers. The boolean value\n// represents whether or not it is a pattern.\nvar allowedQueryHoisting = inclusiveRules{\n\texcludeList{requiredSignedHeaders},\n\tpatterns{\"X-Amz-\"},\n}\n\n// Signer applies AWS v4 signing to given request. Use this to sign requests\n// that need to be signed with AWS V4 Signatures.\ntype Signer struct {\n\t// The authentication credentials the request will be signed against.\n\t// This value must be set to sign requests.\n\tCredentials *credentials.Credentials\n\n\t// Sets the log level the signer should use when reporting information to\n\t// the logger. If the logger is nil nothing will be logged. See\n\t// aws.LogLevelType for more information on available logging levels\n\t//\n\t// By default nothing will be logged.\n\tDebug aws.LogLevelType\n\n\t// The logger loging information will be written to. If there the logger\n\t// is nil, nothing will be logged.\n\tLogger aws.Logger\n\n\t// Disables the Signer's moving HTTP header key/value pairs from the HTTP\n\t// request header to the request's query string. This is most commonly used\n\t// with pre-signed requests preventing headers from being added to the\n\t// request's query string.\n\tDisableHeaderHoisting bool\n\n\t// Disables the automatic escaping of the URI path of the request for the\n\t// siganture's canonical string's path. For services that do not need additional\n\t// escaping then use this to disable the signer escaping the path.\n\t//\n\t// S3 is an example of a service that does not need additional escaping.\n\t//\n\t// http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html\n\tDisableURIPathEscaping bool\n\n\t// Disables the automatical setting of the HTTP request's Body field with the\n\t// io.ReadSeeker passed in to the signer. This is useful if you're using a\n\t// custom wrapper around the body for the io.ReadSeeker and want to preserve\n\t// the Body value on the Request.Body.\n\t//\n\t// This does run the risk of signing a request with a body that will not be\n\t// sent in the request. Need to ensure that the underlying data of the Body\n\t// values are the same.\n\tDisableRequestBodyOverwrite bool\n\n\t// currentTimeFn returns the time value which represents the current time.\n\t// This value should only be used for testing. If it is nil the default\n\t// time.Now will be used.\n\tcurrentTimeFn func() time.Time\n\n\t// UnsignedPayload will prevent signing of the payload. This will only\n\t// work for services that have support for this.\n\tUnsignedPayload bool\n}\n\n// NewSigner returns a Signer pointer configured with the credentials and optional\n// option values provided. If not options are provided the Signer will use its\n// default configuration.\nfunc NewSigner(credentials *credentials.Credentials, options ...func(*Signer)) *Signer {\n\tv4 := &Signer{\n\t\tCredentials: credentials,\n\t}\n\n\tfor _, option := range options {\n\t\toption(v4)\n\t}\n\n\treturn v4\n}\n\ntype signingCtx struct {\n\tServiceName      string\n\tRegion           string\n\tRequest          *http.Request\n\tBody             io.ReadSeeker\n\tQuery            url.Values\n\tTime             time.Time\n\tExpireTime       time.Duration\n\tSignedHeaderVals http.Header\n\n\tDisableURIPathEscaping bool\n\n\tcredValues      credentials.Value\n\tisPresign       bool\n\tunsignedPayload bool\n\n\tbodyDigest       string\n\tsignedHeaders    string\n\tcanonicalHeaders string\n\tcanonicalString  string\n\tcredentialString string\n\tstringToSign     string\n\tsignature        string\n\tauthorization    string\n}\n\n// Sign signs AWS v4 requests with the provided body, service name, region the\n// request is made to, and time the request is signed at. The signTime allows\n// you to specify that a request is signed for the future, and cannot be\n// used until then.\n//\n// Returns a list of HTTP headers that were included in the signature or an\n// error if signing the request failed. Generally for signed requests this value\n// is not needed as the full request context will be captured by the http.Request\n// value. It is included for reference though.\n//\n// Sign will set the request's Body to be the `body` parameter passed in. If\n// the body is not already an io.ReadCloser, it will be wrapped within one. If\n// a `nil` body parameter passed to Sign, the request's Body field will be\n// also set to nil. Its important to note that this functionality will not\n// change the request's ContentLength of the request.\n//\n// Sign differs from Presign in that it will sign the request using HTTP\n// header values. This type of signing is intended for http.Request values that\n// will not be shared, or are shared in a way the header values on the request\n// will not be lost.\n//\n// The requests body is an io.ReadSeeker so the SHA256 of the body can be\n// generated. To bypass the signer computing the hash you can set the\n// \"X-Amz-Content-Sha256\" header with a precomputed value. The signer will\n// only compute the hash if the request header value is empty.\nfunc (v4 Signer) Sign(r *http.Request, body io.ReadSeeker, service, region string, signTime time.Time) (http.Header, error) {\n\treturn v4.signWithBody(r, body, service, region, 0, false, signTime)\n}\n\n// Presign signs AWS v4 requests with the provided body, service name, region\n// the request is made to, and time the request is signed at. The signTime\n// allows you to specify that a request is signed for the future, and cannot\n// be used until then.\n//\n// Returns a list of HTTP headers that were included in the signature or an\n// error if signing the request failed. For presigned requests these headers\n// and their values must be included on the HTTP request when it is made. This\n// is helpful to know what header values need to be shared with the party the\n// presigned request will be distributed to.\n//\n// Presign differs from Sign in that it will sign the request using query string\n// instead of header values. This allows you to share the Presigned Request's\n// URL with third parties, or distribute it throughout your system with minimal\n// dependencies.\n//\n// Presign also takes an exp value which is the duration the\n// signed request will be valid after the signing time. This is allows you to\n// set when the request will expire.\n//\n// The requests body is an io.ReadSeeker so the SHA256 of the body can be\n// generated. To bypass the signer computing the hash you can set the\n// \"X-Amz-Content-Sha256\" header with a precomputed value. The signer will\n// only compute the hash if the request header value is empty.\n//\n// Presigning a S3 request will not compute the body's SHA256 hash by default.\n// This is done due to the general use case for S3 presigned URLs is to share\n// PUT/GET capabilities. If you would like to include the body's SHA256 in the\n// presigned request's signature you can set the \"X-Amz-Content-Sha256\"\n// HTTP header and that will be included in the request's signature.\nfunc (v4 Signer) Presign(r *http.Request, body io.ReadSeeker, service, region string, exp time.Duration, signTime time.Time) (http.Header, error) {\n\treturn v4.signWithBody(r, body, service, region, exp, true, signTime)\n}\n\nfunc (v4 Signer) signWithBody(r *http.Request, body io.ReadSeeker, service, region string, exp time.Duration, isPresign bool, signTime time.Time) (http.Header, error) {\n\tcurrentTimeFn := v4.currentTimeFn\n\tif currentTimeFn == nil {\n\t\tcurrentTimeFn = time.Now\n\t}\n\n\tctx := &signingCtx{\n\t\tRequest:                r,\n\t\tBody:                   body,\n\t\tQuery:                  r.URL.Query(),\n\t\tTime:                   signTime,\n\t\tExpireTime:             exp,\n\t\tisPresign:              isPresign,\n\t\tServiceName:            service,\n\t\tRegion:                 region,\n\t\tDisableURIPathEscaping: v4.DisableURIPathEscaping,\n\t\tunsignedPayload:        v4.UnsignedPayload,\n\t}\n\n\tfor key := range ctx.Query {\n\t\tsort.Strings(ctx.Query[key])\n\t}\n\n\tif ctx.isRequestSigned() {\n\t\tctx.Time = currentTimeFn()\n\t\tctx.handlePresignRemoval()\n\t}\n\n\tvar err error\n\tctx.credValues, err = v4.Credentials.GetWithContext(requestContext(r))\n\tif err != nil {\n\t\treturn http.Header{}, err\n\t}\n\n\tctx.sanitizeHostForHeader()\n\tctx.assignAmzQueryValues()\n\tif err := ctx.build(v4.DisableHeaderHoisting); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// If the request is not presigned the body should be attached to it. This\n\t// prevents the confusion of wanting to send a signed request without\n\t// the body the request was signed for attached.\n\tif !(v4.DisableRequestBodyOverwrite || ctx.isPresign) {\n\t\tvar reader io.ReadCloser\n\t\tif body != nil {\n\t\t\tvar ok bool\n\t\t\tif reader, ok = body.(io.ReadCloser); !ok {\n\t\t\t\treader = ioutil.NopCloser(body)\n\t\t\t}\n\t\t}\n\t\tr.Body = reader\n\t}\n\n\tif v4.Debug.Matches(aws.LogDebugWithSigning) {\n\t\tv4.logSigningInfo(ctx)\n\t}\n\n\treturn ctx.SignedHeaderVals, nil\n}\n\nfunc (ctx *signingCtx) sanitizeHostForHeader() {\n\trequest.SanitizeHostForHeader(ctx.Request)\n}\n\nfunc (ctx *signingCtx) handlePresignRemoval() {\n\tif !ctx.isPresign {\n\t\treturn\n\t}\n\n\t// The credentials have expired for this request. The current signing\n\t// is invalid, and needs to be request because the request will fail.\n\tctx.removePresign()\n\n\t// Update the request's query string to ensure the values stays in\n\t// sync in the case retrieving the new credentials fails.\n\tctx.Request.URL.RawQuery = ctx.Query.Encode()\n}\n\nfunc (ctx *signingCtx) assignAmzQueryValues() {\n\tif ctx.isPresign {\n\t\tctx.Query.Set(\"X-Amz-Algorithm\", authHeaderPrefix)\n\t\tif ctx.credValues.SessionToken != \"\" {\n\t\t\tctx.Query.Set(\"X-Amz-Security-Token\", ctx.credValues.SessionToken)\n\t\t} else {\n\t\t\tctx.Query.Del(\"X-Amz-Security-Token\")\n\t\t}\n\n\t\treturn\n\t}\n\n\tif ctx.credValues.SessionToken != \"\" {\n\t\tctx.Request.Header.Set(\"X-Amz-Security-Token\", ctx.credValues.SessionToken)\n\t}\n}\n\n// SignRequestHandler is a named request handler the SDK will use to sign\n// service client request with using the V4 signature.\nvar SignRequestHandler = request.NamedHandler{\n\tName: \"v4.SignRequestHandler\", Fn: SignSDKRequest,\n}\n\n// SignSDKRequest signs an AWS request with the V4 signature. This\n// request handler should only be used with the SDK's built in service client's\n// API operation requests.\n//\n// This function should not be used on its own, but in conjunction with\n// an AWS service client's API operation call. To sign a standalone request\n// not created by a service client's API operation method use the \"Sign\" or\n// \"Presign\" functions of the \"Signer\" type.\n//\n// If the credentials of the request's config are set to\n// credentials.AnonymousCredentials the request will not be signed.\nfunc SignSDKRequest(req *request.Request) {\n\tSignSDKRequestWithCurrentTime(req, time.Now)\n}\n\n// BuildNamedHandler will build a generic handler for signing.\nfunc BuildNamedHandler(name string, opts ...func(*Signer)) request.NamedHandler {\n\treturn request.NamedHandler{\n\t\tName: name,\n\t\tFn: func(req *request.Request) {\n\t\t\tSignSDKRequestWithCurrentTime(req, time.Now, opts...)\n\t\t},\n\t}\n}\n\n// SignSDKRequestWithCurrentTime will sign the SDK's request using the time\n// function passed in. Behaves the same as SignSDKRequest with the exception\n// the request is signed with the value returned by the current time function.\nfunc SignSDKRequestWithCurrentTime(req *request.Request, curTimeFn func() time.Time, opts ...func(*Signer)) {\n\t// If the request does not need to be signed ignore the signing of the\n\t// request if the AnonymousCredentials object is used.\n\tif req.Config.Credentials == credentials.AnonymousCredentials {\n\t\treturn\n\t}\n\n\tregion := req.ClientInfo.SigningRegion\n\tif region == \"\" {\n\t\tregion = aws.StringValue(req.Config.Region)\n\t}\n\n\tname := req.ClientInfo.SigningName\n\tif name == \"\" {\n\t\tname = req.ClientInfo.ServiceName\n\t}\n\n\tv4 := NewSigner(req.Config.Credentials, func(v4 *Signer) {\n\t\tv4.Debug = req.Config.LogLevel.Value()\n\t\tv4.Logger = req.Config.Logger\n\t\tv4.DisableHeaderHoisting = req.NotHoist\n\t\tv4.currentTimeFn = curTimeFn\n\t\tif name == \"s3\" {\n\t\t\t// S3 service should not have any escaping applied\n\t\t\tv4.DisableURIPathEscaping = true\n\t\t}\n\t\t// Prevents setting the HTTPRequest's Body. Since the Body could be\n\t\t// wrapped in a custom io.Closer that we do not want to be stompped\n\t\t// on top of by the signer.\n\t\tv4.DisableRequestBodyOverwrite = true\n\t})\n\n\tfor _, opt := range opts {\n\t\topt(v4)\n\t}\n\n\tcurTime := curTimeFn()\n\tsignedHeaders, err := v4.signWithBody(req.HTTPRequest, req.GetBody(),\n\t\tname, region, req.ExpireTime, req.ExpireTime > 0, curTime,\n\t)\n\tif err != nil {\n\t\treq.Error = err\n\t\treq.SignedHeaderVals = nil\n\t\treturn\n\t}\n\n\treq.SignedHeaderVals = signedHeaders\n\treq.LastSignedAt = curTime\n}\n\nconst logSignInfoMsg = `DEBUG: Request Signature:\n---[ CANONICAL STRING  ]-----------------------------\n%s\n---[ STRING TO SIGN ]--------------------------------\n%s%s\n-----------------------------------------------------`\nconst logSignedURLMsg = `\n---[ SIGNED URL ]------------------------------------\n%s`\n\nfunc (v4 *Signer) logSigningInfo(ctx *signingCtx) {\n\tsignedURLMsg := \"\"\n\tif ctx.isPresign {\n\t\tsignedURLMsg = fmt.Sprintf(logSignedURLMsg, ctx.Request.URL.String())\n\t}\n\tmsg := fmt.Sprintf(logSignInfoMsg, ctx.canonicalString, ctx.stringToSign, signedURLMsg)\n\tv4.Logger.Log(msg)\n}\n\nfunc (ctx *signingCtx) build(disableHeaderHoisting bool) error {\n\tctx.buildTime()             // no depends\n\tctx.buildCredentialString() // no depends\n\n\tif err := ctx.buildBodyDigest(); err != nil {\n\t\treturn err\n\t}\n\n\tunsignedHeaders := ctx.Request.Header\n\tif ctx.isPresign {\n\t\tif !disableHeaderHoisting {\n\t\t\turlValues := url.Values{}\n\t\t\turlValues, unsignedHeaders = buildQuery(allowedQueryHoisting, unsignedHeaders) // no depends\n\t\t\tfor k := range urlValues {\n\t\t\t\tctx.Query[k] = urlValues[k]\n\t\t\t}\n\t\t}\n\t}\n\n\tctx.buildCanonicalHeaders(ignoredHeaders, unsignedHeaders)\n\tctx.buildCanonicalString() // depends on canon headers / signed headers\n\tctx.buildStringToSign()    // depends on canon string\n\tctx.buildSignature()       // depends on string to sign\n\n\tif ctx.isPresign {\n\t\tctx.Request.URL.RawQuery += \"&\" + signatureQueryKey + \"=\" + ctx.signature\n\t} else {\n\t\tparts := []string{\n\t\t\tauthHeaderPrefix + \" Credential=\" + ctx.credValues.AccessKeyID + \"/\" + ctx.credentialString,\n\t\t\t\"SignedHeaders=\" + ctx.signedHeaders,\n\t\t\tauthHeaderSignatureElem + ctx.signature,\n\t\t}\n\t\tctx.Request.Header.Set(authorizationHeader, strings.Join(parts, \", \"))\n\t}\n\n\treturn nil\n}\n\n// GetSignedRequestSignature attempts to extract the signature of the request.\n// Returning an error if the request is unsigned, or unable to extract the\n// signature.\nfunc GetSignedRequestSignature(r *http.Request) ([]byte, error) {\n\n\tif auth := r.Header.Get(authorizationHeader); len(auth) != 0 {\n\t\tps := strings.Split(auth, \", \")\n\t\tfor _, p := range ps {\n\t\t\tif idx := strings.Index(p, authHeaderSignatureElem); idx >= 0 {\n\t\t\t\tsig := p[len(authHeaderSignatureElem):]\n\t\t\t\tif len(sig) == 0 {\n\t\t\t\t\treturn nil, fmt.Errorf(\"invalid request signature authorization header\")\n\t\t\t\t}\n\t\t\t\treturn hex.DecodeString(sig)\n\t\t\t}\n\t\t}\n\t}\n\n\tif sig := r.URL.Query().Get(\"X-Amz-Signature\"); len(sig) != 0 {\n\t\treturn hex.DecodeString(sig)\n\t}\n\n\treturn nil, fmt.Errorf(\"request not signed\")\n}\n\nfunc (ctx *signingCtx) buildTime() {\n\tif ctx.isPresign {\n\t\tduration := int64(ctx.ExpireTime / time.Second)\n\t\tctx.Query.Set(\"X-Amz-Date\", formatTime(ctx.Time))\n\t\tctx.Query.Set(\"X-Amz-Expires\", strconv.FormatInt(duration, 10))\n\t} else {\n\t\tctx.Request.Header.Set(\"X-Amz-Date\", formatTime(ctx.Time))\n\t}\n}\n\nfunc (ctx *signingCtx) buildCredentialString() {\n\tctx.credentialString = buildSigningScope(ctx.Region, ctx.ServiceName, ctx.Time)\n\n\tif ctx.isPresign {\n\t\tctx.Query.Set(\"X-Amz-Credential\", ctx.credValues.AccessKeyID+\"/\"+ctx.credentialString)\n\t}\n}\n\nfunc buildQuery(r rule, header http.Header) (url.Values, http.Header) {\n\tquery := url.Values{}\n\tunsignedHeaders := http.Header{}\n\tfor k, h := range header {\n\t\tif r.IsValid(k) {\n\t\t\tquery[k] = h\n\t\t} else {\n\t\t\tunsignedHeaders[k] = h\n\t\t}\n\t}\n\n\treturn query, unsignedHeaders\n}\nfunc (ctx *signingCtx) buildCanonicalHeaders(r rule, header http.Header) {\n\tvar headers []string\n\theaders = append(headers, \"host\")\n\tfor k, v := range header {\n\t\tif !r.IsValid(k) {\n\t\t\tcontinue // ignored header\n\t\t}\n\t\tif ctx.SignedHeaderVals == nil {\n\t\t\tctx.SignedHeaderVals = make(http.Header)\n\t\t}\n\n\t\tlowerCaseKey := strings.ToLower(k)\n\t\tif _, ok := ctx.SignedHeaderVals[lowerCaseKey]; ok {\n\t\t\t// include additional values\n\t\t\tctx.SignedHeaderVals[lowerCaseKey] = append(ctx.SignedHeaderVals[lowerCaseKey], v...)\n\t\t\tcontinue\n\t\t}\n\n\t\theaders = append(headers, lowerCaseKey)\n\t\tctx.SignedHeaderVals[lowerCaseKey] = v\n\t}\n\tsort.Strings(headers)\n\n\tctx.signedHeaders = strings.Join(headers, \";\")\n\n\tif ctx.isPresign {\n\t\tctx.Query.Set(\"X-Amz-SignedHeaders\", ctx.signedHeaders)\n\t}\n\n\theaderItems := make([]string, len(headers))\n\tfor i, k := range headers {\n\t\tif k == \"host\" {\n\t\t\tif ctx.Request.Host != \"\" {\n\t\t\t\theaderItems[i] = \"host:\" + ctx.Request.Host\n\t\t\t} else {\n\t\t\t\theaderItems[i] = \"host:\" + ctx.Request.URL.Host\n\t\t\t}\n\t\t} else {\n\t\t\theaderValues := make([]string, len(ctx.SignedHeaderVals[k]))\n\t\t\tfor i, v := range ctx.SignedHeaderVals[k] {\n\t\t\t\theaderValues[i] = strings.TrimSpace(v)\n\t\t\t}\n\t\t\theaderItems[i] = k + \":\" +\n\t\t\t\tstrings.Join(headerValues, \",\")\n\t\t}\n\t}\n\tstripExcessSpaces(headerItems)\n\tctx.canonicalHeaders = strings.Join(headerItems, \"\\n\")\n}\n\nfunc (ctx *signingCtx) buildCanonicalString() {\n\tctx.Request.URL.RawQuery = strings.Replace(ctx.Query.Encode(), \"+\", \"%20\", -1)\n\n\turi := getURIPath(ctx.Request.URL)\n\n\tif !ctx.DisableURIPathEscaping {\n\t\turi = rest.EscapePath(uri, false)\n\t}\n\n\tctx.canonicalString = strings.Join([]string{\n\t\tctx.Request.Method,\n\t\turi,\n\t\tctx.Request.URL.RawQuery,\n\t\tctx.canonicalHeaders + \"\\n\",\n\t\tctx.signedHeaders,\n\t\tctx.bodyDigest,\n\t}, \"\\n\")\n}\n\nfunc (ctx *signingCtx) buildStringToSign() {\n\tctx.stringToSign = strings.Join([]string{\n\t\tauthHeaderPrefix,\n\t\tformatTime(ctx.Time),\n\t\tctx.credentialString,\n\t\thex.EncodeToString(hashSHA256([]byte(ctx.canonicalString))),\n\t}, \"\\n\")\n}\n\nfunc (ctx *signingCtx) buildSignature() {\n\tcreds := deriveSigningKey(ctx.Region, ctx.ServiceName, ctx.credValues.SecretAccessKey, ctx.Time)\n\tsignature := hmacSHA256(creds, []byte(ctx.stringToSign))\n\tctx.signature = hex.EncodeToString(signature)\n}\n\nfunc (ctx *signingCtx) buildBodyDigest() error {\n\thash := ctx.Request.Header.Get(\"X-Amz-Content-Sha256\")\n\tif hash == \"\" {\n\t\tincludeSHA256Header := ctx.unsignedPayload ||\n\t\t\tctx.ServiceName == \"s3\" ||\n\t\t\tctx.ServiceName == \"s3-object-lambda\" ||\n\t\t\tctx.ServiceName == \"glacier\" ||\n\t\t\tctx.ServiceName == \"s3-outposts\"\n\n\t\ts3Presign := ctx.isPresign &&\n\t\t\t(ctx.ServiceName == \"s3\" ||\n\t\t\t\tctx.ServiceName == \"s3-object-lambda\")\n\n\t\tif ctx.unsignedPayload || s3Presign {\n\t\t\thash = \"UNSIGNED-PAYLOAD\"\n\t\t\tincludeSHA256Header = !s3Presign\n\t\t} else if ctx.Body == nil {\n\t\t\thash = emptyStringSHA256\n\t\t} else {\n\t\t\tif !aws.IsReaderSeekable(ctx.Body) {\n\t\t\t\treturn fmt.Errorf(\"cannot use unseekable request body %T, for signed request with body\", ctx.Body)\n\t\t\t}\n\t\t\thashBytes, err := makeSha256Reader(ctx.Body)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\thash = hex.EncodeToString(hashBytes)\n\t\t}\n\n\t\tif includeSHA256Header {\n\t\t\tctx.Request.Header.Set(\"X-Amz-Content-Sha256\", hash)\n\t\t}\n\t}\n\tctx.bodyDigest = hash\n\n\treturn nil\n}\n\n// isRequestSigned returns if the request is currently signed or presigned\nfunc (ctx *signingCtx) isRequestSigned() bool {\n\tif ctx.isPresign && ctx.Query.Get(\"X-Amz-Signature\") != \"\" {\n\t\treturn true\n\t}\n\tif ctx.Request.Header.Get(\"Authorization\") != \"\" {\n\t\treturn true\n\t}\n\n\treturn false\n}\n\n// unsign removes signing flags for both signed and presigned requests.\nfunc (ctx *signingCtx) removePresign() {\n\tctx.Query.Del(\"X-Amz-Algorithm\")\n\tctx.Query.Del(\"X-Amz-Signature\")\n\tctx.Query.Del(\"X-Amz-Security-Token\")\n\tctx.Query.Del(\"X-Amz-Date\")\n\tctx.Query.Del(\"X-Amz-Expires\")\n\tctx.Query.Del(\"X-Amz-Credential\")\n\tctx.Query.Del(\"X-Amz-SignedHeaders\")\n}\n\nfunc hmacSHA256(key []byte, data []byte) []byte {\n\thash := hmac.New(sha256.New, key)\n\thash.Write(data)\n\treturn hash.Sum(nil)\n}\n\nfunc hashSHA256(data []byte) []byte {\n\thash := sha256.New()\n\thash.Write(data)\n\treturn hash.Sum(nil)\n}\n\nfunc makeSha256Reader(reader io.ReadSeeker) (hashBytes []byte, err error) {\n\thash := sha256.New()\n\tstart, err := reader.Seek(0, sdkio.SeekCurrent)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer func() {\n\t\t// ensure error is return if unable to seek back to start of payload.\n\t\t_, err = reader.Seek(start, sdkio.SeekStart)\n\t}()\n\n\t// Use CopyN to avoid allocating the 32KB buffer in io.Copy for bodies\n\t// smaller than 32KB. Fall back to io.Copy if we fail to determine the size.\n\tsize, err := aws.SeekerLen(reader)\n\tif err != nil {\n\t\tio.Copy(hash, reader)\n\t} else {\n\t\tio.CopyN(hash, reader, size)\n\t}\n\n\treturn hash.Sum(nil), nil\n}\n\nconst doubleSpace = \"  \"\n\n// stripExcessSpaces will rewrite the passed in slice's string values to not\n// contain multiple side-by-side spaces.\nfunc stripExcessSpaces(vals []string) {\n\tvar j, k, l, m, spaces int\n\tfor i, str := range vals {\n\t\t// Trim trailing spaces\n\t\tfor j = len(str) - 1; j >= 0 && str[j] == ' '; j-- {\n\t\t}\n\n\t\t// Trim leading spaces\n\t\tfor k = 0; k < j && str[k] == ' '; k++ {\n\t\t}\n\t\tstr = str[k : j+1]\n\n\t\t// Strip multiple spaces.\n\t\tj = strings.Index(str, doubleSpace)\n\t\tif j < 0 {\n\t\t\tvals[i] = str\n\t\t\tcontinue\n\t\t}\n\n\t\tbuf := []byte(str)\n\t\tfor k, m, l = j, j, len(buf); k < l; k++ {\n\t\t\tif buf[k] == ' ' {\n\t\t\t\tif spaces == 0 {\n\t\t\t\t\t// First space.\n\t\t\t\t\tbuf[m] = buf[k]\n\t\t\t\t\tm++\n\t\t\t\t}\n\t\t\t\tspaces++\n\t\t\t} else {\n\t\t\t\t// End of multiple spaces.\n\t\t\t\tspaces = 0\n\t\t\t\tbuf[m] = buf[k]\n\t\t\t\tm++\n\t\t\t}\n\t\t}\n\n\t\tvals[i] = string(buf[:m])\n\t}\n}\n\nfunc buildSigningScope(region, service string, dt time.Time) string {\n\treturn strings.Join([]string{\n\t\tformatShortTime(dt),\n\t\tregion,\n\t\tservice,\n\t\tawsV4Request,\n\t}, \"/\")\n}\n\nfunc deriveSigningKey(region, service, secretKey string, dt time.Time) []byte {\n\tkDate := hmacSHA256([]byte(\"AWS4\"+secretKey), []byte(formatShortTime(dt)))\n\tkRegion := hmacSHA256(kDate, []byte(region))\n\tkService := hmacSHA256(kRegion, []byte(service))\n\tsigningKey := hmacSHA256(kService, []byte(awsV4Request))\n\treturn signingKey\n}\n\nfunc formatShortTime(dt time.Time) string {\n\treturn dt.UTC().Format(shortTimeFormat)\n}\n\nfunc formatTime(dt time.Time) string {\n\treturn dt.UTC().Format(timeFormat)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/types.go",
    "content": "package aws\n\nimport (\n\t\"io\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/aws/aws-sdk-go/internal/sdkio\"\n)\n\n// ReadSeekCloser wraps a io.Reader returning a ReaderSeekerCloser. Allows the\n// SDK to accept an io.Reader that is not also an io.Seeker for unsigned\n// streaming payload API operations.\n//\n// A ReadSeekCloser wrapping an nonseekable io.Reader used in an API\n// operation's input will prevent that operation being retried in the case of\n// network errors, and cause operation requests to fail if the operation\n// requires payload signing.\n//\n// Note: If using With S3 PutObject to stream an object upload The SDK's S3\n// Upload manager (s3manager.Uploader) provides support for streaming with the\n// ability to retry network errors.\nfunc ReadSeekCloser(r io.Reader) ReaderSeekerCloser {\n\treturn ReaderSeekerCloser{r}\n}\n\n// ReaderSeekerCloser represents a reader that can also delegate io.Seeker and\n// io.Closer interfaces to the underlying object if they are available.\ntype ReaderSeekerCloser struct {\n\tr io.Reader\n}\n\n// IsReaderSeekable returns if the underlying reader type can be seeked. A\n// io.Reader might not actually be seekable if it is the ReaderSeekerCloser\n// type.\nfunc IsReaderSeekable(r io.Reader) bool {\n\tswitch v := r.(type) {\n\tcase ReaderSeekerCloser:\n\t\treturn v.IsSeeker()\n\tcase *ReaderSeekerCloser:\n\t\treturn v.IsSeeker()\n\tcase io.ReadSeeker:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Read reads from the reader up to size of p. The number of bytes read, and\n// error if it occurred will be returned.\n//\n// If the reader is not an io.Reader zero bytes read, and nil error will be\n// returned.\n//\n// Performs the same functionality as io.Reader Read\nfunc (r ReaderSeekerCloser) Read(p []byte) (int, error) {\n\tswitch t := r.r.(type) {\n\tcase io.Reader:\n\t\treturn t.Read(p)\n\t}\n\treturn 0, nil\n}\n\n// Seek sets the offset for the next Read to offset, interpreted according to\n// whence: 0 means relative to the origin of the file, 1 means relative to the\n// current offset, and 2 means relative to the end. Seek returns the new offset\n// and an error, if any.\n//\n// If the ReaderSeekerCloser is not an io.Seeker nothing will be done.\nfunc (r ReaderSeekerCloser) Seek(offset int64, whence int) (int64, error) {\n\tswitch t := r.r.(type) {\n\tcase io.Seeker:\n\t\treturn t.Seek(offset, whence)\n\t}\n\treturn int64(0), nil\n}\n\n// IsSeeker returns if the underlying reader is also a seeker.\nfunc (r ReaderSeekerCloser) IsSeeker() bool {\n\t_, ok := r.r.(io.Seeker)\n\treturn ok\n}\n\n// HasLen returns the length of the underlying reader if the value implements\n// the Len() int method.\nfunc (r ReaderSeekerCloser) HasLen() (int, bool) {\n\ttype lenner interface {\n\t\tLen() int\n\t}\n\n\tif lr, ok := r.r.(lenner); ok {\n\t\treturn lr.Len(), true\n\t}\n\n\treturn 0, false\n}\n\n// GetLen returns the length of the bytes remaining in the underlying reader.\n// Checks first for Len(), then io.Seeker to determine the size of the\n// underlying reader.\n//\n// Will return -1 if the length cannot be determined.\nfunc (r ReaderSeekerCloser) GetLen() (int64, error) {\n\tif l, ok := r.HasLen(); ok {\n\t\treturn int64(l), nil\n\t}\n\n\tif s, ok := r.r.(io.Seeker); ok {\n\t\treturn seekerLen(s)\n\t}\n\n\treturn -1, nil\n}\n\n// SeekerLen attempts to get the number of bytes remaining at the seeker's\n// current position.  Returns the number of bytes remaining or error.\nfunc SeekerLen(s io.Seeker) (int64, error) {\n\t// Determine if the seeker is actually seekable. ReaderSeekerCloser\n\t// hides the fact that a io.Readers might not actually be seekable.\n\tswitch v := s.(type) {\n\tcase ReaderSeekerCloser:\n\t\treturn v.GetLen()\n\tcase *ReaderSeekerCloser:\n\t\treturn v.GetLen()\n\t}\n\n\treturn seekerLen(s)\n}\n\nfunc seekerLen(s io.Seeker) (int64, error) {\n\tcurOffset, err := s.Seek(0, sdkio.SeekCurrent)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tendOffset, err := s.Seek(0, sdkio.SeekEnd)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t_, err = s.Seek(curOffset, sdkio.SeekStart)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\treturn endOffset - curOffset, nil\n}\n\n// Close closes the ReaderSeekerCloser.\n//\n// If the ReaderSeekerCloser is not an io.Closer nothing will be done.\nfunc (r ReaderSeekerCloser) Close() error {\n\tswitch t := r.r.(type) {\n\tcase io.Closer:\n\t\treturn t.Close()\n\t}\n\treturn nil\n}\n\n// A WriteAtBuffer provides a in memory buffer supporting the io.WriterAt interface\n// Can be used with the s3manager.Downloader to download content to a buffer\n// in memory. Safe to use concurrently.\ntype WriteAtBuffer struct {\n\tbuf []byte\n\tm   sync.Mutex\n\n\t// GrowthCoeff defines the growth rate of the internal buffer. By\n\t// default, the growth rate is 1, where expanding the internal\n\t// buffer will allocate only enough capacity to fit the new expected\n\t// length.\n\tGrowthCoeff float64\n}\n\n// NewWriteAtBuffer creates a WriteAtBuffer with an internal buffer\n// provided by buf.\nfunc NewWriteAtBuffer(buf []byte) *WriteAtBuffer {\n\treturn &WriteAtBuffer{buf: buf}\n}\n\n// WriteAt writes a slice of bytes to a buffer starting at the position provided\n// The number of bytes written will be returned, or error. Can overwrite previous\n// written slices if the write ats overlap.\nfunc (b *WriteAtBuffer) WriteAt(p []byte, pos int64) (n int, err error) {\n\tpLen := len(p)\n\texpLen := pos + int64(pLen)\n\tb.m.Lock()\n\tdefer b.m.Unlock()\n\tif int64(len(b.buf)) < expLen {\n\t\tif int64(cap(b.buf)) < expLen {\n\t\t\tif b.GrowthCoeff < 1 {\n\t\t\t\tb.GrowthCoeff = 1\n\t\t\t}\n\t\t\tnewBuf := make([]byte, expLen, int64(b.GrowthCoeff*float64(expLen)))\n\t\t\tcopy(newBuf, b.buf)\n\t\t\tb.buf = newBuf\n\t\t}\n\t\tb.buf = b.buf[:expLen]\n\t}\n\tcopy(b.buf[pos:], p)\n\treturn pLen, nil\n}\n\n// Bytes returns a slice of bytes written to the buffer.\nfunc (b *WriteAtBuffer) Bytes() []byte {\n\tb.m.Lock()\n\tdefer b.m.Unlock()\n\treturn b.buf\n}\n\n// MultiCloser is a utility to close multiple io.Closers within a single\n// statement.\ntype MultiCloser []io.Closer\n\n// Close closes all of the io.Closers making up the MultiClosers. Any\n// errors that occur while closing will be returned in the order they\n// occur.\nfunc (m MultiCloser) Close() error {\n\tvar errs errors\n\tfor _, c := range m {\n\t\terr := c.Close()\n\t\tif err != nil {\n\t\t\terrs = append(errs, err)\n\t\t}\n\t}\n\tif len(errs) != 0 {\n\t\treturn errs\n\t}\n\n\treturn nil\n}\n\ntype errors []error\n\nfunc (es errors) Error() string {\n\tvar parts []string\n\tfor _, e := range es {\n\t\tparts = append(parts, e.Error())\n\t}\n\n\treturn strings.Join(parts, \"\\n\")\n}\n\n// CopySeekableBody copies the seekable body to an io.Writer\nfunc CopySeekableBody(dst io.Writer, src io.ReadSeeker) (int64, error) {\n\tcurPos, err := src.Seek(0, sdkio.SeekCurrent)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t// copy errors may be assumed to be from the body.\n\tn, err := io.Copy(dst, src)\n\tif err != nil {\n\t\treturn n, err\n\t}\n\n\t// seek back to the first position after reading to reset\n\t// the body for transmission.\n\t_, err = src.Seek(curPos, sdkio.SeekStart)\n\tif err != nil {\n\t\treturn n, err\n\t}\n\n\treturn n, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/url.go",
    "content": "//go:build go1.8\n// +build go1.8\n\npackage aws\n\nimport \"net/url\"\n\n// URLHostname will extract the Hostname without port from the URL value.\n//\n// Wrapper of net/url#URL.Hostname for backwards Go version compatibility.\nfunc URLHostname(url *url.URL) string {\n\treturn url.Hostname()\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/url_1_7.go",
    "content": "//go:build !go1.8\n// +build !go1.8\n\npackage aws\n\nimport (\n\t\"net/url\"\n\t\"strings\"\n)\n\n// URLHostname will extract the Hostname without port from the URL value.\n//\n// Copy of Go 1.8's net/url#URL.Hostname functionality.\nfunc URLHostname(url *url.URL) string {\n\treturn stripPort(url.Host)\n\n}\n\n// stripPort is copy of Go 1.8 url#URL.Hostname functionality.\n// https://golang.org/src/net/url/url.go\nfunc stripPort(hostport string) string {\n\tcolon := strings.IndexByte(hostport, ':')\n\tif colon == -1 {\n\t\treturn hostport\n\t}\n\tif i := strings.IndexByte(hostport, ']'); i != -1 {\n\t\treturn strings.TrimPrefix(hostport[:i], \"[\")\n\t}\n\treturn hostport[:colon]\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/aws/version.go",
    "content": "// Package aws provides core functionality for making requests to AWS services.\npackage aws\n\n// SDKName is the name of this AWS SDK\nconst SDKName = \"aws-sdk-go\"\n\n// SDKVersion is the version of this SDK\nconst SDKVersion = \"1.48.16\"\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/context/background_go1.5.go",
    "content": "//go:build !go1.7\n// +build !go1.7\n\npackage context\n\nimport \"time\"\n\n// An emptyCtx is a copy of the Go 1.7 context.emptyCtx type. This is copied to\n// provide a 1.6 and 1.5 safe version of context that is compatible with Go\n// 1.7's Context.\n//\n// An emptyCtx is never canceled, has no values, and has no deadline. It is not\n// struct{}, since vars of this type must have distinct addresses.\ntype emptyCtx int\n\nfunc (*emptyCtx) Deadline() (deadline time.Time, ok bool) {\n\treturn\n}\n\nfunc (*emptyCtx) Done() <-chan struct{} {\n\treturn nil\n}\n\nfunc (*emptyCtx) Err() error {\n\treturn nil\n}\n\nfunc (*emptyCtx) Value(key interface{}) interface{} {\n\treturn nil\n}\n\nfunc (e *emptyCtx) String() string {\n\tswitch e {\n\tcase BackgroundCtx:\n\t\treturn \"aws.BackgroundContext\"\n\t}\n\treturn \"unknown empty Context\"\n}\n\n// BackgroundCtx is the common base context.\nvar BackgroundCtx = new(emptyCtx)\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/ast.go",
    "content": "package ini\n\n// ASTKind represents different states in the parse table\n// and the type of AST that is being constructed\ntype ASTKind int\n\n// ASTKind* is used in the parse table to transition between\n// the different states\nconst (\n\tASTKindNone = ASTKind(iota)\n\tASTKindStart\n\tASTKindExpr\n\tASTKindEqualExpr\n\tASTKindStatement\n\tASTKindSkipStatement\n\tASTKindExprStatement\n\tASTKindSectionStatement\n\tASTKindNestedSectionStatement\n\tASTKindCompletedNestedSectionStatement\n\tASTKindCommentStatement\n\tASTKindCompletedSectionStatement\n)\n\nfunc (k ASTKind) String() string {\n\tswitch k {\n\tcase ASTKindNone:\n\t\treturn \"none\"\n\tcase ASTKindStart:\n\t\treturn \"start\"\n\tcase ASTKindExpr:\n\t\treturn \"expr\"\n\tcase ASTKindStatement:\n\t\treturn \"stmt\"\n\tcase ASTKindSectionStatement:\n\t\treturn \"section_stmt\"\n\tcase ASTKindExprStatement:\n\t\treturn \"expr_stmt\"\n\tcase ASTKindCommentStatement:\n\t\treturn \"comment\"\n\tcase ASTKindNestedSectionStatement:\n\t\treturn \"nested_section_stmt\"\n\tcase ASTKindCompletedSectionStatement:\n\t\treturn \"completed_stmt\"\n\tcase ASTKindSkipStatement:\n\t\treturn \"skip\"\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\n// AST interface allows us to determine what kind of node we\n// are on and casting may not need to be necessary.\n//\n// The root is always the first node in Children\ntype AST struct {\n\tKind      ASTKind\n\tRoot      Token\n\tRootToken bool\n\tChildren  []AST\n}\n\nfunc newAST(kind ASTKind, root AST, children ...AST) AST {\n\treturn AST{\n\t\tKind:     kind,\n\t\tChildren: append([]AST{root}, children...),\n\t}\n}\n\nfunc newASTWithRootToken(kind ASTKind, root Token, children ...AST) AST {\n\treturn AST{\n\t\tKind:      kind,\n\t\tRoot:      root,\n\t\tRootToken: true,\n\t\tChildren:  children,\n\t}\n}\n\n// AppendChild will append to the list of children an AST has.\nfunc (a *AST) AppendChild(child AST) {\n\ta.Children = append(a.Children, child)\n}\n\n// GetRoot will return the root AST which can be the first entry\n// in the children list or a token.\nfunc (a *AST) GetRoot() AST {\n\tif a.RootToken {\n\t\treturn *a\n\t}\n\n\tif len(a.Children) == 0 {\n\t\treturn AST{}\n\t}\n\n\treturn a.Children[0]\n}\n\n// GetChildren will return the current AST's list of children\nfunc (a *AST) GetChildren() []AST {\n\tif len(a.Children) == 0 {\n\t\treturn []AST{}\n\t}\n\n\tif a.RootToken {\n\t\treturn a.Children\n\t}\n\n\treturn a.Children[1:]\n}\n\n// SetChildren will set and override all children of the AST.\nfunc (a *AST) SetChildren(children []AST) {\n\tif a.RootToken {\n\t\ta.Children = children\n\t} else {\n\t\ta.Children = append(a.Children[:1], children...)\n\t}\n}\n\n// Start is used to indicate the starting state of the parse table.\nvar Start = newAST(ASTKindStart, AST{})\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/comma_token.go",
    "content": "package ini\n\nvar commaRunes = []rune(\",\")\n\nfunc isComma(b rune) bool {\n\treturn b == ','\n}\n\nfunc newCommaToken() Token {\n\treturn newToken(TokenComma, commaRunes, NoneType)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/comment_token.go",
    "content": "package ini\n\n// isComment will return whether or not the next byte(s) is a\n// comment.\nfunc isComment(b []rune) bool {\n\tif len(b) == 0 {\n\t\treturn false\n\t}\n\n\tswitch b[0] {\n\tcase ';':\n\t\treturn true\n\tcase '#':\n\t\treturn true\n\t}\n\n\treturn false\n}\n\n// newCommentToken will create a comment token and\n// return how many bytes were read.\nfunc newCommentToken(b []rune) (Token, int, error) {\n\ti := 0\n\tfor ; i < len(b); i++ {\n\t\tif b[i] == '\\n' {\n\t\t\tbreak\n\t\t}\n\n\t\tif len(b)-i > 2 && b[i] == '\\r' && b[i+1] == '\\n' {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn newToken(TokenComment, b[:i], NoneType), i, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/doc.go",
    "content": "// Package ini is an LL(1) parser for configuration files.\n//\n//\tExample:\n//\tsections, err := ini.OpenFile(\"/path/to/file\")\n//\tif err != nil {\n//\t\tpanic(err)\n//\t}\n//\n//\tprofile := \"foo\"\n//\tsection, ok := sections.GetSection(profile)\n//\tif !ok {\n//\t\tfmt.Printf(\"section %q could not be found\", profile)\n//\t}\n//\n// Below is the BNF that describes this parser\n//  Grammar:\n//  stmt -> section | stmt'\n//  stmt' -> epsilon | expr\n//  expr -> value (stmt)* | equal_expr (stmt)*\n//  equal_expr -> value ( ':' | '=' ) equal_expr'\n//  equal_expr' -> number | string | quoted_string\n//  quoted_string -> \" quoted_string'\n//  quoted_string' -> string quoted_string_end\n//  quoted_string_end -> \"\n//\n//  section -> [ section'\n//  section' -> section_value section_close\n//  section_value -> number | string_subset | boolean | quoted_string_subset\n//  quoted_string_subset -> \" quoted_string_subset'\n//  quoted_string_subset' -> string_subset quoted_string_end\n//  quoted_string_subset -> \"\n//  section_close -> ]\n//\n//  value -> number | string_subset | boolean\n//  string -> ? UTF-8 Code-Points except '\\n' (U+000A) and '\\r\\n' (U+000D U+000A) ?\n//  string_subset -> ? Code-points excepted by <string> grammar except ':' (U+003A), '=' (U+003D), '[' (U+005B), and ']' (U+005D) ?\n//\n//  SkipState will skip (NL WS)+\n//\n//  comment -> # comment' | ; comment'\n//  comment' -> epsilon | value\npackage ini\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/empty_token.go",
    "content": "package ini\n\n// emptyToken is used to satisfy the Token interface\nvar emptyToken = newToken(TokenNone, []rune{}, NoneType)\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/expression.go",
    "content": "package ini\n\n// newExpression will return an expression AST.\n// Expr represents an expression\n//\n//\tgrammar:\n//\texpr -> string | number\nfunc newExpression(tok Token) AST {\n\treturn newASTWithRootToken(ASTKindExpr, tok)\n}\n\nfunc newEqualExpr(left AST, tok Token) AST {\n\treturn newASTWithRootToken(ASTKindEqualExpr, tok, left)\n}\n\n// EqualExprKey will return a LHS value in the equal expr\nfunc EqualExprKey(ast AST) string {\n\tchildren := ast.GetChildren()\n\tif len(children) == 0 || ast.Kind != ASTKindEqualExpr {\n\t\treturn \"\"\n\t}\n\n\treturn string(children[0].Root.Raw())\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/fuzz.go",
    "content": "//go:build gofuzz\n// +build gofuzz\n\npackage ini\n\nimport (\n\t\"bytes\"\n)\n\nfunc Fuzz(data []byte) int {\n\tb := bytes.NewReader(data)\n\n\tif _, err := Parse(b); err != nil {\n\t\treturn 0\n\t}\n\n\treturn 1\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/ini.go",
    "content": "package ini\n\nimport (\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\n// OpenFile takes a path to a given file, and will open  and parse\n// that file.\nfunc OpenFile(path string) (Sections, error) {\n\tf, err := os.Open(path)\n\tif err != nil {\n\t\treturn Sections{}, awserr.New(ErrCodeUnableToReadFile, \"unable to open file\", err)\n\t}\n\tdefer f.Close()\n\n\treturn Parse(f)\n}\n\n// Parse will parse the given file using the shared config\n// visitor.\nfunc Parse(f io.Reader) (Sections, error) {\n\ttree, err := ParseAST(f)\n\tif err != nil {\n\t\treturn Sections{}, err\n\t}\n\n\tv := NewDefaultVisitor()\n\tif err = Walk(tree, v); err != nil {\n\t\treturn Sections{}, err\n\t}\n\n\treturn v.Sections, nil\n}\n\n// ParseBytes will parse the given bytes and return the parsed sections.\nfunc ParseBytes(b []byte) (Sections, error) {\n\ttree, err := ParseASTBytes(b)\n\tif err != nil {\n\t\treturn Sections{}, err\n\t}\n\n\tv := NewDefaultVisitor()\n\tif err = Walk(tree, v); err != nil {\n\t\treturn Sections{}, err\n\t}\n\n\treturn v.Sections, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/ini_lexer.go",
    "content": "package ini\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"io/ioutil\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\nconst (\n\t// ErrCodeUnableToReadFile is used when a file is failed to be\n\t// opened or read from.\n\tErrCodeUnableToReadFile = \"FailedRead\"\n)\n\n// TokenType represents the various different tokens types\ntype TokenType int\n\nfunc (t TokenType) String() string {\n\tswitch t {\n\tcase TokenNone:\n\t\treturn \"none\"\n\tcase TokenLit:\n\t\treturn \"literal\"\n\tcase TokenSep:\n\t\treturn \"sep\"\n\tcase TokenOp:\n\t\treturn \"op\"\n\tcase TokenWS:\n\t\treturn \"ws\"\n\tcase TokenNL:\n\t\treturn \"newline\"\n\tcase TokenComment:\n\t\treturn \"comment\"\n\tcase TokenComma:\n\t\treturn \"comma\"\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\n// TokenType enums\nconst (\n\tTokenNone = TokenType(iota)\n\tTokenLit\n\tTokenSep\n\tTokenComma\n\tTokenOp\n\tTokenWS\n\tTokenNL\n\tTokenComment\n)\n\ntype iniLexer struct{}\n\n// Tokenize will return a list of tokens during lexical analysis of the\n// io.Reader.\nfunc (l *iniLexer) Tokenize(r io.Reader) ([]Token, error) {\n\tb, err := ioutil.ReadAll(r)\n\tif err != nil {\n\t\treturn nil, awserr.New(ErrCodeUnableToReadFile, \"unable to read file\", err)\n\t}\n\n\treturn l.tokenize(b)\n}\n\nfunc (l *iniLexer) tokenize(b []byte) ([]Token, error) {\n\trunes := bytes.Runes(b)\n\tvar err error\n\tn := 0\n\ttokenAmount := countTokens(runes)\n\ttokens := make([]Token, tokenAmount)\n\tcount := 0\n\n\tfor len(runes) > 0 && count < tokenAmount {\n\t\tswitch {\n\t\tcase isWhitespace(runes[0]):\n\t\t\ttokens[count], n, err = newWSToken(runes)\n\t\tcase isComma(runes[0]):\n\t\t\ttokens[count], n = newCommaToken(), 1\n\t\tcase isComment(runes):\n\t\t\ttokens[count], n, err = newCommentToken(runes)\n\t\tcase isNewline(runes):\n\t\t\ttokens[count], n, err = newNewlineToken(runes)\n\t\tcase isSep(runes):\n\t\t\ttokens[count], n, err = newSepToken(runes)\n\t\tcase isOp(runes):\n\t\t\ttokens[count], n, err = newOpToken(runes)\n\t\tdefault:\n\t\t\ttokens[count], n, err = newLitToken(runes)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tcount++\n\n\t\trunes = runes[n:]\n\t}\n\n\treturn tokens[:count], nil\n}\n\nfunc countTokens(runes []rune) int {\n\tcount, n := 0, 0\n\tvar err error\n\n\tfor len(runes) > 0 {\n\t\tswitch {\n\t\tcase isWhitespace(runes[0]):\n\t\t\t_, n, err = newWSToken(runes)\n\t\tcase isComma(runes[0]):\n\t\t\t_, n = newCommaToken(), 1\n\t\tcase isComment(runes):\n\t\t\t_, n, err = newCommentToken(runes)\n\t\tcase isNewline(runes):\n\t\t\t_, n, err = newNewlineToken(runes)\n\t\tcase isSep(runes):\n\t\t\t_, n, err = newSepToken(runes)\n\t\tcase isOp(runes):\n\t\t\t_, n, err = newOpToken(runes)\n\t\tdefault:\n\t\t\t_, n, err = newLitToken(runes)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn 0\n\t\t}\n\n\t\tcount++\n\t\trunes = runes[n:]\n\t}\n\n\treturn count + 1\n}\n\n// Token indicates a metadata about a given value.\ntype Token struct {\n\tt         TokenType\n\tValueType ValueType\n\tbase      int\n\traw       []rune\n}\n\nvar emptyValue = Value{}\n\nfunc newToken(t TokenType, raw []rune, v ValueType) Token {\n\treturn Token{\n\t\tt:         t,\n\t\traw:       raw,\n\t\tValueType: v,\n\t}\n}\n\n// Raw return the raw runes that were consumed\nfunc (tok Token) Raw() []rune {\n\treturn tok.raw\n}\n\n// Type returns the token type\nfunc (tok Token) Type() TokenType {\n\treturn tok.t\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go",
    "content": "package ini\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n// ParseState represents the current state of the parser.\ntype ParseState uint\n\n// State enums for the parse table\nconst (\n\tInvalidState ParseState = iota\n\t// stmt -> value stmt'\n\tStatementState\n\t// stmt' -> MarkComplete | op stmt\n\tStatementPrimeState\n\t// value -> number | string | boolean | quoted_string\n\tValueState\n\t// section -> [ section'\n\tOpenScopeState\n\t// section' -> value section_close\n\tSectionState\n\t// section_close -> ]\n\tCloseScopeState\n\t// SkipState will skip (NL WS)+\n\tSkipState\n\t// SkipTokenState will skip any token and push the previous\n\t// state onto the stack.\n\tSkipTokenState\n\t// comment -> # comment' | ; comment'\n\t// comment' -> MarkComplete | value\n\tCommentState\n\t// MarkComplete state will complete statements and move that\n\t// to the completed AST list\n\tMarkCompleteState\n\t// TerminalState signifies that the tokens have been fully parsed\n\tTerminalState\n)\n\n// parseTable is a state machine to dictate the grammar above.\nvar parseTable = map[ASTKind]map[TokenType]ParseState{\n\tASTKindStart: {\n\t\tTokenLit:     StatementState,\n\t\tTokenSep:     OpenScopeState,\n\t\tTokenWS:      SkipTokenState,\n\t\tTokenNL:      SkipTokenState,\n\t\tTokenComment: CommentState,\n\t\tTokenNone:    TerminalState,\n\t},\n\tASTKindCommentStatement: {\n\t\tTokenLit:     StatementState,\n\t\tTokenSep:     OpenScopeState,\n\t\tTokenWS:      SkipTokenState,\n\t\tTokenNL:      SkipTokenState,\n\t\tTokenComment: CommentState,\n\t\tTokenNone:    MarkCompleteState,\n\t},\n\tASTKindExpr: {\n\t\tTokenOp:      StatementPrimeState,\n\t\tTokenLit:     ValueState,\n\t\tTokenSep:     OpenScopeState,\n\t\tTokenWS:      ValueState,\n\t\tTokenNL:      SkipState,\n\t\tTokenComment: CommentState,\n\t\tTokenNone:    MarkCompleteState,\n\t},\n\tASTKindEqualExpr: {\n\t\tTokenLit:  ValueState,\n\t\tTokenSep:  ValueState,\n\t\tTokenOp:   ValueState,\n\t\tTokenWS:   SkipTokenState,\n\t\tTokenNL:   SkipState,\n\t\tTokenNone: SkipState,\n\t},\n\tASTKindStatement: {\n\t\tTokenLit:     SectionState,\n\t\tTokenSep:     CloseScopeState,\n\t\tTokenWS:      SkipTokenState,\n\t\tTokenNL:      SkipTokenState,\n\t\tTokenComment: CommentState,\n\t\tTokenNone:    MarkCompleteState,\n\t},\n\tASTKindExprStatement: {\n\t\tTokenLit:     ValueState,\n\t\tTokenSep:     ValueState,\n\t\tTokenOp:      ValueState,\n\t\tTokenWS:      ValueState,\n\t\tTokenNL:      MarkCompleteState,\n\t\tTokenComment: CommentState,\n\t\tTokenNone:    TerminalState,\n\t\tTokenComma:   SkipState,\n\t},\n\tASTKindSectionStatement: {\n\t\tTokenLit: SectionState,\n\t\tTokenOp:  SectionState,\n\t\tTokenSep: CloseScopeState,\n\t\tTokenWS:  SectionState,\n\t\tTokenNL:  SkipTokenState,\n\t},\n\tASTKindCompletedSectionStatement: {\n\t\tTokenWS:      SkipTokenState,\n\t\tTokenNL:      SkipTokenState,\n\t\tTokenLit:     StatementState,\n\t\tTokenSep:     OpenScopeState,\n\t\tTokenComment: CommentState,\n\t\tTokenNone:    MarkCompleteState,\n\t},\n\tASTKindSkipStatement: {\n\t\tTokenLit:     StatementState,\n\t\tTokenSep:     OpenScopeState,\n\t\tTokenWS:      SkipTokenState,\n\t\tTokenNL:      SkipTokenState,\n\t\tTokenComment: CommentState,\n\t\tTokenNone:    TerminalState,\n\t},\n}\n\n// ParseAST will parse input from an io.Reader using\n// an LL(1) parser.\nfunc ParseAST(r io.Reader) ([]AST, error) {\n\tlexer := iniLexer{}\n\ttokens, err := lexer.Tokenize(r)\n\tif err != nil {\n\t\treturn []AST{}, err\n\t}\n\n\treturn parse(tokens)\n}\n\n// ParseASTBytes will parse input from a byte slice using\n// an LL(1) parser.\nfunc ParseASTBytes(b []byte) ([]AST, error) {\n\tlexer := iniLexer{}\n\ttokens, err := lexer.tokenize(b)\n\tif err != nil {\n\t\treturn []AST{}, err\n\t}\n\n\treturn parse(tokens)\n}\n\nfunc parse(tokens []Token) ([]AST, error) {\n\tstart := Start\n\tstack := newParseStack(3, len(tokens))\n\n\tstack.Push(start)\n\ts := newSkipper()\n\nloop:\n\tfor stack.Len() > 0 {\n\t\tk := stack.Pop()\n\n\t\tvar tok Token\n\t\tif len(tokens) == 0 {\n\t\t\t// this occurs when all the tokens have been processed\n\t\t\t// but reduction of what's left on the stack needs to\n\t\t\t// occur.\n\t\t\ttok = emptyToken\n\t\t} else {\n\t\t\ttok = tokens[0]\n\t\t}\n\n\t\tstep := parseTable[k.Kind][tok.Type()]\n\t\tif s.ShouldSkip(tok) {\n\t\t\t// being in a skip state with no tokens will break out of\n\t\t\t// the parse loop since there is nothing left to process.\n\t\t\tif len(tokens) == 0 {\n\t\t\t\tbreak loop\n\t\t\t}\n\t\t\t// if should skip is true, we skip the tokens until should skip is set to false.\n\t\t\tstep = SkipTokenState\n\t\t}\n\n\t\tswitch step {\n\t\tcase TerminalState:\n\t\t\t// Finished parsing. Push what should be the last\n\t\t\t// statement to the stack. If there is anything left\n\t\t\t// on the stack, an error in parsing has occurred.\n\t\t\tif k.Kind != ASTKindStart {\n\t\t\t\tstack.MarkComplete(k)\n\t\t\t}\n\t\t\tbreak loop\n\t\tcase SkipTokenState:\n\t\t\t// When skipping a token, the previous state was popped off the stack.\n\t\t\t// To maintain the correct state, the previous state will be pushed\n\t\t\t// onto the stack.\n\t\t\tstack.Push(k)\n\t\tcase StatementState:\n\t\t\tif k.Kind != ASTKindStart {\n\t\t\t\tstack.MarkComplete(k)\n\t\t\t}\n\t\t\texpr := newExpression(tok)\n\t\t\tstack.Push(expr)\n\t\tcase StatementPrimeState:\n\t\t\tif tok.Type() != TokenOp {\n\t\t\t\tstack.MarkComplete(k)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif k.Kind != ASTKindExpr {\n\t\t\t\treturn nil, NewParseError(\n\t\t\t\t\tfmt.Sprintf(\"invalid expression: expected Expr type, but found %T type\", k),\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tk = trimSpaces(k)\n\t\t\texpr := newEqualExpr(k, tok)\n\t\t\tstack.Push(expr)\n\t\tcase ValueState:\n\t\t\t// ValueState requires the previous state to either be an equal expression\n\t\t\t// or an expression statement.\n\t\t\tswitch k.Kind {\n\t\t\tcase ASTKindEqualExpr:\n\t\t\t\t// assigning a value to some key\n\t\t\t\tk.AppendChild(newExpression(tok))\n\t\t\t\tstack.Push(newExprStatement(k))\n\t\t\tcase ASTKindExpr:\n\t\t\t\tk.Root.raw = append(k.Root.raw, tok.Raw()...)\n\t\t\t\tstack.Push(k)\n\t\t\tcase ASTKindExprStatement:\n\t\t\t\troot := k.GetRoot()\n\t\t\t\tchildren := root.GetChildren()\n\t\t\t\tif len(children) == 0 {\n\t\t\t\t\treturn nil, NewParseError(\n\t\t\t\t\t\tfmt.Sprintf(\"invalid expression: AST contains no children %s\", k.Kind),\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\trhs := children[len(children)-1]\n\n\t\t\t\tif rhs.Root.ValueType != QuotedStringType {\n\t\t\t\t\trhs.Root.ValueType = StringType\n\t\t\t\t\trhs.Root.raw = append(rhs.Root.raw, tok.Raw()...)\n\n\t\t\t\t}\n\n\t\t\t\tchildren[len(children)-1] = rhs\n\t\t\t\troot.SetChildren(children)\n\n\t\t\t\tstack.Push(k)\n\t\t\t}\n\t\tcase OpenScopeState:\n\t\t\tif !runeCompare(tok.Raw(), openBrace) {\n\t\t\t\treturn nil, NewParseError(\"expected '['\")\n\t\t\t}\n\t\t\t// If OpenScopeState is not at the start, we must mark the previous ast as complete\n\t\t\t//\n\t\t\t// for example: if previous ast was a skip statement;\n\t\t\t// we should mark it as complete before we create a new statement\n\t\t\tif k.Kind != ASTKindStart {\n\t\t\t\tstack.MarkComplete(k)\n\t\t\t}\n\n\t\t\tstmt := newStatement()\n\t\t\tstack.Push(stmt)\n\t\tcase CloseScopeState:\n\t\t\tif !runeCompare(tok.Raw(), closeBrace) {\n\t\t\t\treturn nil, NewParseError(\"expected ']'\")\n\t\t\t}\n\n\t\t\tk = trimSpaces(k)\n\t\t\tstack.Push(newCompletedSectionStatement(k))\n\t\tcase SectionState:\n\t\t\tvar stmt AST\n\n\t\t\tswitch k.Kind {\n\t\t\tcase ASTKindStatement:\n\t\t\t\t// If there are multiple literals inside of a scope declaration,\n\t\t\t\t// then the current token's raw value will be appended to the Name.\n\t\t\t\t//\n\t\t\t\t// This handles cases like [ profile default ]\n\t\t\t\t//\n\t\t\t\t// k will represent a SectionStatement with the children representing\n\t\t\t\t// the label of the section\n\t\t\t\tstmt = newSectionStatement(tok)\n\t\t\tcase ASTKindSectionStatement:\n\t\t\t\tk.Root.raw = append(k.Root.raw, tok.Raw()...)\n\t\t\t\tstmt = k\n\t\t\tdefault:\n\t\t\t\treturn nil, NewParseError(\n\t\t\t\t\tfmt.Sprintf(\"invalid statement: expected statement: %v\", k.Kind),\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tstack.Push(stmt)\n\t\tcase MarkCompleteState:\n\t\t\tif k.Kind != ASTKindStart {\n\t\t\t\tstack.MarkComplete(k)\n\t\t\t}\n\n\t\t\tif stack.Len() == 0 {\n\t\t\t\tstack.Push(start)\n\t\t\t}\n\t\tcase SkipState:\n\t\t\tstack.Push(newSkipStatement(k))\n\t\t\ts.Skip()\n\t\tcase CommentState:\n\t\t\tif k.Kind == ASTKindStart {\n\t\t\t\tstack.Push(k)\n\t\t\t} else {\n\t\t\t\tstack.MarkComplete(k)\n\t\t\t}\n\n\t\t\tstmt := newCommentStatement(tok)\n\t\t\tstack.Push(stmt)\n\t\tdefault:\n\t\t\treturn nil, NewParseError(\n\t\t\t\tfmt.Sprintf(\"invalid state with ASTKind %v and TokenType %v\",\n\t\t\t\t\tk, tok.Type()))\n\t\t}\n\n\t\tif len(tokens) > 0 {\n\t\t\ttokens = tokens[1:]\n\t\t}\n\t}\n\n\t// this occurs when a statement has not been completed\n\tif stack.top > 1 {\n\t\treturn nil, NewParseError(fmt.Sprintf(\"incomplete ini expression\"))\n\t}\n\n\t// returns a sublist which excludes the start symbol\n\treturn stack.List(), nil\n}\n\n// trimSpaces will trim spaces on the left and right hand side of\n// the literal.\nfunc trimSpaces(k AST) AST {\n\t// trim left hand side of spaces\n\tfor i := 0; i < len(k.Root.raw); i++ {\n\t\tif !isWhitespace(k.Root.raw[i]) {\n\t\t\tbreak\n\t\t}\n\n\t\tk.Root.raw = k.Root.raw[1:]\n\t\ti--\n\t}\n\n\t// trim right hand side of spaces\n\tfor i := len(k.Root.raw) - 1; i >= 0; i-- {\n\t\tif !isWhitespace(k.Root.raw[i]) {\n\t\t\tbreak\n\t\t}\n\n\t\tk.Root.raw = k.Root.raw[:len(k.Root.raw)-1]\n\t}\n\n\treturn k\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/literal_tokens.go",
    "content": "package ini\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode\"\n)\n\nvar (\n\trunesTrue  = []rune(\"true\")\n\trunesFalse = []rune(\"false\")\n)\n\nvar literalValues = [][]rune{\n\trunesTrue,\n\trunesFalse,\n}\n\nfunc isBoolValue(b []rune) bool {\n\tfor _, lv := range literalValues {\n\t\tif isCaselessLitValue(lv, b) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc isLitValue(want, have []rune) bool {\n\tif len(have) < len(want) {\n\t\treturn false\n\t}\n\n\tfor i := 0; i < len(want); i++ {\n\t\tif want[i] != have[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\n// isCaselessLitValue is a caseless value comparison, assumes want is already lower-cased for efficiency.\nfunc isCaselessLitValue(want, have []rune) bool {\n\tif len(have) < len(want) {\n\t\treturn false\n\t}\n\n\tfor i := 0; i < len(want); i++ {\n\t\tif want[i] != unicode.ToLower(have[i]) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\n// isNumberValue will return whether not the leading characters in\n// a byte slice is a number. A number is delimited by whitespace or\n// the newline token.\n//\n// A number is defined to be in a binary, octal, decimal (int | float), hex format,\n// or in scientific notation.\nfunc isNumberValue(b []rune) bool {\n\tnegativeIndex := 0\n\thelper := numberHelper{}\n\tneedDigit := false\n\n\tfor i := 0; i < len(b); i++ {\n\t\tnegativeIndex++\n\n\t\tswitch b[i] {\n\t\tcase '-':\n\t\t\tif helper.IsNegative() || negativeIndex != 1 {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\thelper.Determine(b[i])\n\t\t\tneedDigit = true\n\t\t\tcontinue\n\t\tcase 'e', 'E':\n\t\t\tif err := helper.Determine(b[i]); err != nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tnegativeIndex = 0\n\t\t\tneedDigit = true\n\t\t\tcontinue\n\t\tcase 'b':\n\t\t\tif helper.numberFormat == hex {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tfallthrough\n\t\tcase 'o', 'x':\n\t\t\tneedDigit = true\n\t\t\tif i == 0 {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tfallthrough\n\t\tcase '.':\n\t\t\tif err := helper.Determine(b[i]); err != nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tneedDigit = true\n\t\t\tcontinue\n\t\t}\n\n\t\tif i > 0 && (isNewline(b[i:]) || isWhitespace(b[i])) {\n\t\t\treturn !needDigit\n\t\t}\n\n\t\tif !helper.CorrectByte(b[i]) {\n\t\t\treturn false\n\t\t}\n\t\tneedDigit = false\n\t}\n\n\treturn !needDigit\n}\n\nfunc isValid(b []rune) (bool, int, error) {\n\tif len(b) == 0 {\n\t\t// TODO: should probably return an error\n\t\treturn false, 0, nil\n\t}\n\n\treturn isValidRune(b[0]), 1, nil\n}\n\nfunc isValidRune(r rune) bool {\n\treturn r != ':' && r != '=' && r != '[' && r != ']' && r != ' ' && r != '\\n'\n}\n\n// ValueType is an enum that will signify what type\n// the Value is\ntype ValueType int\n\nfunc (v ValueType) String() string {\n\tswitch v {\n\tcase NoneType:\n\t\treturn \"NONE\"\n\tcase DecimalType:\n\t\treturn \"FLOAT\"\n\tcase IntegerType:\n\t\treturn \"INT\"\n\tcase StringType:\n\t\treturn \"STRING\"\n\tcase BoolType:\n\t\treturn \"BOOL\"\n\t}\n\n\treturn \"\"\n}\n\n// ValueType enums\nconst (\n\tNoneType = ValueType(iota)\n\tDecimalType // deprecated\n\tIntegerType // deprecated\n\tStringType\n\tQuotedStringType\n\tBoolType // deprecated\n)\n\n// Value is a union container\ntype Value struct {\n\tType ValueType\n\traw  []rune\n\n\tinteger int64 // deprecated\n\tdecimal float64 // deprecated\n\tboolean bool // deprecated\n\tstr     string\n}\n\nfunc newValue(t ValueType, base int, raw []rune) (Value, error) {\n\tv := Value{\n\t\tType: t,\n\t\traw:  raw,\n\t}\n\tvar err error\n\n\tswitch t {\n\tcase DecimalType:\n\t\tv.decimal, err = strconv.ParseFloat(string(raw), 64)\n\tcase IntegerType:\n\t\tif base != 10 {\n\t\t\traw = raw[2:]\n\t\t}\n\n\t\tv.integer, err = strconv.ParseInt(string(raw), base, 64)\n\tcase StringType:\n\t\tv.str = string(raw)\n\tcase QuotedStringType:\n\t\tv.str = string(raw[1 : len(raw)-1])\n\tcase BoolType:\n\t\tv.boolean = isCaselessLitValue(runesTrue, v.raw)\n\t}\n\n\t// issue 2253\n\t//\n\t// if the value trying to be parsed is too large, then we will use\n\t// the 'StringType' and raw value instead.\n\tif nerr, ok := err.(*strconv.NumError); ok && nerr.Err == strconv.ErrRange {\n\t\tv.Type = StringType\n\t\tv.str = string(raw)\n\t\terr = nil\n\t}\n\n\treturn v, err\n}\n\n// Append will append values and change the type to a string\n// type.\nfunc (v *Value) Append(tok Token) {\n\tr := tok.Raw()\n\tif v.Type != QuotedStringType {\n\t\tv.Type = StringType\n\t\tr = tok.raw[1 : len(tok.raw)-1]\n\t}\n\tif tok.Type() != TokenLit {\n\t\tv.raw = append(v.raw, tok.Raw()...)\n\t} else {\n\t\tv.raw = append(v.raw, r...)\n\t}\n}\n\nfunc (v Value) String() string {\n\tswitch v.Type {\n\tcase DecimalType:\n\t\treturn fmt.Sprintf(\"decimal: %f\", v.decimal)\n\tcase IntegerType:\n\t\treturn fmt.Sprintf(\"integer: %d\", v.integer)\n\tcase StringType:\n\t\treturn fmt.Sprintf(\"string: %s\", string(v.raw))\n\tcase QuotedStringType:\n\t\treturn fmt.Sprintf(\"quoted string: %s\", string(v.raw))\n\tcase BoolType:\n\t\treturn fmt.Sprintf(\"bool: %t\", v.boolean)\n\tdefault:\n\t\treturn \"union not set\"\n\t}\n}\n\nfunc newLitToken(b []rune) (Token, int, error) {\n\tn := 0\n\tvar err error\n\n\ttoken := Token{}\n\tif b[0] == '\"' {\n\t\tn, err = getStringValue(b)\n\t\tif err != nil {\n\t\t\treturn token, n, err\n\t\t}\n\n\t\ttoken = newToken(TokenLit, b[:n], QuotedStringType)\n\t} else {\n\t\tn, err = getValue(b)\n\t\ttoken = newToken(TokenLit, b[:n], StringType)\n\t}\n\n\treturn token, n, err\n}\n\n// IntValue returns an integer value\nfunc (v Value) IntValue() (int64, bool) {\n\ti, err := strconv.ParseInt(string(v.raw), 0, 64)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn i, true\n}\n\n// FloatValue returns a float value\nfunc (v Value) FloatValue() (float64, bool) {\n\tf, err := strconv.ParseFloat(string(v.raw), 64)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn f, true\n}\n\n// BoolValue returns a bool value\nfunc (v Value) BoolValue() (bool, bool) {\n\t// we don't use ParseBool as it recognizes more than what we've\n\t// historically supported\n\tif isCaselessLitValue(runesTrue, v.raw) {\n\t\treturn true, true\n\t} else if isCaselessLitValue(runesFalse, v.raw) {\n\t\treturn false, true\n\t}\n\treturn false, false\n}\n\nfunc isTrimmable(r rune) bool {\n\tswitch r {\n\tcase '\\n', ' ':\n\t\treturn true\n\t}\n\treturn false\n}\n\n// StringValue returns the string value\nfunc (v Value) StringValue() string {\n\tswitch v.Type {\n\tcase StringType:\n\t\treturn strings.TrimFunc(string(v.raw), isTrimmable)\n\tcase QuotedStringType:\n\t\t// preserve all characters in the quotes\n\t\treturn string(removeEscapedCharacters(v.raw[1 : len(v.raw)-1]))\n\tdefault:\n\t\treturn strings.TrimFunc(string(v.raw), isTrimmable)\n\t}\n}\n\nfunc contains(runes []rune, c rune) bool {\n\tfor i := 0; i < len(runes); i++ {\n\t\tif runes[i] == c {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc runeCompare(v1 []rune, v2 []rune) bool {\n\tif len(v1) != len(v2) {\n\t\treturn false\n\t}\n\n\tfor i := 0; i < len(v1); i++ {\n\t\tif v1[i] != v2[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/newline_token.go",
    "content": "package ini\n\nfunc isNewline(b []rune) bool {\n\tif len(b) == 0 {\n\t\treturn false\n\t}\n\n\tif b[0] == '\\n' {\n\t\treturn true\n\t}\n\n\tif len(b) < 2 {\n\t\treturn false\n\t}\n\n\treturn b[0] == '\\r' && b[1] == '\\n'\n}\n\nfunc newNewlineToken(b []rune) (Token, int, error) {\n\ti := 1\n\tif b[0] == '\\r' && isNewline(b[1:]) {\n\t\ti++\n\t}\n\n\tif !isNewline([]rune(b[:i])) {\n\t\treturn emptyToken, 0, NewParseError(\"invalid new line token\")\n\t}\n\n\treturn newToken(TokenNL, b[:i], NoneType), i, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/number_helper.go",
    "content": "package ini\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"strconv\"\n)\n\nconst (\n\tnone = numberFormat(iota)\n\tbinary\n\toctal\n\tdecimal\n\thex\n\texponent\n)\n\ntype numberFormat int\n\n// numberHelper is used to dictate what format a number is in\n// and what to do for negative values. Since -1e-4 is a valid\n// number, we cannot just simply check for duplicate negatives.\ntype numberHelper struct {\n\tnumberFormat numberFormat\n\n\tnegative         bool\n\tnegativeExponent bool\n}\n\nfunc (b numberHelper) Exists() bool {\n\treturn b.numberFormat != none\n}\n\nfunc (b numberHelper) IsNegative() bool {\n\treturn b.negative || b.negativeExponent\n}\n\nfunc (b *numberHelper) Determine(c rune) error {\n\tif b.Exists() {\n\t\treturn NewParseError(fmt.Sprintf(\"multiple number formats: 0%v\", string(c)))\n\t}\n\n\tswitch c {\n\tcase 'b':\n\t\tb.numberFormat = binary\n\tcase 'o':\n\t\tb.numberFormat = octal\n\tcase 'x':\n\t\tb.numberFormat = hex\n\tcase 'e', 'E':\n\t\tb.numberFormat = exponent\n\tcase '-':\n\t\tif b.numberFormat != exponent {\n\t\t\tb.negative = true\n\t\t} else {\n\t\t\tb.negativeExponent = true\n\t\t}\n\tcase '.':\n\t\tb.numberFormat = decimal\n\tdefault:\n\t\treturn NewParseError(fmt.Sprintf(\"invalid number character: %v\", string(c)))\n\t}\n\n\treturn nil\n}\n\nfunc (b numberHelper) CorrectByte(c rune) bool {\n\tswitch {\n\tcase b.numberFormat == binary:\n\t\tif !isBinaryByte(c) {\n\t\t\treturn false\n\t\t}\n\tcase b.numberFormat == octal:\n\t\tif !isOctalByte(c) {\n\t\t\treturn false\n\t\t}\n\tcase b.numberFormat == hex:\n\t\tif !isHexByte(c) {\n\t\t\treturn false\n\t\t}\n\tcase b.numberFormat == decimal:\n\t\tif !isDigit(c) {\n\t\t\treturn false\n\t\t}\n\tcase b.numberFormat == exponent:\n\t\tif !isDigit(c) {\n\t\t\treturn false\n\t\t}\n\tcase b.negativeExponent:\n\t\tif !isDigit(c) {\n\t\t\treturn false\n\t\t}\n\tcase b.negative:\n\t\tif !isDigit(c) {\n\t\t\treturn false\n\t\t}\n\tdefault:\n\t\tif !isDigit(c) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc (b numberHelper) Base() int {\n\tswitch b.numberFormat {\n\tcase binary:\n\t\treturn 2\n\tcase octal:\n\t\treturn 8\n\tcase hex:\n\t\treturn 16\n\tdefault:\n\t\treturn 10\n\t}\n}\n\nfunc (b numberHelper) String() string {\n\tbuf := bytes.Buffer{}\n\ti := 0\n\n\tswitch b.numberFormat {\n\tcase binary:\n\t\ti++\n\t\tbuf.WriteString(strconv.Itoa(i) + \": binary format\\n\")\n\tcase octal:\n\t\ti++\n\t\tbuf.WriteString(strconv.Itoa(i) + \": octal format\\n\")\n\tcase hex:\n\t\ti++\n\t\tbuf.WriteString(strconv.Itoa(i) + \": hex format\\n\")\n\tcase exponent:\n\t\ti++\n\t\tbuf.WriteString(strconv.Itoa(i) + \": exponent format\\n\")\n\tdefault:\n\t\ti++\n\t\tbuf.WriteString(strconv.Itoa(i) + \": integer format\\n\")\n\t}\n\n\tif b.negative {\n\t\ti++\n\t\tbuf.WriteString(strconv.Itoa(i) + \": negative format\\n\")\n\t}\n\n\tif b.negativeExponent {\n\t\ti++\n\t\tbuf.WriteString(strconv.Itoa(i) + \": negative exponent format\\n\")\n\t}\n\n\treturn buf.String()\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/op_tokens.go",
    "content": "package ini\n\nimport (\n\t\"fmt\"\n)\n\nvar (\n\tequalOp      = []rune(\"=\")\n\tequalColonOp = []rune(\":\")\n)\n\nfunc isOp(b []rune) bool {\n\tif len(b) == 0 {\n\t\treturn false\n\t}\n\n\tswitch b[0] {\n\tcase '=':\n\t\treturn true\n\tcase ':':\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc newOpToken(b []rune) (Token, int, error) {\n\ttok := Token{}\n\n\tswitch b[0] {\n\tcase '=':\n\t\ttok = newToken(TokenOp, equalOp, NoneType)\n\tcase ':':\n\t\ttok = newToken(TokenOp, equalColonOp, NoneType)\n\tdefault:\n\t\treturn tok, 0, NewParseError(fmt.Sprintf(\"unexpected op type, %v\", b[0]))\n\t}\n\treturn tok, 1, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/parse_error.go",
    "content": "package ini\n\nimport \"fmt\"\n\nconst (\n\t// ErrCodeParseError is returned when a parsing error\n\t// has occurred.\n\tErrCodeParseError = \"INIParseError\"\n)\n\n// ParseError is an error which is returned during any part of\n// the parsing process.\ntype ParseError struct {\n\tmsg string\n}\n\n// NewParseError will return a new ParseError where message\n// is the description of the error.\nfunc NewParseError(message string) *ParseError {\n\treturn &ParseError{\n\t\tmsg: message,\n\t}\n}\n\n// Code will return the ErrCodeParseError\nfunc (err *ParseError) Code() string {\n\treturn ErrCodeParseError\n}\n\n// Message returns the error's message\nfunc (err *ParseError) Message() string {\n\treturn err.msg\n}\n\n// OrigError return nothing since there will never be any\n// original error.\nfunc (err *ParseError) OrigError() error {\n\treturn nil\n}\n\nfunc (err *ParseError) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", err.Code(), err.Message())\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/parse_stack.go",
    "content": "package ini\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// ParseStack is a stack that contains a container, the stack portion,\n// and the list which is the list of ASTs that have been successfully\n// parsed.\ntype ParseStack struct {\n\ttop       int\n\tcontainer []AST\n\tlist      []AST\n\tindex     int\n}\n\nfunc newParseStack(sizeContainer, sizeList int) ParseStack {\n\treturn ParseStack{\n\t\tcontainer: make([]AST, sizeContainer),\n\t\tlist:      make([]AST, sizeList),\n\t}\n}\n\n// Pop will return and truncate the last container element.\nfunc (s *ParseStack) Pop() AST {\n\ts.top--\n\treturn s.container[s.top]\n}\n\n// Push will add the new AST to the container\nfunc (s *ParseStack) Push(ast AST) {\n\ts.container[s.top] = ast\n\ts.top++\n}\n\n// MarkComplete will append the AST to the list of completed statements\nfunc (s *ParseStack) MarkComplete(ast AST) {\n\ts.list[s.index] = ast\n\ts.index++\n}\n\n// List will return the completed statements\nfunc (s ParseStack) List() []AST {\n\treturn s.list[:s.index]\n}\n\n// Len will return the length of the container\nfunc (s *ParseStack) Len() int {\n\treturn s.top\n}\n\nfunc (s ParseStack) String() string {\n\tbuf := bytes.Buffer{}\n\tfor i, node := range s.list {\n\t\tbuf.WriteString(fmt.Sprintf(\"%d: %v\\n\", i+1, node))\n\t}\n\n\treturn buf.String()\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/sep_tokens.go",
    "content": "package ini\n\nimport (\n\t\"fmt\"\n)\n\nvar (\n\temptyRunes = []rune{}\n)\n\nfunc isSep(b []rune) bool {\n\tif len(b) == 0 {\n\t\treturn false\n\t}\n\n\tswitch b[0] {\n\tcase '[', ']':\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nvar (\n\topenBrace  = []rune(\"[\")\n\tcloseBrace = []rune(\"]\")\n)\n\nfunc newSepToken(b []rune) (Token, int, error) {\n\ttok := Token{}\n\n\tswitch b[0] {\n\tcase '[':\n\t\ttok = newToken(TokenSep, openBrace, NoneType)\n\tcase ']':\n\t\ttok = newToken(TokenSep, closeBrace, NoneType)\n\tdefault:\n\t\treturn tok, 0, NewParseError(fmt.Sprintf(\"unexpected sep type, %v\", b[0]))\n\t}\n\treturn tok, 1, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/skipper.go",
    "content": "package ini\n\n// skipper is used to skip certain blocks of an ini file.\n// Currently skipper is used to skip nested blocks of ini\n// files. See example below\n//\n//\t[ foo ]\n//\tnested = ; this section will be skipped\n//\t\ta=b\n//\t\tc=d\n//\tbar=baz ; this will be included\ntype skipper struct {\n\tshouldSkip bool\n\tTokenSet   bool\n\tprevTok    Token\n}\n\nfunc newSkipper() skipper {\n\treturn skipper{\n\t\tprevTok: emptyToken,\n\t}\n}\n\nfunc (s *skipper) ShouldSkip(tok Token) bool {\n\t// should skip state will be modified only if previous token was new line (NL);\n\t// and the current token is not WhiteSpace (WS).\n\tif s.shouldSkip &&\n\t\ts.prevTok.Type() == TokenNL &&\n\t\ttok.Type() != TokenWS {\n\t\ts.Continue()\n\t\treturn false\n\t}\n\ts.prevTok = tok\n\treturn s.shouldSkip\n}\n\nfunc (s *skipper) Skip() {\n\ts.shouldSkip = true\n}\n\nfunc (s *skipper) Continue() {\n\ts.shouldSkip = false\n\t// empty token is assigned as we return to default state, when should skip is false\n\ts.prevTok = emptyToken\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/statement.go",
    "content": "package ini\n\n// Statement is an empty AST mostly used for transitioning states.\nfunc newStatement() AST {\n\treturn newAST(ASTKindStatement, AST{})\n}\n\n// SectionStatement represents a section AST\nfunc newSectionStatement(tok Token) AST {\n\treturn newASTWithRootToken(ASTKindSectionStatement, tok)\n}\n\n// ExprStatement represents a completed expression AST\nfunc newExprStatement(ast AST) AST {\n\treturn newAST(ASTKindExprStatement, ast)\n}\n\n// CommentStatement represents a comment in the ini definition.\n//\n//\tgrammar:\n//\tcomment -> #comment' | ;comment'\n//\tcomment' -> epsilon | value\nfunc newCommentStatement(tok Token) AST {\n\treturn newAST(ASTKindCommentStatement, newExpression(tok))\n}\n\n// CompletedSectionStatement represents a completed section\nfunc newCompletedSectionStatement(ast AST) AST {\n\treturn newAST(ASTKindCompletedSectionStatement, ast)\n}\n\n// SkipStatement is used to skip whole statements\nfunc newSkipStatement(ast AST) AST {\n\treturn newAST(ASTKindSkipStatement, ast)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/value_util.go",
    "content": "package ini\n\nimport (\n\t\"fmt\"\n)\n\n// getStringValue will return a quoted string and the amount\n// of bytes read\n//\n// an error will be returned if the string is not properly formatted\nfunc getStringValue(b []rune) (int, error) {\n\tif b[0] != '\"' {\n\t\treturn 0, NewParseError(\"strings must start with '\\\"'\")\n\t}\n\n\tendQuote := false\n\ti := 1\n\n\tfor ; i < len(b) && !endQuote; i++ {\n\t\tif escaped := isEscaped(b[:i], b[i]); b[i] == '\"' && !escaped {\n\t\t\tendQuote = true\n\t\t\tbreak\n\t\t} else if escaped {\n\t\t\t/*c, err := getEscapedByte(b[i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\n\t\t\tb[i-1] = c\n\t\t\tb = append(b[:i], b[i+1:]...)\n\t\t\ti--*/\n\n\t\t\tcontinue\n\t\t}\n\t}\n\n\tif !endQuote {\n\t\treturn 0, NewParseError(\"missing '\\\"' in string value\")\n\t}\n\n\treturn i + 1, nil\n}\n\n// getBoolValue will return a boolean and the amount\n// of bytes read\n//\n// an error will be returned if the boolean is not of a correct\n// value\nfunc getBoolValue(b []rune) (int, error) {\n\tif len(b) < 4 {\n\t\treturn 0, NewParseError(\"invalid boolean value\")\n\t}\n\n\tn := 0\n\tfor _, lv := range literalValues {\n\t\tif len(lv) > len(b) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif isCaselessLitValue(lv, b) {\n\t\t\tn = len(lv)\n\t\t}\n\t}\n\n\tif n == 0 {\n\t\treturn 0, NewParseError(\"invalid boolean value\")\n\t}\n\n\treturn n, nil\n}\n\n// getNumericalValue will return a numerical string, the amount\n// of bytes read, and the base of the number\n//\n// an error will be returned if the number is not of a correct\n// value\nfunc getNumericalValue(b []rune) (int, int, error) {\n\tif !isDigit(b[0]) {\n\t\treturn 0, 0, NewParseError(\"invalid digit value\")\n\t}\n\n\ti := 0\n\thelper := numberHelper{}\n\nloop:\n\tfor negativeIndex := 0; i < len(b); i++ {\n\t\tnegativeIndex++\n\n\t\tif !isDigit(b[i]) {\n\t\t\tswitch b[i] {\n\t\t\tcase '-':\n\t\t\t\tif helper.IsNegative() || negativeIndex != 1 {\n\t\t\t\t\treturn 0, 0, NewParseError(\"parse error '-'\")\n\t\t\t\t}\n\n\t\t\t\tn := getNegativeNumber(b[i:])\n\t\t\t\ti += (n - 1)\n\t\t\t\thelper.Determine(b[i])\n\t\t\t\tcontinue\n\t\t\tcase '.':\n\t\t\t\tif err := helper.Determine(b[i]); err != nil {\n\t\t\t\t\treturn 0, 0, err\n\t\t\t\t}\n\t\t\tcase 'e', 'E':\n\t\t\t\tif err := helper.Determine(b[i]); err != nil {\n\t\t\t\t\treturn 0, 0, err\n\t\t\t\t}\n\n\t\t\t\tnegativeIndex = 0\n\t\t\tcase 'b':\n\t\t\t\tif helper.numberFormat == hex {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tfallthrough\n\t\t\tcase 'o', 'x':\n\t\t\t\tif i == 0 && b[i] != '0' {\n\t\t\t\t\treturn 0, 0, NewParseError(\"incorrect base format, expected leading '0'\")\n\t\t\t\t}\n\n\t\t\t\tif i != 1 {\n\t\t\t\t\treturn 0, 0, NewParseError(fmt.Sprintf(\"incorrect base format found %s at %d index\", string(b[i]), i))\n\t\t\t\t}\n\n\t\t\t\tif err := helper.Determine(b[i]); err != nil {\n\t\t\t\t\treturn 0, 0, err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tif isWhitespace(b[i]) {\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\n\t\t\t\tif isNewline(b[i:]) {\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\n\t\t\t\tif !(helper.numberFormat == hex && isHexByte(b[i])) {\n\t\t\t\t\tif i+2 < len(b) && !isNewline(b[i:i+2]) {\n\t\t\t\t\t\treturn 0, 0, NewParseError(\"invalid numerical character\")\n\t\t\t\t\t} else if !isNewline([]rune{b[i]}) {\n\t\t\t\t\t\treturn 0, 0, NewParseError(\"invalid numerical character\")\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak loop\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn helper.Base(), i, nil\n}\n\n// isDigit will return whether or not something is an integer\nfunc isDigit(b rune) bool {\n\treturn b >= '0' && b <= '9'\n}\n\nfunc hasExponent(v []rune) bool {\n\treturn contains(v, 'e') || contains(v, 'E')\n}\n\nfunc isBinaryByte(b rune) bool {\n\tswitch b {\n\tcase '0', '1':\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc isOctalByte(b rune) bool {\n\tswitch b {\n\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc isHexByte(b rune) bool {\n\tif isDigit(b) {\n\t\treturn true\n\t}\n\treturn (b >= 'A' && b <= 'F') ||\n\t\t(b >= 'a' && b <= 'f')\n}\n\nfunc getValue(b []rune) (int, error) {\n\ti := 0\n\n\tfor i < len(b) {\n\t\tif isNewline(b[i:]) {\n\t\t\tbreak\n\t\t}\n\n\t\tif isOp(b[i:]) {\n\t\t\tbreak\n\t\t}\n\n\t\tvalid, n, err := isValid(b[i:])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\t\tif !valid {\n\t\t\tbreak\n\t\t}\n\n\t\ti += n\n\t}\n\n\treturn i, nil\n}\n\n// getNegativeNumber will return a negative number from a\n// byte slice. This will iterate through all characters until\n// a non-digit has been found.\nfunc getNegativeNumber(b []rune) int {\n\tif b[0] != '-' {\n\t\treturn 0\n\t}\n\n\ti := 1\n\tfor ; i < len(b); i++ {\n\t\tif !isDigit(b[i]) {\n\t\t\treturn i\n\t\t}\n\t}\n\n\treturn i\n}\n\n// isEscaped will return whether or not the character is an escaped\n// character.\nfunc isEscaped(value []rune, b rune) bool {\n\tif len(value) == 0 {\n\t\treturn false\n\t}\n\n\tswitch b {\n\tcase '\\'': // single quote\n\tcase '\"': // quote\n\tcase 'n': // newline\n\tcase 't': // tab\n\tcase '\\\\': // backslash\n\tdefault:\n\t\treturn false\n\t}\n\n\treturn value[len(value)-1] == '\\\\'\n}\n\nfunc getEscapedByte(b rune) (rune, error) {\n\tswitch b {\n\tcase '\\'': // single quote\n\t\treturn '\\'', nil\n\tcase '\"': // quote\n\t\treturn '\"', nil\n\tcase 'n': // newline\n\t\treturn '\\n', nil\n\tcase 't': // table\n\t\treturn '\\t', nil\n\tcase '\\\\': // backslash\n\t\treturn '\\\\', nil\n\tdefault:\n\t\treturn b, NewParseError(fmt.Sprintf(\"invalid escaped character %c\", b))\n\t}\n}\n\nfunc removeEscapedCharacters(b []rune) []rune {\n\tfor i := 0; i < len(b); i++ {\n\t\tif isEscaped(b[:i], b[i]) {\n\t\t\tc, err := getEscapedByte(b[i])\n\t\t\tif err != nil {\n\t\t\t\treturn b\n\t\t\t}\n\n\t\t\tb[i-1] = c\n\t\t\tb = append(b[:i], b[i+1:]...)\n\t\t\ti--\n\t\t}\n\t}\n\n\treturn b\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/visitor.go",
    "content": "package ini\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n)\n\n// Visitor is an interface used by walkers that will\n// traverse an array of ASTs.\ntype Visitor interface {\n\tVisitExpr(AST) error\n\tVisitStatement(AST) error\n}\n\n// DefaultVisitor is used to visit statements and expressions\n// and ensure that they are both of the correct format.\n// In addition, upon visiting this will build sections and populate\n// the Sections field which can be used to retrieve profile\n// configuration.\ntype DefaultVisitor struct {\n\tscope    string\n\tSections Sections\n}\n\n// NewDefaultVisitor return a DefaultVisitor\nfunc NewDefaultVisitor() *DefaultVisitor {\n\treturn &DefaultVisitor{\n\t\tSections: Sections{\n\t\t\tcontainer: map[string]Section{},\n\t\t},\n\t}\n}\n\n// VisitExpr visits expressions...\nfunc (v *DefaultVisitor) VisitExpr(expr AST) error {\n\tt := v.Sections.container[v.scope]\n\tif t.values == nil {\n\t\tt.values = values{}\n\t}\n\n\tswitch expr.Kind {\n\tcase ASTKindExprStatement:\n\t\topExpr := expr.GetRoot()\n\t\tswitch opExpr.Kind {\n\t\tcase ASTKindEqualExpr:\n\t\t\tchildren := opExpr.GetChildren()\n\t\t\tif len(children) <= 1 {\n\t\t\t\treturn NewParseError(\"unexpected token type\")\n\t\t\t}\n\n\t\t\trhs := children[1]\n\n\t\t\t// The right-hand value side the equality expression is allowed to contain '[', ']', ':', '=' in the values.\n\t\t\t// If the token is not either a literal or one of the token types that identifies those four additional\n\t\t\t// tokens then error.\n\t\t\tif !(rhs.Root.Type() == TokenLit || rhs.Root.Type() == TokenOp || rhs.Root.Type() == TokenSep) {\n\t\t\t\treturn NewParseError(\"unexpected token type\")\n\t\t\t}\n\n\t\t\tkey := EqualExprKey(opExpr)\n\t\t\tv, err := newValue(rhs.Root.ValueType, rhs.Root.base, rhs.Root.Raw())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tt.values[key] = v\n\t\tdefault:\n\t\t\treturn NewParseError(fmt.Sprintf(\"unsupported expression %v\", expr))\n\t\t}\n\tdefault:\n\t\treturn NewParseError(fmt.Sprintf(\"unsupported expression %v\", expr))\n\t}\n\n\tv.Sections.container[v.scope] = t\n\treturn nil\n}\n\n// VisitStatement visits statements...\nfunc (v *DefaultVisitor) VisitStatement(stmt AST) error {\n\tswitch stmt.Kind {\n\tcase ASTKindCompletedSectionStatement:\n\t\tchild := stmt.GetRoot()\n\t\tif child.Kind != ASTKindSectionStatement {\n\t\t\treturn NewParseError(fmt.Sprintf(\"unsupported child statement: %T\", child))\n\t\t}\n\n\t\tname := string(child.Root.Raw())\n\t\tv.Sections.container[name] = Section{}\n\t\tv.scope = name\n\tdefault:\n\t\treturn NewParseError(fmt.Sprintf(\"unsupported statement: %s\", stmt.Kind))\n\t}\n\n\treturn nil\n}\n\n// Sections is a map of Section structures that represent\n// a configuration.\ntype Sections struct {\n\tcontainer map[string]Section\n}\n\n// GetSection will return section p. If section p does not exist,\n// false will be returned in the second parameter.\nfunc (t Sections) GetSection(p string) (Section, bool) {\n\tv, ok := t.container[p]\n\treturn v, ok\n}\n\n// values represents a map of union values.\ntype values map[string]Value\n\n// List will return a list of all sections that were successfully\n// parsed.\nfunc (t Sections) List() []string {\n\tkeys := make([]string, len(t.container))\n\ti := 0\n\tfor k := range t.container {\n\t\tkeys[i] = k\n\t\ti++\n\t}\n\n\tsort.Strings(keys)\n\treturn keys\n}\n\n// Section contains a name and values. This represent\n// a sectioned entry in a configuration file.\ntype Section struct {\n\tName   string\n\tvalues values\n}\n\n// Has will return whether or not an entry exists in a given section\nfunc (t Section) Has(k string) bool {\n\t_, ok := t.values[k]\n\treturn ok\n}\n\n// ValueType will returned what type the union is set to. If\n// k was not found, the NoneType will be returned.\nfunc (t Section) ValueType(k string) (ValueType, bool) {\n\tv, ok := t.values[k]\n\treturn v.Type, ok\n}\n\n// Bool returns a bool value at k\nfunc (t Section) Bool(k string) (bool, bool) {\n\treturn t.values[k].BoolValue()\n}\n\n// Int returns an integer value at k\nfunc (t Section) Int(k string) (int64, bool) {\n\treturn t.values[k].IntValue()\n}\n\n// Float64 returns a float value at k\nfunc (t Section) Float64(k string) (float64, bool) {\n\treturn t.values[k].FloatValue()\n}\n\n// String returns the string value at k\nfunc (t Section) String(k string) string {\n\t_, ok := t.values[k]\n\tif !ok {\n\t\treturn \"\"\n\t}\n\treturn t.values[k].StringValue()\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/walker.go",
    "content": "package ini\n\n// Walk will traverse the AST using the v, the Visitor.\nfunc Walk(tree []AST, v Visitor) error {\n\tfor _, node := range tree {\n\t\tswitch node.Kind {\n\t\tcase ASTKindExpr,\n\t\t\tASTKindExprStatement:\n\n\t\t\tif err := v.VisitExpr(node); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase ASTKindStatement,\n\t\t\tASTKindCompletedSectionStatement,\n\t\t\tASTKindNestedSectionStatement,\n\t\t\tASTKindCompletedNestedSectionStatement:\n\n\t\t\tif err := v.VisitStatement(node); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/ini/ws_token.go",
    "content": "package ini\n\nimport (\n\t\"unicode\"\n)\n\n// isWhitespace will return whether or not the character is\n// a whitespace character.\n//\n// Whitespace is defined as a space or tab.\nfunc isWhitespace(c rune) bool {\n\treturn unicode.IsSpace(c) && c != '\\n' && c != '\\r'\n}\n\nfunc newWSToken(b []rune) (Token, int, error) {\n\ti := 0\n\tfor ; i < len(b); i++ {\n\t\tif !isWhitespace(b[i]) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn newToken(TokenWS, b[:i], NoneType), i, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/sdkio/byte.go",
    "content": "package sdkio\n\nconst (\n\t// Byte is 8 bits\n\tByte int64 = 1\n\t// KibiByte (KiB) is 1024 Bytes\n\tKibiByte = Byte * 1024\n\t// MebiByte (MiB) is 1024 KiB\n\tMebiByte = KibiByte * 1024\n\t// GibiByte (GiB) is 1024 MiB\n\tGibiByte = MebiByte * 1024\n)\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.6.go",
    "content": "//go:build !go1.7\n// +build !go1.7\n\npackage sdkio\n\n// Copy of Go 1.7 io package's Seeker constants.\nconst (\n\tSeekStart   = 0 // seek relative to the origin of the file\n\tSeekCurrent = 1 // seek relative to the current offset\n\tSeekEnd     = 2 // seek relative to the end\n)\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.7.go",
    "content": "//go:build go1.7\n// +build go1.7\n\npackage sdkio\n\nimport \"io\"\n\n// Alias for Go 1.7 io package Seeker constants\nconst (\n\tSeekStart   = io.SeekStart   // seek relative to the origin of the file\n\tSeekCurrent = io.SeekCurrent // seek relative to the current offset\n\tSeekEnd     = io.SeekEnd     // seek relative to the end\n)\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/sdkmath/floor.go",
    "content": "//go:build go1.10\n// +build go1.10\n\npackage sdkmath\n\nimport \"math\"\n\n// Round returns the nearest integer, rounding half away from zero.\n//\n// Special cases are:\n//\tRound(±0) = ±0\n//\tRound(±Inf) = ±Inf\n//\tRound(NaN) = NaN\nfunc Round(x float64) float64 {\n\treturn math.Round(x)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/sdkmath/floor_go1.9.go",
    "content": "//go:build !go1.10\n// +build !go1.10\n\npackage sdkmath\n\nimport \"math\"\n\n// Copied from the Go standard library's (Go 1.12) math/floor.go for use in\n// Go version prior to Go 1.10.\nconst (\n\tuvone    = 0x3FF0000000000000\n\tmask     = 0x7FF\n\tshift    = 64 - 11 - 1\n\tbias     = 1023\n\tsignMask = 1 << 63\n\tfracMask = 1<<shift - 1\n)\n\n// Round returns the nearest integer, rounding half away from zero.\n//\n// Special cases are:\n//\tRound(±0) = ±0\n//\tRound(±Inf) = ±Inf\n//\tRound(NaN) = NaN\n//\n// Copied from the Go standard library's (Go 1.12) math/floor.go for use in\n// Go version prior to Go 1.10.\nfunc Round(x float64) float64 {\n\t// Round is a faster implementation of:\n\t//\n\t// func Round(x float64) float64 {\n\t//   t := Trunc(x)\n\t//   if Abs(x-t) >= 0.5 {\n\t//     return t + Copysign(1, x)\n\t//   }\n\t//   return t\n\t// }\n\tbits := math.Float64bits(x)\n\te := uint(bits>>shift) & mask\n\tif e < bias {\n\t\t// Round abs(x) < 1 including denormals.\n\t\tbits &= signMask // +-0\n\t\tif e == bias-1 {\n\t\t\tbits |= uvone // +-1\n\t\t}\n\t} else if e < bias+shift {\n\t\t// Round any abs(x) >= 1 containing a fractional component [0,1).\n\t\t//\n\t\t// Numbers with larger exponents are returned unchanged since they\n\t\t// must be either an integer, infinity, or NaN.\n\t\tconst half = 1 << (shift - 1)\n\t\te -= bias\n\t\tbits += half >> e\n\t\tbits &^= fracMask >> e\n\t}\n\treturn math.Float64frombits(bits)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/sdkrand/locked_source.go",
    "content": "package sdkrand\n\nimport (\n\t\"math/rand\"\n\t\"sync\"\n\t\"time\"\n)\n\n// lockedSource is a thread-safe implementation of rand.Source\ntype lockedSource struct {\n\tlk  sync.Mutex\n\tsrc rand.Source\n}\n\nfunc (r *lockedSource) Int63() (n int64) {\n\tr.lk.Lock()\n\tn = r.src.Int63()\n\tr.lk.Unlock()\n\treturn\n}\n\nfunc (r *lockedSource) Seed(seed int64) {\n\tr.lk.Lock()\n\tr.src.Seed(seed)\n\tr.lk.Unlock()\n}\n\n// SeededRand is a new RNG using a thread safe implementation of rand.Source\nvar SeededRand = rand.New(&lockedSource{src: rand.NewSource(time.Now().UnixNano())})\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/sdkrand/read.go",
    "content": "//go:build go1.6\n// +build go1.6\n\npackage sdkrand\n\nimport \"math/rand\"\n\n// Read provides the stub for math.Rand.Read method support for go version's\n// 1.6 and greater.\nfunc Read(r *rand.Rand, p []byte) (int, error) {\n\treturn r.Read(p)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/sdkrand/read_1_5.go",
    "content": "//go:build !go1.6\n// +build !go1.6\n\npackage sdkrand\n\nimport \"math/rand\"\n\n// Read backfills Go 1.6's math.Rand.Reader for Go 1.5\nfunc Read(r *rand.Rand, p []byte) (n int, err error) {\n\t// Copy of Go standard libraries math package's read function not added to\n\t// standard library until Go 1.6.\n\tvar pos int8\n\tvar val int64\n\tfor n = 0; n < len(p); n++ {\n\t\tif pos == 0 {\n\t\t\tval = r.Int63()\n\t\t\tpos = 7\n\t\t}\n\t\tp[n] = byte(val)\n\t\tval >>= 8\n\t\tpos--\n\t}\n\n\treturn n, err\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/sdkuri/path.go",
    "content": "package sdkuri\n\nimport (\n\t\"path\"\n\t\"strings\"\n)\n\n// PathJoin will join the elements of the path delimited by the \"/\"\n// character. Similar to path.Join with the exception the trailing \"/\"\n// character is preserved if present.\nfunc PathJoin(elems ...string) string {\n\tif len(elems) == 0 {\n\t\treturn \"\"\n\t}\n\n\thasTrailing := strings.HasSuffix(elems[len(elems)-1], \"/\")\n\tstr := path.Join(elems...)\n\tif hasTrailing && str != \"/\" {\n\t\tstr += \"/\"\n\t}\n\n\treturn str\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/ecs_container.go",
    "content": "package shareddefaults\n\nconst (\n\t// ECSCredsProviderEnvVar is an environmental variable key used to\n\t// determine which path needs to be hit.\n\tECSCredsProviderEnvVar = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\"\n)\n\n// ECSContainerCredentialsURI is the endpoint to retrieve container\n// credentials. This can be overridden to test to ensure the credential process\n// is behaving correctly.\nvar ECSContainerCredentialsURI = \"http://169.254.170.2\"\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/shared_config.go",
    "content": "package shareddefaults\n\nimport (\n\t\"os/user\"\n\t\"path/filepath\"\n)\n\n// SharedCredentialsFilename returns the SDK's default file path\n// for the shared credentials file.\n//\n// Builds the shared config file path based on the OS's platform.\n//\n//   - Linux/Unix: $HOME/.aws/credentials\n//   - Windows: %USERPROFILE%\\.aws\\credentials\nfunc SharedCredentialsFilename() string {\n\treturn filepath.Join(UserHomeDir(), \".aws\", \"credentials\")\n}\n\n// SharedConfigFilename returns the SDK's default file path for\n// the shared config file.\n//\n// Builds the shared config file path based on the OS's platform.\n//\n//   - Linux/Unix: $HOME/.aws/config\n//   - Windows: %USERPROFILE%\\.aws\\config\nfunc SharedConfigFilename() string {\n\treturn filepath.Join(UserHomeDir(), \".aws\", \"config\")\n}\n\n// UserHomeDir returns the home directory for the user the process is\n// running under.\nfunc UserHomeDir() string {\n\tvar home string\n\n\thome = userHomeDir()\n\tif len(home) > 0 {\n\t\treturn home\n\t}\n\n\tcurrUser, _ := user.Current()\n\tif currUser != nil {\n\t\thome = currUser.HomeDir\n\t}\n\n\treturn home\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/shared_config_resolve_home.go",
    "content": "//go:build !go1.12\n// +build !go1.12\n\npackage shareddefaults\n\nimport (\n\t\"os\"\n\t\"runtime\"\n)\n\nfunc userHomeDir() string {\n\tif runtime.GOOS == \"windows\" { // Windows\n\t\treturn os.Getenv(\"USERPROFILE\")\n\t}\n\n\t// *nix\n\treturn os.Getenv(\"HOME\")\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/shared_config_resolve_home_go1.12.go",
    "content": "//go:build go1.12\n// +build go1.12\n\npackage shareddefaults\n\nimport (\n\t\"os\"\n)\n\nfunc userHomeDir() string {\n\thome, _ := os.UserHomeDir()\n\treturn home\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/strings/strings.go",
    "content": "package strings\n\nimport (\n\t\"strings\"\n)\n\n// HasPrefixFold tests whether the string s begins with prefix, interpreted as UTF-8 strings,\n// under Unicode case-folding.\nfunc HasPrefixFold(s, prefix string) bool {\n\treturn len(s) >= len(prefix) && strings.EqualFold(s[0:len(prefix)], prefix)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/sync/singleflight/LICENSE",
    "content": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/internal/sync/singleflight/singleflight.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package singleflight provides a duplicate function call suppression\n// mechanism.\npackage singleflight\n\nimport \"sync\"\n\n// call is an in-flight or completed singleflight.Do call\ntype call struct {\n\twg sync.WaitGroup\n\n\t// These fields are written once before the WaitGroup is done\n\t// and are only read after the WaitGroup is done.\n\tval interface{}\n\terr error\n\n\t// forgotten indicates whether Forget was called with this call's key\n\t// while the call was still in flight.\n\tforgotten bool\n\n\t// These fields are read and written with the singleflight\n\t// mutex held before the WaitGroup is done, and are read but\n\t// not written after the WaitGroup is done.\n\tdups  int\n\tchans []chan<- Result\n}\n\n// Group represents a class of work and forms a namespace in\n// which units of work can be executed with duplicate suppression.\ntype Group struct {\n\tmu sync.Mutex       // protects m\n\tm  map[string]*call // lazily initialized\n}\n\n// Result holds the results of Do, so they can be passed\n// on a channel.\ntype Result struct {\n\tVal    interface{}\n\tErr    error\n\tShared bool\n}\n\n// Do executes and returns the results of the given function, making\n// sure that only one execution is in-flight for a given key at a\n// time. If a duplicate comes in, the duplicate caller waits for the\n// original to complete and receives the same results.\n// The return value shared indicates whether v was given to multiple callers.\nfunc (g *Group) Do(key string, fn func() (interface{}, error)) (v interface{}, err error, shared bool) {\n\tg.mu.Lock()\n\tif g.m == nil {\n\t\tg.m = make(map[string]*call)\n\t}\n\tif c, ok := g.m[key]; ok {\n\t\tc.dups++\n\t\tg.mu.Unlock()\n\t\tc.wg.Wait()\n\t\treturn c.val, c.err, true\n\t}\n\tc := new(call)\n\tc.wg.Add(1)\n\tg.m[key] = c\n\tg.mu.Unlock()\n\n\tg.doCall(c, key, fn)\n\treturn c.val, c.err, c.dups > 0\n}\n\n// DoChan is like Do but returns a channel that will receive the\n// results when they are ready.\nfunc (g *Group) DoChan(key string, fn func() (interface{}, error)) <-chan Result {\n\tch := make(chan Result, 1)\n\tg.mu.Lock()\n\tif g.m == nil {\n\t\tg.m = make(map[string]*call)\n\t}\n\tif c, ok := g.m[key]; ok {\n\t\tc.dups++\n\t\tc.chans = append(c.chans, ch)\n\t\tg.mu.Unlock()\n\t\treturn ch\n\t}\n\tc := &call{chans: []chan<- Result{ch}}\n\tc.wg.Add(1)\n\tg.m[key] = c\n\tg.mu.Unlock()\n\n\tgo g.doCall(c, key, fn)\n\n\treturn ch\n}\n\n// doCall handles the single call for a key.\nfunc (g *Group) doCall(c *call, key string, fn func() (interface{}, error)) {\n\tc.val, c.err = fn()\n\tc.wg.Done()\n\n\tg.mu.Lock()\n\tif !c.forgotten {\n\t\tdelete(g.m, key)\n\t}\n\tfor _, ch := range c.chans {\n\t\tch <- Result{c.val, c.err, c.dups > 0}\n\t}\n\tg.mu.Unlock()\n}\n\n// Forget tells the singleflight to forget about a key.  Future calls\n// to Do for this key will call the function rather than waiting for\n// an earlier call to complete.\nfunc (g *Group) Forget(key string) {\n\tg.mu.Lock()\n\tif c, ok := g.m[key]; ok {\n\t\tc.forgotten = true\n\t}\n\tdelete(g.m, key)\n\tg.mu.Unlock()\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/host.go",
    "content": "package protocol\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"net\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// ValidateEndpointHostHandler is a request handler that will validate the\n// request endpoint's hosts is a valid RFC 3986 host.\nvar ValidateEndpointHostHandler = request.NamedHandler{\n\tName: \"awssdk.protocol.ValidateEndpointHostHandler\",\n\tFn: func(r *request.Request) {\n\t\terr := ValidateEndpointHost(r.Operation.Name, r.HTTPRequest.URL.Host)\n\t\tif err != nil {\n\t\t\tr.Error = err\n\t\t}\n\t},\n}\n\n// ValidateEndpointHost validates that the host string passed in is a valid RFC\n// 3986 host. Returns error if the host is not valid.\nfunc ValidateEndpointHost(opName, host string) error {\n\tparamErrs := request.ErrInvalidParams{Context: opName}\n\n\tvar hostname string\n\tvar port string\n\tvar err error\n\n\tif strings.Contains(host, \":\") {\n\t\thostname, port, err = net.SplitHostPort(host)\n\n\t\tif err != nil {\n\t\t\tparamErrs.Add(request.NewErrParamFormat(\"endpoint\", err.Error(), host))\n\t\t}\n\n\t\tif !ValidPortNumber(port) {\n\t\t\tparamErrs.Add(request.NewErrParamFormat(\"endpoint port number\", \"[0-65535]\", port))\n\t\t}\n\t} else {\n\t\thostname = host\n\t}\n\n\tlabels := strings.Split(hostname, \".\")\n\tfor i, label := range labels {\n\t\tif i == len(labels)-1 && len(label) == 0 {\n\t\t\t// Allow trailing dot for FQDN hosts.\n\t\t\tcontinue\n\t\t}\n\n\t\tif !ValidHostLabel(label) {\n\t\t\tparamErrs.Add(request.NewErrParamFormat(\n\t\t\t\t\"endpoint host label\", \"[a-zA-Z0-9-]{1,63}\", label))\n\t\t}\n\t}\n\n\tif len(hostname) == 0 {\n\t\tparamErrs.Add(request.NewErrParamMinLen(\"endpoint host\", 1))\n\t}\n\n\tif len(hostname) > 255 {\n\t\tparamErrs.Add(request.NewErrParamMaxLen(\n\t\t\t\"endpoint host\", 255, host,\n\t\t))\n\t}\n\n\tif paramErrs.Len() > 0 {\n\t\treturn paramErrs\n\t}\n\treturn nil\n}\n\n// ValidHostLabel returns if the label is a valid RFC 3986 host label.\nfunc ValidHostLabel(label string) bool {\n\tif l := len(label); l == 0 || l > 63 {\n\t\treturn false\n\t}\n\tfor _, r := range label {\n\t\tswitch {\n\t\tcase r >= '0' && r <= '9':\n\t\tcase r >= 'A' && r <= 'Z':\n\t\tcase r >= 'a' && r <= 'z':\n\t\tcase r == '-':\n\t\tdefault:\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\n// ValidPortNumber return if the port is valid RFC 3986 port\nfunc ValidPortNumber(port string) bool {\n\ti, err := strconv.Atoi(port)\n\tif err != nil {\n\t\treturn false\n\t}\n\n\tif i < 0 || i > 65535 {\n\t\treturn false\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go",
    "content": "package protocol\n\nimport (\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// HostPrefixHandlerName is the handler name for the host prefix request\n// handler.\nconst HostPrefixHandlerName = \"awssdk.endpoint.HostPrefixHandler\"\n\n// NewHostPrefixHandler constructs a build handler\nfunc NewHostPrefixHandler(prefix string, labelsFn func() map[string]string) request.NamedHandler {\n\tbuilder := HostPrefixBuilder{\n\t\tPrefix:   prefix,\n\t\tLabelsFn: labelsFn,\n\t}\n\n\treturn request.NamedHandler{\n\t\tName: HostPrefixHandlerName,\n\t\tFn:   builder.Build,\n\t}\n}\n\n// HostPrefixBuilder provides the request handler to expand and prepend\n// the host prefix into the operation's request endpoint host.\ntype HostPrefixBuilder struct {\n\tPrefix   string\n\tLabelsFn func() map[string]string\n}\n\n// Build updates the passed in Request with the HostPrefix template expanded.\nfunc (h HostPrefixBuilder) Build(r *request.Request) {\n\tif aws.BoolValue(r.Config.DisableEndpointHostPrefix) {\n\t\treturn\n\t}\n\n\tvar labels map[string]string\n\tif h.LabelsFn != nil {\n\t\tlabels = h.LabelsFn()\n\t}\n\n\tprefix := h.Prefix\n\tfor name, value := range labels {\n\t\tprefix = strings.Replace(prefix, \"{\"+name+\"}\", value, -1)\n\t}\n\n\tr.HTTPRequest.URL.Host = prefix + r.HTTPRequest.URL.Host\n\tif len(r.HTTPRequest.Host) > 0 {\n\t\tr.HTTPRequest.Host = prefix + r.HTTPRequest.Host\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/idempotency.go",
    "content": "package protocol\n\nimport (\n\t\"crypto/rand\"\n\t\"fmt\"\n\t\"reflect\"\n)\n\n// RandReader is the random reader the protocol package will use to read\n// random bytes from. This is exported for testing, and should not be used.\nvar RandReader = rand.Reader\n\nconst idempotencyTokenFillTag = `idempotencyToken`\n\n// CanSetIdempotencyToken returns true if the struct field should be\n// automatically populated with a Idempotency token.\n//\n// Only *string and string type fields that are tagged with idempotencyToken\n// which are not already set can be auto filled.\nfunc CanSetIdempotencyToken(v reflect.Value, f reflect.StructField) bool {\n\tswitch u := v.Interface().(type) {\n\t// To auto fill an Idempotency token the field must be a string,\n\t// tagged for auto fill, and have a zero value.\n\tcase *string:\n\t\treturn u == nil && len(f.Tag.Get(idempotencyTokenFillTag)) != 0\n\tcase string:\n\t\treturn len(u) == 0 && len(f.Tag.Get(idempotencyTokenFillTag)) != 0\n\t}\n\n\treturn false\n}\n\n// GetIdempotencyToken returns a randomly generated idempotency token.\nfunc GetIdempotencyToken() string {\n\tb := make([]byte, 16)\n\tRandReader.Read(b)\n\n\treturn UUIDVersion4(b)\n}\n\n// SetIdempotencyToken will set the value provided with a Idempotency Token.\n// Given that the value can be set. Will panic if value is not setable.\nfunc SetIdempotencyToken(v reflect.Value) {\n\tif v.Kind() == reflect.Ptr {\n\t\tif v.IsNil() && v.CanSet() {\n\t\t\tv.Set(reflect.New(v.Type().Elem()))\n\t\t}\n\t\tv = v.Elem()\n\t}\n\tv = reflect.Indirect(v)\n\n\tif !v.CanSet() {\n\t\tpanic(fmt.Sprintf(\"unable to set idempotnecy token %v\", v))\n\t}\n\n\tb := make([]byte, 16)\n\t_, err := rand.Read(b)\n\tif err != nil {\n\t\t// TODO handle error\n\t\treturn\n\t}\n\n\tv.Set(reflect.ValueOf(UUIDVersion4(b)))\n}\n\n// UUIDVersion4 returns a Version 4 random UUID from the byte slice provided\nfunc UUIDVersion4(u []byte) string {\n\t// https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_.28random.29\n\t// 13th character is \"4\"\n\tu[6] = (u[6] | 0x40) & 0x4F\n\t// 17th character is \"8\", \"9\", \"a\", or \"b\"\n\tu[8] = (u[8] | 0x80) & 0xBF\n\n\treturn fmt.Sprintf(`%X-%X-%X-%X-%X`, u[0:4], u[4:6], u[6:8], u[8:10], u[10:])\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/build.go",
    "content": "// Package jsonutil provides JSON serialization of AWS requests and responses.\npackage jsonutil\n\nimport (\n\t\"bytes\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n)\n\nconst (\n\tfloatNaN    = \"NaN\"\n\tfloatInf    = \"Infinity\"\n\tfloatNegInf = \"-Infinity\"\n)\n\nvar timeType = reflect.ValueOf(time.Time{}).Type()\nvar byteSliceType = reflect.ValueOf([]byte{}).Type()\n\n// BuildJSON builds a JSON string for a given object v.\nfunc BuildJSON(v interface{}) ([]byte, error) {\n\tvar buf bytes.Buffer\n\n\terr := buildAny(reflect.ValueOf(v), &buf, \"\")\n\treturn buf.Bytes(), err\n}\n\nfunc buildAny(value reflect.Value, buf *bytes.Buffer, tag reflect.StructTag) error {\n\torigVal := value\n\tvalue = reflect.Indirect(value)\n\tif !value.IsValid() {\n\t\treturn nil\n\t}\n\n\tvtype := value.Type()\n\n\tt := tag.Get(\"type\")\n\tif t == \"\" {\n\t\tswitch vtype.Kind() {\n\t\tcase reflect.Struct:\n\t\t\t// also it can't be a time object\n\t\t\tif value.Type() != timeType {\n\t\t\t\tt = \"structure\"\n\t\t\t}\n\t\tcase reflect.Slice:\n\t\t\t// also it can't be a byte slice\n\t\t\tif _, ok := value.Interface().([]byte); !ok {\n\t\t\t\tt = \"list\"\n\t\t\t}\n\t\tcase reflect.Map:\n\t\t\t// cannot be a JSONValue map\n\t\t\tif _, ok := value.Interface().(aws.JSONValue); !ok {\n\t\t\t\tt = \"map\"\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch t {\n\tcase \"structure\":\n\t\tif field, ok := vtype.FieldByName(\"_\"); ok {\n\t\t\ttag = field.Tag\n\t\t}\n\t\treturn buildStruct(value, buf, tag)\n\tcase \"list\":\n\t\treturn buildList(value, buf, tag)\n\tcase \"map\":\n\t\treturn buildMap(value, buf, tag)\n\tdefault:\n\t\treturn buildScalar(origVal, buf, tag)\n\t}\n}\n\nfunc buildStruct(value reflect.Value, buf *bytes.Buffer, tag reflect.StructTag) error {\n\tif !value.IsValid() {\n\t\treturn nil\n\t}\n\n\t// unwrap payloads\n\tif payload := tag.Get(\"payload\"); payload != \"\" {\n\t\tfield, _ := value.Type().FieldByName(payload)\n\t\ttag = field.Tag\n\t\tvalue = elemOf(value.FieldByName(payload))\n\t\tif !value.IsValid() && tag.Get(\"type\") != \"structure\" {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tbuf.WriteByte('{')\n\tdefer buf.WriteString(\"}\")\n\n\tif !value.IsValid() {\n\t\treturn nil\n\t}\n\n\tt := value.Type()\n\tfirst := true\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tmember := value.Field(i)\n\n\t\t// This allocates the most memory.\n\t\t// Additionally, we cannot skip nil fields due to\n\t\t// idempotency auto filling.\n\t\tfield := t.Field(i)\n\n\t\tif field.PkgPath != \"\" {\n\t\t\tcontinue // ignore unexported fields\n\t\t}\n\t\tif field.Tag.Get(\"json\") == \"-\" {\n\t\t\tcontinue\n\t\t}\n\t\tif field.Tag.Get(\"location\") != \"\" {\n\t\t\tcontinue // ignore non-body elements\n\t\t}\n\t\tif field.Tag.Get(\"ignore\") != \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tif protocol.CanSetIdempotencyToken(member, field) {\n\t\t\ttoken := protocol.GetIdempotencyToken()\n\t\t\tmember = reflect.ValueOf(&token)\n\t\t}\n\n\t\tif (member.Kind() == reflect.Ptr || member.Kind() == reflect.Slice || member.Kind() == reflect.Map) && member.IsNil() {\n\t\t\tcontinue // ignore unset fields\n\t\t}\n\n\t\tif first {\n\t\t\tfirst = false\n\t\t} else {\n\t\t\tbuf.WriteByte(',')\n\t\t}\n\n\t\t// figure out what this field is called\n\t\tname := field.Name\n\t\tif locName := field.Tag.Get(\"locationName\"); locName != \"\" {\n\t\t\tname = locName\n\t\t}\n\n\t\twriteString(name, buf)\n\t\tbuf.WriteString(`:`)\n\n\t\terr := buildAny(member, buf, field.Tag)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t}\n\n\treturn nil\n}\n\nfunc buildList(value reflect.Value, buf *bytes.Buffer, tag reflect.StructTag) error {\n\tbuf.WriteString(\"[\")\n\n\tfor i := 0; i < value.Len(); i++ {\n\t\tbuildAny(value.Index(i), buf, \"\")\n\n\t\tif i < value.Len()-1 {\n\t\t\tbuf.WriteString(\",\")\n\t\t}\n\t}\n\n\tbuf.WriteString(\"]\")\n\n\treturn nil\n}\n\ntype sortedValues []reflect.Value\n\nfunc (sv sortedValues) Len() int           { return len(sv) }\nfunc (sv sortedValues) Swap(i, j int)      { sv[i], sv[j] = sv[j], sv[i] }\nfunc (sv sortedValues) Less(i, j int) bool { return sv[i].String() < sv[j].String() }\n\nfunc buildMap(value reflect.Value, buf *bytes.Buffer, tag reflect.StructTag) error {\n\tbuf.WriteString(\"{\")\n\n\tsv := sortedValues(value.MapKeys())\n\tsort.Sort(sv)\n\n\tfor i, k := range sv {\n\t\tif i > 0 {\n\t\t\tbuf.WriteByte(',')\n\t\t}\n\n\t\twriteString(k.String(), buf)\n\t\tbuf.WriteString(`:`)\n\n\t\tbuildAny(value.MapIndex(k), buf, \"\")\n\t}\n\n\tbuf.WriteString(\"}\")\n\n\treturn nil\n}\n\nfunc buildScalar(v reflect.Value, buf *bytes.Buffer, tag reflect.StructTag) error {\n\t// prevents allocation on the heap.\n\tscratch := [64]byte{}\n\tswitch value := reflect.Indirect(v); value.Kind() {\n\tcase reflect.String:\n\t\twriteString(value.String(), buf)\n\tcase reflect.Bool:\n\t\tif value.Bool() {\n\t\t\tbuf.WriteString(\"true\")\n\t\t} else {\n\t\t\tbuf.WriteString(\"false\")\n\t\t}\n\tcase reflect.Int64:\n\t\tbuf.Write(strconv.AppendInt(scratch[:0], value.Int(), 10))\n\tcase reflect.Float64:\n\t\tf := value.Float()\n\t\tswitch {\n\t\tcase math.IsNaN(f):\n\t\t\twriteString(floatNaN, buf)\n\t\tcase math.IsInf(f, 1):\n\t\t\twriteString(floatInf, buf)\n\t\tcase math.IsInf(f, -1):\n\t\t\twriteString(floatNegInf, buf)\n\t\tdefault:\n\t\t\tbuf.Write(strconv.AppendFloat(scratch[:0], f, 'f', -1, 64))\n\t\t}\n\tdefault:\n\t\tswitch converted := value.Interface().(type) {\n\t\tcase time.Time:\n\t\t\tformat := tag.Get(\"timestampFormat\")\n\t\t\tif len(format) == 0 {\n\t\t\t\tformat = protocol.UnixTimeFormatName\n\t\t\t}\n\n\t\t\tts := protocol.FormatTime(format, converted)\n\t\t\tif format != protocol.UnixTimeFormatName {\n\t\t\t\tts = `\"` + ts + `\"`\n\t\t\t}\n\n\t\t\tbuf.WriteString(ts)\n\t\tcase []byte:\n\t\t\tif !value.IsNil() {\n\t\t\t\tbuf.WriteByte('\"')\n\t\t\t\tif len(converted) < 1024 {\n\t\t\t\t\t// for small buffers, using Encode directly is much faster.\n\t\t\t\t\tdst := make([]byte, base64.StdEncoding.EncodedLen(len(converted)))\n\t\t\t\t\tbase64.StdEncoding.Encode(dst, converted)\n\t\t\t\t\tbuf.Write(dst)\n\t\t\t\t} else {\n\t\t\t\t\t// for large buffers, avoid unnecessary extra temporary\n\t\t\t\t\t// buffer space.\n\t\t\t\t\tenc := base64.NewEncoder(base64.StdEncoding, buf)\n\t\t\t\t\tenc.Write(converted)\n\t\t\t\t\tenc.Close()\n\t\t\t\t}\n\t\t\t\tbuf.WriteByte('\"')\n\t\t\t}\n\t\tcase aws.JSONValue:\n\t\t\tstr, err := protocol.EncodeJSONValue(converted, protocol.QuotedEscape)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"unable to encode JSONValue, %v\", err)\n\t\t\t}\n\t\t\tbuf.WriteString(str)\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unsupported JSON value %v (%s)\", value.Interface(), value.Type())\n\t\t}\n\t}\n\treturn nil\n}\n\nvar hex = \"0123456789abcdef\"\n\nfunc writeString(s string, buf *bytes.Buffer) {\n\tbuf.WriteByte('\"')\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] == '\"' {\n\t\t\tbuf.WriteString(`\\\"`)\n\t\t} else if s[i] == '\\\\' {\n\t\t\tbuf.WriteString(`\\\\`)\n\t\t} else if s[i] == '\\b' {\n\t\t\tbuf.WriteString(`\\b`)\n\t\t} else if s[i] == '\\f' {\n\t\t\tbuf.WriteString(`\\f`)\n\t\t} else if s[i] == '\\r' {\n\t\t\tbuf.WriteString(`\\r`)\n\t\t} else if s[i] == '\\t' {\n\t\t\tbuf.WriteString(`\\t`)\n\t\t} else if s[i] == '\\n' {\n\t\t\tbuf.WriteString(`\\n`)\n\t\t} else if s[i] < 32 {\n\t\t\tbuf.WriteString(\"\\\\u00\")\n\t\t\tbuf.WriteByte(hex[s[i]>>4])\n\t\t\tbuf.WriteByte(hex[s[i]&0xF])\n\t\t} else {\n\t\t\tbuf.WriteByte(s[i])\n\t\t}\n\t}\n\tbuf.WriteByte('\"')\n}\n\n// Returns the reflection element of a value, if it is a pointer.\nfunc elemOf(value reflect.Value) reflect.Value {\n\tfor value.Kind() == reflect.Ptr {\n\t\tvalue = value.Elem()\n\t}\n\treturn value\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/unmarshal.go",
    "content": "package jsonutil\n\nimport (\n\t\"bytes\"\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"math/big\"\n\t\"reflect\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n)\n\nvar millisecondsFloat = new(big.Float).SetInt64(1e3)\n\n// UnmarshalJSONError unmarshal's the reader's JSON document into the passed in\n// type. The value to unmarshal the json document into must be a pointer to the\n// type.\nfunc UnmarshalJSONError(v interface{}, stream io.Reader) error {\n\tvar errBuf bytes.Buffer\n\tbody := io.TeeReader(stream, &errBuf)\n\n\terr := json.NewDecoder(body).Decode(v)\n\tif err != nil {\n\t\tmsg := \"failed decoding error message\"\n\t\tif err == io.EOF {\n\t\t\tmsg = \"error message missing\"\n\t\t\terr = nil\n\t\t}\n\t\treturn awserr.NewUnmarshalError(err, msg, errBuf.Bytes())\n\t}\n\n\treturn nil\n}\n\n// UnmarshalJSON reads a stream and unmarshals the results in object v.\nfunc UnmarshalJSON(v interface{}, stream io.Reader) error {\n\tvar out interface{}\n\n\tdecoder := json.NewDecoder(stream)\n\tdecoder.UseNumber()\n\terr := decoder.Decode(&out)\n\tif err == io.EOF {\n\t\treturn nil\n\t} else if err != nil {\n\t\treturn err\n\t}\n\n\treturn unmarshaler{}.unmarshalAny(reflect.ValueOf(v), out, \"\")\n}\n\n// UnmarshalJSONCaseInsensitive reads a stream and unmarshals the result into the\n// object v. Ignores casing for structure members.\nfunc UnmarshalJSONCaseInsensitive(v interface{}, stream io.Reader) error {\n\tvar out interface{}\n\n\tdecoder := json.NewDecoder(stream)\n\tdecoder.UseNumber()\n\terr := decoder.Decode(&out)\n\tif err == io.EOF {\n\t\treturn nil\n\t} else if err != nil {\n\t\treturn err\n\t}\n\n\treturn unmarshaler{\n\t\tcaseInsensitive: true,\n\t}.unmarshalAny(reflect.ValueOf(v), out, \"\")\n}\n\ntype unmarshaler struct {\n\tcaseInsensitive bool\n}\n\nfunc (u unmarshaler) unmarshalAny(value reflect.Value, data interface{}, tag reflect.StructTag) error {\n\tvtype := value.Type()\n\tif vtype.Kind() == reflect.Ptr {\n\t\tvtype = vtype.Elem() // check kind of actual element type\n\t}\n\n\tt := tag.Get(\"type\")\n\tif t == \"\" {\n\t\tswitch vtype.Kind() {\n\t\tcase reflect.Struct:\n\t\t\t// also it can't be a time object\n\t\t\tif _, ok := value.Interface().(*time.Time); !ok {\n\t\t\t\tt = \"structure\"\n\t\t\t}\n\t\tcase reflect.Slice:\n\t\t\t// also it can't be a byte slice\n\t\t\tif _, ok := value.Interface().([]byte); !ok {\n\t\t\t\tt = \"list\"\n\t\t\t}\n\t\tcase reflect.Map:\n\t\t\t// cannot be a JSONValue map\n\t\t\tif _, ok := value.Interface().(aws.JSONValue); !ok {\n\t\t\t\tt = \"map\"\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch t {\n\tcase \"structure\":\n\t\tif field, ok := vtype.FieldByName(\"_\"); ok {\n\t\t\ttag = field.Tag\n\t\t}\n\t\treturn u.unmarshalStruct(value, data, tag)\n\tcase \"list\":\n\t\treturn u.unmarshalList(value, data, tag)\n\tcase \"map\":\n\t\treturn u.unmarshalMap(value, data, tag)\n\tdefault:\n\t\treturn u.unmarshalScalar(value, data, tag)\n\t}\n}\n\nfunc (u unmarshaler) unmarshalStruct(value reflect.Value, data interface{}, tag reflect.StructTag) error {\n\tif data == nil {\n\t\treturn nil\n\t}\n\tmapData, ok := data.(map[string]interface{})\n\tif !ok {\n\t\treturn fmt.Errorf(\"JSON value is not a structure (%#v)\", data)\n\t}\n\n\tt := value.Type()\n\tif value.Kind() == reflect.Ptr {\n\t\tif value.IsNil() { // create the structure if it's nil\n\t\t\ts := reflect.New(value.Type().Elem())\n\t\t\tvalue.Set(s)\n\t\t\tvalue = s\n\t\t}\n\n\t\tvalue = value.Elem()\n\t\tt = t.Elem()\n\t}\n\n\t// unwrap any payloads\n\tif payload := tag.Get(\"payload\"); payload != \"\" {\n\t\tfield, _ := t.FieldByName(payload)\n\t\treturn u.unmarshalAny(value.FieldByName(payload), data, field.Tag)\n\t}\n\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tfield := t.Field(i)\n\t\tif field.PkgPath != \"\" {\n\t\t\tcontinue // ignore unexported fields\n\t\t}\n\n\t\t// figure out what this field is called\n\t\tname := field.Name\n\t\tif locName := field.Tag.Get(\"locationName\"); locName != \"\" {\n\t\t\tname = locName\n\t\t}\n\t\tif u.caseInsensitive {\n\t\t\tif _, ok := mapData[name]; !ok {\n\t\t\t\t// Fallback to uncased name search if the exact name didn't match.\n\t\t\t\tfor kn, v := range mapData {\n\t\t\t\t\tif strings.EqualFold(kn, name) {\n\t\t\t\t\t\tmapData[name] = v\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tmember := value.FieldByIndex(field.Index)\n\t\terr := u.unmarshalAny(member, mapData[name], field.Tag)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (u unmarshaler) unmarshalList(value reflect.Value, data interface{}, tag reflect.StructTag) error {\n\tif data == nil {\n\t\treturn nil\n\t}\n\tlistData, ok := data.([]interface{})\n\tif !ok {\n\t\treturn fmt.Errorf(\"JSON value is not a list (%#v)\", data)\n\t}\n\n\tif value.IsNil() {\n\t\tl := len(listData)\n\t\tvalue.Set(reflect.MakeSlice(value.Type(), l, l))\n\t}\n\n\tfor i, c := range listData {\n\t\terr := u.unmarshalAny(value.Index(i), c, \"\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (u unmarshaler) unmarshalMap(value reflect.Value, data interface{}, tag reflect.StructTag) error {\n\tif data == nil {\n\t\treturn nil\n\t}\n\tmapData, ok := data.(map[string]interface{})\n\tif !ok {\n\t\treturn fmt.Errorf(\"JSON value is not a map (%#v)\", data)\n\t}\n\n\tif value.IsNil() {\n\t\tvalue.Set(reflect.MakeMap(value.Type()))\n\t}\n\n\tfor k, v := range mapData {\n\t\tkvalue := reflect.ValueOf(k)\n\t\tvvalue := reflect.New(value.Type().Elem()).Elem()\n\n\t\tu.unmarshalAny(vvalue, v, \"\")\n\t\tvalue.SetMapIndex(kvalue, vvalue)\n\t}\n\n\treturn nil\n}\n\nfunc (u unmarshaler) unmarshalScalar(value reflect.Value, data interface{}, tag reflect.StructTag) error {\n\n\tswitch d := data.(type) {\n\tcase nil:\n\t\treturn nil // nothing to do here\n\tcase string:\n\t\tswitch value.Interface().(type) {\n\t\tcase *string:\n\t\t\tvalue.Set(reflect.ValueOf(&d))\n\t\tcase []byte:\n\t\t\tb, err := base64.StdEncoding.DecodeString(d)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tvalue.Set(reflect.ValueOf(b))\n\t\tcase *time.Time:\n\t\t\tformat := tag.Get(\"timestampFormat\")\n\t\t\tif len(format) == 0 {\n\t\t\t\tformat = protocol.ISO8601TimeFormatName\n\t\t\t}\n\n\t\t\tt, err := protocol.ParseTime(format, d)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tvalue.Set(reflect.ValueOf(&t))\n\t\tcase aws.JSONValue:\n\t\t\t// No need to use escaping as the value is a non-quoted string.\n\t\t\tv, err := protocol.DecodeJSONValue(d, protocol.NoEscape)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tvalue.Set(reflect.ValueOf(v))\n\t\tcase *float64:\n\t\t\t// These are regular strings when parsed by encoding/json's unmarshaler.\n\t\t\tswitch {\n\t\t\tcase strings.EqualFold(d, floatNaN):\n\t\t\t\tvalue.Set(reflect.ValueOf(aws.Float64(math.NaN())))\n\t\t\tcase strings.EqualFold(d, floatInf):\n\t\t\t\tvalue.Set(reflect.ValueOf(aws.Float64(math.Inf(1))))\n\t\t\tcase strings.EqualFold(d, floatNegInf):\n\t\t\t\tvalue.Set(reflect.ValueOf(aws.Float64(math.Inf(-1))))\n\t\t\tdefault:\n\t\t\t\treturn fmt.Errorf(\"unknown JSON number value: %s\", d)\n\t\t\t}\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unsupported value: %v (%s)\", value.Interface(), value.Type())\n\t\t}\n\tcase json.Number:\n\t\tswitch value.Interface().(type) {\n\t\tcase *int64:\n\t\t\t// Retain the old behavior where we would just truncate the float64\n\t\t\t// calling d.Int64() here could cause an invalid syntax error due to the usage of strconv.ParseInt\n\t\t\tf, err := d.Float64()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tdi := int64(f)\n\t\t\tvalue.Set(reflect.ValueOf(&di))\n\t\tcase *float64:\n\t\t\tf, err := d.Float64()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tvalue.Set(reflect.ValueOf(&f))\n\t\tcase *time.Time:\n\t\t\tfloat, ok := new(big.Float).SetString(d.String())\n\t\t\tif !ok {\n\t\t\t\treturn fmt.Errorf(\"unsupported float time representation: %v\", d.String())\n\t\t\t}\n\t\t\tfloat = float.Mul(float, millisecondsFloat)\n\t\t\tms, _ := float.Int64()\n\t\t\tt := time.Unix(0, ms*1e6).UTC()\n\t\t\tvalue.Set(reflect.ValueOf(&t))\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unsupported value: %v (%s)\", value.Interface(), value.Type())\n\t\t}\n\tcase bool:\n\t\tswitch value.Interface().(type) {\n\t\tcase *bool:\n\t\t\tvalue.Set(reflect.ValueOf(&d))\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unsupported value: %v (%s)\", value.Interface(), value.Type())\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported JSON value (%v)\", data)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/jsonrpc/jsonrpc.go",
    "content": "// Package jsonrpc provides JSON RPC utilities for serialization of AWS\n// requests and responses.\npackage jsonrpc\n\n//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/input/json.json build_test.go\n//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/output/json.json unmarshal_test.go\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/json/jsonutil\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/rest\"\n)\n\nvar emptyJSON = []byte(\"{}\")\n\n// BuildHandler is a named request handler for building jsonrpc protocol\n// requests\nvar BuildHandler = request.NamedHandler{\n\tName: \"awssdk.jsonrpc.Build\",\n\tFn:   Build,\n}\n\n// UnmarshalHandler is a named request handler for unmarshaling jsonrpc\n// protocol requests\nvar UnmarshalHandler = request.NamedHandler{\n\tName: \"awssdk.jsonrpc.Unmarshal\",\n\tFn:   Unmarshal,\n}\n\n// UnmarshalMetaHandler is a named request handler for unmarshaling jsonrpc\n// protocol request metadata\nvar UnmarshalMetaHandler = request.NamedHandler{\n\tName: \"awssdk.jsonrpc.UnmarshalMeta\",\n\tFn:   UnmarshalMeta,\n}\n\n// Build builds a JSON payload for a JSON RPC request.\nfunc Build(req *request.Request) {\n\tvar buf []byte\n\tvar err error\n\tif req.ParamsFilled() {\n\t\tbuf, err = jsonutil.BuildJSON(req.Params)\n\t\tif err != nil {\n\t\t\treq.Error = awserr.New(request.ErrCodeSerialization, \"failed encoding JSON RPC request\", err)\n\t\t\treturn\n\t\t}\n\t} else {\n\t\tbuf = emptyJSON\n\t}\n\n\t// Always serialize the body, don't suppress it.\n\treq.SetBufferBody(buf)\n\n\tif req.ClientInfo.TargetPrefix != \"\" {\n\t\ttarget := req.ClientInfo.TargetPrefix + \".\" + req.Operation.Name\n\t\treq.HTTPRequest.Header.Add(\"X-Amz-Target\", target)\n\t}\n\n\t// Only set the content type if one is not already specified and an\n\t// JSONVersion is specified.\n\tif ct, v := req.HTTPRequest.Header.Get(\"Content-Type\"), req.ClientInfo.JSONVersion; len(ct) == 0 && len(v) != 0 {\n\t\tjsonVersion := req.ClientInfo.JSONVersion\n\t\treq.HTTPRequest.Header.Set(\"Content-Type\", \"application/x-amz-json-\"+jsonVersion)\n\t}\n}\n\n// Unmarshal unmarshals a response for a JSON RPC service.\nfunc Unmarshal(req *request.Request) {\n\tdefer req.HTTPResponse.Body.Close()\n\tif req.DataFilled() {\n\t\terr := jsonutil.UnmarshalJSON(req.Data, req.HTTPResponse.Body)\n\t\tif err != nil {\n\t\t\treq.Error = awserr.NewRequestFailure(\n\t\t\t\tawserr.New(request.ErrCodeSerialization, \"failed decoding JSON RPC response\", err),\n\t\t\t\treq.HTTPResponse.StatusCode,\n\t\t\t\treq.RequestID,\n\t\t\t)\n\t\t}\n\t}\n\treturn\n}\n\n// UnmarshalMeta unmarshals headers from a response for a JSON RPC service.\nfunc UnmarshalMeta(req *request.Request) {\n\trest.UnmarshalMeta(req)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/jsonrpc/unmarshal_error.go",
    "content": "package jsonrpc\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/json/jsonutil\"\n)\n\nconst (\n\tawsQueryError = \"x-amzn-query-error\"\n\t// A valid header example - \"x-amzn-query-error\": \"<QueryErrorCode>;<ErrorType>\"\n\tawsQueryErrorPartsCount = 2\n)\n\n// UnmarshalTypedError provides unmarshaling errors API response errors\n// for both typed and untyped errors.\ntype UnmarshalTypedError struct {\n\texceptions      map[string]func(protocol.ResponseMetadata) error\n\tqueryExceptions map[string]func(protocol.ResponseMetadata, string) error\n}\n\n// NewUnmarshalTypedError returns an UnmarshalTypedError initialized for the\n// set of exception names to the error unmarshalers\nfunc NewUnmarshalTypedError(exceptions map[string]func(protocol.ResponseMetadata) error) *UnmarshalTypedError {\n\treturn &UnmarshalTypedError{\n\t\texceptions:      exceptions,\n\t\tqueryExceptions: map[string]func(protocol.ResponseMetadata, string) error{},\n\t}\n}\n\n// NewUnmarshalTypedErrorWithOptions works similar to NewUnmarshalTypedError applying options to the UnmarshalTypedError\n// before returning it\nfunc NewUnmarshalTypedErrorWithOptions(exceptions map[string]func(protocol.ResponseMetadata) error, optFns ...func(*UnmarshalTypedError)) *UnmarshalTypedError {\n\tunmarshaledError := NewUnmarshalTypedError(exceptions)\n\tfor _, fn := range optFns {\n\t\tfn(unmarshaledError)\n\t}\n\treturn unmarshaledError\n}\n\n// WithQueryCompatibility is a helper function to construct a functional option for use with NewUnmarshalTypedErrorWithOptions.\n// The queryExceptions given act as an override for unmarshalling errors when query compatible error codes are found.\n// See also [awsQueryCompatible trait]\n//\n// [awsQueryCompatible trait]: https://smithy.io/2.0/aws/protocols/aws-query-protocol.html#aws-protocols-awsquerycompatible-trait\nfunc WithQueryCompatibility(queryExceptions map[string]func(protocol.ResponseMetadata, string) error) func(*UnmarshalTypedError) {\n\treturn func(typedError *UnmarshalTypedError) {\n\t\ttypedError.queryExceptions = queryExceptions\n\t}\n}\n\n// UnmarshalError attempts to unmarshal the HTTP response error as a known\n// error type. If unable to unmarshal the error type, the generic SDK error\n// type will be used.\nfunc (u *UnmarshalTypedError) UnmarshalError(\n\tresp *http.Response,\n\trespMeta protocol.ResponseMetadata,\n) (error, error) {\n\n\tvar buf bytes.Buffer\n\tvar jsonErr jsonErrorResponse\n\tteeReader := io.TeeReader(resp.Body, &buf)\n\terr := jsonutil.UnmarshalJSONError(&jsonErr, teeReader)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tbody := ioutil.NopCloser(&buf)\n\n\t// Code may be separated by hash(#), with the last element being the code\n\t// used by the SDK.\n\tcodeParts := strings.SplitN(jsonErr.Code, \"#\", 2)\n\tcode := codeParts[len(codeParts)-1]\n\tmsg := jsonErr.Message\n\n\tqueryCodeParts := queryCodeParts(resp, u)\n\n\tif fn, ok := u.exceptions[code]; ok {\n\t\t// If query-compatible exceptions are found and query-error-header is found,\n\t\t// then use associated constructor to get exception with query error code.\n\t\t//\n\t\t// If exception code is known, use associated constructor to get a value\n\t\t// for the exception that the JSON body can be unmarshaled into.\n\t\tvar v error\n\t\tqueryErrFn, queryExceptionsFound := u.queryExceptions[code]\n\t\tif len(queryCodeParts) == awsQueryErrorPartsCount && queryExceptionsFound {\n\t\t\tv = queryErrFn(respMeta, queryCodeParts[0])\n\t\t} else {\n\t\t\tv = fn(respMeta)\n\t\t}\n\t\terr := jsonutil.UnmarshalJSONCaseInsensitive(v, body)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn v, nil\n\t}\n\n\tif len(queryCodeParts) == awsQueryErrorPartsCount && len(u.queryExceptions) > 0 {\n\t\tcode = queryCodeParts[0]\n\t}\n\n\t// fallback to unmodeled generic exceptions\n\treturn awserr.NewRequestFailure(\n\t\tawserr.New(code, msg, nil),\n\t\trespMeta.StatusCode,\n\t\trespMeta.RequestID,\n\t), nil\n}\n\n// A valid header example - \"x-amzn-query-error\": \"<QueryErrorCode>;<ErrorType>\"\nfunc queryCodeParts(resp *http.Response, u *UnmarshalTypedError) []string {\n\tqueryCodeHeader := resp.Header.Get(awsQueryError)\n\tvar queryCodeParts []string\n\tif queryCodeHeader != \"\" && len(u.queryExceptions) > 0 {\n\t\tqueryCodeParts = strings.Split(queryCodeHeader, \";\")\n\t}\n\treturn queryCodeParts\n}\n\n// UnmarshalErrorHandler is a named request handler for unmarshaling jsonrpc\n// protocol request errors\nvar UnmarshalErrorHandler = request.NamedHandler{\n\tName: \"awssdk.jsonrpc.UnmarshalError\",\n\tFn:   UnmarshalError,\n}\n\n// UnmarshalError unmarshals an error response for a JSON RPC service.\nfunc UnmarshalError(req *request.Request) {\n\tdefer req.HTTPResponse.Body.Close()\n\n\tvar jsonErr jsonErrorResponse\n\terr := jsonutil.UnmarshalJSONError(&jsonErr, req.HTTPResponse.Body)\n\tif err != nil {\n\t\treq.Error = awserr.NewRequestFailure(\n\t\t\tawserr.New(request.ErrCodeSerialization,\n\t\t\t\t\"failed to unmarshal error message\", err),\n\t\t\treq.HTTPResponse.StatusCode,\n\t\t\treq.RequestID,\n\t\t)\n\t\treturn\n\t}\n\n\tcodes := strings.SplitN(jsonErr.Code, \"#\", 2)\n\treq.Error = awserr.NewRequestFailure(\n\t\tawserr.New(codes[len(codes)-1], jsonErr.Message, nil),\n\t\treq.HTTPResponse.StatusCode,\n\t\treq.RequestID,\n\t)\n}\n\ntype jsonErrorResponse struct {\n\tCode    string `json:\"__type\"`\n\tMessage string `json:\"message\"`\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go",
    "content": "package protocol\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strconv\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n)\n\n// EscapeMode is the mode that should be use for escaping a value\ntype EscapeMode uint\n\n// The modes for escaping a value before it is marshaled, and unmarshaled.\nconst (\n\tNoEscape EscapeMode = iota\n\tBase64Escape\n\tQuotedEscape\n)\n\n// EncodeJSONValue marshals the value into a JSON string, and optionally base64\n// encodes the string before returning it.\n//\n// Will panic if the escape mode is unknown.\nfunc EncodeJSONValue(v aws.JSONValue, escape EscapeMode) (string, error) {\n\tb, err := json.Marshal(v)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tswitch escape {\n\tcase NoEscape:\n\t\treturn string(b), nil\n\tcase Base64Escape:\n\t\treturn base64.StdEncoding.EncodeToString(b), nil\n\tcase QuotedEscape:\n\t\treturn strconv.Quote(string(b)), nil\n\t}\n\n\tpanic(fmt.Sprintf(\"EncodeJSONValue called with unknown EscapeMode, %v\", escape))\n}\n\n// DecodeJSONValue will attempt to decode the string input as a JSONValue.\n// Optionally decoding base64 the value first before JSON unmarshaling.\n//\n// Will panic if the escape mode is unknown.\nfunc DecodeJSONValue(v string, escape EscapeMode) (aws.JSONValue, error) {\n\tvar b []byte\n\tvar err error\n\n\tswitch escape {\n\tcase NoEscape:\n\t\tb = []byte(v)\n\tcase Base64Escape:\n\t\tb, err = base64.StdEncoding.DecodeString(v)\n\tcase QuotedEscape:\n\t\tvar u string\n\t\tu, err = strconv.Unquote(v)\n\t\tb = []byte(u)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"DecodeJSONValue called with unknown EscapeMode, %v\", escape))\n\t}\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tm := aws.JSONValue{}\n\terr = json.Unmarshal(b, &m)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn m, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go",
    "content": "package protocol\n\nimport (\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/client/metadata\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// PayloadUnmarshaler provides the interface for unmarshaling a payload's\n// reader into a SDK shape.\ntype PayloadUnmarshaler interface {\n\tUnmarshalPayload(io.Reader, interface{}) error\n}\n\n// HandlerPayloadUnmarshal implements the PayloadUnmarshaler from a\n// HandlerList. This provides the support for unmarshaling a payload reader to\n// a shape without needing a SDK request first.\ntype HandlerPayloadUnmarshal struct {\n\tUnmarshalers request.HandlerList\n}\n\n// UnmarshalPayload unmarshals the io.Reader payload into the SDK shape using\n// the Unmarshalers HandlerList provided. Returns an error if unable\n// unmarshaling fails.\nfunc (h HandlerPayloadUnmarshal) UnmarshalPayload(r io.Reader, v interface{}) error {\n\treq := &request.Request{\n\t\tHTTPRequest: &http.Request{},\n\t\tHTTPResponse: &http.Response{\n\t\t\tStatusCode: 200,\n\t\t\tHeader:     http.Header{},\n\t\t\tBody:       ioutil.NopCloser(r),\n\t\t},\n\t\tData: v,\n\t}\n\n\th.Unmarshalers.Run(req)\n\n\treturn req.Error\n}\n\n// PayloadMarshaler provides the interface for marshaling a SDK shape into and\n// io.Writer.\ntype PayloadMarshaler interface {\n\tMarshalPayload(io.Writer, interface{}) error\n}\n\n// HandlerPayloadMarshal implements the PayloadMarshaler from a HandlerList.\n// This provides support for marshaling a SDK shape into an io.Writer without\n// needing a SDK request first.\ntype HandlerPayloadMarshal struct {\n\tMarshalers request.HandlerList\n}\n\n// MarshalPayload marshals the SDK shape into the io.Writer using the\n// Marshalers HandlerList provided. Returns an error if unable if marshal\n// fails.\nfunc (h HandlerPayloadMarshal) MarshalPayload(w io.Writer, v interface{}) error {\n\treq := request.New(\n\t\taws.Config{},\n\t\tmetadata.ClientInfo{},\n\t\trequest.Handlers{},\n\t\tnil,\n\t\t&request.Operation{HTTPMethod: \"PUT\"},\n\t\tv,\n\t\tnil,\n\t)\n\n\th.Marshalers.Run(req)\n\n\tif req.Error != nil {\n\t\treturn req.Error\n\t}\n\n\tio.Copy(w, req.GetBody())\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/protocol.go",
    "content": "package protocol\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// RequireHTTPMinProtocol request handler is used to enforce that\n// the target endpoint supports the given major and minor HTTP protocol version.\ntype RequireHTTPMinProtocol struct {\n\tMajor, Minor int\n}\n\n// Handler will mark the request.Request with an error if the\n// target endpoint did not connect with the required HTTP protocol\n// major and minor version.\nfunc (p RequireHTTPMinProtocol) Handler(r *request.Request) {\n\tif r.Error != nil || r.HTTPResponse == nil {\n\t\treturn\n\t}\n\n\tif !strings.HasPrefix(r.HTTPResponse.Proto, \"HTTP\") {\n\t\tr.Error = newMinHTTPProtoError(p.Major, p.Minor, r)\n\t}\n\n\tif r.HTTPResponse.ProtoMajor < p.Major || r.HTTPResponse.ProtoMinor < p.Minor {\n\t\tr.Error = newMinHTTPProtoError(p.Major, p.Minor, r)\n\t}\n}\n\n// ErrCodeMinimumHTTPProtocolError error code is returned when the target endpoint\n// did not match the required HTTP major and minor protocol version.\nconst ErrCodeMinimumHTTPProtocolError = \"MinimumHTTPProtocolError\"\n\nfunc newMinHTTPProtoError(major, minor int, r *request.Request) error {\n\treturn awserr.NewRequestFailure(\n\t\tawserr.New(\"MinimumHTTPProtocolError\",\n\t\t\tfmt.Sprintf(\n\t\t\t\t\"operation requires minimum HTTP protocol of HTTP/%d.%d, but was %s\",\n\t\t\t\tmajor, minor, r.HTTPResponse.Proto,\n\t\t\t),\n\t\t\tnil,\n\t\t),\n\t\tr.HTTPResponse.StatusCode, r.RequestID,\n\t)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go",
    "content": "// Package query provides serialization of AWS query requests, and responses.\npackage query\n\n//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/input/query.json build_test.go\n\nimport (\n\t\"net/url\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/query/queryutil\"\n)\n\n// BuildHandler is a named request handler for building query protocol requests\nvar BuildHandler = request.NamedHandler{Name: \"awssdk.query.Build\", Fn: Build}\n\n// Build builds a request for an AWS Query service.\nfunc Build(r *request.Request) {\n\tbody := url.Values{\n\t\t\"Action\":  {r.Operation.Name},\n\t\t\"Version\": {r.ClientInfo.APIVersion},\n\t}\n\tif err := queryutil.Parse(body, r.Params, false); err != nil {\n\t\tr.Error = awserr.New(request.ErrCodeSerialization, \"failed encoding Query request\", err)\n\t\treturn\n\t}\n\n\tif !r.IsPresigned() {\n\t\tr.HTTPRequest.Method = \"POST\"\n\t\tr.HTTPRequest.Header.Set(\"Content-Type\", \"application/x-www-form-urlencoded; charset=utf-8\")\n\t\tr.SetBufferBody([]byte(body.Encode()))\n\t} else { // This is a pre-signed request\n\t\tr.HTTPRequest.Method = \"GET\"\n\t\tr.HTTPRequest.URL.RawQuery = body.Encode()\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go",
    "content": "package queryutil\n\nimport (\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"math\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n)\n\nconst (\n\tfloatNaN    = \"NaN\"\n\tfloatInf    = \"Infinity\"\n\tfloatNegInf = \"-Infinity\"\n)\n\n// Parse parses an object i and fills a url.Values object. The isEC2 flag\n// indicates if this is the EC2 Query sub-protocol.\nfunc Parse(body url.Values, i interface{}, isEC2 bool) error {\n\tq := queryParser{isEC2: isEC2}\n\treturn q.parseValue(body, reflect.ValueOf(i), \"\", \"\")\n}\n\nfunc elemOf(value reflect.Value) reflect.Value {\n\tfor value.Kind() == reflect.Ptr {\n\t\tvalue = value.Elem()\n\t}\n\treturn value\n}\n\ntype queryParser struct {\n\tisEC2 bool\n}\n\nfunc (q *queryParser) parseValue(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error {\n\tvalue = elemOf(value)\n\n\t// no need to handle zero values\n\tif !value.IsValid() {\n\t\treturn nil\n\t}\n\n\tt := tag.Get(\"type\")\n\tif t == \"\" {\n\t\tswitch value.Kind() {\n\t\tcase reflect.Struct:\n\t\t\tt = \"structure\"\n\t\tcase reflect.Slice:\n\t\t\tt = \"list\"\n\t\tcase reflect.Map:\n\t\t\tt = \"map\"\n\t\t}\n\t}\n\n\tswitch t {\n\tcase \"structure\":\n\t\treturn q.parseStruct(v, value, prefix)\n\tcase \"list\":\n\t\treturn q.parseList(v, value, prefix, tag)\n\tcase \"map\":\n\t\treturn q.parseMap(v, value, prefix, tag)\n\tdefault:\n\t\treturn q.parseScalar(v, value, prefix, tag)\n\t}\n}\n\nfunc (q *queryParser) parseStruct(v url.Values, value reflect.Value, prefix string) error {\n\tif !value.IsValid() {\n\t\treturn nil\n\t}\n\n\tt := value.Type()\n\tfor i := 0; i < value.NumField(); i++ {\n\t\telemValue := elemOf(value.Field(i))\n\t\tfield := t.Field(i)\n\n\t\tif field.PkgPath != \"\" {\n\t\t\tcontinue // ignore unexported fields\n\t\t}\n\t\tif field.Tag.Get(\"ignore\") != \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tif protocol.CanSetIdempotencyToken(value.Field(i), field) {\n\t\t\ttoken := protocol.GetIdempotencyToken()\n\t\t\telemValue = reflect.ValueOf(token)\n\t\t}\n\n\t\tvar name string\n\t\tif q.isEC2 {\n\t\t\tname = field.Tag.Get(\"queryName\")\n\t\t}\n\t\tif name == \"\" {\n\t\t\tif field.Tag.Get(\"flattened\") != \"\" && field.Tag.Get(\"locationNameList\") != \"\" {\n\t\t\t\tname = field.Tag.Get(\"locationNameList\")\n\t\t\t} else if locName := field.Tag.Get(\"locationName\"); locName != \"\" {\n\t\t\t\tname = locName\n\t\t\t}\n\t\t\tif name != \"\" && q.isEC2 {\n\t\t\t\tname = strings.ToUpper(name[0:1]) + name[1:]\n\t\t\t}\n\t\t}\n\t\tif name == \"\" {\n\t\t\tname = field.Name\n\t\t}\n\n\t\tif prefix != \"\" {\n\t\t\tname = prefix + \".\" + name\n\t\t}\n\n\t\tif err := q.parseValue(v, elemValue, name, field.Tag); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (q *queryParser) parseList(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error {\n\t// If it's empty, generate an empty value\n\tif !value.IsNil() && value.Len() == 0 {\n\t\tv.Set(prefix, \"\")\n\t\treturn nil\n\t}\n\n\tif _, ok := value.Interface().([]byte); ok {\n\t\treturn q.parseScalar(v, value, prefix, tag)\n\t}\n\n\t// check for unflattened list member\n\tif !q.isEC2 && tag.Get(\"flattened\") == \"\" {\n\t\tif listName := tag.Get(\"locationNameList\"); listName == \"\" {\n\t\t\tprefix += \".member\"\n\t\t} else {\n\t\t\tprefix += \".\" + listName\n\t\t}\n\t}\n\n\tfor i := 0; i < value.Len(); i++ {\n\t\tslicePrefix := prefix\n\t\tif slicePrefix == \"\" {\n\t\t\tslicePrefix = strconv.Itoa(i + 1)\n\t\t} else {\n\t\t\tslicePrefix = slicePrefix + \".\" + strconv.Itoa(i+1)\n\t\t}\n\t\tif err := q.parseValue(v, value.Index(i), slicePrefix, \"\"); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (q *queryParser) parseMap(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error {\n\t// If it's empty, generate an empty value\n\tif !value.IsNil() && value.Len() == 0 {\n\t\tv.Set(prefix, \"\")\n\t\treturn nil\n\t}\n\n\t// check for unflattened list member\n\tif !q.isEC2 && tag.Get(\"flattened\") == \"\" {\n\t\tprefix += \".entry\"\n\t}\n\n\t// sort keys for improved serialization consistency.\n\t// this is not strictly necessary for protocol support.\n\tmapKeyValues := value.MapKeys()\n\tmapKeys := map[string]reflect.Value{}\n\tmapKeyNames := make([]string, len(mapKeyValues))\n\tfor i, mapKey := range mapKeyValues {\n\t\tname := mapKey.String()\n\t\tmapKeys[name] = mapKey\n\t\tmapKeyNames[i] = name\n\t}\n\tsort.Strings(mapKeyNames)\n\n\tfor i, mapKeyName := range mapKeyNames {\n\t\tmapKey := mapKeys[mapKeyName]\n\t\tmapValue := value.MapIndex(mapKey)\n\n\t\tkname := tag.Get(\"locationNameKey\")\n\t\tif kname == \"\" {\n\t\t\tkname = \"key\"\n\t\t}\n\t\tvname := tag.Get(\"locationNameValue\")\n\t\tif vname == \"\" {\n\t\t\tvname = \"value\"\n\t\t}\n\n\t\t// serialize key\n\t\tvar keyName string\n\t\tif prefix == \"\" {\n\t\t\tkeyName = strconv.Itoa(i+1) + \".\" + kname\n\t\t} else {\n\t\t\tkeyName = prefix + \".\" + strconv.Itoa(i+1) + \".\" + kname\n\t\t}\n\n\t\tif err := q.parseValue(v, mapKey, keyName, \"\"); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// serialize value\n\t\tvar valueName string\n\t\tif prefix == \"\" {\n\t\t\tvalueName = strconv.Itoa(i+1) + \".\" + vname\n\t\t} else {\n\t\t\tvalueName = prefix + \".\" + strconv.Itoa(i+1) + \".\" + vname\n\t\t}\n\n\t\tif err := q.parseValue(v, mapValue, valueName, \"\"); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (q *queryParser) parseScalar(v url.Values, r reflect.Value, name string, tag reflect.StructTag) error {\n\tswitch value := r.Interface().(type) {\n\tcase string:\n\t\tv.Set(name, value)\n\tcase []byte:\n\t\tif !r.IsNil() {\n\t\t\tv.Set(name, base64.StdEncoding.EncodeToString(value))\n\t\t}\n\tcase bool:\n\t\tv.Set(name, strconv.FormatBool(value))\n\tcase int64:\n\t\tv.Set(name, strconv.FormatInt(value, 10))\n\tcase int:\n\t\tv.Set(name, strconv.Itoa(value))\n\tcase float64:\n\t\tvar str string\n\t\tswitch {\n\t\tcase math.IsNaN(value):\n\t\t\tstr = floatNaN\n\t\tcase math.IsInf(value, 1):\n\t\t\tstr = floatInf\n\t\tcase math.IsInf(value, -1):\n\t\t\tstr = floatNegInf\n\t\tdefault:\n\t\t\tstr = strconv.FormatFloat(value, 'f', -1, 64)\n\t\t}\n\t\tv.Set(name, str)\n\tcase float32:\n\t\tasFloat64 := float64(value)\n\t\tvar str string\n\t\tswitch {\n\t\tcase math.IsNaN(asFloat64):\n\t\t\tstr = floatNaN\n\t\tcase math.IsInf(asFloat64, 1):\n\t\t\tstr = floatInf\n\t\tcase math.IsInf(asFloat64, -1):\n\t\t\tstr = floatNegInf\n\t\tdefault:\n\t\t\tstr = strconv.FormatFloat(asFloat64, 'f', -1, 32)\n\t\t}\n\t\tv.Set(name, str)\n\tcase time.Time:\n\t\tconst ISO8601UTC = \"2006-01-02T15:04:05Z\"\n\t\tformat := tag.Get(\"timestampFormat\")\n\t\tif len(format) == 0 {\n\t\t\tformat = protocol.ISO8601TimeFormatName\n\t\t}\n\n\t\tv.Set(name, protocol.FormatTime(format, value))\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported value for param %s: %v (%s)\", name, r.Interface(), r.Type().Name())\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go",
    "content": "package query\n\n//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/output/query.json unmarshal_test.go\n\nimport (\n\t\"encoding/xml\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil\"\n)\n\n// UnmarshalHandler is a named request handler for unmarshaling query protocol requests\nvar UnmarshalHandler = request.NamedHandler{Name: \"awssdk.query.Unmarshal\", Fn: Unmarshal}\n\n// UnmarshalMetaHandler is a named request handler for unmarshaling query protocol request metadata\nvar UnmarshalMetaHandler = request.NamedHandler{Name: \"awssdk.query.UnmarshalMeta\", Fn: UnmarshalMeta}\n\n// Unmarshal unmarshals a response for an AWS Query service.\nfunc Unmarshal(r *request.Request) {\n\tdefer r.HTTPResponse.Body.Close()\n\tif r.DataFilled() {\n\t\tdecoder := xml.NewDecoder(r.HTTPResponse.Body)\n\t\terr := xmlutil.UnmarshalXML(r.Data, decoder, r.Operation.Name+\"Result\")\n\t\tif err != nil {\n\t\t\tr.Error = awserr.NewRequestFailure(\n\t\t\t\tawserr.New(request.ErrCodeSerialization, \"failed decoding Query response\", err),\n\t\t\t\tr.HTTPResponse.StatusCode,\n\t\t\t\tr.RequestID,\n\t\t\t)\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// UnmarshalMeta unmarshals header response values for an AWS Query service.\nfunc UnmarshalMeta(r *request.Request) {\n\tr.RequestID = r.HTTPResponse.Header.Get(\"X-Amzn-Requestid\")\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go",
    "content": "package query\n\nimport (\n\t\"encoding/xml\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil\"\n)\n\n// UnmarshalErrorHandler is a name request handler to unmarshal request errors\nvar UnmarshalErrorHandler = request.NamedHandler{Name: \"awssdk.query.UnmarshalError\", Fn: UnmarshalError}\n\ntype xmlErrorResponse struct {\n\tCode      string `xml:\"Error>Code\"`\n\tMessage   string `xml:\"Error>Message\"`\n\tRequestID string `xml:\"RequestId\"`\n}\n\ntype xmlResponseError struct {\n\txmlErrorResponse\n}\n\nfunc (e *xmlResponseError) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {\n\tconst svcUnavailableTagName = \"ServiceUnavailableException\"\n\tconst errorResponseTagName = \"ErrorResponse\"\n\n\tswitch start.Name.Local {\n\tcase svcUnavailableTagName:\n\t\te.Code = svcUnavailableTagName\n\t\te.Message = \"service is unavailable\"\n\t\treturn d.Skip()\n\n\tcase errorResponseTagName:\n\t\treturn d.DecodeElement(&e.xmlErrorResponse, &start)\n\n\tdefault:\n\t\treturn fmt.Errorf(\"unknown error response tag, %v\", start)\n\t}\n}\n\n// UnmarshalError unmarshals an error response for an AWS Query service.\nfunc UnmarshalError(r *request.Request) {\n\tdefer r.HTTPResponse.Body.Close()\n\n\tvar respErr xmlResponseError\n\terr := xmlutil.UnmarshalXMLError(&respErr, r.HTTPResponse.Body)\n\tif err != nil {\n\t\tr.Error = awserr.NewRequestFailure(\n\t\t\tawserr.New(request.ErrCodeSerialization,\n\t\t\t\t\"failed to unmarshal error message\", err),\n\t\t\tr.HTTPResponse.StatusCode,\n\t\t\tr.RequestID,\n\t\t)\n\t\treturn\n\t}\n\n\treqID := respErr.RequestID\n\tif len(reqID) == 0 {\n\t\treqID = r.RequestID\n\t}\n\n\tr.Error = awserr.NewRequestFailure(\n\t\tawserr.New(strings.TrimSpace(respErr.Code), strings.TrimSpace(respErr.Message), nil),\n\t\tr.HTTPResponse.StatusCode,\n\t\treqID,\n\t)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go",
    "content": "// Package rest provides RESTful serialization of AWS requests and responses.\npackage rest\n\nimport (\n\t\"bytes\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"path\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n)\n\nconst (\n\tfloatNaN    = \"NaN\"\n\tfloatInf    = \"Infinity\"\n\tfloatNegInf = \"-Infinity\"\n)\n\n// Whether the byte value can be sent without escaping in AWS URLs\nvar noEscape [256]bool\n\nvar errValueNotSet = fmt.Errorf(\"value not set\")\n\nvar byteSliceType = reflect.TypeOf([]byte{})\n\nfunc init() {\n\tfor i := 0; i < len(noEscape); i++ {\n\t\t// AWS expects every character except these to be escaped\n\t\tnoEscape[i] = (i >= 'A' && i <= 'Z') ||\n\t\t\t(i >= 'a' && i <= 'z') ||\n\t\t\t(i >= '0' && i <= '9') ||\n\t\t\ti == '-' ||\n\t\t\ti == '.' ||\n\t\t\ti == '_' ||\n\t\t\ti == '~'\n\t}\n}\n\n// BuildHandler is a named request handler for building rest protocol requests\nvar BuildHandler = request.NamedHandler{Name: \"awssdk.rest.Build\", Fn: Build}\n\n// Build builds the REST component of a service request.\nfunc Build(r *request.Request) {\n\tif r.ParamsFilled() {\n\t\tv := reflect.ValueOf(r.Params).Elem()\n\t\tbuildLocationElements(r, v, false)\n\t\tbuildBody(r, v)\n\t}\n}\n\n// BuildAsGET builds the REST component of a service request with the ability to hoist\n// data from the body.\nfunc BuildAsGET(r *request.Request) {\n\tif r.ParamsFilled() {\n\t\tv := reflect.ValueOf(r.Params).Elem()\n\t\tbuildLocationElements(r, v, true)\n\t\tbuildBody(r, v)\n\t}\n}\n\nfunc buildLocationElements(r *request.Request, v reflect.Value, buildGETQuery bool) {\n\tquery := r.HTTPRequest.URL.Query()\n\n\t// Setup the raw path to match the base path pattern. This is needed\n\t// so that when the path is mutated a custom escaped version can be\n\t// stored in RawPath that will be used by the Go client.\n\tr.HTTPRequest.URL.RawPath = r.HTTPRequest.URL.Path\n\n\tfor i := 0; i < v.NumField(); i++ {\n\t\tm := v.Field(i)\n\t\tif n := v.Type().Field(i).Name; n[0:1] == strings.ToLower(n[0:1]) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif m.IsValid() {\n\t\t\tfield := v.Type().Field(i)\n\t\t\tname := field.Tag.Get(\"locationName\")\n\t\t\tif name == \"\" {\n\t\t\t\tname = field.Name\n\t\t\t}\n\t\t\tif kind := m.Kind(); kind == reflect.Ptr {\n\t\t\t\tm = m.Elem()\n\t\t\t} else if kind == reflect.Interface {\n\t\t\t\tif !m.Elem().IsValid() {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !m.IsValid() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif field.Tag.Get(\"ignore\") != \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Support the ability to customize values to be marshaled as a\n\t\t\t// blob even though they were modeled as a string. Required for S3\n\t\t\t// API operations like SSECustomerKey is modeled as string but\n\t\t\t// required to be base64 encoded in request.\n\t\t\tif field.Tag.Get(\"marshal-as\") == \"blob\" {\n\t\t\t\tm = m.Convert(byteSliceType)\n\t\t\t}\n\n\t\t\tvar err error\n\t\t\tswitch field.Tag.Get(\"location\") {\n\t\t\tcase \"headers\": // header maps\n\t\t\t\terr = buildHeaderMap(&r.HTTPRequest.Header, m, field.Tag)\n\t\t\tcase \"header\":\n\t\t\t\terr = buildHeader(&r.HTTPRequest.Header, m, name, field.Tag)\n\t\t\tcase \"uri\":\n\t\t\t\terr = buildURI(r.HTTPRequest.URL, m, name, field.Tag)\n\t\t\tcase \"querystring\":\n\t\t\t\terr = buildQueryString(query, m, name, field.Tag)\n\t\t\tdefault:\n\t\t\t\tif buildGETQuery {\n\t\t\t\t\terr = buildQueryString(query, m, name, field.Tag)\n\t\t\t\t}\n\t\t\t}\n\t\t\tr.Error = err\n\t\t}\n\t\tif r.Error != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tr.HTTPRequest.URL.RawQuery = query.Encode()\n\tif !aws.BoolValue(r.Config.DisableRestProtocolURICleaning) {\n\t\tcleanPath(r.HTTPRequest.URL)\n\t}\n}\n\nfunc buildBody(r *request.Request, v reflect.Value) {\n\tif field, ok := v.Type().FieldByName(\"_\"); ok {\n\t\tif payloadName := field.Tag.Get(\"payload\"); payloadName != \"\" {\n\t\t\tpfield, _ := v.Type().FieldByName(payloadName)\n\t\t\tif ptag := pfield.Tag.Get(\"type\"); ptag != \"\" && ptag != \"structure\" {\n\t\t\t\tpayload := reflect.Indirect(v.FieldByName(payloadName))\n\t\t\t\tif payload.IsValid() && payload.Interface() != nil {\n\t\t\t\t\tswitch reader := payload.Interface().(type) {\n\t\t\t\t\tcase io.ReadSeeker:\n\t\t\t\t\t\tr.SetReaderBody(reader)\n\t\t\t\t\tcase []byte:\n\t\t\t\t\t\tr.SetBufferBody(reader)\n\t\t\t\t\tcase string:\n\t\t\t\t\t\tr.SetStringBody(reader)\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tr.Error = awserr.New(request.ErrCodeSerialization,\n\t\t\t\t\t\t\t\"failed to encode REST request\",\n\t\t\t\t\t\t\tfmt.Errorf(\"unknown payload type %s\", payload.Type()))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc buildHeader(header *http.Header, v reflect.Value, name string, tag reflect.StructTag) error {\n\tstr, err := convertType(v, tag)\n\tif err == errValueNotSet {\n\t\treturn nil\n\t} else if err != nil {\n\t\treturn awserr.New(request.ErrCodeSerialization, \"failed to encode REST request\", err)\n\t}\n\n\tname = strings.TrimSpace(name)\n\tstr = strings.TrimSpace(str)\n\n\theader.Add(name, str)\n\n\treturn nil\n}\n\nfunc buildHeaderMap(header *http.Header, v reflect.Value, tag reflect.StructTag) error {\n\tprefix := tag.Get(\"locationName\")\n\tfor _, key := range v.MapKeys() {\n\t\tstr, err := convertType(v.MapIndex(key), tag)\n\t\tif err == errValueNotSet {\n\t\t\tcontinue\n\t\t} else if err != nil {\n\t\t\treturn awserr.New(request.ErrCodeSerialization, \"failed to encode REST request\", err)\n\n\t\t}\n\t\tkeyStr := strings.TrimSpace(key.String())\n\t\tstr = strings.TrimSpace(str)\n\n\t\theader.Add(prefix+keyStr, str)\n\t}\n\treturn nil\n}\n\nfunc buildURI(u *url.URL, v reflect.Value, name string, tag reflect.StructTag) error {\n\tvalue, err := convertType(v, tag)\n\tif err == errValueNotSet {\n\t\treturn nil\n\t} else if err != nil {\n\t\treturn awserr.New(request.ErrCodeSerialization, \"failed to encode REST request\", err)\n\t}\n\n\tu.Path = strings.Replace(u.Path, \"{\"+name+\"}\", value, -1)\n\tu.Path = strings.Replace(u.Path, \"{\"+name+\"+}\", value, -1)\n\n\tu.RawPath = strings.Replace(u.RawPath, \"{\"+name+\"}\", EscapePath(value, true), -1)\n\tu.RawPath = strings.Replace(u.RawPath, \"{\"+name+\"+}\", EscapePath(value, false), -1)\n\n\treturn nil\n}\n\nfunc buildQueryString(query url.Values, v reflect.Value, name string, tag reflect.StructTag) error {\n\tswitch value := v.Interface().(type) {\n\tcase []*string:\n\t\tfor _, item := range value {\n\t\t\tquery.Add(name, *item)\n\t\t}\n\tcase map[string]*string:\n\t\tfor key, item := range value {\n\t\t\tquery.Add(key, *item)\n\t\t}\n\tcase map[string][]*string:\n\t\tfor key, items := range value {\n\t\t\tfor _, item := range items {\n\t\t\t\tquery.Add(key, *item)\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tstr, err := convertType(v, tag)\n\t\tif err == errValueNotSet {\n\t\t\treturn nil\n\t\t} else if err != nil {\n\t\t\treturn awserr.New(request.ErrCodeSerialization, \"failed to encode REST request\", err)\n\t\t}\n\t\tquery.Set(name, str)\n\t}\n\n\treturn nil\n}\n\nfunc cleanPath(u *url.URL) {\n\thasSlash := strings.HasSuffix(u.Path, \"/\")\n\n\t// clean up path, removing duplicate `/`\n\tu.Path = path.Clean(u.Path)\n\tu.RawPath = path.Clean(u.RawPath)\n\n\tif hasSlash && !strings.HasSuffix(u.Path, \"/\") {\n\t\tu.Path += \"/\"\n\t\tu.RawPath += \"/\"\n\t}\n}\n\n// EscapePath escapes part of a URL path in Amazon style\nfunc EscapePath(path string, encodeSep bool) string {\n\tvar buf bytes.Buffer\n\tfor i := 0; i < len(path); i++ {\n\t\tc := path[i]\n\t\tif noEscape[c] || (c == '/' && !encodeSep) {\n\t\t\tbuf.WriteByte(c)\n\t\t} else {\n\t\t\tfmt.Fprintf(&buf, \"%%%02X\", c)\n\t\t}\n\t}\n\treturn buf.String()\n}\n\nfunc convertType(v reflect.Value, tag reflect.StructTag) (str string, err error) {\n\tv = reflect.Indirect(v)\n\tif !v.IsValid() {\n\t\treturn \"\", errValueNotSet\n\t}\n\n\tswitch value := v.Interface().(type) {\n\tcase string:\n\t\tif tag.Get(\"suppressedJSONValue\") == \"true\" && tag.Get(\"location\") == \"header\" {\n\t\t\tvalue = base64.StdEncoding.EncodeToString([]byte(value))\n\t\t}\n\t\tstr = value\n\tcase []*string:\n\t\tif tag.Get(\"location\") != \"header\" || tag.Get(\"enum\") == \"\" {\n\t\t\treturn \"\", fmt.Errorf(\"%T is only supported with location header and enum shapes\", value)\n\t\t}\n\t\tif len(value) == 0 {\n\t\t\treturn \"\", errValueNotSet\n\t\t}\n\n\t\tbuff := &bytes.Buffer{}\n\t\tfor i, sv := range value {\n\t\t\tif sv == nil || len(*sv) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif i != 0 {\n\t\t\t\tbuff.WriteRune(',')\n\t\t\t}\n\t\t\titem := *sv\n\t\t\tif strings.Index(item, `,`) != -1 || strings.Index(item, `\"`) != -1 {\n\t\t\t\titem = strconv.Quote(item)\n\t\t\t}\n\t\t\tbuff.WriteString(item)\n\t\t}\n\t\tstr = string(buff.Bytes())\n\tcase []byte:\n\t\tstr = base64.StdEncoding.EncodeToString(value)\n\tcase bool:\n\t\tstr = strconv.FormatBool(value)\n\tcase int64:\n\t\tstr = strconv.FormatInt(value, 10)\n\tcase float64:\n\t\tswitch {\n\t\tcase math.IsNaN(value):\n\t\t\tstr = floatNaN\n\t\tcase math.IsInf(value, 1):\n\t\t\tstr = floatInf\n\t\tcase math.IsInf(value, -1):\n\t\t\tstr = floatNegInf\n\t\tdefault:\n\t\t\tstr = strconv.FormatFloat(value, 'f', -1, 64)\n\t\t}\n\tcase time.Time:\n\t\tformat := tag.Get(\"timestampFormat\")\n\t\tif len(format) == 0 {\n\t\t\tformat = protocol.RFC822TimeFormatName\n\t\t\tif tag.Get(\"location\") == \"querystring\" {\n\t\t\t\tformat = protocol.ISO8601TimeFormatName\n\t\t\t}\n\t\t}\n\t\tstr = protocol.FormatTime(format, value)\n\tcase aws.JSONValue:\n\t\tif len(value) == 0 {\n\t\t\treturn \"\", errValueNotSet\n\t\t}\n\t\tescaping := protocol.NoEscape\n\t\tif tag.Get(\"location\") == \"header\" {\n\t\t\tescaping = protocol.Base64Escape\n\t\t}\n\t\tstr, err = protocol.EncodeJSONValue(value, escaping)\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"unable to encode JSONValue, %v\", err)\n\t\t}\n\tdefault:\n\t\terr := fmt.Errorf(\"unsupported value for param %v (%s)\", v.Interface(), v.Type())\n\t\treturn \"\", err\n\t}\n\n\treturn str, nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go",
    "content": "package rest\n\nimport \"reflect\"\n\n// PayloadMember returns the payload field member of i if there is one, or nil.\nfunc PayloadMember(i interface{}) interface{} {\n\tif i == nil {\n\t\treturn nil\n\t}\n\n\tv := reflect.ValueOf(i).Elem()\n\tif !v.IsValid() {\n\t\treturn nil\n\t}\n\tif field, ok := v.Type().FieldByName(\"_\"); ok {\n\t\tif payloadName := field.Tag.Get(\"payload\"); payloadName != \"\" {\n\t\t\tfield, _ := v.Type().FieldByName(payloadName)\n\t\t\tif field.Tag.Get(\"type\") != \"structure\" {\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\tpayload := v.FieldByName(payloadName)\n\t\t\tif payload.IsValid() || (payload.Kind() == reflect.Ptr && !payload.IsNil()) {\n\t\t\t\treturn payload.Interface()\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nconst nopayloadPayloadType = \"nopayload\"\n\n// PayloadType returns the type of a payload field member of i if there is one,\n// or \"\".\nfunc PayloadType(i interface{}) string {\n\tv := reflect.Indirect(reflect.ValueOf(i))\n\tif !v.IsValid() {\n\t\treturn \"\"\n\t}\n\n\tif field, ok := v.Type().FieldByName(\"_\"); ok {\n\t\tif noPayload := field.Tag.Get(nopayloadPayloadType); noPayload != \"\" {\n\t\t\treturn nopayloadPayloadType\n\t\t}\n\n\t\tif payloadName := field.Tag.Get(\"payload\"); payloadName != \"\" {\n\t\t\tif member, ok := v.Type().FieldByName(payloadName); ok {\n\t\t\t\treturn member.Tag.Get(\"type\")\n\t\t\t}\n\t\t}\n\t}\n\n\treturn \"\"\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go",
    "content": "package rest\n\nimport (\n\t\"bytes\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"math\"\n\t\"net/http\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\tawsStrings \"github.com/aws/aws-sdk-go/internal/strings\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n)\n\n// UnmarshalHandler is a named request handler for unmarshaling rest protocol requests\nvar UnmarshalHandler = request.NamedHandler{Name: \"awssdk.rest.Unmarshal\", Fn: Unmarshal}\n\n// UnmarshalMetaHandler is a named request handler for unmarshaling rest protocol request metadata\nvar UnmarshalMetaHandler = request.NamedHandler{Name: \"awssdk.rest.UnmarshalMeta\", Fn: UnmarshalMeta}\n\n// Unmarshal unmarshals the REST component of a response in a REST service.\nfunc Unmarshal(r *request.Request) {\n\tif r.DataFilled() {\n\t\tv := reflect.Indirect(reflect.ValueOf(r.Data))\n\t\tif err := unmarshalBody(r, v); err != nil {\n\t\t\tr.Error = err\n\t\t}\n\t}\n}\n\n// UnmarshalMeta unmarshals the REST metadata of a response in a REST service\nfunc UnmarshalMeta(r *request.Request) {\n\tr.RequestID = r.HTTPResponse.Header.Get(\"X-Amzn-Requestid\")\n\tif r.RequestID == \"\" {\n\t\t// Alternative version of request id in the header\n\t\tr.RequestID = r.HTTPResponse.Header.Get(\"X-Amz-Request-Id\")\n\t}\n\tif r.DataFilled() {\n\t\tif err := UnmarshalResponse(r.HTTPResponse, r.Data, aws.BoolValue(r.Config.LowerCaseHeaderMaps)); err != nil {\n\t\t\tr.Error = err\n\t\t}\n\t}\n}\n\n// UnmarshalResponse attempts to unmarshal the REST response headers to\n// the data type passed in. The type must be a pointer. An error is returned\n// with any error unmarshaling the response into the target datatype.\nfunc UnmarshalResponse(resp *http.Response, data interface{}, lowerCaseHeaderMaps bool) error {\n\tv := reflect.Indirect(reflect.ValueOf(data))\n\treturn unmarshalLocationElements(resp, v, lowerCaseHeaderMaps)\n}\n\nfunc unmarshalBody(r *request.Request, v reflect.Value) error {\n\tif field, ok := v.Type().FieldByName(\"_\"); ok {\n\t\tif payloadName := field.Tag.Get(\"payload\"); payloadName != \"\" {\n\t\t\tpfield, _ := v.Type().FieldByName(payloadName)\n\t\t\tif ptag := pfield.Tag.Get(\"type\"); ptag != \"\" && ptag != \"structure\" {\n\t\t\t\tpayload := v.FieldByName(payloadName)\n\t\t\t\tif payload.IsValid() {\n\t\t\t\t\tswitch payload.Interface().(type) {\n\t\t\t\t\tcase []byte:\n\t\t\t\t\t\tdefer r.HTTPResponse.Body.Close()\n\t\t\t\t\t\tb, err := ioutil.ReadAll(r.HTTPResponse.Body)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn awserr.New(request.ErrCodeSerialization, \"failed to decode REST response\", err)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tpayload.Set(reflect.ValueOf(b))\n\n\t\t\t\t\tcase *string:\n\t\t\t\t\t\tdefer r.HTTPResponse.Body.Close()\n\t\t\t\t\t\tb, err := ioutil.ReadAll(r.HTTPResponse.Body)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn awserr.New(request.ErrCodeSerialization, \"failed to decode REST response\", err)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstr := string(b)\n\t\t\t\t\t\tpayload.Set(reflect.ValueOf(&str))\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tswitch payload.Type().String() {\n\t\t\t\t\t\tcase \"io.ReadCloser\":\n\t\t\t\t\t\t\tpayload.Set(reflect.ValueOf(r.HTTPResponse.Body))\n\n\t\t\t\t\t\tcase \"io.ReadSeeker\":\n\t\t\t\t\t\t\tb, err := ioutil.ReadAll(r.HTTPResponse.Body)\n\t\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\t\treturn awserr.New(request.ErrCodeSerialization,\n\t\t\t\t\t\t\t\t\t\"failed to read response body\", err)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpayload.Set(reflect.ValueOf(ioutil.NopCloser(bytes.NewReader(b))))\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tio.Copy(ioutil.Discard, r.HTTPResponse.Body)\n\t\t\t\t\t\t\tr.HTTPResponse.Body.Close()\n\t\t\t\t\t\t\treturn awserr.New(request.ErrCodeSerialization,\n\t\t\t\t\t\t\t\t\"failed to decode REST response\",\n\t\t\t\t\t\t\t\tfmt.Errorf(\"unknown payload type %s\", payload.Type()))\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\treturn nil\n}\n\nfunc unmarshalLocationElements(resp *http.Response, v reflect.Value, lowerCaseHeaderMaps bool) error {\n\tfor i := 0; i < v.NumField(); i++ {\n\t\tm, field := v.Field(i), v.Type().Field(i)\n\t\tif n := field.Name; n[0:1] == strings.ToLower(n[0:1]) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif m.IsValid() {\n\t\t\tname := field.Tag.Get(\"locationName\")\n\t\t\tif name == \"\" {\n\t\t\t\tname = field.Name\n\t\t\t}\n\n\t\t\tswitch field.Tag.Get(\"location\") {\n\t\t\tcase \"statusCode\":\n\t\t\t\tunmarshalStatusCode(m, resp.StatusCode)\n\n\t\t\tcase \"header\":\n\t\t\t\terr := unmarshalHeader(m, resp.Header.Get(name), field.Tag)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn awserr.New(request.ErrCodeSerialization, \"failed to decode REST response\", err)\n\t\t\t\t}\n\n\t\t\tcase \"headers\":\n\t\t\t\tprefix := field.Tag.Get(\"locationName\")\n\t\t\t\terr := unmarshalHeaderMap(m, resp.Header, prefix, lowerCaseHeaderMaps)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn awserr.New(request.ErrCodeSerialization, \"failed to decode REST response\", err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc unmarshalStatusCode(v reflect.Value, statusCode int) {\n\tif !v.IsValid() {\n\t\treturn\n\t}\n\n\tswitch v.Interface().(type) {\n\tcase *int64:\n\t\ts := int64(statusCode)\n\t\tv.Set(reflect.ValueOf(&s))\n\t}\n}\n\nfunc unmarshalHeaderMap(r reflect.Value, headers http.Header, prefix string, normalize bool) error {\n\tif len(headers) == 0 {\n\t\treturn nil\n\t}\n\tswitch r.Interface().(type) {\n\tcase map[string]*string: // we only support string map value types\n\t\tout := map[string]*string{}\n\t\tfor k, v := range headers {\n\t\t\tif awsStrings.HasPrefixFold(k, prefix) {\n\t\t\t\tif normalize == true {\n\t\t\t\t\tk = strings.ToLower(k)\n\t\t\t\t} else {\n\t\t\t\t\tk = http.CanonicalHeaderKey(k)\n\t\t\t\t}\n\t\t\t\tout[k[len(prefix):]] = &v[0]\n\t\t\t}\n\t\t}\n\t\tif len(out) != 0 {\n\t\t\tr.Set(reflect.ValueOf(out))\n\t\t}\n\n\t}\n\treturn nil\n}\n\nfunc unmarshalHeader(v reflect.Value, header string, tag reflect.StructTag) error {\n\tswitch tag.Get(\"type\") {\n\tcase \"jsonvalue\":\n\t\tif len(header) == 0 {\n\t\t\treturn nil\n\t\t}\n\tcase \"blob\":\n\t\tif len(header) == 0 {\n\t\t\treturn nil\n\t\t}\n\tdefault:\n\t\tif !v.IsValid() || (header == \"\" && v.Elem().Kind() != reflect.String) {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tswitch v.Interface().(type) {\n\tcase *string:\n\t\tif tag.Get(\"suppressedJSONValue\") == \"true\" && tag.Get(\"location\") == \"header\" {\n\t\t\tb, err := base64.StdEncoding.DecodeString(header)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"failed to decode JSONValue, %v\", err)\n\t\t\t}\n\t\t\theader = string(b)\n\t\t}\n\t\tv.Set(reflect.ValueOf(&header))\n\tcase []byte:\n\t\tb, err := base64.StdEncoding.DecodeString(header)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tv.Set(reflect.ValueOf(b))\n\tcase *bool:\n\t\tb, err := strconv.ParseBool(header)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tv.Set(reflect.ValueOf(&b))\n\tcase *int64:\n\t\ti, err := strconv.ParseInt(header, 10, 64)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tv.Set(reflect.ValueOf(&i))\n\tcase *float64:\n\t\tvar f float64\n\t\tswitch {\n\t\tcase strings.EqualFold(header, floatNaN):\n\t\t\tf = math.NaN()\n\t\tcase strings.EqualFold(header, floatInf):\n\t\t\tf = math.Inf(1)\n\t\tcase strings.EqualFold(header, floatNegInf):\n\t\t\tf = math.Inf(-1)\n\t\tdefault:\n\t\t\tvar err error\n\t\t\tf, err = strconv.ParseFloat(header, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tv.Set(reflect.ValueOf(&f))\n\tcase *time.Time:\n\t\tformat := tag.Get(\"timestampFormat\")\n\t\tif len(format) == 0 {\n\t\t\tformat = protocol.RFC822TimeFormatName\n\t\t}\n\t\tt, err := protocol.ParseTime(format, header)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tv.Set(reflect.ValueOf(&t))\n\tcase aws.JSONValue:\n\t\tescaping := protocol.NoEscape\n\t\tif tag.Get(\"location\") == \"header\" {\n\t\t\tescaping = protocol.Base64Escape\n\t\t}\n\t\tm, err := protocol.DecodeJSONValue(header, escaping)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tv.Set(reflect.ValueOf(m))\n\tdefault:\n\t\terr := fmt.Errorf(\"Unsupported value for param %v (%s)\", v.Interface(), v.Type())\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/restjson.go",
    "content": "// Package restjson provides RESTful JSON serialization of AWS\n// requests and responses.\npackage restjson\n\n//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/input/rest-json.json build_test.go\n//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/output/rest-json.json unmarshal_test.go\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/jsonrpc\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/rest\"\n)\n\n// BuildHandler is a named request handler for building restjson protocol\n// requests\nvar BuildHandler = request.NamedHandler{\n\tName: \"awssdk.restjson.Build\",\n\tFn:   Build,\n}\n\n// UnmarshalHandler is a named request handler for unmarshaling restjson\n// protocol requests\nvar UnmarshalHandler = request.NamedHandler{\n\tName: \"awssdk.restjson.Unmarshal\",\n\tFn:   Unmarshal,\n}\n\n// UnmarshalMetaHandler is a named request handler for unmarshaling restjson\n// protocol request metadata\nvar UnmarshalMetaHandler = request.NamedHandler{\n\tName: \"awssdk.restjson.UnmarshalMeta\",\n\tFn:   UnmarshalMeta,\n}\n\n// Build builds a request for the REST JSON protocol.\nfunc Build(r *request.Request) {\n\trest.Build(r)\n\n\tif t := rest.PayloadType(r.Params); t == \"structure\" || t == \"\" {\n\t\tif v := r.HTTPRequest.Header.Get(\"Content-Type\"); len(v) == 0 {\n\t\t\tr.HTTPRequest.Header.Set(\"Content-Type\", \"application/json\")\n\t\t}\n\t\tjsonrpc.Build(r)\n\t}\n}\n\n// Unmarshal unmarshals a response body for the REST JSON protocol.\nfunc Unmarshal(r *request.Request) {\n\tif t := rest.PayloadType(r.Data); t == \"structure\" || t == \"\" {\n\t\tjsonrpc.Unmarshal(r)\n\t} else {\n\t\trest.Unmarshal(r)\n\t}\n}\n\n// UnmarshalMeta unmarshals response headers for the REST JSON protocol.\nfunc UnmarshalMeta(r *request.Request) {\n\trest.UnmarshalMeta(r)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go",
    "content": "package restjson\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/json/jsonutil\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/rest\"\n)\n\nconst (\n\terrorTypeHeader    = \"X-Amzn-Errortype\"\n\terrorMessageHeader = \"X-Amzn-Errormessage\"\n)\n\n// UnmarshalTypedError provides unmarshaling errors API response errors\n// for both typed and untyped errors.\ntype UnmarshalTypedError struct {\n\texceptions map[string]func(protocol.ResponseMetadata) error\n}\n\n// NewUnmarshalTypedError returns an UnmarshalTypedError initialized for the\n// set of exception names to the error unmarshalers\nfunc NewUnmarshalTypedError(exceptions map[string]func(protocol.ResponseMetadata) error) *UnmarshalTypedError {\n\treturn &UnmarshalTypedError{\n\t\texceptions: exceptions,\n\t}\n}\n\n// UnmarshalError attempts to unmarshal the HTTP response error as a known\n// error type. If unable to unmarshal the error type, the generic SDK error\n// type will be used.\nfunc (u *UnmarshalTypedError) UnmarshalError(\n\tresp *http.Response,\n\trespMeta protocol.ResponseMetadata,\n) (error, error) {\n\tcode, msg, err := unmarshalErrorInfo(resp)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfn, ok := u.exceptions[code]\n\tif !ok {\n\t\treturn awserr.NewRequestFailure(\n\t\t\tawserr.New(code, msg, nil),\n\t\t\trespMeta.StatusCode,\n\t\t\trespMeta.RequestID,\n\t\t), nil\n\t}\n\n\tv := fn(respMeta)\n\tif err := jsonutil.UnmarshalJSONCaseInsensitive(v, resp.Body); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := rest.UnmarshalResponse(resp, v, true); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn v, nil\n}\n\n// UnmarshalErrorHandler is a named request handler for unmarshaling restjson\n// protocol request errors\nvar UnmarshalErrorHandler = request.NamedHandler{\n\tName: \"awssdk.restjson.UnmarshalError\",\n\tFn:   UnmarshalError,\n}\n\n// UnmarshalError unmarshals a response error for the REST JSON protocol.\nfunc UnmarshalError(r *request.Request) {\n\tdefer r.HTTPResponse.Body.Close()\n\n\tcode, msg, err := unmarshalErrorInfo(r.HTTPResponse)\n\tif err != nil {\n\t\tr.Error = awserr.NewRequestFailure(\n\t\t\tawserr.New(request.ErrCodeSerialization, \"failed to unmarshal response error\", err),\n\t\t\tr.HTTPResponse.StatusCode,\n\t\t\tr.RequestID,\n\t\t)\n\t\treturn\n\t}\n\n\tr.Error = awserr.NewRequestFailure(\n\t\tawserr.New(code, msg, nil),\n\t\tr.HTTPResponse.StatusCode,\n\t\tr.RequestID,\n\t)\n}\n\ntype jsonErrorResponse struct {\n\tType    string `json:\"__type\"`\n\tCode    string `json:\"code\"`\n\tMessage string `json:\"message\"`\n}\n\nfunc (j *jsonErrorResponse) SanitizedCode() string {\n\tcode := j.Code\n\tif len(j.Type) > 0 {\n\t\tcode = j.Type\n\t}\n\treturn sanitizeCode(code)\n}\n\n// Remove superfluous components from a restJson error code.\n//   - If a : character is present, then take only the contents before the\n//     first : character in the value.\n//   - If a # character is present, then take only the contents after the first\n//     # character in the value.\n//\n// All of the following error values resolve to FooError:\n//   - FooError\n//   - FooError:http://internal.amazon.com/coral/com.amazon.coral.validate/\n//   - aws.protocoltests.restjson#FooError\n//   - aws.protocoltests.restjson#FooError:http://internal.amazon.com/coral/com.amazon.coral.validate/\nfunc sanitizeCode(code string) string {\n\tnoColon := strings.SplitN(code, \":\", 2)[0]\n\thashSplit := strings.SplitN(noColon, \"#\", 2)\n\treturn hashSplit[len(hashSplit)-1]\n}\n\n// attempt to garner error details from the response, preferring header values\n// when present\nfunc unmarshalErrorInfo(resp *http.Response) (code string, msg string, err error) {\n\tcode = sanitizeCode(resp.Header.Get(errorTypeHeader))\n\tmsg = resp.Header.Get(errorMessageHeader)\n\tif len(code) > 0 && len(msg) > 0 {\n\t\treturn\n\t}\n\n\t// a modeled error will have to be re-deserialized later, so the body must\n\t// be preserved\n\tvar buf bytes.Buffer\n\ttee := io.TeeReader(resp.Body, &buf)\n\tdefer func() { resp.Body = ioutil.NopCloser(&buf) }()\n\n\tvar jsonErr jsonErrorResponse\n\tif decodeErr := json.NewDecoder(tee).Decode(&jsonErr); decodeErr != nil && decodeErr != io.EOF {\n\t\terr = awserr.NewUnmarshalError(decodeErr, \"failed to decode response body\", buf.Bytes())\n\t\treturn\n\t}\n\n\tif len(code) == 0 {\n\t\tcode = jsonErr.SanitizedCode()\n\t}\n\tif len(msg) == 0 {\n\t\tmsg = jsonErr.Message\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/timestamp.go",
    "content": "package protocol\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/internal/sdkmath\"\n)\n\n// Names of time formats supported by the SDK\nconst (\n\tRFC822TimeFormatName  = \"rfc822\"\n\tISO8601TimeFormatName = \"iso8601\"\n\tUnixTimeFormatName    = \"unixTimestamp\"\n)\n\n// Time formats supported by the SDK\n// Output time is intended to not contain decimals\nconst (\n\t// RFC 7231#section-7.1.1.1 timetamp format. e.g Tue, 29 Apr 2014 18:30:38 GMT\n\tRFC822TimeFormat                           = \"Mon, 2 Jan 2006 15:04:05 GMT\"\n\trfc822TimeFormatSingleDigitDay             = \"Mon, _2 Jan 2006 15:04:05 GMT\"\n\trfc822TimeFormatSingleDigitDayTwoDigitYear = \"Mon, _2 Jan 06 15:04:05 GMT\"\n\n\t// This format is used for output time without seconds precision\n\tRFC822OutputTimeFormat = \"Mon, 02 Jan 2006 15:04:05 GMT\"\n\n\t// RFC3339 a subset of the ISO8601 timestamp format. e.g 2014-04-29T18:30:38Z\n\tISO8601TimeFormat    = \"2006-01-02T15:04:05.999999999Z\"\n\tiso8601TimeFormatNoZ = \"2006-01-02T15:04:05.999999999\"\n\n\t// This format is used for output time with fractional second precision up to milliseconds\n\tISO8601OutputTimeFormat = \"2006-01-02T15:04:05.999999999Z\"\n)\n\n// IsKnownTimestampFormat returns if the timestamp format name\n// is know to the SDK's protocols.\nfunc IsKnownTimestampFormat(name string) bool {\n\tswitch name {\n\tcase RFC822TimeFormatName:\n\t\tfallthrough\n\tcase ISO8601TimeFormatName:\n\t\tfallthrough\n\tcase UnixTimeFormatName:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// FormatTime returns a string value of the time.\nfunc FormatTime(name string, t time.Time) string {\n\tt = t.UTC().Truncate(time.Millisecond)\n\n\tswitch name {\n\tcase RFC822TimeFormatName:\n\t\treturn t.Format(RFC822OutputTimeFormat)\n\tcase ISO8601TimeFormatName:\n\t\treturn t.Format(ISO8601OutputTimeFormat)\n\tcase UnixTimeFormatName:\n\t\tms := t.UnixNano() / int64(time.Millisecond)\n\t\treturn strconv.FormatFloat(float64(ms)/1e3, 'f', -1, 64)\n\tdefault:\n\t\tpanic(\"unknown timestamp format name, \" + name)\n\t}\n}\n\n// ParseTime attempts to parse the time given the format. Returns\n// the time if it was able to be parsed, and fails otherwise.\nfunc ParseTime(formatName, value string) (time.Time, error) {\n\tswitch formatName {\n\tcase RFC822TimeFormatName: // Smithy HTTPDate format\n\t\treturn tryParse(value,\n\t\t\tRFC822TimeFormat,\n\t\t\trfc822TimeFormatSingleDigitDay,\n\t\t\trfc822TimeFormatSingleDigitDayTwoDigitYear,\n\t\t\ttime.RFC850,\n\t\t\ttime.ANSIC,\n\t\t)\n\tcase ISO8601TimeFormatName: // Smithy DateTime format\n\t\treturn tryParse(value,\n\t\t\tISO8601TimeFormat,\n\t\t\tiso8601TimeFormatNoZ,\n\t\t\ttime.RFC3339Nano,\n\t\t\ttime.RFC3339,\n\t\t)\n\tcase UnixTimeFormatName:\n\t\tv, err := strconv.ParseFloat(value, 64)\n\t\t_, dec := math.Modf(v)\n\t\tdec = sdkmath.Round(dec*1e3) / 1e3 //Rounds 0.1229999 to 0.123\n\t\tif err != nil {\n\t\t\treturn time.Time{}, err\n\t\t}\n\t\treturn time.Unix(int64(v), int64(dec*(1e9))), nil\n\tdefault:\n\t\tpanic(\"unknown timestamp format name, \" + formatName)\n\t}\n}\n\nfunc tryParse(v string, formats ...string) (time.Time, error) {\n\tvar errs parseErrors\n\tfor _, f := range formats {\n\t\tt, err := time.Parse(f, v)\n\t\tif err != nil {\n\t\t\terrs = append(errs, parseError{\n\t\t\t\tFormat: f,\n\t\t\t\tErr:    err,\n\t\t\t})\n\t\t\tcontinue\n\t\t}\n\t\treturn t, nil\n\t}\n\n\treturn time.Time{}, fmt.Errorf(\"unable to parse time string, %v\", errs)\n}\n\ntype parseErrors []parseError\n\nfunc (es parseErrors) Error() string {\n\tvar s bytes.Buffer\n\tfor _, e := range es {\n\t\tfmt.Fprintf(&s, \"\\n * %q: %v\", e.Format, e.Err)\n\t}\n\n\treturn \"parse errors:\" + s.String()\n}\n\ntype parseError struct {\n\tFormat string\n\tErr    error\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal.go",
    "content": "package protocol\n\nimport (\n\t\"io\"\n\t\"io/ioutil\"\n\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// UnmarshalDiscardBodyHandler is a named request handler to empty and close a response's body\nvar UnmarshalDiscardBodyHandler = request.NamedHandler{Name: \"awssdk.shared.UnmarshalDiscardBody\", Fn: UnmarshalDiscardBody}\n\n// UnmarshalDiscardBody is a request handler to empty a response's body and closing it.\nfunc UnmarshalDiscardBody(r *request.Request) {\n\tif r.HTTPResponse == nil || r.HTTPResponse.Body == nil {\n\t\treturn\n\t}\n\n\tio.Copy(ioutil.Discard, r.HTTPResponse.Body)\n\tr.HTTPResponse.Body.Close()\n}\n\n// ResponseMetadata provides the SDK response metadata attributes.\ntype ResponseMetadata struct {\n\tStatusCode int\n\tRequestID  string\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal_error.go",
    "content": "package protocol\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// UnmarshalErrorHandler provides unmarshaling errors API response errors for\n// both typed and untyped errors.\ntype UnmarshalErrorHandler struct {\n\tunmarshaler ErrorUnmarshaler\n}\n\n// ErrorUnmarshaler is an abstract interface for concrete implementations to\n// unmarshal protocol specific response errors.\ntype ErrorUnmarshaler interface {\n\tUnmarshalError(*http.Response, ResponseMetadata) (error, error)\n}\n\n// NewUnmarshalErrorHandler returns an UnmarshalErrorHandler\n// initialized for the set of exception names to the error unmarshalers\nfunc NewUnmarshalErrorHandler(unmarshaler ErrorUnmarshaler) *UnmarshalErrorHandler {\n\treturn &UnmarshalErrorHandler{\n\t\tunmarshaler: unmarshaler,\n\t}\n}\n\n// UnmarshalErrorHandlerName is the name of the named handler.\nconst UnmarshalErrorHandlerName = \"awssdk.protocol.UnmarshalError\"\n\n// NamedHandler returns a NamedHandler for the unmarshaler using the set of\n// errors the unmarshaler was initialized for.\nfunc (u *UnmarshalErrorHandler) NamedHandler() request.NamedHandler {\n\treturn request.NamedHandler{\n\t\tName: UnmarshalErrorHandlerName,\n\t\tFn:   u.UnmarshalError,\n\t}\n}\n\n// UnmarshalError will attempt to unmarshal the API response's error message\n// into either a generic SDK error type, or a typed error corresponding to the\n// errors exception name.\nfunc (u *UnmarshalErrorHandler) UnmarshalError(r *request.Request) {\n\tdefer r.HTTPResponse.Body.Close()\n\n\trespMeta := ResponseMetadata{\n\t\tStatusCode: r.HTTPResponse.StatusCode,\n\t\tRequestID:  r.RequestID,\n\t}\n\n\tv, err := u.unmarshaler.UnmarshalError(r.HTTPResponse, respMeta)\n\tif err != nil {\n\t\tr.Error = awserr.NewRequestFailure(\n\t\t\tawserr.New(request.ErrCodeSerialization,\n\t\t\t\t\"failed to unmarshal response error\", err),\n\t\t\trespMeta.StatusCode,\n\t\t\trespMeta.RequestID,\n\t\t)\n\t\treturn\n\t}\n\n\tr.Error = v\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go",
    "content": "// Package xmlutil provides XML serialization of AWS requests and responses.\npackage xmlutil\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/xml\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n)\n\nconst (\n\tfloatNaN    = \"NaN\"\n\tfloatInf    = \"Infinity\"\n\tfloatNegInf = \"-Infinity\"\n)\n\n// BuildXML will serialize params into an xml.Encoder. Error will be returned\n// if the serialization of any of the params or nested values fails.\nfunc BuildXML(params interface{}, e *xml.Encoder) error {\n\treturn buildXML(params, e, false)\n}\n\nfunc buildXML(params interface{}, e *xml.Encoder, sorted bool) error {\n\tb := xmlBuilder{encoder: e, namespaces: map[string]string{}}\n\troot := NewXMLElement(xml.Name{})\n\tif err := b.buildValue(reflect.ValueOf(params), root, \"\"); err != nil {\n\t\treturn err\n\t}\n\tfor _, c := range root.Children {\n\t\tfor _, v := range c {\n\t\t\treturn StructToXML(e, v, sorted)\n\t\t}\n\t}\n\treturn nil\n}\n\n// Returns the reflection element of a value, if it is a pointer.\nfunc elemOf(value reflect.Value) reflect.Value {\n\tfor value.Kind() == reflect.Ptr {\n\t\tvalue = value.Elem()\n\t}\n\treturn value\n}\n\n// A xmlBuilder serializes values from Go code to XML\ntype xmlBuilder struct {\n\tencoder    *xml.Encoder\n\tnamespaces map[string]string\n}\n\n// buildValue generic XMLNode builder for any type. Will build value for their specific type\n// struct, list, map, scalar.\n//\n// Also takes a \"type\" tag value to set what type a value should be converted to XMLNode as. If\n// type is not provided reflect will be used to determine the value's type.\nfunc (b *xmlBuilder) buildValue(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {\n\tvalue = elemOf(value)\n\tif !value.IsValid() { // no need to handle zero values\n\t\treturn nil\n\t} else if tag.Get(\"location\") != \"\" { // don't handle non-body location values\n\t\treturn nil\n\t}\n\n\txml := tag.Get(\"xml\")\n\tif len(xml) != 0 {\n\t\tname := strings.SplitAfterN(xml, \",\", 2)[0]\n\t\tif name == \"-\" {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tt := tag.Get(\"type\")\n\tif t == \"\" {\n\t\tswitch value.Kind() {\n\t\tcase reflect.Struct:\n\t\t\tt = \"structure\"\n\t\tcase reflect.Slice:\n\t\t\tt = \"list\"\n\t\tcase reflect.Map:\n\t\t\tt = \"map\"\n\t\t}\n\t}\n\n\tswitch t {\n\tcase \"structure\":\n\t\tif field, ok := value.Type().FieldByName(\"_\"); ok {\n\t\t\ttag = tag + reflect.StructTag(\" \") + field.Tag\n\t\t}\n\t\treturn b.buildStruct(value, current, tag)\n\tcase \"list\":\n\t\treturn b.buildList(value, current, tag)\n\tcase \"map\":\n\t\treturn b.buildMap(value, current, tag)\n\tdefault:\n\t\treturn b.buildScalar(value, current, tag)\n\t}\n}\n\n// buildStruct adds a struct and its fields to the current XMLNode. All fields and any nested\n// types are converted to XMLNodes also.\nfunc (b *xmlBuilder) buildStruct(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {\n\tif !value.IsValid() {\n\t\treturn nil\n\t}\n\n\t// unwrap payloads\n\tif payload := tag.Get(\"payload\"); payload != \"\" {\n\t\tfield, _ := value.Type().FieldByName(payload)\n\t\ttag = field.Tag\n\t\tvalue = elemOf(value.FieldByName(payload))\n\n\t\tif !value.IsValid() {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tchild := NewXMLElement(xml.Name{Local: tag.Get(\"locationName\")})\n\n\t// there is an xmlNamespace associated with this struct\n\tif prefix, uri := tag.Get(\"xmlPrefix\"), tag.Get(\"xmlURI\"); uri != \"\" {\n\t\tns := xml.Attr{\n\t\t\tName:  xml.Name{Local: \"xmlns\"},\n\t\t\tValue: uri,\n\t\t}\n\t\tif prefix != \"\" {\n\t\t\tb.namespaces[prefix] = uri // register the namespace\n\t\t\tns.Name.Local = \"xmlns:\" + prefix\n\t\t}\n\n\t\tchild.Attr = append(child.Attr, ns)\n\t}\n\n\tvar payloadFields, nonPayloadFields int\n\n\tt := value.Type()\n\tfor i := 0; i < value.NumField(); i++ {\n\t\tmember := elemOf(value.Field(i))\n\t\tfield := t.Field(i)\n\n\t\tif field.PkgPath != \"\" {\n\t\t\tcontinue // ignore unexported fields\n\t\t}\n\t\tif field.Tag.Get(\"ignore\") != \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tmTag := field.Tag\n\t\tif mTag.Get(\"location\") != \"\" { // skip non-body members\n\t\t\tnonPayloadFields++\n\t\t\tcontinue\n\t\t}\n\t\tpayloadFields++\n\n\t\tif protocol.CanSetIdempotencyToken(value.Field(i), field) {\n\t\t\ttoken := protocol.GetIdempotencyToken()\n\t\t\tmember = reflect.ValueOf(token)\n\t\t}\n\n\t\tmemberName := mTag.Get(\"locationName\")\n\t\tif memberName == \"\" {\n\t\t\tmemberName = field.Name\n\t\t\tmTag = reflect.StructTag(string(mTag) + ` locationName:\"` + memberName + `\"`)\n\t\t}\n\t\tif err := b.buildValue(member, child, mTag); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Only case where the child shape is not added is if the shape only contains\n\t// non-payload fields, e.g headers/query.\n\tif !(payloadFields == 0 && nonPayloadFields > 0) {\n\t\tcurrent.AddChild(child)\n\t}\n\n\treturn nil\n}\n\n// buildList adds the value's list items to the current XMLNode as children nodes. All\n// nested values in the list are converted to XMLNodes also.\nfunc (b *xmlBuilder) buildList(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {\n\tif value.IsNil() { // don't build omitted lists\n\t\treturn nil\n\t}\n\n\t// check for unflattened list member\n\tflattened := tag.Get(\"flattened\") != \"\"\n\n\txname := xml.Name{Local: tag.Get(\"locationName\")}\n\tif flattened {\n\t\tfor i := 0; i < value.Len(); i++ {\n\t\t\tchild := NewXMLElement(xname)\n\t\t\tcurrent.AddChild(child)\n\t\t\tif err := b.buildValue(value.Index(i), child, \"\"); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t} else {\n\t\tlist := NewXMLElement(xname)\n\t\tcurrent.AddChild(list)\n\n\t\tfor i := 0; i < value.Len(); i++ {\n\t\t\tiname := tag.Get(\"locationNameList\")\n\t\t\tif iname == \"\" {\n\t\t\t\tiname = \"member\"\n\t\t\t}\n\n\t\t\tchild := NewXMLElement(xml.Name{Local: iname})\n\t\t\tlist.AddChild(child)\n\t\t\tif err := b.buildValue(value.Index(i), child, \"\"); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// buildMap adds the value's key/value pairs to the current XMLNode as children nodes. All\n// nested values in the map are converted to XMLNodes also.\n//\n// Error will be returned if it is unable to build the map's values into XMLNodes\nfunc (b *xmlBuilder) buildMap(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {\n\tif value.IsNil() { // don't build omitted maps\n\t\treturn nil\n\t}\n\n\tmaproot := NewXMLElement(xml.Name{Local: tag.Get(\"locationName\")})\n\tcurrent.AddChild(maproot)\n\tcurrent = maproot\n\n\tkname, vname := \"key\", \"value\"\n\tif n := tag.Get(\"locationNameKey\"); n != \"\" {\n\t\tkname = n\n\t}\n\tif n := tag.Get(\"locationNameValue\"); n != \"\" {\n\t\tvname = n\n\t}\n\n\t// sorting is not required for compliance, but it makes testing easier\n\tkeys := make([]string, value.Len())\n\tfor i, k := range value.MapKeys() {\n\t\tkeys[i] = k.String()\n\t}\n\tsort.Strings(keys)\n\n\tfor _, k := range keys {\n\t\tv := value.MapIndex(reflect.ValueOf(k))\n\n\t\tmapcur := current\n\t\tif tag.Get(\"flattened\") == \"\" { // add \"entry\" tag to non-flat maps\n\t\t\tchild := NewXMLElement(xml.Name{Local: \"entry\"})\n\t\t\tmapcur.AddChild(child)\n\t\t\tmapcur = child\n\t\t}\n\n\t\tkchild := NewXMLElement(xml.Name{Local: kname})\n\t\tkchild.Text = k\n\t\tvchild := NewXMLElement(xml.Name{Local: vname})\n\t\tmapcur.AddChild(kchild)\n\t\tmapcur.AddChild(vchild)\n\n\t\tif err := b.buildValue(v, vchild, \"\"); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// buildScalar will convert the value into a string and append it as a attribute or child\n// of the current XMLNode.\n//\n// The value will be added as an attribute if tag contains a \"xmlAttribute\" attribute value.\n//\n// Error will be returned if the value type is unsupported.\nfunc (b *xmlBuilder) buildScalar(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {\n\tvar str string\n\n\tswitch converted := value.Interface().(type) {\n\tcase string:\n\t\tstr = converted\n\tcase []byte:\n\t\tif !value.IsNil() {\n\t\t\tstr = base64.StdEncoding.EncodeToString(converted)\n\t\t}\n\tcase bool:\n\t\tstr = strconv.FormatBool(converted)\n\tcase int64:\n\t\tstr = strconv.FormatInt(converted, 10)\n\tcase int:\n\t\tstr = strconv.Itoa(converted)\n\tcase float64:\n\t\tswitch {\n\t\tcase math.IsNaN(converted):\n\t\t\tstr = floatNaN\n\t\tcase math.IsInf(converted, 1):\n\t\t\tstr = floatInf\n\t\tcase math.IsInf(converted, -1):\n\t\t\tstr = floatNegInf\n\t\tdefault:\n\t\t\tstr = strconv.FormatFloat(converted, 'f', -1, 64)\n\t\t}\n\tcase float32:\n\t\t// The SDK doesn't render float32 values in types, only float64. This case would never be hit currently.\n\t\tasFloat64 := float64(converted)\n\t\tswitch {\n\t\tcase math.IsNaN(asFloat64):\n\t\t\tstr = floatNaN\n\t\tcase math.IsInf(asFloat64, 1):\n\t\t\tstr = floatInf\n\t\tcase math.IsInf(asFloat64, -1):\n\t\t\tstr = floatNegInf\n\t\tdefault:\n\t\t\tstr = strconv.FormatFloat(asFloat64, 'f', -1, 32)\n\t\t}\n\tcase time.Time:\n\t\tformat := tag.Get(\"timestampFormat\")\n\t\tif len(format) == 0 {\n\t\t\tformat = protocol.ISO8601TimeFormatName\n\t\t}\n\n\t\tstr = protocol.FormatTime(format, converted)\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported value for param %s: %v (%s)\",\n\t\t\ttag.Get(\"locationName\"), value.Interface(), value.Type().Name())\n\t}\n\n\txname := xml.Name{Local: tag.Get(\"locationName\")}\n\tif tag.Get(\"xmlAttribute\") != \"\" { // put into current node's attribute list\n\t\tattr := xml.Attr{Name: xname, Value: str}\n\t\tcurrent.Attr = append(current.Attr, attr)\n\t} else if len(xname.Local) == 0 {\n\t\tcurrent.Text = str\n\t} else { // regular text node\n\t\tcurrent.AddChild(&XMLNode{Name: xname, Text: str})\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/sort.go",
    "content": "package xmlutil\n\nimport (\n\t\"encoding/xml\"\n\t\"strings\"\n)\n\ntype xmlAttrSlice []xml.Attr\n\nfunc (x xmlAttrSlice) Len() int {\n\treturn len(x)\n}\n\nfunc (x xmlAttrSlice) Less(i, j int) bool {\n\tspaceI, spaceJ := x[i].Name.Space, x[j].Name.Space\n\tlocalI, localJ := x[i].Name.Local, x[j].Name.Local\n\tvalueI, valueJ := x[i].Value, x[j].Value\n\n\tspaceCmp := strings.Compare(spaceI, spaceJ)\n\tlocalCmp := strings.Compare(localI, localJ)\n\tvalueCmp := strings.Compare(valueI, valueJ)\n\n\tif spaceCmp == -1 || (spaceCmp == 0 && (localCmp == -1 || (localCmp == 0 && valueCmp == -1))) {\n\t\treturn true\n\t}\n\n\treturn false\n}\n\nfunc (x xmlAttrSlice) Swap(i, j int) {\n\tx[i], x[j] = x[j], x[i]\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go",
    "content": "package xmlutil\n\nimport (\n\t\"bytes\"\n\t\"encoding/base64\"\n\t\"encoding/xml\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n)\n\n// UnmarshalXMLError unmarshals the XML error from the stream into the value\n// type specified. The value must be a pointer. If the message fails to\n// unmarshal, the message content will be included in the returned error as a\n// awserr.UnmarshalError.\nfunc UnmarshalXMLError(v interface{}, stream io.Reader) error {\n\tvar errBuf bytes.Buffer\n\tbody := io.TeeReader(stream, &errBuf)\n\n\terr := xml.NewDecoder(body).Decode(v)\n\tif err != nil && err != io.EOF {\n\t\treturn awserr.NewUnmarshalError(err,\n\t\t\t\"failed to unmarshal error message\", errBuf.Bytes())\n\t}\n\n\treturn nil\n}\n\n// UnmarshalXML deserializes an xml.Decoder into the container v. V\n// needs to match the shape of the XML expected to be decoded.\n// If the shape doesn't match unmarshaling will fail.\nfunc UnmarshalXML(v interface{}, d *xml.Decoder, wrapper string) error {\n\tn, err := XMLToStruct(d, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif n.Children != nil {\n\t\tfor _, root := range n.Children {\n\t\t\tfor _, c := range root {\n\t\t\t\tif wrappedChild, ok := c.Children[wrapper]; ok {\n\t\t\t\t\tc = wrappedChild[0] // pull out wrapped element\n\t\t\t\t}\n\n\t\t\t\terr = parse(reflect.ValueOf(v), c, \"\")\n\t\t\t\tif err != nil {\n\t\t\t\t\tif err == io.EOF {\n\t\t\t\t\t\treturn nil\n\t\t\t\t\t}\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\treturn nil\n}\n\n// parse deserializes any value from the XMLNode. The type tag is used to infer the type, or reflect\n// will be used to determine the type from r.\nfunc parse(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {\n\txml := tag.Get(\"xml\")\n\tif len(xml) != 0 {\n\t\tname := strings.SplitAfterN(xml, \",\", 2)[0]\n\t\tif name == \"-\" {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\trtype := r.Type()\n\tif rtype.Kind() == reflect.Ptr {\n\t\trtype = rtype.Elem() // check kind of actual element type\n\t}\n\n\tt := tag.Get(\"type\")\n\tif t == \"\" {\n\t\tswitch rtype.Kind() {\n\t\tcase reflect.Struct:\n\t\t\t// also it can't be a time object\n\t\t\tif _, ok := r.Interface().(*time.Time); !ok {\n\t\t\t\tt = \"structure\"\n\t\t\t}\n\t\tcase reflect.Slice:\n\t\t\t// also it can't be a byte slice\n\t\t\tif _, ok := r.Interface().([]byte); !ok {\n\t\t\t\tt = \"list\"\n\t\t\t}\n\t\tcase reflect.Map:\n\t\t\tt = \"map\"\n\t\t}\n\t}\n\n\tswitch t {\n\tcase \"structure\":\n\t\tif field, ok := rtype.FieldByName(\"_\"); ok {\n\t\t\ttag = field.Tag\n\t\t}\n\t\treturn parseStruct(r, node, tag)\n\tcase \"list\":\n\t\treturn parseList(r, node, tag)\n\tcase \"map\":\n\t\treturn parseMap(r, node, tag)\n\tdefault:\n\t\treturn parseScalar(r, node, tag)\n\t}\n}\n\n// parseStruct deserializes a structure and its fields from an XMLNode. Any nested\n// types in the structure will also be deserialized.\nfunc parseStruct(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {\n\tt := r.Type()\n\tif r.Kind() == reflect.Ptr {\n\t\tif r.IsNil() { // create the structure if it's nil\n\t\t\ts := reflect.New(r.Type().Elem())\n\t\t\tr.Set(s)\n\t\t\tr = s\n\t\t}\n\n\t\tr = r.Elem()\n\t\tt = t.Elem()\n\t}\n\n\t// unwrap any payloads\n\tif payload := tag.Get(\"payload\"); payload != \"\" {\n\t\tfield, _ := t.FieldByName(payload)\n\t\treturn parseStruct(r.FieldByName(payload), node, field.Tag)\n\t}\n\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tfield := t.Field(i)\n\t\tif c := field.Name[0:1]; strings.ToLower(c) == c {\n\t\t\tcontinue // ignore unexported fields\n\t\t}\n\n\t\t// figure out what this field is called\n\t\tname := field.Name\n\t\tif field.Tag.Get(\"flattened\") != \"\" && field.Tag.Get(\"locationNameList\") != \"\" {\n\t\t\tname = field.Tag.Get(\"locationNameList\")\n\t\t} else if locName := field.Tag.Get(\"locationName\"); locName != \"\" {\n\t\t\tname = locName\n\t\t}\n\n\t\t// try to find the field by name in elements\n\t\telems := node.Children[name]\n\n\t\tif elems == nil { // try to find the field in attributes\n\t\t\tif val, ok := node.findElem(name); ok {\n\t\t\t\telems = []*XMLNode{{Text: val}}\n\t\t\t}\n\t\t}\n\n\t\tmember := r.FieldByName(field.Name)\n\t\tfor _, elem := range elems {\n\t\t\terr := parse(member, elem, field.Tag)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// parseList deserializes a list of values from an XML node. Each list entry\n// will also be deserialized.\nfunc parseList(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {\n\tt := r.Type()\n\n\tif tag.Get(\"flattened\") == \"\" { // look at all item entries\n\t\tmname := \"member\"\n\t\tif name := tag.Get(\"locationNameList\"); name != \"\" {\n\t\t\tmname = name\n\t\t}\n\n\t\tif Children, ok := node.Children[mname]; ok {\n\t\t\tif r.IsNil() {\n\t\t\t\tr.Set(reflect.MakeSlice(t, len(Children), len(Children)))\n\t\t\t}\n\n\t\t\tfor i, c := range Children {\n\t\t\t\terr := parse(r.Index(i), c, \"\")\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else { // flattened list means this is a single element\n\t\tif r.IsNil() {\n\t\t\tr.Set(reflect.MakeSlice(t, 0, 0))\n\t\t}\n\n\t\tchildR := reflect.Zero(t.Elem())\n\t\tr.Set(reflect.Append(r, childR))\n\t\terr := parse(r.Index(r.Len()-1), node, \"\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// parseMap deserializes a map from an XMLNode. The direct children of the XMLNode\n// will also be deserialized as map entries.\nfunc parseMap(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {\n\tif r.IsNil() {\n\t\tr.Set(reflect.MakeMap(r.Type()))\n\t}\n\n\tif tag.Get(\"flattened\") == \"\" { // look at all child entries\n\t\tfor _, entry := range node.Children[\"entry\"] {\n\t\t\tparseMapEntry(r, entry, tag)\n\t\t}\n\t} else { // this element is itself an entry\n\t\tparseMapEntry(r, node, tag)\n\t}\n\n\treturn nil\n}\n\n// parseMapEntry deserializes a map entry from a XML node.\nfunc parseMapEntry(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {\n\tkname, vname := \"key\", \"value\"\n\tif n := tag.Get(\"locationNameKey\"); n != \"\" {\n\t\tkname = n\n\t}\n\tif n := tag.Get(\"locationNameValue\"); n != \"\" {\n\t\tvname = n\n\t}\n\n\tkeys, ok := node.Children[kname]\n\tvalues := node.Children[vname]\n\tif ok {\n\t\tfor i, key := range keys {\n\t\t\tkeyR := reflect.ValueOf(key.Text)\n\t\t\tvalue := values[i]\n\t\t\tvalueR := reflect.New(r.Type().Elem()).Elem()\n\n\t\t\tparse(valueR, value, \"\")\n\t\t\tr.SetMapIndex(keyR, valueR)\n\t\t}\n\t}\n\treturn nil\n}\n\n// parseScaller deserializes an XMLNode value into a concrete type based on the\n// interface type of r.\n//\n// Error is returned if the deserialization fails due to invalid type conversion,\n// or unsupported interface type.\nfunc parseScalar(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {\n\tswitch r.Interface().(type) {\n\tcase *string:\n\t\tr.Set(reflect.ValueOf(&node.Text))\n\t\treturn nil\n\tcase []byte:\n\t\tb, err := base64.StdEncoding.DecodeString(node.Text)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tr.Set(reflect.ValueOf(b))\n\tcase *bool:\n\t\tv, err := strconv.ParseBool(node.Text)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tr.Set(reflect.ValueOf(&v))\n\tcase *int64:\n\t\tv, err := strconv.ParseInt(node.Text, 10, 64)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tr.Set(reflect.ValueOf(&v))\n\tcase *float64:\n\t\tvar v float64\n\t\tswitch {\n\t\tcase strings.EqualFold(node.Text, floatNaN):\n\t\t\tv = math.NaN()\n\t\tcase strings.EqualFold(node.Text, floatInf):\n\t\t\tv = math.Inf(1)\n\t\tcase strings.EqualFold(node.Text, floatNegInf):\n\t\t\tv = math.Inf(-1)\n\t\tdefault:\n\t\t\tvar err error\n\t\t\tv, err = strconv.ParseFloat(node.Text, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tr.Set(reflect.ValueOf(&v))\n\tcase *time.Time:\n\t\tformat := tag.Get(\"timestampFormat\")\n\t\tif len(format) == 0 {\n\t\t\tformat = protocol.ISO8601TimeFormatName\n\t\t}\n\n\t\tt, err := protocol.ParseTime(format, node.Text)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tr.Set(reflect.ValueOf(&t))\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported value: %v (%s)\", r.Interface(), r.Type())\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go",
    "content": "package xmlutil\n\nimport (\n\t\"encoding/xml\"\n\t\"fmt\"\n\t\"io\"\n\t\"sort\"\n)\n\n// A XMLNode contains the values to be encoded or decoded.\ntype XMLNode struct {\n\tName     xml.Name              `json:\",omitempty\"`\n\tChildren map[string][]*XMLNode `json:\",omitempty\"`\n\tText     string                `json:\",omitempty\"`\n\tAttr     []xml.Attr            `json:\",omitempty\"`\n\n\tnamespaces map[string]string\n\tparent     *XMLNode\n}\n\n// textEncoder is a string type alias that implemnts the TextMarshaler interface.\n// This alias type is used to ensure that the line feed (\\n) (U+000A) is escaped.\ntype textEncoder string\n\nfunc (t textEncoder) MarshalText() ([]byte, error) {\n\treturn []byte(t), nil\n}\n\n// NewXMLElement returns a pointer to a new XMLNode initialized to default values.\nfunc NewXMLElement(name xml.Name) *XMLNode {\n\treturn &XMLNode{\n\t\tName:     name,\n\t\tChildren: map[string][]*XMLNode{},\n\t\tAttr:     []xml.Attr{},\n\t}\n}\n\n// AddChild adds child to the XMLNode.\nfunc (n *XMLNode) AddChild(child *XMLNode) {\n\tchild.parent = n\n\tif _, ok := n.Children[child.Name.Local]; !ok {\n\t\tn.Children[child.Name.Local] = []*XMLNode{}\n\t}\n\tn.Children[child.Name.Local] = append(n.Children[child.Name.Local], child)\n}\n\n// XMLToStruct converts a xml.Decoder stream to XMLNode with nested values.\nfunc XMLToStruct(d *xml.Decoder, s *xml.StartElement) (*XMLNode, error) {\n\tout := &XMLNode{}\n\tfor {\n\t\ttok, err := d.Token()\n\t\tif err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\tbreak\n\t\t\t} else {\n\t\t\t\treturn out, err\n\t\t\t}\n\t\t}\n\n\t\tif tok == nil {\n\t\t\tbreak\n\t\t}\n\n\t\tswitch typed := tok.(type) {\n\t\tcase xml.CharData:\n\t\t\tout.Text = string(typed.Copy())\n\t\tcase xml.StartElement:\n\t\t\tel := typed.Copy()\n\t\t\tout.Attr = el.Attr\n\t\t\tif out.Children == nil {\n\t\t\t\tout.Children = map[string][]*XMLNode{}\n\t\t\t}\n\n\t\t\tname := typed.Name.Local\n\t\t\tslice := out.Children[name]\n\t\t\tif slice == nil {\n\t\t\t\tslice = []*XMLNode{}\n\t\t\t}\n\t\t\tnode, e := XMLToStruct(d, &el)\n\t\t\tout.findNamespaces()\n\t\t\tif e != nil {\n\t\t\t\treturn out, e\n\t\t\t}\n\t\t\tnode.Name = typed.Name\n\t\t\tnode.findNamespaces()\n\t\t\ttempOut := *out\n\t\t\t// Save into a temp variable, simply because out gets squashed during\n\t\t\t// loop iterations\n\t\t\tnode.parent = &tempOut\n\t\t\tslice = append(slice, node)\n\t\t\tout.Children[name] = slice\n\t\tcase xml.EndElement:\n\t\t\tif s != nil && s.Name.Local == typed.Name.Local { // matching end token\n\t\t\t\treturn out, nil\n\t\t\t}\n\t\t\tout = &XMLNode{}\n\t\t}\n\t}\n\treturn out, nil\n}\n\nfunc (n *XMLNode) findNamespaces() {\n\tns := map[string]string{}\n\tfor _, a := range n.Attr {\n\t\tif a.Name.Space == \"xmlns\" {\n\t\t\tns[a.Value] = a.Name.Local\n\t\t}\n\t}\n\n\tn.namespaces = ns\n}\n\nfunc (n *XMLNode) findElem(name string) (string, bool) {\n\tfor node := n; node != nil; node = node.parent {\n\t\tfor _, a := range node.Attr {\n\t\t\tnamespace := a.Name.Space\n\t\t\tif v, ok := node.namespaces[namespace]; ok {\n\t\t\t\tnamespace = v\n\t\t\t}\n\t\t\tif name == fmt.Sprintf(\"%s:%s\", namespace, a.Name.Local) {\n\t\t\t\treturn a.Value, true\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\", false\n}\n\n// StructToXML writes an XMLNode to a xml.Encoder as tokens.\nfunc StructToXML(e *xml.Encoder, node *XMLNode, sorted bool) error {\n\t// Sort Attributes\n\tattrs := node.Attr\n\tif sorted {\n\t\tsortedAttrs := make([]xml.Attr, len(attrs))\n\t\tfor _, k := range node.Attr {\n\t\t\tsortedAttrs = append(sortedAttrs, k)\n\t\t}\n\t\tsort.Sort(xmlAttrSlice(sortedAttrs))\n\t\tattrs = sortedAttrs\n\t}\n\n\tstartElement := xml.StartElement{Name: node.Name, Attr: attrs}\n\n\tif node.Text != \"\" {\n\t\te.EncodeElement(textEncoder(node.Text), startElement)\n\t\treturn e.Flush()\n\t}\n\n\te.EncodeToken(startElement)\n\n\tif sorted {\n\t\tsortedNames := []string{}\n\t\tfor k := range node.Children {\n\t\t\tsortedNames = append(sortedNames, k)\n\t\t}\n\t\tsort.Strings(sortedNames)\n\n\t\tfor _, k := range sortedNames {\n\t\t\tfor _, v := range node.Children[k] {\n\t\t\t\tStructToXML(e, v, sorted)\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor _, c := range node.Children {\n\t\t\tfor _, v := range c {\n\t\t\t\tStructToXML(e, v, sorted)\n\t\t\t}\n\t\t}\n\t}\n\n\te.EncodeToken(startElement.End())\n\n\treturn e.Flush()\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/dynamodb/api.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage dynamodb\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awsutil\"\n\t\"github.com/aws/aws-sdk-go/aws/crr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/jsonrpc\"\n)\n\nconst opBatchExecuteStatement = \"BatchExecuteStatement\"\n\n// BatchExecuteStatementRequest generates a \"aws/request.Request\" representing the\n// client's request for the BatchExecuteStatement operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See BatchExecuteStatement for more information on using the BatchExecuteStatement\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the BatchExecuteStatementRequest method.\n//\treq, resp := client.BatchExecuteStatementRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchExecuteStatement\nfunc (c *DynamoDB) BatchExecuteStatementRequest(input *BatchExecuteStatementInput) (req *request.Request, output *BatchExecuteStatementOutput) {\n\top := &request.Operation{\n\t\tName:       opBatchExecuteStatement,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &BatchExecuteStatementInput{}\n\t}\n\n\toutput = &BatchExecuteStatementOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// BatchExecuteStatement API operation for Amazon DynamoDB.\n//\n// This operation allows you to perform batch reads or writes on data stored\n// in DynamoDB, using PartiQL. Each read statement in a BatchExecuteStatement\n// must specify an equality condition on all key attributes. This enforces that\n// each SELECT statement in a batch returns at most a single item.\n//\n// The entire batch must consist of either read statements or write statements,\n// you cannot mix both in one batch.\n//\n// A HTTP 200 response does not mean that all statements in the BatchExecuteStatement\n// succeeded. Error details for individual statements can be found under the\n// Error (https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchStatementResponse.html#DDB-Type-BatchStatementResponse-Error)\n// field of the BatchStatementResponse for each statement.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation BatchExecuteStatement for usage and error information.\n//\n// Returned Error Types:\n//\n//   - RequestLimitExceeded\n//     Throughput exceeds the current throughput quota for your account. Please\n//     contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n//     a quota increase.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchExecuteStatement\nfunc (c *DynamoDB) BatchExecuteStatement(input *BatchExecuteStatementInput) (*BatchExecuteStatementOutput, error) {\n\treq, out := c.BatchExecuteStatementRequest(input)\n\treturn out, req.Send()\n}\n\n// BatchExecuteStatementWithContext is the same as BatchExecuteStatement with the addition of\n// the ability to pass a context and additional request options.\n//\n// See BatchExecuteStatement for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) BatchExecuteStatementWithContext(ctx aws.Context, input *BatchExecuteStatementInput, opts ...request.Option) (*BatchExecuteStatementOutput, error) {\n\treq, out := c.BatchExecuteStatementRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opBatchGetItem = \"BatchGetItem\"\n\n// BatchGetItemRequest generates a \"aws/request.Request\" representing the\n// client's request for the BatchGetItem operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See BatchGetItem for more information on using the BatchGetItem\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the BatchGetItemRequest method.\n//\treq, resp := client.BatchGetItemRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchGetItem\nfunc (c *DynamoDB) BatchGetItemRequest(input *BatchGetItemInput) (req *request.Request, output *BatchGetItemOutput) {\n\top := &request.Operation{\n\t\tName:       opBatchGetItem,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"RequestItems\"},\n\t\t\tOutputTokens:    []string{\"UnprocessedKeys\"},\n\t\t\tLimitToken:      \"\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &BatchGetItemInput{}\n\t}\n\n\toutput = &BatchGetItemOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// BatchGetItem API operation for Amazon DynamoDB.\n//\n// The BatchGetItem operation returns the attributes of one or more items from\n// one or more tables. You identify requested items by primary key.\n//\n// A single operation can retrieve up to 16 MB of data, which can contain as\n// many as 100 items. BatchGetItem returns a partial result if the response\n// size limit is exceeded, the table's provisioned throughput is exceeded, more\n// than 1MB per partition is requested, or an internal processing failure occurs.\n// If a partial result is returned, the operation returns a value for UnprocessedKeys.\n// You can use this value to retry the operation starting with the next item\n// to get.\n//\n// If you request more than 100 items, BatchGetItem returns a ValidationException\n// with the message \"Too many items requested for the BatchGetItem call.\"\n//\n// For example, if you ask to retrieve 100 items, but each individual item is\n// 300 KB in size, the system returns 52 items (so as not to exceed the 16 MB\n// limit). It also returns an appropriate UnprocessedKeys value so you can get\n// the next page of results. If desired, your application can include its own\n// logic to assemble the pages of results into one dataset.\n//\n// If none of the items can be processed due to insufficient provisioned throughput\n// on all of the tables in the request, then BatchGetItem returns a ProvisionedThroughputExceededException.\n// If at least one of the items is successfully processed, then BatchGetItem\n// completes successfully, while returning the keys of the unread items in UnprocessedKeys.\n//\n// If DynamoDB returns any unprocessed items, you should retry the batch operation\n// on those items. However, we strongly recommend that you use an exponential\n// backoff algorithm. If you retry the batch operation immediately, the underlying\n// read or write requests can still fail due to throttling on the individual\n// tables. If you delay the batch operation using exponential backoff, the individual\n// requests in the batch are much more likely to succeed.\n//\n// For more information, see Batch Operations and Error Handling (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#BatchOperations)\n// in the Amazon DynamoDB Developer Guide.\n//\n// By default, BatchGetItem performs eventually consistent reads on every table\n// in the request. If you want strongly consistent reads instead, you can set\n// ConsistentRead to true for any or all tables.\n//\n// In order to minimize response latency, BatchGetItem may retrieve items in\n// parallel.\n//\n// When designing your application, keep in mind that DynamoDB does not return\n// items in any particular order. To help parse the response by item, include\n// the primary key values for the items in your request in the ProjectionExpression\n// parameter.\n//\n// If a requested item does not exist, it is not returned in the result. Requests\n// for nonexistent items consume the minimum read capacity units according to\n// the type of read. For more information, see Working with Tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#CapacityUnitCalculations)\n// in the Amazon DynamoDB Developer Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation BatchGetItem for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ProvisionedThroughputExceededException\n//     Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n//     automatically retry requests that receive this exception. Your request is\n//     eventually successful, unless your retry queue is too large to finish. Reduce\n//     the frequency of requests and use exponential backoff. For more information,\n//     go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n//     in the Amazon DynamoDB Developer Guide.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - RequestLimitExceeded\n//     Throughput exceeds the current throughput quota for your account. Please\n//     contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n//     a quota increase.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchGetItem\nfunc (c *DynamoDB) BatchGetItem(input *BatchGetItemInput) (*BatchGetItemOutput, error) {\n\treq, out := c.BatchGetItemRequest(input)\n\treturn out, req.Send()\n}\n\n// BatchGetItemWithContext is the same as BatchGetItem with the addition of\n// the ability to pass a context and additional request options.\n//\n// See BatchGetItem for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) BatchGetItemWithContext(ctx aws.Context, input *BatchGetItemInput, opts ...request.Option) (*BatchGetItemOutput, error) {\n\treq, out := c.BatchGetItemRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// BatchGetItemPages iterates over the pages of a BatchGetItem operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See BatchGetItem method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a BatchGetItem operation.\n//\tpageNum := 0\n//\terr := client.BatchGetItemPages(params,\n//\t    func(page *dynamodb.BatchGetItemOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *DynamoDB) BatchGetItemPages(input *BatchGetItemInput, fn func(*BatchGetItemOutput, bool) bool) error {\n\treturn c.BatchGetItemPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// BatchGetItemPagesWithContext same as BatchGetItemPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) BatchGetItemPagesWithContext(ctx aws.Context, input *BatchGetItemInput, fn func(*BatchGetItemOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *BatchGetItemInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.BatchGetItemRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*BatchGetItemOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opBatchWriteItem = \"BatchWriteItem\"\n\n// BatchWriteItemRequest generates a \"aws/request.Request\" representing the\n// client's request for the BatchWriteItem operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See BatchWriteItem for more information on using the BatchWriteItem\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the BatchWriteItemRequest method.\n//\treq, resp := client.BatchWriteItemRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchWriteItem\nfunc (c *DynamoDB) BatchWriteItemRequest(input *BatchWriteItemInput) (req *request.Request, output *BatchWriteItemOutput) {\n\top := &request.Operation{\n\t\tName:       opBatchWriteItem,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &BatchWriteItemInput{}\n\t}\n\n\toutput = &BatchWriteItemOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// BatchWriteItem API operation for Amazon DynamoDB.\n//\n// The BatchWriteItem operation puts or deletes multiple items in one or more\n// tables. A single call to BatchWriteItem can transmit up to 16MB of data over\n// the network, consisting of up to 25 item put or delete operations. While\n// individual items can be up to 400 KB once stored, it's important to note\n// that an item's representation might be greater than 400KB while being sent\n// in DynamoDB's JSON format for the API call. For more details on this distinction,\n// see Naming Rules and Data Types (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html).\n//\n// BatchWriteItem cannot update items. If you perform a BatchWriteItem operation\n// on an existing item, that item's values will be overwritten by the operation\n// and it will appear like it was updated. To update items, we recommend you\n// use the UpdateItem action.\n//\n// The individual PutItem and DeleteItem operations specified in BatchWriteItem\n// are atomic; however BatchWriteItem as a whole is not. If any requested operations\n// fail because the table's provisioned throughput is exceeded or an internal\n// processing failure occurs, the failed operations are returned in the UnprocessedItems\n// response parameter. You can investigate and optionally resend the requests.\n// Typically, you would call BatchWriteItem in a loop. Each iteration would\n// check for unprocessed items and submit a new BatchWriteItem request with\n// those unprocessed items until all items have been processed.\n//\n// If none of the items can be processed due to insufficient provisioned throughput\n// on all of the tables in the request, then BatchWriteItem returns a ProvisionedThroughputExceededException.\n//\n// If DynamoDB returns any unprocessed items, you should retry the batch operation\n// on those items. However, we strongly recommend that you use an exponential\n// backoff algorithm. If you retry the batch operation immediately, the underlying\n// read or write requests can still fail due to throttling on the individual\n// tables. If you delay the batch operation using exponential backoff, the individual\n// requests in the batch are much more likely to succeed.\n//\n// For more information, see Batch Operations and Error Handling (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#Programming.Errors.BatchOperations)\n// in the Amazon DynamoDB Developer Guide.\n//\n// With BatchWriteItem, you can efficiently write or delete large amounts of\n// data, such as from Amazon EMR, or copy data from another database into DynamoDB.\n// In order to improve performance with these large-scale operations, BatchWriteItem\n// does not behave in the same way as individual PutItem and DeleteItem calls\n// would. For example, you cannot specify conditions on individual put and delete\n// requests, and BatchWriteItem does not return deleted items in the response.\n//\n// If you use a programming language that supports concurrency, you can use\n// threads to write items in parallel. Your application must include the necessary\n// logic to manage the threads. With languages that don't support threading,\n// you must update or delete the specified items one at a time. In both situations,\n// BatchWriteItem performs the specified put and delete operations in parallel,\n// giving you the power of the thread pool approach without having to introduce\n// complexity into your application.\n//\n// Parallel processing reduces latency, but each specified put and delete request\n// consumes the same number of write capacity units whether it is processed\n// in parallel or not. Delete operations on nonexistent items consume one write\n// capacity unit.\n//\n// If one or more of the following is true, DynamoDB rejects the entire batch\n// write operation:\n//\n//   - One or more tables specified in the BatchWriteItem request does not\n//     exist.\n//\n//   - Primary key attributes specified on an item in the request do not match\n//     those in the corresponding table's primary key schema.\n//\n//   - You try to perform multiple operations on the same item in the same\n//     BatchWriteItem request. For example, you cannot put and delete the same\n//     item in the same BatchWriteItem request.\n//\n//   - Your request contains at least two items with identical hash and range\n//     keys (which essentially is two put operations).\n//\n//   - There are more than 25 requests in the batch.\n//\n//   - Any individual item in a batch exceeds 400 KB.\n//\n//   - The total request size exceeds 16 MB.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation BatchWriteItem for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ProvisionedThroughputExceededException\n//     Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n//     automatically retry requests that receive this exception. Your request is\n//     eventually successful, unless your retry queue is too large to finish. Reduce\n//     the frequency of requests and use exponential backoff. For more information,\n//     go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n//     in the Amazon DynamoDB Developer Guide.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - ItemCollectionSizeLimitExceededException\n//     An item collection is too large. This exception is only returned for tables\n//     that have one or more local secondary indexes.\n//\n//   - RequestLimitExceeded\n//     Throughput exceeds the current throughput quota for your account. Please\n//     contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n//     a quota increase.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BatchWriteItem\nfunc (c *DynamoDB) BatchWriteItem(input *BatchWriteItemInput) (*BatchWriteItemOutput, error) {\n\treq, out := c.BatchWriteItemRequest(input)\n\treturn out, req.Send()\n}\n\n// BatchWriteItemWithContext is the same as BatchWriteItem with the addition of\n// the ability to pass a context and additional request options.\n//\n// See BatchWriteItem for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) BatchWriteItemWithContext(ctx aws.Context, input *BatchWriteItemInput, opts ...request.Option) (*BatchWriteItemOutput, error) {\n\treq, out := c.BatchWriteItemRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCreateBackup = \"CreateBackup\"\n\n// CreateBackupRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreateBackup operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreateBackup for more information on using the CreateBackup\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreateBackupRequest method.\n//\treq, resp := client.CreateBackupRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateBackup\nfunc (c *DynamoDB) CreateBackupRequest(input *CreateBackupInput) (req *request.Request, output *CreateBackupOutput) {\n\top := &request.Operation{\n\t\tName:       opCreateBackup,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreateBackupInput{}\n\t}\n\n\toutput = &CreateBackupOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// CreateBackup API operation for Amazon DynamoDB.\n//\n// Creates a backup for an existing table.\n//\n// Each time you create an on-demand backup, the entire table data is backed\n// up. There is no limit to the number of on-demand backups that can be taken.\n//\n// When you create an on-demand backup, a time marker of the request is cataloged,\n// and the backup is created asynchronously, by applying all changes until the\n// time of the request to the last full table snapshot. Backup requests are\n// processed instantaneously and become available for restore within minutes.\n//\n// You can call CreateBackup at a maximum rate of 50 times per second.\n//\n// All backups in DynamoDB work without consuming any provisioned throughput\n// on the table.\n//\n// If you submit a backup request on 2018-12-14 at 14:25:00, the backup is guaranteed\n// to contain all data committed to the table up to 14:24:00, and data committed\n// after 14:26:00 will not be. The backup might contain data modifications made\n// between 14:24:00 and 14:26:00. On-demand backup does not support causal consistency.\n//\n// Along with data, the following are also included on the backups:\n//\n//   - Global secondary indexes (GSIs)\n//\n//   - Local secondary indexes (LSIs)\n//\n//   - Streams\n//\n//   - Provisioned read and write capacity\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation CreateBackup for usage and error information.\n//\n// Returned Error Types:\n//\n//   - TableNotFoundException\n//     A source table with the name TableName does not currently exist within the\n//     subscriber's account or the subscriber is operating in the wrong Amazon Web\n//     Services Region.\n//\n//   - TableInUseException\n//     A target table with the specified name is either being created or deleted.\n//\n//   - ContinuousBackupsUnavailableException\n//     Backups have not yet been enabled for this table.\n//\n//   - BackupInUseException\n//     There is another ongoing conflicting backup control plane operation on the\n//     table. The backup is either being created, deleted or restored to a table.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateBackup\nfunc (c *DynamoDB) CreateBackup(input *CreateBackupInput) (*CreateBackupOutput, error) {\n\treq, out := c.CreateBackupRequest(input)\n\treturn out, req.Send()\n}\n\n// CreateBackupWithContext is the same as CreateBackup with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreateBackup for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) CreateBackupWithContext(ctx aws.Context, input *CreateBackupInput, opts ...request.Option) (*CreateBackupOutput, error) {\n\treq, out := c.CreateBackupRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCreateGlobalTable = \"CreateGlobalTable\"\n\n// CreateGlobalTableRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreateGlobalTable operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreateGlobalTable for more information on using the CreateGlobalTable\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreateGlobalTableRequest method.\n//\treq, resp := client.CreateGlobalTableRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateGlobalTable\nfunc (c *DynamoDB) CreateGlobalTableRequest(input *CreateGlobalTableInput) (req *request.Request, output *CreateGlobalTableOutput) {\n\top := &request.Operation{\n\t\tName:       opCreateGlobalTable,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreateGlobalTableInput{}\n\t}\n\n\toutput = &CreateGlobalTableOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// CreateGlobalTable API operation for Amazon DynamoDB.\n//\n// Creates a global table from an existing table. A global table creates a replication\n// relationship between two or more DynamoDB tables with the same table name\n// in the provided Regions.\n//\n// This operation only applies to Version 2017.11.29 (Legacy) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V1.html)\n// of global tables. We recommend using Version 2019.11.21 (Current) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)\n// when creating new global tables, as it provides greater flexibility, higher\n// efficiency and consumes less write capacity than 2017.11.29 (Legacy). To\n// determine which version you are using, see Determining the version (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.DetermineVersion.html).\n// To update existing global tables from version 2017.11.29 (Legacy) to version\n// 2019.11.21 (Current), see Updating global tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/V2globaltables_upgrade.html).\n//\n// If you want to add a new replica table to a global table, each of the following\n// conditions must be true:\n//\n//   - The table must have the same primary key as all of the other replicas.\n//\n//   - The table must have the same name as all of the other replicas.\n//\n//   - The table must have DynamoDB Streams enabled, with the stream containing\n//     both the new and the old images of the item.\n//\n//   - None of the replica tables in the global table can contain any data.\n//\n// If global secondary indexes are specified, then the following conditions\n// must also be met:\n//\n//   - The global secondary indexes must have the same name.\n//\n//   - The global secondary indexes must have the same hash key and sort key\n//     (if present).\n//\n// If local secondary indexes are specified, then the following conditions must\n// also be met:\n//\n//   - The local secondary indexes must have the same name.\n//\n//   - The local secondary indexes must have the same hash key and sort key\n//     (if present).\n//\n// Write capacity settings should be set consistently across your replica tables\n// and secondary indexes. DynamoDB strongly recommends enabling auto scaling\n// to manage the write capacity settings for all of your global tables replicas\n// and indexes.\n//\n// If you prefer to manage write capacity settings manually, you should provision\n// equal replicated write capacity units to your replica tables. You should\n// also provision equal replicated write capacity units to matching secondary\n// indexes across your global table.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation CreateGlobalTable for usage and error information.\n//\n// Returned Error Types:\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - GlobalTableAlreadyExistsException\n//     The specified global table already exists.\n//\n//   - TableNotFoundException\n//     A source table with the name TableName does not currently exist within the\n//     subscriber's account or the subscriber is operating in the wrong Amazon Web\n//     Services Region.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateGlobalTable\nfunc (c *DynamoDB) CreateGlobalTable(input *CreateGlobalTableInput) (*CreateGlobalTableOutput, error) {\n\treq, out := c.CreateGlobalTableRequest(input)\n\treturn out, req.Send()\n}\n\n// CreateGlobalTableWithContext is the same as CreateGlobalTable with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreateGlobalTable for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) CreateGlobalTableWithContext(ctx aws.Context, input *CreateGlobalTableInput, opts ...request.Option) (*CreateGlobalTableOutput, error) {\n\treq, out := c.CreateGlobalTableRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCreateTable = \"CreateTable\"\n\n// CreateTableRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreateTable operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreateTable for more information on using the CreateTable\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreateTableRequest method.\n//\treq, resp := client.CreateTableRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateTable\nfunc (c *DynamoDB) CreateTableRequest(input *CreateTableInput) (req *request.Request, output *CreateTableOutput) {\n\top := &request.Operation{\n\t\tName:       opCreateTable,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreateTableInput{}\n\t}\n\n\toutput = &CreateTableOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// CreateTable API operation for Amazon DynamoDB.\n//\n// The CreateTable operation adds a new table to your account. In an Amazon\n// Web Services account, table names must be unique within each Region. That\n// is, you can have two tables with same name if you create the tables in different\n// Regions.\n//\n// CreateTable is an asynchronous operation. Upon receiving a CreateTable request,\n// DynamoDB immediately returns a response with a TableStatus of CREATING. After\n// the table is created, DynamoDB sets the TableStatus to ACTIVE. You can perform\n// read and write operations only on an ACTIVE table.\n//\n// You can optionally define secondary indexes on the new table, as part of\n// the CreateTable operation. If you want to create multiple tables with secondary\n// indexes on them, you must create the tables sequentially. Only one table\n// with secondary indexes can be in the CREATING state at any given time.\n//\n// You can use the DescribeTable action to check the table status.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation CreateTable for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceInUseException\n//     The operation conflicts with the resource's availability. For example, you\n//     attempted to recreate an existing table, or tried to delete a table currently\n//     in the CREATING state.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/CreateTable\nfunc (c *DynamoDB) CreateTable(input *CreateTableInput) (*CreateTableOutput, error) {\n\treq, out := c.CreateTableRequest(input)\n\treturn out, req.Send()\n}\n\n// CreateTableWithContext is the same as CreateTable with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreateTable for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) CreateTableWithContext(ctx aws.Context, input *CreateTableInput, opts ...request.Option) (*CreateTableOutput, error) {\n\treq, out := c.CreateTableRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteBackup = \"DeleteBackup\"\n\n// DeleteBackupRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteBackup operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteBackup for more information on using the DeleteBackup\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteBackupRequest method.\n//\treq, resp := client.DeleteBackupRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteBackup\nfunc (c *DynamoDB) DeleteBackupRequest(input *DeleteBackupInput) (req *request.Request, output *DeleteBackupOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteBackup,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteBackupInput{}\n\t}\n\n\toutput = &DeleteBackupOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// DeleteBackup API operation for Amazon DynamoDB.\n//\n// Deletes an existing backup of a table.\n//\n// You can call DeleteBackup at a maximum rate of 10 times per second.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DeleteBackup for usage and error information.\n//\n// Returned Error Types:\n//\n//   - BackupNotFoundException\n//     Backup not found for the given BackupARN.\n//\n//   - BackupInUseException\n//     There is another ongoing conflicting backup control plane operation on the\n//     table. The backup is either being created, deleted or restored to a table.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteBackup\nfunc (c *DynamoDB) DeleteBackup(input *DeleteBackupInput) (*DeleteBackupOutput, error) {\n\treq, out := c.DeleteBackupRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteBackupWithContext is the same as DeleteBackup with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteBackup for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DeleteBackupWithContext(ctx aws.Context, input *DeleteBackupInput, opts ...request.Option) (*DeleteBackupOutput, error) {\n\treq, out := c.DeleteBackupRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteItem = \"DeleteItem\"\n\n// DeleteItemRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteItem operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteItem for more information on using the DeleteItem\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteItemRequest method.\n//\treq, resp := client.DeleteItemRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteItem\nfunc (c *DynamoDB) DeleteItemRequest(input *DeleteItemInput) (req *request.Request, output *DeleteItemOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteItem,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteItemInput{}\n\t}\n\n\toutput = &DeleteItemOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// DeleteItem API operation for Amazon DynamoDB.\n//\n// Deletes a single item in a table by primary key. You can perform a conditional\n// delete operation that deletes the item if it exists, or if it has an expected\n// attribute value.\n//\n// In addition to deleting an item, you can also return the item's attribute\n// values in the same operation, using the ReturnValues parameter.\n//\n// Unless you specify conditions, the DeleteItem is an idempotent operation;\n// running it multiple times on the same item or attribute does not result in\n// an error response.\n//\n// Conditional deletes are useful for deleting items only if specific conditions\n// are met. If those conditions are met, DynamoDB performs the delete. Otherwise,\n// the item is not deleted.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DeleteItem for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ConditionalCheckFailedException\n//     A condition specified in the operation could not be evaluated.\n//\n//   - ProvisionedThroughputExceededException\n//     Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n//     automatically retry requests that receive this exception. Your request is\n//     eventually successful, unless your retry queue is too large to finish. Reduce\n//     the frequency of requests and use exponential backoff. For more information,\n//     go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n//     in the Amazon DynamoDB Developer Guide.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - ItemCollectionSizeLimitExceededException\n//     An item collection is too large. This exception is only returned for tables\n//     that have one or more local secondary indexes.\n//\n//   - TransactionConflictException\n//     Operation was rejected because there is an ongoing transaction for the item.\n//\n//   - RequestLimitExceeded\n//     Throughput exceeds the current throughput quota for your account. Please\n//     contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n//     a quota increase.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteItem\nfunc (c *DynamoDB) DeleteItem(input *DeleteItemInput) (*DeleteItemOutput, error) {\n\treq, out := c.DeleteItemRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteItemWithContext is the same as DeleteItem with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteItem for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DeleteItemWithContext(ctx aws.Context, input *DeleteItemInput, opts ...request.Option) (*DeleteItemOutput, error) {\n\treq, out := c.DeleteItemRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteTable = \"DeleteTable\"\n\n// DeleteTableRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteTable operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteTable for more information on using the DeleteTable\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteTableRequest method.\n//\treq, resp := client.DeleteTableRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteTable\nfunc (c *DynamoDB) DeleteTableRequest(input *DeleteTableInput) (req *request.Request, output *DeleteTableOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteTable,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteTableInput{}\n\t}\n\n\toutput = &DeleteTableOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// DeleteTable API operation for Amazon DynamoDB.\n//\n// The DeleteTable operation deletes a table and all of its items. After a DeleteTable\n// request, the specified table is in the DELETING state until DynamoDB completes\n// the deletion. If the table is in the ACTIVE state, you can delete it. If\n// a table is in CREATING or UPDATING states, then DynamoDB returns a ResourceInUseException.\n// If the specified table does not exist, DynamoDB returns a ResourceNotFoundException.\n// If table is already in the DELETING state, no error is returned.\n//\n// This operation only applies to Version 2019.11.21 (Current) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)\n// of global tables.\n//\n// DynamoDB might continue to accept data read and write operations, such as\n// GetItem and PutItem, on a table in the DELETING state until the table deletion\n// is complete.\n//\n// When you delete a table, any indexes on that table are also deleted.\n//\n// If you have DynamoDB Streams enabled on the table, then the corresponding\n// stream on that table goes into the DISABLED state, and the stream is automatically\n// deleted after 24 hours.\n//\n// Use the DescribeTable action to check the status of the table.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DeleteTable for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceInUseException\n//     The operation conflicts with the resource's availability. For example, you\n//     attempted to recreate an existing table, or tried to delete a table currently\n//     in the CREATING state.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DeleteTable\nfunc (c *DynamoDB) DeleteTable(input *DeleteTableInput) (*DeleteTableOutput, error) {\n\treq, out := c.DeleteTableRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteTableWithContext is the same as DeleteTable with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteTable for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DeleteTableWithContext(ctx aws.Context, input *DeleteTableInput, opts ...request.Option) (*DeleteTableOutput, error) {\n\treq, out := c.DeleteTableRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeBackup = \"DescribeBackup\"\n\n// DescribeBackupRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeBackup operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeBackup for more information on using the DescribeBackup\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeBackupRequest method.\n//\treq, resp := client.DescribeBackupRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeBackup\nfunc (c *DynamoDB) DescribeBackupRequest(input *DescribeBackupInput) (req *request.Request, output *DescribeBackupOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeBackup,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeBackupInput{}\n\t}\n\n\toutput = &DescribeBackupOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// DescribeBackup API operation for Amazon DynamoDB.\n//\n// Describes an existing backup of a table.\n//\n// You can call DescribeBackup at a maximum rate of 10 times per second.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DescribeBackup for usage and error information.\n//\n// Returned Error Types:\n//\n//   - BackupNotFoundException\n//     Backup not found for the given BackupARN.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeBackup\nfunc (c *DynamoDB) DescribeBackup(input *DescribeBackupInput) (*DescribeBackupOutput, error) {\n\treq, out := c.DescribeBackupRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeBackupWithContext is the same as DescribeBackup with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeBackup for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DescribeBackupWithContext(ctx aws.Context, input *DescribeBackupInput, opts ...request.Option) (*DescribeBackupOutput, error) {\n\treq, out := c.DescribeBackupRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeContinuousBackups = \"DescribeContinuousBackups\"\n\n// DescribeContinuousBackupsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeContinuousBackups operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeContinuousBackups for more information on using the DescribeContinuousBackups\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeContinuousBackupsRequest method.\n//\treq, resp := client.DescribeContinuousBackupsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeContinuousBackups\nfunc (c *DynamoDB) DescribeContinuousBackupsRequest(input *DescribeContinuousBackupsInput) (req *request.Request, output *DescribeContinuousBackupsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeContinuousBackups,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeContinuousBackupsInput{}\n\t}\n\n\toutput = &DescribeContinuousBackupsOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// DescribeContinuousBackups API operation for Amazon DynamoDB.\n//\n// Checks the status of continuous backups and point in time recovery on the\n// specified table. Continuous backups are ENABLED on all tables at table creation.\n// If point in time recovery is enabled, PointInTimeRecoveryStatus will be set\n// to ENABLED.\n//\n// After continuous backups and point in time recovery are enabled, you can\n// restore to any point in time within EarliestRestorableDateTime and LatestRestorableDateTime.\n//\n// LatestRestorableDateTime is typically 5 minutes before the current time.\n// You can restore your table to any point in time during the last 35 days.\n//\n// You can call DescribeContinuousBackups at a maximum rate of 10 times per\n// second.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DescribeContinuousBackups for usage and error information.\n//\n// Returned Error Types:\n//\n//   - TableNotFoundException\n//     A source table with the name TableName does not currently exist within the\n//     subscriber's account or the subscriber is operating in the wrong Amazon Web\n//     Services Region.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeContinuousBackups\nfunc (c *DynamoDB) DescribeContinuousBackups(input *DescribeContinuousBackupsInput) (*DescribeContinuousBackupsOutput, error) {\n\treq, out := c.DescribeContinuousBackupsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeContinuousBackupsWithContext is the same as DescribeContinuousBackups with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeContinuousBackups for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DescribeContinuousBackupsWithContext(ctx aws.Context, input *DescribeContinuousBackupsInput, opts ...request.Option) (*DescribeContinuousBackupsOutput, error) {\n\treq, out := c.DescribeContinuousBackupsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeContributorInsights = \"DescribeContributorInsights\"\n\n// DescribeContributorInsightsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeContributorInsights operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeContributorInsights for more information on using the DescribeContributorInsights\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeContributorInsightsRequest method.\n//\treq, resp := client.DescribeContributorInsightsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeContributorInsights\nfunc (c *DynamoDB) DescribeContributorInsightsRequest(input *DescribeContributorInsightsInput) (req *request.Request, output *DescribeContributorInsightsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeContributorInsights,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeContributorInsightsInput{}\n\t}\n\n\toutput = &DescribeContributorInsightsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeContributorInsights API operation for Amazon DynamoDB.\n//\n// Returns information about contributor insights for a given table or global\n// secondary index.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DescribeContributorInsights for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeContributorInsights\nfunc (c *DynamoDB) DescribeContributorInsights(input *DescribeContributorInsightsInput) (*DescribeContributorInsightsOutput, error) {\n\treq, out := c.DescribeContributorInsightsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeContributorInsightsWithContext is the same as DescribeContributorInsights with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeContributorInsights for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DescribeContributorInsightsWithContext(ctx aws.Context, input *DescribeContributorInsightsInput, opts ...request.Option) (*DescribeContributorInsightsOutput, error) {\n\treq, out := c.DescribeContributorInsightsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeEndpoints = \"DescribeEndpoints\"\n\n// DescribeEndpointsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeEndpoints operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeEndpoints for more information on using the DescribeEndpoints\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeEndpointsRequest method.\n//\treq, resp := client.DescribeEndpointsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeEndpoints\nfunc (c *DynamoDB) DescribeEndpointsRequest(input *DescribeEndpointsInput) (req *request.Request, output *DescribeEndpointsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeEndpoints,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeEndpointsInput{}\n\t}\n\n\toutput = &DescribeEndpointsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeEndpoints API operation for Amazon DynamoDB.\n//\n// Returns the regional endpoint information. For more information on policy\n// permissions, please see Internetwork traffic privacy (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/inter-network-traffic-privacy.html#inter-network-traffic-DescribeEndpoints).\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DescribeEndpoints for usage and error information.\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeEndpoints\nfunc (c *DynamoDB) DescribeEndpoints(input *DescribeEndpointsInput) (*DescribeEndpointsOutput, error) {\n\treq, out := c.DescribeEndpointsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeEndpointsWithContext is the same as DescribeEndpoints with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeEndpoints for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DescribeEndpointsWithContext(ctx aws.Context, input *DescribeEndpointsInput, opts ...request.Option) (*DescribeEndpointsOutput, error) {\n\treq, out := c.DescribeEndpointsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\ntype discovererDescribeEndpoints struct {\n\tClient        *DynamoDB\n\tRequired      bool\n\tEndpointCache *crr.EndpointCache\n\tParams        map[string]*string\n\tKey           string\n\treq           *request.Request\n}\n\nfunc (d *discovererDescribeEndpoints) Discover() (crr.Endpoint, error) {\n\tinput := &DescribeEndpointsInput{}\n\n\tresp, err := d.Client.DescribeEndpoints(input)\n\tif err != nil {\n\t\treturn crr.Endpoint{}, err\n\t}\n\n\tendpoint := crr.Endpoint{\n\t\tKey: d.Key,\n\t}\n\n\tfor _, e := range resp.Endpoints {\n\t\tif e.Address == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\taddress := *e.Address\n\n\t\tvar scheme string\n\t\tif idx := strings.Index(address, \"://\"); idx != -1 {\n\t\t\tscheme = address[:idx]\n\t\t}\n\n\t\tif len(scheme) == 0 {\n\t\t\taddress = fmt.Sprintf(\"%s://%s\", d.req.HTTPRequest.URL.Scheme, address)\n\t\t}\n\n\t\tcachedInMinutes := aws.Int64Value(e.CachePeriodInMinutes)\n\t\tu, err := url.Parse(address)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\taddr := crr.WeightedAddress{\n\t\t\tURL:     u,\n\t\t\tExpired: time.Now().Add(time.Duration(cachedInMinutes) * time.Minute),\n\t\t}\n\n\t\tendpoint.Add(addr)\n\t}\n\n\td.EndpointCache.Add(endpoint)\n\n\treturn endpoint, nil\n}\n\nfunc (d *discovererDescribeEndpoints) Handler(r *request.Request) {\n\tendpointKey := crr.BuildEndpointKey(d.Params)\n\td.Key = endpointKey\n\td.req = r\n\n\tendpoint, err := d.EndpointCache.Get(d, endpointKey, d.Required)\n\tif err != nil {\n\t\tr.Error = err\n\t\treturn\n\t}\n\n\tif endpoint.URL != nil && len(endpoint.URL.String()) > 0 {\n\t\tr.HTTPRequest.URL = endpoint.URL\n\t}\n}\n\nconst opDescribeExport = \"DescribeExport\"\n\n// DescribeExportRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeExport operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeExport for more information on using the DescribeExport\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeExportRequest method.\n//\treq, resp := client.DescribeExportRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeExport\nfunc (c *DynamoDB) DescribeExportRequest(input *DescribeExportInput) (req *request.Request, output *DescribeExportOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeExport,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeExportInput{}\n\t}\n\n\toutput = &DescribeExportOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeExport API operation for Amazon DynamoDB.\n//\n// Describes an existing table export.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DescribeExport for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ExportNotFoundException\n//     The specified export was not found.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeExport\nfunc (c *DynamoDB) DescribeExport(input *DescribeExportInput) (*DescribeExportOutput, error) {\n\treq, out := c.DescribeExportRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeExportWithContext is the same as DescribeExport with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeExport for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DescribeExportWithContext(ctx aws.Context, input *DescribeExportInput, opts ...request.Option) (*DescribeExportOutput, error) {\n\treq, out := c.DescribeExportRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeGlobalTable = \"DescribeGlobalTable\"\n\n// DescribeGlobalTableRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeGlobalTable operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeGlobalTable for more information on using the DescribeGlobalTable\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeGlobalTableRequest method.\n//\treq, resp := client.DescribeGlobalTableRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeGlobalTable\nfunc (c *DynamoDB) DescribeGlobalTableRequest(input *DescribeGlobalTableInput) (req *request.Request, output *DescribeGlobalTableOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeGlobalTable,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeGlobalTableInput{}\n\t}\n\n\toutput = &DescribeGlobalTableOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// DescribeGlobalTable API operation for Amazon DynamoDB.\n//\n// Returns information about the specified global table.\n//\n// This operation only applies to Version 2017.11.29 (Legacy) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V1.html)\n// of global tables. We recommend using Version 2019.11.21 (Current) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)\n// when creating new global tables, as it provides greater flexibility, higher\n// efficiency and consumes less write capacity than 2017.11.29 (Legacy). To\n// determine which version you are using, see Determining the version (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.DetermineVersion.html).\n// To update existing global tables from version 2017.11.29 (Legacy) to version\n// 2019.11.21 (Current), see Updating global tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/V2globaltables_upgrade.html).\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DescribeGlobalTable for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - GlobalTableNotFoundException\n//     The specified global table does not exist.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeGlobalTable\nfunc (c *DynamoDB) DescribeGlobalTable(input *DescribeGlobalTableInput) (*DescribeGlobalTableOutput, error) {\n\treq, out := c.DescribeGlobalTableRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeGlobalTableWithContext is the same as DescribeGlobalTable with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeGlobalTable for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DescribeGlobalTableWithContext(ctx aws.Context, input *DescribeGlobalTableInput, opts ...request.Option) (*DescribeGlobalTableOutput, error) {\n\treq, out := c.DescribeGlobalTableRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeGlobalTableSettings = \"DescribeGlobalTableSettings\"\n\n// DescribeGlobalTableSettingsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeGlobalTableSettings operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeGlobalTableSettings for more information on using the DescribeGlobalTableSettings\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeGlobalTableSettingsRequest method.\n//\treq, resp := client.DescribeGlobalTableSettingsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeGlobalTableSettings\nfunc (c *DynamoDB) DescribeGlobalTableSettingsRequest(input *DescribeGlobalTableSettingsInput) (req *request.Request, output *DescribeGlobalTableSettingsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeGlobalTableSettings,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeGlobalTableSettingsInput{}\n\t}\n\n\toutput = &DescribeGlobalTableSettingsOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// DescribeGlobalTableSettings API operation for Amazon DynamoDB.\n//\n// Describes Region-specific settings for a global table.\n//\n// This operation only applies to Version 2017.11.29 (Legacy) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V1.html)\n// of global tables. We recommend using Version 2019.11.21 (Current) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)\n// when creating new global tables, as it provides greater flexibility, higher\n// efficiency and consumes less write capacity than 2017.11.29 (Legacy). To\n// determine which version you are using, see Determining the version (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.DetermineVersion.html).\n// To update existing global tables from version 2017.11.29 (Legacy) to version\n// 2019.11.21 (Current), see Updating global tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/V2globaltables_upgrade.html).\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DescribeGlobalTableSettings for usage and error information.\n//\n// Returned Error Types:\n//\n//   - GlobalTableNotFoundException\n//     The specified global table does not exist.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeGlobalTableSettings\nfunc (c *DynamoDB) DescribeGlobalTableSettings(input *DescribeGlobalTableSettingsInput) (*DescribeGlobalTableSettingsOutput, error) {\n\treq, out := c.DescribeGlobalTableSettingsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeGlobalTableSettingsWithContext is the same as DescribeGlobalTableSettings with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeGlobalTableSettings for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DescribeGlobalTableSettingsWithContext(ctx aws.Context, input *DescribeGlobalTableSettingsInput, opts ...request.Option) (*DescribeGlobalTableSettingsOutput, error) {\n\treq, out := c.DescribeGlobalTableSettingsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeImport = \"DescribeImport\"\n\n// DescribeImportRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeImport operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeImport for more information on using the DescribeImport\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeImportRequest method.\n//\treq, resp := client.DescribeImportRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeImport\nfunc (c *DynamoDB) DescribeImportRequest(input *DescribeImportInput) (req *request.Request, output *DescribeImportOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeImport,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeImportInput{}\n\t}\n\n\toutput = &DescribeImportOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeImport API operation for Amazon DynamoDB.\n//\n// Represents the properties of the import.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DescribeImport for usage and error information.\n//\n// Returned Error Types:\n//   - ImportNotFoundException\n//     The specified import was not found.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeImport\nfunc (c *DynamoDB) DescribeImport(input *DescribeImportInput) (*DescribeImportOutput, error) {\n\treq, out := c.DescribeImportRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeImportWithContext is the same as DescribeImport with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeImport for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DescribeImportWithContext(ctx aws.Context, input *DescribeImportInput, opts ...request.Option) (*DescribeImportOutput, error) {\n\treq, out := c.DescribeImportRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeKinesisStreamingDestination = \"DescribeKinesisStreamingDestination\"\n\n// DescribeKinesisStreamingDestinationRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeKinesisStreamingDestination operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeKinesisStreamingDestination for more information on using the DescribeKinesisStreamingDestination\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeKinesisStreamingDestinationRequest method.\n//\treq, resp := client.DescribeKinesisStreamingDestinationRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeKinesisStreamingDestination\nfunc (c *DynamoDB) DescribeKinesisStreamingDestinationRequest(input *DescribeKinesisStreamingDestinationInput) (req *request.Request, output *DescribeKinesisStreamingDestinationOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeKinesisStreamingDestination,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeKinesisStreamingDestinationInput{}\n\t}\n\n\toutput = &DescribeKinesisStreamingDestinationOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// DescribeKinesisStreamingDestination API operation for Amazon DynamoDB.\n//\n// Returns information about the status of Kinesis streaming.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DescribeKinesisStreamingDestination for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeKinesisStreamingDestination\nfunc (c *DynamoDB) DescribeKinesisStreamingDestination(input *DescribeKinesisStreamingDestinationInput) (*DescribeKinesisStreamingDestinationOutput, error) {\n\treq, out := c.DescribeKinesisStreamingDestinationRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeKinesisStreamingDestinationWithContext is the same as DescribeKinesisStreamingDestination with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeKinesisStreamingDestination for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DescribeKinesisStreamingDestinationWithContext(ctx aws.Context, input *DescribeKinesisStreamingDestinationInput, opts ...request.Option) (*DescribeKinesisStreamingDestinationOutput, error) {\n\treq, out := c.DescribeKinesisStreamingDestinationRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeLimits = \"DescribeLimits\"\n\n// DescribeLimitsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeLimits operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeLimits for more information on using the DescribeLimits\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeLimitsRequest method.\n//\treq, resp := client.DescribeLimitsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeLimits\nfunc (c *DynamoDB) DescribeLimitsRequest(input *DescribeLimitsInput) (req *request.Request, output *DescribeLimitsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeLimits,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeLimitsInput{}\n\t}\n\n\toutput = &DescribeLimitsOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// DescribeLimits API operation for Amazon DynamoDB.\n//\n// Returns the current provisioned-capacity quotas for your Amazon Web Services\n// account in a Region, both for the Region as a whole and for any one DynamoDB\n// table that you create there.\n//\n// When you establish an Amazon Web Services account, the account has initial\n// quotas on the maximum read capacity units and write capacity units that you\n// can provision across all of your DynamoDB tables in a given Region. Also,\n// there are per-table quotas that apply when you create a table there. For\n// more information, see Service, Account, and Table Quotas (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)\n// page in the Amazon DynamoDB Developer Guide.\n//\n// Although you can increase these quotas by filing a case at Amazon Web Services\n// Support Center (https://console.aws.amazon.com/support/home#/), obtaining\n// the increase is not instantaneous. The DescribeLimits action lets you write\n// code to compare the capacity you are currently using to those quotas imposed\n// by your account so that you have enough time to apply for an increase before\n// you hit a quota.\n//\n// For example, you could use one of the Amazon Web Services SDKs to do the\n// following:\n//\n// Call DescribeLimits for a particular Region to obtain your current account\n// quotas on provisioned capacity there.\n//\n// Create a variable to hold the aggregate read capacity units provisioned for\n// all your tables in that Region, and one to hold the aggregate write capacity\n// units. Zero them both.\n//\n// Call ListTables to obtain a list of all your DynamoDB tables.\n//\n// For each table name listed by ListTables, do the following:\n//\n//   - Call DescribeTable with the table name.\n//\n//   - Use the data returned by DescribeTable to add the read capacity units\n//     and write capacity units provisioned for the table itself to your variables.\n//\n//   - If the table has one or more global secondary indexes (GSIs), loop over\n//     these GSIs and add their provisioned capacity values to your variables\n//     as well.\n//\n// Report the account quotas for that Region returned by DescribeLimits, along\n// with the total current provisioned capacity levels you have calculated.\n//\n// This will let you see whether you are getting close to your account-level\n// quotas.\n//\n// The per-table quotas apply only when you are creating a new table. They restrict\n// the sum of the provisioned capacity of the new table itself and all its global\n// secondary indexes.\n//\n// For existing tables and their GSIs, DynamoDB doesn't let you increase provisioned\n// capacity extremely rapidly, but the only quota that applies is that the aggregate\n// provisioned capacity over all your tables and GSIs cannot exceed either of\n// the per-account quotas.\n//\n// DescribeLimits should only be called periodically. You can expect throttling\n// errors if you call it more than once in a minute.\n//\n// The DescribeLimits Request element has no content.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DescribeLimits for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeLimits\nfunc (c *DynamoDB) DescribeLimits(input *DescribeLimitsInput) (*DescribeLimitsOutput, error) {\n\treq, out := c.DescribeLimitsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeLimitsWithContext is the same as DescribeLimits with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeLimits for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DescribeLimitsWithContext(ctx aws.Context, input *DescribeLimitsInput, opts ...request.Option) (*DescribeLimitsOutput, error) {\n\treq, out := c.DescribeLimitsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeTable = \"DescribeTable\"\n\n// DescribeTableRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeTable operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeTable for more information on using the DescribeTable\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeTableRequest method.\n//\treq, resp := client.DescribeTableRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTable\nfunc (c *DynamoDB) DescribeTableRequest(input *DescribeTableInput) (req *request.Request, output *DescribeTableOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeTable,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeTableInput{}\n\t}\n\n\toutput = &DescribeTableOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// DescribeTable API operation for Amazon DynamoDB.\n//\n// Returns information about the table, including the current status of the\n// table, when it was created, the primary key schema, and any indexes on the\n// table.\n//\n// This operation only applies to Version 2019.11.21 (Current) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)\n// of global tables.\n//\n// If you issue a DescribeTable request immediately after a CreateTable request,\n// DynamoDB might return a ResourceNotFoundException. This is because DescribeTable\n// uses an eventually consistent query, and the metadata for your table might\n// not be available at that moment. Wait for a few seconds, and then try the\n// DescribeTable request again.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DescribeTable for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTable\nfunc (c *DynamoDB) DescribeTable(input *DescribeTableInput) (*DescribeTableOutput, error) {\n\treq, out := c.DescribeTableRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeTableWithContext is the same as DescribeTable with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeTable for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DescribeTableWithContext(ctx aws.Context, input *DescribeTableInput, opts ...request.Option) (*DescribeTableOutput, error) {\n\treq, out := c.DescribeTableRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeTableReplicaAutoScaling = \"DescribeTableReplicaAutoScaling\"\n\n// DescribeTableReplicaAutoScalingRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeTableReplicaAutoScaling operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeTableReplicaAutoScaling for more information on using the DescribeTableReplicaAutoScaling\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeTableReplicaAutoScalingRequest method.\n//\treq, resp := client.DescribeTableReplicaAutoScalingRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTableReplicaAutoScaling\nfunc (c *DynamoDB) DescribeTableReplicaAutoScalingRequest(input *DescribeTableReplicaAutoScalingInput) (req *request.Request, output *DescribeTableReplicaAutoScalingOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeTableReplicaAutoScaling,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeTableReplicaAutoScalingInput{}\n\t}\n\n\toutput = &DescribeTableReplicaAutoScalingOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeTableReplicaAutoScaling API operation for Amazon DynamoDB.\n//\n// Describes auto scaling settings across replicas of the global table at once.\n//\n// This operation only applies to Version 2019.11.21 (Current) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)\n// of global tables.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DescribeTableReplicaAutoScaling for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTableReplicaAutoScaling\nfunc (c *DynamoDB) DescribeTableReplicaAutoScaling(input *DescribeTableReplicaAutoScalingInput) (*DescribeTableReplicaAutoScalingOutput, error) {\n\treq, out := c.DescribeTableReplicaAutoScalingRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeTableReplicaAutoScalingWithContext is the same as DescribeTableReplicaAutoScaling with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeTableReplicaAutoScaling for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DescribeTableReplicaAutoScalingWithContext(ctx aws.Context, input *DescribeTableReplicaAutoScalingInput, opts ...request.Option) (*DescribeTableReplicaAutoScalingOutput, error) {\n\treq, out := c.DescribeTableReplicaAutoScalingRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeTimeToLive = \"DescribeTimeToLive\"\n\n// DescribeTimeToLiveRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeTimeToLive operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeTimeToLive for more information on using the DescribeTimeToLive\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeTimeToLiveRequest method.\n//\treq, resp := client.DescribeTimeToLiveRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTimeToLive\nfunc (c *DynamoDB) DescribeTimeToLiveRequest(input *DescribeTimeToLiveInput) (req *request.Request, output *DescribeTimeToLiveOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeTimeToLive,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeTimeToLiveInput{}\n\t}\n\n\toutput = &DescribeTimeToLiveOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// DescribeTimeToLive API operation for Amazon DynamoDB.\n//\n// Gives a description of the Time to Live (TTL) status on the specified table.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DescribeTimeToLive for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeTimeToLive\nfunc (c *DynamoDB) DescribeTimeToLive(input *DescribeTimeToLiveInput) (*DescribeTimeToLiveOutput, error) {\n\treq, out := c.DescribeTimeToLiveRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeTimeToLiveWithContext is the same as DescribeTimeToLive with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeTimeToLive for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DescribeTimeToLiveWithContext(ctx aws.Context, input *DescribeTimeToLiveInput, opts ...request.Option) (*DescribeTimeToLiveOutput, error) {\n\treq, out := c.DescribeTimeToLiveRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDisableKinesisStreamingDestination = \"DisableKinesisStreamingDestination\"\n\n// DisableKinesisStreamingDestinationRequest generates a \"aws/request.Request\" representing the\n// client's request for the DisableKinesisStreamingDestination operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DisableKinesisStreamingDestination for more information on using the DisableKinesisStreamingDestination\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DisableKinesisStreamingDestinationRequest method.\n//\treq, resp := client.DisableKinesisStreamingDestinationRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DisableKinesisStreamingDestination\nfunc (c *DynamoDB) DisableKinesisStreamingDestinationRequest(input *DisableKinesisStreamingDestinationInput) (req *request.Request, output *DisableKinesisStreamingDestinationOutput) {\n\top := &request.Operation{\n\t\tName:       opDisableKinesisStreamingDestination,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DisableKinesisStreamingDestinationInput{}\n\t}\n\n\toutput = &DisableKinesisStreamingDestinationOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// DisableKinesisStreamingDestination API operation for Amazon DynamoDB.\n//\n// Stops replication from the DynamoDB table to the Kinesis data stream. This\n// is done without deleting either of the resources.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation DisableKinesisStreamingDestination for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - ResourceInUseException\n//     The operation conflicts with the resource's availability. For example, you\n//     attempted to recreate an existing table, or tried to delete a table currently\n//     in the CREATING state.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DisableKinesisStreamingDestination\nfunc (c *DynamoDB) DisableKinesisStreamingDestination(input *DisableKinesisStreamingDestinationInput) (*DisableKinesisStreamingDestinationOutput, error) {\n\treq, out := c.DisableKinesisStreamingDestinationRequest(input)\n\treturn out, req.Send()\n}\n\n// DisableKinesisStreamingDestinationWithContext is the same as DisableKinesisStreamingDestination with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DisableKinesisStreamingDestination for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) DisableKinesisStreamingDestinationWithContext(ctx aws.Context, input *DisableKinesisStreamingDestinationInput, opts ...request.Option) (*DisableKinesisStreamingDestinationOutput, error) {\n\treq, out := c.DisableKinesisStreamingDestinationRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opEnableKinesisStreamingDestination = \"EnableKinesisStreamingDestination\"\n\n// EnableKinesisStreamingDestinationRequest generates a \"aws/request.Request\" representing the\n// client's request for the EnableKinesisStreamingDestination operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See EnableKinesisStreamingDestination for more information on using the EnableKinesisStreamingDestination\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the EnableKinesisStreamingDestinationRequest method.\n//\treq, resp := client.EnableKinesisStreamingDestinationRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/EnableKinesisStreamingDestination\nfunc (c *DynamoDB) EnableKinesisStreamingDestinationRequest(input *EnableKinesisStreamingDestinationInput) (req *request.Request, output *EnableKinesisStreamingDestinationOutput) {\n\top := &request.Operation{\n\t\tName:       opEnableKinesisStreamingDestination,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &EnableKinesisStreamingDestinationInput{}\n\t}\n\n\toutput = &EnableKinesisStreamingDestinationOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// EnableKinesisStreamingDestination API operation for Amazon DynamoDB.\n//\n// Starts table data replication to the specified Kinesis data stream at a timestamp\n// chosen during the enable workflow. If this operation doesn't return results\n// immediately, use DescribeKinesisStreamingDestination to check if streaming\n// to the Kinesis data stream is ACTIVE.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation EnableKinesisStreamingDestination for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - ResourceInUseException\n//     The operation conflicts with the resource's availability. For example, you\n//     attempted to recreate an existing table, or tried to delete a table currently\n//     in the CREATING state.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/EnableKinesisStreamingDestination\nfunc (c *DynamoDB) EnableKinesisStreamingDestination(input *EnableKinesisStreamingDestinationInput) (*EnableKinesisStreamingDestinationOutput, error) {\n\treq, out := c.EnableKinesisStreamingDestinationRequest(input)\n\treturn out, req.Send()\n}\n\n// EnableKinesisStreamingDestinationWithContext is the same as EnableKinesisStreamingDestination with the addition of\n// the ability to pass a context and additional request options.\n//\n// See EnableKinesisStreamingDestination for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) EnableKinesisStreamingDestinationWithContext(ctx aws.Context, input *EnableKinesisStreamingDestinationInput, opts ...request.Option) (*EnableKinesisStreamingDestinationOutput, error) {\n\treq, out := c.EnableKinesisStreamingDestinationRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opExecuteStatement = \"ExecuteStatement\"\n\n// ExecuteStatementRequest generates a \"aws/request.Request\" representing the\n// client's request for the ExecuteStatement operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ExecuteStatement for more information on using the ExecuteStatement\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ExecuteStatementRequest method.\n//\treq, resp := client.ExecuteStatementRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ExecuteStatement\nfunc (c *DynamoDB) ExecuteStatementRequest(input *ExecuteStatementInput) (req *request.Request, output *ExecuteStatementOutput) {\n\top := &request.Operation{\n\t\tName:       opExecuteStatement,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &ExecuteStatementInput{}\n\t}\n\n\toutput = &ExecuteStatementOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ExecuteStatement API operation for Amazon DynamoDB.\n//\n// This operation allows you to perform reads and singleton writes on data stored\n// in DynamoDB, using PartiQL.\n//\n// For PartiQL reads (SELECT statement), if the total number of processed items\n// exceeds the maximum dataset size limit of 1 MB, the read stops and results\n// are returned to the user as a LastEvaluatedKey value to continue the read\n// in a subsequent operation. If the filter criteria in WHERE clause does not\n// match any data, the read will return an empty result set.\n//\n// A single SELECT statement response can return up to the maximum number of\n// items (if using the Limit parameter) or a maximum of 1 MB of data (and then\n// apply any filtering to the results using WHERE clause). If LastEvaluatedKey\n// is present in the response, you need to paginate the result set. If NextToken\n// is present, you need to paginate the result set and include NextToken.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation ExecuteStatement for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ConditionalCheckFailedException\n//     A condition specified in the operation could not be evaluated.\n//\n//   - ProvisionedThroughputExceededException\n//     Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n//     automatically retry requests that receive this exception. Your request is\n//     eventually successful, unless your retry queue is too large to finish. Reduce\n//     the frequency of requests and use exponential backoff. For more information,\n//     go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n//     in the Amazon DynamoDB Developer Guide.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - ItemCollectionSizeLimitExceededException\n//     An item collection is too large. This exception is only returned for tables\n//     that have one or more local secondary indexes.\n//\n//   - TransactionConflictException\n//     Operation was rejected because there is an ongoing transaction for the item.\n//\n//   - RequestLimitExceeded\n//     Throughput exceeds the current throughput quota for your account. Please\n//     contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n//     a quota increase.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - DuplicateItemException\n//     There was an attempt to insert an item with the same primary key as an item\n//     that already exists in the DynamoDB table.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ExecuteStatement\nfunc (c *DynamoDB) ExecuteStatement(input *ExecuteStatementInput) (*ExecuteStatementOutput, error) {\n\treq, out := c.ExecuteStatementRequest(input)\n\treturn out, req.Send()\n}\n\n// ExecuteStatementWithContext is the same as ExecuteStatement with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ExecuteStatement for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ExecuteStatementWithContext(ctx aws.Context, input *ExecuteStatementInput, opts ...request.Option) (*ExecuteStatementOutput, error) {\n\treq, out := c.ExecuteStatementRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opExecuteTransaction = \"ExecuteTransaction\"\n\n// ExecuteTransactionRequest generates a \"aws/request.Request\" representing the\n// client's request for the ExecuteTransaction operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ExecuteTransaction for more information on using the ExecuteTransaction\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ExecuteTransactionRequest method.\n//\treq, resp := client.ExecuteTransactionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ExecuteTransaction\nfunc (c *DynamoDB) ExecuteTransactionRequest(input *ExecuteTransactionInput) (req *request.Request, output *ExecuteTransactionOutput) {\n\top := &request.Operation{\n\t\tName:       opExecuteTransaction,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &ExecuteTransactionInput{}\n\t}\n\n\toutput = &ExecuteTransactionOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ExecuteTransaction API operation for Amazon DynamoDB.\n//\n// This operation allows you to perform transactional reads or writes on data\n// stored in DynamoDB, using PartiQL.\n//\n// The entire transaction must consist of either read statements or write statements,\n// you cannot mix both in one transaction. The EXISTS function is an exception\n// and can be used to check the condition of specific attributes of the item\n// in a similar manner to ConditionCheck in the TransactWriteItems (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/transaction-apis.html#transaction-apis-txwriteitems)\n// API.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation ExecuteTransaction for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - TransactionCanceledException\n//     The entire transaction request was canceled.\n//\n//     DynamoDB cancels a TransactWriteItems request under the following circumstances:\n//\n//   - A condition in one of the condition expressions is not met.\n//\n//   - A table in the TransactWriteItems request is in a different account\n//     or region.\n//\n//   - More than one action in the TransactWriteItems operation targets the\n//     same item.\n//\n//   - There is insufficient provisioned capacity for the transaction to be\n//     completed.\n//\n//   - An item size becomes too large (larger than 400 KB), or a local secondary\n//     index (LSI) becomes too large, or a similar validation error occurs because\n//     of changes made by the transaction.\n//\n//   - There is a user error, such as an invalid data format.\n//\n//   - There is an ongoing TransactWriteItems operation that conflicts with\n//     a concurrent TransactWriteItems request. In this case the TransactWriteItems\n//     operation fails with a TransactionCanceledException.\n//\n//     DynamoDB cancels a TransactGetItems request under the following circumstances:\n//\n//   - There is an ongoing TransactGetItems operation that conflicts with a\n//     concurrent PutItem, UpdateItem, DeleteItem or TransactWriteItems request.\n//     In this case the TransactGetItems operation fails with a TransactionCanceledException.\n//\n//   - A table in the TransactGetItems request is in a different account or\n//     region.\n//\n//   - There is insufficient provisioned capacity for the transaction to be\n//     completed.\n//\n//   - There is a user error, such as an invalid data format.\n//\n//     If using Java, DynamoDB lists the cancellation reasons on the CancellationReasons\n//     property. This property is not set for other languages. Transaction cancellation\n//     reasons are ordered in the order of requested items, if an item has no error\n//     it will have None code and Null message.\n//\n//     Cancellation reason codes and possible error messages:\n//\n//   - No Errors: Code: None Message: null\n//\n//   - Conditional Check Failed: Code: ConditionalCheckFailed Message: The\n//     conditional request failed.\n//\n//   - Item Collection Size Limit Exceeded: Code: ItemCollectionSizeLimitExceeded\n//     Message: Collection size exceeded.\n//\n//   - Transaction Conflict: Code: TransactionConflict Message: Transaction\n//     is ongoing for the item.\n//\n//   - Provisioned Throughput Exceeded: Code: ProvisionedThroughputExceeded\n//     Messages: The level of configured provisioned throughput for the table\n//     was exceeded. Consider increasing your provisioning level with the UpdateTable\n//     API. This Message is received when provisioned throughput is exceeded\n//     is on a provisioned DynamoDB table. The level of configured provisioned\n//     throughput for one or more global secondary indexes of the table was exceeded.\n//     Consider increasing your provisioning level for the under-provisioned\n//     global secondary indexes with the UpdateTable API. This message is returned\n//     when provisioned throughput is exceeded is on a provisioned GSI.\n//\n//   - Throttling Error: Code: ThrottlingError Messages: Throughput exceeds\n//     the current capacity of your table or index. DynamoDB is automatically\n//     scaling your table or index so please try again shortly. If exceptions\n//     persist, check if you have a hot key: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html.\n//     This message is returned when writes get throttled on an On-Demand table\n//     as DynamoDB is automatically scaling the table. Throughput exceeds the\n//     current capacity for one or more global secondary indexes. DynamoDB is\n//     automatically scaling your index so please try again shortly. This message\n//     is returned when writes get throttled on an On-Demand GSI as DynamoDB\n//     is automatically scaling the GSI.\n//\n//   - Validation Error: Code: ValidationError Messages: One or more parameter\n//     values were invalid. The update expression attempted to update the secondary\n//     index key beyond allowed size limits. The update expression attempted\n//     to update the secondary index key to unsupported type. An operand in the\n//     update expression has an incorrect data type. Item size to update has\n//     exceeded the maximum allowed size. Number overflow. Attempting to store\n//     a number with magnitude larger than supported range. Type mismatch for\n//     attribute to update. Nesting Levels have exceeded supported limits. The\n//     document path provided in the update expression is invalid for update.\n//     The provided expression refers to an attribute that does not exist in\n//     the item.\n//\n//   - TransactionInProgressException\n//     The transaction with the given request token is already in progress.\n//\n//     Recommended Settings\n//\n//     This is a general recommendation for handling the TransactionInProgressException.\n//     These settings help ensure that the client retries will trigger completion\n//     of the ongoing TransactWriteItems request.\n//\n//   - Set clientExecutionTimeout to a value that allows at least one retry\n//     to be processed after 5 seconds have elapsed since the first attempt for\n//     the TransactWriteItems operation.\n//\n//   - Set socketTimeout to a value a little lower than the requestTimeout\n//     setting.\n//\n//   - requestTimeout should be set based on the time taken for the individual\n//     retries of a single HTTP request for your use case, but setting it to\n//     1 second or higher should work well to reduce chances of retries and TransactionInProgressException\n//     errors.\n//\n//   - Use exponential backoff when retrying and tune backoff if needed.\n//\n//     Assuming default retry policy (https://github.com/aws/aws-sdk-java/blob/fd409dee8ae23fb8953e0bb4dbde65536a7e0514/aws-java-sdk-core/src/main/java/com/amazonaws/retry/PredefinedRetryPolicies.java#L97),\n//     example timeout settings based on the guidelines above are as follows:\n//\n//     Example timeline:\n//\n//   - 0-1000 first attempt\n//\n//   - 1000-1500 first sleep/delay (default retry policy uses 500 ms as base\n//     delay for 4xx errors)\n//\n//   - 1500-2500 second attempt\n//\n//   - 2500-3500 second sleep/delay (500 * 2, exponential backoff)\n//\n//   - 3500-4500 third attempt\n//\n//   - 4500-6500 third sleep/delay (500 * 2^2)\n//\n//   - 6500-7500 fourth attempt (this can trigger inline recovery since 5 seconds\n//     have elapsed since the first attempt reached TC)\n//\n//   - IdempotentParameterMismatchException\n//     DynamoDB rejected the request because you retried a request with a different\n//     payload but with an idempotent token that was already used.\n//\n//   - ProvisionedThroughputExceededException\n//     Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n//     automatically retry requests that receive this exception. Your request is\n//     eventually successful, unless your retry queue is too large to finish. Reduce\n//     the frequency of requests and use exponential backoff. For more information,\n//     go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n//     in the Amazon DynamoDB Developer Guide.\n//\n//   - RequestLimitExceeded\n//     Throughput exceeds the current throughput quota for your account. Please\n//     contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n//     a quota increase.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ExecuteTransaction\nfunc (c *DynamoDB) ExecuteTransaction(input *ExecuteTransactionInput) (*ExecuteTransactionOutput, error) {\n\treq, out := c.ExecuteTransactionRequest(input)\n\treturn out, req.Send()\n}\n\n// ExecuteTransactionWithContext is the same as ExecuteTransaction with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ExecuteTransaction for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ExecuteTransactionWithContext(ctx aws.Context, input *ExecuteTransactionInput, opts ...request.Option) (*ExecuteTransactionOutput, error) {\n\treq, out := c.ExecuteTransactionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opExportTableToPointInTime = \"ExportTableToPointInTime\"\n\n// ExportTableToPointInTimeRequest generates a \"aws/request.Request\" representing the\n// client's request for the ExportTableToPointInTime operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ExportTableToPointInTime for more information on using the ExportTableToPointInTime\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ExportTableToPointInTimeRequest method.\n//\treq, resp := client.ExportTableToPointInTimeRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ExportTableToPointInTime\nfunc (c *DynamoDB) ExportTableToPointInTimeRequest(input *ExportTableToPointInTimeInput) (req *request.Request, output *ExportTableToPointInTimeOutput) {\n\top := &request.Operation{\n\t\tName:       opExportTableToPointInTime,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &ExportTableToPointInTimeInput{}\n\t}\n\n\toutput = &ExportTableToPointInTimeOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ExportTableToPointInTime API operation for Amazon DynamoDB.\n//\n// Exports table data to an S3 bucket. The table must have point in time recovery\n// enabled, and you can export data from any time within the point in time recovery\n// window.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation ExportTableToPointInTime for usage and error information.\n//\n// Returned Error Types:\n//\n//   - TableNotFoundException\n//     A source table with the name TableName does not currently exist within the\n//     subscriber's account or the subscriber is operating in the wrong Amazon Web\n//     Services Region.\n//\n//   - PointInTimeRecoveryUnavailableException\n//     Point in time recovery has not yet been enabled for this source table.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - InvalidExportTimeException\n//     The specified ExportTime is outside of the point in time recovery window.\n//\n//   - ExportConflictException\n//     There was a conflict when writing to the specified S3 bucket.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ExportTableToPointInTime\nfunc (c *DynamoDB) ExportTableToPointInTime(input *ExportTableToPointInTimeInput) (*ExportTableToPointInTimeOutput, error) {\n\treq, out := c.ExportTableToPointInTimeRequest(input)\n\treturn out, req.Send()\n}\n\n// ExportTableToPointInTimeWithContext is the same as ExportTableToPointInTime with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ExportTableToPointInTime for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ExportTableToPointInTimeWithContext(ctx aws.Context, input *ExportTableToPointInTimeInput, opts ...request.Option) (*ExportTableToPointInTimeOutput, error) {\n\treq, out := c.ExportTableToPointInTimeRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetItem = \"GetItem\"\n\n// GetItemRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetItem operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetItem for more information on using the GetItem\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetItemRequest method.\n//\treq, resp := client.GetItemRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/GetItem\nfunc (c *DynamoDB) GetItemRequest(input *GetItemInput) (req *request.Request, output *GetItemOutput) {\n\top := &request.Operation{\n\t\tName:       opGetItem,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetItemInput{}\n\t}\n\n\toutput = &GetItemOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// GetItem API operation for Amazon DynamoDB.\n//\n// The GetItem operation returns a set of attributes for the item with the given\n// primary key. If there is no matching item, GetItem does not return any data\n// and there will be no Item element in the response.\n//\n// GetItem provides an eventually consistent read by default. If your application\n// requires a strongly consistent read, set ConsistentRead to true. Although\n// a strongly consistent read might take more time than an eventually consistent\n// read, it always returns the last updated value.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation GetItem for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ProvisionedThroughputExceededException\n//     Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n//     automatically retry requests that receive this exception. Your request is\n//     eventually successful, unless your retry queue is too large to finish. Reduce\n//     the frequency of requests and use exponential backoff. For more information,\n//     go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n//     in the Amazon DynamoDB Developer Guide.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - RequestLimitExceeded\n//     Throughput exceeds the current throughput quota for your account. Please\n//     contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n//     a quota increase.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/GetItem\nfunc (c *DynamoDB) GetItem(input *GetItemInput) (*GetItemOutput, error) {\n\treq, out := c.GetItemRequest(input)\n\treturn out, req.Send()\n}\n\n// GetItemWithContext is the same as GetItem with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetItem for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) GetItemWithContext(ctx aws.Context, input *GetItemInput, opts ...request.Option) (*GetItemOutput, error) {\n\treq, out := c.GetItemRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opImportTable = \"ImportTable\"\n\n// ImportTableRequest generates a \"aws/request.Request\" representing the\n// client's request for the ImportTable operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ImportTable for more information on using the ImportTable\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ImportTableRequest method.\n//\treq, resp := client.ImportTableRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ImportTable\nfunc (c *DynamoDB) ImportTableRequest(input *ImportTableInput) (req *request.Request, output *ImportTableOutput) {\n\top := &request.Operation{\n\t\tName:       opImportTable,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &ImportTableInput{}\n\t}\n\n\toutput = &ImportTableOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ImportTable API operation for Amazon DynamoDB.\n//\n// Imports table data from an S3 bucket.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation ImportTable for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceInUseException\n//     The operation conflicts with the resource's availability. For example, you\n//     attempted to recreate an existing table, or tried to delete a table currently\n//     in the CREATING state.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - ImportConflictException\n//     There was a conflict when importing from the specified S3 source. This can\n//     occur when the current import conflicts with a previous import request that\n//     had the same client token.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ImportTable\nfunc (c *DynamoDB) ImportTable(input *ImportTableInput) (*ImportTableOutput, error) {\n\treq, out := c.ImportTableRequest(input)\n\treturn out, req.Send()\n}\n\n// ImportTableWithContext is the same as ImportTable with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ImportTable for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ImportTableWithContext(ctx aws.Context, input *ImportTableInput, opts ...request.Option) (*ImportTableOutput, error) {\n\treq, out := c.ImportTableRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opListBackups = \"ListBackups\"\n\n// ListBackupsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListBackups operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListBackups for more information on using the ListBackups\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListBackupsRequest method.\n//\treq, resp := client.ListBackupsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListBackups\nfunc (c *DynamoDB) ListBackupsRequest(input *ListBackupsInput) (req *request.Request, output *ListBackupsOutput) {\n\top := &request.Operation{\n\t\tName:       opListBackups,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &ListBackupsInput{}\n\t}\n\n\toutput = &ListBackupsOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// ListBackups API operation for Amazon DynamoDB.\n//\n// List DynamoDB backups that are associated with an Amazon Web Services account\n// and weren't made with Amazon Web Services Backup. To list these backups for\n// a given table, specify TableName. ListBackups returns a paginated list of\n// results with at most 1 MB worth of items in a page. You can also specify\n// a maximum number of entries to be returned in a page.\n//\n// In the request, start time is inclusive, but end time is exclusive. Note\n// that these boundaries are for the time at which the original backup was requested.\n//\n// You can call ListBackups a maximum of five times per second.\n//\n// If you want to retrieve the complete list of backups made with Amazon Web\n// Services Backup, use the Amazon Web Services Backup list API. (https://docs.aws.amazon.com/aws-backup/latest/devguide/API_ListBackupJobs.html)\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation ListBackups for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListBackups\nfunc (c *DynamoDB) ListBackups(input *ListBackupsInput) (*ListBackupsOutput, error) {\n\treq, out := c.ListBackupsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListBackupsWithContext is the same as ListBackups with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListBackups for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ListBackupsWithContext(ctx aws.Context, input *ListBackupsInput, opts ...request.Option) (*ListBackupsOutput, error) {\n\treq, out := c.ListBackupsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opListContributorInsights = \"ListContributorInsights\"\n\n// ListContributorInsightsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListContributorInsights operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListContributorInsights for more information on using the ListContributorInsights\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListContributorInsightsRequest method.\n//\treq, resp := client.ListContributorInsightsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListContributorInsights\nfunc (c *DynamoDB) ListContributorInsightsRequest(input *ListContributorInsightsInput) (req *request.Request, output *ListContributorInsightsOutput) {\n\top := &request.Operation{\n\t\tName:       opListContributorInsights,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListContributorInsightsInput{}\n\t}\n\n\toutput = &ListContributorInsightsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListContributorInsights API operation for Amazon DynamoDB.\n//\n// Returns a list of ContributorInsightsSummary for a table and all its global\n// secondary indexes.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation ListContributorInsights for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListContributorInsights\nfunc (c *DynamoDB) ListContributorInsights(input *ListContributorInsightsInput) (*ListContributorInsightsOutput, error) {\n\treq, out := c.ListContributorInsightsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListContributorInsightsWithContext is the same as ListContributorInsights with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListContributorInsights for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ListContributorInsightsWithContext(ctx aws.Context, input *ListContributorInsightsInput, opts ...request.Option) (*ListContributorInsightsOutput, error) {\n\treq, out := c.ListContributorInsightsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListContributorInsightsPages iterates over the pages of a ListContributorInsights operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListContributorInsights method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListContributorInsights operation.\n//\tpageNum := 0\n//\terr := client.ListContributorInsightsPages(params,\n//\t    func(page *dynamodb.ListContributorInsightsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *DynamoDB) ListContributorInsightsPages(input *ListContributorInsightsInput, fn func(*ListContributorInsightsOutput, bool) bool) error {\n\treturn c.ListContributorInsightsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListContributorInsightsPagesWithContext same as ListContributorInsightsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ListContributorInsightsPagesWithContext(ctx aws.Context, input *ListContributorInsightsInput, fn func(*ListContributorInsightsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListContributorInsightsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListContributorInsightsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListContributorInsightsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListExports = \"ListExports\"\n\n// ListExportsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListExports operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListExports for more information on using the ListExports\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListExportsRequest method.\n//\treq, resp := client.ListExportsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListExports\nfunc (c *DynamoDB) ListExportsRequest(input *ListExportsInput) (req *request.Request, output *ListExportsOutput) {\n\top := &request.Operation{\n\t\tName:       opListExports,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListExportsInput{}\n\t}\n\n\toutput = &ListExportsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListExports API operation for Amazon DynamoDB.\n//\n// Lists completed exports within the past 90 days.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation ListExports for usage and error information.\n//\n// Returned Error Types:\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListExports\nfunc (c *DynamoDB) ListExports(input *ListExportsInput) (*ListExportsOutput, error) {\n\treq, out := c.ListExportsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListExportsWithContext is the same as ListExports with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListExports for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ListExportsWithContext(ctx aws.Context, input *ListExportsInput, opts ...request.Option) (*ListExportsOutput, error) {\n\treq, out := c.ListExportsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListExportsPages iterates over the pages of a ListExports operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListExports method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListExports operation.\n//\tpageNum := 0\n//\terr := client.ListExportsPages(params,\n//\t    func(page *dynamodb.ListExportsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *DynamoDB) ListExportsPages(input *ListExportsInput, fn func(*ListExportsOutput, bool) bool) error {\n\treturn c.ListExportsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListExportsPagesWithContext same as ListExportsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ListExportsPagesWithContext(ctx aws.Context, input *ListExportsInput, fn func(*ListExportsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListExportsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListExportsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListExportsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListGlobalTables = \"ListGlobalTables\"\n\n// ListGlobalTablesRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListGlobalTables operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListGlobalTables for more information on using the ListGlobalTables\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListGlobalTablesRequest method.\n//\treq, resp := client.ListGlobalTablesRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListGlobalTables\nfunc (c *DynamoDB) ListGlobalTablesRequest(input *ListGlobalTablesInput) (req *request.Request, output *ListGlobalTablesOutput) {\n\top := &request.Operation{\n\t\tName:       opListGlobalTables,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &ListGlobalTablesInput{}\n\t}\n\n\toutput = &ListGlobalTablesOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// ListGlobalTables API operation for Amazon DynamoDB.\n//\n// Lists all global tables that have a replica in the specified Region.\n//\n// This operation only applies to Version 2017.11.29 (Legacy) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V1.html)\n// of global tables. We recommend using Version 2019.11.21 (Current) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)\n// when creating new global tables, as it provides greater flexibility, higher\n// efficiency and consumes less write capacity than 2017.11.29 (Legacy). To\n// determine which version you are using, see Determining the version (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.DetermineVersion.html).\n// To update existing global tables from version 2017.11.29 (Legacy) to version\n// 2019.11.21 (Current), see Updating global tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/V2globaltables_upgrade.html).\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation ListGlobalTables for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListGlobalTables\nfunc (c *DynamoDB) ListGlobalTables(input *ListGlobalTablesInput) (*ListGlobalTablesOutput, error) {\n\treq, out := c.ListGlobalTablesRequest(input)\n\treturn out, req.Send()\n}\n\n// ListGlobalTablesWithContext is the same as ListGlobalTables with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListGlobalTables for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ListGlobalTablesWithContext(ctx aws.Context, input *ListGlobalTablesInput, opts ...request.Option) (*ListGlobalTablesOutput, error) {\n\treq, out := c.ListGlobalTablesRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opListImports = \"ListImports\"\n\n// ListImportsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListImports operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListImports for more information on using the ListImports\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListImportsRequest method.\n//\treq, resp := client.ListImportsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListImports\nfunc (c *DynamoDB) ListImportsRequest(input *ListImportsInput) (req *request.Request, output *ListImportsOutput) {\n\top := &request.Operation{\n\t\tName:       opListImports,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"PageSize\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListImportsInput{}\n\t}\n\n\toutput = &ListImportsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListImports API operation for Amazon DynamoDB.\n//\n// Lists completed imports within the past 90 days.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation ListImports for usage and error information.\n//\n// Returned Error Types:\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListImports\nfunc (c *DynamoDB) ListImports(input *ListImportsInput) (*ListImportsOutput, error) {\n\treq, out := c.ListImportsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListImportsWithContext is the same as ListImports with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListImports for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ListImportsWithContext(ctx aws.Context, input *ListImportsInput, opts ...request.Option) (*ListImportsOutput, error) {\n\treq, out := c.ListImportsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListImportsPages iterates over the pages of a ListImports operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListImports method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListImports operation.\n//\tpageNum := 0\n//\terr := client.ListImportsPages(params,\n//\t    func(page *dynamodb.ListImportsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *DynamoDB) ListImportsPages(input *ListImportsInput, fn func(*ListImportsOutput, bool) bool) error {\n\treturn c.ListImportsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListImportsPagesWithContext same as ListImportsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ListImportsPagesWithContext(ctx aws.Context, input *ListImportsInput, fn func(*ListImportsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListImportsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListImportsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListImportsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListTables = \"ListTables\"\n\n// ListTablesRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListTables operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListTables for more information on using the ListTables\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListTablesRequest method.\n//\treq, resp := client.ListTablesRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListTables\nfunc (c *DynamoDB) ListTablesRequest(input *ListTablesInput) (req *request.Request, output *ListTablesOutput) {\n\top := &request.Operation{\n\t\tName:       opListTables,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"ExclusiveStartTableName\"},\n\t\t\tOutputTokens:    []string{\"LastEvaluatedTableName\"},\n\t\t\tLimitToken:      \"Limit\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListTablesInput{}\n\t}\n\n\toutput = &ListTablesOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// ListTables API operation for Amazon DynamoDB.\n//\n// Returns an array of table names associated with the current account and endpoint.\n// The output from ListTables is paginated, with each page returning a maximum\n// of 100 table names.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation ListTables for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListTables\nfunc (c *DynamoDB) ListTables(input *ListTablesInput) (*ListTablesOutput, error) {\n\treq, out := c.ListTablesRequest(input)\n\treturn out, req.Send()\n}\n\n// ListTablesWithContext is the same as ListTables with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListTables for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ListTablesWithContext(ctx aws.Context, input *ListTablesInput, opts ...request.Option) (*ListTablesOutput, error) {\n\treq, out := c.ListTablesRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListTablesPages iterates over the pages of a ListTables operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListTables method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListTables operation.\n//\tpageNum := 0\n//\terr := client.ListTablesPages(params,\n//\t    func(page *dynamodb.ListTablesOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *DynamoDB) ListTablesPages(input *ListTablesInput, fn func(*ListTablesOutput, bool) bool) error {\n\treturn c.ListTablesPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListTablesPagesWithContext same as ListTablesPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ListTablesPagesWithContext(ctx aws.Context, input *ListTablesInput, fn func(*ListTablesOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListTablesInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListTablesRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListTablesOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListTagsOfResource = \"ListTagsOfResource\"\n\n// ListTagsOfResourceRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListTagsOfResource operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListTagsOfResource for more information on using the ListTagsOfResource\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListTagsOfResourceRequest method.\n//\treq, resp := client.ListTagsOfResourceRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListTagsOfResource\nfunc (c *DynamoDB) ListTagsOfResourceRequest(input *ListTagsOfResourceInput) (req *request.Request, output *ListTagsOfResourceOutput) {\n\top := &request.Operation{\n\t\tName:       opListTagsOfResource,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &ListTagsOfResourceInput{}\n\t}\n\n\toutput = &ListTagsOfResourceOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// ListTagsOfResource API operation for Amazon DynamoDB.\n//\n// List all tags on an Amazon DynamoDB resource. You can call ListTagsOfResource\n// up to 10 times per second, per account.\n//\n// For an overview on tagging DynamoDB resources, see Tagging for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)\n// in the Amazon DynamoDB Developer Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation ListTagsOfResource for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/ListTagsOfResource\nfunc (c *DynamoDB) ListTagsOfResource(input *ListTagsOfResourceInput) (*ListTagsOfResourceOutput, error) {\n\treq, out := c.ListTagsOfResourceRequest(input)\n\treturn out, req.Send()\n}\n\n// ListTagsOfResourceWithContext is the same as ListTagsOfResource with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListTagsOfResource for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ListTagsOfResourceWithContext(ctx aws.Context, input *ListTagsOfResourceInput, opts ...request.Option) (*ListTagsOfResourceOutput, error) {\n\treq, out := c.ListTagsOfResourceRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opPutItem = \"PutItem\"\n\n// PutItemRequest generates a \"aws/request.Request\" representing the\n// client's request for the PutItem operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See PutItem for more information on using the PutItem\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the PutItemRequest method.\n//\treq, resp := client.PutItemRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/PutItem\nfunc (c *DynamoDB) PutItemRequest(input *PutItemInput) (req *request.Request, output *PutItemOutput) {\n\top := &request.Operation{\n\t\tName:       opPutItem,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &PutItemInput{}\n\t}\n\n\toutput = &PutItemOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// PutItem API operation for Amazon DynamoDB.\n//\n// Creates a new item, or replaces an old item with a new item. If an item that\n// has the same primary key as the new item already exists in the specified\n// table, the new item completely replaces the existing item. You can perform\n// a conditional put operation (add a new item if one with the specified primary\n// key doesn't exist), or replace an existing item if it has certain attribute\n// values. You can return the item's attribute values in the same operation,\n// using the ReturnValues parameter.\n//\n// When you add an item, the primary key attributes are the only required attributes.\n//\n// Empty String and Binary attribute values are allowed. Attribute values of\n// type String and Binary must have a length greater than zero if the attribute\n// is used as a key attribute for a table or index. Set type attributes cannot\n// be empty.\n//\n// Invalid Requests with empty values will be rejected with a ValidationException\n// exception.\n//\n// To prevent a new item from replacing an existing item, use a conditional\n// expression that contains the attribute_not_exists function with the name\n// of the attribute being used as the partition key for the table. Since every\n// record must contain that attribute, the attribute_not_exists function will\n// only succeed if no matching item exists.\n//\n// For more information about PutItem, see Working with Items (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html)\n// in the Amazon DynamoDB Developer Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation PutItem for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ConditionalCheckFailedException\n//     A condition specified in the operation could not be evaluated.\n//\n//   - ProvisionedThroughputExceededException\n//     Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n//     automatically retry requests that receive this exception. Your request is\n//     eventually successful, unless your retry queue is too large to finish. Reduce\n//     the frequency of requests and use exponential backoff. For more information,\n//     go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n//     in the Amazon DynamoDB Developer Guide.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - ItemCollectionSizeLimitExceededException\n//     An item collection is too large. This exception is only returned for tables\n//     that have one or more local secondary indexes.\n//\n//   - TransactionConflictException\n//     Operation was rejected because there is an ongoing transaction for the item.\n//\n//   - RequestLimitExceeded\n//     Throughput exceeds the current throughput quota for your account. Please\n//     contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n//     a quota increase.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/PutItem\nfunc (c *DynamoDB) PutItem(input *PutItemInput) (*PutItemOutput, error) {\n\treq, out := c.PutItemRequest(input)\n\treturn out, req.Send()\n}\n\n// PutItemWithContext is the same as PutItem with the addition of\n// the ability to pass a context and additional request options.\n//\n// See PutItem for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) PutItemWithContext(ctx aws.Context, input *PutItemInput, opts ...request.Option) (*PutItemOutput, error) {\n\treq, out := c.PutItemRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opQuery = \"Query\"\n\n// QueryRequest generates a \"aws/request.Request\" representing the\n// client's request for the Query operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See Query for more information on using the Query\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the QueryRequest method.\n//\treq, resp := client.QueryRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/Query\nfunc (c *DynamoDB) QueryRequest(input *QueryInput) (req *request.Request, output *QueryOutput) {\n\top := &request.Operation{\n\t\tName:       opQuery,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"ExclusiveStartKey\"},\n\t\t\tOutputTokens:    []string{\"LastEvaluatedKey\"},\n\t\t\tLimitToken:      \"Limit\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &QueryInput{}\n\t}\n\n\toutput = &QueryOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// Query API operation for Amazon DynamoDB.\n//\n// You must provide the name of the partition key attribute and a single value\n// for that attribute. Query returns all items with that partition key value.\n// Optionally, you can provide a sort key attribute and use a comparison operator\n// to refine the search results.\n//\n// Use the KeyConditionExpression parameter to provide a specific value for\n// the partition key. The Query operation will return all of the items from\n// the table or index with that partition key value. You can optionally narrow\n// the scope of the Query operation by specifying a sort key value and a comparison\n// operator in KeyConditionExpression. To further refine the Query results,\n// you can optionally provide a FilterExpression. A FilterExpression determines\n// which items within the results should be returned to you. All of the other\n// results are discarded.\n//\n// A Query operation always returns a result set. If no matching items are found,\n// the result set will be empty. Queries that do not return results consume\n// the minimum number of read capacity units for that type of read operation.\n//\n// DynamoDB calculates the number of read capacity units consumed based on item\n// size, not on the amount of data that is returned to an application. The number\n// of capacity units consumed will be the same whether you request all of the\n// attributes (the default behavior) or just some of them (using a projection\n// expression). The number will also be the same whether or not you use a FilterExpression.\n//\n// Query results are always sorted by the sort key value. If the data type of\n// the sort key is Number, the results are returned in numeric order; otherwise,\n// the results are returned in order of UTF-8 bytes. By default, the sort order\n// is ascending. To reverse the order, set the ScanIndexForward parameter to\n// false.\n//\n// A single Query operation will read up to the maximum number of items set\n// (if using the Limit parameter) or a maximum of 1 MB of data and then apply\n// any filtering to the results using FilterExpression. If LastEvaluatedKey\n// is present in the response, you will need to paginate the result set. For\n// more information, see Paginating the Results (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html#Query.Pagination)\n// in the Amazon DynamoDB Developer Guide.\n//\n// FilterExpression is applied after a Query finishes, but before the results\n// are returned. A FilterExpression cannot contain partition key or sort key\n// attributes. You need to specify those attributes in the KeyConditionExpression.\n//\n// A Query operation can return an empty result set and a LastEvaluatedKey if\n// all the items read for the page of results are filtered out.\n//\n// You can query a table, a local secondary index, or a global secondary index.\n// For a query on a table or on a local secondary index, you can set the ConsistentRead\n// parameter to true and obtain a strongly consistent result. Global secondary\n// indexes support eventually consistent reads only, so do not specify ConsistentRead\n// when querying a global secondary index.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation Query for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ProvisionedThroughputExceededException\n//     Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n//     automatically retry requests that receive this exception. Your request is\n//     eventually successful, unless your retry queue is too large to finish. Reduce\n//     the frequency of requests and use exponential backoff. For more information,\n//     go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n//     in the Amazon DynamoDB Developer Guide.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - RequestLimitExceeded\n//     Throughput exceeds the current throughput quota for your account. Please\n//     contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n//     a quota increase.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/Query\nfunc (c *DynamoDB) Query(input *QueryInput) (*QueryOutput, error) {\n\treq, out := c.QueryRequest(input)\n\treturn out, req.Send()\n}\n\n// QueryWithContext is the same as Query with the addition of\n// the ability to pass a context and additional request options.\n//\n// See Query for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) QueryWithContext(ctx aws.Context, input *QueryInput, opts ...request.Option) (*QueryOutput, error) {\n\treq, out := c.QueryRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// QueryPages iterates over the pages of a Query operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See Query method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a Query operation.\n//\tpageNum := 0\n//\terr := client.QueryPages(params,\n//\t    func(page *dynamodb.QueryOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *DynamoDB) QueryPages(input *QueryInput, fn func(*QueryOutput, bool) bool) error {\n\treturn c.QueryPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// QueryPagesWithContext same as QueryPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) QueryPagesWithContext(ctx aws.Context, input *QueryInput, fn func(*QueryOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *QueryInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.QueryRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*QueryOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opRestoreTableFromBackup = \"RestoreTableFromBackup\"\n\n// RestoreTableFromBackupRequest generates a \"aws/request.Request\" representing the\n// client's request for the RestoreTableFromBackup operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See RestoreTableFromBackup for more information on using the RestoreTableFromBackup\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the RestoreTableFromBackupRequest method.\n//\treq, resp := client.RestoreTableFromBackupRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/RestoreTableFromBackup\nfunc (c *DynamoDB) RestoreTableFromBackupRequest(input *RestoreTableFromBackupInput) (req *request.Request, output *RestoreTableFromBackupOutput) {\n\top := &request.Operation{\n\t\tName:       opRestoreTableFromBackup,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &RestoreTableFromBackupInput{}\n\t}\n\n\toutput = &RestoreTableFromBackupOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// RestoreTableFromBackup API operation for Amazon DynamoDB.\n//\n// Creates a new table from an existing backup. Any number of users can execute\n// up to 50 concurrent restores (any type of restore) in a given account.\n//\n// You can call RestoreTableFromBackup at a maximum rate of 10 times per second.\n//\n// You must manually set up the following on the restored table:\n//\n//   - Auto scaling policies\n//\n//   - IAM policies\n//\n//   - Amazon CloudWatch metrics and alarms\n//\n//   - Tags\n//\n//   - Stream settings\n//\n//   - Time to Live (TTL) settings\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation RestoreTableFromBackup for usage and error information.\n//\n// Returned Error Types:\n//\n//   - TableAlreadyExistsException\n//     A target table with the specified name already exists.\n//\n//   - TableInUseException\n//     A target table with the specified name is either being created or deleted.\n//\n//   - BackupNotFoundException\n//     Backup not found for the given BackupARN.\n//\n//   - BackupInUseException\n//     There is another ongoing conflicting backup control plane operation on the\n//     table. The backup is either being created, deleted or restored to a table.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/RestoreTableFromBackup\nfunc (c *DynamoDB) RestoreTableFromBackup(input *RestoreTableFromBackupInput) (*RestoreTableFromBackupOutput, error) {\n\treq, out := c.RestoreTableFromBackupRequest(input)\n\treturn out, req.Send()\n}\n\n// RestoreTableFromBackupWithContext is the same as RestoreTableFromBackup with the addition of\n// the ability to pass a context and additional request options.\n//\n// See RestoreTableFromBackup for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) RestoreTableFromBackupWithContext(ctx aws.Context, input *RestoreTableFromBackupInput, opts ...request.Option) (*RestoreTableFromBackupOutput, error) {\n\treq, out := c.RestoreTableFromBackupRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opRestoreTableToPointInTime = \"RestoreTableToPointInTime\"\n\n// RestoreTableToPointInTimeRequest generates a \"aws/request.Request\" representing the\n// client's request for the RestoreTableToPointInTime operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See RestoreTableToPointInTime for more information on using the RestoreTableToPointInTime\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the RestoreTableToPointInTimeRequest method.\n//\treq, resp := client.RestoreTableToPointInTimeRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/RestoreTableToPointInTime\nfunc (c *DynamoDB) RestoreTableToPointInTimeRequest(input *RestoreTableToPointInTimeInput) (req *request.Request, output *RestoreTableToPointInTimeOutput) {\n\top := &request.Operation{\n\t\tName:       opRestoreTableToPointInTime,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &RestoreTableToPointInTimeInput{}\n\t}\n\n\toutput = &RestoreTableToPointInTimeOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// RestoreTableToPointInTime API operation for Amazon DynamoDB.\n//\n// Restores the specified table to the specified point in time within EarliestRestorableDateTime\n// and LatestRestorableDateTime. You can restore your table to any point in\n// time during the last 35 days. Any number of users can execute up to 4 concurrent\n// restores (any type of restore) in a given account.\n//\n// When you restore using point in time recovery, DynamoDB restores your table\n// data to the state based on the selected date and time (day:hour:minute:second)\n// to a new table.\n//\n// Along with data, the following are also included on the new restored table\n// using point in time recovery:\n//\n//   - Global secondary indexes (GSIs)\n//\n//   - Local secondary indexes (LSIs)\n//\n//   - Provisioned read and write capacity\n//\n//   - Encryption settings All these settings come from the current settings\n//     of the source table at the time of restore.\n//\n// You must manually set up the following on the restored table:\n//\n//   - Auto scaling policies\n//\n//   - IAM policies\n//\n//   - Amazon CloudWatch metrics and alarms\n//\n//   - Tags\n//\n//   - Stream settings\n//\n//   - Time to Live (TTL) settings\n//\n//   - Point in time recovery settings\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation RestoreTableToPointInTime for usage and error information.\n//\n// Returned Error Types:\n//\n//   - TableAlreadyExistsException\n//     A target table with the specified name already exists.\n//\n//   - TableNotFoundException\n//     A source table with the name TableName does not currently exist within the\n//     subscriber's account or the subscriber is operating in the wrong Amazon Web\n//     Services Region.\n//\n//   - TableInUseException\n//     A target table with the specified name is either being created or deleted.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - InvalidRestoreTimeException\n//     An invalid restore time was specified. RestoreDateTime must be between EarliestRestorableDateTime\n//     and LatestRestorableDateTime.\n//\n//   - PointInTimeRecoveryUnavailableException\n//     Point in time recovery has not yet been enabled for this source table.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/RestoreTableToPointInTime\nfunc (c *DynamoDB) RestoreTableToPointInTime(input *RestoreTableToPointInTimeInput) (*RestoreTableToPointInTimeOutput, error) {\n\treq, out := c.RestoreTableToPointInTimeRequest(input)\n\treturn out, req.Send()\n}\n\n// RestoreTableToPointInTimeWithContext is the same as RestoreTableToPointInTime with the addition of\n// the ability to pass a context and additional request options.\n//\n// See RestoreTableToPointInTime for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) RestoreTableToPointInTimeWithContext(ctx aws.Context, input *RestoreTableToPointInTimeInput, opts ...request.Option) (*RestoreTableToPointInTimeOutput, error) {\n\treq, out := c.RestoreTableToPointInTimeRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opScan = \"Scan\"\n\n// ScanRequest generates a \"aws/request.Request\" representing the\n// client's request for the Scan operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See Scan for more information on using the Scan\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ScanRequest method.\n//\treq, resp := client.ScanRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/Scan\nfunc (c *DynamoDB) ScanRequest(input *ScanInput) (req *request.Request, output *ScanOutput) {\n\top := &request.Operation{\n\t\tName:       opScan,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"ExclusiveStartKey\"},\n\t\t\tOutputTokens:    []string{\"LastEvaluatedKey\"},\n\t\t\tLimitToken:      \"Limit\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ScanInput{}\n\t}\n\n\toutput = &ScanOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// Scan API operation for Amazon DynamoDB.\n//\n// The Scan operation returns one or more items and item attributes by accessing\n// every item in a table or a secondary index. To have DynamoDB return fewer\n// items, you can provide a FilterExpression operation.\n//\n// If the total size of scanned items exceeds the maximum dataset size limit\n// of 1 MB, the scan completes and results are returned to the user. The LastEvaluatedKey\n// value is also returned and the requestor can use the LastEvaluatedKey to\n// continue the scan in a subsequent operation. Each scan response also includes\n// number of items that were scanned (ScannedCount) as part of the request.\n// If using a FilterExpression, a scan result can result in no items meeting\n// the criteria and the Count will result in zero. If you did not use a FilterExpression\n// in the scan request, then Count is the same as ScannedCount.\n//\n// Count and ScannedCount only return the count of items specific to a single\n// scan request and, unless the table is less than 1MB, do not represent the\n// total number of items in the table.\n//\n// A single Scan operation first reads up to the maximum number of items set\n// (if using the Limit parameter) or a maximum of 1 MB of data and then applies\n// any filtering to the results if a FilterExpression is provided. If LastEvaluatedKey\n// is present in the response, pagination is required to complete the full table\n// scan. For more information, see Paginating the Results (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html#Scan.Pagination)\n// in the Amazon DynamoDB Developer Guide.\n//\n// Scan operations proceed sequentially; however, for faster performance on\n// a large table or secondary index, applications can request a parallel Scan\n// operation by providing the Segment and TotalSegments parameters. For more\n// information, see Parallel Scan (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html#Scan.ParallelScan)\n// in the Amazon DynamoDB Developer Guide.\n//\n// By default, a Scan uses eventually consistent reads when accessing the items\n// in a table. Therefore, the results from an eventually consistent Scan may\n// not include the latest item changes at the time the scan iterates through\n// each item in the table. If you require a strongly consistent read of each\n// item as the scan iterates through the items in the table, you can set the\n// ConsistentRead parameter to true. Strong consistency only relates to the\n// consistency of the read at the item level.\n//\n// DynamoDB does not provide snapshot isolation for a scan operation when the\n// ConsistentRead parameter is set to true. Thus, a DynamoDB scan operation\n// does not guarantee that all reads in a scan see a consistent snapshot of\n// the table when the scan operation was requested.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation Scan for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ProvisionedThroughputExceededException\n//     Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n//     automatically retry requests that receive this exception. Your request is\n//     eventually successful, unless your retry queue is too large to finish. Reduce\n//     the frequency of requests and use exponential backoff. For more information,\n//     go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n//     in the Amazon DynamoDB Developer Guide.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - RequestLimitExceeded\n//     Throughput exceeds the current throughput quota for your account. Please\n//     contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n//     a quota increase.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/Scan\nfunc (c *DynamoDB) Scan(input *ScanInput) (*ScanOutput, error) {\n\treq, out := c.ScanRequest(input)\n\treturn out, req.Send()\n}\n\n// ScanWithContext is the same as Scan with the addition of\n// the ability to pass a context and additional request options.\n//\n// See Scan for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ScanWithContext(ctx aws.Context, input *ScanInput, opts ...request.Option) (*ScanOutput, error) {\n\treq, out := c.ScanRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ScanPages iterates over the pages of a Scan operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See Scan method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a Scan operation.\n//\tpageNum := 0\n//\terr := client.ScanPages(params,\n//\t    func(page *dynamodb.ScanOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *DynamoDB) ScanPages(input *ScanInput, fn func(*ScanOutput, bool) bool) error {\n\treturn c.ScanPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ScanPagesWithContext same as ScanPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) ScanPagesWithContext(ctx aws.Context, input *ScanInput, fn func(*ScanOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ScanInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ScanRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ScanOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opTagResource = \"TagResource\"\n\n// TagResourceRequest generates a \"aws/request.Request\" representing the\n// client's request for the TagResource operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See TagResource for more information on using the TagResource\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the TagResourceRequest method.\n//\treq, resp := client.TagResourceRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TagResource\nfunc (c *DynamoDB) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {\n\top := &request.Operation{\n\t\tName:       opTagResource,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &TagResourceInput{}\n\t}\n\n\toutput = &TagResourceOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// TagResource API operation for Amazon DynamoDB.\n//\n// Associate a set of tags with an Amazon DynamoDB resource. You can then activate\n// these user-defined tags so that they appear on the Billing and Cost Management\n// console for cost allocation tracking. You can call TagResource up to five\n// times per second, per account.\n//\n// For an overview on tagging DynamoDB resources, see Tagging for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)\n// in the Amazon DynamoDB Developer Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation TagResource for usage and error information.\n//\n// Returned Error Types:\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - ResourceInUseException\n//     The operation conflicts with the resource's availability. For example, you\n//     attempted to recreate an existing table, or tried to delete a table currently\n//     in the CREATING state.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TagResource\nfunc (c *DynamoDB) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {\n\treq, out := c.TagResourceRequest(input)\n\treturn out, req.Send()\n}\n\n// TagResourceWithContext is the same as TagResource with the addition of\n// the ability to pass a context and additional request options.\n//\n// See TagResource for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {\n\treq, out := c.TagResourceRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opTransactGetItems = \"TransactGetItems\"\n\n// TransactGetItemsRequest generates a \"aws/request.Request\" representing the\n// client's request for the TransactGetItems operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See TransactGetItems for more information on using the TransactGetItems\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the TransactGetItemsRequest method.\n//\treq, resp := client.TransactGetItemsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TransactGetItems\nfunc (c *DynamoDB) TransactGetItemsRequest(input *TransactGetItemsInput) (req *request.Request, output *TransactGetItemsOutput) {\n\top := &request.Operation{\n\t\tName:       opTransactGetItems,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &TransactGetItemsInput{}\n\t}\n\n\toutput = &TransactGetItemsOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// TransactGetItems API operation for Amazon DynamoDB.\n//\n// TransactGetItems is a synchronous operation that atomically retrieves multiple\n// items from one or more tables (but not from indexes) in a single account\n// and Region. A TransactGetItems call can contain up to 100 TransactGetItem\n// objects, each of which contains a Get structure that specifies an item to\n// retrieve from a table in the account and Region. A call to TransactGetItems\n// cannot retrieve items from tables in more than one Amazon Web Services account\n// or Region. The aggregate size of the items in the transaction cannot exceed\n// 4 MB.\n//\n// DynamoDB rejects the entire TransactGetItems request if any of the following\n// is true:\n//\n//   - A conflicting operation is in the process of updating an item to be\n//     read.\n//\n//   - There is insufficient provisioned capacity for the transaction to be\n//     completed.\n//\n//   - There is a user error, such as an invalid data format.\n//\n//   - The aggregate size of the items in the transaction exceeded 4 MB.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation TransactGetItems for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - TransactionCanceledException\n//     The entire transaction request was canceled.\n//\n//     DynamoDB cancels a TransactWriteItems request under the following circumstances:\n//\n//   - A condition in one of the condition expressions is not met.\n//\n//   - A table in the TransactWriteItems request is in a different account\n//     or region.\n//\n//   - More than one action in the TransactWriteItems operation targets the\n//     same item.\n//\n//   - There is insufficient provisioned capacity for the transaction to be\n//     completed.\n//\n//   - An item size becomes too large (larger than 400 KB), or a local secondary\n//     index (LSI) becomes too large, or a similar validation error occurs because\n//     of changes made by the transaction.\n//\n//   - There is a user error, such as an invalid data format.\n//\n//   - There is an ongoing TransactWriteItems operation that conflicts with\n//     a concurrent TransactWriteItems request. In this case the TransactWriteItems\n//     operation fails with a TransactionCanceledException.\n//\n//     DynamoDB cancels a TransactGetItems request under the following circumstances:\n//\n//   - There is an ongoing TransactGetItems operation that conflicts with a\n//     concurrent PutItem, UpdateItem, DeleteItem or TransactWriteItems request.\n//     In this case the TransactGetItems operation fails with a TransactionCanceledException.\n//\n//   - A table in the TransactGetItems request is in a different account or\n//     region.\n//\n//   - There is insufficient provisioned capacity for the transaction to be\n//     completed.\n//\n//   - There is a user error, such as an invalid data format.\n//\n//     If using Java, DynamoDB lists the cancellation reasons on the CancellationReasons\n//     property. This property is not set for other languages. Transaction cancellation\n//     reasons are ordered in the order of requested items, if an item has no error\n//     it will have None code and Null message.\n//\n//     Cancellation reason codes and possible error messages:\n//\n//   - No Errors: Code: None Message: null\n//\n//   - Conditional Check Failed: Code: ConditionalCheckFailed Message: The\n//     conditional request failed.\n//\n//   - Item Collection Size Limit Exceeded: Code: ItemCollectionSizeLimitExceeded\n//     Message: Collection size exceeded.\n//\n//   - Transaction Conflict: Code: TransactionConflict Message: Transaction\n//     is ongoing for the item.\n//\n//   - Provisioned Throughput Exceeded: Code: ProvisionedThroughputExceeded\n//     Messages: The level of configured provisioned throughput for the table\n//     was exceeded. Consider increasing your provisioning level with the UpdateTable\n//     API. This Message is received when provisioned throughput is exceeded\n//     is on a provisioned DynamoDB table. The level of configured provisioned\n//     throughput for one or more global secondary indexes of the table was exceeded.\n//     Consider increasing your provisioning level for the under-provisioned\n//     global secondary indexes with the UpdateTable API. This message is returned\n//     when provisioned throughput is exceeded is on a provisioned GSI.\n//\n//   - Throttling Error: Code: ThrottlingError Messages: Throughput exceeds\n//     the current capacity of your table or index. DynamoDB is automatically\n//     scaling your table or index so please try again shortly. If exceptions\n//     persist, check if you have a hot key: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html.\n//     This message is returned when writes get throttled on an On-Demand table\n//     as DynamoDB is automatically scaling the table. Throughput exceeds the\n//     current capacity for one or more global secondary indexes. DynamoDB is\n//     automatically scaling your index so please try again shortly. This message\n//     is returned when writes get throttled on an On-Demand GSI as DynamoDB\n//     is automatically scaling the GSI.\n//\n//   - Validation Error: Code: ValidationError Messages: One or more parameter\n//     values were invalid. The update expression attempted to update the secondary\n//     index key beyond allowed size limits. The update expression attempted\n//     to update the secondary index key to unsupported type. An operand in the\n//     update expression has an incorrect data type. Item size to update has\n//     exceeded the maximum allowed size. Number overflow. Attempting to store\n//     a number with magnitude larger than supported range. Type mismatch for\n//     attribute to update. Nesting Levels have exceeded supported limits. The\n//     document path provided in the update expression is invalid for update.\n//     The provided expression refers to an attribute that does not exist in\n//     the item.\n//\n//   - ProvisionedThroughputExceededException\n//     Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n//     automatically retry requests that receive this exception. Your request is\n//     eventually successful, unless your retry queue is too large to finish. Reduce\n//     the frequency of requests and use exponential backoff. For more information,\n//     go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n//     in the Amazon DynamoDB Developer Guide.\n//\n//   - RequestLimitExceeded\n//     Throughput exceeds the current throughput quota for your account. Please\n//     contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n//     a quota increase.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TransactGetItems\nfunc (c *DynamoDB) TransactGetItems(input *TransactGetItemsInput) (*TransactGetItemsOutput, error) {\n\treq, out := c.TransactGetItemsRequest(input)\n\treturn out, req.Send()\n}\n\n// TransactGetItemsWithContext is the same as TransactGetItems with the addition of\n// the ability to pass a context and additional request options.\n//\n// See TransactGetItems for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) TransactGetItemsWithContext(ctx aws.Context, input *TransactGetItemsInput, opts ...request.Option) (*TransactGetItemsOutput, error) {\n\treq, out := c.TransactGetItemsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opTransactWriteItems = \"TransactWriteItems\"\n\n// TransactWriteItemsRequest generates a \"aws/request.Request\" representing the\n// client's request for the TransactWriteItems operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See TransactWriteItems for more information on using the TransactWriteItems\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the TransactWriteItemsRequest method.\n//\treq, resp := client.TransactWriteItemsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TransactWriteItems\nfunc (c *DynamoDB) TransactWriteItemsRequest(input *TransactWriteItemsInput) (req *request.Request, output *TransactWriteItemsOutput) {\n\top := &request.Operation{\n\t\tName:       opTransactWriteItems,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &TransactWriteItemsInput{}\n\t}\n\n\toutput = &TransactWriteItemsOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// TransactWriteItems API operation for Amazon DynamoDB.\n//\n// TransactWriteItems is a synchronous write operation that groups up to 100\n// action requests. These actions can target items in different tables, but\n// not in different Amazon Web Services accounts or Regions, and no two actions\n// can target the same item. For example, you cannot both ConditionCheck and\n// Update the same item. The aggregate size of the items in the transaction\n// cannot exceed 4 MB.\n//\n// The actions are completed atomically so that either all of them succeed,\n// or all of them fail. They are defined by the following objects:\n//\n//   - Put — Initiates a PutItem operation to write a new item. This structure\n//     specifies the primary key of the item to be written, the name of the table\n//     to write it in, an optional condition expression that must be satisfied\n//     for the write to succeed, a list of the item's attributes, and a field\n//     indicating whether to retrieve the item's attributes if the condition\n//     is not met.\n//\n//   - Update — Initiates an UpdateItem operation to update an existing item.\n//     This structure specifies the primary key of the item to be updated, the\n//     name of the table where it resides, an optional condition expression that\n//     must be satisfied for the update to succeed, an expression that defines\n//     one or more attributes to be updated, and a field indicating whether to\n//     retrieve the item's attributes if the condition is not met.\n//\n//   - Delete — Initiates a DeleteItem operation to delete an existing item.\n//     This structure specifies the primary key of the item to be deleted, the\n//     name of the table where it resides, an optional condition expression that\n//     must be satisfied for the deletion to succeed, and a field indicating\n//     whether to retrieve the item's attributes if the condition is not met.\n//\n//   - ConditionCheck — Applies a condition to an item that is not being\n//     modified by the transaction. This structure specifies the primary key\n//     of the item to be checked, the name of the table where it resides, a condition\n//     expression that must be satisfied for the transaction to succeed, and\n//     a field indicating whether to retrieve the item's attributes if the condition\n//     is not met.\n//\n// DynamoDB rejects the entire TransactWriteItems request if any of the following\n// is true:\n//\n//   - A condition in one of the condition expressions is not met.\n//\n//   - An ongoing operation is in the process of updating the same item.\n//\n//   - There is insufficient provisioned capacity for the transaction to be\n//     completed.\n//\n//   - An item size becomes too large (bigger than 400 KB), a local secondary\n//     index (LSI) becomes too large, or a similar validation error occurs because\n//     of changes made by the transaction.\n//\n//   - The aggregate size of the items in the transaction exceeds 4 MB.\n//\n//   - There is a user error, such as an invalid data format.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation TransactWriteItems for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - TransactionCanceledException\n//     The entire transaction request was canceled.\n//\n//     DynamoDB cancels a TransactWriteItems request under the following circumstances:\n//\n//   - A condition in one of the condition expressions is not met.\n//\n//   - A table in the TransactWriteItems request is in a different account\n//     or region.\n//\n//   - More than one action in the TransactWriteItems operation targets the\n//     same item.\n//\n//   - There is insufficient provisioned capacity for the transaction to be\n//     completed.\n//\n//   - An item size becomes too large (larger than 400 KB), or a local secondary\n//     index (LSI) becomes too large, or a similar validation error occurs because\n//     of changes made by the transaction.\n//\n//   - There is a user error, such as an invalid data format.\n//\n//   - There is an ongoing TransactWriteItems operation that conflicts with\n//     a concurrent TransactWriteItems request. In this case the TransactWriteItems\n//     operation fails with a TransactionCanceledException.\n//\n//     DynamoDB cancels a TransactGetItems request under the following circumstances:\n//\n//   - There is an ongoing TransactGetItems operation that conflicts with a\n//     concurrent PutItem, UpdateItem, DeleteItem or TransactWriteItems request.\n//     In this case the TransactGetItems operation fails with a TransactionCanceledException.\n//\n//   - A table in the TransactGetItems request is in a different account or\n//     region.\n//\n//   - There is insufficient provisioned capacity for the transaction to be\n//     completed.\n//\n//   - There is a user error, such as an invalid data format.\n//\n//     If using Java, DynamoDB lists the cancellation reasons on the CancellationReasons\n//     property. This property is not set for other languages. Transaction cancellation\n//     reasons are ordered in the order of requested items, if an item has no error\n//     it will have None code and Null message.\n//\n//     Cancellation reason codes and possible error messages:\n//\n//   - No Errors: Code: None Message: null\n//\n//   - Conditional Check Failed: Code: ConditionalCheckFailed Message: The\n//     conditional request failed.\n//\n//   - Item Collection Size Limit Exceeded: Code: ItemCollectionSizeLimitExceeded\n//     Message: Collection size exceeded.\n//\n//   - Transaction Conflict: Code: TransactionConflict Message: Transaction\n//     is ongoing for the item.\n//\n//   - Provisioned Throughput Exceeded: Code: ProvisionedThroughputExceeded\n//     Messages: The level of configured provisioned throughput for the table\n//     was exceeded. Consider increasing your provisioning level with the UpdateTable\n//     API. This Message is received when provisioned throughput is exceeded\n//     is on a provisioned DynamoDB table. The level of configured provisioned\n//     throughput for one or more global secondary indexes of the table was exceeded.\n//     Consider increasing your provisioning level for the under-provisioned\n//     global secondary indexes with the UpdateTable API. This message is returned\n//     when provisioned throughput is exceeded is on a provisioned GSI.\n//\n//   - Throttling Error: Code: ThrottlingError Messages: Throughput exceeds\n//     the current capacity of your table or index. DynamoDB is automatically\n//     scaling your table or index so please try again shortly. If exceptions\n//     persist, check if you have a hot key: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html.\n//     This message is returned when writes get throttled on an On-Demand table\n//     as DynamoDB is automatically scaling the table. Throughput exceeds the\n//     current capacity for one or more global secondary indexes. DynamoDB is\n//     automatically scaling your index so please try again shortly. This message\n//     is returned when writes get throttled on an On-Demand GSI as DynamoDB\n//     is automatically scaling the GSI.\n//\n//   - Validation Error: Code: ValidationError Messages: One or more parameter\n//     values were invalid. The update expression attempted to update the secondary\n//     index key beyond allowed size limits. The update expression attempted\n//     to update the secondary index key to unsupported type. An operand in the\n//     update expression has an incorrect data type. Item size to update has\n//     exceeded the maximum allowed size. Number overflow. Attempting to store\n//     a number with magnitude larger than supported range. Type mismatch for\n//     attribute to update. Nesting Levels have exceeded supported limits. The\n//     document path provided in the update expression is invalid for update.\n//     The provided expression refers to an attribute that does not exist in\n//     the item.\n//\n//   - TransactionInProgressException\n//     The transaction with the given request token is already in progress.\n//\n//     Recommended Settings\n//\n//     This is a general recommendation for handling the TransactionInProgressException.\n//     These settings help ensure that the client retries will trigger completion\n//     of the ongoing TransactWriteItems request.\n//\n//   - Set clientExecutionTimeout to a value that allows at least one retry\n//     to be processed after 5 seconds have elapsed since the first attempt for\n//     the TransactWriteItems operation.\n//\n//   - Set socketTimeout to a value a little lower than the requestTimeout\n//     setting.\n//\n//   - requestTimeout should be set based on the time taken for the individual\n//     retries of a single HTTP request for your use case, but setting it to\n//     1 second or higher should work well to reduce chances of retries and TransactionInProgressException\n//     errors.\n//\n//   - Use exponential backoff when retrying and tune backoff if needed.\n//\n//     Assuming default retry policy (https://github.com/aws/aws-sdk-java/blob/fd409dee8ae23fb8953e0bb4dbde65536a7e0514/aws-java-sdk-core/src/main/java/com/amazonaws/retry/PredefinedRetryPolicies.java#L97),\n//     example timeout settings based on the guidelines above are as follows:\n//\n//     Example timeline:\n//\n//   - 0-1000 first attempt\n//\n//   - 1000-1500 first sleep/delay (default retry policy uses 500 ms as base\n//     delay for 4xx errors)\n//\n//   - 1500-2500 second attempt\n//\n//   - 2500-3500 second sleep/delay (500 * 2, exponential backoff)\n//\n//   - 3500-4500 third attempt\n//\n//   - 4500-6500 third sleep/delay (500 * 2^2)\n//\n//   - 6500-7500 fourth attempt (this can trigger inline recovery since 5 seconds\n//     have elapsed since the first attempt reached TC)\n//\n//   - IdempotentParameterMismatchException\n//     DynamoDB rejected the request because you retried a request with a different\n//     payload but with an idempotent token that was already used.\n//\n//   - ProvisionedThroughputExceededException\n//     Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n//     automatically retry requests that receive this exception. Your request is\n//     eventually successful, unless your retry queue is too large to finish. Reduce\n//     the frequency of requests and use exponential backoff. For more information,\n//     go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n//     in the Amazon DynamoDB Developer Guide.\n//\n//   - RequestLimitExceeded\n//     Throughput exceeds the current throughput quota for your account. Please\n//     contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n//     a quota increase.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/TransactWriteItems\nfunc (c *DynamoDB) TransactWriteItems(input *TransactWriteItemsInput) (*TransactWriteItemsOutput, error) {\n\treq, out := c.TransactWriteItemsRequest(input)\n\treturn out, req.Send()\n}\n\n// TransactWriteItemsWithContext is the same as TransactWriteItems with the addition of\n// the ability to pass a context and additional request options.\n//\n// See TransactWriteItems for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) TransactWriteItemsWithContext(ctx aws.Context, input *TransactWriteItemsInput, opts ...request.Option) (*TransactWriteItemsOutput, error) {\n\treq, out := c.TransactWriteItemsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUntagResource = \"UntagResource\"\n\n// UntagResourceRequest generates a \"aws/request.Request\" representing the\n// client's request for the UntagResource operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UntagResource for more information on using the UntagResource\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UntagResourceRequest method.\n//\treq, resp := client.UntagResourceRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UntagResource\nfunc (c *DynamoDB) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {\n\top := &request.Operation{\n\t\tName:       opUntagResource,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UntagResourceInput{}\n\t}\n\n\toutput = &UntagResourceOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// UntagResource API operation for Amazon DynamoDB.\n//\n// Removes the association of tags from an Amazon DynamoDB resource. You can\n// call UntagResource up to five times per second, per account.\n//\n// For an overview on tagging DynamoDB resources, see Tagging for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)\n// in the Amazon DynamoDB Developer Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation UntagResource for usage and error information.\n//\n// Returned Error Types:\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - ResourceInUseException\n//     The operation conflicts with the resource's availability. For example, you\n//     attempted to recreate an existing table, or tried to delete a table currently\n//     in the CREATING state.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UntagResource\nfunc (c *DynamoDB) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {\n\treq, out := c.UntagResourceRequest(input)\n\treturn out, req.Send()\n}\n\n// UntagResourceWithContext is the same as UntagResource with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UntagResource for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) {\n\treq, out := c.UntagResourceRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateContinuousBackups = \"UpdateContinuousBackups\"\n\n// UpdateContinuousBackupsRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateContinuousBackups operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateContinuousBackups for more information on using the UpdateContinuousBackups\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateContinuousBackupsRequest method.\n//\treq, resp := client.UpdateContinuousBackupsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateContinuousBackups\nfunc (c *DynamoDB) UpdateContinuousBackupsRequest(input *UpdateContinuousBackupsInput) (req *request.Request, output *UpdateContinuousBackupsOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateContinuousBackups,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateContinuousBackupsInput{}\n\t}\n\n\toutput = &UpdateContinuousBackupsOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// UpdateContinuousBackups API operation for Amazon DynamoDB.\n//\n// UpdateContinuousBackups enables or disables point in time recovery for the\n// specified table. A successful UpdateContinuousBackups call returns the current\n// ContinuousBackupsDescription. Continuous backups are ENABLED on all tables\n// at table creation. If point in time recovery is enabled, PointInTimeRecoveryStatus\n// will be set to ENABLED.\n//\n// Once continuous backups and point in time recovery are enabled, you can restore\n// to any point in time within EarliestRestorableDateTime and LatestRestorableDateTime.\n//\n// LatestRestorableDateTime is typically 5 minutes before the current time.\n// You can restore your table to any point in time during the last 35 days.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation UpdateContinuousBackups for usage and error information.\n//\n// Returned Error Types:\n//\n//   - TableNotFoundException\n//     A source table with the name TableName does not currently exist within the\n//     subscriber's account or the subscriber is operating in the wrong Amazon Web\n//     Services Region.\n//\n//   - ContinuousBackupsUnavailableException\n//     Backups have not yet been enabled for this table.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateContinuousBackups\nfunc (c *DynamoDB) UpdateContinuousBackups(input *UpdateContinuousBackupsInput) (*UpdateContinuousBackupsOutput, error) {\n\treq, out := c.UpdateContinuousBackupsRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateContinuousBackupsWithContext is the same as UpdateContinuousBackups with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateContinuousBackups for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) UpdateContinuousBackupsWithContext(ctx aws.Context, input *UpdateContinuousBackupsInput, opts ...request.Option) (*UpdateContinuousBackupsOutput, error) {\n\treq, out := c.UpdateContinuousBackupsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateContributorInsights = \"UpdateContributorInsights\"\n\n// UpdateContributorInsightsRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateContributorInsights operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateContributorInsights for more information on using the UpdateContributorInsights\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateContributorInsightsRequest method.\n//\treq, resp := client.UpdateContributorInsightsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateContributorInsights\nfunc (c *DynamoDB) UpdateContributorInsightsRequest(input *UpdateContributorInsightsInput) (req *request.Request, output *UpdateContributorInsightsOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateContributorInsights,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateContributorInsightsInput{}\n\t}\n\n\toutput = &UpdateContributorInsightsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// UpdateContributorInsights API operation for Amazon DynamoDB.\n//\n// Updates the status for contributor insights for a specific table or index.\n// CloudWatch Contributor Insights for DynamoDB graphs display the partition\n// key and (if applicable) sort key of frequently accessed items and frequently\n// throttled items in plaintext. If you require the use of Amazon Web Services\n// Key Management Service (KMS) to encrypt this table’s partition key and\n// sort key data with an Amazon Web Services managed key or customer managed\n// key, you should not enable CloudWatch Contributor Insights for DynamoDB for\n// this table.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation UpdateContributorInsights for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateContributorInsights\nfunc (c *DynamoDB) UpdateContributorInsights(input *UpdateContributorInsightsInput) (*UpdateContributorInsightsOutput, error) {\n\treq, out := c.UpdateContributorInsightsRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateContributorInsightsWithContext is the same as UpdateContributorInsights with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateContributorInsights for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) UpdateContributorInsightsWithContext(ctx aws.Context, input *UpdateContributorInsightsInput, opts ...request.Option) (*UpdateContributorInsightsOutput, error) {\n\treq, out := c.UpdateContributorInsightsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateGlobalTable = \"UpdateGlobalTable\"\n\n// UpdateGlobalTableRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateGlobalTable operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateGlobalTable for more information on using the UpdateGlobalTable\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateGlobalTableRequest method.\n//\treq, resp := client.UpdateGlobalTableRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateGlobalTable\nfunc (c *DynamoDB) UpdateGlobalTableRequest(input *UpdateGlobalTableInput) (req *request.Request, output *UpdateGlobalTableOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateGlobalTable,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateGlobalTableInput{}\n\t}\n\n\toutput = &UpdateGlobalTableOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// UpdateGlobalTable API operation for Amazon DynamoDB.\n//\n// Adds or removes replicas in the specified global table. The global table\n// must already exist to be able to use this operation. Any replica to be added\n// must be empty, have the same name as the global table, have the same key\n// schema, have DynamoDB Streams enabled, and have the same provisioned and\n// maximum write capacity units.\n//\n// This operation only applies to Version 2017.11.29 (Legacy) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V1.html)\n// of global tables. We recommend using Version 2019.11.21 (Current) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)\n// when creating new global tables, as it provides greater flexibility, higher\n// efficiency and consumes less write capacity than 2017.11.29 (Legacy). To\n// determine which version you are using, see Determining the version (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.DetermineVersion.html).\n// To update existing global tables from version 2017.11.29 (Legacy) to version\n// 2019.11.21 (Current), see Updating global tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/V2globaltables_upgrade.html).\n//\n// This operation only applies to Version 2017.11.29 (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V1.html)\n// of global tables. If you are using global tables Version 2019.11.21 (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)\n// you can use DescribeTable (https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html)\n// instead.\n//\n// Although you can use UpdateGlobalTable to add replicas and remove replicas\n// in a single request, for simplicity we recommend that you issue separate\n// requests for adding or removing replicas.\n//\n// If global secondary indexes are specified, then the following conditions\n// must also be met:\n//\n//   - The global secondary indexes must have the same name.\n//\n//   - The global secondary indexes must have the same hash key and sort key\n//     (if present).\n//\n//   - The global secondary indexes must have the same provisioned and maximum\n//     write capacity units.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation UpdateGlobalTable for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - GlobalTableNotFoundException\n//     The specified global table does not exist.\n//\n//   - ReplicaAlreadyExistsException\n//     The specified replica is already part of the global table.\n//\n//   - ReplicaNotFoundException\n//     The specified replica is no longer part of the global table.\n//\n//   - TableNotFoundException\n//     A source table with the name TableName does not currently exist within the\n//     subscriber's account or the subscriber is operating in the wrong Amazon Web\n//     Services Region.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateGlobalTable\nfunc (c *DynamoDB) UpdateGlobalTable(input *UpdateGlobalTableInput) (*UpdateGlobalTableOutput, error) {\n\treq, out := c.UpdateGlobalTableRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateGlobalTableWithContext is the same as UpdateGlobalTable with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateGlobalTable for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) UpdateGlobalTableWithContext(ctx aws.Context, input *UpdateGlobalTableInput, opts ...request.Option) (*UpdateGlobalTableOutput, error) {\n\treq, out := c.UpdateGlobalTableRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateGlobalTableSettings = \"UpdateGlobalTableSettings\"\n\n// UpdateGlobalTableSettingsRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateGlobalTableSettings operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateGlobalTableSettings for more information on using the UpdateGlobalTableSettings\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateGlobalTableSettingsRequest method.\n//\treq, resp := client.UpdateGlobalTableSettingsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateGlobalTableSettings\nfunc (c *DynamoDB) UpdateGlobalTableSettingsRequest(input *UpdateGlobalTableSettingsInput) (req *request.Request, output *UpdateGlobalTableSettingsOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateGlobalTableSettings,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateGlobalTableSettingsInput{}\n\t}\n\n\toutput = &UpdateGlobalTableSettingsOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// UpdateGlobalTableSettings API operation for Amazon DynamoDB.\n//\n// Updates settings for a global table.\n//\n// This operation only applies to Version 2017.11.29 (Legacy) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V1.html)\n// of global tables. We recommend using Version 2019.11.21 (Current) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)\n// when creating new global tables, as it provides greater flexibility, higher\n// efficiency and consumes less write capacity than 2017.11.29 (Legacy). To\n// determine which version you are using, see Determining the version (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.DetermineVersion.html).\n// To update existing global tables from version 2017.11.29 (Legacy) to version\n// 2019.11.21 (Current), see Updating global tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/V2globaltables_upgrade.html).\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation UpdateGlobalTableSettings for usage and error information.\n//\n// Returned Error Types:\n//\n//   - GlobalTableNotFoundException\n//     The specified global table does not exist.\n//\n//   - ReplicaNotFoundException\n//     The specified replica is no longer part of the global table.\n//\n//   - IndexNotFoundException\n//     The operation tried to access a nonexistent index.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - ResourceInUseException\n//     The operation conflicts with the resource's availability. For example, you\n//     attempted to recreate an existing table, or tried to delete a table currently\n//     in the CREATING state.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateGlobalTableSettings\nfunc (c *DynamoDB) UpdateGlobalTableSettings(input *UpdateGlobalTableSettingsInput) (*UpdateGlobalTableSettingsOutput, error) {\n\treq, out := c.UpdateGlobalTableSettingsRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateGlobalTableSettingsWithContext is the same as UpdateGlobalTableSettings with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateGlobalTableSettings for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) UpdateGlobalTableSettingsWithContext(ctx aws.Context, input *UpdateGlobalTableSettingsInput, opts ...request.Option) (*UpdateGlobalTableSettingsOutput, error) {\n\treq, out := c.UpdateGlobalTableSettingsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateItem = \"UpdateItem\"\n\n// UpdateItemRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateItem operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateItem for more information on using the UpdateItem\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateItemRequest method.\n//\treq, resp := client.UpdateItemRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateItem\nfunc (c *DynamoDB) UpdateItemRequest(input *UpdateItemInput) (req *request.Request, output *UpdateItemOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateItem,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateItemInput{}\n\t}\n\n\toutput = &UpdateItemOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// UpdateItem API operation for Amazon DynamoDB.\n//\n// Edits an existing item's attributes, or adds a new item to the table if it\n// does not already exist. You can put, delete, or add attribute values. You\n// can also perform a conditional update on an existing item (insert a new attribute\n// name-value pair if it doesn't exist, or replace an existing name-value pair\n// if it has certain expected attribute values).\n//\n// You can also return the item's attribute values in the same UpdateItem operation\n// using the ReturnValues parameter.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation UpdateItem for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ConditionalCheckFailedException\n//     A condition specified in the operation could not be evaluated.\n//\n//   - ProvisionedThroughputExceededException\n//     Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n//     automatically retry requests that receive this exception. Your request is\n//     eventually successful, unless your retry queue is too large to finish. Reduce\n//     the frequency of requests and use exponential backoff. For more information,\n//     go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n//     in the Amazon DynamoDB Developer Guide.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - ItemCollectionSizeLimitExceededException\n//     An item collection is too large. This exception is only returned for tables\n//     that have one or more local secondary indexes.\n//\n//   - TransactionConflictException\n//     Operation was rejected because there is an ongoing transaction for the item.\n//\n//   - RequestLimitExceeded\n//     Throughput exceeds the current throughput quota for your account. Please\n//     contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n//     a quota increase.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateItem\nfunc (c *DynamoDB) UpdateItem(input *UpdateItemInput) (*UpdateItemOutput, error) {\n\treq, out := c.UpdateItemRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateItemWithContext is the same as UpdateItem with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateItem for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) UpdateItemWithContext(ctx aws.Context, input *UpdateItemInput, opts ...request.Option) (*UpdateItemOutput, error) {\n\treq, out := c.UpdateItemRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateTable = \"UpdateTable\"\n\n// UpdateTableRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateTable operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateTable for more information on using the UpdateTable\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateTableRequest method.\n//\treq, resp := client.UpdateTableRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTable\nfunc (c *DynamoDB) UpdateTableRequest(input *UpdateTableInput) (req *request.Request, output *UpdateTableOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateTable,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateTableInput{}\n\t}\n\n\toutput = &UpdateTableOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// UpdateTable API operation for Amazon DynamoDB.\n//\n// Modifies the provisioned throughput settings, global secondary indexes, or\n// DynamoDB Streams settings for a given table.\n//\n// This operation only applies to Version 2019.11.21 (Current) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)\n// of global tables.\n//\n// You can only perform one of the following operations at once:\n//\n//   - Modify the provisioned throughput settings of the table.\n//\n//   - Remove a global secondary index from the table.\n//\n//   - Create a new global secondary index on the table. After the index begins\n//     backfilling, you can use UpdateTable to perform other operations.\n//\n// UpdateTable is an asynchronous operation; while it is executing, the table\n// status changes from ACTIVE to UPDATING. While it is UPDATING, you cannot\n// issue another UpdateTable request. When the table returns to the ACTIVE state,\n// the UpdateTable operation is complete.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation UpdateTable for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceInUseException\n//     The operation conflicts with the resource's availability. For example, you\n//     attempted to recreate an existing table, or tried to delete a table currently\n//     in the CREATING state.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTable\nfunc (c *DynamoDB) UpdateTable(input *UpdateTableInput) (*UpdateTableOutput, error) {\n\treq, out := c.UpdateTableRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateTableWithContext is the same as UpdateTable with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateTable for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) UpdateTableWithContext(ctx aws.Context, input *UpdateTableInput, opts ...request.Option) (*UpdateTableOutput, error) {\n\treq, out := c.UpdateTableRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateTableReplicaAutoScaling = \"UpdateTableReplicaAutoScaling\"\n\n// UpdateTableReplicaAutoScalingRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateTableReplicaAutoScaling operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateTableReplicaAutoScaling for more information on using the UpdateTableReplicaAutoScaling\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateTableReplicaAutoScalingRequest method.\n//\treq, resp := client.UpdateTableReplicaAutoScalingRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTableReplicaAutoScaling\nfunc (c *DynamoDB) UpdateTableReplicaAutoScalingRequest(input *UpdateTableReplicaAutoScalingInput) (req *request.Request, output *UpdateTableReplicaAutoScalingOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateTableReplicaAutoScaling,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateTableReplicaAutoScalingInput{}\n\t}\n\n\toutput = &UpdateTableReplicaAutoScalingOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// UpdateTableReplicaAutoScaling API operation for Amazon DynamoDB.\n//\n// Updates auto scaling settings on your global tables at once.\n//\n// This operation only applies to Version 2019.11.21 (Current) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)\n// of global tables.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation UpdateTableReplicaAutoScaling for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - ResourceInUseException\n//     The operation conflicts with the resource's availability. For example, you\n//     attempted to recreate an existing table, or tried to delete a table currently\n//     in the CREATING state.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTableReplicaAutoScaling\nfunc (c *DynamoDB) UpdateTableReplicaAutoScaling(input *UpdateTableReplicaAutoScalingInput) (*UpdateTableReplicaAutoScalingOutput, error) {\n\treq, out := c.UpdateTableReplicaAutoScalingRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateTableReplicaAutoScalingWithContext is the same as UpdateTableReplicaAutoScaling with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateTableReplicaAutoScaling for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) UpdateTableReplicaAutoScalingWithContext(ctx aws.Context, input *UpdateTableReplicaAutoScalingInput, opts ...request.Option) (*UpdateTableReplicaAutoScalingOutput, error) {\n\treq, out := c.UpdateTableReplicaAutoScalingRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateTimeToLive = \"UpdateTimeToLive\"\n\n// UpdateTimeToLiveRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateTimeToLive operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateTimeToLive for more information on using the UpdateTimeToLive\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateTimeToLiveRequest method.\n//\treq, resp := client.UpdateTimeToLiveRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTimeToLive\nfunc (c *DynamoDB) UpdateTimeToLiveRequest(input *UpdateTimeToLiveInput) (req *request.Request, output *UpdateTimeToLiveOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateTimeToLive,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateTimeToLiveInput{}\n\t}\n\n\toutput = &UpdateTimeToLiveOutput{}\n\treq = c.newRequest(op, input, output)\n\t// if custom endpoint for the request is set to a non empty string,\n\t// we skip the endpoint discovery workflow.\n\tif req.Config.Endpoint == nil || *req.Config.Endpoint == \"\" {\n\t\tif aws.BoolValue(req.Config.EnableEndpointDiscovery) {\n\t\t\tde := discovererDescribeEndpoints{\n\t\t\t\tRequired:      false,\n\t\t\t\tEndpointCache: c.endpointCache,\n\t\t\t\tParams: map[string]*string{\n\t\t\t\t\t\"op\": aws.String(req.Operation.Name),\n\t\t\t\t},\n\t\t\t\tClient: c,\n\t\t\t}\n\n\t\t\tfor k, v := range de.Params {\n\t\t\t\tif v == nil {\n\t\t\t\t\tdelete(de.Params, k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treq.Handlers.Build.PushFrontNamed(request.NamedHandler{\n\t\t\t\tName: \"crr.endpointdiscovery\",\n\t\t\t\tFn:   de.Handler,\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// UpdateTimeToLive API operation for Amazon DynamoDB.\n//\n// The UpdateTimeToLive method enables or disables Time to Live (TTL) for the\n// specified table. A successful UpdateTimeToLive call returns the current TimeToLiveSpecification.\n// It can take up to one hour for the change to fully process. Any additional\n// UpdateTimeToLive calls for the same table during this one hour duration result\n// in a ValidationException.\n//\n// TTL compares the current time in epoch time format to the time stored in\n// the TTL attribute of an item. If the epoch time value stored in the attribute\n// is less than the current time, the item is marked as expired and subsequently\n// deleted.\n//\n// The epoch time format is the number of seconds elapsed since 12:00:00 AM\n// January 1, 1970 UTC.\n//\n// DynamoDB deletes expired items on a best-effort basis to ensure availability\n// of throughput for other data operations.\n//\n// DynamoDB typically deletes expired items within two days of expiration. The\n// exact duration within which an item gets deleted after expiration is specific\n// to the nature of the workload. Items that have expired and not been deleted\n// will still show up in reads, queries, and scans.\n//\n// As items are deleted, they are removed from any local secondary index and\n// global secondary index immediately in the same eventually consistent way\n// as a standard delete operation.\n//\n// For more information, see Time To Live (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/TTL.html)\n// in the Amazon DynamoDB Developer Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon DynamoDB's\n// API operation UpdateTimeToLive for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceInUseException\n//     The operation conflicts with the resource's availability. For example, you\n//     attempted to recreate an existing table, or tried to delete a table currently\n//     in the CREATING state.\n//\n//   - ResourceNotFoundException\n//     The operation tried to access a nonexistent table or index. The resource\n//     might not be specified correctly, or its status might not be ACTIVE.\n//\n//   - LimitExceededException\n//     There is no limit to the number of daily on-demand backups that can be taken.\n//\n//     For most purposes, up to 500 simultaneous table operations are allowed per\n//     account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n//     RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n//     When you are creating a table with one or more secondary indexes, you can\n//     have up to 250 such requests running at a time. However, if the table or\n//     index specifications are complex, then DynamoDB might temporarily reduce\n//     the number of concurrent operations.\n//\n//     When importing into DynamoDB, up to 50 simultaneous import table operations\n//     are allowed per account.\n//\n//     There is a soft account quota of 2,500 tables.\n//\n//     GetRecords was called with a value of more than 1000 for the limit request\n//     parameter.\n//\n//     More than 2 processes are reading from the same streams shard at the same\n//     time. Exceeding this limit may result in request throttling.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/UpdateTimeToLive\nfunc (c *DynamoDB) UpdateTimeToLive(input *UpdateTimeToLiveInput) (*UpdateTimeToLiveOutput, error) {\n\treq, out := c.UpdateTimeToLiveRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateTimeToLiveWithContext is the same as UpdateTimeToLive with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateTimeToLive for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) UpdateTimeToLiveWithContext(ctx aws.Context, input *UpdateTimeToLiveInput, opts ...request.Option) (*UpdateTimeToLiveOutput, error) {\n\treq, out := c.UpdateTimeToLiveRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// Contains details of a table archival operation.\ntype ArchivalSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) of the backup the table was archived to, when\n\t// applicable in the archival reason. If you wish to restore this backup to\n\t// the same table name, you will need to delete the original table.\n\tArchivalBackupArn *string `min:\"37\" type:\"string\"`\n\n\t// The date and time when table archival was initiated by DynamoDB, in UNIX\n\t// epoch time format.\n\tArchivalDateTime *time.Time `type:\"timestamp\"`\n\n\t// The reason DynamoDB archived the table. Currently, the only possible value\n\t// is:\n\t//\n\t//    * INACCESSIBLE_ENCRYPTION_CREDENTIALS - The table was archived due to\n\t//    the table's KMS key being inaccessible for more than seven days. An On-Demand\n\t//    backup was created at the archival time.\n\tArchivalReason *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ArchivalSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ArchivalSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetArchivalBackupArn sets the ArchivalBackupArn field's value.\nfunc (s *ArchivalSummary) SetArchivalBackupArn(v string) *ArchivalSummary {\n\ts.ArchivalBackupArn = &v\n\treturn s\n}\n\n// SetArchivalDateTime sets the ArchivalDateTime field's value.\nfunc (s *ArchivalSummary) SetArchivalDateTime(v time.Time) *ArchivalSummary {\n\ts.ArchivalDateTime = &v\n\treturn s\n}\n\n// SetArchivalReason sets the ArchivalReason field's value.\nfunc (s *ArchivalSummary) SetArchivalReason(v string) *ArchivalSummary {\n\ts.ArchivalReason = &v\n\treturn s\n}\n\n// Represents an attribute for describing the key schema for the table and indexes.\ntype AttributeDefinition struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A name for the attribute.\n\t//\n\t// AttributeName is a required field\n\tAttributeName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The data type for the attribute, where:\n\t//\n\t//    * S - the attribute is of type String\n\t//\n\t//    * N - the attribute is of type Number\n\t//\n\t//    * B - the attribute is of type Binary\n\t//\n\t// AttributeType is a required field\n\tAttributeType *string `type:\"string\" required:\"true\" enum:\"ScalarAttributeType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AttributeDefinition) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AttributeDefinition) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AttributeDefinition) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AttributeDefinition\"}\n\tif s.AttributeName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AttributeName\"))\n\t}\n\tif s.AttributeName != nil && len(*s.AttributeName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AttributeName\", 1))\n\t}\n\tif s.AttributeType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AttributeType\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttributeName sets the AttributeName field's value.\nfunc (s *AttributeDefinition) SetAttributeName(v string) *AttributeDefinition {\n\ts.AttributeName = &v\n\treturn s\n}\n\n// SetAttributeType sets the AttributeType field's value.\nfunc (s *AttributeDefinition) SetAttributeType(v string) *AttributeDefinition {\n\ts.AttributeType = &v\n\treturn s\n}\n\n// Represents the data for an attribute.\n//\n// Each attribute value is described as a name-value pair. The name is the data\n// type, and the value is the data itself.\n//\n// For more information, see Data Types (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes)\n// in the Amazon DynamoDB Developer Guide.\ntype AttributeValue struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// An attribute of type Binary. For example:\n\t//\n\t// \"B\": \"dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk\"\n\t// B is automatically base64 encoded/decoded by the SDK.\n\tB []byte `type:\"blob\"`\n\n\t// An attribute of type Boolean. For example:\n\t//\n\t// \"BOOL\": true\n\tBOOL *bool `type:\"boolean\"`\n\n\t// An attribute of type Binary Set. For example:\n\t//\n\t// \"BS\": [\"U3Vubnk=\", \"UmFpbnk=\", \"U25vd3k=\"]\n\tBS [][]byte `type:\"list\"`\n\n\t// An attribute of type List. For example:\n\t//\n\t// \"L\": [ {\"S\": \"Cookies\"} , {\"S\": \"Coffee\"}, {\"N\": \"3.14159\"}]\n\tL []*AttributeValue `type:\"list\"`\n\n\t// An attribute of type Map. For example:\n\t//\n\t// \"M\": {\"Name\": {\"S\": \"Joe\"}, \"Age\": {\"N\": \"35\"}}\n\tM map[string]*AttributeValue `type:\"map\"`\n\n\t// An attribute of type Number. For example:\n\t//\n\t// \"N\": \"123.45\"\n\t//\n\t// Numbers are sent across the network to DynamoDB as strings, to maximize compatibility\n\t// across languages and libraries. However, DynamoDB treats them as number type\n\t// attributes for mathematical operations.\n\tN *string `type:\"string\"`\n\n\t// An attribute of type Number Set. For example:\n\t//\n\t// \"NS\": [\"42.2\", \"-19\", \"7.5\", \"3.14\"]\n\t//\n\t// Numbers are sent across the network to DynamoDB as strings, to maximize compatibility\n\t// across languages and libraries. However, DynamoDB treats them as number type\n\t// attributes for mathematical operations.\n\tNS []*string `type:\"list\"`\n\n\t// An attribute of type Null. For example:\n\t//\n\t// \"NULL\": true\n\tNULL *bool `type:\"boolean\"`\n\n\t// An attribute of type String. For example:\n\t//\n\t// \"S\": \"Hello\"\n\tS *string `type:\"string\"`\n\n\t// An attribute of type String Set. For example:\n\t//\n\t// \"SS\": [\"Giraffe\", \"Hippo\" ,\"Zebra\"]\n\tSS []*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AttributeValue) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AttributeValue) GoString() string {\n\treturn s.String()\n}\n\n// SetB sets the B field's value.\nfunc (s *AttributeValue) SetB(v []byte) *AttributeValue {\n\ts.B = v\n\treturn s\n}\n\n// SetBOOL sets the BOOL field's value.\nfunc (s *AttributeValue) SetBOOL(v bool) *AttributeValue {\n\ts.BOOL = &v\n\treturn s\n}\n\n// SetBS sets the BS field's value.\nfunc (s *AttributeValue) SetBS(v [][]byte) *AttributeValue {\n\ts.BS = v\n\treturn s\n}\n\n// SetL sets the L field's value.\nfunc (s *AttributeValue) SetL(v []*AttributeValue) *AttributeValue {\n\ts.L = v\n\treturn s\n}\n\n// SetM sets the M field's value.\nfunc (s *AttributeValue) SetM(v map[string]*AttributeValue) *AttributeValue {\n\ts.M = v\n\treturn s\n}\n\n// SetN sets the N field's value.\nfunc (s *AttributeValue) SetN(v string) *AttributeValue {\n\ts.N = &v\n\treturn s\n}\n\n// SetNS sets the NS field's value.\nfunc (s *AttributeValue) SetNS(v []*string) *AttributeValue {\n\ts.NS = v\n\treturn s\n}\n\n// SetNULL sets the NULL field's value.\nfunc (s *AttributeValue) SetNULL(v bool) *AttributeValue {\n\ts.NULL = &v\n\treturn s\n}\n\n// SetS sets the S field's value.\nfunc (s *AttributeValue) SetS(v string) *AttributeValue {\n\ts.S = &v\n\treturn s\n}\n\n// SetSS sets the SS field's value.\nfunc (s *AttributeValue) SetSS(v []*string) *AttributeValue {\n\ts.SS = v\n\treturn s\n}\n\n// For the UpdateItem operation, represents the attributes to be modified, the\n// action to perform on each, and the new value for each.\n//\n// You cannot use UpdateItem to update any primary key attributes. Instead,\n// you will need to delete the item, and then use PutItem to create a new item\n// with new attributes.\n//\n// Attribute values cannot be null; string and binary type attributes must have\n// lengths greater than zero; and set type attributes must not be empty. Requests\n// with empty values will be rejected with a ValidationException exception.\ntype AttributeValueUpdate struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Specifies how to perform the update. Valid values are PUT (default), DELETE,\n\t// and ADD. The behavior depends on whether the specified primary key already\n\t// exists in the table.\n\t//\n\t// If an item with the specified Key is found in the table:\n\t//\n\t//    * PUT - Adds the specified attribute to the item. If the attribute already\n\t//    exists, it is replaced by the new value.\n\t//\n\t//    * DELETE - If no value is specified, the attribute and its value are removed\n\t//    from the item. The data type of the specified value must match the existing\n\t//    value's data type. If a set of values is specified, then those values\n\t//    are subtracted from the old set. For example, if the attribute value was\n\t//    the set [a,b,c] and the DELETE action specified [a,c], then the final\n\t//    attribute value would be [b]. Specifying an empty set is an error.\n\t//\n\t//    * ADD - If the attribute does not already exist, then the attribute and\n\t//    its values are added to the item. If the attribute does exist, then the\n\t//    behavior of ADD depends on the data type of the attribute: If the existing\n\t//    attribute is a number, and if Value is also a number, then the Value is\n\t//    mathematically added to the existing attribute. If Value is a negative\n\t//    number, then it is subtracted from the existing attribute. If you use\n\t//    ADD to increment or decrement a number value for an item that doesn't\n\t//    exist before the update, DynamoDB uses 0 as the initial value. In addition,\n\t//    if you use ADD to update an existing item, and intend to increment or\n\t//    decrement an attribute value which does not yet exist, DynamoDB uses 0\n\t//    as the initial value. For example, suppose that the item you want to update\n\t//    does not yet have an attribute named itemcount, but you decide to ADD\n\t//    the number 3 to this attribute anyway, even though it currently does not\n\t//    exist. DynamoDB will create the itemcount attribute, set its initial value\n\t//    to 0, and finally add 3 to it. The result will be a new itemcount attribute\n\t//    in the item, with a value of 3. If the existing data type is a set, and\n\t//    if the Value is also a set, then the Value is added to the existing set.\n\t//    (This is a set operation, not mathematical addition.) For example, if\n\t//    the attribute value was the set [1,2], and the ADD action specified [3],\n\t//    then the final attribute value would be [1,2,3]. An error occurs if an\n\t//    Add action is specified for a set attribute and the attribute type specified\n\t//    does not match the existing set type. Both sets must have the same primitive\n\t//    data type. For example, if the existing data type is a set of strings,\n\t//    the Value must also be a set of strings. The same holds true for number\n\t//    sets and binary sets. This action is only valid for an existing attribute\n\t//    whose data type is number or is a set. Do not use ADD for any other data\n\t//    types.\n\t//\n\t// If no item with the specified Key is found:\n\t//\n\t//    * PUT - DynamoDB creates a new item with the specified primary key, and\n\t//    then adds the attribute.\n\t//\n\t//    * DELETE - Nothing happens; there is no attribute to delete.\n\t//\n\t//    * ADD - DynamoDB creates a new item with the supplied primary key and\n\t//    number (or set) for the attribute value. The only data types allowed are\n\t//    number, number set, string set or binary set.\n\tAction *string `type:\"string\" enum:\"AttributeAction\"`\n\n\t// Represents the data for an attribute.\n\t//\n\t// Each attribute value is described as a name-value pair. The name is the data\n\t// type, and the value is the data itself.\n\t//\n\t// For more information, see Data Types (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes)\n\t// in the Amazon DynamoDB Developer Guide.\n\tValue *AttributeValue `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AttributeValueUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AttributeValueUpdate) GoString() string {\n\treturn s.String()\n}\n\n// SetAction sets the Action field's value.\nfunc (s *AttributeValueUpdate) SetAction(v string) *AttributeValueUpdate {\n\ts.Action = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *AttributeValueUpdate) SetValue(v *AttributeValue) *AttributeValueUpdate {\n\ts.Value = v\n\treturn s\n}\n\n// Represents the properties of the scaling policy.\ntype AutoScalingPolicyDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the scaling policy.\n\tPolicyName *string `min:\"1\" type:\"string\"`\n\n\t// Represents a target tracking scaling policy configuration.\n\tTargetTrackingScalingPolicyConfiguration *AutoScalingTargetTrackingScalingPolicyConfigurationDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutoScalingPolicyDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutoScalingPolicyDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetPolicyName sets the PolicyName field's value.\nfunc (s *AutoScalingPolicyDescription) SetPolicyName(v string) *AutoScalingPolicyDescription {\n\ts.PolicyName = &v\n\treturn s\n}\n\n// SetTargetTrackingScalingPolicyConfiguration sets the TargetTrackingScalingPolicyConfiguration field's value.\nfunc (s *AutoScalingPolicyDescription) SetTargetTrackingScalingPolicyConfiguration(v *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) *AutoScalingPolicyDescription {\n\ts.TargetTrackingScalingPolicyConfiguration = v\n\treturn s\n}\n\n// Represents the auto scaling policy to be modified.\ntype AutoScalingPolicyUpdate struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the scaling policy.\n\tPolicyName *string `min:\"1\" type:\"string\"`\n\n\t// Represents a target tracking scaling policy configuration.\n\t//\n\t// TargetTrackingScalingPolicyConfiguration is a required field\n\tTargetTrackingScalingPolicyConfiguration *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate `type:\"structure\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutoScalingPolicyUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutoScalingPolicyUpdate) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AutoScalingPolicyUpdate) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AutoScalingPolicyUpdate\"}\n\tif s.PolicyName != nil && len(*s.PolicyName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"PolicyName\", 1))\n\t}\n\tif s.TargetTrackingScalingPolicyConfiguration == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TargetTrackingScalingPolicyConfiguration\"))\n\t}\n\tif s.TargetTrackingScalingPolicyConfiguration != nil {\n\t\tif err := s.TargetTrackingScalingPolicyConfiguration.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"TargetTrackingScalingPolicyConfiguration\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetPolicyName sets the PolicyName field's value.\nfunc (s *AutoScalingPolicyUpdate) SetPolicyName(v string) *AutoScalingPolicyUpdate {\n\ts.PolicyName = &v\n\treturn s\n}\n\n// SetTargetTrackingScalingPolicyConfiguration sets the TargetTrackingScalingPolicyConfiguration field's value.\nfunc (s *AutoScalingPolicyUpdate) SetTargetTrackingScalingPolicyConfiguration(v *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) *AutoScalingPolicyUpdate {\n\ts.TargetTrackingScalingPolicyConfiguration = v\n\treturn s\n}\n\n// Represents the auto scaling settings for a global table or global secondary\n// index.\ntype AutoScalingSettingsDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Disabled auto scaling for this global table or global secondary index.\n\tAutoScalingDisabled *bool `type:\"boolean\"`\n\n\t// Role ARN used for configuring the auto scaling policy.\n\tAutoScalingRoleArn *string `type:\"string\"`\n\n\t// The maximum capacity units that a global table or global secondary index\n\t// should be scaled up to.\n\tMaximumUnits *int64 `min:\"1\" type:\"long\"`\n\n\t// The minimum capacity units that a global table or global secondary index\n\t// should be scaled down to.\n\tMinimumUnits *int64 `min:\"1\" type:\"long\"`\n\n\t// Information about the scaling policies.\n\tScalingPolicies []*AutoScalingPolicyDescription `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutoScalingSettingsDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutoScalingSettingsDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetAutoScalingDisabled sets the AutoScalingDisabled field's value.\nfunc (s *AutoScalingSettingsDescription) SetAutoScalingDisabled(v bool) *AutoScalingSettingsDescription {\n\ts.AutoScalingDisabled = &v\n\treturn s\n}\n\n// SetAutoScalingRoleArn sets the AutoScalingRoleArn field's value.\nfunc (s *AutoScalingSettingsDescription) SetAutoScalingRoleArn(v string) *AutoScalingSettingsDescription {\n\ts.AutoScalingRoleArn = &v\n\treturn s\n}\n\n// SetMaximumUnits sets the MaximumUnits field's value.\nfunc (s *AutoScalingSettingsDescription) SetMaximumUnits(v int64) *AutoScalingSettingsDescription {\n\ts.MaximumUnits = &v\n\treturn s\n}\n\n// SetMinimumUnits sets the MinimumUnits field's value.\nfunc (s *AutoScalingSettingsDescription) SetMinimumUnits(v int64) *AutoScalingSettingsDescription {\n\ts.MinimumUnits = &v\n\treturn s\n}\n\n// SetScalingPolicies sets the ScalingPolicies field's value.\nfunc (s *AutoScalingSettingsDescription) SetScalingPolicies(v []*AutoScalingPolicyDescription) *AutoScalingSettingsDescription {\n\ts.ScalingPolicies = v\n\treturn s\n}\n\n// Represents the auto scaling settings to be modified for a global table or\n// global secondary index.\ntype AutoScalingSettingsUpdate struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Disabled auto scaling for this global table or global secondary index.\n\tAutoScalingDisabled *bool `type:\"boolean\"`\n\n\t// Role ARN used for configuring auto scaling policy.\n\tAutoScalingRoleArn *string `min:\"1\" type:\"string\"`\n\n\t// The maximum capacity units that a global table or global secondary index\n\t// should be scaled up to.\n\tMaximumUnits *int64 `min:\"1\" type:\"long\"`\n\n\t// The minimum capacity units that a global table or global secondary index\n\t// should be scaled down to.\n\tMinimumUnits *int64 `min:\"1\" type:\"long\"`\n\n\t// The scaling policy to apply for scaling target global table or global secondary\n\t// index capacity units.\n\tScalingPolicyUpdate *AutoScalingPolicyUpdate `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutoScalingSettingsUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutoScalingSettingsUpdate) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AutoScalingSettingsUpdate) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AutoScalingSettingsUpdate\"}\n\tif s.AutoScalingRoleArn != nil && len(*s.AutoScalingRoleArn) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AutoScalingRoleArn\", 1))\n\t}\n\tif s.MaximumUnits != nil && *s.MaximumUnits < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaximumUnits\", 1))\n\t}\n\tif s.MinimumUnits != nil && *s.MinimumUnits < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MinimumUnits\", 1))\n\t}\n\tif s.ScalingPolicyUpdate != nil {\n\t\tif err := s.ScalingPolicyUpdate.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ScalingPolicyUpdate\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAutoScalingDisabled sets the AutoScalingDisabled field's value.\nfunc (s *AutoScalingSettingsUpdate) SetAutoScalingDisabled(v bool) *AutoScalingSettingsUpdate {\n\ts.AutoScalingDisabled = &v\n\treturn s\n}\n\n// SetAutoScalingRoleArn sets the AutoScalingRoleArn field's value.\nfunc (s *AutoScalingSettingsUpdate) SetAutoScalingRoleArn(v string) *AutoScalingSettingsUpdate {\n\ts.AutoScalingRoleArn = &v\n\treturn s\n}\n\n// SetMaximumUnits sets the MaximumUnits field's value.\nfunc (s *AutoScalingSettingsUpdate) SetMaximumUnits(v int64) *AutoScalingSettingsUpdate {\n\ts.MaximumUnits = &v\n\treturn s\n}\n\n// SetMinimumUnits sets the MinimumUnits field's value.\nfunc (s *AutoScalingSettingsUpdate) SetMinimumUnits(v int64) *AutoScalingSettingsUpdate {\n\ts.MinimumUnits = &v\n\treturn s\n}\n\n// SetScalingPolicyUpdate sets the ScalingPolicyUpdate field's value.\nfunc (s *AutoScalingSettingsUpdate) SetScalingPolicyUpdate(v *AutoScalingPolicyUpdate) *AutoScalingSettingsUpdate {\n\ts.ScalingPolicyUpdate = v\n\treturn s\n}\n\n// Represents the properties of a target tracking scaling policy.\ntype AutoScalingTargetTrackingScalingPolicyConfigurationDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Indicates whether scale in by the target tracking policy is disabled. If\n\t// the value is true, scale in is disabled and the target tracking policy won't\n\t// remove capacity from the scalable resource. Otherwise, scale in is enabled\n\t// and the target tracking policy can remove capacity from the scalable resource.\n\t// The default value is false.\n\tDisableScaleIn *bool `type:\"boolean\"`\n\n\t// The amount of time, in seconds, after a scale in activity completes before\n\t// another scale in activity can start. The cooldown period is used to block\n\t// subsequent scale in requests until it has expired. You should scale in conservatively\n\t// to protect your application's availability. However, if another alarm triggers\n\t// a scale out policy during the cooldown period after a scale-in, application\n\t// auto scaling scales out your scalable target immediately.\n\tScaleInCooldown *int64 `type:\"integer\"`\n\n\t// The amount of time, in seconds, after a scale out activity completes before\n\t// another scale out activity can start. While the cooldown period is in effect,\n\t// the capacity that has been added by the previous scale out event that initiated\n\t// the cooldown is calculated as part of the desired capacity for the next scale\n\t// out. You should continuously (but not excessively) scale out.\n\tScaleOutCooldown *int64 `type:\"integer\"`\n\n\t// The target value for the metric. The range is 8.515920e-109 to 1.174271e+108\n\t// (Base 10) or 2e-360 to 2e360 (Base 2).\n\t//\n\t// TargetValue is a required field\n\tTargetValue *float64 `type:\"double\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutoScalingTargetTrackingScalingPolicyConfigurationDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutoScalingTargetTrackingScalingPolicyConfigurationDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetDisableScaleIn sets the DisableScaleIn field's value.\nfunc (s *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) SetDisableScaleIn(v bool) *AutoScalingTargetTrackingScalingPolicyConfigurationDescription {\n\ts.DisableScaleIn = &v\n\treturn s\n}\n\n// SetScaleInCooldown sets the ScaleInCooldown field's value.\nfunc (s *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) SetScaleInCooldown(v int64) *AutoScalingTargetTrackingScalingPolicyConfigurationDescription {\n\ts.ScaleInCooldown = &v\n\treturn s\n}\n\n// SetScaleOutCooldown sets the ScaleOutCooldown field's value.\nfunc (s *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) SetScaleOutCooldown(v int64) *AutoScalingTargetTrackingScalingPolicyConfigurationDescription {\n\ts.ScaleOutCooldown = &v\n\treturn s\n}\n\n// SetTargetValue sets the TargetValue field's value.\nfunc (s *AutoScalingTargetTrackingScalingPolicyConfigurationDescription) SetTargetValue(v float64) *AutoScalingTargetTrackingScalingPolicyConfigurationDescription {\n\ts.TargetValue = &v\n\treturn s\n}\n\n// Represents the settings of a target tracking scaling policy that will be\n// modified.\ntype AutoScalingTargetTrackingScalingPolicyConfigurationUpdate struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Indicates whether scale in by the target tracking policy is disabled. If\n\t// the value is true, scale in is disabled and the target tracking policy won't\n\t// remove capacity from the scalable resource. Otherwise, scale in is enabled\n\t// and the target tracking policy can remove capacity from the scalable resource.\n\t// The default value is false.\n\tDisableScaleIn *bool `type:\"boolean\"`\n\n\t// The amount of time, in seconds, after a scale in activity completes before\n\t// another scale in activity can start. The cooldown period is used to block\n\t// subsequent scale in requests until it has expired. You should scale in conservatively\n\t// to protect your application's availability. However, if another alarm triggers\n\t// a scale out policy during the cooldown period after a scale-in, application\n\t// auto scaling scales out your scalable target immediately.\n\tScaleInCooldown *int64 `type:\"integer\"`\n\n\t// The amount of time, in seconds, after a scale out activity completes before\n\t// another scale out activity can start. While the cooldown period is in effect,\n\t// the capacity that has been added by the previous scale out event that initiated\n\t// the cooldown is calculated as part of the desired capacity for the next scale\n\t// out. You should continuously (but not excessively) scale out.\n\tScaleOutCooldown *int64 `type:\"integer\"`\n\n\t// The target value for the metric. The range is 8.515920e-109 to 1.174271e+108\n\t// (Base 10) or 2e-360 to 2e360 (Base 2).\n\t//\n\t// TargetValue is a required field\n\tTargetValue *float64 `type:\"double\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AutoScalingTargetTrackingScalingPolicyConfigurationUpdate\"}\n\tif s.TargetValue == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TargetValue\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDisableScaleIn sets the DisableScaleIn field's value.\nfunc (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) SetDisableScaleIn(v bool) *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate {\n\ts.DisableScaleIn = &v\n\treturn s\n}\n\n// SetScaleInCooldown sets the ScaleInCooldown field's value.\nfunc (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) SetScaleInCooldown(v int64) *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate {\n\ts.ScaleInCooldown = &v\n\treturn s\n}\n\n// SetScaleOutCooldown sets the ScaleOutCooldown field's value.\nfunc (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) SetScaleOutCooldown(v int64) *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate {\n\ts.ScaleOutCooldown = &v\n\treturn s\n}\n\n// SetTargetValue sets the TargetValue field's value.\nfunc (s *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) SetTargetValue(v float64) *AutoScalingTargetTrackingScalingPolicyConfigurationUpdate {\n\ts.TargetValue = &v\n\treturn s\n}\n\n// Contains the description of the backup created for the table.\ntype BackupDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Contains the details of the backup created for the table.\n\tBackupDetails *BackupDetails `type:\"structure\"`\n\n\t// Contains the details of the table when the backup was created.\n\tSourceTableDetails *SourceTableDetails `type:\"structure\"`\n\n\t// Contains the details of the features enabled on the table when the backup\n\t// was created. For example, LSIs, GSIs, streams, TTL.\n\tSourceTableFeatureDetails *SourceTableFeatureDetails `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BackupDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BackupDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetBackupDetails sets the BackupDetails field's value.\nfunc (s *BackupDescription) SetBackupDetails(v *BackupDetails) *BackupDescription {\n\ts.BackupDetails = v\n\treturn s\n}\n\n// SetSourceTableDetails sets the SourceTableDetails field's value.\nfunc (s *BackupDescription) SetSourceTableDetails(v *SourceTableDetails) *BackupDescription {\n\ts.SourceTableDetails = v\n\treturn s\n}\n\n// SetSourceTableFeatureDetails sets the SourceTableFeatureDetails field's value.\nfunc (s *BackupDescription) SetSourceTableFeatureDetails(v *SourceTableFeatureDetails) *BackupDescription {\n\ts.SourceTableFeatureDetails = v\n\treturn s\n}\n\n// Contains the details of the backup created for the table.\ntype BackupDetails struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// ARN associated with the backup.\n\t//\n\t// BackupArn is a required field\n\tBackupArn *string `min:\"37\" type:\"string\" required:\"true\"`\n\n\t// Time at which the backup was created. This is the request time of the backup.\n\t//\n\t// BackupCreationDateTime is a required field\n\tBackupCreationDateTime *time.Time `type:\"timestamp\" required:\"true\"`\n\n\t// Time at which the automatic on-demand backup created by DynamoDB will expire.\n\t// This SYSTEM on-demand backup expires automatically 35 days after its creation.\n\tBackupExpiryDateTime *time.Time `type:\"timestamp\"`\n\n\t// Name of the requested backup.\n\t//\n\t// BackupName is a required field\n\tBackupName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// Size of the backup in bytes. DynamoDB updates this value approximately every\n\t// six hours. Recent changes might not be reflected in this value.\n\tBackupSizeBytes *int64 `type:\"long\"`\n\n\t// Backup can be in one of the following states: CREATING, ACTIVE, DELETED.\n\t//\n\t// BackupStatus is a required field\n\tBackupStatus *string `type:\"string\" required:\"true\" enum:\"BackupStatus\"`\n\n\t// BackupType:\n\t//\n\t//    * USER - You create and manage these using the on-demand backup feature.\n\t//\n\t//    * SYSTEM - If you delete a table with point-in-time recovery enabled,\n\t//    a SYSTEM backup is automatically created and is retained for 35 days (at\n\t//    no additional cost). System backups allow you to restore the deleted table\n\t//    to the state it was in just before the point of deletion.\n\t//\n\t//    * AWS_BACKUP - On-demand backup created by you from Backup service.\n\t//\n\t// BackupType is a required field\n\tBackupType *string `type:\"string\" required:\"true\" enum:\"BackupType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BackupDetails) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BackupDetails) GoString() string {\n\treturn s.String()\n}\n\n// SetBackupArn sets the BackupArn field's value.\nfunc (s *BackupDetails) SetBackupArn(v string) *BackupDetails {\n\ts.BackupArn = &v\n\treturn s\n}\n\n// SetBackupCreationDateTime sets the BackupCreationDateTime field's value.\nfunc (s *BackupDetails) SetBackupCreationDateTime(v time.Time) *BackupDetails {\n\ts.BackupCreationDateTime = &v\n\treturn s\n}\n\n// SetBackupExpiryDateTime sets the BackupExpiryDateTime field's value.\nfunc (s *BackupDetails) SetBackupExpiryDateTime(v time.Time) *BackupDetails {\n\ts.BackupExpiryDateTime = &v\n\treturn s\n}\n\n// SetBackupName sets the BackupName field's value.\nfunc (s *BackupDetails) SetBackupName(v string) *BackupDetails {\n\ts.BackupName = &v\n\treturn s\n}\n\n// SetBackupSizeBytes sets the BackupSizeBytes field's value.\nfunc (s *BackupDetails) SetBackupSizeBytes(v int64) *BackupDetails {\n\ts.BackupSizeBytes = &v\n\treturn s\n}\n\n// SetBackupStatus sets the BackupStatus field's value.\nfunc (s *BackupDetails) SetBackupStatus(v string) *BackupDetails {\n\ts.BackupStatus = &v\n\treturn s\n}\n\n// SetBackupType sets the BackupType field's value.\nfunc (s *BackupDetails) SetBackupType(v string) *BackupDetails {\n\ts.BackupType = &v\n\treturn s\n}\n\n// There is another ongoing conflicting backup control plane operation on the\n// table. The backup is either being created, deleted or restored to a table.\ntype BackupInUseException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BackupInUseException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BackupInUseException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorBackupInUseException(v protocol.ResponseMetadata) error {\n\treturn &BackupInUseException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *BackupInUseException) Code() string {\n\treturn \"BackupInUseException\"\n}\n\n// Message returns the exception's message.\nfunc (s *BackupInUseException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *BackupInUseException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *BackupInUseException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *BackupInUseException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *BackupInUseException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Backup not found for the given BackupARN.\ntype BackupNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BackupNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BackupNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorBackupNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &BackupNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *BackupNotFoundException) Code() string {\n\treturn \"BackupNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *BackupNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *BackupNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *BackupNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *BackupNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *BackupNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Contains details for the backup.\ntype BackupSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// ARN associated with the backup.\n\tBackupArn *string `min:\"37\" type:\"string\"`\n\n\t// Time at which the backup was created.\n\tBackupCreationDateTime *time.Time `type:\"timestamp\"`\n\n\t// Time at which the automatic on-demand backup created by DynamoDB will expire.\n\t// This SYSTEM on-demand backup expires automatically 35 days after its creation.\n\tBackupExpiryDateTime *time.Time `type:\"timestamp\"`\n\n\t// Name of the specified backup.\n\tBackupName *string `min:\"3\" type:\"string\"`\n\n\t// Size of the backup in bytes.\n\tBackupSizeBytes *int64 `type:\"long\"`\n\n\t// Backup can be in one of the following states: CREATING, ACTIVE, DELETED.\n\tBackupStatus *string `type:\"string\" enum:\"BackupStatus\"`\n\n\t// BackupType:\n\t//\n\t//    * USER - You create and manage these using the on-demand backup feature.\n\t//\n\t//    * SYSTEM - If you delete a table with point-in-time recovery enabled,\n\t//    a SYSTEM backup is automatically created and is retained for 35 days (at\n\t//    no additional cost). System backups allow you to restore the deleted table\n\t//    to the state it was in just before the point of deletion.\n\t//\n\t//    * AWS_BACKUP - On-demand backup created by you from Backup service.\n\tBackupType *string `type:\"string\" enum:\"BackupType\"`\n\n\t// ARN associated with the table.\n\tTableArn *string `type:\"string\"`\n\n\t// Unique identifier for the table.\n\tTableId *string `type:\"string\"`\n\n\t// Name of the table.\n\tTableName *string `min:\"3\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BackupSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BackupSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetBackupArn sets the BackupArn field's value.\nfunc (s *BackupSummary) SetBackupArn(v string) *BackupSummary {\n\ts.BackupArn = &v\n\treturn s\n}\n\n// SetBackupCreationDateTime sets the BackupCreationDateTime field's value.\nfunc (s *BackupSummary) SetBackupCreationDateTime(v time.Time) *BackupSummary {\n\ts.BackupCreationDateTime = &v\n\treturn s\n}\n\n// SetBackupExpiryDateTime sets the BackupExpiryDateTime field's value.\nfunc (s *BackupSummary) SetBackupExpiryDateTime(v time.Time) *BackupSummary {\n\ts.BackupExpiryDateTime = &v\n\treturn s\n}\n\n// SetBackupName sets the BackupName field's value.\nfunc (s *BackupSummary) SetBackupName(v string) *BackupSummary {\n\ts.BackupName = &v\n\treturn s\n}\n\n// SetBackupSizeBytes sets the BackupSizeBytes field's value.\nfunc (s *BackupSummary) SetBackupSizeBytes(v int64) *BackupSummary {\n\ts.BackupSizeBytes = &v\n\treturn s\n}\n\n// SetBackupStatus sets the BackupStatus field's value.\nfunc (s *BackupSummary) SetBackupStatus(v string) *BackupSummary {\n\ts.BackupStatus = &v\n\treturn s\n}\n\n// SetBackupType sets the BackupType field's value.\nfunc (s *BackupSummary) SetBackupType(v string) *BackupSummary {\n\ts.BackupType = &v\n\treturn s\n}\n\n// SetTableArn sets the TableArn field's value.\nfunc (s *BackupSummary) SetTableArn(v string) *BackupSummary {\n\ts.TableArn = &v\n\treturn s\n}\n\n// SetTableId sets the TableId field's value.\nfunc (s *BackupSummary) SetTableId(v string) *BackupSummary {\n\ts.TableId = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *BackupSummary) SetTableName(v string) *BackupSummary {\n\ts.TableName = &v\n\treturn s\n}\n\ntype BatchExecuteStatementInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Determines the level of detail about either provisioned or on-demand throughput\n\t// consumption that is returned in the response:\n\t//\n\t//    * INDEXES - The response includes the aggregate ConsumedCapacity for the\n\t//    operation, together with ConsumedCapacity for each table and secondary\n\t//    index that was accessed. Note that some operations, such as GetItem and\n\t//    BatchGetItem, do not access any indexes at all. In these cases, specifying\n\t//    INDEXES will only return ConsumedCapacity information for table(s).\n\t//\n\t//    * TOTAL - The response includes only the aggregate ConsumedCapacity for\n\t//    the operation.\n\t//\n\t//    * NONE - No ConsumedCapacity details are included in the response.\n\tReturnConsumedCapacity *string `type:\"string\" enum:\"ReturnConsumedCapacity\"`\n\n\t// The list of PartiQL statements representing the batch to run.\n\t//\n\t// Statements is a required field\n\tStatements []*BatchStatementRequest `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchExecuteStatementInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchExecuteStatementInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *BatchExecuteStatementInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"BatchExecuteStatementInput\"}\n\tif s.Statements == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Statements\"))\n\t}\n\tif s.Statements != nil && len(s.Statements) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Statements\", 1))\n\t}\n\tif s.Statements != nil {\n\t\tfor i, v := range s.Statements {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Statements\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.\nfunc (s *BatchExecuteStatementInput) SetReturnConsumedCapacity(v string) *BatchExecuteStatementInput {\n\ts.ReturnConsumedCapacity = &v\n\treturn s\n}\n\n// SetStatements sets the Statements field's value.\nfunc (s *BatchExecuteStatementInput) SetStatements(v []*BatchStatementRequest) *BatchExecuteStatementInput {\n\ts.Statements = v\n\treturn s\n}\n\ntype BatchExecuteStatementOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The capacity units consumed by the entire operation. The values of the list\n\t// are ordered according to the ordering of the statements.\n\tConsumedCapacity []*ConsumedCapacity `type:\"list\"`\n\n\t// The response to each PartiQL statement in the batch. The values of the list\n\t// are ordered according to the ordering of the request statements.\n\tResponses []*BatchStatementResponse `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchExecuteStatementOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchExecuteStatementOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetConsumedCapacity sets the ConsumedCapacity field's value.\nfunc (s *BatchExecuteStatementOutput) SetConsumedCapacity(v []*ConsumedCapacity) *BatchExecuteStatementOutput {\n\ts.ConsumedCapacity = v\n\treturn s\n}\n\n// SetResponses sets the Responses field's value.\nfunc (s *BatchExecuteStatementOutput) SetResponses(v []*BatchStatementResponse) *BatchExecuteStatementOutput {\n\ts.Responses = v\n\treturn s\n}\n\n// Represents the input of a BatchGetItem operation.\ntype BatchGetItemInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A map of one or more table names and, for each table, a map that describes\n\t// one or more items to retrieve from that table. Each table name can be used\n\t// only once per BatchGetItem request.\n\t//\n\t// Each element in the map of items to retrieve consists of the following:\n\t//\n\t//    * ConsistentRead - If true, a strongly consistent read is used; if false\n\t//    (the default), an eventually consistent read is used.\n\t//\n\t//    * ExpressionAttributeNames - One or more substitution tokens for attribute\n\t//    names in the ProjectionExpression parameter. The following are some use\n\t//    cases for using ExpressionAttributeNames: To access an attribute whose\n\t//    name conflicts with a DynamoDB reserved word. To create a placeholder\n\t//    for repeating occurrences of an attribute name in an expression. To prevent\n\t//    special characters in an attribute name from being misinterpreted in an\n\t//    expression. Use the # character in an expression to dereference an attribute\n\t//    name. For example, consider the following attribute name: Percentile The\n\t//    name of this attribute conflicts with a reserved word, so it cannot be\n\t//    used directly in an expression. (For the complete list of reserved words,\n\t//    see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)\n\t//    in the Amazon DynamoDB Developer Guide). To work around this, you could\n\t//    specify the following for ExpressionAttributeNames: {\"#P\":\"Percentile\"}\n\t//    You could then use this substitution in an expression, as in this example:\n\t//    #P = :val Tokens that begin with the : character are expression attribute\n\t//    values, which are placeholders for the actual value at runtime. For more\n\t//    information about expression attribute names, see Accessing Item Attributes\n\t//    (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)\n\t//    in the Amazon DynamoDB Developer Guide.\n\t//\n\t//    * Keys - An array of primary key attribute values that define specific\n\t//    items in the table. For each primary key, you must provide all of the\n\t//    key attributes. For example, with a simple primary key, you only need\n\t//    to provide the partition key value. For a composite key, you must provide\n\t//    both the partition key value and the sort key value.\n\t//\n\t//    * ProjectionExpression - A string that identifies one or more attributes\n\t//    to retrieve from the table. These attributes can include scalars, sets,\n\t//    or elements of a JSON document. The attributes in the expression must\n\t//    be separated by commas. If no attribute names are specified, then all\n\t//    attributes are returned. If any of the requested attributes are not found,\n\t//    they do not appear in the result. For more information, see Accessing\n\t//    Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)\n\t//    in the Amazon DynamoDB Developer Guide.\n\t//\n\t//    * AttributesToGet - This is a legacy parameter. Use ProjectionExpression\n\t//    instead. For more information, see AttributesToGet (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributesToGet.html)\n\t//    in the Amazon DynamoDB Developer Guide.\n\t//\n\t// RequestItems is a required field\n\tRequestItems map[string]*KeysAndAttributes `min:\"1\" type:\"map\" required:\"true\"`\n\n\t// Determines the level of detail about either provisioned or on-demand throughput\n\t// consumption that is returned in the response:\n\t//\n\t//    * INDEXES - The response includes the aggregate ConsumedCapacity for the\n\t//    operation, together with ConsumedCapacity for each table and secondary\n\t//    index that was accessed. Note that some operations, such as GetItem and\n\t//    BatchGetItem, do not access any indexes at all. In these cases, specifying\n\t//    INDEXES will only return ConsumedCapacity information for table(s).\n\t//\n\t//    * TOTAL - The response includes only the aggregate ConsumedCapacity for\n\t//    the operation.\n\t//\n\t//    * NONE - No ConsumedCapacity details are included in the response.\n\tReturnConsumedCapacity *string `type:\"string\" enum:\"ReturnConsumedCapacity\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchGetItemInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchGetItemInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *BatchGetItemInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"BatchGetItemInput\"}\n\tif s.RequestItems == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RequestItems\"))\n\t}\n\tif s.RequestItems != nil && len(s.RequestItems) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"RequestItems\", 1))\n\t}\n\tif s.RequestItems != nil {\n\t\tfor i, v := range s.RequestItems {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"RequestItems\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetRequestItems sets the RequestItems field's value.\nfunc (s *BatchGetItemInput) SetRequestItems(v map[string]*KeysAndAttributes) *BatchGetItemInput {\n\ts.RequestItems = v\n\treturn s\n}\n\n// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.\nfunc (s *BatchGetItemInput) SetReturnConsumedCapacity(v string) *BatchGetItemInput {\n\ts.ReturnConsumedCapacity = &v\n\treturn s\n}\n\n// Represents the output of a BatchGetItem operation.\ntype BatchGetItemOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The read capacity units consumed by the entire BatchGetItem operation.\n\t//\n\t// Each element consists of:\n\t//\n\t//    * TableName - The table that consumed the provisioned throughput.\n\t//\n\t//    * CapacityUnits - The total number of capacity units consumed.\n\tConsumedCapacity []*ConsumedCapacity `type:\"list\"`\n\n\t// A map of table name to a list of items. Each object in Responses consists\n\t// of a table name, along with a map of attribute data consisting of the data\n\t// type and attribute value.\n\tResponses map[string][]map[string]*AttributeValue `type:\"map\"`\n\n\t// A map of tables and their respective keys that were not processed with the\n\t// current response. The UnprocessedKeys value is in the same form as RequestItems,\n\t// so the value can be provided directly to a subsequent BatchGetItem operation.\n\t// For more information, see RequestItems in the Request Parameters section.\n\t//\n\t// Each element consists of:\n\t//\n\t//    * Keys - An array of primary key attribute values that define specific\n\t//    items in the table.\n\t//\n\t//    * ProjectionExpression - One or more attributes to be retrieved from the\n\t//    table or index. By default, all attributes are returned. If a requested\n\t//    attribute is not found, it does not appear in the result.\n\t//\n\t//    * ConsistentRead - The consistency of a read operation. If set to true,\n\t//    then a strongly consistent read is used; otherwise, an eventually consistent\n\t//    read is used.\n\t//\n\t// If there are no unprocessed keys remaining, the response contains an empty\n\t// UnprocessedKeys map.\n\tUnprocessedKeys map[string]*KeysAndAttributes `min:\"1\" type:\"map\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchGetItemOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchGetItemOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetConsumedCapacity sets the ConsumedCapacity field's value.\nfunc (s *BatchGetItemOutput) SetConsumedCapacity(v []*ConsumedCapacity) *BatchGetItemOutput {\n\ts.ConsumedCapacity = v\n\treturn s\n}\n\n// SetResponses sets the Responses field's value.\nfunc (s *BatchGetItemOutput) SetResponses(v map[string][]map[string]*AttributeValue) *BatchGetItemOutput {\n\ts.Responses = v\n\treturn s\n}\n\n// SetUnprocessedKeys sets the UnprocessedKeys field's value.\nfunc (s *BatchGetItemOutput) SetUnprocessedKeys(v map[string]*KeysAndAttributes) *BatchGetItemOutput {\n\ts.UnprocessedKeys = v\n\treturn s\n}\n\n// An error associated with a statement in a PartiQL batch that was run.\ntype BatchStatementError struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The error code associated with the failed PartiQL batch statement.\n\tCode *string `type:\"string\" enum:\"BatchStatementErrorCodeEnum\"`\n\n\t// The item which caused the condition check to fail. This will be set if ReturnValuesOnConditionCheckFailure\n\t// is specified as ALL_OLD.\n\tItem map[string]*AttributeValue `type:\"map\"`\n\n\t// The error message associated with the PartiQL batch response.\n\tMessage *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchStatementError) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchStatementError) GoString() string {\n\treturn s.String()\n}\n\n// SetCode sets the Code field's value.\nfunc (s *BatchStatementError) SetCode(v string) *BatchStatementError {\n\ts.Code = &v\n\treturn s\n}\n\n// SetItem sets the Item field's value.\nfunc (s *BatchStatementError) SetItem(v map[string]*AttributeValue) *BatchStatementError {\n\ts.Item = v\n\treturn s\n}\n\n// SetMessage sets the Message field's value.\nfunc (s *BatchStatementError) SetMessage(v string) *BatchStatementError {\n\ts.Message = &v\n\treturn s\n}\n\n// A PartiQL batch statement request.\ntype BatchStatementRequest struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The read consistency of the PartiQL batch request.\n\tConsistentRead *bool `type:\"boolean\"`\n\n\t// The parameters associated with a PartiQL statement in the batch request.\n\tParameters []*AttributeValue `min:\"1\" type:\"list\"`\n\n\t// An optional parameter that returns the item attributes for a PartiQL batch\n\t// request operation that failed a condition check.\n\t//\n\t// There is no additional cost associated with requesting a return value aside\n\t// from the small network and processing overhead of receiving a larger response.\n\t// No read capacity units are consumed.\n\tReturnValuesOnConditionCheckFailure *string `type:\"string\" enum:\"ReturnValuesOnConditionCheckFailure\"`\n\n\t// A valid PartiQL statement.\n\t//\n\t// Statement is a required field\n\tStatement *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchStatementRequest) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchStatementRequest) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *BatchStatementRequest) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"BatchStatementRequest\"}\n\tif s.Parameters != nil && len(s.Parameters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Parameters\", 1))\n\t}\n\tif s.Statement == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Statement\"))\n\t}\n\tif s.Statement != nil && len(*s.Statement) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Statement\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetConsistentRead sets the ConsistentRead field's value.\nfunc (s *BatchStatementRequest) SetConsistentRead(v bool) *BatchStatementRequest {\n\ts.ConsistentRead = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *BatchStatementRequest) SetParameters(v []*AttributeValue) *BatchStatementRequest {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.\nfunc (s *BatchStatementRequest) SetReturnValuesOnConditionCheckFailure(v string) *BatchStatementRequest {\n\ts.ReturnValuesOnConditionCheckFailure = &v\n\treturn s\n}\n\n// SetStatement sets the Statement field's value.\nfunc (s *BatchStatementRequest) SetStatement(v string) *BatchStatementRequest {\n\ts.Statement = &v\n\treturn s\n}\n\n// A PartiQL batch statement response..\ntype BatchStatementResponse struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The error associated with a failed PartiQL batch statement.\n\tError *BatchStatementError `type:\"structure\"`\n\n\t// A DynamoDB item associated with a BatchStatementResponse\n\tItem map[string]*AttributeValue `type:\"map\"`\n\n\t// The table name associated with a failed PartiQL batch statement.\n\tTableName *string `min:\"3\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchStatementResponse) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchStatementResponse) GoString() string {\n\treturn s.String()\n}\n\n// SetError sets the Error field's value.\nfunc (s *BatchStatementResponse) SetError(v *BatchStatementError) *BatchStatementResponse {\n\ts.Error = v\n\treturn s\n}\n\n// SetItem sets the Item field's value.\nfunc (s *BatchStatementResponse) SetItem(v map[string]*AttributeValue) *BatchStatementResponse {\n\ts.Item = v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *BatchStatementResponse) SetTableName(v string) *BatchStatementResponse {\n\ts.TableName = &v\n\treturn s\n}\n\n// Represents the input of a BatchWriteItem operation.\ntype BatchWriteItemInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A map of one or more table names and, for each table, a list of operations\n\t// to be performed (DeleteRequest or PutRequest). Each element in the map consists\n\t// of the following:\n\t//\n\t//    * DeleteRequest - Perform a DeleteItem operation on the specified item.\n\t//    The item to be deleted is identified by a Key subelement: Key - A map\n\t//    of primary key attribute values that uniquely identify the item. Each\n\t//    entry in this map consists of an attribute name and an attribute value.\n\t//    For each primary key, you must provide all of the key attributes. For\n\t//    example, with a simple primary key, you only need to provide a value for\n\t//    the partition key. For a composite primary key, you must provide values\n\t//    for both the partition key and the sort key.\n\t//\n\t//    * PutRequest - Perform a PutItem operation on the specified item. The\n\t//    item to be put is identified by an Item subelement: Item - A map of attributes\n\t//    and their values. Each entry in this map consists of an attribute name\n\t//    and an attribute value. Attribute values must not be null; string and\n\t//    binary type attributes must have lengths greater than zero; and set type\n\t//    attributes must not be empty. Requests that contain empty values are rejected\n\t//    with a ValidationException exception. If you specify any attributes that\n\t//    are part of an index key, then the data types for those attributes must\n\t//    match those of the schema in the table's attribute definition.\n\t//\n\t// RequestItems is a required field\n\tRequestItems map[string][]*WriteRequest `min:\"1\" type:\"map\" required:\"true\"`\n\n\t// Determines the level of detail about either provisioned or on-demand throughput\n\t// consumption that is returned in the response:\n\t//\n\t//    * INDEXES - The response includes the aggregate ConsumedCapacity for the\n\t//    operation, together with ConsumedCapacity for each table and secondary\n\t//    index that was accessed. Note that some operations, such as GetItem and\n\t//    BatchGetItem, do not access any indexes at all. In these cases, specifying\n\t//    INDEXES will only return ConsumedCapacity information for table(s).\n\t//\n\t//    * TOTAL - The response includes only the aggregate ConsumedCapacity for\n\t//    the operation.\n\t//\n\t//    * NONE - No ConsumedCapacity details are included in the response.\n\tReturnConsumedCapacity *string `type:\"string\" enum:\"ReturnConsumedCapacity\"`\n\n\t// Determines whether item collection metrics are returned. If set to SIZE,\n\t// the response includes statistics about item collections, if any, that were\n\t// modified during the operation are returned in the response. If set to NONE\n\t// (the default), no statistics are returned.\n\tReturnItemCollectionMetrics *string `type:\"string\" enum:\"ReturnItemCollectionMetrics\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchWriteItemInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchWriteItemInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *BatchWriteItemInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"BatchWriteItemInput\"}\n\tif s.RequestItems == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RequestItems\"))\n\t}\n\tif s.RequestItems != nil && len(s.RequestItems) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"RequestItems\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetRequestItems sets the RequestItems field's value.\nfunc (s *BatchWriteItemInput) SetRequestItems(v map[string][]*WriteRequest) *BatchWriteItemInput {\n\ts.RequestItems = v\n\treturn s\n}\n\n// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.\nfunc (s *BatchWriteItemInput) SetReturnConsumedCapacity(v string) *BatchWriteItemInput {\n\ts.ReturnConsumedCapacity = &v\n\treturn s\n}\n\n// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.\nfunc (s *BatchWriteItemInput) SetReturnItemCollectionMetrics(v string) *BatchWriteItemInput {\n\ts.ReturnItemCollectionMetrics = &v\n\treturn s\n}\n\n// Represents the output of a BatchWriteItem operation.\ntype BatchWriteItemOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The capacity units consumed by the entire BatchWriteItem operation.\n\t//\n\t// Each element consists of:\n\t//\n\t//    * TableName - The table that consumed the provisioned throughput.\n\t//\n\t//    * CapacityUnits - The total number of capacity units consumed.\n\tConsumedCapacity []*ConsumedCapacity `type:\"list\"`\n\n\t// A list of tables that were processed by BatchWriteItem and, for each table,\n\t// information about any item collections that were affected by individual DeleteItem\n\t// or PutItem operations.\n\t//\n\t// Each entry consists of the following subelements:\n\t//\n\t//    * ItemCollectionKey - The partition key value of the item collection.\n\t//    This is the same as the partition key value of the item.\n\t//\n\t//    * SizeEstimateRangeGB - An estimate of item collection size, expressed\n\t//    in GB. This is a two-element array containing a lower bound and an upper\n\t//    bound for the estimate. The estimate includes the size of all the items\n\t//    in the table, plus the size of all attributes projected into all of the\n\t//    local secondary indexes on the table. Use this estimate to measure whether\n\t//    a local secondary index is approaching its size limit. The estimate is\n\t//    subject to change over time; therefore, do not rely on the precision or\n\t//    accuracy of the estimate.\n\tItemCollectionMetrics map[string][]*ItemCollectionMetrics `type:\"map\"`\n\n\t// A map of tables and requests against those tables that were not processed.\n\t// The UnprocessedItems value is in the same form as RequestItems, so you can\n\t// provide this value directly to a subsequent BatchWriteItem operation. For\n\t// more information, see RequestItems in the Request Parameters section.\n\t//\n\t// Each UnprocessedItems entry consists of a table name and, for that table,\n\t// a list of operations to perform (DeleteRequest or PutRequest).\n\t//\n\t//    * DeleteRequest - Perform a DeleteItem operation on the specified item.\n\t//    The item to be deleted is identified by a Key subelement: Key - A map\n\t//    of primary key attribute values that uniquely identify the item. Each\n\t//    entry in this map consists of an attribute name and an attribute value.\n\t//\n\t//    * PutRequest - Perform a PutItem operation on the specified item. The\n\t//    item to be put is identified by an Item subelement: Item - A map of attributes\n\t//    and their values. Each entry in this map consists of an attribute name\n\t//    and an attribute value. Attribute values must not be null; string and\n\t//    binary type attributes must have lengths greater than zero; and set type\n\t//    attributes must not be empty. Requests that contain empty values will\n\t//    be rejected with a ValidationException exception. If you specify any attributes\n\t//    that are part of an index key, then the data types for those attributes\n\t//    must match those of the schema in the table's attribute definition.\n\t//\n\t// If there are no unprocessed items remaining, the response contains an empty\n\t// UnprocessedItems map.\n\tUnprocessedItems map[string][]*WriteRequest `min:\"1\" type:\"map\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchWriteItemOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BatchWriteItemOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetConsumedCapacity sets the ConsumedCapacity field's value.\nfunc (s *BatchWriteItemOutput) SetConsumedCapacity(v []*ConsumedCapacity) *BatchWriteItemOutput {\n\ts.ConsumedCapacity = v\n\treturn s\n}\n\n// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.\nfunc (s *BatchWriteItemOutput) SetItemCollectionMetrics(v map[string][]*ItemCollectionMetrics) *BatchWriteItemOutput {\n\ts.ItemCollectionMetrics = v\n\treturn s\n}\n\n// SetUnprocessedItems sets the UnprocessedItems field's value.\nfunc (s *BatchWriteItemOutput) SetUnprocessedItems(v map[string][]*WriteRequest) *BatchWriteItemOutput {\n\ts.UnprocessedItems = v\n\treturn s\n}\n\n// Contains the details for the read/write capacity mode. This page talks about\n// PROVISIONED and PAY_PER_REQUEST billing modes. For more information about\n// these modes, see Read/write capacity mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html).\n//\n// You may need to switch to on-demand mode at least once in order to return\n// a BillingModeSummary response.\ntype BillingModeSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Controls how you are charged for read and write throughput and how you manage\n\t// capacity. This setting can be changed later.\n\t//\n\t//    * PROVISIONED - Sets the read/write capacity mode to PROVISIONED. We recommend\n\t//    using PROVISIONED for predictable workloads.\n\t//\n\t//    * PAY_PER_REQUEST - Sets the read/write capacity mode to PAY_PER_REQUEST.\n\t//    We recommend using PAY_PER_REQUEST for unpredictable workloads.\n\tBillingMode *string `type:\"string\" enum:\"BillingMode\"`\n\n\t// Represents the time when PAY_PER_REQUEST was last set as the read/write capacity\n\t// mode.\n\tLastUpdateToPayPerRequestDateTime *time.Time `type:\"timestamp\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BillingModeSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BillingModeSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetBillingMode sets the BillingMode field's value.\nfunc (s *BillingModeSummary) SetBillingMode(v string) *BillingModeSummary {\n\ts.BillingMode = &v\n\treturn s\n}\n\n// SetLastUpdateToPayPerRequestDateTime sets the LastUpdateToPayPerRequestDateTime field's value.\nfunc (s *BillingModeSummary) SetLastUpdateToPayPerRequestDateTime(v time.Time) *BillingModeSummary {\n\ts.LastUpdateToPayPerRequestDateTime = &v\n\treturn s\n}\n\n// An ordered list of errors for each item in the request which caused the transaction\n// to get cancelled. The values of the list are ordered according to the ordering\n// of the TransactWriteItems request parameter. If no error occurred for the\n// associated item an error with a Null code and Null message will be present.\ntype CancellationReason struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Status code for the result of the cancelled transaction.\n\tCode *string `type:\"string\"`\n\n\t// Item in the request which caused the transaction to get cancelled.\n\tItem map[string]*AttributeValue `type:\"map\"`\n\n\t// Cancellation reason message description.\n\tMessage *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CancellationReason) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CancellationReason) GoString() string {\n\treturn s.String()\n}\n\n// SetCode sets the Code field's value.\nfunc (s *CancellationReason) SetCode(v string) *CancellationReason {\n\ts.Code = &v\n\treturn s\n}\n\n// SetItem sets the Item field's value.\nfunc (s *CancellationReason) SetItem(v map[string]*AttributeValue) *CancellationReason {\n\ts.Item = v\n\treturn s\n}\n\n// SetMessage sets the Message field's value.\nfunc (s *CancellationReason) SetMessage(v string) *CancellationReason {\n\ts.Message = &v\n\treturn s\n}\n\n// Represents the amount of provisioned throughput capacity consumed on a table\n// or an index.\ntype Capacity struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The total number of capacity units consumed on a table or an index.\n\tCapacityUnits *float64 `type:\"double\"`\n\n\t// The total number of read capacity units consumed on a table or an index.\n\tReadCapacityUnits *float64 `type:\"double\"`\n\n\t// The total number of write capacity units consumed on a table or an index.\n\tWriteCapacityUnits *float64 `type:\"double\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Capacity) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Capacity) GoString() string {\n\treturn s.String()\n}\n\n// SetCapacityUnits sets the CapacityUnits field's value.\nfunc (s *Capacity) SetCapacityUnits(v float64) *Capacity {\n\ts.CapacityUnits = &v\n\treturn s\n}\n\n// SetReadCapacityUnits sets the ReadCapacityUnits field's value.\nfunc (s *Capacity) SetReadCapacityUnits(v float64) *Capacity {\n\ts.ReadCapacityUnits = &v\n\treturn s\n}\n\n// SetWriteCapacityUnits sets the WriteCapacityUnits field's value.\nfunc (s *Capacity) SetWriteCapacityUnits(v float64) *Capacity {\n\ts.WriteCapacityUnits = &v\n\treturn s\n}\n\n// Represents the selection criteria for a Query or Scan operation:\n//\n//   - For a Query operation, Condition is used for specifying the KeyConditions\n//     to use when querying a table or an index. For KeyConditions, only the\n//     following comparison operators are supported: EQ | LE | LT | GE | GT |\n//     BEGINS_WITH | BETWEEN Condition is also used in a QueryFilter, which evaluates\n//     the query results and returns only the desired values.\n//\n//   - For a Scan operation, Condition is used in a ScanFilter, which evaluates\n//     the scan results and returns only the desired values.\ntype Condition struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more values to evaluate against the supplied attribute. The number\n\t// of values in the list depends on the ComparisonOperator being used.\n\t//\n\t// For type Number, value comparisons are numeric.\n\t//\n\t// String value comparisons for greater than, equals, or less than are based\n\t// on ASCII character code values. For example, a is greater than A, and a is\n\t// greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters\n\t// (http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters).\n\t//\n\t// For Binary, DynamoDB treats each byte of the binary data as unsigned when\n\t// it compares binary values.\n\tAttributeValueList []*AttributeValue `type:\"list\"`\n\n\t// A comparator for evaluating attributes. For example, equals, greater than,\n\t// less than, etc.\n\t//\n\t// The following comparison operators are available:\n\t//\n\t// EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |\n\t// BEGINS_WITH | IN | BETWEEN\n\t//\n\t// The following are descriptions of each comparison operator.\n\t//\n\t//    * EQ : Equal. EQ is supported for all data types, including lists and\n\t//    maps. AttributeValueList can contain only one AttributeValue element of\n\t//    type String, Number, Binary, String Set, Number Set, or Binary Set. If\n\t//    an item contains an AttributeValue element of a different type than the\n\t//    one provided in the request, the value does not match. For example, {\"S\":\"6\"}\n\t//    does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\",\n\t//    \"1\"]}.\n\t//\n\t//    * NE : Not equal. NE is supported for all data types, including lists\n\t//    and maps. AttributeValueList can contain only one AttributeValue of type\n\t//    String, Number, Binary, String Set, Number Set, or Binary Set. If an item\n\t//    contains an AttributeValue of a different type than the one provided in\n\t//    the request, the value does not match. For example, {\"S\":\"6\"} does not\n\t//    equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.\n\t//\n\t//    * LE : Less than or equal. AttributeValueList can contain only one AttributeValue\n\t//    element of type String, Number, or Binary (not a set type). If an item\n\t//    contains an AttributeValue element of a different type than the one provided\n\t//    in the request, the value does not match. For example, {\"S\":\"6\"} does\n\t//    not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\",\n\t//    \"1\"]}.\n\t//\n\t//    * LT : Less than. AttributeValueList can contain only one AttributeValue\n\t//    of type String, Number, or Binary (not a set type). If an item contains\n\t//    an AttributeValue element of a different type than the one provided in\n\t//    the request, the value does not match. For example, {\"S\":\"6\"} does not\n\t//    equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\",\n\t//    \"1\"]}.\n\t//\n\t//    * GE : Greater than or equal. AttributeValueList can contain only one\n\t//    AttributeValue element of type String, Number, or Binary (not a set type).\n\t//    If an item contains an AttributeValue element of a different type than\n\t//    the one provided in the request, the value does not match. For example,\n\t//    {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to\n\t//    {\"NS\":[\"6\", \"2\", \"1\"]}.\n\t//\n\t//    * GT : Greater than. AttributeValueList can contain only one AttributeValue\n\t//    element of type String, Number, or Binary (not a set type). If an item\n\t//    contains an AttributeValue element of a different type than the one provided\n\t//    in the request, the value does not match. For example, {\"S\":\"6\"} does\n\t//    not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\",\n\t//    \"1\"]}.\n\t//\n\t//    * NOT_NULL : The attribute exists. NOT_NULL is supported for all data\n\t//    types, including lists and maps. This operator tests for the existence\n\t//    of an attribute, not its data type. If the data type of attribute \"a\"\n\t//    is null, and you evaluate it using NOT_NULL, the result is a Boolean true.\n\t//    This result is because the attribute \"a\" exists; its data type is not\n\t//    relevant to the NOT_NULL comparison operator.\n\t//\n\t//    * NULL : The attribute does not exist. NULL is supported for all data\n\t//    types, including lists and maps. This operator tests for the nonexistence\n\t//    of an attribute, not its data type. If the data type of attribute \"a\"\n\t//    is null, and you evaluate it using NULL, the result is a Boolean false.\n\t//    This is because the attribute \"a\" exists; its data type is not relevant\n\t//    to the NULL comparison operator.\n\t//\n\t//    * CONTAINS : Checks for a subsequence, or value in a set. AttributeValueList\n\t//    can contain only one AttributeValue element of type String, Number, or\n\t//    Binary (not a set type). If the target attribute of the comparison is\n\t//    of type String, then the operator checks for a substring match. If the\n\t//    target attribute of the comparison is of type Binary, then the operator\n\t//    looks for a subsequence of the target that matches the input. If the target\n\t//    attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the operator\n\t//    evaluates to true if it finds an exact match with any member of the set.\n\t//    CONTAINS is supported for lists: When evaluating \"a CONTAINS b\", \"a\" can\n\t//    be a list; however, \"b\" cannot be a set, a map, or a list.\n\t//\n\t//    * NOT_CONTAINS : Checks for absence of a subsequence, or absence of a\n\t//    value in a set. AttributeValueList can contain only one AttributeValue\n\t//    element of type String, Number, or Binary (not a set type). If the target\n\t//    attribute of the comparison is a String, then the operator checks for\n\t//    the absence of a substring match. If the target attribute of the comparison\n\t//    is Binary, then the operator checks for the absence of a subsequence of\n\t//    the target that matches the input. If the target attribute of the comparison\n\t//    is a set (\"SS\", \"NS\", or \"BS\"), then the operator evaluates to true if\n\t//    it does not find an exact match with any member of the set. NOT_CONTAINS\n\t//    is supported for lists: When evaluating \"a NOT CONTAINS b\", \"a\" can be\n\t//    a list; however, \"b\" cannot be a set, a map, or a list.\n\t//\n\t//    * BEGINS_WITH : Checks for a prefix. AttributeValueList can contain only\n\t//    one AttributeValue of type String or Binary (not a Number or a set type).\n\t//    The target attribute of the comparison must be of type String or Binary\n\t//    (not a Number or a set type).\n\t//\n\t//    * IN : Checks for matching elements in a list. AttributeValueList can\n\t//    contain one or more AttributeValue elements of type String, Number, or\n\t//    Binary. These attributes are compared against an existing attribute of\n\t//    an item. If any elements of the input are equal to the item attribute,\n\t//    the expression evaluates to true.\n\t//\n\t//    * BETWEEN : Greater than or equal to the first value, and less than or\n\t//    equal to the second value. AttributeValueList must contain two AttributeValue\n\t//    elements of the same type, either String, Number, or Binary (not a set\n\t//    type). A target attribute matches if the target value is greater than,\n\t//    or equal to, the first element and less than, or equal to, the second\n\t//    element. If an item contains an AttributeValue element of a different\n\t//    type than the one provided in the request, the value does not match. For\n\t//    example, {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also, {\"N\":\"6\"} does\n\t//    not compare to {\"NS\":[\"6\", \"2\", \"1\"]}\n\t//\n\t// For usage examples of AttributeValueList and ComparisonOperator, see Legacy\n\t// Conditional Parameters (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\t//\n\t// ComparisonOperator is a required field\n\tComparisonOperator *string `type:\"string\" required:\"true\" enum:\"ComparisonOperator\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Condition) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Condition) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *Condition) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"Condition\"}\n\tif s.ComparisonOperator == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ComparisonOperator\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttributeValueList sets the AttributeValueList field's value.\nfunc (s *Condition) SetAttributeValueList(v []*AttributeValue) *Condition {\n\ts.AttributeValueList = v\n\treturn s\n}\n\n// SetComparisonOperator sets the ComparisonOperator field's value.\nfunc (s *Condition) SetComparisonOperator(v string) *Condition {\n\ts.ComparisonOperator = &v\n\treturn s\n}\n\n// Represents a request to perform a check that an item exists or to check the\n// condition of specific attributes of the item.\ntype ConditionCheck struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A condition that must be satisfied in order for a conditional update to succeed.\n\t// For more information, see Condition expressions (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\t//\n\t// ConditionExpression is a required field\n\tConditionExpression *string `type:\"string\" required:\"true\"`\n\n\t// One or more substitution tokens for attribute names in an expression. For\n\t// more information, see Expression attribute names (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeNames map[string]*string `type:\"map\"`\n\n\t// One or more values that can be substituted in an expression. For more information,\n\t// see Condition expressions (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeValues map[string]*AttributeValue `type:\"map\"`\n\n\t// The primary key of the item to be checked. Each element consists of an attribute\n\t// name and a value for that attribute.\n\t//\n\t// Key is a required field\n\tKey map[string]*AttributeValue `type:\"map\" required:\"true\"`\n\n\t// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the\n\t// ConditionCheck condition fails. For ReturnValuesOnConditionCheckFailure,\n\t// the valid values are: NONE and ALL_OLD.\n\tReturnValuesOnConditionCheckFailure *string `type:\"string\" enum:\"ReturnValuesOnConditionCheckFailure\"`\n\n\t// Name of the table for the check item request.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ConditionCheck) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ConditionCheck) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ConditionCheck) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ConditionCheck\"}\n\tif s.ConditionExpression == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ConditionExpression\"))\n\t}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetConditionExpression sets the ConditionExpression field's value.\nfunc (s *ConditionCheck) SetConditionExpression(v string) *ConditionCheck {\n\ts.ConditionExpression = &v\n\treturn s\n}\n\n// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.\nfunc (s *ConditionCheck) SetExpressionAttributeNames(v map[string]*string) *ConditionCheck {\n\ts.ExpressionAttributeNames = v\n\treturn s\n}\n\n// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.\nfunc (s *ConditionCheck) SetExpressionAttributeValues(v map[string]*AttributeValue) *ConditionCheck {\n\ts.ExpressionAttributeValues = v\n\treturn s\n}\n\n// SetKey sets the Key field's value.\nfunc (s *ConditionCheck) SetKey(v map[string]*AttributeValue) *ConditionCheck {\n\ts.Key = v\n\treturn s\n}\n\n// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.\nfunc (s *ConditionCheck) SetReturnValuesOnConditionCheckFailure(v string) *ConditionCheck {\n\ts.ReturnValuesOnConditionCheckFailure = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *ConditionCheck) SetTableName(v string) *ConditionCheck {\n\ts.TableName = &v\n\treturn s\n}\n\n// A condition specified in the operation could not be evaluated.\ntype ConditionalCheckFailedException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Item which caused the ConditionalCheckFailedException.\n\tItem map[string]*AttributeValue `type:\"map\"`\n\n\t// The conditional request failed.\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ConditionalCheckFailedException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ConditionalCheckFailedException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorConditionalCheckFailedException(v protocol.ResponseMetadata) error {\n\treturn &ConditionalCheckFailedException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ConditionalCheckFailedException) Code() string {\n\treturn \"ConditionalCheckFailedException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ConditionalCheckFailedException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ConditionalCheckFailedException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ConditionalCheckFailedException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ConditionalCheckFailedException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ConditionalCheckFailedException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The capacity units consumed by an operation. The data returned includes the\n// total provisioned throughput consumed, along with statistics for the table\n// and any indexes involved in the operation. ConsumedCapacity is only returned\n// if the request asked for it. For more information, see Provisioned Throughput\n// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)\n// in the Amazon DynamoDB Developer Guide.\ntype ConsumedCapacity struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The total number of capacity units consumed by the operation.\n\tCapacityUnits *float64 `type:\"double\"`\n\n\t// The amount of throughput consumed on each global index affected by the operation.\n\tGlobalSecondaryIndexes map[string]*Capacity `type:\"map\"`\n\n\t// The amount of throughput consumed on each local index affected by the operation.\n\tLocalSecondaryIndexes map[string]*Capacity `type:\"map\"`\n\n\t// The total number of read capacity units consumed by the operation.\n\tReadCapacityUnits *float64 `type:\"double\"`\n\n\t// The amount of throughput consumed on the table affected by the operation.\n\tTable *Capacity `type:\"structure\"`\n\n\t// The name of the table that was affected by the operation.\n\tTableName *string `min:\"3\" type:\"string\"`\n\n\t// The total number of write capacity units consumed by the operation.\n\tWriteCapacityUnits *float64 `type:\"double\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ConsumedCapacity) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ConsumedCapacity) GoString() string {\n\treturn s.String()\n}\n\n// SetCapacityUnits sets the CapacityUnits field's value.\nfunc (s *ConsumedCapacity) SetCapacityUnits(v float64) *ConsumedCapacity {\n\ts.CapacityUnits = &v\n\treturn s\n}\n\n// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.\nfunc (s *ConsumedCapacity) SetGlobalSecondaryIndexes(v map[string]*Capacity) *ConsumedCapacity {\n\ts.GlobalSecondaryIndexes = v\n\treturn s\n}\n\n// SetLocalSecondaryIndexes sets the LocalSecondaryIndexes field's value.\nfunc (s *ConsumedCapacity) SetLocalSecondaryIndexes(v map[string]*Capacity) *ConsumedCapacity {\n\ts.LocalSecondaryIndexes = v\n\treturn s\n}\n\n// SetReadCapacityUnits sets the ReadCapacityUnits field's value.\nfunc (s *ConsumedCapacity) SetReadCapacityUnits(v float64) *ConsumedCapacity {\n\ts.ReadCapacityUnits = &v\n\treturn s\n}\n\n// SetTable sets the Table field's value.\nfunc (s *ConsumedCapacity) SetTable(v *Capacity) *ConsumedCapacity {\n\ts.Table = v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *ConsumedCapacity) SetTableName(v string) *ConsumedCapacity {\n\ts.TableName = &v\n\treturn s\n}\n\n// SetWriteCapacityUnits sets the WriteCapacityUnits field's value.\nfunc (s *ConsumedCapacity) SetWriteCapacityUnits(v float64) *ConsumedCapacity {\n\ts.WriteCapacityUnits = &v\n\treturn s\n}\n\n// Represents the continuous backups and point in time recovery settings on\n// the table.\ntype ContinuousBackupsDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// ContinuousBackupsStatus can be one of the following states: ENABLED, DISABLED\n\t//\n\t// ContinuousBackupsStatus is a required field\n\tContinuousBackupsStatus *string `type:\"string\" required:\"true\" enum:\"ContinuousBackupsStatus\"`\n\n\t// The description of the point in time recovery settings applied to the table.\n\tPointInTimeRecoveryDescription *PointInTimeRecoveryDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ContinuousBackupsDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ContinuousBackupsDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetContinuousBackupsStatus sets the ContinuousBackupsStatus field's value.\nfunc (s *ContinuousBackupsDescription) SetContinuousBackupsStatus(v string) *ContinuousBackupsDescription {\n\ts.ContinuousBackupsStatus = &v\n\treturn s\n}\n\n// SetPointInTimeRecoveryDescription sets the PointInTimeRecoveryDescription field's value.\nfunc (s *ContinuousBackupsDescription) SetPointInTimeRecoveryDescription(v *PointInTimeRecoveryDescription) *ContinuousBackupsDescription {\n\ts.PointInTimeRecoveryDescription = v\n\treturn s\n}\n\n// Backups have not yet been enabled for this table.\ntype ContinuousBackupsUnavailableException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ContinuousBackupsUnavailableException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ContinuousBackupsUnavailableException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorContinuousBackupsUnavailableException(v protocol.ResponseMetadata) error {\n\treturn &ContinuousBackupsUnavailableException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ContinuousBackupsUnavailableException) Code() string {\n\treturn \"ContinuousBackupsUnavailableException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ContinuousBackupsUnavailableException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ContinuousBackupsUnavailableException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ContinuousBackupsUnavailableException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ContinuousBackupsUnavailableException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ContinuousBackupsUnavailableException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Represents a Contributor Insights summary entry.\ntype ContributorInsightsSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Describes the current status for contributor insights for the given table\n\t// and index, if applicable.\n\tContributorInsightsStatus *string `type:\"string\" enum:\"ContributorInsightsStatus\"`\n\n\t// Name of the index associated with the summary, if any.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// Name of the table associated with the summary.\n\tTableName *string `min:\"3\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ContributorInsightsSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ContributorInsightsSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetContributorInsightsStatus sets the ContributorInsightsStatus field's value.\nfunc (s *ContributorInsightsSummary) SetContributorInsightsStatus(v string) *ContributorInsightsSummary {\n\ts.ContributorInsightsStatus = &v\n\treturn s\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *ContributorInsightsSummary) SetIndexName(v string) *ContributorInsightsSummary {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *ContributorInsightsSummary) SetTableName(v string) *ContributorInsightsSummary {\n\ts.TableName = &v\n\treturn s\n}\n\ntype CreateBackupInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Specified name for the backup.\n\t//\n\t// BackupName is a required field\n\tBackupName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// The name of the table.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateBackupInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateBackupInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateBackupInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateBackupInput\"}\n\tif s.BackupName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"BackupName\"))\n\t}\n\tif s.BackupName != nil && len(*s.BackupName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"BackupName\", 3))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetBackupName sets the BackupName field's value.\nfunc (s *CreateBackupInput) SetBackupName(v string) *CreateBackupInput {\n\ts.BackupName = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *CreateBackupInput) SetTableName(v string) *CreateBackupInput {\n\ts.TableName = &v\n\treturn s\n}\n\ntype CreateBackupOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Contains the details of the backup created for the table.\n\tBackupDetails *BackupDetails `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateBackupOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateBackupOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetBackupDetails sets the BackupDetails field's value.\nfunc (s *CreateBackupOutput) SetBackupDetails(v *BackupDetails) *CreateBackupOutput {\n\ts.BackupDetails = v\n\treturn s\n}\n\n// Represents a new global secondary index to be added to an existing table.\ntype CreateGlobalSecondaryIndexAction struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index to be created.\n\t//\n\t// IndexName is a required field\n\tIndexName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// The key schema for the global secondary index.\n\t//\n\t// KeySchema is a required field\n\tKeySchema []*KeySchemaElement `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// Represents attributes that are copied (projected) from the table into an\n\t// index. These are in addition to the primary key attributes and index key\n\t// attributes, which are automatically projected.\n\t//\n\t// Projection is a required field\n\tProjection *Projection `type:\"structure\" required:\"true\"`\n\n\t// Represents the provisioned throughput settings for the specified global secondary\n\t// index.\n\t//\n\t// For current minimum and maximum provisioned throughput values, see Service,\n\t// Account, and Table Quotas (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tProvisionedThroughput *ProvisionedThroughput `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateGlobalSecondaryIndexAction) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateGlobalSecondaryIndexAction) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateGlobalSecondaryIndexAction) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateGlobalSecondaryIndexAction\"}\n\tif s.IndexName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"IndexName\"))\n\t}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\tif s.KeySchema == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"KeySchema\"))\n\t}\n\tif s.KeySchema != nil && len(s.KeySchema) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"KeySchema\", 1))\n\t}\n\tif s.Projection == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Projection\"))\n\t}\n\tif s.KeySchema != nil {\n\t\tfor i, v := range s.KeySchema {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"KeySchema\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Projection != nil {\n\t\tif err := s.Projection.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Projection\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.ProvisionedThroughput != nil {\n\t\tif err := s.ProvisionedThroughput.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedThroughput\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *CreateGlobalSecondaryIndexAction) SetIndexName(v string) *CreateGlobalSecondaryIndexAction {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetKeySchema sets the KeySchema field's value.\nfunc (s *CreateGlobalSecondaryIndexAction) SetKeySchema(v []*KeySchemaElement) *CreateGlobalSecondaryIndexAction {\n\ts.KeySchema = v\n\treturn s\n}\n\n// SetProjection sets the Projection field's value.\nfunc (s *CreateGlobalSecondaryIndexAction) SetProjection(v *Projection) *CreateGlobalSecondaryIndexAction {\n\ts.Projection = v\n\treturn s\n}\n\n// SetProvisionedThroughput sets the ProvisionedThroughput field's value.\nfunc (s *CreateGlobalSecondaryIndexAction) SetProvisionedThroughput(v *ProvisionedThroughput) *CreateGlobalSecondaryIndexAction {\n\ts.ProvisionedThroughput = v\n\treturn s\n}\n\ntype CreateGlobalTableInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The global table name.\n\t//\n\t// GlobalTableName is a required field\n\tGlobalTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// The Regions where the global table needs to be created.\n\t//\n\t// ReplicationGroup is a required field\n\tReplicationGroup []*Replica `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateGlobalTableInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateGlobalTableInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateGlobalTableInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateGlobalTableInput\"}\n\tif s.GlobalTableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"GlobalTableName\"))\n\t}\n\tif s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"GlobalTableName\", 3))\n\t}\n\tif s.ReplicationGroup == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ReplicationGroup\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetGlobalTableName sets the GlobalTableName field's value.\nfunc (s *CreateGlobalTableInput) SetGlobalTableName(v string) *CreateGlobalTableInput {\n\ts.GlobalTableName = &v\n\treturn s\n}\n\n// SetReplicationGroup sets the ReplicationGroup field's value.\nfunc (s *CreateGlobalTableInput) SetReplicationGroup(v []*Replica) *CreateGlobalTableInput {\n\ts.ReplicationGroup = v\n\treturn s\n}\n\ntype CreateGlobalTableOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Contains the details of the global table.\n\tGlobalTableDescription *GlobalTableDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateGlobalTableOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateGlobalTableOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetGlobalTableDescription sets the GlobalTableDescription field's value.\nfunc (s *CreateGlobalTableOutput) SetGlobalTableDescription(v *GlobalTableDescription) *CreateGlobalTableOutput {\n\ts.GlobalTableDescription = v\n\treturn s\n}\n\n// Represents a replica to be added.\ntype CreateReplicaAction struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Region of the replica to be added.\n\t//\n\t// RegionName is a required field\n\tRegionName *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateReplicaAction) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateReplicaAction) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateReplicaAction) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateReplicaAction\"}\n\tif s.RegionName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RegionName\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetRegionName sets the RegionName field's value.\nfunc (s *CreateReplicaAction) SetRegionName(v string) *CreateReplicaAction {\n\ts.RegionName = &v\n\treturn s\n}\n\n// Represents a replica to be created.\ntype CreateReplicationGroupMemberAction struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Replica-specific global secondary index settings.\n\tGlobalSecondaryIndexes []*ReplicaGlobalSecondaryIndex `min:\"1\" type:\"list\"`\n\n\t// The KMS key that should be used for KMS encryption in the new replica. To\n\t// specify a key, use its key ID, Amazon Resource Name (ARN), alias name, or\n\t// alias ARN. Note that you should only provide this parameter if the key is\n\t// different from the default DynamoDB KMS key alias/aws/dynamodb.\n\tKMSMasterKeyId *string `type:\"string\"`\n\n\t// Replica-specific provisioned throughput. If not specified, uses the source\n\t// table's provisioned throughput settings.\n\tProvisionedThroughputOverride *ProvisionedThroughputOverride `type:\"structure\"`\n\n\t// The Region where the new replica will be created.\n\t//\n\t// RegionName is a required field\n\tRegionName *string `type:\"string\" required:\"true\"`\n\n\t// Replica-specific table class. If not specified, uses the source table's table\n\t// class.\n\tTableClassOverride *string `type:\"string\" enum:\"TableClass\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateReplicationGroupMemberAction) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateReplicationGroupMemberAction) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateReplicationGroupMemberAction) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateReplicationGroupMemberAction\"}\n\tif s.GlobalSecondaryIndexes != nil && len(s.GlobalSecondaryIndexes) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"GlobalSecondaryIndexes\", 1))\n\t}\n\tif s.RegionName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RegionName\"))\n\t}\n\tif s.GlobalSecondaryIndexes != nil {\n\t\tfor i, v := range s.GlobalSecondaryIndexes {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"GlobalSecondaryIndexes\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ProvisionedThroughputOverride != nil {\n\t\tif err := s.ProvisionedThroughputOverride.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedThroughputOverride\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.\nfunc (s *CreateReplicationGroupMemberAction) SetGlobalSecondaryIndexes(v []*ReplicaGlobalSecondaryIndex) *CreateReplicationGroupMemberAction {\n\ts.GlobalSecondaryIndexes = v\n\treturn s\n}\n\n// SetKMSMasterKeyId sets the KMSMasterKeyId field's value.\nfunc (s *CreateReplicationGroupMemberAction) SetKMSMasterKeyId(v string) *CreateReplicationGroupMemberAction {\n\ts.KMSMasterKeyId = &v\n\treturn s\n}\n\n// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.\nfunc (s *CreateReplicationGroupMemberAction) SetProvisionedThroughputOverride(v *ProvisionedThroughputOverride) *CreateReplicationGroupMemberAction {\n\ts.ProvisionedThroughputOverride = v\n\treturn s\n}\n\n// SetRegionName sets the RegionName field's value.\nfunc (s *CreateReplicationGroupMemberAction) SetRegionName(v string) *CreateReplicationGroupMemberAction {\n\ts.RegionName = &v\n\treturn s\n}\n\n// SetTableClassOverride sets the TableClassOverride field's value.\nfunc (s *CreateReplicationGroupMemberAction) SetTableClassOverride(v string) *CreateReplicationGroupMemberAction {\n\ts.TableClassOverride = &v\n\treturn s\n}\n\n// Represents the input of a CreateTable operation.\ntype CreateTableInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// An array of attributes that describe the key schema for the table and indexes.\n\t//\n\t// AttributeDefinitions is a required field\n\tAttributeDefinitions []*AttributeDefinition `type:\"list\" required:\"true\"`\n\n\t// Controls how you are charged for read and write throughput and how you manage\n\t// capacity. This setting can be changed later.\n\t//\n\t//    * PROVISIONED - We recommend using PROVISIONED for predictable workloads.\n\t//    PROVISIONED sets the billing mode to Provisioned Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual).\n\t//\n\t//    * PAY_PER_REQUEST - We recommend using PAY_PER_REQUEST for unpredictable\n\t//    workloads. PAY_PER_REQUEST sets the billing mode to On-Demand Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand).\n\tBillingMode *string `type:\"string\" enum:\"BillingMode\"`\n\n\t// Indicates whether deletion protection is to be enabled (true) or disabled\n\t// (false) on the table.\n\tDeletionProtectionEnabled *bool `type:\"boolean\"`\n\n\t// One or more global secondary indexes (the maximum is 20) to be created on\n\t// the table. Each global secondary index in the array includes the following:\n\t//\n\t//    * IndexName - The name of the global secondary index. Must be unique only\n\t//    for this table.\n\t//\n\t//    * KeySchema - Specifies the key schema for the global secondary index.\n\t//\n\t//    * Projection - Specifies attributes that are copied (projected) from the\n\t//    table into the index. These are in addition to the primary key attributes\n\t//    and index key attributes, which are automatically projected. Each attribute\n\t//    specification is composed of: ProjectionType - One of the following: KEYS_ONLY\n\t//    - Only the index and primary keys are projected into the index. INCLUDE\n\t//    - Only the specified table attributes are projected into the index. The\n\t//    list of projected attributes is in NonKeyAttributes. ALL - All of the\n\t//    table attributes are projected into the index. NonKeyAttributes - A list\n\t//    of one or more non-key attribute names that are projected into the secondary\n\t//    index. The total count of attributes provided in NonKeyAttributes, summed\n\t//    across all of the secondary indexes, must not exceed 100. If you project\n\t//    the same attribute into two different indexes, this counts as two distinct\n\t//    attributes when determining the total.\n\t//\n\t//    * ProvisionedThroughput - The provisioned throughput settings for the\n\t//    global secondary index, consisting of read and write capacity units.\n\tGlobalSecondaryIndexes []*GlobalSecondaryIndex `type:\"list\"`\n\n\t// Specifies the attributes that make up the primary key for a table or an index.\n\t// The attributes in KeySchema must also be defined in the AttributeDefinitions\n\t// array. For more information, see Data Model (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\t//\n\t// Each KeySchemaElement in the array is composed of:\n\t//\n\t//    * AttributeName - The name of this key attribute.\n\t//\n\t//    * KeyType - The role that the key attribute will assume: HASH - partition\n\t//    key RANGE - sort key\n\t//\n\t// The partition key of an item is also known as its hash attribute. The term\n\t// \"hash attribute\" derives from the DynamoDB usage of an internal hash function\n\t// to evenly distribute data items across partitions, based on their partition\n\t// key values.\n\t//\n\t// The sort key of an item is also known as its range attribute. The term \"range\n\t// attribute\" derives from the way DynamoDB stores items with the same partition\n\t// key physically close together, in sorted order by the sort key value.\n\t//\n\t// For a simple primary key (partition key), you must provide exactly one element\n\t// with a KeyType of HASH.\n\t//\n\t// For a composite primary key (partition key and sort key), you must provide\n\t// exactly two elements, in this order: The first element must have a KeyType\n\t// of HASH, and the second element must have a KeyType of RANGE.\n\t//\n\t// For more information, see Working with Tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key)\n\t// in the Amazon DynamoDB Developer Guide.\n\t//\n\t// KeySchema is a required field\n\tKeySchema []*KeySchemaElement `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// One or more local secondary indexes (the maximum is 5) to be created on the\n\t// table. Each index is scoped to a given partition key value. There is a 10\n\t// GB size limit per partition key value; otherwise, the size of a local secondary\n\t// index is unconstrained.\n\t//\n\t// Each local secondary index in the array includes the following:\n\t//\n\t//    * IndexName - The name of the local secondary index. Must be unique only\n\t//    for this table.\n\t//\n\t//    * KeySchema - Specifies the key schema for the local secondary index.\n\t//    The key schema must begin with the same partition key as the table.\n\t//\n\t//    * Projection - Specifies attributes that are copied (projected) from the\n\t//    table into the index. These are in addition to the primary key attributes\n\t//    and index key attributes, which are automatically projected. Each attribute\n\t//    specification is composed of: ProjectionType - One of the following: KEYS_ONLY\n\t//    - Only the index and primary keys are projected into the index. INCLUDE\n\t//    - Only the specified table attributes are projected into the index. The\n\t//    list of projected attributes is in NonKeyAttributes. ALL - All of the\n\t//    table attributes are projected into the index. NonKeyAttributes - A list\n\t//    of one or more non-key attribute names that are projected into the secondary\n\t//    index. The total count of attributes provided in NonKeyAttributes, summed\n\t//    across all of the secondary indexes, must not exceed 100. If you project\n\t//    the same attribute into two different indexes, this counts as two distinct\n\t//    attributes when determining the total.\n\tLocalSecondaryIndexes []*LocalSecondaryIndex `type:\"list\"`\n\n\t// Represents the provisioned throughput settings for a specified table or index.\n\t// The settings can be modified using the UpdateTable operation.\n\t//\n\t// If you set BillingMode as PROVISIONED, you must specify this property. If\n\t// you set BillingMode as PAY_PER_REQUEST, you cannot specify this property.\n\t//\n\t// For current minimum and maximum provisioned throughput values, see Service,\n\t// Account, and Table Quotas (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tProvisionedThroughput *ProvisionedThroughput `type:\"structure\"`\n\n\t// Represents the settings used to enable server-side encryption.\n\tSSESpecification *SSESpecification `type:\"structure\"`\n\n\t// The settings for DynamoDB Streams on the table. These settings consist of:\n\t//\n\t//    * StreamEnabled - Indicates whether DynamoDB Streams is to be enabled\n\t//    (true) or disabled (false).\n\t//\n\t//    * StreamViewType - When an item in the table is modified, StreamViewType\n\t//    determines what information is written to the table's stream. Valid values\n\t//    for StreamViewType are: KEYS_ONLY - Only the key attributes of the modified\n\t//    item are written to the stream. NEW_IMAGE - The entire item, as it appears\n\t//    after it was modified, is written to the stream. OLD_IMAGE - The entire\n\t//    item, as it appeared before it was modified, is written to the stream.\n\t//    NEW_AND_OLD_IMAGES - Both the new and the old item images of the item\n\t//    are written to the stream.\n\tStreamSpecification *StreamSpecification `type:\"structure\"`\n\n\t// The table class of the new table. Valid values are STANDARD and STANDARD_INFREQUENT_ACCESS.\n\tTableClass *string `type:\"string\" enum:\"TableClass\"`\n\n\t// The name of the table to create.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// A list of key-value pairs to label the table. For more information, see Tagging\n\t// for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html).\n\tTags []*Tag `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateTableInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateTableInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateTableInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateTableInput\"}\n\tif s.AttributeDefinitions == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AttributeDefinitions\"))\n\t}\n\tif s.KeySchema == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"KeySchema\"))\n\t}\n\tif s.KeySchema != nil && len(s.KeySchema) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"KeySchema\", 1))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\tif s.AttributeDefinitions != nil {\n\t\tfor i, v := range s.AttributeDefinitions {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"AttributeDefinitions\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.GlobalSecondaryIndexes != nil {\n\t\tfor i, v := range s.GlobalSecondaryIndexes {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"GlobalSecondaryIndexes\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.KeySchema != nil {\n\t\tfor i, v := range s.KeySchema {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"KeySchema\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.LocalSecondaryIndexes != nil {\n\t\tfor i, v := range s.LocalSecondaryIndexes {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"LocalSecondaryIndexes\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ProvisionedThroughput != nil {\n\t\tif err := s.ProvisionedThroughput.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedThroughput\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.StreamSpecification != nil {\n\t\tif err := s.StreamSpecification.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"StreamSpecification\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttributeDefinitions sets the AttributeDefinitions field's value.\nfunc (s *CreateTableInput) SetAttributeDefinitions(v []*AttributeDefinition) *CreateTableInput {\n\ts.AttributeDefinitions = v\n\treturn s\n}\n\n// SetBillingMode sets the BillingMode field's value.\nfunc (s *CreateTableInput) SetBillingMode(v string) *CreateTableInput {\n\ts.BillingMode = &v\n\treturn s\n}\n\n// SetDeletionProtectionEnabled sets the DeletionProtectionEnabled field's value.\nfunc (s *CreateTableInput) SetDeletionProtectionEnabled(v bool) *CreateTableInput {\n\ts.DeletionProtectionEnabled = &v\n\treturn s\n}\n\n// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.\nfunc (s *CreateTableInput) SetGlobalSecondaryIndexes(v []*GlobalSecondaryIndex) *CreateTableInput {\n\ts.GlobalSecondaryIndexes = v\n\treturn s\n}\n\n// SetKeySchema sets the KeySchema field's value.\nfunc (s *CreateTableInput) SetKeySchema(v []*KeySchemaElement) *CreateTableInput {\n\ts.KeySchema = v\n\treturn s\n}\n\n// SetLocalSecondaryIndexes sets the LocalSecondaryIndexes field's value.\nfunc (s *CreateTableInput) SetLocalSecondaryIndexes(v []*LocalSecondaryIndex) *CreateTableInput {\n\ts.LocalSecondaryIndexes = v\n\treturn s\n}\n\n// SetProvisionedThroughput sets the ProvisionedThroughput field's value.\nfunc (s *CreateTableInput) SetProvisionedThroughput(v *ProvisionedThroughput) *CreateTableInput {\n\ts.ProvisionedThroughput = v\n\treturn s\n}\n\n// SetSSESpecification sets the SSESpecification field's value.\nfunc (s *CreateTableInput) SetSSESpecification(v *SSESpecification) *CreateTableInput {\n\ts.SSESpecification = v\n\treturn s\n}\n\n// SetStreamSpecification sets the StreamSpecification field's value.\nfunc (s *CreateTableInput) SetStreamSpecification(v *StreamSpecification) *CreateTableInput {\n\ts.StreamSpecification = v\n\treturn s\n}\n\n// SetTableClass sets the TableClass field's value.\nfunc (s *CreateTableInput) SetTableClass(v string) *CreateTableInput {\n\ts.TableClass = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *CreateTableInput) SetTableName(v string) *CreateTableInput {\n\ts.TableName = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *CreateTableInput) SetTags(v []*Tag) *CreateTableInput {\n\ts.Tags = v\n\treturn s\n}\n\n// Represents the output of a CreateTable operation.\ntype CreateTableOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the properties of the table.\n\tTableDescription *TableDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateTableOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateTableOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetTableDescription sets the TableDescription field's value.\nfunc (s *CreateTableOutput) SetTableDescription(v *TableDescription) *CreateTableOutput {\n\ts.TableDescription = v\n\treturn s\n}\n\n// Processing options for the CSV file being imported.\ntype CsvOptions struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The delimiter used for separating items in the CSV file being imported.\n\tDelimiter *string `min:\"1\" type:\"string\"`\n\n\t// List of the headers used to specify a common header for all source CSV files\n\t// being imported. If this field is specified then the first line of each CSV\n\t// file is treated as data instead of the header. If this field is not specified\n\t// the the first line of each CSV file is treated as the header.\n\tHeaderList []*string `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CsvOptions) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CsvOptions) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CsvOptions) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CsvOptions\"}\n\tif s.Delimiter != nil && len(*s.Delimiter) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Delimiter\", 1))\n\t}\n\tif s.HeaderList != nil && len(s.HeaderList) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"HeaderList\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDelimiter sets the Delimiter field's value.\nfunc (s *CsvOptions) SetDelimiter(v string) *CsvOptions {\n\ts.Delimiter = &v\n\treturn s\n}\n\n// SetHeaderList sets the HeaderList field's value.\nfunc (s *CsvOptions) SetHeaderList(v []*string) *CsvOptions {\n\ts.HeaderList = v\n\treturn s\n}\n\n// Represents a request to perform a DeleteItem operation.\ntype Delete struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A condition that must be satisfied in order for a conditional delete to succeed.\n\tConditionExpression *string `type:\"string\"`\n\n\t// One or more substitution tokens for attribute names in an expression.\n\tExpressionAttributeNames map[string]*string `type:\"map\"`\n\n\t// One or more values that can be substituted in an expression.\n\tExpressionAttributeValues map[string]*AttributeValue `type:\"map\"`\n\n\t// The primary key of the item to be deleted. Each element consists of an attribute\n\t// name and a value for that attribute.\n\t//\n\t// Key is a required field\n\tKey map[string]*AttributeValue `type:\"map\" required:\"true\"`\n\n\t// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the\n\t// Delete condition fails. For ReturnValuesOnConditionCheckFailure, the valid\n\t// values are: NONE and ALL_OLD.\n\tReturnValuesOnConditionCheckFailure *string `type:\"string\" enum:\"ReturnValuesOnConditionCheckFailure\"`\n\n\t// Name of the table in which the item to be deleted resides.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Delete) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Delete) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *Delete) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"Delete\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetConditionExpression sets the ConditionExpression field's value.\nfunc (s *Delete) SetConditionExpression(v string) *Delete {\n\ts.ConditionExpression = &v\n\treturn s\n}\n\n// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.\nfunc (s *Delete) SetExpressionAttributeNames(v map[string]*string) *Delete {\n\ts.ExpressionAttributeNames = v\n\treturn s\n}\n\n// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.\nfunc (s *Delete) SetExpressionAttributeValues(v map[string]*AttributeValue) *Delete {\n\ts.ExpressionAttributeValues = v\n\treturn s\n}\n\n// SetKey sets the Key field's value.\nfunc (s *Delete) SetKey(v map[string]*AttributeValue) *Delete {\n\ts.Key = v\n\treturn s\n}\n\n// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.\nfunc (s *Delete) SetReturnValuesOnConditionCheckFailure(v string) *Delete {\n\ts.ReturnValuesOnConditionCheckFailure = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *Delete) SetTableName(v string) *Delete {\n\ts.TableName = &v\n\treturn s\n}\n\ntype DeleteBackupInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ARN associated with the backup.\n\t//\n\t// BackupArn is a required field\n\tBackupArn *string `min:\"37\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteBackupInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteBackupInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteBackupInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteBackupInput\"}\n\tif s.BackupArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"BackupArn\"))\n\t}\n\tif s.BackupArn != nil && len(*s.BackupArn) < 37 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"BackupArn\", 37))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetBackupArn sets the BackupArn field's value.\nfunc (s *DeleteBackupInput) SetBackupArn(v string) *DeleteBackupInput {\n\ts.BackupArn = &v\n\treturn s\n}\n\ntype DeleteBackupOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Contains the description of the backup created for the table.\n\tBackupDescription *BackupDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteBackupOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteBackupOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetBackupDescription sets the BackupDescription field's value.\nfunc (s *DeleteBackupOutput) SetBackupDescription(v *BackupDescription) *DeleteBackupOutput {\n\ts.BackupDescription = v\n\treturn s\n}\n\n// Represents a global secondary index to be deleted from an existing table.\ntype DeleteGlobalSecondaryIndexAction struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index to be deleted.\n\t//\n\t// IndexName is a required field\n\tIndexName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteGlobalSecondaryIndexAction) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteGlobalSecondaryIndexAction) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteGlobalSecondaryIndexAction) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteGlobalSecondaryIndexAction\"}\n\tif s.IndexName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"IndexName\"))\n\t}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *DeleteGlobalSecondaryIndexAction) SetIndexName(v string) *DeleteGlobalSecondaryIndexAction {\n\ts.IndexName = &v\n\treturn s\n}\n\n// Represents the input of a DeleteItem operation.\ntype DeleteItemInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A condition that must be satisfied in order for a conditional DeleteItem\n\t// to succeed.\n\t//\n\t// An expression can contain any of the following:\n\t//\n\t//    * Functions: attribute_exists | attribute_not_exists | attribute_type\n\t//    | contains | begins_with | size These function names are case-sensitive.\n\t//\n\t//    * Comparison operators: = | <> | < | > | <= | >= | BETWEEN | IN\n\t//\n\t//    * Logical operators: AND | OR | NOT\n\t//\n\t// For more information about condition expressions, see Condition Expressions\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConditionExpression *string `type:\"string\"`\n\n\t// This is a legacy parameter. Use ConditionExpression instead. For more information,\n\t// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConditionalOperator *string `type:\"string\" enum:\"ConditionalOperator\"`\n\n\t// This is a legacy parameter. Use ConditionExpression instead. For more information,\n\t// see Expected (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.Expected.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpected map[string]*ExpectedAttributeValue `type:\"map\"`\n\n\t// One or more substitution tokens for attribute names in an expression. The\n\t// following are some use cases for using ExpressionAttributeNames:\n\t//\n\t//    * To access an attribute whose name conflicts with a DynamoDB reserved\n\t//    word.\n\t//\n\t//    * To create a placeholder for repeating occurrences of an attribute name\n\t//    in an expression.\n\t//\n\t//    * To prevent special characters in an attribute name from being misinterpreted\n\t//    in an expression.\n\t//\n\t// Use the # character in an expression to dereference an attribute name. For\n\t// example, consider the following attribute name:\n\t//\n\t//    * Percentile\n\t//\n\t// The name of this attribute conflicts with a reserved word, so it cannot be\n\t// used directly in an expression. (For the complete list of reserved words,\n\t// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)\n\t// in the Amazon DynamoDB Developer Guide). To work around this, you could specify\n\t// the following for ExpressionAttributeNames:\n\t//\n\t//    * {\"#P\":\"Percentile\"}\n\t//\n\t// You could then use this substitution in an expression, as in this example:\n\t//\n\t//    * #P = :val\n\t//\n\t// Tokens that begin with the : character are expression attribute values, which\n\t// are placeholders for the actual value at runtime.\n\t//\n\t// For more information on expression attribute names, see Specifying Item Attributes\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeNames map[string]*string `type:\"map\"`\n\n\t// One or more values that can be substituted in an expression.\n\t//\n\t// Use the : (colon) character in an expression to dereference an attribute\n\t// value. For example, suppose that you wanted to check whether the value of\n\t// the ProductStatus attribute was one of the following:\n\t//\n\t// Available | Backordered | Discontinued\n\t//\n\t// You would first need to specify ExpressionAttributeValues as follows:\n\t//\n\t// { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"}\n\t// }\n\t//\n\t// You could then use these values in an expression, such as this:\n\t//\n\t// ProductStatus IN (:avail, :back, :disc)\n\t//\n\t// For more information on expression attribute values, see Condition Expressions\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeValues map[string]*AttributeValue `type:\"map\"`\n\n\t// A map of attribute names to AttributeValue objects, representing the primary\n\t// key of the item to delete.\n\t//\n\t// For the primary key, you must provide all of the key attributes. For example,\n\t// with a simple primary key, you only need to provide a value for the partition\n\t// key. For a composite primary key, you must provide values for both the partition\n\t// key and the sort key.\n\t//\n\t// Key is a required field\n\tKey map[string]*AttributeValue `type:\"map\" required:\"true\"`\n\n\t// Determines the level of detail about either provisioned or on-demand throughput\n\t// consumption that is returned in the response:\n\t//\n\t//    * INDEXES - The response includes the aggregate ConsumedCapacity for the\n\t//    operation, together with ConsumedCapacity for each table and secondary\n\t//    index that was accessed. Note that some operations, such as GetItem and\n\t//    BatchGetItem, do not access any indexes at all. In these cases, specifying\n\t//    INDEXES will only return ConsumedCapacity information for table(s).\n\t//\n\t//    * TOTAL - The response includes only the aggregate ConsumedCapacity for\n\t//    the operation.\n\t//\n\t//    * NONE - No ConsumedCapacity details are included in the response.\n\tReturnConsumedCapacity *string `type:\"string\" enum:\"ReturnConsumedCapacity\"`\n\n\t// Determines whether item collection metrics are returned. If set to SIZE,\n\t// the response includes statistics about item collections, if any, that were\n\t// modified during the operation are returned in the response. If set to NONE\n\t// (the default), no statistics are returned.\n\tReturnItemCollectionMetrics *string `type:\"string\" enum:\"ReturnItemCollectionMetrics\"`\n\n\t// Use ReturnValues if you want to get the item attributes as they appeared\n\t// before they were deleted. For DeleteItem, the valid values are:\n\t//\n\t//    * NONE - If ReturnValues is not specified, or if its value is NONE, then\n\t//    nothing is returned. (This setting is the default for ReturnValues.)\n\t//\n\t//    * ALL_OLD - The content of the old item is returned.\n\t//\n\t// There is no additional cost associated with requesting a return value aside\n\t// from the small network and processing overhead of receiving a larger response.\n\t// No read capacity units are consumed.\n\t//\n\t// The ReturnValues parameter is used by several DynamoDB operations; however,\n\t// DeleteItem does not recognize any values other than NONE or ALL_OLD.\n\tReturnValues *string `type:\"string\" enum:\"ReturnValue\"`\n\n\t// An optional parameter that returns the item attributes for a DeleteItem operation\n\t// that failed a condition check.\n\t//\n\t// There is no additional cost associated with requesting a return value aside\n\t// from the small network and processing overhead of receiving a larger response.\n\t// No read capacity units are consumed.\n\tReturnValuesOnConditionCheckFailure *string `type:\"string\" enum:\"ReturnValuesOnConditionCheckFailure\"`\n\n\t// The name of the table from which to delete the item.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteItemInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteItemInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteItemInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteItemInput\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetConditionExpression sets the ConditionExpression field's value.\nfunc (s *DeleteItemInput) SetConditionExpression(v string) *DeleteItemInput {\n\ts.ConditionExpression = &v\n\treturn s\n}\n\n// SetConditionalOperator sets the ConditionalOperator field's value.\nfunc (s *DeleteItemInput) SetConditionalOperator(v string) *DeleteItemInput {\n\ts.ConditionalOperator = &v\n\treturn s\n}\n\n// SetExpected sets the Expected field's value.\nfunc (s *DeleteItemInput) SetExpected(v map[string]*ExpectedAttributeValue) *DeleteItemInput {\n\ts.Expected = v\n\treturn s\n}\n\n// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.\nfunc (s *DeleteItemInput) SetExpressionAttributeNames(v map[string]*string) *DeleteItemInput {\n\ts.ExpressionAttributeNames = v\n\treturn s\n}\n\n// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.\nfunc (s *DeleteItemInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *DeleteItemInput {\n\ts.ExpressionAttributeValues = v\n\treturn s\n}\n\n// SetKey sets the Key field's value.\nfunc (s *DeleteItemInput) SetKey(v map[string]*AttributeValue) *DeleteItemInput {\n\ts.Key = v\n\treturn s\n}\n\n// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.\nfunc (s *DeleteItemInput) SetReturnConsumedCapacity(v string) *DeleteItemInput {\n\ts.ReturnConsumedCapacity = &v\n\treturn s\n}\n\n// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.\nfunc (s *DeleteItemInput) SetReturnItemCollectionMetrics(v string) *DeleteItemInput {\n\ts.ReturnItemCollectionMetrics = &v\n\treturn s\n}\n\n// SetReturnValues sets the ReturnValues field's value.\nfunc (s *DeleteItemInput) SetReturnValues(v string) *DeleteItemInput {\n\ts.ReturnValues = &v\n\treturn s\n}\n\n// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.\nfunc (s *DeleteItemInput) SetReturnValuesOnConditionCheckFailure(v string) *DeleteItemInput {\n\ts.ReturnValuesOnConditionCheckFailure = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *DeleteItemInput) SetTableName(v string) *DeleteItemInput {\n\ts.TableName = &v\n\treturn s\n}\n\n// Represents the output of a DeleteItem operation.\ntype DeleteItemOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A map of attribute names to AttributeValue objects, representing the item\n\t// as it appeared before the DeleteItem operation. This map appears in the response\n\t// only if ReturnValues was specified as ALL_OLD in the request.\n\tAttributes map[string]*AttributeValue `type:\"map\"`\n\n\t// The capacity units consumed by the DeleteItem operation. The data returned\n\t// includes the total provisioned throughput consumed, along with statistics\n\t// for the table and any indexes involved in the operation. ConsumedCapacity\n\t// is only returned if the ReturnConsumedCapacity parameter was specified. For\n\t// more information, see Provisioned Throughput (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConsumedCapacity *ConsumedCapacity `type:\"structure\"`\n\n\t// Information about item collections, if any, that were affected by the DeleteItem\n\t// operation. ItemCollectionMetrics is only returned if the ReturnItemCollectionMetrics\n\t// parameter was specified. If the table does not have any local secondary indexes,\n\t// this information is not returned in the response.\n\t//\n\t// Each ItemCollectionMetrics element consists of:\n\t//\n\t//    * ItemCollectionKey - The partition key value of the item collection.\n\t//    This is the same as the partition key value of the item itself.\n\t//\n\t//    * SizeEstimateRangeGB - An estimate of item collection size, in gigabytes.\n\t//    This value is a two-element array containing a lower bound and an upper\n\t//    bound for the estimate. The estimate includes the size of all the items\n\t//    in the table, plus the size of all attributes projected into all of the\n\t//    local secondary indexes on that table. Use this estimate to measure whether\n\t//    a local secondary index is approaching its size limit. The estimate is\n\t//    subject to change over time; therefore, do not rely on the precision or\n\t//    accuracy of the estimate.\n\tItemCollectionMetrics *ItemCollectionMetrics `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteItemOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteItemOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAttributes sets the Attributes field's value.\nfunc (s *DeleteItemOutput) SetAttributes(v map[string]*AttributeValue) *DeleteItemOutput {\n\ts.Attributes = v\n\treturn s\n}\n\n// SetConsumedCapacity sets the ConsumedCapacity field's value.\nfunc (s *DeleteItemOutput) SetConsumedCapacity(v *ConsumedCapacity) *DeleteItemOutput {\n\ts.ConsumedCapacity = v\n\treturn s\n}\n\n// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.\nfunc (s *DeleteItemOutput) SetItemCollectionMetrics(v *ItemCollectionMetrics) *DeleteItemOutput {\n\ts.ItemCollectionMetrics = v\n\treturn s\n}\n\n// Represents a replica to be removed.\ntype DeleteReplicaAction struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Region of the replica to be removed.\n\t//\n\t// RegionName is a required field\n\tRegionName *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteReplicaAction) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteReplicaAction) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteReplicaAction) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteReplicaAction\"}\n\tif s.RegionName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RegionName\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetRegionName sets the RegionName field's value.\nfunc (s *DeleteReplicaAction) SetRegionName(v string) *DeleteReplicaAction {\n\ts.RegionName = &v\n\treturn s\n}\n\n// Represents a replica to be deleted.\ntype DeleteReplicationGroupMemberAction struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Region where the replica exists.\n\t//\n\t// RegionName is a required field\n\tRegionName *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteReplicationGroupMemberAction) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteReplicationGroupMemberAction) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteReplicationGroupMemberAction) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteReplicationGroupMemberAction\"}\n\tif s.RegionName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RegionName\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetRegionName sets the RegionName field's value.\nfunc (s *DeleteReplicationGroupMemberAction) SetRegionName(v string) *DeleteReplicationGroupMemberAction {\n\ts.RegionName = &v\n\treturn s\n}\n\n// Represents a request to perform a DeleteItem operation on an item.\ntype DeleteRequest struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A map of attribute name to attribute values, representing the primary key\n\t// of the item to delete. All of the table's primary key attributes must be\n\t// specified, and their data types must match those of the table's key schema.\n\t//\n\t// Key is a required field\n\tKey map[string]*AttributeValue `type:\"map\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteRequest) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteRequest) GoString() string {\n\treturn s.String()\n}\n\n// SetKey sets the Key field's value.\nfunc (s *DeleteRequest) SetKey(v map[string]*AttributeValue) *DeleteRequest {\n\ts.Key = v\n\treturn s\n}\n\n// Represents the input of a DeleteTable operation.\ntype DeleteTableInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the table to delete.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteTableInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteTableInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteTableInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteTableInput\"}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *DeleteTableInput) SetTableName(v string) *DeleteTableInput {\n\ts.TableName = &v\n\treturn s\n}\n\n// Represents the output of a DeleteTable operation.\ntype DeleteTableOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the properties of a table.\n\tTableDescription *TableDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteTableOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteTableOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetTableDescription sets the TableDescription field's value.\nfunc (s *DeleteTableOutput) SetTableDescription(v *TableDescription) *DeleteTableOutput {\n\ts.TableDescription = v\n\treturn s\n}\n\ntype DescribeBackupInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) associated with the backup.\n\t//\n\t// BackupArn is a required field\n\tBackupArn *string `min:\"37\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeBackupInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeBackupInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeBackupInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeBackupInput\"}\n\tif s.BackupArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"BackupArn\"))\n\t}\n\tif s.BackupArn != nil && len(*s.BackupArn) < 37 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"BackupArn\", 37))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetBackupArn sets the BackupArn field's value.\nfunc (s *DescribeBackupInput) SetBackupArn(v string) *DescribeBackupInput {\n\ts.BackupArn = &v\n\treturn s\n}\n\ntype DescribeBackupOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Contains the description of the backup created for the table.\n\tBackupDescription *BackupDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeBackupOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeBackupOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetBackupDescription sets the BackupDescription field's value.\nfunc (s *DescribeBackupOutput) SetBackupDescription(v *BackupDescription) *DescribeBackupOutput {\n\ts.BackupDescription = v\n\treturn s\n}\n\ntype DescribeContinuousBackupsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Name of the table for which the customer wants to check the continuous backups\n\t// and point in time recovery settings.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeContinuousBackupsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeContinuousBackupsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeContinuousBackupsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeContinuousBackupsInput\"}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *DescribeContinuousBackupsInput) SetTableName(v string) *DescribeContinuousBackupsInput {\n\ts.TableName = &v\n\treturn s\n}\n\ntype DescribeContinuousBackupsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the continuous backups and point in time recovery settings on\n\t// the table.\n\tContinuousBackupsDescription *ContinuousBackupsDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeContinuousBackupsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeContinuousBackupsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetContinuousBackupsDescription sets the ContinuousBackupsDescription field's value.\nfunc (s *DescribeContinuousBackupsOutput) SetContinuousBackupsDescription(v *ContinuousBackupsDescription) *DescribeContinuousBackupsOutput {\n\ts.ContinuousBackupsDescription = v\n\treturn s\n}\n\ntype DescribeContributorInsightsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index to describe, if applicable.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// The name of the table to describe.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeContributorInsightsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeContributorInsightsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeContributorInsightsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeContributorInsightsInput\"}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *DescribeContributorInsightsInput) SetIndexName(v string) *DescribeContributorInsightsInput {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *DescribeContributorInsightsInput) SetTableName(v string) *DescribeContributorInsightsInput {\n\ts.TableName = &v\n\treturn s\n}\n\ntype DescribeContributorInsightsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// List of names of the associated contributor insights rules.\n\tContributorInsightsRuleList []*string `type:\"list\"`\n\n\t// Current status of contributor insights.\n\tContributorInsightsStatus *string `type:\"string\" enum:\"ContributorInsightsStatus\"`\n\n\t// Returns information about the last failure that was encountered.\n\t//\n\t// The most common exceptions for a FAILED status are:\n\t//\n\t//    * LimitExceededException - Per-account Amazon CloudWatch Contributor Insights\n\t//    rule limit reached. Please disable Contributor Insights for other tables/indexes\n\t//    OR disable Contributor Insights rules before retrying.\n\t//\n\t//    * AccessDeniedException - Amazon CloudWatch Contributor Insights rules\n\t//    cannot be modified due to insufficient permissions.\n\t//\n\t//    * AccessDeniedException - Failed to create service-linked role for Contributor\n\t//    Insights due to insufficient permissions.\n\t//\n\t//    * InternalServerError - Failed to create Amazon CloudWatch Contributor\n\t//    Insights rules. Please retry request.\n\tFailureException *FailureException `type:\"structure\"`\n\n\t// The name of the global secondary index being described.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// Timestamp of the last time the status was changed.\n\tLastUpdateDateTime *time.Time `type:\"timestamp\"`\n\n\t// The name of the table being described.\n\tTableName *string `min:\"3\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeContributorInsightsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeContributorInsightsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetContributorInsightsRuleList sets the ContributorInsightsRuleList field's value.\nfunc (s *DescribeContributorInsightsOutput) SetContributorInsightsRuleList(v []*string) *DescribeContributorInsightsOutput {\n\ts.ContributorInsightsRuleList = v\n\treturn s\n}\n\n// SetContributorInsightsStatus sets the ContributorInsightsStatus field's value.\nfunc (s *DescribeContributorInsightsOutput) SetContributorInsightsStatus(v string) *DescribeContributorInsightsOutput {\n\ts.ContributorInsightsStatus = &v\n\treturn s\n}\n\n// SetFailureException sets the FailureException field's value.\nfunc (s *DescribeContributorInsightsOutput) SetFailureException(v *FailureException) *DescribeContributorInsightsOutput {\n\ts.FailureException = v\n\treturn s\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *DescribeContributorInsightsOutput) SetIndexName(v string) *DescribeContributorInsightsOutput {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetLastUpdateDateTime sets the LastUpdateDateTime field's value.\nfunc (s *DescribeContributorInsightsOutput) SetLastUpdateDateTime(v time.Time) *DescribeContributorInsightsOutput {\n\ts.LastUpdateDateTime = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *DescribeContributorInsightsOutput) SetTableName(v string) *DescribeContributorInsightsOutput {\n\ts.TableName = &v\n\treturn s\n}\n\ntype DescribeEndpointsInput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeEndpointsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeEndpointsInput) GoString() string {\n\treturn s.String()\n}\n\ntype DescribeEndpointsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// List of endpoints.\n\t//\n\t// Endpoints is a required field\n\tEndpoints []*Endpoint `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeEndpointsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeEndpointsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetEndpoints sets the Endpoints field's value.\nfunc (s *DescribeEndpointsOutput) SetEndpoints(v []*Endpoint) *DescribeEndpointsOutput {\n\ts.Endpoints = v\n\treturn s\n}\n\ntype DescribeExportInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) associated with the export.\n\t//\n\t// ExportArn is a required field\n\tExportArn *string `min:\"37\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeExportInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeExportInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeExportInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeExportInput\"}\n\tif s.ExportArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ExportArn\"))\n\t}\n\tif s.ExportArn != nil && len(*s.ExportArn) < 37 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ExportArn\", 37))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetExportArn sets the ExportArn field's value.\nfunc (s *DescribeExportInput) SetExportArn(v string) *DescribeExportInput {\n\ts.ExportArn = &v\n\treturn s\n}\n\ntype DescribeExportOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the properties of the export.\n\tExportDescription *ExportDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeExportOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeExportOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetExportDescription sets the ExportDescription field's value.\nfunc (s *DescribeExportOutput) SetExportDescription(v *ExportDescription) *DescribeExportOutput {\n\ts.ExportDescription = v\n\treturn s\n}\n\ntype DescribeGlobalTableInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global table.\n\t//\n\t// GlobalTableName is a required field\n\tGlobalTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeGlobalTableInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeGlobalTableInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeGlobalTableInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeGlobalTableInput\"}\n\tif s.GlobalTableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"GlobalTableName\"))\n\t}\n\tif s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"GlobalTableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetGlobalTableName sets the GlobalTableName field's value.\nfunc (s *DescribeGlobalTableInput) SetGlobalTableName(v string) *DescribeGlobalTableInput {\n\ts.GlobalTableName = &v\n\treturn s\n}\n\ntype DescribeGlobalTableOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Contains the details of the global table.\n\tGlobalTableDescription *GlobalTableDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeGlobalTableOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeGlobalTableOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetGlobalTableDescription sets the GlobalTableDescription field's value.\nfunc (s *DescribeGlobalTableOutput) SetGlobalTableDescription(v *GlobalTableDescription) *DescribeGlobalTableOutput {\n\ts.GlobalTableDescription = v\n\treturn s\n}\n\ntype DescribeGlobalTableSettingsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global table to describe.\n\t//\n\t// GlobalTableName is a required field\n\tGlobalTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeGlobalTableSettingsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeGlobalTableSettingsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeGlobalTableSettingsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeGlobalTableSettingsInput\"}\n\tif s.GlobalTableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"GlobalTableName\"))\n\t}\n\tif s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"GlobalTableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetGlobalTableName sets the GlobalTableName field's value.\nfunc (s *DescribeGlobalTableSettingsInput) SetGlobalTableName(v string) *DescribeGlobalTableSettingsInput {\n\ts.GlobalTableName = &v\n\treturn s\n}\n\ntype DescribeGlobalTableSettingsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global table.\n\tGlobalTableName *string `min:\"3\" type:\"string\"`\n\n\t// The Region-specific settings for the global table.\n\tReplicaSettings []*ReplicaSettingsDescription `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeGlobalTableSettingsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeGlobalTableSettingsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetGlobalTableName sets the GlobalTableName field's value.\nfunc (s *DescribeGlobalTableSettingsOutput) SetGlobalTableName(v string) *DescribeGlobalTableSettingsOutput {\n\ts.GlobalTableName = &v\n\treturn s\n}\n\n// SetReplicaSettings sets the ReplicaSettings field's value.\nfunc (s *DescribeGlobalTableSettingsOutput) SetReplicaSettings(v []*ReplicaSettingsDescription) *DescribeGlobalTableSettingsOutput {\n\ts.ReplicaSettings = v\n\treturn s\n}\n\ntype DescribeImportInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) associated with the table you're importing\n\t// to.\n\t//\n\t// ImportArn is a required field\n\tImportArn *string `min:\"37\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeImportInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeImportInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeImportInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeImportInput\"}\n\tif s.ImportArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ImportArn\"))\n\t}\n\tif s.ImportArn != nil && len(*s.ImportArn) < 37 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ImportArn\", 37))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetImportArn sets the ImportArn field's value.\nfunc (s *DescribeImportInput) SetImportArn(v string) *DescribeImportInput {\n\ts.ImportArn = &v\n\treturn s\n}\n\ntype DescribeImportOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the properties of the table created for the import, and parameters\n\t// of the import. The import parameters include import status, how many items\n\t// were processed, and how many errors were encountered.\n\t//\n\t// ImportTableDescription is a required field\n\tImportTableDescription *ImportTableDescription `type:\"structure\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeImportOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeImportOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetImportTableDescription sets the ImportTableDescription field's value.\nfunc (s *DescribeImportOutput) SetImportTableDescription(v *ImportTableDescription) *DescribeImportOutput {\n\ts.ImportTableDescription = v\n\treturn s\n}\n\ntype DescribeKinesisStreamingDestinationInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the table being described.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeKinesisStreamingDestinationInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeKinesisStreamingDestinationInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeKinesisStreamingDestinationInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeKinesisStreamingDestinationInput\"}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *DescribeKinesisStreamingDestinationInput) SetTableName(v string) *DescribeKinesisStreamingDestinationInput {\n\ts.TableName = &v\n\treturn s\n}\n\ntype DescribeKinesisStreamingDestinationOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The list of replica structures for the table being described.\n\tKinesisDataStreamDestinations []*KinesisDataStreamDestination `type:\"list\"`\n\n\t// The name of the table being described.\n\tTableName *string `min:\"3\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeKinesisStreamingDestinationOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeKinesisStreamingDestinationOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetKinesisDataStreamDestinations sets the KinesisDataStreamDestinations field's value.\nfunc (s *DescribeKinesisStreamingDestinationOutput) SetKinesisDataStreamDestinations(v []*KinesisDataStreamDestination) *DescribeKinesisStreamingDestinationOutput {\n\ts.KinesisDataStreamDestinations = v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *DescribeKinesisStreamingDestinationOutput) SetTableName(v string) *DescribeKinesisStreamingDestinationOutput {\n\ts.TableName = &v\n\treturn s\n}\n\n// Represents the input of a DescribeLimits operation. Has no content.\ntype DescribeLimitsInput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeLimitsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeLimitsInput) GoString() string {\n\treturn s.String()\n}\n\n// Represents the output of a DescribeLimits operation.\ntype DescribeLimitsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The maximum total read capacity units that your account allows you to provision\n\t// across all of your tables in this Region.\n\tAccountMaxReadCapacityUnits *int64 `min:\"1\" type:\"long\"`\n\n\t// The maximum total write capacity units that your account allows you to provision\n\t// across all of your tables in this Region.\n\tAccountMaxWriteCapacityUnits *int64 `min:\"1\" type:\"long\"`\n\n\t// The maximum read capacity units that your account allows you to provision\n\t// for a new table that you are creating in this Region, including the read\n\t// capacity units provisioned for its global secondary indexes (GSIs).\n\tTableMaxReadCapacityUnits *int64 `min:\"1\" type:\"long\"`\n\n\t// The maximum write capacity units that your account allows you to provision\n\t// for a new table that you are creating in this Region, including the write\n\t// capacity units provisioned for its global secondary indexes (GSIs).\n\tTableMaxWriteCapacityUnits *int64 `min:\"1\" type:\"long\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeLimitsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeLimitsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAccountMaxReadCapacityUnits sets the AccountMaxReadCapacityUnits field's value.\nfunc (s *DescribeLimitsOutput) SetAccountMaxReadCapacityUnits(v int64) *DescribeLimitsOutput {\n\ts.AccountMaxReadCapacityUnits = &v\n\treturn s\n}\n\n// SetAccountMaxWriteCapacityUnits sets the AccountMaxWriteCapacityUnits field's value.\nfunc (s *DescribeLimitsOutput) SetAccountMaxWriteCapacityUnits(v int64) *DescribeLimitsOutput {\n\ts.AccountMaxWriteCapacityUnits = &v\n\treturn s\n}\n\n// SetTableMaxReadCapacityUnits sets the TableMaxReadCapacityUnits field's value.\nfunc (s *DescribeLimitsOutput) SetTableMaxReadCapacityUnits(v int64) *DescribeLimitsOutput {\n\ts.TableMaxReadCapacityUnits = &v\n\treturn s\n}\n\n// SetTableMaxWriteCapacityUnits sets the TableMaxWriteCapacityUnits field's value.\nfunc (s *DescribeLimitsOutput) SetTableMaxWriteCapacityUnits(v int64) *DescribeLimitsOutput {\n\ts.TableMaxWriteCapacityUnits = &v\n\treturn s\n}\n\n// Represents the input of a DescribeTable operation.\ntype DescribeTableInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the table to describe.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeTableInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeTableInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeTableInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeTableInput\"}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *DescribeTableInput) SetTableName(v string) *DescribeTableInput {\n\ts.TableName = &v\n\treturn s\n}\n\n// Represents the output of a DescribeTable operation.\ntype DescribeTableOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The properties of the table.\n\tTable *TableDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeTableOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeTableOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetTable sets the Table field's value.\nfunc (s *DescribeTableOutput) SetTable(v *TableDescription) *DescribeTableOutput {\n\ts.Table = v\n\treturn s\n}\n\ntype DescribeTableReplicaAutoScalingInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the table.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeTableReplicaAutoScalingInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeTableReplicaAutoScalingInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeTableReplicaAutoScalingInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeTableReplicaAutoScalingInput\"}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *DescribeTableReplicaAutoScalingInput) SetTableName(v string) *DescribeTableReplicaAutoScalingInput {\n\ts.TableName = &v\n\treturn s\n}\n\ntype DescribeTableReplicaAutoScalingOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the auto scaling properties of the table.\n\tTableAutoScalingDescription *TableAutoScalingDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeTableReplicaAutoScalingOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeTableReplicaAutoScalingOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetTableAutoScalingDescription sets the TableAutoScalingDescription field's value.\nfunc (s *DescribeTableReplicaAutoScalingOutput) SetTableAutoScalingDescription(v *TableAutoScalingDescription) *DescribeTableReplicaAutoScalingOutput {\n\ts.TableAutoScalingDescription = v\n\treturn s\n}\n\ntype DescribeTimeToLiveInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the table to be described.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeTimeToLiveInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeTimeToLiveInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeTimeToLiveInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeTimeToLiveInput\"}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *DescribeTimeToLiveInput) SetTableName(v string) *DescribeTimeToLiveInput {\n\ts.TableName = &v\n\treturn s\n}\n\ntype DescribeTimeToLiveOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The description of the Time to Live (TTL) status on the specified table.\n\tTimeToLiveDescription *TimeToLiveDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeTimeToLiveOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeTimeToLiveOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetTimeToLiveDescription sets the TimeToLiveDescription field's value.\nfunc (s *DescribeTimeToLiveOutput) SetTimeToLiveDescription(v *TimeToLiveDescription) *DescribeTimeToLiveOutput {\n\ts.TimeToLiveDescription = v\n\treturn s\n}\n\ntype DisableKinesisStreamingDestinationInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ARN for a Kinesis data stream.\n\t//\n\t// StreamArn is a required field\n\tStreamArn *string `min:\"37\" type:\"string\" required:\"true\"`\n\n\t// The name of the DynamoDB table.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DisableKinesisStreamingDestinationInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DisableKinesisStreamingDestinationInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DisableKinesisStreamingDestinationInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DisableKinesisStreamingDestinationInput\"}\n\tif s.StreamArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"StreamArn\"))\n\t}\n\tif s.StreamArn != nil && len(*s.StreamArn) < 37 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"StreamArn\", 37))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetStreamArn sets the StreamArn field's value.\nfunc (s *DisableKinesisStreamingDestinationInput) SetStreamArn(v string) *DisableKinesisStreamingDestinationInput {\n\ts.StreamArn = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *DisableKinesisStreamingDestinationInput) SetTableName(v string) *DisableKinesisStreamingDestinationInput {\n\ts.TableName = &v\n\treturn s\n}\n\ntype DisableKinesisStreamingDestinationOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The current status of the replication.\n\tDestinationStatus *string `type:\"string\" enum:\"DestinationStatus\"`\n\n\t// The ARN for the specific Kinesis data stream.\n\tStreamArn *string `min:\"37\" type:\"string\"`\n\n\t// The name of the table being modified.\n\tTableName *string `min:\"3\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DisableKinesisStreamingDestinationOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DisableKinesisStreamingDestinationOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetDestinationStatus sets the DestinationStatus field's value.\nfunc (s *DisableKinesisStreamingDestinationOutput) SetDestinationStatus(v string) *DisableKinesisStreamingDestinationOutput {\n\ts.DestinationStatus = &v\n\treturn s\n}\n\n// SetStreamArn sets the StreamArn field's value.\nfunc (s *DisableKinesisStreamingDestinationOutput) SetStreamArn(v string) *DisableKinesisStreamingDestinationOutput {\n\ts.StreamArn = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *DisableKinesisStreamingDestinationOutput) SetTableName(v string) *DisableKinesisStreamingDestinationOutput {\n\ts.TableName = &v\n\treturn s\n}\n\n// There was an attempt to insert an item with the same primary key as an item\n// that already exists in the DynamoDB table.\ntype DuplicateItemException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DuplicateItemException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DuplicateItemException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorDuplicateItemException(v protocol.ResponseMetadata) error {\n\treturn &DuplicateItemException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *DuplicateItemException) Code() string {\n\treturn \"DuplicateItemException\"\n}\n\n// Message returns the exception's message.\nfunc (s *DuplicateItemException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *DuplicateItemException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *DuplicateItemException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *DuplicateItemException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *DuplicateItemException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype EnableKinesisStreamingDestinationInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ARN for a Kinesis data stream.\n\t//\n\t// StreamArn is a required field\n\tStreamArn *string `min:\"37\" type:\"string\" required:\"true\"`\n\n\t// The name of the DynamoDB table.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s EnableKinesisStreamingDestinationInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s EnableKinesisStreamingDestinationInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *EnableKinesisStreamingDestinationInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"EnableKinesisStreamingDestinationInput\"}\n\tif s.StreamArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"StreamArn\"))\n\t}\n\tif s.StreamArn != nil && len(*s.StreamArn) < 37 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"StreamArn\", 37))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetStreamArn sets the StreamArn field's value.\nfunc (s *EnableKinesisStreamingDestinationInput) SetStreamArn(v string) *EnableKinesisStreamingDestinationInput {\n\ts.StreamArn = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *EnableKinesisStreamingDestinationInput) SetTableName(v string) *EnableKinesisStreamingDestinationInput {\n\ts.TableName = &v\n\treturn s\n}\n\ntype EnableKinesisStreamingDestinationOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The current status of the replication.\n\tDestinationStatus *string `type:\"string\" enum:\"DestinationStatus\"`\n\n\t// The ARN for the specific Kinesis data stream.\n\tStreamArn *string `min:\"37\" type:\"string\"`\n\n\t// The name of the table being modified.\n\tTableName *string `min:\"3\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s EnableKinesisStreamingDestinationOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s EnableKinesisStreamingDestinationOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetDestinationStatus sets the DestinationStatus field's value.\nfunc (s *EnableKinesisStreamingDestinationOutput) SetDestinationStatus(v string) *EnableKinesisStreamingDestinationOutput {\n\ts.DestinationStatus = &v\n\treturn s\n}\n\n// SetStreamArn sets the StreamArn field's value.\nfunc (s *EnableKinesisStreamingDestinationOutput) SetStreamArn(v string) *EnableKinesisStreamingDestinationOutput {\n\ts.StreamArn = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *EnableKinesisStreamingDestinationOutput) SetTableName(v string) *EnableKinesisStreamingDestinationOutput {\n\ts.TableName = &v\n\treturn s\n}\n\n// An endpoint information details.\ntype Endpoint struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// IP address of the endpoint.\n\t//\n\t// Address is a required field\n\tAddress *string `type:\"string\" required:\"true\"`\n\n\t// Endpoint cache time to live (TTL) value.\n\t//\n\t// CachePeriodInMinutes is a required field\n\tCachePeriodInMinutes *int64 `type:\"long\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Endpoint) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Endpoint) GoString() string {\n\treturn s.String()\n}\n\n// SetAddress sets the Address field's value.\nfunc (s *Endpoint) SetAddress(v string) *Endpoint {\n\ts.Address = &v\n\treturn s\n}\n\n// SetCachePeriodInMinutes sets the CachePeriodInMinutes field's value.\nfunc (s *Endpoint) SetCachePeriodInMinutes(v int64) *Endpoint {\n\ts.CachePeriodInMinutes = &v\n\treturn s\n}\n\ntype ExecuteStatementInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The consistency of a read operation. If set to true, then a strongly consistent\n\t// read is used; otherwise, an eventually consistent read is used.\n\tConsistentRead *bool `type:\"boolean\"`\n\n\t// The maximum number of items to evaluate (not necessarily the number of matching\n\t// items). If DynamoDB processes the number of items up to the limit while processing\n\t// the results, it stops the operation and returns the matching values up to\n\t// that point, along with a key in LastEvaluatedKey to apply in a subsequent\n\t// operation so you can pick up where you left off. Also, if the processed dataset\n\t// size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation\n\t// and returns the matching values up to the limit, and a key in LastEvaluatedKey\n\t// to apply in a subsequent operation to continue the operation.\n\tLimit *int64 `min:\"1\" type:\"integer\"`\n\n\t// Set this value to get remaining results, if NextToken was returned in the\n\t// statement response.\n\tNextToken *string `min:\"1\" type:\"string\"`\n\n\t// The parameters for the PartiQL statement, if any.\n\tParameters []*AttributeValue `min:\"1\" type:\"list\"`\n\n\t// Determines the level of detail about either provisioned or on-demand throughput\n\t// consumption that is returned in the response:\n\t//\n\t//    * INDEXES - The response includes the aggregate ConsumedCapacity for the\n\t//    operation, together with ConsumedCapacity for each table and secondary\n\t//    index that was accessed. Note that some operations, such as GetItem and\n\t//    BatchGetItem, do not access any indexes at all. In these cases, specifying\n\t//    INDEXES will only return ConsumedCapacity information for table(s).\n\t//\n\t//    * TOTAL - The response includes only the aggregate ConsumedCapacity for\n\t//    the operation.\n\t//\n\t//    * NONE - No ConsumedCapacity details are included in the response.\n\tReturnConsumedCapacity *string `type:\"string\" enum:\"ReturnConsumedCapacity\"`\n\n\t// An optional parameter that returns the item attributes for an ExecuteStatement\n\t// operation that failed a condition check.\n\t//\n\t// There is no additional cost associated with requesting a return value aside\n\t// from the small network and processing overhead of receiving a larger response.\n\t// No read capacity units are consumed.\n\tReturnValuesOnConditionCheckFailure *string `type:\"string\" enum:\"ReturnValuesOnConditionCheckFailure\"`\n\n\t// The PartiQL statement representing the operation to run.\n\t//\n\t// Statement is a required field\n\tStatement *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExecuteStatementInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExecuteStatementInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ExecuteStatementInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ExecuteStatementInput\"}\n\tif s.Limit != nil && *s.Limit < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"Limit\", 1))\n\t}\n\tif s.NextToken != nil && len(*s.NextToken) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"NextToken\", 1))\n\t}\n\tif s.Parameters != nil && len(s.Parameters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Parameters\", 1))\n\t}\n\tif s.Statement == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Statement\"))\n\t}\n\tif s.Statement != nil && len(*s.Statement) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Statement\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetConsistentRead sets the ConsistentRead field's value.\nfunc (s *ExecuteStatementInput) SetConsistentRead(v bool) *ExecuteStatementInput {\n\ts.ConsistentRead = &v\n\treturn s\n}\n\n// SetLimit sets the Limit field's value.\nfunc (s *ExecuteStatementInput) SetLimit(v int64) *ExecuteStatementInput {\n\ts.Limit = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ExecuteStatementInput) SetNextToken(v string) *ExecuteStatementInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *ExecuteStatementInput) SetParameters(v []*AttributeValue) *ExecuteStatementInput {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.\nfunc (s *ExecuteStatementInput) SetReturnConsumedCapacity(v string) *ExecuteStatementInput {\n\ts.ReturnConsumedCapacity = &v\n\treturn s\n}\n\n// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.\nfunc (s *ExecuteStatementInput) SetReturnValuesOnConditionCheckFailure(v string) *ExecuteStatementInput {\n\ts.ReturnValuesOnConditionCheckFailure = &v\n\treturn s\n}\n\n// SetStatement sets the Statement field's value.\nfunc (s *ExecuteStatementInput) SetStatement(v string) *ExecuteStatementInput {\n\ts.Statement = &v\n\treturn s\n}\n\ntype ExecuteStatementOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The capacity units consumed by an operation. The data returned includes the\n\t// total provisioned throughput consumed, along with statistics for the table\n\t// and any indexes involved in the operation. ConsumedCapacity is only returned\n\t// if the request asked for it. For more information, see Provisioned Throughput\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConsumedCapacity *ConsumedCapacity `type:\"structure\"`\n\n\t// If a read operation was used, this property will contain the result of the\n\t// read operation; a map of attribute names and their values. For the write\n\t// operations this value will be empty.\n\tItems []map[string]*AttributeValue `type:\"list\"`\n\n\t// The primary key of the item where the operation stopped, inclusive of the\n\t// previous result set. Use this value to start a new operation, excluding this\n\t// value in the new request. If LastEvaluatedKey is empty, then the \"last page\"\n\t// of results has been processed and there is no more data to be retrieved.\n\t// If LastEvaluatedKey is not empty, it does not necessarily mean that there\n\t// is more data in the result set. The only way to know when you have reached\n\t// the end of the result set is when LastEvaluatedKey is empty.\n\tLastEvaluatedKey map[string]*AttributeValue `type:\"map\"`\n\n\t// If the response of a read request exceeds the response payload limit DynamoDB\n\t// will set this value in the response. If set, you can use that this value\n\t// in the subsequent request to get the remaining results.\n\tNextToken *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExecuteStatementOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExecuteStatementOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetConsumedCapacity sets the ConsumedCapacity field's value.\nfunc (s *ExecuteStatementOutput) SetConsumedCapacity(v *ConsumedCapacity) *ExecuteStatementOutput {\n\ts.ConsumedCapacity = v\n\treturn s\n}\n\n// SetItems sets the Items field's value.\nfunc (s *ExecuteStatementOutput) SetItems(v []map[string]*AttributeValue) *ExecuteStatementOutput {\n\ts.Items = v\n\treturn s\n}\n\n// SetLastEvaluatedKey sets the LastEvaluatedKey field's value.\nfunc (s *ExecuteStatementOutput) SetLastEvaluatedKey(v map[string]*AttributeValue) *ExecuteStatementOutput {\n\ts.LastEvaluatedKey = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ExecuteStatementOutput) SetNextToken(v string) *ExecuteStatementOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ExecuteTransactionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Set this value to get remaining results, if NextToken was returned in the\n\t// statement response.\n\tClientRequestToken *string `min:\"1\" type:\"string\" idempotencyToken:\"true\"`\n\n\t// Determines the level of detail about either provisioned or on-demand throughput\n\t// consumption that is returned in the response. For more information, see TransactGetItems\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactGetItems.html)\n\t// and TransactWriteItems (https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactWriteItems.html).\n\tReturnConsumedCapacity *string `type:\"string\" enum:\"ReturnConsumedCapacity\"`\n\n\t// The list of PartiQL statements representing the transaction to run.\n\t//\n\t// TransactStatements is a required field\n\tTransactStatements []*ParameterizedStatement `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExecuteTransactionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExecuteTransactionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ExecuteTransactionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ExecuteTransactionInput\"}\n\tif s.ClientRequestToken != nil && len(*s.ClientRequestToken) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ClientRequestToken\", 1))\n\t}\n\tif s.TransactStatements == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TransactStatements\"))\n\t}\n\tif s.TransactStatements != nil && len(s.TransactStatements) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TransactStatements\", 1))\n\t}\n\tif s.TransactStatements != nil {\n\t\tfor i, v := range s.TransactStatements {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"TransactStatements\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetClientRequestToken sets the ClientRequestToken field's value.\nfunc (s *ExecuteTransactionInput) SetClientRequestToken(v string) *ExecuteTransactionInput {\n\ts.ClientRequestToken = &v\n\treturn s\n}\n\n// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.\nfunc (s *ExecuteTransactionInput) SetReturnConsumedCapacity(v string) *ExecuteTransactionInput {\n\ts.ReturnConsumedCapacity = &v\n\treturn s\n}\n\n// SetTransactStatements sets the TransactStatements field's value.\nfunc (s *ExecuteTransactionInput) SetTransactStatements(v []*ParameterizedStatement) *ExecuteTransactionInput {\n\ts.TransactStatements = v\n\treturn s\n}\n\ntype ExecuteTransactionOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The capacity units consumed by the entire operation. The values of the list\n\t// are ordered according to the ordering of the statements.\n\tConsumedCapacity []*ConsumedCapacity `type:\"list\"`\n\n\t// The response to a PartiQL transaction.\n\tResponses []*ItemResponse `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExecuteTransactionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExecuteTransactionOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetConsumedCapacity sets the ConsumedCapacity field's value.\nfunc (s *ExecuteTransactionOutput) SetConsumedCapacity(v []*ConsumedCapacity) *ExecuteTransactionOutput {\n\ts.ConsumedCapacity = v\n\treturn s\n}\n\n// SetResponses sets the Responses field's value.\nfunc (s *ExecuteTransactionOutput) SetResponses(v []*ItemResponse) *ExecuteTransactionOutput {\n\ts.Responses = v\n\treturn s\n}\n\n// Represents a condition to be compared with an attribute value. This condition\n// can be used with DeleteItem, PutItem, or UpdateItem operations; if the comparison\n// evaluates to true, the operation succeeds; if not, the operation fails. You\n// can use ExpectedAttributeValue in one of two different ways:\n//\n//   - Use AttributeValueList to specify one or more values to compare against\n//     an attribute. Use ComparisonOperator to specify how you want to perform\n//     the comparison. If the comparison evaluates to true, then the conditional\n//     operation succeeds.\n//\n//   - Use Value to specify a value that DynamoDB will compare against an attribute.\n//     If the values match, then ExpectedAttributeValue evaluates to true and\n//     the conditional operation succeeds. Optionally, you can also set Exists\n//     to false, indicating that you do not expect to find the attribute value\n//     in the table. In this case, the conditional operation succeeds only if\n//     the comparison evaluates to false.\n//\n// Value and Exists are incompatible with AttributeValueList and ComparisonOperator.\n// Note that if you use both sets of parameters at once, DynamoDB will return\n// a ValidationException exception.\ntype ExpectedAttributeValue struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more values to evaluate against the supplied attribute. The number\n\t// of values in the list depends on the ComparisonOperator being used.\n\t//\n\t// For type Number, value comparisons are numeric.\n\t//\n\t// String value comparisons for greater than, equals, or less than are based\n\t// on ASCII character code values. For example, a is greater than A, and a is\n\t// greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters\n\t// (http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters).\n\t//\n\t// For Binary, DynamoDB treats each byte of the binary data as unsigned when\n\t// it compares binary values.\n\t//\n\t// For information on specifying data types in JSON, see JSON Data Format (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tAttributeValueList []*AttributeValue `type:\"list\"`\n\n\t// A comparator for evaluating attributes in the AttributeValueList. For example,\n\t// equals, greater than, less than, etc.\n\t//\n\t// The following comparison operators are available:\n\t//\n\t// EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |\n\t// BEGINS_WITH | IN | BETWEEN\n\t//\n\t// The following are descriptions of each comparison operator.\n\t//\n\t//    * EQ : Equal. EQ is supported for all data types, including lists and\n\t//    maps. AttributeValueList can contain only one AttributeValue element of\n\t//    type String, Number, Binary, String Set, Number Set, or Binary Set. If\n\t//    an item contains an AttributeValue element of a different type than the\n\t//    one provided in the request, the value does not match. For example, {\"S\":\"6\"}\n\t//    does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\",\n\t//    \"1\"]}.\n\t//\n\t//    * NE : Not equal. NE is supported for all data types, including lists\n\t//    and maps. AttributeValueList can contain only one AttributeValue of type\n\t//    String, Number, Binary, String Set, Number Set, or Binary Set. If an item\n\t//    contains an AttributeValue of a different type than the one provided in\n\t//    the request, the value does not match. For example, {\"S\":\"6\"} does not\n\t//    equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.\n\t//\n\t//    * LE : Less than or equal. AttributeValueList can contain only one AttributeValue\n\t//    element of type String, Number, or Binary (not a set type). If an item\n\t//    contains an AttributeValue element of a different type than the one provided\n\t//    in the request, the value does not match. For example, {\"S\":\"6\"} does\n\t//    not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\",\n\t//    \"1\"]}.\n\t//\n\t//    * LT : Less than. AttributeValueList can contain only one AttributeValue\n\t//    of type String, Number, or Binary (not a set type). If an item contains\n\t//    an AttributeValue element of a different type than the one provided in\n\t//    the request, the value does not match. For example, {\"S\":\"6\"} does not\n\t//    equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\",\n\t//    \"1\"]}.\n\t//\n\t//    * GE : Greater than or equal. AttributeValueList can contain only one\n\t//    AttributeValue element of type String, Number, or Binary (not a set type).\n\t//    If an item contains an AttributeValue element of a different type than\n\t//    the one provided in the request, the value does not match. For example,\n\t//    {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to\n\t//    {\"NS\":[\"6\", \"2\", \"1\"]}.\n\t//\n\t//    * GT : Greater than. AttributeValueList can contain only one AttributeValue\n\t//    element of type String, Number, or Binary (not a set type). If an item\n\t//    contains an AttributeValue element of a different type than the one provided\n\t//    in the request, the value does not match. For example, {\"S\":\"6\"} does\n\t//    not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\",\n\t//    \"1\"]}.\n\t//\n\t//    * NOT_NULL : The attribute exists. NOT_NULL is supported for all data\n\t//    types, including lists and maps. This operator tests for the existence\n\t//    of an attribute, not its data type. If the data type of attribute \"a\"\n\t//    is null, and you evaluate it using NOT_NULL, the result is a Boolean true.\n\t//    This result is because the attribute \"a\" exists; its data type is not\n\t//    relevant to the NOT_NULL comparison operator.\n\t//\n\t//    * NULL : The attribute does not exist. NULL is supported for all data\n\t//    types, including lists and maps. This operator tests for the nonexistence\n\t//    of an attribute, not its data type. If the data type of attribute \"a\"\n\t//    is null, and you evaluate it using NULL, the result is a Boolean false.\n\t//    This is because the attribute \"a\" exists; its data type is not relevant\n\t//    to the NULL comparison operator.\n\t//\n\t//    * CONTAINS : Checks for a subsequence, or value in a set. AttributeValueList\n\t//    can contain only one AttributeValue element of type String, Number, or\n\t//    Binary (not a set type). If the target attribute of the comparison is\n\t//    of type String, then the operator checks for a substring match. If the\n\t//    target attribute of the comparison is of type Binary, then the operator\n\t//    looks for a subsequence of the target that matches the input. If the target\n\t//    attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the operator\n\t//    evaluates to true if it finds an exact match with any member of the set.\n\t//    CONTAINS is supported for lists: When evaluating \"a CONTAINS b\", \"a\" can\n\t//    be a list; however, \"b\" cannot be a set, a map, or a list.\n\t//\n\t//    * NOT_CONTAINS : Checks for absence of a subsequence, or absence of a\n\t//    value in a set. AttributeValueList can contain only one AttributeValue\n\t//    element of type String, Number, or Binary (not a set type). If the target\n\t//    attribute of the comparison is a String, then the operator checks for\n\t//    the absence of a substring match. If the target attribute of the comparison\n\t//    is Binary, then the operator checks for the absence of a subsequence of\n\t//    the target that matches the input. If the target attribute of the comparison\n\t//    is a set (\"SS\", \"NS\", or \"BS\"), then the operator evaluates to true if\n\t//    it does not find an exact match with any member of the set. NOT_CONTAINS\n\t//    is supported for lists: When evaluating \"a NOT CONTAINS b\", \"a\" can be\n\t//    a list; however, \"b\" cannot be a set, a map, or a list.\n\t//\n\t//    * BEGINS_WITH : Checks for a prefix. AttributeValueList can contain only\n\t//    one AttributeValue of type String or Binary (not a Number or a set type).\n\t//    The target attribute of the comparison must be of type String or Binary\n\t//    (not a Number or a set type).\n\t//\n\t//    * IN : Checks for matching elements in a list. AttributeValueList can\n\t//    contain one or more AttributeValue elements of type String, Number, or\n\t//    Binary. These attributes are compared against an existing attribute of\n\t//    an item. If any elements of the input are equal to the item attribute,\n\t//    the expression evaluates to true.\n\t//\n\t//    * BETWEEN : Greater than or equal to the first value, and less than or\n\t//    equal to the second value. AttributeValueList must contain two AttributeValue\n\t//    elements of the same type, either String, Number, or Binary (not a set\n\t//    type). A target attribute matches if the target value is greater than,\n\t//    or equal to, the first element and less than, or equal to, the second\n\t//    element. If an item contains an AttributeValue element of a different\n\t//    type than the one provided in the request, the value does not match. For\n\t//    example, {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also, {\"N\":\"6\"} does\n\t//    not compare to {\"NS\":[\"6\", \"2\", \"1\"]}\n\tComparisonOperator *string `type:\"string\" enum:\"ComparisonOperator\"`\n\n\t// Causes DynamoDB to evaluate the value before attempting a conditional operation:\n\t//\n\t//    * If Exists is true, DynamoDB will check to see if that attribute value\n\t//    already exists in the table. If it is found, then the operation succeeds.\n\t//    If it is not found, the operation fails with a ConditionCheckFailedException.\n\t//\n\t//    * If Exists is false, DynamoDB assumes that the attribute value does not\n\t//    exist in the table. If in fact the value does not exist, then the assumption\n\t//    is valid and the operation succeeds. If the value is found, despite the\n\t//    assumption that it does not exist, the operation fails with a ConditionCheckFailedException.\n\t//\n\t// The default setting for Exists is true. If you supply a Value all by itself,\n\t// DynamoDB assumes the attribute exists: You don't have to set Exists to true,\n\t// because it is implied.\n\t//\n\t// DynamoDB returns a ValidationException if:\n\t//\n\t//    * Exists is true but there is no Value to check. (You expect a value to\n\t//    exist, but don't specify what that value is.)\n\t//\n\t//    * Exists is false but you also provide a Value. (You cannot expect an\n\t//    attribute to have a value, while also expecting it not to exist.)\n\tExists *bool `type:\"boolean\"`\n\n\t// Represents the data for the expected attribute.\n\t//\n\t// Each attribute value is described as a name-value pair. The name is the data\n\t// type, and the value is the data itself.\n\t//\n\t// For more information, see Data Types (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes)\n\t// in the Amazon DynamoDB Developer Guide.\n\tValue *AttributeValue `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExpectedAttributeValue) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExpectedAttributeValue) GoString() string {\n\treturn s.String()\n}\n\n// SetAttributeValueList sets the AttributeValueList field's value.\nfunc (s *ExpectedAttributeValue) SetAttributeValueList(v []*AttributeValue) *ExpectedAttributeValue {\n\ts.AttributeValueList = v\n\treturn s\n}\n\n// SetComparisonOperator sets the ComparisonOperator field's value.\nfunc (s *ExpectedAttributeValue) SetComparisonOperator(v string) *ExpectedAttributeValue {\n\ts.ComparisonOperator = &v\n\treturn s\n}\n\n// SetExists sets the Exists field's value.\nfunc (s *ExpectedAttributeValue) SetExists(v bool) *ExpectedAttributeValue {\n\ts.Exists = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *ExpectedAttributeValue) SetValue(v *AttributeValue) *ExpectedAttributeValue {\n\ts.Value = v\n\treturn s\n}\n\n// There was a conflict when writing to the specified S3 bucket.\ntype ExportConflictException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExportConflictException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExportConflictException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorExportConflictException(v protocol.ResponseMetadata) error {\n\treturn &ExportConflictException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ExportConflictException) Code() string {\n\treturn \"ExportConflictException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ExportConflictException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ExportConflictException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ExportConflictException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ExportConflictException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ExportConflictException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Represents the properties of the exported table.\ntype ExportDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The billable size of the table export.\n\tBilledSizeBytes *int64 `type:\"long\"`\n\n\t// The client token that was provided for the export task. A client token makes\n\t// calls to ExportTableToPointInTimeInput idempotent, meaning that multiple\n\t// identical calls have the same effect as one single call.\n\tClientToken *string `type:\"string\"`\n\n\t// The time at which the export task completed.\n\tEndTime *time.Time `type:\"timestamp\"`\n\n\t// The Amazon Resource Name (ARN) of the table export.\n\tExportArn *string `min:\"37\" type:\"string\"`\n\n\t// The format of the exported data. Valid values for ExportFormat are DYNAMODB_JSON\n\t// or ION.\n\tExportFormat *string `type:\"string\" enum:\"ExportFormat\"`\n\n\t// The name of the manifest file for the export task.\n\tExportManifest *string `type:\"string\"`\n\n\t// Export can be in one of the following states: IN_PROGRESS, COMPLETED, or\n\t// FAILED.\n\tExportStatus *string `type:\"string\" enum:\"ExportStatus\"`\n\n\t// Point in time from which table data was exported.\n\tExportTime *time.Time `type:\"timestamp\"`\n\n\t// The type of export that was performed. Valid values are FULL_EXPORT or INCREMENTAL_EXPORT.\n\tExportType *string `type:\"string\" enum:\"ExportType\"`\n\n\t// Status code for the result of the failed export.\n\tFailureCode *string `type:\"string\"`\n\n\t// Export failure reason description.\n\tFailureMessage *string `type:\"string\"`\n\n\t// Optional object containing the parameters specific to an incremental export.\n\tIncrementalExportSpecification *IncrementalExportSpecification `type:\"structure\"`\n\n\t// The number of items exported.\n\tItemCount *int64 `type:\"long\"`\n\n\t// The name of the Amazon S3 bucket containing the export.\n\tS3Bucket *string `type:\"string\"`\n\n\t// The ID of the Amazon Web Services account that owns the bucket containing\n\t// the export.\n\tS3BucketOwner *string `type:\"string\"`\n\n\t// The Amazon S3 bucket prefix used as the file name and path of the exported\n\t// snapshot.\n\tS3Prefix *string `type:\"string\"`\n\n\t// Type of encryption used on the bucket where export data is stored. Valid\n\t// values for S3SseAlgorithm are:\n\t//\n\t//    * AES256 - server-side encryption with Amazon S3 managed keys\n\t//\n\t//    * KMS - server-side encryption with KMS managed keys\n\tS3SseAlgorithm *string `type:\"string\" enum:\"S3SseAlgorithm\"`\n\n\t// The ID of the KMS managed key used to encrypt the S3 bucket where export\n\t// data is stored (if applicable).\n\tS3SseKmsKeyId *string `min:\"1\" type:\"string\"`\n\n\t// The time at which the export task began.\n\tStartTime *time.Time `type:\"timestamp\"`\n\n\t// The Amazon Resource Name (ARN) of the table that was exported.\n\tTableArn *string `type:\"string\"`\n\n\t// Unique ID of the table that was exported.\n\tTableId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExportDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExportDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetBilledSizeBytes sets the BilledSizeBytes field's value.\nfunc (s *ExportDescription) SetBilledSizeBytes(v int64) *ExportDescription {\n\ts.BilledSizeBytes = &v\n\treturn s\n}\n\n// SetClientToken sets the ClientToken field's value.\nfunc (s *ExportDescription) SetClientToken(v string) *ExportDescription {\n\ts.ClientToken = &v\n\treturn s\n}\n\n// SetEndTime sets the EndTime field's value.\nfunc (s *ExportDescription) SetEndTime(v time.Time) *ExportDescription {\n\ts.EndTime = &v\n\treturn s\n}\n\n// SetExportArn sets the ExportArn field's value.\nfunc (s *ExportDescription) SetExportArn(v string) *ExportDescription {\n\ts.ExportArn = &v\n\treturn s\n}\n\n// SetExportFormat sets the ExportFormat field's value.\nfunc (s *ExportDescription) SetExportFormat(v string) *ExportDescription {\n\ts.ExportFormat = &v\n\treturn s\n}\n\n// SetExportManifest sets the ExportManifest field's value.\nfunc (s *ExportDescription) SetExportManifest(v string) *ExportDescription {\n\ts.ExportManifest = &v\n\treturn s\n}\n\n// SetExportStatus sets the ExportStatus field's value.\nfunc (s *ExportDescription) SetExportStatus(v string) *ExportDescription {\n\ts.ExportStatus = &v\n\treturn s\n}\n\n// SetExportTime sets the ExportTime field's value.\nfunc (s *ExportDescription) SetExportTime(v time.Time) *ExportDescription {\n\ts.ExportTime = &v\n\treturn s\n}\n\n// SetExportType sets the ExportType field's value.\nfunc (s *ExportDescription) SetExportType(v string) *ExportDescription {\n\ts.ExportType = &v\n\treturn s\n}\n\n// SetFailureCode sets the FailureCode field's value.\nfunc (s *ExportDescription) SetFailureCode(v string) *ExportDescription {\n\ts.FailureCode = &v\n\treturn s\n}\n\n// SetFailureMessage sets the FailureMessage field's value.\nfunc (s *ExportDescription) SetFailureMessage(v string) *ExportDescription {\n\ts.FailureMessage = &v\n\treturn s\n}\n\n// SetIncrementalExportSpecification sets the IncrementalExportSpecification field's value.\nfunc (s *ExportDescription) SetIncrementalExportSpecification(v *IncrementalExportSpecification) *ExportDescription {\n\ts.IncrementalExportSpecification = v\n\treturn s\n}\n\n// SetItemCount sets the ItemCount field's value.\nfunc (s *ExportDescription) SetItemCount(v int64) *ExportDescription {\n\ts.ItemCount = &v\n\treturn s\n}\n\n// SetS3Bucket sets the S3Bucket field's value.\nfunc (s *ExportDescription) SetS3Bucket(v string) *ExportDescription {\n\ts.S3Bucket = &v\n\treturn s\n}\n\n// SetS3BucketOwner sets the S3BucketOwner field's value.\nfunc (s *ExportDescription) SetS3BucketOwner(v string) *ExportDescription {\n\ts.S3BucketOwner = &v\n\treturn s\n}\n\n// SetS3Prefix sets the S3Prefix field's value.\nfunc (s *ExportDescription) SetS3Prefix(v string) *ExportDescription {\n\ts.S3Prefix = &v\n\treturn s\n}\n\n// SetS3SseAlgorithm sets the S3SseAlgorithm field's value.\nfunc (s *ExportDescription) SetS3SseAlgorithm(v string) *ExportDescription {\n\ts.S3SseAlgorithm = &v\n\treturn s\n}\n\n// SetS3SseKmsKeyId sets the S3SseKmsKeyId field's value.\nfunc (s *ExportDescription) SetS3SseKmsKeyId(v string) *ExportDescription {\n\ts.S3SseKmsKeyId = &v\n\treturn s\n}\n\n// SetStartTime sets the StartTime field's value.\nfunc (s *ExportDescription) SetStartTime(v time.Time) *ExportDescription {\n\ts.StartTime = &v\n\treturn s\n}\n\n// SetTableArn sets the TableArn field's value.\nfunc (s *ExportDescription) SetTableArn(v string) *ExportDescription {\n\ts.TableArn = &v\n\treturn s\n}\n\n// SetTableId sets the TableId field's value.\nfunc (s *ExportDescription) SetTableId(v string) *ExportDescription {\n\ts.TableId = &v\n\treturn s\n}\n\n// The specified export was not found.\ntype ExportNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExportNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExportNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorExportNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &ExportNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ExportNotFoundException) Code() string {\n\treturn \"ExportNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ExportNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ExportNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ExportNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ExportNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ExportNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Summary information about an export task.\ntype ExportSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) of the export.\n\tExportArn *string `min:\"37\" type:\"string\"`\n\n\t// Export can be in one of the following states: IN_PROGRESS, COMPLETED, or\n\t// FAILED.\n\tExportStatus *string `type:\"string\" enum:\"ExportStatus\"`\n\n\t// The type of export that was performed. Valid values are FULL_EXPORT or INCREMENTAL_EXPORT.\n\tExportType *string `type:\"string\" enum:\"ExportType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExportSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExportSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetExportArn sets the ExportArn field's value.\nfunc (s *ExportSummary) SetExportArn(v string) *ExportSummary {\n\ts.ExportArn = &v\n\treturn s\n}\n\n// SetExportStatus sets the ExportStatus field's value.\nfunc (s *ExportSummary) SetExportStatus(v string) *ExportSummary {\n\ts.ExportStatus = &v\n\treturn s\n}\n\n// SetExportType sets the ExportType field's value.\nfunc (s *ExportSummary) SetExportType(v string) *ExportSummary {\n\ts.ExportType = &v\n\treturn s\n}\n\ntype ExportTableToPointInTimeInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Providing a ClientToken makes the call to ExportTableToPointInTimeInput idempotent,\n\t// meaning that multiple identical calls have the same effect as one single\n\t// call.\n\t//\n\t// A client token is valid for 8 hours after the first request that uses it\n\t// is completed. After 8 hours, any request with the same client token is treated\n\t// as a new request. Do not resubmit the same request with the same client token\n\t// for more than 8 hours, or the result might not be idempotent.\n\t//\n\t// If you submit a request with the same client token but a change in other\n\t// parameters within the 8-hour idempotency window, DynamoDB returns an ImportConflictException.\n\tClientToken *string `type:\"string\" idempotencyToken:\"true\"`\n\n\t// The format for the exported data. Valid values for ExportFormat are DYNAMODB_JSON\n\t// or ION.\n\tExportFormat *string `type:\"string\" enum:\"ExportFormat\"`\n\n\t// Time in the past from which to export table data, counted in seconds from\n\t// the start of the Unix epoch. The table export will be a snapshot of the table's\n\t// state at this point in time.\n\tExportTime *time.Time `type:\"timestamp\"`\n\n\t// Choice of whether to execute as a full export or incremental export. Valid\n\t// values are FULL_EXPORT or INCREMENTAL_EXPORT. The default value is FULL_EXPORT.\n\t// If INCREMENTAL_EXPORT is provided, the IncrementalExportSpecification must\n\t// also be used.\n\tExportType *string `type:\"string\" enum:\"ExportType\"`\n\n\t// Optional object containing the parameters specific to an incremental export.\n\tIncrementalExportSpecification *IncrementalExportSpecification `type:\"structure\"`\n\n\t// The name of the Amazon S3 bucket to export the snapshot to.\n\t//\n\t// S3Bucket is a required field\n\tS3Bucket *string `type:\"string\" required:\"true\"`\n\n\t// The ID of the Amazon Web Services account that owns the bucket the export\n\t// will be stored in.\n\tS3BucketOwner *string `type:\"string\"`\n\n\t// The Amazon S3 bucket prefix to use as the file name and path of the exported\n\t// snapshot.\n\tS3Prefix *string `type:\"string\"`\n\n\t// Type of encryption used on the bucket where export data will be stored. Valid\n\t// values for S3SseAlgorithm are:\n\t//\n\t//    * AES256 - server-side encryption with Amazon S3 managed keys\n\t//\n\t//    * KMS - server-side encryption with KMS managed keys\n\tS3SseAlgorithm *string `type:\"string\" enum:\"S3SseAlgorithm\"`\n\n\t// The ID of the KMS managed key used to encrypt the S3 bucket where export\n\t// data will be stored (if applicable).\n\tS3SseKmsKeyId *string `min:\"1\" type:\"string\"`\n\n\t// The Amazon Resource Name (ARN) associated with the table to export.\n\t//\n\t// TableArn is a required field\n\tTableArn *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExportTableToPointInTimeInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExportTableToPointInTimeInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ExportTableToPointInTimeInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ExportTableToPointInTimeInput\"}\n\tif s.S3Bucket == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"S3Bucket\"))\n\t}\n\tif s.S3SseKmsKeyId != nil && len(*s.S3SseKmsKeyId) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"S3SseKmsKeyId\", 1))\n\t}\n\tif s.TableArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableArn\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetClientToken sets the ClientToken field's value.\nfunc (s *ExportTableToPointInTimeInput) SetClientToken(v string) *ExportTableToPointInTimeInput {\n\ts.ClientToken = &v\n\treturn s\n}\n\n// SetExportFormat sets the ExportFormat field's value.\nfunc (s *ExportTableToPointInTimeInput) SetExportFormat(v string) *ExportTableToPointInTimeInput {\n\ts.ExportFormat = &v\n\treturn s\n}\n\n// SetExportTime sets the ExportTime field's value.\nfunc (s *ExportTableToPointInTimeInput) SetExportTime(v time.Time) *ExportTableToPointInTimeInput {\n\ts.ExportTime = &v\n\treturn s\n}\n\n// SetExportType sets the ExportType field's value.\nfunc (s *ExportTableToPointInTimeInput) SetExportType(v string) *ExportTableToPointInTimeInput {\n\ts.ExportType = &v\n\treturn s\n}\n\n// SetIncrementalExportSpecification sets the IncrementalExportSpecification field's value.\nfunc (s *ExportTableToPointInTimeInput) SetIncrementalExportSpecification(v *IncrementalExportSpecification) *ExportTableToPointInTimeInput {\n\ts.IncrementalExportSpecification = v\n\treturn s\n}\n\n// SetS3Bucket sets the S3Bucket field's value.\nfunc (s *ExportTableToPointInTimeInput) SetS3Bucket(v string) *ExportTableToPointInTimeInput {\n\ts.S3Bucket = &v\n\treturn s\n}\n\n// SetS3BucketOwner sets the S3BucketOwner field's value.\nfunc (s *ExportTableToPointInTimeInput) SetS3BucketOwner(v string) *ExportTableToPointInTimeInput {\n\ts.S3BucketOwner = &v\n\treturn s\n}\n\n// SetS3Prefix sets the S3Prefix field's value.\nfunc (s *ExportTableToPointInTimeInput) SetS3Prefix(v string) *ExportTableToPointInTimeInput {\n\ts.S3Prefix = &v\n\treturn s\n}\n\n// SetS3SseAlgorithm sets the S3SseAlgorithm field's value.\nfunc (s *ExportTableToPointInTimeInput) SetS3SseAlgorithm(v string) *ExportTableToPointInTimeInput {\n\ts.S3SseAlgorithm = &v\n\treturn s\n}\n\n// SetS3SseKmsKeyId sets the S3SseKmsKeyId field's value.\nfunc (s *ExportTableToPointInTimeInput) SetS3SseKmsKeyId(v string) *ExportTableToPointInTimeInput {\n\ts.S3SseKmsKeyId = &v\n\treturn s\n}\n\n// SetTableArn sets the TableArn field's value.\nfunc (s *ExportTableToPointInTimeInput) SetTableArn(v string) *ExportTableToPointInTimeInput {\n\ts.TableArn = &v\n\treturn s\n}\n\ntype ExportTableToPointInTimeOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Contains a description of the table export.\n\tExportDescription *ExportDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExportTableToPointInTimeOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExportTableToPointInTimeOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetExportDescription sets the ExportDescription field's value.\nfunc (s *ExportTableToPointInTimeOutput) SetExportDescription(v *ExportDescription) *ExportTableToPointInTimeOutput {\n\ts.ExportDescription = v\n\treturn s\n}\n\n// Represents a failure a contributor insights operation.\ntype FailureException struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Description of the failure.\n\tExceptionDescription *string `type:\"string\"`\n\n\t// Exception name.\n\tExceptionName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s FailureException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s FailureException) GoString() string {\n\treturn s.String()\n}\n\n// SetExceptionDescription sets the ExceptionDescription field's value.\nfunc (s *FailureException) SetExceptionDescription(v string) *FailureException {\n\ts.ExceptionDescription = &v\n\treturn s\n}\n\n// SetExceptionName sets the ExceptionName field's value.\nfunc (s *FailureException) SetExceptionName(v string) *FailureException {\n\ts.ExceptionName = &v\n\treturn s\n}\n\n// Specifies an item and related attribute values to retrieve in a TransactGetItem\n// object.\ntype Get struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more substitution tokens for attribute names in the ProjectionExpression\n\t// parameter.\n\tExpressionAttributeNames map[string]*string `type:\"map\"`\n\n\t// A map of attribute names to AttributeValue objects that specifies the primary\n\t// key of the item to retrieve.\n\t//\n\t// Key is a required field\n\tKey map[string]*AttributeValue `type:\"map\" required:\"true\"`\n\n\t// A string that identifies one or more attributes of the specified item to\n\t// retrieve from the table. The attributes in the expression must be separated\n\t// by commas. If no attribute names are specified, then all attributes of the\n\t// specified item are returned. If any of the requested attributes are not found,\n\t// they do not appear in the result.\n\tProjectionExpression *string `type:\"string\"`\n\n\t// The name of the table from which to retrieve the specified item.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Get) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Get) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *Get) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"Get\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.\nfunc (s *Get) SetExpressionAttributeNames(v map[string]*string) *Get {\n\ts.ExpressionAttributeNames = v\n\treturn s\n}\n\n// SetKey sets the Key field's value.\nfunc (s *Get) SetKey(v map[string]*AttributeValue) *Get {\n\ts.Key = v\n\treturn s\n}\n\n// SetProjectionExpression sets the ProjectionExpression field's value.\nfunc (s *Get) SetProjectionExpression(v string) *Get {\n\ts.ProjectionExpression = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *Get) SetTableName(v string) *Get {\n\ts.TableName = &v\n\treturn s\n}\n\n// Represents the input of a GetItem operation.\ntype GetItemInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// This is a legacy parameter. Use ProjectionExpression instead. For more information,\n\t// see AttributesToGet (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributesToGet.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tAttributesToGet []*string `min:\"1\" type:\"list\"`\n\n\t// Determines the read consistency model: If set to true, then the operation\n\t// uses strongly consistent reads; otherwise, the operation uses eventually\n\t// consistent reads.\n\tConsistentRead *bool `type:\"boolean\"`\n\n\t// One or more substitution tokens for attribute names in an expression. The\n\t// following are some use cases for using ExpressionAttributeNames:\n\t//\n\t//    * To access an attribute whose name conflicts with a DynamoDB reserved\n\t//    word.\n\t//\n\t//    * To create a placeholder for repeating occurrences of an attribute name\n\t//    in an expression.\n\t//\n\t//    * To prevent special characters in an attribute name from being misinterpreted\n\t//    in an expression.\n\t//\n\t// Use the # character in an expression to dereference an attribute name. For\n\t// example, consider the following attribute name:\n\t//\n\t//    * Percentile\n\t//\n\t// The name of this attribute conflicts with a reserved word, so it cannot be\n\t// used directly in an expression. (For the complete list of reserved words,\n\t// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)\n\t// in the Amazon DynamoDB Developer Guide). To work around this, you could specify\n\t// the following for ExpressionAttributeNames:\n\t//\n\t//    * {\"#P\":\"Percentile\"}\n\t//\n\t// You could then use this substitution in an expression, as in this example:\n\t//\n\t//    * #P = :val\n\t//\n\t// Tokens that begin with the : character are expression attribute values, which\n\t// are placeholders for the actual value at runtime.\n\t//\n\t// For more information on expression attribute names, see Specifying Item Attributes\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeNames map[string]*string `type:\"map\"`\n\n\t// A map of attribute names to AttributeValue objects, representing the primary\n\t// key of the item to retrieve.\n\t//\n\t// For the primary key, you must provide all of the attributes. For example,\n\t// with a simple primary key, you only need to provide a value for the partition\n\t// key. For a composite primary key, you must provide values for both the partition\n\t// key and the sort key.\n\t//\n\t// Key is a required field\n\tKey map[string]*AttributeValue `type:\"map\" required:\"true\"`\n\n\t// A string that identifies one or more attributes to retrieve from the table.\n\t// These attributes can include scalars, sets, or elements of a JSON document.\n\t// The attributes in the expression must be separated by commas.\n\t//\n\t// If no attribute names are specified, then all attributes are returned. If\n\t// any of the requested attributes are not found, they do not appear in the\n\t// result.\n\t//\n\t// For more information, see Specifying Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tProjectionExpression *string `type:\"string\"`\n\n\t// Determines the level of detail about either provisioned or on-demand throughput\n\t// consumption that is returned in the response:\n\t//\n\t//    * INDEXES - The response includes the aggregate ConsumedCapacity for the\n\t//    operation, together with ConsumedCapacity for each table and secondary\n\t//    index that was accessed. Note that some operations, such as GetItem and\n\t//    BatchGetItem, do not access any indexes at all. In these cases, specifying\n\t//    INDEXES will only return ConsumedCapacity information for table(s).\n\t//\n\t//    * TOTAL - The response includes only the aggregate ConsumedCapacity for\n\t//    the operation.\n\t//\n\t//    * NONE - No ConsumedCapacity details are included in the response.\n\tReturnConsumedCapacity *string `type:\"string\" enum:\"ReturnConsumedCapacity\"`\n\n\t// The name of the table containing the requested item.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetItemInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetItemInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetItemInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetItemInput\"}\n\tif s.AttributesToGet != nil && len(s.AttributesToGet) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AttributesToGet\", 1))\n\t}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttributesToGet sets the AttributesToGet field's value.\nfunc (s *GetItemInput) SetAttributesToGet(v []*string) *GetItemInput {\n\ts.AttributesToGet = v\n\treturn s\n}\n\n// SetConsistentRead sets the ConsistentRead field's value.\nfunc (s *GetItemInput) SetConsistentRead(v bool) *GetItemInput {\n\ts.ConsistentRead = &v\n\treturn s\n}\n\n// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.\nfunc (s *GetItemInput) SetExpressionAttributeNames(v map[string]*string) *GetItemInput {\n\ts.ExpressionAttributeNames = v\n\treturn s\n}\n\n// SetKey sets the Key field's value.\nfunc (s *GetItemInput) SetKey(v map[string]*AttributeValue) *GetItemInput {\n\ts.Key = v\n\treturn s\n}\n\n// SetProjectionExpression sets the ProjectionExpression field's value.\nfunc (s *GetItemInput) SetProjectionExpression(v string) *GetItemInput {\n\ts.ProjectionExpression = &v\n\treturn s\n}\n\n// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.\nfunc (s *GetItemInput) SetReturnConsumedCapacity(v string) *GetItemInput {\n\ts.ReturnConsumedCapacity = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *GetItemInput) SetTableName(v string) *GetItemInput {\n\ts.TableName = &v\n\treturn s\n}\n\n// Represents the output of a GetItem operation.\ntype GetItemOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The capacity units consumed by the GetItem operation. The data returned includes\n\t// the total provisioned throughput consumed, along with statistics for the\n\t// table and any indexes involved in the operation. ConsumedCapacity is only\n\t// returned if the ReturnConsumedCapacity parameter was specified. For more\n\t// information, see Provisioned Throughput (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html#ItemSizeCalculations.Reads)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConsumedCapacity *ConsumedCapacity `type:\"structure\"`\n\n\t// A map of attribute names to AttributeValue objects, as specified by ProjectionExpression.\n\tItem map[string]*AttributeValue `type:\"map\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetItemOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetItemOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetConsumedCapacity sets the ConsumedCapacity field's value.\nfunc (s *GetItemOutput) SetConsumedCapacity(v *ConsumedCapacity) *GetItemOutput {\n\ts.ConsumedCapacity = v\n\treturn s\n}\n\n// SetItem sets the Item field's value.\nfunc (s *GetItemOutput) SetItem(v map[string]*AttributeValue) *GetItemOutput {\n\ts.Item = v\n\treturn s\n}\n\n// Represents the properties of a global secondary index.\ntype GlobalSecondaryIndex struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index. The name must be unique among all\n\t// other indexes on this table.\n\t//\n\t// IndexName is a required field\n\tIndexName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// The complete key schema for a global secondary index, which consists of one\n\t// or more pairs of attribute names and key types:\n\t//\n\t//    * HASH - partition key\n\t//\n\t//    * RANGE - sort key\n\t//\n\t// The partition key of an item is also known as its hash attribute. The term\n\t// \"hash attribute\" derives from DynamoDB's usage of an internal hash function\n\t// to evenly distribute data items across partitions, based on their partition\n\t// key values.\n\t//\n\t// The sort key of an item is also known as its range attribute. The term \"range\n\t// attribute\" derives from the way DynamoDB stores items with the same partition\n\t// key physically close together, in sorted order by the sort key value.\n\t//\n\t// KeySchema is a required field\n\tKeySchema []*KeySchemaElement `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// Represents attributes that are copied (projected) from the table into the\n\t// global secondary index. These are in addition to the primary key attributes\n\t// and index key attributes, which are automatically projected.\n\t//\n\t// Projection is a required field\n\tProjection *Projection `type:\"structure\" required:\"true\"`\n\n\t// Represents the provisioned throughput settings for the specified global secondary\n\t// index.\n\t//\n\t// For current minimum and maximum provisioned throughput values, see Service,\n\t// Account, and Table Quotas (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tProvisionedThroughput *ProvisionedThroughput `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalSecondaryIndex) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalSecondaryIndex) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GlobalSecondaryIndex) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GlobalSecondaryIndex\"}\n\tif s.IndexName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"IndexName\"))\n\t}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\tif s.KeySchema == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"KeySchema\"))\n\t}\n\tif s.KeySchema != nil && len(s.KeySchema) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"KeySchema\", 1))\n\t}\n\tif s.Projection == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Projection\"))\n\t}\n\tif s.KeySchema != nil {\n\t\tfor i, v := range s.KeySchema {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"KeySchema\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Projection != nil {\n\t\tif err := s.Projection.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Projection\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.ProvisionedThroughput != nil {\n\t\tif err := s.ProvisionedThroughput.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedThroughput\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *GlobalSecondaryIndex) SetIndexName(v string) *GlobalSecondaryIndex {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetKeySchema sets the KeySchema field's value.\nfunc (s *GlobalSecondaryIndex) SetKeySchema(v []*KeySchemaElement) *GlobalSecondaryIndex {\n\ts.KeySchema = v\n\treturn s\n}\n\n// SetProjection sets the Projection field's value.\nfunc (s *GlobalSecondaryIndex) SetProjection(v *Projection) *GlobalSecondaryIndex {\n\ts.Projection = v\n\treturn s\n}\n\n// SetProvisionedThroughput sets the ProvisionedThroughput field's value.\nfunc (s *GlobalSecondaryIndex) SetProvisionedThroughput(v *ProvisionedThroughput) *GlobalSecondaryIndex {\n\ts.ProvisionedThroughput = v\n\treturn s\n}\n\n// Represents the auto scaling settings of a global secondary index for a global\n// table that will be modified.\ntype GlobalSecondaryIndexAutoScalingUpdate struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// Represents the auto scaling settings to be modified for a global table or\n\t// global secondary index.\n\tProvisionedWriteCapacityAutoScalingUpdate *AutoScalingSettingsUpdate `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalSecondaryIndexAutoScalingUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalSecondaryIndexAutoScalingUpdate) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GlobalSecondaryIndexAutoScalingUpdate) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GlobalSecondaryIndexAutoScalingUpdate\"}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\tif s.ProvisionedWriteCapacityAutoScalingUpdate != nil {\n\t\tif err := s.ProvisionedWriteCapacityAutoScalingUpdate.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedWriteCapacityAutoScalingUpdate\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *GlobalSecondaryIndexAutoScalingUpdate) SetIndexName(v string) *GlobalSecondaryIndexAutoScalingUpdate {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetProvisionedWriteCapacityAutoScalingUpdate sets the ProvisionedWriteCapacityAutoScalingUpdate field's value.\nfunc (s *GlobalSecondaryIndexAutoScalingUpdate) SetProvisionedWriteCapacityAutoScalingUpdate(v *AutoScalingSettingsUpdate) *GlobalSecondaryIndexAutoScalingUpdate {\n\ts.ProvisionedWriteCapacityAutoScalingUpdate = v\n\treturn s\n}\n\n// Represents the properties of a global secondary index.\ntype GlobalSecondaryIndexDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Indicates whether the index is currently backfilling. Backfilling is the\n\t// process of reading items from the table and determining whether they can\n\t// be added to the index. (Not all items will qualify: For example, a partition\n\t// key cannot have any duplicate values.) If an item can be added to the index,\n\t// DynamoDB will do so. After all items have been processed, the backfilling\n\t// operation is complete and Backfilling is false.\n\t//\n\t// You can delete an index that is being created during the Backfilling phase\n\t// when IndexStatus is set to CREATING and Backfilling is true. You can't delete\n\t// the index that is being created when IndexStatus is set to CREATING and Backfilling\n\t// is false.\n\t//\n\t// For indexes that were created during a CreateTable operation, the Backfilling\n\t// attribute does not appear in the DescribeTable output.\n\tBackfilling *bool `type:\"boolean\"`\n\n\t// The Amazon Resource Name (ARN) that uniquely identifies the index.\n\tIndexArn *string `type:\"string\"`\n\n\t// The name of the global secondary index.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// The total size of the specified index, in bytes. DynamoDB updates this value\n\t// approximately every six hours. Recent changes might not be reflected in this\n\t// value.\n\tIndexSizeBytes *int64 `type:\"long\"`\n\n\t// The current state of the global secondary index:\n\t//\n\t//    * CREATING - The index is being created.\n\t//\n\t//    * UPDATING - The index is being updated.\n\t//\n\t//    * DELETING - The index is being deleted.\n\t//\n\t//    * ACTIVE - The index is ready for use.\n\tIndexStatus *string `type:\"string\" enum:\"IndexStatus\"`\n\n\t// The number of items in the specified index. DynamoDB updates this value approximately\n\t// every six hours. Recent changes might not be reflected in this value.\n\tItemCount *int64 `type:\"long\"`\n\n\t// The complete key schema for a global secondary index, which consists of one\n\t// or more pairs of attribute names and key types:\n\t//\n\t//    * HASH - partition key\n\t//\n\t//    * RANGE - sort key\n\t//\n\t// The partition key of an item is also known as its hash attribute. The term\n\t// \"hash attribute\" derives from DynamoDB's usage of an internal hash function\n\t// to evenly distribute data items across partitions, based on their partition\n\t// key values.\n\t//\n\t// The sort key of an item is also known as its range attribute. The term \"range\n\t// attribute\" derives from the way DynamoDB stores items with the same partition\n\t// key physically close together, in sorted order by the sort key value.\n\tKeySchema []*KeySchemaElement `min:\"1\" type:\"list\"`\n\n\t// Represents attributes that are copied (projected) from the table into the\n\t// global secondary index. These are in addition to the primary key attributes\n\t// and index key attributes, which are automatically projected.\n\tProjection *Projection `type:\"structure\"`\n\n\t// Represents the provisioned throughput settings for the specified global secondary\n\t// index.\n\t//\n\t// For current minimum and maximum provisioned throughput values, see Service,\n\t// Account, and Table Quotas (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tProvisionedThroughput *ProvisionedThroughputDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalSecondaryIndexDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalSecondaryIndexDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetBackfilling sets the Backfilling field's value.\nfunc (s *GlobalSecondaryIndexDescription) SetBackfilling(v bool) *GlobalSecondaryIndexDescription {\n\ts.Backfilling = &v\n\treturn s\n}\n\n// SetIndexArn sets the IndexArn field's value.\nfunc (s *GlobalSecondaryIndexDescription) SetIndexArn(v string) *GlobalSecondaryIndexDescription {\n\ts.IndexArn = &v\n\treturn s\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *GlobalSecondaryIndexDescription) SetIndexName(v string) *GlobalSecondaryIndexDescription {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetIndexSizeBytes sets the IndexSizeBytes field's value.\nfunc (s *GlobalSecondaryIndexDescription) SetIndexSizeBytes(v int64) *GlobalSecondaryIndexDescription {\n\ts.IndexSizeBytes = &v\n\treturn s\n}\n\n// SetIndexStatus sets the IndexStatus field's value.\nfunc (s *GlobalSecondaryIndexDescription) SetIndexStatus(v string) *GlobalSecondaryIndexDescription {\n\ts.IndexStatus = &v\n\treturn s\n}\n\n// SetItemCount sets the ItemCount field's value.\nfunc (s *GlobalSecondaryIndexDescription) SetItemCount(v int64) *GlobalSecondaryIndexDescription {\n\ts.ItemCount = &v\n\treturn s\n}\n\n// SetKeySchema sets the KeySchema field's value.\nfunc (s *GlobalSecondaryIndexDescription) SetKeySchema(v []*KeySchemaElement) *GlobalSecondaryIndexDescription {\n\ts.KeySchema = v\n\treturn s\n}\n\n// SetProjection sets the Projection field's value.\nfunc (s *GlobalSecondaryIndexDescription) SetProjection(v *Projection) *GlobalSecondaryIndexDescription {\n\ts.Projection = v\n\treturn s\n}\n\n// SetProvisionedThroughput sets the ProvisionedThroughput field's value.\nfunc (s *GlobalSecondaryIndexDescription) SetProvisionedThroughput(v *ProvisionedThroughputDescription) *GlobalSecondaryIndexDescription {\n\ts.ProvisionedThroughput = v\n\treturn s\n}\n\n// Represents the properties of a global secondary index for the table when\n// the backup was created.\ntype GlobalSecondaryIndexInfo struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// The complete key schema for a global secondary index, which consists of one\n\t// or more pairs of attribute names and key types:\n\t//\n\t//    * HASH - partition key\n\t//\n\t//    * RANGE - sort key\n\t//\n\t// The partition key of an item is also known as its hash attribute. The term\n\t// \"hash attribute\" derives from DynamoDB's usage of an internal hash function\n\t// to evenly distribute data items across partitions, based on their partition\n\t// key values.\n\t//\n\t// The sort key of an item is also known as its range attribute. The term \"range\n\t// attribute\" derives from the way DynamoDB stores items with the same partition\n\t// key physically close together, in sorted order by the sort key value.\n\tKeySchema []*KeySchemaElement `min:\"1\" type:\"list\"`\n\n\t// Represents attributes that are copied (projected) from the table into the\n\t// global secondary index. These are in addition to the primary key attributes\n\t// and index key attributes, which are automatically projected.\n\tProjection *Projection `type:\"structure\"`\n\n\t// Represents the provisioned throughput settings for the specified global secondary\n\t// index.\n\tProvisionedThroughput *ProvisionedThroughput `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalSecondaryIndexInfo) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalSecondaryIndexInfo) GoString() string {\n\treturn s.String()\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *GlobalSecondaryIndexInfo) SetIndexName(v string) *GlobalSecondaryIndexInfo {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetKeySchema sets the KeySchema field's value.\nfunc (s *GlobalSecondaryIndexInfo) SetKeySchema(v []*KeySchemaElement) *GlobalSecondaryIndexInfo {\n\ts.KeySchema = v\n\treturn s\n}\n\n// SetProjection sets the Projection field's value.\nfunc (s *GlobalSecondaryIndexInfo) SetProjection(v *Projection) *GlobalSecondaryIndexInfo {\n\ts.Projection = v\n\treturn s\n}\n\n// SetProvisionedThroughput sets the ProvisionedThroughput field's value.\nfunc (s *GlobalSecondaryIndexInfo) SetProvisionedThroughput(v *ProvisionedThroughput) *GlobalSecondaryIndexInfo {\n\ts.ProvisionedThroughput = v\n\treturn s\n}\n\n// Represents one of the following:\n//\n//   - A new global secondary index to be added to an existing table.\n//\n//   - New provisioned throughput parameters for an existing global secondary\n//     index.\n//\n//   - An existing global secondary index to be removed from an existing table.\ntype GlobalSecondaryIndexUpdate struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The parameters required for creating a global secondary index on an existing\n\t// table:\n\t//\n\t//    * IndexName\n\t//\n\t//    * KeySchema\n\t//\n\t//    * AttributeDefinitions\n\t//\n\t//    * Projection\n\t//\n\t//    * ProvisionedThroughput\n\tCreate *CreateGlobalSecondaryIndexAction `type:\"structure\"`\n\n\t// The name of an existing global secondary index to be removed.\n\tDelete *DeleteGlobalSecondaryIndexAction `type:\"structure\"`\n\n\t// The name of an existing global secondary index, along with new provisioned\n\t// throughput settings to be applied to that index.\n\tUpdate *UpdateGlobalSecondaryIndexAction `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalSecondaryIndexUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalSecondaryIndexUpdate) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GlobalSecondaryIndexUpdate) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GlobalSecondaryIndexUpdate\"}\n\tif s.Create != nil {\n\t\tif err := s.Create.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Create\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Delete != nil {\n\t\tif err := s.Delete.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Delete\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Update != nil {\n\t\tif err := s.Update.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Update\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetCreate sets the Create field's value.\nfunc (s *GlobalSecondaryIndexUpdate) SetCreate(v *CreateGlobalSecondaryIndexAction) *GlobalSecondaryIndexUpdate {\n\ts.Create = v\n\treturn s\n}\n\n// SetDelete sets the Delete field's value.\nfunc (s *GlobalSecondaryIndexUpdate) SetDelete(v *DeleteGlobalSecondaryIndexAction) *GlobalSecondaryIndexUpdate {\n\ts.Delete = v\n\treturn s\n}\n\n// SetUpdate sets the Update field's value.\nfunc (s *GlobalSecondaryIndexUpdate) SetUpdate(v *UpdateGlobalSecondaryIndexAction) *GlobalSecondaryIndexUpdate {\n\ts.Update = v\n\treturn s\n}\n\n// Represents the properties of a global table.\ntype GlobalTable struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The global table name.\n\tGlobalTableName *string `min:\"3\" type:\"string\"`\n\n\t// The Regions where the global table has replicas.\n\tReplicationGroup []*Replica `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalTable) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalTable) GoString() string {\n\treturn s.String()\n}\n\n// SetGlobalTableName sets the GlobalTableName field's value.\nfunc (s *GlobalTable) SetGlobalTableName(v string) *GlobalTable {\n\ts.GlobalTableName = &v\n\treturn s\n}\n\n// SetReplicationGroup sets the ReplicationGroup field's value.\nfunc (s *GlobalTable) SetReplicationGroup(v []*Replica) *GlobalTable {\n\ts.ReplicationGroup = v\n\treturn s\n}\n\n// The specified global table already exists.\ntype GlobalTableAlreadyExistsException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalTableAlreadyExistsException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalTableAlreadyExistsException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorGlobalTableAlreadyExistsException(v protocol.ResponseMetadata) error {\n\treturn &GlobalTableAlreadyExistsException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *GlobalTableAlreadyExistsException) Code() string {\n\treturn \"GlobalTableAlreadyExistsException\"\n}\n\n// Message returns the exception's message.\nfunc (s *GlobalTableAlreadyExistsException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *GlobalTableAlreadyExistsException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *GlobalTableAlreadyExistsException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *GlobalTableAlreadyExistsException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *GlobalTableAlreadyExistsException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Contains details about the global table.\ntype GlobalTableDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The creation time of the global table.\n\tCreationDateTime *time.Time `type:\"timestamp\"`\n\n\t// The unique identifier of the global table.\n\tGlobalTableArn *string `type:\"string\"`\n\n\t// The global table name.\n\tGlobalTableName *string `min:\"3\" type:\"string\"`\n\n\t// The current state of the global table:\n\t//\n\t//    * CREATING - The global table is being created.\n\t//\n\t//    * UPDATING - The global table is being updated.\n\t//\n\t//    * DELETING - The global table is being deleted.\n\t//\n\t//    * ACTIVE - The global table is ready for use.\n\tGlobalTableStatus *string `type:\"string\" enum:\"GlobalTableStatus\"`\n\n\t// The Regions where the global table has replicas.\n\tReplicationGroup []*ReplicaDescription `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalTableDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalTableDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetCreationDateTime sets the CreationDateTime field's value.\nfunc (s *GlobalTableDescription) SetCreationDateTime(v time.Time) *GlobalTableDescription {\n\ts.CreationDateTime = &v\n\treturn s\n}\n\n// SetGlobalTableArn sets the GlobalTableArn field's value.\nfunc (s *GlobalTableDescription) SetGlobalTableArn(v string) *GlobalTableDescription {\n\ts.GlobalTableArn = &v\n\treturn s\n}\n\n// SetGlobalTableName sets the GlobalTableName field's value.\nfunc (s *GlobalTableDescription) SetGlobalTableName(v string) *GlobalTableDescription {\n\ts.GlobalTableName = &v\n\treturn s\n}\n\n// SetGlobalTableStatus sets the GlobalTableStatus field's value.\nfunc (s *GlobalTableDescription) SetGlobalTableStatus(v string) *GlobalTableDescription {\n\ts.GlobalTableStatus = &v\n\treturn s\n}\n\n// SetReplicationGroup sets the ReplicationGroup field's value.\nfunc (s *GlobalTableDescription) SetReplicationGroup(v []*ReplicaDescription) *GlobalTableDescription {\n\ts.ReplicationGroup = v\n\treturn s\n}\n\n// Represents the settings of a global secondary index for a global table that\n// will be modified.\ntype GlobalTableGlobalSecondaryIndexSettingsUpdate struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index. The name must be unique among all\n\t// other indexes on this table.\n\t//\n\t// IndexName is a required field\n\tIndexName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// Auto scaling settings for managing a global secondary index's write capacity\n\t// units.\n\tProvisionedWriteCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate `type:\"structure\"`\n\n\t// The maximum number of writes consumed per second before DynamoDB returns\n\t// a ThrottlingException.\n\tProvisionedWriteCapacityUnits *int64 `min:\"1\" type:\"long\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalTableGlobalSecondaryIndexSettingsUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalTableGlobalSecondaryIndexSettingsUpdate) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GlobalTableGlobalSecondaryIndexSettingsUpdate) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GlobalTableGlobalSecondaryIndexSettingsUpdate\"}\n\tif s.IndexName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"IndexName\"))\n\t}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\tif s.ProvisionedWriteCapacityUnits != nil && *s.ProvisionedWriteCapacityUnits < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"ProvisionedWriteCapacityUnits\", 1))\n\t}\n\tif s.ProvisionedWriteCapacityAutoScalingSettingsUpdate != nil {\n\t\tif err := s.ProvisionedWriteCapacityAutoScalingSettingsUpdate.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedWriteCapacityAutoScalingSettingsUpdate\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *GlobalTableGlobalSecondaryIndexSettingsUpdate) SetIndexName(v string) *GlobalTableGlobalSecondaryIndexSettingsUpdate {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetProvisionedWriteCapacityAutoScalingSettingsUpdate sets the ProvisionedWriteCapacityAutoScalingSettingsUpdate field's value.\nfunc (s *GlobalTableGlobalSecondaryIndexSettingsUpdate) SetProvisionedWriteCapacityAutoScalingSettingsUpdate(v *AutoScalingSettingsUpdate) *GlobalTableGlobalSecondaryIndexSettingsUpdate {\n\ts.ProvisionedWriteCapacityAutoScalingSettingsUpdate = v\n\treturn s\n}\n\n// SetProvisionedWriteCapacityUnits sets the ProvisionedWriteCapacityUnits field's value.\nfunc (s *GlobalTableGlobalSecondaryIndexSettingsUpdate) SetProvisionedWriteCapacityUnits(v int64) *GlobalTableGlobalSecondaryIndexSettingsUpdate {\n\ts.ProvisionedWriteCapacityUnits = &v\n\treturn s\n}\n\n// The specified global table does not exist.\ntype GlobalTableNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalTableNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GlobalTableNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorGlobalTableNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &GlobalTableNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *GlobalTableNotFoundException) Code() string {\n\treturn \"GlobalTableNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *GlobalTableNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *GlobalTableNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *GlobalTableNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *GlobalTableNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *GlobalTableNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// DynamoDB rejected the request because you retried a request with a different\n// payload but with an idempotent token that was already used.\ntype IdempotentParameterMismatchException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s IdempotentParameterMismatchException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s IdempotentParameterMismatchException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorIdempotentParameterMismatchException(v protocol.ResponseMetadata) error {\n\treturn &IdempotentParameterMismatchException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *IdempotentParameterMismatchException) Code() string {\n\treturn \"IdempotentParameterMismatchException\"\n}\n\n// Message returns the exception's message.\nfunc (s *IdempotentParameterMismatchException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *IdempotentParameterMismatchException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *IdempotentParameterMismatchException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *IdempotentParameterMismatchException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *IdempotentParameterMismatchException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// There was a conflict when importing from the specified S3 source. This can\n// occur when the current import conflicts with a previous import request that\n// had the same client token.\ntype ImportConflictException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ImportConflictException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ImportConflictException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorImportConflictException(v protocol.ResponseMetadata) error {\n\treturn &ImportConflictException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ImportConflictException) Code() string {\n\treturn \"ImportConflictException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ImportConflictException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ImportConflictException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ImportConflictException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ImportConflictException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ImportConflictException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified import was not found.\ntype ImportNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ImportNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ImportNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorImportNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &ImportNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ImportNotFoundException) Code() string {\n\treturn \"ImportNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ImportNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ImportNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ImportNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ImportNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ImportNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Summary information about the source file for the import.\ntype ImportSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Number (ARN) of the Cloudwatch Log Group associated with\n\t// this import task.\n\tCloudWatchLogGroupArn *string `min:\"1\" type:\"string\"`\n\n\t// The time at which this import task ended. (Does this include the successful\n\t// complete creation of the table it was imported to?)\n\tEndTime *time.Time `type:\"timestamp\"`\n\n\t// The Amazon Resource Number (ARN) corresponding to the import request.\n\tImportArn *string `min:\"37\" type:\"string\"`\n\n\t// The status of the import operation.\n\tImportStatus *string `type:\"string\" enum:\"ImportStatus\"`\n\n\t// The format of the source data. Valid values are CSV, DYNAMODB_JSON or ION.\n\tInputFormat *string `type:\"string\" enum:\"InputFormat\"`\n\n\t// The path and S3 bucket of the source file that is being imported. This includes\n\t// the S3Bucket (required), S3KeyPrefix (optional) and S3BucketOwner (optional\n\t// if the bucket is owned by the requester).\n\tS3BucketSource *S3BucketSource `type:\"structure\"`\n\n\t// The time at which this import task began.\n\tStartTime *time.Time `type:\"timestamp\"`\n\n\t// The Amazon Resource Number (ARN) of the table being imported into.\n\tTableArn *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ImportSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ImportSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetCloudWatchLogGroupArn sets the CloudWatchLogGroupArn field's value.\nfunc (s *ImportSummary) SetCloudWatchLogGroupArn(v string) *ImportSummary {\n\ts.CloudWatchLogGroupArn = &v\n\treturn s\n}\n\n// SetEndTime sets the EndTime field's value.\nfunc (s *ImportSummary) SetEndTime(v time.Time) *ImportSummary {\n\ts.EndTime = &v\n\treturn s\n}\n\n// SetImportArn sets the ImportArn field's value.\nfunc (s *ImportSummary) SetImportArn(v string) *ImportSummary {\n\ts.ImportArn = &v\n\treturn s\n}\n\n// SetImportStatus sets the ImportStatus field's value.\nfunc (s *ImportSummary) SetImportStatus(v string) *ImportSummary {\n\ts.ImportStatus = &v\n\treturn s\n}\n\n// SetInputFormat sets the InputFormat field's value.\nfunc (s *ImportSummary) SetInputFormat(v string) *ImportSummary {\n\ts.InputFormat = &v\n\treturn s\n}\n\n// SetS3BucketSource sets the S3BucketSource field's value.\nfunc (s *ImportSummary) SetS3BucketSource(v *S3BucketSource) *ImportSummary {\n\ts.S3BucketSource = v\n\treturn s\n}\n\n// SetStartTime sets the StartTime field's value.\nfunc (s *ImportSummary) SetStartTime(v time.Time) *ImportSummary {\n\ts.StartTime = &v\n\treturn s\n}\n\n// SetTableArn sets the TableArn field's value.\nfunc (s *ImportSummary) SetTableArn(v string) *ImportSummary {\n\ts.TableArn = &v\n\treturn s\n}\n\n// Represents the properties of the table being imported into.\ntype ImportTableDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The client token that was provided for the import task. Reusing the client\n\t// token on retry makes a call to ImportTable idempotent.\n\tClientToken *string `type:\"string\"`\n\n\t// The Amazon Resource Number (ARN) of the Cloudwatch Log Group associated with\n\t// the target table.\n\tCloudWatchLogGroupArn *string `min:\"1\" type:\"string\"`\n\n\t// The time at which the creation of the table associated with this import task\n\t// completed.\n\tEndTime *time.Time `type:\"timestamp\"`\n\n\t// The number of errors occurred on importing the source file into the target\n\t// table.\n\tErrorCount *int64 `type:\"long\"`\n\n\t// The error code corresponding to the failure that the import job ran into\n\t// during execution.\n\tFailureCode *string `type:\"string\"`\n\n\t// The error message corresponding to the failure that the import job ran into\n\t// during execution.\n\tFailureMessage *string `type:\"string\"`\n\n\t// The Amazon Resource Number (ARN) corresponding to the import request.\n\tImportArn *string `min:\"37\" type:\"string\"`\n\n\t// The status of the import.\n\tImportStatus *string `type:\"string\" enum:\"ImportStatus\"`\n\n\t// The number of items successfully imported into the new table.\n\tImportedItemCount *int64 `type:\"long\"`\n\n\t// The compression options for the data that has been imported into the target\n\t// table. The values are NONE, GZIP, or ZSTD.\n\tInputCompressionType *string `type:\"string\" enum:\"InputCompressionType\"`\n\n\t// The format of the source data going into the target table.\n\tInputFormat *string `type:\"string\" enum:\"InputFormat\"`\n\n\t// The format options for the data that was imported into the target table.\n\t// There is one value, CsvOption.\n\tInputFormatOptions *InputFormatOptions `type:\"structure\"`\n\n\t// The total number of items processed from the source file.\n\tProcessedItemCount *int64 `type:\"long\"`\n\n\t// The total size of data processed from the source file, in Bytes.\n\tProcessedSizeBytes *int64 `type:\"long\"`\n\n\t// Values for the S3 bucket the source file is imported from. Includes bucket\n\t// name (required), key prefix (optional) and bucket account owner ID (optional).\n\tS3BucketSource *S3BucketSource `type:\"structure\"`\n\n\t// The time when this import task started.\n\tStartTime *time.Time `type:\"timestamp\"`\n\n\t// The Amazon Resource Number (ARN) of the table being imported into.\n\tTableArn *string `type:\"string\"`\n\n\t// The parameters for the new table that is being imported into.\n\tTableCreationParameters *TableCreationParameters `type:\"structure\"`\n\n\t// The table id corresponding to the table created by import table process.\n\tTableId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ImportTableDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ImportTableDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetClientToken sets the ClientToken field's value.\nfunc (s *ImportTableDescription) SetClientToken(v string) *ImportTableDescription {\n\ts.ClientToken = &v\n\treturn s\n}\n\n// SetCloudWatchLogGroupArn sets the CloudWatchLogGroupArn field's value.\nfunc (s *ImportTableDescription) SetCloudWatchLogGroupArn(v string) *ImportTableDescription {\n\ts.CloudWatchLogGroupArn = &v\n\treturn s\n}\n\n// SetEndTime sets the EndTime field's value.\nfunc (s *ImportTableDescription) SetEndTime(v time.Time) *ImportTableDescription {\n\ts.EndTime = &v\n\treturn s\n}\n\n// SetErrorCount sets the ErrorCount field's value.\nfunc (s *ImportTableDescription) SetErrorCount(v int64) *ImportTableDescription {\n\ts.ErrorCount = &v\n\treturn s\n}\n\n// SetFailureCode sets the FailureCode field's value.\nfunc (s *ImportTableDescription) SetFailureCode(v string) *ImportTableDescription {\n\ts.FailureCode = &v\n\treturn s\n}\n\n// SetFailureMessage sets the FailureMessage field's value.\nfunc (s *ImportTableDescription) SetFailureMessage(v string) *ImportTableDescription {\n\ts.FailureMessage = &v\n\treturn s\n}\n\n// SetImportArn sets the ImportArn field's value.\nfunc (s *ImportTableDescription) SetImportArn(v string) *ImportTableDescription {\n\ts.ImportArn = &v\n\treturn s\n}\n\n// SetImportStatus sets the ImportStatus field's value.\nfunc (s *ImportTableDescription) SetImportStatus(v string) *ImportTableDescription {\n\ts.ImportStatus = &v\n\treturn s\n}\n\n// SetImportedItemCount sets the ImportedItemCount field's value.\nfunc (s *ImportTableDescription) SetImportedItemCount(v int64) *ImportTableDescription {\n\ts.ImportedItemCount = &v\n\treturn s\n}\n\n// SetInputCompressionType sets the InputCompressionType field's value.\nfunc (s *ImportTableDescription) SetInputCompressionType(v string) *ImportTableDescription {\n\ts.InputCompressionType = &v\n\treturn s\n}\n\n// SetInputFormat sets the InputFormat field's value.\nfunc (s *ImportTableDescription) SetInputFormat(v string) *ImportTableDescription {\n\ts.InputFormat = &v\n\treturn s\n}\n\n// SetInputFormatOptions sets the InputFormatOptions field's value.\nfunc (s *ImportTableDescription) SetInputFormatOptions(v *InputFormatOptions) *ImportTableDescription {\n\ts.InputFormatOptions = v\n\treturn s\n}\n\n// SetProcessedItemCount sets the ProcessedItemCount field's value.\nfunc (s *ImportTableDescription) SetProcessedItemCount(v int64) *ImportTableDescription {\n\ts.ProcessedItemCount = &v\n\treturn s\n}\n\n// SetProcessedSizeBytes sets the ProcessedSizeBytes field's value.\nfunc (s *ImportTableDescription) SetProcessedSizeBytes(v int64) *ImportTableDescription {\n\ts.ProcessedSizeBytes = &v\n\treturn s\n}\n\n// SetS3BucketSource sets the S3BucketSource field's value.\nfunc (s *ImportTableDescription) SetS3BucketSource(v *S3BucketSource) *ImportTableDescription {\n\ts.S3BucketSource = v\n\treturn s\n}\n\n// SetStartTime sets the StartTime field's value.\nfunc (s *ImportTableDescription) SetStartTime(v time.Time) *ImportTableDescription {\n\ts.StartTime = &v\n\treturn s\n}\n\n// SetTableArn sets the TableArn field's value.\nfunc (s *ImportTableDescription) SetTableArn(v string) *ImportTableDescription {\n\ts.TableArn = &v\n\treturn s\n}\n\n// SetTableCreationParameters sets the TableCreationParameters field's value.\nfunc (s *ImportTableDescription) SetTableCreationParameters(v *TableCreationParameters) *ImportTableDescription {\n\ts.TableCreationParameters = v\n\treturn s\n}\n\n// SetTableId sets the TableId field's value.\nfunc (s *ImportTableDescription) SetTableId(v string) *ImportTableDescription {\n\ts.TableId = &v\n\treturn s\n}\n\ntype ImportTableInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Providing a ClientToken makes the call to ImportTableInput idempotent, meaning\n\t// that multiple identical calls have the same effect as one single call.\n\t//\n\t// A client token is valid for 8 hours after the first request that uses it\n\t// is completed. After 8 hours, any request with the same client token is treated\n\t// as a new request. Do not resubmit the same request with the same client token\n\t// for more than 8 hours, or the result might not be idempotent.\n\t//\n\t// If you submit a request with the same client token but a change in other\n\t// parameters within the 8-hour idempotency window, DynamoDB returns an IdempotentParameterMismatch\n\t// exception.\n\tClientToken *string `type:\"string\" idempotencyToken:\"true\"`\n\n\t// Type of compression to be used on the input coming from the imported table.\n\tInputCompressionType *string `type:\"string\" enum:\"InputCompressionType\"`\n\n\t// The format of the source data. Valid values for ImportFormat are CSV, DYNAMODB_JSON\n\t// or ION.\n\t//\n\t// InputFormat is a required field\n\tInputFormat *string `type:\"string\" required:\"true\" enum:\"InputFormat\"`\n\n\t// Additional properties that specify how the input is formatted,\n\tInputFormatOptions *InputFormatOptions `type:\"structure\"`\n\n\t// The S3 bucket that provides the source for the import.\n\t//\n\t// S3BucketSource is a required field\n\tS3BucketSource *S3BucketSource `type:\"structure\" required:\"true\"`\n\n\t// Parameters for the table to import the data into.\n\t//\n\t// TableCreationParameters is a required field\n\tTableCreationParameters *TableCreationParameters `type:\"structure\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ImportTableInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ImportTableInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ImportTableInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ImportTableInput\"}\n\tif s.InputFormat == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"InputFormat\"))\n\t}\n\tif s.S3BucketSource == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"S3BucketSource\"))\n\t}\n\tif s.TableCreationParameters == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableCreationParameters\"))\n\t}\n\tif s.InputFormatOptions != nil {\n\t\tif err := s.InputFormatOptions.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"InputFormatOptions\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.S3BucketSource != nil {\n\t\tif err := s.S3BucketSource.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"S3BucketSource\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.TableCreationParameters != nil {\n\t\tif err := s.TableCreationParameters.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"TableCreationParameters\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetClientToken sets the ClientToken field's value.\nfunc (s *ImportTableInput) SetClientToken(v string) *ImportTableInput {\n\ts.ClientToken = &v\n\treturn s\n}\n\n// SetInputCompressionType sets the InputCompressionType field's value.\nfunc (s *ImportTableInput) SetInputCompressionType(v string) *ImportTableInput {\n\ts.InputCompressionType = &v\n\treturn s\n}\n\n// SetInputFormat sets the InputFormat field's value.\nfunc (s *ImportTableInput) SetInputFormat(v string) *ImportTableInput {\n\ts.InputFormat = &v\n\treturn s\n}\n\n// SetInputFormatOptions sets the InputFormatOptions field's value.\nfunc (s *ImportTableInput) SetInputFormatOptions(v *InputFormatOptions) *ImportTableInput {\n\ts.InputFormatOptions = v\n\treturn s\n}\n\n// SetS3BucketSource sets the S3BucketSource field's value.\nfunc (s *ImportTableInput) SetS3BucketSource(v *S3BucketSource) *ImportTableInput {\n\ts.S3BucketSource = v\n\treturn s\n}\n\n// SetTableCreationParameters sets the TableCreationParameters field's value.\nfunc (s *ImportTableInput) SetTableCreationParameters(v *TableCreationParameters) *ImportTableInput {\n\ts.TableCreationParameters = v\n\treturn s\n}\n\ntype ImportTableOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the properties of the table created for the import, and parameters\n\t// of the import. The import parameters include import status, how many items\n\t// were processed, and how many errors were encountered.\n\t//\n\t// ImportTableDescription is a required field\n\tImportTableDescription *ImportTableDescription `type:\"structure\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ImportTableOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ImportTableOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetImportTableDescription sets the ImportTableDescription field's value.\nfunc (s *ImportTableOutput) SetImportTableDescription(v *ImportTableDescription) *ImportTableOutput {\n\ts.ImportTableDescription = v\n\treturn s\n}\n\n// Optional object containing the parameters specific to an incremental export.\ntype IncrementalExportSpecification struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Time in the past which provides the inclusive start range for the export\n\t// table's data, counted in seconds from the start of the Unix epoch. The incremental\n\t// export will reflect the table's state including and after this point in time.\n\tExportFromTime *time.Time `type:\"timestamp\"`\n\n\t// Time in the past which provides the exclusive end range for the export table's\n\t// data, counted in seconds from the start of the Unix epoch. The incremental\n\t// export will reflect the table's state just prior to this point in time. If\n\t// this is not provided, the latest time with data available will be used.\n\tExportToTime *time.Time `type:\"timestamp\"`\n\n\t// The view type that was chosen for the export. Valid values are NEW_AND_OLD_IMAGES\n\t// and NEW_IMAGES. The default value is NEW_AND_OLD_IMAGES.\n\tExportViewType *string `type:\"string\" enum:\"ExportViewType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s IncrementalExportSpecification) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s IncrementalExportSpecification) GoString() string {\n\treturn s.String()\n}\n\n// SetExportFromTime sets the ExportFromTime field's value.\nfunc (s *IncrementalExportSpecification) SetExportFromTime(v time.Time) *IncrementalExportSpecification {\n\ts.ExportFromTime = &v\n\treturn s\n}\n\n// SetExportToTime sets the ExportToTime field's value.\nfunc (s *IncrementalExportSpecification) SetExportToTime(v time.Time) *IncrementalExportSpecification {\n\ts.ExportToTime = &v\n\treturn s\n}\n\n// SetExportViewType sets the ExportViewType field's value.\nfunc (s *IncrementalExportSpecification) SetExportViewType(v string) *IncrementalExportSpecification {\n\ts.ExportViewType = &v\n\treturn s\n}\n\n// The operation tried to access a nonexistent index.\ntype IndexNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s IndexNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s IndexNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorIndexNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &IndexNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *IndexNotFoundException) Code() string {\n\treturn \"IndexNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *IndexNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *IndexNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *IndexNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *IndexNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *IndexNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The format options for the data that was imported into the target table.\n// There is one value, CsvOption.\ntype InputFormatOptions struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The options for imported source files in CSV format. The values are Delimiter\n\t// and HeaderList.\n\tCsv *CsvOptions `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InputFormatOptions) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InputFormatOptions) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *InputFormatOptions) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"InputFormatOptions\"}\n\tif s.Csv != nil {\n\t\tif err := s.Csv.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Csv\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetCsv sets the Csv field's value.\nfunc (s *InputFormatOptions) SetCsv(v *CsvOptions) *InputFormatOptions {\n\ts.Csv = v\n\treturn s\n}\n\n// An error occurred on the server side.\ntype InternalServerError struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// The server encountered an internal error trying to fulfill the request.\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InternalServerError) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InternalServerError) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInternalServerError(v protocol.ResponseMetadata) error {\n\treturn &InternalServerError{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InternalServerError) Code() string {\n\treturn \"InternalServerError\"\n}\n\n// Message returns the exception's message.\nfunc (s *InternalServerError) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InternalServerError) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InternalServerError) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InternalServerError) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InternalServerError) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified ExportTime is outside of the point in time recovery window.\ntype InvalidExportTimeException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidExportTimeException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidExportTimeException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidExportTimeException(v protocol.ResponseMetadata) error {\n\treturn &InvalidExportTimeException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidExportTimeException) Code() string {\n\treturn \"InvalidExportTimeException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidExportTimeException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidExportTimeException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidExportTimeException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidExportTimeException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidExportTimeException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// An invalid restore time was specified. RestoreDateTime must be between EarliestRestorableDateTime\n// and LatestRestorableDateTime.\ntype InvalidRestoreTimeException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidRestoreTimeException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidRestoreTimeException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidRestoreTimeException(v protocol.ResponseMetadata) error {\n\treturn &InvalidRestoreTimeException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidRestoreTimeException) Code() string {\n\treturn \"InvalidRestoreTimeException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidRestoreTimeException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidRestoreTimeException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidRestoreTimeException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidRestoreTimeException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidRestoreTimeException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Information about item collections, if any, that were affected by the operation.\n// ItemCollectionMetrics is only returned if the request asked for it. If the\n// table does not have any local secondary indexes, this information is not\n// returned in the response.\ntype ItemCollectionMetrics struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The partition key value of the item collection. This value is the same as\n\t// the partition key value of the item.\n\tItemCollectionKey map[string]*AttributeValue `type:\"map\"`\n\n\t// An estimate of item collection size, in gigabytes. This value is a two-element\n\t// array containing a lower bound and an upper bound for the estimate. The estimate\n\t// includes the size of all the items in the table, plus the size of all attributes\n\t// projected into all of the local secondary indexes on that table. Use this\n\t// estimate to measure whether a local secondary index is approaching its size\n\t// limit.\n\t//\n\t// The estimate is subject to change over time; therefore, do not rely on the\n\t// precision or accuracy of the estimate.\n\tSizeEstimateRangeGB []*float64 `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ItemCollectionMetrics) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ItemCollectionMetrics) GoString() string {\n\treturn s.String()\n}\n\n// SetItemCollectionKey sets the ItemCollectionKey field's value.\nfunc (s *ItemCollectionMetrics) SetItemCollectionKey(v map[string]*AttributeValue) *ItemCollectionMetrics {\n\ts.ItemCollectionKey = v\n\treturn s\n}\n\n// SetSizeEstimateRangeGB sets the SizeEstimateRangeGB field's value.\nfunc (s *ItemCollectionMetrics) SetSizeEstimateRangeGB(v []*float64) *ItemCollectionMetrics {\n\ts.SizeEstimateRangeGB = v\n\treturn s\n}\n\n// An item collection is too large. This exception is only returned for tables\n// that have one or more local secondary indexes.\ntype ItemCollectionSizeLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// The total size of an item collection has exceeded the maximum limit of 10\n\t// gigabytes.\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ItemCollectionSizeLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ItemCollectionSizeLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorItemCollectionSizeLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &ItemCollectionSizeLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ItemCollectionSizeLimitExceededException) Code() string {\n\treturn \"ItemCollectionSizeLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ItemCollectionSizeLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ItemCollectionSizeLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ItemCollectionSizeLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ItemCollectionSizeLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ItemCollectionSizeLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Details for the requested item.\ntype ItemResponse struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Map of attribute data consisting of the data type and attribute value.\n\tItem map[string]*AttributeValue `type:\"map\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ItemResponse) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ItemResponse) GoString() string {\n\treturn s.String()\n}\n\n// SetItem sets the Item field's value.\nfunc (s *ItemResponse) SetItem(v map[string]*AttributeValue) *ItemResponse {\n\ts.Item = v\n\treturn s\n}\n\n// Represents a single element of a key schema. A key schema specifies the attributes\n// that make up the primary key of a table, or the key attributes of an index.\n//\n// A KeySchemaElement represents exactly one attribute of the primary key. For\n// example, a simple primary key would be represented by one KeySchemaElement\n// (for the partition key). A composite primary key would require one KeySchemaElement\n// for the partition key, and another KeySchemaElement for the sort key.\n//\n// A KeySchemaElement must be a scalar, top-level attribute (not a nested attribute).\n// The data type must be one of String, Number, or Binary. The attribute cannot\n// be nested within a List or a Map.\ntype KeySchemaElement struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of a key attribute.\n\t//\n\t// AttributeName is a required field\n\tAttributeName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The role that this key attribute will assume:\n\t//\n\t//    * HASH - partition key\n\t//\n\t//    * RANGE - sort key\n\t//\n\t// The partition key of an item is also known as its hash attribute. The term\n\t// \"hash attribute\" derives from DynamoDB's usage of an internal hash function\n\t// to evenly distribute data items across partitions, based on their partition\n\t// key values.\n\t//\n\t// The sort key of an item is also known as its range attribute. The term \"range\n\t// attribute\" derives from the way DynamoDB stores items with the same partition\n\t// key physically close together, in sorted order by the sort key value.\n\t//\n\t// KeyType is a required field\n\tKeyType *string `type:\"string\" required:\"true\" enum:\"KeyType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s KeySchemaElement) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s KeySchemaElement) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *KeySchemaElement) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"KeySchemaElement\"}\n\tif s.AttributeName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AttributeName\"))\n\t}\n\tif s.AttributeName != nil && len(*s.AttributeName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AttributeName\", 1))\n\t}\n\tif s.KeyType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"KeyType\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttributeName sets the AttributeName field's value.\nfunc (s *KeySchemaElement) SetAttributeName(v string) *KeySchemaElement {\n\ts.AttributeName = &v\n\treturn s\n}\n\n// SetKeyType sets the KeyType field's value.\nfunc (s *KeySchemaElement) SetKeyType(v string) *KeySchemaElement {\n\ts.KeyType = &v\n\treturn s\n}\n\n// Represents a set of primary keys and, for each key, the attributes to retrieve\n// from the table.\n//\n// For each primary key, you must provide all of the key attributes. For example,\n// with a simple primary key, you only need to provide the partition key. For\n// a composite primary key, you must provide both the partition key and the\n// sort key.\ntype KeysAndAttributes struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// This is a legacy parameter. Use ProjectionExpression instead. For more information,\n\t// see Legacy Conditional Parameters (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tAttributesToGet []*string `min:\"1\" type:\"list\"`\n\n\t// The consistency of a read operation. If set to true, then a strongly consistent\n\t// read is used; otherwise, an eventually consistent read is used.\n\tConsistentRead *bool `type:\"boolean\"`\n\n\t// One or more substitution tokens for attribute names in an expression. The\n\t// following are some use cases for using ExpressionAttributeNames:\n\t//\n\t//    * To access an attribute whose name conflicts with a DynamoDB reserved\n\t//    word.\n\t//\n\t//    * To create a placeholder for repeating occurrences of an attribute name\n\t//    in an expression.\n\t//\n\t//    * To prevent special characters in an attribute name from being misinterpreted\n\t//    in an expression.\n\t//\n\t// Use the # character in an expression to dereference an attribute name. For\n\t// example, consider the following attribute name:\n\t//\n\t//    * Percentile\n\t//\n\t// The name of this attribute conflicts with a reserved word, so it cannot be\n\t// used directly in an expression. (For the complete list of reserved words,\n\t// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)\n\t// in the Amazon DynamoDB Developer Guide). To work around this, you could specify\n\t// the following for ExpressionAttributeNames:\n\t//\n\t//    * {\"#P\":\"Percentile\"}\n\t//\n\t// You could then use this substitution in an expression, as in this example:\n\t//\n\t//    * #P = :val\n\t//\n\t// Tokens that begin with the : character are expression attribute values, which\n\t// are placeholders for the actual value at runtime.\n\t//\n\t// For more information on expression attribute names, see Accessing Item Attributes\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeNames map[string]*string `type:\"map\"`\n\n\t// The primary key attribute values that define the items and the attributes\n\t// associated with the items.\n\t//\n\t// Keys is a required field\n\tKeys []map[string]*AttributeValue `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// A string that identifies one or more attributes to retrieve from the table.\n\t// These attributes can include scalars, sets, or elements of a JSON document.\n\t// The attributes in the ProjectionExpression must be separated by commas.\n\t//\n\t// If no attribute names are specified, then all attributes will be returned.\n\t// If any of the requested attributes are not found, they will not appear in\n\t// the result.\n\t//\n\t// For more information, see Accessing Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tProjectionExpression *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s KeysAndAttributes) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s KeysAndAttributes) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *KeysAndAttributes) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"KeysAndAttributes\"}\n\tif s.AttributesToGet != nil && len(s.AttributesToGet) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AttributesToGet\", 1))\n\t}\n\tif s.Keys == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Keys\"))\n\t}\n\tif s.Keys != nil && len(s.Keys) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Keys\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttributesToGet sets the AttributesToGet field's value.\nfunc (s *KeysAndAttributes) SetAttributesToGet(v []*string) *KeysAndAttributes {\n\ts.AttributesToGet = v\n\treturn s\n}\n\n// SetConsistentRead sets the ConsistentRead field's value.\nfunc (s *KeysAndAttributes) SetConsistentRead(v bool) *KeysAndAttributes {\n\ts.ConsistentRead = &v\n\treturn s\n}\n\n// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.\nfunc (s *KeysAndAttributes) SetExpressionAttributeNames(v map[string]*string) *KeysAndAttributes {\n\ts.ExpressionAttributeNames = v\n\treturn s\n}\n\n// SetKeys sets the Keys field's value.\nfunc (s *KeysAndAttributes) SetKeys(v []map[string]*AttributeValue) *KeysAndAttributes {\n\ts.Keys = v\n\treturn s\n}\n\n// SetProjectionExpression sets the ProjectionExpression field's value.\nfunc (s *KeysAndAttributes) SetProjectionExpression(v string) *KeysAndAttributes {\n\ts.ProjectionExpression = &v\n\treturn s\n}\n\n// Describes a Kinesis data stream destination.\ntype KinesisDataStreamDestination struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The current status of replication.\n\tDestinationStatus *string `type:\"string\" enum:\"DestinationStatus\"`\n\n\t// The human-readable string that corresponds to the replica status.\n\tDestinationStatusDescription *string `type:\"string\"`\n\n\t// The ARN for a specific Kinesis data stream.\n\tStreamArn *string `min:\"37\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s KinesisDataStreamDestination) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s KinesisDataStreamDestination) GoString() string {\n\treturn s.String()\n}\n\n// SetDestinationStatus sets the DestinationStatus field's value.\nfunc (s *KinesisDataStreamDestination) SetDestinationStatus(v string) *KinesisDataStreamDestination {\n\ts.DestinationStatus = &v\n\treturn s\n}\n\n// SetDestinationStatusDescription sets the DestinationStatusDescription field's value.\nfunc (s *KinesisDataStreamDestination) SetDestinationStatusDescription(v string) *KinesisDataStreamDestination {\n\ts.DestinationStatusDescription = &v\n\treturn s\n}\n\n// SetStreamArn sets the StreamArn field's value.\nfunc (s *KinesisDataStreamDestination) SetStreamArn(v string) *KinesisDataStreamDestination {\n\ts.StreamArn = &v\n\treturn s\n}\n\n// There is no limit to the number of daily on-demand backups that can be taken.\n//\n// For most purposes, up to 500 simultaneous table operations are allowed per\n// account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n// RestoreTableFromBackup, and RestoreTableToPointInTime.\n//\n// When you are creating a table with one or more secondary indexes, you can\n// have up to 250 such requests running at a time. However, if the table or\n// index specifications are complex, then DynamoDB might temporarily reduce\n// the number of concurrent operations.\n//\n// When importing into DynamoDB, up to 50 simultaneous import table operations\n// are allowed per account.\n//\n// There is a soft account quota of 2,500 tables.\n//\n// GetRecords was called with a value of more than 1000 for the limit request\n// parameter.\n//\n// More than 2 processes are reading from the same streams shard at the same\n// time. Exceeding this limit may result in request throttling.\ntype LimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Too many operations for a given subscriber.\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &LimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *LimitExceededException) Code() string {\n\treturn \"LimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *LimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *LimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *LimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *LimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *LimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype ListBackupsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The backups from the table specified by BackupType are listed.\n\t//\n\t// Where BackupType can be:\n\t//\n\t//    * USER - On-demand backup created by you. (The default setting if no other\n\t//    backup types are specified.)\n\t//\n\t//    * SYSTEM - On-demand backup automatically created by DynamoDB.\n\t//\n\t//    * ALL - All types of on-demand backups (USER and SYSTEM).\n\tBackupType *string `type:\"string\" enum:\"BackupTypeFilter\"`\n\n\t// LastEvaluatedBackupArn is the Amazon Resource Name (ARN) of the backup last\n\t// evaluated when the current page of results was returned, inclusive of the\n\t// current page of results. This value may be specified as the ExclusiveStartBackupArn\n\t// of a new ListBackups operation in order to fetch the next page of results.\n\tExclusiveStartBackupArn *string `min:\"37\" type:\"string\"`\n\n\t// Maximum number of backups to return at once.\n\tLimit *int64 `min:\"1\" type:\"integer\"`\n\n\t// The backups from the table specified by TableName are listed.\n\tTableName *string `min:\"3\" type:\"string\"`\n\n\t// Only backups created after this time are listed. TimeRangeLowerBound is inclusive.\n\tTimeRangeLowerBound *time.Time `type:\"timestamp\"`\n\n\t// Only backups created before this time are listed. TimeRangeUpperBound is\n\t// exclusive.\n\tTimeRangeUpperBound *time.Time `type:\"timestamp\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListBackupsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListBackupsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListBackupsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListBackupsInput\"}\n\tif s.ExclusiveStartBackupArn != nil && len(*s.ExclusiveStartBackupArn) < 37 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ExclusiveStartBackupArn\", 37))\n\t}\n\tif s.Limit != nil && *s.Limit < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"Limit\", 1))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetBackupType sets the BackupType field's value.\nfunc (s *ListBackupsInput) SetBackupType(v string) *ListBackupsInput {\n\ts.BackupType = &v\n\treturn s\n}\n\n// SetExclusiveStartBackupArn sets the ExclusiveStartBackupArn field's value.\nfunc (s *ListBackupsInput) SetExclusiveStartBackupArn(v string) *ListBackupsInput {\n\ts.ExclusiveStartBackupArn = &v\n\treturn s\n}\n\n// SetLimit sets the Limit field's value.\nfunc (s *ListBackupsInput) SetLimit(v int64) *ListBackupsInput {\n\ts.Limit = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *ListBackupsInput) SetTableName(v string) *ListBackupsInput {\n\ts.TableName = &v\n\treturn s\n}\n\n// SetTimeRangeLowerBound sets the TimeRangeLowerBound field's value.\nfunc (s *ListBackupsInput) SetTimeRangeLowerBound(v time.Time) *ListBackupsInput {\n\ts.TimeRangeLowerBound = &v\n\treturn s\n}\n\n// SetTimeRangeUpperBound sets the TimeRangeUpperBound field's value.\nfunc (s *ListBackupsInput) SetTimeRangeUpperBound(v time.Time) *ListBackupsInput {\n\ts.TimeRangeUpperBound = &v\n\treturn s\n}\n\ntype ListBackupsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// List of BackupSummary objects.\n\tBackupSummaries []*BackupSummary `type:\"list\"`\n\n\t// The ARN of the backup last evaluated when the current page of results was\n\t// returned, inclusive of the current page of results. This value may be specified\n\t// as the ExclusiveStartBackupArn of a new ListBackups operation in order to\n\t// fetch the next page of results.\n\t//\n\t// If LastEvaluatedBackupArn is empty, then the last page of results has been\n\t// processed and there are no more results to be retrieved.\n\t//\n\t// If LastEvaluatedBackupArn is not empty, this may or may not indicate that\n\t// there is more data to be returned. All results are guaranteed to have been\n\t// returned if and only if no value for LastEvaluatedBackupArn is returned.\n\tLastEvaluatedBackupArn *string `min:\"37\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListBackupsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListBackupsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetBackupSummaries sets the BackupSummaries field's value.\nfunc (s *ListBackupsOutput) SetBackupSummaries(v []*BackupSummary) *ListBackupsOutput {\n\ts.BackupSummaries = v\n\treturn s\n}\n\n// SetLastEvaluatedBackupArn sets the LastEvaluatedBackupArn field's value.\nfunc (s *ListBackupsOutput) SetLastEvaluatedBackupArn(v string) *ListBackupsOutput {\n\ts.LastEvaluatedBackupArn = &v\n\treturn s\n}\n\ntype ListContributorInsightsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Maximum number of results to return per page.\n\tMaxResults *int64 `type:\"integer\"`\n\n\t// A token to for the desired page, if there is one.\n\tNextToken *string `type:\"string\"`\n\n\t// The name of the table.\n\tTableName *string `min:\"3\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListContributorInsightsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListContributorInsightsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListContributorInsightsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListContributorInsightsInput\"}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListContributorInsightsInput) SetMaxResults(v int64) *ListContributorInsightsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListContributorInsightsInput) SetNextToken(v string) *ListContributorInsightsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *ListContributorInsightsInput) SetTableName(v string) *ListContributorInsightsInput {\n\ts.TableName = &v\n\treturn s\n}\n\ntype ListContributorInsightsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A list of ContributorInsightsSummary.\n\tContributorInsightsSummaries []*ContributorInsightsSummary `type:\"list\"`\n\n\t// A token to go to the next page if there is one.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListContributorInsightsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListContributorInsightsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetContributorInsightsSummaries sets the ContributorInsightsSummaries field's value.\nfunc (s *ListContributorInsightsOutput) SetContributorInsightsSummaries(v []*ContributorInsightsSummary) *ListContributorInsightsOutput {\n\ts.ContributorInsightsSummaries = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListContributorInsightsOutput) SetNextToken(v string) *ListContributorInsightsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListExportsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Maximum number of results to return per page.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// An optional string that, if supplied, must be copied from the output of a\n\t// previous call to ListExports. When provided in this manner, the API fetches\n\t// the next page of results.\n\tNextToken *string `type:\"string\"`\n\n\t// The Amazon Resource Name (ARN) associated with the exported table.\n\tTableArn *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListExportsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListExportsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListExportsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListExportsInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListExportsInput) SetMaxResults(v int64) *ListExportsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListExportsInput) SetNextToken(v string) *ListExportsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetTableArn sets the TableArn field's value.\nfunc (s *ListExportsInput) SetTableArn(v string) *ListExportsInput {\n\ts.TableArn = &v\n\treturn s\n}\n\ntype ListExportsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A list of ExportSummary objects.\n\tExportSummaries []*ExportSummary `type:\"list\"`\n\n\t// If this value is returned, there are additional results to be displayed.\n\t// To retrieve them, call ListExports again, with NextToken set to this value.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListExportsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListExportsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetExportSummaries sets the ExportSummaries field's value.\nfunc (s *ListExportsOutput) SetExportSummaries(v []*ExportSummary) *ListExportsOutput {\n\ts.ExportSummaries = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListExportsOutput) SetNextToken(v string) *ListExportsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListGlobalTablesInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The first global table name that this operation will evaluate.\n\tExclusiveStartGlobalTableName *string `min:\"3\" type:\"string\"`\n\n\t// The maximum number of table names to return, if the parameter is not specified\n\t// DynamoDB defaults to 100.\n\t//\n\t// If the number of global tables DynamoDB finds reaches this limit, it stops\n\t// the operation and returns the table names collected up to that point, with\n\t// a table name in the LastEvaluatedGlobalTableName to apply in a subsequent\n\t// operation to the ExclusiveStartGlobalTableName parameter.\n\tLimit *int64 `min:\"1\" type:\"integer\"`\n\n\t// Lists the global tables in a specific Region.\n\tRegionName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListGlobalTablesInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListGlobalTablesInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListGlobalTablesInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListGlobalTablesInput\"}\n\tif s.ExclusiveStartGlobalTableName != nil && len(*s.ExclusiveStartGlobalTableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ExclusiveStartGlobalTableName\", 3))\n\t}\n\tif s.Limit != nil && *s.Limit < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"Limit\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetExclusiveStartGlobalTableName sets the ExclusiveStartGlobalTableName field's value.\nfunc (s *ListGlobalTablesInput) SetExclusiveStartGlobalTableName(v string) *ListGlobalTablesInput {\n\ts.ExclusiveStartGlobalTableName = &v\n\treturn s\n}\n\n// SetLimit sets the Limit field's value.\nfunc (s *ListGlobalTablesInput) SetLimit(v int64) *ListGlobalTablesInput {\n\ts.Limit = &v\n\treturn s\n}\n\n// SetRegionName sets the RegionName field's value.\nfunc (s *ListGlobalTablesInput) SetRegionName(v string) *ListGlobalTablesInput {\n\ts.RegionName = &v\n\treturn s\n}\n\ntype ListGlobalTablesOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// List of global table names.\n\tGlobalTables []*GlobalTable `type:\"list\"`\n\n\t// Last evaluated global table name.\n\tLastEvaluatedGlobalTableName *string `min:\"3\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListGlobalTablesOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListGlobalTablesOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetGlobalTables sets the GlobalTables field's value.\nfunc (s *ListGlobalTablesOutput) SetGlobalTables(v []*GlobalTable) *ListGlobalTablesOutput {\n\ts.GlobalTables = v\n\treturn s\n}\n\n// SetLastEvaluatedGlobalTableName sets the LastEvaluatedGlobalTableName field's value.\nfunc (s *ListGlobalTablesOutput) SetLastEvaluatedGlobalTableName(v string) *ListGlobalTablesOutput {\n\ts.LastEvaluatedGlobalTableName = &v\n\treturn s\n}\n\ntype ListImportsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// An optional string that, if supplied, must be copied from the output of a\n\t// previous call to ListImports. When provided in this manner, the API fetches\n\t// the next page of results.\n\tNextToken *string `min:\"112\" type:\"string\"`\n\n\t// The number of ImportSummary objects returned in a single page.\n\tPageSize *int64 `min:\"1\" type:\"integer\"`\n\n\t// The Amazon Resource Name (ARN) associated with the table that was imported\n\t// to.\n\tTableArn *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListImportsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListImportsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListImportsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListImportsInput\"}\n\tif s.NextToken != nil && len(*s.NextToken) < 112 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"NextToken\", 112))\n\t}\n\tif s.PageSize != nil && *s.PageSize < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"PageSize\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListImportsInput) SetNextToken(v string) *ListImportsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetPageSize sets the PageSize field's value.\nfunc (s *ListImportsInput) SetPageSize(v int64) *ListImportsInput {\n\ts.PageSize = &v\n\treturn s\n}\n\n// SetTableArn sets the TableArn field's value.\nfunc (s *ListImportsInput) SetTableArn(v string) *ListImportsInput {\n\ts.TableArn = &v\n\treturn s\n}\n\ntype ListImportsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A list of ImportSummary objects.\n\tImportSummaryList []*ImportSummary `type:\"list\"`\n\n\t// If this value is returned, there are additional results to be displayed.\n\t// To retrieve them, call ListImports again, with NextToken set to this value.\n\tNextToken *string `min:\"112\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListImportsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListImportsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetImportSummaryList sets the ImportSummaryList field's value.\nfunc (s *ListImportsOutput) SetImportSummaryList(v []*ImportSummary) *ListImportsOutput {\n\ts.ImportSummaryList = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListImportsOutput) SetNextToken(v string) *ListImportsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// Represents the input of a ListTables operation.\ntype ListTablesInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The first table name that this operation will evaluate. Use the value that\n\t// was returned for LastEvaluatedTableName in a previous operation, so that\n\t// you can obtain the next page of results.\n\tExclusiveStartTableName *string `min:\"3\" type:\"string\"`\n\n\t// A maximum number of table names to return. If this parameter is not specified,\n\t// the limit is 100.\n\tLimit *int64 `min:\"1\" type:\"integer\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListTablesInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListTablesInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListTablesInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListTablesInput\"}\n\tif s.ExclusiveStartTableName != nil && len(*s.ExclusiveStartTableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ExclusiveStartTableName\", 3))\n\t}\n\tif s.Limit != nil && *s.Limit < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"Limit\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetExclusiveStartTableName sets the ExclusiveStartTableName field's value.\nfunc (s *ListTablesInput) SetExclusiveStartTableName(v string) *ListTablesInput {\n\ts.ExclusiveStartTableName = &v\n\treturn s\n}\n\n// SetLimit sets the Limit field's value.\nfunc (s *ListTablesInput) SetLimit(v int64) *ListTablesInput {\n\ts.Limit = &v\n\treturn s\n}\n\n// Represents the output of a ListTables operation.\ntype ListTablesOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the last table in the current page of results. Use this value\n\t// as the ExclusiveStartTableName in a new request to obtain the next page of\n\t// results, until all the table names are returned.\n\t//\n\t// If you do not receive a LastEvaluatedTableName value in the response, this\n\t// means that there are no more table names to be retrieved.\n\tLastEvaluatedTableName *string `min:\"3\" type:\"string\"`\n\n\t// The names of the tables associated with the current account at the current\n\t// endpoint. The maximum size of this array is 100.\n\t//\n\t// If LastEvaluatedTableName also appears in the output, you can use this value\n\t// as the ExclusiveStartTableName parameter in a subsequent ListTables request\n\t// and obtain the next page of results.\n\tTableNames []*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListTablesOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListTablesOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetLastEvaluatedTableName sets the LastEvaluatedTableName field's value.\nfunc (s *ListTablesOutput) SetLastEvaluatedTableName(v string) *ListTablesOutput {\n\ts.LastEvaluatedTableName = &v\n\treturn s\n}\n\n// SetTableNames sets the TableNames field's value.\nfunc (s *ListTablesOutput) SetTableNames(v []*string) *ListTablesOutput {\n\ts.TableNames = v\n\treturn s\n}\n\ntype ListTagsOfResourceInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// An optional string that, if supplied, must be copied from the output of a\n\t// previous call to ListTagOfResource. When provided in this manner, this API\n\t// fetches the next page of results.\n\tNextToken *string `type:\"string\"`\n\n\t// The Amazon DynamoDB resource with tags to be listed. This value is an Amazon\n\t// Resource Name (ARN).\n\t//\n\t// ResourceArn is a required field\n\tResourceArn *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListTagsOfResourceInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListTagsOfResourceInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListTagsOfResourceInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListTagsOfResourceInput\"}\n\tif s.ResourceArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceArn\"))\n\t}\n\tif s.ResourceArn != nil && len(*s.ResourceArn) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ResourceArn\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListTagsOfResourceInput) SetNextToken(v string) *ListTagsOfResourceInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetResourceArn sets the ResourceArn field's value.\nfunc (s *ListTagsOfResourceInput) SetResourceArn(v string) *ListTagsOfResourceInput {\n\ts.ResourceArn = &v\n\treturn s\n}\n\ntype ListTagsOfResourceOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// If this value is returned, there are additional results to be displayed.\n\t// To retrieve them, call ListTagsOfResource again, with NextToken set to this\n\t// value.\n\tNextToken *string `type:\"string\"`\n\n\t// The tags currently associated with the Amazon DynamoDB resource.\n\tTags []*Tag `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListTagsOfResourceOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListTagsOfResourceOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListTagsOfResourceOutput) SetNextToken(v string) *ListTagsOfResourceOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *ListTagsOfResourceOutput) SetTags(v []*Tag) *ListTagsOfResourceOutput {\n\ts.Tags = v\n\treturn s\n}\n\n// Represents the properties of a local secondary index.\ntype LocalSecondaryIndex struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the local secondary index. The name must be unique among all\n\t// other indexes on this table.\n\t//\n\t// IndexName is a required field\n\tIndexName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// The complete key schema for the local secondary index, consisting of one\n\t// or more pairs of attribute names and key types:\n\t//\n\t//    * HASH - partition key\n\t//\n\t//    * RANGE - sort key\n\t//\n\t// The partition key of an item is also known as its hash attribute. The term\n\t// \"hash attribute\" derives from DynamoDB's usage of an internal hash function\n\t// to evenly distribute data items across partitions, based on their partition\n\t// key values.\n\t//\n\t// The sort key of an item is also known as its range attribute. The term \"range\n\t// attribute\" derives from the way DynamoDB stores items with the same partition\n\t// key physically close together, in sorted order by the sort key value.\n\t//\n\t// KeySchema is a required field\n\tKeySchema []*KeySchemaElement `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// Represents attributes that are copied (projected) from the table into the\n\t// local secondary index. These are in addition to the primary key attributes\n\t// and index key attributes, which are automatically projected.\n\t//\n\t// Projection is a required field\n\tProjection *Projection `type:\"structure\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LocalSecondaryIndex) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LocalSecondaryIndex) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *LocalSecondaryIndex) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"LocalSecondaryIndex\"}\n\tif s.IndexName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"IndexName\"))\n\t}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\tif s.KeySchema == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"KeySchema\"))\n\t}\n\tif s.KeySchema != nil && len(s.KeySchema) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"KeySchema\", 1))\n\t}\n\tif s.Projection == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Projection\"))\n\t}\n\tif s.KeySchema != nil {\n\t\tfor i, v := range s.KeySchema {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"KeySchema\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Projection != nil {\n\t\tif err := s.Projection.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Projection\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *LocalSecondaryIndex) SetIndexName(v string) *LocalSecondaryIndex {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetKeySchema sets the KeySchema field's value.\nfunc (s *LocalSecondaryIndex) SetKeySchema(v []*KeySchemaElement) *LocalSecondaryIndex {\n\ts.KeySchema = v\n\treturn s\n}\n\n// SetProjection sets the Projection field's value.\nfunc (s *LocalSecondaryIndex) SetProjection(v *Projection) *LocalSecondaryIndex {\n\ts.Projection = v\n\treturn s\n}\n\n// Represents the properties of a local secondary index.\ntype LocalSecondaryIndexDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) that uniquely identifies the index.\n\tIndexArn *string `type:\"string\"`\n\n\t// Represents the name of the local secondary index.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// The total size of the specified index, in bytes. DynamoDB updates this value\n\t// approximately every six hours. Recent changes might not be reflected in this\n\t// value.\n\tIndexSizeBytes *int64 `type:\"long\"`\n\n\t// The number of items in the specified index. DynamoDB updates this value approximately\n\t// every six hours. Recent changes might not be reflected in this value.\n\tItemCount *int64 `type:\"long\"`\n\n\t// The complete key schema for the local secondary index, consisting of one\n\t// or more pairs of attribute names and key types:\n\t//\n\t//    * HASH - partition key\n\t//\n\t//    * RANGE - sort key\n\t//\n\t// The partition key of an item is also known as its hash attribute. The term\n\t// \"hash attribute\" derives from DynamoDB's usage of an internal hash function\n\t// to evenly distribute data items across partitions, based on their partition\n\t// key values.\n\t//\n\t// The sort key of an item is also known as its range attribute. The term \"range\n\t// attribute\" derives from the way DynamoDB stores items with the same partition\n\t// key physically close together, in sorted order by the sort key value.\n\tKeySchema []*KeySchemaElement `min:\"1\" type:\"list\"`\n\n\t// Represents attributes that are copied (projected) from the table into the\n\t// global secondary index. These are in addition to the primary key attributes\n\t// and index key attributes, which are automatically projected.\n\tProjection *Projection `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LocalSecondaryIndexDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LocalSecondaryIndexDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetIndexArn sets the IndexArn field's value.\nfunc (s *LocalSecondaryIndexDescription) SetIndexArn(v string) *LocalSecondaryIndexDescription {\n\ts.IndexArn = &v\n\treturn s\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *LocalSecondaryIndexDescription) SetIndexName(v string) *LocalSecondaryIndexDescription {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetIndexSizeBytes sets the IndexSizeBytes field's value.\nfunc (s *LocalSecondaryIndexDescription) SetIndexSizeBytes(v int64) *LocalSecondaryIndexDescription {\n\ts.IndexSizeBytes = &v\n\treturn s\n}\n\n// SetItemCount sets the ItemCount field's value.\nfunc (s *LocalSecondaryIndexDescription) SetItemCount(v int64) *LocalSecondaryIndexDescription {\n\ts.ItemCount = &v\n\treturn s\n}\n\n// SetKeySchema sets the KeySchema field's value.\nfunc (s *LocalSecondaryIndexDescription) SetKeySchema(v []*KeySchemaElement) *LocalSecondaryIndexDescription {\n\ts.KeySchema = v\n\treturn s\n}\n\n// SetProjection sets the Projection field's value.\nfunc (s *LocalSecondaryIndexDescription) SetProjection(v *Projection) *LocalSecondaryIndexDescription {\n\ts.Projection = v\n\treturn s\n}\n\n// Represents the properties of a local secondary index for the table when the\n// backup was created.\ntype LocalSecondaryIndexInfo struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the name of the local secondary index.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// The complete key schema for a local secondary index, which consists of one\n\t// or more pairs of attribute names and key types:\n\t//\n\t//    * HASH - partition key\n\t//\n\t//    * RANGE - sort key\n\t//\n\t// The partition key of an item is also known as its hash attribute. The term\n\t// \"hash attribute\" derives from DynamoDB's usage of an internal hash function\n\t// to evenly distribute data items across partitions, based on their partition\n\t// key values.\n\t//\n\t// The sort key of an item is also known as its range attribute. The term \"range\n\t// attribute\" derives from the way DynamoDB stores items with the same partition\n\t// key physically close together, in sorted order by the sort key value.\n\tKeySchema []*KeySchemaElement `min:\"1\" type:\"list\"`\n\n\t// Represents attributes that are copied (projected) from the table into the\n\t// global secondary index. These are in addition to the primary key attributes\n\t// and index key attributes, which are automatically projected.\n\tProjection *Projection `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LocalSecondaryIndexInfo) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LocalSecondaryIndexInfo) GoString() string {\n\treturn s.String()\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *LocalSecondaryIndexInfo) SetIndexName(v string) *LocalSecondaryIndexInfo {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetKeySchema sets the KeySchema field's value.\nfunc (s *LocalSecondaryIndexInfo) SetKeySchema(v []*KeySchemaElement) *LocalSecondaryIndexInfo {\n\ts.KeySchema = v\n\treturn s\n}\n\n// SetProjection sets the Projection field's value.\nfunc (s *LocalSecondaryIndexInfo) SetProjection(v *Projection) *LocalSecondaryIndexInfo {\n\ts.Projection = v\n\treturn s\n}\n\n// Represents a PartiQL statment that uses parameters.\ntype ParameterizedStatement struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The parameter values.\n\tParameters []*AttributeValue `min:\"1\" type:\"list\"`\n\n\t// An optional parameter that returns the item attributes for a PartiQL ParameterizedStatement\n\t// operation that failed a condition check.\n\t//\n\t// There is no additional cost associated with requesting a return value aside\n\t// from the small network and processing overhead of receiving a larger response.\n\t// No read capacity units are consumed.\n\tReturnValuesOnConditionCheckFailure *string `type:\"string\" enum:\"ReturnValuesOnConditionCheckFailure\"`\n\n\t// A PartiQL statment that uses parameters.\n\t//\n\t// Statement is a required field\n\tStatement *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterizedStatement) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterizedStatement) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ParameterizedStatement) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ParameterizedStatement\"}\n\tif s.Parameters != nil && len(s.Parameters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Parameters\", 1))\n\t}\n\tif s.Statement == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Statement\"))\n\t}\n\tif s.Statement != nil && len(*s.Statement) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Statement\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *ParameterizedStatement) SetParameters(v []*AttributeValue) *ParameterizedStatement {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.\nfunc (s *ParameterizedStatement) SetReturnValuesOnConditionCheckFailure(v string) *ParameterizedStatement {\n\ts.ReturnValuesOnConditionCheckFailure = &v\n\treturn s\n}\n\n// SetStatement sets the Statement field's value.\nfunc (s *ParameterizedStatement) SetStatement(v string) *ParameterizedStatement {\n\ts.Statement = &v\n\treturn s\n}\n\n// The description of the point in time settings applied to the table.\ntype PointInTimeRecoveryDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Specifies the earliest point in time you can restore your table to. You can\n\t// restore your table to any point in time during the last 35 days.\n\tEarliestRestorableDateTime *time.Time `type:\"timestamp\"`\n\n\t// LatestRestorableDateTime is typically 5 minutes before the current time.\n\tLatestRestorableDateTime *time.Time `type:\"timestamp\"`\n\n\t// The current state of point in time recovery:\n\t//\n\t//    * ENABLED - Point in time recovery is enabled.\n\t//\n\t//    * DISABLED - Point in time recovery is disabled.\n\tPointInTimeRecoveryStatus *string `type:\"string\" enum:\"PointInTimeRecoveryStatus\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PointInTimeRecoveryDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PointInTimeRecoveryDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetEarliestRestorableDateTime sets the EarliestRestorableDateTime field's value.\nfunc (s *PointInTimeRecoveryDescription) SetEarliestRestorableDateTime(v time.Time) *PointInTimeRecoveryDescription {\n\ts.EarliestRestorableDateTime = &v\n\treturn s\n}\n\n// SetLatestRestorableDateTime sets the LatestRestorableDateTime field's value.\nfunc (s *PointInTimeRecoveryDescription) SetLatestRestorableDateTime(v time.Time) *PointInTimeRecoveryDescription {\n\ts.LatestRestorableDateTime = &v\n\treturn s\n}\n\n// SetPointInTimeRecoveryStatus sets the PointInTimeRecoveryStatus field's value.\nfunc (s *PointInTimeRecoveryDescription) SetPointInTimeRecoveryStatus(v string) *PointInTimeRecoveryDescription {\n\ts.PointInTimeRecoveryStatus = &v\n\treturn s\n}\n\n// Represents the settings used to enable point in time recovery.\ntype PointInTimeRecoverySpecification struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Indicates whether point in time recovery is enabled (true) or disabled (false)\n\t// on the table.\n\t//\n\t// PointInTimeRecoveryEnabled is a required field\n\tPointInTimeRecoveryEnabled *bool `type:\"boolean\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PointInTimeRecoverySpecification) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PointInTimeRecoverySpecification) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *PointInTimeRecoverySpecification) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"PointInTimeRecoverySpecification\"}\n\tif s.PointInTimeRecoveryEnabled == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PointInTimeRecoveryEnabled\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetPointInTimeRecoveryEnabled sets the PointInTimeRecoveryEnabled field's value.\nfunc (s *PointInTimeRecoverySpecification) SetPointInTimeRecoveryEnabled(v bool) *PointInTimeRecoverySpecification {\n\ts.PointInTimeRecoveryEnabled = &v\n\treturn s\n}\n\n// Point in time recovery has not yet been enabled for this source table.\ntype PointInTimeRecoveryUnavailableException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PointInTimeRecoveryUnavailableException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PointInTimeRecoveryUnavailableException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorPointInTimeRecoveryUnavailableException(v protocol.ResponseMetadata) error {\n\treturn &PointInTimeRecoveryUnavailableException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *PointInTimeRecoveryUnavailableException) Code() string {\n\treturn \"PointInTimeRecoveryUnavailableException\"\n}\n\n// Message returns the exception's message.\nfunc (s *PointInTimeRecoveryUnavailableException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *PointInTimeRecoveryUnavailableException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *PointInTimeRecoveryUnavailableException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *PointInTimeRecoveryUnavailableException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *PointInTimeRecoveryUnavailableException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Represents attributes that are copied (projected) from the table into an\n// index. These are in addition to the primary key attributes and index key\n// attributes, which are automatically projected.\ntype Projection struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the non-key attribute names which will be projected into the index.\n\t//\n\t// For local secondary indexes, the total count of NonKeyAttributes summed across\n\t// all of the local secondary indexes, must not exceed 100. If you project the\n\t// same attribute into two different indexes, this counts as two distinct attributes\n\t// when determining the total.\n\tNonKeyAttributes []*string `min:\"1\" type:\"list\"`\n\n\t// The set of attributes that are projected into the index:\n\t//\n\t//    * KEYS_ONLY - Only the index and primary keys are projected into the index.\n\t//\n\t//    * INCLUDE - In addition to the attributes described in KEYS_ONLY, the\n\t//    secondary index will include other non-key attributes that you specify.\n\t//\n\t//    * ALL - All of the table attributes are projected into the index.\n\tProjectionType *string `type:\"string\" enum:\"ProjectionType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Projection) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Projection) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *Projection) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"Projection\"}\n\tif s.NonKeyAttributes != nil && len(s.NonKeyAttributes) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"NonKeyAttributes\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetNonKeyAttributes sets the NonKeyAttributes field's value.\nfunc (s *Projection) SetNonKeyAttributes(v []*string) *Projection {\n\ts.NonKeyAttributes = v\n\treturn s\n}\n\n// SetProjectionType sets the ProjectionType field's value.\nfunc (s *Projection) SetProjectionType(v string) *Projection {\n\ts.ProjectionType = &v\n\treturn s\n}\n\n// Represents the provisioned throughput settings for a specified table or index.\n// The settings can be modified using the UpdateTable operation.\n//\n// For current minimum and maximum provisioned throughput values, see Service,\n// Account, and Table Quotas (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)\n// in the Amazon DynamoDB Developer Guide.\ntype ProvisionedThroughput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The maximum number of strongly consistent reads consumed per second before\n\t// DynamoDB returns a ThrottlingException. For more information, see Specifying\n\t// Read and Write Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\t//\n\t// If read/write capacity mode is PAY_PER_REQUEST the value is set to 0.\n\t//\n\t// ReadCapacityUnits is a required field\n\tReadCapacityUnits *int64 `min:\"1\" type:\"long\" required:\"true\"`\n\n\t// The maximum number of writes consumed per second before DynamoDB returns\n\t// a ThrottlingException. For more information, see Specifying Read and Write\n\t// Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\t//\n\t// If read/write capacity mode is PAY_PER_REQUEST the value is set to 0.\n\t//\n\t// WriteCapacityUnits is a required field\n\tWriteCapacityUnits *int64 `min:\"1\" type:\"long\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ProvisionedThroughput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ProvisionedThroughput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ProvisionedThroughput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ProvisionedThroughput\"}\n\tif s.ReadCapacityUnits == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ReadCapacityUnits\"))\n\t}\n\tif s.ReadCapacityUnits != nil && *s.ReadCapacityUnits < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"ReadCapacityUnits\", 1))\n\t}\n\tif s.WriteCapacityUnits == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WriteCapacityUnits\"))\n\t}\n\tif s.WriteCapacityUnits != nil && *s.WriteCapacityUnits < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"WriteCapacityUnits\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetReadCapacityUnits sets the ReadCapacityUnits field's value.\nfunc (s *ProvisionedThroughput) SetReadCapacityUnits(v int64) *ProvisionedThroughput {\n\ts.ReadCapacityUnits = &v\n\treturn s\n}\n\n// SetWriteCapacityUnits sets the WriteCapacityUnits field's value.\nfunc (s *ProvisionedThroughput) SetWriteCapacityUnits(v int64) *ProvisionedThroughput {\n\ts.WriteCapacityUnits = &v\n\treturn s\n}\n\n// Represents the provisioned throughput settings for the table, consisting\n// of read and write capacity units, along with data about increases and decreases.\ntype ProvisionedThroughputDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The date and time of the last provisioned throughput decrease for this table.\n\tLastDecreaseDateTime *time.Time `type:\"timestamp\"`\n\n\t// The date and time of the last provisioned throughput increase for this table.\n\tLastIncreaseDateTime *time.Time `type:\"timestamp\"`\n\n\t// The number of provisioned throughput decreases for this table during this\n\t// UTC calendar day. For current maximums on provisioned throughput decreases,\n\t// see Service, Account, and Table Quotas (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tNumberOfDecreasesToday *int64 `min:\"1\" type:\"long\"`\n\n\t// The maximum number of strongly consistent reads consumed per second before\n\t// DynamoDB returns a ThrottlingException. Eventually consistent reads require\n\t// less effort than strongly consistent reads, so a setting of 50 ReadCapacityUnits\n\t// per second provides 100 eventually consistent ReadCapacityUnits per second.\n\tReadCapacityUnits *int64 `type:\"long\"`\n\n\t// The maximum number of writes consumed per second before DynamoDB returns\n\t// a ThrottlingException.\n\tWriteCapacityUnits *int64 `type:\"long\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ProvisionedThroughputDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ProvisionedThroughputDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetLastDecreaseDateTime sets the LastDecreaseDateTime field's value.\nfunc (s *ProvisionedThroughputDescription) SetLastDecreaseDateTime(v time.Time) *ProvisionedThroughputDescription {\n\ts.LastDecreaseDateTime = &v\n\treturn s\n}\n\n// SetLastIncreaseDateTime sets the LastIncreaseDateTime field's value.\nfunc (s *ProvisionedThroughputDescription) SetLastIncreaseDateTime(v time.Time) *ProvisionedThroughputDescription {\n\ts.LastIncreaseDateTime = &v\n\treturn s\n}\n\n// SetNumberOfDecreasesToday sets the NumberOfDecreasesToday field's value.\nfunc (s *ProvisionedThroughputDescription) SetNumberOfDecreasesToday(v int64) *ProvisionedThroughputDescription {\n\ts.NumberOfDecreasesToday = &v\n\treturn s\n}\n\n// SetReadCapacityUnits sets the ReadCapacityUnits field's value.\nfunc (s *ProvisionedThroughputDescription) SetReadCapacityUnits(v int64) *ProvisionedThroughputDescription {\n\ts.ReadCapacityUnits = &v\n\treturn s\n}\n\n// SetWriteCapacityUnits sets the WriteCapacityUnits field's value.\nfunc (s *ProvisionedThroughputDescription) SetWriteCapacityUnits(v int64) *ProvisionedThroughputDescription {\n\ts.WriteCapacityUnits = &v\n\treturn s\n}\n\n// Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n// automatically retry requests that receive this exception. Your request is\n// eventually successful, unless your retry queue is too large to finish. Reduce\n// the frequency of requests and use exponential backoff. For more information,\n// go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n// in the Amazon DynamoDB Developer Guide.\ntype ProvisionedThroughputExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// You exceeded your maximum allowed provisioned throughput.\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ProvisionedThroughputExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ProvisionedThroughputExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorProvisionedThroughputExceededException(v protocol.ResponseMetadata) error {\n\treturn &ProvisionedThroughputExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ProvisionedThroughputExceededException) Code() string {\n\treturn \"ProvisionedThroughputExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ProvisionedThroughputExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ProvisionedThroughputExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ProvisionedThroughputExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ProvisionedThroughputExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ProvisionedThroughputExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Replica-specific provisioned throughput settings. If not specified, uses\n// the source table's provisioned throughput settings.\ntype ProvisionedThroughputOverride struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Replica-specific read capacity units. If not specified, uses the source table's\n\t// read capacity settings.\n\tReadCapacityUnits *int64 `min:\"1\" type:\"long\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ProvisionedThroughputOverride) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ProvisionedThroughputOverride) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ProvisionedThroughputOverride) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ProvisionedThroughputOverride\"}\n\tif s.ReadCapacityUnits != nil && *s.ReadCapacityUnits < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"ReadCapacityUnits\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetReadCapacityUnits sets the ReadCapacityUnits field's value.\nfunc (s *ProvisionedThroughputOverride) SetReadCapacityUnits(v int64) *ProvisionedThroughputOverride {\n\ts.ReadCapacityUnits = &v\n\treturn s\n}\n\n// Represents a request to perform a PutItem operation.\ntype Put struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A condition that must be satisfied in order for a conditional update to succeed.\n\tConditionExpression *string `type:\"string\"`\n\n\t// One or more substitution tokens for attribute names in an expression.\n\tExpressionAttributeNames map[string]*string `type:\"map\"`\n\n\t// One or more values that can be substituted in an expression.\n\tExpressionAttributeValues map[string]*AttributeValue `type:\"map\"`\n\n\t// A map of attribute name to attribute values, representing the primary key\n\t// of the item to be written by PutItem. All of the table's primary key attributes\n\t// must be specified, and their data types must match those of the table's key\n\t// schema. If any attributes are present in the item that are part of an index\n\t// key schema for the table, their types must match the index key schema.\n\t//\n\t// Item is a required field\n\tItem map[string]*AttributeValue `type:\"map\" required:\"true\"`\n\n\t// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the\n\t// Put condition fails. For ReturnValuesOnConditionCheckFailure, the valid values\n\t// are: NONE and ALL_OLD.\n\tReturnValuesOnConditionCheckFailure *string `type:\"string\" enum:\"ReturnValuesOnConditionCheckFailure\"`\n\n\t// Name of the table in which to write the item.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Put) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Put) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *Put) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"Put\"}\n\tif s.Item == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Item\"))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetConditionExpression sets the ConditionExpression field's value.\nfunc (s *Put) SetConditionExpression(v string) *Put {\n\ts.ConditionExpression = &v\n\treturn s\n}\n\n// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.\nfunc (s *Put) SetExpressionAttributeNames(v map[string]*string) *Put {\n\ts.ExpressionAttributeNames = v\n\treturn s\n}\n\n// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.\nfunc (s *Put) SetExpressionAttributeValues(v map[string]*AttributeValue) *Put {\n\ts.ExpressionAttributeValues = v\n\treturn s\n}\n\n// SetItem sets the Item field's value.\nfunc (s *Put) SetItem(v map[string]*AttributeValue) *Put {\n\ts.Item = v\n\treturn s\n}\n\n// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.\nfunc (s *Put) SetReturnValuesOnConditionCheckFailure(v string) *Put {\n\ts.ReturnValuesOnConditionCheckFailure = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *Put) SetTableName(v string) *Put {\n\ts.TableName = &v\n\treturn s\n}\n\n// Represents the input of a PutItem operation.\ntype PutItemInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A condition that must be satisfied in order for a conditional PutItem operation\n\t// to succeed.\n\t//\n\t// An expression can contain any of the following:\n\t//\n\t//    * Functions: attribute_exists | attribute_not_exists | attribute_type\n\t//    | contains | begins_with | size These function names are case-sensitive.\n\t//\n\t//    * Comparison operators: = | <> | < | > | <= | >= | BETWEEN | IN\n\t//\n\t//    * Logical operators: AND | OR | NOT\n\t//\n\t// For more information on condition expressions, see Condition Expressions\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConditionExpression *string `type:\"string\"`\n\n\t// This is a legacy parameter. Use ConditionExpression instead. For more information,\n\t// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConditionalOperator *string `type:\"string\" enum:\"ConditionalOperator\"`\n\n\t// This is a legacy parameter. Use ConditionExpression instead. For more information,\n\t// see Expected (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.Expected.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpected map[string]*ExpectedAttributeValue `type:\"map\"`\n\n\t// One or more substitution tokens for attribute names in an expression. The\n\t// following are some use cases for using ExpressionAttributeNames:\n\t//\n\t//    * To access an attribute whose name conflicts with a DynamoDB reserved\n\t//    word.\n\t//\n\t//    * To create a placeholder for repeating occurrences of an attribute name\n\t//    in an expression.\n\t//\n\t//    * To prevent special characters in an attribute name from being misinterpreted\n\t//    in an expression.\n\t//\n\t// Use the # character in an expression to dereference an attribute name. For\n\t// example, consider the following attribute name:\n\t//\n\t//    * Percentile\n\t//\n\t// The name of this attribute conflicts with a reserved word, so it cannot be\n\t// used directly in an expression. (For the complete list of reserved words,\n\t// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)\n\t// in the Amazon DynamoDB Developer Guide). To work around this, you could specify\n\t// the following for ExpressionAttributeNames:\n\t//\n\t//    * {\"#P\":\"Percentile\"}\n\t//\n\t// You could then use this substitution in an expression, as in this example:\n\t//\n\t//    * #P = :val\n\t//\n\t// Tokens that begin with the : character are expression attribute values, which\n\t// are placeholders for the actual value at runtime.\n\t//\n\t// For more information on expression attribute names, see Specifying Item Attributes\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeNames map[string]*string `type:\"map\"`\n\n\t// One or more values that can be substituted in an expression.\n\t//\n\t// Use the : (colon) character in an expression to dereference an attribute\n\t// value. For example, suppose that you wanted to check whether the value of\n\t// the ProductStatus attribute was one of the following:\n\t//\n\t// Available | Backordered | Discontinued\n\t//\n\t// You would first need to specify ExpressionAttributeValues as follows:\n\t//\n\t// { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"}\n\t// }\n\t//\n\t// You could then use these values in an expression, such as this:\n\t//\n\t// ProductStatus IN (:avail, :back, :disc)\n\t//\n\t// For more information on expression attribute values, see Condition Expressions\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeValues map[string]*AttributeValue `type:\"map\"`\n\n\t// A map of attribute name/value pairs, one for each attribute. Only the primary\n\t// key attributes are required; you can optionally provide other attribute name-value\n\t// pairs for the item.\n\t//\n\t// You must provide all of the attributes for the primary key. For example,\n\t// with a simple primary key, you only need to provide a value for the partition\n\t// key. For a composite primary key, you must provide both values for both the\n\t// partition key and the sort key.\n\t//\n\t// If you specify any attributes that are part of an index key, then the data\n\t// types for those attributes must match those of the schema in the table's\n\t// attribute definition.\n\t//\n\t// Empty String and Binary attribute values are allowed. Attribute values of\n\t// type String and Binary must have a length greater than zero if the attribute\n\t// is used as a key attribute for a table or index.\n\t//\n\t// For more information about primary keys, see Primary Key (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey)\n\t// in the Amazon DynamoDB Developer Guide.\n\t//\n\t// Each element in the Item map is an AttributeValue object.\n\t//\n\t// Item is a required field\n\tItem map[string]*AttributeValue `type:\"map\" required:\"true\"`\n\n\t// Determines the level of detail about either provisioned or on-demand throughput\n\t// consumption that is returned in the response:\n\t//\n\t//    * INDEXES - The response includes the aggregate ConsumedCapacity for the\n\t//    operation, together with ConsumedCapacity for each table and secondary\n\t//    index that was accessed. Note that some operations, such as GetItem and\n\t//    BatchGetItem, do not access any indexes at all. In these cases, specifying\n\t//    INDEXES will only return ConsumedCapacity information for table(s).\n\t//\n\t//    * TOTAL - The response includes only the aggregate ConsumedCapacity for\n\t//    the operation.\n\t//\n\t//    * NONE - No ConsumedCapacity details are included in the response.\n\tReturnConsumedCapacity *string `type:\"string\" enum:\"ReturnConsumedCapacity\"`\n\n\t// Determines whether item collection metrics are returned. If set to SIZE,\n\t// the response includes statistics about item collections, if any, that were\n\t// modified during the operation are returned in the response. If set to NONE\n\t// (the default), no statistics are returned.\n\tReturnItemCollectionMetrics *string `type:\"string\" enum:\"ReturnItemCollectionMetrics\"`\n\n\t// Use ReturnValues if you want to get the item attributes as they appeared\n\t// before they were updated with the PutItem request. For PutItem, the valid\n\t// values are:\n\t//\n\t//    * NONE - If ReturnValues is not specified, or if its value is NONE, then\n\t//    nothing is returned. (This setting is the default for ReturnValues.)\n\t//\n\t//    * ALL_OLD - If PutItem overwrote an attribute name-value pair, then the\n\t//    content of the old item is returned.\n\t//\n\t// The values returned are strongly consistent.\n\t//\n\t// There is no additional cost associated with requesting a return value aside\n\t// from the small network and processing overhead of receiving a larger response.\n\t// No read capacity units are consumed.\n\t//\n\t// The ReturnValues parameter is used by several DynamoDB operations; however,\n\t// PutItem does not recognize any values other than NONE or ALL_OLD.\n\tReturnValues *string `type:\"string\" enum:\"ReturnValue\"`\n\n\t// An optional parameter that returns the item attributes for a PutItem operation\n\t// that failed a condition check.\n\t//\n\t// There is no additional cost associated with requesting a return value aside\n\t// from the small network and processing overhead of receiving a larger response.\n\t// No read capacity units are consumed.\n\tReturnValuesOnConditionCheckFailure *string `type:\"string\" enum:\"ReturnValuesOnConditionCheckFailure\"`\n\n\t// The name of the table to contain the item.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutItemInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutItemInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *PutItemInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"PutItemInput\"}\n\tif s.Item == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Item\"))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetConditionExpression sets the ConditionExpression field's value.\nfunc (s *PutItemInput) SetConditionExpression(v string) *PutItemInput {\n\ts.ConditionExpression = &v\n\treturn s\n}\n\n// SetConditionalOperator sets the ConditionalOperator field's value.\nfunc (s *PutItemInput) SetConditionalOperator(v string) *PutItemInput {\n\ts.ConditionalOperator = &v\n\treturn s\n}\n\n// SetExpected sets the Expected field's value.\nfunc (s *PutItemInput) SetExpected(v map[string]*ExpectedAttributeValue) *PutItemInput {\n\ts.Expected = v\n\treturn s\n}\n\n// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.\nfunc (s *PutItemInput) SetExpressionAttributeNames(v map[string]*string) *PutItemInput {\n\ts.ExpressionAttributeNames = v\n\treturn s\n}\n\n// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.\nfunc (s *PutItemInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *PutItemInput {\n\ts.ExpressionAttributeValues = v\n\treturn s\n}\n\n// SetItem sets the Item field's value.\nfunc (s *PutItemInput) SetItem(v map[string]*AttributeValue) *PutItemInput {\n\ts.Item = v\n\treturn s\n}\n\n// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.\nfunc (s *PutItemInput) SetReturnConsumedCapacity(v string) *PutItemInput {\n\ts.ReturnConsumedCapacity = &v\n\treturn s\n}\n\n// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.\nfunc (s *PutItemInput) SetReturnItemCollectionMetrics(v string) *PutItemInput {\n\ts.ReturnItemCollectionMetrics = &v\n\treturn s\n}\n\n// SetReturnValues sets the ReturnValues field's value.\nfunc (s *PutItemInput) SetReturnValues(v string) *PutItemInput {\n\ts.ReturnValues = &v\n\treturn s\n}\n\n// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.\nfunc (s *PutItemInput) SetReturnValuesOnConditionCheckFailure(v string) *PutItemInput {\n\ts.ReturnValuesOnConditionCheckFailure = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *PutItemInput) SetTableName(v string) *PutItemInput {\n\ts.TableName = &v\n\treturn s\n}\n\n// Represents the output of a PutItem operation.\ntype PutItemOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The attribute values as they appeared before the PutItem operation, but only\n\t// if ReturnValues is specified as ALL_OLD in the request. Each element consists\n\t// of an attribute name and an attribute value.\n\tAttributes map[string]*AttributeValue `type:\"map\"`\n\n\t// The capacity units consumed by the PutItem operation. The data returned includes\n\t// the total provisioned throughput consumed, along with statistics for the\n\t// table and any indexes involved in the operation. ConsumedCapacity is only\n\t// returned if the ReturnConsumedCapacity parameter was specified. For more\n\t// information, see Provisioned Throughput (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConsumedCapacity *ConsumedCapacity `type:\"structure\"`\n\n\t// Information about item collections, if any, that were affected by the PutItem\n\t// operation. ItemCollectionMetrics is only returned if the ReturnItemCollectionMetrics\n\t// parameter was specified. If the table does not have any local secondary indexes,\n\t// this information is not returned in the response.\n\t//\n\t// Each ItemCollectionMetrics element consists of:\n\t//\n\t//    * ItemCollectionKey - The partition key value of the item collection.\n\t//    This is the same as the partition key value of the item itself.\n\t//\n\t//    * SizeEstimateRangeGB - An estimate of item collection size, in gigabytes.\n\t//    This value is a two-element array containing a lower bound and an upper\n\t//    bound for the estimate. The estimate includes the size of all the items\n\t//    in the table, plus the size of all attributes projected into all of the\n\t//    local secondary indexes on that table. Use this estimate to measure whether\n\t//    a local secondary index is approaching its size limit. The estimate is\n\t//    subject to change over time; therefore, do not rely on the precision or\n\t//    accuracy of the estimate.\n\tItemCollectionMetrics *ItemCollectionMetrics `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutItemOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutItemOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAttributes sets the Attributes field's value.\nfunc (s *PutItemOutput) SetAttributes(v map[string]*AttributeValue) *PutItemOutput {\n\ts.Attributes = v\n\treturn s\n}\n\n// SetConsumedCapacity sets the ConsumedCapacity field's value.\nfunc (s *PutItemOutput) SetConsumedCapacity(v *ConsumedCapacity) *PutItemOutput {\n\ts.ConsumedCapacity = v\n\treturn s\n}\n\n// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.\nfunc (s *PutItemOutput) SetItemCollectionMetrics(v *ItemCollectionMetrics) *PutItemOutput {\n\ts.ItemCollectionMetrics = v\n\treturn s\n}\n\n// Represents a request to perform a PutItem operation on an item.\ntype PutRequest struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A map of attribute name to attribute values, representing the primary key\n\t// of an item to be processed by PutItem. All of the table's primary key attributes\n\t// must be specified, and their data types must match those of the table's key\n\t// schema. If any attributes are present in the item that are part of an index\n\t// key schema for the table, their types must match the index key schema.\n\t//\n\t// Item is a required field\n\tItem map[string]*AttributeValue `type:\"map\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutRequest) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutRequest) GoString() string {\n\treturn s.String()\n}\n\n// SetItem sets the Item field's value.\nfunc (s *PutRequest) SetItem(v map[string]*AttributeValue) *PutRequest {\n\ts.Item = v\n\treturn s\n}\n\n// Represents the input of a Query operation.\ntype QueryInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// This is a legacy parameter. Use ProjectionExpression instead. For more information,\n\t// see AttributesToGet (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributesToGet.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tAttributesToGet []*string `min:\"1\" type:\"list\"`\n\n\t// This is a legacy parameter. Use FilterExpression instead. For more information,\n\t// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConditionalOperator *string `type:\"string\" enum:\"ConditionalOperator\"`\n\n\t// Determines the read consistency model: If set to true, then the operation\n\t// uses strongly consistent reads; otherwise, the operation uses eventually\n\t// consistent reads.\n\t//\n\t// Strongly consistent reads are not supported on global secondary indexes.\n\t// If you query a global secondary index with ConsistentRead set to true, you\n\t// will receive a ValidationException.\n\tConsistentRead *bool `type:\"boolean\"`\n\n\t// The primary key of the first item that this operation will evaluate. Use\n\t// the value that was returned for LastEvaluatedKey in the previous operation.\n\t//\n\t// The data type for ExclusiveStartKey must be String, Number, or Binary. No\n\t// set data types are allowed.\n\tExclusiveStartKey map[string]*AttributeValue `type:\"map\"`\n\n\t// One or more substitution tokens for attribute names in an expression. The\n\t// following are some use cases for using ExpressionAttributeNames:\n\t//\n\t//    * To access an attribute whose name conflicts with a DynamoDB reserved\n\t//    word.\n\t//\n\t//    * To create a placeholder for repeating occurrences of an attribute name\n\t//    in an expression.\n\t//\n\t//    * To prevent special characters in an attribute name from being misinterpreted\n\t//    in an expression.\n\t//\n\t// Use the # character in an expression to dereference an attribute name. For\n\t// example, consider the following attribute name:\n\t//\n\t//    * Percentile\n\t//\n\t// The name of this attribute conflicts with a reserved word, so it cannot be\n\t// used directly in an expression. (For the complete list of reserved words,\n\t// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)\n\t// in the Amazon DynamoDB Developer Guide). To work around this, you could specify\n\t// the following for ExpressionAttributeNames:\n\t//\n\t//    * {\"#P\":\"Percentile\"}\n\t//\n\t// You could then use this substitution in an expression, as in this example:\n\t//\n\t//    * #P = :val\n\t//\n\t// Tokens that begin with the : character are expression attribute values, which\n\t// are placeholders for the actual value at runtime.\n\t//\n\t// For more information on expression attribute names, see Specifying Item Attributes\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeNames map[string]*string `type:\"map\"`\n\n\t// One or more values that can be substituted in an expression.\n\t//\n\t// Use the : (colon) character in an expression to dereference an attribute\n\t// value. For example, suppose that you wanted to check whether the value of\n\t// the ProductStatus attribute was one of the following:\n\t//\n\t// Available | Backordered | Discontinued\n\t//\n\t// You would first need to specify ExpressionAttributeValues as follows:\n\t//\n\t// { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"}\n\t// }\n\t//\n\t// You could then use these values in an expression, such as this:\n\t//\n\t// ProductStatus IN (:avail, :back, :disc)\n\t//\n\t// For more information on expression attribute values, see Specifying Conditions\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeValues map[string]*AttributeValue `type:\"map\"`\n\n\t// A string that contains conditions that DynamoDB applies after the Query operation,\n\t// but before the data is returned to you. Items that do not satisfy the FilterExpression\n\t// criteria are not returned.\n\t//\n\t// A FilterExpression does not allow key attributes. You cannot define a filter\n\t// expression based on a partition key or a sort key.\n\t//\n\t// A FilterExpression is applied after the items have already been read; the\n\t// process of filtering does not consume any additional read capacity units.\n\t//\n\t// For more information, see Filter Expressions (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Query.FilterExpression)\n\t// in the Amazon DynamoDB Developer Guide.\n\tFilterExpression *string `type:\"string\"`\n\n\t// The name of an index to query. This index can be any local secondary index\n\t// or global secondary index on the table. Note that if you use the IndexName\n\t// parameter, you must also provide TableName.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// The condition that specifies the key values for items to be retrieved by\n\t// the Query action.\n\t//\n\t// The condition must perform an equality test on a single partition key value.\n\t//\n\t// The condition can optionally perform one of several comparison tests on a\n\t// single sort key value. This allows Query to retrieve one item with a given\n\t// partition key value and sort key value, or several items that have the same\n\t// partition key value but different sort key values.\n\t//\n\t// The partition key equality test is required, and must be specified in the\n\t// following format:\n\t//\n\t// partitionKeyName = :partitionkeyval\n\t//\n\t// If you also want to provide a condition for the sort key, it must be combined\n\t// using AND with the condition for the sort key. Following is an example, using\n\t// the = comparison operator for the sort key:\n\t//\n\t// partitionKeyName = :partitionkeyval AND sortKeyName = :sortkeyval\n\t//\n\t// Valid comparisons for the sort key condition are as follows:\n\t//\n\t//    * sortKeyName = :sortkeyval - true if the sort key value is equal to :sortkeyval.\n\t//\n\t//    * sortKeyName < :sortkeyval - true if the sort key value is less than\n\t//    :sortkeyval.\n\t//\n\t//    * sortKeyName <= :sortkeyval - true if the sort key value is less than\n\t//    or equal to :sortkeyval.\n\t//\n\t//    * sortKeyName > :sortkeyval - true if the sort key value is greater than\n\t//    :sortkeyval.\n\t//\n\t//    * sortKeyName >= :sortkeyval - true if the sort key value is greater than\n\t//    or equal to :sortkeyval.\n\t//\n\t//    * sortKeyName BETWEEN :sortkeyval1 AND :sortkeyval2 - true if the sort\n\t//    key value is greater than or equal to :sortkeyval1, and less than or equal\n\t//    to :sortkeyval2.\n\t//\n\t//    * begins_with ( sortKeyName, :sortkeyval ) - true if the sort key value\n\t//    begins with a particular operand. (You cannot use this function with a\n\t//    sort key that is of type Number.) Note that the function name begins_with\n\t//    is case-sensitive.\n\t//\n\t// Use the ExpressionAttributeValues parameter to replace tokens such as :partitionval\n\t// and :sortval with actual values at runtime.\n\t//\n\t// You can optionally use the ExpressionAttributeNames parameter to replace\n\t// the names of the partition key and sort key with placeholder tokens. This\n\t// option might be necessary if an attribute name conflicts with a DynamoDB\n\t// reserved word. For example, the following KeyConditionExpression parameter\n\t// causes an error because Size is a reserved word:\n\t//\n\t//    * Size = :myval\n\t//\n\t// To work around this, define a placeholder (such a #S) to represent the attribute\n\t// name Size. KeyConditionExpression then is as follows:\n\t//\n\t//    * #S = :myval\n\t//\n\t// For a list of reserved words, see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\t//\n\t// For more information on ExpressionAttributeNames and ExpressionAttributeValues,\n\t// see Using Placeholders for Attribute Names and Values (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tKeyConditionExpression *string `type:\"string\"`\n\n\t// This is a legacy parameter. Use KeyConditionExpression instead. For more\n\t// information, see KeyConditions (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.KeyConditions.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tKeyConditions map[string]*Condition `type:\"map\"`\n\n\t// The maximum number of items to evaluate (not necessarily the number of matching\n\t// items). If DynamoDB processes the number of items up to the limit while processing\n\t// the results, it stops the operation and returns the matching values up to\n\t// that point, and a key in LastEvaluatedKey to apply in a subsequent operation,\n\t// so that you can pick up where you left off. Also, if the processed dataset\n\t// size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation\n\t// and returns the matching values up to the limit, and a key in LastEvaluatedKey\n\t// to apply in a subsequent operation to continue the operation. For more information,\n\t// see Query and Scan (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tLimit *int64 `min:\"1\" type:\"integer\"`\n\n\t// A string that identifies one or more attributes to retrieve from the table.\n\t// These attributes can include scalars, sets, or elements of a JSON document.\n\t// The attributes in the expression must be separated by commas.\n\t//\n\t// If no attribute names are specified, then all attributes will be returned.\n\t// If any of the requested attributes are not found, they will not appear in\n\t// the result.\n\t//\n\t// For more information, see Accessing Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tProjectionExpression *string `type:\"string\"`\n\n\t// This is a legacy parameter. Use FilterExpression instead. For more information,\n\t// see QueryFilter (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.QueryFilter.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tQueryFilter map[string]*Condition `type:\"map\"`\n\n\t// Determines the level of detail about either provisioned or on-demand throughput\n\t// consumption that is returned in the response:\n\t//\n\t//    * INDEXES - The response includes the aggregate ConsumedCapacity for the\n\t//    operation, together with ConsumedCapacity for each table and secondary\n\t//    index that was accessed. Note that some operations, such as GetItem and\n\t//    BatchGetItem, do not access any indexes at all. In these cases, specifying\n\t//    INDEXES will only return ConsumedCapacity information for table(s).\n\t//\n\t//    * TOTAL - The response includes only the aggregate ConsumedCapacity for\n\t//    the operation.\n\t//\n\t//    * NONE - No ConsumedCapacity details are included in the response.\n\tReturnConsumedCapacity *string `type:\"string\" enum:\"ReturnConsumedCapacity\"`\n\n\t// Specifies the order for index traversal: If true (default), the traversal\n\t// is performed in ascending order; if false, the traversal is performed in\n\t// descending order.\n\t//\n\t// Items with the same partition key value are stored in sorted order by sort\n\t// key. If the sort key data type is Number, the results are stored in numeric\n\t// order. For type String, the results are stored in order of UTF-8 bytes. For\n\t// type Binary, DynamoDB treats each byte of the binary data as unsigned.\n\t//\n\t// If ScanIndexForward is true, DynamoDB returns the results in the order in\n\t// which they are stored (by sort key value). This is the default behavior.\n\t// If ScanIndexForward is false, DynamoDB reads the results in reverse order\n\t// by sort key value, and then returns the results to the client.\n\tScanIndexForward *bool `type:\"boolean\"`\n\n\t// The attributes to be returned in the result. You can retrieve all item attributes,\n\t// specific item attributes, the count of matching items, or in the case of\n\t// an index, some or all of the attributes projected into the index.\n\t//\n\t//    * ALL_ATTRIBUTES - Returns all of the item attributes from the specified\n\t//    table or index. If you query a local secondary index, then for each matching\n\t//    item in the index, DynamoDB fetches the entire item from the parent table.\n\t//    If the index is configured to project all item attributes, then all of\n\t//    the data can be obtained from the local secondary index, and no fetching\n\t//    is required.\n\t//\n\t//    * ALL_PROJECTED_ATTRIBUTES - Allowed only when querying an index. Retrieves\n\t//    all attributes that have been projected into the index. If the index is\n\t//    configured to project all attributes, this return value is equivalent\n\t//    to specifying ALL_ATTRIBUTES.\n\t//\n\t//    * COUNT - Returns the number of matching items, rather than the matching\n\t//    items themselves. Note that this uses the same quantity of read capacity\n\t//    units as getting the items, and is subject to the same item size calculations.\n\t//\n\t//    * SPECIFIC_ATTRIBUTES - Returns only the attributes listed in ProjectionExpression.\n\t//    This return value is equivalent to specifying ProjectionExpression without\n\t//    specifying any value for Select. If you query or scan a local secondary\n\t//    index and request only attributes that are projected into that index,\n\t//    the operation will read only the index and not the table. If any of the\n\t//    requested attributes are not projected into the local secondary index,\n\t//    DynamoDB fetches each of these attributes from the parent table. This\n\t//    extra fetching incurs additional throughput cost and latency. If you query\n\t//    or scan a global secondary index, you can only request attributes that\n\t//    are projected into the index. Global secondary index queries cannot fetch\n\t//    attributes from the parent table.\n\t//\n\t// If neither Select nor ProjectionExpression are specified, DynamoDB defaults\n\t// to ALL_ATTRIBUTES when accessing a table, and ALL_PROJECTED_ATTRIBUTES when\n\t// accessing an index. You cannot use both Select and ProjectionExpression together\n\t// in a single request, unless the value for Select is SPECIFIC_ATTRIBUTES.\n\t// (This usage is equivalent to specifying ProjectionExpression without any\n\t// value for Select.)\n\t//\n\t// If you use the ProjectionExpression parameter, then the value for Select\n\t// can only be SPECIFIC_ATTRIBUTES. Any other value for Select will return an\n\t// error.\n\tSelect *string `type:\"string\" enum:\"Select\"`\n\n\t// The name of the table containing the requested items.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s QueryInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s QueryInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *QueryInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"QueryInput\"}\n\tif s.AttributesToGet != nil && len(s.AttributesToGet) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AttributesToGet\", 1))\n\t}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\tif s.Limit != nil && *s.Limit < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"Limit\", 1))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\tif s.KeyConditions != nil {\n\t\tfor i, v := range s.KeyConditions {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"KeyConditions\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.QueryFilter != nil {\n\t\tfor i, v := range s.QueryFilter {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"QueryFilter\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttributesToGet sets the AttributesToGet field's value.\nfunc (s *QueryInput) SetAttributesToGet(v []*string) *QueryInput {\n\ts.AttributesToGet = v\n\treturn s\n}\n\n// SetConditionalOperator sets the ConditionalOperator field's value.\nfunc (s *QueryInput) SetConditionalOperator(v string) *QueryInput {\n\ts.ConditionalOperator = &v\n\treturn s\n}\n\n// SetConsistentRead sets the ConsistentRead field's value.\nfunc (s *QueryInput) SetConsistentRead(v bool) *QueryInput {\n\ts.ConsistentRead = &v\n\treturn s\n}\n\n// SetExclusiveStartKey sets the ExclusiveStartKey field's value.\nfunc (s *QueryInput) SetExclusiveStartKey(v map[string]*AttributeValue) *QueryInput {\n\ts.ExclusiveStartKey = v\n\treturn s\n}\n\n// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.\nfunc (s *QueryInput) SetExpressionAttributeNames(v map[string]*string) *QueryInput {\n\ts.ExpressionAttributeNames = v\n\treturn s\n}\n\n// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.\nfunc (s *QueryInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *QueryInput {\n\ts.ExpressionAttributeValues = v\n\treturn s\n}\n\n// SetFilterExpression sets the FilterExpression field's value.\nfunc (s *QueryInput) SetFilterExpression(v string) *QueryInput {\n\ts.FilterExpression = &v\n\treturn s\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *QueryInput) SetIndexName(v string) *QueryInput {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetKeyConditionExpression sets the KeyConditionExpression field's value.\nfunc (s *QueryInput) SetKeyConditionExpression(v string) *QueryInput {\n\ts.KeyConditionExpression = &v\n\treturn s\n}\n\n// SetKeyConditions sets the KeyConditions field's value.\nfunc (s *QueryInput) SetKeyConditions(v map[string]*Condition) *QueryInput {\n\ts.KeyConditions = v\n\treturn s\n}\n\n// SetLimit sets the Limit field's value.\nfunc (s *QueryInput) SetLimit(v int64) *QueryInput {\n\ts.Limit = &v\n\treturn s\n}\n\n// SetProjectionExpression sets the ProjectionExpression field's value.\nfunc (s *QueryInput) SetProjectionExpression(v string) *QueryInput {\n\ts.ProjectionExpression = &v\n\treturn s\n}\n\n// SetQueryFilter sets the QueryFilter field's value.\nfunc (s *QueryInput) SetQueryFilter(v map[string]*Condition) *QueryInput {\n\ts.QueryFilter = v\n\treturn s\n}\n\n// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.\nfunc (s *QueryInput) SetReturnConsumedCapacity(v string) *QueryInput {\n\ts.ReturnConsumedCapacity = &v\n\treturn s\n}\n\n// SetScanIndexForward sets the ScanIndexForward field's value.\nfunc (s *QueryInput) SetScanIndexForward(v bool) *QueryInput {\n\ts.ScanIndexForward = &v\n\treturn s\n}\n\n// SetSelect sets the Select field's value.\nfunc (s *QueryInput) SetSelect(v string) *QueryInput {\n\ts.Select = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *QueryInput) SetTableName(v string) *QueryInput {\n\ts.TableName = &v\n\treturn s\n}\n\n// Represents the output of a Query operation.\ntype QueryOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The capacity units consumed by the Query operation. The data returned includes\n\t// the total provisioned throughput consumed, along with statistics for the\n\t// table and any indexes involved in the operation. ConsumedCapacity is only\n\t// returned if the ReturnConsumedCapacity parameter was specified. For more\n\t// information, see Provisioned Throughput (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConsumedCapacity *ConsumedCapacity `type:\"structure\"`\n\n\t// The number of items in the response.\n\t//\n\t// If you used a QueryFilter in the request, then Count is the number of items\n\t// returned after the filter was applied, and ScannedCount is the number of\n\t// matching items before the filter was applied.\n\t//\n\t// If you did not use a filter in the request, then Count and ScannedCount are\n\t// the same.\n\tCount *int64 `type:\"integer\"`\n\n\t// An array of item attributes that match the query criteria. Each element in\n\t// this array consists of an attribute name and the value for that attribute.\n\tItems []map[string]*AttributeValue `type:\"list\"`\n\n\t// The primary key of the item where the operation stopped, inclusive of the\n\t// previous result set. Use this value to start a new operation, excluding this\n\t// value in the new request.\n\t//\n\t// If LastEvaluatedKey is empty, then the \"last page\" of results has been processed\n\t// and there is no more data to be retrieved.\n\t//\n\t// If LastEvaluatedKey is not empty, it does not necessarily mean that there\n\t// is more data in the result set. The only way to know when you have reached\n\t// the end of the result set is when LastEvaluatedKey is empty.\n\tLastEvaluatedKey map[string]*AttributeValue `type:\"map\"`\n\n\t// The number of items evaluated, before any QueryFilter is applied. A high\n\t// ScannedCount value with few, or no, Count results indicates an inefficient\n\t// Query operation. For more information, see Count and ScannedCount (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count)\n\t// in the Amazon DynamoDB Developer Guide.\n\t//\n\t// If you did not use a filter in the request, then ScannedCount is the same\n\t// as Count.\n\tScannedCount *int64 `type:\"integer\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s QueryOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s QueryOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetConsumedCapacity sets the ConsumedCapacity field's value.\nfunc (s *QueryOutput) SetConsumedCapacity(v *ConsumedCapacity) *QueryOutput {\n\ts.ConsumedCapacity = v\n\treturn s\n}\n\n// SetCount sets the Count field's value.\nfunc (s *QueryOutput) SetCount(v int64) *QueryOutput {\n\ts.Count = &v\n\treturn s\n}\n\n// SetItems sets the Items field's value.\nfunc (s *QueryOutput) SetItems(v []map[string]*AttributeValue) *QueryOutput {\n\ts.Items = v\n\treturn s\n}\n\n// SetLastEvaluatedKey sets the LastEvaluatedKey field's value.\nfunc (s *QueryOutput) SetLastEvaluatedKey(v map[string]*AttributeValue) *QueryOutput {\n\ts.LastEvaluatedKey = v\n\treturn s\n}\n\n// SetScannedCount sets the ScannedCount field's value.\nfunc (s *QueryOutput) SetScannedCount(v int64) *QueryOutput {\n\ts.ScannedCount = &v\n\treturn s\n}\n\n// Represents the properties of a replica.\ntype Replica struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Region where the replica needs to be created.\n\tRegionName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Replica) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Replica) GoString() string {\n\treturn s.String()\n}\n\n// SetRegionName sets the RegionName field's value.\nfunc (s *Replica) SetRegionName(v string) *Replica {\n\ts.RegionName = &v\n\treturn s\n}\n\n// The specified replica is already part of the global table.\ntype ReplicaAlreadyExistsException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaAlreadyExistsException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaAlreadyExistsException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorReplicaAlreadyExistsException(v protocol.ResponseMetadata) error {\n\treturn &ReplicaAlreadyExistsException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ReplicaAlreadyExistsException) Code() string {\n\treturn \"ReplicaAlreadyExistsException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ReplicaAlreadyExistsException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ReplicaAlreadyExistsException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ReplicaAlreadyExistsException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ReplicaAlreadyExistsException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ReplicaAlreadyExistsException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Represents the auto scaling settings of the replica.\ntype ReplicaAutoScalingDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Replica-specific global secondary index auto scaling settings.\n\tGlobalSecondaryIndexes []*ReplicaGlobalSecondaryIndexAutoScalingDescription `type:\"list\"`\n\n\t// The Region where the replica exists.\n\tRegionName *string `type:\"string\"`\n\n\t// Represents the auto scaling settings for a global table or global secondary\n\t// index.\n\tReplicaProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:\"structure\"`\n\n\t// Represents the auto scaling settings for a global table or global secondary\n\t// index.\n\tReplicaProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:\"structure\"`\n\n\t// The current state of the replica:\n\t//\n\t//    * CREATING - The replica is being created.\n\t//\n\t//    * UPDATING - The replica is being updated.\n\t//\n\t//    * DELETING - The replica is being deleted.\n\t//\n\t//    * ACTIVE - The replica is ready for use.\n\tReplicaStatus *string `type:\"string\" enum:\"ReplicaStatus\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaAutoScalingDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaAutoScalingDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.\nfunc (s *ReplicaAutoScalingDescription) SetGlobalSecondaryIndexes(v []*ReplicaGlobalSecondaryIndexAutoScalingDescription) *ReplicaAutoScalingDescription {\n\ts.GlobalSecondaryIndexes = v\n\treturn s\n}\n\n// SetRegionName sets the RegionName field's value.\nfunc (s *ReplicaAutoScalingDescription) SetRegionName(v string) *ReplicaAutoScalingDescription {\n\ts.RegionName = &v\n\treturn s\n}\n\n// SetReplicaProvisionedReadCapacityAutoScalingSettings sets the ReplicaProvisionedReadCapacityAutoScalingSettings field's value.\nfunc (s *ReplicaAutoScalingDescription) SetReplicaProvisionedReadCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaAutoScalingDescription {\n\ts.ReplicaProvisionedReadCapacityAutoScalingSettings = v\n\treturn s\n}\n\n// SetReplicaProvisionedWriteCapacityAutoScalingSettings sets the ReplicaProvisionedWriteCapacityAutoScalingSettings field's value.\nfunc (s *ReplicaAutoScalingDescription) SetReplicaProvisionedWriteCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaAutoScalingDescription {\n\ts.ReplicaProvisionedWriteCapacityAutoScalingSettings = v\n\treturn s\n}\n\n// SetReplicaStatus sets the ReplicaStatus field's value.\nfunc (s *ReplicaAutoScalingDescription) SetReplicaStatus(v string) *ReplicaAutoScalingDescription {\n\ts.ReplicaStatus = &v\n\treturn s\n}\n\n// Represents the auto scaling settings of a replica that will be modified.\ntype ReplicaAutoScalingUpdate struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Region where the replica exists.\n\t//\n\t// RegionName is a required field\n\tRegionName *string `type:\"string\" required:\"true\"`\n\n\t// Represents the auto scaling settings of global secondary indexes that will\n\t// be modified.\n\tReplicaGlobalSecondaryIndexUpdates []*ReplicaGlobalSecondaryIndexAutoScalingUpdate `type:\"list\"`\n\n\t// Represents the auto scaling settings to be modified for a global table or\n\t// global secondary index.\n\tReplicaProvisionedReadCapacityAutoScalingUpdate *AutoScalingSettingsUpdate `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaAutoScalingUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaAutoScalingUpdate) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ReplicaAutoScalingUpdate) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ReplicaAutoScalingUpdate\"}\n\tif s.RegionName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RegionName\"))\n\t}\n\tif s.ReplicaGlobalSecondaryIndexUpdates != nil {\n\t\tfor i, v := range s.ReplicaGlobalSecondaryIndexUpdates {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"ReplicaGlobalSecondaryIndexUpdates\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ReplicaProvisionedReadCapacityAutoScalingUpdate != nil {\n\t\tif err := s.ReplicaProvisionedReadCapacityAutoScalingUpdate.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ReplicaProvisionedReadCapacityAutoScalingUpdate\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetRegionName sets the RegionName field's value.\nfunc (s *ReplicaAutoScalingUpdate) SetRegionName(v string) *ReplicaAutoScalingUpdate {\n\ts.RegionName = &v\n\treturn s\n}\n\n// SetReplicaGlobalSecondaryIndexUpdates sets the ReplicaGlobalSecondaryIndexUpdates field's value.\nfunc (s *ReplicaAutoScalingUpdate) SetReplicaGlobalSecondaryIndexUpdates(v []*ReplicaGlobalSecondaryIndexAutoScalingUpdate) *ReplicaAutoScalingUpdate {\n\ts.ReplicaGlobalSecondaryIndexUpdates = v\n\treturn s\n}\n\n// SetReplicaProvisionedReadCapacityAutoScalingUpdate sets the ReplicaProvisionedReadCapacityAutoScalingUpdate field's value.\nfunc (s *ReplicaAutoScalingUpdate) SetReplicaProvisionedReadCapacityAutoScalingUpdate(v *AutoScalingSettingsUpdate) *ReplicaAutoScalingUpdate {\n\ts.ReplicaProvisionedReadCapacityAutoScalingUpdate = v\n\treturn s\n}\n\n// Contains the details of the replica.\ntype ReplicaDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Replica-specific global secondary index settings.\n\tGlobalSecondaryIndexes []*ReplicaGlobalSecondaryIndexDescription `type:\"list\"`\n\n\t// The KMS key of the replica that will be used for KMS encryption.\n\tKMSMasterKeyId *string `type:\"string\"`\n\n\t// Replica-specific provisioned throughput. If not described, uses the source\n\t// table's provisioned throughput settings.\n\tProvisionedThroughputOverride *ProvisionedThroughputOverride `type:\"structure\"`\n\n\t// The name of the Region.\n\tRegionName *string `type:\"string\"`\n\n\t// The time at which the replica was first detected as inaccessible. To determine\n\t// cause of inaccessibility check the ReplicaStatus property.\n\tReplicaInaccessibleDateTime *time.Time `type:\"timestamp\"`\n\n\t// The current state of the replica:\n\t//\n\t//    * CREATING - The replica is being created.\n\t//\n\t//    * UPDATING - The replica is being updated.\n\t//\n\t//    * DELETING - The replica is being deleted.\n\t//\n\t//    * ACTIVE - The replica is ready for use.\n\t//\n\t//    * REGION_DISABLED - The replica is inaccessible because the Amazon Web\n\t//    Services Region has been disabled. If the Amazon Web Services Region remains\n\t//    inaccessible for more than 20 hours, DynamoDB will remove this replica\n\t//    from the replication group. The replica will not be deleted and replication\n\t//    will stop from and to this region.\n\t//\n\t//    * INACCESSIBLE_ENCRYPTION_CREDENTIALS - The KMS key used to encrypt the\n\t//    table is inaccessible. If the KMS key remains inaccessible for more than\n\t//    20 hours, DynamoDB will remove this replica from the replication group.\n\t//    The replica will not be deleted and replication will stop from and to\n\t//    this region.\n\tReplicaStatus *string `type:\"string\" enum:\"ReplicaStatus\"`\n\n\t// Detailed information about the replica status.\n\tReplicaStatusDescription *string `type:\"string\"`\n\n\t// Specifies the progress of a Create, Update, or Delete action on the replica\n\t// as a percentage.\n\tReplicaStatusPercentProgress *string `type:\"string\"`\n\n\t// Contains details of the table class.\n\tReplicaTableClassSummary *TableClassSummary `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.\nfunc (s *ReplicaDescription) SetGlobalSecondaryIndexes(v []*ReplicaGlobalSecondaryIndexDescription) *ReplicaDescription {\n\ts.GlobalSecondaryIndexes = v\n\treturn s\n}\n\n// SetKMSMasterKeyId sets the KMSMasterKeyId field's value.\nfunc (s *ReplicaDescription) SetKMSMasterKeyId(v string) *ReplicaDescription {\n\ts.KMSMasterKeyId = &v\n\treturn s\n}\n\n// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.\nfunc (s *ReplicaDescription) SetProvisionedThroughputOverride(v *ProvisionedThroughputOverride) *ReplicaDescription {\n\ts.ProvisionedThroughputOverride = v\n\treturn s\n}\n\n// SetRegionName sets the RegionName field's value.\nfunc (s *ReplicaDescription) SetRegionName(v string) *ReplicaDescription {\n\ts.RegionName = &v\n\treturn s\n}\n\n// SetReplicaInaccessibleDateTime sets the ReplicaInaccessibleDateTime field's value.\nfunc (s *ReplicaDescription) SetReplicaInaccessibleDateTime(v time.Time) *ReplicaDescription {\n\ts.ReplicaInaccessibleDateTime = &v\n\treturn s\n}\n\n// SetReplicaStatus sets the ReplicaStatus field's value.\nfunc (s *ReplicaDescription) SetReplicaStatus(v string) *ReplicaDescription {\n\ts.ReplicaStatus = &v\n\treturn s\n}\n\n// SetReplicaStatusDescription sets the ReplicaStatusDescription field's value.\nfunc (s *ReplicaDescription) SetReplicaStatusDescription(v string) *ReplicaDescription {\n\ts.ReplicaStatusDescription = &v\n\treturn s\n}\n\n// SetReplicaStatusPercentProgress sets the ReplicaStatusPercentProgress field's value.\nfunc (s *ReplicaDescription) SetReplicaStatusPercentProgress(v string) *ReplicaDescription {\n\ts.ReplicaStatusPercentProgress = &v\n\treturn s\n}\n\n// SetReplicaTableClassSummary sets the ReplicaTableClassSummary field's value.\nfunc (s *ReplicaDescription) SetReplicaTableClassSummary(v *TableClassSummary) *ReplicaDescription {\n\ts.ReplicaTableClassSummary = v\n\treturn s\n}\n\n// Represents the properties of a replica global secondary index.\ntype ReplicaGlobalSecondaryIndex struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index.\n\t//\n\t// IndexName is a required field\n\tIndexName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// Replica table GSI-specific provisioned throughput. If not specified, uses\n\t// the source table GSI's read capacity settings.\n\tProvisionedThroughputOverride *ProvisionedThroughputOverride `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaGlobalSecondaryIndex) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaGlobalSecondaryIndex) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ReplicaGlobalSecondaryIndex) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ReplicaGlobalSecondaryIndex\"}\n\tif s.IndexName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"IndexName\"))\n\t}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\tif s.ProvisionedThroughputOverride != nil {\n\t\tif err := s.ProvisionedThroughputOverride.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedThroughputOverride\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *ReplicaGlobalSecondaryIndex) SetIndexName(v string) *ReplicaGlobalSecondaryIndex {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.\nfunc (s *ReplicaGlobalSecondaryIndex) SetProvisionedThroughputOverride(v *ProvisionedThroughputOverride) *ReplicaGlobalSecondaryIndex {\n\ts.ProvisionedThroughputOverride = v\n\treturn s\n}\n\n// Represents the auto scaling configuration for a replica global secondary\n// index.\ntype ReplicaGlobalSecondaryIndexAutoScalingDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// The current state of the replica global secondary index:\n\t//\n\t//    * CREATING - The index is being created.\n\t//\n\t//    * UPDATING - The table/index configuration is being updated. The table/index\n\t//    remains available for data operations when UPDATING\n\t//\n\t//    * DELETING - The index is being deleted.\n\t//\n\t//    * ACTIVE - The index is ready for use.\n\tIndexStatus *string `type:\"string\" enum:\"IndexStatus\"`\n\n\t// Represents the auto scaling settings for a global table or global secondary\n\t// index.\n\tProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:\"structure\"`\n\n\t// Represents the auto scaling settings for a global table or global secondary\n\t// index.\n\tProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaGlobalSecondaryIndexAutoScalingDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaGlobalSecondaryIndexAutoScalingDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *ReplicaGlobalSecondaryIndexAutoScalingDescription) SetIndexName(v string) *ReplicaGlobalSecondaryIndexAutoScalingDescription {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetIndexStatus sets the IndexStatus field's value.\nfunc (s *ReplicaGlobalSecondaryIndexAutoScalingDescription) SetIndexStatus(v string) *ReplicaGlobalSecondaryIndexAutoScalingDescription {\n\ts.IndexStatus = &v\n\treturn s\n}\n\n// SetProvisionedReadCapacityAutoScalingSettings sets the ProvisionedReadCapacityAutoScalingSettings field's value.\nfunc (s *ReplicaGlobalSecondaryIndexAutoScalingDescription) SetProvisionedReadCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaGlobalSecondaryIndexAutoScalingDescription {\n\ts.ProvisionedReadCapacityAutoScalingSettings = v\n\treturn s\n}\n\n// SetProvisionedWriteCapacityAutoScalingSettings sets the ProvisionedWriteCapacityAutoScalingSettings field's value.\nfunc (s *ReplicaGlobalSecondaryIndexAutoScalingDescription) SetProvisionedWriteCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaGlobalSecondaryIndexAutoScalingDescription {\n\ts.ProvisionedWriteCapacityAutoScalingSettings = v\n\treturn s\n}\n\n// Represents the auto scaling settings of a global secondary index for a replica\n// that will be modified.\ntype ReplicaGlobalSecondaryIndexAutoScalingUpdate struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// Represents the auto scaling settings to be modified for a global table or\n\t// global secondary index.\n\tProvisionedReadCapacityAutoScalingUpdate *AutoScalingSettingsUpdate `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaGlobalSecondaryIndexAutoScalingUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaGlobalSecondaryIndexAutoScalingUpdate) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ReplicaGlobalSecondaryIndexAutoScalingUpdate) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ReplicaGlobalSecondaryIndexAutoScalingUpdate\"}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\tif s.ProvisionedReadCapacityAutoScalingUpdate != nil {\n\t\tif err := s.ProvisionedReadCapacityAutoScalingUpdate.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedReadCapacityAutoScalingUpdate\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *ReplicaGlobalSecondaryIndexAutoScalingUpdate) SetIndexName(v string) *ReplicaGlobalSecondaryIndexAutoScalingUpdate {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetProvisionedReadCapacityAutoScalingUpdate sets the ProvisionedReadCapacityAutoScalingUpdate field's value.\nfunc (s *ReplicaGlobalSecondaryIndexAutoScalingUpdate) SetProvisionedReadCapacityAutoScalingUpdate(v *AutoScalingSettingsUpdate) *ReplicaGlobalSecondaryIndexAutoScalingUpdate {\n\ts.ProvisionedReadCapacityAutoScalingUpdate = v\n\treturn s\n}\n\n// Represents the properties of a replica global secondary index.\ntype ReplicaGlobalSecondaryIndexDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// If not described, uses the source table GSI's read capacity settings.\n\tProvisionedThroughputOverride *ProvisionedThroughputOverride `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaGlobalSecondaryIndexDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaGlobalSecondaryIndexDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *ReplicaGlobalSecondaryIndexDescription) SetIndexName(v string) *ReplicaGlobalSecondaryIndexDescription {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.\nfunc (s *ReplicaGlobalSecondaryIndexDescription) SetProvisionedThroughputOverride(v *ProvisionedThroughputOverride) *ReplicaGlobalSecondaryIndexDescription {\n\ts.ProvisionedThroughputOverride = v\n\treturn s\n}\n\n// Represents the properties of a global secondary index.\ntype ReplicaGlobalSecondaryIndexSettingsDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index. The name must be unique among all\n\t// other indexes on this table.\n\t//\n\t// IndexName is a required field\n\tIndexName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// The current status of the global secondary index:\n\t//\n\t//    * CREATING - The global secondary index is being created.\n\t//\n\t//    * UPDATING - The global secondary index is being updated.\n\t//\n\t//    * DELETING - The global secondary index is being deleted.\n\t//\n\t//    * ACTIVE - The global secondary index is ready for use.\n\tIndexStatus *string `type:\"string\" enum:\"IndexStatus\"`\n\n\t// Auto scaling settings for a global secondary index replica's read capacity\n\t// units.\n\tProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:\"structure\"`\n\n\t// The maximum number of strongly consistent reads consumed per second before\n\t// DynamoDB returns a ThrottlingException.\n\tProvisionedReadCapacityUnits *int64 `min:\"1\" type:\"long\"`\n\n\t// Auto scaling settings for a global secondary index replica's write capacity\n\t// units.\n\tProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:\"structure\"`\n\n\t// The maximum number of writes consumed per second before DynamoDB returns\n\t// a ThrottlingException.\n\tProvisionedWriteCapacityUnits *int64 `min:\"1\" type:\"long\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaGlobalSecondaryIndexSettingsDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaGlobalSecondaryIndexSettingsDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetIndexName(v string) *ReplicaGlobalSecondaryIndexSettingsDescription {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetIndexStatus sets the IndexStatus field's value.\nfunc (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetIndexStatus(v string) *ReplicaGlobalSecondaryIndexSettingsDescription {\n\ts.IndexStatus = &v\n\treturn s\n}\n\n// SetProvisionedReadCapacityAutoScalingSettings sets the ProvisionedReadCapacityAutoScalingSettings field's value.\nfunc (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetProvisionedReadCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaGlobalSecondaryIndexSettingsDescription {\n\ts.ProvisionedReadCapacityAutoScalingSettings = v\n\treturn s\n}\n\n// SetProvisionedReadCapacityUnits sets the ProvisionedReadCapacityUnits field's value.\nfunc (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetProvisionedReadCapacityUnits(v int64) *ReplicaGlobalSecondaryIndexSettingsDescription {\n\ts.ProvisionedReadCapacityUnits = &v\n\treturn s\n}\n\n// SetProvisionedWriteCapacityAutoScalingSettings sets the ProvisionedWriteCapacityAutoScalingSettings field's value.\nfunc (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetProvisionedWriteCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaGlobalSecondaryIndexSettingsDescription {\n\ts.ProvisionedWriteCapacityAutoScalingSettings = v\n\treturn s\n}\n\n// SetProvisionedWriteCapacityUnits sets the ProvisionedWriteCapacityUnits field's value.\nfunc (s *ReplicaGlobalSecondaryIndexSettingsDescription) SetProvisionedWriteCapacityUnits(v int64) *ReplicaGlobalSecondaryIndexSettingsDescription {\n\ts.ProvisionedWriteCapacityUnits = &v\n\treturn s\n}\n\n// Represents the settings of a global secondary index for a global table that\n// will be modified.\ntype ReplicaGlobalSecondaryIndexSettingsUpdate struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index. The name must be unique among all\n\t// other indexes on this table.\n\t//\n\t// IndexName is a required field\n\tIndexName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// Auto scaling settings for managing a global secondary index replica's read\n\t// capacity units.\n\tProvisionedReadCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate `type:\"structure\"`\n\n\t// The maximum number of strongly consistent reads consumed per second before\n\t// DynamoDB returns a ThrottlingException.\n\tProvisionedReadCapacityUnits *int64 `min:\"1\" type:\"long\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaGlobalSecondaryIndexSettingsUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaGlobalSecondaryIndexSettingsUpdate) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ReplicaGlobalSecondaryIndexSettingsUpdate) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ReplicaGlobalSecondaryIndexSettingsUpdate\"}\n\tif s.IndexName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"IndexName\"))\n\t}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\tif s.ProvisionedReadCapacityUnits != nil && *s.ProvisionedReadCapacityUnits < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"ProvisionedReadCapacityUnits\", 1))\n\t}\n\tif s.ProvisionedReadCapacityAutoScalingSettingsUpdate != nil {\n\t\tif err := s.ProvisionedReadCapacityAutoScalingSettingsUpdate.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedReadCapacityAutoScalingSettingsUpdate\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *ReplicaGlobalSecondaryIndexSettingsUpdate) SetIndexName(v string) *ReplicaGlobalSecondaryIndexSettingsUpdate {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetProvisionedReadCapacityAutoScalingSettingsUpdate sets the ProvisionedReadCapacityAutoScalingSettingsUpdate field's value.\nfunc (s *ReplicaGlobalSecondaryIndexSettingsUpdate) SetProvisionedReadCapacityAutoScalingSettingsUpdate(v *AutoScalingSettingsUpdate) *ReplicaGlobalSecondaryIndexSettingsUpdate {\n\ts.ProvisionedReadCapacityAutoScalingSettingsUpdate = v\n\treturn s\n}\n\n// SetProvisionedReadCapacityUnits sets the ProvisionedReadCapacityUnits field's value.\nfunc (s *ReplicaGlobalSecondaryIndexSettingsUpdate) SetProvisionedReadCapacityUnits(v int64) *ReplicaGlobalSecondaryIndexSettingsUpdate {\n\ts.ProvisionedReadCapacityUnits = &v\n\treturn s\n}\n\n// The specified replica is no longer part of the global table.\ntype ReplicaNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorReplicaNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &ReplicaNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ReplicaNotFoundException) Code() string {\n\treturn \"ReplicaNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ReplicaNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ReplicaNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ReplicaNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ReplicaNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ReplicaNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Represents the properties of a replica.\ntype ReplicaSettingsDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Region name of the replica.\n\t//\n\t// RegionName is a required field\n\tRegionName *string `type:\"string\" required:\"true\"`\n\n\t// The read/write capacity mode of the replica.\n\tReplicaBillingModeSummary *BillingModeSummary `type:\"structure\"`\n\n\t// Replica global secondary index settings for the global table.\n\tReplicaGlobalSecondaryIndexSettings []*ReplicaGlobalSecondaryIndexSettingsDescription `type:\"list\"`\n\n\t// Auto scaling settings for a global table replica's read capacity units.\n\tReplicaProvisionedReadCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:\"structure\"`\n\n\t// The maximum number of strongly consistent reads consumed per second before\n\t// DynamoDB returns a ThrottlingException. For more information, see Specifying\n\t// Read and Write Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput)\n\t// in the Amazon DynamoDB Developer Guide.\n\tReplicaProvisionedReadCapacityUnits *int64 `type:\"long\"`\n\n\t// Auto scaling settings for a global table replica's write capacity units.\n\tReplicaProvisionedWriteCapacityAutoScalingSettings *AutoScalingSettingsDescription `type:\"structure\"`\n\n\t// The maximum number of writes consumed per second before DynamoDB returns\n\t// a ThrottlingException. For more information, see Specifying Read and Write\n\t// Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput)\n\t// in the Amazon DynamoDB Developer Guide.\n\tReplicaProvisionedWriteCapacityUnits *int64 `type:\"long\"`\n\n\t// The current state of the Region:\n\t//\n\t//    * CREATING - The Region is being created.\n\t//\n\t//    * UPDATING - The Region is being updated.\n\t//\n\t//    * DELETING - The Region is being deleted.\n\t//\n\t//    * ACTIVE - The Region is ready for use.\n\tReplicaStatus *string `type:\"string\" enum:\"ReplicaStatus\"`\n\n\t// Contains details of the table class.\n\tReplicaTableClassSummary *TableClassSummary `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaSettingsDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaSettingsDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetRegionName sets the RegionName field's value.\nfunc (s *ReplicaSettingsDescription) SetRegionName(v string) *ReplicaSettingsDescription {\n\ts.RegionName = &v\n\treturn s\n}\n\n// SetReplicaBillingModeSummary sets the ReplicaBillingModeSummary field's value.\nfunc (s *ReplicaSettingsDescription) SetReplicaBillingModeSummary(v *BillingModeSummary) *ReplicaSettingsDescription {\n\ts.ReplicaBillingModeSummary = v\n\treturn s\n}\n\n// SetReplicaGlobalSecondaryIndexSettings sets the ReplicaGlobalSecondaryIndexSettings field's value.\nfunc (s *ReplicaSettingsDescription) SetReplicaGlobalSecondaryIndexSettings(v []*ReplicaGlobalSecondaryIndexSettingsDescription) *ReplicaSettingsDescription {\n\ts.ReplicaGlobalSecondaryIndexSettings = v\n\treturn s\n}\n\n// SetReplicaProvisionedReadCapacityAutoScalingSettings sets the ReplicaProvisionedReadCapacityAutoScalingSettings field's value.\nfunc (s *ReplicaSettingsDescription) SetReplicaProvisionedReadCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaSettingsDescription {\n\ts.ReplicaProvisionedReadCapacityAutoScalingSettings = v\n\treturn s\n}\n\n// SetReplicaProvisionedReadCapacityUnits sets the ReplicaProvisionedReadCapacityUnits field's value.\nfunc (s *ReplicaSettingsDescription) SetReplicaProvisionedReadCapacityUnits(v int64) *ReplicaSettingsDescription {\n\ts.ReplicaProvisionedReadCapacityUnits = &v\n\treturn s\n}\n\n// SetReplicaProvisionedWriteCapacityAutoScalingSettings sets the ReplicaProvisionedWriteCapacityAutoScalingSettings field's value.\nfunc (s *ReplicaSettingsDescription) SetReplicaProvisionedWriteCapacityAutoScalingSettings(v *AutoScalingSettingsDescription) *ReplicaSettingsDescription {\n\ts.ReplicaProvisionedWriteCapacityAutoScalingSettings = v\n\treturn s\n}\n\n// SetReplicaProvisionedWriteCapacityUnits sets the ReplicaProvisionedWriteCapacityUnits field's value.\nfunc (s *ReplicaSettingsDescription) SetReplicaProvisionedWriteCapacityUnits(v int64) *ReplicaSettingsDescription {\n\ts.ReplicaProvisionedWriteCapacityUnits = &v\n\treturn s\n}\n\n// SetReplicaStatus sets the ReplicaStatus field's value.\nfunc (s *ReplicaSettingsDescription) SetReplicaStatus(v string) *ReplicaSettingsDescription {\n\ts.ReplicaStatus = &v\n\treturn s\n}\n\n// SetReplicaTableClassSummary sets the ReplicaTableClassSummary field's value.\nfunc (s *ReplicaSettingsDescription) SetReplicaTableClassSummary(v *TableClassSummary) *ReplicaSettingsDescription {\n\ts.ReplicaTableClassSummary = v\n\treturn s\n}\n\n// Represents the settings for a global table in a Region that will be modified.\ntype ReplicaSettingsUpdate struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Region of the replica to be added.\n\t//\n\t// RegionName is a required field\n\tRegionName *string `type:\"string\" required:\"true\"`\n\n\t// Represents the settings of a global secondary index for a global table that\n\t// will be modified.\n\tReplicaGlobalSecondaryIndexSettingsUpdate []*ReplicaGlobalSecondaryIndexSettingsUpdate `min:\"1\" type:\"list\"`\n\n\t// Auto scaling settings for managing a global table replica's read capacity\n\t// units.\n\tReplicaProvisionedReadCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate `type:\"structure\"`\n\n\t// The maximum number of strongly consistent reads consumed per second before\n\t// DynamoDB returns a ThrottlingException. For more information, see Specifying\n\t// Read and Write Requirements (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput)\n\t// in the Amazon DynamoDB Developer Guide.\n\tReplicaProvisionedReadCapacityUnits *int64 `min:\"1\" type:\"long\"`\n\n\t// Replica-specific table class. If not specified, uses the source table's table\n\t// class.\n\tReplicaTableClass *string `type:\"string\" enum:\"TableClass\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaSettingsUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaSettingsUpdate) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ReplicaSettingsUpdate) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ReplicaSettingsUpdate\"}\n\tif s.RegionName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RegionName\"))\n\t}\n\tif s.ReplicaGlobalSecondaryIndexSettingsUpdate != nil && len(s.ReplicaGlobalSecondaryIndexSettingsUpdate) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ReplicaGlobalSecondaryIndexSettingsUpdate\", 1))\n\t}\n\tif s.ReplicaProvisionedReadCapacityUnits != nil && *s.ReplicaProvisionedReadCapacityUnits < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"ReplicaProvisionedReadCapacityUnits\", 1))\n\t}\n\tif s.ReplicaGlobalSecondaryIndexSettingsUpdate != nil {\n\t\tfor i, v := range s.ReplicaGlobalSecondaryIndexSettingsUpdate {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"ReplicaGlobalSecondaryIndexSettingsUpdate\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate != nil {\n\t\tif err := s.ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetRegionName sets the RegionName field's value.\nfunc (s *ReplicaSettingsUpdate) SetRegionName(v string) *ReplicaSettingsUpdate {\n\ts.RegionName = &v\n\treturn s\n}\n\n// SetReplicaGlobalSecondaryIndexSettingsUpdate sets the ReplicaGlobalSecondaryIndexSettingsUpdate field's value.\nfunc (s *ReplicaSettingsUpdate) SetReplicaGlobalSecondaryIndexSettingsUpdate(v []*ReplicaGlobalSecondaryIndexSettingsUpdate) *ReplicaSettingsUpdate {\n\ts.ReplicaGlobalSecondaryIndexSettingsUpdate = v\n\treturn s\n}\n\n// SetReplicaProvisionedReadCapacityAutoScalingSettingsUpdate sets the ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate field's value.\nfunc (s *ReplicaSettingsUpdate) SetReplicaProvisionedReadCapacityAutoScalingSettingsUpdate(v *AutoScalingSettingsUpdate) *ReplicaSettingsUpdate {\n\ts.ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate = v\n\treturn s\n}\n\n// SetReplicaProvisionedReadCapacityUnits sets the ReplicaProvisionedReadCapacityUnits field's value.\nfunc (s *ReplicaSettingsUpdate) SetReplicaProvisionedReadCapacityUnits(v int64) *ReplicaSettingsUpdate {\n\ts.ReplicaProvisionedReadCapacityUnits = &v\n\treturn s\n}\n\n// SetReplicaTableClass sets the ReplicaTableClass field's value.\nfunc (s *ReplicaSettingsUpdate) SetReplicaTableClass(v string) *ReplicaSettingsUpdate {\n\ts.ReplicaTableClass = &v\n\treturn s\n}\n\n// Represents one of the following:\n//\n//   - A new replica to be added to an existing global table.\n//\n//   - New parameters for an existing replica.\n//\n//   - An existing replica to be removed from an existing global table.\ntype ReplicaUpdate struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The parameters required for creating a replica on an existing global table.\n\tCreate *CreateReplicaAction `type:\"structure\"`\n\n\t// The name of the existing replica to be removed.\n\tDelete *DeleteReplicaAction `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicaUpdate) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ReplicaUpdate) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ReplicaUpdate\"}\n\tif s.Create != nil {\n\t\tif err := s.Create.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Create\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Delete != nil {\n\t\tif err := s.Delete.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Delete\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetCreate sets the Create field's value.\nfunc (s *ReplicaUpdate) SetCreate(v *CreateReplicaAction) *ReplicaUpdate {\n\ts.Create = v\n\treturn s\n}\n\n// SetDelete sets the Delete field's value.\nfunc (s *ReplicaUpdate) SetDelete(v *DeleteReplicaAction) *ReplicaUpdate {\n\ts.Delete = v\n\treturn s\n}\n\n// Represents one of the following:\n//\n//   - A new replica to be added to an existing regional table or global table.\n//     This request invokes the CreateTableReplica action in the destination\n//     Region.\n//\n//   - New parameters for an existing replica. This request invokes the UpdateTable\n//     action in the destination Region.\n//\n//   - An existing replica to be deleted. The request invokes the DeleteTableReplica\n//     action in the destination Region, deleting the replica and all if its\n//     items in the destination Region.\n//\n// When you manually remove a table or global table replica, you do not automatically\n// remove any associated scalable targets, scaling policies, or CloudWatch alarms.\ntype ReplicationGroupUpdate struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The parameters required for creating a replica for the table.\n\tCreate *CreateReplicationGroupMemberAction `type:\"structure\"`\n\n\t// The parameters required for deleting a replica for the table.\n\tDelete *DeleteReplicationGroupMemberAction `type:\"structure\"`\n\n\t// The parameters required for updating a replica for the table.\n\tUpdate *UpdateReplicationGroupMemberAction `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicationGroupUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReplicationGroupUpdate) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ReplicationGroupUpdate) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ReplicationGroupUpdate\"}\n\tif s.Create != nil {\n\t\tif err := s.Create.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Create\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Delete != nil {\n\t\tif err := s.Delete.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Delete\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Update != nil {\n\t\tif err := s.Update.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Update\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetCreate sets the Create field's value.\nfunc (s *ReplicationGroupUpdate) SetCreate(v *CreateReplicationGroupMemberAction) *ReplicationGroupUpdate {\n\ts.Create = v\n\treturn s\n}\n\n// SetDelete sets the Delete field's value.\nfunc (s *ReplicationGroupUpdate) SetDelete(v *DeleteReplicationGroupMemberAction) *ReplicationGroupUpdate {\n\ts.Delete = v\n\treturn s\n}\n\n// SetUpdate sets the Update field's value.\nfunc (s *ReplicationGroupUpdate) SetUpdate(v *UpdateReplicationGroupMemberAction) *ReplicationGroupUpdate {\n\ts.Update = v\n\treturn s\n}\n\n// Throughput exceeds the current throughput quota for your account. Please\n// contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n// a quota increase.\ntype RequestLimitExceeded struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RequestLimitExceeded) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RequestLimitExceeded) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorRequestLimitExceeded(v protocol.ResponseMetadata) error {\n\treturn &RequestLimitExceeded{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *RequestLimitExceeded) Code() string {\n\treturn \"RequestLimitExceeded\"\n}\n\n// Message returns the exception's message.\nfunc (s *RequestLimitExceeded) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *RequestLimitExceeded) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *RequestLimitExceeded) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *RequestLimitExceeded) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *RequestLimitExceeded) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The operation conflicts with the resource's availability. For example, you\n// attempted to recreate an existing table, or tried to delete a table currently\n// in the CREATING state.\ntype ResourceInUseException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// The resource which is being attempted to be changed is in use.\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceInUseException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceInUseException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorResourceInUseException(v protocol.ResponseMetadata) error {\n\treturn &ResourceInUseException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ResourceInUseException) Code() string {\n\treturn \"ResourceInUseException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ResourceInUseException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ResourceInUseException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ResourceInUseException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ResourceInUseException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ResourceInUseException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The operation tried to access a nonexistent table or index. The resource\n// might not be specified correctly, or its status might not be ACTIVE.\ntype ResourceNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// The resource which is being requested does not exist.\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &ResourceNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ResourceNotFoundException) Code() string {\n\treturn \"ResourceNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ResourceNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ResourceNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ResourceNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ResourceNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ResourceNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Contains details for the restore.\ntype RestoreSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Point in time or source backup time.\n\t//\n\t// RestoreDateTime is a required field\n\tRestoreDateTime *time.Time `type:\"timestamp\" required:\"true\"`\n\n\t// Indicates if a restore is in progress or not.\n\t//\n\t// RestoreInProgress is a required field\n\tRestoreInProgress *bool `type:\"boolean\" required:\"true\"`\n\n\t// The Amazon Resource Name (ARN) of the backup from which the table was restored.\n\tSourceBackupArn *string `min:\"37\" type:\"string\"`\n\n\t// The ARN of the source table of the backup that is being restored.\n\tSourceTableArn *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RestoreSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RestoreSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetRestoreDateTime sets the RestoreDateTime field's value.\nfunc (s *RestoreSummary) SetRestoreDateTime(v time.Time) *RestoreSummary {\n\ts.RestoreDateTime = &v\n\treturn s\n}\n\n// SetRestoreInProgress sets the RestoreInProgress field's value.\nfunc (s *RestoreSummary) SetRestoreInProgress(v bool) *RestoreSummary {\n\ts.RestoreInProgress = &v\n\treturn s\n}\n\n// SetSourceBackupArn sets the SourceBackupArn field's value.\nfunc (s *RestoreSummary) SetSourceBackupArn(v string) *RestoreSummary {\n\ts.SourceBackupArn = &v\n\treturn s\n}\n\n// SetSourceTableArn sets the SourceTableArn field's value.\nfunc (s *RestoreSummary) SetSourceTableArn(v string) *RestoreSummary {\n\ts.SourceTableArn = &v\n\treturn s\n}\n\ntype RestoreTableFromBackupInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) associated with the backup.\n\t//\n\t// BackupArn is a required field\n\tBackupArn *string `min:\"37\" type:\"string\" required:\"true\"`\n\n\t// The billing mode of the restored table.\n\tBillingModeOverride *string `type:\"string\" enum:\"BillingMode\"`\n\n\t// List of global secondary indexes for the restored table. The indexes provided\n\t// should match existing secondary indexes. You can choose to exclude some or\n\t// all of the indexes at the time of restore.\n\tGlobalSecondaryIndexOverride []*GlobalSecondaryIndex `type:\"list\"`\n\n\t// List of local secondary indexes for the restored table. The indexes provided\n\t// should match existing secondary indexes. You can choose to exclude some or\n\t// all of the indexes at the time of restore.\n\tLocalSecondaryIndexOverride []*LocalSecondaryIndex `type:\"list\"`\n\n\t// Provisioned throughput settings for the restored table.\n\tProvisionedThroughputOverride *ProvisionedThroughput `type:\"structure\"`\n\n\t// The new server-side encryption settings for the restored table.\n\tSSESpecificationOverride *SSESpecification `type:\"structure\"`\n\n\t// The name of the new table to which the backup must be restored.\n\t//\n\t// TargetTableName is a required field\n\tTargetTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RestoreTableFromBackupInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RestoreTableFromBackupInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *RestoreTableFromBackupInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"RestoreTableFromBackupInput\"}\n\tif s.BackupArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"BackupArn\"))\n\t}\n\tif s.BackupArn != nil && len(*s.BackupArn) < 37 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"BackupArn\", 37))\n\t}\n\tif s.TargetTableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TargetTableName\"))\n\t}\n\tif s.TargetTableName != nil && len(*s.TargetTableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TargetTableName\", 3))\n\t}\n\tif s.GlobalSecondaryIndexOverride != nil {\n\t\tfor i, v := range s.GlobalSecondaryIndexOverride {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"GlobalSecondaryIndexOverride\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.LocalSecondaryIndexOverride != nil {\n\t\tfor i, v := range s.LocalSecondaryIndexOverride {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"LocalSecondaryIndexOverride\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ProvisionedThroughputOverride != nil {\n\t\tif err := s.ProvisionedThroughputOverride.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedThroughputOverride\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetBackupArn sets the BackupArn field's value.\nfunc (s *RestoreTableFromBackupInput) SetBackupArn(v string) *RestoreTableFromBackupInput {\n\ts.BackupArn = &v\n\treturn s\n}\n\n// SetBillingModeOverride sets the BillingModeOverride field's value.\nfunc (s *RestoreTableFromBackupInput) SetBillingModeOverride(v string) *RestoreTableFromBackupInput {\n\ts.BillingModeOverride = &v\n\treturn s\n}\n\n// SetGlobalSecondaryIndexOverride sets the GlobalSecondaryIndexOverride field's value.\nfunc (s *RestoreTableFromBackupInput) SetGlobalSecondaryIndexOverride(v []*GlobalSecondaryIndex) *RestoreTableFromBackupInput {\n\ts.GlobalSecondaryIndexOverride = v\n\treturn s\n}\n\n// SetLocalSecondaryIndexOverride sets the LocalSecondaryIndexOverride field's value.\nfunc (s *RestoreTableFromBackupInput) SetLocalSecondaryIndexOverride(v []*LocalSecondaryIndex) *RestoreTableFromBackupInput {\n\ts.LocalSecondaryIndexOverride = v\n\treturn s\n}\n\n// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.\nfunc (s *RestoreTableFromBackupInput) SetProvisionedThroughputOverride(v *ProvisionedThroughput) *RestoreTableFromBackupInput {\n\ts.ProvisionedThroughputOverride = v\n\treturn s\n}\n\n// SetSSESpecificationOverride sets the SSESpecificationOverride field's value.\nfunc (s *RestoreTableFromBackupInput) SetSSESpecificationOverride(v *SSESpecification) *RestoreTableFromBackupInput {\n\ts.SSESpecificationOverride = v\n\treturn s\n}\n\n// SetTargetTableName sets the TargetTableName field's value.\nfunc (s *RestoreTableFromBackupInput) SetTargetTableName(v string) *RestoreTableFromBackupInput {\n\ts.TargetTableName = &v\n\treturn s\n}\n\ntype RestoreTableFromBackupOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The description of the table created from an existing backup.\n\tTableDescription *TableDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RestoreTableFromBackupOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RestoreTableFromBackupOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetTableDescription sets the TableDescription field's value.\nfunc (s *RestoreTableFromBackupOutput) SetTableDescription(v *TableDescription) *RestoreTableFromBackupOutput {\n\ts.TableDescription = v\n\treturn s\n}\n\ntype RestoreTableToPointInTimeInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The billing mode of the restored table.\n\tBillingModeOverride *string `type:\"string\" enum:\"BillingMode\"`\n\n\t// List of global secondary indexes for the restored table. The indexes provided\n\t// should match existing secondary indexes. You can choose to exclude some or\n\t// all of the indexes at the time of restore.\n\tGlobalSecondaryIndexOverride []*GlobalSecondaryIndex `type:\"list\"`\n\n\t// List of local secondary indexes for the restored table. The indexes provided\n\t// should match existing secondary indexes. You can choose to exclude some or\n\t// all of the indexes at the time of restore.\n\tLocalSecondaryIndexOverride []*LocalSecondaryIndex `type:\"list\"`\n\n\t// Provisioned throughput settings for the restored table.\n\tProvisionedThroughputOverride *ProvisionedThroughput `type:\"structure\"`\n\n\t// Time in the past to restore the table to.\n\tRestoreDateTime *time.Time `type:\"timestamp\"`\n\n\t// The new server-side encryption settings for the restored table.\n\tSSESpecificationOverride *SSESpecification `type:\"structure\"`\n\n\t// The DynamoDB table that will be restored. This value is an Amazon Resource\n\t// Name (ARN).\n\tSourceTableArn *string `type:\"string\"`\n\n\t// Name of the source table that is being restored.\n\tSourceTableName *string `min:\"3\" type:\"string\"`\n\n\t// The name of the new table to which it must be restored to.\n\t//\n\t// TargetTableName is a required field\n\tTargetTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// Restore the table to the latest possible time. LatestRestorableDateTime is\n\t// typically 5 minutes before the current time.\n\tUseLatestRestorableTime *bool `type:\"boolean\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RestoreTableToPointInTimeInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RestoreTableToPointInTimeInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *RestoreTableToPointInTimeInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"RestoreTableToPointInTimeInput\"}\n\tif s.SourceTableName != nil && len(*s.SourceTableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SourceTableName\", 3))\n\t}\n\tif s.TargetTableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TargetTableName\"))\n\t}\n\tif s.TargetTableName != nil && len(*s.TargetTableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TargetTableName\", 3))\n\t}\n\tif s.GlobalSecondaryIndexOverride != nil {\n\t\tfor i, v := range s.GlobalSecondaryIndexOverride {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"GlobalSecondaryIndexOverride\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.LocalSecondaryIndexOverride != nil {\n\t\tfor i, v := range s.LocalSecondaryIndexOverride {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"LocalSecondaryIndexOverride\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ProvisionedThroughputOverride != nil {\n\t\tif err := s.ProvisionedThroughputOverride.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedThroughputOverride\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetBillingModeOverride sets the BillingModeOverride field's value.\nfunc (s *RestoreTableToPointInTimeInput) SetBillingModeOverride(v string) *RestoreTableToPointInTimeInput {\n\ts.BillingModeOverride = &v\n\treturn s\n}\n\n// SetGlobalSecondaryIndexOverride sets the GlobalSecondaryIndexOverride field's value.\nfunc (s *RestoreTableToPointInTimeInput) SetGlobalSecondaryIndexOverride(v []*GlobalSecondaryIndex) *RestoreTableToPointInTimeInput {\n\ts.GlobalSecondaryIndexOverride = v\n\treturn s\n}\n\n// SetLocalSecondaryIndexOverride sets the LocalSecondaryIndexOverride field's value.\nfunc (s *RestoreTableToPointInTimeInput) SetLocalSecondaryIndexOverride(v []*LocalSecondaryIndex) *RestoreTableToPointInTimeInput {\n\ts.LocalSecondaryIndexOverride = v\n\treturn s\n}\n\n// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.\nfunc (s *RestoreTableToPointInTimeInput) SetProvisionedThroughputOverride(v *ProvisionedThroughput) *RestoreTableToPointInTimeInput {\n\ts.ProvisionedThroughputOverride = v\n\treturn s\n}\n\n// SetRestoreDateTime sets the RestoreDateTime field's value.\nfunc (s *RestoreTableToPointInTimeInput) SetRestoreDateTime(v time.Time) *RestoreTableToPointInTimeInput {\n\ts.RestoreDateTime = &v\n\treturn s\n}\n\n// SetSSESpecificationOverride sets the SSESpecificationOverride field's value.\nfunc (s *RestoreTableToPointInTimeInput) SetSSESpecificationOverride(v *SSESpecification) *RestoreTableToPointInTimeInput {\n\ts.SSESpecificationOverride = v\n\treturn s\n}\n\n// SetSourceTableArn sets the SourceTableArn field's value.\nfunc (s *RestoreTableToPointInTimeInput) SetSourceTableArn(v string) *RestoreTableToPointInTimeInput {\n\ts.SourceTableArn = &v\n\treturn s\n}\n\n// SetSourceTableName sets the SourceTableName field's value.\nfunc (s *RestoreTableToPointInTimeInput) SetSourceTableName(v string) *RestoreTableToPointInTimeInput {\n\ts.SourceTableName = &v\n\treturn s\n}\n\n// SetTargetTableName sets the TargetTableName field's value.\nfunc (s *RestoreTableToPointInTimeInput) SetTargetTableName(v string) *RestoreTableToPointInTimeInput {\n\ts.TargetTableName = &v\n\treturn s\n}\n\n// SetUseLatestRestorableTime sets the UseLatestRestorableTime field's value.\nfunc (s *RestoreTableToPointInTimeInput) SetUseLatestRestorableTime(v bool) *RestoreTableToPointInTimeInput {\n\ts.UseLatestRestorableTime = &v\n\treturn s\n}\n\ntype RestoreTableToPointInTimeOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the properties of a table.\n\tTableDescription *TableDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RestoreTableToPointInTimeOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RestoreTableToPointInTimeOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetTableDescription sets the TableDescription field's value.\nfunc (s *RestoreTableToPointInTimeOutput) SetTableDescription(v *TableDescription) *RestoreTableToPointInTimeOutput {\n\ts.TableDescription = v\n\treturn s\n}\n\n// The S3 bucket that is being imported from.\ntype S3BucketSource struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The S3 bucket that is being imported from.\n\t//\n\t// S3Bucket is a required field\n\tS3Bucket *string `type:\"string\" required:\"true\"`\n\n\t// The account number of the S3 bucket that is being imported from. If the bucket\n\t// is owned by the requester this is optional.\n\tS3BucketOwner *string `type:\"string\"`\n\n\t// The key prefix shared by all S3 Objects that are being imported.\n\tS3KeyPrefix *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s S3BucketSource) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s S3BucketSource) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *S3BucketSource) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"S3BucketSource\"}\n\tif s.S3Bucket == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"S3Bucket\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetS3Bucket sets the S3Bucket field's value.\nfunc (s *S3BucketSource) SetS3Bucket(v string) *S3BucketSource {\n\ts.S3Bucket = &v\n\treturn s\n}\n\n// SetS3BucketOwner sets the S3BucketOwner field's value.\nfunc (s *S3BucketSource) SetS3BucketOwner(v string) *S3BucketSource {\n\ts.S3BucketOwner = &v\n\treturn s\n}\n\n// SetS3KeyPrefix sets the S3KeyPrefix field's value.\nfunc (s *S3BucketSource) SetS3KeyPrefix(v string) *S3BucketSource {\n\ts.S3KeyPrefix = &v\n\treturn s\n}\n\n// The description of the server-side encryption status on the specified table.\ntype SSEDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Indicates the time, in UNIX epoch date format, when DynamoDB detected that\n\t// the table's KMS key was inaccessible. This attribute will automatically be\n\t// cleared when DynamoDB detects that the table's KMS key is accessible again.\n\t// DynamoDB will initiate the table archival process when table's KMS key remains\n\t// inaccessible for more than seven days from this date.\n\tInaccessibleEncryptionDateTime *time.Time `type:\"timestamp\"`\n\n\t// The KMS key ARN used for the KMS encryption.\n\tKMSMasterKeyArn *string `type:\"string\"`\n\n\t// Server-side encryption type. The only supported value is:\n\t//\n\t//    * KMS - Server-side encryption that uses Key Management Service. The key\n\t//    is stored in your account and is managed by KMS (KMS charges apply).\n\tSSEType *string `type:\"string\" enum:\"SSEType\"`\n\n\t// Represents the current state of server-side encryption. The only supported\n\t// values are:\n\t//\n\t//    * ENABLED - Server-side encryption is enabled.\n\t//\n\t//    * UPDATING - Server-side encryption is being updated.\n\tStatus *string `type:\"string\" enum:\"SSEStatus\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SSEDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SSEDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetInaccessibleEncryptionDateTime sets the InaccessibleEncryptionDateTime field's value.\nfunc (s *SSEDescription) SetInaccessibleEncryptionDateTime(v time.Time) *SSEDescription {\n\ts.InaccessibleEncryptionDateTime = &v\n\treturn s\n}\n\n// SetKMSMasterKeyArn sets the KMSMasterKeyArn field's value.\nfunc (s *SSEDescription) SetKMSMasterKeyArn(v string) *SSEDescription {\n\ts.KMSMasterKeyArn = &v\n\treturn s\n}\n\n// SetSSEType sets the SSEType field's value.\nfunc (s *SSEDescription) SetSSEType(v string) *SSEDescription {\n\ts.SSEType = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *SSEDescription) SetStatus(v string) *SSEDescription {\n\ts.Status = &v\n\treturn s\n}\n\n// Represents the settings used to enable server-side encryption.\ntype SSESpecification struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Indicates whether server-side encryption is done using an Amazon Web Services\n\t// managed key or an Amazon Web Services owned key. If enabled (true), server-side\n\t// encryption type is set to KMS and an Amazon Web Services managed key is used\n\t// (KMS charges apply). If disabled (false) or not specified, server-side encryption\n\t// is set to Amazon Web Services owned key.\n\tEnabled *bool `type:\"boolean\"`\n\n\t// The KMS key that should be used for the KMS encryption. To specify a key,\n\t// use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. Note\n\t// that you should only provide this parameter if the key is different from\n\t// the default DynamoDB key alias/aws/dynamodb.\n\tKMSMasterKeyId *string `type:\"string\"`\n\n\t// Server-side encryption type. The only supported value is:\n\t//\n\t//    * KMS - Server-side encryption that uses Key Management Service. The key\n\t//    is stored in your account and is managed by KMS (KMS charges apply).\n\tSSEType *string `type:\"string\" enum:\"SSEType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SSESpecification) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SSESpecification) GoString() string {\n\treturn s.String()\n}\n\n// SetEnabled sets the Enabled field's value.\nfunc (s *SSESpecification) SetEnabled(v bool) *SSESpecification {\n\ts.Enabled = &v\n\treturn s\n}\n\n// SetKMSMasterKeyId sets the KMSMasterKeyId field's value.\nfunc (s *SSESpecification) SetKMSMasterKeyId(v string) *SSESpecification {\n\ts.KMSMasterKeyId = &v\n\treturn s\n}\n\n// SetSSEType sets the SSEType field's value.\nfunc (s *SSESpecification) SetSSEType(v string) *SSESpecification {\n\ts.SSEType = &v\n\treturn s\n}\n\n// Represents the input of a Scan operation.\ntype ScanInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// This is a legacy parameter. Use ProjectionExpression instead. For more information,\n\t// see AttributesToGet (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributesToGet.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tAttributesToGet []*string `min:\"1\" type:\"list\"`\n\n\t// This is a legacy parameter. Use FilterExpression instead. For more information,\n\t// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConditionalOperator *string `type:\"string\" enum:\"ConditionalOperator\"`\n\n\t// A Boolean value that determines the read consistency model during the scan:\n\t//\n\t//    * If ConsistentRead is false, then the data returned from Scan might not\n\t//    contain the results from other recently completed write operations (PutItem,\n\t//    UpdateItem, or DeleteItem).\n\t//\n\t//    * If ConsistentRead is true, then all of the write operations that completed\n\t//    before the Scan began are guaranteed to be contained in the Scan response.\n\t//\n\t// The default setting for ConsistentRead is false.\n\t//\n\t// The ConsistentRead parameter is not supported on global secondary indexes.\n\t// If you scan a global secondary index with ConsistentRead set to true, you\n\t// will receive a ValidationException.\n\tConsistentRead *bool `type:\"boolean\"`\n\n\t// The primary key of the first item that this operation will evaluate. Use\n\t// the value that was returned for LastEvaluatedKey in the previous operation.\n\t//\n\t// The data type for ExclusiveStartKey must be String, Number or Binary. No\n\t// set data types are allowed.\n\t//\n\t// In a parallel scan, a Scan request that includes ExclusiveStartKey must specify\n\t// the same segment whose previous Scan returned the corresponding value of\n\t// LastEvaluatedKey.\n\tExclusiveStartKey map[string]*AttributeValue `type:\"map\"`\n\n\t// One or more substitution tokens for attribute names in an expression. The\n\t// following are some use cases for using ExpressionAttributeNames:\n\t//\n\t//    * To access an attribute whose name conflicts with a DynamoDB reserved\n\t//    word.\n\t//\n\t//    * To create a placeholder for repeating occurrences of an attribute name\n\t//    in an expression.\n\t//\n\t//    * To prevent special characters in an attribute name from being misinterpreted\n\t//    in an expression.\n\t//\n\t// Use the # character in an expression to dereference an attribute name. For\n\t// example, consider the following attribute name:\n\t//\n\t//    * Percentile\n\t//\n\t// The name of this attribute conflicts with a reserved word, so it cannot be\n\t// used directly in an expression. (For the complete list of reserved words,\n\t// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)\n\t// in the Amazon DynamoDB Developer Guide). To work around this, you could specify\n\t// the following for ExpressionAttributeNames:\n\t//\n\t//    * {\"#P\":\"Percentile\"}\n\t//\n\t// You could then use this substitution in an expression, as in this example:\n\t//\n\t//    * #P = :val\n\t//\n\t// Tokens that begin with the : character are expression attribute values, which\n\t// are placeholders for the actual value at runtime.\n\t//\n\t// For more information on expression attribute names, see Specifying Item Attributes\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeNames map[string]*string `type:\"map\"`\n\n\t// One or more values that can be substituted in an expression.\n\t//\n\t// Use the : (colon) character in an expression to dereference an attribute\n\t// value. For example, suppose that you wanted to check whether the value of\n\t// the ProductStatus attribute was one of the following:\n\t//\n\t// Available | Backordered | Discontinued\n\t//\n\t// You would first need to specify ExpressionAttributeValues as follows:\n\t//\n\t// { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"}\n\t// }\n\t//\n\t// You could then use these values in an expression, such as this:\n\t//\n\t// ProductStatus IN (:avail, :back, :disc)\n\t//\n\t// For more information on expression attribute values, see Condition Expressions\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeValues map[string]*AttributeValue `type:\"map\"`\n\n\t// A string that contains conditions that DynamoDB applies after the Scan operation,\n\t// but before the data is returned to you. Items that do not satisfy the FilterExpression\n\t// criteria are not returned.\n\t//\n\t// A FilterExpression is applied after the items have already been read; the\n\t// process of filtering does not consume any additional read capacity units.\n\t//\n\t// For more information, see Filter Expressions (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html#Scan.FilterExpression)\n\t// in the Amazon DynamoDB Developer Guide.\n\tFilterExpression *string `type:\"string\"`\n\n\t// The name of a secondary index to scan. This index can be any local secondary\n\t// index or global secondary index. Note that if you use the IndexName parameter,\n\t// you must also provide TableName.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// The maximum number of items to evaluate (not necessarily the number of matching\n\t// items). If DynamoDB processes the number of items up to the limit while processing\n\t// the results, it stops the operation and returns the matching values up to\n\t// that point, and a key in LastEvaluatedKey to apply in a subsequent operation,\n\t// so that you can pick up where you left off. Also, if the processed dataset\n\t// size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation\n\t// and returns the matching values up to the limit, and a key in LastEvaluatedKey\n\t// to apply in a subsequent operation to continue the operation. For more information,\n\t// see Working with Queries (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tLimit *int64 `min:\"1\" type:\"integer\"`\n\n\t// A string that identifies one or more attributes to retrieve from the specified\n\t// table or index. These attributes can include scalars, sets, or elements of\n\t// a JSON document. The attributes in the expression must be separated by commas.\n\t//\n\t// If no attribute names are specified, then all attributes will be returned.\n\t// If any of the requested attributes are not found, they will not appear in\n\t// the result.\n\t//\n\t// For more information, see Specifying Item Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tProjectionExpression *string `type:\"string\"`\n\n\t// Determines the level of detail about either provisioned or on-demand throughput\n\t// consumption that is returned in the response:\n\t//\n\t//    * INDEXES - The response includes the aggregate ConsumedCapacity for the\n\t//    operation, together with ConsumedCapacity for each table and secondary\n\t//    index that was accessed. Note that some operations, such as GetItem and\n\t//    BatchGetItem, do not access any indexes at all. In these cases, specifying\n\t//    INDEXES will only return ConsumedCapacity information for table(s).\n\t//\n\t//    * TOTAL - The response includes only the aggregate ConsumedCapacity for\n\t//    the operation.\n\t//\n\t//    * NONE - No ConsumedCapacity details are included in the response.\n\tReturnConsumedCapacity *string `type:\"string\" enum:\"ReturnConsumedCapacity\"`\n\n\t// This is a legacy parameter. Use FilterExpression instead. For more information,\n\t// see ScanFilter (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ScanFilter.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tScanFilter map[string]*Condition `type:\"map\"`\n\n\t// For a parallel Scan request, Segment identifies an individual segment to\n\t// be scanned by an application worker.\n\t//\n\t// Segment IDs are zero-based, so the first segment is always 0. For example,\n\t// if you want to use four application threads to scan a table or an index,\n\t// then the first thread specifies a Segment value of 0, the second thread specifies\n\t// 1, and so on.\n\t//\n\t// The value of LastEvaluatedKey returned from a parallel Scan request must\n\t// be used as ExclusiveStartKey with the same segment ID in a subsequent Scan\n\t// operation.\n\t//\n\t// The value for Segment must be greater than or equal to 0, and less than the\n\t// value provided for TotalSegments.\n\t//\n\t// If you provide Segment, you must also provide TotalSegments.\n\tSegment *int64 `type:\"integer\"`\n\n\t// The attributes to be returned in the result. You can retrieve all item attributes,\n\t// specific item attributes, the count of matching items, or in the case of\n\t// an index, some or all of the attributes projected into the index.\n\t//\n\t//    * ALL_ATTRIBUTES - Returns all of the item attributes from the specified\n\t//    table or index. If you query a local secondary index, then for each matching\n\t//    item in the index, DynamoDB fetches the entire item from the parent table.\n\t//    If the index is configured to project all item attributes, then all of\n\t//    the data can be obtained from the local secondary index, and no fetching\n\t//    is required.\n\t//\n\t//    * ALL_PROJECTED_ATTRIBUTES - Allowed only when querying an index. Retrieves\n\t//    all attributes that have been projected into the index. If the index is\n\t//    configured to project all attributes, this return value is equivalent\n\t//    to specifying ALL_ATTRIBUTES.\n\t//\n\t//    * COUNT - Returns the number of matching items, rather than the matching\n\t//    items themselves. Note that this uses the same quantity of read capacity\n\t//    units as getting the items, and is subject to the same item size calculations.\n\t//\n\t//    * SPECIFIC_ATTRIBUTES - Returns only the attributes listed in ProjectionExpression.\n\t//    This return value is equivalent to specifying ProjectionExpression without\n\t//    specifying any value for Select. If you query or scan a local secondary\n\t//    index and request only attributes that are projected into that index,\n\t//    the operation reads only the index and not the table. If any of the requested\n\t//    attributes are not projected into the local secondary index, DynamoDB\n\t//    fetches each of these attributes from the parent table. This extra fetching\n\t//    incurs additional throughput cost and latency. If you query or scan a\n\t//    global secondary index, you can only request attributes that are projected\n\t//    into the index. Global secondary index queries cannot fetch attributes\n\t//    from the parent table.\n\t//\n\t// If neither Select nor ProjectionExpression are specified, DynamoDB defaults\n\t// to ALL_ATTRIBUTES when accessing a table, and ALL_PROJECTED_ATTRIBUTES when\n\t// accessing an index. You cannot use both Select and ProjectionExpression together\n\t// in a single request, unless the value for Select is SPECIFIC_ATTRIBUTES.\n\t// (This usage is equivalent to specifying ProjectionExpression without any\n\t// value for Select.)\n\t//\n\t// If you use the ProjectionExpression parameter, then the value for Select\n\t// can only be SPECIFIC_ATTRIBUTES. Any other value for Select will return an\n\t// error.\n\tSelect *string `type:\"string\" enum:\"Select\"`\n\n\t// The name of the table containing the requested items; or, if you provide\n\t// IndexName, the name of the table to which that index belongs.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// For a parallel Scan request, TotalSegments represents the total number of\n\t// segments into which the Scan operation will be divided. The value of TotalSegments\n\t// corresponds to the number of application workers that will perform the parallel\n\t// scan. For example, if you want to use four application threads to scan a\n\t// table or an index, specify a TotalSegments value of 4.\n\t//\n\t// The value for TotalSegments must be greater than or equal to 1, and less\n\t// than or equal to 1000000. If you specify a TotalSegments value of 1, the\n\t// Scan operation will be sequential rather than parallel.\n\t//\n\t// If you specify TotalSegments, you must also specify Segment.\n\tTotalSegments *int64 `min:\"1\" type:\"integer\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ScanInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ScanInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ScanInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ScanInput\"}\n\tif s.AttributesToGet != nil && len(s.AttributesToGet) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AttributesToGet\", 1))\n\t}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\tif s.Limit != nil && *s.Limit < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"Limit\", 1))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\tif s.TotalSegments != nil && *s.TotalSegments < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"TotalSegments\", 1))\n\t}\n\tif s.ScanFilter != nil {\n\t\tfor i, v := range s.ScanFilter {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"ScanFilter\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttributesToGet sets the AttributesToGet field's value.\nfunc (s *ScanInput) SetAttributesToGet(v []*string) *ScanInput {\n\ts.AttributesToGet = v\n\treturn s\n}\n\n// SetConditionalOperator sets the ConditionalOperator field's value.\nfunc (s *ScanInput) SetConditionalOperator(v string) *ScanInput {\n\ts.ConditionalOperator = &v\n\treturn s\n}\n\n// SetConsistentRead sets the ConsistentRead field's value.\nfunc (s *ScanInput) SetConsistentRead(v bool) *ScanInput {\n\ts.ConsistentRead = &v\n\treturn s\n}\n\n// SetExclusiveStartKey sets the ExclusiveStartKey field's value.\nfunc (s *ScanInput) SetExclusiveStartKey(v map[string]*AttributeValue) *ScanInput {\n\ts.ExclusiveStartKey = v\n\treturn s\n}\n\n// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.\nfunc (s *ScanInput) SetExpressionAttributeNames(v map[string]*string) *ScanInput {\n\ts.ExpressionAttributeNames = v\n\treturn s\n}\n\n// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.\nfunc (s *ScanInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *ScanInput {\n\ts.ExpressionAttributeValues = v\n\treturn s\n}\n\n// SetFilterExpression sets the FilterExpression field's value.\nfunc (s *ScanInput) SetFilterExpression(v string) *ScanInput {\n\ts.FilterExpression = &v\n\treturn s\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *ScanInput) SetIndexName(v string) *ScanInput {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetLimit sets the Limit field's value.\nfunc (s *ScanInput) SetLimit(v int64) *ScanInput {\n\ts.Limit = &v\n\treturn s\n}\n\n// SetProjectionExpression sets the ProjectionExpression field's value.\nfunc (s *ScanInput) SetProjectionExpression(v string) *ScanInput {\n\ts.ProjectionExpression = &v\n\treturn s\n}\n\n// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.\nfunc (s *ScanInput) SetReturnConsumedCapacity(v string) *ScanInput {\n\ts.ReturnConsumedCapacity = &v\n\treturn s\n}\n\n// SetScanFilter sets the ScanFilter field's value.\nfunc (s *ScanInput) SetScanFilter(v map[string]*Condition) *ScanInput {\n\ts.ScanFilter = v\n\treturn s\n}\n\n// SetSegment sets the Segment field's value.\nfunc (s *ScanInput) SetSegment(v int64) *ScanInput {\n\ts.Segment = &v\n\treturn s\n}\n\n// SetSelect sets the Select field's value.\nfunc (s *ScanInput) SetSelect(v string) *ScanInput {\n\ts.Select = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *ScanInput) SetTableName(v string) *ScanInput {\n\ts.TableName = &v\n\treturn s\n}\n\n// SetTotalSegments sets the TotalSegments field's value.\nfunc (s *ScanInput) SetTotalSegments(v int64) *ScanInput {\n\ts.TotalSegments = &v\n\treturn s\n}\n\n// Represents the output of a Scan operation.\ntype ScanOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The capacity units consumed by the Scan operation. The data returned includes\n\t// the total provisioned throughput consumed, along with statistics for the\n\t// table and any indexes involved in the operation. ConsumedCapacity is only\n\t// returned if the ReturnConsumedCapacity parameter was specified. For more\n\t// information, see Provisioned Throughput (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html#ItemSizeCalculations.Reads)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConsumedCapacity *ConsumedCapacity `type:\"structure\"`\n\n\t// The number of items in the response.\n\t//\n\t// If you set ScanFilter in the request, then Count is the number of items returned\n\t// after the filter was applied, and ScannedCount is the number of matching\n\t// items before the filter was applied.\n\t//\n\t// If you did not use a filter in the request, then Count is the same as ScannedCount.\n\tCount *int64 `type:\"integer\"`\n\n\t// An array of item attributes that match the scan criteria. Each element in\n\t// this array consists of an attribute name and the value for that attribute.\n\tItems []map[string]*AttributeValue `type:\"list\"`\n\n\t// The primary key of the item where the operation stopped, inclusive of the\n\t// previous result set. Use this value to start a new operation, excluding this\n\t// value in the new request.\n\t//\n\t// If LastEvaluatedKey is empty, then the \"last page\" of results has been processed\n\t// and there is no more data to be retrieved.\n\t//\n\t// If LastEvaluatedKey is not empty, it does not necessarily mean that there\n\t// is more data in the result set. The only way to know when you have reached\n\t// the end of the result set is when LastEvaluatedKey is empty.\n\tLastEvaluatedKey map[string]*AttributeValue `type:\"map\"`\n\n\t// The number of items evaluated, before any ScanFilter is applied. A high ScannedCount\n\t// value with few, or no, Count results indicates an inefficient Scan operation.\n\t// For more information, see Count and ScannedCount (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count)\n\t// in the Amazon DynamoDB Developer Guide.\n\t//\n\t// If you did not use a filter in the request, then ScannedCount is the same\n\t// as Count.\n\tScannedCount *int64 `type:\"integer\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ScanOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ScanOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetConsumedCapacity sets the ConsumedCapacity field's value.\nfunc (s *ScanOutput) SetConsumedCapacity(v *ConsumedCapacity) *ScanOutput {\n\ts.ConsumedCapacity = v\n\treturn s\n}\n\n// SetCount sets the Count field's value.\nfunc (s *ScanOutput) SetCount(v int64) *ScanOutput {\n\ts.Count = &v\n\treturn s\n}\n\n// SetItems sets the Items field's value.\nfunc (s *ScanOutput) SetItems(v []map[string]*AttributeValue) *ScanOutput {\n\ts.Items = v\n\treturn s\n}\n\n// SetLastEvaluatedKey sets the LastEvaluatedKey field's value.\nfunc (s *ScanOutput) SetLastEvaluatedKey(v map[string]*AttributeValue) *ScanOutput {\n\ts.LastEvaluatedKey = v\n\treturn s\n}\n\n// SetScannedCount sets the ScannedCount field's value.\nfunc (s *ScanOutput) SetScannedCount(v int64) *ScanOutput {\n\ts.ScannedCount = &v\n\treturn s\n}\n\n// Contains the details of the table when the backup was created.\ntype SourceTableDetails struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Controls how you are charged for read and write throughput and how you manage\n\t// capacity. This setting can be changed later.\n\t//\n\t//    * PROVISIONED - Sets the read/write capacity mode to PROVISIONED. We recommend\n\t//    using PROVISIONED for predictable workloads.\n\t//\n\t//    * PAY_PER_REQUEST - Sets the read/write capacity mode to PAY_PER_REQUEST.\n\t//    We recommend using PAY_PER_REQUEST for unpredictable workloads.\n\tBillingMode *string `type:\"string\" enum:\"BillingMode\"`\n\n\t// Number of items in the table. Note that this is an approximate value.\n\tItemCount *int64 `type:\"long\"`\n\n\t// Schema of the table.\n\t//\n\t// KeySchema is a required field\n\tKeySchema []*KeySchemaElement `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// Read IOPs and Write IOPS on the table when the backup was created.\n\t//\n\t// ProvisionedThroughput is a required field\n\tProvisionedThroughput *ProvisionedThroughput `type:\"structure\" required:\"true\"`\n\n\t// ARN of the table for which backup was created.\n\tTableArn *string `type:\"string\"`\n\n\t// Time when the source table was created.\n\t//\n\t// TableCreationDateTime is a required field\n\tTableCreationDateTime *time.Time `type:\"timestamp\" required:\"true\"`\n\n\t// Unique identifier for the table for which the backup was created.\n\t//\n\t// TableId is a required field\n\tTableId *string `type:\"string\" required:\"true\"`\n\n\t// The name of the table for which the backup was created.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// Size of the table in bytes. Note that this is an approximate value.\n\tTableSizeBytes *int64 `type:\"long\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SourceTableDetails) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SourceTableDetails) GoString() string {\n\treturn s.String()\n}\n\n// SetBillingMode sets the BillingMode field's value.\nfunc (s *SourceTableDetails) SetBillingMode(v string) *SourceTableDetails {\n\ts.BillingMode = &v\n\treturn s\n}\n\n// SetItemCount sets the ItemCount field's value.\nfunc (s *SourceTableDetails) SetItemCount(v int64) *SourceTableDetails {\n\ts.ItemCount = &v\n\treturn s\n}\n\n// SetKeySchema sets the KeySchema field's value.\nfunc (s *SourceTableDetails) SetKeySchema(v []*KeySchemaElement) *SourceTableDetails {\n\ts.KeySchema = v\n\treturn s\n}\n\n// SetProvisionedThroughput sets the ProvisionedThroughput field's value.\nfunc (s *SourceTableDetails) SetProvisionedThroughput(v *ProvisionedThroughput) *SourceTableDetails {\n\ts.ProvisionedThroughput = v\n\treturn s\n}\n\n// SetTableArn sets the TableArn field's value.\nfunc (s *SourceTableDetails) SetTableArn(v string) *SourceTableDetails {\n\ts.TableArn = &v\n\treturn s\n}\n\n// SetTableCreationDateTime sets the TableCreationDateTime field's value.\nfunc (s *SourceTableDetails) SetTableCreationDateTime(v time.Time) *SourceTableDetails {\n\ts.TableCreationDateTime = &v\n\treturn s\n}\n\n// SetTableId sets the TableId field's value.\nfunc (s *SourceTableDetails) SetTableId(v string) *SourceTableDetails {\n\ts.TableId = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *SourceTableDetails) SetTableName(v string) *SourceTableDetails {\n\ts.TableName = &v\n\treturn s\n}\n\n// SetTableSizeBytes sets the TableSizeBytes field's value.\nfunc (s *SourceTableDetails) SetTableSizeBytes(v int64) *SourceTableDetails {\n\ts.TableSizeBytes = &v\n\treturn s\n}\n\n// Contains the details of the features enabled on the table when the backup\n// was created. For example, LSIs, GSIs, streams, TTL.\ntype SourceTableFeatureDetails struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the GSI properties for the table when the backup was created.\n\t// It includes the IndexName, KeySchema, Projection, and ProvisionedThroughput\n\t// for the GSIs on the table at the time of backup.\n\tGlobalSecondaryIndexes []*GlobalSecondaryIndexInfo `type:\"list\"`\n\n\t// Represents the LSI properties for the table when the backup was created.\n\t// It includes the IndexName, KeySchema and Projection for the LSIs on the table\n\t// at the time of backup.\n\tLocalSecondaryIndexes []*LocalSecondaryIndexInfo `type:\"list\"`\n\n\t// The description of the server-side encryption status on the table when the\n\t// backup was created.\n\tSSEDescription *SSEDescription `type:\"structure\"`\n\n\t// Stream settings on the table when the backup was created.\n\tStreamDescription *StreamSpecification `type:\"structure\"`\n\n\t// Time to Live settings on the table when the backup was created.\n\tTimeToLiveDescription *TimeToLiveDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SourceTableFeatureDetails) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SourceTableFeatureDetails) GoString() string {\n\treturn s.String()\n}\n\n// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.\nfunc (s *SourceTableFeatureDetails) SetGlobalSecondaryIndexes(v []*GlobalSecondaryIndexInfo) *SourceTableFeatureDetails {\n\ts.GlobalSecondaryIndexes = v\n\treturn s\n}\n\n// SetLocalSecondaryIndexes sets the LocalSecondaryIndexes field's value.\nfunc (s *SourceTableFeatureDetails) SetLocalSecondaryIndexes(v []*LocalSecondaryIndexInfo) *SourceTableFeatureDetails {\n\ts.LocalSecondaryIndexes = v\n\treturn s\n}\n\n// SetSSEDescription sets the SSEDescription field's value.\nfunc (s *SourceTableFeatureDetails) SetSSEDescription(v *SSEDescription) *SourceTableFeatureDetails {\n\ts.SSEDescription = v\n\treturn s\n}\n\n// SetStreamDescription sets the StreamDescription field's value.\nfunc (s *SourceTableFeatureDetails) SetStreamDescription(v *StreamSpecification) *SourceTableFeatureDetails {\n\ts.StreamDescription = v\n\treturn s\n}\n\n// SetTimeToLiveDescription sets the TimeToLiveDescription field's value.\nfunc (s *SourceTableFeatureDetails) SetTimeToLiveDescription(v *TimeToLiveDescription) *SourceTableFeatureDetails {\n\ts.TimeToLiveDescription = v\n\treturn s\n}\n\n// Represents the DynamoDB Streams configuration for a table in DynamoDB.\ntype StreamSpecification struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Indicates whether DynamoDB Streams is enabled (true) or disabled (false)\n\t// on the table.\n\t//\n\t// StreamEnabled is a required field\n\tStreamEnabled *bool `type:\"boolean\" required:\"true\"`\n\n\t// When an item in the table is modified, StreamViewType determines what information\n\t// is written to the stream for this table. Valid values for StreamViewType\n\t// are:\n\t//\n\t//    * KEYS_ONLY - Only the key attributes of the modified item are written\n\t//    to the stream.\n\t//\n\t//    * NEW_IMAGE - The entire item, as it appears after it was modified, is\n\t//    written to the stream.\n\t//\n\t//    * OLD_IMAGE - The entire item, as it appeared before it was modified,\n\t//    is written to the stream.\n\t//\n\t//    * NEW_AND_OLD_IMAGES - Both the new and the old item images of the item\n\t//    are written to the stream.\n\tStreamViewType *string `type:\"string\" enum:\"StreamViewType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StreamSpecification) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StreamSpecification) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *StreamSpecification) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"StreamSpecification\"}\n\tif s.StreamEnabled == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"StreamEnabled\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetStreamEnabled sets the StreamEnabled field's value.\nfunc (s *StreamSpecification) SetStreamEnabled(v bool) *StreamSpecification {\n\ts.StreamEnabled = &v\n\treturn s\n}\n\n// SetStreamViewType sets the StreamViewType field's value.\nfunc (s *StreamSpecification) SetStreamViewType(v string) *StreamSpecification {\n\ts.StreamViewType = &v\n\treturn s\n}\n\n// A target table with the specified name already exists.\ntype TableAlreadyExistsException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableAlreadyExistsException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableAlreadyExistsException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorTableAlreadyExistsException(v protocol.ResponseMetadata) error {\n\treturn &TableAlreadyExistsException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *TableAlreadyExistsException) Code() string {\n\treturn \"TableAlreadyExistsException\"\n}\n\n// Message returns the exception's message.\nfunc (s *TableAlreadyExistsException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *TableAlreadyExistsException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *TableAlreadyExistsException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *TableAlreadyExistsException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *TableAlreadyExistsException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Represents the auto scaling configuration for a global table.\ntype TableAutoScalingDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents replicas of the global table.\n\tReplicas []*ReplicaAutoScalingDescription `type:\"list\"`\n\n\t// The name of the table.\n\tTableName *string `min:\"3\" type:\"string\"`\n\n\t// The current state of the table:\n\t//\n\t//    * CREATING - The table is being created.\n\t//\n\t//    * UPDATING - The table is being updated.\n\t//\n\t//    * DELETING - The table is being deleted.\n\t//\n\t//    * ACTIVE - The table is ready for use.\n\tTableStatus *string `type:\"string\" enum:\"TableStatus\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableAutoScalingDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableAutoScalingDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetReplicas sets the Replicas field's value.\nfunc (s *TableAutoScalingDescription) SetReplicas(v []*ReplicaAutoScalingDescription) *TableAutoScalingDescription {\n\ts.Replicas = v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *TableAutoScalingDescription) SetTableName(v string) *TableAutoScalingDescription {\n\ts.TableName = &v\n\treturn s\n}\n\n// SetTableStatus sets the TableStatus field's value.\nfunc (s *TableAutoScalingDescription) SetTableStatus(v string) *TableAutoScalingDescription {\n\ts.TableStatus = &v\n\treturn s\n}\n\n// Contains details of the table class.\ntype TableClassSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The date and time at which the table class was last updated.\n\tLastUpdateDateTime *time.Time `type:\"timestamp\"`\n\n\t// The table class of the specified table. Valid values are STANDARD and STANDARD_INFREQUENT_ACCESS.\n\tTableClass *string `type:\"string\" enum:\"TableClass\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableClassSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableClassSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetLastUpdateDateTime sets the LastUpdateDateTime field's value.\nfunc (s *TableClassSummary) SetLastUpdateDateTime(v time.Time) *TableClassSummary {\n\ts.LastUpdateDateTime = &v\n\treturn s\n}\n\n// SetTableClass sets the TableClass field's value.\nfunc (s *TableClassSummary) SetTableClass(v string) *TableClassSummary {\n\ts.TableClass = &v\n\treturn s\n}\n\n// The parameters for the table created as part of the import operation.\ntype TableCreationParameters struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The attributes of the table created as part of the import operation.\n\t//\n\t// AttributeDefinitions is a required field\n\tAttributeDefinitions []*AttributeDefinition `type:\"list\" required:\"true\"`\n\n\t// The billing mode for provisioning the table created as part of the import\n\t// operation.\n\tBillingMode *string `type:\"string\" enum:\"BillingMode\"`\n\n\t// The Global Secondary Indexes (GSI) of the table to be created as part of\n\t// the import operation.\n\tGlobalSecondaryIndexes []*GlobalSecondaryIndex `type:\"list\"`\n\n\t// The primary key and option sort key of the table created as part of the import\n\t// operation.\n\t//\n\t// KeySchema is a required field\n\tKeySchema []*KeySchemaElement `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// Represents the provisioned throughput settings for a specified table or index.\n\t// The settings can be modified using the UpdateTable operation.\n\t//\n\t// For current minimum and maximum provisioned throughput values, see Service,\n\t// Account, and Table Quotas (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tProvisionedThroughput *ProvisionedThroughput `type:\"structure\"`\n\n\t// Represents the settings used to enable server-side encryption.\n\tSSESpecification *SSESpecification `type:\"structure\"`\n\n\t// The name of the table created as part of the import operation.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableCreationParameters) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableCreationParameters) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *TableCreationParameters) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"TableCreationParameters\"}\n\tif s.AttributeDefinitions == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AttributeDefinitions\"))\n\t}\n\tif s.KeySchema == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"KeySchema\"))\n\t}\n\tif s.KeySchema != nil && len(s.KeySchema) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"KeySchema\", 1))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\tif s.AttributeDefinitions != nil {\n\t\tfor i, v := range s.AttributeDefinitions {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"AttributeDefinitions\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.GlobalSecondaryIndexes != nil {\n\t\tfor i, v := range s.GlobalSecondaryIndexes {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"GlobalSecondaryIndexes\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.KeySchema != nil {\n\t\tfor i, v := range s.KeySchema {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"KeySchema\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ProvisionedThroughput != nil {\n\t\tif err := s.ProvisionedThroughput.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedThroughput\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttributeDefinitions sets the AttributeDefinitions field's value.\nfunc (s *TableCreationParameters) SetAttributeDefinitions(v []*AttributeDefinition) *TableCreationParameters {\n\ts.AttributeDefinitions = v\n\treturn s\n}\n\n// SetBillingMode sets the BillingMode field's value.\nfunc (s *TableCreationParameters) SetBillingMode(v string) *TableCreationParameters {\n\ts.BillingMode = &v\n\treturn s\n}\n\n// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.\nfunc (s *TableCreationParameters) SetGlobalSecondaryIndexes(v []*GlobalSecondaryIndex) *TableCreationParameters {\n\ts.GlobalSecondaryIndexes = v\n\treturn s\n}\n\n// SetKeySchema sets the KeySchema field's value.\nfunc (s *TableCreationParameters) SetKeySchema(v []*KeySchemaElement) *TableCreationParameters {\n\ts.KeySchema = v\n\treturn s\n}\n\n// SetProvisionedThroughput sets the ProvisionedThroughput field's value.\nfunc (s *TableCreationParameters) SetProvisionedThroughput(v *ProvisionedThroughput) *TableCreationParameters {\n\ts.ProvisionedThroughput = v\n\treturn s\n}\n\n// SetSSESpecification sets the SSESpecification field's value.\nfunc (s *TableCreationParameters) SetSSESpecification(v *SSESpecification) *TableCreationParameters {\n\ts.SSESpecification = v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *TableCreationParameters) SetTableName(v string) *TableCreationParameters {\n\ts.TableName = &v\n\treturn s\n}\n\n// Represents the properties of a table.\ntype TableDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Contains information about the table archive.\n\tArchivalSummary *ArchivalSummary `type:\"structure\"`\n\n\t// An array of AttributeDefinition objects. Each of these objects describes\n\t// one attribute in the table and index key schema.\n\t//\n\t// Each AttributeDefinition object in this array is composed of:\n\t//\n\t//    * AttributeName - The name of the attribute.\n\t//\n\t//    * AttributeType - The data type for the attribute.\n\tAttributeDefinitions []*AttributeDefinition `type:\"list\"`\n\n\t// Contains the details for the read/write capacity mode.\n\tBillingModeSummary *BillingModeSummary `type:\"structure\"`\n\n\t// The date and time when the table was created, in UNIX epoch time (http://www.epochconverter.com/)\n\t// format.\n\tCreationDateTime *time.Time `type:\"timestamp\"`\n\n\t// Indicates whether deletion protection is enabled (true) or disabled (false)\n\t// on the table.\n\tDeletionProtectionEnabled *bool `type:\"boolean\"`\n\n\t// The global secondary indexes, if any, on the table. Each index is scoped\n\t// to a given partition key value. Each element is composed of:\n\t//\n\t//    * Backfilling - If true, then the index is currently in the backfilling\n\t//    phase. Backfilling occurs only when a new global secondary index is added\n\t//    to the table. It is the process by which DynamoDB populates the new index\n\t//    with data from the table. (This attribute does not appear for indexes\n\t//    that were created during a CreateTable operation.) You can delete an index\n\t//    that is being created during the Backfilling phase when IndexStatus is\n\t//    set to CREATING and Backfilling is true. You can't delete the index that\n\t//    is being created when IndexStatus is set to CREATING and Backfilling is\n\t//    false. (This attribute does not appear for indexes that were created during\n\t//    a CreateTable operation.)\n\t//\n\t//    * IndexName - The name of the global secondary index.\n\t//\n\t//    * IndexSizeBytes - The total size of the global secondary index, in bytes.\n\t//    DynamoDB updates this value approximately every six hours. Recent changes\n\t//    might not be reflected in this value.\n\t//\n\t//    * IndexStatus - The current status of the global secondary index: CREATING\n\t//    - The index is being created. UPDATING - The index is being updated. DELETING\n\t//    - The index is being deleted. ACTIVE - The index is ready for use.\n\t//\n\t//    * ItemCount - The number of items in the global secondary index. DynamoDB\n\t//    updates this value approximately every six hours. Recent changes might\n\t//    not be reflected in this value.\n\t//\n\t//    * KeySchema - Specifies the complete index key schema. The attribute names\n\t//    in the key schema must be between 1 and 255 characters (inclusive). The\n\t//    key schema must begin with the same partition key as the table.\n\t//\n\t//    * Projection - Specifies attributes that are copied (projected) from the\n\t//    table into the index. These are in addition to the primary key attributes\n\t//    and index key attributes, which are automatically projected. Each attribute\n\t//    specification is composed of: ProjectionType - One of the following: KEYS_ONLY\n\t//    - Only the index and primary keys are projected into the index. INCLUDE\n\t//    - In addition to the attributes described in KEYS_ONLY, the secondary\n\t//    index will include other non-key attributes that you specify. ALL - All\n\t//    of the table attributes are projected into the index. NonKeyAttributes\n\t//    - A list of one or more non-key attribute names that are projected into\n\t//    the secondary index. The total count of attributes provided in NonKeyAttributes,\n\t//    summed across all of the secondary indexes, must not exceed 100. If you\n\t//    project the same attribute into two different indexes, this counts as\n\t//    two distinct attributes when determining the total.\n\t//\n\t//    * ProvisionedThroughput - The provisioned throughput settings for the\n\t//    global secondary index, consisting of read and write capacity units, along\n\t//    with data about increases and decreases.\n\t//\n\t// If the table is in the DELETING state, no information about indexes will\n\t// be returned.\n\tGlobalSecondaryIndexes []*GlobalSecondaryIndexDescription `type:\"list\"`\n\n\t// Represents the version of global tables (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html)\n\t// in use, if the table is replicated across Amazon Web Services Regions.\n\tGlobalTableVersion *string `type:\"string\"`\n\n\t// The number of items in the specified table. DynamoDB updates this value approximately\n\t// every six hours. Recent changes might not be reflected in this value.\n\tItemCount *int64 `type:\"long\"`\n\n\t// The primary key structure for the table. Each KeySchemaElement consists of:\n\t//\n\t//    * AttributeName - The name of the attribute.\n\t//\n\t//    * KeyType - The role of the attribute: HASH - partition key RANGE - sort\n\t//    key The partition key of an item is also known as its hash attribute.\n\t//    The term \"hash attribute\" derives from DynamoDB's usage of an internal\n\t//    hash function to evenly distribute data items across partitions, based\n\t//    on their partition key values. The sort key of an item is also known as\n\t//    its range attribute. The term \"range attribute\" derives from the way DynamoDB\n\t//    stores items with the same partition key physically close together, in\n\t//    sorted order by the sort key value.\n\t//\n\t// For more information about primary keys, see Primary Key (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModelPrimaryKey)\n\t// in the Amazon DynamoDB Developer Guide.\n\tKeySchema []*KeySchemaElement `min:\"1\" type:\"list\"`\n\n\t// The Amazon Resource Name (ARN) that uniquely identifies the latest stream\n\t// for this table.\n\tLatestStreamArn *string `min:\"37\" type:\"string\"`\n\n\t// A timestamp, in ISO 8601 format, for this stream.\n\t//\n\t// Note that LatestStreamLabel is not a unique identifier for the stream, because\n\t// it is possible that a stream from another table might have the same timestamp.\n\t// However, the combination of the following three elements is guaranteed to\n\t// be unique:\n\t//\n\t//    * Amazon Web Services customer ID\n\t//\n\t//    * Table name\n\t//\n\t//    * StreamLabel\n\tLatestStreamLabel *string `type:\"string\"`\n\n\t// Represents one or more local secondary indexes on the table. Each index is\n\t// scoped to a given partition key value. Tables with one or more local secondary\n\t// indexes are subject to an item collection size limit, where the amount of\n\t// data within a given item collection cannot exceed 10 GB. Each element is\n\t// composed of:\n\t//\n\t//    * IndexName - The name of the local secondary index.\n\t//\n\t//    * KeySchema - Specifies the complete index key schema. The attribute names\n\t//    in the key schema must be between 1 and 255 characters (inclusive). The\n\t//    key schema must begin with the same partition key as the table.\n\t//\n\t//    * Projection - Specifies attributes that are copied (projected) from the\n\t//    table into the index. These are in addition to the primary key attributes\n\t//    and index key attributes, which are automatically projected. Each attribute\n\t//    specification is composed of: ProjectionType - One of the following: KEYS_ONLY\n\t//    - Only the index and primary keys are projected into the index. INCLUDE\n\t//    - Only the specified table attributes are projected into the index. The\n\t//    list of projected attributes is in NonKeyAttributes. ALL - All of the\n\t//    table attributes are projected into the index. NonKeyAttributes - A list\n\t//    of one or more non-key attribute names that are projected into the secondary\n\t//    index. The total count of attributes provided in NonKeyAttributes, summed\n\t//    across all of the secondary indexes, must not exceed 100. If you project\n\t//    the same attribute into two different indexes, this counts as two distinct\n\t//    attributes when determining the total.\n\t//\n\t//    * IndexSizeBytes - Represents the total size of the index, in bytes. DynamoDB\n\t//    updates this value approximately every six hours. Recent changes might\n\t//    not be reflected in this value.\n\t//\n\t//    * ItemCount - Represents the number of items in the index. DynamoDB updates\n\t//    this value approximately every six hours. Recent changes might not be\n\t//    reflected in this value.\n\t//\n\t// If the table is in the DELETING state, no information about indexes will\n\t// be returned.\n\tLocalSecondaryIndexes []*LocalSecondaryIndexDescription `type:\"list\"`\n\n\t// The provisioned throughput settings for the table, consisting of read and\n\t// write capacity units, along with data about increases and decreases.\n\tProvisionedThroughput *ProvisionedThroughputDescription `type:\"structure\"`\n\n\t// Represents replicas of the table.\n\tReplicas []*ReplicaDescription `type:\"list\"`\n\n\t// Contains details for the restore.\n\tRestoreSummary *RestoreSummary `type:\"structure\"`\n\n\t// The description of the server-side encryption status on the specified table.\n\tSSEDescription *SSEDescription `type:\"structure\"`\n\n\t// The current DynamoDB Streams configuration for the table.\n\tStreamSpecification *StreamSpecification `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) that uniquely identifies the table.\n\tTableArn *string `type:\"string\"`\n\n\t// Contains details of the table class.\n\tTableClassSummary *TableClassSummary `type:\"structure\"`\n\n\t// Unique identifier for the table for which the backup was created.\n\tTableId *string `type:\"string\"`\n\n\t// The name of the table.\n\tTableName *string `min:\"3\" type:\"string\"`\n\n\t// The total size of the specified table, in bytes. DynamoDB updates this value\n\t// approximately every six hours. Recent changes might not be reflected in this\n\t// value.\n\tTableSizeBytes *int64 `type:\"long\"`\n\n\t// The current state of the table:\n\t//\n\t//    * CREATING - The table is being created.\n\t//\n\t//    * UPDATING - The table/index configuration is being updated. The table/index\n\t//    remains available for data operations when UPDATING.\n\t//\n\t//    * DELETING - The table is being deleted.\n\t//\n\t//    * ACTIVE - The table is ready for use.\n\t//\n\t//    * INACCESSIBLE_ENCRYPTION_CREDENTIALS - The KMS key used to encrypt the\n\t//    table in inaccessible. Table operations may fail due to failure to use\n\t//    the KMS key. DynamoDB will initiate the table archival process when a\n\t//    table's KMS key remains inaccessible for more than seven days.\n\t//\n\t//    * ARCHIVING - The table is being archived. Operations are not allowed\n\t//    until archival is complete.\n\t//\n\t//    * ARCHIVED - The table has been archived. See the ArchivalReason for more\n\t//    information.\n\tTableStatus *string `type:\"string\" enum:\"TableStatus\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetArchivalSummary sets the ArchivalSummary field's value.\nfunc (s *TableDescription) SetArchivalSummary(v *ArchivalSummary) *TableDescription {\n\ts.ArchivalSummary = v\n\treturn s\n}\n\n// SetAttributeDefinitions sets the AttributeDefinitions field's value.\nfunc (s *TableDescription) SetAttributeDefinitions(v []*AttributeDefinition) *TableDescription {\n\ts.AttributeDefinitions = v\n\treturn s\n}\n\n// SetBillingModeSummary sets the BillingModeSummary field's value.\nfunc (s *TableDescription) SetBillingModeSummary(v *BillingModeSummary) *TableDescription {\n\ts.BillingModeSummary = v\n\treturn s\n}\n\n// SetCreationDateTime sets the CreationDateTime field's value.\nfunc (s *TableDescription) SetCreationDateTime(v time.Time) *TableDescription {\n\ts.CreationDateTime = &v\n\treturn s\n}\n\n// SetDeletionProtectionEnabled sets the DeletionProtectionEnabled field's value.\nfunc (s *TableDescription) SetDeletionProtectionEnabled(v bool) *TableDescription {\n\ts.DeletionProtectionEnabled = &v\n\treturn s\n}\n\n// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.\nfunc (s *TableDescription) SetGlobalSecondaryIndexes(v []*GlobalSecondaryIndexDescription) *TableDescription {\n\ts.GlobalSecondaryIndexes = v\n\treturn s\n}\n\n// SetGlobalTableVersion sets the GlobalTableVersion field's value.\nfunc (s *TableDescription) SetGlobalTableVersion(v string) *TableDescription {\n\ts.GlobalTableVersion = &v\n\treturn s\n}\n\n// SetItemCount sets the ItemCount field's value.\nfunc (s *TableDescription) SetItemCount(v int64) *TableDescription {\n\ts.ItemCount = &v\n\treturn s\n}\n\n// SetKeySchema sets the KeySchema field's value.\nfunc (s *TableDescription) SetKeySchema(v []*KeySchemaElement) *TableDescription {\n\ts.KeySchema = v\n\treturn s\n}\n\n// SetLatestStreamArn sets the LatestStreamArn field's value.\nfunc (s *TableDescription) SetLatestStreamArn(v string) *TableDescription {\n\ts.LatestStreamArn = &v\n\treturn s\n}\n\n// SetLatestStreamLabel sets the LatestStreamLabel field's value.\nfunc (s *TableDescription) SetLatestStreamLabel(v string) *TableDescription {\n\ts.LatestStreamLabel = &v\n\treturn s\n}\n\n// SetLocalSecondaryIndexes sets the LocalSecondaryIndexes field's value.\nfunc (s *TableDescription) SetLocalSecondaryIndexes(v []*LocalSecondaryIndexDescription) *TableDescription {\n\ts.LocalSecondaryIndexes = v\n\treturn s\n}\n\n// SetProvisionedThroughput sets the ProvisionedThroughput field's value.\nfunc (s *TableDescription) SetProvisionedThroughput(v *ProvisionedThroughputDescription) *TableDescription {\n\ts.ProvisionedThroughput = v\n\treturn s\n}\n\n// SetReplicas sets the Replicas field's value.\nfunc (s *TableDescription) SetReplicas(v []*ReplicaDescription) *TableDescription {\n\ts.Replicas = v\n\treturn s\n}\n\n// SetRestoreSummary sets the RestoreSummary field's value.\nfunc (s *TableDescription) SetRestoreSummary(v *RestoreSummary) *TableDescription {\n\ts.RestoreSummary = v\n\treturn s\n}\n\n// SetSSEDescription sets the SSEDescription field's value.\nfunc (s *TableDescription) SetSSEDescription(v *SSEDescription) *TableDescription {\n\ts.SSEDescription = v\n\treturn s\n}\n\n// SetStreamSpecification sets the StreamSpecification field's value.\nfunc (s *TableDescription) SetStreamSpecification(v *StreamSpecification) *TableDescription {\n\ts.StreamSpecification = v\n\treturn s\n}\n\n// SetTableArn sets the TableArn field's value.\nfunc (s *TableDescription) SetTableArn(v string) *TableDescription {\n\ts.TableArn = &v\n\treturn s\n}\n\n// SetTableClassSummary sets the TableClassSummary field's value.\nfunc (s *TableDescription) SetTableClassSummary(v *TableClassSummary) *TableDescription {\n\ts.TableClassSummary = v\n\treturn s\n}\n\n// SetTableId sets the TableId field's value.\nfunc (s *TableDescription) SetTableId(v string) *TableDescription {\n\ts.TableId = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *TableDescription) SetTableName(v string) *TableDescription {\n\ts.TableName = &v\n\treturn s\n}\n\n// SetTableSizeBytes sets the TableSizeBytes field's value.\nfunc (s *TableDescription) SetTableSizeBytes(v int64) *TableDescription {\n\ts.TableSizeBytes = &v\n\treturn s\n}\n\n// SetTableStatus sets the TableStatus field's value.\nfunc (s *TableDescription) SetTableStatus(v string) *TableDescription {\n\ts.TableStatus = &v\n\treturn s\n}\n\n// A target table with the specified name is either being created or deleted.\ntype TableInUseException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableInUseException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableInUseException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorTableInUseException(v protocol.ResponseMetadata) error {\n\treturn &TableInUseException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *TableInUseException) Code() string {\n\treturn \"TableInUseException\"\n}\n\n// Message returns the exception's message.\nfunc (s *TableInUseException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *TableInUseException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *TableInUseException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *TableInUseException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *TableInUseException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// A source table with the name TableName does not currently exist within the\n// subscriber's account or the subscriber is operating in the wrong Amazon Web\n// Services Region.\ntype TableNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TableNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorTableNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &TableNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *TableNotFoundException) Code() string {\n\treturn \"TableNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *TableNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *TableNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *TableNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *TableNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *TableNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Describes a tag. A tag is a key-value pair. You can add up to 50 tags to\n// a single DynamoDB table.\n//\n// Amazon Web Services-assigned tag names and values are automatically assigned\n// the aws: prefix, which the user cannot assign. Amazon Web Services-assigned\n// tag names do not count towards the tag limit of 50. User-assigned tag names\n// have the prefix user: in the Cost Allocation Report. You cannot backdate\n// the application of a tag.\n//\n// For an overview on tagging DynamoDB resources, see Tagging for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)\n// in the Amazon DynamoDB Developer Guide.\ntype Tag struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The key of the tag. Tag keys are case sensitive. Each DynamoDB table can\n\t// only have up to one tag with the same key. If you try to add an existing\n\t// tag (same key), the existing tag value will be updated to the new value.\n\t//\n\t// Key is a required field\n\tKey *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The value of the tag. Tag values are case-sensitive and can be null.\n\t//\n\t// Value is a required field\n\tValue *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Tag) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Tag) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *Tag) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"Tag\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\tif s.Value == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Value\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *Tag) SetKey(v string) *Tag {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *Tag) SetValue(v string) *Tag {\n\ts.Value = &v\n\treturn s\n}\n\ntype TagResourceInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Identifies the Amazon DynamoDB resource to which tags should be added. This\n\t// value is an Amazon Resource Name (ARN).\n\t//\n\t// ResourceArn is a required field\n\tResourceArn *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The tags to be assigned to the Amazon DynamoDB resource.\n\t//\n\t// Tags is a required field\n\tTags []*Tag `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TagResourceInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TagResourceInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *TagResourceInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"TagResourceInput\"}\n\tif s.ResourceArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceArn\"))\n\t}\n\tif s.ResourceArn != nil && len(*s.ResourceArn) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ResourceArn\", 1))\n\t}\n\tif s.Tags == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Tags\"))\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetResourceArn sets the ResourceArn field's value.\nfunc (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {\n\ts.ResourceArn = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *TagResourceInput) SetTags(v []*Tag) *TagResourceInput {\n\ts.Tags = v\n\treturn s\n}\n\ntype TagResourceOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TagResourceOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TagResourceOutput) GoString() string {\n\treturn s.String()\n}\n\n// The description of the Time to Live (TTL) status on the specified table.\ntype TimeToLiveDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the TTL attribute for items in the table.\n\tAttributeName *string `min:\"1\" type:\"string\"`\n\n\t// The TTL status for the table.\n\tTimeToLiveStatus *string `type:\"string\" enum:\"TimeToLiveStatus\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TimeToLiveDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TimeToLiveDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetAttributeName sets the AttributeName field's value.\nfunc (s *TimeToLiveDescription) SetAttributeName(v string) *TimeToLiveDescription {\n\ts.AttributeName = &v\n\treturn s\n}\n\n// SetTimeToLiveStatus sets the TimeToLiveStatus field's value.\nfunc (s *TimeToLiveDescription) SetTimeToLiveStatus(v string) *TimeToLiveDescription {\n\ts.TimeToLiveStatus = &v\n\treturn s\n}\n\n// Represents the settings used to enable or disable Time to Live (TTL) for\n// the specified table.\ntype TimeToLiveSpecification struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the TTL attribute used to store the expiration time for items\n\t// in the table.\n\t//\n\t// AttributeName is a required field\n\tAttributeName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// Indicates whether TTL is to be enabled (true) or disabled (false) on the\n\t// table.\n\t//\n\t// Enabled is a required field\n\tEnabled *bool `type:\"boolean\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TimeToLiveSpecification) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TimeToLiveSpecification) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *TimeToLiveSpecification) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"TimeToLiveSpecification\"}\n\tif s.AttributeName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AttributeName\"))\n\t}\n\tif s.AttributeName != nil && len(*s.AttributeName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AttributeName\", 1))\n\t}\n\tif s.Enabled == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Enabled\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttributeName sets the AttributeName field's value.\nfunc (s *TimeToLiveSpecification) SetAttributeName(v string) *TimeToLiveSpecification {\n\ts.AttributeName = &v\n\treturn s\n}\n\n// SetEnabled sets the Enabled field's value.\nfunc (s *TimeToLiveSpecification) SetEnabled(v bool) *TimeToLiveSpecification {\n\ts.Enabled = &v\n\treturn s\n}\n\n// Specifies an item to be retrieved as part of the transaction.\ntype TransactGetItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Contains the primary key that identifies the item to get, together with the\n\t// name of the table that contains the item, and optionally the specific attributes\n\t// of the item to retrieve.\n\t//\n\t// Get is a required field\n\tGet *Get `type:\"structure\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactGetItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactGetItem) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *TransactGetItem) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"TransactGetItem\"}\n\tif s.Get == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Get\"))\n\t}\n\tif s.Get != nil {\n\t\tif err := s.Get.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Get\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetGet sets the Get field's value.\nfunc (s *TransactGetItem) SetGet(v *Get) *TransactGetItem {\n\ts.Get = v\n\treturn s\n}\n\ntype TransactGetItemsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A value of TOTAL causes consumed capacity information to be returned, and\n\t// a value of NONE prevents that information from being returned. No other value\n\t// is valid.\n\tReturnConsumedCapacity *string `type:\"string\" enum:\"ReturnConsumedCapacity\"`\n\n\t// An ordered array of up to 100 TransactGetItem objects, each of which contains\n\t// a Get structure.\n\t//\n\t// TransactItems is a required field\n\tTransactItems []*TransactGetItem `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactGetItemsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactGetItemsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *TransactGetItemsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"TransactGetItemsInput\"}\n\tif s.TransactItems == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TransactItems\"))\n\t}\n\tif s.TransactItems != nil && len(s.TransactItems) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TransactItems\", 1))\n\t}\n\tif s.TransactItems != nil {\n\t\tfor i, v := range s.TransactItems {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"TransactItems\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.\nfunc (s *TransactGetItemsInput) SetReturnConsumedCapacity(v string) *TransactGetItemsInput {\n\ts.ReturnConsumedCapacity = &v\n\treturn s\n}\n\n// SetTransactItems sets the TransactItems field's value.\nfunc (s *TransactGetItemsInput) SetTransactItems(v []*TransactGetItem) *TransactGetItemsInput {\n\ts.TransactItems = v\n\treturn s\n}\n\ntype TransactGetItemsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// If the ReturnConsumedCapacity value was TOTAL, this is an array of ConsumedCapacity\n\t// objects, one for each table addressed by TransactGetItem objects in the TransactItems\n\t// parameter. These ConsumedCapacity objects report the read-capacity units\n\t// consumed by the TransactGetItems call in that table.\n\tConsumedCapacity []*ConsumedCapacity `type:\"list\"`\n\n\t// An ordered array of up to 100 ItemResponse objects, each of which corresponds\n\t// to the TransactGetItem object in the same position in the TransactItems array.\n\t// Each ItemResponse object contains a Map of the name-value pairs that are\n\t// the projected attributes of the requested item.\n\t//\n\t// If a requested item could not be retrieved, the corresponding ItemResponse\n\t// object is Null, or if the requested item has no projected attributes, the\n\t// corresponding ItemResponse object is an empty Map.\n\tResponses []*ItemResponse `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactGetItemsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactGetItemsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetConsumedCapacity sets the ConsumedCapacity field's value.\nfunc (s *TransactGetItemsOutput) SetConsumedCapacity(v []*ConsumedCapacity) *TransactGetItemsOutput {\n\ts.ConsumedCapacity = v\n\treturn s\n}\n\n// SetResponses sets the Responses field's value.\nfunc (s *TransactGetItemsOutput) SetResponses(v []*ItemResponse) *TransactGetItemsOutput {\n\ts.Responses = v\n\treturn s\n}\n\n// A list of requests that can perform update, put, delete, or check operations\n// on multiple items in one or more tables atomically.\ntype TransactWriteItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A request to perform a check item operation.\n\tConditionCheck *ConditionCheck `type:\"structure\"`\n\n\t// A request to perform a DeleteItem operation.\n\tDelete *Delete `type:\"structure\"`\n\n\t// A request to perform a PutItem operation.\n\tPut *Put `type:\"structure\"`\n\n\t// A request to perform an UpdateItem operation.\n\tUpdate *Update `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactWriteItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactWriteItem) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *TransactWriteItem) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"TransactWriteItem\"}\n\tif s.ConditionCheck != nil {\n\t\tif err := s.ConditionCheck.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ConditionCheck\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Delete != nil {\n\t\tif err := s.Delete.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Delete\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Put != nil {\n\t\tif err := s.Put.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Put\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Update != nil {\n\t\tif err := s.Update.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Update\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetConditionCheck sets the ConditionCheck field's value.\nfunc (s *TransactWriteItem) SetConditionCheck(v *ConditionCheck) *TransactWriteItem {\n\ts.ConditionCheck = v\n\treturn s\n}\n\n// SetDelete sets the Delete field's value.\nfunc (s *TransactWriteItem) SetDelete(v *Delete) *TransactWriteItem {\n\ts.Delete = v\n\treturn s\n}\n\n// SetPut sets the Put field's value.\nfunc (s *TransactWriteItem) SetPut(v *Put) *TransactWriteItem {\n\ts.Put = v\n\treturn s\n}\n\n// SetUpdate sets the Update field's value.\nfunc (s *TransactWriteItem) SetUpdate(v *Update) *TransactWriteItem {\n\ts.Update = v\n\treturn s\n}\n\ntype TransactWriteItemsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Providing a ClientRequestToken makes the call to TransactWriteItems idempotent,\n\t// meaning that multiple identical calls have the same effect as one single\n\t// call.\n\t//\n\t// Although multiple identical calls using the same client request token produce\n\t// the same result on the server (no side effects), the responses to the calls\n\t// might not be the same. If the ReturnConsumedCapacity parameter is set, then\n\t// the initial TransactWriteItems call returns the amount of write capacity\n\t// units consumed in making the changes. Subsequent TransactWriteItems calls\n\t// with the same client token return the number of read capacity units consumed\n\t// in reading the item.\n\t//\n\t// A client request token is valid for 10 minutes after the first request that\n\t// uses it is completed. After 10 minutes, any request with the same client\n\t// token is treated as a new request. Do not resubmit the same request with\n\t// the same client token for more than 10 minutes, or the result might not be\n\t// idempotent.\n\t//\n\t// If you submit a request with the same client token but a change in other\n\t// parameters within the 10-minute idempotency window, DynamoDB returns an IdempotentParameterMismatch\n\t// exception.\n\tClientRequestToken *string `min:\"1\" type:\"string\" idempotencyToken:\"true\"`\n\n\t// Determines the level of detail about either provisioned or on-demand throughput\n\t// consumption that is returned in the response:\n\t//\n\t//    * INDEXES - The response includes the aggregate ConsumedCapacity for the\n\t//    operation, together with ConsumedCapacity for each table and secondary\n\t//    index that was accessed. Note that some operations, such as GetItem and\n\t//    BatchGetItem, do not access any indexes at all. In these cases, specifying\n\t//    INDEXES will only return ConsumedCapacity information for table(s).\n\t//\n\t//    * TOTAL - The response includes only the aggregate ConsumedCapacity for\n\t//    the operation.\n\t//\n\t//    * NONE - No ConsumedCapacity details are included in the response.\n\tReturnConsumedCapacity *string `type:\"string\" enum:\"ReturnConsumedCapacity\"`\n\n\t// Determines whether item collection metrics are returned. If set to SIZE,\n\t// the response includes statistics about item collections (if any), that were\n\t// modified during the operation and are returned in the response. If set to\n\t// NONE (the default), no statistics are returned.\n\tReturnItemCollectionMetrics *string `type:\"string\" enum:\"ReturnItemCollectionMetrics\"`\n\n\t// An ordered array of up to 100 TransactWriteItem objects, each of which contains\n\t// a ConditionCheck, Put, Update, or Delete object. These can operate on items\n\t// in different tables, but the tables must reside in the same Amazon Web Services\n\t// account and Region, and no two of them can operate on the same item.\n\t//\n\t// TransactItems is a required field\n\tTransactItems []*TransactWriteItem `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactWriteItemsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactWriteItemsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *TransactWriteItemsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"TransactWriteItemsInput\"}\n\tif s.ClientRequestToken != nil && len(*s.ClientRequestToken) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ClientRequestToken\", 1))\n\t}\n\tif s.TransactItems == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TransactItems\"))\n\t}\n\tif s.TransactItems != nil && len(s.TransactItems) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TransactItems\", 1))\n\t}\n\tif s.TransactItems != nil {\n\t\tfor i, v := range s.TransactItems {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"TransactItems\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetClientRequestToken sets the ClientRequestToken field's value.\nfunc (s *TransactWriteItemsInput) SetClientRequestToken(v string) *TransactWriteItemsInput {\n\ts.ClientRequestToken = &v\n\treturn s\n}\n\n// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.\nfunc (s *TransactWriteItemsInput) SetReturnConsumedCapacity(v string) *TransactWriteItemsInput {\n\ts.ReturnConsumedCapacity = &v\n\treturn s\n}\n\n// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.\nfunc (s *TransactWriteItemsInput) SetReturnItemCollectionMetrics(v string) *TransactWriteItemsInput {\n\ts.ReturnItemCollectionMetrics = &v\n\treturn s\n}\n\n// SetTransactItems sets the TransactItems field's value.\nfunc (s *TransactWriteItemsInput) SetTransactItems(v []*TransactWriteItem) *TransactWriteItemsInput {\n\ts.TransactItems = v\n\treturn s\n}\n\ntype TransactWriteItemsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The capacity units consumed by the entire TransactWriteItems operation. The\n\t// values of the list are ordered according to the ordering of the TransactItems\n\t// request parameter.\n\tConsumedCapacity []*ConsumedCapacity `type:\"list\"`\n\n\t// A list of tables that were processed by TransactWriteItems and, for each\n\t// table, information about any item collections that were affected by individual\n\t// UpdateItem, PutItem, or DeleteItem operations.\n\tItemCollectionMetrics map[string][]*ItemCollectionMetrics `type:\"map\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactWriteItemsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactWriteItemsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetConsumedCapacity sets the ConsumedCapacity field's value.\nfunc (s *TransactWriteItemsOutput) SetConsumedCapacity(v []*ConsumedCapacity) *TransactWriteItemsOutput {\n\ts.ConsumedCapacity = v\n\treturn s\n}\n\n// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.\nfunc (s *TransactWriteItemsOutput) SetItemCollectionMetrics(v map[string][]*ItemCollectionMetrics) *TransactWriteItemsOutput {\n\ts.ItemCollectionMetrics = v\n\treturn s\n}\n\n// The entire transaction request was canceled.\n//\n// DynamoDB cancels a TransactWriteItems request under the following circumstances:\n//\n//   - A condition in one of the condition expressions is not met.\n//\n//   - A table in the TransactWriteItems request is in a different account\n//     or region.\n//\n//   - More than one action in the TransactWriteItems operation targets the\n//     same item.\n//\n//   - There is insufficient provisioned capacity for the transaction to be\n//     completed.\n//\n//   - An item size becomes too large (larger than 400 KB), or a local secondary\n//     index (LSI) becomes too large, or a similar validation error occurs because\n//     of changes made by the transaction.\n//\n//   - There is a user error, such as an invalid data format.\n//\n//   - There is an ongoing TransactWriteItems operation that conflicts with\n//     a concurrent TransactWriteItems request. In this case the TransactWriteItems\n//     operation fails with a TransactionCanceledException.\n//\n// DynamoDB cancels a TransactGetItems request under the following circumstances:\n//\n//   - There is an ongoing TransactGetItems operation that conflicts with a\n//     concurrent PutItem, UpdateItem, DeleteItem or TransactWriteItems request.\n//     In this case the TransactGetItems operation fails with a TransactionCanceledException.\n//\n//   - A table in the TransactGetItems request is in a different account or\n//     region.\n//\n//   - There is insufficient provisioned capacity for the transaction to be\n//     completed.\n//\n//   - There is a user error, such as an invalid data format.\n//\n// If using Java, DynamoDB lists the cancellation reasons on the CancellationReasons\n// property. This property is not set for other languages. Transaction cancellation\n// reasons are ordered in the order of requested items, if an item has no error\n// it will have None code and Null message.\n//\n// Cancellation reason codes and possible error messages:\n//\n//   - No Errors: Code: None Message: null\n//\n//   - Conditional Check Failed: Code: ConditionalCheckFailed Message: The\n//     conditional request failed.\n//\n//   - Item Collection Size Limit Exceeded: Code: ItemCollectionSizeLimitExceeded\n//     Message: Collection size exceeded.\n//\n//   - Transaction Conflict: Code: TransactionConflict Message: Transaction\n//     is ongoing for the item.\n//\n//   - Provisioned Throughput Exceeded: Code: ProvisionedThroughputExceeded\n//     Messages: The level of configured provisioned throughput for the table\n//     was exceeded. Consider increasing your provisioning level with the UpdateTable\n//     API. This Message is received when provisioned throughput is exceeded\n//     is on a provisioned DynamoDB table. The level of configured provisioned\n//     throughput for one or more global secondary indexes of the table was exceeded.\n//     Consider increasing your provisioning level for the under-provisioned\n//     global secondary indexes with the UpdateTable API. This message is returned\n//     when provisioned throughput is exceeded is on a provisioned GSI.\n//\n//   - Throttling Error: Code: ThrottlingError Messages: Throughput exceeds\n//     the current capacity of your table or index. DynamoDB is automatically\n//     scaling your table or index so please try again shortly. If exceptions\n//     persist, check if you have a hot key: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html.\n//     This message is returned when writes get throttled on an On-Demand table\n//     as DynamoDB is automatically scaling the table. Throughput exceeds the\n//     current capacity for one or more global secondary indexes. DynamoDB is\n//     automatically scaling your index so please try again shortly. This message\n//     is returned when writes get throttled on an On-Demand GSI as DynamoDB\n//     is automatically scaling the GSI.\n//\n//   - Validation Error: Code: ValidationError Messages: One or more parameter\n//     values were invalid. The update expression attempted to update the secondary\n//     index key beyond allowed size limits. The update expression attempted\n//     to update the secondary index key to unsupported type. An operand in the\n//     update expression has an incorrect data type. Item size to update has\n//     exceeded the maximum allowed size. Number overflow. Attempting to store\n//     a number with magnitude larger than supported range. Type mismatch for\n//     attribute to update. Nesting Levels have exceeded supported limits. The\n//     document path provided in the update expression is invalid for update.\n//     The provided expression refers to an attribute that does not exist in\n//     the item.\ntype TransactionCanceledException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// A list of cancellation reasons.\n\tCancellationReasons []*CancellationReason `min:\"1\" type:\"list\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactionCanceledException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactionCanceledException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorTransactionCanceledException(v protocol.ResponseMetadata) error {\n\treturn &TransactionCanceledException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *TransactionCanceledException) Code() string {\n\treturn \"TransactionCanceledException\"\n}\n\n// Message returns the exception's message.\nfunc (s *TransactionCanceledException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *TransactionCanceledException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *TransactionCanceledException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *TransactionCanceledException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *TransactionCanceledException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Operation was rejected because there is an ongoing transaction for the item.\ntype TransactionConflictException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactionConflictException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactionConflictException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorTransactionConflictException(v protocol.ResponseMetadata) error {\n\treturn &TransactionConflictException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *TransactionConflictException) Code() string {\n\treturn \"TransactionConflictException\"\n}\n\n// Message returns the exception's message.\nfunc (s *TransactionConflictException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *TransactionConflictException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *TransactionConflictException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *TransactionConflictException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *TransactionConflictException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The transaction with the given request token is already in progress.\n//\n// # Recommended Settings\n//\n// This is a general recommendation for handling the TransactionInProgressException.\n// These settings help ensure that the client retries will trigger completion\n// of the ongoing TransactWriteItems request.\n//\n//   - Set clientExecutionTimeout to a value that allows at least one retry\n//     to be processed after 5 seconds have elapsed since the first attempt for\n//     the TransactWriteItems operation.\n//\n//   - Set socketTimeout to a value a little lower than the requestTimeout\n//     setting.\n//\n//   - requestTimeout should be set based on the time taken for the individual\n//     retries of a single HTTP request for your use case, but setting it to\n//     1 second or higher should work well to reduce chances of retries and TransactionInProgressException\n//     errors.\n//\n//   - Use exponential backoff when retrying and tune backoff if needed.\n//\n// Assuming default retry policy (https://github.com/aws/aws-sdk-java/blob/fd409dee8ae23fb8953e0bb4dbde65536a7e0514/aws-java-sdk-core/src/main/java/com/amazonaws/retry/PredefinedRetryPolicies.java#L97),\n// example timeout settings based on the guidelines above are as follows:\n//\n// Example timeline:\n//\n//   - 0-1000 first attempt\n//\n//   - 1000-1500 first sleep/delay (default retry policy uses 500 ms as base\n//     delay for 4xx errors)\n//\n//   - 1500-2500 second attempt\n//\n//   - 2500-3500 second sleep/delay (500 * 2, exponential backoff)\n//\n//   - 3500-4500 third attempt\n//\n//   - 4500-6500 third sleep/delay (500 * 2^2)\n//\n//   - 6500-7500 fourth attempt (this can trigger inline recovery since 5 seconds\n//     have elapsed since the first attempt reached TC)\ntype TransactionInProgressException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactionInProgressException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TransactionInProgressException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorTransactionInProgressException(v protocol.ResponseMetadata) error {\n\treturn &TransactionInProgressException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *TransactionInProgressException) Code() string {\n\treturn \"TransactionInProgressException\"\n}\n\n// Message returns the exception's message.\nfunc (s *TransactionInProgressException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *TransactionInProgressException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *TransactionInProgressException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *TransactionInProgressException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *TransactionInProgressException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype UntagResourceInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The DynamoDB resource that the tags will be removed from. This value is an\n\t// Amazon Resource Name (ARN).\n\t//\n\t// ResourceArn is a required field\n\tResourceArn *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// A list of tag keys. Existing tags of the resource whose keys are members\n\t// of this list will be removed from the DynamoDB resource.\n\t//\n\t// TagKeys is a required field\n\tTagKeys []*string `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UntagResourceInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UntagResourceInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UntagResourceInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UntagResourceInput\"}\n\tif s.ResourceArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceArn\"))\n\t}\n\tif s.ResourceArn != nil && len(*s.ResourceArn) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ResourceArn\", 1))\n\t}\n\tif s.TagKeys == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TagKeys\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetResourceArn sets the ResourceArn field's value.\nfunc (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {\n\ts.ResourceArn = &v\n\treturn s\n}\n\n// SetTagKeys sets the TagKeys field's value.\nfunc (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {\n\ts.TagKeys = v\n\treturn s\n}\n\ntype UntagResourceOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UntagResourceOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UntagResourceOutput) GoString() string {\n\treturn s.String()\n}\n\n// Represents a request to perform an UpdateItem operation.\ntype Update struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A condition that must be satisfied in order for a conditional update to succeed.\n\tConditionExpression *string `type:\"string\"`\n\n\t// One or more substitution tokens for attribute names in an expression.\n\tExpressionAttributeNames map[string]*string `type:\"map\"`\n\n\t// One or more values that can be substituted in an expression.\n\tExpressionAttributeValues map[string]*AttributeValue `type:\"map\"`\n\n\t// The primary key of the item to be updated. Each element consists of an attribute\n\t// name and a value for that attribute.\n\t//\n\t// Key is a required field\n\tKey map[string]*AttributeValue `type:\"map\" required:\"true\"`\n\n\t// Use ReturnValuesOnConditionCheckFailure to get the item attributes if the\n\t// Update condition fails. For ReturnValuesOnConditionCheckFailure, the valid\n\t// values are: NONE and ALL_OLD.\n\tReturnValuesOnConditionCheckFailure *string `type:\"string\" enum:\"ReturnValuesOnConditionCheckFailure\"`\n\n\t// Name of the table for the UpdateItem request.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// An expression that defines one or more attributes to be updated, the action\n\t// to be performed on them, and new value(s) for them.\n\t//\n\t// UpdateExpression is a required field\n\tUpdateExpression *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Update) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Update) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *Update) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"Update\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\tif s.UpdateExpression == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"UpdateExpression\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetConditionExpression sets the ConditionExpression field's value.\nfunc (s *Update) SetConditionExpression(v string) *Update {\n\ts.ConditionExpression = &v\n\treturn s\n}\n\n// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.\nfunc (s *Update) SetExpressionAttributeNames(v map[string]*string) *Update {\n\ts.ExpressionAttributeNames = v\n\treturn s\n}\n\n// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.\nfunc (s *Update) SetExpressionAttributeValues(v map[string]*AttributeValue) *Update {\n\ts.ExpressionAttributeValues = v\n\treturn s\n}\n\n// SetKey sets the Key field's value.\nfunc (s *Update) SetKey(v map[string]*AttributeValue) *Update {\n\ts.Key = v\n\treturn s\n}\n\n// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.\nfunc (s *Update) SetReturnValuesOnConditionCheckFailure(v string) *Update {\n\ts.ReturnValuesOnConditionCheckFailure = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *Update) SetTableName(v string) *Update {\n\ts.TableName = &v\n\treturn s\n}\n\n// SetUpdateExpression sets the UpdateExpression field's value.\nfunc (s *Update) SetUpdateExpression(v string) *Update {\n\ts.UpdateExpression = &v\n\treturn s\n}\n\ntype UpdateContinuousBackupsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the settings used to enable point in time recovery.\n\t//\n\t// PointInTimeRecoverySpecification is a required field\n\tPointInTimeRecoverySpecification *PointInTimeRecoverySpecification `type:\"structure\" required:\"true\"`\n\n\t// The name of the table.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateContinuousBackupsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateContinuousBackupsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateContinuousBackupsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateContinuousBackupsInput\"}\n\tif s.PointInTimeRecoverySpecification == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PointInTimeRecoverySpecification\"))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\tif s.PointInTimeRecoverySpecification != nil {\n\t\tif err := s.PointInTimeRecoverySpecification.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"PointInTimeRecoverySpecification\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetPointInTimeRecoverySpecification sets the PointInTimeRecoverySpecification field's value.\nfunc (s *UpdateContinuousBackupsInput) SetPointInTimeRecoverySpecification(v *PointInTimeRecoverySpecification) *UpdateContinuousBackupsInput {\n\ts.PointInTimeRecoverySpecification = v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *UpdateContinuousBackupsInput) SetTableName(v string) *UpdateContinuousBackupsInput {\n\ts.TableName = &v\n\treturn s\n}\n\ntype UpdateContinuousBackupsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the continuous backups and point in time recovery settings on\n\t// the table.\n\tContinuousBackupsDescription *ContinuousBackupsDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateContinuousBackupsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateContinuousBackupsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetContinuousBackupsDescription sets the ContinuousBackupsDescription field's value.\nfunc (s *UpdateContinuousBackupsOutput) SetContinuousBackupsDescription(v *ContinuousBackupsDescription) *UpdateContinuousBackupsOutput {\n\ts.ContinuousBackupsDescription = v\n\treturn s\n}\n\ntype UpdateContributorInsightsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the contributor insights action.\n\t//\n\t// ContributorInsightsAction is a required field\n\tContributorInsightsAction *string `type:\"string\" required:\"true\" enum:\"ContributorInsightsAction\"`\n\n\t// The global secondary index name, if applicable.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// The name of the table.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateContributorInsightsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateContributorInsightsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateContributorInsightsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateContributorInsightsInput\"}\n\tif s.ContributorInsightsAction == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ContributorInsightsAction\"))\n\t}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetContributorInsightsAction sets the ContributorInsightsAction field's value.\nfunc (s *UpdateContributorInsightsInput) SetContributorInsightsAction(v string) *UpdateContributorInsightsInput {\n\ts.ContributorInsightsAction = &v\n\treturn s\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *UpdateContributorInsightsInput) SetIndexName(v string) *UpdateContributorInsightsInput {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *UpdateContributorInsightsInput) SetTableName(v string) *UpdateContributorInsightsInput {\n\ts.TableName = &v\n\treturn s\n}\n\ntype UpdateContributorInsightsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The status of contributor insights\n\tContributorInsightsStatus *string `type:\"string\" enum:\"ContributorInsightsStatus\"`\n\n\t// The name of the global secondary index, if applicable.\n\tIndexName *string `min:\"3\" type:\"string\"`\n\n\t// The name of the table.\n\tTableName *string `min:\"3\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateContributorInsightsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateContributorInsightsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetContributorInsightsStatus sets the ContributorInsightsStatus field's value.\nfunc (s *UpdateContributorInsightsOutput) SetContributorInsightsStatus(v string) *UpdateContributorInsightsOutput {\n\ts.ContributorInsightsStatus = &v\n\treturn s\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *UpdateContributorInsightsOutput) SetIndexName(v string) *UpdateContributorInsightsOutput {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *UpdateContributorInsightsOutput) SetTableName(v string) *UpdateContributorInsightsOutput {\n\ts.TableName = &v\n\treturn s\n}\n\n// Represents the new provisioned throughput settings to be applied to a global\n// secondary index.\ntype UpdateGlobalSecondaryIndexAction struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global secondary index to be updated.\n\t//\n\t// IndexName is a required field\n\tIndexName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// Represents the provisioned throughput settings for the specified global secondary\n\t// index.\n\t//\n\t// For current minimum and maximum provisioned throughput values, see Service,\n\t// Account, and Table Quotas (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\t//\n\t// ProvisionedThroughput is a required field\n\tProvisionedThroughput *ProvisionedThroughput `type:\"structure\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateGlobalSecondaryIndexAction) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateGlobalSecondaryIndexAction) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateGlobalSecondaryIndexAction) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateGlobalSecondaryIndexAction\"}\n\tif s.IndexName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"IndexName\"))\n\t}\n\tif s.IndexName != nil && len(*s.IndexName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"IndexName\", 3))\n\t}\n\tif s.ProvisionedThroughput == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ProvisionedThroughput\"))\n\t}\n\tif s.ProvisionedThroughput != nil {\n\t\tif err := s.ProvisionedThroughput.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedThroughput\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetIndexName sets the IndexName field's value.\nfunc (s *UpdateGlobalSecondaryIndexAction) SetIndexName(v string) *UpdateGlobalSecondaryIndexAction {\n\ts.IndexName = &v\n\treturn s\n}\n\n// SetProvisionedThroughput sets the ProvisionedThroughput field's value.\nfunc (s *UpdateGlobalSecondaryIndexAction) SetProvisionedThroughput(v *ProvisionedThroughput) *UpdateGlobalSecondaryIndexAction {\n\ts.ProvisionedThroughput = v\n\treturn s\n}\n\ntype UpdateGlobalTableInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The global table name.\n\t//\n\t// GlobalTableName is a required field\n\tGlobalTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// A list of Regions that should be added or removed from the global table.\n\t//\n\t// ReplicaUpdates is a required field\n\tReplicaUpdates []*ReplicaUpdate `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateGlobalTableInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateGlobalTableInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateGlobalTableInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateGlobalTableInput\"}\n\tif s.GlobalTableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"GlobalTableName\"))\n\t}\n\tif s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"GlobalTableName\", 3))\n\t}\n\tif s.ReplicaUpdates == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ReplicaUpdates\"))\n\t}\n\tif s.ReplicaUpdates != nil {\n\t\tfor i, v := range s.ReplicaUpdates {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"ReplicaUpdates\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetGlobalTableName sets the GlobalTableName field's value.\nfunc (s *UpdateGlobalTableInput) SetGlobalTableName(v string) *UpdateGlobalTableInput {\n\ts.GlobalTableName = &v\n\treturn s\n}\n\n// SetReplicaUpdates sets the ReplicaUpdates field's value.\nfunc (s *UpdateGlobalTableInput) SetReplicaUpdates(v []*ReplicaUpdate) *UpdateGlobalTableInput {\n\ts.ReplicaUpdates = v\n\treturn s\n}\n\ntype UpdateGlobalTableOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Contains the details of the global table.\n\tGlobalTableDescription *GlobalTableDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateGlobalTableOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateGlobalTableOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetGlobalTableDescription sets the GlobalTableDescription field's value.\nfunc (s *UpdateGlobalTableOutput) SetGlobalTableDescription(v *GlobalTableDescription) *UpdateGlobalTableOutput {\n\ts.GlobalTableDescription = v\n\treturn s\n}\n\ntype UpdateGlobalTableSettingsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The billing mode of the global table. If GlobalTableBillingMode is not specified,\n\t// the global table defaults to PROVISIONED capacity billing mode.\n\t//\n\t//    * PROVISIONED - We recommend using PROVISIONED for predictable workloads.\n\t//    PROVISIONED sets the billing mode to Provisioned Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual).\n\t//\n\t//    * PAY_PER_REQUEST - We recommend using PAY_PER_REQUEST for unpredictable\n\t//    workloads. PAY_PER_REQUEST sets the billing mode to On-Demand Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand).\n\tGlobalTableBillingMode *string `type:\"string\" enum:\"BillingMode\"`\n\n\t// Represents the settings of a global secondary index for a global table that\n\t// will be modified.\n\tGlobalTableGlobalSecondaryIndexSettingsUpdate []*GlobalTableGlobalSecondaryIndexSettingsUpdate `min:\"1\" type:\"list\"`\n\n\t// The name of the global table\n\t//\n\t// GlobalTableName is a required field\n\tGlobalTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// Auto scaling settings for managing provisioned write capacity for the global\n\t// table.\n\tGlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate *AutoScalingSettingsUpdate `type:\"structure\"`\n\n\t// The maximum number of writes consumed per second before DynamoDB returns\n\t// a ThrottlingException.\n\tGlobalTableProvisionedWriteCapacityUnits *int64 `min:\"1\" type:\"long\"`\n\n\t// Represents the settings for a global table in a Region that will be modified.\n\tReplicaSettingsUpdate []*ReplicaSettingsUpdate `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateGlobalTableSettingsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateGlobalTableSettingsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateGlobalTableSettingsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateGlobalTableSettingsInput\"}\n\tif s.GlobalTableGlobalSecondaryIndexSettingsUpdate != nil && len(s.GlobalTableGlobalSecondaryIndexSettingsUpdate) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"GlobalTableGlobalSecondaryIndexSettingsUpdate\", 1))\n\t}\n\tif s.GlobalTableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"GlobalTableName\"))\n\t}\n\tif s.GlobalTableName != nil && len(*s.GlobalTableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"GlobalTableName\", 3))\n\t}\n\tif s.GlobalTableProvisionedWriteCapacityUnits != nil && *s.GlobalTableProvisionedWriteCapacityUnits < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"GlobalTableProvisionedWriteCapacityUnits\", 1))\n\t}\n\tif s.ReplicaSettingsUpdate != nil && len(s.ReplicaSettingsUpdate) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ReplicaSettingsUpdate\", 1))\n\t}\n\tif s.GlobalTableGlobalSecondaryIndexSettingsUpdate != nil {\n\t\tfor i, v := range s.GlobalTableGlobalSecondaryIndexSettingsUpdate {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"GlobalTableGlobalSecondaryIndexSettingsUpdate\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate != nil {\n\t\tif err := s.GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.ReplicaSettingsUpdate != nil {\n\t\tfor i, v := range s.ReplicaSettingsUpdate {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"ReplicaSettingsUpdate\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetGlobalTableBillingMode sets the GlobalTableBillingMode field's value.\nfunc (s *UpdateGlobalTableSettingsInput) SetGlobalTableBillingMode(v string) *UpdateGlobalTableSettingsInput {\n\ts.GlobalTableBillingMode = &v\n\treturn s\n}\n\n// SetGlobalTableGlobalSecondaryIndexSettingsUpdate sets the GlobalTableGlobalSecondaryIndexSettingsUpdate field's value.\nfunc (s *UpdateGlobalTableSettingsInput) SetGlobalTableGlobalSecondaryIndexSettingsUpdate(v []*GlobalTableGlobalSecondaryIndexSettingsUpdate) *UpdateGlobalTableSettingsInput {\n\ts.GlobalTableGlobalSecondaryIndexSettingsUpdate = v\n\treturn s\n}\n\n// SetGlobalTableName sets the GlobalTableName field's value.\nfunc (s *UpdateGlobalTableSettingsInput) SetGlobalTableName(v string) *UpdateGlobalTableSettingsInput {\n\ts.GlobalTableName = &v\n\treturn s\n}\n\n// SetGlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate sets the GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate field's value.\nfunc (s *UpdateGlobalTableSettingsInput) SetGlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate(v *AutoScalingSettingsUpdate) *UpdateGlobalTableSettingsInput {\n\ts.GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate = v\n\treturn s\n}\n\n// SetGlobalTableProvisionedWriteCapacityUnits sets the GlobalTableProvisionedWriteCapacityUnits field's value.\nfunc (s *UpdateGlobalTableSettingsInput) SetGlobalTableProvisionedWriteCapacityUnits(v int64) *UpdateGlobalTableSettingsInput {\n\ts.GlobalTableProvisionedWriteCapacityUnits = &v\n\treturn s\n}\n\n// SetReplicaSettingsUpdate sets the ReplicaSettingsUpdate field's value.\nfunc (s *UpdateGlobalTableSettingsInput) SetReplicaSettingsUpdate(v []*ReplicaSettingsUpdate) *UpdateGlobalTableSettingsInput {\n\ts.ReplicaSettingsUpdate = v\n\treturn s\n}\n\ntype UpdateGlobalTableSettingsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the global table.\n\tGlobalTableName *string `min:\"3\" type:\"string\"`\n\n\t// The Region-specific settings for the global table.\n\tReplicaSettings []*ReplicaSettingsDescription `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateGlobalTableSettingsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateGlobalTableSettingsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetGlobalTableName sets the GlobalTableName field's value.\nfunc (s *UpdateGlobalTableSettingsOutput) SetGlobalTableName(v string) *UpdateGlobalTableSettingsOutput {\n\ts.GlobalTableName = &v\n\treturn s\n}\n\n// SetReplicaSettings sets the ReplicaSettings field's value.\nfunc (s *UpdateGlobalTableSettingsOutput) SetReplicaSettings(v []*ReplicaSettingsDescription) *UpdateGlobalTableSettingsOutput {\n\ts.ReplicaSettings = v\n\treturn s\n}\n\n// Represents the input of an UpdateItem operation.\ntype UpdateItemInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// This is a legacy parameter. Use UpdateExpression instead. For more information,\n\t// see AttributeUpdates (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributeUpdates.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tAttributeUpdates map[string]*AttributeValueUpdate `type:\"map\"`\n\n\t// A condition that must be satisfied in order for a conditional update to succeed.\n\t//\n\t// An expression can contain any of the following:\n\t//\n\t//    * Functions: attribute_exists | attribute_not_exists | attribute_type\n\t//    | contains | begins_with | size These function names are case-sensitive.\n\t//\n\t//    * Comparison operators: = | <> | < | > | <= | >= | BETWEEN | IN\n\t//\n\t//    * Logical operators: AND | OR | NOT\n\t//\n\t// For more information about condition expressions, see Specifying Conditions\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConditionExpression *string `type:\"string\"`\n\n\t// This is a legacy parameter. Use ConditionExpression instead. For more information,\n\t// see ConditionalOperator (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ConditionalOperator.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConditionalOperator *string `type:\"string\" enum:\"ConditionalOperator\"`\n\n\t// This is a legacy parameter. Use ConditionExpression instead. For more information,\n\t// see Expected (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.Expected.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpected map[string]*ExpectedAttributeValue `type:\"map\"`\n\n\t// One or more substitution tokens for attribute names in an expression. The\n\t// following are some use cases for using ExpressionAttributeNames:\n\t//\n\t//    * To access an attribute whose name conflicts with a DynamoDB reserved\n\t//    word.\n\t//\n\t//    * To create a placeholder for repeating occurrences of an attribute name\n\t//    in an expression.\n\t//\n\t//    * To prevent special characters in an attribute name from being misinterpreted\n\t//    in an expression.\n\t//\n\t// Use the # character in an expression to dereference an attribute name. For\n\t// example, consider the following attribute name:\n\t//\n\t//    * Percentile\n\t//\n\t// The name of this attribute conflicts with a reserved word, so it cannot be\n\t// used directly in an expression. (For the complete list of reserved words,\n\t// see Reserved Words (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html)\n\t// in the Amazon DynamoDB Developer Guide.) To work around this, you could specify\n\t// the following for ExpressionAttributeNames:\n\t//\n\t//    * {\"#P\":\"Percentile\"}\n\t//\n\t// You could then use this substitution in an expression, as in this example:\n\t//\n\t//    * #P = :val\n\t//\n\t// Tokens that begin with the : character are expression attribute values, which\n\t// are placeholders for the actual value at runtime.\n\t//\n\t// For more information about expression attribute names, see Specifying Item\n\t// Attributes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeNames map[string]*string `type:\"map\"`\n\n\t// One or more values that can be substituted in an expression.\n\t//\n\t// Use the : (colon) character in an expression to dereference an attribute\n\t// value. For example, suppose that you wanted to check whether the value of\n\t// the ProductStatus attribute was one of the following:\n\t//\n\t// Available | Backordered | Discontinued\n\t//\n\t// You would first need to specify ExpressionAttributeValues as follows:\n\t//\n\t// { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"}\n\t// }\n\t//\n\t// You could then use these values in an expression, such as this:\n\t//\n\t// ProductStatus IN (:avail, :back, :disc)\n\t//\n\t// For more information on expression attribute values, see Condition Expressions\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tExpressionAttributeValues map[string]*AttributeValue `type:\"map\"`\n\n\t// The primary key of the item to be updated. Each element consists of an attribute\n\t// name and a value for that attribute.\n\t//\n\t// For the primary key, you must provide all of the attributes. For example,\n\t// with a simple primary key, you only need to provide a value for the partition\n\t// key. For a composite primary key, you must provide values for both the partition\n\t// key and the sort key.\n\t//\n\t// Key is a required field\n\tKey map[string]*AttributeValue `type:\"map\" required:\"true\"`\n\n\t// Determines the level of detail about either provisioned or on-demand throughput\n\t// consumption that is returned in the response:\n\t//\n\t//    * INDEXES - The response includes the aggregate ConsumedCapacity for the\n\t//    operation, together with ConsumedCapacity for each table and secondary\n\t//    index that was accessed. Note that some operations, such as GetItem and\n\t//    BatchGetItem, do not access any indexes at all. In these cases, specifying\n\t//    INDEXES will only return ConsumedCapacity information for table(s).\n\t//\n\t//    * TOTAL - The response includes only the aggregate ConsumedCapacity for\n\t//    the operation.\n\t//\n\t//    * NONE - No ConsumedCapacity details are included in the response.\n\tReturnConsumedCapacity *string `type:\"string\" enum:\"ReturnConsumedCapacity\"`\n\n\t// Determines whether item collection metrics are returned. If set to SIZE,\n\t// the response includes statistics about item collections, if any, that were\n\t// modified during the operation are returned in the response. If set to NONE\n\t// (the default), no statistics are returned.\n\tReturnItemCollectionMetrics *string `type:\"string\" enum:\"ReturnItemCollectionMetrics\"`\n\n\t// Use ReturnValues if you want to get the item attributes as they appear before\n\t// or after they are successfully updated. For UpdateItem, the valid values\n\t// are:\n\t//\n\t//    * NONE - If ReturnValues is not specified, or if its value is NONE, then\n\t//    nothing is returned. (This setting is the default for ReturnValues.)\n\t//\n\t//    * ALL_OLD - Returns all of the attributes of the item, as they appeared\n\t//    before the UpdateItem operation.\n\t//\n\t//    * UPDATED_OLD - Returns only the updated attributes, as they appeared\n\t//    before the UpdateItem operation.\n\t//\n\t//    * ALL_NEW - Returns all of the attributes of the item, as they appear\n\t//    after the UpdateItem operation.\n\t//\n\t//    * UPDATED_NEW - Returns only the updated attributes, as they appear after\n\t//    the UpdateItem operation.\n\t//\n\t// There is no additional cost associated with requesting a return value aside\n\t// from the small network and processing overhead of receiving a larger response.\n\t// No read capacity units are consumed.\n\t//\n\t// The values returned are strongly consistent.\n\tReturnValues *string `type:\"string\" enum:\"ReturnValue\"`\n\n\t// An optional parameter that returns the item attributes for an UpdateItem\n\t// operation that failed a condition check.\n\t//\n\t// There is no additional cost associated with requesting a return value aside\n\t// from the small network and processing overhead of receiving a larger response.\n\t// No read capacity units are consumed.\n\tReturnValuesOnConditionCheckFailure *string `type:\"string\" enum:\"ReturnValuesOnConditionCheckFailure\"`\n\n\t// The name of the table containing the item to update.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// An expression that defines one or more attributes to be updated, the action\n\t// to be performed on them, and new values for them.\n\t//\n\t// The following action values are available for UpdateExpression.\n\t//\n\t//    * SET - Adds one or more attributes and values to an item. If any of these\n\t//    attributes already exist, they are replaced by the new values. You can\n\t//    also use SET to add or subtract from an attribute that is of type Number.\n\t//    For example: SET myNum = myNum + :val SET supports the following functions:\n\t//    if_not_exists (path, operand) - if the item does not contain an attribute\n\t//    at the specified path, then if_not_exists evaluates to operand; otherwise,\n\t//    it evaluates to path. You can use this function to avoid overwriting an\n\t//    attribute that may already be present in the item. list_append (operand,\n\t//    operand) - evaluates to a list with a new element added to it. You can\n\t//    append the new element to the start or the end of the list by reversing\n\t//    the order of the operands. These function names are case-sensitive.\n\t//\n\t//    * REMOVE - Removes one or more attributes from an item.\n\t//\n\t//    * ADD - Adds the specified value to the item, if the attribute does not\n\t//    already exist. If the attribute does exist, then the behavior of ADD depends\n\t//    on the data type of the attribute: If the existing attribute is a number,\n\t//    and if Value is also a number, then Value is mathematically added to the\n\t//    existing attribute. If Value is a negative number, then it is subtracted\n\t//    from the existing attribute. If you use ADD to increment or decrement\n\t//    a number value for an item that doesn't exist before the update, DynamoDB\n\t//    uses 0 as the initial value. Similarly, if you use ADD for an existing\n\t//    item to increment or decrement an attribute value that doesn't exist before\n\t//    the update, DynamoDB uses 0 as the initial value. For example, suppose\n\t//    that the item you want to update doesn't have an attribute named itemcount,\n\t//    but you decide to ADD the number 3 to this attribute anyway. DynamoDB\n\t//    will create the itemcount attribute, set its initial value to 0, and finally\n\t//    add 3 to it. The result will be a new itemcount attribute in the item,\n\t//    with a value of 3. If the existing data type is a set and if Value is\n\t//    also a set, then Value is added to the existing set. For example, if the\n\t//    attribute value is the set [1,2], and the ADD action specified [3], then\n\t//    the final attribute value is [1,2,3]. An error occurs if an ADD action\n\t//    is specified for a set attribute and the attribute type specified does\n\t//    not match the existing set type. Both sets must have the same primitive\n\t//    data type. For example, if the existing data type is a set of strings,\n\t//    the Value must also be a set of strings. The ADD action only supports\n\t//    Number and set data types. In addition, ADD can only be used on top-level\n\t//    attributes, not nested attributes.\n\t//\n\t//    * DELETE - Deletes an element from a set. If a set of values is specified,\n\t//    then those values are subtracted from the old set. For example, if the\n\t//    attribute value was the set [a,b,c] and the DELETE action specifies [a,c],\n\t//    then the final attribute value is [b]. Specifying an empty set is an error.\n\t//    The DELETE action only supports set data types. In addition, DELETE can\n\t//    only be used on top-level attributes, not nested attributes.\n\t//\n\t// You can have many actions in a single expression, such as the following:\n\t// SET a=:value1, b=:value2 DELETE :value3, :value4, :value5\n\t//\n\t// For more information on update expressions, see Modifying Items and Attributes\n\t// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.Modifying.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tUpdateExpression *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateItemInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateItemInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateItemInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateItemInput\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttributeUpdates sets the AttributeUpdates field's value.\nfunc (s *UpdateItemInput) SetAttributeUpdates(v map[string]*AttributeValueUpdate) *UpdateItemInput {\n\ts.AttributeUpdates = v\n\treturn s\n}\n\n// SetConditionExpression sets the ConditionExpression field's value.\nfunc (s *UpdateItemInput) SetConditionExpression(v string) *UpdateItemInput {\n\ts.ConditionExpression = &v\n\treturn s\n}\n\n// SetConditionalOperator sets the ConditionalOperator field's value.\nfunc (s *UpdateItemInput) SetConditionalOperator(v string) *UpdateItemInput {\n\ts.ConditionalOperator = &v\n\treturn s\n}\n\n// SetExpected sets the Expected field's value.\nfunc (s *UpdateItemInput) SetExpected(v map[string]*ExpectedAttributeValue) *UpdateItemInput {\n\ts.Expected = v\n\treturn s\n}\n\n// SetExpressionAttributeNames sets the ExpressionAttributeNames field's value.\nfunc (s *UpdateItemInput) SetExpressionAttributeNames(v map[string]*string) *UpdateItemInput {\n\ts.ExpressionAttributeNames = v\n\treturn s\n}\n\n// SetExpressionAttributeValues sets the ExpressionAttributeValues field's value.\nfunc (s *UpdateItemInput) SetExpressionAttributeValues(v map[string]*AttributeValue) *UpdateItemInput {\n\ts.ExpressionAttributeValues = v\n\treturn s\n}\n\n// SetKey sets the Key field's value.\nfunc (s *UpdateItemInput) SetKey(v map[string]*AttributeValue) *UpdateItemInput {\n\ts.Key = v\n\treturn s\n}\n\n// SetReturnConsumedCapacity sets the ReturnConsumedCapacity field's value.\nfunc (s *UpdateItemInput) SetReturnConsumedCapacity(v string) *UpdateItemInput {\n\ts.ReturnConsumedCapacity = &v\n\treturn s\n}\n\n// SetReturnItemCollectionMetrics sets the ReturnItemCollectionMetrics field's value.\nfunc (s *UpdateItemInput) SetReturnItemCollectionMetrics(v string) *UpdateItemInput {\n\ts.ReturnItemCollectionMetrics = &v\n\treturn s\n}\n\n// SetReturnValues sets the ReturnValues field's value.\nfunc (s *UpdateItemInput) SetReturnValues(v string) *UpdateItemInput {\n\ts.ReturnValues = &v\n\treturn s\n}\n\n// SetReturnValuesOnConditionCheckFailure sets the ReturnValuesOnConditionCheckFailure field's value.\nfunc (s *UpdateItemInput) SetReturnValuesOnConditionCheckFailure(v string) *UpdateItemInput {\n\ts.ReturnValuesOnConditionCheckFailure = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *UpdateItemInput) SetTableName(v string) *UpdateItemInput {\n\ts.TableName = &v\n\treturn s\n}\n\n// SetUpdateExpression sets the UpdateExpression field's value.\nfunc (s *UpdateItemInput) SetUpdateExpression(v string) *UpdateItemInput {\n\ts.UpdateExpression = &v\n\treturn s\n}\n\n// Represents the output of an UpdateItem operation.\ntype UpdateItemOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A map of attribute values as they appear before or after the UpdateItem operation,\n\t// as determined by the ReturnValues parameter.\n\t//\n\t// The Attributes map is only present if the update was successful and ReturnValues\n\t// was specified as something other than NONE in the request. Each element represents\n\t// one attribute.\n\tAttributes map[string]*AttributeValue `type:\"map\"`\n\n\t// The capacity units consumed by the UpdateItem operation. The data returned\n\t// includes the total provisioned throughput consumed, along with statistics\n\t// for the table and any indexes involved in the operation. ConsumedCapacity\n\t// is only returned if the ReturnConsumedCapacity parameter was specified. For\n\t// more information, see Provisioned Throughput (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html#ItemSizeCalculations.Reads)\n\t// in the Amazon DynamoDB Developer Guide.\n\tConsumedCapacity *ConsumedCapacity `type:\"structure\"`\n\n\t// Information about item collections, if any, that were affected by the UpdateItem\n\t// operation. ItemCollectionMetrics is only returned if the ReturnItemCollectionMetrics\n\t// parameter was specified. If the table does not have any local secondary indexes,\n\t// this information is not returned in the response.\n\t//\n\t// Each ItemCollectionMetrics element consists of:\n\t//\n\t//    * ItemCollectionKey - The partition key value of the item collection.\n\t//    This is the same as the partition key value of the item itself.\n\t//\n\t//    * SizeEstimateRangeGB - An estimate of item collection size, in gigabytes.\n\t//    This value is a two-element array containing a lower bound and an upper\n\t//    bound for the estimate. The estimate includes the size of all the items\n\t//    in the table, plus the size of all attributes projected into all of the\n\t//    local secondary indexes on that table. Use this estimate to measure whether\n\t//    a local secondary index is approaching its size limit. The estimate is\n\t//    subject to change over time; therefore, do not rely on the precision or\n\t//    accuracy of the estimate.\n\tItemCollectionMetrics *ItemCollectionMetrics `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateItemOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateItemOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAttributes sets the Attributes field's value.\nfunc (s *UpdateItemOutput) SetAttributes(v map[string]*AttributeValue) *UpdateItemOutput {\n\ts.Attributes = v\n\treturn s\n}\n\n// SetConsumedCapacity sets the ConsumedCapacity field's value.\nfunc (s *UpdateItemOutput) SetConsumedCapacity(v *ConsumedCapacity) *UpdateItemOutput {\n\ts.ConsumedCapacity = v\n\treturn s\n}\n\n// SetItemCollectionMetrics sets the ItemCollectionMetrics field's value.\nfunc (s *UpdateItemOutput) SetItemCollectionMetrics(v *ItemCollectionMetrics) *UpdateItemOutput {\n\ts.ItemCollectionMetrics = v\n\treturn s\n}\n\n// Represents a replica to be modified.\ntype UpdateReplicationGroupMemberAction struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Replica-specific global secondary index settings.\n\tGlobalSecondaryIndexes []*ReplicaGlobalSecondaryIndex `min:\"1\" type:\"list\"`\n\n\t// The KMS key of the replica that should be used for KMS encryption. To specify\n\t// a key, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN.\n\t// Note that you should only provide this parameter if the key is different\n\t// from the default DynamoDB KMS key alias/aws/dynamodb.\n\tKMSMasterKeyId *string `type:\"string\"`\n\n\t// Replica-specific provisioned throughput. If not specified, uses the source\n\t// table's provisioned throughput settings.\n\tProvisionedThroughputOverride *ProvisionedThroughputOverride `type:\"structure\"`\n\n\t// The Region where the replica exists.\n\t//\n\t// RegionName is a required field\n\tRegionName *string `type:\"string\" required:\"true\"`\n\n\t// Replica-specific table class. If not specified, uses the source table's table\n\t// class.\n\tTableClassOverride *string `type:\"string\" enum:\"TableClass\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateReplicationGroupMemberAction) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateReplicationGroupMemberAction) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateReplicationGroupMemberAction) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateReplicationGroupMemberAction\"}\n\tif s.GlobalSecondaryIndexes != nil && len(s.GlobalSecondaryIndexes) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"GlobalSecondaryIndexes\", 1))\n\t}\n\tif s.RegionName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RegionName\"))\n\t}\n\tif s.GlobalSecondaryIndexes != nil {\n\t\tfor i, v := range s.GlobalSecondaryIndexes {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"GlobalSecondaryIndexes\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ProvisionedThroughputOverride != nil {\n\t\tif err := s.ProvisionedThroughputOverride.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedThroughputOverride\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetGlobalSecondaryIndexes sets the GlobalSecondaryIndexes field's value.\nfunc (s *UpdateReplicationGroupMemberAction) SetGlobalSecondaryIndexes(v []*ReplicaGlobalSecondaryIndex) *UpdateReplicationGroupMemberAction {\n\ts.GlobalSecondaryIndexes = v\n\treturn s\n}\n\n// SetKMSMasterKeyId sets the KMSMasterKeyId field's value.\nfunc (s *UpdateReplicationGroupMemberAction) SetKMSMasterKeyId(v string) *UpdateReplicationGroupMemberAction {\n\ts.KMSMasterKeyId = &v\n\treturn s\n}\n\n// SetProvisionedThroughputOverride sets the ProvisionedThroughputOverride field's value.\nfunc (s *UpdateReplicationGroupMemberAction) SetProvisionedThroughputOverride(v *ProvisionedThroughputOverride) *UpdateReplicationGroupMemberAction {\n\ts.ProvisionedThroughputOverride = v\n\treturn s\n}\n\n// SetRegionName sets the RegionName field's value.\nfunc (s *UpdateReplicationGroupMemberAction) SetRegionName(v string) *UpdateReplicationGroupMemberAction {\n\ts.RegionName = &v\n\treturn s\n}\n\n// SetTableClassOverride sets the TableClassOverride field's value.\nfunc (s *UpdateReplicationGroupMemberAction) SetTableClassOverride(v string) *UpdateReplicationGroupMemberAction {\n\ts.TableClassOverride = &v\n\treturn s\n}\n\n// Represents the input of an UpdateTable operation.\ntype UpdateTableInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// An array of attributes that describe the key schema for the table and indexes.\n\t// If you are adding a new global secondary index to the table, AttributeDefinitions\n\t// must include the key element(s) of the new index.\n\tAttributeDefinitions []*AttributeDefinition `type:\"list\"`\n\n\t// Controls how you are charged for read and write throughput and how you manage\n\t// capacity. When switching from pay-per-request to provisioned capacity, initial\n\t// provisioned capacity values must be set. The initial provisioned capacity\n\t// values are estimated based on the consumed read and write capacity of your\n\t// table and global secondary indexes over the past 30 minutes.\n\t//\n\t//    * PROVISIONED - We recommend using PROVISIONED for predictable workloads.\n\t//    PROVISIONED sets the billing mode to Provisioned Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual).\n\t//\n\t//    * PAY_PER_REQUEST - We recommend using PAY_PER_REQUEST for unpredictable\n\t//    workloads. PAY_PER_REQUEST sets the billing mode to On-Demand Mode (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand).\n\tBillingMode *string `type:\"string\" enum:\"BillingMode\"`\n\n\t// Indicates whether deletion protection is to be enabled (true) or disabled\n\t// (false) on the table.\n\tDeletionProtectionEnabled *bool `type:\"boolean\"`\n\n\t// An array of one or more global secondary indexes for the table. For each\n\t// index in the array, you can request one action:\n\t//\n\t//    * Create - add a new global secondary index to the table.\n\t//\n\t//    * Update - modify the provisioned throughput settings of an existing global\n\t//    secondary index.\n\t//\n\t//    * Delete - remove a global secondary index from the table.\n\t//\n\t// You can create or delete only one global secondary index per UpdateTable\n\t// operation.\n\t//\n\t// For more information, see Managing Global Secondary Indexes (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html)\n\t// in the Amazon DynamoDB Developer Guide.\n\tGlobalSecondaryIndexUpdates []*GlobalSecondaryIndexUpdate `type:\"list\"`\n\n\t// The new provisioned throughput settings for the specified table or index.\n\tProvisionedThroughput *ProvisionedThroughput `type:\"structure\"`\n\n\t// A list of replica update actions (create, delete, or update) for the table.\n\t//\n\t// This property only applies to Version 2019.11.21 (Current) (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html)\n\t// of global tables.\n\tReplicaUpdates []*ReplicationGroupUpdate `min:\"1\" type:\"list\"`\n\n\t// The new server-side encryption settings for the specified table.\n\tSSESpecification *SSESpecification `type:\"structure\"`\n\n\t// Represents the DynamoDB Streams configuration for the table.\n\t//\n\t// You receive a ResourceInUseException if you try to enable a stream on a table\n\t// that already has a stream, or if you try to disable a stream on a table that\n\t// doesn't have a stream.\n\tStreamSpecification *StreamSpecification `type:\"structure\"`\n\n\t// The table class of the table to be updated. Valid values are STANDARD and\n\t// STANDARD_INFREQUENT_ACCESS.\n\tTableClass *string `type:\"string\" enum:\"TableClass\"`\n\n\t// The name of the table to be updated.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateTableInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateTableInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateTableInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateTableInput\"}\n\tif s.ReplicaUpdates != nil && len(s.ReplicaUpdates) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ReplicaUpdates\", 1))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\tif s.AttributeDefinitions != nil {\n\t\tfor i, v := range s.AttributeDefinitions {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"AttributeDefinitions\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.GlobalSecondaryIndexUpdates != nil {\n\t\tfor i, v := range s.GlobalSecondaryIndexUpdates {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"GlobalSecondaryIndexUpdates\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ProvisionedThroughput != nil {\n\t\tif err := s.ProvisionedThroughput.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedThroughput\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.ReplicaUpdates != nil {\n\t\tfor i, v := range s.ReplicaUpdates {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"ReplicaUpdates\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.StreamSpecification != nil {\n\t\tif err := s.StreamSpecification.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"StreamSpecification\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttributeDefinitions sets the AttributeDefinitions field's value.\nfunc (s *UpdateTableInput) SetAttributeDefinitions(v []*AttributeDefinition) *UpdateTableInput {\n\ts.AttributeDefinitions = v\n\treturn s\n}\n\n// SetBillingMode sets the BillingMode field's value.\nfunc (s *UpdateTableInput) SetBillingMode(v string) *UpdateTableInput {\n\ts.BillingMode = &v\n\treturn s\n}\n\n// SetDeletionProtectionEnabled sets the DeletionProtectionEnabled field's value.\nfunc (s *UpdateTableInput) SetDeletionProtectionEnabled(v bool) *UpdateTableInput {\n\ts.DeletionProtectionEnabled = &v\n\treturn s\n}\n\n// SetGlobalSecondaryIndexUpdates sets the GlobalSecondaryIndexUpdates field's value.\nfunc (s *UpdateTableInput) SetGlobalSecondaryIndexUpdates(v []*GlobalSecondaryIndexUpdate) *UpdateTableInput {\n\ts.GlobalSecondaryIndexUpdates = v\n\treturn s\n}\n\n// SetProvisionedThroughput sets the ProvisionedThroughput field's value.\nfunc (s *UpdateTableInput) SetProvisionedThroughput(v *ProvisionedThroughput) *UpdateTableInput {\n\ts.ProvisionedThroughput = v\n\treturn s\n}\n\n// SetReplicaUpdates sets the ReplicaUpdates field's value.\nfunc (s *UpdateTableInput) SetReplicaUpdates(v []*ReplicationGroupUpdate) *UpdateTableInput {\n\ts.ReplicaUpdates = v\n\treturn s\n}\n\n// SetSSESpecification sets the SSESpecification field's value.\nfunc (s *UpdateTableInput) SetSSESpecification(v *SSESpecification) *UpdateTableInput {\n\ts.SSESpecification = v\n\treturn s\n}\n\n// SetStreamSpecification sets the StreamSpecification field's value.\nfunc (s *UpdateTableInput) SetStreamSpecification(v *StreamSpecification) *UpdateTableInput {\n\ts.StreamSpecification = v\n\treturn s\n}\n\n// SetTableClass sets the TableClass field's value.\nfunc (s *UpdateTableInput) SetTableClass(v string) *UpdateTableInput {\n\ts.TableClass = &v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *UpdateTableInput) SetTableName(v string) *UpdateTableInput {\n\ts.TableName = &v\n\treturn s\n}\n\n// Represents the output of an UpdateTable operation.\ntype UpdateTableOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the properties of the table.\n\tTableDescription *TableDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateTableOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateTableOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetTableDescription sets the TableDescription field's value.\nfunc (s *UpdateTableOutput) SetTableDescription(v *TableDescription) *UpdateTableOutput {\n\ts.TableDescription = v\n\treturn s\n}\n\ntype UpdateTableReplicaAutoScalingInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the auto scaling settings of the global secondary indexes of the\n\t// replica to be updated.\n\tGlobalSecondaryIndexUpdates []*GlobalSecondaryIndexAutoScalingUpdate `min:\"1\" type:\"list\"`\n\n\t// Represents the auto scaling settings to be modified for a global table or\n\t// global secondary index.\n\tProvisionedWriteCapacityAutoScalingUpdate *AutoScalingSettingsUpdate `type:\"structure\"`\n\n\t// Represents the auto scaling settings of replicas of the table that will be\n\t// modified.\n\tReplicaUpdates []*ReplicaAutoScalingUpdate `min:\"1\" type:\"list\"`\n\n\t// The name of the global table to be updated.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateTableReplicaAutoScalingInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateTableReplicaAutoScalingInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateTableReplicaAutoScalingInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateTableReplicaAutoScalingInput\"}\n\tif s.GlobalSecondaryIndexUpdates != nil && len(s.GlobalSecondaryIndexUpdates) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"GlobalSecondaryIndexUpdates\", 1))\n\t}\n\tif s.ReplicaUpdates != nil && len(s.ReplicaUpdates) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ReplicaUpdates\", 1))\n\t}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\tif s.GlobalSecondaryIndexUpdates != nil {\n\t\tfor i, v := range s.GlobalSecondaryIndexUpdates {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"GlobalSecondaryIndexUpdates\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ProvisionedWriteCapacityAutoScalingUpdate != nil {\n\t\tif err := s.ProvisionedWriteCapacityAutoScalingUpdate.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ProvisionedWriteCapacityAutoScalingUpdate\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.ReplicaUpdates != nil {\n\t\tfor i, v := range s.ReplicaUpdates {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"ReplicaUpdates\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetGlobalSecondaryIndexUpdates sets the GlobalSecondaryIndexUpdates field's value.\nfunc (s *UpdateTableReplicaAutoScalingInput) SetGlobalSecondaryIndexUpdates(v []*GlobalSecondaryIndexAutoScalingUpdate) *UpdateTableReplicaAutoScalingInput {\n\ts.GlobalSecondaryIndexUpdates = v\n\treturn s\n}\n\n// SetProvisionedWriteCapacityAutoScalingUpdate sets the ProvisionedWriteCapacityAutoScalingUpdate field's value.\nfunc (s *UpdateTableReplicaAutoScalingInput) SetProvisionedWriteCapacityAutoScalingUpdate(v *AutoScalingSettingsUpdate) *UpdateTableReplicaAutoScalingInput {\n\ts.ProvisionedWriteCapacityAutoScalingUpdate = v\n\treturn s\n}\n\n// SetReplicaUpdates sets the ReplicaUpdates field's value.\nfunc (s *UpdateTableReplicaAutoScalingInput) SetReplicaUpdates(v []*ReplicaAutoScalingUpdate) *UpdateTableReplicaAutoScalingInput {\n\ts.ReplicaUpdates = v\n\treturn s\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *UpdateTableReplicaAutoScalingInput) SetTableName(v string) *UpdateTableReplicaAutoScalingInput {\n\ts.TableName = &v\n\treturn s\n}\n\ntype UpdateTableReplicaAutoScalingOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Returns information about the auto scaling settings of a table with replicas.\n\tTableAutoScalingDescription *TableAutoScalingDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateTableReplicaAutoScalingOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateTableReplicaAutoScalingOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetTableAutoScalingDescription sets the TableAutoScalingDescription field's value.\nfunc (s *UpdateTableReplicaAutoScalingOutput) SetTableAutoScalingDescription(v *TableAutoScalingDescription) *UpdateTableReplicaAutoScalingOutput {\n\ts.TableAutoScalingDescription = v\n\treturn s\n}\n\n// Represents the input of an UpdateTimeToLive operation.\ntype UpdateTimeToLiveInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the table to be configured.\n\t//\n\t// TableName is a required field\n\tTableName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// Represents the settings used to enable or disable Time to Live for the specified\n\t// table.\n\t//\n\t// TimeToLiveSpecification is a required field\n\tTimeToLiveSpecification *TimeToLiveSpecification `type:\"structure\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateTimeToLiveInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateTimeToLiveInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateTimeToLiveInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateTimeToLiveInput\"}\n\tif s.TableName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TableName\"))\n\t}\n\tif s.TableName != nil && len(*s.TableName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TableName\", 3))\n\t}\n\tif s.TimeToLiveSpecification == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TimeToLiveSpecification\"))\n\t}\n\tif s.TimeToLiveSpecification != nil {\n\t\tif err := s.TimeToLiveSpecification.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"TimeToLiveSpecification\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetTableName sets the TableName field's value.\nfunc (s *UpdateTimeToLiveInput) SetTableName(v string) *UpdateTimeToLiveInput {\n\ts.TableName = &v\n\treturn s\n}\n\n// SetTimeToLiveSpecification sets the TimeToLiveSpecification field's value.\nfunc (s *UpdateTimeToLiveInput) SetTimeToLiveSpecification(v *TimeToLiveSpecification) *UpdateTimeToLiveInput {\n\ts.TimeToLiveSpecification = v\n\treturn s\n}\n\ntype UpdateTimeToLiveOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Represents the output of an UpdateTimeToLive operation.\n\tTimeToLiveSpecification *TimeToLiveSpecification `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateTimeToLiveOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateTimeToLiveOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetTimeToLiveSpecification sets the TimeToLiveSpecification field's value.\nfunc (s *UpdateTimeToLiveOutput) SetTimeToLiveSpecification(v *TimeToLiveSpecification) *UpdateTimeToLiveOutput {\n\ts.TimeToLiveSpecification = v\n\treturn s\n}\n\n// Represents an operation to perform - either DeleteItem or PutItem. You can\n// only request one of these operations, not both, in a single WriteRequest.\n// If you do need to perform both of these operations, you need to provide two\n// separate WriteRequest objects.\ntype WriteRequest struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A request to perform a DeleteItem operation.\n\tDeleteRequest *DeleteRequest `type:\"structure\"`\n\n\t// A request to perform a PutItem operation.\n\tPutRequest *PutRequest `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s WriteRequest) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s WriteRequest) GoString() string {\n\treturn s.String()\n}\n\n// SetDeleteRequest sets the DeleteRequest field's value.\nfunc (s *WriteRequest) SetDeleteRequest(v *DeleteRequest) *WriteRequest {\n\ts.DeleteRequest = v\n\treturn s\n}\n\n// SetPutRequest sets the PutRequest field's value.\nfunc (s *WriteRequest) SetPutRequest(v *PutRequest) *WriteRequest {\n\ts.PutRequest = v\n\treturn s\n}\n\nconst (\n\t// AttributeActionAdd is a AttributeAction enum value\n\tAttributeActionAdd = \"ADD\"\n\n\t// AttributeActionPut is a AttributeAction enum value\n\tAttributeActionPut = \"PUT\"\n\n\t// AttributeActionDelete is a AttributeAction enum value\n\tAttributeActionDelete = \"DELETE\"\n)\n\n// AttributeAction_Values returns all elements of the AttributeAction enum\nfunc AttributeAction_Values() []string {\n\treturn []string{\n\t\tAttributeActionAdd,\n\t\tAttributeActionPut,\n\t\tAttributeActionDelete,\n\t}\n}\n\nconst (\n\t// BackupStatusCreating is a BackupStatus enum value\n\tBackupStatusCreating = \"CREATING\"\n\n\t// BackupStatusDeleted is a BackupStatus enum value\n\tBackupStatusDeleted = \"DELETED\"\n\n\t// BackupStatusAvailable is a BackupStatus enum value\n\tBackupStatusAvailable = \"AVAILABLE\"\n)\n\n// BackupStatus_Values returns all elements of the BackupStatus enum\nfunc BackupStatus_Values() []string {\n\treturn []string{\n\t\tBackupStatusCreating,\n\t\tBackupStatusDeleted,\n\t\tBackupStatusAvailable,\n\t}\n}\n\nconst (\n\t// BackupTypeUser is a BackupType enum value\n\tBackupTypeUser = \"USER\"\n\n\t// BackupTypeSystem is a BackupType enum value\n\tBackupTypeSystem = \"SYSTEM\"\n\n\t// BackupTypeAwsBackup is a BackupType enum value\n\tBackupTypeAwsBackup = \"AWS_BACKUP\"\n)\n\n// BackupType_Values returns all elements of the BackupType enum\nfunc BackupType_Values() []string {\n\treturn []string{\n\t\tBackupTypeUser,\n\t\tBackupTypeSystem,\n\t\tBackupTypeAwsBackup,\n\t}\n}\n\nconst (\n\t// BackupTypeFilterUser is a BackupTypeFilter enum value\n\tBackupTypeFilterUser = \"USER\"\n\n\t// BackupTypeFilterSystem is a BackupTypeFilter enum value\n\tBackupTypeFilterSystem = \"SYSTEM\"\n\n\t// BackupTypeFilterAwsBackup is a BackupTypeFilter enum value\n\tBackupTypeFilterAwsBackup = \"AWS_BACKUP\"\n\n\t// BackupTypeFilterAll is a BackupTypeFilter enum value\n\tBackupTypeFilterAll = \"ALL\"\n)\n\n// BackupTypeFilter_Values returns all elements of the BackupTypeFilter enum\nfunc BackupTypeFilter_Values() []string {\n\treturn []string{\n\t\tBackupTypeFilterUser,\n\t\tBackupTypeFilterSystem,\n\t\tBackupTypeFilterAwsBackup,\n\t\tBackupTypeFilterAll,\n\t}\n}\n\nconst (\n\t// BatchStatementErrorCodeEnumConditionalCheckFailed is a BatchStatementErrorCodeEnum enum value\n\tBatchStatementErrorCodeEnumConditionalCheckFailed = \"ConditionalCheckFailed\"\n\n\t// BatchStatementErrorCodeEnumItemCollectionSizeLimitExceeded is a BatchStatementErrorCodeEnum enum value\n\tBatchStatementErrorCodeEnumItemCollectionSizeLimitExceeded = \"ItemCollectionSizeLimitExceeded\"\n\n\t// BatchStatementErrorCodeEnumRequestLimitExceeded is a BatchStatementErrorCodeEnum enum value\n\tBatchStatementErrorCodeEnumRequestLimitExceeded = \"RequestLimitExceeded\"\n\n\t// BatchStatementErrorCodeEnumValidationError is a BatchStatementErrorCodeEnum enum value\n\tBatchStatementErrorCodeEnumValidationError = \"ValidationError\"\n\n\t// BatchStatementErrorCodeEnumProvisionedThroughputExceeded is a BatchStatementErrorCodeEnum enum value\n\tBatchStatementErrorCodeEnumProvisionedThroughputExceeded = \"ProvisionedThroughputExceeded\"\n\n\t// BatchStatementErrorCodeEnumTransactionConflict is a BatchStatementErrorCodeEnum enum value\n\tBatchStatementErrorCodeEnumTransactionConflict = \"TransactionConflict\"\n\n\t// BatchStatementErrorCodeEnumThrottlingError is a BatchStatementErrorCodeEnum enum value\n\tBatchStatementErrorCodeEnumThrottlingError = \"ThrottlingError\"\n\n\t// BatchStatementErrorCodeEnumInternalServerError is a BatchStatementErrorCodeEnum enum value\n\tBatchStatementErrorCodeEnumInternalServerError = \"InternalServerError\"\n\n\t// BatchStatementErrorCodeEnumResourceNotFound is a BatchStatementErrorCodeEnum enum value\n\tBatchStatementErrorCodeEnumResourceNotFound = \"ResourceNotFound\"\n\n\t// BatchStatementErrorCodeEnumAccessDenied is a BatchStatementErrorCodeEnum enum value\n\tBatchStatementErrorCodeEnumAccessDenied = \"AccessDenied\"\n\n\t// BatchStatementErrorCodeEnumDuplicateItem is a BatchStatementErrorCodeEnum enum value\n\tBatchStatementErrorCodeEnumDuplicateItem = \"DuplicateItem\"\n)\n\n// BatchStatementErrorCodeEnum_Values returns all elements of the BatchStatementErrorCodeEnum enum\nfunc BatchStatementErrorCodeEnum_Values() []string {\n\treturn []string{\n\t\tBatchStatementErrorCodeEnumConditionalCheckFailed,\n\t\tBatchStatementErrorCodeEnumItemCollectionSizeLimitExceeded,\n\t\tBatchStatementErrorCodeEnumRequestLimitExceeded,\n\t\tBatchStatementErrorCodeEnumValidationError,\n\t\tBatchStatementErrorCodeEnumProvisionedThroughputExceeded,\n\t\tBatchStatementErrorCodeEnumTransactionConflict,\n\t\tBatchStatementErrorCodeEnumThrottlingError,\n\t\tBatchStatementErrorCodeEnumInternalServerError,\n\t\tBatchStatementErrorCodeEnumResourceNotFound,\n\t\tBatchStatementErrorCodeEnumAccessDenied,\n\t\tBatchStatementErrorCodeEnumDuplicateItem,\n\t}\n}\n\nconst (\n\t// BillingModeProvisioned is a BillingMode enum value\n\tBillingModeProvisioned = \"PROVISIONED\"\n\n\t// BillingModePayPerRequest is a BillingMode enum value\n\tBillingModePayPerRequest = \"PAY_PER_REQUEST\"\n)\n\n// BillingMode_Values returns all elements of the BillingMode enum\nfunc BillingMode_Values() []string {\n\treturn []string{\n\t\tBillingModeProvisioned,\n\t\tBillingModePayPerRequest,\n\t}\n}\n\nconst (\n\t// ComparisonOperatorEq is a ComparisonOperator enum value\n\tComparisonOperatorEq = \"EQ\"\n\n\t// ComparisonOperatorNe is a ComparisonOperator enum value\n\tComparisonOperatorNe = \"NE\"\n\n\t// ComparisonOperatorIn is a ComparisonOperator enum value\n\tComparisonOperatorIn = \"IN\"\n\n\t// ComparisonOperatorLe is a ComparisonOperator enum value\n\tComparisonOperatorLe = \"LE\"\n\n\t// ComparisonOperatorLt is a ComparisonOperator enum value\n\tComparisonOperatorLt = \"LT\"\n\n\t// ComparisonOperatorGe is a ComparisonOperator enum value\n\tComparisonOperatorGe = \"GE\"\n\n\t// ComparisonOperatorGt is a ComparisonOperator enum value\n\tComparisonOperatorGt = \"GT\"\n\n\t// ComparisonOperatorBetween is a ComparisonOperator enum value\n\tComparisonOperatorBetween = \"BETWEEN\"\n\n\t// ComparisonOperatorNotNull is a ComparisonOperator enum value\n\tComparisonOperatorNotNull = \"NOT_NULL\"\n\n\t// ComparisonOperatorNull is a ComparisonOperator enum value\n\tComparisonOperatorNull = \"NULL\"\n\n\t// ComparisonOperatorContains is a ComparisonOperator enum value\n\tComparisonOperatorContains = \"CONTAINS\"\n\n\t// ComparisonOperatorNotContains is a ComparisonOperator enum value\n\tComparisonOperatorNotContains = \"NOT_CONTAINS\"\n\n\t// ComparisonOperatorBeginsWith is a ComparisonOperator enum value\n\tComparisonOperatorBeginsWith = \"BEGINS_WITH\"\n)\n\n// ComparisonOperator_Values returns all elements of the ComparisonOperator enum\nfunc ComparisonOperator_Values() []string {\n\treturn []string{\n\t\tComparisonOperatorEq,\n\t\tComparisonOperatorNe,\n\t\tComparisonOperatorIn,\n\t\tComparisonOperatorLe,\n\t\tComparisonOperatorLt,\n\t\tComparisonOperatorGe,\n\t\tComparisonOperatorGt,\n\t\tComparisonOperatorBetween,\n\t\tComparisonOperatorNotNull,\n\t\tComparisonOperatorNull,\n\t\tComparisonOperatorContains,\n\t\tComparisonOperatorNotContains,\n\t\tComparisonOperatorBeginsWith,\n\t}\n}\n\nconst (\n\t// ConditionalOperatorAnd is a ConditionalOperator enum value\n\tConditionalOperatorAnd = \"AND\"\n\n\t// ConditionalOperatorOr is a ConditionalOperator enum value\n\tConditionalOperatorOr = \"OR\"\n)\n\n// ConditionalOperator_Values returns all elements of the ConditionalOperator enum\nfunc ConditionalOperator_Values() []string {\n\treturn []string{\n\t\tConditionalOperatorAnd,\n\t\tConditionalOperatorOr,\n\t}\n}\n\nconst (\n\t// ContinuousBackupsStatusEnabled is a ContinuousBackupsStatus enum value\n\tContinuousBackupsStatusEnabled = \"ENABLED\"\n\n\t// ContinuousBackupsStatusDisabled is a ContinuousBackupsStatus enum value\n\tContinuousBackupsStatusDisabled = \"DISABLED\"\n)\n\n// ContinuousBackupsStatus_Values returns all elements of the ContinuousBackupsStatus enum\nfunc ContinuousBackupsStatus_Values() []string {\n\treturn []string{\n\t\tContinuousBackupsStatusEnabled,\n\t\tContinuousBackupsStatusDisabled,\n\t}\n}\n\nconst (\n\t// ContributorInsightsActionEnable is a ContributorInsightsAction enum value\n\tContributorInsightsActionEnable = \"ENABLE\"\n\n\t// ContributorInsightsActionDisable is a ContributorInsightsAction enum value\n\tContributorInsightsActionDisable = \"DISABLE\"\n)\n\n// ContributorInsightsAction_Values returns all elements of the ContributorInsightsAction enum\nfunc ContributorInsightsAction_Values() []string {\n\treturn []string{\n\t\tContributorInsightsActionEnable,\n\t\tContributorInsightsActionDisable,\n\t}\n}\n\nconst (\n\t// ContributorInsightsStatusEnabling is a ContributorInsightsStatus enum value\n\tContributorInsightsStatusEnabling = \"ENABLING\"\n\n\t// ContributorInsightsStatusEnabled is a ContributorInsightsStatus enum value\n\tContributorInsightsStatusEnabled = \"ENABLED\"\n\n\t// ContributorInsightsStatusDisabling is a ContributorInsightsStatus enum value\n\tContributorInsightsStatusDisabling = \"DISABLING\"\n\n\t// ContributorInsightsStatusDisabled is a ContributorInsightsStatus enum value\n\tContributorInsightsStatusDisabled = \"DISABLED\"\n\n\t// ContributorInsightsStatusFailed is a ContributorInsightsStatus enum value\n\tContributorInsightsStatusFailed = \"FAILED\"\n)\n\n// ContributorInsightsStatus_Values returns all elements of the ContributorInsightsStatus enum\nfunc ContributorInsightsStatus_Values() []string {\n\treturn []string{\n\t\tContributorInsightsStatusEnabling,\n\t\tContributorInsightsStatusEnabled,\n\t\tContributorInsightsStatusDisabling,\n\t\tContributorInsightsStatusDisabled,\n\t\tContributorInsightsStatusFailed,\n\t}\n}\n\nconst (\n\t// DestinationStatusEnabling is a DestinationStatus enum value\n\tDestinationStatusEnabling = \"ENABLING\"\n\n\t// DestinationStatusActive is a DestinationStatus enum value\n\tDestinationStatusActive = \"ACTIVE\"\n\n\t// DestinationStatusDisabling is a DestinationStatus enum value\n\tDestinationStatusDisabling = \"DISABLING\"\n\n\t// DestinationStatusDisabled is a DestinationStatus enum value\n\tDestinationStatusDisabled = \"DISABLED\"\n\n\t// DestinationStatusEnableFailed is a DestinationStatus enum value\n\tDestinationStatusEnableFailed = \"ENABLE_FAILED\"\n)\n\n// DestinationStatus_Values returns all elements of the DestinationStatus enum\nfunc DestinationStatus_Values() []string {\n\treturn []string{\n\t\tDestinationStatusEnabling,\n\t\tDestinationStatusActive,\n\t\tDestinationStatusDisabling,\n\t\tDestinationStatusDisabled,\n\t\tDestinationStatusEnableFailed,\n\t}\n}\n\nconst (\n\t// ExportFormatDynamodbJson is a ExportFormat enum value\n\tExportFormatDynamodbJson = \"DYNAMODB_JSON\"\n\n\t// ExportFormatIon is a ExportFormat enum value\n\tExportFormatIon = \"ION\"\n)\n\n// ExportFormat_Values returns all elements of the ExportFormat enum\nfunc ExportFormat_Values() []string {\n\treturn []string{\n\t\tExportFormatDynamodbJson,\n\t\tExportFormatIon,\n\t}\n}\n\nconst (\n\t// ExportStatusInProgress is a ExportStatus enum value\n\tExportStatusInProgress = \"IN_PROGRESS\"\n\n\t// ExportStatusCompleted is a ExportStatus enum value\n\tExportStatusCompleted = \"COMPLETED\"\n\n\t// ExportStatusFailed is a ExportStatus enum value\n\tExportStatusFailed = \"FAILED\"\n)\n\n// ExportStatus_Values returns all elements of the ExportStatus enum\nfunc ExportStatus_Values() []string {\n\treturn []string{\n\t\tExportStatusInProgress,\n\t\tExportStatusCompleted,\n\t\tExportStatusFailed,\n\t}\n}\n\nconst (\n\t// ExportTypeFullExport is a ExportType enum value\n\tExportTypeFullExport = \"FULL_EXPORT\"\n\n\t// ExportTypeIncrementalExport is a ExportType enum value\n\tExportTypeIncrementalExport = \"INCREMENTAL_EXPORT\"\n)\n\n// ExportType_Values returns all elements of the ExportType enum\nfunc ExportType_Values() []string {\n\treturn []string{\n\t\tExportTypeFullExport,\n\t\tExportTypeIncrementalExport,\n\t}\n}\n\nconst (\n\t// ExportViewTypeNewImage is a ExportViewType enum value\n\tExportViewTypeNewImage = \"NEW_IMAGE\"\n\n\t// ExportViewTypeNewAndOldImages is a ExportViewType enum value\n\tExportViewTypeNewAndOldImages = \"NEW_AND_OLD_IMAGES\"\n)\n\n// ExportViewType_Values returns all elements of the ExportViewType enum\nfunc ExportViewType_Values() []string {\n\treturn []string{\n\t\tExportViewTypeNewImage,\n\t\tExportViewTypeNewAndOldImages,\n\t}\n}\n\nconst (\n\t// GlobalTableStatusCreating is a GlobalTableStatus enum value\n\tGlobalTableStatusCreating = \"CREATING\"\n\n\t// GlobalTableStatusActive is a GlobalTableStatus enum value\n\tGlobalTableStatusActive = \"ACTIVE\"\n\n\t// GlobalTableStatusDeleting is a GlobalTableStatus enum value\n\tGlobalTableStatusDeleting = \"DELETING\"\n\n\t// GlobalTableStatusUpdating is a GlobalTableStatus enum value\n\tGlobalTableStatusUpdating = \"UPDATING\"\n)\n\n// GlobalTableStatus_Values returns all elements of the GlobalTableStatus enum\nfunc GlobalTableStatus_Values() []string {\n\treturn []string{\n\t\tGlobalTableStatusCreating,\n\t\tGlobalTableStatusActive,\n\t\tGlobalTableStatusDeleting,\n\t\tGlobalTableStatusUpdating,\n\t}\n}\n\nconst (\n\t// ImportStatusInProgress is a ImportStatus enum value\n\tImportStatusInProgress = \"IN_PROGRESS\"\n\n\t// ImportStatusCompleted is a ImportStatus enum value\n\tImportStatusCompleted = \"COMPLETED\"\n\n\t// ImportStatusCancelling is a ImportStatus enum value\n\tImportStatusCancelling = \"CANCELLING\"\n\n\t// ImportStatusCancelled is a ImportStatus enum value\n\tImportStatusCancelled = \"CANCELLED\"\n\n\t// ImportStatusFailed is a ImportStatus enum value\n\tImportStatusFailed = \"FAILED\"\n)\n\n// ImportStatus_Values returns all elements of the ImportStatus enum\nfunc ImportStatus_Values() []string {\n\treturn []string{\n\t\tImportStatusInProgress,\n\t\tImportStatusCompleted,\n\t\tImportStatusCancelling,\n\t\tImportStatusCancelled,\n\t\tImportStatusFailed,\n\t}\n}\n\nconst (\n\t// IndexStatusCreating is a IndexStatus enum value\n\tIndexStatusCreating = \"CREATING\"\n\n\t// IndexStatusUpdating is a IndexStatus enum value\n\tIndexStatusUpdating = \"UPDATING\"\n\n\t// IndexStatusDeleting is a IndexStatus enum value\n\tIndexStatusDeleting = \"DELETING\"\n\n\t// IndexStatusActive is a IndexStatus enum value\n\tIndexStatusActive = \"ACTIVE\"\n)\n\n// IndexStatus_Values returns all elements of the IndexStatus enum\nfunc IndexStatus_Values() []string {\n\treturn []string{\n\t\tIndexStatusCreating,\n\t\tIndexStatusUpdating,\n\t\tIndexStatusDeleting,\n\t\tIndexStatusActive,\n\t}\n}\n\nconst (\n\t// InputCompressionTypeGzip is a InputCompressionType enum value\n\tInputCompressionTypeGzip = \"GZIP\"\n\n\t// InputCompressionTypeZstd is a InputCompressionType enum value\n\tInputCompressionTypeZstd = \"ZSTD\"\n\n\t// InputCompressionTypeNone is a InputCompressionType enum value\n\tInputCompressionTypeNone = \"NONE\"\n)\n\n// InputCompressionType_Values returns all elements of the InputCompressionType enum\nfunc InputCompressionType_Values() []string {\n\treturn []string{\n\t\tInputCompressionTypeGzip,\n\t\tInputCompressionTypeZstd,\n\t\tInputCompressionTypeNone,\n\t}\n}\n\nconst (\n\t// InputFormatDynamodbJson is a InputFormat enum value\n\tInputFormatDynamodbJson = \"DYNAMODB_JSON\"\n\n\t// InputFormatIon is a InputFormat enum value\n\tInputFormatIon = \"ION\"\n\n\t// InputFormatCsv is a InputFormat enum value\n\tInputFormatCsv = \"CSV\"\n)\n\n// InputFormat_Values returns all elements of the InputFormat enum\nfunc InputFormat_Values() []string {\n\treturn []string{\n\t\tInputFormatDynamodbJson,\n\t\tInputFormatIon,\n\t\tInputFormatCsv,\n\t}\n}\n\nconst (\n\t// KeyTypeHash is a KeyType enum value\n\tKeyTypeHash = \"HASH\"\n\n\t// KeyTypeRange is a KeyType enum value\n\tKeyTypeRange = \"RANGE\"\n)\n\n// KeyType_Values returns all elements of the KeyType enum\nfunc KeyType_Values() []string {\n\treturn []string{\n\t\tKeyTypeHash,\n\t\tKeyTypeRange,\n\t}\n}\n\nconst (\n\t// PointInTimeRecoveryStatusEnabled is a PointInTimeRecoveryStatus enum value\n\tPointInTimeRecoveryStatusEnabled = \"ENABLED\"\n\n\t// PointInTimeRecoveryStatusDisabled is a PointInTimeRecoveryStatus enum value\n\tPointInTimeRecoveryStatusDisabled = \"DISABLED\"\n)\n\n// PointInTimeRecoveryStatus_Values returns all elements of the PointInTimeRecoveryStatus enum\nfunc PointInTimeRecoveryStatus_Values() []string {\n\treturn []string{\n\t\tPointInTimeRecoveryStatusEnabled,\n\t\tPointInTimeRecoveryStatusDisabled,\n\t}\n}\n\nconst (\n\t// ProjectionTypeAll is a ProjectionType enum value\n\tProjectionTypeAll = \"ALL\"\n\n\t// ProjectionTypeKeysOnly is a ProjectionType enum value\n\tProjectionTypeKeysOnly = \"KEYS_ONLY\"\n\n\t// ProjectionTypeInclude is a ProjectionType enum value\n\tProjectionTypeInclude = \"INCLUDE\"\n)\n\n// ProjectionType_Values returns all elements of the ProjectionType enum\nfunc ProjectionType_Values() []string {\n\treturn []string{\n\t\tProjectionTypeAll,\n\t\tProjectionTypeKeysOnly,\n\t\tProjectionTypeInclude,\n\t}\n}\n\nconst (\n\t// ReplicaStatusCreating is a ReplicaStatus enum value\n\tReplicaStatusCreating = \"CREATING\"\n\n\t// ReplicaStatusCreationFailed is a ReplicaStatus enum value\n\tReplicaStatusCreationFailed = \"CREATION_FAILED\"\n\n\t// ReplicaStatusUpdating is a ReplicaStatus enum value\n\tReplicaStatusUpdating = \"UPDATING\"\n\n\t// ReplicaStatusDeleting is a ReplicaStatus enum value\n\tReplicaStatusDeleting = \"DELETING\"\n\n\t// ReplicaStatusActive is a ReplicaStatus enum value\n\tReplicaStatusActive = \"ACTIVE\"\n\n\t// ReplicaStatusRegionDisabled is a ReplicaStatus enum value\n\tReplicaStatusRegionDisabled = \"REGION_DISABLED\"\n\n\t// ReplicaStatusInaccessibleEncryptionCredentials is a ReplicaStatus enum value\n\tReplicaStatusInaccessibleEncryptionCredentials = \"INACCESSIBLE_ENCRYPTION_CREDENTIALS\"\n)\n\n// ReplicaStatus_Values returns all elements of the ReplicaStatus enum\nfunc ReplicaStatus_Values() []string {\n\treturn []string{\n\t\tReplicaStatusCreating,\n\t\tReplicaStatusCreationFailed,\n\t\tReplicaStatusUpdating,\n\t\tReplicaStatusDeleting,\n\t\tReplicaStatusActive,\n\t\tReplicaStatusRegionDisabled,\n\t\tReplicaStatusInaccessibleEncryptionCredentials,\n\t}\n}\n\n// Determines the level of detail about either provisioned or on-demand throughput\n// consumption that is returned in the response:\n//\n//   - INDEXES - The response includes the aggregate ConsumedCapacity for the\n//     operation, together with ConsumedCapacity for each table and secondary\n//     index that was accessed. Note that some operations, such as GetItem and\n//     BatchGetItem, do not access any indexes at all. In these cases, specifying\n//     INDEXES will only return ConsumedCapacity information for table(s).\n//\n//   - TOTAL - The response includes only the aggregate ConsumedCapacity for\n//     the operation.\n//\n//   - NONE - No ConsumedCapacity details are included in the response.\nconst (\n\t// ReturnConsumedCapacityIndexes is a ReturnConsumedCapacity enum value\n\tReturnConsumedCapacityIndexes = \"INDEXES\"\n\n\t// ReturnConsumedCapacityTotal is a ReturnConsumedCapacity enum value\n\tReturnConsumedCapacityTotal = \"TOTAL\"\n\n\t// ReturnConsumedCapacityNone is a ReturnConsumedCapacity enum value\n\tReturnConsumedCapacityNone = \"NONE\"\n)\n\n// ReturnConsumedCapacity_Values returns all elements of the ReturnConsumedCapacity enum\nfunc ReturnConsumedCapacity_Values() []string {\n\treturn []string{\n\t\tReturnConsumedCapacityIndexes,\n\t\tReturnConsumedCapacityTotal,\n\t\tReturnConsumedCapacityNone,\n\t}\n}\n\nconst (\n\t// ReturnItemCollectionMetricsSize is a ReturnItemCollectionMetrics enum value\n\tReturnItemCollectionMetricsSize = \"SIZE\"\n\n\t// ReturnItemCollectionMetricsNone is a ReturnItemCollectionMetrics enum value\n\tReturnItemCollectionMetricsNone = \"NONE\"\n)\n\n// ReturnItemCollectionMetrics_Values returns all elements of the ReturnItemCollectionMetrics enum\nfunc ReturnItemCollectionMetrics_Values() []string {\n\treturn []string{\n\t\tReturnItemCollectionMetricsSize,\n\t\tReturnItemCollectionMetricsNone,\n\t}\n}\n\nconst (\n\t// ReturnValueNone is a ReturnValue enum value\n\tReturnValueNone = \"NONE\"\n\n\t// ReturnValueAllOld is a ReturnValue enum value\n\tReturnValueAllOld = \"ALL_OLD\"\n\n\t// ReturnValueUpdatedOld is a ReturnValue enum value\n\tReturnValueUpdatedOld = \"UPDATED_OLD\"\n\n\t// ReturnValueAllNew is a ReturnValue enum value\n\tReturnValueAllNew = \"ALL_NEW\"\n\n\t// ReturnValueUpdatedNew is a ReturnValue enum value\n\tReturnValueUpdatedNew = \"UPDATED_NEW\"\n)\n\n// ReturnValue_Values returns all elements of the ReturnValue enum\nfunc ReturnValue_Values() []string {\n\treturn []string{\n\t\tReturnValueNone,\n\t\tReturnValueAllOld,\n\t\tReturnValueUpdatedOld,\n\t\tReturnValueAllNew,\n\t\tReturnValueUpdatedNew,\n\t}\n}\n\nconst (\n\t// ReturnValuesOnConditionCheckFailureAllOld is a ReturnValuesOnConditionCheckFailure enum value\n\tReturnValuesOnConditionCheckFailureAllOld = \"ALL_OLD\"\n\n\t// ReturnValuesOnConditionCheckFailureNone is a ReturnValuesOnConditionCheckFailure enum value\n\tReturnValuesOnConditionCheckFailureNone = \"NONE\"\n)\n\n// ReturnValuesOnConditionCheckFailure_Values returns all elements of the ReturnValuesOnConditionCheckFailure enum\nfunc ReturnValuesOnConditionCheckFailure_Values() []string {\n\treturn []string{\n\t\tReturnValuesOnConditionCheckFailureAllOld,\n\t\tReturnValuesOnConditionCheckFailureNone,\n\t}\n}\n\nconst (\n\t// S3SseAlgorithmAes256 is a S3SseAlgorithm enum value\n\tS3SseAlgorithmAes256 = \"AES256\"\n\n\t// S3SseAlgorithmKms is a S3SseAlgorithm enum value\n\tS3SseAlgorithmKms = \"KMS\"\n)\n\n// S3SseAlgorithm_Values returns all elements of the S3SseAlgorithm enum\nfunc S3SseAlgorithm_Values() []string {\n\treturn []string{\n\t\tS3SseAlgorithmAes256,\n\t\tS3SseAlgorithmKms,\n\t}\n}\n\nconst (\n\t// SSEStatusEnabling is a SSEStatus enum value\n\tSSEStatusEnabling = \"ENABLING\"\n\n\t// SSEStatusEnabled is a SSEStatus enum value\n\tSSEStatusEnabled = \"ENABLED\"\n\n\t// SSEStatusDisabling is a SSEStatus enum value\n\tSSEStatusDisabling = \"DISABLING\"\n\n\t// SSEStatusDisabled is a SSEStatus enum value\n\tSSEStatusDisabled = \"DISABLED\"\n\n\t// SSEStatusUpdating is a SSEStatus enum value\n\tSSEStatusUpdating = \"UPDATING\"\n)\n\n// SSEStatus_Values returns all elements of the SSEStatus enum\nfunc SSEStatus_Values() []string {\n\treturn []string{\n\t\tSSEStatusEnabling,\n\t\tSSEStatusEnabled,\n\t\tSSEStatusDisabling,\n\t\tSSEStatusDisabled,\n\t\tSSEStatusUpdating,\n\t}\n}\n\nconst (\n\t// SSETypeAes256 is a SSEType enum value\n\tSSETypeAes256 = \"AES256\"\n\n\t// SSETypeKms is a SSEType enum value\n\tSSETypeKms = \"KMS\"\n)\n\n// SSEType_Values returns all elements of the SSEType enum\nfunc SSEType_Values() []string {\n\treturn []string{\n\t\tSSETypeAes256,\n\t\tSSETypeKms,\n\t}\n}\n\nconst (\n\t// ScalarAttributeTypeS is a ScalarAttributeType enum value\n\tScalarAttributeTypeS = \"S\"\n\n\t// ScalarAttributeTypeN is a ScalarAttributeType enum value\n\tScalarAttributeTypeN = \"N\"\n\n\t// ScalarAttributeTypeB is a ScalarAttributeType enum value\n\tScalarAttributeTypeB = \"B\"\n)\n\n// ScalarAttributeType_Values returns all elements of the ScalarAttributeType enum\nfunc ScalarAttributeType_Values() []string {\n\treturn []string{\n\t\tScalarAttributeTypeS,\n\t\tScalarAttributeTypeN,\n\t\tScalarAttributeTypeB,\n\t}\n}\n\nconst (\n\t// SelectAllAttributes is a Select enum value\n\tSelectAllAttributes = \"ALL_ATTRIBUTES\"\n\n\t// SelectAllProjectedAttributes is a Select enum value\n\tSelectAllProjectedAttributes = \"ALL_PROJECTED_ATTRIBUTES\"\n\n\t// SelectSpecificAttributes is a Select enum value\n\tSelectSpecificAttributes = \"SPECIFIC_ATTRIBUTES\"\n\n\t// SelectCount is a Select enum value\n\tSelectCount = \"COUNT\"\n)\n\n// Select_Values returns all elements of the Select enum\nfunc Select_Values() []string {\n\treturn []string{\n\t\tSelectAllAttributes,\n\t\tSelectAllProjectedAttributes,\n\t\tSelectSpecificAttributes,\n\t\tSelectCount,\n\t}\n}\n\nconst (\n\t// StreamViewTypeNewImage is a StreamViewType enum value\n\tStreamViewTypeNewImage = \"NEW_IMAGE\"\n\n\t// StreamViewTypeOldImage is a StreamViewType enum value\n\tStreamViewTypeOldImage = \"OLD_IMAGE\"\n\n\t// StreamViewTypeNewAndOldImages is a StreamViewType enum value\n\tStreamViewTypeNewAndOldImages = \"NEW_AND_OLD_IMAGES\"\n\n\t// StreamViewTypeKeysOnly is a StreamViewType enum value\n\tStreamViewTypeKeysOnly = \"KEYS_ONLY\"\n)\n\n// StreamViewType_Values returns all elements of the StreamViewType enum\nfunc StreamViewType_Values() []string {\n\treturn []string{\n\t\tStreamViewTypeNewImage,\n\t\tStreamViewTypeOldImage,\n\t\tStreamViewTypeNewAndOldImages,\n\t\tStreamViewTypeKeysOnly,\n\t}\n}\n\nconst (\n\t// TableClassStandard is a TableClass enum value\n\tTableClassStandard = \"STANDARD\"\n\n\t// TableClassStandardInfrequentAccess is a TableClass enum value\n\tTableClassStandardInfrequentAccess = \"STANDARD_INFREQUENT_ACCESS\"\n)\n\n// TableClass_Values returns all elements of the TableClass enum\nfunc TableClass_Values() []string {\n\treturn []string{\n\t\tTableClassStandard,\n\t\tTableClassStandardInfrequentAccess,\n\t}\n}\n\nconst (\n\t// TableStatusCreating is a TableStatus enum value\n\tTableStatusCreating = \"CREATING\"\n\n\t// TableStatusUpdating is a TableStatus enum value\n\tTableStatusUpdating = \"UPDATING\"\n\n\t// TableStatusDeleting is a TableStatus enum value\n\tTableStatusDeleting = \"DELETING\"\n\n\t// TableStatusActive is a TableStatus enum value\n\tTableStatusActive = \"ACTIVE\"\n\n\t// TableStatusInaccessibleEncryptionCredentials is a TableStatus enum value\n\tTableStatusInaccessibleEncryptionCredentials = \"INACCESSIBLE_ENCRYPTION_CREDENTIALS\"\n\n\t// TableStatusArchiving is a TableStatus enum value\n\tTableStatusArchiving = \"ARCHIVING\"\n\n\t// TableStatusArchived is a TableStatus enum value\n\tTableStatusArchived = \"ARCHIVED\"\n)\n\n// TableStatus_Values returns all elements of the TableStatus enum\nfunc TableStatus_Values() []string {\n\treturn []string{\n\t\tTableStatusCreating,\n\t\tTableStatusUpdating,\n\t\tTableStatusDeleting,\n\t\tTableStatusActive,\n\t\tTableStatusInaccessibleEncryptionCredentials,\n\t\tTableStatusArchiving,\n\t\tTableStatusArchived,\n\t}\n}\n\nconst (\n\t// TimeToLiveStatusEnabling is a TimeToLiveStatus enum value\n\tTimeToLiveStatusEnabling = \"ENABLING\"\n\n\t// TimeToLiveStatusDisabling is a TimeToLiveStatus enum value\n\tTimeToLiveStatusDisabling = \"DISABLING\"\n\n\t// TimeToLiveStatusEnabled is a TimeToLiveStatus enum value\n\tTimeToLiveStatusEnabled = \"ENABLED\"\n\n\t// TimeToLiveStatusDisabled is a TimeToLiveStatus enum value\n\tTimeToLiveStatusDisabled = \"DISABLED\"\n)\n\n// TimeToLiveStatus_Values returns all elements of the TimeToLiveStatus enum\nfunc TimeToLiveStatus_Values() []string {\n\treturn []string{\n\t\tTimeToLiveStatusEnabling,\n\t\tTimeToLiveStatusDisabling,\n\t\tTimeToLiveStatusEnabled,\n\t\tTimeToLiveStatusDisabled,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/dynamodb/customizations.go",
    "content": "package dynamodb\n\nimport (\n\t\"bytes\"\n\t\"hash/crc32\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/client\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\nfunc init() {\n\tinitClient = func(c *client.Client) {\n\t\tif c.Config.Retryer == nil {\n\t\t\t// Only override the retryer with a custom one if the config\n\t\t\t// does not already contain a retryer\n\t\t\tsetCustomRetryer(c)\n\t\t}\n\n\t\tc.Handlers.Build.PushBack(disableCompression)\n\t\tc.Handlers.Unmarshal.PushFront(validateCRC32)\n\t}\n}\n\nfunc setCustomRetryer(c *client.Client) {\n\tmaxRetries := aws.IntValue(c.Config.MaxRetries)\n\tif c.Config.MaxRetries == nil || maxRetries == aws.UseServiceDefaultRetries {\n\t\tmaxRetries = 10\n\t}\n\n\tc.Retryer = client.DefaultRetryer{\n\t\tNumMaxRetries: maxRetries,\n\t\tMinRetryDelay: 50 * time.Millisecond,\n\t}\n}\n\nfunc drainBody(b io.ReadCloser, length int64) (out *bytes.Buffer, err error) {\n\tif length < 0 {\n\t\tlength = 0\n\t}\n\tbuf := bytes.NewBuffer(make([]byte, 0, length))\n\n\tif _, err = buf.ReadFrom(b); err != nil {\n\t\treturn nil, err\n\t}\n\tif err = b.Close(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf, nil\n}\n\nfunc disableCompression(r *request.Request) {\n\tr.HTTPRequest.Header.Set(\"Accept-Encoding\", \"identity\")\n}\n\nfunc validateCRC32(r *request.Request) {\n\tif r.Error != nil {\n\t\treturn // already have an error, no need to verify CRC\n\t}\n\n\t// Checksum validation is off, skip\n\tif aws.BoolValue(r.Config.DisableComputeChecksums) {\n\t\treturn\n\t}\n\n\t// Try to get CRC from response\n\theader := r.HTTPResponse.Header.Get(\"X-Amz-Crc32\")\n\tif header == \"\" {\n\t\treturn // No header, skip\n\t}\n\n\texpected, err := strconv.ParseUint(header, 10, 32)\n\tif err != nil {\n\t\treturn // Could not determine CRC value, skip\n\t}\n\n\tbuf, err := drainBody(r.HTTPResponse.Body, r.HTTPResponse.ContentLength)\n\tif err != nil { // failed to read the response body, skip\n\t\treturn\n\t}\n\n\t// Reset body for subsequent reads\n\tr.HTTPResponse.Body = ioutil.NopCloser(bytes.NewReader(buf.Bytes()))\n\n\t// Compute the CRC checksum\n\tcrc := crc32.ChecksumIEEE(buf.Bytes())\n\n\tif crc != uint32(expected) {\n\t\t// CRC does not match, set a retryable error\n\t\tr.Retryable = aws.Bool(true)\n\t\tr.Error = awserr.New(\"CRC32CheckFailed\", \"CRC32 integrity check failed\", nil)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/dynamodb/doc.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\n// Package dynamodb provides the client and types for making API\n// requests to Amazon DynamoDB.\n//\n// Amazon DynamoDB is a fully managed NoSQL database service that provides fast\n// and predictable performance with seamless scalability. DynamoDB lets you\n// offload the administrative burdens of operating and scaling a distributed\n// database, so that you don't have to worry about hardware provisioning, setup\n// and configuration, replication, software patching, or cluster scaling.\n//\n// With DynamoDB, you can create database tables that can store and retrieve\n// any amount of data, and serve any level of request traffic. You can scale\n// up or scale down your tables' throughput capacity without downtime or performance\n// degradation, and use the Amazon Web Services Management Console to monitor\n// resource utilization and performance metrics.\n//\n// DynamoDB automatically spreads the data and traffic for your tables over\n// a sufficient number of servers to handle your throughput and storage requirements,\n// while maintaining consistent and fast performance. All of your data is stored\n// on solid state disks (SSDs) and automatically replicated across multiple\n// Availability Zones in an Amazon Web Services Region, providing built-in high\n// availability and data durability.\n//\n// See https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10 for more information on this service.\n//\n// See dynamodb package documentation for more information.\n// https://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/\n//\n// # Using the Client\n//\n// To contact Amazon DynamoDB with the SDK use the New function to create\n// a new service client. With that client you can make API requests to the service.\n// These clients are safe to use concurrently.\n//\n// See the SDK's documentation for more information on how to use the SDK.\n// https://docs.aws.amazon.com/sdk-for-go/api/\n//\n// See aws.Config documentation for more information on configuring SDK clients.\n// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config\n//\n// See the Amazon DynamoDB client DynamoDB for more\n// information on creating client for this service.\n// https://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/#New\npackage dynamodb\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/dynamodb/doc_custom.go",
    "content": "/*\nAttributeValue Marshaling and Unmarshaling Helpers\n\nUtility helpers to marshal and unmarshal AttributeValue to and\nfrom Go types can be found in the dynamodbattribute sub package. This package\nprovides specialized functions for the common ways of working with\nAttributeValues. Such as map[string]*AttributeValue, []*AttributeValue, and\ndirectly with *AttributeValue. This is helpful for marshaling Go types for API\noperations such as PutItem, and unmarshaling Query and Scan APIs' responses.\n\nSee the dynamodbattribute package documentation for more information.\nhttps://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/dynamodbattribute/\n\n# Expression Builders\n\nThe expression package provides utility types and functions to build DynamoDB\nexpression for type safe construction of API ExpressionAttributeNames, and\nExpressionAttribute Values.\n\nThe package represents the various DynamoDB Expressions as structs named\naccordingly. For example, ConditionBuilder represents a DynamoDB Condition\nExpression, an UpdateBuilder represents a DynamoDB Update Expression, and so on.\n\nSee the expression package documentation for more information.\nhttps://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/expression/\n*/\npackage dynamodb\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/dynamodb/errors.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage dynamodb\n\nimport (\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n)\n\nconst (\n\n\t// ErrCodeBackupInUseException for service response error code\n\t// \"BackupInUseException\".\n\t//\n\t// There is another ongoing conflicting backup control plane operation on the\n\t// table. The backup is either being created, deleted or restored to a table.\n\tErrCodeBackupInUseException = \"BackupInUseException\"\n\n\t// ErrCodeBackupNotFoundException for service response error code\n\t// \"BackupNotFoundException\".\n\t//\n\t// Backup not found for the given BackupARN.\n\tErrCodeBackupNotFoundException = \"BackupNotFoundException\"\n\n\t// ErrCodeConditionalCheckFailedException for service response error code\n\t// \"ConditionalCheckFailedException\".\n\t//\n\t// A condition specified in the operation could not be evaluated.\n\tErrCodeConditionalCheckFailedException = \"ConditionalCheckFailedException\"\n\n\t// ErrCodeContinuousBackupsUnavailableException for service response error code\n\t// \"ContinuousBackupsUnavailableException\".\n\t//\n\t// Backups have not yet been enabled for this table.\n\tErrCodeContinuousBackupsUnavailableException = \"ContinuousBackupsUnavailableException\"\n\n\t// ErrCodeDuplicateItemException for service response error code\n\t// \"DuplicateItemException\".\n\t//\n\t// There was an attempt to insert an item with the same primary key as an item\n\t// that already exists in the DynamoDB table.\n\tErrCodeDuplicateItemException = \"DuplicateItemException\"\n\n\t// ErrCodeExportConflictException for service response error code\n\t// \"ExportConflictException\".\n\t//\n\t// There was a conflict when writing to the specified S3 bucket.\n\tErrCodeExportConflictException = \"ExportConflictException\"\n\n\t// ErrCodeExportNotFoundException for service response error code\n\t// \"ExportNotFoundException\".\n\t//\n\t// The specified export was not found.\n\tErrCodeExportNotFoundException = \"ExportNotFoundException\"\n\n\t// ErrCodeGlobalTableAlreadyExistsException for service response error code\n\t// \"GlobalTableAlreadyExistsException\".\n\t//\n\t// The specified global table already exists.\n\tErrCodeGlobalTableAlreadyExistsException = \"GlobalTableAlreadyExistsException\"\n\n\t// ErrCodeGlobalTableNotFoundException for service response error code\n\t// \"GlobalTableNotFoundException\".\n\t//\n\t// The specified global table does not exist.\n\tErrCodeGlobalTableNotFoundException = \"GlobalTableNotFoundException\"\n\n\t// ErrCodeIdempotentParameterMismatchException for service response error code\n\t// \"IdempotentParameterMismatchException\".\n\t//\n\t// DynamoDB rejected the request because you retried a request with a different\n\t// payload but with an idempotent token that was already used.\n\tErrCodeIdempotentParameterMismatchException = \"IdempotentParameterMismatchException\"\n\n\t// ErrCodeImportConflictException for service response error code\n\t// \"ImportConflictException\".\n\t//\n\t// There was a conflict when importing from the specified S3 source. This can\n\t// occur when the current import conflicts with a previous import request that\n\t// had the same client token.\n\tErrCodeImportConflictException = \"ImportConflictException\"\n\n\t// ErrCodeImportNotFoundException for service response error code\n\t// \"ImportNotFoundException\".\n\t//\n\t// The specified import was not found.\n\tErrCodeImportNotFoundException = \"ImportNotFoundException\"\n\n\t// ErrCodeIndexNotFoundException for service response error code\n\t// \"IndexNotFoundException\".\n\t//\n\t// The operation tried to access a nonexistent index.\n\tErrCodeIndexNotFoundException = \"IndexNotFoundException\"\n\n\t// ErrCodeInternalServerError for service response error code\n\t// \"InternalServerError\".\n\t//\n\t// An error occurred on the server side.\n\tErrCodeInternalServerError = \"InternalServerError\"\n\n\t// ErrCodeInvalidExportTimeException for service response error code\n\t// \"InvalidExportTimeException\".\n\t//\n\t// The specified ExportTime is outside of the point in time recovery window.\n\tErrCodeInvalidExportTimeException = \"InvalidExportTimeException\"\n\n\t// ErrCodeInvalidRestoreTimeException for service response error code\n\t// \"InvalidRestoreTimeException\".\n\t//\n\t// An invalid restore time was specified. RestoreDateTime must be between EarliestRestorableDateTime\n\t// and LatestRestorableDateTime.\n\tErrCodeInvalidRestoreTimeException = \"InvalidRestoreTimeException\"\n\n\t// ErrCodeItemCollectionSizeLimitExceededException for service response error code\n\t// \"ItemCollectionSizeLimitExceededException\".\n\t//\n\t// An item collection is too large. This exception is only returned for tables\n\t// that have one or more local secondary indexes.\n\tErrCodeItemCollectionSizeLimitExceededException = \"ItemCollectionSizeLimitExceededException\"\n\n\t// ErrCodeLimitExceededException for service response error code\n\t// \"LimitExceededException\".\n\t//\n\t// There is no limit to the number of daily on-demand backups that can be taken.\n\t//\n\t// For most purposes, up to 500 simultaneous table operations are allowed per\n\t// account. These operations include CreateTable, UpdateTable, DeleteTable,UpdateTimeToLive,\n\t// RestoreTableFromBackup, and RestoreTableToPointInTime.\n\t//\n\t// When you are creating a table with one or more secondary indexes, you can\n\t// have up to 250 such requests running at a time. However, if the table or\n\t// index specifications are complex, then DynamoDB might temporarily reduce\n\t// the number of concurrent operations.\n\t//\n\t// When importing into DynamoDB, up to 50 simultaneous import table operations\n\t// are allowed per account.\n\t//\n\t// There is a soft account quota of 2,500 tables.\n\t//\n\t// GetRecords was called with a value of more than 1000 for the limit request\n\t// parameter.\n\t//\n\t// More than 2 processes are reading from the same streams shard at the same\n\t// time. Exceeding this limit may result in request throttling.\n\tErrCodeLimitExceededException = \"LimitExceededException\"\n\n\t// ErrCodePointInTimeRecoveryUnavailableException for service response error code\n\t// \"PointInTimeRecoveryUnavailableException\".\n\t//\n\t// Point in time recovery has not yet been enabled for this source table.\n\tErrCodePointInTimeRecoveryUnavailableException = \"PointInTimeRecoveryUnavailableException\"\n\n\t// ErrCodeProvisionedThroughputExceededException for service response error code\n\t// \"ProvisionedThroughputExceededException\".\n\t//\n\t// Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n\t// automatically retry requests that receive this exception. Your request is\n\t// eventually successful, unless your retry queue is too large to finish. Reduce\n\t// the frequency of requests and use exponential backoff. For more information,\n\t// go to Error Retries and Exponential Backoff (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff)\n\t// in the Amazon DynamoDB Developer Guide.\n\tErrCodeProvisionedThroughputExceededException = \"ProvisionedThroughputExceededException\"\n\n\t// ErrCodeReplicaAlreadyExistsException for service response error code\n\t// \"ReplicaAlreadyExistsException\".\n\t//\n\t// The specified replica is already part of the global table.\n\tErrCodeReplicaAlreadyExistsException = \"ReplicaAlreadyExistsException\"\n\n\t// ErrCodeReplicaNotFoundException for service response error code\n\t// \"ReplicaNotFoundException\".\n\t//\n\t// The specified replica is no longer part of the global table.\n\tErrCodeReplicaNotFoundException = \"ReplicaNotFoundException\"\n\n\t// ErrCodeRequestLimitExceeded for service response error code\n\t// \"RequestLimitExceeded\".\n\t//\n\t// Throughput exceeds the current throughput quota for your account. Please\n\t// contact Amazon Web Services Support (https://aws.amazon.com/support) to request\n\t// a quota increase.\n\tErrCodeRequestLimitExceeded = \"RequestLimitExceeded\"\n\n\t// ErrCodeResourceInUseException for service response error code\n\t// \"ResourceInUseException\".\n\t//\n\t// The operation conflicts with the resource's availability. For example, you\n\t// attempted to recreate an existing table, or tried to delete a table currently\n\t// in the CREATING state.\n\tErrCodeResourceInUseException = \"ResourceInUseException\"\n\n\t// ErrCodeResourceNotFoundException for service response error code\n\t// \"ResourceNotFoundException\".\n\t//\n\t// The operation tried to access a nonexistent table or index. The resource\n\t// might not be specified correctly, or its status might not be ACTIVE.\n\tErrCodeResourceNotFoundException = \"ResourceNotFoundException\"\n\n\t// ErrCodeTableAlreadyExistsException for service response error code\n\t// \"TableAlreadyExistsException\".\n\t//\n\t// A target table with the specified name already exists.\n\tErrCodeTableAlreadyExistsException = \"TableAlreadyExistsException\"\n\n\t// ErrCodeTableInUseException for service response error code\n\t// \"TableInUseException\".\n\t//\n\t// A target table with the specified name is either being created or deleted.\n\tErrCodeTableInUseException = \"TableInUseException\"\n\n\t// ErrCodeTableNotFoundException for service response error code\n\t// \"TableNotFoundException\".\n\t//\n\t// A source table with the name TableName does not currently exist within the\n\t// subscriber's account or the subscriber is operating in the wrong Amazon Web\n\t// Services Region.\n\tErrCodeTableNotFoundException = \"TableNotFoundException\"\n\n\t// ErrCodeTransactionCanceledException for service response error code\n\t// \"TransactionCanceledException\".\n\t//\n\t// The entire transaction request was canceled.\n\t//\n\t// DynamoDB cancels a TransactWriteItems request under the following circumstances:\n\t//\n\t//    * A condition in one of the condition expressions is not met.\n\t//\n\t//    * A table in the TransactWriteItems request is in a different account\n\t//    or region.\n\t//\n\t//    * More than one action in the TransactWriteItems operation targets the\n\t//    same item.\n\t//\n\t//    * There is insufficient provisioned capacity for the transaction to be\n\t//    completed.\n\t//\n\t//    * An item size becomes too large (larger than 400 KB), or a local secondary\n\t//    index (LSI) becomes too large, or a similar validation error occurs because\n\t//    of changes made by the transaction.\n\t//\n\t//    * There is a user error, such as an invalid data format.\n\t//\n\t//    * There is an ongoing TransactWriteItems operation that conflicts with\n\t//    a concurrent TransactWriteItems request. In this case the TransactWriteItems\n\t//    operation fails with a TransactionCanceledException.\n\t//\n\t// DynamoDB cancels a TransactGetItems request under the following circumstances:\n\t//\n\t//    * There is an ongoing TransactGetItems operation that conflicts with a\n\t//    concurrent PutItem, UpdateItem, DeleteItem or TransactWriteItems request.\n\t//    In this case the TransactGetItems operation fails with a TransactionCanceledException.\n\t//\n\t//    * A table in the TransactGetItems request is in a different account or\n\t//    region.\n\t//\n\t//    * There is insufficient provisioned capacity for the transaction to be\n\t//    completed.\n\t//\n\t//    * There is a user error, such as an invalid data format.\n\t//\n\t// If using Java, DynamoDB lists the cancellation reasons on the CancellationReasons\n\t// property. This property is not set for other languages. Transaction cancellation\n\t// reasons are ordered in the order of requested items, if an item has no error\n\t// it will have None code and Null message.\n\t//\n\t// Cancellation reason codes and possible error messages:\n\t//\n\t//    * No Errors: Code: None Message: null\n\t//\n\t//    * Conditional Check Failed: Code: ConditionalCheckFailed Message: The\n\t//    conditional request failed.\n\t//\n\t//    * Item Collection Size Limit Exceeded: Code: ItemCollectionSizeLimitExceeded\n\t//    Message: Collection size exceeded.\n\t//\n\t//    * Transaction Conflict: Code: TransactionConflict Message: Transaction\n\t//    is ongoing for the item.\n\t//\n\t//    * Provisioned Throughput Exceeded: Code: ProvisionedThroughputExceeded\n\t//    Messages: The level of configured provisioned throughput for the table\n\t//    was exceeded. Consider increasing your provisioning level with the UpdateTable\n\t//    API. This Message is received when provisioned throughput is exceeded\n\t//    is on a provisioned DynamoDB table. The level of configured provisioned\n\t//    throughput for one or more global secondary indexes of the table was exceeded.\n\t//    Consider increasing your provisioning level for the under-provisioned\n\t//    global secondary indexes with the UpdateTable API. This message is returned\n\t//    when provisioned throughput is exceeded is on a provisioned GSI.\n\t//\n\t//    * Throttling Error: Code: ThrottlingError Messages: Throughput exceeds\n\t//    the current capacity of your table or index. DynamoDB is automatically\n\t//    scaling your table or index so please try again shortly. If exceptions\n\t//    persist, check if you have a hot key: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html.\n\t//    This message is returned when writes get throttled on an On-Demand table\n\t//    as DynamoDB is automatically scaling the table. Throughput exceeds the\n\t//    current capacity for one or more global secondary indexes. DynamoDB is\n\t//    automatically scaling your index so please try again shortly. This message\n\t//    is returned when writes get throttled on an On-Demand GSI as DynamoDB\n\t//    is automatically scaling the GSI.\n\t//\n\t//    * Validation Error: Code: ValidationError Messages: One or more parameter\n\t//    values were invalid. The update expression attempted to update the secondary\n\t//    index key beyond allowed size limits. The update expression attempted\n\t//    to update the secondary index key to unsupported type. An operand in the\n\t//    update expression has an incorrect data type. Item size to update has\n\t//    exceeded the maximum allowed size. Number overflow. Attempting to store\n\t//    a number with magnitude larger than supported range. Type mismatch for\n\t//    attribute to update. Nesting Levels have exceeded supported limits. The\n\t//    document path provided in the update expression is invalid for update.\n\t//    The provided expression refers to an attribute that does not exist in\n\t//    the item.\n\tErrCodeTransactionCanceledException = \"TransactionCanceledException\"\n\n\t// ErrCodeTransactionConflictException for service response error code\n\t// \"TransactionConflictException\".\n\t//\n\t// Operation was rejected because there is an ongoing transaction for the item.\n\tErrCodeTransactionConflictException = \"TransactionConflictException\"\n\n\t// ErrCodeTransactionInProgressException for service response error code\n\t// \"TransactionInProgressException\".\n\t//\n\t// The transaction with the given request token is already in progress.\n\t//\n\t// Recommended Settings\n\t//\n\t// This is a general recommendation for handling the TransactionInProgressException.\n\t// These settings help ensure that the client retries will trigger completion\n\t// of the ongoing TransactWriteItems request.\n\t//\n\t//    * Set clientExecutionTimeout to a value that allows at least one retry\n\t//    to be processed after 5 seconds have elapsed since the first attempt for\n\t//    the TransactWriteItems operation.\n\t//\n\t//    * Set socketTimeout to a value a little lower than the requestTimeout\n\t//    setting.\n\t//\n\t//    * requestTimeout should be set based on the time taken for the individual\n\t//    retries of a single HTTP request for your use case, but setting it to\n\t//    1 second or higher should work well to reduce chances of retries and TransactionInProgressException\n\t//    errors.\n\t//\n\t//    * Use exponential backoff when retrying and tune backoff if needed.\n\t//\n\t// Assuming default retry policy (https://github.com/aws/aws-sdk-java/blob/fd409dee8ae23fb8953e0bb4dbde65536a7e0514/aws-java-sdk-core/src/main/java/com/amazonaws/retry/PredefinedRetryPolicies.java#L97),\n\t// example timeout settings based on the guidelines above are as follows:\n\t//\n\t// Example timeline:\n\t//\n\t//    * 0-1000 first attempt\n\t//\n\t//    * 1000-1500 first sleep/delay (default retry policy uses 500 ms as base\n\t//    delay for 4xx errors)\n\t//\n\t//    * 1500-2500 second attempt\n\t//\n\t//    * 2500-3500 second sleep/delay (500 * 2, exponential backoff)\n\t//\n\t//    * 3500-4500 third attempt\n\t//\n\t//    * 4500-6500 third sleep/delay (500 * 2^2)\n\t//\n\t//    * 6500-7500 fourth attempt (this can trigger inline recovery since 5 seconds\n\t//    have elapsed since the first attempt reached TC)\n\tErrCodeTransactionInProgressException = \"TransactionInProgressException\"\n)\n\nvar exceptionFromCode = map[string]func(protocol.ResponseMetadata) error{\n\t\"BackupInUseException\":                     newErrorBackupInUseException,\n\t\"BackupNotFoundException\":                  newErrorBackupNotFoundException,\n\t\"ConditionalCheckFailedException\":          newErrorConditionalCheckFailedException,\n\t\"ContinuousBackupsUnavailableException\":    newErrorContinuousBackupsUnavailableException,\n\t\"DuplicateItemException\":                   newErrorDuplicateItemException,\n\t\"ExportConflictException\":                  newErrorExportConflictException,\n\t\"ExportNotFoundException\":                  newErrorExportNotFoundException,\n\t\"GlobalTableAlreadyExistsException\":        newErrorGlobalTableAlreadyExistsException,\n\t\"GlobalTableNotFoundException\":             newErrorGlobalTableNotFoundException,\n\t\"IdempotentParameterMismatchException\":     newErrorIdempotentParameterMismatchException,\n\t\"ImportConflictException\":                  newErrorImportConflictException,\n\t\"ImportNotFoundException\":                  newErrorImportNotFoundException,\n\t\"IndexNotFoundException\":                   newErrorIndexNotFoundException,\n\t\"InternalServerError\":                      newErrorInternalServerError,\n\t\"InvalidExportTimeException\":               newErrorInvalidExportTimeException,\n\t\"InvalidRestoreTimeException\":              newErrorInvalidRestoreTimeException,\n\t\"ItemCollectionSizeLimitExceededException\": newErrorItemCollectionSizeLimitExceededException,\n\t\"LimitExceededException\":                   newErrorLimitExceededException,\n\t\"PointInTimeRecoveryUnavailableException\":  newErrorPointInTimeRecoveryUnavailableException,\n\t\"ProvisionedThroughputExceededException\":   newErrorProvisionedThroughputExceededException,\n\t\"ReplicaAlreadyExistsException\":            newErrorReplicaAlreadyExistsException,\n\t\"ReplicaNotFoundException\":                 newErrorReplicaNotFoundException,\n\t\"RequestLimitExceeded\":                     newErrorRequestLimitExceeded,\n\t\"ResourceInUseException\":                   newErrorResourceInUseException,\n\t\"ResourceNotFoundException\":                newErrorResourceNotFoundException,\n\t\"TableAlreadyExistsException\":              newErrorTableAlreadyExistsException,\n\t\"TableInUseException\":                      newErrorTableInUseException,\n\t\"TableNotFoundException\":                   newErrorTableNotFoundException,\n\t\"TransactionCanceledException\":             newErrorTransactionCanceledException,\n\t\"TransactionConflictException\":             newErrorTransactionConflictException,\n\t\"TransactionInProgressException\":           newErrorTransactionInProgressException,\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/dynamodb/service.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage dynamodb\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/client\"\n\t\"github.com/aws/aws-sdk-go/aws/client/metadata\"\n\t\"github.com/aws/aws-sdk-go/aws/crr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/aws/signer/v4\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/jsonrpc\"\n)\n\n// DynamoDB provides the API operation methods for making requests to\n// Amazon DynamoDB. See this package's package overview docs\n// for details on the service.\n//\n// DynamoDB methods are safe to use concurrently. It is not safe to\n// modify mutate any of the struct's properties though.\ntype DynamoDB struct {\n\t*client.Client\n\tendpointCache *crr.EndpointCache\n}\n\n// Used for custom client initialization logic\nvar initClient func(*client.Client)\n\n// Used for custom request initialization logic\nvar initRequest func(*request.Request)\n\n// Service information constants\nconst (\n\tServiceName = \"dynamodb\"  // Name of service.\n\tEndpointsID = ServiceName // ID to lookup a service endpoint with.\n\tServiceID   = \"DynamoDB\"  // ServiceID is a unique identifier of a specific service.\n)\n\n// New creates a new instance of the DynamoDB client with a session.\n// If additional configuration is needed for the client instance use the optional\n// aws.Config parameter to add your extra config.\n//\n// Example:\n//\n//\tmySession := session.Must(session.NewSession())\n//\n//\t// Create a DynamoDB client from just a session.\n//\tsvc := dynamodb.New(mySession)\n//\n//\t// Create a DynamoDB client with additional configuration\n//\tsvc := dynamodb.New(mySession, aws.NewConfig().WithRegion(\"us-west-2\"))\nfunc New(p client.ConfigProvider, cfgs ...*aws.Config) *DynamoDB {\n\tc := p.ClientConfig(EndpointsID, cfgs...)\n\tif c.SigningNameDerived || len(c.SigningName) == 0 {\n\t\tc.SigningName = EndpointsID\n\t\t// No Fallback\n\t}\n\treturn newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName, c.ResolvedRegion)\n}\n\n// newClient creates, initializes and returns a new service client instance.\nfunc newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint, signingRegion, signingName, resolvedRegion string) *DynamoDB {\n\tsvc := &DynamoDB{\n\t\tClient: client.New(\n\t\t\tcfg,\n\t\t\tmetadata.ClientInfo{\n\t\t\t\tServiceName:    ServiceName,\n\t\t\t\tServiceID:      ServiceID,\n\t\t\t\tSigningName:    signingName,\n\t\t\t\tSigningRegion:  signingRegion,\n\t\t\t\tPartitionID:    partitionID,\n\t\t\t\tEndpoint:       endpoint,\n\t\t\t\tAPIVersion:     \"2012-08-10\",\n\t\t\t\tResolvedRegion: resolvedRegion,\n\t\t\t\tJSONVersion:    \"1.0\",\n\t\t\t\tTargetPrefix:   \"DynamoDB_20120810\",\n\t\t\t},\n\t\t\thandlers,\n\t\t),\n\t}\n\tsvc.endpointCache = crr.NewEndpointCache(10)\n\n\t// Handlers\n\tsvc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler)\n\tsvc.Handlers.Build.PushBackNamed(jsonrpc.BuildHandler)\n\tsvc.Handlers.Unmarshal.PushBackNamed(jsonrpc.UnmarshalHandler)\n\tsvc.Handlers.UnmarshalMeta.PushBackNamed(jsonrpc.UnmarshalMetaHandler)\n\tsvc.Handlers.UnmarshalError.PushBackNamed(\n\t\tprotocol.NewUnmarshalErrorHandler(jsonrpc.NewUnmarshalTypedError(exceptionFromCode)).NamedHandler(),\n\t)\n\n\t// Run custom client initialization if present\n\tif initClient != nil {\n\t\tinitClient(svc.Client)\n\t}\n\n\treturn svc\n}\n\n// newRequest creates a new request for a DynamoDB operation and runs any\n// custom request initialization.\nfunc (c *DynamoDB) newRequest(op *request.Operation, params, data interface{}) *request.Request {\n\treq := c.NewRequest(op, params, data)\n\n\t// Run custom request initialization if present\n\tif initRequest != nil {\n\t\tinitRequest(req)\n\t}\n\n\treturn req\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/dynamodb/waiters.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage dynamodb\n\nimport (\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// WaitUntilTableExists uses the DynamoDB API operation\n// DescribeTable to wait for a condition to be met before returning.\n// If the condition is not met within the max attempt window, an error will\n// be returned.\nfunc (c *DynamoDB) WaitUntilTableExists(input *DescribeTableInput) error {\n\treturn c.WaitUntilTableExistsWithContext(aws.BackgroundContext(), input)\n}\n\n// WaitUntilTableExistsWithContext is an extended version of WaitUntilTableExists.\n// With the support for passing in a context and options to configure the\n// Waiter and the underlying request options.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) WaitUntilTableExistsWithContext(ctx aws.Context, input *DescribeTableInput, opts ...request.WaiterOption) error {\n\tw := request.Waiter{\n\t\tName:        \"WaitUntilTableExists\",\n\t\tMaxAttempts: 25,\n\t\tDelay:       request.ConstantWaiterDelay(20 * time.Second),\n\t\tAcceptors: []request.WaiterAcceptor{\n\t\t\t{\n\t\t\t\tState:   request.SuccessWaiterState,\n\t\t\t\tMatcher: request.PathWaiterMatch, Argument: \"Table.TableStatus\",\n\t\t\t\tExpected: \"ACTIVE\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tState:    request.RetryWaiterState,\n\t\t\t\tMatcher:  request.ErrorWaiterMatch,\n\t\t\t\tExpected: \"ResourceNotFoundException\",\n\t\t\t},\n\t\t},\n\t\tLogger: c.Config.Logger,\n\t\tNewRequest: func(opts []request.Option) (*request.Request, error) {\n\t\t\tvar inCpy *DescribeTableInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeTableRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\tw.ApplyOptions(opts...)\n\n\treturn w.WaitWithContext(ctx)\n}\n\n// WaitUntilTableNotExists uses the DynamoDB API operation\n// DescribeTable to wait for a condition to be met before returning.\n// If the condition is not met within the max attempt window, an error will\n// be returned.\nfunc (c *DynamoDB) WaitUntilTableNotExists(input *DescribeTableInput) error {\n\treturn c.WaitUntilTableNotExistsWithContext(aws.BackgroundContext(), input)\n}\n\n// WaitUntilTableNotExistsWithContext is an extended version of WaitUntilTableNotExists.\n// With the support for passing in a context and options to configure the\n// Waiter and the underlying request options.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *DynamoDB) WaitUntilTableNotExistsWithContext(ctx aws.Context, input *DescribeTableInput, opts ...request.WaiterOption) error {\n\tw := request.Waiter{\n\t\tName:        \"WaitUntilTableNotExists\",\n\t\tMaxAttempts: 25,\n\t\tDelay:       request.ConstantWaiterDelay(20 * time.Second),\n\t\tAcceptors: []request.WaiterAcceptor{\n\t\t\t{\n\t\t\t\tState:    request.SuccessWaiterState,\n\t\t\t\tMatcher:  request.ErrorWaiterMatch,\n\t\t\t\tExpected: \"ResourceNotFoundException\",\n\t\t\t},\n\t\t},\n\t\tLogger: c.Config.Logger,\n\t\tNewRequest: func(opts []request.Option) (*request.Request, error) {\n\t\t\tvar inCpy *DescribeTableInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeTableRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\tw.ApplyOptions(opts...)\n\n\treturn w.WaitWithContext(ctx)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/ssm/api.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage ssm\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awsutil\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/jsonrpc\"\n)\n\nconst opAddTagsToResource = \"AddTagsToResource\"\n\n// AddTagsToResourceRequest generates a \"aws/request.Request\" representing the\n// client's request for the AddTagsToResource operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See AddTagsToResource for more information on using the AddTagsToResource\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the AddTagsToResourceRequest method.\n//\treq, resp := client.AddTagsToResourceRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AddTagsToResource\nfunc (c *SSM) AddTagsToResourceRequest(input *AddTagsToResourceInput) (req *request.Request, output *AddTagsToResourceOutput) {\n\top := &request.Operation{\n\t\tName:       opAddTagsToResource,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &AddTagsToResourceInput{}\n\t}\n\n\toutput = &AddTagsToResourceOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// AddTagsToResource API operation for Amazon Simple Systems Manager (SSM).\n//\n// Adds or overwrites one or more tags for the specified resource. Tags are\n// metadata that you can assign to your automations, documents, managed nodes,\n// maintenance windows, Parameter Store parameters, and patch baselines. Tags\n// enable you to categorize your resources in different ways, for example, by\n// purpose, owner, or environment. Each tag consists of a key and an optional\n// value, both of which you define. For example, you could define a set of tags\n// for your account's managed nodes that helps you track each node's owner and\n// stack level. For example:\n//\n//   - Key=Owner,Value=DbAdmin\n//\n//   - Key=Owner,Value=SysAdmin\n//\n//   - Key=Owner,Value=Dev\n//\n//   - Key=Stack,Value=Production\n//\n//   - Key=Stack,Value=Pre-Production\n//\n//   - Key=Stack,Value=Test\n//\n// Most resources can have a maximum of 50 tags. Automations can have a maximum\n// of 5 tags.\n//\n// We recommend that you devise a set of tag keys that meets your needs for\n// each resource type. Using a consistent set of tag keys makes it easier for\n// you to manage your resources. You can search and filter the resources based\n// on the tags you add. Tags don't have any semantic meaning to and are interpreted\n// strictly as a string of characters.\n//\n// For more information about using tags with Amazon Elastic Compute Cloud (Amazon\n// EC2) instances, see Tagging your Amazon EC2 resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)\n// in the Amazon EC2 User Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation AddTagsToResource for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidResourceType\n//     The resource type isn't valid. For example, if you are attempting to tag\n//     an EC2 instance, the instance must be a registered managed node.\n//\n//   - InvalidResourceId\n//     The resource ID isn't valid. Verify that you entered the correct ID and try\n//     again.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - TooManyTagsError\n//     The Targets parameter includes too many tags. Remove one or more tags and\n//     try the command again.\n//\n//   - TooManyUpdates\n//     There are concurrent updates for a resource that supports one update at a\n//     time.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AddTagsToResource\nfunc (c *SSM) AddTagsToResource(input *AddTagsToResourceInput) (*AddTagsToResourceOutput, error) {\n\treq, out := c.AddTagsToResourceRequest(input)\n\treturn out, req.Send()\n}\n\n// AddTagsToResourceWithContext is the same as AddTagsToResource with the addition of\n// the ability to pass a context and additional request options.\n//\n// See AddTagsToResource for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) AddTagsToResourceWithContext(ctx aws.Context, input *AddTagsToResourceInput, opts ...request.Option) (*AddTagsToResourceOutput, error) {\n\treq, out := c.AddTagsToResourceRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opAssociateOpsItemRelatedItem = \"AssociateOpsItemRelatedItem\"\n\n// AssociateOpsItemRelatedItemRequest generates a \"aws/request.Request\" representing the\n// client's request for the AssociateOpsItemRelatedItem operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See AssociateOpsItemRelatedItem for more information on using the AssociateOpsItemRelatedItem\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the AssociateOpsItemRelatedItemRequest method.\n//\treq, resp := client.AssociateOpsItemRelatedItemRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AssociateOpsItemRelatedItem\nfunc (c *SSM) AssociateOpsItemRelatedItemRequest(input *AssociateOpsItemRelatedItemInput) (req *request.Request, output *AssociateOpsItemRelatedItemOutput) {\n\top := &request.Operation{\n\t\tName:       opAssociateOpsItemRelatedItem,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &AssociateOpsItemRelatedItemInput{}\n\t}\n\n\toutput = &AssociateOpsItemRelatedItemOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// AssociateOpsItemRelatedItem API operation for Amazon Simple Systems Manager (SSM).\n//\n// Associates a related item to a Systems Manager OpsCenter OpsItem. For example,\n// you can associate an Incident Manager incident or analysis with an OpsItem.\n// Incident Manager and OpsCenter are capabilities of Amazon Web Services Systems\n// Manager.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation AssociateOpsItemRelatedItem for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - OpsItemNotFoundException\n//     The specified OpsItem ID doesn't exist. Verify the ID and try again.\n//\n//   - OpsItemLimitExceededException\n//     The request caused OpsItems to exceed one or more quotas.\n//\n//   - OpsItemInvalidParameterException\n//     A specified parameter argument isn't valid. Verify the available arguments\n//     and try again.\n//\n//   - OpsItemRelatedItemAlreadyExistsException\n//     The Amazon Resource Name (ARN) is already associated with the OpsItem.\n//\n//   - OpsItemConflictException\n//     The specified OpsItem is in the process of being deleted.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/AssociateOpsItemRelatedItem\nfunc (c *SSM) AssociateOpsItemRelatedItem(input *AssociateOpsItemRelatedItemInput) (*AssociateOpsItemRelatedItemOutput, error) {\n\treq, out := c.AssociateOpsItemRelatedItemRequest(input)\n\treturn out, req.Send()\n}\n\n// AssociateOpsItemRelatedItemWithContext is the same as AssociateOpsItemRelatedItem with the addition of\n// the ability to pass a context and additional request options.\n//\n// See AssociateOpsItemRelatedItem for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) AssociateOpsItemRelatedItemWithContext(ctx aws.Context, input *AssociateOpsItemRelatedItemInput, opts ...request.Option) (*AssociateOpsItemRelatedItemOutput, error) {\n\treq, out := c.AssociateOpsItemRelatedItemRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCancelCommand = \"CancelCommand\"\n\n// CancelCommandRequest generates a \"aws/request.Request\" representing the\n// client's request for the CancelCommand operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CancelCommand for more information on using the CancelCommand\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CancelCommandRequest method.\n//\treq, resp := client.CancelCommandRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CancelCommand\nfunc (c *SSM) CancelCommandRequest(input *CancelCommandInput) (req *request.Request, output *CancelCommandOutput) {\n\top := &request.Operation{\n\t\tName:       opCancelCommand,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CancelCommandInput{}\n\t}\n\n\toutput = &CancelCommandOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// CancelCommand API operation for Amazon Simple Systems Manager (SSM).\n//\n// Attempts to cancel the command specified by the Command ID. There is no guarantee\n// that the command will be terminated and the underlying process stopped.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation CancelCommand for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidCommandId\n//     The specified command ID isn't valid. Verify the ID and try again.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - DuplicateInstanceId\n//     You can't specify a managed node ID in more than one association.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CancelCommand\nfunc (c *SSM) CancelCommand(input *CancelCommandInput) (*CancelCommandOutput, error) {\n\treq, out := c.CancelCommandRequest(input)\n\treturn out, req.Send()\n}\n\n// CancelCommandWithContext is the same as CancelCommand with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CancelCommand for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) CancelCommandWithContext(ctx aws.Context, input *CancelCommandInput, opts ...request.Option) (*CancelCommandOutput, error) {\n\treq, out := c.CancelCommandRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCancelMaintenanceWindowExecution = \"CancelMaintenanceWindowExecution\"\n\n// CancelMaintenanceWindowExecutionRequest generates a \"aws/request.Request\" representing the\n// client's request for the CancelMaintenanceWindowExecution operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CancelMaintenanceWindowExecution for more information on using the CancelMaintenanceWindowExecution\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CancelMaintenanceWindowExecutionRequest method.\n//\treq, resp := client.CancelMaintenanceWindowExecutionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CancelMaintenanceWindowExecution\nfunc (c *SSM) CancelMaintenanceWindowExecutionRequest(input *CancelMaintenanceWindowExecutionInput) (req *request.Request, output *CancelMaintenanceWindowExecutionOutput) {\n\top := &request.Operation{\n\t\tName:       opCancelMaintenanceWindowExecution,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CancelMaintenanceWindowExecutionInput{}\n\t}\n\n\toutput = &CancelMaintenanceWindowExecutionOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// CancelMaintenanceWindowExecution API operation for Amazon Simple Systems Manager (SSM).\n//\n// Stops a maintenance window execution that is already in progress and cancels\n// any tasks in the window that haven't already starting running. Tasks already\n// in progress will continue to completion.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation CancelMaintenanceWindowExecution for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CancelMaintenanceWindowExecution\nfunc (c *SSM) CancelMaintenanceWindowExecution(input *CancelMaintenanceWindowExecutionInput) (*CancelMaintenanceWindowExecutionOutput, error) {\n\treq, out := c.CancelMaintenanceWindowExecutionRequest(input)\n\treturn out, req.Send()\n}\n\n// CancelMaintenanceWindowExecutionWithContext is the same as CancelMaintenanceWindowExecution with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CancelMaintenanceWindowExecution for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) CancelMaintenanceWindowExecutionWithContext(ctx aws.Context, input *CancelMaintenanceWindowExecutionInput, opts ...request.Option) (*CancelMaintenanceWindowExecutionOutput, error) {\n\treq, out := c.CancelMaintenanceWindowExecutionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCreateActivation = \"CreateActivation\"\n\n// CreateActivationRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreateActivation operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreateActivation for more information on using the CreateActivation\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreateActivationRequest method.\n//\treq, resp := client.CreateActivationRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateActivation\nfunc (c *SSM) CreateActivationRequest(input *CreateActivationInput) (req *request.Request, output *CreateActivationOutput) {\n\top := &request.Operation{\n\t\tName:       opCreateActivation,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreateActivationInput{}\n\t}\n\n\toutput = &CreateActivationOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// CreateActivation API operation for Amazon Simple Systems Manager (SSM).\n//\n// Generates an activation code and activation ID you can use to register your\n// on-premises servers, edge devices, or virtual machine (VM) with Amazon Web\n// Services Systems Manager. Registering these machines with Systems Manager\n// makes it possible to manage them using Systems Manager capabilities. You\n// use the activation code and ID when installing SSM Agent on machines in your\n// hybrid environment. For more information about requirements for managing\n// on-premises machines using Systems Manager, see Setting up Amazon Web Services\n// Systems Manager for hybrid environments (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// Amazon Elastic Compute Cloud (Amazon EC2) instances, edge devices, and on-premises\n// servers and VMs that are configured for Systems Manager are all called managed\n// nodes.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation CreateActivation for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidParameters\n//     You must specify values for all required parameters in the Amazon Web Services\n//     Systems Manager document (SSM document). You can only supply values to parameters\n//     defined in the SSM document.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateActivation\nfunc (c *SSM) CreateActivation(input *CreateActivationInput) (*CreateActivationOutput, error) {\n\treq, out := c.CreateActivationRequest(input)\n\treturn out, req.Send()\n}\n\n// CreateActivationWithContext is the same as CreateActivation with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreateActivation for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) CreateActivationWithContext(ctx aws.Context, input *CreateActivationInput, opts ...request.Option) (*CreateActivationOutput, error) {\n\treq, out := c.CreateActivationRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCreateAssociation = \"CreateAssociation\"\n\n// CreateAssociationRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreateAssociation operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreateAssociation for more information on using the CreateAssociation\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreateAssociationRequest method.\n//\treq, resp := client.CreateAssociationRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateAssociation\nfunc (c *SSM) CreateAssociationRequest(input *CreateAssociationInput) (req *request.Request, output *CreateAssociationOutput) {\n\top := &request.Operation{\n\t\tName:       opCreateAssociation,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreateAssociationInput{}\n\t}\n\n\toutput = &CreateAssociationOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// CreateAssociation API operation for Amazon Simple Systems Manager (SSM).\n//\n// A State Manager association defines the state that you want to maintain on\n// your managed nodes. For example, an association can specify that anti-virus\n// software must be installed and running on your managed nodes, or that certain\n// ports must be closed. For static targets, the association specifies a schedule\n// for when the configuration is reapplied. For dynamic targets, such as an\n// Amazon Web Services resource group or an Amazon Web Services autoscaling\n// group, State Manager, a capability of Amazon Web Services Systems Manager\n// applies the configuration when new managed nodes are added to the group.\n// The association also specifies actions to take when applying the configuration.\n// For example, an association for anti-virus software might run once a day.\n// If the software isn't installed, then State Manager installs it. If the software\n// is installed, but the service isn't running, then the association might instruct\n// State Manager to start the service.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation CreateAssociation for usage and error information.\n//\n// Returned Error Types:\n//\n//   - AssociationAlreadyExists\n//     The specified association already exists.\n//\n//   - AssociationLimitExceeded\n//     You can have at most 2,000 active associations.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidDocumentVersion\n//     The document version isn't valid or doesn't exist.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - UnsupportedPlatformType\n//     The document doesn't support the platform type of the given managed node\n//     ID(s). For example, you sent an document for a Windows managed node to a\n//     Linux node.\n//\n//   - InvalidOutputLocation\n//     The output location isn't valid or doesn't exist.\n//\n//   - InvalidParameters\n//     You must specify values for all required parameters in the Amazon Web Services\n//     Systems Manager document (SSM document). You can only supply values to parameters\n//     defined in the SSM document.\n//\n//   - InvalidTarget\n//     The target isn't valid or doesn't exist. It might not be configured for Systems\n//     Manager or you might not have permission to perform the operation.\n//\n//   - InvalidSchedule\n//     The schedule is invalid. Verify your cron or rate expression and try again.\n//\n//   - InvalidTargetMaps\n//     TargetMap parameter isn't valid.\n//\n//   - InvalidTag\n//     The specified tag key or value isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateAssociation\nfunc (c *SSM) CreateAssociation(input *CreateAssociationInput) (*CreateAssociationOutput, error) {\n\treq, out := c.CreateAssociationRequest(input)\n\treturn out, req.Send()\n}\n\n// CreateAssociationWithContext is the same as CreateAssociation with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreateAssociation for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) CreateAssociationWithContext(ctx aws.Context, input *CreateAssociationInput, opts ...request.Option) (*CreateAssociationOutput, error) {\n\treq, out := c.CreateAssociationRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCreateAssociationBatch = \"CreateAssociationBatch\"\n\n// CreateAssociationBatchRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreateAssociationBatch operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreateAssociationBatch for more information on using the CreateAssociationBatch\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreateAssociationBatchRequest method.\n//\treq, resp := client.CreateAssociationBatchRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateAssociationBatch\nfunc (c *SSM) CreateAssociationBatchRequest(input *CreateAssociationBatchInput) (req *request.Request, output *CreateAssociationBatchOutput) {\n\top := &request.Operation{\n\t\tName:       opCreateAssociationBatch,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreateAssociationBatchInput{}\n\t}\n\n\toutput = &CreateAssociationBatchOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// CreateAssociationBatch API operation for Amazon Simple Systems Manager (SSM).\n//\n// Associates the specified Amazon Web Services Systems Manager document (SSM\n// document) with the specified managed nodes or targets.\n//\n// When you associate a document with one or more managed nodes using IDs or\n// tags, Amazon Web Services Systems Manager Agent (SSM Agent) running on the\n// managed node processes the document and configures the node as specified.\n//\n// If you associate a document with a managed node that already has an associated\n// document, the system returns the AssociationAlreadyExists exception.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation CreateAssociationBatch for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidDocumentVersion\n//     The document version isn't valid or doesn't exist.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InvalidParameters\n//     You must specify values for all required parameters in the Amazon Web Services\n//     Systems Manager document (SSM document). You can only supply values to parameters\n//     defined in the SSM document.\n//\n//   - DuplicateInstanceId\n//     You can't specify a managed node ID in more than one association.\n//\n//   - AssociationLimitExceeded\n//     You can have at most 2,000 active associations.\n//\n//   - UnsupportedPlatformType\n//     The document doesn't support the platform type of the given managed node\n//     ID(s). For example, you sent an document for a Windows managed node to a\n//     Linux node.\n//\n//   - InvalidOutputLocation\n//     The output location isn't valid or doesn't exist.\n//\n//   - InvalidTarget\n//     The target isn't valid or doesn't exist. It might not be configured for Systems\n//     Manager or you might not have permission to perform the operation.\n//\n//   - InvalidSchedule\n//     The schedule is invalid. Verify your cron or rate expression and try again.\n//\n//   - InvalidTargetMaps\n//     TargetMap parameter isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateAssociationBatch\nfunc (c *SSM) CreateAssociationBatch(input *CreateAssociationBatchInput) (*CreateAssociationBatchOutput, error) {\n\treq, out := c.CreateAssociationBatchRequest(input)\n\treturn out, req.Send()\n}\n\n// CreateAssociationBatchWithContext is the same as CreateAssociationBatch with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreateAssociationBatch for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) CreateAssociationBatchWithContext(ctx aws.Context, input *CreateAssociationBatchInput, opts ...request.Option) (*CreateAssociationBatchOutput, error) {\n\treq, out := c.CreateAssociationBatchRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCreateDocument = \"CreateDocument\"\n\n// CreateDocumentRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreateDocument operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreateDocument for more information on using the CreateDocument\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreateDocumentRequest method.\n//\treq, resp := client.CreateDocumentRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateDocument\nfunc (c *SSM) CreateDocumentRequest(input *CreateDocumentInput) (req *request.Request, output *CreateDocumentOutput) {\n\top := &request.Operation{\n\t\tName:       opCreateDocument,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreateDocumentInput{}\n\t}\n\n\toutput = &CreateDocumentOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// CreateDocument API operation for Amazon Simple Systems Manager (SSM).\n//\n// Creates a Amazon Web Services Systems Manager (SSM document). An SSM document\n// defines the actions that Systems Manager performs on your managed nodes.\n// For more information about SSM documents, including information about supported\n// schemas, features, and syntax, see Amazon Web Services Systems Manager Documents\n// (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation CreateDocument for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DocumentAlreadyExists\n//     The specified document already exists.\n//\n//   - MaxDocumentSizeExceeded\n//     The size limit of a document is 64 KB.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocumentContent\n//     The content for the document isn't valid.\n//\n//   - DocumentLimitExceeded\n//     You can have at most 500 active SSM documents.\n//\n//   - InvalidDocumentSchemaVersion\n//     The version of the document schema isn't supported.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateDocument\nfunc (c *SSM) CreateDocument(input *CreateDocumentInput) (*CreateDocumentOutput, error) {\n\treq, out := c.CreateDocumentRequest(input)\n\treturn out, req.Send()\n}\n\n// CreateDocumentWithContext is the same as CreateDocument with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreateDocument for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) CreateDocumentWithContext(ctx aws.Context, input *CreateDocumentInput, opts ...request.Option) (*CreateDocumentOutput, error) {\n\treq, out := c.CreateDocumentRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCreateMaintenanceWindow = \"CreateMaintenanceWindow\"\n\n// CreateMaintenanceWindowRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreateMaintenanceWindow operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreateMaintenanceWindow for more information on using the CreateMaintenanceWindow\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreateMaintenanceWindowRequest method.\n//\treq, resp := client.CreateMaintenanceWindowRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateMaintenanceWindow\nfunc (c *SSM) CreateMaintenanceWindowRequest(input *CreateMaintenanceWindowInput) (req *request.Request, output *CreateMaintenanceWindowOutput) {\n\top := &request.Operation{\n\t\tName:       opCreateMaintenanceWindow,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreateMaintenanceWindowInput{}\n\t}\n\n\toutput = &CreateMaintenanceWindowOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// CreateMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).\n//\n// Creates a new maintenance window.\n//\n// The value you specify for Duration determines the specific end time for the\n// maintenance window based on the time it begins. No maintenance window tasks\n// are permitted to start after the resulting endtime minus the number of hours\n// you specify for Cutoff. For example, if the maintenance window starts at\n// 3 PM, the duration is three hours, and the value you specify for Cutoff is\n// one hour, no maintenance window tasks can start after 5 PM.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation CreateMaintenanceWindow for usage and error information.\n//\n// Returned Error Types:\n//\n//   - IdempotentParameterMismatch\n//     Error returned when an idempotent operation is retried and the parameters\n//     don't match the original call to the API with the same idempotency token.\n//\n//   - ResourceLimitExceededException\n//     Error returned when the caller has exceeded the default resource quotas.\n//     For example, too many maintenance windows or patch baselines have been created.\n//\n//     For information about resource quotas in Systems Manager, see Systems Manager\n//     service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateMaintenanceWindow\nfunc (c *SSM) CreateMaintenanceWindow(input *CreateMaintenanceWindowInput) (*CreateMaintenanceWindowOutput, error) {\n\treq, out := c.CreateMaintenanceWindowRequest(input)\n\treturn out, req.Send()\n}\n\n// CreateMaintenanceWindowWithContext is the same as CreateMaintenanceWindow with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreateMaintenanceWindow for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) CreateMaintenanceWindowWithContext(ctx aws.Context, input *CreateMaintenanceWindowInput, opts ...request.Option) (*CreateMaintenanceWindowOutput, error) {\n\treq, out := c.CreateMaintenanceWindowRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCreateOpsItem = \"CreateOpsItem\"\n\n// CreateOpsItemRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreateOpsItem operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreateOpsItem for more information on using the CreateOpsItem\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreateOpsItemRequest method.\n//\treq, resp := client.CreateOpsItemRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateOpsItem\nfunc (c *SSM) CreateOpsItemRequest(input *CreateOpsItemInput) (req *request.Request, output *CreateOpsItemOutput) {\n\top := &request.Operation{\n\t\tName:       opCreateOpsItem,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreateOpsItemInput{}\n\t}\n\n\toutput = &CreateOpsItemOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// CreateOpsItem API operation for Amazon Simple Systems Manager (SSM).\n//\n// Creates a new OpsItem. You must have permission in Identity and Access Management\n// (IAM) to create a new OpsItem. For more information, see Set up OpsCenter\n// (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-setup.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// Operations engineers and IT professionals use Amazon Web Services Systems\n// Manager OpsCenter to view, investigate, and remediate operational issues\n// impacting the performance and health of their Amazon Web Services resources.\n// For more information, see Amazon Web Services Systems Manager OpsCenter (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation CreateOpsItem for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - OpsItemAlreadyExistsException\n//     The OpsItem already exists.\n//\n//   - OpsItemLimitExceededException\n//     The request caused OpsItems to exceed one or more quotas.\n//\n//   - OpsItemInvalidParameterException\n//     A specified parameter argument isn't valid. Verify the available arguments\n//     and try again.\n//\n//   - OpsItemAccessDeniedException\n//     You don't have permission to view OpsItems in the specified account. Verify\n//     that your account is configured either as a Systems Manager delegated administrator\n//     or that you are logged into the Organizations management account.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateOpsItem\nfunc (c *SSM) CreateOpsItem(input *CreateOpsItemInput) (*CreateOpsItemOutput, error) {\n\treq, out := c.CreateOpsItemRequest(input)\n\treturn out, req.Send()\n}\n\n// CreateOpsItemWithContext is the same as CreateOpsItem with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreateOpsItem for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) CreateOpsItemWithContext(ctx aws.Context, input *CreateOpsItemInput, opts ...request.Option) (*CreateOpsItemOutput, error) {\n\treq, out := c.CreateOpsItemRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCreateOpsMetadata = \"CreateOpsMetadata\"\n\n// CreateOpsMetadataRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreateOpsMetadata operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreateOpsMetadata for more information on using the CreateOpsMetadata\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreateOpsMetadataRequest method.\n//\treq, resp := client.CreateOpsMetadataRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateOpsMetadata\nfunc (c *SSM) CreateOpsMetadataRequest(input *CreateOpsMetadataInput) (req *request.Request, output *CreateOpsMetadataOutput) {\n\top := &request.Operation{\n\t\tName:       opCreateOpsMetadata,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreateOpsMetadataInput{}\n\t}\n\n\toutput = &CreateOpsMetadataOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// CreateOpsMetadata API operation for Amazon Simple Systems Manager (SSM).\n//\n// If you create a new application in Application Manager, Amazon Web Services\n// Systems Manager calls this API operation to specify information about the\n// new application, including the application type.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation CreateOpsMetadata for usage and error information.\n//\n// Returned Error Types:\n//\n//   - OpsMetadataAlreadyExistsException\n//     An OpsMetadata object already exists for the selected resource.\n//\n//   - OpsMetadataTooManyUpdatesException\n//     The system is processing too many concurrent updates. Wait a few moments\n//     and try again.\n//\n//   - OpsMetadataInvalidArgumentException\n//     One of the arguments passed is invalid.\n//\n//   - OpsMetadataLimitExceededException\n//     Your account reached the maximum number of OpsMetadata objects allowed by\n//     Application Manager. The maximum is 200 OpsMetadata objects. Delete one or\n//     more OpsMetadata object and try again.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateOpsMetadata\nfunc (c *SSM) CreateOpsMetadata(input *CreateOpsMetadataInput) (*CreateOpsMetadataOutput, error) {\n\treq, out := c.CreateOpsMetadataRequest(input)\n\treturn out, req.Send()\n}\n\n// CreateOpsMetadataWithContext is the same as CreateOpsMetadata with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreateOpsMetadata for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) CreateOpsMetadataWithContext(ctx aws.Context, input *CreateOpsMetadataInput, opts ...request.Option) (*CreateOpsMetadataOutput, error) {\n\treq, out := c.CreateOpsMetadataRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCreatePatchBaseline = \"CreatePatchBaseline\"\n\n// CreatePatchBaselineRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreatePatchBaseline operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreatePatchBaseline for more information on using the CreatePatchBaseline\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreatePatchBaselineRequest method.\n//\treq, resp := client.CreatePatchBaselineRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreatePatchBaseline\nfunc (c *SSM) CreatePatchBaselineRequest(input *CreatePatchBaselineInput) (req *request.Request, output *CreatePatchBaselineOutput) {\n\top := &request.Operation{\n\t\tName:       opCreatePatchBaseline,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreatePatchBaselineInput{}\n\t}\n\n\toutput = &CreatePatchBaselineOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// CreatePatchBaseline API operation for Amazon Simple Systems Manager (SSM).\n//\n// Creates a patch baseline.\n//\n// For information about valid key-value pairs in PatchFilters for each supported\n// operating system type, see PatchFilter.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation CreatePatchBaseline for usage and error information.\n//\n// Returned Error Types:\n//\n//   - IdempotentParameterMismatch\n//     Error returned when an idempotent operation is retried and the parameters\n//     don't match the original call to the API with the same idempotency token.\n//\n//   - ResourceLimitExceededException\n//     Error returned when the caller has exceeded the default resource quotas.\n//     For example, too many maintenance windows or patch baselines have been created.\n//\n//     For information about resource quotas in Systems Manager, see Systems Manager\n//     service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreatePatchBaseline\nfunc (c *SSM) CreatePatchBaseline(input *CreatePatchBaselineInput) (*CreatePatchBaselineOutput, error) {\n\treq, out := c.CreatePatchBaselineRequest(input)\n\treturn out, req.Send()\n}\n\n// CreatePatchBaselineWithContext is the same as CreatePatchBaseline with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreatePatchBaseline for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) CreatePatchBaselineWithContext(ctx aws.Context, input *CreatePatchBaselineInput, opts ...request.Option) (*CreatePatchBaselineOutput, error) {\n\treq, out := c.CreatePatchBaselineRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCreateResourceDataSync = \"CreateResourceDataSync\"\n\n// CreateResourceDataSyncRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreateResourceDataSync operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreateResourceDataSync for more information on using the CreateResourceDataSync\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreateResourceDataSyncRequest method.\n//\treq, resp := client.CreateResourceDataSyncRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateResourceDataSync\nfunc (c *SSM) CreateResourceDataSyncRequest(input *CreateResourceDataSyncInput) (req *request.Request, output *CreateResourceDataSyncOutput) {\n\top := &request.Operation{\n\t\tName:       opCreateResourceDataSync,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreateResourceDataSyncInput{}\n\t}\n\n\toutput = &CreateResourceDataSyncOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// CreateResourceDataSync API operation for Amazon Simple Systems Manager (SSM).\n//\n// A resource data sync helps you view data from multiple sources in a single\n// location. Amazon Web Services Systems Manager offers two types of resource\n// data sync: SyncToDestination and SyncFromSource.\n//\n// You can configure Systems Manager Inventory to use the SyncToDestination\n// type to synchronize Inventory data from multiple Amazon Web Services Regions\n// to a single Amazon Simple Storage Service (Amazon S3) bucket. For more information,\n// see Configuring resource data sync for Inventory (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-datasync.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// You can configure Systems Manager Explorer to use the SyncFromSource type\n// to synchronize operational work items (OpsItems) and operational data (OpsData)\n// from multiple Amazon Web Services Regions to a single Amazon S3 bucket. This\n// type can synchronize OpsItems and OpsData from multiple Amazon Web Services\n// accounts and Amazon Web Services Regions or EntireOrganization by using Organizations.\n// For more information, see Setting up Systems Manager Explorer to display\n// data from multiple accounts and Regions (https://docs.aws.amazon.com/systems-manager/latest/userguide/Explorer-resource-data-sync.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// A resource data sync is an asynchronous operation that returns immediately.\n// After a successful initial sync is completed, the system continuously syncs\n// data. To check the status of a sync, use the ListResourceDataSync.\n//\n// By default, data isn't encrypted in Amazon S3. We strongly recommend that\n// you enable encryption in Amazon S3 to ensure secure data storage. We also\n// recommend that you secure access to the Amazon S3 bucket by creating a restrictive\n// bucket policy.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation CreateResourceDataSync for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - ResourceDataSyncCountExceededException\n//     You have exceeded the allowed maximum sync configurations.\n//\n//   - ResourceDataSyncAlreadyExistsException\n//     A sync configuration with the same name already exists.\n//\n//   - ResourceDataSyncInvalidConfigurationException\n//     The specified sync configuration is invalid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CreateResourceDataSync\nfunc (c *SSM) CreateResourceDataSync(input *CreateResourceDataSyncInput) (*CreateResourceDataSyncOutput, error) {\n\treq, out := c.CreateResourceDataSyncRequest(input)\n\treturn out, req.Send()\n}\n\n// CreateResourceDataSyncWithContext is the same as CreateResourceDataSync with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreateResourceDataSync for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) CreateResourceDataSyncWithContext(ctx aws.Context, input *CreateResourceDataSyncInput, opts ...request.Option) (*CreateResourceDataSyncOutput, error) {\n\treq, out := c.CreateResourceDataSyncRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteActivation = \"DeleteActivation\"\n\n// DeleteActivationRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteActivation operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteActivation for more information on using the DeleteActivation\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteActivationRequest method.\n//\treq, resp := client.DeleteActivationRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteActivation\nfunc (c *SSM) DeleteActivationRequest(input *DeleteActivationInput) (req *request.Request, output *DeleteActivationOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteActivation,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteActivationInput{}\n\t}\n\n\toutput = &DeleteActivationOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// DeleteActivation API operation for Amazon Simple Systems Manager (SSM).\n//\n// Deletes an activation. You aren't required to delete an activation. If you\n// delete an activation, you can no longer use it to register additional managed\n// nodes. Deleting an activation doesn't de-register managed nodes. You must\n// manually de-register managed nodes.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeleteActivation for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidActivationId\n//     The activation ID isn't valid. Verify the you entered the correct ActivationId\n//     or ActivationCode and try again.\n//\n//   - InvalidActivation\n//     The activation isn't valid. The activation might have been deleted, or the\n//     ActivationId and the ActivationCode don't match.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - TooManyUpdates\n//     There are concurrent updates for a resource that supports one update at a\n//     time.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteActivation\nfunc (c *SSM) DeleteActivation(input *DeleteActivationInput) (*DeleteActivationOutput, error) {\n\treq, out := c.DeleteActivationRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteActivationWithContext is the same as DeleteActivation with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteActivation for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeleteActivationWithContext(ctx aws.Context, input *DeleteActivationInput, opts ...request.Option) (*DeleteActivationOutput, error) {\n\treq, out := c.DeleteActivationRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteAssociation = \"DeleteAssociation\"\n\n// DeleteAssociationRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteAssociation operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteAssociation for more information on using the DeleteAssociation\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteAssociationRequest method.\n//\treq, resp := client.DeleteAssociationRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteAssociation\nfunc (c *SSM) DeleteAssociationRequest(input *DeleteAssociationInput) (req *request.Request, output *DeleteAssociationOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteAssociation,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteAssociationInput{}\n\t}\n\n\toutput = &DeleteAssociationOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// DeleteAssociation API operation for Amazon Simple Systems Manager (SSM).\n//\n// Disassociates the specified Amazon Web Services Systems Manager document\n// (SSM document) from the specified managed node. If you created the association\n// by using the Targets parameter, then you must delete the association by using\n// the association ID.\n//\n// When you disassociate a document from a managed node, it doesn't change the\n// configuration of the node. To change the configuration state of a managed\n// node after you disassociate a document, you must create a new document with\n// the desired configuration and associate it with the node.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeleteAssociation for usage and error information.\n//\n// Returned Error Types:\n//\n//   - AssociationDoesNotExist\n//     The specified association doesn't exist.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - TooManyUpdates\n//     There are concurrent updates for a resource that supports one update at a\n//     time.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteAssociation\nfunc (c *SSM) DeleteAssociation(input *DeleteAssociationInput) (*DeleteAssociationOutput, error) {\n\treq, out := c.DeleteAssociationRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteAssociationWithContext is the same as DeleteAssociation with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteAssociation for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeleteAssociationWithContext(ctx aws.Context, input *DeleteAssociationInput, opts ...request.Option) (*DeleteAssociationOutput, error) {\n\treq, out := c.DeleteAssociationRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteDocument = \"DeleteDocument\"\n\n// DeleteDocumentRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteDocument operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteDocument for more information on using the DeleteDocument\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteDocumentRequest method.\n//\treq, resp := client.DeleteDocumentRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteDocument\nfunc (c *SSM) DeleteDocumentRequest(input *DeleteDocumentInput) (req *request.Request, output *DeleteDocumentOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteDocument,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteDocumentInput{}\n\t}\n\n\toutput = &DeleteDocumentOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// DeleteDocument API operation for Amazon Simple Systems Manager (SSM).\n//\n// Deletes the Amazon Web Services Systems Manager document (SSM document) and\n// all managed node associations to the document.\n//\n// Before you delete the document, we recommend that you use DeleteAssociation\n// to disassociate all managed nodes that are associated with the document.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeleteDocument for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidDocumentOperation\n//     You attempted to delete a document while it is still shared. You must stop\n//     sharing the document before you can delete it.\n//\n//   - AssociatedInstances\n//     You must disassociate a document from all managed nodes before you can delete\n//     it.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteDocument\nfunc (c *SSM) DeleteDocument(input *DeleteDocumentInput) (*DeleteDocumentOutput, error) {\n\treq, out := c.DeleteDocumentRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteDocumentWithContext is the same as DeleteDocument with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteDocument for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeleteDocumentWithContext(ctx aws.Context, input *DeleteDocumentInput, opts ...request.Option) (*DeleteDocumentOutput, error) {\n\treq, out := c.DeleteDocumentRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteInventory = \"DeleteInventory\"\n\n// DeleteInventoryRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteInventory operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteInventory for more information on using the DeleteInventory\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteInventoryRequest method.\n//\treq, resp := client.DeleteInventoryRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteInventory\nfunc (c *SSM) DeleteInventoryRequest(input *DeleteInventoryInput) (req *request.Request, output *DeleteInventoryOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteInventory,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteInventoryInput{}\n\t}\n\n\toutput = &DeleteInventoryOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DeleteInventory API operation for Amazon Simple Systems Manager (SSM).\n//\n// Delete a custom inventory type or the data associated with a custom Inventory\n// type. Deleting a custom inventory type is also referred to as deleting a\n// custom inventory schema.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeleteInventory for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidTypeNameException\n//     The parameter type name isn't valid.\n//\n//   - InvalidOptionException\n//     The delete inventory option specified isn't valid. Verify the option and\n//     try again.\n//\n//   - InvalidDeleteInventoryParametersException\n//     One or more of the parameters specified for the delete operation isn't valid.\n//     Verify all parameters and try again.\n//\n//   - InvalidInventoryRequestException\n//     The request isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteInventory\nfunc (c *SSM) DeleteInventory(input *DeleteInventoryInput) (*DeleteInventoryOutput, error) {\n\treq, out := c.DeleteInventoryRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteInventoryWithContext is the same as DeleteInventory with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteInventory for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeleteInventoryWithContext(ctx aws.Context, input *DeleteInventoryInput, opts ...request.Option) (*DeleteInventoryOutput, error) {\n\treq, out := c.DeleteInventoryRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteMaintenanceWindow = \"DeleteMaintenanceWindow\"\n\n// DeleteMaintenanceWindowRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteMaintenanceWindow operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteMaintenanceWindow for more information on using the DeleteMaintenanceWindow\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteMaintenanceWindowRequest method.\n//\treq, resp := client.DeleteMaintenanceWindowRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteMaintenanceWindow\nfunc (c *SSM) DeleteMaintenanceWindowRequest(input *DeleteMaintenanceWindowInput) (req *request.Request, output *DeleteMaintenanceWindowOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteMaintenanceWindow,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteMaintenanceWindowInput{}\n\t}\n\n\toutput = &DeleteMaintenanceWindowOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DeleteMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).\n//\n// Deletes a maintenance window.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeleteMaintenanceWindow for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteMaintenanceWindow\nfunc (c *SSM) DeleteMaintenanceWindow(input *DeleteMaintenanceWindowInput) (*DeleteMaintenanceWindowOutput, error) {\n\treq, out := c.DeleteMaintenanceWindowRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteMaintenanceWindowWithContext is the same as DeleteMaintenanceWindow with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteMaintenanceWindow for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeleteMaintenanceWindowWithContext(ctx aws.Context, input *DeleteMaintenanceWindowInput, opts ...request.Option) (*DeleteMaintenanceWindowOutput, error) {\n\treq, out := c.DeleteMaintenanceWindowRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteOpsItem = \"DeleteOpsItem\"\n\n// DeleteOpsItemRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteOpsItem operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteOpsItem for more information on using the DeleteOpsItem\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteOpsItemRequest method.\n//\treq, resp := client.DeleteOpsItemRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteOpsItem\nfunc (c *SSM) DeleteOpsItemRequest(input *DeleteOpsItemInput) (req *request.Request, output *DeleteOpsItemOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteOpsItem,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteOpsItemInput{}\n\t}\n\n\toutput = &DeleteOpsItemOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// DeleteOpsItem API operation for Amazon Simple Systems Manager (SSM).\n//\n// Delete an OpsItem. You must have permission in Identity and Access Management\n// (IAM) to delete an OpsItem.\n//\n// Note the following important information about this operation.\n//\n//   - Deleting an OpsItem is irreversible. You can't restore a deleted OpsItem.\n//\n//   - This operation uses an eventual consistency model, which means the system\n//     can take a few minutes to complete this operation. If you delete an OpsItem\n//     and immediately call, for example, GetOpsItem, the deleted OpsItem might\n//     still appear in the response.\n//\n//   - This operation is idempotent. The system doesn't throw an exception\n//     if you repeatedly call this operation for the same OpsItem. If the first\n//     call is successful, all additional calls return the same successful response\n//     as the first call.\n//\n//   - This operation doesn't support cross-account calls. A delegated administrator\n//     or management account can't delete OpsItems in other accounts, even if\n//     OpsCenter has been set up for cross-account administration. For more information\n//     about cross-account administration, see Setting up OpsCenter to centrally\n//     manage OpsItems across accounts (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-setting-up-cross-account.html)\n//     in the Systems Manager User Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeleteOpsItem for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - OpsItemInvalidParameterException\n//     A specified parameter argument isn't valid. Verify the available arguments\n//     and try again.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteOpsItem\nfunc (c *SSM) DeleteOpsItem(input *DeleteOpsItemInput) (*DeleteOpsItemOutput, error) {\n\treq, out := c.DeleteOpsItemRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteOpsItemWithContext is the same as DeleteOpsItem with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteOpsItem for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeleteOpsItemWithContext(ctx aws.Context, input *DeleteOpsItemInput, opts ...request.Option) (*DeleteOpsItemOutput, error) {\n\treq, out := c.DeleteOpsItemRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteOpsMetadata = \"DeleteOpsMetadata\"\n\n// DeleteOpsMetadataRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteOpsMetadata operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteOpsMetadata for more information on using the DeleteOpsMetadata\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteOpsMetadataRequest method.\n//\treq, resp := client.DeleteOpsMetadataRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteOpsMetadata\nfunc (c *SSM) DeleteOpsMetadataRequest(input *DeleteOpsMetadataInput) (req *request.Request, output *DeleteOpsMetadataOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteOpsMetadata,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteOpsMetadataInput{}\n\t}\n\n\toutput = &DeleteOpsMetadataOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// DeleteOpsMetadata API operation for Amazon Simple Systems Manager (SSM).\n//\n// Delete OpsMetadata related to an application.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeleteOpsMetadata for usage and error information.\n//\n// Returned Error Types:\n//\n//   - OpsMetadataNotFoundException\n//     The OpsMetadata object doesn't exist.\n//\n//   - OpsMetadataInvalidArgumentException\n//     One of the arguments passed is invalid.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteOpsMetadata\nfunc (c *SSM) DeleteOpsMetadata(input *DeleteOpsMetadataInput) (*DeleteOpsMetadataOutput, error) {\n\treq, out := c.DeleteOpsMetadataRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteOpsMetadataWithContext is the same as DeleteOpsMetadata with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteOpsMetadata for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeleteOpsMetadataWithContext(ctx aws.Context, input *DeleteOpsMetadataInput, opts ...request.Option) (*DeleteOpsMetadataOutput, error) {\n\treq, out := c.DeleteOpsMetadataRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteParameter = \"DeleteParameter\"\n\n// DeleteParameterRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteParameter operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteParameter for more information on using the DeleteParameter\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteParameterRequest method.\n//\treq, resp := client.DeleteParameterRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteParameter\nfunc (c *SSM) DeleteParameterRequest(input *DeleteParameterInput) (req *request.Request, output *DeleteParameterOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteParameter,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteParameterInput{}\n\t}\n\n\toutput = &DeleteParameterOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// DeleteParameter API operation for Amazon Simple Systems Manager (SSM).\n//\n// Delete a parameter from the system. After deleting a parameter, wait for\n// at least 30 seconds to create a parameter with the same name.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeleteParameter for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - ParameterNotFound\n//     The parameter couldn't be found. Verify the name and try again.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteParameter\nfunc (c *SSM) DeleteParameter(input *DeleteParameterInput) (*DeleteParameterOutput, error) {\n\treq, out := c.DeleteParameterRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteParameterWithContext is the same as DeleteParameter with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteParameter for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeleteParameterWithContext(ctx aws.Context, input *DeleteParameterInput, opts ...request.Option) (*DeleteParameterOutput, error) {\n\treq, out := c.DeleteParameterRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteParameters = \"DeleteParameters\"\n\n// DeleteParametersRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteParameters operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteParameters for more information on using the DeleteParameters\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteParametersRequest method.\n//\treq, resp := client.DeleteParametersRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteParameters\nfunc (c *SSM) DeleteParametersRequest(input *DeleteParametersInput) (req *request.Request, output *DeleteParametersOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteParameters,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteParametersInput{}\n\t}\n\n\toutput = &DeleteParametersOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DeleteParameters API operation for Amazon Simple Systems Manager (SSM).\n//\n// Delete a list of parameters. After deleting a parameter, wait for at least\n// 30 seconds to create a parameter with the same name.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeleteParameters for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteParameters\nfunc (c *SSM) DeleteParameters(input *DeleteParametersInput) (*DeleteParametersOutput, error) {\n\treq, out := c.DeleteParametersRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteParametersWithContext is the same as DeleteParameters with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteParameters for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeleteParametersWithContext(ctx aws.Context, input *DeleteParametersInput, opts ...request.Option) (*DeleteParametersOutput, error) {\n\treq, out := c.DeleteParametersRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeletePatchBaseline = \"DeletePatchBaseline\"\n\n// DeletePatchBaselineRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeletePatchBaseline operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeletePatchBaseline for more information on using the DeletePatchBaseline\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeletePatchBaselineRequest method.\n//\treq, resp := client.DeletePatchBaselineRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeletePatchBaseline\nfunc (c *SSM) DeletePatchBaselineRequest(input *DeletePatchBaselineInput) (req *request.Request, output *DeletePatchBaselineOutput) {\n\top := &request.Operation{\n\t\tName:       opDeletePatchBaseline,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeletePatchBaselineInput{}\n\t}\n\n\toutput = &DeletePatchBaselineOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DeletePatchBaseline API operation for Amazon Simple Systems Manager (SSM).\n//\n// Deletes a patch baseline.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeletePatchBaseline for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceInUseException\n//     Error returned if an attempt is made to delete a patch baseline that is registered\n//     for a patch group.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeletePatchBaseline\nfunc (c *SSM) DeletePatchBaseline(input *DeletePatchBaselineInput) (*DeletePatchBaselineOutput, error) {\n\treq, out := c.DeletePatchBaselineRequest(input)\n\treturn out, req.Send()\n}\n\n// DeletePatchBaselineWithContext is the same as DeletePatchBaseline with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeletePatchBaseline for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeletePatchBaselineWithContext(ctx aws.Context, input *DeletePatchBaselineInput, opts ...request.Option) (*DeletePatchBaselineOutput, error) {\n\treq, out := c.DeletePatchBaselineRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteResourceDataSync = \"DeleteResourceDataSync\"\n\n// DeleteResourceDataSyncRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteResourceDataSync operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteResourceDataSync for more information on using the DeleteResourceDataSync\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteResourceDataSyncRequest method.\n//\treq, resp := client.DeleteResourceDataSyncRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteResourceDataSync\nfunc (c *SSM) DeleteResourceDataSyncRequest(input *DeleteResourceDataSyncInput) (req *request.Request, output *DeleteResourceDataSyncOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteResourceDataSync,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteResourceDataSyncInput{}\n\t}\n\n\toutput = &DeleteResourceDataSyncOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// DeleteResourceDataSync API operation for Amazon Simple Systems Manager (SSM).\n//\n// Deletes a resource data sync configuration. After the configuration is deleted,\n// changes to data on managed nodes are no longer synced to or from the target.\n// Deleting a sync configuration doesn't delete data.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeleteResourceDataSync for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - ResourceDataSyncNotFoundException\n//     The specified sync name wasn't found.\n//\n//   - ResourceDataSyncInvalidConfigurationException\n//     The specified sync configuration is invalid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteResourceDataSync\nfunc (c *SSM) DeleteResourceDataSync(input *DeleteResourceDataSyncInput) (*DeleteResourceDataSyncOutput, error) {\n\treq, out := c.DeleteResourceDataSyncRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteResourceDataSyncWithContext is the same as DeleteResourceDataSync with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteResourceDataSync for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeleteResourceDataSyncWithContext(ctx aws.Context, input *DeleteResourceDataSyncInput, opts ...request.Option) (*DeleteResourceDataSyncOutput, error) {\n\treq, out := c.DeleteResourceDataSyncRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeleteResourcePolicy = \"DeleteResourcePolicy\"\n\n// DeleteResourcePolicyRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeleteResourcePolicy operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeleteResourcePolicy for more information on using the DeleteResourcePolicy\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeleteResourcePolicyRequest method.\n//\treq, resp := client.DeleteResourcePolicyRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteResourcePolicy\nfunc (c *SSM) DeleteResourcePolicyRequest(input *DeleteResourcePolicyInput) (req *request.Request, output *DeleteResourcePolicyOutput) {\n\top := &request.Operation{\n\t\tName:       opDeleteResourcePolicy,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeleteResourcePolicyInput{}\n\t}\n\n\toutput = &DeleteResourcePolicyOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// DeleteResourcePolicy API operation for Amazon Simple Systems Manager (SSM).\n//\n// Deletes a Systems Manager resource policy. A resource policy helps you to\n// define the IAM entity (for example, an Amazon Web Services account) that\n// can manage your Systems Manager resources. Currently, OpsItemGroup is the\n// only resource that supports Systems Manager resource policies. The resource\n// policy for OpsItemGroup enables Amazon Web Services accounts to view and\n// interact with OpsCenter operational work items (OpsItems).\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeleteResourcePolicy for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - ResourcePolicyInvalidParameterException\n//     One or more parameters specified for the call aren't valid. Verify the parameters\n//     and their values and try again.\n//\n//   - ResourcePolicyConflictException\n//     The hash provided in the call doesn't match the stored hash. This exception\n//     is thrown when trying to update an obsolete policy version or when multiple\n//     requests to update a policy are sent.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeleteResourcePolicy\nfunc (c *SSM) DeleteResourcePolicy(input *DeleteResourcePolicyInput) (*DeleteResourcePolicyOutput, error) {\n\treq, out := c.DeleteResourcePolicyRequest(input)\n\treturn out, req.Send()\n}\n\n// DeleteResourcePolicyWithContext is the same as DeleteResourcePolicy with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeleteResourcePolicy for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeleteResourcePolicyWithContext(ctx aws.Context, input *DeleteResourcePolicyInput, opts ...request.Option) (*DeleteResourcePolicyOutput, error) {\n\treq, out := c.DeleteResourcePolicyRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeregisterManagedInstance = \"DeregisterManagedInstance\"\n\n// DeregisterManagedInstanceRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeregisterManagedInstance operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeregisterManagedInstance for more information on using the DeregisterManagedInstance\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeregisterManagedInstanceRequest method.\n//\treq, resp := client.DeregisterManagedInstanceRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterManagedInstance\nfunc (c *SSM) DeregisterManagedInstanceRequest(input *DeregisterManagedInstanceInput) (req *request.Request, output *DeregisterManagedInstanceOutput) {\n\top := &request.Operation{\n\t\tName:       opDeregisterManagedInstance,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeregisterManagedInstanceInput{}\n\t}\n\n\toutput = &DeregisterManagedInstanceOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// DeregisterManagedInstance API operation for Amazon Simple Systems Manager (SSM).\n//\n// Removes the server or virtual machine from the list of registered servers.\n// You can reregister the node again at any time. If you don't plan to use Run\n// Command on the server, we suggest uninstalling SSM Agent first.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeregisterManagedInstance for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterManagedInstance\nfunc (c *SSM) DeregisterManagedInstance(input *DeregisterManagedInstanceInput) (*DeregisterManagedInstanceOutput, error) {\n\treq, out := c.DeregisterManagedInstanceRequest(input)\n\treturn out, req.Send()\n}\n\n// DeregisterManagedInstanceWithContext is the same as DeregisterManagedInstance with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeregisterManagedInstance for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeregisterManagedInstanceWithContext(ctx aws.Context, input *DeregisterManagedInstanceInput, opts ...request.Option) (*DeregisterManagedInstanceOutput, error) {\n\treq, out := c.DeregisterManagedInstanceRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeregisterPatchBaselineForPatchGroup = \"DeregisterPatchBaselineForPatchGroup\"\n\n// DeregisterPatchBaselineForPatchGroupRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeregisterPatchBaselineForPatchGroup operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeregisterPatchBaselineForPatchGroup for more information on using the DeregisterPatchBaselineForPatchGroup\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeregisterPatchBaselineForPatchGroupRequest method.\n//\treq, resp := client.DeregisterPatchBaselineForPatchGroupRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterPatchBaselineForPatchGroup\nfunc (c *SSM) DeregisterPatchBaselineForPatchGroupRequest(input *DeregisterPatchBaselineForPatchGroupInput) (req *request.Request, output *DeregisterPatchBaselineForPatchGroupOutput) {\n\top := &request.Operation{\n\t\tName:       opDeregisterPatchBaselineForPatchGroup,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeregisterPatchBaselineForPatchGroupInput{}\n\t}\n\n\toutput = &DeregisterPatchBaselineForPatchGroupOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DeregisterPatchBaselineForPatchGroup API operation for Amazon Simple Systems Manager (SSM).\n//\n// Removes a patch group from a patch baseline.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeregisterPatchBaselineForPatchGroup for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidResourceId\n//     The resource ID isn't valid. Verify that you entered the correct ID and try\n//     again.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterPatchBaselineForPatchGroup\nfunc (c *SSM) DeregisterPatchBaselineForPatchGroup(input *DeregisterPatchBaselineForPatchGroupInput) (*DeregisterPatchBaselineForPatchGroupOutput, error) {\n\treq, out := c.DeregisterPatchBaselineForPatchGroupRequest(input)\n\treturn out, req.Send()\n}\n\n// DeregisterPatchBaselineForPatchGroupWithContext is the same as DeregisterPatchBaselineForPatchGroup with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeregisterPatchBaselineForPatchGroup for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeregisterPatchBaselineForPatchGroupWithContext(ctx aws.Context, input *DeregisterPatchBaselineForPatchGroupInput, opts ...request.Option) (*DeregisterPatchBaselineForPatchGroupOutput, error) {\n\treq, out := c.DeregisterPatchBaselineForPatchGroupRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeregisterTargetFromMaintenanceWindow = \"DeregisterTargetFromMaintenanceWindow\"\n\n// DeregisterTargetFromMaintenanceWindowRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeregisterTargetFromMaintenanceWindow operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeregisterTargetFromMaintenanceWindow for more information on using the DeregisterTargetFromMaintenanceWindow\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeregisterTargetFromMaintenanceWindowRequest method.\n//\treq, resp := client.DeregisterTargetFromMaintenanceWindowRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterTargetFromMaintenanceWindow\nfunc (c *SSM) DeregisterTargetFromMaintenanceWindowRequest(input *DeregisterTargetFromMaintenanceWindowInput) (req *request.Request, output *DeregisterTargetFromMaintenanceWindowOutput) {\n\top := &request.Operation{\n\t\tName:       opDeregisterTargetFromMaintenanceWindow,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeregisterTargetFromMaintenanceWindowInput{}\n\t}\n\n\toutput = &DeregisterTargetFromMaintenanceWindowOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DeregisterTargetFromMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).\n//\n// Removes a target from a maintenance window.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeregisterTargetFromMaintenanceWindow for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - TargetInUseException\n//     You specified the Safe option for the DeregisterTargetFromMaintenanceWindow\n//     operation, but the target is still referenced in a task.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterTargetFromMaintenanceWindow\nfunc (c *SSM) DeregisterTargetFromMaintenanceWindow(input *DeregisterTargetFromMaintenanceWindowInput) (*DeregisterTargetFromMaintenanceWindowOutput, error) {\n\treq, out := c.DeregisterTargetFromMaintenanceWindowRequest(input)\n\treturn out, req.Send()\n}\n\n// DeregisterTargetFromMaintenanceWindowWithContext is the same as DeregisterTargetFromMaintenanceWindow with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeregisterTargetFromMaintenanceWindow for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeregisterTargetFromMaintenanceWindowWithContext(ctx aws.Context, input *DeregisterTargetFromMaintenanceWindowInput, opts ...request.Option) (*DeregisterTargetFromMaintenanceWindowOutput, error) {\n\treq, out := c.DeregisterTargetFromMaintenanceWindowRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDeregisterTaskFromMaintenanceWindow = \"DeregisterTaskFromMaintenanceWindow\"\n\n// DeregisterTaskFromMaintenanceWindowRequest generates a \"aws/request.Request\" representing the\n// client's request for the DeregisterTaskFromMaintenanceWindow operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DeregisterTaskFromMaintenanceWindow for more information on using the DeregisterTaskFromMaintenanceWindow\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DeregisterTaskFromMaintenanceWindowRequest method.\n//\treq, resp := client.DeregisterTaskFromMaintenanceWindowRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterTaskFromMaintenanceWindow\nfunc (c *SSM) DeregisterTaskFromMaintenanceWindowRequest(input *DeregisterTaskFromMaintenanceWindowInput) (req *request.Request, output *DeregisterTaskFromMaintenanceWindowOutput) {\n\top := &request.Operation{\n\t\tName:       opDeregisterTaskFromMaintenanceWindow,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DeregisterTaskFromMaintenanceWindowInput{}\n\t}\n\n\toutput = &DeregisterTaskFromMaintenanceWindowOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DeregisterTaskFromMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).\n//\n// Removes a task from a maintenance window.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DeregisterTaskFromMaintenanceWindow for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DeregisterTaskFromMaintenanceWindow\nfunc (c *SSM) DeregisterTaskFromMaintenanceWindow(input *DeregisterTaskFromMaintenanceWindowInput) (*DeregisterTaskFromMaintenanceWindowOutput, error) {\n\treq, out := c.DeregisterTaskFromMaintenanceWindowRequest(input)\n\treturn out, req.Send()\n}\n\n// DeregisterTaskFromMaintenanceWindowWithContext is the same as DeregisterTaskFromMaintenanceWindow with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DeregisterTaskFromMaintenanceWindow for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DeregisterTaskFromMaintenanceWindowWithContext(ctx aws.Context, input *DeregisterTaskFromMaintenanceWindowInput, opts ...request.Option) (*DeregisterTaskFromMaintenanceWindowOutput, error) {\n\treq, out := c.DeregisterTaskFromMaintenanceWindowRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeActivations = \"DescribeActivations\"\n\n// DescribeActivationsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeActivations operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeActivations for more information on using the DescribeActivations\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeActivationsRequest method.\n//\treq, resp := client.DescribeActivationsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeActivations\nfunc (c *SSM) DescribeActivationsRequest(input *DescribeActivationsInput) (req *request.Request, output *DescribeActivationsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeActivations,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeActivationsInput{}\n\t}\n\n\toutput = &DescribeActivationsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeActivations API operation for Amazon Simple Systems Manager (SSM).\n//\n// Describes details about the activation, such as the date and time the activation\n// was created, its expiration date, the Identity and Access Management (IAM)\n// role assigned to the managed nodes in the activation, and the number of nodes\n// registered by using this activation.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeActivations for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidFilter\n//     The filter name isn't valid. Verify the you entered the correct name and\n//     try again.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeActivations\nfunc (c *SSM) DescribeActivations(input *DescribeActivationsInput) (*DescribeActivationsOutput, error) {\n\treq, out := c.DescribeActivationsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeActivationsWithContext is the same as DescribeActivations with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeActivations for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeActivationsWithContext(ctx aws.Context, input *DescribeActivationsInput, opts ...request.Option) (*DescribeActivationsOutput, error) {\n\treq, out := c.DescribeActivationsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeActivationsPages iterates over the pages of a DescribeActivations operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeActivations method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeActivations operation.\n//\tpageNum := 0\n//\terr := client.DescribeActivationsPages(params,\n//\t    func(page *ssm.DescribeActivationsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeActivationsPages(input *DescribeActivationsInput, fn func(*DescribeActivationsOutput, bool) bool) error {\n\treturn c.DescribeActivationsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeActivationsPagesWithContext same as DescribeActivationsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeActivationsPagesWithContext(ctx aws.Context, input *DescribeActivationsInput, fn func(*DescribeActivationsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeActivationsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeActivationsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeActivationsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeAssociation = \"DescribeAssociation\"\n\n// DescribeAssociationRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeAssociation operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeAssociation for more information on using the DescribeAssociation\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeAssociationRequest method.\n//\treq, resp := client.DescribeAssociationRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAssociation\nfunc (c *SSM) DescribeAssociationRequest(input *DescribeAssociationInput) (req *request.Request, output *DescribeAssociationOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeAssociation,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeAssociationInput{}\n\t}\n\n\toutput = &DescribeAssociationOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeAssociation API operation for Amazon Simple Systems Manager (SSM).\n//\n// Describes the association for the specified target or managed node. If you\n// created the association by using the Targets parameter, then you must retrieve\n// the association by using the association ID.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeAssociation for usage and error information.\n//\n// Returned Error Types:\n//\n//   - AssociationDoesNotExist\n//     The specified association doesn't exist.\n//\n//   - InvalidAssociationVersion\n//     The version you specified isn't valid. Use ListAssociationVersions to view\n//     all versions of an association according to the association ID. Or, use the\n//     $LATEST parameter to view the latest version of the association.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAssociation\nfunc (c *SSM) DescribeAssociation(input *DescribeAssociationInput) (*DescribeAssociationOutput, error) {\n\treq, out := c.DescribeAssociationRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeAssociationWithContext is the same as DescribeAssociation with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeAssociation for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeAssociationWithContext(ctx aws.Context, input *DescribeAssociationInput, opts ...request.Option) (*DescribeAssociationOutput, error) {\n\treq, out := c.DescribeAssociationRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeAssociationExecutionTargets = \"DescribeAssociationExecutionTargets\"\n\n// DescribeAssociationExecutionTargetsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeAssociationExecutionTargets operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeAssociationExecutionTargets for more information on using the DescribeAssociationExecutionTargets\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeAssociationExecutionTargetsRequest method.\n//\treq, resp := client.DescribeAssociationExecutionTargetsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAssociationExecutionTargets\nfunc (c *SSM) DescribeAssociationExecutionTargetsRequest(input *DescribeAssociationExecutionTargetsInput) (req *request.Request, output *DescribeAssociationExecutionTargetsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeAssociationExecutionTargets,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeAssociationExecutionTargetsInput{}\n\t}\n\n\toutput = &DescribeAssociationExecutionTargetsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeAssociationExecutionTargets API operation for Amazon Simple Systems Manager (SSM).\n//\n// Views information about a specific execution of a specific association.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeAssociationExecutionTargets for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - AssociationDoesNotExist\n//     The specified association doesn't exist.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - AssociationExecutionDoesNotExist\n//     The specified execution ID doesn't exist. Verify the ID number and try again.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAssociationExecutionTargets\nfunc (c *SSM) DescribeAssociationExecutionTargets(input *DescribeAssociationExecutionTargetsInput) (*DescribeAssociationExecutionTargetsOutput, error) {\n\treq, out := c.DescribeAssociationExecutionTargetsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeAssociationExecutionTargetsWithContext is the same as DescribeAssociationExecutionTargets with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeAssociationExecutionTargets for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeAssociationExecutionTargetsWithContext(ctx aws.Context, input *DescribeAssociationExecutionTargetsInput, opts ...request.Option) (*DescribeAssociationExecutionTargetsOutput, error) {\n\treq, out := c.DescribeAssociationExecutionTargetsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeAssociationExecutionTargetsPages iterates over the pages of a DescribeAssociationExecutionTargets operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeAssociationExecutionTargets method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeAssociationExecutionTargets operation.\n//\tpageNum := 0\n//\terr := client.DescribeAssociationExecutionTargetsPages(params,\n//\t    func(page *ssm.DescribeAssociationExecutionTargetsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeAssociationExecutionTargetsPages(input *DescribeAssociationExecutionTargetsInput, fn func(*DescribeAssociationExecutionTargetsOutput, bool) bool) error {\n\treturn c.DescribeAssociationExecutionTargetsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeAssociationExecutionTargetsPagesWithContext same as DescribeAssociationExecutionTargetsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeAssociationExecutionTargetsPagesWithContext(ctx aws.Context, input *DescribeAssociationExecutionTargetsInput, fn func(*DescribeAssociationExecutionTargetsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeAssociationExecutionTargetsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeAssociationExecutionTargetsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeAssociationExecutionTargetsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeAssociationExecutions = \"DescribeAssociationExecutions\"\n\n// DescribeAssociationExecutionsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeAssociationExecutions operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeAssociationExecutions for more information on using the DescribeAssociationExecutions\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeAssociationExecutionsRequest method.\n//\treq, resp := client.DescribeAssociationExecutionsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAssociationExecutions\nfunc (c *SSM) DescribeAssociationExecutionsRequest(input *DescribeAssociationExecutionsInput) (req *request.Request, output *DescribeAssociationExecutionsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeAssociationExecutions,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeAssociationExecutionsInput{}\n\t}\n\n\toutput = &DescribeAssociationExecutionsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeAssociationExecutions API operation for Amazon Simple Systems Manager (SSM).\n//\n// Views all executions for a specific association ID.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeAssociationExecutions for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - AssociationDoesNotExist\n//     The specified association doesn't exist.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAssociationExecutions\nfunc (c *SSM) DescribeAssociationExecutions(input *DescribeAssociationExecutionsInput) (*DescribeAssociationExecutionsOutput, error) {\n\treq, out := c.DescribeAssociationExecutionsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeAssociationExecutionsWithContext is the same as DescribeAssociationExecutions with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeAssociationExecutions for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeAssociationExecutionsWithContext(ctx aws.Context, input *DescribeAssociationExecutionsInput, opts ...request.Option) (*DescribeAssociationExecutionsOutput, error) {\n\treq, out := c.DescribeAssociationExecutionsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeAssociationExecutionsPages iterates over the pages of a DescribeAssociationExecutions operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeAssociationExecutions method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeAssociationExecutions operation.\n//\tpageNum := 0\n//\terr := client.DescribeAssociationExecutionsPages(params,\n//\t    func(page *ssm.DescribeAssociationExecutionsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeAssociationExecutionsPages(input *DescribeAssociationExecutionsInput, fn func(*DescribeAssociationExecutionsOutput, bool) bool) error {\n\treturn c.DescribeAssociationExecutionsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeAssociationExecutionsPagesWithContext same as DescribeAssociationExecutionsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeAssociationExecutionsPagesWithContext(ctx aws.Context, input *DescribeAssociationExecutionsInput, fn func(*DescribeAssociationExecutionsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeAssociationExecutionsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeAssociationExecutionsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeAssociationExecutionsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeAutomationExecutions = \"DescribeAutomationExecutions\"\n\n// DescribeAutomationExecutionsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeAutomationExecutions operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeAutomationExecutions for more information on using the DescribeAutomationExecutions\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeAutomationExecutionsRequest method.\n//\treq, resp := client.DescribeAutomationExecutionsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAutomationExecutions\nfunc (c *SSM) DescribeAutomationExecutionsRequest(input *DescribeAutomationExecutionsInput) (req *request.Request, output *DescribeAutomationExecutionsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeAutomationExecutions,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeAutomationExecutionsInput{}\n\t}\n\n\toutput = &DescribeAutomationExecutionsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeAutomationExecutions API operation for Amazon Simple Systems Manager (SSM).\n//\n// Provides details about all active and terminated Automation executions.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeAutomationExecutions for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidFilterKey\n//     The specified key isn't valid.\n//\n//   - InvalidFilterValue\n//     The filter value isn't valid. Verify the value and try again.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAutomationExecutions\nfunc (c *SSM) DescribeAutomationExecutions(input *DescribeAutomationExecutionsInput) (*DescribeAutomationExecutionsOutput, error) {\n\treq, out := c.DescribeAutomationExecutionsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeAutomationExecutionsWithContext is the same as DescribeAutomationExecutions with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeAutomationExecutions for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeAutomationExecutionsWithContext(ctx aws.Context, input *DescribeAutomationExecutionsInput, opts ...request.Option) (*DescribeAutomationExecutionsOutput, error) {\n\treq, out := c.DescribeAutomationExecutionsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeAutomationExecutionsPages iterates over the pages of a DescribeAutomationExecutions operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeAutomationExecutions method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeAutomationExecutions operation.\n//\tpageNum := 0\n//\terr := client.DescribeAutomationExecutionsPages(params,\n//\t    func(page *ssm.DescribeAutomationExecutionsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeAutomationExecutionsPages(input *DescribeAutomationExecutionsInput, fn func(*DescribeAutomationExecutionsOutput, bool) bool) error {\n\treturn c.DescribeAutomationExecutionsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeAutomationExecutionsPagesWithContext same as DescribeAutomationExecutionsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeAutomationExecutionsPagesWithContext(ctx aws.Context, input *DescribeAutomationExecutionsInput, fn func(*DescribeAutomationExecutionsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeAutomationExecutionsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeAutomationExecutionsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeAutomationExecutionsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeAutomationStepExecutions = \"DescribeAutomationStepExecutions\"\n\n// DescribeAutomationStepExecutionsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeAutomationStepExecutions operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeAutomationStepExecutions for more information on using the DescribeAutomationStepExecutions\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeAutomationStepExecutionsRequest method.\n//\treq, resp := client.DescribeAutomationStepExecutionsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAutomationStepExecutions\nfunc (c *SSM) DescribeAutomationStepExecutionsRequest(input *DescribeAutomationStepExecutionsInput) (req *request.Request, output *DescribeAutomationStepExecutionsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeAutomationStepExecutions,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeAutomationStepExecutionsInput{}\n\t}\n\n\toutput = &DescribeAutomationStepExecutionsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeAutomationStepExecutions API operation for Amazon Simple Systems Manager (SSM).\n//\n// Information about all active and terminated step executions in an Automation\n// workflow.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeAutomationStepExecutions for usage and error information.\n//\n// Returned Error Types:\n//\n//   - AutomationExecutionNotFoundException\n//     There is no automation execution information for the requested automation\n//     execution ID.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - InvalidFilterKey\n//     The specified key isn't valid.\n//\n//   - InvalidFilterValue\n//     The filter value isn't valid. Verify the value and try again.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAutomationStepExecutions\nfunc (c *SSM) DescribeAutomationStepExecutions(input *DescribeAutomationStepExecutionsInput) (*DescribeAutomationStepExecutionsOutput, error) {\n\treq, out := c.DescribeAutomationStepExecutionsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeAutomationStepExecutionsWithContext is the same as DescribeAutomationStepExecutions with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeAutomationStepExecutions for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeAutomationStepExecutionsWithContext(ctx aws.Context, input *DescribeAutomationStepExecutionsInput, opts ...request.Option) (*DescribeAutomationStepExecutionsOutput, error) {\n\treq, out := c.DescribeAutomationStepExecutionsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeAutomationStepExecutionsPages iterates over the pages of a DescribeAutomationStepExecutions operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeAutomationStepExecutions method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeAutomationStepExecutions operation.\n//\tpageNum := 0\n//\terr := client.DescribeAutomationStepExecutionsPages(params,\n//\t    func(page *ssm.DescribeAutomationStepExecutionsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeAutomationStepExecutionsPages(input *DescribeAutomationStepExecutionsInput, fn func(*DescribeAutomationStepExecutionsOutput, bool) bool) error {\n\treturn c.DescribeAutomationStepExecutionsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeAutomationStepExecutionsPagesWithContext same as DescribeAutomationStepExecutionsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeAutomationStepExecutionsPagesWithContext(ctx aws.Context, input *DescribeAutomationStepExecutionsInput, fn func(*DescribeAutomationStepExecutionsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeAutomationStepExecutionsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeAutomationStepExecutionsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeAutomationStepExecutionsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeAvailablePatches = \"DescribeAvailablePatches\"\n\n// DescribeAvailablePatchesRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeAvailablePatches operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeAvailablePatches for more information on using the DescribeAvailablePatches\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeAvailablePatchesRequest method.\n//\treq, resp := client.DescribeAvailablePatchesRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAvailablePatches\nfunc (c *SSM) DescribeAvailablePatchesRequest(input *DescribeAvailablePatchesInput) (req *request.Request, output *DescribeAvailablePatchesOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeAvailablePatches,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeAvailablePatchesInput{}\n\t}\n\n\toutput = &DescribeAvailablePatchesOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeAvailablePatches API operation for Amazon Simple Systems Manager (SSM).\n//\n// Lists all patches eligible to be included in a patch baseline.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeAvailablePatches for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeAvailablePatches\nfunc (c *SSM) DescribeAvailablePatches(input *DescribeAvailablePatchesInput) (*DescribeAvailablePatchesOutput, error) {\n\treq, out := c.DescribeAvailablePatchesRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeAvailablePatchesWithContext is the same as DescribeAvailablePatches with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeAvailablePatches for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeAvailablePatchesWithContext(ctx aws.Context, input *DescribeAvailablePatchesInput, opts ...request.Option) (*DescribeAvailablePatchesOutput, error) {\n\treq, out := c.DescribeAvailablePatchesRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeAvailablePatchesPages iterates over the pages of a DescribeAvailablePatches operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeAvailablePatches method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeAvailablePatches operation.\n//\tpageNum := 0\n//\terr := client.DescribeAvailablePatchesPages(params,\n//\t    func(page *ssm.DescribeAvailablePatchesOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeAvailablePatchesPages(input *DescribeAvailablePatchesInput, fn func(*DescribeAvailablePatchesOutput, bool) bool) error {\n\treturn c.DescribeAvailablePatchesPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeAvailablePatchesPagesWithContext same as DescribeAvailablePatchesPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeAvailablePatchesPagesWithContext(ctx aws.Context, input *DescribeAvailablePatchesInput, fn func(*DescribeAvailablePatchesOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeAvailablePatchesInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeAvailablePatchesRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeAvailablePatchesOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeDocument = \"DescribeDocument\"\n\n// DescribeDocumentRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeDocument operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeDocument for more information on using the DescribeDocument\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeDocumentRequest method.\n//\treq, resp := client.DescribeDocumentRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeDocument\nfunc (c *SSM) DescribeDocumentRequest(input *DescribeDocumentInput) (req *request.Request, output *DescribeDocumentOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeDocument,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeDocumentInput{}\n\t}\n\n\toutput = &DescribeDocumentOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeDocument API operation for Amazon Simple Systems Manager (SSM).\n//\n// Describes the specified Amazon Web Services Systems Manager document (SSM\n// document).\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeDocument for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidDocumentVersion\n//     The document version isn't valid or doesn't exist.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeDocument\nfunc (c *SSM) DescribeDocument(input *DescribeDocumentInput) (*DescribeDocumentOutput, error) {\n\treq, out := c.DescribeDocumentRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeDocumentWithContext is the same as DescribeDocument with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeDocument for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeDocumentWithContext(ctx aws.Context, input *DescribeDocumentInput, opts ...request.Option) (*DescribeDocumentOutput, error) {\n\treq, out := c.DescribeDocumentRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeDocumentPermission = \"DescribeDocumentPermission\"\n\n// DescribeDocumentPermissionRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeDocumentPermission operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeDocumentPermission for more information on using the DescribeDocumentPermission\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeDocumentPermissionRequest method.\n//\treq, resp := client.DescribeDocumentPermissionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeDocumentPermission\nfunc (c *SSM) DescribeDocumentPermissionRequest(input *DescribeDocumentPermissionInput) (req *request.Request, output *DescribeDocumentPermissionOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeDocumentPermission,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeDocumentPermissionInput{}\n\t}\n\n\toutput = &DescribeDocumentPermissionOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeDocumentPermission API operation for Amazon Simple Systems Manager (SSM).\n//\n// Describes the permissions for a Amazon Web Services Systems Manager document\n// (SSM document). If you created the document, you are the owner. If a document\n// is shared, it can either be shared privately (by specifying a user's Amazon\n// Web Services account ID) or publicly (All).\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeDocumentPermission for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - InvalidPermissionType\n//     The permission type isn't supported. Share is the only supported permission\n//     type.\n//\n//   - InvalidDocumentOperation\n//     You attempted to delete a document while it is still shared. You must stop\n//     sharing the document before you can delete it.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeDocumentPermission\nfunc (c *SSM) DescribeDocumentPermission(input *DescribeDocumentPermissionInput) (*DescribeDocumentPermissionOutput, error) {\n\treq, out := c.DescribeDocumentPermissionRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeDocumentPermissionWithContext is the same as DescribeDocumentPermission with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeDocumentPermission for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeDocumentPermissionWithContext(ctx aws.Context, input *DescribeDocumentPermissionInput, opts ...request.Option) (*DescribeDocumentPermissionOutput, error) {\n\treq, out := c.DescribeDocumentPermissionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribeEffectiveInstanceAssociations = \"DescribeEffectiveInstanceAssociations\"\n\n// DescribeEffectiveInstanceAssociationsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeEffectiveInstanceAssociations operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeEffectiveInstanceAssociations for more information on using the DescribeEffectiveInstanceAssociations\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeEffectiveInstanceAssociationsRequest method.\n//\treq, resp := client.DescribeEffectiveInstanceAssociationsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeEffectiveInstanceAssociations\nfunc (c *SSM) DescribeEffectiveInstanceAssociationsRequest(input *DescribeEffectiveInstanceAssociationsInput) (req *request.Request, output *DescribeEffectiveInstanceAssociationsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeEffectiveInstanceAssociations,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeEffectiveInstanceAssociationsInput{}\n\t}\n\n\toutput = &DescribeEffectiveInstanceAssociationsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeEffectiveInstanceAssociations API operation for Amazon Simple Systems Manager (SSM).\n//\n// All associations for the managed node(s).\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeEffectiveInstanceAssociations for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeEffectiveInstanceAssociations\nfunc (c *SSM) DescribeEffectiveInstanceAssociations(input *DescribeEffectiveInstanceAssociationsInput) (*DescribeEffectiveInstanceAssociationsOutput, error) {\n\treq, out := c.DescribeEffectiveInstanceAssociationsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeEffectiveInstanceAssociationsWithContext is the same as DescribeEffectiveInstanceAssociations with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeEffectiveInstanceAssociations for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeEffectiveInstanceAssociationsWithContext(ctx aws.Context, input *DescribeEffectiveInstanceAssociationsInput, opts ...request.Option) (*DescribeEffectiveInstanceAssociationsOutput, error) {\n\treq, out := c.DescribeEffectiveInstanceAssociationsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeEffectiveInstanceAssociationsPages iterates over the pages of a DescribeEffectiveInstanceAssociations operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeEffectiveInstanceAssociations method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeEffectiveInstanceAssociations operation.\n//\tpageNum := 0\n//\terr := client.DescribeEffectiveInstanceAssociationsPages(params,\n//\t    func(page *ssm.DescribeEffectiveInstanceAssociationsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeEffectiveInstanceAssociationsPages(input *DescribeEffectiveInstanceAssociationsInput, fn func(*DescribeEffectiveInstanceAssociationsOutput, bool) bool) error {\n\treturn c.DescribeEffectiveInstanceAssociationsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeEffectiveInstanceAssociationsPagesWithContext same as DescribeEffectiveInstanceAssociationsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeEffectiveInstanceAssociationsPagesWithContext(ctx aws.Context, input *DescribeEffectiveInstanceAssociationsInput, fn func(*DescribeEffectiveInstanceAssociationsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeEffectiveInstanceAssociationsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeEffectiveInstanceAssociationsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeEffectiveInstanceAssociationsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeEffectivePatchesForPatchBaseline = \"DescribeEffectivePatchesForPatchBaseline\"\n\n// DescribeEffectivePatchesForPatchBaselineRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeEffectivePatchesForPatchBaseline operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeEffectivePatchesForPatchBaseline for more information on using the DescribeEffectivePatchesForPatchBaseline\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeEffectivePatchesForPatchBaselineRequest method.\n//\treq, resp := client.DescribeEffectivePatchesForPatchBaselineRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeEffectivePatchesForPatchBaseline\nfunc (c *SSM) DescribeEffectivePatchesForPatchBaselineRequest(input *DescribeEffectivePatchesForPatchBaselineInput) (req *request.Request, output *DescribeEffectivePatchesForPatchBaselineOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeEffectivePatchesForPatchBaseline,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeEffectivePatchesForPatchBaselineInput{}\n\t}\n\n\toutput = &DescribeEffectivePatchesForPatchBaselineOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeEffectivePatchesForPatchBaseline API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves the current effective patches (the patch and the approval state)\n// for the specified patch baseline. Applies to patch baselines for Windows\n// only.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeEffectivePatchesForPatchBaseline for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidResourceId\n//     The resource ID isn't valid. Verify that you entered the correct ID and try\n//     again.\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - UnsupportedOperatingSystem\n//     The operating systems you specified isn't supported, or the operation isn't\n//     supported for the operating system.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeEffectivePatchesForPatchBaseline\nfunc (c *SSM) DescribeEffectivePatchesForPatchBaseline(input *DescribeEffectivePatchesForPatchBaselineInput) (*DescribeEffectivePatchesForPatchBaselineOutput, error) {\n\treq, out := c.DescribeEffectivePatchesForPatchBaselineRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeEffectivePatchesForPatchBaselineWithContext is the same as DescribeEffectivePatchesForPatchBaseline with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeEffectivePatchesForPatchBaseline for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeEffectivePatchesForPatchBaselineWithContext(ctx aws.Context, input *DescribeEffectivePatchesForPatchBaselineInput, opts ...request.Option) (*DescribeEffectivePatchesForPatchBaselineOutput, error) {\n\treq, out := c.DescribeEffectivePatchesForPatchBaselineRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeEffectivePatchesForPatchBaselinePages iterates over the pages of a DescribeEffectivePatchesForPatchBaseline operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeEffectivePatchesForPatchBaseline method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeEffectivePatchesForPatchBaseline operation.\n//\tpageNum := 0\n//\terr := client.DescribeEffectivePatchesForPatchBaselinePages(params,\n//\t    func(page *ssm.DescribeEffectivePatchesForPatchBaselineOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeEffectivePatchesForPatchBaselinePages(input *DescribeEffectivePatchesForPatchBaselineInput, fn func(*DescribeEffectivePatchesForPatchBaselineOutput, bool) bool) error {\n\treturn c.DescribeEffectivePatchesForPatchBaselinePagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeEffectivePatchesForPatchBaselinePagesWithContext same as DescribeEffectivePatchesForPatchBaselinePages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeEffectivePatchesForPatchBaselinePagesWithContext(ctx aws.Context, input *DescribeEffectivePatchesForPatchBaselineInput, fn func(*DescribeEffectivePatchesForPatchBaselineOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeEffectivePatchesForPatchBaselineInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeEffectivePatchesForPatchBaselineRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeEffectivePatchesForPatchBaselineOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeInstanceAssociationsStatus = \"DescribeInstanceAssociationsStatus\"\n\n// DescribeInstanceAssociationsStatusRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeInstanceAssociationsStatus operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeInstanceAssociationsStatus for more information on using the DescribeInstanceAssociationsStatus\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeInstanceAssociationsStatusRequest method.\n//\treq, resp := client.DescribeInstanceAssociationsStatusRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstanceAssociationsStatus\nfunc (c *SSM) DescribeInstanceAssociationsStatusRequest(input *DescribeInstanceAssociationsStatusInput) (req *request.Request, output *DescribeInstanceAssociationsStatusOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeInstanceAssociationsStatus,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeInstanceAssociationsStatusInput{}\n\t}\n\n\toutput = &DescribeInstanceAssociationsStatusOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeInstanceAssociationsStatus API operation for Amazon Simple Systems Manager (SSM).\n//\n// The status of the associations for the managed node(s).\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeInstanceAssociationsStatus for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstanceAssociationsStatus\nfunc (c *SSM) DescribeInstanceAssociationsStatus(input *DescribeInstanceAssociationsStatusInput) (*DescribeInstanceAssociationsStatusOutput, error) {\n\treq, out := c.DescribeInstanceAssociationsStatusRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeInstanceAssociationsStatusWithContext is the same as DescribeInstanceAssociationsStatus with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeInstanceAssociationsStatus for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeInstanceAssociationsStatusWithContext(ctx aws.Context, input *DescribeInstanceAssociationsStatusInput, opts ...request.Option) (*DescribeInstanceAssociationsStatusOutput, error) {\n\treq, out := c.DescribeInstanceAssociationsStatusRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeInstanceAssociationsStatusPages iterates over the pages of a DescribeInstanceAssociationsStatus operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeInstanceAssociationsStatus method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeInstanceAssociationsStatus operation.\n//\tpageNum := 0\n//\terr := client.DescribeInstanceAssociationsStatusPages(params,\n//\t    func(page *ssm.DescribeInstanceAssociationsStatusOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeInstanceAssociationsStatusPages(input *DescribeInstanceAssociationsStatusInput, fn func(*DescribeInstanceAssociationsStatusOutput, bool) bool) error {\n\treturn c.DescribeInstanceAssociationsStatusPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeInstanceAssociationsStatusPagesWithContext same as DescribeInstanceAssociationsStatusPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeInstanceAssociationsStatusPagesWithContext(ctx aws.Context, input *DescribeInstanceAssociationsStatusInput, fn func(*DescribeInstanceAssociationsStatusOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeInstanceAssociationsStatusInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeInstanceAssociationsStatusRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeInstanceAssociationsStatusOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeInstanceInformation = \"DescribeInstanceInformation\"\n\n// DescribeInstanceInformationRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeInstanceInformation operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeInstanceInformation for more information on using the DescribeInstanceInformation\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeInstanceInformationRequest method.\n//\treq, resp := client.DescribeInstanceInformationRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstanceInformation\nfunc (c *SSM) DescribeInstanceInformationRequest(input *DescribeInstanceInformationInput) (req *request.Request, output *DescribeInstanceInformationOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeInstanceInformation,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeInstanceInformationInput{}\n\t}\n\n\toutput = &DescribeInstanceInformationOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeInstanceInformation API operation for Amazon Simple Systems Manager (SSM).\n//\n// Provides information about one or more of your managed nodes, including the\n// operating system platform, SSM Agent version, association status, and IP\n// address. This operation does not return information for nodes that are either\n// Stopped or Terminated.\n//\n// If you specify one or more node IDs, the operation returns information for\n// those managed nodes. If you don't specify node IDs, it returns information\n// for all your managed nodes. If you specify a node ID that isn't valid or\n// a node that you don't own, you receive an error.\n//\n// The IamRole field returned for this API operation is the Identity and Access\n// Management (IAM) role assigned to on-premises managed nodes. This operation\n// does not return the IAM role for EC2 instances.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeInstanceInformation for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - InvalidInstanceInformationFilterValue\n//     The specified filter value isn't valid.\n//\n//   - InvalidFilterKey\n//     The specified key isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstanceInformation\nfunc (c *SSM) DescribeInstanceInformation(input *DescribeInstanceInformationInput) (*DescribeInstanceInformationOutput, error) {\n\treq, out := c.DescribeInstanceInformationRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeInstanceInformationWithContext is the same as DescribeInstanceInformation with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeInstanceInformation for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeInstanceInformationWithContext(ctx aws.Context, input *DescribeInstanceInformationInput, opts ...request.Option) (*DescribeInstanceInformationOutput, error) {\n\treq, out := c.DescribeInstanceInformationRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeInstanceInformationPages iterates over the pages of a DescribeInstanceInformation operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeInstanceInformation method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeInstanceInformation operation.\n//\tpageNum := 0\n//\terr := client.DescribeInstanceInformationPages(params,\n//\t    func(page *ssm.DescribeInstanceInformationOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeInstanceInformationPages(input *DescribeInstanceInformationInput, fn func(*DescribeInstanceInformationOutput, bool) bool) error {\n\treturn c.DescribeInstanceInformationPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeInstanceInformationPagesWithContext same as DescribeInstanceInformationPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeInstanceInformationPagesWithContext(ctx aws.Context, input *DescribeInstanceInformationInput, fn func(*DescribeInstanceInformationOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeInstanceInformationInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeInstanceInformationRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeInstanceInformationOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeInstancePatchStates = \"DescribeInstancePatchStates\"\n\n// DescribeInstancePatchStatesRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeInstancePatchStates operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeInstancePatchStates for more information on using the DescribeInstancePatchStates\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeInstancePatchStatesRequest method.\n//\treq, resp := client.DescribeInstancePatchStatesRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchStates\nfunc (c *SSM) DescribeInstancePatchStatesRequest(input *DescribeInstancePatchStatesInput) (req *request.Request, output *DescribeInstancePatchStatesOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeInstancePatchStates,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeInstancePatchStatesInput{}\n\t}\n\n\toutput = &DescribeInstancePatchStatesOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeInstancePatchStates API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves the high-level patch state of one or more managed nodes.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeInstancePatchStates for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchStates\nfunc (c *SSM) DescribeInstancePatchStates(input *DescribeInstancePatchStatesInput) (*DescribeInstancePatchStatesOutput, error) {\n\treq, out := c.DescribeInstancePatchStatesRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeInstancePatchStatesWithContext is the same as DescribeInstancePatchStates with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeInstancePatchStates for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeInstancePatchStatesWithContext(ctx aws.Context, input *DescribeInstancePatchStatesInput, opts ...request.Option) (*DescribeInstancePatchStatesOutput, error) {\n\treq, out := c.DescribeInstancePatchStatesRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeInstancePatchStatesPages iterates over the pages of a DescribeInstancePatchStates operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeInstancePatchStates method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeInstancePatchStates operation.\n//\tpageNum := 0\n//\terr := client.DescribeInstancePatchStatesPages(params,\n//\t    func(page *ssm.DescribeInstancePatchStatesOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeInstancePatchStatesPages(input *DescribeInstancePatchStatesInput, fn func(*DescribeInstancePatchStatesOutput, bool) bool) error {\n\treturn c.DescribeInstancePatchStatesPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeInstancePatchStatesPagesWithContext same as DescribeInstancePatchStatesPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeInstancePatchStatesPagesWithContext(ctx aws.Context, input *DescribeInstancePatchStatesInput, fn func(*DescribeInstancePatchStatesOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeInstancePatchStatesInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeInstancePatchStatesRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeInstancePatchStatesOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeInstancePatchStatesForPatchGroup = \"DescribeInstancePatchStatesForPatchGroup\"\n\n// DescribeInstancePatchStatesForPatchGroupRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeInstancePatchStatesForPatchGroup operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeInstancePatchStatesForPatchGroup for more information on using the DescribeInstancePatchStatesForPatchGroup\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeInstancePatchStatesForPatchGroupRequest method.\n//\treq, resp := client.DescribeInstancePatchStatesForPatchGroupRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchStatesForPatchGroup\nfunc (c *SSM) DescribeInstancePatchStatesForPatchGroupRequest(input *DescribeInstancePatchStatesForPatchGroupInput) (req *request.Request, output *DescribeInstancePatchStatesForPatchGroupOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeInstancePatchStatesForPatchGroup,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeInstancePatchStatesForPatchGroupInput{}\n\t}\n\n\toutput = &DescribeInstancePatchStatesForPatchGroupOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeInstancePatchStatesForPatchGroup API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves the high-level patch state for the managed nodes in the specified\n// patch group.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeInstancePatchStatesForPatchGroup for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidFilter\n//     The filter name isn't valid. Verify the you entered the correct name and\n//     try again.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatchStatesForPatchGroup\nfunc (c *SSM) DescribeInstancePatchStatesForPatchGroup(input *DescribeInstancePatchStatesForPatchGroupInput) (*DescribeInstancePatchStatesForPatchGroupOutput, error) {\n\treq, out := c.DescribeInstancePatchStatesForPatchGroupRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeInstancePatchStatesForPatchGroupWithContext is the same as DescribeInstancePatchStatesForPatchGroup with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeInstancePatchStatesForPatchGroup for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeInstancePatchStatesForPatchGroupWithContext(ctx aws.Context, input *DescribeInstancePatchStatesForPatchGroupInput, opts ...request.Option) (*DescribeInstancePatchStatesForPatchGroupOutput, error) {\n\treq, out := c.DescribeInstancePatchStatesForPatchGroupRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeInstancePatchStatesForPatchGroupPages iterates over the pages of a DescribeInstancePatchStatesForPatchGroup operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeInstancePatchStatesForPatchGroup method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeInstancePatchStatesForPatchGroup operation.\n//\tpageNum := 0\n//\terr := client.DescribeInstancePatchStatesForPatchGroupPages(params,\n//\t    func(page *ssm.DescribeInstancePatchStatesForPatchGroupOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeInstancePatchStatesForPatchGroupPages(input *DescribeInstancePatchStatesForPatchGroupInput, fn func(*DescribeInstancePatchStatesForPatchGroupOutput, bool) bool) error {\n\treturn c.DescribeInstancePatchStatesForPatchGroupPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeInstancePatchStatesForPatchGroupPagesWithContext same as DescribeInstancePatchStatesForPatchGroupPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeInstancePatchStatesForPatchGroupPagesWithContext(ctx aws.Context, input *DescribeInstancePatchStatesForPatchGroupInput, fn func(*DescribeInstancePatchStatesForPatchGroupOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeInstancePatchStatesForPatchGroupInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeInstancePatchStatesForPatchGroupRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeInstancePatchStatesForPatchGroupOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeInstancePatches = \"DescribeInstancePatches\"\n\n// DescribeInstancePatchesRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeInstancePatches operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeInstancePatches for more information on using the DescribeInstancePatches\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeInstancePatchesRequest method.\n//\treq, resp := client.DescribeInstancePatchesRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatches\nfunc (c *SSM) DescribeInstancePatchesRequest(input *DescribeInstancePatchesInput) (req *request.Request, output *DescribeInstancePatchesOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeInstancePatches,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeInstancePatchesInput{}\n\t}\n\n\toutput = &DescribeInstancePatchesOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeInstancePatches API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves information about the patches on the specified managed node and\n// their state relative to the patch baseline being used for the node.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeInstancePatches for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InvalidFilter\n//     The filter name isn't valid. Verify the you entered the correct name and\n//     try again.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInstancePatches\nfunc (c *SSM) DescribeInstancePatches(input *DescribeInstancePatchesInput) (*DescribeInstancePatchesOutput, error) {\n\treq, out := c.DescribeInstancePatchesRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeInstancePatchesWithContext is the same as DescribeInstancePatches with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeInstancePatches for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeInstancePatchesWithContext(ctx aws.Context, input *DescribeInstancePatchesInput, opts ...request.Option) (*DescribeInstancePatchesOutput, error) {\n\treq, out := c.DescribeInstancePatchesRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeInstancePatchesPages iterates over the pages of a DescribeInstancePatches operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeInstancePatches method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeInstancePatches operation.\n//\tpageNum := 0\n//\terr := client.DescribeInstancePatchesPages(params,\n//\t    func(page *ssm.DescribeInstancePatchesOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeInstancePatchesPages(input *DescribeInstancePatchesInput, fn func(*DescribeInstancePatchesOutput, bool) bool) error {\n\treturn c.DescribeInstancePatchesPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeInstancePatchesPagesWithContext same as DescribeInstancePatchesPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeInstancePatchesPagesWithContext(ctx aws.Context, input *DescribeInstancePatchesInput, fn func(*DescribeInstancePatchesOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeInstancePatchesInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeInstancePatchesRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeInstancePatchesOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeInventoryDeletions = \"DescribeInventoryDeletions\"\n\n// DescribeInventoryDeletionsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeInventoryDeletions operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeInventoryDeletions for more information on using the DescribeInventoryDeletions\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeInventoryDeletionsRequest method.\n//\treq, resp := client.DescribeInventoryDeletionsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInventoryDeletions\nfunc (c *SSM) DescribeInventoryDeletionsRequest(input *DescribeInventoryDeletionsInput) (req *request.Request, output *DescribeInventoryDeletionsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeInventoryDeletions,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeInventoryDeletionsInput{}\n\t}\n\n\toutput = &DescribeInventoryDeletionsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeInventoryDeletions API operation for Amazon Simple Systems Manager (SSM).\n//\n// Describes a specific delete inventory operation.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeInventoryDeletions for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDeletionIdException\n//     The ID specified for the delete operation doesn't exist or isn't valid. Verify\n//     the ID and try again.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeInventoryDeletions\nfunc (c *SSM) DescribeInventoryDeletions(input *DescribeInventoryDeletionsInput) (*DescribeInventoryDeletionsOutput, error) {\n\treq, out := c.DescribeInventoryDeletionsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeInventoryDeletionsWithContext is the same as DescribeInventoryDeletions with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeInventoryDeletions for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeInventoryDeletionsWithContext(ctx aws.Context, input *DescribeInventoryDeletionsInput, opts ...request.Option) (*DescribeInventoryDeletionsOutput, error) {\n\treq, out := c.DescribeInventoryDeletionsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeInventoryDeletionsPages iterates over the pages of a DescribeInventoryDeletions operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeInventoryDeletions method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeInventoryDeletions operation.\n//\tpageNum := 0\n//\terr := client.DescribeInventoryDeletionsPages(params,\n//\t    func(page *ssm.DescribeInventoryDeletionsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeInventoryDeletionsPages(input *DescribeInventoryDeletionsInput, fn func(*DescribeInventoryDeletionsOutput, bool) bool) error {\n\treturn c.DescribeInventoryDeletionsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeInventoryDeletionsPagesWithContext same as DescribeInventoryDeletionsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeInventoryDeletionsPagesWithContext(ctx aws.Context, input *DescribeInventoryDeletionsInput, fn func(*DescribeInventoryDeletionsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeInventoryDeletionsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeInventoryDeletionsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeInventoryDeletionsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeMaintenanceWindowExecutionTaskInvocations = \"DescribeMaintenanceWindowExecutionTaskInvocations\"\n\n// DescribeMaintenanceWindowExecutionTaskInvocationsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeMaintenanceWindowExecutionTaskInvocations operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeMaintenanceWindowExecutionTaskInvocations for more information on using the DescribeMaintenanceWindowExecutionTaskInvocations\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeMaintenanceWindowExecutionTaskInvocationsRequest method.\n//\treq, resp := client.DescribeMaintenanceWindowExecutionTaskInvocationsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionTaskInvocations\nfunc (c *SSM) DescribeMaintenanceWindowExecutionTaskInvocationsRequest(input *DescribeMaintenanceWindowExecutionTaskInvocationsInput) (req *request.Request, output *DescribeMaintenanceWindowExecutionTaskInvocationsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeMaintenanceWindowExecutionTaskInvocations,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeMaintenanceWindowExecutionTaskInvocationsInput{}\n\t}\n\n\toutput = &DescribeMaintenanceWindowExecutionTaskInvocationsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeMaintenanceWindowExecutionTaskInvocations API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves the individual task executions (one per target) for a particular\n// task run as part of a maintenance window execution.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeMaintenanceWindowExecutionTaskInvocations for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionTaskInvocations\nfunc (c *SSM) DescribeMaintenanceWindowExecutionTaskInvocations(input *DescribeMaintenanceWindowExecutionTaskInvocationsInput) (*DescribeMaintenanceWindowExecutionTaskInvocationsOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowExecutionTaskInvocationsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowExecutionTaskInvocationsWithContext is the same as DescribeMaintenanceWindowExecutionTaskInvocations with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeMaintenanceWindowExecutionTaskInvocations for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowExecutionTaskInvocationsWithContext(ctx aws.Context, input *DescribeMaintenanceWindowExecutionTaskInvocationsInput, opts ...request.Option) (*DescribeMaintenanceWindowExecutionTaskInvocationsOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowExecutionTaskInvocationsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowExecutionTaskInvocationsPages iterates over the pages of a DescribeMaintenanceWindowExecutionTaskInvocations operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeMaintenanceWindowExecutionTaskInvocations method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeMaintenanceWindowExecutionTaskInvocations operation.\n//\tpageNum := 0\n//\terr := client.DescribeMaintenanceWindowExecutionTaskInvocationsPages(params,\n//\t    func(page *ssm.DescribeMaintenanceWindowExecutionTaskInvocationsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeMaintenanceWindowExecutionTaskInvocationsPages(input *DescribeMaintenanceWindowExecutionTaskInvocationsInput, fn func(*DescribeMaintenanceWindowExecutionTaskInvocationsOutput, bool) bool) error {\n\treturn c.DescribeMaintenanceWindowExecutionTaskInvocationsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeMaintenanceWindowExecutionTaskInvocationsPagesWithContext same as DescribeMaintenanceWindowExecutionTaskInvocationsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowExecutionTaskInvocationsPagesWithContext(ctx aws.Context, input *DescribeMaintenanceWindowExecutionTaskInvocationsInput, fn func(*DescribeMaintenanceWindowExecutionTaskInvocationsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeMaintenanceWindowExecutionTaskInvocationsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeMaintenanceWindowExecutionTaskInvocationsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeMaintenanceWindowExecutionTaskInvocationsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeMaintenanceWindowExecutionTasks = \"DescribeMaintenanceWindowExecutionTasks\"\n\n// DescribeMaintenanceWindowExecutionTasksRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeMaintenanceWindowExecutionTasks operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeMaintenanceWindowExecutionTasks for more information on using the DescribeMaintenanceWindowExecutionTasks\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeMaintenanceWindowExecutionTasksRequest method.\n//\treq, resp := client.DescribeMaintenanceWindowExecutionTasksRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionTasks\nfunc (c *SSM) DescribeMaintenanceWindowExecutionTasksRequest(input *DescribeMaintenanceWindowExecutionTasksInput) (req *request.Request, output *DescribeMaintenanceWindowExecutionTasksOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeMaintenanceWindowExecutionTasks,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeMaintenanceWindowExecutionTasksInput{}\n\t}\n\n\toutput = &DescribeMaintenanceWindowExecutionTasksOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeMaintenanceWindowExecutionTasks API operation for Amazon Simple Systems Manager (SSM).\n//\n// For a given maintenance window execution, lists the tasks that were run.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeMaintenanceWindowExecutionTasks for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutionTasks\nfunc (c *SSM) DescribeMaintenanceWindowExecutionTasks(input *DescribeMaintenanceWindowExecutionTasksInput) (*DescribeMaintenanceWindowExecutionTasksOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowExecutionTasksRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowExecutionTasksWithContext is the same as DescribeMaintenanceWindowExecutionTasks with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeMaintenanceWindowExecutionTasks for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowExecutionTasksWithContext(ctx aws.Context, input *DescribeMaintenanceWindowExecutionTasksInput, opts ...request.Option) (*DescribeMaintenanceWindowExecutionTasksOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowExecutionTasksRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowExecutionTasksPages iterates over the pages of a DescribeMaintenanceWindowExecutionTasks operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeMaintenanceWindowExecutionTasks method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeMaintenanceWindowExecutionTasks operation.\n//\tpageNum := 0\n//\terr := client.DescribeMaintenanceWindowExecutionTasksPages(params,\n//\t    func(page *ssm.DescribeMaintenanceWindowExecutionTasksOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeMaintenanceWindowExecutionTasksPages(input *DescribeMaintenanceWindowExecutionTasksInput, fn func(*DescribeMaintenanceWindowExecutionTasksOutput, bool) bool) error {\n\treturn c.DescribeMaintenanceWindowExecutionTasksPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeMaintenanceWindowExecutionTasksPagesWithContext same as DescribeMaintenanceWindowExecutionTasksPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowExecutionTasksPagesWithContext(ctx aws.Context, input *DescribeMaintenanceWindowExecutionTasksInput, fn func(*DescribeMaintenanceWindowExecutionTasksOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeMaintenanceWindowExecutionTasksInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeMaintenanceWindowExecutionTasksRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeMaintenanceWindowExecutionTasksOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeMaintenanceWindowExecutions = \"DescribeMaintenanceWindowExecutions\"\n\n// DescribeMaintenanceWindowExecutionsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeMaintenanceWindowExecutions operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeMaintenanceWindowExecutions for more information on using the DescribeMaintenanceWindowExecutions\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeMaintenanceWindowExecutionsRequest method.\n//\treq, resp := client.DescribeMaintenanceWindowExecutionsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutions\nfunc (c *SSM) DescribeMaintenanceWindowExecutionsRequest(input *DescribeMaintenanceWindowExecutionsInput) (req *request.Request, output *DescribeMaintenanceWindowExecutionsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeMaintenanceWindowExecutions,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeMaintenanceWindowExecutionsInput{}\n\t}\n\n\toutput = &DescribeMaintenanceWindowExecutionsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeMaintenanceWindowExecutions API operation for Amazon Simple Systems Manager (SSM).\n//\n// Lists the executions of a maintenance window. This includes information about\n// when the maintenance window was scheduled to be active, and information about\n// tasks registered and run with the maintenance window.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeMaintenanceWindowExecutions for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowExecutions\nfunc (c *SSM) DescribeMaintenanceWindowExecutions(input *DescribeMaintenanceWindowExecutionsInput) (*DescribeMaintenanceWindowExecutionsOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowExecutionsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowExecutionsWithContext is the same as DescribeMaintenanceWindowExecutions with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeMaintenanceWindowExecutions for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowExecutionsWithContext(ctx aws.Context, input *DescribeMaintenanceWindowExecutionsInput, opts ...request.Option) (*DescribeMaintenanceWindowExecutionsOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowExecutionsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowExecutionsPages iterates over the pages of a DescribeMaintenanceWindowExecutions operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeMaintenanceWindowExecutions method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeMaintenanceWindowExecutions operation.\n//\tpageNum := 0\n//\terr := client.DescribeMaintenanceWindowExecutionsPages(params,\n//\t    func(page *ssm.DescribeMaintenanceWindowExecutionsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeMaintenanceWindowExecutionsPages(input *DescribeMaintenanceWindowExecutionsInput, fn func(*DescribeMaintenanceWindowExecutionsOutput, bool) bool) error {\n\treturn c.DescribeMaintenanceWindowExecutionsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeMaintenanceWindowExecutionsPagesWithContext same as DescribeMaintenanceWindowExecutionsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowExecutionsPagesWithContext(ctx aws.Context, input *DescribeMaintenanceWindowExecutionsInput, fn func(*DescribeMaintenanceWindowExecutionsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeMaintenanceWindowExecutionsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeMaintenanceWindowExecutionsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeMaintenanceWindowExecutionsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeMaintenanceWindowSchedule = \"DescribeMaintenanceWindowSchedule\"\n\n// DescribeMaintenanceWindowScheduleRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeMaintenanceWindowSchedule operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeMaintenanceWindowSchedule for more information on using the DescribeMaintenanceWindowSchedule\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeMaintenanceWindowScheduleRequest method.\n//\treq, resp := client.DescribeMaintenanceWindowScheduleRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowSchedule\nfunc (c *SSM) DescribeMaintenanceWindowScheduleRequest(input *DescribeMaintenanceWindowScheduleInput) (req *request.Request, output *DescribeMaintenanceWindowScheduleOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeMaintenanceWindowSchedule,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeMaintenanceWindowScheduleInput{}\n\t}\n\n\toutput = &DescribeMaintenanceWindowScheduleOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeMaintenanceWindowSchedule API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves information about upcoming executions of a maintenance window.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeMaintenanceWindowSchedule for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowSchedule\nfunc (c *SSM) DescribeMaintenanceWindowSchedule(input *DescribeMaintenanceWindowScheduleInput) (*DescribeMaintenanceWindowScheduleOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowScheduleRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowScheduleWithContext is the same as DescribeMaintenanceWindowSchedule with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeMaintenanceWindowSchedule for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowScheduleWithContext(ctx aws.Context, input *DescribeMaintenanceWindowScheduleInput, opts ...request.Option) (*DescribeMaintenanceWindowScheduleOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowScheduleRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowSchedulePages iterates over the pages of a DescribeMaintenanceWindowSchedule operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeMaintenanceWindowSchedule method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeMaintenanceWindowSchedule operation.\n//\tpageNum := 0\n//\terr := client.DescribeMaintenanceWindowSchedulePages(params,\n//\t    func(page *ssm.DescribeMaintenanceWindowScheduleOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeMaintenanceWindowSchedulePages(input *DescribeMaintenanceWindowScheduleInput, fn func(*DescribeMaintenanceWindowScheduleOutput, bool) bool) error {\n\treturn c.DescribeMaintenanceWindowSchedulePagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeMaintenanceWindowSchedulePagesWithContext same as DescribeMaintenanceWindowSchedulePages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowSchedulePagesWithContext(ctx aws.Context, input *DescribeMaintenanceWindowScheduleInput, fn func(*DescribeMaintenanceWindowScheduleOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeMaintenanceWindowScheduleInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeMaintenanceWindowScheduleRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeMaintenanceWindowScheduleOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeMaintenanceWindowTargets = \"DescribeMaintenanceWindowTargets\"\n\n// DescribeMaintenanceWindowTargetsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeMaintenanceWindowTargets operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeMaintenanceWindowTargets for more information on using the DescribeMaintenanceWindowTargets\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeMaintenanceWindowTargetsRequest method.\n//\treq, resp := client.DescribeMaintenanceWindowTargetsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowTargets\nfunc (c *SSM) DescribeMaintenanceWindowTargetsRequest(input *DescribeMaintenanceWindowTargetsInput) (req *request.Request, output *DescribeMaintenanceWindowTargetsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeMaintenanceWindowTargets,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeMaintenanceWindowTargetsInput{}\n\t}\n\n\toutput = &DescribeMaintenanceWindowTargetsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeMaintenanceWindowTargets API operation for Amazon Simple Systems Manager (SSM).\n//\n// Lists the targets registered with the maintenance window.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeMaintenanceWindowTargets for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowTargets\nfunc (c *SSM) DescribeMaintenanceWindowTargets(input *DescribeMaintenanceWindowTargetsInput) (*DescribeMaintenanceWindowTargetsOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowTargetsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowTargetsWithContext is the same as DescribeMaintenanceWindowTargets with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeMaintenanceWindowTargets for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowTargetsWithContext(ctx aws.Context, input *DescribeMaintenanceWindowTargetsInput, opts ...request.Option) (*DescribeMaintenanceWindowTargetsOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowTargetsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowTargetsPages iterates over the pages of a DescribeMaintenanceWindowTargets operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeMaintenanceWindowTargets method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeMaintenanceWindowTargets operation.\n//\tpageNum := 0\n//\terr := client.DescribeMaintenanceWindowTargetsPages(params,\n//\t    func(page *ssm.DescribeMaintenanceWindowTargetsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeMaintenanceWindowTargetsPages(input *DescribeMaintenanceWindowTargetsInput, fn func(*DescribeMaintenanceWindowTargetsOutput, bool) bool) error {\n\treturn c.DescribeMaintenanceWindowTargetsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeMaintenanceWindowTargetsPagesWithContext same as DescribeMaintenanceWindowTargetsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowTargetsPagesWithContext(ctx aws.Context, input *DescribeMaintenanceWindowTargetsInput, fn func(*DescribeMaintenanceWindowTargetsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeMaintenanceWindowTargetsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeMaintenanceWindowTargetsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeMaintenanceWindowTargetsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeMaintenanceWindowTasks = \"DescribeMaintenanceWindowTasks\"\n\n// DescribeMaintenanceWindowTasksRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeMaintenanceWindowTasks operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeMaintenanceWindowTasks for more information on using the DescribeMaintenanceWindowTasks\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeMaintenanceWindowTasksRequest method.\n//\treq, resp := client.DescribeMaintenanceWindowTasksRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowTasks\nfunc (c *SSM) DescribeMaintenanceWindowTasksRequest(input *DescribeMaintenanceWindowTasksInput) (req *request.Request, output *DescribeMaintenanceWindowTasksOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeMaintenanceWindowTasks,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeMaintenanceWindowTasksInput{}\n\t}\n\n\toutput = &DescribeMaintenanceWindowTasksOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeMaintenanceWindowTasks API operation for Amazon Simple Systems Manager (SSM).\n//\n// Lists the tasks in a maintenance window.\n//\n// For maintenance window tasks without a specified target, you can't supply\n// values for --max-errors and --max-concurrency. Instead, the system inserts\n// a placeholder value of 1, which may be reported in the response to this command.\n// These values don't affect the running of your task and can be ignored.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeMaintenanceWindowTasks for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowTasks\nfunc (c *SSM) DescribeMaintenanceWindowTasks(input *DescribeMaintenanceWindowTasksInput) (*DescribeMaintenanceWindowTasksOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowTasksRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowTasksWithContext is the same as DescribeMaintenanceWindowTasks with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeMaintenanceWindowTasks for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowTasksWithContext(ctx aws.Context, input *DescribeMaintenanceWindowTasksInput, opts ...request.Option) (*DescribeMaintenanceWindowTasksOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowTasksRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowTasksPages iterates over the pages of a DescribeMaintenanceWindowTasks operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeMaintenanceWindowTasks method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeMaintenanceWindowTasks operation.\n//\tpageNum := 0\n//\terr := client.DescribeMaintenanceWindowTasksPages(params,\n//\t    func(page *ssm.DescribeMaintenanceWindowTasksOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeMaintenanceWindowTasksPages(input *DescribeMaintenanceWindowTasksInput, fn func(*DescribeMaintenanceWindowTasksOutput, bool) bool) error {\n\treturn c.DescribeMaintenanceWindowTasksPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeMaintenanceWindowTasksPagesWithContext same as DescribeMaintenanceWindowTasksPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowTasksPagesWithContext(ctx aws.Context, input *DescribeMaintenanceWindowTasksInput, fn func(*DescribeMaintenanceWindowTasksOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeMaintenanceWindowTasksInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeMaintenanceWindowTasksRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeMaintenanceWindowTasksOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeMaintenanceWindows = \"DescribeMaintenanceWindows\"\n\n// DescribeMaintenanceWindowsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeMaintenanceWindows operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeMaintenanceWindows for more information on using the DescribeMaintenanceWindows\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeMaintenanceWindowsRequest method.\n//\treq, resp := client.DescribeMaintenanceWindowsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindows\nfunc (c *SSM) DescribeMaintenanceWindowsRequest(input *DescribeMaintenanceWindowsInput) (req *request.Request, output *DescribeMaintenanceWindowsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeMaintenanceWindows,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeMaintenanceWindowsInput{}\n\t}\n\n\toutput = &DescribeMaintenanceWindowsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeMaintenanceWindows API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves the maintenance windows in an Amazon Web Services account.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeMaintenanceWindows for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindows\nfunc (c *SSM) DescribeMaintenanceWindows(input *DescribeMaintenanceWindowsInput) (*DescribeMaintenanceWindowsOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowsWithContext is the same as DescribeMaintenanceWindows with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeMaintenanceWindows for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowsWithContext(ctx aws.Context, input *DescribeMaintenanceWindowsInput, opts ...request.Option) (*DescribeMaintenanceWindowsOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowsPages iterates over the pages of a DescribeMaintenanceWindows operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeMaintenanceWindows method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeMaintenanceWindows operation.\n//\tpageNum := 0\n//\terr := client.DescribeMaintenanceWindowsPages(params,\n//\t    func(page *ssm.DescribeMaintenanceWindowsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeMaintenanceWindowsPages(input *DescribeMaintenanceWindowsInput, fn func(*DescribeMaintenanceWindowsOutput, bool) bool) error {\n\treturn c.DescribeMaintenanceWindowsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeMaintenanceWindowsPagesWithContext same as DescribeMaintenanceWindowsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowsPagesWithContext(ctx aws.Context, input *DescribeMaintenanceWindowsInput, fn func(*DescribeMaintenanceWindowsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeMaintenanceWindowsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeMaintenanceWindowsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeMaintenanceWindowsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeMaintenanceWindowsForTarget = \"DescribeMaintenanceWindowsForTarget\"\n\n// DescribeMaintenanceWindowsForTargetRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeMaintenanceWindowsForTarget operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeMaintenanceWindowsForTarget for more information on using the DescribeMaintenanceWindowsForTarget\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeMaintenanceWindowsForTargetRequest method.\n//\treq, resp := client.DescribeMaintenanceWindowsForTargetRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowsForTarget\nfunc (c *SSM) DescribeMaintenanceWindowsForTargetRequest(input *DescribeMaintenanceWindowsForTargetInput) (req *request.Request, output *DescribeMaintenanceWindowsForTargetOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeMaintenanceWindowsForTarget,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeMaintenanceWindowsForTargetInput{}\n\t}\n\n\toutput = &DescribeMaintenanceWindowsForTargetOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeMaintenanceWindowsForTarget API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves information about the maintenance window targets or tasks that\n// a managed node is associated with.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeMaintenanceWindowsForTarget for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowsForTarget\nfunc (c *SSM) DescribeMaintenanceWindowsForTarget(input *DescribeMaintenanceWindowsForTargetInput) (*DescribeMaintenanceWindowsForTargetOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowsForTargetRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowsForTargetWithContext is the same as DescribeMaintenanceWindowsForTarget with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeMaintenanceWindowsForTarget for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowsForTargetWithContext(ctx aws.Context, input *DescribeMaintenanceWindowsForTargetInput, opts ...request.Option) (*DescribeMaintenanceWindowsForTargetOutput, error) {\n\treq, out := c.DescribeMaintenanceWindowsForTargetRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeMaintenanceWindowsForTargetPages iterates over the pages of a DescribeMaintenanceWindowsForTarget operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeMaintenanceWindowsForTarget method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeMaintenanceWindowsForTarget operation.\n//\tpageNum := 0\n//\terr := client.DescribeMaintenanceWindowsForTargetPages(params,\n//\t    func(page *ssm.DescribeMaintenanceWindowsForTargetOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeMaintenanceWindowsForTargetPages(input *DescribeMaintenanceWindowsForTargetInput, fn func(*DescribeMaintenanceWindowsForTargetOutput, bool) bool) error {\n\treturn c.DescribeMaintenanceWindowsForTargetPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeMaintenanceWindowsForTargetPagesWithContext same as DescribeMaintenanceWindowsForTargetPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeMaintenanceWindowsForTargetPagesWithContext(ctx aws.Context, input *DescribeMaintenanceWindowsForTargetInput, fn func(*DescribeMaintenanceWindowsForTargetOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeMaintenanceWindowsForTargetInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeMaintenanceWindowsForTargetRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeMaintenanceWindowsForTargetOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeOpsItems = \"DescribeOpsItems\"\n\n// DescribeOpsItemsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeOpsItems operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeOpsItems for more information on using the DescribeOpsItems\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeOpsItemsRequest method.\n//\treq, resp := client.DescribeOpsItemsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeOpsItems\nfunc (c *SSM) DescribeOpsItemsRequest(input *DescribeOpsItemsInput) (req *request.Request, output *DescribeOpsItemsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeOpsItems,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeOpsItemsInput{}\n\t}\n\n\toutput = &DescribeOpsItemsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeOpsItems API operation for Amazon Simple Systems Manager (SSM).\n//\n// Query a set of OpsItems. You must have permission in Identity and Access\n// Management (IAM) to query a list of OpsItems. For more information, see Set\n// up OpsCenter (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-setup.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// Operations engineers and IT professionals use Amazon Web Services Systems\n// Manager OpsCenter to view, investigate, and remediate operational issues\n// impacting the performance and health of their Amazon Web Services resources.\n// For more information, see OpsCenter (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeOpsItems for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeOpsItems\nfunc (c *SSM) DescribeOpsItems(input *DescribeOpsItemsInput) (*DescribeOpsItemsOutput, error) {\n\treq, out := c.DescribeOpsItemsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeOpsItemsWithContext is the same as DescribeOpsItems with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeOpsItems for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeOpsItemsWithContext(ctx aws.Context, input *DescribeOpsItemsInput, opts ...request.Option) (*DescribeOpsItemsOutput, error) {\n\treq, out := c.DescribeOpsItemsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeOpsItemsPages iterates over the pages of a DescribeOpsItems operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeOpsItems method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeOpsItems operation.\n//\tpageNum := 0\n//\terr := client.DescribeOpsItemsPages(params,\n//\t    func(page *ssm.DescribeOpsItemsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeOpsItemsPages(input *DescribeOpsItemsInput, fn func(*DescribeOpsItemsOutput, bool) bool) error {\n\treturn c.DescribeOpsItemsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeOpsItemsPagesWithContext same as DescribeOpsItemsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeOpsItemsPagesWithContext(ctx aws.Context, input *DescribeOpsItemsInput, fn func(*DescribeOpsItemsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeOpsItemsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeOpsItemsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeOpsItemsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeParameters = \"DescribeParameters\"\n\n// DescribeParametersRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeParameters operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeParameters for more information on using the DescribeParameters\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeParametersRequest method.\n//\treq, resp := client.DescribeParametersRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeParameters\nfunc (c *SSM) DescribeParametersRequest(input *DescribeParametersInput) (req *request.Request, output *DescribeParametersOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeParameters,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeParametersInput{}\n\t}\n\n\toutput = &DescribeParametersOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeParameters API operation for Amazon Simple Systems Manager (SSM).\n//\n// Get information about a parameter.\n//\n// Request results are returned on a best-effort basis. If you specify MaxResults\n// in the request, the response includes information up to the limit specified.\n// The number of items returned, however, can be between zero and the value\n// of MaxResults. If the service reaches an internal limit while processing\n// the results, it stops the operation and returns the matching values up to\n// that point and a NextToken. You can specify the NextToken in a subsequent\n// call to get the next set of results.\n//\n// If you change the KMS key alias for the KMS key used to encrypt a parameter,\n// then you must also update the key alias the parameter uses to reference KMS.\n// Otherwise, DescribeParameters retrieves whatever the original key alias was\n// referencing.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeParameters for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidFilterKey\n//     The specified key isn't valid.\n//\n//   - InvalidFilterOption\n//     The specified filter option isn't valid. Valid options are Equals and BeginsWith.\n//     For Path filter, valid options are Recursive and OneLevel.\n//\n//   - InvalidFilterValue\n//     The filter value isn't valid. Verify the value and try again.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeParameters\nfunc (c *SSM) DescribeParameters(input *DescribeParametersInput) (*DescribeParametersOutput, error) {\n\treq, out := c.DescribeParametersRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeParametersWithContext is the same as DescribeParameters with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeParameters for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeParametersWithContext(ctx aws.Context, input *DescribeParametersInput, opts ...request.Option) (*DescribeParametersOutput, error) {\n\treq, out := c.DescribeParametersRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeParametersPages iterates over the pages of a DescribeParameters operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeParameters method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeParameters operation.\n//\tpageNum := 0\n//\terr := client.DescribeParametersPages(params,\n//\t    func(page *ssm.DescribeParametersOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeParametersPages(input *DescribeParametersInput, fn func(*DescribeParametersOutput, bool) bool) error {\n\treturn c.DescribeParametersPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeParametersPagesWithContext same as DescribeParametersPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeParametersPagesWithContext(ctx aws.Context, input *DescribeParametersInput, fn func(*DescribeParametersOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeParametersInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeParametersRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeParametersOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribePatchBaselines = \"DescribePatchBaselines\"\n\n// DescribePatchBaselinesRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribePatchBaselines operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribePatchBaselines for more information on using the DescribePatchBaselines\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribePatchBaselinesRequest method.\n//\treq, resp := client.DescribePatchBaselinesRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchBaselines\nfunc (c *SSM) DescribePatchBaselinesRequest(input *DescribePatchBaselinesInput) (req *request.Request, output *DescribePatchBaselinesOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribePatchBaselines,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribePatchBaselinesInput{}\n\t}\n\n\toutput = &DescribePatchBaselinesOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribePatchBaselines API operation for Amazon Simple Systems Manager (SSM).\n//\n// Lists the patch baselines in your Amazon Web Services account.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribePatchBaselines for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchBaselines\nfunc (c *SSM) DescribePatchBaselines(input *DescribePatchBaselinesInput) (*DescribePatchBaselinesOutput, error) {\n\treq, out := c.DescribePatchBaselinesRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribePatchBaselinesWithContext is the same as DescribePatchBaselines with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribePatchBaselines for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribePatchBaselinesWithContext(ctx aws.Context, input *DescribePatchBaselinesInput, opts ...request.Option) (*DescribePatchBaselinesOutput, error) {\n\treq, out := c.DescribePatchBaselinesRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribePatchBaselinesPages iterates over the pages of a DescribePatchBaselines operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribePatchBaselines method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribePatchBaselines operation.\n//\tpageNum := 0\n//\terr := client.DescribePatchBaselinesPages(params,\n//\t    func(page *ssm.DescribePatchBaselinesOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribePatchBaselinesPages(input *DescribePatchBaselinesInput, fn func(*DescribePatchBaselinesOutput, bool) bool) error {\n\treturn c.DescribePatchBaselinesPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribePatchBaselinesPagesWithContext same as DescribePatchBaselinesPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribePatchBaselinesPagesWithContext(ctx aws.Context, input *DescribePatchBaselinesInput, fn func(*DescribePatchBaselinesOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribePatchBaselinesInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribePatchBaselinesRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribePatchBaselinesOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribePatchGroupState = \"DescribePatchGroupState\"\n\n// DescribePatchGroupStateRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribePatchGroupState operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribePatchGroupState for more information on using the DescribePatchGroupState\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribePatchGroupStateRequest method.\n//\treq, resp := client.DescribePatchGroupStateRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchGroupState\nfunc (c *SSM) DescribePatchGroupStateRequest(input *DescribePatchGroupStateInput) (req *request.Request, output *DescribePatchGroupStateOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribePatchGroupState,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribePatchGroupStateInput{}\n\t}\n\n\toutput = &DescribePatchGroupStateOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribePatchGroupState API operation for Amazon Simple Systems Manager (SSM).\n//\n// Returns high-level aggregated patch compliance state information for a patch\n// group.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribePatchGroupState for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchGroupState\nfunc (c *SSM) DescribePatchGroupState(input *DescribePatchGroupStateInput) (*DescribePatchGroupStateOutput, error) {\n\treq, out := c.DescribePatchGroupStateRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribePatchGroupStateWithContext is the same as DescribePatchGroupState with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribePatchGroupState for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribePatchGroupStateWithContext(ctx aws.Context, input *DescribePatchGroupStateInput, opts ...request.Option) (*DescribePatchGroupStateOutput, error) {\n\treq, out := c.DescribePatchGroupStateRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDescribePatchGroups = \"DescribePatchGroups\"\n\n// DescribePatchGroupsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribePatchGroups operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribePatchGroups for more information on using the DescribePatchGroups\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribePatchGroupsRequest method.\n//\treq, resp := client.DescribePatchGroupsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchGroups\nfunc (c *SSM) DescribePatchGroupsRequest(input *DescribePatchGroupsInput) (req *request.Request, output *DescribePatchGroupsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribePatchGroups,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribePatchGroupsInput{}\n\t}\n\n\toutput = &DescribePatchGroupsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribePatchGroups API operation for Amazon Simple Systems Manager (SSM).\n//\n// Lists all patch groups that have been registered with patch baselines.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribePatchGroups for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchGroups\nfunc (c *SSM) DescribePatchGroups(input *DescribePatchGroupsInput) (*DescribePatchGroupsOutput, error) {\n\treq, out := c.DescribePatchGroupsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribePatchGroupsWithContext is the same as DescribePatchGroups with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribePatchGroups for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribePatchGroupsWithContext(ctx aws.Context, input *DescribePatchGroupsInput, opts ...request.Option) (*DescribePatchGroupsOutput, error) {\n\treq, out := c.DescribePatchGroupsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribePatchGroupsPages iterates over the pages of a DescribePatchGroups operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribePatchGroups method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribePatchGroups operation.\n//\tpageNum := 0\n//\terr := client.DescribePatchGroupsPages(params,\n//\t    func(page *ssm.DescribePatchGroupsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribePatchGroupsPages(input *DescribePatchGroupsInput, fn func(*DescribePatchGroupsOutput, bool) bool) error {\n\treturn c.DescribePatchGroupsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribePatchGroupsPagesWithContext same as DescribePatchGroupsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribePatchGroupsPagesWithContext(ctx aws.Context, input *DescribePatchGroupsInput, fn func(*DescribePatchGroupsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribePatchGroupsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribePatchGroupsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribePatchGroupsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribePatchProperties = \"DescribePatchProperties\"\n\n// DescribePatchPropertiesRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribePatchProperties operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribePatchProperties for more information on using the DescribePatchProperties\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribePatchPropertiesRequest method.\n//\treq, resp := client.DescribePatchPropertiesRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchProperties\nfunc (c *SSM) DescribePatchPropertiesRequest(input *DescribePatchPropertiesInput) (req *request.Request, output *DescribePatchPropertiesOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribePatchProperties,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribePatchPropertiesInput{}\n\t}\n\n\toutput = &DescribePatchPropertiesOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribePatchProperties API operation for Amazon Simple Systems Manager (SSM).\n//\n// Lists the properties of available patches organized by product, product family,\n// classification, severity, and other properties of available patches. You\n// can use the reported properties in the filters you specify in requests for\n// operations such as CreatePatchBaseline, UpdatePatchBaseline, DescribeAvailablePatches,\n// and DescribePatchBaselines.\n//\n// The following section lists the properties that can be used in filters for\n// each major operating system type:\n//\n// AMAZON_LINUX\n//\n// Valid properties: PRODUCT | CLASSIFICATION | SEVERITY\n//\n// AMAZON_LINUX_2\n//\n// Valid properties: PRODUCT | CLASSIFICATION | SEVERITY\n//\n// # CENTOS\n//\n// Valid properties: PRODUCT | CLASSIFICATION | SEVERITY\n//\n// # DEBIAN\n//\n// Valid properties: PRODUCT | PRIORITY\n//\n// # MACOS\n//\n// Valid properties: PRODUCT | CLASSIFICATION\n//\n// ORACLE_LINUX\n//\n// Valid properties: PRODUCT | CLASSIFICATION | SEVERITY\n//\n// REDHAT_ENTERPRISE_LINUX\n//\n// Valid properties: PRODUCT | CLASSIFICATION | SEVERITY\n//\n// # SUSE\n//\n// Valid properties: PRODUCT | CLASSIFICATION | SEVERITY\n//\n// # UBUNTU\n//\n// Valid properties: PRODUCT | PRIORITY\n//\n// # WINDOWS\n//\n// Valid properties: PRODUCT | PRODUCT_FAMILY | CLASSIFICATION | MSRC_SEVERITY\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribePatchProperties for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribePatchProperties\nfunc (c *SSM) DescribePatchProperties(input *DescribePatchPropertiesInput) (*DescribePatchPropertiesOutput, error) {\n\treq, out := c.DescribePatchPropertiesRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribePatchPropertiesWithContext is the same as DescribePatchProperties with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribePatchProperties for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribePatchPropertiesWithContext(ctx aws.Context, input *DescribePatchPropertiesInput, opts ...request.Option) (*DescribePatchPropertiesOutput, error) {\n\treq, out := c.DescribePatchPropertiesRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribePatchPropertiesPages iterates over the pages of a DescribePatchProperties operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribePatchProperties method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribePatchProperties operation.\n//\tpageNum := 0\n//\terr := client.DescribePatchPropertiesPages(params,\n//\t    func(page *ssm.DescribePatchPropertiesOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribePatchPropertiesPages(input *DescribePatchPropertiesInput, fn func(*DescribePatchPropertiesOutput, bool) bool) error {\n\treturn c.DescribePatchPropertiesPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribePatchPropertiesPagesWithContext same as DescribePatchPropertiesPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribePatchPropertiesPagesWithContext(ctx aws.Context, input *DescribePatchPropertiesInput, fn func(*DescribePatchPropertiesOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribePatchPropertiesInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribePatchPropertiesRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribePatchPropertiesOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDescribeSessions = \"DescribeSessions\"\n\n// DescribeSessionsRequest generates a \"aws/request.Request\" representing the\n// client's request for the DescribeSessions operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DescribeSessions for more information on using the DescribeSessions\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DescribeSessionsRequest method.\n//\treq, resp := client.DescribeSessionsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeSessions\nfunc (c *SSM) DescribeSessionsRequest(input *DescribeSessionsInput) (req *request.Request, output *DescribeSessionsOutput) {\n\top := &request.Operation{\n\t\tName:       opDescribeSessions,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &DescribeSessionsInput{}\n\t}\n\n\toutput = &DescribeSessionsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DescribeSessions API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves a list of all active sessions (both connected and disconnected)\n// or terminated sessions from the past 30 days.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DescribeSessions for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidFilterKey\n//     The specified key isn't valid.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeSessions\nfunc (c *SSM) DescribeSessions(input *DescribeSessionsInput) (*DescribeSessionsOutput, error) {\n\treq, out := c.DescribeSessionsRequest(input)\n\treturn out, req.Send()\n}\n\n// DescribeSessionsWithContext is the same as DescribeSessions with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DescribeSessions for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeSessionsWithContext(ctx aws.Context, input *DescribeSessionsInput, opts ...request.Option) (*DescribeSessionsOutput, error) {\n\treq, out := c.DescribeSessionsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// DescribeSessionsPages iterates over the pages of a DescribeSessions operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See DescribeSessions method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a DescribeSessions operation.\n//\tpageNum := 0\n//\terr := client.DescribeSessionsPages(params,\n//\t    func(page *ssm.DescribeSessionsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) DescribeSessionsPages(input *DescribeSessionsInput, fn func(*DescribeSessionsOutput, bool) bool) error {\n\treturn c.DescribeSessionsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// DescribeSessionsPagesWithContext same as DescribeSessionsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DescribeSessionsPagesWithContext(ctx aws.Context, input *DescribeSessionsInput, fn func(*DescribeSessionsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *DescribeSessionsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.DescribeSessionsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*DescribeSessionsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opDisassociateOpsItemRelatedItem = \"DisassociateOpsItemRelatedItem\"\n\n// DisassociateOpsItemRelatedItemRequest generates a \"aws/request.Request\" representing the\n// client's request for the DisassociateOpsItemRelatedItem operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DisassociateOpsItemRelatedItem for more information on using the DisassociateOpsItemRelatedItem\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DisassociateOpsItemRelatedItemRequest method.\n//\treq, resp := client.DisassociateOpsItemRelatedItemRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DisassociateOpsItemRelatedItem\nfunc (c *SSM) DisassociateOpsItemRelatedItemRequest(input *DisassociateOpsItemRelatedItemInput) (req *request.Request, output *DisassociateOpsItemRelatedItemOutput) {\n\top := &request.Operation{\n\t\tName:       opDisassociateOpsItemRelatedItem,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DisassociateOpsItemRelatedItemInput{}\n\t}\n\n\toutput = &DisassociateOpsItemRelatedItemOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// DisassociateOpsItemRelatedItem API operation for Amazon Simple Systems Manager (SSM).\n//\n// Deletes the association between an OpsItem and a related item. For example,\n// this API operation can delete an Incident Manager incident from an OpsItem.\n// Incident Manager is a capability of Amazon Web Services Systems Manager.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation DisassociateOpsItemRelatedItem for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - OpsItemRelatedItemAssociationNotFoundException\n//     The association wasn't found using the parameters you specified in the call.\n//     Verify the information and try again.\n//\n//   - OpsItemNotFoundException\n//     The specified OpsItem ID doesn't exist. Verify the ID and try again.\n//\n//   - OpsItemInvalidParameterException\n//     A specified parameter argument isn't valid. Verify the available arguments\n//     and try again.\n//\n//   - OpsItemConflictException\n//     The specified OpsItem is in the process of being deleted.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DisassociateOpsItemRelatedItem\nfunc (c *SSM) DisassociateOpsItemRelatedItem(input *DisassociateOpsItemRelatedItemInput) (*DisassociateOpsItemRelatedItemOutput, error) {\n\treq, out := c.DisassociateOpsItemRelatedItemRequest(input)\n\treturn out, req.Send()\n}\n\n// DisassociateOpsItemRelatedItemWithContext is the same as DisassociateOpsItemRelatedItem with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DisassociateOpsItemRelatedItem for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) DisassociateOpsItemRelatedItemWithContext(ctx aws.Context, input *DisassociateOpsItemRelatedItemInput, opts ...request.Option) (*DisassociateOpsItemRelatedItemOutput, error) {\n\treq, out := c.DisassociateOpsItemRelatedItemRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetAutomationExecution = \"GetAutomationExecution\"\n\n// GetAutomationExecutionRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetAutomationExecution operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetAutomationExecution for more information on using the GetAutomationExecution\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetAutomationExecutionRequest method.\n//\treq, resp := client.GetAutomationExecutionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetAutomationExecution\nfunc (c *SSM) GetAutomationExecutionRequest(input *GetAutomationExecutionInput) (req *request.Request, output *GetAutomationExecutionOutput) {\n\top := &request.Operation{\n\t\tName:       opGetAutomationExecution,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetAutomationExecutionInput{}\n\t}\n\n\toutput = &GetAutomationExecutionOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetAutomationExecution API operation for Amazon Simple Systems Manager (SSM).\n//\n// Get detailed information about a particular Automation execution.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetAutomationExecution for usage and error information.\n//\n// Returned Error Types:\n//\n//   - AutomationExecutionNotFoundException\n//     There is no automation execution information for the requested automation\n//     execution ID.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetAutomationExecution\nfunc (c *SSM) GetAutomationExecution(input *GetAutomationExecutionInput) (*GetAutomationExecutionOutput, error) {\n\treq, out := c.GetAutomationExecutionRequest(input)\n\treturn out, req.Send()\n}\n\n// GetAutomationExecutionWithContext is the same as GetAutomationExecution with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetAutomationExecution for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetAutomationExecutionWithContext(ctx aws.Context, input *GetAutomationExecutionInput, opts ...request.Option) (*GetAutomationExecutionOutput, error) {\n\treq, out := c.GetAutomationExecutionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetCalendarState = \"GetCalendarState\"\n\n// GetCalendarStateRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetCalendarState operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetCalendarState for more information on using the GetCalendarState\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetCalendarStateRequest method.\n//\treq, resp := client.GetCalendarStateRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetCalendarState\nfunc (c *SSM) GetCalendarStateRequest(input *GetCalendarStateInput) (req *request.Request, output *GetCalendarStateOutput) {\n\top := &request.Operation{\n\t\tName:       opGetCalendarState,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetCalendarStateInput{}\n\t}\n\n\toutput = &GetCalendarStateOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetCalendarState API operation for Amazon Simple Systems Manager (SSM).\n//\n// Gets the state of a Amazon Web Services Systems Manager change calendar at\n// the current time or a specified time. If you specify a time, GetCalendarState\n// returns the state of the calendar at that specific time, and returns the\n// next time that the change calendar state will transition. If you don't specify\n// a time, GetCalendarState uses the current time. Change Calendar entries have\n// two possible states: OPEN or CLOSED.\n//\n// If you specify more than one calendar in a request, the command returns the\n// status of OPEN only if all calendars in the request are open. If one or more\n// calendars in the request are closed, the status returned is CLOSED.\n//\n// For more information about Change Calendar, a capability of Amazon Web Services\n// Systems Manager, see Amazon Web Services Systems Manager Change Calendar\n// (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetCalendarState for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidDocumentType\n//     The SSM document type isn't valid. Valid document types are described in\n//     the DocumentType property.\n//\n//   - UnsupportedCalendarException\n//     The calendar entry contained in the specified SSM document isn't supported.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetCalendarState\nfunc (c *SSM) GetCalendarState(input *GetCalendarStateInput) (*GetCalendarStateOutput, error) {\n\treq, out := c.GetCalendarStateRequest(input)\n\treturn out, req.Send()\n}\n\n// GetCalendarStateWithContext is the same as GetCalendarState with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetCalendarState for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetCalendarStateWithContext(ctx aws.Context, input *GetCalendarStateInput, opts ...request.Option) (*GetCalendarStateOutput, error) {\n\treq, out := c.GetCalendarStateRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetCommandInvocation = \"GetCommandInvocation\"\n\n// GetCommandInvocationRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetCommandInvocation operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetCommandInvocation for more information on using the GetCommandInvocation\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetCommandInvocationRequest method.\n//\treq, resp := client.GetCommandInvocationRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetCommandInvocation\nfunc (c *SSM) GetCommandInvocationRequest(input *GetCommandInvocationInput) (req *request.Request, output *GetCommandInvocationOutput) {\n\top := &request.Operation{\n\t\tName:       opGetCommandInvocation,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetCommandInvocationInput{}\n\t}\n\n\toutput = &GetCommandInvocationOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetCommandInvocation API operation for Amazon Simple Systems Manager (SSM).\n//\n// Returns detailed information about command execution for an invocation or\n// plugin.\n//\n// GetCommandInvocation only gives the execution status of a plugin in a document.\n// To get the command execution status on a specific managed node, use ListCommandInvocations.\n// To get the command execution status across managed nodes, use ListCommands.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetCommandInvocation for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidCommandId\n//     The specified command ID isn't valid. Verify the ID and try again.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InvalidPluginName\n//     The plugin name isn't valid.\n//\n//   - InvocationDoesNotExist\n//     The command ID and managed node ID you specified didn't match any invocations.\n//     Verify the command ID and the managed node ID and try again.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetCommandInvocation\nfunc (c *SSM) GetCommandInvocation(input *GetCommandInvocationInput) (*GetCommandInvocationOutput, error) {\n\treq, out := c.GetCommandInvocationRequest(input)\n\treturn out, req.Send()\n}\n\n// GetCommandInvocationWithContext is the same as GetCommandInvocation with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetCommandInvocation for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetCommandInvocationWithContext(ctx aws.Context, input *GetCommandInvocationInput, opts ...request.Option) (*GetCommandInvocationOutput, error) {\n\treq, out := c.GetCommandInvocationRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetConnectionStatus = \"GetConnectionStatus\"\n\n// GetConnectionStatusRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetConnectionStatus operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetConnectionStatus for more information on using the GetConnectionStatus\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetConnectionStatusRequest method.\n//\treq, resp := client.GetConnectionStatusRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetConnectionStatus\nfunc (c *SSM) GetConnectionStatusRequest(input *GetConnectionStatusInput) (req *request.Request, output *GetConnectionStatusOutput) {\n\top := &request.Operation{\n\t\tName:       opGetConnectionStatus,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetConnectionStatusInput{}\n\t}\n\n\toutput = &GetConnectionStatusOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetConnectionStatus API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves the Session Manager connection status for a managed node to determine\n// whether it is running and ready to receive Session Manager connections.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetConnectionStatus for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetConnectionStatus\nfunc (c *SSM) GetConnectionStatus(input *GetConnectionStatusInput) (*GetConnectionStatusOutput, error) {\n\treq, out := c.GetConnectionStatusRequest(input)\n\treturn out, req.Send()\n}\n\n// GetConnectionStatusWithContext is the same as GetConnectionStatus with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetConnectionStatus for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetConnectionStatusWithContext(ctx aws.Context, input *GetConnectionStatusInput, opts ...request.Option) (*GetConnectionStatusOutput, error) {\n\treq, out := c.GetConnectionStatusRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetDefaultPatchBaseline = \"GetDefaultPatchBaseline\"\n\n// GetDefaultPatchBaselineRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetDefaultPatchBaseline operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetDefaultPatchBaseline for more information on using the GetDefaultPatchBaseline\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetDefaultPatchBaselineRequest method.\n//\treq, resp := client.GetDefaultPatchBaselineRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDefaultPatchBaseline\nfunc (c *SSM) GetDefaultPatchBaselineRequest(input *GetDefaultPatchBaselineInput) (req *request.Request, output *GetDefaultPatchBaselineOutput) {\n\top := &request.Operation{\n\t\tName:       opGetDefaultPatchBaseline,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetDefaultPatchBaselineInput{}\n\t}\n\n\toutput = &GetDefaultPatchBaselineOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetDefaultPatchBaseline API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves the default patch baseline. Amazon Web Services Systems Manager\n// supports creating multiple default patch baselines. For example, you can\n// create a default patch baseline for each operating system.\n//\n// If you don't specify an operating system value, the default patch baseline\n// for Windows is returned.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetDefaultPatchBaseline for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDefaultPatchBaseline\nfunc (c *SSM) GetDefaultPatchBaseline(input *GetDefaultPatchBaselineInput) (*GetDefaultPatchBaselineOutput, error) {\n\treq, out := c.GetDefaultPatchBaselineRequest(input)\n\treturn out, req.Send()\n}\n\n// GetDefaultPatchBaselineWithContext is the same as GetDefaultPatchBaseline with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetDefaultPatchBaseline for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetDefaultPatchBaselineWithContext(ctx aws.Context, input *GetDefaultPatchBaselineInput, opts ...request.Option) (*GetDefaultPatchBaselineOutput, error) {\n\treq, out := c.GetDefaultPatchBaselineRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetDeployablePatchSnapshotForInstance = \"GetDeployablePatchSnapshotForInstance\"\n\n// GetDeployablePatchSnapshotForInstanceRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetDeployablePatchSnapshotForInstance operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetDeployablePatchSnapshotForInstance for more information on using the GetDeployablePatchSnapshotForInstance\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetDeployablePatchSnapshotForInstanceRequest method.\n//\treq, resp := client.GetDeployablePatchSnapshotForInstanceRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDeployablePatchSnapshotForInstance\nfunc (c *SSM) GetDeployablePatchSnapshotForInstanceRequest(input *GetDeployablePatchSnapshotForInstanceInput) (req *request.Request, output *GetDeployablePatchSnapshotForInstanceOutput) {\n\top := &request.Operation{\n\t\tName:       opGetDeployablePatchSnapshotForInstance,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetDeployablePatchSnapshotForInstanceInput{}\n\t}\n\n\toutput = &GetDeployablePatchSnapshotForInstanceOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetDeployablePatchSnapshotForInstance API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves the current snapshot for the patch baseline the managed node uses.\n// This API is primarily used by the AWS-RunPatchBaseline Systems Manager document\n// (SSM document).\n//\n// If you run the command locally, such as with the Command Line Interface (CLI),\n// the system attempts to use your local Amazon Web Services credentials and\n// the operation fails. To avoid this, you can run the command in the Amazon\n// Web Services Systems Manager console. Use Run Command, a capability of Amazon\n// Web Services Systems Manager, with an SSM document that enables you to target\n// a managed node with a script or command. For example, run the command using\n// the AWS-RunShellScript document or the AWS-RunPowerShellScript document.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetDeployablePatchSnapshotForInstance for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - UnsupportedOperatingSystem\n//     The operating systems you specified isn't supported, or the operation isn't\n//     supported for the operating system.\n//\n//   - UnsupportedFeatureRequiredException\n//     Patching for applications released by Microsoft is only available on EC2\n//     instances and advanced instances. To patch applications released by Microsoft\n//     on on-premises servers and VMs, you must enable advanced instances. For more\n//     information, see Enabling the advanced-instances tier (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances-advanced.html)\n//     in the Amazon Web Services Systems Manager User Guide.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDeployablePatchSnapshotForInstance\nfunc (c *SSM) GetDeployablePatchSnapshotForInstance(input *GetDeployablePatchSnapshotForInstanceInput) (*GetDeployablePatchSnapshotForInstanceOutput, error) {\n\treq, out := c.GetDeployablePatchSnapshotForInstanceRequest(input)\n\treturn out, req.Send()\n}\n\n// GetDeployablePatchSnapshotForInstanceWithContext is the same as GetDeployablePatchSnapshotForInstance with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetDeployablePatchSnapshotForInstance for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetDeployablePatchSnapshotForInstanceWithContext(ctx aws.Context, input *GetDeployablePatchSnapshotForInstanceInput, opts ...request.Option) (*GetDeployablePatchSnapshotForInstanceOutput, error) {\n\treq, out := c.GetDeployablePatchSnapshotForInstanceRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetDocument = \"GetDocument\"\n\n// GetDocumentRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetDocument operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetDocument for more information on using the GetDocument\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetDocumentRequest method.\n//\treq, resp := client.GetDocumentRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDocument\nfunc (c *SSM) GetDocumentRequest(input *GetDocumentInput) (req *request.Request, output *GetDocumentOutput) {\n\top := &request.Operation{\n\t\tName:       opGetDocument,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetDocumentInput{}\n\t}\n\n\toutput = &GetDocumentOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetDocument API operation for Amazon Simple Systems Manager (SSM).\n//\n// Gets the contents of the specified Amazon Web Services Systems Manager document\n// (SSM document).\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetDocument for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidDocumentVersion\n//     The document version isn't valid or doesn't exist.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetDocument\nfunc (c *SSM) GetDocument(input *GetDocumentInput) (*GetDocumentOutput, error) {\n\treq, out := c.GetDocumentRequest(input)\n\treturn out, req.Send()\n}\n\n// GetDocumentWithContext is the same as GetDocument with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetDocument for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetDocumentWithContext(ctx aws.Context, input *GetDocumentInput, opts ...request.Option) (*GetDocumentOutput, error) {\n\treq, out := c.GetDocumentRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetInventory = \"GetInventory\"\n\n// GetInventoryRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetInventory operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetInventory for more information on using the GetInventory\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetInventoryRequest method.\n//\treq, resp := client.GetInventoryRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetInventory\nfunc (c *SSM) GetInventoryRequest(input *GetInventoryInput) (req *request.Request, output *GetInventoryOutput) {\n\top := &request.Operation{\n\t\tName:       opGetInventory,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &GetInventoryInput{}\n\t}\n\n\toutput = &GetInventoryOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetInventory API operation for Amazon Simple Systems Manager (SSM).\n//\n// Query inventory information. This includes managed node status, such as Stopped\n// or Terminated.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetInventory for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidFilter\n//     The filter name isn't valid. Verify the you entered the correct name and\n//     try again.\n//\n//   - InvalidInventoryGroupException\n//     The specified inventory group isn't valid.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - InvalidTypeNameException\n//     The parameter type name isn't valid.\n//\n//   - InvalidAggregatorException\n//     The specified aggregator isn't valid for inventory groups. Verify that the\n//     aggregator uses a valid inventory type such as AWS:Application or AWS:InstanceInformation.\n//\n//   - InvalidResultAttributeException\n//     The specified inventory item result attribute isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetInventory\nfunc (c *SSM) GetInventory(input *GetInventoryInput) (*GetInventoryOutput, error) {\n\treq, out := c.GetInventoryRequest(input)\n\treturn out, req.Send()\n}\n\n// GetInventoryWithContext is the same as GetInventory with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetInventory for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetInventoryWithContext(ctx aws.Context, input *GetInventoryInput, opts ...request.Option) (*GetInventoryOutput, error) {\n\treq, out := c.GetInventoryRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// GetInventoryPages iterates over the pages of a GetInventory operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See GetInventory method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a GetInventory operation.\n//\tpageNum := 0\n//\terr := client.GetInventoryPages(params,\n//\t    func(page *ssm.GetInventoryOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) GetInventoryPages(input *GetInventoryInput, fn func(*GetInventoryOutput, bool) bool) error {\n\treturn c.GetInventoryPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// GetInventoryPagesWithContext same as GetInventoryPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetInventoryPagesWithContext(ctx aws.Context, input *GetInventoryInput, fn func(*GetInventoryOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *GetInventoryInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.GetInventoryRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*GetInventoryOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opGetInventorySchema = \"GetInventorySchema\"\n\n// GetInventorySchemaRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetInventorySchema operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetInventorySchema for more information on using the GetInventorySchema\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetInventorySchemaRequest method.\n//\treq, resp := client.GetInventorySchemaRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetInventorySchema\nfunc (c *SSM) GetInventorySchemaRequest(input *GetInventorySchemaInput) (req *request.Request, output *GetInventorySchemaOutput) {\n\top := &request.Operation{\n\t\tName:       opGetInventorySchema,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &GetInventorySchemaInput{}\n\t}\n\n\toutput = &GetInventorySchemaOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetInventorySchema API operation for Amazon Simple Systems Manager (SSM).\n//\n// Return a list of inventory type names for the account, or return a list of\n// attribute names for a specific Inventory item type.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetInventorySchema for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidTypeNameException\n//     The parameter type name isn't valid.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetInventorySchema\nfunc (c *SSM) GetInventorySchema(input *GetInventorySchemaInput) (*GetInventorySchemaOutput, error) {\n\treq, out := c.GetInventorySchemaRequest(input)\n\treturn out, req.Send()\n}\n\n// GetInventorySchemaWithContext is the same as GetInventorySchema with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetInventorySchema for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetInventorySchemaWithContext(ctx aws.Context, input *GetInventorySchemaInput, opts ...request.Option) (*GetInventorySchemaOutput, error) {\n\treq, out := c.GetInventorySchemaRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// GetInventorySchemaPages iterates over the pages of a GetInventorySchema operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See GetInventorySchema method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a GetInventorySchema operation.\n//\tpageNum := 0\n//\terr := client.GetInventorySchemaPages(params,\n//\t    func(page *ssm.GetInventorySchemaOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) GetInventorySchemaPages(input *GetInventorySchemaInput, fn func(*GetInventorySchemaOutput, bool) bool) error {\n\treturn c.GetInventorySchemaPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// GetInventorySchemaPagesWithContext same as GetInventorySchemaPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetInventorySchemaPagesWithContext(ctx aws.Context, input *GetInventorySchemaInput, fn func(*GetInventorySchemaOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *GetInventorySchemaInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.GetInventorySchemaRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*GetInventorySchemaOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opGetMaintenanceWindow = \"GetMaintenanceWindow\"\n\n// GetMaintenanceWindowRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetMaintenanceWindow operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetMaintenanceWindow for more information on using the GetMaintenanceWindow\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetMaintenanceWindowRequest method.\n//\treq, resp := client.GetMaintenanceWindowRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindow\nfunc (c *SSM) GetMaintenanceWindowRequest(input *GetMaintenanceWindowInput) (req *request.Request, output *GetMaintenanceWindowOutput) {\n\top := &request.Operation{\n\t\tName:       opGetMaintenanceWindow,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetMaintenanceWindowInput{}\n\t}\n\n\toutput = &GetMaintenanceWindowOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves a maintenance window.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetMaintenanceWindow for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindow\nfunc (c *SSM) GetMaintenanceWindow(input *GetMaintenanceWindowInput) (*GetMaintenanceWindowOutput, error) {\n\treq, out := c.GetMaintenanceWindowRequest(input)\n\treturn out, req.Send()\n}\n\n// GetMaintenanceWindowWithContext is the same as GetMaintenanceWindow with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetMaintenanceWindow for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetMaintenanceWindowWithContext(ctx aws.Context, input *GetMaintenanceWindowInput, opts ...request.Option) (*GetMaintenanceWindowOutput, error) {\n\treq, out := c.GetMaintenanceWindowRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetMaintenanceWindowExecution = \"GetMaintenanceWindowExecution\"\n\n// GetMaintenanceWindowExecutionRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetMaintenanceWindowExecution operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetMaintenanceWindowExecution for more information on using the GetMaintenanceWindowExecution\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetMaintenanceWindowExecutionRequest method.\n//\treq, resp := client.GetMaintenanceWindowExecutionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecution\nfunc (c *SSM) GetMaintenanceWindowExecutionRequest(input *GetMaintenanceWindowExecutionInput) (req *request.Request, output *GetMaintenanceWindowExecutionOutput) {\n\top := &request.Operation{\n\t\tName:       opGetMaintenanceWindowExecution,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetMaintenanceWindowExecutionInput{}\n\t}\n\n\toutput = &GetMaintenanceWindowExecutionOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetMaintenanceWindowExecution API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves details about a specific a maintenance window execution.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetMaintenanceWindowExecution for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecution\nfunc (c *SSM) GetMaintenanceWindowExecution(input *GetMaintenanceWindowExecutionInput) (*GetMaintenanceWindowExecutionOutput, error) {\n\treq, out := c.GetMaintenanceWindowExecutionRequest(input)\n\treturn out, req.Send()\n}\n\n// GetMaintenanceWindowExecutionWithContext is the same as GetMaintenanceWindowExecution with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetMaintenanceWindowExecution for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetMaintenanceWindowExecutionWithContext(ctx aws.Context, input *GetMaintenanceWindowExecutionInput, opts ...request.Option) (*GetMaintenanceWindowExecutionOutput, error) {\n\treq, out := c.GetMaintenanceWindowExecutionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetMaintenanceWindowExecutionTask = \"GetMaintenanceWindowExecutionTask\"\n\n// GetMaintenanceWindowExecutionTaskRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetMaintenanceWindowExecutionTask operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetMaintenanceWindowExecutionTask for more information on using the GetMaintenanceWindowExecutionTask\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetMaintenanceWindowExecutionTaskRequest method.\n//\treq, resp := client.GetMaintenanceWindowExecutionTaskRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecutionTask\nfunc (c *SSM) GetMaintenanceWindowExecutionTaskRequest(input *GetMaintenanceWindowExecutionTaskInput) (req *request.Request, output *GetMaintenanceWindowExecutionTaskOutput) {\n\top := &request.Operation{\n\t\tName:       opGetMaintenanceWindowExecutionTask,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetMaintenanceWindowExecutionTaskInput{}\n\t}\n\n\toutput = &GetMaintenanceWindowExecutionTaskOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetMaintenanceWindowExecutionTask API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves the details about a specific task run as part of a maintenance\n// window execution.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetMaintenanceWindowExecutionTask for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecutionTask\nfunc (c *SSM) GetMaintenanceWindowExecutionTask(input *GetMaintenanceWindowExecutionTaskInput) (*GetMaintenanceWindowExecutionTaskOutput, error) {\n\treq, out := c.GetMaintenanceWindowExecutionTaskRequest(input)\n\treturn out, req.Send()\n}\n\n// GetMaintenanceWindowExecutionTaskWithContext is the same as GetMaintenanceWindowExecutionTask with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetMaintenanceWindowExecutionTask for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetMaintenanceWindowExecutionTaskWithContext(ctx aws.Context, input *GetMaintenanceWindowExecutionTaskInput, opts ...request.Option) (*GetMaintenanceWindowExecutionTaskOutput, error) {\n\treq, out := c.GetMaintenanceWindowExecutionTaskRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetMaintenanceWindowExecutionTaskInvocation = \"GetMaintenanceWindowExecutionTaskInvocation\"\n\n// GetMaintenanceWindowExecutionTaskInvocationRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetMaintenanceWindowExecutionTaskInvocation operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetMaintenanceWindowExecutionTaskInvocation for more information on using the GetMaintenanceWindowExecutionTaskInvocation\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetMaintenanceWindowExecutionTaskInvocationRequest method.\n//\treq, resp := client.GetMaintenanceWindowExecutionTaskInvocationRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecutionTaskInvocation\nfunc (c *SSM) GetMaintenanceWindowExecutionTaskInvocationRequest(input *GetMaintenanceWindowExecutionTaskInvocationInput) (req *request.Request, output *GetMaintenanceWindowExecutionTaskInvocationOutput) {\n\top := &request.Operation{\n\t\tName:       opGetMaintenanceWindowExecutionTaskInvocation,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetMaintenanceWindowExecutionTaskInvocationInput{}\n\t}\n\n\toutput = &GetMaintenanceWindowExecutionTaskInvocationOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetMaintenanceWindowExecutionTaskInvocation API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves information about a specific task running on a specific target.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetMaintenanceWindowExecutionTaskInvocation for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowExecutionTaskInvocation\nfunc (c *SSM) GetMaintenanceWindowExecutionTaskInvocation(input *GetMaintenanceWindowExecutionTaskInvocationInput) (*GetMaintenanceWindowExecutionTaskInvocationOutput, error) {\n\treq, out := c.GetMaintenanceWindowExecutionTaskInvocationRequest(input)\n\treturn out, req.Send()\n}\n\n// GetMaintenanceWindowExecutionTaskInvocationWithContext is the same as GetMaintenanceWindowExecutionTaskInvocation with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetMaintenanceWindowExecutionTaskInvocation for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetMaintenanceWindowExecutionTaskInvocationWithContext(ctx aws.Context, input *GetMaintenanceWindowExecutionTaskInvocationInput, opts ...request.Option) (*GetMaintenanceWindowExecutionTaskInvocationOutput, error) {\n\treq, out := c.GetMaintenanceWindowExecutionTaskInvocationRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetMaintenanceWindowTask = \"GetMaintenanceWindowTask\"\n\n// GetMaintenanceWindowTaskRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetMaintenanceWindowTask operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetMaintenanceWindowTask for more information on using the GetMaintenanceWindowTask\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetMaintenanceWindowTaskRequest method.\n//\treq, resp := client.GetMaintenanceWindowTaskRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowTask\nfunc (c *SSM) GetMaintenanceWindowTaskRequest(input *GetMaintenanceWindowTaskInput) (req *request.Request, output *GetMaintenanceWindowTaskOutput) {\n\top := &request.Operation{\n\t\tName:       opGetMaintenanceWindowTask,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetMaintenanceWindowTaskInput{}\n\t}\n\n\toutput = &GetMaintenanceWindowTaskOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetMaintenanceWindowTask API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves the details of a maintenance window task.\n//\n// For maintenance window tasks without a specified target, you can't supply\n// values for --max-errors and --max-concurrency. Instead, the system inserts\n// a placeholder value of 1, which may be reported in the response to this command.\n// These values don't affect the running of your task and can be ignored.\n//\n// To retrieve a list of tasks in a maintenance window, instead use the DescribeMaintenanceWindowTasks\n// command.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetMaintenanceWindowTask for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetMaintenanceWindowTask\nfunc (c *SSM) GetMaintenanceWindowTask(input *GetMaintenanceWindowTaskInput) (*GetMaintenanceWindowTaskOutput, error) {\n\treq, out := c.GetMaintenanceWindowTaskRequest(input)\n\treturn out, req.Send()\n}\n\n// GetMaintenanceWindowTaskWithContext is the same as GetMaintenanceWindowTask with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetMaintenanceWindowTask for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetMaintenanceWindowTaskWithContext(ctx aws.Context, input *GetMaintenanceWindowTaskInput, opts ...request.Option) (*GetMaintenanceWindowTaskOutput, error) {\n\treq, out := c.GetMaintenanceWindowTaskRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetOpsItem = \"GetOpsItem\"\n\n// GetOpsItemRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetOpsItem operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetOpsItem for more information on using the GetOpsItem\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetOpsItemRequest method.\n//\treq, resp := client.GetOpsItemRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetOpsItem\nfunc (c *SSM) GetOpsItemRequest(input *GetOpsItemInput) (req *request.Request, output *GetOpsItemOutput) {\n\top := &request.Operation{\n\t\tName:       opGetOpsItem,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetOpsItemInput{}\n\t}\n\n\toutput = &GetOpsItemOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetOpsItem API operation for Amazon Simple Systems Manager (SSM).\n//\n// Get information about an OpsItem by using the ID. You must have permission\n// in Identity and Access Management (IAM) to view information about an OpsItem.\n// For more information, see Set up OpsCenter (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-setup.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// Operations engineers and IT professionals use Amazon Web Services Systems\n// Manager OpsCenter to view, investigate, and remediate operational issues\n// impacting the performance and health of their Amazon Web Services resources.\n// For more information, see OpsCenter (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetOpsItem for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - OpsItemNotFoundException\n//     The specified OpsItem ID doesn't exist. Verify the ID and try again.\n//\n//   - OpsItemAccessDeniedException\n//     You don't have permission to view OpsItems in the specified account. Verify\n//     that your account is configured either as a Systems Manager delegated administrator\n//     or that you are logged into the Organizations management account.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetOpsItem\nfunc (c *SSM) GetOpsItem(input *GetOpsItemInput) (*GetOpsItemOutput, error) {\n\treq, out := c.GetOpsItemRequest(input)\n\treturn out, req.Send()\n}\n\n// GetOpsItemWithContext is the same as GetOpsItem with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetOpsItem for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetOpsItemWithContext(ctx aws.Context, input *GetOpsItemInput, opts ...request.Option) (*GetOpsItemOutput, error) {\n\treq, out := c.GetOpsItemRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetOpsMetadata = \"GetOpsMetadata\"\n\n// GetOpsMetadataRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetOpsMetadata operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetOpsMetadata for more information on using the GetOpsMetadata\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetOpsMetadataRequest method.\n//\treq, resp := client.GetOpsMetadataRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetOpsMetadata\nfunc (c *SSM) GetOpsMetadataRequest(input *GetOpsMetadataInput) (req *request.Request, output *GetOpsMetadataOutput) {\n\top := &request.Operation{\n\t\tName:       opGetOpsMetadata,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetOpsMetadataInput{}\n\t}\n\n\toutput = &GetOpsMetadataOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetOpsMetadata API operation for Amazon Simple Systems Manager (SSM).\n//\n// View operational metadata related to an application in Application Manager.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetOpsMetadata for usage and error information.\n//\n// Returned Error Types:\n//\n//   - OpsMetadataNotFoundException\n//     The OpsMetadata object doesn't exist.\n//\n//   - OpsMetadataInvalidArgumentException\n//     One of the arguments passed is invalid.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetOpsMetadata\nfunc (c *SSM) GetOpsMetadata(input *GetOpsMetadataInput) (*GetOpsMetadataOutput, error) {\n\treq, out := c.GetOpsMetadataRequest(input)\n\treturn out, req.Send()\n}\n\n// GetOpsMetadataWithContext is the same as GetOpsMetadata with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetOpsMetadata for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetOpsMetadataWithContext(ctx aws.Context, input *GetOpsMetadataInput, opts ...request.Option) (*GetOpsMetadataOutput, error) {\n\treq, out := c.GetOpsMetadataRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetOpsSummary = \"GetOpsSummary\"\n\n// GetOpsSummaryRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetOpsSummary operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetOpsSummary for more information on using the GetOpsSummary\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetOpsSummaryRequest method.\n//\treq, resp := client.GetOpsSummaryRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetOpsSummary\nfunc (c *SSM) GetOpsSummaryRequest(input *GetOpsSummaryInput) (req *request.Request, output *GetOpsSummaryOutput) {\n\top := &request.Operation{\n\t\tName:       opGetOpsSummary,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &GetOpsSummaryInput{}\n\t}\n\n\toutput = &GetOpsSummaryOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetOpsSummary API operation for Amazon Simple Systems Manager (SSM).\n//\n// View a summary of operations metadata (OpsData) based on specified filters\n// and aggregators. OpsData can include information about Amazon Web Services\n// Systems Manager OpsCenter operational workitems (OpsItems) as well as information\n// about any Amazon Web Services resource or service configured to report OpsData\n// to Amazon Web Services Systems Manager Explorer.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetOpsSummary for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - ResourceDataSyncNotFoundException\n//     The specified sync name wasn't found.\n//\n//   - InvalidFilter\n//     The filter name isn't valid. Verify the you entered the correct name and\n//     try again.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - InvalidTypeNameException\n//     The parameter type name isn't valid.\n//\n//   - InvalidAggregatorException\n//     The specified aggregator isn't valid for inventory groups. Verify that the\n//     aggregator uses a valid inventory type such as AWS:Application or AWS:InstanceInformation.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetOpsSummary\nfunc (c *SSM) GetOpsSummary(input *GetOpsSummaryInput) (*GetOpsSummaryOutput, error) {\n\treq, out := c.GetOpsSummaryRequest(input)\n\treturn out, req.Send()\n}\n\n// GetOpsSummaryWithContext is the same as GetOpsSummary with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetOpsSummary for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetOpsSummaryWithContext(ctx aws.Context, input *GetOpsSummaryInput, opts ...request.Option) (*GetOpsSummaryOutput, error) {\n\treq, out := c.GetOpsSummaryRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// GetOpsSummaryPages iterates over the pages of a GetOpsSummary operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See GetOpsSummary method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a GetOpsSummary operation.\n//\tpageNum := 0\n//\terr := client.GetOpsSummaryPages(params,\n//\t    func(page *ssm.GetOpsSummaryOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) GetOpsSummaryPages(input *GetOpsSummaryInput, fn func(*GetOpsSummaryOutput, bool) bool) error {\n\treturn c.GetOpsSummaryPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// GetOpsSummaryPagesWithContext same as GetOpsSummaryPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetOpsSummaryPagesWithContext(ctx aws.Context, input *GetOpsSummaryInput, fn func(*GetOpsSummaryOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *GetOpsSummaryInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.GetOpsSummaryRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*GetOpsSummaryOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opGetParameter = \"GetParameter\"\n\n// GetParameterRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetParameter operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetParameter for more information on using the GetParameter\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetParameterRequest method.\n//\treq, resp := client.GetParameterRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParameter\nfunc (c *SSM) GetParameterRequest(input *GetParameterInput) (req *request.Request, output *GetParameterOutput) {\n\top := &request.Operation{\n\t\tName:       opGetParameter,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetParameterInput{}\n\t}\n\n\toutput = &GetParameterOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetParameter API operation for Amazon Simple Systems Manager (SSM).\n//\n// Get information about a single parameter by specifying the parameter name.\n//\n// To get information about more than one parameter at a time, use the GetParameters\n// operation.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetParameter for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidKeyId\n//     The query key ID isn't valid.\n//\n//   - ParameterNotFound\n//     The parameter couldn't be found. Verify the name and try again.\n//\n//   - ParameterVersionNotFound\n//     The specified parameter version wasn't found. Verify the parameter name and\n//     version, and try again.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParameter\nfunc (c *SSM) GetParameter(input *GetParameterInput) (*GetParameterOutput, error) {\n\treq, out := c.GetParameterRequest(input)\n\treturn out, req.Send()\n}\n\n// GetParameterWithContext is the same as GetParameter with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetParameter for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetParameterWithContext(ctx aws.Context, input *GetParameterInput, opts ...request.Option) (*GetParameterOutput, error) {\n\treq, out := c.GetParameterRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetParameterHistory = \"GetParameterHistory\"\n\n// GetParameterHistoryRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetParameterHistory operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetParameterHistory for more information on using the GetParameterHistory\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetParameterHistoryRequest method.\n//\treq, resp := client.GetParameterHistoryRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParameterHistory\nfunc (c *SSM) GetParameterHistoryRequest(input *GetParameterHistoryInput) (req *request.Request, output *GetParameterHistoryOutput) {\n\top := &request.Operation{\n\t\tName:       opGetParameterHistory,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &GetParameterHistoryInput{}\n\t}\n\n\toutput = &GetParameterHistoryOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetParameterHistory API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves the history of all changes to a parameter.\n//\n// If you change the KMS key alias for the KMS key used to encrypt a parameter,\n// then you must also update the key alias the parameter uses to reference KMS.\n// Otherwise, GetParameterHistory retrieves whatever the original key alias\n// was referencing.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetParameterHistory for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - ParameterNotFound\n//     The parameter couldn't be found. Verify the name and try again.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - InvalidKeyId\n//     The query key ID isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParameterHistory\nfunc (c *SSM) GetParameterHistory(input *GetParameterHistoryInput) (*GetParameterHistoryOutput, error) {\n\treq, out := c.GetParameterHistoryRequest(input)\n\treturn out, req.Send()\n}\n\n// GetParameterHistoryWithContext is the same as GetParameterHistory with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetParameterHistory for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetParameterHistoryWithContext(ctx aws.Context, input *GetParameterHistoryInput, opts ...request.Option) (*GetParameterHistoryOutput, error) {\n\treq, out := c.GetParameterHistoryRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// GetParameterHistoryPages iterates over the pages of a GetParameterHistory operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See GetParameterHistory method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a GetParameterHistory operation.\n//\tpageNum := 0\n//\terr := client.GetParameterHistoryPages(params,\n//\t    func(page *ssm.GetParameterHistoryOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) GetParameterHistoryPages(input *GetParameterHistoryInput, fn func(*GetParameterHistoryOutput, bool) bool) error {\n\treturn c.GetParameterHistoryPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// GetParameterHistoryPagesWithContext same as GetParameterHistoryPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetParameterHistoryPagesWithContext(ctx aws.Context, input *GetParameterHistoryInput, fn func(*GetParameterHistoryOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *GetParameterHistoryInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.GetParameterHistoryRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*GetParameterHistoryOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opGetParameters = \"GetParameters\"\n\n// GetParametersRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetParameters operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetParameters for more information on using the GetParameters\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetParametersRequest method.\n//\treq, resp := client.GetParametersRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParameters\nfunc (c *SSM) GetParametersRequest(input *GetParametersInput) (req *request.Request, output *GetParametersOutput) {\n\top := &request.Operation{\n\t\tName:       opGetParameters,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetParametersInput{}\n\t}\n\n\toutput = &GetParametersOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetParameters API operation for Amazon Simple Systems Manager (SSM).\n//\n// Get information about one or more parameters by specifying multiple parameter\n// names.\n//\n// To get information about a single parameter, you can use the GetParameter\n// operation instead.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetParameters for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidKeyId\n//     The query key ID isn't valid.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParameters\nfunc (c *SSM) GetParameters(input *GetParametersInput) (*GetParametersOutput, error) {\n\treq, out := c.GetParametersRequest(input)\n\treturn out, req.Send()\n}\n\n// GetParametersWithContext is the same as GetParameters with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetParameters for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetParametersWithContext(ctx aws.Context, input *GetParametersInput, opts ...request.Option) (*GetParametersOutput, error) {\n\treq, out := c.GetParametersRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetParametersByPath = \"GetParametersByPath\"\n\n// GetParametersByPathRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetParametersByPath operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetParametersByPath for more information on using the GetParametersByPath\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetParametersByPathRequest method.\n//\treq, resp := client.GetParametersByPathRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParametersByPath\nfunc (c *SSM) GetParametersByPathRequest(input *GetParametersByPathInput) (req *request.Request, output *GetParametersByPathOutput) {\n\top := &request.Operation{\n\t\tName:       opGetParametersByPath,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &GetParametersByPathInput{}\n\t}\n\n\toutput = &GetParametersByPathOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetParametersByPath API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieve information about one or more parameters in a specific hierarchy.\n//\n// Request results are returned on a best-effort basis. If you specify MaxResults\n// in the request, the response includes information up to the limit specified.\n// The number of items returned, however, can be between zero and the value\n// of MaxResults. If the service reaches an internal limit while processing\n// the results, it stops the operation and returns the matching values up to\n// that point and a NextToken. You can specify the NextToken in a subsequent\n// call to get the next set of results.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetParametersByPath for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidFilterKey\n//     The specified key isn't valid.\n//\n//   - InvalidFilterOption\n//     The specified filter option isn't valid. Valid options are Equals and BeginsWith.\n//     For Path filter, valid options are Recursive and OneLevel.\n//\n//   - InvalidFilterValue\n//     The filter value isn't valid. Verify the value and try again.\n//\n//   - InvalidKeyId\n//     The query key ID isn't valid.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetParametersByPath\nfunc (c *SSM) GetParametersByPath(input *GetParametersByPathInput) (*GetParametersByPathOutput, error) {\n\treq, out := c.GetParametersByPathRequest(input)\n\treturn out, req.Send()\n}\n\n// GetParametersByPathWithContext is the same as GetParametersByPath with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetParametersByPath for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetParametersByPathWithContext(ctx aws.Context, input *GetParametersByPathInput, opts ...request.Option) (*GetParametersByPathOutput, error) {\n\treq, out := c.GetParametersByPathRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// GetParametersByPathPages iterates over the pages of a GetParametersByPath operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See GetParametersByPath method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a GetParametersByPath operation.\n//\tpageNum := 0\n//\terr := client.GetParametersByPathPages(params,\n//\t    func(page *ssm.GetParametersByPathOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) GetParametersByPathPages(input *GetParametersByPathInput, fn func(*GetParametersByPathOutput, bool) bool) error {\n\treturn c.GetParametersByPathPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// GetParametersByPathPagesWithContext same as GetParametersByPathPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetParametersByPathPagesWithContext(ctx aws.Context, input *GetParametersByPathInput, fn func(*GetParametersByPathOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *GetParametersByPathInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.GetParametersByPathRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*GetParametersByPathOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opGetPatchBaseline = \"GetPatchBaseline\"\n\n// GetPatchBaselineRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetPatchBaseline operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetPatchBaseline for more information on using the GetPatchBaseline\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetPatchBaselineRequest method.\n//\treq, resp := client.GetPatchBaselineRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetPatchBaseline\nfunc (c *SSM) GetPatchBaselineRequest(input *GetPatchBaselineInput) (req *request.Request, output *GetPatchBaselineOutput) {\n\top := &request.Operation{\n\t\tName:       opGetPatchBaseline,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetPatchBaselineInput{}\n\t}\n\n\toutput = &GetPatchBaselineOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetPatchBaseline API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves information about a patch baseline.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetPatchBaseline for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InvalidResourceId\n//     The resource ID isn't valid. Verify that you entered the correct ID and try\n//     again.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetPatchBaseline\nfunc (c *SSM) GetPatchBaseline(input *GetPatchBaselineInput) (*GetPatchBaselineOutput, error) {\n\treq, out := c.GetPatchBaselineRequest(input)\n\treturn out, req.Send()\n}\n\n// GetPatchBaselineWithContext is the same as GetPatchBaseline with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetPatchBaseline for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetPatchBaselineWithContext(ctx aws.Context, input *GetPatchBaselineInput, opts ...request.Option) (*GetPatchBaselineOutput, error) {\n\treq, out := c.GetPatchBaselineRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetPatchBaselineForPatchGroup = \"GetPatchBaselineForPatchGroup\"\n\n// GetPatchBaselineForPatchGroupRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetPatchBaselineForPatchGroup operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetPatchBaselineForPatchGroup for more information on using the GetPatchBaselineForPatchGroup\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetPatchBaselineForPatchGroupRequest method.\n//\treq, resp := client.GetPatchBaselineForPatchGroupRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetPatchBaselineForPatchGroup\nfunc (c *SSM) GetPatchBaselineForPatchGroupRequest(input *GetPatchBaselineForPatchGroupInput) (req *request.Request, output *GetPatchBaselineForPatchGroupOutput) {\n\top := &request.Operation{\n\t\tName:       opGetPatchBaselineForPatchGroup,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetPatchBaselineForPatchGroupInput{}\n\t}\n\n\toutput = &GetPatchBaselineForPatchGroupOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetPatchBaselineForPatchGroup API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves the patch baseline that should be used for the specified patch\n// group.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetPatchBaselineForPatchGroup for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetPatchBaselineForPatchGroup\nfunc (c *SSM) GetPatchBaselineForPatchGroup(input *GetPatchBaselineForPatchGroupInput) (*GetPatchBaselineForPatchGroupOutput, error) {\n\treq, out := c.GetPatchBaselineForPatchGroupRequest(input)\n\treturn out, req.Send()\n}\n\n// GetPatchBaselineForPatchGroupWithContext is the same as GetPatchBaselineForPatchGroup with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetPatchBaselineForPatchGroup for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetPatchBaselineForPatchGroupWithContext(ctx aws.Context, input *GetPatchBaselineForPatchGroupInput, opts ...request.Option) (*GetPatchBaselineForPatchGroupOutput, error) {\n\treq, out := c.GetPatchBaselineForPatchGroupRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetResourcePolicies = \"GetResourcePolicies\"\n\n// GetResourcePoliciesRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetResourcePolicies operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetResourcePolicies for more information on using the GetResourcePolicies\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetResourcePoliciesRequest method.\n//\treq, resp := client.GetResourcePoliciesRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetResourcePolicies\nfunc (c *SSM) GetResourcePoliciesRequest(input *GetResourcePoliciesInput) (req *request.Request, output *GetResourcePoliciesOutput) {\n\top := &request.Operation{\n\t\tName:       opGetResourcePolicies,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &GetResourcePoliciesInput{}\n\t}\n\n\toutput = &GetResourcePoliciesOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetResourcePolicies API operation for Amazon Simple Systems Manager (SSM).\n//\n// Returns an array of the Policy object.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetResourcePolicies for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - ResourcePolicyInvalidParameterException\n//     One or more parameters specified for the call aren't valid. Verify the parameters\n//     and their values and try again.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetResourcePolicies\nfunc (c *SSM) GetResourcePolicies(input *GetResourcePoliciesInput) (*GetResourcePoliciesOutput, error) {\n\treq, out := c.GetResourcePoliciesRequest(input)\n\treturn out, req.Send()\n}\n\n// GetResourcePoliciesWithContext is the same as GetResourcePolicies with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetResourcePolicies for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetResourcePoliciesWithContext(ctx aws.Context, input *GetResourcePoliciesInput, opts ...request.Option) (*GetResourcePoliciesOutput, error) {\n\treq, out := c.GetResourcePoliciesRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// GetResourcePoliciesPages iterates over the pages of a GetResourcePolicies operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See GetResourcePolicies method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a GetResourcePolicies operation.\n//\tpageNum := 0\n//\terr := client.GetResourcePoliciesPages(params,\n//\t    func(page *ssm.GetResourcePoliciesOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) GetResourcePoliciesPages(input *GetResourcePoliciesInput, fn func(*GetResourcePoliciesOutput, bool) bool) error {\n\treturn c.GetResourcePoliciesPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// GetResourcePoliciesPagesWithContext same as GetResourcePoliciesPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetResourcePoliciesPagesWithContext(ctx aws.Context, input *GetResourcePoliciesInput, fn func(*GetResourcePoliciesOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *GetResourcePoliciesInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.GetResourcePoliciesRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*GetResourcePoliciesOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opGetServiceSetting = \"GetServiceSetting\"\n\n// GetServiceSettingRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetServiceSetting operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetServiceSetting for more information on using the GetServiceSetting\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetServiceSettingRequest method.\n//\treq, resp := client.GetServiceSettingRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetServiceSetting\nfunc (c *SSM) GetServiceSettingRequest(input *GetServiceSettingInput) (req *request.Request, output *GetServiceSettingOutput) {\n\top := &request.Operation{\n\t\tName:       opGetServiceSetting,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetServiceSettingInput{}\n\t}\n\n\toutput = &GetServiceSettingOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetServiceSetting API operation for Amazon Simple Systems Manager (SSM).\n//\n// ServiceSetting is an account-level setting for an Amazon Web Services service.\n// This setting defines how a user interacts with or uses a service or a feature\n// of a service. For example, if an Amazon Web Services service charges money\n// to the account based on feature or service usage, then the Amazon Web Services\n// service team might create a default setting of false. This means the user\n// can't use this feature unless they change the setting to true and intentionally\n// opt in for a paid feature.\n//\n// Services map a SettingId object to a setting value. Amazon Web Services services\n// teams define the default value for a SettingId. You can't create a new SettingId,\n// but you can overwrite the default value if you have the ssm:UpdateServiceSetting\n// permission for the setting. Use the UpdateServiceSetting API operation to\n// change the default setting. Or use the ResetServiceSetting to change the\n// value back to the original value defined by the Amazon Web Services service\n// team.\n//\n// Query the current service setting for the Amazon Web Services account.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation GetServiceSetting for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - ServiceSettingNotFound\n//     The specified service setting wasn't found. Either the service name or the\n//     setting hasn't been provisioned by the Amazon Web Services service team.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/GetServiceSetting\nfunc (c *SSM) GetServiceSetting(input *GetServiceSettingInput) (*GetServiceSettingOutput, error) {\n\treq, out := c.GetServiceSettingRequest(input)\n\treturn out, req.Send()\n}\n\n// GetServiceSettingWithContext is the same as GetServiceSetting with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetServiceSetting for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) GetServiceSettingWithContext(ctx aws.Context, input *GetServiceSettingInput, opts ...request.Option) (*GetServiceSettingOutput, error) {\n\treq, out := c.GetServiceSettingRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opLabelParameterVersion = \"LabelParameterVersion\"\n\n// LabelParameterVersionRequest generates a \"aws/request.Request\" representing the\n// client's request for the LabelParameterVersion operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See LabelParameterVersion for more information on using the LabelParameterVersion\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the LabelParameterVersionRequest method.\n//\treq, resp := client.LabelParameterVersionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/LabelParameterVersion\nfunc (c *SSM) LabelParameterVersionRequest(input *LabelParameterVersionInput) (req *request.Request, output *LabelParameterVersionOutput) {\n\top := &request.Operation{\n\t\tName:       opLabelParameterVersion,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &LabelParameterVersionInput{}\n\t}\n\n\toutput = &LabelParameterVersionOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// LabelParameterVersion API operation for Amazon Simple Systems Manager (SSM).\n//\n// A parameter label is a user-defined alias to help you manage different versions\n// of a parameter. When you modify a parameter, Amazon Web Services Systems\n// Manager automatically saves a new version and increments the version number\n// by one. A label can help you remember the purpose of a parameter when there\n// are multiple versions.\n//\n// Parameter labels have the following requirements and restrictions.\n//\n//   - A version of a parameter can have a maximum of 10 labels.\n//\n//   - You can't attach the same label to different versions of the same parameter.\n//     For example, if version 1 has the label Production, then you can't attach\n//     Production to version 2.\n//\n//   - You can move a label from one version of a parameter to another.\n//\n//   - You can't create a label when you create a new parameter. You must attach\n//     a label to a specific version of a parameter.\n//\n//   - If you no longer want to use a parameter label, then you can either\n//     delete it or move it to a different version of a parameter.\n//\n//   - A label can have a maximum of 100 characters.\n//\n//   - Labels can contain letters (case sensitive), numbers, periods (.), hyphens\n//     (-), or underscores (_).\n//\n//   - Labels can't begin with a number, \"aws\" or \"ssm\" (not case sensitive).\n//     If a label fails to meet these requirements, then the label isn't associated\n//     with a parameter and the system displays it in the list of InvalidLabels.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation LabelParameterVersion for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - TooManyUpdates\n//     There are concurrent updates for a resource that supports one update at a\n//     time.\n//\n//   - ParameterNotFound\n//     The parameter couldn't be found. Verify the name and try again.\n//\n//   - ParameterVersionNotFound\n//     The specified parameter version wasn't found. Verify the parameter name and\n//     version, and try again.\n//\n//   - ParameterVersionLabelLimitExceeded\n//     A parameter version can have a maximum of ten labels.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/LabelParameterVersion\nfunc (c *SSM) LabelParameterVersion(input *LabelParameterVersionInput) (*LabelParameterVersionOutput, error) {\n\treq, out := c.LabelParameterVersionRequest(input)\n\treturn out, req.Send()\n}\n\n// LabelParameterVersionWithContext is the same as LabelParameterVersion with the addition of\n// the ability to pass a context and additional request options.\n//\n// See LabelParameterVersion for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) LabelParameterVersionWithContext(ctx aws.Context, input *LabelParameterVersionInput, opts ...request.Option) (*LabelParameterVersionOutput, error) {\n\treq, out := c.LabelParameterVersionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opListAssociationVersions = \"ListAssociationVersions\"\n\n// ListAssociationVersionsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListAssociationVersions operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListAssociationVersions for more information on using the ListAssociationVersions\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListAssociationVersionsRequest method.\n//\treq, resp := client.ListAssociationVersionsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListAssociationVersions\nfunc (c *SSM) ListAssociationVersionsRequest(input *ListAssociationVersionsInput) (req *request.Request, output *ListAssociationVersionsOutput) {\n\top := &request.Operation{\n\t\tName:       opListAssociationVersions,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListAssociationVersionsInput{}\n\t}\n\n\toutput = &ListAssociationVersionsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListAssociationVersions API operation for Amazon Simple Systems Manager (SSM).\n//\n// Retrieves all versions of an association for a specific association ID.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListAssociationVersions for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - AssociationDoesNotExist\n//     The specified association doesn't exist.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListAssociationVersions\nfunc (c *SSM) ListAssociationVersions(input *ListAssociationVersionsInput) (*ListAssociationVersionsOutput, error) {\n\treq, out := c.ListAssociationVersionsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListAssociationVersionsWithContext is the same as ListAssociationVersions with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListAssociationVersions for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListAssociationVersionsWithContext(ctx aws.Context, input *ListAssociationVersionsInput, opts ...request.Option) (*ListAssociationVersionsOutput, error) {\n\treq, out := c.ListAssociationVersionsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListAssociationVersionsPages iterates over the pages of a ListAssociationVersions operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListAssociationVersions method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListAssociationVersions operation.\n//\tpageNum := 0\n//\terr := client.ListAssociationVersionsPages(params,\n//\t    func(page *ssm.ListAssociationVersionsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) ListAssociationVersionsPages(input *ListAssociationVersionsInput, fn func(*ListAssociationVersionsOutput, bool) bool) error {\n\treturn c.ListAssociationVersionsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListAssociationVersionsPagesWithContext same as ListAssociationVersionsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListAssociationVersionsPagesWithContext(ctx aws.Context, input *ListAssociationVersionsInput, fn func(*ListAssociationVersionsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListAssociationVersionsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListAssociationVersionsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListAssociationVersionsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListAssociations = \"ListAssociations\"\n\n// ListAssociationsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListAssociations operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListAssociations for more information on using the ListAssociations\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListAssociationsRequest method.\n//\treq, resp := client.ListAssociationsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListAssociations\nfunc (c *SSM) ListAssociationsRequest(input *ListAssociationsInput) (req *request.Request, output *ListAssociationsOutput) {\n\top := &request.Operation{\n\t\tName:       opListAssociations,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListAssociationsInput{}\n\t}\n\n\toutput = &ListAssociationsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListAssociations API operation for Amazon Simple Systems Manager (SSM).\n//\n// Returns all State Manager associations in the current Amazon Web Services\n// account and Amazon Web Services Region. You can limit the results to a specific\n// State Manager association document or managed node by specifying a filter.\n// State Manager is a capability of Amazon Web Services Systems Manager.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListAssociations for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListAssociations\nfunc (c *SSM) ListAssociations(input *ListAssociationsInput) (*ListAssociationsOutput, error) {\n\treq, out := c.ListAssociationsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListAssociationsWithContext is the same as ListAssociations with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListAssociations for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListAssociationsWithContext(ctx aws.Context, input *ListAssociationsInput, opts ...request.Option) (*ListAssociationsOutput, error) {\n\treq, out := c.ListAssociationsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListAssociationsPages iterates over the pages of a ListAssociations operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListAssociations method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListAssociations operation.\n//\tpageNum := 0\n//\terr := client.ListAssociationsPages(params,\n//\t    func(page *ssm.ListAssociationsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) ListAssociationsPages(input *ListAssociationsInput, fn func(*ListAssociationsOutput, bool) bool) error {\n\treturn c.ListAssociationsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListAssociationsPagesWithContext same as ListAssociationsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListAssociationsPagesWithContext(ctx aws.Context, input *ListAssociationsInput, fn func(*ListAssociationsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListAssociationsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListAssociationsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListAssociationsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListCommandInvocations = \"ListCommandInvocations\"\n\n// ListCommandInvocationsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListCommandInvocations operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListCommandInvocations for more information on using the ListCommandInvocations\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListCommandInvocationsRequest method.\n//\treq, resp := client.ListCommandInvocationsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListCommandInvocations\nfunc (c *SSM) ListCommandInvocationsRequest(input *ListCommandInvocationsInput) (req *request.Request, output *ListCommandInvocationsOutput) {\n\top := &request.Operation{\n\t\tName:       opListCommandInvocations,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListCommandInvocationsInput{}\n\t}\n\n\toutput = &ListCommandInvocationsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListCommandInvocations API operation for Amazon Simple Systems Manager (SSM).\n//\n// An invocation is copy of a command sent to a specific managed node. A command\n// can apply to one or more managed nodes. A command invocation applies to one\n// managed node. For example, if a user runs SendCommand against three managed\n// nodes, then a command invocation is created for each requested managed node\n// ID. ListCommandInvocations provide status about command execution.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListCommandInvocations for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidCommandId\n//     The specified command ID isn't valid. Verify the ID and try again.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InvalidFilterKey\n//     The specified key isn't valid.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListCommandInvocations\nfunc (c *SSM) ListCommandInvocations(input *ListCommandInvocationsInput) (*ListCommandInvocationsOutput, error) {\n\treq, out := c.ListCommandInvocationsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListCommandInvocationsWithContext is the same as ListCommandInvocations with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListCommandInvocations for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListCommandInvocationsWithContext(ctx aws.Context, input *ListCommandInvocationsInput, opts ...request.Option) (*ListCommandInvocationsOutput, error) {\n\treq, out := c.ListCommandInvocationsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListCommandInvocationsPages iterates over the pages of a ListCommandInvocations operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListCommandInvocations method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListCommandInvocations operation.\n//\tpageNum := 0\n//\terr := client.ListCommandInvocationsPages(params,\n//\t    func(page *ssm.ListCommandInvocationsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) ListCommandInvocationsPages(input *ListCommandInvocationsInput, fn func(*ListCommandInvocationsOutput, bool) bool) error {\n\treturn c.ListCommandInvocationsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListCommandInvocationsPagesWithContext same as ListCommandInvocationsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListCommandInvocationsPagesWithContext(ctx aws.Context, input *ListCommandInvocationsInput, fn func(*ListCommandInvocationsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListCommandInvocationsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListCommandInvocationsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListCommandInvocationsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListCommands = \"ListCommands\"\n\n// ListCommandsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListCommands operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListCommands for more information on using the ListCommands\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListCommandsRequest method.\n//\treq, resp := client.ListCommandsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListCommands\nfunc (c *SSM) ListCommandsRequest(input *ListCommandsInput) (req *request.Request, output *ListCommandsOutput) {\n\top := &request.Operation{\n\t\tName:       opListCommands,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListCommandsInput{}\n\t}\n\n\toutput = &ListCommandsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListCommands API operation for Amazon Simple Systems Manager (SSM).\n//\n// Lists the commands requested by users of the Amazon Web Services account.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListCommands for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidCommandId\n//     The specified command ID isn't valid. Verify the ID and try again.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InvalidFilterKey\n//     The specified key isn't valid.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListCommands\nfunc (c *SSM) ListCommands(input *ListCommandsInput) (*ListCommandsOutput, error) {\n\treq, out := c.ListCommandsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListCommandsWithContext is the same as ListCommands with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListCommands for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListCommandsWithContext(ctx aws.Context, input *ListCommandsInput, opts ...request.Option) (*ListCommandsOutput, error) {\n\treq, out := c.ListCommandsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListCommandsPages iterates over the pages of a ListCommands operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListCommands method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListCommands operation.\n//\tpageNum := 0\n//\terr := client.ListCommandsPages(params,\n//\t    func(page *ssm.ListCommandsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) ListCommandsPages(input *ListCommandsInput, fn func(*ListCommandsOutput, bool) bool) error {\n\treturn c.ListCommandsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListCommandsPagesWithContext same as ListCommandsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListCommandsPagesWithContext(ctx aws.Context, input *ListCommandsInput, fn func(*ListCommandsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListCommandsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListCommandsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListCommandsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListComplianceItems = \"ListComplianceItems\"\n\n// ListComplianceItemsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListComplianceItems operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListComplianceItems for more information on using the ListComplianceItems\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListComplianceItemsRequest method.\n//\treq, resp := client.ListComplianceItemsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListComplianceItems\nfunc (c *SSM) ListComplianceItemsRequest(input *ListComplianceItemsInput) (req *request.Request, output *ListComplianceItemsOutput) {\n\top := &request.Operation{\n\t\tName:       opListComplianceItems,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListComplianceItemsInput{}\n\t}\n\n\toutput = &ListComplianceItemsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListComplianceItems API operation for Amazon Simple Systems Manager (SSM).\n//\n// For a specified resource ID, this API operation returns a list of compliance\n// statuses for different resource types. Currently, you can only specify one\n// resource ID per call. List results depend on the criteria specified in the\n// filter.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListComplianceItems for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidResourceType\n//     The resource type isn't valid. For example, if you are attempting to tag\n//     an EC2 instance, the instance must be a registered managed node.\n//\n//   - InvalidResourceId\n//     The resource ID isn't valid. Verify that you entered the correct ID and try\n//     again.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidFilter\n//     The filter name isn't valid. Verify the you entered the correct name and\n//     try again.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListComplianceItems\nfunc (c *SSM) ListComplianceItems(input *ListComplianceItemsInput) (*ListComplianceItemsOutput, error) {\n\treq, out := c.ListComplianceItemsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListComplianceItemsWithContext is the same as ListComplianceItems with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListComplianceItems for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListComplianceItemsWithContext(ctx aws.Context, input *ListComplianceItemsInput, opts ...request.Option) (*ListComplianceItemsOutput, error) {\n\treq, out := c.ListComplianceItemsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListComplianceItemsPages iterates over the pages of a ListComplianceItems operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListComplianceItems method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListComplianceItems operation.\n//\tpageNum := 0\n//\terr := client.ListComplianceItemsPages(params,\n//\t    func(page *ssm.ListComplianceItemsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) ListComplianceItemsPages(input *ListComplianceItemsInput, fn func(*ListComplianceItemsOutput, bool) bool) error {\n\treturn c.ListComplianceItemsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListComplianceItemsPagesWithContext same as ListComplianceItemsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListComplianceItemsPagesWithContext(ctx aws.Context, input *ListComplianceItemsInput, fn func(*ListComplianceItemsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListComplianceItemsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListComplianceItemsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListComplianceItemsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListComplianceSummaries = \"ListComplianceSummaries\"\n\n// ListComplianceSummariesRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListComplianceSummaries operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListComplianceSummaries for more information on using the ListComplianceSummaries\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListComplianceSummariesRequest method.\n//\treq, resp := client.ListComplianceSummariesRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListComplianceSummaries\nfunc (c *SSM) ListComplianceSummariesRequest(input *ListComplianceSummariesInput) (req *request.Request, output *ListComplianceSummariesOutput) {\n\top := &request.Operation{\n\t\tName:       opListComplianceSummaries,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListComplianceSummariesInput{}\n\t}\n\n\toutput = &ListComplianceSummariesOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListComplianceSummaries API operation for Amazon Simple Systems Manager (SSM).\n//\n// Returns a summary count of compliant and non-compliant resources for a compliance\n// type. For example, this call can return State Manager associations, patches,\n// or custom compliance types according to the filter criteria that you specify.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListComplianceSummaries for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidFilter\n//     The filter name isn't valid. Verify the you entered the correct name and\n//     try again.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListComplianceSummaries\nfunc (c *SSM) ListComplianceSummaries(input *ListComplianceSummariesInput) (*ListComplianceSummariesOutput, error) {\n\treq, out := c.ListComplianceSummariesRequest(input)\n\treturn out, req.Send()\n}\n\n// ListComplianceSummariesWithContext is the same as ListComplianceSummaries with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListComplianceSummaries for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListComplianceSummariesWithContext(ctx aws.Context, input *ListComplianceSummariesInput, opts ...request.Option) (*ListComplianceSummariesOutput, error) {\n\treq, out := c.ListComplianceSummariesRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListComplianceSummariesPages iterates over the pages of a ListComplianceSummaries operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListComplianceSummaries method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListComplianceSummaries operation.\n//\tpageNum := 0\n//\terr := client.ListComplianceSummariesPages(params,\n//\t    func(page *ssm.ListComplianceSummariesOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) ListComplianceSummariesPages(input *ListComplianceSummariesInput, fn func(*ListComplianceSummariesOutput, bool) bool) error {\n\treturn c.ListComplianceSummariesPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListComplianceSummariesPagesWithContext same as ListComplianceSummariesPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListComplianceSummariesPagesWithContext(ctx aws.Context, input *ListComplianceSummariesInput, fn func(*ListComplianceSummariesOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListComplianceSummariesInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListComplianceSummariesRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListComplianceSummariesOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListDocumentMetadataHistory = \"ListDocumentMetadataHistory\"\n\n// ListDocumentMetadataHistoryRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListDocumentMetadataHistory operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListDocumentMetadataHistory for more information on using the ListDocumentMetadataHistory\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListDocumentMetadataHistoryRequest method.\n//\treq, resp := client.ListDocumentMetadataHistoryRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocumentMetadataHistory\nfunc (c *SSM) ListDocumentMetadataHistoryRequest(input *ListDocumentMetadataHistoryInput) (req *request.Request, output *ListDocumentMetadataHistoryOutput) {\n\top := &request.Operation{\n\t\tName:       opListDocumentMetadataHistory,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &ListDocumentMetadataHistoryInput{}\n\t}\n\n\toutput = &ListDocumentMetadataHistoryOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListDocumentMetadataHistory API operation for Amazon Simple Systems Manager (SSM).\n//\n// Information about approval reviews for a version of a change template in\n// Change Manager.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListDocumentMetadataHistory for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidDocumentVersion\n//     The document version isn't valid or doesn't exist.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocumentMetadataHistory\nfunc (c *SSM) ListDocumentMetadataHistory(input *ListDocumentMetadataHistoryInput) (*ListDocumentMetadataHistoryOutput, error) {\n\treq, out := c.ListDocumentMetadataHistoryRequest(input)\n\treturn out, req.Send()\n}\n\n// ListDocumentMetadataHistoryWithContext is the same as ListDocumentMetadataHistory with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListDocumentMetadataHistory for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListDocumentMetadataHistoryWithContext(ctx aws.Context, input *ListDocumentMetadataHistoryInput, opts ...request.Option) (*ListDocumentMetadataHistoryOutput, error) {\n\treq, out := c.ListDocumentMetadataHistoryRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opListDocumentVersions = \"ListDocumentVersions\"\n\n// ListDocumentVersionsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListDocumentVersions operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListDocumentVersions for more information on using the ListDocumentVersions\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListDocumentVersionsRequest method.\n//\treq, resp := client.ListDocumentVersionsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocumentVersions\nfunc (c *SSM) ListDocumentVersionsRequest(input *ListDocumentVersionsInput) (req *request.Request, output *ListDocumentVersionsOutput) {\n\top := &request.Operation{\n\t\tName:       opListDocumentVersions,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListDocumentVersionsInput{}\n\t}\n\n\toutput = &ListDocumentVersionsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListDocumentVersions API operation for Amazon Simple Systems Manager (SSM).\n//\n// List all versions for a document.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListDocumentVersions for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocumentVersions\nfunc (c *SSM) ListDocumentVersions(input *ListDocumentVersionsInput) (*ListDocumentVersionsOutput, error) {\n\treq, out := c.ListDocumentVersionsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListDocumentVersionsWithContext is the same as ListDocumentVersions with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListDocumentVersions for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListDocumentVersionsWithContext(ctx aws.Context, input *ListDocumentVersionsInput, opts ...request.Option) (*ListDocumentVersionsOutput, error) {\n\treq, out := c.ListDocumentVersionsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListDocumentVersionsPages iterates over the pages of a ListDocumentVersions operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListDocumentVersions method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListDocumentVersions operation.\n//\tpageNum := 0\n//\terr := client.ListDocumentVersionsPages(params,\n//\t    func(page *ssm.ListDocumentVersionsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) ListDocumentVersionsPages(input *ListDocumentVersionsInput, fn func(*ListDocumentVersionsOutput, bool) bool) error {\n\treturn c.ListDocumentVersionsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListDocumentVersionsPagesWithContext same as ListDocumentVersionsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListDocumentVersionsPagesWithContext(ctx aws.Context, input *ListDocumentVersionsInput, fn func(*ListDocumentVersionsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListDocumentVersionsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListDocumentVersionsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListDocumentVersionsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListDocuments = \"ListDocuments\"\n\n// ListDocumentsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListDocuments operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListDocuments for more information on using the ListDocuments\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListDocumentsRequest method.\n//\treq, resp := client.ListDocumentsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocuments\nfunc (c *SSM) ListDocumentsRequest(input *ListDocumentsInput) (req *request.Request, output *ListDocumentsOutput) {\n\top := &request.Operation{\n\t\tName:       opListDocuments,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListDocumentsInput{}\n\t}\n\n\toutput = &ListDocumentsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListDocuments API operation for Amazon Simple Systems Manager (SSM).\n//\n// Returns all Systems Manager (SSM) documents in the current Amazon Web Services\n// account and Amazon Web Services Region. You can limit the results of this\n// request by using a filter.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListDocuments for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - InvalidFilterKey\n//     The specified key isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocuments\nfunc (c *SSM) ListDocuments(input *ListDocumentsInput) (*ListDocumentsOutput, error) {\n\treq, out := c.ListDocumentsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListDocumentsWithContext is the same as ListDocuments with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListDocuments for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListDocumentsWithContext(ctx aws.Context, input *ListDocumentsInput, opts ...request.Option) (*ListDocumentsOutput, error) {\n\treq, out := c.ListDocumentsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListDocumentsPages iterates over the pages of a ListDocuments operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListDocuments method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListDocuments operation.\n//\tpageNum := 0\n//\terr := client.ListDocumentsPages(params,\n//\t    func(page *ssm.ListDocumentsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) ListDocumentsPages(input *ListDocumentsInput, fn func(*ListDocumentsOutput, bool) bool) error {\n\treturn c.ListDocumentsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListDocumentsPagesWithContext same as ListDocumentsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListDocumentsPagesWithContext(ctx aws.Context, input *ListDocumentsInput, fn func(*ListDocumentsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListDocumentsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListDocumentsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListDocumentsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListInventoryEntries = \"ListInventoryEntries\"\n\n// ListInventoryEntriesRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListInventoryEntries operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListInventoryEntries for more information on using the ListInventoryEntries\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListInventoryEntriesRequest method.\n//\treq, resp := client.ListInventoryEntriesRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListInventoryEntries\nfunc (c *SSM) ListInventoryEntriesRequest(input *ListInventoryEntriesInput) (req *request.Request, output *ListInventoryEntriesOutput) {\n\top := &request.Operation{\n\t\tName:       opListInventoryEntries,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &ListInventoryEntriesInput{}\n\t}\n\n\toutput = &ListInventoryEntriesOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListInventoryEntries API operation for Amazon Simple Systems Manager (SSM).\n//\n// A list of inventory items returned by the request.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListInventoryEntries for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InvalidTypeNameException\n//     The parameter type name isn't valid.\n//\n//   - InvalidFilter\n//     The filter name isn't valid. Verify the you entered the correct name and\n//     try again.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListInventoryEntries\nfunc (c *SSM) ListInventoryEntries(input *ListInventoryEntriesInput) (*ListInventoryEntriesOutput, error) {\n\treq, out := c.ListInventoryEntriesRequest(input)\n\treturn out, req.Send()\n}\n\n// ListInventoryEntriesWithContext is the same as ListInventoryEntries with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListInventoryEntries for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListInventoryEntriesWithContext(ctx aws.Context, input *ListInventoryEntriesInput, opts ...request.Option) (*ListInventoryEntriesOutput, error) {\n\treq, out := c.ListInventoryEntriesRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opListOpsItemEvents = \"ListOpsItemEvents\"\n\n// ListOpsItemEventsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListOpsItemEvents operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListOpsItemEvents for more information on using the ListOpsItemEvents\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListOpsItemEventsRequest method.\n//\treq, resp := client.ListOpsItemEventsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListOpsItemEvents\nfunc (c *SSM) ListOpsItemEventsRequest(input *ListOpsItemEventsInput) (req *request.Request, output *ListOpsItemEventsOutput) {\n\top := &request.Operation{\n\t\tName:       opListOpsItemEvents,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListOpsItemEventsInput{}\n\t}\n\n\toutput = &ListOpsItemEventsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListOpsItemEvents API operation for Amazon Simple Systems Manager (SSM).\n//\n// Returns a list of all OpsItem events in the current Amazon Web Services Region\n// and Amazon Web Services account. You can limit the results to events associated\n// with specific OpsItems by specifying a filter.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListOpsItemEvents for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - OpsItemNotFoundException\n//     The specified OpsItem ID doesn't exist. Verify the ID and try again.\n//\n//   - OpsItemLimitExceededException\n//     The request caused OpsItems to exceed one or more quotas.\n//\n//   - OpsItemInvalidParameterException\n//     A specified parameter argument isn't valid. Verify the available arguments\n//     and try again.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListOpsItemEvents\nfunc (c *SSM) ListOpsItemEvents(input *ListOpsItemEventsInput) (*ListOpsItemEventsOutput, error) {\n\treq, out := c.ListOpsItemEventsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListOpsItemEventsWithContext is the same as ListOpsItemEvents with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListOpsItemEvents for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListOpsItemEventsWithContext(ctx aws.Context, input *ListOpsItemEventsInput, opts ...request.Option) (*ListOpsItemEventsOutput, error) {\n\treq, out := c.ListOpsItemEventsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListOpsItemEventsPages iterates over the pages of a ListOpsItemEvents operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListOpsItemEvents method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListOpsItemEvents operation.\n//\tpageNum := 0\n//\terr := client.ListOpsItemEventsPages(params,\n//\t    func(page *ssm.ListOpsItemEventsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) ListOpsItemEventsPages(input *ListOpsItemEventsInput, fn func(*ListOpsItemEventsOutput, bool) bool) error {\n\treturn c.ListOpsItemEventsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListOpsItemEventsPagesWithContext same as ListOpsItemEventsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListOpsItemEventsPagesWithContext(ctx aws.Context, input *ListOpsItemEventsInput, fn func(*ListOpsItemEventsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListOpsItemEventsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListOpsItemEventsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListOpsItemEventsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListOpsItemRelatedItems = \"ListOpsItemRelatedItems\"\n\n// ListOpsItemRelatedItemsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListOpsItemRelatedItems operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListOpsItemRelatedItems for more information on using the ListOpsItemRelatedItems\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListOpsItemRelatedItemsRequest method.\n//\treq, resp := client.ListOpsItemRelatedItemsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListOpsItemRelatedItems\nfunc (c *SSM) ListOpsItemRelatedItemsRequest(input *ListOpsItemRelatedItemsInput) (req *request.Request, output *ListOpsItemRelatedItemsOutput) {\n\top := &request.Operation{\n\t\tName:       opListOpsItemRelatedItems,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListOpsItemRelatedItemsInput{}\n\t}\n\n\toutput = &ListOpsItemRelatedItemsOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListOpsItemRelatedItems API operation for Amazon Simple Systems Manager (SSM).\n//\n// Lists all related-item resources associated with a Systems Manager OpsCenter\n// OpsItem. OpsCenter is a capability of Amazon Web Services Systems Manager.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListOpsItemRelatedItems for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - OpsItemInvalidParameterException\n//     A specified parameter argument isn't valid. Verify the available arguments\n//     and try again.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListOpsItemRelatedItems\nfunc (c *SSM) ListOpsItemRelatedItems(input *ListOpsItemRelatedItemsInput) (*ListOpsItemRelatedItemsOutput, error) {\n\treq, out := c.ListOpsItemRelatedItemsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListOpsItemRelatedItemsWithContext is the same as ListOpsItemRelatedItems with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListOpsItemRelatedItems for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListOpsItemRelatedItemsWithContext(ctx aws.Context, input *ListOpsItemRelatedItemsInput, opts ...request.Option) (*ListOpsItemRelatedItemsOutput, error) {\n\treq, out := c.ListOpsItemRelatedItemsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListOpsItemRelatedItemsPages iterates over the pages of a ListOpsItemRelatedItems operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListOpsItemRelatedItems method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListOpsItemRelatedItems operation.\n//\tpageNum := 0\n//\terr := client.ListOpsItemRelatedItemsPages(params,\n//\t    func(page *ssm.ListOpsItemRelatedItemsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) ListOpsItemRelatedItemsPages(input *ListOpsItemRelatedItemsInput, fn func(*ListOpsItemRelatedItemsOutput, bool) bool) error {\n\treturn c.ListOpsItemRelatedItemsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListOpsItemRelatedItemsPagesWithContext same as ListOpsItemRelatedItemsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListOpsItemRelatedItemsPagesWithContext(ctx aws.Context, input *ListOpsItemRelatedItemsInput, fn func(*ListOpsItemRelatedItemsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListOpsItemRelatedItemsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListOpsItemRelatedItemsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListOpsItemRelatedItemsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListOpsMetadata = \"ListOpsMetadata\"\n\n// ListOpsMetadataRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListOpsMetadata operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListOpsMetadata for more information on using the ListOpsMetadata\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListOpsMetadataRequest method.\n//\treq, resp := client.ListOpsMetadataRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListOpsMetadata\nfunc (c *SSM) ListOpsMetadataRequest(input *ListOpsMetadataInput) (req *request.Request, output *ListOpsMetadataOutput) {\n\top := &request.Operation{\n\t\tName:       opListOpsMetadata,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListOpsMetadataInput{}\n\t}\n\n\toutput = &ListOpsMetadataOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListOpsMetadata API operation for Amazon Simple Systems Manager (SSM).\n//\n// Amazon Web Services Systems Manager calls this API operation when displaying\n// all Application Manager OpsMetadata objects or blobs.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListOpsMetadata for usage and error information.\n//\n// Returned Error Types:\n//\n//   - OpsMetadataInvalidArgumentException\n//     One of the arguments passed is invalid.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListOpsMetadata\nfunc (c *SSM) ListOpsMetadata(input *ListOpsMetadataInput) (*ListOpsMetadataOutput, error) {\n\treq, out := c.ListOpsMetadataRequest(input)\n\treturn out, req.Send()\n}\n\n// ListOpsMetadataWithContext is the same as ListOpsMetadata with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListOpsMetadata for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListOpsMetadataWithContext(ctx aws.Context, input *ListOpsMetadataInput, opts ...request.Option) (*ListOpsMetadataOutput, error) {\n\treq, out := c.ListOpsMetadataRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListOpsMetadataPages iterates over the pages of a ListOpsMetadata operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListOpsMetadata method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListOpsMetadata operation.\n//\tpageNum := 0\n//\terr := client.ListOpsMetadataPages(params,\n//\t    func(page *ssm.ListOpsMetadataOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) ListOpsMetadataPages(input *ListOpsMetadataInput, fn func(*ListOpsMetadataOutput, bool) bool) error {\n\treturn c.ListOpsMetadataPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListOpsMetadataPagesWithContext same as ListOpsMetadataPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListOpsMetadataPagesWithContext(ctx aws.Context, input *ListOpsMetadataInput, fn func(*ListOpsMetadataOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListOpsMetadataInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListOpsMetadataRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListOpsMetadataOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListResourceComplianceSummaries = \"ListResourceComplianceSummaries\"\n\n// ListResourceComplianceSummariesRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListResourceComplianceSummaries operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListResourceComplianceSummaries for more information on using the ListResourceComplianceSummaries\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListResourceComplianceSummariesRequest method.\n//\treq, resp := client.ListResourceComplianceSummariesRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListResourceComplianceSummaries\nfunc (c *SSM) ListResourceComplianceSummariesRequest(input *ListResourceComplianceSummariesInput) (req *request.Request, output *ListResourceComplianceSummariesOutput) {\n\top := &request.Operation{\n\t\tName:       opListResourceComplianceSummaries,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListResourceComplianceSummariesInput{}\n\t}\n\n\toutput = &ListResourceComplianceSummariesOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListResourceComplianceSummaries API operation for Amazon Simple Systems Manager (SSM).\n//\n// Returns a resource-level summary count. The summary includes information\n// about compliant and non-compliant statuses and detailed compliance-item severity\n// counts, according to the filter criteria you specify.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListResourceComplianceSummaries for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidFilter\n//     The filter name isn't valid. Verify the you entered the correct name and\n//     try again.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListResourceComplianceSummaries\nfunc (c *SSM) ListResourceComplianceSummaries(input *ListResourceComplianceSummariesInput) (*ListResourceComplianceSummariesOutput, error) {\n\treq, out := c.ListResourceComplianceSummariesRequest(input)\n\treturn out, req.Send()\n}\n\n// ListResourceComplianceSummariesWithContext is the same as ListResourceComplianceSummaries with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListResourceComplianceSummaries for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListResourceComplianceSummariesWithContext(ctx aws.Context, input *ListResourceComplianceSummariesInput, opts ...request.Option) (*ListResourceComplianceSummariesOutput, error) {\n\treq, out := c.ListResourceComplianceSummariesRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListResourceComplianceSummariesPages iterates over the pages of a ListResourceComplianceSummaries operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListResourceComplianceSummaries method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListResourceComplianceSummaries operation.\n//\tpageNum := 0\n//\terr := client.ListResourceComplianceSummariesPages(params,\n//\t    func(page *ssm.ListResourceComplianceSummariesOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) ListResourceComplianceSummariesPages(input *ListResourceComplianceSummariesInput, fn func(*ListResourceComplianceSummariesOutput, bool) bool) error {\n\treturn c.ListResourceComplianceSummariesPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListResourceComplianceSummariesPagesWithContext same as ListResourceComplianceSummariesPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListResourceComplianceSummariesPagesWithContext(ctx aws.Context, input *ListResourceComplianceSummariesInput, fn func(*ListResourceComplianceSummariesOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListResourceComplianceSummariesInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListResourceComplianceSummariesRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListResourceComplianceSummariesOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListResourceDataSync = \"ListResourceDataSync\"\n\n// ListResourceDataSyncRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListResourceDataSync operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListResourceDataSync for more information on using the ListResourceDataSync\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListResourceDataSyncRequest method.\n//\treq, resp := client.ListResourceDataSyncRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListResourceDataSync\nfunc (c *SSM) ListResourceDataSyncRequest(input *ListResourceDataSyncInput) (req *request.Request, output *ListResourceDataSyncOutput) {\n\top := &request.Operation{\n\t\tName:       opListResourceDataSync,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"NextToken\"},\n\t\t\tOutputTokens:    []string{\"NextToken\"},\n\t\t\tLimitToken:      \"MaxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListResourceDataSyncInput{}\n\t}\n\n\toutput = &ListResourceDataSyncOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListResourceDataSync API operation for Amazon Simple Systems Manager (SSM).\n//\n// Lists your resource data sync configurations. Includes information about\n// the last time a sync attempted to start, the last sync status, and the last\n// time a sync successfully completed.\n//\n// The number of sync configurations might be too large to return using a single\n// call to ListResourceDataSync. You can limit the number of sync configurations\n// returned by using the MaxResults parameter. To determine whether there are\n// more sync configurations to list, check the value of NextToken in the output.\n// If there are more sync configurations to list, you can request them by specifying\n// the NextToken returned in the call to the parameter of a subsequent call.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListResourceDataSync for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceDataSyncInvalidConfigurationException\n//     The specified sync configuration is invalid.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidNextToken\n//     The specified token isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListResourceDataSync\nfunc (c *SSM) ListResourceDataSync(input *ListResourceDataSyncInput) (*ListResourceDataSyncOutput, error) {\n\treq, out := c.ListResourceDataSyncRequest(input)\n\treturn out, req.Send()\n}\n\n// ListResourceDataSyncWithContext is the same as ListResourceDataSync with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListResourceDataSync for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListResourceDataSyncWithContext(ctx aws.Context, input *ListResourceDataSyncInput, opts ...request.Option) (*ListResourceDataSyncOutput, error) {\n\treq, out := c.ListResourceDataSyncRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListResourceDataSyncPages iterates over the pages of a ListResourceDataSync operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListResourceDataSync method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListResourceDataSync operation.\n//\tpageNum := 0\n//\terr := client.ListResourceDataSyncPages(params,\n//\t    func(page *ssm.ListResourceDataSyncOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSM) ListResourceDataSyncPages(input *ListResourceDataSyncInput, fn func(*ListResourceDataSyncOutput, bool) bool) error {\n\treturn c.ListResourceDataSyncPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListResourceDataSyncPagesWithContext same as ListResourceDataSyncPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListResourceDataSyncPagesWithContext(ctx aws.Context, input *ListResourceDataSyncInput, fn func(*ListResourceDataSyncOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListResourceDataSyncInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListResourceDataSyncRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListResourceDataSyncOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListTagsForResource = \"ListTagsForResource\"\n\n// ListTagsForResourceRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListTagsForResource operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListTagsForResource for more information on using the ListTagsForResource\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListTagsForResourceRequest method.\n//\treq, resp := client.ListTagsForResourceRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListTagsForResource\nfunc (c *SSM) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {\n\top := &request.Operation{\n\t\tName:       opListTagsForResource,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &ListTagsForResourceInput{}\n\t}\n\n\toutput = &ListTagsForResourceOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ListTagsForResource API operation for Amazon Simple Systems Manager (SSM).\n//\n// Returns a list of the tags assigned to the specified resource.\n//\n// For information about the ID format for each supported resource type, see\n// AddTagsToResource.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ListTagsForResource for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidResourceType\n//     The resource type isn't valid. For example, if you are attempting to tag\n//     an EC2 instance, the instance must be a registered managed node.\n//\n//   - InvalidResourceId\n//     The resource ID isn't valid. Verify that you entered the correct ID and try\n//     again.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListTagsForResource\nfunc (c *SSM) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {\n\treq, out := c.ListTagsForResourceRequest(input)\n\treturn out, req.Send()\n}\n\n// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListTagsForResource for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) {\n\treq, out := c.ListTagsForResourceRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opModifyDocumentPermission = \"ModifyDocumentPermission\"\n\n// ModifyDocumentPermissionRequest generates a \"aws/request.Request\" representing the\n// client's request for the ModifyDocumentPermission operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ModifyDocumentPermission for more information on using the ModifyDocumentPermission\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ModifyDocumentPermissionRequest method.\n//\treq, resp := client.ModifyDocumentPermissionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ModifyDocumentPermission\nfunc (c *SSM) ModifyDocumentPermissionRequest(input *ModifyDocumentPermissionInput) (req *request.Request, output *ModifyDocumentPermissionOutput) {\n\top := &request.Operation{\n\t\tName:       opModifyDocumentPermission,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &ModifyDocumentPermissionInput{}\n\t}\n\n\toutput = &ModifyDocumentPermissionOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// ModifyDocumentPermission API operation for Amazon Simple Systems Manager (SSM).\n//\n// Shares a Amazon Web Services Systems Manager document (SSM document)publicly\n// or privately. If you share a document privately, you must specify the Amazon\n// Web Services user IDs for those people who can use the document. If you share\n// a document publicly, you must specify All as the account ID.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ModifyDocumentPermission for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidPermissionType\n//     The permission type isn't supported. Share is the only supported permission\n//     type.\n//\n//   - DocumentPermissionLimit\n//     The document can't be shared with more Amazon Web Services accounts. You\n//     can specify a maximum of 20 accounts per API operation to share a private\n//     document.\n//\n//     By default, you can share a private document with a maximum of 1,000 accounts\n//     and publicly share up to five documents.\n//\n//     If you need to increase the quota for privately or publicly shared Systems\n//     Manager documents, contact Amazon Web Services Support.\n//\n//   - DocumentLimitExceeded\n//     You can have at most 500 active SSM documents.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ModifyDocumentPermission\nfunc (c *SSM) ModifyDocumentPermission(input *ModifyDocumentPermissionInput) (*ModifyDocumentPermissionOutput, error) {\n\treq, out := c.ModifyDocumentPermissionRequest(input)\n\treturn out, req.Send()\n}\n\n// ModifyDocumentPermissionWithContext is the same as ModifyDocumentPermission with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ModifyDocumentPermission for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ModifyDocumentPermissionWithContext(ctx aws.Context, input *ModifyDocumentPermissionInput, opts ...request.Option) (*ModifyDocumentPermissionOutput, error) {\n\treq, out := c.ModifyDocumentPermissionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opPutComplianceItems = \"PutComplianceItems\"\n\n// PutComplianceItemsRequest generates a \"aws/request.Request\" representing the\n// client's request for the PutComplianceItems operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See PutComplianceItems for more information on using the PutComplianceItems\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the PutComplianceItemsRequest method.\n//\treq, resp := client.PutComplianceItemsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutComplianceItems\nfunc (c *SSM) PutComplianceItemsRequest(input *PutComplianceItemsInput) (req *request.Request, output *PutComplianceItemsOutput) {\n\top := &request.Operation{\n\t\tName:       opPutComplianceItems,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &PutComplianceItemsInput{}\n\t}\n\n\toutput = &PutComplianceItemsOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// PutComplianceItems API operation for Amazon Simple Systems Manager (SSM).\n//\n// Registers a compliance type and other compliance details on a designated\n// resource. This operation lets you register custom compliance details with\n// a resource. This call overwrites existing compliance information on the resource,\n// so you must provide a full list of compliance items each time that you send\n// the request.\n//\n// ComplianceType can be one of the following:\n//\n//   - ExecutionId: The execution ID when the patch, association, or custom\n//     compliance item was applied.\n//\n//   - ExecutionType: Specify patch, association, or Custom:string.\n//\n//   - ExecutionTime. The time the patch, association, or custom compliance\n//     item was applied to the managed node.\n//\n//   - Id: The patch, association, or custom compliance ID.\n//\n//   - Title: A title.\n//\n//   - Status: The status of the compliance item. For example, approved for\n//     patches, or Failed for associations.\n//\n//   - Severity: A patch severity. For example, Critical.\n//\n//   - DocumentName: An SSM document name. For example, AWS-RunPatchBaseline.\n//\n//   - DocumentVersion: An SSM document version number. For example, 4.\n//\n//   - Classification: A patch classification. For example, security updates.\n//\n//   - PatchBaselineId: A patch baseline ID.\n//\n//   - PatchSeverity: A patch severity. For example, Critical.\n//\n//   - PatchState: A patch state. For example, InstancesWithFailedPatches.\n//\n//   - PatchGroup: The name of a patch group.\n//\n//   - InstalledTime: The time the association, patch, or custom compliance\n//     item was applied to the resource. Specify the time by using the following\n//     format: yyyy-MM-dd'T'HH:mm:ss'Z'\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation PutComplianceItems for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidItemContentException\n//     One or more content items isn't valid.\n//\n//   - TotalSizeLimitExceededException\n//     The size of inventory data has exceeded the total size limit for the resource.\n//\n//   - ItemSizeLimitExceededException\n//     The inventory item size has exceeded the size limit.\n//\n//   - ComplianceTypeCountLimitExceededException\n//     You specified too many custom compliance types. You can specify a maximum\n//     of 10 different types.\n//\n//   - InvalidResourceType\n//     The resource type isn't valid. For example, if you are attempting to tag\n//     an EC2 instance, the instance must be a registered managed node.\n//\n//   - InvalidResourceId\n//     The resource ID isn't valid. Verify that you entered the correct ID and try\n//     again.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutComplianceItems\nfunc (c *SSM) PutComplianceItems(input *PutComplianceItemsInput) (*PutComplianceItemsOutput, error) {\n\treq, out := c.PutComplianceItemsRequest(input)\n\treturn out, req.Send()\n}\n\n// PutComplianceItemsWithContext is the same as PutComplianceItems with the addition of\n// the ability to pass a context and additional request options.\n//\n// See PutComplianceItems for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) PutComplianceItemsWithContext(ctx aws.Context, input *PutComplianceItemsInput, opts ...request.Option) (*PutComplianceItemsOutput, error) {\n\treq, out := c.PutComplianceItemsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opPutInventory = \"PutInventory\"\n\n// PutInventoryRequest generates a \"aws/request.Request\" representing the\n// client's request for the PutInventory operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See PutInventory for more information on using the PutInventory\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the PutInventoryRequest method.\n//\treq, resp := client.PutInventoryRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutInventory\nfunc (c *SSM) PutInventoryRequest(input *PutInventoryInput) (req *request.Request, output *PutInventoryOutput) {\n\top := &request.Operation{\n\t\tName:       opPutInventory,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &PutInventoryInput{}\n\t}\n\n\toutput = &PutInventoryOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// PutInventory API operation for Amazon Simple Systems Manager (SSM).\n//\n// Bulk update custom inventory items on one or more managed nodes. The request\n// adds an inventory item, if it doesn't already exist, or updates an inventory\n// item, if it does exist.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation PutInventory for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InvalidTypeNameException\n//     The parameter type name isn't valid.\n//\n//   - InvalidItemContentException\n//     One or more content items isn't valid.\n//\n//   - TotalSizeLimitExceededException\n//     The size of inventory data has exceeded the total size limit for the resource.\n//\n//   - ItemSizeLimitExceededException\n//     The inventory item size has exceeded the size limit.\n//\n//   - ItemContentMismatchException\n//     The inventory item has invalid content.\n//\n//   - CustomSchemaCountLimitExceededException\n//     You have exceeded the limit for custom schemas. Delete one or more custom\n//     schemas and try again.\n//\n//   - UnsupportedInventorySchemaVersionException\n//     Inventory item type schema version has to match supported versions in the\n//     service. Check output of GetInventorySchema to see the available schema version\n//     for each type.\n//\n//   - UnsupportedInventoryItemContextException\n//     The Context attribute that you specified for the InventoryItem isn't allowed\n//     for this inventory type. You can only use the Context attribute with inventory\n//     types like AWS:ComplianceItem.\n//\n//   - InvalidInventoryItemContextException\n//     You specified invalid keys or values in the Context attribute for InventoryItem.\n//     Verify the keys and values, and try again.\n//\n//   - SubTypeCountLimitExceededException\n//     The sub-type count exceeded the limit for the inventory type.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutInventory\nfunc (c *SSM) PutInventory(input *PutInventoryInput) (*PutInventoryOutput, error) {\n\treq, out := c.PutInventoryRequest(input)\n\treturn out, req.Send()\n}\n\n// PutInventoryWithContext is the same as PutInventory with the addition of\n// the ability to pass a context and additional request options.\n//\n// See PutInventory for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) PutInventoryWithContext(ctx aws.Context, input *PutInventoryInput, opts ...request.Option) (*PutInventoryOutput, error) {\n\treq, out := c.PutInventoryRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opPutParameter = \"PutParameter\"\n\n// PutParameterRequest generates a \"aws/request.Request\" representing the\n// client's request for the PutParameter operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See PutParameter for more information on using the PutParameter\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the PutParameterRequest method.\n//\treq, resp := client.PutParameterRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutParameter\nfunc (c *SSM) PutParameterRequest(input *PutParameterInput) (req *request.Request, output *PutParameterOutput) {\n\top := &request.Operation{\n\t\tName:       opPutParameter,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &PutParameterInput{}\n\t}\n\n\toutput = &PutParameterOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// PutParameter API operation for Amazon Simple Systems Manager (SSM).\n//\n// Add a parameter to the system.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation PutParameter for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidKeyId\n//     The query key ID isn't valid.\n//\n//   - ParameterLimitExceeded\n//     You have exceeded the number of parameters for this Amazon Web Services account.\n//     Delete one or more parameters and try again.\n//\n//   - TooManyUpdates\n//     There are concurrent updates for a resource that supports one update at a\n//     time.\n//\n//   - ParameterAlreadyExists\n//     The parameter already exists. You can't create duplicate parameters.\n//\n//   - HierarchyLevelLimitExceededException\n//     A hierarchy can have a maximum of 15 levels. For more information, see Requirements\n//     and constraints for parameter names (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-parameter-name-constraints.html)\n//     in the Amazon Web Services Systems Manager User Guide.\n//\n//   - HierarchyTypeMismatchException\n//     Parameter Store doesn't support changing a parameter type in a hierarchy.\n//     For example, you can't change a parameter from a String type to a SecureString\n//     type. You must create a new, unique parameter.\n//\n//   - InvalidAllowedPatternException\n//     The request doesn't meet the regular expression requirement.\n//\n//   - ParameterMaxVersionLimitExceeded\n//     Parameter Store retains the 100 most recently created versions of a parameter.\n//     After this number of versions has been created, Parameter Store deletes the\n//     oldest version when a new one is created. However, if the oldest version\n//     has a label attached to it, Parameter Store won't delete the version and\n//     instead presents this error message:\n//\n//     An error occurred (ParameterMaxVersionLimitExceeded) when calling the PutParameter\n//     operation: You attempted to create a new version of parameter-name by calling\n//     the PutParameter API with the overwrite flag. Version version-number, the\n//     oldest version, can't be deleted because it has a label associated with it.\n//     Move the label to another version of the parameter, and try again.\n//\n//     This safeguard is to prevent parameter versions with mission critical labels\n//     assigned to them from being deleted. To continue creating new parameters,\n//     first move the label from the oldest version of the parameter to a newer\n//     one for use in your operations. For information about moving parameter labels,\n//     see Move a parameter label (console) (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-labels.html#sysman-paramstore-labels-console-move)\n//     or Move a parameter label (CLI) (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-labels.html#sysman-paramstore-labels-cli-move)\n//     in the Amazon Web Services Systems Manager User Guide.\n//\n//   - ParameterPatternMismatchException\n//     The parameter name isn't valid.\n//\n//   - UnsupportedParameterType\n//     The parameter type isn't supported.\n//\n//   - PoliciesLimitExceededException\n//     You specified more than the maximum number of allowed policies for the parameter.\n//     The maximum is 10.\n//\n//   - InvalidPolicyTypeException\n//     The policy type isn't supported. Parameter Store supports the following policy\n//     types: Expiration, ExpirationNotification, and NoChangeNotification.\n//\n//   - InvalidPolicyAttributeException\n//     A policy attribute or its value is invalid.\n//\n//   - IncompatiblePolicyException\n//     There is a conflict in the policies specified for this parameter. You can't,\n//     for example, specify two Expiration policies for a parameter. Review your\n//     policies, and try again.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutParameter\nfunc (c *SSM) PutParameter(input *PutParameterInput) (*PutParameterOutput, error) {\n\treq, out := c.PutParameterRequest(input)\n\treturn out, req.Send()\n}\n\n// PutParameterWithContext is the same as PutParameter with the addition of\n// the ability to pass a context and additional request options.\n//\n// See PutParameter for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) PutParameterWithContext(ctx aws.Context, input *PutParameterInput, opts ...request.Option) (*PutParameterOutput, error) {\n\treq, out := c.PutParameterRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opPutResourcePolicy = \"PutResourcePolicy\"\n\n// PutResourcePolicyRequest generates a \"aws/request.Request\" representing the\n// client's request for the PutResourcePolicy operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See PutResourcePolicy for more information on using the PutResourcePolicy\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the PutResourcePolicyRequest method.\n//\treq, resp := client.PutResourcePolicyRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutResourcePolicy\nfunc (c *SSM) PutResourcePolicyRequest(input *PutResourcePolicyInput) (req *request.Request, output *PutResourcePolicyOutput) {\n\top := &request.Operation{\n\t\tName:       opPutResourcePolicy,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &PutResourcePolicyInput{}\n\t}\n\n\toutput = &PutResourcePolicyOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// PutResourcePolicy API operation for Amazon Simple Systems Manager (SSM).\n//\n// Creates or updates a Systems Manager resource policy. A resource policy helps\n// you to define the IAM entity (for example, an Amazon Web Services account)\n// that can manage your Systems Manager resources. Currently, OpsItemGroup is\n// the only resource that supports Systems Manager resource policies. The resource\n// policy for OpsItemGroup enables Amazon Web Services accounts to view and\n// interact with OpsCenter operational work items (OpsItems).\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation PutResourcePolicy for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - ResourcePolicyInvalidParameterException\n//     One or more parameters specified for the call aren't valid. Verify the parameters\n//     and their values and try again.\n//\n//   - ResourcePolicyLimitExceededException\n//     The PutResourcePolicy API action enforces two limits. A policy can't be greater\n//     than 1024 bytes in size. And only one policy can be attached to OpsItemGroup.\n//     Verify these limits and try again.\n//\n//   - ResourcePolicyConflictException\n//     The hash provided in the call doesn't match the stored hash. This exception\n//     is thrown when trying to update an obsolete policy version or when multiple\n//     requests to update a policy are sent.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/PutResourcePolicy\nfunc (c *SSM) PutResourcePolicy(input *PutResourcePolicyInput) (*PutResourcePolicyOutput, error) {\n\treq, out := c.PutResourcePolicyRequest(input)\n\treturn out, req.Send()\n}\n\n// PutResourcePolicyWithContext is the same as PutResourcePolicy with the addition of\n// the ability to pass a context and additional request options.\n//\n// See PutResourcePolicy for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) PutResourcePolicyWithContext(ctx aws.Context, input *PutResourcePolicyInput, opts ...request.Option) (*PutResourcePolicyOutput, error) {\n\treq, out := c.PutResourcePolicyRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opRegisterDefaultPatchBaseline = \"RegisterDefaultPatchBaseline\"\n\n// RegisterDefaultPatchBaselineRequest generates a \"aws/request.Request\" representing the\n// client's request for the RegisterDefaultPatchBaseline operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See RegisterDefaultPatchBaseline for more information on using the RegisterDefaultPatchBaseline\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the RegisterDefaultPatchBaselineRequest method.\n//\treq, resp := client.RegisterDefaultPatchBaselineRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterDefaultPatchBaseline\nfunc (c *SSM) RegisterDefaultPatchBaselineRequest(input *RegisterDefaultPatchBaselineInput) (req *request.Request, output *RegisterDefaultPatchBaselineOutput) {\n\top := &request.Operation{\n\t\tName:       opRegisterDefaultPatchBaseline,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &RegisterDefaultPatchBaselineInput{}\n\t}\n\n\toutput = &RegisterDefaultPatchBaselineOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// RegisterDefaultPatchBaseline API operation for Amazon Simple Systems Manager (SSM).\n//\n// Defines the default patch baseline for the relevant operating system.\n//\n// To reset the Amazon Web Services-predefined patch baseline as the default,\n// specify the full patch baseline Amazon Resource Name (ARN) as the baseline\n// ID value. For example, for CentOS, specify arn:aws:ssm:us-east-2:733109147000:patchbaseline/pb-0574b43a65ea646ed\n// instead of pb-0574b43a65ea646ed.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation RegisterDefaultPatchBaseline for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidResourceId\n//     The resource ID isn't valid. Verify that you entered the correct ID and try\n//     again.\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterDefaultPatchBaseline\nfunc (c *SSM) RegisterDefaultPatchBaseline(input *RegisterDefaultPatchBaselineInput) (*RegisterDefaultPatchBaselineOutput, error) {\n\treq, out := c.RegisterDefaultPatchBaselineRequest(input)\n\treturn out, req.Send()\n}\n\n// RegisterDefaultPatchBaselineWithContext is the same as RegisterDefaultPatchBaseline with the addition of\n// the ability to pass a context and additional request options.\n//\n// See RegisterDefaultPatchBaseline for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) RegisterDefaultPatchBaselineWithContext(ctx aws.Context, input *RegisterDefaultPatchBaselineInput, opts ...request.Option) (*RegisterDefaultPatchBaselineOutput, error) {\n\treq, out := c.RegisterDefaultPatchBaselineRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opRegisterPatchBaselineForPatchGroup = \"RegisterPatchBaselineForPatchGroup\"\n\n// RegisterPatchBaselineForPatchGroupRequest generates a \"aws/request.Request\" representing the\n// client's request for the RegisterPatchBaselineForPatchGroup operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See RegisterPatchBaselineForPatchGroup for more information on using the RegisterPatchBaselineForPatchGroup\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the RegisterPatchBaselineForPatchGroupRequest method.\n//\treq, resp := client.RegisterPatchBaselineForPatchGroupRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterPatchBaselineForPatchGroup\nfunc (c *SSM) RegisterPatchBaselineForPatchGroupRequest(input *RegisterPatchBaselineForPatchGroupInput) (req *request.Request, output *RegisterPatchBaselineForPatchGroupOutput) {\n\top := &request.Operation{\n\t\tName:       opRegisterPatchBaselineForPatchGroup,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &RegisterPatchBaselineForPatchGroupInput{}\n\t}\n\n\toutput = &RegisterPatchBaselineForPatchGroupOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// RegisterPatchBaselineForPatchGroup API operation for Amazon Simple Systems Manager (SSM).\n//\n// Registers a patch baseline for a patch group.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation RegisterPatchBaselineForPatchGroup for usage and error information.\n//\n// Returned Error Types:\n//\n//   - AlreadyExistsException\n//     Error returned if an attempt is made to register a patch group with a patch\n//     baseline that is already registered with a different patch baseline.\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InvalidResourceId\n//     The resource ID isn't valid. Verify that you entered the correct ID and try\n//     again.\n//\n//   - ResourceLimitExceededException\n//     Error returned when the caller has exceeded the default resource quotas.\n//     For example, too many maintenance windows or patch baselines have been created.\n//\n//     For information about resource quotas in Systems Manager, see Systems Manager\n//     service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterPatchBaselineForPatchGroup\nfunc (c *SSM) RegisterPatchBaselineForPatchGroup(input *RegisterPatchBaselineForPatchGroupInput) (*RegisterPatchBaselineForPatchGroupOutput, error) {\n\treq, out := c.RegisterPatchBaselineForPatchGroupRequest(input)\n\treturn out, req.Send()\n}\n\n// RegisterPatchBaselineForPatchGroupWithContext is the same as RegisterPatchBaselineForPatchGroup with the addition of\n// the ability to pass a context and additional request options.\n//\n// See RegisterPatchBaselineForPatchGroup for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) RegisterPatchBaselineForPatchGroupWithContext(ctx aws.Context, input *RegisterPatchBaselineForPatchGroupInput, opts ...request.Option) (*RegisterPatchBaselineForPatchGroupOutput, error) {\n\treq, out := c.RegisterPatchBaselineForPatchGroupRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opRegisterTargetWithMaintenanceWindow = \"RegisterTargetWithMaintenanceWindow\"\n\n// RegisterTargetWithMaintenanceWindowRequest generates a \"aws/request.Request\" representing the\n// client's request for the RegisterTargetWithMaintenanceWindow operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See RegisterTargetWithMaintenanceWindow for more information on using the RegisterTargetWithMaintenanceWindow\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the RegisterTargetWithMaintenanceWindowRequest method.\n//\treq, resp := client.RegisterTargetWithMaintenanceWindowRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterTargetWithMaintenanceWindow\nfunc (c *SSM) RegisterTargetWithMaintenanceWindowRequest(input *RegisterTargetWithMaintenanceWindowInput) (req *request.Request, output *RegisterTargetWithMaintenanceWindowOutput) {\n\top := &request.Operation{\n\t\tName:       opRegisterTargetWithMaintenanceWindow,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &RegisterTargetWithMaintenanceWindowInput{}\n\t}\n\n\toutput = &RegisterTargetWithMaintenanceWindowOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// RegisterTargetWithMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).\n//\n// Registers a target with a maintenance window.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation RegisterTargetWithMaintenanceWindow for usage and error information.\n//\n// Returned Error Types:\n//\n//   - IdempotentParameterMismatch\n//     Error returned when an idempotent operation is retried and the parameters\n//     don't match the original call to the API with the same idempotency token.\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - ResourceLimitExceededException\n//     Error returned when the caller has exceeded the default resource quotas.\n//     For example, too many maintenance windows or patch baselines have been created.\n//\n//     For information about resource quotas in Systems Manager, see Systems Manager\n//     service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterTargetWithMaintenanceWindow\nfunc (c *SSM) RegisterTargetWithMaintenanceWindow(input *RegisterTargetWithMaintenanceWindowInput) (*RegisterTargetWithMaintenanceWindowOutput, error) {\n\treq, out := c.RegisterTargetWithMaintenanceWindowRequest(input)\n\treturn out, req.Send()\n}\n\n// RegisterTargetWithMaintenanceWindowWithContext is the same as RegisterTargetWithMaintenanceWindow with the addition of\n// the ability to pass a context and additional request options.\n//\n// See RegisterTargetWithMaintenanceWindow for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) RegisterTargetWithMaintenanceWindowWithContext(ctx aws.Context, input *RegisterTargetWithMaintenanceWindowInput, opts ...request.Option) (*RegisterTargetWithMaintenanceWindowOutput, error) {\n\treq, out := c.RegisterTargetWithMaintenanceWindowRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opRegisterTaskWithMaintenanceWindow = \"RegisterTaskWithMaintenanceWindow\"\n\n// RegisterTaskWithMaintenanceWindowRequest generates a \"aws/request.Request\" representing the\n// client's request for the RegisterTaskWithMaintenanceWindow operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See RegisterTaskWithMaintenanceWindow for more information on using the RegisterTaskWithMaintenanceWindow\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the RegisterTaskWithMaintenanceWindowRequest method.\n//\treq, resp := client.RegisterTaskWithMaintenanceWindowRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterTaskWithMaintenanceWindow\nfunc (c *SSM) RegisterTaskWithMaintenanceWindowRequest(input *RegisterTaskWithMaintenanceWindowInput) (req *request.Request, output *RegisterTaskWithMaintenanceWindowOutput) {\n\top := &request.Operation{\n\t\tName:       opRegisterTaskWithMaintenanceWindow,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &RegisterTaskWithMaintenanceWindowInput{}\n\t}\n\n\toutput = &RegisterTaskWithMaintenanceWindowOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// RegisterTaskWithMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).\n//\n// Adds a new task to a maintenance window.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation RegisterTaskWithMaintenanceWindow for usage and error information.\n//\n// Returned Error Types:\n//\n//   - IdempotentParameterMismatch\n//     Error returned when an idempotent operation is retried and the parameters\n//     don't match the original call to the API with the same idempotency token.\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - ResourceLimitExceededException\n//     Error returned when the caller has exceeded the default resource quotas.\n//     For example, too many maintenance windows or patch baselines have been created.\n//\n//     For information about resource quotas in Systems Manager, see Systems Manager\n//     service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - FeatureNotAvailableException\n//     You attempted to register a LAMBDA or STEP_FUNCTIONS task in a region where\n//     the corresponding service isn't available.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RegisterTaskWithMaintenanceWindow\nfunc (c *SSM) RegisterTaskWithMaintenanceWindow(input *RegisterTaskWithMaintenanceWindowInput) (*RegisterTaskWithMaintenanceWindowOutput, error) {\n\treq, out := c.RegisterTaskWithMaintenanceWindowRequest(input)\n\treturn out, req.Send()\n}\n\n// RegisterTaskWithMaintenanceWindowWithContext is the same as RegisterTaskWithMaintenanceWindow with the addition of\n// the ability to pass a context and additional request options.\n//\n// See RegisterTaskWithMaintenanceWindow for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) RegisterTaskWithMaintenanceWindowWithContext(ctx aws.Context, input *RegisterTaskWithMaintenanceWindowInput, opts ...request.Option) (*RegisterTaskWithMaintenanceWindowOutput, error) {\n\treq, out := c.RegisterTaskWithMaintenanceWindowRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opRemoveTagsFromResource = \"RemoveTagsFromResource\"\n\n// RemoveTagsFromResourceRequest generates a \"aws/request.Request\" representing the\n// client's request for the RemoveTagsFromResource operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See RemoveTagsFromResource for more information on using the RemoveTagsFromResource\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the RemoveTagsFromResourceRequest method.\n//\treq, resp := client.RemoveTagsFromResourceRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RemoveTagsFromResource\nfunc (c *SSM) RemoveTagsFromResourceRequest(input *RemoveTagsFromResourceInput) (req *request.Request, output *RemoveTagsFromResourceOutput) {\n\top := &request.Operation{\n\t\tName:       opRemoveTagsFromResource,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &RemoveTagsFromResourceInput{}\n\t}\n\n\toutput = &RemoveTagsFromResourceOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// RemoveTagsFromResource API operation for Amazon Simple Systems Manager (SSM).\n//\n// Removes tag keys from the specified resource.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation RemoveTagsFromResource for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidResourceType\n//     The resource type isn't valid. For example, if you are attempting to tag\n//     an EC2 instance, the instance must be a registered managed node.\n//\n//   - InvalidResourceId\n//     The resource ID isn't valid. Verify that you entered the correct ID and try\n//     again.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - TooManyUpdates\n//     There are concurrent updates for a resource that supports one update at a\n//     time.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/RemoveTagsFromResource\nfunc (c *SSM) RemoveTagsFromResource(input *RemoveTagsFromResourceInput) (*RemoveTagsFromResourceOutput, error) {\n\treq, out := c.RemoveTagsFromResourceRequest(input)\n\treturn out, req.Send()\n}\n\n// RemoveTagsFromResourceWithContext is the same as RemoveTagsFromResource with the addition of\n// the ability to pass a context and additional request options.\n//\n// See RemoveTagsFromResource for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) RemoveTagsFromResourceWithContext(ctx aws.Context, input *RemoveTagsFromResourceInput, opts ...request.Option) (*RemoveTagsFromResourceOutput, error) {\n\treq, out := c.RemoveTagsFromResourceRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opResetServiceSetting = \"ResetServiceSetting\"\n\n// ResetServiceSettingRequest generates a \"aws/request.Request\" representing the\n// client's request for the ResetServiceSetting operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ResetServiceSetting for more information on using the ResetServiceSetting\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ResetServiceSettingRequest method.\n//\treq, resp := client.ResetServiceSettingRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ResetServiceSetting\nfunc (c *SSM) ResetServiceSettingRequest(input *ResetServiceSettingInput) (req *request.Request, output *ResetServiceSettingOutput) {\n\top := &request.Operation{\n\t\tName:       opResetServiceSetting,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &ResetServiceSettingInput{}\n\t}\n\n\toutput = &ResetServiceSettingOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ResetServiceSetting API operation for Amazon Simple Systems Manager (SSM).\n//\n// ServiceSetting is an account-level setting for an Amazon Web Services service.\n// This setting defines how a user interacts with or uses a service or a feature\n// of a service. For example, if an Amazon Web Services service charges money\n// to the account based on feature or service usage, then the Amazon Web Services\n// service team might create a default setting of \"false\". This means the user\n// can't use this feature unless they change the setting to \"true\" and intentionally\n// opt in for a paid feature.\n//\n// Services map a SettingId object to a setting value. Amazon Web Services services\n// teams define the default value for a SettingId. You can't create a new SettingId,\n// but you can overwrite the default value if you have the ssm:UpdateServiceSetting\n// permission for the setting. Use the GetServiceSetting API operation to view\n// the current value. Use the UpdateServiceSetting API operation to change the\n// default setting.\n//\n// Reset the service setting for the account to the default value as provisioned\n// by the Amazon Web Services service team.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ResetServiceSetting for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - ServiceSettingNotFound\n//     The specified service setting wasn't found. Either the service name or the\n//     setting hasn't been provisioned by the Amazon Web Services service team.\n//\n//   - TooManyUpdates\n//     There are concurrent updates for a resource that supports one update at a\n//     time.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ResetServiceSetting\nfunc (c *SSM) ResetServiceSetting(input *ResetServiceSettingInput) (*ResetServiceSettingOutput, error) {\n\treq, out := c.ResetServiceSettingRequest(input)\n\treturn out, req.Send()\n}\n\n// ResetServiceSettingWithContext is the same as ResetServiceSetting with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ResetServiceSetting for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ResetServiceSettingWithContext(ctx aws.Context, input *ResetServiceSettingInput, opts ...request.Option) (*ResetServiceSettingOutput, error) {\n\treq, out := c.ResetServiceSettingRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opResumeSession = \"ResumeSession\"\n\n// ResumeSessionRequest generates a \"aws/request.Request\" representing the\n// client's request for the ResumeSession operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ResumeSession for more information on using the ResumeSession\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ResumeSessionRequest method.\n//\treq, resp := client.ResumeSessionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ResumeSession\nfunc (c *SSM) ResumeSessionRequest(input *ResumeSessionInput) (req *request.Request, output *ResumeSessionOutput) {\n\top := &request.Operation{\n\t\tName:       opResumeSession,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &ResumeSessionInput{}\n\t}\n\n\toutput = &ResumeSessionOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// ResumeSession API operation for Amazon Simple Systems Manager (SSM).\n//\n// Reconnects a session to a managed node after it has been disconnected. Connections\n// can be resumed for disconnected sessions, but not terminated sessions.\n//\n// This command is primarily for use by client machines to automatically reconnect\n// during intermittent network issues. It isn't intended for any other use.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation ResumeSession for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ResumeSession\nfunc (c *SSM) ResumeSession(input *ResumeSessionInput) (*ResumeSessionOutput, error) {\n\treq, out := c.ResumeSessionRequest(input)\n\treturn out, req.Send()\n}\n\n// ResumeSessionWithContext is the same as ResumeSession with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ResumeSession for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) ResumeSessionWithContext(ctx aws.Context, input *ResumeSessionInput, opts ...request.Option) (*ResumeSessionOutput, error) {\n\treq, out := c.ResumeSessionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opSendAutomationSignal = \"SendAutomationSignal\"\n\n// SendAutomationSignalRequest generates a \"aws/request.Request\" representing the\n// client's request for the SendAutomationSignal operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See SendAutomationSignal for more information on using the SendAutomationSignal\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the SendAutomationSignalRequest method.\n//\treq, resp := client.SendAutomationSignalRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/SendAutomationSignal\nfunc (c *SSM) SendAutomationSignalRequest(input *SendAutomationSignalInput) (req *request.Request, output *SendAutomationSignalOutput) {\n\top := &request.Operation{\n\t\tName:       opSendAutomationSignal,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &SendAutomationSignalInput{}\n\t}\n\n\toutput = &SendAutomationSignalOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// SendAutomationSignal API operation for Amazon Simple Systems Manager (SSM).\n//\n// Sends a signal to an Automation execution to change the current behavior\n// or status of the execution.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation SendAutomationSignal for usage and error information.\n//\n// Returned Error Types:\n//\n//   - AutomationExecutionNotFoundException\n//     There is no automation execution information for the requested automation\n//     execution ID.\n//\n//   - AutomationStepNotFoundException\n//     The specified step name and execution ID don't exist. Verify the information\n//     and try again.\n//\n//   - InvalidAutomationSignalException\n//     The signal isn't valid for the current Automation execution.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/SendAutomationSignal\nfunc (c *SSM) SendAutomationSignal(input *SendAutomationSignalInput) (*SendAutomationSignalOutput, error) {\n\treq, out := c.SendAutomationSignalRequest(input)\n\treturn out, req.Send()\n}\n\n// SendAutomationSignalWithContext is the same as SendAutomationSignal with the addition of\n// the ability to pass a context and additional request options.\n//\n// See SendAutomationSignal for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) SendAutomationSignalWithContext(ctx aws.Context, input *SendAutomationSignalInput, opts ...request.Option) (*SendAutomationSignalOutput, error) {\n\treq, out := c.SendAutomationSignalRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opSendCommand = \"SendCommand\"\n\n// SendCommandRequest generates a \"aws/request.Request\" representing the\n// client's request for the SendCommand operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See SendCommand for more information on using the SendCommand\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the SendCommandRequest method.\n//\treq, resp := client.SendCommandRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/SendCommand\nfunc (c *SSM) SendCommandRequest(input *SendCommandInput) (req *request.Request, output *SendCommandOutput) {\n\top := &request.Operation{\n\t\tName:       opSendCommand,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &SendCommandInput{}\n\t}\n\n\toutput = &SendCommandOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// SendCommand API operation for Amazon Simple Systems Manager (SSM).\n//\n// Runs commands on one or more managed nodes.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation SendCommand for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DuplicateInstanceId\n//     You can't specify a managed node ID in more than one association.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidDocumentVersion\n//     The document version isn't valid or doesn't exist.\n//\n//   - InvalidOutputFolder\n//     The S3 bucket doesn't exist.\n//\n//   - InvalidParameters\n//     You must specify values for all required parameters in the Amazon Web Services\n//     Systems Manager document (SSM document). You can only supply values to parameters\n//     defined in the SSM document.\n//\n//   - UnsupportedPlatformType\n//     The document doesn't support the platform type of the given managed node\n//     ID(s). For example, you sent an document for a Windows managed node to a\n//     Linux node.\n//\n//   - MaxDocumentSizeExceeded\n//     The size limit of a document is 64 KB.\n//\n//   - InvalidRole\n//     The role name can't contain invalid characters. Also verify that you specified\n//     an IAM role for notifications that includes the required trust policy. For\n//     information about configuring the IAM role for Run Command notifications,\n//     see Configuring Amazon SNS Notifications for Run Command (https://docs.aws.amazon.com/systems-manager/latest/userguide/rc-sns-notifications.html)\n//     in the Amazon Web Services Systems Manager User Guide.\n//\n//   - InvalidNotificationConfig\n//     One or more configuration items isn't valid. Verify that a valid Amazon Resource\n//     Name (ARN) was provided for an Amazon Simple Notification Service topic.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/SendCommand\nfunc (c *SSM) SendCommand(input *SendCommandInput) (*SendCommandOutput, error) {\n\treq, out := c.SendCommandRequest(input)\n\treturn out, req.Send()\n}\n\n// SendCommandWithContext is the same as SendCommand with the addition of\n// the ability to pass a context and additional request options.\n//\n// See SendCommand for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) SendCommandWithContext(ctx aws.Context, input *SendCommandInput, opts ...request.Option) (*SendCommandOutput, error) {\n\treq, out := c.SendCommandRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opStartAssociationsOnce = \"StartAssociationsOnce\"\n\n// StartAssociationsOnceRequest generates a \"aws/request.Request\" representing the\n// client's request for the StartAssociationsOnce operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See StartAssociationsOnce for more information on using the StartAssociationsOnce\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the StartAssociationsOnceRequest method.\n//\treq, resp := client.StartAssociationsOnceRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartAssociationsOnce\nfunc (c *SSM) StartAssociationsOnceRequest(input *StartAssociationsOnceInput) (req *request.Request, output *StartAssociationsOnceOutput) {\n\top := &request.Operation{\n\t\tName:       opStartAssociationsOnce,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &StartAssociationsOnceInput{}\n\t}\n\n\toutput = &StartAssociationsOnceOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// StartAssociationsOnce API operation for Amazon Simple Systems Manager (SSM).\n//\n// Runs an association immediately and only one time. This operation can be\n// helpful when troubleshooting associations.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation StartAssociationsOnce for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidAssociation\n//     The association isn't valid or doesn't exist.\n//\n//   - AssociationDoesNotExist\n//     The specified association doesn't exist.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartAssociationsOnce\nfunc (c *SSM) StartAssociationsOnce(input *StartAssociationsOnceInput) (*StartAssociationsOnceOutput, error) {\n\treq, out := c.StartAssociationsOnceRequest(input)\n\treturn out, req.Send()\n}\n\n// StartAssociationsOnceWithContext is the same as StartAssociationsOnce with the addition of\n// the ability to pass a context and additional request options.\n//\n// See StartAssociationsOnce for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) StartAssociationsOnceWithContext(ctx aws.Context, input *StartAssociationsOnceInput, opts ...request.Option) (*StartAssociationsOnceOutput, error) {\n\treq, out := c.StartAssociationsOnceRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opStartAutomationExecution = \"StartAutomationExecution\"\n\n// StartAutomationExecutionRequest generates a \"aws/request.Request\" representing the\n// client's request for the StartAutomationExecution operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See StartAutomationExecution for more information on using the StartAutomationExecution\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the StartAutomationExecutionRequest method.\n//\treq, resp := client.StartAutomationExecutionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartAutomationExecution\nfunc (c *SSM) StartAutomationExecutionRequest(input *StartAutomationExecutionInput) (req *request.Request, output *StartAutomationExecutionOutput) {\n\top := &request.Operation{\n\t\tName:       opStartAutomationExecution,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &StartAutomationExecutionInput{}\n\t}\n\n\toutput = &StartAutomationExecutionOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// StartAutomationExecution API operation for Amazon Simple Systems Manager (SSM).\n//\n// Initiates execution of an Automation runbook.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation StartAutomationExecution for usage and error information.\n//\n// Returned Error Types:\n//\n//   - AutomationDefinitionNotFoundException\n//     An Automation runbook with the specified name couldn't be found.\n//\n//   - InvalidAutomationExecutionParametersException\n//     The supplied parameters for invoking the specified Automation runbook are\n//     incorrect. For example, they may not match the set of parameters permitted\n//     for the specified Automation document.\n//\n//   - AutomationExecutionLimitExceededException\n//     The number of simultaneously running Automation executions exceeded the allowable\n//     limit.\n//\n//   - AutomationDefinitionVersionNotFoundException\n//     An Automation runbook with the specified name and version couldn't be found.\n//\n//   - IdempotentParameterMismatch\n//     Error returned when an idempotent operation is retried and the parameters\n//     don't match the original call to the API with the same idempotency token.\n//\n//   - InvalidTarget\n//     The target isn't valid or doesn't exist. It might not be configured for Systems\n//     Manager or you might not have permission to perform the operation.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartAutomationExecution\nfunc (c *SSM) StartAutomationExecution(input *StartAutomationExecutionInput) (*StartAutomationExecutionOutput, error) {\n\treq, out := c.StartAutomationExecutionRequest(input)\n\treturn out, req.Send()\n}\n\n// StartAutomationExecutionWithContext is the same as StartAutomationExecution with the addition of\n// the ability to pass a context and additional request options.\n//\n// See StartAutomationExecution for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) StartAutomationExecutionWithContext(ctx aws.Context, input *StartAutomationExecutionInput, opts ...request.Option) (*StartAutomationExecutionOutput, error) {\n\treq, out := c.StartAutomationExecutionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opStartChangeRequestExecution = \"StartChangeRequestExecution\"\n\n// StartChangeRequestExecutionRequest generates a \"aws/request.Request\" representing the\n// client's request for the StartChangeRequestExecution operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See StartChangeRequestExecution for more information on using the StartChangeRequestExecution\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the StartChangeRequestExecutionRequest method.\n//\treq, resp := client.StartChangeRequestExecutionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartChangeRequestExecution\nfunc (c *SSM) StartChangeRequestExecutionRequest(input *StartChangeRequestExecutionInput) (req *request.Request, output *StartChangeRequestExecutionOutput) {\n\top := &request.Operation{\n\t\tName:       opStartChangeRequestExecution,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &StartChangeRequestExecutionInput{}\n\t}\n\n\toutput = &StartChangeRequestExecutionOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// StartChangeRequestExecution API operation for Amazon Simple Systems Manager (SSM).\n//\n// Creates a change request for Change Manager. The Automation runbooks specified\n// in the change request run only after all required approvals for the change\n// request have been received.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation StartChangeRequestExecution for usage and error information.\n//\n// Returned Error Types:\n//\n//   - AutomationDefinitionNotFoundException\n//     An Automation runbook with the specified name couldn't be found.\n//\n//   - InvalidAutomationExecutionParametersException\n//     The supplied parameters for invoking the specified Automation runbook are\n//     incorrect. For example, they may not match the set of parameters permitted\n//     for the specified Automation document.\n//\n//   - AutomationExecutionLimitExceededException\n//     The number of simultaneously running Automation executions exceeded the allowable\n//     limit.\n//\n//   - AutomationDefinitionVersionNotFoundException\n//     An Automation runbook with the specified name and version couldn't be found.\n//\n//   - IdempotentParameterMismatch\n//     Error returned when an idempotent operation is retried and the parameters\n//     don't match the original call to the API with the same idempotency token.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - AutomationDefinitionNotApprovedException\n//     Indicates that the Change Manager change template used in the change request\n//     was rejected or is still in a pending state.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartChangeRequestExecution\nfunc (c *SSM) StartChangeRequestExecution(input *StartChangeRequestExecutionInput) (*StartChangeRequestExecutionOutput, error) {\n\treq, out := c.StartChangeRequestExecutionRequest(input)\n\treturn out, req.Send()\n}\n\n// StartChangeRequestExecutionWithContext is the same as StartChangeRequestExecution with the addition of\n// the ability to pass a context and additional request options.\n//\n// See StartChangeRequestExecution for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) StartChangeRequestExecutionWithContext(ctx aws.Context, input *StartChangeRequestExecutionInput, opts ...request.Option) (*StartChangeRequestExecutionOutput, error) {\n\treq, out := c.StartChangeRequestExecutionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opStartSession = \"StartSession\"\n\n// StartSessionRequest generates a \"aws/request.Request\" representing the\n// client's request for the StartSession operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See StartSession for more information on using the StartSession\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the StartSessionRequest method.\n//\treq, resp := client.StartSessionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartSession\nfunc (c *SSM) StartSessionRequest(input *StartSessionInput) (req *request.Request, output *StartSessionOutput) {\n\top := &request.Operation{\n\t\tName:       opStartSession,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &StartSessionInput{}\n\t}\n\n\toutput = &StartSessionOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// StartSession API operation for Amazon Simple Systems Manager (SSM).\n//\n// Initiates a connection to a target (for example, a managed node) for a Session\n// Manager session. Returns a URL and token that can be used to open a WebSocket\n// connection for sending input and receiving outputs.\n//\n// Amazon Web Services CLI usage: start-session is an interactive command that\n// requires the Session Manager plugin to be installed on the client machine\n// making the call. For information, see Install the Session Manager plugin\n// for the Amazon Web Services CLI (https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// Amazon Web Services Tools for PowerShell usage: Start-SSMSession isn't currently\n// supported by Amazon Web Services Tools for PowerShell on Windows local machines.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation StartSession for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - TargetNotConnected\n//     The specified target managed node for the session isn't fully configured\n//     for use with Session Manager. For more information, see Getting started with\n//     Session Manager (https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html)\n//     in the Amazon Web Services Systems Manager User Guide. This error is also\n//     returned if you attempt to start a session on a managed node that is located\n//     in a different account or Region\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartSession\nfunc (c *SSM) StartSession(input *StartSessionInput) (*StartSessionOutput, error) {\n\treq, out := c.StartSessionRequest(input)\n\treturn out, req.Send()\n}\n\n// StartSessionWithContext is the same as StartSession with the addition of\n// the ability to pass a context and additional request options.\n//\n// See StartSession for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) StartSessionWithContext(ctx aws.Context, input *StartSessionInput, opts ...request.Option) (*StartSessionOutput, error) {\n\treq, out := c.StartSessionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opStopAutomationExecution = \"StopAutomationExecution\"\n\n// StopAutomationExecutionRequest generates a \"aws/request.Request\" representing the\n// client's request for the StopAutomationExecution operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See StopAutomationExecution for more information on using the StopAutomationExecution\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the StopAutomationExecutionRequest method.\n//\treq, resp := client.StopAutomationExecutionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StopAutomationExecution\nfunc (c *SSM) StopAutomationExecutionRequest(input *StopAutomationExecutionInput) (req *request.Request, output *StopAutomationExecutionOutput) {\n\top := &request.Operation{\n\t\tName:       opStopAutomationExecution,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &StopAutomationExecutionInput{}\n\t}\n\n\toutput = &StopAutomationExecutionOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// StopAutomationExecution API operation for Amazon Simple Systems Manager (SSM).\n//\n// Stop an Automation that is currently running.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation StopAutomationExecution for usage and error information.\n//\n// Returned Error Types:\n//\n//   - AutomationExecutionNotFoundException\n//     There is no automation execution information for the requested automation\n//     execution ID.\n//\n//   - InvalidAutomationStatusUpdateException\n//     The specified update status operation isn't valid.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StopAutomationExecution\nfunc (c *SSM) StopAutomationExecution(input *StopAutomationExecutionInput) (*StopAutomationExecutionOutput, error) {\n\treq, out := c.StopAutomationExecutionRequest(input)\n\treturn out, req.Send()\n}\n\n// StopAutomationExecutionWithContext is the same as StopAutomationExecution with the addition of\n// the ability to pass a context and additional request options.\n//\n// See StopAutomationExecution for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) StopAutomationExecutionWithContext(ctx aws.Context, input *StopAutomationExecutionInput, opts ...request.Option) (*StopAutomationExecutionOutput, error) {\n\treq, out := c.StopAutomationExecutionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opTerminateSession = \"TerminateSession\"\n\n// TerminateSessionRequest generates a \"aws/request.Request\" representing the\n// client's request for the TerminateSession operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See TerminateSession for more information on using the TerminateSession\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the TerminateSessionRequest method.\n//\treq, resp := client.TerminateSessionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/TerminateSession\nfunc (c *SSM) TerminateSessionRequest(input *TerminateSessionInput) (req *request.Request, output *TerminateSessionOutput) {\n\top := &request.Operation{\n\t\tName:       opTerminateSession,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &TerminateSessionInput{}\n\t}\n\n\toutput = &TerminateSessionOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// TerminateSession API operation for Amazon Simple Systems Manager (SSM).\n//\n// Permanently ends a session and closes the data connection between the Session\n// Manager client and SSM Agent on the managed node. A terminated session can't\n// be resumed.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation TerminateSession for usage and error information.\n//\n// Returned Error Types:\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/TerminateSession\nfunc (c *SSM) TerminateSession(input *TerminateSessionInput) (*TerminateSessionOutput, error) {\n\treq, out := c.TerminateSessionRequest(input)\n\treturn out, req.Send()\n}\n\n// TerminateSessionWithContext is the same as TerminateSession with the addition of\n// the ability to pass a context and additional request options.\n//\n// See TerminateSession for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) TerminateSessionWithContext(ctx aws.Context, input *TerminateSessionInput, opts ...request.Option) (*TerminateSessionOutput, error) {\n\treq, out := c.TerminateSessionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUnlabelParameterVersion = \"UnlabelParameterVersion\"\n\n// UnlabelParameterVersionRequest generates a \"aws/request.Request\" representing the\n// client's request for the UnlabelParameterVersion operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UnlabelParameterVersion for more information on using the UnlabelParameterVersion\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UnlabelParameterVersionRequest method.\n//\treq, resp := client.UnlabelParameterVersionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UnlabelParameterVersion\nfunc (c *SSM) UnlabelParameterVersionRequest(input *UnlabelParameterVersionInput) (req *request.Request, output *UnlabelParameterVersionOutput) {\n\top := &request.Operation{\n\t\tName:       opUnlabelParameterVersion,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UnlabelParameterVersionInput{}\n\t}\n\n\toutput = &UnlabelParameterVersionOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// UnlabelParameterVersion API operation for Amazon Simple Systems Manager (SSM).\n//\n// Remove a label or labels from a parameter.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UnlabelParameterVersion for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - TooManyUpdates\n//     There are concurrent updates for a resource that supports one update at a\n//     time.\n//\n//   - ParameterNotFound\n//     The parameter couldn't be found. Verify the name and try again.\n//\n//   - ParameterVersionNotFound\n//     The specified parameter version wasn't found. Verify the parameter name and\n//     version, and try again.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UnlabelParameterVersion\nfunc (c *SSM) UnlabelParameterVersion(input *UnlabelParameterVersionInput) (*UnlabelParameterVersionOutput, error) {\n\treq, out := c.UnlabelParameterVersionRequest(input)\n\treturn out, req.Send()\n}\n\n// UnlabelParameterVersionWithContext is the same as UnlabelParameterVersion with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UnlabelParameterVersion for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UnlabelParameterVersionWithContext(ctx aws.Context, input *UnlabelParameterVersionInput, opts ...request.Option) (*UnlabelParameterVersionOutput, error) {\n\treq, out := c.UnlabelParameterVersionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateAssociation = \"UpdateAssociation\"\n\n// UpdateAssociationRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateAssociation operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateAssociation for more information on using the UpdateAssociation\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateAssociationRequest method.\n//\treq, resp := client.UpdateAssociationRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateAssociation\nfunc (c *SSM) UpdateAssociationRequest(input *UpdateAssociationInput) (req *request.Request, output *UpdateAssociationOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateAssociation,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateAssociationInput{}\n\t}\n\n\toutput = &UpdateAssociationOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// UpdateAssociation API operation for Amazon Simple Systems Manager (SSM).\n//\n// Updates an association. You can update the association name and version,\n// the document version, schedule, parameters, and Amazon Simple Storage Service\n// (Amazon S3) output. When you call UpdateAssociation, the system removes all\n// optional parameters from the request and overwrites the association with\n// null values for those parameters. This is by design. You must specify all\n// optional parameters in the call, even if you are not changing the parameters.\n// This includes the Name parameter. Before calling this API action, we recommend\n// that you call the DescribeAssociation API operation and make a note of all\n// optional parameters required for your UpdateAssociation call.\n//\n// In order to call this API operation, a user, group, or role must be granted\n// permission to call the DescribeAssociation API operation. If you don't have\n// permission to call DescribeAssociation, then you receive the following error:\n// An error occurred (AccessDeniedException) when calling the UpdateAssociation\n// operation: User: <user_arn> isn't authorized to perform: ssm:DescribeAssociation\n// on resource: <resource_arn>\n//\n// When you update an association, the association immediately runs against\n// the specified targets. You can add the ApplyOnlyAtCronInterval parameter\n// to run the association during the next schedule run.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdateAssociation for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidSchedule\n//     The schedule is invalid. Verify your cron or rate expression and try again.\n//\n//   - InvalidParameters\n//     You must specify values for all required parameters in the Amazon Web Services\n//     Systems Manager document (SSM document). You can only supply values to parameters\n//     defined in the SSM document.\n//\n//   - InvalidOutputLocation\n//     The output location isn't valid or doesn't exist.\n//\n//   - InvalidDocumentVersion\n//     The document version isn't valid or doesn't exist.\n//\n//   - AssociationDoesNotExist\n//     The specified association doesn't exist.\n//\n//   - InvalidUpdate\n//     The update isn't valid.\n//\n//   - TooManyUpdates\n//     There are concurrent updates for a resource that supports one update at a\n//     time.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidTarget\n//     The target isn't valid or doesn't exist. It might not be configured for Systems\n//     Manager or you might not have permission to perform the operation.\n//\n//   - InvalidAssociationVersion\n//     The version you specified isn't valid. Use ListAssociationVersions to view\n//     all versions of an association according to the association ID. Or, use the\n//     $LATEST parameter to view the latest version of the association.\n//\n//   - AssociationVersionLimitExceeded\n//     You have reached the maximum number versions allowed for an association.\n//     Each association has a limit of 1,000 versions.\n//\n//   - InvalidTargetMaps\n//     TargetMap parameter isn't valid.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateAssociation\nfunc (c *SSM) UpdateAssociation(input *UpdateAssociationInput) (*UpdateAssociationOutput, error) {\n\treq, out := c.UpdateAssociationRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateAssociationWithContext is the same as UpdateAssociation with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateAssociation for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdateAssociationWithContext(ctx aws.Context, input *UpdateAssociationInput, opts ...request.Option) (*UpdateAssociationOutput, error) {\n\treq, out := c.UpdateAssociationRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateAssociationStatus = \"UpdateAssociationStatus\"\n\n// UpdateAssociationStatusRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateAssociationStatus operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateAssociationStatus for more information on using the UpdateAssociationStatus\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateAssociationStatusRequest method.\n//\treq, resp := client.UpdateAssociationStatusRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateAssociationStatus\nfunc (c *SSM) UpdateAssociationStatusRequest(input *UpdateAssociationStatusInput) (req *request.Request, output *UpdateAssociationStatusOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateAssociationStatus,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateAssociationStatusInput{}\n\t}\n\n\toutput = &UpdateAssociationStatusOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// UpdateAssociationStatus API operation for Amazon Simple Systems Manager (SSM).\n//\n// Updates the status of the Amazon Web Services Systems Manager document (SSM\n// document) associated with the specified managed node.\n//\n// UpdateAssociationStatus is primarily used by the Amazon Web Services Systems\n// Manager Agent (SSM Agent) to report status updates about your associations\n// and is only used for associations created with the InstanceId legacy parameter.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdateAssociationStatus for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - AssociationDoesNotExist\n//     The specified association doesn't exist.\n//\n//   - StatusUnchanged\n//     The updated status is the same as the current status.\n//\n//   - TooManyUpdates\n//     There are concurrent updates for a resource that supports one update at a\n//     time.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateAssociationStatus\nfunc (c *SSM) UpdateAssociationStatus(input *UpdateAssociationStatusInput) (*UpdateAssociationStatusOutput, error) {\n\treq, out := c.UpdateAssociationStatusRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateAssociationStatusWithContext is the same as UpdateAssociationStatus with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateAssociationStatus for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdateAssociationStatusWithContext(ctx aws.Context, input *UpdateAssociationStatusInput, opts ...request.Option) (*UpdateAssociationStatusOutput, error) {\n\treq, out := c.UpdateAssociationStatusRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateDocument = \"UpdateDocument\"\n\n// UpdateDocumentRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateDocument operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateDocument for more information on using the UpdateDocument\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateDocumentRequest method.\n//\treq, resp := client.UpdateDocumentRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocument\nfunc (c *SSM) UpdateDocumentRequest(input *UpdateDocumentInput) (req *request.Request, output *UpdateDocumentOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateDocument,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateDocumentInput{}\n\t}\n\n\toutput = &UpdateDocumentOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// UpdateDocument API operation for Amazon Simple Systems Manager (SSM).\n//\n// Updates one or more values for an SSM document.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdateDocument for usage and error information.\n//\n// Returned Error Types:\n//\n//   - MaxDocumentSizeExceeded\n//     The size limit of a document is 64 KB.\n//\n//   - DocumentVersionLimitExceeded\n//     The document has too many versions. Delete one or more document versions\n//     and try again.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - DuplicateDocumentContent\n//     The content of the association document matches another document. Change\n//     the content of the document and try again.\n//\n//   - DuplicateDocumentVersionName\n//     The version name has already been used in this document. Specify a different\n//     version name, and then try again.\n//\n//   - InvalidDocumentContent\n//     The content for the document isn't valid.\n//\n//   - InvalidDocumentVersion\n//     The document version isn't valid or doesn't exist.\n//\n//   - InvalidDocumentSchemaVersion\n//     The version of the document schema isn't supported.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidDocumentOperation\n//     You attempted to delete a document while it is still shared. You must stop\n//     sharing the document before you can delete it.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocument\nfunc (c *SSM) UpdateDocument(input *UpdateDocumentInput) (*UpdateDocumentOutput, error) {\n\treq, out := c.UpdateDocumentRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateDocumentWithContext is the same as UpdateDocument with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateDocument for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdateDocumentWithContext(ctx aws.Context, input *UpdateDocumentInput, opts ...request.Option) (*UpdateDocumentOutput, error) {\n\treq, out := c.UpdateDocumentRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateDocumentDefaultVersion = \"UpdateDocumentDefaultVersion\"\n\n// UpdateDocumentDefaultVersionRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateDocumentDefaultVersion operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateDocumentDefaultVersion for more information on using the UpdateDocumentDefaultVersion\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateDocumentDefaultVersionRequest method.\n//\treq, resp := client.UpdateDocumentDefaultVersionRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocumentDefaultVersion\nfunc (c *SSM) UpdateDocumentDefaultVersionRequest(input *UpdateDocumentDefaultVersionInput) (req *request.Request, output *UpdateDocumentDefaultVersionOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateDocumentDefaultVersion,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateDocumentDefaultVersionInput{}\n\t}\n\n\toutput = &UpdateDocumentDefaultVersionOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// UpdateDocumentDefaultVersion API operation for Amazon Simple Systems Manager (SSM).\n//\n// Set the default version of a document.\n//\n// If you change a document version for a State Manager association, Systems\n// Manager immediately runs the association unless you previously specifed the\n// apply-only-at-cron-interval parameter.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdateDocumentDefaultVersion for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidDocumentVersion\n//     The document version isn't valid or doesn't exist.\n//\n//   - InvalidDocumentSchemaVersion\n//     The version of the document schema isn't supported.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocumentDefaultVersion\nfunc (c *SSM) UpdateDocumentDefaultVersion(input *UpdateDocumentDefaultVersionInput) (*UpdateDocumentDefaultVersionOutput, error) {\n\treq, out := c.UpdateDocumentDefaultVersionRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateDocumentDefaultVersionWithContext is the same as UpdateDocumentDefaultVersion with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateDocumentDefaultVersion for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdateDocumentDefaultVersionWithContext(ctx aws.Context, input *UpdateDocumentDefaultVersionInput, opts ...request.Option) (*UpdateDocumentDefaultVersionOutput, error) {\n\treq, out := c.UpdateDocumentDefaultVersionRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateDocumentMetadata = \"UpdateDocumentMetadata\"\n\n// UpdateDocumentMetadataRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateDocumentMetadata operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateDocumentMetadata for more information on using the UpdateDocumentMetadata\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateDocumentMetadataRequest method.\n//\treq, resp := client.UpdateDocumentMetadataRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocumentMetadata\nfunc (c *SSM) UpdateDocumentMetadataRequest(input *UpdateDocumentMetadataInput) (req *request.Request, output *UpdateDocumentMetadataOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateDocumentMetadata,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateDocumentMetadataInput{}\n\t}\n\n\toutput = &UpdateDocumentMetadataOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// UpdateDocumentMetadata API operation for Amazon Simple Systems Manager (SSM).\n//\n// Updates information related to approval reviews for a specific version of\n// a change template in Change Manager.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdateDocumentMetadata for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - InvalidDocument\n//     The specified SSM document doesn't exist.\n//\n//   - InvalidDocumentOperation\n//     You attempted to delete a document while it is still shared. You must stop\n//     sharing the document before you can delete it.\n//\n//   - InvalidDocumentVersion\n//     The document version isn't valid or doesn't exist.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocumentMetadata\nfunc (c *SSM) UpdateDocumentMetadata(input *UpdateDocumentMetadataInput) (*UpdateDocumentMetadataOutput, error) {\n\treq, out := c.UpdateDocumentMetadataRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateDocumentMetadataWithContext is the same as UpdateDocumentMetadata with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateDocumentMetadata for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdateDocumentMetadataWithContext(ctx aws.Context, input *UpdateDocumentMetadataInput, opts ...request.Option) (*UpdateDocumentMetadataOutput, error) {\n\treq, out := c.UpdateDocumentMetadataRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateMaintenanceWindow = \"UpdateMaintenanceWindow\"\n\n// UpdateMaintenanceWindowRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateMaintenanceWindow operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateMaintenanceWindow for more information on using the UpdateMaintenanceWindow\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateMaintenanceWindowRequest method.\n//\treq, resp := client.UpdateMaintenanceWindowRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateMaintenanceWindow\nfunc (c *SSM) UpdateMaintenanceWindowRequest(input *UpdateMaintenanceWindowInput) (req *request.Request, output *UpdateMaintenanceWindowOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateMaintenanceWindow,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateMaintenanceWindowInput{}\n\t}\n\n\toutput = &UpdateMaintenanceWindowOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// UpdateMaintenanceWindow API operation for Amazon Simple Systems Manager (SSM).\n//\n// Updates an existing maintenance window. Only specified parameters are modified.\n//\n// The value you specify for Duration determines the specific end time for the\n// maintenance window based on the time it begins. No maintenance window tasks\n// are permitted to start after the resulting endtime minus the number of hours\n// you specify for Cutoff. For example, if the maintenance window starts at\n// 3 PM, the duration is three hours, and the value you specify for Cutoff is\n// one hour, no maintenance window tasks can start after 5 PM.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdateMaintenanceWindow for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateMaintenanceWindow\nfunc (c *SSM) UpdateMaintenanceWindow(input *UpdateMaintenanceWindowInput) (*UpdateMaintenanceWindowOutput, error) {\n\treq, out := c.UpdateMaintenanceWindowRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateMaintenanceWindowWithContext is the same as UpdateMaintenanceWindow with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateMaintenanceWindow for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdateMaintenanceWindowWithContext(ctx aws.Context, input *UpdateMaintenanceWindowInput, opts ...request.Option) (*UpdateMaintenanceWindowOutput, error) {\n\treq, out := c.UpdateMaintenanceWindowRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateMaintenanceWindowTarget = \"UpdateMaintenanceWindowTarget\"\n\n// UpdateMaintenanceWindowTargetRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateMaintenanceWindowTarget operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateMaintenanceWindowTarget for more information on using the UpdateMaintenanceWindowTarget\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateMaintenanceWindowTargetRequest method.\n//\treq, resp := client.UpdateMaintenanceWindowTargetRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateMaintenanceWindowTarget\nfunc (c *SSM) UpdateMaintenanceWindowTargetRequest(input *UpdateMaintenanceWindowTargetInput) (req *request.Request, output *UpdateMaintenanceWindowTargetOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateMaintenanceWindowTarget,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateMaintenanceWindowTargetInput{}\n\t}\n\n\toutput = &UpdateMaintenanceWindowTargetOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// UpdateMaintenanceWindowTarget API operation for Amazon Simple Systems Manager (SSM).\n//\n// Modifies the target of an existing maintenance window. You can change the\n// following:\n//\n//   - Name\n//\n//   - Description\n//\n//   - Owner\n//\n//   - IDs for an ID target\n//\n//   - Tags for a Tag target\n//\n//   - From any supported tag type to another. The three supported tag types\n//     are ID target, Tag target, and resource group. For more information, see\n//     Target.\n//\n// If a parameter is null, then the corresponding field isn't modified.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdateMaintenanceWindowTarget for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateMaintenanceWindowTarget\nfunc (c *SSM) UpdateMaintenanceWindowTarget(input *UpdateMaintenanceWindowTargetInput) (*UpdateMaintenanceWindowTargetOutput, error) {\n\treq, out := c.UpdateMaintenanceWindowTargetRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateMaintenanceWindowTargetWithContext is the same as UpdateMaintenanceWindowTarget with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateMaintenanceWindowTarget for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdateMaintenanceWindowTargetWithContext(ctx aws.Context, input *UpdateMaintenanceWindowTargetInput, opts ...request.Option) (*UpdateMaintenanceWindowTargetOutput, error) {\n\treq, out := c.UpdateMaintenanceWindowTargetRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateMaintenanceWindowTask = \"UpdateMaintenanceWindowTask\"\n\n// UpdateMaintenanceWindowTaskRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateMaintenanceWindowTask operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateMaintenanceWindowTask for more information on using the UpdateMaintenanceWindowTask\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateMaintenanceWindowTaskRequest method.\n//\treq, resp := client.UpdateMaintenanceWindowTaskRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateMaintenanceWindowTask\nfunc (c *SSM) UpdateMaintenanceWindowTaskRequest(input *UpdateMaintenanceWindowTaskInput) (req *request.Request, output *UpdateMaintenanceWindowTaskOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateMaintenanceWindowTask,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateMaintenanceWindowTaskInput{}\n\t}\n\n\toutput = &UpdateMaintenanceWindowTaskOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// UpdateMaintenanceWindowTask API operation for Amazon Simple Systems Manager (SSM).\n//\n// Modifies a task assigned to a maintenance window. You can't change the task\n// type, but you can change the following values:\n//\n//   - TaskARN. For example, you can change a RUN_COMMAND task from AWS-RunPowerShellScript\n//     to AWS-RunShellScript.\n//\n//   - ServiceRoleArn\n//\n//   - TaskInvocationParameters\n//\n//   - Priority\n//\n//   - MaxConcurrency\n//\n//   - MaxErrors\n//\n// One or more targets must be specified for maintenance window Run Command-type\n// tasks. Depending on the task, targets are optional for other maintenance\n// window task types (Automation, Lambda, and Step Functions). For more information\n// about running tasks that don't specify targets, see Registering maintenance\n// window tasks without targets (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// If the value for a parameter in UpdateMaintenanceWindowTask is null, then\n// the corresponding field isn't modified. If you set Replace to true, then\n// all fields required by the RegisterTaskWithMaintenanceWindow operation are\n// required for this request. Optional fields that aren't specified are set\n// to null.\n//\n// When you update a maintenance window task that has options specified in TaskInvocationParameters,\n// you must provide again all the TaskInvocationParameters values that you want\n// to retain. The values you don't specify again are removed. For example, suppose\n// that when you registered a Run Command task, you specified TaskInvocationParameters\n// values for Comment, NotificationConfig, and OutputS3BucketName. If you update\n// the maintenance window task and specify only a different OutputS3BucketName\n// value, the values for Comment and NotificationConfig are removed.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdateMaintenanceWindowTask for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateMaintenanceWindowTask\nfunc (c *SSM) UpdateMaintenanceWindowTask(input *UpdateMaintenanceWindowTaskInput) (*UpdateMaintenanceWindowTaskOutput, error) {\n\treq, out := c.UpdateMaintenanceWindowTaskRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateMaintenanceWindowTaskWithContext is the same as UpdateMaintenanceWindowTask with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateMaintenanceWindowTask for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdateMaintenanceWindowTaskWithContext(ctx aws.Context, input *UpdateMaintenanceWindowTaskInput, opts ...request.Option) (*UpdateMaintenanceWindowTaskOutput, error) {\n\treq, out := c.UpdateMaintenanceWindowTaskRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateManagedInstanceRole = \"UpdateManagedInstanceRole\"\n\n// UpdateManagedInstanceRoleRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateManagedInstanceRole operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateManagedInstanceRole for more information on using the UpdateManagedInstanceRole\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateManagedInstanceRoleRequest method.\n//\treq, resp := client.UpdateManagedInstanceRoleRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateManagedInstanceRole\nfunc (c *SSM) UpdateManagedInstanceRoleRequest(input *UpdateManagedInstanceRoleInput) (req *request.Request, output *UpdateManagedInstanceRoleOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateManagedInstanceRole,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateManagedInstanceRoleInput{}\n\t}\n\n\toutput = &UpdateManagedInstanceRoleOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// UpdateManagedInstanceRole API operation for Amazon Simple Systems Manager (SSM).\n//\n// Changes the Identity and Access Management (IAM) role that is assigned to\n// the on-premises server, edge device, or virtual machines (VM). IAM roles\n// are first assigned to these hybrid nodes during the activation process. For\n// more information, see CreateActivation.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdateManagedInstanceRole for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidInstanceId\n//     The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateManagedInstanceRole\nfunc (c *SSM) UpdateManagedInstanceRole(input *UpdateManagedInstanceRoleInput) (*UpdateManagedInstanceRoleOutput, error) {\n\treq, out := c.UpdateManagedInstanceRoleRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateManagedInstanceRoleWithContext is the same as UpdateManagedInstanceRole with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateManagedInstanceRole for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdateManagedInstanceRoleWithContext(ctx aws.Context, input *UpdateManagedInstanceRoleInput, opts ...request.Option) (*UpdateManagedInstanceRoleOutput, error) {\n\treq, out := c.UpdateManagedInstanceRoleRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateOpsItem = \"UpdateOpsItem\"\n\n// UpdateOpsItemRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateOpsItem operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateOpsItem for more information on using the UpdateOpsItem\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateOpsItemRequest method.\n//\treq, resp := client.UpdateOpsItemRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateOpsItem\nfunc (c *SSM) UpdateOpsItemRequest(input *UpdateOpsItemInput) (req *request.Request, output *UpdateOpsItemOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateOpsItem,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateOpsItemInput{}\n\t}\n\n\toutput = &UpdateOpsItemOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// UpdateOpsItem API operation for Amazon Simple Systems Manager (SSM).\n//\n// Edit or change an OpsItem. You must have permission in Identity and Access\n// Management (IAM) to update an OpsItem. For more information, see Set up OpsCenter\n// (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-setup.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// Operations engineers and IT professionals use Amazon Web Services Systems\n// Manager OpsCenter to view, investigate, and remediate operational issues\n// impacting the performance and health of their Amazon Web Services resources.\n// For more information, see OpsCenter (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdateOpsItem for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - OpsItemNotFoundException\n//     The specified OpsItem ID doesn't exist. Verify the ID and try again.\n//\n//   - OpsItemAlreadyExistsException\n//     The OpsItem already exists.\n//\n//   - OpsItemLimitExceededException\n//     The request caused OpsItems to exceed one or more quotas.\n//\n//   - OpsItemInvalidParameterException\n//     A specified parameter argument isn't valid. Verify the available arguments\n//     and try again.\n//\n//   - OpsItemAccessDeniedException\n//     You don't have permission to view OpsItems in the specified account. Verify\n//     that your account is configured either as a Systems Manager delegated administrator\n//     or that you are logged into the Organizations management account.\n//\n//   - OpsItemConflictException\n//     The specified OpsItem is in the process of being deleted.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateOpsItem\nfunc (c *SSM) UpdateOpsItem(input *UpdateOpsItemInput) (*UpdateOpsItemOutput, error) {\n\treq, out := c.UpdateOpsItemRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateOpsItemWithContext is the same as UpdateOpsItem with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateOpsItem for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdateOpsItemWithContext(ctx aws.Context, input *UpdateOpsItemInput, opts ...request.Option) (*UpdateOpsItemOutput, error) {\n\treq, out := c.UpdateOpsItemRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateOpsMetadata = \"UpdateOpsMetadata\"\n\n// UpdateOpsMetadataRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateOpsMetadata operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateOpsMetadata for more information on using the UpdateOpsMetadata\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateOpsMetadataRequest method.\n//\treq, resp := client.UpdateOpsMetadataRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateOpsMetadata\nfunc (c *SSM) UpdateOpsMetadataRequest(input *UpdateOpsMetadataInput) (req *request.Request, output *UpdateOpsMetadataOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateOpsMetadata,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateOpsMetadataInput{}\n\t}\n\n\toutput = &UpdateOpsMetadataOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// UpdateOpsMetadata API operation for Amazon Simple Systems Manager (SSM).\n//\n// Amazon Web Services Systems Manager calls this API operation when you edit\n// OpsMetadata in Application Manager.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdateOpsMetadata for usage and error information.\n//\n// Returned Error Types:\n//\n//   - OpsMetadataNotFoundException\n//     The OpsMetadata object doesn't exist.\n//\n//   - OpsMetadataInvalidArgumentException\n//     One of the arguments passed is invalid.\n//\n//   - OpsMetadataKeyLimitExceededException\n//     The OpsMetadata object exceeds the maximum number of OpsMetadata keys that\n//     you can assign to an application in Application Manager.\n//\n//   - OpsMetadataTooManyUpdatesException\n//     The system is processing too many concurrent updates. Wait a few moments\n//     and try again.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateOpsMetadata\nfunc (c *SSM) UpdateOpsMetadata(input *UpdateOpsMetadataInput) (*UpdateOpsMetadataOutput, error) {\n\treq, out := c.UpdateOpsMetadataRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateOpsMetadataWithContext is the same as UpdateOpsMetadata with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateOpsMetadata for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdateOpsMetadataWithContext(ctx aws.Context, input *UpdateOpsMetadataInput, opts ...request.Option) (*UpdateOpsMetadataOutput, error) {\n\treq, out := c.UpdateOpsMetadataRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdatePatchBaseline = \"UpdatePatchBaseline\"\n\n// UpdatePatchBaselineRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdatePatchBaseline operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdatePatchBaseline for more information on using the UpdatePatchBaseline\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdatePatchBaselineRequest method.\n//\treq, resp := client.UpdatePatchBaselineRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdatePatchBaseline\nfunc (c *SSM) UpdatePatchBaselineRequest(input *UpdatePatchBaselineInput) (req *request.Request, output *UpdatePatchBaselineOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdatePatchBaseline,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdatePatchBaselineInput{}\n\t}\n\n\toutput = &UpdatePatchBaselineOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// UpdatePatchBaseline API operation for Amazon Simple Systems Manager (SSM).\n//\n// Modifies an existing patch baseline. Fields not specified in the request\n// are left unchanged.\n//\n// For information about valid key-value pairs in PatchFilters for each supported\n// operating system type, see PatchFilter.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdatePatchBaseline for usage and error information.\n//\n// Returned Error Types:\n//\n//   - DoesNotExistException\n//     Error returned when the ID specified for a resource, such as a maintenance\n//     window or patch baseline, doesn't exist.\n//\n//     For information about resource quotas in Amazon Web Services Systems Manager,\n//     see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n//     in the Amazon Web Services General Reference.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdatePatchBaseline\nfunc (c *SSM) UpdatePatchBaseline(input *UpdatePatchBaselineInput) (*UpdatePatchBaselineOutput, error) {\n\treq, out := c.UpdatePatchBaselineRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdatePatchBaselineWithContext is the same as UpdatePatchBaseline with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdatePatchBaseline for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdatePatchBaselineWithContext(ctx aws.Context, input *UpdatePatchBaselineInput, opts ...request.Option) (*UpdatePatchBaselineOutput, error) {\n\treq, out := c.UpdatePatchBaselineRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateResourceDataSync = \"UpdateResourceDataSync\"\n\n// UpdateResourceDataSyncRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateResourceDataSync operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateResourceDataSync for more information on using the UpdateResourceDataSync\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateResourceDataSyncRequest method.\n//\treq, resp := client.UpdateResourceDataSyncRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateResourceDataSync\nfunc (c *SSM) UpdateResourceDataSyncRequest(input *UpdateResourceDataSyncInput) (req *request.Request, output *UpdateResourceDataSyncOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateResourceDataSync,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateResourceDataSyncInput{}\n\t}\n\n\toutput = &UpdateResourceDataSyncOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// UpdateResourceDataSync API operation for Amazon Simple Systems Manager (SSM).\n//\n// Update a resource data sync. After you create a resource data sync for a\n// Region, you can't change the account options for that sync. For example,\n// if you create a sync in the us-east-2 (Ohio) Region and you choose the Include\n// only the current account option, you can't edit that sync later and choose\n// the Include all accounts from my Organizations configuration option. Instead,\n// you must delete the first resource data sync, and create a new one.\n//\n// This API operation only supports a resource data sync that was created with\n// a SyncFromSource SyncType.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdateResourceDataSync for usage and error information.\n//\n// Returned Error Types:\n//\n//   - ResourceDataSyncNotFoundException\n//     The specified sync name wasn't found.\n//\n//   - ResourceDataSyncInvalidConfigurationException\n//     The specified sync configuration is invalid.\n//\n//   - ResourceDataSyncConflictException\n//     Another UpdateResourceDataSync request is being processed. Wait a few minutes\n//     and try again.\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateResourceDataSync\nfunc (c *SSM) UpdateResourceDataSync(input *UpdateResourceDataSyncInput) (*UpdateResourceDataSyncOutput, error) {\n\treq, out := c.UpdateResourceDataSyncRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateResourceDataSyncWithContext is the same as UpdateResourceDataSync with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateResourceDataSync for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdateResourceDataSyncWithContext(ctx aws.Context, input *UpdateResourceDataSyncInput, opts ...request.Option) (*UpdateResourceDataSyncOutput, error) {\n\treq, out := c.UpdateResourceDataSyncRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opUpdateServiceSetting = \"UpdateServiceSetting\"\n\n// UpdateServiceSettingRequest generates a \"aws/request.Request\" representing the\n// client's request for the UpdateServiceSetting operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See UpdateServiceSetting for more information on using the UpdateServiceSetting\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the UpdateServiceSettingRequest method.\n//\treq, resp := client.UpdateServiceSettingRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateServiceSetting\nfunc (c *SSM) UpdateServiceSettingRequest(input *UpdateServiceSettingInput) (req *request.Request, output *UpdateServiceSettingOutput) {\n\top := &request.Operation{\n\t\tName:       opUpdateServiceSetting,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &UpdateServiceSettingInput{}\n\t}\n\n\toutput = &UpdateServiceSettingOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// UpdateServiceSetting API operation for Amazon Simple Systems Manager (SSM).\n//\n// ServiceSetting is an account-level setting for an Amazon Web Services service.\n// This setting defines how a user interacts with or uses a service or a feature\n// of a service. For example, if an Amazon Web Services service charges money\n// to the account based on feature or service usage, then the Amazon Web Services\n// service team might create a default setting of \"false\". This means the user\n// can't use this feature unless they change the setting to \"true\" and intentionally\n// opt in for a paid feature.\n//\n// Services map a SettingId object to a setting value. Amazon Web Services services\n// teams define the default value for a SettingId. You can't create a new SettingId,\n// but you can overwrite the default value if you have the ssm:UpdateServiceSetting\n// permission for the setting. Use the GetServiceSetting API operation to view\n// the current value. Or, use the ResetServiceSetting to change the value back\n// to the original value defined by the Amazon Web Services service team.\n//\n// Update the service setting for the account.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s\n// API operation UpdateServiceSetting for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InternalServerError\n//     An error occurred on the server side.\n//\n//   - ServiceSettingNotFound\n//     The specified service setting wasn't found. Either the service name or the\n//     setting hasn't been provisioned by the Amazon Web Services service team.\n//\n//   - TooManyUpdates\n//     There are concurrent updates for a resource that supports one update at a\n//     time.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateServiceSetting\nfunc (c *SSM) UpdateServiceSetting(input *UpdateServiceSettingInput) (*UpdateServiceSettingOutput, error) {\n\treq, out := c.UpdateServiceSettingRequest(input)\n\treturn out, req.Send()\n}\n\n// UpdateServiceSettingWithContext is the same as UpdateServiceSetting with the addition of\n// the ability to pass a context and additional request options.\n//\n// See UpdateServiceSetting for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) UpdateServiceSettingWithContext(ctx aws.Context, input *UpdateServiceSettingInput, opts ...request.Option) (*UpdateServiceSettingOutput, error) {\n\treq, out := c.UpdateServiceSettingRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// Information includes the Amazon Web Services account ID where the current\n// document is shared and the version shared with that account.\ntype AccountSharingInfo struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Web Services account ID where the current document is shared.\n\tAccountId *string `type:\"string\"`\n\n\t// The version of the current document shared with the account.\n\tSharedDocumentVersion *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AccountSharingInfo) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AccountSharingInfo) GoString() string {\n\treturn s.String()\n}\n\n// SetAccountId sets the AccountId field's value.\nfunc (s *AccountSharingInfo) SetAccountId(v string) *AccountSharingInfo {\n\ts.AccountId = &v\n\treturn s\n}\n\n// SetSharedDocumentVersion sets the SharedDocumentVersion field's value.\nfunc (s *AccountSharingInfo) SetSharedDocumentVersion(v string) *AccountSharingInfo {\n\ts.SharedDocumentVersion = &v\n\treturn s\n}\n\n// An activation registers one or more on-premises servers or virtual machines\n// (VMs) with Amazon Web Services so that you can configure those servers or\n// VMs using Run Command. A server or VM that has been registered with Amazon\n// Web Services Systems Manager is called a managed node.\ntype Activation struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID created by Systems Manager when you submitted the activation.\n\tActivationId *string `type:\"string\"`\n\n\t// The date the activation was created.\n\tCreatedDate *time.Time `type:\"timestamp\"`\n\n\t// A name for the managed node when it is created.\n\tDefaultInstanceName *string `type:\"string\"`\n\n\t// A user defined description of the activation.\n\tDescription *string `type:\"string\"`\n\n\t// The date when this activation can no longer be used to register managed nodes.\n\tExpirationDate *time.Time `type:\"timestamp\"`\n\n\t// Whether or not the activation is expired.\n\tExpired *bool `type:\"boolean\"`\n\n\t// The Identity and Access Management (IAM) role to assign to the managed node.\n\tIamRole *string `type:\"string\"`\n\n\t// The maximum number of managed nodes that can be registered using this activation.\n\tRegistrationLimit *int64 `min:\"1\" type:\"integer\"`\n\n\t// The number of managed nodes already registered with this activation.\n\tRegistrationsCount *int64 `min:\"1\" type:\"integer\"`\n\n\t// Tags assigned to the activation.\n\tTags []*Tag `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Activation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Activation) GoString() string {\n\treturn s.String()\n}\n\n// SetActivationId sets the ActivationId field's value.\nfunc (s *Activation) SetActivationId(v string) *Activation {\n\ts.ActivationId = &v\n\treturn s\n}\n\n// SetCreatedDate sets the CreatedDate field's value.\nfunc (s *Activation) SetCreatedDate(v time.Time) *Activation {\n\ts.CreatedDate = &v\n\treturn s\n}\n\n// SetDefaultInstanceName sets the DefaultInstanceName field's value.\nfunc (s *Activation) SetDefaultInstanceName(v string) *Activation {\n\ts.DefaultInstanceName = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *Activation) SetDescription(v string) *Activation {\n\ts.Description = &v\n\treturn s\n}\n\n// SetExpirationDate sets the ExpirationDate field's value.\nfunc (s *Activation) SetExpirationDate(v time.Time) *Activation {\n\ts.ExpirationDate = &v\n\treturn s\n}\n\n// SetExpired sets the Expired field's value.\nfunc (s *Activation) SetExpired(v bool) *Activation {\n\ts.Expired = &v\n\treturn s\n}\n\n// SetIamRole sets the IamRole field's value.\nfunc (s *Activation) SetIamRole(v string) *Activation {\n\ts.IamRole = &v\n\treturn s\n}\n\n// SetRegistrationLimit sets the RegistrationLimit field's value.\nfunc (s *Activation) SetRegistrationLimit(v int64) *Activation {\n\ts.RegistrationLimit = &v\n\treturn s\n}\n\n// SetRegistrationsCount sets the RegistrationsCount field's value.\nfunc (s *Activation) SetRegistrationsCount(v int64) *Activation {\n\ts.RegistrationsCount = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *Activation) SetTags(v []*Tag) *Activation {\n\ts.Tags = v\n\treturn s\n}\n\ntype AddTagsToResourceInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The resource ID you want to tag.\n\t//\n\t// Use the ID of the resource. Here are some examples:\n\t//\n\t// MaintenanceWindow: mw-012345abcde\n\t//\n\t// PatchBaseline: pb-012345abcde\n\t//\n\t// Automation: example-c160-4567-8519-012345abcde\n\t//\n\t// OpsMetadata object: ResourceID for tagging is created from the Amazon Resource\n\t// Name (ARN) for the object. Specifically, ResourceID is created from the strings\n\t// that come after the word opsmetadata in the ARN. For example, an OpsMetadata\n\t// object with an ARN of arn:aws:ssm:us-east-2:1234567890:opsmetadata/aws/ssm/MyGroup/appmanager\n\t// has a ResourceID of either aws/ssm/MyGroup/appmanager or /aws/ssm/MyGroup/appmanager.\n\t//\n\t// For the Document and Parameter values, use the name of the resource. If you're\n\t// tagging a shared document, you must use the full ARN of the document.\n\t//\n\t// ManagedInstance: mi-012345abcde\n\t//\n\t// The ManagedInstance type for this API operation is only for on-premises managed\n\t// nodes. You must specify the name of the managed node in the following format:\n\t// mi-ID_number . For example, mi-1a2b3c4d5e6f.\n\t//\n\t// ResourceId is a required field\n\tResourceId *string `type:\"string\" required:\"true\"`\n\n\t// Specifies the type of resource you are tagging.\n\t//\n\t// The ManagedInstance type for this API operation is for on-premises managed\n\t// nodes. You must specify the name of the managed node in the following format:\n\t// mi-ID_number . For example, mi-1a2b3c4d5e6f.\n\t//\n\t// ResourceType is a required field\n\tResourceType *string `type:\"string\" required:\"true\" enum:\"ResourceTypeForTagging\"`\n\n\t// One or more tags. The value parameter is required.\n\t//\n\t// Don't enter personally identifiable information in this field.\n\t//\n\t// Tags is a required field\n\tTags []*Tag `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AddTagsToResourceInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AddTagsToResourceInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AddTagsToResourceInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AddTagsToResourceInput\"}\n\tif s.ResourceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceId\"))\n\t}\n\tif s.ResourceType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceType\"))\n\t}\n\tif s.Tags == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Tags\"))\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetResourceId sets the ResourceId field's value.\nfunc (s *AddTagsToResourceInput) SetResourceId(v string) *AddTagsToResourceInput {\n\ts.ResourceId = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *AddTagsToResourceInput) SetResourceType(v string) *AddTagsToResourceInput {\n\ts.ResourceType = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *AddTagsToResourceInput) SetTags(v []*Tag) *AddTagsToResourceInput {\n\ts.Tags = v\n\treturn s\n}\n\ntype AddTagsToResourceOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AddTagsToResourceOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AddTagsToResourceOutput) GoString() string {\n\treturn s.String()\n}\n\n// A CloudWatch alarm you apply to an automation or command.\ntype Alarm struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of your CloudWatch alarm.\n\t//\n\t// Name is a required field\n\tName *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Alarm) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Alarm) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *Alarm) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"Alarm\"}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Name != nil && len(*s.Name) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetName sets the Name field's value.\nfunc (s *Alarm) SetName(v string) *Alarm {\n\ts.Name = &v\n\treturn s\n}\n\n// The details for the CloudWatch alarm you want to apply to an automation or\n// command.\ntype AlarmConfiguration struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the CloudWatch alarm specified in the configuration.\n\t//\n\t// Alarms is a required field\n\tAlarms []*Alarm `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// When this value is true, your automation or command continues to run in cases\n\t// where we can’t retrieve alarm status information from CloudWatch. In cases\n\t// where we successfully retrieve an alarm status of OK or INSUFFICIENT_DATA,\n\t// the automation or command continues to run, regardless of this value. Default\n\t// is false.\n\tIgnorePollAlarmFailure *bool `type:\"boolean\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AlarmConfiguration) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AlarmConfiguration) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AlarmConfiguration) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AlarmConfiguration\"}\n\tif s.Alarms == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Alarms\"))\n\t}\n\tif s.Alarms != nil && len(s.Alarms) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Alarms\", 1))\n\t}\n\tif s.Alarms != nil {\n\t\tfor i, v := range s.Alarms {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Alarms\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAlarms sets the Alarms field's value.\nfunc (s *AlarmConfiguration) SetAlarms(v []*Alarm) *AlarmConfiguration {\n\ts.Alarms = v\n\treturn s\n}\n\n// SetIgnorePollAlarmFailure sets the IgnorePollAlarmFailure field's value.\nfunc (s *AlarmConfiguration) SetIgnorePollAlarmFailure(v bool) *AlarmConfiguration {\n\ts.IgnorePollAlarmFailure = &v\n\treturn s\n}\n\n// The details about the state of your CloudWatch alarm.\ntype AlarmStateInformation struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of your CloudWatch alarm.\n\t//\n\t// Name is a required field\n\tName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The state of your CloudWatch alarm.\n\t//\n\t// State is a required field\n\tState *string `type:\"string\" required:\"true\" enum:\"ExternalAlarmState\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AlarmStateInformation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AlarmStateInformation) GoString() string {\n\treturn s.String()\n}\n\n// SetName sets the Name field's value.\nfunc (s *AlarmStateInformation) SetName(v string) *AlarmStateInformation {\n\ts.Name = &v\n\treturn s\n}\n\n// SetState sets the State field's value.\nfunc (s *AlarmStateInformation) SetState(v string) *AlarmStateInformation {\n\ts.State = &v\n\treturn s\n}\n\n// Error returned if an attempt is made to register a patch group with a patch\n// baseline that is already registered with a different patch baseline.\ntype AlreadyExistsException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AlreadyExistsException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AlreadyExistsException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAlreadyExistsException(v protocol.ResponseMetadata) error {\n\treturn &AlreadyExistsException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AlreadyExistsException) Code() string {\n\treturn \"AlreadyExistsException\"\n}\n\n// Message returns the exception's message.\nfunc (s *AlreadyExistsException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AlreadyExistsException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AlreadyExistsException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AlreadyExistsException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AlreadyExistsException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype AssociateOpsItemRelatedItemInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The type of association that you want to create between an OpsItem and a\n\t// resource. OpsCenter supports IsParentOf and RelatesTo association types.\n\t//\n\t// AssociationType is a required field\n\tAssociationType *string `type:\"string\" required:\"true\"`\n\n\t// The ID of the OpsItem to which you want to associate a resource as a related\n\t// item.\n\t//\n\t// OpsItemId is a required field\n\tOpsItemId *string `type:\"string\" required:\"true\"`\n\n\t// The type of resource that you want to associate with an OpsItem. OpsCenter\n\t// supports the following types:\n\t//\n\t// AWS::SSMIncidents::IncidentRecord: an Incident Manager incident.\n\t//\n\t// AWS::SSM::Document: a Systems Manager (SSM) document.\n\t//\n\t// ResourceType is a required field\n\tResourceType *string `type:\"string\" required:\"true\"`\n\n\t// The Amazon Resource Name (ARN) of the Amazon Web Services resource that you\n\t// want to associate with the OpsItem.\n\t//\n\t// ResourceUri is a required field\n\tResourceUri *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociateOpsItemRelatedItemInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociateOpsItemRelatedItemInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AssociateOpsItemRelatedItemInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AssociateOpsItemRelatedItemInput\"}\n\tif s.AssociationType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AssociationType\"))\n\t}\n\tif s.OpsItemId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"OpsItemId\"))\n\t}\n\tif s.ResourceType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceType\"))\n\t}\n\tif s.ResourceUri == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceUri\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAssociationType sets the AssociationType field's value.\nfunc (s *AssociateOpsItemRelatedItemInput) SetAssociationType(v string) *AssociateOpsItemRelatedItemInput {\n\ts.AssociationType = &v\n\treturn s\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *AssociateOpsItemRelatedItemInput) SetOpsItemId(v string) *AssociateOpsItemRelatedItemInput {\n\ts.OpsItemId = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *AssociateOpsItemRelatedItemInput) SetResourceType(v string) *AssociateOpsItemRelatedItemInput {\n\ts.ResourceType = &v\n\treturn s\n}\n\n// SetResourceUri sets the ResourceUri field's value.\nfunc (s *AssociateOpsItemRelatedItemInput) SetResourceUri(v string) *AssociateOpsItemRelatedItemInput {\n\ts.ResourceUri = &v\n\treturn s\n}\n\ntype AssociateOpsItemRelatedItemOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The association ID.\n\tAssociationId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociateOpsItemRelatedItemOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociateOpsItemRelatedItemOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *AssociateOpsItemRelatedItemOutput) SetAssociationId(v string) *AssociateOpsItemRelatedItemOutput {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// You must disassociate a document from all managed nodes before you can delete\n// it.\ntype AssociatedInstances struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociatedInstances) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociatedInstances) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAssociatedInstances(v protocol.ResponseMetadata) error {\n\treturn &AssociatedInstances{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AssociatedInstances) Code() string {\n\treturn \"AssociatedInstances\"\n}\n\n// Message returns the exception's message.\nfunc (s *AssociatedInstances) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AssociatedInstances) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AssociatedInstances) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AssociatedInstances) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AssociatedInstances) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Describes an association of a Amazon Web Services Systems Manager document\n// (SSM document) and a managed node.\ntype Association struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID created by the system when you create an association. An association\n\t// is a binding between a document and a set of targets with a schedule.\n\tAssociationId *string `type:\"string\"`\n\n\t// The association name.\n\tAssociationName *string `type:\"string\"`\n\n\t// The association version.\n\tAssociationVersion *string `type:\"string\"`\n\n\t// The version of the document used in the association. If you change a document\n\t// version for a State Manager association, Systems Manager immediately runs\n\t// the association unless you previously specifed the apply-only-at-cron-interval\n\t// parameter.\n\t//\n\t// State Manager doesn't support running associations that use a new version\n\t// of a document if that document is shared from another account. State Manager\n\t// always runs the default version of a document if shared from another account,\n\t// even though the Systems Manager console shows that a new version was processed.\n\t// If you want to run an association using a new version of a document shared\n\t// form another account, you must set the document version to default.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The managed node ID.\n\tInstanceId *string `type:\"string\"`\n\n\t// The date on which the association was last run.\n\tLastExecutionDate *time.Time `type:\"timestamp\"`\n\n\t// The name of the SSM document.\n\tName *string `type:\"string\"`\n\n\t// Information about the association.\n\tOverview *AssociationOverview `type:\"structure\"`\n\n\t// A cron expression that specifies a schedule when the association runs. The\n\t// schedule runs in Coordinated Universal Time (UTC).\n\tScheduleExpression *string `min:\"1\" type:\"string\"`\n\n\t// Number of days to wait after the scheduled day to run an association.\n\tScheduleOffset *int64 `min:\"1\" type:\"integer\"`\n\n\t// A key-value mapping of document parameters to target resources. Both Targets\n\t// and TargetMaps can't be specified together.\n\tTargetMaps []map[string][]*string `type:\"list\"`\n\n\t// The managed nodes targeted by the request to create an association. You can\n\t// target all managed nodes in an Amazon Web Services account by specifying\n\t// the InstanceIds key with a value of *.\n\tTargets []*Target `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Association) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Association) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *Association) SetAssociationId(v string) *Association {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetAssociationName sets the AssociationName field's value.\nfunc (s *Association) SetAssociationName(v string) *Association {\n\ts.AssociationName = &v\n\treturn s\n}\n\n// SetAssociationVersion sets the AssociationVersion field's value.\nfunc (s *Association) SetAssociationVersion(v string) *Association {\n\ts.AssociationVersion = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *Association) SetDocumentVersion(v string) *Association {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *Association) SetInstanceId(v string) *Association {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetLastExecutionDate sets the LastExecutionDate field's value.\nfunc (s *Association) SetLastExecutionDate(v time.Time) *Association {\n\ts.LastExecutionDate = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *Association) SetName(v string) *Association {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOverview sets the Overview field's value.\nfunc (s *Association) SetOverview(v *AssociationOverview) *Association {\n\ts.Overview = v\n\treturn s\n}\n\n// SetScheduleExpression sets the ScheduleExpression field's value.\nfunc (s *Association) SetScheduleExpression(v string) *Association {\n\ts.ScheduleExpression = &v\n\treturn s\n}\n\n// SetScheduleOffset sets the ScheduleOffset field's value.\nfunc (s *Association) SetScheduleOffset(v int64) *Association {\n\ts.ScheduleOffset = &v\n\treturn s\n}\n\n// SetTargetMaps sets the TargetMaps field's value.\nfunc (s *Association) SetTargetMaps(v []map[string][]*string) *Association {\n\ts.TargetMaps = v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *Association) SetTargets(v []*Target) *Association {\n\ts.Targets = v\n\treturn s\n}\n\n// The specified association already exists.\ntype AssociationAlreadyExists struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationAlreadyExists) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationAlreadyExists) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAssociationAlreadyExists(v protocol.ResponseMetadata) error {\n\treturn &AssociationAlreadyExists{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AssociationAlreadyExists) Code() string {\n\treturn \"AssociationAlreadyExists\"\n}\n\n// Message returns the exception's message.\nfunc (s *AssociationAlreadyExists) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AssociationAlreadyExists) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AssociationAlreadyExists) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AssociationAlreadyExists) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AssociationAlreadyExists) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Describes the parameters for a document.\ntype AssociationDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The details for the CloudWatch alarm you want to apply to an automation or\n\t// command.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// By default, when you create a new associations, the system runs it immediately\n\t// after it is created and then according to the schedule you specified. Specify\n\t// this option if you don't want an association to run immediately after you\n\t// create it. This parameter isn't supported for rate expressions.\n\tApplyOnlyAtCronInterval *bool `type:\"boolean\"`\n\n\t// The association ID.\n\tAssociationId *string `type:\"string\"`\n\n\t// The association name.\n\tAssociationName *string `type:\"string\"`\n\n\t// The association version.\n\tAssociationVersion *string `type:\"string\"`\n\n\t// Choose the parameter that will define how your automation will branch out.\n\t// This target is required for associations that use an Automation runbook and\n\t// target resources by using rate controls. Automation is a capability of Amazon\n\t// Web Services Systems Manager.\n\tAutomationTargetParameterName *string `min:\"1\" type:\"string\"`\n\n\t// The names or Amazon Resource Names (ARNs) of the Change Calendar type documents\n\t// your associations are gated under. The associations only run when that change\n\t// calendar is open. For more information, see Amazon Web Services Systems Manager\n\t// Change Calendar (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar).\n\tCalendarNames []*string `type:\"list\"`\n\n\t// The severity level that is assigned to the association.\n\tComplianceSeverity *string `type:\"string\" enum:\"AssociationComplianceSeverity\"`\n\n\t// The date when the association was made.\n\tDate *time.Time `type:\"timestamp\"`\n\n\t// The document version.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The managed node ID.\n\tInstanceId *string `type:\"string\"`\n\n\t// The date on which the association was last run.\n\tLastExecutionDate *time.Time `type:\"timestamp\"`\n\n\t// The last date on which the association was successfully run.\n\tLastSuccessfulExecutionDate *time.Time `type:\"timestamp\"`\n\n\t// The date when the association was last updated.\n\tLastUpdateAssociationDate *time.Time `type:\"timestamp\"`\n\n\t// The maximum number of targets allowed to run the association at the same\n\t// time. You can specify a number, for example 10, or a percentage of the target\n\t// set, for example 10%. The default value is 100%, which means all targets\n\t// run the association at the same time.\n\t//\n\t// If a new managed node starts and attempts to run an association while Systems\n\t// Manager is running MaxConcurrency associations, the association is allowed\n\t// to run. During the next association interval, the new managed node will process\n\t// its association within the limit specified for MaxConcurrency.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The number of errors that are allowed before the system stops sending requests\n\t// to run the association on additional targets. You can specify either an absolute\n\t// number of errors, for example 10, or a percentage of the target set, for\n\t// example 10%. If you specify 3, for example, the system stops sending requests\n\t// when the fourth error is received. If you specify 0, then the system stops\n\t// sending requests after the first error is returned. If you run an association\n\t// on 50 managed nodes and set MaxError to 10%, then the system stops sending\n\t// the request when the sixth error is received.\n\t//\n\t// Executions that are already running an association when MaxErrors is reached\n\t// are allowed to complete, but some of these executions may fail as well. If\n\t// you need to ensure that there won't be more than max-errors failed executions,\n\t// set MaxConcurrency to 1 so that executions proceed one at a time.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The name of the SSM document.\n\tName *string `type:\"string\"`\n\n\t// An S3 bucket where you want to store the output details of the request.\n\tOutputLocation *InstanceAssociationOutputLocation `type:\"structure\"`\n\n\t// Information about the association.\n\tOverview *AssociationOverview `type:\"structure\"`\n\n\t// A description of the parameters for a document.\n\t//\n\t// Parameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by AssociationDescription's\n\t// String and GoString methods.\n\tParameters map[string][]*string `type:\"map\" sensitive:\"true\"`\n\n\t// A cron expression that specifies a schedule when the association runs.\n\tScheduleExpression *string `min:\"1\" type:\"string\"`\n\n\t// Number of days to wait after the scheduled day to run an association.\n\tScheduleOffset *int64 `min:\"1\" type:\"integer\"`\n\n\t// The association status.\n\tStatus *AssociationStatus `type:\"structure\"`\n\n\t// The mode for generating association compliance. You can specify AUTO or MANUAL.\n\t// In AUTO mode, the system uses the status of the association execution to\n\t// determine the compliance status. If the association execution runs successfully,\n\t// then the association is COMPLIANT. If the association execution doesn't run\n\t// successfully, the association is NON-COMPLIANT.\n\t//\n\t// In MANUAL mode, you must specify the AssociationId as a parameter for the\n\t// PutComplianceItems API operation. In this case, compliance data isn't managed\n\t// by State Manager, a capability of Amazon Web Services Systems Manager. It\n\t// is managed by your direct call to the PutComplianceItems API operation.\n\t//\n\t// By default, all associations use AUTO mode.\n\tSyncCompliance *string `type:\"string\" enum:\"AssociationSyncCompliance\"`\n\n\t// The combination of Amazon Web Services Regions and Amazon Web Services accounts\n\t// where you want to run the association.\n\tTargetLocations []*TargetLocation `min:\"1\" type:\"list\"`\n\n\t// A key-value mapping of document parameters to target resources. Both Targets\n\t// and TargetMaps can't be specified together.\n\tTargetMaps []map[string][]*string `type:\"list\"`\n\n\t// The managed nodes targeted by the request.\n\tTargets []*Target `type:\"list\"`\n\n\t// The CloudWatch alarm that was invoked during the association.\n\tTriggeredAlarms []*AlarmStateInformation `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *AssociationDescription) SetAlarmConfiguration(v *AlarmConfiguration) *AssociationDescription {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetApplyOnlyAtCronInterval sets the ApplyOnlyAtCronInterval field's value.\nfunc (s *AssociationDescription) SetApplyOnlyAtCronInterval(v bool) *AssociationDescription {\n\ts.ApplyOnlyAtCronInterval = &v\n\treturn s\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *AssociationDescription) SetAssociationId(v string) *AssociationDescription {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetAssociationName sets the AssociationName field's value.\nfunc (s *AssociationDescription) SetAssociationName(v string) *AssociationDescription {\n\ts.AssociationName = &v\n\treturn s\n}\n\n// SetAssociationVersion sets the AssociationVersion field's value.\nfunc (s *AssociationDescription) SetAssociationVersion(v string) *AssociationDescription {\n\ts.AssociationVersion = &v\n\treturn s\n}\n\n// SetAutomationTargetParameterName sets the AutomationTargetParameterName field's value.\nfunc (s *AssociationDescription) SetAutomationTargetParameterName(v string) *AssociationDescription {\n\ts.AutomationTargetParameterName = &v\n\treturn s\n}\n\n// SetCalendarNames sets the CalendarNames field's value.\nfunc (s *AssociationDescription) SetCalendarNames(v []*string) *AssociationDescription {\n\ts.CalendarNames = v\n\treturn s\n}\n\n// SetComplianceSeverity sets the ComplianceSeverity field's value.\nfunc (s *AssociationDescription) SetComplianceSeverity(v string) *AssociationDescription {\n\ts.ComplianceSeverity = &v\n\treturn s\n}\n\n// SetDate sets the Date field's value.\nfunc (s *AssociationDescription) SetDate(v time.Time) *AssociationDescription {\n\ts.Date = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *AssociationDescription) SetDocumentVersion(v string) *AssociationDescription {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *AssociationDescription) SetInstanceId(v string) *AssociationDescription {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetLastExecutionDate sets the LastExecutionDate field's value.\nfunc (s *AssociationDescription) SetLastExecutionDate(v time.Time) *AssociationDescription {\n\ts.LastExecutionDate = &v\n\treturn s\n}\n\n// SetLastSuccessfulExecutionDate sets the LastSuccessfulExecutionDate field's value.\nfunc (s *AssociationDescription) SetLastSuccessfulExecutionDate(v time.Time) *AssociationDescription {\n\ts.LastSuccessfulExecutionDate = &v\n\treturn s\n}\n\n// SetLastUpdateAssociationDate sets the LastUpdateAssociationDate field's value.\nfunc (s *AssociationDescription) SetLastUpdateAssociationDate(v time.Time) *AssociationDescription {\n\ts.LastUpdateAssociationDate = &v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *AssociationDescription) SetMaxConcurrency(v string) *AssociationDescription {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *AssociationDescription) SetMaxErrors(v string) *AssociationDescription {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *AssociationDescription) SetName(v string) *AssociationDescription {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOutputLocation sets the OutputLocation field's value.\nfunc (s *AssociationDescription) SetOutputLocation(v *InstanceAssociationOutputLocation) *AssociationDescription {\n\ts.OutputLocation = v\n\treturn s\n}\n\n// SetOverview sets the Overview field's value.\nfunc (s *AssociationDescription) SetOverview(v *AssociationOverview) *AssociationDescription {\n\ts.Overview = v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *AssociationDescription) SetParameters(v map[string][]*string) *AssociationDescription {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetScheduleExpression sets the ScheduleExpression field's value.\nfunc (s *AssociationDescription) SetScheduleExpression(v string) *AssociationDescription {\n\ts.ScheduleExpression = &v\n\treturn s\n}\n\n// SetScheduleOffset sets the ScheduleOffset field's value.\nfunc (s *AssociationDescription) SetScheduleOffset(v int64) *AssociationDescription {\n\ts.ScheduleOffset = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *AssociationDescription) SetStatus(v *AssociationStatus) *AssociationDescription {\n\ts.Status = v\n\treturn s\n}\n\n// SetSyncCompliance sets the SyncCompliance field's value.\nfunc (s *AssociationDescription) SetSyncCompliance(v string) *AssociationDescription {\n\ts.SyncCompliance = &v\n\treturn s\n}\n\n// SetTargetLocations sets the TargetLocations field's value.\nfunc (s *AssociationDescription) SetTargetLocations(v []*TargetLocation) *AssociationDescription {\n\ts.TargetLocations = v\n\treturn s\n}\n\n// SetTargetMaps sets the TargetMaps field's value.\nfunc (s *AssociationDescription) SetTargetMaps(v []map[string][]*string) *AssociationDescription {\n\ts.TargetMaps = v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *AssociationDescription) SetTargets(v []*Target) *AssociationDescription {\n\ts.Targets = v\n\treturn s\n}\n\n// SetTriggeredAlarms sets the TriggeredAlarms field's value.\nfunc (s *AssociationDescription) SetTriggeredAlarms(v []*AlarmStateInformation) *AssociationDescription {\n\ts.TriggeredAlarms = v\n\treturn s\n}\n\n// The specified association doesn't exist.\ntype AssociationDoesNotExist struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationDoesNotExist) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationDoesNotExist) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAssociationDoesNotExist(v protocol.ResponseMetadata) error {\n\treturn &AssociationDoesNotExist{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AssociationDoesNotExist) Code() string {\n\treturn \"AssociationDoesNotExist\"\n}\n\n// Message returns the exception's message.\nfunc (s *AssociationDoesNotExist) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AssociationDoesNotExist) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AssociationDoesNotExist) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AssociationDoesNotExist) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AssociationDoesNotExist) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Includes information about the specified association.\ntype AssociationExecution struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The details for the CloudWatch alarm you want to apply to an automation or\n\t// command.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// The association ID.\n\tAssociationId *string `type:\"string\"`\n\n\t// The association version.\n\tAssociationVersion *string `type:\"string\"`\n\n\t// The time the execution started.\n\tCreatedTime *time.Time `type:\"timestamp\"`\n\n\t// Detailed status information about the execution.\n\tDetailedStatus *string `type:\"string\"`\n\n\t// The execution ID for the association.\n\tExecutionId *string `type:\"string\"`\n\n\t// The date of the last execution.\n\tLastExecutionDate *time.Time `type:\"timestamp\"`\n\n\t// An aggregate status of the resources in the execution based on the status\n\t// type.\n\tResourceCountByStatus *string `type:\"string\"`\n\n\t// The status of the association execution.\n\tStatus *string `type:\"string\"`\n\n\t// The CloudWatch alarms that were invoked by the association.\n\tTriggeredAlarms []*AlarmStateInformation `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationExecution) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationExecution) GoString() string {\n\treturn s.String()\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *AssociationExecution) SetAlarmConfiguration(v *AlarmConfiguration) *AssociationExecution {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *AssociationExecution) SetAssociationId(v string) *AssociationExecution {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetAssociationVersion sets the AssociationVersion field's value.\nfunc (s *AssociationExecution) SetAssociationVersion(v string) *AssociationExecution {\n\ts.AssociationVersion = &v\n\treturn s\n}\n\n// SetCreatedTime sets the CreatedTime field's value.\nfunc (s *AssociationExecution) SetCreatedTime(v time.Time) *AssociationExecution {\n\ts.CreatedTime = &v\n\treturn s\n}\n\n// SetDetailedStatus sets the DetailedStatus field's value.\nfunc (s *AssociationExecution) SetDetailedStatus(v string) *AssociationExecution {\n\ts.DetailedStatus = &v\n\treturn s\n}\n\n// SetExecutionId sets the ExecutionId field's value.\nfunc (s *AssociationExecution) SetExecutionId(v string) *AssociationExecution {\n\ts.ExecutionId = &v\n\treturn s\n}\n\n// SetLastExecutionDate sets the LastExecutionDate field's value.\nfunc (s *AssociationExecution) SetLastExecutionDate(v time.Time) *AssociationExecution {\n\ts.LastExecutionDate = &v\n\treturn s\n}\n\n// SetResourceCountByStatus sets the ResourceCountByStatus field's value.\nfunc (s *AssociationExecution) SetResourceCountByStatus(v string) *AssociationExecution {\n\ts.ResourceCountByStatus = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *AssociationExecution) SetStatus(v string) *AssociationExecution {\n\ts.Status = &v\n\treturn s\n}\n\n// SetTriggeredAlarms sets the TriggeredAlarms field's value.\nfunc (s *AssociationExecution) SetTriggeredAlarms(v []*AlarmStateInformation) *AssociationExecution {\n\ts.TriggeredAlarms = v\n\treturn s\n}\n\n// The specified execution ID doesn't exist. Verify the ID number and try again.\ntype AssociationExecutionDoesNotExist struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationExecutionDoesNotExist) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationExecutionDoesNotExist) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAssociationExecutionDoesNotExist(v protocol.ResponseMetadata) error {\n\treturn &AssociationExecutionDoesNotExist{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AssociationExecutionDoesNotExist) Code() string {\n\treturn \"AssociationExecutionDoesNotExist\"\n}\n\n// Message returns the exception's message.\nfunc (s *AssociationExecutionDoesNotExist) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AssociationExecutionDoesNotExist) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AssociationExecutionDoesNotExist) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AssociationExecutionDoesNotExist) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AssociationExecutionDoesNotExist) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Filters used in the request.\ntype AssociationExecutionFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The key value used in the request.\n\t//\n\t// Key is a required field\n\tKey *string `type:\"string\" required:\"true\" enum:\"AssociationExecutionFilterKey\"`\n\n\t// The filter type specified in the request.\n\t//\n\t// Type is a required field\n\tType *string `type:\"string\" required:\"true\" enum:\"AssociationFilterOperatorType\"`\n\n\t// The value specified for the key.\n\t//\n\t// Value is a required field\n\tValue *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationExecutionFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationExecutionFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AssociationExecutionFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AssociationExecutionFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Type == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Type\"))\n\t}\n\tif s.Value == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Value\"))\n\t}\n\tif s.Value != nil && len(*s.Value) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Value\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *AssociationExecutionFilter) SetKey(v string) *AssociationExecutionFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *AssociationExecutionFilter) SetType(v string) *AssociationExecutionFilter {\n\ts.Type = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *AssociationExecutionFilter) SetValue(v string) *AssociationExecutionFilter {\n\ts.Value = &v\n\treturn s\n}\n\n// Includes information about the specified association execution.\ntype AssociationExecutionTarget struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The association ID.\n\tAssociationId *string `type:\"string\"`\n\n\t// The association version.\n\tAssociationVersion *string `type:\"string\"`\n\n\t// Detailed information about the execution status.\n\tDetailedStatus *string `type:\"string\"`\n\n\t// The execution ID.\n\tExecutionId *string `type:\"string\"`\n\n\t// The date of the last execution.\n\tLastExecutionDate *time.Time `type:\"timestamp\"`\n\n\t// The location where the association details are saved.\n\tOutputSource *OutputSource `type:\"structure\"`\n\n\t// The resource ID, for example, the managed node ID where the association ran.\n\tResourceId *string `min:\"1\" type:\"string\"`\n\n\t// The resource type, for example, EC2.\n\tResourceType *string `min:\"1\" type:\"string\"`\n\n\t// The association execution status.\n\tStatus *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationExecutionTarget) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationExecutionTarget) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *AssociationExecutionTarget) SetAssociationId(v string) *AssociationExecutionTarget {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetAssociationVersion sets the AssociationVersion field's value.\nfunc (s *AssociationExecutionTarget) SetAssociationVersion(v string) *AssociationExecutionTarget {\n\ts.AssociationVersion = &v\n\treturn s\n}\n\n// SetDetailedStatus sets the DetailedStatus field's value.\nfunc (s *AssociationExecutionTarget) SetDetailedStatus(v string) *AssociationExecutionTarget {\n\ts.DetailedStatus = &v\n\treturn s\n}\n\n// SetExecutionId sets the ExecutionId field's value.\nfunc (s *AssociationExecutionTarget) SetExecutionId(v string) *AssociationExecutionTarget {\n\ts.ExecutionId = &v\n\treturn s\n}\n\n// SetLastExecutionDate sets the LastExecutionDate field's value.\nfunc (s *AssociationExecutionTarget) SetLastExecutionDate(v time.Time) *AssociationExecutionTarget {\n\ts.LastExecutionDate = &v\n\treturn s\n}\n\n// SetOutputSource sets the OutputSource field's value.\nfunc (s *AssociationExecutionTarget) SetOutputSource(v *OutputSource) *AssociationExecutionTarget {\n\ts.OutputSource = v\n\treturn s\n}\n\n// SetResourceId sets the ResourceId field's value.\nfunc (s *AssociationExecutionTarget) SetResourceId(v string) *AssociationExecutionTarget {\n\ts.ResourceId = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *AssociationExecutionTarget) SetResourceType(v string) *AssociationExecutionTarget {\n\ts.ResourceType = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *AssociationExecutionTarget) SetStatus(v string) *AssociationExecutionTarget {\n\ts.Status = &v\n\treturn s\n}\n\n// Filters for the association execution.\ntype AssociationExecutionTargetsFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The key value used in the request.\n\t//\n\t// Key is a required field\n\tKey *string `type:\"string\" required:\"true\" enum:\"AssociationExecutionTargetsFilterKey\"`\n\n\t// The value specified for the key.\n\t//\n\t// Value is a required field\n\tValue *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationExecutionTargetsFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationExecutionTargetsFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AssociationExecutionTargetsFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AssociationExecutionTargetsFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Value == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Value\"))\n\t}\n\tif s.Value != nil && len(*s.Value) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Value\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *AssociationExecutionTargetsFilter) SetKey(v string) *AssociationExecutionTargetsFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *AssociationExecutionTargetsFilter) SetValue(v string) *AssociationExecutionTargetsFilter {\n\ts.Value = &v\n\treturn s\n}\n\n// Describes a filter.\ntype AssociationFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter.\n\t//\n\t// InstanceId has been deprecated.\n\t//\n\t// Key is a required field\n\tKey *string `locationName:\"key\" type:\"string\" required:\"true\" enum:\"AssociationFilterKey\"`\n\n\t// The filter value.\n\t//\n\t// Value is a required field\n\tValue *string `locationName:\"value\" min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AssociationFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AssociationFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Value == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Value\"))\n\t}\n\tif s.Value != nil && len(*s.Value) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Value\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *AssociationFilter) SetKey(v string) *AssociationFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *AssociationFilter) SetValue(v string) *AssociationFilter {\n\ts.Value = &v\n\treturn s\n}\n\n// You can have at most 2,000 active associations.\ntype AssociationLimitExceeded struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationLimitExceeded) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationLimitExceeded) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAssociationLimitExceeded(v protocol.ResponseMetadata) error {\n\treturn &AssociationLimitExceeded{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AssociationLimitExceeded) Code() string {\n\treturn \"AssociationLimitExceeded\"\n}\n\n// Message returns the exception's message.\nfunc (s *AssociationLimitExceeded) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AssociationLimitExceeded) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AssociationLimitExceeded) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AssociationLimitExceeded) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AssociationLimitExceeded) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Information about the association.\ntype AssociationOverview struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Returns the number of targets for the association status. For example, if\n\t// you created an association with two managed nodes, and one of them was successful,\n\t// this would return the count of managed nodes by status.\n\tAssociationStatusAggregatedCount map[string]*int64 `type:\"map\"`\n\n\t// A detailed status of the association.\n\tDetailedStatus *string `type:\"string\"`\n\n\t// The status of the association. Status can be: Pending, Success, or Failed.\n\tStatus *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationOverview) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationOverview) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationStatusAggregatedCount sets the AssociationStatusAggregatedCount field's value.\nfunc (s *AssociationOverview) SetAssociationStatusAggregatedCount(v map[string]*int64) *AssociationOverview {\n\ts.AssociationStatusAggregatedCount = v\n\treturn s\n}\n\n// SetDetailedStatus sets the DetailedStatus field's value.\nfunc (s *AssociationOverview) SetDetailedStatus(v string) *AssociationOverview {\n\ts.DetailedStatus = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *AssociationOverview) SetStatus(v string) *AssociationOverview {\n\ts.Status = &v\n\treturn s\n}\n\n// Describes an association status.\ntype AssociationStatus struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A user-defined string.\n\tAdditionalInfo *string `type:\"string\"`\n\n\t// The date when the status changed.\n\t//\n\t// Date is a required field\n\tDate *time.Time `type:\"timestamp\" required:\"true\"`\n\n\t// The reason for the status.\n\t//\n\t// Message is a required field\n\tMessage *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The status.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\" enum:\"AssociationStatusName\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationStatus) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationStatus) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AssociationStatus) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AssociationStatus\"}\n\tif s.Date == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Date\"))\n\t}\n\tif s.Message == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Message\"))\n\t}\n\tif s.Message != nil && len(*s.Message) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Message\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAdditionalInfo sets the AdditionalInfo field's value.\nfunc (s *AssociationStatus) SetAdditionalInfo(v string) *AssociationStatus {\n\ts.AdditionalInfo = &v\n\treturn s\n}\n\n// SetDate sets the Date field's value.\nfunc (s *AssociationStatus) SetDate(v time.Time) *AssociationStatus {\n\ts.Date = &v\n\treturn s\n}\n\n// SetMessage sets the Message field's value.\nfunc (s *AssociationStatus) SetMessage(v string) *AssociationStatus {\n\ts.Message = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *AssociationStatus) SetName(v string) *AssociationStatus {\n\ts.Name = &v\n\treturn s\n}\n\n// Information about the association version.\ntype AssociationVersionInfo struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// By default, when you create a new associations, the system runs it immediately\n\t// after it is created and then according to the schedule you specified. Specify\n\t// this option if you don't want an association to run immediately after you\n\t// create it. This parameter isn't supported for rate expressions.\n\tApplyOnlyAtCronInterval *bool `type:\"boolean\"`\n\n\t// The ID created by the system when the association was created.\n\tAssociationId *string `type:\"string\"`\n\n\t// The name specified for the association version when the association version\n\t// was created.\n\tAssociationName *string `type:\"string\"`\n\n\t// The association version.\n\tAssociationVersion *string `type:\"string\"`\n\n\t// The names or Amazon Resource Names (ARNs) of the Change Calendar type documents\n\t// your associations are gated under. The associations for this version only\n\t// run when that Change Calendar is open. For more information, see Amazon Web\n\t// Services Systems Manager Change Calendar (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar).\n\tCalendarNames []*string `type:\"list\"`\n\n\t// The severity level that is assigned to the association.\n\tComplianceSeverity *string `type:\"string\" enum:\"AssociationComplianceSeverity\"`\n\n\t// The date the association version was created.\n\tCreatedDate *time.Time `type:\"timestamp\"`\n\n\t// The version of an Amazon Web Services Systems Manager document (SSM document)\n\t// used when the association version was created.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The maximum number of targets allowed to run the association at the same\n\t// time. You can specify a number, for example 10, or a percentage of the target\n\t// set, for example 10%. The default value is 100%, which means all targets\n\t// run the association at the same time.\n\t//\n\t// If a new managed node starts and attempts to run an association while Systems\n\t// Manager is running MaxConcurrency associations, the association is allowed\n\t// to run. During the next association interval, the new managed node will process\n\t// its association within the limit specified for MaxConcurrency.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The number of errors that are allowed before the system stops sending requests\n\t// to run the association on additional targets. You can specify either an absolute\n\t// number of errors, for example 10, or a percentage of the target set, for\n\t// example 10%. If you specify 3, for example, the system stops sending requests\n\t// when the fourth error is received. If you specify 0, then the system stops\n\t// sending requests after the first error is returned. If you run an association\n\t// on 50 managed nodes and set MaxError to 10%, then the system stops sending\n\t// the request when the sixth error is received.\n\t//\n\t// Executions that are already running an association when MaxErrors is reached\n\t// are allowed to complete, but some of these executions may fail as well. If\n\t// you need to ensure that there won't be more than max-errors failed executions,\n\t// set MaxConcurrency to 1 so that executions proceed one at a time.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The name specified when the association was created.\n\tName *string `type:\"string\"`\n\n\t// The location in Amazon S3 specified for the association when the association\n\t// version was created.\n\tOutputLocation *InstanceAssociationOutputLocation `type:\"structure\"`\n\n\t// Parameters specified when the association version was created.\n\t//\n\t// Parameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by AssociationVersionInfo's\n\t// String and GoString methods.\n\tParameters map[string][]*string `type:\"map\" sensitive:\"true\"`\n\n\t// The cron or rate schedule specified for the association when the association\n\t// version was created.\n\tScheduleExpression *string `min:\"1\" type:\"string\"`\n\n\t// Number of days to wait after the scheduled day to run an association.\n\tScheduleOffset *int64 `min:\"1\" type:\"integer\"`\n\n\t// The mode for generating association compliance. You can specify AUTO or MANUAL.\n\t// In AUTO mode, the system uses the status of the association execution to\n\t// determine the compliance status. If the association execution runs successfully,\n\t// then the association is COMPLIANT. If the association execution doesn't run\n\t// successfully, the association is NON-COMPLIANT.\n\t//\n\t// In MANUAL mode, you must specify the AssociationId as a parameter for the\n\t// PutComplianceItems API operation. In this case, compliance data isn't managed\n\t// by State Manager, a capability of Amazon Web Services Systems Manager. It\n\t// is managed by your direct call to the PutComplianceItems API operation.\n\t//\n\t// By default, all associations use AUTO mode.\n\tSyncCompliance *string `type:\"string\" enum:\"AssociationSyncCompliance\"`\n\n\t// The combination of Amazon Web Services Regions and Amazon Web Services accounts\n\t// where you wanted to run the association when this association version was\n\t// created.\n\tTargetLocations []*TargetLocation `min:\"1\" type:\"list\"`\n\n\t// A key-value mapping of document parameters to target resources. Both Targets\n\t// and TargetMaps can't be specified together.\n\tTargetMaps []map[string][]*string `type:\"list\"`\n\n\t// The targets specified for the association when the association version was\n\t// created.\n\tTargets []*Target `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationVersionInfo) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationVersionInfo) GoString() string {\n\treturn s.String()\n}\n\n// SetApplyOnlyAtCronInterval sets the ApplyOnlyAtCronInterval field's value.\nfunc (s *AssociationVersionInfo) SetApplyOnlyAtCronInterval(v bool) *AssociationVersionInfo {\n\ts.ApplyOnlyAtCronInterval = &v\n\treturn s\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *AssociationVersionInfo) SetAssociationId(v string) *AssociationVersionInfo {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetAssociationName sets the AssociationName field's value.\nfunc (s *AssociationVersionInfo) SetAssociationName(v string) *AssociationVersionInfo {\n\ts.AssociationName = &v\n\treturn s\n}\n\n// SetAssociationVersion sets the AssociationVersion field's value.\nfunc (s *AssociationVersionInfo) SetAssociationVersion(v string) *AssociationVersionInfo {\n\ts.AssociationVersion = &v\n\treturn s\n}\n\n// SetCalendarNames sets the CalendarNames field's value.\nfunc (s *AssociationVersionInfo) SetCalendarNames(v []*string) *AssociationVersionInfo {\n\ts.CalendarNames = v\n\treturn s\n}\n\n// SetComplianceSeverity sets the ComplianceSeverity field's value.\nfunc (s *AssociationVersionInfo) SetComplianceSeverity(v string) *AssociationVersionInfo {\n\ts.ComplianceSeverity = &v\n\treturn s\n}\n\n// SetCreatedDate sets the CreatedDate field's value.\nfunc (s *AssociationVersionInfo) SetCreatedDate(v time.Time) *AssociationVersionInfo {\n\ts.CreatedDate = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *AssociationVersionInfo) SetDocumentVersion(v string) *AssociationVersionInfo {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *AssociationVersionInfo) SetMaxConcurrency(v string) *AssociationVersionInfo {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *AssociationVersionInfo) SetMaxErrors(v string) *AssociationVersionInfo {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *AssociationVersionInfo) SetName(v string) *AssociationVersionInfo {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOutputLocation sets the OutputLocation field's value.\nfunc (s *AssociationVersionInfo) SetOutputLocation(v *InstanceAssociationOutputLocation) *AssociationVersionInfo {\n\ts.OutputLocation = v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *AssociationVersionInfo) SetParameters(v map[string][]*string) *AssociationVersionInfo {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetScheduleExpression sets the ScheduleExpression field's value.\nfunc (s *AssociationVersionInfo) SetScheduleExpression(v string) *AssociationVersionInfo {\n\ts.ScheduleExpression = &v\n\treturn s\n}\n\n// SetScheduleOffset sets the ScheduleOffset field's value.\nfunc (s *AssociationVersionInfo) SetScheduleOffset(v int64) *AssociationVersionInfo {\n\ts.ScheduleOffset = &v\n\treturn s\n}\n\n// SetSyncCompliance sets the SyncCompliance field's value.\nfunc (s *AssociationVersionInfo) SetSyncCompliance(v string) *AssociationVersionInfo {\n\ts.SyncCompliance = &v\n\treturn s\n}\n\n// SetTargetLocations sets the TargetLocations field's value.\nfunc (s *AssociationVersionInfo) SetTargetLocations(v []*TargetLocation) *AssociationVersionInfo {\n\ts.TargetLocations = v\n\treturn s\n}\n\n// SetTargetMaps sets the TargetMaps field's value.\nfunc (s *AssociationVersionInfo) SetTargetMaps(v []map[string][]*string) *AssociationVersionInfo {\n\ts.TargetMaps = v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *AssociationVersionInfo) SetTargets(v []*Target) *AssociationVersionInfo {\n\ts.Targets = v\n\treturn s\n}\n\n// You have reached the maximum number versions allowed for an association.\n// Each association has a limit of 1,000 versions.\ntype AssociationVersionLimitExceeded struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationVersionLimitExceeded) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssociationVersionLimitExceeded) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAssociationVersionLimitExceeded(v protocol.ResponseMetadata) error {\n\treturn &AssociationVersionLimitExceeded{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AssociationVersionLimitExceeded) Code() string {\n\treturn \"AssociationVersionLimitExceeded\"\n}\n\n// Message returns the exception's message.\nfunc (s *AssociationVersionLimitExceeded) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AssociationVersionLimitExceeded) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AssociationVersionLimitExceeded) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AssociationVersionLimitExceeded) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AssociationVersionLimitExceeded) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// A structure that includes attributes that describe a document attachment.\ntype AttachmentContent struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The cryptographic hash value of the document content.\n\tHash *string `type:\"string\"`\n\n\t// The hash algorithm used to calculate the hash value.\n\tHashType *string `type:\"string\" enum:\"AttachmentHashType\"`\n\n\t// The name of an attachment.\n\tName *string `type:\"string\"`\n\n\t// The size of an attachment in bytes.\n\tSize *int64 `type:\"long\"`\n\n\t// The URL location of the attachment content.\n\tUrl *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AttachmentContent) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AttachmentContent) GoString() string {\n\treturn s.String()\n}\n\n// SetHash sets the Hash field's value.\nfunc (s *AttachmentContent) SetHash(v string) *AttachmentContent {\n\ts.Hash = &v\n\treturn s\n}\n\n// SetHashType sets the HashType field's value.\nfunc (s *AttachmentContent) SetHashType(v string) *AttachmentContent {\n\ts.HashType = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *AttachmentContent) SetName(v string) *AttachmentContent {\n\ts.Name = &v\n\treturn s\n}\n\n// SetSize sets the Size field's value.\nfunc (s *AttachmentContent) SetSize(v int64) *AttachmentContent {\n\ts.Size = &v\n\treturn s\n}\n\n// SetUrl sets the Url field's value.\nfunc (s *AttachmentContent) SetUrl(v string) *AttachmentContent {\n\ts.Url = &v\n\treturn s\n}\n\n// An attribute of an attachment, such as the attachment name.\ntype AttachmentInformation struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the attachment.\n\tName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AttachmentInformation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AttachmentInformation) GoString() string {\n\treturn s.String()\n}\n\n// SetName sets the Name field's value.\nfunc (s *AttachmentInformation) SetName(v string) *AttachmentInformation {\n\ts.Name = &v\n\treturn s\n}\n\n// Identifying information about a document attachment, including the file name\n// and a key-value pair that identifies the location of an attachment to a document.\ntype AttachmentsSource struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The key of a key-value pair that identifies the location of an attachment\n\t// to a document.\n\tKey *string `type:\"string\" enum:\"AttachmentsSourceKey\"`\n\n\t// The name of the document attachment file.\n\tName *string `type:\"string\"`\n\n\t// The value of a key-value pair that identifies the location of an attachment\n\t// to a document. The format for Value depends on the type of key you specify.\n\t//\n\t//    * For the key SourceUrl, the value is an S3 bucket location. For example:\n\t//    \"Values\": [ \"s3://doc-example-bucket/my-folder\" ]\n\t//\n\t//    * For the key S3FileUrl, the value is a file in an S3 bucket. For example:\n\t//    \"Values\": [ \"s3://doc-example-bucket/my-folder/my-file.py\" ]\n\t//\n\t//    * For the key AttachmentReference, the value is constructed from the name\n\t//    of another SSM document in your account, a version number of that document,\n\t//    and a file attached to that document version that you want to reuse. For\n\t//    example: \"Values\": [ \"MyOtherDocument/3/my-other-file.py\" ] However, if\n\t//    the SSM document is shared with you from another account, the full SSM\n\t//    document ARN must be specified instead of the document name only. For\n\t//    example: \"Values\": [ \"arn:aws:ssm:us-east-2:111122223333:document/OtherAccountDocument/3/their-file.py\"\n\t//    ]\n\tValues []*string `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AttachmentsSource) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AttachmentsSource) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AttachmentsSource) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AttachmentsSource\"}\n\tif s.Values != nil && len(s.Values) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Values\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *AttachmentsSource) SetKey(v string) *AttachmentsSource {\n\ts.Key = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *AttachmentsSource) SetName(v string) *AttachmentsSource {\n\ts.Name = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *AttachmentsSource) SetValues(v []*string) *AttachmentsSource {\n\ts.Values = v\n\treturn s\n}\n\n// Indicates that the Change Manager change template used in the change request\n// was rejected or is still in a pending state.\ntype AutomationDefinitionNotApprovedException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationDefinitionNotApprovedException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationDefinitionNotApprovedException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAutomationDefinitionNotApprovedException(v protocol.ResponseMetadata) error {\n\treturn &AutomationDefinitionNotApprovedException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AutomationDefinitionNotApprovedException) Code() string {\n\treturn \"AutomationDefinitionNotApprovedException\"\n}\n\n// Message returns the exception's message.\nfunc (s *AutomationDefinitionNotApprovedException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AutomationDefinitionNotApprovedException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AutomationDefinitionNotApprovedException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AutomationDefinitionNotApprovedException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AutomationDefinitionNotApprovedException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// An Automation runbook with the specified name couldn't be found.\ntype AutomationDefinitionNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationDefinitionNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationDefinitionNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAutomationDefinitionNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &AutomationDefinitionNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AutomationDefinitionNotFoundException) Code() string {\n\treturn \"AutomationDefinitionNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *AutomationDefinitionNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AutomationDefinitionNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AutomationDefinitionNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AutomationDefinitionNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AutomationDefinitionNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// An Automation runbook with the specified name and version couldn't be found.\ntype AutomationDefinitionVersionNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationDefinitionVersionNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationDefinitionVersionNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAutomationDefinitionVersionNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &AutomationDefinitionVersionNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AutomationDefinitionVersionNotFoundException) Code() string {\n\treturn \"AutomationDefinitionVersionNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *AutomationDefinitionVersionNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AutomationDefinitionVersionNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AutomationDefinitionVersionNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AutomationDefinitionVersionNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AutomationDefinitionVersionNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Detailed information about the current state of an individual Automation\n// execution.\ntype AutomationExecution struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The details for the CloudWatch alarm applied to your automation.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// The ID of a State Manager association used in the Automation operation.\n\tAssociationId *string `type:\"string\"`\n\n\t// The execution ID.\n\tAutomationExecutionId *string `min:\"36\" type:\"string\"`\n\n\t// The execution status of the Automation.\n\tAutomationExecutionStatus *string `type:\"string\" enum:\"AutomationExecutionStatus\"`\n\n\t// The subtype of the Automation operation. Currently, the only supported value\n\t// is ChangeRequest.\n\tAutomationSubtype *string `type:\"string\" enum:\"AutomationSubtype\"`\n\n\t// The name of the Change Manager change request.\n\tChangeRequestName *string `min:\"1\" type:\"string\"`\n\n\t// The action of the step that is currently running.\n\tCurrentAction *string `type:\"string\"`\n\n\t// The name of the step that is currently running.\n\tCurrentStepName *string `type:\"string\"`\n\n\t// The name of the Automation runbook used during the execution.\n\tDocumentName *string `type:\"string\"`\n\n\t// The version of the document to use during execution.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The Amazon Resource Name (ARN) of the user who ran the automation.\n\tExecutedBy *string `type:\"string\"`\n\n\t// The time the execution finished.\n\tExecutionEndTime *time.Time `type:\"timestamp\"`\n\n\t// The time the execution started.\n\tExecutionStartTime *time.Time `type:\"timestamp\"`\n\n\t// A message describing why an execution has failed, if the status is set to\n\t// Failed.\n\tFailureMessage *string `type:\"string\"`\n\n\t// The MaxConcurrency value specified by the user when the execution started.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The MaxErrors value specified by the user when the execution started.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The automation execution mode.\n\tMode *string `type:\"string\" enum:\"ExecutionMode\"`\n\n\t// The ID of an OpsItem that is created to represent a Change Manager change\n\t// request.\n\tOpsItemId *string `type:\"string\"`\n\n\t// The list of execution outputs as defined in the Automation runbook.\n\tOutputs map[string][]*string `min:\"1\" type:\"map\"`\n\n\t// The key-value map of execution parameters, which were supplied when calling\n\t// StartAutomationExecution.\n\tParameters map[string][]*string `min:\"1\" type:\"map\"`\n\n\t// The AutomationExecutionId of the parent automation.\n\tParentAutomationExecutionId *string `min:\"36\" type:\"string\"`\n\n\t// An aggregate of step execution statuses displayed in the Amazon Web Services\n\t// Systems Manager console for a multi-Region and multi-account Automation execution.\n\tProgressCounters *ProgressCounters `type:\"structure\"`\n\n\t// A list of resolved targets in the rate control execution.\n\tResolvedTargets *ResolvedTargets `type:\"structure\"`\n\n\t// Information about the Automation runbooks that are run as part of a runbook\n\t// workflow.\n\t//\n\t// The Automation runbooks specified for the runbook workflow can't run until\n\t// all required approvals for the change request have been received.\n\tRunbooks []*Runbook `min:\"1\" type:\"list\"`\n\n\t// The date and time the Automation operation is scheduled to start.\n\tScheduledTime *time.Time `type:\"timestamp\"`\n\n\t// A list of details about the current state of all steps that comprise an execution.\n\t// An Automation runbook contains a list of steps that are run in order.\n\tStepExecutions []*StepExecution `type:\"list\"`\n\n\t// A boolean value that indicates if the response contains the full list of\n\t// the Automation step executions. If true, use the DescribeAutomationStepExecutions\n\t// API operation to get the full list of step executions.\n\tStepExecutionsTruncated *bool `type:\"boolean\"`\n\n\t// The target of the execution.\n\tTarget *string `type:\"string\"`\n\n\t// The combination of Amazon Web Services Regions and/or Amazon Web Services\n\t// accounts where you want to run the Automation.\n\tTargetLocations []*TargetLocation `min:\"1\" type:\"list\"`\n\n\t// The specified key-value mapping of document parameters to target resources.\n\tTargetMaps []map[string][]*string `type:\"list\"`\n\n\t// The parameter name.\n\tTargetParameterName *string `min:\"1\" type:\"string\"`\n\n\t// The specified targets.\n\tTargets []*Target `type:\"list\"`\n\n\t// The CloudWatch alarm that was invoked by the automation.\n\tTriggeredAlarms []*AlarmStateInformation `min:\"1\" type:\"list\"`\n\n\t// Variables defined for the automation.\n\tVariables map[string][]*string `min:\"1\" type:\"map\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationExecution) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationExecution) GoString() string {\n\treturn s.String()\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *AutomationExecution) SetAlarmConfiguration(v *AlarmConfiguration) *AutomationExecution {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *AutomationExecution) SetAssociationId(v string) *AutomationExecution {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetAutomationExecutionId sets the AutomationExecutionId field's value.\nfunc (s *AutomationExecution) SetAutomationExecutionId(v string) *AutomationExecution {\n\ts.AutomationExecutionId = &v\n\treturn s\n}\n\n// SetAutomationExecutionStatus sets the AutomationExecutionStatus field's value.\nfunc (s *AutomationExecution) SetAutomationExecutionStatus(v string) *AutomationExecution {\n\ts.AutomationExecutionStatus = &v\n\treturn s\n}\n\n// SetAutomationSubtype sets the AutomationSubtype field's value.\nfunc (s *AutomationExecution) SetAutomationSubtype(v string) *AutomationExecution {\n\ts.AutomationSubtype = &v\n\treturn s\n}\n\n// SetChangeRequestName sets the ChangeRequestName field's value.\nfunc (s *AutomationExecution) SetChangeRequestName(v string) *AutomationExecution {\n\ts.ChangeRequestName = &v\n\treturn s\n}\n\n// SetCurrentAction sets the CurrentAction field's value.\nfunc (s *AutomationExecution) SetCurrentAction(v string) *AutomationExecution {\n\ts.CurrentAction = &v\n\treturn s\n}\n\n// SetCurrentStepName sets the CurrentStepName field's value.\nfunc (s *AutomationExecution) SetCurrentStepName(v string) *AutomationExecution {\n\ts.CurrentStepName = &v\n\treturn s\n}\n\n// SetDocumentName sets the DocumentName field's value.\nfunc (s *AutomationExecution) SetDocumentName(v string) *AutomationExecution {\n\ts.DocumentName = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *AutomationExecution) SetDocumentVersion(v string) *AutomationExecution {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetExecutedBy sets the ExecutedBy field's value.\nfunc (s *AutomationExecution) SetExecutedBy(v string) *AutomationExecution {\n\ts.ExecutedBy = &v\n\treturn s\n}\n\n// SetExecutionEndTime sets the ExecutionEndTime field's value.\nfunc (s *AutomationExecution) SetExecutionEndTime(v time.Time) *AutomationExecution {\n\ts.ExecutionEndTime = &v\n\treturn s\n}\n\n// SetExecutionStartTime sets the ExecutionStartTime field's value.\nfunc (s *AutomationExecution) SetExecutionStartTime(v time.Time) *AutomationExecution {\n\ts.ExecutionStartTime = &v\n\treturn s\n}\n\n// SetFailureMessage sets the FailureMessage field's value.\nfunc (s *AutomationExecution) SetFailureMessage(v string) *AutomationExecution {\n\ts.FailureMessage = &v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *AutomationExecution) SetMaxConcurrency(v string) *AutomationExecution {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *AutomationExecution) SetMaxErrors(v string) *AutomationExecution {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetMode sets the Mode field's value.\nfunc (s *AutomationExecution) SetMode(v string) *AutomationExecution {\n\ts.Mode = &v\n\treturn s\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *AutomationExecution) SetOpsItemId(v string) *AutomationExecution {\n\ts.OpsItemId = &v\n\treturn s\n}\n\n// SetOutputs sets the Outputs field's value.\nfunc (s *AutomationExecution) SetOutputs(v map[string][]*string) *AutomationExecution {\n\ts.Outputs = v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *AutomationExecution) SetParameters(v map[string][]*string) *AutomationExecution {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetParentAutomationExecutionId sets the ParentAutomationExecutionId field's value.\nfunc (s *AutomationExecution) SetParentAutomationExecutionId(v string) *AutomationExecution {\n\ts.ParentAutomationExecutionId = &v\n\treturn s\n}\n\n// SetProgressCounters sets the ProgressCounters field's value.\nfunc (s *AutomationExecution) SetProgressCounters(v *ProgressCounters) *AutomationExecution {\n\ts.ProgressCounters = v\n\treturn s\n}\n\n// SetResolvedTargets sets the ResolvedTargets field's value.\nfunc (s *AutomationExecution) SetResolvedTargets(v *ResolvedTargets) *AutomationExecution {\n\ts.ResolvedTargets = v\n\treturn s\n}\n\n// SetRunbooks sets the Runbooks field's value.\nfunc (s *AutomationExecution) SetRunbooks(v []*Runbook) *AutomationExecution {\n\ts.Runbooks = v\n\treturn s\n}\n\n// SetScheduledTime sets the ScheduledTime field's value.\nfunc (s *AutomationExecution) SetScheduledTime(v time.Time) *AutomationExecution {\n\ts.ScheduledTime = &v\n\treturn s\n}\n\n// SetStepExecutions sets the StepExecutions field's value.\nfunc (s *AutomationExecution) SetStepExecutions(v []*StepExecution) *AutomationExecution {\n\ts.StepExecutions = v\n\treturn s\n}\n\n// SetStepExecutionsTruncated sets the StepExecutionsTruncated field's value.\nfunc (s *AutomationExecution) SetStepExecutionsTruncated(v bool) *AutomationExecution {\n\ts.StepExecutionsTruncated = &v\n\treturn s\n}\n\n// SetTarget sets the Target field's value.\nfunc (s *AutomationExecution) SetTarget(v string) *AutomationExecution {\n\ts.Target = &v\n\treturn s\n}\n\n// SetTargetLocations sets the TargetLocations field's value.\nfunc (s *AutomationExecution) SetTargetLocations(v []*TargetLocation) *AutomationExecution {\n\ts.TargetLocations = v\n\treturn s\n}\n\n// SetTargetMaps sets the TargetMaps field's value.\nfunc (s *AutomationExecution) SetTargetMaps(v []map[string][]*string) *AutomationExecution {\n\ts.TargetMaps = v\n\treturn s\n}\n\n// SetTargetParameterName sets the TargetParameterName field's value.\nfunc (s *AutomationExecution) SetTargetParameterName(v string) *AutomationExecution {\n\ts.TargetParameterName = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *AutomationExecution) SetTargets(v []*Target) *AutomationExecution {\n\ts.Targets = v\n\treturn s\n}\n\n// SetTriggeredAlarms sets the TriggeredAlarms field's value.\nfunc (s *AutomationExecution) SetTriggeredAlarms(v []*AlarmStateInformation) *AutomationExecution {\n\ts.TriggeredAlarms = v\n\treturn s\n}\n\n// SetVariables sets the Variables field's value.\nfunc (s *AutomationExecution) SetVariables(v map[string][]*string) *AutomationExecution {\n\ts.Variables = v\n\treturn s\n}\n\n// A filter used to match specific automation executions. This is used to limit\n// the scope of Automation execution information returned.\ntype AutomationExecutionFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more keys to limit the results.\n\t//\n\t// Key is a required field\n\tKey *string `type:\"string\" required:\"true\" enum:\"AutomationExecutionFilterKey\"`\n\n\t// The values used to limit the execution information associated with the filter's\n\t// key.\n\t//\n\t// Values is a required field\n\tValues []*string `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationExecutionFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationExecutionFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AutomationExecutionFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AutomationExecutionFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Values == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Values\"))\n\t}\n\tif s.Values != nil && len(s.Values) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Values\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *AutomationExecutionFilter) SetKey(v string) *AutomationExecutionFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *AutomationExecutionFilter) SetValues(v []*string) *AutomationExecutionFilter {\n\ts.Values = v\n\treturn s\n}\n\n// The number of simultaneously running Automation executions exceeded the allowable\n// limit.\ntype AutomationExecutionLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationExecutionLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationExecutionLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAutomationExecutionLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &AutomationExecutionLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AutomationExecutionLimitExceededException) Code() string {\n\treturn \"AutomationExecutionLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *AutomationExecutionLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AutomationExecutionLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AutomationExecutionLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AutomationExecutionLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AutomationExecutionLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Details about a specific Automation execution.\ntype AutomationExecutionMetadata struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The details for the CloudWatch alarm applied to your automation.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// The ID of a State Manager association used in the Automation operation.\n\tAssociationId *string `type:\"string\"`\n\n\t// The execution ID.\n\tAutomationExecutionId *string `min:\"36\" type:\"string\"`\n\n\t// The status of the execution.\n\tAutomationExecutionStatus *string `type:\"string\" enum:\"AutomationExecutionStatus\"`\n\n\t// The subtype of the Automation operation. Currently, the only supported value\n\t// is ChangeRequest.\n\tAutomationSubtype *string `type:\"string\" enum:\"AutomationSubtype\"`\n\n\t// Use this filter with DescribeAutomationExecutions. Specify either Local or\n\t// CrossAccount. CrossAccount is an Automation that runs in multiple Amazon\n\t// Web Services Regions and Amazon Web Services accounts. For more information,\n\t// see Running Automation workflows in multiple Amazon Web Services Regions\n\t// and accounts (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation-multiple-accounts-and-regions.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tAutomationType *string `type:\"string\" enum:\"AutomationType\"`\n\n\t// The name of the Change Manager change request.\n\tChangeRequestName *string `min:\"1\" type:\"string\"`\n\n\t// The action of the step that is currently running.\n\tCurrentAction *string `type:\"string\"`\n\n\t// The name of the step that is currently running.\n\tCurrentStepName *string `type:\"string\"`\n\n\t// The name of the Automation runbook used during execution.\n\tDocumentName *string `type:\"string\"`\n\n\t// The document version used during the execution.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The IAM role ARN of the user who ran the automation.\n\tExecutedBy *string `type:\"string\"`\n\n\t// The time the execution finished. This isn't populated if the execution is\n\t// still in progress.\n\tExecutionEndTime *time.Time `type:\"timestamp\"`\n\n\t// The time the execution started.\n\tExecutionStartTime *time.Time `type:\"timestamp\"`\n\n\t// The list of execution outputs as defined in the Automation runbook.\n\tFailureMessage *string `type:\"string\"`\n\n\t// An S3 bucket where execution information is stored.\n\tLogFile *string `type:\"string\"`\n\n\t// The MaxConcurrency value specified by the user when starting the automation.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The MaxErrors value specified by the user when starting the automation.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The Automation execution mode.\n\tMode *string `type:\"string\" enum:\"ExecutionMode\"`\n\n\t// The ID of an OpsItem that is created to represent a Change Manager change\n\t// request.\n\tOpsItemId *string `type:\"string\"`\n\n\t// The list of execution outputs as defined in the Automation runbook.\n\tOutputs map[string][]*string `min:\"1\" type:\"map\"`\n\n\t// The execution ID of the parent automation.\n\tParentAutomationExecutionId *string `min:\"36\" type:\"string\"`\n\n\t// A list of targets that resolved during the execution.\n\tResolvedTargets *ResolvedTargets `type:\"structure\"`\n\n\t// Information about the Automation runbooks that are run during a runbook workflow\n\t// in Change Manager.\n\t//\n\t// The Automation runbooks specified for the runbook workflow can't run until\n\t// all required approvals for the change request have been received.\n\tRunbooks []*Runbook `min:\"1\" type:\"list\"`\n\n\t// The date and time the Automation operation is scheduled to start.\n\tScheduledTime *time.Time `type:\"timestamp\"`\n\n\t// The list of execution outputs as defined in the Automation runbook.\n\tTarget *string `type:\"string\"`\n\n\t// The specified key-value mapping of document parameters to target resources.\n\tTargetMaps []map[string][]*string `type:\"list\"`\n\n\t// The list of execution outputs as defined in the Automation runbook.\n\tTargetParameterName *string `min:\"1\" type:\"string\"`\n\n\t// The targets defined by the user when starting the automation.\n\tTargets []*Target `type:\"list\"`\n\n\t// The CloudWatch alarm that was invoked by the automation.\n\tTriggeredAlarms []*AlarmStateInformation `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationExecutionMetadata) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationExecutionMetadata) GoString() string {\n\treturn s.String()\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *AutomationExecutionMetadata) SetAlarmConfiguration(v *AlarmConfiguration) *AutomationExecutionMetadata {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *AutomationExecutionMetadata) SetAssociationId(v string) *AutomationExecutionMetadata {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetAutomationExecutionId sets the AutomationExecutionId field's value.\nfunc (s *AutomationExecutionMetadata) SetAutomationExecutionId(v string) *AutomationExecutionMetadata {\n\ts.AutomationExecutionId = &v\n\treturn s\n}\n\n// SetAutomationExecutionStatus sets the AutomationExecutionStatus field's value.\nfunc (s *AutomationExecutionMetadata) SetAutomationExecutionStatus(v string) *AutomationExecutionMetadata {\n\ts.AutomationExecutionStatus = &v\n\treturn s\n}\n\n// SetAutomationSubtype sets the AutomationSubtype field's value.\nfunc (s *AutomationExecutionMetadata) SetAutomationSubtype(v string) *AutomationExecutionMetadata {\n\ts.AutomationSubtype = &v\n\treturn s\n}\n\n// SetAutomationType sets the AutomationType field's value.\nfunc (s *AutomationExecutionMetadata) SetAutomationType(v string) *AutomationExecutionMetadata {\n\ts.AutomationType = &v\n\treturn s\n}\n\n// SetChangeRequestName sets the ChangeRequestName field's value.\nfunc (s *AutomationExecutionMetadata) SetChangeRequestName(v string) *AutomationExecutionMetadata {\n\ts.ChangeRequestName = &v\n\treturn s\n}\n\n// SetCurrentAction sets the CurrentAction field's value.\nfunc (s *AutomationExecutionMetadata) SetCurrentAction(v string) *AutomationExecutionMetadata {\n\ts.CurrentAction = &v\n\treturn s\n}\n\n// SetCurrentStepName sets the CurrentStepName field's value.\nfunc (s *AutomationExecutionMetadata) SetCurrentStepName(v string) *AutomationExecutionMetadata {\n\ts.CurrentStepName = &v\n\treturn s\n}\n\n// SetDocumentName sets the DocumentName field's value.\nfunc (s *AutomationExecutionMetadata) SetDocumentName(v string) *AutomationExecutionMetadata {\n\ts.DocumentName = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *AutomationExecutionMetadata) SetDocumentVersion(v string) *AutomationExecutionMetadata {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetExecutedBy sets the ExecutedBy field's value.\nfunc (s *AutomationExecutionMetadata) SetExecutedBy(v string) *AutomationExecutionMetadata {\n\ts.ExecutedBy = &v\n\treturn s\n}\n\n// SetExecutionEndTime sets the ExecutionEndTime field's value.\nfunc (s *AutomationExecutionMetadata) SetExecutionEndTime(v time.Time) *AutomationExecutionMetadata {\n\ts.ExecutionEndTime = &v\n\treturn s\n}\n\n// SetExecutionStartTime sets the ExecutionStartTime field's value.\nfunc (s *AutomationExecutionMetadata) SetExecutionStartTime(v time.Time) *AutomationExecutionMetadata {\n\ts.ExecutionStartTime = &v\n\treturn s\n}\n\n// SetFailureMessage sets the FailureMessage field's value.\nfunc (s *AutomationExecutionMetadata) SetFailureMessage(v string) *AutomationExecutionMetadata {\n\ts.FailureMessage = &v\n\treturn s\n}\n\n// SetLogFile sets the LogFile field's value.\nfunc (s *AutomationExecutionMetadata) SetLogFile(v string) *AutomationExecutionMetadata {\n\ts.LogFile = &v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *AutomationExecutionMetadata) SetMaxConcurrency(v string) *AutomationExecutionMetadata {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *AutomationExecutionMetadata) SetMaxErrors(v string) *AutomationExecutionMetadata {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetMode sets the Mode field's value.\nfunc (s *AutomationExecutionMetadata) SetMode(v string) *AutomationExecutionMetadata {\n\ts.Mode = &v\n\treturn s\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *AutomationExecutionMetadata) SetOpsItemId(v string) *AutomationExecutionMetadata {\n\ts.OpsItemId = &v\n\treturn s\n}\n\n// SetOutputs sets the Outputs field's value.\nfunc (s *AutomationExecutionMetadata) SetOutputs(v map[string][]*string) *AutomationExecutionMetadata {\n\ts.Outputs = v\n\treturn s\n}\n\n// SetParentAutomationExecutionId sets the ParentAutomationExecutionId field's value.\nfunc (s *AutomationExecutionMetadata) SetParentAutomationExecutionId(v string) *AutomationExecutionMetadata {\n\ts.ParentAutomationExecutionId = &v\n\treturn s\n}\n\n// SetResolvedTargets sets the ResolvedTargets field's value.\nfunc (s *AutomationExecutionMetadata) SetResolvedTargets(v *ResolvedTargets) *AutomationExecutionMetadata {\n\ts.ResolvedTargets = v\n\treturn s\n}\n\n// SetRunbooks sets the Runbooks field's value.\nfunc (s *AutomationExecutionMetadata) SetRunbooks(v []*Runbook) *AutomationExecutionMetadata {\n\ts.Runbooks = v\n\treturn s\n}\n\n// SetScheduledTime sets the ScheduledTime field's value.\nfunc (s *AutomationExecutionMetadata) SetScheduledTime(v time.Time) *AutomationExecutionMetadata {\n\ts.ScheduledTime = &v\n\treturn s\n}\n\n// SetTarget sets the Target field's value.\nfunc (s *AutomationExecutionMetadata) SetTarget(v string) *AutomationExecutionMetadata {\n\ts.Target = &v\n\treturn s\n}\n\n// SetTargetMaps sets the TargetMaps field's value.\nfunc (s *AutomationExecutionMetadata) SetTargetMaps(v []map[string][]*string) *AutomationExecutionMetadata {\n\ts.TargetMaps = v\n\treturn s\n}\n\n// SetTargetParameterName sets the TargetParameterName field's value.\nfunc (s *AutomationExecutionMetadata) SetTargetParameterName(v string) *AutomationExecutionMetadata {\n\ts.TargetParameterName = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *AutomationExecutionMetadata) SetTargets(v []*Target) *AutomationExecutionMetadata {\n\ts.Targets = v\n\treturn s\n}\n\n// SetTriggeredAlarms sets the TriggeredAlarms field's value.\nfunc (s *AutomationExecutionMetadata) SetTriggeredAlarms(v []*AlarmStateInformation) *AutomationExecutionMetadata {\n\ts.TriggeredAlarms = v\n\treturn s\n}\n\n// There is no automation execution information for the requested automation\n// execution ID.\ntype AutomationExecutionNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationExecutionNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationExecutionNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAutomationExecutionNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &AutomationExecutionNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AutomationExecutionNotFoundException) Code() string {\n\treturn \"AutomationExecutionNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *AutomationExecutionNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AutomationExecutionNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AutomationExecutionNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AutomationExecutionNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AutomationExecutionNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified step name and execution ID don't exist. Verify the information\n// and try again.\ntype AutomationStepNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationStepNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AutomationStepNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAutomationStepNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &AutomationStepNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AutomationStepNotFoundException) Code() string {\n\treturn \"AutomationStepNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *AutomationStepNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AutomationStepNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AutomationStepNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AutomationStepNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AutomationStepNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Defines the basic information about a patch baseline override.\ntype BaselineOverride struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A set of rules defining the approval rules for a patch baseline.\n\tApprovalRules *PatchRuleGroup `type:\"structure\"`\n\n\t// A list of explicitly approved patches for the baseline.\n\t//\n\t// For information about accepted formats for lists of approved patches and\n\t// rejected patches, see About package name formats for approved and rejected\n\t// patch lists (https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tApprovedPatches []*string `type:\"list\"`\n\n\t// Defines the compliance level for approved patches. When an approved patch\n\t// is reported as missing, this value describes the severity of the compliance\n\t// violation.\n\tApprovedPatchesComplianceLevel *string `type:\"string\" enum:\"PatchComplianceLevel\"`\n\n\t// Indicates whether the list of approved patches includes non-security updates\n\t// that should be applied to the managed nodes. The default value is false.\n\t// Applies to Linux managed nodes only.\n\tApprovedPatchesEnableNonSecurity *bool `type:\"boolean\"`\n\n\t// A set of patch filters, typically used for approval rules.\n\tGlobalFilters *PatchFilterGroup `type:\"structure\"`\n\n\t// The operating system rule used by the patch baseline override.\n\tOperatingSystem *string `type:\"string\" enum:\"OperatingSystem\"`\n\n\t// A list of explicitly rejected patches for the baseline.\n\t//\n\t// For information about accepted formats for lists of approved patches and\n\t// rejected patches, see About package name formats for approved and rejected\n\t// patch lists (https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tRejectedPatches []*string `type:\"list\"`\n\n\t// The action for Patch Manager to take on patches included in the RejectedPackages\n\t// list. A patch can be allowed only if it is a dependency of another package,\n\t// or blocked entirely along with packages that include it as a dependency.\n\tRejectedPatchesAction *string `type:\"string\" enum:\"PatchAction\"`\n\n\t// Information about the patches to use to update the managed nodes, including\n\t// target operating systems and source repositories. Applies to Linux managed\n\t// nodes only.\n\tSources []*PatchSource `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BaselineOverride) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s BaselineOverride) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *BaselineOverride) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"BaselineOverride\"}\n\tif s.ApprovalRules != nil {\n\t\tif err := s.ApprovalRules.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ApprovalRules\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.GlobalFilters != nil {\n\t\tif err := s.GlobalFilters.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"GlobalFilters\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Sources != nil {\n\t\tfor i, v := range s.Sources {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Sources\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetApprovalRules sets the ApprovalRules field's value.\nfunc (s *BaselineOverride) SetApprovalRules(v *PatchRuleGroup) *BaselineOverride {\n\ts.ApprovalRules = v\n\treturn s\n}\n\n// SetApprovedPatches sets the ApprovedPatches field's value.\nfunc (s *BaselineOverride) SetApprovedPatches(v []*string) *BaselineOverride {\n\ts.ApprovedPatches = v\n\treturn s\n}\n\n// SetApprovedPatchesComplianceLevel sets the ApprovedPatchesComplianceLevel field's value.\nfunc (s *BaselineOverride) SetApprovedPatchesComplianceLevel(v string) *BaselineOverride {\n\ts.ApprovedPatchesComplianceLevel = &v\n\treturn s\n}\n\n// SetApprovedPatchesEnableNonSecurity sets the ApprovedPatchesEnableNonSecurity field's value.\nfunc (s *BaselineOverride) SetApprovedPatchesEnableNonSecurity(v bool) *BaselineOverride {\n\ts.ApprovedPatchesEnableNonSecurity = &v\n\treturn s\n}\n\n// SetGlobalFilters sets the GlobalFilters field's value.\nfunc (s *BaselineOverride) SetGlobalFilters(v *PatchFilterGroup) *BaselineOverride {\n\ts.GlobalFilters = v\n\treturn s\n}\n\n// SetOperatingSystem sets the OperatingSystem field's value.\nfunc (s *BaselineOverride) SetOperatingSystem(v string) *BaselineOverride {\n\ts.OperatingSystem = &v\n\treturn s\n}\n\n// SetRejectedPatches sets the RejectedPatches field's value.\nfunc (s *BaselineOverride) SetRejectedPatches(v []*string) *BaselineOverride {\n\ts.RejectedPatches = v\n\treturn s\n}\n\n// SetRejectedPatchesAction sets the RejectedPatchesAction field's value.\nfunc (s *BaselineOverride) SetRejectedPatchesAction(v string) *BaselineOverride {\n\ts.RejectedPatchesAction = &v\n\treturn s\n}\n\n// SetSources sets the Sources field's value.\nfunc (s *BaselineOverride) SetSources(v []*PatchSource) *BaselineOverride {\n\ts.Sources = v\n\treturn s\n}\n\ntype CancelCommandInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the command you want to cancel.\n\t//\n\t// CommandId is a required field\n\tCommandId *string `min:\"36\" type:\"string\" required:\"true\"`\n\n\t// (Optional) A list of managed node IDs on which you want to cancel the command.\n\t// If not provided, the command is canceled on every node on which it was requested.\n\tInstanceIds []*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CancelCommandInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CancelCommandInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CancelCommandInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CancelCommandInput\"}\n\tif s.CommandId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"CommandId\"))\n\t}\n\tif s.CommandId != nil && len(*s.CommandId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"CommandId\", 36))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetCommandId sets the CommandId field's value.\nfunc (s *CancelCommandInput) SetCommandId(v string) *CancelCommandInput {\n\ts.CommandId = &v\n\treturn s\n}\n\n// SetInstanceIds sets the InstanceIds field's value.\nfunc (s *CancelCommandInput) SetInstanceIds(v []*string) *CancelCommandInput {\n\ts.InstanceIds = v\n\treturn s\n}\n\n// Whether or not the command was successfully canceled. There is no guarantee\n// that a request can be canceled.\ntype CancelCommandOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CancelCommandOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CancelCommandOutput) GoString() string {\n\treturn s.String()\n}\n\ntype CancelMaintenanceWindowExecutionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the maintenance window execution to stop.\n\t//\n\t// WindowExecutionId is a required field\n\tWindowExecutionId *string `min:\"36\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CancelMaintenanceWindowExecutionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CancelMaintenanceWindowExecutionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CancelMaintenanceWindowExecutionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CancelMaintenanceWindowExecutionInput\"}\n\tif s.WindowExecutionId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowExecutionId\"))\n\t}\n\tif s.WindowExecutionId != nil && len(*s.WindowExecutionId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowExecutionId\", 36))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetWindowExecutionId sets the WindowExecutionId field's value.\nfunc (s *CancelMaintenanceWindowExecutionInput) SetWindowExecutionId(v string) *CancelMaintenanceWindowExecutionInput {\n\ts.WindowExecutionId = &v\n\treturn s\n}\n\ntype CancelMaintenanceWindowExecutionOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the maintenance window execution that has been stopped.\n\tWindowExecutionId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CancelMaintenanceWindowExecutionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CancelMaintenanceWindowExecutionOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetWindowExecutionId sets the WindowExecutionId field's value.\nfunc (s *CancelMaintenanceWindowExecutionOutput) SetWindowExecutionId(v string) *CancelMaintenanceWindowExecutionOutput {\n\ts.WindowExecutionId = &v\n\treturn s\n}\n\n// Configuration options for sending command output to Amazon CloudWatch Logs.\ntype CloudWatchOutputConfig struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the CloudWatch Logs log group where you want to send command\n\t// output. If you don't specify a group name, Amazon Web Services Systems Manager\n\t// automatically creates a log group for you. The log group uses the following\n\t// naming format:\n\t//\n\t// aws/ssm/SystemsManagerDocumentName\n\tCloudWatchLogGroupName *string `min:\"1\" type:\"string\"`\n\n\t// Enables Systems Manager to send command output to CloudWatch Logs.\n\tCloudWatchOutputEnabled *bool `type:\"boolean\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CloudWatchOutputConfig) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CloudWatchOutputConfig) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CloudWatchOutputConfig) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CloudWatchOutputConfig\"}\n\tif s.CloudWatchLogGroupName != nil && len(*s.CloudWatchLogGroupName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"CloudWatchLogGroupName\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetCloudWatchLogGroupName sets the CloudWatchLogGroupName field's value.\nfunc (s *CloudWatchOutputConfig) SetCloudWatchLogGroupName(v string) *CloudWatchOutputConfig {\n\ts.CloudWatchLogGroupName = &v\n\treturn s\n}\n\n// SetCloudWatchOutputEnabled sets the CloudWatchOutputEnabled field's value.\nfunc (s *CloudWatchOutputConfig) SetCloudWatchOutputEnabled(v bool) *CloudWatchOutputConfig {\n\ts.CloudWatchOutputEnabled = &v\n\treturn s\n}\n\n// Describes a command request.\ntype Command struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The details for the CloudWatch alarm applied to your command.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// Amazon CloudWatch Logs information where you want Amazon Web Services Systems\n\t// Manager to send the command output.\n\tCloudWatchOutputConfig *CloudWatchOutputConfig `type:\"structure\"`\n\n\t// A unique identifier for this command.\n\tCommandId *string `min:\"36\" type:\"string\"`\n\n\t// User-specified information about the command, such as a brief description\n\t// of what the command should do.\n\tComment *string `type:\"string\"`\n\n\t// The number of targets for which the command invocation reached a terminal\n\t// state. Terminal states include the following: Success, Failed, Execution\n\t// Timed Out, Delivery Timed Out, Cancelled, Terminated, or Undeliverable.\n\tCompletedCount *int64 `type:\"integer\"`\n\n\t// The number of targets for which the status is Delivery Timed Out.\n\tDeliveryTimedOutCount *int64 `type:\"integer\"`\n\n\t// The name of the document requested for execution.\n\tDocumentName *string `type:\"string\"`\n\n\t// The Systems Manager document (SSM document) version.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The number of targets for which the status is Failed or Execution Timed Out.\n\tErrorCount *int64 `type:\"integer\"`\n\n\t// If a command expires, it changes status to DeliveryTimedOut for all invocations\n\t// that have the status InProgress, Pending, or Delayed. ExpiresAfter is calculated\n\t// based on the total timeout for the overall command. For more information,\n\t// see Understanding command timeout values (https://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html?icmpid=docs_ec2_console#monitor-about-status-timeouts)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tExpiresAfter *time.Time `type:\"timestamp\"`\n\n\t// The managed node IDs against which this command was requested.\n\tInstanceIds []*string `type:\"list\"`\n\n\t// The maximum number of managed nodes that are allowed to run the command at\n\t// the same time. You can specify a number of managed nodes, such as 10, or\n\t// a percentage of nodes, such as 10%. The default value is 50. For more information\n\t// about how to use MaxConcurrency, see Running commands using Systems Manager\n\t// Run Command (https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The maximum number of errors allowed before the system stops sending the\n\t// command to additional targets. You can specify a number of errors, such as\n\t// 10, or a percentage or errors, such as 10%. The default value is 0. For more\n\t// information about how to use MaxErrors, see Running commands using Systems\n\t// Manager Run Command (https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// Configurations for sending notifications about command status changes.\n\tNotificationConfig *NotificationConfig `type:\"structure\"`\n\n\t// The S3 bucket where the responses to the command executions should be stored.\n\t// This was requested when issuing the command.\n\tOutputS3BucketName *string `min:\"3\" type:\"string\"`\n\n\t// The S3 directory path inside the bucket where the responses to the command\n\t// executions should be stored. This was requested when issuing the command.\n\tOutputS3KeyPrefix *string `type:\"string\"`\n\n\t// (Deprecated) You can no longer specify this parameter. The system ignores\n\t// it. Instead, Systems Manager automatically determines the Amazon Web Services\n\t// Region of the S3 bucket.\n\tOutputS3Region *string `min:\"3\" type:\"string\"`\n\n\t// The parameter values to be inserted in the document when running the command.\n\t//\n\t// Parameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by Command's\n\t// String and GoString methods.\n\tParameters map[string][]*string `type:\"map\" sensitive:\"true\"`\n\n\t// The date and time the command was requested.\n\tRequestedDateTime *time.Time `type:\"timestamp\"`\n\n\t// The Identity and Access Management (IAM) service role that Run Command, a\n\t// capability of Amazon Web Services Systems Manager, uses to act on your behalf\n\t// when sending notifications about command status changes.\n\tServiceRole *string `type:\"string\"`\n\n\t// The status of the command.\n\tStatus *string `type:\"string\" enum:\"CommandStatus\"`\n\n\t// A detailed status of the command execution. StatusDetails includes more information\n\t// than Status because it includes states resulting from error and concurrency\n\t// control parameters. StatusDetails can show different results than Status.\n\t// For more information about these statuses, see Understanding command statuses\n\t// (https://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html)\n\t// in the Amazon Web Services Systems Manager User Guide. StatusDetails can\n\t// be one of the following values:\n\t//\n\t//    * Pending: The command hasn't been sent to any managed nodes.\n\t//\n\t//    * In Progress: The command has been sent to at least one managed node\n\t//    but hasn't reached a final state on all managed nodes.\n\t//\n\t//    * Success: The command successfully ran on all invocations. This is a\n\t//    terminal state.\n\t//\n\t//    * Delivery Timed Out: The value of MaxErrors or more command invocations\n\t//    shows a status of Delivery Timed Out. This is a terminal state.\n\t//\n\t//    * Execution Timed Out: The value of MaxErrors or more command invocations\n\t//    shows a status of Execution Timed Out. This is a terminal state.\n\t//\n\t//    * Failed: The value of MaxErrors or more command invocations shows a status\n\t//    of Failed. This is a terminal state.\n\t//\n\t//    * Incomplete: The command was attempted on all managed nodes and one or\n\t//    more invocations doesn't have a value of Success but not enough invocations\n\t//    failed for the status to be Failed. This is a terminal state.\n\t//\n\t//    * Cancelled: The command was terminated before it was completed. This\n\t//    is a terminal state.\n\t//\n\t//    * Rate Exceeded: The number of managed nodes targeted by the command exceeded\n\t//    the account limit for pending invocations. The system has canceled the\n\t//    command before running it on any managed node. This is a terminal state.\n\t//\n\t//    * Delayed: The system attempted to send the command to the managed node\n\t//    but wasn't successful. The system retries again.\n\tStatusDetails *string `type:\"string\"`\n\n\t// The number of targets for the command.\n\tTargetCount *int64 `type:\"integer\"`\n\n\t// An array of search criteria that targets managed nodes using a Key,Value\n\t// combination that you specify. Targets is required if you don't provide one\n\t// or more managed node IDs in the call.\n\tTargets []*Target `type:\"list\"`\n\n\t// The TimeoutSeconds value specified for a command.\n\tTimeoutSeconds *int64 `min:\"30\" type:\"integer\"`\n\n\t// The CloudWatch alarm that was invoked by the command.\n\tTriggeredAlarms []*AlarmStateInformation `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Command) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Command) GoString() string {\n\treturn s.String()\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *Command) SetAlarmConfiguration(v *AlarmConfiguration) *Command {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetCloudWatchOutputConfig sets the CloudWatchOutputConfig field's value.\nfunc (s *Command) SetCloudWatchOutputConfig(v *CloudWatchOutputConfig) *Command {\n\ts.CloudWatchOutputConfig = v\n\treturn s\n}\n\n// SetCommandId sets the CommandId field's value.\nfunc (s *Command) SetCommandId(v string) *Command {\n\ts.CommandId = &v\n\treturn s\n}\n\n// SetComment sets the Comment field's value.\nfunc (s *Command) SetComment(v string) *Command {\n\ts.Comment = &v\n\treturn s\n}\n\n// SetCompletedCount sets the CompletedCount field's value.\nfunc (s *Command) SetCompletedCount(v int64) *Command {\n\ts.CompletedCount = &v\n\treturn s\n}\n\n// SetDeliveryTimedOutCount sets the DeliveryTimedOutCount field's value.\nfunc (s *Command) SetDeliveryTimedOutCount(v int64) *Command {\n\ts.DeliveryTimedOutCount = &v\n\treturn s\n}\n\n// SetDocumentName sets the DocumentName field's value.\nfunc (s *Command) SetDocumentName(v string) *Command {\n\ts.DocumentName = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *Command) SetDocumentVersion(v string) *Command {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetErrorCount sets the ErrorCount field's value.\nfunc (s *Command) SetErrorCount(v int64) *Command {\n\ts.ErrorCount = &v\n\treturn s\n}\n\n// SetExpiresAfter sets the ExpiresAfter field's value.\nfunc (s *Command) SetExpiresAfter(v time.Time) *Command {\n\ts.ExpiresAfter = &v\n\treturn s\n}\n\n// SetInstanceIds sets the InstanceIds field's value.\nfunc (s *Command) SetInstanceIds(v []*string) *Command {\n\ts.InstanceIds = v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *Command) SetMaxConcurrency(v string) *Command {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *Command) SetMaxErrors(v string) *Command {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetNotificationConfig sets the NotificationConfig field's value.\nfunc (s *Command) SetNotificationConfig(v *NotificationConfig) *Command {\n\ts.NotificationConfig = v\n\treturn s\n}\n\n// SetOutputS3BucketName sets the OutputS3BucketName field's value.\nfunc (s *Command) SetOutputS3BucketName(v string) *Command {\n\ts.OutputS3BucketName = &v\n\treturn s\n}\n\n// SetOutputS3KeyPrefix sets the OutputS3KeyPrefix field's value.\nfunc (s *Command) SetOutputS3KeyPrefix(v string) *Command {\n\ts.OutputS3KeyPrefix = &v\n\treturn s\n}\n\n// SetOutputS3Region sets the OutputS3Region field's value.\nfunc (s *Command) SetOutputS3Region(v string) *Command {\n\ts.OutputS3Region = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *Command) SetParameters(v map[string][]*string) *Command {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetRequestedDateTime sets the RequestedDateTime field's value.\nfunc (s *Command) SetRequestedDateTime(v time.Time) *Command {\n\ts.RequestedDateTime = &v\n\treturn s\n}\n\n// SetServiceRole sets the ServiceRole field's value.\nfunc (s *Command) SetServiceRole(v string) *Command {\n\ts.ServiceRole = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *Command) SetStatus(v string) *Command {\n\ts.Status = &v\n\treturn s\n}\n\n// SetStatusDetails sets the StatusDetails field's value.\nfunc (s *Command) SetStatusDetails(v string) *Command {\n\ts.StatusDetails = &v\n\treturn s\n}\n\n// SetTargetCount sets the TargetCount field's value.\nfunc (s *Command) SetTargetCount(v int64) *Command {\n\ts.TargetCount = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *Command) SetTargets(v []*Target) *Command {\n\ts.Targets = v\n\treturn s\n}\n\n// SetTimeoutSeconds sets the TimeoutSeconds field's value.\nfunc (s *Command) SetTimeoutSeconds(v int64) *Command {\n\ts.TimeoutSeconds = &v\n\treturn s\n}\n\n// SetTriggeredAlarms sets the TriggeredAlarms field's value.\nfunc (s *Command) SetTriggeredAlarms(v []*AlarmStateInformation) *Command {\n\ts.TriggeredAlarms = v\n\treturn s\n}\n\n// Describes a command filter.\n//\n// A managed node ID can't be specified when a command status is Pending because\n// the command hasn't run on the node yet.\ntype CommandFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter.\n\t//\n\t// The ExecutionStage filter can't be used with the ListCommandInvocations operation,\n\t// only with ListCommands.\n\t//\n\t// Key is a required field\n\tKey *string `locationName:\"key\" type:\"string\" required:\"true\" enum:\"CommandFilterKey\"`\n\n\t// The filter value. Valid values for each filter key are as follows:\n\t//\n\t//    * InvokedAfter: Specify a timestamp to limit your results. For example,\n\t//    specify 2021-07-07T00:00:00Z to see a list of command executions occurring\n\t//    July 7, 2021, and later.\n\t//\n\t//    * InvokedBefore: Specify a timestamp to limit your results. For example,\n\t//    specify 2021-07-07T00:00:00Z to see a list of command executions from\n\t//    before July 7, 2021.\n\t//\n\t//    * Status: Specify a valid command status to see a list of all command\n\t//    executions with that status. The status choices depend on the API you\n\t//    call. The status values you can specify for ListCommands are: Pending\n\t//    InProgress Success Cancelled Failed TimedOut (this includes both Delivery\n\t//    and Execution time outs) AccessDenied DeliveryTimedOut ExecutionTimedOut\n\t//    Incomplete NoInstancesInTag LimitExceeded The status values you can specify\n\t//    for ListCommandInvocations are: Pending InProgress Delayed Success Cancelled\n\t//    Failed TimedOut (this includes both Delivery and Execution time outs)\n\t//    AccessDenied DeliveryTimedOut ExecutionTimedOut Undeliverable InvalidPlatform\n\t//    Terminated\n\t//\n\t//    * DocumentName: Specify name of the Amazon Web Services Systems Manager\n\t//    document (SSM document) for which you want to see command execution results.\n\t//    For example, specify AWS-RunPatchBaseline to see command executions that\n\t//    used this SSM document to perform security patching operations on managed\n\t//    nodes.\n\t//\n\t//    * ExecutionStage: Specify one of the following values (ListCommands operations\n\t//    only): Executing: Returns a list of command executions that are currently\n\t//    still running. Complete: Returns a list of command executions that have\n\t//    already completed.\n\t//\n\t// Value is a required field\n\tValue *string `locationName:\"value\" min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CommandFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CommandFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CommandFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CommandFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Value == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Value\"))\n\t}\n\tif s.Value != nil && len(*s.Value) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Value\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *CommandFilter) SetKey(v string) *CommandFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *CommandFilter) SetValue(v string) *CommandFilter {\n\ts.Value = &v\n\treturn s\n}\n\n// An invocation is a copy of a command sent to a specific managed node. A command\n// can apply to one or more managed nodes. A command invocation applies to one\n// managed node. For example, if a user runs SendCommand against three managed\n// nodes, then a command invocation is created for each requested managed node\n// ID. A command invocation returns status and detail information about a command\n// you ran.\ntype CommandInvocation struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Amazon CloudWatch Logs information where you want Amazon Web Services Systems\n\t// Manager to send the command output.\n\tCloudWatchOutputConfig *CloudWatchOutputConfig `type:\"structure\"`\n\n\t// The command against which this invocation was requested.\n\tCommandId *string `min:\"36\" type:\"string\"`\n\n\t// Plugins processed by the command.\n\tCommandPlugins []*CommandPlugin `type:\"list\"`\n\n\t// User-specified information about the command, such as a brief description\n\t// of what the command should do.\n\tComment *string `type:\"string\"`\n\n\t// The document name that was requested for execution.\n\tDocumentName *string `type:\"string\"`\n\n\t// The Systems Manager document (SSM document) version.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The managed node ID in which this invocation was requested.\n\tInstanceId *string `type:\"string\"`\n\n\t// The fully qualified host name of the managed node.\n\tInstanceName *string `type:\"string\"`\n\n\t// Configurations for sending notifications about command status changes on\n\t// a per managed node basis.\n\tNotificationConfig *NotificationConfig `type:\"structure\"`\n\n\t// The time and date the request was sent to this managed node.\n\tRequestedDateTime *time.Time `type:\"timestamp\"`\n\n\t// The Identity and Access Management (IAM) service role that Run Command, a\n\t// capability of Amazon Web Services Systems Manager, uses to act on your behalf\n\t// when sending notifications about command status changes on a per managed\n\t// node basis.\n\tServiceRole *string `type:\"string\"`\n\n\t// The URL to the plugin's StdErr file in Amazon Simple Storage Service (Amazon\n\t// S3), if the S3 bucket was defined for the parent command. For an invocation,\n\t// StandardErrorUrl is populated if there is just one plugin defined for the\n\t// command, and the S3 bucket was defined for the command.\n\tStandardErrorUrl *string `type:\"string\"`\n\n\t// The URL to the plugin's StdOut file in Amazon Simple Storage Service (Amazon\n\t// S3), if the S3 bucket was defined for the parent command. For an invocation,\n\t// StandardOutputUrl is populated if there is just one plugin defined for the\n\t// command, and the S3 bucket was defined for the command.\n\tStandardOutputUrl *string `type:\"string\"`\n\n\t// Whether or not the invocation succeeded, failed, or is pending.\n\tStatus *string `type:\"string\" enum:\"CommandInvocationStatus\"`\n\n\t// A detailed status of the command execution for each invocation (each managed\n\t// node targeted by the command). StatusDetails includes more information than\n\t// Status because it includes states resulting from error and concurrency control\n\t// parameters. StatusDetails can show different results than Status. For more\n\t// information about these statuses, see Understanding command statuses (https://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html)\n\t// in the Amazon Web Services Systems Manager User Guide. StatusDetails can\n\t// be one of the following values:\n\t//\n\t//    * Pending: The command hasn't been sent to the managed node.\n\t//\n\t//    * In Progress: The command has been sent to the managed node but hasn't\n\t//    reached a terminal state.\n\t//\n\t//    * Success: The execution of the command or plugin was successfully completed.\n\t//    This is a terminal state.\n\t//\n\t//    * Delivery Timed Out: The command wasn't delivered to the managed node\n\t//    before the delivery timeout expired. Delivery timeouts don't count against\n\t//    the parent command's MaxErrors limit, but they do contribute to whether\n\t//    the parent command status is Success or Incomplete. This is a terminal\n\t//    state.\n\t//\n\t//    * Execution Timed Out: Command execution started on the managed node,\n\t//    but the execution wasn't complete before the execution timeout expired.\n\t//    Execution timeouts count against the MaxErrors limit of the parent command.\n\t//    This is a terminal state.\n\t//\n\t//    * Failed: The command wasn't successful on the managed node. For a plugin,\n\t//    this indicates that the result code wasn't zero. For a command invocation,\n\t//    this indicates that the result code for one or more plugins wasn't zero.\n\t//    Invocation failures count against the MaxErrors limit of the parent command.\n\t//    This is a terminal state.\n\t//\n\t//    * Cancelled: The command was terminated before it was completed. This\n\t//    is a terminal state.\n\t//\n\t//    * Undeliverable: The command can't be delivered to the managed node. The\n\t//    managed node might not exist or might not be responding. Undeliverable\n\t//    invocations don't count against the parent command's MaxErrors limit and\n\t//    don't contribute to whether the parent command status is Success or Incomplete.\n\t//    This is a terminal state.\n\t//\n\t//    * Terminated: The parent command exceeded its MaxErrors limit and subsequent\n\t//    command invocations were canceled by the system. This is a terminal state.\n\t//\n\t//    * Delayed: The system attempted to send the command to the managed node\n\t//    but wasn't successful. The system retries again.\n\tStatusDetails *string `type:\"string\"`\n\n\t// Gets the trace output sent by the agent.\n\tTraceOutput *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CommandInvocation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CommandInvocation) GoString() string {\n\treturn s.String()\n}\n\n// SetCloudWatchOutputConfig sets the CloudWatchOutputConfig field's value.\nfunc (s *CommandInvocation) SetCloudWatchOutputConfig(v *CloudWatchOutputConfig) *CommandInvocation {\n\ts.CloudWatchOutputConfig = v\n\treturn s\n}\n\n// SetCommandId sets the CommandId field's value.\nfunc (s *CommandInvocation) SetCommandId(v string) *CommandInvocation {\n\ts.CommandId = &v\n\treturn s\n}\n\n// SetCommandPlugins sets the CommandPlugins field's value.\nfunc (s *CommandInvocation) SetCommandPlugins(v []*CommandPlugin) *CommandInvocation {\n\ts.CommandPlugins = v\n\treturn s\n}\n\n// SetComment sets the Comment field's value.\nfunc (s *CommandInvocation) SetComment(v string) *CommandInvocation {\n\ts.Comment = &v\n\treturn s\n}\n\n// SetDocumentName sets the DocumentName field's value.\nfunc (s *CommandInvocation) SetDocumentName(v string) *CommandInvocation {\n\ts.DocumentName = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *CommandInvocation) SetDocumentVersion(v string) *CommandInvocation {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *CommandInvocation) SetInstanceId(v string) *CommandInvocation {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetInstanceName sets the InstanceName field's value.\nfunc (s *CommandInvocation) SetInstanceName(v string) *CommandInvocation {\n\ts.InstanceName = &v\n\treturn s\n}\n\n// SetNotificationConfig sets the NotificationConfig field's value.\nfunc (s *CommandInvocation) SetNotificationConfig(v *NotificationConfig) *CommandInvocation {\n\ts.NotificationConfig = v\n\treturn s\n}\n\n// SetRequestedDateTime sets the RequestedDateTime field's value.\nfunc (s *CommandInvocation) SetRequestedDateTime(v time.Time) *CommandInvocation {\n\ts.RequestedDateTime = &v\n\treturn s\n}\n\n// SetServiceRole sets the ServiceRole field's value.\nfunc (s *CommandInvocation) SetServiceRole(v string) *CommandInvocation {\n\ts.ServiceRole = &v\n\treturn s\n}\n\n// SetStandardErrorUrl sets the StandardErrorUrl field's value.\nfunc (s *CommandInvocation) SetStandardErrorUrl(v string) *CommandInvocation {\n\ts.StandardErrorUrl = &v\n\treturn s\n}\n\n// SetStandardOutputUrl sets the StandardOutputUrl field's value.\nfunc (s *CommandInvocation) SetStandardOutputUrl(v string) *CommandInvocation {\n\ts.StandardOutputUrl = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *CommandInvocation) SetStatus(v string) *CommandInvocation {\n\ts.Status = &v\n\treturn s\n}\n\n// SetStatusDetails sets the StatusDetails field's value.\nfunc (s *CommandInvocation) SetStatusDetails(v string) *CommandInvocation {\n\ts.StatusDetails = &v\n\treturn s\n}\n\n// SetTraceOutput sets the TraceOutput field's value.\nfunc (s *CommandInvocation) SetTraceOutput(v string) *CommandInvocation {\n\ts.TraceOutput = &v\n\treturn s\n}\n\n// Describes plugin details.\ntype CommandPlugin struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the plugin. Must be one of the following: aws:updateAgent, aws:domainjoin,\n\t// aws:applications, aws:runPowerShellScript, aws:psmodule, aws:cloudWatch,\n\t// aws:runShellScript, or aws:updateSSMAgent.\n\tName *string `min:\"4\" type:\"string\"`\n\n\t// Output of the plugin execution.\n\tOutput *string `type:\"string\"`\n\n\t// The S3 bucket where the responses to the command executions should be stored.\n\t// This was requested when issuing the command. For example, in the following\n\t// response:\n\t//\n\t// doc-example-bucket/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-02573cafcfEXAMPLE/awsrunShellScript\n\t//\n\t// doc-example-bucket is the name of the S3 bucket;\n\t//\n\t// ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix is the name of the S3 prefix;\n\t//\n\t// i-02573cafcfEXAMPLE is the managed node ID;\n\t//\n\t// awsrunShellScript is the name of the plugin.\n\tOutputS3BucketName *string `min:\"3\" type:\"string\"`\n\n\t// The S3 directory path inside the bucket where the responses to the command\n\t// executions should be stored. This was requested when issuing the command.\n\t// For example, in the following response:\n\t//\n\t// doc-example-bucket/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-02573cafcfEXAMPLE/awsrunShellScript\n\t//\n\t// doc-example-bucket is the name of the S3 bucket;\n\t//\n\t// ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix is the name of the S3 prefix;\n\t//\n\t// i-02573cafcfEXAMPLE is the managed node ID;\n\t//\n\t// awsrunShellScript is the name of the plugin.\n\tOutputS3KeyPrefix *string `type:\"string\"`\n\n\t// (Deprecated) You can no longer specify this parameter. The system ignores\n\t// it. Instead, Amazon Web Services Systems Manager automatically determines\n\t// the S3 bucket region.\n\tOutputS3Region *string `min:\"3\" type:\"string\"`\n\n\t// A numeric response code generated after running the plugin.\n\tResponseCode *int64 `type:\"integer\"`\n\n\t// The time the plugin stopped running. Could stop prematurely if, for example,\n\t// a cancel command was sent.\n\tResponseFinishDateTime *time.Time `type:\"timestamp\"`\n\n\t// The time the plugin started running.\n\tResponseStartDateTime *time.Time `type:\"timestamp\"`\n\n\t// The URL for the complete text written by the plugin to stderr. If execution\n\t// isn't yet complete, then this string is empty.\n\tStandardErrorUrl *string `type:\"string\"`\n\n\t// The URL for the complete text written by the plugin to stdout in Amazon S3.\n\t// If the S3 bucket for the command wasn't specified, then this string is empty.\n\tStandardOutputUrl *string `type:\"string\"`\n\n\t// The status of this plugin. You can run a document with multiple plugins.\n\tStatus *string `type:\"string\" enum:\"CommandPluginStatus\"`\n\n\t// A detailed status of the plugin execution. StatusDetails includes more information\n\t// than Status because it includes states resulting from error and concurrency\n\t// control parameters. StatusDetails can show different results than Status.\n\t// For more information about these statuses, see Understanding command statuses\n\t// (https://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html)\n\t// in the Amazon Web Services Systems Manager User Guide. StatusDetails can\n\t// be one of the following values:\n\t//\n\t//    * Pending: The command hasn't been sent to the managed node.\n\t//\n\t//    * In Progress: The command has been sent to the managed node but hasn't\n\t//    reached a terminal state.\n\t//\n\t//    * Success: The execution of the command or plugin was successfully completed.\n\t//    This is a terminal state.\n\t//\n\t//    * Delivery Timed Out: The command wasn't delivered to the managed node\n\t//    before the delivery timeout expired. Delivery timeouts don't count against\n\t//    the parent command's MaxErrors limit, but they do contribute to whether\n\t//    the parent command status is Success or Incomplete. This is a terminal\n\t//    state.\n\t//\n\t//    * Execution Timed Out: Command execution started on the managed node,\n\t//    but the execution wasn't complete before the execution timeout expired.\n\t//    Execution timeouts count against the MaxErrors limit of the parent command.\n\t//    This is a terminal state.\n\t//\n\t//    * Failed: The command wasn't successful on the managed node. For a plugin,\n\t//    this indicates that the result code wasn't zero. For a command invocation,\n\t//    this indicates that the result code for one or more plugins wasn't zero.\n\t//    Invocation failures count against the MaxErrors limit of the parent command.\n\t//    This is a terminal state.\n\t//\n\t//    * Cancelled: The command was terminated before it was completed. This\n\t//    is a terminal state.\n\t//\n\t//    * Undeliverable: The command can't be delivered to the managed node. The\n\t//    managed node might not exist, or it might not be responding. Undeliverable\n\t//    invocations don't count against the parent command's MaxErrors limit,\n\t//    and they don't contribute to whether the parent command status is Success\n\t//    or Incomplete. This is a terminal state.\n\t//\n\t//    * Terminated: The parent command exceeded its MaxErrors limit and subsequent\n\t//    command invocations were canceled by the system. This is a terminal state.\n\tStatusDetails *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CommandPlugin) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CommandPlugin) GoString() string {\n\treturn s.String()\n}\n\n// SetName sets the Name field's value.\nfunc (s *CommandPlugin) SetName(v string) *CommandPlugin {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOutput sets the Output field's value.\nfunc (s *CommandPlugin) SetOutput(v string) *CommandPlugin {\n\ts.Output = &v\n\treturn s\n}\n\n// SetOutputS3BucketName sets the OutputS3BucketName field's value.\nfunc (s *CommandPlugin) SetOutputS3BucketName(v string) *CommandPlugin {\n\ts.OutputS3BucketName = &v\n\treturn s\n}\n\n// SetOutputS3KeyPrefix sets the OutputS3KeyPrefix field's value.\nfunc (s *CommandPlugin) SetOutputS3KeyPrefix(v string) *CommandPlugin {\n\ts.OutputS3KeyPrefix = &v\n\treturn s\n}\n\n// SetOutputS3Region sets the OutputS3Region field's value.\nfunc (s *CommandPlugin) SetOutputS3Region(v string) *CommandPlugin {\n\ts.OutputS3Region = &v\n\treturn s\n}\n\n// SetResponseCode sets the ResponseCode field's value.\nfunc (s *CommandPlugin) SetResponseCode(v int64) *CommandPlugin {\n\ts.ResponseCode = &v\n\treturn s\n}\n\n// SetResponseFinishDateTime sets the ResponseFinishDateTime field's value.\nfunc (s *CommandPlugin) SetResponseFinishDateTime(v time.Time) *CommandPlugin {\n\ts.ResponseFinishDateTime = &v\n\treturn s\n}\n\n// SetResponseStartDateTime sets the ResponseStartDateTime field's value.\nfunc (s *CommandPlugin) SetResponseStartDateTime(v time.Time) *CommandPlugin {\n\ts.ResponseStartDateTime = &v\n\treturn s\n}\n\n// SetStandardErrorUrl sets the StandardErrorUrl field's value.\nfunc (s *CommandPlugin) SetStandardErrorUrl(v string) *CommandPlugin {\n\ts.StandardErrorUrl = &v\n\treturn s\n}\n\n// SetStandardOutputUrl sets the StandardOutputUrl field's value.\nfunc (s *CommandPlugin) SetStandardOutputUrl(v string) *CommandPlugin {\n\ts.StandardOutputUrl = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *CommandPlugin) SetStatus(v string) *CommandPlugin {\n\ts.Status = &v\n\treturn s\n}\n\n// SetStatusDetails sets the StatusDetails field's value.\nfunc (s *CommandPlugin) SetStatusDetails(v string) *CommandPlugin {\n\ts.StatusDetails = &v\n\treturn s\n}\n\n// A summary of the call execution that includes an execution ID, the type of\n// execution (for example, Command), and the date/time of the execution using\n// a datetime object that is saved in the following format: yyyy-MM-dd'T'HH:mm:ss'Z'.\ntype ComplianceExecutionSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// An ID created by the system when PutComplianceItems was called. For example,\n\t// CommandID is a valid execution ID. You can use this ID in subsequent calls.\n\tExecutionId *string `type:\"string\"`\n\n\t// The time the execution ran as a datetime object that is saved in the following\n\t// format: yyyy-MM-dd'T'HH:mm:ss'Z'.\n\t//\n\t// ExecutionTime is a required field\n\tExecutionTime *time.Time `type:\"timestamp\" required:\"true\"`\n\n\t// The type of execution. For example, Command is a valid execution type.\n\tExecutionType *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ComplianceExecutionSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ComplianceExecutionSummary) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ComplianceExecutionSummary) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ComplianceExecutionSummary\"}\n\tif s.ExecutionTime == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ExecutionTime\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetExecutionId sets the ExecutionId field's value.\nfunc (s *ComplianceExecutionSummary) SetExecutionId(v string) *ComplianceExecutionSummary {\n\ts.ExecutionId = &v\n\treturn s\n}\n\n// SetExecutionTime sets the ExecutionTime field's value.\nfunc (s *ComplianceExecutionSummary) SetExecutionTime(v time.Time) *ComplianceExecutionSummary {\n\ts.ExecutionTime = &v\n\treturn s\n}\n\n// SetExecutionType sets the ExecutionType field's value.\nfunc (s *ComplianceExecutionSummary) SetExecutionType(v string) *ComplianceExecutionSummary {\n\ts.ExecutionType = &v\n\treturn s\n}\n\n// Information about the compliance as defined by the resource type. For example,\n// for a patch resource type, Items includes information about the PatchSeverity,\n// Classification, and so on.\ntype ComplianceItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The compliance type. For example, Association (for a State Manager association),\n\t// Patch, or Custom:string are all valid compliance types.\n\tComplianceType *string `min:\"1\" type:\"string\"`\n\n\t// A \"Key\": \"Value\" tag combination for the compliance item.\n\tDetails map[string]*string `type:\"map\"`\n\n\t// A summary for the compliance item. The summary includes an execution ID,\n\t// the execution type (for example, command), and the execution time.\n\tExecutionSummary *ComplianceExecutionSummary `type:\"structure\"`\n\n\t// An ID for the compliance item. For example, if the compliance item is a Windows\n\t// patch, the ID could be the number of the KB article; for example: KB4010320.\n\tId *string `type:\"string\"`\n\n\t// An ID for the resource. For a managed node, this is the node ID.\n\tResourceId *string `min:\"1\" type:\"string\"`\n\n\t// The type of resource. ManagedInstance is currently the only supported resource\n\t// type.\n\tResourceType *string `min:\"1\" type:\"string\"`\n\n\t// The severity of the compliance status. Severity can be one of the following:\n\t// Critical, High, Medium, Low, Informational, Unspecified.\n\tSeverity *string `type:\"string\" enum:\"ComplianceSeverity\"`\n\n\t// The status of the compliance item. An item is either COMPLIANT, NON_COMPLIANT,\n\t// or an empty string (for Windows patches that aren't applicable).\n\tStatus *string `type:\"string\" enum:\"ComplianceStatus\"`\n\n\t// A title for the compliance item. For example, if the compliance item is a\n\t// Windows patch, the title could be the title of the KB article for the patch;\n\t// for example: Security Update for Active Directory Federation Services.\n\tTitle *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ComplianceItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ComplianceItem) GoString() string {\n\treturn s.String()\n}\n\n// SetComplianceType sets the ComplianceType field's value.\nfunc (s *ComplianceItem) SetComplianceType(v string) *ComplianceItem {\n\ts.ComplianceType = &v\n\treturn s\n}\n\n// SetDetails sets the Details field's value.\nfunc (s *ComplianceItem) SetDetails(v map[string]*string) *ComplianceItem {\n\ts.Details = v\n\treturn s\n}\n\n// SetExecutionSummary sets the ExecutionSummary field's value.\nfunc (s *ComplianceItem) SetExecutionSummary(v *ComplianceExecutionSummary) *ComplianceItem {\n\ts.ExecutionSummary = v\n\treturn s\n}\n\n// SetId sets the Id field's value.\nfunc (s *ComplianceItem) SetId(v string) *ComplianceItem {\n\ts.Id = &v\n\treturn s\n}\n\n// SetResourceId sets the ResourceId field's value.\nfunc (s *ComplianceItem) SetResourceId(v string) *ComplianceItem {\n\ts.ResourceId = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *ComplianceItem) SetResourceType(v string) *ComplianceItem {\n\ts.ResourceType = &v\n\treturn s\n}\n\n// SetSeverity sets the Severity field's value.\nfunc (s *ComplianceItem) SetSeverity(v string) *ComplianceItem {\n\ts.Severity = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *ComplianceItem) SetStatus(v string) *ComplianceItem {\n\ts.Status = &v\n\treturn s\n}\n\n// SetTitle sets the Title field's value.\nfunc (s *ComplianceItem) SetTitle(v string) *ComplianceItem {\n\ts.Title = &v\n\treturn s\n}\n\n// Information about a compliance item.\ntype ComplianceItemEntry struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A \"Key\": \"Value\" tag combination for the compliance item.\n\tDetails map[string]*string `type:\"map\"`\n\n\t// The compliance item ID. For example, if the compliance item is a Windows\n\t// patch, the ID could be the number of the KB article.\n\tId *string `type:\"string\"`\n\n\t// The severity of the compliance status. Severity can be one of the following:\n\t// Critical, High, Medium, Low, Informational, Unspecified.\n\t//\n\t// Severity is a required field\n\tSeverity *string `type:\"string\" required:\"true\" enum:\"ComplianceSeverity\"`\n\n\t// The status of the compliance item. An item is either COMPLIANT or NON_COMPLIANT.\n\t//\n\t// Status is a required field\n\tStatus *string `type:\"string\" required:\"true\" enum:\"ComplianceStatus\"`\n\n\t// The title of the compliance item. For example, if the compliance item is\n\t// a Windows patch, the title could be the title of the KB article for the patch;\n\t// for example: Security Update for Active Directory Federation Services.\n\tTitle *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ComplianceItemEntry) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ComplianceItemEntry) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ComplianceItemEntry) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ComplianceItemEntry\"}\n\tif s.Severity == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Severity\"))\n\t}\n\tif s.Status == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Status\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDetails sets the Details field's value.\nfunc (s *ComplianceItemEntry) SetDetails(v map[string]*string) *ComplianceItemEntry {\n\ts.Details = v\n\treturn s\n}\n\n// SetId sets the Id field's value.\nfunc (s *ComplianceItemEntry) SetId(v string) *ComplianceItemEntry {\n\ts.Id = &v\n\treturn s\n}\n\n// SetSeverity sets the Severity field's value.\nfunc (s *ComplianceItemEntry) SetSeverity(v string) *ComplianceItemEntry {\n\ts.Severity = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *ComplianceItemEntry) SetStatus(v string) *ComplianceItemEntry {\n\ts.Status = &v\n\treturn s\n}\n\n// SetTitle sets the Title field's value.\nfunc (s *ComplianceItemEntry) SetTitle(v string) *ComplianceItemEntry {\n\ts.Title = &v\n\treturn s\n}\n\n// One or more filters. Use a filter to return a more specific list of results.\ntype ComplianceStringFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter.\n\tKey *string `min:\"1\" type:\"string\"`\n\n\t// The type of comparison that should be performed for the value: Equal, NotEqual,\n\t// BeginWith, LessThan, or GreaterThan.\n\tType *string `type:\"string\" enum:\"ComplianceQueryOperatorType\"`\n\n\t// The value for which to search.\n\tValues []*string `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ComplianceStringFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ComplianceStringFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ComplianceStringFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ComplianceStringFilter\"}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\tif s.Values != nil && len(s.Values) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Values\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *ComplianceStringFilter) SetKey(v string) *ComplianceStringFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *ComplianceStringFilter) SetType(v string) *ComplianceStringFilter {\n\ts.Type = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *ComplianceStringFilter) SetValues(v []*string) *ComplianceStringFilter {\n\ts.Values = v\n\treturn s\n}\n\n// A summary of compliance information by compliance type.\ntype ComplianceSummaryItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The type of compliance item. For example, the compliance type can be Association,\n\t// Patch, or Custom:string.\n\tComplianceType *string `min:\"1\" type:\"string\"`\n\n\t// A list of COMPLIANT items for the specified compliance type.\n\tCompliantSummary *CompliantSummary `type:\"structure\"`\n\n\t// A list of NON_COMPLIANT items for the specified compliance type.\n\tNonCompliantSummary *NonCompliantSummary `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ComplianceSummaryItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ComplianceSummaryItem) GoString() string {\n\treturn s.String()\n}\n\n// SetComplianceType sets the ComplianceType field's value.\nfunc (s *ComplianceSummaryItem) SetComplianceType(v string) *ComplianceSummaryItem {\n\ts.ComplianceType = &v\n\treturn s\n}\n\n// SetCompliantSummary sets the CompliantSummary field's value.\nfunc (s *ComplianceSummaryItem) SetCompliantSummary(v *CompliantSummary) *ComplianceSummaryItem {\n\ts.CompliantSummary = v\n\treturn s\n}\n\n// SetNonCompliantSummary sets the NonCompliantSummary field's value.\nfunc (s *ComplianceSummaryItem) SetNonCompliantSummary(v *NonCompliantSummary) *ComplianceSummaryItem {\n\ts.NonCompliantSummary = v\n\treturn s\n}\n\n// You specified too many custom compliance types. You can specify a maximum\n// of 10 different types.\ntype ComplianceTypeCountLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ComplianceTypeCountLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ComplianceTypeCountLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorComplianceTypeCountLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &ComplianceTypeCountLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ComplianceTypeCountLimitExceededException) Code() string {\n\treturn \"ComplianceTypeCountLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ComplianceTypeCountLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ComplianceTypeCountLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ComplianceTypeCountLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ComplianceTypeCountLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ComplianceTypeCountLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// A summary of resources that are compliant. The summary is organized according\n// to the resource count for each compliance type.\ntype CompliantSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The total number of resources that are compliant.\n\tCompliantCount *int64 `type:\"integer\"`\n\n\t// A summary of the compliance severity by compliance type.\n\tSeveritySummary *SeveritySummary `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CompliantSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CompliantSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetCompliantCount sets the CompliantCount field's value.\nfunc (s *CompliantSummary) SetCompliantCount(v int64) *CompliantSummary {\n\ts.CompliantCount = &v\n\treturn s\n}\n\n// SetSeveritySummary sets the SeveritySummary field's value.\nfunc (s *CompliantSummary) SetSeveritySummary(v *SeveritySummary) *CompliantSummary {\n\ts.SeveritySummary = v\n\treturn s\n}\n\ntype CreateActivationInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the registered, managed node as it will appear in the Amazon\n\t// Web Services Systems Manager console or when you use the Amazon Web Services\n\t// command line tools to list Systems Manager resources.\n\t//\n\t// Don't enter personally identifiable information in this field.\n\tDefaultInstanceName *string `type:\"string\"`\n\n\t// A user-defined description of the resource that you want to register with\n\t// Systems Manager.\n\t//\n\t// Don't enter personally identifiable information in this field.\n\tDescription *string `type:\"string\"`\n\n\t// The date by which this activation request should expire, in timestamp format,\n\t// such as \"2021-07-07T00:00:00\". You can specify a date up to 30 days in advance.\n\t// If you don't provide an expiration date, the activation code expires in 24\n\t// hours.\n\tExpirationDate *time.Time `type:\"timestamp\"`\n\n\t// The name of the Identity and Access Management (IAM) role that you want to\n\t// assign to the managed node. This IAM role must provide AssumeRole permissions\n\t// for the Amazon Web Services Systems Manager service principal ssm.amazonaws.com.\n\t// For more information, see Create an IAM service role for a hybrid environment\n\t// (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-service-role.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\t//\n\t// You can't specify an IAM service-linked role for this parameter. You must\n\t// create a unique role.\n\t//\n\t// IamRole is a required field\n\tIamRole *string `type:\"string\" required:\"true\"`\n\n\t// Specify the maximum number of managed nodes you want to register. The default\n\t// value is 1.\n\tRegistrationLimit *int64 `min:\"1\" type:\"integer\"`\n\n\t// Reserved for internal use.\n\tRegistrationMetadata []*RegistrationMetadataItem `type:\"list\"`\n\n\t// Optional metadata that you assign to a resource. Tags enable you to categorize\n\t// a resource in different ways, such as by purpose, owner, or environment.\n\t// For example, you might want to tag an activation to identify which servers\n\t// or virtual machines (VMs) in your on-premises environment you intend to activate.\n\t// In this case, you could specify the following key-value pairs:\n\t//\n\t//    * Key=OS,Value=Windows\n\t//\n\t//    * Key=Environment,Value=Production\n\t//\n\t// When you install SSM Agent on your on-premises servers and VMs, you specify\n\t// an activation ID and code. When you specify the activation ID and code, tags\n\t// assigned to the activation are automatically applied to the on-premises servers\n\t// or VMs.\n\t//\n\t// You can't add tags to or delete tags from an existing activation. You can\n\t// tag your on-premises servers, edge devices, and VMs after they connect to\n\t// Systems Manager for the first time and are assigned a managed node ID. This\n\t// means they are listed in the Amazon Web Services Systems Manager console\n\t// with an ID that is prefixed with \"mi-\". For information about how to add\n\t// tags to your managed nodes, see AddTagsToResource. For information about\n\t// how to remove tags from your managed nodes, see RemoveTagsFromResource.\n\tTags []*Tag `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateActivationInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateActivationInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateActivationInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateActivationInput\"}\n\tif s.IamRole == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"IamRole\"))\n\t}\n\tif s.RegistrationLimit != nil && *s.RegistrationLimit < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"RegistrationLimit\", 1))\n\t}\n\tif s.RegistrationMetadata != nil {\n\t\tfor i, v := range s.RegistrationMetadata {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"RegistrationMetadata\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDefaultInstanceName sets the DefaultInstanceName field's value.\nfunc (s *CreateActivationInput) SetDefaultInstanceName(v string) *CreateActivationInput {\n\ts.DefaultInstanceName = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *CreateActivationInput) SetDescription(v string) *CreateActivationInput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetExpirationDate sets the ExpirationDate field's value.\nfunc (s *CreateActivationInput) SetExpirationDate(v time.Time) *CreateActivationInput {\n\ts.ExpirationDate = &v\n\treturn s\n}\n\n// SetIamRole sets the IamRole field's value.\nfunc (s *CreateActivationInput) SetIamRole(v string) *CreateActivationInput {\n\ts.IamRole = &v\n\treturn s\n}\n\n// SetRegistrationLimit sets the RegistrationLimit field's value.\nfunc (s *CreateActivationInput) SetRegistrationLimit(v int64) *CreateActivationInput {\n\ts.RegistrationLimit = &v\n\treturn s\n}\n\n// SetRegistrationMetadata sets the RegistrationMetadata field's value.\nfunc (s *CreateActivationInput) SetRegistrationMetadata(v []*RegistrationMetadataItem) *CreateActivationInput {\n\ts.RegistrationMetadata = v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *CreateActivationInput) SetTags(v []*Tag) *CreateActivationInput {\n\ts.Tags = v\n\treturn s\n}\n\ntype CreateActivationOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The code the system generates when it processes the activation. The activation\n\t// code functions like a password to validate the activation ID.\n\tActivationCode *string `min:\"20\" type:\"string\"`\n\n\t// The ID number generated by the system when it processed the activation. The\n\t// activation ID functions like a user name.\n\tActivationId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateActivationOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateActivationOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetActivationCode sets the ActivationCode field's value.\nfunc (s *CreateActivationOutput) SetActivationCode(v string) *CreateActivationOutput {\n\ts.ActivationCode = &v\n\treturn s\n}\n\n// SetActivationId sets the ActivationId field's value.\nfunc (s *CreateActivationOutput) SetActivationId(v string) *CreateActivationOutput {\n\ts.ActivationId = &v\n\treturn s\n}\n\ntype CreateAssociationBatchInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more associations.\n\t//\n\t// Entries is a required field\n\tEntries []*CreateAssociationBatchRequestEntry `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateAssociationBatchInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateAssociationBatchInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateAssociationBatchInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateAssociationBatchInput\"}\n\tif s.Entries == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Entries\"))\n\t}\n\tif s.Entries != nil && len(s.Entries) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Entries\", 1))\n\t}\n\tif s.Entries != nil {\n\t\tfor i, v := range s.Entries {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Entries\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetEntries sets the Entries field's value.\nfunc (s *CreateAssociationBatchInput) SetEntries(v []*CreateAssociationBatchRequestEntry) *CreateAssociationBatchInput {\n\ts.Entries = v\n\treturn s\n}\n\ntype CreateAssociationBatchOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Information about the associations that failed.\n\tFailed []*FailedCreateAssociation `type:\"list\"`\n\n\t// Information about the associations that succeeded.\n\tSuccessful []*AssociationDescription `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateAssociationBatchOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateAssociationBatchOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetFailed sets the Failed field's value.\nfunc (s *CreateAssociationBatchOutput) SetFailed(v []*FailedCreateAssociation) *CreateAssociationBatchOutput {\n\ts.Failed = v\n\treturn s\n}\n\n// SetSuccessful sets the Successful field's value.\nfunc (s *CreateAssociationBatchOutput) SetSuccessful(v []*AssociationDescription) *CreateAssociationBatchOutput {\n\ts.Successful = v\n\treturn s\n}\n\n// Describes the association of a Amazon Web Services Systems Manager document\n// (SSM document) and a managed node.\ntype CreateAssociationBatchRequestEntry struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The details for the CloudWatch alarm you want to apply to an automation or\n\t// command.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// By default, when you create a new associations, the system runs it immediately\n\t// after it is created and then according to the schedule you specified. Specify\n\t// this option if you don't want an association to run immediately after you\n\t// create it. This parameter isn't supported for rate expressions.\n\tApplyOnlyAtCronInterval *bool `type:\"boolean\"`\n\n\t// Specify a descriptive name for the association.\n\tAssociationName *string `type:\"string\"`\n\n\t// Specify the target for the association. This target is required for associations\n\t// that use an Automation runbook and target resources by using rate controls.\n\t// Automation is a capability of Amazon Web Services Systems Manager.\n\tAutomationTargetParameterName *string `min:\"1\" type:\"string\"`\n\n\t// The names or Amazon Resource Names (ARNs) of the Change Calendar type documents\n\t// your associations are gated under. The associations only run when that Change\n\t// Calendar is open. For more information, see Amazon Web Services Systems Manager\n\t// Change Calendar (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar).\n\tCalendarNames []*string `type:\"list\"`\n\n\t// The severity level to assign to the association.\n\tComplianceSeverity *string `type:\"string\" enum:\"AssociationComplianceSeverity\"`\n\n\t// The document version.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The managed node ID.\n\t//\n\t// InstanceId has been deprecated. To specify a managed node ID for an association,\n\t// use the Targets parameter. Requests that include the parameter InstanceID\n\t// with Systems Manager documents (SSM documents) that use schema version 2.0\n\t// or later will fail. In addition, if you use the parameter InstanceId, you\n\t// can't use the parameters AssociationName, DocumentVersion, MaxErrors, MaxConcurrency,\n\t// OutputLocation, or ScheduleExpression. To use these parameters, you must\n\t// use the Targets parameter.\n\tInstanceId *string `type:\"string\"`\n\n\t// The maximum number of targets allowed to run the association at the same\n\t// time. You can specify a number, for example 10, or a percentage of the target\n\t// set, for example 10%. The default value is 100%, which means all targets\n\t// run the association at the same time.\n\t//\n\t// If a new managed node starts and attempts to run an association while Systems\n\t// Manager is running MaxConcurrency associations, the association is allowed\n\t// to run. During the next association interval, the new managed node will process\n\t// its association within the limit specified for MaxConcurrency.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The number of errors that are allowed before the system stops sending requests\n\t// to run the association on additional targets. You can specify either an absolute\n\t// number of errors, for example 10, or a percentage of the target set, for\n\t// example 10%. If you specify 3, for example, the system stops sending requests\n\t// when the fourth error is received. If you specify 0, then the system stops\n\t// sending requests after the first error is returned. If you run an association\n\t// on 50 managed nodes and set MaxError to 10%, then the system stops sending\n\t// the request when the sixth error is received.\n\t//\n\t// Executions that are already running an association when MaxErrors is reached\n\t// are allowed to complete, but some of these executions may fail as well. If\n\t// you need to ensure that there won't be more than max-errors failed executions,\n\t// set MaxConcurrency to 1 so that executions proceed one at a time.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The name of the SSM document that contains the configuration information\n\t// for the managed node. You can specify Command or Automation runbooks.\n\t//\n\t// You can specify Amazon Web Services-predefined documents, documents you created,\n\t// or a document that is shared with you from another account.\n\t//\n\t// For SSM documents that are shared with you from other Amazon Web Services\n\t// accounts, you must specify the complete SSM document ARN, in the following\n\t// format:\n\t//\n\t// arn:aws:ssm:region:account-id:document/document-name\n\t//\n\t// For example:\n\t//\n\t// arn:aws:ssm:us-east-2:12345678912:document/My-Shared-Document\n\t//\n\t// For Amazon Web Services-predefined documents and SSM documents you created\n\t// in your account, you only need to specify the document name. For example,\n\t// AWS-ApplyPatchBaseline or My-Document.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n\n\t// An S3 bucket where you want to store the results of this request.\n\tOutputLocation *InstanceAssociationOutputLocation `type:\"structure\"`\n\n\t// A description of the parameters for a document.\n\t//\n\t// Parameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateAssociationBatchRequestEntry's\n\t// String and GoString methods.\n\tParameters map[string][]*string `type:\"map\" sensitive:\"true\"`\n\n\t// A cron expression that specifies a schedule when the association runs.\n\tScheduleExpression *string `min:\"1\" type:\"string\"`\n\n\t// Number of days to wait after the scheduled day to run an association.\n\tScheduleOffset *int64 `min:\"1\" type:\"integer\"`\n\n\t// The mode for generating association compliance. You can specify AUTO or MANUAL.\n\t// In AUTO mode, the system uses the status of the association execution to\n\t// determine the compliance status. If the association execution runs successfully,\n\t// then the association is COMPLIANT. If the association execution doesn't run\n\t// successfully, the association is NON-COMPLIANT.\n\t//\n\t// In MANUAL mode, you must specify the AssociationId as a parameter for the\n\t// PutComplianceItems API operation. In this case, compliance data isn't managed\n\t// by State Manager, a capability of Amazon Web Services Systems Manager. It\n\t// is managed by your direct call to the PutComplianceItems API operation.\n\t//\n\t// By default, all associations use AUTO mode.\n\tSyncCompliance *string `type:\"string\" enum:\"AssociationSyncCompliance\"`\n\n\t// Use this action to create an association in multiple Regions and multiple\n\t// accounts.\n\tTargetLocations []*TargetLocation `min:\"1\" type:\"list\"`\n\n\t// A key-value mapping of document parameters to target resources. Both Targets\n\t// and TargetMaps can't be specified together.\n\tTargetMaps []map[string][]*string `type:\"list\"`\n\n\t// The managed nodes targeted by the request.\n\tTargets []*Target `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateAssociationBatchRequestEntry) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateAssociationBatchRequestEntry) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateAssociationBatchRequestEntry) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateAssociationBatchRequestEntry\"}\n\tif s.AutomationTargetParameterName != nil && len(*s.AutomationTargetParameterName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AutomationTargetParameterName\", 1))\n\t}\n\tif s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxConcurrency\", 1))\n\t}\n\tif s.MaxErrors != nil && len(*s.MaxErrors) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxErrors\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.ScheduleExpression != nil && len(*s.ScheduleExpression) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ScheduleExpression\", 1))\n\t}\n\tif s.ScheduleOffset != nil && *s.ScheduleOffset < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"ScheduleOffset\", 1))\n\t}\n\tif s.TargetLocations != nil && len(s.TargetLocations) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TargetLocations\", 1))\n\t}\n\tif s.AlarmConfiguration != nil {\n\t\tif err := s.AlarmConfiguration.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"AlarmConfiguration\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.OutputLocation != nil {\n\t\tif err := s.OutputLocation.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"OutputLocation\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.TargetLocations != nil {\n\t\tfor i, v := range s.TargetLocations {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"TargetLocations\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Targets != nil {\n\t\tfor i, v := range s.Targets {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Targets\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetAlarmConfiguration(v *AlarmConfiguration) *CreateAssociationBatchRequestEntry {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetApplyOnlyAtCronInterval sets the ApplyOnlyAtCronInterval field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetApplyOnlyAtCronInterval(v bool) *CreateAssociationBatchRequestEntry {\n\ts.ApplyOnlyAtCronInterval = &v\n\treturn s\n}\n\n// SetAssociationName sets the AssociationName field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetAssociationName(v string) *CreateAssociationBatchRequestEntry {\n\ts.AssociationName = &v\n\treturn s\n}\n\n// SetAutomationTargetParameterName sets the AutomationTargetParameterName field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetAutomationTargetParameterName(v string) *CreateAssociationBatchRequestEntry {\n\ts.AutomationTargetParameterName = &v\n\treturn s\n}\n\n// SetCalendarNames sets the CalendarNames field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetCalendarNames(v []*string) *CreateAssociationBatchRequestEntry {\n\ts.CalendarNames = v\n\treturn s\n}\n\n// SetComplianceSeverity sets the ComplianceSeverity field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetComplianceSeverity(v string) *CreateAssociationBatchRequestEntry {\n\ts.ComplianceSeverity = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetDocumentVersion(v string) *CreateAssociationBatchRequestEntry {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetInstanceId(v string) *CreateAssociationBatchRequestEntry {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetMaxConcurrency(v string) *CreateAssociationBatchRequestEntry {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetMaxErrors(v string) *CreateAssociationBatchRequestEntry {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetName(v string) *CreateAssociationBatchRequestEntry {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOutputLocation sets the OutputLocation field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetOutputLocation(v *InstanceAssociationOutputLocation) *CreateAssociationBatchRequestEntry {\n\ts.OutputLocation = v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetParameters(v map[string][]*string) *CreateAssociationBatchRequestEntry {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetScheduleExpression sets the ScheduleExpression field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetScheduleExpression(v string) *CreateAssociationBatchRequestEntry {\n\ts.ScheduleExpression = &v\n\treturn s\n}\n\n// SetScheduleOffset sets the ScheduleOffset field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetScheduleOffset(v int64) *CreateAssociationBatchRequestEntry {\n\ts.ScheduleOffset = &v\n\treturn s\n}\n\n// SetSyncCompliance sets the SyncCompliance field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetSyncCompliance(v string) *CreateAssociationBatchRequestEntry {\n\ts.SyncCompliance = &v\n\treturn s\n}\n\n// SetTargetLocations sets the TargetLocations field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetTargetLocations(v []*TargetLocation) *CreateAssociationBatchRequestEntry {\n\ts.TargetLocations = v\n\treturn s\n}\n\n// SetTargetMaps sets the TargetMaps field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetTargetMaps(v []map[string][]*string) *CreateAssociationBatchRequestEntry {\n\ts.TargetMaps = v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *CreateAssociationBatchRequestEntry) SetTargets(v []*Target) *CreateAssociationBatchRequestEntry {\n\ts.Targets = v\n\treturn s\n}\n\ntype CreateAssociationInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The details for the CloudWatch alarm you want to apply to an automation or\n\t// command.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// By default, when you create a new association, the system runs it immediately\n\t// after it is created and then according to the schedule you specified. Specify\n\t// this option if you don't want an association to run immediately after you\n\t// create it. This parameter isn't supported for rate expressions.\n\tApplyOnlyAtCronInterval *bool `type:\"boolean\"`\n\n\t// Specify a descriptive name for the association.\n\tAssociationName *string `type:\"string\"`\n\n\t// Choose the parameter that will define how your automation will branch out.\n\t// This target is required for associations that use an Automation runbook and\n\t// target resources by using rate controls. Automation is a capability of Amazon\n\t// Web Services Systems Manager.\n\tAutomationTargetParameterName *string `min:\"1\" type:\"string\"`\n\n\t// The names or Amazon Resource Names (ARNs) of the Change Calendar type documents\n\t// you want to gate your associations under. The associations only run when\n\t// that change calendar is open. For more information, see Amazon Web Services\n\t// Systems Manager Change Calendar (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar).\n\tCalendarNames []*string `type:\"list\"`\n\n\t// The severity level to assign to the association.\n\tComplianceSeverity *string `type:\"string\" enum:\"AssociationComplianceSeverity\"`\n\n\t// The document version you want to associate with the target(s). Can be a specific\n\t// version or the default version.\n\t//\n\t// State Manager doesn't support running associations that use a new version\n\t// of a document if that document is shared from another account. State Manager\n\t// always runs the default version of a document if shared from another account,\n\t// even though the Systems Manager console shows that a new version was processed.\n\t// If you want to run an association using a new version of a document shared\n\t// form another account, you must set the document version to default.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The managed node ID.\n\t//\n\t// InstanceId has been deprecated. To specify a managed node ID for an association,\n\t// use the Targets parameter. Requests that include the parameter InstanceID\n\t// with Systems Manager documents (SSM documents) that use schema version 2.0\n\t// or later will fail. In addition, if you use the parameter InstanceId, you\n\t// can't use the parameters AssociationName, DocumentVersion, MaxErrors, MaxConcurrency,\n\t// OutputLocation, or ScheduleExpression. To use these parameters, you must\n\t// use the Targets parameter.\n\tInstanceId *string `type:\"string\"`\n\n\t// The maximum number of targets allowed to run the association at the same\n\t// time. You can specify a number, for example 10, or a percentage of the target\n\t// set, for example 10%. The default value is 100%, which means all targets\n\t// run the association at the same time.\n\t//\n\t// If a new managed node starts and attempts to run an association while Systems\n\t// Manager is running MaxConcurrency associations, the association is allowed\n\t// to run. During the next association interval, the new managed node will process\n\t// its association within the limit specified for MaxConcurrency.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The number of errors that are allowed before the system stops sending requests\n\t// to run the association on additional targets. You can specify either an absolute\n\t// number of errors, for example 10, or a percentage of the target set, for\n\t// example 10%. If you specify 3, for example, the system stops sending requests\n\t// when the fourth error is received. If you specify 0, then the system stops\n\t// sending requests after the first error is returned. If you run an association\n\t// on 50 managed nodes and set MaxError to 10%, then the system stops sending\n\t// the request when the sixth error is received.\n\t//\n\t// Executions that are already running an association when MaxErrors is reached\n\t// are allowed to complete, but some of these executions may fail as well. If\n\t// you need to ensure that there won't be more than max-errors failed executions,\n\t// set MaxConcurrency to 1 so that executions proceed one at a time.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The name of the SSM Command document or Automation runbook that contains\n\t// the configuration information for the managed node.\n\t//\n\t// You can specify Amazon Web Services-predefined documents, documents you created,\n\t// or a document that is shared with you from another Amazon Web Services account.\n\t//\n\t// For Systems Manager documents (SSM documents) that are shared with you from\n\t// other Amazon Web Services accounts, you must specify the complete SSM document\n\t// ARN, in the following format:\n\t//\n\t// arn:partition:ssm:region:account-id:document/document-name\n\t//\n\t// For example:\n\t//\n\t// arn:aws:ssm:us-east-2:12345678912:document/My-Shared-Document\n\t//\n\t// For Amazon Web Services-predefined documents and SSM documents you created\n\t// in your account, you only need to specify the document name. For example,\n\t// AWS-ApplyPatchBaseline or My-Document.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n\n\t// An Amazon Simple Storage Service (Amazon S3) bucket where you want to store\n\t// the output details of the request.\n\tOutputLocation *InstanceAssociationOutputLocation `type:\"structure\"`\n\n\t// The parameters for the runtime configuration of the document.\n\t//\n\t// Parameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateAssociationInput's\n\t// String and GoString methods.\n\tParameters map[string][]*string `type:\"map\" sensitive:\"true\"`\n\n\t// A cron expression when the association will be applied to the target(s).\n\tScheduleExpression *string `min:\"1\" type:\"string\"`\n\n\t// Number of days to wait after the scheduled day to run an association. For\n\t// example, if you specified a cron schedule of cron(0 0 ? * THU#2 *), you could\n\t// specify an offset of 3 to run the association each Sunday after the second\n\t// Thursday of the month. For more information about cron schedules for associations,\n\t// see Reference: Cron and rate expressions for Systems Manager (https://docs.aws.amazon.com/systems-manager/latest/userguide/reference-cron-and-rate-expressions.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\t//\n\t// To use offsets, you must specify the ApplyOnlyAtCronInterval parameter. This\n\t// option tells the system not to run an association immediately after you create\n\t// it.\n\tScheduleOffset *int64 `min:\"1\" type:\"integer\"`\n\n\t// The mode for generating association compliance. You can specify AUTO or MANUAL.\n\t// In AUTO mode, the system uses the status of the association execution to\n\t// determine the compliance status. If the association execution runs successfully,\n\t// then the association is COMPLIANT. If the association execution doesn't run\n\t// successfully, the association is NON-COMPLIANT.\n\t//\n\t// In MANUAL mode, you must specify the AssociationId as a parameter for the\n\t// PutComplianceItems API operation. In this case, compliance data isn't managed\n\t// by State Manager. It is managed by your direct call to the PutComplianceItems\n\t// API operation.\n\t//\n\t// By default, all associations use AUTO mode.\n\tSyncCompliance *string `type:\"string\" enum:\"AssociationSyncCompliance\"`\n\n\t// Adds or overwrites one or more tags for a State Manager association. Tags\n\t// are metadata that you can assign to your Amazon Web Services resources. Tags\n\t// enable you to categorize your resources in different ways, for example, by\n\t// purpose, owner, or environment. Each tag consists of a key and an optional\n\t// value, both of which you define.\n\tTags []*Tag `type:\"list\"`\n\n\t// A location is a combination of Amazon Web Services Regions and Amazon Web\n\t// Services accounts where you want to run the association. Use this action\n\t// to create an association in multiple Regions and multiple accounts.\n\tTargetLocations []*TargetLocation `min:\"1\" type:\"list\"`\n\n\t// A key-value mapping of document parameters to target resources. Both Targets\n\t// and TargetMaps can't be specified together.\n\tTargetMaps []map[string][]*string `type:\"list\"`\n\n\t// The targets for the association. You can target managed nodes by using tags,\n\t// Amazon Web Services resource groups, all managed nodes in an Amazon Web Services\n\t// account, or individual managed node IDs. You can target all managed nodes\n\t// in an Amazon Web Services account by specifying the InstanceIds key with\n\t// a value of *. For more information about choosing targets for an association,\n\t// see Using targets and rate controls with State Manager associations (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-state-manager-targets-and-rate-controls.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tTargets []*Target `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateAssociationInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateAssociationInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateAssociationInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateAssociationInput\"}\n\tif s.AutomationTargetParameterName != nil && len(*s.AutomationTargetParameterName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AutomationTargetParameterName\", 1))\n\t}\n\tif s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxConcurrency\", 1))\n\t}\n\tif s.MaxErrors != nil && len(*s.MaxErrors) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxErrors\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.ScheduleExpression != nil && len(*s.ScheduleExpression) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ScheduleExpression\", 1))\n\t}\n\tif s.ScheduleOffset != nil && *s.ScheduleOffset < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"ScheduleOffset\", 1))\n\t}\n\tif s.TargetLocations != nil && len(s.TargetLocations) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TargetLocations\", 1))\n\t}\n\tif s.AlarmConfiguration != nil {\n\t\tif err := s.AlarmConfiguration.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"AlarmConfiguration\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.OutputLocation != nil {\n\t\tif err := s.OutputLocation.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"OutputLocation\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.TargetLocations != nil {\n\t\tfor i, v := range s.TargetLocations {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"TargetLocations\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Targets != nil {\n\t\tfor i, v := range s.Targets {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Targets\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *CreateAssociationInput) SetAlarmConfiguration(v *AlarmConfiguration) *CreateAssociationInput {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetApplyOnlyAtCronInterval sets the ApplyOnlyAtCronInterval field's value.\nfunc (s *CreateAssociationInput) SetApplyOnlyAtCronInterval(v bool) *CreateAssociationInput {\n\ts.ApplyOnlyAtCronInterval = &v\n\treturn s\n}\n\n// SetAssociationName sets the AssociationName field's value.\nfunc (s *CreateAssociationInput) SetAssociationName(v string) *CreateAssociationInput {\n\ts.AssociationName = &v\n\treturn s\n}\n\n// SetAutomationTargetParameterName sets the AutomationTargetParameterName field's value.\nfunc (s *CreateAssociationInput) SetAutomationTargetParameterName(v string) *CreateAssociationInput {\n\ts.AutomationTargetParameterName = &v\n\treturn s\n}\n\n// SetCalendarNames sets the CalendarNames field's value.\nfunc (s *CreateAssociationInput) SetCalendarNames(v []*string) *CreateAssociationInput {\n\ts.CalendarNames = v\n\treturn s\n}\n\n// SetComplianceSeverity sets the ComplianceSeverity field's value.\nfunc (s *CreateAssociationInput) SetComplianceSeverity(v string) *CreateAssociationInput {\n\ts.ComplianceSeverity = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *CreateAssociationInput) SetDocumentVersion(v string) *CreateAssociationInput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *CreateAssociationInput) SetInstanceId(v string) *CreateAssociationInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *CreateAssociationInput) SetMaxConcurrency(v string) *CreateAssociationInput {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *CreateAssociationInput) SetMaxErrors(v string) *CreateAssociationInput {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *CreateAssociationInput) SetName(v string) *CreateAssociationInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOutputLocation sets the OutputLocation field's value.\nfunc (s *CreateAssociationInput) SetOutputLocation(v *InstanceAssociationOutputLocation) *CreateAssociationInput {\n\ts.OutputLocation = v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *CreateAssociationInput) SetParameters(v map[string][]*string) *CreateAssociationInput {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetScheduleExpression sets the ScheduleExpression field's value.\nfunc (s *CreateAssociationInput) SetScheduleExpression(v string) *CreateAssociationInput {\n\ts.ScheduleExpression = &v\n\treturn s\n}\n\n// SetScheduleOffset sets the ScheduleOffset field's value.\nfunc (s *CreateAssociationInput) SetScheduleOffset(v int64) *CreateAssociationInput {\n\ts.ScheduleOffset = &v\n\treturn s\n}\n\n// SetSyncCompliance sets the SyncCompliance field's value.\nfunc (s *CreateAssociationInput) SetSyncCompliance(v string) *CreateAssociationInput {\n\ts.SyncCompliance = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *CreateAssociationInput) SetTags(v []*Tag) *CreateAssociationInput {\n\ts.Tags = v\n\treturn s\n}\n\n// SetTargetLocations sets the TargetLocations field's value.\nfunc (s *CreateAssociationInput) SetTargetLocations(v []*TargetLocation) *CreateAssociationInput {\n\ts.TargetLocations = v\n\treturn s\n}\n\n// SetTargetMaps sets the TargetMaps field's value.\nfunc (s *CreateAssociationInput) SetTargetMaps(v []map[string][]*string) *CreateAssociationInput {\n\ts.TargetMaps = v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *CreateAssociationInput) SetTargets(v []*Target) *CreateAssociationInput {\n\ts.Targets = v\n\treturn s\n}\n\ntype CreateAssociationOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Information about the association.\n\tAssociationDescription *AssociationDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateAssociationOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateAssociationOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationDescription sets the AssociationDescription field's value.\nfunc (s *CreateAssociationOutput) SetAssociationDescription(v *AssociationDescription) *CreateAssociationOutput {\n\ts.AssociationDescription = v\n\treturn s\n}\n\ntype CreateDocumentInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A list of key-value pairs that describe attachments to a version of a document.\n\tAttachments []*AttachmentsSource `type:\"list\"`\n\n\t// The content for the new SSM document in JSON or YAML format. The content\n\t// of the document must not exceed 64KB. This quota also includes the content\n\t// specified for input parameters at runtime. We recommend storing the contents\n\t// for your new document in an external JSON or YAML file and referencing the\n\t// file in a command.\n\t//\n\t// For examples, see the following topics in the Amazon Web Services Systems\n\t// Manager User Guide.\n\t//\n\t//    * Create an SSM document (Amazon Web Services API) (https://docs.aws.amazon.com/systems-manager/latest/userguide/create-ssm-document-api.html)\n\t//\n\t//    * Create an SSM document (Amazon Web Services CLI) (https://docs.aws.amazon.com/systems-manager/latest/userguide/create-ssm-document-cli.html)\n\t//\n\t//    * Create an SSM document (API) (https://docs.aws.amazon.com/systems-manager/latest/userguide/create-ssm-document-api.html)\n\t//\n\t// Content is a required field\n\tContent *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// An optional field where you can specify a friendly name for the SSM document.\n\t// This value can differ for each version of the document. You can update this\n\t// value at a later time using the UpdateDocument operation.\n\tDisplayName *string `type:\"string\"`\n\n\t// Specify the document format for the request. The document format can be JSON,\n\t// YAML, or TEXT. JSON is the default format.\n\tDocumentFormat *string `type:\"string\" enum:\"DocumentFormat\"`\n\n\t// The type of document to create.\n\t//\n\t// The DeploymentStrategy document type is an internal-use-only document type\n\t// reserved for AppConfig.\n\tDocumentType *string `type:\"string\" enum:\"DocumentType\"`\n\n\t// A name for the SSM document.\n\t//\n\t// You can't use the following strings as document name prefixes. These are\n\t// reserved by Amazon Web Services for use as document name prefixes:\n\t//\n\t//    * aws\n\t//\n\t//    * amazon\n\t//\n\t//    * amzn\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n\n\t// A list of SSM documents required by a document. This parameter is used exclusively\n\t// by AppConfig. When a user creates an AppConfig configuration in an SSM document,\n\t// the user must also specify a required document for validation purposes. In\n\t// this case, an ApplicationConfiguration document requires an ApplicationConfigurationSchema\n\t// document for validation purposes. For more information, see What is AppConfig?\n\t// (https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html)\n\t// in the AppConfig User Guide.\n\tRequires []*DocumentRequires `min:\"1\" type:\"list\"`\n\n\t// Optional metadata that you assign to a resource. Tags enable you to categorize\n\t// a resource in different ways, such as by purpose, owner, or environment.\n\t// For example, you might want to tag an SSM document to identify the types\n\t// of targets or the environment where it will run. In this case, you could\n\t// specify the following key-value pairs:\n\t//\n\t//    * Key=OS,Value=Windows\n\t//\n\t//    * Key=Environment,Value=Production\n\t//\n\t// To add tags to an existing SSM document, use the AddTagsToResource operation.\n\tTags []*Tag `type:\"list\"`\n\n\t// Specify a target type to define the kinds of resources the document can run\n\t// on. For example, to run a document on EC2 instances, specify the following\n\t// value: /AWS::EC2::Instance. If you specify a value of '/' the document can\n\t// run on all types of resources. If you don't specify a value, the document\n\t// can't run on any resources. For a list of valid resource types, see Amazon\n\t// Web Services resource and property types reference (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)\n\t// in the CloudFormation User Guide.\n\tTargetType *string `type:\"string\"`\n\n\t// An optional field specifying the version of the artifact you are creating\n\t// with the document. For example, Release12.1. This value is unique across\n\t// all versions of a document, and can't be changed.\n\tVersionName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateDocumentInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateDocumentInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateDocumentInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateDocumentInput\"}\n\tif s.Content == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Content\"))\n\t}\n\tif s.Content != nil && len(*s.Content) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Content\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Requires != nil && len(s.Requires) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Requires\", 1))\n\t}\n\tif s.Attachments != nil {\n\t\tfor i, v := range s.Attachments {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Attachments\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Requires != nil {\n\t\tfor i, v := range s.Requires {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Requires\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttachments sets the Attachments field's value.\nfunc (s *CreateDocumentInput) SetAttachments(v []*AttachmentsSource) *CreateDocumentInput {\n\ts.Attachments = v\n\treturn s\n}\n\n// SetContent sets the Content field's value.\nfunc (s *CreateDocumentInput) SetContent(v string) *CreateDocumentInput {\n\ts.Content = &v\n\treturn s\n}\n\n// SetDisplayName sets the DisplayName field's value.\nfunc (s *CreateDocumentInput) SetDisplayName(v string) *CreateDocumentInput {\n\ts.DisplayName = &v\n\treturn s\n}\n\n// SetDocumentFormat sets the DocumentFormat field's value.\nfunc (s *CreateDocumentInput) SetDocumentFormat(v string) *CreateDocumentInput {\n\ts.DocumentFormat = &v\n\treturn s\n}\n\n// SetDocumentType sets the DocumentType field's value.\nfunc (s *CreateDocumentInput) SetDocumentType(v string) *CreateDocumentInput {\n\ts.DocumentType = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *CreateDocumentInput) SetName(v string) *CreateDocumentInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetRequires sets the Requires field's value.\nfunc (s *CreateDocumentInput) SetRequires(v []*DocumentRequires) *CreateDocumentInput {\n\ts.Requires = v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *CreateDocumentInput) SetTags(v []*Tag) *CreateDocumentInput {\n\ts.Tags = v\n\treturn s\n}\n\n// SetTargetType sets the TargetType field's value.\nfunc (s *CreateDocumentInput) SetTargetType(v string) *CreateDocumentInput {\n\ts.TargetType = &v\n\treturn s\n}\n\n// SetVersionName sets the VersionName field's value.\nfunc (s *CreateDocumentInput) SetVersionName(v string) *CreateDocumentInput {\n\ts.VersionName = &v\n\treturn s\n}\n\ntype CreateDocumentOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Information about the SSM document.\n\tDocumentDescription *DocumentDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateDocumentOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateDocumentOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetDocumentDescription sets the DocumentDescription field's value.\nfunc (s *CreateDocumentOutput) SetDocumentDescription(v *DocumentDescription) *CreateDocumentOutput {\n\ts.DocumentDescription = v\n\treturn s\n}\n\ntype CreateMaintenanceWindowInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Enables a maintenance window task to run on managed nodes, even if you haven't\n\t// registered those nodes as targets. If enabled, then you must specify the\n\t// unregistered managed nodes (by node ID) when you register a task with the\n\t// maintenance window.\n\t//\n\t// If you don't enable this option, then you must specify previously-registered\n\t// targets when you register a task with the maintenance window.\n\t//\n\t// AllowUnassociatedTargets is a required field\n\tAllowUnassociatedTargets *bool `type:\"boolean\" required:\"true\"`\n\n\t// User-provided idempotency token.\n\tClientToken *string `min:\"1\" type:\"string\" idempotencyToken:\"true\"`\n\n\t// The number of hours before the end of the maintenance window that Amazon\n\t// Web Services Systems Manager stops scheduling new tasks for execution.\n\t//\n\t// Cutoff is a required field\n\tCutoff *int64 `type:\"integer\" required:\"true\"`\n\n\t// An optional description for the maintenance window. We recommend specifying\n\t// a description to help you organize your maintenance windows.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateMaintenanceWindowInput's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The duration of the maintenance window in hours.\n\t//\n\t// Duration is a required field\n\tDuration *int64 `min:\"1\" type:\"integer\" required:\"true\"`\n\n\t// The date and time, in ISO-8601 Extended format, for when you want the maintenance\n\t// window to become inactive. EndDate allows you to set a date and time in the\n\t// future when the maintenance window will no longer run.\n\tEndDate *string `type:\"string\"`\n\n\t// The name of the maintenance window.\n\t//\n\t// Name is a required field\n\tName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// The schedule of the maintenance window in the form of a cron or rate expression.\n\t//\n\t// Schedule is a required field\n\tSchedule *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The number of days to wait after the date and time specified by a cron expression\n\t// before running the maintenance window.\n\t//\n\t// For example, the following cron expression schedules a maintenance window\n\t// to run on the third Tuesday of every month at 11:30 PM.\n\t//\n\t// cron(30 23 ? * TUE#3 *)\n\t//\n\t// If the schedule offset is 2, the maintenance window won't run until two days\n\t// later.\n\tScheduleOffset *int64 `min:\"1\" type:\"integer\"`\n\n\t// The time zone that the scheduled maintenance window executions are based\n\t// on, in Internet Assigned Numbers Authority (IANA) format. For example: \"America/Los_Angeles\",\n\t// \"UTC\", or \"Asia/Seoul\". For more information, see the Time Zone Database\n\t// (https://www.iana.org/time-zones) on the IANA website.\n\tScheduleTimezone *string `type:\"string\"`\n\n\t// The date and time, in ISO-8601 Extended format, for when you want the maintenance\n\t// window to become active. StartDate allows you to delay activation of the\n\t// maintenance window until the specified future date.\n\tStartDate *string `type:\"string\"`\n\n\t// Optional metadata that you assign to a resource. Tags enable you to categorize\n\t// a resource in different ways, such as by purpose, owner, or environment.\n\t// For example, you might want to tag a maintenance window to identify the type\n\t// of tasks it will run, the types of targets, and the environment it will run\n\t// in. In this case, you could specify the following key-value pairs:\n\t//\n\t//    * Key=TaskType,Value=AgentUpdate\n\t//\n\t//    * Key=OS,Value=Windows\n\t//\n\t//    * Key=Environment,Value=Production\n\t//\n\t// To add tags to an existing maintenance window, use the AddTagsToResource\n\t// operation.\n\tTags []*Tag `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateMaintenanceWindowInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateMaintenanceWindowInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateMaintenanceWindowInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateMaintenanceWindowInput\"}\n\tif s.AllowUnassociatedTargets == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AllowUnassociatedTargets\"))\n\t}\n\tif s.ClientToken != nil && len(*s.ClientToken) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ClientToken\", 1))\n\t}\n\tif s.Cutoff == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Cutoff\"))\n\t}\n\tif s.Description != nil && len(*s.Description) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Description\", 1))\n\t}\n\tif s.Duration == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Duration\"))\n\t}\n\tif s.Duration != nil && *s.Duration < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"Duration\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Name != nil && len(*s.Name) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 3))\n\t}\n\tif s.Schedule == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Schedule\"))\n\t}\n\tif s.Schedule != nil && len(*s.Schedule) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Schedule\", 1))\n\t}\n\tif s.ScheduleOffset != nil && *s.ScheduleOffset < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"ScheduleOffset\", 1))\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAllowUnassociatedTargets sets the AllowUnassociatedTargets field's value.\nfunc (s *CreateMaintenanceWindowInput) SetAllowUnassociatedTargets(v bool) *CreateMaintenanceWindowInput {\n\ts.AllowUnassociatedTargets = &v\n\treturn s\n}\n\n// SetClientToken sets the ClientToken field's value.\nfunc (s *CreateMaintenanceWindowInput) SetClientToken(v string) *CreateMaintenanceWindowInput {\n\ts.ClientToken = &v\n\treturn s\n}\n\n// SetCutoff sets the Cutoff field's value.\nfunc (s *CreateMaintenanceWindowInput) SetCutoff(v int64) *CreateMaintenanceWindowInput {\n\ts.Cutoff = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *CreateMaintenanceWindowInput) SetDescription(v string) *CreateMaintenanceWindowInput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetDuration sets the Duration field's value.\nfunc (s *CreateMaintenanceWindowInput) SetDuration(v int64) *CreateMaintenanceWindowInput {\n\ts.Duration = &v\n\treturn s\n}\n\n// SetEndDate sets the EndDate field's value.\nfunc (s *CreateMaintenanceWindowInput) SetEndDate(v string) *CreateMaintenanceWindowInput {\n\ts.EndDate = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *CreateMaintenanceWindowInput) SetName(v string) *CreateMaintenanceWindowInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetSchedule sets the Schedule field's value.\nfunc (s *CreateMaintenanceWindowInput) SetSchedule(v string) *CreateMaintenanceWindowInput {\n\ts.Schedule = &v\n\treturn s\n}\n\n// SetScheduleOffset sets the ScheduleOffset field's value.\nfunc (s *CreateMaintenanceWindowInput) SetScheduleOffset(v int64) *CreateMaintenanceWindowInput {\n\ts.ScheduleOffset = &v\n\treturn s\n}\n\n// SetScheduleTimezone sets the ScheduleTimezone field's value.\nfunc (s *CreateMaintenanceWindowInput) SetScheduleTimezone(v string) *CreateMaintenanceWindowInput {\n\ts.ScheduleTimezone = &v\n\treturn s\n}\n\n// SetStartDate sets the StartDate field's value.\nfunc (s *CreateMaintenanceWindowInput) SetStartDate(v string) *CreateMaintenanceWindowInput {\n\ts.StartDate = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *CreateMaintenanceWindowInput) SetTags(v []*Tag) *CreateMaintenanceWindowInput {\n\ts.Tags = v\n\treturn s\n}\n\ntype CreateMaintenanceWindowOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the created maintenance window.\n\tWindowId *string `min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateMaintenanceWindowOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateMaintenanceWindowOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *CreateMaintenanceWindowOutput) SetWindowId(v string) *CreateMaintenanceWindowOutput {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype CreateOpsItemInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The target Amazon Web Services account where you want to create an OpsItem.\n\t// To make this call, your account must be configured to work with OpsItems\n\t// across accounts. For more information, see Set up OpsCenter (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-setup.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tAccountId *string `type:\"string\"`\n\n\t// The time a runbook workflow ended. Currently reported only for the OpsItem\n\t// type /aws/changerequest.\n\tActualEndTime *time.Time `type:\"timestamp\"`\n\n\t// The time a runbook workflow started. Currently reported only for the OpsItem\n\t// type /aws/changerequest.\n\tActualStartTime *time.Time `type:\"timestamp\"`\n\n\t// Specify a category to assign to an OpsItem.\n\tCategory *string `min:\"1\" type:\"string\"`\n\n\t// User-defined text that contains information about the OpsItem, in Markdown\n\t// format.\n\t//\n\t// Provide enough information so that users viewing this OpsItem for the first\n\t// time understand the issue.\n\t//\n\t// Description is a required field\n\tDescription *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The Amazon Resource Name (ARN) of an SNS topic where notifications are sent\n\t// when this OpsItem is edited or changed.\n\tNotifications []*OpsItemNotification `type:\"list\"`\n\n\t// Operational data is custom data that provides useful reference details about\n\t// the OpsItem. For example, you can specify log files, error strings, license\n\t// keys, troubleshooting tips, or other relevant data. You enter operational\n\t// data as key-value pairs. The key has a maximum length of 128 characters.\n\t// The value has a maximum size of 20 KB.\n\t//\n\t// Operational data keys can't begin with the following: amazon, aws, amzn,\n\t// ssm, /amazon, /aws, /amzn, /ssm.\n\t//\n\t// You can choose to make the data searchable by other users in the account\n\t// or you can restrict search access. Searchable data means that all users with\n\t// access to the OpsItem Overview page (as provided by the DescribeOpsItems\n\t// API operation) can view and search on the specified data. Operational data\n\t// that isn't searchable is only viewable by users who have access to the OpsItem\n\t// (as provided by the GetOpsItem API operation).\n\t//\n\t// Use the /aws/resources key in OperationalData to specify a related resource\n\t// in the request. Use the /aws/automations key in OperationalData to associate\n\t// an Automation runbook with the OpsItem. To view Amazon Web Services CLI example\n\t// commands that use these keys, see Creating OpsItems manually (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-manually-create-OpsItems.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tOperationalData map[string]*OpsItemDataValue `type:\"map\"`\n\n\t// The type of OpsItem to create. Systems Manager supports the following types\n\t// of OpsItems:\n\t//\n\t//    * /aws/issue This type of OpsItem is used for default OpsItems created\n\t//    by OpsCenter.\n\t//\n\t//    * /aws/changerequest This type of OpsItem is used by Change Manager for\n\t//    reviewing and approving or rejecting change requests.\n\t//\n\t//    * /aws/insight This type of OpsItem is used by OpsCenter for aggregating\n\t//    and reporting on duplicate OpsItems.\n\tOpsItemType *string `type:\"string\"`\n\n\t// The time specified in a change request for a runbook workflow to end. Currently\n\t// supported only for the OpsItem type /aws/changerequest.\n\tPlannedEndTime *time.Time `type:\"timestamp\"`\n\n\t// The time specified in a change request for a runbook workflow to start. Currently\n\t// supported only for the OpsItem type /aws/changerequest.\n\tPlannedStartTime *time.Time `type:\"timestamp\"`\n\n\t// The importance of this OpsItem in relation to other OpsItems in the system.\n\tPriority *int64 `min:\"1\" type:\"integer\"`\n\n\t// One or more OpsItems that share something in common with the current OpsItems.\n\t// For example, related OpsItems can include OpsItems with similar error messages,\n\t// impacted resources, or statuses for the impacted resource.\n\tRelatedOpsItems []*RelatedOpsItem `type:\"list\"`\n\n\t// Specify a severity to assign to an OpsItem.\n\tSeverity *string `min:\"1\" type:\"string\"`\n\n\t// The origin of the OpsItem, such as Amazon EC2 or Systems Manager.\n\t//\n\t// The source name can't contain the following strings: aws, amazon, and amzn.\n\t//\n\t// Source is a required field\n\tSource *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// Optional metadata that you assign to a resource.\n\t//\n\t// Tags use a key-value pair. For example:\n\t//\n\t// Key=Department,Value=Finance\n\t//\n\t// To add tags to a new OpsItem, a user must have IAM permissions for both the\n\t// ssm:CreateOpsItems operation and the ssm:AddTagsToResource operation. To\n\t// add tags to an existing OpsItem, use the AddTagsToResource operation.\n\tTags []*Tag `type:\"list\"`\n\n\t// A short heading that describes the nature of the OpsItem and the impacted\n\t// resource.\n\t//\n\t// Title is a required field\n\tTitle *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateOpsItemInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateOpsItemInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateOpsItemInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateOpsItemInput\"}\n\tif s.Category != nil && len(*s.Category) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Category\", 1))\n\t}\n\tif s.Description == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Description\"))\n\t}\n\tif s.Description != nil && len(*s.Description) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Description\", 1))\n\t}\n\tif s.Priority != nil && *s.Priority < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"Priority\", 1))\n\t}\n\tif s.Severity != nil && len(*s.Severity) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Severity\", 1))\n\t}\n\tif s.Source == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Source\"))\n\t}\n\tif s.Source != nil && len(*s.Source) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Source\", 1))\n\t}\n\tif s.Title == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Title\"))\n\t}\n\tif s.Title != nil && len(*s.Title) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Title\", 1))\n\t}\n\tif s.RelatedOpsItems != nil {\n\t\tfor i, v := range s.RelatedOpsItems {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"RelatedOpsItems\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAccountId sets the AccountId field's value.\nfunc (s *CreateOpsItemInput) SetAccountId(v string) *CreateOpsItemInput {\n\ts.AccountId = &v\n\treturn s\n}\n\n// SetActualEndTime sets the ActualEndTime field's value.\nfunc (s *CreateOpsItemInput) SetActualEndTime(v time.Time) *CreateOpsItemInput {\n\ts.ActualEndTime = &v\n\treturn s\n}\n\n// SetActualStartTime sets the ActualStartTime field's value.\nfunc (s *CreateOpsItemInput) SetActualStartTime(v time.Time) *CreateOpsItemInput {\n\ts.ActualStartTime = &v\n\treturn s\n}\n\n// SetCategory sets the Category field's value.\nfunc (s *CreateOpsItemInput) SetCategory(v string) *CreateOpsItemInput {\n\ts.Category = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *CreateOpsItemInput) SetDescription(v string) *CreateOpsItemInput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetNotifications sets the Notifications field's value.\nfunc (s *CreateOpsItemInput) SetNotifications(v []*OpsItemNotification) *CreateOpsItemInput {\n\ts.Notifications = v\n\treturn s\n}\n\n// SetOperationalData sets the OperationalData field's value.\nfunc (s *CreateOpsItemInput) SetOperationalData(v map[string]*OpsItemDataValue) *CreateOpsItemInput {\n\ts.OperationalData = v\n\treturn s\n}\n\n// SetOpsItemType sets the OpsItemType field's value.\nfunc (s *CreateOpsItemInput) SetOpsItemType(v string) *CreateOpsItemInput {\n\ts.OpsItemType = &v\n\treturn s\n}\n\n// SetPlannedEndTime sets the PlannedEndTime field's value.\nfunc (s *CreateOpsItemInput) SetPlannedEndTime(v time.Time) *CreateOpsItemInput {\n\ts.PlannedEndTime = &v\n\treturn s\n}\n\n// SetPlannedStartTime sets the PlannedStartTime field's value.\nfunc (s *CreateOpsItemInput) SetPlannedStartTime(v time.Time) *CreateOpsItemInput {\n\ts.PlannedStartTime = &v\n\treturn s\n}\n\n// SetPriority sets the Priority field's value.\nfunc (s *CreateOpsItemInput) SetPriority(v int64) *CreateOpsItemInput {\n\ts.Priority = &v\n\treturn s\n}\n\n// SetRelatedOpsItems sets the RelatedOpsItems field's value.\nfunc (s *CreateOpsItemInput) SetRelatedOpsItems(v []*RelatedOpsItem) *CreateOpsItemInput {\n\ts.RelatedOpsItems = v\n\treturn s\n}\n\n// SetSeverity sets the Severity field's value.\nfunc (s *CreateOpsItemInput) SetSeverity(v string) *CreateOpsItemInput {\n\ts.Severity = &v\n\treturn s\n}\n\n// SetSource sets the Source field's value.\nfunc (s *CreateOpsItemInput) SetSource(v string) *CreateOpsItemInput {\n\ts.Source = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *CreateOpsItemInput) SetTags(v []*Tag) *CreateOpsItemInput {\n\ts.Tags = v\n\treturn s\n}\n\n// SetTitle sets the Title field's value.\nfunc (s *CreateOpsItemInput) SetTitle(v string) *CreateOpsItemInput {\n\ts.Title = &v\n\treturn s\n}\n\ntype CreateOpsItemOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The OpsItem Amazon Resource Name (ARN).\n\tOpsItemArn *string `min:\"20\" type:\"string\"`\n\n\t// The ID of the OpsItem.\n\tOpsItemId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateOpsItemOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateOpsItemOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetOpsItemArn sets the OpsItemArn field's value.\nfunc (s *CreateOpsItemOutput) SetOpsItemArn(v string) *CreateOpsItemOutput {\n\ts.OpsItemArn = &v\n\treturn s\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *CreateOpsItemOutput) SetOpsItemId(v string) *CreateOpsItemOutput {\n\ts.OpsItemId = &v\n\treturn s\n}\n\ntype CreateOpsMetadataInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Metadata for a new Application Manager application.\n\tMetadata map[string]*MetadataValue `min:\"1\" type:\"map\"`\n\n\t// A resource ID for a new Application Manager application.\n\t//\n\t// ResourceId is a required field\n\tResourceId *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// Optional metadata that you assign to a resource. You can specify a maximum\n\t// of five tags for an OpsMetadata object. Tags enable you to categorize a resource\n\t// in different ways, such as by purpose, owner, or environment. For example,\n\t// you might want to tag an OpsMetadata object to identify an environment or\n\t// target Amazon Web Services Region. In this case, you could specify the following\n\t// key-value pairs:\n\t//\n\t//    * Key=Environment,Value=Production\n\t//\n\t//    * Key=Region,Value=us-east-2\n\tTags []*Tag `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateOpsMetadataInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateOpsMetadataInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateOpsMetadataInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateOpsMetadataInput\"}\n\tif s.Metadata != nil && len(s.Metadata) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Metadata\", 1))\n\t}\n\tif s.ResourceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceId\"))\n\t}\n\tif s.ResourceId != nil && len(*s.ResourceId) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ResourceId\", 1))\n\t}\n\tif s.Metadata != nil {\n\t\tfor i, v := range s.Metadata {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Metadata\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetMetadata sets the Metadata field's value.\nfunc (s *CreateOpsMetadataInput) SetMetadata(v map[string]*MetadataValue) *CreateOpsMetadataInput {\n\ts.Metadata = v\n\treturn s\n}\n\n// SetResourceId sets the ResourceId field's value.\nfunc (s *CreateOpsMetadataInput) SetResourceId(v string) *CreateOpsMetadataInput {\n\ts.ResourceId = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *CreateOpsMetadataInput) SetTags(v []*Tag) *CreateOpsMetadataInput {\n\ts.Tags = v\n\treturn s\n}\n\ntype CreateOpsMetadataOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) of the OpsMetadata Object or blob created\n\t// by the call.\n\tOpsMetadataArn *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateOpsMetadataOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateOpsMetadataOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetOpsMetadataArn sets the OpsMetadataArn field's value.\nfunc (s *CreateOpsMetadataOutput) SetOpsMetadataArn(v string) *CreateOpsMetadataOutput {\n\ts.OpsMetadataArn = &v\n\treturn s\n}\n\ntype CreatePatchBaselineInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A set of rules used to include patches in the baseline.\n\tApprovalRules *PatchRuleGroup `type:\"structure\"`\n\n\t// A list of explicitly approved patches for the baseline.\n\t//\n\t// For information about accepted formats for lists of approved patches and\n\t// rejected patches, see About package name formats for approved and rejected\n\t// patch lists (https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tApprovedPatches []*string `type:\"list\"`\n\n\t// Defines the compliance level for approved patches. When an approved patch\n\t// is reported as missing, this value describes the severity of the compliance\n\t// violation. The default value is UNSPECIFIED.\n\tApprovedPatchesComplianceLevel *string `type:\"string\" enum:\"PatchComplianceLevel\"`\n\n\t// Indicates whether the list of approved patches includes non-security updates\n\t// that should be applied to the managed nodes. The default value is false.\n\t// Applies to Linux managed nodes only.\n\tApprovedPatchesEnableNonSecurity *bool `type:\"boolean\"`\n\n\t// User-provided idempotency token.\n\tClientToken *string `min:\"1\" type:\"string\" idempotencyToken:\"true\"`\n\n\t// A description of the patch baseline.\n\tDescription *string `min:\"1\" type:\"string\"`\n\n\t// A set of global filters used to include patches in the baseline.\n\tGlobalFilters *PatchFilterGroup `type:\"structure\"`\n\n\t// The name of the patch baseline.\n\t//\n\t// Name is a required field\n\tName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// Defines the operating system the patch baseline applies to. The default value\n\t// is WINDOWS.\n\tOperatingSystem *string `type:\"string\" enum:\"OperatingSystem\"`\n\n\t// A list of explicitly rejected patches for the baseline.\n\t//\n\t// For information about accepted formats for lists of approved patches and\n\t// rejected patches, see About package name formats for approved and rejected\n\t// patch lists (https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tRejectedPatches []*string `type:\"list\"`\n\n\t// The action for Patch Manager to take on patches included in the RejectedPackages\n\t// list.\n\t//\n\t//    * ALLOW_AS_DEPENDENCY : A package in the Rejected patches list is installed\n\t//    only if it is a dependency of another package. It is considered compliant\n\t//    with the patch baseline, and its status is reported as InstalledOther.\n\t//    This is the default action if no option is specified.\n\t//\n\t//    * BLOCK : Packages in the RejectedPatches list, and packages that include\n\t//    them as dependencies, aren't installed under any circumstances. If a package\n\t//    was installed before it was added to the Rejected patches list, it is\n\t//    considered non-compliant with the patch baseline, and its status is reported\n\t//    as InstalledRejected.\n\tRejectedPatchesAction *string `type:\"string\" enum:\"PatchAction\"`\n\n\t// Information about the patches to use to update the managed nodes, including\n\t// target operating systems and source repositories. Applies to Linux managed\n\t// nodes only.\n\tSources []*PatchSource `type:\"list\"`\n\n\t// Optional metadata that you assign to a resource. Tags enable you to categorize\n\t// a resource in different ways, such as by purpose, owner, or environment.\n\t// For example, you might want to tag a patch baseline to identify the severity\n\t// level of patches it specifies and the operating system family it applies\n\t// to. In this case, you could specify the following key-value pairs:\n\t//\n\t//    * Key=PatchSeverity,Value=Critical\n\t//\n\t//    * Key=OS,Value=Windows\n\t//\n\t// To add tags to an existing patch baseline, use the AddTagsToResource operation.\n\tTags []*Tag `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreatePatchBaselineInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreatePatchBaselineInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreatePatchBaselineInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreatePatchBaselineInput\"}\n\tif s.ClientToken != nil && len(*s.ClientToken) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ClientToken\", 1))\n\t}\n\tif s.Description != nil && len(*s.Description) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Description\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Name != nil && len(*s.Name) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 3))\n\t}\n\tif s.ApprovalRules != nil {\n\t\tif err := s.ApprovalRules.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ApprovalRules\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.GlobalFilters != nil {\n\t\tif err := s.GlobalFilters.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"GlobalFilters\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Sources != nil {\n\t\tfor i, v := range s.Sources {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Sources\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetApprovalRules sets the ApprovalRules field's value.\nfunc (s *CreatePatchBaselineInput) SetApprovalRules(v *PatchRuleGroup) *CreatePatchBaselineInput {\n\ts.ApprovalRules = v\n\treturn s\n}\n\n// SetApprovedPatches sets the ApprovedPatches field's value.\nfunc (s *CreatePatchBaselineInput) SetApprovedPatches(v []*string) *CreatePatchBaselineInput {\n\ts.ApprovedPatches = v\n\treturn s\n}\n\n// SetApprovedPatchesComplianceLevel sets the ApprovedPatchesComplianceLevel field's value.\nfunc (s *CreatePatchBaselineInput) SetApprovedPatchesComplianceLevel(v string) *CreatePatchBaselineInput {\n\ts.ApprovedPatchesComplianceLevel = &v\n\treturn s\n}\n\n// SetApprovedPatchesEnableNonSecurity sets the ApprovedPatchesEnableNonSecurity field's value.\nfunc (s *CreatePatchBaselineInput) SetApprovedPatchesEnableNonSecurity(v bool) *CreatePatchBaselineInput {\n\ts.ApprovedPatchesEnableNonSecurity = &v\n\treturn s\n}\n\n// SetClientToken sets the ClientToken field's value.\nfunc (s *CreatePatchBaselineInput) SetClientToken(v string) *CreatePatchBaselineInput {\n\ts.ClientToken = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *CreatePatchBaselineInput) SetDescription(v string) *CreatePatchBaselineInput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetGlobalFilters sets the GlobalFilters field's value.\nfunc (s *CreatePatchBaselineInput) SetGlobalFilters(v *PatchFilterGroup) *CreatePatchBaselineInput {\n\ts.GlobalFilters = v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *CreatePatchBaselineInput) SetName(v string) *CreatePatchBaselineInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOperatingSystem sets the OperatingSystem field's value.\nfunc (s *CreatePatchBaselineInput) SetOperatingSystem(v string) *CreatePatchBaselineInput {\n\ts.OperatingSystem = &v\n\treturn s\n}\n\n// SetRejectedPatches sets the RejectedPatches field's value.\nfunc (s *CreatePatchBaselineInput) SetRejectedPatches(v []*string) *CreatePatchBaselineInput {\n\ts.RejectedPatches = v\n\treturn s\n}\n\n// SetRejectedPatchesAction sets the RejectedPatchesAction field's value.\nfunc (s *CreatePatchBaselineInput) SetRejectedPatchesAction(v string) *CreatePatchBaselineInput {\n\ts.RejectedPatchesAction = &v\n\treturn s\n}\n\n// SetSources sets the Sources field's value.\nfunc (s *CreatePatchBaselineInput) SetSources(v []*PatchSource) *CreatePatchBaselineInput {\n\ts.Sources = v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *CreatePatchBaselineInput) SetTags(v []*Tag) *CreatePatchBaselineInput {\n\ts.Tags = v\n\treturn s\n}\n\ntype CreatePatchBaselineOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the created patch baseline.\n\tBaselineId *string `min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreatePatchBaselineOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreatePatchBaselineOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *CreatePatchBaselineOutput) SetBaselineId(v string) *CreatePatchBaselineOutput {\n\ts.BaselineId = &v\n\treturn s\n}\n\ntype CreateResourceDataSyncInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Amazon S3 configuration details for the sync. This parameter is required\n\t// if the SyncType value is SyncToDestination.\n\tS3Destination *ResourceDataSyncS3Destination `type:\"structure\"`\n\n\t// A name for the configuration.\n\t//\n\t// SyncName is a required field\n\tSyncName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// Specify information about the data sources to synchronize. This parameter\n\t// is required if the SyncType value is SyncFromSource.\n\tSyncSource *ResourceDataSyncSource `type:\"structure\"`\n\n\t// Specify SyncToDestination to create a resource data sync that synchronizes\n\t// data to an S3 bucket for Inventory. If you specify SyncToDestination, you\n\t// must provide a value for S3Destination. Specify SyncFromSource to synchronize\n\t// data from a single account and multiple Regions, or multiple Amazon Web Services\n\t// accounts and Amazon Web Services Regions, as listed in Organizations for\n\t// Explorer. If you specify SyncFromSource, you must provide a value for SyncSource.\n\t// The default value is SyncToDestination.\n\tSyncType *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateResourceDataSyncInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateResourceDataSyncInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateResourceDataSyncInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateResourceDataSyncInput\"}\n\tif s.SyncName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SyncName\"))\n\t}\n\tif s.SyncName != nil && len(*s.SyncName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SyncName\", 1))\n\t}\n\tif s.SyncType != nil && len(*s.SyncType) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SyncType\", 1))\n\t}\n\tif s.S3Destination != nil {\n\t\tif err := s.S3Destination.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"S3Destination\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.SyncSource != nil {\n\t\tif err := s.SyncSource.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"SyncSource\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetS3Destination sets the S3Destination field's value.\nfunc (s *CreateResourceDataSyncInput) SetS3Destination(v *ResourceDataSyncS3Destination) *CreateResourceDataSyncInput {\n\ts.S3Destination = v\n\treturn s\n}\n\n// SetSyncName sets the SyncName field's value.\nfunc (s *CreateResourceDataSyncInput) SetSyncName(v string) *CreateResourceDataSyncInput {\n\ts.SyncName = &v\n\treturn s\n}\n\n// SetSyncSource sets the SyncSource field's value.\nfunc (s *CreateResourceDataSyncInput) SetSyncSource(v *ResourceDataSyncSource) *CreateResourceDataSyncInput {\n\ts.SyncSource = v\n\treturn s\n}\n\n// SetSyncType sets the SyncType field's value.\nfunc (s *CreateResourceDataSyncInput) SetSyncType(v string) *CreateResourceDataSyncInput {\n\ts.SyncType = &v\n\treturn s\n}\n\ntype CreateResourceDataSyncOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateResourceDataSyncOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateResourceDataSyncOutput) GoString() string {\n\treturn s.String()\n}\n\n// You have exceeded the limit for custom schemas. Delete one or more custom\n// schemas and try again.\ntype CustomSchemaCountLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CustomSchemaCountLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CustomSchemaCountLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorCustomSchemaCountLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &CustomSchemaCountLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *CustomSchemaCountLimitExceededException) Code() string {\n\treturn \"CustomSchemaCountLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *CustomSchemaCountLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *CustomSchemaCountLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *CustomSchemaCountLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *CustomSchemaCountLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *CustomSchemaCountLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype DeleteActivationInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the activation that you want to delete.\n\t//\n\t// ActivationId is a required field\n\tActivationId *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteActivationInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteActivationInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteActivationInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteActivationInput\"}\n\tif s.ActivationId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ActivationId\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetActivationId sets the ActivationId field's value.\nfunc (s *DeleteActivationInput) SetActivationId(v string) *DeleteActivationInput {\n\ts.ActivationId = &v\n\treturn s\n}\n\ntype DeleteActivationOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteActivationOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteActivationOutput) GoString() string {\n\treturn s.String()\n}\n\ntype DeleteAssociationInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The association ID that you want to delete.\n\tAssociationId *string `type:\"string\"`\n\n\t// The managed node ID.\n\t//\n\t// InstanceId has been deprecated. To specify a managed node ID for an association,\n\t// use the Targets parameter. Requests that include the parameter InstanceID\n\t// with Systems Manager documents (SSM documents) that use schema version 2.0\n\t// or later will fail. In addition, if you use the parameter InstanceId, you\n\t// can't use the parameters AssociationName, DocumentVersion, MaxErrors, MaxConcurrency,\n\t// OutputLocation, or ScheduleExpression. To use these parameters, you must\n\t// use the Targets parameter.\n\tInstanceId *string `type:\"string\"`\n\n\t// The name of the SSM document.\n\tName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteAssociationInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteAssociationInput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *DeleteAssociationInput) SetAssociationId(v string) *DeleteAssociationInput {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *DeleteAssociationInput) SetInstanceId(v string) *DeleteAssociationInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *DeleteAssociationInput) SetName(v string) *DeleteAssociationInput {\n\ts.Name = &v\n\treturn s\n}\n\ntype DeleteAssociationOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteAssociationOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteAssociationOutput) GoString() string {\n\treturn s.String()\n}\n\ntype DeleteDocumentInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The version of the document that you want to delete. If not provided, all\n\t// versions of the document are deleted.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// Some SSM document types require that you specify a Force flag before you\n\t// can delete the document. For example, you must specify a Force flag to delete\n\t// a document of type ApplicationConfigurationSchema. You can restrict access\n\t// to the Force flag in an Identity and Access Management (IAM) policy.\n\tForce *bool `type:\"boolean\"`\n\n\t// The name of the document.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n\n\t// The version name of the document that you want to delete. If not provided,\n\t// all versions of the document are deleted.\n\tVersionName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteDocumentInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteDocumentInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteDocumentInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteDocumentInput\"}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *DeleteDocumentInput) SetDocumentVersion(v string) *DeleteDocumentInput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetForce sets the Force field's value.\nfunc (s *DeleteDocumentInput) SetForce(v bool) *DeleteDocumentInput {\n\ts.Force = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *DeleteDocumentInput) SetName(v string) *DeleteDocumentInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetVersionName sets the VersionName field's value.\nfunc (s *DeleteDocumentInput) SetVersionName(v string) *DeleteDocumentInput {\n\ts.VersionName = &v\n\treturn s\n}\n\ntype DeleteDocumentOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteDocumentOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteDocumentOutput) GoString() string {\n\treturn s.String()\n}\n\ntype DeleteInventoryInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// User-provided idempotency token.\n\tClientToken *string `type:\"string\" idempotencyToken:\"true\"`\n\n\t// Use this option to view a summary of the deletion request without deleting\n\t// any data or the data type. This option is useful when you only want to understand\n\t// what will be deleted. Once you validate that the data to be deleted is what\n\t// you intend to delete, you can run the same command without specifying the\n\t// DryRun option.\n\tDryRun *bool `type:\"boolean\"`\n\n\t// Use the SchemaDeleteOption to delete a custom inventory type (schema). If\n\t// you don't choose this option, the system only deletes existing inventory\n\t// data associated with the custom inventory type. Choose one of the following\n\t// options:\n\t//\n\t// DisableSchema: If you choose this option, the system ignores all inventory\n\t// data for the specified version, and any earlier versions. To enable this\n\t// schema again, you must call the PutInventory operation for a version greater\n\t// than the disabled version.\n\t//\n\t// DeleteSchema: This option deletes the specified custom type from the Inventory\n\t// service. You can recreate the schema later, if you want.\n\tSchemaDeleteOption *string `type:\"string\" enum:\"InventorySchemaDeleteOption\"`\n\n\t// The name of the custom inventory type for which you want to delete either\n\t// all previously collected data or the inventory type itself.\n\t//\n\t// TypeName is a required field\n\tTypeName *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteInventoryInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteInventoryInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteInventoryInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteInventoryInput\"}\n\tif s.TypeName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TypeName\"))\n\t}\n\tif s.TypeName != nil && len(*s.TypeName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TypeName\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetClientToken sets the ClientToken field's value.\nfunc (s *DeleteInventoryInput) SetClientToken(v string) *DeleteInventoryInput {\n\ts.ClientToken = &v\n\treturn s\n}\n\n// SetDryRun sets the DryRun field's value.\nfunc (s *DeleteInventoryInput) SetDryRun(v bool) *DeleteInventoryInput {\n\ts.DryRun = &v\n\treturn s\n}\n\n// SetSchemaDeleteOption sets the SchemaDeleteOption field's value.\nfunc (s *DeleteInventoryInput) SetSchemaDeleteOption(v string) *DeleteInventoryInput {\n\ts.SchemaDeleteOption = &v\n\treturn s\n}\n\n// SetTypeName sets the TypeName field's value.\nfunc (s *DeleteInventoryInput) SetTypeName(v string) *DeleteInventoryInput {\n\ts.TypeName = &v\n\treturn s\n}\n\ntype DeleteInventoryOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Every DeleteInventory operation is assigned a unique ID. This option returns\n\t// a unique ID. You can use this ID to query the status of a delete operation.\n\t// This option is useful for ensuring that a delete operation has completed\n\t// before you begin other operations.\n\tDeletionId *string `type:\"string\"`\n\n\t// A summary of the delete operation. For more information about this summary,\n\t// see Deleting custom inventory (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-custom.html#sysman-inventory-delete-summary)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tDeletionSummary *InventoryDeletionSummary `type:\"structure\"`\n\n\t// The name of the inventory data type specified in the request.\n\tTypeName *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteInventoryOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteInventoryOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetDeletionId sets the DeletionId field's value.\nfunc (s *DeleteInventoryOutput) SetDeletionId(v string) *DeleteInventoryOutput {\n\ts.DeletionId = &v\n\treturn s\n}\n\n// SetDeletionSummary sets the DeletionSummary field's value.\nfunc (s *DeleteInventoryOutput) SetDeletionSummary(v *InventoryDeletionSummary) *DeleteInventoryOutput {\n\ts.DeletionSummary = v\n\treturn s\n}\n\n// SetTypeName sets the TypeName field's value.\nfunc (s *DeleteInventoryOutput) SetTypeName(v string) *DeleteInventoryOutput {\n\ts.TypeName = &v\n\treturn s\n}\n\ntype DeleteMaintenanceWindowInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the maintenance window to delete.\n\t//\n\t// WindowId is a required field\n\tWindowId *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteMaintenanceWindowInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteMaintenanceWindowInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteMaintenanceWindowInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteMaintenanceWindowInput\"}\n\tif s.WindowId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowId\"))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *DeleteMaintenanceWindowInput) SetWindowId(v string) *DeleteMaintenanceWindowInput {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype DeleteMaintenanceWindowOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the deleted maintenance window.\n\tWindowId *string `min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteMaintenanceWindowOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteMaintenanceWindowOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *DeleteMaintenanceWindowOutput) SetWindowId(v string) *DeleteMaintenanceWindowOutput {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype DeleteOpsItemInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the OpsItem that you want to delete.\n\t//\n\t// OpsItemId is a required field\n\tOpsItemId *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteOpsItemInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteOpsItemInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteOpsItemInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteOpsItemInput\"}\n\tif s.OpsItemId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"OpsItemId\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *DeleteOpsItemInput) SetOpsItemId(v string) *DeleteOpsItemInput {\n\ts.OpsItemId = &v\n\treturn s\n}\n\ntype DeleteOpsItemOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteOpsItemOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteOpsItemOutput) GoString() string {\n\treturn s.String()\n}\n\ntype DeleteOpsMetadataInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) of an OpsMetadata Object to delete.\n\t//\n\t// OpsMetadataArn is a required field\n\tOpsMetadataArn *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteOpsMetadataInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteOpsMetadataInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteOpsMetadataInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteOpsMetadataInput\"}\n\tif s.OpsMetadataArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"OpsMetadataArn\"))\n\t}\n\tif s.OpsMetadataArn != nil && len(*s.OpsMetadataArn) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OpsMetadataArn\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetOpsMetadataArn sets the OpsMetadataArn field's value.\nfunc (s *DeleteOpsMetadataInput) SetOpsMetadataArn(v string) *DeleteOpsMetadataInput {\n\ts.OpsMetadataArn = &v\n\treturn s\n}\n\ntype DeleteOpsMetadataOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteOpsMetadataOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteOpsMetadataOutput) GoString() string {\n\treturn s.String()\n}\n\ntype DeleteParameterInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the parameter to delete.\n\t//\n\t// Name is a required field\n\tName *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteParameterInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteParameterInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteParameterInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteParameterInput\"}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Name != nil && len(*s.Name) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetName sets the Name field's value.\nfunc (s *DeleteParameterInput) SetName(v string) *DeleteParameterInput {\n\ts.Name = &v\n\treturn s\n}\n\ntype DeleteParameterOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteParameterOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteParameterOutput) GoString() string {\n\treturn s.String()\n}\n\ntype DeleteParametersInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The names of the parameters to delete. After deleting a parameter, wait for\n\t// at least 30 seconds to create a parameter with the same name.\n\t//\n\t// Names is a required field\n\tNames []*string `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteParametersInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteParametersInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteParametersInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteParametersInput\"}\n\tif s.Names == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Names\"))\n\t}\n\tif s.Names != nil && len(s.Names) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Names\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetNames sets the Names field's value.\nfunc (s *DeleteParametersInput) SetNames(v []*string) *DeleteParametersInput {\n\ts.Names = v\n\treturn s\n}\n\ntype DeleteParametersOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The names of the deleted parameters.\n\tDeletedParameters []*string `min:\"1\" type:\"list\"`\n\n\t// The names of parameters that weren't deleted because the parameters aren't\n\t// valid.\n\tInvalidParameters []*string `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteParametersOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteParametersOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetDeletedParameters sets the DeletedParameters field's value.\nfunc (s *DeleteParametersOutput) SetDeletedParameters(v []*string) *DeleteParametersOutput {\n\ts.DeletedParameters = v\n\treturn s\n}\n\n// SetInvalidParameters sets the InvalidParameters field's value.\nfunc (s *DeleteParametersOutput) SetInvalidParameters(v []*string) *DeleteParametersOutput {\n\ts.InvalidParameters = v\n\treturn s\n}\n\ntype DeletePatchBaselineInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the patch baseline to delete.\n\t//\n\t// BaselineId is a required field\n\tBaselineId *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeletePatchBaselineInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeletePatchBaselineInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeletePatchBaselineInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeletePatchBaselineInput\"}\n\tif s.BaselineId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"BaselineId\"))\n\t}\n\tif s.BaselineId != nil && len(*s.BaselineId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"BaselineId\", 20))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *DeletePatchBaselineInput) SetBaselineId(v string) *DeletePatchBaselineInput {\n\ts.BaselineId = &v\n\treturn s\n}\n\ntype DeletePatchBaselineOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the deleted patch baseline.\n\tBaselineId *string `min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeletePatchBaselineOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeletePatchBaselineOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *DeletePatchBaselineOutput) SetBaselineId(v string) *DeletePatchBaselineOutput {\n\ts.BaselineId = &v\n\treturn s\n}\n\ntype DeleteResourceDataSyncInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the configuration to delete.\n\t//\n\t// SyncName is a required field\n\tSyncName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// Specify the type of resource data sync to delete.\n\tSyncType *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteResourceDataSyncInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteResourceDataSyncInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteResourceDataSyncInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteResourceDataSyncInput\"}\n\tif s.SyncName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SyncName\"))\n\t}\n\tif s.SyncName != nil && len(*s.SyncName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SyncName\", 1))\n\t}\n\tif s.SyncType != nil && len(*s.SyncType) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SyncType\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetSyncName sets the SyncName field's value.\nfunc (s *DeleteResourceDataSyncInput) SetSyncName(v string) *DeleteResourceDataSyncInput {\n\ts.SyncName = &v\n\treturn s\n}\n\n// SetSyncType sets the SyncType field's value.\nfunc (s *DeleteResourceDataSyncInput) SetSyncType(v string) *DeleteResourceDataSyncInput {\n\ts.SyncType = &v\n\treturn s\n}\n\ntype DeleteResourceDataSyncOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteResourceDataSyncOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteResourceDataSyncOutput) GoString() string {\n\treturn s.String()\n}\n\ntype DeleteResourcePolicyInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// ID of the current policy version. The hash helps to prevent multiple calls\n\t// from attempting to overwrite a policy.\n\t//\n\t// PolicyHash is a required field\n\tPolicyHash *string `type:\"string\" required:\"true\"`\n\n\t// The policy ID.\n\t//\n\t// PolicyId is a required field\n\tPolicyId *string `type:\"string\" required:\"true\"`\n\n\t// Amazon Resource Name (ARN) of the resource to which the policies are attached.\n\t//\n\t// ResourceArn is a required field\n\tResourceArn *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteResourcePolicyInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteResourcePolicyInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeleteResourcePolicyInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeleteResourcePolicyInput\"}\n\tif s.PolicyHash == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PolicyHash\"))\n\t}\n\tif s.PolicyId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PolicyId\"))\n\t}\n\tif s.ResourceArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceArn\"))\n\t}\n\tif s.ResourceArn != nil && len(*s.ResourceArn) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ResourceArn\", 20))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetPolicyHash sets the PolicyHash field's value.\nfunc (s *DeleteResourcePolicyInput) SetPolicyHash(v string) *DeleteResourcePolicyInput {\n\ts.PolicyHash = &v\n\treturn s\n}\n\n// SetPolicyId sets the PolicyId field's value.\nfunc (s *DeleteResourcePolicyInput) SetPolicyId(v string) *DeleteResourcePolicyInput {\n\ts.PolicyId = &v\n\treturn s\n}\n\n// SetResourceArn sets the ResourceArn field's value.\nfunc (s *DeleteResourcePolicyInput) SetResourceArn(v string) *DeleteResourcePolicyInput {\n\ts.ResourceArn = &v\n\treturn s\n}\n\ntype DeleteResourcePolicyOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteResourcePolicyOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeleteResourcePolicyOutput) GoString() string {\n\treturn s.String()\n}\n\ntype DeregisterManagedInstanceInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID assigned to the managed node when you registered it using the activation\n\t// process.\n\t//\n\t// InstanceId is a required field\n\tInstanceId *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterManagedInstanceInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterManagedInstanceInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeregisterManagedInstanceInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeregisterManagedInstanceInput\"}\n\tif s.InstanceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"InstanceId\"))\n\t}\n\tif s.InstanceId != nil && len(*s.InstanceId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"InstanceId\", 20))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *DeregisterManagedInstanceInput) SetInstanceId(v string) *DeregisterManagedInstanceInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\ntype DeregisterManagedInstanceOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterManagedInstanceOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterManagedInstanceOutput) GoString() string {\n\treturn s.String()\n}\n\ntype DeregisterPatchBaselineForPatchGroupInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the patch baseline to deregister the patch group from.\n\t//\n\t// BaselineId is a required field\n\tBaselineId *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// The name of the patch group that should be deregistered from the patch baseline.\n\t//\n\t// PatchGroup is a required field\n\tPatchGroup *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterPatchBaselineForPatchGroupInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterPatchBaselineForPatchGroupInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeregisterPatchBaselineForPatchGroupInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeregisterPatchBaselineForPatchGroupInput\"}\n\tif s.BaselineId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"BaselineId\"))\n\t}\n\tif s.BaselineId != nil && len(*s.BaselineId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"BaselineId\", 20))\n\t}\n\tif s.PatchGroup == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PatchGroup\"))\n\t}\n\tif s.PatchGroup != nil && len(*s.PatchGroup) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"PatchGroup\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *DeregisterPatchBaselineForPatchGroupInput) SetBaselineId(v string) *DeregisterPatchBaselineForPatchGroupInput {\n\ts.BaselineId = &v\n\treturn s\n}\n\n// SetPatchGroup sets the PatchGroup field's value.\nfunc (s *DeregisterPatchBaselineForPatchGroupInput) SetPatchGroup(v string) *DeregisterPatchBaselineForPatchGroupInput {\n\ts.PatchGroup = &v\n\treturn s\n}\n\ntype DeregisterPatchBaselineForPatchGroupOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the patch baseline the patch group was deregistered from.\n\tBaselineId *string `min:\"20\" type:\"string\"`\n\n\t// The name of the patch group deregistered from the patch baseline.\n\tPatchGroup *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterPatchBaselineForPatchGroupOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterPatchBaselineForPatchGroupOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *DeregisterPatchBaselineForPatchGroupOutput) SetBaselineId(v string) *DeregisterPatchBaselineForPatchGroupOutput {\n\ts.BaselineId = &v\n\treturn s\n}\n\n// SetPatchGroup sets the PatchGroup field's value.\nfunc (s *DeregisterPatchBaselineForPatchGroupOutput) SetPatchGroup(v string) *DeregisterPatchBaselineForPatchGroupOutput {\n\ts.PatchGroup = &v\n\treturn s\n}\n\ntype DeregisterTargetFromMaintenanceWindowInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The system checks if the target is being referenced by a task. If the target\n\t// is being referenced, the system returns an error and doesn't deregister the\n\t// target from the maintenance window.\n\tSafe *bool `type:\"boolean\"`\n\n\t// The ID of the maintenance window the target should be removed from.\n\t//\n\t// WindowId is a required field\n\tWindowId *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// The ID of the target definition to remove.\n\t//\n\t// WindowTargetId is a required field\n\tWindowTargetId *string `min:\"36\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterTargetFromMaintenanceWindowInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterTargetFromMaintenanceWindowInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeregisterTargetFromMaintenanceWindowInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeregisterTargetFromMaintenanceWindowInput\"}\n\tif s.WindowId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowId\"))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\tif s.WindowTargetId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowTargetId\"))\n\t}\n\tif s.WindowTargetId != nil && len(*s.WindowTargetId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowTargetId\", 36))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetSafe sets the Safe field's value.\nfunc (s *DeregisterTargetFromMaintenanceWindowInput) SetSafe(v bool) *DeregisterTargetFromMaintenanceWindowInput {\n\ts.Safe = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *DeregisterTargetFromMaintenanceWindowInput) SetWindowId(v string) *DeregisterTargetFromMaintenanceWindowInput {\n\ts.WindowId = &v\n\treturn s\n}\n\n// SetWindowTargetId sets the WindowTargetId field's value.\nfunc (s *DeregisterTargetFromMaintenanceWindowInput) SetWindowTargetId(v string) *DeregisterTargetFromMaintenanceWindowInput {\n\ts.WindowTargetId = &v\n\treturn s\n}\n\ntype DeregisterTargetFromMaintenanceWindowOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the maintenance window the target was removed from.\n\tWindowId *string `min:\"20\" type:\"string\"`\n\n\t// The ID of the removed target definition.\n\tWindowTargetId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterTargetFromMaintenanceWindowOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterTargetFromMaintenanceWindowOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *DeregisterTargetFromMaintenanceWindowOutput) SetWindowId(v string) *DeregisterTargetFromMaintenanceWindowOutput {\n\ts.WindowId = &v\n\treturn s\n}\n\n// SetWindowTargetId sets the WindowTargetId field's value.\nfunc (s *DeregisterTargetFromMaintenanceWindowOutput) SetWindowTargetId(v string) *DeregisterTargetFromMaintenanceWindowOutput {\n\ts.WindowTargetId = &v\n\treturn s\n}\n\ntype DeregisterTaskFromMaintenanceWindowInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the maintenance window the task should be removed from.\n\t//\n\t// WindowId is a required field\n\tWindowId *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// The ID of the task to remove from the maintenance window.\n\t//\n\t// WindowTaskId is a required field\n\tWindowTaskId *string `min:\"36\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterTaskFromMaintenanceWindowInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterTaskFromMaintenanceWindowInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DeregisterTaskFromMaintenanceWindowInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DeregisterTaskFromMaintenanceWindowInput\"}\n\tif s.WindowId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowId\"))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\tif s.WindowTaskId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowTaskId\"))\n\t}\n\tif s.WindowTaskId != nil && len(*s.WindowTaskId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowTaskId\", 36))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *DeregisterTaskFromMaintenanceWindowInput) SetWindowId(v string) *DeregisterTaskFromMaintenanceWindowInput {\n\ts.WindowId = &v\n\treturn s\n}\n\n// SetWindowTaskId sets the WindowTaskId field's value.\nfunc (s *DeregisterTaskFromMaintenanceWindowInput) SetWindowTaskId(v string) *DeregisterTaskFromMaintenanceWindowInput {\n\ts.WindowTaskId = &v\n\treturn s\n}\n\ntype DeregisterTaskFromMaintenanceWindowOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the maintenance window the task was removed from.\n\tWindowId *string `min:\"20\" type:\"string\"`\n\n\t// The ID of the task removed from the maintenance window.\n\tWindowTaskId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterTaskFromMaintenanceWindowOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DeregisterTaskFromMaintenanceWindowOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *DeregisterTaskFromMaintenanceWindowOutput) SetWindowId(v string) *DeregisterTaskFromMaintenanceWindowOutput {\n\ts.WindowId = &v\n\treturn s\n}\n\n// SetWindowTaskId sets the WindowTaskId field's value.\nfunc (s *DeregisterTaskFromMaintenanceWindowOutput) SetWindowTaskId(v string) *DeregisterTaskFromMaintenanceWindowOutput {\n\ts.WindowTaskId = &v\n\treturn s\n}\n\n// Filter for the DescribeActivation API.\ntype DescribeActivationsFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter.\n\tFilterKey *string `type:\"string\" enum:\"DescribeActivationsFilterKeys\"`\n\n\t// The filter values.\n\tFilterValues []*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeActivationsFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeActivationsFilter) GoString() string {\n\treturn s.String()\n}\n\n// SetFilterKey sets the FilterKey field's value.\nfunc (s *DescribeActivationsFilter) SetFilterKey(v string) *DescribeActivationsFilter {\n\ts.FilterKey = &v\n\treturn s\n}\n\n// SetFilterValues sets the FilterValues field's value.\nfunc (s *DescribeActivationsFilter) SetFilterValues(v []*string) *DescribeActivationsFilter {\n\ts.FilterValues = v\n\treturn s\n}\n\ntype DescribeActivationsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A filter to view information about your activations.\n\tFilters []*DescribeActivationsFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeActivationsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeActivationsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeActivationsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeActivationsInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeActivationsInput) SetFilters(v []*DescribeActivationsFilter) *DescribeActivationsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeActivationsInput) SetMaxResults(v int64) *DescribeActivationsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeActivationsInput) SetNextToken(v string) *DescribeActivationsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeActivationsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A list of activations for your Amazon Web Services account.\n\tActivationList []*Activation `type:\"list\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeActivationsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeActivationsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetActivationList sets the ActivationList field's value.\nfunc (s *DescribeActivationsOutput) SetActivationList(v []*Activation) *DescribeActivationsOutput {\n\ts.ActivationList = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeActivationsOutput) SetNextToken(v string) *DescribeActivationsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeAssociationExecutionTargetsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The association ID that includes the execution for which you want to view\n\t// details.\n\t//\n\t// AssociationId is a required field\n\tAssociationId *string `type:\"string\" required:\"true\"`\n\n\t// The execution ID for which you want to view details.\n\t//\n\t// ExecutionId is a required field\n\tExecutionId *string `type:\"string\" required:\"true\"`\n\n\t// Filters for the request. You can specify the following filters and values.\n\t//\n\t// Status (EQUAL)\n\t//\n\t// ResourceId (EQUAL)\n\t//\n\t// ResourceType (EQUAL)\n\tFilters []*AssociationExecutionTargetsFilter `min:\"1\" type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAssociationExecutionTargetsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAssociationExecutionTargetsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeAssociationExecutionTargetsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeAssociationExecutionTargetsInput\"}\n\tif s.AssociationId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AssociationId\"))\n\t}\n\tif s.ExecutionId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ExecutionId\"))\n\t}\n\tif s.Filters != nil && len(s.Filters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Filters\", 1))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *DescribeAssociationExecutionTargetsInput) SetAssociationId(v string) *DescribeAssociationExecutionTargetsInput {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetExecutionId sets the ExecutionId field's value.\nfunc (s *DescribeAssociationExecutionTargetsInput) SetExecutionId(v string) *DescribeAssociationExecutionTargetsInput {\n\ts.ExecutionId = &v\n\treturn s\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeAssociationExecutionTargetsInput) SetFilters(v []*AssociationExecutionTargetsFilter) *DescribeAssociationExecutionTargetsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeAssociationExecutionTargetsInput) SetMaxResults(v int64) *DescribeAssociationExecutionTargetsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeAssociationExecutionTargetsInput) SetNextToken(v string) *DescribeAssociationExecutionTargetsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeAssociationExecutionTargetsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Information about the execution.\n\tAssociationExecutionTargets []*AssociationExecutionTarget `type:\"list\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAssociationExecutionTargetsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAssociationExecutionTargetsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationExecutionTargets sets the AssociationExecutionTargets field's value.\nfunc (s *DescribeAssociationExecutionTargetsOutput) SetAssociationExecutionTargets(v []*AssociationExecutionTarget) *DescribeAssociationExecutionTargetsOutput {\n\ts.AssociationExecutionTargets = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeAssociationExecutionTargetsOutput) SetNextToken(v string) *DescribeAssociationExecutionTargetsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeAssociationExecutionsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The association ID for which you want to view execution history details.\n\t//\n\t// AssociationId is a required field\n\tAssociationId *string `type:\"string\" required:\"true\"`\n\n\t// Filters for the request. You can specify the following filters and values.\n\t//\n\t// ExecutionId (EQUAL)\n\t//\n\t// Status (EQUAL)\n\t//\n\t// CreatedTime (EQUAL, GREATER_THAN, LESS_THAN)\n\tFilters []*AssociationExecutionFilter `min:\"1\" type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAssociationExecutionsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAssociationExecutionsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeAssociationExecutionsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeAssociationExecutionsInput\"}\n\tif s.AssociationId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AssociationId\"))\n\t}\n\tif s.Filters != nil && len(s.Filters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Filters\", 1))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *DescribeAssociationExecutionsInput) SetAssociationId(v string) *DescribeAssociationExecutionsInput {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeAssociationExecutionsInput) SetFilters(v []*AssociationExecutionFilter) *DescribeAssociationExecutionsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeAssociationExecutionsInput) SetMaxResults(v int64) *DescribeAssociationExecutionsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeAssociationExecutionsInput) SetNextToken(v string) *DescribeAssociationExecutionsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeAssociationExecutionsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A list of the executions for the specified association ID.\n\tAssociationExecutions []*AssociationExecution `type:\"list\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAssociationExecutionsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAssociationExecutionsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationExecutions sets the AssociationExecutions field's value.\nfunc (s *DescribeAssociationExecutionsOutput) SetAssociationExecutions(v []*AssociationExecution) *DescribeAssociationExecutionsOutput {\n\ts.AssociationExecutions = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeAssociationExecutionsOutput) SetNextToken(v string) *DescribeAssociationExecutionsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeAssociationInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The association ID for which you want information.\n\tAssociationId *string `type:\"string\"`\n\n\t// Specify the association version to retrieve. To view the latest version,\n\t// either specify $LATEST for this parameter, or omit this parameter. To view\n\t// a list of all associations for a managed node, use ListAssociations. To get\n\t// a list of versions for a specific association, use ListAssociationVersions.\n\tAssociationVersion *string `type:\"string\"`\n\n\t// The managed node ID.\n\tInstanceId *string `type:\"string\"`\n\n\t// The name of the SSM document.\n\tName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAssociationInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAssociationInput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *DescribeAssociationInput) SetAssociationId(v string) *DescribeAssociationInput {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetAssociationVersion sets the AssociationVersion field's value.\nfunc (s *DescribeAssociationInput) SetAssociationVersion(v string) *DescribeAssociationInput {\n\ts.AssociationVersion = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *DescribeAssociationInput) SetInstanceId(v string) *DescribeAssociationInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *DescribeAssociationInput) SetName(v string) *DescribeAssociationInput {\n\ts.Name = &v\n\treturn s\n}\n\ntype DescribeAssociationOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Information about the association.\n\tAssociationDescription *AssociationDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAssociationOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAssociationOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationDescription sets the AssociationDescription field's value.\nfunc (s *DescribeAssociationOutput) SetAssociationDescription(v *AssociationDescription) *DescribeAssociationOutput {\n\ts.AssociationDescription = v\n\treturn s\n}\n\ntype DescribeAutomationExecutionsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Filters used to limit the scope of executions that are requested.\n\tFilters []*AutomationExecutionFilter `min:\"1\" type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAutomationExecutionsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAutomationExecutionsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeAutomationExecutionsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeAutomationExecutionsInput\"}\n\tif s.Filters != nil && len(s.Filters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Filters\", 1))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeAutomationExecutionsInput) SetFilters(v []*AutomationExecutionFilter) *DescribeAutomationExecutionsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeAutomationExecutionsInput) SetMaxResults(v int64) *DescribeAutomationExecutionsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeAutomationExecutionsInput) SetNextToken(v string) *DescribeAutomationExecutionsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeAutomationExecutionsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The list of details about each automation execution which has occurred which\n\t// matches the filter specification, if any.\n\tAutomationExecutionMetadataList []*AutomationExecutionMetadata `type:\"list\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAutomationExecutionsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAutomationExecutionsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAutomationExecutionMetadataList sets the AutomationExecutionMetadataList field's value.\nfunc (s *DescribeAutomationExecutionsOutput) SetAutomationExecutionMetadataList(v []*AutomationExecutionMetadata) *DescribeAutomationExecutionsOutput {\n\ts.AutomationExecutionMetadataList = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeAutomationExecutionsOutput) SetNextToken(v string) *DescribeAutomationExecutionsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeAutomationStepExecutionsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Automation execution ID for which you want step execution descriptions.\n\t//\n\t// AutomationExecutionId is a required field\n\tAutomationExecutionId *string `min:\"36\" type:\"string\" required:\"true\"`\n\n\t// One or more filters to limit the number of step executions returned by the\n\t// request.\n\tFilters []*StepExecutionFilter `min:\"1\" type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// Indicates whether to list step executions in reverse order by start time.\n\t// The default value is 'false'.\n\tReverseOrder *bool `type:\"boolean\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAutomationStepExecutionsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAutomationStepExecutionsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeAutomationStepExecutionsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeAutomationStepExecutionsInput\"}\n\tif s.AutomationExecutionId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AutomationExecutionId\"))\n\t}\n\tif s.AutomationExecutionId != nil && len(*s.AutomationExecutionId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AutomationExecutionId\", 36))\n\t}\n\tif s.Filters != nil && len(s.Filters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Filters\", 1))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAutomationExecutionId sets the AutomationExecutionId field's value.\nfunc (s *DescribeAutomationStepExecutionsInput) SetAutomationExecutionId(v string) *DescribeAutomationStepExecutionsInput {\n\ts.AutomationExecutionId = &v\n\treturn s\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeAutomationStepExecutionsInput) SetFilters(v []*StepExecutionFilter) *DescribeAutomationStepExecutionsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeAutomationStepExecutionsInput) SetMaxResults(v int64) *DescribeAutomationStepExecutionsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeAutomationStepExecutionsInput) SetNextToken(v string) *DescribeAutomationStepExecutionsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetReverseOrder sets the ReverseOrder field's value.\nfunc (s *DescribeAutomationStepExecutionsInput) SetReverseOrder(v bool) *DescribeAutomationStepExecutionsInput {\n\ts.ReverseOrder = &v\n\treturn s\n}\n\ntype DescribeAutomationStepExecutionsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n\n\t// A list of details about the current state of all steps that make up an execution.\n\tStepExecutions []*StepExecution `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAutomationStepExecutionsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAutomationStepExecutionsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeAutomationStepExecutionsOutput) SetNextToken(v string) *DescribeAutomationStepExecutionsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetStepExecutions sets the StepExecutions field's value.\nfunc (s *DescribeAutomationStepExecutionsOutput) SetStepExecutions(v []*StepExecution) *DescribeAutomationStepExecutionsOutput {\n\ts.StepExecutions = v\n\treturn s\n}\n\ntype DescribeAvailablePatchesInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Each element in the array is a structure containing a key-value pair.\n\t//\n\t// Windows Server\n\t//\n\t// Supported keys for Windows Server managed node patches include the following:\n\t//\n\t//    * PATCH_SET Sample values: OS | APPLICATION\n\t//\n\t//    * PRODUCT Sample values: WindowsServer2012 | Office 2010 | MicrosoftDefenderAntivirus\n\t//\n\t//    * PRODUCT_FAMILY Sample values: Windows | Office\n\t//\n\t//    * MSRC_SEVERITY Sample values: ServicePacks | Important | Moderate\n\t//\n\t//    * CLASSIFICATION Sample values: ServicePacks | SecurityUpdates | DefinitionUpdates\n\t//\n\t//    * PATCH_ID Sample values: KB123456 | KB4516046\n\t//\n\t// Linux\n\t//\n\t// When specifying filters for Linux patches, you must specify a key-pair for\n\t// PRODUCT. For example, using the Command Line Interface (CLI), the following\n\t// command fails:\n\t//\n\t// aws ssm describe-available-patches --filters Key=CVE_ID,Values=CVE-2018-3615\n\t//\n\t// However, the following command succeeds:\n\t//\n\t// aws ssm describe-available-patches --filters Key=PRODUCT,Values=AmazonLinux2018.03\n\t// Key=CVE_ID,Values=CVE-2018-3615\n\t//\n\t// Supported keys for Linux managed node patches include the following:\n\t//\n\t//    * PRODUCT Sample values: AmazonLinux2018.03 | AmazonLinux2.0\n\t//\n\t//    * NAME Sample values: kernel-headers | samba-python | php\n\t//\n\t//    * SEVERITY Sample values: Critical | Important | Medium | Low\n\t//\n\t//    * EPOCH Sample values: 0 | 1\n\t//\n\t//    * VERSION Sample values: 78.6.1 | 4.10.16\n\t//\n\t//    * RELEASE Sample values: 9.56.amzn1 | 1.amzn2\n\t//\n\t//    * ARCH Sample values: i686 | x86_64\n\t//\n\t//    * REPOSITORY Sample values: Core | Updates\n\t//\n\t//    * ADVISORY_ID Sample values: ALAS-2018-1058 | ALAS2-2021-1594\n\t//\n\t//    * CVE_ID Sample values: CVE-2018-3615 | CVE-2020-1472\n\t//\n\t//    * BUGZILLA_ID Sample values: 1463241\n\tFilters []*PatchOrchestratorFilter `type:\"list\"`\n\n\t// The maximum number of patches to return (per page).\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAvailablePatchesInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAvailablePatchesInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeAvailablePatchesInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeAvailablePatchesInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeAvailablePatchesInput) SetFilters(v []*PatchOrchestratorFilter) *DescribeAvailablePatchesInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeAvailablePatchesInput) SetMaxResults(v int64) *DescribeAvailablePatchesInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeAvailablePatchesInput) SetNextToken(v string) *DescribeAvailablePatchesInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeAvailablePatchesOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n\n\t// An array of patches. Each entry in the array is a patch structure.\n\tPatches []*Patch `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAvailablePatchesOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeAvailablePatchesOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeAvailablePatchesOutput) SetNextToken(v string) *DescribeAvailablePatchesOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetPatches sets the Patches field's value.\nfunc (s *DescribeAvailablePatchesOutput) SetPatches(v []*Patch) *DescribeAvailablePatchesOutput {\n\ts.Patches = v\n\treturn s\n}\n\ntype DescribeDocumentInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The document version for which you want information. Can be a specific version\n\t// or the default version.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The name of the SSM document.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n\n\t// An optional field specifying the version of the artifact associated with\n\t// the document. For example, \"Release 12, Update 6\". This value is unique across\n\t// all versions of a document, and can't be changed.\n\tVersionName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeDocumentInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeDocumentInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeDocumentInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeDocumentInput\"}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *DescribeDocumentInput) SetDocumentVersion(v string) *DescribeDocumentInput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *DescribeDocumentInput) SetName(v string) *DescribeDocumentInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetVersionName sets the VersionName field's value.\nfunc (s *DescribeDocumentInput) SetVersionName(v string) *DescribeDocumentInput {\n\ts.VersionName = &v\n\treturn s\n}\n\ntype DescribeDocumentOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Information about the SSM document.\n\tDocument *DocumentDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeDocumentOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeDocumentOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetDocument sets the Document field's value.\nfunc (s *DescribeDocumentOutput) SetDocument(v *DocumentDescription) *DescribeDocumentOutput {\n\ts.Document = v\n\treturn s\n}\n\ntype DescribeDocumentPermissionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The name of the document for which you are the owner.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The permission type for the document. The permission type can be Share.\n\t//\n\t// PermissionType is a required field\n\tPermissionType *string `type:\"string\" required:\"true\" enum:\"DocumentPermissionType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeDocumentPermissionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeDocumentPermissionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeDocumentPermissionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeDocumentPermissionInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.PermissionType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PermissionType\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeDocumentPermissionInput) SetMaxResults(v int64) *DescribeDocumentPermissionInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *DescribeDocumentPermissionInput) SetName(v string) *DescribeDocumentPermissionInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeDocumentPermissionInput) SetNextToken(v string) *DescribeDocumentPermissionInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetPermissionType sets the PermissionType field's value.\nfunc (s *DescribeDocumentPermissionInput) SetPermissionType(v string) *DescribeDocumentPermissionInput {\n\ts.PermissionType = &v\n\treturn s\n}\n\ntype DescribeDocumentPermissionOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The account IDs that have permission to use this document. The ID can be\n\t// either an Amazon Web Services account or All.\n\tAccountIds []*string `type:\"list\"`\n\n\t// A list of Amazon Web Services accounts where the current document is shared\n\t// and the version shared with each account.\n\tAccountSharingInfoList []*AccountSharingInfo `type:\"list\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeDocumentPermissionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeDocumentPermissionOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAccountIds sets the AccountIds field's value.\nfunc (s *DescribeDocumentPermissionOutput) SetAccountIds(v []*string) *DescribeDocumentPermissionOutput {\n\ts.AccountIds = v\n\treturn s\n}\n\n// SetAccountSharingInfoList sets the AccountSharingInfoList field's value.\nfunc (s *DescribeDocumentPermissionOutput) SetAccountSharingInfoList(v []*AccountSharingInfo) *DescribeDocumentPermissionOutput {\n\ts.AccountSharingInfoList = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeDocumentPermissionOutput) SetNextToken(v string) *DescribeDocumentPermissionOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeEffectiveInstanceAssociationsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The managed node ID for which you want to view all associations.\n\t//\n\t// InstanceId is a required field\n\tInstanceId *string `type:\"string\" required:\"true\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeEffectiveInstanceAssociationsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeEffectiveInstanceAssociationsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeEffectiveInstanceAssociationsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeEffectiveInstanceAssociationsInput\"}\n\tif s.InstanceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"InstanceId\"))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *DescribeEffectiveInstanceAssociationsInput) SetInstanceId(v string) *DescribeEffectiveInstanceAssociationsInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeEffectiveInstanceAssociationsInput) SetMaxResults(v int64) *DescribeEffectiveInstanceAssociationsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeEffectiveInstanceAssociationsInput) SetNextToken(v string) *DescribeEffectiveInstanceAssociationsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeEffectiveInstanceAssociationsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The associations for the requested managed node.\n\tAssociations []*InstanceAssociation `type:\"list\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeEffectiveInstanceAssociationsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeEffectiveInstanceAssociationsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociations sets the Associations field's value.\nfunc (s *DescribeEffectiveInstanceAssociationsOutput) SetAssociations(v []*InstanceAssociation) *DescribeEffectiveInstanceAssociationsOutput {\n\ts.Associations = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeEffectiveInstanceAssociationsOutput) SetNextToken(v string) *DescribeEffectiveInstanceAssociationsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeEffectivePatchesForPatchBaselineInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the patch baseline to retrieve the effective patches for.\n\t//\n\t// BaselineId is a required field\n\tBaselineId *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// The maximum number of patches to return (per page).\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeEffectivePatchesForPatchBaselineInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeEffectivePatchesForPatchBaselineInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeEffectivePatchesForPatchBaselineInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeEffectivePatchesForPatchBaselineInput\"}\n\tif s.BaselineId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"BaselineId\"))\n\t}\n\tif s.BaselineId != nil && len(*s.BaselineId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"BaselineId\", 20))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *DescribeEffectivePatchesForPatchBaselineInput) SetBaselineId(v string) *DescribeEffectivePatchesForPatchBaselineInput {\n\ts.BaselineId = &v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeEffectivePatchesForPatchBaselineInput) SetMaxResults(v int64) *DescribeEffectivePatchesForPatchBaselineInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeEffectivePatchesForPatchBaselineInput) SetNextToken(v string) *DescribeEffectivePatchesForPatchBaselineInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeEffectivePatchesForPatchBaselineOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// An array of patches and patch status.\n\tEffectivePatches []*EffectivePatch `type:\"list\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeEffectivePatchesForPatchBaselineOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeEffectivePatchesForPatchBaselineOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetEffectivePatches sets the EffectivePatches field's value.\nfunc (s *DescribeEffectivePatchesForPatchBaselineOutput) SetEffectivePatches(v []*EffectivePatch) *DescribeEffectivePatchesForPatchBaselineOutput {\n\ts.EffectivePatches = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeEffectivePatchesForPatchBaselineOutput) SetNextToken(v string) *DescribeEffectivePatchesForPatchBaselineOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeInstanceAssociationsStatusInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The managed node IDs for which you want association status information.\n\t//\n\t// InstanceId is a required field\n\tInstanceId *string `type:\"string\" required:\"true\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstanceAssociationsStatusInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstanceAssociationsStatusInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeInstanceAssociationsStatusInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeInstanceAssociationsStatusInput\"}\n\tif s.InstanceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"InstanceId\"))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *DescribeInstanceAssociationsStatusInput) SetInstanceId(v string) *DescribeInstanceAssociationsStatusInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeInstanceAssociationsStatusInput) SetMaxResults(v int64) *DescribeInstanceAssociationsStatusInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeInstanceAssociationsStatusInput) SetNextToken(v string) *DescribeInstanceAssociationsStatusInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeInstanceAssociationsStatusOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Status information about the association.\n\tInstanceAssociationStatusInfos []*InstanceAssociationStatusInfo `type:\"list\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstanceAssociationsStatusOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstanceAssociationsStatusOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetInstanceAssociationStatusInfos sets the InstanceAssociationStatusInfos field's value.\nfunc (s *DescribeInstanceAssociationsStatusOutput) SetInstanceAssociationStatusInfos(v []*InstanceAssociationStatusInfo) *DescribeInstanceAssociationsStatusOutput {\n\ts.InstanceAssociationStatusInfos = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeInstanceAssociationsStatusOutput) SetNextToken(v string) *DescribeInstanceAssociationsStatusOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeInstanceInformationInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more filters. Use a filter to return a more specific list of managed\n\t// nodes. You can filter based on tags applied to your managed nodes. Tag filters\n\t// can't be combined with other filter types. Use this Filters data type instead\n\t// of InstanceInformationFilterList, which is deprecated.\n\tFilters []*InstanceInformationStringFilter `type:\"list\"`\n\n\t// This is a legacy method. We recommend that you don't use this method. Instead,\n\t// use the Filters data type. Filters enables you to return node information\n\t// by filtering based on tags applied to managed nodes.\n\t//\n\t// Attempting to use InstanceInformationFilterList and Filters leads to an exception\n\t// error.\n\tInstanceInformationFilterList []*InstanceInformationFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results. The default value is 10 items.\n\tMaxResults *int64 `min:\"5\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstanceInformationInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstanceInformationInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeInstanceInformationInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeInstanceInformationInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 5 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 5))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.InstanceInformationFilterList != nil {\n\t\tfor i, v := range s.InstanceInformationFilterList {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"InstanceInformationFilterList\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeInstanceInformationInput) SetFilters(v []*InstanceInformationStringFilter) *DescribeInstanceInformationInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetInstanceInformationFilterList sets the InstanceInformationFilterList field's value.\nfunc (s *DescribeInstanceInformationInput) SetInstanceInformationFilterList(v []*InstanceInformationFilter) *DescribeInstanceInformationInput {\n\ts.InstanceInformationFilterList = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeInstanceInformationInput) SetMaxResults(v int64) *DescribeInstanceInformationInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeInstanceInformationInput) SetNextToken(v string) *DescribeInstanceInformationInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeInstanceInformationOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The managed node information list.\n\tInstanceInformationList []*InstanceInformation `type:\"list\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstanceInformationOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstanceInformationOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetInstanceInformationList sets the InstanceInformationList field's value.\nfunc (s *DescribeInstanceInformationOutput) SetInstanceInformationList(v []*InstanceInformation) *DescribeInstanceInformationOutput {\n\ts.InstanceInformationList = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeInstanceInformationOutput) SetNextToken(v string) *DescribeInstanceInformationOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeInstancePatchStatesForPatchGroupInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Each entry in the array is a structure containing:\n\t//\n\t//    * Key (string between 1 and 200 characters)\n\t//\n\t//    * Values (array containing a single string)\n\t//\n\t//    * Type (string \"Equal\", \"NotEqual\", \"LessThan\", \"GreaterThan\")\n\tFilters []*InstancePatchStateFilter `type:\"list\"`\n\n\t// The maximum number of patches to return (per page).\n\tMaxResults *int64 `min:\"10\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The name of the patch group for which the patch state information should\n\t// be retrieved.\n\t//\n\t// PatchGroup is a required field\n\tPatchGroup *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstancePatchStatesForPatchGroupInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstancePatchStatesForPatchGroupInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeInstancePatchStatesForPatchGroupInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeInstancePatchStatesForPatchGroupInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 10 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 10))\n\t}\n\tif s.PatchGroup == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PatchGroup\"))\n\t}\n\tif s.PatchGroup != nil && len(*s.PatchGroup) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"PatchGroup\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeInstancePatchStatesForPatchGroupInput) SetFilters(v []*InstancePatchStateFilter) *DescribeInstancePatchStatesForPatchGroupInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeInstancePatchStatesForPatchGroupInput) SetMaxResults(v int64) *DescribeInstancePatchStatesForPatchGroupInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeInstancePatchStatesForPatchGroupInput) SetNextToken(v string) *DescribeInstancePatchStatesForPatchGroupInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetPatchGroup sets the PatchGroup field's value.\nfunc (s *DescribeInstancePatchStatesForPatchGroupInput) SetPatchGroup(v string) *DescribeInstancePatchStatesForPatchGroupInput {\n\ts.PatchGroup = &v\n\treturn s\n}\n\ntype DescribeInstancePatchStatesForPatchGroupOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The high-level patch state for the requested managed nodes.\n\tInstancePatchStates []*InstancePatchState `min:\"1\" type:\"list\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstancePatchStatesForPatchGroupOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstancePatchStatesForPatchGroupOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetInstancePatchStates sets the InstancePatchStates field's value.\nfunc (s *DescribeInstancePatchStatesForPatchGroupOutput) SetInstancePatchStates(v []*InstancePatchState) *DescribeInstancePatchStatesForPatchGroupOutput {\n\ts.InstancePatchStates = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeInstancePatchStatesForPatchGroupOutput) SetNextToken(v string) *DescribeInstancePatchStatesForPatchGroupOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeInstancePatchStatesInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the managed node for which patch state information should be retrieved.\n\t//\n\t// InstanceIds is a required field\n\tInstanceIds []*string `type:\"list\" required:\"true\"`\n\n\t// The maximum number of managed nodes to return (per page).\n\tMaxResults *int64 `min:\"10\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstancePatchStatesInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstancePatchStatesInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeInstancePatchStatesInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeInstancePatchStatesInput\"}\n\tif s.InstanceIds == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"InstanceIds\"))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 10 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 10))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetInstanceIds sets the InstanceIds field's value.\nfunc (s *DescribeInstancePatchStatesInput) SetInstanceIds(v []*string) *DescribeInstancePatchStatesInput {\n\ts.InstanceIds = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeInstancePatchStatesInput) SetMaxResults(v int64) *DescribeInstancePatchStatesInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeInstancePatchStatesInput) SetNextToken(v string) *DescribeInstancePatchStatesInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeInstancePatchStatesOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The high-level patch state for the requested managed nodes.\n\tInstancePatchStates []*InstancePatchState `type:\"list\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstancePatchStatesOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstancePatchStatesOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetInstancePatchStates sets the InstancePatchStates field's value.\nfunc (s *DescribeInstancePatchStatesOutput) SetInstancePatchStates(v []*InstancePatchState) *DescribeInstancePatchStatesOutput {\n\ts.InstancePatchStates = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeInstancePatchStatesOutput) SetNextToken(v string) *DescribeInstancePatchStatesOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeInstancePatchesInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Each element in the array is a structure containing a key-value pair.\n\t//\n\t// Supported keys for DescribeInstancePatchesinclude the following:\n\t//\n\t//    * Classification Sample values: Security | SecurityUpdates\n\t//\n\t//    * KBId Sample values: KB4480056 | java-1.7.0-openjdk.x86_64\n\t//\n\t//    * Severity Sample values: Important | Medium | Low\n\t//\n\t//    * State Sample values: Installed | InstalledOther | InstalledPendingReboot\n\t//    For lists of all State values, see Understanding patch compliance state\n\t//    values (https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-compliance-states.html)\n\t//    in the Amazon Web Services Systems Manager User Guide.\n\tFilters []*PatchOrchestratorFilter `type:\"list\"`\n\n\t// The ID of the managed node whose patch state information should be retrieved.\n\t//\n\t// InstanceId is a required field\n\tInstanceId *string `type:\"string\" required:\"true\"`\n\n\t// The maximum number of patches to return (per page).\n\tMaxResults *int64 `min:\"10\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstancePatchesInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstancePatchesInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeInstancePatchesInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeInstancePatchesInput\"}\n\tif s.InstanceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"InstanceId\"))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 10 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 10))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeInstancePatchesInput) SetFilters(v []*PatchOrchestratorFilter) *DescribeInstancePatchesInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *DescribeInstancePatchesInput) SetInstanceId(v string) *DescribeInstancePatchesInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeInstancePatchesInput) SetMaxResults(v int64) *DescribeInstancePatchesInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeInstancePatchesInput) SetNextToken(v string) *DescribeInstancePatchesInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeInstancePatchesOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n\n\t// Each entry in the array is a structure containing:\n\t//\n\t//    * Title (string)\n\t//\n\t//    * KBId (string)\n\t//\n\t//    * Classification (string)\n\t//\n\t//    * Severity (string)\n\t//\n\t//    * State (string, such as \"INSTALLED\" or \"FAILED\")\n\t//\n\t//    * InstalledTime (DateTime)\n\t//\n\t//    * InstalledBy (string)\n\tPatches []*PatchComplianceData `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstancePatchesOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInstancePatchesOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeInstancePatchesOutput) SetNextToken(v string) *DescribeInstancePatchesOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetPatches sets the Patches field's value.\nfunc (s *DescribeInstancePatchesOutput) SetPatches(v []*PatchComplianceData) *DescribeInstancePatchesOutput {\n\ts.Patches = v\n\treturn s\n}\n\ntype DescribeInventoryDeletionsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Specify the delete inventory ID for which you want information. This ID was\n\t// returned by the DeleteInventory operation.\n\tDeletionId *string `type:\"string\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInventoryDeletionsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInventoryDeletionsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeInventoryDeletionsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeInventoryDeletionsInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDeletionId sets the DeletionId field's value.\nfunc (s *DescribeInventoryDeletionsInput) SetDeletionId(v string) *DescribeInventoryDeletionsInput {\n\ts.DeletionId = &v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeInventoryDeletionsInput) SetMaxResults(v int64) *DescribeInventoryDeletionsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeInventoryDeletionsInput) SetNextToken(v string) *DescribeInventoryDeletionsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeInventoryDeletionsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A list of status items for deleted inventory.\n\tInventoryDeletions []*InventoryDeletionStatusItem `type:\"list\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInventoryDeletionsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeInventoryDeletionsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetInventoryDeletions sets the InventoryDeletions field's value.\nfunc (s *DescribeInventoryDeletionsOutput) SetInventoryDeletions(v []*InventoryDeletionStatusItem) *DescribeInventoryDeletionsOutput {\n\ts.InventoryDeletions = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeInventoryDeletionsOutput) SetNextToken(v string) *DescribeInventoryDeletionsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowExecutionTaskInvocationsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Optional filters used to scope down the returned task invocations. The supported\n\t// filter key is STATUS with the corresponding values PENDING, IN_PROGRESS,\n\t// SUCCESS, FAILED, TIMED_OUT, CANCELLING, and CANCELLED.\n\tFilters []*MaintenanceWindowFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"10\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The ID of the specific task in the maintenance window task that should be\n\t// retrieved.\n\t//\n\t// TaskId is a required field\n\tTaskId *string `min:\"36\" type:\"string\" required:\"true\"`\n\n\t// The ID of the maintenance window execution the task is part of.\n\t//\n\t// WindowExecutionId is a required field\n\tWindowExecutionId *string `min:\"36\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowExecutionTaskInvocationsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowExecutionTaskInvocationsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeMaintenanceWindowExecutionTaskInvocationsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeMaintenanceWindowExecutionTaskInvocationsInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 10 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 10))\n\t}\n\tif s.TaskId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TaskId\"))\n\t}\n\tif s.TaskId != nil && len(*s.TaskId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TaskId\", 36))\n\t}\n\tif s.WindowExecutionId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowExecutionId\"))\n\t}\n\tif s.WindowExecutionId != nil && len(*s.WindowExecutionId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowExecutionId\", 36))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeMaintenanceWindowExecutionTaskInvocationsInput) SetFilters(v []*MaintenanceWindowFilter) *DescribeMaintenanceWindowExecutionTaskInvocationsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeMaintenanceWindowExecutionTaskInvocationsInput) SetMaxResults(v int64) *DescribeMaintenanceWindowExecutionTaskInvocationsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowExecutionTaskInvocationsInput) SetNextToken(v string) *DescribeMaintenanceWindowExecutionTaskInvocationsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetTaskId sets the TaskId field's value.\nfunc (s *DescribeMaintenanceWindowExecutionTaskInvocationsInput) SetTaskId(v string) *DescribeMaintenanceWindowExecutionTaskInvocationsInput {\n\ts.TaskId = &v\n\treturn s\n}\n\n// SetWindowExecutionId sets the WindowExecutionId field's value.\nfunc (s *DescribeMaintenanceWindowExecutionTaskInvocationsInput) SetWindowExecutionId(v string) *DescribeMaintenanceWindowExecutionTaskInvocationsInput {\n\ts.WindowExecutionId = &v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowExecutionTaskInvocationsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n\n\t// Information about the task invocation results per invocation.\n\tWindowExecutionTaskInvocationIdentities []*MaintenanceWindowExecutionTaskInvocationIdentity `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowExecutionTaskInvocationsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowExecutionTaskInvocationsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowExecutionTaskInvocationsOutput) SetNextToken(v string) *DescribeMaintenanceWindowExecutionTaskInvocationsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetWindowExecutionTaskInvocationIdentities sets the WindowExecutionTaskInvocationIdentities field's value.\nfunc (s *DescribeMaintenanceWindowExecutionTaskInvocationsOutput) SetWindowExecutionTaskInvocationIdentities(v []*MaintenanceWindowExecutionTaskInvocationIdentity) *DescribeMaintenanceWindowExecutionTaskInvocationsOutput {\n\ts.WindowExecutionTaskInvocationIdentities = v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowExecutionTasksInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Optional filters used to scope down the returned tasks. The supported filter\n\t// key is STATUS with the corresponding values PENDING, IN_PROGRESS, SUCCESS,\n\t// FAILED, TIMED_OUT, CANCELLING, and CANCELLED.\n\tFilters []*MaintenanceWindowFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"10\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The ID of the maintenance window execution whose task executions should be\n\t// retrieved.\n\t//\n\t// WindowExecutionId is a required field\n\tWindowExecutionId *string `min:\"36\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowExecutionTasksInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowExecutionTasksInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeMaintenanceWindowExecutionTasksInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeMaintenanceWindowExecutionTasksInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 10 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 10))\n\t}\n\tif s.WindowExecutionId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowExecutionId\"))\n\t}\n\tif s.WindowExecutionId != nil && len(*s.WindowExecutionId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowExecutionId\", 36))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeMaintenanceWindowExecutionTasksInput) SetFilters(v []*MaintenanceWindowFilter) *DescribeMaintenanceWindowExecutionTasksInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeMaintenanceWindowExecutionTasksInput) SetMaxResults(v int64) *DescribeMaintenanceWindowExecutionTasksInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowExecutionTasksInput) SetNextToken(v string) *DescribeMaintenanceWindowExecutionTasksInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetWindowExecutionId sets the WindowExecutionId field's value.\nfunc (s *DescribeMaintenanceWindowExecutionTasksInput) SetWindowExecutionId(v string) *DescribeMaintenanceWindowExecutionTasksInput {\n\ts.WindowExecutionId = &v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowExecutionTasksOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n\n\t// Information about the task executions.\n\tWindowExecutionTaskIdentities []*MaintenanceWindowExecutionTaskIdentity `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowExecutionTasksOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowExecutionTasksOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowExecutionTasksOutput) SetNextToken(v string) *DescribeMaintenanceWindowExecutionTasksOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetWindowExecutionTaskIdentities sets the WindowExecutionTaskIdentities field's value.\nfunc (s *DescribeMaintenanceWindowExecutionTasksOutput) SetWindowExecutionTaskIdentities(v []*MaintenanceWindowExecutionTaskIdentity) *DescribeMaintenanceWindowExecutionTasksOutput {\n\ts.WindowExecutionTaskIdentities = v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowExecutionsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Each entry in the array is a structure containing:\n\t//\n\t//    * Key. A string between 1 and 128 characters. Supported keys include ExecutedBefore\n\t//    and ExecutedAfter.\n\t//\n\t//    * Values. An array of strings, each between 1 and 256 characters. Supported\n\t//    values are date/time strings in a valid ISO 8601 date/time format, such\n\t//    as 2021-11-04T05:00:00Z.\n\tFilters []*MaintenanceWindowFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"10\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The ID of the maintenance window whose executions should be retrieved.\n\t//\n\t// WindowId is a required field\n\tWindowId *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowExecutionsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowExecutionsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeMaintenanceWindowExecutionsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeMaintenanceWindowExecutionsInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 10 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 10))\n\t}\n\tif s.WindowId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowId\"))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeMaintenanceWindowExecutionsInput) SetFilters(v []*MaintenanceWindowFilter) *DescribeMaintenanceWindowExecutionsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeMaintenanceWindowExecutionsInput) SetMaxResults(v int64) *DescribeMaintenanceWindowExecutionsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowExecutionsInput) SetNextToken(v string) *DescribeMaintenanceWindowExecutionsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *DescribeMaintenanceWindowExecutionsInput) SetWindowId(v string) *DescribeMaintenanceWindowExecutionsInput {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowExecutionsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n\n\t// Information about the maintenance window executions.\n\tWindowExecutions []*MaintenanceWindowExecution `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowExecutionsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowExecutionsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowExecutionsOutput) SetNextToken(v string) *DescribeMaintenanceWindowExecutionsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetWindowExecutions sets the WindowExecutions field's value.\nfunc (s *DescribeMaintenanceWindowExecutionsOutput) SetWindowExecutions(v []*MaintenanceWindowExecution) *DescribeMaintenanceWindowExecutionsOutput {\n\ts.WindowExecutions = v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowScheduleInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Filters used to limit the range of results. For example, you can limit maintenance\n\t// window executions to only those scheduled before or after a certain date\n\t// and time.\n\tFilters []*PatchOrchestratorFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The type of resource you want to retrieve information about. For example,\n\t// INSTANCE.\n\tResourceType *string `type:\"string\" enum:\"MaintenanceWindowResourceType\"`\n\n\t// The managed node ID or key-value pair to retrieve information about.\n\tTargets []*Target `type:\"list\"`\n\n\t// The ID of the maintenance window to retrieve information about.\n\tWindowId *string `min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowScheduleInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowScheduleInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeMaintenanceWindowScheduleInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeMaintenanceWindowScheduleInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Targets != nil {\n\t\tfor i, v := range s.Targets {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Targets\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeMaintenanceWindowScheduleInput) SetFilters(v []*PatchOrchestratorFilter) *DescribeMaintenanceWindowScheduleInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeMaintenanceWindowScheduleInput) SetMaxResults(v int64) *DescribeMaintenanceWindowScheduleInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowScheduleInput) SetNextToken(v string) *DescribeMaintenanceWindowScheduleInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *DescribeMaintenanceWindowScheduleInput) SetResourceType(v string) *DescribeMaintenanceWindowScheduleInput {\n\ts.ResourceType = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *DescribeMaintenanceWindowScheduleInput) SetTargets(v []*Target) *DescribeMaintenanceWindowScheduleInput {\n\ts.Targets = v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *DescribeMaintenanceWindowScheduleInput) SetWindowId(v string) *DescribeMaintenanceWindowScheduleInput {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowScheduleOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token for the next set of items to return. (You use this token in the\n\t// next call.)\n\tNextToken *string `type:\"string\"`\n\n\t// Information about maintenance window executions scheduled for the specified\n\t// time range.\n\tScheduledWindowExecutions []*ScheduledWindowExecution `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowScheduleOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowScheduleOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowScheduleOutput) SetNextToken(v string) *DescribeMaintenanceWindowScheduleOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetScheduledWindowExecutions sets the ScheduledWindowExecutions field's value.\nfunc (s *DescribeMaintenanceWindowScheduleOutput) SetScheduledWindowExecutions(v []*ScheduledWindowExecution) *DescribeMaintenanceWindowScheduleOutput {\n\ts.ScheduledWindowExecutions = v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowTargetsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Optional filters that can be used to narrow down the scope of the returned\n\t// window targets. The supported filter keys are Type, WindowTargetId, and OwnerInformation.\n\tFilters []*MaintenanceWindowFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"10\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The ID of the maintenance window whose targets should be retrieved.\n\t//\n\t// WindowId is a required field\n\tWindowId *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowTargetsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowTargetsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeMaintenanceWindowTargetsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeMaintenanceWindowTargetsInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 10 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 10))\n\t}\n\tif s.WindowId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowId\"))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeMaintenanceWindowTargetsInput) SetFilters(v []*MaintenanceWindowFilter) *DescribeMaintenanceWindowTargetsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeMaintenanceWindowTargetsInput) SetMaxResults(v int64) *DescribeMaintenanceWindowTargetsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowTargetsInput) SetNextToken(v string) *DescribeMaintenanceWindowTargetsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *DescribeMaintenanceWindowTargetsInput) SetWindowId(v string) *DescribeMaintenanceWindowTargetsInput {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowTargetsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n\n\t// Information about the targets in the maintenance window.\n\tTargets []*MaintenanceWindowTarget `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowTargetsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowTargetsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowTargetsOutput) SetNextToken(v string) *DescribeMaintenanceWindowTargetsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *DescribeMaintenanceWindowTargetsOutput) SetTargets(v []*MaintenanceWindowTarget) *DescribeMaintenanceWindowTargetsOutput {\n\ts.Targets = v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowTasksInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Optional filters used to narrow down the scope of the returned tasks. The\n\t// supported filter keys are WindowTaskId, TaskArn, Priority, and TaskType.\n\tFilters []*MaintenanceWindowFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"10\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The ID of the maintenance window whose tasks should be retrieved.\n\t//\n\t// WindowId is a required field\n\tWindowId *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowTasksInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowTasksInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeMaintenanceWindowTasksInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeMaintenanceWindowTasksInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 10 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 10))\n\t}\n\tif s.WindowId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowId\"))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeMaintenanceWindowTasksInput) SetFilters(v []*MaintenanceWindowFilter) *DescribeMaintenanceWindowTasksInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeMaintenanceWindowTasksInput) SetMaxResults(v int64) *DescribeMaintenanceWindowTasksInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowTasksInput) SetNextToken(v string) *DescribeMaintenanceWindowTasksInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *DescribeMaintenanceWindowTasksInput) SetWindowId(v string) *DescribeMaintenanceWindowTasksInput {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowTasksOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n\n\t// Information about the tasks in the maintenance window.\n\tTasks []*MaintenanceWindowTask `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowTasksOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowTasksOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowTasksOutput) SetNextToken(v string) *DescribeMaintenanceWindowTasksOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetTasks sets the Tasks field's value.\nfunc (s *DescribeMaintenanceWindowTasksOutput) SetTasks(v []*MaintenanceWindowTask) *DescribeMaintenanceWindowTasksOutput {\n\ts.Tasks = v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowsForTargetInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The type of resource you want to retrieve information about. For example,\n\t// INSTANCE.\n\t//\n\t// ResourceType is a required field\n\tResourceType *string `type:\"string\" required:\"true\" enum:\"MaintenanceWindowResourceType\"`\n\n\t// The managed node ID or key-value pair to retrieve information about.\n\t//\n\t// Targets is a required field\n\tTargets []*Target `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowsForTargetInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowsForTargetInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeMaintenanceWindowsForTargetInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeMaintenanceWindowsForTargetInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.ResourceType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceType\"))\n\t}\n\tif s.Targets == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Targets\"))\n\t}\n\tif s.Targets != nil {\n\t\tfor i, v := range s.Targets {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Targets\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeMaintenanceWindowsForTargetInput) SetMaxResults(v int64) *DescribeMaintenanceWindowsForTargetInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowsForTargetInput) SetNextToken(v string) *DescribeMaintenanceWindowsForTargetInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *DescribeMaintenanceWindowsForTargetInput) SetResourceType(v string) *DescribeMaintenanceWindowsForTargetInput {\n\ts.ResourceType = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *DescribeMaintenanceWindowsForTargetInput) SetTargets(v []*Target) *DescribeMaintenanceWindowsForTargetInput {\n\ts.Targets = v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowsForTargetOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token for the next set of items to return. (You use this token in the\n\t// next call.)\n\tNextToken *string `type:\"string\"`\n\n\t// Information about the maintenance window targets and tasks a managed node\n\t// is associated with.\n\tWindowIdentities []*MaintenanceWindowIdentityForTarget `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowsForTargetOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowsForTargetOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowsForTargetOutput) SetNextToken(v string) *DescribeMaintenanceWindowsForTargetOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetWindowIdentities sets the WindowIdentities field's value.\nfunc (s *DescribeMaintenanceWindowsForTargetOutput) SetWindowIdentities(v []*MaintenanceWindowIdentityForTarget) *DescribeMaintenanceWindowsForTargetOutput {\n\ts.WindowIdentities = v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Optional filters used to narrow down the scope of the returned maintenance\n\t// windows. Supported filter keys are Name and Enabled. For example, Name=MyMaintenanceWindow\n\t// and Enabled=True.\n\tFilters []*MaintenanceWindowFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"10\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeMaintenanceWindowsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeMaintenanceWindowsInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 10 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 10))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeMaintenanceWindowsInput) SetFilters(v []*MaintenanceWindowFilter) *DescribeMaintenanceWindowsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeMaintenanceWindowsInput) SetMaxResults(v int64) *DescribeMaintenanceWindowsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowsInput) SetNextToken(v string) *DescribeMaintenanceWindowsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribeMaintenanceWindowsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n\n\t// Information about the maintenance windows.\n\tWindowIdentities []*MaintenanceWindowIdentity `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeMaintenanceWindowsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeMaintenanceWindowsOutput) SetNextToken(v string) *DescribeMaintenanceWindowsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetWindowIdentities sets the WindowIdentities field's value.\nfunc (s *DescribeMaintenanceWindowsOutput) SetWindowIdentities(v []*MaintenanceWindowIdentity) *DescribeMaintenanceWindowsOutput {\n\ts.WindowIdentities = v\n\treturn s\n}\n\ntype DescribeOpsItemsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// One or more filters to limit the response.\n\t//\n\t//    * Key: CreatedTime Operations: GreaterThan, LessThan\n\t//\n\t//    * Key: LastModifiedBy Operations: Contains, Equals\n\t//\n\t//    * Key: LastModifiedTime Operations: GreaterThan, LessThan\n\t//\n\t//    * Key: Priority Operations: Equals\n\t//\n\t//    * Key: Source Operations: Contains, Equals\n\t//\n\t//    * Key: Status Operations: Equals\n\t//\n\t//    * Key: Title* Operations: Equals,Contains\n\t//\n\t//    * Key: OperationalData** Operations: Equals\n\t//\n\t//    * Key: OperationalDataKey Operations: Equals\n\t//\n\t//    * Key: OperationalDataValue Operations: Equals, Contains\n\t//\n\t//    * Key: OpsItemId Operations: Equals\n\t//\n\t//    * Key: ResourceId Operations: Contains\n\t//\n\t//    * Key: AutomationId Operations: Equals\n\t//\n\t//    * Key: AccountId Operations: Equals\n\t//\n\t// *The Equals operator for Title matches the first 100 characters. If you specify\n\t// more than 100 characters, they system returns an error that the filter value\n\t// exceeds the length limit.\n\t//\n\t// **If you filter the response by using the OperationalData operator, specify\n\t// a key-value pair by using the following JSON format: {\"key\":\"key_name\",\"value\":\"a_value\"}\n\tOpsItemFilters []*OpsItemFilter `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeOpsItemsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeOpsItemsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeOpsItemsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeOpsItemsInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.OpsItemFilters != nil {\n\t\tfor i, v := range s.OpsItemFilters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"OpsItemFilters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeOpsItemsInput) SetMaxResults(v int64) *DescribeOpsItemsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeOpsItemsInput) SetNextToken(v string) *DescribeOpsItemsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetOpsItemFilters sets the OpsItemFilters field's value.\nfunc (s *DescribeOpsItemsInput) SetOpsItemFilters(v []*OpsItemFilter) *DescribeOpsItemsInput {\n\ts.OpsItemFilters = v\n\treturn s\n}\n\ntype DescribeOpsItemsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// A list of OpsItems.\n\tOpsItemSummaries []*OpsItemSummary `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeOpsItemsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeOpsItemsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeOpsItemsOutput) SetNextToken(v string) *DescribeOpsItemsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetOpsItemSummaries sets the OpsItemSummaries field's value.\nfunc (s *DescribeOpsItemsOutput) SetOpsItemSummaries(v []*OpsItemSummary) *DescribeOpsItemsOutput {\n\ts.OpsItemSummaries = v\n\treturn s\n}\n\ntype DescribeParametersInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// This data type is deprecated. Instead, use ParameterFilters.\n\tFilters []*ParametersFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// Filters to limit the request results.\n\tParameterFilters []*ParameterStringFilter `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeParametersInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeParametersInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeParametersInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeParametersInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ParameterFilters != nil {\n\t\tfor i, v := range s.ParameterFilters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"ParameterFilters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeParametersInput) SetFilters(v []*ParametersFilter) *DescribeParametersInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeParametersInput) SetMaxResults(v int64) *DescribeParametersInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeParametersInput) SetNextToken(v string) *DescribeParametersInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetParameterFilters sets the ParameterFilters field's value.\nfunc (s *DescribeParametersInput) SetParameterFilters(v []*ParameterStringFilter) *DescribeParametersInput {\n\ts.ParameterFilters = v\n\treturn s\n}\n\ntype DescribeParametersOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token to use when requesting the next set of items.\n\tNextToken *string `type:\"string\"`\n\n\t// Parameters returned by the request.\n\tParameters []*ParameterMetadata `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeParametersOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeParametersOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeParametersOutput) SetNextToken(v string) *DescribeParametersOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *DescribeParametersOutput) SetParameters(v []*ParameterMetadata) *DescribeParametersOutput {\n\ts.Parameters = v\n\treturn s\n}\n\ntype DescribePatchBaselinesInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Each element in the array is a structure containing a key-value pair.\n\t//\n\t// Supported keys for DescribePatchBaselines include the following:\n\t//\n\t//    * NAME_PREFIX Sample values: AWS- | My-\n\t//\n\t//    * OWNER Sample values: AWS | Self\n\t//\n\t//    * OPERATING_SYSTEM Sample values: AMAZON_LINUX | SUSE | WINDOWS\n\tFilters []*PatchOrchestratorFilter `type:\"list\"`\n\n\t// The maximum number of patch baselines to return (per page).\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchBaselinesInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchBaselinesInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribePatchBaselinesInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribePatchBaselinesInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribePatchBaselinesInput) SetFilters(v []*PatchOrchestratorFilter) *DescribePatchBaselinesInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribePatchBaselinesInput) SetMaxResults(v int64) *DescribePatchBaselinesInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribePatchBaselinesInput) SetNextToken(v string) *DescribePatchBaselinesInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribePatchBaselinesOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// An array of PatchBaselineIdentity elements.\n\tBaselineIdentities []*PatchBaselineIdentity `type:\"list\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchBaselinesOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchBaselinesOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetBaselineIdentities sets the BaselineIdentities field's value.\nfunc (s *DescribePatchBaselinesOutput) SetBaselineIdentities(v []*PatchBaselineIdentity) *DescribePatchBaselinesOutput {\n\ts.BaselineIdentities = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribePatchBaselinesOutput) SetNextToken(v string) *DescribePatchBaselinesOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribePatchGroupStateInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the patch group whose patch snapshot should be retrieved.\n\t//\n\t// PatchGroup is a required field\n\tPatchGroup *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchGroupStateInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchGroupStateInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribePatchGroupStateInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribePatchGroupStateInput\"}\n\tif s.PatchGroup == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PatchGroup\"))\n\t}\n\tif s.PatchGroup != nil && len(*s.PatchGroup) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"PatchGroup\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetPatchGroup sets the PatchGroup field's value.\nfunc (s *DescribePatchGroupStateInput) SetPatchGroup(v string) *DescribePatchGroupStateInput {\n\ts.PatchGroup = &v\n\treturn s\n}\n\ntype DescribePatchGroupStateOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The number of managed nodes in the patch group.\n\tInstances *int64 `type:\"integer\"`\n\n\t// The number of managed nodes where patches that are specified as Critical\n\t// for compliance reporting in the patch baseline aren't installed. These patches\n\t// might be missing, have failed installation, were rejected, or were installed\n\t// but awaiting a required managed node reboot. The status of these managed\n\t// nodes is NON_COMPLIANT.\n\tInstancesWithCriticalNonCompliantPatches *int64 `type:\"integer\"`\n\n\t// The number of managed nodes with patches from the patch baseline that failed\n\t// to install.\n\tInstancesWithFailedPatches *int64 `type:\"integer\"`\n\n\t// The number of managed nodes with patches installed that aren't defined in\n\t// the patch baseline.\n\tInstancesWithInstalledOtherPatches *int64 `type:\"integer\"`\n\n\t// The number of managed nodes with installed patches.\n\tInstancesWithInstalledPatches *int64 `type:\"integer\"`\n\n\t// The number of managed nodes with patches installed by Patch Manager that\n\t// haven't been rebooted after the patch installation. The status of these managed\n\t// nodes is NON_COMPLIANT.\n\tInstancesWithInstalledPendingRebootPatches *int64 `type:\"integer\"`\n\n\t// The number of managed nodes with patches installed that are specified in\n\t// a RejectedPatches list. Patches with a status of INSTALLED_REJECTED were\n\t// typically installed before they were added to a RejectedPatches list.\n\t//\n\t// If ALLOW_AS_DEPENDENCY is the specified option for RejectedPatchesAction,\n\t// the value of InstancesWithInstalledRejectedPatches will always be 0 (zero).\n\tInstancesWithInstalledRejectedPatches *int64 `type:\"integer\"`\n\n\t// The number of managed nodes with missing patches from the patch baseline.\n\tInstancesWithMissingPatches *int64 `type:\"integer\"`\n\n\t// The number of managed nodes with patches that aren't applicable.\n\tInstancesWithNotApplicablePatches *int64 `type:\"integer\"`\n\n\t// The number of managed nodes with patches installed that are specified as\n\t// other than Critical or Security but aren't compliant with the patch baseline.\n\t// The status of these managed nodes is NON_COMPLIANT.\n\tInstancesWithOtherNonCompliantPatches *int64 `type:\"integer\"`\n\n\t// The number of managed nodes where patches that are specified as Security\n\t// in a patch advisory aren't installed. These patches might be missing, have\n\t// failed installation, were rejected, or were installed but awaiting a required\n\t// managed node reboot. The status of these managed nodes is NON_COMPLIANT.\n\tInstancesWithSecurityNonCompliantPatches *int64 `type:\"integer\"`\n\n\t// The number of managed nodes with NotApplicable patches beyond the supported\n\t// limit, which aren't reported by name to Inventory. Inventory is a capability\n\t// of Amazon Web Services Systems Manager.\n\tInstancesWithUnreportedNotApplicablePatches *int64 `type:\"integer\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchGroupStateOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchGroupStateOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetInstances sets the Instances field's value.\nfunc (s *DescribePatchGroupStateOutput) SetInstances(v int64) *DescribePatchGroupStateOutput {\n\ts.Instances = &v\n\treturn s\n}\n\n// SetInstancesWithCriticalNonCompliantPatches sets the InstancesWithCriticalNonCompliantPatches field's value.\nfunc (s *DescribePatchGroupStateOutput) SetInstancesWithCriticalNonCompliantPatches(v int64) *DescribePatchGroupStateOutput {\n\ts.InstancesWithCriticalNonCompliantPatches = &v\n\treturn s\n}\n\n// SetInstancesWithFailedPatches sets the InstancesWithFailedPatches field's value.\nfunc (s *DescribePatchGroupStateOutput) SetInstancesWithFailedPatches(v int64) *DescribePatchGroupStateOutput {\n\ts.InstancesWithFailedPatches = &v\n\treturn s\n}\n\n// SetInstancesWithInstalledOtherPatches sets the InstancesWithInstalledOtherPatches field's value.\nfunc (s *DescribePatchGroupStateOutput) SetInstancesWithInstalledOtherPatches(v int64) *DescribePatchGroupStateOutput {\n\ts.InstancesWithInstalledOtherPatches = &v\n\treturn s\n}\n\n// SetInstancesWithInstalledPatches sets the InstancesWithInstalledPatches field's value.\nfunc (s *DescribePatchGroupStateOutput) SetInstancesWithInstalledPatches(v int64) *DescribePatchGroupStateOutput {\n\ts.InstancesWithInstalledPatches = &v\n\treturn s\n}\n\n// SetInstancesWithInstalledPendingRebootPatches sets the InstancesWithInstalledPendingRebootPatches field's value.\nfunc (s *DescribePatchGroupStateOutput) SetInstancesWithInstalledPendingRebootPatches(v int64) *DescribePatchGroupStateOutput {\n\ts.InstancesWithInstalledPendingRebootPatches = &v\n\treturn s\n}\n\n// SetInstancesWithInstalledRejectedPatches sets the InstancesWithInstalledRejectedPatches field's value.\nfunc (s *DescribePatchGroupStateOutput) SetInstancesWithInstalledRejectedPatches(v int64) *DescribePatchGroupStateOutput {\n\ts.InstancesWithInstalledRejectedPatches = &v\n\treturn s\n}\n\n// SetInstancesWithMissingPatches sets the InstancesWithMissingPatches field's value.\nfunc (s *DescribePatchGroupStateOutput) SetInstancesWithMissingPatches(v int64) *DescribePatchGroupStateOutput {\n\ts.InstancesWithMissingPatches = &v\n\treturn s\n}\n\n// SetInstancesWithNotApplicablePatches sets the InstancesWithNotApplicablePatches field's value.\nfunc (s *DescribePatchGroupStateOutput) SetInstancesWithNotApplicablePatches(v int64) *DescribePatchGroupStateOutput {\n\ts.InstancesWithNotApplicablePatches = &v\n\treturn s\n}\n\n// SetInstancesWithOtherNonCompliantPatches sets the InstancesWithOtherNonCompliantPatches field's value.\nfunc (s *DescribePatchGroupStateOutput) SetInstancesWithOtherNonCompliantPatches(v int64) *DescribePatchGroupStateOutput {\n\ts.InstancesWithOtherNonCompliantPatches = &v\n\treturn s\n}\n\n// SetInstancesWithSecurityNonCompliantPatches sets the InstancesWithSecurityNonCompliantPatches field's value.\nfunc (s *DescribePatchGroupStateOutput) SetInstancesWithSecurityNonCompliantPatches(v int64) *DescribePatchGroupStateOutput {\n\ts.InstancesWithSecurityNonCompliantPatches = &v\n\treturn s\n}\n\n// SetInstancesWithUnreportedNotApplicablePatches sets the InstancesWithUnreportedNotApplicablePatches field's value.\nfunc (s *DescribePatchGroupStateOutput) SetInstancesWithUnreportedNotApplicablePatches(v int64) *DescribePatchGroupStateOutput {\n\ts.InstancesWithUnreportedNotApplicablePatches = &v\n\treturn s\n}\n\ntype DescribePatchGroupsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Each element in the array is a structure containing a key-value pair.\n\t//\n\t// Supported keys for DescribePatchGroups include the following:\n\t//\n\t//    * NAME_PREFIX Sample values: AWS- | My-.\n\t//\n\t//    * OPERATING_SYSTEM Sample values: AMAZON_LINUX | SUSE | WINDOWS\n\tFilters []*PatchOrchestratorFilter `type:\"list\"`\n\n\t// The maximum number of patch groups to return (per page).\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchGroupsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchGroupsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribePatchGroupsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribePatchGroupsInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribePatchGroupsInput) SetFilters(v []*PatchOrchestratorFilter) *DescribePatchGroupsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribePatchGroupsInput) SetMaxResults(v int64) *DescribePatchGroupsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribePatchGroupsInput) SetNextToken(v string) *DescribePatchGroupsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribePatchGroupsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Each entry in the array contains:\n\t//\n\t//    * PatchGroup: string (between 1 and 256 characters. Regex: ^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$)\n\t//\n\t//    * PatchBaselineIdentity: A PatchBaselineIdentity element.\n\tMappings []*PatchGroupPatchBaselineMapping `type:\"list\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchGroupsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchGroupsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetMappings sets the Mappings field's value.\nfunc (s *DescribePatchGroupsOutput) SetMappings(v []*PatchGroupPatchBaselineMapping) *DescribePatchGroupsOutput {\n\ts.Mappings = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribePatchGroupsOutput) SetNextToken(v string) *DescribePatchGroupsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype DescribePatchPropertiesInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The operating system type for which to list patches.\n\t//\n\t// OperatingSystem is a required field\n\tOperatingSystem *string `type:\"string\" required:\"true\" enum:\"OperatingSystem\"`\n\n\t// Indicates whether to list patches for the Windows operating system or for\n\t// applications released by Microsoft. Not applicable for the Linux or macOS\n\t// operating systems.\n\tPatchSet *string `type:\"string\" enum:\"PatchSet\"`\n\n\t// The patch property for which you want to view patch details.\n\t//\n\t// Property is a required field\n\tProperty *string `type:\"string\" required:\"true\" enum:\"PatchProperty\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchPropertiesInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchPropertiesInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribePatchPropertiesInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribePatchPropertiesInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.OperatingSystem == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"OperatingSystem\"))\n\t}\n\tif s.Property == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Property\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribePatchPropertiesInput) SetMaxResults(v int64) *DescribePatchPropertiesInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribePatchPropertiesInput) SetNextToken(v string) *DescribePatchPropertiesInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetOperatingSystem sets the OperatingSystem field's value.\nfunc (s *DescribePatchPropertiesInput) SetOperatingSystem(v string) *DescribePatchPropertiesInput {\n\ts.OperatingSystem = &v\n\treturn s\n}\n\n// SetPatchSet sets the PatchSet field's value.\nfunc (s *DescribePatchPropertiesInput) SetPatchSet(v string) *DescribePatchPropertiesInput {\n\ts.PatchSet = &v\n\treturn s\n}\n\n// SetProperty sets the Property field's value.\nfunc (s *DescribePatchPropertiesInput) SetProperty(v string) *DescribePatchPropertiesInput {\n\ts.Property = &v\n\treturn s\n}\n\ntype DescribePatchPropertiesOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token for the next set of items to return. (You use this token in the\n\t// next call.)\n\tNextToken *string `type:\"string\"`\n\n\t// A list of the properties for patches matching the filter request parameters.\n\tProperties []map[string]*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchPropertiesOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribePatchPropertiesOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribePatchPropertiesOutput) SetNextToken(v string) *DescribePatchPropertiesOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetProperties sets the Properties field's value.\nfunc (s *DescribePatchPropertiesOutput) SetProperties(v []map[string]*string) *DescribePatchPropertiesOutput {\n\ts.Properties = v\n\treturn s\n}\n\ntype DescribeSessionsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more filters to limit the type of sessions returned by the request.\n\tFilters []*SessionFilter `min:\"1\" type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The session status to retrieve a list of sessions for. For example, \"Active\".\n\t//\n\t// State is a required field\n\tState *string `type:\"string\" required:\"true\" enum:\"SessionState\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeSessionsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeSessionsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DescribeSessionsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DescribeSessionsInput\"}\n\tif s.Filters != nil && len(s.Filters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Filters\", 1))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.State == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"State\"))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *DescribeSessionsInput) SetFilters(v []*SessionFilter) *DescribeSessionsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *DescribeSessionsInput) SetMaxResults(v int64) *DescribeSessionsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeSessionsInput) SetNextToken(v string) *DescribeSessionsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetState sets the State field's value.\nfunc (s *DescribeSessionsInput) SetState(v string) *DescribeSessionsInput {\n\ts.State = &v\n\treturn s\n}\n\ntype DescribeSessionsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// A list of sessions meeting the request parameters.\n\tSessions []*Session `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeSessionsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DescribeSessionsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *DescribeSessionsOutput) SetNextToken(v string) *DescribeSessionsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetSessions sets the Sessions field's value.\nfunc (s *DescribeSessionsOutput) SetSessions(v []*Session) *DescribeSessionsOutput {\n\ts.Sessions = v\n\treturn s\n}\n\ntype DisassociateOpsItemRelatedItemInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the association for which you want to delete an association between\n\t// the OpsItem and a related item.\n\t//\n\t// AssociationId is a required field\n\tAssociationId *string `type:\"string\" required:\"true\"`\n\n\t// The ID of the OpsItem for which you want to delete an association between\n\t// the OpsItem and a related item.\n\t//\n\t// OpsItemId is a required field\n\tOpsItemId *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DisassociateOpsItemRelatedItemInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DisassociateOpsItemRelatedItemInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DisassociateOpsItemRelatedItemInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DisassociateOpsItemRelatedItemInput\"}\n\tif s.AssociationId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AssociationId\"))\n\t}\n\tif s.OpsItemId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"OpsItemId\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *DisassociateOpsItemRelatedItemInput) SetAssociationId(v string) *DisassociateOpsItemRelatedItemInput {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *DisassociateOpsItemRelatedItemInput) SetOpsItemId(v string) *DisassociateOpsItemRelatedItemInput {\n\ts.OpsItemId = &v\n\treturn s\n}\n\ntype DisassociateOpsItemRelatedItemOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DisassociateOpsItemRelatedItemOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DisassociateOpsItemRelatedItemOutput) GoString() string {\n\treturn s.String()\n}\n\n// The specified document already exists.\ntype DocumentAlreadyExists struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentAlreadyExists) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentAlreadyExists) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorDocumentAlreadyExists(v protocol.ResponseMetadata) error {\n\treturn &DocumentAlreadyExists{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *DocumentAlreadyExists) Code() string {\n\treturn \"DocumentAlreadyExists\"\n}\n\n// Message returns the exception's message.\nfunc (s *DocumentAlreadyExists) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *DocumentAlreadyExists) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *DocumentAlreadyExists) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *DocumentAlreadyExists) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *DocumentAlreadyExists) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// A default version of a document.\ntype DocumentDefaultVersionDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The default version of the document.\n\tDefaultVersion *string `type:\"string\"`\n\n\t// The default version of the artifact associated with the document.\n\tDefaultVersionName *string `type:\"string\"`\n\n\t// The name of the document.\n\tName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentDefaultVersionDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentDefaultVersionDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetDefaultVersion sets the DefaultVersion field's value.\nfunc (s *DocumentDefaultVersionDescription) SetDefaultVersion(v string) *DocumentDefaultVersionDescription {\n\ts.DefaultVersion = &v\n\treturn s\n}\n\n// SetDefaultVersionName sets the DefaultVersionName field's value.\nfunc (s *DocumentDefaultVersionDescription) SetDefaultVersionName(v string) *DocumentDefaultVersionDescription {\n\ts.DefaultVersionName = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *DocumentDefaultVersionDescription) SetName(v string) *DocumentDefaultVersionDescription {\n\ts.Name = &v\n\treturn s\n}\n\n// Describes an Amazon Web Services Systems Manager document (SSM document).\ntype DocumentDescription struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The version of the document currently approved for use in the organization.\n\tApprovedVersion *string `type:\"string\"`\n\n\t// Details about the document attachments, including names, locations, sizes,\n\t// and so on.\n\tAttachmentsInformation []*AttachmentInformation `type:\"list\"`\n\n\t// The user in your organization who created the document.\n\tAuthor *string `type:\"string\"`\n\n\t// The classification of a document to help you identify and categorize its\n\t// use.\n\tCategory []*string `type:\"list\"`\n\n\t// The value that identifies a document's category.\n\tCategoryEnum []*string `type:\"list\"`\n\n\t// The date when the document was created.\n\tCreatedDate *time.Time `type:\"timestamp\"`\n\n\t// The default version.\n\tDefaultVersion *string `type:\"string\"`\n\n\t// A description of the document.\n\tDescription *string `type:\"string\"`\n\n\t// The friendly name of the SSM document. This value can differ for each version\n\t// of the document. If you want to update this value, see UpdateDocument.\n\tDisplayName *string `type:\"string\"`\n\n\t// The document format, either JSON or YAML.\n\tDocumentFormat *string `type:\"string\" enum:\"DocumentFormat\"`\n\n\t// The type of document.\n\tDocumentType *string `type:\"string\" enum:\"DocumentType\"`\n\n\t// The document version.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The Sha256 or Sha1 hash created by the system when the document was created.\n\t//\n\t// Sha1 hashes have been deprecated.\n\tHash *string `type:\"string\"`\n\n\t// The hash type of the document. Valid values include Sha256 or Sha1.\n\t//\n\t// Sha1 hashes have been deprecated.\n\tHashType *string `type:\"string\" enum:\"DocumentHashType\"`\n\n\t// The latest version of the document.\n\tLatestVersion *string `type:\"string\"`\n\n\t// The name of the SSM document.\n\tName *string `type:\"string\"`\n\n\t// The Amazon Web Services user that created the document.\n\tOwner *string `type:\"string\"`\n\n\t// A description of the parameters for a document.\n\tParameters []*DocumentParameter `type:\"list\"`\n\n\t// The version of the document that is currently under review.\n\tPendingReviewVersion *string `type:\"string\"`\n\n\t// The list of operating system (OS) platforms compatible with this SSM document.\n\tPlatformTypes []*string `type:\"list\" enum:\"PlatformType\"`\n\n\t// A list of SSM documents required by a document. For example, an ApplicationConfiguration\n\t// document requires an ApplicationConfigurationSchema document.\n\tRequires []*DocumentRequires `min:\"1\" type:\"list\"`\n\n\t// Details about the review of a document.\n\tReviewInformation []*ReviewInformation `min:\"1\" type:\"list\"`\n\n\t// The current status of the review.\n\tReviewStatus *string `type:\"string\" enum:\"ReviewStatus\"`\n\n\t// The schema version.\n\tSchemaVersion *string `type:\"string\"`\n\n\t// The SHA1 hash of the document, which you can use for verification.\n\tSha1 *string `type:\"string\"`\n\n\t// The status of the SSM document.\n\tStatus *string `type:\"string\" enum:\"DocumentStatus\"`\n\n\t// A message returned by Amazon Web Services Systems Manager that explains the\n\t// Status value. For example, a Failed status might be explained by the StatusInformation\n\t// message, \"The specified S3 bucket doesn't exist. Verify that the URL of the\n\t// S3 bucket is correct.\"\n\tStatusInformation *string `type:\"string\"`\n\n\t// The tags, or metadata, that have been applied to the document.\n\tTags []*Tag `type:\"list\"`\n\n\t// The target type which defines the kinds of resources the document can run\n\t// on. For example, /AWS::EC2::Instance. For a list of valid resource types,\n\t// see Amazon Web Services resource and property types reference (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)\n\t// in the CloudFormation User Guide.\n\tTargetType *string `type:\"string\"`\n\n\t// The version of the artifact associated with the document.\n\tVersionName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentDescription) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentDescription) GoString() string {\n\treturn s.String()\n}\n\n// SetApprovedVersion sets the ApprovedVersion field's value.\nfunc (s *DocumentDescription) SetApprovedVersion(v string) *DocumentDescription {\n\ts.ApprovedVersion = &v\n\treturn s\n}\n\n// SetAttachmentsInformation sets the AttachmentsInformation field's value.\nfunc (s *DocumentDescription) SetAttachmentsInformation(v []*AttachmentInformation) *DocumentDescription {\n\ts.AttachmentsInformation = v\n\treturn s\n}\n\n// SetAuthor sets the Author field's value.\nfunc (s *DocumentDescription) SetAuthor(v string) *DocumentDescription {\n\ts.Author = &v\n\treturn s\n}\n\n// SetCategory sets the Category field's value.\nfunc (s *DocumentDescription) SetCategory(v []*string) *DocumentDescription {\n\ts.Category = v\n\treturn s\n}\n\n// SetCategoryEnum sets the CategoryEnum field's value.\nfunc (s *DocumentDescription) SetCategoryEnum(v []*string) *DocumentDescription {\n\ts.CategoryEnum = v\n\treturn s\n}\n\n// SetCreatedDate sets the CreatedDate field's value.\nfunc (s *DocumentDescription) SetCreatedDate(v time.Time) *DocumentDescription {\n\ts.CreatedDate = &v\n\treturn s\n}\n\n// SetDefaultVersion sets the DefaultVersion field's value.\nfunc (s *DocumentDescription) SetDefaultVersion(v string) *DocumentDescription {\n\ts.DefaultVersion = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *DocumentDescription) SetDescription(v string) *DocumentDescription {\n\ts.Description = &v\n\treturn s\n}\n\n// SetDisplayName sets the DisplayName field's value.\nfunc (s *DocumentDescription) SetDisplayName(v string) *DocumentDescription {\n\ts.DisplayName = &v\n\treturn s\n}\n\n// SetDocumentFormat sets the DocumentFormat field's value.\nfunc (s *DocumentDescription) SetDocumentFormat(v string) *DocumentDescription {\n\ts.DocumentFormat = &v\n\treturn s\n}\n\n// SetDocumentType sets the DocumentType field's value.\nfunc (s *DocumentDescription) SetDocumentType(v string) *DocumentDescription {\n\ts.DocumentType = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *DocumentDescription) SetDocumentVersion(v string) *DocumentDescription {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetHash sets the Hash field's value.\nfunc (s *DocumentDescription) SetHash(v string) *DocumentDescription {\n\ts.Hash = &v\n\treturn s\n}\n\n// SetHashType sets the HashType field's value.\nfunc (s *DocumentDescription) SetHashType(v string) *DocumentDescription {\n\ts.HashType = &v\n\treturn s\n}\n\n// SetLatestVersion sets the LatestVersion field's value.\nfunc (s *DocumentDescription) SetLatestVersion(v string) *DocumentDescription {\n\ts.LatestVersion = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *DocumentDescription) SetName(v string) *DocumentDescription {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOwner sets the Owner field's value.\nfunc (s *DocumentDescription) SetOwner(v string) *DocumentDescription {\n\ts.Owner = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *DocumentDescription) SetParameters(v []*DocumentParameter) *DocumentDescription {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetPendingReviewVersion sets the PendingReviewVersion field's value.\nfunc (s *DocumentDescription) SetPendingReviewVersion(v string) *DocumentDescription {\n\ts.PendingReviewVersion = &v\n\treturn s\n}\n\n// SetPlatformTypes sets the PlatformTypes field's value.\nfunc (s *DocumentDescription) SetPlatformTypes(v []*string) *DocumentDescription {\n\ts.PlatformTypes = v\n\treturn s\n}\n\n// SetRequires sets the Requires field's value.\nfunc (s *DocumentDescription) SetRequires(v []*DocumentRequires) *DocumentDescription {\n\ts.Requires = v\n\treturn s\n}\n\n// SetReviewInformation sets the ReviewInformation field's value.\nfunc (s *DocumentDescription) SetReviewInformation(v []*ReviewInformation) *DocumentDescription {\n\ts.ReviewInformation = v\n\treturn s\n}\n\n// SetReviewStatus sets the ReviewStatus field's value.\nfunc (s *DocumentDescription) SetReviewStatus(v string) *DocumentDescription {\n\ts.ReviewStatus = &v\n\treturn s\n}\n\n// SetSchemaVersion sets the SchemaVersion field's value.\nfunc (s *DocumentDescription) SetSchemaVersion(v string) *DocumentDescription {\n\ts.SchemaVersion = &v\n\treturn s\n}\n\n// SetSha1 sets the Sha1 field's value.\nfunc (s *DocumentDescription) SetSha1(v string) *DocumentDescription {\n\ts.Sha1 = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *DocumentDescription) SetStatus(v string) *DocumentDescription {\n\ts.Status = &v\n\treturn s\n}\n\n// SetStatusInformation sets the StatusInformation field's value.\nfunc (s *DocumentDescription) SetStatusInformation(v string) *DocumentDescription {\n\ts.StatusInformation = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *DocumentDescription) SetTags(v []*Tag) *DocumentDescription {\n\ts.Tags = v\n\treturn s\n}\n\n// SetTargetType sets the TargetType field's value.\nfunc (s *DocumentDescription) SetTargetType(v string) *DocumentDescription {\n\ts.TargetType = &v\n\treturn s\n}\n\n// SetVersionName sets the VersionName field's value.\nfunc (s *DocumentDescription) SetVersionName(v string) *DocumentDescription {\n\ts.VersionName = &v\n\treturn s\n}\n\n// This data type is deprecated. Instead, use DocumentKeyValuesFilter.\ntype DocumentFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter.\n\t//\n\t// Key is a required field\n\tKey *string `locationName:\"key\" type:\"string\" required:\"true\" enum:\"DocumentFilterKey\"`\n\n\t// The value of the filter.\n\t//\n\t// Value is a required field\n\tValue *string `locationName:\"value\" min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DocumentFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DocumentFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Value == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Value\"))\n\t}\n\tif s.Value != nil && len(*s.Value) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Value\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *DocumentFilter) SetKey(v string) *DocumentFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *DocumentFilter) SetValue(v string) *DocumentFilter {\n\ts.Value = &v\n\treturn s\n}\n\n// Describes the name of a SSM document.\ntype DocumentIdentifier struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The user in your organization who created the document.\n\tAuthor *string `type:\"string\"`\n\n\t// The date the SSM document was created.\n\tCreatedDate *time.Time `type:\"timestamp\"`\n\n\t// An optional field where you can specify a friendly name for the SSM document.\n\t// This value can differ for each version of the document. If you want to update\n\t// this value, see UpdateDocument.\n\tDisplayName *string `type:\"string\"`\n\n\t// The document format, either JSON or YAML.\n\tDocumentFormat *string `type:\"string\" enum:\"DocumentFormat\"`\n\n\t// The document type.\n\tDocumentType *string `type:\"string\" enum:\"DocumentType\"`\n\n\t// The document version.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The name of the SSM document.\n\tName *string `type:\"string\"`\n\n\t// The Amazon Web Services user that created the document.\n\tOwner *string `type:\"string\"`\n\n\t// The operating system platform.\n\tPlatformTypes []*string `type:\"list\" enum:\"PlatformType\"`\n\n\t// A list of SSM documents required by a document. For example, an ApplicationConfiguration\n\t// document requires an ApplicationConfigurationSchema document.\n\tRequires []*DocumentRequires `min:\"1\" type:\"list\"`\n\n\t// The current status of a document review.\n\tReviewStatus *string `type:\"string\" enum:\"ReviewStatus\"`\n\n\t// The schema version.\n\tSchemaVersion *string `type:\"string\"`\n\n\t// The tags, or metadata, that have been applied to the document.\n\tTags []*Tag `type:\"list\"`\n\n\t// The target type which defines the kinds of resources the document can run\n\t// on. For example, /AWS::EC2::Instance. For a list of valid resource types,\n\t// see Amazon Web Services resource and property types reference (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)\n\t// in the CloudFormation User Guide.\n\tTargetType *string `type:\"string\"`\n\n\t// An optional field specifying the version of the artifact associated with\n\t// the document. For example, \"Release 12, Update 6\". This value is unique across\n\t// all versions of a document, and can't be changed.\n\tVersionName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentIdentifier) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentIdentifier) GoString() string {\n\treturn s.String()\n}\n\n// SetAuthor sets the Author field's value.\nfunc (s *DocumentIdentifier) SetAuthor(v string) *DocumentIdentifier {\n\ts.Author = &v\n\treturn s\n}\n\n// SetCreatedDate sets the CreatedDate field's value.\nfunc (s *DocumentIdentifier) SetCreatedDate(v time.Time) *DocumentIdentifier {\n\ts.CreatedDate = &v\n\treturn s\n}\n\n// SetDisplayName sets the DisplayName field's value.\nfunc (s *DocumentIdentifier) SetDisplayName(v string) *DocumentIdentifier {\n\ts.DisplayName = &v\n\treturn s\n}\n\n// SetDocumentFormat sets the DocumentFormat field's value.\nfunc (s *DocumentIdentifier) SetDocumentFormat(v string) *DocumentIdentifier {\n\ts.DocumentFormat = &v\n\treturn s\n}\n\n// SetDocumentType sets the DocumentType field's value.\nfunc (s *DocumentIdentifier) SetDocumentType(v string) *DocumentIdentifier {\n\ts.DocumentType = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *DocumentIdentifier) SetDocumentVersion(v string) *DocumentIdentifier {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *DocumentIdentifier) SetName(v string) *DocumentIdentifier {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOwner sets the Owner field's value.\nfunc (s *DocumentIdentifier) SetOwner(v string) *DocumentIdentifier {\n\ts.Owner = &v\n\treturn s\n}\n\n// SetPlatformTypes sets the PlatformTypes field's value.\nfunc (s *DocumentIdentifier) SetPlatformTypes(v []*string) *DocumentIdentifier {\n\ts.PlatformTypes = v\n\treturn s\n}\n\n// SetRequires sets the Requires field's value.\nfunc (s *DocumentIdentifier) SetRequires(v []*DocumentRequires) *DocumentIdentifier {\n\ts.Requires = v\n\treturn s\n}\n\n// SetReviewStatus sets the ReviewStatus field's value.\nfunc (s *DocumentIdentifier) SetReviewStatus(v string) *DocumentIdentifier {\n\ts.ReviewStatus = &v\n\treturn s\n}\n\n// SetSchemaVersion sets the SchemaVersion field's value.\nfunc (s *DocumentIdentifier) SetSchemaVersion(v string) *DocumentIdentifier {\n\ts.SchemaVersion = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *DocumentIdentifier) SetTags(v []*Tag) *DocumentIdentifier {\n\ts.Tags = v\n\treturn s\n}\n\n// SetTargetType sets the TargetType field's value.\nfunc (s *DocumentIdentifier) SetTargetType(v string) *DocumentIdentifier {\n\ts.TargetType = &v\n\treturn s\n}\n\n// SetVersionName sets the VersionName field's value.\nfunc (s *DocumentIdentifier) SetVersionName(v string) *DocumentIdentifier {\n\ts.VersionName = &v\n\treturn s\n}\n\n// One or more filters. Use a filter to return a more specific list of documents.\n//\n// For keys, you can specify one or more tags that have been applied to a document.\n//\n// You can also use Amazon Web Services-provided keys, some of which have specific\n// allowed values. These keys and their associated values are as follows:\n//\n// DocumentType\n//\n//   - ApplicationConfiguration\n//\n//   - ApplicationConfigurationSchema\n//\n//   - Automation\n//\n//   - ChangeCalendar\n//\n//   - Command\n//\n//   - Package\n//\n//   - Policy\n//\n//   - Session\n//\n// # Owner\n//\n// Note that only one Owner can be specified in a request. For example: Key=Owner,Values=Self.\n//\n//   - Amazon\n//\n//   - Private\n//\n//   - Public\n//\n//   - Self\n//\n//   - ThirdParty\n//\n// PlatformTypes\n//\n//   - Linux\n//\n//   - Windows\n//\n// Name is another Amazon Web Services-provided key. If you use Name as a key,\n// you can use a name prefix to return a list of documents. For example, in\n// the Amazon Web Services CLI, to return a list of all documents that begin\n// with Te, run the following command:\n//\n// aws ssm list-documents --filters Key=Name,Values=Te\n//\n// You can also use the TargetType Amazon Web Services-provided key. For a list\n// of valid resource type values that can be used with this key, see Amazon\n// Web Services resource and property types reference (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)\n// in the CloudFormation User Guide.\n//\n// If you specify more than two keys, only documents that are identified by\n// all the tags are returned in the results. If you specify more than two values\n// for a key, documents that are identified by any of the values are returned\n// in the results.\n//\n// To specify a custom key-value pair, use the format Key=tag:tagName,Values=valueName.\n//\n// For example, if you created a key called region and are using the Amazon\n// Web Services CLI to call the list-documents command:\n//\n// aws ssm list-documents --filters Key=tag:region,Values=east,west Key=Owner,Values=Self\ntype DocumentKeyValuesFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter key.\n\tKey *string `min:\"1\" type:\"string\"`\n\n\t// The value for the filter key.\n\tValues []*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentKeyValuesFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentKeyValuesFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DocumentKeyValuesFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DocumentKeyValuesFilter\"}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *DocumentKeyValuesFilter) SetKey(v string) *DocumentKeyValuesFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *DocumentKeyValuesFilter) SetValues(v []*string) *DocumentKeyValuesFilter {\n\ts.Values = v\n\treturn s\n}\n\n// You can have at most 500 active SSM documents.\ntype DocumentLimitExceeded struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentLimitExceeded) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentLimitExceeded) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorDocumentLimitExceeded(v protocol.ResponseMetadata) error {\n\treturn &DocumentLimitExceeded{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *DocumentLimitExceeded) Code() string {\n\treturn \"DocumentLimitExceeded\"\n}\n\n// Message returns the exception's message.\nfunc (s *DocumentLimitExceeded) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *DocumentLimitExceeded) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *DocumentLimitExceeded) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *DocumentLimitExceeded) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *DocumentLimitExceeded) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Details about the response to a document review request.\ntype DocumentMetadataResponseInfo struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Details about a reviewer's response to a document review request.\n\tReviewerResponse []*DocumentReviewerResponseSource `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentMetadataResponseInfo) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentMetadataResponseInfo) GoString() string {\n\treturn s.String()\n}\n\n// SetReviewerResponse sets the ReviewerResponse field's value.\nfunc (s *DocumentMetadataResponseInfo) SetReviewerResponse(v []*DocumentReviewerResponseSource) *DocumentMetadataResponseInfo {\n\ts.ReviewerResponse = v\n\treturn s\n}\n\n// Parameters specified in a Systems Manager document that run on the server\n// when the command is run.\ntype DocumentParameter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// If specified, the default values for the parameters. Parameters without a\n\t// default value are required. Parameters with a default value are optional.\n\tDefaultValue *string `type:\"string\"`\n\n\t// A description of what the parameter does, how to use it, the default value,\n\t// and whether or not the parameter is optional.\n\tDescription *string `type:\"string\"`\n\n\t// The name of the parameter.\n\tName *string `type:\"string\"`\n\n\t// The type of parameter. The type can be either String or StringList.\n\tType *string `type:\"string\" enum:\"DocumentParameterType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentParameter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentParameter) GoString() string {\n\treturn s.String()\n}\n\n// SetDefaultValue sets the DefaultValue field's value.\nfunc (s *DocumentParameter) SetDefaultValue(v string) *DocumentParameter {\n\ts.DefaultValue = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *DocumentParameter) SetDescription(v string) *DocumentParameter {\n\ts.Description = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *DocumentParameter) SetName(v string) *DocumentParameter {\n\ts.Name = &v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *DocumentParameter) SetType(v string) *DocumentParameter {\n\ts.Type = &v\n\treturn s\n}\n\n// The document can't be shared with more Amazon Web Services accounts. You\n// can specify a maximum of 20 accounts per API operation to share a private\n// document.\n//\n// By default, you can share a private document with a maximum of 1,000 accounts\n// and publicly share up to five documents.\n//\n// If you need to increase the quota for privately or publicly shared Systems\n// Manager documents, contact Amazon Web Services Support.\ntype DocumentPermissionLimit struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentPermissionLimit) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentPermissionLimit) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorDocumentPermissionLimit(v protocol.ResponseMetadata) error {\n\treturn &DocumentPermissionLimit{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *DocumentPermissionLimit) Code() string {\n\treturn \"DocumentPermissionLimit\"\n}\n\n// Message returns the exception's message.\nfunc (s *DocumentPermissionLimit) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *DocumentPermissionLimit) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *DocumentPermissionLimit) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *DocumentPermissionLimit) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *DocumentPermissionLimit) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// An SSM document required by the current document.\ntype DocumentRequires struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the required SSM document. The name can be an Amazon Resource\n\t// Name (ARN).\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n\n\t// The document type of the required SSM document.\n\tRequireType *string `type:\"string\"`\n\n\t// The document version required by the current document.\n\tVersion *string `type:\"string\"`\n\n\t// An optional field specifying the version of the artifact associated with\n\t// the document. For example, \"Release 12, Update 6\". This value is unique across\n\t// all versions of a document, and can't be changed.\n\tVersionName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentRequires) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentRequires) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DocumentRequires) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DocumentRequires\"}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetName sets the Name field's value.\nfunc (s *DocumentRequires) SetName(v string) *DocumentRequires {\n\ts.Name = &v\n\treturn s\n}\n\n// SetRequireType sets the RequireType field's value.\nfunc (s *DocumentRequires) SetRequireType(v string) *DocumentRequires {\n\ts.RequireType = &v\n\treturn s\n}\n\n// SetVersion sets the Version field's value.\nfunc (s *DocumentRequires) SetVersion(v string) *DocumentRequires {\n\ts.Version = &v\n\treturn s\n}\n\n// SetVersionName sets the VersionName field's value.\nfunc (s *DocumentRequires) SetVersionName(v string) *DocumentRequires {\n\ts.VersionName = &v\n\treturn s\n}\n\n// Information about comments added to a document review request.\ntype DocumentReviewCommentSource struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The content of a comment entered by a user who requests a review of a new\n\t// document version, or who reviews the new version.\n\tContent *string `min:\"1\" type:\"string\"`\n\n\t// The type of information added to a review request. Currently, only the value\n\t// Comment is supported.\n\tType *string `type:\"string\" enum:\"DocumentReviewCommentType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentReviewCommentSource) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentReviewCommentSource) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DocumentReviewCommentSource) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DocumentReviewCommentSource\"}\n\tif s.Content != nil && len(*s.Content) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Content\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetContent sets the Content field's value.\nfunc (s *DocumentReviewCommentSource) SetContent(v string) *DocumentReviewCommentSource {\n\ts.Content = &v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *DocumentReviewCommentSource) SetType(v string) *DocumentReviewCommentSource {\n\ts.Type = &v\n\treturn s\n}\n\n// Information about a reviewer's response to a document review request.\ntype DocumentReviewerResponseSource struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The comment entered by a reviewer as part of their document review response.\n\tComment []*DocumentReviewCommentSource `type:\"list\"`\n\n\t// The date and time that a reviewer entered a response to a document review\n\t// request.\n\tCreateTime *time.Time `type:\"timestamp\"`\n\n\t// The current review status of a new custom SSM document created by a member\n\t// of your organization, or of the latest version of an existing SSM document.\n\t//\n\t// Only one version of a document can be in the APPROVED state at a time. When\n\t// a new version is approved, the status of the previous version changes to\n\t// REJECTED.\n\t//\n\t// Only one version of a document can be in review, or PENDING, at a time.\n\tReviewStatus *string `type:\"string\" enum:\"ReviewStatus\"`\n\n\t// The user in your organization assigned to review a document request.\n\tReviewer *string `type:\"string\"`\n\n\t// The date and time that a reviewer last updated a response to a document review\n\t// request.\n\tUpdatedTime *time.Time `type:\"timestamp\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentReviewerResponseSource) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentReviewerResponseSource) GoString() string {\n\treturn s.String()\n}\n\n// SetComment sets the Comment field's value.\nfunc (s *DocumentReviewerResponseSource) SetComment(v []*DocumentReviewCommentSource) *DocumentReviewerResponseSource {\n\ts.Comment = v\n\treturn s\n}\n\n// SetCreateTime sets the CreateTime field's value.\nfunc (s *DocumentReviewerResponseSource) SetCreateTime(v time.Time) *DocumentReviewerResponseSource {\n\ts.CreateTime = &v\n\treturn s\n}\n\n// SetReviewStatus sets the ReviewStatus field's value.\nfunc (s *DocumentReviewerResponseSource) SetReviewStatus(v string) *DocumentReviewerResponseSource {\n\ts.ReviewStatus = &v\n\treturn s\n}\n\n// SetReviewer sets the Reviewer field's value.\nfunc (s *DocumentReviewerResponseSource) SetReviewer(v string) *DocumentReviewerResponseSource {\n\ts.Reviewer = &v\n\treturn s\n}\n\n// SetUpdatedTime sets the UpdatedTime field's value.\nfunc (s *DocumentReviewerResponseSource) SetUpdatedTime(v time.Time) *DocumentReviewerResponseSource {\n\ts.UpdatedTime = &v\n\treturn s\n}\n\n// Information about a document approval review.\ntype DocumentReviews struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The action to take on a document approval review request.\n\t//\n\t// Action is a required field\n\tAction *string `type:\"string\" required:\"true\" enum:\"DocumentReviewAction\"`\n\n\t// A comment entered by a user in your organization about the document review\n\t// request.\n\tComment []*DocumentReviewCommentSource `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentReviews) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentReviews) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DocumentReviews) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DocumentReviews\"}\n\tif s.Action == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Action\"))\n\t}\n\tif s.Comment != nil {\n\t\tfor i, v := range s.Comment {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Comment\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAction sets the Action field's value.\nfunc (s *DocumentReviews) SetAction(v string) *DocumentReviews {\n\ts.Action = &v\n\treturn s\n}\n\n// SetComment sets the Comment field's value.\nfunc (s *DocumentReviews) SetComment(v []*DocumentReviewCommentSource) *DocumentReviews {\n\ts.Comment = v\n\treturn s\n}\n\n// Version information about the document.\ntype DocumentVersionInfo struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The date the document was created.\n\tCreatedDate *time.Time `type:\"timestamp\"`\n\n\t// The friendly name of the SSM document. This value can differ for each version\n\t// of the document. If you want to update this value, see UpdateDocument.\n\tDisplayName *string `type:\"string\"`\n\n\t// The document format, either JSON or YAML.\n\tDocumentFormat *string `type:\"string\" enum:\"DocumentFormat\"`\n\n\t// The document version.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// An identifier for the default version of the document.\n\tIsDefaultVersion *bool `type:\"boolean\"`\n\n\t// The document name.\n\tName *string `type:\"string\"`\n\n\t// The current status of the approval review for the latest version of the document.\n\tReviewStatus *string `type:\"string\" enum:\"ReviewStatus\"`\n\n\t// The status of the SSM document, such as Creating, Active, Failed, and Deleting.\n\tStatus *string `type:\"string\" enum:\"DocumentStatus\"`\n\n\t// A message returned by Amazon Web Services Systems Manager that explains the\n\t// Status value. For example, a Failed status might be explained by the StatusInformation\n\t// message, \"The specified S3 bucket doesn't exist. Verify that the URL of the\n\t// S3 bucket is correct.\"\n\tStatusInformation *string `type:\"string\"`\n\n\t// The version of the artifact associated with the document. For example, \"Release\n\t// 12, Update 6\". This value is unique across all versions of a document, and\n\t// can't be changed.\n\tVersionName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentVersionInfo) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentVersionInfo) GoString() string {\n\treturn s.String()\n}\n\n// SetCreatedDate sets the CreatedDate field's value.\nfunc (s *DocumentVersionInfo) SetCreatedDate(v time.Time) *DocumentVersionInfo {\n\ts.CreatedDate = &v\n\treturn s\n}\n\n// SetDisplayName sets the DisplayName field's value.\nfunc (s *DocumentVersionInfo) SetDisplayName(v string) *DocumentVersionInfo {\n\ts.DisplayName = &v\n\treturn s\n}\n\n// SetDocumentFormat sets the DocumentFormat field's value.\nfunc (s *DocumentVersionInfo) SetDocumentFormat(v string) *DocumentVersionInfo {\n\ts.DocumentFormat = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *DocumentVersionInfo) SetDocumentVersion(v string) *DocumentVersionInfo {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetIsDefaultVersion sets the IsDefaultVersion field's value.\nfunc (s *DocumentVersionInfo) SetIsDefaultVersion(v bool) *DocumentVersionInfo {\n\ts.IsDefaultVersion = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *DocumentVersionInfo) SetName(v string) *DocumentVersionInfo {\n\ts.Name = &v\n\treturn s\n}\n\n// SetReviewStatus sets the ReviewStatus field's value.\nfunc (s *DocumentVersionInfo) SetReviewStatus(v string) *DocumentVersionInfo {\n\ts.ReviewStatus = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *DocumentVersionInfo) SetStatus(v string) *DocumentVersionInfo {\n\ts.Status = &v\n\treturn s\n}\n\n// SetStatusInformation sets the StatusInformation field's value.\nfunc (s *DocumentVersionInfo) SetStatusInformation(v string) *DocumentVersionInfo {\n\ts.StatusInformation = &v\n\treturn s\n}\n\n// SetVersionName sets the VersionName field's value.\nfunc (s *DocumentVersionInfo) SetVersionName(v string) *DocumentVersionInfo {\n\ts.VersionName = &v\n\treturn s\n}\n\n// The document has too many versions. Delete one or more document versions\n// and try again.\ntype DocumentVersionLimitExceeded struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentVersionLimitExceeded) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DocumentVersionLimitExceeded) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorDocumentVersionLimitExceeded(v protocol.ResponseMetadata) error {\n\treturn &DocumentVersionLimitExceeded{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *DocumentVersionLimitExceeded) Code() string {\n\treturn \"DocumentVersionLimitExceeded\"\n}\n\n// Message returns the exception's message.\nfunc (s *DocumentVersionLimitExceeded) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *DocumentVersionLimitExceeded) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *DocumentVersionLimitExceeded) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *DocumentVersionLimitExceeded) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *DocumentVersionLimitExceeded) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Error returned when the ID specified for a resource, such as a maintenance\n// window or patch baseline, doesn't exist.\n//\n// For information about resource quotas in Amazon Web Services Systems Manager,\n// see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n// in the Amazon Web Services General Reference.\ntype DoesNotExistException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DoesNotExistException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DoesNotExistException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorDoesNotExistException(v protocol.ResponseMetadata) error {\n\treturn &DoesNotExistException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *DoesNotExistException) Code() string {\n\treturn \"DoesNotExistException\"\n}\n\n// Message returns the exception's message.\nfunc (s *DoesNotExistException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *DoesNotExistException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *DoesNotExistException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *DoesNotExistException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *DoesNotExistException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The content of the association document matches another document. Change\n// the content of the document and try again.\ntype DuplicateDocumentContent struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DuplicateDocumentContent) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DuplicateDocumentContent) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorDuplicateDocumentContent(v protocol.ResponseMetadata) error {\n\treturn &DuplicateDocumentContent{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *DuplicateDocumentContent) Code() string {\n\treturn \"DuplicateDocumentContent\"\n}\n\n// Message returns the exception's message.\nfunc (s *DuplicateDocumentContent) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *DuplicateDocumentContent) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *DuplicateDocumentContent) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *DuplicateDocumentContent) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *DuplicateDocumentContent) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The version name has already been used in this document. Specify a different\n// version name, and then try again.\ntype DuplicateDocumentVersionName struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DuplicateDocumentVersionName) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DuplicateDocumentVersionName) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorDuplicateDocumentVersionName(v protocol.ResponseMetadata) error {\n\treturn &DuplicateDocumentVersionName{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *DuplicateDocumentVersionName) Code() string {\n\treturn \"DuplicateDocumentVersionName\"\n}\n\n// Message returns the exception's message.\nfunc (s *DuplicateDocumentVersionName) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *DuplicateDocumentVersionName) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *DuplicateDocumentVersionName) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *DuplicateDocumentVersionName) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *DuplicateDocumentVersionName) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// You can't specify a managed node ID in more than one association.\ntype DuplicateInstanceId struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DuplicateInstanceId) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DuplicateInstanceId) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorDuplicateInstanceId(v protocol.ResponseMetadata) error {\n\treturn &DuplicateInstanceId{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *DuplicateInstanceId) Code() string {\n\treturn \"DuplicateInstanceId\"\n}\n\n// Message returns the exception's message.\nfunc (s *DuplicateInstanceId) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *DuplicateInstanceId) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *DuplicateInstanceId) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *DuplicateInstanceId) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *DuplicateInstanceId) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The EffectivePatch structure defines metadata about a patch along with the\n// approval state of the patch in a particular patch baseline. The approval\n// state includes information about whether the patch is currently approved,\n// due to be approved by a rule, explicitly approved, or explicitly rejected\n// and the date the patch was or will be approved.\ntype EffectivePatch struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Provides metadata for a patch, including information such as the KB ID, severity,\n\t// classification and a URL for where more information can be obtained about\n\t// the patch.\n\tPatch *Patch `type:\"structure\"`\n\n\t// The status of the patch in a patch baseline. This includes information about\n\t// whether the patch is currently approved, due to be approved by a rule, explicitly\n\t// approved, or explicitly rejected and the date the patch was or will be approved.\n\tPatchStatus *PatchStatus `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s EffectivePatch) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s EffectivePatch) GoString() string {\n\treturn s.String()\n}\n\n// SetPatch sets the Patch field's value.\nfunc (s *EffectivePatch) SetPatch(v *Patch) *EffectivePatch {\n\ts.Patch = v\n\treturn s\n}\n\n// SetPatchStatus sets the PatchStatus field's value.\nfunc (s *EffectivePatch) SetPatchStatus(v *PatchStatus) *EffectivePatch {\n\ts.PatchStatus = v\n\treturn s\n}\n\n// Describes a failed association.\ntype FailedCreateAssociation struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The association.\n\tEntry *CreateAssociationBatchRequestEntry `type:\"structure\"`\n\n\t// The source of the failure.\n\tFault *string `type:\"string\" enum:\"Fault\"`\n\n\t// A description of the failure.\n\tMessage *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s FailedCreateAssociation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s FailedCreateAssociation) GoString() string {\n\treturn s.String()\n}\n\n// SetEntry sets the Entry field's value.\nfunc (s *FailedCreateAssociation) SetEntry(v *CreateAssociationBatchRequestEntry) *FailedCreateAssociation {\n\ts.Entry = v\n\treturn s\n}\n\n// SetFault sets the Fault field's value.\nfunc (s *FailedCreateAssociation) SetFault(v string) *FailedCreateAssociation {\n\ts.Fault = &v\n\treturn s\n}\n\n// SetMessage sets the Message field's value.\nfunc (s *FailedCreateAssociation) SetMessage(v string) *FailedCreateAssociation {\n\ts.Message = &v\n\treturn s\n}\n\n// Information about an Automation failure.\ntype FailureDetails struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Detailed information about the Automation step failure.\n\tDetails map[string][]*string `min:\"1\" type:\"map\"`\n\n\t// The stage of the Automation execution when the failure occurred. The stages\n\t// include the following: InputValidation, PreVerification, Invocation, PostVerification.\n\tFailureStage *string `type:\"string\"`\n\n\t// The type of Automation failure. Failure types include the following: Action,\n\t// Permission, Throttling, Verification, Internal.\n\tFailureType *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s FailureDetails) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s FailureDetails) GoString() string {\n\treturn s.String()\n}\n\n// SetDetails sets the Details field's value.\nfunc (s *FailureDetails) SetDetails(v map[string][]*string) *FailureDetails {\n\ts.Details = v\n\treturn s\n}\n\n// SetFailureStage sets the FailureStage field's value.\nfunc (s *FailureDetails) SetFailureStage(v string) *FailureDetails {\n\ts.FailureStage = &v\n\treturn s\n}\n\n// SetFailureType sets the FailureType field's value.\nfunc (s *FailureDetails) SetFailureType(v string) *FailureDetails {\n\ts.FailureType = &v\n\treturn s\n}\n\n// You attempted to register a LAMBDA or STEP_FUNCTIONS task in a region where\n// the corresponding service isn't available.\ntype FeatureNotAvailableException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s FeatureNotAvailableException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s FeatureNotAvailableException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorFeatureNotAvailableException(v protocol.ResponseMetadata) error {\n\treturn &FeatureNotAvailableException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *FeatureNotAvailableException) Code() string {\n\treturn \"FeatureNotAvailableException\"\n}\n\n// Message returns the exception's message.\nfunc (s *FeatureNotAvailableException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *FeatureNotAvailableException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *FeatureNotAvailableException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *FeatureNotAvailableException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *FeatureNotAvailableException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype GetAutomationExecutionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The unique identifier for an existing automation execution to examine. The\n\t// execution ID is returned by StartAutomationExecution when the execution of\n\t// an Automation runbook is initiated.\n\t//\n\t// AutomationExecutionId is a required field\n\tAutomationExecutionId *string `min:\"36\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetAutomationExecutionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetAutomationExecutionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetAutomationExecutionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetAutomationExecutionInput\"}\n\tif s.AutomationExecutionId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AutomationExecutionId\"))\n\t}\n\tif s.AutomationExecutionId != nil && len(*s.AutomationExecutionId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AutomationExecutionId\", 36))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAutomationExecutionId sets the AutomationExecutionId field's value.\nfunc (s *GetAutomationExecutionInput) SetAutomationExecutionId(v string) *GetAutomationExecutionInput {\n\ts.AutomationExecutionId = &v\n\treturn s\n}\n\ntype GetAutomationExecutionOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Detailed information about the current state of an automation execution.\n\tAutomationExecution *AutomationExecution `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetAutomationExecutionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetAutomationExecutionOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAutomationExecution sets the AutomationExecution field's value.\nfunc (s *GetAutomationExecutionOutput) SetAutomationExecution(v *AutomationExecution) *GetAutomationExecutionOutput {\n\ts.AutomationExecution = v\n\treturn s\n}\n\ntype GetCalendarStateInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// (Optional) The specific time for which you want to get calendar state information,\n\t// in ISO 8601 (https://en.wikipedia.org/wiki/ISO_8601) format. If you don't\n\t// specify a value or AtTime, the current time is used.\n\tAtTime *string `type:\"string\"`\n\n\t// The names or Amazon Resource Names (ARNs) of the Systems Manager documents\n\t// (SSM documents) that represent the calendar entries for which you want to\n\t// get the state.\n\t//\n\t// CalendarNames is a required field\n\tCalendarNames []*string `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetCalendarStateInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetCalendarStateInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetCalendarStateInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetCalendarStateInput\"}\n\tif s.CalendarNames == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"CalendarNames\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAtTime sets the AtTime field's value.\nfunc (s *GetCalendarStateInput) SetAtTime(v string) *GetCalendarStateInput {\n\ts.AtTime = &v\n\treturn s\n}\n\n// SetCalendarNames sets the CalendarNames field's value.\nfunc (s *GetCalendarStateInput) SetCalendarNames(v []*string) *GetCalendarStateInput {\n\ts.CalendarNames = v\n\treturn s\n}\n\ntype GetCalendarStateOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time, as an ISO 8601 (https://en.wikipedia.org/wiki/ISO_8601) string,\n\t// that you specified in your command. If you don't specify a time, GetCalendarState\n\t// uses the current time.\n\tAtTime *string `type:\"string\"`\n\n\t// The time, as an ISO 8601 (https://en.wikipedia.org/wiki/ISO_8601) string,\n\t// that the calendar state will change. If the current calendar state is OPEN,\n\t// NextTransitionTime indicates when the calendar state changes to CLOSED, and\n\t// vice-versa.\n\tNextTransitionTime *string `type:\"string\"`\n\n\t// The state of the calendar. An OPEN calendar indicates that actions are allowed\n\t// to proceed, and a CLOSED calendar indicates that actions aren't allowed to\n\t// proceed.\n\tState *string `type:\"string\" enum:\"CalendarState\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetCalendarStateOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetCalendarStateOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAtTime sets the AtTime field's value.\nfunc (s *GetCalendarStateOutput) SetAtTime(v string) *GetCalendarStateOutput {\n\ts.AtTime = &v\n\treturn s\n}\n\n// SetNextTransitionTime sets the NextTransitionTime field's value.\nfunc (s *GetCalendarStateOutput) SetNextTransitionTime(v string) *GetCalendarStateOutput {\n\ts.NextTransitionTime = &v\n\treturn s\n}\n\n// SetState sets the State field's value.\nfunc (s *GetCalendarStateOutput) SetState(v string) *GetCalendarStateOutput {\n\ts.State = &v\n\treturn s\n}\n\ntype GetCommandInvocationInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// (Required) The parent command ID of the invocation plugin.\n\t//\n\t// CommandId is a required field\n\tCommandId *string `min:\"36\" type:\"string\" required:\"true\"`\n\n\t// (Required) The ID of the managed node targeted by the command. A managed\n\t// node can be an Amazon Elastic Compute Cloud (Amazon EC2) instance, edge device,\n\t// and on-premises server or VM in your hybrid environment that is configured\n\t// for Amazon Web Services Systems Manager.\n\t//\n\t// InstanceId is a required field\n\tInstanceId *string `type:\"string\" required:\"true\"`\n\n\t// The name of the step for which you want detailed results. If the document\n\t// contains only one step, you can omit the name and details for that step.\n\t// If the document contains more than one step, you must specify the name of\n\t// the step for which you want to view details. Be sure to specify the name\n\t// of the step, not the name of a plugin like aws:RunShellScript.\n\t//\n\t// To find the PluginName, check the document content and find the name of the\n\t// step you want details for. Alternatively, use ListCommandInvocations with\n\t// the CommandId and Details parameters. The PluginName is the Name attribute\n\t// of the CommandPlugin object in the CommandPlugins list.\n\tPluginName *string `min:\"4\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetCommandInvocationInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetCommandInvocationInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetCommandInvocationInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetCommandInvocationInput\"}\n\tif s.CommandId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"CommandId\"))\n\t}\n\tif s.CommandId != nil && len(*s.CommandId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"CommandId\", 36))\n\t}\n\tif s.InstanceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"InstanceId\"))\n\t}\n\tif s.PluginName != nil && len(*s.PluginName) < 4 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"PluginName\", 4))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetCommandId sets the CommandId field's value.\nfunc (s *GetCommandInvocationInput) SetCommandId(v string) *GetCommandInvocationInput {\n\ts.CommandId = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *GetCommandInvocationInput) SetInstanceId(v string) *GetCommandInvocationInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetPluginName sets the PluginName field's value.\nfunc (s *GetCommandInvocationInput) SetPluginName(v string) *GetCommandInvocationInput {\n\ts.PluginName = &v\n\treturn s\n}\n\ntype GetCommandInvocationOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Amazon CloudWatch Logs information where Systems Manager sent the command\n\t// output.\n\tCloudWatchOutputConfig *CloudWatchOutputConfig `type:\"structure\"`\n\n\t// The parent command ID of the invocation plugin.\n\tCommandId *string `min:\"36\" type:\"string\"`\n\n\t// The comment text for the command.\n\tComment *string `type:\"string\"`\n\n\t// The name of the document that was run. For example, AWS-RunShellScript.\n\tDocumentName *string `type:\"string\"`\n\n\t// The Systems Manager document (SSM document) version used in the request.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// Duration since ExecutionStartDateTime.\n\tExecutionElapsedTime *string `type:\"string\"`\n\n\t// The date and time the plugin finished running. Date and time are written\n\t// in ISO 8601 format. For example, June 7, 2017 is represented as 2017-06-7.\n\t// The following sample Amazon Web Services CLI command uses the InvokedAfter\n\t// filter.\n\t//\n\t// aws ssm list-commands --filters key=InvokedAfter,value=2017-06-07T00:00:00Z\n\t//\n\t// If the plugin hasn't started to run, the string is empty.\n\tExecutionEndDateTime *string `type:\"string\"`\n\n\t// The date and time the plugin started running. Date and time are written in\n\t// ISO 8601 format. For example, June 7, 2017 is represented as 2017-06-7. The\n\t// following sample Amazon Web Services CLI command uses the InvokedBefore filter.\n\t//\n\t// aws ssm list-commands --filters key=InvokedBefore,value=2017-06-07T00:00:00Z\n\t//\n\t// If the plugin hasn't started to run, the string is empty.\n\tExecutionStartDateTime *string `type:\"string\"`\n\n\t// The ID of the managed node targeted by the command. A managed node can be\n\t// an Amazon Elastic Compute Cloud (Amazon EC2) instance, edge device, or on-premises\n\t// server or VM in your hybrid environment that is configured for Amazon Web\n\t// Services Systems Manager.\n\tInstanceId *string `type:\"string\"`\n\n\t// The name of the plugin, or step name, for which details are reported. For\n\t// example, aws:RunShellScript is a plugin.\n\tPluginName *string `min:\"4\" type:\"string\"`\n\n\t// The error level response code for the plugin script. If the response code\n\t// is -1, then the command hasn't started running on the managed node, or it\n\t// wasn't received by the node.\n\tResponseCode *int64 `type:\"integer\"`\n\n\t// The first 8,000 characters written by the plugin to stderr. If the command\n\t// hasn't finished running, then this string is empty.\n\tStandardErrorContent *string `type:\"string\"`\n\n\t// The URL for the complete text written by the plugin to stderr. If the command\n\t// hasn't finished running, then this string is empty.\n\tStandardErrorUrl *string `type:\"string\"`\n\n\t// The first 24,000 characters written by the plugin to stdout. If the command\n\t// hasn't finished running, if ExecutionStatus is neither Succeeded nor Failed,\n\t// then this string is empty.\n\tStandardOutputContent *string `type:\"string\"`\n\n\t// The URL for the complete text written by the plugin to stdout in Amazon Simple\n\t// Storage Service (Amazon S3). If an S3 bucket wasn't specified, then this\n\t// string is empty.\n\tStandardOutputUrl *string `type:\"string\"`\n\n\t// The status of this invocation plugin. This status can be different than StatusDetails.\n\tStatus *string `type:\"string\" enum:\"CommandInvocationStatus\"`\n\n\t// A detailed status of the command execution for an invocation. StatusDetails\n\t// includes more information than Status because it includes states resulting\n\t// from error and concurrency control parameters. StatusDetails can show different\n\t// results than Status. For more information about these statuses, see Understanding\n\t// command statuses (https://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html)\n\t// in the Amazon Web Services Systems Manager User Guide. StatusDetails can\n\t// be one of the following values:\n\t//\n\t//    * Pending: The command hasn't been sent to the managed node.\n\t//\n\t//    * In Progress: The command has been sent to the managed node but hasn't\n\t//    reached a terminal state.\n\t//\n\t//    * Delayed: The system attempted to send the command to the target, but\n\t//    the target wasn't available. The managed node might not be available because\n\t//    of network issues, because the node was stopped, or for similar reasons.\n\t//    The system will try to send the command again.\n\t//\n\t//    * Success: The command or plugin ran successfully. This is a terminal\n\t//    state.\n\t//\n\t//    * Delivery Timed Out: The command wasn't delivered to the managed node\n\t//    before the delivery timeout expired. Delivery timeouts don't count against\n\t//    the parent command's MaxErrors limit, but they do contribute to whether\n\t//    the parent command status is Success or Incomplete. This is a terminal\n\t//    state.\n\t//\n\t//    * Execution Timed Out: The command started to run on the managed node,\n\t//    but the execution wasn't complete before the timeout expired. Execution\n\t//    timeouts count against the MaxErrors limit of the parent command. This\n\t//    is a terminal state.\n\t//\n\t//    * Failed: The command wasn't run successfully on the managed node. For\n\t//    a plugin, this indicates that the result code wasn't zero. For a command\n\t//    invocation, this indicates that the result code for one or more plugins\n\t//    wasn't zero. Invocation failures count against the MaxErrors limit of\n\t//    the parent command. This is a terminal state.\n\t//\n\t//    * Cancelled: The command was terminated before it was completed. This\n\t//    is a terminal state.\n\t//\n\t//    * Undeliverable: The command can't be delivered to the managed node. The\n\t//    node might not exist or might not be responding. Undeliverable invocations\n\t//    don't count against the parent command's MaxErrors limit and don't contribute\n\t//    to whether the parent command status is Success or Incomplete. This is\n\t//    a terminal state.\n\t//\n\t//    * Terminated: The parent command exceeded its MaxErrors limit and subsequent\n\t//    command invocations were canceled by the system. This is a terminal state.\n\tStatusDetails *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetCommandInvocationOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetCommandInvocationOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetCloudWatchOutputConfig sets the CloudWatchOutputConfig field's value.\nfunc (s *GetCommandInvocationOutput) SetCloudWatchOutputConfig(v *CloudWatchOutputConfig) *GetCommandInvocationOutput {\n\ts.CloudWatchOutputConfig = v\n\treturn s\n}\n\n// SetCommandId sets the CommandId field's value.\nfunc (s *GetCommandInvocationOutput) SetCommandId(v string) *GetCommandInvocationOutput {\n\ts.CommandId = &v\n\treturn s\n}\n\n// SetComment sets the Comment field's value.\nfunc (s *GetCommandInvocationOutput) SetComment(v string) *GetCommandInvocationOutput {\n\ts.Comment = &v\n\treturn s\n}\n\n// SetDocumentName sets the DocumentName field's value.\nfunc (s *GetCommandInvocationOutput) SetDocumentName(v string) *GetCommandInvocationOutput {\n\ts.DocumentName = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *GetCommandInvocationOutput) SetDocumentVersion(v string) *GetCommandInvocationOutput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetExecutionElapsedTime sets the ExecutionElapsedTime field's value.\nfunc (s *GetCommandInvocationOutput) SetExecutionElapsedTime(v string) *GetCommandInvocationOutput {\n\ts.ExecutionElapsedTime = &v\n\treturn s\n}\n\n// SetExecutionEndDateTime sets the ExecutionEndDateTime field's value.\nfunc (s *GetCommandInvocationOutput) SetExecutionEndDateTime(v string) *GetCommandInvocationOutput {\n\ts.ExecutionEndDateTime = &v\n\treturn s\n}\n\n// SetExecutionStartDateTime sets the ExecutionStartDateTime field's value.\nfunc (s *GetCommandInvocationOutput) SetExecutionStartDateTime(v string) *GetCommandInvocationOutput {\n\ts.ExecutionStartDateTime = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *GetCommandInvocationOutput) SetInstanceId(v string) *GetCommandInvocationOutput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetPluginName sets the PluginName field's value.\nfunc (s *GetCommandInvocationOutput) SetPluginName(v string) *GetCommandInvocationOutput {\n\ts.PluginName = &v\n\treturn s\n}\n\n// SetResponseCode sets the ResponseCode field's value.\nfunc (s *GetCommandInvocationOutput) SetResponseCode(v int64) *GetCommandInvocationOutput {\n\ts.ResponseCode = &v\n\treturn s\n}\n\n// SetStandardErrorContent sets the StandardErrorContent field's value.\nfunc (s *GetCommandInvocationOutput) SetStandardErrorContent(v string) *GetCommandInvocationOutput {\n\ts.StandardErrorContent = &v\n\treturn s\n}\n\n// SetStandardErrorUrl sets the StandardErrorUrl field's value.\nfunc (s *GetCommandInvocationOutput) SetStandardErrorUrl(v string) *GetCommandInvocationOutput {\n\ts.StandardErrorUrl = &v\n\treturn s\n}\n\n// SetStandardOutputContent sets the StandardOutputContent field's value.\nfunc (s *GetCommandInvocationOutput) SetStandardOutputContent(v string) *GetCommandInvocationOutput {\n\ts.StandardOutputContent = &v\n\treturn s\n}\n\n// SetStandardOutputUrl sets the StandardOutputUrl field's value.\nfunc (s *GetCommandInvocationOutput) SetStandardOutputUrl(v string) *GetCommandInvocationOutput {\n\ts.StandardOutputUrl = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *GetCommandInvocationOutput) SetStatus(v string) *GetCommandInvocationOutput {\n\ts.Status = &v\n\treturn s\n}\n\n// SetStatusDetails sets the StatusDetails field's value.\nfunc (s *GetCommandInvocationOutput) SetStatusDetails(v string) *GetCommandInvocationOutput {\n\ts.StatusDetails = &v\n\treturn s\n}\n\ntype GetConnectionStatusInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The managed node ID.\n\t//\n\t// Target is a required field\n\tTarget *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetConnectionStatusInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetConnectionStatusInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetConnectionStatusInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetConnectionStatusInput\"}\n\tif s.Target == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Target\"))\n\t}\n\tif s.Target != nil && len(*s.Target) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Target\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetTarget sets the Target field's value.\nfunc (s *GetConnectionStatusInput) SetTarget(v string) *GetConnectionStatusInput {\n\ts.Target = &v\n\treturn s\n}\n\ntype GetConnectionStatusOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The status of the connection to the managed node. For example, 'Connected'\n\t// or 'Not Connected'.\n\tStatus *string `type:\"string\" enum:\"ConnectionStatus\"`\n\n\t// The ID of the managed node to check connection status.\n\tTarget *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetConnectionStatusOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetConnectionStatusOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *GetConnectionStatusOutput) SetStatus(v string) *GetConnectionStatusOutput {\n\ts.Status = &v\n\treturn s\n}\n\n// SetTarget sets the Target field's value.\nfunc (s *GetConnectionStatusOutput) SetTarget(v string) *GetConnectionStatusOutput {\n\ts.Target = &v\n\treturn s\n}\n\ntype GetDefaultPatchBaselineInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Returns the default patch baseline for the specified operating system.\n\tOperatingSystem *string `type:\"string\" enum:\"OperatingSystem\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetDefaultPatchBaselineInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetDefaultPatchBaselineInput) GoString() string {\n\treturn s.String()\n}\n\n// SetOperatingSystem sets the OperatingSystem field's value.\nfunc (s *GetDefaultPatchBaselineInput) SetOperatingSystem(v string) *GetDefaultPatchBaselineInput {\n\ts.OperatingSystem = &v\n\treturn s\n}\n\ntype GetDefaultPatchBaselineOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the default patch baseline.\n\tBaselineId *string `min:\"20\" type:\"string\"`\n\n\t// The operating system for the returned patch baseline.\n\tOperatingSystem *string `type:\"string\" enum:\"OperatingSystem\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetDefaultPatchBaselineOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetDefaultPatchBaselineOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *GetDefaultPatchBaselineOutput) SetBaselineId(v string) *GetDefaultPatchBaselineOutput {\n\ts.BaselineId = &v\n\treturn s\n}\n\n// SetOperatingSystem sets the OperatingSystem field's value.\nfunc (s *GetDefaultPatchBaselineOutput) SetOperatingSystem(v string) *GetDefaultPatchBaselineOutput {\n\ts.OperatingSystem = &v\n\treturn s\n}\n\ntype GetDeployablePatchSnapshotForInstanceInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Defines the basic information about a patch baseline override.\n\tBaselineOverride *BaselineOverride `type:\"structure\"`\n\n\t// The ID of the managed node for which the appropriate patch snapshot should\n\t// be retrieved.\n\t//\n\t// InstanceId is a required field\n\tInstanceId *string `type:\"string\" required:\"true\"`\n\n\t// The snapshot ID provided by the user when running AWS-RunPatchBaseline.\n\t//\n\t// SnapshotId is a required field\n\tSnapshotId *string `min:\"36\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetDeployablePatchSnapshotForInstanceInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetDeployablePatchSnapshotForInstanceInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetDeployablePatchSnapshotForInstanceInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetDeployablePatchSnapshotForInstanceInput\"}\n\tif s.InstanceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"InstanceId\"))\n\t}\n\tif s.SnapshotId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SnapshotId\"))\n\t}\n\tif s.SnapshotId != nil && len(*s.SnapshotId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SnapshotId\", 36))\n\t}\n\tif s.BaselineOverride != nil {\n\t\tif err := s.BaselineOverride.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"BaselineOverride\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetBaselineOverride sets the BaselineOverride field's value.\nfunc (s *GetDeployablePatchSnapshotForInstanceInput) SetBaselineOverride(v *BaselineOverride) *GetDeployablePatchSnapshotForInstanceInput {\n\ts.BaselineOverride = v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *GetDeployablePatchSnapshotForInstanceInput) SetInstanceId(v string) *GetDeployablePatchSnapshotForInstanceInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetSnapshotId sets the SnapshotId field's value.\nfunc (s *GetDeployablePatchSnapshotForInstanceInput) SetSnapshotId(v string) *GetDeployablePatchSnapshotForInstanceInput {\n\ts.SnapshotId = &v\n\treturn s\n}\n\ntype GetDeployablePatchSnapshotForInstanceOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The managed node ID.\n\tInstanceId *string `type:\"string\"`\n\n\t// Returns the specific operating system (for example Windows Server 2012 or\n\t// Amazon Linux 2015.09) on the managed node for the specified patch snapshot.\n\tProduct *string `type:\"string\"`\n\n\t// A pre-signed Amazon Simple Storage Service (Amazon S3) URL that can be used\n\t// to download the patch snapshot.\n\tSnapshotDownloadUrl *string `type:\"string\"`\n\n\t// The user-defined snapshot ID.\n\tSnapshotId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetDeployablePatchSnapshotForInstanceOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetDeployablePatchSnapshotForInstanceOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *GetDeployablePatchSnapshotForInstanceOutput) SetInstanceId(v string) *GetDeployablePatchSnapshotForInstanceOutput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetProduct sets the Product field's value.\nfunc (s *GetDeployablePatchSnapshotForInstanceOutput) SetProduct(v string) *GetDeployablePatchSnapshotForInstanceOutput {\n\ts.Product = &v\n\treturn s\n}\n\n// SetSnapshotDownloadUrl sets the SnapshotDownloadUrl field's value.\nfunc (s *GetDeployablePatchSnapshotForInstanceOutput) SetSnapshotDownloadUrl(v string) *GetDeployablePatchSnapshotForInstanceOutput {\n\ts.SnapshotDownloadUrl = &v\n\treturn s\n}\n\n// SetSnapshotId sets the SnapshotId field's value.\nfunc (s *GetDeployablePatchSnapshotForInstanceOutput) SetSnapshotId(v string) *GetDeployablePatchSnapshotForInstanceOutput {\n\ts.SnapshotId = &v\n\treturn s\n}\n\ntype GetDocumentInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Returns the document in the specified format. The document format can be\n\t// either JSON or YAML. JSON is the default format.\n\tDocumentFormat *string `type:\"string\" enum:\"DocumentFormat\"`\n\n\t// The document version for which you want information.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The name of the SSM document.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n\n\t// An optional field specifying the version of the artifact associated with\n\t// the document. For example, \"Release 12, Update 6\". This value is unique across\n\t// all versions of a document and can't be changed.\n\tVersionName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetDocumentInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetDocumentInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetDocumentInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetDocumentInput\"}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDocumentFormat sets the DocumentFormat field's value.\nfunc (s *GetDocumentInput) SetDocumentFormat(v string) *GetDocumentInput {\n\ts.DocumentFormat = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *GetDocumentInput) SetDocumentVersion(v string) *GetDocumentInput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *GetDocumentInput) SetName(v string) *GetDocumentInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetVersionName sets the VersionName field's value.\nfunc (s *GetDocumentInput) SetVersionName(v string) *GetDocumentInput {\n\ts.VersionName = &v\n\treturn s\n}\n\ntype GetDocumentOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A description of the document attachments, including names, locations, sizes,\n\t// and so on.\n\tAttachmentsContent []*AttachmentContent `type:\"list\"`\n\n\t// The contents of the SSM document.\n\tContent *string `min:\"1\" type:\"string\"`\n\n\t// The date the SSM document was created.\n\tCreatedDate *time.Time `type:\"timestamp\"`\n\n\t// The friendly name of the SSM document. This value can differ for each version\n\t// of the document. If you want to update this value, see UpdateDocument.\n\tDisplayName *string `type:\"string\"`\n\n\t// The document format, either JSON or YAML.\n\tDocumentFormat *string `type:\"string\" enum:\"DocumentFormat\"`\n\n\t// The document type.\n\tDocumentType *string `type:\"string\" enum:\"DocumentType\"`\n\n\t// The document version.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The name of the SSM document.\n\tName *string `type:\"string\"`\n\n\t// A list of SSM documents required by a document. For example, an ApplicationConfiguration\n\t// document requires an ApplicationConfigurationSchema document.\n\tRequires []*DocumentRequires `min:\"1\" type:\"list\"`\n\n\t// The current review status of a new custom Systems Manager document (SSM document)\n\t// created by a member of your organization, or of the latest version of an\n\t// existing SSM document.\n\t//\n\t// Only one version of an SSM document can be in the APPROVED state at a time.\n\t// When a new version is approved, the status of the previous version changes\n\t// to REJECTED.\n\t//\n\t// Only one version of an SSM document can be in review, or PENDING, at a time.\n\tReviewStatus *string `type:\"string\" enum:\"ReviewStatus\"`\n\n\t// The status of the SSM document, such as Creating, Active, Updating, Failed,\n\t// and Deleting.\n\tStatus *string `type:\"string\" enum:\"DocumentStatus\"`\n\n\t// A message returned by Amazon Web Services Systems Manager that explains the\n\t// Status value. For example, a Failed status might be explained by the StatusInformation\n\t// message, \"The specified S3 bucket doesn't exist. Verify that the URL of the\n\t// S3 bucket is correct.\"\n\tStatusInformation *string `type:\"string\"`\n\n\t// The version of the artifact associated with the document. For example, \"Release\n\t// 12, Update 6\". This value is unique across all versions of a document, and\n\t// can't be changed.\n\tVersionName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetDocumentOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetDocumentOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAttachmentsContent sets the AttachmentsContent field's value.\nfunc (s *GetDocumentOutput) SetAttachmentsContent(v []*AttachmentContent) *GetDocumentOutput {\n\ts.AttachmentsContent = v\n\treturn s\n}\n\n// SetContent sets the Content field's value.\nfunc (s *GetDocumentOutput) SetContent(v string) *GetDocumentOutput {\n\ts.Content = &v\n\treturn s\n}\n\n// SetCreatedDate sets the CreatedDate field's value.\nfunc (s *GetDocumentOutput) SetCreatedDate(v time.Time) *GetDocumentOutput {\n\ts.CreatedDate = &v\n\treturn s\n}\n\n// SetDisplayName sets the DisplayName field's value.\nfunc (s *GetDocumentOutput) SetDisplayName(v string) *GetDocumentOutput {\n\ts.DisplayName = &v\n\treturn s\n}\n\n// SetDocumentFormat sets the DocumentFormat field's value.\nfunc (s *GetDocumentOutput) SetDocumentFormat(v string) *GetDocumentOutput {\n\ts.DocumentFormat = &v\n\treturn s\n}\n\n// SetDocumentType sets the DocumentType field's value.\nfunc (s *GetDocumentOutput) SetDocumentType(v string) *GetDocumentOutput {\n\ts.DocumentType = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *GetDocumentOutput) SetDocumentVersion(v string) *GetDocumentOutput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *GetDocumentOutput) SetName(v string) *GetDocumentOutput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetRequires sets the Requires field's value.\nfunc (s *GetDocumentOutput) SetRequires(v []*DocumentRequires) *GetDocumentOutput {\n\ts.Requires = v\n\treturn s\n}\n\n// SetReviewStatus sets the ReviewStatus field's value.\nfunc (s *GetDocumentOutput) SetReviewStatus(v string) *GetDocumentOutput {\n\ts.ReviewStatus = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *GetDocumentOutput) SetStatus(v string) *GetDocumentOutput {\n\ts.Status = &v\n\treturn s\n}\n\n// SetStatusInformation sets the StatusInformation field's value.\nfunc (s *GetDocumentOutput) SetStatusInformation(v string) *GetDocumentOutput {\n\ts.StatusInformation = &v\n\treturn s\n}\n\n// SetVersionName sets the VersionName field's value.\nfunc (s *GetDocumentOutput) SetVersionName(v string) *GetDocumentOutput {\n\ts.VersionName = &v\n\treturn s\n}\n\ntype GetInventoryInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Returns counts of inventory types based on one or more expressions. For example,\n\t// if you aggregate by using an expression that uses the AWS:InstanceInformation.PlatformType\n\t// type, you can see a count of how many Windows and Linux managed nodes exist\n\t// in your inventoried fleet.\n\tAggregators []*InventoryAggregator `min:\"1\" type:\"list\"`\n\n\t// One or more filters. Use a filter to return a more specific list of results.\n\tFilters []*InventoryFilter `min:\"1\" type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The list of inventory item types to return.\n\tResultAttributes []*ResultAttribute `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetInventoryInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetInventoryInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetInventoryInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetInventoryInput\"}\n\tif s.Aggregators != nil && len(s.Aggregators) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Aggregators\", 1))\n\t}\n\tif s.Filters != nil && len(s.Filters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Filters\", 1))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.ResultAttributes != nil && len(s.ResultAttributes) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ResultAttributes\", 1))\n\t}\n\tif s.Aggregators != nil {\n\t\tfor i, v := range s.Aggregators {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Aggregators\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ResultAttributes != nil {\n\t\tfor i, v := range s.ResultAttributes {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"ResultAttributes\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAggregators sets the Aggregators field's value.\nfunc (s *GetInventoryInput) SetAggregators(v []*InventoryAggregator) *GetInventoryInput {\n\ts.Aggregators = v\n\treturn s\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *GetInventoryInput) SetFilters(v []*InventoryFilter) *GetInventoryInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *GetInventoryInput) SetMaxResults(v int64) *GetInventoryInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetInventoryInput) SetNextToken(v string) *GetInventoryInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetResultAttributes sets the ResultAttributes field's value.\nfunc (s *GetInventoryInput) SetResultAttributes(v []*ResultAttribute) *GetInventoryInput {\n\ts.ResultAttributes = v\n\treturn s\n}\n\ntype GetInventoryOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Collection of inventory entities such as a collection of managed node inventory.\n\tEntities []*InventoryResultEntity `type:\"list\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetInventoryOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetInventoryOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetEntities sets the Entities field's value.\nfunc (s *GetInventoryOutput) SetEntities(v []*InventoryResultEntity) *GetInventoryOutput {\n\ts.Entities = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetInventoryOutput) SetNextToken(v string) *GetInventoryOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype GetInventorySchemaInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Returns inventory schemas that support aggregation. For example, this call\n\t// returns the AWS:InstanceInformation type, because it supports aggregation\n\t// based on the PlatformName, PlatformType, and PlatformVersion attributes.\n\tAggregator *bool `type:\"boolean\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"50\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// Returns the sub-type schema for a specified inventory type.\n\tSubType *bool `type:\"boolean\"`\n\n\t// The type of inventory item to return.\n\tTypeName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetInventorySchemaInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetInventorySchemaInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetInventorySchemaInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetInventorySchemaInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 50 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 50))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAggregator sets the Aggregator field's value.\nfunc (s *GetInventorySchemaInput) SetAggregator(v bool) *GetInventorySchemaInput {\n\ts.Aggregator = &v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *GetInventorySchemaInput) SetMaxResults(v int64) *GetInventorySchemaInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetInventorySchemaInput) SetNextToken(v string) *GetInventorySchemaInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetSubType sets the SubType field's value.\nfunc (s *GetInventorySchemaInput) SetSubType(v bool) *GetInventorySchemaInput {\n\ts.SubType = &v\n\treturn s\n}\n\n// SetTypeName sets the TypeName field's value.\nfunc (s *GetInventorySchemaInput) SetTypeName(v string) *GetInventorySchemaInput {\n\ts.TypeName = &v\n\treturn s\n}\n\ntype GetInventorySchemaOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n\n\t// Inventory schemas returned by the request.\n\tSchemas []*InventoryItemSchema `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetInventorySchemaOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetInventorySchemaOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetInventorySchemaOutput) SetNextToken(v string) *GetInventorySchemaOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetSchemas sets the Schemas field's value.\nfunc (s *GetInventorySchemaOutput) SetSchemas(v []*InventoryItemSchema) *GetInventorySchemaOutput {\n\ts.Schemas = v\n\treturn s\n}\n\ntype GetMaintenanceWindowExecutionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the maintenance window execution that includes the task.\n\t//\n\t// WindowExecutionId is a required field\n\tWindowExecutionId *string `min:\"36\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowExecutionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowExecutionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetMaintenanceWindowExecutionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetMaintenanceWindowExecutionInput\"}\n\tif s.WindowExecutionId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowExecutionId\"))\n\t}\n\tif s.WindowExecutionId != nil && len(*s.WindowExecutionId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowExecutionId\", 36))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetWindowExecutionId sets the WindowExecutionId field's value.\nfunc (s *GetMaintenanceWindowExecutionInput) SetWindowExecutionId(v string) *GetMaintenanceWindowExecutionInput {\n\ts.WindowExecutionId = &v\n\treturn s\n}\n\ntype GetMaintenanceWindowExecutionOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time the maintenance window finished running.\n\tEndTime *time.Time `type:\"timestamp\"`\n\n\t// The time the maintenance window started running.\n\tStartTime *time.Time `type:\"timestamp\"`\n\n\t// The status of the maintenance window execution.\n\tStatus *string `type:\"string\" enum:\"MaintenanceWindowExecutionStatus\"`\n\n\t// The details explaining the status. Not available for all status values.\n\tStatusDetails *string `type:\"string\"`\n\n\t// The ID of the task executions from the maintenance window execution.\n\tTaskIds []*string `type:\"list\"`\n\n\t// The ID of the maintenance window execution.\n\tWindowExecutionId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowExecutionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowExecutionOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetEndTime sets the EndTime field's value.\nfunc (s *GetMaintenanceWindowExecutionOutput) SetEndTime(v time.Time) *GetMaintenanceWindowExecutionOutput {\n\ts.EndTime = &v\n\treturn s\n}\n\n// SetStartTime sets the StartTime field's value.\nfunc (s *GetMaintenanceWindowExecutionOutput) SetStartTime(v time.Time) *GetMaintenanceWindowExecutionOutput {\n\ts.StartTime = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *GetMaintenanceWindowExecutionOutput) SetStatus(v string) *GetMaintenanceWindowExecutionOutput {\n\ts.Status = &v\n\treturn s\n}\n\n// SetStatusDetails sets the StatusDetails field's value.\nfunc (s *GetMaintenanceWindowExecutionOutput) SetStatusDetails(v string) *GetMaintenanceWindowExecutionOutput {\n\ts.StatusDetails = &v\n\treturn s\n}\n\n// SetTaskIds sets the TaskIds field's value.\nfunc (s *GetMaintenanceWindowExecutionOutput) SetTaskIds(v []*string) *GetMaintenanceWindowExecutionOutput {\n\ts.TaskIds = v\n\treturn s\n}\n\n// SetWindowExecutionId sets the WindowExecutionId field's value.\nfunc (s *GetMaintenanceWindowExecutionOutput) SetWindowExecutionId(v string) *GetMaintenanceWindowExecutionOutput {\n\ts.WindowExecutionId = &v\n\treturn s\n}\n\ntype GetMaintenanceWindowExecutionTaskInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the specific task execution in the maintenance window task that\n\t// should be retrieved.\n\t//\n\t// TaskId is a required field\n\tTaskId *string `min:\"36\" type:\"string\" required:\"true\"`\n\n\t// The ID of the maintenance window execution that includes the task.\n\t//\n\t// WindowExecutionId is a required field\n\tWindowExecutionId *string `min:\"36\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowExecutionTaskInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowExecutionTaskInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetMaintenanceWindowExecutionTaskInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetMaintenanceWindowExecutionTaskInput\"}\n\tif s.TaskId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TaskId\"))\n\t}\n\tif s.TaskId != nil && len(*s.TaskId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TaskId\", 36))\n\t}\n\tif s.WindowExecutionId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowExecutionId\"))\n\t}\n\tif s.WindowExecutionId != nil && len(*s.WindowExecutionId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowExecutionId\", 36))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetTaskId sets the TaskId field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInput) SetTaskId(v string) *GetMaintenanceWindowExecutionTaskInput {\n\ts.TaskId = &v\n\treturn s\n}\n\n// SetWindowExecutionId sets the WindowExecutionId field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInput) SetWindowExecutionId(v string) *GetMaintenanceWindowExecutionTaskInput {\n\ts.WindowExecutionId = &v\n\treturn s\n}\n\ntype GetMaintenanceWindowExecutionTaskInvocationInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The invocation ID to retrieve.\n\t//\n\t// InvocationId is a required field\n\tInvocationId *string `min:\"36\" type:\"string\" required:\"true\"`\n\n\t// The ID of the specific task in the maintenance window task that should be\n\t// retrieved.\n\t//\n\t// TaskId is a required field\n\tTaskId *string `min:\"36\" type:\"string\" required:\"true\"`\n\n\t// The ID of the maintenance window execution for which the task is a part.\n\t//\n\t// WindowExecutionId is a required field\n\tWindowExecutionId *string `min:\"36\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowExecutionTaskInvocationInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowExecutionTaskInvocationInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetMaintenanceWindowExecutionTaskInvocationInput\"}\n\tif s.InvocationId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"InvocationId\"))\n\t}\n\tif s.InvocationId != nil && len(*s.InvocationId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"InvocationId\", 36))\n\t}\n\tif s.TaskId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TaskId\"))\n\t}\n\tif s.TaskId != nil && len(*s.TaskId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TaskId\", 36))\n\t}\n\tif s.WindowExecutionId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowExecutionId\"))\n\t}\n\tif s.WindowExecutionId != nil && len(*s.WindowExecutionId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowExecutionId\", 36))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetInvocationId sets the InvocationId field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationInput) SetInvocationId(v string) *GetMaintenanceWindowExecutionTaskInvocationInput {\n\ts.InvocationId = &v\n\treturn s\n}\n\n// SetTaskId sets the TaskId field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationInput) SetTaskId(v string) *GetMaintenanceWindowExecutionTaskInvocationInput {\n\ts.TaskId = &v\n\treturn s\n}\n\n// SetWindowExecutionId sets the WindowExecutionId field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationInput) SetWindowExecutionId(v string) *GetMaintenanceWindowExecutionTaskInvocationInput {\n\ts.WindowExecutionId = &v\n\treturn s\n}\n\ntype GetMaintenanceWindowExecutionTaskInvocationOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time that the task finished running on the target.\n\tEndTime *time.Time `type:\"timestamp\"`\n\n\t// The execution ID.\n\tExecutionId *string `type:\"string\"`\n\n\t// The invocation ID.\n\tInvocationId *string `min:\"36\" type:\"string\"`\n\n\t// User-provided value to be included in any Amazon CloudWatch Events or Amazon\n\t// EventBridge events raised while running tasks for these targets in this maintenance\n\t// window.\n\t//\n\t// OwnerInformation is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by GetMaintenanceWindowExecutionTaskInvocationOutput's\n\t// String and GoString methods.\n\tOwnerInformation *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The parameters used at the time that the task ran.\n\t//\n\t// Parameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by GetMaintenanceWindowExecutionTaskInvocationOutput's\n\t// String and GoString methods.\n\tParameters *string `type:\"string\" sensitive:\"true\"`\n\n\t// The time that the task started running on the target.\n\tStartTime *time.Time `type:\"timestamp\"`\n\n\t// The task status for an invocation.\n\tStatus *string `type:\"string\" enum:\"MaintenanceWindowExecutionStatus\"`\n\n\t// The details explaining the status. Details are only available for certain\n\t// status values.\n\tStatusDetails *string `type:\"string\"`\n\n\t// The task execution ID.\n\tTaskExecutionId *string `min:\"36\" type:\"string\"`\n\n\t// Retrieves the task type for a maintenance window.\n\tTaskType *string `type:\"string\" enum:\"MaintenanceWindowTaskType\"`\n\n\t// The maintenance window execution ID.\n\tWindowExecutionId *string `min:\"36\" type:\"string\"`\n\n\t// The maintenance window target ID.\n\tWindowTargetId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowExecutionTaskInvocationOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowExecutionTaskInvocationOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetEndTime sets the EndTime field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationOutput) SetEndTime(v time.Time) *GetMaintenanceWindowExecutionTaskInvocationOutput {\n\ts.EndTime = &v\n\treturn s\n}\n\n// SetExecutionId sets the ExecutionId field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationOutput) SetExecutionId(v string) *GetMaintenanceWindowExecutionTaskInvocationOutput {\n\ts.ExecutionId = &v\n\treturn s\n}\n\n// SetInvocationId sets the InvocationId field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationOutput) SetInvocationId(v string) *GetMaintenanceWindowExecutionTaskInvocationOutput {\n\ts.InvocationId = &v\n\treturn s\n}\n\n// SetOwnerInformation sets the OwnerInformation field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationOutput) SetOwnerInformation(v string) *GetMaintenanceWindowExecutionTaskInvocationOutput {\n\ts.OwnerInformation = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationOutput) SetParameters(v string) *GetMaintenanceWindowExecutionTaskInvocationOutput {\n\ts.Parameters = &v\n\treturn s\n}\n\n// SetStartTime sets the StartTime field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationOutput) SetStartTime(v time.Time) *GetMaintenanceWindowExecutionTaskInvocationOutput {\n\ts.StartTime = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationOutput) SetStatus(v string) *GetMaintenanceWindowExecutionTaskInvocationOutput {\n\ts.Status = &v\n\treturn s\n}\n\n// SetStatusDetails sets the StatusDetails field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationOutput) SetStatusDetails(v string) *GetMaintenanceWindowExecutionTaskInvocationOutput {\n\ts.StatusDetails = &v\n\treturn s\n}\n\n// SetTaskExecutionId sets the TaskExecutionId field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationOutput) SetTaskExecutionId(v string) *GetMaintenanceWindowExecutionTaskInvocationOutput {\n\ts.TaskExecutionId = &v\n\treturn s\n}\n\n// SetTaskType sets the TaskType field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationOutput) SetTaskType(v string) *GetMaintenanceWindowExecutionTaskInvocationOutput {\n\ts.TaskType = &v\n\treturn s\n}\n\n// SetWindowExecutionId sets the WindowExecutionId field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationOutput) SetWindowExecutionId(v string) *GetMaintenanceWindowExecutionTaskInvocationOutput {\n\ts.WindowExecutionId = &v\n\treturn s\n}\n\n// SetWindowTargetId sets the WindowTargetId field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskInvocationOutput) SetWindowTargetId(v string) *GetMaintenanceWindowExecutionTaskInvocationOutput {\n\ts.WindowTargetId = &v\n\treturn s\n}\n\ntype GetMaintenanceWindowExecutionTaskOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The details for the CloudWatch alarm you applied to your maintenance window\n\t// task.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// The time the task execution completed.\n\tEndTime *time.Time `type:\"timestamp\"`\n\n\t// The defined maximum number of task executions that could be run in parallel.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The defined maximum number of task execution errors allowed before scheduling\n\t// of the task execution would have been stopped.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The priority of the task.\n\tPriority *int64 `type:\"integer\"`\n\n\t// The role that was assumed when running the task.\n\tServiceRole *string `type:\"string\"`\n\n\t// The time the task execution started.\n\tStartTime *time.Time `type:\"timestamp\"`\n\n\t// The status of the task.\n\tStatus *string `type:\"string\" enum:\"MaintenanceWindowExecutionStatus\"`\n\n\t// The details explaining the status. Not available for all status values.\n\tStatusDetails *string `type:\"string\"`\n\n\t// The Amazon Resource Name (ARN) of the task that ran.\n\tTaskArn *string `min:\"1\" type:\"string\"`\n\n\t// The ID of the specific task execution in the maintenance window task that\n\t// was retrieved.\n\tTaskExecutionId *string `min:\"36\" type:\"string\"`\n\n\t// The parameters passed to the task when it was run.\n\t//\n\t// TaskParameters has been deprecated. To specify parameters to pass to a task\n\t// when it runs, instead use the Parameters option in the TaskInvocationParameters\n\t// structure. For information about how Systems Manager handles these options\n\t// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n\t//\n\t// The map has the following format:\n\t//\n\t//    * Key: string, between 1 and 255 characters\n\t//\n\t//    * Value: an array of strings, each between 1 and 255 characters\n\t//\n\t// TaskParameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by GetMaintenanceWindowExecutionTaskOutput's\n\t// String and GoString methods.\n\tTaskParameters []map[string]*MaintenanceWindowTaskParameterValueExpression `type:\"list\" sensitive:\"true\"`\n\n\t// The CloudWatch alarms that were invoked by the maintenance window task.\n\tTriggeredAlarms []*AlarmStateInformation `min:\"1\" type:\"list\"`\n\n\t// The type of task that was run.\n\tType *string `type:\"string\" enum:\"MaintenanceWindowTaskType\"`\n\n\t// The ID of the maintenance window execution that includes the task.\n\tWindowExecutionId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowExecutionTaskOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowExecutionTaskOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetAlarmConfiguration(v *AlarmConfiguration) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetEndTime sets the EndTime field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetEndTime(v time.Time) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.EndTime = &v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetMaxConcurrency(v string) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetMaxErrors(v string) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetPriority sets the Priority field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetPriority(v int64) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.Priority = &v\n\treturn s\n}\n\n// SetServiceRole sets the ServiceRole field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetServiceRole(v string) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.ServiceRole = &v\n\treturn s\n}\n\n// SetStartTime sets the StartTime field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetStartTime(v time.Time) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.StartTime = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetStatus(v string) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.Status = &v\n\treturn s\n}\n\n// SetStatusDetails sets the StatusDetails field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetStatusDetails(v string) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.StatusDetails = &v\n\treturn s\n}\n\n// SetTaskArn sets the TaskArn field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetTaskArn(v string) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.TaskArn = &v\n\treturn s\n}\n\n// SetTaskExecutionId sets the TaskExecutionId field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetTaskExecutionId(v string) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.TaskExecutionId = &v\n\treturn s\n}\n\n// SetTaskParameters sets the TaskParameters field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetTaskParameters(v []map[string]*MaintenanceWindowTaskParameterValueExpression) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.TaskParameters = v\n\treturn s\n}\n\n// SetTriggeredAlarms sets the TriggeredAlarms field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetTriggeredAlarms(v []*AlarmStateInformation) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.TriggeredAlarms = v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetType(v string) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.Type = &v\n\treturn s\n}\n\n// SetWindowExecutionId sets the WindowExecutionId field's value.\nfunc (s *GetMaintenanceWindowExecutionTaskOutput) SetWindowExecutionId(v string) *GetMaintenanceWindowExecutionTaskOutput {\n\ts.WindowExecutionId = &v\n\treturn s\n}\n\ntype GetMaintenanceWindowInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the maintenance window for which you want to retrieve information.\n\t//\n\t// WindowId is a required field\n\tWindowId *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetMaintenanceWindowInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetMaintenanceWindowInput\"}\n\tif s.WindowId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowId\"))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *GetMaintenanceWindowInput) SetWindowId(v string) *GetMaintenanceWindowInput {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype GetMaintenanceWindowOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Whether targets must be registered with the maintenance window before tasks\n\t// can be defined for those targets.\n\tAllowUnassociatedTargets *bool `type:\"boolean\"`\n\n\t// The date the maintenance window was created.\n\tCreatedDate *time.Time `type:\"timestamp\"`\n\n\t// The number of hours before the end of the maintenance window that Amazon\n\t// Web Services Systems Manager stops scheduling new tasks for execution.\n\tCutoff *int64 `type:\"integer\"`\n\n\t// The description of the maintenance window.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by GetMaintenanceWindowOutput's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The duration of the maintenance window in hours.\n\tDuration *int64 `min:\"1\" type:\"integer\"`\n\n\t// Indicates whether the maintenance window is enabled.\n\tEnabled *bool `type:\"boolean\"`\n\n\t// The date and time, in ISO-8601 Extended format, for when the maintenance\n\t// window is scheduled to become inactive. The maintenance window won't run\n\t// after this specified time.\n\tEndDate *string `type:\"string\"`\n\n\t// The date the maintenance window was last modified.\n\tModifiedDate *time.Time `type:\"timestamp\"`\n\n\t// The name of the maintenance window.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// The next time the maintenance window will actually run, taking into account\n\t// any specified times for the maintenance window to become active or inactive.\n\tNextExecutionTime *string `type:\"string\"`\n\n\t// The schedule of the maintenance window in the form of a cron or rate expression.\n\tSchedule *string `min:\"1\" type:\"string\"`\n\n\t// The number of days to wait to run a maintenance window after the scheduled\n\t// cron expression date and time.\n\tScheduleOffset *int64 `min:\"1\" type:\"integer\"`\n\n\t// The time zone that the scheduled maintenance window executions are based\n\t// on, in Internet Assigned Numbers Authority (IANA) format. For example: \"America/Los_Angeles\",\n\t// \"UTC\", or \"Asia/Seoul\". For more information, see the Time Zone Database\n\t// (https://www.iana.org/time-zones) on the IANA website.\n\tScheduleTimezone *string `type:\"string\"`\n\n\t// The date and time, in ISO-8601 Extended format, for when the maintenance\n\t// window is scheduled to become active. The maintenance window won't run before\n\t// this specified time.\n\tStartDate *string `type:\"string\"`\n\n\t// The ID of the created maintenance window.\n\tWindowId *string `min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAllowUnassociatedTargets sets the AllowUnassociatedTargets field's value.\nfunc (s *GetMaintenanceWindowOutput) SetAllowUnassociatedTargets(v bool) *GetMaintenanceWindowOutput {\n\ts.AllowUnassociatedTargets = &v\n\treturn s\n}\n\n// SetCreatedDate sets the CreatedDate field's value.\nfunc (s *GetMaintenanceWindowOutput) SetCreatedDate(v time.Time) *GetMaintenanceWindowOutput {\n\ts.CreatedDate = &v\n\treturn s\n}\n\n// SetCutoff sets the Cutoff field's value.\nfunc (s *GetMaintenanceWindowOutput) SetCutoff(v int64) *GetMaintenanceWindowOutput {\n\ts.Cutoff = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *GetMaintenanceWindowOutput) SetDescription(v string) *GetMaintenanceWindowOutput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetDuration sets the Duration field's value.\nfunc (s *GetMaintenanceWindowOutput) SetDuration(v int64) *GetMaintenanceWindowOutput {\n\ts.Duration = &v\n\treturn s\n}\n\n// SetEnabled sets the Enabled field's value.\nfunc (s *GetMaintenanceWindowOutput) SetEnabled(v bool) *GetMaintenanceWindowOutput {\n\ts.Enabled = &v\n\treturn s\n}\n\n// SetEndDate sets the EndDate field's value.\nfunc (s *GetMaintenanceWindowOutput) SetEndDate(v string) *GetMaintenanceWindowOutput {\n\ts.EndDate = &v\n\treturn s\n}\n\n// SetModifiedDate sets the ModifiedDate field's value.\nfunc (s *GetMaintenanceWindowOutput) SetModifiedDate(v time.Time) *GetMaintenanceWindowOutput {\n\ts.ModifiedDate = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *GetMaintenanceWindowOutput) SetName(v string) *GetMaintenanceWindowOutput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetNextExecutionTime sets the NextExecutionTime field's value.\nfunc (s *GetMaintenanceWindowOutput) SetNextExecutionTime(v string) *GetMaintenanceWindowOutput {\n\ts.NextExecutionTime = &v\n\treturn s\n}\n\n// SetSchedule sets the Schedule field's value.\nfunc (s *GetMaintenanceWindowOutput) SetSchedule(v string) *GetMaintenanceWindowOutput {\n\ts.Schedule = &v\n\treturn s\n}\n\n// SetScheduleOffset sets the ScheduleOffset field's value.\nfunc (s *GetMaintenanceWindowOutput) SetScheduleOffset(v int64) *GetMaintenanceWindowOutput {\n\ts.ScheduleOffset = &v\n\treturn s\n}\n\n// SetScheduleTimezone sets the ScheduleTimezone field's value.\nfunc (s *GetMaintenanceWindowOutput) SetScheduleTimezone(v string) *GetMaintenanceWindowOutput {\n\ts.ScheduleTimezone = &v\n\treturn s\n}\n\n// SetStartDate sets the StartDate field's value.\nfunc (s *GetMaintenanceWindowOutput) SetStartDate(v string) *GetMaintenanceWindowOutput {\n\ts.StartDate = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *GetMaintenanceWindowOutput) SetWindowId(v string) *GetMaintenanceWindowOutput {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype GetMaintenanceWindowTaskInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The maintenance window ID that includes the task to retrieve.\n\t//\n\t// WindowId is a required field\n\tWindowId *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// The maintenance window task ID to retrieve.\n\t//\n\t// WindowTaskId is a required field\n\tWindowTaskId *string `min:\"36\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowTaskInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowTaskInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetMaintenanceWindowTaskInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetMaintenanceWindowTaskInput\"}\n\tif s.WindowId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowId\"))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\tif s.WindowTaskId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowTaskId\"))\n\t}\n\tif s.WindowTaskId != nil && len(*s.WindowTaskId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowTaskId\", 36))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *GetMaintenanceWindowTaskInput) SetWindowId(v string) *GetMaintenanceWindowTaskInput {\n\ts.WindowId = &v\n\treturn s\n}\n\n// SetWindowTaskId sets the WindowTaskId field's value.\nfunc (s *GetMaintenanceWindowTaskInput) SetWindowTaskId(v string) *GetMaintenanceWindowTaskInput {\n\ts.WindowTaskId = &v\n\treturn s\n}\n\ntype GetMaintenanceWindowTaskOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The details for the CloudWatch alarm you applied to your maintenance window\n\t// task.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// The action to take on tasks when the maintenance window cutoff time is reached.\n\t// CONTINUE_TASK means that tasks continue to run. For Automation, Lambda, Step\n\t// Functions tasks, CANCEL_TASK means that currently running task invocations\n\t// continue, but no new task invocations are started. For Run Command tasks,\n\t// CANCEL_TASK means the system attempts to stop the task by sending a CancelCommand\n\t// operation.\n\tCutoffBehavior *string `type:\"string\" enum:\"MaintenanceWindowTaskCutoffBehavior\"`\n\n\t// The retrieved task description.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by GetMaintenanceWindowTaskOutput's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The location in Amazon Simple Storage Service (Amazon S3) where the task\n\t// results are logged.\n\t//\n\t// LoggingInfo has been deprecated. To specify an Amazon Simple Storage Service\n\t// (Amazon S3) bucket to contain logs, instead use the OutputS3BucketName and\n\t// OutputS3KeyPrefix options in the TaskInvocationParameters structure. For\n\t// information about how Amazon Web Services Systems Manager handles these options\n\t// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n\tLoggingInfo *LoggingInfo `type:\"structure\"`\n\n\t// The maximum number of targets allowed to run this task in parallel.\n\t//\n\t// For maintenance window tasks without a target specified, you can't supply\n\t// a value for this option. Instead, the system inserts a placeholder value\n\t// of 1, which may be reported in the response to this command. This value doesn't\n\t// affect the running of your task and can be ignored.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The maximum number of errors allowed before the task stops being scheduled.\n\t//\n\t// For maintenance window tasks without a target specified, you can't supply\n\t// a value for this option. Instead, the system inserts a placeholder value\n\t// of 1, which may be reported in the response to this command. This value doesn't\n\t// affect the running of your task and can be ignored.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The retrieved task name.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// The priority of the task when it runs. The lower the number, the higher the\n\t// priority. Tasks that have the same priority are scheduled in parallel.\n\tPriority *int64 `type:\"integer\"`\n\n\t// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)\n\t// service role to use to publish Amazon Simple Notification Service (Amazon\n\t// SNS) notifications for maintenance window Run Command tasks.\n\tServiceRoleArn *string `type:\"string\"`\n\n\t// The targets where the task should run.\n\tTargets []*Target `type:\"list\"`\n\n\t// The resource that the task used during execution. For RUN_COMMAND and AUTOMATION\n\t// task types, the value of TaskArn is the SSM document name/ARN. For LAMBDA\n\t// tasks, the value is the function name/ARN. For STEP_FUNCTIONS tasks, the\n\t// value is the state machine ARN.\n\tTaskArn *string `min:\"1\" type:\"string\"`\n\n\t// The parameters to pass to the task when it runs.\n\tTaskInvocationParameters *MaintenanceWindowTaskInvocationParameters `type:\"structure\"`\n\n\t// The parameters to pass to the task when it runs.\n\t//\n\t// TaskParameters has been deprecated. To specify parameters to pass to a task\n\t// when it runs, instead use the Parameters option in the TaskInvocationParameters\n\t// structure. For information about how Systems Manager handles these options\n\t// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n\t//\n\t// TaskParameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by GetMaintenanceWindowTaskOutput's\n\t// String and GoString methods.\n\tTaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:\"map\" sensitive:\"true\"`\n\n\t// The type of task to run.\n\tTaskType *string `type:\"string\" enum:\"MaintenanceWindowTaskType\"`\n\n\t// The retrieved maintenance window ID.\n\tWindowId *string `min:\"20\" type:\"string\"`\n\n\t// The retrieved maintenance window task ID.\n\tWindowTaskId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowTaskOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetMaintenanceWindowTaskOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetAlarmConfiguration(v *AlarmConfiguration) *GetMaintenanceWindowTaskOutput {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetCutoffBehavior sets the CutoffBehavior field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetCutoffBehavior(v string) *GetMaintenanceWindowTaskOutput {\n\ts.CutoffBehavior = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetDescription(v string) *GetMaintenanceWindowTaskOutput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetLoggingInfo sets the LoggingInfo field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetLoggingInfo(v *LoggingInfo) *GetMaintenanceWindowTaskOutput {\n\ts.LoggingInfo = v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetMaxConcurrency(v string) *GetMaintenanceWindowTaskOutput {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetMaxErrors(v string) *GetMaintenanceWindowTaskOutput {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetName(v string) *GetMaintenanceWindowTaskOutput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetPriority sets the Priority field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetPriority(v int64) *GetMaintenanceWindowTaskOutput {\n\ts.Priority = &v\n\treturn s\n}\n\n// SetServiceRoleArn sets the ServiceRoleArn field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetServiceRoleArn(v string) *GetMaintenanceWindowTaskOutput {\n\ts.ServiceRoleArn = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetTargets(v []*Target) *GetMaintenanceWindowTaskOutput {\n\ts.Targets = v\n\treturn s\n}\n\n// SetTaskArn sets the TaskArn field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetTaskArn(v string) *GetMaintenanceWindowTaskOutput {\n\ts.TaskArn = &v\n\treturn s\n}\n\n// SetTaskInvocationParameters sets the TaskInvocationParameters field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetTaskInvocationParameters(v *MaintenanceWindowTaskInvocationParameters) *GetMaintenanceWindowTaskOutput {\n\ts.TaskInvocationParameters = v\n\treturn s\n}\n\n// SetTaskParameters sets the TaskParameters field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetTaskParameters(v map[string]*MaintenanceWindowTaskParameterValueExpression) *GetMaintenanceWindowTaskOutput {\n\ts.TaskParameters = v\n\treturn s\n}\n\n// SetTaskType sets the TaskType field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetTaskType(v string) *GetMaintenanceWindowTaskOutput {\n\ts.TaskType = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetWindowId(v string) *GetMaintenanceWindowTaskOutput {\n\ts.WindowId = &v\n\treturn s\n}\n\n// SetWindowTaskId sets the WindowTaskId field's value.\nfunc (s *GetMaintenanceWindowTaskOutput) SetWindowTaskId(v string) *GetMaintenanceWindowTaskOutput {\n\ts.WindowTaskId = &v\n\treturn s\n}\n\ntype GetOpsItemInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The OpsItem Amazon Resource Name (ARN).\n\tOpsItemArn *string `min:\"20\" type:\"string\"`\n\n\t// The ID of the OpsItem that you want to get.\n\t//\n\t// OpsItemId is a required field\n\tOpsItemId *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetOpsItemInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetOpsItemInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetOpsItemInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetOpsItemInput\"}\n\tif s.OpsItemArn != nil && len(*s.OpsItemArn) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OpsItemArn\", 20))\n\t}\n\tif s.OpsItemId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"OpsItemId\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetOpsItemArn sets the OpsItemArn field's value.\nfunc (s *GetOpsItemInput) SetOpsItemArn(v string) *GetOpsItemInput {\n\ts.OpsItemArn = &v\n\treturn s\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *GetOpsItemInput) SetOpsItemId(v string) *GetOpsItemInput {\n\ts.OpsItemId = &v\n\treturn s\n}\n\ntype GetOpsItemOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The OpsItem.\n\tOpsItem *OpsItem `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetOpsItemOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetOpsItemOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetOpsItem sets the OpsItem field's value.\nfunc (s *GetOpsItemOutput) SetOpsItem(v *OpsItem) *GetOpsItemOutput {\n\ts.OpsItem = v\n\treturn s\n}\n\ntype GetOpsMetadataInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// The Amazon Resource Name (ARN) of an OpsMetadata Object to view.\n\t//\n\t// OpsMetadataArn is a required field\n\tOpsMetadataArn *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetOpsMetadataInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetOpsMetadataInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetOpsMetadataInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetOpsMetadataInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.OpsMetadataArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"OpsMetadataArn\"))\n\t}\n\tif s.OpsMetadataArn != nil && len(*s.OpsMetadataArn) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OpsMetadataArn\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *GetOpsMetadataInput) SetMaxResults(v int64) *GetOpsMetadataInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetOpsMetadataInput) SetNextToken(v string) *GetOpsMetadataInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetOpsMetadataArn sets the OpsMetadataArn field's value.\nfunc (s *GetOpsMetadataInput) SetOpsMetadataArn(v string) *GetOpsMetadataInput {\n\ts.OpsMetadataArn = &v\n\treturn s\n}\n\ntype GetOpsMetadataOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// OpsMetadata for an Application Manager application.\n\tMetadata map[string]*MetadataValue `min:\"1\" type:\"map\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// The resource ID of the Application Manager application.\n\tResourceId *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetOpsMetadataOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetOpsMetadataOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetMetadata sets the Metadata field's value.\nfunc (s *GetOpsMetadataOutput) SetMetadata(v map[string]*MetadataValue) *GetOpsMetadataOutput {\n\ts.Metadata = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetOpsMetadataOutput) SetNextToken(v string) *GetOpsMetadataOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetResourceId sets the ResourceId field's value.\nfunc (s *GetOpsMetadataOutput) SetResourceId(v string) *GetOpsMetadataOutput {\n\ts.ResourceId = &v\n\treturn s\n}\n\ntype GetOpsSummaryInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Optional aggregators that return counts of OpsData based on one or more expressions.\n\tAggregators []*OpsAggregator `min:\"1\" type:\"list\"`\n\n\t// Optional filters used to scope down the returned OpsData.\n\tFilters []*OpsFilter `min:\"1\" type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// The OpsData data type to return.\n\tResultAttributes []*OpsResultAttribute `min:\"1\" type:\"list\"`\n\n\t// Specify the name of a resource data sync to get.\n\tSyncName *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetOpsSummaryInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetOpsSummaryInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetOpsSummaryInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetOpsSummaryInput\"}\n\tif s.Aggregators != nil && len(s.Aggregators) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Aggregators\", 1))\n\t}\n\tif s.Filters != nil && len(s.Filters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Filters\", 1))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.ResultAttributes != nil && len(s.ResultAttributes) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ResultAttributes\", 1))\n\t}\n\tif s.SyncName != nil && len(*s.SyncName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SyncName\", 1))\n\t}\n\tif s.Aggregators != nil {\n\t\tfor i, v := range s.Aggregators {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Aggregators\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ResultAttributes != nil {\n\t\tfor i, v := range s.ResultAttributes {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"ResultAttributes\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAggregators sets the Aggregators field's value.\nfunc (s *GetOpsSummaryInput) SetAggregators(v []*OpsAggregator) *GetOpsSummaryInput {\n\ts.Aggregators = v\n\treturn s\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *GetOpsSummaryInput) SetFilters(v []*OpsFilter) *GetOpsSummaryInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *GetOpsSummaryInput) SetMaxResults(v int64) *GetOpsSummaryInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetOpsSummaryInput) SetNextToken(v string) *GetOpsSummaryInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetResultAttributes sets the ResultAttributes field's value.\nfunc (s *GetOpsSummaryInput) SetResultAttributes(v []*OpsResultAttribute) *GetOpsSummaryInput {\n\ts.ResultAttributes = v\n\treturn s\n}\n\n// SetSyncName sets the SyncName field's value.\nfunc (s *GetOpsSummaryInput) SetSyncName(v string) *GetOpsSummaryInput {\n\ts.SyncName = &v\n\treturn s\n}\n\ntype GetOpsSummaryOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The list of aggregated details and filtered OpsData.\n\tEntities []*OpsEntity `type:\"list\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetOpsSummaryOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetOpsSummaryOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetEntities sets the Entities field's value.\nfunc (s *GetOpsSummaryOutput) SetEntities(v []*OpsEntity) *GetOpsSummaryOutput {\n\ts.Entities = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetOpsSummaryOutput) SetNextToken(v string) *GetOpsSummaryOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype GetParameterHistoryInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The name of the parameter for which you want to review history.\n\t//\n\t// Name is a required field\n\tName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// Return decrypted values for secure string parameters. This flag is ignored\n\t// for String and StringList parameter types.\n\tWithDecryption *bool `type:\"boolean\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParameterHistoryInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParameterHistoryInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetParameterHistoryInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetParameterHistoryInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Name != nil && len(*s.Name) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *GetParameterHistoryInput) SetMaxResults(v int64) *GetParameterHistoryInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *GetParameterHistoryInput) SetName(v string) *GetParameterHistoryInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetParameterHistoryInput) SetNextToken(v string) *GetParameterHistoryInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetWithDecryption sets the WithDecryption field's value.\nfunc (s *GetParameterHistoryInput) SetWithDecryption(v bool) *GetParameterHistoryInput {\n\ts.WithDecryption = &v\n\treturn s\n}\n\ntype GetParameterHistoryOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n\n\t// A list of parameters returned by the request.\n\tParameters []*ParameterHistory `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParameterHistoryOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParameterHistoryOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetParameterHistoryOutput) SetNextToken(v string) *GetParameterHistoryOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *GetParameterHistoryOutput) SetParameters(v []*ParameterHistory) *GetParameterHistoryOutput {\n\ts.Parameters = v\n\treturn s\n}\n\ntype GetParameterInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the parameter you want to query.\n\t//\n\t// To query by parameter label, use \"Name\": \"name:label\". To query by parameter\n\t// version, use \"Name\": \"name:version\".\n\t//\n\t// Name is a required field\n\tName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// Return decrypted values for secure string parameters. This flag is ignored\n\t// for String and StringList parameter types.\n\tWithDecryption *bool `type:\"boolean\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParameterInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParameterInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetParameterInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetParameterInput\"}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Name != nil && len(*s.Name) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetName sets the Name field's value.\nfunc (s *GetParameterInput) SetName(v string) *GetParameterInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetWithDecryption sets the WithDecryption field's value.\nfunc (s *GetParameterInput) SetWithDecryption(v bool) *GetParameterInput {\n\ts.WithDecryption = &v\n\treturn s\n}\n\ntype GetParameterOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Information about a parameter.\n\tParameter *Parameter `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParameterOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParameterOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetParameter sets the Parameter field's value.\nfunc (s *GetParameterOutput) SetParameter(v *Parameter) *GetParameterOutput {\n\ts.Parameter = v\n\treturn s\n}\n\ntype GetParametersByPathInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// Filters to limit the request results.\n\t//\n\t// The following Key values are supported for GetParametersByPath: Type, KeyId,\n\t// and Label.\n\t//\n\t// The following Key values aren't supported for GetParametersByPath: tag, DataType,\n\t// Name, Path, and Tier.\n\tParameterFilters []*ParameterStringFilter `type:\"list\"`\n\n\t// The hierarchy for the parameter. Hierarchies start with a forward slash (/).\n\t// The hierarchy is the parameter name except the last part of the parameter.\n\t// For the API call to succeed, the last part of the parameter name can't be\n\t// in the path. A parameter name hierarchy can have a maximum of 15 levels.\n\t// Here is an example of a hierarchy: /Finance/Prod/IAD/WinServ2016/license33\n\t//\n\t// Path is a required field\n\tPath *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// Retrieve all parameters within a hierarchy.\n\t//\n\t// If a user has access to a path, then the user can access all levels of that\n\t// path. For example, if a user has permission to access path /a, then the user\n\t// can also access /a/b. Even if a user has explicitly been denied access in\n\t// IAM for parameter /a/b, they can still call the GetParametersByPath API operation\n\t// recursively for /a and view /a/b.\n\tRecursive *bool `type:\"boolean\"`\n\n\t// Retrieve all parameters in a hierarchy with their value decrypted.\n\tWithDecryption *bool `type:\"boolean\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParametersByPathInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParametersByPathInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetParametersByPathInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetParametersByPathInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Path == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Path\"))\n\t}\n\tif s.Path != nil && len(*s.Path) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Path\", 1))\n\t}\n\tif s.ParameterFilters != nil {\n\t\tfor i, v := range s.ParameterFilters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"ParameterFilters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *GetParametersByPathInput) SetMaxResults(v int64) *GetParametersByPathInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetParametersByPathInput) SetNextToken(v string) *GetParametersByPathInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetParameterFilters sets the ParameterFilters field's value.\nfunc (s *GetParametersByPathInput) SetParameterFilters(v []*ParameterStringFilter) *GetParametersByPathInput {\n\ts.ParameterFilters = v\n\treturn s\n}\n\n// SetPath sets the Path field's value.\nfunc (s *GetParametersByPathInput) SetPath(v string) *GetParametersByPathInput {\n\ts.Path = &v\n\treturn s\n}\n\n// SetRecursive sets the Recursive field's value.\nfunc (s *GetParametersByPathInput) SetRecursive(v bool) *GetParametersByPathInput {\n\ts.Recursive = &v\n\treturn s\n}\n\n// SetWithDecryption sets the WithDecryption field's value.\nfunc (s *GetParametersByPathInput) SetWithDecryption(v bool) *GetParametersByPathInput {\n\ts.WithDecryption = &v\n\treturn s\n}\n\ntype GetParametersByPathOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// A list of parameters found in the specified hierarchy.\n\tParameters []*Parameter `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParametersByPathOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParametersByPathOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetParametersByPathOutput) SetNextToken(v string) *GetParametersByPathOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *GetParametersByPathOutput) SetParameters(v []*Parameter) *GetParametersByPathOutput {\n\ts.Parameters = v\n\treturn s\n}\n\ntype GetParametersInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Names of the parameters for which you want to query information.\n\t//\n\t// To query by parameter label, use \"Name\": \"name:label\". To query by parameter\n\t// version, use \"Name\": \"name:version\".\n\t//\n\t// Names is a required field\n\tNames []*string `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// Return decrypted secure string value. Return decrypted values for secure\n\t// string parameters. This flag is ignored for String and StringList parameter\n\t// types.\n\tWithDecryption *bool `type:\"boolean\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParametersInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParametersInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetParametersInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetParametersInput\"}\n\tif s.Names == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Names\"))\n\t}\n\tif s.Names != nil && len(s.Names) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Names\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetNames sets the Names field's value.\nfunc (s *GetParametersInput) SetNames(v []*string) *GetParametersInput {\n\ts.Names = v\n\treturn s\n}\n\n// SetWithDecryption sets the WithDecryption field's value.\nfunc (s *GetParametersInput) SetWithDecryption(v bool) *GetParametersInput {\n\ts.WithDecryption = &v\n\treturn s\n}\n\ntype GetParametersOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A list of parameters that aren't formatted correctly or don't run during\n\t// an execution.\n\tInvalidParameters []*string `min:\"1\" type:\"list\"`\n\n\t// A list of details for a parameter.\n\tParameters []*Parameter `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParametersOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetParametersOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetInvalidParameters sets the InvalidParameters field's value.\nfunc (s *GetParametersOutput) SetInvalidParameters(v []*string) *GetParametersOutput {\n\ts.InvalidParameters = v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *GetParametersOutput) SetParameters(v []*Parameter) *GetParametersOutput {\n\ts.Parameters = v\n\treturn s\n}\n\ntype GetPatchBaselineForPatchGroupInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Returns the operating system rule specified for patch groups using the patch\n\t// baseline.\n\tOperatingSystem *string `type:\"string\" enum:\"OperatingSystem\"`\n\n\t// The name of the patch group whose patch baseline should be retrieved.\n\t//\n\t// PatchGroup is a required field\n\tPatchGroup *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetPatchBaselineForPatchGroupInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetPatchBaselineForPatchGroupInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetPatchBaselineForPatchGroupInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetPatchBaselineForPatchGroupInput\"}\n\tif s.PatchGroup == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PatchGroup\"))\n\t}\n\tif s.PatchGroup != nil && len(*s.PatchGroup) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"PatchGroup\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetOperatingSystem sets the OperatingSystem field's value.\nfunc (s *GetPatchBaselineForPatchGroupInput) SetOperatingSystem(v string) *GetPatchBaselineForPatchGroupInput {\n\ts.OperatingSystem = &v\n\treturn s\n}\n\n// SetPatchGroup sets the PatchGroup field's value.\nfunc (s *GetPatchBaselineForPatchGroupInput) SetPatchGroup(v string) *GetPatchBaselineForPatchGroupInput {\n\ts.PatchGroup = &v\n\treturn s\n}\n\ntype GetPatchBaselineForPatchGroupOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the patch baseline that should be used for the patch group.\n\tBaselineId *string `min:\"20\" type:\"string\"`\n\n\t// The operating system rule specified for patch groups using the patch baseline.\n\tOperatingSystem *string `type:\"string\" enum:\"OperatingSystem\"`\n\n\t// The name of the patch group.\n\tPatchGroup *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetPatchBaselineForPatchGroupOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetPatchBaselineForPatchGroupOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *GetPatchBaselineForPatchGroupOutput) SetBaselineId(v string) *GetPatchBaselineForPatchGroupOutput {\n\ts.BaselineId = &v\n\treturn s\n}\n\n// SetOperatingSystem sets the OperatingSystem field's value.\nfunc (s *GetPatchBaselineForPatchGroupOutput) SetOperatingSystem(v string) *GetPatchBaselineForPatchGroupOutput {\n\ts.OperatingSystem = &v\n\treturn s\n}\n\n// SetPatchGroup sets the PatchGroup field's value.\nfunc (s *GetPatchBaselineForPatchGroupOutput) SetPatchGroup(v string) *GetPatchBaselineForPatchGroupOutput {\n\ts.PatchGroup = &v\n\treturn s\n}\n\ntype GetPatchBaselineInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the patch baseline to retrieve.\n\t//\n\t// To retrieve information about an Amazon Web Services managed patch baseline,\n\t// specify the full Amazon Resource Name (ARN) of the baseline. For example,\n\t// for the baseline AWS-AmazonLinuxDefaultPatchBaseline, specify arn:aws:ssm:us-east-2:733109147000:patchbaseline/pb-0e392de35e7c563b7\n\t// instead of pb-0e392de35e7c563b7.\n\t//\n\t// BaselineId is a required field\n\tBaselineId *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetPatchBaselineInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetPatchBaselineInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetPatchBaselineInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetPatchBaselineInput\"}\n\tif s.BaselineId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"BaselineId\"))\n\t}\n\tif s.BaselineId != nil && len(*s.BaselineId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"BaselineId\", 20))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *GetPatchBaselineInput) SetBaselineId(v string) *GetPatchBaselineInput {\n\ts.BaselineId = &v\n\treturn s\n}\n\ntype GetPatchBaselineOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A set of rules used to include patches in the baseline.\n\tApprovalRules *PatchRuleGroup `type:\"structure\"`\n\n\t// A list of explicitly approved patches for the baseline.\n\tApprovedPatches []*string `type:\"list\"`\n\n\t// Returns the specified compliance severity level for approved patches in the\n\t// patch baseline.\n\tApprovedPatchesComplianceLevel *string `type:\"string\" enum:\"PatchComplianceLevel\"`\n\n\t// Indicates whether the list of approved patches includes non-security updates\n\t// that should be applied to the managed nodes. The default value is false.\n\t// Applies to Linux managed nodes only.\n\tApprovedPatchesEnableNonSecurity *bool `type:\"boolean\"`\n\n\t// The ID of the retrieved patch baseline.\n\tBaselineId *string `min:\"20\" type:\"string\"`\n\n\t// The date the patch baseline was created.\n\tCreatedDate *time.Time `type:\"timestamp\"`\n\n\t// A description of the patch baseline.\n\tDescription *string `min:\"1\" type:\"string\"`\n\n\t// A set of global filters used to exclude patches from the baseline.\n\tGlobalFilters *PatchFilterGroup `type:\"structure\"`\n\n\t// The date the patch baseline was last modified.\n\tModifiedDate *time.Time `type:\"timestamp\"`\n\n\t// The name of the patch baseline.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// Returns the operating system specified for the patch baseline.\n\tOperatingSystem *string `type:\"string\" enum:\"OperatingSystem\"`\n\n\t// Patch groups included in the patch baseline.\n\tPatchGroups []*string `type:\"list\"`\n\n\t// A list of explicitly rejected patches for the baseline.\n\tRejectedPatches []*string `type:\"list\"`\n\n\t// The action specified to take on patches included in the RejectedPatches list.\n\t// A patch can be allowed only if it is a dependency of another package, or\n\t// blocked entirely along with packages that include it as a dependency.\n\tRejectedPatchesAction *string `type:\"string\" enum:\"PatchAction\"`\n\n\t// Information about the patches to use to update the managed nodes, including\n\t// target operating systems and source repositories. Applies to Linux managed\n\t// nodes only.\n\tSources []*PatchSource `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetPatchBaselineOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetPatchBaselineOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetApprovalRules sets the ApprovalRules field's value.\nfunc (s *GetPatchBaselineOutput) SetApprovalRules(v *PatchRuleGroup) *GetPatchBaselineOutput {\n\ts.ApprovalRules = v\n\treturn s\n}\n\n// SetApprovedPatches sets the ApprovedPatches field's value.\nfunc (s *GetPatchBaselineOutput) SetApprovedPatches(v []*string) *GetPatchBaselineOutput {\n\ts.ApprovedPatches = v\n\treturn s\n}\n\n// SetApprovedPatchesComplianceLevel sets the ApprovedPatchesComplianceLevel field's value.\nfunc (s *GetPatchBaselineOutput) SetApprovedPatchesComplianceLevel(v string) *GetPatchBaselineOutput {\n\ts.ApprovedPatchesComplianceLevel = &v\n\treturn s\n}\n\n// SetApprovedPatchesEnableNonSecurity sets the ApprovedPatchesEnableNonSecurity field's value.\nfunc (s *GetPatchBaselineOutput) SetApprovedPatchesEnableNonSecurity(v bool) *GetPatchBaselineOutput {\n\ts.ApprovedPatchesEnableNonSecurity = &v\n\treturn s\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *GetPatchBaselineOutput) SetBaselineId(v string) *GetPatchBaselineOutput {\n\ts.BaselineId = &v\n\treturn s\n}\n\n// SetCreatedDate sets the CreatedDate field's value.\nfunc (s *GetPatchBaselineOutput) SetCreatedDate(v time.Time) *GetPatchBaselineOutput {\n\ts.CreatedDate = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *GetPatchBaselineOutput) SetDescription(v string) *GetPatchBaselineOutput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetGlobalFilters sets the GlobalFilters field's value.\nfunc (s *GetPatchBaselineOutput) SetGlobalFilters(v *PatchFilterGroup) *GetPatchBaselineOutput {\n\ts.GlobalFilters = v\n\treturn s\n}\n\n// SetModifiedDate sets the ModifiedDate field's value.\nfunc (s *GetPatchBaselineOutput) SetModifiedDate(v time.Time) *GetPatchBaselineOutput {\n\ts.ModifiedDate = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *GetPatchBaselineOutput) SetName(v string) *GetPatchBaselineOutput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOperatingSystem sets the OperatingSystem field's value.\nfunc (s *GetPatchBaselineOutput) SetOperatingSystem(v string) *GetPatchBaselineOutput {\n\ts.OperatingSystem = &v\n\treturn s\n}\n\n// SetPatchGroups sets the PatchGroups field's value.\nfunc (s *GetPatchBaselineOutput) SetPatchGroups(v []*string) *GetPatchBaselineOutput {\n\ts.PatchGroups = v\n\treturn s\n}\n\n// SetRejectedPatches sets the RejectedPatches field's value.\nfunc (s *GetPatchBaselineOutput) SetRejectedPatches(v []*string) *GetPatchBaselineOutput {\n\ts.RejectedPatches = v\n\treturn s\n}\n\n// SetRejectedPatchesAction sets the RejectedPatchesAction field's value.\nfunc (s *GetPatchBaselineOutput) SetRejectedPatchesAction(v string) *GetPatchBaselineOutput {\n\ts.RejectedPatchesAction = &v\n\treturn s\n}\n\n// SetSources sets the Sources field's value.\nfunc (s *GetPatchBaselineOutput) SetSources(v []*PatchSource) *GetPatchBaselineOutput {\n\ts.Sources = v\n\treturn s\n}\n\ntype GetResourcePoliciesInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// Amazon Resource Name (ARN) of the resource to which the policies are attached.\n\t//\n\t// ResourceArn is a required field\n\tResourceArn *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetResourcePoliciesInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetResourcePoliciesInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetResourcePoliciesInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetResourcePoliciesInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.ResourceArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceArn\"))\n\t}\n\tif s.ResourceArn != nil && len(*s.ResourceArn) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ResourceArn\", 20))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *GetResourcePoliciesInput) SetMaxResults(v int64) *GetResourcePoliciesInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetResourcePoliciesInput) SetNextToken(v string) *GetResourcePoliciesInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetResourceArn sets the ResourceArn field's value.\nfunc (s *GetResourcePoliciesInput) SetResourceArn(v string) *GetResourcePoliciesInput {\n\ts.ResourceArn = &v\n\treturn s\n}\n\ntype GetResourcePoliciesOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// An array of the Policy object.\n\tPolicies []*GetResourcePoliciesResponseEntry `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetResourcePoliciesOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetResourcePoliciesOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *GetResourcePoliciesOutput) SetNextToken(v string) *GetResourcePoliciesOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetPolicies sets the Policies field's value.\nfunc (s *GetResourcePoliciesOutput) SetPolicies(v []*GetResourcePoliciesResponseEntry) *GetResourcePoliciesOutput {\n\ts.Policies = v\n\treturn s\n}\n\n// A resource policy helps you to define the IAM entity (for example, an Amazon\n// Web Services account) that can manage your Systems Manager resources. Currently,\n// OpsItemGroup is the only resource that supports Systems Manager resource\n// policies. The resource policy for OpsItemGroup enables Amazon Web Services\n// accounts to view and interact with OpsCenter operational work items (OpsItems).\ntype GetResourcePoliciesResponseEntry struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A resource policy helps you to define the IAM entity (for example, an Amazon\n\t// Web Services account) that can manage your Systems Manager resources. Currently,\n\t// OpsItemGroup is the only resource that supports Systems Manager resource\n\t// policies. The resource policy for OpsItemGroup enables Amazon Web Services\n\t// accounts to view and interact with OpsCenter operational work items (OpsItems).\n\tPolicy *string `type:\"string\"`\n\n\t// ID of the current policy version. The hash helps to prevent a situation where\n\t// multiple users attempt to overwrite a policy. You must provide this hash\n\t// when updating or deleting a policy.\n\tPolicyHash *string `type:\"string\"`\n\n\t// A policy ID.\n\tPolicyId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetResourcePoliciesResponseEntry) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetResourcePoliciesResponseEntry) GoString() string {\n\treturn s.String()\n}\n\n// SetPolicy sets the Policy field's value.\nfunc (s *GetResourcePoliciesResponseEntry) SetPolicy(v string) *GetResourcePoliciesResponseEntry {\n\ts.Policy = &v\n\treturn s\n}\n\n// SetPolicyHash sets the PolicyHash field's value.\nfunc (s *GetResourcePoliciesResponseEntry) SetPolicyHash(v string) *GetResourcePoliciesResponseEntry {\n\ts.PolicyHash = &v\n\treturn s\n}\n\n// SetPolicyId sets the PolicyId field's value.\nfunc (s *GetResourcePoliciesResponseEntry) SetPolicyId(v string) *GetResourcePoliciesResponseEntry {\n\ts.PolicyId = &v\n\treturn s\n}\n\n// The request body of the GetServiceSetting API operation.\ntype GetServiceSettingInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the service setting to get. The setting ID can be one of the following.\n\t//\n\t//    * /ssm/managed-instance/default-ec2-instance-management-role\n\t//\n\t//    * /ssm/automation/customer-script-log-destination\n\t//\n\t//    * /ssm/automation/customer-script-log-group-name\n\t//\n\t//    * /ssm/documents/console/public-sharing-permission\n\t//\n\t//    * /ssm/managed-instance/activation-tier\n\t//\n\t//    * /ssm/opsinsights/opscenter\n\t//\n\t//    * /ssm/parameter-store/default-parameter-tier\n\t//\n\t//    * /ssm/parameter-store/high-throughput-enabled\n\t//\n\t// SettingId is a required field\n\tSettingId *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetServiceSettingInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetServiceSettingInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetServiceSettingInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetServiceSettingInput\"}\n\tif s.SettingId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SettingId\"))\n\t}\n\tif s.SettingId != nil && len(*s.SettingId) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SettingId\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetSettingId sets the SettingId field's value.\nfunc (s *GetServiceSettingInput) SetSettingId(v string) *GetServiceSettingInput {\n\ts.SettingId = &v\n\treturn s\n}\n\n// The query result body of the GetServiceSetting API operation.\ntype GetServiceSettingOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The query result of the current service setting.\n\tServiceSetting *ServiceSetting `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetServiceSettingOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetServiceSettingOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetServiceSetting sets the ServiceSetting field's value.\nfunc (s *GetServiceSettingOutput) SetServiceSetting(v *ServiceSetting) *GetServiceSettingOutput {\n\ts.ServiceSetting = v\n\treturn s\n}\n\n// A hierarchy can have a maximum of 15 levels. For more information, see Requirements\n// and constraints for parameter names (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-parameter-name-constraints.html)\n// in the Amazon Web Services Systems Manager User Guide.\ntype HierarchyLevelLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// A hierarchy can have a maximum of 15 levels. For more information, see Requirements\n\t// and constraints for parameter names (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-parameter-name-constraints.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s HierarchyLevelLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s HierarchyLevelLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorHierarchyLevelLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &HierarchyLevelLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *HierarchyLevelLimitExceededException) Code() string {\n\treturn \"HierarchyLevelLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *HierarchyLevelLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *HierarchyLevelLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *HierarchyLevelLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *HierarchyLevelLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *HierarchyLevelLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Parameter Store doesn't support changing a parameter type in a hierarchy.\n// For example, you can't change a parameter from a String type to a SecureString\n// type. You must create a new, unique parameter.\ntype HierarchyTypeMismatchException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Parameter Store doesn't support changing a parameter type in a hierarchy.\n\t// For example, you can't change a parameter from a String type to a SecureString\n\t// type. You must create a new, unique parameter.\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s HierarchyTypeMismatchException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s HierarchyTypeMismatchException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorHierarchyTypeMismatchException(v protocol.ResponseMetadata) error {\n\treturn &HierarchyTypeMismatchException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *HierarchyTypeMismatchException) Code() string {\n\treturn \"HierarchyTypeMismatchException\"\n}\n\n// Message returns the exception's message.\nfunc (s *HierarchyTypeMismatchException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *HierarchyTypeMismatchException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *HierarchyTypeMismatchException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *HierarchyTypeMismatchException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *HierarchyTypeMismatchException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Error returned when an idempotent operation is retried and the parameters\n// don't match the original call to the API with the same idempotency token.\ntype IdempotentParameterMismatch struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s IdempotentParameterMismatch) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s IdempotentParameterMismatch) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorIdempotentParameterMismatch(v protocol.ResponseMetadata) error {\n\treturn &IdempotentParameterMismatch{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *IdempotentParameterMismatch) Code() string {\n\treturn \"IdempotentParameterMismatch\"\n}\n\n// Message returns the exception's message.\nfunc (s *IdempotentParameterMismatch) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *IdempotentParameterMismatch) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *IdempotentParameterMismatch) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *IdempotentParameterMismatch) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *IdempotentParameterMismatch) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// There is a conflict in the policies specified for this parameter. You can't,\n// for example, specify two Expiration policies for a parameter. Review your\n// policies, and try again.\ntype IncompatiblePolicyException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s IncompatiblePolicyException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s IncompatiblePolicyException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorIncompatiblePolicyException(v protocol.ResponseMetadata) error {\n\treturn &IncompatiblePolicyException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *IncompatiblePolicyException) Code() string {\n\treturn \"IncompatiblePolicyException\"\n}\n\n// Message returns the exception's message.\nfunc (s *IncompatiblePolicyException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *IncompatiblePolicyException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *IncompatiblePolicyException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *IncompatiblePolicyException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *IncompatiblePolicyException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Status information about the aggregated associations.\ntype InstanceAggregatedAssociationOverview struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Detailed status information about the aggregated associations.\n\tDetailedStatus *string `type:\"string\"`\n\n\t// The number of associations for the managed node(s).\n\tInstanceAssociationStatusAggregatedCount map[string]*int64 `type:\"map\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceAggregatedAssociationOverview) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceAggregatedAssociationOverview) GoString() string {\n\treturn s.String()\n}\n\n// SetDetailedStatus sets the DetailedStatus field's value.\nfunc (s *InstanceAggregatedAssociationOverview) SetDetailedStatus(v string) *InstanceAggregatedAssociationOverview {\n\ts.DetailedStatus = &v\n\treturn s\n}\n\n// SetInstanceAssociationStatusAggregatedCount sets the InstanceAssociationStatusAggregatedCount field's value.\nfunc (s *InstanceAggregatedAssociationOverview) SetInstanceAssociationStatusAggregatedCount(v map[string]*int64) *InstanceAggregatedAssociationOverview {\n\ts.InstanceAssociationStatusAggregatedCount = v\n\treturn s\n}\n\n// One or more association documents on the managed node.\ntype InstanceAssociation struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The association ID.\n\tAssociationId *string `type:\"string\"`\n\n\t// Version information for the association on the managed node.\n\tAssociationVersion *string `type:\"string\"`\n\n\t// The content of the association document for the managed node(s).\n\tContent *string `min:\"1\" type:\"string\"`\n\n\t// The managed node ID.\n\tInstanceId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceAssociation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceAssociation) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *InstanceAssociation) SetAssociationId(v string) *InstanceAssociation {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetAssociationVersion sets the AssociationVersion field's value.\nfunc (s *InstanceAssociation) SetAssociationVersion(v string) *InstanceAssociation {\n\ts.AssociationVersion = &v\n\treturn s\n}\n\n// SetContent sets the Content field's value.\nfunc (s *InstanceAssociation) SetContent(v string) *InstanceAssociation {\n\ts.Content = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *InstanceAssociation) SetInstanceId(v string) *InstanceAssociation {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// An S3 bucket where you want to store the results of this request.\n//\n// For the minimal permissions required to enable Amazon S3 output for an association,\n// see Creating associations (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-state-assoc.html)\n// in the Systems Manager User Guide.\ntype InstanceAssociationOutputLocation struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// An S3 bucket where you want to store the results of this request.\n\tS3Location *S3OutputLocation `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceAssociationOutputLocation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceAssociationOutputLocation) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *InstanceAssociationOutputLocation) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"InstanceAssociationOutputLocation\"}\n\tif s.S3Location != nil {\n\t\tif err := s.S3Location.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"S3Location\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetS3Location sets the S3Location field's value.\nfunc (s *InstanceAssociationOutputLocation) SetS3Location(v *S3OutputLocation) *InstanceAssociationOutputLocation {\n\ts.S3Location = v\n\treturn s\n}\n\n// The URL of S3 bucket where you want to store the results of this request.\ntype InstanceAssociationOutputUrl struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The URL of S3 bucket where you want to store the results of this request.\n\tS3OutputUrl *S3OutputUrl `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceAssociationOutputUrl) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceAssociationOutputUrl) GoString() string {\n\treturn s.String()\n}\n\n// SetS3OutputUrl sets the S3OutputUrl field's value.\nfunc (s *InstanceAssociationOutputUrl) SetS3OutputUrl(v *S3OutputUrl) *InstanceAssociationOutputUrl {\n\ts.S3OutputUrl = v\n\treturn s\n}\n\n// Status information about the association.\ntype InstanceAssociationStatusInfo struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The association ID.\n\tAssociationId *string `type:\"string\"`\n\n\t// The name of the association applied to the managed node.\n\tAssociationName *string `type:\"string\"`\n\n\t// The version of the association applied to the managed node.\n\tAssociationVersion *string `type:\"string\"`\n\n\t// Detailed status information about the association.\n\tDetailedStatus *string `type:\"string\"`\n\n\t// The association document versions.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// An error code returned by the request to create the association.\n\tErrorCode *string `type:\"string\"`\n\n\t// The date the association ran.\n\tExecutionDate *time.Time `type:\"timestamp\"`\n\n\t// Summary information about association execution.\n\tExecutionSummary *string `min:\"1\" type:\"string\"`\n\n\t// The managed node ID where the association was created.\n\tInstanceId *string `type:\"string\"`\n\n\t// The name of the association.\n\tName *string `type:\"string\"`\n\n\t// A URL for an S3 bucket where you want to store the results of this request.\n\tOutputUrl *InstanceAssociationOutputUrl `type:\"structure\"`\n\n\t// Status information about the association.\n\tStatus *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceAssociationStatusInfo) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceAssociationStatusInfo) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *InstanceAssociationStatusInfo) SetAssociationId(v string) *InstanceAssociationStatusInfo {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetAssociationName sets the AssociationName field's value.\nfunc (s *InstanceAssociationStatusInfo) SetAssociationName(v string) *InstanceAssociationStatusInfo {\n\ts.AssociationName = &v\n\treturn s\n}\n\n// SetAssociationVersion sets the AssociationVersion field's value.\nfunc (s *InstanceAssociationStatusInfo) SetAssociationVersion(v string) *InstanceAssociationStatusInfo {\n\ts.AssociationVersion = &v\n\treturn s\n}\n\n// SetDetailedStatus sets the DetailedStatus field's value.\nfunc (s *InstanceAssociationStatusInfo) SetDetailedStatus(v string) *InstanceAssociationStatusInfo {\n\ts.DetailedStatus = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *InstanceAssociationStatusInfo) SetDocumentVersion(v string) *InstanceAssociationStatusInfo {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetErrorCode sets the ErrorCode field's value.\nfunc (s *InstanceAssociationStatusInfo) SetErrorCode(v string) *InstanceAssociationStatusInfo {\n\ts.ErrorCode = &v\n\treturn s\n}\n\n// SetExecutionDate sets the ExecutionDate field's value.\nfunc (s *InstanceAssociationStatusInfo) SetExecutionDate(v time.Time) *InstanceAssociationStatusInfo {\n\ts.ExecutionDate = &v\n\treturn s\n}\n\n// SetExecutionSummary sets the ExecutionSummary field's value.\nfunc (s *InstanceAssociationStatusInfo) SetExecutionSummary(v string) *InstanceAssociationStatusInfo {\n\ts.ExecutionSummary = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *InstanceAssociationStatusInfo) SetInstanceId(v string) *InstanceAssociationStatusInfo {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *InstanceAssociationStatusInfo) SetName(v string) *InstanceAssociationStatusInfo {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOutputUrl sets the OutputUrl field's value.\nfunc (s *InstanceAssociationStatusInfo) SetOutputUrl(v *InstanceAssociationOutputUrl) *InstanceAssociationStatusInfo {\n\ts.OutputUrl = v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *InstanceAssociationStatusInfo) SetStatus(v string) *InstanceAssociationStatusInfo {\n\ts.Status = &v\n\treturn s\n}\n\n// Describes a filter for a specific list of managed nodes.\ntype InstanceInformation struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The activation ID created by Amazon Web Services Systems Manager when the\n\t// server or virtual machine (VM) was registered.\n\tActivationId *string `type:\"string\"`\n\n\t// The version of SSM Agent running on your Linux managed node.\n\tAgentVersion *string `type:\"string\"`\n\n\t// Information about the association.\n\tAssociationOverview *InstanceAggregatedAssociationOverview `type:\"structure\"`\n\n\t// The status of the association.\n\tAssociationStatus *string `type:\"string\"`\n\n\t// The fully qualified host name of the managed node.\n\tComputerName *string `min:\"1\" type:\"string\"`\n\n\t// The IP address of the managed node.\n\tIPAddress *string `min:\"1\" type:\"string\"`\n\n\t// The Identity and Access Management (IAM) role assigned to the on-premises\n\t// Systems Manager managed node. This call doesn't return the IAM role for Amazon\n\t// Elastic Compute Cloud (Amazon EC2) instances. To retrieve the IAM role for\n\t// an EC2 instance, use the Amazon EC2 DescribeInstances operation. For information,\n\t// see DescribeInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html)\n\t// in the Amazon EC2 API Reference or describe-instances (https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)\n\t// in the Amazon Web Services CLI Command Reference.\n\tIamRole *string `type:\"string\"`\n\n\t// The managed node ID.\n\tInstanceId *string `type:\"string\"`\n\n\t// Indicates whether the latest version of SSM Agent is running on your Linux\n\t// managed node. This field doesn't indicate whether or not the latest version\n\t// is installed on Windows managed nodes, because some older versions of Windows\n\t// Server use the EC2Config service to process Systems Manager requests.\n\tIsLatestVersion *bool `type:\"boolean\"`\n\n\t// The date the association was last run.\n\tLastAssociationExecutionDate *time.Time `type:\"timestamp\"`\n\n\t// The date and time when the agent last pinged the Systems Manager service.\n\tLastPingDateTime *time.Time `type:\"timestamp\"`\n\n\t// The last date the association was successfully run.\n\tLastSuccessfulAssociationExecutionDate *time.Time `type:\"timestamp\"`\n\n\t// The name assigned to an on-premises server, edge device, or virtual machine\n\t// (VM) when it is activated as a Systems Manager managed node. The name is\n\t// specified as the DefaultInstanceName property using the CreateActivation\n\t// command. It is applied to the managed node by specifying the Activation Code\n\t// and Activation ID when you install SSM Agent on the node, as explained in\n\t// Install SSM Agent for a hybrid environment (Linux) (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-managed-linux.html)\n\t// and Install SSM Agent for a hybrid environment (Windows) (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-managed-win.html).\n\t// To retrieve the Name tag of an EC2 instance, use the Amazon EC2 DescribeInstances\n\t// operation. For information, see DescribeInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html)\n\t// in the Amazon EC2 API Reference or describe-instances (https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)\n\t// in the Amazon Web Services CLI Command Reference.\n\tName *string `type:\"string\"`\n\n\t// Connection status of SSM Agent.\n\t//\n\t// The status Inactive has been deprecated and is no longer in use.\n\tPingStatus *string `type:\"string\" enum:\"PingStatus\"`\n\n\t// The name of the operating system platform running on your managed node.\n\tPlatformName *string `type:\"string\"`\n\n\t// The operating system platform type.\n\tPlatformType *string `type:\"string\" enum:\"PlatformType\"`\n\n\t// The version of the OS platform running on your managed node.\n\tPlatformVersion *string `type:\"string\"`\n\n\t// The date the server or VM was registered with Amazon Web Services as a managed\n\t// node.\n\tRegistrationDate *time.Time `type:\"timestamp\"`\n\n\t// The type of instance. Instances are either EC2 instances or managed instances.\n\tResourceType *string `type:\"string\" enum:\"ResourceType\"`\n\n\t// The ID of the source resource. For IoT Greengrass devices, SourceId is the\n\t// Thing name.\n\tSourceId *string `type:\"string\"`\n\n\t// The type of the source resource. For IoT Greengrass devices, SourceType is\n\t// AWS::IoT::Thing.\n\tSourceType *string `type:\"string\" enum:\"SourceType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceInformation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceInformation) GoString() string {\n\treturn s.String()\n}\n\n// SetActivationId sets the ActivationId field's value.\nfunc (s *InstanceInformation) SetActivationId(v string) *InstanceInformation {\n\ts.ActivationId = &v\n\treturn s\n}\n\n// SetAgentVersion sets the AgentVersion field's value.\nfunc (s *InstanceInformation) SetAgentVersion(v string) *InstanceInformation {\n\ts.AgentVersion = &v\n\treturn s\n}\n\n// SetAssociationOverview sets the AssociationOverview field's value.\nfunc (s *InstanceInformation) SetAssociationOverview(v *InstanceAggregatedAssociationOverview) *InstanceInformation {\n\ts.AssociationOverview = v\n\treturn s\n}\n\n// SetAssociationStatus sets the AssociationStatus field's value.\nfunc (s *InstanceInformation) SetAssociationStatus(v string) *InstanceInformation {\n\ts.AssociationStatus = &v\n\treturn s\n}\n\n// SetComputerName sets the ComputerName field's value.\nfunc (s *InstanceInformation) SetComputerName(v string) *InstanceInformation {\n\ts.ComputerName = &v\n\treturn s\n}\n\n// SetIPAddress sets the IPAddress field's value.\nfunc (s *InstanceInformation) SetIPAddress(v string) *InstanceInformation {\n\ts.IPAddress = &v\n\treturn s\n}\n\n// SetIamRole sets the IamRole field's value.\nfunc (s *InstanceInformation) SetIamRole(v string) *InstanceInformation {\n\ts.IamRole = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *InstanceInformation) SetInstanceId(v string) *InstanceInformation {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetIsLatestVersion sets the IsLatestVersion field's value.\nfunc (s *InstanceInformation) SetIsLatestVersion(v bool) *InstanceInformation {\n\ts.IsLatestVersion = &v\n\treturn s\n}\n\n// SetLastAssociationExecutionDate sets the LastAssociationExecutionDate field's value.\nfunc (s *InstanceInformation) SetLastAssociationExecutionDate(v time.Time) *InstanceInformation {\n\ts.LastAssociationExecutionDate = &v\n\treturn s\n}\n\n// SetLastPingDateTime sets the LastPingDateTime field's value.\nfunc (s *InstanceInformation) SetLastPingDateTime(v time.Time) *InstanceInformation {\n\ts.LastPingDateTime = &v\n\treturn s\n}\n\n// SetLastSuccessfulAssociationExecutionDate sets the LastSuccessfulAssociationExecutionDate field's value.\nfunc (s *InstanceInformation) SetLastSuccessfulAssociationExecutionDate(v time.Time) *InstanceInformation {\n\ts.LastSuccessfulAssociationExecutionDate = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *InstanceInformation) SetName(v string) *InstanceInformation {\n\ts.Name = &v\n\treturn s\n}\n\n// SetPingStatus sets the PingStatus field's value.\nfunc (s *InstanceInformation) SetPingStatus(v string) *InstanceInformation {\n\ts.PingStatus = &v\n\treturn s\n}\n\n// SetPlatformName sets the PlatformName field's value.\nfunc (s *InstanceInformation) SetPlatformName(v string) *InstanceInformation {\n\ts.PlatformName = &v\n\treturn s\n}\n\n// SetPlatformType sets the PlatformType field's value.\nfunc (s *InstanceInformation) SetPlatformType(v string) *InstanceInformation {\n\ts.PlatformType = &v\n\treturn s\n}\n\n// SetPlatformVersion sets the PlatformVersion field's value.\nfunc (s *InstanceInformation) SetPlatformVersion(v string) *InstanceInformation {\n\ts.PlatformVersion = &v\n\treturn s\n}\n\n// SetRegistrationDate sets the RegistrationDate field's value.\nfunc (s *InstanceInformation) SetRegistrationDate(v time.Time) *InstanceInformation {\n\ts.RegistrationDate = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *InstanceInformation) SetResourceType(v string) *InstanceInformation {\n\ts.ResourceType = &v\n\treturn s\n}\n\n// SetSourceId sets the SourceId field's value.\nfunc (s *InstanceInformation) SetSourceId(v string) *InstanceInformation {\n\ts.SourceId = &v\n\treturn s\n}\n\n// SetSourceType sets the SourceType field's value.\nfunc (s *InstanceInformation) SetSourceType(v string) *InstanceInformation {\n\ts.SourceType = &v\n\treturn s\n}\n\n// Describes a filter for a specific list of managed nodes. You can filter node\n// information by using tags. You specify tags by using a key-value mapping.\n//\n// Use this operation instead of the DescribeInstanceInformationRequest$InstanceInformationFilterList\n// method. The InstanceInformationFilterList method is a legacy method and doesn't\n// support tags.\ntype InstanceInformationFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter.\n\t//\n\t// Key is a required field\n\tKey *string `locationName:\"key\" type:\"string\" required:\"true\" enum:\"InstanceInformationFilterKey\"`\n\n\t// The filter values.\n\t//\n\t// ValueSet is a required field\n\tValueSet []*string `locationName:\"valueSet\" min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceInformationFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceInformationFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *InstanceInformationFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"InstanceInformationFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.ValueSet == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ValueSet\"))\n\t}\n\tif s.ValueSet != nil && len(s.ValueSet) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ValueSet\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *InstanceInformationFilter) SetKey(v string) *InstanceInformationFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValueSet sets the ValueSet field's value.\nfunc (s *InstanceInformationFilter) SetValueSet(v []*string) *InstanceInformationFilter {\n\ts.ValueSet = v\n\treturn s\n}\n\n// The filters to describe or get information about your managed nodes.\ntype InstanceInformationStringFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The filter key name to describe your managed nodes.\n\t//\n\t// Valid filter key values: ActivationIds | AgentVersion | AssociationStatus\n\t// | IamRole | InstanceIds | PingStatus | PlatformTypes | ResourceType | SourceIds\n\t// | SourceTypes | \"tag-key\" | \"tag:{keyname}\n\t//\n\t//    * Valid values for the AssociationStatus filter key: Success | Pending\n\t//    | Failed\n\t//\n\t//    * Valid values for the PingStatus filter key: Online | ConnectionLost\n\t//    | Inactive (deprecated)\n\t//\n\t//    * Valid values for the PlatformType filter key: Windows | Linux | MacOS\n\t//\n\t//    * Valid values for the ResourceType filter key: EC2Instance | ManagedInstance\n\t//\n\t//    * Valid values for the SourceType filter key: AWS::EC2::Instance | AWS::SSM::ManagedInstance\n\t//    | AWS::IoT::Thing\n\t//\n\t//    * Valid tag examples: Key=tag-key,Values=Purpose | Key=tag:Purpose,Values=Test.\n\t//\n\t// Key is a required field\n\tKey *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The filter values.\n\t//\n\t// Values is a required field\n\tValues []*string `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceInformationStringFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstanceInformationStringFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *InstanceInformationStringFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"InstanceInformationStringFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\tif s.Values == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Values\"))\n\t}\n\tif s.Values != nil && len(s.Values) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Values\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *InstanceInformationStringFilter) SetKey(v string) *InstanceInformationStringFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *InstanceInformationStringFilter) SetValues(v []*string) *InstanceInformationStringFilter {\n\ts.Values = v\n\treturn s\n}\n\n// Defines the high-level patch compliance state for a managed node, providing\n// information about the number of installed, missing, not applicable, and failed\n// patches along with metadata about the operation when this information was\n// gathered for the managed node.\ntype InstancePatchState struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the patch baseline used to patch the managed node.\n\t//\n\t// BaselineId is a required field\n\tBaselineId *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// The number of patches per node that are specified as Critical for compliance\n\t// reporting in the patch baseline aren't installed. These patches might be\n\t// missing, have failed installation, were rejected, or were installed but awaiting\n\t// a required managed node reboot. The status of these managed nodes is NON_COMPLIANT.\n\tCriticalNonCompliantCount *int64 `type:\"integer\"`\n\n\t// The number of patches from the patch baseline that were attempted to be installed\n\t// during the last patching operation, but failed to install.\n\tFailedCount *int64 `type:\"integer\"`\n\n\t// An https URL or an Amazon Simple Storage Service (Amazon S3) path-style URL\n\t// to a list of patches to be installed. This patch installation list, which\n\t// you maintain in an S3 bucket in YAML format and specify in the SSM document\n\t// AWS-RunPatchBaseline, overrides the patches specified by the default patch\n\t// baseline.\n\t//\n\t// For more information about the InstallOverrideList parameter, see About the\n\t// AWS-RunPatchBaseline (https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-about-aws-runpatchbaseline.html)\n\t// SSM document in the Amazon Web Services Systems Manager User Guide.\n\tInstallOverrideList *string `min:\"1\" type:\"string\"`\n\n\t// The number of patches from the patch baseline that are installed on the managed\n\t// node.\n\tInstalledCount *int64 `type:\"integer\"`\n\n\t// The number of patches not specified in the patch baseline that are installed\n\t// on the managed node.\n\tInstalledOtherCount *int64 `type:\"integer\"`\n\n\t// The number of patches installed by Patch Manager since the last time the\n\t// managed node was rebooted.\n\tInstalledPendingRebootCount *int64 `type:\"integer\"`\n\n\t// The number of patches installed on a managed node that are specified in a\n\t// RejectedPatches list. Patches with a status of InstalledRejected were typically\n\t// installed before they were added to a RejectedPatches list.\n\t//\n\t// If ALLOW_AS_DEPENDENCY is the specified option for RejectedPatchesAction,\n\t// the value of InstalledRejectedCount will always be 0 (zero).\n\tInstalledRejectedCount *int64 `type:\"integer\"`\n\n\t// The ID of the managed node the high-level patch compliance information was\n\t// collected for.\n\t//\n\t// InstanceId is a required field\n\tInstanceId *string `type:\"string\" required:\"true\"`\n\n\t// The time of the last attempt to patch the managed node with NoReboot specified\n\t// as the reboot option.\n\tLastNoRebootInstallOperationTime *time.Time `type:\"timestamp\"`\n\n\t// The number of patches from the patch baseline that are applicable for the\n\t// managed node but aren't currently installed.\n\tMissingCount *int64 `type:\"integer\"`\n\n\t// The number of patches from the patch baseline that aren't applicable for\n\t// the managed node and therefore aren't installed on the node. This number\n\t// may be truncated if the list of patch names is very large. The number of\n\t// patches beyond this limit are reported in UnreportedNotApplicableCount.\n\tNotApplicableCount *int64 `type:\"integer\"`\n\n\t// The type of patching operation that was performed: or\n\t//\n\t//    * SCAN assesses the patch compliance state.\n\t//\n\t//    * INSTALL installs missing patches.\n\t//\n\t// Operation is a required field\n\tOperation *string `type:\"string\" required:\"true\" enum:\"PatchOperationType\"`\n\n\t// The time the most recent patching operation completed on the managed node.\n\t//\n\t// OperationEndTime is a required field\n\tOperationEndTime *time.Time `type:\"timestamp\" required:\"true\"`\n\n\t// The time the most recent patching operation was started on the managed node.\n\t//\n\t// OperationStartTime is a required field\n\tOperationStartTime *time.Time `type:\"timestamp\" required:\"true\"`\n\n\t// The number of patches per node that are specified as other than Critical\n\t// or Security but aren't compliant with the patch baseline. The status of these\n\t// managed nodes is NON_COMPLIANT.\n\tOtherNonCompliantCount *int64 `type:\"integer\"`\n\n\t// Placeholder information. This field will always be empty in the current release\n\t// of the service.\n\t//\n\t// OwnerInformation is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by InstancePatchState's\n\t// String and GoString methods.\n\tOwnerInformation *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The name of the patch group the managed node belongs to.\n\t//\n\t// PatchGroup is a required field\n\tPatchGroup *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// Indicates the reboot option specified in the patch baseline.\n\t//\n\t// Reboot options apply to Install operations only. Reboots aren't attempted\n\t// for Patch Manager Scan operations.\n\t//\n\t//    * RebootIfNeeded: Patch Manager tries to reboot the managed node if it\n\t//    installed any patches, or if any patches are detected with a status of\n\t//    InstalledPendingReboot.\n\t//\n\t//    * NoReboot: Patch Manager attempts to install missing packages without\n\t//    trying to reboot the system. Patches installed with this option are assigned\n\t//    a status of InstalledPendingReboot. These patches might not be in effect\n\t//    until a reboot is performed.\n\tRebootOption *string `type:\"string\" enum:\"RebootOption\"`\n\n\t// The number of patches per node that are specified as Security in a patch\n\t// advisory aren't installed. These patches might be missing, have failed installation,\n\t// were rejected, or were installed but awaiting a required managed node reboot.\n\t// The status of these managed nodes is NON_COMPLIANT.\n\tSecurityNonCompliantCount *int64 `type:\"integer\"`\n\n\t// The ID of the patch baseline snapshot used during the patching operation\n\t// when this compliance data was collected.\n\tSnapshotId *string `min:\"36\" type:\"string\"`\n\n\t// The number of patches beyond the supported limit of NotApplicableCount that\n\t// aren't reported by name to Inventory. Inventory is a capability of Amazon\n\t// Web Services Systems Manager.\n\tUnreportedNotApplicableCount *int64 `type:\"integer\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstancePatchState) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstancePatchState) GoString() string {\n\treturn s.String()\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *InstancePatchState) SetBaselineId(v string) *InstancePatchState {\n\ts.BaselineId = &v\n\treturn s\n}\n\n// SetCriticalNonCompliantCount sets the CriticalNonCompliantCount field's value.\nfunc (s *InstancePatchState) SetCriticalNonCompliantCount(v int64) *InstancePatchState {\n\ts.CriticalNonCompliantCount = &v\n\treturn s\n}\n\n// SetFailedCount sets the FailedCount field's value.\nfunc (s *InstancePatchState) SetFailedCount(v int64) *InstancePatchState {\n\ts.FailedCount = &v\n\treturn s\n}\n\n// SetInstallOverrideList sets the InstallOverrideList field's value.\nfunc (s *InstancePatchState) SetInstallOverrideList(v string) *InstancePatchState {\n\ts.InstallOverrideList = &v\n\treturn s\n}\n\n// SetInstalledCount sets the InstalledCount field's value.\nfunc (s *InstancePatchState) SetInstalledCount(v int64) *InstancePatchState {\n\ts.InstalledCount = &v\n\treturn s\n}\n\n// SetInstalledOtherCount sets the InstalledOtherCount field's value.\nfunc (s *InstancePatchState) SetInstalledOtherCount(v int64) *InstancePatchState {\n\ts.InstalledOtherCount = &v\n\treturn s\n}\n\n// SetInstalledPendingRebootCount sets the InstalledPendingRebootCount field's value.\nfunc (s *InstancePatchState) SetInstalledPendingRebootCount(v int64) *InstancePatchState {\n\ts.InstalledPendingRebootCount = &v\n\treturn s\n}\n\n// SetInstalledRejectedCount sets the InstalledRejectedCount field's value.\nfunc (s *InstancePatchState) SetInstalledRejectedCount(v int64) *InstancePatchState {\n\ts.InstalledRejectedCount = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *InstancePatchState) SetInstanceId(v string) *InstancePatchState {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetLastNoRebootInstallOperationTime sets the LastNoRebootInstallOperationTime field's value.\nfunc (s *InstancePatchState) SetLastNoRebootInstallOperationTime(v time.Time) *InstancePatchState {\n\ts.LastNoRebootInstallOperationTime = &v\n\treturn s\n}\n\n// SetMissingCount sets the MissingCount field's value.\nfunc (s *InstancePatchState) SetMissingCount(v int64) *InstancePatchState {\n\ts.MissingCount = &v\n\treturn s\n}\n\n// SetNotApplicableCount sets the NotApplicableCount field's value.\nfunc (s *InstancePatchState) SetNotApplicableCount(v int64) *InstancePatchState {\n\ts.NotApplicableCount = &v\n\treturn s\n}\n\n// SetOperation sets the Operation field's value.\nfunc (s *InstancePatchState) SetOperation(v string) *InstancePatchState {\n\ts.Operation = &v\n\treturn s\n}\n\n// SetOperationEndTime sets the OperationEndTime field's value.\nfunc (s *InstancePatchState) SetOperationEndTime(v time.Time) *InstancePatchState {\n\ts.OperationEndTime = &v\n\treturn s\n}\n\n// SetOperationStartTime sets the OperationStartTime field's value.\nfunc (s *InstancePatchState) SetOperationStartTime(v time.Time) *InstancePatchState {\n\ts.OperationStartTime = &v\n\treturn s\n}\n\n// SetOtherNonCompliantCount sets the OtherNonCompliantCount field's value.\nfunc (s *InstancePatchState) SetOtherNonCompliantCount(v int64) *InstancePatchState {\n\ts.OtherNonCompliantCount = &v\n\treturn s\n}\n\n// SetOwnerInformation sets the OwnerInformation field's value.\nfunc (s *InstancePatchState) SetOwnerInformation(v string) *InstancePatchState {\n\ts.OwnerInformation = &v\n\treturn s\n}\n\n// SetPatchGroup sets the PatchGroup field's value.\nfunc (s *InstancePatchState) SetPatchGroup(v string) *InstancePatchState {\n\ts.PatchGroup = &v\n\treturn s\n}\n\n// SetRebootOption sets the RebootOption field's value.\nfunc (s *InstancePatchState) SetRebootOption(v string) *InstancePatchState {\n\ts.RebootOption = &v\n\treturn s\n}\n\n// SetSecurityNonCompliantCount sets the SecurityNonCompliantCount field's value.\nfunc (s *InstancePatchState) SetSecurityNonCompliantCount(v int64) *InstancePatchState {\n\ts.SecurityNonCompliantCount = &v\n\treturn s\n}\n\n// SetSnapshotId sets the SnapshotId field's value.\nfunc (s *InstancePatchState) SetSnapshotId(v string) *InstancePatchState {\n\ts.SnapshotId = &v\n\treturn s\n}\n\n// SetUnreportedNotApplicableCount sets the UnreportedNotApplicableCount field's value.\nfunc (s *InstancePatchState) SetUnreportedNotApplicableCount(v int64) *InstancePatchState {\n\ts.UnreportedNotApplicableCount = &v\n\treturn s\n}\n\n// Defines a filter used in DescribeInstancePatchStatesForPatchGroup to scope\n// down the information returned by the API.\n//\n// Example: To filter for all managed nodes in a patch group having more than\n// three patches with a FailedCount status, use the following for the filter:\n//\n//   - Value for Key: FailedCount\n//\n//   - Value for Type: GreaterThan\n//\n//   - Value for Values: 3\ntype InstancePatchStateFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The key for the filter. Supported values include the following:\n\t//\n\t//    * InstalledCount\n\t//\n\t//    * InstalledOtherCount\n\t//\n\t//    * InstalledPendingRebootCount\n\t//\n\t//    * InstalledRejectedCount\n\t//\n\t//    * MissingCount\n\t//\n\t//    * FailedCount\n\t//\n\t//    * UnreportedNotApplicableCount\n\t//\n\t//    * NotApplicableCount\n\t//\n\t// Key is a required field\n\tKey *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The type of comparison that should be performed for the value.\n\t//\n\t// Type is a required field\n\tType *string `type:\"string\" required:\"true\" enum:\"InstancePatchStateOperatorType\"`\n\n\t// The value for the filter. Must be an integer greater than or equal to 0.\n\t//\n\t// Values is a required field\n\tValues []*string `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstancePatchStateFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InstancePatchStateFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *InstancePatchStateFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"InstancePatchStateFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\tif s.Type == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Type\"))\n\t}\n\tif s.Values == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Values\"))\n\t}\n\tif s.Values != nil && len(s.Values) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Values\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *InstancePatchStateFilter) SetKey(v string) *InstancePatchStateFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *InstancePatchStateFilter) SetType(v string) *InstancePatchStateFilter {\n\ts.Type = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *InstancePatchStateFilter) SetValues(v []*string) *InstancePatchStateFilter {\n\ts.Values = v\n\treturn s\n}\n\n// An error occurred on the server side.\ntype InternalServerError struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InternalServerError) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InternalServerError) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInternalServerError(v protocol.ResponseMetadata) error {\n\treturn &InternalServerError{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InternalServerError) Code() string {\n\treturn \"InternalServerError\"\n}\n\n// Message returns the exception's message.\nfunc (s *InternalServerError) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InternalServerError) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InternalServerError) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InternalServerError) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InternalServerError) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The activation isn't valid. The activation might have been deleted, or the\n// ActivationId and the ActivationCode don't match.\ntype InvalidActivation struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidActivation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidActivation) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidActivation(v protocol.ResponseMetadata) error {\n\treturn &InvalidActivation{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidActivation) Code() string {\n\treturn \"InvalidActivation\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidActivation) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidActivation) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidActivation) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidActivation) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidActivation) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The activation ID isn't valid. Verify the you entered the correct ActivationId\n// or ActivationCode and try again.\ntype InvalidActivationId struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidActivationId) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidActivationId) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidActivationId(v protocol.ResponseMetadata) error {\n\treturn &InvalidActivationId{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidActivationId) Code() string {\n\treturn \"InvalidActivationId\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidActivationId) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidActivationId) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidActivationId) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidActivationId) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidActivationId) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified aggregator isn't valid for inventory groups. Verify that the\n// aggregator uses a valid inventory type such as AWS:Application or AWS:InstanceInformation.\ntype InvalidAggregatorException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAggregatorException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAggregatorException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidAggregatorException(v protocol.ResponseMetadata) error {\n\treturn &InvalidAggregatorException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidAggregatorException) Code() string {\n\treturn \"InvalidAggregatorException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidAggregatorException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidAggregatorException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidAggregatorException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidAggregatorException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidAggregatorException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The request doesn't meet the regular expression requirement.\ntype InvalidAllowedPatternException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// The request doesn't meet the regular expression requirement.\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAllowedPatternException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAllowedPatternException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidAllowedPatternException(v protocol.ResponseMetadata) error {\n\treturn &InvalidAllowedPatternException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidAllowedPatternException) Code() string {\n\treturn \"InvalidAllowedPatternException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidAllowedPatternException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidAllowedPatternException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidAllowedPatternException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidAllowedPatternException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidAllowedPatternException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The association isn't valid or doesn't exist.\ntype InvalidAssociation struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAssociation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAssociation) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidAssociation(v protocol.ResponseMetadata) error {\n\treturn &InvalidAssociation{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidAssociation) Code() string {\n\treturn \"InvalidAssociation\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidAssociation) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidAssociation) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidAssociation) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidAssociation) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidAssociation) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The version you specified isn't valid. Use ListAssociationVersions to view\n// all versions of an association according to the association ID. Or, use the\n// $LATEST parameter to view the latest version of the association.\ntype InvalidAssociationVersion struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAssociationVersion) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAssociationVersion) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidAssociationVersion(v protocol.ResponseMetadata) error {\n\treturn &InvalidAssociationVersion{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidAssociationVersion) Code() string {\n\treturn \"InvalidAssociationVersion\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidAssociationVersion) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidAssociationVersion) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidAssociationVersion) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidAssociationVersion) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidAssociationVersion) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The supplied parameters for invoking the specified Automation runbook are\n// incorrect. For example, they may not match the set of parameters permitted\n// for the specified Automation document.\ntype InvalidAutomationExecutionParametersException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAutomationExecutionParametersException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAutomationExecutionParametersException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidAutomationExecutionParametersException(v protocol.ResponseMetadata) error {\n\treturn &InvalidAutomationExecutionParametersException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidAutomationExecutionParametersException) Code() string {\n\treturn \"InvalidAutomationExecutionParametersException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidAutomationExecutionParametersException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidAutomationExecutionParametersException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidAutomationExecutionParametersException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidAutomationExecutionParametersException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidAutomationExecutionParametersException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The signal isn't valid for the current Automation execution.\ntype InvalidAutomationSignalException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAutomationSignalException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAutomationSignalException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidAutomationSignalException(v protocol.ResponseMetadata) error {\n\treturn &InvalidAutomationSignalException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidAutomationSignalException) Code() string {\n\treturn \"InvalidAutomationSignalException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidAutomationSignalException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidAutomationSignalException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidAutomationSignalException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidAutomationSignalException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidAutomationSignalException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified update status operation isn't valid.\ntype InvalidAutomationStatusUpdateException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAutomationStatusUpdateException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidAutomationStatusUpdateException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidAutomationStatusUpdateException(v protocol.ResponseMetadata) error {\n\treturn &InvalidAutomationStatusUpdateException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidAutomationStatusUpdateException) Code() string {\n\treturn \"InvalidAutomationStatusUpdateException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidAutomationStatusUpdateException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidAutomationStatusUpdateException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidAutomationStatusUpdateException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidAutomationStatusUpdateException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidAutomationStatusUpdateException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified command ID isn't valid. Verify the ID and try again.\ntype InvalidCommandId struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidCommandId) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidCommandId) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidCommandId(v protocol.ResponseMetadata) error {\n\treturn &InvalidCommandId{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidCommandId) Code() string {\n\treturn \"InvalidCommandId\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidCommandId) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidCommandId) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidCommandId) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidCommandId) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidCommandId) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// One or more of the parameters specified for the delete operation isn't valid.\n// Verify all parameters and try again.\ntype InvalidDeleteInventoryParametersException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDeleteInventoryParametersException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDeleteInventoryParametersException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidDeleteInventoryParametersException(v protocol.ResponseMetadata) error {\n\treturn &InvalidDeleteInventoryParametersException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidDeleteInventoryParametersException) Code() string {\n\treturn \"InvalidDeleteInventoryParametersException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidDeleteInventoryParametersException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidDeleteInventoryParametersException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidDeleteInventoryParametersException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidDeleteInventoryParametersException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidDeleteInventoryParametersException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The ID specified for the delete operation doesn't exist or isn't valid. Verify\n// the ID and try again.\ntype InvalidDeletionIdException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDeletionIdException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDeletionIdException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidDeletionIdException(v protocol.ResponseMetadata) error {\n\treturn &InvalidDeletionIdException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidDeletionIdException) Code() string {\n\treturn \"InvalidDeletionIdException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidDeletionIdException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidDeletionIdException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidDeletionIdException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidDeletionIdException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidDeletionIdException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified SSM document doesn't exist.\ntype InvalidDocument struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// The SSM document doesn't exist or the document isn't available to the user.\n\t// This exception can be issued by various API operations.\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDocument) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDocument) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidDocument(v protocol.ResponseMetadata) error {\n\treturn &InvalidDocument{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidDocument) Code() string {\n\treturn \"InvalidDocument\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidDocument) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidDocument) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidDocument) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidDocument) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidDocument) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The content for the document isn't valid.\ntype InvalidDocumentContent struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// A description of the validation error.\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDocumentContent) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDocumentContent) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidDocumentContent(v protocol.ResponseMetadata) error {\n\treturn &InvalidDocumentContent{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidDocumentContent) Code() string {\n\treturn \"InvalidDocumentContent\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidDocumentContent) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidDocumentContent) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidDocumentContent) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidDocumentContent) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidDocumentContent) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// You attempted to delete a document while it is still shared. You must stop\n// sharing the document before you can delete it.\ntype InvalidDocumentOperation struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDocumentOperation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDocumentOperation) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidDocumentOperation(v protocol.ResponseMetadata) error {\n\treturn &InvalidDocumentOperation{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidDocumentOperation) Code() string {\n\treturn \"InvalidDocumentOperation\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidDocumentOperation) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidDocumentOperation) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidDocumentOperation) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidDocumentOperation) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidDocumentOperation) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The version of the document schema isn't supported.\ntype InvalidDocumentSchemaVersion struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDocumentSchemaVersion) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDocumentSchemaVersion) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidDocumentSchemaVersion(v protocol.ResponseMetadata) error {\n\treturn &InvalidDocumentSchemaVersion{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidDocumentSchemaVersion) Code() string {\n\treturn \"InvalidDocumentSchemaVersion\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidDocumentSchemaVersion) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidDocumentSchemaVersion) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidDocumentSchemaVersion) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidDocumentSchemaVersion) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidDocumentSchemaVersion) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The SSM document type isn't valid. Valid document types are described in\n// the DocumentType property.\ntype InvalidDocumentType struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDocumentType) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDocumentType) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidDocumentType(v protocol.ResponseMetadata) error {\n\treturn &InvalidDocumentType{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidDocumentType) Code() string {\n\treturn \"InvalidDocumentType\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidDocumentType) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidDocumentType) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidDocumentType) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidDocumentType) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidDocumentType) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The document version isn't valid or doesn't exist.\ntype InvalidDocumentVersion struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDocumentVersion) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidDocumentVersion) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidDocumentVersion(v protocol.ResponseMetadata) error {\n\treturn &InvalidDocumentVersion{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidDocumentVersion) Code() string {\n\treturn \"InvalidDocumentVersion\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidDocumentVersion) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidDocumentVersion) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidDocumentVersion) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidDocumentVersion) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidDocumentVersion) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The filter name isn't valid. Verify the you entered the correct name and\n// try again.\ntype InvalidFilter struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidFilter) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidFilter(v protocol.ResponseMetadata) error {\n\treturn &InvalidFilter{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidFilter) Code() string {\n\treturn \"InvalidFilter\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidFilter) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidFilter) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidFilter) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidFilter) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidFilter) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified key isn't valid.\ntype InvalidFilterKey struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidFilterKey) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidFilterKey) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidFilterKey(v protocol.ResponseMetadata) error {\n\treturn &InvalidFilterKey{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidFilterKey) Code() string {\n\treturn \"InvalidFilterKey\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidFilterKey) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidFilterKey) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidFilterKey) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidFilterKey) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidFilterKey) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified filter option isn't valid. Valid options are Equals and BeginsWith.\n// For Path filter, valid options are Recursive and OneLevel.\ntype InvalidFilterOption struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// The specified filter option isn't valid. Valid options are Equals and BeginsWith.\n\t// For Path filter, valid options are Recursive and OneLevel.\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidFilterOption) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidFilterOption) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidFilterOption(v protocol.ResponseMetadata) error {\n\treturn &InvalidFilterOption{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidFilterOption) Code() string {\n\treturn \"InvalidFilterOption\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidFilterOption) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidFilterOption) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidFilterOption) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidFilterOption) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidFilterOption) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The filter value isn't valid. Verify the value and try again.\ntype InvalidFilterValue struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidFilterValue) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidFilterValue) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidFilterValue(v protocol.ResponseMetadata) error {\n\treturn &InvalidFilterValue{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidFilterValue) Code() string {\n\treturn \"InvalidFilterValue\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidFilterValue) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidFilterValue) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidFilterValue) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidFilterValue) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidFilterValue) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The following problems can cause this exception:\n//\n//   - You don't have permission to access the managed node.\n//\n//   - Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n//     Verify that SSM Agent is running.\n//\n//   - SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n//     Agent.\n//\n//   - The managed node isn't in valid state. Valid states are: Running, Pending,\n//     Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\ntype InvalidInstanceId struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidInstanceId) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidInstanceId) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidInstanceId(v protocol.ResponseMetadata) error {\n\treturn &InvalidInstanceId{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidInstanceId) Code() string {\n\treturn \"InvalidInstanceId\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidInstanceId) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidInstanceId) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidInstanceId) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidInstanceId) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidInstanceId) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified filter value isn't valid.\ntype InvalidInstanceInformationFilterValue struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidInstanceInformationFilterValue) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidInstanceInformationFilterValue) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidInstanceInformationFilterValue(v protocol.ResponseMetadata) error {\n\treturn &InvalidInstanceInformationFilterValue{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidInstanceInformationFilterValue) Code() string {\n\treturn \"InvalidInstanceInformationFilterValue\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidInstanceInformationFilterValue) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidInstanceInformationFilterValue) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidInstanceInformationFilterValue) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidInstanceInformationFilterValue) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidInstanceInformationFilterValue) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified inventory group isn't valid.\ntype InvalidInventoryGroupException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidInventoryGroupException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidInventoryGroupException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidInventoryGroupException(v protocol.ResponseMetadata) error {\n\treturn &InvalidInventoryGroupException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidInventoryGroupException) Code() string {\n\treturn \"InvalidInventoryGroupException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidInventoryGroupException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidInventoryGroupException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidInventoryGroupException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidInventoryGroupException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidInventoryGroupException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// You specified invalid keys or values in the Context attribute for InventoryItem.\n// Verify the keys and values, and try again.\ntype InvalidInventoryItemContextException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidInventoryItemContextException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidInventoryItemContextException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidInventoryItemContextException(v protocol.ResponseMetadata) error {\n\treturn &InvalidInventoryItemContextException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidInventoryItemContextException) Code() string {\n\treturn \"InvalidInventoryItemContextException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidInventoryItemContextException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidInventoryItemContextException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidInventoryItemContextException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidInventoryItemContextException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidInventoryItemContextException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The request isn't valid.\ntype InvalidInventoryRequestException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidInventoryRequestException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidInventoryRequestException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidInventoryRequestException(v protocol.ResponseMetadata) error {\n\treturn &InvalidInventoryRequestException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidInventoryRequestException) Code() string {\n\treturn \"InvalidInventoryRequestException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidInventoryRequestException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidInventoryRequestException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidInventoryRequestException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidInventoryRequestException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidInventoryRequestException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// One or more content items isn't valid.\ntype InvalidItemContentException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n\n\tTypeName *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidItemContentException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidItemContentException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidItemContentException(v protocol.ResponseMetadata) error {\n\treturn &InvalidItemContentException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidItemContentException) Code() string {\n\treturn \"InvalidItemContentException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidItemContentException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidItemContentException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidItemContentException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidItemContentException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidItemContentException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The query key ID isn't valid.\ntype InvalidKeyId struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidKeyId) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidKeyId) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidKeyId(v protocol.ResponseMetadata) error {\n\treturn &InvalidKeyId{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidKeyId) Code() string {\n\treturn \"InvalidKeyId\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidKeyId) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidKeyId) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidKeyId) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidKeyId) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidKeyId) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified token isn't valid.\ntype InvalidNextToken struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidNextToken) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidNextToken) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidNextToken(v protocol.ResponseMetadata) error {\n\treturn &InvalidNextToken{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidNextToken) Code() string {\n\treturn \"InvalidNextToken\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidNextToken) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidNextToken) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidNextToken) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidNextToken) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidNextToken) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// One or more configuration items isn't valid. Verify that a valid Amazon Resource\n// Name (ARN) was provided for an Amazon Simple Notification Service topic.\ntype InvalidNotificationConfig struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidNotificationConfig) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidNotificationConfig) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidNotificationConfig(v protocol.ResponseMetadata) error {\n\treturn &InvalidNotificationConfig{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidNotificationConfig) Code() string {\n\treturn \"InvalidNotificationConfig\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidNotificationConfig) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidNotificationConfig) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidNotificationConfig) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidNotificationConfig) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidNotificationConfig) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The delete inventory option specified isn't valid. Verify the option and\n// try again.\ntype InvalidOptionException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidOptionException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidOptionException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidOptionException(v protocol.ResponseMetadata) error {\n\treturn &InvalidOptionException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidOptionException) Code() string {\n\treturn \"InvalidOptionException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidOptionException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidOptionException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidOptionException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidOptionException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidOptionException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The S3 bucket doesn't exist.\ntype InvalidOutputFolder struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidOutputFolder) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidOutputFolder) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidOutputFolder(v protocol.ResponseMetadata) error {\n\treturn &InvalidOutputFolder{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidOutputFolder) Code() string {\n\treturn \"InvalidOutputFolder\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidOutputFolder) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidOutputFolder) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidOutputFolder) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidOutputFolder) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidOutputFolder) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The output location isn't valid or doesn't exist.\ntype InvalidOutputLocation struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidOutputLocation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidOutputLocation) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidOutputLocation(v protocol.ResponseMetadata) error {\n\treturn &InvalidOutputLocation{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidOutputLocation) Code() string {\n\treturn \"InvalidOutputLocation\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidOutputLocation) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidOutputLocation) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidOutputLocation) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidOutputLocation) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidOutputLocation) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// You must specify values for all required parameters in the Amazon Web Services\n// Systems Manager document (SSM document). You can only supply values to parameters\n// defined in the SSM document.\ntype InvalidParameters struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidParameters) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidParameters) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidParameters(v protocol.ResponseMetadata) error {\n\treturn &InvalidParameters{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidParameters) Code() string {\n\treturn \"InvalidParameters\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidParameters) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidParameters) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidParameters) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidParameters) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidParameters) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The permission type isn't supported. Share is the only supported permission\n// type.\ntype InvalidPermissionType struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidPermissionType) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidPermissionType) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidPermissionType(v protocol.ResponseMetadata) error {\n\treturn &InvalidPermissionType{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidPermissionType) Code() string {\n\treturn \"InvalidPermissionType\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidPermissionType) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidPermissionType) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidPermissionType) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidPermissionType) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidPermissionType) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The plugin name isn't valid.\ntype InvalidPluginName struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidPluginName) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidPluginName) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidPluginName(v protocol.ResponseMetadata) error {\n\treturn &InvalidPluginName{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidPluginName) Code() string {\n\treturn \"InvalidPluginName\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidPluginName) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidPluginName) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidPluginName) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidPluginName) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidPluginName) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// A policy attribute or its value is invalid.\ntype InvalidPolicyAttributeException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidPolicyAttributeException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidPolicyAttributeException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidPolicyAttributeException(v protocol.ResponseMetadata) error {\n\treturn &InvalidPolicyAttributeException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidPolicyAttributeException) Code() string {\n\treturn \"InvalidPolicyAttributeException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidPolicyAttributeException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidPolicyAttributeException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidPolicyAttributeException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidPolicyAttributeException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidPolicyAttributeException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The policy type isn't supported. Parameter Store supports the following policy\n// types: Expiration, ExpirationNotification, and NoChangeNotification.\ntype InvalidPolicyTypeException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidPolicyTypeException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidPolicyTypeException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidPolicyTypeException(v protocol.ResponseMetadata) error {\n\treturn &InvalidPolicyTypeException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidPolicyTypeException) Code() string {\n\treturn \"InvalidPolicyTypeException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidPolicyTypeException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidPolicyTypeException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidPolicyTypeException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidPolicyTypeException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidPolicyTypeException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The resource ID isn't valid. Verify that you entered the correct ID and try\n// again.\ntype InvalidResourceId struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidResourceId) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidResourceId) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidResourceId(v protocol.ResponseMetadata) error {\n\treturn &InvalidResourceId{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidResourceId) Code() string {\n\treturn \"InvalidResourceId\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidResourceId) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidResourceId) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidResourceId) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidResourceId) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidResourceId) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The resource type isn't valid. For example, if you are attempting to tag\n// an EC2 instance, the instance must be a registered managed node.\ntype InvalidResourceType struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidResourceType) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidResourceType) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidResourceType(v protocol.ResponseMetadata) error {\n\treturn &InvalidResourceType{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidResourceType) Code() string {\n\treturn \"InvalidResourceType\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidResourceType) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidResourceType) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidResourceType) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidResourceType) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidResourceType) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified inventory item result attribute isn't valid.\ntype InvalidResultAttributeException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidResultAttributeException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidResultAttributeException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidResultAttributeException(v protocol.ResponseMetadata) error {\n\treturn &InvalidResultAttributeException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidResultAttributeException) Code() string {\n\treturn \"InvalidResultAttributeException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidResultAttributeException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidResultAttributeException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidResultAttributeException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidResultAttributeException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidResultAttributeException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The role name can't contain invalid characters. Also verify that you specified\n// an IAM role for notifications that includes the required trust policy. For\n// information about configuring the IAM role for Run Command notifications,\n// see Configuring Amazon SNS Notifications for Run Command (https://docs.aws.amazon.com/systems-manager/latest/userguide/rc-sns-notifications.html)\n// in the Amazon Web Services Systems Manager User Guide.\ntype InvalidRole struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidRole) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidRole) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidRole(v protocol.ResponseMetadata) error {\n\treturn &InvalidRole{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidRole) Code() string {\n\treturn \"InvalidRole\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidRole) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidRole) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidRole) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidRole) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidRole) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The schedule is invalid. Verify your cron or rate expression and try again.\ntype InvalidSchedule struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidSchedule) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidSchedule) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidSchedule(v protocol.ResponseMetadata) error {\n\treturn &InvalidSchedule{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidSchedule) Code() string {\n\treturn \"InvalidSchedule\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidSchedule) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidSchedule) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidSchedule) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidSchedule) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidSchedule) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified tag key or value isn't valid.\ntype InvalidTag struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidTag) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidTag) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidTag(v protocol.ResponseMetadata) error {\n\treturn &InvalidTag{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidTag) Code() string {\n\treturn \"InvalidTag\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidTag) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidTag) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidTag) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidTag) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidTag) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The target isn't valid or doesn't exist. It might not be configured for Systems\n// Manager or you might not have permission to perform the operation.\ntype InvalidTarget struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidTarget) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidTarget) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidTarget(v protocol.ResponseMetadata) error {\n\treturn &InvalidTarget{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidTarget) Code() string {\n\treturn \"InvalidTarget\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidTarget) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidTarget) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidTarget) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidTarget) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidTarget) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// TargetMap parameter isn't valid.\ntype InvalidTargetMaps struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidTargetMaps) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidTargetMaps) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidTargetMaps(v protocol.ResponseMetadata) error {\n\treturn &InvalidTargetMaps{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidTargetMaps) Code() string {\n\treturn \"InvalidTargetMaps\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidTargetMaps) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidTargetMaps) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidTargetMaps) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidTargetMaps) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidTargetMaps) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The parameter type name isn't valid.\ntype InvalidTypeNameException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidTypeNameException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidTypeNameException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidTypeNameException(v protocol.ResponseMetadata) error {\n\treturn &InvalidTypeNameException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidTypeNameException) Code() string {\n\treturn \"InvalidTypeNameException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidTypeNameException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidTypeNameException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidTypeNameException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidTypeNameException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidTypeNameException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The update isn't valid.\ntype InvalidUpdate struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidUpdate) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidUpdate) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidUpdate(v protocol.ResponseMetadata) error {\n\treturn &InvalidUpdate{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidUpdate) Code() string {\n\treturn \"InvalidUpdate\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidUpdate) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidUpdate) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidUpdate) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidUpdate) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidUpdate) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Specifies the inventory type and attribute for the aggregation execution.\ntype InventoryAggregator struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Nested aggregators to further refine aggregation for an inventory type.\n\tAggregators []*InventoryAggregator `min:\"1\" type:\"list\"`\n\n\t// The inventory type and attribute name for aggregation.\n\tExpression *string `min:\"1\" type:\"string\"`\n\n\t// A user-defined set of one or more filters on which to aggregate inventory\n\t// data. Groups return a count of resources that match and don't match the specified\n\t// criteria.\n\tGroups []*InventoryGroup `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryAggregator) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryAggregator) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *InventoryAggregator) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"InventoryAggregator\"}\n\tif s.Aggregators != nil && len(s.Aggregators) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Aggregators\", 1))\n\t}\n\tif s.Expression != nil && len(*s.Expression) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Expression\", 1))\n\t}\n\tif s.Groups != nil && len(s.Groups) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Groups\", 1))\n\t}\n\tif s.Aggregators != nil {\n\t\tfor i, v := range s.Aggregators {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Aggregators\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Groups != nil {\n\t\tfor i, v := range s.Groups {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Groups\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAggregators sets the Aggregators field's value.\nfunc (s *InventoryAggregator) SetAggregators(v []*InventoryAggregator) *InventoryAggregator {\n\ts.Aggregators = v\n\treturn s\n}\n\n// SetExpression sets the Expression field's value.\nfunc (s *InventoryAggregator) SetExpression(v string) *InventoryAggregator {\n\ts.Expression = &v\n\treturn s\n}\n\n// SetGroups sets the Groups field's value.\nfunc (s *InventoryAggregator) SetGroups(v []*InventoryGroup) *InventoryAggregator {\n\ts.Groups = v\n\treturn s\n}\n\n// Status information returned by the DeleteInventory operation.\ntype InventoryDeletionStatusItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The deletion ID returned by the DeleteInventory operation.\n\tDeletionId *string `type:\"string\"`\n\n\t// The UTC timestamp when the delete operation started.\n\tDeletionStartTime *time.Time `type:\"timestamp\"`\n\n\t// Information about the delete operation. For more information about this summary,\n\t// see Understanding the delete inventory summary (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-custom.html#sysman-inventory-delete)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tDeletionSummary *InventoryDeletionSummary `type:\"structure\"`\n\n\t// The status of the operation. Possible values are InProgress and Complete.\n\tLastStatus *string `type:\"string\" enum:\"InventoryDeletionStatus\"`\n\n\t// Information about the status.\n\tLastStatusMessage *string `type:\"string\"`\n\n\t// The UTC timestamp of when the last status report.\n\tLastStatusUpdateTime *time.Time `type:\"timestamp\"`\n\n\t// The name of the inventory data type.\n\tTypeName *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryDeletionStatusItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryDeletionStatusItem) GoString() string {\n\treturn s.String()\n}\n\n// SetDeletionId sets the DeletionId field's value.\nfunc (s *InventoryDeletionStatusItem) SetDeletionId(v string) *InventoryDeletionStatusItem {\n\ts.DeletionId = &v\n\treturn s\n}\n\n// SetDeletionStartTime sets the DeletionStartTime field's value.\nfunc (s *InventoryDeletionStatusItem) SetDeletionStartTime(v time.Time) *InventoryDeletionStatusItem {\n\ts.DeletionStartTime = &v\n\treturn s\n}\n\n// SetDeletionSummary sets the DeletionSummary field's value.\nfunc (s *InventoryDeletionStatusItem) SetDeletionSummary(v *InventoryDeletionSummary) *InventoryDeletionStatusItem {\n\ts.DeletionSummary = v\n\treturn s\n}\n\n// SetLastStatus sets the LastStatus field's value.\nfunc (s *InventoryDeletionStatusItem) SetLastStatus(v string) *InventoryDeletionStatusItem {\n\ts.LastStatus = &v\n\treturn s\n}\n\n// SetLastStatusMessage sets the LastStatusMessage field's value.\nfunc (s *InventoryDeletionStatusItem) SetLastStatusMessage(v string) *InventoryDeletionStatusItem {\n\ts.LastStatusMessage = &v\n\treturn s\n}\n\n// SetLastStatusUpdateTime sets the LastStatusUpdateTime field's value.\nfunc (s *InventoryDeletionStatusItem) SetLastStatusUpdateTime(v time.Time) *InventoryDeletionStatusItem {\n\ts.LastStatusUpdateTime = &v\n\treturn s\n}\n\n// SetTypeName sets the TypeName field's value.\nfunc (s *InventoryDeletionStatusItem) SetTypeName(v string) *InventoryDeletionStatusItem {\n\ts.TypeName = &v\n\treturn s\n}\n\n// Information about the delete operation.\ntype InventoryDeletionSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Remaining number of items to delete.\n\tRemainingCount *int64 `type:\"integer\"`\n\n\t// A list of counts and versions for deleted items.\n\tSummaryItems []*InventoryDeletionSummaryItem `type:\"list\"`\n\n\t// The total number of items to delete. This count doesn't change during the\n\t// delete operation.\n\tTotalCount *int64 `type:\"integer\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryDeletionSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryDeletionSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetRemainingCount sets the RemainingCount field's value.\nfunc (s *InventoryDeletionSummary) SetRemainingCount(v int64) *InventoryDeletionSummary {\n\ts.RemainingCount = &v\n\treturn s\n}\n\n// SetSummaryItems sets the SummaryItems field's value.\nfunc (s *InventoryDeletionSummary) SetSummaryItems(v []*InventoryDeletionSummaryItem) *InventoryDeletionSummary {\n\ts.SummaryItems = v\n\treturn s\n}\n\n// SetTotalCount sets the TotalCount field's value.\nfunc (s *InventoryDeletionSummary) SetTotalCount(v int64) *InventoryDeletionSummary {\n\ts.TotalCount = &v\n\treturn s\n}\n\n// Either a count, remaining count, or a version number in a delete inventory\n// summary.\ntype InventoryDeletionSummaryItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A count of the number of deleted items.\n\tCount *int64 `type:\"integer\"`\n\n\t// The remaining number of items to delete.\n\tRemainingCount *int64 `type:\"integer\"`\n\n\t// The inventory type version.\n\tVersion *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryDeletionSummaryItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryDeletionSummaryItem) GoString() string {\n\treturn s.String()\n}\n\n// SetCount sets the Count field's value.\nfunc (s *InventoryDeletionSummaryItem) SetCount(v int64) *InventoryDeletionSummaryItem {\n\ts.Count = &v\n\treturn s\n}\n\n// SetRemainingCount sets the RemainingCount field's value.\nfunc (s *InventoryDeletionSummaryItem) SetRemainingCount(v int64) *InventoryDeletionSummaryItem {\n\ts.RemainingCount = &v\n\treturn s\n}\n\n// SetVersion sets the Version field's value.\nfunc (s *InventoryDeletionSummaryItem) SetVersion(v string) *InventoryDeletionSummaryItem {\n\ts.Version = &v\n\treturn s\n}\n\n// One or more filters. Use a filter to return a more specific list of results.\ntype InventoryFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter key.\n\t//\n\t// Key is a required field\n\tKey *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The type of filter.\n\t//\n\t// The Exists filter must be used with aggregators. For more information, see\n\t// Aggregating inventory data (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-aggregate.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tType *string `type:\"string\" enum:\"InventoryQueryOperatorType\"`\n\n\t// Inventory filter values. Example: inventory filter where managed node IDs\n\t// are specified as values Key=AWS:InstanceInformation.InstanceId,Values= i-a12b3c4d5e6g,\n\t// i-1a2b3c4d5e6,Type=Equal.\n\t//\n\t// Values is a required field\n\tValues []*string `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *InventoryFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"InventoryFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\tif s.Values == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Values\"))\n\t}\n\tif s.Values != nil && len(s.Values) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Values\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *InventoryFilter) SetKey(v string) *InventoryFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *InventoryFilter) SetType(v string) *InventoryFilter {\n\ts.Type = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *InventoryFilter) SetValues(v []*string) *InventoryFilter {\n\ts.Values = v\n\treturn s\n}\n\n// A user-defined set of one or more filters on which to aggregate inventory\n// data. Groups return a count of resources that match and don't match the specified\n// criteria.\ntype InventoryGroup struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Filters define the criteria for the group. The matchingCount field displays\n\t// the number of resources that match the criteria. The notMatchingCount field\n\t// displays the number of resources that don't match the criteria.\n\t//\n\t// Filters is a required field\n\tFilters []*InventoryFilter `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// The name of the group.\n\t//\n\t// Name is a required field\n\tName *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryGroup) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryGroup) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *InventoryGroup) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"InventoryGroup\"}\n\tif s.Filters == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Filters\"))\n\t}\n\tif s.Filters != nil && len(s.Filters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Filters\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Name != nil && len(*s.Name) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *InventoryGroup) SetFilters(v []*InventoryFilter) *InventoryGroup {\n\ts.Filters = v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *InventoryGroup) SetName(v string) *InventoryGroup {\n\ts.Name = &v\n\treturn s\n}\n\n// Information collected from managed nodes based on your inventory policy document\ntype InventoryItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time the inventory information was collected.\n\t//\n\t// CaptureTime is a required field\n\tCaptureTime *string `type:\"string\" required:\"true\"`\n\n\t// The inventory data of the inventory type.\n\tContent []map[string]*string `type:\"list\"`\n\n\t// MD5 hash of the inventory item type contents. The content hash is used to\n\t// determine whether to update inventory information. The PutInventory API doesn't\n\t// update the inventory item type contents if the MD5 hash hasn't changed since\n\t// last update.\n\tContentHash *string `type:\"string\"`\n\n\t// A map of associated properties for a specified inventory type. For example,\n\t// with this attribute, you can specify the ExecutionId, ExecutionType, ComplianceType\n\t// properties of the AWS:ComplianceItem type.\n\tContext map[string]*string `type:\"map\"`\n\n\t// The schema version for the inventory item.\n\t//\n\t// SchemaVersion is a required field\n\tSchemaVersion *string `type:\"string\" required:\"true\"`\n\n\t// The name of the inventory type. Default inventory item type names start with\n\t// AWS. Custom inventory type names will start with Custom. Default inventory\n\t// item types include the following: AWS:AWSComponent, AWS:Application, AWS:InstanceInformation,\n\t// AWS:Network, and AWS:WindowsUpdate.\n\t//\n\t// TypeName is a required field\n\tTypeName *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryItem) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *InventoryItem) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"InventoryItem\"}\n\tif s.CaptureTime == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"CaptureTime\"))\n\t}\n\tif s.SchemaVersion == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SchemaVersion\"))\n\t}\n\tif s.TypeName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TypeName\"))\n\t}\n\tif s.TypeName != nil && len(*s.TypeName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TypeName\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetCaptureTime sets the CaptureTime field's value.\nfunc (s *InventoryItem) SetCaptureTime(v string) *InventoryItem {\n\ts.CaptureTime = &v\n\treturn s\n}\n\n// SetContent sets the Content field's value.\nfunc (s *InventoryItem) SetContent(v []map[string]*string) *InventoryItem {\n\ts.Content = v\n\treturn s\n}\n\n// SetContentHash sets the ContentHash field's value.\nfunc (s *InventoryItem) SetContentHash(v string) *InventoryItem {\n\ts.ContentHash = &v\n\treturn s\n}\n\n// SetContext sets the Context field's value.\nfunc (s *InventoryItem) SetContext(v map[string]*string) *InventoryItem {\n\ts.Context = v\n\treturn s\n}\n\n// SetSchemaVersion sets the SchemaVersion field's value.\nfunc (s *InventoryItem) SetSchemaVersion(v string) *InventoryItem {\n\ts.SchemaVersion = &v\n\treturn s\n}\n\n// SetTypeName sets the TypeName field's value.\nfunc (s *InventoryItem) SetTypeName(v string) *InventoryItem {\n\ts.TypeName = &v\n\treturn s\n}\n\n// Attributes are the entries within the inventory item content. It contains\n// name and value.\ntype InventoryItemAttribute struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The data type of the inventory item attribute.\n\t//\n\t// DataType is a required field\n\tDataType *string `type:\"string\" required:\"true\" enum:\"InventoryAttributeDataType\"`\n\n\t// Name of the inventory item attribute.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryItemAttribute) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryItemAttribute) GoString() string {\n\treturn s.String()\n}\n\n// SetDataType sets the DataType field's value.\nfunc (s *InventoryItemAttribute) SetDataType(v string) *InventoryItemAttribute {\n\ts.DataType = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *InventoryItemAttribute) SetName(v string) *InventoryItemAttribute {\n\ts.Name = &v\n\treturn s\n}\n\n// The inventory item schema definition. Users can use this to compose inventory\n// query filters.\ntype InventoryItemSchema struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The schema attributes for inventory. This contains data type and attribute\n\t// name.\n\t//\n\t// Attributes is a required field\n\tAttributes []*InventoryItemAttribute `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// The alias name of the inventory type. The alias name is used for display\n\t// purposes.\n\tDisplayName *string `type:\"string\"`\n\n\t// The name of the inventory type. Default inventory item type names start with\n\t// Amazon Web Services. Custom inventory type names will start with Custom.\n\t// Default inventory item types include the following: AWS:AWSComponent, AWS:Application,\n\t// AWS:InstanceInformation, AWS:Network, and AWS:WindowsUpdate.\n\t//\n\t// TypeName is a required field\n\tTypeName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The schema version for the inventory item.\n\tVersion *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryItemSchema) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryItemSchema) GoString() string {\n\treturn s.String()\n}\n\n// SetAttributes sets the Attributes field's value.\nfunc (s *InventoryItemSchema) SetAttributes(v []*InventoryItemAttribute) *InventoryItemSchema {\n\ts.Attributes = v\n\treturn s\n}\n\n// SetDisplayName sets the DisplayName field's value.\nfunc (s *InventoryItemSchema) SetDisplayName(v string) *InventoryItemSchema {\n\ts.DisplayName = &v\n\treturn s\n}\n\n// SetTypeName sets the TypeName field's value.\nfunc (s *InventoryItemSchema) SetTypeName(v string) *InventoryItemSchema {\n\ts.TypeName = &v\n\treturn s\n}\n\n// SetVersion sets the Version field's value.\nfunc (s *InventoryItemSchema) SetVersion(v string) *InventoryItemSchema {\n\ts.Version = &v\n\treturn s\n}\n\n// Inventory query results.\ntype InventoryResultEntity struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The data section in the inventory result entity JSON.\n\tData map[string]*InventoryResultItem `type:\"map\"`\n\n\t// ID of the inventory result entity. For example, for managed node inventory\n\t// the result will be the managed node ID. For EC2 instance inventory, the result\n\t// will be the instance ID.\n\tId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryResultEntity) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryResultEntity) GoString() string {\n\treturn s.String()\n}\n\n// SetData sets the Data field's value.\nfunc (s *InventoryResultEntity) SetData(v map[string]*InventoryResultItem) *InventoryResultEntity {\n\ts.Data = v\n\treturn s\n}\n\n// SetId sets the Id field's value.\nfunc (s *InventoryResultEntity) SetId(v string) *InventoryResultEntity {\n\ts.Id = &v\n\treturn s\n}\n\n// The inventory result item.\ntype InventoryResultItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time inventory item data was captured.\n\tCaptureTime *string `type:\"string\"`\n\n\t// Contains all the inventory data of the item type. Results include attribute\n\t// names and values.\n\t//\n\t// Content is a required field\n\tContent []map[string]*string `type:\"list\" required:\"true\"`\n\n\t// MD5 hash of the inventory item type contents. The content hash is used to\n\t// determine whether to update inventory information. The PutInventory API doesn't\n\t// update the inventory item type contents if the MD5 hash hasn't changed since\n\t// last update.\n\tContentHash *string `type:\"string\"`\n\n\t// The schema version for the inventory result item/\n\t//\n\t// SchemaVersion is a required field\n\tSchemaVersion *string `type:\"string\" required:\"true\"`\n\n\t// The name of the inventory result item type.\n\t//\n\t// TypeName is a required field\n\tTypeName *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryResultItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InventoryResultItem) GoString() string {\n\treturn s.String()\n}\n\n// SetCaptureTime sets the CaptureTime field's value.\nfunc (s *InventoryResultItem) SetCaptureTime(v string) *InventoryResultItem {\n\ts.CaptureTime = &v\n\treturn s\n}\n\n// SetContent sets the Content field's value.\nfunc (s *InventoryResultItem) SetContent(v []map[string]*string) *InventoryResultItem {\n\ts.Content = v\n\treturn s\n}\n\n// SetContentHash sets the ContentHash field's value.\nfunc (s *InventoryResultItem) SetContentHash(v string) *InventoryResultItem {\n\ts.ContentHash = &v\n\treturn s\n}\n\n// SetSchemaVersion sets the SchemaVersion field's value.\nfunc (s *InventoryResultItem) SetSchemaVersion(v string) *InventoryResultItem {\n\ts.SchemaVersion = &v\n\treturn s\n}\n\n// SetTypeName sets the TypeName field's value.\nfunc (s *InventoryResultItem) SetTypeName(v string) *InventoryResultItem {\n\ts.TypeName = &v\n\treturn s\n}\n\n// The command ID and managed node ID you specified didn't match any invocations.\n// Verify the command ID and the managed node ID and try again.\ntype InvocationDoesNotExist struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvocationDoesNotExist) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvocationDoesNotExist) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvocationDoesNotExist(v protocol.ResponseMetadata) error {\n\treturn &InvocationDoesNotExist{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvocationDoesNotExist) Code() string {\n\treturn \"InvocationDoesNotExist\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvocationDoesNotExist) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvocationDoesNotExist) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvocationDoesNotExist) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvocationDoesNotExist) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvocationDoesNotExist) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The inventory item has invalid content.\ntype ItemContentMismatchException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n\n\tTypeName *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ItemContentMismatchException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ItemContentMismatchException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorItemContentMismatchException(v protocol.ResponseMetadata) error {\n\treturn &ItemContentMismatchException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ItemContentMismatchException) Code() string {\n\treturn \"ItemContentMismatchException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ItemContentMismatchException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ItemContentMismatchException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ItemContentMismatchException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ItemContentMismatchException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ItemContentMismatchException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The inventory item size has exceeded the size limit.\ntype ItemSizeLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n\n\tTypeName *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ItemSizeLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ItemSizeLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorItemSizeLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &ItemSizeLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ItemSizeLimitExceededException) Code() string {\n\treturn \"ItemSizeLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ItemSizeLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ItemSizeLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ItemSizeLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ItemSizeLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ItemSizeLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype LabelParameterVersionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more labels to attach to the specified parameter version.\n\t//\n\t// Labels is a required field\n\tLabels []*string `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// The parameter name on which you want to attach one or more labels.\n\t//\n\t// Name is a required field\n\tName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The specific version of the parameter on which you want to attach one or\n\t// more labels. If no version is specified, the system attaches the label to\n\t// the latest version.\n\tParameterVersion *int64 `type:\"long\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LabelParameterVersionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LabelParameterVersionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *LabelParameterVersionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"LabelParameterVersionInput\"}\n\tif s.Labels == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Labels\"))\n\t}\n\tif s.Labels != nil && len(s.Labels) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Labels\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Name != nil && len(*s.Name) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetLabels sets the Labels field's value.\nfunc (s *LabelParameterVersionInput) SetLabels(v []*string) *LabelParameterVersionInput {\n\ts.Labels = v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *LabelParameterVersionInput) SetName(v string) *LabelParameterVersionInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetParameterVersion sets the ParameterVersion field's value.\nfunc (s *LabelParameterVersionInput) SetParameterVersion(v int64) *LabelParameterVersionInput {\n\ts.ParameterVersion = &v\n\treturn s\n}\n\ntype LabelParameterVersionOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The label doesn't meet the requirements. For information about parameter\n\t// label requirements, see Labeling parameters (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-labels.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tInvalidLabels []*string `min:\"1\" type:\"list\"`\n\n\t// The version of the parameter that has been labeled.\n\tParameterVersion *int64 `type:\"long\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LabelParameterVersionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LabelParameterVersionOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetInvalidLabels sets the InvalidLabels field's value.\nfunc (s *LabelParameterVersionOutput) SetInvalidLabels(v []*string) *LabelParameterVersionOutput {\n\ts.InvalidLabels = v\n\treturn s\n}\n\n// SetParameterVersion sets the ParameterVersion field's value.\nfunc (s *LabelParameterVersionOutput) SetParameterVersion(v int64) *LabelParameterVersionOutput {\n\ts.ParameterVersion = &v\n\treturn s\n}\n\ntype ListAssociationVersionsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The association ID for which you want to view all versions.\n\t//\n\t// AssociationId is a required field\n\tAssociationId *string `type:\"string\" required:\"true\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAssociationVersionsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAssociationVersionsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListAssociationVersionsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListAssociationVersionsInput\"}\n\tif s.AssociationId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AssociationId\"))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *ListAssociationVersionsInput) SetAssociationId(v string) *ListAssociationVersionsInput {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListAssociationVersionsInput) SetMaxResults(v int64) *ListAssociationVersionsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListAssociationVersionsInput) SetNextToken(v string) *ListAssociationVersionsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListAssociationVersionsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Information about all versions of the association for the specified association\n\t// ID.\n\tAssociationVersions []*AssociationVersionInfo `min:\"1\" type:\"list\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAssociationVersionsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAssociationVersionsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationVersions sets the AssociationVersions field's value.\nfunc (s *ListAssociationVersionsOutput) SetAssociationVersions(v []*AssociationVersionInfo) *ListAssociationVersionsOutput {\n\ts.AssociationVersions = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListAssociationVersionsOutput) SetNextToken(v string) *ListAssociationVersionsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListAssociationsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more filters. Use a filter to return a more specific list of results.\n\t//\n\t// Filtering associations using the InstanceID attribute only returns legacy\n\t// associations created using the InstanceID attribute. Associations targeting\n\t// the managed node that are part of the Target Attributes ResourceGroup or\n\t// Tags aren't returned.\n\tAssociationFilterList []*AssociationFilter `min:\"1\" type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAssociationsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAssociationsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListAssociationsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListAssociationsInput\"}\n\tif s.AssociationFilterList != nil && len(s.AssociationFilterList) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AssociationFilterList\", 1))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.AssociationFilterList != nil {\n\t\tfor i, v := range s.AssociationFilterList {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"AssociationFilterList\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAssociationFilterList sets the AssociationFilterList field's value.\nfunc (s *ListAssociationsInput) SetAssociationFilterList(v []*AssociationFilter) *ListAssociationsInput {\n\ts.AssociationFilterList = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListAssociationsInput) SetMaxResults(v int64) *ListAssociationsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListAssociationsInput) SetNextToken(v string) *ListAssociationsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListAssociationsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The associations.\n\tAssociations []*Association `type:\"list\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAssociationsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAssociationsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociations sets the Associations field's value.\nfunc (s *ListAssociationsOutput) SetAssociations(v []*Association) *ListAssociationsOutput {\n\ts.Associations = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListAssociationsOutput) SetNextToken(v string) *ListAssociationsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListCommandInvocationsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// (Optional) The invocations for a specific command ID.\n\tCommandId *string `min:\"36\" type:\"string\"`\n\n\t// (Optional) If set this returns the response of the command executions and\n\t// any command output. The default value is false.\n\tDetails *bool `type:\"boolean\"`\n\n\t// (Optional) One or more filters. Use a filter to return a more specific list\n\t// of results.\n\tFilters []*CommandFilter `min:\"1\" type:\"list\"`\n\n\t// (Optional) The command execution details for a specific managed node ID.\n\tInstanceId *string `type:\"string\"`\n\n\t// (Optional) The maximum number of items to return for this call. The call\n\t// also returns a token that you can specify in a subsequent call to get the\n\t// next set of results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// (Optional) The token for the next set of items to return. (You received this\n\t// token from a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListCommandInvocationsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListCommandInvocationsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListCommandInvocationsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListCommandInvocationsInput\"}\n\tif s.CommandId != nil && len(*s.CommandId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"CommandId\", 36))\n\t}\n\tif s.Filters != nil && len(s.Filters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Filters\", 1))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetCommandId sets the CommandId field's value.\nfunc (s *ListCommandInvocationsInput) SetCommandId(v string) *ListCommandInvocationsInput {\n\ts.CommandId = &v\n\treturn s\n}\n\n// SetDetails sets the Details field's value.\nfunc (s *ListCommandInvocationsInput) SetDetails(v bool) *ListCommandInvocationsInput {\n\ts.Details = &v\n\treturn s\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *ListCommandInvocationsInput) SetFilters(v []*CommandFilter) *ListCommandInvocationsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *ListCommandInvocationsInput) SetInstanceId(v string) *ListCommandInvocationsInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListCommandInvocationsInput) SetMaxResults(v int64) *ListCommandInvocationsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListCommandInvocationsInput) SetNextToken(v string) *ListCommandInvocationsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListCommandInvocationsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// (Optional) A list of all invocations.\n\tCommandInvocations []*CommandInvocation `type:\"list\"`\n\n\t// (Optional) The token for the next set of items to return. (You received this\n\t// token from a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListCommandInvocationsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListCommandInvocationsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetCommandInvocations sets the CommandInvocations field's value.\nfunc (s *ListCommandInvocationsOutput) SetCommandInvocations(v []*CommandInvocation) *ListCommandInvocationsOutput {\n\ts.CommandInvocations = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListCommandInvocationsOutput) SetNextToken(v string) *ListCommandInvocationsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListCommandsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// (Optional) If provided, lists only the specified command.\n\tCommandId *string `min:\"36\" type:\"string\"`\n\n\t// (Optional) One or more filters. Use a filter to return a more specific list\n\t// of results.\n\tFilters []*CommandFilter `min:\"1\" type:\"list\"`\n\n\t// (Optional) Lists commands issued against this managed node ID.\n\t//\n\t// You can't specify a managed node ID in the same command that you specify\n\t// Status = Pending. This is because the command hasn't reached the managed\n\t// node yet.\n\tInstanceId *string `type:\"string\"`\n\n\t// (Optional) The maximum number of items to return for this call. The call\n\t// also returns a token that you can specify in a subsequent call to get the\n\t// next set of results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// (Optional) The token for the next set of items to return. (You received this\n\t// token from a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListCommandsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListCommandsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListCommandsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListCommandsInput\"}\n\tif s.CommandId != nil && len(*s.CommandId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"CommandId\", 36))\n\t}\n\tif s.Filters != nil && len(s.Filters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Filters\", 1))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetCommandId sets the CommandId field's value.\nfunc (s *ListCommandsInput) SetCommandId(v string) *ListCommandsInput {\n\ts.CommandId = &v\n\treturn s\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *ListCommandsInput) SetFilters(v []*CommandFilter) *ListCommandsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *ListCommandsInput) SetInstanceId(v string) *ListCommandsInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListCommandsInput) SetMaxResults(v int64) *ListCommandsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListCommandsInput) SetNextToken(v string) *ListCommandsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListCommandsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// (Optional) The list of commands requested by the user.\n\tCommands []*Command `type:\"list\"`\n\n\t// (Optional) The token for the next set of items to return. (You received this\n\t// token from a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListCommandsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListCommandsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetCommands sets the Commands field's value.\nfunc (s *ListCommandsOutput) SetCommands(v []*Command) *ListCommandsOutput {\n\ts.Commands = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListCommandsOutput) SetNextToken(v string) *ListCommandsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListComplianceItemsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more compliance filters. Use a filter to return a more specific list\n\t// of results.\n\tFilters []*ComplianceStringFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// The ID for the resources from which to get compliance information. Currently,\n\t// you can only specify one resource ID.\n\tResourceIds []*string `min:\"1\" type:\"list\"`\n\n\t// The type of resource from which to get compliance information. Currently,\n\t// the only supported resource type is ManagedInstance.\n\tResourceTypes []*string `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListComplianceItemsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListComplianceItemsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListComplianceItemsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListComplianceItemsInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.ResourceIds != nil && len(s.ResourceIds) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ResourceIds\", 1))\n\t}\n\tif s.ResourceTypes != nil && len(s.ResourceTypes) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ResourceTypes\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *ListComplianceItemsInput) SetFilters(v []*ComplianceStringFilter) *ListComplianceItemsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListComplianceItemsInput) SetMaxResults(v int64) *ListComplianceItemsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListComplianceItemsInput) SetNextToken(v string) *ListComplianceItemsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetResourceIds sets the ResourceIds field's value.\nfunc (s *ListComplianceItemsInput) SetResourceIds(v []*string) *ListComplianceItemsInput {\n\ts.ResourceIds = v\n\treturn s\n}\n\n// SetResourceTypes sets the ResourceTypes field's value.\nfunc (s *ListComplianceItemsInput) SetResourceTypes(v []*string) *ListComplianceItemsInput {\n\ts.ResourceTypes = v\n\treturn s\n}\n\ntype ListComplianceItemsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A list of compliance information for the specified resource ID.\n\tComplianceItems []*ComplianceItem `type:\"list\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListComplianceItemsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListComplianceItemsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetComplianceItems sets the ComplianceItems field's value.\nfunc (s *ListComplianceItemsOutput) SetComplianceItems(v []*ComplianceItem) *ListComplianceItemsOutput {\n\ts.ComplianceItems = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListComplianceItemsOutput) SetNextToken(v string) *ListComplianceItemsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListComplianceSummariesInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more compliance or inventory filters. Use a filter to return a more\n\t// specific list of results.\n\tFilters []*ComplianceStringFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. Currently, you can specify\n\t// null or 50. The call also returns a token that you can specify in a subsequent\n\t// call to get the next set of results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListComplianceSummariesInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListComplianceSummariesInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListComplianceSummariesInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListComplianceSummariesInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *ListComplianceSummariesInput) SetFilters(v []*ComplianceStringFilter) *ListComplianceSummariesInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListComplianceSummariesInput) SetMaxResults(v int64) *ListComplianceSummariesInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListComplianceSummariesInput) SetNextToken(v string) *ListComplianceSummariesInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListComplianceSummariesOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A list of compliant and non-compliant summary counts based on compliance\n\t// types. For example, this call returns State Manager associations, patches,\n\t// or custom compliance types according to the filter criteria that you specified.\n\tComplianceSummaryItems []*ComplianceSummaryItem `type:\"list\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListComplianceSummariesOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListComplianceSummariesOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetComplianceSummaryItems sets the ComplianceSummaryItems field's value.\nfunc (s *ListComplianceSummariesOutput) SetComplianceSummaryItems(v []*ComplianceSummaryItem) *ListComplianceSummariesOutput {\n\ts.ComplianceSummaryItems = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListComplianceSummariesOutput) SetNextToken(v string) *ListComplianceSummariesOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListDocumentMetadataHistoryInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The version of the change template.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The type of data for which details are being requested. Currently, the only\n\t// supported value is DocumentReviews.\n\t//\n\t// Metadata is a required field\n\tMetadata *string `type:\"string\" required:\"true\" enum:\"DocumentMetadataEnum\"`\n\n\t// The name of the change template.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListDocumentMetadataHistoryInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListDocumentMetadataHistoryInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListDocumentMetadataHistoryInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListDocumentMetadataHistoryInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Metadata == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Metadata\"))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *ListDocumentMetadataHistoryInput) SetDocumentVersion(v string) *ListDocumentMetadataHistoryInput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListDocumentMetadataHistoryInput) SetMaxResults(v int64) *ListDocumentMetadataHistoryInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetMetadata sets the Metadata field's value.\nfunc (s *ListDocumentMetadataHistoryInput) SetMetadata(v string) *ListDocumentMetadataHistoryInput {\n\ts.Metadata = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *ListDocumentMetadataHistoryInput) SetName(v string) *ListDocumentMetadataHistoryInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListDocumentMetadataHistoryInput) SetNextToken(v string) *ListDocumentMetadataHistoryInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListDocumentMetadataHistoryOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The user ID of the person in the organization who requested the review of\n\t// the change template.\n\tAuthor *string `type:\"string\"`\n\n\t// The version of the change template.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// Information about the response to the change template approval request.\n\tMetadata *DocumentMetadataResponseInfo `type:\"structure\"`\n\n\t// The name of the change template.\n\tName *string `type:\"string\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListDocumentMetadataHistoryOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListDocumentMetadataHistoryOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAuthor sets the Author field's value.\nfunc (s *ListDocumentMetadataHistoryOutput) SetAuthor(v string) *ListDocumentMetadataHistoryOutput {\n\ts.Author = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *ListDocumentMetadataHistoryOutput) SetDocumentVersion(v string) *ListDocumentMetadataHistoryOutput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetMetadata sets the Metadata field's value.\nfunc (s *ListDocumentMetadataHistoryOutput) SetMetadata(v *DocumentMetadataResponseInfo) *ListDocumentMetadataHistoryOutput {\n\ts.Metadata = v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *ListDocumentMetadataHistoryOutput) SetName(v string) *ListDocumentMetadataHistoryOutput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListDocumentMetadataHistoryOutput) SetNextToken(v string) *ListDocumentMetadataHistoryOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListDocumentVersionsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The name of the document. You can specify an Amazon Resource Name (ARN).\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListDocumentVersionsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListDocumentVersionsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListDocumentVersionsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListDocumentVersionsInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListDocumentVersionsInput) SetMaxResults(v int64) *ListDocumentVersionsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *ListDocumentVersionsInput) SetName(v string) *ListDocumentVersionsInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListDocumentVersionsInput) SetNextToken(v string) *ListDocumentVersionsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListDocumentVersionsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The document versions.\n\tDocumentVersions []*DocumentVersionInfo `min:\"1\" type:\"list\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListDocumentVersionsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListDocumentVersionsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetDocumentVersions sets the DocumentVersions field's value.\nfunc (s *ListDocumentVersionsOutput) SetDocumentVersions(v []*DocumentVersionInfo) *ListDocumentVersionsOutput {\n\ts.DocumentVersions = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListDocumentVersionsOutput) SetNextToken(v string) *ListDocumentVersionsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListDocumentsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// This data type is deprecated. Instead, use Filters.\n\tDocumentFilterList []*DocumentFilter `min:\"1\" type:\"list\"`\n\n\t// One or more DocumentKeyValuesFilter objects. Use a filter to return a more\n\t// specific list of results. For keys, you can specify one or more key-value\n\t// pair tags that have been applied to a document. Other valid keys include\n\t// Owner, Name, PlatformTypes, DocumentType, and TargetType. For example, to\n\t// return documents you own use Key=Owner,Values=Self. To specify a custom key-value\n\t// pair, use the format Key=tag:tagName,Values=valueName.\n\t//\n\t// This API operation only supports filtering documents by using a single tag\n\t// key and one or more tag values. For example: Key=tag:tagName,Values=valueName1,valueName2\n\tFilters []*DocumentKeyValuesFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListDocumentsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListDocumentsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListDocumentsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListDocumentsInput\"}\n\tif s.DocumentFilterList != nil && len(s.DocumentFilterList) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"DocumentFilterList\", 1))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.DocumentFilterList != nil {\n\t\tfor i, v := range s.DocumentFilterList {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"DocumentFilterList\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDocumentFilterList sets the DocumentFilterList field's value.\nfunc (s *ListDocumentsInput) SetDocumentFilterList(v []*DocumentFilter) *ListDocumentsInput {\n\ts.DocumentFilterList = v\n\treturn s\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *ListDocumentsInput) SetFilters(v []*DocumentKeyValuesFilter) *ListDocumentsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListDocumentsInput) SetMaxResults(v int64) *ListDocumentsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListDocumentsInput) SetNextToken(v string) *ListDocumentsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListDocumentsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The names of the SSM documents.\n\tDocumentIdentifiers []*DocumentIdentifier `type:\"list\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListDocumentsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListDocumentsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetDocumentIdentifiers sets the DocumentIdentifiers field's value.\nfunc (s *ListDocumentsOutput) SetDocumentIdentifiers(v []*DocumentIdentifier) *ListDocumentsOutput {\n\ts.DocumentIdentifiers = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListDocumentsOutput) SetNextToken(v string) *ListDocumentsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListInventoryEntriesInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more filters. Use a filter to return a more specific list of results.\n\tFilters []*InventoryFilter `min:\"1\" type:\"list\"`\n\n\t// The managed node ID for which you want inventory information.\n\t//\n\t// InstanceId is a required field\n\tInstanceId *string `type:\"string\" required:\"true\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The type of inventory item for which you want information.\n\t//\n\t// TypeName is a required field\n\tTypeName *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListInventoryEntriesInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListInventoryEntriesInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListInventoryEntriesInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListInventoryEntriesInput\"}\n\tif s.Filters != nil && len(s.Filters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Filters\", 1))\n\t}\n\tif s.InstanceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"InstanceId\"))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.TypeName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TypeName\"))\n\t}\n\tif s.TypeName != nil && len(*s.TypeName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TypeName\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *ListInventoryEntriesInput) SetFilters(v []*InventoryFilter) *ListInventoryEntriesInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *ListInventoryEntriesInput) SetInstanceId(v string) *ListInventoryEntriesInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListInventoryEntriesInput) SetMaxResults(v int64) *ListInventoryEntriesInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListInventoryEntriesInput) SetNextToken(v string) *ListInventoryEntriesInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetTypeName sets the TypeName field's value.\nfunc (s *ListInventoryEntriesInput) SetTypeName(v string) *ListInventoryEntriesInput {\n\ts.TypeName = &v\n\treturn s\n}\n\ntype ListInventoryEntriesOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time that inventory information was collected for the managed node(s).\n\tCaptureTime *string `type:\"string\"`\n\n\t// A list of inventory items on the managed node(s).\n\tEntries []map[string]*string `type:\"list\"`\n\n\t// The managed node ID targeted by the request to query inventory information.\n\tInstanceId *string `type:\"string\"`\n\n\t// The token to use when requesting the next set of items. If there are no additional\n\t// items to return, the string is empty.\n\tNextToken *string `type:\"string\"`\n\n\t// The inventory schema version used by the managed node(s).\n\tSchemaVersion *string `type:\"string\"`\n\n\t// The type of inventory item returned by the request.\n\tTypeName *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListInventoryEntriesOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListInventoryEntriesOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetCaptureTime sets the CaptureTime field's value.\nfunc (s *ListInventoryEntriesOutput) SetCaptureTime(v string) *ListInventoryEntriesOutput {\n\ts.CaptureTime = &v\n\treturn s\n}\n\n// SetEntries sets the Entries field's value.\nfunc (s *ListInventoryEntriesOutput) SetEntries(v []map[string]*string) *ListInventoryEntriesOutput {\n\ts.Entries = v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *ListInventoryEntriesOutput) SetInstanceId(v string) *ListInventoryEntriesOutput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListInventoryEntriesOutput) SetNextToken(v string) *ListInventoryEntriesOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetSchemaVersion sets the SchemaVersion field's value.\nfunc (s *ListInventoryEntriesOutput) SetSchemaVersion(v string) *ListInventoryEntriesOutput {\n\ts.SchemaVersion = &v\n\treturn s\n}\n\n// SetTypeName sets the TypeName field's value.\nfunc (s *ListInventoryEntriesOutput) SetTypeName(v string) *ListInventoryEntriesOutput {\n\ts.TypeName = &v\n\treturn s\n}\n\ntype ListOpsItemEventsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more OpsItem filters. Use a filter to return a more specific list\n\t// of results.\n\tFilters []*OpsItemEventFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListOpsItemEventsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListOpsItemEventsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListOpsItemEventsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListOpsItemEventsInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *ListOpsItemEventsInput) SetFilters(v []*OpsItemEventFilter) *ListOpsItemEventsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListOpsItemEventsInput) SetMaxResults(v int64) *ListOpsItemEventsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListOpsItemEventsInput) SetNextToken(v string) *ListOpsItemEventsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListOpsItemEventsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// A list of event information for the specified OpsItems.\n\tSummaries []*OpsItemEventSummary `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListOpsItemEventsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListOpsItemEventsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListOpsItemEventsOutput) SetNextToken(v string) *ListOpsItemEventsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetSummaries sets the Summaries field's value.\nfunc (s *ListOpsItemEventsOutput) SetSummaries(v []*OpsItemEventSummary) *ListOpsItemEventsOutput {\n\ts.Summaries = v\n\treturn s\n}\n\ntype ListOpsItemRelatedItemsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more OpsItem filters. Use a filter to return a more specific list\n\t// of results.\n\tFilters []*OpsItemRelatedItemsFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// The token for the next set of items to return. (You received this token from\n\t// a previous call.)\n\tNextToken *string `type:\"string\"`\n\n\t// The ID of the OpsItem for which you want to list all related-item resources.\n\tOpsItemId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListOpsItemRelatedItemsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListOpsItemRelatedItemsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListOpsItemRelatedItemsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListOpsItemRelatedItemsInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *ListOpsItemRelatedItemsInput) SetFilters(v []*OpsItemRelatedItemsFilter) *ListOpsItemRelatedItemsInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListOpsItemRelatedItemsInput) SetMaxResults(v int64) *ListOpsItemRelatedItemsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListOpsItemRelatedItemsInput) SetNextToken(v string) *ListOpsItemRelatedItemsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *ListOpsItemRelatedItemsInput) SetOpsItemId(v string) *ListOpsItemRelatedItemsInput {\n\ts.OpsItemId = &v\n\treturn s\n}\n\ntype ListOpsItemRelatedItemsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// A list of related-item resources for the specified OpsItem.\n\tSummaries []*OpsItemRelatedItemSummary `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListOpsItemRelatedItemsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListOpsItemRelatedItemsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListOpsItemRelatedItemsOutput) SetNextToken(v string) *ListOpsItemRelatedItemsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetSummaries sets the Summaries field's value.\nfunc (s *ListOpsItemRelatedItemsOutput) SetSummaries(v []*OpsItemRelatedItemSummary) *ListOpsItemRelatedItemsOutput {\n\ts.Summaries = v\n\treturn s\n}\n\ntype ListOpsMetadataInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more filters to limit the number of OpsMetadata objects returned by\n\t// the call.\n\tFilters []*OpsMetadataFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListOpsMetadataInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListOpsMetadataInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListOpsMetadataInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListOpsMetadataInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *ListOpsMetadataInput) SetFilters(v []*OpsMetadataFilter) *ListOpsMetadataInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListOpsMetadataInput) SetMaxResults(v int64) *ListOpsMetadataInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListOpsMetadataInput) SetNextToken(v string) *ListOpsMetadataInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListOpsMetadataOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// Returns a list of OpsMetadata objects.\n\tOpsMetadataList []*OpsMetadata `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListOpsMetadataOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListOpsMetadataOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListOpsMetadataOutput) SetNextToken(v string) *ListOpsMetadataOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetOpsMetadataList sets the OpsMetadataList field's value.\nfunc (s *ListOpsMetadataOutput) SetOpsMetadataList(v []*OpsMetadata) *ListOpsMetadataOutput {\n\ts.OpsMetadataList = v\n\treturn s\n}\n\ntype ListResourceComplianceSummariesInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more filters. Use a filter to return a more specific list of results.\n\tFilters []*ComplianceStringFilter `type:\"list\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListResourceComplianceSummariesInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListResourceComplianceSummariesInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListResourceComplianceSummariesInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListResourceComplianceSummariesInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *ListResourceComplianceSummariesInput) SetFilters(v []*ComplianceStringFilter) *ListResourceComplianceSummariesInput {\n\ts.Filters = v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListResourceComplianceSummariesInput) SetMaxResults(v int64) *ListResourceComplianceSummariesInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListResourceComplianceSummariesInput) SetNextToken(v string) *ListResourceComplianceSummariesInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListResourceComplianceSummariesOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// A summary count for specified or targeted managed nodes. Summary count includes\n\t// information about compliant and non-compliant State Manager associations,\n\t// patch status, or custom items according to the filter criteria that you specify.\n\tResourceComplianceSummaryItems []*ResourceComplianceSummaryItem `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListResourceComplianceSummariesOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListResourceComplianceSummariesOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListResourceComplianceSummariesOutput) SetNextToken(v string) *ListResourceComplianceSummariesOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetResourceComplianceSummaryItems sets the ResourceComplianceSummaryItems field's value.\nfunc (s *ListResourceComplianceSummariesOutput) SetResourceComplianceSummaryItems(v []*ResourceComplianceSummaryItem) *ListResourceComplianceSummariesOutput {\n\ts.ResourceComplianceSummaryItems = v\n\treturn s\n}\n\ntype ListResourceDataSyncInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The maximum number of items to return for this call. The call also returns\n\t// a token that you can specify in a subsequent call to get the next set of\n\t// results.\n\tMaxResults *int64 `min:\"1\" type:\"integer\"`\n\n\t// A token to start the list. Use this token to get the next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// View a list of resource data syncs according to the sync type. Specify SyncToDestination\n\t// to view resource data syncs that synchronize data to an Amazon S3 bucket.\n\t// Specify SyncFromSource to view resource data syncs from Organizations or\n\t// from multiple Amazon Web Services Regions.\n\tSyncType *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListResourceDataSyncInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListResourceDataSyncInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListResourceDataSyncInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListResourceDataSyncInput\"}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\tif s.SyncType != nil && len(*s.SyncType) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SyncType\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListResourceDataSyncInput) SetMaxResults(v int64) *ListResourceDataSyncInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListResourceDataSyncInput) SetNextToken(v string) *ListResourceDataSyncInput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetSyncType sets the SyncType field's value.\nfunc (s *ListResourceDataSyncInput) SetSyncType(v string) *ListResourceDataSyncInput {\n\ts.SyncType = &v\n\treturn s\n}\n\ntype ListResourceDataSyncOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The token for the next set of items to return. Use this token to get the\n\t// next set of results.\n\tNextToken *string `type:\"string\"`\n\n\t// A list of your current resource data sync configurations and their statuses.\n\tResourceDataSyncItems []*ResourceDataSyncItem `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListResourceDataSyncOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListResourceDataSyncOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListResourceDataSyncOutput) SetNextToken(v string) *ListResourceDataSyncOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetResourceDataSyncItems sets the ResourceDataSyncItems field's value.\nfunc (s *ListResourceDataSyncOutput) SetResourceDataSyncItems(v []*ResourceDataSyncItem) *ListResourceDataSyncOutput {\n\ts.ResourceDataSyncItems = v\n\treturn s\n}\n\ntype ListTagsForResourceInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The resource ID for which you want to see a list of tags.\n\t//\n\t// ResourceId is a required field\n\tResourceId *string `type:\"string\" required:\"true\"`\n\n\t// Returns a list of tags for a specific resource type.\n\t//\n\t// ResourceType is a required field\n\tResourceType *string `type:\"string\" required:\"true\" enum:\"ResourceTypeForTagging\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListTagsForResourceInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListTagsForResourceInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListTagsForResourceInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListTagsForResourceInput\"}\n\tif s.ResourceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceId\"))\n\t}\n\tif s.ResourceType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceType\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetResourceId sets the ResourceId field's value.\nfunc (s *ListTagsForResourceInput) SetResourceId(v string) *ListTagsForResourceInput {\n\ts.ResourceId = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *ListTagsForResourceInput) SetResourceType(v string) *ListTagsForResourceInput {\n\ts.ResourceType = &v\n\treturn s\n}\n\ntype ListTagsForResourceOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A list of tags.\n\tTagList []*Tag `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListTagsForResourceOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListTagsForResourceOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetTagList sets the TagList field's value.\nfunc (s *ListTagsForResourceOutput) SetTagList(v []*Tag) *ListTagsForResourceOutput {\n\ts.TagList = v\n\treturn s\n}\n\n// Information about an Amazon Simple Storage Service (Amazon S3) bucket to\n// write managed node-level logs to.\n//\n// LoggingInfo has been deprecated. To specify an Amazon Simple Storage Service\n// (Amazon S3) bucket to contain logs, instead use the OutputS3BucketName and\n// OutputS3KeyPrefix options in the TaskInvocationParameters structure. For\n// information about how Amazon Web Services Systems Manager handles these options\n// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\ntype LoggingInfo struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of an S3 bucket where execution logs are stored.\n\t//\n\t// S3BucketName is a required field\n\tS3BucketName *string `min:\"3\" type:\"string\" required:\"true\"`\n\n\t// (Optional) The S3 bucket subfolder.\n\tS3KeyPrefix *string `type:\"string\"`\n\n\t// The Amazon Web Services Region where the S3 bucket is located.\n\t//\n\t// S3Region is a required field\n\tS3Region *string `min:\"3\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LoggingInfo) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LoggingInfo) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *LoggingInfo) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"LoggingInfo\"}\n\tif s.S3BucketName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"S3BucketName\"))\n\t}\n\tif s.S3BucketName != nil && len(*s.S3BucketName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"S3BucketName\", 3))\n\t}\n\tif s.S3Region == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"S3Region\"))\n\t}\n\tif s.S3Region != nil && len(*s.S3Region) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"S3Region\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetS3BucketName sets the S3BucketName field's value.\nfunc (s *LoggingInfo) SetS3BucketName(v string) *LoggingInfo {\n\ts.S3BucketName = &v\n\treturn s\n}\n\n// SetS3KeyPrefix sets the S3KeyPrefix field's value.\nfunc (s *LoggingInfo) SetS3KeyPrefix(v string) *LoggingInfo {\n\ts.S3KeyPrefix = &v\n\treturn s\n}\n\n// SetS3Region sets the S3Region field's value.\nfunc (s *LoggingInfo) SetS3Region(v string) *LoggingInfo {\n\ts.S3Region = &v\n\treturn s\n}\n\n// The parameters for an AUTOMATION task type.\ntype MaintenanceWindowAutomationParameters struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The version of an Automation runbook to use during task execution.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The parameters for the AUTOMATION task.\n\t//\n\t// For information about specifying and updating task parameters, see RegisterTaskWithMaintenanceWindow\n\t// and UpdateMaintenanceWindowTask.\n\t//\n\t// LoggingInfo has been deprecated. To specify an Amazon Simple Storage Service\n\t// (Amazon S3) bucket to contain logs, instead use the OutputS3BucketName and\n\t// OutputS3KeyPrefix options in the TaskInvocationParameters structure. For\n\t// information about how Amazon Web Services Systems Manager handles these options\n\t// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n\t//\n\t// TaskParameters has been deprecated. To specify parameters to pass to a task\n\t// when it runs, instead use the Parameters option in the TaskInvocationParameters\n\t// structure. For information about how Systems Manager handles these options\n\t// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n\t//\n\t// For AUTOMATION task types, Amazon Web Services Systems Manager ignores any\n\t// values specified for these parameters.\n\tParameters map[string][]*string `min:\"1\" type:\"map\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowAutomationParameters) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowAutomationParameters) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *MaintenanceWindowAutomationParameters) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"MaintenanceWindowAutomationParameters\"}\n\tif s.Parameters != nil && len(s.Parameters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Parameters\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *MaintenanceWindowAutomationParameters) SetDocumentVersion(v string) *MaintenanceWindowAutomationParameters {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *MaintenanceWindowAutomationParameters) SetParameters(v map[string][]*string) *MaintenanceWindowAutomationParameters {\n\ts.Parameters = v\n\treturn s\n}\n\n// Describes the information about an execution of a maintenance window.\ntype MaintenanceWindowExecution struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time the execution finished.\n\tEndTime *time.Time `type:\"timestamp\"`\n\n\t// The time the execution started.\n\tStartTime *time.Time `type:\"timestamp\"`\n\n\t// The status of the execution.\n\tStatus *string `type:\"string\" enum:\"MaintenanceWindowExecutionStatus\"`\n\n\t// The details explaining the status. Not available for all status values.\n\tStatusDetails *string `type:\"string\"`\n\n\t// The ID of the maintenance window execution.\n\tWindowExecutionId *string `min:\"36\" type:\"string\"`\n\n\t// The ID of the maintenance window.\n\tWindowId *string `min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowExecution) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowExecution) GoString() string {\n\treturn s.String()\n}\n\n// SetEndTime sets the EndTime field's value.\nfunc (s *MaintenanceWindowExecution) SetEndTime(v time.Time) *MaintenanceWindowExecution {\n\ts.EndTime = &v\n\treturn s\n}\n\n// SetStartTime sets the StartTime field's value.\nfunc (s *MaintenanceWindowExecution) SetStartTime(v time.Time) *MaintenanceWindowExecution {\n\ts.StartTime = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *MaintenanceWindowExecution) SetStatus(v string) *MaintenanceWindowExecution {\n\ts.Status = &v\n\treturn s\n}\n\n// SetStatusDetails sets the StatusDetails field's value.\nfunc (s *MaintenanceWindowExecution) SetStatusDetails(v string) *MaintenanceWindowExecution {\n\ts.StatusDetails = &v\n\treturn s\n}\n\n// SetWindowExecutionId sets the WindowExecutionId field's value.\nfunc (s *MaintenanceWindowExecution) SetWindowExecutionId(v string) *MaintenanceWindowExecution {\n\ts.WindowExecutionId = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *MaintenanceWindowExecution) SetWindowId(v string) *MaintenanceWindowExecution {\n\ts.WindowId = &v\n\treturn s\n}\n\n// Information about a task execution performed as part of a maintenance window\n// execution.\ntype MaintenanceWindowExecutionTaskIdentity struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The details for the CloudWatch alarm applied to your maintenance window task.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// The time the task execution finished.\n\tEndTime *time.Time `type:\"timestamp\"`\n\n\t// The time the task execution started.\n\tStartTime *time.Time `type:\"timestamp\"`\n\n\t// The status of the task execution.\n\tStatus *string `type:\"string\" enum:\"MaintenanceWindowExecutionStatus\"`\n\n\t// The details explaining the status of the task execution. Not available for\n\t// all status values.\n\tStatusDetails *string `type:\"string\"`\n\n\t// The Amazon Resource Name (ARN) of the task that ran.\n\tTaskArn *string `min:\"1\" type:\"string\"`\n\n\t// The ID of the specific task execution in the maintenance window execution.\n\tTaskExecutionId *string `min:\"36\" type:\"string\"`\n\n\t// The type of task that ran.\n\tTaskType *string `type:\"string\" enum:\"MaintenanceWindowTaskType\"`\n\n\t// The CloudWatch alarm that was invoked by the maintenance window task.\n\tTriggeredAlarms []*AlarmStateInformation `min:\"1\" type:\"list\"`\n\n\t// The ID of the maintenance window execution that ran the task.\n\tWindowExecutionId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowExecutionTaskIdentity) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowExecutionTaskIdentity) GoString() string {\n\treturn s.String()\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *MaintenanceWindowExecutionTaskIdentity) SetAlarmConfiguration(v *AlarmConfiguration) *MaintenanceWindowExecutionTaskIdentity {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetEndTime sets the EndTime field's value.\nfunc (s *MaintenanceWindowExecutionTaskIdentity) SetEndTime(v time.Time) *MaintenanceWindowExecutionTaskIdentity {\n\ts.EndTime = &v\n\treturn s\n}\n\n// SetStartTime sets the StartTime field's value.\nfunc (s *MaintenanceWindowExecutionTaskIdentity) SetStartTime(v time.Time) *MaintenanceWindowExecutionTaskIdentity {\n\ts.StartTime = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *MaintenanceWindowExecutionTaskIdentity) SetStatus(v string) *MaintenanceWindowExecutionTaskIdentity {\n\ts.Status = &v\n\treturn s\n}\n\n// SetStatusDetails sets the StatusDetails field's value.\nfunc (s *MaintenanceWindowExecutionTaskIdentity) SetStatusDetails(v string) *MaintenanceWindowExecutionTaskIdentity {\n\ts.StatusDetails = &v\n\treturn s\n}\n\n// SetTaskArn sets the TaskArn field's value.\nfunc (s *MaintenanceWindowExecutionTaskIdentity) SetTaskArn(v string) *MaintenanceWindowExecutionTaskIdentity {\n\ts.TaskArn = &v\n\treturn s\n}\n\n// SetTaskExecutionId sets the TaskExecutionId field's value.\nfunc (s *MaintenanceWindowExecutionTaskIdentity) SetTaskExecutionId(v string) *MaintenanceWindowExecutionTaskIdentity {\n\ts.TaskExecutionId = &v\n\treturn s\n}\n\n// SetTaskType sets the TaskType field's value.\nfunc (s *MaintenanceWindowExecutionTaskIdentity) SetTaskType(v string) *MaintenanceWindowExecutionTaskIdentity {\n\ts.TaskType = &v\n\treturn s\n}\n\n// SetTriggeredAlarms sets the TriggeredAlarms field's value.\nfunc (s *MaintenanceWindowExecutionTaskIdentity) SetTriggeredAlarms(v []*AlarmStateInformation) *MaintenanceWindowExecutionTaskIdentity {\n\ts.TriggeredAlarms = v\n\treturn s\n}\n\n// SetWindowExecutionId sets the WindowExecutionId field's value.\nfunc (s *MaintenanceWindowExecutionTaskIdentity) SetWindowExecutionId(v string) *MaintenanceWindowExecutionTaskIdentity {\n\ts.WindowExecutionId = &v\n\treturn s\n}\n\n// Describes the information about a task invocation for a particular target\n// as part of a task execution performed as part of a maintenance window execution.\ntype MaintenanceWindowExecutionTaskInvocationIdentity struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time the invocation finished.\n\tEndTime *time.Time `type:\"timestamp\"`\n\n\t// The ID of the action performed in the service that actually handled the task\n\t// invocation. If the task type is RUN_COMMAND, this value is the command ID.\n\tExecutionId *string `type:\"string\"`\n\n\t// The ID of the task invocation.\n\tInvocationId *string `min:\"36\" type:\"string\"`\n\n\t// User-provided value that was specified when the target was registered with\n\t// the maintenance window. This was also included in any Amazon CloudWatch Events\n\t// events raised during the task invocation.\n\t//\n\t// OwnerInformation is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by MaintenanceWindowExecutionTaskInvocationIdentity's\n\t// String and GoString methods.\n\tOwnerInformation *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The parameters that were provided for the invocation when it was run.\n\t//\n\t// Parameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by MaintenanceWindowExecutionTaskInvocationIdentity's\n\t// String and GoString methods.\n\tParameters *string `type:\"string\" sensitive:\"true\"`\n\n\t// The time the invocation started.\n\tStartTime *time.Time `type:\"timestamp\"`\n\n\t// The status of the task invocation.\n\tStatus *string `type:\"string\" enum:\"MaintenanceWindowExecutionStatus\"`\n\n\t// The details explaining the status of the task invocation. Not available for\n\t// all status values.\n\tStatusDetails *string `type:\"string\"`\n\n\t// The ID of the specific task execution in the maintenance window execution.\n\tTaskExecutionId *string `min:\"36\" type:\"string\"`\n\n\t// The task type.\n\tTaskType *string `type:\"string\" enum:\"MaintenanceWindowTaskType\"`\n\n\t// The ID of the maintenance window execution that ran the task.\n\tWindowExecutionId *string `min:\"36\" type:\"string\"`\n\n\t// The ID of the target definition in this maintenance window the invocation\n\t// was performed for.\n\tWindowTargetId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowExecutionTaskInvocationIdentity) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowExecutionTaskInvocationIdentity) GoString() string {\n\treturn s.String()\n}\n\n// SetEndTime sets the EndTime field's value.\nfunc (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetEndTime(v time.Time) *MaintenanceWindowExecutionTaskInvocationIdentity {\n\ts.EndTime = &v\n\treturn s\n}\n\n// SetExecutionId sets the ExecutionId field's value.\nfunc (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetExecutionId(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {\n\ts.ExecutionId = &v\n\treturn s\n}\n\n// SetInvocationId sets the InvocationId field's value.\nfunc (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetInvocationId(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {\n\ts.InvocationId = &v\n\treturn s\n}\n\n// SetOwnerInformation sets the OwnerInformation field's value.\nfunc (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetOwnerInformation(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {\n\ts.OwnerInformation = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetParameters(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {\n\ts.Parameters = &v\n\treturn s\n}\n\n// SetStartTime sets the StartTime field's value.\nfunc (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetStartTime(v time.Time) *MaintenanceWindowExecutionTaskInvocationIdentity {\n\ts.StartTime = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetStatus(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {\n\ts.Status = &v\n\treturn s\n}\n\n// SetStatusDetails sets the StatusDetails field's value.\nfunc (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetStatusDetails(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {\n\ts.StatusDetails = &v\n\treturn s\n}\n\n// SetTaskExecutionId sets the TaskExecutionId field's value.\nfunc (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetTaskExecutionId(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {\n\ts.TaskExecutionId = &v\n\treturn s\n}\n\n// SetTaskType sets the TaskType field's value.\nfunc (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetTaskType(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {\n\ts.TaskType = &v\n\treturn s\n}\n\n// SetWindowExecutionId sets the WindowExecutionId field's value.\nfunc (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetWindowExecutionId(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {\n\ts.WindowExecutionId = &v\n\treturn s\n}\n\n// SetWindowTargetId sets the WindowTargetId field's value.\nfunc (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetWindowTargetId(v string) *MaintenanceWindowExecutionTaskInvocationIdentity {\n\ts.WindowTargetId = &v\n\treturn s\n}\n\n// Filter used in the request. Supported filter keys depend on the API operation\n// that includes the filter. API operations that use MaintenanceWindowFilter>\n// include the following:\n//\n//   - DescribeMaintenanceWindowExecutions\n//\n//   - DescribeMaintenanceWindowExecutionTaskInvocations\n//\n//   - DescribeMaintenanceWindowExecutionTasks\n//\n//   - DescribeMaintenanceWindows\n//\n//   - DescribeMaintenanceWindowTargets\n//\n//   - DescribeMaintenanceWindowTasks\ntype MaintenanceWindowFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter.\n\tKey *string `min:\"1\" type:\"string\"`\n\n\t// The filter values.\n\tValues []*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *MaintenanceWindowFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"MaintenanceWindowFilter\"}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *MaintenanceWindowFilter) SetKey(v string) *MaintenanceWindowFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *MaintenanceWindowFilter) SetValues(v []*string) *MaintenanceWindowFilter {\n\ts.Values = v\n\treturn s\n}\n\n// Information about the maintenance window.\ntype MaintenanceWindowIdentity struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The number of hours before the end of the maintenance window that Amazon\n\t// Web Services Systems Manager stops scheduling new tasks for execution.\n\tCutoff *int64 `type:\"integer\"`\n\n\t// A description of the maintenance window.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by MaintenanceWindowIdentity's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The duration of the maintenance window in hours.\n\tDuration *int64 `min:\"1\" type:\"integer\"`\n\n\t// Indicates whether the maintenance window is enabled.\n\tEnabled *bool `type:\"boolean\"`\n\n\t// The date and time, in ISO-8601 Extended format, for when the maintenance\n\t// window is scheduled to become inactive.\n\tEndDate *string `type:\"string\"`\n\n\t// The name of the maintenance window.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// The next time the maintenance window will actually run, taking into account\n\t// any specified times for the maintenance window to become active or inactive.\n\tNextExecutionTime *string `type:\"string\"`\n\n\t// The schedule of the maintenance window in the form of a cron or rate expression.\n\tSchedule *string `min:\"1\" type:\"string\"`\n\n\t// The number of days to wait to run a maintenance window after the scheduled\n\t// cron expression date and time.\n\tScheduleOffset *int64 `min:\"1\" type:\"integer\"`\n\n\t// The time zone that the scheduled maintenance window executions are based\n\t// on, in Internet Assigned Numbers Authority (IANA) format.\n\tScheduleTimezone *string `type:\"string\"`\n\n\t// The date and time, in ISO-8601 Extended format, for when the maintenance\n\t// window is scheduled to become active.\n\tStartDate *string `type:\"string\"`\n\n\t// The ID of the maintenance window.\n\tWindowId *string `min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowIdentity) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowIdentity) GoString() string {\n\treturn s.String()\n}\n\n// SetCutoff sets the Cutoff field's value.\nfunc (s *MaintenanceWindowIdentity) SetCutoff(v int64) *MaintenanceWindowIdentity {\n\ts.Cutoff = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *MaintenanceWindowIdentity) SetDescription(v string) *MaintenanceWindowIdentity {\n\ts.Description = &v\n\treturn s\n}\n\n// SetDuration sets the Duration field's value.\nfunc (s *MaintenanceWindowIdentity) SetDuration(v int64) *MaintenanceWindowIdentity {\n\ts.Duration = &v\n\treturn s\n}\n\n// SetEnabled sets the Enabled field's value.\nfunc (s *MaintenanceWindowIdentity) SetEnabled(v bool) *MaintenanceWindowIdentity {\n\ts.Enabled = &v\n\treturn s\n}\n\n// SetEndDate sets the EndDate field's value.\nfunc (s *MaintenanceWindowIdentity) SetEndDate(v string) *MaintenanceWindowIdentity {\n\ts.EndDate = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *MaintenanceWindowIdentity) SetName(v string) *MaintenanceWindowIdentity {\n\ts.Name = &v\n\treturn s\n}\n\n// SetNextExecutionTime sets the NextExecutionTime field's value.\nfunc (s *MaintenanceWindowIdentity) SetNextExecutionTime(v string) *MaintenanceWindowIdentity {\n\ts.NextExecutionTime = &v\n\treturn s\n}\n\n// SetSchedule sets the Schedule field's value.\nfunc (s *MaintenanceWindowIdentity) SetSchedule(v string) *MaintenanceWindowIdentity {\n\ts.Schedule = &v\n\treturn s\n}\n\n// SetScheduleOffset sets the ScheduleOffset field's value.\nfunc (s *MaintenanceWindowIdentity) SetScheduleOffset(v int64) *MaintenanceWindowIdentity {\n\ts.ScheduleOffset = &v\n\treturn s\n}\n\n// SetScheduleTimezone sets the ScheduleTimezone field's value.\nfunc (s *MaintenanceWindowIdentity) SetScheduleTimezone(v string) *MaintenanceWindowIdentity {\n\ts.ScheduleTimezone = &v\n\treturn s\n}\n\n// SetStartDate sets the StartDate field's value.\nfunc (s *MaintenanceWindowIdentity) SetStartDate(v string) *MaintenanceWindowIdentity {\n\ts.StartDate = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *MaintenanceWindowIdentity) SetWindowId(v string) *MaintenanceWindowIdentity {\n\ts.WindowId = &v\n\treturn s\n}\n\n// The maintenance window to which the specified target belongs.\ntype MaintenanceWindowIdentityForTarget struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the maintenance window.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// The ID of the maintenance window.\n\tWindowId *string `min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowIdentityForTarget) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowIdentityForTarget) GoString() string {\n\treturn s.String()\n}\n\n// SetName sets the Name field's value.\nfunc (s *MaintenanceWindowIdentityForTarget) SetName(v string) *MaintenanceWindowIdentityForTarget {\n\ts.Name = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *MaintenanceWindowIdentityForTarget) SetWindowId(v string) *MaintenanceWindowIdentityForTarget {\n\ts.WindowId = &v\n\treturn s\n}\n\n// The parameters for a LAMBDA task type.\n//\n// For information about specifying and updating task parameters, see RegisterTaskWithMaintenanceWindow\n// and UpdateMaintenanceWindowTask.\n//\n// LoggingInfo has been deprecated. To specify an Amazon Simple Storage Service\n// (Amazon S3) bucket to contain logs, instead use the OutputS3BucketName and\n// OutputS3KeyPrefix options in the TaskInvocationParameters structure. For\n// information about how Amazon Web Services Systems Manager handles these options\n// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n//\n// TaskParameters has been deprecated. To specify parameters to pass to a task\n// when it runs, instead use the Parameters option in the TaskInvocationParameters\n// structure. For information about how Systems Manager handles these options\n// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n//\n// For Lambda tasks, Systems Manager ignores any values specified for TaskParameters\n// and LoggingInfo.\ntype MaintenanceWindowLambdaParameters struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Pass client-specific information to the Lambda function that you are invoking.\n\t// You can then process the client information in your Lambda function as you\n\t// choose through the context variable.\n\tClientContext *string `min:\"1\" type:\"string\"`\n\n\t// JSON to provide to your Lambda function as input.\n\t//\n\t// Payload is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by MaintenanceWindowLambdaParameters's\n\t// String and GoString methods.\n\t//\n\t// Payload is automatically base64 encoded/decoded by the SDK.\n\tPayload []byte `type:\"blob\" sensitive:\"true\"`\n\n\t// (Optional) Specify an Lambda function version or alias name. If you specify\n\t// a function version, the operation uses the qualified function Amazon Resource\n\t// Name (ARN) to invoke a specific Lambda function. If you specify an alias\n\t// name, the operation uses the alias ARN to invoke the Lambda function version\n\t// to which the alias points.\n\tQualifier *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowLambdaParameters) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowLambdaParameters) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *MaintenanceWindowLambdaParameters) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"MaintenanceWindowLambdaParameters\"}\n\tif s.ClientContext != nil && len(*s.ClientContext) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ClientContext\", 1))\n\t}\n\tif s.Qualifier != nil && len(*s.Qualifier) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Qualifier\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetClientContext sets the ClientContext field's value.\nfunc (s *MaintenanceWindowLambdaParameters) SetClientContext(v string) *MaintenanceWindowLambdaParameters {\n\ts.ClientContext = &v\n\treturn s\n}\n\n// SetPayload sets the Payload field's value.\nfunc (s *MaintenanceWindowLambdaParameters) SetPayload(v []byte) *MaintenanceWindowLambdaParameters {\n\ts.Payload = v\n\treturn s\n}\n\n// SetQualifier sets the Qualifier field's value.\nfunc (s *MaintenanceWindowLambdaParameters) SetQualifier(v string) *MaintenanceWindowLambdaParameters {\n\ts.Qualifier = &v\n\treturn s\n}\n\n// The parameters for a RUN_COMMAND task type.\n//\n// For information about specifying and updating task parameters, see RegisterTaskWithMaintenanceWindow\n// and UpdateMaintenanceWindowTask.\n//\n// LoggingInfo has been deprecated. To specify an Amazon Simple Storage Service\n// (Amazon S3) bucket to contain logs, instead use the OutputS3BucketName and\n// OutputS3KeyPrefix options in the TaskInvocationParameters structure. For\n// information about how Amazon Web Services Systems Manager handles these options\n// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n//\n// TaskParameters has been deprecated. To specify parameters to pass to a task\n// when it runs, instead use the Parameters option in the TaskInvocationParameters\n// structure. For information about how Systems Manager handles these options\n// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n//\n// For RUN_COMMAND tasks, Systems Manager uses specified values for TaskParameters\n// and LoggingInfo only if no values are specified for TaskInvocationParameters.\ntype MaintenanceWindowRunCommandParameters struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Configuration options for sending command output to Amazon CloudWatch Logs.\n\tCloudWatchOutputConfig *CloudWatchOutputConfig `type:\"structure\"`\n\n\t// Information about the commands to run.\n\tComment *string `type:\"string\"`\n\n\t// The SHA-256 or SHA-1 hash created by the system when the document was created.\n\t// SHA-1 hashes have been deprecated.\n\tDocumentHash *string `type:\"string\"`\n\n\t// SHA-256 or SHA-1. SHA-1 hashes have been deprecated.\n\tDocumentHashType *string `type:\"string\" enum:\"DocumentHashType\"`\n\n\t// The Amazon Web Services Systems Manager document (SSM document) version to\n\t// use in the request. You can specify $DEFAULT, $LATEST, or a specific version\n\t// number. If you run commands by using the Amazon Web Services CLI, then you\n\t// must escape the first two options by using a backslash. If you specify a\n\t// version number, then you don't need to use the backslash. For example:\n\t//\n\t// --document-version \"\\$DEFAULT\"\n\t//\n\t// --document-version \"\\$LATEST\"\n\t//\n\t// --document-version \"3\"\n\tDocumentVersion *string `type:\"string\"`\n\n\t// Configurations for sending notifications about command status changes on\n\t// a per-managed node basis.\n\tNotificationConfig *NotificationConfig `type:\"structure\"`\n\n\t// The name of the Amazon Simple Storage Service (Amazon S3) bucket.\n\tOutputS3BucketName *string `min:\"3\" type:\"string\"`\n\n\t// The S3 bucket subfolder.\n\tOutputS3KeyPrefix *string `type:\"string\"`\n\n\t// The parameters for the RUN_COMMAND task execution.\n\t//\n\t// Parameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by MaintenanceWindowRunCommandParameters's\n\t// String and GoString methods.\n\tParameters map[string][]*string `type:\"map\" sensitive:\"true\"`\n\n\t// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)\n\t// service role to use to publish Amazon Simple Notification Service (Amazon\n\t// SNS) notifications for maintenance window Run Command tasks.\n\tServiceRoleArn *string `type:\"string\"`\n\n\t// If this time is reached and the command hasn't already started running, it\n\t// doesn't run.\n\tTimeoutSeconds *int64 `min:\"30\" type:\"integer\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowRunCommandParameters) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowRunCommandParameters) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *MaintenanceWindowRunCommandParameters) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"MaintenanceWindowRunCommandParameters\"}\n\tif s.OutputS3BucketName != nil && len(*s.OutputS3BucketName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OutputS3BucketName\", 3))\n\t}\n\tif s.TimeoutSeconds != nil && *s.TimeoutSeconds < 30 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"TimeoutSeconds\", 30))\n\t}\n\tif s.CloudWatchOutputConfig != nil {\n\t\tif err := s.CloudWatchOutputConfig.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"CloudWatchOutputConfig\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetCloudWatchOutputConfig sets the CloudWatchOutputConfig field's value.\nfunc (s *MaintenanceWindowRunCommandParameters) SetCloudWatchOutputConfig(v *CloudWatchOutputConfig) *MaintenanceWindowRunCommandParameters {\n\ts.CloudWatchOutputConfig = v\n\treturn s\n}\n\n// SetComment sets the Comment field's value.\nfunc (s *MaintenanceWindowRunCommandParameters) SetComment(v string) *MaintenanceWindowRunCommandParameters {\n\ts.Comment = &v\n\treturn s\n}\n\n// SetDocumentHash sets the DocumentHash field's value.\nfunc (s *MaintenanceWindowRunCommandParameters) SetDocumentHash(v string) *MaintenanceWindowRunCommandParameters {\n\ts.DocumentHash = &v\n\treturn s\n}\n\n// SetDocumentHashType sets the DocumentHashType field's value.\nfunc (s *MaintenanceWindowRunCommandParameters) SetDocumentHashType(v string) *MaintenanceWindowRunCommandParameters {\n\ts.DocumentHashType = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *MaintenanceWindowRunCommandParameters) SetDocumentVersion(v string) *MaintenanceWindowRunCommandParameters {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetNotificationConfig sets the NotificationConfig field's value.\nfunc (s *MaintenanceWindowRunCommandParameters) SetNotificationConfig(v *NotificationConfig) *MaintenanceWindowRunCommandParameters {\n\ts.NotificationConfig = v\n\treturn s\n}\n\n// SetOutputS3BucketName sets the OutputS3BucketName field's value.\nfunc (s *MaintenanceWindowRunCommandParameters) SetOutputS3BucketName(v string) *MaintenanceWindowRunCommandParameters {\n\ts.OutputS3BucketName = &v\n\treturn s\n}\n\n// SetOutputS3KeyPrefix sets the OutputS3KeyPrefix field's value.\nfunc (s *MaintenanceWindowRunCommandParameters) SetOutputS3KeyPrefix(v string) *MaintenanceWindowRunCommandParameters {\n\ts.OutputS3KeyPrefix = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *MaintenanceWindowRunCommandParameters) SetParameters(v map[string][]*string) *MaintenanceWindowRunCommandParameters {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetServiceRoleArn sets the ServiceRoleArn field's value.\nfunc (s *MaintenanceWindowRunCommandParameters) SetServiceRoleArn(v string) *MaintenanceWindowRunCommandParameters {\n\ts.ServiceRoleArn = &v\n\treturn s\n}\n\n// SetTimeoutSeconds sets the TimeoutSeconds field's value.\nfunc (s *MaintenanceWindowRunCommandParameters) SetTimeoutSeconds(v int64) *MaintenanceWindowRunCommandParameters {\n\ts.TimeoutSeconds = &v\n\treturn s\n}\n\n// The parameters for a STEP_FUNCTIONS task.\n//\n// For information about specifying and updating task parameters, see RegisterTaskWithMaintenanceWindow\n// and UpdateMaintenanceWindowTask.\n//\n// LoggingInfo has been deprecated. To specify an Amazon Simple Storage Service\n// (Amazon S3) bucket to contain logs, instead use the OutputS3BucketName and\n// OutputS3KeyPrefix options in the TaskInvocationParameters structure. For\n// information about how Amazon Web Services Systems Manager handles these options\n// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n//\n// TaskParameters has been deprecated. To specify parameters to pass to a task\n// when it runs, instead use the Parameters option in the TaskInvocationParameters\n// structure. For information about how Systems Manager handles these options\n// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n//\n// For Step Functions tasks, Systems Manager ignores any values specified for\n// TaskParameters and LoggingInfo.\ntype MaintenanceWindowStepFunctionsParameters struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The inputs for the STEP_FUNCTIONS task.\n\t//\n\t// Input is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by MaintenanceWindowStepFunctionsParameters's\n\t// String and GoString methods.\n\tInput *string `type:\"string\" sensitive:\"true\"`\n\n\t// The name of the STEP_FUNCTIONS task.\n\tName *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowStepFunctionsParameters) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowStepFunctionsParameters) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *MaintenanceWindowStepFunctionsParameters) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"MaintenanceWindowStepFunctionsParameters\"}\n\tif s.Name != nil && len(*s.Name) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetInput sets the Input field's value.\nfunc (s *MaintenanceWindowStepFunctionsParameters) SetInput(v string) *MaintenanceWindowStepFunctionsParameters {\n\ts.Input = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *MaintenanceWindowStepFunctionsParameters) SetName(v string) *MaintenanceWindowStepFunctionsParameters {\n\ts.Name = &v\n\treturn s\n}\n\n// The target registered with the maintenance window.\ntype MaintenanceWindowTarget struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A description for the target.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by MaintenanceWindowTarget's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The name for the maintenance window target.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// A user-provided value that will be included in any Amazon CloudWatch Events\n\t// events that are raised while running tasks for these targets in this maintenance\n\t// window.\n\t//\n\t// OwnerInformation is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by MaintenanceWindowTarget's\n\t// String and GoString methods.\n\tOwnerInformation *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The type of target that is being registered with the maintenance window.\n\tResourceType *string `type:\"string\" enum:\"MaintenanceWindowResourceType\"`\n\n\t// The targets, either managed nodes or tags.\n\t//\n\t// Specify managed nodes using the following format:\n\t//\n\t// Key=instanceids,Values=<instanceid1>,<instanceid2>\n\t//\n\t// Tags are specified using the following format:\n\t//\n\t// Key=<tag name>,Values=<tag value>.\n\tTargets []*Target `type:\"list\"`\n\n\t// The ID of the maintenance window to register the target with.\n\tWindowId *string `min:\"20\" type:\"string\"`\n\n\t// The ID of the target.\n\tWindowTargetId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowTarget) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowTarget) GoString() string {\n\treturn s.String()\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *MaintenanceWindowTarget) SetDescription(v string) *MaintenanceWindowTarget {\n\ts.Description = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *MaintenanceWindowTarget) SetName(v string) *MaintenanceWindowTarget {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOwnerInformation sets the OwnerInformation field's value.\nfunc (s *MaintenanceWindowTarget) SetOwnerInformation(v string) *MaintenanceWindowTarget {\n\ts.OwnerInformation = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *MaintenanceWindowTarget) SetResourceType(v string) *MaintenanceWindowTarget {\n\ts.ResourceType = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *MaintenanceWindowTarget) SetTargets(v []*Target) *MaintenanceWindowTarget {\n\ts.Targets = v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *MaintenanceWindowTarget) SetWindowId(v string) *MaintenanceWindowTarget {\n\ts.WindowId = &v\n\treturn s\n}\n\n// SetWindowTargetId sets the WindowTargetId field's value.\nfunc (s *MaintenanceWindowTarget) SetWindowTargetId(v string) *MaintenanceWindowTarget {\n\ts.WindowTargetId = &v\n\treturn s\n}\n\n// Information about a task defined for a maintenance window.\ntype MaintenanceWindowTask struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The details for the CloudWatch alarm applied to your maintenance window task.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// The specification for whether tasks should continue to run after the cutoff\n\t// time specified in the maintenance windows is reached.\n\tCutoffBehavior *string `type:\"string\" enum:\"MaintenanceWindowTaskCutoffBehavior\"`\n\n\t// A description of the task.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by MaintenanceWindowTask's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// Information about an S3 bucket to write task-level logs to.\n\t//\n\t// LoggingInfo has been deprecated. To specify an Amazon Simple Storage Service\n\t// (Amazon S3) bucket to contain logs, instead use the OutputS3BucketName and\n\t// OutputS3KeyPrefix options in the TaskInvocationParameters structure. For\n\t// information about how Amazon Web Services Systems Manager handles these options\n\t// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n\tLoggingInfo *LoggingInfo `type:\"structure\"`\n\n\t// The maximum number of targets this task can be run for, in parallel.\n\t//\n\t// Although this element is listed as \"Required: No\", a value can be omitted\n\t// only when you are registering or updating a targetless task (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html)\n\t// You must provide a value in all other cases.\n\t//\n\t// For maintenance window tasks without a target specified, you can't supply\n\t// a value for this option. Instead, the system inserts a placeholder value\n\t// of 1. This value doesn't affect the running of your task.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The maximum number of errors allowed before this task stops being scheduled.\n\t//\n\t// Although this element is listed as \"Required: No\", a value can be omitted\n\t// only when you are registering or updating a targetless task (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html)\n\t// You must provide a value in all other cases.\n\t//\n\t// For maintenance window tasks without a target specified, you can't supply\n\t// a value for this option. Instead, the system inserts a placeholder value\n\t// of 1. This value doesn't affect the running of your task.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The task name.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// The priority of the task in the maintenance window. The lower the number,\n\t// the higher the priority. Tasks that have the same priority are scheduled\n\t// in parallel.\n\tPriority *int64 `type:\"integer\"`\n\n\t// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)\n\t// service role to use to publish Amazon Simple Notification Service (Amazon\n\t// SNS) notifications for maintenance window Run Command tasks.\n\tServiceRoleArn *string `type:\"string\"`\n\n\t// The targets (either managed nodes or tags). Managed nodes are specified using\n\t// Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using\n\t// Key=<tag name>,Values=<tag value>.\n\tTargets []*Target `type:\"list\"`\n\n\t// The resource that the task uses during execution. For RUN_COMMAND and AUTOMATION\n\t// task types, TaskArn is the Amazon Web Services Systems Manager (SSM document)\n\t// name or ARN. For LAMBDA tasks, it's the function name or ARN. For STEP_FUNCTIONS\n\t// tasks, it's the state machine ARN.\n\tTaskArn *string `min:\"1\" type:\"string\"`\n\n\t// The parameters that should be passed to the task when it is run.\n\t//\n\t// TaskParameters has been deprecated. To specify parameters to pass to a task\n\t// when it runs, instead use the Parameters option in the TaskInvocationParameters\n\t// structure. For information about how Systems Manager handles these options\n\t// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n\t//\n\t// TaskParameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by MaintenanceWindowTask's\n\t// String and GoString methods.\n\tTaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:\"map\" sensitive:\"true\"`\n\n\t// The type of task.\n\tType *string `type:\"string\" enum:\"MaintenanceWindowTaskType\"`\n\n\t// The ID of the maintenance window where the task is registered.\n\tWindowId *string `min:\"20\" type:\"string\"`\n\n\t// The task ID.\n\tWindowTaskId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowTask) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowTask) GoString() string {\n\treturn s.String()\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *MaintenanceWindowTask) SetAlarmConfiguration(v *AlarmConfiguration) *MaintenanceWindowTask {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetCutoffBehavior sets the CutoffBehavior field's value.\nfunc (s *MaintenanceWindowTask) SetCutoffBehavior(v string) *MaintenanceWindowTask {\n\ts.CutoffBehavior = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *MaintenanceWindowTask) SetDescription(v string) *MaintenanceWindowTask {\n\ts.Description = &v\n\treturn s\n}\n\n// SetLoggingInfo sets the LoggingInfo field's value.\nfunc (s *MaintenanceWindowTask) SetLoggingInfo(v *LoggingInfo) *MaintenanceWindowTask {\n\ts.LoggingInfo = v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *MaintenanceWindowTask) SetMaxConcurrency(v string) *MaintenanceWindowTask {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *MaintenanceWindowTask) SetMaxErrors(v string) *MaintenanceWindowTask {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *MaintenanceWindowTask) SetName(v string) *MaintenanceWindowTask {\n\ts.Name = &v\n\treturn s\n}\n\n// SetPriority sets the Priority field's value.\nfunc (s *MaintenanceWindowTask) SetPriority(v int64) *MaintenanceWindowTask {\n\ts.Priority = &v\n\treturn s\n}\n\n// SetServiceRoleArn sets the ServiceRoleArn field's value.\nfunc (s *MaintenanceWindowTask) SetServiceRoleArn(v string) *MaintenanceWindowTask {\n\ts.ServiceRoleArn = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *MaintenanceWindowTask) SetTargets(v []*Target) *MaintenanceWindowTask {\n\ts.Targets = v\n\treturn s\n}\n\n// SetTaskArn sets the TaskArn field's value.\nfunc (s *MaintenanceWindowTask) SetTaskArn(v string) *MaintenanceWindowTask {\n\ts.TaskArn = &v\n\treturn s\n}\n\n// SetTaskParameters sets the TaskParameters field's value.\nfunc (s *MaintenanceWindowTask) SetTaskParameters(v map[string]*MaintenanceWindowTaskParameterValueExpression) *MaintenanceWindowTask {\n\ts.TaskParameters = v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *MaintenanceWindowTask) SetType(v string) *MaintenanceWindowTask {\n\ts.Type = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *MaintenanceWindowTask) SetWindowId(v string) *MaintenanceWindowTask {\n\ts.WindowId = &v\n\treturn s\n}\n\n// SetWindowTaskId sets the WindowTaskId field's value.\nfunc (s *MaintenanceWindowTask) SetWindowTaskId(v string) *MaintenanceWindowTask {\n\ts.WindowTaskId = &v\n\treturn s\n}\n\n// The parameters for task execution.\ntype MaintenanceWindowTaskInvocationParameters struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The parameters for an AUTOMATION task type.\n\tAutomation *MaintenanceWindowAutomationParameters `type:\"structure\"`\n\n\t// The parameters for a LAMBDA task type.\n\tLambda *MaintenanceWindowLambdaParameters `type:\"structure\"`\n\n\t// The parameters for a RUN_COMMAND task type.\n\tRunCommand *MaintenanceWindowRunCommandParameters `type:\"structure\"`\n\n\t// The parameters for a STEP_FUNCTIONS task type.\n\tStepFunctions *MaintenanceWindowStepFunctionsParameters `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowTaskInvocationParameters) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowTaskInvocationParameters) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *MaintenanceWindowTaskInvocationParameters) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"MaintenanceWindowTaskInvocationParameters\"}\n\tif s.Automation != nil {\n\t\tif err := s.Automation.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Automation\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Lambda != nil {\n\t\tif err := s.Lambda.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"Lambda\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.RunCommand != nil {\n\t\tif err := s.RunCommand.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"RunCommand\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.StepFunctions != nil {\n\t\tif err := s.StepFunctions.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"StepFunctions\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAutomation sets the Automation field's value.\nfunc (s *MaintenanceWindowTaskInvocationParameters) SetAutomation(v *MaintenanceWindowAutomationParameters) *MaintenanceWindowTaskInvocationParameters {\n\ts.Automation = v\n\treturn s\n}\n\n// SetLambda sets the Lambda field's value.\nfunc (s *MaintenanceWindowTaskInvocationParameters) SetLambda(v *MaintenanceWindowLambdaParameters) *MaintenanceWindowTaskInvocationParameters {\n\ts.Lambda = v\n\treturn s\n}\n\n// SetRunCommand sets the RunCommand field's value.\nfunc (s *MaintenanceWindowTaskInvocationParameters) SetRunCommand(v *MaintenanceWindowRunCommandParameters) *MaintenanceWindowTaskInvocationParameters {\n\ts.RunCommand = v\n\treturn s\n}\n\n// SetStepFunctions sets the StepFunctions field's value.\nfunc (s *MaintenanceWindowTaskInvocationParameters) SetStepFunctions(v *MaintenanceWindowStepFunctionsParameters) *MaintenanceWindowTaskInvocationParameters {\n\ts.StepFunctions = v\n\treturn s\n}\n\n// Defines the values for a task parameter.\ntype MaintenanceWindowTaskParameterValueExpression struct {\n\t_ struct{} `type:\"structure\" sensitive:\"true\"`\n\n\t// This field contains an array of 0 or more strings, each 1 to 255 characters\n\t// in length.\n\t//\n\t// Values is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by MaintenanceWindowTaskParameterValueExpression's\n\t// String and GoString methods.\n\tValues []*string `type:\"list\" sensitive:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowTaskParameterValueExpression) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaintenanceWindowTaskParameterValueExpression) GoString() string {\n\treturn s.String()\n}\n\n// SetValues sets the Values field's value.\nfunc (s *MaintenanceWindowTaskParameterValueExpression) SetValues(v []*string) *MaintenanceWindowTaskParameterValueExpression {\n\ts.Values = v\n\treturn s\n}\n\n// The size limit of a document is 64 KB.\ntype MaxDocumentSizeExceeded struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaxDocumentSizeExceeded) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MaxDocumentSizeExceeded) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorMaxDocumentSizeExceeded(v protocol.ResponseMetadata) error {\n\treturn &MaxDocumentSizeExceeded{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *MaxDocumentSizeExceeded) Code() string {\n\treturn \"MaxDocumentSizeExceeded\"\n}\n\n// Message returns the exception's message.\nfunc (s *MaxDocumentSizeExceeded) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *MaxDocumentSizeExceeded) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *MaxDocumentSizeExceeded) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *MaxDocumentSizeExceeded) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *MaxDocumentSizeExceeded) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Metadata to assign to an Application Manager application.\ntype MetadataValue struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Metadata value to assign to an Application Manager application.\n\tValue *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MetadataValue) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s MetadataValue) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *MetadataValue) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"MetadataValue\"}\n\tif s.Value != nil && len(*s.Value) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Value\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetValue sets the Value field's value.\nfunc (s *MetadataValue) SetValue(v string) *MetadataValue {\n\ts.Value = &v\n\treturn s\n}\n\ntype ModifyDocumentPermissionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Web Services users that should have access to the document. The\n\t// account IDs can either be a group of account IDs or All.\n\tAccountIdsToAdd []*string `type:\"list\"`\n\n\t// The Amazon Web Services users that should no longer have access to the document.\n\t// The Amazon Web Services user can either be a group of account IDs or All.\n\t// This action has a higher priority than AccountIdsToAdd. If you specify an\n\t// ID to add and the same ID to remove, the system removes access to the document.\n\tAccountIdsToRemove []*string `type:\"list\"`\n\n\t// The name of the document that you want to share.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n\n\t// The permission type for the document. The permission type can be Share.\n\t//\n\t// PermissionType is a required field\n\tPermissionType *string `type:\"string\" required:\"true\" enum:\"DocumentPermissionType\"`\n\n\t// (Optional) The version of the document to share. If it isn't specified, the\n\t// system choose the Default version to share.\n\tSharedDocumentVersion *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ModifyDocumentPermissionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ModifyDocumentPermissionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ModifyDocumentPermissionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ModifyDocumentPermissionInput\"}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.PermissionType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PermissionType\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAccountIdsToAdd sets the AccountIdsToAdd field's value.\nfunc (s *ModifyDocumentPermissionInput) SetAccountIdsToAdd(v []*string) *ModifyDocumentPermissionInput {\n\ts.AccountIdsToAdd = v\n\treturn s\n}\n\n// SetAccountIdsToRemove sets the AccountIdsToRemove field's value.\nfunc (s *ModifyDocumentPermissionInput) SetAccountIdsToRemove(v []*string) *ModifyDocumentPermissionInput {\n\ts.AccountIdsToRemove = v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *ModifyDocumentPermissionInput) SetName(v string) *ModifyDocumentPermissionInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetPermissionType sets the PermissionType field's value.\nfunc (s *ModifyDocumentPermissionInput) SetPermissionType(v string) *ModifyDocumentPermissionInput {\n\ts.PermissionType = &v\n\treturn s\n}\n\n// SetSharedDocumentVersion sets the SharedDocumentVersion field's value.\nfunc (s *ModifyDocumentPermissionInput) SetSharedDocumentVersion(v string) *ModifyDocumentPermissionInput {\n\ts.SharedDocumentVersion = &v\n\treturn s\n}\n\ntype ModifyDocumentPermissionOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ModifyDocumentPermissionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ModifyDocumentPermissionOutput) GoString() string {\n\treturn s.String()\n}\n\n// A summary of resources that aren't compliant. The summary is organized according\n// to resource type.\ntype NonCompliantSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The total number of compliance items that aren't compliant.\n\tNonCompliantCount *int64 `type:\"integer\"`\n\n\t// A summary of the non-compliance severity by compliance type\n\tSeveritySummary *SeveritySummary `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s NonCompliantSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s NonCompliantSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetNonCompliantCount sets the NonCompliantCount field's value.\nfunc (s *NonCompliantSummary) SetNonCompliantCount(v int64) *NonCompliantSummary {\n\ts.NonCompliantCount = &v\n\treturn s\n}\n\n// SetSeveritySummary sets the SeveritySummary field's value.\nfunc (s *NonCompliantSummary) SetSeveritySummary(v *SeveritySummary) *NonCompliantSummary {\n\ts.SeveritySummary = v\n\treturn s\n}\n\n// Configurations for sending notifications.\ntype NotificationConfig struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// An Amazon Resource Name (ARN) for an Amazon Simple Notification Service (Amazon\n\t// SNS) topic. Run Command pushes notifications about command status changes\n\t// to this topic.\n\tNotificationArn *string `type:\"string\"`\n\n\t// The different events for which you can receive notifications. To learn more\n\t// about these events, see Monitoring Systems Manager status changes using Amazon\n\t// SNS notifications (https://docs.aws.amazon.com/systems-manager/latest/userguide/monitoring-sns-notifications.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tNotificationEvents []*string `type:\"list\" enum:\"NotificationEvent\"`\n\n\t// The type of notification.\n\t//\n\t//    * Command: Receive notification when the status of a command changes.\n\t//\n\t//    * Invocation: For commands sent to multiple managed nodes, receive notification\n\t//    on a per-node basis when the status of a command changes.\n\tNotificationType *string `type:\"string\" enum:\"NotificationType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s NotificationConfig) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s NotificationConfig) GoString() string {\n\treturn s.String()\n}\n\n// SetNotificationArn sets the NotificationArn field's value.\nfunc (s *NotificationConfig) SetNotificationArn(v string) *NotificationConfig {\n\ts.NotificationArn = &v\n\treturn s\n}\n\n// SetNotificationEvents sets the NotificationEvents field's value.\nfunc (s *NotificationConfig) SetNotificationEvents(v []*string) *NotificationConfig {\n\ts.NotificationEvents = v\n\treturn s\n}\n\n// SetNotificationType sets the NotificationType field's value.\nfunc (s *NotificationConfig) SetNotificationType(v string) *NotificationConfig {\n\ts.NotificationType = &v\n\treturn s\n}\n\n// One or more aggregators for viewing counts of OpsData using different dimensions\n// such as Source, CreatedTime, or Source and CreatedTime, to name a few.\ntype OpsAggregator struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Either a Range or Count aggregator for limiting an OpsData summary.\n\tAggregatorType *string `min:\"1\" type:\"string\"`\n\n\t// A nested aggregator for viewing counts of OpsData.\n\tAggregators []*OpsAggregator `min:\"1\" type:\"list\"`\n\n\t// The name of an OpsData attribute on which to limit the count of OpsData.\n\tAttributeName *string `min:\"1\" type:\"string\"`\n\n\t// The aggregator filters.\n\tFilters []*OpsFilter `min:\"1\" type:\"list\"`\n\n\t// The data type name to use for viewing counts of OpsData.\n\tTypeName *string `min:\"1\" type:\"string\"`\n\n\t// The aggregator value.\n\tValues map[string]*string `type:\"map\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsAggregator) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsAggregator) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *OpsAggregator) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"OpsAggregator\"}\n\tif s.AggregatorType != nil && len(*s.AggregatorType) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AggregatorType\", 1))\n\t}\n\tif s.Aggregators != nil && len(s.Aggregators) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Aggregators\", 1))\n\t}\n\tif s.AttributeName != nil && len(*s.AttributeName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AttributeName\", 1))\n\t}\n\tif s.Filters != nil && len(s.Filters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Filters\", 1))\n\t}\n\tif s.TypeName != nil && len(*s.TypeName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TypeName\", 1))\n\t}\n\tif s.Aggregators != nil {\n\t\tfor i, v := range s.Aggregators {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Aggregators\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Filters != nil {\n\t\tfor i, v := range s.Filters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Filters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAggregatorType sets the AggregatorType field's value.\nfunc (s *OpsAggregator) SetAggregatorType(v string) *OpsAggregator {\n\ts.AggregatorType = &v\n\treturn s\n}\n\n// SetAggregators sets the Aggregators field's value.\nfunc (s *OpsAggregator) SetAggregators(v []*OpsAggregator) *OpsAggregator {\n\ts.Aggregators = v\n\treturn s\n}\n\n// SetAttributeName sets the AttributeName field's value.\nfunc (s *OpsAggregator) SetAttributeName(v string) *OpsAggregator {\n\ts.AttributeName = &v\n\treturn s\n}\n\n// SetFilters sets the Filters field's value.\nfunc (s *OpsAggregator) SetFilters(v []*OpsFilter) *OpsAggregator {\n\ts.Filters = v\n\treturn s\n}\n\n// SetTypeName sets the TypeName field's value.\nfunc (s *OpsAggregator) SetTypeName(v string) *OpsAggregator {\n\ts.TypeName = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *OpsAggregator) SetValues(v map[string]*string) *OpsAggregator {\n\ts.Values = v\n\treturn s\n}\n\n// The result of the query.\ntype OpsEntity struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The data returned by the query.\n\tData map[string]*OpsEntityItem `type:\"map\"`\n\n\t// The query ID.\n\tId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsEntity) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsEntity) GoString() string {\n\treturn s.String()\n}\n\n// SetData sets the Data field's value.\nfunc (s *OpsEntity) SetData(v map[string]*OpsEntityItem) *OpsEntity {\n\ts.Data = v\n\treturn s\n}\n\n// SetId sets the Id field's value.\nfunc (s *OpsEntity) SetId(v string) *OpsEntity {\n\ts.Id = &v\n\treturn s\n}\n\n// The OpsData summary.\ntype OpsEntityItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time the OpsData was captured.\n\tCaptureTime *string `type:\"string\"`\n\n\t// The details of an OpsData summary.\n\tContent []map[string]*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsEntityItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsEntityItem) GoString() string {\n\treturn s.String()\n}\n\n// SetCaptureTime sets the CaptureTime field's value.\nfunc (s *OpsEntityItem) SetCaptureTime(v string) *OpsEntityItem {\n\ts.CaptureTime = &v\n\treturn s\n}\n\n// SetContent sets the Content field's value.\nfunc (s *OpsEntityItem) SetContent(v []map[string]*string) *OpsEntityItem {\n\ts.Content = v\n\treturn s\n}\n\n// A filter for viewing OpsData summaries.\ntype OpsFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter.\n\t//\n\t// Key is a required field\n\tKey *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The type of filter.\n\tType *string `type:\"string\" enum:\"OpsFilterOperatorType\"`\n\n\t// The filter value.\n\t//\n\t// Values is a required field\n\tValues []*string `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *OpsFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"OpsFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\tif s.Values == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Values\"))\n\t}\n\tif s.Values != nil && len(s.Values) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Values\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *OpsFilter) SetKey(v string) *OpsFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *OpsFilter) SetType(v string) *OpsFilter {\n\ts.Type = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *OpsFilter) SetValues(v []*string) *OpsFilter {\n\ts.Values = v\n\treturn s\n}\n\n// Operations engineers and IT professionals use Amazon Web Services Systems\n// Manager OpsCenter to view, investigate, and remediate operational work items\n// (OpsItems) impacting the performance and health of their Amazon Web Services\n// resources. OpsCenter is integrated with Amazon EventBridge and Amazon CloudWatch.\n// This means you can configure these services to automatically create an OpsItem\n// in OpsCenter when a CloudWatch alarm enters the ALARM state or when EventBridge\n// processes an event from any Amazon Web Services service that publishes events.\n// Configuring Amazon CloudWatch alarms and EventBridge events to automatically\n// create OpsItems allows you to quickly diagnose and remediate issues with\n// Amazon Web Services resources from a single console.\n//\n// To help you diagnose issues, each OpsItem includes contextually relevant\n// information such as the name and ID of the Amazon Web Services resource that\n// generated the OpsItem, alarm or event details, alarm history, and an alarm\n// timeline graph. For the Amazon Web Services resource, OpsCenter aggregates\n// information from Config, CloudTrail logs, and EventBridge, so you don't have\n// to navigate across multiple console pages during your investigation. For\n// more information, see OpsCenter (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html)\n// in the Amazon Web Services Systems Manager User Guide.\ntype OpsItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time a runbook workflow ended. Currently reported only for the OpsItem\n\t// type /aws/changerequest.\n\tActualEndTime *time.Time `type:\"timestamp\"`\n\n\t// The time a runbook workflow started. Currently reported only for the OpsItem\n\t// type /aws/changerequest.\n\tActualStartTime *time.Time `type:\"timestamp\"`\n\n\t// An OpsItem category. Category options include: Availability, Cost, Performance,\n\t// Recovery, Security.\n\tCategory *string `min:\"1\" type:\"string\"`\n\n\t// The ARN of the Amazon Web Services account that created the OpsItem.\n\tCreatedBy *string `type:\"string\"`\n\n\t// The date and time the OpsItem was created.\n\tCreatedTime *time.Time `type:\"timestamp\"`\n\n\t// The OpsItem description.\n\tDescription *string `min:\"1\" type:\"string\"`\n\n\t// The ARN of the Amazon Web Services account that last updated the OpsItem.\n\tLastModifiedBy *string `type:\"string\"`\n\n\t// The date and time the OpsItem was last updated.\n\tLastModifiedTime *time.Time `type:\"timestamp\"`\n\n\t// The Amazon Resource Name (ARN) of an Amazon Simple Notification Service (Amazon\n\t// SNS) topic where notifications are sent when this OpsItem is edited or changed.\n\tNotifications []*OpsItemNotification `type:\"list\"`\n\n\t// Operational data is custom data that provides useful reference details about\n\t// the OpsItem. For example, you can specify log files, error strings, license\n\t// keys, troubleshooting tips, or other relevant data. You enter operational\n\t// data as key-value pairs. The key has a maximum length of 128 characters.\n\t// The value has a maximum size of 20 KB.\n\t//\n\t// Operational data keys can't begin with the following: amazon, aws, amzn,\n\t// ssm, /amazon, /aws, /amzn, /ssm.\n\t//\n\t// You can choose to make the data searchable by other users in the account\n\t// or you can restrict search access. Searchable data means that all users with\n\t// access to the OpsItem Overview page (as provided by the DescribeOpsItems\n\t// API operation) can view and search on the specified data. Operational data\n\t// that isn't searchable is only viewable by users who have access to the OpsItem\n\t// (as provided by the GetOpsItem API operation).\n\t//\n\t// Use the /aws/resources key in OperationalData to specify a related resource\n\t// in the request. Use the /aws/automations key in OperationalData to associate\n\t// an Automation runbook with the OpsItem. To view Amazon Web Services CLI example\n\t// commands that use these keys, see Creating OpsItems manually (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-manually-create-OpsItems.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tOperationalData map[string]*OpsItemDataValue `type:\"map\"`\n\n\t// The OpsItem Amazon Resource Name (ARN).\n\tOpsItemArn *string `min:\"20\" type:\"string\"`\n\n\t// The ID of the OpsItem.\n\tOpsItemId *string `type:\"string\"`\n\n\t// The type of OpsItem. Systems Manager supports the following types of OpsItems:\n\t//\n\t//    * /aws/issue This type of OpsItem is used for default OpsItems created\n\t//    by OpsCenter.\n\t//\n\t//    * /aws/changerequest This type of OpsItem is used by Change Manager for\n\t//    reviewing and approving or rejecting change requests.\n\t//\n\t//    * /aws/insight This type of OpsItem is used by OpsCenter for aggregating\n\t//    and reporting on duplicate OpsItems.\n\tOpsItemType *string `type:\"string\"`\n\n\t// The time specified in a change request for a runbook workflow to end. Currently\n\t// supported only for the OpsItem type /aws/changerequest.\n\tPlannedEndTime *time.Time `type:\"timestamp\"`\n\n\t// The time specified in a change request for a runbook workflow to start. Currently\n\t// supported only for the OpsItem type /aws/changerequest.\n\tPlannedStartTime *time.Time `type:\"timestamp\"`\n\n\t// The importance of this OpsItem in relation to other OpsItems in the system.\n\tPriority *int64 `min:\"1\" type:\"integer\"`\n\n\t// One or more OpsItems that share something in common with the current OpsItem.\n\t// For example, related OpsItems can include OpsItems with similar error messages,\n\t// impacted resources, or statuses for the impacted resource.\n\tRelatedOpsItems []*RelatedOpsItem `type:\"list\"`\n\n\t// The severity of the OpsItem. Severity options range from 1 to 4.\n\tSeverity *string `min:\"1\" type:\"string\"`\n\n\t// The origin of the OpsItem, such as Amazon EC2 or Systems Manager. The impacted\n\t// resource is a subset of source.\n\tSource *string `min:\"1\" type:\"string\"`\n\n\t// The OpsItem status. Status can be Open, In Progress, or Resolved. For more\n\t// information, see Editing OpsItem details (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-working-with-OpsItems-editing-details.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tStatus *string `type:\"string\" enum:\"OpsItemStatus\"`\n\n\t// A short heading that describes the nature of the OpsItem and the impacted\n\t// resource.\n\tTitle *string `min:\"1\" type:\"string\"`\n\n\t// The version of this OpsItem. Each time the OpsItem is edited the version\n\t// number increments by one.\n\tVersion *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItem) GoString() string {\n\treturn s.String()\n}\n\n// SetActualEndTime sets the ActualEndTime field's value.\nfunc (s *OpsItem) SetActualEndTime(v time.Time) *OpsItem {\n\ts.ActualEndTime = &v\n\treturn s\n}\n\n// SetActualStartTime sets the ActualStartTime field's value.\nfunc (s *OpsItem) SetActualStartTime(v time.Time) *OpsItem {\n\ts.ActualStartTime = &v\n\treturn s\n}\n\n// SetCategory sets the Category field's value.\nfunc (s *OpsItem) SetCategory(v string) *OpsItem {\n\ts.Category = &v\n\treturn s\n}\n\n// SetCreatedBy sets the CreatedBy field's value.\nfunc (s *OpsItem) SetCreatedBy(v string) *OpsItem {\n\ts.CreatedBy = &v\n\treturn s\n}\n\n// SetCreatedTime sets the CreatedTime field's value.\nfunc (s *OpsItem) SetCreatedTime(v time.Time) *OpsItem {\n\ts.CreatedTime = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *OpsItem) SetDescription(v string) *OpsItem {\n\ts.Description = &v\n\treturn s\n}\n\n// SetLastModifiedBy sets the LastModifiedBy field's value.\nfunc (s *OpsItem) SetLastModifiedBy(v string) *OpsItem {\n\ts.LastModifiedBy = &v\n\treturn s\n}\n\n// SetLastModifiedTime sets the LastModifiedTime field's value.\nfunc (s *OpsItem) SetLastModifiedTime(v time.Time) *OpsItem {\n\ts.LastModifiedTime = &v\n\treturn s\n}\n\n// SetNotifications sets the Notifications field's value.\nfunc (s *OpsItem) SetNotifications(v []*OpsItemNotification) *OpsItem {\n\ts.Notifications = v\n\treturn s\n}\n\n// SetOperationalData sets the OperationalData field's value.\nfunc (s *OpsItem) SetOperationalData(v map[string]*OpsItemDataValue) *OpsItem {\n\ts.OperationalData = v\n\treturn s\n}\n\n// SetOpsItemArn sets the OpsItemArn field's value.\nfunc (s *OpsItem) SetOpsItemArn(v string) *OpsItem {\n\ts.OpsItemArn = &v\n\treturn s\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *OpsItem) SetOpsItemId(v string) *OpsItem {\n\ts.OpsItemId = &v\n\treturn s\n}\n\n// SetOpsItemType sets the OpsItemType field's value.\nfunc (s *OpsItem) SetOpsItemType(v string) *OpsItem {\n\ts.OpsItemType = &v\n\treturn s\n}\n\n// SetPlannedEndTime sets the PlannedEndTime field's value.\nfunc (s *OpsItem) SetPlannedEndTime(v time.Time) *OpsItem {\n\ts.PlannedEndTime = &v\n\treturn s\n}\n\n// SetPlannedStartTime sets the PlannedStartTime field's value.\nfunc (s *OpsItem) SetPlannedStartTime(v time.Time) *OpsItem {\n\ts.PlannedStartTime = &v\n\treturn s\n}\n\n// SetPriority sets the Priority field's value.\nfunc (s *OpsItem) SetPriority(v int64) *OpsItem {\n\ts.Priority = &v\n\treturn s\n}\n\n// SetRelatedOpsItems sets the RelatedOpsItems field's value.\nfunc (s *OpsItem) SetRelatedOpsItems(v []*RelatedOpsItem) *OpsItem {\n\ts.RelatedOpsItems = v\n\treturn s\n}\n\n// SetSeverity sets the Severity field's value.\nfunc (s *OpsItem) SetSeverity(v string) *OpsItem {\n\ts.Severity = &v\n\treturn s\n}\n\n// SetSource sets the Source field's value.\nfunc (s *OpsItem) SetSource(v string) *OpsItem {\n\ts.Source = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *OpsItem) SetStatus(v string) *OpsItem {\n\ts.Status = &v\n\treturn s\n}\n\n// SetTitle sets the Title field's value.\nfunc (s *OpsItem) SetTitle(v string) *OpsItem {\n\ts.Title = &v\n\treturn s\n}\n\n// SetVersion sets the Version field's value.\nfunc (s *OpsItem) SetVersion(v string) *OpsItem {\n\ts.Version = &v\n\treturn s\n}\n\n// You don't have permission to view OpsItems in the specified account. Verify\n// that your account is configured either as a Systems Manager delegated administrator\n// or that you are logged into the Organizations management account.\ntype OpsItemAccessDeniedException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemAccessDeniedException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemAccessDeniedException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsItemAccessDeniedException(v protocol.ResponseMetadata) error {\n\treturn &OpsItemAccessDeniedException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsItemAccessDeniedException) Code() string {\n\treturn \"OpsItemAccessDeniedException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsItemAccessDeniedException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsItemAccessDeniedException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsItemAccessDeniedException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsItemAccessDeniedException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsItemAccessDeniedException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The OpsItem already exists.\ntype OpsItemAlreadyExistsException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n\n\tOpsItemId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemAlreadyExistsException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemAlreadyExistsException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsItemAlreadyExistsException(v protocol.ResponseMetadata) error {\n\treturn &OpsItemAlreadyExistsException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsItemAlreadyExistsException) Code() string {\n\treturn \"OpsItemAlreadyExistsException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsItemAlreadyExistsException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsItemAlreadyExistsException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsItemAlreadyExistsException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsItemAlreadyExistsException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsItemAlreadyExistsException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified OpsItem is in the process of being deleted.\ntype OpsItemConflictException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemConflictException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemConflictException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsItemConflictException(v protocol.ResponseMetadata) error {\n\treturn &OpsItemConflictException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsItemConflictException) Code() string {\n\treturn \"OpsItemConflictException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsItemConflictException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsItemConflictException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsItemConflictException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsItemConflictException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsItemConflictException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// An object that defines the value of the key and its type in the OperationalData\n// map.\ntype OpsItemDataValue struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The type of key-value pair. Valid types include SearchableString and String.\n\tType *string `type:\"string\" enum:\"OpsItemDataType\"`\n\n\t// The value of the OperationalData key.\n\tValue *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemDataValue) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemDataValue) GoString() string {\n\treturn s.String()\n}\n\n// SetType sets the Type field's value.\nfunc (s *OpsItemDataValue) SetType(v string) *OpsItemDataValue {\n\ts.Type = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *OpsItemDataValue) SetValue(v string) *OpsItemDataValue {\n\ts.Value = &v\n\treturn s\n}\n\n// Describes a filter for a specific list of OpsItem events. You can filter\n// event information by using tags. You specify tags by using a key-value pair\n// mapping.\ntype OpsItemEventFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter key. Currently, the only supported value is OpsItemId.\n\t//\n\t// Key is a required field\n\tKey *string `type:\"string\" required:\"true\" enum:\"OpsItemEventFilterKey\"`\n\n\t// The operator used by the filter call. Currently, the only supported value\n\t// is Equal.\n\t//\n\t// Operator is a required field\n\tOperator *string `type:\"string\" required:\"true\" enum:\"OpsItemEventFilterOperator\"`\n\n\t// The values for the filter, consisting of one or more OpsItem IDs.\n\t//\n\t// Values is a required field\n\tValues []*string `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemEventFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemEventFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *OpsItemEventFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"OpsItemEventFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Operator == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Operator\"))\n\t}\n\tif s.Values == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Values\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *OpsItemEventFilter) SetKey(v string) *OpsItemEventFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetOperator sets the Operator field's value.\nfunc (s *OpsItemEventFilter) SetOperator(v string) *OpsItemEventFilter {\n\ts.Operator = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *OpsItemEventFilter) SetValues(v []*string) *OpsItemEventFilter {\n\ts.Values = v\n\treturn s\n}\n\n// Summary information about an OpsItem event or that associated an OpsItem\n// with a related item.\ntype OpsItemEventSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Information about the user or resource that created the OpsItem event.\n\tCreatedBy *OpsItemIdentity `type:\"structure\"`\n\n\t// The date and time the OpsItem event was created.\n\tCreatedTime *time.Time `type:\"timestamp\"`\n\n\t// Specific information about the OpsItem event.\n\tDetail *string `type:\"string\"`\n\n\t// The type of information provided as a detail.\n\tDetailType *string `type:\"string\"`\n\n\t// The ID of the OpsItem event.\n\tEventId *string `type:\"string\"`\n\n\t// The ID of the OpsItem.\n\tOpsItemId *string `type:\"string\"`\n\n\t// The source of the OpsItem event.\n\tSource *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemEventSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemEventSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetCreatedBy sets the CreatedBy field's value.\nfunc (s *OpsItemEventSummary) SetCreatedBy(v *OpsItemIdentity) *OpsItemEventSummary {\n\ts.CreatedBy = v\n\treturn s\n}\n\n// SetCreatedTime sets the CreatedTime field's value.\nfunc (s *OpsItemEventSummary) SetCreatedTime(v time.Time) *OpsItemEventSummary {\n\ts.CreatedTime = &v\n\treturn s\n}\n\n// SetDetail sets the Detail field's value.\nfunc (s *OpsItemEventSummary) SetDetail(v string) *OpsItemEventSummary {\n\ts.Detail = &v\n\treturn s\n}\n\n// SetDetailType sets the DetailType field's value.\nfunc (s *OpsItemEventSummary) SetDetailType(v string) *OpsItemEventSummary {\n\ts.DetailType = &v\n\treturn s\n}\n\n// SetEventId sets the EventId field's value.\nfunc (s *OpsItemEventSummary) SetEventId(v string) *OpsItemEventSummary {\n\ts.EventId = &v\n\treturn s\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *OpsItemEventSummary) SetOpsItemId(v string) *OpsItemEventSummary {\n\ts.OpsItemId = &v\n\treturn s\n}\n\n// SetSource sets the Source field's value.\nfunc (s *OpsItemEventSummary) SetSource(v string) *OpsItemEventSummary {\n\ts.Source = &v\n\treturn s\n}\n\n// Describes an OpsItem filter.\ntype OpsItemFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter.\n\t//\n\t// Key is a required field\n\tKey *string `type:\"string\" required:\"true\" enum:\"OpsItemFilterKey\"`\n\n\t// The operator used by the filter call.\n\t//\n\t// Operator is a required field\n\tOperator *string `type:\"string\" required:\"true\" enum:\"OpsItemFilterOperator\"`\n\n\t// The filter value.\n\t//\n\t// Values is a required field\n\tValues []*string `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *OpsItemFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"OpsItemFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Operator == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Operator\"))\n\t}\n\tif s.Values == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Values\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *OpsItemFilter) SetKey(v string) *OpsItemFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetOperator sets the Operator field's value.\nfunc (s *OpsItemFilter) SetOperator(v string) *OpsItemFilter {\n\ts.Operator = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *OpsItemFilter) SetValues(v []*string) *OpsItemFilter {\n\ts.Values = v\n\treturn s\n}\n\n// Information about the user or resource that created an OpsItem event.\ntype OpsItemIdentity struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) of the IAM entity that created the OpsItem\n\t// event.\n\tArn *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemIdentity) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemIdentity) GoString() string {\n\treturn s.String()\n}\n\n// SetArn sets the Arn field's value.\nfunc (s *OpsItemIdentity) SetArn(v string) *OpsItemIdentity {\n\ts.Arn = &v\n\treturn s\n}\n\n// A specified parameter argument isn't valid. Verify the available arguments\n// and try again.\ntype OpsItemInvalidParameterException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n\n\tParameterNames []*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemInvalidParameterException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemInvalidParameterException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsItemInvalidParameterException(v protocol.ResponseMetadata) error {\n\treturn &OpsItemInvalidParameterException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsItemInvalidParameterException) Code() string {\n\treturn \"OpsItemInvalidParameterException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsItemInvalidParameterException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsItemInvalidParameterException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsItemInvalidParameterException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsItemInvalidParameterException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsItemInvalidParameterException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The request caused OpsItems to exceed one or more quotas.\ntype OpsItemLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tLimit *int64 `type:\"integer\"`\n\n\tLimitType *string `type:\"string\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n\n\tResourceTypes []*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsItemLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &OpsItemLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsItemLimitExceededException) Code() string {\n\treturn \"OpsItemLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsItemLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsItemLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsItemLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsItemLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsItemLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified OpsItem ID doesn't exist. Verify the ID and try again.\ntype OpsItemNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsItemNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &OpsItemNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsItemNotFoundException) Code() string {\n\treturn \"OpsItemNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsItemNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsItemNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsItemNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsItemNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsItemNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// A notification about the OpsItem.\ntype OpsItemNotification struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) of an Amazon Simple Notification Service (Amazon\n\t// SNS) topic where notifications are sent when this OpsItem is edited or changed.\n\tArn *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemNotification) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemNotification) GoString() string {\n\treturn s.String()\n}\n\n// SetArn sets the Arn field's value.\nfunc (s *OpsItemNotification) SetArn(v string) *OpsItemNotification {\n\ts.Arn = &v\n\treturn s\n}\n\n// The Amazon Resource Name (ARN) is already associated with the OpsItem.\ntype OpsItemRelatedItemAlreadyExistsException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n\n\tOpsItemId *string `type:\"string\"`\n\n\tResourceUri *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemRelatedItemAlreadyExistsException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemRelatedItemAlreadyExistsException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsItemRelatedItemAlreadyExistsException(v protocol.ResponseMetadata) error {\n\treturn &OpsItemRelatedItemAlreadyExistsException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsItemRelatedItemAlreadyExistsException) Code() string {\n\treturn \"OpsItemRelatedItemAlreadyExistsException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsItemRelatedItemAlreadyExistsException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsItemRelatedItemAlreadyExistsException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsItemRelatedItemAlreadyExistsException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsItemRelatedItemAlreadyExistsException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsItemRelatedItemAlreadyExistsException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The association wasn't found using the parameters you specified in the call.\n// Verify the information and try again.\ntype OpsItemRelatedItemAssociationNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemRelatedItemAssociationNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemRelatedItemAssociationNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsItemRelatedItemAssociationNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &OpsItemRelatedItemAssociationNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsItemRelatedItemAssociationNotFoundException) Code() string {\n\treturn \"OpsItemRelatedItemAssociationNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsItemRelatedItemAssociationNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsItemRelatedItemAssociationNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsItemRelatedItemAssociationNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsItemRelatedItemAssociationNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsItemRelatedItemAssociationNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Summary information about related-item resources for an OpsItem.\ntype OpsItemRelatedItemSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The association ID.\n\tAssociationId *string `type:\"string\"`\n\n\t// The association type.\n\tAssociationType *string `type:\"string\"`\n\n\t// Information about the user or resource that created an OpsItem event.\n\tCreatedBy *OpsItemIdentity `type:\"structure\"`\n\n\t// The time the related-item association was created.\n\tCreatedTime *time.Time `type:\"timestamp\"`\n\n\t// Information about the user or resource that created an OpsItem event.\n\tLastModifiedBy *OpsItemIdentity `type:\"structure\"`\n\n\t// The time the related-item association was last updated.\n\tLastModifiedTime *time.Time `type:\"timestamp\"`\n\n\t// The OpsItem ID.\n\tOpsItemId *string `type:\"string\"`\n\n\t// The resource type.\n\tResourceType *string `type:\"string\"`\n\n\t// The Amazon Resource Name (ARN) of the related-item resource.\n\tResourceUri *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemRelatedItemSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemRelatedItemSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *OpsItemRelatedItemSummary) SetAssociationId(v string) *OpsItemRelatedItemSummary {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetAssociationType sets the AssociationType field's value.\nfunc (s *OpsItemRelatedItemSummary) SetAssociationType(v string) *OpsItemRelatedItemSummary {\n\ts.AssociationType = &v\n\treturn s\n}\n\n// SetCreatedBy sets the CreatedBy field's value.\nfunc (s *OpsItemRelatedItemSummary) SetCreatedBy(v *OpsItemIdentity) *OpsItemRelatedItemSummary {\n\ts.CreatedBy = v\n\treturn s\n}\n\n// SetCreatedTime sets the CreatedTime field's value.\nfunc (s *OpsItemRelatedItemSummary) SetCreatedTime(v time.Time) *OpsItemRelatedItemSummary {\n\ts.CreatedTime = &v\n\treturn s\n}\n\n// SetLastModifiedBy sets the LastModifiedBy field's value.\nfunc (s *OpsItemRelatedItemSummary) SetLastModifiedBy(v *OpsItemIdentity) *OpsItemRelatedItemSummary {\n\ts.LastModifiedBy = v\n\treturn s\n}\n\n// SetLastModifiedTime sets the LastModifiedTime field's value.\nfunc (s *OpsItemRelatedItemSummary) SetLastModifiedTime(v time.Time) *OpsItemRelatedItemSummary {\n\ts.LastModifiedTime = &v\n\treturn s\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *OpsItemRelatedItemSummary) SetOpsItemId(v string) *OpsItemRelatedItemSummary {\n\ts.OpsItemId = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *OpsItemRelatedItemSummary) SetResourceType(v string) *OpsItemRelatedItemSummary {\n\ts.ResourceType = &v\n\treturn s\n}\n\n// SetResourceUri sets the ResourceUri field's value.\nfunc (s *OpsItemRelatedItemSummary) SetResourceUri(v string) *OpsItemRelatedItemSummary {\n\ts.ResourceUri = &v\n\treturn s\n}\n\n// Describes a filter for a specific list of related-item resources.\ntype OpsItemRelatedItemsFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter key. Supported values include ResourceUri, ResourceType,\n\t// or AssociationId.\n\t//\n\t// Key is a required field\n\tKey *string `type:\"string\" required:\"true\" enum:\"OpsItemRelatedItemsFilterKey\"`\n\n\t// The operator used by the filter call. The only supported operator is EQUAL.\n\t//\n\t// Operator is a required field\n\tOperator *string `type:\"string\" required:\"true\" enum:\"OpsItemRelatedItemsFilterOperator\"`\n\n\t// The values for the filter.\n\t//\n\t// Values is a required field\n\tValues []*string `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemRelatedItemsFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemRelatedItemsFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *OpsItemRelatedItemsFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"OpsItemRelatedItemsFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Operator == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Operator\"))\n\t}\n\tif s.Values == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Values\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *OpsItemRelatedItemsFilter) SetKey(v string) *OpsItemRelatedItemsFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetOperator sets the Operator field's value.\nfunc (s *OpsItemRelatedItemsFilter) SetOperator(v string) *OpsItemRelatedItemsFilter {\n\ts.Operator = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *OpsItemRelatedItemsFilter) SetValues(v []*string) *OpsItemRelatedItemsFilter {\n\ts.Values = v\n\treturn s\n}\n\n// A count of OpsItems.\ntype OpsItemSummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time a runbook workflow ended. Currently reported only for the OpsItem\n\t// type /aws/changerequest.\n\tActualEndTime *time.Time `type:\"timestamp\"`\n\n\t// The time a runbook workflow started. Currently reported only for the OpsItem\n\t// type /aws/changerequest.\n\tActualStartTime *time.Time `type:\"timestamp\"`\n\n\t// A list of OpsItems by category.\n\tCategory *string `min:\"1\" type:\"string\"`\n\n\t// The Amazon Resource Name (ARN) of the IAM entity that created the OpsItem.\n\tCreatedBy *string `type:\"string\"`\n\n\t// The date and time the OpsItem was created.\n\tCreatedTime *time.Time `type:\"timestamp\"`\n\n\t// The Amazon Resource Name (ARN) of the IAM entity that created the OpsItem.\n\tLastModifiedBy *string `type:\"string\"`\n\n\t// The date and time the OpsItem was last updated.\n\tLastModifiedTime *time.Time `type:\"timestamp\"`\n\n\t// Operational data is custom data that provides useful reference details about\n\t// the OpsItem.\n\tOperationalData map[string]*OpsItemDataValue `type:\"map\"`\n\n\t// The ID of the OpsItem.\n\tOpsItemId *string `type:\"string\"`\n\n\t// The type of OpsItem. Systems Manager supports the following types of OpsItems:\n\t//\n\t//    * /aws/issue This type of OpsItem is used for default OpsItems created\n\t//    by OpsCenter.\n\t//\n\t//    * /aws/changerequest This type of OpsItem is used by Change Manager for\n\t//    reviewing and approving or rejecting change requests.\n\t//\n\t//    * /aws/insight This type of OpsItem is used by OpsCenter for aggregating\n\t//    and reporting on duplicate OpsItems.\n\tOpsItemType *string `type:\"string\"`\n\n\t// The time specified in a change request for a runbook workflow to end. Currently\n\t// supported only for the OpsItem type /aws/changerequest.\n\tPlannedEndTime *time.Time `type:\"timestamp\"`\n\n\t// The time specified in a change request for a runbook workflow to start. Currently\n\t// supported only for the OpsItem type /aws/changerequest.\n\tPlannedStartTime *time.Time `type:\"timestamp\"`\n\n\t// The importance of this OpsItem in relation to other OpsItems in the system.\n\tPriority *int64 `min:\"1\" type:\"integer\"`\n\n\t// A list of OpsItems by severity.\n\tSeverity *string `min:\"1\" type:\"string\"`\n\n\t// The impacted Amazon Web Services resource.\n\tSource *string `min:\"1\" type:\"string\"`\n\n\t// The OpsItem status. Status can be Open, In Progress, or Resolved.\n\tStatus *string `type:\"string\" enum:\"OpsItemStatus\"`\n\n\t// A short heading that describes the nature of the OpsItem and the impacted\n\t// resource.\n\tTitle *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemSummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsItemSummary) GoString() string {\n\treturn s.String()\n}\n\n// SetActualEndTime sets the ActualEndTime field's value.\nfunc (s *OpsItemSummary) SetActualEndTime(v time.Time) *OpsItemSummary {\n\ts.ActualEndTime = &v\n\treturn s\n}\n\n// SetActualStartTime sets the ActualStartTime field's value.\nfunc (s *OpsItemSummary) SetActualStartTime(v time.Time) *OpsItemSummary {\n\ts.ActualStartTime = &v\n\treturn s\n}\n\n// SetCategory sets the Category field's value.\nfunc (s *OpsItemSummary) SetCategory(v string) *OpsItemSummary {\n\ts.Category = &v\n\treturn s\n}\n\n// SetCreatedBy sets the CreatedBy field's value.\nfunc (s *OpsItemSummary) SetCreatedBy(v string) *OpsItemSummary {\n\ts.CreatedBy = &v\n\treturn s\n}\n\n// SetCreatedTime sets the CreatedTime field's value.\nfunc (s *OpsItemSummary) SetCreatedTime(v time.Time) *OpsItemSummary {\n\ts.CreatedTime = &v\n\treturn s\n}\n\n// SetLastModifiedBy sets the LastModifiedBy field's value.\nfunc (s *OpsItemSummary) SetLastModifiedBy(v string) *OpsItemSummary {\n\ts.LastModifiedBy = &v\n\treturn s\n}\n\n// SetLastModifiedTime sets the LastModifiedTime field's value.\nfunc (s *OpsItemSummary) SetLastModifiedTime(v time.Time) *OpsItemSummary {\n\ts.LastModifiedTime = &v\n\treturn s\n}\n\n// SetOperationalData sets the OperationalData field's value.\nfunc (s *OpsItemSummary) SetOperationalData(v map[string]*OpsItemDataValue) *OpsItemSummary {\n\ts.OperationalData = v\n\treturn s\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *OpsItemSummary) SetOpsItemId(v string) *OpsItemSummary {\n\ts.OpsItemId = &v\n\treturn s\n}\n\n// SetOpsItemType sets the OpsItemType field's value.\nfunc (s *OpsItemSummary) SetOpsItemType(v string) *OpsItemSummary {\n\ts.OpsItemType = &v\n\treturn s\n}\n\n// SetPlannedEndTime sets the PlannedEndTime field's value.\nfunc (s *OpsItemSummary) SetPlannedEndTime(v time.Time) *OpsItemSummary {\n\ts.PlannedEndTime = &v\n\treturn s\n}\n\n// SetPlannedStartTime sets the PlannedStartTime field's value.\nfunc (s *OpsItemSummary) SetPlannedStartTime(v time.Time) *OpsItemSummary {\n\ts.PlannedStartTime = &v\n\treturn s\n}\n\n// SetPriority sets the Priority field's value.\nfunc (s *OpsItemSummary) SetPriority(v int64) *OpsItemSummary {\n\ts.Priority = &v\n\treturn s\n}\n\n// SetSeverity sets the Severity field's value.\nfunc (s *OpsItemSummary) SetSeverity(v string) *OpsItemSummary {\n\ts.Severity = &v\n\treturn s\n}\n\n// SetSource sets the Source field's value.\nfunc (s *OpsItemSummary) SetSource(v string) *OpsItemSummary {\n\ts.Source = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *OpsItemSummary) SetStatus(v string) *OpsItemSummary {\n\ts.Status = &v\n\treturn s\n}\n\n// SetTitle sets the Title field's value.\nfunc (s *OpsItemSummary) SetTitle(v string) *OpsItemSummary {\n\ts.Title = &v\n\treturn s\n}\n\n// Operational metadata for an application in Application Manager.\ntype OpsMetadata struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The date the OpsMetadata objects was created.\n\tCreationDate *time.Time `type:\"timestamp\"`\n\n\t// The date the OpsMetadata object was last updated.\n\tLastModifiedDate *time.Time `type:\"timestamp\"`\n\n\t// The user name who last updated the OpsMetadata object.\n\tLastModifiedUser *string `type:\"string\"`\n\n\t// The Amazon Resource Name (ARN) of the OpsMetadata Object or blob.\n\tOpsMetadataArn *string `min:\"1\" type:\"string\"`\n\n\t// The ID of the Application Manager application.\n\tResourceId *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadata) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadata) GoString() string {\n\treturn s.String()\n}\n\n// SetCreationDate sets the CreationDate field's value.\nfunc (s *OpsMetadata) SetCreationDate(v time.Time) *OpsMetadata {\n\ts.CreationDate = &v\n\treturn s\n}\n\n// SetLastModifiedDate sets the LastModifiedDate field's value.\nfunc (s *OpsMetadata) SetLastModifiedDate(v time.Time) *OpsMetadata {\n\ts.LastModifiedDate = &v\n\treturn s\n}\n\n// SetLastModifiedUser sets the LastModifiedUser field's value.\nfunc (s *OpsMetadata) SetLastModifiedUser(v string) *OpsMetadata {\n\ts.LastModifiedUser = &v\n\treturn s\n}\n\n// SetOpsMetadataArn sets the OpsMetadataArn field's value.\nfunc (s *OpsMetadata) SetOpsMetadataArn(v string) *OpsMetadata {\n\ts.OpsMetadataArn = &v\n\treturn s\n}\n\n// SetResourceId sets the ResourceId field's value.\nfunc (s *OpsMetadata) SetResourceId(v string) *OpsMetadata {\n\ts.ResourceId = &v\n\treturn s\n}\n\n// An OpsMetadata object already exists for the selected resource.\ntype OpsMetadataAlreadyExistsException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataAlreadyExistsException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataAlreadyExistsException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsMetadataAlreadyExistsException(v protocol.ResponseMetadata) error {\n\treturn &OpsMetadataAlreadyExistsException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsMetadataAlreadyExistsException) Code() string {\n\treturn \"OpsMetadataAlreadyExistsException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsMetadataAlreadyExistsException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsMetadataAlreadyExistsException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsMetadataAlreadyExistsException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsMetadataAlreadyExistsException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsMetadataAlreadyExistsException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// A filter to limit the number of OpsMetadata objects displayed.\ntype OpsMetadataFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A filter key.\n\t//\n\t// Key is a required field\n\tKey *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// A filter value.\n\t//\n\t// Values is a required field\n\tValues []*string `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *OpsMetadataFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"OpsMetadataFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\tif s.Values == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Values\"))\n\t}\n\tif s.Values != nil && len(s.Values) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Values\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *OpsMetadataFilter) SetKey(v string) *OpsMetadataFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *OpsMetadataFilter) SetValues(v []*string) *OpsMetadataFilter {\n\ts.Values = v\n\treturn s\n}\n\n// One of the arguments passed is invalid.\ntype OpsMetadataInvalidArgumentException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataInvalidArgumentException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataInvalidArgumentException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsMetadataInvalidArgumentException(v protocol.ResponseMetadata) error {\n\treturn &OpsMetadataInvalidArgumentException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsMetadataInvalidArgumentException) Code() string {\n\treturn \"OpsMetadataInvalidArgumentException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsMetadataInvalidArgumentException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsMetadataInvalidArgumentException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsMetadataInvalidArgumentException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsMetadataInvalidArgumentException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsMetadataInvalidArgumentException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The OpsMetadata object exceeds the maximum number of OpsMetadata keys that\n// you can assign to an application in Application Manager.\ntype OpsMetadataKeyLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataKeyLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataKeyLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsMetadataKeyLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &OpsMetadataKeyLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsMetadataKeyLimitExceededException) Code() string {\n\treturn \"OpsMetadataKeyLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsMetadataKeyLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsMetadataKeyLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsMetadataKeyLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsMetadataKeyLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsMetadataKeyLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Your account reached the maximum number of OpsMetadata objects allowed by\n// Application Manager. The maximum is 200 OpsMetadata objects. Delete one or\n// more OpsMetadata object and try again.\ntype OpsMetadataLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsMetadataLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &OpsMetadataLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsMetadataLimitExceededException) Code() string {\n\treturn \"OpsMetadataLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsMetadataLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsMetadataLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsMetadataLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsMetadataLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsMetadataLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The OpsMetadata object doesn't exist.\ntype OpsMetadataNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsMetadataNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &OpsMetadataNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsMetadataNotFoundException) Code() string {\n\treturn \"OpsMetadataNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsMetadataNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsMetadataNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsMetadataNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsMetadataNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsMetadataNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The system is processing too many concurrent updates. Wait a few moments\n// and try again.\ntype OpsMetadataTooManyUpdatesException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataTooManyUpdatesException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsMetadataTooManyUpdatesException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorOpsMetadataTooManyUpdatesException(v protocol.ResponseMetadata) error {\n\treturn &OpsMetadataTooManyUpdatesException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *OpsMetadataTooManyUpdatesException) Code() string {\n\treturn \"OpsMetadataTooManyUpdatesException\"\n}\n\n// Message returns the exception's message.\nfunc (s *OpsMetadataTooManyUpdatesException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *OpsMetadataTooManyUpdatesException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *OpsMetadataTooManyUpdatesException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *OpsMetadataTooManyUpdatesException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *OpsMetadataTooManyUpdatesException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The OpsItem data type to return.\ntype OpsResultAttribute struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Name of the data type. Valid value: AWS:OpsItem, AWS:EC2InstanceInformation,\n\t// AWS:OpsItemTrendline, or AWS:ComplianceSummary.\n\t//\n\t// TypeName is a required field\n\tTypeName *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsResultAttribute) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OpsResultAttribute) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *OpsResultAttribute) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"OpsResultAttribute\"}\n\tif s.TypeName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TypeName\"))\n\t}\n\tif s.TypeName != nil && len(*s.TypeName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TypeName\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetTypeName sets the TypeName field's value.\nfunc (s *OpsResultAttribute) SetTypeName(v string) *OpsResultAttribute {\n\ts.TypeName = &v\n\treturn s\n}\n\n// Information about the source where the association execution details are\n// stored.\ntype OutputSource struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the output source, for example the URL of an S3 bucket.\n\tOutputSourceId *string `min:\"36\" type:\"string\"`\n\n\t// The type of source where the association execution details are stored, for\n\t// example, Amazon S3.\n\tOutputSourceType *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OutputSource) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s OutputSource) GoString() string {\n\treturn s.String()\n}\n\n// SetOutputSourceId sets the OutputSourceId field's value.\nfunc (s *OutputSource) SetOutputSourceId(v string) *OutputSource {\n\ts.OutputSourceId = &v\n\treturn s\n}\n\n// SetOutputSourceType sets the OutputSourceType field's value.\nfunc (s *OutputSource) SetOutputSourceType(v string) *OutputSource {\n\ts.OutputSourceType = &v\n\treturn s\n}\n\n// An Amazon Web Services Systems Manager parameter in Parameter Store.\ntype Parameter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) of the parameter.\n\tARN *string `type:\"string\"`\n\n\t// The data type of the parameter, such as text or aws:ec2:image. The default\n\t// is text.\n\tDataType *string `type:\"string\"`\n\n\t// Date the parameter was last changed or updated and the parameter version\n\t// was created.\n\tLastModifiedDate *time.Time `type:\"timestamp\"`\n\n\t// The name of the parameter.\n\tName *string `min:\"1\" type:\"string\"`\n\n\t// Either the version number or the label used to retrieve the parameter value.\n\t// Specify selectors by using one of the following formats:\n\t//\n\t// parameter_name:version\n\t//\n\t// parameter_name:label\n\tSelector *string `type:\"string\"`\n\n\t// Applies to parameters that reference information in other Amazon Web Services\n\t// services. SourceResult is the raw result or response from the source.\n\tSourceResult *string `type:\"string\"`\n\n\t// The type of parameter. Valid values include the following: String, StringList,\n\t// and SecureString.\n\t//\n\t// If type is StringList, the system returns a comma-separated string with no\n\t// spaces between commas in the Value field.\n\tType *string `type:\"string\" enum:\"ParameterType\"`\n\n\t// The parameter value.\n\t//\n\t// If type is StringList, the system returns a comma-separated string with no\n\t// spaces between commas in the Value field.\n\t//\n\t// Value is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by Parameter's\n\t// String and GoString methods.\n\tValue *string `type:\"string\" sensitive:\"true\"`\n\n\t// The parameter version.\n\tVersion *int64 `type:\"long\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Parameter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Parameter) GoString() string {\n\treturn s.String()\n}\n\n// SetARN sets the ARN field's value.\nfunc (s *Parameter) SetARN(v string) *Parameter {\n\ts.ARN = &v\n\treturn s\n}\n\n// SetDataType sets the DataType field's value.\nfunc (s *Parameter) SetDataType(v string) *Parameter {\n\ts.DataType = &v\n\treturn s\n}\n\n// SetLastModifiedDate sets the LastModifiedDate field's value.\nfunc (s *Parameter) SetLastModifiedDate(v time.Time) *Parameter {\n\ts.LastModifiedDate = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *Parameter) SetName(v string) *Parameter {\n\ts.Name = &v\n\treturn s\n}\n\n// SetSelector sets the Selector field's value.\nfunc (s *Parameter) SetSelector(v string) *Parameter {\n\ts.Selector = &v\n\treturn s\n}\n\n// SetSourceResult sets the SourceResult field's value.\nfunc (s *Parameter) SetSourceResult(v string) *Parameter {\n\ts.SourceResult = &v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *Parameter) SetType(v string) *Parameter {\n\ts.Type = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *Parameter) SetValue(v string) *Parameter {\n\ts.Value = &v\n\treturn s\n}\n\n// SetVersion sets the Version field's value.\nfunc (s *Parameter) SetVersion(v int64) *Parameter {\n\ts.Version = &v\n\treturn s\n}\n\n// The parameter already exists. You can't create duplicate parameters.\ntype ParameterAlreadyExists struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterAlreadyExists) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterAlreadyExists) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorParameterAlreadyExists(v protocol.ResponseMetadata) error {\n\treturn &ParameterAlreadyExists{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ParameterAlreadyExists) Code() string {\n\treturn \"ParameterAlreadyExists\"\n}\n\n// Message returns the exception's message.\nfunc (s *ParameterAlreadyExists) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ParameterAlreadyExists) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ParameterAlreadyExists) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ParameterAlreadyExists) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ParameterAlreadyExists) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Information about parameter usage.\ntype ParameterHistory struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Parameter names can include the following letters and symbols.\n\t//\n\t// a-zA-Z0-9_.-\n\tAllowedPattern *string `type:\"string\"`\n\n\t// The data type of the parameter, such as text or aws:ec2:image. The default\n\t// is text.\n\tDataType *string `type:\"string\"`\n\n\t// Information about the parameter.\n\tDescription *string `type:\"string\"`\n\n\t// The ID of the query key used for this parameter.\n\tKeyId *string `min:\"1\" type:\"string\"`\n\n\t// Labels assigned to the parameter version.\n\tLabels []*string `min:\"1\" type:\"list\"`\n\n\t// Date the parameter was last changed or updated.\n\tLastModifiedDate *time.Time `type:\"timestamp\"`\n\n\t// Amazon Resource Name (ARN) of the Amazon Web Services user who last changed\n\t// the parameter.\n\tLastModifiedUser *string `type:\"string\"`\n\n\t// The name of the parameter.\n\tName *string `min:\"1\" type:\"string\"`\n\n\t// Information about the policies assigned to a parameter.\n\t//\n\t// Assigning parameter policies (https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-policies.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tPolicies []*ParameterInlinePolicy `type:\"list\"`\n\n\t// The parameter tier.\n\tTier *string `type:\"string\" enum:\"ParameterTier\"`\n\n\t// The type of parameter used.\n\tType *string `type:\"string\" enum:\"ParameterType\"`\n\n\t// The parameter value.\n\t//\n\t// Value is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by ParameterHistory's\n\t// String and GoString methods.\n\tValue *string `type:\"string\" sensitive:\"true\"`\n\n\t// The parameter version.\n\tVersion *int64 `type:\"long\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterHistory) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterHistory) GoString() string {\n\treturn s.String()\n}\n\n// SetAllowedPattern sets the AllowedPattern field's value.\nfunc (s *ParameterHistory) SetAllowedPattern(v string) *ParameterHistory {\n\ts.AllowedPattern = &v\n\treturn s\n}\n\n// SetDataType sets the DataType field's value.\nfunc (s *ParameterHistory) SetDataType(v string) *ParameterHistory {\n\ts.DataType = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *ParameterHistory) SetDescription(v string) *ParameterHistory {\n\ts.Description = &v\n\treturn s\n}\n\n// SetKeyId sets the KeyId field's value.\nfunc (s *ParameterHistory) SetKeyId(v string) *ParameterHistory {\n\ts.KeyId = &v\n\treturn s\n}\n\n// SetLabels sets the Labels field's value.\nfunc (s *ParameterHistory) SetLabels(v []*string) *ParameterHistory {\n\ts.Labels = v\n\treturn s\n}\n\n// SetLastModifiedDate sets the LastModifiedDate field's value.\nfunc (s *ParameterHistory) SetLastModifiedDate(v time.Time) *ParameterHistory {\n\ts.LastModifiedDate = &v\n\treturn s\n}\n\n// SetLastModifiedUser sets the LastModifiedUser field's value.\nfunc (s *ParameterHistory) SetLastModifiedUser(v string) *ParameterHistory {\n\ts.LastModifiedUser = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *ParameterHistory) SetName(v string) *ParameterHistory {\n\ts.Name = &v\n\treturn s\n}\n\n// SetPolicies sets the Policies field's value.\nfunc (s *ParameterHistory) SetPolicies(v []*ParameterInlinePolicy) *ParameterHistory {\n\ts.Policies = v\n\treturn s\n}\n\n// SetTier sets the Tier field's value.\nfunc (s *ParameterHistory) SetTier(v string) *ParameterHistory {\n\ts.Tier = &v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *ParameterHistory) SetType(v string) *ParameterHistory {\n\ts.Type = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *ParameterHistory) SetValue(v string) *ParameterHistory {\n\ts.Value = &v\n\treturn s\n}\n\n// SetVersion sets the Version field's value.\nfunc (s *ParameterHistory) SetVersion(v int64) *ParameterHistory {\n\ts.Version = &v\n\treturn s\n}\n\n// One or more policies assigned to a parameter.\ntype ParameterInlinePolicy struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The status of the policy. Policies report the following statuses: Pending\n\t// (the policy hasn't been enforced or applied yet), Finished (the policy was\n\t// applied), Failed (the policy wasn't applied), or InProgress (the policy is\n\t// being applied now).\n\tPolicyStatus *string `type:\"string\"`\n\n\t// The JSON text of the policy.\n\tPolicyText *string `type:\"string\"`\n\n\t// The type of policy. Parameter Store, a capability of Amazon Web Services\n\t// Systems Manager, supports the following policy types: Expiration, ExpirationNotification,\n\t// and NoChangeNotification.\n\tPolicyType *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterInlinePolicy) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterInlinePolicy) GoString() string {\n\treturn s.String()\n}\n\n// SetPolicyStatus sets the PolicyStatus field's value.\nfunc (s *ParameterInlinePolicy) SetPolicyStatus(v string) *ParameterInlinePolicy {\n\ts.PolicyStatus = &v\n\treturn s\n}\n\n// SetPolicyText sets the PolicyText field's value.\nfunc (s *ParameterInlinePolicy) SetPolicyText(v string) *ParameterInlinePolicy {\n\ts.PolicyText = &v\n\treturn s\n}\n\n// SetPolicyType sets the PolicyType field's value.\nfunc (s *ParameterInlinePolicy) SetPolicyType(v string) *ParameterInlinePolicy {\n\ts.PolicyType = &v\n\treturn s\n}\n\n// You have exceeded the number of parameters for this Amazon Web Services account.\n// Delete one or more parameters and try again.\ntype ParameterLimitExceeded struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterLimitExceeded) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterLimitExceeded) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorParameterLimitExceeded(v protocol.ResponseMetadata) error {\n\treturn &ParameterLimitExceeded{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ParameterLimitExceeded) Code() string {\n\treturn \"ParameterLimitExceeded\"\n}\n\n// Message returns the exception's message.\nfunc (s *ParameterLimitExceeded) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ParameterLimitExceeded) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ParameterLimitExceeded) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ParameterLimitExceeded) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ParameterLimitExceeded) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Parameter Store retains the 100 most recently created versions of a parameter.\n// After this number of versions has been created, Parameter Store deletes the\n// oldest version when a new one is created. However, if the oldest version\n// has a label attached to it, Parameter Store won't delete the version and\n// instead presents this error message:\n//\n// An error occurred (ParameterMaxVersionLimitExceeded) when calling the PutParameter\n// operation: You attempted to create a new version of parameter-name by calling\n// the PutParameter API with the overwrite flag. Version version-number, the\n// oldest version, can't be deleted because it has a label associated with it.\n// Move the label to another version of the parameter, and try again.\n//\n// This safeguard is to prevent parameter versions with mission critical labels\n// assigned to them from being deleted. To continue creating new parameters,\n// first move the label from the oldest version of the parameter to a newer\n// one for use in your operations. For information about moving parameter labels,\n// see Move a parameter label (console) (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-labels.html#sysman-paramstore-labels-console-move)\n// or Move a parameter label (CLI) (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-labels.html#sysman-paramstore-labels-cli-move)\n// in the Amazon Web Services Systems Manager User Guide.\ntype ParameterMaxVersionLimitExceeded struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterMaxVersionLimitExceeded) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterMaxVersionLimitExceeded) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorParameterMaxVersionLimitExceeded(v protocol.ResponseMetadata) error {\n\treturn &ParameterMaxVersionLimitExceeded{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ParameterMaxVersionLimitExceeded) Code() string {\n\treturn \"ParameterMaxVersionLimitExceeded\"\n}\n\n// Message returns the exception's message.\nfunc (s *ParameterMaxVersionLimitExceeded) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ParameterMaxVersionLimitExceeded) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ParameterMaxVersionLimitExceeded) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ParameterMaxVersionLimitExceeded) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ParameterMaxVersionLimitExceeded) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Metadata includes information like the ARN of the last user and the date/time\n// the parameter was last used.\ntype ParameterMetadata struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A parameter name can include only the following letters and symbols.\n\t//\n\t// a-zA-Z0-9_.-\n\tAllowedPattern *string `type:\"string\"`\n\n\t// The data type of the parameter, such as text or aws:ec2:image. The default\n\t// is text.\n\tDataType *string `type:\"string\"`\n\n\t// Description of the parameter actions.\n\tDescription *string `type:\"string\"`\n\n\t// The ID of the query key used for this parameter.\n\tKeyId *string `min:\"1\" type:\"string\"`\n\n\t// Date the parameter was last changed or updated.\n\tLastModifiedDate *time.Time `type:\"timestamp\"`\n\n\t// Amazon Resource Name (ARN) of the Amazon Web Services user who last changed\n\t// the parameter.\n\tLastModifiedUser *string `type:\"string\"`\n\n\t// The parameter name.\n\tName *string `min:\"1\" type:\"string\"`\n\n\t// A list of policies associated with a parameter.\n\tPolicies []*ParameterInlinePolicy `type:\"list\"`\n\n\t// The parameter tier.\n\tTier *string `type:\"string\" enum:\"ParameterTier\"`\n\n\t// The type of parameter. Valid parameter types include the following: String,\n\t// StringList, and SecureString.\n\tType *string `type:\"string\" enum:\"ParameterType\"`\n\n\t// The parameter version.\n\tVersion *int64 `type:\"long\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterMetadata) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterMetadata) GoString() string {\n\treturn s.String()\n}\n\n// SetAllowedPattern sets the AllowedPattern field's value.\nfunc (s *ParameterMetadata) SetAllowedPattern(v string) *ParameterMetadata {\n\ts.AllowedPattern = &v\n\treturn s\n}\n\n// SetDataType sets the DataType field's value.\nfunc (s *ParameterMetadata) SetDataType(v string) *ParameterMetadata {\n\ts.DataType = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *ParameterMetadata) SetDescription(v string) *ParameterMetadata {\n\ts.Description = &v\n\treturn s\n}\n\n// SetKeyId sets the KeyId field's value.\nfunc (s *ParameterMetadata) SetKeyId(v string) *ParameterMetadata {\n\ts.KeyId = &v\n\treturn s\n}\n\n// SetLastModifiedDate sets the LastModifiedDate field's value.\nfunc (s *ParameterMetadata) SetLastModifiedDate(v time.Time) *ParameterMetadata {\n\ts.LastModifiedDate = &v\n\treturn s\n}\n\n// SetLastModifiedUser sets the LastModifiedUser field's value.\nfunc (s *ParameterMetadata) SetLastModifiedUser(v string) *ParameterMetadata {\n\ts.LastModifiedUser = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *ParameterMetadata) SetName(v string) *ParameterMetadata {\n\ts.Name = &v\n\treturn s\n}\n\n// SetPolicies sets the Policies field's value.\nfunc (s *ParameterMetadata) SetPolicies(v []*ParameterInlinePolicy) *ParameterMetadata {\n\ts.Policies = v\n\treturn s\n}\n\n// SetTier sets the Tier field's value.\nfunc (s *ParameterMetadata) SetTier(v string) *ParameterMetadata {\n\ts.Tier = &v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *ParameterMetadata) SetType(v string) *ParameterMetadata {\n\ts.Type = &v\n\treturn s\n}\n\n// SetVersion sets the Version field's value.\nfunc (s *ParameterMetadata) SetVersion(v int64) *ParameterMetadata {\n\ts.Version = &v\n\treturn s\n}\n\n// The parameter couldn't be found. Verify the name and try again.\ntype ParameterNotFound struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterNotFound) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterNotFound) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorParameterNotFound(v protocol.ResponseMetadata) error {\n\treturn &ParameterNotFound{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ParameterNotFound) Code() string {\n\treturn \"ParameterNotFound\"\n}\n\n// Message returns the exception's message.\nfunc (s *ParameterNotFound) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ParameterNotFound) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ParameterNotFound) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ParameterNotFound) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ParameterNotFound) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The parameter name isn't valid.\ntype ParameterPatternMismatchException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// The parameter name isn't valid.\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterPatternMismatchException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterPatternMismatchException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorParameterPatternMismatchException(v protocol.ResponseMetadata) error {\n\treturn &ParameterPatternMismatchException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ParameterPatternMismatchException) Code() string {\n\treturn \"ParameterPatternMismatchException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ParameterPatternMismatchException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ParameterPatternMismatchException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ParameterPatternMismatchException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ParameterPatternMismatchException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ParameterPatternMismatchException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// One or more filters. Use a filter to return a more specific list of results.\ntype ParameterStringFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter.\n\t//\n\t// The ParameterStringFilter object is used by the DescribeParameters and GetParametersByPath\n\t// API operations. However, not all of the pattern values listed for Key can\n\t// be used with both operations.\n\t//\n\t// For DescribeParameters, all of the listed patterns are valid except Label.\n\t//\n\t// For GetParametersByPath, the following patterns listed for Key aren't valid:\n\t// tag, DataType, Name, Path, and Tier.\n\t//\n\t// For examples of Amazon Web Services CLI commands demonstrating valid parameter\n\t// filter constructions, see Searching for Systems Manager parameters (https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-search.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\t//\n\t// Key is a required field\n\tKey *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// For all filters used with DescribeParameters, valid options include Equals\n\t// and BeginsWith. The Name filter additionally supports the Contains option.\n\t// (Exception: For filters using the key Path, valid options include Recursive\n\t// and OneLevel.)\n\t//\n\t// For filters used with GetParametersByPath, valid options include Equals and\n\t// BeginsWith. (Exception: For filters using Label as the Key name, the only\n\t// valid option is Equals.)\n\tOption *string `min:\"1\" type:\"string\"`\n\n\t// The value you want to search for.\n\tValues []*string `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterStringFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterStringFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ParameterStringFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ParameterStringFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\tif s.Option != nil && len(*s.Option) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Option\", 1))\n\t}\n\tif s.Values != nil && len(s.Values) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Values\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *ParameterStringFilter) SetKey(v string) *ParameterStringFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetOption sets the Option field's value.\nfunc (s *ParameterStringFilter) SetOption(v string) *ParameterStringFilter {\n\ts.Option = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *ParameterStringFilter) SetValues(v []*string) *ParameterStringFilter {\n\ts.Values = v\n\treturn s\n}\n\n// A parameter version can have a maximum of ten labels.\ntype ParameterVersionLabelLimitExceeded struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterVersionLabelLimitExceeded) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterVersionLabelLimitExceeded) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorParameterVersionLabelLimitExceeded(v protocol.ResponseMetadata) error {\n\treturn &ParameterVersionLabelLimitExceeded{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ParameterVersionLabelLimitExceeded) Code() string {\n\treturn \"ParameterVersionLabelLimitExceeded\"\n}\n\n// Message returns the exception's message.\nfunc (s *ParameterVersionLabelLimitExceeded) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ParameterVersionLabelLimitExceeded) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ParameterVersionLabelLimitExceeded) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ParameterVersionLabelLimitExceeded) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ParameterVersionLabelLimitExceeded) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The specified parameter version wasn't found. Verify the parameter name and\n// version, and try again.\ntype ParameterVersionNotFound struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterVersionNotFound) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParameterVersionNotFound) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorParameterVersionNotFound(v protocol.ResponseMetadata) error {\n\treturn &ParameterVersionNotFound{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ParameterVersionNotFound) Code() string {\n\treturn \"ParameterVersionNotFound\"\n}\n\n// Message returns the exception's message.\nfunc (s *ParameterVersionNotFound) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ParameterVersionNotFound) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ParameterVersionNotFound) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ParameterVersionNotFound) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ParameterVersionNotFound) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// This data type is deprecated. Instead, use ParameterStringFilter.\ntype ParametersFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter.\n\t//\n\t// Key is a required field\n\tKey *string `type:\"string\" required:\"true\" enum:\"ParametersFilterKey\"`\n\n\t// The filter values.\n\t//\n\t// Values is a required field\n\tValues []*string `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParametersFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParametersFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ParametersFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ParametersFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Values == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Values\"))\n\t}\n\tif s.Values != nil && len(s.Values) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Values\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *ParametersFilter) SetKey(v string) *ParametersFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *ParametersFilter) SetValues(v []*string) *ParametersFilter {\n\ts.Values = v\n\treturn s\n}\n\n// A detailed status of the parent step.\ntype ParentStepDetails struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the automation action.\n\tAction *string `type:\"string\"`\n\n\t// The current repetition of the loop represented by an integer.\n\tIteration *int64 `type:\"integer\"`\n\n\t// The current value of the specified iterator in the loop.\n\tIteratorValue *string `type:\"string\"`\n\n\t// The unique ID of a step execution.\n\tStepExecutionId *string `type:\"string\"`\n\n\t// The name of the step.\n\tStepName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParentStepDetails) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ParentStepDetails) GoString() string {\n\treturn s.String()\n}\n\n// SetAction sets the Action field's value.\nfunc (s *ParentStepDetails) SetAction(v string) *ParentStepDetails {\n\ts.Action = &v\n\treturn s\n}\n\n// SetIteration sets the Iteration field's value.\nfunc (s *ParentStepDetails) SetIteration(v int64) *ParentStepDetails {\n\ts.Iteration = &v\n\treturn s\n}\n\n// SetIteratorValue sets the IteratorValue field's value.\nfunc (s *ParentStepDetails) SetIteratorValue(v string) *ParentStepDetails {\n\ts.IteratorValue = &v\n\treturn s\n}\n\n// SetStepExecutionId sets the StepExecutionId field's value.\nfunc (s *ParentStepDetails) SetStepExecutionId(v string) *ParentStepDetails {\n\ts.StepExecutionId = &v\n\treturn s\n}\n\n// SetStepName sets the StepName field's value.\nfunc (s *ParentStepDetails) SetStepName(v string) *ParentStepDetails {\n\ts.StepName = &v\n\treturn s\n}\n\n// Represents metadata about a patch.\ntype Patch struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Advisory ID of the patch. For example, RHSA-2020:3779. Applies to Linux-based\n\t// managed nodes only.\n\tAdvisoryIds []*string `type:\"list\"`\n\n\t// The architecture of the patch. For example, in example-pkg-0.710.10-2.7.abcd.x86_64,\n\t// the architecture is indicated by x86_64. Applies to Linux-based managed nodes\n\t// only.\n\tArch *string `type:\"string\"`\n\n\t// The Bugzilla ID of the patch. For example, 1600646. Applies to Linux-based\n\t// managed nodes only.\n\tBugzillaIds []*string `type:\"list\"`\n\n\t// The Common Vulnerabilities and Exposures (CVE) ID of the patch. For example,\n\t// CVE-2011-3192. Applies to Linux-based managed nodes only.\n\tCVEIds []*string `type:\"list\"`\n\n\t// The classification of the patch. For example, SecurityUpdates, Updates, or\n\t// CriticalUpdates.\n\tClassification *string `type:\"string\"`\n\n\t// The URL where more information can be obtained about the patch.\n\tContentUrl *string `type:\"string\"`\n\n\t// The description of the patch.\n\tDescription *string `type:\"string\"`\n\n\t// The epoch of the patch. For example in pkg-example-EE-20180914-2.2.amzn1.noarch,\n\t// the epoch value is 20180914-2. Applies to Linux-based managed nodes only.\n\tEpoch *int64 `type:\"integer\"`\n\n\t// The ID of the patch. Applies to Windows patches only.\n\t//\n\t// This ID isn't the same as the Microsoft Knowledge Base ID.\n\tId *string `min:\"1\" type:\"string\"`\n\n\t// The Microsoft Knowledge Base ID of the patch. Applies to Windows patches\n\t// only.\n\tKbNumber *string `type:\"string\"`\n\n\t// The language of the patch if it's language-specific.\n\tLanguage *string `type:\"string\"`\n\n\t// The ID of the Microsoft Security Response Center (MSRC) bulletin the patch\n\t// is related to. For example, MS14-045. Applies to Windows patches only.\n\tMsrcNumber *string `type:\"string\"`\n\n\t// The severity of the patch, such as Critical, Important, or Moderate. Applies\n\t// to Windows patches only.\n\tMsrcSeverity *string `type:\"string\"`\n\n\t// The name of the patch. Applies to Linux-based managed nodes only.\n\tName *string `type:\"string\"`\n\n\t// The specific product the patch is applicable for. For example, WindowsServer2016\n\t// or AmazonLinux2018.03.\n\tProduct *string `type:\"string\"`\n\n\t// The product family the patch is applicable for. For example, Windows or Amazon\n\t// Linux 2.\n\tProductFamily *string `type:\"string\"`\n\n\t// The particular release of a patch. For example, in pkg-example-EE-20180914-2.2.amzn1.noarch,\n\t// the release is 2.amaz1. Applies to Linux-based managed nodes only.\n\tRelease *string `type:\"string\"`\n\n\t// The date the patch was released.\n\tReleaseDate *time.Time `type:\"timestamp\"`\n\n\t// The source patch repository for the operating system and version, such as\n\t// trusty-security for Ubuntu Server 14.04 LTE and focal-security for Ubuntu\n\t// Server 20.04 LTE. Applies to Linux-based managed nodes only.\n\tRepository *string `type:\"string\"`\n\n\t// The severity level of the patch. For example, CRITICAL or MODERATE.\n\tSeverity *string `type:\"string\"`\n\n\t// The title of the patch.\n\tTitle *string `type:\"string\"`\n\n\t// The name of the vendor providing the patch.\n\tVendor *string `type:\"string\"`\n\n\t// The version number of the patch. For example, in example-pkg-1.710.10-2.7.abcd.x86_64,\n\t// the version number is indicated by -1. Applies to Linux-based managed nodes\n\t// only.\n\tVersion *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Patch) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Patch) GoString() string {\n\treturn s.String()\n}\n\n// SetAdvisoryIds sets the AdvisoryIds field's value.\nfunc (s *Patch) SetAdvisoryIds(v []*string) *Patch {\n\ts.AdvisoryIds = v\n\treturn s\n}\n\n// SetArch sets the Arch field's value.\nfunc (s *Patch) SetArch(v string) *Patch {\n\ts.Arch = &v\n\treturn s\n}\n\n// SetBugzillaIds sets the BugzillaIds field's value.\nfunc (s *Patch) SetBugzillaIds(v []*string) *Patch {\n\ts.BugzillaIds = v\n\treturn s\n}\n\n// SetCVEIds sets the CVEIds field's value.\nfunc (s *Patch) SetCVEIds(v []*string) *Patch {\n\ts.CVEIds = v\n\treturn s\n}\n\n// SetClassification sets the Classification field's value.\nfunc (s *Patch) SetClassification(v string) *Patch {\n\ts.Classification = &v\n\treturn s\n}\n\n// SetContentUrl sets the ContentUrl field's value.\nfunc (s *Patch) SetContentUrl(v string) *Patch {\n\ts.ContentUrl = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *Patch) SetDescription(v string) *Patch {\n\ts.Description = &v\n\treturn s\n}\n\n// SetEpoch sets the Epoch field's value.\nfunc (s *Patch) SetEpoch(v int64) *Patch {\n\ts.Epoch = &v\n\treturn s\n}\n\n// SetId sets the Id field's value.\nfunc (s *Patch) SetId(v string) *Patch {\n\ts.Id = &v\n\treturn s\n}\n\n// SetKbNumber sets the KbNumber field's value.\nfunc (s *Patch) SetKbNumber(v string) *Patch {\n\ts.KbNumber = &v\n\treturn s\n}\n\n// SetLanguage sets the Language field's value.\nfunc (s *Patch) SetLanguage(v string) *Patch {\n\ts.Language = &v\n\treturn s\n}\n\n// SetMsrcNumber sets the MsrcNumber field's value.\nfunc (s *Patch) SetMsrcNumber(v string) *Patch {\n\ts.MsrcNumber = &v\n\treturn s\n}\n\n// SetMsrcSeverity sets the MsrcSeverity field's value.\nfunc (s *Patch) SetMsrcSeverity(v string) *Patch {\n\ts.MsrcSeverity = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *Patch) SetName(v string) *Patch {\n\ts.Name = &v\n\treturn s\n}\n\n// SetProduct sets the Product field's value.\nfunc (s *Patch) SetProduct(v string) *Patch {\n\ts.Product = &v\n\treturn s\n}\n\n// SetProductFamily sets the ProductFamily field's value.\nfunc (s *Patch) SetProductFamily(v string) *Patch {\n\ts.ProductFamily = &v\n\treturn s\n}\n\n// SetRelease sets the Release field's value.\nfunc (s *Patch) SetRelease(v string) *Patch {\n\ts.Release = &v\n\treturn s\n}\n\n// SetReleaseDate sets the ReleaseDate field's value.\nfunc (s *Patch) SetReleaseDate(v time.Time) *Patch {\n\ts.ReleaseDate = &v\n\treturn s\n}\n\n// SetRepository sets the Repository field's value.\nfunc (s *Patch) SetRepository(v string) *Patch {\n\ts.Repository = &v\n\treturn s\n}\n\n// SetSeverity sets the Severity field's value.\nfunc (s *Patch) SetSeverity(v string) *Patch {\n\ts.Severity = &v\n\treturn s\n}\n\n// SetTitle sets the Title field's value.\nfunc (s *Patch) SetTitle(v string) *Patch {\n\ts.Title = &v\n\treturn s\n}\n\n// SetVendor sets the Vendor field's value.\nfunc (s *Patch) SetVendor(v string) *Patch {\n\ts.Vendor = &v\n\treturn s\n}\n\n// SetVersion sets the Version field's value.\nfunc (s *Patch) SetVersion(v string) *Patch {\n\ts.Version = &v\n\treturn s\n}\n\n// Defines the basic information about a patch baseline.\ntype PatchBaselineIdentity struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The description of the patch baseline.\n\tBaselineDescription *string `min:\"1\" type:\"string\"`\n\n\t// The ID of the patch baseline.\n\tBaselineId *string `min:\"20\" type:\"string\"`\n\n\t// The name of the patch baseline.\n\tBaselineName *string `min:\"3\" type:\"string\"`\n\n\t// Whether this is the default baseline. Amazon Web Services Systems Manager\n\t// supports creating multiple default patch baselines. For example, you can\n\t// create a default patch baseline for each operating system.\n\tDefaultBaseline *bool `type:\"boolean\"`\n\n\t// Defines the operating system the patch baseline applies to. The default value\n\t// is WINDOWS.\n\tOperatingSystem *string `type:\"string\" enum:\"OperatingSystem\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchBaselineIdentity) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchBaselineIdentity) GoString() string {\n\treturn s.String()\n}\n\n// SetBaselineDescription sets the BaselineDescription field's value.\nfunc (s *PatchBaselineIdentity) SetBaselineDescription(v string) *PatchBaselineIdentity {\n\ts.BaselineDescription = &v\n\treturn s\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *PatchBaselineIdentity) SetBaselineId(v string) *PatchBaselineIdentity {\n\ts.BaselineId = &v\n\treturn s\n}\n\n// SetBaselineName sets the BaselineName field's value.\nfunc (s *PatchBaselineIdentity) SetBaselineName(v string) *PatchBaselineIdentity {\n\ts.BaselineName = &v\n\treturn s\n}\n\n// SetDefaultBaseline sets the DefaultBaseline field's value.\nfunc (s *PatchBaselineIdentity) SetDefaultBaseline(v bool) *PatchBaselineIdentity {\n\ts.DefaultBaseline = &v\n\treturn s\n}\n\n// SetOperatingSystem sets the OperatingSystem field's value.\nfunc (s *PatchBaselineIdentity) SetOperatingSystem(v string) *PatchBaselineIdentity {\n\ts.OperatingSystem = &v\n\treturn s\n}\n\n// Information about the state of a patch on a particular managed node as it\n// relates to the patch baseline used to patch the node.\ntype PatchComplianceData struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The IDs of one or more Common Vulnerabilities and Exposure (CVE) issues that\n\t// are resolved by the patch.\n\tCVEIds *string `type:\"string\"`\n\n\t// The classification of the patch, such as SecurityUpdates, Updates, and CriticalUpdates.\n\t//\n\t// Classification is a required field\n\tClassification *string `type:\"string\" required:\"true\"`\n\n\t// The date/time the patch was installed on the managed node. Not all operating\n\t// systems provide this level of information.\n\t//\n\t// InstalledTime is a required field\n\tInstalledTime *time.Time `type:\"timestamp\" required:\"true\"`\n\n\t// The operating system-specific ID of the patch.\n\t//\n\t// KBId is a required field\n\tKBId *string `type:\"string\" required:\"true\"`\n\n\t// The severity of the patch such as Critical, Important, and Moderate.\n\t//\n\t// Severity is a required field\n\tSeverity *string `type:\"string\" required:\"true\"`\n\n\t// The state of the patch on the managed node, such as INSTALLED or FAILED.\n\t//\n\t// For descriptions of each patch state, see About patch compliance (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-compliance-about.html#sysman-compliance-monitor-patch)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\t//\n\t// State is a required field\n\tState *string `type:\"string\" required:\"true\" enum:\"PatchComplianceDataState\"`\n\n\t// The title of the patch.\n\t//\n\t// Title is a required field\n\tTitle *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchComplianceData) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchComplianceData) GoString() string {\n\treturn s.String()\n}\n\n// SetCVEIds sets the CVEIds field's value.\nfunc (s *PatchComplianceData) SetCVEIds(v string) *PatchComplianceData {\n\ts.CVEIds = &v\n\treturn s\n}\n\n// SetClassification sets the Classification field's value.\nfunc (s *PatchComplianceData) SetClassification(v string) *PatchComplianceData {\n\ts.Classification = &v\n\treturn s\n}\n\n// SetInstalledTime sets the InstalledTime field's value.\nfunc (s *PatchComplianceData) SetInstalledTime(v time.Time) *PatchComplianceData {\n\ts.InstalledTime = &v\n\treturn s\n}\n\n// SetKBId sets the KBId field's value.\nfunc (s *PatchComplianceData) SetKBId(v string) *PatchComplianceData {\n\ts.KBId = &v\n\treturn s\n}\n\n// SetSeverity sets the Severity field's value.\nfunc (s *PatchComplianceData) SetSeverity(v string) *PatchComplianceData {\n\ts.Severity = &v\n\treturn s\n}\n\n// SetState sets the State field's value.\nfunc (s *PatchComplianceData) SetState(v string) *PatchComplianceData {\n\ts.State = &v\n\treturn s\n}\n\n// SetTitle sets the Title field's value.\nfunc (s *PatchComplianceData) SetTitle(v string) *PatchComplianceData {\n\ts.Title = &v\n\treturn s\n}\n\n// Defines which patches should be included in a patch baseline.\n//\n// A patch filter consists of a key and a set of values. The filter key is a\n// patch property. For example, the available filter keys for WINDOWS are PATCH_SET,\n// PRODUCT, PRODUCT_FAMILY, CLASSIFICATION, and MSRC_SEVERITY.\n//\n// The filter values define a matching criterion for the patch property indicated\n// by the key. For example, if the filter key is PRODUCT and the filter values\n// are [\"Office 2013\", \"Office 2016\"], then the filter accepts all patches where\n// product name is either \"Office 2013\" or \"Office 2016\". The filter values\n// can be exact values for the patch property given as a key, or a wildcard\n// (*), which matches all values.\n//\n// You can view lists of valid values for the patch properties by running the\n// DescribePatchProperties command. For information about which patch properties\n// can be used with each major operating system, see DescribePatchProperties.\ntype PatchFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The key for the filter.\n\t//\n\t// Run the DescribePatchProperties command to view lists of valid keys for each\n\t// operating system type.\n\t//\n\t// Key is a required field\n\tKey *string `type:\"string\" required:\"true\" enum:\"PatchFilterKey\"`\n\n\t// The value for the filter key.\n\t//\n\t// Run the DescribePatchProperties command to view lists of valid values for\n\t// each key based on operating system type.\n\t//\n\t// Values is a required field\n\tValues []*string `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *PatchFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"PatchFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Values == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Values\"))\n\t}\n\tif s.Values != nil && len(s.Values) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Values\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *PatchFilter) SetKey(v string) *PatchFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *PatchFilter) SetValues(v []*string) *PatchFilter {\n\ts.Values = v\n\treturn s\n}\n\n// A set of patch filters, typically used for approval rules.\ntype PatchFilterGroup struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The set of patch filters that make up the group.\n\t//\n\t// PatchFilters is a required field\n\tPatchFilters []*PatchFilter `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchFilterGroup) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchFilterGroup) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *PatchFilterGroup) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"PatchFilterGroup\"}\n\tif s.PatchFilters == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PatchFilters\"))\n\t}\n\tif s.PatchFilters != nil {\n\t\tfor i, v := range s.PatchFilters {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"PatchFilters\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetPatchFilters sets the PatchFilters field's value.\nfunc (s *PatchFilterGroup) SetPatchFilters(v []*PatchFilter) *PatchFilterGroup {\n\ts.PatchFilters = v\n\treturn s\n}\n\n// The mapping between a patch group and the patch baseline the patch group\n// is registered with.\ntype PatchGroupPatchBaselineMapping struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The patch baseline the patch group is registered with.\n\tBaselineIdentity *PatchBaselineIdentity `type:\"structure\"`\n\n\t// The name of the patch group registered with the patch baseline.\n\tPatchGroup *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchGroupPatchBaselineMapping) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchGroupPatchBaselineMapping) GoString() string {\n\treturn s.String()\n}\n\n// SetBaselineIdentity sets the BaselineIdentity field's value.\nfunc (s *PatchGroupPatchBaselineMapping) SetBaselineIdentity(v *PatchBaselineIdentity) *PatchGroupPatchBaselineMapping {\n\ts.BaselineIdentity = v\n\treturn s\n}\n\n// SetPatchGroup sets the PatchGroup field's value.\nfunc (s *PatchGroupPatchBaselineMapping) SetPatchGroup(v string) *PatchGroupPatchBaselineMapping {\n\ts.PatchGroup = &v\n\treturn s\n}\n\n// Defines a filter used in Patch Manager APIs. Supported filter keys depend\n// on the API operation that includes the filter. Patch Manager API operations\n// that use PatchOrchestratorFilter include the following:\n//\n//   - DescribeAvailablePatches\n//\n//   - DescribeInstancePatches\n//\n//   - DescribePatchBaselines\n//\n//   - DescribePatchGroups\ntype PatchOrchestratorFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The key for the filter.\n\tKey *string `min:\"1\" type:\"string\"`\n\n\t// The value for the filter.\n\tValues []*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchOrchestratorFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchOrchestratorFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *PatchOrchestratorFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"PatchOrchestratorFilter\"}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *PatchOrchestratorFilter) SetKey(v string) *PatchOrchestratorFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *PatchOrchestratorFilter) SetValues(v []*string) *PatchOrchestratorFilter {\n\ts.Values = v\n\treturn s\n}\n\n// Defines an approval rule for a patch baseline.\ntype PatchRule struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The number of days after the release date of each patch matched by the rule\n\t// that the patch is marked as approved in the patch baseline. For example,\n\t// a value of 7 means that patches are approved seven days after they are released.\n\t// Not supported on Debian Server or Ubuntu Server.\n\tApproveAfterDays *int64 `type:\"integer\"`\n\n\t// The cutoff date for auto approval of released patches. Any patches released\n\t// on or before this date are installed automatically. Not supported on Debian\n\t// Server or Ubuntu Server.\n\t//\n\t// Enter dates in the format YYYY-MM-DD. For example, 2021-12-31.\n\tApproveUntilDate *string `min:\"1\" type:\"string\"`\n\n\t// A compliance severity level for all approved patches in a patch baseline.\n\tComplianceLevel *string `type:\"string\" enum:\"PatchComplianceLevel\"`\n\n\t// For managed nodes identified by the approval rule filters, enables a patch\n\t// baseline to apply non-security updates available in the specified repository.\n\t// The default value is false. Applies to Linux managed nodes only.\n\tEnableNonSecurity *bool `type:\"boolean\"`\n\n\t// The patch filter group that defines the criteria for the rule.\n\t//\n\t// PatchFilterGroup is a required field\n\tPatchFilterGroup *PatchFilterGroup `type:\"structure\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchRule) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchRule) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *PatchRule) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"PatchRule\"}\n\tif s.ApproveUntilDate != nil && len(*s.ApproveUntilDate) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ApproveUntilDate\", 1))\n\t}\n\tif s.PatchFilterGroup == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PatchFilterGroup\"))\n\t}\n\tif s.PatchFilterGroup != nil {\n\t\tif err := s.PatchFilterGroup.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"PatchFilterGroup\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetApproveAfterDays sets the ApproveAfterDays field's value.\nfunc (s *PatchRule) SetApproveAfterDays(v int64) *PatchRule {\n\ts.ApproveAfterDays = &v\n\treturn s\n}\n\n// SetApproveUntilDate sets the ApproveUntilDate field's value.\nfunc (s *PatchRule) SetApproveUntilDate(v string) *PatchRule {\n\ts.ApproveUntilDate = &v\n\treturn s\n}\n\n// SetComplianceLevel sets the ComplianceLevel field's value.\nfunc (s *PatchRule) SetComplianceLevel(v string) *PatchRule {\n\ts.ComplianceLevel = &v\n\treturn s\n}\n\n// SetEnableNonSecurity sets the EnableNonSecurity field's value.\nfunc (s *PatchRule) SetEnableNonSecurity(v bool) *PatchRule {\n\ts.EnableNonSecurity = &v\n\treturn s\n}\n\n// SetPatchFilterGroup sets the PatchFilterGroup field's value.\nfunc (s *PatchRule) SetPatchFilterGroup(v *PatchFilterGroup) *PatchRule {\n\ts.PatchFilterGroup = v\n\treturn s\n}\n\n// A set of rules defining the approval rules for a patch baseline.\ntype PatchRuleGroup struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The rules that make up the rule group.\n\t//\n\t// PatchRules is a required field\n\tPatchRules []*PatchRule `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchRuleGroup) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchRuleGroup) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *PatchRuleGroup) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"PatchRuleGroup\"}\n\tif s.PatchRules == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PatchRules\"))\n\t}\n\tif s.PatchRules != nil {\n\t\tfor i, v := range s.PatchRules {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"PatchRules\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetPatchRules sets the PatchRules field's value.\nfunc (s *PatchRuleGroup) SetPatchRules(v []*PatchRule) *PatchRuleGroup {\n\ts.PatchRules = v\n\treturn s\n}\n\n// Information about the patches to use to update the managed nodes, including\n// target operating systems and source repository. Applies to Linux managed\n// nodes only.\ntype PatchSource struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The value of the yum repo configuration. For example:\n\t//\n\t// [main]\n\t//\n\t// name=MyCustomRepository\n\t//\n\t// baseurl=https://my-custom-repository\n\t//\n\t// enabled=1\n\t//\n\t// For information about other options available for your yum repository configuration,\n\t// see dnf.conf(5) (https://man7.org/linux/man-pages/man5/dnf.conf.5.html).\n\t//\n\t// Configuration is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by PatchSource's\n\t// String and GoString methods.\n\t//\n\t// Configuration is a required field\n\tConfiguration *string `min:\"1\" type:\"string\" required:\"true\" sensitive:\"true\"`\n\n\t// The name specified to identify the patch source.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n\n\t// The specific operating system versions a patch repository applies to, such\n\t// as \"Ubuntu16.04\", \"AmazonLinux2016.09\", \"RedhatEnterpriseLinux7.2\" or \"Suse12.7\".\n\t// For lists of supported product values, see PatchFilter.\n\t//\n\t// Products is a required field\n\tProducts []*string `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchSource) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchSource) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *PatchSource) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"PatchSource\"}\n\tif s.Configuration == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Configuration\"))\n\t}\n\tif s.Configuration != nil && len(*s.Configuration) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Configuration\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Products == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Products\"))\n\t}\n\tif s.Products != nil && len(s.Products) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Products\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetConfiguration sets the Configuration field's value.\nfunc (s *PatchSource) SetConfiguration(v string) *PatchSource {\n\ts.Configuration = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *PatchSource) SetName(v string) *PatchSource {\n\ts.Name = &v\n\treturn s\n}\n\n// SetProducts sets the Products field's value.\nfunc (s *PatchSource) SetProducts(v []*string) *PatchSource {\n\ts.Products = v\n\treturn s\n}\n\n// Information about the approval status of a patch.\ntype PatchStatus struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The date the patch was approved (or will be approved if the status is PENDING_APPROVAL).\n\tApprovalDate *time.Time `type:\"timestamp\"`\n\n\t// The compliance severity level for a patch.\n\tComplianceLevel *string `type:\"string\" enum:\"PatchComplianceLevel\"`\n\n\t// The approval status of a patch.\n\tDeploymentStatus *string `type:\"string\" enum:\"PatchDeploymentStatus\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchStatus) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PatchStatus) GoString() string {\n\treturn s.String()\n}\n\n// SetApprovalDate sets the ApprovalDate field's value.\nfunc (s *PatchStatus) SetApprovalDate(v time.Time) *PatchStatus {\n\ts.ApprovalDate = &v\n\treturn s\n}\n\n// SetComplianceLevel sets the ComplianceLevel field's value.\nfunc (s *PatchStatus) SetComplianceLevel(v string) *PatchStatus {\n\ts.ComplianceLevel = &v\n\treturn s\n}\n\n// SetDeploymentStatus sets the DeploymentStatus field's value.\nfunc (s *PatchStatus) SetDeploymentStatus(v string) *PatchStatus {\n\ts.DeploymentStatus = &v\n\treturn s\n}\n\n// You specified more than the maximum number of allowed policies for the parameter.\n// The maximum is 10.\ntype PoliciesLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PoliciesLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PoliciesLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorPoliciesLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &PoliciesLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *PoliciesLimitExceededException) Code() string {\n\treturn \"PoliciesLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *PoliciesLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *PoliciesLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *PoliciesLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *PoliciesLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *PoliciesLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// An aggregate of step execution statuses displayed in the Amazon Web Services\n// Systems Manager console for a multi-Region and multi-account Automation execution.\ntype ProgressCounters struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The total number of steps that the system cancelled in all specified Amazon\n\t// Web Services Regions and Amazon Web Services accounts for the current Automation\n\t// execution.\n\tCancelledSteps *int64 `type:\"integer\"`\n\n\t// The total number of steps that failed to run in all specified Amazon Web\n\t// Services Regions and Amazon Web Services accounts for the current Automation\n\t// execution.\n\tFailedSteps *int64 `type:\"integer\"`\n\n\t// The total number of steps that successfully completed in all specified Amazon\n\t// Web Services Regions and Amazon Web Services accounts for the current Automation\n\t// execution.\n\tSuccessSteps *int64 `type:\"integer\"`\n\n\t// The total number of steps that timed out in all specified Amazon Web Services\n\t// Regions and Amazon Web Services accounts for the current Automation execution.\n\tTimedOutSteps *int64 `type:\"integer\"`\n\n\t// The total number of steps run in all specified Amazon Web Services Regions\n\t// and Amazon Web Services accounts for the current Automation execution.\n\tTotalSteps *int64 `type:\"integer\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ProgressCounters) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ProgressCounters) GoString() string {\n\treturn s.String()\n}\n\n// SetCancelledSteps sets the CancelledSteps field's value.\nfunc (s *ProgressCounters) SetCancelledSteps(v int64) *ProgressCounters {\n\ts.CancelledSteps = &v\n\treturn s\n}\n\n// SetFailedSteps sets the FailedSteps field's value.\nfunc (s *ProgressCounters) SetFailedSteps(v int64) *ProgressCounters {\n\ts.FailedSteps = &v\n\treturn s\n}\n\n// SetSuccessSteps sets the SuccessSteps field's value.\nfunc (s *ProgressCounters) SetSuccessSteps(v int64) *ProgressCounters {\n\ts.SuccessSteps = &v\n\treturn s\n}\n\n// SetTimedOutSteps sets the TimedOutSteps field's value.\nfunc (s *ProgressCounters) SetTimedOutSteps(v int64) *ProgressCounters {\n\ts.TimedOutSteps = &v\n\treturn s\n}\n\n// SetTotalSteps sets the TotalSteps field's value.\nfunc (s *ProgressCounters) SetTotalSteps(v int64) *ProgressCounters {\n\ts.TotalSteps = &v\n\treturn s\n}\n\ntype PutComplianceItemsInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Specify the compliance type. For example, specify Association (for a State\n\t// Manager association), Patch, or Custom:string.\n\t//\n\t// ComplianceType is a required field\n\tComplianceType *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// A summary of the call execution that includes an execution ID, the type of\n\t// execution (for example, Command), and the date/time of the execution using\n\t// a datetime object that is saved in the following format: yyyy-MM-dd'T'HH:mm:ss'Z'.\n\t//\n\t// ExecutionSummary is a required field\n\tExecutionSummary *ComplianceExecutionSummary `type:\"structure\" required:\"true\"`\n\n\t// MD5 or SHA-256 content hash. The content hash is used to determine if existing\n\t// information should be overwritten or ignored. If the content hashes match,\n\t// the request to put compliance information is ignored.\n\tItemContentHash *string `type:\"string\"`\n\n\t// Information about the compliance as defined by the resource type. For example,\n\t// for a patch compliance type, Items includes information about the PatchSeverity,\n\t// Classification, and so on.\n\t//\n\t// Items is a required field\n\tItems []*ComplianceItemEntry `type:\"list\" required:\"true\"`\n\n\t// Specify an ID for this resource. For a managed node, this is the node ID.\n\t//\n\t// ResourceId is a required field\n\tResourceId *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// Specify the type of resource. ManagedInstance is currently the only supported\n\t// resource type.\n\t//\n\t// ResourceType is a required field\n\tResourceType *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The mode for uploading compliance items. You can specify COMPLETE or PARTIAL.\n\t// In COMPLETE mode, the system overwrites all existing compliance information\n\t// for the resource. You must provide a full list of compliance items each time\n\t// you send the request.\n\t//\n\t// In PARTIAL mode, the system overwrites compliance information for a specific\n\t// association. The association must be configured with SyncCompliance set to\n\t// MANUAL. By default, all requests use COMPLETE mode.\n\t//\n\t// This attribute is only valid for association compliance.\n\tUploadType *string `type:\"string\" enum:\"ComplianceUploadType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutComplianceItemsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutComplianceItemsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *PutComplianceItemsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"PutComplianceItemsInput\"}\n\tif s.ComplianceType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ComplianceType\"))\n\t}\n\tif s.ComplianceType != nil && len(*s.ComplianceType) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ComplianceType\", 1))\n\t}\n\tif s.ExecutionSummary == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ExecutionSummary\"))\n\t}\n\tif s.Items == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Items\"))\n\t}\n\tif s.ResourceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceId\"))\n\t}\n\tif s.ResourceId != nil && len(*s.ResourceId) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ResourceId\", 1))\n\t}\n\tif s.ResourceType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceType\"))\n\t}\n\tif s.ResourceType != nil && len(*s.ResourceType) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ResourceType\", 1))\n\t}\n\tif s.ExecutionSummary != nil {\n\t\tif err := s.ExecutionSummary.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ExecutionSummary\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Items != nil {\n\t\tfor i, v := range s.Items {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Items\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetComplianceType sets the ComplianceType field's value.\nfunc (s *PutComplianceItemsInput) SetComplianceType(v string) *PutComplianceItemsInput {\n\ts.ComplianceType = &v\n\treturn s\n}\n\n// SetExecutionSummary sets the ExecutionSummary field's value.\nfunc (s *PutComplianceItemsInput) SetExecutionSummary(v *ComplianceExecutionSummary) *PutComplianceItemsInput {\n\ts.ExecutionSummary = v\n\treturn s\n}\n\n// SetItemContentHash sets the ItemContentHash field's value.\nfunc (s *PutComplianceItemsInput) SetItemContentHash(v string) *PutComplianceItemsInput {\n\ts.ItemContentHash = &v\n\treturn s\n}\n\n// SetItems sets the Items field's value.\nfunc (s *PutComplianceItemsInput) SetItems(v []*ComplianceItemEntry) *PutComplianceItemsInput {\n\ts.Items = v\n\treturn s\n}\n\n// SetResourceId sets the ResourceId field's value.\nfunc (s *PutComplianceItemsInput) SetResourceId(v string) *PutComplianceItemsInput {\n\ts.ResourceId = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *PutComplianceItemsInput) SetResourceType(v string) *PutComplianceItemsInput {\n\ts.ResourceType = &v\n\treturn s\n}\n\n// SetUploadType sets the UploadType field's value.\nfunc (s *PutComplianceItemsInput) SetUploadType(v string) *PutComplianceItemsInput {\n\ts.UploadType = &v\n\treturn s\n}\n\ntype PutComplianceItemsOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutComplianceItemsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutComplianceItemsOutput) GoString() string {\n\treturn s.String()\n}\n\ntype PutInventoryInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// An managed node ID where you want to add or update inventory items.\n\t//\n\t// InstanceId is a required field\n\tInstanceId *string `type:\"string\" required:\"true\"`\n\n\t// The inventory items that you want to add or update on managed nodes.\n\t//\n\t// Items is a required field\n\tItems []*InventoryItem `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutInventoryInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutInventoryInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *PutInventoryInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"PutInventoryInput\"}\n\tif s.InstanceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"InstanceId\"))\n\t}\n\tif s.Items == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Items\"))\n\t}\n\tif s.Items != nil && len(s.Items) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Items\", 1))\n\t}\n\tif s.Items != nil {\n\t\tfor i, v := range s.Items {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Items\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *PutInventoryInput) SetInstanceId(v string) *PutInventoryInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetItems sets the Items field's value.\nfunc (s *PutInventoryInput) SetItems(v []*InventoryItem) *PutInventoryInput {\n\ts.Items = v\n\treturn s\n}\n\ntype PutInventoryOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Information about the request.\n\tMessage *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutInventoryOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutInventoryOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetMessage sets the Message field's value.\nfunc (s *PutInventoryOutput) SetMessage(v string) *PutInventoryOutput {\n\ts.Message = &v\n\treturn s\n}\n\ntype PutParameterInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A regular expression used to validate the parameter value. For example, for\n\t// String types with values restricted to numbers, you can specify the following:\n\t// AllowedPattern=^\\d+$\n\tAllowedPattern *string `type:\"string\"`\n\n\t// The data type for a String parameter. Supported data types include plain\n\t// text and Amazon Machine Image (AMI) IDs.\n\t//\n\t// The following data type values are supported.\n\t//\n\t//    * text\n\t//\n\t//    * aws:ec2:image\n\t//\n\t//    * aws:ssm:integration\n\t//\n\t// When you create a String parameter and specify aws:ec2:image, Amazon Web\n\t// Services Systems Manager validates the parameter value is in the required\n\t// format, such as ami-12345abcdeEXAMPLE, and that the specified AMI is available\n\t// in your Amazon Web Services account.\n\t//\n\t// If the action is successful, the service sends back an HTTP 200 response\n\t// which indicates a successful PutParameter call for all cases except for data\n\t// type aws:ec2:image. If you call PutParameter with aws:ec2:image data type,\n\t// a successful HTTP 200 response does not guarantee that your parameter was\n\t// successfully created or updated. The aws:ec2:image value is validated asynchronously,\n\t// and the PutParameter call returns before the validation is complete. If you\n\t// submit an invalid AMI value, the PutParameter operation will return success,\n\t// but the asynchronous validation will fail and the parameter will not be created\n\t// or updated. To monitor whether your aws:ec2:image parameters are created\n\t// successfully, see Setting up notifications or trigger actions based on Parameter\n\t// Store events (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-cwe.html).\n\t// For more information about AMI format validation , see Native parameter support\n\t// for Amazon Machine Image (AMI) IDs (https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-ec2-aliases.html).\n\tDataType *string `type:\"string\"`\n\n\t// Information about the parameter that you want to add to the system. Optional\n\t// but recommended.\n\t//\n\t// Don't enter personally identifiable information in this field.\n\tDescription *string `type:\"string\"`\n\n\t// The Key Management Service (KMS) ID that you want to use to encrypt a parameter.\n\t// Use a custom key for better security. Required for parameters that use the\n\t// SecureString data type.\n\t//\n\t// If you don't specify a key ID, the system uses the default key associated\n\t// with your Amazon Web Services account which is not as secure as using a custom\n\t// key.\n\t//\n\t//    * To use a custom KMS key, choose the SecureString data type with the\n\t//    Key ID parameter.\n\tKeyId *string `min:\"1\" type:\"string\"`\n\n\t// The fully qualified name of the parameter that you want to add to the system.\n\t// The fully qualified name includes the complete hierarchy of the parameter\n\t// path and name. For parameters in a hierarchy, you must include a leading\n\t// forward slash character (/) when you create or reference a parameter. For\n\t// example: /Dev/DBServer/MySQL/db-string13\n\t//\n\t// Naming Constraints:\n\t//\n\t//    * Parameter names are case sensitive.\n\t//\n\t//    * A parameter name must be unique within an Amazon Web Services Region\n\t//\n\t//    * A parameter name can't be prefixed with \"aws\" or \"ssm\" (case-insensitive).\n\t//\n\t//    * Parameter names can include only the following symbols and letters:\n\t//    a-zA-Z0-9_.- In addition, the slash character ( / ) is used to delineate\n\t//    hierarchies in parameter names. For example: /Dev/Production/East/Project-ABC/MyParameter\n\t//\n\t//    * A parameter name can't include spaces.\n\t//\n\t//    * Parameter hierarchies are limited to a maximum depth of fifteen levels.\n\t//\n\t// For additional information about valid values for parameter names, see Creating\n\t// Systems Manager parameters (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-su-create.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\t//\n\t// The maximum length constraint of 2048 characters listed below includes 1037\n\t// characters reserved for internal use by Systems Manager. The maximum length\n\t// for a parameter name that you create is 1011 characters. This includes the\n\t// characters in the ARN that precede the name you specify, such as arn:aws:ssm:us-east-2:111122223333:parameter/.\n\t//\n\t// Name is a required field\n\tName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// Overwrite an existing parameter. The default value is false.\n\tOverwrite *bool `type:\"boolean\"`\n\n\t// One or more policies to apply to a parameter. This operation takes a JSON\n\t// array. Parameter Store, a capability of Amazon Web Services Systems Manager\n\t// supports the following policy types:\n\t//\n\t// Expiration: This policy deletes the parameter after it expires. When you\n\t// create the policy, you specify the expiration date. You can update the expiration\n\t// date and time by updating the policy. Updating the parameter doesn't affect\n\t// the expiration date and time. When the expiration time is reached, Parameter\n\t// Store deletes the parameter.\n\t//\n\t// ExpirationNotification: This policy initiates an event in Amazon CloudWatch\n\t// Events that notifies you about the expiration. By using this policy, you\n\t// can receive notification before or after the expiration time is reached,\n\t// in units of days or hours.\n\t//\n\t// NoChangeNotification: This policy initiates a CloudWatch Events event if\n\t// a parameter hasn't been modified for a specified period of time. This policy\n\t// type is useful when, for example, a secret needs to be changed within a period\n\t// of time, but it hasn't been changed.\n\t//\n\t// All existing policies are preserved until you send new policies or an empty\n\t// policy. For more information about parameter policies, see Assigning parameter\n\t// policies (https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-policies.html).\n\tPolicies *string `min:\"1\" type:\"string\"`\n\n\t// Optional metadata that you assign to a resource. Tags enable you to categorize\n\t// a resource in different ways, such as by purpose, owner, or environment.\n\t// For example, you might want to tag a Systems Manager parameter to identify\n\t// the type of resource to which it applies, the environment, or the type of\n\t// configuration data referenced by the parameter. In this case, you could specify\n\t// the following key-value pairs:\n\t//\n\t//    * Key=Resource,Value=S3bucket\n\t//\n\t//    * Key=OS,Value=Windows\n\t//\n\t//    * Key=ParameterType,Value=LicenseKey\n\t//\n\t// To add tags to an existing Systems Manager parameter, use the AddTagsToResource\n\t// operation.\n\tTags []*Tag `type:\"list\"`\n\n\t// The parameter tier to assign to a parameter.\n\t//\n\t// Parameter Store offers a standard tier and an advanced tier for parameters.\n\t// Standard parameters have a content size limit of 4 KB and can't be configured\n\t// to use parameter policies. You can create a maximum of 10,000 standard parameters\n\t// for each Region in an Amazon Web Services account. Standard parameters are\n\t// offered at no additional cost.\n\t//\n\t// Advanced parameters have a content size limit of 8 KB and can be configured\n\t// to use parameter policies. You can create a maximum of 100,000 advanced parameters\n\t// for each Region in an Amazon Web Services account. Advanced parameters incur\n\t// a charge. For more information, see Standard and advanced parameter tiers\n\t// (https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-advanced-parameters.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\t//\n\t// You can change a standard parameter to an advanced parameter any time. But\n\t// you can't revert an advanced parameter to a standard parameter. Reverting\n\t// an advanced parameter to a standard parameter would result in data loss because\n\t// the system would truncate the size of the parameter from 8 KB to 4 KB. Reverting\n\t// would also remove any policies attached to the parameter. Lastly, advanced\n\t// parameters use a different form of encryption than standard parameters.\n\t//\n\t// If you no longer need an advanced parameter, or if you no longer want to\n\t// incur charges for an advanced parameter, you must delete it and recreate\n\t// it as a new standard parameter.\n\t//\n\t// Using the Default Tier Configuration\n\t//\n\t// In PutParameter requests, you can specify the tier to create the parameter\n\t// in. Whenever you specify a tier in the request, Parameter Store creates or\n\t// updates the parameter according to that request. However, if you don't specify\n\t// a tier in a request, Parameter Store assigns the tier based on the current\n\t// Parameter Store default tier configuration.\n\t//\n\t// The default tier when you begin using Parameter Store is the standard-parameter\n\t// tier. If you use the advanced-parameter tier, you can specify one of the\n\t// following as the default:\n\t//\n\t//    * Advanced: With this option, Parameter Store evaluates all requests as\n\t//    advanced parameters.\n\t//\n\t//    * Intelligent-Tiering: With this option, Parameter Store evaluates each\n\t//    request to determine if the parameter is standard or advanced. If the\n\t//    request doesn't include any options that require an advanced parameter,\n\t//    the parameter is created in the standard-parameter tier. If one or more\n\t//    options requiring an advanced parameter are included in the request, Parameter\n\t//    Store create a parameter in the advanced-parameter tier. This approach\n\t//    helps control your parameter-related costs by always creating standard\n\t//    parameters unless an advanced parameter is necessary.\n\t//\n\t// Options that require an advanced parameter include the following:\n\t//\n\t//    * The content size of the parameter is more than 4 KB.\n\t//\n\t//    * The parameter uses a parameter policy.\n\t//\n\t//    * More than 10,000 parameters already exist in your Amazon Web Services\n\t//    account in the current Amazon Web Services Region.\n\t//\n\t// For more information about configuring the default tier option, see Specifying\n\t// a default parameter tier (https://docs.aws.amazon.com/systems-manager/latest/userguide/ps-default-tier.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tTier *string `type:\"string\" enum:\"ParameterTier\"`\n\n\t// The type of parameter that you want to add to the system.\n\t//\n\t// SecureString isn't currently supported for CloudFormation templates.\n\t//\n\t// Items in a StringList must be separated by a comma (,). You can't use other\n\t// punctuation or special character to escape items in the list. If you have\n\t// a parameter value that requires a comma, then use the String data type.\n\t//\n\t// Specifying a parameter type isn't required when updating a parameter. You\n\t// must specify a parameter type when creating a parameter.\n\tType *string `type:\"string\" enum:\"ParameterType\"`\n\n\t// The parameter value that you want to add to the system. Standard parameters\n\t// have a value limit of 4 KB. Advanced parameters have a value limit of 8 KB.\n\t//\n\t// Parameters can't be referenced or nested in the values of other parameters.\n\t// You can't include {{}} or {{ssm:parameter-name}} in a parameter value.\n\t//\n\t// Value is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by PutParameterInput's\n\t// String and GoString methods.\n\t//\n\t// Value is a required field\n\tValue *string `type:\"string\" required:\"true\" sensitive:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutParameterInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutParameterInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *PutParameterInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"PutParameterInput\"}\n\tif s.KeyId != nil && len(*s.KeyId) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"KeyId\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Name != nil && len(*s.Name) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 1))\n\t}\n\tif s.Policies != nil && len(*s.Policies) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Policies\", 1))\n\t}\n\tif s.Value == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Value\"))\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAllowedPattern sets the AllowedPattern field's value.\nfunc (s *PutParameterInput) SetAllowedPattern(v string) *PutParameterInput {\n\ts.AllowedPattern = &v\n\treturn s\n}\n\n// SetDataType sets the DataType field's value.\nfunc (s *PutParameterInput) SetDataType(v string) *PutParameterInput {\n\ts.DataType = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *PutParameterInput) SetDescription(v string) *PutParameterInput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetKeyId sets the KeyId field's value.\nfunc (s *PutParameterInput) SetKeyId(v string) *PutParameterInput {\n\ts.KeyId = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *PutParameterInput) SetName(v string) *PutParameterInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOverwrite sets the Overwrite field's value.\nfunc (s *PutParameterInput) SetOverwrite(v bool) *PutParameterInput {\n\ts.Overwrite = &v\n\treturn s\n}\n\n// SetPolicies sets the Policies field's value.\nfunc (s *PutParameterInput) SetPolicies(v string) *PutParameterInput {\n\ts.Policies = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *PutParameterInput) SetTags(v []*Tag) *PutParameterInput {\n\ts.Tags = v\n\treturn s\n}\n\n// SetTier sets the Tier field's value.\nfunc (s *PutParameterInput) SetTier(v string) *PutParameterInput {\n\ts.Tier = &v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *PutParameterInput) SetType(v string) *PutParameterInput {\n\ts.Type = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *PutParameterInput) SetValue(v string) *PutParameterInput {\n\ts.Value = &v\n\treturn s\n}\n\ntype PutParameterOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The tier assigned to the parameter.\n\tTier *string `type:\"string\" enum:\"ParameterTier\"`\n\n\t// The new version number of a parameter. If you edit a parameter value, Parameter\n\t// Store automatically creates a new version and assigns this new version a\n\t// unique ID. You can reference a parameter version ID in API operations or\n\t// in Systems Manager documents (SSM documents). By default, if you don't specify\n\t// a specific version, the system returns the latest parameter value when a\n\t// parameter is called.\n\tVersion *int64 `type:\"long\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutParameterOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutParameterOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetTier sets the Tier field's value.\nfunc (s *PutParameterOutput) SetTier(v string) *PutParameterOutput {\n\ts.Tier = &v\n\treturn s\n}\n\n// SetVersion sets the Version field's value.\nfunc (s *PutParameterOutput) SetVersion(v int64) *PutParameterOutput {\n\ts.Version = &v\n\treturn s\n}\n\ntype PutResourcePolicyInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A policy you want to associate with a resource.\n\t//\n\t// Policy is a required field\n\tPolicy *string `type:\"string\" required:\"true\"`\n\n\t// ID of the current policy version. The hash helps to prevent a situation where\n\t// multiple users attempt to overwrite a policy. You must provide this hash\n\t// when updating or deleting a policy.\n\tPolicyHash *string `type:\"string\"`\n\n\t// The policy ID.\n\tPolicyId *string `type:\"string\"`\n\n\t// Amazon Resource Name (ARN) of the resource to which you want to attach a\n\t// policy.\n\t//\n\t// ResourceArn is a required field\n\tResourceArn *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutResourcePolicyInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutResourcePolicyInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *PutResourcePolicyInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"PutResourcePolicyInput\"}\n\tif s.Policy == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Policy\"))\n\t}\n\tif s.ResourceArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceArn\"))\n\t}\n\tif s.ResourceArn != nil && len(*s.ResourceArn) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ResourceArn\", 20))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetPolicy sets the Policy field's value.\nfunc (s *PutResourcePolicyInput) SetPolicy(v string) *PutResourcePolicyInput {\n\ts.Policy = &v\n\treturn s\n}\n\n// SetPolicyHash sets the PolicyHash field's value.\nfunc (s *PutResourcePolicyInput) SetPolicyHash(v string) *PutResourcePolicyInput {\n\ts.PolicyHash = &v\n\treturn s\n}\n\n// SetPolicyId sets the PolicyId field's value.\nfunc (s *PutResourcePolicyInput) SetPolicyId(v string) *PutResourcePolicyInput {\n\ts.PolicyId = &v\n\treturn s\n}\n\n// SetResourceArn sets the ResourceArn field's value.\nfunc (s *PutResourcePolicyInput) SetResourceArn(v string) *PutResourcePolicyInput {\n\ts.ResourceArn = &v\n\treturn s\n}\n\ntype PutResourcePolicyOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// ID of the current policy version.\n\tPolicyHash *string `type:\"string\"`\n\n\t// The policy ID. To update a policy, you must specify PolicyId and PolicyHash.\n\tPolicyId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutResourcePolicyOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PutResourcePolicyOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetPolicyHash sets the PolicyHash field's value.\nfunc (s *PutResourcePolicyOutput) SetPolicyHash(v string) *PutResourcePolicyOutput {\n\ts.PolicyHash = &v\n\treturn s\n}\n\n// SetPolicyId sets the PolicyId field's value.\nfunc (s *PutResourcePolicyOutput) SetPolicyId(v string) *PutResourcePolicyOutput {\n\ts.PolicyId = &v\n\treturn s\n}\n\ntype RegisterDefaultPatchBaselineInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the patch baseline that should be the default patch baseline.\n\t//\n\t// BaselineId is a required field\n\tBaselineId *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterDefaultPatchBaselineInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterDefaultPatchBaselineInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *RegisterDefaultPatchBaselineInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"RegisterDefaultPatchBaselineInput\"}\n\tif s.BaselineId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"BaselineId\"))\n\t}\n\tif s.BaselineId != nil && len(*s.BaselineId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"BaselineId\", 20))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *RegisterDefaultPatchBaselineInput) SetBaselineId(v string) *RegisterDefaultPatchBaselineInput {\n\ts.BaselineId = &v\n\treturn s\n}\n\ntype RegisterDefaultPatchBaselineOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the default patch baseline.\n\tBaselineId *string `min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterDefaultPatchBaselineOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterDefaultPatchBaselineOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *RegisterDefaultPatchBaselineOutput) SetBaselineId(v string) *RegisterDefaultPatchBaselineOutput {\n\ts.BaselineId = &v\n\treturn s\n}\n\ntype RegisterPatchBaselineForPatchGroupInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the patch baseline to register with the patch group.\n\t//\n\t// BaselineId is a required field\n\tBaselineId *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// The name of the patch group to be registered with the patch baseline.\n\t//\n\t// PatchGroup is a required field\n\tPatchGroup *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterPatchBaselineForPatchGroupInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterPatchBaselineForPatchGroupInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *RegisterPatchBaselineForPatchGroupInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"RegisterPatchBaselineForPatchGroupInput\"}\n\tif s.BaselineId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"BaselineId\"))\n\t}\n\tif s.BaselineId != nil && len(*s.BaselineId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"BaselineId\", 20))\n\t}\n\tif s.PatchGroup == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PatchGroup\"))\n\t}\n\tif s.PatchGroup != nil && len(*s.PatchGroup) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"PatchGroup\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *RegisterPatchBaselineForPatchGroupInput) SetBaselineId(v string) *RegisterPatchBaselineForPatchGroupInput {\n\ts.BaselineId = &v\n\treturn s\n}\n\n// SetPatchGroup sets the PatchGroup field's value.\nfunc (s *RegisterPatchBaselineForPatchGroupInput) SetPatchGroup(v string) *RegisterPatchBaselineForPatchGroupInput {\n\ts.PatchGroup = &v\n\treturn s\n}\n\ntype RegisterPatchBaselineForPatchGroupOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the patch baseline the patch group was registered with.\n\tBaselineId *string `min:\"20\" type:\"string\"`\n\n\t// The name of the patch group registered with the patch baseline.\n\tPatchGroup *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterPatchBaselineForPatchGroupOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterPatchBaselineForPatchGroupOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *RegisterPatchBaselineForPatchGroupOutput) SetBaselineId(v string) *RegisterPatchBaselineForPatchGroupOutput {\n\ts.BaselineId = &v\n\treturn s\n}\n\n// SetPatchGroup sets the PatchGroup field's value.\nfunc (s *RegisterPatchBaselineForPatchGroupOutput) SetPatchGroup(v string) *RegisterPatchBaselineForPatchGroupOutput {\n\ts.PatchGroup = &v\n\treturn s\n}\n\ntype RegisterTargetWithMaintenanceWindowInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// User-provided idempotency token.\n\tClientToken *string `min:\"1\" type:\"string\" idempotencyToken:\"true\"`\n\n\t// An optional description for the target.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by RegisterTargetWithMaintenanceWindowInput's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// An optional name for the target.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// User-provided value that will be included in any Amazon CloudWatch Events\n\t// events raised while running tasks for these targets in this maintenance window.\n\t//\n\t// OwnerInformation is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by RegisterTargetWithMaintenanceWindowInput's\n\t// String and GoString methods.\n\tOwnerInformation *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The type of target being registered with the maintenance window.\n\t//\n\t// ResourceType is a required field\n\tResourceType *string `type:\"string\" required:\"true\" enum:\"MaintenanceWindowResourceType\"`\n\n\t// The targets to register with the maintenance window. In other words, the\n\t// managed nodes to run commands on when the maintenance window runs.\n\t//\n\t// If a single maintenance window task is registered with multiple targets,\n\t// its task invocations occur sequentially and not in parallel. If your task\n\t// must run on multiple targets at the same time, register a task for each target\n\t// individually and assign each task the same priority level.\n\t//\n\t// You can specify targets using managed node IDs, resource group names, or\n\t// tags that have been applied to managed nodes.\n\t//\n\t// Example 1: Specify managed node IDs\n\t//\n\t// Key=InstanceIds,Values=<instance-id-1>,<instance-id-2>,<instance-id-3>\n\t//\n\t// Example 2: Use tag key-pairs applied to managed nodes\n\t//\n\t// Key=tag:<my-tag-key>,Values=<my-tag-value-1>,<my-tag-value-2>\n\t//\n\t// Example 3: Use tag-keys applied to managed nodes\n\t//\n\t// Key=tag-key,Values=<my-tag-key-1>,<my-tag-key-2>\n\t//\n\t// Example 4: Use resource group names\n\t//\n\t// Key=resource-groups:Name,Values=<resource-group-name>\n\t//\n\t// Example 5: Use filters for resource group types\n\t//\n\t// Key=resource-groups:ResourceTypeFilters,Values=<resource-type-1>,<resource-type-2>\n\t//\n\t// For Key=resource-groups:ResourceTypeFilters, specify resource types in the\n\t// following format\n\t//\n\t// Key=resource-groups:ResourceTypeFilters,Values=AWS::EC2::INSTANCE,AWS::EC2::VPC\n\t//\n\t// For more information about these examples formats, including the best use\n\t// case for each one, see Examples: Register targets with a maintenance window\n\t// (https://docs.aws.amazon.com/systems-manager/latest/userguide/mw-cli-tutorial-targets-examples.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\t//\n\t// Targets is a required field\n\tTargets []*Target `type:\"list\" required:\"true\"`\n\n\t// The ID of the maintenance window the target should be registered with.\n\t//\n\t// WindowId is a required field\n\tWindowId *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterTargetWithMaintenanceWindowInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterTargetWithMaintenanceWindowInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *RegisterTargetWithMaintenanceWindowInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"RegisterTargetWithMaintenanceWindowInput\"}\n\tif s.ClientToken != nil && len(*s.ClientToken) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ClientToken\", 1))\n\t}\n\tif s.Description != nil && len(*s.Description) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Description\", 1))\n\t}\n\tif s.Name != nil && len(*s.Name) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 3))\n\t}\n\tif s.OwnerInformation != nil && len(*s.OwnerInformation) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OwnerInformation\", 1))\n\t}\n\tif s.ResourceType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceType\"))\n\t}\n\tif s.Targets == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Targets\"))\n\t}\n\tif s.WindowId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowId\"))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\tif s.Targets != nil {\n\t\tfor i, v := range s.Targets {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Targets\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetClientToken sets the ClientToken field's value.\nfunc (s *RegisterTargetWithMaintenanceWindowInput) SetClientToken(v string) *RegisterTargetWithMaintenanceWindowInput {\n\ts.ClientToken = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *RegisterTargetWithMaintenanceWindowInput) SetDescription(v string) *RegisterTargetWithMaintenanceWindowInput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *RegisterTargetWithMaintenanceWindowInput) SetName(v string) *RegisterTargetWithMaintenanceWindowInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOwnerInformation sets the OwnerInformation field's value.\nfunc (s *RegisterTargetWithMaintenanceWindowInput) SetOwnerInformation(v string) *RegisterTargetWithMaintenanceWindowInput {\n\ts.OwnerInformation = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *RegisterTargetWithMaintenanceWindowInput) SetResourceType(v string) *RegisterTargetWithMaintenanceWindowInput {\n\ts.ResourceType = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *RegisterTargetWithMaintenanceWindowInput) SetTargets(v []*Target) *RegisterTargetWithMaintenanceWindowInput {\n\ts.Targets = v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *RegisterTargetWithMaintenanceWindowInput) SetWindowId(v string) *RegisterTargetWithMaintenanceWindowInput {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype RegisterTargetWithMaintenanceWindowOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the target definition in this maintenance window.\n\tWindowTargetId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterTargetWithMaintenanceWindowOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterTargetWithMaintenanceWindowOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetWindowTargetId sets the WindowTargetId field's value.\nfunc (s *RegisterTargetWithMaintenanceWindowOutput) SetWindowTargetId(v string) *RegisterTargetWithMaintenanceWindowOutput {\n\ts.WindowTargetId = &v\n\treturn s\n}\n\ntype RegisterTaskWithMaintenanceWindowInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The CloudWatch alarm you want to apply to your maintenance window task.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// User-provided idempotency token.\n\tClientToken *string `min:\"1\" type:\"string\" idempotencyToken:\"true\"`\n\n\t// Indicates whether tasks should continue to run after the cutoff time specified\n\t// in the maintenance windows is reached.\n\t//\n\t//    * CONTINUE_TASK: When the cutoff time is reached, any tasks that are running\n\t//    continue. The default value.\n\t//\n\t//    * CANCEL_TASK: For Automation, Lambda, Step Functions tasks: When the\n\t//    cutoff time is reached, any task invocations that are already running\n\t//    continue, but no new task invocations are started. For Run Command tasks:\n\t//    When the cutoff time is reached, the system sends a CancelCommand operation\n\t//    that attempts to cancel the command associated with the task. However,\n\t//    there is no guarantee that the command will be terminated and the underlying\n\t//    process stopped. The status for tasks that are not completed is TIMED_OUT.\n\tCutoffBehavior *string `type:\"string\" enum:\"MaintenanceWindowTaskCutoffBehavior\"`\n\n\t// An optional description for the task.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by RegisterTaskWithMaintenanceWindowInput's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// A structure containing information about an Amazon Simple Storage Service\n\t// (Amazon S3) bucket to write managed node-level logs to.\n\t//\n\t// LoggingInfo has been deprecated. To specify an Amazon Simple Storage Service\n\t// (Amazon S3) bucket to contain logs, instead use the OutputS3BucketName and\n\t// OutputS3KeyPrefix options in the TaskInvocationParameters structure. For\n\t// information about how Amazon Web Services Systems Manager handles these options\n\t// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n\tLoggingInfo *LoggingInfo `type:\"structure\"`\n\n\t// The maximum number of targets this task can be run for, in parallel.\n\t//\n\t// Although this element is listed as \"Required: No\", a value can be omitted\n\t// only when you are registering or updating a targetless task (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html)\n\t// You must provide a value in all other cases.\n\t//\n\t// For maintenance window tasks without a target specified, you can't supply\n\t// a value for this option. Instead, the system inserts a placeholder value\n\t// of 1. This value doesn't affect the running of your task.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The maximum number of errors allowed before this task stops being scheduled.\n\t//\n\t// Although this element is listed as \"Required: No\", a value can be omitted\n\t// only when you are registering or updating a targetless task (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html)\n\t// You must provide a value in all other cases.\n\t//\n\t// For maintenance window tasks without a target specified, you can't supply\n\t// a value for this option. Instead, the system inserts a placeholder value\n\t// of 1. This value doesn't affect the running of your task.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// An optional name for the task.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// The priority of the task in the maintenance window, the lower the number\n\t// the higher the priority. Tasks in a maintenance window are scheduled in priority\n\t// order with tasks that have the same priority scheduled in parallel.\n\tPriority *int64 `type:\"integer\"`\n\n\t// The Amazon Resource Name (ARN) of the IAM service role for Amazon Web Services\n\t// Systems Manager to assume when running a maintenance window task. If you\n\t// do not specify a service role ARN, Systems Manager uses your account's service-linked\n\t// role. If no service-linked role for Systems Manager exists in your account,\n\t// it is created when you run RegisterTaskWithMaintenanceWindow.\n\t//\n\t// For more information, see the following topics in the in the Amazon Web Services\n\t// Systems Manager User Guide:\n\t//\n\t//    * Using service-linked roles for Systems Manager (https://docs.aws.amazon.com/systems-manager/latest/userguide/using-service-linked-roles.html#slr-permissions)\n\t//\n\t//    * Should I use a service-linked role or a custom service role to run maintenance\n\t//    window tasks? (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-maintenance-permissions.html#maintenance-window-tasks-service-role)\n\tServiceRoleArn *string `type:\"string\"`\n\n\t// The targets (either managed nodes or maintenance window targets).\n\t//\n\t// One or more targets must be specified for maintenance window Run Command-type\n\t// tasks. Depending on the task, targets are optional for other maintenance\n\t// window task types (Automation, Lambda, and Step Functions). For more information\n\t// about running tasks that don't specify targets, see Registering maintenance\n\t// window tasks without targets (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\t//\n\t// Specify managed nodes using the following format:\n\t//\n\t// Key=InstanceIds,Values=<instance-id-1>,<instance-id-2>\n\t//\n\t// Specify maintenance window targets using the following format:\n\t//\n\t// Key=WindowTargetIds,Values=<window-target-id-1>,<window-target-id-2>\n\tTargets []*Target `type:\"list\"`\n\n\t// The ARN of the task to run.\n\t//\n\t// TaskArn is a required field\n\tTaskArn *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The parameters that the task should use during execution. Populate only the\n\t// fields that match the task type. All other fields should be empty.\n\tTaskInvocationParameters *MaintenanceWindowTaskInvocationParameters `type:\"structure\"`\n\n\t// The parameters that should be passed to the task when it is run.\n\t//\n\t// TaskParameters has been deprecated. To specify parameters to pass to a task\n\t// when it runs, instead use the Parameters option in the TaskInvocationParameters\n\t// structure. For information about how Systems Manager handles these options\n\t// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n\t//\n\t// TaskParameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by RegisterTaskWithMaintenanceWindowInput's\n\t// String and GoString methods.\n\tTaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:\"map\" sensitive:\"true\"`\n\n\t// The type of task being registered.\n\t//\n\t// TaskType is a required field\n\tTaskType *string `type:\"string\" required:\"true\" enum:\"MaintenanceWindowTaskType\"`\n\n\t// The ID of the maintenance window the task should be added to.\n\t//\n\t// WindowId is a required field\n\tWindowId *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterTaskWithMaintenanceWindowInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterTaskWithMaintenanceWindowInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"RegisterTaskWithMaintenanceWindowInput\"}\n\tif s.ClientToken != nil && len(*s.ClientToken) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ClientToken\", 1))\n\t}\n\tif s.Description != nil && len(*s.Description) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Description\", 1))\n\t}\n\tif s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxConcurrency\", 1))\n\t}\n\tif s.MaxErrors != nil && len(*s.MaxErrors) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxErrors\", 1))\n\t}\n\tif s.Name != nil && len(*s.Name) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 3))\n\t}\n\tif s.TaskArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TaskArn\"))\n\t}\n\tif s.TaskArn != nil && len(*s.TaskArn) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TaskArn\", 1))\n\t}\n\tif s.TaskType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TaskType\"))\n\t}\n\tif s.WindowId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowId\"))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\tif s.AlarmConfiguration != nil {\n\t\tif err := s.AlarmConfiguration.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"AlarmConfiguration\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.LoggingInfo != nil {\n\t\tif err := s.LoggingInfo.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"LoggingInfo\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Targets != nil {\n\t\tfor i, v := range s.Targets {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Targets\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.TaskInvocationParameters != nil {\n\t\tif err := s.TaskInvocationParameters.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"TaskInvocationParameters\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetAlarmConfiguration(v *AlarmConfiguration) *RegisterTaskWithMaintenanceWindowInput {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetClientToken sets the ClientToken field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetClientToken(v string) *RegisterTaskWithMaintenanceWindowInput {\n\ts.ClientToken = &v\n\treturn s\n}\n\n// SetCutoffBehavior sets the CutoffBehavior field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetCutoffBehavior(v string) *RegisterTaskWithMaintenanceWindowInput {\n\ts.CutoffBehavior = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetDescription(v string) *RegisterTaskWithMaintenanceWindowInput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetLoggingInfo sets the LoggingInfo field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetLoggingInfo(v *LoggingInfo) *RegisterTaskWithMaintenanceWindowInput {\n\ts.LoggingInfo = v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetMaxConcurrency(v string) *RegisterTaskWithMaintenanceWindowInput {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetMaxErrors(v string) *RegisterTaskWithMaintenanceWindowInput {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetName(v string) *RegisterTaskWithMaintenanceWindowInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetPriority sets the Priority field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetPriority(v int64) *RegisterTaskWithMaintenanceWindowInput {\n\ts.Priority = &v\n\treturn s\n}\n\n// SetServiceRoleArn sets the ServiceRoleArn field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetServiceRoleArn(v string) *RegisterTaskWithMaintenanceWindowInput {\n\ts.ServiceRoleArn = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetTargets(v []*Target) *RegisterTaskWithMaintenanceWindowInput {\n\ts.Targets = v\n\treturn s\n}\n\n// SetTaskArn sets the TaskArn field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetTaskArn(v string) *RegisterTaskWithMaintenanceWindowInput {\n\ts.TaskArn = &v\n\treturn s\n}\n\n// SetTaskInvocationParameters sets the TaskInvocationParameters field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetTaskInvocationParameters(v *MaintenanceWindowTaskInvocationParameters) *RegisterTaskWithMaintenanceWindowInput {\n\ts.TaskInvocationParameters = v\n\treturn s\n}\n\n// SetTaskParameters sets the TaskParameters field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetTaskParameters(v map[string]*MaintenanceWindowTaskParameterValueExpression) *RegisterTaskWithMaintenanceWindowInput {\n\ts.TaskParameters = v\n\treturn s\n}\n\n// SetTaskType sets the TaskType field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetTaskType(v string) *RegisterTaskWithMaintenanceWindowInput {\n\ts.TaskType = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowInput) SetWindowId(v string) *RegisterTaskWithMaintenanceWindowInput {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype RegisterTaskWithMaintenanceWindowOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the task in the maintenance window.\n\tWindowTaskId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterTaskWithMaintenanceWindowOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterTaskWithMaintenanceWindowOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetWindowTaskId sets the WindowTaskId field's value.\nfunc (s *RegisterTaskWithMaintenanceWindowOutput) SetWindowTaskId(v string) *RegisterTaskWithMaintenanceWindowOutput {\n\ts.WindowTaskId = &v\n\treturn s\n}\n\n// Reserved for internal use.\ntype RegistrationMetadataItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Reserved for internal use.\n\t//\n\t// Key is a required field\n\tKey *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// Reserved for internal use.\n\t//\n\t// Value is a required field\n\tValue *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegistrationMetadataItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegistrationMetadataItem) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *RegistrationMetadataItem) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"RegistrationMetadataItem\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\tif s.Value == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Value\"))\n\t}\n\tif s.Value != nil && len(*s.Value) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Value\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *RegistrationMetadataItem) SetKey(v string) *RegistrationMetadataItem {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *RegistrationMetadataItem) SetValue(v string) *RegistrationMetadataItem {\n\ts.Value = &v\n\treturn s\n}\n\n// An OpsItems that shares something in common with the current OpsItem. For\n// example, related OpsItems can include OpsItems with similar error messages,\n// impacted resources, or statuses for the impacted resource.\ntype RelatedOpsItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of an OpsItem related to the current OpsItem.\n\t//\n\t// OpsItemId is a required field\n\tOpsItemId *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RelatedOpsItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RelatedOpsItem) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *RelatedOpsItem) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"RelatedOpsItem\"}\n\tif s.OpsItemId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"OpsItemId\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *RelatedOpsItem) SetOpsItemId(v string) *RelatedOpsItem {\n\ts.OpsItemId = &v\n\treturn s\n}\n\ntype RemoveTagsFromResourceInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the resource from which you want to remove tags. For example:\n\t//\n\t// ManagedInstance: mi-012345abcde\n\t//\n\t// MaintenanceWindow: mw-012345abcde\n\t//\n\t// Automation: example-c160-4567-8519-012345abcde\n\t//\n\t// PatchBaseline: pb-012345abcde\n\t//\n\t// OpsMetadata object: ResourceID for tagging is created from the Amazon Resource\n\t// Name (ARN) for the object. Specifically, ResourceID is created from the strings\n\t// that come after the word opsmetadata in the ARN. For example, an OpsMetadata\n\t// object with an ARN of arn:aws:ssm:us-east-2:1234567890:opsmetadata/aws/ssm/MyGroup/appmanager\n\t// has a ResourceID of either aws/ssm/MyGroup/appmanager or /aws/ssm/MyGroup/appmanager.\n\t//\n\t// For the Document and Parameter values, use the name of the resource.\n\t//\n\t// The ManagedInstance type for this API operation is only for on-premises managed\n\t// nodes. Specify the name of the managed node in the following format: mi-ID_number.\n\t// For example, mi-1a2b3c4d5e6f.\n\t//\n\t// ResourceId is a required field\n\tResourceId *string `type:\"string\" required:\"true\"`\n\n\t// The type of resource from which you want to remove a tag.\n\t//\n\t// The ManagedInstance type for this API operation is only for on-premises managed\n\t// nodes. Specify the name of the managed node in the following format: mi-ID_number\n\t// . For example, mi-1a2b3c4d5e6f.\n\t//\n\t// ResourceType is a required field\n\tResourceType *string `type:\"string\" required:\"true\" enum:\"ResourceTypeForTagging\"`\n\n\t// Tag keys that you want to remove from the specified resource.\n\t//\n\t// TagKeys is a required field\n\tTagKeys []*string `type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RemoveTagsFromResourceInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RemoveTagsFromResourceInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *RemoveTagsFromResourceInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"RemoveTagsFromResourceInput\"}\n\tif s.ResourceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceId\"))\n\t}\n\tif s.ResourceType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ResourceType\"))\n\t}\n\tif s.TagKeys == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TagKeys\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetResourceId sets the ResourceId field's value.\nfunc (s *RemoveTagsFromResourceInput) SetResourceId(v string) *RemoveTagsFromResourceInput {\n\ts.ResourceId = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *RemoveTagsFromResourceInput) SetResourceType(v string) *RemoveTagsFromResourceInput {\n\ts.ResourceType = &v\n\treturn s\n}\n\n// SetTagKeys sets the TagKeys field's value.\nfunc (s *RemoveTagsFromResourceInput) SetTagKeys(v []*string) *RemoveTagsFromResourceInput {\n\ts.TagKeys = v\n\treturn s\n}\n\ntype RemoveTagsFromResourceOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RemoveTagsFromResourceOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RemoveTagsFromResourceOutput) GoString() string {\n\treturn s.String()\n}\n\n// The request body of the ResetServiceSetting API operation.\ntype ResetServiceSettingInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) of the service setting to reset. The setting\n\t// ID can be one of the following.\n\t//\n\t//    * /ssm/managed-instance/default-ec2-instance-management-role\n\t//\n\t//    * /ssm/automation/customer-script-log-destination\n\t//\n\t//    * /ssm/automation/customer-script-log-group-name\n\t//\n\t//    * /ssm/documents/console/public-sharing-permission\n\t//\n\t//    * /ssm/managed-instance/activation-tier\n\t//\n\t//    * /ssm/opsinsights/opscenter\n\t//\n\t//    * /ssm/parameter-store/default-parameter-tier\n\t//\n\t//    * /ssm/parameter-store/high-throughput-enabled\n\t//\n\t// SettingId is a required field\n\tSettingId *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResetServiceSettingInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResetServiceSettingInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ResetServiceSettingInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ResetServiceSettingInput\"}\n\tif s.SettingId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SettingId\"))\n\t}\n\tif s.SettingId != nil && len(*s.SettingId) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SettingId\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetSettingId sets the SettingId field's value.\nfunc (s *ResetServiceSettingInput) SetSettingId(v string) *ResetServiceSettingInput {\n\ts.SettingId = &v\n\treturn s\n}\n\n// The result body of the ResetServiceSetting API operation.\ntype ResetServiceSettingOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The current, effective service setting after calling the ResetServiceSetting\n\t// API operation.\n\tServiceSetting *ServiceSetting `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResetServiceSettingOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResetServiceSettingOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetServiceSetting sets the ServiceSetting field's value.\nfunc (s *ResetServiceSettingOutput) SetServiceSetting(v *ServiceSetting) *ResetServiceSettingOutput {\n\ts.ServiceSetting = v\n\treturn s\n}\n\n// Information about targets that resolved during the Automation execution.\ntype ResolvedTargets struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A list of parameter values sent to targets that resolved during the Automation\n\t// execution.\n\tParameterValues []*string `type:\"list\"`\n\n\t// A boolean value indicating whether the resolved target list is truncated.\n\tTruncated *bool `type:\"boolean\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResolvedTargets) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResolvedTargets) GoString() string {\n\treturn s.String()\n}\n\n// SetParameterValues sets the ParameterValues field's value.\nfunc (s *ResolvedTargets) SetParameterValues(v []*string) *ResolvedTargets {\n\ts.ParameterValues = v\n\treturn s\n}\n\n// SetTruncated sets the Truncated field's value.\nfunc (s *ResolvedTargets) SetTruncated(v bool) *ResolvedTargets {\n\ts.Truncated = &v\n\treturn s\n}\n\n// Compliance summary information for a specific resource.\ntype ResourceComplianceSummaryItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The compliance type.\n\tComplianceType *string `min:\"1\" type:\"string\"`\n\n\t// A list of items that are compliant for the resource.\n\tCompliantSummary *CompliantSummary `type:\"structure\"`\n\n\t// Information about the execution.\n\tExecutionSummary *ComplianceExecutionSummary `type:\"structure\"`\n\n\t// A list of items that aren't compliant for the resource.\n\tNonCompliantSummary *NonCompliantSummary `type:\"structure\"`\n\n\t// The highest severity item found for the resource. The resource is compliant\n\t// for this item.\n\tOverallSeverity *string `type:\"string\" enum:\"ComplianceSeverity\"`\n\n\t// The resource ID.\n\tResourceId *string `min:\"1\" type:\"string\"`\n\n\t// The resource type.\n\tResourceType *string `min:\"1\" type:\"string\"`\n\n\t// The compliance status for the resource.\n\tStatus *string `type:\"string\" enum:\"ComplianceStatus\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceComplianceSummaryItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceComplianceSummaryItem) GoString() string {\n\treturn s.String()\n}\n\n// SetComplianceType sets the ComplianceType field's value.\nfunc (s *ResourceComplianceSummaryItem) SetComplianceType(v string) *ResourceComplianceSummaryItem {\n\ts.ComplianceType = &v\n\treturn s\n}\n\n// SetCompliantSummary sets the CompliantSummary field's value.\nfunc (s *ResourceComplianceSummaryItem) SetCompliantSummary(v *CompliantSummary) *ResourceComplianceSummaryItem {\n\ts.CompliantSummary = v\n\treturn s\n}\n\n// SetExecutionSummary sets the ExecutionSummary field's value.\nfunc (s *ResourceComplianceSummaryItem) SetExecutionSummary(v *ComplianceExecutionSummary) *ResourceComplianceSummaryItem {\n\ts.ExecutionSummary = v\n\treturn s\n}\n\n// SetNonCompliantSummary sets the NonCompliantSummary field's value.\nfunc (s *ResourceComplianceSummaryItem) SetNonCompliantSummary(v *NonCompliantSummary) *ResourceComplianceSummaryItem {\n\ts.NonCompliantSummary = v\n\treturn s\n}\n\n// SetOverallSeverity sets the OverallSeverity field's value.\nfunc (s *ResourceComplianceSummaryItem) SetOverallSeverity(v string) *ResourceComplianceSummaryItem {\n\ts.OverallSeverity = &v\n\treturn s\n}\n\n// SetResourceId sets the ResourceId field's value.\nfunc (s *ResourceComplianceSummaryItem) SetResourceId(v string) *ResourceComplianceSummaryItem {\n\ts.ResourceId = &v\n\treturn s\n}\n\n// SetResourceType sets the ResourceType field's value.\nfunc (s *ResourceComplianceSummaryItem) SetResourceType(v string) *ResourceComplianceSummaryItem {\n\ts.ResourceType = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *ResourceComplianceSummaryItem) SetStatus(v string) *ResourceComplianceSummaryItem {\n\ts.Status = &v\n\treturn s\n}\n\n// A sync configuration with the same name already exists.\ntype ResourceDataSyncAlreadyExistsException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n\n\tSyncName *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncAlreadyExistsException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncAlreadyExistsException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorResourceDataSyncAlreadyExistsException(v protocol.ResponseMetadata) error {\n\treturn &ResourceDataSyncAlreadyExistsException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ResourceDataSyncAlreadyExistsException) Code() string {\n\treturn \"ResourceDataSyncAlreadyExistsException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ResourceDataSyncAlreadyExistsException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ResourceDataSyncAlreadyExistsException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ResourceDataSyncAlreadyExistsException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ResourceDataSyncAlreadyExistsException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ResourceDataSyncAlreadyExistsException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Information about the AwsOrganizationsSource resource data sync source. A\n// sync source of this type can synchronize data from Organizations or, if an\n// Amazon Web Services organization isn't present, from multiple Amazon Web\n// Services Regions.\ntype ResourceDataSyncAwsOrganizationsSource struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// If an Amazon Web Services organization is present, this is either OrganizationalUnits\n\t// or EntireOrganization. For OrganizationalUnits, the data is aggregated from\n\t// a set of organization units. For EntireOrganization, the data is aggregated\n\t// from the entire Amazon Web Services organization.\n\t//\n\t// OrganizationSourceType is a required field\n\tOrganizationSourceType *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The Organizations organization units included in the sync.\n\tOrganizationalUnits []*ResourceDataSyncOrganizationalUnit `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncAwsOrganizationsSource) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncAwsOrganizationsSource) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ResourceDataSyncAwsOrganizationsSource) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ResourceDataSyncAwsOrganizationsSource\"}\n\tif s.OrganizationSourceType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"OrganizationSourceType\"))\n\t}\n\tif s.OrganizationSourceType != nil && len(*s.OrganizationSourceType) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OrganizationSourceType\", 1))\n\t}\n\tif s.OrganizationalUnits != nil && len(s.OrganizationalUnits) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OrganizationalUnits\", 1))\n\t}\n\tif s.OrganizationalUnits != nil {\n\t\tfor i, v := range s.OrganizationalUnits {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"OrganizationalUnits\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetOrganizationSourceType sets the OrganizationSourceType field's value.\nfunc (s *ResourceDataSyncAwsOrganizationsSource) SetOrganizationSourceType(v string) *ResourceDataSyncAwsOrganizationsSource {\n\ts.OrganizationSourceType = &v\n\treturn s\n}\n\n// SetOrganizationalUnits sets the OrganizationalUnits field's value.\nfunc (s *ResourceDataSyncAwsOrganizationsSource) SetOrganizationalUnits(v []*ResourceDataSyncOrganizationalUnit) *ResourceDataSyncAwsOrganizationsSource {\n\ts.OrganizationalUnits = v\n\treturn s\n}\n\n// Another UpdateResourceDataSync request is being processed. Wait a few minutes\n// and try again.\ntype ResourceDataSyncConflictException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncConflictException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncConflictException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorResourceDataSyncConflictException(v protocol.ResponseMetadata) error {\n\treturn &ResourceDataSyncConflictException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ResourceDataSyncConflictException) Code() string {\n\treturn \"ResourceDataSyncConflictException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ResourceDataSyncConflictException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ResourceDataSyncConflictException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ResourceDataSyncConflictException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ResourceDataSyncConflictException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ResourceDataSyncConflictException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// You have exceeded the allowed maximum sync configurations.\ntype ResourceDataSyncCountExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncCountExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncCountExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorResourceDataSyncCountExceededException(v protocol.ResponseMetadata) error {\n\treturn &ResourceDataSyncCountExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ResourceDataSyncCountExceededException) Code() string {\n\treturn \"ResourceDataSyncCountExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ResourceDataSyncCountExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ResourceDataSyncCountExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ResourceDataSyncCountExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ResourceDataSyncCountExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ResourceDataSyncCountExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Synchronize Amazon Web Services Systems Manager Inventory data from multiple\n// Amazon Web Services accounts defined in Organizations to a centralized Amazon\n// S3 bucket. Data is synchronized to individual key prefixes in the central\n// bucket. Each key prefix represents a different Amazon Web Services account\n// ID.\ntype ResourceDataSyncDestinationDataSharing struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The sharing data type. Only Organization is supported.\n\tDestinationDataSharingType *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncDestinationDataSharing) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncDestinationDataSharing) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ResourceDataSyncDestinationDataSharing) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ResourceDataSyncDestinationDataSharing\"}\n\tif s.DestinationDataSharingType != nil && len(*s.DestinationDataSharingType) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"DestinationDataSharingType\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDestinationDataSharingType sets the DestinationDataSharingType field's value.\nfunc (s *ResourceDataSyncDestinationDataSharing) SetDestinationDataSharingType(v string) *ResourceDataSyncDestinationDataSharing {\n\ts.DestinationDataSharingType = &v\n\treturn s\n}\n\n// The specified sync configuration is invalid.\ntype ResourceDataSyncInvalidConfigurationException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncInvalidConfigurationException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncInvalidConfigurationException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorResourceDataSyncInvalidConfigurationException(v protocol.ResponseMetadata) error {\n\treturn &ResourceDataSyncInvalidConfigurationException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ResourceDataSyncInvalidConfigurationException) Code() string {\n\treturn \"ResourceDataSyncInvalidConfigurationException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ResourceDataSyncInvalidConfigurationException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ResourceDataSyncInvalidConfigurationException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ResourceDataSyncInvalidConfigurationException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ResourceDataSyncInvalidConfigurationException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ResourceDataSyncInvalidConfigurationException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Information about a resource data sync configuration, including its current\n// status and last successful sync.\ntype ResourceDataSyncItem struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The status reported by the last sync.\n\tLastStatus *string `type:\"string\" enum:\"LastResourceDataSyncStatus\"`\n\n\t// The last time the sync operations returned a status of SUCCESSFUL (UTC).\n\tLastSuccessfulSyncTime *time.Time `type:\"timestamp\"`\n\n\t// The status message details reported by the last sync.\n\tLastSyncStatusMessage *string `type:\"string\"`\n\n\t// The last time the configuration attempted to sync (UTC).\n\tLastSyncTime *time.Time `type:\"timestamp\"`\n\n\t// Configuration information for the target S3 bucket.\n\tS3Destination *ResourceDataSyncS3Destination `type:\"structure\"`\n\n\t// The date and time the configuration was created (UTC).\n\tSyncCreatedTime *time.Time `type:\"timestamp\"`\n\n\t// The date and time the resource data sync was changed.\n\tSyncLastModifiedTime *time.Time `type:\"timestamp\"`\n\n\t// The name of the resource data sync.\n\tSyncName *string `min:\"1\" type:\"string\"`\n\n\t// Information about the source where the data was synchronized.\n\tSyncSource *ResourceDataSyncSourceWithState `type:\"structure\"`\n\n\t// The type of resource data sync. If SyncType is SyncToDestination, then the\n\t// resource data sync synchronizes data to an S3 bucket. If the SyncType is\n\t// SyncFromSource then the resource data sync synchronizes data from Organizations\n\t// or from multiple Amazon Web Services Regions.\n\tSyncType *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncItem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncItem) GoString() string {\n\treturn s.String()\n}\n\n// SetLastStatus sets the LastStatus field's value.\nfunc (s *ResourceDataSyncItem) SetLastStatus(v string) *ResourceDataSyncItem {\n\ts.LastStatus = &v\n\treturn s\n}\n\n// SetLastSuccessfulSyncTime sets the LastSuccessfulSyncTime field's value.\nfunc (s *ResourceDataSyncItem) SetLastSuccessfulSyncTime(v time.Time) *ResourceDataSyncItem {\n\ts.LastSuccessfulSyncTime = &v\n\treturn s\n}\n\n// SetLastSyncStatusMessage sets the LastSyncStatusMessage field's value.\nfunc (s *ResourceDataSyncItem) SetLastSyncStatusMessage(v string) *ResourceDataSyncItem {\n\ts.LastSyncStatusMessage = &v\n\treturn s\n}\n\n// SetLastSyncTime sets the LastSyncTime field's value.\nfunc (s *ResourceDataSyncItem) SetLastSyncTime(v time.Time) *ResourceDataSyncItem {\n\ts.LastSyncTime = &v\n\treturn s\n}\n\n// SetS3Destination sets the S3Destination field's value.\nfunc (s *ResourceDataSyncItem) SetS3Destination(v *ResourceDataSyncS3Destination) *ResourceDataSyncItem {\n\ts.S3Destination = v\n\treturn s\n}\n\n// SetSyncCreatedTime sets the SyncCreatedTime field's value.\nfunc (s *ResourceDataSyncItem) SetSyncCreatedTime(v time.Time) *ResourceDataSyncItem {\n\ts.SyncCreatedTime = &v\n\treturn s\n}\n\n// SetSyncLastModifiedTime sets the SyncLastModifiedTime field's value.\nfunc (s *ResourceDataSyncItem) SetSyncLastModifiedTime(v time.Time) *ResourceDataSyncItem {\n\ts.SyncLastModifiedTime = &v\n\treturn s\n}\n\n// SetSyncName sets the SyncName field's value.\nfunc (s *ResourceDataSyncItem) SetSyncName(v string) *ResourceDataSyncItem {\n\ts.SyncName = &v\n\treturn s\n}\n\n// SetSyncSource sets the SyncSource field's value.\nfunc (s *ResourceDataSyncItem) SetSyncSource(v *ResourceDataSyncSourceWithState) *ResourceDataSyncItem {\n\ts.SyncSource = v\n\treturn s\n}\n\n// SetSyncType sets the SyncType field's value.\nfunc (s *ResourceDataSyncItem) SetSyncType(v string) *ResourceDataSyncItem {\n\ts.SyncType = &v\n\treturn s\n}\n\n// The specified sync name wasn't found.\ntype ResourceDataSyncNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n\n\tSyncName *string `min:\"1\" type:\"string\"`\n\n\tSyncType *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorResourceDataSyncNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &ResourceDataSyncNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ResourceDataSyncNotFoundException) Code() string {\n\treturn \"ResourceDataSyncNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ResourceDataSyncNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ResourceDataSyncNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ResourceDataSyncNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ResourceDataSyncNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ResourceDataSyncNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The Organizations organizational unit data source for the sync.\ntype ResourceDataSyncOrganizationalUnit struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Organizations unit ID data source for the sync.\n\tOrganizationalUnitId *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncOrganizationalUnit) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncOrganizationalUnit) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ResourceDataSyncOrganizationalUnit) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ResourceDataSyncOrganizationalUnit\"}\n\tif s.OrganizationalUnitId != nil && len(*s.OrganizationalUnitId) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OrganizationalUnitId\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetOrganizationalUnitId sets the OrganizationalUnitId field's value.\nfunc (s *ResourceDataSyncOrganizationalUnit) SetOrganizationalUnitId(v string) *ResourceDataSyncOrganizationalUnit {\n\ts.OrganizationalUnitId = &v\n\treturn s\n}\n\n// Information about the target S3 bucket for the resource data sync.\ntype ResourceDataSyncS3Destination struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ARN of an encryption key for a destination in Amazon S3. Must belong\n\t// to the same Region as the destination S3 bucket.\n\tAWSKMSKeyARN *string `min:\"1\" type:\"string\"`\n\n\t// The name of the S3 bucket where the aggregated data is stored.\n\t//\n\t// BucketName is a required field\n\tBucketName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// Enables destination data sharing. By default, this field is null.\n\tDestinationDataSharing *ResourceDataSyncDestinationDataSharing `type:\"structure\"`\n\n\t// An Amazon S3 prefix for the bucket.\n\tPrefix *string `min:\"1\" type:\"string\"`\n\n\t// The Amazon Web Services Region with the S3 bucket targeted by the resource\n\t// data sync.\n\t//\n\t// Region is a required field\n\tRegion *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// A supported sync format. The following format is currently supported: JsonSerDe\n\t//\n\t// SyncFormat is a required field\n\tSyncFormat *string `type:\"string\" required:\"true\" enum:\"ResourceDataSyncS3Format\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncS3Destination) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncS3Destination) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ResourceDataSyncS3Destination) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ResourceDataSyncS3Destination\"}\n\tif s.AWSKMSKeyARN != nil && len(*s.AWSKMSKeyARN) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AWSKMSKeyARN\", 1))\n\t}\n\tif s.BucketName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"BucketName\"))\n\t}\n\tif s.BucketName != nil && len(*s.BucketName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"BucketName\", 1))\n\t}\n\tif s.Prefix != nil && len(*s.Prefix) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Prefix\", 1))\n\t}\n\tif s.Region == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Region\"))\n\t}\n\tif s.Region != nil && len(*s.Region) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Region\", 1))\n\t}\n\tif s.SyncFormat == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SyncFormat\"))\n\t}\n\tif s.DestinationDataSharing != nil {\n\t\tif err := s.DestinationDataSharing.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"DestinationDataSharing\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAWSKMSKeyARN sets the AWSKMSKeyARN field's value.\nfunc (s *ResourceDataSyncS3Destination) SetAWSKMSKeyARN(v string) *ResourceDataSyncS3Destination {\n\ts.AWSKMSKeyARN = &v\n\treturn s\n}\n\n// SetBucketName sets the BucketName field's value.\nfunc (s *ResourceDataSyncS3Destination) SetBucketName(v string) *ResourceDataSyncS3Destination {\n\ts.BucketName = &v\n\treturn s\n}\n\n// SetDestinationDataSharing sets the DestinationDataSharing field's value.\nfunc (s *ResourceDataSyncS3Destination) SetDestinationDataSharing(v *ResourceDataSyncDestinationDataSharing) *ResourceDataSyncS3Destination {\n\ts.DestinationDataSharing = v\n\treturn s\n}\n\n// SetPrefix sets the Prefix field's value.\nfunc (s *ResourceDataSyncS3Destination) SetPrefix(v string) *ResourceDataSyncS3Destination {\n\ts.Prefix = &v\n\treturn s\n}\n\n// SetRegion sets the Region field's value.\nfunc (s *ResourceDataSyncS3Destination) SetRegion(v string) *ResourceDataSyncS3Destination {\n\ts.Region = &v\n\treturn s\n}\n\n// SetSyncFormat sets the SyncFormat field's value.\nfunc (s *ResourceDataSyncS3Destination) SetSyncFormat(v string) *ResourceDataSyncS3Destination {\n\ts.SyncFormat = &v\n\treturn s\n}\n\n// Information about the source of the data included in the resource data sync.\ntype ResourceDataSyncSource struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Information about the AwsOrganizationsSource resource data sync source. A\n\t// sync source of this type can synchronize data from Organizations.\n\tAwsOrganizationsSource *ResourceDataSyncAwsOrganizationsSource `type:\"structure\"`\n\n\t// When you create a resource data sync, if you choose one of the Organizations\n\t// options, then Systems Manager automatically enables all OpsData sources in\n\t// the selected Amazon Web Services Regions for all Amazon Web Services accounts\n\t// in your organization (or in the selected organization units). For more information,\n\t// see About multiple account and Region resource data syncs (https://docs.aws.amazon.com/systems-manager/latest/userguide/Explorer-resouce-data-sync-multiple-accounts-and-regions.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tEnableAllOpsDataSources *bool `type:\"boolean\"`\n\n\t// Whether to automatically synchronize and aggregate data from new Amazon Web\n\t// Services Regions when those Regions come online.\n\tIncludeFutureRegions *bool `type:\"boolean\"`\n\n\t// The SyncSource Amazon Web Services Regions included in the resource data\n\t// sync.\n\t//\n\t// SourceRegions is a required field\n\tSourceRegions []*string `type:\"list\" required:\"true\"`\n\n\t// The type of data source for the resource data sync. SourceType is either\n\t// AwsOrganizations (if an organization is present in Organizations) or SingleAccountMultiRegions.\n\t//\n\t// SourceType is a required field\n\tSourceType *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncSource) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncSource) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ResourceDataSyncSource) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ResourceDataSyncSource\"}\n\tif s.SourceRegions == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SourceRegions\"))\n\t}\n\tif s.SourceType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SourceType\"))\n\t}\n\tif s.SourceType != nil && len(*s.SourceType) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SourceType\", 1))\n\t}\n\tif s.AwsOrganizationsSource != nil {\n\t\tif err := s.AwsOrganizationsSource.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"AwsOrganizationsSource\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAwsOrganizationsSource sets the AwsOrganizationsSource field's value.\nfunc (s *ResourceDataSyncSource) SetAwsOrganizationsSource(v *ResourceDataSyncAwsOrganizationsSource) *ResourceDataSyncSource {\n\ts.AwsOrganizationsSource = v\n\treturn s\n}\n\n// SetEnableAllOpsDataSources sets the EnableAllOpsDataSources field's value.\nfunc (s *ResourceDataSyncSource) SetEnableAllOpsDataSources(v bool) *ResourceDataSyncSource {\n\ts.EnableAllOpsDataSources = &v\n\treturn s\n}\n\n// SetIncludeFutureRegions sets the IncludeFutureRegions field's value.\nfunc (s *ResourceDataSyncSource) SetIncludeFutureRegions(v bool) *ResourceDataSyncSource {\n\ts.IncludeFutureRegions = &v\n\treturn s\n}\n\n// SetSourceRegions sets the SourceRegions field's value.\nfunc (s *ResourceDataSyncSource) SetSourceRegions(v []*string) *ResourceDataSyncSource {\n\ts.SourceRegions = v\n\treturn s\n}\n\n// SetSourceType sets the SourceType field's value.\nfunc (s *ResourceDataSyncSource) SetSourceType(v string) *ResourceDataSyncSource {\n\ts.SourceType = &v\n\treturn s\n}\n\n// The data type name for including resource data sync state. There are four\n// sync states:\n//\n// OrganizationNotExists (Your organization doesn't exist)\n//\n// NoPermissions (The system can't locate the service-linked role. This role\n// is automatically created when a user creates a resource data sync in Amazon\n// Web Services Systems Manager Explorer.)\n//\n// InvalidOrganizationalUnit (You specified or selected an invalid unit in the\n// resource data sync configuration.)\n//\n// TrustedAccessDisabled (You disabled Systems Manager access in the organization\n// in Organizations.)\ntype ResourceDataSyncSourceWithState struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The field name in SyncSource for the ResourceDataSyncAwsOrganizationsSource\n\t// type.\n\tAwsOrganizationsSource *ResourceDataSyncAwsOrganizationsSource `type:\"structure\"`\n\n\t// When you create a resource data sync, if you choose one of the Organizations\n\t// options, then Systems Manager automatically enables all OpsData sources in\n\t// the selected Amazon Web Services Regions for all Amazon Web Services accounts\n\t// in your organization (or in the selected organization units). For more information,\n\t// see About multiple account and Region resource data syncs (https://docs.aws.amazon.com/systems-manager/latest/userguide/Explorer-resouce-data-sync-multiple-accounts-and-regions.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tEnableAllOpsDataSources *bool `type:\"boolean\"`\n\n\t// Whether to automatically synchronize and aggregate data from new Amazon Web\n\t// Services Regions when those Regions come online.\n\tIncludeFutureRegions *bool `type:\"boolean\"`\n\n\t// The SyncSource Amazon Web Services Regions included in the resource data\n\t// sync.\n\tSourceRegions []*string `type:\"list\"`\n\n\t// The type of data source for the resource data sync. SourceType is either\n\t// AwsOrganizations (if an organization is present in Organizations) or singleAccountMultiRegions.\n\tSourceType *string `min:\"1\" type:\"string\"`\n\n\t// The data type name for including resource data sync state. There are four\n\t// sync states:\n\t//\n\t// OrganizationNotExists: Your organization doesn't exist.\n\t//\n\t// NoPermissions: The system can't locate the service-linked role. This role\n\t// is automatically created when a user creates a resource data sync in Explorer.\n\t//\n\t// InvalidOrganizationalUnit: You specified or selected an invalid unit in the\n\t// resource data sync configuration.\n\t//\n\t// TrustedAccessDisabled: You disabled Systems Manager access in the organization\n\t// in Organizations.\n\tState *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncSourceWithState) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceDataSyncSourceWithState) GoString() string {\n\treturn s.String()\n}\n\n// SetAwsOrganizationsSource sets the AwsOrganizationsSource field's value.\nfunc (s *ResourceDataSyncSourceWithState) SetAwsOrganizationsSource(v *ResourceDataSyncAwsOrganizationsSource) *ResourceDataSyncSourceWithState {\n\ts.AwsOrganizationsSource = v\n\treturn s\n}\n\n// SetEnableAllOpsDataSources sets the EnableAllOpsDataSources field's value.\nfunc (s *ResourceDataSyncSourceWithState) SetEnableAllOpsDataSources(v bool) *ResourceDataSyncSourceWithState {\n\ts.EnableAllOpsDataSources = &v\n\treturn s\n}\n\n// SetIncludeFutureRegions sets the IncludeFutureRegions field's value.\nfunc (s *ResourceDataSyncSourceWithState) SetIncludeFutureRegions(v bool) *ResourceDataSyncSourceWithState {\n\ts.IncludeFutureRegions = &v\n\treturn s\n}\n\n// SetSourceRegions sets the SourceRegions field's value.\nfunc (s *ResourceDataSyncSourceWithState) SetSourceRegions(v []*string) *ResourceDataSyncSourceWithState {\n\ts.SourceRegions = v\n\treturn s\n}\n\n// SetSourceType sets the SourceType field's value.\nfunc (s *ResourceDataSyncSourceWithState) SetSourceType(v string) *ResourceDataSyncSourceWithState {\n\ts.SourceType = &v\n\treturn s\n}\n\n// SetState sets the State field's value.\nfunc (s *ResourceDataSyncSourceWithState) SetState(v string) *ResourceDataSyncSourceWithState {\n\ts.State = &v\n\treturn s\n}\n\n// Error returned if an attempt is made to delete a patch baseline that is registered\n// for a patch group.\ntype ResourceInUseException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceInUseException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceInUseException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorResourceInUseException(v protocol.ResponseMetadata) error {\n\treturn &ResourceInUseException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ResourceInUseException) Code() string {\n\treturn \"ResourceInUseException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ResourceInUseException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ResourceInUseException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ResourceInUseException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ResourceInUseException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ResourceInUseException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Error returned when the caller has exceeded the default resource quotas.\n// For example, too many maintenance windows or patch baselines have been created.\n//\n// For information about resource quotas in Systems Manager, see Systems Manager\n// service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n// in the Amazon Web Services General Reference.\ntype ResourceLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorResourceLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &ResourceLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ResourceLimitExceededException) Code() string {\n\treturn \"ResourceLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ResourceLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ResourceLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ResourceLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ResourceLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ResourceLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The hash provided in the call doesn't match the stored hash. This exception\n// is thrown when trying to update an obsolete policy version or when multiple\n// requests to update a policy are sent.\ntype ResourcePolicyConflictException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourcePolicyConflictException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourcePolicyConflictException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorResourcePolicyConflictException(v protocol.ResponseMetadata) error {\n\treturn &ResourcePolicyConflictException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ResourcePolicyConflictException) Code() string {\n\treturn \"ResourcePolicyConflictException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ResourcePolicyConflictException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ResourcePolicyConflictException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ResourcePolicyConflictException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ResourcePolicyConflictException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ResourcePolicyConflictException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// One or more parameters specified for the call aren't valid. Verify the parameters\n// and their values and try again.\ntype ResourcePolicyInvalidParameterException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n\n\tParameterNames []*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourcePolicyInvalidParameterException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourcePolicyInvalidParameterException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorResourcePolicyInvalidParameterException(v protocol.ResponseMetadata) error {\n\treturn &ResourcePolicyInvalidParameterException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ResourcePolicyInvalidParameterException) Code() string {\n\treturn \"ResourcePolicyInvalidParameterException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ResourcePolicyInvalidParameterException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ResourcePolicyInvalidParameterException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ResourcePolicyInvalidParameterException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ResourcePolicyInvalidParameterException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ResourcePolicyInvalidParameterException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The PutResourcePolicy API action enforces two limits. A policy can't be greater\n// than 1024 bytes in size. And only one policy can be attached to OpsItemGroup.\n// Verify these limits and try again.\ntype ResourcePolicyLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tLimit *int64 `type:\"integer\"`\n\n\tLimitType *string `type:\"string\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourcePolicyLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourcePolicyLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorResourcePolicyLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &ResourcePolicyLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ResourcePolicyLimitExceededException) Code() string {\n\treturn \"ResourcePolicyLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ResourcePolicyLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ResourcePolicyLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ResourcePolicyLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ResourcePolicyLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ResourcePolicyLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The inventory item result attribute.\ntype ResultAttribute struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Name of the inventory item type. Valid value: AWS:InstanceInformation. Default\n\t// Value: AWS:InstanceInformation.\n\t//\n\t// TypeName is a required field\n\tTypeName *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResultAttribute) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResultAttribute) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ResultAttribute) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ResultAttribute\"}\n\tif s.TypeName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"TypeName\"))\n\t}\n\tif s.TypeName != nil && len(*s.TypeName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TypeName\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetTypeName sets the TypeName field's value.\nfunc (s *ResultAttribute) SetTypeName(v string) *ResultAttribute {\n\ts.TypeName = &v\n\treturn s\n}\n\ntype ResumeSessionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the disconnected session to resume.\n\t//\n\t// SessionId is a required field\n\tSessionId *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResumeSessionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResumeSessionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ResumeSessionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ResumeSessionInput\"}\n\tif s.SessionId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SessionId\"))\n\t}\n\tif s.SessionId != nil && len(*s.SessionId) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SessionId\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetSessionId sets the SessionId field's value.\nfunc (s *ResumeSessionInput) SetSessionId(v string) *ResumeSessionInput {\n\ts.SessionId = &v\n\treturn s\n}\n\ntype ResumeSessionOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the session.\n\tSessionId *string `min:\"1\" type:\"string\"`\n\n\t// A URL back to SSM Agent on the managed node that the Session Manager client\n\t// uses to send commands and receive output from the managed node. Format: wss://ssmmessages.region.amazonaws.com/v1/data-channel/session-id?stream=(input|output).\n\t//\n\t// region represents the Region identifier for an Amazon Web Services Region\n\t// supported by Amazon Web Services Systems Manager, such as us-east-2 for the\n\t// US East (Ohio) Region. For a list of supported region values, see the Region\n\t// column in Systems Manager service endpoints (https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region)\n\t// in the Amazon Web Services General Reference.\n\t//\n\t// session-id represents the ID of a Session Manager session, such as 1a2b3c4dEXAMPLE.\n\tStreamUrl *string `type:\"string\"`\n\n\t// An encrypted token value containing session and caller information. Used\n\t// to authenticate the connection to the managed node.\n\tTokenValue *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResumeSessionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResumeSessionOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetSessionId sets the SessionId field's value.\nfunc (s *ResumeSessionOutput) SetSessionId(v string) *ResumeSessionOutput {\n\ts.SessionId = &v\n\treturn s\n}\n\n// SetStreamUrl sets the StreamUrl field's value.\nfunc (s *ResumeSessionOutput) SetStreamUrl(v string) *ResumeSessionOutput {\n\ts.StreamUrl = &v\n\treturn s\n}\n\n// SetTokenValue sets the TokenValue field's value.\nfunc (s *ResumeSessionOutput) SetTokenValue(v string) *ResumeSessionOutput {\n\ts.TokenValue = &v\n\treturn s\n}\n\n// Information about the result of a document review request.\ntype ReviewInformation struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time that the reviewer took action on the document review request.\n\tReviewedTime *time.Time `type:\"timestamp\"`\n\n\t// The reviewer assigned to take action on the document review request.\n\tReviewer *string `type:\"string\"`\n\n\t// The current status of the document review request.\n\tStatus *string `type:\"string\" enum:\"ReviewStatus\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReviewInformation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ReviewInformation) GoString() string {\n\treturn s.String()\n}\n\n// SetReviewedTime sets the ReviewedTime field's value.\nfunc (s *ReviewInformation) SetReviewedTime(v time.Time) *ReviewInformation {\n\ts.ReviewedTime = &v\n\treturn s\n}\n\n// SetReviewer sets the Reviewer field's value.\nfunc (s *ReviewInformation) SetReviewer(v string) *ReviewInformation {\n\ts.Reviewer = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *ReviewInformation) SetStatus(v string) *ReviewInformation {\n\ts.Status = &v\n\treturn s\n}\n\n// Information about an Automation runbook used in a runbook workflow in Change\n// Manager.\n//\n// The Automation runbooks specified for the runbook workflow can't run until\n// all required approvals for the change request have been received.\ntype Runbook struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the Automation runbook used in a runbook workflow.\n\t//\n\t// DocumentName is a required field\n\tDocumentName *string `type:\"string\" required:\"true\"`\n\n\t// The version of the Automation runbook used in a runbook workflow.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The MaxConcurrency value specified by the user when the operation started,\n\t// indicating the maximum number of resources that the runbook operation can\n\t// run on at the same time.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The MaxErrors value specified by the user when the execution started, indicating\n\t// the maximum number of errors that can occur during the operation before the\n\t// updates are stopped or rolled back.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The key-value map of execution parameters, which were supplied when calling\n\t// StartChangeRequestExecution.\n\tParameters map[string][]*string `min:\"1\" type:\"map\"`\n\n\t// Information about the Amazon Web Services Regions and Amazon Web Services\n\t// accounts targeted by the current Runbook operation.\n\tTargetLocations []*TargetLocation `min:\"1\" type:\"list\"`\n\n\t// A key-value mapping of runbook parameters to target resources. Both Targets\n\t// and TargetMaps can't be specified together.\n\tTargetMaps []map[string][]*string `type:\"list\"`\n\n\t// The name of the parameter used as the target resource for the rate-controlled\n\t// runbook workflow. Required if you specify Targets.\n\tTargetParameterName *string `min:\"1\" type:\"string\"`\n\n\t// A key-value mapping to target resources that the runbook operation performs\n\t// tasks on. Required if you specify TargetParameterName.\n\tTargets []*Target `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Runbook) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Runbook) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *Runbook) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"Runbook\"}\n\tif s.DocumentName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"DocumentName\"))\n\t}\n\tif s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxConcurrency\", 1))\n\t}\n\tif s.MaxErrors != nil && len(*s.MaxErrors) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxErrors\", 1))\n\t}\n\tif s.Parameters != nil && len(s.Parameters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Parameters\", 1))\n\t}\n\tif s.TargetLocations != nil && len(s.TargetLocations) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TargetLocations\", 1))\n\t}\n\tif s.TargetParameterName != nil && len(*s.TargetParameterName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TargetParameterName\", 1))\n\t}\n\tif s.TargetLocations != nil {\n\t\tfor i, v := range s.TargetLocations {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"TargetLocations\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Targets != nil {\n\t\tfor i, v := range s.Targets {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Targets\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDocumentName sets the DocumentName field's value.\nfunc (s *Runbook) SetDocumentName(v string) *Runbook {\n\ts.DocumentName = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *Runbook) SetDocumentVersion(v string) *Runbook {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *Runbook) SetMaxConcurrency(v string) *Runbook {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *Runbook) SetMaxErrors(v string) *Runbook {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *Runbook) SetParameters(v map[string][]*string) *Runbook {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetTargetLocations sets the TargetLocations field's value.\nfunc (s *Runbook) SetTargetLocations(v []*TargetLocation) *Runbook {\n\ts.TargetLocations = v\n\treturn s\n}\n\n// SetTargetMaps sets the TargetMaps field's value.\nfunc (s *Runbook) SetTargetMaps(v []map[string][]*string) *Runbook {\n\ts.TargetMaps = v\n\treturn s\n}\n\n// SetTargetParameterName sets the TargetParameterName field's value.\nfunc (s *Runbook) SetTargetParameterName(v string) *Runbook {\n\ts.TargetParameterName = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *Runbook) SetTargets(v []*Target) *Runbook {\n\ts.Targets = v\n\treturn s\n}\n\n// An S3 bucket where you want to store the results of this request.\ntype S3OutputLocation struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the S3 bucket.\n\tOutputS3BucketName *string `min:\"3\" type:\"string\"`\n\n\t// The S3 bucket subfolder.\n\tOutputS3KeyPrefix *string `type:\"string\"`\n\n\t// The Amazon Web Services Region of the S3 bucket.\n\tOutputS3Region *string `min:\"3\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s S3OutputLocation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s S3OutputLocation) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *S3OutputLocation) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"S3OutputLocation\"}\n\tif s.OutputS3BucketName != nil && len(*s.OutputS3BucketName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OutputS3BucketName\", 3))\n\t}\n\tif s.OutputS3Region != nil && len(*s.OutputS3Region) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OutputS3Region\", 3))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetOutputS3BucketName sets the OutputS3BucketName field's value.\nfunc (s *S3OutputLocation) SetOutputS3BucketName(v string) *S3OutputLocation {\n\ts.OutputS3BucketName = &v\n\treturn s\n}\n\n// SetOutputS3KeyPrefix sets the OutputS3KeyPrefix field's value.\nfunc (s *S3OutputLocation) SetOutputS3KeyPrefix(v string) *S3OutputLocation {\n\ts.OutputS3KeyPrefix = &v\n\treturn s\n}\n\n// SetOutputS3Region sets the OutputS3Region field's value.\nfunc (s *S3OutputLocation) SetOutputS3Region(v string) *S3OutputLocation {\n\ts.OutputS3Region = &v\n\treturn s\n}\n\n// A URL for the Amazon Web Services Systems Manager (Systems Manager) bucket\n// where you want to store the results of this request.\ntype S3OutputUrl struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A URL for an S3 bucket where you want to store the results of this request.\n\tOutputUrl *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s S3OutputUrl) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s S3OutputUrl) GoString() string {\n\treturn s.String()\n}\n\n// SetOutputUrl sets the OutputUrl field's value.\nfunc (s *S3OutputUrl) SetOutputUrl(v string) *S3OutputUrl {\n\ts.OutputUrl = &v\n\treturn s\n}\n\n// Information about a scheduled execution for a maintenance window.\ntype ScheduledWindowExecution struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time, in ISO-8601 Extended format, that the maintenance window is scheduled\n\t// to be run.\n\tExecutionTime *string `type:\"string\"`\n\n\t// The name of the maintenance window to be run.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// The ID of the maintenance window to be run.\n\tWindowId *string `min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ScheduledWindowExecution) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ScheduledWindowExecution) GoString() string {\n\treturn s.String()\n}\n\n// SetExecutionTime sets the ExecutionTime field's value.\nfunc (s *ScheduledWindowExecution) SetExecutionTime(v string) *ScheduledWindowExecution {\n\ts.ExecutionTime = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *ScheduledWindowExecution) SetName(v string) *ScheduledWindowExecution {\n\ts.Name = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *ScheduledWindowExecution) SetWindowId(v string) *ScheduledWindowExecution {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype SendAutomationSignalInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The unique identifier for an existing Automation execution that you want\n\t// to send the signal to.\n\t//\n\t// AutomationExecutionId is a required field\n\tAutomationExecutionId *string `min:\"36\" type:\"string\" required:\"true\"`\n\n\t// The data sent with the signal. The data schema depends on the type of signal\n\t// used in the request.\n\t//\n\t// For Approve and Reject signal types, the payload is an optional comment that\n\t// you can send with the signal type. For example:\n\t//\n\t// Comment=\"Looks good\"\n\t//\n\t// For StartStep and Resume signal types, you must send the name of the Automation\n\t// step to start or resume as the payload. For example:\n\t//\n\t// StepName=\"step1\"\n\t//\n\t// For the StopStep signal type, you must send the step execution ID as the\n\t// payload. For example:\n\t//\n\t// StepExecutionId=\"97fff367-fc5a-4299-aed8-0123456789ab\"\n\tPayload map[string][]*string `min:\"1\" type:\"map\"`\n\n\t// The type of signal to send to an Automation execution.\n\t//\n\t// SignalType is a required field\n\tSignalType *string `type:\"string\" required:\"true\" enum:\"SignalType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SendAutomationSignalInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SendAutomationSignalInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *SendAutomationSignalInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"SendAutomationSignalInput\"}\n\tif s.AutomationExecutionId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AutomationExecutionId\"))\n\t}\n\tif s.AutomationExecutionId != nil && len(*s.AutomationExecutionId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AutomationExecutionId\", 36))\n\t}\n\tif s.Payload != nil && len(s.Payload) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Payload\", 1))\n\t}\n\tif s.SignalType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SignalType\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAutomationExecutionId sets the AutomationExecutionId field's value.\nfunc (s *SendAutomationSignalInput) SetAutomationExecutionId(v string) *SendAutomationSignalInput {\n\ts.AutomationExecutionId = &v\n\treturn s\n}\n\n// SetPayload sets the Payload field's value.\nfunc (s *SendAutomationSignalInput) SetPayload(v map[string][]*string) *SendAutomationSignalInput {\n\ts.Payload = v\n\treturn s\n}\n\n// SetSignalType sets the SignalType field's value.\nfunc (s *SendAutomationSignalInput) SetSignalType(v string) *SendAutomationSignalInput {\n\ts.SignalType = &v\n\treturn s\n}\n\ntype SendAutomationSignalOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SendAutomationSignalOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SendAutomationSignalOutput) GoString() string {\n\treturn s.String()\n}\n\ntype SendCommandInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The CloudWatch alarm you want to apply to your command.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// Enables Amazon Web Services Systems Manager to send Run Command output to\n\t// Amazon CloudWatch Logs. Run Command is a capability of Amazon Web Services\n\t// Systems Manager.\n\tCloudWatchOutputConfig *CloudWatchOutputConfig `type:\"structure\"`\n\n\t// User-specified information about the command, such as a brief description\n\t// of what the command should do.\n\tComment *string `type:\"string\"`\n\n\t// The Sha256 or Sha1 hash created by the system when the document was created.\n\t//\n\t// Sha1 hashes have been deprecated.\n\tDocumentHash *string `type:\"string\"`\n\n\t// Sha256 or Sha1.\n\t//\n\t// Sha1 hashes have been deprecated.\n\tDocumentHashType *string `type:\"string\" enum:\"DocumentHashType\"`\n\n\t// The name of the Amazon Web Services Systems Manager document (SSM document)\n\t// to run. This can be a public document or a custom document. To run a shared\n\t// document belonging to another account, specify the document Amazon Resource\n\t// Name (ARN). For more information about how to use shared documents, see Using\n\t// shared SSM documents (https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-using-shared.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\t//\n\t// If you specify a document name or ARN that hasn't been shared with your account,\n\t// you receive an InvalidDocument error.\n\t//\n\t// DocumentName is a required field\n\tDocumentName *string `type:\"string\" required:\"true\"`\n\n\t// The SSM document version to use in the request. You can specify $DEFAULT,\n\t// $LATEST, or a specific version number. If you run commands by using the Command\n\t// Line Interface (Amazon Web Services CLI), then you must escape the first\n\t// two options by using a backslash. If you specify a version number, then you\n\t// don't need to use the backslash. For example:\n\t//\n\t// --document-version \"\\$DEFAULT\"\n\t//\n\t// --document-version \"\\$LATEST\"\n\t//\n\t// --document-version \"3\"\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The IDs of the managed nodes where the command should run. Specifying managed\n\t// node IDs is most useful when you are targeting a limited number of managed\n\t// nodes, though you can specify up to 50 IDs.\n\t//\n\t// To target a larger number of managed nodes, or if you prefer not to list\n\t// individual node IDs, we recommend using the Targets option instead. Using\n\t// Targets, which accepts tag key-value pairs to identify the managed nodes\n\t// to send commands to, you can a send command to tens, hundreds, or thousands\n\t// of nodes at once.\n\t//\n\t// For more information about how to use targets, see Using targets and rate\n\t// controls to send commands to a fleet (https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tInstanceIds []*string `type:\"list\"`\n\n\t// (Optional) The maximum number of managed nodes that are allowed to run the\n\t// command at the same time. You can specify a number such as 10 or a percentage\n\t// such as 10%. The default value is 50. For more information about how to use\n\t// MaxConcurrency, see Using concurrency controls (https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html#send-commands-velocity)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The maximum number of errors allowed without the command failing. When the\n\t// command fails one more time beyond the value of MaxErrors, the systems stops\n\t// sending the command to additional targets. You can specify a number like\n\t// 10 or a percentage like 10%. The default value is 0. For more information\n\t// about how to use MaxErrors, see Using error controls (https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html#send-commands-maxerrors)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// Configurations for sending notifications.\n\tNotificationConfig *NotificationConfig `type:\"structure\"`\n\n\t// The name of the S3 bucket where command execution responses should be stored.\n\tOutputS3BucketName *string `min:\"3\" type:\"string\"`\n\n\t// The directory structure within the S3 bucket where the responses should be\n\t// stored.\n\tOutputS3KeyPrefix *string `type:\"string\"`\n\n\t// (Deprecated) You can no longer specify this parameter. The system ignores\n\t// it. Instead, Systems Manager automatically determines the Amazon Web Services\n\t// Region of the S3 bucket.\n\tOutputS3Region *string `min:\"3\" type:\"string\"`\n\n\t// The required and optional parameters specified in the document being run.\n\t//\n\t// Parameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by SendCommandInput's\n\t// String and GoString methods.\n\tParameters map[string][]*string `type:\"map\" sensitive:\"true\"`\n\n\t// The ARN of the Identity and Access Management (IAM) service role to use to\n\t// publish Amazon Simple Notification Service (Amazon SNS) notifications for\n\t// Run Command commands.\n\t//\n\t// This role must provide the sns:Publish permission for your notification topic.\n\t// For information about creating and using this service role, see Monitoring\n\t// Systems Manager status changes using Amazon SNS notifications (https://docs.aws.amazon.com/systems-manager/latest/userguide/monitoring-sns-notifications.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tServiceRoleArn *string `type:\"string\"`\n\n\t// An array of search criteria that targets managed nodes using a Key,Value\n\t// combination that you specify. Specifying targets is most useful when you\n\t// want to send a command to a large number of managed nodes at once. Using\n\t// Targets, which accepts tag key-value pairs to identify managed nodes, you\n\t// can send a command to tens, hundreds, or thousands of nodes at once.\n\t//\n\t// To send a command to a smaller number of managed nodes, you can use the InstanceIds\n\t// option instead.\n\t//\n\t// For more information about how to use targets, see Sending commands to a\n\t// fleet (https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tTargets []*Target `type:\"list\"`\n\n\t// If this time is reached and the command hasn't already started running, it\n\t// won't run.\n\tTimeoutSeconds *int64 `min:\"30\" type:\"integer\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SendCommandInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SendCommandInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *SendCommandInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"SendCommandInput\"}\n\tif s.DocumentName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"DocumentName\"))\n\t}\n\tif s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxConcurrency\", 1))\n\t}\n\tif s.MaxErrors != nil && len(*s.MaxErrors) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxErrors\", 1))\n\t}\n\tif s.OutputS3BucketName != nil && len(*s.OutputS3BucketName) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OutputS3BucketName\", 3))\n\t}\n\tif s.OutputS3Region != nil && len(*s.OutputS3Region) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OutputS3Region\", 3))\n\t}\n\tif s.TimeoutSeconds != nil && *s.TimeoutSeconds < 30 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"TimeoutSeconds\", 30))\n\t}\n\tif s.AlarmConfiguration != nil {\n\t\tif err := s.AlarmConfiguration.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"AlarmConfiguration\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.CloudWatchOutputConfig != nil {\n\t\tif err := s.CloudWatchOutputConfig.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"CloudWatchOutputConfig\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Targets != nil {\n\t\tfor i, v := range s.Targets {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Targets\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *SendCommandInput) SetAlarmConfiguration(v *AlarmConfiguration) *SendCommandInput {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetCloudWatchOutputConfig sets the CloudWatchOutputConfig field's value.\nfunc (s *SendCommandInput) SetCloudWatchOutputConfig(v *CloudWatchOutputConfig) *SendCommandInput {\n\ts.CloudWatchOutputConfig = v\n\treturn s\n}\n\n// SetComment sets the Comment field's value.\nfunc (s *SendCommandInput) SetComment(v string) *SendCommandInput {\n\ts.Comment = &v\n\treturn s\n}\n\n// SetDocumentHash sets the DocumentHash field's value.\nfunc (s *SendCommandInput) SetDocumentHash(v string) *SendCommandInput {\n\ts.DocumentHash = &v\n\treturn s\n}\n\n// SetDocumentHashType sets the DocumentHashType field's value.\nfunc (s *SendCommandInput) SetDocumentHashType(v string) *SendCommandInput {\n\ts.DocumentHashType = &v\n\treturn s\n}\n\n// SetDocumentName sets the DocumentName field's value.\nfunc (s *SendCommandInput) SetDocumentName(v string) *SendCommandInput {\n\ts.DocumentName = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *SendCommandInput) SetDocumentVersion(v string) *SendCommandInput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetInstanceIds sets the InstanceIds field's value.\nfunc (s *SendCommandInput) SetInstanceIds(v []*string) *SendCommandInput {\n\ts.InstanceIds = v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *SendCommandInput) SetMaxConcurrency(v string) *SendCommandInput {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *SendCommandInput) SetMaxErrors(v string) *SendCommandInput {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetNotificationConfig sets the NotificationConfig field's value.\nfunc (s *SendCommandInput) SetNotificationConfig(v *NotificationConfig) *SendCommandInput {\n\ts.NotificationConfig = v\n\treturn s\n}\n\n// SetOutputS3BucketName sets the OutputS3BucketName field's value.\nfunc (s *SendCommandInput) SetOutputS3BucketName(v string) *SendCommandInput {\n\ts.OutputS3BucketName = &v\n\treturn s\n}\n\n// SetOutputS3KeyPrefix sets the OutputS3KeyPrefix field's value.\nfunc (s *SendCommandInput) SetOutputS3KeyPrefix(v string) *SendCommandInput {\n\ts.OutputS3KeyPrefix = &v\n\treturn s\n}\n\n// SetOutputS3Region sets the OutputS3Region field's value.\nfunc (s *SendCommandInput) SetOutputS3Region(v string) *SendCommandInput {\n\ts.OutputS3Region = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *SendCommandInput) SetParameters(v map[string][]*string) *SendCommandInput {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetServiceRoleArn sets the ServiceRoleArn field's value.\nfunc (s *SendCommandInput) SetServiceRoleArn(v string) *SendCommandInput {\n\ts.ServiceRoleArn = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *SendCommandInput) SetTargets(v []*Target) *SendCommandInput {\n\ts.Targets = v\n\treturn s\n}\n\n// SetTimeoutSeconds sets the TimeoutSeconds field's value.\nfunc (s *SendCommandInput) SetTimeoutSeconds(v int64) *SendCommandInput {\n\ts.TimeoutSeconds = &v\n\treturn s\n}\n\ntype SendCommandOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The request as it was received by Systems Manager. Also provides the command\n\t// ID which can be used future references to this request.\n\tCommand *Command `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SendCommandOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SendCommandOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetCommand sets the Command field's value.\nfunc (s *SendCommandOutput) SetCommand(v *Command) *SendCommandOutput {\n\ts.Command = v\n\treturn s\n}\n\n// The service setting data structure.\n//\n// ServiceSetting is an account-level setting for an Amazon Web Services service.\n// This setting defines how a user interacts with or uses a service or a feature\n// of a service. For example, if an Amazon Web Services service charges money\n// to the account based on feature or service usage, then the Amazon Web Services\n// service team might create a default setting of \"false\". This means the user\n// can't use this feature unless they change the setting to \"true\" and intentionally\n// opt in for a paid feature.\n//\n// Services map a SettingId object to a setting value. Amazon Web Services services\n// teams define the default value for a SettingId. You can't create a new SettingId,\n// but you can overwrite the default value if you have the ssm:UpdateServiceSetting\n// permission for the setting. Use the UpdateServiceSetting API operation to\n// change the default setting. Or, use the ResetServiceSetting to change the\n// value back to the original value defined by the Amazon Web Services service\n// team.\ntype ServiceSetting struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ARN of the service setting.\n\tARN *string `type:\"string\"`\n\n\t// The last time the service setting was modified.\n\tLastModifiedDate *time.Time `type:\"timestamp\"`\n\n\t// The ARN of the last modified user. This field is populated only if the setting\n\t// value was overwritten.\n\tLastModifiedUser *string `type:\"string\"`\n\n\t// The ID of the service setting.\n\tSettingId *string `min:\"1\" type:\"string\"`\n\n\t// The value of the service setting.\n\tSettingValue *string `min:\"1\" type:\"string\"`\n\n\t// The status of the service setting. The value can be Default, Customized or\n\t// PendingUpdate.\n\t//\n\t//    * Default: The current setting uses a default value provisioned by the\n\t//    Amazon Web Services service team.\n\t//\n\t//    * Customized: The current setting use a custom value specified by the\n\t//    customer.\n\t//\n\t//    * PendingUpdate: The current setting uses a default or custom value, but\n\t//    a setting change request is pending approval.\n\tStatus *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ServiceSetting) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ServiceSetting) GoString() string {\n\treturn s.String()\n}\n\n// SetARN sets the ARN field's value.\nfunc (s *ServiceSetting) SetARN(v string) *ServiceSetting {\n\ts.ARN = &v\n\treturn s\n}\n\n// SetLastModifiedDate sets the LastModifiedDate field's value.\nfunc (s *ServiceSetting) SetLastModifiedDate(v time.Time) *ServiceSetting {\n\ts.LastModifiedDate = &v\n\treturn s\n}\n\n// SetLastModifiedUser sets the LastModifiedUser field's value.\nfunc (s *ServiceSetting) SetLastModifiedUser(v string) *ServiceSetting {\n\ts.LastModifiedUser = &v\n\treturn s\n}\n\n// SetSettingId sets the SettingId field's value.\nfunc (s *ServiceSetting) SetSettingId(v string) *ServiceSetting {\n\ts.SettingId = &v\n\treturn s\n}\n\n// SetSettingValue sets the SettingValue field's value.\nfunc (s *ServiceSetting) SetSettingValue(v string) *ServiceSetting {\n\ts.SettingValue = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *ServiceSetting) SetStatus(v string) *ServiceSetting {\n\ts.Status = &v\n\treturn s\n}\n\n// The specified service setting wasn't found. Either the service name or the\n// setting hasn't been provisioned by the Amazon Web Services service team.\ntype ServiceSettingNotFound struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ServiceSettingNotFound) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ServiceSettingNotFound) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorServiceSettingNotFound(v protocol.ResponseMetadata) error {\n\treturn &ServiceSettingNotFound{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ServiceSettingNotFound) Code() string {\n\treturn \"ServiceSettingNotFound\"\n}\n\n// Message returns the exception's message.\nfunc (s *ServiceSettingNotFound) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ServiceSettingNotFound) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ServiceSettingNotFound) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ServiceSettingNotFound) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ServiceSettingNotFound) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Information about a Session Manager connection to a managed node.\ntype Session struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Reserved for future use.\n\tDetails *string `min:\"1\" type:\"string\"`\n\n\t// The name of the Session Manager SSM document used to define the parameters\n\t// and plugin settings for the session. For example, SSM-SessionManagerRunShell.\n\tDocumentName *string `type:\"string\"`\n\n\t// The date and time, in ISO-8601 Extended format, when the session was terminated.\n\tEndDate *time.Time `type:\"timestamp\"`\n\n\t// The maximum duration of a session before it terminates.\n\tMaxSessionDuration *string `min:\"1\" type:\"string\"`\n\n\t// Reserved for future use.\n\tOutputUrl *SessionManagerOutputUrl `type:\"structure\"`\n\n\t// The ID of the Amazon Web Services user that started the session.\n\tOwner *string `min:\"1\" type:\"string\"`\n\n\t// The reason for connecting to the instance.\n\tReason *string `min:\"1\" type:\"string\"`\n\n\t// The ID of the session.\n\tSessionId *string `min:\"1\" type:\"string\"`\n\n\t// The date and time, in ISO-8601 Extended format, when the session began.\n\tStartDate *time.Time `type:\"timestamp\"`\n\n\t// The status of the session. For example, \"Connected\" or \"Terminated\".\n\tStatus *string `type:\"string\" enum:\"SessionStatus\"`\n\n\t// The managed node that the Session Manager session connected to.\n\tTarget *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Session) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Session) GoString() string {\n\treturn s.String()\n}\n\n// SetDetails sets the Details field's value.\nfunc (s *Session) SetDetails(v string) *Session {\n\ts.Details = &v\n\treturn s\n}\n\n// SetDocumentName sets the DocumentName field's value.\nfunc (s *Session) SetDocumentName(v string) *Session {\n\ts.DocumentName = &v\n\treturn s\n}\n\n// SetEndDate sets the EndDate field's value.\nfunc (s *Session) SetEndDate(v time.Time) *Session {\n\ts.EndDate = &v\n\treturn s\n}\n\n// SetMaxSessionDuration sets the MaxSessionDuration field's value.\nfunc (s *Session) SetMaxSessionDuration(v string) *Session {\n\ts.MaxSessionDuration = &v\n\treturn s\n}\n\n// SetOutputUrl sets the OutputUrl field's value.\nfunc (s *Session) SetOutputUrl(v *SessionManagerOutputUrl) *Session {\n\ts.OutputUrl = v\n\treturn s\n}\n\n// SetOwner sets the Owner field's value.\nfunc (s *Session) SetOwner(v string) *Session {\n\ts.Owner = &v\n\treturn s\n}\n\n// SetReason sets the Reason field's value.\nfunc (s *Session) SetReason(v string) *Session {\n\ts.Reason = &v\n\treturn s\n}\n\n// SetSessionId sets the SessionId field's value.\nfunc (s *Session) SetSessionId(v string) *Session {\n\ts.SessionId = &v\n\treturn s\n}\n\n// SetStartDate sets the StartDate field's value.\nfunc (s *Session) SetStartDate(v time.Time) *Session {\n\ts.StartDate = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *Session) SetStatus(v string) *Session {\n\ts.Status = &v\n\treturn s\n}\n\n// SetTarget sets the Target field's value.\nfunc (s *Session) SetTarget(v string) *Session {\n\ts.Target = &v\n\treturn s\n}\n\n// Describes a filter for Session Manager information.\ntype SessionFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the filter.\n\t//\n\t// Key is a required field\n\tKey *string `locationName:\"key\" type:\"string\" required:\"true\" enum:\"SessionFilterKey\"`\n\n\t// The filter value. Valid values for each filter key are as follows:\n\t//\n\t//    * InvokedAfter: Specify a timestamp to limit your results. For example,\n\t//    specify 2018-08-29T00:00:00Z to see sessions that started August 29, 2018,\n\t//    and later.\n\t//\n\t//    * InvokedBefore: Specify a timestamp to limit your results. For example,\n\t//    specify 2018-08-29T00:00:00Z to see sessions that started before August\n\t//    29, 2018.\n\t//\n\t//    * Target: Specify a managed node to which session connections have been\n\t//    made.\n\t//\n\t//    * Owner: Specify an Amazon Web Services user to see a list of sessions\n\t//    started by that user.\n\t//\n\t//    * Status: Specify a valid session status to see a list of all sessions\n\t//    with that status. Status values you can specify include: Connected Connecting\n\t//    Disconnected Terminated Terminating Failed\n\t//\n\t//    * SessionId: Specify a session ID to return details about the session.\n\t//\n\t// Value is a required field\n\tValue *string `locationName:\"value\" min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SessionFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SessionFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *SessionFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"SessionFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Value == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Value\"))\n\t}\n\tif s.Value != nil && len(*s.Value) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Value\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *SessionFilter) SetKey(v string) *SessionFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *SessionFilter) SetValue(v string) *SessionFilter {\n\ts.Value = &v\n\treturn s\n}\n\n// Reserved for future use.\ntype SessionManagerOutputUrl struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Reserved for future use.\n\tCloudWatchOutputUrl *string `min:\"1\" type:\"string\"`\n\n\t// Reserved for future use.\n\tS3OutputUrl *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SessionManagerOutputUrl) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SessionManagerOutputUrl) GoString() string {\n\treturn s.String()\n}\n\n// SetCloudWatchOutputUrl sets the CloudWatchOutputUrl field's value.\nfunc (s *SessionManagerOutputUrl) SetCloudWatchOutputUrl(v string) *SessionManagerOutputUrl {\n\ts.CloudWatchOutputUrl = &v\n\treturn s\n}\n\n// SetS3OutputUrl sets the S3OutputUrl field's value.\nfunc (s *SessionManagerOutputUrl) SetS3OutputUrl(v string) *SessionManagerOutputUrl {\n\ts.S3OutputUrl = &v\n\treturn s\n}\n\n// The number of managed nodes found for each patch severity level defined in\n// the request filter.\ntype SeveritySummary struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The total number of resources or compliance items that have a severity level\n\t// of Critical. Critical severity is determined by the organization that published\n\t// the compliance items.\n\tCriticalCount *int64 `type:\"integer\"`\n\n\t// The total number of resources or compliance items that have a severity level\n\t// of high. High severity is determined by the organization that published the\n\t// compliance items.\n\tHighCount *int64 `type:\"integer\"`\n\n\t// The total number of resources or compliance items that have a severity level\n\t// of informational. Informational severity is determined by the organization\n\t// that published the compliance items.\n\tInformationalCount *int64 `type:\"integer\"`\n\n\t// The total number of resources or compliance items that have a severity level\n\t// of low. Low severity is determined by the organization that published the\n\t// compliance items.\n\tLowCount *int64 `type:\"integer\"`\n\n\t// The total number of resources or compliance items that have a severity level\n\t// of medium. Medium severity is determined by the organization that published\n\t// the compliance items.\n\tMediumCount *int64 `type:\"integer\"`\n\n\t// The total number of resources or compliance items that have a severity level\n\t// of unspecified. Unspecified severity is determined by the organization that\n\t// published the compliance items.\n\tUnspecifiedCount *int64 `type:\"integer\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SeveritySummary) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SeveritySummary) GoString() string {\n\treturn s.String()\n}\n\n// SetCriticalCount sets the CriticalCount field's value.\nfunc (s *SeveritySummary) SetCriticalCount(v int64) *SeveritySummary {\n\ts.CriticalCount = &v\n\treturn s\n}\n\n// SetHighCount sets the HighCount field's value.\nfunc (s *SeveritySummary) SetHighCount(v int64) *SeveritySummary {\n\ts.HighCount = &v\n\treturn s\n}\n\n// SetInformationalCount sets the InformationalCount field's value.\nfunc (s *SeveritySummary) SetInformationalCount(v int64) *SeveritySummary {\n\ts.InformationalCount = &v\n\treturn s\n}\n\n// SetLowCount sets the LowCount field's value.\nfunc (s *SeveritySummary) SetLowCount(v int64) *SeveritySummary {\n\ts.LowCount = &v\n\treturn s\n}\n\n// SetMediumCount sets the MediumCount field's value.\nfunc (s *SeveritySummary) SetMediumCount(v int64) *SeveritySummary {\n\ts.MediumCount = &v\n\treturn s\n}\n\n// SetUnspecifiedCount sets the UnspecifiedCount field's value.\nfunc (s *SeveritySummary) SetUnspecifiedCount(v int64) *SeveritySummary {\n\ts.UnspecifiedCount = &v\n\treturn s\n}\n\ntype StartAssociationsOnceInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The association IDs that you want to run immediately and only one time.\n\t//\n\t// AssociationIds is a required field\n\tAssociationIds []*string `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartAssociationsOnceInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartAssociationsOnceInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *StartAssociationsOnceInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"StartAssociationsOnceInput\"}\n\tif s.AssociationIds == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AssociationIds\"))\n\t}\n\tif s.AssociationIds != nil && len(s.AssociationIds) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AssociationIds\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAssociationIds sets the AssociationIds field's value.\nfunc (s *StartAssociationsOnceInput) SetAssociationIds(v []*string) *StartAssociationsOnceInput {\n\ts.AssociationIds = v\n\treturn s\n}\n\ntype StartAssociationsOnceOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartAssociationsOnceOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartAssociationsOnceOutput) GoString() string {\n\treturn s.String()\n}\n\ntype StartAutomationExecutionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The CloudWatch alarm you want to apply to your automation.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// User-provided idempotency token. The token must be unique, is case insensitive,\n\t// enforces the UUID format, and can't be reused.\n\tClientToken *string `min:\"36\" type:\"string\"`\n\n\t// The name of the SSM document to run. This can be a public document or a custom\n\t// document. To run a shared document belonging to another account, specify\n\t// the document ARN. For more information about how to use shared documents,\n\t// see Using shared SSM documents (https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-using-shared.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\t//\n\t// DocumentName is a required field\n\tDocumentName *string `type:\"string\" required:\"true\"`\n\n\t// The version of the Automation runbook to use for this execution.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The maximum number of targets allowed to run this task in parallel. You can\n\t// specify a number, such as 10, or a percentage, such as 10%. The default value\n\t// is 10.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The number of errors that are allowed before the system stops running the\n\t// automation on additional targets. You can specify either an absolute number\n\t// of errors, for example 10, or a percentage of the target set, for example\n\t// 10%. If you specify 3, for example, the system stops running the automation\n\t// when the fourth error is received. If you specify 0, then the system stops\n\t// running the automation on additional targets after the first error result\n\t// is returned. If you run an automation on 50 resources and set max-errors\n\t// to 10%, then the system stops running the automation on additional targets\n\t// when the sixth error is received.\n\t//\n\t// Executions that are already running an automation when max-errors is reached\n\t// are allowed to complete, but some of these executions may fail as well. If\n\t// you need to ensure that there won't be more than max-errors failed executions,\n\t// set max-concurrency to 1 so the executions proceed one at a time.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The execution mode of the automation. Valid modes include the following:\n\t// Auto and Interactive. The default mode is Auto.\n\tMode *string `type:\"string\" enum:\"ExecutionMode\"`\n\n\t// A key-value map of execution parameters, which match the declared parameters\n\t// in the Automation runbook.\n\tParameters map[string][]*string `min:\"1\" type:\"map\"`\n\n\t// Optional metadata that you assign to a resource. You can specify a maximum\n\t// of five tags for an automation. Tags enable you to categorize a resource\n\t// in different ways, such as by purpose, owner, or environment. For example,\n\t// you might want to tag an automation to identify an environment or operating\n\t// system. In this case, you could specify the following key-value pairs:\n\t//\n\t//    * Key=environment,Value=test\n\t//\n\t//    * Key=OS,Value=Windows\n\t//\n\t// To add tags to an existing automation, use the AddTagsToResource operation.\n\tTags []*Tag `type:\"list\"`\n\n\t// A location is a combination of Amazon Web Services Regions and/or Amazon\n\t// Web Services accounts where you want to run the automation. Use this operation\n\t// to start an automation in multiple Amazon Web Services Regions and multiple\n\t// Amazon Web Services accounts. For more information, see Running Automation\n\t// workflows in multiple Amazon Web Services Regions and Amazon Web Services\n\t// accounts (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation-multiple-accounts-and-regions.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tTargetLocations []*TargetLocation `min:\"1\" type:\"list\"`\n\n\t// A key-value mapping of document parameters to target resources. Both Targets\n\t// and TargetMaps can't be specified together.\n\tTargetMaps []map[string][]*string `type:\"list\"`\n\n\t// The name of the parameter used as the target resource for the rate-controlled\n\t// execution. Required if you specify targets.\n\tTargetParameterName *string `min:\"1\" type:\"string\"`\n\n\t// A key-value mapping to target resources. Required if you specify TargetParameterName.\n\tTargets []*Target `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartAutomationExecutionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartAutomationExecutionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *StartAutomationExecutionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"StartAutomationExecutionInput\"}\n\tif s.ClientToken != nil && len(*s.ClientToken) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ClientToken\", 36))\n\t}\n\tif s.DocumentName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"DocumentName\"))\n\t}\n\tif s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxConcurrency\", 1))\n\t}\n\tif s.MaxErrors != nil && len(*s.MaxErrors) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxErrors\", 1))\n\t}\n\tif s.Parameters != nil && len(s.Parameters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Parameters\", 1))\n\t}\n\tif s.TargetLocations != nil && len(s.TargetLocations) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TargetLocations\", 1))\n\t}\n\tif s.TargetParameterName != nil && len(*s.TargetParameterName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TargetParameterName\", 1))\n\t}\n\tif s.AlarmConfiguration != nil {\n\t\tif err := s.AlarmConfiguration.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"AlarmConfiguration\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.TargetLocations != nil {\n\t\tfor i, v := range s.TargetLocations {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"TargetLocations\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Targets != nil {\n\t\tfor i, v := range s.Targets {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Targets\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *StartAutomationExecutionInput) SetAlarmConfiguration(v *AlarmConfiguration) *StartAutomationExecutionInput {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetClientToken sets the ClientToken field's value.\nfunc (s *StartAutomationExecutionInput) SetClientToken(v string) *StartAutomationExecutionInput {\n\ts.ClientToken = &v\n\treturn s\n}\n\n// SetDocumentName sets the DocumentName field's value.\nfunc (s *StartAutomationExecutionInput) SetDocumentName(v string) *StartAutomationExecutionInput {\n\ts.DocumentName = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *StartAutomationExecutionInput) SetDocumentVersion(v string) *StartAutomationExecutionInput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *StartAutomationExecutionInput) SetMaxConcurrency(v string) *StartAutomationExecutionInput {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *StartAutomationExecutionInput) SetMaxErrors(v string) *StartAutomationExecutionInput {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetMode sets the Mode field's value.\nfunc (s *StartAutomationExecutionInput) SetMode(v string) *StartAutomationExecutionInput {\n\ts.Mode = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *StartAutomationExecutionInput) SetParameters(v map[string][]*string) *StartAutomationExecutionInput {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *StartAutomationExecutionInput) SetTags(v []*Tag) *StartAutomationExecutionInput {\n\ts.Tags = v\n\treturn s\n}\n\n// SetTargetLocations sets the TargetLocations field's value.\nfunc (s *StartAutomationExecutionInput) SetTargetLocations(v []*TargetLocation) *StartAutomationExecutionInput {\n\ts.TargetLocations = v\n\treturn s\n}\n\n// SetTargetMaps sets the TargetMaps field's value.\nfunc (s *StartAutomationExecutionInput) SetTargetMaps(v []map[string][]*string) *StartAutomationExecutionInput {\n\ts.TargetMaps = v\n\treturn s\n}\n\n// SetTargetParameterName sets the TargetParameterName field's value.\nfunc (s *StartAutomationExecutionInput) SetTargetParameterName(v string) *StartAutomationExecutionInput {\n\ts.TargetParameterName = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *StartAutomationExecutionInput) SetTargets(v []*Target) *StartAutomationExecutionInput {\n\ts.Targets = v\n\treturn s\n}\n\ntype StartAutomationExecutionOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The unique ID of a newly scheduled automation execution.\n\tAutomationExecutionId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartAutomationExecutionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartAutomationExecutionOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAutomationExecutionId sets the AutomationExecutionId field's value.\nfunc (s *StartAutomationExecutionOutput) SetAutomationExecutionId(v string) *StartAutomationExecutionOutput {\n\ts.AutomationExecutionId = &v\n\treturn s\n}\n\ntype StartChangeRequestExecutionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Indicates whether the change request can be approved automatically without\n\t// the need for manual approvals.\n\t//\n\t// If AutoApprovable is enabled in a change template, then setting AutoApprove\n\t// to true in StartChangeRequestExecution creates a change request that bypasses\n\t// approver review.\n\t//\n\t// Change Calendar restrictions are not bypassed in this scenario. If the state\n\t// of an associated calendar is CLOSED, change freeze approvers must still grant\n\t// permission for this change request to run. If they don't, the change won't\n\t// be processed until the calendar state is again OPEN.\n\tAutoApprove *bool `type:\"boolean\"`\n\n\t// User-provided details about the change. If no details are provided, content\n\t// specified in the Template information section of the associated change template\n\t// is added.\n\tChangeDetails *string `min:\"1\" type:\"string\"`\n\n\t// The name of the change request associated with the runbook workflow to be\n\t// run.\n\tChangeRequestName *string `min:\"1\" type:\"string\"`\n\n\t// The user-provided idempotency token. The token must be unique, is case insensitive,\n\t// enforces the UUID format, and can't be reused.\n\tClientToken *string `min:\"36\" type:\"string\"`\n\n\t// The name of the change template document to run during the runbook workflow.\n\t//\n\t// DocumentName is a required field\n\tDocumentName *string `type:\"string\" required:\"true\"`\n\n\t// The version of the change template document to run during the runbook workflow.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// A key-value map of parameters that match the declared parameters in the change\n\t// template document.\n\tParameters map[string][]*string `min:\"1\" type:\"map\"`\n\n\t// Information about the Automation runbooks that are run during the runbook\n\t// workflow.\n\t//\n\t// The Automation runbooks specified for the runbook workflow can't run until\n\t// all required approvals for the change request have been received.\n\t//\n\t// Runbooks is a required field\n\tRunbooks []*Runbook `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// The time that the requester expects the runbook workflow related to the change\n\t// request to complete. The time is an estimate only that the requester provides\n\t// for reviewers.\n\tScheduledEndTime *time.Time `type:\"timestamp\"`\n\n\t// The date and time specified in the change request to run the Automation runbooks.\n\t//\n\t// The Automation runbooks specified for the runbook workflow can't run until\n\t// all required approvals for the change request have been received.\n\tScheduledTime *time.Time `type:\"timestamp\"`\n\n\t// Optional metadata that you assign to a resource. You can specify a maximum\n\t// of five tags for a change request. Tags enable you to categorize a resource\n\t// in different ways, such as by purpose, owner, or environment. For example,\n\t// you might want to tag a change request to identify an environment or target\n\t// Amazon Web Services Region. In this case, you could specify the following\n\t// key-value pairs:\n\t//\n\t//    * Key=Environment,Value=Production\n\t//\n\t//    * Key=Region,Value=us-east-2\n\tTags []*Tag `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartChangeRequestExecutionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartChangeRequestExecutionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *StartChangeRequestExecutionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"StartChangeRequestExecutionInput\"}\n\tif s.ChangeDetails != nil && len(*s.ChangeDetails) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ChangeDetails\", 1))\n\t}\n\tif s.ChangeRequestName != nil && len(*s.ChangeRequestName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ChangeRequestName\", 1))\n\t}\n\tif s.ClientToken != nil && len(*s.ClientToken) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ClientToken\", 36))\n\t}\n\tif s.DocumentName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"DocumentName\"))\n\t}\n\tif s.Parameters != nil && len(s.Parameters) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Parameters\", 1))\n\t}\n\tif s.Runbooks == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Runbooks\"))\n\t}\n\tif s.Runbooks != nil && len(s.Runbooks) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Runbooks\", 1))\n\t}\n\tif s.Runbooks != nil {\n\t\tfor i, v := range s.Runbooks {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Runbooks\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAutoApprove sets the AutoApprove field's value.\nfunc (s *StartChangeRequestExecutionInput) SetAutoApprove(v bool) *StartChangeRequestExecutionInput {\n\ts.AutoApprove = &v\n\treturn s\n}\n\n// SetChangeDetails sets the ChangeDetails field's value.\nfunc (s *StartChangeRequestExecutionInput) SetChangeDetails(v string) *StartChangeRequestExecutionInput {\n\ts.ChangeDetails = &v\n\treturn s\n}\n\n// SetChangeRequestName sets the ChangeRequestName field's value.\nfunc (s *StartChangeRequestExecutionInput) SetChangeRequestName(v string) *StartChangeRequestExecutionInput {\n\ts.ChangeRequestName = &v\n\treturn s\n}\n\n// SetClientToken sets the ClientToken field's value.\nfunc (s *StartChangeRequestExecutionInput) SetClientToken(v string) *StartChangeRequestExecutionInput {\n\ts.ClientToken = &v\n\treturn s\n}\n\n// SetDocumentName sets the DocumentName field's value.\nfunc (s *StartChangeRequestExecutionInput) SetDocumentName(v string) *StartChangeRequestExecutionInput {\n\ts.DocumentName = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *StartChangeRequestExecutionInput) SetDocumentVersion(v string) *StartChangeRequestExecutionInput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *StartChangeRequestExecutionInput) SetParameters(v map[string][]*string) *StartChangeRequestExecutionInput {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetRunbooks sets the Runbooks field's value.\nfunc (s *StartChangeRequestExecutionInput) SetRunbooks(v []*Runbook) *StartChangeRequestExecutionInput {\n\ts.Runbooks = v\n\treturn s\n}\n\n// SetScheduledEndTime sets the ScheduledEndTime field's value.\nfunc (s *StartChangeRequestExecutionInput) SetScheduledEndTime(v time.Time) *StartChangeRequestExecutionInput {\n\ts.ScheduledEndTime = &v\n\treturn s\n}\n\n// SetScheduledTime sets the ScheduledTime field's value.\nfunc (s *StartChangeRequestExecutionInput) SetScheduledTime(v time.Time) *StartChangeRequestExecutionInput {\n\ts.ScheduledTime = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *StartChangeRequestExecutionInput) SetTags(v []*Tag) *StartChangeRequestExecutionInput {\n\ts.Tags = v\n\treturn s\n}\n\ntype StartChangeRequestExecutionOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The unique ID of a runbook workflow operation. (A runbook workflow is a type\n\t// of Automation operation.)\n\tAutomationExecutionId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartChangeRequestExecutionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartChangeRequestExecutionOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAutomationExecutionId sets the AutomationExecutionId field's value.\nfunc (s *StartChangeRequestExecutionOutput) SetAutomationExecutionId(v string) *StartChangeRequestExecutionOutput {\n\ts.AutomationExecutionId = &v\n\treturn s\n}\n\ntype StartSessionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the SSM document you want to use to define the type of session,\n\t// input parameters, or preferences for the session. For example, SSM-SessionManagerRunShell.\n\t// You can call the GetDocument API to verify the document exists before attempting\n\t// to start a session. If no document name is provided, a shell to the managed\n\t// node is launched by default. For more information, see Start a session (https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tDocumentName *string `type:\"string\"`\n\n\t// The values you want to specify for the parameters defined in the Session\n\t// document.\n\tParameters map[string][]*string `type:\"map\"`\n\n\t// The reason for connecting to the instance. This value is included in the\n\t// details for the Amazon CloudWatch Events event created when you start the\n\t// session.\n\tReason *string `min:\"1\" type:\"string\"`\n\n\t// The managed node to connect to for the session.\n\t//\n\t// Target is a required field\n\tTarget *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartSessionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartSessionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *StartSessionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"StartSessionInput\"}\n\tif s.Reason != nil && len(*s.Reason) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Reason\", 1))\n\t}\n\tif s.Target == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Target\"))\n\t}\n\tif s.Target != nil && len(*s.Target) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Target\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDocumentName sets the DocumentName field's value.\nfunc (s *StartSessionInput) SetDocumentName(v string) *StartSessionInput {\n\ts.DocumentName = &v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *StartSessionInput) SetParameters(v map[string][]*string) *StartSessionInput {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetReason sets the Reason field's value.\nfunc (s *StartSessionInput) SetReason(v string) *StartSessionInput {\n\ts.Reason = &v\n\treturn s\n}\n\n// SetTarget sets the Target field's value.\nfunc (s *StartSessionInput) SetTarget(v string) *StartSessionInput {\n\ts.Target = &v\n\treturn s\n}\n\ntype StartSessionOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the session.\n\tSessionId *string `min:\"1\" type:\"string\"`\n\n\t// A URL back to SSM Agent on the managed node that the Session Manager client\n\t// uses to send commands and receive output from the node. Format: wss://ssmmessages.region.amazonaws.com/v1/data-channel/session-id?stream=(input|output)\n\t//\n\t// region represents the Region identifier for an Amazon Web Services Region\n\t// supported by Amazon Web Services Systems Manager, such as us-east-2 for the\n\t// US East (Ohio) Region. For a list of supported region values, see the Region\n\t// column in Systems Manager service endpoints (https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region)\n\t// in the Amazon Web Services General Reference.\n\t//\n\t// session-id represents the ID of a Session Manager session, such as 1a2b3c4dEXAMPLE.\n\tStreamUrl *string `type:\"string\"`\n\n\t// An encrypted token value containing session and caller information. This\n\t// token is used to authenticate the connection to the managed node, and is\n\t// valid only long enough to ensure the connection is successful. Never share\n\t// your session's token.\n\tTokenValue *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartSessionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartSessionOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetSessionId sets the SessionId field's value.\nfunc (s *StartSessionOutput) SetSessionId(v string) *StartSessionOutput {\n\ts.SessionId = &v\n\treturn s\n}\n\n// SetStreamUrl sets the StreamUrl field's value.\nfunc (s *StartSessionOutput) SetStreamUrl(v string) *StartSessionOutput {\n\ts.StreamUrl = &v\n\treturn s\n}\n\n// SetTokenValue sets the TokenValue field's value.\nfunc (s *StartSessionOutput) SetTokenValue(v string) *StartSessionOutput {\n\ts.TokenValue = &v\n\treturn s\n}\n\n// The updated status is the same as the current status.\ntype StatusUnchanged struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StatusUnchanged) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StatusUnchanged) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorStatusUnchanged(v protocol.ResponseMetadata) error {\n\treturn &StatusUnchanged{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *StatusUnchanged) Code() string {\n\treturn \"StatusUnchanged\"\n}\n\n// Message returns the exception's message.\nfunc (s *StatusUnchanged) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *StatusUnchanged) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *StatusUnchanged) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *StatusUnchanged) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *StatusUnchanged) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Detailed information about an the execution state of an Automation step.\ntype StepExecution struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The action this step performs. The action determines the behavior of the\n\t// step.\n\tAction *string `type:\"string\"`\n\n\t// If a step has finished execution, this contains the time the execution ended.\n\t// If the step hasn't yet concluded, this field isn't populated.\n\tExecutionEndTime *time.Time `type:\"timestamp\"`\n\n\t// If a step has begun execution, this contains the time the step started. If\n\t// the step is in Pending status, this field isn't populated.\n\tExecutionStartTime *time.Time `type:\"timestamp\"`\n\n\t// Information about the Automation failure.\n\tFailureDetails *FailureDetails `type:\"structure\"`\n\n\t// If a step failed, this message explains why the execution failed.\n\tFailureMessage *string `type:\"string\"`\n\n\t// Fully-resolved values passed into the step before execution.\n\tInputs map[string]*string `type:\"map\"`\n\n\t// The flag which can be used to help decide whether the failure of current\n\t// step leads to the Automation failure.\n\tIsCritical *bool `type:\"boolean\"`\n\n\t// The flag which can be used to end automation no matter whether the step succeeds\n\t// or fails.\n\tIsEnd *bool `type:\"boolean\"`\n\n\t// The maximum number of tries to run the action of the step. The default value\n\t// is 1.\n\tMaxAttempts *int64 `type:\"integer\"`\n\n\t// The next step after the step succeeds.\n\tNextStep *string `type:\"string\"`\n\n\t// The action to take if the step fails. The default value is Abort.\n\tOnFailure *string `type:\"string\"`\n\n\t// Returned values from the execution of the step.\n\tOutputs map[string][]*string `min:\"1\" type:\"map\"`\n\n\t// A user-specified list of parameters to override when running a step.\n\tOverriddenParameters map[string][]*string `min:\"1\" type:\"map\"`\n\n\t// Information about the parent step.\n\tParentStepDetails *ParentStepDetails `type:\"structure\"`\n\n\t// A message associated with the response code for an execution.\n\tResponse *string `type:\"string\"`\n\n\t// The response code returned by the execution of the step.\n\tResponseCode *string `type:\"string\"`\n\n\t// The unique ID of a step execution.\n\tStepExecutionId *string `type:\"string\"`\n\n\t// The name of this execution step.\n\tStepName *string `type:\"string\"`\n\n\t// The execution status for this step.\n\tStepStatus *string `type:\"string\" enum:\"AutomationExecutionStatus\"`\n\n\t// The combination of Amazon Web Services Regions and Amazon Web Services accounts\n\t// targeted by the current Automation execution.\n\tTargetLocation *TargetLocation `type:\"structure\"`\n\n\t// The targets for the step execution.\n\tTargets []*Target `type:\"list\"`\n\n\t// The timeout seconds of the step.\n\tTimeoutSeconds *int64 `type:\"long\"`\n\n\t// The CloudWatch alarms that were invoked by the automation.\n\tTriggeredAlarms []*AlarmStateInformation `min:\"1\" type:\"list\"`\n\n\t// Strategies used when step fails, we support Continue and Abort. Abort will\n\t// fail the automation when the step fails. Continue will ignore the failure\n\t// of current step and allow automation to run the next step. With conditional\n\t// branching, we add step:stepName to support the automation to go to another\n\t// specific step.\n\tValidNextSteps []*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StepExecution) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StepExecution) GoString() string {\n\treturn s.String()\n}\n\n// SetAction sets the Action field's value.\nfunc (s *StepExecution) SetAction(v string) *StepExecution {\n\ts.Action = &v\n\treturn s\n}\n\n// SetExecutionEndTime sets the ExecutionEndTime field's value.\nfunc (s *StepExecution) SetExecutionEndTime(v time.Time) *StepExecution {\n\ts.ExecutionEndTime = &v\n\treturn s\n}\n\n// SetExecutionStartTime sets the ExecutionStartTime field's value.\nfunc (s *StepExecution) SetExecutionStartTime(v time.Time) *StepExecution {\n\ts.ExecutionStartTime = &v\n\treturn s\n}\n\n// SetFailureDetails sets the FailureDetails field's value.\nfunc (s *StepExecution) SetFailureDetails(v *FailureDetails) *StepExecution {\n\ts.FailureDetails = v\n\treturn s\n}\n\n// SetFailureMessage sets the FailureMessage field's value.\nfunc (s *StepExecution) SetFailureMessage(v string) *StepExecution {\n\ts.FailureMessage = &v\n\treturn s\n}\n\n// SetInputs sets the Inputs field's value.\nfunc (s *StepExecution) SetInputs(v map[string]*string) *StepExecution {\n\ts.Inputs = v\n\treturn s\n}\n\n// SetIsCritical sets the IsCritical field's value.\nfunc (s *StepExecution) SetIsCritical(v bool) *StepExecution {\n\ts.IsCritical = &v\n\treturn s\n}\n\n// SetIsEnd sets the IsEnd field's value.\nfunc (s *StepExecution) SetIsEnd(v bool) *StepExecution {\n\ts.IsEnd = &v\n\treturn s\n}\n\n// SetMaxAttempts sets the MaxAttempts field's value.\nfunc (s *StepExecution) SetMaxAttempts(v int64) *StepExecution {\n\ts.MaxAttempts = &v\n\treturn s\n}\n\n// SetNextStep sets the NextStep field's value.\nfunc (s *StepExecution) SetNextStep(v string) *StepExecution {\n\ts.NextStep = &v\n\treturn s\n}\n\n// SetOnFailure sets the OnFailure field's value.\nfunc (s *StepExecution) SetOnFailure(v string) *StepExecution {\n\ts.OnFailure = &v\n\treturn s\n}\n\n// SetOutputs sets the Outputs field's value.\nfunc (s *StepExecution) SetOutputs(v map[string][]*string) *StepExecution {\n\ts.Outputs = v\n\treturn s\n}\n\n// SetOverriddenParameters sets the OverriddenParameters field's value.\nfunc (s *StepExecution) SetOverriddenParameters(v map[string][]*string) *StepExecution {\n\ts.OverriddenParameters = v\n\treturn s\n}\n\n// SetParentStepDetails sets the ParentStepDetails field's value.\nfunc (s *StepExecution) SetParentStepDetails(v *ParentStepDetails) *StepExecution {\n\ts.ParentStepDetails = v\n\treturn s\n}\n\n// SetResponse sets the Response field's value.\nfunc (s *StepExecution) SetResponse(v string) *StepExecution {\n\ts.Response = &v\n\treturn s\n}\n\n// SetResponseCode sets the ResponseCode field's value.\nfunc (s *StepExecution) SetResponseCode(v string) *StepExecution {\n\ts.ResponseCode = &v\n\treturn s\n}\n\n// SetStepExecutionId sets the StepExecutionId field's value.\nfunc (s *StepExecution) SetStepExecutionId(v string) *StepExecution {\n\ts.StepExecutionId = &v\n\treturn s\n}\n\n// SetStepName sets the StepName field's value.\nfunc (s *StepExecution) SetStepName(v string) *StepExecution {\n\ts.StepName = &v\n\treturn s\n}\n\n// SetStepStatus sets the StepStatus field's value.\nfunc (s *StepExecution) SetStepStatus(v string) *StepExecution {\n\ts.StepStatus = &v\n\treturn s\n}\n\n// SetTargetLocation sets the TargetLocation field's value.\nfunc (s *StepExecution) SetTargetLocation(v *TargetLocation) *StepExecution {\n\ts.TargetLocation = v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *StepExecution) SetTargets(v []*Target) *StepExecution {\n\ts.Targets = v\n\treturn s\n}\n\n// SetTimeoutSeconds sets the TimeoutSeconds field's value.\nfunc (s *StepExecution) SetTimeoutSeconds(v int64) *StepExecution {\n\ts.TimeoutSeconds = &v\n\treturn s\n}\n\n// SetTriggeredAlarms sets the TriggeredAlarms field's value.\nfunc (s *StepExecution) SetTriggeredAlarms(v []*AlarmStateInformation) *StepExecution {\n\ts.TriggeredAlarms = v\n\treturn s\n}\n\n// SetValidNextSteps sets the ValidNextSteps field's value.\nfunc (s *StepExecution) SetValidNextSteps(v []*string) *StepExecution {\n\ts.ValidNextSteps = v\n\treturn s\n}\n\n// A filter to limit the amount of step execution information returned by the\n// call.\ntype StepExecutionFilter struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more keys to limit the results.\n\t//\n\t// Key is a required field\n\tKey *string `type:\"string\" required:\"true\" enum:\"StepExecutionFilterKey\"`\n\n\t// The values of the filter key.\n\t//\n\t// Values is a required field\n\tValues []*string `min:\"1\" type:\"list\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StepExecutionFilter) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StepExecutionFilter) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *StepExecutionFilter) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"StepExecutionFilter\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Values == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Values\"))\n\t}\n\tif s.Values != nil && len(s.Values) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Values\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *StepExecutionFilter) SetKey(v string) *StepExecutionFilter {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *StepExecutionFilter) SetValues(v []*string) *StepExecutionFilter {\n\ts.Values = v\n\treturn s\n}\n\ntype StopAutomationExecutionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The execution ID of the Automation to stop.\n\t//\n\t// AutomationExecutionId is a required field\n\tAutomationExecutionId *string `min:\"36\" type:\"string\" required:\"true\"`\n\n\t// The stop request type. Valid types include the following: Cancel and Complete.\n\t// The default type is Cancel.\n\tType *string `type:\"string\" enum:\"StopType\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StopAutomationExecutionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StopAutomationExecutionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *StopAutomationExecutionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"StopAutomationExecutionInput\"}\n\tif s.AutomationExecutionId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AutomationExecutionId\"))\n\t}\n\tif s.AutomationExecutionId != nil && len(*s.AutomationExecutionId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AutomationExecutionId\", 36))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAutomationExecutionId sets the AutomationExecutionId field's value.\nfunc (s *StopAutomationExecutionInput) SetAutomationExecutionId(v string) *StopAutomationExecutionInput {\n\ts.AutomationExecutionId = &v\n\treturn s\n}\n\n// SetType sets the Type field's value.\nfunc (s *StopAutomationExecutionInput) SetType(v string) *StopAutomationExecutionInput {\n\ts.Type = &v\n\treturn s\n}\n\ntype StopAutomationExecutionOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StopAutomationExecutionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StopAutomationExecutionOutput) GoString() string {\n\treturn s.String()\n}\n\n// The sub-type count exceeded the limit for the inventory type.\ntype SubTypeCountLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SubTypeCountLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SubTypeCountLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorSubTypeCountLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &SubTypeCountLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *SubTypeCountLimitExceededException) Code() string {\n\treturn \"SubTypeCountLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *SubTypeCountLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *SubTypeCountLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *SubTypeCountLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *SubTypeCountLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *SubTypeCountLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Metadata that you assign to your Amazon Web Services resources. Tags enable\n// you to categorize your resources in different ways, for example, by purpose,\n// owner, or environment. In Amazon Web Services Systems Manager, you can apply\n// tags to Systems Manager documents (SSM documents), managed nodes, maintenance\n// windows, parameters, patch baselines, OpsItems, and OpsMetadata.\ntype Tag struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the tag.\n\t//\n\t// Key is a required field\n\tKey *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The value of the tag.\n\t//\n\t// Value is a required field\n\tValue *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Tag) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Tag) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *Tag) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"Tag\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\tif s.Value == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Value\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *Tag) SetKey(v string) *Tag {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *Tag) SetValue(v string) *Tag {\n\ts.Value = &v\n\treturn s\n}\n\n// An array of search criteria that targets managed nodes using a key-value\n// pair that you specify.\n//\n// One or more targets must be specified for maintenance window Run Command-type\n// tasks. Depending on the task, targets are optional for other maintenance\n// window task types (Automation, Lambda, and Step Functions). For more information\n// about running tasks that don't specify targets, see Registering maintenance\n// window tasks without targets (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html)\n// in the Amazon Web Services Systems Manager User Guide.\n//\n// Supported formats include the following.\n//\n//   - Key=InstanceIds,Values=<instance-id-1>,<instance-id-2>,<instance-id-3>\n//\n//   - Key=tag:<my-tag-key>,Values=<my-tag-value-1>,<my-tag-value-2>\n//\n//   - Key=tag-key,Values=<my-tag-key-1>,<my-tag-key-2>\n//\n//   - Run Command and Maintenance window targets only: Key=resource-groups:Name,Values=<resource-group-name>\n//\n//   - Maintenance window targets only: Key=resource-groups:ResourceTypeFilters,Values=<resource-type-1>,<resource-type-2>\n//\n//   - Automation targets only: Key=ResourceGroup;Values=<resource-group-name>\n//\n// For example:\n//\n//   - Key=InstanceIds,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE,i-07782c72faEXAMPLE\n//\n//   - Key=tag:CostCenter,Values=CostCenter1,CostCenter2,CostCenter3\n//\n//   - Key=tag-key,Values=Name,Instance-Type,CostCenter\n//\n//   - Run Command and Maintenance window targets only: Key=resource-groups:Name,Values=ProductionResourceGroup\n//     This example demonstrates how to target all resources in the resource\n//     group ProductionResourceGroup in your maintenance window.\n//\n//   - Maintenance window targets only: Key=resource-groups:ResourceTypeFilters,Values=AWS::EC2::INSTANCE,AWS::EC2::VPC\n//     This example demonstrates how to target only Amazon Elastic Compute Cloud\n//     (Amazon EC2) instances and VPCs in your maintenance window.\n//\n//   - Automation targets only: Key=ResourceGroup,Values=MyResourceGroup\n//\n//   - State Manager association targets only: Key=InstanceIds,Values=* This\n//     example demonstrates how to target all managed instances in the Amazon\n//     Web Services Region where the association was created.\n//\n// For more information about how to send commands that target managed nodes\n// using Key,Value parameters, see Targeting multiple instances (https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html#send-commands-targeting)\n// in the Amazon Web Services Systems Manager User Guide.\ntype Target struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// User-defined criteria for sending commands that target managed nodes that\n\t// meet the criteria.\n\tKey *string `min:\"1\" type:\"string\"`\n\n\t// User-defined criteria that maps to Key. For example, if you specified tag:ServerRole,\n\t// you could specify value:WebServer to run a command on instances that include\n\t// EC2 tags of ServerRole,WebServer.\n\t//\n\t// Depending on the type of target, the maximum number of values for a key might\n\t// be lower than the global maximum of 50.\n\tValues []*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Target) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Target) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *Target) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"Target\"}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *Target) SetKey(v string) *Target {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValues sets the Values field's value.\nfunc (s *Target) SetValues(v []*string) *Target {\n\ts.Values = v\n\treturn s\n}\n\n// You specified the Safe option for the DeregisterTargetFromMaintenanceWindow\n// operation, but the target is still referenced in a task.\ntype TargetInUseException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TargetInUseException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TargetInUseException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorTargetInUseException(v protocol.ResponseMetadata) error {\n\treturn &TargetInUseException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *TargetInUseException) Code() string {\n\treturn \"TargetInUseException\"\n}\n\n// Message returns the exception's message.\nfunc (s *TargetInUseException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *TargetInUseException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *TargetInUseException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *TargetInUseException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *TargetInUseException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The combination of Amazon Web Services Regions and Amazon Web Services accounts\n// targeted by the current Automation execution.\ntype TargetLocation struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Web Services accounts targeted by the current Automation execution.\n\tAccounts []*string `min:\"1\" type:\"list\"`\n\n\t// The Automation execution role used by the currently running Automation. If\n\t// not specified, the default value is AWS-SystemsManager-AutomationExecutionRole.\n\tExecutionRoleName *string `min:\"1\" type:\"string\"`\n\n\t// The Amazon Web Services Regions targeted by the current Automation execution.\n\tRegions []*string `min:\"1\" type:\"list\"`\n\n\t// The details for the CloudWatch alarm you want to apply to an automation or\n\t// command.\n\tTargetLocationAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// The maximum number of Amazon Web Services Regions and Amazon Web Services\n\t// accounts allowed to run the Automation concurrently.\n\tTargetLocationMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The maximum number of errors allowed before the system stops queueing additional\n\t// Automation executions for the currently running Automation.\n\tTargetLocationMaxErrors *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TargetLocation) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TargetLocation) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *TargetLocation) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"TargetLocation\"}\n\tif s.Accounts != nil && len(s.Accounts) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Accounts\", 1))\n\t}\n\tif s.ExecutionRoleName != nil && len(*s.ExecutionRoleName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ExecutionRoleName\", 1))\n\t}\n\tif s.Regions != nil && len(s.Regions) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Regions\", 1))\n\t}\n\tif s.TargetLocationMaxConcurrency != nil && len(*s.TargetLocationMaxConcurrency) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TargetLocationMaxConcurrency\", 1))\n\t}\n\tif s.TargetLocationMaxErrors != nil && len(*s.TargetLocationMaxErrors) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TargetLocationMaxErrors\", 1))\n\t}\n\tif s.TargetLocationAlarmConfiguration != nil {\n\t\tif err := s.TargetLocationAlarmConfiguration.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"TargetLocationAlarmConfiguration\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAccounts sets the Accounts field's value.\nfunc (s *TargetLocation) SetAccounts(v []*string) *TargetLocation {\n\ts.Accounts = v\n\treturn s\n}\n\n// SetExecutionRoleName sets the ExecutionRoleName field's value.\nfunc (s *TargetLocation) SetExecutionRoleName(v string) *TargetLocation {\n\ts.ExecutionRoleName = &v\n\treturn s\n}\n\n// SetRegions sets the Regions field's value.\nfunc (s *TargetLocation) SetRegions(v []*string) *TargetLocation {\n\ts.Regions = v\n\treturn s\n}\n\n// SetTargetLocationAlarmConfiguration sets the TargetLocationAlarmConfiguration field's value.\nfunc (s *TargetLocation) SetTargetLocationAlarmConfiguration(v *AlarmConfiguration) *TargetLocation {\n\ts.TargetLocationAlarmConfiguration = v\n\treturn s\n}\n\n// SetTargetLocationMaxConcurrency sets the TargetLocationMaxConcurrency field's value.\nfunc (s *TargetLocation) SetTargetLocationMaxConcurrency(v string) *TargetLocation {\n\ts.TargetLocationMaxConcurrency = &v\n\treturn s\n}\n\n// SetTargetLocationMaxErrors sets the TargetLocationMaxErrors field's value.\nfunc (s *TargetLocation) SetTargetLocationMaxErrors(v string) *TargetLocation {\n\ts.TargetLocationMaxErrors = &v\n\treturn s\n}\n\n// The specified target managed node for the session isn't fully configured\n// for use with Session Manager. For more information, see Getting started with\n// Session Manager (https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html)\n// in the Amazon Web Services Systems Manager User Guide. This error is also\n// returned if you attempt to start a session on a managed node that is located\n// in a different account or Region\ntype TargetNotConnected struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TargetNotConnected) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TargetNotConnected) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorTargetNotConnected(v protocol.ResponseMetadata) error {\n\treturn &TargetNotConnected{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *TargetNotConnected) Code() string {\n\treturn \"TargetNotConnected\"\n}\n\n// Message returns the exception's message.\nfunc (s *TargetNotConnected) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *TargetNotConnected) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *TargetNotConnected) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *TargetNotConnected) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *TargetNotConnected) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype TerminateSessionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the session to terminate.\n\t//\n\t// SessionId is a required field\n\tSessionId *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TerminateSessionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TerminateSessionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *TerminateSessionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"TerminateSessionInput\"}\n\tif s.SessionId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SessionId\"))\n\t}\n\tif s.SessionId != nil && len(*s.SessionId) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SessionId\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetSessionId sets the SessionId field's value.\nfunc (s *TerminateSessionInput) SetSessionId(v string) *TerminateSessionInput {\n\ts.SessionId = &v\n\treturn s\n}\n\ntype TerminateSessionOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ID of the session that has been terminated.\n\tSessionId *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TerminateSessionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TerminateSessionOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetSessionId sets the SessionId field's value.\nfunc (s *TerminateSessionOutput) SetSessionId(v string) *TerminateSessionOutput {\n\ts.SessionId = &v\n\treturn s\n}\n\n// The Targets parameter includes too many tags. Remove one or more tags and\n// try the command again.\ntype TooManyTagsError struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TooManyTagsError) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TooManyTagsError) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorTooManyTagsError(v protocol.ResponseMetadata) error {\n\treturn &TooManyTagsError{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *TooManyTagsError) Code() string {\n\treturn \"TooManyTagsError\"\n}\n\n// Message returns the exception's message.\nfunc (s *TooManyTagsError) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *TooManyTagsError) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *TooManyTagsError) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *TooManyTagsError) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *TooManyTagsError) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// There are concurrent updates for a resource that supports one update at a\n// time.\ntype TooManyUpdates struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TooManyUpdates) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TooManyUpdates) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorTooManyUpdates(v protocol.ResponseMetadata) error {\n\treturn &TooManyUpdates{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *TooManyUpdates) Code() string {\n\treturn \"TooManyUpdates\"\n}\n\n// Message returns the exception's message.\nfunc (s *TooManyUpdates) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *TooManyUpdates) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *TooManyUpdates) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *TooManyUpdates) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *TooManyUpdates) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The size of inventory data has exceeded the total size limit for the resource.\ntype TotalSizeLimitExceededException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TotalSizeLimitExceededException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TotalSizeLimitExceededException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorTotalSizeLimitExceededException(v protocol.ResponseMetadata) error {\n\treturn &TotalSizeLimitExceededException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *TotalSizeLimitExceededException) Code() string {\n\treturn \"TotalSizeLimitExceededException\"\n}\n\n// Message returns the exception's message.\nfunc (s *TotalSizeLimitExceededException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *TotalSizeLimitExceededException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *TotalSizeLimitExceededException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *TotalSizeLimitExceededException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *TotalSizeLimitExceededException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype UnlabelParameterVersionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// One or more labels to delete from the specified parameter version.\n\t//\n\t// Labels is a required field\n\tLabels []*string `min:\"1\" type:\"list\" required:\"true\"`\n\n\t// The name of the parameter from which you want to delete one or more labels.\n\t//\n\t// Name is a required field\n\tName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The specific version of the parameter which you want to delete one or more\n\t// labels from. If it isn't present, the call will fail.\n\t//\n\t// ParameterVersion is a required field\n\tParameterVersion *int64 `type:\"long\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnlabelParameterVersionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnlabelParameterVersionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UnlabelParameterVersionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UnlabelParameterVersionInput\"}\n\tif s.Labels == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Labels\"))\n\t}\n\tif s.Labels != nil && len(s.Labels) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Labels\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Name != nil && len(*s.Name) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 1))\n\t}\n\tif s.ParameterVersion == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ParameterVersion\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetLabels sets the Labels field's value.\nfunc (s *UnlabelParameterVersionInput) SetLabels(v []*string) *UnlabelParameterVersionInput {\n\ts.Labels = v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UnlabelParameterVersionInput) SetName(v string) *UnlabelParameterVersionInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetParameterVersion sets the ParameterVersion field's value.\nfunc (s *UnlabelParameterVersionInput) SetParameterVersion(v int64) *UnlabelParameterVersionInput {\n\ts.ParameterVersion = &v\n\treturn s\n}\n\ntype UnlabelParameterVersionOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The labels that aren't attached to the given parameter version.\n\tInvalidLabels []*string `min:\"1\" type:\"list\"`\n\n\t// A list of all labels deleted from the parameter.\n\tRemovedLabels []*string `min:\"1\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnlabelParameterVersionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnlabelParameterVersionOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetInvalidLabels sets the InvalidLabels field's value.\nfunc (s *UnlabelParameterVersionOutput) SetInvalidLabels(v []*string) *UnlabelParameterVersionOutput {\n\ts.InvalidLabels = v\n\treturn s\n}\n\n// SetRemovedLabels sets the RemovedLabels field's value.\nfunc (s *UnlabelParameterVersionOutput) SetRemovedLabels(v []*string) *UnlabelParameterVersionOutput {\n\ts.RemovedLabels = v\n\treturn s\n}\n\n// The calendar entry contained in the specified SSM document isn't supported.\ntype UnsupportedCalendarException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedCalendarException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedCalendarException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorUnsupportedCalendarException(v protocol.ResponseMetadata) error {\n\treturn &UnsupportedCalendarException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *UnsupportedCalendarException) Code() string {\n\treturn \"UnsupportedCalendarException\"\n}\n\n// Message returns the exception's message.\nfunc (s *UnsupportedCalendarException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *UnsupportedCalendarException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *UnsupportedCalendarException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *UnsupportedCalendarException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *UnsupportedCalendarException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Patching for applications released by Microsoft is only available on EC2\n// instances and advanced instances. To patch applications released by Microsoft\n// on on-premises servers and VMs, you must enable advanced instances. For more\n// information, see Enabling the advanced-instances tier (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances-advanced.html)\n// in the Amazon Web Services Systems Manager User Guide.\ntype UnsupportedFeatureRequiredException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedFeatureRequiredException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedFeatureRequiredException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorUnsupportedFeatureRequiredException(v protocol.ResponseMetadata) error {\n\treturn &UnsupportedFeatureRequiredException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *UnsupportedFeatureRequiredException) Code() string {\n\treturn \"UnsupportedFeatureRequiredException\"\n}\n\n// Message returns the exception's message.\nfunc (s *UnsupportedFeatureRequiredException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *UnsupportedFeatureRequiredException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *UnsupportedFeatureRequiredException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *UnsupportedFeatureRequiredException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *UnsupportedFeatureRequiredException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The Context attribute that you specified for the InventoryItem isn't allowed\n// for this inventory type. You can only use the Context attribute with inventory\n// types like AWS:ComplianceItem.\ntype UnsupportedInventoryItemContextException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n\n\tTypeName *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedInventoryItemContextException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedInventoryItemContextException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorUnsupportedInventoryItemContextException(v protocol.ResponseMetadata) error {\n\treturn &UnsupportedInventoryItemContextException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *UnsupportedInventoryItemContextException) Code() string {\n\treturn \"UnsupportedInventoryItemContextException\"\n}\n\n// Message returns the exception's message.\nfunc (s *UnsupportedInventoryItemContextException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *UnsupportedInventoryItemContextException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *UnsupportedInventoryItemContextException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *UnsupportedInventoryItemContextException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *UnsupportedInventoryItemContextException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Inventory item type schema version has to match supported versions in the\n// service. Check output of GetInventorySchema to see the available schema version\n// for each type.\ntype UnsupportedInventorySchemaVersionException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedInventorySchemaVersionException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedInventorySchemaVersionException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorUnsupportedInventorySchemaVersionException(v protocol.ResponseMetadata) error {\n\treturn &UnsupportedInventorySchemaVersionException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *UnsupportedInventorySchemaVersionException) Code() string {\n\treturn \"UnsupportedInventorySchemaVersionException\"\n}\n\n// Message returns the exception's message.\nfunc (s *UnsupportedInventorySchemaVersionException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *UnsupportedInventorySchemaVersionException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *UnsupportedInventorySchemaVersionException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *UnsupportedInventorySchemaVersionException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *UnsupportedInventorySchemaVersionException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The operating systems you specified isn't supported, or the operation isn't\n// supported for the operating system.\ntype UnsupportedOperatingSystem struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedOperatingSystem) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedOperatingSystem) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorUnsupportedOperatingSystem(v protocol.ResponseMetadata) error {\n\treturn &UnsupportedOperatingSystem{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *UnsupportedOperatingSystem) Code() string {\n\treturn \"UnsupportedOperatingSystem\"\n}\n\n// Message returns the exception's message.\nfunc (s *UnsupportedOperatingSystem) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *UnsupportedOperatingSystem) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *UnsupportedOperatingSystem) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *UnsupportedOperatingSystem) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *UnsupportedOperatingSystem) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The parameter type isn't supported.\ntype UnsupportedParameterType struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedParameterType) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedParameterType) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorUnsupportedParameterType(v protocol.ResponseMetadata) error {\n\treturn &UnsupportedParameterType{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *UnsupportedParameterType) Code() string {\n\treturn \"UnsupportedParameterType\"\n}\n\n// Message returns the exception's message.\nfunc (s *UnsupportedParameterType) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *UnsupportedParameterType) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *UnsupportedParameterType) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *UnsupportedParameterType) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *UnsupportedParameterType) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// The document doesn't support the platform type of the given managed node\n// ID(s). For example, you sent an document for a Windows managed node to a\n// Linux node.\ntype UnsupportedPlatformType struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"Message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedPlatformType) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedPlatformType) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorUnsupportedPlatformType(v protocol.ResponseMetadata) error {\n\treturn &UnsupportedPlatformType{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *UnsupportedPlatformType) Code() string {\n\treturn \"UnsupportedPlatformType\"\n}\n\n// Message returns the exception's message.\nfunc (s *UnsupportedPlatformType) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *UnsupportedPlatformType) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *UnsupportedPlatformType) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *UnsupportedPlatformType) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *UnsupportedPlatformType) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype UpdateAssociationInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The details for the CloudWatch alarm you want to apply to an automation or\n\t// command.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// By default, when you update an association, the system runs it immediately\n\t// after it is updated and then according to the schedule you specified. Specify\n\t// this option if you don't want an association to run immediately after you\n\t// update it. This parameter isn't supported for rate expressions.\n\t//\n\t// If you chose this option when you created an association and later you edit\n\t// that association or you make changes to the SSM document on which that association\n\t// is based (by using the Documents page in the console), State Manager applies\n\t// the association at the next specified cron interval. For example, if you\n\t// chose the Latest version of an SSM document when you created an association\n\t// and you edit the association by choosing a different document version on\n\t// the Documents page, State Manager applies the association at the next specified\n\t// cron interval if you previously selected this option. If this option wasn't\n\t// selected, State Manager immediately runs the association.\n\t//\n\t// You can reset this option. To do so, specify the no-apply-only-at-cron-interval\n\t// parameter when you update the association from the command line. This parameter\n\t// forces the association to run immediately after updating it and according\n\t// to the interval specified.\n\tApplyOnlyAtCronInterval *bool `type:\"boolean\"`\n\n\t// The ID of the association you want to update.\n\t//\n\t// AssociationId is a required field\n\tAssociationId *string `type:\"string\" required:\"true\"`\n\n\t// The name of the association that you want to update.\n\tAssociationName *string `type:\"string\"`\n\n\t// This parameter is provided for concurrency control purposes. You must specify\n\t// the latest association version in the service. If you want to ensure that\n\t// this request succeeds, either specify $LATEST, or omit this parameter.\n\tAssociationVersion *string `type:\"string\"`\n\n\t// Choose the parameter that will define how your automation will branch out.\n\t// This target is required for associations that use an Automation runbook and\n\t// target resources by using rate controls. Automation is a capability of Amazon\n\t// Web Services Systems Manager.\n\tAutomationTargetParameterName *string `min:\"1\" type:\"string\"`\n\n\t// The names or Amazon Resource Names (ARNs) of the Change Calendar type documents\n\t// you want to gate your associations under. The associations only run when\n\t// that change calendar is open. For more information, see Amazon Web Services\n\t// Systems Manager Change Calendar (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar).\n\tCalendarNames []*string `type:\"list\"`\n\n\t// The severity level to assign to the association.\n\tComplianceSeverity *string `type:\"string\" enum:\"AssociationComplianceSeverity\"`\n\n\t// The document version you want update for the association.\n\t//\n\t// State Manager doesn't support running associations that use a new version\n\t// of a document if that document is shared from another account. State Manager\n\t// always runs the default version of a document if shared from another account,\n\t// even though the Systems Manager console shows that a new version was processed.\n\t// If you want to run an association using a new version of a document shared\n\t// form another account, you must set the document version to default.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The maximum number of targets allowed to run the association at the same\n\t// time. You can specify a number, for example 10, or a percentage of the target\n\t// set, for example 10%. The default value is 100%, which means all targets\n\t// run the association at the same time.\n\t//\n\t// If a new managed node starts and attempts to run an association while Systems\n\t// Manager is running MaxConcurrency associations, the association is allowed\n\t// to run. During the next association interval, the new managed node will process\n\t// its association within the limit specified for MaxConcurrency.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The number of errors that are allowed before the system stops sending requests\n\t// to run the association on additional targets. You can specify either an absolute\n\t// number of errors, for example 10, or a percentage of the target set, for\n\t// example 10%. If you specify 3, for example, the system stops sending requests\n\t// when the fourth error is received. If you specify 0, then the system stops\n\t// sending requests after the first error is returned. If you run an association\n\t// on 50 managed nodes and set MaxError to 10%, then the system stops sending\n\t// the request when the sixth error is received.\n\t//\n\t// Executions that are already running an association when MaxErrors is reached\n\t// are allowed to complete, but some of these executions may fail as well. If\n\t// you need to ensure that there won't be more than max-errors failed executions,\n\t// set MaxConcurrency to 1 so that executions proceed one at a time.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The name of the SSM Command document or Automation runbook that contains\n\t// the configuration information for the managed node.\n\t//\n\t// You can specify Amazon Web Services-predefined documents, documents you created,\n\t// or a document that is shared with you from another account.\n\t//\n\t// For Systems Manager document (SSM document) that are shared with you from\n\t// other Amazon Web Services accounts, you must specify the complete SSM document\n\t// ARN, in the following format:\n\t//\n\t// arn:aws:ssm:region:account-id:document/document-name\n\t//\n\t// For example:\n\t//\n\t// arn:aws:ssm:us-east-2:12345678912:document/My-Shared-Document\n\t//\n\t// For Amazon Web Services-predefined documents and SSM documents you created\n\t// in your account, you only need to specify the document name. For example,\n\t// AWS-ApplyPatchBaseline or My-Document.\n\tName *string `type:\"string\"`\n\n\t// An S3 bucket where you want to store the results of this request.\n\tOutputLocation *InstanceAssociationOutputLocation `type:\"structure\"`\n\n\t// The parameters you want to update for the association. If you create a parameter\n\t// using Parameter Store, a capability of Amazon Web Services Systems Manager,\n\t// you can reference the parameter using {{ssm:parameter-name}}.\n\t//\n\t// Parameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by UpdateAssociationInput's\n\t// String and GoString methods.\n\tParameters map[string][]*string `type:\"map\" sensitive:\"true\"`\n\n\t// The cron expression used to schedule the association that you want to update.\n\tScheduleExpression *string `min:\"1\" type:\"string\"`\n\n\t// Number of days to wait after the scheduled day to run an association. For\n\t// example, if you specified a cron schedule of cron(0 0 ? * THU#2 *), you could\n\t// specify an offset of 3 to run the association each Sunday after the second\n\t// Thursday of the month. For more information about cron schedules for associations,\n\t// see Reference: Cron and rate expressions for Systems Manager (https://docs.aws.amazon.com/systems-manager/latest/userguide/reference-cron-and-rate-expressions.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\t//\n\t// To use offsets, you must specify the ApplyOnlyAtCronInterval parameter. This\n\t// option tells the system not to run an association immediately after you create\n\t// it.\n\tScheduleOffset *int64 `min:\"1\" type:\"integer\"`\n\n\t// The mode for generating association compliance. You can specify AUTO or MANUAL.\n\t// In AUTO mode, the system uses the status of the association execution to\n\t// determine the compliance status. If the association execution runs successfully,\n\t// then the association is COMPLIANT. If the association execution doesn't run\n\t// successfully, the association is NON-COMPLIANT.\n\t//\n\t// In MANUAL mode, you must specify the AssociationId as a parameter for the\n\t// PutComplianceItems API operation. In this case, compliance data isn't managed\n\t// by State Manager, a capability of Amazon Web Services Systems Manager. It\n\t// is managed by your direct call to the PutComplianceItems API operation.\n\t//\n\t// By default, all associations use AUTO mode.\n\tSyncCompliance *string `type:\"string\" enum:\"AssociationSyncCompliance\"`\n\n\t// A location is a combination of Amazon Web Services Regions and Amazon Web\n\t// Services accounts where you want to run the association. Use this action\n\t// to update an association in multiple Regions and multiple accounts.\n\tTargetLocations []*TargetLocation `min:\"1\" type:\"list\"`\n\n\t// A key-value mapping of document parameters to target resources. Both Targets\n\t// and TargetMaps can't be specified together.\n\tTargetMaps []map[string][]*string `type:\"list\"`\n\n\t// The targets of the association.\n\tTargets []*Target `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateAssociationInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateAssociationInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateAssociationInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateAssociationInput\"}\n\tif s.AssociationId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AssociationId\"))\n\t}\n\tif s.AutomationTargetParameterName != nil && len(*s.AutomationTargetParameterName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AutomationTargetParameterName\", 1))\n\t}\n\tif s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxConcurrency\", 1))\n\t}\n\tif s.MaxErrors != nil && len(*s.MaxErrors) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxErrors\", 1))\n\t}\n\tif s.ScheduleExpression != nil && len(*s.ScheduleExpression) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ScheduleExpression\", 1))\n\t}\n\tif s.ScheduleOffset != nil && *s.ScheduleOffset < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"ScheduleOffset\", 1))\n\t}\n\tif s.TargetLocations != nil && len(s.TargetLocations) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TargetLocations\", 1))\n\t}\n\tif s.AlarmConfiguration != nil {\n\t\tif err := s.AlarmConfiguration.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"AlarmConfiguration\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.OutputLocation != nil {\n\t\tif err := s.OutputLocation.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"OutputLocation\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.TargetLocations != nil {\n\t\tfor i, v := range s.TargetLocations {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"TargetLocations\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Targets != nil {\n\t\tfor i, v := range s.Targets {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Targets\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *UpdateAssociationInput) SetAlarmConfiguration(v *AlarmConfiguration) *UpdateAssociationInput {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetApplyOnlyAtCronInterval sets the ApplyOnlyAtCronInterval field's value.\nfunc (s *UpdateAssociationInput) SetApplyOnlyAtCronInterval(v bool) *UpdateAssociationInput {\n\ts.ApplyOnlyAtCronInterval = &v\n\treturn s\n}\n\n// SetAssociationId sets the AssociationId field's value.\nfunc (s *UpdateAssociationInput) SetAssociationId(v string) *UpdateAssociationInput {\n\ts.AssociationId = &v\n\treturn s\n}\n\n// SetAssociationName sets the AssociationName field's value.\nfunc (s *UpdateAssociationInput) SetAssociationName(v string) *UpdateAssociationInput {\n\ts.AssociationName = &v\n\treturn s\n}\n\n// SetAssociationVersion sets the AssociationVersion field's value.\nfunc (s *UpdateAssociationInput) SetAssociationVersion(v string) *UpdateAssociationInput {\n\ts.AssociationVersion = &v\n\treturn s\n}\n\n// SetAutomationTargetParameterName sets the AutomationTargetParameterName field's value.\nfunc (s *UpdateAssociationInput) SetAutomationTargetParameterName(v string) *UpdateAssociationInput {\n\ts.AutomationTargetParameterName = &v\n\treturn s\n}\n\n// SetCalendarNames sets the CalendarNames field's value.\nfunc (s *UpdateAssociationInput) SetCalendarNames(v []*string) *UpdateAssociationInput {\n\ts.CalendarNames = v\n\treturn s\n}\n\n// SetComplianceSeverity sets the ComplianceSeverity field's value.\nfunc (s *UpdateAssociationInput) SetComplianceSeverity(v string) *UpdateAssociationInput {\n\ts.ComplianceSeverity = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *UpdateAssociationInput) SetDocumentVersion(v string) *UpdateAssociationInput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *UpdateAssociationInput) SetMaxConcurrency(v string) *UpdateAssociationInput {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *UpdateAssociationInput) SetMaxErrors(v string) *UpdateAssociationInput {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UpdateAssociationInput) SetName(v string) *UpdateAssociationInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOutputLocation sets the OutputLocation field's value.\nfunc (s *UpdateAssociationInput) SetOutputLocation(v *InstanceAssociationOutputLocation) *UpdateAssociationInput {\n\ts.OutputLocation = v\n\treturn s\n}\n\n// SetParameters sets the Parameters field's value.\nfunc (s *UpdateAssociationInput) SetParameters(v map[string][]*string) *UpdateAssociationInput {\n\ts.Parameters = v\n\treturn s\n}\n\n// SetScheduleExpression sets the ScheduleExpression field's value.\nfunc (s *UpdateAssociationInput) SetScheduleExpression(v string) *UpdateAssociationInput {\n\ts.ScheduleExpression = &v\n\treturn s\n}\n\n// SetScheduleOffset sets the ScheduleOffset field's value.\nfunc (s *UpdateAssociationInput) SetScheduleOffset(v int64) *UpdateAssociationInput {\n\ts.ScheduleOffset = &v\n\treturn s\n}\n\n// SetSyncCompliance sets the SyncCompliance field's value.\nfunc (s *UpdateAssociationInput) SetSyncCompliance(v string) *UpdateAssociationInput {\n\ts.SyncCompliance = &v\n\treturn s\n}\n\n// SetTargetLocations sets the TargetLocations field's value.\nfunc (s *UpdateAssociationInput) SetTargetLocations(v []*TargetLocation) *UpdateAssociationInput {\n\ts.TargetLocations = v\n\treturn s\n}\n\n// SetTargetMaps sets the TargetMaps field's value.\nfunc (s *UpdateAssociationInput) SetTargetMaps(v []map[string][]*string) *UpdateAssociationInput {\n\ts.TargetMaps = v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *UpdateAssociationInput) SetTargets(v []*Target) *UpdateAssociationInput {\n\ts.Targets = v\n\treturn s\n}\n\ntype UpdateAssociationOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The description of the association that was updated.\n\tAssociationDescription *AssociationDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateAssociationOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateAssociationOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationDescription sets the AssociationDescription field's value.\nfunc (s *UpdateAssociationOutput) SetAssociationDescription(v *AssociationDescription) *UpdateAssociationOutput {\n\ts.AssociationDescription = v\n\treturn s\n}\n\ntype UpdateAssociationStatusInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The association status.\n\t//\n\t// AssociationStatus is a required field\n\tAssociationStatus *AssociationStatus `type:\"structure\" required:\"true\"`\n\n\t// The managed node ID.\n\t//\n\t// InstanceId is a required field\n\tInstanceId *string `type:\"string\" required:\"true\"`\n\n\t// The name of the SSM document.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateAssociationStatusInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateAssociationStatusInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateAssociationStatusInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateAssociationStatusInput\"}\n\tif s.AssociationStatus == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AssociationStatus\"))\n\t}\n\tif s.InstanceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"InstanceId\"))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.AssociationStatus != nil {\n\t\tif err := s.AssociationStatus.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"AssociationStatus\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAssociationStatus sets the AssociationStatus field's value.\nfunc (s *UpdateAssociationStatusInput) SetAssociationStatus(v *AssociationStatus) *UpdateAssociationStatusInput {\n\ts.AssociationStatus = v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *UpdateAssociationStatusInput) SetInstanceId(v string) *UpdateAssociationStatusInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UpdateAssociationStatusInput) SetName(v string) *UpdateAssociationStatusInput {\n\ts.Name = &v\n\treturn s\n}\n\ntype UpdateAssociationStatusOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Information about the association.\n\tAssociationDescription *AssociationDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateAssociationStatusOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateAssociationStatusOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssociationDescription sets the AssociationDescription field's value.\nfunc (s *UpdateAssociationStatusOutput) SetAssociationDescription(v *AssociationDescription) *UpdateAssociationStatusOutput {\n\ts.AssociationDescription = v\n\treturn s\n}\n\ntype UpdateDocumentDefaultVersionInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The version of a custom document that you want to set as the default version.\n\t//\n\t// DocumentVersion is a required field\n\tDocumentVersion *string `type:\"string\" required:\"true\"`\n\n\t// The name of a custom document that you want to set as the default version.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateDocumentDefaultVersionInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateDocumentDefaultVersionInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateDocumentDefaultVersionInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateDocumentDefaultVersionInput\"}\n\tif s.DocumentVersion == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"DocumentVersion\"))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *UpdateDocumentDefaultVersionInput) SetDocumentVersion(v string) *UpdateDocumentDefaultVersionInput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UpdateDocumentDefaultVersionInput) SetName(v string) *UpdateDocumentDefaultVersionInput {\n\ts.Name = &v\n\treturn s\n}\n\ntype UpdateDocumentDefaultVersionOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The description of a custom document that you want to set as the default\n\t// version.\n\tDescription *DocumentDefaultVersionDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateDocumentDefaultVersionOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateDocumentDefaultVersionOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *UpdateDocumentDefaultVersionOutput) SetDescription(v *DocumentDefaultVersionDescription) *UpdateDocumentDefaultVersionOutput {\n\ts.Description = v\n\treturn s\n}\n\ntype UpdateDocumentInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A list of key-value pairs that describe attachments to a version of a document.\n\tAttachments []*AttachmentsSource `type:\"list\"`\n\n\t// A valid JSON or YAML string.\n\t//\n\t// Content is a required field\n\tContent *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The friendly name of the SSM document that you want to update. This value\n\t// can differ for each version of the document. If you don't specify a value\n\t// for this parameter in your request, the existing value is applied to the\n\t// new document version.\n\tDisplayName *string `type:\"string\"`\n\n\t// Specify the document format for the new document version. Systems Manager\n\t// supports JSON and YAML documents. JSON is the default format.\n\tDocumentFormat *string `type:\"string\" enum:\"DocumentFormat\"`\n\n\t// The version of the document that you want to update. Currently, Systems Manager\n\t// supports updating only the latest version of the document. You can specify\n\t// the version number of the latest version or use the $LATEST variable.\n\t//\n\t// If you change a document version for a State Manager association, Systems\n\t// Manager immediately runs the association unless you previously specifed the\n\t// apply-only-at-cron-interval parameter.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The name of the SSM document that you want to update.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n\n\t// Specify a new target type for the document.\n\tTargetType *string `type:\"string\"`\n\n\t// An optional field specifying the version of the artifact you are updating\n\t// with the document. For example, \"Release 12, Update 6\". This value is unique\n\t// across all versions of a document, and can't be changed.\n\tVersionName *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateDocumentInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateDocumentInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateDocumentInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateDocumentInput\"}\n\tif s.Content == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Content\"))\n\t}\n\tif s.Content != nil && len(*s.Content) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Content\", 1))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Attachments != nil {\n\t\tfor i, v := range s.Attachments {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Attachments\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAttachments sets the Attachments field's value.\nfunc (s *UpdateDocumentInput) SetAttachments(v []*AttachmentsSource) *UpdateDocumentInput {\n\ts.Attachments = v\n\treturn s\n}\n\n// SetContent sets the Content field's value.\nfunc (s *UpdateDocumentInput) SetContent(v string) *UpdateDocumentInput {\n\ts.Content = &v\n\treturn s\n}\n\n// SetDisplayName sets the DisplayName field's value.\nfunc (s *UpdateDocumentInput) SetDisplayName(v string) *UpdateDocumentInput {\n\ts.DisplayName = &v\n\treturn s\n}\n\n// SetDocumentFormat sets the DocumentFormat field's value.\nfunc (s *UpdateDocumentInput) SetDocumentFormat(v string) *UpdateDocumentInput {\n\ts.DocumentFormat = &v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *UpdateDocumentInput) SetDocumentVersion(v string) *UpdateDocumentInput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UpdateDocumentInput) SetName(v string) *UpdateDocumentInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetTargetType sets the TargetType field's value.\nfunc (s *UpdateDocumentInput) SetTargetType(v string) *UpdateDocumentInput {\n\ts.TargetType = &v\n\treturn s\n}\n\n// SetVersionName sets the VersionName field's value.\nfunc (s *UpdateDocumentInput) SetVersionName(v string) *UpdateDocumentInput {\n\ts.VersionName = &v\n\treturn s\n}\n\ntype UpdateDocumentMetadataInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The change template review details to update.\n\t//\n\t// DocumentReviews is a required field\n\tDocumentReviews *DocumentReviews `type:\"structure\" required:\"true\"`\n\n\t// The version of a change template in which to update approval metadata.\n\tDocumentVersion *string `type:\"string\"`\n\n\t// The name of the change template for which a version's metadata is to be updated.\n\t//\n\t// Name is a required field\n\tName *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateDocumentMetadataInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateDocumentMetadataInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateDocumentMetadataInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateDocumentMetadataInput\"}\n\tif s.DocumentReviews == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"DocumentReviews\"))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.DocumentReviews != nil {\n\t\tif err := s.DocumentReviews.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"DocumentReviews\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDocumentReviews sets the DocumentReviews field's value.\nfunc (s *UpdateDocumentMetadataInput) SetDocumentReviews(v *DocumentReviews) *UpdateDocumentMetadataInput {\n\ts.DocumentReviews = v\n\treturn s\n}\n\n// SetDocumentVersion sets the DocumentVersion field's value.\nfunc (s *UpdateDocumentMetadataInput) SetDocumentVersion(v string) *UpdateDocumentMetadataInput {\n\ts.DocumentVersion = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UpdateDocumentMetadataInput) SetName(v string) *UpdateDocumentMetadataInput {\n\ts.Name = &v\n\treturn s\n}\n\ntype UpdateDocumentMetadataOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateDocumentMetadataOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateDocumentMetadataOutput) GoString() string {\n\treturn s.String()\n}\n\ntype UpdateDocumentOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A description of the document that was updated.\n\tDocumentDescription *DocumentDescription `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateDocumentOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateDocumentOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetDocumentDescription sets the DocumentDescription field's value.\nfunc (s *UpdateDocumentOutput) SetDocumentDescription(v *DocumentDescription) *UpdateDocumentOutput {\n\ts.DocumentDescription = v\n\treturn s\n}\n\ntype UpdateMaintenanceWindowInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Whether targets must be registered with the maintenance window before tasks\n\t// can be defined for those targets.\n\tAllowUnassociatedTargets *bool `type:\"boolean\"`\n\n\t// The number of hours before the end of the maintenance window that Amazon\n\t// Web Services Systems Manager stops scheduling new tasks for execution.\n\tCutoff *int64 `type:\"integer\"`\n\n\t// An optional description for the update request.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by UpdateMaintenanceWindowInput's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The duration of the maintenance window in hours.\n\tDuration *int64 `min:\"1\" type:\"integer\"`\n\n\t// Whether the maintenance window is enabled.\n\tEnabled *bool `type:\"boolean\"`\n\n\t// The date and time, in ISO-8601 Extended format, for when you want the maintenance\n\t// window to become inactive. EndDate allows you to set a date and time in the\n\t// future when the maintenance window will no longer run.\n\tEndDate *string `type:\"string\"`\n\n\t// The name of the maintenance window.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// If True, then all fields that are required by the CreateMaintenanceWindow\n\t// operation are also required for this API request. Optional fields that aren't\n\t// specified are set to null.\n\tReplace *bool `type:\"boolean\"`\n\n\t// The schedule of the maintenance window in the form of a cron or rate expression.\n\tSchedule *string `min:\"1\" type:\"string\"`\n\n\t// The number of days to wait after the date and time specified by a cron expression\n\t// before running the maintenance window.\n\t//\n\t// For example, the following cron expression schedules a maintenance window\n\t// to run the third Tuesday of every month at 11:30 PM.\n\t//\n\t// cron(30 23 ? * TUE#3 *)\n\t//\n\t// If the schedule offset is 2, the maintenance window won't run until two days\n\t// later.\n\tScheduleOffset *int64 `min:\"1\" type:\"integer\"`\n\n\t// The time zone that the scheduled maintenance window executions are based\n\t// on, in Internet Assigned Numbers Authority (IANA) format. For example: \"America/Los_Angeles\",\n\t// \"UTC\", or \"Asia/Seoul\". For more information, see the Time Zone Database\n\t// (https://www.iana.org/time-zones) on the IANA website.\n\tScheduleTimezone *string `type:\"string\"`\n\n\t// The date and time, in ISO-8601 Extended format, for when you want the maintenance\n\t// window to become active. StartDate allows you to delay activation of the\n\t// maintenance window until the specified future date.\n\tStartDate *string `type:\"string\"`\n\n\t// The ID of the maintenance window to update.\n\t//\n\t// WindowId is a required field\n\tWindowId *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateMaintenanceWindowInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateMaintenanceWindowInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateMaintenanceWindowInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateMaintenanceWindowInput\"}\n\tif s.Description != nil && len(*s.Description) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Description\", 1))\n\t}\n\tif s.Duration != nil && *s.Duration < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"Duration\", 1))\n\t}\n\tif s.Name != nil && len(*s.Name) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 3))\n\t}\n\tif s.Schedule != nil && len(*s.Schedule) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Schedule\", 1))\n\t}\n\tif s.ScheduleOffset != nil && *s.ScheduleOffset < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"ScheduleOffset\", 1))\n\t}\n\tif s.WindowId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowId\"))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAllowUnassociatedTargets sets the AllowUnassociatedTargets field's value.\nfunc (s *UpdateMaintenanceWindowInput) SetAllowUnassociatedTargets(v bool) *UpdateMaintenanceWindowInput {\n\ts.AllowUnassociatedTargets = &v\n\treturn s\n}\n\n// SetCutoff sets the Cutoff field's value.\nfunc (s *UpdateMaintenanceWindowInput) SetCutoff(v int64) *UpdateMaintenanceWindowInput {\n\ts.Cutoff = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *UpdateMaintenanceWindowInput) SetDescription(v string) *UpdateMaintenanceWindowInput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetDuration sets the Duration field's value.\nfunc (s *UpdateMaintenanceWindowInput) SetDuration(v int64) *UpdateMaintenanceWindowInput {\n\ts.Duration = &v\n\treturn s\n}\n\n// SetEnabled sets the Enabled field's value.\nfunc (s *UpdateMaintenanceWindowInput) SetEnabled(v bool) *UpdateMaintenanceWindowInput {\n\ts.Enabled = &v\n\treturn s\n}\n\n// SetEndDate sets the EndDate field's value.\nfunc (s *UpdateMaintenanceWindowInput) SetEndDate(v string) *UpdateMaintenanceWindowInput {\n\ts.EndDate = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UpdateMaintenanceWindowInput) SetName(v string) *UpdateMaintenanceWindowInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetReplace sets the Replace field's value.\nfunc (s *UpdateMaintenanceWindowInput) SetReplace(v bool) *UpdateMaintenanceWindowInput {\n\ts.Replace = &v\n\treturn s\n}\n\n// SetSchedule sets the Schedule field's value.\nfunc (s *UpdateMaintenanceWindowInput) SetSchedule(v string) *UpdateMaintenanceWindowInput {\n\ts.Schedule = &v\n\treturn s\n}\n\n// SetScheduleOffset sets the ScheduleOffset field's value.\nfunc (s *UpdateMaintenanceWindowInput) SetScheduleOffset(v int64) *UpdateMaintenanceWindowInput {\n\ts.ScheduleOffset = &v\n\treturn s\n}\n\n// SetScheduleTimezone sets the ScheduleTimezone field's value.\nfunc (s *UpdateMaintenanceWindowInput) SetScheduleTimezone(v string) *UpdateMaintenanceWindowInput {\n\ts.ScheduleTimezone = &v\n\treturn s\n}\n\n// SetStartDate sets the StartDate field's value.\nfunc (s *UpdateMaintenanceWindowInput) SetStartDate(v string) *UpdateMaintenanceWindowInput {\n\ts.StartDate = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *UpdateMaintenanceWindowInput) SetWindowId(v string) *UpdateMaintenanceWindowInput {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype UpdateMaintenanceWindowOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Whether targets must be registered with the maintenance window before tasks\n\t// can be defined for those targets.\n\tAllowUnassociatedTargets *bool `type:\"boolean\"`\n\n\t// The number of hours before the end of the maintenance window that Amazon\n\t// Web Services Systems Manager stops scheduling new tasks for execution.\n\tCutoff *int64 `type:\"integer\"`\n\n\t// An optional description of the update.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by UpdateMaintenanceWindowOutput's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The duration of the maintenance window in hours.\n\tDuration *int64 `min:\"1\" type:\"integer\"`\n\n\t// Whether the maintenance window is enabled.\n\tEnabled *bool `type:\"boolean\"`\n\n\t// The date and time, in ISO-8601 Extended format, for when the maintenance\n\t// window is scheduled to become inactive. The maintenance window won't run\n\t// after this specified time.\n\tEndDate *string `type:\"string\"`\n\n\t// The name of the maintenance window.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// The schedule of the maintenance window in the form of a cron or rate expression.\n\tSchedule *string `min:\"1\" type:\"string\"`\n\n\t// The number of days to wait to run a maintenance window after the scheduled\n\t// cron expression date and time.\n\tScheduleOffset *int64 `min:\"1\" type:\"integer\"`\n\n\t// The time zone that the scheduled maintenance window executions are based\n\t// on, in Internet Assigned Numbers Authority (IANA) format. For example: \"America/Los_Angeles\",\n\t// \"UTC\", or \"Asia/Seoul\". For more information, see the Time Zone Database\n\t// (https://www.iana.org/time-zones) on the IANA website.\n\tScheduleTimezone *string `type:\"string\"`\n\n\t// The date and time, in ISO-8601 Extended format, for when the maintenance\n\t// window is scheduled to become active. The maintenance window won't run before\n\t// this specified time.\n\tStartDate *string `type:\"string\"`\n\n\t// The ID of the created maintenance window.\n\tWindowId *string `min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateMaintenanceWindowOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateMaintenanceWindowOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAllowUnassociatedTargets sets the AllowUnassociatedTargets field's value.\nfunc (s *UpdateMaintenanceWindowOutput) SetAllowUnassociatedTargets(v bool) *UpdateMaintenanceWindowOutput {\n\ts.AllowUnassociatedTargets = &v\n\treturn s\n}\n\n// SetCutoff sets the Cutoff field's value.\nfunc (s *UpdateMaintenanceWindowOutput) SetCutoff(v int64) *UpdateMaintenanceWindowOutput {\n\ts.Cutoff = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *UpdateMaintenanceWindowOutput) SetDescription(v string) *UpdateMaintenanceWindowOutput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetDuration sets the Duration field's value.\nfunc (s *UpdateMaintenanceWindowOutput) SetDuration(v int64) *UpdateMaintenanceWindowOutput {\n\ts.Duration = &v\n\treturn s\n}\n\n// SetEnabled sets the Enabled field's value.\nfunc (s *UpdateMaintenanceWindowOutput) SetEnabled(v bool) *UpdateMaintenanceWindowOutput {\n\ts.Enabled = &v\n\treturn s\n}\n\n// SetEndDate sets the EndDate field's value.\nfunc (s *UpdateMaintenanceWindowOutput) SetEndDate(v string) *UpdateMaintenanceWindowOutput {\n\ts.EndDate = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UpdateMaintenanceWindowOutput) SetName(v string) *UpdateMaintenanceWindowOutput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetSchedule sets the Schedule field's value.\nfunc (s *UpdateMaintenanceWindowOutput) SetSchedule(v string) *UpdateMaintenanceWindowOutput {\n\ts.Schedule = &v\n\treturn s\n}\n\n// SetScheduleOffset sets the ScheduleOffset field's value.\nfunc (s *UpdateMaintenanceWindowOutput) SetScheduleOffset(v int64) *UpdateMaintenanceWindowOutput {\n\ts.ScheduleOffset = &v\n\treturn s\n}\n\n// SetScheduleTimezone sets the ScheduleTimezone field's value.\nfunc (s *UpdateMaintenanceWindowOutput) SetScheduleTimezone(v string) *UpdateMaintenanceWindowOutput {\n\ts.ScheduleTimezone = &v\n\treturn s\n}\n\n// SetStartDate sets the StartDate field's value.\nfunc (s *UpdateMaintenanceWindowOutput) SetStartDate(v string) *UpdateMaintenanceWindowOutput {\n\ts.StartDate = &v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *UpdateMaintenanceWindowOutput) SetWindowId(v string) *UpdateMaintenanceWindowOutput {\n\ts.WindowId = &v\n\treturn s\n}\n\ntype UpdateMaintenanceWindowTargetInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// An optional description for the update.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by UpdateMaintenanceWindowTargetInput's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// A name for the update.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// User-provided value that will be included in any Amazon CloudWatch Events\n\t// events raised while running tasks for these targets in this maintenance window.\n\t//\n\t// OwnerInformation is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by UpdateMaintenanceWindowTargetInput's\n\t// String and GoString methods.\n\tOwnerInformation *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// If True, then all fields that are required by the RegisterTargetWithMaintenanceWindow\n\t// operation are also required for this API request. Optional fields that aren't\n\t// specified are set to null.\n\tReplace *bool `type:\"boolean\"`\n\n\t// The targets to add or replace.\n\tTargets []*Target `type:\"list\"`\n\n\t// The maintenance window ID with which to modify the target.\n\t//\n\t// WindowId is a required field\n\tWindowId *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// The target ID to modify.\n\t//\n\t// WindowTargetId is a required field\n\tWindowTargetId *string `min:\"36\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateMaintenanceWindowTargetInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateMaintenanceWindowTargetInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateMaintenanceWindowTargetInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateMaintenanceWindowTargetInput\"}\n\tif s.Description != nil && len(*s.Description) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Description\", 1))\n\t}\n\tif s.Name != nil && len(*s.Name) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 3))\n\t}\n\tif s.OwnerInformation != nil && len(*s.OwnerInformation) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OwnerInformation\", 1))\n\t}\n\tif s.WindowId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowId\"))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\tif s.WindowTargetId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowTargetId\"))\n\t}\n\tif s.WindowTargetId != nil && len(*s.WindowTargetId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowTargetId\", 36))\n\t}\n\tif s.Targets != nil {\n\t\tfor i, v := range s.Targets {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Targets\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *UpdateMaintenanceWindowTargetInput) SetDescription(v string) *UpdateMaintenanceWindowTargetInput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UpdateMaintenanceWindowTargetInput) SetName(v string) *UpdateMaintenanceWindowTargetInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOwnerInformation sets the OwnerInformation field's value.\nfunc (s *UpdateMaintenanceWindowTargetInput) SetOwnerInformation(v string) *UpdateMaintenanceWindowTargetInput {\n\ts.OwnerInformation = &v\n\treturn s\n}\n\n// SetReplace sets the Replace field's value.\nfunc (s *UpdateMaintenanceWindowTargetInput) SetReplace(v bool) *UpdateMaintenanceWindowTargetInput {\n\ts.Replace = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *UpdateMaintenanceWindowTargetInput) SetTargets(v []*Target) *UpdateMaintenanceWindowTargetInput {\n\ts.Targets = v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *UpdateMaintenanceWindowTargetInput) SetWindowId(v string) *UpdateMaintenanceWindowTargetInput {\n\ts.WindowId = &v\n\treturn s\n}\n\n// SetWindowTargetId sets the WindowTargetId field's value.\nfunc (s *UpdateMaintenanceWindowTargetInput) SetWindowTargetId(v string) *UpdateMaintenanceWindowTargetInput {\n\ts.WindowTargetId = &v\n\treturn s\n}\n\ntype UpdateMaintenanceWindowTargetOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The updated description.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by UpdateMaintenanceWindowTargetOutput's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The updated name.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// The updated owner.\n\t//\n\t// OwnerInformation is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by UpdateMaintenanceWindowTargetOutput's\n\t// String and GoString methods.\n\tOwnerInformation *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The updated targets.\n\tTargets []*Target `type:\"list\"`\n\n\t// The maintenance window ID specified in the update request.\n\tWindowId *string `min:\"20\" type:\"string\"`\n\n\t// The target ID specified in the update request.\n\tWindowTargetId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateMaintenanceWindowTargetOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateMaintenanceWindowTargetOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *UpdateMaintenanceWindowTargetOutput) SetDescription(v string) *UpdateMaintenanceWindowTargetOutput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UpdateMaintenanceWindowTargetOutput) SetName(v string) *UpdateMaintenanceWindowTargetOutput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOwnerInformation sets the OwnerInformation field's value.\nfunc (s *UpdateMaintenanceWindowTargetOutput) SetOwnerInformation(v string) *UpdateMaintenanceWindowTargetOutput {\n\ts.OwnerInformation = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *UpdateMaintenanceWindowTargetOutput) SetTargets(v []*Target) *UpdateMaintenanceWindowTargetOutput {\n\ts.Targets = v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *UpdateMaintenanceWindowTargetOutput) SetWindowId(v string) *UpdateMaintenanceWindowTargetOutput {\n\ts.WindowId = &v\n\treturn s\n}\n\n// SetWindowTargetId sets the WindowTargetId field's value.\nfunc (s *UpdateMaintenanceWindowTargetOutput) SetWindowTargetId(v string) *UpdateMaintenanceWindowTargetOutput {\n\ts.WindowTargetId = &v\n\treturn s\n}\n\ntype UpdateMaintenanceWindowTaskInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The CloudWatch alarm you want to apply to your maintenance window task.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// Indicates whether tasks should continue to run after the cutoff time specified\n\t// in the maintenance windows is reached.\n\t//\n\t//    * CONTINUE_TASK: When the cutoff time is reached, any tasks that are running\n\t//    continue. The default value.\n\t//\n\t//    * CANCEL_TASK: For Automation, Lambda, Step Functions tasks: When the\n\t//    cutoff time is reached, any task invocations that are already running\n\t//    continue, but no new task invocations are started. For Run Command tasks:\n\t//    When the cutoff time is reached, the system sends a CancelCommand operation\n\t//    that attempts to cancel the command associated with the task. However,\n\t//    there is no guarantee that the command will be terminated and the underlying\n\t//    process stopped. The status for tasks that are not completed is TIMED_OUT.\n\tCutoffBehavior *string `type:\"string\" enum:\"MaintenanceWindowTaskCutoffBehavior\"`\n\n\t// The new task description to specify.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by UpdateMaintenanceWindowTaskInput's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The new logging location in Amazon S3 to specify.\n\t//\n\t// LoggingInfo has been deprecated. To specify an Amazon Simple Storage Service\n\t// (Amazon S3) bucket to contain logs, instead use the OutputS3BucketName and\n\t// OutputS3KeyPrefix options in the TaskInvocationParameters structure. For\n\t// information about how Amazon Web Services Systems Manager handles these options\n\t// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n\tLoggingInfo *LoggingInfo `type:\"structure\"`\n\n\t// The new MaxConcurrency value you want to specify. MaxConcurrency is the number\n\t// of targets that are allowed to run this task, in parallel.\n\t//\n\t// Although this element is listed as \"Required: No\", a value can be omitted\n\t// only when you are registering or updating a targetless task (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html)\n\t// You must provide a value in all other cases.\n\t//\n\t// For maintenance window tasks without a target specified, you can't supply\n\t// a value for this option. Instead, the system inserts a placeholder value\n\t// of 1. This value doesn't affect the running of your task.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The new MaxErrors value to specify. MaxErrors is the maximum number of errors\n\t// that are allowed before the task stops being scheduled.\n\t//\n\t// Although this element is listed as \"Required: No\", a value can be omitted\n\t// only when you are registering or updating a targetless task (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html)\n\t// You must provide a value in all other cases.\n\t//\n\t// For maintenance window tasks without a target specified, you can't supply\n\t// a value for this option. Instead, the system inserts a placeholder value\n\t// of 1. This value doesn't affect the running of your task.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The new task name to specify.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// The new task priority to specify. The lower the number, the higher the priority.\n\t// Tasks that have the same priority are scheduled in parallel.\n\tPriority *int64 `type:\"integer\"`\n\n\t// If True, then all fields that are required by the RegisterTaskWithMaintenanceWindow\n\t// operation are also required for this API request. Optional fields that aren't\n\t// specified are set to null.\n\tReplace *bool `type:\"boolean\"`\n\n\t// The Amazon Resource Name (ARN) of the IAM service role for Amazon Web Services\n\t// Systems Manager to assume when running a maintenance window task. If you\n\t// do not specify a service role ARN, Systems Manager uses your account's service-linked\n\t// role. If no service-linked role for Systems Manager exists in your account,\n\t// it is created when you run RegisterTaskWithMaintenanceWindow.\n\t//\n\t// For more information, see the following topics in the in the Amazon Web Services\n\t// Systems Manager User Guide:\n\t//\n\t//    * Using service-linked roles for Systems Manager (https://docs.aws.amazon.com/systems-manager/latest/userguide/using-service-linked-roles.html#slr-permissions)\n\t//\n\t//    * Should I use a service-linked role or a custom service role to run maintenance\n\t//    window tasks? (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-maintenance-permissions.html#maintenance-window-tasks-service-role)\n\tServiceRoleArn *string `type:\"string\"`\n\n\t// The targets (either managed nodes or tags) to modify. Managed nodes are specified\n\t// using the format Key=instanceids,Values=instanceID_1,instanceID_2. Tags are\n\t// specified using the format Key=tag_name,Values=tag_value.\n\t//\n\t// One or more targets must be specified for maintenance window Run Command-type\n\t// tasks. Depending on the task, targets are optional for other maintenance\n\t// window task types (Automation, Lambda, and Step Functions). For more information\n\t// about running tasks that don't specify targets, see Registering maintenance\n\t// window tasks without targets (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tTargets []*Target `type:\"list\"`\n\n\t// The task ARN to modify.\n\tTaskArn *string `min:\"1\" type:\"string\"`\n\n\t// The parameters that the task should use during execution. Populate only the\n\t// fields that match the task type. All other fields should be empty.\n\t//\n\t// When you update a maintenance window task that has options specified in TaskInvocationParameters,\n\t// you must provide again all the TaskInvocationParameters values that you want\n\t// to retain. The values you don't specify again are removed. For example, suppose\n\t// that when you registered a Run Command task, you specified TaskInvocationParameters\n\t// values for Comment, NotificationConfig, and OutputS3BucketName. If you update\n\t// the maintenance window task and specify only a different OutputS3BucketName\n\t// value, the values for Comment and NotificationConfig are removed.\n\tTaskInvocationParameters *MaintenanceWindowTaskInvocationParameters `type:\"structure\"`\n\n\t// The parameters to modify.\n\t//\n\t// TaskParameters has been deprecated. To specify parameters to pass to a task\n\t// when it runs, instead use the Parameters option in the TaskInvocationParameters\n\t// structure. For information about how Systems Manager handles these options\n\t// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n\t//\n\t// The map has the following format:\n\t//\n\t// Key: string, between 1 and 255 characters\n\t//\n\t// Value: an array of strings, each string is between 1 and 255 characters\n\t//\n\t// TaskParameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by UpdateMaintenanceWindowTaskInput's\n\t// String and GoString methods.\n\tTaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:\"map\" sensitive:\"true\"`\n\n\t// The maintenance window ID that contains the task to modify.\n\t//\n\t// WindowId is a required field\n\tWindowId *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// The task ID to modify.\n\t//\n\t// WindowTaskId is a required field\n\tWindowTaskId *string `min:\"36\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateMaintenanceWindowTaskInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateMaintenanceWindowTaskInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateMaintenanceWindowTaskInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateMaintenanceWindowTaskInput\"}\n\tif s.Description != nil && len(*s.Description) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Description\", 1))\n\t}\n\tif s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxConcurrency\", 1))\n\t}\n\tif s.MaxErrors != nil && len(*s.MaxErrors) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MaxErrors\", 1))\n\t}\n\tif s.Name != nil && len(*s.Name) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 3))\n\t}\n\tif s.TaskArn != nil && len(*s.TaskArn) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TaskArn\", 1))\n\t}\n\tif s.WindowId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowId\"))\n\t}\n\tif s.WindowId != nil && len(*s.WindowId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowId\", 20))\n\t}\n\tif s.WindowTaskId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WindowTaskId\"))\n\t}\n\tif s.WindowTaskId != nil && len(*s.WindowTaskId) < 36 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WindowTaskId\", 36))\n\t}\n\tif s.AlarmConfiguration != nil {\n\t\tif err := s.AlarmConfiguration.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"AlarmConfiguration\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.LoggingInfo != nil {\n\t\tif err := s.LoggingInfo.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"LoggingInfo\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Targets != nil {\n\t\tfor i, v := range s.Targets {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Targets\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.TaskInvocationParameters != nil {\n\t\tif err := s.TaskInvocationParameters.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"TaskInvocationParameters\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetAlarmConfiguration(v *AlarmConfiguration) *UpdateMaintenanceWindowTaskInput {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetCutoffBehavior sets the CutoffBehavior field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetCutoffBehavior(v string) *UpdateMaintenanceWindowTaskInput {\n\ts.CutoffBehavior = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetDescription(v string) *UpdateMaintenanceWindowTaskInput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetLoggingInfo sets the LoggingInfo field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetLoggingInfo(v *LoggingInfo) *UpdateMaintenanceWindowTaskInput {\n\ts.LoggingInfo = v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetMaxConcurrency(v string) *UpdateMaintenanceWindowTaskInput {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetMaxErrors(v string) *UpdateMaintenanceWindowTaskInput {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetName(v string) *UpdateMaintenanceWindowTaskInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetPriority sets the Priority field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetPriority(v int64) *UpdateMaintenanceWindowTaskInput {\n\ts.Priority = &v\n\treturn s\n}\n\n// SetReplace sets the Replace field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetReplace(v bool) *UpdateMaintenanceWindowTaskInput {\n\ts.Replace = &v\n\treturn s\n}\n\n// SetServiceRoleArn sets the ServiceRoleArn field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetServiceRoleArn(v string) *UpdateMaintenanceWindowTaskInput {\n\ts.ServiceRoleArn = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetTargets(v []*Target) *UpdateMaintenanceWindowTaskInput {\n\ts.Targets = v\n\treturn s\n}\n\n// SetTaskArn sets the TaskArn field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetTaskArn(v string) *UpdateMaintenanceWindowTaskInput {\n\ts.TaskArn = &v\n\treturn s\n}\n\n// SetTaskInvocationParameters sets the TaskInvocationParameters field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetTaskInvocationParameters(v *MaintenanceWindowTaskInvocationParameters) *UpdateMaintenanceWindowTaskInput {\n\ts.TaskInvocationParameters = v\n\treturn s\n}\n\n// SetTaskParameters sets the TaskParameters field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetTaskParameters(v map[string]*MaintenanceWindowTaskParameterValueExpression) *UpdateMaintenanceWindowTaskInput {\n\ts.TaskParameters = v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetWindowId(v string) *UpdateMaintenanceWindowTaskInput {\n\ts.WindowId = &v\n\treturn s\n}\n\n// SetWindowTaskId sets the WindowTaskId field's value.\nfunc (s *UpdateMaintenanceWindowTaskInput) SetWindowTaskId(v string) *UpdateMaintenanceWindowTaskInput {\n\ts.WindowTaskId = &v\n\treturn s\n}\n\ntype UpdateMaintenanceWindowTaskOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The details for the CloudWatch alarm you applied to your maintenance window\n\t// task.\n\tAlarmConfiguration *AlarmConfiguration `type:\"structure\"`\n\n\t// The specification for whether tasks should continue to run after the cutoff\n\t// time specified in the maintenance windows is reached.\n\tCutoffBehavior *string `type:\"string\" enum:\"MaintenanceWindowTaskCutoffBehavior\"`\n\n\t// The updated task description.\n\t//\n\t// Description is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by UpdateMaintenanceWindowTaskOutput's\n\t// String and GoString methods.\n\tDescription *string `min:\"1\" type:\"string\" sensitive:\"true\"`\n\n\t// The updated logging information in Amazon S3.\n\t//\n\t// LoggingInfo has been deprecated. To specify an Amazon Simple Storage Service\n\t// (Amazon S3) bucket to contain logs, instead use the OutputS3BucketName and\n\t// OutputS3KeyPrefix options in the TaskInvocationParameters structure. For\n\t// information about how Amazon Web Services Systems Manager handles these options\n\t// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n\tLoggingInfo *LoggingInfo `type:\"structure\"`\n\n\t// The updated MaxConcurrency value.\n\tMaxConcurrency *string `min:\"1\" type:\"string\"`\n\n\t// The updated MaxErrors value.\n\tMaxErrors *string `min:\"1\" type:\"string\"`\n\n\t// The updated task name.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// The updated priority value.\n\tPriority *int64 `type:\"integer\"`\n\n\t// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)\n\t// service role to use to publish Amazon Simple Notification Service (Amazon\n\t// SNS) notifications for maintenance window Run Command tasks.\n\tServiceRoleArn *string `type:\"string\"`\n\n\t// The updated target values.\n\tTargets []*Target `type:\"list\"`\n\n\t// The updated task ARN value.\n\tTaskArn *string `min:\"1\" type:\"string\"`\n\n\t// The updated parameter values.\n\tTaskInvocationParameters *MaintenanceWindowTaskInvocationParameters `type:\"structure\"`\n\n\t// The updated parameter values.\n\t//\n\t// TaskParameters has been deprecated. To specify parameters to pass to a task\n\t// when it runs, instead use the Parameters option in the TaskInvocationParameters\n\t// structure. For information about how Systems Manager handles these options\n\t// for the supported maintenance window task types, see MaintenanceWindowTaskInvocationParameters.\n\t//\n\t// TaskParameters is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by UpdateMaintenanceWindowTaskOutput's\n\t// String and GoString methods.\n\tTaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:\"map\" sensitive:\"true\"`\n\n\t// The ID of the maintenance window that was updated.\n\tWindowId *string `min:\"20\" type:\"string\"`\n\n\t// The task ID of the maintenance window that was updated.\n\tWindowTaskId *string `min:\"36\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateMaintenanceWindowTaskOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateMaintenanceWindowTaskOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAlarmConfiguration sets the AlarmConfiguration field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetAlarmConfiguration(v *AlarmConfiguration) *UpdateMaintenanceWindowTaskOutput {\n\ts.AlarmConfiguration = v\n\treturn s\n}\n\n// SetCutoffBehavior sets the CutoffBehavior field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetCutoffBehavior(v string) *UpdateMaintenanceWindowTaskOutput {\n\ts.CutoffBehavior = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetDescription(v string) *UpdateMaintenanceWindowTaskOutput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetLoggingInfo sets the LoggingInfo field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetLoggingInfo(v *LoggingInfo) *UpdateMaintenanceWindowTaskOutput {\n\ts.LoggingInfo = v\n\treturn s\n}\n\n// SetMaxConcurrency sets the MaxConcurrency field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetMaxConcurrency(v string) *UpdateMaintenanceWindowTaskOutput {\n\ts.MaxConcurrency = &v\n\treturn s\n}\n\n// SetMaxErrors sets the MaxErrors field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetMaxErrors(v string) *UpdateMaintenanceWindowTaskOutput {\n\ts.MaxErrors = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetName(v string) *UpdateMaintenanceWindowTaskOutput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetPriority sets the Priority field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetPriority(v int64) *UpdateMaintenanceWindowTaskOutput {\n\ts.Priority = &v\n\treturn s\n}\n\n// SetServiceRoleArn sets the ServiceRoleArn field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetServiceRoleArn(v string) *UpdateMaintenanceWindowTaskOutput {\n\ts.ServiceRoleArn = &v\n\treturn s\n}\n\n// SetTargets sets the Targets field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetTargets(v []*Target) *UpdateMaintenanceWindowTaskOutput {\n\ts.Targets = v\n\treturn s\n}\n\n// SetTaskArn sets the TaskArn field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetTaskArn(v string) *UpdateMaintenanceWindowTaskOutput {\n\ts.TaskArn = &v\n\treturn s\n}\n\n// SetTaskInvocationParameters sets the TaskInvocationParameters field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetTaskInvocationParameters(v *MaintenanceWindowTaskInvocationParameters) *UpdateMaintenanceWindowTaskOutput {\n\ts.TaskInvocationParameters = v\n\treturn s\n}\n\n// SetTaskParameters sets the TaskParameters field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetTaskParameters(v map[string]*MaintenanceWindowTaskParameterValueExpression) *UpdateMaintenanceWindowTaskOutput {\n\ts.TaskParameters = v\n\treturn s\n}\n\n// SetWindowId sets the WindowId field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetWindowId(v string) *UpdateMaintenanceWindowTaskOutput {\n\ts.WindowId = &v\n\treturn s\n}\n\n// SetWindowTaskId sets the WindowTaskId field's value.\nfunc (s *UpdateMaintenanceWindowTaskOutput) SetWindowTaskId(v string) *UpdateMaintenanceWindowTaskOutput {\n\ts.WindowTaskId = &v\n\treturn s\n}\n\ntype UpdateManagedInstanceRoleInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the Identity and Access Management (IAM) role that you want to\n\t// assign to the managed node. This IAM role must provide AssumeRole permissions\n\t// for the Amazon Web Services Systems Manager service principal ssm.amazonaws.com.\n\t// For more information, see Create an IAM service role for a hybrid environment\n\t// (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-service-role.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\t//\n\t// You can't specify an IAM service-linked role for this parameter. You must\n\t// create a unique role.\n\t//\n\t// IamRole is a required field\n\tIamRole *string `type:\"string\" required:\"true\"`\n\n\t// The ID of the managed node where you want to update the role.\n\t//\n\t// InstanceId is a required field\n\tInstanceId *string `min:\"20\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateManagedInstanceRoleInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateManagedInstanceRoleInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateManagedInstanceRoleInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateManagedInstanceRoleInput\"}\n\tif s.IamRole == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"IamRole\"))\n\t}\n\tif s.InstanceId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"InstanceId\"))\n\t}\n\tif s.InstanceId != nil && len(*s.InstanceId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"InstanceId\", 20))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetIamRole sets the IamRole field's value.\nfunc (s *UpdateManagedInstanceRoleInput) SetIamRole(v string) *UpdateManagedInstanceRoleInput {\n\ts.IamRole = &v\n\treturn s\n}\n\n// SetInstanceId sets the InstanceId field's value.\nfunc (s *UpdateManagedInstanceRoleInput) SetInstanceId(v string) *UpdateManagedInstanceRoleInput {\n\ts.InstanceId = &v\n\treturn s\n}\n\ntype UpdateManagedInstanceRoleOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateManagedInstanceRoleOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateManagedInstanceRoleOutput) GoString() string {\n\treturn s.String()\n}\n\ntype UpdateOpsItemInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The time a runbook workflow ended. Currently reported only for the OpsItem\n\t// type /aws/changerequest.\n\tActualEndTime *time.Time `type:\"timestamp\"`\n\n\t// The time a runbook workflow started. Currently reported only for the OpsItem\n\t// type /aws/changerequest.\n\tActualStartTime *time.Time `type:\"timestamp\"`\n\n\t// Specify a new category for an OpsItem.\n\tCategory *string `min:\"1\" type:\"string\"`\n\n\t// User-defined text that contains information about the OpsItem, in Markdown\n\t// format.\n\tDescription *string `min:\"1\" type:\"string\"`\n\n\t// The Amazon Resource Name (ARN) of an SNS topic where notifications are sent\n\t// when this OpsItem is edited or changed.\n\tNotifications []*OpsItemNotification `type:\"list\"`\n\n\t// Add new keys or edit existing key-value pairs of the OperationalData map\n\t// in the OpsItem object.\n\t//\n\t// Operational data is custom data that provides useful reference details about\n\t// the OpsItem. For example, you can specify log files, error strings, license\n\t// keys, troubleshooting tips, or other relevant data. You enter operational\n\t// data as key-value pairs. The key has a maximum length of 128 characters.\n\t// The value has a maximum size of 20 KB.\n\t//\n\t// Operational data keys can't begin with the following: amazon, aws, amzn,\n\t// ssm, /amazon, /aws, /amzn, /ssm.\n\t//\n\t// You can choose to make the data searchable by other users in the account\n\t// or you can restrict search access. Searchable data means that all users with\n\t// access to the OpsItem Overview page (as provided by the DescribeOpsItems\n\t// API operation) can view and search on the specified data. Operational data\n\t// that isn't searchable is only viewable by users who have access to the OpsItem\n\t// (as provided by the GetOpsItem API operation).\n\t//\n\t// Use the /aws/resources key in OperationalData to specify a related resource\n\t// in the request. Use the /aws/automations key in OperationalData to associate\n\t// an Automation runbook with the OpsItem. To view Amazon Web Services CLI example\n\t// commands that use these keys, see Creating OpsItems manually (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-manually-create-OpsItems.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tOperationalData map[string]*OpsItemDataValue `type:\"map\"`\n\n\t// Keys that you want to remove from the OperationalData map.\n\tOperationalDataToDelete []*string `type:\"list\"`\n\n\t// The OpsItem Amazon Resource Name (ARN).\n\tOpsItemArn *string `min:\"20\" type:\"string\"`\n\n\t// The ID of the OpsItem.\n\t//\n\t// OpsItemId is a required field\n\tOpsItemId *string `type:\"string\" required:\"true\"`\n\n\t// The time specified in a change request for a runbook workflow to end. Currently\n\t// supported only for the OpsItem type /aws/changerequest.\n\tPlannedEndTime *time.Time `type:\"timestamp\"`\n\n\t// The time specified in a change request for a runbook workflow to start. Currently\n\t// supported only for the OpsItem type /aws/changerequest.\n\tPlannedStartTime *time.Time `type:\"timestamp\"`\n\n\t// The importance of this OpsItem in relation to other OpsItems in the system.\n\tPriority *int64 `min:\"1\" type:\"integer\"`\n\n\t// One or more OpsItems that share something in common with the current OpsItems.\n\t// For example, related OpsItems can include OpsItems with similar error messages,\n\t// impacted resources, or statuses for the impacted resource.\n\tRelatedOpsItems []*RelatedOpsItem `type:\"list\"`\n\n\t// Specify a new severity for an OpsItem.\n\tSeverity *string `min:\"1\" type:\"string\"`\n\n\t// The OpsItem status. Status can be Open, In Progress, or Resolved. For more\n\t// information, see Editing OpsItem details (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-working-with-OpsItems-editing-details.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tStatus *string `type:\"string\" enum:\"OpsItemStatus\"`\n\n\t// A short heading that describes the nature of the OpsItem and the impacted\n\t// resource.\n\tTitle *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateOpsItemInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateOpsItemInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateOpsItemInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateOpsItemInput\"}\n\tif s.Category != nil && len(*s.Category) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Category\", 1))\n\t}\n\tif s.Description != nil && len(*s.Description) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Description\", 1))\n\t}\n\tif s.OpsItemArn != nil && len(*s.OpsItemArn) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OpsItemArn\", 20))\n\t}\n\tif s.OpsItemId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"OpsItemId\"))\n\t}\n\tif s.Priority != nil && *s.Priority < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"Priority\", 1))\n\t}\n\tif s.Severity != nil && len(*s.Severity) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Severity\", 1))\n\t}\n\tif s.Title != nil && len(*s.Title) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Title\", 1))\n\t}\n\tif s.RelatedOpsItems != nil {\n\t\tfor i, v := range s.RelatedOpsItems {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"RelatedOpsItems\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetActualEndTime sets the ActualEndTime field's value.\nfunc (s *UpdateOpsItemInput) SetActualEndTime(v time.Time) *UpdateOpsItemInput {\n\ts.ActualEndTime = &v\n\treturn s\n}\n\n// SetActualStartTime sets the ActualStartTime field's value.\nfunc (s *UpdateOpsItemInput) SetActualStartTime(v time.Time) *UpdateOpsItemInput {\n\ts.ActualStartTime = &v\n\treturn s\n}\n\n// SetCategory sets the Category field's value.\nfunc (s *UpdateOpsItemInput) SetCategory(v string) *UpdateOpsItemInput {\n\ts.Category = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *UpdateOpsItemInput) SetDescription(v string) *UpdateOpsItemInput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetNotifications sets the Notifications field's value.\nfunc (s *UpdateOpsItemInput) SetNotifications(v []*OpsItemNotification) *UpdateOpsItemInput {\n\ts.Notifications = v\n\treturn s\n}\n\n// SetOperationalData sets the OperationalData field's value.\nfunc (s *UpdateOpsItemInput) SetOperationalData(v map[string]*OpsItemDataValue) *UpdateOpsItemInput {\n\ts.OperationalData = v\n\treturn s\n}\n\n// SetOperationalDataToDelete sets the OperationalDataToDelete field's value.\nfunc (s *UpdateOpsItemInput) SetOperationalDataToDelete(v []*string) *UpdateOpsItemInput {\n\ts.OperationalDataToDelete = v\n\treturn s\n}\n\n// SetOpsItemArn sets the OpsItemArn field's value.\nfunc (s *UpdateOpsItemInput) SetOpsItemArn(v string) *UpdateOpsItemInput {\n\ts.OpsItemArn = &v\n\treturn s\n}\n\n// SetOpsItemId sets the OpsItemId field's value.\nfunc (s *UpdateOpsItemInput) SetOpsItemId(v string) *UpdateOpsItemInput {\n\ts.OpsItemId = &v\n\treturn s\n}\n\n// SetPlannedEndTime sets the PlannedEndTime field's value.\nfunc (s *UpdateOpsItemInput) SetPlannedEndTime(v time.Time) *UpdateOpsItemInput {\n\ts.PlannedEndTime = &v\n\treturn s\n}\n\n// SetPlannedStartTime sets the PlannedStartTime field's value.\nfunc (s *UpdateOpsItemInput) SetPlannedStartTime(v time.Time) *UpdateOpsItemInput {\n\ts.PlannedStartTime = &v\n\treturn s\n}\n\n// SetPriority sets the Priority field's value.\nfunc (s *UpdateOpsItemInput) SetPriority(v int64) *UpdateOpsItemInput {\n\ts.Priority = &v\n\treturn s\n}\n\n// SetRelatedOpsItems sets the RelatedOpsItems field's value.\nfunc (s *UpdateOpsItemInput) SetRelatedOpsItems(v []*RelatedOpsItem) *UpdateOpsItemInput {\n\ts.RelatedOpsItems = v\n\treturn s\n}\n\n// SetSeverity sets the Severity field's value.\nfunc (s *UpdateOpsItemInput) SetSeverity(v string) *UpdateOpsItemInput {\n\ts.Severity = &v\n\treturn s\n}\n\n// SetStatus sets the Status field's value.\nfunc (s *UpdateOpsItemInput) SetStatus(v string) *UpdateOpsItemInput {\n\ts.Status = &v\n\treturn s\n}\n\n// SetTitle sets the Title field's value.\nfunc (s *UpdateOpsItemInput) SetTitle(v string) *UpdateOpsItemInput {\n\ts.Title = &v\n\treturn s\n}\n\ntype UpdateOpsItemOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateOpsItemOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateOpsItemOutput) GoString() string {\n\treturn s.String()\n}\n\ntype UpdateOpsMetadataInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The metadata keys to delete from the OpsMetadata object.\n\tKeysToDelete []*string `min:\"1\" type:\"list\"`\n\n\t// Metadata to add to an OpsMetadata object.\n\tMetadataToUpdate map[string]*MetadataValue `min:\"1\" type:\"map\"`\n\n\t// The Amazon Resource Name (ARN) of the OpsMetadata Object to update.\n\t//\n\t// OpsMetadataArn is a required field\n\tOpsMetadataArn *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateOpsMetadataInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateOpsMetadataInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateOpsMetadataInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateOpsMetadataInput\"}\n\tif s.KeysToDelete != nil && len(s.KeysToDelete) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"KeysToDelete\", 1))\n\t}\n\tif s.MetadataToUpdate != nil && len(s.MetadataToUpdate) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"MetadataToUpdate\", 1))\n\t}\n\tif s.OpsMetadataArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"OpsMetadataArn\"))\n\t}\n\tif s.OpsMetadataArn != nil && len(*s.OpsMetadataArn) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"OpsMetadataArn\", 1))\n\t}\n\tif s.MetadataToUpdate != nil {\n\t\tfor i, v := range s.MetadataToUpdate {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"MetadataToUpdate\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKeysToDelete sets the KeysToDelete field's value.\nfunc (s *UpdateOpsMetadataInput) SetKeysToDelete(v []*string) *UpdateOpsMetadataInput {\n\ts.KeysToDelete = v\n\treturn s\n}\n\n// SetMetadataToUpdate sets the MetadataToUpdate field's value.\nfunc (s *UpdateOpsMetadataInput) SetMetadataToUpdate(v map[string]*MetadataValue) *UpdateOpsMetadataInput {\n\ts.MetadataToUpdate = v\n\treturn s\n}\n\n// SetOpsMetadataArn sets the OpsMetadataArn field's value.\nfunc (s *UpdateOpsMetadataInput) SetOpsMetadataArn(v string) *UpdateOpsMetadataInput {\n\ts.OpsMetadataArn = &v\n\treturn s\n}\n\ntype UpdateOpsMetadataOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) of the OpsMetadata Object that was updated.\n\tOpsMetadataArn *string `min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateOpsMetadataOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateOpsMetadataOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetOpsMetadataArn sets the OpsMetadataArn field's value.\nfunc (s *UpdateOpsMetadataOutput) SetOpsMetadataArn(v string) *UpdateOpsMetadataOutput {\n\ts.OpsMetadataArn = &v\n\treturn s\n}\n\ntype UpdatePatchBaselineInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A set of rules used to include patches in the baseline.\n\tApprovalRules *PatchRuleGroup `type:\"structure\"`\n\n\t// A list of explicitly approved patches for the baseline.\n\t//\n\t// For information about accepted formats for lists of approved patches and\n\t// rejected patches, see About package name formats for approved and rejected\n\t// patch lists (https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tApprovedPatches []*string `type:\"list\"`\n\n\t// Assigns a new compliance severity level to an existing patch baseline.\n\tApprovedPatchesComplianceLevel *string `type:\"string\" enum:\"PatchComplianceLevel\"`\n\n\t// Indicates whether the list of approved patches includes non-security updates\n\t// that should be applied to the managed nodes. The default value is false.\n\t// Applies to Linux managed nodes only.\n\tApprovedPatchesEnableNonSecurity *bool `type:\"boolean\"`\n\n\t// The ID of the patch baseline to update.\n\t//\n\t// BaselineId is a required field\n\tBaselineId *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// A description of the patch baseline.\n\tDescription *string `min:\"1\" type:\"string\"`\n\n\t// A set of global filters used to include patches in the baseline.\n\tGlobalFilters *PatchFilterGroup `type:\"structure\"`\n\n\t// The name of the patch baseline.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// A list of explicitly rejected patches for the baseline.\n\t//\n\t// For information about accepted formats for lists of approved patches and\n\t// rejected patches, see About package name formats for approved and rejected\n\t// patch lists (https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tRejectedPatches []*string `type:\"list\"`\n\n\t// The action for Patch Manager to take on patches included in the RejectedPackages\n\t// list.\n\t//\n\t//    * ALLOW_AS_DEPENDENCY : A package in the Rejected patches list is installed\n\t//    only if it is a dependency of another package. It is considered compliant\n\t//    with the patch baseline, and its status is reported as InstalledOther.\n\t//    This is the default action if no option is specified.\n\t//\n\t//    * BLOCK : Packages in the RejectedPatches list, and packages that include\n\t//    them as dependencies, aren't installed under any circumstances. If a package\n\t//    was installed before it was added to the Rejected patches list, it is\n\t//    considered non-compliant with the patch baseline, and its status is reported\n\t//    as InstalledRejected.\n\tRejectedPatchesAction *string `type:\"string\" enum:\"PatchAction\"`\n\n\t// If True, then all fields that are required by the CreatePatchBaseline operation\n\t// are also required for this API request. Optional fields that aren't specified\n\t// are set to null.\n\tReplace *bool `type:\"boolean\"`\n\n\t// Information about the patches to use to update the managed nodes, including\n\t// target operating systems and source repositories. Applies to Linux managed\n\t// nodes only.\n\tSources []*PatchSource `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdatePatchBaselineInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdatePatchBaselineInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdatePatchBaselineInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdatePatchBaselineInput\"}\n\tif s.BaselineId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"BaselineId\"))\n\t}\n\tif s.BaselineId != nil && len(*s.BaselineId) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"BaselineId\", 20))\n\t}\n\tif s.Description != nil && len(*s.Description) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Description\", 1))\n\t}\n\tif s.Name != nil && len(*s.Name) < 3 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 3))\n\t}\n\tif s.ApprovalRules != nil {\n\t\tif err := s.ApprovalRules.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"ApprovalRules\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.GlobalFilters != nil {\n\t\tif err := s.GlobalFilters.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"GlobalFilters\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\tif s.Sources != nil {\n\t\tfor i, v := range s.Sources {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Sources\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetApprovalRules sets the ApprovalRules field's value.\nfunc (s *UpdatePatchBaselineInput) SetApprovalRules(v *PatchRuleGroup) *UpdatePatchBaselineInput {\n\ts.ApprovalRules = v\n\treturn s\n}\n\n// SetApprovedPatches sets the ApprovedPatches field's value.\nfunc (s *UpdatePatchBaselineInput) SetApprovedPatches(v []*string) *UpdatePatchBaselineInput {\n\ts.ApprovedPatches = v\n\treturn s\n}\n\n// SetApprovedPatchesComplianceLevel sets the ApprovedPatchesComplianceLevel field's value.\nfunc (s *UpdatePatchBaselineInput) SetApprovedPatchesComplianceLevel(v string) *UpdatePatchBaselineInput {\n\ts.ApprovedPatchesComplianceLevel = &v\n\treturn s\n}\n\n// SetApprovedPatchesEnableNonSecurity sets the ApprovedPatchesEnableNonSecurity field's value.\nfunc (s *UpdatePatchBaselineInput) SetApprovedPatchesEnableNonSecurity(v bool) *UpdatePatchBaselineInput {\n\ts.ApprovedPatchesEnableNonSecurity = &v\n\treturn s\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *UpdatePatchBaselineInput) SetBaselineId(v string) *UpdatePatchBaselineInput {\n\ts.BaselineId = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *UpdatePatchBaselineInput) SetDescription(v string) *UpdatePatchBaselineInput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetGlobalFilters sets the GlobalFilters field's value.\nfunc (s *UpdatePatchBaselineInput) SetGlobalFilters(v *PatchFilterGroup) *UpdatePatchBaselineInput {\n\ts.GlobalFilters = v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UpdatePatchBaselineInput) SetName(v string) *UpdatePatchBaselineInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetRejectedPatches sets the RejectedPatches field's value.\nfunc (s *UpdatePatchBaselineInput) SetRejectedPatches(v []*string) *UpdatePatchBaselineInput {\n\ts.RejectedPatches = v\n\treturn s\n}\n\n// SetRejectedPatchesAction sets the RejectedPatchesAction field's value.\nfunc (s *UpdatePatchBaselineInput) SetRejectedPatchesAction(v string) *UpdatePatchBaselineInput {\n\ts.RejectedPatchesAction = &v\n\treturn s\n}\n\n// SetReplace sets the Replace field's value.\nfunc (s *UpdatePatchBaselineInput) SetReplace(v bool) *UpdatePatchBaselineInput {\n\ts.Replace = &v\n\treturn s\n}\n\n// SetSources sets the Sources field's value.\nfunc (s *UpdatePatchBaselineInput) SetSources(v []*PatchSource) *UpdatePatchBaselineInput {\n\ts.Sources = v\n\treturn s\n}\n\ntype UpdatePatchBaselineOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A set of rules used to include patches in the baseline.\n\tApprovalRules *PatchRuleGroup `type:\"structure\"`\n\n\t// A list of explicitly approved patches for the baseline.\n\tApprovedPatches []*string `type:\"list\"`\n\n\t// The compliance severity level assigned to the patch baseline after the update\n\t// completed.\n\tApprovedPatchesComplianceLevel *string `type:\"string\" enum:\"PatchComplianceLevel\"`\n\n\t// Indicates whether the list of approved patches includes non-security updates\n\t// that should be applied to the managed nodes. The default value is false.\n\t// Applies to Linux managed nodes only.\n\tApprovedPatchesEnableNonSecurity *bool `type:\"boolean\"`\n\n\t// The ID of the deleted patch baseline.\n\tBaselineId *string `min:\"20\" type:\"string\"`\n\n\t// The date when the patch baseline was created.\n\tCreatedDate *time.Time `type:\"timestamp\"`\n\n\t// A description of the patch baseline.\n\tDescription *string `min:\"1\" type:\"string\"`\n\n\t// A set of global filters used to exclude patches from the baseline.\n\tGlobalFilters *PatchFilterGroup `type:\"structure\"`\n\n\t// The date when the patch baseline was last modified.\n\tModifiedDate *time.Time `type:\"timestamp\"`\n\n\t// The name of the patch baseline.\n\tName *string `min:\"3\" type:\"string\"`\n\n\t// The operating system rule used by the updated patch baseline.\n\tOperatingSystem *string `type:\"string\" enum:\"OperatingSystem\"`\n\n\t// A list of explicitly rejected patches for the baseline.\n\tRejectedPatches []*string `type:\"list\"`\n\n\t// The action specified to take on patches included in the RejectedPatches list.\n\t// A patch can be allowed only if it is a dependency of another package, or\n\t// blocked entirely along with packages that include it as a dependency.\n\tRejectedPatchesAction *string `type:\"string\" enum:\"PatchAction\"`\n\n\t// Information about the patches to use to update the managed nodes, including\n\t// target operating systems and source repositories. Applies to Linux managed\n\t// nodes only.\n\tSources []*PatchSource `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdatePatchBaselineOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdatePatchBaselineOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetApprovalRules sets the ApprovalRules field's value.\nfunc (s *UpdatePatchBaselineOutput) SetApprovalRules(v *PatchRuleGroup) *UpdatePatchBaselineOutput {\n\ts.ApprovalRules = v\n\treturn s\n}\n\n// SetApprovedPatches sets the ApprovedPatches field's value.\nfunc (s *UpdatePatchBaselineOutput) SetApprovedPatches(v []*string) *UpdatePatchBaselineOutput {\n\ts.ApprovedPatches = v\n\treturn s\n}\n\n// SetApprovedPatchesComplianceLevel sets the ApprovedPatchesComplianceLevel field's value.\nfunc (s *UpdatePatchBaselineOutput) SetApprovedPatchesComplianceLevel(v string) *UpdatePatchBaselineOutput {\n\ts.ApprovedPatchesComplianceLevel = &v\n\treturn s\n}\n\n// SetApprovedPatchesEnableNonSecurity sets the ApprovedPatchesEnableNonSecurity field's value.\nfunc (s *UpdatePatchBaselineOutput) SetApprovedPatchesEnableNonSecurity(v bool) *UpdatePatchBaselineOutput {\n\ts.ApprovedPatchesEnableNonSecurity = &v\n\treturn s\n}\n\n// SetBaselineId sets the BaselineId field's value.\nfunc (s *UpdatePatchBaselineOutput) SetBaselineId(v string) *UpdatePatchBaselineOutput {\n\ts.BaselineId = &v\n\treturn s\n}\n\n// SetCreatedDate sets the CreatedDate field's value.\nfunc (s *UpdatePatchBaselineOutput) SetCreatedDate(v time.Time) *UpdatePatchBaselineOutput {\n\ts.CreatedDate = &v\n\treturn s\n}\n\n// SetDescription sets the Description field's value.\nfunc (s *UpdatePatchBaselineOutput) SetDescription(v string) *UpdatePatchBaselineOutput {\n\ts.Description = &v\n\treturn s\n}\n\n// SetGlobalFilters sets the GlobalFilters field's value.\nfunc (s *UpdatePatchBaselineOutput) SetGlobalFilters(v *PatchFilterGroup) *UpdatePatchBaselineOutput {\n\ts.GlobalFilters = v\n\treturn s\n}\n\n// SetModifiedDate sets the ModifiedDate field's value.\nfunc (s *UpdatePatchBaselineOutput) SetModifiedDate(v time.Time) *UpdatePatchBaselineOutput {\n\ts.ModifiedDate = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *UpdatePatchBaselineOutput) SetName(v string) *UpdatePatchBaselineOutput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetOperatingSystem sets the OperatingSystem field's value.\nfunc (s *UpdatePatchBaselineOutput) SetOperatingSystem(v string) *UpdatePatchBaselineOutput {\n\ts.OperatingSystem = &v\n\treturn s\n}\n\n// SetRejectedPatches sets the RejectedPatches field's value.\nfunc (s *UpdatePatchBaselineOutput) SetRejectedPatches(v []*string) *UpdatePatchBaselineOutput {\n\ts.RejectedPatches = v\n\treturn s\n}\n\n// SetRejectedPatchesAction sets the RejectedPatchesAction field's value.\nfunc (s *UpdatePatchBaselineOutput) SetRejectedPatchesAction(v string) *UpdatePatchBaselineOutput {\n\ts.RejectedPatchesAction = &v\n\treturn s\n}\n\n// SetSources sets the Sources field's value.\nfunc (s *UpdatePatchBaselineOutput) SetSources(v []*PatchSource) *UpdatePatchBaselineOutput {\n\ts.Sources = v\n\treturn s\n}\n\ntype UpdateResourceDataSyncInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The name of the resource data sync you want to update.\n\t//\n\t// SyncName is a required field\n\tSyncName *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// Specify information about the data sources to synchronize.\n\t//\n\t// SyncSource is a required field\n\tSyncSource *ResourceDataSyncSource `type:\"structure\" required:\"true\"`\n\n\t// The type of resource data sync. The supported SyncType is SyncFromSource.\n\t//\n\t// SyncType is a required field\n\tSyncType *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateResourceDataSyncInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateResourceDataSyncInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateResourceDataSyncInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateResourceDataSyncInput\"}\n\tif s.SyncName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SyncName\"))\n\t}\n\tif s.SyncName != nil && len(*s.SyncName) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SyncName\", 1))\n\t}\n\tif s.SyncSource == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SyncSource\"))\n\t}\n\tif s.SyncType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SyncType\"))\n\t}\n\tif s.SyncType != nil && len(*s.SyncType) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SyncType\", 1))\n\t}\n\tif s.SyncSource != nil {\n\t\tif err := s.SyncSource.Validate(); err != nil {\n\t\t\tinvalidParams.AddNested(\"SyncSource\", err.(request.ErrInvalidParams))\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetSyncName sets the SyncName field's value.\nfunc (s *UpdateResourceDataSyncInput) SetSyncName(v string) *UpdateResourceDataSyncInput {\n\ts.SyncName = &v\n\treturn s\n}\n\n// SetSyncSource sets the SyncSource field's value.\nfunc (s *UpdateResourceDataSyncInput) SetSyncSource(v *ResourceDataSyncSource) *UpdateResourceDataSyncInput {\n\ts.SyncSource = v\n\treturn s\n}\n\n// SetSyncType sets the SyncType field's value.\nfunc (s *UpdateResourceDataSyncInput) SetSyncType(v string) *UpdateResourceDataSyncInput {\n\ts.SyncType = &v\n\treturn s\n}\n\ntype UpdateResourceDataSyncOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateResourceDataSyncOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateResourceDataSyncOutput) GoString() string {\n\treturn s.String()\n}\n\n// The request body of the UpdateServiceSetting API operation.\ntype UpdateServiceSettingInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) of the service setting to update. For example,\n\t// arn:aws:ssm:us-east-1:111122223333:servicesetting/ssm/parameter-store/high-throughput-enabled.\n\t// The setting ID can be one of the following.\n\t//\n\t//    * /ssm/managed-instance/default-ec2-instance-management-role\n\t//\n\t//    * /ssm/automation/customer-script-log-destination\n\t//\n\t//    * /ssm/automation/customer-script-log-group-name\n\t//\n\t//    * /ssm/documents/console/public-sharing-permission\n\t//\n\t//    * /ssm/managed-instance/activation-tier\n\t//\n\t//    * /ssm/opsinsights/opscenter\n\t//\n\t//    * /ssm/parameter-store/default-parameter-tier\n\t//\n\t//    * /ssm/parameter-store/high-throughput-enabled\n\t//\n\t// Permissions to update the /ssm/managed-instance/default-ec2-instance-management-role\n\t// setting should only be provided to administrators. Implement least privilege\n\t// access when allowing individuals to configure or modify the Default Host\n\t// Management Configuration.\n\t//\n\t// SettingId is a required field\n\tSettingId *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The new value to specify for the service setting. The following list specifies\n\t// the available values for each setting.\n\t//\n\t//    * For /ssm/managed-instance/default-ec2-instance-management-role, enter\n\t//    the name of an IAM role.\n\t//\n\t//    * For /ssm/automation/customer-script-log-destination, enter CloudWatch.\n\t//\n\t//    * For /ssm/automation/customer-script-log-group-name, enter the name of\n\t//    an Amazon CloudWatch Logs log group.\n\t//\n\t//    * For /ssm/documents/console/public-sharing-permission, enter Enable or\n\t//    Disable.\n\t//\n\t//    * For /ssm/managed-instance/activation-tier, enter standard or advanced.\n\t//\n\t//    * For /ssm/opsinsights/opscenter, enter Enabled or Disabled.\n\t//\n\t//    * For /ssm/parameter-store/default-parameter-tier, enter Standard, Advanced,\n\t//    or Intelligent-Tiering\n\t//\n\t//    * For /ssm/parameter-store/high-throughput-enabled, enter true or false.\n\t//\n\t// SettingValue is a required field\n\tSettingValue *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateServiceSettingInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateServiceSettingInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *UpdateServiceSettingInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"UpdateServiceSettingInput\"}\n\tif s.SettingId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SettingId\"))\n\t}\n\tif s.SettingId != nil && len(*s.SettingId) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SettingId\", 1))\n\t}\n\tif s.SettingValue == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SettingValue\"))\n\t}\n\tif s.SettingValue != nil && len(*s.SettingValue) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SettingValue\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetSettingId sets the SettingId field's value.\nfunc (s *UpdateServiceSettingInput) SetSettingId(v string) *UpdateServiceSettingInput {\n\ts.SettingId = &v\n\treturn s\n}\n\n// SetSettingValue sets the SettingValue field's value.\nfunc (s *UpdateServiceSettingInput) SetSettingValue(v string) *UpdateServiceSettingInput {\n\ts.SettingValue = &v\n\treturn s\n}\n\n// The result body of the UpdateServiceSetting API operation.\ntype UpdateServiceSettingOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateServiceSettingOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UpdateServiceSettingOutput) GoString() string {\n\treturn s.String()\n}\n\nconst (\n\t// AssociationComplianceSeverityCritical is a AssociationComplianceSeverity enum value\n\tAssociationComplianceSeverityCritical = \"CRITICAL\"\n\n\t// AssociationComplianceSeverityHigh is a AssociationComplianceSeverity enum value\n\tAssociationComplianceSeverityHigh = \"HIGH\"\n\n\t// AssociationComplianceSeverityMedium is a AssociationComplianceSeverity enum value\n\tAssociationComplianceSeverityMedium = \"MEDIUM\"\n\n\t// AssociationComplianceSeverityLow is a AssociationComplianceSeverity enum value\n\tAssociationComplianceSeverityLow = \"LOW\"\n\n\t// AssociationComplianceSeverityUnspecified is a AssociationComplianceSeverity enum value\n\tAssociationComplianceSeverityUnspecified = \"UNSPECIFIED\"\n)\n\n// AssociationComplianceSeverity_Values returns all elements of the AssociationComplianceSeverity enum\nfunc AssociationComplianceSeverity_Values() []string {\n\treturn []string{\n\t\tAssociationComplianceSeverityCritical,\n\t\tAssociationComplianceSeverityHigh,\n\t\tAssociationComplianceSeverityMedium,\n\t\tAssociationComplianceSeverityLow,\n\t\tAssociationComplianceSeverityUnspecified,\n\t}\n}\n\nconst (\n\t// AssociationExecutionFilterKeyExecutionId is a AssociationExecutionFilterKey enum value\n\tAssociationExecutionFilterKeyExecutionId = \"ExecutionId\"\n\n\t// AssociationExecutionFilterKeyStatus is a AssociationExecutionFilterKey enum value\n\tAssociationExecutionFilterKeyStatus = \"Status\"\n\n\t// AssociationExecutionFilterKeyCreatedTime is a AssociationExecutionFilterKey enum value\n\tAssociationExecutionFilterKeyCreatedTime = \"CreatedTime\"\n)\n\n// AssociationExecutionFilterKey_Values returns all elements of the AssociationExecutionFilterKey enum\nfunc AssociationExecutionFilterKey_Values() []string {\n\treturn []string{\n\t\tAssociationExecutionFilterKeyExecutionId,\n\t\tAssociationExecutionFilterKeyStatus,\n\t\tAssociationExecutionFilterKeyCreatedTime,\n\t}\n}\n\nconst (\n\t// AssociationExecutionTargetsFilterKeyStatus is a AssociationExecutionTargetsFilterKey enum value\n\tAssociationExecutionTargetsFilterKeyStatus = \"Status\"\n\n\t// AssociationExecutionTargetsFilterKeyResourceId is a AssociationExecutionTargetsFilterKey enum value\n\tAssociationExecutionTargetsFilterKeyResourceId = \"ResourceId\"\n\n\t// AssociationExecutionTargetsFilterKeyResourceType is a AssociationExecutionTargetsFilterKey enum value\n\tAssociationExecutionTargetsFilterKeyResourceType = \"ResourceType\"\n)\n\n// AssociationExecutionTargetsFilterKey_Values returns all elements of the AssociationExecutionTargetsFilterKey enum\nfunc AssociationExecutionTargetsFilterKey_Values() []string {\n\treturn []string{\n\t\tAssociationExecutionTargetsFilterKeyStatus,\n\t\tAssociationExecutionTargetsFilterKeyResourceId,\n\t\tAssociationExecutionTargetsFilterKeyResourceType,\n\t}\n}\n\nconst (\n\t// AssociationFilterKeyInstanceId is a AssociationFilterKey enum value\n\tAssociationFilterKeyInstanceId = \"InstanceId\"\n\n\t// AssociationFilterKeyName is a AssociationFilterKey enum value\n\tAssociationFilterKeyName = \"Name\"\n\n\t// AssociationFilterKeyAssociationId is a AssociationFilterKey enum value\n\tAssociationFilterKeyAssociationId = \"AssociationId\"\n\n\t// AssociationFilterKeyAssociationStatusName is a AssociationFilterKey enum value\n\tAssociationFilterKeyAssociationStatusName = \"AssociationStatusName\"\n\n\t// AssociationFilterKeyLastExecutedBefore is a AssociationFilterKey enum value\n\tAssociationFilterKeyLastExecutedBefore = \"LastExecutedBefore\"\n\n\t// AssociationFilterKeyLastExecutedAfter is a AssociationFilterKey enum value\n\tAssociationFilterKeyLastExecutedAfter = \"LastExecutedAfter\"\n\n\t// AssociationFilterKeyAssociationName is a AssociationFilterKey enum value\n\tAssociationFilterKeyAssociationName = \"AssociationName\"\n\n\t// AssociationFilterKeyResourceGroupName is a AssociationFilterKey enum value\n\tAssociationFilterKeyResourceGroupName = \"ResourceGroupName\"\n)\n\n// AssociationFilterKey_Values returns all elements of the AssociationFilterKey enum\nfunc AssociationFilterKey_Values() []string {\n\treturn []string{\n\t\tAssociationFilterKeyInstanceId,\n\t\tAssociationFilterKeyName,\n\t\tAssociationFilterKeyAssociationId,\n\t\tAssociationFilterKeyAssociationStatusName,\n\t\tAssociationFilterKeyLastExecutedBefore,\n\t\tAssociationFilterKeyLastExecutedAfter,\n\t\tAssociationFilterKeyAssociationName,\n\t\tAssociationFilterKeyResourceGroupName,\n\t}\n}\n\nconst (\n\t// AssociationFilterOperatorTypeEqual is a AssociationFilterOperatorType enum value\n\tAssociationFilterOperatorTypeEqual = \"EQUAL\"\n\n\t// AssociationFilterOperatorTypeLessThan is a AssociationFilterOperatorType enum value\n\tAssociationFilterOperatorTypeLessThan = \"LESS_THAN\"\n\n\t// AssociationFilterOperatorTypeGreaterThan is a AssociationFilterOperatorType enum value\n\tAssociationFilterOperatorTypeGreaterThan = \"GREATER_THAN\"\n)\n\n// AssociationFilterOperatorType_Values returns all elements of the AssociationFilterOperatorType enum\nfunc AssociationFilterOperatorType_Values() []string {\n\treturn []string{\n\t\tAssociationFilterOperatorTypeEqual,\n\t\tAssociationFilterOperatorTypeLessThan,\n\t\tAssociationFilterOperatorTypeGreaterThan,\n\t}\n}\n\nconst (\n\t// AssociationStatusNamePending is a AssociationStatusName enum value\n\tAssociationStatusNamePending = \"Pending\"\n\n\t// AssociationStatusNameSuccess is a AssociationStatusName enum value\n\tAssociationStatusNameSuccess = \"Success\"\n\n\t// AssociationStatusNameFailed is a AssociationStatusName enum value\n\tAssociationStatusNameFailed = \"Failed\"\n)\n\n// AssociationStatusName_Values returns all elements of the AssociationStatusName enum\nfunc AssociationStatusName_Values() []string {\n\treturn []string{\n\t\tAssociationStatusNamePending,\n\t\tAssociationStatusNameSuccess,\n\t\tAssociationStatusNameFailed,\n\t}\n}\n\nconst (\n\t// AssociationSyncComplianceAuto is a AssociationSyncCompliance enum value\n\tAssociationSyncComplianceAuto = \"AUTO\"\n\n\t// AssociationSyncComplianceManual is a AssociationSyncCompliance enum value\n\tAssociationSyncComplianceManual = \"MANUAL\"\n)\n\n// AssociationSyncCompliance_Values returns all elements of the AssociationSyncCompliance enum\nfunc AssociationSyncCompliance_Values() []string {\n\treturn []string{\n\t\tAssociationSyncComplianceAuto,\n\t\tAssociationSyncComplianceManual,\n\t}\n}\n\nconst (\n\t// AttachmentHashTypeSha256 is a AttachmentHashType enum value\n\tAttachmentHashTypeSha256 = \"Sha256\"\n)\n\n// AttachmentHashType_Values returns all elements of the AttachmentHashType enum\nfunc AttachmentHashType_Values() []string {\n\treturn []string{\n\t\tAttachmentHashTypeSha256,\n\t}\n}\n\nconst (\n\t// AttachmentsSourceKeySourceUrl is a AttachmentsSourceKey enum value\n\tAttachmentsSourceKeySourceUrl = \"SourceUrl\"\n\n\t// AttachmentsSourceKeyS3fileUrl is a AttachmentsSourceKey enum value\n\tAttachmentsSourceKeyS3fileUrl = \"S3FileUrl\"\n\n\t// AttachmentsSourceKeyAttachmentReference is a AttachmentsSourceKey enum value\n\tAttachmentsSourceKeyAttachmentReference = \"AttachmentReference\"\n)\n\n// AttachmentsSourceKey_Values returns all elements of the AttachmentsSourceKey enum\nfunc AttachmentsSourceKey_Values() []string {\n\treturn []string{\n\t\tAttachmentsSourceKeySourceUrl,\n\t\tAttachmentsSourceKeyS3fileUrl,\n\t\tAttachmentsSourceKeyAttachmentReference,\n\t}\n}\n\nconst (\n\t// AutomationExecutionFilterKeyDocumentNamePrefix is a AutomationExecutionFilterKey enum value\n\tAutomationExecutionFilterKeyDocumentNamePrefix = \"DocumentNamePrefix\"\n\n\t// AutomationExecutionFilterKeyExecutionStatus is a AutomationExecutionFilterKey enum value\n\tAutomationExecutionFilterKeyExecutionStatus = \"ExecutionStatus\"\n\n\t// AutomationExecutionFilterKeyExecutionId is a AutomationExecutionFilterKey enum value\n\tAutomationExecutionFilterKeyExecutionId = \"ExecutionId\"\n\n\t// AutomationExecutionFilterKeyParentExecutionId is a AutomationExecutionFilterKey enum value\n\tAutomationExecutionFilterKeyParentExecutionId = \"ParentExecutionId\"\n\n\t// AutomationExecutionFilterKeyCurrentAction is a AutomationExecutionFilterKey enum value\n\tAutomationExecutionFilterKeyCurrentAction = \"CurrentAction\"\n\n\t// AutomationExecutionFilterKeyStartTimeBefore is a AutomationExecutionFilterKey enum value\n\tAutomationExecutionFilterKeyStartTimeBefore = \"StartTimeBefore\"\n\n\t// AutomationExecutionFilterKeyStartTimeAfter is a AutomationExecutionFilterKey enum value\n\tAutomationExecutionFilterKeyStartTimeAfter = \"StartTimeAfter\"\n\n\t// AutomationExecutionFilterKeyAutomationType is a AutomationExecutionFilterKey enum value\n\tAutomationExecutionFilterKeyAutomationType = \"AutomationType\"\n\n\t// AutomationExecutionFilterKeyTagKey is a AutomationExecutionFilterKey enum value\n\tAutomationExecutionFilterKeyTagKey = \"TagKey\"\n\n\t// AutomationExecutionFilterKeyTargetResourceGroup is a AutomationExecutionFilterKey enum value\n\tAutomationExecutionFilterKeyTargetResourceGroup = \"TargetResourceGroup\"\n\n\t// AutomationExecutionFilterKeyAutomationSubtype is a AutomationExecutionFilterKey enum value\n\tAutomationExecutionFilterKeyAutomationSubtype = \"AutomationSubtype\"\n\n\t// AutomationExecutionFilterKeyOpsItemId is a AutomationExecutionFilterKey enum value\n\tAutomationExecutionFilterKeyOpsItemId = \"OpsItemId\"\n)\n\n// AutomationExecutionFilterKey_Values returns all elements of the AutomationExecutionFilterKey enum\nfunc AutomationExecutionFilterKey_Values() []string {\n\treturn []string{\n\t\tAutomationExecutionFilterKeyDocumentNamePrefix,\n\t\tAutomationExecutionFilterKeyExecutionStatus,\n\t\tAutomationExecutionFilterKeyExecutionId,\n\t\tAutomationExecutionFilterKeyParentExecutionId,\n\t\tAutomationExecutionFilterKeyCurrentAction,\n\t\tAutomationExecutionFilterKeyStartTimeBefore,\n\t\tAutomationExecutionFilterKeyStartTimeAfter,\n\t\tAutomationExecutionFilterKeyAutomationType,\n\t\tAutomationExecutionFilterKeyTagKey,\n\t\tAutomationExecutionFilterKeyTargetResourceGroup,\n\t\tAutomationExecutionFilterKeyAutomationSubtype,\n\t\tAutomationExecutionFilterKeyOpsItemId,\n\t}\n}\n\nconst (\n\t// AutomationExecutionStatusPending is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusPending = \"Pending\"\n\n\t// AutomationExecutionStatusInProgress is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusInProgress = \"InProgress\"\n\n\t// AutomationExecutionStatusWaiting is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusWaiting = \"Waiting\"\n\n\t// AutomationExecutionStatusSuccess is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusSuccess = \"Success\"\n\n\t// AutomationExecutionStatusTimedOut is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusTimedOut = \"TimedOut\"\n\n\t// AutomationExecutionStatusCancelling is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusCancelling = \"Cancelling\"\n\n\t// AutomationExecutionStatusCancelled is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusCancelled = \"Cancelled\"\n\n\t// AutomationExecutionStatusFailed is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusFailed = \"Failed\"\n\n\t// AutomationExecutionStatusPendingApproval is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusPendingApproval = \"PendingApproval\"\n\n\t// AutomationExecutionStatusApproved is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusApproved = \"Approved\"\n\n\t// AutomationExecutionStatusRejected is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusRejected = \"Rejected\"\n\n\t// AutomationExecutionStatusScheduled is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusScheduled = \"Scheduled\"\n\n\t// AutomationExecutionStatusRunbookInProgress is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusRunbookInProgress = \"RunbookInProgress\"\n\n\t// AutomationExecutionStatusPendingChangeCalendarOverride is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusPendingChangeCalendarOverride = \"PendingChangeCalendarOverride\"\n\n\t// AutomationExecutionStatusChangeCalendarOverrideApproved is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusChangeCalendarOverrideApproved = \"ChangeCalendarOverrideApproved\"\n\n\t// AutomationExecutionStatusChangeCalendarOverrideRejected is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusChangeCalendarOverrideRejected = \"ChangeCalendarOverrideRejected\"\n\n\t// AutomationExecutionStatusCompletedWithSuccess is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusCompletedWithSuccess = \"CompletedWithSuccess\"\n\n\t// AutomationExecutionStatusCompletedWithFailure is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusCompletedWithFailure = \"CompletedWithFailure\"\n\n\t// AutomationExecutionStatusExited is a AutomationExecutionStatus enum value\n\tAutomationExecutionStatusExited = \"Exited\"\n)\n\n// AutomationExecutionStatus_Values returns all elements of the AutomationExecutionStatus enum\nfunc AutomationExecutionStatus_Values() []string {\n\treturn []string{\n\t\tAutomationExecutionStatusPending,\n\t\tAutomationExecutionStatusInProgress,\n\t\tAutomationExecutionStatusWaiting,\n\t\tAutomationExecutionStatusSuccess,\n\t\tAutomationExecutionStatusTimedOut,\n\t\tAutomationExecutionStatusCancelling,\n\t\tAutomationExecutionStatusCancelled,\n\t\tAutomationExecutionStatusFailed,\n\t\tAutomationExecutionStatusPendingApproval,\n\t\tAutomationExecutionStatusApproved,\n\t\tAutomationExecutionStatusRejected,\n\t\tAutomationExecutionStatusScheduled,\n\t\tAutomationExecutionStatusRunbookInProgress,\n\t\tAutomationExecutionStatusPendingChangeCalendarOverride,\n\t\tAutomationExecutionStatusChangeCalendarOverrideApproved,\n\t\tAutomationExecutionStatusChangeCalendarOverrideRejected,\n\t\tAutomationExecutionStatusCompletedWithSuccess,\n\t\tAutomationExecutionStatusCompletedWithFailure,\n\t\tAutomationExecutionStatusExited,\n\t}\n}\n\nconst (\n\t// AutomationSubtypeChangeRequest is a AutomationSubtype enum value\n\tAutomationSubtypeChangeRequest = \"ChangeRequest\"\n)\n\n// AutomationSubtype_Values returns all elements of the AutomationSubtype enum\nfunc AutomationSubtype_Values() []string {\n\treturn []string{\n\t\tAutomationSubtypeChangeRequest,\n\t}\n}\n\nconst (\n\t// AutomationTypeCrossAccount is a AutomationType enum value\n\tAutomationTypeCrossAccount = \"CrossAccount\"\n\n\t// AutomationTypeLocal is a AutomationType enum value\n\tAutomationTypeLocal = \"Local\"\n)\n\n// AutomationType_Values returns all elements of the AutomationType enum\nfunc AutomationType_Values() []string {\n\treturn []string{\n\t\tAutomationTypeCrossAccount,\n\t\tAutomationTypeLocal,\n\t}\n}\n\nconst (\n\t// CalendarStateOpen is a CalendarState enum value\n\tCalendarStateOpen = \"OPEN\"\n\n\t// CalendarStateClosed is a CalendarState enum value\n\tCalendarStateClosed = \"CLOSED\"\n)\n\n// CalendarState_Values returns all elements of the CalendarState enum\nfunc CalendarState_Values() []string {\n\treturn []string{\n\t\tCalendarStateOpen,\n\t\tCalendarStateClosed,\n\t}\n}\n\nconst (\n\t// CommandFilterKeyInvokedAfter is a CommandFilterKey enum value\n\tCommandFilterKeyInvokedAfter = \"InvokedAfter\"\n\n\t// CommandFilterKeyInvokedBefore is a CommandFilterKey enum value\n\tCommandFilterKeyInvokedBefore = \"InvokedBefore\"\n\n\t// CommandFilterKeyStatus is a CommandFilterKey enum value\n\tCommandFilterKeyStatus = \"Status\"\n\n\t// CommandFilterKeyExecutionStage is a CommandFilterKey enum value\n\tCommandFilterKeyExecutionStage = \"ExecutionStage\"\n\n\t// CommandFilterKeyDocumentName is a CommandFilterKey enum value\n\tCommandFilterKeyDocumentName = \"DocumentName\"\n)\n\n// CommandFilterKey_Values returns all elements of the CommandFilterKey enum\nfunc CommandFilterKey_Values() []string {\n\treturn []string{\n\t\tCommandFilterKeyInvokedAfter,\n\t\tCommandFilterKeyInvokedBefore,\n\t\tCommandFilterKeyStatus,\n\t\tCommandFilterKeyExecutionStage,\n\t\tCommandFilterKeyDocumentName,\n\t}\n}\n\nconst (\n\t// CommandInvocationStatusPending is a CommandInvocationStatus enum value\n\tCommandInvocationStatusPending = \"Pending\"\n\n\t// CommandInvocationStatusInProgress is a CommandInvocationStatus enum value\n\tCommandInvocationStatusInProgress = \"InProgress\"\n\n\t// CommandInvocationStatusDelayed is a CommandInvocationStatus enum value\n\tCommandInvocationStatusDelayed = \"Delayed\"\n\n\t// CommandInvocationStatusSuccess is a CommandInvocationStatus enum value\n\tCommandInvocationStatusSuccess = \"Success\"\n\n\t// CommandInvocationStatusCancelled is a CommandInvocationStatus enum value\n\tCommandInvocationStatusCancelled = \"Cancelled\"\n\n\t// CommandInvocationStatusTimedOut is a CommandInvocationStatus enum value\n\tCommandInvocationStatusTimedOut = \"TimedOut\"\n\n\t// CommandInvocationStatusFailed is a CommandInvocationStatus enum value\n\tCommandInvocationStatusFailed = \"Failed\"\n\n\t// CommandInvocationStatusCancelling is a CommandInvocationStatus enum value\n\tCommandInvocationStatusCancelling = \"Cancelling\"\n)\n\n// CommandInvocationStatus_Values returns all elements of the CommandInvocationStatus enum\nfunc CommandInvocationStatus_Values() []string {\n\treturn []string{\n\t\tCommandInvocationStatusPending,\n\t\tCommandInvocationStatusInProgress,\n\t\tCommandInvocationStatusDelayed,\n\t\tCommandInvocationStatusSuccess,\n\t\tCommandInvocationStatusCancelled,\n\t\tCommandInvocationStatusTimedOut,\n\t\tCommandInvocationStatusFailed,\n\t\tCommandInvocationStatusCancelling,\n\t}\n}\n\nconst (\n\t// CommandPluginStatusPending is a CommandPluginStatus enum value\n\tCommandPluginStatusPending = \"Pending\"\n\n\t// CommandPluginStatusInProgress is a CommandPluginStatus enum value\n\tCommandPluginStatusInProgress = \"InProgress\"\n\n\t// CommandPluginStatusSuccess is a CommandPluginStatus enum value\n\tCommandPluginStatusSuccess = \"Success\"\n\n\t// CommandPluginStatusTimedOut is a CommandPluginStatus enum value\n\tCommandPluginStatusTimedOut = \"TimedOut\"\n\n\t// CommandPluginStatusCancelled is a CommandPluginStatus enum value\n\tCommandPluginStatusCancelled = \"Cancelled\"\n\n\t// CommandPluginStatusFailed is a CommandPluginStatus enum value\n\tCommandPluginStatusFailed = \"Failed\"\n)\n\n// CommandPluginStatus_Values returns all elements of the CommandPluginStatus enum\nfunc CommandPluginStatus_Values() []string {\n\treturn []string{\n\t\tCommandPluginStatusPending,\n\t\tCommandPluginStatusInProgress,\n\t\tCommandPluginStatusSuccess,\n\t\tCommandPluginStatusTimedOut,\n\t\tCommandPluginStatusCancelled,\n\t\tCommandPluginStatusFailed,\n\t}\n}\n\nconst (\n\t// CommandStatusPending is a CommandStatus enum value\n\tCommandStatusPending = \"Pending\"\n\n\t// CommandStatusInProgress is a CommandStatus enum value\n\tCommandStatusInProgress = \"InProgress\"\n\n\t// CommandStatusSuccess is a CommandStatus enum value\n\tCommandStatusSuccess = \"Success\"\n\n\t// CommandStatusCancelled is a CommandStatus enum value\n\tCommandStatusCancelled = \"Cancelled\"\n\n\t// CommandStatusFailed is a CommandStatus enum value\n\tCommandStatusFailed = \"Failed\"\n\n\t// CommandStatusTimedOut is a CommandStatus enum value\n\tCommandStatusTimedOut = \"TimedOut\"\n\n\t// CommandStatusCancelling is a CommandStatus enum value\n\tCommandStatusCancelling = \"Cancelling\"\n)\n\n// CommandStatus_Values returns all elements of the CommandStatus enum\nfunc CommandStatus_Values() []string {\n\treturn []string{\n\t\tCommandStatusPending,\n\t\tCommandStatusInProgress,\n\t\tCommandStatusSuccess,\n\t\tCommandStatusCancelled,\n\t\tCommandStatusFailed,\n\t\tCommandStatusTimedOut,\n\t\tCommandStatusCancelling,\n\t}\n}\n\nconst (\n\t// ComplianceQueryOperatorTypeEqual is a ComplianceQueryOperatorType enum value\n\tComplianceQueryOperatorTypeEqual = \"EQUAL\"\n\n\t// ComplianceQueryOperatorTypeNotEqual is a ComplianceQueryOperatorType enum value\n\tComplianceQueryOperatorTypeNotEqual = \"NOT_EQUAL\"\n\n\t// ComplianceQueryOperatorTypeBeginWith is a ComplianceQueryOperatorType enum value\n\tComplianceQueryOperatorTypeBeginWith = \"BEGIN_WITH\"\n\n\t// ComplianceQueryOperatorTypeLessThan is a ComplianceQueryOperatorType enum value\n\tComplianceQueryOperatorTypeLessThan = \"LESS_THAN\"\n\n\t// ComplianceQueryOperatorTypeGreaterThan is a ComplianceQueryOperatorType enum value\n\tComplianceQueryOperatorTypeGreaterThan = \"GREATER_THAN\"\n)\n\n// ComplianceQueryOperatorType_Values returns all elements of the ComplianceQueryOperatorType enum\nfunc ComplianceQueryOperatorType_Values() []string {\n\treturn []string{\n\t\tComplianceQueryOperatorTypeEqual,\n\t\tComplianceQueryOperatorTypeNotEqual,\n\t\tComplianceQueryOperatorTypeBeginWith,\n\t\tComplianceQueryOperatorTypeLessThan,\n\t\tComplianceQueryOperatorTypeGreaterThan,\n\t}\n}\n\nconst (\n\t// ComplianceSeverityCritical is a ComplianceSeverity enum value\n\tComplianceSeverityCritical = \"CRITICAL\"\n\n\t// ComplianceSeverityHigh is a ComplianceSeverity enum value\n\tComplianceSeverityHigh = \"HIGH\"\n\n\t// ComplianceSeverityMedium is a ComplianceSeverity enum value\n\tComplianceSeverityMedium = \"MEDIUM\"\n\n\t// ComplianceSeverityLow is a ComplianceSeverity enum value\n\tComplianceSeverityLow = \"LOW\"\n\n\t// ComplianceSeverityInformational is a ComplianceSeverity enum value\n\tComplianceSeverityInformational = \"INFORMATIONAL\"\n\n\t// ComplianceSeverityUnspecified is a ComplianceSeverity enum value\n\tComplianceSeverityUnspecified = \"UNSPECIFIED\"\n)\n\n// ComplianceSeverity_Values returns all elements of the ComplianceSeverity enum\nfunc ComplianceSeverity_Values() []string {\n\treturn []string{\n\t\tComplianceSeverityCritical,\n\t\tComplianceSeverityHigh,\n\t\tComplianceSeverityMedium,\n\t\tComplianceSeverityLow,\n\t\tComplianceSeverityInformational,\n\t\tComplianceSeverityUnspecified,\n\t}\n}\n\nconst (\n\t// ComplianceStatusCompliant is a ComplianceStatus enum value\n\tComplianceStatusCompliant = \"COMPLIANT\"\n\n\t// ComplianceStatusNonCompliant is a ComplianceStatus enum value\n\tComplianceStatusNonCompliant = \"NON_COMPLIANT\"\n)\n\n// ComplianceStatus_Values returns all elements of the ComplianceStatus enum\nfunc ComplianceStatus_Values() []string {\n\treturn []string{\n\t\tComplianceStatusCompliant,\n\t\tComplianceStatusNonCompliant,\n\t}\n}\n\nconst (\n\t// ComplianceUploadTypeComplete is a ComplianceUploadType enum value\n\tComplianceUploadTypeComplete = \"COMPLETE\"\n\n\t// ComplianceUploadTypePartial is a ComplianceUploadType enum value\n\tComplianceUploadTypePartial = \"PARTIAL\"\n)\n\n// ComplianceUploadType_Values returns all elements of the ComplianceUploadType enum\nfunc ComplianceUploadType_Values() []string {\n\treturn []string{\n\t\tComplianceUploadTypeComplete,\n\t\tComplianceUploadTypePartial,\n\t}\n}\n\nconst (\n\t// ConnectionStatusConnected is a ConnectionStatus enum value\n\tConnectionStatusConnected = \"connected\"\n\n\t// ConnectionStatusNotconnected is a ConnectionStatus enum value\n\tConnectionStatusNotconnected = \"notconnected\"\n)\n\n// ConnectionStatus_Values returns all elements of the ConnectionStatus enum\nfunc ConnectionStatus_Values() []string {\n\treturn []string{\n\t\tConnectionStatusConnected,\n\t\tConnectionStatusNotconnected,\n\t}\n}\n\nconst (\n\t// DescribeActivationsFilterKeysActivationIds is a DescribeActivationsFilterKeys enum value\n\tDescribeActivationsFilterKeysActivationIds = \"ActivationIds\"\n\n\t// DescribeActivationsFilterKeysDefaultInstanceName is a DescribeActivationsFilterKeys enum value\n\tDescribeActivationsFilterKeysDefaultInstanceName = \"DefaultInstanceName\"\n\n\t// DescribeActivationsFilterKeysIamRole is a DescribeActivationsFilterKeys enum value\n\tDescribeActivationsFilterKeysIamRole = \"IamRole\"\n)\n\n// DescribeActivationsFilterKeys_Values returns all elements of the DescribeActivationsFilterKeys enum\nfunc DescribeActivationsFilterKeys_Values() []string {\n\treturn []string{\n\t\tDescribeActivationsFilterKeysActivationIds,\n\t\tDescribeActivationsFilterKeysDefaultInstanceName,\n\t\tDescribeActivationsFilterKeysIamRole,\n\t}\n}\n\nconst (\n\t// DocumentFilterKeyName is a DocumentFilterKey enum value\n\tDocumentFilterKeyName = \"Name\"\n\n\t// DocumentFilterKeyOwner is a DocumentFilterKey enum value\n\tDocumentFilterKeyOwner = \"Owner\"\n\n\t// DocumentFilterKeyPlatformTypes is a DocumentFilterKey enum value\n\tDocumentFilterKeyPlatformTypes = \"PlatformTypes\"\n\n\t// DocumentFilterKeyDocumentType is a DocumentFilterKey enum value\n\tDocumentFilterKeyDocumentType = \"DocumentType\"\n)\n\n// DocumentFilterKey_Values returns all elements of the DocumentFilterKey enum\nfunc DocumentFilterKey_Values() []string {\n\treturn []string{\n\t\tDocumentFilterKeyName,\n\t\tDocumentFilterKeyOwner,\n\t\tDocumentFilterKeyPlatformTypes,\n\t\tDocumentFilterKeyDocumentType,\n\t}\n}\n\nconst (\n\t// DocumentFormatYaml is a DocumentFormat enum value\n\tDocumentFormatYaml = \"YAML\"\n\n\t// DocumentFormatJson is a DocumentFormat enum value\n\tDocumentFormatJson = \"JSON\"\n\n\t// DocumentFormatText is a DocumentFormat enum value\n\tDocumentFormatText = \"TEXT\"\n)\n\n// DocumentFormat_Values returns all elements of the DocumentFormat enum\nfunc DocumentFormat_Values() []string {\n\treturn []string{\n\t\tDocumentFormatYaml,\n\t\tDocumentFormatJson,\n\t\tDocumentFormatText,\n\t}\n}\n\nconst (\n\t// DocumentHashTypeSha256 is a DocumentHashType enum value\n\tDocumentHashTypeSha256 = \"Sha256\"\n\n\t// DocumentHashTypeSha1 is a DocumentHashType enum value\n\tDocumentHashTypeSha1 = \"Sha1\"\n)\n\n// DocumentHashType_Values returns all elements of the DocumentHashType enum\nfunc DocumentHashType_Values() []string {\n\treturn []string{\n\t\tDocumentHashTypeSha256,\n\t\tDocumentHashTypeSha1,\n\t}\n}\n\nconst (\n\t// DocumentMetadataEnumDocumentReviews is a DocumentMetadataEnum enum value\n\tDocumentMetadataEnumDocumentReviews = \"DocumentReviews\"\n)\n\n// DocumentMetadataEnum_Values returns all elements of the DocumentMetadataEnum enum\nfunc DocumentMetadataEnum_Values() []string {\n\treturn []string{\n\t\tDocumentMetadataEnumDocumentReviews,\n\t}\n}\n\nconst (\n\t// DocumentParameterTypeString is a DocumentParameterType enum value\n\tDocumentParameterTypeString = \"String\"\n\n\t// DocumentParameterTypeStringList is a DocumentParameterType enum value\n\tDocumentParameterTypeStringList = \"StringList\"\n)\n\n// DocumentParameterType_Values returns all elements of the DocumentParameterType enum\nfunc DocumentParameterType_Values() []string {\n\treturn []string{\n\t\tDocumentParameterTypeString,\n\t\tDocumentParameterTypeStringList,\n\t}\n}\n\nconst (\n\t// DocumentPermissionTypeShare is a DocumentPermissionType enum value\n\tDocumentPermissionTypeShare = \"Share\"\n)\n\n// DocumentPermissionType_Values returns all elements of the DocumentPermissionType enum\nfunc DocumentPermissionType_Values() []string {\n\treturn []string{\n\t\tDocumentPermissionTypeShare,\n\t}\n}\n\nconst (\n\t// DocumentReviewActionSendForReview is a DocumentReviewAction enum value\n\tDocumentReviewActionSendForReview = \"SendForReview\"\n\n\t// DocumentReviewActionUpdateReview is a DocumentReviewAction enum value\n\tDocumentReviewActionUpdateReview = \"UpdateReview\"\n\n\t// DocumentReviewActionApprove is a DocumentReviewAction enum value\n\tDocumentReviewActionApprove = \"Approve\"\n\n\t// DocumentReviewActionReject is a DocumentReviewAction enum value\n\tDocumentReviewActionReject = \"Reject\"\n)\n\n// DocumentReviewAction_Values returns all elements of the DocumentReviewAction enum\nfunc DocumentReviewAction_Values() []string {\n\treturn []string{\n\t\tDocumentReviewActionSendForReview,\n\t\tDocumentReviewActionUpdateReview,\n\t\tDocumentReviewActionApprove,\n\t\tDocumentReviewActionReject,\n\t}\n}\n\nconst (\n\t// DocumentReviewCommentTypeComment is a DocumentReviewCommentType enum value\n\tDocumentReviewCommentTypeComment = \"Comment\"\n)\n\n// DocumentReviewCommentType_Values returns all elements of the DocumentReviewCommentType enum\nfunc DocumentReviewCommentType_Values() []string {\n\treturn []string{\n\t\tDocumentReviewCommentTypeComment,\n\t}\n}\n\n// The status of a document.\nconst (\n\t// DocumentStatusCreating is a DocumentStatus enum value\n\tDocumentStatusCreating = \"Creating\"\n\n\t// DocumentStatusActive is a DocumentStatus enum value\n\tDocumentStatusActive = \"Active\"\n\n\t// DocumentStatusUpdating is a DocumentStatus enum value\n\tDocumentStatusUpdating = \"Updating\"\n\n\t// DocumentStatusDeleting is a DocumentStatus enum value\n\tDocumentStatusDeleting = \"Deleting\"\n\n\t// DocumentStatusFailed is a DocumentStatus enum value\n\tDocumentStatusFailed = \"Failed\"\n)\n\n// DocumentStatus_Values returns all elements of the DocumentStatus enum\nfunc DocumentStatus_Values() []string {\n\treturn []string{\n\t\tDocumentStatusCreating,\n\t\tDocumentStatusActive,\n\t\tDocumentStatusUpdating,\n\t\tDocumentStatusDeleting,\n\t\tDocumentStatusFailed,\n\t}\n}\n\nconst (\n\t// DocumentTypeCommand is a DocumentType enum value\n\tDocumentTypeCommand = \"Command\"\n\n\t// DocumentTypePolicy is a DocumentType enum value\n\tDocumentTypePolicy = \"Policy\"\n\n\t// DocumentTypeAutomation is a DocumentType enum value\n\tDocumentTypeAutomation = \"Automation\"\n\n\t// DocumentTypeSession is a DocumentType enum value\n\tDocumentTypeSession = \"Session\"\n\n\t// DocumentTypePackage is a DocumentType enum value\n\tDocumentTypePackage = \"Package\"\n\n\t// DocumentTypeApplicationConfiguration is a DocumentType enum value\n\tDocumentTypeApplicationConfiguration = \"ApplicationConfiguration\"\n\n\t// DocumentTypeApplicationConfigurationSchema is a DocumentType enum value\n\tDocumentTypeApplicationConfigurationSchema = \"ApplicationConfigurationSchema\"\n\n\t// DocumentTypeDeploymentStrategy is a DocumentType enum value\n\tDocumentTypeDeploymentStrategy = \"DeploymentStrategy\"\n\n\t// DocumentTypeChangeCalendar is a DocumentType enum value\n\tDocumentTypeChangeCalendar = \"ChangeCalendar\"\n\n\t// DocumentTypeAutomationChangeTemplate is a DocumentType enum value\n\tDocumentTypeAutomationChangeTemplate = \"Automation.ChangeTemplate\"\n\n\t// DocumentTypeProblemAnalysis is a DocumentType enum value\n\tDocumentTypeProblemAnalysis = \"ProblemAnalysis\"\n\n\t// DocumentTypeProblemAnalysisTemplate is a DocumentType enum value\n\tDocumentTypeProblemAnalysisTemplate = \"ProblemAnalysisTemplate\"\n\n\t// DocumentTypeCloudFormation is a DocumentType enum value\n\tDocumentTypeCloudFormation = \"CloudFormation\"\n\n\t// DocumentTypeConformancePackTemplate is a DocumentType enum value\n\tDocumentTypeConformancePackTemplate = \"ConformancePackTemplate\"\n\n\t// DocumentTypeQuickSetup is a DocumentType enum value\n\tDocumentTypeQuickSetup = \"QuickSetup\"\n)\n\n// DocumentType_Values returns all elements of the DocumentType enum\nfunc DocumentType_Values() []string {\n\treturn []string{\n\t\tDocumentTypeCommand,\n\t\tDocumentTypePolicy,\n\t\tDocumentTypeAutomation,\n\t\tDocumentTypeSession,\n\t\tDocumentTypePackage,\n\t\tDocumentTypeApplicationConfiguration,\n\t\tDocumentTypeApplicationConfigurationSchema,\n\t\tDocumentTypeDeploymentStrategy,\n\t\tDocumentTypeChangeCalendar,\n\t\tDocumentTypeAutomationChangeTemplate,\n\t\tDocumentTypeProblemAnalysis,\n\t\tDocumentTypeProblemAnalysisTemplate,\n\t\tDocumentTypeCloudFormation,\n\t\tDocumentTypeConformancePackTemplate,\n\t\tDocumentTypeQuickSetup,\n\t}\n}\n\nconst (\n\t// ExecutionModeAuto is a ExecutionMode enum value\n\tExecutionModeAuto = \"Auto\"\n\n\t// ExecutionModeInteractive is a ExecutionMode enum value\n\tExecutionModeInteractive = \"Interactive\"\n)\n\n// ExecutionMode_Values returns all elements of the ExecutionMode enum\nfunc ExecutionMode_Values() []string {\n\treturn []string{\n\t\tExecutionModeAuto,\n\t\tExecutionModeInteractive,\n\t}\n}\n\nconst (\n\t// ExternalAlarmStateUnknown is a ExternalAlarmState enum value\n\tExternalAlarmStateUnknown = \"UNKNOWN\"\n\n\t// ExternalAlarmStateAlarm is a ExternalAlarmState enum value\n\tExternalAlarmStateAlarm = \"ALARM\"\n)\n\n// ExternalAlarmState_Values returns all elements of the ExternalAlarmState enum\nfunc ExternalAlarmState_Values() []string {\n\treturn []string{\n\t\tExternalAlarmStateUnknown,\n\t\tExternalAlarmStateAlarm,\n\t}\n}\n\nconst (\n\t// FaultClient is a Fault enum value\n\tFaultClient = \"Client\"\n\n\t// FaultServer is a Fault enum value\n\tFaultServer = \"Server\"\n\n\t// FaultUnknown is a Fault enum value\n\tFaultUnknown = \"Unknown\"\n)\n\n// Fault_Values returns all elements of the Fault enum\nfunc Fault_Values() []string {\n\treturn []string{\n\t\tFaultClient,\n\t\tFaultServer,\n\t\tFaultUnknown,\n\t}\n}\n\nconst (\n\t// InstanceInformationFilterKeyInstanceIds is a InstanceInformationFilterKey enum value\n\tInstanceInformationFilterKeyInstanceIds = \"InstanceIds\"\n\n\t// InstanceInformationFilterKeyAgentVersion is a InstanceInformationFilterKey enum value\n\tInstanceInformationFilterKeyAgentVersion = \"AgentVersion\"\n\n\t// InstanceInformationFilterKeyPingStatus is a InstanceInformationFilterKey enum value\n\tInstanceInformationFilterKeyPingStatus = \"PingStatus\"\n\n\t// InstanceInformationFilterKeyPlatformTypes is a InstanceInformationFilterKey enum value\n\tInstanceInformationFilterKeyPlatformTypes = \"PlatformTypes\"\n\n\t// InstanceInformationFilterKeyActivationIds is a InstanceInformationFilterKey enum value\n\tInstanceInformationFilterKeyActivationIds = \"ActivationIds\"\n\n\t// InstanceInformationFilterKeyIamRole is a InstanceInformationFilterKey enum value\n\tInstanceInformationFilterKeyIamRole = \"IamRole\"\n\n\t// InstanceInformationFilterKeyResourceType is a InstanceInformationFilterKey enum value\n\tInstanceInformationFilterKeyResourceType = \"ResourceType\"\n\n\t// InstanceInformationFilterKeyAssociationStatus is a InstanceInformationFilterKey enum value\n\tInstanceInformationFilterKeyAssociationStatus = \"AssociationStatus\"\n)\n\n// InstanceInformationFilterKey_Values returns all elements of the InstanceInformationFilterKey enum\nfunc InstanceInformationFilterKey_Values() []string {\n\treturn []string{\n\t\tInstanceInformationFilterKeyInstanceIds,\n\t\tInstanceInformationFilterKeyAgentVersion,\n\t\tInstanceInformationFilterKeyPingStatus,\n\t\tInstanceInformationFilterKeyPlatformTypes,\n\t\tInstanceInformationFilterKeyActivationIds,\n\t\tInstanceInformationFilterKeyIamRole,\n\t\tInstanceInformationFilterKeyResourceType,\n\t\tInstanceInformationFilterKeyAssociationStatus,\n\t}\n}\n\nconst (\n\t// InstancePatchStateOperatorTypeEqual is a InstancePatchStateOperatorType enum value\n\tInstancePatchStateOperatorTypeEqual = \"Equal\"\n\n\t// InstancePatchStateOperatorTypeNotEqual is a InstancePatchStateOperatorType enum value\n\tInstancePatchStateOperatorTypeNotEqual = \"NotEqual\"\n\n\t// InstancePatchStateOperatorTypeLessThan is a InstancePatchStateOperatorType enum value\n\tInstancePatchStateOperatorTypeLessThan = \"LessThan\"\n\n\t// InstancePatchStateOperatorTypeGreaterThan is a InstancePatchStateOperatorType enum value\n\tInstancePatchStateOperatorTypeGreaterThan = \"GreaterThan\"\n)\n\n// InstancePatchStateOperatorType_Values returns all elements of the InstancePatchStateOperatorType enum\nfunc InstancePatchStateOperatorType_Values() []string {\n\treturn []string{\n\t\tInstancePatchStateOperatorTypeEqual,\n\t\tInstancePatchStateOperatorTypeNotEqual,\n\t\tInstancePatchStateOperatorTypeLessThan,\n\t\tInstancePatchStateOperatorTypeGreaterThan,\n\t}\n}\n\nconst (\n\t// InventoryAttributeDataTypeString is a InventoryAttributeDataType enum value\n\tInventoryAttributeDataTypeString = \"string\"\n\n\t// InventoryAttributeDataTypeNumber is a InventoryAttributeDataType enum value\n\tInventoryAttributeDataTypeNumber = \"number\"\n)\n\n// InventoryAttributeDataType_Values returns all elements of the InventoryAttributeDataType enum\nfunc InventoryAttributeDataType_Values() []string {\n\treturn []string{\n\t\tInventoryAttributeDataTypeString,\n\t\tInventoryAttributeDataTypeNumber,\n\t}\n}\n\nconst (\n\t// InventoryDeletionStatusInProgress is a InventoryDeletionStatus enum value\n\tInventoryDeletionStatusInProgress = \"InProgress\"\n\n\t// InventoryDeletionStatusComplete is a InventoryDeletionStatus enum value\n\tInventoryDeletionStatusComplete = \"Complete\"\n)\n\n// InventoryDeletionStatus_Values returns all elements of the InventoryDeletionStatus enum\nfunc InventoryDeletionStatus_Values() []string {\n\treturn []string{\n\t\tInventoryDeletionStatusInProgress,\n\t\tInventoryDeletionStatusComplete,\n\t}\n}\n\nconst (\n\t// InventoryQueryOperatorTypeEqual is a InventoryQueryOperatorType enum value\n\tInventoryQueryOperatorTypeEqual = \"Equal\"\n\n\t// InventoryQueryOperatorTypeNotEqual is a InventoryQueryOperatorType enum value\n\tInventoryQueryOperatorTypeNotEqual = \"NotEqual\"\n\n\t// InventoryQueryOperatorTypeBeginWith is a InventoryQueryOperatorType enum value\n\tInventoryQueryOperatorTypeBeginWith = \"BeginWith\"\n\n\t// InventoryQueryOperatorTypeLessThan is a InventoryQueryOperatorType enum value\n\tInventoryQueryOperatorTypeLessThan = \"LessThan\"\n\n\t// InventoryQueryOperatorTypeGreaterThan is a InventoryQueryOperatorType enum value\n\tInventoryQueryOperatorTypeGreaterThan = \"GreaterThan\"\n\n\t// InventoryQueryOperatorTypeExists is a InventoryQueryOperatorType enum value\n\tInventoryQueryOperatorTypeExists = \"Exists\"\n)\n\n// InventoryQueryOperatorType_Values returns all elements of the InventoryQueryOperatorType enum\nfunc InventoryQueryOperatorType_Values() []string {\n\treturn []string{\n\t\tInventoryQueryOperatorTypeEqual,\n\t\tInventoryQueryOperatorTypeNotEqual,\n\t\tInventoryQueryOperatorTypeBeginWith,\n\t\tInventoryQueryOperatorTypeLessThan,\n\t\tInventoryQueryOperatorTypeGreaterThan,\n\t\tInventoryQueryOperatorTypeExists,\n\t}\n}\n\nconst (\n\t// InventorySchemaDeleteOptionDisableSchema is a InventorySchemaDeleteOption enum value\n\tInventorySchemaDeleteOptionDisableSchema = \"DisableSchema\"\n\n\t// InventorySchemaDeleteOptionDeleteSchema is a InventorySchemaDeleteOption enum value\n\tInventorySchemaDeleteOptionDeleteSchema = \"DeleteSchema\"\n)\n\n// InventorySchemaDeleteOption_Values returns all elements of the InventorySchemaDeleteOption enum\nfunc InventorySchemaDeleteOption_Values() []string {\n\treturn []string{\n\t\tInventorySchemaDeleteOptionDisableSchema,\n\t\tInventorySchemaDeleteOptionDeleteSchema,\n\t}\n}\n\nconst (\n\t// LastResourceDataSyncStatusSuccessful is a LastResourceDataSyncStatus enum value\n\tLastResourceDataSyncStatusSuccessful = \"Successful\"\n\n\t// LastResourceDataSyncStatusFailed is a LastResourceDataSyncStatus enum value\n\tLastResourceDataSyncStatusFailed = \"Failed\"\n\n\t// LastResourceDataSyncStatusInProgress is a LastResourceDataSyncStatus enum value\n\tLastResourceDataSyncStatusInProgress = \"InProgress\"\n)\n\n// LastResourceDataSyncStatus_Values returns all elements of the LastResourceDataSyncStatus enum\nfunc LastResourceDataSyncStatus_Values() []string {\n\treturn []string{\n\t\tLastResourceDataSyncStatusSuccessful,\n\t\tLastResourceDataSyncStatusFailed,\n\t\tLastResourceDataSyncStatusInProgress,\n\t}\n}\n\nconst (\n\t// MaintenanceWindowExecutionStatusPending is a MaintenanceWindowExecutionStatus enum value\n\tMaintenanceWindowExecutionStatusPending = \"PENDING\"\n\n\t// MaintenanceWindowExecutionStatusInProgress is a MaintenanceWindowExecutionStatus enum value\n\tMaintenanceWindowExecutionStatusInProgress = \"IN_PROGRESS\"\n\n\t// MaintenanceWindowExecutionStatusSuccess is a MaintenanceWindowExecutionStatus enum value\n\tMaintenanceWindowExecutionStatusSuccess = \"SUCCESS\"\n\n\t// MaintenanceWindowExecutionStatusFailed is a MaintenanceWindowExecutionStatus enum value\n\tMaintenanceWindowExecutionStatusFailed = \"FAILED\"\n\n\t// MaintenanceWindowExecutionStatusTimedOut is a MaintenanceWindowExecutionStatus enum value\n\tMaintenanceWindowExecutionStatusTimedOut = \"TIMED_OUT\"\n\n\t// MaintenanceWindowExecutionStatusCancelling is a MaintenanceWindowExecutionStatus enum value\n\tMaintenanceWindowExecutionStatusCancelling = \"CANCELLING\"\n\n\t// MaintenanceWindowExecutionStatusCancelled is a MaintenanceWindowExecutionStatus enum value\n\tMaintenanceWindowExecutionStatusCancelled = \"CANCELLED\"\n\n\t// MaintenanceWindowExecutionStatusSkippedOverlapping is a MaintenanceWindowExecutionStatus enum value\n\tMaintenanceWindowExecutionStatusSkippedOverlapping = \"SKIPPED_OVERLAPPING\"\n)\n\n// MaintenanceWindowExecutionStatus_Values returns all elements of the MaintenanceWindowExecutionStatus enum\nfunc MaintenanceWindowExecutionStatus_Values() []string {\n\treturn []string{\n\t\tMaintenanceWindowExecutionStatusPending,\n\t\tMaintenanceWindowExecutionStatusInProgress,\n\t\tMaintenanceWindowExecutionStatusSuccess,\n\t\tMaintenanceWindowExecutionStatusFailed,\n\t\tMaintenanceWindowExecutionStatusTimedOut,\n\t\tMaintenanceWindowExecutionStatusCancelling,\n\t\tMaintenanceWindowExecutionStatusCancelled,\n\t\tMaintenanceWindowExecutionStatusSkippedOverlapping,\n\t}\n}\n\nconst (\n\t// MaintenanceWindowResourceTypeInstance is a MaintenanceWindowResourceType enum value\n\tMaintenanceWindowResourceTypeInstance = \"INSTANCE\"\n\n\t// MaintenanceWindowResourceTypeResourceGroup is a MaintenanceWindowResourceType enum value\n\tMaintenanceWindowResourceTypeResourceGroup = \"RESOURCE_GROUP\"\n)\n\n// MaintenanceWindowResourceType_Values returns all elements of the MaintenanceWindowResourceType enum\nfunc MaintenanceWindowResourceType_Values() []string {\n\treturn []string{\n\t\tMaintenanceWindowResourceTypeInstance,\n\t\tMaintenanceWindowResourceTypeResourceGroup,\n\t}\n}\n\nconst (\n\t// MaintenanceWindowTaskCutoffBehaviorContinueTask is a MaintenanceWindowTaskCutoffBehavior enum value\n\tMaintenanceWindowTaskCutoffBehaviorContinueTask = \"CONTINUE_TASK\"\n\n\t// MaintenanceWindowTaskCutoffBehaviorCancelTask is a MaintenanceWindowTaskCutoffBehavior enum value\n\tMaintenanceWindowTaskCutoffBehaviorCancelTask = \"CANCEL_TASK\"\n)\n\n// MaintenanceWindowTaskCutoffBehavior_Values returns all elements of the MaintenanceWindowTaskCutoffBehavior enum\nfunc MaintenanceWindowTaskCutoffBehavior_Values() []string {\n\treturn []string{\n\t\tMaintenanceWindowTaskCutoffBehaviorContinueTask,\n\t\tMaintenanceWindowTaskCutoffBehaviorCancelTask,\n\t}\n}\n\nconst (\n\t// MaintenanceWindowTaskTypeRunCommand is a MaintenanceWindowTaskType enum value\n\tMaintenanceWindowTaskTypeRunCommand = \"RUN_COMMAND\"\n\n\t// MaintenanceWindowTaskTypeAutomation is a MaintenanceWindowTaskType enum value\n\tMaintenanceWindowTaskTypeAutomation = \"AUTOMATION\"\n\n\t// MaintenanceWindowTaskTypeStepFunctions is a MaintenanceWindowTaskType enum value\n\tMaintenanceWindowTaskTypeStepFunctions = \"STEP_FUNCTIONS\"\n\n\t// MaintenanceWindowTaskTypeLambda is a MaintenanceWindowTaskType enum value\n\tMaintenanceWindowTaskTypeLambda = \"LAMBDA\"\n)\n\n// MaintenanceWindowTaskType_Values returns all elements of the MaintenanceWindowTaskType enum\nfunc MaintenanceWindowTaskType_Values() []string {\n\treturn []string{\n\t\tMaintenanceWindowTaskTypeRunCommand,\n\t\tMaintenanceWindowTaskTypeAutomation,\n\t\tMaintenanceWindowTaskTypeStepFunctions,\n\t\tMaintenanceWindowTaskTypeLambda,\n\t}\n}\n\nconst (\n\t// NotificationEventAll is a NotificationEvent enum value\n\tNotificationEventAll = \"All\"\n\n\t// NotificationEventInProgress is a NotificationEvent enum value\n\tNotificationEventInProgress = \"InProgress\"\n\n\t// NotificationEventSuccess is a NotificationEvent enum value\n\tNotificationEventSuccess = \"Success\"\n\n\t// NotificationEventTimedOut is a NotificationEvent enum value\n\tNotificationEventTimedOut = \"TimedOut\"\n\n\t// NotificationEventCancelled is a NotificationEvent enum value\n\tNotificationEventCancelled = \"Cancelled\"\n\n\t// NotificationEventFailed is a NotificationEvent enum value\n\tNotificationEventFailed = \"Failed\"\n)\n\n// NotificationEvent_Values returns all elements of the NotificationEvent enum\nfunc NotificationEvent_Values() []string {\n\treturn []string{\n\t\tNotificationEventAll,\n\t\tNotificationEventInProgress,\n\t\tNotificationEventSuccess,\n\t\tNotificationEventTimedOut,\n\t\tNotificationEventCancelled,\n\t\tNotificationEventFailed,\n\t}\n}\n\nconst (\n\t// NotificationTypeCommand is a NotificationType enum value\n\tNotificationTypeCommand = \"Command\"\n\n\t// NotificationTypeInvocation is a NotificationType enum value\n\tNotificationTypeInvocation = \"Invocation\"\n)\n\n// NotificationType_Values returns all elements of the NotificationType enum\nfunc NotificationType_Values() []string {\n\treturn []string{\n\t\tNotificationTypeCommand,\n\t\tNotificationTypeInvocation,\n\t}\n}\n\nconst (\n\t// OperatingSystemWindows is a OperatingSystem enum value\n\tOperatingSystemWindows = \"WINDOWS\"\n\n\t// OperatingSystemAmazonLinux is a OperatingSystem enum value\n\tOperatingSystemAmazonLinux = \"AMAZON_LINUX\"\n\n\t// OperatingSystemAmazonLinux2 is a OperatingSystem enum value\n\tOperatingSystemAmazonLinux2 = \"AMAZON_LINUX_2\"\n\n\t// OperatingSystemAmazonLinux2022 is a OperatingSystem enum value\n\tOperatingSystemAmazonLinux2022 = \"AMAZON_LINUX_2022\"\n\n\t// OperatingSystemUbuntu is a OperatingSystem enum value\n\tOperatingSystemUbuntu = \"UBUNTU\"\n\n\t// OperatingSystemRedhatEnterpriseLinux is a OperatingSystem enum value\n\tOperatingSystemRedhatEnterpriseLinux = \"REDHAT_ENTERPRISE_LINUX\"\n\n\t// OperatingSystemSuse is a OperatingSystem enum value\n\tOperatingSystemSuse = \"SUSE\"\n\n\t// OperatingSystemCentos is a OperatingSystem enum value\n\tOperatingSystemCentos = \"CENTOS\"\n\n\t// OperatingSystemOracleLinux is a OperatingSystem enum value\n\tOperatingSystemOracleLinux = \"ORACLE_LINUX\"\n\n\t// OperatingSystemDebian is a OperatingSystem enum value\n\tOperatingSystemDebian = \"DEBIAN\"\n\n\t// OperatingSystemMacos is a OperatingSystem enum value\n\tOperatingSystemMacos = \"MACOS\"\n\n\t// OperatingSystemRaspbian is a OperatingSystem enum value\n\tOperatingSystemRaspbian = \"RASPBIAN\"\n\n\t// OperatingSystemRockyLinux is a OperatingSystem enum value\n\tOperatingSystemRockyLinux = \"ROCKY_LINUX\"\n\n\t// OperatingSystemAlmaLinux is a OperatingSystem enum value\n\tOperatingSystemAlmaLinux = \"ALMA_LINUX\"\n\n\t// OperatingSystemAmazonLinux2023 is a OperatingSystem enum value\n\tOperatingSystemAmazonLinux2023 = \"AMAZON_LINUX_2023\"\n)\n\n// OperatingSystem_Values returns all elements of the OperatingSystem enum\nfunc OperatingSystem_Values() []string {\n\treturn []string{\n\t\tOperatingSystemWindows,\n\t\tOperatingSystemAmazonLinux,\n\t\tOperatingSystemAmazonLinux2,\n\t\tOperatingSystemAmazonLinux2022,\n\t\tOperatingSystemUbuntu,\n\t\tOperatingSystemRedhatEnterpriseLinux,\n\t\tOperatingSystemSuse,\n\t\tOperatingSystemCentos,\n\t\tOperatingSystemOracleLinux,\n\t\tOperatingSystemDebian,\n\t\tOperatingSystemMacos,\n\t\tOperatingSystemRaspbian,\n\t\tOperatingSystemRockyLinux,\n\t\tOperatingSystemAlmaLinux,\n\t\tOperatingSystemAmazonLinux2023,\n\t}\n}\n\nconst (\n\t// OpsFilterOperatorTypeEqual is a OpsFilterOperatorType enum value\n\tOpsFilterOperatorTypeEqual = \"Equal\"\n\n\t// OpsFilterOperatorTypeNotEqual is a OpsFilterOperatorType enum value\n\tOpsFilterOperatorTypeNotEqual = \"NotEqual\"\n\n\t// OpsFilterOperatorTypeBeginWith is a OpsFilterOperatorType enum value\n\tOpsFilterOperatorTypeBeginWith = \"BeginWith\"\n\n\t// OpsFilterOperatorTypeLessThan is a OpsFilterOperatorType enum value\n\tOpsFilterOperatorTypeLessThan = \"LessThan\"\n\n\t// OpsFilterOperatorTypeGreaterThan is a OpsFilterOperatorType enum value\n\tOpsFilterOperatorTypeGreaterThan = \"GreaterThan\"\n\n\t// OpsFilterOperatorTypeExists is a OpsFilterOperatorType enum value\n\tOpsFilterOperatorTypeExists = \"Exists\"\n)\n\n// OpsFilterOperatorType_Values returns all elements of the OpsFilterOperatorType enum\nfunc OpsFilterOperatorType_Values() []string {\n\treturn []string{\n\t\tOpsFilterOperatorTypeEqual,\n\t\tOpsFilterOperatorTypeNotEqual,\n\t\tOpsFilterOperatorTypeBeginWith,\n\t\tOpsFilterOperatorTypeLessThan,\n\t\tOpsFilterOperatorTypeGreaterThan,\n\t\tOpsFilterOperatorTypeExists,\n\t}\n}\n\nconst (\n\t// OpsItemDataTypeSearchableString is a OpsItemDataType enum value\n\tOpsItemDataTypeSearchableString = \"SearchableString\"\n\n\t// OpsItemDataTypeString is a OpsItemDataType enum value\n\tOpsItemDataTypeString = \"String\"\n)\n\n// OpsItemDataType_Values returns all elements of the OpsItemDataType enum\nfunc OpsItemDataType_Values() []string {\n\treturn []string{\n\t\tOpsItemDataTypeSearchableString,\n\t\tOpsItemDataTypeString,\n\t}\n}\n\nconst (\n\t// OpsItemEventFilterKeyOpsItemId is a OpsItemEventFilterKey enum value\n\tOpsItemEventFilterKeyOpsItemId = \"OpsItemId\"\n)\n\n// OpsItemEventFilterKey_Values returns all elements of the OpsItemEventFilterKey enum\nfunc OpsItemEventFilterKey_Values() []string {\n\treturn []string{\n\t\tOpsItemEventFilterKeyOpsItemId,\n\t}\n}\n\nconst (\n\t// OpsItemEventFilterOperatorEqual is a OpsItemEventFilterOperator enum value\n\tOpsItemEventFilterOperatorEqual = \"Equal\"\n)\n\n// OpsItemEventFilterOperator_Values returns all elements of the OpsItemEventFilterOperator enum\nfunc OpsItemEventFilterOperator_Values() []string {\n\treturn []string{\n\t\tOpsItemEventFilterOperatorEqual,\n\t}\n}\n\nconst (\n\t// OpsItemFilterKeyStatus is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyStatus = \"Status\"\n\n\t// OpsItemFilterKeyCreatedBy is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyCreatedBy = \"CreatedBy\"\n\n\t// OpsItemFilterKeySource is a OpsItemFilterKey enum value\n\tOpsItemFilterKeySource = \"Source\"\n\n\t// OpsItemFilterKeyPriority is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyPriority = \"Priority\"\n\n\t// OpsItemFilterKeyTitle is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyTitle = \"Title\"\n\n\t// OpsItemFilterKeyOpsItemId is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyOpsItemId = \"OpsItemId\"\n\n\t// OpsItemFilterKeyCreatedTime is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyCreatedTime = \"CreatedTime\"\n\n\t// OpsItemFilterKeyLastModifiedTime is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyLastModifiedTime = \"LastModifiedTime\"\n\n\t// OpsItemFilterKeyActualStartTime is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyActualStartTime = \"ActualStartTime\"\n\n\t// OpsItemFilterKeyActualEndTime is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyActualEndTime = \"ActualEndTime\"\n\n\t// OpsItemFilterKeyPlannedStartTime is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyPlannedStartTime = \"PlannedStartTime\"\n\n\t// OpsItemFilterKeyPlannedEndTime is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyPlannedEndTime = \"PlannedEndTime\"\n\n\t// OpsItemFilterKeyOperationalData is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyOperationalData = \"OperationalData\"\n\n\t// OpsItemFilterKeyOperationalDataKey is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyOperationalDataKey = \"OperationalDataKey\"\n\n\t// OpsItemFilterKeyOperationalDataValue is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyOperationalDataValue = \"OperationalDataValue\"\n\n\t// OpsItemFilterKeyResourceId is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyResourceId = \"ResourceId\"\n\n\t// OpsItemFilterKeyAutomationId is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyAutomationId = \"AutomationId\"\n\n\t// OpsItemFilterKeyCategory is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyCategory = \"Category\"\n\n\t// OpsItemFilterKeySeverity is a OpsItemFilterKey enum value\n\tOpsItemFilterKeySeverity = \"Severity\"\n\n\t// OpsItemFilterKeyOpsItemType is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyOpsItemType = \"OpsItemType\"\n\n\t// OpsItemFilterKeyChangeRequestByRequesterArn is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyChangeRequestByRequesterArn = \"ChangeRequestByRequesterArn\"\n\n\t// OpsItemFilterKeyChangeRequestByRequesterName is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyChangeRequestByRequesterName = \"ChangeRequestByRequesterName\"\n\n\t// OpsItemFilterKeyChangeRequestByApproverArn is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyChangeRequestByApproverArn = \"ChangeRequestByApproverArn\"\n\n\t// OpsItemFilterKeyChangeRequestByApproverName is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyChangeRequestByApproverName = \"ChangeRequestByApproverName\"\n\n\t// OpsItemFilterKeyChangeRequestByTemplate is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyChangeRequestByTemplate = \"ChangeRequestByTemplate\"\n\n\t// OpsItemFilterKeyChangeRequestByTargetsResourceGroup is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyChangeRequestByTargetsResourceGroup = \"ChangeRequestByTargetsResourceGroup\"\n\n\t// OpsItemFilterKeyInsightByType is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyInsightByType = \"InsightByType\"\n\n\t// OpsItemFilterKeyAccountId is a OpsItemFilterKey enum value\n\tOpsItemFilterKeyAccountId = \"AccountId\"\n)\n\n// OpsItemFilterKey_Values returns all elements of the OpsItemFilterKey enum\nfunc OpsItemFilterKey_Values() []string {\n\treturn []string{\n\t\tOpsItemFilterKeyStatus,\n\t\tOpsItemFilterKeyCreatedBy,\n\t\tOpsItemFilterKeySource,\n\t\tOpsItemFilterKeyPriority,\n\t\tOpsItemFilterKeyTitle,\n\t\tOpsItemFilterKeyOpsItemId,\n\t\tOpsItemFilterKeyCreatedTime,\n\t\tOpsItemFilterKeyLastModifiedTime,\n\t\tOpsItemFilterKeyActualStartTime,\n\t\tOpsItemFilterKeyActualEndTime,\n\t\tOpsItemFilterKeyPlannedStartTime,\n\t\tOpsItemFilterKeyPlannedEndTime,\n\t\tOpsItemFilterKeyOperationalData,\n\t\tOpsItemFilterKeyOperationalDataKey,\n\t\tOpsItemFilterKeyOperationalDataValue,\n\t\tOpsItemFilterKeyResourceId,\n\t\tOpsItemFilterKeyAutomationId,\n\t\tOpsItemFilterKeyCategory,\n\t\tOpsItemFilterKeySeverity,\n\t\tOpsItemFilterKeyOpsItemType,\n\t\tOpsItemFilterKeyChangeRequestByRequesterArn,\n\t\tOpsItemFilterKeyChangeRequestByRequesterName,\n\t\tOpsItemFilterKeyChangeRequestByApproverArn,\n\t\tOpsItemFilterKeyChangeRequestByApproverName,\n\t\tOpsItemFilterKeyChangeRequestByTemplate,\n\t\tOpsItemFilterKeyChangeRequestByTargetsResourceGroup,\n\t\tOpsItemFilterKeyInsightByType,\n\t\tOpsItemFilterKeyAccountId,\n\t}\n}\n\nconst (\n\t// OpsItemFilterOperatorEqual is a OpsItemFilterOperator enum value\n\tOpsItemFilterOperatorEqual = \"Equal\"\n\n\t// OpsItemFilterOperatorContains is a OpsItemFilterOperator enum value\n\tOpsItemFilterOperatorContains = \"Contains\"\n\n\t// OpsItemFilterOperatorGreaterThan is a OpsItemFilterOperator enum value\n\tOpsItemFilterOperatorGreaterThan = \"GreaterThan\"\n\n\t// OpsItemFilterOperatorLessThan is a OpsItemFilterOperator enum value\n\tOpsItemFilterOperatorLessThan = \"LessThan\"\n)\n\n// OpsItemFilterOperator_Values returns all elements of the OpsItemFilterOperator enum\nfunc OpsItemFilterOperator_Values() []string {\n\treturn []string{\n\t\tOpsItemFilterOperatorEqual,\n\t\tOpsItemFilterOperatorContains,\n\t\tOpsItemFilterOperatorGreaterThan,\n\t\tOpsItemFilterOperatorLessThan,\n\t}\n}\n\nconst (\n\t// OpsItemRelatedItemsFilterKeyResourceType is a OpsItemRelatedItemsFilterKey enum value\n\tOpsItemRelatedItemsFilterKeyResourceType = \"ResourceType\"\n\n\t// OpsItemRelatedItemsFilterKeyAssociationId is a OpsItemRelatedItemsFilterKey enum value\n\tOpsItemRelatedItemsFilterKeyAssociationId = \"AssociationId\"\n\n\t// OpsItemRelatedItemsFilterKeyResourceUri is a OpsItemRelatedItemsFilterKey enum value\n\tOpsItemRelatedItemsFilterKeyResourceUri = \"ResourceUri\"\n)\n\n// OpsItemRelatedItemsFilterKey_Values returns all elements of the OpsItemRelatedItemsFilterKey enum\nfunc OpsItemRelatedItemsFilterKey_Values() []string {\n\treturn []string{\n\t\tOpsItemRelatedItemsFilterKeyResourceType,\n\t\tOpsItemRelatedItemsFilterKeyAssociationId,\n\t\tOpsItemRelatedItemsFilterKeyResourceUri,\n\t}\n}\n\nconst (\n\t// OpsItemRelatedItemsFilterOperatorEqual is a OpsItemRelatedItemsFilterOperator enum value\n\tOpsItemRelatedItemsFilterOperatorEqual = \"Equal\"\n)\n\n// OpsItemRelatedItemsFilterOperator_Values returns all elements of the OpsItemRelatedItemsFilterOperator enum\nfunc OpsItemRelatedItemsFilterOperator_Values() []string {\n\treturn []string{\n\t\tOpsItemRelatedItemsFilterOperatorEqual,\n\t}\n}\n\nconst (\n\t// OpsItemStatusOpen is a OpsItemStatus enum value\n\tOpsItemStatusOpen = \"Open\"\n\n\t// OpsItemStatusInProgress is a OpsItemStatus enum value\n\tOpsItemStatusInProgress = \"InProgress\"\n\n\t// OpsItemStatusResolved is a OpsItemStatus enum value\n\tOpsItemStatusResolved = \"Resolved\"\n\n\t// OpsItemStatusPending is a OpsItemStatus enum value\n\tOpsItemStatusPending = \"Pending\"\n\n\t// OpsItemStatusTimedOut is a OpsItemStatus enum value\n\tOpsItemStatusTimedOut = \"TimedOut\"\n\n\t// OpsItemStatusCancelling is a OpsItemStatus enum value\n\tOpsItemStatusCancelling = \"Cancelling\"\n\n\t// OpsItemStatusCancelled is a OpsItemStatus enum value\n\tOpsItemStatusCancelled = \"Cancelled\"\n\n\t// OpsItemStatusFailed is a OpsItemStatus enum value\n\tOpsItemStatusFailed = \"Failed\"\n\n\t// OpsItemStatusCompletedWithSuccess is a OpsItemStatus enum value\n\tOpsItemStatusCompletedWithSuccess = \"CompletedWithSuccess\"\n\n\t// OpsItemStatusCompletedWithFailure is a OpsItemStatus enum value\n\tOpsItemStatusCompletedWithFailure = \"CompletedWithFailure\"\n\n\t// OpsItemStatusScheduled is a OpsItemStatus enum value\n\tOpsItemStatusScheduled = \"Scheduled\"\n\n\t// OpsItemStatusRunbookInProgress is a OpsItemStatus enum value\n\tOpsItemStatusRunbookInProgress = \"RunbookInProgress\"\n\n\t// OpsItemStatusPendingChangeCalendarOverride is a OpsItemStatus enum value\n\tOpsItemStatusPendingChangeCalendarOverride = \"PendingChangeCalendarOverride\"\n\n\t// OpsItemStatusChangeCalendarOverrideApproved is a OpsItemStatus enum value\n\tOpsItemStatusChangeCalendarOverrideApproved = \"ChangeCalendarOverrideApproved\"\n\n\t// OpsItemStatusChangeCalendarOverrideRejected is a OpsItemStatus enum value\n\tOpsItemStatusChangeCalendarOverrideRejected = \"ChangeCalendarOverrideRejected\"\n\n\t// OpsItemStatusPendingApproval is a OpsItemStatus enum value\n\tOpsItemStatusPendingApproval = \"PendingApproval\"\n\n\t// OpsItemStatusApproved is a OpsItemStatus enum value\n\tOpsItemStatusApproved = \"Approved\"\n\n\t// OpsItemStatusRejected is a OpsItemStatus enum value\n\tOpsItemStatusRejected = \"Rejected\"\n\n\t// OpsItemStatusClosed is a OpsItemStatus enum value\n\tOpsItemStatusClosed = \"Closed\"\n)\n\n// OpsItemStatus_Values returns all elements of the OpsItemStatus enum\nfunc OpsItemStatus_Values() []string {\n\treturn []string{\n\t\tOpsItemStatusOpen,\n\t\tOpsItemStatusInProgress,\n\t\tOpsItemStatusResolved,\n\t\tOpsItemStatusPending,\n\t\tOpsItemStatusTimedOut,\n\t\tOpsItemStatusCancelling,\n\t\tOpsItemStatusCancelled,\n\t\tOpsItemStatusFailed,\n\t\tOpsItemStatusCompletedWithSuccess,\n\t\tOpsItemStatusCompletedWithFailure,\n\t\tOpsItemStatusScheduled,\n\t\tOpsItemStatusRunbookInProgress,\n\t\tOpsItemStatusPendingChangeCalendarOverride,\n\t\tOpsItemStatusChangeCalendarOverrideApproved,\n\t\tOpsItemStatusChangeCalendarOverrideRejected,\n\t\tOpsItemStatusPendingApproval,\n\t\tOpsItemStatusApproved,\n\t\tOpsItemStatusRejected,\n\t\tOpsItemStatusClosed,\n\t}\n}\n\nconst (\n\t// ParameterTierStandard is a ParameterTier enum value\n\tParameterTierStandard = \"Standard\"\n\n\t// ParameterTierAdvanced is a ParameterTier enum value\n\tParameterTierAdvanced = \"Advanced\"\n\n\t// ParameterTierIntelligentTiering is a ParameterTier enum value\n\tParameterTierIntelligentTiering = \"Intelligent-Tiering\"\n)\n\n// ParameterTier_Values returns all elements of the ParameterTier enum\nfunc ParameterTier_Values() []string {\n\treturn []string{\n\t\tParameterTierStandard,\n\t\tParameterTierAdvanced,\n\t\tParameterTierIntelligentTiering,\n\t}\n}\n\nconst (\n\t// ParameterTypeString is a ParameterType enum value\n\tParameterTypeString = \"String\"\n\n\t// ParameterTypeStringList is a ParameterType enum value\n\tParameterTypeStringList = \"StringList\"\n\n\t// ParameterTypeSecureString is a ParameterType enum value\n\tParameterTypeSecureString = \"SecureString\"\n)\n\n// ParameterType_Values returns all elements of the ParameterType enum\nfunc ParameterType_Values() []string {\n\treturn []string{\n\t\tParameterTypeString,\n\t\tParameterTypeStringList,\n\t\tParameterTypeSecureString,\n\t}\n}\n\nconst (\n\t// ParametersFilterKeyName is a ParametersFilterKey enum value\n\tParametersFilterKeyName = \"Name\"\n\n\t// ParametersFilterKeyType is a ParametersFilterKey enum value\n\tParametersFilterKeyType = \"Type\"\n\n\t// ParametersFilterKeyKeyId is a ParametersFilterKey enum value\n\tParametersFilterKeyKeyId = \"KeyId\"\n)\n\n// ParametersFilterKey_Values returns all elements of the ParametersFilterKey enum\nfunc ParametersFilterKey_Values() []string {\n\treturn []string{\n\t\tParametersFilterKeyName,\n\t\tParametersFilterKeyType,\n\t\tParametersFilterKeyKeyId,\n\t}\n}\n\nconst (\n\t// PatchActionAllowAsDependency is a PatchAction enum value\n\tPatchActionAllowAsDependency = \"ALLOW_AS_DEPENDENCY\"\n\n\t// PatchActionBlock is a PatchAction enum value\n\tPatchActionBlock = \"BLOCK\"\n)\n\n// PatchAction_Values returns all elements of the PatchAction enum\nfunc PatchAction_Values() []string {\n\treturn []string{\n\t\tPatchActionAllowAsDependency,\n\t\tPatchActionBlock,\n\t}\n}\n\nconst (\n\t// PatchComplianceDataStateInstalled is a PatchComplianceDataState enum value\n\tPatchComplianceDataStateInstalled = \"INSTALLED\"\n\n\t// PatchComplianceDataStateInstalledOther is a PatchComplianceDataState enum value\n\tPatchComplianceDataStateInstalledOther = \"INSTALLED_OTHER\"\n\n\t// PatchComplianceDataStateInstalledPendingReboot is a PatchComplianceDataState enum value\n\tPatchComplianceDataStateInstalledPendingReboot = \"INSTALLED_PENDING_REBOOT\"\n\n\t// PatchComplianceDataStateInstalledRejected is a PatchComplianceDataState enum value\n\tPatchComplianceDataStateInstalledRejected = \"INSTALLED_REJECTED\"\n\n\t// PatchComplianceDataStateMissing is a PatchComplianceDataState enum value\n\tPatchComplianceDataStateMissing = \"MISSING\"\n\n\t// PatchComplianceDataStateNotApplicable is a PatchComplianceDataState enum value\n\tPatchComplianceDataStateNotApplicable = \"NOT_APPLICABLE\"\n\n\t// PatchComplianceDataStateFailed is a PatchComplianceDataState enum value\n\tPatchComplianceDataStateFailed = \"FAILED\"\n)\n\n// PatchComplianceDataState_Values returns all elements of the PatchComplianceDataState enum\nfunc PatchComplianceDataState_Values() []string {\n\treturn []string{\n\t\tPatchComplianceDataStateInstalled,\n\t\tPatchComplianceDataStateInstalledOther,\n\t\tPatchComplianceDataStateInstalledPendingReboot,\n\t\tPatchComplianceDataStateInstalledRejected,\n\t\tPatchComplianceDataStateMissing,\n\t\tPatchComplianceDataStateNotApplicable,\n\t\tPatchComplianceDataStateFailed,\n\t}\n}\n\nconst (\n\t// PatchComplianceLevelCritical is a PatchComplianceLevel enum value\n\tPatchComplianceLevelCritical = \"CRITICAL\"\n\n\t// PatchComplianceLevelHigh is a PatchComplianceLevel enum value\n\tPatchComplianceLevelHigh = \"HIGH\"\n\n\t// PatchComplianceLevelMedium is a PatchComplianceLevel enum value\n\tPatchComplianceLevelMedium = \"MEDIUM\"\n\n\t// PatchComplianceLevelLow is a PatchComplianceLevel enum value\n\tPatchComplianceLevelLow = \"LOW\"\n\n\t// PatchComplianceLevelInformational is a PatchComplianceLevel enum value\n\tPatchComplianceLevelInformational = \"INFORMATIONAL\"\n\n\t// PatchComplianceLevelUnspecified is a PatchComplianceLevel enum value\n\tPatchComplianceLevelUnspecified = \"UNSPECIFIED\"\n)\n\n// PatchComplianceLevel_Values returns all elements of the PatchComplianceLevel enum\nfunc PatchComplianceLevel_Values() []string {\n\treturn []string{\n\t\tPatchComplianceLevelCritical,\n\t\tPatchComplianceLevelHigh,\n\t\tPatchComplianceLevelMedium,\n\t\tPatchComplianceLevelLow,\n\t\tPatchComplianceLevelInformational,\n\t\tPatchComplianceLevelUnspecified,\n\t}\n}\n\nconst (\n\t// PatchDeploymentStatusApproved is a PatchDeploymentStatus enum value\n\tPatchDeploymentStatusApproved = \"APPROVED\"\n\n\t// PatchDeploymentStatusPendingApproval is a PatchDeploymentStatus enum value\n\tPatchDeploymentStatusPendingApproval = \"PENDING_APPROVAL\"\n\n\t// PatchDeploymentStatusExplicitApproved is a PatchDeploymentStatus enum value\n\tPatchDeploymentStatusExplicitApproved = \"EXPLICIT_APPROVED\"\n\n\t// PatchDeploymentStatusExplicitRejected is a PatchDeploymentStatus enum value\n\tPatchDeploymentStatusExplicitRejected = \"EXPLICIT_REJECTED\"\n)\n\n// PatchDeploymentStatus_Values returns all elements of the PatchDeploymentStatus enum\nfunc PatchDeploymentStatus_Values() []string {\n\treturn []string{\n\t\tPatchDeploymentStatusApproved,\n\t\tPatchDeploymentStatusPendingApproval,\n\t\tPatchDeploymentStatusExplicitApproved,\n\t\tPatchDeploymentStatusExplicitRejected,\n\t}\n}\n\nconst (\n\t// PatchFilterKeyArch is a PatchFilterKey enum value\n\tPatchFilterKeyArch = \"ARCH\"\n\n\t// PatchFilterKeyAdvisoryId is a PatchFilterKey enum value\n\tPatchFilterKeyAdvisoryId = \"ADVISORY_ID\"\n\n\t// PatchFilterKeyBugzillaId is a PatchFilterKey enum value\n\tPatchFilterKeyBugzillaId = \"BUGZILLA_ID\"\n\n\t// PatchFilterKeyPatchSet is a PatchFilterKey enum value\n\tPatchFilterKeyPatchSet = \"PATCH_SET\"\n\n\t// PatchFilterKeyProduct is a PatchFilterKey enum value\n\tPatchFilterKeyProduct = \"PRODUCT\"\n\n\t// PatchFilterKeyProductFamily is a PatchFilterKey enum value\n\tPatchFilterKeyProductFamily = \"PRODUCT_FAMILY\"\n\n\t// PatchFilterKeyClassification is a PatchFilterKey enum value\n\tPatchFilterKeyClassification = \"CLASSIFICATION\"\n\n\t// PatchFilterKeyCveId is a PatchFilterKey enum value\n\tPatchFilterKeyCveId = \"CVE_ID\"\n\n\t// PatchFilterKeyEpoch is a PatchFilterKey enum value\n\tPatchFilterKeyEpoch = \"EPOCH\"\n\n\t// PatchFilterKeyMsrcSeverity is a PatchFilterKey enum value\n\tPatchFilterKeyMsrcSeverity = \"MSRC_SEVERITY\"\n\n\t// PatchFilterKeyName is a PatchFilterKey enum value\n\tPatchFilterKeyName = \"NAME\"\n\n\t// PatchFilterKeyPatchId is a PatchFilterKey enum value\n\tPatchFilterKeyPatchId = \"PATCH_ID\"\n\n\t// PatchFilterKeySection is a PatchFilterKey enum value\n\tPatchFilterKeySection = \"SECTION\"\n\n\t// PatchFilterKeyPriority is a PatchFilterKey enum value\n\tPatchFilterKeyPriority = \"PRIORITY\"\n\n\t// PatchFilterKeyRepository is a PatchFilterKey enum value\n\tPatchFilterKeyRepository = \"REPOSITORY\"\n\n\t// PatchFilterKeyRelease is a PatchFilterKey enum value\n\tPatchFilterKeyRelease = \"RELEASE\"\n\n\t// PatchFilterKeySeverity is a PatchFilterKey enum value\n\tPatchFilterKeySeverity = \"SEVERITY\"\n\n\t// PatchFilterKeySecurity is a PatchFilterKey enum value\n\tPatchFilterKeySecurity = \"SECURITY\"\n\n\t// PatchFilterKeyVersion is a PatchFilterKey enum value\n\tPatchFilterKeyVersion = \"VERSION\"\n)\n\n// PatchFilterKey_Values returns all elements of the PatchFilterKey enum\nfunc PatchFilterKey_Values() []string {\n\treturn []string{\n\t\tPatchFilterKeyArch,\n\t\tPatchFilterKeyAdvisoryId,\n\t\tPatchFilterKeyBugzillaId,\n\t\tPatchFilterKeyPatchSet,\n\t\tPatchFilterKeyProduct,\n\t\tPatchFilterKeyProductFamily,\n\t\tPatchFilterKeyClassification,\n\t\tPatchFilterKeyCveId,\n\t\tPatchFilterKeyEpoch,\n\t\tPatchFilterKeyMsrcSeverity,\n\t\tPatchFilterKeyName,\n\t\tPatchFilterKeyPatchId,\n\t\tPatchFilterKeySection,\n\t\tPatchFilterKeyPriority,\n\t\tPatchFilterKeyRepository,\n\t\tPatchFilterKeyRelease,\n\t\tPatchFilterKeySeverity,\n\t\tPatchFilterKeySecurity,\n\t\tPatchFilterKeyVersion,\n\t}\n}\n\nconst (\n\t// PatchOperationTypeScan is a PatchOperationType enum value\n\tPatchOperationTypeScan = \"Scan\"\n\n\t// PatchOperationTypeInstall is a PatchOperationType enum value\n\tPatchOperationTypeInstall = \"Install\"\n)\n\n// PatchOperationType_Values returns all elements of the PatchOperationType enum\nfunc PatchOperationType_Values() []string {\n\treturn []string{\n\t\tPatchOperationTypeScan,\n\t\tPatchOperationTypeInstall,\n\t}\n}\n\nconst (\n\t// PatchPropertyProduct is a PatchProperty enum value\n\tPatchPropertyProduct = \"PRODUCT\"\n\n\t// PatchPropertyProductFamily is a PatchProperty enum value\n\tPatchPropertyProductFamily = \"PRODUCT_FAMILY\"\n\n\t// PatchPropertyClassification is a PatchProperty enum value\n\tPatchPropertyClassification = \"CLASSIFICATION\"\n\n\t// PatchPropertyMsrcSeverity is a PatchProperty enum value\n\tPatchPropertyMsrcSeverity = \"MSRC_SEVERITY\"\n\n\t// PatchPropertyPriority is a PatchProperty enum value\n\tPatchPropertyPriority = \"PRIORITY\"\n\n\t// PatchPropertySeverity is a PatchProperty enum value\n\tPatchPropertySeverity = \"SEVERITY\"\n)\n\n// PatchProperty_Values returns all elements of the PatchProperty enum\nfunc PatchProperty_Values() []string {\n\treturn []string{\n\t\tPatchPropertyProduct,\n\t\tPatchPropertyProductFamily,\n\t\tPatchPropertyClassification,\n\t\tPatchPropertyMsrcSeverity,\n\t\tPatchPropertyPriority,\n\t\tPatchPropertySeverity,\n\t}\n}\n\nconst (\n\t// PatchSetOs is a PatchSet enum value\n\tPatchSetOs = \"OS\"\n\n\t// PatchSetApplication is a PatchSet enum value\n\tPatchSetApplication = \"APPLICATION\"\n)\n\n// PatchSet_Values returns all elements of the PatchSet enum\nfunc PatchSet_Values() []string {\n\treturn []string{\n\t\tPatchSetOs,\n\t\tPatchSetApplication,\n\t}\n}\n\nconst (\n\t// PingStatusOnline is a PingStatus enum value\n\tPingStatusOnline = \"Online\"\n\n\t// PingStatusConnectionLost is a PingStatus enum value\n\tPingStatusConnectionLost = \"ConnectionLost\"\n\n\t// PingStatusInactive is a PingStatus enum value\n\tPingStatusInactive = \"Inactive\"\n)\n\n// PingStatus_Values returns all elements of the PingStatus enum\nfunc PingStatus_Values() []string {\n\treturn []string{\n\t\tPingStatusOnline,\n\t\tPingStatusConnectionLost,\n\t\tPingStatusInactive,\n\t}\n}\n\nconst (\n\t// PlatformTypeWindows is a PlatformType enum value\n\tPlatformTypeWindows = \"Windows\"\n\n\t// PlatformTypeLinux is a PlatformType enum value\n\tPlatformTypeLinux = \"Linux\"\n\n\t// PlatformTypeMacOs is a PlatformType enum value\n\tPlatformTypeMacOs = \"MacOS\"\n)\n\n// PlatformType_Values returns all elements of the PlatformType enum\nfunc PlatformType_Values() []string {\n\treturn []string{\n\t\tPlatformTypeWindows,\n\t\tPlatformTypeLinux,\n\t\tPlatformTypeMacOs,\n\t}\n}\n\nconst (\n\t// RebootOptionRebootIfNeeded is a RebootOption enum value\n\tRebootOptionRebootIfNeeded = \"RebootIfNeeded\"\n\n\t// RebootOptionNoReboot is a RebootOption enum value\n\tRebootOptionNoReboot = \"NoReboot\"\n)\n\n// RebootOption_Values returns all elements of the RebootOption enum\nfunc RebootOption_Values() []string {\n\treturn []string{\n\t\tRebootOptionRebootIfNeeded,\n\t\tRebootOptionNoReboot,\n\t}\n}\n\nconst (\n\t// ResourceDataSyncS3FormatJsonSerDe is a ResourceDataSyncS3Format enum value\n\tResourceDataSyncS3FormatJsonSerDe = \"JsonSerDe\"\n)\n\n// ResourceDataSyncS3Format_Values returns all elements of the ResourceDataSyncS3Format enum\nfunc ResourceDataSyncS3Format_Values() []string {\n\treturn []string{\n\t\tResourceDataSyncS3FormatJsonSerDe,\n\t}\n}\n\nconst (\n\t// ResourceTypeManagedInstance is a ResourceType enum value\n\tResourceTypeManagedInstance = \"ManagedInstance\"\n\n\t// ResourceTypeEc2instance is a ResourceType enum value\n\tResourceTypeEc2instance = \"EC2Instance\"\n)\n\n// ResourceType_Values returns all elements of the ResourceType enum\nfunc ResourceType_Values() []string {\n\treturn []string{\n\t\tResourceTypeManagedInstance,\n\t\tResourceTypeEc2instance,\n\t}\n}\n\nconst (\n\t// ResourceTypeForTaggingDocument is a ResourceTypeForTagging enum value\n\tResourceTypeForTaggingDocument = \"Document\"\n\n\t// ResourceTypeForTaggingManagedInstance is a ResourceTypeForTagging enum value\n\tResourceTypeForTaggingManagedInstance = \"ManagedInstance\"\n\n\t// ResourceTypeForTaggingMaintenanceWindow is a ResourceTypeForTagging enum value\n\tResourceTypeForTaggingMaintenanceWindow = \"MaintenanceWindow\"\n\n\t// ResourceTypeForTaggingParameter is a ResourceTypeForTagging enum value\n\tResourceTypeForTaggingParameter = \"Parameter\"\n\n\t// ResourceTypeForTaggingPatchBaseline is a ResourceTypeForTagging enum value\n\tResourceTypeForTaggingPatchBaseline = \"PatchBaseline\"\n\n\t// ResourceTypeForTaggingOpsItem is a ResourceTypeForTagging enum value\n\tResourceTypeForTaggingOpsItem = \"OpsItem\"\n\n\t// ResourceTypeForTaggingOpsMetadata is a ResourceTypeForTagging enum value\n\tResourceTypeForTaggingOpsMetadata = \"OpsMetadata\"\n\n\t// ResourceTypeForTaggingAutomation is a ResourceTypeForTagging enum value\n\tResourceTypeForTaggingAutomation = \"Automation\"\n\n\t// ResourceTypeForTaggingAssociation is a ResourceTypeForTagging enum value\n\tResourceTypeForTaggingAssociation = \"Association\"\n)\n\n// ResourceTypeForTagging_Values returns all elements of the ResourceTypeForTagging enum\nfunc ResourceTypeForTagging_Values() []string {\n\treturn []string{\n\t\tResourceTypeForTaggingDocument,\n\t\tResourceTypeForTaggingManagedInstance,\n\t\tResourceTypeForTaggingMaintenanceWindow,\n\t\tResourceTypeForTaggingParameter,\n\t\tResourceTypeForTaggingPatchBaseline,\n\t\tResourceTypeForTaggingOpsItem,\n\t\tResourceTypeForTaggingOpsMetadata,\n\t\tResourceTypeForTaggingAutomation,\n\t\tResourceTypeForTaggingAssociation,\n\t}\n}\n\nconst (\n\t// ReviewStatusApproved is a ReviewStatus enum value\n\tReviewStatusApproved = \"APPROVED\"\n\n\t// ReviewStatusNotReviewed is a ReviewStatus enum value\n\tReviewStatusNotReviewed = \"NOT_REVIEWED\"\n\n\t// ReviewStatusPending is a ReviewStatus enum value\n\tReviewStatusPending = \"PENDING\"\n\n\t// ReviewStatusRejected is a ReviewStatus enum value\n\tReviewStatusRejected = \"REJECTED\"\n)\n\n// ReviewStatus_Values returns all elements of the ReviewStatus enum\nfunc ReviewStatus_Values() []string {\n\treturn []string{\n\t\tReviewStatusApproved,\n\t\tReviewStatusNotReviewed,\n\t\tReviewStatusPending,\n\t\tReviewStatusRejected,\n\t}\n}\n\nconst (\n\t// SessionFilterKeyInvokedAfter is a SessionFilterKey enum value\n\tSessionFilterKeyInvokedAfter = \"InvokedAfter\"\n\n\t// SessionFilterKeyInvokedBefore is a SessionFilterKey enum value\n\tSessionFilterKeyInvokedBefore = \"InvokedBefore\"\n\n\t// SessionFilterKeyTarget is a SessionFilterKey enum value\n\tSessionFilterKeyTarget = \"Target\"\n\n\t// SessionFilterKeyOwner is a SessionFilterKey enum value\n\tSessionFilterKeyOwner = \"Owner\"\n\n\t// SessionFilterKeyStatus is a SessionFilterKey enum value\n\tSessionFilterKeyStatus = \"Status\"\n\n\t// SessionFilterKeySessionId is a SessionFilterKey enum value\n\tSessionFilterKeySessionId = \"SessionId\"\n)\n\n// SessionFilterKey_Values returns all elements of the SessionFilterKey enum\nfunc SessionFilterKey_Values() []string {\n\treturn []string{\n\t\tSessionFilterKeyInvokedAfter,\n\t\tSessionFilterKeyInvokedBefore,\n\t\tSessionFilterKeyTarget,\n\t\tSessionFilterKeyOwner,\n\t\tSessionFilterKeyStatus,\n\t\tSessionFilterKeySessionId,\n\t}\n}\n\nconst (\n\t// SessionStateActive is a SessionState enum value\n\tSessionStateActive = \"Active\"\n\n\t// SessionStateHistory is a SessionState enum value\n\tSessionStateHistory = \"History\"\n)\n\n// SessionState_Values returns all elements of the SessionState enum\nfunc SessionState_Values() []string {\n\treturn []string{\n\t\tSessionStateActive,\n\t\tSessionStateHistory,\n\t}\n}\n\nconst (\n\t// SessionStatusConnected is a SessionStatus enum value\n\tSessionStatusConnected = \"Connected\"\n\n\t// SessionStatusConnecting is a SessionStatus enum value\n\tSessionStatusConnecting = \"Connecting\"\n\n\t// SessionStatusDisconnected is a SessionStatus enum value\n\tSessionStatusDisconnected = \"Disconnected\"\n\n\t// SessionStatusTerminated is a SessionStatus enum value\n\tSessionStatusTerminated = \"Terminated\"\n\n\t// SessionStatusTerminating is a SessionStatus enum value\n\tSessionStatusTerminating = \"Terminating\"\n\n\t// SessionStatusFailed is a SessionStatus enum value\n\tSessionStatusFailed = \"Failed\"\n)\n\n// SessionStatus_Values returns all elements of the SessionStatus enum\nfunc SessionStatus_Values() []string {\n\treturn []string{\n\t\tSessionStatusConnected,\n\t\tSessionStatusConnecting,\n\t\tSessionStatusDisconnected,\n\t\tSessionStatusTerminated,\n\t\tSessionStatusTerminating,\n\t\tSessionStatusFailed,\n\t}\n}\n\nconst (\n\t// SignalTypeApprove is a SignalType enum value\n\tSignalTypeApprove = \"Approve\"\n\n\t// SignalTypeReject is a SignalType enum value\n\tSignalTypeReject = \"Reject\"\n\n\t// SignalTypeStartStep is a SignalType enum value\n\tSignalTypeStartStep = \"StartStep\"\n\n\t// SignalTypeStopStep is a SignalType enum value\n\tSignalTypeStopStep = \"StopStep\"\n\n\t// SignalTypeResume is a SignalType enum value\n\tSignalTypeResume = \"Resume\"\n)\n\n// SignalType_Values returns all elements of the SignalType enum\nfunc SignalType_Values() []string {\n\treturn []string{\n\t\tSignalTypeApprove,\n\t\tSignalTypeReject,\n\t\tSignalTypeStartStep,\n\t\tSignalTypeStopStep,\n\t\tSignalTypeResume,\n\t}\n}\n\nconst (\n\t// SourceTypeAwsEc2Instance is a SourceType enum value\n\tSourceTypeAwsEc2Instance = \"AWS::EC2::Instance\"\n\n\t// SourceTypeAwsIoTThing is a SourceType enum value\n\tSourceTypeAwsIoTThing = \"AWS::IoT::Thing\"\n\n\t// SourceTypeAwsSsmManagedInstance is a SourceType enum value\n\tSourceTypeAwsSsmManagedInstance = \"AWS::SSM::ManagedInstance\"\n)\n\n// SourceType_Values returns all elements of the SourceType enum\nfunc SourceType_Values() []string {\n\treturn []string{\n\t\tSourceTypeAwsEc2Instance,\n\t\tSourceTypeAwsIoTThing,\n\t\tSourceTypeAwsSsmManagedInstance,\n\t}\n}\n\nconst (\n\t// StepExecutionFilterKeyStartTimeBefore is a StepExecutionFilterKey enum value\n\tStepExecutionFilterKeyStartTimeBefore = \"StartTimeBefore\"\n\n\t// StepExecutionFilterKeyStartTimeAfter is a StepExecutionFilterKey enum value\n\tStepExecutionFilterKeyStartTimeAfter = \"StartTimeAfter\"\n\n\t// StepExecutionFilterKeyStepExecutionStatus is a StepExecutionFilterKey enum value\n\tStepExecutionFilterKeyStepExecutionStatus = \"StepExecutionStatus\"\n\n\t// StepExecutionFilterKeyStepExecutionId is a StepExecutionFilterKey enum value\n\tStepExecutionFilterKeyStepExecutionId = \"StepExecutionId\"\n\n\t// StepExecutionFilterKeyStepName is a StepExecutionFilterKey enum value\n\tStepExecutionFilterKeyStepName = \"StepName\"\n\n\t// StepExecutionFilterKeyAction is a StepExecutionFilterKey enum value\n\tStepExecutionFilterKeyAction = \"Action\"\n\n\t// StepExecutionFilterKeyParentStepExecutionId is a StepExecutionFilterKey enum value\n\tStepExecutionFilterKeyParentStepExecutionId = \"ParentStepExecutionId\"\n\n\t// StepExecutionFilterKeyParentStepIteration is a StepExecutionFilterKey enum value\n\tStepExecutionFilterKeyParentStepIteration = \"ParentStepIteration\"\n\n\t// StepExecutionFilterKeyParentStepIteratorValue is a StepExecutionFilterKey enum value\n\tStepExecutionFilterKeyParentStepIteratorValue = \"ParentStepIteratorValue\"\n)\n\n// StepExecutionFilterKey_Values returns all elements of the StepExecutionFilterKey enum\nfunc StepExecutionFilterKey_Values() []string {\n\treturn []string{\n\t\tStepExecutionFilterKeyStartTimeBefore,\n\t\tStepExecutionFilterKeyStartTimeAfter,\n\t\tStepExecutionFilterKeyStepExecutionStatus,\n\t\tStepExecutionFilterKeyStepExecutionId,\n\t\tStepExecutionFilterKeyStepName,\n\t\tStepExecutionFilterKeyAction,\n\t\tStepExecutionFilterKeyParentStepExecutionId,\n\t\tStepExecutionFilterKeyParentStepIteration,\n\t\tStepExecutionFilterKeyParentStepIteratorValue,\n\t}\n}\n\nconst (\n\t// StopTypeComplete is a StopType enum value\n\tStopTypeComplete = \"Complete\"\n\n\t// StopTypeCancel is a StopType enum value\n\tStopTypeCancel = \"Cancel\"\n)\n\n// StopType_Values returns all elements of the StopType enum\nfunc StopType_Values() []string {\n\treturn []string{\n\t\tStopTypeComplete,\n\t\tStopTypeCancel,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/ssm/doc.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\n// Package ssm provides the client and types for making API\n// requests to Amazon Simple Systems Manager (SSM).\n//\n// Amazon Web Services Systems Manager is the operations hub for your Amazon\n// Web Services applications and resources and a secure end-to-end management\n// solution for hybrid cloud environments that enables safe and secure operations\n// at scale.\n//\n// This reference is intended to be used with the Amazon Web Services Systems\n// Manager User Guide (https://docs.aws.amazon.com/systems-manager/latest/userguide/).\n// To get started, see Setting up Amazon Web Services Systems Manager (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up.html).\n//\n// Related resources\n//\n//   - For information about each of the capabilities that comprise Systems\n//     Manager, see Systems Manager capabilities (https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html#systems-manager-capabilities)\n//     in the Amazon Web Services Systems Manager User Guide.\n//\n//   - For details about predefined runbooks for Automation, a capability of\n//     Amazon Web Services Systems Manager, see the Systems Manager Automation\n//     runbook reference (https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-runbook-reference.html) .\n//\n//   - For information about AppConfig, a capability of Systems Manager, see\n//     the AppConfig User Guide (https://docs.aws.amazon.com/appconfig/latest/userguide/)\n//     and the AppConfig API Reference (https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/) .\n//\n//   - For information about Incident Manager, a capability of Systems Manager,\n//     see the Systems Manager Incident Manager User Guide (https://docs.aws.amazon.com/incident-manager/latest/userguide/)\n//     and the Systems Manager Incident Manager API Reference (https://docs.aws.amazon.com/incident-manager/latest/APIReference/) .\n//\n// See https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06 for more information on this service.\n//\n// See ssm package documentation for more information.\n// https://docs.aws.amazon.com/sdk-for-go/api/service/ssm/\n//\n// # Using the Client\n//\n// To contact Amazon Simple Systems Manager (SSM) with the SDK use the New function to create\n// a new service client. With that client you can make API requests to the service.\n// These clients are safe to use concurrently.\n//\n// See the SDK's documentation for more information on how to use the SDK.\n// https://docs.aws.amazon.com/sdk-for-go/api/\n//\n// See aws.Config documentation for more information on configuring SDK clients.\n// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config\n//\n// See the Amazon Simple Systems Manager (SSM) client SSM for more\n// information on creating client for this service.\n// https://docs.aws.amazon.com/sdk-for-go/api/service/ssm/#New\npackage ssm\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/ssm/errors.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage ssm\n\nimport (\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n)\n\nconst (\n\n\t// ErrCodeAlreadyExistsException for service response error code\n\t// \"AlreadyExistsException\".\n\t//\n\t// Error returned if an attempt is made to register a patch group with a patch\n\t// baseline that is already registered with a different patch baseline.\n\tErrCodeAlreadyExistsException = \"AlreadyExistsException\"\n\n\t// ErrCodeAssociatedInstances for service response error code\n\t// \"AssociatedInstances\".\n\t//\n\t// You must disassociate a document from all managed nodes before you can delete\n\t// it.\n\tErrCodeAssociatedInstances = \"AssociatedInstances\"\n\n\t// ErrCodeAssociationAlreadyExists for service response error code\n\t// \"AssociationAlreadyExists\".\n\t//\n\t// The specified association already exists.\n\tErrCodeAssociationAlreadyExists = \"AssociationAlreadyExists\"\n\n\t// ErrCodeAssociationDoesNotExist for service response error code\n\t// \"AssociationDoesNotExist\".\n\t//\n\t// The specified association doesn't exist.\n\tErrCodeAssociationDoesNotExist = \"AssociationDoesNotExist\"\n\n\t// ErrCodeAssociationExecutionDoesNotExist for service response error code\n\t// \"AssociationExecutionDoesNotExist\".\n\t//\n\t// The specified execution ID doesn't exist. Verify the ID number and try again.\n\tErrCodeAssociationExecutionDoesNotExist = \"AssociationExecutionDoesNotExist\"\n\n\t// ErrCodeAssociationLimitExceeded for service response error code\n\t// \"AssociationLimitExceeded\".\n\t//\n\t// You can have at most 2,000 active associations.\n\tErrCodeAssociationLimitExceeded = \"AssociationLimitExceeded\"\n\n\t// ErrCodeAssociationVersionLimitExceeded for service response error code\n\t// \"AssociationVersionLimitExceeded\".\n\t//\n\t// You have reached the maximum number versions allowed for an association.\n\t// Each association has a limit of 1,000 versions.\n\tErrCodeAssociationVersionLimitExceeded = \"AssociationVersionLimitExceeded\"\n\n\t// ErrCodeAutomationDefinitionNotApprovedException for service response error code\n\t// \"AutomationDefinitionNotApprovedException\".\n\t//\n\t// Indicates that the Change Manager change template used in the change request\n\t// was rejected or is still in a pending state.\n\tErrCodeAutomationDefinitionNotApprovedException = \"AutomationDefinitionNotApprovedException\"\n\n\t// ErrCodeAutomationDefinitionNotFoundException for service response error code\n\t// \"AutomationDefinitionNotFoundException\".\n\t//\n\t// An Automation runbook with the specified name couldn't be found.\n\tErrCodeAutomationDefinitionNotFoundException = \"AutomationDefinitionNotFoundException\"\n\n\t// ErrCodeAutomationDefinitionVersionNotFoundException for service response error code\n\t// \"AutomationDefinitionVersionNotFoundException\".\n\t//\n\t// An Automation runbook with the specified name and version couldn't be found.\n\tErrCodeAutomationDefinitionVersionNotFoundException = \"AutomationDefinitionVersionNotFoundException\"\n\n\t// ErrCodeAutomationExecutionLimitExceededException for service response error code\n\t// \"AutomationExecutionLimitExceededException\".\n\t//\n\t// The number of simultaneously running Automation executions exceeded the allowable\n\t// limit.\n\tErrCodeAutomationExecutionLimitExceededException = \"AutomationExecutionLimitExceededException\"\n\n\t// ErrCodeAutomationExecutionNotFoundException for service response error code\n\t// \"AutomationExecutionNotFoundException\".\n\t//\n\t// There is no automation execution information for the requested automation\n\t// execution ID.\n\tErrCodeAutomationExecutionNotFoundException = \"AutomationExecutionNotFoundException\"\n\n\t// ErrCodeAutomationStepNotFoundException for service response error code\n\t// \"AutomationStepNotFoundException\".\n\t//\n\t// The specified step name and execution ID don't exist. Verify the information\n\t// and try again.\n\tErrCodeAutomationStepNotFoundException = \"AutomationStepNotFoundException\"\n\n\t// ErrCodeComplianceTypeCountLimitExceededException for service response error code\n\t// \"ComplianceTypeCountLimitExceededException\".\n\t//\n\t// You specified too many custom compliance types. You can specify a maximum\n\t// of 10 different types.\n\tErrCodeComplianceTypeCountLimitExceededException = \"ComplianceTypeCountLimitExceededException\"\n\n\t// ErrCodeCustomSchemaCountLimitExceededException for service response error code\n\t// \"CustomSchemaCountLimitExceededException\".\n\t//\n\t// You have exceeded the limit for custom schemas. Delete one or more custom\n\t// schemas and try again.\n\tErrCodeCustomSchemaCountLimitExceededException = \"CustomSchemaCountLimitExceededException\"\n\n\t// ErrCodeDocumentAlreadyExists for service response error code\n\t// \"DocumentAlreadyExists\".\n\t//\n\t// The specified document already exists.\n\tErrCodeDocumentAlreadyExists = \"DocumentAlreadyExists\"\n\n\t// ErrCodeDocumentLimitExceeded for service response error code\n\t// \"DocumentLimitExceeded\".\n\t//\n\t// You can have at most 500 active SSM documents.\n\tErrCodeDocumentLimitExceeded = \"DocumentLimitExceeded\"\n\n\t// ErrCodeDocumentPermissionLimit for service response error code\n\t// \"DocumentPermissionLimit\".\n\t//\n\t// The document can't be shared with more Amazon Web Services accounts. You\n\t// can specify a maximum of 20 accounts per API operation to share a private\n\t// document.\n\t//\n\t// By default, you can share a private document with a maximum of 1,000 accounts\n\t// and publicly share up to five documents.\n\t//\n\t// If you need to increase the quota for privately or publicly shared Systems\n\t// Manager documents, contact Amazon Web Services Support.\n\tErrCodeDocumentPermissionLimit = \"DocumentPermissionLimit\"\n\n\t// ErrCodeDocumentVersionLimitExceeded for service response error code\n\t// \"DocumentVersionLimitExceeded\".\n\t//\n\t// The document has too many versions. Delete one or more document versions\n\t// and try again.\n\tErrCodeDocumentVersionLimitExceeded = \"DocumentVersionLimitExceeded\"\n\n\t// ErrCodeDoesNotExistException for service response error code\n\t// \"DoesNotExistException\".\n\t//\n\t// Error returned when the ID specified for a resource, such as a maintenance\n\t// window or patch baseline, doesn't exist.\n\t//\n\t// For information about resource quotas in Amazon Web Services Systems Manager,\n\t// see Systems Manager service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n\t// in the Amazon Web Services General Reference.\n\tErrCodeDoesNotExistException = \"DoesNotExistException\"\n\n\t// ErrCodeDuplicateDocumentContent for service response error code\n\t// \"DuplicateDocumentContent\".\n\t//\n\t// The content of the association document matches another document. Change\n\t// the content of the document and try again.\n\tErrCodeDuplicateDocumentContent = \"DuplicateDocumentContent\"\n\n\t// ErrCodeDuplicateDocumentVersionName for service response error code\n\t// \"DuplicateDocumentVersionName\".\n\t//\n\t// The version name has already been used in this document. Specify a different\n\t// version name, and then try again.\n\tErrCodeDuplicateDocumentVersionName = \"DuplicateDocumentVersionName\"\n\n\t// ErrCodeDuplicateInstanceId for service response error code\n\t// \"DuplicateInstanceId\".\n\t//\n\t// You can't specify a managed node ID in more than one association.\n\tErrCodeDuplicateInstanceId = \"DuplicateInstanceId\"\n\n\t// ErrCodeFeatureNotAvailableException for service response error code\n\t// \"FeatureNotAvailableException\".\n\t//\n\t// You attempted to register a LAMBDA or STEP_FUNCTIONS task in a region where\n\t// the corresponding service isn't available.\n\tErrCodeFeatureNotAvailableException = \"FeatureNotAvailableException\"\n\n\t// ErrCodeHierarchyLevelLimitExceededException for service response error code\n\t// \"HierarchyLevelLimitExceededException\".\n\t//\n\t// A hierarchy can have a maximum of 15 levels. For more information, see Requirements\n\t// and constraints for parameter names (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-parameter-name-constraints.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tErrCodeHierarchyLevelLimitExceededException = \"HierarchyLevelLimitExceededException\"\n\n\t// ErrCodeHierarchyTypeMismatchException for service response error code\n\t// \"HierarchyTypeMismatchException\".\n\t//\n\t// Parameter Store doesn't support changing a parameter type in a hierarchy.\n\t// For example, you can't change a parameter from a String type to a SecureString\n\t// type. You must create a new, unique parameter.\n\tErrCodeHierarchyTypeMismatchException = \"HierarchyTypeMismatchException\"\n\n\t// ErrCodeIdempotentParameterMismatch for service response error code\n\t// \"IdempotentParameterMismatch\".\n\t//\n\t// Error returned when an idempotent operation is retried and the parameters\n\t// don't match the original call to the API with the same idempotency token.\n\tErrCodeIdempotentParameterMismatch = \"IdempotentParameterMismatch\"\n\n\t// ErrCodeIncompatiblePolicyException for service response error code\n\t// \"IncompatiblePolicyException\".\n\t//\n\t// There is a conflict in the policies specified for this parameter. You can't,\n\t// for example, specify two Expiration policies for a parameter. Review your\n\t// policies, and try again.\n\tErrCodeIncompatiblePolicyException = \"IncompatiblePolicyException\"\n\n\t// ErrCodeInternalServerError for service response error code\n\t// \"InternalServerError\".\n\t//\n\t// An error occurred on the server side.\n\tErrCodeInternalServerError = \"InternalServerError\"\n\n\t// ErrCodeInvalidActivation for service response error code\n\t// \"InvalidActivation\".\n\t//\n\t// The activation isn't valid. The activation might have been deleted, or the\n\t// ActivationId and the ActivationCode don't match.\n\tErrCodeInvalidActivation = \"InvalidActivation\"\n\n\t// ErrCodeInvalidActivationId for service response error code\n\t// \"InvalidActivationId\".\n\t//\n\t// The activation ID isn't valid. Verify the you entered the correct ActivationId\n\t// or ActivationCode and try again.\n\tErrCodeInvalidActivationId = \"InvalidActivationId\"\n\n\t// ErrCodeInvalidAggregatorException for service response error code\n\t// \"InvalidAggregatorException\".\n\t//\n\t// The specified aggregator isn't valid for inventory groups. Verify that the\n\t// aggregator uses a valid inventory type such as AWS:Application or AWS:InstanceInformation.\n\tErrCodeInvalidAggregatorException = \"InvalidAggregatorException\"\n\n\t// ErrCodeInvalidAllowedPatternException for service response error code\n\t// \"InvalidAllowedPatternException\".\n\t//\n\t// The request doesn't meet the regular expression requirement.\n\tErrCodeInvalidAllowedPatternException = \"InvalidAllowedPatternException\"\n\n\t// ErrCodeInvalidAssociation for service response error code\n\t// \"InvalidAssociation\".\n\t//\n\t// The association isn't valid or doesn't exist.\n\tErrCodeInvalidAssociation = \"InvalidAssociation\"\n\n\t// ErrCodeInvalidAssociationVersion for service response error code\n\t// \"InvalidAssociationVersion\".\n\t//\n\t// The version you specified isn't valid. Use ListAssociationVersions to view\n\t// all versions of an association according to the association ID. Or, use the\n\t// $LATEST parameter to view the latest version of the association.\n\tErrCodeInvalidAssociationVersion = \"InvalidAssociationVersion\"\n\n\t// ErrCodeInvalidAutomationExecutionParametersException for service response error code\n\t// \"InvalidAutomationExecutionParametersException\".\n\t//\n\t// The supplied parameters for invoking the specified Automation runbook are\n\t// incorrect. For example, they may not match the set of parameters permitted\n\t// for the specified Automation document.\n\tErrCodeInvalidAutomationExecutionParametersException = \"InvalidAutomationExecutionParametersException\"\n\n\t// ErrCodeInvalidAutomationSignalException for service response error code\n\t// \"InvalidAutomationSignalException\".\n\t//\n\t// The signal isn't valid for the current Automation execution.\n\tErrCodeInvalidAutomationSignalException = \"InvalidAutomationSignalException\"\n\n\t// ErrCodeInvalidAutomationStatusUpdateException for service response error code\n\t// \"InvalidAutomationStatusUpdateException\".\n\t//\n\t// The specified update status operation isn't valid.\n\tErrCodeInvalidAutomationStatusUpdateException = \"InvalidAutomationStatusUpdateException\"\n\n\t// ErrCodeInvalidCommandId for service response error code\n\t// \"InvalidCommandId\".\n\t//\n\t// The specified command ID isn't valid. Verify the ID and try again.\n\tErrCodeInvalidCommandId = \"InvalidCommandId\"\n\n\t// ErrCodeInvalidDeleteInventoryParametersException for service response error code\n\t// \"InvalidDeleteInventoryParametersException\".\n\t//\n\t// One or more of the parameters specified for the delete operation isn't valid.\n\t// Verify all parameters and try again.\n\tErrCodeInvalidDeleteInventoryParametersException = \"InvalidDeleteInventoryParametersException\"\n\n\t// ErrCodeInvalidDeletionIdException for service response error code\n\t// \"InvalidDeletionIdException\".\n\t//\n\t// The ID specified for the delete operation doesn't exist or isn't valid. Verify\n\t// the ID and try again.\n\tErrCodeInvalidDeletionIdException = \"InvalidDeletionIdException\"\n\n\t// ErrCodeInvalidDocument for service response error code\n\t// \"InvalidDocument\".\n\t//\n\t// The specified SSM document doesn't exist.\n\tErrCodeInvalidDocument = \"InvalidDocument\"\n\n\t// ErrCodeInvalidDocumentContent for service response error code\n\t// \"InvalidDocumentContent\".\n\t//\n\t// The content for the document isn't valid.\n\tErrCodeInvalidDocumentContent = \"InvalidDocumentContent\"\n\n\t// ErrCodeInvalidDocumentOperation for service response error code\n\t// \"InvalidDocumentOperation\".\n\t//\n\t// You attempted to delete a document while it is still shared. You must stop\n\t// sharing the document before you can delete it.\n\tErrCodeInvalidDocumentOperation = \"InvalidDocumentOperation\"\n\n\t// ErrCodeInvalidDocumentSchemaVersion for service response error code\n\t// \"InvalidDocumentSchemaVersion\".\n\t//\n\t// The version of the document schema isn't supported.\n\tErrCodeInvalidDocumentSchemaVersion = \"InvalidDocumentSchemaVersion\"\n\n\t// ErrCodeInvalidDocumentType for service response error code\n\t// \"InvalidDocumentType\".\n\t//\n\t// The SSM document type isn't valid. Valid document types are described in\n\t// the DocumentType property.\n\tErrCodeInvalidDocumentType = \"InvalidDocumentType\"\n\n\t// ErrCodeInvalidDocumentVersion for service response error code\n\t// \"InvalidDocumentVersion\".\n\t//\n\t// The document version isn't valid or doesn't exist.\n\tErrCodeInvalidDocumentVersion = \"InvalidDocumentVersion\"\n\n\t// ErrCodeInvalidFilter for service response error code\n\t// \"InvalidFilter\".\n\t//\n\t// The filter name isn't valid. Verify the you entered the correct name and\n\t// try again.\n\tErrCodeInvalidFilter = \"InvalidFilter\"\n\n\t// ErrCodeInvalidFilterKey for service response error code\n\t// \"InvalidFilterKey\".\n\t//\n\t// The specified key isn't valid.\n\tErrCodeInvalidFilterKey = \"InvalidFilterKey\"\n\n\t// ErrCodeInvalidFilterOption for service response error code\n\t// \"InvalidFilterOption\".\n\t//\n\t// The specified filter option isn't valid. Valid options are Equals and BeginsWith.\n\t// For Path filter, valid options are Recursive and OneLevel.\n\tErrCodeInvalidFilterOption = \"InvalidFilterOption\"\n\n\t// ErrCodeInvalidFilterValue for service response error code\n\t// \"InvalidFilterValue\".\n\t//\n\t// The filter value isn't valid. Verify the value and try again.\n\tErrCodeInvalidFilterValue = \"InvalidFilterValue\"\n\n\t// ErrCodeInvalidInstanceId for service response error code\n\t// \"InvalidInstanceId\".\n\t//\n\t// The following problems can cause this exception:\n\t//\n\t//    * You don't have permission to access the managed node.\n\t//\n\t//    * Amazon Web Services Systems Manager Agent(SSM Agent) isn't running.\n\t//    Verify that SSM Agent is running.\n\t//\n\t//    * SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM\n\t//    Agent.\n\t//\n\t//    * The managed node isn't in valid state. Valid states are: Running, Pending,\n\t//    Stopped, and Stopping. Invalid states are: Shutting-down and Terminated.\n\tErrCodeInvalidInstanceId = \"InvalidInstanceId\"\n\n\t// ErrCodeInvalidInstanceInformationFilterValue for service response error code\n\t// \"InvalidInstanceInformationFilterValue\".\n\t//\n\t// The specified filter value isn't valid.\n\tErrCodeInvalidInstanceInformationFilterValue = \"InvalidInstanceInformationFilterValue\"\n\n\t// ErrCodeInvalidInventoryGroupException for service response error code\n\t// \"InvalidInventoryGroupException\".\n\t//\n\t// The specified inventory group isn't valid.\n\tErrCodeInvalidInventoryGroupException = \"InvalidInventoryGroupException\"\n\n\t// ErrCodeInvalidInventoryItemContextException for service response error code\n\t// \"InvalidInventoryItemContextException\".\n\t//\n\t// You specified invalid keys or values in the Context attribute for InventoryItem.\n\t// Verify the keys and values, and try again.\n\tErrCodeInvalidInventoryItemContextException = \"InvalidInventoryItemContextException\"\n\n\t// ErrCodeInvalidInventoryRequestException for service response error code\n\t// \"InvalidInventoryRequestException\".\n\t//\n\t// The request isn't valid.\n\tErrCodeInvalidInventoryRequestException = \"InvalidInventoryRequestException\"\n\n\t// ErrCodeInvalidItemContentException for service response error code\n\t// \"InvalidItemContentException\".\n\t//\n\t// One or more content items isn't valid.\n\tErrCodeInvalidItemContentException = \"InvalidItemContentException\"\n\n\t// ErrCodeInvalidKeyId for service response error code\n\t// \"InvalidKeyId\".\n\t//\n\t// The query key ID isn't valid.\n\tErrCodeInvalidKeyId = \"InvalidKeyId\"\n\n\t// ErrCodeInvalidNextToken for service response error code\n\t// \"InvalidNextToken\".\n\t//\n\t// The specified token isn't valid.\n\tErrCodeInvalidNextToken = \"InvalidNextToken\"\n\n\t// ErrCodeInvalidNotificationConfig for service response error code\n\t// \"InvalidNotificationConfig\".\n\t//\n\t// One or more configuration items isn't valid. Verify that a valid Amazon Resource\n\t// Name (ARN) was provided for an Amazon Simple Notification Service topic.\n\tErrCodeInvalidNotificationConfig = \"InvalidNotificationConfig\"\n\n\t// ErrCodeInvalidOptionException for service response error code\n\t// \"InvalidOptionException\".\n\t//\n\t// The delete inventory option specified isn't valid. Verify the option and\n\t// try again.\n\tErrCodeInvalidOptionException = \"InvalidOptionException\"\n\n\t// ErrCodeInvalidOutputFolder for service response error code\n\t// \"InvalidOutputFolder\".\n\t//\n\t// The S3 bucket doesn't exist.\n\tErrCodeInvalidOutputFolder = \"InvalidOutputFolder\"\n\n\t// ErrCodeInvalidOutputLocation for service response error code\n\t// \"InvalidOutputLocation\".\n\t//\n\t// The output location isn't valid or doesn't exist.\n\tErrCodeInvalidOutputLocation = \"InvalidOutputLocation\"\n\n\t// ErrCodeInvalidParameters for service response error code\n\t// \"InvalidParameters\".\n\t//\n\t// You must specify values for all required parameters in the Amazon Web Services\n\t// Systems Manager document (SSM document). You can only supply values to parameters\n\t// defined in the SSM document.\n\tErrCodeInvalidParameters = \"InvalidParameters\"\n\n\t// ErrCodeInvalidPermissionType for service response error code\n\t// \"InvalidPermissionType\".\n\t//\n\t// The permission type isn't supported. Share is the only supported permission\n\t// type.\n\tErrCodeInvalidPermissionType = \"InvalidPermissionType\"\n\n\t// ErrCodeInvalidPluginName for service response error code\n\t// \"InvalidPluginName\".\n\t//\n\t// The plugin name isn't valid.\n\tErrCodeInvalidPluginName = \"InvalidPluginName\"\n\n\t// ErrCodeInvalidPolicyAttributeException for service response error code\n\t// \"InvalidPolicyAttributeException\".\n\t//\n\t// A policy attribute or its value is invalid.\n\tErrCodeInvalidPolicyAttributeException = \"InvalidPolicyAttributeException\"\n\n\t// ErrCodeInvalidPolicyTypeException for service response error code\n\t// \"InvalidPolicyTypeException\".\n\t//\n\t// The policy type isn't supported. Parameter Store supports the following policy\n\t// types: Expiration, ExpirationNotification, and NoChangeNotification.\n\tErrCodeInvalidPolicyTypeException = \"InvalidPolicyTypeException\"\n\n\t// ErrCodeInvalidResourceId for service response error code\n\t// \"InvalidResourceId\".\n\t//\n\t// The resource ID isn't valid. Verify that you entered the correct ID and try\n\t// again.\n\tErrCodeInvalidResourceId = \"InvalidResourceId\"\n\n\t// ErrCodeInvalidResourceType for service response error code\n\t// \"InvalidResourceType\".\n\t//\n\t// The resource type isn't valid. For example, if you are attempting to tag\n\t// an EC2 instance, the instance must be a registered managed node.\n\tErrCodeInvalidResourceType = \"InvalidResourceType\"\n\n\t// ErrCodeInvalidResultAttributeException for service response error code\n\t// \"InvalidResultAttributeException\".\n\t//\n\t// The specified inventory item result attribute isn't valid.\n\tErrCodeInvalidResultAttributeException = \"InvalidResultAttributeException\"\n\n\t// ErrCodeInvalidRole for service response error code\n\t// \"InvalidRole\".\n\t//\n\t// The role name can't contain invalid characters. Also verify that you specified\n\t// an IAM role for notifications that includes the required trust policy. For\n\t// information about configuring the IAM role for Run Command notifications,\n\t// see Configuring Amazon SNS Notifications for Run Command (https://docs.aws.amazon.com/systems-manager/latest/userguide/rc-sns-notifications.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tErrCodeInvalidRole = \"InvalidRole\"\n\n\t// ErrCodeInvalidSchedule for service response error code\n\t// \"InvalidSchedule\".\n\t//\n\t// The schedule is invalid. Verify your cron or rate expression and try again.\n\tErrCodeInvalidSchedule = \"InvalidSchedule\"\n\n\t// ErrCodeInvalidTag for service response error code\n\t// \"InvalidTag\".\n\t//\n\t// The specified tag key or value isn't valid.\n\tErrCodeInvalidTag = \"InvalidTag\"\n\n\t// ErrCodeInvalidTarget for service response error code\n\t// \"InvalidTarget\".\n\t//\n\t// The target isn't valid or doesn't exist. It might not be configured for Systems\n\t// Manager or you might not have permission to perform the operation.\n\tErrCodeInvalidTarget = \"InvalidTarget\"\n\n\t// ErrCodeInvalidTargetMaps for service response error code\n\t// \"InvalidTargetMaps\".\n\t//\n\t// TargetMap parameter isn't valid.\n\tErrCodeInvalidTargetMaps = \"InvalidTargetMaps\"\n\n\t// ErrCodeInvalidTypeNameException for service response error code\n\t// \"InvalidTypeNameException\".\n\t//\n\t// The parameter type name isn't valid.\n\tErrCodeInvalidTypeNameException = \"InvalidTypeNameException\"\n\n\t// ErrCodeInvalidUpdate for service response error code\n\t// \"InvalidUpdate\".\n\t//\n\t// The update isn't valid.\n\tErrCodeInvalidUpdate = \"InvalidUpdate\"\n\n\t// ErrCodeInvocationDoesNotExist for service response error code\n\t// \"InvocationDoesNotExist\".\n\t//\n\t// The command ID and managed node ID you specified didn't match any invocations.\n\t// Verify the command ID and the managed node ID and try again.\n\tErrCodeInvocationDoesNotExist = \"InvocationDoesNotExist\"\n\n\t// ErrCodeItemContentMismatchException for service response error code\n\t// \"ItemContentMismatchException\".\n\t//\n\t// The inventory item has invalid content.\n\tErrCodeItemContentMismatchException = \"ItemContentMismatchException\"\n\n\t// ErrCodeItemSizeLimitExceededException for service response error code\n\t// \"ItemSizeLimitExceededException\".\n\t//\n\t// The inventory item size has exceeded the size limit.\n\tErrCodeItemSizeLimitExceededException = \"ItemSizeLimitExceededException\"\n\n\t// ErrCodeMaxDocumentSizeExceeded for service response error code\n\t// \"MaxDocumentSizeExceeded\".\n\t//\n\t// The size limit of a document is 64 KB.\n\tErrCodeMaxDocumentSizeExceeded = \"MaxDocumentSizeExceeded\"\n\n\t// ErrCodeOpsItemAccessDeniedException for service response error code\n\t// \"OpsItemAccessDeniedException\".\n\t//\n\t// You don't have permission to view OpsItems in the specified account. Verify\n\t// that your account is configured either as a Systems Manager delegated administrator\n\t// or that you are logged into the Organizations management account.\n\tErrCodeOpsItemAccessDeniedException = \"OpsItemAccessDeniedException\"\n\n\t// ErrCodeOpsItemAlreadyExistsException for service response error code\n\t// \"OpsItemAlreadyExistsException\".\n\t//\n\t// The OpsItem already exists.\n\tErrCodeOpsItemAlreadyExistsException = \"OpsItemAlreadyExistsException\"\n\n\t// ErrCodeOpsItemConflictException for service response error code\n\t// \"OpsItemConflictException\".\n\t//\n\t// The specified OpsItem is in the process of being deleted.\n\tErrCodeOpsItemConflictException = \"OpsItemConflictException\"\n\n\t// ErrCodeOpsItemInvalidParameterException for service response error code\n\t// \"OpsItemInvalidParameterException\".\n\t//\n\t// A specified parameter argument isn't valid. Verify the available arguments\n\t// and try again.\n\tErrCodeOpsItemInvalidParameterException = \"OpsItemInvalidParameterException\"\n\n\t// ErrCodeOpsItemLimitExceededException for service response error code\n\t// \"OpsItemLimitExceededException\".\n\t//\n\t// The request caused OpsItems to exceed one or more quotas.\n\tErrCodeOpsItemLimitExceededException = \"OpsItemLimitExceededException\"\n\n\t// ErrCodeOpsItemNotFoundException for service response error code\n\t// \"OpsItemNotFoundException\".\n\t//\n\t// The specified OpsItem ID doesn't exist. Verify the ID and try again.\n\tErrCodeOpsItemNotFoundException = \"OpsItemNotFoundException\"\n\n\t// ErrCodeOpsItemRelatedItemAlreadyExistsException for service response error code\n\t// \"OpsItemRelatedItemAlreadyExistsException\".\n\t//\n\t// The Amazon Resource Name (ARN) is already associated with the OpsItem.\n\tErrCodeOpsItemRelatedItemAlreadyExistsException = \"OpsItemRelatedItemAlreadyExistsException\"\n\n\t// ErrCodeOpsItemRelatedItemAssociationNotFoundException for service response error code\n\t// \"OpsItemRelatedItemAssociationNotFoundException\".\n\t//\n\t// The association wasn't found using the parameters you specified in the call.\n\t// Verify the information and try again.\n\tErrCodeOpsItemRelatedItemAssociationNotFoundException = \"OpsItemRelatedItemAssociationNotFoundException\"\n\n\t// ErrCodeOpsMetadataAlreadyExistsException for service response error code\n\t// \"OpsMetadataAlreadyExistsException\".\n\t//\n\t// An OpsMetadata object already exists for the selected resource.\n\tErrCodeOpsMetadataAlreadyExistsException = \"OpsMetadataAlreadyExistsException\"\n\n\t// ErrCodeOpsMetadataInvalidArgumentException for service response error code\n\t// \"OpsMetadataInvalidArgumentException\".\n\t//\n\t// One of the arguments passed is invalid.\n\tErrCodeOpsMetadataInvalidArgumentException = \"OpsMetadataInvalidArgumentException\"\n\n\t// ErrCodeOpsMetadataKeyLimitExceededException for service response error code\n\t// \"OpsMetadataKeyLimitExceededException\".\n\t//\n\t// The OpsMetadata object exceeds the maximum number of OpsMetadata keys that\n\t// you can assign to an application in Application Manager.\n\tErrCodeOpsMetadataKeyLimitExceededException = \"OpsMetadataKeyLimitExceededException\"\n\n\t// ErrCodeOpsMetadataLimitExceededException for service response error code\n\t// \"OpsMetadataLimitExceededException\".\n\t//\n\t// Your account reached the maximum number of OpsMetadata objects allowed by\n\t// Application Manager. The maximum is 200 OpsMetadata objects. Delete one or\n\t// more OpsMetadata object and try again.\n\tErrCodeOpsMetadataLimitExceededException = \"OpsMetadataLimitExceededException\"\n\n\t// ErrCodeOpsMetadataNotFoundException for service response error code\n\t// \"OpsMetadataNotFoundException\".\n\t//\n\t// The OpsMetadata object doesn't exist.\n\tErrCodeOpsMetadataNotFoundException = \"OpsMetadataNotFoundException\"\n\n\t// ErrCodeOpsMetadataTooManyUpdatesException for service response error code\n\t// \"OpsMetadataTooManyUpdatesException\".\n\t//\n\t// The system is processing too many concurrent updates. Wait a few moments\n\t// and try again.\n\tErrCodeOpsMetadataTooManyUpdatesException = \"OpsMetadataTooManyUpdatesException\"\n\n\t// ErrCodeParameterAlreadyExists for service response error code\n\t// \"ParameterAlreadyExists\".\n\t//\n\t// The parameter already exists. You can't create duplicate parameters.\n\tErrCodeParameterAlreadyExists = \"ParameterAlreadyExists\"\n\n\t// ErrCodeParameterLimitExceeded for service response error code\n\t// \"ParameterLimitExceeded\".\n\t//\n\t// You have exceeded the number of parameters for this Amazon Web Services account.\n\t// Delete one or more parameters and try again.\n\tErrCodeParameterLimitExceeded = \"ParameterLimitExceeded\"\n\n\t// ErrCodeParameterMaxVersionLimitExceeded for service response error code\n\t// \"ParameterMaxVersionLimitExceeded\".\n\t//\n\t// Parameter Store retains the 100 most recently created versions of a parameter.\n\t// After this number of versions has been created, Parameter Store deletes the\n\t// oldest version when a new one is created. However, if the oldest version\n\t// has a label attached to it, Parameter Store won't delete the version and\n\t// instead presents this error message:\n\t//\n\t// An error occurred (ParameterMaxVersionLimitExceeded) when calling the PutParameter\n\t// operation: You attempted to create a new version of parameter-name by calling\n\t// the PutParameter API with the overwrite flag. Version version-number, the\n\t// oldest version, can't be deleted because it has a label associated with it.\n\t// Move the label to another version of the parameter, and try again.\n\t//\n\t// This safeguard is to prevent parameter versions with mission critical labels\n\t// assigned to them from being deleted. To continue creating new parameters,\n\t// first move the label from the oldest version of the parameter to a newer\n\t// one for use in your operations. For information about moving parameter labels,\n\t// see Move a parameter label (console) (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-labels.html#sysman-paramstore-labels-console-move)\n\t// or Move a parameter label (CLI) (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-labels.html#sysman-paramstore-labels-cli-move)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tErrCodeParameterMaxVersionLimitExceeded = \"ParameterMaxVersionLimitExceeded\"\n\n\t// ErrCodeParameterNotFound for service response error code\n\t// \"ParameterNotFound\".\n\t//\n\t// The parameter couldn't be found. Verify the name and try again.\n\tErrCodeParameterNotFound = \"ParameterNotFound\"\n\n\t// ErrCodeParameterPatternMismatchException for service response error code\n\t// \"ParameterPatternMismatchException\".\n\t//\n\t// The parameter name isn't valid.\n\tErrCodeParameterPatternMismatchException = \"ParameterPatternMismatchException\"\n\n\t// ErrCodeParameterVersionLabelLimitExceeded for service response error code\n\t// \"ParameterVersionLabelLimitExceeded\".\n\t//\n\t// A parameter version can have a maximum of ten labels.\n\tErrCodeParameterVersionLabelLimitExceeded = \"ParameterVersionLabelLimitExceeded\"\n\n\t// ErrCodeParameterVersionNotFound for service response error code\n\t// \"ParameterVersionNotFound\".\n\t//\n\t// The specified parameter version wasn't found. Verify the parameter name and\n\t// version, and try again.\n\tErrCodeParameterVersionNotFound = \"ParameterVersionNotFound\"\n\n\t// ErrCodePoliciesLimitExceededException for service response error code\n\t// \"PoliciesLimitExceededException\".\n\t//\n\t// You specified more than the maximum number of allowed policies for the parameter.\n\t// The maximum is 10.\n\tErrCodePoliciesLimitExceededException = \"PoliciesLimitExceededException\"\n\n\t// ErrCodeResourceDataSyncAlreadyExistsException for service response error code\n\t// \"ResourceDataSyncAlreadyExistsException\".\n\t//\n\t// A sync configuration with the same name already exists.\n\tErrCodeResourceDataSyncAlreadyExistsException = \"ResourceDataSyncAlreadyExistsException\"\n\n\t// ErrCodeResourceDataSyncConflictException for service response error code\n\t// \"ResourceDataSyncConflictException\".\n\t//\n\t// Another UpdateResourceDataSync request is being processed. Wait a few minutes\n\t// and try again.\n\tErrCodeResourceDataSyncConflictException = \"ResourceDataSyncConflictException\"\n\n\t// ErrCodeResourceDataSyncCountExceededException for service response error code\n\t// \"ResourceDataSyncCountExceededException\".\n\t//\n\t// You have exceeded the allowed maximum sync configurations.\n\tErrCodeResourceDataSyncCountExceededException = \"ResourceDataSyncCountExceededException\"\n\n\t// ErrCodeResourceDataSyncInvalidConfigurationException for service response error code\n\t// \"ResourceDataSyncInvalidConfigurationException\".\n\t//\n\t// The specified sync configuration is invalid.\n\tErrCodeResourceDataSyncInvalidConfigurationException = \"ResourceDataSyncInvalidConfigurationException\"\n\n\t// ErrCodeResourceDataSyncNotFoundException for service response error code\n\t// \"ResourceDataSyncNotFoundException\".\n\t//\n\t// The specified sync name wasn't found.\n\tErrCodeResourceDataSyncNotFoundException = \"ResourceDataSyncNotFoundException\"\n\n\t// ErrCodeResourceInUseException for service response error code\n\t// \"ResourceInUseException\".\n\t//\n\t// Error returned if an attempt is made to delete a patch baseline that is registered\n\t// for a patch group.\n\tErrCodeResourceInUseException = \"ResourceInUseException\"\n\n\t// ErrCodeResourceLimitExceededException for service response error code\n\t// \"ResourceLimitExceededException\".\n\t//\n\t// Error returned when the caller has exceeded the default resource quotas.\n\t// For example, too many maintenance windows or patch baselines have been created.\n\t//\n\t// For information about resource quotas in Systems Manager, see Systems Manager\n\t// service quotas (https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)\n\t// in the Amazon Web Services General Reference.\n\tErrCodeResourceLimitExceededException = \"ResourceLimitExceededException\"\n\n\t// ErrCodeResourcePolicyConflictException for service response error code\n\t// \"ResourcePolicyConflictException\".\n\t//\n\t// The hash provided in the call doesn't match the stored hash. This exception\n\t// is thrown when trying to update an obsolete policy version or when multiple\n\t// requests to update a policy are sent.\n\tErrCodeResourcePolicyConflictException = \"ResourcePolicyConflictException\"\n\n\t// ErrCodeResourcePolicyInvalidParameterException for service response error code\n\t// \"ResourcePolicyInvalidParameterException\".\n\t//\n\t// One or more parameters specified for the call aren't valid. Verify the parameters\n\t// and their values and try again.\n\tErrCodeResourcePolicyInvalidParameterException = \"ResourcePolicyInvalidParameterException\"\n\n\t// ErrCodeResourcePolicyLimitExceededException for service response error code\n\t// \"ResourcePolicyLimitExceededException\".\n\t//\n\t// The PutResourcePolicy API action enforces two limits. A policy can't be greater\n\t// than 1024 bytes in size. And only one policy can be attached to OpsItemGroup.\n\t// Verify these limits and try again.\n\tErrCodeResourcePolicyLimitExceededException = \"ResourcePolicyLimitExceededException\"\n\n\t// ErrCodeServiceSettingNotFound for service response error code\n\t// \"ServiceSettingNotFound\".\n\t//\n\t// The specified service setting wasn't found. Either the service name or the\n\t// setting hasn't been provisioned by the Amazon Web Services service team.\n\tErrCodeServiceSettingNotFound = \"ServiceSettingNotFound\"\n\n\t// ErrCodeStatusUnchanged for service response error code\n\t// \"StatusUnchanged\".\n\t//\n\t// The updated status is the same as the current status.\n\tErrCodeStatusUnchanged = \"StatusUnchanged\"\n\n\t// ErrCodeSubTypeCountLimitExceededException for service response error code\n\t// \"SubTypeCountLimitExceededException\".\n\t//\n\t// The sub-type count exceeded the limit for the inventory type.\n\tErrCodeSubTypeCountLimitExceededException = \"SubTypeCountLimitExceededException\"\n\n\t// ErrCodeTargetInUseException for service response error code\n\t// \"TargetInUseException\".\n\t//\n\t// You specified the Safe option for the DeregisterTargetFromMaintenanceWindow\n\t// operation, but the target is still referenced in a task.\n\tErrCodeTargetInUseException = \"TargetInUseException\"\n\n\t// ErrCodeTargetNotConnected for service response error code\n\t// \"TargetNotConnected\".\n\t//\n\t// The specified target managed node for the session isn't fully configured\n\t// for use with Session Manager. For more information, see Getting started with\n\t// Session Manager (https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html)\n\t// in the Amazon Web Services Systems Manager User Guide. This error is also\n\t// returned if you attempt to start a session on a managed node that is located\n\t// in a different account or Region\n\tErrCodeTargetNotConnected = \"TargetNotConnected\"\n\n\t// ErrCodeTooManyTagsError for service response error code\n\t// \"TooManyTagsError\".\n\t//\n\t// The Targets parameter includes too many tags. Remove one or more tags and\n\t// try the command again.\n\tErrCodeTooManyTagsError = \"TooManyTagsError\"\n\n\t// ErrCodeTooManyUpdates for service response error code\n\t// \"TooManyUpdates\".\n\t//\n\t// There are concurrent updates for a resource that supports one update at a\n\t// time.\n\tErrCodeTooManyUpdates = \"TooManyUpdates\"\n\n\t// ErrCodeTotalSizeLimitExceededException for service response error code\n\t// \"TotalSizeLimitExceededException\".\n\t//\n\t// The size of inventory data has exceeded the total size limit for the resource.\n\tErrCodeTotalSizeLimitExceededException = \"TotalSizeLimitExceededException\"\n\n\t// ErrCodeUnsupportedCalendarException for service response error code\n\t// \"UnsupportedCalendarException\".\n\t//\n\t// The calendar entry contained in the specified SSM document isn't supported.\n\tErrCodeUnsupportedCalendarException = \"UnsupportedCalendarException\"\n\n\t// ErrCodeUnsupportedFeatureRequiredException for service response error code\n\t// \"UnsupportedFeatureRequiredException\".\n\t//\n\t// Patching for applications released by Microsoft is only available on EC2\n\t// instances and advanced instances. To patch applications released by Microsoft\n\t// on on-premises servers and VMs, you must enable advanced instances. For more\n\t// information, see Enabling the advanced-instances tier (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances-advanced.html)\n\t// in the Amazon Web Services Systems Manager User Guide.\n\tErrCodeUnsupportedFeatureRequiredException = \"UnsupportedFeatureRequiredException\"\n\n\t// ErrCodeUnsupportedInventoryItemContextException for service response error code\n\t// \"UnsupportedInventoryItemContextException\".\n\t//\n\t// The Context attribute that you specified for the InventoryItem isn't allowed\n\t// for this inventory type. You can only use the Context attribute with inventory\n\t// types like AWS:ComplianceItem.\n\tErrCodeUnsupportedInventoryItemContextException = \"UnsupportedInventoryItemContextException\"\n\n\t// ErrCodeUnsupportedInventorySchemaVersionException for service response error code\n\t// \"UnsupportedInventorySchemaVersionException\".\n\t//\n\t// Inventory item type schema version has to match supported versions in the\n\t// service. Check output of GetInventorySchema to see the available schema version\n\t// for each type.\n\tErrCodeUnsupportedInventorySchemaVersionException = \"UnsupportedInventorySchemaVersionException\"\n\n\t// ErrCodeUnsupportedOperatingSystem for service response error code\n\t// \"UnsupportedOperatingSystem\".\n\t//\n\t// The operating systems you specified isn't supported, or the operation isn't\n\t// supported for the operating system.\n\tErrCodeUnsupportedOperatingSystem = \"UnsupportedOperatingSystem\"\n\n\t// ErrCodeUnsupportedParameterType for service response error code\n\t// \"UnsupportedParameterType\".\n\t//\n\t// The parameter type isn't supported.\n\tErrCodeUnsupportedParameterType = \"UnsupportedParameterType\"\n\n\t// ErrCodeUnsupportedPlatformType for service response error code\n\t// \"UnsupportedPlatformType\".\n\t//\n\t// The document doesn't support the platform type of the given managed node\n\t// ID(s). For example, you sent an document for a Windows managed node to a\n\t// Linux node.\n\tErrCodeUnsupportedPlatformType = \"UnsupportedPlatformType\"\n)\n\nvar exceptionFromCode = map[string]func(protocol.ResponseMetadata) error{\n\t\"AlreadyExistsException\":                         newErrorAlreadyExistsException,\n\t\"AssociatedInstances\":                            newErrorAssociatedInstances,\n\t\"AssociationAlreadyExists\":                       newErrorAssociationAlreadyExists,\n\t\"AssociationDoesNotExist\":                        newErrorAssociationDoesNotExist,\n\t\"AssociationExecutionDoesNotExist\":               newErrorAssociationExecutionDoesNotExist,\n\t\"AssociationLimitExceeded\":                       newErrorAssociationLimitExceeded,\n\t\"AssociationVersionLimitExceeded\":                newErrorAssociationVersionLimitExceeded,\n\t\"AutomationDefinitionNotApprovedException\":       newErrorAutomationDefinitionNotApprovedException,\n\t\"AutomationDefinitionNotFoundException\":          newErrorAutomationDefinitionNotFoundException,\n\t\"AutomationDefinitionVersionNotFoundException\":   newErrorAutomationDefinitionVersionNotFoundException,\n\t\"AutomationExecutionLimitExceededException\":      newErrorAutomationExecutionLimitExceededException,\n\t\"AutomationExecutionNotFoundException\":           newErrorAutomationExecutionNotFoundException,\n\t\"AutomationStepNotFoundException\":                newErrorAutomationStepNotFoundException,\n\t\"ComplianceTypeCountLimitExceededException\":      newErrorComplianceTypeCountLimitExceededException,\n\t\"CustomSchemaCountLimitExceededException\":        newErrorCustomSchemaCountLimitExceededException,\n\t\"DocumentAlreadyExists\":                          newErrorDocumentAlreadyExists,\n\t\"DocumentLimitExceeded\":                          newErrorDocumentLimitExceeded,\n\t\"DocumentPermissionLimit\":                        newErrorDocumentPermissionLimit,\n\t\"DocumentVersionLimitExceeded\":                   newErrorDocumentVersionLimitExceeded,\n\t\"DoesNotExistException\":                          newErrorDoesNotExistException,\n\t\"DuplicateDocumentContent\":                       newErrorDuplicateDocumentContent,\n\t\"DuplicateDocumentVersionName\":                   newErrorDuplicateDocumentVersionName,\n\t\"DuplicateInstanceId\":                            newErrorDuplicateInstanceId,\n\t\"FeatureNotAvailableException\":                   newErrorFeatureNotAvailableException,\n\t\"HierarchyLevelLimitExceededException\":           newErrorHierarchyLevelLimitExceededException,\n\t\"HierarchyTypeMismatchException\":                 newErrorHierarchyTypeMismatchException,\n\t\"IdempotentParameterMismatch\":                    newErrorIdempotentParameterMismatch,\n\t\"IncompatiblePolicyException\":                    newErrorIncompatiblePolicyException,\n\t\"InternalServerError\":                            newErrorInternalServerError,\n\t\"InvalidActivation\":                              newErrorInvalidActivation,\n\t\"InvalidActivationId\":                            newErrorInvalidActivationId,\n\t\"InvalidAggregatorException\":                     newErrorInvalidAggregatorException,\n\t\"InvalidAllowedPatternException\":                 newErrorInvalidAllowedPatternException,\n\t\"InvalidAssociation\":                             newErrorInvalidAssociation,\n\t\"InvalidAssociationVersion\":                      newErrorInvalidAssociationVersion,\n\t\"InvalidAutomationExecutionParametersException\":  newErrorInvalidAutomationExecutionParametersException,\n\t\"InvalidAutomationSignalException\":               newErrorInvalidAutomationSignalException,\n\t\"InvalidAutomationStatusUpdateException\":         newErrorInvalidAutomationStatusUpdateException,\n\t\"InvalidCommandId\":                               newErrorInvalidCommandId,\n\t\"InvalidDeleteInventoryParametersException\":      newErrorInvalidDeleteInventoryParametersException,\n\t\"InvalidDeletionIdException\":                     newErrorInvalidDeletionIdException,\n\t\"InvalidDocument\":                                newErrorInvalidDocument,\n\t\"InvalidDocumentContent\":                         newErrorInvalidDocumentContent,\n\t\"InvalidDocumentOperation\":                       newErrorInvalidDocumentOperation,\n\t\"InvalidDocumentSchemaVersion\":                   newErrorInvalidDocumentSchemaVersion,\n\t\"InvalidDocumentType\":                            newErrorInvalidDocumentType,\n\t\"InvalidDocumentVersion\":                         newErrorInvalidDocumentVersion,\n\t\"InvalidFilter\":                                  newErrorInvalidFilter,\n\t\"InvalidFilterKey\":                               newErrorInvalidFilterKey,\n\t\"InvalidFilterOption\":                            newErrorInvalidFilterOption,\n\t\"InvalidFilterValue\":                             newErrorInvalidFilterValue,\n\t\"InvalidInstanceId\":                              newErrorInvalidInstanceId,\n\t\"InvalidInstanceInformationFilterValue\":          newErrorInvalidInstanceInformationFilterValue,\n\t\"InvalidInventoryGroupException\":                 newErrorInvalidInventoryGroupException,\n\t\"InvalidInventoryItemContextException\":           newErrorInvalidInventoryItemContextException,\n\t\"InvalidInventoryRequestException\":               newErrorInvalidInventoryRequestException,\n\t\"InvalidItemContentException\":                    newErrorInvalidItemContentException,\n\t\"InvalidKeyId\":                                   newErrorInvalidKeyId,\n\t\"InvalidNextToken\":                               newErrorInvalidNextToken,\n\t\"InvalidNotificationConfig\":                      newErrorInvalidNotificationConfig,\n\t\"InvalidOptionException\":                         newErrorInvalidOptionException,\n\t\"InvalidOutputFolder\":                            newErrorInvalidOutputFolder,\n\t\"InvalidOutputLocation\":                          newErrorInvalidOutputLocation,\n\t\"InvalidParameters\":                              newErrorInvalidParameters,\n\t\"InvalidPermissionType\":                          newErrorInvalidPermissionType,\n\t\"InvalidPluginName\":                              newErrorInvalidPluginName,\n\t\"InvalidPolicyAttributeException\":                newErrorInvalidPolicyAttributeException,\n\t\"InvalidPolicyTypeException\":                     newErrorInvalidPolicyTypeException,\n\t\"InvalidResourceId\":                              newErrorInvalidResourceId,\n\t\"InvalidResourceType\":                            newErrorInvalidResourceType,\n\t\"InvalidResultAttributeException\":                newErrorInvalidResultAttributeException,\n\t\"InvalidRole\":                                    newErrorInvalidRole,\n\t\"InvalidSchedule\":                                newErrorInvalidSchedule,\n\t\"InvalidTag\":                                     newErrorInvalidTag,\n\t\"InvalidTarget\":                                  newErrorInvalidTarget,\n\t\"InvalidTargetMaps\":                              newErrorInvalidTargetMaps,\n\t\"InvalidTypeNameException\":                       newErrorInvalidTypeNameException,\n\t\"InvalidUpdate\":                                  newErrorInvalidUpdate,\n\t\"InvocationDoesNotExist\":                         newErrorInvocationDoesNotExist,\n\t\"ItemContentMismatchException\":                   newErrorItemContentMismatchException,\n\t\"ItemSizeLimitExceededException\":                 newErrorItemSizeLimitExceededException,\n\t\"MaxDocumentSizeExceeded\":                        newErrorMaxDocumentSizeExceeded,\n\t\"OpsItemAccessDeniedException\":                   newErrorOpsItemAccessDeniedException,\n\t\"OpsItemAlreadyExistsException\":                  newErrorOpsItemAlreadyExistsException,\n\t\"OpsItemConflictException\":                       newErrorOpsItemConflictException,\n\t\"OpsItemInvalidParameterException\":               newErrorOpsItemInvalidParameterException,\n\t\"OpsItemLimitExceededException\":                  newErrorOpsItemLimitExceededException,\n\t\"OpsItemNotFoundException\":                       newErrorOpsItemNotFoundException,\n\t\"OpsItemRelatedItemAlreadyExistsException\":       newErrorOpsItemRelatedItemAlreadyExistsException,\n\t\"OpsItemRelatedItemAssociationNotFoundException\": newErrorOpsItemRelatedItemAssociationNotFoundException,\n\t\"OpsMetadataAlreadyExistsException\":              newErrorOpsMetadataAlreadyExistsException,\n\t\"OpsMetadataInvalidArgumentException\":            newErrorOpsMetadataInvalidArgumentException,\n\t\"OpsMetadataKeyLimitExceededException\":           newErrorOpsMetadataKeyLimitExceededException,\n\t\"OpsMetadataLimitExceededException\":              newErrorOpsMetadataLimitExceededException,\n\t\"OpsMetadataNotFoundException\":                   newErrorOpsMetadataNotFoundException,\n\t\"OpsMetadataTooManyUpdatesException\":             newErrorOpsMetadataTooManyUpdatesException,\n\t\"ParameterAlreadyExists\":                         newErrorParameterAlreadyExists,\n\t\"ParameterLimitExceeded\":                         newErrorParameterLimitExceeded,\n\t\"ParameterMaxVersionLimitExceeded\":               newErrorParameterMaxVersionLimitExceeded,\n\t\"ParameterNotFound\":                              newErrorParameterNotFound,\n\t\"ParameterPatternMismatchException\":              newErrorParameterPatternMismatchException,\n\t\"ParameterVersionLabelLimitExceeded\":             newErrorParameterVersionLabelLimitExceeded,\n\t\"ParameterVersionNotFound\":                       newErrorParameterVersionNotFound,\n\t\"PoliciesLimitExceededException\":                 newErrorPoliciesLimitExceededException,\n\t\"ResourceDataSyncAlreadyExistsException\":         newErrorResourceDataSyncAlreadyExistsException,\n\t\"ResourceDataSyncConflictException\":              newErrorResourceDataSyncConflictException,\n\t\"ResourceDataSyncCountExceededException\":         newErrorResourceDataSyncCountExceededException,\n\t\"ResourceDataSyncInvalidConfigurationException\":  newErrorResourceDataSyncInvalidConfigurationException,\n\t\"ResourceDataSyncNotFoundException\":              newErrorResourceDataSyncNotFoundException,\n\t\"ResourceInUseException\":                         newErrorResourceInUseException,\n\t\"ResourceLimitExceededException\":                 newErrorResourceLimitExceededException,\n\t\"ResourcePolicyConflictException\":                newErrorResourcePolicyConflictException,\n\t\"ResourcePolicyInvalidParameterException\":        newErrorResourcePolicyInvalidParameterException,\n\t\"ResourcePolicyLimitExceededException\":           newErrorResourcePolicyLimitExceededException,\n\t\"ServiceSettingNotFound\":                         newErrorServiceSettingNotFound,\n\t\"StatusUnchanged\":                                newErrorStatusUnchanged,\n\t\"SubTypeCountLimitExceededException\":             newErrorSubTypeCountLimitExceededException,\n\t\"TargetInUseException\":                           newErrorTargetInUseException,\n\t\"TargetNotConnected\":                             newErrorTargetNotConnected,\n\t\"TooManyTagsError\":                               newErrorTooManyTagsError,\n\t\"TooManyUpdates\":                                 newErrorTooManyUpdates,\n\t\"TotalSizeLimitExceededException\":                newErrorTotalSizeLimitExceededException,\n\t\"UnsupportedCalendarException\":                   newErrorUnsupportedCalendarException,\n\t\"UnsupportedFeatureRequiredException\":            newErrorUnsupportedFeatureRequiredException,\n\t\"UnsupportedInventoryItemContextException\":       newErrorUnsupportedInventoryItemContextException,\n\t\"UnsupportedInventorySchemaVersionException\":     newErrorUnsupportedInventorySchemaVersionException,\n\t\"UnsupportedOperatingSystem\":                     newErrorUnsupportedOperatingSystem,\n\t\"UnsupportedParameterType\":                       newErrorUnsupportedParameterType,\n\t\"UnsupportedPlatformType\":                        newErrorUnsupportedPlatformType,\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/ssm/service.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage ssm\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/client\"\n\t\"github.com/aws/aws-sdk-go/aws/client/metadata\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/aws/signer/v4\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/jsonrpc\"\n)\n\n// SSM provides the API operation methods for making requests to\n// Amazon Simple Systems Manager (SSM). See this package's package overview docs\n// for details on the service.\n//\n// SSM methods are safe to use concurrently. It is not safe to\n// modify mutate any of the struct's properties though.\ntype SSM struct {\n\t*client.Client\n}\n\n// Used for custom client initialization logic\nvar initClient func(*client.Client)\n\n// Used for custom request initialization logic\nvar initRequest func(*request.Request)\n\n// Service information constants\nconst (\n\tServiceName = \"ssm\"       // Name of service.\n\tEndpointsID = ServiceName // ID to lookup a service endpoint with.\n\tServiceID   = \"SSM\"       // ServiceID is a unique identifier of a specific service.\n)\n\n// New creates a new instance of the SSM client with a session.\n// If additional configuration is needed for the client instance use the optional\n// aws.Config parameter to add your extra config.\n//\n// Example:\n//\n//\tmySession := session.Must(session.NewSession())\n//\n//\t// Create a SSM client from just a session.\n//\tsvc := ssm.New(mySession)\n//\n//\t// Create a SSM client with additional configuration\n//\tsvc := ssm.New(mySession, aws.NewConfig().WithRegion(\"us-west-2\"))\nfunc New(p client.ConfigProvider, cfgs ...*aws.Config) *SSM {\n\tc := p.ClientConfig(EndpointsID, cfgs...)\n\tif c.SigningNameDerived || len(c.SigningName) == 0 {\n\t\tc.SigningName = EndpointsID\n\t\t// No Fallback\n\t}\n\treturn newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName, c.ResolvedRegion)\n}\n\n// newClient creates, initializes and returns a new service client instance.\nfunc newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint, signingRegion, signingName, resolvedRegion string) *SSM {\n\tsvc := &SSM{\n\t\tClient: client.New(\n\t\t\tcfg,\n\t\t\tmetadata.ClientInfo{\n\t\t\t\tServiceName:    ServiceName,\n\t\t\t\tServiceID:      ServiceID,\n\t\t\t\tSigningName:    signingName,\n\t\t\t\tSigningRegion:  signingRegion,\n\t\t\t\tPartitionID:    partitionID,\n\t\t\t\tEndpoint:       endpoint,\n\t\t\t\tAPIVersion:     \"2014-11-06\",\n\t\t\t\tResolvedRegion: resolvedRegion,\n\t\t\t\tJSONVersion:    \"1.1\",\n\t\t\t\tTargetPrefix:   \"AmazonSSM\",\n\t\t\t},\n\t\t\thandlers,\n\t\t),\n\t}\n\n\t// Handlers\n\tsvc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler)\n\tsvc.Handlers.Build.PushBackNamed(jsonrpc.BuildHandler)\n\tsvc.Handlers.Unmarshal.PushBackNamed(jsonrpc.UnmarshalHandler)\n\tsvc.Handlers.UnmarshalMeta.PushBackNamed(jsonrpc.UnmarshalMetaHandler)\n\tsvc.Handlers.UnmarshalError.PushBackNamed(\n\t\tprotocol.NewUnmarshalErrorHandler(jsonrpc.NewUnmarshalTypedError(exceptionFromCode)).NamedHandler(),\n\t)\n\n\t// Run custom client initialization if present\n\tif initClient != nil {\n\t\tinitClient(svc.Client)\n\t}\n\n\treturn svc\n}\n\n// newRequest creates a new request for a SSM operation and runs any\n// custom request initialization.\nfunc (c *SSM) newRequest(op *request.Operation, params, data interface{}) *request.Request {\n\treq := c.NewRequest(op, params, data)\n\n\t// Run custom request initialization if present\n\tif initRequest != nil {\n\t\tinitRequest(req)\n\t}\n\n\treturn req\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/ssm/waiters.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage ssm\n\nimport (\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// WaitUntilCommandExecuted uses the Amazon SSM API operation\n// GetCommandInvocation to wait for a condition to be met before returning.\n// If the condition is not met within the max attempt window, an error will\n// be returned.\nfunc (c *SSM) WaitUntilCommandExecuted(input *GetCommandInvocationInput) error {\n\treturn c.WaitUntilCommandExecutedWithContext(aws.BackgroundContext(), input)\n}\n\n// WaitUntilCommandExecutedWithContext is an extended version of WaitUntilCommandExecuted.\n// With the support for passing in a context and options to configure the\n// Waiter and the underlying request options.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSM) WaitUntilCommandExecutedWithContext(ctx aws.Context, input *GetCommandInvocationInput, opts ...request.WaiterOption) error {\n\tw := request.Waiter{\n\t\tName:        \"WaitUntilCommandExecuted\",\n\t\tMaxAttempts: 20,\n\t\tDelay:       request.ConstantWaiterDelay(5 * time.Second),\n\t\tAcceptors: []request.WaiterAcceptor{\n\t\t\t{\n\t\t\t\tState:   request.RetryWaiterState,\n\t\t\t\tMatcher: request.PathWaiterMatch, Argument: \"Status\",\n\t\t\t\tExpected: \"Pending\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tState:   request.RetryWaiterState,\n\t\t\t\tMatcher: request.PathWaiterMatch, Argument: \"Status\",\n\t\t\t\tExpected: \"InProgress\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tState:   request.RetryWaiterState,\n\t\t\t\tMatcher: request.PathWaiterMatch, Argument: \"Status\",\n\t\t\t\tExpected: \"Delayed\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tState:   request.SuccessWaiterState,\n\t\t\t\tMatcher: request.PathWaiterMatch, Argument: \"Status\",\n\t\t\t\tExpected: \"Success\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tState:   request.FailureWaiterState,\n\t\t\t\tMatcher: request.PathWaiterMatch, Argument: \"Status\",\n\t\t\t\tExpected: \"Cancelled\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tState:   request.FailureWaiterState,\n\t\t\t\tMatcher: request.PathWaiterMatch, Argument: \"Status\",\n\t\t\t\tExpected: \"TimedOut\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tState:   request.FailureWaiterState,\n\t\t\t\tMatcher: request.PathWaiterMatch, Argument: \"Status\",\n\t\t\t\tExpected: \"Failed\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tState:   request.FailureWaiterState,\n\t\t\t\tMatcher: request.PathWaiterMatch, Argument: \"Status\",\n\t\t\t\tExpected: \"Cancelling\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tState:    request.RetryWaiterState,\n\t\t\t\tMatcher:  request.ErrorWaiterMatch,\n\t\t\t\tExpected: \"InvocationDoesNotExist\",\n\t\t\t},\n\t\t},\n\t\tLogger: c.Config.Logger,\n\t\tNewRequest: func(opts []request.Option) (*request.Request, error) {\n\t\t\tvar inCpy *GetCommandInvocationInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.GetCommandInvocationRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\tw.ApplyOptions(opts...)\n\n\treturn w.WaitWithContext(ctx)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/sso/api.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage sso\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awsutil\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/restjson\"\n)\n\nconst opGetRoleCredentials = \"GetRoleCredentials\"\n\n// GetRoleCredentialsRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetRoleCredentials operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetRoleCredentials for more information on using the GetRoleCredentials\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetRoleCredentialsRequest method.\n//\treq, resp := client.GetRoleCredentialsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/GetRoleCredentials\nfunc (c *SSO) GetRoleCredentialsRequest(input *GetRoleCredentialsInput) (req *request.Request, output *GetRoleCredentialsOutput) {\n\top := &request.Operation{\n\t\tName:       opGetRoleCredentials,\n\t\tHTTPMethod: \"GET\",\n\t\tHTTPPath:   \"/federation/credentials\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetRoleCredentialsInput{}\n\t}\n\n\toutput = &GetRoleCredentialsOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Config.Credentials = credentials.AnonymousCredentials\n\treturn\n}\n\n// GetRoleCredentials API operation for AWS Single Sign-On.\n//\n// Returns the STS short-term credentials for a given role name that is assigned\n// to the user.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS Single Sign-On's\n// API operation GetRoleCredentials for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidRequestException\n//     Indicates that a problem occurred with the input to the request. For example,\n//     a required parameter might be missing or out of range.\n//\n//   - UnauthorizedException\n//     Indicates that the request is not authorized. This can happen due to an invalid\n//     access token in the request.\n//\n//   - TooManyRequestsException\n//     Indicates that the request is being made too frequently and is more than\n//     what the server can handle.\n//\n//   - ResourceNotFoundException\n//     The specified resource doesn't exist.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/GetRoleCredentials\nfunc (c *SSO) GetRoleCredentials(input *GetRoleCredentialsInput) (*GetRoleCredentialsOutput, error) {\n\treq, out := c.GetRoleCredentialsRequest(input)\n\treturn out, req.Send()\n}\n\n// GetRoleCredentialsWithContext is the same as GetRoleCredentials with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetRoleCredentials for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSO) GetRoleCredentialsWithContext(ctx aws.Context, input *GetRoleCredentialsInput, opts ...request.Option) (*GetRoleCredentialsOutput, error) {\n\treq, out := c.GetRoleCredentialsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opListAccountRoles = \"ListAccountRoles\"\n\n// ListAccountRolesRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListAccountRoles operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListAccountRoles for more information on using the ListAccountRoles\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListAccountRolesRequest method.\n//\treq, resp := client.ListAccountRolesRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/ListAccountRoles\nfunc (c *SSO) ListAccountRolesRequest(input *ListAccountRolesInput) (req *request.Request, output *ListAccountRolesOutput) {\n\top := &request.Operation{\n\t\tName:       opListAccountRoles,\n\t\tHTTPMethod: \"GET\",\n\t\tHTTPPath:   \"/assignment/roles\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"nextToken\"},\n\t\t\tOutputTokens:    []string{\"nextToken\"},\n\t\t\tLimitToken:      \"maxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListAccountRolesInput{}\n\t}\n\n\toutput = &ListAccountRolesOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Config.Credentials = credentials.AnonymousCredentials\n\treturn\n}\n\n// ListAccountRoles API operation for AWS Single Sign-On.\n//\n// Lists all roles that are assigned to the user for a given AWS account.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS Single Sign-On's\n// API operation ListAccountRoles for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidRequestException\n//     Indicates that a problem occurred with the input to the request. For example,\n//     a required parameter might be missing or out of range.\n//\n//   - UnauthorizedException\n//     Indicates that the request is not authorized. This can happen due to an invalid\n//     access token in the request.\n//\n//   - TooManyRequestsException\n//     Indicates that the request is being made too frequently and is more than\n//     what the server can handle.\n//\n//   - ResourceNotFoundException\n//     The specified resource doesn't exist.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/ListAccountRoles\nfunc (c *SSO) ListAccountRoles(input *ListAccountRolesInput) (*ListAccountRolesOutput, error) {\n\treq, out := c.ListAccountRolesRequest(input)\n\treturn out, req.Send()\n}\n\n// ListAccountRolesWithContext is the same as ListAccountRoles with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListAccountRoles for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSO) ListAccountRolesWithContext(ctx aws.Context, input *ListAccountRolesInput, opts ...request.Option) (*ListAccountRolesOutput, error) {\n\treq, out := c.ListAccountRolesRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListAccountRolesPages iterates over the pages of a ListAccountRoles operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListAccountRoles method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListAccountRoles operation.\n//\tpageNum := 0\n//\terr := client.ListAccountRolesPages(params,\n//\t    func(page *sso.ListAccountRolesOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSO) ListAccountRolesPages(input *ListAccountRolesInput, fn func(*ListAccountRolesOutput, bool) bool) error {\n\treturn c.ListAccountRolesPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListAccountRolesPagesWithContext same as ListAccountRolesPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSO) ListAccountRolesPagesWithContext(ctx aws.Context, input *ListAccountRolesInput, fn func(*ListAccountRolesOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListAccountRolesInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListAccountRolesRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListAccountRolesOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opListAccounts = \"ListAccounts\"\n\n// ListAccountsRequest generates a \"aws/request.Request\" representing the\n// client's request for the ListAccounts operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See ListAccounts for more information on using the ListAccounts\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the ListAccountsRequest method.\n//\treq, resp := client.ListAccountsRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/ListAccounts\nfunc (c *SSO) ListAccountsRequest(input *ListAccountsInput) (req *request.Request, output *ListAccountsOutput) {\n\top := &request.Operation{\n\t\tName:       opListAccounts,\n\t\tHTTPMethod: \"GET\",\n\t\tHTTPPath:   \"/assignment/accounts\",\n\t\tPaginator: &request.Paginator{\n\t\t\tInputTokens:     []string{\"nextToken\"},\n\t\t\tOutputTokens:    []string{\"nextToken\"},\n\t\t\tLimitToken:      \"maxResults\",\n\t\t\tTruncationToken: \"\",\n\t\t},\n\t}\n\n\tif input == nil {\n\t\tinput = &ListAccountsInput{}\n\t}\n\n\toutput = &ListAccountsOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Config.Credentials = credentials.AnonymousCredentials\n\treturn\n}\n\n// ListAccounts API operation for AWS Single Sign-On.\n//\n// Lists all AWS accounts assigned to the user. These AWS accounts are assigned\n// by the administrator of the account. For more information, see Assign User\n// Access (https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html#assignusers)\n// in the IAM Identity Center User Guide. This operation returns a paginated\n// response.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS Single Sign-On's\n// API operation ListAccounts for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidRequestException\n//     Indicates that a problem occurred with the input to the request. For example,\n//     a required parameter might be missing or out of range.\n//\n//   - UnauthorizedException\n//     Indicates that the request is not authorized. This can happen due to an invalid\n//     access token in the request.\n//\n//   - TooManyRequestsException\n//     Indicates that the request is being made too frequently and is more than\n//     what the server can handle.\n//\n//   - ResourceNotFoundException\n//     The specified resource doesn't exist.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/ListAccounts\nfunc (c *SSO) ListAccounts(input *ListAccountsInput) (*ListAccountsOutput, error) {\n\treq, out := c.ListAccountsRequest(input)\n\treturn out, req.Send()\n}\n\n// ListAccountsWithContext is the same as ListAccounts with the addition of\n// the ability to pass a context and additional request options.\n//\n// See ListAccounts for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSO) ListAccountsWithContext(ctx aws.Context, input *ListAccountsInput, opts ...request.Option) (*ListAccountsOutput, error) {\n\treq, out := c.ListAccountsRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// ListAccountsPages iterates over the pages of a ListAccounts operation,\n// calling the \"fn\" function with the response data for each page. To stop\n// iterating, return false from the fn function.\n//\n// See ListAccounts method for more information on how to use this operation.\n//\n// Note: This operation can generate multiple requests to a service.\n//\n//\t// Example iterating over at most 3 pages of a ListAccounts operation.\n//\tpageNum := 0\n//\terr := client.ListAccountsPages(params,\n//\t    func(page *sso.ListAccountsOutput, lastPage bool) bool {\n//\t        pageNum++\n//\t        fmt.Println(page)\n//\t        return pageNum <= 3\n//\t    })\nfunc (c *SSO) ListAccountsPages(input *ListAccountsInput, fn func(*ListAccountsOutput, bool) bool) error {\n\treturn c.ListAccountsPagesWithContext(aws.BackgroundContext(), input, fn)\n}\n\n// ListAccountsPagesWithContext same as ListAccountsPages except\n// it takes a Context and allows setting request options on the pages.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSO) ListAccountsPagesWithContext(ctx aws.Context, input *ListAccountsInput, fn func(*ListAccountsOutput, bool) bool, opts ...request.Option) error {\n\tp := request.Pagination{\n\t\tNewRequest: func() (*request.Request, error) {\n\t\t\tvar inCpy *ListAccountsInput\n\t\t\tif input != nil {\n\t\t\t\ttmp := *input\n\t\t\t\tinCpy = &tmp\n\t\t\t}\n\t\t\treq, _ := c.ListAccountsRequest(inCpy)\n\t\t\treq.SetContext(ctx)\n\t\t\treq.ApplyOptions(opts...)\n\t\t\treturn req, nil\n\t\t},\n\t}\n\n\tfor p.Next() {\n\t\tif !fn(p.Page().(*ListAccountsOutput), !p.HasNextPage()) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn p.Err()\n}\n\nconst opLogout = \"Logout\"\n\n// LogoutRequest generates a \"aws/request.Request\" representing the\n// client's request for the Logout operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See Logout for more information on using the Logout\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the LogoutRequest method.\n//\treq, resp := client.LogoutRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/Logout\nfunc (c *SSO) LogoutRequest(input *LogoutInput) (req *request.Request, output *LogoutOutput) {\n\top := &request.Operation{\n\t\tName:       opLogout,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/logout\",\n\t}\n\n\tif input == nil {\n\t\tinput = &LogoutInput{}\n\t}\n\n\toutput = &LogoutOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Config.Credentials = credentials.AnonymousCredentials\n\treq.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)\n\treturn\n}\n\n// Logout API operation for AWS Single Sign-On.\n//\n// Removes the locally stored SSO tokens from the client-side cache and sends\n// an API call to the IAM Identity Center service to invalidate the corresponding\n// server-side IAM Identity Center sign in session.\n//\n// If a user uses IAM Identity Center to access the AWS CLI, the user’s IAM\n// Identity Center sign in session is used to obtain an IAM session, as specified\n// in the corresponding IAM Identity Center permission set. More specifically,\n// IAM Identity Center assumes an IAM role in the target account on behalf of\n// the user, and the corresponding temporary AWS credentials are returned to\n// the client.\n//\n// After user logout, any existing IAM role sessions that were created by using\n// IAM Identity Center permission sets continue based on the duration configured\n// in the permission set. For more information, see User authentications (https://docs.aws.amazon.com/singlesignon/latest/userguide/authconcept.html)\n// in the IAM Identity Center User Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS Single Sign-On's\n// API operation Logout for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidRequestException\n//     Indicates that a problem occurred with the input to the request. For example,\n//     a required parameter might be missing or out of range.\n//\n//   - UnauthorizedException\n//     Indicates that the request is not authorized. This can happen due to an invalid\n//     access token in the request.\n//\n//   - TooManyRequestsException\n//     Indicates that the request is being made too frequently and is more than\n//     what the server can handle.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/Logout\nfunc (c *SSO) Logout(input *LogoutInput) (*LogoutOutput, error) {\n\treq, out := c.LogoutRequest(input)\n\treturn out, req.Send()\n}\n\n// LogoutWithContext is the same as Logout with the addition of\n// the ability to pass a context and additional request options.\n//\n// See Logout for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSO) LogoutWithContext(ctx aws.Context, input *LogoutInput, opts ...request.Option) (*LogoutOutput, error) {\n\treq, out := c.LogoutRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// Provides information about your AWS account.\ntype AccountInfo struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The identifier of the AWS account that is assigned to the user.\n\tAccountId *string `locationName:\"accountId\" type:\"string\"`\n\n\t// The display name of the AWS account that is assigned to the user.\n\tAccountName *string `locationName:\"accountName\" type:\"string\"`\n\n\t// The email address of the AWS account that is assigned to the user.\n\tEmailAddress *string `locationName:\"emailAddress\" min:\"1\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AccountInfo) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AccountInfo) GoString() string {\n\treturn s.String()\n}\n\n// SetAccountId sets the AccountId field's value.\nfunc (s *AccountInfo) SetAccountId(v string) *AccountInfo {\n\ts.AccountId = &v\n\treturn s\n}\n\n// SetAccountName sets the AccountName field's value.\nfunc (s *AccountInfo) SetAccountName(v string) *AccountInfo {\n\ts.AccountName = &v\n\treturn s\n}\n\n// SetEmailAddress sets the EmailAddress field's value.\nfunc (s *AccountInfo) SetEmailAddress(v string) *AccountInfo {\n\ts.EmailAddress = &v\n\treturn s\n}\n\ntype GetRoleCredentialsInput struct {\n\t_ struct{} `type:\"structure\" nopayload:\"true\"`\n\n\t// The token issued by the CreateToken API call. For more information, see CreateToken\n\t// (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html)\n\t// in the IAM Identity Center OIDC API Reference Guide.\n\t//\n\t// AccessToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by GetRoleCredentialsInput's\n\t// String and GoString methods.\n\t//\n\t// AccessToken is a required field\n\tAccessToken *string `location:\"header\" locationName:\"x-amz-sso_bearer_token\" type:\"string\" required:\"true\" sensitive:\"true\"`\n\n\t// The identifier for the AWS account that is assigned to the user.\n\t//\n\t// AccountId is a required field\n\tAccountId *string `location:\"querystring\" locationName:\"account_id\" type:\"string\" required:\"true\"`\n\n\t// The friendly name of the role that is assigned to the user.\n\t//\n\t// RoleName is a required field\n\tRoleName *string `location:\"querystring\" locationName:\"role_name\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetRoleCredentialsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetRoleCredentialsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetRoleCredentialsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetRoleCredentialsInput\"}\n\tif s.AccessToken == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AccessToken\"))\n\t}\n\tif s.AccountId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AccountId\"))\n\t}\n\tif s.RoleName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RoleName\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAccessToken sets the AccessToken field's value.\nfunc (s *GetRoleCredentialsInput) SetAccessToken(v string) *GetRoleCredentialsInput {\n\ts.AccessToken = &v\n\treturn s\n}\n\n// SetAccountId sets the AccountId field's value.\nfunc (s *GetRoleCredentialsInput) SetAccountId(v string) *GetRoleCredentialsInput {\n\ts.AccountId = &v\n\treturn s\n}\n\n// SetRoleName sets the RoleName field's value.\nfunc (s *GetRoleCredentialsInput) SetRoleName(v string) *GetRoleCredentialsInput {\n\ts.RoleName = &v\n\treturn s\n}\n\ntype GetRoleCredentialsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The credentials for the role that is assigned to the user.\n\tRoleCredentials *RoleCredentials `locationName:\"roleCredentials\" type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetRoleCredentialsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetRoleCredentialsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetRoleCredentials sets the RoleCredentials field's value.\nfunc (s *GetRoleCredentialsOutput) SetRoleCredentials(v *RoleCredentials) *GetRoleCredentialsOutput {\n\ts.RoleCredentials = v\n\treturn s\n}\n\n// Indicates that a problem occurred with the input to the request. For example,\n// a required parameter might be missing or out of range.\ntype InvalidRequestException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidRequestException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidRequestException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidRequestException(v protocol.ResponseMetadata) error {\n\treturn &InvalidRequestException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidRequestException) Code() string {\n\treturn \"InvalidRequestException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidRequestException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidRequestException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidRequestException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidRequestException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidRequestException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype ListAccountRolesInput struct {\n\t_ struct{} `type:\"structure\" nopayload:\"true\"`\n\n\t// The token issued by the CreateToken API call. For more information, see CreateToken\n\t// (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html)\n\t// in the IAM Identity Center OIDC API Reference Guide.\n\t//\n\t// AccessToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by ListAccountRolesInput's\n\t// String and GoString methods.\n\t//\n\t// AccessToken is a required field\n\tAccessToken *string `location:\"header\" locationName:\"x-amz-sso_bearer_token\" type:\"string\" required:\"true\" sensitive:\"true\"`\n\n\t// The identifier for the AWS account that is assigned to the user.\n\t//\n\t// AccountId is a required field\n\tAccountId *string `location:\"querystring\" locationName:\"account_id\" type:\"string\" required:\"true\"`\n\n\t// The number of items that clients can request per page.\n\tMaxResults *int64 `location:\"querystring\" locationName:\"max_result\" min:\"1\" type:\"integer\"`\n\n\t// The page token from the previous response output when you request subsequent\n\t// pages.\n\tNextToken *string `location:\"querystring\" locationName:\"next_token\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAccountRolesInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAccountRolesInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListAccountRolesInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListAccountRolesInput\"}\n\tif s.AccessToken == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AccessToken\"))\n\t}\n\tif s.AccountId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AccountId\"))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAccessToken sets the AccessToken field's value.\nfunc (s *ListAccountRolesInput) SetAccessToken(v string) *ListAccountRolesInput {\n\ts.AccessToken = &v\n\treturn s\n}\n\n// SetAccountId sets the AccountId field's value.\nfunc (s *ListAccountRolesInput) SetAccountId(v string) *ListAccountRolesInput {\n\ts.AccountId = &v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListAccountRolesInput) SetMaxResults(v int64) *ListAccountRolesInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListAccountRolesInput) SetNextToken(v string) *ListAccountRolesInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListAccountRolesOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The page token client that is used to retrieve the list of accounts.\n\tNextToken *string `locationName:\"nextToken\" type:\"string\"`\n\n\t// A paginated response with the list of roles and the next token if more results\n\t// are available.\n\tRoleList []*RoleInfo `locationName:\"roleList\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAccountRolesOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAccountRolesOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListAccountRolesOutput) SetNextToken(v string) *ListAccountRolesOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\n// SetRoleList sets the RoleList field's value.\nfunc (s *ListAccountRolesOutput) SetRoleList(v []*RoleInfo) *ListAccountRolesOutput {\n\ts.RoleList = v\n\treturn s\n}\n\ntype ListAccountsInput struct {\n\t_ struct{} `type:\"structure\" nopayload:\"true\"`\n\n\t// The token issued by the CreateToken API call. For more information, see CreateToken\n\t// (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html)\n\t// in the IAM Identity Center OIDC API Reference Guide.\n\t//\n\t// AccessToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by ListAccountsInput's\n\t// String and GoString methods.\n\t//\n\t// AccessToken is a required field\n\tAccessToken *string `location:\"header\" locationName:\"x-amz-sso_bearer_token\" type:\"string\" required:\"true\" sensitive:\"true\"`\n\n\t// This is the number of items clients can request per page.\n\tMaxResults *int64 `location:\"querystring\" locationName:\"max_result\" min:\"1\" type:\"integer\"`\n\n\t// (Optional) When requesting subsequent pages, this is the page token from\n\t// the previous response output.\n\tNextToken *string `location:\"querystring\" locationName:\"next_token\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAccountsInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAccountsInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ListAccountsInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ListAccountsInput\"}\n\tif s.AccessToken == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AccessToken\"))\n\t}\n\tif s.MaxResults != nil && *s.MaxResults < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"MaxResults\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAccessToken sets the AccessToken field's value.\nfunc (s *ListAccountsInput) SetAccessToken(v string) *ListAccountsInput {\n\ts.AccessToken = &v\n\treturn s\n}\n\n// SetMaxResults sets the MaxResults field's value.\nfunc (s *ListAccountsInput) SetMaxResults(v int64) *ListAccountsInput {\n\ts.MaxResults = &v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListAccountsInput) SetNextToken(v string) *ListAccountsInput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype ListAccountsOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A paginated response with the list of account information and the next token\n\t// if more results are available.\n\tAccountList []*AccountInfo `locationName:\"accountList\" type:\"list\"`\n\n\t// The page token client that is used to retrieve the list of accounts.\n\tNextToken *string `locationName:\"nextToken\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAccountsOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ListAccountsOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAccountList sets the AccountList field's value.\nfunc (s *ListAccountsOutput) SetAccountList(v []*AccountInfo) *ListAccountsOutput {\n\ts.AccountList = v\n\treturn s\n}\n\n// SetNextToken sets the NextToken field's value.\nfunc (s *ListAccountsOutput) SetNextToken(v string) *ListAccountsOutput {\n\ts.NextToken = &v\n\treturn s\n}\n\ntype LogoutInput struct {\n\t_ struct{} `type:\"structure\" nopayload:\"true\"`\n\n\t// The token issued by the CreateToken API call. For more information, see CreateToken\n\t// (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html)\n\t// in the IAM Identity Center OIDC API Reference Guide.\n\t//\n\t// AccessToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by LogoutInput's\n\t// String and GoString methods.\n\t//\n\t// AccessToken is a required field\n\tAccessToken *string `location:\"header\" locationName:\"x-amz-sso_bearer_token\" type:\"string\" required:\"true\" sensitive:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LogoutInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LogoutInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *LogoutInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"LogoutInput\"}\n\tif s.AccessToken == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AccessToken\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAccessToken sets the AccessToken field's value.\nfunc (s *LogoutInput) SetAccessToken(v string) *LogoutInput {\n\ts.AccessToken = &v\n\treturn s\n}\n\ntype LogoutOutput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LogoutOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s LogoutOutput) GoString() string {\n\treturn s.String()\n}\n\n// The specified resource doesn't exist.\ntype ResourceNotFoundException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceNotFoundException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ResourceNotFoundException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {\n\treturn &ResourceNotFoundException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ResourceNotFoundException) Code() string {\n\treturn \"ResourceNotFoundException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ResourceNotFoundException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ResourceNotFoundException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ResourceNotFoundException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ResourceNotFoundException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ResourceNotFoundException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Provides information about the role credentials that are assigned to the\n// user.\ntype RoleCredentials struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The identifier used for the temporary security credentials. For more information,\n\t// see Using Temporary Security Credentials to Request Access to AWS Resources\n\t// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)\n\t// in the AWS IAM User Guide.\n\tAccessKeyId *string `locationName:\"accessKeyId\" type:\"string\"`\n\n\t// The date on which temporary security credentials expire.\n\tExpiration *int64 `locationName:\"expiration\" type:\"long\"`\n\n\t// The key that is used to sign the request. For more information, see Using\n\t// Temporary Security Credentials to Request Access to AWS Resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)\n\t// in the AWS IAM User Guide.\n\t//\n\t// SecretAccessKey is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by RoleCredentials's\n\t// String and GoString methods.\n\tSecretAccessKey *string `locationName:\"secretAccessKey\" type:\"string\" sensitive:\"true\"`\n\n\t// The token used for temporary credentials. For more information, see Using\n\t// Temporary Security Credentials to Request Access to AWS Resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)\n\t// in the AWS IAM User Guide.\n\t//\n\t// SessionToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by RoleCredentials's\n\t// String and GoString methods.\n\tSessionToken *string `locationName:\"sessionToken\" type:\"string\" sensitive:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RoleCredentials) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RoleCredentials) GoString() string {\n\treturn s.String()\n}\n\n// SetAccessKeyId sets the AccessKeyId field's value.\nfunc (s *RoleCredentials) SetAccessKeyId(v string) *RoleCredentials {\n\ts.AccessKeyId = &v\n\treturn s\n}\n\n// SetExpiration sets the Expiration field's value.\nfunc (s *RoleCredentials) SetExpiration(v int64) *RoleCredentials {\n\ts.Expiration = &v\n\treturn s\n}\n\n// SetSecretAccessKey sets the SecretAccessKey field's value.\nfunc (s *RoleCredentials) SetSecretAccessKey(v string) *RoleCredentials {\n\ts.SecretAccessKey = &v\n\treturn s\n}\n\n// SetSessionToken sets the SessionToken field's value.\nfunc (s *RoleCredentials) SetSessionToken(v string) *RoleCredentials {\n\ts.SessionToken = &v\n\treturn s\n}\n\n// Provides information about the role that is assigned to the user.\ntype RoleInfo struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The identifier of the AWS account assigned to the user.\n\tAccountId *string `locationName:\"accountId\" type:\"string\"`\n\n\t// The friendly name of the role that is assigned to the user.\n\tRoleName *string `locationName:\"roleName\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RoleInfo) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RoleInfo) GoString() string {\n\treturn s.String()\n}\n\n// SetAccountId sets the AccountId field's value.\nfunc (s *RoleInfo) SetAccountId(v string) *RoleInfo {\n\ts.AccountId = &v\n\treturn s\n}\n\n// SetRoleName sets the RoleName field's value.\nfunc (s *RoleInfo) SetRoleName(v string) *RoleInfo {\n\ts.RoleName = &v\n\treturn s\n}\n\n// Indicates that the request is being made too frequently and is more than\n// what the server can handle.\ntype TooManyRequestsException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TooManyRequestsException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s TooManyRequestsException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorTooManyRequestsException(v protocol.ResponseMetadata) error {\n\treturn &TooManyRequestsException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *TooManyRequestsException) Code() string {\n\treturn \"TooManyRequestsException\"\n}\n\n// Message returns the exception's message.\nfunc (s *TooManyRequestsException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *TooManyRequestsException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *TooManyRequestsException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *TooManyRequestsException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *TooManyRequestsException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Indicates that the request is not authorized. This can happen due to an invalid\n// access token in the request.\ntype UnauthorizedException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnauthorizedException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnauthorizedException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorUnauthorizedException(v protocol.ResponseMetadata) error {\n\treturn &UnauthorizedException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *UnauthorizedException) Code() string {\n\treturn \"UnauthorizedException\"\n}\n\n// Message returns the exception's message.\nfunc (s *UnauthorizedException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *UnauthorizedException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *UnauthorizedException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", s.Code(), s.Message())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *UnauthorizedException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *UnauthorizedException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/sso/doc.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\n// Package sso provides the client and types for making API\n// requests to AWS Single Sign-On.\n//\n// AWS IAM Identity Center (successor to AWS Single Sign-On) Portal is a web\n// service that makes it easy for you to assign user access to IAM Identity\n// Center resources such as the AWS access portal. Users can get AWS account\n// applications and roles assigned to them and get federated into the application.\n//\n// Although AWS Single Sign-On was renamed, the sso and identitystore API namespaces\n// will continue to retain their original name for backward compatibility purposes.\n// For more information, see IAM Identity Center rename (https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html#renamed).\n//\n// This reference guide describes the IAM Identity Center Portal operations\n// that you can call programatically and includes detailed information on data\n// types and errors.\n//\n// AWS provides SDKs that consist of libraries and sample code for various programming\n// languages and platforms, such as Java, Ruby, .Net, iOS, or Android. The SDKs\n// provide a convenient way to create programmatic access to IAM Identity Center\n// and other AWS services. For more information about the AWS SDKs, including\n// how to download and install them, see Tools for Amazon Web Services (http://aws.amazon.com/tools/).\n//\n// See https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10 for more information on this service.\n//\n// See sso package documentation for more information.\n// https://docs.aws.amazon.com/sdk-for-go/api/service/sso/\n//\n// # Using the Client\n//\n// To contact AWS Single Sign-On with the SDK use the New function to create\n// a new service client. With that client you can make API requests to the service.\n// These clients are safe to use concurrently.\n//\n// See the SDK's documentation for more information on how to use the SDK.\n// https://docs.aws.amazon.com/sdk-for-go/api/\n//\n// See aws.Config documentation for more information on configuring SDK clients.\n// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config\n//\n// See the AWS Single Sign-On client SSO for more\n// information on creating client for this service.\n// https://docs.aws.amazon.com/sdk-for-go/api/service/sso/#New\npackage sso\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/sso/errors.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage sso\n\nimport (\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n)\n\nconst (\n\n\t// ErrCodeInvalidRequestException for service response error code\n\t// \"InvalidRequestException\".\n\t//\n\t// Indicates that a problem occurred with the input to the request. For example,\n\t// a required parameter might be missing or out of range.\n\tErrCodeInvalidRequestException = \"InvalidRequestException\"\n\n\t// ErrCodeResourceNotFoundException for service response error code\n\t// \"ResourceNotFoundException\".\n\t//\n\t// The specified resource doesn't exist.\n\tErrCodeResourceNotFoundException = \"ResourceNotFoundException\"\n\n\t// ErrCodeTooManyRequestsException for service response error code\n\t// \"TooManyRequestsException\".\n\t//\n\t// Indicates that the request is being made too frequently and is more than\n\t// what the server can handle.\n\tErrCodeTooManyRequestsException = \"TooManyRequestsException\"\n\n\t// ErrCodeUnauthorizedException for service response error code\n\t// \"UnauthorizedException\".\n\t//\n\t// Indicates that the request is not authorized. This can happen due to an invalid\n\t// access token in the request.\n\tErrCodeUnauthorizedException = \"UnauthorizedException\"\n)\n\nvar exceptionFromCode = map[string]func(protocol.ResponseMetadata) error{\n\t\"InvalidRequestException\":   newErrorInvalidRequestException,\n\t\"ResourceNotFoundException\": newErrorResourceNotFoundException,\n\t\"TooManyRequestsException\":  newErrorTooManyRequestsException,\n\t\"UnauthorizedException\":     newErrorUnauthorizedException,\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/sso/service.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage sso\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/client\"\n\t\"github.com/aws/aws-sdk-go/aws/client/metadata\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/aws/signer/v4\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/restjson\"\n)\n\n// SSO provides the API operation methods for making requests to\n// AWS Single Sign-On. See this package's package overview docs\n// for details on the service.\n//\n// SSO methods are safe to use concurrently. It is not safe to\n// modify mutate any of the struct's properties though.\ntype SSO struct {\n\t*client.Client\n}\n\n// Used for custom client initialization logic\nvar initClient func(*client.Client)\n\n// Used for custom request initialization logic\nvar initRequest func(*request.Request)\n\n// Service information constants\nconst (\n\tServiceName = \"SSO\"        // Name of service.\n\tEndpointsID = \"portal.sso\" // ID to lookup a service endpoint with.\n\tServiceID   = \"SSO\"        // ServiceID is a unique identifier of a specific service.\n)\n\n// New creates a new instance of the SSO client with a session.\n// If additional configuration is needed for the client instance use the optional\n// aws.Config parameter to add your extra config.\n//\n// Example:\n//\n//\tmySession := session.Must(session.NewSession())\n//\n//\t// Create a SSO client from just a session.\n//\tsvc := sso.New(mySession)\n//\n//\t// Create a SSO client with additional configuration\n//\tsvc := sso.New(mySession, aws.NewConfig().WithRegion(\"us-west-2\"))\nfunc New(p client.ConfigProvider, cfgs ...*aws.Config) *SSO {\n\tc := p.ClientConfig(EndpointsID, cfgs...)\n\tif c.SigningNameDerived || len(c.SigningName) == 0 {\n\t\tc.SigningName = \"awsssoportal\"\n\t}\n\treturn newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName, c.ResolvedRegion)\n}\n\n// newClient creates, initializes and returns a new service client instance.\nfunc newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint, signingRegion, signingName, resolvedRegion string) *SSO {\n\tsvc := &SSO{\n\t\tClient: client.New(\n\t\t\tcfg,\n\t\t\tmetadata.ClientInfo{\n\t\t\t\tServiceName:    ServiceName,\n\t\t\t\tServiceID:      ServiceID,\n\t\t\t\tSigningName:    signingName,\n\t\t\t\tSigningRegion:  signingRegion,\n\t\t\t\tPartitionID:    partitionID,\n\t\t\t\tEndpoint:       endpoint,\n\t\t\t\tAPIVersion:     \"2019-06-10\",\n\t\t\t\tResolvedRegion: resolvedRegion,\n\t\t\t},\n\t\t\thandlers,\n\t\t),\n\t}\n\n\t// Handlers\n\tsvc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler)\n\tsvc.Handlers.Build.PushBackNamed(restjson.BuildHandler)\n\tsvc.Handlers.Unmarshal.PushBackNamed(restjson.UnmarshalHandler)\n\tsvc.Handlers.UnmarshalMeta.PushBackNamed(restjson.UnmarshalMetaHandler)\n\tsvc.Handlers.UnmarshalError.PushBackNamed(\n\t\tprotocol.NewUnmarshalErrorHandler(restjson.NewUnmarshalTypedError(exceptionFromCode)).NamedHandler(),\n\t)\n\n\t// Run custom client initialization if present\n\tif initClient != nil {\n\t\tinitClient(svc.Client)\n\t}\n\n\treturn svc\n}\n\n// newRequest creates a new request for a SSO operation and runs any\n// custom request initialization.\nfunc (c *SSO) newRequest(op *request.Operation, params, data interface{}) *request.Request {\n\treq := c.NewRequest(op, params, data)\n\n\t// Run custom request initialization if present\n\tif initRequest != nil {\n\t\tinitRequest(req)\n\t}\n\n\treturn req\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/sso/ssoiface/interface.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\n// Package ssoiface provides an interface to enable mocking the AWS Single Sign-On service client\n// for testing your code.\n//\n// It is important to note that this interface will have breaking changes\n// when the service model is updated and adds new API operations, paginators,\n// and waiters.\npackage ssoiface\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/service/sso\"\n)\n\n// SSOAPI provides an interface to enable mocking the\n// sso.SSO service client's API operation,\n// paginators, and waiters. This make unit testing your code that calls out\n// to the SDK's service client's calls easier.\n//\n// The best way to use this interface is so the SDK's service client's calls\n// can be stubbed out for unit testing your code with the SDK without needing\n// to inject custom request handlers into the SDK's request pipeline.\n//\n//\t// myFunc uses an SDK service client to make a request to\n//\t// AWS Single Sign-On.\n//\tfunc myFunc(svc ssoiface.SSOAPI) bool {\n//\t    // Make svc.GetRoleCredentials request\n//\t}\n//\n//\tfunc main() {\n//\t    sess := session.New()\n//\t    svc := sso.New(sess)\n//\n//\t    myFunc(svc)\n//\t}\n//\n// In your _test.go file:\n//\n//\t// Define a mock struct to be used in your unit tests of myFunc.\n//\ttype mockSSOClient struct {\n//\t    ssoiface.SSOAPI\n//\t}\n//\tfunc (m *mockSSOClient) GetRoleCredentials(input *sso.GetRoleCredentialsInput) (*sso.GetRoleCredentialsOutput, error) {\n//\t    // mock response/functionality\n//\t}\n//\n//\tfunc TestMyFunc(t *testing.T) {\n//\t    // Setup Test\n//\t    mockSvc := &mockSSOClient{}\n//\n//\t    myfunc(mockSvc)\n//\n//\t    // Verify myFunc's functionality\n//\t}\n//\n// It is important to note that this interface will have breaking changes\n// when the service model is updated and adds new API operations, paginators,\n// and waiters. Its suggested to use the pattern above for testing, or using\n// tooling to generate mocks to satisfy the interfaces.\ntype SSOAPI interface {\n\tGetRoleCredentials(*sso.GetRoleCredentialsInput) (*sso.GetRoleCredentialsOutput, error)\n\tGetRoleCredentialsWithContext(aws.Context, *sso.GetRoleCredentialsInput, ...request.Option) (*sso.GetRoleCredentialsOutput, error)\n\tGetRoleCredentialsRequest(*sso.GetRoleCredentialsInput) (*request.Request, *sso.GetRoleCredentialsOutput)\n\n\tListAccountRoles(*sso.ListAccountRolesInput) (*sso.ListAccountRolesOutput, error)\n\tListAccountRolesWithContext(aws.Context, *sso.ListAccountRolesInput, ...request.Option) (*sso.ListAccountRolesOutput, error)\n\tListAccountRolesRequest(*sso.ListAccountRolesInput) (*request.Request, *sso.ListAccountRolesOutput)\n\n\tListAccountRolesPages(*sso.ListAccountRolesInput, func(*sso.ListAccountRolesOutput, bool) bool) error\n\tListAccountRolesPagesWithContext(aws.Context, *sso.ListAccountRolesInput, func(*sso.ListAccountRolesOutput, bool) bool, ...request.Option) error\n\n\tListAccounts(*sso.ListAccountsInput) (*sso.ListAccountsOutput, error)\n\tListAccountsWithContext(aws.Context, *sso.ListAccountsInput, ...request.Option) (*sso.ListAccountsOutput, error)\n\tListAccountsRequest(*sso.ListAccountsInput) (*request.Request, *sso.ListAccountsOutput)\n\n\tListAccountsPages(*sso.ListAccountsInput, func(*sso.ListAccountsOutput, bool) bool) error\n\tListAccountsPagesWithContext(aws.Context, *sso.ListAccountsInput, func(*sso.ListAccountsOutput, bool) bool, ...request.Option) error\n\n\tLogout(*sso.LogoutInput) (*sso.LogoutOutput, error)\n\tLogoutWithContext(aws.Context, *sso.LogoutInput, ...request.Option) (*sso.LogoutOutput, error)\n\tLogoutRequest(*sso.LogoutInput) (*request.Request, *sso.LogoutOutput)\n}\n\nvar _ SSOAPI = (*sso.SSO)(nil)\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/ssooidc/api.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage ssooidc\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awsutil\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n)\n\nconst opCreateToken = \"CreateToken\"\n\n// CreateTokenRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreateToken operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreateToken for more information on using the CreateToken\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreateTokenRequest method.\n//\treq, resp := client.CreateTokenRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-oidc-2019-06-10/CreateToken\nfunc (c *SSOOIDC) CreateTokenRequest(input *CreateTokenInput) (req *request.Request, output *CreateTokenOutput) {\n\top := &request.Operation{\n\t\tName:       opCreateToken,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/token\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreateTokenInput{}\n\t}\n\n\toutput = &CreateTokenOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Config.Credentials = credentials.AnonymousCredentials\n\treturn\n}\n\n// CreateToken API operation for AWS SSO OIDC.\n//\n// Creates and returns access and refresh tokens for clients that are authenticated\n// using client secrets. The access token can be used to fetch short-term credentials\n// for the assigned AWS accounts or to access application APIs using bearer\n// authentication.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS SSO OIDC's\n// API operation CreateToken for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidRequestException\n//     Indicates that something is wrong with the input to the request. For example,\n//     a required parameter might be missing or out of range.\n//\n//   - InvalidClientException\n//     Indicates that the clientId or clientSecret in the request is invalid. For\n//     example, this can occur when a client sends an incorrect clientId or an expired\n//     clientSecret.\n//\n//   - InvalidGrantException\n//     Indicates that a request contains an invalid grant. This can occur if a client\n//     makes a CreateToken request with an invalid grant type.\n//\n//   - UnauthorizedClientException\n//     Indicates that the client is not currently authorized to make the request.\n//     This can happen when a clientId is not issued for a public client.\n//\n//   - UnsupportedGrantTypeException\n//     Indicates that the grant type in the request is not supported by the service.\n//\n//   - InvalidScopeException\n//     Indicates that the scope provided in the request is invalid.\n//\n//   - AuthorizationPendingException\n//     Indicates that a request to authorize a client with an access user session\n//     token is pending.\n//\n//   - SlowDownException\n//     Indicates that the client is making the request too frequently and is more\n//     than the service can handle.\n//\n//   - AccessDeniedException\n//     You do not have sufficient access to perform this action.\n//\n//   - ExpiredTokenException\n//     Indicates that the token issued by the service is expired and is no longer\n//     valid.\n//\n//   - InternalServerException\n//     Indicates that an error from the service occurred while trying to process\n//     a request.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-oidc-2019-06-10/CreateToken\nfunc (c *SSOOIDC) CreateToken(input *CreateTokenInput) (*CreateTokenOutput, error) {\n\treq, out := c.CreateTokenRequest(input)\n\treturn out, req.Send()\n}\n\n// CreateTokenWithContext is the same as CreateToken with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreateToken for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSOOIDC) CreateTokenWithContext(ctx aws.Context, input *CreateTokenInput, opts ...request.Option) (*CreateTokenOutput, error) {\n\treq, out := c.CreateTokenRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opCreateTokenWithIAM = \"CreateTokenWithIAM\"\n\n// CreateTokenWithIAMRequest generates a \"aws/request.Request\" representing the\n// client's request for the CreateTokenWithIAM operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See CreateTokenWithIAM for more information on using the CreateTokenWithIAM\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the CreateTokenWithIAMRequest method.\n//\treq, resp := client.CreateTokenWithIAMRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-oidc-2019-06-10/CreateTokenWithIAM\nfunc (c *SSOOIDC) CreateTokenWithIAMRequest(input *CreateTokenWithIAMInput) (req *request.Request, output *CreateTokenWithIAMOutput) {\n\top := &request.Operation{\n\t\tName:       opCreateTokenWithIAM,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/token?aws_iam=t\",\n\t}\n\n\tif input == nil {\n\t\tinput = &CreateTokenWithIAMInput{}\n\t}\n\n\toutput = &CreateTokenWithIAMOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// CreateTokenWithIAM API operation for AWS SSO OIDC.\n//\n// Creates and returns access and refresh tokens for clients and applications\n// that are authenticated using IAM entities. The access token can be used to\n// fetch short-term credentials for the assigned AWS accounts or to access application\n// APIs using bearer authentication.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS SSO OIDC's\n// API operation CreateTokenWithIAM for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidRequestException\n//     Indicates that something is wrong with the input to the request. For example,\n//     a required parameter might be missing or out of range.\n//\n//   - InvalidClientException\n//     Indicates that the clientId or clientSecret in the request is invalid. For\n//     example, this can occur when a client sends an incorrect clientId or an expired\n//     clientSecret.\n//\n//   - InvalidGrantException\n//     Indicates that a request contains an invalid grant. This can occur if a client\n//     makes a CreateToken request with an invalid grant type.\n//\n//   - UnauthorizedClientException\n//     Indicates that the client is not currently authorized to make the request.\n//     This can happen when a clientId is not issued for a public client.\n//\n//   - UnsupportedGrantTypeException\n//     Indicates that the grant type in the request is not supported by the service.\n//\n//   - InvalidScopeException\n//     Indicates that the scope provided in the request is invalid.\n//\n//   - AuthorizationPendingException\n//     Indicates that a request to authorize a client with an access user session\n//     token is pending.\n//\n//   - SlowDownException\n//     Indicates that the client is making the request too frequently and is more\n//     than the service can handle.\n//\n//   - AccessDeniedException\n//     You do not have sufficient access to perform this action.\n//\n//   - ExpiredTokenException\n//     Indicates that the token issued by the service is expired and is no longer\n//     valid.\n//\n//   - InternalServerException\n//     Indicates that an error from the service occurred while trying to process\n//     a request.\n//\n//   - InvalidRequestRegionException\n//     Indicates that a token provided as input to the request was issued by and\n//     is only usable by calling IAM Identity Center endpoints in another region.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-oidc-2019-06-10/CreateTokenWithIAM\nfunc (c *SSOOIDC) CreateTokenWithIAM(input *CreateTokenWithIAMInput) (*CreateTokenWithIAMOutput, error) {\n\treq, out := c.CreateTokenWithIAMRequest(input)\n\treturn out, req.Send()\n}\n\n// CreateTokenWithIAMWithContext is the same as CreateTokenWithIAM with the addition of\n// the ability to pass a context and additional request options.\n//\n// See CreateTokenWithIAM for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSOOIDC) CreateTokenWithIAMWithContext(ctx aws.Context, input *CreateTokenWithIAMInput, opts ...request.Option) (*CreateTokenWithIAMOutput, error) {\n\treq, out := c.CreateTokenWithIAMRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opRegisterClient = \"RegisterClient\"\n\n// RegisterClientRequest generates a \"aws/request.Request\" representing the\n// client's request for the RegisterClient operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See RegisterClient for more information on using the RegisterClient\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the RegisterClientRequest method.\n//\treq, resp := client.RegisterClientRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-oidc-2019-06-10/RegisterClient\nfunc (c *SSOOIDC) RegisterClientRequest(input *RegisterClientInput) (req *request.Request, output *RegisterClientOutput) {\n\top := &request.Operation{\n\t\tName:       opRegisterClient,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/client/register\",\n\t}\n\n\tif input == nil {\n\t\tinput = &RegisterClientInput{}\n\t}\n\n\toutput = &RegisterClientOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Config.Credentials = credentials.AnonymousCredentials\n\treturn\n}\n\n// RegisterClient API operation for AWS SSO OIDC.\n//\n// Registers a client with IAM Identity Center. This allows clients to initiate\n// device authorization. The output should be persisted for reuse through many\n// authentication requests.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS SSO OIDC's\n// API operation RegisterClient for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidRequestException\n//     Indicates that something is wrong with the input to the request. For example,\n//     a required parameter might be missing or out of range.\n//\n//   - InvalidScopeException\n//     Indicates that the scope provided in the request is invalid.\n//\n//   - InvalidClientMetadataException\n//     Indicates that the client information sent in the request during registration\n//     is invalid.\n//\n//   - InternalServerException\n//     Indicates that an error from the service occurred while trying to process\n//     a request.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-oidc-2019-06-10/RegisterClient\nfunc (c *SSOOIDC) RegisterClient(input *RegisterClientInput) (*RegisterClientOutput, error) {\n\treq, out := c.RegisterClientRequest(input)\n\treturn out, req.Send()\n}\n\n// RegisterClientWithContext is the same as RegisterClient with the addition of\n// the ability to pass a context and additional request options.\n//\n// See RegisterClient for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSOOIDC) RegisterClientWithContext(ctx aws.Context, input *RegisterClientInput, opts ...request.Option) (*RegisterClientOutput, error) {\n\treq, out := c.RegisterClientRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opStartDeviceAuthorization = \"StartDeviceAuthorization\"\n\n// StartDeviceAuthorizationRequest generates a \"aws/request.Request\" representing the\n// client's request for the StartDeviceAuthorization operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See StartDeviceAuthorization for more information on using the StartDeviceAuthorization\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the StartDeviceAuthorizationRequest method.\n//\treq, resp := client.StartDeviceAuthorizationRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-oidc-2019-06-10/StartDeviceAuthorization\nfunc (c *SSOOIDC) StartDeviceAuthorizationRequest(input *StartDeviceAuthorizationInput) (req *request.Request, output *StartDeviceAuthorizationOutput) {\n\top := &request.Operation{\n\t\tName:       opStartDeviceAuthorization,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/device_authorization\",\n\t}\n\n\tif input == nil {\n\t\tinput = &StartDeviceAuthorizationInput{}\n\t}\n\n\toutput = &StartDeviceAuthorizationOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Config.Credentials = credentials.AnonymousCredentials\n\treturn\n}\n\n// StartDeviceAuthorization API operation for AWS SSO OIDC.\n//\n// Initiates device authorization by requesting a pair of verification codes\n// from the authorization service.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS SSO OIDC's\n// API operation StartDeviceAuthorization for usage and error information.\n//\n// Returned Error Types:\n//\n//   - InvalidRequestException\n//     Indicates that something is wrong with the input to the request. For example,\n//     a required parameter might be missing or out of range.\n//\n//   - InvalidClientException\n//     Indicates that the clientId or clientSecret in the request is invalid. For\n//     example, this can occur when a client sends an incorrect clientId or an expired\n//     clientSecret.\n//\n//   - UnauthorizedClientException\n//     Indicates that the client is not currently authorized to make the request.\n//     This can happen when a clientId is not issued for a public client.\n//\n//   - SlowDownException\n//     Indicates that the client is making the request too frequently and is more\n//     than the service can handle.\n//\n//   - InternalServerException\n//     Indicates that an error from the service occurred while trying to process\n//     a request.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-oidc-2019-06-10/StartDeviceAuthorization\nfunc (c *SSOOIDC) StartDeviceAuthorization(input *StartDeviceAuthorizationInput) (*StartDeviceAuthorizationOutput, error) {\n\treq, out := c.StartDeviceAuthorizationRequest(input)\n\treturn out, req.Send()\n}\n\n// StartDeviceAuthorizationWithContext is the same as StartDeviceAuthorization with the addition of\n// the ability to pass a context and additional request options.\n//\n// See StartDeviceAuthorization for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *SSOOIDC) StartDeviceAuthorizationWithContext(ctx aws.Context, input *StartDeviceAuthorizationInput, opts ...request.Option) (*StartDeviceAuthorizationOutput, error) {\n\treq, out := c.StartDeviceAuthorizationRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\n// You do not have sufficient access to perform this action.\ntype AccessDeniedException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Single error code. For this exception the value will be access_denied.\n\tError_ *string `locationName:\"error\" type:\"string\"`\n\n\t// Human-readable text providing additional information, used to assist the\n\t// client developer in understanding the error that occurred.\n\tError_description *string `locationName:\"error_description\" type:\"string\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AccessDeniedException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AccessDeniedException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAccessDeniedException(v protocol.ResponseMetadata) error {\n\treturn &AccessDeniedException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AccessDeniedException) Code() string {\n\treturn \"AccessDeniedException\"\n}\n\n// Message returns the exception's message.\nfunc (s *AccessDeniedException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AccessDeniedException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AccessDeniedException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AccessDeniedException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AccessDeniedException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Indicates that a request to authorize a client with an access user session\n// token is pending.\ntype AuthorizationPendingException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Single error code. For this exception the value will be authorization_pending.\n\tError_ *string `locationName:\"error\" type:\"string\"`\n\n\t// Human-readable text providing additional information, used to assist the\n\t// client developer in understanding the error that occurred.\n\tError_description *string `locationName:\"error_description\" type:\"string\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AuthorizationPendingException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AuthorizationPendingException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorAuthorizationPendingException(v protocol.ResponseMetadata) error {\n\treturn &AuthorizationPendingException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *AuthorizationPendingException) Code() string {\n\treturn \"AuthorizationPendingException\"\n}\n\n// Message returns the exception's message.\nfunc (s *AuthorizationPendingException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *AuthorizationPendingException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *AuthorizationPendingException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *AuthorizationPendingException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *AuthorizationPendingException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype CreateTokenInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The unique identifier string for the client or application. This value comes\n\t// from the result of the RegisterClient API.\n\t//\n\t// ClientId is a required field\n\tClientId *string `locationName:\"clientId\" type:\"string\" required:\"true\"`\n\n\t// A secret string generated for the client. This value should come from the\n\t// persisted result of the RegisterClient API.\n\t//\n\t// ClientSecret is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateTokenInput's\n\t// String and GoString methods.\n\t//\n\t// ClientSecret is a required field\n\tClientSecret *string `locationName:\"clientSecret\" type:\"string\" required:\"true\" sensitive:\"true\"`\n\n\t// Used only when calling this API for the Authorization Code grant type. The\n\t// short-term code is used to identify this authorization request. This grant\n\t// type is currently unsupported for the CreateToken API.\n\tCode *string `locationName:\"code\" type:\"string\"`\n\n\t// Used only when calling this API for the Device Code grant type. This short-term\n\t// code is used to identify this authorization request. This comes from the\n\t// result of the StartDeviceAuthorization API.\n\tDeviceCode *string `locationName:\"deviceCode\" type:\"string\"`\n\n\t// Supports the following OAuth grant types: Device Code and Refresh Token.\n\t// Specify either of the following values, depending on the grant type that\n\t// you want:\n\t//\n\t// * Device Code - urn:ietf:params:oauth:grant-type:device_code\n\t//\n\t// * Refresh Token - refresh_token\n\t//\n\t// For information about how to obtain the device code, see the StartDeviceAuthorization\n\t// topic.\n\t//\n\t// GrantType is a required field\n\tGrantType *string `locationName:\"grantType\" type:\"string\" required:\"true\"`\n\n\t// Used only when calling this API for the Authorization Code grant type. This\n\t// value specifies the location of the client or application that has registered\n\t// to receive the authorization code.\n\tRedirectUri *string `locationName:\"redirectUri\" type:\"string\"`\n\n\t// Used only when calling this API for the Refresh Token grant type. This token\n\t// is used to refresh short-term tokens, such as the access token, that might\n\t// expire.\n\t//\n\t// For more information about the features and limitations of the current IAM\n\t// Identity Center OIDC implementation, see Considerations for Using this Guide\n\t// in the IAM Identity Center OIDC API Reference (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html).\n\t//\n\t// RefreshToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateTokenInput's\n\t// String and GoString methods.\n\tRefreshToken *string `locationName:\"refreshToken\" type:\"string\" sensitive:\"true\"`\n\n\t// The list of scopes for which authorization is requested. The access token\n\t// that is issued is limited to the scopes that are granted. If this value is\n\t// not specified, IAM Identity Center authorizes all scopes that are configured\n\t// for the client during the call to RegisterClient.\n\tScope []*string `locationName:\"scope\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateTokenInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateTokenInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateTokenInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateTokenInput\"}\n\tif s.ClientId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ClientId\"))\n\t}\n\tif s.ClientSecret == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ClientSecret\"))\n\t}\n\tif s.GrantType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"GrantType\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetClientId sets the ClientId field's value.\nfunc (s *CreateTokenInput) SetClientId(v string) *CreateTokenInput {\n\ts.ClientId = &v\n\treturn s\n}\n\n// SetClientSecret sets the ClientSecret field's value.\nfunc (s *CreateTokenInput) SetClientSecret(v string) *CreateTokenInput {\n\ts.ClientSecret = &v\n\treturn s\n}\n\n// SetCode sets the Code field's value.\nfunc (s *CreateTokenInput) SetCode(v string) *CreateTokenInput {\n\ts.Code = &v\n\treturn s\n}\n\n// SetDeviceCode sets the DeviceCode field's value.\nfunc (s *CreateTokenInput) SetDeviceCode(v string) *CreateTokenInput {\n\ts.DeviceCode = &v\n\treturn s\n}\n\n// SetGrantType sets the GrantType field's value.\nfunc (s *CreateTokenInput) SetGrantType(v string) *CreateTokenInput {\n\ts.GrantType = &v\n\treturn s\n}\n\n// SetRedirectUri sets the RedirectUri field's value.\nfunc (s *CreateTokenInput) SetRedirectUri(v string) *CreateTokenInput {\n\ts.RedirectUri = &v\n\treturn s\n}\n\n// SetRefreshToken sets the RefreshToken field's value.\nfunc (s *CreateTokenInput) SetRefreshToken(v string) *CreateTokenInput {\n\ts.RefreshToken = &v\n\treturn s\n}\n\n// SetScope sets the Scope field's value.\nfunc (s *CreateTokenInput) SetScope(v []*string) *CreateTokenInput {\n\ts.Scope = v\n\treturn s\n}\n\ntype CreateTokenOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A bearer token to access AWS accounts and applications assigned to a user.\n\t//\n\t// AccessToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateTokenOutput's\n\t// String and GoString methods.\n\tAccessToken *string `locationName:\"accessToken\" type:\"string\" sensitive:\"true\"`\n\n\t// Indicates the time in seconds when an access token will expire.\n\tExpiresIn *int64 `locationName:\"expiresIn\" type:\"integer\"`\n\n\t// The idToken is not implemented or supported. For more information about the\n\t// features and limitations of the current IAM Identity Center OIDC implementation,\n\t// see Considerations for Using this Guide in the IAM Identity Center OIDC API\n\t// Reference (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html).\n\t//\n\t// A JSON Web Token (JWT) that identifies who is associated with the issued\n\t// access token.\n\t//\n\t// IdToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateTokenOutput's\n\t// String and GoString methods.\n\tIdToken *string `locationName:\"idToken\" type:\"string\" sensitive:\"true\"`\n\n\t// A token that, if present, can be used to refresh a previously issued access\n\t// token that might have expired.\n\t//\n\t// For more information about the features and limitations of the current IAM\n\t// Identity Center OIDC implementation, see Considerations for Using this Guide\n\t// in the IAM Identity Center OIDC API Reference (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html).\n\t//\n\t// RefreshToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateTokenOutput's\n\t// String and GoString methods.\n\tRefreshToken *string `locationName:\"refreshToken\" type:\"string\" sensitive:\"true\"`\n\n\t// Used to notify the client that the returned token is an access token. The\n\t// supported token type is Bearer.\n\tTokenType *string `locationName:\"tokenType\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateTokenOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateTokenOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAccessToken sets the AccessToken field's value.\nfunc (s *CreateTokenOutput) SetAccessToken(v string) *CreateTokenOutput {\n\ts.AccessToken = &v\n\treturn s\n}\n\n// SetExpiresIn sets the ExpiresIn field's value.\nfunc (s *CreateTokenOutput) SetExpiresIn(v int64) *CreateTokenOutput {\n\ts.ExpiresIn = &v\n\treturn s\n}\n\n// SetIdToken sets the IdToken field's value.\nfunc (s *CreateTokenOutput) SetIdToken(v string) *CreateTokenOutput {\n\ts.IdToken = &v\n\treturn s\n}\n\n// SetRefreshToken sets the RefreshToken field's value.\nfunc (s *CreateTokenOutput) SetRefreshToken(v string) *CreateTokenOutput {\n\ts.RefreshToken = &v\n\treturn s\n}\n\n// SetTokenType sets the TokenType field's value.\nfunc (s *CreateTokenOutput) SetTokenType(v string) *CreateTokenOutput {\n\ts.TokenType = &v\n\treturn s\n}\n\ntype CreateTokenWithIAMInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// Used only when calling this API for the JWT Bearer grant type. This value\n\t// specifies the JSON Web Token (JWT) issued by a trusted token issuer. To authorize\n\t// a trusted token issuer, configure the JWT Bearer GrantOptions for the application.\n\t//\n\t// Assertion is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateTokenWithIAMInput's\n\t// String and GoString methods.\n\tAssertion *string `locationName:\"assertion\" type:\"string\" sensitive:\"true\"`\n\n\t// The unique identifier string for the client or application. This value is\n\t// an application ARN that has OAuth grants configured.\n\t//\n\t// ClientId is a required field\n\tClientId *string `locationName:\"clientId\" type:\"string\" required:\"true\"`\n\n\t// Used only when calling this API for the Authorization Code grant type. This\n\t// short-term code is used to identify this authorization request. The code\n\t// is obtained through a redirect from IAM Identity Center to a redirect URI\n\t// persisted in the Authorization Code GrantOptions for the application.\n\tCode *string `locationName:\"code\" type:\"string\"`\n\n\t// Supports the following OAuth grant types: Authorization Code, Refresh Token,\n\t// JWT Bearer, and Token Exchange. Specify one of the following values, depending\n\t// on the grant type that you want:\n\t//\n\t// * Authorization Code - authorization_code\n\t//\n\t// * Refresh Token - refresh_token\n\t//\n\t// * JWT Bearer - urn:ietf:params:oauth:grant-type:jwt-bearer\n\t//\n\t// * Token Exchange - urn:ietf:params:oauth:grant-type:token-exchange\n\t//\n\t// GrantType is a required field\n\tGrantType *string `locationName:\"grantType\" type:\"string\" required:\"true\"`\n\n\t// Used only when calling this API for the Authorization Code grant type. This\n\t// value specifies the location of the client or application that has registered\n\t// to receive the authorization code.\n\tRedirectUri *string `locationName:\"redirectUri\" type:\"string\"`\n\n\t// Used only when calling this API for the Refresh Token grant type. This token\n\t// is used to refresh short-term tokens, such as the access token, that might\n\t// expire.\n\t//\n\t// For more information about the features and limitations of the current IAM\n\t// Identity Center OIDC implementation, see Considerations for Using this Guide\n\t// in the IAM Identity Center OIDC API Reference (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html).\n\t//\n\t// RefreshToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateTokenWithIAMInput's\n\t// String and GoString methods.\n\tRefreshToken *string `locationName:\"refreshToken\" type:\"string\" sensitive:\"true\"`\n\n\t// Used only when calling this API for the Token Exchange grant type. This value\n\t// specifies the type of token that the requester can receive. The following\n\t// values are supported:\n\t//\n\t// * Access Token - urn:ietf:params:oauth:token-type:access_token\n\t//\n\t// * Refresh Token - urn:ietf:params:oauth:token-type:refresh_token\n\tRequestedTokenType *string `locationName:\"requestedTokenType\" type:\"string\"`\n\n\t// The list of scopes for which authorization is requested. The access token\n\t// that is issued is limited to the scopes that are granted. If the value is\n\t// not specified, IAM Identity Center authorizes all scopes configured for the\n\t// application, including the following default scopes: openid, aws, sts:identity_context.\n\tScope []*string `locationName:\"scope\" type:\"list\"`\n\n\t// Used only when calling this API for the Token Exchange grant type. This value\n\t// specifies the subject of the exchange. The value of the subject token must\n\t// be an access token issued by IAM Identity Center to a different client or\n\t// application. The access token must have authorized scopes that indicate the\n\t// requested application as a target audience.\n\t//\n\t// SubjectToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateTokenWithIAMInput's\n\t// String and GoString methods.\n\tSubjectToken *string `locationName:\"subjectToken\" type:\"string\" sensitive:\"true\"`\n\n\t// Used only when calling this API for the Token Exchange grant type. This value\n\t// specifies the type of token that is passed as the subject of the exchange.\n\t// The following value is supported:\n\t//\n\t// * Access Token - urn:ietf:params:oauth:token-type:access_token\n\tSubjectTokenType *string `locationName:\"subjectTokenType\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateTokenWithIAMInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateTokenWithIAMInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *CreateTokenWithIAMInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"CreateTokenWithIAMInput\"}\n\tif s.ClientId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ClientId\"))\n\t}\n\tif s.GrantType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"GrantType\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAssertion sets the Assertion field's value.\nfunc (s *CreateTokenWithIAMInput) SetAssertion(v string) *CreateTokenWithIAMInput {\n\ts.Assertion = &v\n\treturn s\n}\n\n// SetClientId sets the ClientId field's value.\nfunc (s *CreateTokenWithIAMInput) SetClientId(v string) *CreateTokenWithIAMInput {\n\ts.ClientId = &v\n\treturn s\n}\n\n// SetCode sets the Code field's value.\nfunc (s *CreateTokenWithIAMInput) SetCode(v string) *CreateTokenWithIAMInput {\n\ts.Code = &v\n\treturn s\n}\n\n// SetGrantType sets the GrantType field's value.\nfunc (s *CreateTokenWithIAMInput) SetGrantType(v string) *CreateTokenWithIAMInput {\n\ts.GrantType = &v\n\treturn s\n}\n\n// SetRedirectUri sets the RedirectUri field's value.\nfunc (s *CreateTokenWithIAMInput) SetRedirectUri(v string) *CreateTokenWithIAMInput {\n\ts.RedirectUri = &v\n\treturn s\n}\n\n// SetRefreshToken sets the RefreshToken field's value.\nfunc (s *CreateTokenWithIAMInput) SetRefreshToken(v string) *CreateTokenWithIAMInput {\n\ts.RefreshToken = &v\n\treturn s\n}\n\n// SetRequestedTokenType sets the RequestedTokenType field's value.\nfunc (s *CreateTokenWithIAMInput) SetRequestedTokenType(v string) *CreateTokenWithIAMInput {\n\ts.RequestedTokenType = &v\n\treturn s\n}\n\n// SetScope sets the Scope field's value.\nfunc (s *CreateTokenWithIAMInput) SetScope(v []*string) *CreateTokenWithIAMInput {\n\ts.Scope = v\n\treturn s\n}\n\n// SetSubjectToken sets the SubjectToken field's value.\nfunc (s *CreateTokenWithIAMInput) SetSubjectToken(v string) *CreateTokenWithIAMInput {\n\ts.SubjectToken = &v\n\treturn s\n}\n\n// SetSubjectTokenType sets the SubjectTokenType field's value.\nfunc (s *CreateTokenWithIAMInput) SetSubjectTokenType(v string) *CreateTokenWithIAMInput {\n\ts.SubjectTokenType = &v\n\treturn s\n}\n\ntype CreateTokenWithIAMOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// A bearer token to access AWS accounts and applications assigned to a user.\n\t//\n\t// AccessToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateTokenWithIAMOutput's\n\t// String and GoString methods.\n\tAccessToken *string `locationName:\"accessToken\" type:\"string\" sensitive:\"true\"`\n\n\t// Indicates the time in seconds when an access token will expire.\n\tExpiresIn *int64 `locationName:\"expiresIn\" type:\"integer\"`\n\n\t// A JSON Web Token (JWT) that identifies the user associated with the issued\n\t// access token.\n\t//\n\t// IdToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateTokenWithIAMOutput's\n\t// String and GoString methods.\n\tIdToken *string `locationName:\"idToken\" type:\"string\" sensitive:\"true\"`\n\n\t// Indicates the type of tokens that are issued by IAM Identity Center. The\n\t// following values are supported:\n\t//\n\t// * Access Token - urn:ietf:params:oauth:token-type:access_token\n\t//\n\t// * Refresh Token - urn:ietf:params:oauth:token-type:refresh_token\n\tIssuedTokenType *string `locationName:\"issuedTokenType\" type:\"string\"`\n\n\t// A token that, if present, can be used to refresh a previously issued access\n\t// token that might have expired.\n\t//\n\t// For more information about the features and limitations of the current IAM\n\t// Identity Center OIDC implementation, see Considerations for Using this Guide\n\t// in the IAM Identity Center OIDC API Reference (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html).\n\t//\n\t// RefreshToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by CreateTokenWithIAMOutput's\n\t// String and GoString methods.\n\tRefreshToken *string `locationName:\"refreshToken\" type:\"string\" sensitive:\"true\"`\n\n\t// The list of scopes for which authorization is granted. The access token that\n\t// is issued is limited to the scopes that are granted.\n\tScope []*string `locationName:\"scope\" type:\"list\"`\n\n\t// Used to notify the requester that the returned token is an access token.\n\t// The supported token type is Bearer.\n\tTokenType *string `locationName:\"tokenType\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateTokenWithIAMOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s CreateTokenWithIAMOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAccessToken sets the AccessToken field's value.\nfunc (s *CreateTokenWithIAMOutput) SetAccessToken(v string) *CreateTokenWithIAMOutput {\n\ts.AccessToken = &v\n\treturn s\n}\n\n// SetExpiresIn sets the ExpiresIn field's value.\nfunc (s *CreateTokenWithIAMOutput) SetExpiresIn(v int64) *CreateTokenWithIAMOutput {\n\ts.ExpiresIn = &v\n\treturn s\n}\n\n// SetIdToken sets the IdToken field's value.\nfunc (s *CreateTokenWithIAMOutput) SetIdToken(v string) *CreateTokenWithIAMOutput {\n\ts.IdToken = &v\n\treturn s\n}\n\n// SetIssuedTokenType sets the IssuedTokenType field's value.\nfunc (s *CreateTokenWithIAMOutput) SetIssuedTokenType(v string) *CreateTokenWithIAMOutput {\n\ts.IssuedTokenType = &v\n\treturn s\n}\n\n// SetRefreshToken sets the RefreshToken field's value.\nfunc (s *CreateTokenWithIAMOutput) SetRefreshToken(v string) *CreateTokenWithIAMOutput {\n\ts.RefreshToken = &v\n\treturn s\n}\n\n// SetScope sets the Scope field's value.\nfunc (s *CreateTokenWithIAMOutput) SetScope(v []*string) *CreateTokenWithIAMOutput {\n\ts.Scope = v\n\treturn s\n}\n\n// SetTokenType sets the TokenType field's value.\nfunc (s *CreateTokenWithIAMOutput) SetTokenType(v string) *CreateTokenWithIAMOutput {\n\ts.TokenType = &v\n\treturn s\n}\n\n// Indicates that the token issued by the service is expired and is no longer\n// valid.\ntype ExpiredTokenException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Single error code. For this exception the value will be expired_token.\n\tError_ *string `locationName:\"error\" type:\"string\"`\n\n\t// Human-readable text providing additional information, used to assist the\n\t// client developer in understanding the error that occurred.\n\tError_description *string `locationName:\"error_description\" type:\"string\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExpiredTokenException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ExpiredTokenException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorExpiredTokenException(v protocol.ResponseMetadata) error {\n\treturn &ExpiredTokenException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *ExpiredTokenException) Code() string {\n\treturn \"ExpiredTokenException\"\n}\n\n// Message returns the exception's message.\nfunc (s *ExpiredTokenException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *ExpiredTokenException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *ExpiredTokenException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *ExpiredTokenException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *ExpiredTokenException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Indicates that an error from the service occurred while trying to process\n// a request.\ntype InternalServerException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Single error code. For this exception the value will be server_error.\n\tError_ *string `locationName:\"error\" type:\"string\"`\n\n\t// Human-readable text providing additional information, used to assist the\n\t// client developer in understanding the error that occurred.\n\tError_description *string `locationName:\"error_description\" type:\"string\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InternalServerException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InternalServerException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInternalServerException(v protocol.ResponseMetadata) error {\n\treturn &InternalServerException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InternalServerException) Code() string {\n\treturn \"InternalServerException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InternalServerException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InternalServerException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InternalServerException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InternalServerException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InternalServerException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Indicates that the clientId or clientSecret in the request is invalid. For\n// example, this can occur when a client sends an incorrect clientId or an expired\n// clientSecret.\ntype InvalidClientException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Single error code. For this exception the value will be invalid_client.\n\tError_ *string `locationName:\"error\" type:\"string\"`\n\n\t// Human-readable text providing additional information, used to assist the\n\t// client developer in understanding the error that occurred.\n\tError_description *string `locationName:\"error_description\" type:\"string\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidClientException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidClientException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidClientException(v protocol.ResponseMetadata) error {\n\treturn &InvalidClientException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidClientException) Code() string {\n\treturn \"InvalidClientException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidClientException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidClientException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidClientException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidClientException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidClientException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Indicates that the client information sent in the request during registration\n// is invalid.\ntype InvalidClientMetadataException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Single error code. For this exception the value will be invalid_client_metadata.\n\tError_ *string `locationName:\"error\" type:\"string\"`\n\n\t// Human-readable text providing additional information, used to assist the\n\t// client developer in understanding the error that occurred.\n\tError_description *string `locationName:\"error_description\" type:\"string\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidClientMetadataException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidClientMetadataException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidClientMetadataException(v protocol.ResponseMetadata) error {\n\treturn &InvalidClientMetadataException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidClientMetadataException) Code() string {\n\treturn \"InvalidClientMetadataException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidClientMetadataException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidClientMetadataException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidClientMetadataException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidClientMetadataException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidClientMetadataException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Indicates that a request contains an invalid grant. This can occur if a client\n// makes a CreateToken request with an invalid grant type.\ntype InvalidGrantException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Single error code. For this exception the value will be invalid_grant.\n\tError_ *string `locationName:\"error\" type:\"string\"`\n\n\t// Human-readable text providing additional information, used to assist the\n\t// client developer in understanding the error that occurred.\n\tError_description *string `locationName:\"error_description\" type:\"string\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidGrantException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidGrantException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidGrantException(v protocol.ResponseMetadata) error {\n\treturn &InvalidGrantException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidGrantException) Code() string {\n\treturn \"InvalidGrantException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidGrantException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidGrantException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidGrantException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidGrantException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidGrantException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Indicates that something is wrong with the input to the request. For example,\n// a required parameter might be missing or out of range.\ntype InvalidRequestException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Single error code. For this exception the value will be invalid_request.\n\tError_ *string `locationName:\"error\" type:\"string\"`\n\n\t// Human-readable text providing additional information, used to assist the\n\t// client developer in understanding the error that occurred.\n\tError_description *string `locationName:\"error_description\" type:\"string\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidRequestException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidRequestException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidRequestException(v protocol.ResponseMetadata) error {\n\treturn &InvalidRequestException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidRequestException) Code() string {\n\treturn \"InvalidRequestException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidRequestException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidRequestException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidRequestException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidRequestException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidRequestException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Indicates that a token provided as input to the request was issued by and\n// is only usable by calling IAM Identity Center endpoints in another region.\ntype InvalidRequestRegionException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Indicates the IAM Identity Center endpoint which the requester may call with\n\t// this token.\n\tEndpoint *string `locationName:\"endpoint\" type:\"string\"`\n\n\t// Single error code. For this exception the value will be invalid_request.\n\tError_ *string `locationName:\"error\" type:\"string\"`\n\n\t// Human-readable text providing additional information, used to assist the\n\t// client developer in understanding the error that occurred.\n\tError_description *string `locationName:\"error_description\" type:\"string\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n\n\t// Indicates the region which the requester may call with this token.\n\tRegion *string `locationName:\"region\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidRequestRegionException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidRequestRegionException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidRequestRegionException(v protocol.ResponseMetadata) error {\n\treturn &InvalidRequestRegionException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidRequestRegionException) Code() string {\n\treturn \"InvalidRequestRegionException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidRequestRegionException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidRequestRegionException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidRequestRegionException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidRequestRegionException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidRequestRegionException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Indicates that the scope provided in the request is invalid.\ntype InvalidScopeException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Single error code. For this exception the value will be invalid_scope.\n\tError_ *string `locationName:\"error\" type:\"string\"`\n\n\t// Human-readable text providing additional information, used to assist the\n\t// client developer in understanding the error that occurred.\n\tError_description *string `locationName:\"error_description\" type:\"string\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidScopeException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s InvalidScopeException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorInvalidScopeException(v protocol.ResponseMetadata) error {\n\treturn &InvalidScopeException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *InvalidScopeException) Code() string {\n\treturn \"InvalidScopeException\"\n}\n\n// Message returns the exception's message.\nfunc (s *InvalidScopeException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *InvalidScopeException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *InvalidScopeException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *InvalidScopeException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *InvalidScopeException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype RegisterClientInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The friendly name of the client.\n\t//\n\t// ClientName is a required field\n\tClientName *string `locationName:\"clientName\" type:\"string\" required:\"true\"`\n\n\t// The type of client. The service supports only public as a client type. Anything\n\t// other than public will be rejected by the service.\n\t//\n\t// ClientType is a required field\n\tClientType *string `locationName:\"clientType\" type:\"string\" required:\"true\"`\n\n\t// The list of scopes that are defined by the client. Upon authorization, this\n\t// list is used to restrict permissions when granting an access token.\n\tScopes []*string `locationName:\"scopes\" type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterClientInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterClientInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *RegisterClientInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"RegisterClientInput\"}\n\tif s.ClientName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ClientName\"))\n\t}\n\tif s.ClientType == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ClientType\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetClientName sets the ClientName field's value.\nfunc (s *RegisterClientInput) SetClientName(v string) *RegisterClientInput {\n\ts.ClientName = &v\n\treturn s\n}\n\n// SetClientType sets the ClientType field's value.\nfunc (s *RegisterClientInput) SetClientType(v string) *RegisterClientInput {\n\ts.ClientType = &v\n\treturn s\n}\n\n// SetScopes sets the Scopes field's value.\nfunc (s *RegisterClientInput) SetScopes(v []*string) *RegisterClientInput {\n\ts.Scopes = v\n\treturn s\n}\n\ntype RegisterClientOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// An endpoint that the client can use to request authorization.\n\tAuthorizationEndpoint *string `locationName:\"authorizationEndpoint\" type:\"string\"`\n\n\t// The unique identifier string for each client. This client uses this identifier\n\t// to get authenticated by the service in subsequent calls.\n\tClientId *string `locationName:\"clientId\" type:\"string\"`\n\n\t// Indicates the time at which the clientId and clientSecret were issued.\n\tClientIdIssuedAt *int64 `locationName:\"clientIdIssuedAt\" type:\"long\"`\n\n\t// A secret string generated for the client. The client will use this string\n\t// to get authenticated by the service in subsequent calls.\n\t//\n\t// ClientSecret is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by RegisterClientOutput's\n\t// String and GoString methods.\n\tClientSecret *string `locationName:\"clientSecret\" type:\"string\" sensitive:\"true\"`\n\n\t// Indicates the time at which the clientId and clientSecret will become invalid.\n\tClientSecretExpiresAt *int64 `locationName:\"clientSecretExpiresAt\" type:\"long\"`\n\n\t// An endpoint that the client can use to create tokens.\n\tTokenEndpoint *string `locationName:\"tokenEndpoint\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterClientOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s RegisterClientOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAuthorizationEndpoint sets the AuthorizationEndpoint field's value.\nfunc (s *RegisterClientOutput) SetAuthorizationEndpoint(v string) *RegisterClientOutput {\n\ts.AuthorizationEndpoint = &v\n\treturn s\n}\n\n// SetClientId sets the ClientId field's value.\nfunc (s *RegisterClientOutput) SetClientId(v string) *RegisterClientOutput {\n\ts.ClientId = &v\n\treturn s\n}\n\n// SetClientIdIssuedAt sets the ClientIdIssuedAt field's value.\nfunc (s *RegisterClientOutput) SetClientIdIssuedAt(v int64) *RegisterClientOutput {\n\ts.ClientIdIssuedAt = &v\n\treturn s\n}\n\n// SetClientSecret sets the ClientSecret field's value.\nfunc (s *RegisterClientOutput) SetClientSecret(v string) *RegisterClientOutput {\n\ts.ClientSecret = &v\n\treturn s\n}\n\n// SetClientSecretExpiresAt sets the ClientSecretExpiresAt field's value.\nfunc (s *RegisterClientOutput) SetClientSecretExpiresAt(v int64) *RegisterClientOutput {\n\ts.ClientSecretExpiresAt = &v\n\treturn s\n}\n\n// SetTokenEndpoint sets the TokenEndpoint field's value.\nfunc (s *RegisterClientOutput) SetTokenEndpoint(v string) *RegisterClientOutput {\n\ts.TokenEndpoint = &v\n\treturn s\n}\n\n// Indicates that the client is making the request too frequently and is more\n// than the service can handle.\ntype SlowDownException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Single error code. For this exception the value will be slow_down.\n\tError_ *string `locationName:\"error\" type:\"string\"`\n\n\t// Human-readable text providing additional information, used to assist the\n\t// client developer in understanding the error that occurred.\n\tError_description *string `locationName:\"error_description\" type:\"string\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SlowDownException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s SlowDownException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorSlowDownException(v protocol.ResponseMetadata) error {\n\treturn &SlowDownException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *SlowDownException) Code() string {\n\treturn \"SlowDownException\"\n}\n\n// Message returns the exception's message.\nfunc (s *SlowDownException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *SlowDownException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *SlowDownException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *SlowDownException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *SlowDownException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\ntype StartDeviceAuthorizationInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The unique identifier string for the client that is registered with IAM Identity\n\t// Center. This value should come from the persisted result of the RegisterClient\n\t// API operation.\n\t//\n\t// ClientId is a required field\n\tClientId *string `locationName:\"clientId\" type:\"string\" required:\"true\"`\n\n\t// A secret string that is generated for the client. This value should come\n\t// from the persisted result of the RegisterClient API operation.\n\t//\n\t// ClientSecret is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by StartDeviceAuthorizationInput's\n\t// String and GoString methods.\n\t//\n\t// ClientSecret is a required field\n\tClientSecret *string `locationName:\"clientSecret\" type:\"string\" required:\"true\" sensitive:\"true\"`\n\n\t// The URL for the Amazon Web Services access portal. For more information,\n\t// see Using the Amazon Web Services access portal (https://docs.aws.amazon.com/singlesignon/latest/userguide/using-the-portal.html)\n\t// in the IAM Identity Center User Guide.\n\t//\n\t// StartUrl is a required field\n\tStartUrl *string `locationName:\"startUrl\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartDeviceAuthorizationInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartDeviceAuthorizationInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *StartDeviceAuthorizationInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"StartDeviceAuthorizationInput\"}\n\tif s.ClientId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ClientId\"))\n\t}\n\tif s.ClientSecret == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"ClientSecret\"))\n\t}\n\tif s.StartUrl == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"StartUrl\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetClientId sets the ClientId field's value.\nfunc (s *StartDeviceAuthorizationInput) SetClientId(v string) *StartDeviceAuthorizationInput {\n\ts.ClientId = &v\n\treturn s\n}\n\n// SetClientSecret sets the ClientSecret field's value.\nfunc (s *StartDeviceAuthorizationInput) SetClientSecret(v string) *StartDeviceAuthorizationInput {\n\ts.ClientSecret = &v\n\treturn s\n}\n\n// SetStartUrl sets the StartUrl field's value.\nfunc (s *StartDeviceAuthorizationInput) SetStartUrl(v string) *StartDeviceAuthorizationInput {\n\ts.StartUrl = &v\n\treturn s\n}\n\ntype StartDeviceAuthorizationOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The short-lived code that is used by the device when polling for a session\n\t// token.\n\tDeviceCode *string `locationName:\"deviceCode\" type:\"string\"`\n\n\t// Indicates the number of seconds in which the verification code will become\n\t// invalid.\n\tExpiresIn *int64 `locationName:\"expiresIn\" type:\"integer\"`\n\n\t// Indicates the number of seconds the client must wait between attempts when\n\t// polling for a session.\n\tInterval *int64 `locationName:\"interval\" type:\"integer\"`\n\n\t// A one-time user verification code. This is needed to authorize an in-use\n\t// device.\n\tUserCode *string `locationName:\"userCode\" type:\"string\"`\n\n\t// The URI of the verification page that takes the userCode to authorize the\n\t// device.\n\tVerificationUri *string `locationName:\"verificationUri\" type:\"string\"`\n\n\t// An alternate URL that the client can use to automatically launch a browser.\n\t// This process skips the manual step in which the user visits the verification\n\t// page and enters their code.\n\tVerificationUriComplete *string `locationName:\"verificationUriComplete\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartDeviceAuthorizationOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s StartDeviceAuthorizationOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetDeviceCode sets the DeviceCode field's value.\nfunc (s *StartDeviceAuthorizationOutput) SetDeviceCode(v string) *StartDeviceAuthorizationOutput {\n\ts.DeviceCode = &v\n\treturn s\n}\n\n// SetExpiresIn sets the ExpiresIn field's value.\nfunc (s *StartDeviceAuthorizationOutput) SetExpiresIn(v int64) *StartDeviceAuthorizationOutput {\n\ts.ExpiresIn = &v\n\treturn s\n}\n\n// SetInterval sets the Interval field's value.\nfunc (s *StartDeviceAuthorizationOutput) SetInterval(v int64) *StartDeviceAuthorizationOutput {\n\ts.Interval = &v\n\treturn s\n}\n\n// SetUserCode sets the UserCode field's value.\nfunc (s *StartDeviceAuthorizationOutput) SetUserCode(v string) *StartDeviceAuthorizationOutput {\n\ts.UserCode = &v\n\treturn s\n}\n\n// SetVerificationUri sets the VerificationUri field's value.\nfunc (s *StartDeviceAuthorizationOutput) SetVerificationUri(v string) *StartDeviceAuthorizationOutput {\n\ts.VerificationUri = &v\n\treturn s\n}\n\n// SetVerificationUriComplete sets the VerificationUriComplete field's value.\nfunc (s *StartDeviceAuthorizationOutput) SetVerificationUriComplete(v string) *StartDeviceAuthorizationOutput {\n\ts.VerificationUriComplete = &v\n\treturn s\n}\n\n// Indicates that the client is not currently authorized to make the request.\n// This can happen when a clientId is not issued for a public client.\ntype UnauthorizedClientException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Single error code. For this exception the value will be unauthorized_client.\n\tError_ *string `locationName:\"error\" type:\"string\"`\n\n\t// Human-readable text providing additional information, used to assist the\n\t// client developer in understanding the error that occurred.\n\tError_description *string `locationName:\"error_description\" type:\"string\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnauthorizedClientException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnauthorizedClientException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorUnauthorizedClientException(v protocol.ResponseMetadata) error {\n\treturn &UnauthorizedClientException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *UnauthorizedClientException) Code() string {\n\treturn \"UnauthorizedClientException\"\n}\n\n// Message returns the exception's message.\nfunc (s *UnauthorizedClientException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *UnauthorizedClientException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *UnauthorizedClientException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *UnauthorizedClientException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *UnauthorizedClientException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n\n// Indicates that the grant type in the request is not supported by the service.\ntype UnsupportedGrantTypeException struct {\n\t_            struct{}                  `type:\"structure\"`\n\tRespMetadata protocol.ResponseMetadata `json:\"-\" xml:\"-\"`\n\n\t// Single error code. For this exception the value will be unsupported_grant_type.\n\tError_ *string `locationName:\"error\" type:\"string\"`\n\n\t// Human-readable text providing additional information, used to assist the\n\t// client developer in understanding the error that occurred.\n\tError_description *string `locationName:\"error_description\" type:\"string\"`\n\n\tMessage_ *string `locationName:\"message\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedGrantTypeException) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s UnsupportedGrantTypeException) GoString() string {\n\treturn s.String()\n}\n\nfunc newErrorUnsupportedGrantTypeException(v protocol.ResponseMetadata) error {\n\treturn &UnsupportedGrantTypeException{\n\t\tRespMetadata: v,\n\t}\n}\n\n// Code returns the exception type name.\nfunc (s *UnsupportedGrantTypeException) Code() string {\n\treturn \"UnsupportedGrantTypeException\"\n}\n\n// Message returns the exception's message.\nfunc (s *UnsupportedGrantTypeException) Message() string {\n\tif s.Message_ != nil {\n\t\treturn *s.Message_\n\t}\n\treturn \"\"\n}\n\n// OrigErr always returns nil, satisfies awserr.Error interface.\nfunc (s *UnsupportedGrantTypeException) OrigErr() error {\n\treturn nil\n}\n\nfunc (s *UnsupportedGrantTypeException) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\\n%s\", s.Code(), s.Message(), s.String())\n}\n\n// Status code returns the HTTP status code for the request's response error.\nfunc (s *UnsupportedGrantTypeException) StatusCode() int {\n\treturn s.RespMetadata.StatusCode\n}\n\n// RequestID returns the service's response RequestID for request.\nfunc (s *UnsupportedGrantTypeException) RequestID() string {\n\treturn s.RespMetadata.RequestID\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/ssooidc/doc.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\n// Package ssooidc provides the client and types for making API\n// requests to AWS SSO OIDC.\n//\n// IAM Identity Center OpenID Connect (OIDC) is a web service that enables a\n// client (such as CLI or a native application) to register with IAM Identity\n// Center. The service also enables the client to fetch the user’s access\n// token upon successful authentication and authorization with IAM Identity\n// Center.\n//\n// IAM Identity Center uses the sso and identitystore API namespaces.\n//\n// # Considerations for Using This Guide\n//\n// Before you begin using this guide, we recommend that you first review the\n// following important information about how the IAM Identity Center OIDC service\n// works.\n//\n//   - The IAM Identity Center OIDC service currently implements only the portions\n//     of the OAuth 2.0 Device Authorization Grant standard (https://tools.ietf.org/html/rfc8628\n//     (https://tools.ietf.org/html/rfc8628)) that are necessary to enable single\n//     sign-on authentication with the CLI.\n//\n//   - With older versions of the CLI, the service only emits OIDC access tokens,\n//     so to obtain a new token, users must explicitly re-authenticate. To access\n//     the OIDC flow that supports token refresh and doesn’t require re-authentication,\n//     update to the latest CLI version (1.27.10 for CLI V1 and 2.9.0 for CLI\n//     V2) with support for OIDC token refresh and configurable IAM Identity\n//     Center session durations. For more information, see Configure Amazon Web\n//     Services access portal session duration (https://docs.aws.amazon.com/singlesignon/latest/userguide/configure-user-session.html).\n//\n//   - The access tokens provided by this service grant access to all Amazon\n//     Web Services account entitlements assigned to an IAM Identity Center user,\n//     not just a particular application.\n//\n//   - The documentation in this guide does not describe the mechanism to convert\n//     the access token into Amazon Web Services Auth (“sigv4”) credentials\n//     for use with IAM-protected Amazon Web Services service endpoints. For\n//     more information, see GetRoleCredentials (https://docs.aws.amazon.com/singlesignon/latest/PortalAPIReference/API_GetRoleCredentials.html)\n//     in the IAM Identity Center Portal API Reference Guide.\n//\n// For general information about IAM Identity Center, see What is IAM Identity\n// Center? (https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)\n// in the IAM Identity Center User Guide.\n//\n// See https://docs.aws.amazon.com/goto/WebAPI/sso-oidc-2019-06-10 for more information on this service.\n//\n// See ssooidc package documentation for more information.\n// https://docs.aws.amazon.com/sdk-for-go/api/service/ssooidc/\n//\n// # Using the Client\n//\n// To contact AWS SSO OIDC with the SDK use the New function to create\n// a new service client. With that client you can make API requests to the service.\n// These clients are safe to use concurrently.\n//\n// See the SDK's documentation for more information on how to use the SDK.\n// https://docs.aws.amazon.com/sdk-for-go/api/\n//\n// See aws.Config documentation for more information on configuring SDK clients.\n// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config\n//\n// See the AWS SSO OIDC client SSOOIDC for more\n// information on creating client for this service.\n// https://docs.aws.amazon.com/sdk-for-go/api/service/ssooidc/#New\npackage ssooidc\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/ssooidc/errors.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage ssooidc\n\nimport (\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n)\n\nconst (\n\n\t// ErrCodeAccessDeniedException for service response error code\n\t// \"AccessDeniedException\".\n\t//\n\t// You do not have sufficient access to perform this action.\n\tErrCodeAccessDeniedException = \"AccessDeniedException\"\n\n\t// ErrCodeAuthorizationPendingException for service response error code\n\t// \"AuthorizationPendingException\".\n\t//\n\t// Indicates that a request to authorize a client with an access user session\n\t// token is pending.\n\tErrCodeAuthorizationPendingException = \"AuthorizationPendingException\"\n\n\t// ErrCodeExpiredTokenException for service response error code\n\t// \"ExpiredTokenException\".\n\t//\n\t// Indicates that the token issued by the service is expired and is no longer\n\t// valid.\n\tErrCodeExpiredTokenException = \"ExpiredTokenException\"\n\n\t// ErrCodeInternalServerException for service response error code\n\t// \"InternalServerException\".\n\t//\n\t// Indicates that an error from the service occurred while trying to process\n\t// a request.\n\tErrCodeInternalServerException = \"InternalServerException\"\n\n\t// ErrCodeInvalidClientException for service response error code\n\t// \"InvalidClientException\".\n\t//\n\t// Indicates that the clientId or clientSecret in the request is invalid. For\n\t// example, this can occur when a client sends an incorrect clientId or an expired\n\t// clientSecret.\n\tErrCodeInvalidClientException = \"InvalidClientException\"\n\n\t// ErrCodeInvalidClientMetadataException for service response error code\n\t// \"InvalidClientMetadataException\".\n\t//\n\t// Indicates that the client information sent in the request during registration\n\t// is invalid.\n\tErrCodeInvalidClientMetadataException = \"InvalidClientMetadataException\"\n\n\t// ErrCodeInvalidGrantException for service response error code\n\t// \"InvalidGrantException\".\n\t//\n\t// Indicates that a request contains an invalid grant. This can occur if a client\n\t// makes a CreateToken request with an invalid grant type.\n\tErrCodeInvalidGrantException = \"InvalidGrantException\"\n\n\t// ErrCodeInvalidRequestException for service response error code\n\t// \"InvalidRequestException\".\n\t//\n\t// Indicates that something is wrong with the input to the request. For example,\n\t// a required parameter might be missing or out of range.\n\tErrCodeInvalidRequestException = \"InvalidRequestException\"\n\n\t// ErrCodeInvalidRequestRegionException for service response error code\n\t// \"InvalidRequestRegionException\".\n\t//\n\t// Indicates that a token provided as input to the request was issued by and\n\t// is only usable by calling IAM Identity Center endpoints in another region.\n\tErrCodeInvalidRequestRegionException = \"InvalidRequestRegionException\"\n\n\t// ErrCodeInvalidScopeException for service response error code\n\t// \"InvalidScopeException\".\n\t//\n\t// Indicates that the scope provided in the request is invalid.\n\tErrCodeInvalidScopeException = \"InvalidScopeException\"\n\n\t// ErrCodeSlowDownException for service response error code\n\t// \"SlowDownException\".\n\t//\n\t// Indicates that the client is making the request too frequently and is more\n\t// than the service can handle.\n\tErrCodeSlowDownException = \"SlowDownException\"\n\n\t// ErrCodeUnauthorizedClientException for service response error code\n\t// \"UnauthorizedClientException\".\n\t//\n\t// Indicates that the client is not currently authorized to make the request.\n\t// This can happen when a clientId is not issued for a public client.\n\tErrCodeUnauthorizedClientException = \"UnauthorizedClientException\"\n\n\t// ErrCodeUnsupportedGrantTypeException for service response error code\n\t// \"UnsupportedGrantTypeException\".\n\t//\n\t// Indicates that the grant type in the request is not supported by the service.\n\tErrCodeUnsupportedGrantTypeException = \"UnsupportedGrantTypeException\"\n)\n\nvar exceptionFromCode = map[string]func(protocol.ResponseMetadata) error{\n\t\"AccessDeniedException\":          newErrorAccessDeniedException,\n\t\"AuthorizationPendingException\":  newErrorAuthorizationPendingException,\n\t\"ExpiredTokenException\":          newErrorExpiredTokenException,\n\t\"InternalServerException\":        newErrorInternalServerException,\n\t\"InvalidClientException\":         newErrorInvalidClientException,\n\t\"InvalidClientMetadataException\": newErrorInvalidClientMetadataException,\n\t\"InvalidGrantException\":          newErrorInvalidGrantException,\n\t\"InvalidRequestException\":        newErrorInvalidRequestException,\n\t\"InvalidRequestRegionException\":  newErrorInvalidRequestRegionException,\n\t\"InvalidScopeException\":          newErrorInvalidScopeException,\n\t\"SlowDownException\":              newErrorSlowDownException,\n\t\"UnauthorizedClientException\":    newErrorUnauthorizedClientException,\n\t\"UnsupportedGrantTypeException\":  newErrorUnsupportedGrantTypeException,\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/ssooidc/service.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage ssooidc\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/client\"\n\t\"github.com/aws/aws-sdk-go/aws/client/metadata\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/aws/signer/v4\"\n\t\"github.com/aws/aws-sdk-go/private/protocol\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/restjson\"\n)\n\n// SSOOIDC provides the API operation methods for making requests to\n// AWS SSO OIDC. See this package's package overview docs\n// for details on the service.\n//\n// SSOOIDC methods are safe to use concurrently. It is not safe to\n// modify mutate any of the struct's properties though.\ntype SSOOIDC struct {\n\t*client.Client\n}\n\n// Used for custom client initialization logic\nvar initClient func(*client.Client)\n\n// Used for custom request initialization logic\nvar initRequest func(*request.Request)\n\n// Service information constants\nconst (\n\tServiceName = \"SSO OIDC\" // Name of service.\n\tEndpointsID = \"oidc\"     // ID to lookup a service endpoint with.\n\tServiceID   = \"SSO OIDC\" // ServiceID is a unique identifier of a specific service.\n)\n\n// New creates a new instance of the SSOOIDC client with a session.\n// If additional configuration is needed for the client instance use the optional\n// aws.Config parameter to add your extra config.\n//\n// Example:\n//\n//\tmySession := session.Must(session.NewSession())\n//\n//\t// Create a SSOOIDC client from just a session.\n//\tsvc := ssooidc.New(mySession)\n//\n//\t// Create a SSOOIDC client with additional configuration\n//\tsvc := ssooidc.New(mySession, aws.NewConfig().WithRegion(\"us-west-2\"))\nfunc New(p client.ConfigProvider, cfgs ...*aws.Config) *SSOOIDC {\n\tc := p.ClientConfig(EndpointsID, cfgs...)\n\tif c.SigningNameDerived || len(c.SigningName) == 0 {\n\t\tc.SigningName = \"sso-oauth\"\n\t}\n\treturn newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName, c.ResolvedRegion)\n}\n\n// newClient creates, initializes and returns a new service client instance.\nfunc newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint, signingRegion, signingName, resolvedRegion string) *SSOOIDC {\n\tsvc := &SSOOIDC{\n\t\tClient: client.New(\n\t\t\tcfg,\n\t\t\tmetadata.ClientInfo{\n\t\t\t\tServiceName:    ServiceName,\n\t\t\t\tServiceID:      ServiceID,\n\t\t\t\tSigningName:    signingName,\n\t\t\t\tSigningRegion:  signingRegion,\n\t\t\t\tPartitionID:    partitionID,\n\t\t\t\tEndpoint:       endpoint,\n\t\t\t\tAPIVersion:     \"2019-06-10\",\n\t\t\t\tResolvedRegion: resolvedRegion,\n\t\t\t},\n\t\t\thandlers,\n\t\t),\n\t}\n\n\t// Handlers\n\tsvc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler)\n\tsvc.Handlers.Build.PushBackNamed(restjson.BuildHandler)\n\tsvc.Handlers.Unmarshal.PushBackNamed(restjson.UnmarshalHandler)\n\tsvc.Handlers.UnmarshalMeta.PushBackNamed(restjson.UnmarshalMetaHandler)\n\tsvc.Handlers.UnmarshalError.PushBackNamed(\n\t\tprotocol.NewUnmarshalErrorHandler(restjson.NewUnmarshalTypedError(exceptionFromCode)).NamedHandler(),\n\t)\n\n\t// Run custom client initialization if present\n\tif initClient != nil {\n\t\tinitClient(svc.Client)\n\t}\n\n\treturn svc\n}\n\n// newRequest creates a new request for a SSOOIDC operation and runs any\n// custom request initialization.\nfunc (c *SSOOIDC) newRequest(op *request.Operation, params, data interface{}) *request.Request {\n\treq := c.NewRequest(op, params, data)\n\n\t// Run custom request initialization if present\n\tif initRequest != nil {\n\t\tinitRequest(req)\n\t}\n\n\treturn req\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/sts/api.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage sts\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awsutil\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\nconst opAssumeRole = \"AssumeRole\"\n\n// AssumeRoleRequest generates a \"aws/request.Request\" representing the\n// client's request for the AssumeRole operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See AssumeRole for more information on using the AssumeRole\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the AssumeRoleRequest method.\n//\treq, resp := client.AssumeRoleRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRole\nfunc (c *STS) AssumeRoleRequest(input *AssumeRoleInput) (req *request.Request, output *AssumeRoleOutput) {\n\top := &request.Operation{\n\t\tName:       opAssumeRole,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &AssumeRoleInput{}\n\t}\n\n\toutput = &AssumeRoleOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// AssumeRole API operation for AWS Security Token Service.\n//\n// Returns a set of temporary security credentials that you can use to access\n// Amazon Web Services resources. These temporary credentials consist of an\n// access key ID, a secret access key, and a security token. Typically, you\n// use AssumeRole within your account or for cross-account access. For a comparison\n// of AssumeRole with other API operations that produce temporary credentials,\n// see Requesting Temporary Security Credentials (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html)\n// and Comparing the Amazon Web Services STS API operations (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison)\n// in the IAM User Guide.\n//\n// # Permissions\n//\n// The temporary security credentials created by AssumeRole can be used to make\n// API calls to any Amazon Web Services service with the following exception:\n// You cannot call the Amazon Web Services STS GetFederationToken or GetSessionToken\n// API operations.\n//\n// (Optional) You can pass inline or managed session policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n// to this operation. You can pass a single JSON policy document to use as an\n// inline session policy. You can also specify up to 10 managed policy Amazon\n// Resource Names (ARNs) to use as managed session policies. The plaintext that\n// you use for both inline and managed session policies can't exceed 2,048 characters.\n// Passing policies to this operation returns new temporary credentials. The\n// resulting session's permissions are the intersection of the role's identity-based\n// policy and the session policies. You can use the role's temporary credentials\n// in subsequent Amazon Web Services API calls to access resources in the account\n// that owns the role. You cannot use session policies to grant more permissions\n// than those allowed by the identity-based policy of the role that is being\n// assumed. For more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n// in the IAM User Guide.\n//\n// When you create a role, you create two policies: a role trust policy that\n// specifies who can assume the role, and a permissions policy that specifies\n// what can be done with the role. You specify the trusted principal that is\n// allowed to assume the role in the role trust policy.\n//\n// To assume a role from a different account, your Amazon Web Services account\n// must be trusted by the role. The trust relationship is defined in the role's\n// trust policy when the role is created. That trust policy states which accounts\n// are allowed to delegate that access to users in the account.\n//\n// A user who wants to access a role in a different account must also have permissions\n// that are delegated from the account administrator. The administrator must\n// attach a policy that allows the user to call AssumeRole for the ARN of the\n// role in the other account.\n//\n// To allow a user to assume a role in the same account, you can do either of\n// the following:\n//\n//   - Attach a policy to the user that allows the user to call AssumeRole\n//     (as long as the role's trust policy trusts the account).\n//\n//   - Add the user as a principal directly in the role's trust policy.\n//\n// You can do either because the role’s trust policy acts as an IAM resource-based\n// policy. When a resource-based policy grants access to a principal in the\n// same account, no additional identity-based policy is required. For more information\n// about trust policies and resource-based policies, see IAM Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)\n// in the IAM User Guide.\n//\n// # Tags\n//\n// (Optional) You can pass tag key-value pairs to your session. These tags are\n// called session tags. For more information about session tags, see Passing\n// Session Tags in STS (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)\n// in the IAM User Guide.\n//\n// An administrator must grant you the permissions necessary to pass session\n// tags. The administrator can also create granular permissions to allow you\n// to pass only specific session tags. For more information, see Tutorial: Using\n// Tags for Attribute-Based Access Control (https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)\n// in the IAM User Guide.\n//\n// You can set the session tags as transitive. Transitive tags persist during\n// role chaining. For more information, see Chaining Roles with Session Tags\n// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining)\n// in the IAM User Guide.\n//\n// # Using MFA with AssumeRole\n//\n// (Optional) You can include multi-factor authentication (MFA) information\n// when you call AssumeRole. This is useful for cross-account scenarios to ensure\n// that the user that assumes the role has been authenticated with an Amazon\n// Web Services MFA device. In that scenario, the trust policy of the role being\n// assumed includes a condition that tests for MFA authentication. If the caller\n// does not include valid MFA information, the request to assume the role is\n// denied. The condition in a trust policy that tests for MFA authentication\n// might look like the following example.\n//\n// \"Condition\": {\"Bool\": {\"aws:MultiFactorAuthPresent\": true}}\n//\n// For more information, see Configuring MFA-Protected API Access (https://docs.aws.amazon.com/IAM/latest/UserGuide/MFAProtectedAPI.html)\n// in the IAM User Guide guide.\n//\n// To use MFA with AssumeRole, you pass values for the SerialNumber and TokenCode\n// parameters. The SerialNumber value identifies the user's hardware or virtual\n// MFA device. The TokenCode is the time-based one-time password (TOTP) that\n// the MFA device produces.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS Security Token Service's\n// API operation AssumeRole for usage and error information.\n//\n// Returned Error Codes:\n//\n//   - ErrCodeMalformedPolicyDocumentException \"MalformedPolicyDocument\"\n//     The request was rejected because the policy document was malformed. The error\n//     message describes the specific error.\n//\n//   - ErrCodePackedPolicyTooLargeException \"PackedPolicyTooLarge\"\n//     The request was rejected because the total packed size of the session policies\n//     and session tags combined was too large. An Amazon Web Services conversion\n//     compresses the session policy document, session policy ARNs, and session\n//     tags into a packed binary format that has a separate limit. The error message\n//     indicates by percentage how close the policies and tags are to the upper\n//     size limit. For more information, see Passing Session Tags in STS (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)\n//     in the IAM User Guide.\n//\n//     You could receive this error even though you meet other defined session policy\n//     and session tag limits. For more information, see IAM and STS Entity Character\n//     Limits (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-limits-entity-length)\n//     in the IAM User Guide.\n//\n//   - ErrCodeRegionDisabledException \"RegionDisabledException\"\n//     STS is not activated in the requested region for the account that is being\n//     asked to generate credentials. The account administrator must use the IAM\n//     console to activate STS in that region. For more information, see Activating\n//     and Deactivating Amazon Web Services STS in an Amazon Web Services Region\n//     (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)\n//     in the IAM User Guide.\n//\n//   - ErrCodeExpiredTokenException \"ExpiredTokenException\"\n//     The web identity token that was passed is expired or is not valid. Get a\n//     new identity token from the identity provider and then retry the request.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRole\nfunc (c *STS) AssumeRole(input *AssumeRoleInput) (*AssumeRoleOutput, error) {\n\treq, out := c.AssumeRoleRequest(input)\n\treturn out, req.Send()\n}\n\n// AssumeRoleWithContext is the same as AssumeRole with the addition of\n// the ability to pass a context and additional request options.\n//\n// See AssumeRole for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *STS) AssumeRoleWithContext(ctx aws.Context, input *AssumeRoleInput, opts ...request.Option) (*AssumeRoleOutput, error) {\n\treq, out := c.AssumeRoleRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opAssumeRoleWithSAML = \"AssumeRoleWithSAML\"\n\n// AssumeRoleWithSAMLRequest generates a \"aws/request.Request\" representing the\n// client's request for the AssumeRoleWithSAML operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See AssumeRoleWithSAML for more information on using the AssumeRoleWithSAML\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the AssumeRoleWithSAMLRequest method.\n//\treq, resp := client.AssumeRoleWithSAMLRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithSAML\nfunc (c *STS) AssumeRoleWithSAMLRequest(input *AssumeRoleWithSAMLInput) (req *request.Request, output *AssumeRoleWithSAMLOutput) {\n\top := &request.Operation{\n\t\tName:       opAssumeRoleWithSAML,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &AssumeRoleWithSAMLInput{}\n\t}\n\n\toutput = &AssumeRoleWithSAMLOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Config.Credentials = credentials.AnonymousCredentials\n\treturn\n}\n\n// AssumeRoleWithSAML API operation for AWS Security Token Service.\n//\n// Returns a set of temporary security credentials for users who have been authenticated\n// via a SAML authentication response. This operation provides a mechanism for\n// tying an enterprise identity store or directory to role-based Amazon Web\n// Services access without user-specific credentials or configuration. For a\n// comparison of AssumeRoleWithSAML with the other API operations that produce\n// temporary credentials, see Requesting Temporary Security Credentials (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html)\n// and Comparing the Amazon Web Services STS API operations (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison)\n// in the IAM User Guide.\n//\n// The temporary security credentials returned by this operation consist of\n// an access key ID, a secret access key, and a security token. Applications\n// can use these temporary security credentials to sign calls to Amazon Web\n// Services services.\n//\n// # Session Duration\n//\n// By default, the temporary security credentials created by AssumeRoleWithSAML\n// last for one hour. However, you can use the optional DurationSeconds parameter\n// to specify the duration of your session. Your role session lasts for the\n// duration that you specify, or until the time specified in the SAML authentication\n// response's SessionNotOnOrAfter value, whichever is shorter. You can provide\n// a DurationSeconds value from 900 seconds (15 minutes) up to the maximum session\n// duration setting for the role. This setting can have a value from 1 hour\n// to 12 hours. To learn how to view the maximum value for your role, see View\n// the Maximum Session Duration Setting for a Role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session)\n// in the IAM User Guide. The maximum session duration limit applies when you\n// use the AssumeRole* API operations or the assume-role* CLI commands. However\n// the limit does not apply when you use those operations to create a console\n// URL. For more information, see Using IAM Roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)\n// in the IAM User Guide.\n//\n// Role chaining (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-role-chaining)\n// limits your CLI or Amazon Web Services API role session to a maximum of one\n// hour. When you use the AssumeRole API operation to assume a role, you can\n// specify the duration of your role session with the DurationSeconds parameter.\n// You can specify a parameter value of up to 43200 seconds (12 hours), depending\n// on the maximum session duration setting for your role. However, if you assume\n// a role using role chaining and provide a DurationSeconds parameter value\n// greater than one hour, the operation fails.\n//\n// # Permissions\n//\n// The temporary security credentials created by AssumeRoleWithSAML can be used\n// to make API calls to any Amazon Web Services service with the following exception:\n// you cannot call the STS GetFederationToken or GetSessionToken API operations.\n//\n// (Optional) You can pass inline or managed session policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n// to this operation. You can pass a single JSON policy document to use as an\n// inline session policy. You can also specify up to 10 managed policy Amazon\n// Resource Names (ARNs) to use as managed session policies. The plaintext that\n// you use for both inline and managed session policies can't exceed 2,048 characters.\n// Passing policies to this operation returns new temporary credentials. The\n// resulting session's permissions are the intersection of the role's identity-based\n// policy and the session policies. You can use the role's temporary credentials\n// in subsequent Amazon Web Services API calls to access resources in the account\n// that owns the role. You cannot use session policies to grant more permissions\n// than those allowed by the identity-based policy of the role that is being\n// assumed. For more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n// in the IAM User Guide.\n//\n// Calling AssumeRoleWithSAML does not require the use of Amazon Web Services\n// security credentials. The identity of the caller is validated by using keys\n// in the metadata document that is uploaded for the SAML provider entity for\n// your identity provider.\n//\n// Calling AssumeRoleWithSAML can result in an entry in your CloudTrail logs.\n// The entry includes the value in the NameID element of the SAML assertion.\n// We recommend that you use a NameIDType that is not associated with any personally\n// identifiable information (PII). For example, you could instead use the persistent\n// identifier (urn:oasis:names:tc:SAML:2.0:nameid-format:persistent).\n//\n// # Tags\n//\n// (Optional) You can configure your IdP to pass attributes into your SAML assertion\n// as session tags. Each session tag consists of a key name and an associated\n// value. For more information about session tags, see Passing Session Tags\n// in STS (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)\n// in the IAM User Guide.\n//\n// You can pass up to 50 session tags. The plaintext session tag keys can’t\n// exceed 128 characters and the values can’t exceed 256 characters. For these\n// and additional limits, see IAM and STS Character Limits (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length)\n// in the IAM User Guide.\n//\n// An Amazon Web Services conversion compresses the passed inline session policy,\n// managed policy ARNs, and session tags into a packed binary format that has\n// a separate limit. Your request can fail for this limit even if your plaintext\n// meets the other requirements. The PackedPolicySize response element indicates\n// by percentage how close the policies and tags for your request are to the\n// upper size limit.\n//\n// You can pass a session tag with the same key as a tag that is attached to\n// the role. When you do, session tags override the role's tags with the same\n// key.\n//\n// An administrator must grant you the permissions necessary to pass session\n// tags. The administrator can also create granular permissions to allow you\n// to pass only specific session tags. For more information, see Tutorial: Using\n// Tags for Attribute-Based Access Control (https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)\n// in the IAM User Guide.\n//\n// You can set the session tags as transitive. Transitive tags persist during\n// role chaining. For more information, see Chaining Roles with Session Tags\n// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining)\n// in the IAM User Guide.\n//\n// # SAML Configuration\n//\n// Before your application can call AssumeRoleWithSAML, you must configure your\n// SAML identity provider (IdP) to issue the claims required by Amazon Web Services.\n// Additionally, you must use Identity and Access Management (IAM) to create\n// a SAML provider entity in your Amazon Web Services account that represents\n// your identity provider. You must also create an IAM role that specifies this\n// SAML provider in its trust policy.\n//\n// For more information, see the following resources:\n//\n//   - About SAML 2.0-based Federation (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html)\n//     in the IAM User Guide.\n//\n//   - Creating SAML Identity Providers (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html)\n//     in the IAM User Guide.\n//\n//   - Configuring a Relying Party and Claims (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html)\n//     in the IAM User Guide.\n//\n//   - Creating a Role for SAML 2.0 Federation (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)\n//     in the IAM User Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS Security Token Service's\n// API operation AssumeRoleWithSAML for usage and error information.\n//\n// Returned Error Codes:\n//\n//   - ErrCodeMalformedPolicyDocumentException \"MalformedPolicyDocument\"\n//     The request was rejected because the policy document was malformed. The error\n//     message describes the specific error.\n//\n//   - ErrCodePackedPolicyTooLargeException \"PackedPolicyTooLarge\"\n//     The request was rejected because the total packed size of the session policies\n//     and session tags combined was too large. An Amazon Web Services conversion\n//     compresses the session policy document, session policy ARNs, and session\n//     tags into a packed binary format that has a separate limit. The error message\n//     indicates by percentage how close the policies and tags are to the upper\n//     size limit. For more information, see Passing Session Tags in STS (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)\n//     in the IAM User Guide.\n//\n//     You could receive this error even though you meet other defined session policy\n//     and session tag limits. For more information, see IAM and STS Entity Character\n//     Limits (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-limits-entity-length)\n//     in the IAM User Guide.\n//\n//   - ErrCodeIDPRejectedClaimException \"IDPRejectedClaim\"\n//     The identity provider (IdP) reported that authentication failed. This might\n//     be because the claim is invalid.\n//\n//     If this error is returned for the AssumeRoleWithWebIdentity operation, it\n//     can also mean that the claim has expired or has been explicitly revoked.\n//\n//   - ErrCodeInvalidIdentityTokenException \"InvalidIdentityToken\"\n//     The web identity token that was passed could not be validated by Amazon Web\n//     Services. Get a new identity token from the identity provider and then retry\n//     the request.\n//\n//   - ErrCodeExpiredTokenException \"ExpiredTokenException\"\n//     The web identity token that was passed is expired or is not valid. Get a\n//     new identity token from the identity provider and then retry the request.\n//\n//   - ErrCodeRegionDisabledException \"RegionDisabledException\"\n//     STS is not activated in the requested region for the account that is being\n//     asked to generate credentials. The account administrator must use the IAM\n//     console to activate STS in that region. For more information, see Activating\n//     and Deactivating Amazon Web Services STS in an Amazon Web Services Region\n//     (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)\n//     in the IAM User Guide.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithSAML\nfunc (c *STS) AssumeRoleWithSAML(input *AssumeRoleWithSAMLInput) (*AssumeRoleWithSAMLOutput, error) {\n\treq, out := c.AssumeRoleWithSAMLRequest(input)\n\treturn out, req.Send()\n}\n\n// AssumeRoleWithSAMLWithContext is the same as AssumeRoleWithSAML with the addition of\n// the ability to pass a context and additional request options.\n//\n// See AssumeRoleWithSAML for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *STS) AssumeRoleWithSAMLWithContext(ctx aws.Context, input *AssumeRoleWithSAMLInput, opts ...request.Option) (*AssumeRoleWithSAMLOutput, error) {\n\treq, out := c.AssumeRoleWithSAMLRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opAssumeRoleWithWebIdentity = \"AssumeRoleWithWebIdentity\"\n\n// AssumeRoleWithWebIdentityRequest generates a \"aws/request.Request\" representing the\n// client's request for the AssumeRoleWithWebIdentity operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See AssumeRoleWithWebIdentity for more information on using the AssumeRoleWithWebIdentity\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the AssumeRoleWithWebIdentityRequest method.\n//\treq, resp := client.AssumeRoleWithWebIdentityRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithWebIdentity\nfunc (c *STS) AssumeRoleWithWebIdentityRequest(input *AssumeRoleWithWebIdentityInput) (req *request.Request, output *AssumeRoleWithWebIdentityOutput) {\n\top := &request.Operation{\n\t\tName:       opAssumeRoleWithWebIdentity,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &AssumeRoleWithWebIdentityInput{}\n\t}\n\n\toutput = &AssumeRoleWithWebIdentityOutput{}\n\treq = c.newRequest(op, input, output)\n\treq.Config.Credentials = credentials.AnonymousCredentials\n\treturn\n}\n\n// AssumeRoleWithWebIdentity API operation for AWS Security Token Service.\n//\n// Returns a set of temporary security credentials for users who have been authenticated\n// in a mobile or web application with a web identity provider. Example providers\n// include the OAuth 2.0 providers Login with Amazon and Facebook, or any OpenID\n// Connect-compatible identity provider such as Google or Amazon Cognito federated\n// identities (https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html).\n//\n// For mobile applications, we recommend that you use Amazon Cognito. You can\n// use Amazon Cognito with the Amazon Web Services SDK for iOS Developer Guide\n// (http://aws.amazon.com/sdkforios/) and the Amazon Web Services SDK for Android\n// Developer Guide (http://aws.amazon.com/sdkforandroid/) to uniquely identify\n// a user. You can also supply the user with a consistent identity throughout\n// the lifetime of an application.\n//\n// To learn more about Amazon Cognito, see Amazon Cognito identity pools (https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)\n// in Amazon Cognito Developer Guide.\n//\n// Calling AssumeRoleWithWebIdentity does not require the use of Amazon Web\n// Services security credentials. Therefore, you can distribute an application\n// (for example, on mobile devices) that requests temporary security credentials\n// without including long-term Amazon Web Services credentials in the application.\n// You also don't need to deploy server-based proxy services that use long-term\n// Amazon Web Services credentials. Instead, the identity of the caller is validated\n// by using a token from the web identity provider. For a comparison of AssumeRoleWithWebIdentity\n// with the other API operations that produce temporary credentials, see Requesting\n// Temporary Security Credentials (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html)\n// and Comparing the Amazon Web Services STS API operations (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison)\n// in the IAM User Guide.\n//\n// The temporary security credentials returned by this API consist of an access\n// key ID, a secret access key, and a security token. Applications can use these\n// temporary security credentials to sign calls to Amazon Web Services service\n// API operations.\n//\n// # Session Duration\n//\n// By default, the temporary security credentials created by AssumeRoleWithWebIdentity\n// last for one hour. However, you can use the optional DurationSeconds parameter\n// to specify the duration of your session. You can provide a value from 900\n// seconds (15 minutes) up to the maximum session duration setting for the role.\n// This setting can have a value from 1 hour to 12 hours. To learn how to view\n// the maximum value for your role, see View the Maximum Session Duration Setting\n// for a Role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session)\n// in the IAM User Guide. The maximum session duration limit applies when you\n// use the AssumeRole* API operations or the assume-role* CLI commands. However\n// the limit does not apply when you use those operations to create a console\n// URL. For more information, see Using IAM Roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)\n// in the IAM User Guide.\n//\n// # Permissions\n//\n// The temporary security credentials created by AssumeRoleWithWebIdentity can\n// be used to make API calls to any Amazon Web Services service with the following\n// exception: you cannot call the STS GetFederationToken or GetSessionToken\n// API operations.\n//\n// (Optional) You can pass inline or managed session policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n// to this operation. You can pass a single JSON policy document to use as an\n// inline session policy. You can also specify up to 10 managed policy Amazon\n// Resource Names (ARNs) to use as managed session policies. The plaintext that\n// you use for both inline and managed session policies can't exceed 2,048 characters.\n// Passing policies to this operation returns new temporary credentials. The\n// resulting session's permissions are the intersection of the role's identity-based\n// policy and the session policies. You can use the role's temporary credentials\n// in subsequent Amazon Web Services API calls to access resources in the account\n// that owns the role. You cannot use session policies to grant more permissions\n// than those allowed by the identity-based policy of the role that is being\n// assumed. For more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n// in the IAM User Guide.\n//\n// # Tags\n//\n// (Optional) You can configure your IdP to pass attributes into your web identity\n// token as session tags. Each session tag consists of a key name and an associated\n// value. For more information about session tags, see Passing Session Tags\n// in STS (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)\n// in the IAM User Guide.\n//\n// You can pass up to 50 session tags. The plaintext session tag keys can’t\n// exceed 128 characters and the values can’t exceed 256 characters. For these\n// and additional limits, see IAM and STS Character Limits (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length)\n// in the IAM User Guide.\n//\n// An Amazon Web Services conversion compresses the passed inline session policy,\n// managed policy ARNs, and session tags into a packed binary format that has\n// a separate limit. Your request can fail for this limit even if your plaintext\n// meets the other requirements. The PackedPolicySize response element indicates\n// by percentage how close the policies and tags for your request are to the\n// upper size limit.\n//\n// You can pass a session tag with the same key as a tag that is attached to\n// the role. When you do, the session tag overrides the role tag with the same\n// key.\n//\n// An administrator must grant you the permissions necessary to pass session\n// tags. The administrator can also create granular permissions to allow you\n// to pass only specific session tags. For more information, see Tutorial: Using\n// Tags for Attribute-Based Access Control (https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)\n// in the IAM User Guide.\n//\n// You can set the session tags as transitive. Transitive tags persist during\n// role chaining. For more information, see Chaining Roles with Session Tags\n// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining)\n// in the IAM User Guide.\n//\n// # Identities\n//\n// Before your application can call AssumeRoleWithWebIdentity, you must have\n// an identity token from a supported identity provider and create a role that\n// the application can assume. The role that your application assumes must trust\n// the identity provider that is associated with the identity token. In other\n// words, the identity provider must be specified in the role's trust policy.\n//\n// Calling AssumeRoleWithWebIdentity can result in an entry in your CloudTrail\n// logs. The entry includes the Subject (http://openid.net/specs/openid-connect-core-1_0.html#Claims)\n// of the provided web identity token. We recommend that you avoid using any\n// personally identifiable information (PII) in this field. For example, you\n// could instead use a GUID or a pairwise identifier, as suggested in the OIDC\n// specification (http://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes).\n//\n// For more information about how to use web identity federation and the AssumeRoleWithWebIdentity\n// API, see the following resources:\n//\n//   - Using Web Identity Federation API Operations for Mobile Apps (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_manual.html)\n//     and Federation Through a Web-based Identity Provider (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity).\n//\n//   - Web Identity Federation Playground (https://aws.amazon.com/blogs/aws/the-aws-web-identity-federation-playground/).\n//     Walk through the process of authenticating through Login with Amazon,\n//     Facebook, or Google, getting temporary security credentials, and then\n//     using those credentials to make a request to Amazon Web Services.\n//\n//   - Amazon Web Services SDK for iOS Developer Guide (http://aws.amazon.com/sdkforios/)\n//     and Amazon Web Services SDK for Android Developer Guide (http://aws.amazon.com/sdkforandroid/).\n//     These toolkits contain sample apps that show how to invoke the identity\n//     providers. The toolkits then show how to use the information from these\n//     providers to get and use temporary security credentials.\n//\n//   - Web Identity Federation with Mobile Applications (http://aws.amazon.com/articles/web-identity-federation-with-mobile-applications).\n//     This article discusses web identity federation and shows an example of\n//     how to use web identity federation to get access to content in Amazon\n//     S3.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS Security Token Service's\n// API operation AssumeRoleWithWebIdentity for usage and error information.\n//\n// Returned Error Codes:\n//\n//   - ErrCodeMalformedPolicyDocumentException \"MalformedPolicyDocument\"\n//     The request was rejected because the policy document was malformed. The error\n//     message describes the specific error.\n//\n//   - ErrCodePackedPolicyTooLargeException \"PackedPolicyTooLarge\"\n//     The request was rejected because the total packed size of the session policies\n//     and session tags combined was too large. An Amazon Web Services conversion\n//     compresses the session policy document, session policy ARNs, and session\n//     tags into a packed binary format that has a separate limit. The error message\n//     indicates by percentage how close the policies and tags are to the upper\n//     size limit. For more information, see Passing Session Tags in STS (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)\n//     in the IAM User Guide.\n//\n//     You could receive this error even though you meet other defined session policy\n//     and session tag limits. For more information, see IAM and STS Entity Character\n//     Limits (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-limits-entity-length)\n//     in the IAM User Guide.\n//\n//   - ErrCodeIDPRejectedClaimException \"IDPRejectedClaim\"\n//     The identity provider (IdP) reported that authentication failed. This might\n//     be because the claim is invalid.\n//\n//     If this error is returned for the AssumeRoleWithWebIdentity operation, it\n//     can also mean that the claim has expired or has been explicitly revoked.\n//\n//   - ErrCodeIDPCommunicationErrorException \"IDPCommunicationError\"\n//     The request could not be fulfilled because the identity provider (IDP) that\n//     was asked to verify the incoming identity token could not be reached. This\n//     is often a transient error caused by network conditions. Retry the request\n//     a limited number of times so that you don't exceed the request rate. If the\n//     error persists, the identity provider might be down or not responding.\n//\n//   - ErrCodeInvalidIdentityTokenException \"InvalidIdentityToken\"\n//     The web identity token that was passed could not be validated by Amazon Web\n//     Services. Get a new identity token from the identity provider and then retry\n//     the request.\n//\n//   - ErrCodeExpiredTokenException \"ExpiredTokenException\"\n//     The web identity token that was passed is expired or is not valid. Get a\n//     new identity token from the identity provider and then retry the request.\n//\n//   - ErrCodeRegionDisabledException \"RegionDisabledException\"\n//     STS is not activated in the requested region for the account that is being\n//     asked to generate credentials. The account administrator must use the IAM\n//     console to activate STS in that region. For more information, see Activating\n//     and Deactivating Amazon Web Services STS in an Amazon Web Services Region\n//     (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)\n//     in the IAM User Guide.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithWebIdentity\nfunc (c *STS) AssumeRoleWithWebIdentity(input *AssumeRoleWithWebIdentityInput) (*AssumeRoleWithWebIdentityOutput, error) {\n\treq, out := c.AssumeRoleWithWebIdentityRequest(input)\n\treturn out, req.Send()\n}\n\n// AssumeRoleWithWebIdentityWithContext is the same as AssumeRoleWithWebIdentity with the addition of\n// the ability to pass a context and additional request options.\n//\n// See AssumeRoleWithWebIdentity for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *STS) AssumeRoleWithWebIdentityWithContext(ctx aws.Context, input *AssumeRoleWithWebIdentityInput, opts ...request.Option) (*AssumeRoleWithWebIdentityOutput, error) {\n\treq, out := c.AssumeRoleWithWebIdentityRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opDecodeAuthorizationMessage = \"DecodeAuthorizationMessage\"\n\n// DecodeAuthorizationMessageRequest generates a \"aws/request.Request\" representing the\n// client's request for the DecodeAuthorizationMessage operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See DecodeAuthorizationMessage for more information on using the DecodeAuthorizationMessage\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the DecodeAuthorizationMessageRequest method.\n//\treq, resp := client.DecodeAuthorizationMessageRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/DecodeAuthorizationMessage\nfunc (c *STS) DecodeAuthorizationMessageRequest(input *DecodeAuthorizationMessageInput) (req *request.Request, output *DecodeAuthorizationMessageOutput) {\n\top := &request.Operation{\n\t\tName:       opDecodeAuthorizationMessage,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &DecodeAuthorizationMessageInput{}\n\t}\n\n\toutput = &DecodeAuthorizationMessageOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// DecodeAuthorizationMessage API operation for AWS Security Token Service.\n//\n// Decodes additional information about the authorization status of a request\n// from an encoded message returned in response to an Amazon Web Services request.\n//\n// For example, if a user is not authorized to perform an operation that he\n// or she has requested, the request returns a Client.UnauthorizedOperation\n// response (an HTTP 403 response). Some Amazon Web Services operations additionally\n// return an encoded message that can provide details about this authorization\n// failure.\n//\n// Only certain Amazon Web Services operations return an encoded authorization\n// message. The documentation for an individual operation indicates whether\n// that operation returns an encoded message in addition to returning an HTTP\n// code.\n//\n// The message is encoded because the details of the authorization status can\n// contain privileged information that the user who requested the operation\n// should not see. To decode an authorization status message, a user must be\n// granted permissions through an IAM policy (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)\n// to request the DecodeAuthorizationMessage (sts:DecodeAuthorizationMessage)\n// action.\n//\n// The decoded message includes the following type of information:\n//\n//   - Whether the request was denied due to an explicit deny or due to the\n//     absence of an explicit allow. For more information, see Determining Whether\n//     a Request is Allowed or Denied (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow)\n//     in the IAM User Guide.\n//\n//   - The principal who made the request.\n//\n//   - The requested action.\n//\n//   - The requested resource.\n//\n//   - The values of condition keys in the context of the user's request.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS Security Token Service's\n// API operation DecodeAuthorizationMessage for usage and error information.\n//\n// Returned Error Codes:\n//   - ErrCodeInvalidAuthorizationMessageException \"InvalidAuthorizationMessageException\"\n//     The error returned if the message passed to DecodeAuthorizationMessage was\n//     invalid. This can happen if the token contains invalid characters, such as\n//     linebreaks.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/DecodeAuthorizationMessage\nfunc (c *STS) DecodeAuthorizationMessage(input *DecodeAuthorizationMessageInput) (*DecodeAuthorizationMessageOutput, error) {\n\treq, out := c.DecodeAuthorizationMessageRequest(input)\n\treturn out, req.Send()\n}\n\n// DecodeAuthorizationMessageWithContext is the same as DecodeAuthorizationMessage with the addition of\n// the ability to pass a context and additional request options.\n//\n// See DecodeAuthorizationMessage for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *STS) DecodeAuthorizationMessageWithContext(ctx aws.Context, input *DecodeAuthorizationMessageInput, opts ...request.Option) (*DecodeAuthorizationMessageOutput, error) {\n\treq, out := c.DecodeAuthorizationMessageRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetAccessKeyInfo = \"GetAccessKeyInfo\"\n\n// GetAccessKeyInfoRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetAccessKeyInfo operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetAccessKeyInfo for more information on using the GetAccessKeyInfo\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetAccessKeyInfoRequest method.\n//\treq, resp := client.GetAccessKeyInfoRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetAccessKeyInfo\nfunc (c *STS) GetAccessKeyInfoRequest(input *GetAccessKeyInfoInput) (req *request.Request, output *GetAccessKeyInfoOutput) {\n\top := &request.Operation{\n\t\tName:       opGetAccessKeyInfo,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetAccessKeyInfoInput{}\n\t}\n\n\toutput = &GetAccessKeyInfoOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetAccessKeyInfo API operation for AWS Security Token Service.\n//\n// Returns the account identifier for the specified access key ID.\n//\n// Access keys consist of two parts: an access key ID (for example, AKIAIOSFODNN7EXAMPLE)\n// and a secret access key (for example, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY).\n// For more information about access keys, see Managing Access Keys for IAM\n// Users (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)\n// in the IAM User Guide.\n//\n// When you pass an access key ID to this operation, it returns the ID of the\n// Amazon Web Services account to which the keys belong. Access key IDs beginning\n// with AKIA are long-term credentials for an IAM user or the Amazon Web Services\n// account root user. Access key IDs beginning with ASIA are temporary credentials\n// that are created using STS operations. If the account in the response belongs\n// to you, you can sign in as the root user and review your root user access\n// keys. Then, you can pull a credentials report (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html)\n// to learn which IAM user owns the keys. To learn who requested the temporary\n// credentials for an ASIA access key, view the STS events in your CloudTrail\n// logs (https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html)\n// in the IAM User Guide.\n//\n// This operation does not indicate the state of the access key. The key might\n// be active, inactive, or deleted. Active keys might not have permissions to\n// perform an operation. Providing a deleted access key might return an error\n// that the key doesn't exist.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS Security Token Service's\n// API operation GetAccessKeyInfo for usage and error information.\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetAccessKeyInfo\nfunc (c *STS) GetAccessKeyInfo(input *GetAccessKeyInfoInput) (*GetAccessKeyInfoOutput, error) {\n\treq, out := c.GetAccessKeyInfoRequest(input)\n\treturn out, req.Send()\n}\n\n// GetAccessKeyInfoWithContext is the same as GetAccessKeyInfo with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetAccessKeyInfo for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *STS) GetAccessKeyInfoWithContext(ctx aws.Context, input *GetAccessKeyInfoInput, opts ...request.Option) (*GetAccessKeyInfoOutput, error) {\n\treq, out := c.GetAccessKeyInfoRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetCallerIdentity = \"GetCallerIdentity\"\n\n// GetCallerIdentityRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetCallerIdentity operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetCallerIdentity for more information on using the GetCallerIdentity\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetCallerIdentityRequest method.\n//\treq, resp := client.GetCallerIdentityRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetCallerIdentity\nfunc (c *STS) GetCallerIdentityRequest(input *GetCallerIdentityInput) (req *request.Request, output *GetCallerIdentityOutput) {\n\top := &request.Operation{\n\t\tName:       opGetCallerIdentity,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetCallerIdentityInput{}\n\t}\n\n\toutput = &GetCallerIdentityOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetCallerIdentity API operation for AWS Security Token Service.\n//\n// Returns details about the IAM user or role whose credentials are used to\n// call the operation.\n//\n// No permissions are required to perform this operation. If an administrator\n// attaches a policy to your identity that explicitly denies access to the sts:GetCallerIdentity\n// action, you can still perform this operation. Permissions are not required\n// because the same information is returned when access is denied. To view an\n// example response, see I Am Not Authorized to Perform: iam:DeleteVirtualMFADevice\n// (https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_access-denied-delete-mfa)\n// in the IAM User Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS Security Token Service's\n// API operation GetCallerIdentity for usage and error information.\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetCallerIdentity\nfunc (c *STS) GetCallerIdentity(input *GetCallerIdentityInput) (*GetCallerIdentityOutput, error) {\n\treq, out := c.GetCallerIdentityRequest(input)\n\treturn out, req.Send()\n}\n\n// GetCallerIdentityWithContext is the same as GetCallerIdentity with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetCallerIdentity for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *STS) GetCallerIdentityWithContext(ctx aws.Context, input *GetCallerIdentityInput, opts ...request.Option) (*GetCallerIdentityOutput, error) {\n\treq, out := c.GetCallerIdentityRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetFederationToken = \"GetFederationToken\"\n\n// GetFederationTokenRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetFederationToken operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetFederationToken for more information on using the GetFederationToken\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetFederationTokenRequest method.\n//\treq, resp := client.GetFederationTokenRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetFederationToken\nfunc (c *STS) GetFederationTokenRequest(input *GetFederationTokenInput) (req *request.Request, output *GetFederationTokenOutput) {\n\top := &request.Operation{\n\t\tName:       opGetFederationToken,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetFederationTokenInput{}\n\t}\n\n\toutput = &GetFederationTokenOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetFederationToken API operation for AWS Security Token Service.\n//\n// Returns a set of temporary security credentials (consisting of an access\n// key ID, a secret access key, and a security token) for a user. A typical\n// use is in a proxy application that gets temporary security credentials on\n// behalf of distributed applications inside a corporate network.\n//\n// You must call the GetFederationToken operation using the long-term security\n// credentials of an IAM user. As a result, this call is appropriate in contexts\n// where those credentials can be safeguarded, usually in a server-based application.\n// For a comparison of GetFederationToken with the other API operations that\n// produce temporary credentials, see Requesting Temporary Security Credentials\n// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html)\n// and Comparing the Amazon Web Services STS API operations (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison)\n// in the IAM User Guide.\n//\n// Although it is possible to call GetFederationToken using the security credentials\n// of an Amazon Web Services account root user rather than an IAM user that\n// you create for the purpose of a proxy application, we do not recommend it.\n// For more information, see Safeguard your root user credentials and don't\n// use them for everyday tasks (https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#lock-away-credentials)\n// in the IAM User Guide.\n//\n// You can create a mobile-based or browser-based app that can authenticate\n// users using a web identity provider like Login with Amazon, Facebook, Google,\n// or an OpenID Connect-compatible identity provider. In this case, we recommend\n// that you use Amazon Cognito (http://aws.amazon.com/cognito/) or AssumeRoleWithWebIdentity.\n// For more information, see Federation Through a Web-based Identity Provider\n// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity)\n// in the IAM User Guide.\n//\n// # Session duration\n//\n// The temporary credentials are valid for the specified duration, from 900\n// seconds (15 minutes) up to a maximum of 129,600 seconds (36 hours). The default\n// session duration is 43,200 seconds (12 hours). Temporary credentials obtained\n// by using the root user credentials have a maximum duration of 3,600 seconds\n// (1 hour).\n//\n// # Permissions\n//\n// You can use the temporary credentials created by GetFederationToken in any\n// Amazon Web Services service with the following exceptions:\n//\n//   - You cannot call any IAM operations using the CLI or the Amazon Web Services\n//     API. This limitation does not apply to console sessions.\n//\n//   - You cannot call any STS operations except GetCallerIdentity.\n//\n// You can use temporary credentials for single sign-on (SSO) to the console.\n//\n// You must pass an inline or managed session policy (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n// to this operation. You can pass a single JSON policy document to use as an\n// inline session policy. You can also specify up to 10 managed policy Amazon\n// Resource Names (ARNs) to use as managed session policies. The plaintext that\n// you use for both inline and managed session policies can't exceed 2,048 characters.\n//\n// Though the session policy parameters are optional, if you do not pass a policy,\n// then the resulting federated user session has no permissions. When you pass\n// session policies, the session permissions are the intersection of the IAM\n// user policies and the session policies that you pass. This gives you a way\n// to further restrict the permissions for a federated user. You cannot use\n// session policies to grant more permissions than those that are defined in\n// the permissions policy of the IAM user. For more information, see Session\n// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n// in the IAM User Guide. For information about using GetFederationToken to\n// create temporary security credentials, see GetFederationToken—Federation\n// Through a Custom Identity Broker (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getfederationtoken).\n//\n// You can use the credentials to access a resource that has a resource-based\n// policy. If that policy specifically references the federated user session\n// in the Principal element of the policy, the session has the permissions allowed\n// by the policy. These permissions are granted in addition to the permissions\n// granted by the session policies.\n//\n// # Tags\n//\n// (Optional) You can pass tag key-value pairs to your session. These are called\n// session tags. For more information about session tags, see Passing Session\n// Tags in STS (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)\n// in the IAM User Guide.\n//\n// You can create a mobile-based or browser-based app that can authenticate\n// users using a web identity provider like Login with Amazon, Facebook, Google,\n// or an OpenID Connect-compatible identity provider. In this case, we recommend\n// that you use Amazon Cognito (http://aws.amazon.com/cognito/) or AssumeRoleWithWebIdentity.\n// For more information, see Federation Through a Web-based Identity Provider\n// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity)\n// in the IAM User Guide.\n//\n// An administrator must grant you the permissions necessary to pass session\n// tags. The administrator can also create granular permissions to allow you\n// to pass only specific session tags. For more information, see Tutorial: Using\n// Tags for Attribute-Based Access Control (https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)\n// in the IAM User Guide.\n//\n// Tag key–value pairs are not case sensitive, but case is preserved. This\n// means that you cannot have separate Department and department tag keys. Assume\n// that the user that you are federating has the Department=Marketing tag and\n// you pass the department=engineering session tag. Department and department\n// are not saved as separate tags, and the session tag passed in the request\n// takes precedence over the user tag.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS Security Token Service's\n// API operation GetFederationToken for usage and error information.\n//\n// Returned Error Codes:\n//\n//   - ErrCodeMalformedPolicyDocumentException \"MalformedPolicyDocument\"\n//     The request was rejected because the policy document was malformed. The error\n//     message describes the specific error.\n//\n//   - ErrCodePackedPolicyTooLargeException \"PackedPolicyTooLarge\"\n//     The request was rejected because the total packed size of the session policies\n//     and session tags combined was too large. An Amazon Web Services conversion\n//     compresses the session policy document, session policy ARNs, and session\n//     tags into a packed binary format that has a separate limit. The error message\n//     indicates by percentage how close the policies and tags are to the upper\n//     size limit. For more information, see Passing Session Tags in STS (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)\n//     in the IAM User Guide.\n//\n//     You could receive this error even though you meet other defined session policy\n//     and session tag limits. For more information, see IAM and STS Entity Character\n//     Limits (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-limits-entity-length)\n//     in the IAM User Guide.\n//\n//   - ErrCodeRegionDisabledException \"RegionDisabledException\"\n//     STS is not activated in the requested region for the account that is being\n//     asked to generate credentials. The account administrator must use the IAM\n//     console to activate STS in that region. For more information, see Activating\n//     and Deactivating Amazon Web Services STS in an Amazon Web Services Region\n//     (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)\n//     in the IAM User Guide.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetFederationToken\nfunc (c *STS) GetFederationToken(input *GetFederationTokenInput) (*GetFederationTokenOutput, error) {\n\treq, out := c.GetFederationTokenRequest(input)\n\treturn out, req.Send()\n}\n\n// GetFederationTokenWithContext is the same as GetFederationToken with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetFederationToken for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *STS) GetFederationTokenWithContext(ctx aws.Context, input *GetFederationTokenInput, opts ...request.Option) (*GetFederationTokenOutput, error) {\n\treq, out := c.GetFederationTokenRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\nconst opGetSessionToken = \"GetSessionToken\"\n\n// GetSessionTokenRequest generates a \"aws/request.Request\" representing the\n// client's request for the GetSessionToken operation. The \"output\" return\n// value will be populated with the request's response once the request completes\n// successfully.\n//\n// Use \"Send\" method on the returned Request to send the API call to the service.\n// the \"output\" return value is not valid until after Send returns without error.\n//\n// See GetSessionToken for more information on using the GetSessionToken\n// API call, and error handling.\n//\n// This method is useful when you want to inject custom logic or configuration\n// into the SDK's request lifecycle. Such as custom headers, or retry logic.\n//\n//\t// Example sending a request using the GetSessionTokenRequest method.\n//\treq, resp := client.GetSessionTokenRequest(params)\n//\n//\terr := req.Send()\n//\tif err == nil { // resp is now filled\n//\t    fmt.Println(resp)\n//\t}\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetSessionToken\nfunc (c *STS) GetSessionTokenRequest(input *GetSessionTokenInput) (req *request.Request, output *GetSessionTokenOutput) {\n\top := &request.Operation{\n\t\tName:       opGetSessionToken,\n\t\tHTTPMethod: \"POST\",\n\t\tHTTPPath:   \"/\",\n\t}\n\n\tif input == nil {\n\t\tinput = &GetSessionTokenInput{}\n\t}\n\n\toutput = &GetSessionTokenOutput{}\n\treq = c.newRequest(op, input, output)\n\treturn\n}\n\n// GetSessionToken API operation for AWS Security Token Service.\n//\n// Returns a set of temporary credentials for an Amazon Web Services account\n// or IAM user. The credentials consist of an access key ID, a secret access\n// key, and a security token. Typically, you use GetSessionToken if you want\n// to use MFA to protect programmatic calls to specific Amazon Web Services\n// API operations like Amazon EC2 StopInstances.\n//\n// MFA-enabled IAM users must call GetSessionToken and submit an MFA code that\n// is associated with their MFA device. Using the temporary security credentials\n// that the call returns, IAM users can then make programmatic calls to API\n// operations that require MFA authentication. An incorrect MFA code causes\n// the API to return an access denied error. For a comparison of GetSessionToken\n// with the other API operations that produce temporary credentials, see Requesting\n// Temporary Security Credentials (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html)\n// and Comparing the Amazon Web Services STS API operations (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison)\n// in the IAM User Guide.\n//\n// No permissions are required for users to perform this operation. The purpose\n// of the sts:GetSessionToken operation is to authenticate the user using MFA.\n// You cannot use policies to control authentication operations. For more information,\n// see Permissions for GetSessionToken (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_getsessiontoken.html)\n// in the IAM User Guide.\n//\n// # Session Duration\n//\n// The GetSessionToken operation must be called by using the long-term Amazon\n// Web Services security credentials of an IAM user. Credentials that are created\n// by IAM users are valid for the duration that you specify. This duration can\n// range from 900 seconds (15 minutes) up to a maximum of 129,600 seconds (36\n// hours), with a default of 43,200 seconds (12 hours). Credentials based on\n// account credentials can range from 900 seconds (15 minutes) up to 3,600 seconds\n// (1 hour), with a default of 1 hour.\n//\n// # Permissions\n//\n// The temporary security credentials created by GetSessionToken can be used\n// to make API calls to any Amazon Web Services service with the following exceptions:\n//\n//   - You cannot call any IAM API operations unless MFA authentication information\n//     is included in the request.\n//\n//   - You cannot call any STS API except AssumeRole or GetCallerIdentity.\n//\n// The credentials that GetSessionToken returns are based on permissions associated\n// with the IAM user whose credentials were used to call the operation. The\n// temporary credentials have the same permissions as the IAM user.\n//\n// Although it is possible to call GetSessionToken using the security credentials\n// of an Amazon Web Services account root user rather than an IAM user, we do\n// not recommend it. If GetSessionToken is called using root user credentials,\n// the temporary credentials have root user permissions. For more information,\n// see Safeguard your root user credentials and don't use them for everyday\n// tasks (https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#lock-away-credentials)\n// in the IAM User Guide\n//\n// For more information about using GetSessionToken to create temporary credentials,\n// see Temporary Credentials for Users in Untrusted Environments (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken)\n// in the IAM User Guide.\n//\n// Returns awserr.Error for service API and SDK errors. Use runtime type assertions\n// with awserr.Error's Code and Message methods to get detailed information about\n// the error.\n//\n// See the AWS API reference guide for AWS Security Token Service's\n// API operation GetSessionToken for usage and error information.\n//\n// Returned Error Codes:\n//   - ErrCodeRegionDisabledException \"RegionDisabledException\"\n//     STS is not activated in the requested region for the account that is being\n//     asked to generate credentials. The account administrator must use the IAM\n//     console to activate STS in that region. For more information, see Activating\n//     and Deactivating Amazon Web Services STS in an Amazon Web Services Region\n//     (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)\n//     in the IAM User Guide.\n//\n// See also, https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetSessionToken\nfunc (c *STS) GetSessionToken(input *GetSessionTokenInput) (*GetSessionTokenOutput, error) {\n\treq, out := c.GetSessionTokenRequest(input)\n\treturn out, req.Send()\n}\n\n// GetSessionTokenWithContext is the same as GetSessionToken with the addition of\n// the ability to pass a context and additional request options.\n//\n// See GetSessionToken for details on how to use this API operation.\n//\n// The context must be non-nil and will be used for request cancellation. If\n// the context is nil a panic will occur. In the future the SDK may create\n// sub-contexts for http.Requests. See https://golang.org/pkg/context/\n// for more information on using Contexts.\nfunc (c *STS) GetSessionTokenWithContext(ctx aws.Context, input *GetSessionTokenInput, opts ...request.Option) (*GetSessionTokenOutput, error) {\n\treq, out := c.GetSessionTokenRequest(input)\n\treq.SetContext(ctx)\n\treq.ApplyOptions(opts...)\n\treturn out, req.Send()\n}\n\ntype AssumeRoleInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The duration, in seconds, of the role session. The value specified can range\n\t// from 900 seconds (15 minutes) up to the maximum session duration set for\n\t// the role. The maximum session duration setting can have a value from 1 hour\n\t// to 12 hours. If you specify a value higher than this setting or the administrator\n\t// setting (whichever is lower), the operation fails. For example, if you specify\n\t// a session duration of 12 hours, but your administrator set the maximum session\n\t// duration to 6 hours, your operation fails.\n\t//\n\t// Role chaining limits your Amazon Web Services CLI or Amazon Web Services\n\t// API role session to a maximum of one hour. When you use the AssumeRole API\n\t// operation to assume a role, you can specify the duration of your role session\n\t// with the DurationSeconds parameter. You can specify a parameter value of\n\t// up to 43200 seconds (12 hours), depending on the maximum session duration\n\t// setting for your role. However, if you assume a role using role chaining\n\t// and provide a DurationSeconds parameter value greater than one hour, the\n\t// operation fails. To learn how to view the maximum value for your role, see\n\t// View the Maximum Session Duration Setting for a Role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session)\n\t// in the IAM User Guide.\n\t//\n\t// By default, the value is set to 3600 seconds.\n\t//\n\t// The DurationSeconds parameter is separate from the duration of a console\n\t// session that you might request using the returned credentials. The request\n\t// to the federation endpoint for a console sign-in token takes a SessionDuration\n\t// parameter that specifies the maximum length of the console session. For more\n\t// information, see Creating a URL that Enables Federated Users to Access the\n\t// Amazon Web Services Management Console (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html)\n\t// in the IAM User Guide.\n\tDurationSeconds *int64 `min:\"900\" type:\"integer\"`\n\n\t// A unique identifier that might be required when you assume a role in another\n\t// account. If the administrator of the account to which the role belongs provided\n\t// you with an external ID, then provide that value in the ExternalId parameter.\n\t// This value can be any string, such as a passphrase or account number. A cross-account\n\t// role is usually set up to trust everyone in an account. Therefore, the administrator\n\t// of the trusting account might send an external ID to the administrator of\n\t// the trusted account. That way, only someone with the ID can assume the role,\n\t// rather than everyone in the account. For more information about the external\n\t// ID, see How to Use an External ID When Granting Access to Your Amazon Web\n\t// Services Resources to a Third Party (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html)\n\t// in the IAM User Guide.\n\t//\n\t// The regex used to validate this parameter is a string of characters consisting\n\t// of upper- and lower-case alphanumeric characters with no spaces. You can\n\t// also include underscores or any of the following characters: =,.@:/-\n\tExternalId *string `min:\"2\" type:\"string\"`\n\n\t// An IAM policy in JSON format that you want to use as an inline session policy.\n\t//\n\t// This parameter is optional. Passing policies to this operation returns new\n\t// temporary credentials. The resulting session's permissions are the intersection\n\t// of the role's identity-based policy and the session policies. You can use\n\t// the role's temporary credentials in subsequent Amazon Web Services API calls\n\t// to access resources in the account that owns the role. You cannot use session\n\t// policies to grant more permissions than those allowed by the identity-based\n\t// policy of the role that is being assumed. For more information, see Session\n\t// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n\t// in the IAM User Guide.\n\t//\n\t// The plaintext that you use for both inline and managed session policies can't\n\t// exceed 2,048 characters. The JSON policy characters can be any ASCII character\n\t// from the space character to the end of the valid character list (\\u0020 through\n\t// \\u00FF). It can also include the tab (\\u0009), linefeed (\\u000A), and carriage\n\t// return (\\u000D) characters.\n\t//\n\t// An Amazon Web Services conversion compresses the passed inline session policy,\n\t// managed policy ARNs, and session tags into a packed binary format that has\n\t// a separate limit. Your request can fail for this limit even if your plaintext\n\t// meets the other requirements. The PackedPolicySize response element indicates\n\t// by percentage how close the policies and tags for your request are to the\n\t// upper size limit.\n\tPolicy *string `min:\"1\" type:\"string\"`\n\n\t// The Amazon Resource Names (ARNs) of the IAM managed policies that you want\n\t// to use as managed session policies. The policies must exist in the same account\n\t// as the role.\n\t//\n\t// This parameter is optional. You can provide up to 10 managed policy ARNs.\n\t// However, the plaintext that you use for both inline and managed session policies\n\t// can't exceed 2,048 characters. For more information about ARNs, see Amazon\n\t// Resource Names (ARNs) and Amazon Web Services Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)\n\t// in the Amazon Web Services General Reference.\n\t//\n\t// An Amazon Web Services conversion compresses the passed inline session policy,\n\t// managed policy ARNs, and session tags into a packed binary format that has\n\t// a separate limit. Your request can fail for this limit even if your plaintext\n\t// meets the other requirements. The PackedPolicySize response element indicates\n\t// by percentage how close the policies and tags for your request are to the\n\t// upper size limit.\n\t//\n\t// Passing policies to this operation returns new temporary credentials. The\n\t// resulting session's permissions are the intersection of the role's identity-based\n\t// policy and the session policies. You can use the role's temporary credentials\n\t// in subsequent Amazon Web Services API calls to access resources in the account\n\t// that owns the role. You cannot use session policies to grant more permissions\n\t// than those allowed by the identity-based policy of the role that is being\n\t// assumed. For more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n\t// in the IAM User Guide.\n\tPolicyArns []*PolicyDescriptorType `type:\"list\"`\n\n\t// A list of previously acquired trusted context assertions in the format of\n\t// a JSON array. The trusted context assertion is signed and encrypted by Amazon\n\t// Web Services STS.\n\t//\n\t// The following is an example of a ProvidedContext value that includes a single\n\t// trusted context assertion and the ARN of the context provider from which\n\t// the trusted context assertion was generated.\n\t//\n\t// [{\"ProviderArn\":\"arn:aws:iam::aws:contextProvider/IdentityCenter\",\"ContextAssertion\":\"trusted-context-assertion\"}]\n\tProvidedContexts []*ProvidedContext `type:\"list\"`\n\n\t// The Amazon Resource Name (ARN) of the role to assume.\n\t//\n\t// RoleArn is a required field\n\tRoleArn *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// An identifier for the assumed role session.\n\t//\n\t// Use the role session name to uniquely identify a session when the same role\n\t// is assumed by different principals or for different reasons. In cross-account\n\t// scenarios, the role session name is visible to, and can be logged by the\n\t// account that owns the role. The role session name is also used in the ARN\n\t// of the assumed role principal. This means that subsequent cross-account API\n\t// requests that use the temporary security credentials will expose the role\n\t// session name to the external account in their CloudTrail logs.\n\t//\n\t// The regex used to validate this parameter is a string of characters consisting\n\t// of upper- and lower-case alphanumeric characters with no spaces. You can\n\t// also include underscores or any of the following characters: =,.@-\n\t//\n\t// RoleSessionName is a required field\n\tRoleSessionName *string `min:\"2\" type:\"string\" required:\"true\"`\n\n\t// The identification number of the MFA device that is associated with the user\n\t// who is making the AssumeRole call. Specify this value if the trust policy\n\t// of the role being assumed includes a condition that requires MFA authentication.\n\t// The value is either the serial number for a hardware device (such as GAHT12345678)\n\t// or an Amazon Resource Name (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user).\n\t//\n\t// The regex used to validate this parameter is a string of characters consisting\n\t// of upper- and lower-case alphanumeric characters with no spaces. You can\n\t// also include underscores or any of the following characters: =,.@-\n\tSerialNumber *string `min:\"9\" type:\"string\"`\n\n\t// The source identity specified by the principal that is calling the AssumeRole\n\t// operation.\n\t//\n\t// You can require users to specify a source identity when they assume a role.\n\t// You do this by using the sts:SourceIdentity condition key in a role trust\n\t// policy. You can use source identity information in CloudTrail logs to determine\n\t// who took actions with a role. You can use the aws:SourceIdentity condition\n\t// key to further control access to Amazon Web Services resources based on the\n\t// value of source identity. For more information about using source identity,\n\t// see Monitor and control actions taken with assumed roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html)\n\t// in the IAM User Guide.\n\t//\n\t// The regex used to validate this parameter is a string of characters consisting\n\t// of upper- and lower-case alphanumeric characters with no spaces. You can\n\t// also include underscores or any of the following characters: =,.@-. You cannot\n\t// use a value that begins with the text aws:. This prefix is reserved for Amazon\n\t// Web Services internal use.\n\tSourceIdentity *string `min:\"2\" type:\"string\"`\n\n\t// A list of session tags that you want to pass. Each session tag consists of\n\t// a key name and an associated value. For more information about session tags,\n\t// see Tagging Amazon Web Services STS Sessions (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)\n\t// in the IAM User Guide.\n\t//\n\t// This parameter is optional. You can pass up to 50 session tags. The plaintext\n\t// session tag keys can’t exceed 128 characters, and the values can’t exceed\n\t// 256 characters. For these and additional limits, see IAM and STS Character\n\t// Limits (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length)\n\t// in the IAM User Guide.\n\t//\n\t// An Amazon Web Services conversion compresses the passed inline session policy,\n\t// managed policy ARNs, and session tags into a packed binary format that has\n\t// a separate limit. Your request can fail for this limit even if your plaintext\n\t// meets the other requirements. The PackedPolicySize response element indicates\n\t// by percentage how close the policies and tags for your request are to the\n\t// upper size limit.\n\t//\n\t// You can pass a session tag with the same key as a tag that is already attached\n\t// to the role. When you do, session tags override a role tag with the same\n\t// key.\n\t//\n\t// Tag key–value pairs are not case sensitive, but case is preserved. This\n\t// means that you cannot have separate Department and department tag keys. Assume\n\t// that the role has the Department=Marketing tag and you pass the department=engineering\n\t// session tag. Department and department are not saved as separate tags, and\n\t// the session tag passed in the request takes precedence over the role tag.\n\t//\n\t// Additionally, if you used temporary credentials to perform this operation,\n\t// the new session inherits any transitive session tags from the calling session.\n\t// If you pass a session tag with the same key as an inherited tag, the operation\n\t// fails. To view the inherited tags for a session, see the CloudTrail logs.\n\t// For more information, see Viewing Session Tags in CloudTrail (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_ctlogs)\n\t// in the IAM User Guide.\n\tTags []*Tag `type:\"list\"`\n\n\t// The value provided by the MFA device, if the trust policy of the role being\n\t// assumed requires MFA. (In other words, if the policy includes a condition\n\t// that tests for MFA). If the role being assumed requires MFA and if the TokenCode\n\t// value is missing or expired, the AssumeRole call returns an \"access denied\"\n\t// error.\n\t//\n\t// The format for this parameter, as described by its regex pattern, is a sequence\n\t// of six numeric digits.\n\tTokenCode *string `min:\"6\" type:\"string\"`\n\n\t// A list of keys for session tags that you want to set as transitive. If you\n\t// set a tag key as transitive, the corresponding key and value passes to subsequent\n\t// sessions in a role chain. For more information, see Chaining Roles with Session\n\t// Tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining)\n\t// in the IAM User Guide.\n\t//\n\t// This parameter is optional. When you set session tags as transitive, the\n\t// session policy and session tags packed binary limit is not affected.\n\t//\n\t// If you choose not to specify a transitive tag key, then no tags are passed\n\t// from this session to any subsequent sessions.\n\tTransitiveTagKeys []*string `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumeRoleInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumeRoleInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AssumeRoleInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AssumeRoleInput\"}\n\tif s.DurationSeconds != nil && *s.DurationSeconds < 900 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"DurationSeconds\", 900))\n\t}\n\tif s.ExternalId != nil && len(*s.ExternalId) < 2 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ExternalId\", 2))\n\t}\n\tif s.Policy != nil && len(*s.Policy) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Policy\", 1))\n\t}\n\tif s.RoleArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RoleArn\"))\n\t}\n\tif s.RoleArn != nil && len(*s.RoleArn) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"RoleArn\", 20))\n\t}\n\tif s.RoleSessionName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RoleSessionName\"))\n\t}\n\tif s.RoleSessionName != nil && len(*s.RoleSessionName) < 2 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"RoleSessionName\", 2))\n\t}\n\tif s.SerialNumber != nil && len(*s.SerialNumber) < 9 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SerialNumber\", 9))\n\t}\n\tif s.SourceIdentity != nil && len(*s.SourceIdentity) < 2 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SourceIdentity\", 2))\n\t}\n\tif s.TokenCode != nil && len(*s.TokenCode) < 6 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TokenCode\", 6))\n\t}\n\tif s.PolicyArns != nil {\n\t\tfor i, v := range s.PolicyArns {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"PolicyArns\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.ProvidedContexts != nil {\n\t\tfor i, v := range s.ProvidedContexts {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"ProvidedContexts\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDurationSeconds sets the DurationSeconds field's value.\nfunc (s *AssumeRoleInput) SetDurationSeconds(v int64) *AssumeRoleInput {\n\ts.DurationSeconds = &v\n\treturn s\n}\n\n// SetExternalId sets the ExternalId field's value.\nfunc (s *AssumeRoleInput) SetExternalId(v string) *AssumeRoleInput {\n\ts.ExternalId = &v\n\treturn s\n}\n\n// SetPolicy sets the Policy field's value.\nfunc (s *AssumeRoleInput) SetPolicy(v string) *AssumeRoleInput {\n\ts.Policy = &v\n\treturn s\n}\n\n// SetPolicyArns sets the PolicyArns field's value.\nfunc (s *AssumeRoleInput) SetPolicyArns(v []*PolicyDescriptorType) *AssumeRoleInput {\n\ts.PolicyArns = v\n\treturn s\n}\n\n// SetProvidedContexts sets the ProvidedContexts field's value.\nfunc (s *AssumeRoleInput) SetProvidedContexts(v []*ProvidedContext) *AssumeRoleInput {\n\ts.ProvidedContexts = v\n\treturn s\n}\n\n// SetRoleArn sets the RoleArn field's value.\nfunc (s *AssumeRoleInput) SetRoleArn(v string) *AssumeRoleInput {\n\ts.RoleArn = &v\n\treturn s\n}\n\n// SetRoleSessionName sets the RoleSessionName field's value.\nfunc (s *AssumeRoleInput) SetRoleSessionName(v string) *AssumeRoleInput {\n\ts.RoleSessionName = &v\n\treturn s\n}\n\n// SetSerialNumber sets the SerialNumber field's value.\nfunc (s *AssumeRoleInput) SetSerialNumber(v string) *AssumeRoleInput {\n\ts.SerialNumber = &v\n\treturn s\n}\n\n// SetSourceIdentity sets the SourceIdentity field's value.\nfunc (s *AssumeRoleInput) SetSourceIdentity(v string) *AssumeRoleInput {\n\ts.SourceIdentity = &v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *AssumeRoleInput) SetTags(v []*Tag) *AssumeRoleInput {\n\ts.Tags = v\n\treturn s\n}\n\n// SetTokenCode sets the TokenCode field's value.\nfunc (s *AssumeRoleInput) SetTokenCode(v string) *AssumeRoleInput {\n\ts.TokenCode = &v\n\treturn s\n}\n\n// SetTransitiveTagKeys sets the TransitiveTagKeys field's value.\nfunc (s *AssumeRoleInput) SetTransitiveTagKeys(v []*string) *AssumeRoleInput {\n\ts.TransitiveTagKeys = v\n\treturn s\n}\n\n// Contains the response to a successful AssumeRole request, including temporary\n// Amazon Web Services credentials that can be used to make Amazon Web Services\n// requests.\ntype AssumeRoleOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers\n\t// that you can use to refer to the resulting temporary security credentials.\n\t// For example, you can reference these credentials as a principal in a resource-based\n\t// policy by using the ARN or assumed role ID. The ARN and ID include the RoleSessionName\n\t// that you specified when you called AssumeRole.\n\tAssumedRoleUser *AssumedRoleUser `type:\"structure\"`\n\n\t// The temporary security credentials, which include an access key ID, a secret\n\t// access key, and a security (or session) token.\n\t//\n\t// The size of the security token that STS API operations return is not fixed.\n\t// We strongly recommend that you make no assumptions about the maximum size.\n\tCredentials *Credentials `type:\"structure\"`\n\n\t// A percentage value that indicates the packed size of the session policies\n\t// and session tags combined passed in the request. The request fails if the\n\t// packed size is greater than 100 percent, which means the policies and tags\n\t// exceeded the allowed space.\n\tPackedPolicySize *int64 `type:\"integer\"`\n\n\t// The source identity specified by the principal that is calling the AssumeRole\n\t// operation.\n\t//\n\t// You can require users to specify a source identity when they assume a role.\n\t// You do this by using the sts:SourceIdentity condition key in a role trust\n\t// policy. You can use source identity information in CloudTrail logs to determine\n\t// who took actions with a role. You can use the aws:SourceIdentity condition\n\t// key to further control access to Amazon Web Services resources based on the\n\t// value of source identity. For more information about using source identity,\n\t// see Monitor and control actions taken with assumed roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html)\n\t// in the IAM User Guide.\n\t//\n\t// The regex used to validate this parameter is a string of characters consisting\n\t// of upper- and lower-case alphanumeric characters with no spaces. You can\n\t// also include underscores or any of the following characters: =,.@-\n\tSourceIdentity *string `min:\"2\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumeRoleOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumeRoleOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssumedRoleUser sets the AssumedRoleUser field's value.\nfunc (s *AssumeRoleOutput) SetAssumedRoleUser(v *AssumedRoleUser) *AssumeRoleOutput {\n\ts.AssumedRoleUser = v\n\treturn s\n}\n\n// SetCredentials sets the Credentials field's value.\nfunc (s *AssumeRoleOutput) SetCredentials(v *Credentials) *AssumeRoleOutput {\n\ts.Credentials = v\n\treturn s\n}\n\n// SetPackedPolicySize sets the PackedPolicySize field's value.\nfunc (s *AssumeRoleOutput) SetPackedPolicySize(v int64) *AssumeRoleOutput {\n\ts.PackedPolicySize = &v\n\treturn s\n}\n\n// SetSourceIdentity sets the SourceIdentity field's value.\nfunc (s *AssumeRoleOutput) SetSourceIdentity(v string) *AssumeRoleOutput {\n\ts.SourceIdentity = &v\n\treturn s\n}\n\ntype AssumeRoleWithSAMLInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The duration, in seconds, of the role session. Your role session lasts for\n\t// the duration that you specify for the DurationSeconds parameter, or until\n\t// the time specified in the SAML authentication response's SessionNotOnOrAfter\n\t// value, whichever is shorter. You can provide a DurationSeconds value from\n\t// 900 seconds (15 minutes) up to the maximum session duration setting for the\n\t// role. This setting can have a value from 1 hour to 12 hours. If you specify\n\t// a value higher than this setting, the operation fails. For example, if you\n\t// specify a session duration of 12 hours, but your administrator set the maximum\n\t// session duration to 6 hours, your operation fails. To learn how to view the\n\t// maximum value for your role, see View the Maximum Session Duration Setting\n\t// for a Role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session)\n\t// in the IAM User Guide.\n\t//\n\t// By default, the value is set to 3600 seconds.\n\t//\n\t// The DurationSeconds parameter is separate from the duration of a console\n\t// session that you might request using the returned credentials. The request\n\t// to the federation endpoint for a console sign-in token takes a SessionDuration\n\t// parameter that specifies the maximum length of the console session. For more\n\t// information, see Creating a URL that Enables Federated Users to Access the\n\t// Amazon Web Services Management Console (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html)\n\t// in the IAM User Guide.\n\tDurationSeconds *int64 `min:\"900\" type:\"integer\"`\n\n\t// An IAM policy in JSON format that you want to use as an inline session policy.\n\t//\n\t// This parameter is optional. Passing policies to this operation returns new\n\t// temporary credentials. The resulting session's permissions are the intersection\n\t// of the role's identity-based policy and the session policies. You can use\n\t// the role's temporary credentials in subsequent Amazon Web Services API calls\n\t// to access resources in the account that owns the role. You cannot use session\n\t// policies to grant more permissions than those allowed by the identity-based\n\t// policy of the role that is being assumed. For more information, see Session\n\t// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n\t// in the IAM User Guide.\n\t//\n\t// The plaintext that you use for both inline and managed session policies can't\n\t// exceed 2,048 characters. The JSON policy characters can be any ASCII character\n\t// from the space character to the end of the valid character list (\\u0020 through\n\t// \\u00FF). It can also include the tab (\\u0009), linefeed (\\u000A), and carriage\n\t// return (\\u000D) characters.\n\t//\n\t// An Amazon Web Services conversion compresses the passed inline session policy,\n\t// managed policy ARNs, and session tags into a packed binary format that has\n\t// a separate limit. Your request can fail for this limit even if your plaintext\n\t// meets the other requirements. The PackedPolicySize response element indicates\n\t// by percentage how close the policies and tags for your request are to the\n\t// upper size limit.\n\tPolicy *string `min:\"1\" type:\"string\"`\n\n\t// The Amazon Resource Names (ARNs) of the IAM managed policies that you want\n\t// to use as managed session policies. The policies must exist in the same account\n\t// as the role.\n\t//\n\t// This parameter is optional. You can provide up to 10 managed policy ARNs.\n\t// However, the plaintext that you use for both inline and managed session policies\n\t// can't exceed 2,048 characters. For more information about ARNs, see Amazon\n\t// Resource Names (ARNs) and Amazon Web Services Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)\n\t// in the Amazon Web Services General Reference.\n\t//\n\t// An Amazon Web Services conversion compresses the passed inline session policy,\n\t// managed policy ARNs, and session tags into a packed binary format that has\n\t// a separate limit. Your request can fail for this limit even if your plaintext\n\t// meets the other requirements. The PackedPolicySize response element indicates\n\t// by percentage how close the policies and tags for your request are to the\n\t// upper size limit.\n\t//\n\t// Passing policies to this operation returns new temporary credentials. The\n\t// resulting session's permissions are the intersection of the role's identity-based\n\t// policy and the session policies. You can use the role's temporary credentials\n\t// in subsequent Amazon Web Services API calls to access resources in the account\n\t// that owns the role. You cannot use session policies to grant more permissions\n\t// than those allowed by the identity-based policy of the role that is being\n\t// assumed. For more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n\t// in the IAM User Guide.\n\tPolicyArns []*PolicyDescriptorType `type:\"list\"`\n\n\t// The Amazon Resource Name (ARN) of the SAML provider in IAM that describes\n\t// the IdP.\n\t//\n\t// PrincipalArn is a required field\n\tPrincipalArn *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// The Amazon Resource Name (ARN) of the role that the caller is assuming.\n\t//\n\t// RoleArn is a required field\n\tRoleArn *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// The base64 encoded SAML authentication response provided by the IdP.\n\t//\n\t// For more information, see Configuring a Relying Party and Adding Claims (https://docs.aws.amazon.com/IAM/latest/UserGuide/create-role-saml-IdP-tasks.html)\n\t// in the IAM User Guide.\n\t//\n\t// SAMLAssertion is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by AssumeRoleWithSAMLInput's\n\t// String and GoString methods.\n\t//\n\t// SAMLAssertion is a required field\n\tSAMLAssertion *string `min:\"4\" type:\"string\" required:\"true\" sensitive:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumeRoleWithSAMLInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumeRoleWithSAMLInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AssumeRoleWithSAMLInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AssumeRoleWithSAMLInput\"}\n\tif s.DurationSeconds != nil && *s.DurationSeconds < 900 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"DurationSeconds\", 900))\n\t}\n\tif s.Policy != nil && len(*s.Policy) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Policy\", 1))\n\t}\n\tif s.PrincipalArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"PrincipalArn\"))\n\t}\n\tif s.PrincipalArn != nil && len(*s.PrincipalArn) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"PrincipalArn\", 20))\n\t}\n\tif s.RoleArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RoleArn\"))\n\t}\n\tif s.RoleArn != nil && len(*s.RoleArn) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"RoleArn\", 20))\n\t}\n\tif s.SAMLAssertion == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"SAMLAssertion\"))\n\t}\n\tif s.SAMLAssertion != nil && len(*s.SAMLAssertion) < 4 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SAMLAssertion\", 4))\n\t}\n\tif s.PolicyArns != nil {\n\t\tfor i, v := range s.PolicyArns {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"PolicyArns\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDurationSeconds sets the DurationSeconds field's value.\nfunc (s *AssumeRoleWithSAMLInput) SetDurationSeconds(v int64) *AssumeRoleWithSAMLInput {\n\ts.DurationSeconds = &v\n\treturn s\n}\n\n// SetPolicy sets the Policy field's value.\nfunc (s *AssumeRoleWithSAMLInput) SetPolicy(v string) *AssumeRoleWithSAMLInput {\n\ts.Policy = &v\n\treturn s\n}\n\n// SetPolicyArns sets the PolicyArns field's value.\nfunc (s *AssumeRoleWithSAMLInput) SetPolicyArns(v []*PolicyDescriptorType) *AssumeRoleWithSAMLInput {\n\ts.PolicyArns = v\n\treturn s\n}\n\n// SetPrincipalArn sets the PrincipalArn field's value.\nfunc (s *AssumeRoleWithSAMLInput) SetPrincipalArn(v string) *AssumeRoleWithSAMLInput {\n\ts.PrincipalArn = &v\n\treturn s\n}\n\n// SetRoleArn sets the RoleArn field's value.\nfunc (s *AssumeRoleWithSAMLInput) SetRoleArn(v string) *AssumeRoleWithSAMLInput {\n\ts.RoleArn = &v\n\treturn s\n}\n\n// SetSAMLAssertion sets the SAMLAssertion field's value.\nfunc (s *AssumeRoleWithSAMLInput) SetSAMLAssertion(v string) *AssumeRoleWithSAMLInput {\n\ts.SAMLAssertion = &v\n\treturn s\n}\n\n// Contains the response to a successful AssumeRoleWithSAML request, including\n// temporary Amazon Web Services credentials that can be used to make Amazon\n// Web Services requests.\ntype AssumeRoleWithSAMLOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The identifiers for the temporary security credentials that the operation\n\t// returns.\n\tAssumedRoleUser *AssumedRoleUser `type:\"structure\"`\n\n\t// The value of the Recipient attribute of the SubjectConfirmationData element\n\t// of the SAML assertion.\n\tAudience *string `type:\"string\"`\n\n\t// The temporary security credentials, which include an access key ID, a secret\n\t// access key, and a security (or session) token.\n\t//\n\t// The size of the security token that STS API operations return is not fixed.\n\t// We strongly recommend that you make no assumptions about the maximum size.\n\tCredentials *Credentials `type:\"structure\"`\n\n\t// The value of the Issuer element of the SAML assertion.\n\tIssuer *string `type:\"string\"`\n\n\t// A hash value based on the concatenation of the following:\n\t//\n\t//    * The Issuer response value.\n\t//\n\t//    * The Amazon Web Services account ID.\n\t//\n\t//    * The friendly name (the last part of the ARN) of the SAML provider in\n\t//    IAM.\n\t//\n\t// The combination of NameQualifier and Subject can be used to uniquely identify\n\t// a user.\n\t//\n\t// The following pseudocode shows how the hash value is calculated:\n\t//\n\t// BASE64 ( SHA1 ( \"https://example.com/saml\" + \"123456789012\" + \"/MySAMLIdP\"\n\t// ) )\n\tNameQualifier *string `type:\"string\"`\n\n\t// A percentage value that indicates the packed size of the session policies\n\t// and session tags combined passed in the request. The request fails if the\n\t// packed size is greater than 100 percent, which means the policies and tags\n\t// exceeded the allowed space.\n\tPackedPolicySize *int64 `type:\"integer\"`\n\n\t// The value in the SourceIdentity attribute in the SAML assertion.\n\t//\n\t// You can require users to set a source identity value when they assume a role.\n\t// You do this by using the sts:SourceIdentity condition key in a role trust\n\t// policy. That way, actions that are taken with the role are associated with\n\t// that user. After the source identity is set, the value cannot be changed.\n\t// It is present in the request for all actions that are taken by the role and\n\t// persists across chained role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts#iam-term-role-chaining)\n\t// sessions. You can configure your SAML identity provider to use an attribute\n\t// associated with your users, like user name or email, as the source identity\n\t// when calling AssumeRoleWithSAML. You do this by adding an attribute to the\n\t// SAML assertion. For more information about using source identity, see Monitor\n\t// and control actions taken with assumed roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html)\n\t// in the IAM User Guide.\n\t//\n\t// The regex used to validate this parameter is a string of characters consisting\n\t// of upper- and lower-case alphanumeric characters with no spaces. You can\n\t// also include underscores or any of the following characters: =,.@-\n\tSourceIdentity *string `min:\"2\" type:\"string\"`\n\n\t// The value of the NameID element in the Subject element of the SAML assertion.\n\tSubject *string `type:\"string\"`\n\n\t// The format of the name ID, as defined by the Format attribute in the NameID\n\t// element of the SAML assertion. Typical examples of the format are transient\n\t// or persistent.\n\t//\n\t// If the format includes the prefix urn:oasis:names:tc:SAML:2.0:nameid-format,\n\t// that prefix is removed. For example, urn:oasis:names:tc:SAML:2.0:nameid-format:transient\n\t// is returned as transient. If the format includes any other prefix, the format\n\t// is returned with no modifications.\n\tSubjectType *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumeRoleWithSAMLOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumeRoleWithSAMLOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssumedRoleUser sets the AssumedRoleUser field's value.\nfunc (s *AssumeRoleWithSAMLOutput) SetAssumedRoleUser(v *AssumedRoleUser) *AssumeRoleWithSAMLOutput {\n\ts.AssumedRoleUser = v\n\treturn s\n}\n\n// SetAudience sets the Audience field's value.\nfunc (s *AssumeRoleWithSAMLOutput) SetAudience(v string) *AssumeRoleWithSAMLOutput {\n\ts.Audience = &v\n\treturn s\n}\n\n// SetCredentials sets the Credentials field's value.\nfunc (s *AssumeRoleWithSAMLOutput) SetCredentials(v *Credentials) *AssumeRoleWithSAMLOutput {\n\ts.Credentials = v\n\treturn s\n}\n\n// SetIssuer sets the Issuer field's value.\nfunc (s *AssumeRoleWithSAMLOutput) SetIssuer(v string) *AssumeRoleWithSAMLOutput {\n\ts.Issuer = &v\n\treturn s\n}\n\n// SetNameQualifier sets the NameQualifier field's value.\nfunc (s *AssumeRoleWithSAMLOutput) SetNameQualifier(v string) *AssumeRoleWithSAMLOutput {\n\ts.NameQualifier = &v\n\treturn s\n}\n\n// SetPackedPolicySize sets the PackedPolicySize field's value.\nfunc (s *AssumeRoleWithSAMLOutput) SetPackedPolicySize(v int64) *AssumeRoleWithSAMLOutput {\n\ts.PackedPolicySize = &v\n\treturn s\n}\n\n// SetSourceIdentity sets the SourceIdentity field's value.\nfunc (s *AssumeRoleWithSAMLOutput) SetSourceIdentity(v string) *AssumeRoleWithSAMLOutput {\n\ts.SourceIdentity = &v\n\treturn s\n}\n\n// SetSubject sets the Subject field's value.\nfunc (s *AssumeRoleWithSAMLOutput) SetSubject(v string) *AssumeRoleWithSAMLOutput {\n\ts.Subject = &v\n\treturn s\n}\n\n// SetSubjectType sets the SubjectType field's value.\nfunc (s *AssumeRoleWithSAMLOutput) SetSubjectType(v string) *AssumeRoleWithSAMLOutput {\n\ts.SubjectType = &v\n\treturn s\n}\n\ntype AssumeRoleWithWebIdentityInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The duration, in seconds, of the role session. The value can range from 900\n\t// seconds (15 minutes) up to the maximum session duration setting for the role.\n\t// This setting can have a value from 1 hour to 12 hours. If you specify a value\n\t// higher than this setting, the operation fails. For example, if you specify\n\t// a session duration of 12 hours, but your administrator set the maximum session\n\t// duration to 6 hours, your operation fails. To learn how to view the maximum\n\t// value for your role, see View the Maximum Session Duration Setting for a\n\t// Role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session)\n\t// in the IAM User Guide.\n\t//\n\t// By default, the value is set to 3600 seconds.\n\t//\n\t// The DurationSeconds parameter is separate from the duration of a console\n\t// session that you might request using the returned credentials. The request\n\t// to the federation endpoint for a console sign-in token takes a SessionDuration\n\t// parameter that specifies the maximum length of the console session. For more\n\t// information, see Creating a URL that Enables Federated Users to Access the\n\t// Amazon Web Services Management Console (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html)\n\t// in the IAM User Guide.\n\tDurationSeconds *int64 `min:\"900\" type:\"integer\"`\n\n\t// An IAM policy in JSON format that you want to use as an inline session policy.\n\t//\n\t// This parameter is optional. Passing policies to this operation returns new\n\t// temporary credentials. The resulting session's permissions are the intersection\n\t// of the role's identity-based policy and the session policies. You can use\n\t// the role's temporary credentials in subsequent Amazon Web Services API calls\n\t// to access resources in the account that owns the role. You cannot use session\n\t// policies to grant more permissions than those allowed by the identity-based\n\t// policy of the role that is being assumed. For more information, see Session\n\t// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n\t// in the IAM User Guide.\n\t//\n\t// The plaintext that you use for both inline and managed session policies can't\n\t// exceed 2,048 characters. The JSON policy characters can be any ASCII character\n\t// from the space character to the end of the valid character list (\\u0020 through\n\t// \\u00FF). It can also include the tab (\\u0009), linefeed (\\u000A), and carriage\n\t// return (\\u000D) characters.\n\t//\n\t// An Amazon Web Services conversion compresses the passed inline session policy,\n\t// managed policy ARNs, and session tags into a packed binary format that has\n\t// a separate limit. Your request can fail for this limit even if your plaintext\n\t// meets the other requirements. The PackedPolicySize response element indicates\n\t// by percentage how close the policies and tags for your request are to the\n\t// upper size limit.\n\tPolicy *string `min:\"1\" type:\"string\"`\n\n\t// The Amazon Resource Names (ARNs) of the IAM managed policies that you want\n\t// to use as managed session policies. The policies must exist in the same account\n\t// as the role.\n\t//\n\t// This parameter is optional. You can provide up to 10 managed policy ARNs.\n\t// However, the plaintext that you use for both inline and managed session policies\n\t// can't exceed 2,048 characters. For more information about ARNs, see Amazon\n\t// Resource Names (ARNs) and Amazon Web Services Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)\n\t// in the Amazon Web Services General Reference.\n\t//\n\t// An Amazon Web Services conversion compresses the passed inline session policy,\n\t// managed policy ARNs, and session tags into a packed binary format that has\n\t// a separate limit. Your request can fail for this limit even if your plaintext\n\t// meets the other requirements. The PackedPolicySize response element indicates\n\t// by percentage how close the policies and tags for your request are to the\n\t// upper size limit.\n\t//\n\t// Passing policies to this operation returns new temporary credentials. The\n\t// resulting session's permissions are the intersection of the role's identity-based\n\t// policy and the session policies. You can use the role's temporary credentials\n\t// in subsequent Amazon Web Services API calls to access resources in the account\n\t// that owns the role. You cannot use session policies to grant more permissions\n\t// than those allowed by the identity-based policy of the role that is being\n\t// assumed. For more information, see Session Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n\t// in the IAM User Guide.\n\tPolicyArns []*PolicyDescriptorType `type:\"list\"`\n\n\t// The fully qualified host component of the domain name of the OAuth 2.0 identity\n\t// provider. Do not specify this value for an OpenID Connect identity provider.\n\t//\n\t// Currently www.amazon.com and graph.facebook.com are the only supported identity\n\t// providers for OAuth 2.0 access tokens. Do not include URL schemes and port\n\t// numbers.\n\t//\n\t// Do not specify this value for OpenID Connect ID tokens.\n\tProviderId *string `min:\"4\" type:\"string\"`\n\n\t// The Amazon Resource Name (ARN) of the role that the caller is assuming.\n\t//\n\t// RoleArn is a required field\n\tRoleArn *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// An identifier for the assumed role session. Typically, you pass the name\n\t// or identifier that is associated with the user who is using your application.\n\t// That way, the temporary security credentials that your application will use\n\t// are associated with that user. This session name is included as part of the\n\t// ARN and assumed role ID in the AssumedRoleUser response element.\n\t//\n\t// The regex used to validate this parameter is a string of characters consisting\n\t// of upper- and lower-case alphanumeric characters with no spaces. You can\n\t// also include underscores or any of the following characters: =,.@-\n\t//\n\t// RoleSessionName is a required field\n\tRoleSessionName *string `min:\"2\" type:\"string\" required:\"true\"`\n\n\t// The OAuth 2.0 access token or OpenID Connect ID token that is provided by\n\t// the identity provider. Your application must get this token by authenticating\n\t// the user who is using your application with a web identity provider before\n\t// the application makes an AssumeRoleWithWebIdentity call. Only tokens with\n\t// RSA algorithms (RS256) are supported.\n\t//\n\t// WebIdentityToken is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by AssumeRoleWithWebIdentityInput's\n\t// String and GoString methods.\n\t//\n\t// WebIdentityToken is a required field\n\tWebIdentityToken *string `min:\"4\" type:\"string\" required:\"true\" sensitive:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumeRoleWithWebIdentityInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumeRoleWithWebIdentityInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *AssumeRoleWithWebIdentityInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"AssumeRoleWithWebIdentityInput\"}\n\tif s.DurationSeconds != nil && *s.DurationSeconds < 900 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"DurationSeconds\", 900))\n\t}\n\tif s.Policy != nil && len(*s.Policy) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Policy\", 1))\n\t}\n\tif s.ProviderId != nil && len(*s.ProviderId) < 4 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ProviderId\", 4))\n\t}\n\tif s.RoleArn == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RoleArn\"))\n\t}\n\tif s.RoleArn != nil && len(*s.RoleArn) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"RoleArn\", 20))\n\t}\n\tif s.RoleSessionName == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"RoleSessionName\"))\n\t}\n\tif s.RoleSessionName != nil && len(*s.RoleSessionName) < 2 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"RoleSessionName\", 2))\n\t}\n\tif s.WebIdentityToken == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"WebIdentityToken\"))\n\t}\n\tif s.WebIdentityToken != nil && len(*s.WebIdentityToken) < 4 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"WebIdentityToken\", 4))\n\t}\n\tif s.PolicyArns != nil {\n\t\tfor i, v := range s.PolicyArns {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"PolicyArns\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDurationSeconds sets the DurationSeconds field's value.\nfunc (s *AssumeRoleWithWebIdentityInput) SetDurationSeconds(v int64) *AssumeRoleWithWebIdentityInput {\n\ts.DurationSeconds = &v\n\treturn s\n}\n\n// SetPolicy sets the Policy field's value.\nfunc (s *AssumeRoleWithWebIdentityInput) SetPolicy(v string) *AssumeRoleWithWebIdentityInput {\n\ts.Policy = &v\n\treturn s\n}\n\n// SetPolicyArns sets the PolicyArns field's value.\nfunc (s *AssumeRoleWithWebIdentityInput) SetPolicyArns(v []*PolicyDescriptorType) *AssumeRoleWithWebIdentityInput {\n\ts.PolicyArns = v\n\treturn s\n}\n\n// SetProviderId sets the ProviderId field's value.\nfunc (s *AssumeRoleWithWebIdentityInput) SetProviderId(v string) *AssumeRoleWithWebIdentityInput {\n\ts.ProviderId = &v\n\treturn s\n}\n\n// SetRoleArn sets the RoleArn field's value.\nfunc (s *AssumeRoleWithWebIdentityInput) SetRoleArn(v string) *AssumeRoleWithWebIdentityInput {\n\ts.RoleArn = &v\n\treturn s\n}\n\n// SetRoleSessionName sets the RoleSessionName field's value.\nfunc (s *AssumeRoleWithWebIdentityInput) SetRoleSessionName(v string) *AssumeRoleWithWebIdentityInput {\n\ts.RoleSessionName = &v\n\treturn s\n}\n\n// SetWebIdentityToken sets the WebIdentityToken field's value.\nfunc (s *AssumeRoleWithWebIdentityInput) SetWebIdentityToken(v string) *AssumeRoleWithWebIdentityInput {\n\ts.WebIdentityToken = &v\n\treturn s\n}\n\n// Contains the response to a successful AssumeRoleWithWebIdentity request,\n// including temporary Amazon Web Services credentials that can be used to make\n// Amazon Web Services requests.\ntype AssumeRoleWithWebIdentityOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers\n\t// that you can use to refer to the resulting temporary security credentials.\n\t// For example, you can reference these credentials as a principal in a resource-based\n\t// policy by using the ARN or assumed role ID. The ARN and ID include the RoleSessionName\n\t// that you specified when you called AssumeRole.\n\tAssumedRoleUser *AssumedRoleUser `type:\"structure\"`\n\n\t// The intended audience (also known as client ID) of the web identity token.\n\t// This is traditionally the client identifier issued to the application that\n\t// requested the web identity token.\n\tAudience *string `type:\"string\"`\n\n\t// The temporary security credentials, which include an access key ID, a secret\n\t// access key, and a security token.\n\t//\n\t// The size of the security token that STS API operations return is not fixed.\n\t// We strongly recommend that you make no assumptions about the maximum size.\n\tCredentials *Credentials `type:\"structure\"`\n\n\t// A percentage value that indicates the packed size of the session policies\n\t// and session tags combined passed in the request. The request fails if the\n\t// packed size is greater than 100 percent, which means the policies and tags\n\t// exceeded the allowed space.\n\tPackedPolicySize *int64 `type:\"integer\"`\n\n\t// The issuing authority of the web identity token presented. For OpenID Connect\n\t// ID tokens, this contains the value of the iss field. For OAuth 2.0 access\n\t// tokens, this contains the value of the ProviderId parameter that was passed\n\t// in the AssumeRoleWithWebIdentity request.\n\tProvider *string `type:\"string\"`\n\n\t// The value of the source identity that is returned in the JSON web token (JWT)\n\t// from the identity provider.\n\t//\n\t// You can require users to set a source identity value when they assume a role.\n\t// You do this by using the sts:SourceIdentity condition key in a role trust\n\t// policy. That way, actions that are taken with the role are associated with\n\t// that user. After the source identity is set, the value cannot be changed.\n\t// It is present in the request for all actions that are taken by the role and\n\t// persists across chained role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts#iam-term-role-chaining)\n\t// sessions. You can configure your identity provider to use an attribute associated\n\t// with your users, like user name or email, as the source identity when calling\n\t// AssumeRoleWithWebIdentity. You do this by adding a claim to the JSON web\n\t// token. To learn more about OIDC tokens and claims, see Using Tokens with\n\t// User Pools (https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html)\n\t// in the Amazon Cognito Developer Guide. For more information about using source\n\t// identity, see Monitor and control actions taken with assumed roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html)\n\t// in the IAM User Guide.\n\t//\n\t// The regex used to validate this parameter is a string of characters consisting\n\t// of upper- and lower-case alphanumeric characters with no spaces. You can\n\t// also include underscores or any of the following characters: =,.@-\n\tSourceIdentity *string `min:\"2\" type:\"string\"`\n\n\t// The unique user identifier that is returned by the identity provider. This\n\t// identifier is associated with the WebIdentityToken that was submitted with\n\t// the AssumeRoleWithWebIdentity call. The identifier is typically unique to\n\t// the user and the application that acquired the WebIdentityToken (pairwise\n\t// identifier). For OpenID Connect ID tokens, this field contains the value\n\t// returned by the identity provider as the token's sub (Subject) claim.\n\tSubjectFromWebIdentityToken *string `min:\"6\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumeRoleWithWebIdentityOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumeRoleWithWebIdentityOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAssumedRoleUser sets the AssumedRoleUser field's value.\nfunc (s *AssumeRoleWithWebIdentityOutput) SetAssumedRoleUser(v *AssumedRoleUser) *AssumeRoleWithWebIdentityOutput {\n\ts.AssumedRoleUser = v\n\treturn s\n}\n\n// SetAudience sets the Audience field's value.\nfunc (s *AssumeRoleWithWebIdentityOutput) SetAudience(v string) *AssumeRoleWithWebIdentityOutput {\n\ts.Audience = &v\n\treturn s\n}\n\n// SetCredentials sets the Credentials field's value.\nfunc (s *AssumeRoleWithWebIdentityOutput) SetCredentials(v *Credentials) *AssumeRoleWithWebIdentityOutput {\n\ts.Credentials = v\n\treturn s\n}\n\n// SetPackedPolicySize sets the PackedPolicySize field's value.\nfunc (s *AssumeRoleWithWebIdentityOutput) SetPackedPolicySize(v int64) *AssumeRoleWithWebIdentityOutput {\n\ts.PackedPolicySize = &v\n\treturn s\n}\n\n// SetProvider sets the Provider field's value.\nfunc (s *AssumeRoleWithWebIdentityOutput) SetProvider(v string) *AssumeRoleWithWebIdentityOutput {\n\ts.Provider = &v\n\treturn s\n}\n\n// SetSourceIdentity sets the SourceIdentity field's value.\nfunc (s *AssumeRoleWithWebIdentityOutput) SetSourceIdentity(v string) *AssumeRoleWithWebIdentityOutput {\n\ts.SourceIdentity = &v\n\treturn s\n}\n\n// SetSubjectFromWebIdentityToken sets the SubjectFromWebIdentityToken field's value.\nfunc (s *AssumeRoleWithWebIdentityOutput) SetSubjectFromWebIdentityToken(v string) *AssumeRoleWithWebIdentityOutput {\n\ts.SubjectFromWebIdentityToken = &v\n\treturn s\n}\n\n// The identifiers for the temporary security credentials that the operation\n// returns.\ntype AssumedRoleUser struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ARN of the temporary security credentials that are returned from the\n\t// AssumeRole action. For more information about ARNs and how to use them in\n\t// policies, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html)\n\t// in the IAM User Guide.\n\t//\n\t// Arn is a required field\n\tArn *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// A unique identifier that contains the role ID and the role session name of\n\t// the role that is being assumed. The role ID is generated by Amazon Web Services\n\t// when the role is created.\n\t//\n\t// AssumedRoleId is a required field\n\tAssumedRoleId *string `min:\"2\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumedRoleUser) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s AssumedRoleUser) GoString() string {\n\treturn s.String()\n}\n\n// SetArn sets the Arn field's value.\nfunc (s *AssumedRoleUser) SetArn(v string) *AssumedRoleUser {\n\ts.Arn = &v\n\treturn s\n}\n\n// SetAssumedRoleId sets the AssumedRoleId field's value.\nfunc (s *AssumedRoleUser) SetAssumedRoleId(v string) *AssumedRoleUser {\n\ts.AssumedRoleId = &v\n\treturn s\n}\n\n// Amazon Web Services credentials for API authentication.\ntype Credentials struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The access key ID that identifies the temporary security credentials.\n\t//\n\t// AccessKeyId is a required field\n\tAccessKeyId *string `min:\"16\" type:\"string\" required:\"true\"`\n\n\t// The date on which the current credentials expire.\n\t//\n\t// Expiration is a required field\n\tExpiration *time.Time `type:\"timestamp\" required:\"true\"`\n\n\t// The secret access key that can be used to sign requests.\n\t//\n\t// SecretAccessKey is a sensitive parameter and its value will be\n\t// replaced with \"sensitive\" in string returned by Credentials's\n\t// String and GoString methods.\n\t//\n\t// SecretAccessKey is a required field\n\tSecretAccessKey *string `type:\"string\" required:\"true\" sensitive:\"true\"`\n\n\t// The token that users must pass to the service API to use the temporary credentials.\n\t//\n\t// SessionToken is a required field\n\tSessionToken *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Credentials) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Credentials) GoString() string {\n\treturn s.String()\n}\n\n// SetAccessKeyId sets the AccessKeyId field's value.\nfunc (s *Credentials) SetAccessKeyId(v string) *Credentials {\n\ts.AccessKeyId = &v\n\treturn s\n}\n\n// SetExpiration sets the Expiration field's value.\nfunc (s *Credentials) SetExpiration(v time.Time) *Credentials {\n\ts.Expiration = &v\n\treturn s\n}\n\n// SetSecretAccessKey sets the SecretAccessKey field's value.\nfunc (s *Credentials) SetSecretAccessKey(v string) *Credentials {\n\ts.SecretAccessKey = &v\n\treturn s\n}\n\n// SetSessionToken sets the SessionToken field's value.\nfunc (s *Credentials) SetSessionToken(v string) *Credentials {\n\ts.SessionToken = &v\n\treturn s\n}\n\ntype DecodeAuthorizationMessageInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The encoded message that was returned with the response.\n\t//\n\t// EncodedMessage is a required field\n\tEncodedMessage *string `min:\"1\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DecodeAuthorizationMessageInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DecodeAuthorizationMessageInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *DecodeAuthorizationMessageInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"DecodeAuthorizationMessageInput\"}\n\tif s.EncodedMessage == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"EncodedMessage\"))\n\t}\n\tif s.EncodedMessage != nil && len(*s.EncodedMessage) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"EncodedMessage\", 1))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetEncodedMessage sets the EncodedMessage field's value.\nfunc (s *DecodeAuthorizationMessageInput) SetEncodedMessage(v string) *DecodeAuthorizationMessageInput {\n\ts.EncodedMessage = &v\n\treturn s\n}\n\n// A document that contains additional information about the authorization status\n// of a request from an encoded message that is returned in response to an Amazon\n// Web Services request.\ntype DecodeAuthorizationMessageOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The API returns a response with the decoded message.\n\tDecodedMessage *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DecodeAuthorizationMessageOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s DecodeAuthorizationMessageOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetDecodedMessage sets the DecodedMessage field's value.\nfunc (s *DecodeAuthorizationMessageOutput) SetDecodedMessage(v string) *DecodeAuthorizationMessageOutput {\n\ts.DecodedMessage = &v\n\treturn s\n}\n\n// Identifiers for the federated user that is associated with the credentials.\ntype FederatedUser struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The ARN that specifies the federated user that is associated with the credentials.\n\t// For more information about ARNs and how to use them in policies, see IAM\n\t// Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html)\n\t// in the IAM User Guide.\n\t//\n\t// Arn is a required field\n\tArn *string `min:\"20\" type:\"string\" required:\"true\"`\n\n\t// The string that identifies the federated user associated with the credentials,\n\t// similar to the unique ID of an IAM user.\n\t//\n\t// FederatedUserId is a required field\n\tFederatedUserId *string `min:\"2\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s FederatedUser) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s FederatedUser) GoString() string {\n\treturn s.String()\n}\n\n// SetArn sets the Arn field's value.\nfunc (s *FederatedUser) SetArn(v string) *FederatedUser {\n\ts.Arn = &v\n\treturn s\n}\n\n// SetFederatedUserId sets the FederatedUserId field's value.\nfunc (s *FederatedUser) SetFederatedUserId(v string) *FederatedUser {\n\ts.FederatedUserId = &v\n\treturn s\n}\n\ntype GetAccessKeyInfoInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The identifier of an access key.\n\t//\n\t// This parameter allows (through its regex pattern) a string of characters\n\t// that can consist of any upper- or lowercase letter or digit.\n\t//\n\t// AccessKeyId is a required field\n\tAccessKeyId *string `min:\"16\" type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetAccessKeyInfoInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetAccessKeyInfoInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetAccessKeyInfoInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetAccessKeyInfoInput\"}\n\tif s.AccessKeyId == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"AccessKeyId\"))\n\t}\n\tif s.AccessKeyId != nil && len(*s.AccessKeyId) < 16 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"AccessKeyId\", 16))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetAccessKeyId sets the AccessKeyId field's value.\nfunc (s *GetAccessKeyInfoInput) SetAccessKeyId(v string) *GetAccessKeyInfoInput {\n\ts.AccessKeyId = &v\n\treturn s\n}\n\ntype GetAccessKeyInfoOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The number used to identify the Amazon Web Services account.\n\tAccount *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetAccessKeyInfoOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetAccessKeyInfoOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAccount sets the Account field's value.\nfunc (s *GetAccessKeyInfoOutput) SetAccount(v string) *GetAccessKeyInfoOutput {\n\ts.Account = &v\n\treturn s\n}\n\ntype GetCallerIdentityInput struct {\n\t_ struct{} `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetCallerIdentityInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetCallerIdentityInput) GoString() string {\n\treturn s.String()\n}\n\n// Contains the response to a successful GetCallerIdentity request, including\n// information about the entity making the request.\ntype GetCallerIdentityOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Web Services account ID number of the account that owns or contains\n\t// the calling entity.\n\tAccount *string `type:\"string\"`\n\n\t// The Amazon Web Services ARN associated with the calling entity.\n\tArn *string `min:\"20\" type:\"string\"`\n\n\t// The unique identifier of the calling entity. The exact value depends on the\n\t// type of entity that is making the call. The values returned are those listed\n\t// in the aws:userid column in the Principal table (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#principaltable)\n\t// found on the Policy Variables reference page in the IAM User Guide.\n\tUserId *string `type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetCallerIdentityOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetCallerIdentityOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetAccount sets the Account field's value.\nfunc (s *GetCallerIdentityOutput) SetAccount(v string) *GetCallerIdentityOutput {\n\ts.Account = &v\n\treturn s\n}\n\n// SetArn sets the Arn field's value.\nfunc (s *GetCallerIdentityOutput) SetArn(v string) *GetCallerIdentityOutput {\n\ts.Arn = &v\n\treturn s\n}\n\n// SetUserId sets the UserId field's value.\nfunc (s *GetCallerIdentityOutput) SetUserId(v string) *GetCallerIdentityOutput {\n\ts.UserId = &v\n\treturn s\n}\n\ntype GetFederationTokenInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The duration, in seconds, that the session should last. Acceptable durations\n\t// for federation sessions range from 900 seconds (15 minutes) to 129,600 seconds\n\t// (36 hours), with 43,200 seconds (12 hours) as the default. Sessions obtained\n\t// using root user credentials are restricted to a maximum of 3,600 seconds\n\t// (one hour). If the specified duration is longer than one hour, the session\n\t// obtained by using root user credentials defaults to one hour.\n\tDurationSeconds *int64 `min:\"900\" type:\"integer\"`\n\n\t// The name of the federated user. The name is used as an identifier for the\n\t// temporary security credentials (such as Bob). For example, you can reference\n\t// the federated user name in a resource-based policy, such as in an Amazon\n\t// S3 bucket policy.\n\t//\n\t// The regex used to validate this parameter is a string of characters consisting\n\t// of upper- and lower-case alphanumeric characters with no spaces. You can\n\t// also include underscores or any of the following characters: =,.@-\n\t//\n\t// Name is a required field\n\tName *string `min:\"2\" type:\"string\" required:\"true\"`\n\n\t// An IAM policy in JSON format that you want to use as an inline session policy.\n\t//\n\t// You must pass an inline or managed session policy (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n\t// to this operation. You can pass a single JSON policy document to use as an\n\t// inline session policy. You can also specify up to 10 managed policy Amazon\n\t// Resource Names (ARNs) to use as managed session policies.\n\t//\n\t// This parameter is optional. However, if you do not pass any session policies,\n\t// then the resulting federated user session has no permissions.\n\t//\n\t// When you pass session policies, the session permissions are the intersection\n\t// of the IAM user policies and the session policies that you pass. This gives\n\t// you a way to further restrict the permissions for a federated user. You cannot\n\t// use session policies to grant more permissions than those that are defined\n\t// in the permissions policy of the IAM user. For more information, see Session\n\t// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n\t// in the IAM User Guide.\n\t//\n\t// The resulting credentials can be used to access a resource that has a resource-based\n\t// policy. If that policy specifically references the federated user session\n\t// in the Principal element of the policy, the session has the permissions allowed\n\t// by the policy. These permissions are granted in addition to the permissions\n\t// that are granted by the session policies.\n\t//\n\t// The plaintext that you use for both inline and managed session policies can't\n\t// exceed 2,048 characters. The JSON policy characters can be any ASCII character\n\t// from the space character to the end of the valid character list (\\u0020 through\n\t// \\u00FF). It can also include the tab (\\u0009), linefeed (\\u000A), and carriage\n\t// return (\\u000D) characters.\n\t//\n\t// An Amazon Web Services conversion compresses the passed inline session policy,\n\t// managed policy ARNs, and session tags into a packed binary format that has\n\t// a separate limit. Your request can fail for this limit even if your plaintext\n\t// meets the other requirements. The PackedPolicySize response element indicates\n\t// by percentage how close the policies and tags for your request are to the\n\t// upper size limit.\n\tPolicy *string `min:\"1\" type:\"string\"`\n\n\t// The Amazon Resource Names (ARNs) of the IAM managed policies that you want\n\t// to use as a managed session policy. The policies must exist in the same account\n\t// as the IAM user that is requesting federated access.\n\t//\n\t// You must pass an inline or managed session policy (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n\t// to this operation. You can pass a single JSON policy document to use as an\n\t// inline session policy. You can also specify up to 10 managed policy Amazon\n\t// Resource Names (ARNs) to use as managed session policies. The plaintext that\n\t// you use for both inline and managed session policies can't exceed 2,048 characters.\n\t// You can provide up to 10 managed policy ARNs. For more information about\n\t// ARNs, see Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces\n\t// (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)\n\t// in the Amazon Web Services General Reference.\n\t//\n\t// This parameter is optional. However, if you do not pass any session policies,\n\t// then the resulting federated user session has no permissions.\n\t//\n\t// When you pass session policies, the session permissions are the intersection\n\t// of the IAM user policies and the session policies that you pass. This gives\n\t// you a way to further restrict the permissions for a federated user. You cannot\n\t// use session policies to grant more permissions than those that are defined\n\t// in the permissions policy of the IAM user. For more information, see Session\n\t// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)\n\t// in the IAM User Guide.\n\t//\n\t// The resulting credentials can be used to access a resource that has a resource-based\n\t// policy. If that policy specifically references the federated user session\n\t// in the Principal element of the policy, the session has the permissions allowed\n\t// by the policy. These permissions are granted in addition to the permissions\n\t// that are granted by the session policies.\n\t//\n\t// An Amazon Web Services conversion compresses the passed inline session policy,\n\t// managed policy ARNs, and session tags into a packed binary format that has\n\t// a separate limit. Your request can fail for this limit even if your plaintext\n\t// meets the other requirements. The PackedPolicySize response element indicates\n\t// by percentage how close the policies and tags for your request are to the\n\t// upper size limit.\n\tPolicyArns []*PolicyDescriptorType `type:\"list\"`\n\n\t// A list of session tags. Each session tag consists of a key name and an associated\n\t// value. For more information about session tags, see Passing Session Tags\n\t// in STS (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)\n\t// in the IAM User Guide.\n\t//\n\t// This parameter is optional. You can pass up to 50 session tags. The plaintext\n\t// session tag keys can’t exceed 128 characters and the values can’t exceed\n\t// 256 characters. For these and additional limits, see IAM and STS Character\n\t// Limits (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length)\n\t// in the IAM User Guide.\n\t//\n\t// An Amazon Web Services conversion compresses the passed inline session policy,\n\t// managed policy ARNs, and session tags into a packed binary format that has\n\t// a separate limit. Your request can fail for this limit even if your plaintext\n\t// meets the other requirements. The PackedPolicySize response element indicates\n\t// by percentage how close the policies and tags for your request are to the\n\t// upper size limit.\n\t//\n\t// You can pass a session tag with the same key as a tag that is already attached\n\t// to the user you are federating. When you do, session tags override a user\n\t// tag with the same key.\n\t//\n\t// Tag key–value pairs are not case sensitive, but case is preserved. This\n\t// means that you cannot have separate Department and department tag keys. Assume\n\t// that the role has the Department=Marketing tag and you pass the department=engineering\n\t// session tag. Department and department are not saved as separate tags, and\n\t// the session tag passed in the request takes precedence over the role tag.\n\tTags []*Tag `type:\"list\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetFederationTokenInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetFederationTokenInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetFederationTokenInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetFederationTokenInput\"}\n\tif s.DurationSeconds != nil && *s.DurationSeconds < 900 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"DurationSeconds\", 900))\n\t}\n\tif s.Name == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Name\"))\n\t}\n\tif s.Name != nil && len(*s.Name) < 2 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Name\", 2))\n\t}\n\tif s.Policy != nil && len(*s.Policy) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Policy\", 1))\n\t}\n\tif s.PolicyArns != nil {\n\t\tfor i, v := range s.PolicyArns {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"PolicyArns\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\tif s.Tags != nil {\n\t\tfor i, v := range s.Tags {\n\t\t\tif v == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := v.Validate(); err != nil {\n\t\t\t\tinvalidParams.AddNested(fmt.Sprintf(\"%s[%v]\", \"Tags\", i), err.(request.ErrInvalidParams))\n\t\t\t}\n\t\t}\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDurationSeconds sets the DurationSeconds field's value.\nfunc (s *GetFederationTokenInput) SetDurationSeconds(v int64) *GetFederationTokenInput {\n\ts.DurationSeconds = &v\n\treturn s\n}\n\n// SetName sets the Name field's value.\nfunc (s *GetFederationTokenInput) SetName(v string) *GetFederationTokenInput {\n\ts.Name = &v\n\treturn s\n}\n\n// SetPolicy sets the Policy field's value.\nfunc (s *GetFederationTokenInput) SetPolicy(v string) *GetFederationTokenInput {\n\ts.Policy = &v\n\treturn s\n}\n\n// SetPolicyArns sets the PolicyArns field's value.\nfunc (s *GetFederationTokenInput) SetPolicyArns(v []*PolicyDescriptorType) *GetFederationTokenInput {\n\ts.PolicyArns = v\n\treturn s\n}\n\n// SetTags sets the Tags field's value.\nfunc (s *GetFederationTokenInput) SetTags(v []*Tag) *GetFederationTokenInput {\n\ts.Tags = v\n\treturn s\n}\n\n// Contains the response to a successful GetFederationToken request, including\n// temporary Amazon Web Services credentials that can be used to make Amazon\n// Web Services requests.\ntype GetFederationTokenOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The temporary security credentials, which include an access key ID, a secret\n\t// access key, and a security (or session) token.\n\t//\n\t// The size of the security token that STS API operations return is not fixed.\n\t// We strongly recommend that you make no assumptions about the maximum size.\n\tCredentials *Credentials `type:\"structure\"`\n\n\t// Identifiers for the federated user associated with the credentials (such\n\t// as arn:aws:sts::123456789012:federated-user/Bob or 123456789012:Bob). You\n\t// can use the federated user's ARN in your resource-based policies, such as\n\t// an Amazon S3 bucket policy.\n\tFederatedUser *FederatedUser `type:\"structure\"`\n\n\t// A percentage value that indicates the packed size of the session policies\n\t// and session tags combined passed in the request. The request fails if the\n\t// packed size is greater than 100 percent, which means the policies and tags\n\t// exceeded the allowed space.\n\tPackedPolicySize *int64 `type:\"integer\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetFederationTokenOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetFederationTokenOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetCredentials sets the Credentials field's value.\nfunc (s *GetFederationTokenOutput) SetCredentials(v *Credentials) *GetFederationTokenOutput {\n\ts.Credentials = v\n\treturn s\n}\n\n// SetFederatedUser sets the FederatedUser field's value.\nfunc (s *GetFederationTokenOutput) SetFederatedUser(v *FederatedUser) *GetFederationTokenOutput {\n\ts.FederatedUser = v\n\treturn s\n}\n\n// SetPackedPolicySize sets the PackedPolicySize field's value.\nfunc (s *GetFederationTokenOutput) SetPackedPolicySize(v int64) *GetFederationTokenOutput {\n\ts.PackedPolicySize = &v\n\treturn s\n}\n\ntype GetSessionTokenInput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The duration, in seconds, that the credentials should remain valid. Acceptable\n\t// durations for IAM user sessions range from 900 seconds (15 minutes) to 129,600\n\t// seconds (36 hours), with 43,200 seconds (12 hours) as the default. Sessions\n\t// for Amazon Web Services account owners are restricted to a maximum of 3,600\n\t// seconds (one hour). If the duration is longer than one hour, the session\n\t// for Amazon Web Services account owners defaults to one hour.\n\tDurationSeconds *int64 `min:\"900\" type:\"integer\"`\n\n\t// The identification number of the MFA device that is associated with the IAM\n\t// user who is making the GetSessionToken call. Specify this value if the IAM\n\t// user has a policy that requires MFA authentication. The value is either the\n\t// serial number for a hardware device (such as GAHT12345678) or an Amazon Resource\n\t// Name (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user).\n\t// You can find the device for an IAM user by going to the Amazon Web Services\n\t// Management Console and viewing the user's security credentials.\n\t//\n\t// The regex used to validate this parameter is a string of characters consisting\n\t// of upper- and lower-case alphanumeric characters with no spaces. You can\n\t// also include underscores or any of the following characters: =,.@:/-\n\tSerialNumber *string `min:\"9\" type:\"string\"`\n\n\t// The value provided by the MFA device, if MFA is required. If any policy requires\n\t// the IAM user to submit an MFA code, specify this value. If MFA authentication\n\t// is required, the user must provide a code when requesting a set of temporary\n\t// security credentials. A user who fails to provide the code receives an \"access\n\t// denied\" response when requesting resources that require MFA authentication.\n\t//\n\t// The format for this parameter, as described by its regex pattern, is a sequence\n\t// of six numeric digits.\n\tTokenCode *string `min:\"6\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetSessionTokenInput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetSessionTokenInput) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *GetSessionTokenInput) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"GetSessionTokenInput\"}\n\tif s.DurationSeconds != nil && *s.DurationSeconds < 900 {\n\t\tinvalidParams.Add(request.NewErrParamMinValue(\"DurationSeconds\", 900))\n\t}\n\tif s.SerialNumber != nil && len(*s.SerialNumber) < 9 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"SerialNumber\", 9))\n\t}\n\tif s.TokenCode != nil && len(*s.TokenCode) < 6 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"TokenCode\", 6))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetDurationSeconds sets the DurationSeconds field's value.\nfunc (s *GetSessionTokenInput) SetDurationSeconds(v int64) *GetSessionTokenInput {\n\ts.DurationSeconds = &v\n\treturn s\n}\n\n// SetSerialNumber sets the SerialNumber field's value.\nfunc (s *GetSessionTokenInput) SetSerialNumber(v string) *GetSessionTokenInput {\n\ts.SerialNumber = &v\n\treturn s\n}\n\n// SetTokenCode sets the TokenCode field's value.\nfunc (s *GetSessionTokenInput) SetTokenCode(v string) *GetSessionTokenInput {\n\ts.TokenCode = &v\n\treturn s\n}\n\n// Contains the response to a successful GetSessionToken request, including\n// temporary Amazon Web Services credentials that can be used to make Amazon\n// Web Services requests.\ntype GetSessionTokenOutput struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The temporary security credentials, which include an access key ID, a secret\n\t// access key, and a security (or session) token.\n\t//\n\t// The size of the security token that STS API operations return is not fixed.\n\t// We strongly recommend that you make no assumptions about the maximum size.\n\tCredentials *Credentials `type:\"structure\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetSessionTokenOutput) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s GetSessionTokenOutput) GoString() string {\n\treturn s.String()\n}\n\n// SetCredentials sets the Credentials field's value.\nfunc (s *GetSessionTokenOutput) SetCredentials(v *Credentials) *GetSessionTokenOutput {\n\ts.Credentials = v\n\treturn s\n}\n\n// A reference to the IAM managed policy that is passed as a session policy\n// for a role session or a federated user session.\ntype PolicyDescriptorType struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The Amazon Resource Name (ARN) of the IAM managed policy to use as a session\n\t// policy for the role. For more information about ARNs, see Amazon Resource\n\t// Names (ARNs) and Amazon Web Services Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)\n\t// in the Amazon Web Services General Reference.\n\tArn *string `locationName:\"arn\" min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PolicyDescriptorType) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s PolicyDescriptorType) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *PolicyDescriptorType) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"PolicyDescriptorType\"}\n\tif s.Arn != nil && len(*s.Arn) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Arn\", 20))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetArn sets the Arn field's value.\nfunc (s *PolicyDescriptorType) SetArn(v string) *PolicyDescriptorType {\n\ts.Arn = &v\n\treturn s\n}\n\n// Contains information about the provided context. This includes the signed\n// and encrypted trusted context assertion and the context provider ARN from\n// which the trusted context assertion was generated.\ntype ProvidedContext struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The signed and encrypted trusted context assertion generated by the context\n\t// provider. The trusted context assertion is signed and encrypted by Amazon\n\t// Web Services STS.\n\tContextAssertion *string `min:\"4\" type:\"string\"`\n\n\t// The context provider ARN from which the trusted context assertion was generated.\n\tProviderArn *string `min:\"20\" type:\"string\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ProvidedContext) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s ProvidedContext) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *ProvidedContext) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"ProvidedContext\"}\n\tif s.ContextAssertion != nil && len(*s.ContextAssertion) < 4 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ContextAssertion\", 4))\n\t}\n\tif s.ProviderArn != nil && len(*s.ProviderArn) < 20 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"ProviderArn\", 20))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetContextAssertion sets the ContextAssertion field's value.\nfunc (s *ProvidedContext) SetContextAssertion(v string) *ProvidedContext {\n\ts.ContextAssertion = &v\n\treturn s\n}\n\n// SetProviderArn sets the ProviderArn field's value.\nfunc (s *ProvidedContext) SetProviderArn(v string) *ProvidedContext {\n\ts.ProviderArn = &v\n\treturn s\n}\n\n// You can pass custom key-value pair attributes when you assume a role or federate\n// a user. These are called session tags. You can then use the session tags\n// to control access to resources. For more information, see Tagging Amazon\n// Web Services STS Sessions (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)\n// in the IAM User Guide.\ntype Tag struct {\n\t_ struct{} `type:\"structure\"`\n\n\t// The key for a session tag.\n\t//\n\t// You can pass up to 50 session tags. The plain text session tag keys can’t\n\t// exceed 128 characters. For these and additional limits, see IAM and STS Character\n\t// Limits (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length)\n\t// in the IAM User Guide.\n\t//\n\t// Key is a required field\n\tKey *string `min:\"1\" type:\"string\" required:\"true\"`\n\n\t// The value for a session tag.\n\t//\n\t// You can pass up to 50 session tags. The plain text session tag values can’t\n\t// exceed 256 characters. For these and additional limits, see IAM and STS Character\n\t// Limits (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length)\n\t// in the IAM User Guide.\n\t//\n\t// Value is a required field\n\tValue *string `type:\"string\" required:\"true\"`\n}\n\n// String returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Tag) String() string {\n\treturn awsutil.Prettify(s)\n}\n\n// GoString returns the string representation.\n//\n// API parameter values that are decorated as \"sensitive\" in the API will not\n// be included in the string output. The member name will be present, but the\n// value will be replaced with \"sensitive\".\nfunc (s Tag) GoString() string {\n\treturn s.String()\n}\n\n// Validate inspects the fields of the type to determine if they are valid.\nfunc (s *Tag) Validate() error {\n\tinvalidParams := request.ErrInvalidParams{Context: \"Tag\"}\n\tif s.Key == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Key\"))\n\t}\n\tif s.Key != nil && len(*s.Key) < 1 {\n\t\tinvalidParams.Add(request.NewErrParamMinLen(\"Key\", 1))\n\t}\n\tif s.Value == nil {\n\t\tinvalidParams.Add(request.NewErrParamRequired(\"Value\"))\n\t}\n\n\tif invalidParams.Len() > 0 {\n\t\treturn invalidParams\n\t}\n\treturn nil\n}\n\n// SetKey sets the Key field's value.\nfunc (s *Tag) SetKey(v string) *Tag {\n\ts.Key = &v\n\treturn s\n}\n\n// SetValue sets the Value field's value.\nfunc (s *Tag) SetValue(v string) *Tag {\n\ts.Value = &v\n\treturn s\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/sts/customizations.go",
    "content": "package sts\n\nimport \"github.com/aws/aws-sdk-go/aws/request\"\n\nfunc init() {\n\tinitRequest = customizeRequest\n}\n\nfunc customizeRequest(r *request.Request) {\n\tr.RetryErrorCodes = append(r.RetryErrorCodes, ErrCodeIDPCommunicationErrorException)\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/sts/doc.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\n// Package sts provides the client and types for making API\n// requests to AWS Security Token Service.\n//\n// Security Token Service (STS) enables you to request temporary, limited-privilege\n// credentials for users. This guide provides descriptions of the STS API. For\n// more information about using this service, see Temporary Security Credentials\n// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html).\n//\n// See https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15 for more information on this service.\n//\n// See sts package documentation for more information.\n// https://docs.aws.amazon.com/sdk-for-go/api/service/sts/\n//\n// # Using the Client\n//\n// To contact AWS Security Token Service with the SDK use the New function to create\n// a new service client. With that client you can make API requests to the service.\n// These clients are safe to use concurrently.\n//\n// See the SDK's documentation for more information on how to use the SDK.\n// https://docs.aws.amazon.com/sdk-for-go/api/\n//\n// See aws.Config documentation for more information on configuring SDK clients.\n// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config\n//\n// See the AWS Security Token Service client STS for more\n// information on creating client for this service.\n// https://docs.aws.amazon.com/sdk-for-go/api/service/sts/#New\npackage sts\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/sts/errors.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage sts\n\nconst (\n\n\t// ErrCodeExpiredTokenException for service response error code\n\t// \"ExpiredTokenException\".\n\t//\n\t// The web identity token that was passed is expired or is not valid. Get a\n\t// new identity token from the identity provider and then retry the request.\n\tErrCodeExpiredTokenException = \"ExpiredTokenException\"\n\n\t// ErrCodeIDPCommunicationErrorException for service response error code\n\t// \"IDPCommunicationError\".\n\t//\n\t// The request could not be fulfilled because the identity provider (IDP) that\n\t// was asked to verify the incoming identity token could not be reached. This\n\t// is often a transient error caused by network conditions. Retry the request\n\t// a limited number of times so that you don't exceed the request rate. If the\n\t// error persists, the identity provider might be down or not responding.\n\tErrCodeIDPCommunicationErrorException = \"IDPCommunicationError\"\n\n\t// ErrCodeIDPRejectedClaimException for service response error code\n\t// \"IDPRejectedClaim\".\n\t//\n\t// The identity provider (IdP) reported that authentication failed. This might\n\t// be because the claim is invalid.\n\t//\n\t// If this error is returned for the AssumeRoleWithWebIdentity operation, it\n\t// can also mean that the claim has expired or has been explicitly revoked.\n\tErrCodeIDPRejectedClaimException = \"IDPRejectedClaim\"\n\n\t// ErrCodeInvalidAuthorizationMessageException for service response error code\n\t// \"InvalidAuthorizationMessageException\".\n\t//\n\t// The error returned if the message passed to DecodeAuthorizationMessage was\n\t// invalid. This can happen if the token contains invalid characters, such as\n\t// linebreaks.\n\tErrCodeInvalidAuthorizationMessageException = \"InvalidAuthorizationMessageException\"\n\n\t// ErrCodeInvalidIdentityTokenException for service response error code\n\t// \"InvalidIdentityToken\".\n\t//\n\t// The web identity token that was passed could not be validated by Amazon Web\n\t// Services. Get a new identity token from the identity provider and then retry\n\t// the request.\n\tErrCodeInvalidIdentityTokenException = \"InvalidIdentityToken\"\n\n\t// ErrCodeMalformedPolicyDocumentException for service response error code\n\t// \"MalformedPolicyDocument\".\n\t//\n\t// The request was rejected because the policy document was malformed. The error\n\t// message describes the specific error.\n\tErrCodeMalformedPolicyDocumentException = \"MalformedPolicyDocument\"\n\n\t// ErrCodePackedPolicyTooLargeException for service response error code\n\t// \"PackedPolicyTooLarge\".\n\t//\n\t// The request was rejected because the total packed size of the session policies\n\t// and session tags combined was too large. An Amazon Web Services conversion\n\t// compresses the session policy document, session policy ARNs, and session\n\t// tags into a packed binary format that has a separate limit. The error message\n\t// indicates by percentage how close the policies and tags are to the upper\n\t// size limit. For more information, see Passing Session Tags in STS (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)\n\t// in the IAM User Guide.\n\t//\n\t// You could receive this error even though you meet other defined session policy\n\t// and session tag limits. For more information, see IAM and STS Entity Character\n\t// Limits (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-limits-entity-length)\n\t// in the IAM User Guide.\n\tErrCodePackedPolicyTooLargeException = \"PackedPolicyTooLarge\"\n\n\t// ErrCodeRegionDisabledException for service response error code\n\t// \"RegionDisabledException\".\n\t//\n\t// STS is not activated in the requested region for the account that is being\n\t// asked to generate credentials. The account administrator must use the IAM\n\t// console to activate STS in that region. For more information, see Activating\n\t// and Deactivating Amazon Web Services STS in an Amazon Web Services Region\n\t// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)\n\t// in the IAM User Guide.\n\tErrCodeRegionDisabledException = \"RegionDisabledException\"\n)\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/sts/service.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\npackage sts\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/client\"\n\t\"github.com/aws/aws-sdk-go/aws/client/metadata\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/aws/signer/v4\"\n\t\"github.com/aws/aws-sdk-go/private/protocol/query\"\n)\n\n// STS provides the API operation methods for making requests to\n// AWS Security Token Service. See this package's package overview docs\n// for details on the service.\n//\n// STS methods are safe to use concurrently. It is not safe to\n// modify mutate any of the struct's properties though.\ntype STS struct {\n\t*client.Client\n}\n\n// Used for custom client initialization logic\nvar initClient func(*client.Client)\n\n// Used for custom request initialization logic\nvar initRequest func(*request.Request)\n\n// Service information constants\nconst (\n\tServiceName = \"sts\"       // Name of service.\n\tEndpointsID = ServiceName // ID to lookup a service endpoint with.\n\tServiceID   = \"STS\"       // ServiceID is a unique identifier of a specific service.\n)\n\n// New creates a new instance of the STS client with a session.\n// If additional configuration is needed for the client instance use the optional\n// aws.Config parameter to add your extra config.\n//\n// Example:\n//\n//\tmySession := session.Must(session.NewSession())\n//\n//\t// Create a STS client from just a session.\n//\tsvc := sts.New(mySession)\n//\n//\t// Create a STS client with additional configuration\n//\tsvc := sts.New(mySession, aws.NewConfig().WithRegion(\"us-west-2\"))\nfunc New(p client.ConfigProvider, cfgs ...*aws.Config) *STS {\n\tc := p.ClientConfig(EndpointsID, cfgs...)\n\tif c.SigningNameDerived || len(c.SigningName) == 0 {\n\t\tc.SigningName = EndpointsID\n\t\t// No Fallback\n\t}\n\treturn newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName, c.ResolvedRegion)\n}\n\n// newClient creates, initializes and returns a new service client instance.\nfunc newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint, signingRegion, signingName, resolvedRegion string) *STS {\n\tsvc := &STS{\n\t\tClient: client.New(\n\t\t\tcfg,\n\t\t\tmetadata.ClientInfo{\n\t\t\t\tServiceName:    ServiceName,\n\t\t\t\tServiceID:      ServiceID,\n\t\t\t\tSigningName:    signingName,\n\t\t\t\tSigningRegion:  signingRegion,\n\t\t\t\tPartitionID:    partitionID,\n\t\t\t\tEndpoint:       endpoint,\n\t\t\t\tAPIVersion:     \"2011-06-15\",\n\t\t\t\tResolvedRegion: resolvedRegion,\n\t\t\t},\n\t\t\thandlers,\n\t\t),\n\t}\n\n\t// Handlers\n\tsvc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler)\n\tsvc.Handlers.Build.PushBackNamed(query.BuildHandler)\n\tsvc.Handlers.Unmarshal.PushBackNamed(query.UnmarshalHandler)\n\tsvc.Handlers.UnmarshalMeta.PushBackNamed(query.UnmarshalMetaHandler)\n\tsvc.Handlers.UnmarshalError.PushBackNamed(query.UnmarshalErrorHandler)\n\n\t// Run custom client initialization if present\n\tif initClient != nil {\n\t\tinitClient(svc.Client)\n\t}\n\n\treturn svc\n}\n\n// newRequest creates a new request for a STS operation and runs any\n// custom request initialization.\nfunc (c *STS) newRequest(op *request.Operation, params, data interface{}) *request.Request {\n\treq := c.NewRequest(op, params, data)\n\n\t// Run custom request initialization if present\n\tif initRequest != nil {\n\t\tinitRequest(req)\n\t}\n\n\treturn req\n}\n"
  },
  {
    "path": "vendor/github.com/aws/aws-sdk-go/service/sts/stsiface/interface.go",
    "content": "// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.\n\n// Package stsiface provides an interface to enable mocking the AWS Security Token Service service client\n// for testing your code.\n//\n// It is important to note that this interface will have breaking changes\n// when the service model is updated and adds new API operations, paginators,\n// and waiters.\npackage stsiface\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/service/sts\"\n)\n\n// STSAPI provides an interface to enable mocking the\n// sts.STS service client's API operation,\n// paginators, and waiters. This make unit testing your code that calls out\n// to the SDK's service client's calls easier.\n//\n// The best way to use this interface is so the SDK's service client's calls\n// can be stubbed out for unit testing your code with the SDK without needing\n// to inject custom request handlers into the SDK's request pipeline.\n//\n//\t// myFunc uses an SDK service client to make a request to\n//\t// AWS Security Token Service.\n//\tfunc myFunc(svc stsiface.STSAPI) bool {\n//\t    // Make svc.AssumeRole request\n//\t}\n//\n//\tfunc main() {\n//\t    sess := session.New()\n//\t    svc := sts.New(sess)\n//\n//\t    myFunc(svc)\n//\t}\n//\n// In your _test.go file:\n//\n//\t// Define a mock struct to be used in your unit tests of myFunc.\n//\ttype mockSTSClient struct {\n//\t    stsiface.STSAPI\n//\t}\n//\tfunc (m *mockSTSClient) AssumeRole(input *sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error) {\n//\t    // mock response/functionality\n//\t}\n//\n//\tfunc TestMyFunc(t *testing.T) {\n//\t    // Setup Test\n//\t    mockSvc := &mockSTSClient{}\n//\n//\t    myfunc(mockSvc)\n//\n//\t    // Verify myFunc's functionality\n//\t}\n//\n// It is important to note that this interface will have breaking changes\n// when the service model is updated and adds new API operations, paginators,\n// and waiters. Its suggested to use the pattern above for testing, or using\n// tooling to generate mocks to satisfy the interfaces.\ntype STSAPI interface {\n\tAssumeRole(*sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error)\n\tAssumeRoleWithContext(aws.Context, *sts.AssumeRoleInput, ...request.Option) (*sts.AssumeRoleOutput, error)\n\tAssumeRoleRequest(*sts.AssumeRoleInput) (*request.Request, *sts.AssumeRoleOutput)\n\n\tAssumeRoleWithSAML(*sts.AssumeRoleWithSAMLInput) (*sts.AssumeRoleWithSAMLOutput, error)\n\tAssumeRoleWithSAMLWithContext(aws.Context, *sts.AssumeRoleWithSAMLInput, ...request.Option) (*sts.AssumeRoleWithSAMLOutput, error)\n\tAssumeRoleWithSAMLRequest(*sts.AssumeRoleWithSAMLInput) (*request.Request, *sts.AssumeRoleWithSAMLOutput)\n\n\tAssumeRoleWithWebIdentity(*sts.AssumeRoleWithWebIdentityInput) (*sts.AssumeRoleWithWebIdentityOutput, error)\n\tAssumeRoleWithWebIdentityWithContext(aws.Context, *sts.AssumeRoleWithWebIdentityInput, ...request.Option) (*sts.AssumeRoleWithWebIdentityOutput, error)\n\tAssumeRoleWithWebIdentityRequest(*sts.AssumeRoleWithWebIdentityInput) (*request.Request, *sts.AssumeRoleWithWebIdentityOutput)\n\n\tDecodeAuthorizationMessage(*sts.DecodeAuthorizationMessageInput) (*sts.DecodeAuthorizationMessageOutput, error)\n\tDecodeAuthorizationMessageWithContext(aws.Context, *sts.DecodeAuthorizationMessageInput, ...request.Option) (*sts.DecodeAuthorizationMessageOutput, error)\n\tDecodeAuthorizationMessageRequest(*sts.DecodeAuthorizationMessageInput) (*request.Request, *sts.DecodeAuthorizationMessageOutput)\n\n\tGetAccessKeyInfo(*sts.GetAccessKeyInfoInput) (*sts.GetAccessKeyInfoOutput, error)\n\tGetAccessKeyInfoWithContext(aws.Context, *sts.GetAccessKeyInfoInput, ...request.Option) (*sts.GetAccessKeyInfoOutput, error)\n\tGetAccessKeyInfoRequest(*sts.GetAccessKeyInfoInput) (*request.Request, *sts.GetAccessKeyInfoOutput)\n\n\tGetCallerIdentity(*sts.GetCallerIdentityInput) (*sts.GetCallerIdentityOutput, error)\n\tGetCallerIdentityWithContext(aws.Context, *sts.GetCallerIdentityInput, ...request.Option) (*sts.GetCallerIdentityOutput, error)\n\tGetCallerIdentityRequest(*sts.GetCallerIdentityInput) (*request.Request, *sts.GetCallerIdentityOutput)\n\n\tGetFederationToken(*sts.GetFederationTokenInput) (*sts.GetFederationTokenOutput, error)\n\tGetFederationTokenWithContext(aws.Context, *sts.GetFederationTokenInput, ...request.Option) (*sts.GetFederationTokenOutput, error)\n\tGetFederationTokenRequest(*sts.GetFederationTokenInput) (*request.Request, *sts.GetFederationTokenOutput)\n\n\tGetSessionToken(*sts.GetSessionTokenInput) (*sts.GetSessionTokenOutput, error)\n\tGetSessionTokenWithContext(aws.Context, *sts.GetSessionTokenInput, ...request.Option) (*sts.GetSessionTokenOutput, error)\n\tGetSessionTokenRequest(*sts.GetSessionTokenInput) (*request.Request, *sts.GetSessionTokenOutput)\n}\n\nvar _ STSAPI = (*sts.STS)(nil)\n"
  },
  {
    "path": "vendor/github.com/cenkalti/backoff/v3/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n"
  },
  {
    "path": "vendor/github.com/cenkalti/backoff/v3/.travis.yml",
    "content": "language: go\ngo:\n  - 1.7\n  - 1.x\n  - tip\nbefore_install:\n  - go get github.com/mattn/goveralls\n  - go get golang.org/x/tools/cmd/cover\nscript:\n  - $HOME/gopath/bin/goveralls -service=travis-ci\n"
  },
  {
    "path": "vendor/github.com/cenkalti/backoff/v3/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Cenk Altı\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject 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, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/cenkalti/backoff/v3/README.md",
    "content": "# Exponential Backoff [![GoDoc][godoc image]][godoc] [![Build Status][travis image]][travis] [![Coverage Status][coveralls image]][coveralls]\n\nThis is a Go port of the exponential backoff algorithm from [Google's HTTP Client Library for Java][google-http-java-client].\n\n[Exponential backoff][exponential backoff wiki]\nis an algorithm that uses feedback to multiplicatively decrease the rate of some process,\nin order to gradually find an acceptable rate.\nThe retries exponentially increase and stop increasing when a certain threshold is met.\n\n## Usage\n\nImport path is `github.com/cenkalti/backoff/v3`. Please note the version part at the end.\n\ngodoc.org does not support modules yet,\nso you can use https://godoc.org/gopkg.in/cenkalti/backoff.v3 to view the documentation.\n\n## Contributing\n\n* I would like to keep this library as small as possible.\n* Please don't send a PR without opening an issue and discussing it first.\n* If proposed change is not a common use case, I will probably not accept it.\n\n[godoc]: https://godoc.org/github.com/cenkalti/backoff\n[godoc image]: https://godoc.org/github.com/cenkalti/backoff?status.png\n[travis]: https://travis-ci.org/cenkalti/backoff\n[travis image]: https://travis-ci.org/cenkalti/backoff.png?branch=master\n[coveralls]: https://coveralls.io/github/cenkalti/backoff?branch=master\n[coveralls image]: https://coveralls.io/repos/github/cenkalti/backoff/badge.svg?branch=master\n\n[google-http-java-client]: https://github.com/google/google-http-java-client/blob/da1aa993e90285ec18579f1553339b00e19b3ab5/google-http-client/src/main/java/com/google/api/client/util/ExponentialBackOff.java\n[exponential backoff wiki]: http://en.wikipedia.org/wiki/Exponential_backoff\n\n[advanced example]: https://godoc.org/github.com/cenkalti/backoff#example_\n"
  },
  {
    "path": "vendor/github.com/cenkalti/backoff/v3/backoff.go",
    "content": "// Package backoff implements backoff algorithms for retrying operations.\n//\n// Use Retry function for retrying operations that may fail.\n// If Retry does not meet your needs,\n// copy/paste the function into your project and modify as you wish.\n//\n// There is also Ticker type similar to time.Ticker.\n// You can use it if you need to work with channels.\n//\n// See Examples section below for usage examples.\npackage backoff\n\nimport \"time\"\n\n// BackOff is a backoff policy for retrying an operation.\ntype BackOff interface {\n\t// NextBackOff returns the duration to wait before retrying the operation,\n\t// or backoff. Stop to indicate that no more retries should be made.\n\t//\n\t// Example usage:\n\t//\n\t// \tduration := backoff.NextBackOff();\n\t// \tif (duration == backoff.Stop) {\n\t// \t\t// Do not retry operation.\n\t// \t} else {\n\t// \t\t// Sleep for duration and retry operation.\n\t// \t}\n\t//\n\tNextBackOff() time.Duration\n\n\t// Reset to initial state.\n\tReset()\n}\n\n// Stop indicates that no more retries should be made for use in NextBackOff().\nconst Stop time.Duration = -1\n\n// ZeroBackOff is a fixed backoff policy whose backoff time is always zero,\n// meaning that the operation is retried immediately without waiting, indefinitely.\ntype ZeroBackOff struct{}\n\nfunc (b *ZeroBackOff) Reset() {}\n\nfunc (b *ZeroBackOff) NextBackOff() time.Duration { return 0 }\n\n// StopBackOff is a fixed backoff policy that always returns backoff.Stop for\n// NextBackOff(), meaning that the operation should never be retried.\ntype StopBackOff struct{}\n\nfunc (b *StopBackOff) Reset() {}\n\nfunc (b *StopBackOff) NextBackOff() time.Duration { return Stop }\n\n// ConstantBackOff is a backoff policy that always returns the same backoff delay.\n// This is in contrast to an exponential backoff policy,\n// which returns a delay that grows longer as you call NextBackOff() over and over again.\ntype ConstantBackOff struct {\n\tInterval time.Duration\n}\n\nfunc (b *ConstantBackOff) Reset()                     {}\nfunc (b *ConstantBackOff) NextBackOff() time.Duration { return b.Interval }\n\nfunc NewConstantBackOff(d time.Duration) *ConstantBackOff {\n\treturn &ConstantBackOff{Interval: d}\n}\n"
  },
  {
    "path": "vendor/github.com/cenkalti/backoff/v3/context.go",
    "content": "package backoff\n\nimport (\n\t\"context\"\n\t\"time\"\n)\n\n// BackOffContext is a backoff policy that stops retrying after the context\n// is canceled.\ntype BackOffContext interface { // nolint: golint\n\tBackOff\n\tContext() context.Context\n}\n\ntype backOffContext struct {\n\tBackOff\n\tctx context.Context\n}\n\n// WithContext returns a BackOffContext with context ctx\n//\n// ctx must not be nil\nfunc WithContext(b BackOff, ctx context.Context) BackOffContext { // nolint: golint\n\tif ctx == nil {\n\t\tpanic(\"nil context\")\n\t}\n\n\tif b, ok := b.(*backOffContext); ok {\n\t\treturn &backOffContext{\n\t\t\tBackOff: b.BackOff,\n\t\t\tctx:     ctx,\n\t\t}\n\t}\n\n\treturn &backOffContext{\n\t\tBackOff: b,\n\t\tctx:     ctx,\n\t}\n}\n\nfunc getContext(b BackOff) context.Context {\n\tif cb, ok := b.(BackOffContext); ok {\n\t\treturn cb.Context()\n\t}\n\tif tb, ok := b.(*backOffTries); ok {\n\t\treturn getContext(tb.delegate)\n\t}\n\treturn context.Background()\n}\n\nfunc (b *backOffContext) Context() context.Context {\n\treturn b.ctx\n}\n\nfunc (b *backOffContext) NextBackOff() time.Duration {\n\tselect {\n\tcase <-b.ctx.Done():\n\t\treturn Stop\n\tdefault:\n\t}\n\tnext := b.BackOff.NextBackOff()\n\tif deadline, ok := b.ctx.Deadline(); ok && deadline.Sub(time.Now()) < next { // nolint: gosimple\n\t\treturn Stop\n\t}\n\treturn next\n}\n"
  },
  {
    "path": "vendor/github.com/cenkalti/backoff/v3/exponential.go",
    "content": "package backoff\n\nimport (\n\t\"math/rand\"\n\t\"time\"\n)\n\n/*\nExponentialBackOff is a backoff implementation that increases the backoff\nperiod for each retry attempt using a randomization function that grows exponentially.\n\nNextBackOff() is calculated using the following formula:\n\n randomized interval =\n     RetryInterval * (random value in range [1 - RandomizationFactor, 1 + RandomizationFactor])\n\nIn other words NextBackOff() will range between the randomization factor\npercentage below and above the retry interval.\n\nFor example, given the following parameters:\n\n RetryInterval = 2\n RandomizationFactor = 0.5\n Multiplier = 2\n\nthe actual backoff period used in the next retry attempt will range between 1 and 3 seconds,\nmultiplied by the exponential, that is, between 2 and 6 seconds.\n\nNote: MaxInterval caps the RetryInterval and not the randomized interval.\n\nIf the time elapsed since an ExponentialBackOff instance is created goes past the\nMaxElapsedTime, then the method NextBackOff() starts returning backoff.Stop.\n\nThe elapsed time can be reset by calling Reset().\n\nExample: Given the following default arguments, for 10 tries the sequence will be,\nand assuming we go over the MaxElapsedTime on the 10th try:\n\n Request #  RetryInterval (seconds)  Randomized Interval (seconds)\n\n  1          0.5                     [0.25,   0.75]\n  2          0.75                    [0.375,  1.125]\n  3          1.125                   [0.562,  1.687]\n  4          1.687                   [0.8435, 2.53]\n  5          2.53                    [1.265,  3.795]\n  6          3.795                   [1.897,  5.692]\n  7          5.692                   [2.846,  8.538]\n  8          8.538                   [4.269, 12.807]\n  9         12.807                   [6.403, 19.210]\n 10         19.210                   backoff.Stop\n\nNote: Implementation is not thread-safe.\n*/\ntype ExponentialBackOff struct {\n\tInitialInterval     time.Duration\n\tRandomizationFactor float64\n\tMultiplier          float64\n\tMaxInterval         time.Duration\n\t// After MaxElapsedTime the ExponentialBackOff stops.\n\t// It never stops if MaxElapsedTime == 0.\n\tMaxElapsedTime time.Duration\n\tClock          Clock\n\n\tcurrentInterval time.Duration\n\tstartTime       time.Time\n}\n\n// Clock is an interface that returns current time for BackOff.\ntype Clock interface {\n\tNow() time.Time\n}\n\n// Default values for ExponentialBackOff.\nconst (\n\tDefaultInitialInterval     = 500 * time.Millisecond\n\tDefaultRandomizationFactor = 0.5\n\tDefaultMultiplier          = 1.5\n\tDefaultMaxInterval         = 60 * time.Second\n\tDefaultMaxElapsedTime      = 15 * time.Minute\n)\n\n// NewExponentialBackOff creates an instance of ExponentialBackOff using default values.\nfunc NewExponentialBackOff() *ExponentialBackOff {\n\tb := &ExponentialBackOff{\n\t\tInitialInterval:     DefaultInitialInterval,\n\t\tRandomizationFactor: DefaultRandomizationFactor,\n\t\tMultiplier:          DefaultMultiplier,\n\t\tMaxInterval:         DefaultMaxInterval,\n\t\tMaxElapsedTime:      DefaultMaxElapsedTime,\n\t\tClock:               SystemClock,\n\t}\n\tb.Reset()\n\treturn b\n}\n\ntype systemClock struct{}\n\nfunc (t systemClock) Now() time.Time {\n\treturn time.Now()\n}\n\n// SystemClock implements Clock interface that uses time.Now().\nvar SystemClock = systemClock{}\n\n// Reset the interval back to the initial retry interval and restarts the timer.\n// Reset must be called before using b.\nfunc (b *ExponentialBackOff) Reset() {\n\tb.currentInterval = b.InitialInterval\n\tb.startTime = b.Clock.Now()\n}\n\n// NextBackOff calculates the next backoff interval using the formula:\n// \tRandomized interval = RetryInterval * (1 ± RandomizationFactor)\nfunc (b *ExponentialBackOff) NextBackOff() time.Duration {\n\t// Make sure we have not gone over the maximum elapsed time.\n\tif b.MaxElapsedTime != 0 && b.GetElapsedTime() > b.MaxElapsedTime {\n\t\treturn Stop\n\t}\n\tdefer b.incrementCurrentInterval()\n\treturn getRandomValueFromInterval(b.RandomizationFactor, rand.Float64(), b.currentInterval)\n}\n\n// GetElapsedTime returns the elapsed time since an ExponentialBackOff instance\n// is created and is reset when Reset() is called.\n//\n// The elapsed time is computed using time.Now().UnixNano(). It is\n// safe to call even while the backoff policy is used by a running\n// ticker.\nfunc (b *ExponentialBackOff) GetElapsedTime() time.Duration {\n\treturn b.Clock.Now().Sub(b.startTime)\n}\n\n// Increments the current interval by multiplying it with the multiplier.\nfunc (b *ExponentialBackOff) incrementCurrentInterval() {\n\t// Check for overflow, if overflow is detected set the current interval to the max interval.\n\tif float64(b.currentInterval) >= float64(b.MaxInterval)/b.Multiplier {\n\t\tb.currentInterval = b.MaxInterval\n\t} else {\n\t\tb.currentInterval = time.Duration(float64(b.currentInterval) * b.Multiplier)\n\t}\n}\n\n// Returns a random value from the following interval:\n// \t[randomizationFactor * currentInterval, randomizationFactor * currentInterval].\nfunc getRandomValueFromInterval(randomizationFactor, random float64, currentInterval time.Duration) time.Duration {\n\tvar delta = randomizationFactor * float64(currentInterval)\n\tvar minInterval = float64(currentInterval) - delta\n\tvar maxInterval = float64(currentInterval) + delta\n\n\t// Get a random value from the range [minInterval, maxInterval].\n\t// The formula used below has a +1 because if the minInterval is 1 and the maxInterval is 3 then\n\t// we want a 33% chance for selecting either 1, 2 or 3.\n\treturn time.Duration(minInterval + (random * (maxInterval - minInterval + 1)))\n}\n"
  },
  {
    "path": "vendor/github.com/cenkalti/backoff/v3/retry.go",
    "content": "package backoff\n\nimport \"time\"\n\n// An Operation is executing by Retry() or RetryNotify().\n// The operation will be retried using a backoff policy if it returns an error.\ntype Operation func() error\n\n// Notify is a notify-on-error function. It receives an operation error and\n// backoff delay if the operation failed (with an error).\n//\n// NOTE that if the backoff policy stated to stop retrying,\n// the notify function isn't called.\ntype Notify func(error, time.Duration)\n\n// Retry the operation o until it does not return error or BackOff stops.\n// o is guaranteed to be run at least once.\n//\n// If o returns a *PermanentError, the operation is not retried, and the\n// wrapped error is returned.\n//\n// Retry sleeps the goroutine for the duration returned by BackOff after a\n// failed operation returns.\nfunc Retry(o Operation, b BackOff) error {\n\treturn RetryNotify(o, b, nil)\n}\n\n// RetryNotify calls notify function with the error and wait duration\n// for each failed attempt before sleep.\nfunc RetryNotify(operation Operation, b BackOff, notify Notify) error {\n\treturn RetryNotifyWithTimer(operation, b, notify, nil)\n}\n\n// RetryNotifyWithTimer calls notify function with the error and wait duration using the given Timer\n// for each failed attempt before sleep.\n// A default timer that uses system timer is used when nil is passed.\nfunc RetryNotifyWithTimer(operation Operation, b BackOff, notify Notify, t Timer) error {\n\tvar err error\n\tvar next time.Duration\n\tif t == nil {\n\t\tt = &defaultTimer{}\n\t}\n\n\tdefer func() {\n\t\tt.Stop()\n\t}()\n\n\tctx := getContext(b)\n\n\tb.Reset()\n\tfor {\n\t\tif err = operation(); err == nil {\n\t\t\treturn nil\n\t\t}\n\n\t\tif permanent, ok := err.(*PermanentError); ok {\n\t\t\treturn permanent.Err\n\t\t}\n\n\t\tif next = b.NextBackOff(); next == Stop {\n\t\t\treturn err\n\t\t}\n\n\t\tif notify != nil {\n\t\t\tnotify(err, next)\n\t\t}\n\n\t\tt.Start(next)\n\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\treturn ctx.Err()\n\t\tcase <-t.C():\n\t\t}\n\t}\n}\n\n// PermanentError signals that the operation should not be retried.\ntype PermanentError struct {\n\tErr error\n}\n\nfunc (e *PermanentError) Error() string {\n\treturn e.Err.Error()\n}\n\nfunc (e *PermanentError) Unwrap() error {\n\treturn e.Err\n}\n\n// Permanent wraps the given err in a *PermanentError.\nfunc Permanent(err error) *PermanentError {\n\treturn &PermanentError{\n\t\tErr: err,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/cenkalti/backoff/v3/ticker.go",
    "content": "package backoff\n\nimport (\n\t\"context\"\n\t\"sync\"\n\t\"time\"\n)\n\n// Ticker holds a channel that delivers `ticks' of a clock at times reported by a BackOff.\n//\n// Ticks will continue to arrive when the previous operation is still running,\n// so operations that take a while to fail could run in quick succession.\ntype Ticker struct {\n\tC        <-chan time.Time\n\tc        chan time.Time\n\tb        BackOff\n\tctx      context.Context\n\ttimer    Timer\n\tstop     chan struct{}\n\tstopOnce sync.Once\n}\n\n// NewTicker returns a new Ticker containing a channel that will send\n// the time at times specified by the BackOff argument. Ticker is\n// guaranteed to tick at least once.  The channel is closed when Stop\n// method is called or BackOff stops. It is not safe to manipulate the\n// provided backoff policy (notably calling NextBackOff or Reset)\n// while the ticker is running.\nfunc NewTicker(b BackOff) *Ticker {\n\treturn NewTickerWithTimer(b, &defaultTimer{})\n}\n\n// NewTickerWithTimer returns a new Ticker with a custom timer.\n// A default timer that uses system timer is used when nil is passed.\nfunc NewTickerWithTimer(b BackOff, timer Timer) *Ticker {\n\tc := make(chan time.Time)\n\tt := &Ticker{\n\t\tC:     c,\n\t\tc:     c,\n\t\tb:     b,\n\t\tctx:   getContext(b),\n\t\ttimer: timer,\n\t\tstop:  make(chan struct{}),\n\t}\n\tt.b.Reset()\n\tgo t.run()\n\treturn t\n}\n\n// Stop turns off a ticker. After Stop, no more ticks will be sent.\nfunc (t *Ticker) Stop() {\n\tt.stopOnce.Do(func() { close(t.stop) })\n}\n\nfunc (t *Ticker) run() {\n\tc := t.c\n\tdefer close(c)\n\n\t// Ticker is guaranteed to tick at least once.\n\tafterC := t.send(time.Now())\n\n\tfor {\n\t\tif afterC == nil {\n\t\t\treturn\n\t\t}\n\n\t\tselect {\n\t\tcase tick := <-afterC:\n\t\t\tafterC = t.send(tick)\n\t\tcase <-t.stop:\n\t\t\tt.c = nil // Prevent future ticks from being sent to the channel.\n\t\t\treturn\n\t\tcase <-t.ctx.Done():\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (t *Ticker) send(tick time.Time) <-chan time.Time {\n\tselect {\n\tcase t.c <- tick:\n\tcase <-t.stop:\n\t\treturn nil\n\t}\n\n\tnext := t.b.NextBackOff()\n\tif next == Stop {\n\t\tt.Stop()\n\t\treturn nil\n\t}\n\n\tt.timer.Start(next)\n\treturn t.timer.C()\n}\n"
  },
  {
    "path": "vendor/github.com/cenkalti/backoff/v3/timer.go",
    "content": "package backoff\n\nimport \"time\"\n\ntype Timer interface {\n\tStart(duration time.Duration)\n\tStop()\n\tC() <-chan time.Time\n}\n\n// defaultTimer implements Timer interface using time.Timer\ntype defaultTimer struct {\n\ttimer *time.Timer\n}\n\n// C returns the timers channel which receives the current time when the timer fires.\nfunc (t *defaultTimer) C() <-chan time.Time {\n\treturn t.timer.C\n}\n\n// Start starts the timer to fire after the given duration\nfunc (t *defaultTimer) Start(duration time.Duration) {\n\tif t.timer == nil {\n\t\tt.timer = time.NewTimer(duration)\n\t} else {\n\t\tt.timer.Reset(duration)\n\t}\n}\n\n// Stop is called when the timer is not used anymore and resources may be freed.\nfunc (t *defaultTimer) Stop() {\n\tif t.timer != nil {\n\t\tt.timer.Stop()\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/cenkalti/backoff/v3/tries.go",
    "content": "package backoff\n\nimport \"time\"\n\n/*\nWithMaxRetries creates a wrapper around another BackOff, which will\nreturn Stop if NextBackOff() has been called too many times since\nthe last time Reset() was called\n\nNote: Implementation is not thread-safe.\n*/\nfunc WithMaxRetries(b BackOff, max uint64) BackOff {\n\treturn &backOffTries{delegate: b, maxTries: max}\n}\n\ntype backOffTries struct {\n\tdelegate BackOff\n\tmaxTries uint64\n\tnumTries uint64\n}\n\nfunc (b *backOffTries) NextBackOff() time.Duration {\n\tif b.maxTries > 0 {\n\t\tif b.maxTries <= b.numTries {\n\t\t\treturn Stop\n\t\t}\n\t\tb.numTries++\n\t}\n\treturn b.delegate.NextBackOff()\n}\n\nfunc (b *backOffTries) Reset() {\n\tb.numTries = 0\n\tb.delegate.Reset()\n}\n"
  },
  {
    "path": "vendor/github.com/coreos/go-semver/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/coreos/go-semver/NOTICE",
    "content": "CoreOS Project\nCopyright 2018 CoreOS, Inc\n\nThis product includes software developed at CoreOS, Inc.\n(http://www.coreos.com/).\n"
  },
  {
    "path": "vendor/github.com/coreos/go-semver/semver/semver.go",
    "content": "// Copyright 2013-2015 CoreOS, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Semantic Versions http://semver.org\npackage semver\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype Version struct {\n\tMajor      int64\n\tMinor      int64\n\tPatch      int64\n\tPreRelease PreRelease\n\tMetadata   string\n}\n\ntype PreRelease string\n\nfunc splitOff(input *string, delim string) (val string) {\n\tparts := strings.SplitN(*input, delim, 2)\n\n\tif len(parts) == 2 {\n\t\t*input = parts[0]\n\t\tval = parts[1]\n\t}\n\n\treturn val\n}\n\nfunc New(version string) *Version {\n\treturn Must(NewVersion(version))\n}\n\nfunc NewVersion(version string) (*Version, error) {\n\tv := Version{}\n\n\tif err := v.Set(version); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &v, nil\n}\n\n// Must is a helper for wrapping NewVersion and will panic if err is not nil.\nfunc Must(v *Version, err error) *Version {\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn v\n}\n\n// Set parses and updates v from the given version string. Implements flag.Value\nfunc (v *Version) Set(version string) error {\n\tmetadata := splitOff(&version, \"+\")\n\tpreRelease := PreRelease(splitOff(&version, \"-\"))\n\tdotParts := strings.SplitN(version, \".\", 3)\n\n\tif len(dotParts) != 3 {\n\t\treturn fmt.Errorf(\"%s is not in dotted-tri format\", version)\n\t}\n\n\tif err := validateIdentifier(string(preRelease)); err != nil {\n\t\treturn fmt.Errorf(\"failed to validate pre-release: %v\", err)\n\t}\n\n\tif err := validateIdentifier(metadata); err != nil {\n\t\treturn fmt.Errorf(\"failed to validate metadata: %v\", err)\n\t}\n\n\tparsed := make([]int64, 3)\n\n\tfor i, v := range dotParts[:3] {\n\t\tval, err := strconv.ParseInt(v, 10, 64)\n\t\tparsed[i] = val\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tv.Metadata = metadata\n\tv.PreRelease = preRelease\n\tv.Major = parsed[0]\n\tv.Minor = parsed[1]\n\tv.Patch = parsed[2]\n\treturn nil\n}\n\nfunc (v Version) String() string {\n\tvar buffer bytes.Buffer\n\n\tfmt.Fprintf(&buffer, \"%d.%d.%d\", v.Major, v.Minor, v.Patch)\n\n\tif v.PreRelease != \"\" {\n\t\tfmt.Fprintf(&buffer, \"-%s\", v.PreRelease)\n\t}\n\n\tif v.Metadata != \"\" {\n\t\tfmt.Fprintf(&buffer, \"+%s\", v.Metadata)\n\t}\n\n\treturn buffer.String()\n}\n\nfunc (v *Version) UnmarshalYAML(unmarshal func(interface{}) error) error {\n\tvar data string\n\tif err := unmarshal(&data); err != nil {\n\t\treturn err\n\t}\n\treturn v.Set(data)\n}\n\nfunc (v Version) MarshalJSON() ([]byte, error) {\n\treturn []byte(`\"` + v.String() + `\"`), nil\n}\n\nfunc (v *Version) UnmarshalJSON(data []byte) error {\n\tl := len(data)\n\tif l == 0 || string(data) == `\"\"` {\n\t\treturn nil\n\t}\n\tif l < 2 || data[0] != '\"' || data[l-1] != '\"' {\n\t\treturn errors.New(\"invalid semver string\")\n\t}\n\treturn v.Set(string(data[1 : l-1]))\n}\n\n// Compare tests if v is less than, equal to, or greater than versionB,\n// returning -1, 0, or +1 respectively.\nfunc (v Version) Compare(versionB Version) int {\n\tif cmp := recursiveCompare(v.Slice(), versionB.Slice()); cmp != 0 {\n\t\treturn cmp\n\t}\n\treturn preReleaseCompare(v, versionB)\n}\n\n// Equal tests if v is equal to versionB.\nfunc (v Version) Equal(versionB Version) bool {\n\treturn v.Compare(versionB) == 0\n}\n\n// LessThan tests if v is less than versionB.\nfunc (v Version) LessThan(versionB Version) bool {\n\treturn v.Compare(versionB) < 0\n}\n\n// Slice converts the comparable parts of the semver into a slice of integers.\nfunc (v Version) Slice() []int64 {\n\treturn []int64{v.Major, v.Minor, v.Patch}\n}\n\nfunc (p PreRelease) Slice() []string {\n\tpreRelease := string(p)\n\treturn strings.Split(preRelease, \".\")\n}\n\nfunc preReleaseCompare(versionA Version, versionB Version) int {\n\ta := versionA.PreRelease\n\tb := versionB.PreRelease\n\n\t/* Handle the case where if two versions are otherwise equal it is the\n\t * one without a PreRelease that is greater */\n\tif len(a) == 0 && (len(b) > 0) {\n\t\treturn 1\n\t} else if len(b) == 0 && (len(a) > 0) {\n\t\treturn -1\n\t}\n\n\t// If there is a prerelease, check and compare each part.\n\treturn recursivePreReleaseCompare(a.Slice(), b.Slice())\n}\n\nfunc recursiveCompare(versionA []int64, versionB []int64) int {\n\tif len(versionA) == 0 {\n\t\treturn 0\n\t}\n\n\ta := versionA[0]\n\tb := versionB[0]\n\n\tif a > b {\n\t\treturn 1\n\t} else if a < b {\n\t\treturn -1\n\t}\n\n\treturn recursiveCompare(versionA[1:], versionB[1:])\n}\n\nfunc recursivePreReleaseCompare(versionA []string, versionB []string) int {\n\t// A larger set of pre-release fields has a higher precedence than a smaller set,\n\t// if all of the preceding identifiers are equal.\n\tif len(versionA) == 0 {\n\t\tif len(versionB) > 0 {\n\t\t\treturn -1\n\t\t}\n\t\treturn 0\n\t} else if len(versionB) == 0 {\n\t\t// We're longer than versionB so return 1.\n\t\treturn 1\n\t}\n\n\ta := versionA[0]\n\tb := versionB[0]\n\n\taInt := false\n\tbInt := false\n\n\taI, err := strconv.Atoi(versionA[0])\n\tif err == nil {\n\t\taInt = true\n\t}\n\n\tbI, err := strconv.Atoi(versionB[0])\n\tif err == nil {\n\t\tbInt = true\n\t}\n\n\t// Numeric identifiers always have lower precedence than non-numeric identifiers.\n\tif aInt && !bInt {\n\t\treturn -1\n\t} else if !aInt && bInt {\n\t\treturn 1\n\t}\n\n\t// Handle Integer Comparison\n\tif aInt && bInt {\n\t\tif aI > bI {\n\t\t\treturn 1\n\t\t} else if aI < bI {\n\t\t\treturn -1\n\t\t}\n\t}\n\n\t// Handle String Comparison\n\tif a > b {\n\t\treturn 1\n\t} else if a < b {\n\t\treturn -1\n\t}\n\n\treturn recursivePreReleaseCompare(versionA[1:], versionB[1:])\n}\n\n// BumpMajor increments the Major field by 1 and resets all other fields to their default values\nfunc (v *Version) BumpMajor() {\n\tv.Major += 1\n\tv.Minor = 0\n\tv.Patch = 0\n\tv.PreRelease = PreRelease(\"\")\n\tv.Metadata = \"\"\n}\n\n// BumpMinor increments the Minor field by 1 and resets all other fields to their default values\nfunc (v *Version) BumpMinor() {\n\tv.Minor += 1\n\tv.Patch = 0\n\tv.PreRelease = PreRelease(\"\")\n\tv.Metadata = \"\"\n}\n\n// BumpPatch increments the Patch field by 1 and resets all other fields to their default values\nfunc (v *Version) BumpPatch() {\n\tv.Patch += 1\n\tv.PreRelease = PreRelease(\"\")\n\tv.Metadata = \"\"\n}\n\n// validateIdentifier makes sure the provided identifier satisfies semver spec\nfunc validateIdentifier(id string) error {\n\tif id != \"\" && !reIdentifier.MatchString(id) {\n\t\treturn fmt.Errorf(\"%s is not a valid semver identifier\", id)\n\t}\n\treturn nil\n}\n\n// reIdentifier is a regular expression used to check that pre-release and metadata\n// identifiers satisfy the spec requirements\nvar reIdentifier = regexp.MustCompile(`^[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*$`)\n"
  },
  {
    "path": "vendor/github.com/coreos/go-semver/semver/sort.go",
    "content": "// Copyright 2013-2015 CoreOS, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage semver\n\nimport (\n\t\"sort\"\n)\n\ntype Versions []*Version\n\nfunc (s Versions) Len() int {\n\treturn len(s)\n}\n\nfunc (s Versions) Swap(i, j int) {\n\ts[i], s[j] = s[j], s[i]\n}\n\nfunc (s Versions) Less(i, j int) bool {\n\treturn s[i].LessThan(*s[j])\n}\n\n// Sort sorts the given slice of Version\nfunc Sort(versions []*Version) {\n\tsort.Sort(Versions(versions))\n}\n"
  },
  {
    "path": "vendor/github.com/coreos/go-systemd/v22/LICENSE",
    "content": "Apache License\nVersion 2.0, January 2004\nhttp://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n\"License\" shall mean the terms and conditions for use, reproduction, and\ndistribution as defined by Sections 1 through 9 of this document.\n\n\"Licensor\" shall mean the copyright owner or entity authorized by the copyright\nowner that is granting the License.\n\n\"Legal Entity\" shall mean the union of the acting entity and all other entities\nthat control, are controlled by, or are under common control with that entity.\nFor the purposes of this definition, \"control\" means (i) the power, direct or\nindirect, to cause the direction or management of such entity, whether by\ncontract or otherwise, or (ii) ownership of fifty percent (50%) or more of the\noutstanding shares, or (iii) beneficial ownership of such entity.\n\n\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising\npermissions granted by this License.\n\n\"Source\" form shall mean the preferred form for making modifications, including\nbut not limited to software source code, documentation source, and configuration\nfiles.\n\n\"Object\" form shall mean any form resulting from mechanical transformation or\ntranslation of a Source form, including but not limited to compiled object code,\ngenerated documentation, and conversions to other media types.\n\n\"Work\" shall mean the work of authorship, whether in Source or Object form, made\navailable under the License, as indicated by a copyright notice that is included\nin or attached to the work (an example is provided in the Appendix below).\n\n\"Derivative Works\" shall mean any work, whether in Source or Object form, that\nis based on (or derived from) the Work and for which the editorial revisions,\nannotations, elaborations, or other modifications represent, as a whole, an\noriginal work of authorship. For the purposes of this License, Derivative Works\nshall not include works that remain separable from, or merely link (or bind by\nname) to the interfaces of, the Work and Derivative Works thereof.\n\n\"Contribution\" shall mean any work of authorship, including the original version\nof the Work and any modifications or additions to that Work or Derivative Works\nthereof, that is intentionally submitted to Licensor for inclusion in the Work\nby the copyright owner or by an individual or Legal Entity authorized to submit\non behalf of the copyright owner. For the purposes of this definition,\n\"submitted\" means any form of electronic, verbal, or written communication sent\nto the Licensor or its representatives, including but not limited to\ncommunication on electronic mailing lists, source code control systems, and\nissue tracking systems that are managed by, or on behalf of, the Licensor for\nthe purpose of discussing and improving the Work, but excluding communication\nthat is conspicuously marked or otherwise designated in writing by the copyright\nowner as \"Not a Contribution.\"\n\n\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf\nof whom a Contribution has been received by Licensor and subsequently\nincorporated within the Work.\n\n2. Grant of Copyright License.\n\nSubject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable copyright license to reproduce, prepare Derivative Works of,\npublicly display, publicly perform, sublicense, and distribute the Work and such\nDerivative Works in Source or Object form.\n\n3. Grant of Patent License.\n\nSubject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable (except as stated in this section) patent license to make, have\nmade, use, offer to sell, sell, import, and otherwise transfer the Work, where\nsuch license applies only to those patent claims licensable by such Contributor\nthat are necessarily infringed by their Contribution(s) alone or by combination\nof their Contribution(s) with the Work to which such Contribution(s) was\nsubmitted. If You institute patent litigation against any entity (including a\ncross-claim or counterclaim in a lawsuit) alleging that the Work or a\nContribution incorporated within the Work constitutes direct or contributory\npatent infringement, then any patent licenses granted to You under this License\nfor that Work shall terminate as of the date such litigation is filed.\n\n4. Redistribution.\n\nYou may reproduce and distribute copies of the Work or Derivative Works thereof\nin any medium, with or without modifications, and in Source or Object form,\nprovided that You meet the following conditions:\n\nYou must give any other recipients of the Work or Derivative Works a copy of\nthis License; and\nYou must cause any modified files to carry prominent notices stating that You\nchanged the files; and\nYou must retain, in the Source form of any Derivative Works that You distribute,\nall copyright, patent, trademark, and attribution notices from the Source form\nof the Work, excluding those notices that do not pertain to any part of the\nDerivative Works; and\nIf the Work includes a \"NOTICE\" text file as part of its distribution, then any\nDerivative Works that You distribute must include a readable copy of the\nattribution notices contained within such NOTICE file, excluding those notices\nthat do not pertain to any part of the Derivative Works, in at least one of the\nfollowing places: within a NOTICE text file distributed as part of the\nDerivative Works; within the Source form or documentation, if provided along\nwith the Derivative Works; or, within a display generated by the Derivative\nWorks, if and wherever such third-party notices normally appear. The contents of\nthe NOTICE file are for informational purposes only and do not modify the\nLicense. You may add Your own attribution notices within Derivative Works that\nYou distribute, alongside or as an addendum to the NOTICE text from the Work,\nprovided that such additional attribution notices cannot be construed as\nmodifying the License.\nYou may add Your own copyright statement to Your modifications and may provide\nadditional or different license terms and conditions for use, reproduction, or\ndistribution of Your modifications, or for any such Derivative Works as a whole,\nprovided Your use, reproduction, and distribution of the Work otherwise complies\nwith the conditions stated in this License.\n\n5. Submission of Contributions.\n\nUnless You explicitly state otherwise, any Contribution intentionally submitted\nfor inclusion in the Work by You to the Licensor shall be under the terms and\nconditions of this License, without any additional terms or conditions.\nNotwithstanding the above, nothing herein shall supersede or modify the terms of\nany separate license agreement you may have executed with Licensor regarding\nsuch Contributions.\n\n6. Trademarks.\n\nThis License does not grant permission to use the trade names, trademarks,\nservice marks, or product names of the Licensor, except as required for\nreasonable and customary use in describing the origin of the Work and\nreproducing the content of the NOTICE file.\n\n7. Disclaimer of Warranty.\n\nUnless required by applicable law or agreed to in writing, Licensor provides the\nWork (and each Contributor provides its Contributions) on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,\nincluding, without limitation, any warranties or conditions of TITLE,\nNON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are\nsolely responsible for determining the appropriateness of using or\nredistributing the Work and assume any risks associated with Your exercise of\npermissions under this License.\n\n8. Limitation of Liability.\n\nIn no event and under no legal theory, whether in tort (including negligence),\ncontract, or otherwise, unless required by applicable law (such as deliberate\nand grossly negligent acts) or agreed to in writing, shall any Contributor be\nliable to You for damages, including any direct, indirect, special, incidental,\nor consequential damages of any character arising as a result of this License or\nout of the use or inability to use the Work (including but not limited to\ndamages for loss of goodwill, work stoppage, computer failure or malfunction, or\nany and all other commercial damages or losses), even if such Contributor has\nbeen advised of the possibility of such damages.\n\n9. Accepting Warranty or Additional Liability.\n\nWhile redistributing the Work or Derivative Works thereof, You may choose to\noffer, and charge a fee for, acceptance of support, warranty, indemnity, or\nother liability obligations and/or rights consistent with this License. However,\nin accepting such obligations, You may act only on Your own behalf and on Your\nsole responsibility, not on behalf of any other Contributor, and only if You\nagree to indemnify, defend, and hold each Contributor harmless for any liability\nincurred by, or claims asserted against, such Contributor by reason of your\naccepting any such warranty or additional liability.\n\nEND OF TERMS AND CONDITIONS\n\nAPPENDIX: How to apply the Apache License to your work\n\nTo apply the Apache License to your work, attach the following boilerplate\nnotice, with the fields enclosed by brackets \"[]\" replaced with your own\nidentifying information. (Don't include the brackets!) The text should be\nenclosed in the appropriate comment syntax for the file format. We also\nrecommend that a file or class name and description of purpose be included on\nthe same \"printed page\" as the copyright notice for easier identification within\nthird-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/coreos/go-systemd/v22/NOTICE",
    "content": "CoreOS Project\nCopyright 2018 CoreOS, Inc\n\nThis product includes software developed at CoreOS, Inc.\n(http://www.coreos.com/).\n"
  },
  {
    "path": "vendor/github.com/coreos/go-systemd/v22/journal/journal.go",
    "content": "// Copyright 2015 CoreOS, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package journal provides write bindings to the local systemd journal.\n// It is implemented in pure Go and connects to the journal directly over its\n// unix socket.\n//\n// To read from the journal, see the \"sdjournal\" package, which wraps the\n// sd-journal a C API.\n//\n// http://www.freedesktop.org/software/systemd/man/systemd-journald.service.html\npackage journal\n\nimport (\n\t\"fmt\"\n)\n\n// Priority of a journal message\ntype Priority int\n\nconst (\n\tPriEmerg Priority = iota\n\tPriAlert\n\tPriCrit\n\tPriErr\n\tPriWarning\n\tPriNotice\n\tPriInfo\n\tPriDebug\n)\n\n// Print prints a message to the local systemd journal using Send().\nfunc Print(priority Priority, format string, a ...interface{}) error {\n\treturn Send(fmt.Sprintf(format, a...), priority, nil)\n}\n"
  },
  {
    "path": "vendor/github.com/coreos/go-systemd/v22/journal/journal_unix.go",
    "content": "// Copyright 2015 CoreOS, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build !windows\n// +build !windows\n\n// Package journal provides write bindings to the local systemd journal.\n// It is implemented in pure Go and connects to the journal directly over its\n// unix socket.\n//\n// To read from the journal, see the \"sdjournal\" package, which wraps the\n// sd-journal a C API.\n//\n// http://www.freedesktop.org/software/systemd/man/systemd-journald.service.html\npackage journal\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar (\n\t// This can be overridden at build-time:\n\t// https://github.com/golang/go/wiki/GcToolchainTricks#including-build-information-in-the-executable\n\tjournalSocket = \"/run/systemd/journal/socket\"\n\n\t// unixConnPtr atomically holds the local unconnected Unix-domain socket.\n\t// Concrete safe pointer type: *net.UnixConn\n\tunixConnPtr unsafe.Pointer\n\t// onceConn ensures that unixConnPtr is initialized exactly once.\n\tonceConn sync.Once\n)\n\n// Enabled checks whether the local systemd journal is available for logging.\nfunc Enabled() bool {\n\tif c := getOrInitConn(); c == nil {\n\t\treturn false\n\t}\n\n\tconn, err := net.Dial(\"unixgram\", journalSocket)\n\tif err != nil {\n\t\treturn false\n\t}\n\tdefer conn.Close()\n\n\treturn true\n}\n\n// StderrIsJournalStream returns whether the process stderr is connected\n// to the Journal's stream transport.\n//\n// This can be used for automatic protocol upgrading described in [Journal Native Protocol].\n//\n// Returns true if JOURNAL_STREAM environment variable is present,\n// and stderr's device and inode numbers match it.\n//\n// Error is returned if unexpected error occurs: e.g. if JOURNAL_STREAM environment variable\n// is present, but malformed, fstat syscall fails, etc.\n//\n// [Journal Native Protocol]: https://systemd.io/JOURNAL_NATIVE_PROTOCOL/#automatic-protocol-upgrading\nfunc StderrIsJournalStream() (bool, error) {\n\treturn fdIsJournalStream(syscall.Stderr)\n}\n\n// StdoutIsJournalStream returns whether the process stdout is connected\n// to the Journal's stream transport.\n//\n// Returns true if JOURNAL_STREAM environment variable is present,\n// and stdout's device and inode numbers match it.\n//\n// Error is returned if unexpected error occurs: e.g. if JOURNAL_STREAM environment variable\n// is present, but malformed, fstat syscall fails, etc.\n//\n// Most users should probably use [StderrIsJournalStream].\nfunc StdoutIsJournalStream() (bool, error) {\n\treturn fdIsJournalStream(syscall.Stdout)\n}\n\nfunc fdIsJournalStream(fd int) (bool, error) {\n\tjournalStream := os.Getenv(\"JOURNAL_STREAM\")\n\tif journalStream == \"\" {\n\t\treturn false, nil\n\t}\n\n\tvar expectedStat syscall.Stat_t\n\t_, err := fmt.Sscanf(journalStream, \"%d:%d\", &expectedStat.Dev, &expectedStat.Ino)\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"failed to parse JOURNAL_STREAM=%q: %v\", journalStream, err)\n\t}\n\n\tvar stat syscall.Stat_t\n\terr = syscall.Fstat(fd, &stat)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tmatch := stat.Dev == expectedStat.Dev && stat.Ino == expectedStat.Ino\n\treturn match, nil\n}\n\n// Send a message to the local systemd journal. vars is a map of journald\n// fields to values.  Fields must be composed of uppercase letters, numbers,\n// and underscores, but must not start with an underscore. Within these\n// restrictions, any arbitrary field name may be used.  Some names have special\n// significance: see the journalctl documentation\n// (http://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html)\n// for more details.  vars may be nil.\nfunc Send(message string, priority Priority, vars map[string]string) error {\n\tconn := getOrInitConn()\n\tif conn == nil {\n\t\treturn errors.New(\"could not initialize socket to journald\")\n\t}\n\n\tsocketAddr := &net.UnixAddr{\n\t\tName: journalSocket,\n\t\tNet:  \"unixgram\",\n\t}\n\n\tdata := new(bytes.Buffer)\n\tappendVariable(data, \"PRIORITY\", strconv.Itoa(int(priority)))\n\tappendVariable(data, \"MESSAGE\", message)\n\tfor k, v := range vars {\n\t\tappendVariable(data, k, v)\n\t}\n\n\t_, _, err := conn.WriteMsgUnix(data.Bytes(), nil, socketAddr)\n\tif err == nil {\n\t\treturn nil\n\t}\n\tif !isSocketSpaceError(err) {\n\t\treturn err\n\t}\n\n\t// Large log entry, send it via tempfile and ancillary-fd.\n\tfile, err := tempFd()\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer file.Close()\n\t_, err = io.Copy(file, data)\n\tif err != nil {\n\t\treturn err\n\t}\n\trights := syscall.UnixRights(int(file.Fd()))\n\t_, _, err = conn.WriteMsgUnix([]byte{}, rights, socketAddr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n// getOrInitConn attempts to get the global `unixConnPtr` socket, initializing if necessary\nfunc getOrInitConn() *net.UnixConn {\n\tconn := (*net.UnixConn)(atomic.LoadPointer(&unixConnPtr))\n\tif conn != nil {\n\t\treturn conn\n\t}\n\tonceConn.Do(initConn)\n\treturn (*net.UnixConn)(atomic.LoadPointer(&unixConnPtr))\n}\n\nfunc appendVariable(w io.Writer, name, value string) {\n\tif err := validVarName(name); err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"variable name %s contains invalid character, ignoring\\n\", name)\n\t}\n\tif strings.ContainsRune(value, '\\n') {\n\t\t/* When the value contains a newline, we write:\n\t\t * - the variable name, followed by a newline\n\t\t * - the size (in 64bit little endian format)\n\t\t * - the data, followed by a newline\n\t\t */\n\t\tfmt.Fprintln(w, name)\n\t\tbinary.Write(w, binary.LittleEndian, uint64(len(value)))\n\t\tfmt.Fprintln(w, value)\n\t} else {\n\t\t/* just write the variable and value all on one line */\n\t\tfmt.Fprintf(w, \"%s=%s\\n\", name, value)\n\t}\n}\n\n// validVarName validates a variable name to make sure journald will accept it.\n// The variable name must be in uppercase and consist only of characters,\n// numbers and underscores, and may not begin with an underscore:\n// https://www.freedesktop.org/software/systemd/man/sd_journal_print.html\nfunc validVarName(name string) error {\n\tif name == \"\" {\n\t\treturn errors.New(\"Empty variable name\")\n\t} else if name[0] == '_' {\n\t\treturn errors.New(\"Variable name begins with an underscore\")\n\t}\n\n\tfor _, c := range name {\n\t\tif !(('A' <= c && c <= 'Z') || ('0' <= c && c <= '9') || c == '_') {\n\t\t\treturn errors.New(\"Variable name contains invalid characters\")\n\t\t}\n\t}\n\treturn nil\n}\n\n// isSocketSpaceError checks whether the error is signaling\n// an \"overlarge message\" condition.\nfunc isSocketSpaceError(err error) bool {\n\topErr, ok := err.(*net.OpError)\n\tif !ok || opErr == nil {\n\t\treturn false\n\t}\n\n\tsysErr, ok := opErr.Err.(*os.SyscallError)\n\tif !ok || sysErr == nil {\n\t\treturn false\n\t}\n\n\treturn sysErr.Err == syscall.EMSGSIZE || sysErr.Err == syscall.ENOBUFS\n}\n\n// tempFd creates a temporary, unlinked file under `/dev/shm`.\nfunc tempFd() (*os.File, error) {\n\tfile, err := ioutil.TempFile(\"/dev/shm/\", \"journal.XXXXX\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = syscall.Unlink(file.Name())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn file, nil\n}\n\n// initConn initializes the global `unixConnPtr` socket.\n// It is automatically called when needed.\nfunc initConn() {\n\tautobind, err := net.ResolveUnixAddr(\"unixgram\", \"\")\n\tif err != nil {\n\t\treturn\n\t}\n\n\tsock, err := net.ListenUnixgram(\"unixgram\", autobind)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tatomic.StorePointer(&unixConnPtr, unsafe.Pointer(sock))\n}\n"
  },
  {
    "path": "vendor/github.com/coreos/go-systemd/v22/journal/journal_windows.go",
    "content": "// Copyright 2015 CoreOS, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package journal provides write bindings to the local systemd journal.\n// It is implemented in pure Go and connects to the journal directly over its\n// unix socket.\n//\n// To read from the journal, see the \"sdjournal\" package, which wraps the\n// sd-journal a C API.\n//\n// http://www.freedesktop.org/software/systemd/man/systemd-journald.service.html\npackage journal\n\nimport (\n\t\"errors\"\n)\n\nfunc Enabled() bool {\n\treturn false\n}\n\nfunc Send(message string, priority Priority, vars map[string]string) error {\n\treturn errors.New(\"could not initialize socket to journald\")\n}\n\nfunc StderrIsJournalStream() (bool, error) {\n\treturn false, nil\n}\n\nfunc StdoutIsJournalStream() (bool, error) {\n\treturn false, nil\n}\n"
  },
  {
    "path": "vendor/github.com/fatih/color/LICENSE.md",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2013 Fatih Arslan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject 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, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/fatih/color/README.md",
    "content": "# color [![](https://github.com/fatih/color/workflows/build/badge.svg)](https://github.com/fatih/color/actions) [![PkgGoDev](https://pkg.go.dev/badge/github.com/fatih/color)](https://pkg.go.dev/github.com/fatih/color)\n\nColor lets you use colorized outputs in terms of [ANSI Escape\nCodes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors) in Go (Golang). It\nhas support for Windows too! The API can be used in several ways, pick one that\nsuits you.\n\n![Color](https://user-images.githubusercontent.com/438920/96832689-03b3e000-13f4-11eb-9803-46f4c4de3406.jpg)\n\n## Install\n\n```bash\ngo get github.com/fatih/color\n```\n\n## Examples\n\n### Standard colors\n\n```go\n// Print with default helper functions\ncolor.Cyan(\"Prints text in cyan.\")\n\n// A newline will be appended automatically\ncolor.Blue(\"Prints %s in blue.\", \"text\")\n\n// These are using the default foreground colors\ncolor.Red(\"We have red\")\ncolor.Magenta(\"And many others ..\")\n\n```\n\n### Mix and reuse colors\n\n```go\n// Create a new color object\nc := color.New(color.FgCyan).Add(color.Underline)\nc.Println(\"Prints cyan text with an underline.\")\n\n// Or just add them to New()\nd := color.New(color.FgCyan, color.Bold)\nd.Printf(\"This prints bold cyan %s\\n\", \"too!.\")\n\n// Mix up foreground and background colors, create new mixes!\nred := color.New(color.FgRed)\n\nboldRed := red.Add(color.Bold)\nboldRed.Println(\"This will print text in bold red.\")\n\nwhiteBackground := red.Add(color.BgWhite)\nwhiteBackground.Println(\"Red text with white background.\")\n```\n\n### Use your own output (io.Writer)\n\n```go\n// Use your own io.Writer output\ncolor.New(color.FgBlue).Fprintln(myWriter, \"blue color!\")\n\nblue := color.New(color.FgBlue)\nblue.Fprint(writer, \"This will print text in blue.\")\n```\n\n### Custom print functions (PrintFunc)\n\n```go\n// Create a custom print function for convenience\nred := color.New(color.FgRed).PrintfFunc()\nred(\"Warning\")\nred(\"Error: %s\", err)\n\n// Mix up multiple attributes\nnotice := color.New(color.Bold, color.FgGreen).PrintlnFunc()\nnotice(\"Don't forget this...\")\n```\n\n### Custom fprint functions (FprintFunc)\n\n```go\nblue := color.New(color.FgBlue).FprintfFunc()\nblue(myWriter, \"important notice: %s\", stars)\n\n// Mix up with multiple attributes\nsuccess := color.New(color.Bold, color.FgGreen).FprintlnFunc()\nsuccess(myWriter, \"Don't forget this...\")\n```\n\n### Insert into noncolor strings (SprintFunc)\n\n```go\n// Create SprintXxx functions to mix strings with other non-colorized strings:\nyellow := color.New(color.FgYellow).SprintFunc()\nred := color.New(color.FgRed).SprintFunc()\nfmt.Printf(\"This is a %s and this is %s.\\n\", yellow(\"warning\"), red(\"error\"))\n\ninfo := color.New(color.FgWhite, color.BgGreen).SprintFunc()\nfmt.Printf(\"This %s rocks!\\n\", info(\"package\"))\n\n// Use helper functions\nfmt.Println(\"This\", color.RedString(\"warning\"), \"should be not neglected.\")\nfmt.Printf(\"%v %v\\n\", color.GreenString(\"Info:\"), \"an important message.\")\n\n// Windows supported too! Just don't forget to change the output to color.Output\nfmt.Fprintf(color.Output, \"Windows support: %s\", color.GreenString(\"PASS\"))\n```\n\n### Plug into existing code\n\n```go\n// Use handy standard colors\ncolor.Set(color.FgYellow)\n\nfmt.Println(\"Existing text will now be in yellow\")\nfmt.Printf(\"This one %s\\n\", \"too\")\n\ncolor.Unset() // Don't forget to unset\n\n// You can mix up parameters\ncolor.Set(color.FgMagenta, color.Bold)\ndefer color.Unset() // Use it in your function\n\nfmt.Println(\"All text will now be bold magenta.\")\n```\n\n### Disable/Enable color\n\nThere might be a case where you want to explicitly disable/enable color output. the \n`go-isatty` package will automatically disable color output for non-tty output streams \n(for example if the output were piped directly to `less`).\n\nThe `color` package also disables color output if the [`NO_COLOR`](https://no-color.org) environment\nvariable is set to a non-empty string.\n\n`Color` has support to disable/enable colors programmatically both globally and\nfor single color definitions. For example suppose you have a CLI app and a\n`-no-color` bool flag. You can easily disable the color output with:\n\n```go\nvar flagNoColor = flag.Bool(\"no-color\", false, \"Disable color output\")\n\nif *flagNoColor {\n\tcolor.NoColor = true // disables colorized output\n}\n```\n\nIt also has support for single color definitions (local). You can\ndisable/enable color output on the fly:\n\n```go\nc := color.New(color.FgCyan)\nc.Println(\"Prints cyan text\")\n\nc.DisableColor()\nc.Println(\"This is printed without any color\")\n\nc.EnableColor()\nc.Println(\"This prints again cyan...\")\n```\n\n## GitHub Actions\n\nTo output color in GitHub Actions (or other CI systems that support ANSI colors), make sure to set `color.NoColor = false` so that it bypasses the check for non-tty output streams. \n\n## Todo\n\n* Save/Return previous values\n* Evaluate fmt.Formatter interface\n\n## Credits\n\n* [Fatih Arslan](https://github.com/fatih)\n* Windows support via @mattn: [colorable](https://github.com/mattn/go-colorable)\n\n## License\n\nThe MIT License (MIT) - see [`LICENSE.md`](https://github.com/fatih/color/blob/master/LICENSE.md) for more details\n"
  },
  {
    "path": "vendor/github.com/fatih/color/color.go",
    "content": "package color\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/mattn/go-colorable\"\n\t\"github.com/mattn/go-isatty\"\n)\n\nvar (\n\t// NoColor defines if the output is colorized or not. It's dynamically set to\n\t// false or true based on the stdout's file descriptor referring to a terminal\n\t// or not. It's also set to true if the NO_COLOR environment variable is\n\t// set (regardless of its value). This is a global option and affects all\n\t// colors. For more control over each color block use the methods\n\t// DisableColor() individually.\n\tNoColor = noColorIsSet() || os.Getenv(\"TERM\") == \"dumb\" ||\n\t\t(!isatty.IsTerminal(os.Stdout.Fd()) && !isatty.IsCygwinTerminal(os.Stdout.Fd()))\n\n\t// Output defines the standard output of the print functions. By default,\n\t// os.Stdout is used.\n\tOutput = colorable.NewColorableStdout()\n\n\t// Error defines a color supporting writer for os.Stderr.\n\tError = colorable.NewColorableStderr()\n\n\t// colorsCache is used to reduce the count of created Color objects and\n\t// allows to reuse already created objects with required Attribute.\n\tcolorsCache   = make(map[Attribute]*Color)\n\tcolorsCacheMu sync.Mutex // protects colorsCache\n)\n\n// noColorIsSet returns true if the environment variable NO_COLOR is set to a non-empty string.\nfunc noColorIsSet() bool {\n\treturn os.Getenv(\"NO_COLOR\") != \"\"\n}\n\n// Color defines a custom color object which is defined by SGR parameters.\ntype Color struct {\n\tparams  []Attribute\n\tnoColor *bool\n}\n\n// Attribute defines a single SGR Code\ntype Attribute int\n\nconst escape = \"\\x1b\"\n\n// Base attributes\nconst (\n\tReset Attribute = iota\n\tBold\n\tFaint\n\tItalic\n\tUnderline\n\tBlinkSlow\n\tBlinkRapid\n\tReverseVideo\n\tConcealed\n\tCrossedOut\n)\n\nconst (\n\tResetBold Attribute = iota + 22\n\tResetItalic\n\tResetUnderline\n\tResetBlinking\n\t_\n\tResetReversed\n\tResetConcealed\n\tResetCrossedOut\n)\n\nvar mapResetAttributes map[Attribute]Attribute = map[Attribute]Attribute{\n\tBold:         ResetBold,\n\tFaint:        ResetBold,\n\tItalic:       ResetItalic,\n\tUnderline:    ResetUnderline,\n\tBlinkSlow:    ResetBlinking,\n\tBlinkRapid:   ResetBlinking,\n\tReverseVideo: ResetReversed,\n\tConcealed:    ResetConcealed,\n\tCrossedOut:   ResetCrossedOut,\n}\n\n// Foreground text colors\nconst (\n\tFgBlack Attribute = iota + 30\n\tFgRed\n\tFgGreen\n\tFgYellow\n\tFgBlue\n\tFgMagenta\n\tFgCyan\n\tFgWhite\n)\n\n// Foreground Hi-Intensity text colors\nconst (\n\tFgHiBlack Attribute = iota + 90\n\tFgHiRed\n\tFgHiGreen\n\tFgHiYellow\n\tFgHiBlue\n\tFgHiMagenta\n\tFgHiCyan\n\tFgHiWhite\n)\n\n// Background text colors\nconst (\n\tBgBlack Attribute = iota + 40\n\tBgRed\n\tBgGreen\n\tBgYellow\n\tBgBlue\n\tBgMagenta\n\tBgCyan\n\tBgWhite\n)\n\n// Background Hi-Intensity text colors\nconst (\n\tBgHiBlack Attribute = iota + 100\n\tBgHiRed\n\tBgHiGreen\n\tBgHiYellow\n\tBgHiBlue\n\tBgHiMagenta\n\tBgHiCyan\n\tBgHiWhite\n)\n\n// New returns a newly created color object.\nfunc New(value ...Attribute) *Color {\n\tc := &Color{\n\t\tparams: make([]Attribute, 0),\n\t}\n\n\tif noColorIsSet() {\n\t\tc.noColor = boolPtr(true)\n\t}\n\n\tc.Add(value...)\n\treturn c\n}\n\n// Set sets the given parameters immediately. It will change the color of\n// output with the given SGR parameters until color.Unset() is called.\nfunc Set(p ...Attribute) *Color {\n\tc := New(p...)\n\tc.Set()\n\treturn c\n}\n\n// Unset resets all escape attributes and clears the output. Usually should\n// be called after Set().\nfunc Unset() {\n\tif NoColor {\n\t\treturn\n\t}\n\n\tfmt.Fprintf(Output, \"%s[%dm\", escape, Reset)\n}\n\n// Set sets the SGR sequence.\nfunc (c *Color) Set() *Color {\n\tif c.isNoColorSet() {\n\t\treturn c\n\t}\n\n\tfmt.Fprint(Output, c.format())\n\treturn c\n}\n\nfunc (c *Color) unset() {\n\tif c.isNoColorSet() {\n\t\treturn\n\t}\n\n\tUnset()\n}\n\n// SetWriter is used to set the SGR sequence with the given io.Writer. This is\n// a low-level function, and users should use the higher-level functions, such\n// as color.Fprint, color.Print, etc.\nfunc (c *Color) SetWriter(w io.Writer) *Color {\n\tif c.isNoColorSet() {\n\t\treturn c\n\t}\n\n\tfmt.Fprint(w, c.format())\n\treturn c\n}\n\n// UnsetWriter resets all escape attributes and clears the output with the give\n// io.Writer. Usually should be called after SetWriter().\nfunc (c *Color) UnsetWriter(w io.Writer) {\n\tif c.isNoColorSet() {\n\t\treturn\n\t}\n\n\tif NoColor {\n\t\treturn\n\t}\n\n\tfmt.Fprintf(w, \"%s[%dm\", escape, Reset)\n}\n\n// Add is used to chain SGR parameters. Use as many as parameters to combine\n// and create custom color objects. Example: Add(color.FgRed, color.Underline).\nfunc (c *Color) Add(value ...Attribute) *Color {\n\tc.params = append(c.params, value...)\n\treturn c\n}\n\n// Fprint formats using the default formats for its operands and writes to w.\n// Spaces are added between operands when neither is a string.\n// It returns the number of bytes written and any write error encountered.\n// On Windows, users should wrap w with colorable.NewColorable() if w is of\n// type *os.File.\nfunc (c *Color) Fprint(w io.Writer, a ...interface{}) (n int, err error) {\n\tc.SetWriter(w)\n\tdefer c.UnsetWriter(w)\n\n\treturn fmt.Fprint(w, a...)\n}\n\n// Print formats using the default formats for its operands and writes to\n// standard output. Spaces are added between operands when neither is a\n// string. It returns the number of bytes written and any write error\n// encountered. This is the standard fmt.Print() method wrapped with the given\n// color.\nfunc (c *Color) Print(a ...interface{}) (n int, err error) {\n\tc.Set()\n\tdefer c.unset()\n\n\treturn fmt.Fprint(Output, a...)\n}\n\n// Fprintf formats according to a format specifier and writes to w.\n// It returns the number of bytes written and any write error encountered.\n// On Windows, users should wrap w with colorable.NewColorable() if w is of\n// type *os.File.\nfunc (c *Color) Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) {\n\tc.SetWriter(w)\n\tdefer c.UnsetWriter(w)\n\n\treturn fmt.Fprintf(w, format, a...)\n}\n\n// Printf formats according to a format specifier and writes to standard output.\n// It returns the number of bytes written and any write error encountered.\n// This is the standard fmt.Printf() method wrapped with the given color.\nfunc (c *Color) Printf(format string, a ...interface{}) (n int, err error) {\n\tc.Set()\n\tdefer c.unset()\n\n\treturn fmt.Fprintf(Output, format, a...)\n}\n\n// Fprintln formats using the default formats for its operands and writes to w.\n// Spaces are always added between operands and a newline is appended.\n// On Windows, users should wrap w with colorable.NewColorable() if w is of\n// type *os.File.\nfunc (c *Color) Fprintln(w io.Writer, a ...interface{}) (n int, err error) {\n\treturn fmt.Fprintln(w, c.wrap(fmt.Sprint(a...)))\n}\n\n// Println formats using the default formats for its operands and writes to\n// standard output. Spaces are always added between operands and a newline is\n// appended. It returns the number of bytes written and any write error\n// encountered. This is the standard fmt.Print() method wrapped with the given\n// color.\nfunc (c *Color) Println(a ...interface{}) (n int, err error) {\n\treturn fmt.Fprintln(Output, c.wrap(fmt.Sprint(a...)))\n}\n\n// Sprint is just like Print, but returns a string instead of printing it.\nfunc (c *Color) Sprint(a ...interface{}) string {\n\treturn c.wrap(fmt.Sprint(a...))\n}\n\n// Sprintln is just like Println, but returns a string instead of printing it.\nfunc (c *Color) Sprintln(a ...interface{}) string {\n\treturn fmt.Sprintln(c.Sprint(a...))\n}\n\n// Sprintf is just like Printf, but returns a string instead of printing it.\nfunc (c *Color) Sprintf(format string, a ...interface{}) string {\n\treturn c.wrap(fmt.Sprintf(format, a...))\n}\n\n// FprintFunc returns a new function that prints the passed arguments as\n// colorized with color.Fprint().\nfunc (c *Color) FprintFunc() func(w io.Writer, a ...interface{}) {\n\treturn func(w io.Writer, a ...interface{}) {\n\t\tc.Fprint(w, a...)\n\t}\n}\n\n// PrintFunc returns a new function that prints the passed arguments as\n// colorized with color.Print().\nfunc (c *Color) PrintFunc() func(a ...interface{}) {\n\treturn func(a ...interface{}) {\n\t\tc.Print(a...)\n\t}\n}\n\n// FprintfFunc returns a new function that prints the passed arguments as\n// colorized with color.Fprintf().\nfunc (c *Color) FprintfFunc() func(w io.Writer, format string, a ...interface{}) {\n\treturn func(w io.Writer, format string, a ...interface{}) {\n\t\tc.Fprintf(w, format, a...)\n\t}\n}\n\n// PrintfFunc returns a new function that prints the passed arguments as\n// colorized with color.Printf().\nfunc (c *Color) PrintfFunc() func(format string, a ...interface{}) {\n\treturn func(format string, a ...interface{}) {\n\t\tc.Printf(format, a...)\n\t}\n}\n\n// FprintlnFunc returns a new function that prints the passed arguments as\n// colorized with color.Fprintln().\nfunc (c *Color) FprintlnFunc() func(w io.Writer, a ...interface{}) {\n\treturn func(w io.Writer, a ...interface{}) {\n\t\tc.Fprintln(w, a...)\n\t}\n}\n\n// PrintlnFunc returns a new function that prints the passed arguments as\n// colorized with color.Println().\nfunc (c *Color) PrintlnFunc() func(a ...interface{}) {\n\treturn func(a ...interface{}) {\n\t\tc.Println(a...)\n\t}\n}\n\n// SprintFunc returns a new function that returns colorized strings for the\n// given arguments with fmt.Sprint(). Useful to put into or mix into other\n// string. Windows users should use this in conjunction with color.Output, example:\n//\n//\tput := New(FgYellow).SprintFunc()\n//\tfmt.Fprintf(color.Output, \"This is a %s\", put(\"warning\"))\nfunc (c *Color) SprintFunc() func(a ...interface{}) string {\n\treturn func(a ...interface{}) string {\n\t\treturn c.wrap(fmt.Sprint(a...))\n\t}\n}\n\n// SprintfFunc returns a new function that returns colorized strings for the\n// given arguments with fmt.Sprintf(). Useful to put into or mix into other\n// string. Windows users should use this in conjunction with color.Output.\nfunc (c *Color) SprintfFunc() func(format string, a ...interface{}) string {\n\treturn func(format string, a ...interface{}) string {\n\t\treturn c.wrap(fmt.Sprintf(format, a...))\n\t}\n}\n\n// SprintlnFunc returns a new function that returns colorized strings for the\n// given arguments with fmt.Sprintln(). Useful to put into or mix into other\n// string. Windows users should use this in conjunction with color.Output.\nfunc (c *Color) SprintlnFunc() func(a ...interface{}) string {\n\treturn func(a ...interface{}) string {\n\t\treturn fmt.Sprintln(c.Sprint(a...))\n\t}\n}\n\n// sequence returns a formatted SGR sequence to be plugged into a \"\\x1b[...m\"\n// an example output might be: \"1;36\" -> bold cyan\nfunc (c *Color) sequence() string {\n\tformat := make([]string, len(c.params))\n\tfor i, v := range c.params {\n\t\tformat[i] = strconv.Itoa(int(v))\n\t}\n\n\treturn strings.Join(format, \";\")\n}\n\n// wrap wraps the s string with the colors attributes. The string is ready to\n// be printed.\nfunc (c *Color) wrap(s string) string {\n\tif c.isNoColorSet() {\n\t\treturn s\n\t}\n\n\treturn c.format() + s + c.unformat()\n}\n\nfunc (c *Color) format() string {\n\treturn fmt.Sprintf(\"%s[%sm\", escape, c.sequence())\n}\n\nfunc (c *Color) unformat() string {\n\t//return fmt.Sprintf(\"%s[%dm\", escape, Reset)\n\t//for each element in sequence let's use the speficic reset escape, ou the generic one if not found\n\tformat := make([]string, len(c.params))\n\tfor i, v := range c.params {\n\t\tformat[i] = strconv.Itoa(int(Reset))\n\t\tra, ok := mapResetAttributes[v]\n\t\tif ok {\n\t\t\tformat[i] = strconv.Itoa(int(ra))\n\t\t}\n\t}\n\n\treturn fmt.Sprintf(\"%s[%sm\", escape, strings.Join(format, \";\"))\n}\n\n// DisableColor disables the color output. Useful to not change any existing\n// code and still being able to output. Can be used for flags like\n// \"--no-color\". To enable back use EnableColor() method.\nfunc (c *Color) DisableColor() {\n\tc.noColor = boolPtr(true)\n}\n\n// EnableColor enables the color output. Use it in conjunction with\n// DisableColor(). Otherwise, this method has no side effects.\nfunc (c *Color) EnableColor() {\n\tc.noColor = boolPtr(false)\n}\n\nfunc (c *Color) isNoColorSet() bool {\n\t// check first if we have user set action\n\tif c.noColor != nil {\n\t\treturn *c.noColor\n\t}\n\n\t// if not return the global option, which is disabled by default\n\treturn NoColor\n}\n\n// Equals returns a boolean value indicating whether two colors are equal.\nfunc (c *Color) Equals(c2 *Color) bool {\n\tif c == nil && c2 == nil {\n\t\treturn true\n\t}\n\tif c == nil || c2 == nil {\n\t\treturn false\n\t}\n\tif len(c.params) != len(c2.params) {\n\t\treturn false\n\t}\n\n\tfor _, attr := range c.params {\n\t\tif !c2.attrExists(attr) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc (c *Color) attrExists(a Attribute) bool {\n\tfor _, attr := range c.params {\n\t\tif attr == a {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc boolPtr(v bool) *bool {\n\treturn &v\n}\n\nfunc getCachedColor(p Attribute) *Color {\n\tcolorsCacheMu.Lock()\n\tdefer colorsCacheMu.Unlock()\n\n\tc, ok := colorsCache[p]\n\tif !ok {\n\t\tc = New(p)\n\t\tcolorsCache[p] = c\n\t}\n\n\treturn c\n}\n\nfunc colorPrint(format string, p Attribute, a ...interface{}) {\n\tc := getCachedColor(p)\n\n\tif !strings.HasSuffix(format, \"\\n\") {\n\t\tformat += \"\\n\"\n\t}\n\n\tif len(a) == 0 {\n\t\tc.Print(format)\n\t} else {\n\t\tc.Printf(format, a...)\n\t}\n}\n\nfunc colorString(format string, p Attribute, a ...interface{}) string {\n\tc := getCachedColor(p)\n\n\tif len(a) == 0 {\n\t\treturn c.SprintFunc()(format)\n\t}\n\n\treturn c.SprintfFunc()(format, a...)\n}\n\n// Black is a convenient helper function to print with black foreground. A\n// newline is appended to format by default.\nfunc Black(format string, a ...interface{}) { colorPrint(format, FgBlack, a...) }\n\n// Red is a convenient helper function to print with red foreground. A\n// newline is appended to format by default.\nfunc Red(format string, a ...interface{}) { colorPrint(format, FgRed, a...) }\n\n// Green is a convenient helper function to print with green foreground. A\n// newline is appended to format by default.\nfunc Green(format string, a ...interface{}) { colorPrint(format, FgGreen, a...) }\n\n// Yellow is a convenient helper function to print with yellow foreground.\n// A newline is appended to format by default.\nfunc Yellow(format string, a ...interface{}) { colorPrint(format, FgYellow, a...) }\n\n// Blue is a convenient helper function to print with blue foreground. A\n// newline is appended to format by default.\nfunc Blue(format string, a ...interface{}) { colorPrint(format, FgBlue, a...) }\n\n// Magenta is a convenient helper function to print with magenta foreground.\n// A newline is appended to format by default.\nfunc Magenta(format string, a ...interface{}) { colorPrint(format, FgMagenta, a...) }\n\n// Cyan is a convenient helper function to print with cyan foreground. A\n// newline is appended to format by default.\nfunc Cyan(format string, a ...interface{}) { colorPrint(format, FgCyan, a...) }\n\n// White is a convenient helper function to print with white foreground. A\n// newline is appended to format by default.\nfunc White(format string, a ...interface{}) { colorPrint(format, FgWhite, a...) }\n\n// BlackString is a convenient helper function to return a string with black\n// foreground.\nfunc BlackString(format string, a ...interface{}) string { return colorString(format, FgBlack, a...) }\n\n// RedString is a convenient helper function to return a string with red\n// foreground.\nfunc RedString(format string, a ...interface{}) string { return colorString(format, FgRed, a...) }\n\n// GreenString is a convenient helper function to return a string with green\n// foreground.\nfunc GreenString(format string, a ...interface{}) string { return colorString(format, FgGreen, a...) }\n\n// YellowString is a convenient helper function to return a string with yellow\n// foreground.\nfunc YellowString(format string, a ...interface{}) string { return colorString(format, FgYellow, a...) }\n\n// BlueString is a convenient helper function to return a string with blue\n// foreground.\nfunc BlueString(format string, a ...interface{}) string { return colorString(format, FgBlue, a...) }\n\n// MagentaString is a convenient helper function to return a string with magenta\n// foreground.\nfunc MagentaString(format string, a ...interface{}) string {\n\treturn colorString(format, FgMagenta, a...)\n}\n\n// CyanString is a convenient helper function to return a string with cyan\n// foreground.\nfunc CyanString(format string, a ...interface{}) string { return colorString(format, FgCyan, a...) }\n\n// WhiteString is a convenient helper function to return a string with white\n// foreground.\nfunc WhiteString(format string, a ...interface{}) string { return colorString(format, FgWhite, a...) }\n\n// HiBlack is a convenient helper function to print with hi-intensity black foreground. A\n// newline is appended to format by default.\nfunc HiBlack(format string, a ...interface{}) { colorPrint(format, FgHiBlack, a...) }\n\n// HiRed is a convenient helper function to print with hi-intensity red foreground. A\n// newline is appended to format by default.\nfunc HiRed(format string, a ...interface{}) { colorPrint(format, FgHiRed, a...) }\n\n// HiGreen is a convenient helper function to print with hi-intensity green foreground. A\n// newline is appended to format by default.\nfunc HiGreen(format string, a ...interface{}) { colorPrint(format, FgHiGreen, a...) }\n\n// HiYellow is a convenient helper function to print with hi-intensity yellow foreground.\n// A newline is appended to format by default.\nfunc HiYellow(format string, a ...interface{}) { colorPrint(format, FgHiYellow, a...) }\n\n// HiBlue is a convenient helper function to print with hi-intensity blue foreground. A\n// newline is appended to format by default.\nfunc HiBlue(format string, a ...interface{}) { colorPrint(format, FgHiBlue, a...) }\n\n// HiMagenta is a convenient helper function to print with hi-intensity magenta foreground.\n// A newline is appended to format by default.\nfunc HiMagenta(format string, a ...interface{}) { colorPrint(format, FgHiMagenta, a...) }\n\n// HiCyan is a convenient helper function to print with hi-intensity cyan foreground. A\n// newline is appended to format by default.\nfunc HiCyan(format string, a ...interface{}) { colorPrint(format, FgHiCyan, a...) }\n\n// HiWhite is a convenient helper function to print with hi-intensity white foreground. A\n// newline is appended to format by default.\nfunc HiWhite(format string, a ...interface{}) { colorPrint(format, FgHiWhite, a...) }\n\n// HiBlackString is a convenient helper function to return a string with hi-intensity black\n// foreground.\nfunc HiBlackString(format string, a ...interface{}) string {\n\treturn colorString(format, FgHiBlack, a...)\n}\n\n// HiRedString is a convenient helper function to return a string with hi-intensity red\n// foreground.\nfunc HiRedString(format string, a ...interface{}) string { return colorString(format, FgHiRed, a...) }\n\n// HiGreenString is a convenient helper function to return a string with hi-intensity green\n// foreground.\nfunc HiGreenString(format string, a ...interface{}) string {\n\treturn colorString(format, FgHiGreen, a...)\n}\n\n// HiYellowString is a convenient helper function to return a string with hi-intensity yellow\n// foreground.\nfunc HiYellowString(format string, a ...interface{}) string {\n\treturn colorString(format, FgHiYellow, a...)\n}\n\n// HiBlueString is a convenient helper function to return a string with hi-intensity blue\n// foreground.\nfunc HiBlueString(format string, a ...interface{}) string { return colorString(format, FgHiBlue, a...) }\n\n// HiMagentaString is a convenient helper function to return a string with hi-intensity magenta\n// foreground.\nfunc HiMagentaString(format string, a ...interface{}) string {\n\treturn colorString(format, FgHiMagenta, a...)\n}\n\n// HiCyanString is a convenient helper function to return a string with hi-intensity cyan\n// foreground.\nfunc HiCyanString(format string, a ...interface{}) string { return colorString(format, FgHiCyan, a...) }\n\n// HiWhiteString is a convenient helper function to return a string with hi-intensity white\n// foreground.\nfunc HiWhiteString(format string, a ...interface{}) string {\n\treturn colorString(format, FgHiWhite, a...)\n}\n"
  },
  {
    "path": "vendor/github.com/fatih/color/color_windows.go",
    "content": "package color\n\nimport (\n\t\"os\"\n\n\t\"golang.org/x/sys/windows\"\n)\n\nfunc init() {\n\t// Opt-in for ansi color support for current process.\n\t// https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#output-sequences\n\tvar outMode uint32\n\tout := windows.Handle(os.Stdout.Fd())\n\tif err := windows.GetConsoleMode(out, &outMode); err != nil {\n\t\treturn\n\t}\n\toutMode |= windows.ENABLE_PROCESSED_OUTPUT | windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING\n\t_ = windows.SetConsoleMode(out, outMode)\n}\n"
  },
  {
    "path": "vendor/github.com/fatih/color/doc.go",
    "content": "/*\nPackage color is an ANSI color package to output colorized or SGR defined\noutput to the standard output. The API can be used in several way, pick one\nthat suits you.\n\nUse simple and default helper functions with predefined foreground colors:\n\n\tcolor.Cyan(\"Prints text in cyan.\")\n\n\t// a newline will be appended automatically\n\tcolor.Blue(\"Prints %s in blue.\", \"text\")\n\n\t// More default foreground colors..\n\tcolor.Red(\"We have red\")\n\tcolor.Yellow(\"Yellow color too!\")\n\tcolor.Magenta(\"And many others ..\")\n\n\t// Hi-intensity colors\n\tcolor.HiGreen(\"Bright green color.\")\n\tcolor.HiBlack(\"Bright black means gray..\")\n\tcolor.HiWhite(\"Shiny white color!\")\n\nHowever, there are times when custom color mixes are required. Below are some\nexamples to create custom color objects and use the print functions of each\nseparate color object.\n\n\t// Create a new color object\n\tc := color.New(color.FgCyan).Add(color.Underline)\n\tc.Println(\"Prints cyan text with an underline.\")\n\n\t// Or just add them to New()\n\td := color.New(color.FgCyan, color.Bold)\n\td.Printf(\"This prints bold cyan %s\\n\", \"too!.\")\n\n\n\t// Mix up foreground and background colors, create new mixes!\n\tred := color.New(color.FgRed)\n\n\tboldRed := red.Add(color.Bold)\n\tboldRed.Println(\"This will print text in bold red.\")\n\n\twhiteBackground := red.Add(color.BgWhite)\n\twhiteBackground.Println(\"Red text with White background.\")\n\n\t// Use your own io.Writer output\n\tcolor.New(color.FgBlue).Fprintln(myWriter, \"blue color!\")\n\n\tblue := color.New(color.FgBlue)\n\tblue.Fprint(myWriter, \"This will print text in blue.\")\n\nYou can create PrintXxx functions to simplify even more:\n\n\t// Create a custom print function for convenient\n\tred := color.New(color.FgRed).PrintfFunc()\n\tred(\"warning\")\n\tred(\"error: %s\", err)\n\n\t// Mix up multiple attributes\n\tnotice := color.New(color.Bold, color.FgGreen).PrintlnFunc()\n\tnotice(\"don't forget this...\")\n\nYou can also FprintXxx functions to pass your own io.Writer:\n\n\tblue := color.New(FgBlue).FprintfFunc()\n\tblue(myWriter, \"important notice: %s\", stars)\n\n\t// Mix up with multiple attributes\n\tsuccess := color.New(color.Bold, color.FgGreen).FprintlnFunc()\n\tsuccess(myWriter, don't forget this...\")\n\nOr create SprintXxx functions to mix strings with other non-colorized strings:\n\n\tyellow := New(FgYellow).SprintFunc()\n\tred := New(FgRed).SprintFunc()\n\n\tfmt.Printf(\"this is a %s and this is %s.\\n\", yellow(\"warning\"), red(\"error\"))\n\n\tinfo := New(FgWhite, BgGreen).SprintFunc()\n\tfmt.Printf(\"this %s rocks!\\n\", info(\"package\"))\n\nWindows support is enabled by default. All Print functions work as intended.\nHowever, only for color.SprintXXX functions, user should use fmt.FprintXXX and\nset the output to color.Output:\n\n\tfmt.Fprintf(color.Output, \"Windows support: %s\", color.GreenString(\"PASS\"))\n\n\tinfo := New(FgWhite, BgGreen).SprintFunc()\n\tfmt.Fprintf(color.Output, \"this %s rocks!\\n\", info(\"package\"))\n\nUsing with existing code is possible. Just use the Set() method to set the\nstandard output to the given parameters. That way a rewrite of an existing\ncode is not required.\n\n\t// Use handy standard colors.\n\tcolor.Set(color.FgYellow)\n\n\tfmt.Println(\"Existing text will be now in Yellow\")\n\tfmt.Printf(\"This one %s\\n\", \"too\")\n\n\tcolor.Unset() // don't forget to unset\n\n\t// You can mix up parameters\n\tcolor.Set(color.FgMagenta, color.Bold)\n\tdefer color.Unset() // use it in your function\n\n\tfmt.Println(\"All text will be now bold magenta.\")\n\nThere might be a case where you want to disable color output (for example to\npipe the standard output of your app to somewhere else). `Color` has support to\ndisable colors both globally and for single color definition. For example\nsuppose you have a CLI app and a `--no-color` bool flag. You can easily disable\nthe color output with:\n\n\tvar flagNoColor = flag.Bool(\"no-color\", false, \"Disable color output\")\n\n\tif *flagNoColor {\n\t\tcolor.NoColor = true // disables colorized output\n\t}\n\nYou can also disable the color by setting the NO_COLOR environment variable to any value.\n\nIt also has support for single color definitions (local). You can\ndisable/enable color output on the fly:\n\n\tc := color.New(color.FgCyan)\n\tc.Println(\"Prints cyan text\")\n\n\tc.DisableColor()\n\tc.Println(\"This is printed without any color\")\n\n\tc.EnableColor()\n\tc.Println(\"This prints again cyan...\")\n*/\npackage color\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/.cirrus.yml",
    "content": "freebsd_task:\n  name: 'FreeBSD'\n  freebsd_instance:\n    image_family: freebsd-13-2\n  install_script:\n    - pkg update -f\n    - pkg install -y go\n  test_script:\n      # run tests as user \"cirrus\" instead of root\n    - pw useradd cirrus -m\n    - chown -R cirrus:cirrus .\n    - FSNOTIFY_BUFFER=4096 sudo --preserve-env=FSNOTIFY_BUFFER -u cirrus go test -parallel 1 -race ./...\n    -                      sudo --preserve-env=FSNOTIFY_BUFFER -u cirrus go test -parallel 1 -race ./...\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/.editorconfig",
    "content": "root = true\n\n[*.go]\nindent_style = tab\nindent_size = 4\ninsert_final_newline = true\n\n[*.{yml,yaml}]\nindent_style = space\nindent_size = 2\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/.gitattributes",
    "content": "go.sum linguist-generated\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/.gitignore",
    "content": "# go test -c output\n*.test\n*.test.exe\n\n# Output of go build ./cmd/fsnotify\n/fsnotify\n/fsnotify.exe\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/.mailmap",
    "content": "Chris Howey <howeyc@gmail.com> <chris@howey.me>\nNathan Youngman <git@nathany.com> <4566+nathany@users.noreply.github.com>\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/CHANGELOG.md",
    "content": "# Changelog\n\nUnreleased\n----------\nNothing yet.\n\n1.7.0 - 2023-10-22\n------------------\nThis version of fsnotify needs Go 1.17.\n\n### Additions\n\n- illumos: add FEN backend to support illumos and Solaris. ([#371])\n\n- all: add `NewBufferedWatcher()` to use a buffered channel, which can be useful\n  in cases where you can't control the kernel buffer and receive a large number\n  of events in bursts. ([#550], [#572])\n\n- all: add `AddWith()`, which is identical to `Add()` but allows passing\n  options. ([#521])\n\n- windows: allow setting the ReadDirectoryChangesW() buffer size with\n  `fsnotify.WithBufferSize()`; the default of 64K is the highest value that\n  works on all platforms and is enough for most purposes, but in some cases a\n  highest buffer is needed. ([#521])\n\n### Changes and fixes\n\n- inotify: remove watcher if a watched path is renamed ([#518])\n\n  After a rename the reported name wasn't updated, or even an empty string.\n  Inotify doesn't provide any good facilities to update it, so just remove the\n  watcher. This is already how it worked on kqueue and FEN.\n\n  On Windows this does work, and remains working.\n\n- windows: don't listen for file attribute changes ([#520])\n\n  File attribute changes are sent as `FILE_ACTION_MODIFIED` by the Windows API,\n  with no way to see if they're a file write or attribute change, so would show\n  up as a fsnotify.Write event. This is never useful, and could result in many\n  spurious Write events.\n\n- windows: return `ErrEventOverflow` if the buffer is full ([#525])\n\n  Before it would merely return \"short read\", making it hard to detect this\n  error.\n\n- kqueue: make sure events for all files are delivered properly when removing a\n  watched directory ([#526])\n\n  Previously they would get sent with `\"\"` (empty string) or `\".\"` as the path\n  name.\n\n- kqueue: don't emit spurious Create events for symbolic links ([#524])\n\n  The link would get resolved but kqueue would \"forget\" it already saw the link\n  itself, resulting on a Create for every Write event for the directory.\n\n- all: return `ErrClosed` on `Add()` when the watcher is closed ([#516])\n\n- other: add `Watcher.Errors` and `Watcher.Events` to the no-op `Watcher` in\n  `backend_other.go`, making it easier to use on unsupported platforms such as\n  WASM, AIX, etc. ([#528])\n\n- other: use the `backend_other.go` no-op if the `appengine` build tag is set;\n  Google AppEngine forbids usage of the unsafe package so the inotify backend\n  won't compile there.\n\n[#371]: https://github.com/fsnotify/fsnotify/pull/371\n[#516]: https://github.com/fsnotify/fsnotify/pull/516\n[#518]: https://github.com/fsnotify/fsnotify/pull/518\n[#520]: https://github.com/fsnotify/fsnotify/pull/520\n[#521]: https://github.com/fsnotify/fsnotify/pull/521\n[#524]: https://github.com/fsnotify/fsnotify/pull/524\n[#525]: https://github.com/fsnotify/fsnotify/pull/525\n[#526]: https://github.com/fsnotify/fsnotify/pull/526\n[#528]: https://github.com/fsnotify/fsnotify/pull/528\n[#537]: https://github.com/fsnotify/fsnotify/pull/537\n[#550]: https://github.com/fsnotify/fsnotify/pull/550\n[#572]: https://github.com/fsnotify/fsnotify/pull/572\n\n1.6.0 - 2022-10-13\n------------------\nThis version of fsnotify needs Go 1.16 (this was already the case since 1.5.1,\nbut not documented). It also increases the minimum Linux version to 2.6.32.\n\n### Additions\n\n- all: add `Event.Has()` and `Op.Has()` ([#477])\n\n  This makes checking events a lot easier; for example:\n\n\t    if event.Op&Write == Write && !(event.Op&Remove == Remove) {\n\t    }\n\n\tBecomes:\n\n\t    if event.Has(Write) && !event.Has(Remove) {\n\t    }\n\n- all: add cmd/fsnotify ([#463])\n\n  A command-line utility for testing and some examples.\n\n### Changes and fixes\n\n- inotify: don't ignore events for files that don't exist ([#260], [#470])\n\n  Previously the inotify watcher would call `os.Lstat()` to check if a file\n  still exists before emitting events.\n\n  This was inconsistent with other platforms and resulted in inconsistent event\n  reporting (e.g. when a file is quickly removed and re-created), and generally\n  a source of confusion. It was added in 2013 to fix a memory leak that no\n  longer exists.\n\n- all: return `ErrNonExistentWatch` when `Remove()` is called on a path that's\n  not watched ([#460])\n\n- inotify: replace epoll() with non-blocking inotify ([#434])\n\n  Non-blocking inotify was not generally available at the time this library was\n  written in 2014, but now it is. As a result, the minimum Linux version is\n  bumped from 2.6.27 to 2.6.32. This hugely simplifies the code and is faster.\n\n- kqueue: don't check for events every 100ms ([#480])\n\n  The watcher would wake up every 100ms, even when there was nothing to do. Now\n  it waits until there is something to do.\n\n- macos: retry opening files on EINTR ([#475])\n\n- kqueue: skip unreadable files ([#479])\n\n  kqueue requires a file descriptor for every file in a directory; this would\n  fail if a file was unreadable by the current user. Now these files are simply\n  skipped.\n\n- windows: fix renaming a watched directory if the parent is also watched ([#370])\n\n- windows: increase buffer size from 4K to 64K ([#485])\n\n- windows: close file handle on Remove() ([#288])\n\n- kqueue: put pathname in the error if watching a file fails ([#471])\n\n- inotify, windows: calling Close() more than once could race ([#465])\n\n- kqueue: improve Close() performance ([#233])\n\n- all: various documentation additions and clarifications.\n\n[#233]: https://github.com/fsnotify/fsnotify/pull/233\n[#260]: https://github.com/fsnotify/fsnotify/pull/260\n[#288]: https://github.com/fsnotify/fsnotify/pull/288\n[#370]: https://github.com/fsnotify/fsnotify/pull/370\n[#434]: https://github.com/fsnotify/fsnotify/pull/434\n[#460]: https://github.com/fsnotify/fsnotify/pull/460\n[#463]: https://github.com/fsnotify/fsnotify/pull/463\n[#465]: https://github.com/fsnotify/fsnotify/pull/465\n[#470]: https://github.com/fsnotify/fsnotify/pull/470\n[#471]: https://github.com/fsnotify/fsnotify/pull/471\n[#475]: https://github.com/fsnotify/fsnotify/pull/475\n[#477]: https://github.com/fsnotify/fsnotify/pull/477\n[#479]: https://github.com/fsnotify/fsnotify/pull/479\n[#480]: https://github.com/fsnotify/fsnotify/pull/480\n[#485]: https://github.com/fsnotify/fsnotify/pull/485\n\n## [1.5.4] - 2022-04-25\n\n* Windows: add missing defer to `Watcher.WatchList` [#447](https://github.com/fsnotify/fsnotify/pull/447)\n* go.mod: use latest x/sys [#444](https://github.com/fsnotify/fsnotify/pull/444)\n* Fix compilation for OpenBSD [#443](https://github.com/fsnotify/fsnotify/pull/443)\n\n## [1.5.3] - 2022-04-22\n\n* This version is retracted. An incorrect branch is published accidentally [#445](https://github.com/fsnotify/fsnotify/issues/445)\n\n## [1.5.2] - 2022-04-21\n\n* Add a feature to return the directories and files that are being monitored [#374](https://github.com/fsnotify/fsnotify/pull/374)\n* Fix potential crash on windows if `raw.FileNameLength` exceeds `syscall.MAX_PATH` [#361](https://github.com/fsnotify/fsnotify/pull/361)\n* Allow build on unsupported GOOS [#424](https://github.com/fsnotify/fsnotify/pull/424)\n* Don't set `poller.fd` twice in `newFdPoller` [#406](https://github.com/fsnotify/fsnotify/pull/406)\n* fix go vet warnings: call to `(*T).Fatalf` from a non-test goroutine [#416](https://github.com/fsnotify/fsnotify/pull/416)\n\n## [1.5.1] - 2021-08-24\n\n* Revert Add AddRaw to not follow symlinks [#394](https://github.com/fsnotify/fsnotify/pull/394)\n\n## [1.5.0] - 2021-08-20\n\n* Go: Increase minimum required version to Go 1.12 [#381](https://github.com/fsnotify/fsnotify/pull/381)\n* Feature: Add AddRaw method which does not follow symlinks when adding a watch [#289](https://github.com/fsnotify/fsnotify/pull/298)\n* Windows: Follow symlinks by default like on all other systems [#289](https://github.com/fsnotify/fsnotify/pull/289)\n* CI: Use GitHub Actions for CI and cover go 1.12-1.17\n   [#378](https://github.com/fsnotify/fsnotify/pull/378)\n   [#381](https://github.com/fsnotify/fsnotify/pull/381)\n   [#385](https://github.com/fsnotify/fsnotify/pull/385)\n* Go 1.14+: Fix unsafe pointer conversion [#325](https://github.com/fsnotify/fsnotify/pull/325)\n\n## [1.4.9] - 2020-03-11\n\n* Move example usage to the readme #329. This may resolve #328.\n\n## [1.4.8] - 2020-03-10\n\n* CI: test more go versions (@nathany 1d13583d846ea9d66dcabbfefbfb9d8e6fb05216)\n* Tests: Queued inotify events could have been read by the test before max_queued_events was hit (@matthias-stone #265)\n* Tests:  t.Fatalf -> t.Errorf in go routines (@gdey #266)\n* CI: Less verbosity (@nathany #267)\n* Tests: Darwin: Exchangedata is deprecated on 10.13 (@nathany #267)\n* Tests: Check if channels are closed in the example (@alexeykazakov #244)\n* CI: Only run golint on latest version of go and fix issues (@cpuguy83 #284)\n* CI: Add windows to travis matrix (@cpuguy83 #284)\n* Docs: Remover appveyor badge (@nathany 11844c0959f6fff69ba325d097fce35bd85a8e93)\n* Linux: create epoll and pipe fds with close-on-exec (@JohannesEbke #219)\n* Linux: open files with close-on-exec (@linxiulei #273)\n* Docs: Plan to support fanotify (@nathany ab058b44498e8b7566a799372a39d150d9ea0119 )\n* Project: Add go.mod (@nathany #309)\n* Project: Revise editor config (@nathany #309)\n* Project: Update copyright for 2019 (@nathany #309)\n* CI: Drop go1.8 from CI matrix (@nathany #309)\n* Docs: Updating the FAQ section for supportability with NFS & FUSE filesystems (@Pratik32 4bf2d1fec78374803a39307bfb8d340688f4f28e )\n\n## [1.4.7] - 2018-01-09\n\n* BSD/macOS: Fix possible deadlock on closing the watcher on kqueue (thanks @nhooyr and @glycerine)\n* Tests: Fix missing verb on format string (thanks @rchiossi)\n* Linux: Fix deadlock in Remove (thanks @aarondl)\n* Linux: Watch.Add improvements (avoid race, fix consistency, reduce garbage) (thanks @twpayne)\n* Docs: Moved FAQ into the README (thanks @vahe)\n* Linux: Properly handle inotify's IN_Q_OVERFLOW event (thanks @zeldovich)\n* Docs: replace references to OS X with macOS\n\n## [1.4.2] - 2016-10-10\n\n* Linux: use InotifyInit1 with IN_CLOEXEC to stop leaking a file descriptor to a child process when using fork/exec [#178](https://github.com/fsnotify/fsnotify/pull/178) (thanks @pattyshack)\n\n## [1.4.1] - 2016-10-04\n\n* Fix flaky inotify stress test on Linux [#177](https://github.com/fsnotify/fsnotify/pull/177) (thanks @pattyshack)\n\n## [1.4.0] - 2016-10-01\n\n* add a String() method to Event.Op [#165](https://github.com/fsnotify/fsnotify/pull/165) (thanks @oozie)\n\n## [1.3.1] - 2016-06-28\n\n* Windows: fix for double backslash when watching the root of a drive [#151](https://github.com/fsnotify/fsnotify/issues/151) (thanks @brunoqc)\n\n## [1.3.0] - 2016-04-19\n\n* Support linux/arm64 by [patching](https://go-review.googlesource.com/#/c/21971/) x/sys/unix and switching to to it from syscall (thanks @suihkulokki) [#135](https://github.com/fsnotify/fsnotify/pull/135)\n\n## [1.2.10] - 2016-03-02\n\n* Fix golint errors in windows.go [#121](https://github.com/fsnotify/fsnotify/pull/121) (thanks @tiffanyfj)\n\n## [1.2.9] - 2016-01-13\n\nkqueue: Fix logic for CREATE after REMOVE [#111](https://github.com/fsnotify/fsnotify/pull/111) (thanks @bep)\n\n## [1.2.8] - 2015-12-17\n\n* kqueue: fix race condition in Close [#105](https://github.com/fsnotify/fsnotify/pull/105) (thanks @djui for reporting the issue and @ppknap for writing a failing test)\n* inotify: fix race in test\n* enable race detection for continuous integration (Linux, Mac, Windows)\n\n## [1.2.5] - 2015-10-17\n\n* inotify: use epoll_create1 for arm64 support (requires Linux 2.6.27 or later) [#100](https://github.com/fsnotify/fsnotify/pull/100) (thanks @suihkulokki)\n* inotify: fix path leaks [#73](https://github.com/fsnotify/fsnotify/pull/73) (thanks @chamaken)\n* kqueue: watch for rename events on subdirectories [#83](https://github.com/fsnotify/fsnotify/pull/83) (thanks @guotie)\n* kqueue: avoid infinite loops from symlinks cycles [#101](https://github.com/fsnotify/fsnotify/pull/101) (thanks @illicitonion)\n\n## [1.2.1] - 2015-10-14\n\n* kqueue: don't watch named pipes [#98](https://github.com/fsnotify/fsnotify/pull/98) (thanks @evanphx)\n\n## [1.2.0] - 2015-02-08\n\n* inotify: use epoll to wake up readEvents [#66](https://github.com/fsnotify/fsnotify/pull/66) (thanks @PieterD)\n* inotify: closing watcher should now always shut down goroutine [#63](https://github.com/fsnotify/fsnotify/pull/63) (thanks @PieterD)\n* kqueue: close kqueue after removing watches, fixes [#59](https://github.com/fsnotify/fsnotify/issues/59)\n\n## [1.1.1] - 2015-02-05\n\n* inotify: Retry read on EINTR [#61](https://github.com/fsnotify/fsnotify/issues/61) (thanks @PieterD)\n\n## [1.1.0] - 2014-12-12\n\n* kqueue: rework internals [#43](https://github.com/fsnotify/fsnotify/pull/43)\n    * add low-level functions\n    * only need to store flags on directories\n    * less mutexes [#13](https://github.com/fsnotify/fsnotify/issues/13)\n    * done can be an unbuffered channel\n    * remove calls to os.NewSyscallError\n* More efficient string concatenation for Event.String() [#52](https://github.com/fsnotify/fsnotify/pull/52) (thanks @mdlayher)\n* kqueue: fix regression in  rework causing subdirectories to be watched [#48](https://github.com/fsnotify/fsnotify/issues/48)\n* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51)\n\n## [1.0.4] - 2014-09-07\n\n* kqueue: add dragonfly to the build tags.\n* Rename source code files, rearrange code so exported APIs are at the top.\n* Add done channel to example code. [#37](https://github.com/fsnotify/fsnotify/pull/37) (thanks @chenyukang)\n\n## [1.0.3] - 2014-08-19\n\n* [Fix] Windows MOVED_TO now translates to Create like on BSD and Linux. [#36](https://github.com/fsnotify/fsnotify/issues/36)\n\n## [1.0.2] - 2014-08-17\n\n* [Fix] Missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso)\n* [Fix] Make ./path and path equivalent. (thanks @zhsso)\n\n## [1.0.0] - 2014-08-15\n\n* [API] Remove AddWatch on Windows, use Add.\n* Improve documentation for exported identifiers. [#30](https://github.com/fsnotify/fsnotify/issues/30)\n* Minor updates based on feedback from golint.\n\n## dev / 2014-07-09\n\n* Moved to [github.com/fsnotify/fsnotify](https://github.com/fsnotify/fsnotify).\n* Use os.NewSyscallError instead of returning errno (thanks @hariharan-uno)\n\n## dev / 2014-07-04\n\n* kqueue: fix incorrect mutex used in Close()\n* Update example to demonstrate usage of Op.\n\n## dev / 2014-06-28\n\n* [API] Don't set the Write Op for attribute notifications [#4](https://github.com/fsnotify/fsnotify/issues/4)\n* Fix for String() method on Event (thanks Alex Brainman)\n* Don't build on Plan 9 or Solaris (thanks @4ad)\n\n## dev / 2014-06-21\n\n* Events channel of type Event rather than *Event.\n* [internal] use syscall constants directly for inotify and kqueue.\n* [internal] kqueue: rename events to kevents and fileEvent to event.\n\n## dev / 2014-06-19\n\n* Go 1.3+ required on Windows (uses syscall.ERROR_MORE_DATA internally).\n* [internal] remove cookie from Event struct (unused).\n* [internal] Event struct has the same definition across every OS.\n* [internal] remove internal watch and removeWatch methods.\n\n## dev / 2014-06-12\n\n* [API] Renamed Watch() to Add() and RemoveWatch() to Remove().\n* [API] Pluralized channel names: Events and Errors.\n* [API] Renamed FileEvent struct to Event.\n* [API] Op constants replace methods like IsCreate().\n\n## dev / 2014-06-12\n\n* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98)\n\n## dev / 2014-05-23\n\n* [API] Remove current implementation of WatchFlags.\n    * current implementation doesn't take advantage of OS for efficiency\n    * provides little benefit over filtering events as they are received, but has  extra bookkeeping and mutexes\n    * no tests for the current implementation\n    * not fully implemented on Windows [#93](https://github.com/howeyc/fsnotify/issues/93#issuecomment-39285195)\n\n## [0.9.3] - 2014-12-31\n\n* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51)\n\n## [0.9.2] - 2014-08-17\n\n* [Backport] Fix missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso)\n\n## [0.9.1] - 2014-06-12\n\n* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98)\n\n## [0.9.0] - 2014-01-17\n\n* IsAttrib() for events that only concern a file's metadata [#79][] (thanks @abustany)\n* [Fix] kqueue: fix deadlock [#77][] (thanks @cespare)\n* [NOTICE] Development has moved to `code.google.com/p/go.exp/fsnotify` in preparation for inclusion in the Go standard library.\n\n## [0.8.12] - 2013-11-13\n\n* [API] Remove FD_SET and friends from Linux adapter\n\n## [0.8.11] - 2013-11-02\n\n* [Doc] Add Changelog [#72][] (thanks @nathany)\n* [Doc] Spotlight and double modify events on macOS [#62][] (reported by @paulhammond)\n\n## [0.8.10] - 2013-10-19\n\n* [Fix] kqueue: remove file watches when parent directory is removed [#71][] (reported by @mdwhatcott)\n* [Fix] kqueue: race between Close and readEvents [#70][] (reported by @bernerdschaefer)\n* [Doc] specify OS-specific limits in README (thanks @debrando)\n\n## [0.8.9] - 2013-09-08\n\n* [Doc] Contributing (thanks @nathany)\n* [Doc] update package path in example code [#63][] (thanks @paulhammond)\n* [Doc] GoCI badge in README (Linux only) [#60][]\n* [Doc] Cross-platform testing with Vagrant  [#59][] (thanks @nathany)\n\n## [0.8.8] - 2013-06-17\n\n* [Fix] Windows: handle `ERROR_MORE_DATA` on Windows [#49][] (thanks @jbowtie)\n\n## [0.8.7] - 2013-06-03\n\n* [API] Make syscall flags internal\n* [Fix] inotify: ignore event changes\n* [Fix] race in symlink test [#45][] (reported by @srid)\n* [Fix] tests on Windows\n* lower case error messages\n\n## [0.8.6] - 2013-05-23\n\n* kqueue: Use EVT_ONLY flag on Darwin\n* [Doc] Update README with full example\n\n## [0.8.5] - 2013-05-09\n\n* [Fix] inotify: allow monitoring of \"broken\" symlinks (thanks @tsg)\n\n## [0.8.4] - 2013-04-07\n\n* [Fix] kqueue: watch all file events [#40][] (thanks @ChrisBuchholz)\n\n## [0.8.3] - 2013-03-13\n\n* [Fix] inoitfy/kqueue memory leak [#36][] (reported by @nbkolchin)\n* [Fix] kqueue: use fsnFlags for watching a directory [#33][] (reported by @nbkolchin)\n\n## [0.8.2] - 2013-02-07\n\n* [Doc] add Authors\n* [Fix] fix data races for map access [#29][] (thanks @fsouza)\n\n## [0.8.1] - 2013-01-09\n\n* [Fix] Windows path separators\n* [Doc] BSD License\n\n## [0.8.0] - 2012-11-09\n\n* kqueue: directory watching improvements (thanks @vmirage)\n* inotify: add `IN_MOVED_TO` [#25][] (requested by @cpisto)\n* [Fix] kqueue: deleting watched directory [#24][] (reported by @jakerr)\n\n## [0.7.4] - 2012-10-09\n\n* [Fix] inotify: fixes from https://codereview.appspot.com/5418045/ (ugorji)\n* [Fix] kqueue: preserve watch flags when watching for delete [#21][] (reported by @robfig)\n* [Fix] kqueue: watch the directory even if it isn't a new watch (thanks @robfig)\n* [Fix] kqueue: modify after recreation of file\n\n## [0.7.3] - 2012-09-27\n\n* [Fix] kqueue: watch with an existing folder inside the watched folder (thanks @vmirage)\n* [Fix] kqueue: no longer get duplicate CREATE events\n\n## [0.7.2] - 2012-09-01\n\n* kqueue: events for created directories\n\n## [0.7.1] - 2012-07-14\n\n* [Fix] for renaming files\n\n## [0.7.0] - 2012-07-02\n\n* [Feature] FSNotify flags\n* [Fix] inotify: Added file name back to event path\n\n## [0.6.0] - 2012-06-06\n\n* kqueue: watch files after directory created (thanks @tmc)\n\n## [0.5.1] - 2012-05-22\n\n* [Fix] inotify: remove all watches before Close()\n\n## [0.5.0] - 2012-05-03\n\n* [API] kqueue: return errors during watch instead of sending over channel\n* kqueue: match symlink behavior on Linux\n* inotify: add `DELETE_SELF` (requested by @taralx)\n* [Fix] kqueue: handle EINTR (reported by @robfig)\n* [Doc] Godoc example [#1][] (thanks @davecheney)\n\n## [0.4.0] - 2012-03-30\n\n* Go 1 released: build with go tool\n* [Feature] Windows support using winfsnotify\n* Windows does not have attribute change notifications\n* Roll attribute notifications into IsModify\n\n## [0.3.0] - 2012-02-19\n\n* kqueue: add files when watch directory\n\n## [0.2.0] - 2011-12-30\n\n* update to latest Go weekly code\n\n## [0.1.0] - 2011-10-19\n\n* kqueue: add watch on file creation to match inotify\n* kqueue: create file event\n* inotify: ignore `IN_IGNORED` events\n* event String()\n* linux: common FileEvent functions\n* initial commit\n\n[#79]: https://github.com/howeyc/fsnotify/pull/79\n[#77]: https://github.com/howeyc/fsnotify/pull/77\n[#72]: https://github.com/howeyc/fsnotify/issues/72\n[#71]: https://github.com/howeyc/fsnotify/issues/71\n[#70]: https://github.com/howeyc/fsnotify/issues/70\n[#63]: https://github.com/howeyc/fsnotify/issues/63\n[#62]: https://github.com/howeyc/fsnotify/issues/62\n[#60]: https://github.com/howeyc/fsnotify/issues/60\n[#59]: https://github.com/howeyc/fsnotify/issues/59\n[#49]: https://github.com/howeyc/fsnotify/issues/49\n[#45]: https://github.com/howeyc/fsnotify/issues/45\n[#40]: https://github.com/howeyc/fsnotify/issues/40\n[#36]: https://github.com/howeyc/fsnotify/issues/36\n[#33]: https://github.com/howeyc/fsnotify/issues/33\n[#29]: https://github.com/howeyc/fsnotify/issues/29\n[#25]: https://github.com/howeyc/fsnotify/issues/25\n[#24]: https://github.com/howeyc/fsnotify/issues/24\n[#21]: https://github.com/howeyc/fsnotify/issues/21\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md",
    "content": "Thank you for your interest in contributing to fsnotify! We try to review and\nmerge PRs in a reasonable timeframe, but please be aware that:\n\n- To avoid \"wasted\" work, please discus changes on the issue tracker first. You\n  can just send PRs, but they may end up being rejected for one reason or the\n  other.\n\n- fsnotify is a cross-platform library, and changes must work reasonably well on\n  all supported platforms.\n\n- Changes will need to be compatible; old code should still compile, and the\n  runtime behaviour can't change in ways that are likely to lead to problems for\n  users.\n\nTesting\n-------\nJust `go test ./...` runs all the tests; the CI runs this on all supported\nplatforms. Testing different platforms locally can be done with something like\n[goon] or [Vagrant], but this isn't super-easy to set up at the moment.\n\nUse the `-short` flag to make the \"stress test\" run faster.\n\n\n[goon]: https://github.com/arp242/goon\n[Vagrant]: https://www.vagrantup.com/\n[integration_test.go]: /integration_test.go\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/LICENSE",
    "content": "Copyright © 2012 The Go Authors. All rights reserved.\nCopyright © fsnotify Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice, this\n  list of conditions and the following disclaimer in the documentation and/or\n  other materials provided with the distribution.\n* Neither the name of Google Inc. nor the names of its contributors may be used\n  to endorse or promote products derived from this software without specific\n  prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY 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\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/README.md",
    "content": "fsnotify is a Go library to provide cross-platform filesystem notifications on\nWindows, Linux, macOS, BSD, and illumos.\n\nGo 1.17 or newer is required; the full documentation is at\nhttps://pkg.go.dev/github.com/fsnotify/fsnotify\n\n---\n\nPlatform support:\n\n| Backend               | OS         | Status                                                                    |\n| :-------------------- | :--------- | :------------------------------------------------------------------------ |\n| inotify               | Linux      | Supported                                                                 |\n| kqueue                | BSD, macOS | Supported                                                                 |\n| ReadDirectoryChangesW | Windows    | Supported                                                                 |\n| FEN                   | illumos    | Supported                                                                 |\n| fanotify              | Linux 5.9+ | [Not yet](https://github.com/fsnotify/fsnotify/issues/114)                |\n| AHAFS                 | AIX        | [aix branch]; experimental due to lack of maintainer and test environment |\n| FSEvents              | macOS      | [Needs support in x/sys/unix][fsevents]                                   |\n| USN Journals          | Windows    | [Needs support in x/sys/windows][usn]                                     |\n| Polling               | *All*      | [Not yet](https://github.com/fsnotify/fsnotify/issues/9)                  |\n\nLinux and illumos should include Android and Solaris, but these are currently\nuntested.\n\n[fsevents]:   https://github.com/fsnotify/fsnotify/issues/11#issuecomment-1279133120\n[usn]:        https://github.com/fsnotify/fsnotify/issues/53#issuecomment-1279829847\n[aix branch]: https://github.com/fsnotify/fsnotify/issues/353#issuecomment-1284590129\n\nUsage\n-----\nA basic example:\n\n```go\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com/fsnotify/fsnotify\"\n)\n\nfunc main() {\n    // Create new watcher.\n    watcher, err := fsnotify.NewWatcher()\n    if err != nil {\n        log.Fatal(err)\n    }\n    defer watcher.Close()\n\n    // Start listening for events.\n    go func() {\n        for {\n            select {\n            case event, ok := <-watcher.Events:\n                if !ok {\n                    return\n                }\n                log.Println(\"event:\", event)\n                if event.Has(fsnotify.Write) {\n                    log.Println(\"modified file:\", event.Name)\n                }\n            case err, ok := <-watcher.Errors:\n                if !ok {\n                    return\n                }\n                log.Println(\"error:\", err)\n            }\n        }\n    }()\n\n    // Add a path.\n    err = watcher.Add(\"/tmp\")\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    // Block main goroutine forever.\n    <-make(chan struct{})\n}\n```\n\nSome more examples can be found in [cmd/fsnotify](cmd/fsnotify), which can be\nrun with:\n\n    % go run ./cmd/fsnotify\n\nFurther detailed documentation can be found in godoc:\nhttps://pkg.go.dev/github.com/fsnotify/fsnotify\n\nFAQ\n---\n### Will a file still be watched when it's moved to another directory?\nNo, not unless you are watching the location it was moved to.\n\n### Are subdirectories watched?\nNo, you must add watches for any directory you want to watch (a recursive\nwatcher is on the roadmap: [#18]).\n\n[#18]: https://github.com/fsnotify/fsnotify/issues/18\n\n### Do I have to watch the Error and Event channels in a goroutine?\nYes. You can read both channels in the same goroutine using `select` (you don't\nneed a separate goroutine for both channels; see the example).\n\n### Why don't notifications work with NFS, SMB, FUSE, /proc, or /sys?\nfsnotify requires support from underlying OS to work. The current NFS and SMB\nprotocols does not provide network level support for file notifications, and\nneither do the /proc and /sys virtual filesystems.\n\nThis could be fixed with a polling watcher ([#9]), but it's not yet implemented.\n\n[#9]: https://github.com/fsnotify/fsnotify/issues/9\n\n### Why do I get many Chmod events?\nSome programs may generate a lot of attribute changes; for example Spotlight on\nmacOS, anti-virus programs, backup applications, and some others are known to do\nthis. As a rule, it's typically best to ignore Chmod events. They're often not\nuseful, and tend to cause problems.\n\nSpotlight indexing on macOS can result in multiple events (see [#15]). A\ntemporary workaround is to add your folder(s) to the *Spotlight Privacy\nsettings* until we have a native FSEvents implementation (see [#11]).\n\n[#11]: https://github.com/fsnotify/fsnotify/issues/11\n[#15]: https://github.com/fsnotify/fsnotify/issues/15\n\n### Watching a file doesn't work well\nWatching individual files (rather than directories) is generally not recommended\nas many programs (especially editors) update files atomically: it will write to\na temporary file which is then moved to to destination, overwriting the original\n(or some variant thereof). The watcher on the original file is now lost, as that\nno longer exists.\n\nThe upshot of this is that a power failure or crash won't leave a half-written\nfile.\n\nWatch the parent directory and use `Event.Name` to filter out files you're not\ninterested in. There is an example of this in `cmd/fsnotify/file.go`.\n\nPlatform-specific notes\n-----------------------\n### Linux\nWhen a file is removed a REMOVE event won't be emitted until all file\ndescriptors are closed; it will emit a CHMOD instead:\n\n    fp := os.Open(\"file\")\n    os.Remove(\"file\")        // CHMOD\n    fp.Close()               // REMOVE\n\nThis is the event that inotify sends, so not much can be changed about this.\n\nThe `fs.inotify.max_user_watches` sysctl variable specifies the upper limit for\nthe number of watches per user, and `fs.inotify.max_user_instances` specifies\nthe maximum number of inotify instances per user. Every Watcher you create is an\n\"instance\", and every path you add is a \"watch\".\n\nThese are also exposed in `/proc` as `/proc/sys/fs/inotify/max_user_watches` and\n`/proc/sys/fs/inotify/max_user_instances`\n\nTo increase them you can use `sysctl` or write the value to proc file:\n\n    # The default values on Linux 5.18\n    sysctl fs.inotify.max_user_watches=124983\n    sysctl fs.inotify.max_user_instances=128\n\nTo make the changes persist on reboot edit `/etc/sysctl.conf` or\n`/usr/lib/sysctl.d/50-default.conf` (details differ per Linux distro; check your\ndistro's documentation):\n\n    fs.inotify.max_user_watches=124983\n    fs.inotify.max_user_instances=128\n\nReaching the limit will result in a \"no space left on device\" or \"too many open\nfiles\" error.\n\n### kqueue (macOS, all BSD systems)\nkqueue requires opening a file descriptor for every file that's being watched;\nso if you're watching a directory with five files then that's six file\ndescriptors. You will run in to your system's \"max open files\" limit faster on\nthese platforms.\n\nThe sysctl variables `kern.maxfiles` and `kern.maxfilesperproc` can be used to\ncontrol the maximum number of open files.\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/backend_fen.go",
    "content": "//go:build solaris\n// +build solaris\n\n// Note: the documentation on the Watcher type and methods is generated from\n// mkdoc.zsh\n\npackage fsnotify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sync\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// Watcher watches a set of paths, delivering events on a channel.\n//\n// A watcher should not be copied (e.g. pass it by pointer, rather than by\n// value).\n//\n// # Linux notes\n//\n// When a file is removed a Remove event won't be emitted until all file\n// descriptors are closed, and deletes will always emit a Chmod. For example:\n//\n//\tfp := os.Open(\"file\")\n//\tos.Remove(\"file\")        // Triggers Chmod\n//\tfp.Close()               // Triggers Remove\n//\n// This is the event that inotify sends, so not much can be changed about this.\n//\n// The fs.inotify.max_user_watches sysctl variable specifies the upper limit\n// for the number of watches per user, and fs.inotify.max_user_instances\n// specifies the maximum number of inotify instances per user. Every Watcher you\n// create is an \"instance\", and every path you add is a \"watch\".\n//\n// These are also exposed in /proc as /proc/sys/fs/inotify/max_user_watches and\n// /proc/sys/fs/inotify/max_user_instances\n//\n// To increase them you can use sysctl or write the value to the /proc file:\n//\n//\t# Default values on Linux 5.18\n//\tsysctl fs.inotify.max_user_watches=124983\n//\tsysctl fs.inotify.max_user_instances=128\n//\n// To make the changes persist on reboot edit /etc/sysctl.conf or\n// /usr/lib/sysctl.d/50-default.conf (details differ per Linux distro; check\n// your distro's documentation):\n//\n//\tfs.inotify.max_user_watches=124983\n//\tfs.inotify.max_user_instances=128\n//\n// Reaching the limit will result in a \"no space left on device\" or \"too many open\n// files\" error.\n//\n// # kqueue notes (macOS, BSD)\n//\n// kqueue requires opening a file descriptor for every file that's being watched;\n// so if you're watching a directory with five files then that's six file\n// descriptors. You will run in to your system's \"max open files\" limit faster on\n// these platforms.\n//\n// The sysctl variables kern.maxfiles and kern.maxfilesperproc can be used to\n// control the maximum number of open files, as well as /etc/login.conf on BSD\n// systems.\n//\n// # Windows notes\n//\n// Paths can be added as \"C:\\path\\to\\dir\", but forward slashes\n// (\"C:/path/to/dir\") will also work.\n//\n// When a watched directory is removed it will always send an event for the\n// directory itself, but may not send events for all files in that directory.\n// Sometimes it will send events for all times, sometimes it will send no\n// events, and often only for some files.\n//\n// The default ReadDirectoryChangesW() buffer size is 64K, which is the largest\n// value that is guaranteed to work with SMB filesystems. If you have many\n// events in quick succession this may not be enough, and you will have to use\n// [WithBufferSize] to increase the value.\ntype Watcher struct {\n\t// Events sends the filesystem change events.\n\t//\n\t// fsnotify can send the following events; a \"path\" here can refer to a\n\t// file, directory, symbolic link, or special file like a FIFO.\n\t//\n\t//   fsnotify.Create    A new path was created; this may be followed by one\n\t//                      or more Write events if data also gets written to a\n\t//                      file.\n\t//\n\t//   fsnotify.Remove    A path was removed.\n\t//\n\t//   fsnotify.Rename    A path was renamed. A rename is always sent with the\n\t//                      old path as Event.Name, and a Create event will be\n\t//                      sent with the new name. Renames are only sent for\n\t//                      paths that are currently watched; e.g. moving an\n\t//                      unmonitored file into a monitored directory will\n\t//                      show up as just a Create. Similarly, renaming a file\n\t//                      to outside a monitored directory will show up as\n\t//                      only a Rename.\n\t//\n\t//   fsnotify.Write     A file or named pipe was written to. A Truncate will\n\t//                      also trigger a Write. A single \"write action\"\n\t//                      initiated by the user may show up as one or multiple\n\t//                      writes, depending on when the system syncs things to\n\t//                      disk. For example when compiling a large Go program\n\t//                      you may get hundreds of Write events, and you may\n\t//                      want to wait until you've stopped receiving them\n\t//                      (see the dedup example in cmd/fsnotify).\n\t//\n\t//                      Some systems may send Write event for directories\n\t//                      when the directory content changes.\n\t//\n\t//   fsnotify.Chmod     Attributes were changed. On Linux this is also sent\n\t//                      when a file is removed (or more accurately, when a\n\t//                      link to an inode is removed). On kqueue it's sent\n\t//                      when a file is truncated. On Windows it's never\n\t//                      sent.\n\tEvents chan Event\n\n\t// Errors sends any errors.\n\t//\n\t// ErrEventOverflow is used to indicate there are too many events:\n\t//\n\t//  - inotify:      There are too many queued events (fs.inotify.max_queued_events sysctl)\n\t//  - windows:      The buffer size is too small; WithBufferSize() can be used to increase it.\n\t//  - kqueue, fen:  Not used.\n\tErrors chan error\n\n\tmu      sync.Mutex\n\tport    *unix.EventPort\n\tdone    chan struct{}       // Channel for sending a \"quit message\" to the reader goroutine\n\tdirs    map[string]struct{} // Explicitly watched directories\n\twatches map[string]struct{} // Explicitly watched non-directories\n}\n\n// NewWatcher creates a new Watcher.\nfunc NewWatcher() (*Watcher, error) {\n\treturn NewBufferedWatcher(0)\n}\n\n// NewBufferedWatcher creates a new Watcher with a buffered Watcher.Events\n// channel.\n//\n// The main use case for this is situations with a very large number of events\n// where the kernel buffer size can't be increased (e.g. due to lack of\n// permissions). An unbuffered Watcher will perform better for almost all use\n// cases, and whenever possible you will be better off increasing the kernel\n// buffers instead of adding a large userspace buffer.\nfunc NewBufferedWatcher(sz uint) (*Watcher, error) {\n\tw := &Watcher{\n\t\tEvents:  make(chan Event, sz),\n\t\tErrors:  make(chan error),\n\t\tdirs:    make(map[string]struct{}),\n\t\twatches: make(map[string]struct{}),\n\t\tdone:    make(chan struct{}),\n\t}\n\n\tvar err error\n\tw.port, err = unix.NewEventPort()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"fsnotify.NewWatcher: %w\", err)\n\t}\n\n\tgo w.readEvents()\n\treturn w, nil\n}\n\n// sendEvent attempts to send an event to the user, returning true if the event\n// was put in the channel successfully and false if the watcher has been closed.\nfunc (w *Watcher) sendEvent(name string, op Op) (sent bool) {\n\tselect {\n\tcase w.Events <- Event{Name: name, Op: op}:\n\t\treturn true\n\tcase <-w.done:\n\t\treturn false\n\t}\n}\n\n// sendError attempts to send an error to the user, returning true if the error\n// was put in the channel successfully and false if the watcher has been closed.\nfunc (w *Watcher) sendError(err error) (sent bool) {\n\tselect {\n\tcase w.Errors <- err:\n\t\treturn true\n\tcase <-w.done:\n\t\treturn false\n\t}\n}\n\nfunc (w *Watcher) isClosed() bool {\n\tselect {\n\tcase <-w.done:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Close removes all watches and closes the Events channel.\nfunc (w *Watcher) Close() error {\n\t// Take the lock used by associateFile to prevent lingering events from\n\t// being processed after the close\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\tclose(w.done)\n\treturn w.port.Close()\n}\n\n// Add starts monitoring the path for changes.\n//\n// A path can only be watched once; watching it more than once is a no-op and will\n// not return an error. Paths that do not yet exist on the filesystem cannot be\n// watched.\n//\n// A watch will be automatically removed if the watched path is deleted or\n// renamed. The exception is the Windows backend, which doesn't remove the\n// watcher on renames.\n//\n// Notifications on network filesystems (NFS, SMB, FUSE, etc.) or special\n// filesystems (/proc, /sys, etc.) generally don't work.\n//\n// Returns [ErrClosed] if [Watcher.Close] was called.\n//\n// See [Watcher.AddWith] for a version that allows adding options.\n//\n// # Watching directories\n//\n// All files in a directory are monitored, including new files that are created\n// after the watcher is started. Subdirectories are not watched (i.e. it's\n// non-recursive).\n//\n// # Watching files\n//\n// Watching individual files (rather than directories) is generally not\n// recommended as many programs (especially editors) update files atomically: it\n// will write to a temporary file which is then moved to to destination,\n// overwriting the original (or some variant thereof). The watcher on the\n// original file is now lost, as that no longer exists.\n//\n// The upshot of this is that a power failure or crash won't leave a\n// half-written file.\n//\n// Watch the parent directory and use Event.Name to filter out files you're not\n// interested in. There is an example of this in cmd/fsnotify/file.go.\nfunc (w *Watcher) Add(name string) error { return w.AddWith(name) }\n\n// AddWith is like [Watcher.Add], but allows adding options. When using Add()\n// the defaults described below are used.\n//\n// Possible options are:\n//\n//   - [WithBufferSize] sets the buffer size for the Windows backend; no-op on\n//     other platforms. The default is 64K (65536 bytes).\nfunc (w *Watcher) AddWith(name string, opts ...addOpt) error {\n\tif w.isClosed() {\n\t\treturn ErrClosed\n\t}\n\tif w.port.PathIsWatched(name) {\n\t\treturn nil\n\t}\n\n\t_ = getOptions(opts...)\n\n\t// Currently we resolve symlinks that were explicitly requested to be\n\t// watched. Otherwise we would use LStat here.\n\tstat, err := os.Stat(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Associate all files in the directory.\n\tif stat.IsDir() {\n\t\terr := w.handleDirectory(name, stat, true, w.associateFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tw.mu.Lock()\n\t\tw.dirs[name] = struct{}{}\n\t\tw.mu.Unlock()\n\t\treturn nil\n\t}\n\n\terr = w.associateFile(name, stat, true)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tw.mu.Lock()\n\tw.watches[name] = struct{}{}\n\tw.mu.Unlock()\n\treturn nil\n}\n\n// Remove stops monitoring the path for changes.\n//\n// Directories are always removed non-recursively. For example, if you added\n// /tmp/dir and /tmp/dir/subdir then you will need to remove both.\n//\n// Removing a path that has not yet been added returns [ErrNonExistentWatch].\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) Remove(name string) error {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\tif !w.port.PathIsWatched(name) {\n\t\treturn fmt.Errorf(\"%w: %s\", ErrNonExistentWatch, name)\n\t}\n\n\t// The user has expressed an intent. Immediately remove this name from\n\t// whichever watch list it might be in. If it's not in there the delete\n\t// doesn't cause harm.\n\tw.mu.Lock()\n\tdelete(w.watches, name)\n\tdelete(w.dirs, name)\n\tw.mu.Unlock()\n\n\tstat, err := os.Stat(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Remove associations for every file in the directory.\n\tif stat.IsDir() {\n\t\terr := w.handleDirectory(name, stat, false, w.dissociateFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t}\n\n\terr = w.port.DissociatePath(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n// readEvents contains the main loop that runs in a goroutine watching for events.\nfunc (w *Watcher) readEvents() {\n\t// If this function returns, the watcher has been closed and we can close\n\t// these channels\n\tdefer func() {\n\t\tclose(w.Errors)\n\t\tclose(w.Events)\n\t}()\n\n\tpevents := make([]unix.PortEvent, 8)\n\tfor {\n\t\tcount, err := w.port.Get(pevents, 1, nil)\n\t\tif err != nil && err != unix.ETIME {\n\t\t\t// Interrupted system call (count should be 0) ignore and continue\n\t\t\tif errors.Is(err, unix.EINTR) && count == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// Get failed because we called w.Close()\n\t\t\tif errors.Is(err, unix.EBADF) && w.isClosed() {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// There was an error not caused by calling w.Close()\n\t\t\tif !w.sendError(err) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tp := pevents[:count]\n\t\tfor _, pevent := range p {\n\t\t\tif pevent.Source != unix.PORT_SOURCE_FILE {\n\t\t\t\t// Event from unexpected source received; should never happen.\n\t\t\t\tif !w.sendError(errors.New(\"Event from unexpected source received\")) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\terr = w.handleEvent(&pevent)\n\t\t\tif err != nil {\n\t\t\t\tif !w.sendError(err) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (w *Watcher) handleDirectory(path string, stat os.FileInfo, follow bool, handler func(string, os.FileInfo, bool) error) error {\n\tfiles, err := os.ReadDir(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Handle all children of the directory.\n\tfor _, entry := range files {\n\t\tfinfo, err := entry.Info()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = handler(filepath.Join(path, finfo.Name()), finfo, false)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// And finally handle the directory itself.\n\treturn handler(path, stat, follow)\n}\n\n// handleEvent might need to emit more than one fsnotify event if the events\n// bitmap matches more than one event type (e.g. the file was both modified and\n// had the attributes changed between when the association was created and the\n// when event was returned)\nfunc (w *Watcher) handleEvent(event *unix.PortEvent) error {\n\tvar (\n\t\tevents     = event.Events\n\t\tpath       = event.Path\n\t\tfmode      = event.Cookie.(os.FileMode)\n\t\treRegister = true\n\t)\n\n\tw.mu.Lock()\n\t_, watchedDir := w.dirs[path]\n\t_, watchedPath := w.watches[path]\n\tw.mu.Unlock()\n\tisWatched := watchedDir || watchedPath\n\n\tif events&unix.FILE_DELETE != 0 {\n\t\tif !w.sendEvent(path, Remove) {\n\t\t\treturn nil\n\t\t}\n\t\treRegister = false\n\t}\n\tif events&unix.FILE_RENAME_FROM != 0 {\n\t\tif !w.sendEvent(path, Rename) {\n\t\t\treturn nil\n\t\t}\n\t\t// Don't keep watching the new file name\n\t\treRegister = false\n\t}\n\tif events&unix.FILE_RENAME_TO != 0 {\n\t\t// We don't report a Rename event for this case, because Rename events\n\t\t// are interpreted as referring to the _old_ name of the file, and in\n\t\t// this case the event would refer to the new name of the file. This\n\t\t// type of rename event is not supported by fsnotify.\n\n\t\t// inotify reports a Remove event in this case, so we simulate this\n\t\t// here.\n\t\tif !w.sendEvent(path, Remove) {\n\t\t\treturn nil\n\t\t}\n\t\t// Don't keep watching the file that was removed\n\t\treRegister = false\n\t}\n\n\t// The file is gone, nothing left to do.\n\tif !reRegister {\n\t\tif watchedDir {\n\t\t\tw.mu.Lock()\n\t\t\tdelete(w.dirs, path)\n\t\t\tw.mu.Unlock()\n\t\t}\n\t\tif watchedPath {\n\t\t\tw.mu.Lock()\n\t\t\tdelete(w.watches, path)\n\t\t\tw.mu.Unlock()\n\t\t}\n\t\treturn nil\n\t}\n\n\t// If we didn't get a deletion the file still exists and we're going to have\n\t// to watch it again. Let's Stat it now so that we can compare permissions\n\t// and have what we need to continue watching the file\n\n\tstat, err := os.Lstat(path)\n\tif err != nil {\n\t\t// This is unexpected, but we should still emit an event. This happens\n\t\t// most often on \"rm -r\" of a subdirectory inside a watched directory We\n\t\t// get a modify event of something happening inside, but by the time we\n\t\t// get here, the sudirectory is already gone. Clearly we were watching\n\t\t// this path but now it is gone. Let's tell the user that it was\n\t\t// removed.\n\t\tif !w.sendEvent(path, Remove) {\n\t\t\treturn nil\n\t\t}\n\t\t// Suppress extra write events on removed directories; they are not\n\t\t// informative and can be confusing.\n\t\treturn nil\n\t}\n\n\t// resolve symlinks that were explicitly watched as we would have at Add()\n\t// time. this helps suppress spurious Chmod events on watched symlinks\n\tif isWatched {\n\t\tstat, err = os.Stat(path)\n\t\tif err != nil {\n\t\t\t// The symlink still exists, but the target is gone. Report the\n\t\t\t// Remove similar to above.\n\t\t\tif !w.sendEvent(path, Remove) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\t// Don't return the error\n\t\t}\n\t}\n\n\tif events&unix.FILE_MODIFIED != 0 {\n\t\tif fmode.IsDir() {\n\t\t\tif watchedDir {\n\t\t\t\tif err := w.updateDirectory(path); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif !w.sendEvent(path, Write) {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif !w.sendEvent(path, Write) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tif events&unix.FILE_ATTRIB != 0 && stat != nil {\n\t\t// Only send Chmod if perms changed\n\t\tif stat.Mode().Perm() != fmode.Perm() {\n\t\t\tif !w.sendEvent(path, Chmod) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\n\tif stat != nil {\n\t\t// If we get here, it means we've hit an event above that requires us to\n\t\t// continue watching the file or directory\n\t\treturn w.associateFile(path, stat, isWatched)\n\t}\n\treturn nil\n}\n\nfunc (w *Watcher) updateDirectory(path string) error {\n\t// The directory was modified, so we must find unwatched entities and watch\n\t// them. If something was removed from the directory, nothing will happen,\n\t// as everything else should still be watched.\n\tfiles, err := os.ReadDir(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, entry := range files {\n\t\tpath := filepath.Join(path, entry.Name())\n\t\tif w.port.PathIsWatched(path) {\n\t\t\tcontinue\n\t\t}\n\n\t\tfinfo, err := entry.Info()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = w.associateFile(path, finfo, false)\n\t\tif err != nil {\n\t\t\tif !w.sendError(err) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tif !w.sendEvent(path, Create) {\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (w *Watcher) associateFile(path string, stat os.FileInfo, follow bool) error {\n\tif w.isClosed() {\n\t\treturn ErrClosed\n\t}\n\t// This is primarily protecting the call to AssociatePath but it is\n\t// important and intentional that the call to PathIsWatched is also\n\t// protected by this mutex. Without this mutex, AssociatePath has been seen\n\t// to error out that the path is already associated.\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\n\tif w.port.PathIsWatched(path) {\n\t\t// Remove the old association in favor of this one If we get ENOENT,\n\t\t// then while the x/sys/unix wrapper still thought that this path was\n\t\t// associated, the underlying event port did not. This call will have\n\t\t// cleared up that discrepancy. The most likely cause is that the event\n\t\t// has fired but we haven't processed it yet.\n\t\terr := w.port.DissociatePath(path)\n\t\tif err != nil && err != unix.ENOENT {\n\t\t\treturn err\n\t\t}\n\t}\n\t// FILE_NOFOLLOW means we watch symlinks themselves rather than their\n\t// targets.\n\tevents := unix.FILE_MODIFIED | unix.FILE_ATTRIB | unix.FILE_NOFOLLOW\n\tif follow {\n\t\t// We *DO* follow symlinks for explicitly watched entries.\n\t\tevents = unix.FILE_MODIFIED | unix.FILE_ATTRIB\n\t}\n\treturn w.port.AssociatePath(path, stat,\n\t\tevents,\n\t\tstat.Mode())\n}\n\nfunc (w *Watcher) dissociateFile(path string, stat os.FileInfo, unused bool) error {\n\tif !w.port.PathIsWatched(path) {\n\t\treturn nil\n\t}\n\treturn w.port.DissociatePath(path)\n}\n\n// WatchList returns all paths explicitly added with [Watcher.Add] (and are not\n// yet removed).\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) WatchList() []string {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\n\tentries := make([]string, 0, len(w.watches)+len(w.dirs))\n\tfor pathname := range w.dirs {\n\t\tentries = append(entries, pathname)\n\t}\n\tfor pathname := range w.watches {\n\t\tentries = append(entries, pathname)\n\t}\n\n\treturn entries\n}\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/backend_inotify.go",
    "content": "//go:build linux && !appengine\n// +build linux,!appengine\n\n// Note: the documentation on the Watcher type and methods is generated from\n// mkdoc.zsh\n\npackage fsnotify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\t\"unsafe\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// Watcher watches a set of paths, delivering events on a channel.\n//\n// A watcher should not be copied (e.g. pass it by pointer, rather than by\n// value).\n//\n// # Linux notes\n//\n// When a file is removed a Remove event won't be emitted until all file\n// descriptors are closed, and deletes will always emit a Chmod. For example:\n//\n//\tfp := os.Open(\"file\")\n//\tos.Remove(\"file\")        // Triggers Chmod\n//\tfp.Close()               // Triggers Remove\n//\n// This is the event that inotify sends, so not much can be changed about this.\n//\n// The fs.inotify.max_user_watches sysctl variable specifies the upper limit\n// for the number of watches per user, and fs.inotify.max_user_instances\n// specifies the maximum number of inotify instances per user. Every Watcher you\n// create is an \"instance\", and every path you add is a \"watch\".\n//\n// These are also exposed in /proc as /proc/sys/fs/inotify/max_user_watches and\n// /proc/sys/fs/inotify/max_user_instances\n//\n// To increase them you can use sysctl or write the value to the /proc file:\n//\n//\t# Default values on Linux 5.18\n//\tsysctl fs.inotify.max_user_watches=124983\n//\tsysctl fs.inotify.max_user_instances=128\n//\n// To make the changes persist on reboot edit /etc/sysctl.conf or\n// /usr/lib/sysctl.d/50-default.conf (details differ per Linux distro; check\n// your distro's documentation):\n//\n//\tfs.inotify.max_user_watches=124983\n//\tfs.inotify.max_user_instances=128\n//\n// Reaching the limit will result in a \"no space left on device\" or \"too many open\n// files\" error.\n//\n// # kqueue notes (macOS, BSD)\n//\n// kqueue requires opening a file descriptor for every file that's being watched;\n// so if you're watching a directory with five files then that's six file\n// descriptors. You will run in to your system's \"max open files\" limit faster on\n// these platforms.\n//\n// The sysctl variables kern.maxfiles and kern.maxfilesperproc can be used to\n// control the maximum number of open files, as well as /etc/login.conf on BSD\n// systems.\n//\n// # Windows notes\n//\n// Paths can be added as \"C:\\path\\to\\dir\", but forward slashes\n// (\"C:/path/to/dir\") will also work.\n//\n// When a watched directory is removed it will always send an event for the\n// directory itself, but may not send events for all files in that directory.\n// Sometimes it will send events for all times, sometimes it will send no\n// events, and often only for some files.\n//\n// The default ReadDirectoryChangesW() buffer size is 64K, which is the largest\n// value that is guaranteed to work with SMB filesystems. If you have many\n// events in quick succession this may not be enough, and you will have to use\n// [WithBufferSize] to increase the value.\ntype Watcher struct {\n\t// Events sends the filesystem change events.\n\t//\n\t// fsnotify can send the following events; a \"path\" here can refer to a\n\t// file, directory, symbolic link, or special file like a FIFO.\n\t//\n\t//   fsnotify.Create    A new path was created; this may be followed by one\n\t//                      or more Write events if data also gets written to a\n\t//                      file.\n\t//\n\t//   fsnotify.Remove    A path was removed.\n\t//\n\t//   fsnotify.Rename    A path was renamed. A rename is always sent with the\n\t//                      old path as Event.Name, and a Create event will be\n\t//                      sent with the new name. Renames are only sent for\n\t//                      paths that are currently watched; e.g. moving an\n\t//                      unmonitored file into a monitored directory will\n\t//                      show up as just a Create. Similarly, renaming a file\n\t//                      to outside a monitored directory will show up as\n\t//                      only a Rename.\n\t//\n\t//   fsnotify.Write     A file or named pipe was written to. A Truncate will\n\t//                      also trigger a Write. A single \"write action\"\n\t//                      initiated by the user may show up as one or multiple\n\t//                      writes, depending on when the system syncs things to\n\t//                      disk. For example when compiling a large Go program\n\t//                      you may get hundreds of Write events, and you may\n\t//                      want to wait until you've stopped receiving them\n\t//                      (see the dedup example in cmd/fsnotify).\n\t//\n\t//                      Some systems may send Write event for directories\n\t//                      when the directory content changes.\n\t//\n\t//   fsnotify.Chmod     Attributes were changed. On Linux this is also sent\n\t//                      when a file is removed (or more accurately, when a\n\t//                      link to an inode is removed). On kqueue it's sent\n\t//                      when a file is truncated. On Windows it's never\n\t//                      sent.\n\tEvents chan Event\n\n\t// Errors sends any errors.\n\t//\n\t// ErrEventOverflow is used to indicate there are too many events:\n\t//\n\t//  - inotify:      There are too many queued events (fs.inotify.max_queued_events sysctl)\n\t//  - windows:      The buffer size is too small; WithBufferSize() can be used to increase it.\n\t//  - kqueue, fen:  Not used.\n\tErrors chan error\n\n\t// Store fd here as os.File.Read() will no longer return on close after\n\t// calling Fd(). See: https://github.com/golang/go/issues/26439\n\tfd          int\n\tinotifyFile *os.File\n\twatches     *watches\n\tdone        chan struct{} // Channel for sending a \"quit message\" to the reader goroutine\n\tcloseMu     sync.Mutex\n\tdoneResp    chan struct{} // Channel to respond to Close\n}\n\ntype (\n\twatches struct {\n\t\tmu   sync.RWMutex\n\t\twd   map[uint32]*watch // wd → watch\n\t\tpath map[string]uint32 // pathname → wd\n\t}\n\twatch struct {\n\t\twd    uint32 // Watch descriptor (as returned by the inotify_add_watch() syscall)\n\t\tflags uint32 // inotify flags of this watch (see inotify(7) for the list of valid flags)\n\t\tpath  string // Watch path.\n\t}\n)\n\nfunc newWatches() *watches {\n\treturn &watches{\n\t\twd:   make(map[uint32]*watch),\n\t\tpath: make(map[string]uint32),\n\t}\n}\n\nfunc (w *watches) len() int {\n\tw.mu.RLock()\n\tdefer w.mu.RUnlock()\n\treturn len(w.wd)\n}\n\nfunc (w *watches) add(ww *watch) {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\tw.wd[ww.wd] = ww\n\tw.path[ww.path] = ww.wd\n}\n\nfunc (w *watches) remove(wd uint32) {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\tdelete(w.path, w.wd[wd].path)\n\tdelete(w.wd, wd)\n}\n\nfunc (w *watches) removePath(path string) (uint32, bool) {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\n\twd, ok := w.path[path]\n\tif !ok {\n\t\treturn 0, false\n\t}\n\n\tdelete(w.path, path)\n\tdelete(w.wd, wd)\n\n\treturn wd, true\n}\n\nfunc (w *watches) byPath(path string) *watch {\n\tw.mu.RLock()\n\tdefer w.mu.RUnlock()\n\treturn w.wd[w.path[path]]\n}\n\nfunc (w *watches) byWd(wd uint32) *watch {\n\tw.mu.RLock()\n\tdefer w.mu.RUnlock()\n\treturn w.wd[wd]\n}\n\nfunc (w *watches) updatePath(path string, f func(*watch) (*watch, error)) error {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\n\tvar existing *watch\n\twd, ok := w.path[path]\n\tif ok {\n\t\texisting = w.wd[wd]\n\t}\n\n\tupd, err := f(existing)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif upd != nil {\n\t\tw.wd[upd.wd] = upd\n\t\tw.path[upd.path] = upd.wd\n\n\t\tif upd.wd != wd {\n\t\t\tdelete(w.wd, wd)\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// NewWatcher creates a new Watcher.\nfunc NewWatcher() (*Watcher, error) {\n\treturn NewBufferedWatcher(0)\n}\n\n// NewBufferedWatcher creates a new Watcher with a buffered Watcher.Events\n// channel.\n//\n// The main use case for this is situations with a very large number of events\n// where the kernel buffer size can't be increased (e.g. due to lack of\n// permissions). An unbuffered Watcher will perform better for almost all use\n// cases, and whenever possible you will be better off increasing the kernel\n// buffers instead of adding a large userspace buffer.\nfunc NewBufferedWatcher(sz uint) (*Watcher, error) {\n\t// Need to set nonblocking mode for SetDeadline to work, otherwise blocking\n\t// I/O operations won't terminate on close.\n\tfd, errno := unix.InotifyInit1(unix.IN_CLOEXEC | unix.IN_NONBLOCK)\n\tif fd == -1 {\n\t\treturn nil, errno\n\t}\n\n\tw := &Watcher{\n\t\tfd:          fd,\n\t\tinotifyFile: os.NewFile(uintptr(fd), \"\"),\n\t\twatches:     newWatches(),\n\t\tEvents:      make(chan Event, sz),\n\t\tErrors:      make(chan error),\n\t\tdone:        make(chan struct{}),\n\t\tdoneResp:    make(chan struct{}),\n\t}\n\n\tgo w.readEvents()\n\treturn w, nil\n}\n\n// Returns true if the event was sent, or false if watcher is closed.\nfunc (w *Watcher) sendEvent(e Event) bool {\n\tselect {\n\tcase w.Events <- e:\n\t\treturn true\n\tcase <-w.done:\n\t\treturn false\n\t}\n}\n\n// Returns true if the error was sent, or false if watcher is closed.\nfunc (w *Watcher) sendError(err error) bool {\n\tselect {\n\tcase w.Errors <- err:\n\t\treturn true\n\tcase <-w.done:\n\t\treturn false\n\t}\n}\n\nfunc (w *Watcher) isClosed() bool {\n\tselect {\n\tcase <-w.done:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Close removes all watches and closes the Events channel.\nfunc (w *Watcher) Close() error {\n\tw.closeMu.Lock()\n\tif w.isClosed() {\n\t\tw.closeMu.Unlock()\n\t\treturn nil\n\t}\n\tclose(w.done)\n\tw.closeMu.Unlock()\n\n\t// Causes any blocking reads to return with an error, provided the file\n\t// still supports deadline operations.\n\terr := w.inotifyFile.Close()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Wait for goroutine to close\n\t<-w.doneResp\n\n\treturn nil\n}\n\n// Add starts monitoring the path for changes.\n//\n// A path can only be watched once; watching it more than once is a no-op and will\n// not return an error. Paths that do not yet exist on the filesystem cannot be\n// watched.\n//\n// A watch will be automatically removed if the watched path is deleted or\n// renamed. The exception is the Windows backend, which doesn't remove the\n// watcher on renames.\n//\n// Notifications on network filesystems (NFS, SMB, FUSE, etc.) or special\n// filesystems (/proc, /sys, etc.) generally don't work.\n//\n// Returns [ErrClosed] if [Watcher.Close] was called.\n//\n// See [Watcher.AddWith] for a version that allows adding options.\n//\n// # Watching directories\n//\n// All files in a directory are monitored, including new files that are created\n// after the watcher is started. Subdirectories are not watched (i.e. it's\n// non-recursive).\n//\n// # Watching files\n//\n// Watching individual files (rather than directories) is generally not\n// recommended as many programs (especially editors) update files atomically: it\n// will write to a temporary file which is then moved to to destination,\n// overwriting the original (or some variant thereof). The watcher on the\n// original file is now lost, as that no longer exists.\n//\n// The upshot of this is that a power failure or crash won't leave a\n// half-written file.\n//\n// Watch the parent directory and use Event.Name to filter out files you're not\n// interested in. There is an example of this in cmd/fsnotify/file.go.\nfunc (w *Watcher) Add(name string) error { return w.AddWith(name) }\n\n// AddWith is like [Watcher.Add], but allows adding options. When using Add()\n// the defaults described below are used.\n//\n// Possible options are:\n//\n//   - [WithBufferSize] sets the buffer size for the Windows backend; no-op on\n//     other platforms. The default is 64K (65536 bytes).\nfunc (w *Watcher) AddWith(name string, opts ...addOpt) error {\n\tif w.isClosed() {\n\t\treturn ErrClosed\n\t}\n\n\tname = filepath.Clean(name)\n\t_ = getOptions(opts...)\n\n\tvar flags uint32 = unix.IN_MOVED_TO | unix.IN_MOVED_FROM |\n\t\tunix.IN_CREATE | unix.IN_ATTRIB | unix.IN_MODIFY |\n\t\tunix.IN_MOVE_SELF | unix.IN_DELETE | unix.IN_DELETE_SELF\n\n\treturn w.watches.updatePath(name, func(existing *watch) (*watch, error) {\n\t\tif existing != nil {\n\t\t\tflags |= existing.flags | unix.IN_MASK_ADD\n\t\t}\n\n\t\twd, err := unix.InotifyAddWatch(w.fd, name, flags)\n\t\tif wd == -1 {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif existing == nil {\n\t\t\treturn &watch{\n\t\t\t\twd:    uint32(wd),\n\t\t\t\tpath:  name,\n\t\t\t\tflags: flags,\n\t\t\t}, nil\n\t\t}\n\n\t\texisting.wd = uint32(wd)\n\t\texisting.flags = flags\n\t\treturn existing, nil\n\t})\n}\n\n// Remove stops monitoring the path for changes.\n//\n// Directories are always removed non-recursively. For example, if you added\n// /tmp/dir and /tmp/dir/subdir then you will need to remove both.\n//\n// Removing a path that has not yet been added returns [ErrNonExistentWatch].\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) Remove(name string) error {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\treturn w.remove(filepath.Clean(name))\n}\n\nfunc (w *Watcher) remove(name string) error {\n\twd, ok := w.watches.removePath(name)\n\tif !ok {\n\t\treturn fmt.Errorf(\"%w: %s\", ErrNonExistentWatch, name)\n\t}\n\n\tsuccess, errno := unix.InotifyRmWatch(w.fd, wd)\n\tif success == -1 {\n\t\t// TODO: Perhaps it's not helpful to return an error here in every case;\n\t\t//       The only two possible errors are:\n\t\t//\n\t\t//       - EBADF, which happens when w.fd is not a valid file descriptor\n\t\t//         of any kind.\n\t\t//       - EINVAL, which is when fd is not an inotify descriptor or wd\n\t\t//         is not a valid watch descriptor. Watch descriptors are\n\t\t//         invalidated when they are removed explicitly or implicitly;\n\t\t//         explicitly by inotify_rm_watch, implicitly when the file they\n\t\t//         are watching is deleted.\n\t\treturn errno\n\t}\n\treturn nil\n}\n\n// WatchList returns all paths explicitly added with [Watcher.Add] (and are not\n// yet removed).\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) WatchList() []string {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\n\tentries := make([]string, 0, w.watches.len())\n\tw.watches.mu.RLock()\n\tfor pathname := range w.watches.path {\n\t\tentries = append(entries, pathname)\n\t}\n\tw.watches.mu.RUnlock()\n\n\treturn entries\n}\n\n// readEvents reads from the inotify file descriptor, converts the\n// received events into Event objects and sends them via the Events channel\nfunc (w *Watcher) readEvents() {\n\tdefer func() {\n\t\tclose(w.doneResp)\n\t\tclose(w.Errors)\n\t\tclose(w.Events)\n\t}()\n\n\tvar (\n\t\tbuf   [unix.SizeofInotifyEvent * 4096]byte // Buffer for a maximum of 4096 raw events\n\t\terrno error                                // Syscall errno\n\t)\n\tfor {\n\t\t// See if we have been closed.\n\t\tif w.isClosed() {\n\t\t\treturn\n\t\t}\n\n\t\tn, err := w.inotifyFile.Read(buf[:])\n\t\tswitch {\n\t\tcase errors.Unwrap(err) == os.ErrClosed:\n\t\t\treturn\n\t\tcase err != nil:\n\t\t\tif !w.sendError(err) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif n < unix.SizeofInotifyEvent {\n\t\t\tvar err error\n\t\t\tif n == 0 {\n\t\t\t\terr = io.EOF // If EOF is received. This should really never happen.\n\t\t\t} else if n < 0 {\n\t\t\t\terr = errno // If an error occurred while reading.\n\t\t\t} else {\n\t\t\t\terr = errors.New(\"notify: short read in readEvents()\") // Read was too short.\n\t\t\t}\n\t\t\tif !w.sendError(err) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tvar offset uint32\n\t\t// We don't know how many events we just read into the buffer\n\t\t// While the offset points to at least one whole event...\n\t\tfor offset <= uint32(n-unix.SizeofInotifyEvent) {\n\t\t\tvar (\n\t\t\t\t// Point \"raw\" to the event in the buffer\n\t\t\t\traw     = (*unix.InotifyEvent)(unsafe.Pointer(&buf[offset]))\n\t\t\t\tmask    = uint32(raw.Mask)\n\t\t\t\tnameLen = uint32(raw.Len)\n\t\t\t)\n\n\t\t\tif mask&unix.IN_Q_OVERFLOW != 0 {\n\t\t\t\tif !w.sendError(ErrEventOverflow) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If the event happened to the watched directory or the watched file, the kernel\n\t\t\t// doesn't append the filename to the event, but we would like to always fill the\n\t\t\t// the \"Name\" field with a valid filename. We retrieve the path of the watch from\n\t\t\t// the \"paths\" map.\n\t\t\twatch := w.watches.byWd(uint32(raw.Wd))\n\n\t\t\t// inotify will automatically remove the watch on deletes; just need\n\t\t\t// to clean our state here.\n\t\t\tif watch != nil && mask&unix.IN_DELETE_SELF == unix.IN_DELETE_SELF {\n\t\t\t\tw.watches.remove(watch.wd)\n\t\t\t}\n\t\t\t// We can't really update the state when a watched path is moved;\n\t\t\t// only IN_MOVE_SELF is sent and not IN_MOVED_{FROM,TO}. So remove\n\t\t\t// the watch.\n\t\t\tif watch != nil && mask&unix.IN_MOVE_SELF == unix.IN_MOVE_SELF {\n\t\t\t\terr := w.remove(watch.path)\n\t\t\t\tif err != nil && !errors.Is(err, ErrNonExistentWatch) {\n\t\t\t\t\tif !w.sendError(err) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar name string\n\t\t\tif watch != nil {\n\t\t\t\tname = watch.path\n\t\t\t}\n\t\t\tif nameLen > 0 {\n\t\t\t\t// Point \"bytes\" at the first byte of the filename\n\t\t\t\tbytes := (*[unix.PathMax]byte)(unsafe.Pointer(&buf[offset+unix.SizeofInotifyEvent]))[:nameLen:nameLen]\n\t\t\t\t// The filename is padded with NULL bytes. TrimRight() gets rid of those.\n\t\t\t\tname += \"/\" + strings.TrimRight(string(bytes[0:nameLen]), \"\\000\")\n\t\t\t}\n\n\t\t\tevent := w.newEvent(name, mask)\n\n\t\t\t// Send the events that are not ignored on the events channel\n\t\t\tif mask&unix.IN_IGNORED == 0 {\n\t\t\t\tif !w.sendEvent(event) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Move to the next event in the buffer\n\t\t\toffset += unix.SizeofInotifyEvent + nameLen\n\t\t}\n\t}\n}\n\n// newEvent returns an platform-independent Event based on an inotify mask.\nfunc (w *Watcher) newEvent(name string, mask uint32) Event {\n\te := Event{Name: name}\n\tif mask&unix.IN_CREATE == unix.IN_CREATE || mask&unix.IN_MOVED_TO == unix.IN_MOVED_TO {\n\t\te.Op |= Create\n\t}\n\tif mask&unix.IN_DELETE_SELF == unix.IN_DELETE_SELF || mask&unix.IN_DELETE == unix.IN_DELETE {\n\t\te.Op |= Remove\n\t}\n\tif mask&unix.IN_MODIFY == unix.IN_MODIFY {\n\t\te.Op |= Write\n\t}\n\tif mask&unix.IN_MOVE_SELF == unix.IN_MOVE_SELF || mask&unix.IN_MOVED_FROM == unix.IN_MOVED_FROM {\n\t\te.Op |= Rename\n\t}\n\tif mask&unix.IN_ATTRIB == unix.IN_ATTRIB {\n\t\te.Op |= Chmod\n\t}\n\treturn e\n}\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/backend_kqueue.go",
    "content": "//go:build freebsd || openbsd || netbsd || dragonfly || darwin\n// +build freebsd openbsd netbsd dragonfly darwin\n\n// Note: the documentation on the Watcher type and methods is generated from\n// mkdoc.zsh\n\npackage fsnotify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sync\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// Watcher watches a set of paths, delivering events on a channel.\n//\n// A watcher should not be copied (e.g. pass it by pointer, rather than by\n// value).\n//\n// # Linux notes\n//\n// When a file is removed a Remove event won't be emitted until all file\n// descriptors are closed, and deletes will always emit a Chmod. For example:\n//\n//\tfp := os.Open(\"file\")\n//\tos.Remove(\"file\")        // Triggers Chmod\n//\tfp.Close()               // Triggers Remove\n//\n// This is the event that inotify sends, so not much can be changed about this.\n//\n// The fs.inotify.max_user_watches sysctl variable specifies the upper limit\n// for the number of watches per user, and fs.inotify.max_user_instances\n// specifies the maximum number of inotify instances per user. Every Watcher you\n// create is an \"instance\", and every path you add is a \"watch\".\n//\n// These are also exposed in /proc as /proc/sys/fs/inotify/max_user_watches and\n// /proc/sys/fs/inotify/max_user_instances\n//\n// To increase them you can use sysctl or write the value to the /proc file:\n//\n//\t# Default values on Linux 5.18\n//\tsysctl fs.inotify.max_user_watches=124983\n//\tsysctl fs.inotify.max_user_instances=128\n//\n// To make the changes persist on reboot edit /etc/sysctl.conf or\n// /usr/lib/sysctl.d/50-default.conf (details differ per Linux distro; check\n// your distro's documentation):\n//\n//\tfs.inotify.max_user_watches=124983\n//\tfs.inotify.max_user_instances=128\n//\n// Reaching the limit will result in a \"no space left on device\" or \"too many open\n// files\" error.\n//\n// # kqueue notes (macOS, BSD)\n//\n// kqueue requires opening a file descriptor for every file that's being watched;\n// so if you're watching a directory with five files then that's six file\n// descriptors. You will run in to your system's \"max open files\" limit faster on\n// these platforms.\n//\n// The sysctl variables kern.maxfiles and kern.maxfilesperproc can be used to\n// control the maximum number of open files, as well as /etc/login.conf on BSD\n// systems.\n//\n// # Windows notes\n//\n// Paths can be added as \"C:\\path\\to\\dir\", but forward slashes\n// (\"C:/path/to/dir\") will also work.\n//\n// When a watched directory is removed it will always send an event for the\n// directory itself, but may not send events for all files in that directory.\n// Sometimes it will send events for all times, sometimes it will send no\n// events, and often only for some files.\n//\n// The default ReadDirectoryChangesW() buffer size is 64K, which is the largest\n// value that is guaranteed to work with SMB filesystems. If you have many\n// events in quick succession this may not be enough, and you will have to use\n// [WithBufferSize] to increase the value.\ntype Watcher struct {\n\t// Events sends the filesystem change events.\n\t//\n\t// fsnotify can send the following events; a \"path\" here can refer to a\n\t// file, directory, symbolic link, or special file like a FIFO.\n\t//\n\t//   fsnotify.Create    A new path was created; this may be followed by one\n\t//                      or more Write events if data also gets written to a\n\t//                      file.\n\t//\n\t//   fsnotify.Remove    A path was removed.\n\t//\n\t//   fsnotify.Rename    A path was renamed. A rename is always sent with the\n\t//                      old path as Event.Name, and a Create event will be\n\t//                      sent with the new name. Renames are only sent for\n\t//                      paths that are currently watched; e.g. moving an\n\t//                      unmonitored file into a monitored directory will\n\t//                      show up as just a Create. Similarly, renaming a file\n\t//                      to outside a monitored directory will show up as\n\t//                      only a Rename.\n\t//\n\t//   fsnotify.Write     A file or named pipe was written to. A Truncate will\n\t//                      also trigger a Write. A single \"write action\"\n\t//                      initiated by the user may show up as one or multiple\n\t//                      writes, depending on when the system syncs things to\n\t//                      disk. For example when compiling a large Go program\n\t//                      you may get hundreds of Write events, and you may\n\t//                      want to wait until you've stopped receiving them\n\t//                      (see the dedup example in cmd/fsnotify).\n\t//\n\t//                      Some systems may send Write event for directories\n\t//                      when the directory content changes.\n\t//\n\t//   fsnotify.Chmod     Attributes were changed. On Linux this is also sent\n\t//                      when a file is removed (or more accurately, when a\n\t//                      link to an inode is removed). On kqueue it's sent\n\t//                      when a file is truncated. On Windows it's never\n\t//                      sent.\n\tEvents chan Event\n\n\t// Errors sends any errors.\n\t//\n\t// ErrEventOverflow is used to indicate there are too many events:\n\t//\n\t//  - inotify:      There are too many queued events (fs.inotify.max_queued_events sysctl)\n\t//  - windows:      The buffer size is too small; WithBufferSize() can be used to increase it.\n\t//  - kqueue, fen:  Not used.\n\tErrors chan error\n\n\tdone         chan struct{}\n\tkq           int                         // File descriptor (as returned by the kqueue() syscall).\n\tclosepipe    [2]int                      // Pipe used for closing.\n\tmu           sync.Mutex                  // Protects access to watcher data\n\twatches      map[string]int              // Watched file descriptors (key: path).\n\twatchesByDir map[string]map[int]struct{} // Watched file descriptors indexed by the parent directory (key: dirname(path)).\n\tuserWatches  map[string]struct{}         // Watches added with Watcher.Add()\n\tdirFlags     map[string]uint32           // Watched directories to fflags used in kqueue.\n\tpaths        map[int]pathInfo            // File descriptors to path names for processing kqueue events.\n\tfileExists   map[string]struct{}         // Keep track of if we know this file exists (to stop duplicate create events).\n\tisClosed     bool                        // Set to true when Close() is first called\n}\n\ntype pathInfo struct {\n\tname  string\n\tisDir bool\n}\n\n// NewWatcher creates a new Watcher.\nfunc NewWatcher() (*Watcher, error) {\n\treturn NewBufferedWatcher(0)\n}\n\n// NewBufferedWatcher creates a new Watcher with a buffered Watcher.Events\n// channel.\n//\n// The main use case for this is situations with a very large number of events\n// where the kernel buffer size can't be increased (e.g. due to lack of\n// permissions). An unbuffered Watcher will perform better for almost all use\n// cases, and whenever possible you will be better off increasing the kernel\n// buffers instead of adding a large userspace buffer.\nfunc NewBufferedWatcher(sz uint) (*Watcher, error) {\n\tkq, closepipe, err := newKqueue()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tw := &Watcher{\n\t\tkq:           kq,\n\t\tclosepipe:    closepipe,\n\t\twatches:      make(map[string]int),\n\t\twatchesByDir: make(map[string]map[int]struct{}),\n\t\tdirFlags:     make(map[string]uint32),\n\t\tpaths:        make(map[int]pathInfo),\n\t\tfileExists:   make(map[string]struct{}),\n\t\tuserWatches:  make(map[string]struct{}),\n\t\tEvents:       make(chan Event, sz),\n\t\tErrors:       make(chan error),\n\t\tdone:         make(chan struct{}),\n\t}\n\n\tgo w.readEvents()\n\treturn w, nil\n}\n\n// newKqueue creates a new kernel event queue and returns a descriptor.\n//\n// This registers a new event on closepipe, which will trigger an event when\n// it's closed. This way we can use kevent() without timeout/polling; without\n// the closepipe, it would block forever and we wouldn't be able to stop it at\n// all.\nfunc newKqueue() (kq int, closepipe [2]int, err error) {\n\tkq, err = unix.Kqueue()\n\tif kq == -1 {\n\t\treturn kq, closepipe, err\n\t}\n\n\t// Register the close pipe.\n\terr = unix.Pipe(closepipe[:])\n\tif err != nil {\n\t\tunix.Close(kq)\n\t\treturn kq, closepipe, err\n\t}\n\n\t// Register changes to listen on the closepipe.\n\tchanges := make([]unix.Kevent_t, 1)\n\t// SetKevent converts int to the platform-specific types.\n\tunix.SetKevent(&changes[0], closepipe[0], unix.EVFILT_READ,\n\t\tunix.EV_ADD|unix.EV_ENABLE|unix.EV_ONESHOT)\n\n\tok, err := unix.Kevent(kq, changes, nil, nil)\n\tif ok == -1 {\n\t\tunix.Close(kq)\n\t\tunix.Close(closepipe[0])\n\t\tunix.Close(closepipe[1])\n\t\treturn kq, closepipe, err\n\t}\n\treturn kq, closepipe, nil\n}\n\n// Returns true if the event was sent, or false if watcher is closed.\nfunc (w *Watcher) sendEvent(e Event) bool {\n\tselect {\n\tcase w.Events <- e:\n\t\treturn true\n\tcase <-w.done:\n\t\treturn false\n\t}\n}\n\n// Returns true if the error was sent, or false if watcher is closed.\nfunc (w *Watcher) sendError(err error) bool {\n\tselect {\n\tcase w.Errors <- err:\n\t\treturn true\n\tcase <-w.done:\n\t\treturn false\n\t}\n}\n\n// Close removes all watches and closes the Events channel.\nfunc (w *Watcher) Close() error {\n\tw.mu.Lock()\n\tif w.isClosed {\n\t\tw.mu.Unlock()\n\t\treturn nil\n\t}\n\tw.isClosed = true\n\n\t// copy paths to remove while locked\n\tpathsToRemove := make([]string, 0, len(w.watches))\n\tfor name := range w.watches {\n\t\tpathsToRemove = append(pathsToRemove, name)\n\t}\n\tw.mu.Unlock() // Unlock before calling Remove, which also locks\n\tfor _, name := range pathsToRemove {\n\t\tw.Remove(name)\n\t}\n\n\t// Send \"quit\" message to the reader goroutine.\n\tunix.Close(w.closepipe[1])\n\tclose(w.done)\n\n\treturn nil\n}\n\n// Add starts monitoring the path for changes.\n//\n// A path can only be watched once; watching it more than once is a no-op and will\n// not return an error. Paths that do not yet exist on the filesystem cannot be\n// watched.\n//\n// A watch will be automatically removed if the watched path is deleted or\n// renamed. The exception is the Windows backend, which doesn't remove the\n// watcher on renames.\n//\n// Notifications on network filesystems (NFS, SMB, FUSE, etc.) or special\n// filesystems (/proc, /sys, etc.) generally don't work.\n//\n// Returns [ErrClosed] if [Watcher.Close] was called.\n//\n// See [Watcher.AddWith] for a version that allows adding options.\n//\n// # Watching directories\n//\n// All files in a directory are monitored, including new files that are created\n// after the watcher is started. Subdirectories are not watched (i.e. it's\n// non-recursive).\n//\n// # Watching files\n//\n// Watching individual files (rather than directories) is generally not\n// recommended as many programs (especially editors) update files atomically: it\n// will write to a temporary file which is then moved to to destination,\n// overwriting the original (or some variant thereof). The watcher on the\n// original file is now lost, as that no longer exists.\n//\n// The upshot of this is that a power failure or crash won't leave a\n// half-written file.\n//\n// Watch the parent directory and use Event.Name to filter out files you're not\n// interested in. There is an example of this in cmd/fsnotify/file.go.\nfunc (w *Watcher) Add(name string) error { return w.AddWith(name) }\n\n// AddWith is like [Watcher.Add], but allows adding options. When using Add()\n// the defaults described below are used.\n//\n// Possible options are:\n//\n//   - [WithBufferSize] sets the buffer size for the Windows backend; no-op on\n//     other platforms. The default is 64K (65536 bytes).\nfunc (w *Watcher) AddWith(name string, opts ...addOpt) error {\n\t_ = getOptions(opts...)\n\n\tw.mu.Lock()\n\tw.userWatches[name] = struct{}{}\n\tw.mu.Unlock()\n\t_, err := w.addWatch(name, noteAllEvents)\n\treturn err\n}\n\n// Remove stops monitoring the path for changes.\n//\n// Directories are always removed non-recursively. For example, if you added\n// /tmp/dir and /tmp/dir/subdir then you will need to remove both.\n//\n// Removing a path that has not yet been added returns [ErrNonExistentWatch].\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) Remove(name string) error {\n\treturn w.remove(name, true)\n}\n\nfunc (w *Watcher) remove(name string, unwatchFiles bool) error {\n\tname = filepath.Clean(name)\n\tw.mu.Lock()\n\tif w.isClosed {\n\t\tw.mu.Unlock()\n\t\treturn nil\n\t}\n\twatchfd, ok := w.watches[name]\n\tw.mu.Unlock()\n\tif !ok {\n\t\treturn fmt.Errorf(\"%w: %s\", ErrNonExistentWatch, name)\n\t}\n\n\terr := w.register([]int{watchfd}, unix.EV_DELETE, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tunix.Close(watchfd)\n\n\tw.mu.Lock()\n\tisDir := w.paths[watchfd].isDir\n\tdelete(w.watches, name)\n\tdelete(w.userWatches, name)\n\n\tparentName := filepath.Dir(name)\n\tdelete(w.watchesByDir[parentName], watchfd)\n\n\tif len(w.watchesByDir[parentName]) == 0 {\n\t\tdelete(w.watchesByDir, parentName)\n\t}\n\n\tdelete(w.paths, watchfd)\n\tdelete(w.dirFlags, name)\n\tdelete(w.fileExists, name)\n\tw.mu.Unlock()\n\n\t// Find all watched paths that are in this directory that are not external.\n\tif unwatchFiles && isDir {\n\t\tvar pathsToRemove []string\n\t\tw.mu.Lock()\n\t\tfor fd := range w.watchesByDir[name] {\n\t\t\tpath := w.paths[fd]\n\t\t\tif _, ok := w.userWatches[path.name]; !ok {\n\t\t\t\tpathsToRemove = append(pathsToRemove, path.name)\n\t\t\t}\n\t\t}\n\t\tw.mu.Unlock()\n\t\tfor _, name := range pathsToRemove {\n\t\t\t// Since these are internal, not much sense in propagating error to\n\t\t\t// the user, as that will just confuse them with an error about a\n\t\t\t// path they did not explicitly watch themselves.\n\t\t\tw.Remove(name)\n\t\t}\n\t}\n\treturn nil\n}\n\n// WatchList returns all paths explicitly added with [Watcher.Add] (and are not\n// yet removed).\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) WatchList() []string {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\tif w.isClosed {\n\t\treturn nil\n\t}\n\n\tentries := make([]string, 0, len(w.userWatches))\n\tfor pathname := range w.userWatches {\n\t\tentries = append(entries, pathname)\n\t}\n\n\treturn entries\n}\n\n// Watch all events (except NOTE_EXTEND, NOTE_LINK, NOTE_REVOKE)\nconst noteAllEvents = unix.NOTE_DELETE | unix.NOTE_WRITE | unix.NOTE_ATTRIB | unix.NOTE_RENAME\n\n// addWatch adds name to the watched file set; the flags are interpreted as\n// described in kevent(2).\n//\n// Returns the real path to the file which was added, with symlinks resolved.\nfunc (w *Watcher) addWatch(name string, flags uint32) (string, error) {\n\tvar isDir bool\n\tname = filepath.Clean(name)\n\n\tw.mu.Lock()\n\tif w.isClosed {\n\t\tw.mu.Unlock()\n\t\treturn \"\", ErrClosed\n\t}\n\twatchfd, alreadyWatching := w.watches[name]\n\t// We already have a watch, but we can still override flags.\n\tif alreadyWatching {\n\t\tisDir = w.paths[watchfd].isDir\n\t}\n\tw.mu.Unlock()\n\n\tif !alreadyWatching {\n\t\tfi, err := os.Lstat(name)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\t// Don't watch sockets or named pipes\n\t\tif (fi.Mode()&os.ModeSocket == os.ModeSocket) || (fi.Mode()&os.ModeNamedPipe == os.ModeNamedPipe) {\n\t\t\treturn \"\", nil\n\t\t}\n\n\t\t// Follow Symlinks.\n\t\tif fi.Mode()&os.ModeSymlink == os.ModeSymlink {\n\t\t\tlink, err := os.Readlink(name)\n\t\t\tif err != nil {\n\t\t\t\t// Return nil because Linux can add unresolvable symlinks to the\n\t\t\t\t// watch list without problems, so maintain consistency with\n\t\t\t\t// that. There will be no file events for broken symlinks.\n\t\t\t\t// TODO: more specific check; returns os.PathError; ENOENT?\n\t\t\t\treturn \"\", nil\n\t\t\t}\n\n\t\t\tw.mu.Lock()\n\t\t\t_, alreadyWatching = w.watches[link]\n\t\t\tw.mu.Unlock()\n\n\t\t\tif alreadyWatching {\n\t\t\t\t// Add to watches so we don't get spurious Create events later\n\t\t\t\t// on when we diff the directories.\n\t\t\t\tw.watches[name] = 0\n\t\t\t\tw.fileExists[name] = struct{}{}\n\t\t\t\treturn link, nil\n\t\t\t}\n\n\t\t\tname = link\n\t\t\tfi, err = os.Lstat(name)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", nil\n\t\t\t}\n\t\t}\n\n\t\t// Retry on EINTR; open() can return EINTR in practice on macOS.\n\t\t// See #354, and Go issues 11180 and 39237.\n\t\tfor {\n\t\t\twatchfd, err = unix.Open(name, openMode, 0)\n\t\t\tif err == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif errors.Is(err, unix.EINTR) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\treturn \"\", err\n\t\t}\n\n\t\tisDir = fi.IsDir()\n\t}\n\n\terr := w.register([]int{watchfd}, unix.EV_ADD|unix.EV_CLEAR|unix.EV_ENABLE, flags)\n\tif err != nil {\n\t\tunix.Close(watchfd)\n\t\treturn \"\", err\n\t}\n\n\tif !alreadyWatching {\n\t\tw.mu.Lock()\n\t\tparentName := filepath.Dir(name)\n\t\tw.watches[name] = watchfd\n\n\t\twatchesByDir, ok := w.watchesByDir[parentName]\n\t\tif !ok {\n\t\t\twatchesByDir = make(map[int]struct{}, 1)\n\t\t\tw.watchesByDir[parentName] = watchesByDir\n\t\t}\n\t\twatchesByDir[watchfd] = struct{}{}\n\t\tw.paths[watchfd] = pathInfo{name: name, isDir: isDir}\n\t\tw.mu.Unlock()\n\t}\n\n\tif isDir {\n\t\t// Watch the directory if it has not been watched before, or if it was\n\t\t// watched before, but perhaps only a NOTE_DELETE (watchDirectoryFiles)\n\t\tw.mu.Lock()\n\n\t\twatchDir := (flags&unix.NOTE_WRITE) == unix.NOTE_WRITE &&\n\t\t\t(!alreadyWatching || (w.dirFlags[name]&unix.NOTE_WRITE) != unix.NOTE_WRITE)\n\t\t// Store flags so this watch can be updated later\n\t\tw.dirFlags[name] = flags\n\t\tw.mu.Unlock()\n\n\t\tif watchDir {\n\t\t\tif err := w.watchDirectoryFiles(name); err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t}\n\t}\n\treturn name, nil\n}\n\n// readEvents reads from kqueue and converts the received kevents into\n// Event values that it sends down the Events channel.\nfunc (w *Watcher) readEvents() {\n\tdefer func() {\n\t\tclose(w.Events)\n\t\tclose(w.Errors)\n\t\t_ = unix.Close(w.kq)\n\t\tunix.Close(w.closepipe[0])\n\t}()\n\n\teventBuffer := make([]unix.Kevent_t, 10)\n\tfor closed := false; !closed; {\n\t\tkevents, err := w.read(eventBuffer)\n\t\t// EINTR is okay, the syscall was interrupted before timeout expired.\n\t\tif err != nil && err != unix.EINTR {\n\t\t\tif !w.sendError(fmt.Errorf(\"fsnotify.readEvents: %w\", err)) {\n\t\t\t\tclosed = true\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// Flush the events we received to the Events channel\n\t\tfor _, kevent := range kevents {\n\t\t\tvar (\n\t\t\t\twatchfd = int(kevent.Ident)\n\t\t\t\tmask    = uint32(kevent.Fflags)\n\t\t\t)\n\n\t\t\t// Shut down the loop when the pipe is closed, but only after all\n\t\t\t// other events have been processed.\n\t\t\tif watchfd == w.closepipe[0] {\n\t\t\t\tclosed = true\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tw.mu.Lock()\n\t\t\tpath := w.paths[watchfd]\n\t\t\tw.mu.Unlock()\n\n\t\t\tevent := w.newEvent(path.name, mask)\n\n\t\t\tif event.Has(Rename) || event.Has(Remove) {\n\t\t\t\tw.remove(event.Name, false)\n\t\t\t\tw.mu.Lock()\n\t\t\t\tdelete(w.fileExists, event.Name)\n\t\t\t\tw.mu.Unlock()\n\t\t\t}\n\n\t\t\tif path.isDir && event.Has(Write) && !event.Has(Remove) {\n\t\t\t\tw.sendDirectoryChangeEvents(event.Name)\n\t\t\t} else {\n\t\t\t\tif !w.sendEvent(event) {\n\t\t\t\t\tclosed = true\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif event.Has(Remove) {\n\t\t\t\t// Look for a file that may have overwritten this; for example,\n\t\t\t\t// mv f1 f2 will delete f2, then create f2.\n\t\t\t\tif path.isDir {\n\t\t\t\t\tfileDir := filepath.Clean(event.Name)\n\t\t\t\t\tw.mu.Lock()\n\t\t\t\t\t_, found := w.watches[fileDir]\n\t\t\t\t\tw.mu.Unlock()\n\t\t\t\t\tif found {\n\t\t\t\t\t\terr := w.sendDirectoryChangeEvents(fileDir)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\tif !w.sendError(err) {\n\t\t\t\t\t\t\t\tclosed = true\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\tfilePath := filepath.Clean(event.Name)\n\t\t\t\t\tif fi, err := os.Lstat(filePath); err == nil {\n\t\t\t\t\t\terr := w.sendFileCreatedEventIfNew(filePath, fi)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\tif !w.sendError(err) {\n\t\t\t\t\t\t\t\tclosed = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// newEvent returns an platform-independent Event based on kqueue Fflags.\nfunc (w *Watcher) newEvent(name string, mask uint32) Event {\n\te := Event{Name: name}\n\tif mask&unix.NOTE_DELETE == unix.NOTE_DELETE {\n\t\te.Op |= Remove\n\t}\n\tif mask&unix.NOTE_WRITE == unix.NOTE_WRITE {\n\t\te.Op |= Write\n\t}\n\tif mask&unix.NOTE_RENAME == unix.NOTE_RENAME {\n\t\te.Op |= Rename\n\t}\n\tif mask&unix.NOTE_ATTRIB == unix.NOTE_ATTRIB {\n\t\te.Op |= Chmod\n\t}\n\t// No point sending a write and delete event at the same time: if it's gone,\n\t// then it's gone.\n\tif e.Op.Has(Write) && e.Op.Has(Remove) {\n\t\te.Op &^= Write\n\t}\n\treturn e\n}\n\n// watchDirectoryFiles to mimic inotify when adding a watch on a directory\nfunc (w *Watcher) watchDirectoryFiles(dirPath string) error {\n\t// Get all files\n\tfiles, err := os.ReadDir(dirPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, f := range files {\n\t\tpath := filepath.Join(dirPath, f.Name())\n\n\t\tfi, err := f.Info()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"%q: %w\", path, err)\n\t\t}\n\n\t\tcleanPath, err := w.internalWatch(path, fi)\n\t\tif err != nil {\n\t\t\t// No permission to read the file; that's not a problem: just skip.\n\t\t\t// But do add it to w.fileExists to prevent it from being picked up\n\t\t\t// as a \"new\" file later (it still shows up in the directory\n\t\t\t// listing).\n\t\t\tswitch {\n\t\t\tcase errors.Is(err, unix.EACCES) || errors.Is(err, unix.EPERM):\n\t\t\t\tcleanPath = filepath.Clean(path)\n\t\t\tdefault:\n\t\t\t\treturn fmt.Errorf(\"%q: %w\", path, err)\n\t\t\t}\n\t\t}\n\n\t\tw.mu.Lock()\n\t\tw.fileExists[cleanPath] = struct{}{}\n\t\tw.mu.Unlock()\n\t}\n\n\treturn nil\n}\n\n// Search the directory for new files and send an event for them.\n//\n// This functionality is to have the BSD watcher match the inotify, which sends\n// a create event for files created in a watched directory.\nfunc (w *Watcher) sendDirectoryChangeEvents(dir string) error {\n\tfiles, err := os.ReadDir(dir)\n\tif err != nil {\n\t\t// Directory no longer exists: we can ignore this safely. kqueue will\n\t\t// still give us the correct events.\n\t\tif errors.Is(err, os.ErrNotExist) {\n\t\t\treturn nil\n\t\t}\n\t\treturn fmt.Errorf(\"fsnotify.sendDirectoryChangeEvents: %w\", err)\n\t}\n\n\tfor _, f := range files {\n\t\tfi, err := f.Info()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"fsnotify.sendDirectoryChangeEvents: %w\", err)\n\t\t}\n\n\t\terr = w.sendFileCreatedEventIfNew(filepath.Join(dir, fi.Name()), fi)\n\t\tif err != nil {\n\t\t\t// Don't need to send an error if this file isn't readable.\n\t\t\tif errors.Is(err, unix.EACCES) || errors.Is(err, unix.EPERM) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn fmt.Errorf(\"fsnotify.sendDirectoryChangeEvents: %w\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// sendFileCreatedEvent sends a create event if the file isn't already being tracked.\nfunc (w *Watcher) sendFileCreatedEventIfNew(filePath string, fi os.FileInfo) (err error) {\n\tw.mu.Lock()\n\t_, doesExist := w.fileExists[filePath]\n\tw.mu.Unlock()\n\tif !doesExist {\n\t\tif !w.sendEvent(Event{Name: filePath, Op: Create}) {\n\t\t\treturn\n\t\t}\n\t}\n\n\t// like watchDirectoryFiles (but without doing another ReadDir)\n\tfilePath, err = w.internalWatch(filePath, fi)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tw.mu.Lock()\n\tw.fileExists[filePath] = struct{}{}\n\tw.mu.Unlock()\n\n\treturn nil\n}\n\nfunc (w *Watcher) internalWatch(name string, fi os.FileInfo) (string, error) {\n\tif fi.IsDir() {\n\t\t// mimic Linux providing delete events for subdirectories, but preserve\n\t\t// the flags used if currently watching subdirectory\n\t\tw.mu.Lock()\n\t\tflags := w.dirFlags[name]\n\t\tw.mu.Unlock()\n\n\t\tflags |= unix.NOTE_DELETE | unix.NOTE_RENAME\n\t\treturn w.addWatch(name, flags)\n\t}\n\n\t// watch file to mimic Linux inotify\n\treturn w.addWatch(name, noteAllEvents)\n}\n\n// Register events with the queue.\nfunc (w *Watcher) register(fds []int, flags int, fflags uint32) error {\n\tchanges := make([]unix.Kevent_t, len(fds))\n\tfor i, fd := range fds {\n\t\t// SetKevent converts int to the platform-specific types.\n\t\tunix.SetKevent(&changes[i], fd, unix.EVFILT_VNODE, flags)\n\t\tchanges[i].Fflags = fflags\n\t}\n\n\t// Register the events.\n\tsuccess, err := unix.Kevent(w.kq, changes, nil, nil)\n\tif success == -1 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// read retrieves pending events, or waits until an event occurs.\nfunc (w *Watcher) read(events []unix.Kevent_t) ([]unix.Kevent_t, error) {\n\tn, err := unix.Kevent(w.kq, nil, events, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn events[0:n], nil\n}\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/backend_other.go",
    "content": "//go:build appengine || (!darwin && !dragonfly && !freebsd && !openbsd && !linux && !netbsd && !solaris && !windows)\n// +build appengine !darwin,!dragonfly,!freebsd,!openbsd,!linux,!netbsd,!solaris,!windows\n\n// Note: the documentation on the Watcher type and methods is generated from\n// mkdoc.zsh\n\npackage fsnotify\n\nimport \"errors\"\n\n// Watcher watches a set of paths, delivering events on a channel.\n//\n// A watcher should not be copied (e.g. pass it by pointer, rather than by\n// value).\n//\n// # Linux notes\n//\n// When a file is removed a Remove event won't be emitted until all file\n// descriptors are closed, and deletes will always emit a Chmod. For example:\n//\n//\tfp := os.Open(\"file\")\n//\tos.Remove(\"file\")        // Triggers Chmod\n//\tfp.Close()               // Triggers Remove\n//\n// This is the event that inotify sends, so not much can be changed about this.\n//\n// The fs.inotify.max_user_watches sysctl variable specifies the upper limit\n// for the number of watches per user, and fs.inotify.max_user_instances\n// specifies the maximum number of inotify instances per user. Every Watcher you\n// create is an \"instance\", and every path you add is a \"watch\".\n//\n// These are also exposed in /proc as /proc/sys/fs/inotify/max_user_watches and\n// /proc/sys/fs/inotify/max_user_instances\n//\n// To increase them you can use sysctl or write the value to the /proc file:\n//\n//\t# Default values on Linux 5.18\n//\tsysctl fs.inotify.max_user_watches=124983\n//\tsysctl fs.inotify.max_user_instances=128\n//\n// To make the changes persist on reboot edit /etc/sysctl.conf or\n// /usr/lib/sysctl.d/50-default.conf (details differ per Linux distro; check\n// your distro's documentation):\n//\n//\tfs.inotify.max_user_watches=124983\n//\tfs.inotify.max_user_instances=128\n//\n// Reaching the limit will result in a \"no space left on device\" or \"too many open\n// files\" error.\n//\n// # kqueue notes (macOS, BSD)\n//\n// kqueue requires opening a file descriptor for every file that's being watched;\n// so if you're watching a directory with five files then that's six file\n// descriptors. You will run in to your system's \"max open files\" limit faster on\n// these platforms.\n//\n// The sysctl variables kern.maxfiles and kern.maxfilesperproc can be used to\n// control the maximum number of open files, as well as /etc/login.conf on BSD\n// systems.\n//\n// # Windows notes\n//\n// Paths can be added as \"C:\\path\\to\\dir\", but forward slashes\n// (\"C:/path/to/dir\") will also work.\n//\n// When a watched directory is removed it will always send an event for the\n// directory itself, but may not send events for all files in that directory.\n// Sometimes it will send events for all times, sometimes it will send no\n// events, and often only for some files.\n//\n// The default ReadDirectoryChangesW() buffer size is 64K, which is the largest\n// value that is guaranteed to work with SMB filesystems. If you have many\n// events in quick succession this may not be enough, and you will have to use\n// [WithBufferSize] to increase the value.\ntype Watcher struct {\n\t// Events sends the filesystem change events.\n\t//\n\t// fsnotify can send the following events; a \"path\" here can refer to a\n\t// file, directory, symbolic link, or special file like a FIFO.\n\t//\n\t//   fsnotify.Create    A new path was created; this may be followed by one\n\t//                      or more Write events if data also gets written to a\n\t//                      file.\n\t//\n\t//   fsnotify.Remove    A path was removed.\n\t//\n\t//   fsnotify.Rename    A path was renamed. A rename is always sent with the\n\t//                      old path as Event.Name, and a Create event will be\n\t//                      sent with the new name. Renames are only sent for\n\t//                      paths that are currently watched; e.g. moving an\n\t//                      unmonitored file into a monitored directory will\n\t//                      show up as just a Create. Similarly, renaming a file\n\t//                      to outside a monitored directory will show up as\n\t//                      only a Rename.\n\t//\n\t//   fsnotify.Write     A file or named pipe was written to. A Truncate will\n\t//                      also trigger a Write. A single \"write action\"\n\t//                      initiated by the user may show up as one or multiple\n\t//                      writes, depending on when the system syncs things to\n\t//                      disk. For example when compiling a large Go program\n\t//                      you may get hundreds of Write events, and you may\n\t//                      want to wait until you've stopped receiving them\n\t//                      (see the dedup example in cmd/fsnotify).\n\t//\n\t//                      Some systems may send Write event for directories\n\t//                      when the directory content changes.\n\t//\n\t//   fsnotify.Chmod     Attributes were changed. On Linux this is also sent\n\t//                      when a file is removed (or more accurately, when a\n\t//                      link to an inode is removed). On kqueue it's sent\n\t//                      when a file is truncated. On Windows it's never\n\t//                      sent.\n\tEvents chan Event\n\n\t// Errors sends any errors.\n\t//\n\t// ErrEventOverflow is used to indicate there are too many events:\n\t//\n\t//  - inotify:      There are too many queued events (fs.inotify.max_queued_events sysctl)\n\t//  - windows:      The buffer size is too small; WithBufferSize() can be used to increase it.\n\t//  - kqueue, fen:  Not used.\n\tErrors chan error\n}\n\n// NewWatcher creates a new Watcher.\nfunc NewWatcher() (*Watcher, error) {\n\treturn nil, errors.New(\"fsnotify not supported on the current platform\")\n}\n\n// NewBufferedWatcher creates a new Watcher with a buffered Watcher.Events\n// channel.\n//\n// The main use case for this is situations with a very large number of events\n// where the kernel buffer size can't be increased (e.g. due to lack of\n// permissions). An unbuffered Watcher will perform better for almost all use\n// cases, and whenever possible you will be better off increasing the kernel\n// buffers instead of adding a large userspace buffer.\nfunc NewBufferedWatcher(sz uint) (*Watcher, error) { return NewWatcher() }\n\n// Close removes all watches and closes the Events channel.\nfunc (w *Watcher) Close() error { return nil }\n\n// WatchList returns all paths explicitly added with [Watcher.Add] (and are not\n// yet removed).\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) WatchList() []string { return nil }\n\n// Add starts monitoring the path for changes.\n//\n// A path can only be watched once; watching it more than once is a no-op and will\n// not return an error. Paths that do not yet exist on the filesystem cannot be\n// watched.\n//\n// A watch will be automatically removed if the watched path is deleted or\n// renamed. The exception is the Windows backend, which doesn't remove the\n// watcher on renames.\n//\n// Notifications on network filesystems (NFS, SMB, FUSE, etc.) or special\n// filesystems (/proc, /sys, etc.) generally don't work.\n//\n// Returns [ErrClosed] if [Watcher.Close] was called.\n//\n// See [Watcher.AddWith] for a version that allows adding options.\n//\n// # Watching directories\n//\n// All files in a directory are monitored, including new files that are created\n// after the watcher is started. Subdirectories are not watched (i.e. it's\n// non-recursive).\n//\n// # Watching files\n//\n// Watching individual files (rather than directories) is generally not\n// recommended as many programs (especially editors) update files atomically: it\n// will write to a temporary file which is then moved to to destination,\n// overwriting the original (or some variant thereof). The watcher on the\n// original file is now lost, as that no longer exists.\n//\n// The upshot of this is that a power failure or crash won't leave a\n// half-written file.\n//\n// Watch the parent directory and use Event.Name to filter out files you're not\n// interested in. There is an example of this in cmd/fsnotify/file.go.\nfunc (w *Watcher) Add(name string) error { return nil }\n\n// AddWith is like [Watcher.Add], but allows adding options. When using Add()\n// the defaults described below are used.\n//\n// Possible options are:\n//\n//   - [WithBufferSize] sets the buffer size for the Windows backend; no-op on\n//     other platforms. The default is 64K (65536 bytes).\nfunc (w *Watcher) AddWith(name string, opts ...addOpt) error { return nil }\n\n// Remove stops monitoring the path for changes.\n//\n// Directories are always removed non-recursively. For example, if you added\n// /tmp/dir and /tmp/dir/subdir then you will need to remove both.\n//\n// Removing a path that has not yet been added returns [ErrNonExistentWatch].\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) Remove(name string) error { return nil }\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/backend_windows.go",
    "content": "//go:build windows\n// +build windows\n\n// Windows backend based on ReadDirectoryChangesW()\n//\n// https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-readdirectorychangesw\n//\n// Note: the documentation on the Watcher type and methods is generated from\n// mkdoc.zsh\n\npackage fsnotify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strings\"\n\t\"sync\"\n\t\"unsafe\"\n\n\t\"golang.org/x/sys/windows\"\n)\n\n// Watcher watches a set of paths, delivering events on a channel.\n//\n// A watcher should not be copied (e.g. pass it by pointer, rather than by\n// value).\n//\n// # Linux notes\n//\n// When a file is removed a Remove event won't be emitted until all file\n// descriptors are closed, and deletes will always emit a Chmod. For example:\n//\n//\tfp := os.Open(\"file\")\n//\tos.Remove(\"file\")        // Triggers Chmod\n//\tfp.Close()               // Triggers Remove\n//\n// This is the event that inotify sends, so not much can be changed about this.\n//\n// The fs.inotify.max_user_watches sysctl variable specifies the upper limit\n// for the number of watches per user, and fs.inotify.max_user_instances\n// specifies the maximum number of inotify instances per user. Every Watcher you\n// create is an \"instance\", and every path you add is a \"watch\".\n//\n// These are also exposed in /proc as /proc/sys/fs/inotify/max_user_watches and\n// /proc/sys/fs/inotify/max_user_instances\n//\n// To increase them you can use sysctl or write the value to the /proc file:\n//\n//\t# Default values on Linux 5.18\n//\tsysctl fs.inotify.max_user_watches=124983\n//\tsysctl fs.inotify.max_user_instances=128\n//\n// To make the changes persist on reboot edit /etc/sysctl.conf or\n// /usr/lib/sysctl.d/50-default.conf (details differ per Linux distro; check\n// your distro's documentation):\n//\n//\tfs.inotify.max_user_watches=124983\n//\tfs.inotify.max_user_instances=128\n//\n// Reaching the limit will result in a \"no space left on device\" or \"too many open\n// files\" error.\n//\n// # kqueue notes (macOS, BSD)\n//\n// kqueue requires opening a file descriptor for every file that's being watched;\n// so if you're watching a directory with five files then that's six file\n// descriptors. You will run in to your system's \"max open files\" limit faster on\n// these platforms.\n//\n// The sysctl variables kern.maxfiles and kern.maxfilesperproc can be used to\n// control the maximum number of open files, as well as /etc/login.conf on BSD\n// systems.\n//\n// # Windows notes\n//\n// Paths can be added as \"C:\\path\\to\\dir\", but forward slashes\n// (\"C:/path/to/dir\") will also work.\n//\n// When a watched directory is removed it will always send an event for the\n// directory itself, but may not send events for all files in that directory.\n// Sometimes it will send events for all times, sometimes it will send no\n// events, and often only for some files.\n//\n// The default ReadDirectoryChangesW() buffer size is 64K, which is the largest\n// value that is guaranteed to work with SMB filesystems. If you have many\n// events in quick succession this may not be enough, and you will have to use\n// [WithBufferSize] to increase the value.\ntype Watcher struct {\n\t// Events sends the filesystem change events.\n\t//\n\t// fsnotify can send the following events; a \"path\" here can refer to a\n\t// file, directory, symbolic link, or special file like a FIFO.\n\t//\n\t//   fsnotify.Create    A new path was created; this may be followed by one\n\t//                      or more Write events if data also gets written to a\n\t//                      file.\n\t//\n\t//   fsnotify.Remove    A path was removed.\n\t//\n\t//   fsnotify.Rename    A path was renamed. A rename is always sent with the\n\t//                      old path as Event.Name, and a Create event will be\n\t//                      sent with the new name. Renames are only sent for\n\t//                      paths that are currently watched; e.g. moving an\n\t//                      unmonitored file into a monitored directory will\n\t//                      show up as just a Create. Similarly, renaming a file\n\t//                      to outside a monitored directory will show up as\n\t//                      only a Rename.\n\t//\n\t//   fsnotify.Write     A file or named pipe was written to. A Truncate will\n\t//                      also trigger a Write. A single \"write action\"\n\t//                      initiated by the user may show up as one or multiple\n\t//                      writes, depending on when the system syncs things to\n\t//                      disk. For example when compiling a large Go program\n\t//                      you may get hundreds of Write events, and you may\n\t//                      want to wait until you've stopped receiving them\n\t//                      (see the dedup example in cmd/fsnotify).\n\t//\n\t//                      Some systems may send Write event for directories\n\t//                      when the directory content changes.\n\t//\n\t//   fsnotify.Chmod     Attributes were changed. On Linux this is also sent\n\t//                      when a file is removed (or more accurately, when a\n\t//                      link to an inode is removed). On kqueue it's sent\n\t//                      when a file is truncated. On Windows it's never\n\t//                      sent.\n\tEvents chan Event\n\n\t// Errors sends any errors.\n\t//\n\t// ErrEventOverflow is used to indicate there are too many events:\n\t//\n\t//  - inotify:      There are too many queued events (fs.inotify.max_queued_events sysctl)\n\t//  - windows:      The buffer size is too small; WithBufferSize() can be used to increase it.\n\t//  - kqueue, fen:  Not used.\n\tErrors chan error\n\n\tport  windows.Handle // Handle to completion port\n\tinput chan *input    // Inputs to the reader are sent on this channel\n\tquit  chan chan<- error\n\n\tmu      sync.Mutex // Protects access to watches, closed\n\twatches watchMap   // Map of watches (key: i-number)\n\tclosed  bool       // Set to true when Close() is first called\n}\n\n// NewWatcher creates a new Watcher.\nfunc NewWatcher() (*Watcher, error) {\n\treturn NewBufferedWatcher(50)\n}\n\n// NewBufferedWatcher creates a new Watcher with a buffered Watcher.Events\n// channel.\n//\n// The main use case for this is situations with a very large number of events\n// where the kernel buffer size can't be increased (e.g. due to lack of\n// permissions). An unbuffered Watcher will perform better for almost all use\n// cases, and whenever possible you will be better off increasing the kernel\n// buffers instead of adding a large userspace buffer.\nfunc NewBufferedWatcher(sz uint) (*Watcher, error) {\n\tport, err := windows.CreateIoCompletionPort(windows.InvalidHandle, 0, 0, 0)\n\tif err != nil {\n\t\treturn nil, os.NewSyscallError(\"CreateIoCompletionPort\", err)\n\t}\n\tw := &Watcher{\n\t\tport:    port,\n\t\twatches: make(watchMap),\n\t\tinput:   make(chan *input, 1),\n\t\tEvents:  make(chan Event, sz),\n\t\tErrors:  make(chan error),\n\t\tquit:    make(chan chan<- error, 1),\n\t}\n\tgo w.readEvents()\n\treturn w, nil\n}\n\nfunc (w *Watcher) isClosed() bool {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\treturn w.closed\n}\n\nfunc (w *Watcher) sendEvent(name string, mask uint64) bool {\n\tif mask == 0 {\n\t\treturn false\n\t}\n\n\tevent := w.newEvent(name, uint32(mask))\n\tselect {\n\tcase ch := <-w.quit:\n\t\tw.quit <- ch\n\tcase w.Events <- event:\n\t}\n\treturn true\n}\n\n// Returns true if the error was sent, or false if watcher is closed.\nfunc (w *Watcher) sendError(err error) bool {\n\tselect {\n\tcase w.Errors <- err:\n\t\treturn true\n\tcase <-w.quit:\n\t}\n\treturn false\n}\n\n// Close removes all watches and closes the Events channel.\nfunc (w *Watcher) Close() error {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\n\tw.mu.Lock()\n\tw.closed = true\n\tw.mu.Unlock()\n\n\t// Send \"quit\" message to the reader goroutine\n\tch := make(chan error)\n\tw.quit <- ch\n\tif err := w.wakeupReader(); err != nil {\n\t\treturn err\n\t}\n\treturn <-ch\n}\n\n// Add starts monitoring the path for changes.\n//\n// A path can only be watched once; watching it more than once is a no-op and will\n// not return an error. Paths that do not yet exist on the filesystem cannot be\n// watched.\n//\n// A watch will be automatically removed if the watched path is deleted or\n// renamed. The exception is the Windows backend, which doesn't remove the\n// watcher on renames.\n//\n// Notifications on network filesystems (NFS, SMB, FUSE, etc.) or special\n// filesystems (/proc, /sys, etc.) generally don't work.\n//\n// Returns [ErrClosed] if [Watcher.Close] was called.\n//\n// See [Watcher.AddWith] for a version that allows adding options.\n//\n// # Watching directories\n//\n// All files in a directory are monitored, including new files that are created\n// after the watcher is started. Subdirectories are not watched (i.e. it's\n// non-recursive).\n//\n// # Watching files\n//\n// Watching individual files (rather than directories) is generally not\n// recommended as many programs (especially editors) update files atomically: it\n// will write to a temporary file which is then moved to to destination,\n// overwriting the original (or some variant thereof). The watcher on the\n// original file is now lost, as that no longer exists.\n//\n// The upshot of this is that a power failure or crash won't leave a\n// half-written file.\n//\n// Watch the parent directory and use Event.Name to filter out files you're not\n// interested in. There is an example of this in cmd/fsnotify/file.go.\nfunc (w *Watcher) Add(name string) error { return w.AddWith(name) }\n\n// AddWith is like [Watcher.Add], but allows adding options. When using Add()\n// the defaults described below are used.\n//\n// Possible options are:\n//\n//   - [WithBufferSize] sets the buffer size for the Windows backend; no-op on\n//     other platforms. The default is 64K (65536 bytes).\nfunc (w *Watcher) AddWith(name string, opts ...addOpt) error {\n\tif w.isClosed() {\n\t\treturn ErrClosed\n\t}\n\n\twith := getOptions(opts...)\n\tif with.bufsize < 4096 {\n\t\treturn fmt.Errorf(\"fsnotify.WithBufferSize: buffer size cannot be smaller than 4096 bytes\")\n\t}\n\n\tin := &input{\n\t\top:      opAddWatch,\n\t\tpath:    filepath.Clean(name),\n\t\tflags:   sysFSALLEVENTS,\n\t\treply:   make(chan error),\n\t\tbufsize: with.bufsize,\n\t}\n\tw.input <- in\n\tif err := w.wakeupReader(); err != nil {\n\t\treturn err\n\t}\n\treturn <-in.reply\n}\n\n// Remove stops monitoring the path for changes.\n//\n// Directories are always removed non-recursively. For example, if you added\n// /tmp/dir and /tmp/dir/subdir then you will need to remove both.\n//\n// Removing a path that has not yet been added returns [ErrNonExistentWatch].\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) Remove(name string) error {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\n\tin := &input{\n\t\top:    opRemoveWatch,\n\t\tpath:  filepath.Clean(name),\n\t\treply: make(chan error),\n\t}\n\tw.input <- in\n\tif err := w.wakeupReader(); err != nil {\n\t\treturn err\n\t}\n\treturn <-in.reply\n}\n\n// WatchList returns all paths explicitly added with [Watcher.Add] (and are not\n// yet removed).\n//\n// Returns nil if [Watcher.Close] was called.\nfunc (w *Watcher) WatchList() []string {\n\tif w.isClosed() {\n\t\treturn nil\n\t}\n\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\n\tentries := make([]string, 0, len(w.watches))\n\tfor _, entry := range w.watches {\n\t\tfor _, watchEntry := range entry {\n\t\t\tentries = append(entries, watchEntry.path)\n\t\t}\n\t}\n\n\treturn entries\n}\n\n// These options are from the old golang.org/x/exp/winfsnotify, where you could\n// add various options to the watch. This has long since been removed.\n//\n// The \"sys\" in the name is misleading as they're not part of any \"system\".\n//\n// This should all be removed at some point, and just use windows.FILE_NOTIFY_*\nconst (\n\tsysFSALLEVENTS  = 0xfff\n\tsysFSCREATE     = 0x100\n\tsysFSDELETE     = 0x200\n\tsysFSDELETESELF = 0x400\n\tsysFSMODIFY     = 0x2\n\tsysFSMOVE       = 0xc0\n\tsysFSMOVEDFROM  = 0x40\n\tsysFSMOVEDTO    = 0x80\n\tsysFSMOVESELF   = 0x800\n\tsysFSIGNORED    = 0x8000\n)\n\nfunc (w *Watcher) newEvent(name string, mask uint32) Event {\n\te := Event{Name: name}\n\tif mask&sysFSCREATE == sysFSCREATE || mask&sysFSMOVEDTO == sysFSMOVEDTO {\n\t\te.Op |= Create\n\t}\n\tif mask&sysFSDELETE == sysFSDELETE || mask&sysFSDELETESELF == sysFSDELETESELF {\n\t\te.Op |= Remove\n\t}\n\tif mask&sysFSMODIFY == sysFSMODIFY {\n\t\te.Op |= Write\n\t}\n\tif mask&sysFSMOVE == sysFSMOVE || mask&sysFSMOVESELF == sysFSMOVESELF || mask&sysFSMOVEDFROM == sysFSMOVEDFROM {\n\t\te.Op |= Rename\n\t}\n\treturn e\n}\n\nconst (\n\topAddWatch = iota\n\topRemoveWatch\n)\n\nconst (\n\tprovisional uint64 = 1 << (32 + iota)\n)\n\ntype input struct {\n\top      int\n\tpath    string\n\tflags   uint32\n\tbufsize int\n\treply   chan error\n}\n\ntype inode struct {\n\thandle windows.Handle\n\tvolume uint32\n\tindex  uint64\n}\n\ntype watch struct {\n\tov      windows.Overlapped\n\tino     *inode            // i-number\n\trecurse bool              // Recursive watch?\n\tpath    string            // Directory path\n\tmask    uint64            // Directory itself is being watched with these notify flags\n\tnames   map[string]uint64 // Map of names being watched and their notify flags\n\trename  string            // Remembers the old name while renaming a file\n\tbuf     []byte            // buffer, allocated later\n}\n\ntype (\n\tindexMap map[uint64]*watch\n\twatchMap map[uint32]indexMap\n)\n\nfunc (w *Watcher) wakeupReader() error {\n\terr := windows.PostQueuedCompletionStatus(w.port, 0, 0, nil)\n\tif err != nil {\n\t\treturn os.NewSyscallError(\"PostQueuedCompletionStatus\", err)\n\t}\n\treturn nil\n}\n\nfunc (w *Watcher) getDir(pathname string) (dir string, err error) {\n\tattr, err := windows.GetFileAttributes(windows.StringToUTF16Ptr(pathname))\n\tif err != nil {\n\t\treturn \"\", os.NewSyscallError(\"GetFileAttributes\", err)\n\t}\n\tif attr&windows.FILE_ATTRIBUTE_DIRECTORY != 0 {\n\t\tdir = pathname\n\t} else {\n\t\tdir, _ = filepath.Split(pathname)\n\t\tdir = filepath.Clean(dir)\n\t}\n\treturn\n}\n\nfunc (w *Watcher) getIno(path string) (ino *inode, err error) {\n\th, err := windows.CreateFile(windows.StringToUTF16Ptr(path),\n\t\twindows.FILE_LIST_DIRECTORY,\n\t\twindows.FILE_SHARE_READ|windows.FILE_SHARE_WRITE|windows.FILE_SHARE_DELETE,\n\t\tnil, windows.OPEN_EXISTING,\n\t\twindows.FILE_FLAG_BACKUP_SEMANTICS|windows.FILE_FLAG_OVERLAPPED, 0)\n\tif err != nil {\n\t\treturn nil, os.NewSyscallError(\"CreateFile\", err)\n\t}\n\n\tvar fi windows.ByHandleFileInformation\n\terr = windows.GetFileInformationByHandle(h, &fi)\n\tif err != nil {\n\t\twindows.CloseHandle(h)\n\t\treturn nil, os.NewSyscallError(\"GetFileInformationByHandle\", err)\n\t}\n\tino = &inode{\n\t\thandle: h,\n\t\tvolume: fi.VolumeSerialNumber,\n\t\tindex:  uint64(fi.FileIndexHigh)<<32 | uint64(fi.FileIndexLow),\n\t}\n\treturn ino, nil\n}\n\n// Must run within the I/O thread.\nfunc (m watchMap) get(ino *inode) *watch {\n\tif i := m[ino.volume]; i != nil {\n\t\treturn i[ino.index]\n\t}\n\treturn nil\n}\n\n// Must run within the I/O thread.\nfunc (m watchMap) set(ino *inode, watch *watch) {\n\ti := m[ino.volume]\n\tif i == nil {\n\t\ti = make(indexMap)\n\t\tm[ino.volume] = i\n\t}\n\ti[ino.index] = watch\n}\n\n// Must run within the I/O thread.\nfunc (w *Watcher) addWatch(pathname string, flags uint64, bufsize int) error {\n\t//pathname, recurse := recursivePath(pathname)\n\trecurse := false\n\n\tdir, err := w.getDir(pathname)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tino, err := w.getIno(dir)\n\tif err != nil {\n\t\treturn err\n\t}\n\tw.mu.Lock()\n\twatchEntry := w.watches.get(ino)\n\tw.mu.Unlock()\n\tif watchEntry == nil {\n\t\t_, err := windows.CreateIoCompletionPort(ino.handle, w.port, 0, 0)\n\t\tif err != nil {\n\t\t\twindows.CloseHandle(ino.handle)\n\t\t\treturn os.NewSyscallError(\"CreateIoCompletionPort\", err)\n\t\t}\n\t\twatchEntry = &watch{\n\t\t\tino:     ino,\n\t\t\tpath:    dir,\n\t\t\tnames:   make(map[string]uint64),\n\t\t\trecurse: recurse,\n\t\t\tbuf:     make([]byte, bufsize),\n\t\t}\n\t\tw.mu.Lock()\n\t\tw.watches.set(ino, watchEntry)\n\t\tw.mu.Unlock()\n\t\tflags |= provisional\n\t} else {\n\t\twindows.CloseHandle(ino.handle)\n\t}\n\tif pathname == dir {\n\t\twatchEntry.mask |= flags\n\t} else {\n\t\twatchEntry.names[filepath.Base(pathname)] |= flags\n\t}\n\n\terr = w.startRead(watchEntry)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif pathname == dir {\n\t\twatchEntry.mask &= ^provisional\n\t} else {\n\t\twatchEntry.names[filepath.Base(pathname)] &= ^provisional\n\t}\n\treturn nil\n}\n\n// Must run within the I/O thread.\nfunc (w *Watcher) remWatch(pathname string) error {\n\tpathname, recurse := recursivePath(pathname)\n\n\tdir, err := w.getDir(pathname)\n\tif err != nil {\n\t\treturn err\n\t}\n\tino, err := w.getIno(dir)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tw.mu.Lock()\n\twatch := w.watches.get(ino)\n\tw.mu.Unlock()\n\n\tif recurse && !watch.recurse {\n\t\treturn fmt.Errorf(\"can't use \\\\... with non-recursive watch %q\", pathname)\n\t}\n\n\terr = windows.CloseHandle(ino.handle)\n\tif err != nil {\n\t\tw.sendError(os.NewSyscallError(\"CloseHandle\", err))\n\t}\n\tif watch == nil {\n\t\treturn fmt.Errorf(\"%w: %s\", ErrNonExistentWatch, pathname)\n\t}\n\tif pathname == dir {\n\t\tw.sendEvent(watch.path, watch.mask&sysFSIGNORED)\n\t\twatch.mask = 0\n\t} else {\n\t\tname := filepath.Base(pathname)\n\t\tw.sendEvent(filepath.Join(watch.path, name), watch.names[name]&sysFSIGNORED)\n\t\tdelete(watch.names, name)\n\t}\n\n\treturn w.startRead(watch)\n}\n\n// Must run within the I/O thread.\nfunc (w *Watcher) deleteWatch(watch *watch) {\n\tfor name, mask := range watch.names {\n\t\tif mask&provisional == 0 {\n\t\t\tw.sendEvent(filepath.Join(watch.path, name), mask&sysFSIGNORED)\n\t\t}\n\t\tdelete(watch.names, name)\n\t}\n\tif watch.mask != 0 {\n\t\tif watch.mask&provisional == 0 {\n\t\t\tw.sendEvent(watch.path, watch.mask&sysFSIGNORED)\n\t\t}\n\t\twatch.mask = 0\n\t}\n}\n\n// Must run within the I/O thread.\nfunc (w *Watcher) startRead(watch *watch) error {\n\terr := windows.CancelIo(watch.ino.handle)\n\tif err != nil {\n\t\tw.sendError(os.NewSyscallError(\"CancelIo\", err))\n\t\tw.deleteWatch(watch)\n\t}\n\tmask := w.toWindowsFlags(watch.mask)\n\tfor _, m := range watch.names {\n\t\tmask |= w.toWindowsFlags(m)\n\t}\n\tif mask == 0 {\n\t\terr := windows.CloseHandle(watch.ino.handle)\n\t\tif err != nil {\n\t\t\tw.sendError(os.NewSyscallError(\"CloseHandle\", err))\n\t\t}\n\t\tw.mu.Lock()\n\t\tdelete(w.watches[watch.ino.volume], watch.ino.index)\n\t\tw.mu.Unlock()\n\t\treturn nil\n\t}\n\n\t// We need to pass the array, rather than the slice.\n\thdr := (*reflect.SliceHeader)(unsafe.Pointer(&watch.buf))\n\trdErr := windows.ReadDirectoryChanges(watch.ino.handle,\n\t\t(*byte)(unsafe.Pointer(hdr.Data)), uint32(hdr.Len),\n\t\twatch.recurse, mask, nil, &watch.ov, 0)\n\tif rdErr != nil {\n\t\terr := os.NewSyscallError(\"ReadDirectoryChanges\", rdErr)\n\t\tif rdErr == windows.ERROR_ACCESS_DENIED && watch.mask&provisional == 0 {\n\t\t\t// Watched directory was probably removed\n\t\t\tw.sendEvent(watch.path, watch.mask&sysFSDELETESELF)\n\t\t\terr = nil\n\t\t}\n\t\tw.deleteWatch(watch)\n\t\tw.startRead(watch)\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// readEvents reads from the I/O completion port, converts the\n// received events into Event objects and sends them via the Events channel.\n// Entry point to the I/O thread.\nfunc (w *Watcher) readEvents() {\n\tvar (\n\t\tn   uint32\n\t\tkey uintptr\n\t\tov  *windows.Overlapped\n\t)\n\truntime.LockOSThread()\n\n\tfor {\n\t\t// This error is handled after the watch == nil check below.\n\t\tqErr := windows.GetQueuedCompletionStatus(w.port, &n, &key, &ov, windows.INFINITE)\n\n\t\twatch := (*watch)(unsafe.Pointer(ov))\n\t\tif watch == nil {\n\t\t\tselect {\n\t\t\tcase ch := <-w.quit:\n\t\t\t\tw.mu.Lock()\n\t\t\t\tvar indexes []indexMap\n\t\t\t\tfor _, index := range w.watches {\n\t\t\t\t\tindexes = append(indexes, index)\n\t\t\t\t}\n\t\t\t\tw.mu.Unlock()\n\t\t\t\tfor _, index := range indexes {\n\t\t\t\t\tfor _, watch := range index {\n\t\t\t\t\t\tw.deleteWatch(watch)\n\t\t\t\t\t\tw.startRead(watch)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\terr := windows.CloseHandle(w.port)\n\t\t\t\tif err != nil {\n\t\t\t\t\terr = os.NewSyscallError(\"CloseHandle\", err)\n\t\t\t\t}\n\t\t\t\tclose(w.Events)\n\t\t\t\tclose(w.Errors)\n\t\t\t\tch <- err\n\t\t\t\treturn\n\t\t\tcase in := <-w.input:\n\t\t\t\tswitch in.op {\n\t\t\t\tcase opAddWatch:\n\t\t\t\t\tin.reply <- w.addWatch(in.path, uint64(in.flags), in.bufsize)\n\t\t\t\tcase opRemoveWatch:\n\t\t\t\t\tin.reply <- w.remWatch(in.path)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch qErr {\n\t\tcase nil:\n\t\t\t// No error\n\t\tcase windows.ERROR_MORE_DATA:\n\t\t\tif watch == nil {\n\t\t\t\tw.sendError(errors.New(\"ERROR_MORE_DATA has unexpectedly null lpOverlapped buffer\"))\n\t\t\t} else {\n\t\t\t\t// The i/o succeeded but the buffer is full.\n\t\t\t\t// In theory we should be building up a full packet.\n\t\t\t\t// In practice we can get away with just carrying on.\n\t\t\t\tn = uint32(unsafe.Sizeof(watch.buf))\n\t\t\t}\n\t\tcase windows.ERROR_ACCESS_DENIED:\n\t\t\t// Watched directory was probably removed\n\t\t\tw.sendEvent(watch.path, watch.mask&sysFSDELETESELF)\n\t\t\tw.deleteWatch(watch)\n\t\t\tw.startRead(watch)\n\t\t\tcontinue\n\t\tcase windows.ERROR_OPERATION_ABORTED:\n\t\t\t// CancelIo was called on this handle\n\t\t\tcontinue\n\t\tdefault:\n\t\t\tw.sendError(os.NewSyscallError(\"GetQueuedCompletionPort\", qErr))\n\t\t\tcontinue\n\t\t}\n\n\t\tvar offset uint32\n\t\tfor {\n\t\t\tif n == 0 {\n\t\t\t\tw.sendError(ErrEventOverflow)\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Point \"raw\" to the event in the buffer\n\t\t\traw := (*windows.FileNotifyInformation)(unsafe.Pointer(&watch.buf[offset]))\n\n\t\t\t// Create a buf that is the size of the path name\n\t\t\tsize := int(raw.FileNameLength / 2)\n\t\t\tvar buf []uint16\n\t\t\t// TODO: Use unsafe.Slice in Go 1.17; https://stackoverflow.com/questions/51187973\n\t\t\tsh := (*reflect.SliceHeader)(unsafe.Pointer(&buf))\n\t\t\tsh.Data = uintptr(unsafe.Pointer(&raw.FileName))\n\t\t\tsh.Len = size\n\t\t\tsh.Cap = size\n\t\t\tname := windows.UTF16ToString(buf)\n\t\t\tfullname := filepath.Join(watch.path, name)\n\n\t\t\tvar mask uint64\n\t\t\tswitch raw.Action {\n\t\t\tcase windows.FILE_ACTION_REMOVED:\n\t\t\t\tmask = sysFSDELETESELF\n\t\t\tcase windows.FILE_ACTION_MODIFIED:\n\t\t\t\tmask = sysFSMODIFY\n\t\t\tcase windows.FILE_ACTION_RENAMED_OLD_NAME:\n\t\t\t\twatch.rename = name\n\t\t\tcase windows.FILE_ACTION_RENAMED_NEW_NAME:\n\t\t\t\t// Update saved path of all sub-watches.\n\t\t\t\told := filepath.Join(watch.path, watch.rename)\n\t\t\t\tw.mu.Lock()\n\t\t\t\tfor _, watchMap := range w.watches {\n\t\t\t\t\tfor _, ww := range watchMap {\n\t\t\t\t\t\tif strings.HasPrefix(ww.path, old) {\n\t\t\t\t\t\t\tww.path = filepath.Join(fullname, strings.TrimPrefix(ww.path, old))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tw.mu.Unlock()\n\n\t\t\t\tif watch.names[watch.rename] != 0 {\n\t\t\t\t\twatch.names[name] |= watch.names[watch.rename]\n\t\t\t\t\tdelete(watch.names, watch.rename)\n\t\t\t\t\tmask = sysFSMOVESELF\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsendNameEvent := func() {\n\t\t\t\tw.sendEvent(fullname, watch.names[name]&mask)\n\t\t\t}\n\t\t\tif raw.Action != windows.FILE_ACTION_RENAMED_NEW_NAME {\n\t\t\t\tsendNameEvent()\n\t\t\t}\n\t\t\tif raw.Action == windows.FILE_ACTION_REMOVED {\n\t\t\t\tw.sendEvent(fullname, watch.names[name]&sysFSIGNORED)\n\t\t\t\tdelete(watch.names, name)\n\t\t\t}\n\n\t\t\tw.sendEvent(fullname, watch.mask&w.toFSnotifyFlags(raw.Action))\n\t\t\tif raw.Action == windows.FILE_ACTION_RENAMED_NEW_NAME {\n\t\t\t\tfullname = filepath.Join(watch.path, watch.rename)\n\t\t\t\tsendNameEvent()\n\t\t\t}\n\n\t\t\t// Move to the next event in the buffer\n\t\t\tif raw.NextEntryOffset == 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\toffset += raw.NextEntryOffset\n\n\t\t\t// Error!\n\t\t\tif offset >= n {\n\t\t\t\t//lint:ignore ST1005 Windows should be capitalized\n\t\t\t\tw.sendError(errors.New(\n\t\t\t\t\t\"Windows system assumed buffer larger than it is, events have likely been missed\"))\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif err := w.startRead(watch); err != nil {\n\t\t\tw.sendError(err)\n\t\t}\n\t}\n}\n\nfunc (w *Watcher) toWindowsFlags(mask uint64) uint32 {\n\tvar m uint32\n\tif mask&sysFSMODIFY != 0 {\n\t\tm |= windows.FILE_NOTIFY_CHANGE_LAST_WRITE\n\t}\n\tif mask&(sysFSMOVE|sysFSCREATE|sysFSDELETE) != 0 {\n\t\tm |= windows.FILE_NOTIFY_CHANGE_FILE_NAME | windows.FILE_NOTIFY_CHANGE_DIR_NAME\n\t}\n\treturn m\n}\n\nfunc (w *Watcher) toFSnotifyFlags(action uint32) uint64 {\n\tswitch action {\n\tcase windows.FILE_ACTION_ADDED:\n\t\treturn sysFSCREATE\n\tcase windows.FILE_ACTION_REMOVED:\n\t\treturn sysFSDELETE\n\tcase windows.FILE_ACTION_MODIFIED:\n\t\treturn sysFSMODIFY\n\tcase windows.FILE_ACTION_RENAMED_OLD_NAME:\n\t\treturn sysFSMOVEDFROM\n\tcase windows.FILE_ACTION_RENAMED_NEW_NAME:\n\t\treturn sysFSMOVEDTO\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/fsnotify.go",
    "content": "// Package fsnotify provides a cross-platform interface for file system\n// notifications.\n//\n// Currently supported systems:\n//\n//\tLinux 2.6.32+    via inotify\n//\tBSD, macOS       via kqueue\n//\tWindows          via ReadDirectoryChangesW\n//\tillumos          via FEN\npackage fsnotify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\n// Event represents a file system notification.\ntype Event struct {\n\t// Path to the file or directory.\n\t//\n\t// Paths are relative to the input; for example with Add(\"dir\") the Name\n\t// will be set to \"dir/file\" if you create that file, but if you use\n\t// Add(\"/path/to/dir\") it will be \"/path/to/dir/file\".\n\tName string\n\n\t// File operation that triggered the event.\n\t//\n\t// This is a bitmask and some systems may send multiple operations at once.\n\t// Use the Event.Has() method instead of comparing with ==.\n\tOp Op\n}\n\n// Op describes a set of file operations.\ntype Op uint32\n\n// The operations fsnotify can trigger; see the documentation on [Watcher] for a\n// full description, and check them with [Event.Has].\nconst (\n\t// A new pathname was created.\n\tCreate Op = 1 << iota\n\n\t// The pathname was written to; this does *not* mean the write has finished,\n\t// and a write can be followed by more writes.\n\tWrite\n\n\t// The path was removed; any watches on it will be removed. Some \"remove\"\n\t// operations may trigger a Rename if the file is actually moved (for\n\t// example \"remove to trash\" is often a rename).\n\tRemove\n\n\t// The path was renamed to something else; any watched on it will be\n\t// removed.\n\tRename\n\n\t// File attributes were changed.\n\t//\n\t// It's generally not recommended to take action on this event, as it may\n\t// get triggered very frequently by some software. For example, Spotlight\n\t// indexing on macOS, anti-virus software, backup software, etc.\n\tChmod\n)\n\n// Common errors that can be reported.\nvar (\n\tErrNonExistentWatch = errors.New(\"fsnotify: can't remove non-existent watch\")\n\tErrEventOverflow    = errors.New(\"fsnotify: queue or buffer overflow\")\n\tErrClosed           = errors.New(\"fsnotify: watcher already closed\")\n)\n\nfunc (o Op) String() string {\n\tvar b strings.Builder\n\tif o.Has(Create) {\n\t\tb.WriteString(\"|CREATE\")\n\t}\n\tif o.Has(Remove) {\n\t\tb.WriteString(\"|REMOVE\")\n\t}\n\tif o.Has(Write) {\n\t\tb.WriteString(\"|WRITE\")\n\t}\n\tif o.Has(Rename) {\n\t\tb.WriteString(\"|RENAME\")\n\t}\n\tif o.Has(Chmod) {\n\t\tb.WriteString(\"|CHMOD\")\n\t}\n\tif b.Len() == 0 {\n\t\treturn \"[no events]\"\n\t}\n\treturn b.String()[1:]\n}\n\n// Has reports if this operation has the given operation.\nfunc (o Op) Has(h Op) bool { return o&h != 0 }\n\n// Has reports if this event has the given operation.\nfunc (e Event) Has(op Op) bool { return e.Op.Has(op) }\n\n// String returns a string representation of the event with their path.\nfunc (e Event) String() string {\n\treturn fmt.Sprintf(\"%-13s %q\", e.Op.String(), e.Name)\n}\n\ntype (\n\taddOpt   func(opt *withOpts)\n\twithOpts struct {\n\t\tbufsize int\n\t}\n)\n\nvar defaultOpts = withOpts{\n\tbufsize: 65536, // 64K\n}\n\nfunc getOptions(opts ...addOpt) withOpts {\n\twith := defaultOpts\n\tfor _, o := range opts {\n\t\to(&with)\n\t}\n\treturn with\n}\n\n// WithBufferSize sets the [ReadDirectoryChangesW] buffer size.\n//\n// This only has effect on Windows systems, and is a no-op for other backends.\n//\n// The default value is 64K (65536 bytes) which is the highest value that works\n// on all filesystems and should be enough for most applications, but if you\n// have a large burst of events it may not be enough. You can increase it if\n// you're hitting \"queue or buffer overflow\" errors ([ErrEventOverflow]).\n//\n// [ReadDirectoryChangesW]: https://learn.microsoft.com/en-gb/windows/win32/api/winbase/nf-winbase-readdirectorychangesw\nfunc WithBufferSize(bytes int) addOpt {\n\treturn func(opt *withOpts) { opt.bufsize = bytes }\n}\n\n// Check if this path is recursive (ends with \"/...\" or \"\\...\"), and return the\n// path with the /... stripped.\nfunc recursivePath(path string) (string, bool) {\n\tif filepath.Base(path) == \"...\" {\n\t\treturn filepath.Dir(path), true\n\t}\n\treturn path, false\n}\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/mkdoc.zsh",
    "content": "#!/usr/bin/env zsh\n[ \"${ZSH_VERSION:-}\" = \"\" ] && echo >&2 \"Only works with zsh\" && exit 1\nsetopt err_exit no_unset pipefail extended_glob\n\n# Simple script to update the godoc comments on all watchers so you don't need\n# to update the same comment 5 times.\n\nwatcher=$(<<EOF\n// Watcher watches a set of paths, delivering events on a channel.\n//\n// A watcher should not be copied (e.g. pass it by pointer, rather than by\n// value).\n//\n// # Linux notes\n//\n// When a file is removed a Remove event won't be emitted until all file\n// descriptors are closed, and deletes will always emit a Chmod. For example:\n//\n//\tfp := os.Open(\"file\")\n//\tos.Remove(\"file\")        // Triggers Chmod\n//\tfp.Close()               // Triggers Remove\n//\n// This is the event that inotify sends, so not much can be changed about this.\n//\n// The fs.inotify.max_user_watches sysctl variable specifies the upper limit\n// for the number of watches per user, and fs.inotify.max_user_instances\n// specifies the maximum number of inotify instances per user. Every Watcher you\n// create is an \"instance\", and every path you add is a \"watch\".\n//\n// These are also exposed in /proc as /proc/sys/fs/inotify/max_user_watches and\n// /proc/sys/fs/inotify/max_user_instances\n//\n// To increase them you can use sysctl or write the value to the /proc file:\n//\n//\t# Default values on Linux 5.18\n//\tsysctl fs.inotify.max_user_watches=124983\n//\tsysctl fs.inotify.max_user_instances=128\n//\n// To make the changes persist on reboot edit /etc/sysctl.conf or\n// /usr/lib/sysctl.d/50-default.conf (details differ per Linux distro; check\n// your distro's documentation):\n//\n//\tfs.inotify.max_user_watches=124983\n//\tfs.inotify.max_user_instances=128\n//\n// Reaching the limit will result in a \"no space left on device\" or \"too many open\n// files\" error.\n//\n// # kqueue notes (macOS, BSD)\n//\n// kqueue requires opening a file descriptor for every file that's being watched;\n// so if you're watching a directory with five files then that's six file\n// descriptors. You will run in to your system's \"max open files\" limit faster on\n// these platforms.\n//\n// The sysctl variables kern.maxfiles and kern.maxfilesperproc can be used to\n// control the maximum number of open files, as well as /etc/login.conf on BSD\n// systems.\n//\n// # Windows notes\n//\n// Paths can be added as \"C:\\\\path\\\\to\\\\dir\", but forward slashes\n// (\"C:/path/to/dir\") will also work.\n//\n// When a watched directory is removed it will always send an event for the\n// directory itself, but may not send events for all files in that directory.\n// Sometimes it will send events for all times, sometimes it will send no\n// events, and often only for some files.\n//\n// The default ReadDirectoryChangesW() buffer size is 64K, which is the largest\n// value that is guaranteed to work with SMB filesystems. If you have many\n// events in quick succession this may not be enough, and you will have to use\n// [WithBufferSize] to increase the value.\nEOF\n)\n\nnew=$(<<EOF\n// NewWatcher creates a new Watcher.\nEOF\n)\n\nnewbuffered=$(<<EOF\n// NewBufferedWatcher creates a new Watcher with a buffered Watcher.Events\n// channel.\n//\n// The main use case for this is situations with a very large number of events\n// where the kernel buffer size can't be increased (e.g. due to lack of\n// permissions). An unbuffered Watcher will perform better for almost all use\n// cases, and whenever possible you will be better off increasing the kernel\n// buffers instead of adding a large userspace buffer.\nEOF\n)\n\nadd=$(<<EOF\n// Add starts monitoring the path for changes.\n//\n// A path can only be watched once; watching it more than once is a no-op and will\n// not return an error. Paths that do not yet exist on the filesystem cannot be\n// watched.\n//\n// A watch will be automatically removed if the watched path is deleted or\n// renamed. The exception is the Windows backend, which doesn't remove the\n// watcher on renames.\n//\n// Notifications on network filesystems (NFS, SMB, FUSE, etc.) or special\n// filesystems (/proc, /sys, etc.) generally don't work.\n//\n// Returns [ErrClosed] if [Watcher.Close] was called.\n//\n// See [Watcher.AddWith] for a version that allows adding options.\n//\n// # Watching directories\n//\n// All files in a directory are monitored, including new files that are created\n// after the watcher is started. Subdirectories are not watched (i.e. it's\n// non-recursive).\n//\n// # Watching files\n//\n// Watching individual files (rather than directories) is generally not\n// recommended as many programs (especially editors) update files atomically: it\n// will write to a temporary file which is then moved to to destination,\n// overwriting the original (or some variant thereof). The watcher on the\n// original file is now lost, as that no longer exists.\n//\n// The upshot of this is that a power failure or crash won't leave a\n// half-written file.\n//\n// Watch the parent directory and use Event.Name to filter out files you're not\n// interested in. There is an example of this in cmd/fsnotify/file.go.\nEOF\n)\n\naddwith=$(<<EOF\n// AddWith is like [Watcher.Add], but allows adding options. When using Add()\n// the defaults described below are used.\n//\n// Possible options are:\n//\n//   - [WithBufferSize] sets the buffer size for the Windows backend; no-op on\n//     other platforms. The default is 64K (65536 bytes).\nEOF\n)\n\nremove=$(<<EOF\n// Remove stops monitoring the path for changes.\n//\n// Directories are always removed non-recursively. For example, if you added\n// /tmp/dir and /tmp/dir/subdir then you will need to remove both.\n//\n// Removing a path that has not yet been added returns [ErrNonExistentWatch].\n//\n// Returns nil if [Watcher.Close] was called.\nEOF\n)\n\nclose=$(<<EOF\n// Close removes all watches and closes the Events channel.\nEOF\n)\n\nwatchlist=$(<<EOF\n// WatchList returns all paths explicitly added with [Watcher.Add] (and are not\n// yet removed).\n//\n// Returns nil if [Watcher.Close] was called.\nEOF\n)\n\nevents=$(<<EOF\n\t// Events sends the filesystem change events.\n\t//\n\t// fsnotify can send the following events; a \"path\" here can refer to a\n\t// file, directory, symbolic link, or special file like a FIFO.\n\t//\n\t//   fsnotify.Create    A new path was created; this may be followed by one\n\t//                      or more Write events if data also gets written to a\n\t//                      file.\n\t//\n\t//   fsnotify.Remove    A path was removed.\n\t//\n\t//   fsnotify.Rename    A path was renamed. A rename is always sent with the\n\t//                      old path as Event.Name, and a Create event will be\n\t//                      sent with the new name. Renames are only sent for\n\t//                      paths that are currently watched; e.g. moving an\n\t//                      unmonitored file into a monitored directory will\n\t//                      show up as just a Create. Similarly, renaming a file\n\t//                      to outside a monitored directory will show up as\n\t//                      only a Rename.\n\t//\n\t//   fsnotify.Write     A file or named pipe was written to. A Truncate will\n\t//                      also trigger a Write. A single \"write action\"\n\t//                      initiated by the user may show up as one or multiple\n\t//                      writes, depending on when the system syncs things to\n\t//                      disk. For example when compiling a large Go program\n\t//                      you may get hundreds of Write events, and you may\n\t//                      want to wait until you've stopped receiving them\n\t//                      (see the dedup example in cmd/fsnotify).\n\t//\n\t//                      Some systems may send Write event for directories\n\t//                      when the directory content changes.\n\t//\n\t//   fsnotify.Chmod     Attributes were changed. On Linux this is also sent\n\t//                      when a file is removed (or more accurately, when a\n\t//                      link to an inode is removed). On kqueue it's sent\n\t//                      when a file is truncated. On Windows it's never\n\t//                      sent.\nEOF\n)\n\nerrors=$(<<EOF\n\t// Errors sends any errors.\n\t//\n\t// ErrEventOverflow is used to indicate there are too many events:\n\t//\n\t//  - inotify:      There are too many queued events (fs.inotify.max_queued_events sysctl)\n\t//  - windows:      The buffer size is too small; WithBufferSize() can be used to increase it.\n\t//  - kqueue, fen:  Not used.\nEOF\n)\n\nset-cmt() {\n\tlocal pat=$1\n\tlocal cmt=$2\n\n\tIFS=$'\\n' local files=($(grep -n $pat backend_*~*_test.go))\n\tfor f in $files; do\n\t\tIFS=':' local fields=($=f)\n\t\tlocal file=$fields[1]\n\t\tlocal end=$(( $fields[2] - 1 ))\n\n\t\t# Find start of comment.\n\t\tlocal start=0\n\t\tIFS=$'\\n' local lines=($(head -n$end $file))\n\t\tfor (( i = 1; i <= $#lines; i++ )); do\n\t\t\tlocal line=$lines[-$i]\n\t\t\tif ! grep -q '^[[:space:]]*//' <<<$line; then\n\t\t\t\tstart=$(( end - (i - 2) ))\n\t\t\t\tbreak\n\t\t\tfi\n\t\tdone\n\n\t\thead -n $(( start - 1 )) $file  >/tmp/x\n\t\tprint -r -- $cmt                >>/tmp/x\n\t\ttail -n+$(( end + 1 ))   $file  >>/tmp/x\n\t\tmv /tmp/x $file\n\tdone\n}\n\nset-cmt '^type Watcher struct '             $watcher\nset-cmt '^func NewWatcher('                 $new\nset-cmt '^func NewBufferedWatcher('         $newbuffered\nset-cmt '^func (w \\*Watcher) Add('          $add\nset-cmt '^func (w \\*Watcher) AddWith('      $addwith\nset-cmt '^func (w \\*Watcher) Remove('       $remove\nset-cmt '^func (w \\*Watcher) Close('        $close\nset-cmt '^func (w \\*Watcher) WatchList('    $watchlist\nset-cmt '^[[:space:]]*Events *chan Event$'  $events\nset-cmt '^[[:space:]]*Errors *chan error$'  $errors\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/system_bsd.go",
    "content": "//go:build freebsd || openbsd || netbsd || dragonfly\n// +build freebsd openbsd netbsd dragonfly\n\npackage fsnotify\n\nimport \"golang.org/x/sys/unix\"\n\nconst openMode = unix.O_NONBLOCK | unix.O_RDONLY | unix.O_CLOEXEC\n"
  },
  {
    "path": "vendor/github.com/fsnotify/fsnotify/system_darwin.go",
    "content": "//go:build darwin\n// +build darwin\n\npackage fsnotify\n\nimport \"golang.org/x/sys/unix\"\n\n// note: this constant is not defined on BSD\nconst openMode = unix.O_EVTONLY | unix.O_CLOEXEC\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/internal/commandinfo.go",
    "content": "// Copyright 2014 Gary Burd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"): you may\n// not use this file except in compliance with the License. You may obtain\n// a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations\n// under the License.\n\npackage internal // import \"github.com/garyburd/redigo/internal\"\n\nimport (\n\t\"strings\"\n)\n\nconst (\n\tWatchState = 1 << iota\n\tMultiState\n\tSubscribeState\n\tMonitorState\n)\n\ntype CommandInfo struct {\n\tSet, Clear int\n}\n\nvar commandInfos = map[string]CommandInfo{\n\t\"WATCH\":      {Set: WatchState},\n\t\"UNWATCH\":    {Clear: WatchState},\n\t\"MULTI\":      {Set: MultiState},\n\t\"EXEC\":       {Clear: WatchState | MultiState},\n\t\"DISCARD\":    {Clear: WatchState | MultiState},\n\t\"PSUBSCRIBE\": {Set: SubscribeState},\n\t\"SUBSCRIBE\":  {Set: SubscribeState},\n\t\"MONITOR\":    {Set: MonitorState},\n}\n\nfunc init() {\n\tfor n, ci := range commandInfos {\n\t\tcommandInfos[strings.ToLower(n)] = ci\n\t}\n}\n\nfunc LookupCommandInfo(commandName string) CommandInfo {\n\tif ci, ok := commandInfos[commandName]; ok {\n\t\treturn ci\n\t}\n\treturn commandInfos[strings.ToUpper(commandName)]\n}\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/redis/conn.go",
    "content": "// Copyright 2012 Gary Burd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"): you may\n// not use this file except in compliance with the License. You may obtain\n// a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations\n// under the License.\n\npackage redis\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"crypto/tls\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"sync\"\n\t\"time\"\n)\n\nvar (\n\t_ ConnWithTimeout = (*conn)(nil)\n)\n\n// conn is the low-level implementation of Conn\ntype conn struct {\n\t// Shared\n\tmu      sync.Mutex\n\tpending int\n\terr     error\n\tconn    net.Conn\n\n\t// Read\n\treadTimeout time.Duration\n\tbr          *bufio.Reader\n\n\t// Write\n\twriteTimeout time.Duration\n\tbw           *bufio.Writer\n\n\t// Scratch space for formatting argument length.\n\t// '*' or '$', length, \"\\r\\n\"\n\tlenScratch [32]byte\n\n\t// Scratch space for formatting integers and floats.\n\tnumScratch [40]byte\n}\n\n// DialTimeout acts like Dial but takes timeouts for establishing the\n// connection to the server, writing a command and reading a reply.\n//\n// Deprecated: This package is replaced by github.com/gomodule/redigo/redis.\nfunc DialTimeout(network, address string, connectTimeout, readTimeout, writeTimeout time.Duration) (Conn, error) {\n\treturn Dial(network, address,\n\t\tDialConnectTimeout(connectTimeout),\n\t\tDialReadTimeout(readTimeout),\n\t\tDialWriteTimeout(writeTimeout))\n}\n\n// DialOption specifies an option for dialing a Redis server.\ntype DialOption struct {\n\tf func(*dialOptions)\n}\n\ntype dialOptions struct {\n\treadTimeout  time.Duration\n\twriteTimeout time.Duration\n\tdialer       *net.Dialer\n\tdial         func(network, addr string) (net.Conn, error)\n\tdb           int\n\tpassword     string\n\tuseTLS       bool\n\tskipVerify   bool\n\ttlsConfig    *tls.Config\n}\n\n// DialReadTimeout specifies the timeout for reading a single command reply.\nfunc DialReadTimeout(d time.Duration) DialOption {\n\treturn DialOption{func(do *dialOptions) {\n\t\tdo.readTimeout = d\n\t}}\n}\n\n// DialWriteTimeout specifies the timeout for writing a single command.\nfunc DialWriteTimeout(d time.Duration) DialOption {\n\treturn DialOption{func(do *dialOptions) {\n\t\tdo.writeTimeout = d\n\t}}\n}\n\n// DialConnectTimeout specifies the timeout for connecting to the Redis server when\n// no DialNetDial option is specified.\nfunc DialConnectTimeout(d time.Duration) DialOption {\n\treturn DialOption{func(do *dialOptions) {\n\t\tdo.dialer.Timeout = d\n\t}}\n}\n\n// DialKeepAlive specifies the keep-alive period for TCP connections to the Redis server\n// when no DialNetDial option is specified.\n// If zero, keep-alives are not enabled. If no DialKeepAlive option is specified then\n// the default of 5 minutes is used to ensure that half-closed TCP sessions are detected.\nfunc DialKeepAlive(d time.Duration) DialOption {\n\treturn DialOption{func(do *dialOptions) {\n\t\tdo.dialer.KeepAlive = d\n\t}}\n}\n\n// DialNetDial specifies a custom dial function for creating TCP\n// connections, otherwise a net.Dialer customized via the other options is used.\n// DialNetDial overrides DialConnectTimeout and DialKeepAlive.\nfunc DialNetDial(dial func(network, addr string) (net.Conn, error)) DialOption {\n\treturn DialOption{func(do *dialOptions) {\n\t\tdo.dial = dial\n\t}}\n}\n\n// DialDatabase specifies the database to select when dialing a connection.\nfunc DialDatabase(db int) DialOption {\n\treturn DialOption{func(do *dialOptions) {\n\t\tdo.db = db\n\t}}\n}\n\n// DialPassword specifies the password to use when connecting to\n// the Redis server.\nfunc DialPassword(password string) DialOption {\n\treturn DialOption{func(do *dialOptions) {\n\t\tdo.password = password\n\t}}\n}\n\n// DialTLSConfig specifies the config to use when a TLS connection is dialed.\n// Has no effect when not dialing a TLS connection.\nfunc DialTLSConfig(c *tls.Config) DialOption {\n\treturn DialOption{func(do *dialOptions) {\n\t\tdo.tlsConfig = c\n\t}}\n}\n\n// DialTLSSkipVerify disables server name verification when connecting over\n// TLS. Has no effect when not dialing a TLS connection.\nfunc DialTLSSkipVerify(skip bool) DialOption {\n\treturn DialOption{func(do *dialOptions) {\n\t\tdo.skipVerify = skip\n\t}}\n}\n\n// DialUseTLS specifies whether TLS should be used when connecting to the\n// server. This option is ignore by DialURL.\nfunc DialUseTLS(useTLS bool) DialOption {\n\treturn DialOption{func(do *dialOptions) {\n\t\tdo.useTLS = useTLS\n\t}}\n}\n\n// Dial connects to the Redis server at the given network and\n// address using the specified options.\n//\n// Deprecated: This package is replaced by github.com/gomodule/redigo/redis.\nfunc Dial(network, address string, options ...DialOption) (Conn, error) {\n\tdo := dialOptions{\n\t\tdialer: &net.Dialer{\n\t\t\tKeepAlive: time.Minute * 5,\n\t\t},\n\t}\n\tfor _, option := range options {\n\t\toption.f(&do)\n\t}\n\tif do.dial == nil {\n\t\tdo.dial = do.dialer.Dial\n\t}\n\n\tnetConn, err := do.dial(network, address)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif do.useTLS {\n\t\tvar tlsConfig *tls.Config\n\t\tif do.tlsConfig == nil {\n\t\t\ttlsConfig = &tls.Config{InsecureSkipVerify: do.skipVerify}\n\t\t} else {\n\t\t\ttlsConfig = cloneTLSConfig(do.tlsConfig)\n\t\t}\n\t\tif tlsConfig.ServerName == \"\" {\n\t\t\thost, _, err := net.SplitHostPort(address)\n\t\t\tif err != nil {\n\t\t\t\tnetConn.Close()\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\ttlsConfig.ServerName = host\n\t\t}\n\n\t\ttlsConn := tls.Client(netConn, tlsConfig)\n\t\tif err := tlsConn.Handshake(); err != nil {\n\t\t\tnetConn.Close()\n\t\t\treturn nil, err\n\t\t}\n\t\tnetConn = tlsConn\n\t}\n\n\tc := &conn{\n\t\tconn:         netConn,\n\t\tbw:           bufio.NewWriter(netConn),\n\t\tbr:           bufio.NewReader(netConn),\n\t\treadTimeout:  do.readTimeout,\n\t\twriteTimeout: do.writeTimeout,\n\t}\n\n\tif do.password != \"\" {\n\t\tif _, err := c.Do(\"AUTH\", do.password); err != nil {\n\t\t\tnetConn.Close()\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif do.db != 0 {\n\t\tif _, err := c.Do(\"SELECT\", do.db); err != nil {\n\t\t\tnetConn.Close()\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn c, nil\n}\n\nvar pathDBRegexp = regexp.MustCompile(`/(\\d*)\\z`)\n\n// DialURL connects to a Redis server at the given URL using the Redis\n// URI scheme. URLs should follow the draft IANA specification for the\n// scheme (https://www.iana.org/assignments/uri-schemes/prov/redis).\n//\n// Deprecated: This package is replaced by github.com/gomodule/redigo/redis.\nfunc DialURL(rawurl string, options ...DialOption) (Conn, error) {\n\tu, err := url.Parse(rawurl)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif u.Scheme != \"redis\" && u.Scheme != \"rediss\" {\n\t\treturn nil, fmt.Errorf(\"invalid redis URL scheme: %s\", u.Scheme)\n\t}\n\n\t// As per the IANA draft spec, the host defaults to localhost and\n\t// the port defaults to 6379.\n\thost, port, err := net.SplitHostPort(u.Host)\n\tif err != nil {\n\t\t// assume port is missing\n\t\thost = u.Host\n\t\tport = \"6379\"\n\t}\n\tif host == \"\" {\n\t\thost = \"localhost\"\n\t}\n\taddress := net.JoinHostPort(host, port)\n\n\tif u.User != nil {\n\t\tpassword, isSet := u.User.Password()\n\t\tif isSet {\n\t\t\toptions = append(options, DialPassword(password))\n\t\t}\n\t}\n\n\tmatch := pathDBRegexp.FindStringSubmatch(u.Path)\n\tif len(match) == 2 {\n\t\tdb := 0\n\t\tif len(match[1]) > 0 {\n\t\t\tdb, err = strconv.Atoi(match[1])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid database: %s\", u.Path[1:])\n\t\t\t}\n\t\t}\n\t\tif db != 0 {\n\t\t\toptions = append(options, DialDatabase(db))\n\t\t}\n\t} else if u.Path != \"\" {\n\t\treturn nil, fmt.Errorf(\"invalid database: %s\", u.Path[1:])\n\t}\n\n\toptions = append(options, DialUseTLS(u.Scheme == \"rediss\"))\n\n\treturn Dial(\"tcp\", address, options...)\n}\n\n// NewConn returns a new Redigo connection for the given net connection.\n//\n// Deprecated: This package is replaced by github.com/gomodule/redigo/redis.\nfunc NewConn(netConn net.Conn, readTimeout, writeTimeout time.Duration) Conn {\n\treturn &conn{\n\t\tconn:         netConn,\n\t\tbw:           bufio.NewWriter(netConn),\n\t\tbr:           bufio.NewReader(netConn),\n\t\treadTimeout:  readTimeout,\n\t\twriteTimeout: writeTimeout,\n\t}\n}\n\nfunc (c *conn) Close() error {\n\tc.mu.Lock()\n\terr := c.err\n\tif c.err == nil {\n\t\tc.err = errors.New(\"redigo: closed\")\n\t\terr = c.conn.Close()\n\t}\n\tc.mu.Unlock()\n\treturn err\n}\n\nfunc (c *conn) fatal(err error) error {\n\tc.mu.Lock()\n\tif c.err == nil {\n\t\tc.err = err\n\t\t// Close connection to force errors on subsequent calls and to unblock\n\t\t// other reader or writer.\n\t\tc.conn.Close()\n\t}\n\tc.mu.Unlock()\n\treturn err\n}\n\nfunc (c *conn) Err() error {\n\tc.mu.Lock()\n\terr := c.err\n\tc.mu.Unlock()\n\treturn err\n}\n\nfunc (c *conn) writeLen(prefix byte, n int) error {\n\tc.lenScratch[len(c.lenScratch)-1] = '\\n'\n\tc.lenScratch[len(c.lenScratch)-2] = '\\r'\n\ti := len(c.lenScratch) - 3\n\tfor {\n\t\tc.lenScratch[i] = byte('0' + n%10)\n\t\ti -= 1\n\t\tn = n / 10\n\t\tif n == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\tc.lenScratch[i] = prefix\n\t_, err := c.bw.Write(c.lenScratch[i:])\n\treturn err\n}\n\nfunc (c *conn) writeString(s string) error {\n\tc.writeLen('$', len(s))\n\tc.bw.WriteString(s)\n\t_, err := c.bw.WriteString(\"\\r\\n\")\n\treturn err\n}\n\nfunc (c *conn) writeBytes(p []byte) error {\n\tc.writeLen('$', len(p))\n\tc.bw.Write(p)\n\t_, err := c.bw.WriteString(\"\\r\\n\")\n\treturn err\n}\n\nfunc (c *conn) writeInt64(n int64) error {\n\treturn c.writeBytes(strconv.AppendInt(c.numScratch[:0], n, 10))\n}\n\nfunc (c *conn) writeFloat64(n float64) error {\n\treturn c.writeBytes(strconv.AppendFloat(c.numScratch[:0], n, 'g', -1, 64))\n}\n\nfunc (c *conn) writeCommand(cmd string, args []interface{}) error {\n\tc.writeLen('*', 1+len(args))\n\tif err := c.writeString(cmd); err != nil {\n\t\treturn err\n\t}\n\tfor _, arg := range args {\n\t\tif err := c.writeArg(arg, true); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (c *conn) writeArg(arg interface{}, argumentTypeOK bool) (err error) {\n\tswitch arg := arg.(type) {\n\tcase string:\n\t\treturn c.writeString(arg)\n\tcase []byte:\n\t\treturn c.writeBytes(arg)\n\tcase int:\n\t\treturn c.writeInt64(int64(arg))\n\tcase int64:\n\t\treturn c.writeInt64(arg)\n\tcase float64:\n\t\treturn c.writeFloat64(arg)\n\tcase bool:\n\t\tif arg {\n\t\t\treturn c.writeString(\"1\")\n\t\t} else {\n\t\t\treturn c.writeString(\"0\")\n\t\t}\n\tcase nil:\n\t\treturn c.writeString(\"\")\n\tcase Argument:\n\t\tif argumentTypeOK {\n\t\t\treturn c.writeArg(arg.RedisArg(), false)\n\t\t}\n\t\t// See comment in default clause below.\n\t\tvar buf bytes.Buffer\n\t\tfmt.Fprint(&buf, arg)\n\t\treturn c.writeBytes(buf.Bytes())\n\tdefault:\n\t\t// This default clause is intended to handle builtin numeric types.\n\t\t// The function should return an error for other types, but this is not\n\t\t// done for compatibility with previous versions of the package.\n\t\tvar buf bytes.Buffer\n\t\tfmt.Fprint(&buf, arg)\n\t\treturn c.writeBytes(buf.Bytes())\n\t}\n}\n\ntype protocolError string\n\nfunc (pe protocolError) Error() string {\n\treturn fmt.Sprintf(\"redigo: %s (possible server error or unsupported concurrent read by application)\", string(pe))\n}\n\nfunc (c *conn) readLine() ([]byte, error) {\n\tp, err := c.br.ReadSlice('\\n')\n\tif err == bufio.ErrBufferFull {\n\t\treturn nil, protocolError(\"long response line\")\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ti := len(p) - 2\n\tif i < 0 || p[i] != '\\r' {\n\t\treturn nil, protocolError(\"bad response line terminator\")\n\t}\n\treturn p[:i], nil\n}\n\n// parseLen parses bulk string and array lengths.\nfunc parseLen(p []byte) (int, error) {\n\tif len(p) == 0 {\n\t\treturn -1, protocolError(\"malformed length\")\n\t}\n\n\tif p[0] == '-' && len(p) == 2 && p[1] == '1' {\n\t\t// handle $-1 and $-1 null replies.\n\t\treturn -1, nil\n\t}\n\n\tvar n int\n\tfor _, b := range p {\n\t\tn *= 10\n\t\tif b < '0' || b > '9' {\n\t\t\treturn -1, protocolError(\"illegal bytes in length\")\n\t\t}\n\t\tn += int(b - '0')\n\t}\n\n\treturn n, nil\n}\n\n// parseInt parses an integer reply.\nfunc parseInt(p []byte) (interface{}, error) {\n\tif len(p) == 0 {\n\t\treturn 0, protocolError(\"malformed integer\")\n\t}\n\n\tvar negate bool\n\tif p[0] == '-' {\n\t\tnegate = true\n\t\tp = p[1:]\n\t\tif len(p) == 0 {\n\t\t\treturn 0, protocolError(\"malformed integer\")\n\t\t}\n\t}\n\n\tvar n int64\n\tfor _, b := range p {\n\t\tn *= 10\n\t\tif b < '0' || b > '9' {\n\t\t\treturn 0, protocolError(\"illegal bytes in length\")\n\t\t}\n\t\tn += int64(b - '0')\n\t}\n\n\tif negate {\n\t\tn = -n\n\t}\n\treturn n, nil\n}\n\nvar (\n\tokReply   interface{} = \"OK\"\n\tpongReply interface{} = \"PONG\"\n)\n\nfunc (c *conn) readReply() (interface{}, error) {\n\tline, err := c.readLine()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(line) == 0 {\n\t\treturn nil, protocolError(\"short response line\")\n\t}\n\tswitch line[0] {\n\tcase '+':\n\t\tswitch {\n\t\tcase len(line) == 3 && line[1] == 'O' && line[2] == 'K':\n\t\t\t// Avoid allocation for frequent \"+OK\" response.\n\t\t\treturn okReply, nil\n\t\tcase len(line) == 5 && line[1] == 'P' && line[2] == 'O' && line[3] == 'N' && line[4] == 'G':\n\t\t\t// Avoid allocation in PING command benchmarks :)\n\t\t\treturn pongReply, nil\n\t\tdefault:\n\t\t\treturn string(line[1:]), nil\n\t\t}\n\tcase '-':\n\t\treturn Error(string(line[1:])), nil\n\tcase ':':\n\t\treturn parseInt(line[1:])\n\tcase '$':\n\t\tn, err := parseLen(line[1:])\n\t\tif n < 0 || err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tp := make([]byte, n)\n\t\t_, err = io.ReadFull(c.br, p)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif line, err := c.readLine(); err != nil {\n\t\t\treturn nil, err\n\t\t} else if len(line) != 0 {\n\t\t\treturn nil, protocolError(\"bad bulk string format\")\n\t\t}\n\t\treturn p, nil\n\tcase '*':\n\t\tn, err := parseLen(line[1:])\n\t\tif n < 0 || err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tr := make([]interface{}, n)\n\t\tfor i := range r {\n\t\t\tr[i], err = c.readReply()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn r, nil\n\t}\n\treturn nil, protocolError(\"unexpected response line\")\n}\n\nfunc (c *conn) Send(cmd string, args ...interface{}) error {\n\tc.mu.Lock()\n\tc.pending += 1\n\tc.mu.Unlock()\n\tif c.writeTimeout != 0 {\n\t\tc.conn.SetWriteDeadline(time.Now().Add(c.writeTimeout))\n\t}\n\tif err := c.writeCommand(cmd, args); err != nil {\n\t\treturn c.fatal(err)\n\t}\n\treturn nil\n}\n\nfunc (c *conn) Flush() error {\n\tif c.writeTimeout != 0 {\n\t\tc.conn.SetWriteDeadline(time.Now().Add(c.writeTimeout))\n\t}\n\tif err := c.bw.Flush(); err != nil {\n\t\treturn c.fatal(err)\n\t}\n\treturn nil\n}\n\nfunc (c *conn) Receive() (interface{}, error) {\n\treturn c.ReceiveWithTimeout(c.readTimeout)\n}\n\nfunc (c *conn) ReceiveWithTimeout(timeout time.Duration) (reply interface{}, err error) {\n\tvar deadline time.Time\n\tif timeout != 0 {\n\t\tdeadline = time.Now().Add(timeout)\n\t}\n\tc.conn.SetReadDeadline(deadline)\n\n\tif reply, err = c.readReply(); err != nil {\n\t\treturn nil, c.fatal(err)\n\t}\n\t// When using pub/sub, the number of receives can be greater than the\n\t// number of sends. To enable normal use of the connection after\n\t// unsubscribing from all channels, we do not decrement pending to a\n\t// negative value.\n\t//\n\t// The pending field is decremented after the reply is read to handle the\n\t// case where Receive is called before Send.\n\tc.mu.Lock()\n\tif c.pending > 0 {\n\t\tc.pending -= 1\n\t}\n\tc.mu.Unlock()\n\tif err, ok := reply.(Error); ok {\n\t\treturn nil, err\n\t}\n\treturn\n}\n\nfunc (c *conn) Do(cmd string, args ...interface{}) (interface{}, error) {\n\treturn c.DoWithTimeout(c.readTimeout, cmd, args...)\n}\n\nfunc (c *conn) DoWithTimeout(readTimeout time.Duration, cmd string, args ...interface{}) (interface{}, error) {\n\tc.mu.Lock()\n\tpending := c.pending\n\tc.pending = 0\n\tc.mu.Unlock()\n\n\tif cmd == \"\" && pending == 0 {\n\t\treturn nil, nil\n\t}\n\n\tif c.writeTimeout != 0 {\n\t\tc.conn.SetWriteDeadline(time.Now().Add(c.writeTimeout))\n\t}\n\n\tif cmd != \"\" {\n\t\tif err := c.writeCommand(cmd, args); err != nil {\n\t\t\treturn nil, c.fatal(err)\n\t\t}\n\t}\n\n\tif err := c.bw.Flush(); err != nil {\n\t\treturn nil, c.fatal(err)\n\t}\n\n\tvar deadline time.Time\n\tif readTimeout != 0 {\n\t\tdeadline = time.Now().Add(readTimeout)\n\t}\n\tc.conn.SetReadDeadline(deadline)\n\n\tif cmd == \"\" {\n\t\treply := make([]interface{}, pending)\n\t\tfor i := range reply {\n\t\t\tr, e := c.readReply()\n\t\t\tif e != nil {\n\t\t\t\treturn nil, c.fatal(e)\n\t\t\t}\n\t\t\treply[i] = r\n\t\t}\n\t\treturn reply, nil\n\t}\n\n\tvar err error\n\tvar reply interface{}\n\tfor i := 0; i <= pending; i++ {\n\t\tvar e error\n\t\tif reply, e = c.readReply(); e != nil {\n\t\t\treturn nil, c.fatal(e)\n\t\t}\n\t\tif e, ok := reply.(Error); ok && err == nil {\n\t\t\terr = e\n\t\t}\n\t}\n\treturn reply, err\n}\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/redis/doc.go",
    "content": "// Copyright 2012 Gary Burd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"): you may\n// not use this file except in compliance with the License. You may obtain\n// a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations\n// under the License.\n\n// Package redis is a client for the Redis database.\n//\n// The Redigo FAQ (https://github.com/garyburd/redigo/wiki/FAQ) contains more\n// documentation about this package.\n//\n// # Connections\n//\n// The Conn interface is the primary interface for working with Redis.\n// Applications create connections by calling the Dial, DialWithTimeout or\n// NewConn functions. In the future, functions will be added for creating\n// sharded and other types of connections.\n//\n// The application must call the connection Close method when the application\n// is done with the connection.\n//\n// # Executing Commands\n//\n// The Conn interface has a generic method for executing Redis commands:\n//\n//\tDo(commandName string, args ...interface{}) (reply interface{}, err error)\n//\n// The Redis command reference (http://redis.io/commands) lists the available\n// commands. An example of using the Redis APPEND command is:\n//\n//\tn, err := conn.Do(\"APPEND\", \"key\", \"value\")\n//\n// The Do method converts command arguments to bulk strings for transmission\n// to the server as follows:\n//\n//\tGo Type                 Conversion\n//\t[]byte                  Sent as is\n//\tstring                  Sent as is\n//\tint, int64              strconv.FormatInt(v)\n//\tfloat64                 strconv.FormatFloat(v, 'g', -1, 64)\n//\tbool                    true -> \"1\", false -> \"0\"\n//\tnil                     \"\"\n//\tall other types         fmt.Fprint(w, v)\n//\n// Redis command reply types are represented using the following Go types:\n//\n//\tRedis type              Go type\n//\terror                   redis.Error\n//\tinteger                 int64\n//\tsimple string           string\n//\tbulk string             []byte or nil if value not present.\n//\tarray                   []interface{} or nil if value not present.\n//\n// Use type assertions or the reply helper functions to convert from\n// interface{} to the specific Go type for the command result.\n//\n// # Pipelining\n//\n// Connections support pipelining using the Send, Flush and Receive methods.\n//\n//\tSend(commandName string, args ...interface{}) error\n//\tFlush() error\n//\tReceive() (reply interface{}, err error)\n//\n// Send writes the command to the connection's output buffer. Flush flushes the\n// connection's output buffer to the server. Receive reads a single reply from\n// the server. The following example shows a simple pipeline.\n//\n//\tc.Send(\"SET\", \"foo\", \"bar\")\n//\tc.Send(\"GET\", \"foo\")\n//\tc.Flush()\n//\tc.Receive() // reply from SET\n//\tv, err = c.Receive() // reply from GET\n//\n// The Do method combines the functionality of the Send, Flush and Receive\n// methods. The Do method starts by writing the command and flushing the output\n// buffer. Next, the Do method receives all pending replies including the reply\n// for the command just sent by Do. If any of the received replies is an error,\n// then Do returns the error. If there are no errors, then Do returns the last\n// reply. If the command argument to the Do method is \"\", then the Do method\n// will flush the output buffer and receive pending replies without sending a\n// command.\n//\n// Use the Send and Do methods to implement pipelined transactions.\n//\n//\tc.Send(\"MULTI\")\n//\tc.Send(\"INCR\", \"foo\")\n//\tc.Send(\"INCR\", \"bar\")\n//\tr, err := c.Do(\"EXEC\")\n//\tfmt.Println(r) // prints [1, 1]\n//\n// # Concurrency\n//\n// Connections support one concurrent caller to the Receive method and one\n// concurrent caller to the Send and Flush methods. No other concurrency is\n// supported including concurrent calls to the Do method.\n//\n// For full concurrent access to Redis, use the thread-safe Pool to get, use\n// and release a connection from within a goroutine. Connections returned from\n// a Pool have the concurrency restrictions described in the previous\n// paragraph.\n//\n// # Publish and Subscribe\n//\n// Use the Send, Flush and Receive methods to implement Pub/Sub subscribers.\n//\n//\tc.Send(\"SUBSCRIBE\", \"example\")\n//\tc.Flush()\n//\tfor {\n//\t    reply, err := c.Receive()\n//\t    if err != nil {\n//\t        return err\n//\t    }\n//\t    // process pushed message\n//\t}\n//\n// The PubSubConn type wraps a Conn with convenience methods for implementing\n// subscribers. The Subscribe, PSubscribe, Unsubscribe and PUnsubscribe methods\n// send and flush a subscription management command. The receive method\n// converts a pushed message to convenient types for use in a type switch.\n//\n//\tpsc := redis.PubSubConn{Conn: c}\n//\tpsc.Subscribe(\"example\")\n//\tfor {\n//\t    switch v := psc.Receive().(type) {\n//\t    case redis.Message:\n//\t        fmt.Printf(\"%s: message: %s\\n\", v.Channel, v.Data)\n//\t    case redis.Subscription:\n//\t        fmt.Printf(\"%s: %s %d\\n\", v.Channel, v.Kind, v.Count)\n//\t    case error:\n//\t        return v\n//\t    }\n//\t}\n//\n// # Reply Helpers\n//\n// The Bool, Int, Bytes, String, Strings and Values functions convert a reply\n// to a value of a specific type. To allow convenient wrapping of calls to the\n// connection Do and Receive methods, the functions take a second argument of\n// type error.  If the error is non-nil, then the helper function returns the\n// error. If the error is nil, the function converts the reply to the specified\n// type:\n//\n//\texists, err := redis.Bool(c.Do(\"EXISTS\", \"foo\"))\n//\tif err != nil {\n//\t    // handle error return from c.Do or type conversion error.\n//\t}\n//\n// The Scan function converts elements of a array reply to Go types:\n//\n//\tvar value1 int\n//\tvar value2 string\n//\treply, err := redis.Values(c.Do(\"MGET\", \"key1\", \"key2\"))\n//\tif err != nil {\n//\t    // handle error\n//\t}\n//\t if _, err := redis.Scan(reply, &value1, &value2); err != nil {\n//\t    // handle error\n//\t}\n//\n// # Errors\n//\n// Connection methods return error replies from the server as type redis.Error.\n//\n// Call the connection Err() method to determine if the connection encountered\n// non-recoverable error such as a network error or protocol parsing error. If\n// Err() returns a non-nil value, then the connection is not usable and should\n// be closed.\npackage redis // import \"github.com/garyburd/redigo/redis\"\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/redis/go16.go",
    "content": "//go:build !go1.7\n// +build !go1.7\n\npackage redis\n\nimport \"crypto/tls\"\n\nfunc cloneTLSConfig(cfg *tls.Config) *tls.Config {\n\treturn &tls.Config{\n\t\tRand:                     cfg.Rand,\n\t\tTime:                     cfg.Time,\n\t\tCertificates:             cfg.Certificates,\n\t\tNameToCertificate:        cfg.NameToCertificate,\n\t\tGetCertificate:           cfg.GetCertificate,\n\t\tRootCAs:                  cfg.RootCAs,\n\t\tNextProtos:               cfg.NextProtos,\n\t\tServerName:               cfg.ServerName,\n\t\tClientAuth:               cfg.ClientAuth,\n\t\tClientCAs:                cfg.ClientCAs,\n\t\tInsecureSkipVerify:       cfg.InsecureSkipVerify,\n\t\tCipherSuites:             cfg.CipherSuites,\n\t\tPreferServerCipherSuites: cfg.PreferServerCipherSuites,\n\t\tClientSessionCache:       cfg.ClientSessionCache,\n\t\tMinVersion:               cfg.MinVersion,\n\t\tMaxVersion:               cfg.MaxVersion,\n\t\tCurvePreferences:         cfg.CurvePreferences,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/redis/go17.go",
    "content": "//go:build go1.7 && !go1.8\n// +build go1.7,!go1.8\n\npackage redis\n\nimport \"crypto/tls\"\n\nfunc cloneTLSConfig(cfg *tls.Config) *tls.Config {\n\treturn &tls.Config{\n\t\tRand:                        cfg.Rand,\n\t\tTime:                        cfg.Time,\n\t\tCertificates:                cfg.Certificates,\n\t\tNameToCertificate:           cfg.NameToCertificate,\n\t\tGetCertificate:              cfg.GetCertificate,\n\t\tRootCAs:                     cfg.RootCAs,\n\t\tNextProtos:                  cfg.NextProtos,\n\t\tServerName:                  cfg.ServerName,\n\t\tClientAuth:                  cfg.ClientAuth,\n\t\tClientCAs:                   cfg.ClientCAs,\n\t\tInsecureSkipVerify:          cfg.InsecureSkipVerify,\n\t\tCipherSuites:                cfg.CipherSuites,\n\t\tPreferServerCipherSuites:    cfg.PreferServerCipherSuites,\n\t\tClientSessionCache:          cfg.ClientSessionCache,\n\t\tMinVersion:                  cfg.MinVersion,\n\t\tMaxVersion:                  cfg.MaxVersion,\n\t\tCurvePreferences:            cfg.CurvePreferences,\n\t\tDynamicRecordSizingDisabled: cfg.DynamicRecordSizingDisabled,\n\t\tRenegotiation:               cfg.Renegotiation,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/redis/go18.go",
    "content": "//go:build go1.8\n// +build go1.8\n\npackage redis\n\nimport \"crypto/tls\"\n\nfunc cloneTLSConfig(cfg *tls.Config) *tls.Config {\n\treturn cfg.Clone()\n}\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/redis/log.go",
    "content": "// Copyright 2012 Gary Burd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"): you may\n// not use this file except in compliance with the License. You may obtain\n// a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations\n// under the License.\n\npackage redis\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"log\"\n\t\"time\"\n)\n\nvar (\n\t_ ConnWithTimeout = (*loggingConn)(nil)\n)\n\n// NewLoggingConn returns a logging wrapper around a connection.\nfunc NewLoggingConn(conn Conn, logger *log.Logger, prefix string) Conn {\n\tif prefix != \"\" {\n\t\tprefix = prefix + \".\"\n\t}\n\treturn &loggingConn{conn, logger, prefix}\n}\n\ntype loggingConn struct {\n\tConn\n\tlogger *log.Logger\n\tprefix string\n}\n\nfunc (c *loggingConn) Close() error {\n\terr := c.Conn.Close()\n\tvar buf bytes.Buffer\n\tfmt.Fprintf(&buf, \"%sClose() -> (%v)\", c.prefix, err)\n\tc.logger.Output(2, buf.String())\n\treturn err\n}\n\nfunc (c *loggingConn) printValue(buf *bytes.Buffer, v interface{}) {\n\tconst chop = 32\n\tswitch v := v.(type) {\n\tcase []byte:\n\t\tif len(v) > chop {\n\t\t\tfmt.Fprintf(buf, \"%q...\", v[:chop])\n\t\t} else {\n\t\t\tfmt.Fprintf(buf, \"%q\", v)\n\t\t}\n\tcase string:\n\t\tif len(v) > chop {\n\t\t\tfmt.Fprintf(buf, \"%q...\", v[:chop])\n\t\t} else {\n\t\t\tfmt.Fprintf(buf, \"%q\", v)\n\t\t}\n\tcase []interface{}:\n\t\tif len(v) == 0 {\n\t\t\tbuf.WriteString(\"[]\")\n\t\t} else {\n\t\t\tsep := \"[\"\n\t\t\tfin := \"]\"\n\t\t\tif len(v) > chop {\n\t\t\t\tv = v[:chop]\n\t\t\t\tfin = \"...]\"\n\t\t\t}\n\t\t\tfor _, vv := range v {\n\t\t\t\tbuf.WriteString(sep)\n\t\t\t\tc.printValue(buf, vv)\n\t\t\t\tsep = \", \"\n\t\t\t}\n\t\t\tbuf.WriteString(fin)\n\t\t}\n\tdefault:\n\t\tfmt.Fprint(buf, v)\n\t}\n}\n\nfunc (c *loggingConn) print(method, commandName string, args []interface{}, reply interface{}, err error) {\n\tvar buf bytes.Buffer\n\tfmt.Fprintf(&buf, \"%s%s(\", c.prefix, method)\n\tif method != \"Receive\" {\n\t\tbuf.WriteString(commandName)\n\t\tfor _, arg := range args {\n\t\t\tbuf.WriteString(\", \")\n\t\t\tc.printValue(&buf, arg)\n\t\t}\n\t}\n\tbuf.WriteString(\") -> (\")\n\tif method != \"Send\" {\n\t\tc.printValue(&buf, reply)\n\t\tbuf.WriteString(\", \")\n\t}\n\tfmt.Fprintf(&buf, \"%v)\", err)\n\tc.logger.Output(3, buf.String())\n}\n\nfunc (c *loggingConn) Do(commandName string, args ...interface{}) (interface{}, error) {\n\treply, err := c.Conn.Do(commandName, args...)\n\tc.print(\"Do\", commandName, args, reply, err)\n\treturn reply, err\n}\n\nfunc (c *loggingConn) DoWithTimeout(timeout time.Duration, commandName string, args ...interface{}) (interface{}, error) {\n\treply, err := DoWithTimeout(c.Conn, timeout, commandName, args...)\n\tc.print(\"DoWithTimeout\", commandName, args, reply, err)\n\treturn reply, err\n}\n\nfunc (c *loggingConn) Send(commandName string, args ...interface{}) error {\n\terr := c.Conn.Send(commandName, args...)\n\tc.print(\"Send\", commandName, args, nil, err)\n\treturn err\n}\n\nfunc (c *loggingConn) Receive() (interface{}, error) {\n\treply, err := c.Conn.Receive()\n\tc.print(\"Receive\", \"\", nil, reply, err)\n\treturn reply, err\n}\n\nfunc (c *loggingConn) ReceiveWithTimeout(timeout time.Duration) (interface{}, error) {\n\treply, err := ReceiveWithTimeout(c.Conn, timeout)\n\tc.print(\"ReceiveWithTimeout\", \"\", nil, reply, err)\n\treturn reply, err\n}\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/redis/pool.go",
    "content": "// Copyright 2012 Gary Burd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"): you may\n// not use this file except in compliance with the License. You may obtain\n// a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations\n// under the License.\n\npackage redis\n\nimport (\n\t\"bytes\"\n\t\"crypto/rand\"\n\t\"crypto/sha1\"\n\t\"errors\"\n\t\"io\"\n\t\"strconv\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"github.com/garyburd/redigo/internal\"\n)\n\nvar (\n\t_ ConnWithTimeout = (*activeConn)(nil)\n\t_ ConnWithTimeout = (*errorConn)(nil)\n)\n\nvar nowFunc = time.Now // for testing\n\n// ErrPoolExhausted is returned from a pool connection method (Do, Send,\n// Receive, Flush, Err) when the maximum number of database connections in the\n// pool has been reached.\nvar ErrPoolExhausted = errors.New(\"redigo: connection pool exhausted\")\n\nvar (\n\terrPoolClosed = errors.New(\"redigo: connection pool closed\")\n\terrConnClosed = errors.New(\"redigo: connection closed\")\n)\n\n// Pool maintains a pool of connections. The application calls the Get method\n// to get a connection from the pool and the connection's Close method to\n// return the connection's resources to the pool.\n//\n// The following example shows how to use a pool in a web application. The\n// application creates a pool at application startup and makes it available to\n// request handlers using a package level variable. The pool configuration used\n// here is an example, not a recommendation.\n//\n//\tfunc newPool(addr string) *redis.Pool {\n//\t  return &redis.Pool{\n//\t    MaxIdle: 3,\n//\t    IdleTimeout: 240 * time.Second,\n//\t    Dial: func () (redis.Conn, error) { return redis.Dial(\"tcp\", addr) },\n//\t  }\n//\t}\n//\n//\tvar (\n//\t  pool *redis.Pool\n//\t  redisServer = flag.String(\"redisServer\", \":6379\", \"\")\n//\t)\n//\n//\tfunc main() {\n//\t  flag.Parse()\n//\t  pool = newPool(*redisServer)\n//\t  ...\n//\t}\n//\n// A request handler gets a connection from the pool and closes the connection\n// when the handler is done:\n//\n//\tfunc serveHome(w http.ResponseWriter, r *http.Request) {\n//\t    conn := pool.Get()\n//\t    defer conn.Close()\n//\t    ...\n//\t}\n//\n// Use the Dial function to authenticate connections with the AUTH command or\n// select a database with the SELECT command:\n//\n//\tpool := &redis.Pool{\n//\t  // Other pool configuration not shown in this example.\n//\t  Dial: func () (redis.Conn, error) {\n//\t    c, err := redis.Dial(\"tcp\", server)\n//\t    if err != nil {\n//\t      return nil, err\n//\t    }\n//\t    if _, err := c.Do(\"AUTH\", password); err != nil {\n//\t      c.Close()\n//\t      return nil, err\n//\t    }\n//\t    if _, err := c.Do(\"SELECT\", db); err != nil {\n//\t      c.Close()\n//\t      return nil, err\n//\t    }\n//\t    return c, nil\n//\t  },\n//\t}\n//\n// Use the TestOnBorrow function to check the health of an idle connection\n// before the connection is returned to the application. This example PINGs\n// connections that have been idle more than a minute:\n//\n//\tpool := &redis.Pool{\n//\t  // Other pool configuration not shown in this example.\n//\t  TestOnBorrow: func(c redis.Conn, t time.Time) error {\n//\t    if time.Since(t) < time.Minute {\n//\t      return nil\n//\t    }\n//\t    _, err := c.Do(\"PING\")\n//\t    return err\n//\t  },\n//\t}\ntype Pool struct {\n\t// Dial is an application supplied function for creating and configuring a\n\t// connection.\n\t//\n\t// The connection returned from Dial must not be in a special state\n\t// (subscribed to pubsub channel, transaction started, ...).\n\tDial func() (Conn, error)\n\n\t// TestOnBorrow is an optional application supplied function for checking\n\t// the health of an idle connection before the connection is used again by\n\t// the application. Argument t is the time that the connection was returned\n\t// to the pool. If the function returns an error, then the connection is\n\t// closed.\n\tTestOnBorrow func(c Conn, t time.Time) error\n\n\t// Maximum number of idle connections in the pool.\n\tMaxIdle int\n\n\t// Maximum number of connections allocated by the pool at a given time.\n\t// When zero, there is no limit on the number of connections in the pool.\n\tMaxActive int\n\n\t// Close connections after remaining idle for this duration. If the value\n\t// is zero, then idle connections are not closed. Applications should set\n\t// the timeout to a value less than the server's timeout.\n\tIdleTimeout time.Duration\n\n\t// If Wait is true and the pool is at the MaxActive limit, then Get() waits\n\t// for a connection to be returned to the pool before returning.\n\tWait bool\n\n\t// Close connections older than this duration. If the value is zero, then\n\t// the pool does not close connections based on age.\n\tMaxConnLifetime time.Duration\n\n\tchInitialized uint32 // set to 1 when field ch is initialized\n\n\tmu     sync.Mutex    // mu protects the following fields\n\tclosed bool          // set to true when the pool is closed.\n\tactive int           // the number of open connections in the pool\n\tch     chan struct{} // limits open connections when p.Wait is true\n\tidle   idleList      // idle connections\n}\n\n// NewPool creates a new pool.\n//\n// Deprecated: Initialize the Pool directory as shown in the example.\nfunc NewPool(newFn func() (Conn, error), maxIdle int) *Pool {\n\treturn &Pool{Dial: newFn, MaxIdle: maxIdle}\n}\n\n// Get gets a connection. The application must close the returned connection.\n// This method always returns a valid connection so that applications can defer\n// error handling to the first use of the connection. If there is an error\n// getting an underlying connection, then the connection Err, Do, Send, Flush\n// and Receive methods return that error.\nfunc (p *Pool) Get() Conn {\n\tpc, err := p.get(nil)\n\tif err != nil {\n\t\treturn errorConn{err}\n\t}\n\treturn &activeConn{p: p, pc: pc}\n}\n\n// PoolStats contains pool statistics.\ntype PoolStats struct {\n\t// ActiveCount is the number of connections in the pool. The count includes\n\t// idle connections and connections in use.\n\tActiveCount int\n\t// IdleCount is the number of idle connections in the pool.\n\tIdleCount int\n}\n\n// Stats returns pool's statistics.\nfunc (p *Pool) Stats() PoolStats {\n\tp.mu.Lock()\n\tstats := PoolStats{\n\t\tActiveCount: p.active,\n\t\tIdleCount:   p.idle.count,\n\t}\n\tp.mu.Unlock()\n\n\treturn stats\n}\n\n// ActiveCount returns the number of connections in the pool. The count\n// includes idle connections and connections in use.\nfunc (p *Pool) ActiveCount() int {\n\tp.mu.Lock()\n\tactive := p.active\n\tp.mu.Unlock()\n\treturn active\n}\n\n// IdleCount returns the number of idle connections in the pool.\nfunc (p *Pool) IdleCount() int {\n\tp.mu.Lock()\n\tidle := p.idle.count\n\tp.mu.Unlock()\n\treturn idle\n}\n\n// Close releases the resources used by the pool.\nfunc (p *Pool) Close() error {\n\tp.mu.Lock()\n\tif p.closed {\n\t\tp.mu.Unlock()\n\t\treturn nil\n\t}\n\tp.closed = true\n\tp.active -= p.idle.count\n\tpc := p.idle.front\n\tp.idle.count = 0\n\tp.idle.front, p.idle.back = nil, nil\n\tif p.ch != nil {\n\t\tclose(p.ch)\n\t}\n\tp.mu.Unlock()\n\tfor ; pc != nil; pc = pc.next {\n\t\tpc.c.Close()\n\t}\n\treturn nil\n}\n\nfunc (p *Pool) lazyInit() {\n\t// Fast path.\n\tif atomic.LoadUint32(&p.chInitialized) == 1 {\n\t\treturn\n\t}\n\t// Slow path.\n\tp.mu.Lock()\n\tif p.chInitialized == 0 {\n\t\tp.ch = make(chan struct{}, p.MaxActive)\n\t\tif p.closed {\n\t\t\tclose(p.ch)\n\t\t} else {\n\t\t\tfor i := 0; i < p.MaxActive; i++ {\n\t\t\t\tp.ch <- struct{}{}\n\t\t\t}\n\t\t}\n\t\tatomic.StoreUint32(&p.chInitialized, 1)\n\t}\n\tp.mu.Unlock()\n}\n\n// get prunes stale connections and returns a connection from the idle list or\n// creates a new connection.\nfunc (p *Pool) get(ctx interface {\n\tDone() <-chan struct{}\n\tErr() error\n}) (*poolConn, error) {\n\n\t// Handle limit for p.Wait == true.\n\tif p.Wait && p.MaxActive > 0 {\n\t\tp.lazyInit()\n\t\tif ctx == nil {\n\t\t\t<-p.ch\n\t\t} else {\n\t\t\tselect {\n\t\t\tcase <-p.ch:\n\t\t\tcase <-ctx.Done():\n\t\t\t\treturn nil, ctx.Err()\n\t\t\t}\n\t\t}\n\t}\n\n\tp.mu.Lock()\n\n\t// Prune stale connections at the back of the idle list.\n\tif p.IdleTimeout > 0 {\n\t\tn := p.idle.count\n\t\tfor i := 0; i < n && p.idle.back != nil && p.idle.back.t.Add(p.IdleTimeout).Before(nowFunc()); i++ {\n\t\t\tpc := p.idle.back\n\t\t\tp.idle.popBack()\n\t\t\tp.mu.Unlock()\n\t\t\tpc.c.Close()\n\t\t\tp.mu.Lock()\n\t\t\tp.active--\n\t\t}\n\t}\n\n\t// Get idle connection from the front of idle list.\n\tfor p.idle.front != nil {\n\t\tpc := p.idle.front\n\t\tp.idle.popFront()\n\t\tp.mu.Unlock()\n\t\tif (p.TestOnBorrow == nil || p.TestOnBorrow(pc.c, pc.t) == nil) &&\n\t\t\t(p.MaxConnLifetime == 0 || nowFunc().Sub(pc.created) < p.MaxConnLifetime) {\n\t\t\treturn pc, nil\n\t\t}\n\t\tpc.c.Close()\n\t\tp.mu.Lock()\n\t\tp.active--\n\t}\n\n\t// Check for pool closed before dialing a new connection.\n\tif p.closed {\n\t\tp.mu.Unlock()\n\t\treturn nil, errors.New(\"redigo: get on closed pool\")\n\t}\n\n\t// Handle limit for p.Wait == false.\n\tif !p.Wait && p.MaxActive > 0 && p.active >= p.MaxActive {\n\t\tp.mu.Unlock()\n\t\treturn nil, ErrPoolExhausted\n\t}\n\n\tp.active++\n\tp.mu.Unlock()\n\tc, err := p.Dial()\n\tif err != nil {\n\t\tc = nil\n\t\tp.mu.Lock()\n\t\tp.active--\n\t\tif p.ch != nil && !p.closed {\n\t\t\tp.ch <- struct{}{}\n\t\t}\n\t\tp.mu.Unlock()\n\t}\n\treturn &poolConn{c: c, created: nowFunc()}, err\n}\n\nfunc (p *Pool) put(pc *poolConn, forceClose bool) error {\n\tp.mu.Lock()\n\tif !p.closed && !forceClose {\n\t\tpc.t = nowFunc()\n\t\tp.idle.pushFront(pc)\n\t\tif p.idle.count > p.MaxIdle {\n\t\t\tpc = p.idle.back\n\t\t\tp.idle.popBack()\n\t\t} else {\n\t\t\tpc = nil\n\t\t}\n\t}\n\n\tif pc != nil {\n\t\tp.mu.Unlock()\n\t\tpc.c.Close()\n\t\tp.mu.Lock()\n\t\tp.active--\n\t}\n\n\tif p.ch != nil && !p.closed {\n\t\tp.ch <- struct{}{}\n\t}\n\tp.mu.Unlock()\n\treturn nil\n}\n\ntype activeConn struct {\n\tp     *Pool\n\tpc    *poolConn\n\tstate int\n}\n\nvar (\n\tsentinel     []byte\n\tsentinelOnce sync.Once\n)\n\nfunc initSentinel() {\n\tp := make([]byte, 64)\n\tif _, err := rand.Read(p); err == nil {\n\t\tsentinel = p\n\t} else {\n\t\th := sha1.New()\n\t\tio.WriteString(h, \"Oops, rand failed. Use time instead.\")\n\t\tio.WriteString(h, strconv.FormatInt(time.Now().UnixNano(), 10))\n\t\tsentinel = h.Sum(nil)\n\t}\n}\n\nfunc (ac *activeConn) Close() error {\n\tpc := ac.pc\n\tif pc == nil {\n\t\treturn nil\n\t}\n\tac.pc = nil\n\n\tif ac.state&internal.MultiState != 0 {\n\t\tpc.c.Send(\"DISCARD\")\n\t\tac.state &^= (internal.MultiState | internal.WatchState)\n\t} else if ac.state&internal.WatchState != 0 {\n\t\tpc.c.Send(\"UNWATCH\")\n\t\tac.state &^= internal.WatchState\n\t}\n\tif ac.state&internal.SubscribeState != 0 {\n\t\tpc.c.Send(\"UNSUBSCRIBE\")\n\t\tpc.c.Send(\"PUNSUBSCRIBE\")\n\t\t// To detect the end of the message stream, ask the server to echo\n\t\t// a sentinel value and read until we see that value.\n\t\tsentinelOnce.Do(initSentinel)\n\t\tpc.c.Send(\"ECHO\", sentinel)\n\t\tpc.c.Flush()\n\t\tfor {\n\t\t\tp, err := pc.c.Receive()\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif p, ok := p.([]byte); ok && bytes.Equal(p, sentinel) {\n\t\t\t\tac.state &^= internal.SubscribeState\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tpc.c.Do(\"\")\n\tac.p.put(pc, ac.state != 0 || pc.c.Err() != nil)\n\treturn nil\n}\n\nfunc (ac *activeConn) Err() error {\n\tpc := ac.pc\n\tif pc == nil {\n\t\treturn errConnClosed\n\t}\n\treturn pc.c.Err()\n}\n\nfunc (ac *activeConn) Do(commandName string, args ...interface{}) (reply interface{}, err error) {\n\tpc := ac.pc\n\tif pc == nil {\n\t\treturn nil, errConnClosed\n\t}\n\tci := internal.LookupCommandInfo(commandName)\n\tac.state = (ac.state | ci.Set) &^ ci.Clear\n\treturn pc.c.Do(commandName, args...)\n}\n\nfunc (ac *activeConn) DoWithTimeout(timeout time.Duration, commandName string, args ...interface{}) (reply interface{}, err error) {\n\tpc := ac.pc\n\tif pc == nil {\n\t\treturn nil, errConnClosed\n\t}\n\tcwt, ok := pc.c.(ConnWithTimeout)\n\tif !ok {\n\t\treturn nil, errTimeoutNotSupported\n\t}\n\tci := internal.LookupCommandInfo(commandName)\n\tac.state = (ac.state | ci.Set) &^ ci.Clear\n\treturn cwt.DoWithTimeout(timeout, commandName, args...)\n}\n\nfunc (ac *activeConn) Send(commandName string, args ...interface{}) error {\n\tpc := ac.pc\n\tif pc == nil {\n\t\treturn errConnClosed\n\t}\n\tci := internal.LookupCommandInfo(commandName)\n\tac.state = (ac.state | ci.Set) &^ ci.Clear\n\treturn pc.c.Send(commandName, args...)\n}\n\nfunc (ac *activeConn) Flush() error {\n\tpc := ac.pc\n\tif pc == nil {\n\t\treturn errConnClosed\n\t}\n\treturn pc.c.Flush()\n}\n\nfunc (ac *activeConn) Receive() (reply interface{}, err error) {\n\tpc := ac.pc\n\tif pc == nil {\n\t\treturn nil, errConnClosed\n\t}\n\treturn pc.c.Receive()\n}\n\nfunc (ac *activeConn) ReceiveWithTimeout(timeout time.Duration) (reply interface{}, err error) {\n\tpc := ac.pc\n\tif pc == nil {\n\t\treturn nil, errConnClosed\n\t}\n\tcwt, ok := pc.c.(ConnWithTimeout)\n\tif !ok {\n\t\treturn nil, errTimeoutNotSupported\n\t}\n\treturn cwt.ReceiveWithTimeout(timeout)\n}\n\ntype errorConn struct{ err error }\n\nfunc (ec errorConn) Do(string, ...interface{}) (interface{}, error) { return nil, ec.err }\nfunc (ec errorConn) DoWithTimeout(time.Duration, string, ...interface{}) (interface{}, error) {\n\treturn nil, ec.err\n}\nfunc (ec errorConn) Send(string, ...interface{}) error                     { return ec.err }\nfunc (ec errorConn) Err() error                                            { return ec.err }\nfunc (ec errorConn) Close() error                                          { return nil }\nfunc (ec errorConn) Flush() error                                          { return ec.err }\nfunc (ec errorConn) Receive() (interface{}, error)                         { return nil, ec.err }\nfunc (ec errorConn) ReceiveWithTimeout(time.Duration) (interface{}, error) { return nil, ec.err }\n\ntype idleList struct {\n\tcount       int\n\tfront, back *poolConn\n}\n\ntype poolConn struct {\n\tc          Conn\n\tt          time.Time\n\tcreated    time.Time\n\tnext, prev *poolConn\n}\n\nfunc (l *idleList) pushFront(pc *poolConn) {\n\tpc.next = l.front\n\tpc.prev = nil\n\tif l.count == 0 {\n\t\tl.back = pc\n\t} else {\n\t\tl.front.prev = pc\n\t}\n\tl.front = pc\n\tl.count++\n\treturn\n}\n\nfunc (l *idleList) popFront() {\n\tpc := l.front\n\tl.count--\n\tif l.count == 0 {\n\t\tl.front, l.back = nil, nil\n\t} else {\n\t\tpc.next.prev = nil\n\t\tl.front = pc.next\n\t}\n\tpc.next, pc.prev = nil, nil\n}\n\nfunc (l *idleList) popBack() {\n\tpc := l.back\n\tl.count--\n\tif l.count == 0 {\n\t\tl.front, l.back = nil, nil\n\t} else {\n\t\tpc.prev.next = nil\n\t\tl.back = pc.prev\n\t}\n\tpc.next, pc.prev = nil, nil\n}\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/redis/pool17.go",
    "content": "// Copyright 2018 Gary Burd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"): you may\n// not use this file except in compliance with the License. You may obtain\n// a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations\n// under the License.\n\n//go:build go1.7\n// +build go1.7\n\npackage redis\n\nimport \"context\"\n\n// GetContext gets a connection using the provided context.\n//\n// The provided Context must be non-nil. If the context expires before the\n// connection is complete, an error is returned. Any expiration on the context\n// will not affect the returned connection.\n//\n// If the function completes without error, then the application must close the\n// returned connection.\nfunc (p *Pool) GetContext(ctx context.Context) (Conn, error) {\n\tpc, err := p.get(ctx)\n\tif err != nil {\n\t\treturn errorConn{err}, err\n\t}\n\treturn &activeConn{p: p, pc: pc}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/redis/pubsub.go",
    "content": "// Copyright 2012 Gary Burd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"): you may\n// not use this file except in compliance with the License. You may obtain\n// a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations\n// under the License.\n\npackage redis\n\nimport (\n\t\"errors\"\n\t\"time\"\n)\n\n// Subscription represents a subscribe or unsubscribe notification.\ntype Subscription struct {\n\t// Kind is \"subscribe\", \"unsubscribe\", \"psubscribe\" or \"punsubscribe\"\n\tKind string\n\n\t// The channel that was changed.\n\tChannel string\n\n\t// The current number of subscriptions for connection.\n\tCount int\n}\n\n// Message represents a message notification.\ntype Message struct {\n\t// The originating channel.\n\tChannel string\n\n\t// The message data.\n\tData []byte\n}\n\n// PMessage represents a pmessage notification.\ntype PMessage struct {\n\t// The matched pattern.\n\tPattern string\n\n\t// The originating channel.\n\tChannel string\n\n\t// The message data.\n\tData []byte\n}\n\n// Pong represents a pubsub pong notification.\ntype Pong struct {\n\tData string\n}\n\n// PubSubConn wraps a Conn with convenience methods for subscribers.\ntype PubSubConn struct {\n\tConn Conn\n}\n\n// Close closes the connection.\nfunc (c PubSubConn) Close() error {\n\treturn c.Conn.Close()\n}\n\n// Subscribe subscribes the connection to the specified channels.\nfunc (c PubSubConn) Subscribe(channel ...interface{}) error {\n\tc.Conn.Send(\"SUBSCRIBE\", channel...)\n\treturn c.Conn.Flush()\n}\n\n// PSubscribe subscribes the connection to the given patterns.\nfunc (c PubSubConn) PSubscribe(channel ...interface{}) error {\n\tc.Conn.Send(\"PSUBSCRIBE\", channel...)\n\treturn c.Conn.Flush()\n}\n\n// Unsubscribe unsubscribes the connection from the given channels, or from all\n// of them if none is given.\nfunc (c PubSubConn) Unsubscribe(channel ...interface{}) error {\n\tc.Conn.Send(\"UNSUBSCRIBE\", channel...)\n\treturn c.Conn.Flush()\n}\n\n// PUnsubscribe unsubscribes the connection from the given patterns, or from all\n// of them if none is given.\nfunc (c PubSubConn) PUnsubscribe(channel ...interface{}) error {\n\tc.Conn.Send(\"PUNSUBSCRIBE\", channel...)\n\treturn c.Conn.Flush()\n}\n\n// Ping sends a PING to the server with the specified data.\n//\n// The connection must be subscribed to at least one channel or pattern when\n// calling this method.\nfunc (c PubSubConn) Ping(data string) error {\n\tc.Conn.Send(\"PING\", data)\n\treturn c.Conn.Flush()\n}\n\n// Receive returns a pushed message as a Subscription, Message, PMessage, Pong\n// or error. The return value is intended to be used directly in a type switch\n// as illustrated in the PubSubConn example.\nfunc (c PubSubConn) Receive() interface{} {\n\treturn c.receiveInternal(c.Conn.Receive())\n}\n\n// ReceiveWithTimeout is like Receive, but it allows the application to\n// override the connection's default timeout.\nfunc (c PubSubConn) ReceiveWithTimeout(timeout time.Duration) interface{} {\n\treturn c.receiveInternal(ReceiveWithTimeout(c.Conn, timeout))\n}\n\nfunc (c PubSubConn) receiveInternal(replyArg interface{}, errArg error) interface{} {\n\treply, err := Values(replyArg, errArg)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar kind string\n\treply, err = Scan(reply, &kind)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tswitch kind {\n\tcase \"message\":\n\t\tvar m Message\n\t\tif _, err := Scan(reply, &m.Channel, &m.Data); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn m\n\tcase \"pmessage\":\n\t\tvar pm PMessage\n\t\tif _, err := Scan(reply, &pm.Pattern, &pm.Channel, &pm.Data); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn pm\n\tcase \"subscribe\", \"psubscribe\", \"unsubscribe\", \"punsubscribe\":\n\t\ts := Subscription{Kind: kind}\n\t\tif _, err := Scan(reply, &s.Channel, &s.Count); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn s\n\tcase \"pong\":\n\t\tvar p Pong\n\t\tif _, err := Scan(reply, &p.Data); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn p\n\t}\n\treturn errors.New(\"redigo: unknown pubsub notification\")\n}\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/redis/redis.go",
    "content": "// Copyright 2012 Gary Burd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"): you may\n// not use this file except in compliance with the License. You may obtain\n// a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations\n// under the License.\n\npackage redis\n\nimport (\n\t\"errors\"\n\t\"time\"\n)\n\n// Error represents an error returned in a command reply.\ntype Error string\n\nfunc (err Error) Error() string { return string(err) }\n\n// Conn represents a connection to a Redis server.\n//\n// Deprecated: This package is replaced by github.com/gomodule/redigo/redis.\ntype Conn interface {\n\t// Close closes the connection.\n\tClose() error\n\n\t// Err returns a non-nil value when the connection is not usable.\n\tErr() error\n\n\t// Do sends a command to the server and returns the received reply.\n\tDo(commandName string, args ...interface{}) (reply interface{}, err error)\n\n\t// Send writes the command to the client's output buffer.\n\tSend(commandName string, args ...interface{}) error\n\n\t// Flush flushes the output buffer to the Redis server.\n\tFlush() error\n\n\t// Receive receives a single reply from the Redis server\n\tReceive() (reply interface{}, err error)\n}\n\n// Argument is the interface implemented by an object which wants to control how\n// the object is converted to Redis bulk strings.\ntype Argument interface {\n\t// RedisArg returns a value to be encoded as a bulk string per the\n\t// conversions listed in the section 'Executing Commands'.\n\t// Implementations should typically return a []byte or string.\n\tRedisArg() interface{}\n}\n\n// Scanner is implemented by an object which wants to control its value is\n// interpreted when read from Redis.\ntype Scanner interface {\n\t// RedisScan assigns a value from a Redis value. The argument src is one of\n\t// the reply types listed in the section `Executing Commands`.\n\t//\n\t// An error should be returned if the value cannot be stored without\n\t// loss of information.\n\tRedisScan(src interface{}) error\n}\n\n// ConnWithTimeout is an optional interface that allows the caller to override\n// a connection's default read timeout. This interface is useful for executing\n// the BLPOP, BRPOP, BRPOPLPUSH, XREAD and other commands that block at the\n// server.\n//\n// A connection's default read timeout is set with the DialReadTimeout dial\n// option. Applications should rely on the default timeout for commands that do\n// not block at the server.\n//\n// All of the Conn implementations in this package satisfy the ConnWithTimeout\n// interface.\n//\n// Use the DoWithTimeout and ReceiveWithTimeout helper functions to simplify\n// use of this interface.\ntype ConnWithTimeout interface {\n\tConn\n\n\t// Do sends a command to the server and returns the received reply.\n\t// The timeout overrides the read timeout set when dialing the\n\t// connection.\n\tDoWithTimeout(timeout time.Duration, commandName string, args ...interface{}) (reply interface{}, err error)\n\n\t// Receive receives a single reply from the Redis server. The timeout\n\t// overrides the read timeout set when dialing the connection.\n\tReceiveWithTimeout(timeout time.Duration) (reply interface{}, err error)\n}\n\nvar errTimeoutNotSupported = errors.New(\"redis: connection does not support ConnWithTimeout\")\n\n// DoWithTimeout executes a Redis command with the specified read timeout. If\n// the connection does not satisfy the ConnWithTimeout interface, then an error\n// is returned.\nfunc DoWithTimeout(c Conn, timeout time.Duration, cmd string, args ...interface{}) (interface{}, error) {\n\tcwt, ok := c.(ConnWithTimeout)\n\tif !ok {\n\t\treturn nil, errTimeoutNotSupported\n\t}\n\treturn cwt.DoWithTimeout(timeout, cmd, args...)\n}\n\n// ReceiveWithTimeout receives a reply with the specified read timeout. If the\n// connection does not satisfy the ConnWithTimeout interface, then an error is\n// returned.\nfunc ReceiveWithTimeout(c Conn, timeout time.Duration) (interface{}, error) {\n\tcwt, ok := c.(ConnWithTimeout)\n\tif !ok {\n\t\treturn nil, errTimeoutNotSupported\n\t}\n\treturn cwt.ReceiveWithTimeout(timeout)\n}\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/redis/reply.go",
    "content": "// Copyright 2012 Gary Burd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"): you may\n// not use this file except in compliance with the License. You may obtain\n// a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations\n// under the License.\n\npackage redis\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// ErrNil indicates that a reply value is nil.\nvar ErrNil = errors.New(\"redigo: nil returned\")\n\n// Int is a helper that converts a command reply to an integer. If err is not\n// equal to nil, then Int returns 0, err. Otherwise, Int converts the\n// reply to an int as follows:\n//\n//\tReply type    Result\n//\tinteger       int(reply), nil\n//\tbulk string   parsed reply, nil\n//\tnil           0, ErrNil\n//\tother         0, error\nfunc Int(reply interface{}, err error) (int, error) {\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tswitch reply := reply.(type) {\n\tcase int64:\n\t\tx := int(reply)\n\t\tif int64(x) != reply {\n\t\t\treturn 0, strconv.ErrRange\n\t\t}\n\t\treturn x, nil\n\tcase []byte:\n\t\tn, err := strconv.ParseInt(string(reply), 10, 0)\n\t\treturn int(n), err\n\tcase nil:\n\t\treturn 0, ErrNil\n\tcase Error:\n\t\treturn 0, reply\n\t}\n\treturn 0, fmt.Errorf(\"redigo: unexpected type for Int, got type %T\", reply)\n}\n\n// Int64 is a helper that converts a command reply to 64 bit integer. If err is\n// not equal to nil, then Int returns 0, err. Otherwise, Int64 converts the\n// reply to an int64 as follows:\n//\n//\tReply type    Result\n//\tinteger       reply, nil\n//\tbulk string   parsed reply, nil\n//\tnil           0, ErrNil\n//\tother         0, error\nfunc Int64(reply interface{}, err error) (int64, error) {\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tswitch reply := reply.(type) {\n\tcase int64:\n\t\treturn reply, nil\n\tcase []byte:\n\t\tn, err := strconv.ParseInt(string(reply), 10, 64)\n\t\treturn n, err\n\tcase nil:\n\t\treturn 0, ErrNil\n\tcase Error:\n\t\treturn 0, reply\n\t}\n\treturn 0, fmt.Errorf(\"redigo: unexpected type for Int64, got type %T\", reply)\n}\n\nvar errNegativeInt = errors.New(\"redigo: unexpected value for Uint64\")\n\n// Uint64 is a helper that converts a command reply to 64 bit integer. If err is\n// not equal to nil, then Int returns 0, err. Otherwise, Int64 converts the\n// reply to an int64 as follows:\n//\n//\tReply type    Result\n//\tinteger       reply, nil\n//\tbulk string   parsed reply, nil\n//\tnil           0, ErrNil\n//\tother         0, error\nfunc Uint64(reply interface{}, err error) (uint64, error) {\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tswitch reply := reply.(type) {\n\tcase int64:\n\t\tif reply < 0 {\n\t\t\treturn 0, errNegativeInt\n\t\t}\n\t\treturn uint64(reply), nil\n\tcase []byte:\n\t\tn, err := strconv.ParseUint(string(reply), 10, 64)\n\t\treturn n, err\n\tcase nil:\n\t\treturn 0, ErrNil\n\tcase Error:\n\t\treturn 0, reply\n\t}\n\treturn 0, fmt.Errorf(\"redigo: unexpected type for Uint64, got type %T\", reply)\n}\n\n// Float64 is a helper that converts a command reply to 64 bit float. If err is\n// not equal to nil, then Float64 returns 0, err. Otherwise, Float64 converts\n// the reply to an int as follows:\n//\n//\tReply type    Result\n//\tbulk string   parsed reply, nil\n//\tnil           0, ErrNil\n//\tother         0, error\nfunc Float64(reply interface{}, err error) (float64, error) {\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tswitch reply := reply.(type) {\n\tcase []byte:\n\t\tn, err := strconv.ParseFloat(string(reply), 64)\n\t\treturn n, err\n\tcase nil:\n\t\treturn 0, ErrNil\n\tcase Error:\n\t\treturn 0, reply\n\t}\n\treturn 0, fmt.Errorf(\"redigo: unexpected type for Float64, got type %T\", reply)\n}\n\n// String is a helper that converts a command reply to a string. If err is not\n// equal to nil, then String returns \"\", err. Otherwise String converts the\n// reply to a string as follows:\n//\n//\tReply type      Result\n//\tbulk string     string(reply), nil\n//\tsimple string   reply, nil\n//\tnil             \"\",  ErrNil\n//\tother           \"\",  error\nfunc String(reply interface{}, err error) (string, error) {\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tswitch reply := reply.(type) {\n\tcase []byte:\n\t\treturn string(reply), nil\n\tcase string:\n\t\treturn reply, nil\n\tcase nil:\n\t\treturn \"\", ErrNil\n\tcase Error:\n\t\treturn \"\", reply\n\t}\n\treturn \"\", fmt.Errorf(\"redigo: unexpected type for String, got type %T\", reply)\n}\n\n// Bytes is a helper that converts a command reply to a slice of bytes. If err\n// is not equal to nil, then Bytes returns nil, err. Otherwise Bytes converts\n// the reply to a slice of bytes as follows:\n//\n//\tReply type      Result\n//\tbulk string     reply, nil\n//\tsimple string   []byte(reply), nil\n//\tnil             nil, ErrNil\n//\tother           nil, error\nfunc Bytes(reply interface{}, err error) ([]byte, error) {\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch reply := reply.(type) {\n\tcase []byte:\n\t\treturn reply, nil\n\tcase string:\n\t\treturn []byte(reply), nil\n\tcase nil:\n\t\treturn nil, ErrNil\n\tcase Error:\n\t\treturn nil, reply\n\t}\n\treturn nil, fmt.Errorf(\"redigo: unexpected type for Bytes, got type %T\", reply)\n}\n\n// Bool is a helper that converts a command reply to a boolean. If err is not\n// equal to nil, then Bool returns false, err. Otherwise Bool converts the\n// reply to boolean as follows:\n//\n//\tReply type      Result\n//\tinteger         value != 0, nil\n//\tbulk string     strconv.ParseBool(reply)\n//\tnil             false, ErrNil\n//\tother           false, error\nfunc Bool(reply interface{}, err error) (bool, error) {\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tswitch reply := reply.(type) {\n\tcase int64:\n\t\treturn reply != 0, nil\n\tcase []byte:\n\t\treturn strconv.ParseBool(string(reply))\n\tcase nil:\n\t\treturn false, ErrNil\n\tcase Error:\n\t\treturn false, reply\n\t}\n\treturn false, fmt.Errorf(\"redigo: unexpected type for Bool, got type %T\", reply)\n}\n\n// MultiBulk is a helper that converts an array command reply to a []interface{}.\n//\n// Deprecated: Use Values instead.\nfunc MultiBulk(reply interface{}, err error) ([]interface{}, error) { return Values(reply, err) }\n\n// Values is a helper that converts an array command reply to a []interface{}.\n// If err is not equal to nil, then Values returns nil, err. Otherwise, Values\n// converts the reply as follows:\n//\n//\tReply type      Result\n//\tarray           reply, nil\n//\tnil             nil, ErrNil\n//\tother           nil, error\nfunc Values(reply interface{}, err error) ([]interface{}, error) {\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch reply := reply.(type) {\n\tcase []interface{}:\n\t\treturn reply, nil\n\tcase nil:\n\t\treturn nil, ErrNil\n\tcase Error:\n\t\treturn nil, reply\n\t}\n\treturn nil, fmt.Errorf(\"redigo: unexpected type for Values, got type %T\", reply)\n}\n\nfunc sliceHelper(reply interface{}, err error, name string, makeSlice func(int), assign func(int, interface{}) error) error {\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch reply := reply.(type) {\n\tcase []interface{}:\n\t\tmakeSlice(len(reply))\n\t\tfor i := range reply {\n\t\t\tif reply[i] == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := assign(i, reply[i]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\treturn nil\n\tcase nil:\n\t\treturn ErrNil\n\tcase Error:\n\t\treturn reply\n\t}\n\treturn fmt.Errorf(\"redigo: unexpected type for %s, got type %T\", name, reply)\n}\n\n// Float64s is a helper that converts an array command reply to a []float64. If\n// err is not equal to nil, then Float64s returns nil, err. Nil array items are\n// converted to 0 in the output slice. Floats64 returns an error if an array\n// item is not a bulk string or nil.\nfunc Float64s(reply interface{}, err error) ([]float64, error) {\n\tvar result []float64\n\terr = sliceHelper(reply, err, \"Float64s\", func(n int) { result = make([]float64, n) }, func(i int, v interface{}) error {\n\t\tp, ok := v.([]byte)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"redigo: unexpected element type for Floats64, got type %T\", v)\n\t\t}\n\t\tf, err := strconv.ParseFloat(string(p), 64)\n\t\tresult[i] = f\n\t\treturn err\n\t})\n\treturn result, err\n}\n\n// Strings is a helper that converts an array command reply to a []string. If\n// err is not equal to nil, then Strings returns nil, err. Nil array items are\n// converted to \"\" in the output slice. Strings returns an error if an array\n// item is not a bulk string or nil.\nfunc Strings(reply interface{}, err error) ([]string, error) {\n\tvar result []string\n\terr = sliceHelper(reply, err, \"Strings\", func(n int) { result = make([]string, n) }, func(i int, v interface{}) error {\n\t\tswitch v := v.(type) {\n\t\tcase string:\n\t\t\tresult[i] = v\n\t\t\treturn nil\n\t\tcase []byte:\n\t\t\tresult[i] = string(v)\n\t\t\treturn nil\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"redigo: unexpected element type for Strings, got type %T\", v)\n\t\t}\n\t})\n\treturn result, err\n}\n\n// ByteSlices is a helper that converts an array command reply to a [][]byte.\n// If err is not equal to nil, then ByteSlices returns nil, err. Nil array\n// items are stay nil. ByteSlices returns an error if an array item is not a\n// bulk string or nil.\nfunc ByteSlices(reply interface{}, err error) ([][]byte, error) {\n\tvar result [][]byte\n\terr = sliceHelper(reply, err, \"ByteSlices\", func(n int) { result = make([][]byte, n) }, func(i int, v interface{}) error {\n\t\tp, ok := v.([]byte)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"redigo: unexpected element type for ByteSlices, got type %T\", v)\n\t\t}\n\t\tresult[i] = p\n\t\treturn nil\n\t})\n\treturn result, err\n}\n\n// Int64s is a helper that converts an array command reply to a []int64.\n// If err is not equal to nil, then Int64s returns nil, err. Nil array\n// items are stay nil. Int64s returns an error if an array item is not a\n// bulk string or nil.\nfunc Int64s(reply interface{}, err error) ([]int64, error) {\n\tvar result []int64\n\terr = sliceHelper(reply, err, \"Int64s\", func(n int) { result = make([]int64, n) }, func(i int, v interface{}) error {\n\t\tswitch v := v.(type) {\n\t\tcase int64:\n\t\t\tresult[i] = v\n\t\t\treturn nil\n\t\tcase []byte:\n\t\t\tn, err := strconv.ParseInt(string(v), 10, 64)\n\t\t\tresult[i] = n\n\t\t\treturn err\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"redigo: unexpected element type for Int64s, got type %T\", v)\n\t\t}\n\t})\n\treturn result, err\n}\n\n// Ints is a helper that converts an array command reply to a []in.\n// If err is not equal to nil, then Ints returns nil, err. Nil array\n// items are stay nil. Ints returns an error if an array item is not a\n// bulk string or nil.\nfunc Ints(reply interface{}, err error) ([]int, error) {\n\tvar result []int\n\terr = sliceHelper(reply, err, \"Ints\", func(n int) { result = make([]int, n) }, func(i int, v interface{}) error {\n\t\tswitch v := v.(type) {\n\t\tcase int64:\n\t\t\tn := int(v)\n\t\t\tif int64(n) != v {\n\t\t\t\treturn strconv.ErrRange\n\t\t\t}\n\t\t\tresult[i] = n\n\t\t\treturn nil\n\t\tcase []byte:\n\t\t\tn, err := strconv.Atoi(string(v))\n\t\t\tresult[i] = n\n\t\t\treturn err\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"redigo: unexpected element type for Ints, got type %T\", v)\n\t\t}\n\t})\n\treturn result, err\n}\n\n// StringMap is a helper that converts an array of strings (alternating key, value)\n// into a map[string]string. The HGETALL and CONFIG GET commands return replies in this format.\n// Requires an even number of values in result.\nfunc StringMap(result interface{}, err error) (map[string]string, error) {\n\tvalues, err := Values(result, err)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(values)%2 != 0 {\n\t\treturn nil, errors.New(\"redigo: StringMap expects even number of values result\")\n\t}\n\tm := make(map[string]string, len(values)/2)\n\tfor i := 0; i < len(values); i += 2 {\n\t\tkey, okKey := values[i].([]byte)\n\t\tvalue, okValue := values[i+1].([]byte)\n\t\tif !okKey || !okValue {\n\t\t\treturn nil, errors.New(\"redigo: StringMap key not a bulk string value\")\n\t\t}\n\t\tm[string(key)] = string(value)\n\t}\n\treturn m, nil\n}\n\n// IntMap is a helper that converts an array of strings (alternating key, value)\n// into a map[string]int. The HGETALL commands return replies in this format.\n// Requires an even number of values in result.\nfunc IntMap(result interface{}, err error) (map[string]int, error) {\n\tvalues, err := Values(result, err)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(values)%2 != 0 {\n\t\treturn nil, errors.New(\"redigo: IntMap expects even number of values result\")\n\t}\n\tm := make(map[string]int, len(values)/2)\n\tfor i := 0; i < len(values); i += 2 {\n\t\tkey, ok := values[i].([]byte)\n\t\tif !ok {\n\t\t\treturn nil, errors.New(\"redigo: IntMap key not a bulk string value\")\n\t\t}\n\t\tvalue, err := Int(values[i+1], nil)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tm[string(key)] = value\n\t}\n\treturn m, nil\n}\n\n// Int64Map is a helper that converts an array of strings (alternating key, value)\n// into a map[string]int64. The HGETALL commands return replies in this format.\n// Requires an even number of values in result.\nfunc Int64Map(result interface{}, err error) (map[string]int64, error) {\n\tvalues, err := Values(result, err)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(values)%2 != 0 {\n\t\treturn nil, errors.New(\"redigo: Int64Map expects even number of values result\")\n\t}\n\tm := make(map[string]int64, len(values)/2)\n\tfor i := 0; i < len(values); i += 2 {\n\t\tkey, ok := values[i].([]byte)\n\t\tif !ok {\n\t\t\treturn nil, errors.New(\"redigo: Int64Map key not a bulk string value\")\n\t\t}\n\t\tvalue, err := Int64(values[i+1], nil)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tm[string(key)] = value\n\t}\n\treturn m, nil\n}\n\n// Positions is a helper that converts an array of positions (lat, long)\n// into a [][2]float64. The GEOPOS command returns replies in this format.\nfunc Positions(result interface{}, err error) ([]*[2]float64, error) {\n\tvalues, err := Values(result, err)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tpositions := make([]*[2]float64, len(values))\n\tfor i := range values {\n\t\tif values[i] == nil {\n\t\t\tcontinue\n\t\t}\n\t\tp, ok := values[i].([]interface{})\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"redigo: unexpected element type for interface slice, got type %T\", values[i])\n\t\t}\n\t\tif len(p) != 2 {\n\t\t\treturn nil, fmt.Errorf(\"redigo: unexpected number of values for a member position, got %d\", len(p))\n\t\t}\n\t\tlat, err := Float64(p[0], nil)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tlong, err := Float64(p[1], nil)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tpositions[i] = &[2]float64{lat, long}\n\t}\n\treturn positions, nil\n}\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/redis/scan.go",
    "content": "// Copyright 2012 Gary Burd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"): you may\n// not use this file except in compliance with the License. You may obtain\n// a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations\n// under the License.\n\npackage redis\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n)\n\nfunc ensureLen(d reflect.Value, n int) {\n\tif n > d.Cap() {\n\t\td.Set(reflect.MakeSlice(d.Type(), n, n))\n\t} else {\n\t\td.SetLen(n)\n\t}\n}\n\nfunc cannotConvert(d reflect.Value, s interface{}) error {\n\tvar sname string\n\tswitch s.(type) {\n\tcase string:\n\t\tsname = \"Redis simple string\"\n\tcase Error:\n\t\tsname = \"Redis error\"\n\tcase int64:\n\t\tsname = \"Redis integer\"\n\tcase []byte:\n\t\tsname = \"Redis bulk string\"\n\tcase []interface{}:\n\t\tsname = \"Redis array\"\n\tdefault:\n\t\tsname = reflect.TypeOf(s).String()\n\t}\n\treturn fmt.Errorf(\"cannot convert from %s to %s\", sname, d.Type())\n}\n\nfunc convertAssignBulkString(d reflect.Value, s []byte) (err error) {\n\tswitch d.Type().Kind() {\n\tcase reflect.Float32, reflect.Float64:\n\t\tvar x float64\n\t\tx, err = strconv.ParseFloat(string(s), d.Type().Bits())\n\t\td.SetFloat(x)\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tvar x int64\n\t\tx, err = strconv.ParseInt(string(s), 10, d.Type().Bits())\n\t\td.SetInt(x)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tvar x uint64\n\t\tx, err = strconv.ParseUint(string(s), 10, d.Type().Bits())\n\t\td.SetUint(x)\n\tcase reflect.Bool:\n\t\tvar x bool\n\t\tx, err = strconv.ParseBool(string(s))\n\t\td.SetBool(x)\n\tcase reflect.String:\n\t\td.SetString(string(s))\n\tcase reflect.Slice:\n\t\tif d.Type().Elem().Kind() != reflect.Uint8 {\n\t\t\terr = cannotConvert(d, s)\n\t\t} else {\n\t\t\td.SetBytes(s)\n\t\t}\n\tdefault:\n\t\terr = cannotConvert(d, s)\n\t}\n\treturn\n}\n\nfunc convertAssignInt(d reflect.Value, s int64) (err error) {\n\tswitch d.Type().Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\td.SetInt(s)\n\t\tif d.Int() != s {\n\t\t\terr = strconv.ErrRange\n\t\t\td.SetInt(0)\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tif s < 0 {\n\t\t\terr = strconv.ErrRange\n\t\t} else {\n\t\t\tx := uint64(s)\n\t\t\td.SetUint(x)\n\t\t\tif d.Uint() != x {\n\t\t\t\terr = strconv.ErrRange\n\t\t\t\td.SetUint(0)\n\t\t\t}\n\t\t}\n\tcase reflect.Bool:\n\t\td.SetBool(s != 0)\n\tdefault:\n\t\terr = cannotConvert(d, s)\n\t}\n\treturn\n}\n\nfunc convertAssignValue(d reflect.Value, s interface{}) (err error) {\n\tif d.Kind() != reflect.Ptr {\n\t\tif d.CanAddr() {\n\t\t\td2 := d.Addr()\n\t\t\tif d2.CanInterface() {\n\t\t\t\tif scanner, ok := d2.Interface().(Scanner); ok {\n\t\t\t\t\treturn scanner.RedisScan(s)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if d.CanInterface() {\n\t\t// Already a reflect.Ptr\n\t\tif d.IsNil() {\n\t\t\td.Set(reflect.New(d.Type().Elem()))\n\t\t}\n\t\tif scanner, ok := d.Interface().(Scanner); ok {\n\t\t\treturn scanner.RedisScan(s)\n\t\t}\n\t}\n\n\tswitch s := s.(type) {\n\tcase []byte:\n\t\terr = convertAssignBulkString(d, s)\n\tcase int64:\n\t\terr = convertAssignInt(d, s)\n\tdefault:\n\t\terr = cannotConvert(d, s)\n\t}\n\treturn err\n}\n\nfunc convertAssignArray(d reflect.Value, s []interface{}) error {\n\tif d.Type().Kind() != reflect.Slice {\n\t\treturn cannotConvert(d, s)\n\t}\n\tensureLen(d, len(s))\n\tfor i := 0; i < len(s); i++ {\n\t\tif err := convertAssignValue(d.Index(i), s[i]); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc convertAssign(d interface{}, s interface{}) (err error) {\n\tif scanner, ok := d.(Scanner); ok {\n\t\treturn scanner.RedisScan(s)\n\t}\n\n\t// Handle the most common destination types using type switches and\n\t// fall back to reflection for all other types.\n\tswitch s := s.(type) {\n\tcase nil:\n\t\t// ignore\n\tcase []byte:\n\t\tswitch d := d.(type) {\n\t\tcase *string:\n\t\t\t*d = string(s)\n\t\tcase *int:\n\t\t\t*d, err = strconv.Atoi(string(s))\n\t\tcase *bool:\n\t\t\t*d, err = strconv.ParseBool(string(s))\n\t\tcase *[]byte:\n\t\t\t*d = s\n\t\tcase *interface{}:\n\t\t\t*d = s\n\t\tcase nil:\n\t\t\t// skip value\n\t\tdefault:\n\t\t\tif d := reflect.ValueOf(d); d.Type().Kind() != reflect.Ptr {\n\t\t\t\terr = cannotConvert(d, s)\n\t\t\t} else {\n\t\t\t\terr = convertAssignBulkString(d.Elem(), s)\n\t\t\t}\n\t\t}\n\tcase int64:\n\t\tswitch d := d.(type) {\n\t\tcase *int:\n\t\t\tx := int(s)\n\t\t\tif int64(x) != s {\n\t\t\t\terr = strconv.ErrRange\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\t*d = x\n\t\tcase *bool:\n\t\t\t*d = s != 0\n\t\tcase *interface{}:\n\t\t\t*d = s\n\t\tcase nil:\n\t\t\t// skip value\n\t\tdefault:\n\t\t\tif d := reflect.ValueOf(d); d.Type().Kind() != reflect.Ptr {\n\t\t\t\terr = cannotConvert(d, s)\n\t\t\t} else {\n\t\t\t\terr = convertAssignInt(d.Elem(), s)\n\t\t\t}\n\t\t}\n\tcase string:\n\t\tswitch d := d.(type) {\n\t\tcase *string:\n\t\t\t*d = s\n\t\tcase *interface{}:\n\t\t\t*d = s\n\t\tcase nil:\n\t\t\t// skip value\n\t\tdefault:\n\t\t\terr = cannotConvert(reflect.ValueOf(d), s)\n\t\t}\n\tcase []interface{}:\n\t\tswitch d := d.(type) {\n\t\tcase *[]interface{}:\n\t\t\t*d = s\n\t\tcase *interface{}:\n\t\t\t*d = s\n\t\tcase nil:\n\t\t\t// skip value\n\t\tdefault:\n\t\t\tif d := reflect.ValueOf(d); d.Type().Kind() != reflect.Ptr {\n\t\t\t\terr = cannotConvert(d, s)\n\t\t\t} else {\n\t\t\t\terr = convertAssignArray(d.Elem(), s)\n\t\t\t}\n\t\t}\n\tcase Error:\n\t\terr = s\n\tdefault:\n\t\terr = cannotConvert(reflect.ValueOf(d), s)\n\t}\n\treturn\n}\n\n// Scan copies from src to the values pointed at by dest.\n//\n// Scan uses RedisScan if available otherwise:\n//\n// The values pointed at by dest must be an integer, float, boolean, string,\n// []byte, interface{} or slices of these types. Scan uses the standard strconv\n// package to convert bulk strings to numeric and boolean types.\n//\n// If a dest value is nil, then the corresponding src value is skipped.\n//\n// If a src element is nil, then the corresponding dest value is not modified.\n//\n// To enable easy use of Scan in a loop, Scan returns the slice of src\n// following the copied values.\nfunc Scan(src []interface{}, dest ...interface{}) ([]interface{}, error) {\n\tif len(src) < len(dest) {\n\t\treturn nil, errors.New(\"redigo.Scan: array short\")\n\t}\n\tvar err error\n\tfor i, d := range dest {\n\t\terr = convertAssign(d, src[i])\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"redigo.Scan: cannot assign to dest %d: %v\", i, err)\n\t\t\tbreak\n\t\t}\n\t}\n\treturn src[len(dest):], err\n}\n\ntype fieldSpec struct {\n\tname      string\n\tindex     []int\n\tomitEmpty bool\n}\n\ntype structSpec struct {\n\tm map[string]*fieldSpec\n\tl []*fieldSpec\n}\n\nfunc (ss *structSpec) fieldSpec(name []byte) *fieldSpec {\n\treturn ss.m[string(name)]\n}\n\nfunc compileStructSpec(t reflect.Type, depth map[string]int, index []int, ss *structSpec) {\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tf := t.Field(i)\n\t\tswitch {\n\t\tcase f.PkgPath != \"\" && !f.Anonymous:\n\t\t\t// Ignore unexported fields.\n\t\tcase f.Anonymous:\n\t\t\t// TODO: Handle pointers. Requires change to decoder and\n\t\t\t// protection against infinite recursion.\n\t\t\tif f.Type.Kind() == reflect.Struct {\n\t\t\t\tcompileStructSpec(f.Type, depth, append(index, i), ss)\n\t\t\t}\n\t\tdefault:\n\t\t\tfs := &fieldSpec{name: f.Name}\n\t\t\ttag := f.Tag.Get(\"redis\")\n\t\t\tp := strings.Split(tag, \",\")\n\t\t\tif len(p) > 0 {\n\t\t\t\tif p[0] == \"-\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif len(p[0]) > 0 {\n\t\t\t\t\tfs.name = p[0]\n\t\t\t\t}\n\t\t\t\tfor _, s := range p[1:] {\n\t\t\t\t\tswitch s {\n\t\t\t\t\tcase \"omitempty\":\n\t\t\t\t\t\tfs.omitEmpty = true\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tpanic(fmt.Errorf(\"redigo: unknown field tag %s for type %s\", s, t.Name()))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\td, found := depth[fs.name]\n\t\t\tif !found {\n\t\t\t\td = 1 << 30\n\t\t\t}\n\t\t\tswitch {\n\t\t\tcase len(index) == d:\n\t\t\t\t// At same depth, remove from result.\n\t\t\t\tdelete(ss.m, fs.name)\n\t\t\t\tj := 0\n\t\t\t\tfor i := 0; i < len(ss.l); i++ {\n\t\t\t\t\tif fs.name != ss.l[i].name {\n\t\t\t\t\t\tss.l[j] = ss.l[i]\n\t\t\t\t\t\tj += 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tss.l = ss.l[:j]\n\t\t\tcase len(index) < d:\n\t\t\t\tfs.index = make([]int, len(index)+1)\n\t\t\t\tcopy(fs.index, index)\n\t\t\t\tfs.index[len(index)] = i\n\t\t\t\tdepth[fs.name] = len(index)\n\t\t\t\tss.m[fs.name] = fs\n\t\t\t\tss.l = append(ss.l, fs)\n\t\t\t}\n\t\t}\n\t}\n}\n\nvar (\n\tstructSpecMutex  sync.RWMutex\n\tstructSpecCache  = make(map[reflect.Type]*structSpec)\n\tdefaultFieldSpec = &fieldSpec{}\n)\n\nfunc structSpecForType(t reflect.Type) *structSpec {\n\n\tstructSpecMutex.RLock()\n\tss, found := structSpecCache[t]\n\tstructSpecMutex.RUnlock()\n\tif found {\n\t\treturn ss\n\t}\n\n\tstructSpecMutex.Lock()\n\tdefer structSpecMutex.Unlock()\n\tss, found = structSpecCache[t]\n\tif found {\n\t\treturn ss\n\t}\n\n\tss = &structSpec{m: make(map[string]*fieldSpec)}\n\tcompileStructSpec(t, make(map[string]int), nil, ss)\n\tstructSpecCache[t] = ss\n\treturn ss\n}\n\nvar errScanStructValue = errors.New(\"redigo.ScanStruct: value must be non-nil pointer to a struct\")\n\n// ScanStruct scans alternating names and values from src to a struct. The\n// HGETALL and CONFIG GET commands return replies in this format.\n//\n// ScanStruct uses exported field names to match values in the response. Use\n// 'redis' field tag to override the name:\n//\n//\tField int `redis:\"myName\"`\n//\n// Fields with the tag redis:\"-\" are ignored.\n//\n// Each field uses RedisScan if available otherwise:\n// Integer, float, boolean, string and []byte fields are supported. Scan uses the\n// standard strconv package to convert bulk string values to numeric and\n// boolean types.\n//\n// If a src element is nil, then the corresponding field is not modified.\nfunc ScanStruct(src []interface{}, dest interface{}) error {\n\td := reflect.ValueOf(dest)\n\tif d.Kind() != reflect.Ptr || d.IsNil() {\n\t\treturn errScanStructValue\n\t}\n\td = d.Elem()\n\tif d.Kind() != reflect.Struct {\n\t\treturn errScanStructValue\n\t}\n\tss := structSpecForType(d.Type())\n\n\tif len(src)%2 != 0 {\n\t\treturn errors.New(\"redigo.ScanStruct: number of values not a multiple of 2\")\n\t}\n\n\tfor i := 0; i < len(src); i += 2 {\n\t\ts := src[i+1]\n\t\tif s == nil {\n\t\t\tcontinue\n\t\t}\n\t\tname, ok := src[i].([]byte)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"redigo.ScanStruct: key %d not a bulk string value\", i)\n\t\t}\n\t\tfs := ss.fieldSpec(name)\n\t\tif fs == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif err := convertAssignValue(d.FieldByIndex(fs.index), s); err != nil {\n\t\t\treturn fmt.Errorf(\"redigo.ScanStruct: cannot assign field %s: %v\", fs.name, err)\n\t\t}\n\t}\n\treturn nil\n}\n\nvar (\n\terrScanSliceValue = errors.New(\"redigo.ScanSlice: dest must be non-nil pointer to a struct\")\n)\n\n// ScanSlice scans src to the slice pointed to by dest. The elements the dest\n// slice must be integer, float, boolean, string, struct or pointer to struct\n// values.\n//\n// Struct fields must be integer, float, boolean or string values. All struct\n// fields are used unless a subset is specified using fieldNames.\nfunc ScanSlice(src []interface{}, dest interface{}, fieldNames ...string) error {\n\td := reflect.ValueOf(dest)\n\tif d.Kind() != reflect.Ptr || d.IsNil() {\n\t\treturn errScanSliceValue\n\t}\n\td = d.Elem()\n\tif d.Kind() != reflect.Slice {\n\t\treturn errScanSliceValue\n\t}\n\n\tisPtr := false\n\tt := d.Type().Elem()\n\tif t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Struct {\n\t\tisPtr = true\n\t\tt = t.Elem()\n\t}\n\n\tif t.Kind() != reflect.Struct {\n\t\tensureLen(d, len(src))\n\t\tfor i, s := range src {\n\t\t\tif s == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := convertAssignValue(d.Index(i), s); err != nil {\n\t\t\t\treturn fmt.Errorf(\"redigo.ScanSlice: cannot assign element %d: %v\", i, err)\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\n\tss := structSpecForType(t)\n\tfss := ss.l\n\tif len(fieldNames) > 0 {\n\t\tfss = make([]*fieldSpec, len(fieldNames))\n\t\tfor i, name := range fieldNames {\n\t\t\tfss[i] = ss.m[name]\n\t\t\tif fss[i] == nil {\n\t\t\t\treturn fmt.Errorf(\"redigo.ScanSlice: ScanSlice bad field name %s\", name)\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(fss) == 0 {\n\t\treturn errors.New(\"redigo.ScanSlice: no struct fields\")\n\t}\n\n\tn := len(src) / len(fss)\n\tif n*len(fss) != len(src) {\n\t\treturn errors.New(\"redigo.ScanSlice: length not a multiple of struct field count\")\n\t}\n\n\tensureLen(d, n)\n\tfor i := 0; i < n; i++ {\n\t\td := d.Index(i)\n\t\tif isPtr {\n\t\t\tif d.IsNil() {\n\t\t\t\td.Set(reflect.New(t))\n\t\t\t}\n\t\t\td = d.Elem()\n\t\t}\n\t\tfor j, fs := range fss {\n\t\t\ts := src[i*len(fss)+j]\n\t\t\tif s == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := convertAssignValue(d.FieldByIndex(fs.index), s); err != nil {\n\t\t\t\treturn fmt.Errorf(\"redigo.ScanSlice: cannot assign element %d to field %s: %v\", i*len(fss)+j, fs.name, err)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Args is a helper for constructing command arguments from structured values.\ntype Args []interface{}\n\n// Add returns the result of appending value to args.\nfunc (args Args) Add(value ...interface{}) Args {\n\treturn append(args, value...)\n}\n\n// AddFlat returns the result of appending the flattened value of v to args.\n//\n// Maps are flattened by appending the alternating keys and map values to args.\n//\n// Slices are flattened by appending the slice elements to args.\n//\n// Structs are flattened by appending the alternating names and values of\n// exported fields to args. If v is a nil struct pointer, then nothing is\n// appended. The 'redis' field tag overrides struct field names. See ScanStruct\n// for more information on the use of the 'redis' field tag.\n//\n// Other types are appended to args as is.\nfunc (args Args) AddFlat(v interface{}) Args {\n\trv := reflect.ValueOf(v)\n\tswitch rv.Kind() {\n\tcase reflect.Struct:\n\t\targs = flattenStruct(args, rv)\n\tcase reflect.Slice:\n\t\tfor i := 0; i < rv.Len(); i++ {\n\t\t\targs = append(args, rv.Index(i).Interface())\n\t\t}\n\tcase reflect.Map:\n\t\tfor _, k := range rv.MapKeys() {\n\t\t\targs = append(args, k.Interface(), rv.MapIndex(k).Interface())\n\t\t}\n\tcase reflect.Ptr:\n\t\tif rv.Type().Elem().Kind() == reflect.Struct {\n\t\t\tif !rv.IsNil() {\n\t\t\t\targs = flattenStruct(args, rv.Elem())\n\t\t\t}\n\t\t} else {\n\t\t\targs = append(args, v)\n\t\t}\n\tdefault:\n\t\targs = append(args, v)\n\t}\n\treturn args\n}\n\nfunc flattenStruct(args Args, v reflect.Value) Args {\n\tss := structSpecForType(v.Type())\n\tfor _, fs := range ss.l {\n\t\tfv := v.FieldByIndex(fs.index)\n\t\tif fs.omitEmpty {\n\t\t\tvar empty = false\n\t\t\tswitch fv.Kind() {\n\t\t\tcase reflect.Array, reflect.Map, reflect.Slice, reflect.String:\n\t\t\t\tempty = fv.Len() == 0\n\t\t\tcase reflect.Bool:\n\t\t\t\tempty = !fv.Bool()\n\t\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\t\tempty = fv.Int() == 0\n\t\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\t\tempty = fv.Uint() == 0\n\t\t\tcase reflect.Float32, reflect.Float64:\n\t\t\t\tempty = fv.Float() == 0\n\t\t\tcase reflect.Interface, reflect.Ptr:\n\t\t\t\tempty = fv.IsNil()\n\t\t\t}\n\t\t\tif empty {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\targs = append(args, fs.name, fv.Interface())\n\t}\n\treturn args\n}\n"
  },
  {
    "path": "vendor/github.com/garyburd/redigo/redis/script.go",
    "content": "// Copyright 2012 Gary Burd\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"): you may\n// not use this file except in compliance with the License. You may obtain\n// a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations\n// under the License.\n\npackage redis\n\nimport (\n\t\"crypto/sha1\"\n\t\"encoding/hex\"\n\t\"io\"\n\t\"strings\"\n)\n\n// Script encapsulates the source, hash and key count for a Lua script. See\n// http://redis.io/commands/eval for information on scripts in Redis.\ntype Script struct {\n\tkeyCount int\n\tsrc      string\n\thash     string\n}\n\n// NewScript returns a new script object. If keyCount is greater than or equal\n// to zero, then the count is automatically inserted in the EVAL command\n// argument list. If keyCount is less than zero, then the application supplies\n// the count as the first value in the keysAndArgs argument to the Do, Send and\n// SendHash methods.\nfunc NewScript(keyCount int, src string) *Script {\n\th := sha1.New()\n\tio.WriteString(h, src)\n\treturn &Script{keyCount, src, hex.EncodeToString(h.Sum(nil))}\n}\n\nfunc (s *Script) args(spec string, keysAndArgs []interface{}) []interface{} {\n\tvar args []interface{}\n\tif s.keyCount < 0 {\n\t\targs = make([]interface{}, 1+len(keysAndArgs))\n\t\targs[0] = spec\n\t\tcopy(args[1:], keysAndArgs)\n\t} else {\n\t\targs = make([]interface{}, 2+len(keysAndArgs))\n\t\targs[0] = spec\n\t\targs[1] = s.keyCount\n\t\tcopy(args[2:], keysAndArgs)\n\t}\n\treturn args\n}\n\n// Hash returns the script hash.\nfunc (s *Script) Hash() string {\n\treturn s.hash\n}\n\n// Do evaluates the script. Under the covers, Do optimistically evaluates the\n// script using the EVALSHA command. If the command fails because the script is\n// not loaded, then Do evaluates the script using the EVAL command (thus\n// causing the script to load).\nfunc (s *Script) Do(c Conn, keysAndArgs ...interface{}) (interface{}, error) {\n\tv, err := c.Do(\"EVALSHA\", s.args(s.hash, keysAndArgs)...)\n\tif e, ok := err.(Error); ok && strings.HasPrefix(string(e), \"NOSCRIPT \") {\n\t\tv, err = c.Do(\"EVAL\", s.args(s.src, keysAndArgs)...)\n\t}\n\treturn v, err\n}\n\n// SendHash evaluates the script without waiting for the reply. The script is\n// evaluated with the EVALSHA command. The application must ensure that the\n// script is loaded by a previous call to Send, Do or Load methods.\nfunc (s *Script) SendHash(c Conn, keysAndArgs ...interface{}) error {\n\treturn c.Send(\"EVALSHA\", s.args(s.hash, keysAndArgs)...)\n}\n\n// Send evaluates the script without waiting for the reply.\nfunc (s *Script) Send(c Conn, keysAndArgs ...interface{}) error {\n\treturn c.Send(\"EVAL\", s.args(s.src, keysAndArgs)...)\n}\n\n// Load loads the script without evaluating it.\nfunc (s *Script) Load(c Conn) error {\n\t_, err := c.Do(\"SCRIPT\", \"LOAD\", s.src)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/.gitignore",
    "content": "jose-util/jose-util\njose-util.t.err"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/.golangci.yml",
    "content": "# https://github.com/golangci/golangci-lint\n\nrun:\n  skip-files:\n    - doc_test.go\n  modules-download-mode: readonly\n\nlinters:\n  enable-all: true\n  disable:\n    - gochecknoglobals\n    - goconst\n    - lll\n    - maligned\n    - nakedret\n    - scopelint\n    - unparam\n    - funlen # added in 1.18 (requires go-jose changes before it can be enabled)\n\nlinters-settings:\n  gocyclo:\n    min-complexity: 35\n\nissues:\n  exclude-rules:\n    - text: \"don't use ALL_CAPS in Go names\"\n      linters:\n        - golint\n    - text: \"hardcoded credentials\"\n      linters:\n        - gosec\n    - text: \"weak cryptographic primitive\"\n      linters:\n        - gosec\n    - path: json/\n      linters:\n        - dupl\n        - errcheck\n        - gocritic\n        - gocyclo\n        - golint\n        - govet\n        - ineffassign\n        - staticcheck\n        - structcheck\n        - stylecheck\n        - unused\n    - path: _test\\.go\n      linters:\n        - scopelint\n    - path: jwk.go\n      linters:\n        - gocyclo\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/.travis.yml",
    "content": "language: go\n\nmatrix:\n  fast_finish: true\n  allow_failures:\n    - go: tip\n\ngo:\n  - \"1.13.x\"\n  - \"1.14.x\"\n  - tip\n\nbefore_script:\n  - export PATH=$HOME/.local/bin:$PATH\n\nbefore_install:\n  - go get -u github.com/mattn/goveralls github.com/wadey/gocovmerge\n  - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.18.0\n  - pip install cram --user\n\nscript:\n  - go test -v -covermode=count -coverprofile=profile.cov .\n  - go test -v -covermode=count -coverprofile=cryptosigner/profile.cov ./cryptosigner\n  - go test -v -covermode=count -coverprofile=cipher/profile.cov ./cipher\n  - go test -v -covermode=count -coverprofile=jwt/profile.cov ./jwt\n  - go test -v ./json  # no coverage for forked encoding/json package\n  - golangci-lint run\n  - cd jose-util && go build && PATH=$PWD:$PATH cram -v jose-util.t # cram tests jose-util\n  - cd ..\n\nafter_success:\n  - gocovmerge *.cov */*.cov > merged.coverprofile\n  - goveralls -coverprofile merged.coverprofile -service=travis-ci\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/BUG-BOUNTY.md",
    "content": "Serious about security\n======================\n\nSquare recognizes the important contributions the security research community\ncan make. We therefore encourage reporting security issues with the code\ncontained in this repository.\n\nIf you believe you have discovered a security vulnerability, please follow the\nguidelines at <https://bugcrowd.com/squareopensource>.\n\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/CHANGELOG.md",
    "content": "# v3.0.1\n\nFixed:\n - Security issue: an attacker specifying a large \"p2c\" value can cause\n   JSONWebEncryption.Decrypt and JSONWebEncryption.DecryptMulti to consume large\n   amounts of CPU, causing a DoS. Thanks to Matt Schwager (@mschwager) for the\n   disclosure and to Tom Tervoort for originally publishing the category of attack.\n   https://i.blackhat.com/BH-US-23/Presentations/US-23-Tervoort-Three-New-Attacks-Against-JSON-Web-Tokens.pdf\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/CONTRIBUTING.md",
    "content": "# Contributing\n\nIf you would like to contribute code to go-jose you can do so through GitHub by\nforking the repository and sending a pull request.\n\nWhen submitting code, please make every effort to follow existing conventions\nand style in order to keep the code as readable as possible. Please also make\nsure all tests pass by running `go test`, and format your code with `go fmt`.\nWe also recommend using `golint` and `errcheck`.\n\nBefore your code can be accepted into the project you must also sign the\nIndividual Contributor License Agreement.  We use [cla-assistant.io][1] and you\nwill be prompted to sign once a pull request is opened.\n\n[1]: https://cla-assistant.io/\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/README.md",
    "content": "# Go JOSE\n\n[![godoc](http://img.shields.io/badge/godoc-jose_package-blue.svg?style=flat)](https://godoc.org/gopkg.in/go-jose/go-jose.v2)\n[![godoc](http://img.shields.io/badge/godoc-jwt_package-blue.svg?style=flat)](https://godoc.org/gopkg.in/go-jose/go-jose.v2/jwt)\n[![license](http://img.shields.io/badge/license-apache_2.0-blue.svg?style=flat)](https://raw.githubusercontent.com/go-jose/go-jose/master/LICENSE)\n[![build](https://travis-ci.org/go-jose/go-jose.svg?branch=master)](https://travis-ci.org/go-jose/go-jose)\n[![coverage](https://coveralls.io/repos/github/go-jose/go-jose/badge.svg?branch=master)](https://coveralls.io/r/go-jose/go-jose)\n\nPackage jose aims to provide an implementation of the Javascript Object Signing\nand Encryption set of standards. This includes support for JSON Web Encryption,\nJSON Web Signature, and JSON Web Token standards.\n\n**Disclaimer**: This library contains encryption software that is subject to\nthe U.S. Export Administration Regulations. You may not export, re-export,\ntransfer or download this code or any part of it in violation of any United\nStates law, directive or regulation. In particular this software may not be\nexported or re-exported in any form or on any media to Iran, North Sudan,\nSyria, Cuba, or North Korea, or to denied persons or entities mentioned on any\nUS maintained blocked list.\n\n## Overview\n\nThe implementation follows the\n[JSON Web Encryption](http://dx.doi.org/10.17487/RFC7516) (RFC 7516),\n[JSON Web Signature](http://dx.doi.org/10.17487/RFC7515) (RFC 7515), and\n[JSON Web Token](http://dx.doi.org/10.17487/RFC7519) (RFC 7519) specifications.\nTables of supported algorithms are shown below. The library supports both\nthe compact and JWS/JWE JSON Serialization formats, and has optional support for\nmultiple recipients. It also comes with a small command-line utility\n([`jose-util`](https://github.com/go-jose/go-jose/tree/master/jose-util))\nfor dealing with JOSE messages in a shell.\n\n**Note**: We use a forked version of the `encoding/json` package from the Go\nstandard library which uses case-sensitive matching for member names (instead\nof [case-insensitive matching](https://www.ietf.org/mail-archive/web/json/current/msg03763.html)).\nThis is to avoid differences in interpretation of messages between go-jose and\nlibraries in other languages.\n\n### Versions\n\n[Version 2](https://gopkg.in/go-jose/go-jose.v2)\n([branch](https://github.com/go-jose/go-jose/tree/v2),\n[doc](https://godoc.org/gopkg.in/go-jose/go-jose.v2)) is the current stable version:\n\n    import \"gopkg.in/go-jose/go-jose.v2\"\n\n[Version 3](https://github.com/go-jose/go-jose)\n([branch](https://github.com/go-jose/go-jose/tree/master),\n[doc](https://godoc.org/github.com/go-jose/go-jose)) is the under development/unstable version (not released yet):\n\n    import \"github.com/go-jose/go-jose/v3\"\n\nAll new feature development takes place on the `master` branch, which we are\npreparing to release as version 3 soon. Version 2 will continue to receive\ncritical bug and security fixes. Note that starting with version 3 we are\nusing Go modules for versioning instead of `gopkg.in` as before. Version 3 also will require Go version 1.13 or higher.\n\nVersion 1 (on the `v1` branch) is frozen and not supported anymore.\n\n### Supported algorithms\n\nSee below for a table of supported algorithms. Algorithm identifiers match\nthe names in the [JSON Web Algorithms](http://dx.doi.org/10.17487/RFC7518)\nstandard where possible. The Godoc reference has a list of constants.\n\n Key encryption             | Algorithm identifier(s)\n :------------------------- | :------------------------------\n RSA-PKCS#1v1.5             | RSA1_5\n RSA-OAEP                   | RSA-OAEP, RSA-OAEP-256\n AES key wrap               | A128KW, A192KW, A256KW\n AES-GCM key wrap           | A128GCMKW, A192GCMKW, A256GCMKW\n ECDH-ES + AES key wrap     | ECDH-ES+A128KW, ECDH-ES+A192KW, ECDH-ES+A256KW\n ECDH-ES (direct)           | ECDH-ES<sup>1</sup>\n Direct encryption          | dir<sup>1</sup>\n\n<sup>1. Not supported in multi-recipient mode</sup>\n\n Signing / MAC              | Algorithm identifier(s)\n :------------------------- | :------------------------------\n RSASSA-PKCS#1v1.5          | RS256, RS384, RS512\n RSASSA-PSS                 | PS256, PS384, PS512\n HMAC                       | HS256, HS384, HS512\n ECDSA                      | ES256, ES384, ES512\n Ed25519                    | EdDSA<sup>2</sup>\n\n<sup>2. Only available in version 2 of the package</sup>\n\n Content encryption         | Algorithm identifier(s)\n :------------------------- | :------------------------------\n AES-CBC+HMAC               | A128CBC-HS256, A192CBC-HS384, A256CBC-HS512\n AES-GCM                    | A128GCM, A192GCM, A256GCM\n\n Compression                | Algorithm identifiers(s)\n :------------------------- | -------------------------------\n DEFLATE (RFC 1951)         | DEF\n\n### Supported key types\n\nSee below for a table of supported key types. These are understood by the\nlibrary, and can be passed to corresponding functions such as `NewEncrypter` or\n`NewSigner`. Each of these keys can also be wrapped in a JWK if desired, which\nallows attaching a key id.\n\n Algorithm(s)               | Corresponding types\n :------------------------- | -------------------------------\n RSA                        | *[rsa.PublicKey](http://golang.org/pkg/crypto/rsa/#PublicKey), *[rsa.PrivateKey](http://golang.org/pkg/crypto/rsa/#PrivateKey)\n ECDH, ECDSA                | *[ecdsa.PublicKey](http://golang.org/pkg/crypto/ecdsa/#PublicKey), *[ecdsa.PrivateKey](http://golang.org/pkg/crypto/ecdsa/#PrivateKey)\n EdDSA<sup>1</sup>          | [ed25519.PublicKey](https://godoc.org/pkg/crypto/ed25519#PublicKey), [ed25519.PrivateKey](https://godoc.org/pkg/crypto/ed25519#PrivateKey)\n AES, HMAC                  | []byte\n\n<sup>1. Only available in version 2 or later of the package</sup>\n\n## Examples\n\n[![godoc](http://img.shields.io/badge/godoc-jose_package-blue.svg?style=flat)](https://godoc.org/gopkg.in/go-jose/go-jose.v2)\n[![godoc](http://img.shields.io/badge/godoc-jwt_package-blue.svg?style=flat)](https://godoc.org/gopkg.in/go-jose/go-jose.v2/jwt)\n\nExamples can be found in the Godoc\nreference for this package. The\n[`jose-util`](https://github.com/go-jose/go-jose/tree/master/jose-util)\nsubdirectory also contains a small command-line utility which might be useful\nas an example as well.\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/asymmetric.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jose\n\nimport (\n\t\"crypto\"\n\t\"crypto/aes\"\n\t\"crypto/ecdsa\"\n\t\"crypto/ed25519\"\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n\t\"crypto/sha1\"\n\t\"crypto/sha256\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math/big\"\n\n\tjosecipher \"github.com/go-jose/go-jose/v3/cipher\"\n\t\"github.com/go-jose/go-jose/v3/json\"\n)\n\n// A generic RSA-based encrypter/verifier\ntype rsaEncrypterVerifier struct {\n\tpublicKey *rsa.PublicKey\n}\n\n// A generic RSA-based decrypter/signer\ntype rsaDecrypterSigner struct {\n\tprivateKey *rsa.PrivateKey\n}\n\n// A generic EC-based encrypter/verifier\ntype ecEncrypterVerifier struct {\n\tpublicKey *ecdsa.PublicKey\n}\n\ntype edEncrypterVerifier struct {\n\tpublicKey ed25519.PublicKey\n}\n\n// A key generator for ECDH-ES\ntype ecKeyGenerator struct {\n\tsize      int\n\talgID     string\n\tpublicKey *ecdsa.PublicKey\n}\n\n// A generic EC-based decrypter/signer\ntype ecDecrypterSigner struct {\n\tprivateKey *ecdsa.PrivateKey\n}\n\ntype edDecrypterSigner struct {\n\tprivateKey ed25519.PrivateKey\n}\n\n// newRSARecipient creates recipientKeyInfo based on the given key.\nfunc newRSARecipient(keyAlg KeyAlgorithm, publicKey *rsa.PublicKey) (recipientKeyInfo, error) {\n\t// Verify that key management algorithm is supported by this encrypter\n\tswitch keyAlg {\n\tcase RSA1_5, RSA_OAEP, RSA_OAEP_256:\n\tdefault:\n\t\treturn recipientKeyInfo{}, ErrUnsupportedAlgorithm\n\t}\n\n\tif publicKey == nil {\n\t\treturn recipientKeyInfo{}, errors.New(\"invalid public key\")\n\t}\n\n\treturn recipientKeyInfo{\n\t\tkeyAlg: keyAlg,\n\t\tkeyEncrypter: &rsaEncrypterVerifier{\n\t\t\tpublicKey: publicKey,\n\t\t},\n\t}, nil\n}\n\n// newRSASigner creates a recipientSigInfo based on the given key.\nfunc newRSASigner(sigAlg SignatureAlgorithm, privateKey *rsa.PrivateKey) (recipientSigInfo, error) {\n\t// Verify that key management algorithm is supported by this encrypter\n\tswitch sigAlg {\n\tcase RS256, RS384, RS512, PS256, PS384, PS512:\n\tdefault:\n\t\treturn recipientSigInfo{}, ErrUnsupportedAlgorithm\n\t}\n\n\tif privateKey == nil {\n\t\treturn recipientSigInfo{}, errors.New(\"invalid private key\")\n\t}\n\n\treturn recipientSigInfo{\n\t\tsigAlg: sigAlg,\n\t\tpublicKey: staticPublicKey(&JSONWebKey{\n\t\t\tKey: privateKey.Public(),\n\t\t}),\n\t\tsigner: &rsaDecrypterSigner{\n\t\t\tprivateKey: privateKey,\n\t\t},\n\t}, nil\n}\n\nfunc newEd25519Signer(sigAlg SignatureAlgorithm, privateKey ed25519.PrivateKey) (recipientSigInfo, error) {\n\tif sigAlg != EdDSA {\n\t\treturn recipientSigInfo{}, ErrUnsupportedAlgorithm\n\t}\n\n\tif privateKey == nil {\n\t\treturn recipientSigInfo{}, errors.New(\"invalid private key\")\n\t}\n\treturn recipientSigInfo{\n\t\tsigAlg: sigAlg,\n\t\tpublicKey: staticPublicKey(&JSONWebKey{\n\t\t\tKey: privateKey.Public(),\n\t\t}),\n\t\tsigner: &edDecrypterSigner{\n\t\t\tprivateKey: privateKey,\n\t\t},\n\t}, nil\n}\n\n// newECDHRecipient creates recipientKeyInfo based on the given key.\nfunc newECDHRecipient(keyAlg KeyAlgorithm, publicKey *ecdsa.PublicKey) (recipientKeyInfo, error) {\n\t// Verify that key management algorithm is supported by this encrypter\n\tswitch keyAlg {\n\tcase ECDH_ES, ECDH_ES_A128KW, ECDH_ES_A192KW, ECDH_ES_A256KW:\n\tdefault:\n\t\treturn recipientKeyInfo{}, ErrUnsupportedAlgorithm\n\t}\n\n\tif publicKey == nil || !publicKey.Curve.IsOnCurve(publicKey.X, publicKey.Y) {\n\t\treturn recipientKeyInfo{}, errors.New(\"invalid public key\")\n\t}\n\n\treturn recipientKeyInfo{\n\t\tkeyAlg: keyAlg,\n\t\tkeyEncrypter: &ecEncrypterVerifier{\n\t\t\tpublicKey: publicKey,\n\t\t},\n\t}, nil\n}\n\n// newECDSASigner creates a recipientSigInfo based on the given key.\nfunc newECDSASigner(sigAlg SignatureAlgorithm, privateKey *ecdsa.PrivateKey) (recipientSigInfo, error) {\n\t// Verify that key management algorithm is supported by this encrypter\n\tswitch sigAlg {\n\tcase ES256, ES384, ES512:\n\tdefault:\n\t\treturn recipientSigInfo{}, ErrUnsupportedAlgorithm\n\t}\n\n\tif privateKey == nil {\n\t\treturn recipientSigInfo{}, errors.New(\"invalid private key\")\n\t}\n\n\treturn recipientSigInfo{\n\t\tsigAlg: sigAlg,\n\t\tpublicKey: staticPublicKey(&JSONWebKey{\n\t\t\tKey: privateKey.Public(),\n\t\t}),\n\t\tsigner: &ecDecrypterSigner{\n\t\t\tprivateKey: privateKey,\n\t\t},\n\t}, nil\n}\n\n// Encrypt the given payload and update the object.\nfunc (ctx rsaEncrypterVerifier) encryptKey(cek []byte, alg KeyAlgorithm) (recipientInfo, error) {\n\tencryptedKey, err := ctx.encrypt(cek, alg)\n\tif err != nil {\n\t\treturn recipientInfo{}, err\n\t}\n\n\treturn recipientInfo{\n\t\tencryptedKey: encryptedKey,\n\t\theader:       &rawHeader{},\n\t}, nil\n}\n\n// Encrypt the given payload. Based on the key encryption algorithm,\n// this will either use RSA-PKCS1v1.5 or RSA-OAEP (with SHA-1 or SHA-256).\nfunc (ctx rsaEncrypterVerifier) encrypt(cek []byte, alg KeyAlgorithm) ([]byte, error) {\n\tswitch alg {\n\tcase RSA1_5:\n\t\treturn rsa.EncryptPKCS1v15(RandReader, ctx.publicKey, cek)\n\tcase RSA_OAEP:\n\t\treturn rsa.EncryptOAEP(sha1.New(), RandReader, ctx.publicKey, cek, []byte{})\n\tcase RSA_OAEP_256:\n\t\treturn rsa.EncryptOAEP(sha256.New(), RandReader, ctx.publicKey, cek, []byte{})\n\t}\n\n\treturn nil, ErrUnsupportedAlgorithm\n}\n\n// Decrypt the given payload and return the content encryption key.\nfunc (ctx rsaDecrypterSigner) decryptKey(headers rawHeader, recipient *recipientInfo, generator keyGenerator) ([]byte, error) {\n\treturn ctx.decrypt(recipient.encryptedKey, headers.getAlgorithm(), generator)\n}\n\n// Decrypt the given payload. Based on the key encryption algorithm,\n// this will either use RSA-PKCS1v1.5 or RSA-OAEP (with SHA-1 or SHA-256).\nfunc (ctx rsaDecrypterSigner) decrypt(jek []byte, alg KeyAlgorithm, generator keyGenerator) ([]byte, error) {\n\t// Note: The random reader on decrypt operations is only used for blinding,\n\t// so stubbing is meanlingless (hence the direct use of rand.Reader).\n\tswitch alg {\n\tcase RSA1_5:\n\t\tdefer func() {\n\t\t\t// DecryptPKCS1v15SessionKey sometimes panics on an invalid payload\n\t\t\t// because of an index out of bounds error, which we want to ignore.\n\t\t\t// This has been fixed in Go 1.3.1 (released 2014/08/13), the recover()\n\t\t\t// only exists for preventing crashes with unpatched versions.\n\t\t\t// See: https://groups.google.com/forum/#!topic/golang-dev/7ihX6Y6kx9k\n\t\t\t// See: https://code.google.com/p/go/source/detail?r=58ee390ff31602edb66af41ed10901ec95904d33\n\t\t\t_ = recover()\n\t\t}()\n\n\t\t// Perform some input validation.\n\t\tkeyBytes := ctx.privateKey.PublicKey.N.BitLen() / 8\n\t\tif keyBytes != len(jek) {\n\t\t\t// Input size is incorrect, the encrypted payload should always match\n\t\t\t// the size of the public modulus (e.g. using a 2048 bit key will\n\t\t\t// produce 256 bytes of output). Reject this since it's invalid input.\n\t\t\treturn nil, ErrCryptoFailure\n\t\t}\n\n\t\tcek, _, err := generator.genKey()\n\t\tif err != nil {\n\t\t\treturn nil, ErrCryptoFailure\n\t\t}\n\n\t\t// When decrypting an RSA-PKCS1v1.5 payload, we must take precautions to\n\t\t// prevent chosen-ciphertext attacks as described in RFC 3218, \"Preventing\n\t\t// the Million Message Attack on Cryptographic Message Syntax\". We are\n\t\t// therefore deliberately ignoring errors here.\n\t\t_ = rsa.DecryptPKCS1v15SessionKey(rand.Reader, ctx.privateKey, jek, cek)\n\n\t\treturn cek, nil\n\tcase RSA_OAEP:\n\t\t// Use rand.Reader for RSA blinding\n\t\treturn rsa.DecryptOAEP(sha1.New(), rand.Reader, ctx.privateKey, jek, []byte{})\n\tcase RSA_OAEP_256:\n\t\t// Use rand.Reader for RSA blinding\n\t\treturn rsa.DecryptOAEP(sha256.New(), rand.Reader, ctx.privateKey, jek, []byte{})\n\t}\n\n\treturn nil, ErrUnsupportedAlgorithm\n}\n\n// Sign the given payload\nfunc (ctx rsaDecrypterSigner) signPayload(payload []byte, alg SignatureAlgorithm) (Signature, error) {\n\tvar hash crypto.Hash\n\n\tswitch alg {\n\tcase RS256, PS256:\n\t\thash = crypto.SHA256\n\tcase RS384, PS384:\n\t\thash = crypto.SHA384\n\tcase RS512, PS512:\n\t\thash = crypto.SHA512\n\tdefault:\n\t\treturn Signature{}, ErrUnsupportedAlgorithm\n\t}\n\n\thasher := hash.New()\n\n\t// According to documentation, Write() on hash never fails\n\t_, _ = hasher.Write(payload)\n\thashed := hasher.Sum(nil)\n\n\tvar out []byte\n\tvar err error\n\n\tswitch alg {\n\tcase RS256, RS384, RS512:\n\t\tout, err = rsa.SignPKCS1v15(RandReader, ctx.privateKey, hash, hashed)\n\tcase PS256, PS384, PS512:\n\t\tout, err = rsa.SignPSS(RandReader, ctx.privateKey, hash, hashed, &rsa.PSSOptions{\n\t\t\tSaltLength: rsa.PSSSaltLengthEqualsHash,\n\t\t})\n\t}\n\n\tif err != nil {\n\t\treturn Signature{}, err\n\t}\n\n\treturn Signature{\n\t\tSignature: out,\n\t\tprotected: &rawHeader{},\n\t}, nil\n}\n\n// Verify the given payload\nfunc (ctx rsaEncrypterVerifier) verifyPayload(payload []byte, signature []byte, alg SignatureAlgorithm) error {\n\tvar hash crypto.Hash\n\n\tswitch alg {\n\tcase RS256, PS256:\n\t\thash = crypto.SHA256\n\tcase RS384, PS384:\n\t\thash = crypto.SHA384\n\tcase RS512, PS512:\n\t\thash = crypto.SHA512\n\tdefault:\n\t\treturn ErrUnsupportedAlgorithm\n\t}\n\n\thasher := hash.New()\n\n\t// According to documentation, Write() on hash never fails\n\t_, _ = hasher.Write(payload)\n\thashed := hasher.Sum(nil)\n\n\tswitch alg {\n\tcase RS256, RS384, RS512:\n\t\treturn rsa.VerifyPKCS1v15(ctx.publicKey, hash, hashed, signature)\n\tcase PS256, PS384, PS512:\n\t\treturn rsa.VerifyPSS(ctx.publicKey, hash, hashed, signature, nil)\n\t}\n\n\treturn ErrUnsupportedAlgorithm\n}\n\n// Encrypt the given payload and update the object.\nfunc (ctx ecEncrypterVerifier) encryptKey(cek []byte, alg KeyAlgorithm) (recipientInfo, error) {\n\tswitch alg {\n\tcase ECDH_ES:\n\t\t// ECDH-ES mode doesn't wrap a key, the shared secret is used directly as the key.\n\t\treturn recipientInfo{\n\t\t\theader: &rawHeader{},\n\t\t}, nil\n\tcase ECDH_ES_A128KW, ECDH_ES_A192KW, ECDH_ES_A256KW:\n\tdefault:\n\t\treturn recipientInfo{}, ErrUnsupportedAlgorithm\n\t}\n\n\tgenerator := ecKeyGenerator{\n\t\talgID:     string(alg),\n\t\tpublicKey: ctx.publicKey,\n\t}\n\n\tswitch alg {\n\tcase ECDH_ES_A128KW:\n\t\tgenerator.size = 16\n\tcase ECDH_ES_A192KW:\n\t\tgenerator.size = 24\n\tcase ECDH_ES_A256KW:\n\t\tgenerator.size = 32\n\t}\n\n\tkek, header, err := generator.genKey()\n\tif err != nil {\n\t\treturn recipientInfo{}, err\n\t}\n\n\tblock, err := aes.NewCipher(kek)\n\tif err != nil {\n\t\treturn recipientInfo{}, err\n\t}\n\n\tjek, err := josecipher.KeyWrap(block, cek)\n\tif err != nil {\n\t\treturn recipientInfo{}, err\n\t}\n\n\treturn recipientInfo{\n\t\tencryptedKey: jek,\n\t\theader:       &header,\n\t}, nil\n}\n\n// Get key size for EC key generator\nfunc (ctx ecKeyGenerator) keySize() int {\n\treturn ctx.size\n}\n\n// Get a content encryption key for ECDH-ES\nfunc (ctx ecKeyGenerator) genKey() ([]byte, rawHeader, error) {\n\tpriv, err := ecdsa.GenerateKey(ctx.publicKey.Curve, RandReader)\n\tif err != nil {\n\t\treturn nil, rawHeader{}, err\n\t}\n\n\tout := josecipher.DeriveECDHES(ctx.algID, []byte{}, []byte{}, priv, ctx.publicKey, ctx.size)\n\n\tb, err := json.Marshal(&JSONWebKey{\n\t\tKey: &priv.PublicKey,\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\theaders := rawHeader{\n\t\theaderEPK: makeRawMessage(b),\n\t}\n\n\treturn out, headers, nil\n}\n\n// Decrypt the given payload and return the content encryption key.\nfunc (ctx ecDecrypterSigner) decryptKey(headers rawHeader, recipient *recipientInfo, generator keyGenerator) ([]byte, error) {\n\tepk, err := headers.getEPK()\n\tif err != nil {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid epk header\")\n\t}\n\tif epk == nil {\n\t\treturn nil, errors.New(\"go-jose/go-jose: missing epk header\")\n\t}\n\n\tpublicKey, ok := epk.Key.(*ecdsa.PublicKey)\n\tif publicKey == nil || !ok {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid epk header\")\n\t}\n\n\tif !ctx.privateKey.Curve.IsOnCurve(publicKey.X, publicKey.Y) {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid public key in epk header\")\n\t}\n\n\tapuData, err := headers.getAPU()\n\tif err != nil {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid apu header\")\n\t}\n\tapvData, err := headers.getAPV()\n\tif err != nil {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid apv header\")\n\t}\n\n\tderiveKey := func(algID string, size int) []byte {\n\t\treturn josecipher.DeriveECDHES(algID, apuData.bytes(), apvData.bytes(), ctx.privateKey, publicKey, size)\n\t}\n\n\tvar keySize int\n\n\talgorithm := headers.getAlgorithm()\n\tswitch algorithm {\n\tcase ECDH_ES:\n\t\t// ECDH-ES uses direct key agreement, no key unwrapping necessary.\n\t\treturn deriveKey(string(headers.getEncryption()), generator.keySize()), nil\n\tcase ECDH_ES_A128KW:\n\t\tkeySize = 16\n\tcase ECDH_ES_A192KW:\n\t\tkeySize = 24\n\tcase ECDH_ES_A256KW:\n\t\tkeySize = 32\n\tdefault:\n\t\treturn nil, ErrUnsupportedAlgorithm\n\t}\n\n\tkey := deriveKey(string(algorithm), keySize)\n\tblock, err := aes.NewCipher(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn josecipher.KeyUnwrap(block, recipient.encryptedKey)\n}\n\nfunc (ctx edDecrypterSigner) signPayload(payload []byte, alg SignatureAlgorithm) (Signature, error) {\n\tif alg != EdDSA {\n\t\treturn Signature{}, ErrUnsupportedAlgorithm\n\t}\n\n\tsig, err := ctx.privateKey.Sign(RandReader, payload, crypto.Hash(0))\n\tif err != nil {\n\t\treturn Signature{}, err\n\t}\n\n\treturn Signature{\n\t\tSignature: sig,\n\t\tprotected: &rawHeader{},\n\t}, nil\n}\n\nfunc (ctx edEncrypterVerifier) verifyPayload(payload []byte, signature []byte, alg SignatureAlgorithm) error {\n\tif alg != EdDSA {\n\t\treturn ErrUnsupportedAlgorithm\n\t}\n\tok := ed25519.Verify(ctx.publicKey, payload, signature)\n\tif !ok {\n\t\treturn errors.New(\"go-jose/go-jose: ed25519 signature failed to verify\")\n\t}\n\treturn nil\n}\n\n// Sign the given payload\nfunc (ctx ecDecrypterSigner) signPayload(payload []byte, alg SignatureAlgorithm) (Signature, error) {\n\tvar expectedBitSize int\n\tvar hash crypto.Hash\n\n\tswitch alg {\n\tcase ES256:\n\t\texpectedBitSize = 256\n\t\thash = crypto.SHA256\n\tcase ES384:\n\t\texpectedBitSize = 384\n\t\thash = crypto.SHA384\n\tcase ES512:\n\t\texpectedBitSize = 521\n\t\thash = crypto.SHA512\n\t}\n\n\tcurveBits := ctx.privateKey.Curve.Params().BitSize\n\tif expectedBitSize != curveBits {\n\t\treturn Signature{}, fmt.Errorf(\"go-jose/go-jose: expected %d bit key, got %d bits instead\", expectedBitSize, curveBits)\n\t}\n\n\thasher := hash.New()\n\n\t// According to documentation, Write() on hash never fails\n\t_, _ = hasher.Write(payload)\n\thashed := hasher.Sum(nil)\n\n\tr, s, err := ecdsa.Sign(RandReader, ctx.privateKey, hashed)\n\tif err != nil {\n\t\treturn Signature{}, err\n\t}\n\n\tkeyBytes := curveBits / 8\n\tif curveBits%8 > 0 {\n\t\tkeyBytes++\n\t}\n\n\t// We serialize the outputs (r and s) into big-endian byte arrays and pad\n\t// them with zeros on the left to make sure the sizes work out. Both arrays\n\t// must be keyBytes long, and the output must be 2*keyBytes long.\n\trBytes := r.Bytes()\n\trBytesPadded := make([]byte, keyBytes)\n\tcopy(rBytesPadded[keyBytes-len(rBytes):], rBytes)\n\n\tsBytes := s.Bytes()\n\tsBytesPadded := make([]byte, keyBytes)\n\tcopy(sBytesPadded[keyBytes-len(sBytes):], sBytes)\n\n\tout := append(rBytesPadded, sBytesPadded...)\n\n\treturn Signature{\n\t\tSignature: out,\n\t\tprotected: &rawHeader{},\n\t}, nil\n}\n\n// Verify the given payload\nfunc (ctx ecEncrypterVerifier) verifyPayload(payload []byte, signature []byte, alg SignatureAlgorithm) error {\n\tvar keySize int\n\tvar hash crypto.Hash\n\n\tswitch alg {\n\tcase ES256:\n\t\tkeySize = 32\n\t\thash = crypto.SHA256\n\tcase ES384:\n\t\tkeySize = 48\n\t\thash = crypto.SHA384\n\tcase ES512:\n\t\tkeySize = 66\n\t\thash = crypto.SHA512\n\tdefault:\n\t\treturn ErrUnsupportedAlgorithm\n\t}\n\n\tif len(signature) != 2*keySize {\n\t\treturn fmt.Errorf(\"go-jose/go-jose: invalid signature size, have %d bytes, wanted %d\", len(signature), 2*keySize)\n\t}\n\n\thasher := hash.New()\n\n\t// According to documentation, Write() on hash never fails\n\t_, _ = hasher.Write(payload)\n\thashed := hasher.Sum(nil)\n\n\tr := big.NewInt(0).SetBytes(signature[:keySize])\n\ts := big.NewInt(0).SetBytes(signature[keySize:])\n\n\tmatch := ecdsa.Verify(ctx.publicKey, hashed, r, s)\n\tif !match {\n\t\treturn errors.New(\"go-jose/go-jose: ecdsa signature failed to verify\")\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/cipher/cbc_hmac.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage josecipher\n\nimport (\n\t\"bytes\"\n\t\"crypto/cipher\"\n\t\"crypto/hmac\"\n\t\"crypto/sha256\"\n\t\"crypto/sha512\"\n\t\"crypto/subtle\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"hash\"\n)\n\nconst (\n\tnonceBytes = 16\n)\n\n// NewCBCHMAC instantiates a new AEAD based on CBC+HMAC.\nfunc NewCBCHMAC(key []byte, newBlockCipher func([]byte) (cipher.Block, error)) (cipher.AEAD, error) {\n\tkeySize := len(key) / 2\n\tintegrityKey := key[:keySize]\n\tencryptionKey := key[keySize:]\n\n\tblockCipher, err := newBlockCipher(encryptionKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar hash func() hash.Hash\n\tswitch keySize {\n\tcase 16:\n\t\thash = sha256.New\n\tcase 24:\n\t\thash = sha512.New384\n\tcase 32:\n\t\thash = sha512.New\n\t}\n\n\treturn &cbcAEAD{\n\t\thash:         hash,\n\t\tblockCipher:  blockCipher,\n\t\tauthtagBytes: keySize,\n\t\tintegrityKey: integrityKey,\n\t}, nil\n}\n\n// An AEAD based on CBC+HMAC\ntype cbcAEAD struct {\n\thash         func() hash.Hash\n\tauthtagBytes int\n\tintegrityKey []byte\n\tblockCipher  cipher.Block\n}\n\nfunc (ctx *cbcAEAD) NonceSize() int {\n\treturn nonceBytes\n}\n\nfunc (ctx *cbcAEAD) Overhead() int {\n\t// Maximum overhead is block size (for padding) plus auth tag length, where\n\t// the length of the auth tag is equivalent to the key size.\n\treturn ctx.blockCipher.BlockSize() + ctx.authtagBytes\n}\n\n// Seal encrypts and authenticates the plaintext.\nfunc (ctx *cbcAEAD) Seal(dst, nonce, plaintext, data []byte) []byte {\n\t// Output buffer -- must take care not to mangle plaintext input.\n\tciphertext := make([]byte, uint64(len(plaintext))+uint64(ctx.Overhead()))[:len(plaintext)]\n\tcopy(ciphertext, plaintext)\n\tciphertext = padBuffer(ciphertext, ctx.blockCipher.BlockSize())\n\n\tcbc := cipher.NewCBCEncrypter(ctx.blockCipher, nonce)\n\n\tcbc.CryptBlocks(ciphertext, ciphertext)\n\tauthtag := ctx.computeAuthTag(data, nonce, ciphertext)\n\n\tret, out := resize(dst, uint64(len(dst))+uint64(len(ciphertext))+uint64(len(authtag)))\n\tcopy(out, ciphertext)\n\tcopy(out[len(ciphertext):], authtag)\n\n\treturn ret\n}\n\n// Open decrypts and authenticates the ciphertext.\nfunc (ctx *cbcAEAD) Open(dst, nonce, ciphertext, data []byte) ([]byte, error) {\n\tif len(ciphertext) < ctx.authtagBytes {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid ciphertext (too short)\")\n\t}\n\n\toffset := len(ciphertext) - ctx.authtagBytes\n\texpectedTag := ctx.computeAuthTag(data, nonce, ciphertext[:offset])\n\tmatch := subtle.ConstantTimeCompare(expectedTag, ciphertext[offset:])\n\tif match != 1 {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid ciphertext (auth tag mismatch)\")\n\t}\n\n\tcbc := cipher.NewCBCDecrypter(ctx.blockCipher, nonce)\n\n\t// Make copy of ciphertext buffer, don't want to modify in place\n\tbuffer := append([]byte{}, ciphertext[:offset]...)\n\n\tif len(buffer)%ctx.blockCipher.BlockSize() > 0 {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid ciphertext (invalid length)\")\n\t}\n\n\tcbc.CryptBlocks(buffer, buffer)\n\n\t// Remove padding\n\tplaintext, err := unpadBuffer(buffer, ctx.blockCipher.BlockSize())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tret, out := resize(dst, uint64(len(dst))+uint64(len(plaintext)))\n\tcopy(out, plaintext)\n\n\treturn ret, nil\n}\n\n// Compute an authentication tag\nfunc (ctx *cbcAEAD) computeAuthTag(aad, nonce, ciphertext []byte) []byte {\n\tbuffer := make([]byte, uint64(len(aad))+uint64(len(nonce))+uint64(len(ciphertext))+8)\n\tn := 0\n\tn += copy(buffer, aad)\n\tn += copy(buffer[n:], nonce)\n\tn += copy(buffer[n:], ciphertext)\n\tbinary.BigEndian.PutUint64(buffer[n:], uint64(len(aad))*8)\n\n\t// According to documentation, Write() on hash.Hash never fails.\n\thmac := hmac.New(ctx.hash, ctx.integrityKey)\n\t_, _ = hmac.Write(buffer)\n\n\treturn hmac.Sum(nil)[:ctx.authtagBytes]\n}\n\n// resize ensures that the given slice has a capacity of at least n bytes.\n// If the capacity of the slice is less than n, a new slice is allocated\n// and the existing data will be copied.\nfunc resize(in []byte, n uint64) (head, tail []byte) {\n\tif uint64(cap(in)) >= n {\n\t\thead = in[:n]\n\t} else {\n\t\thead = make([]byte, n)\n\t\tcopy(head, in)\n\t}\n\n\ttail = head[len(in):]\n\treturn\n}\n\n// Apply padding\nfunc padBuffer(buffer []byte, blockSize int) []byte {\n\tmissing := blockSize - (len(buffer) % blockSize)\n\tret, out := resize(buffer, uint64(len(buffer))+uint64(missing))\n\tpadding := bytes.Repeat([]byte{byte(missing)}, missing)\n\tcopy(out, padding)\n\treturn ret\n}\n\n// Remove padding\nfunc unpadBuffer(buffer []byte, blockSize int) ([]byte, error) {\n\tif len(buffer)%blockSize != 0 {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid padding\")\n\t}\n\n\tlast := buffer[len(buffer)-1]\n\tcount := int(last)\n\n\tif count == 0 || count > blockSize || count > len(buffer) {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid padding\")\n\t}\n\n\tpadding := bytes.Repeat([]byte{last}, count)\n\tif !bytes.HasSuffix(buffer, padding) {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid padding\")\n\t}\n\n\treturn buffer[:len(buffer)-count], nil\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/cipher/concat_kdf.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage josecipher\n\nimport (\n\t\"crypto\"\n\t\"encoding/binary\"\n\t\"hash\"\n\t\"io\"\n)\n\ntype concatKDF struct {\n\tz, info []byte\n\ti       uint32\n\tcache   []byte\n\thasher  hash.Hash\n}\n\n// NewConcatKDF builds a KDF reader based on the given inputs.\nfunc NewConcatKDF(hash crypto.Hash, z, algID, ptyUInfo, ptyVInfo, supPubInfo, supPrivInfo []byte) io.Reader {\n\tbuffer := make([]byte, uint64(len(algID))+uint64(len(ptyUInfo))+uint64(len(ptyVInfo))+uint64(len(supPubInfo))+uint64(len(supPrivInfo)))\n\tn := 0\n\tn += copy(buffer, algID)\n\tn += copy(buffer[n:], ptyUInfo)\n\tn += copy(buffer[n:], ptyVInfo)\n\tn += copy(buffer[n:], supPubInfo)\n\tcopy(buffer[n:], supPrivInfo)\n\n\thasher := hash.New()\n\n\treturn &concatKDF{\n\t\tz:      z,\n\t\tinfo:   buffer,\n\t\thasher: hasher,\n\t\tcache:  []byte{},\n\t\ti:      1,\n\t}\n}\n\nfunc (ctx *concatKDF) Read(out []byte) (int, error) {\n\tcopied := copy(out, ctx.cache)\n\tctx.cache = ctx.cache[copied:]\n\n\tfor copied < len(out) {\n\t\tctx.hasher.Reset()\n\n\t\t// Write on a hash.Hash never fails\n\t\t_ = binary.Write(ctx.hasher, binary.BigEndian, ctx.i)\n\t\t_, _ = ctx.hasher.Write(ctx.z)\n\t\t_, _ = ctx.hasher.Write(ctx.info)\n\n\t\thash := ctx.hasher.Sum(nil)\n\t\tchunkCopied := copy(out[copied:], hash)\n\t\tcopied += chunkCopied\n\t\tctx.cache = hash[chunkCopied:]\n\n\t\tctx.i++\n\t}\n\n\treturn copied, nil\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/cipher/ecdh_es.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage josecipher\n\nimport (\n\t\"bytes\"\n\t\"crypto\"\n\t\"crypto/ecdsa\"\n\t\"crypto/elliptic\"\n\t\"encoding/binary\"\n)\n\n// DeriveECDHES derives a shared encryption key using ECDH/ConcatKDF as described in JWE/JWA.\n// It is an error to call this function with a private/public key that are not on the same\n// curve. Callers must ensure that the keys are valid before calling this function. Output\n// size may be at most 1<<16 bytes (64 KiB).\nfunc DeriveECDHES(alg string, apuData, apvData []byte, priv *ecdsa.PrivateKey, pub *ecdsa.PublicKey, size int) []byte {\n\tif size > 1<<16 {\n\t\tpanic(\"ECDH-ES output size too large, must be less than or equal to 1<<16\")\n\t}\n\n\t// algId, partyUInfo, partyVInfo inputs must be prefixed with the length\n\talgID := lengthPrefixed([]byte(alg))\n\tptyUInfo := lengthPrefixed(apuData)\n\tptyVInfo := lengthPrefixed(apvData)\n\n\t// suppPubInfo is the encoded length of the output size in bits\n\tsupPubInfo := make([]byte, 4)\n\tbinary.BigEndian.PutUint32(supPubInfo, uint32(size)*8)\n\n\tif !priv.PublicKey.Curve.IsOnCurve(pub.X, pub.Y) {\n\t\tpanic(\"public key not on same curve as private key\")\n\t}\n\n\tz, _ := priv.Curve.ScalarMult(pub.X, pub.Y, priv.D.Bytes())\n\tzBytes := z.Bytes()\n\n\t// Note that calling z.Bytes() on a big.Int may strip leading zero bytes from\n\t// the returned byte array. This can lead to a problem where zBytes will be\n\t// shorter than expected which breaks the key derivation. Therefore we must pad\n\t// to the full length of the expected coordinate here before calling the KDF.\n\toctSize := dSize(priv.Curve)\n\tif len(zBytes) != octSize {\n\t\tzBytes = append(bytes.Repeat([]byte{0}, octSize-len(zBytes)), zBytes...)\n\t}\n\n\treader := NewConcatKDF(crypto.SHA256, zBytes, algID, ptyUInfo, ptyVInfo, supPubInfo, []byte{})\n\tkey := make([]byte, size)\n\n\t// Read on the KDF will never fail\n\t_, _ = reader.Read(key)\n\n\treturn key\n}\n\n// dSize returns the size in octets for a coordinate on a elliptic curve.\nfunc dSize(curve elliptic.Curve) int {\n\torder := curve.Params().P\n\tbitLen := order.BitLen()\n\tsize := bitLen / 8\n\tif bitLen%8 != 0 {\n\t\tsize++\n\t}\n\treturn size\n}\n\nfunc lengthPrefixed(data []byte) []byte {\n\tout := make([]byte, len(data)+4)\n\tbinary.BigEndian.PutUint32(out, uint32(len(data)))\n\tcopy(out[4:], data)\n\treturn out\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/cipher/key_wrap.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage josecipher\n\nimport (\n\t\"crypto/cipher\"\n\t\"crypto/subtle\"\n\t\"encoding/binary\"\n\t\"errors\"\n)\n\nvar defaultIV = []byte{0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6}\n\n// KeyWrap implements NIST key wrapping; it wraps a content encryption key (cek) with the given block cipher.\nfunc KeyWrap(block cipher.Block, cek []byte) ([]byte, error) {\n\tif len(cek)%8 != 0 {\n\t\treturn nil, errors.New(\"go-jose/go-jose: key wrap input must be 8 byte blocks\")\n\t}\n\n\tn := len(cek) / 8\n\tr := make([][]byte, n)\n\n\tfor i := range r {\n\t\tr[i] = make([]byte, 8)\n\t\tcopy(r[i], cek[i*8:])\n\t}\n\n\tbuffer := make([]byte, 16)\n\ttBytes := make([]byte, 8)\n\tcopy(buffer, defaultIV)\n\n\tfor t := 0; t < 6*n; t++ {\n\t\tcopy(buffer[8:], r[t%n])\n\n\t\tblock.Encrypt(buffer, buffer)\n\n\t\tbinary.BigEndian.PutUint64(tBytes, uint64(t+1))\n\n\t\tfor i := 0; i < 8; i++ {\n\t\t\tbuffer[i] ^= tBytes[i]\n\t\t}\n\t\tcopy(r[t%n], buffer[8:])\n\t}\n\n\tout := make([]byte, (n+1)*8)\n\tcopy(out, buffer[:8])\n\tfor i := range r {\n\t\tcopy(out[(i+1)*8:], r[i])\n\t}\n\n\treturn out, nil\n}\n\n// KeyUnwrap implements NIST key unwrapping; it unwraps a content encryption key (cek) with the given block cipher.\nfunc KeyUnwrap(block cipher.Block, ciphertext []byte) ([]byte, error) {\n\tif len(ciphertext)%8 != 0 {\n\t\treturn nil, errors.New(\"go-jose/go-jose: key wrap input must be 8 byte blocks\")\n\t}\n\n\tn := (len(ciphertext) / 8) - 1\n\tr := make([][]byte, n)\n\n\tfor i := range r {\n\t\tr[i] = make([]byte, 8)\n\t\tcopy(r[i], ciphertext[(i+1)*8:])\n\t}\n\n\tbuffer := make([]byte, 16)\n\ttBytes := make([]byte, 8)\n\tcopy(buffer[:8], ciphertext[:8])\n\n\tfor t := 6*n - 1; t >= 0; t-- {\n\t\tbinary.BigEndian.PutUint64(tBytes, uint64(t+1))\n\n\t\tfor i := 0; i < 8; i++ {\n\t\t\tbuffer[i] ^= tBytes[i]\n\t\t}\n\t\tcopy(buffer[8:], r[t%n])\n\n\t\tblock.Decrypt(buffer, buffer)\n\n\t\tcopy(r[t%n], buffer[8:])\n\t}\n\n\tif subtle.ConstantTimeCompare(buffer[:8], defaultIV) == 0 {\n\t\treturn nil, errors.New(\"go-jose/go-jose: failed to unwrap key\")\n\t}\n\n\tout := make([]byte, n*8)\n\tfor i := range r {\n\t\tcopy(out[i*8:], r[i])\n\t}\n\n\treturn out, nil\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/crypter.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jose\n\nimport (\n\t\"crypto/ecdsa\"\n\t\"crypto/rsa\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/go-jose/go-jose/v3/json\"\n)\n\n// Encrypter represents an encrypter which produces an encrypted JWE object.\ntype Encrypter interface {\n\tEncrypt(plaintext []byte) (*JSONWebEncryption, error)\n\tEncryptWithAuthData(plaintext []byte, aad []byte) (*JSONWebEncryption, error)\n\tOptions() EncrypterOptions\n}\n\n// A generic content cipher\ntype contentCipher interface {\n\tkeySize() int\n\tencrypt(cek []byte, aad, plaintext []byte) (*aeadParts, error)\n\tdecrypt(cek []byte, aad []byte, parts *aeadParts) ([]byte, error)\n}\n\n// A key generator (for generating/getting a CEK)\ntype keyGenerator interface {\n\tkeySize() int\n\tgenKey() ([]byte, rawHeader, error)\n}\n\n// A generic key encrypter\ntype keyEncrypter interface {\n\tencryptKey(cek []byte, alg KeyAlgorithm) (recipientInfo, error) // Encrypt a key\n}\n\n// A generic key decrypter\ntype keyDecrypter interface {\n\tdecryptKey(headers rawHeader, recipient *recipientInfo, generator keyGenerator) ([]byte, error) // Decrypt a key\n}\n\n// A generic encrypter based on the given key encrypter and content cipher.\ntype genericEncrypter struct {\n\tcontentAlg     ContentEncryption\n\tcompressionAlg CompressionAlgorithm\n\tcipher         contentCipher\n\trecipients     []recipientKeyInfo\n\tkeyGenerator   keyGenerator\n\textraHeaders   map[HeaderKey]interface{}\n}\n\ntype recipientKeyInfo struct {\n\tkeyID        string\n\tkeyAlg       KeyAlgorithm\n\tkeyEncrypter keyEncrypter\n}\n\n// EncrypterOptions represents options that can be set on new encrypters.\ntype EncrypterOptions struct {\n\tCompression CompressionAlgorithm\n\n\t// Optional map of additional keys to be inserted into the protected header\n\t// of a JWS object. Some specifications which make use of JWS like to insert\n\t// additional values here. All values must be JSON-serializable.\n\tExtraHeaders map[HeaderKey]interface{}\n}\n\n// WithHeader adds an arbitrary value to the ExtraHeaders map, initializing it\n// if necessary. It returns itself and so can be used in a fluent style.\nfunc (eo *EncrypterOptions) WithHeader(k HeaderKey, v interface{}) *EncrypterOptions {\n\tif eo.ExtraHeaders == nil {\n\t\teo.ExtraHeaders = map[HeaderKey]interface{}{}\n\t}\n\teo.ExtraHeaders[k] = v\n\treturn eo\n}\n\n// WithContentType adds a content type (\"cty\") header and returns the updated\n// EncrypterOptions.\nfunc (eo *EncrypterOptions) WithContentType(contentType ContentType) *EncrypterOptions {\n\treturn eo.WithHeader(HeaderContentType, contentType)\n}\n\n// WithType adds a type (\"typ\") header and returns the updated EncrypterOptions.\nfunc (eo *EncrypterOptions) WithType(typ ContentType) *EncrypterOptions {\n\treturn eo.WithHeader(HeaderType, typ)\n}\n\n// Recipient represents an algorithm/key to encrypt messages to.\n//\n// PBES2Count and PBES2Salt correspond with the  \"p2c\" and \"p2s\" headers used\n// on the password-based encryption algorithms PBES2-HS256+A128KW,\n// PBES2-HS384+A192KW, and PBES2-HS512+A256KW. If they are not provided a safe\n// default of 100000 will be used for the count and a 128-bit random salt will\n// be generated.\ntype Recipient struct {\n\tAlgorithm  KeyAlgorithm\n\tKey        interface{}\n\tKeyID      string\n\tPBES2Count int\n\tPBES2Salt  []byte\n}\n\n// NewEncrypter creates an appropriate encrypter based on the key type\nfunc NewEncrypter(enc ContentEncryption, rcpt Recipient, opts *EncrypterOptions) (Encrypter, error) {\n\tencrypter := &genericEncrypter{\n\t\tcontentAlg: enc,\n\t\trecipients: []recipientKeyInfo{},\n\t\tcipher:     getContentCipher(enc),\n\t}\n\tif opts != nil {\n\t\tencrypter.compressionAlg = opts.Compression\n\t\tencrypter.extraHeaders = opts.ExtraHeaders\n\t}\n\n\tif encrypter.cipher == nil {\n\t\treturn nil, ErrUnsupportedAlgorithm\n\t}\n\n\tvar keyID string\n\tvar rawKey interface{}\n\tswitch encryptionKey := rcpt.Key.(type) {\n\tcase JSONWebKey:\n\t\tkeyID, rawKey = encryptionKey.KeyID, encryptionKey.Key\n\tcase *JSONWebKey:\n\t\tkeyID, rawKey = encryptionKey.KeyID, encryptionKey.Key\n\tcase OpaqueKeyEncrypter:\n\t\tkeyID, rawKey = encryptionKey.KeyID(), encryptionKey\n\tdefault:\n\t\trawKey = encryptionKey\n\t}\n\n\tswitch rcpt.Algorithm {\n\tcase DIRECT:\n\t\t// Direct encryption mode must be treated differently\n\t\tif reflect.TypeOf(rawKey) != reflect.TypeOf([]byte{}) {\n\t\t\treturn nil, ErrUnsupportedKeyType\n\t\t}\n\t\tif encrypter.cipher.keySize() != len(rawKey.([]byte)) {\n\t\t\treturn nil, ErrInvalidKeySize\n\t\t}\n\t\tencrypter.keyGenerator = staticKeyGenerator{\n\t\t\tkey: rawKey.([]byte),\n\t\t}\n\t\trecipientInfo, _ := newSymmetricRecipient(rcpt.Algorithm, rawKey.([]byte))\n\t\trecipientInfo.keyID = keyID\n\t\tif rcpt.KeyID != \"\" {\n\t\t\trecipientInfo.keyID = rcpt.KeyID\n\t\t}\n\t\tencrypter.recipients = []recipientKeyInfo{recipientInfo}\n\t\treturn encrypter, nil\n\tcase ECDH_ES:\n\t\t// ECDH-ES (w/o key wrapping) is similar to DIRECT mode\n\t\ttypeOf := reflect.TypeOf(rawKey)\n\t\tif typeOf != reflect.TypeOf(&ecdsa.PublicKey{}) {\n\t\t\treturn nil, ErrUnsupportedKeyType\n\t\t}\n\t\tencrypter.keyGenerator = ecKeyGenerator{\n\t\t\tsize:      encrypter.cipher.keySize(),\n\t\t\talgID:     string(enc),\n\t\t\tpublicKey: rawKey.(*ecdsa.PublicKey),\n\t\t}\n\t\trecipientInfo, _ := newECDHRecipient(rcpt.Algorithm, rawKey.(*ecdsa.PublicKey))\n\t\trecipientInfo.keyID = keyID\n\t\tif rcpt.KeyID != \"\" {\n\t\t\trecipientInfo.keyID = rcpt.KeyID\n\t\t}\n\t\tencrypter.recipients = []recipientKeyInfo{recipientInfo}\n\t\treturn encrypter, nil\n\tdefault:\n\t\t// Can just add a standard recipient\n\t\tencrypter.keyGenerator = randomKeyGenerator{\n\t\t\tsize: encrypter.cipher.keySize(),\n\t\t}\n\t\terr := encrypter.addRecipient(rcpt)\n\t\treturn encrypter, err\n\t}\n}\n\n// NewMultiEncrypter creates a multi-encrypter based on the given parameters\nfunc NewMultiEncrypter(enc ContentEncryption, rcpts []Recipient, opts *EncrypterOptions) (Encrypter, error) {\n\tcipher := getContentCipher(enc)\n\n\tif cipher == nil {\n\t\treturn nil, ErrUnsupportedAlgorithm\n\t}\n\tif len(rcpts) == 0 {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: recipients is nil or empty\")\n\t}\n\n\tencrypter := &genericEncrypter{\n\t\tcontentAlg: enc,\n\t\trecipients: []recipientKeyInfo{},\n\t\tcipher:     cipher,\n\t\tkeyGenerator: randomKeyGenerator{\n\t\t\tsize: cipher.keySize(),\n\t\t},\n\t}\n\n\tif opts != nil {\n\t\tencrypter.compressionAlg = opts.Compression\n\t\tencrypter.extraHeaders = opts.ExtraHeaders\n\t}\n\n\tfor _, recipient := range rcpts {\n\t\terr := encrypter.addRecipient(recipient)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn encrypter, nil\n}\n\nfunc (ctx *genericEncrypter) addRecipient(recipient Recipient) (err error) {\n\tvar recipientInfo recipientKeyInfo\n\n\tswitch recipient.Algorithm {\n\tcase DIRECT, ECDH_ES:\n\t\treturn fmt.Errorf(\"go-jose/go-jose: key algorithm '%s' not supported in multi-recipient mode\", recipient.Algorithm)\n\t}\n\n\trecipientInfo, err = makeJWERecipient(recipient.Algorithm, recipient.Key)\n\tif recipient.KeyID != \"\" {\n\t\trecipientInfo.keyID = recipient.KeyID\n\t}\n\n\tswitch recipient.Algorithm {\n\tcase PBES2_HS256_A128KW, PBES2_HS384_A192KW, PBES2_HS512_A256KW:\n\t\tif sr, ok := recipientInfo.keyEncrypter.(*symmetricKeyCipher); ok {\n\t\t\tsr.p2c = recipient.PBES2Count\n\t\t\tsr.p2s = recipient.PBES2Salt\n\t\t}\n\t}\n\n\tif err == nil {\n\t\tctx.recipients = append(ctx.recipients, recipientInfo)\n\t}\n\treturn err\n}\n\nfunc makeJWERecipient(alg KeyAlgorithm, encryptionKey interface{}) (recipientKeyInfo, error) {\n\tswitch encryptionKey := encryptionKey.(type) {\n\tcase *rsa.PublicKey:\n\t\treturn newRSARecipient(alg, encryptionKey)\n\tcase *ecdsa.PublicKey:\n\t\treturn newECDHRecipient(alg, encryptionKey)\n\tcase []byte:\n\t\treturn newSymmetricRecipient(alg, encryptionKey)\n\tcase string:\n\t\treturn newSymmetricRecipient(alg, []byte(encryptionKey))\n\tcase *JSONWebKey:\n\t\trecipient, err := makeJWERecipient(alg, encryptionKey.Key)\n\t\trecipient.keyID = encryptionKey.KeyID\n\t\treturn recipient, err\n\t}\n\tif encrypter, ok := encryptionKey.(OpaqueKeyEncrypter); ok {\n\t\treturn newOpaqueKeyEncrypter(alg, encrypter)\n\t}\n\treturn recipientKeyInfo{}, ErrUnsupportedKeyType\n}\n\n// newDecrypter creates an appropriate decrypter based on the key type\nfunc newDecrypter(decryptionKey interface{}) (keyDecrypter, error) {\n\tswitch decryptionKey := decryptionKey.(type) {\n\tcase *rsa.PrivateKey:\n\t\treturn &rsaDecrypterSigner{\n\t\t\tprivateKey: decryptionKey,\n\t\t}, nil\n\tcase *ecdsa.PrivateKey:\n\t\treturn &ecDecrypterSigner{\n\t\t\tprivateKey: decryptionKey,\n\t\t}, nil\n\tcase []byte:\n\t\treturn &symmetricKeyCipher{\n\t\t\tkey: decryptionKey,\n\t\t}, nil\n\tcase string:\n\t\treturn &symmetricKeyCipher{\n\t\t\tkey: []byte(decryptionKey),\n\t\t}, nil\n\tcase JSONWebKey:\n\t\treturn newDecrypter(decryptionKey.Key)\n\tcase *JSONWebKey:\n\t\treturn newDecrypter(decryptionKey.Key)\n\t}\n\tif okd, ok := decryptionKey.(OpaqueKeyDecrypter); ok {\n\t\treturn &opaqueKeyDecrypter{decrypter: okd}, nil\n\t}\n\treturn nil, ErrUnsupportedKeyType\n}\n\n// Implementation of encrypt method producing a JWE object.\nfunc (ctx *genericEncrypter) Encrypt(plaintext []byte) (*JSONWebEncryption, error) {\n\treturn ctx.EncryptWithAuthData(plaintext, nil)\n}\n\n// Implementation of encrypt method producing a JWE object.\nfunc (ctx *genericEncrypter) EncryptWithAuthData(plaintext, aad []byte) (*JSONWebEncryption, error) {\n\tobj := &JSONWebEncryption{}\n\tobj.aad = aad\n\n\tobj.protected = &rawHeader{}\n\terr := obj.protected.set(headerEncryption, ctx.contentAlg)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tobj.recipients = make([]recipientInfo, len(ctx.recipients))\n\n\tif len(ctx.recipients) == 0 {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: no recipients to encrypt to\")\n\t}\n\n\tcek, headers, err := ctx.keyGenerator.genKey()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tobj.protected.merge(&headers)\n\n\tfor i, info := range ctx.recipients {\n\t\trecipient, err := info.keyEncrypter.encryptKey(cek, info.keyAlg)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\terr = recipient.header.set(headerAlgorithm, info.keyAlg)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif info.keyID != \"\" {\n\t\t\terr = recipient.header.set(headerKeyID, info.keyID)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\tobj.recipients[i] = recipient\n\t}\n\n\tif len(ctx.recipients) == 1 {\n\t\t// Move per-recipient headers into main protected header if there's\n\t\t// only a single recipient.\n\t\tobj.protected.merge(obj.recipients[0].header)\n\t\tobj.recipients[0].header = nil\n\t}\n\n\tif ctx.compressionAlg != NONE {\n\t\tplaintext, err = compress(ctx.compressionAlg, plaintext)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\terr = obj.protected.set(headerCompression, ctx.compressionAlg)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tfor k, v := range ctx.extraHeaders {\n\t\tb, err := json.Marshal(v)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t(*obj.protected)[k] = makeRawMessage(b)\n\t}\n\n\tauthData := obj.computeAuthData()\n\tparts, err := ctx.cipher.encrypt(cek, authData, plaintext)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tobj.iv = parts.iv\n\tobj.ciphertext = parts.ciphertext\n\tobj.tag = parts.tag\n\n\treturn obj, nil\n}\n\nfunc (ctx *genericEncrypter) Options() EncrypterOptions {\n\treturn EncrypterOptions{\n\t\tCompression:  ctx.compressionAlg,\n\t\tExtraHeaders: ctx.extraHeaders,\n\t}\n}\n\n// Decrypt and validate the object and return the plaintext. Note that this\n// function does not support multi-recipient, if you desire multi-recipient\n// decryption use DecryptMulti instead.\nfunc (obj JSONWebEncryption) Decrypt(decryptionKey interface{}) ([]byte, error) {\n\theaders := obj.mergedHeaders(nil)\n\n\tif len(obj.recipients) > 1 {\n\t\treturn nil, errors.New(\"go-jose/go-jose: too many recipients in payload; expecting only one\")\n\t}\n\n\tcritical, err := headers.getCritical()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid crit header\")\n\t}\n\n\tif len(critical) > 0 {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: unsupported crit header\")\n\t}\n\n\tkey := tryJWKS(decryptionKey, obj.Header)\n\tdecrypter, err := newDecrypter(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcipher := getContentCipher(headers.getEncryption())\n\tif cipher == nil {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: unsupported enc value '%s'\", string(headers.getEncryption()))\n\t}\n\n\tgenerator := randomKeyGenerator{\n\t\tsize: cipher.keySize(),\n\t}\n\n\tparts := &aeadParts{\n\t\tiv:         obj.iv,\n\t\tciphertext: obj.ciphertext,\n\t\ttag:        obj.tag,\n\t}\n\n\tauthData := obj.computeAuthData()\n\n\tvar plaintext []byte\n\trecipient := obj.recipients[0]\n\trecipientHeaders := obj.mergedHeaders(&recipient)\n\n\tcek, err := decrypter.decryptKey(recipientHeaders, &recipient, generator)\n\tif err == nil {\n\t\t// Found a valid CEK -- let's try to decrypt.\n\t\tplaintext, err = cipher.decrypt(cek, authData, parts)\n\t}\n\n\tif plaintext == nil {\n\t\treturn nil, ErrCryptoFailure\n\t}\n\n\t// The \"zip\" header parameter may only be present in the protected header.\n\tif comp := obj.protected.getCompression(); comp != \"\" {\n\t\tplaintext, err = decompress(comp, plaintext)\n\t}\n\n\treturn plaintext, err\n}\n\n// DecryptMulti decrypts and validates the object and returns the plaintexts,\n// with support for multiple recipients. It returns the index of the recipient\n// for which the decryption was successful, the merged headers for that recipient,\n// and the plaintext.\nfunc (obj JSONWebEncryption) DecryptMulti(decryptionKey interface{}) (int, Header, []byte, error) {\n\tglobalHeaders := obj.mergedHeaders(nil)\n\n\tcritical, err := globalHeaders.getCritical()\n\tif err != nil {\n\t\treturn -1, Header{}, nil, fmt.Errorf(\"go-jose/go-jose: invalid crit header\")\n\t}\n\n\tif len(critical) > 0 {\n\t\treturn -1, Header{}, nil, fmt.Errorf(\"go-jose/go-jose: unsupported crit header\")\n\t}\n\n\tkey := tryJWKS(decryptionKey, obj.Header)\n\tdecrypter, err := newDecrypter(key)\n\tif err != nil {\n\t\treturn -1, Header{}, nil, err\n\t}\n\n\tencryption := globalHeaders.getEncryption()\n\tcipher := getContentCipher(encryption)\n\tif cipher == nil {\n\t\treturn -1, Header{}, nil, fmt.Errorf(\"go-jose/go-jose: unsupported enc value '%s'\", string(encryption))\n\t}\n\n\tgenerator := randomKeyGenerator{\n\t\tsize: cipher.keySize(),\n\t}\n\n\tparts := &aeadParts{\n\t\tiv:         obj.iv,\n\t\tciphertext: obj.ciphertext,\n\t\ttag:        obj.tag,\n\t}\n\n\tauthData := obj.computeAuthData()\n\n\tindex := -1\n\tvar plaintext []byte\n\tvar headers rawHeader\n\n\tfor i, recipient := range obj.recipients {\n\t\trecipientHeaders := obj.mergedHeaders(&recipient)\n\n\t\tcek, err := decrypter.decryptKey(recipientHeaders, &recipient, generator)\n\t\tif err == nil {\n\t\t\t// Found a valid CEK -- let's try to decrypt.\n\t\t\tplaintext, err = cipher.decrypt(cek, authData, parts)\n\t\t\tif err == nil {\n\t\t\t\tindex = i\n\t\t\t\theaders = recipientHeaders\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tif plaintext == nil {\n\t\treturn -1, Header{}, nil, ErrCryptoFailure\n\t}\n\n\t// The \"zip\" header parameter may only be present in the protected header.\n\tif comp := obj.protected.getCompression(); comp != \"\" {\n\t\tplaintext, _ = decompress(comp, plaintext)\n\t}\n\n\tsanitized, err := headers.sanitized()\n\tif err != nil {\n\t\treturn -1, Header{}, nil, fmt.Errorf(\"go-jose/go-jose: failed to sanitize header: %v\", err)\n\t}\n\n\treturn index, sanitized, plaintext, err\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/doc.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n\nPackage jose aims to provide an implementation of the Javascript Object Signing\nand Encryption set of standards. It implements encryption and signing based on\nthe JSON Web Encryption and JSON Web Signature standards, with optional JSON Web\nToken support available in a sub-package. The library supports both the compact\nand JWS/JWE JSON Serialization formats, and has optional support for multiple\nrecipients.\n\n*/\npackage jose\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/encoding.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jose\n\nimport (\n\t\"bytes\"\n\t\"compress/flate\"\n\t\"encoding/base64\"\n\t\"encoding/binary\"\n\t\"io\"\n\t\"math/big\"\n\t\"strings\"\n\t\"unicode\"\n\n\t\"github.com/go-jose/go-jose/v3/json\"\n)\n\n// Helper function to serialize known-good objects.\n// Precondition: value is not a nil pointer.\nfunc mustSerializeJSON(value interface{}) []byte {\n\tout, err := json.Marshal(value)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\t// We never want to serialize the top-level value \"null,\" since it's not a\n\t// valid JOSE message. But if a caller passes in a nil pointer to this method,\n\t// MarshalJSON will happily serialize it as the top-level value \"null\". If\n\t// that value is then embedded in another operation, for instance by being\n\t// base64-encoded and fed as input to a signing algorithm\n\t// (https://github.com/go-jose/go-jose/issues/22), the result will be\n\t// incorrect. Because this method is intended for known-good objects, and a nil\n\t// pointer is not a known-good object, we are free to panic in this case.\n\t// Note: It's not possible to directly check whether the data pointed at by an\n\t// interface is a nil pointer, so we do this hacky workaround.\n\t// https://groups.google.com/forum/#!topic/golang-nuts/wnH302gBa4I\n\tif string(out) == \"null\" {\n\t\tpanic(\"Tried to serialize a nil pointer.\")\n\t}\n\treturn out\n}\n\n// Strip all newlines and whitespace\nfunc stripWhitespace(data string) string {\n\tbuf := strings.Builder{}\n\tbuf.Grow(len(data))\n\tfor _, r := range data {\n\t\tif !unicode.IsSpace(r) {\n\t\t\tbuf.WriteRune(r)\n\t\t}\n\t}\n\treturn buf.String()\n}\n\n// Perform compression based on algorithm\nfunc compress(algorithm CompressionAlgorithm, input []byte) ([]byte, error) {\n\tswitch algorithm {\n\tcase DEFLATE:\n\t\treturn deflate(input)\n\tdefault:\n\t\treturn nil, ErrUnsupportedAlgorithm\n\t}\n}\n\n// Perform decompression based on algorithm\nfunc decompress(algorithm CompressionAlgorithm, input []byte) ([]byte, error) {\n\tswitch algorithm {\n\tcase DEFLATE:\n\t\treturn inflate(input)\n\tdefault:\n\t\treturn nil, ErrUnsupportedAlgorithm\n\t}\n}\n\n// Compress with DEFLATE\nfunc deflate(input []byte) ([]byte, error) {\n\toutput := new(bytes.Buffer)\n\n\t// Writing to byte buffer, err is always nil\n\twriter, _ := flate.NewWriter(output, 1)\n\t_, _ = io.Copy(writer, bytes.NewBuffer(input))\n\n\terr := writer.Close()\n\treturn output.Bytes(), err\n}\n\n// Decompress with DEFLATE\nfunc inflate(input []byte) ([]byte, error) {\n\toutput := new(bytes.Buffer)\n\treader := flate.NewReader(bytes.NewBuffer(input))\n\n\t_, err := io.Copy(output, reader)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = reader.Close()\n\treturn output.Bytes(), err\n}\n\n// byteBuffer represents a slice of bytes that can be serialized to url-safe base64.\ntype byteBuffer struct {\n\tdata []byte\n}\n\nfunc newBuffer(data []byte) *byteBuffer {\n\tif data == nil {\n\t\treturn nil\n\t}\n\treturn &byteBuffer{\n\t\tdata: data,\n\t}\n}\n\nfunc newFixedSizeBuffer(data []byte, length int) *byteBuffer {\n\tif len(data) > length {\n\t\tpanic(\"go-jose/go-jose: invalid call to newFixedSizeBuffer (len(data) > length)\")\n\t}\n\tpad := make([]byte, length-len(data))\n\treturn newBuffer(append(pad, data...))\n}\n\nfunc newBufferFromInt(num uint64) *byteBuffer {\n\tdata := make([]byte, 8)\n\tbinary.BigEndian.PutUint64(data, num)\n\treturn newBuffer(bytes.TrimLeft(data, \"\\x00\"))\n}\n\nfunc (b *byteBuffer) MarshalJSON() ([]byte, error) {\n\treturn json.Marshal(b.base64())\n}\n\nfunc (b *byteBuffer) UnmarshalJSON(data []byte) error {\n\tvar encoded string\n\terr := json.Unmarshal(data, &encoded)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif encoded == \"\" {\n\t\treturn nil\n\t}\n\n\tdecoded, err := base64URLDecode(encoded)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t*b = *newBuffer(decoded)\n\n\treturn nil\n}\n\nfunc (b *byteBuffer) base64() string {\n\treturn base64.RawURLEncoding.EncodeToString(b.data)\n}\n\nfunc (b *byteBuffer) bytes() []byte {\n\t// Handling nil here allows us to transparently handle nil slices when serializing.\n\tif b == nil {\n\t\treturn nil\n\t}\n\treturn b.data\n}\n\nfunc (b byteBuffer) bigInt() *big.Int {\n\treturn new(big.Int).SetBytes(b.data)\n}\n\nfunc (b byteBuffer) toInt() int {\n\treturn int(b.bigInt().Int64())\n}\n\n// base64URLDecode is implemented as defined in https://www.rfc-editor.org/rfc/rfc7515.html#appendix-C\nfunc base64URLDecode(value string) ([]byte, error) {\n\tvalue = strings.TrimRight(value, \"=\")\n\treturn base64.RawURLEncoding.DecodeString(value)\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/json/LICENSE",
    "content": "Copyright (c) 2012 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/json/README.md",
    "content": "# Safe JSON\n\nThis repository contains a fork of the `encoding/json` package from Go 1.6.\n\nThe following changes were made:\n\n* Object deserialization uses case-sensitive member name matching instead of\n  [case-insensitive matching](https://www.ietf.org/mail-archive/web/json/current/msg03763.html).\n  This is to avoid differences in the interpretation of JOSE messages between\n  go-jose and libraries written in other languages.\n* When deserializing a JSON object, we check for duplicate keys and reject the\n  input whenever we detect a duplicate. Rather than trying to work with malformed\n  data, we prefer to reject it right away.\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/json/decode.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// Represents JSON data structure using native Go types: booleans, floats,\n// strings, arrays, and maps.\n\npackage json\n\nimport (\n\t\"bytes\"\n\t\"encoding\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"unicode\"\n\t\"unicode/utf16\"\n\t\"unicode/utf8\"\n)\n\n// Unmarshal parses the JSON-encoded data and stores the result\n// in the value pointed to by v.\n//\n// Unmarshal uses the inverse of the encodings that\n// Marshal uses, allocating maps, slices, and pointers as necessary,\n// with the following additional rules:\n//\n// To unmarshal JSON into a pointer, Unmarshal first handles the case of\n// the JSON being the JSON literal null.  In that case, Unmarshal sets\n// the pointer to nil.  Otherwise, Unmarshal unmarshals the JSON into\n// the value pointed at by the pointer.  If the pointer is nil, Unmarshal\n// allocates a new value for it to point to.\n//\n// To unmarshal JSON into a struct, Unmarshal matches incoming object\n// keys to the keys used by Marshal (either the struct field name or its tag),\n// preferring an exact match but also accepting a case-insensitive match.\n// Unmarshal will only set exported fields of the struct.\n//\n// To unmarshal JSON into an interface value,\n// Unmarshal stores one of these in the interface value:\n//\n//\tbool, for JSON booleans\n//\tfloat64, for JSON numbers\n//\tstring, for JSON strings\n//\t[]interface{}, for JSON arrays\n//\tmap[string]interface{}, for JSON objects\n//\tnil for JSON null\n//\n// To unmarshal a JSON array into a slice, Unmarshal resets the slice length\n// to zero and then appends each element to the slice.\n// As a special case, to unmarshal an empty JSON array into a slice,\n// Unmarshal replaces the slice with a new empty slice.\n//\n// To unmarshal a JSON array into a Go array, Unmarshal decodes\n// JSON array elements into corresponding Go array elements.\n// If the Go array is smaller than the JSON array,\n// the additional JSON array elements are discarded.\n// If the JSON array is smaller than the Go array,\n// the additional Go array elements are set to zero values.\n//\n// To unmarshal a JSON object into a string-keyed map, Unmarshal first\n// establishes a map to use, If the map is nil, Unmarshal allocates a new map.\n// Otherwise Unmarshal reuses the existing map, keeping existing entries.\n// Unmarshal then stores key-value pairs from the JSON object into the map.\n//\n// If a JSON value is not appropriate for a given target type,\n// or if a JSON number overflows the target type, Unmarshal\n// skips that field and completes the unmarshaling as best it can.\n// If no more serious errors are encountered, Unmarshal returns\n// an UnmarshalTypeError describing the earliest such error.\n//\n// The JSON null value unmarshals into an interface, map, pointer, or slice\n// by setting that Go value to nil. Because null is often used in JSON to mean\n// ``not present,'' unmarshaling a JSON null into any other Go type has no effect\n// on the value and produces no error.\n//\n// When unmarshaling quoted strings, invalid UTF-8 or\n// invalid UTF-16 surrogate pairs are not treated as an error.\n// Instead, they are replaced by the Unicode replacement\n// character U+FFFD.\n//\nfunc Unmarshal(data []byte, v interface{}) error {\n\t// Check for well-formedness.\n\t// Avoids filling out half a data structure\n\t// before discovering a JSON syntax error.\n\tvar d decodeState\n\terr := checkValid(data, &d.scan)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\td.init(data)\n\treturn d.unmarshal(v)\n}\n\n// Unmarshaler is the interface implemented by objects\n// that can unmarshal a JSON description of themselves.\n// The input can be assumed to be a valid encoding of\n// a JSON value. UnmarshalJSON must copy the JSON data\n// if it wishes to retain the data after returning.\ntype Unmarshaler interface {\n\tUnmarshalJSON([]byte) error\n}\n\n// An UnmarshalTypeError describes a JSON value that was\n// not appropriate for a value of a specific Go type.\ntype UnmarshalTypeError struct {\n\tValue  string       // description of JSON value - \"bool\", \"array\", \"number -5\"\n\tType   reflect.Type // type of Go value it could not be assigned to\n\tOffset int64        // error occurred after reading Offset bytes\n}\n\nfunc (e *UnmarshalTypeError) Error() string {\n\treturn \"json: cannot unmarshal \" + e.Value + \" into Go value of type \" + e.Type.String()\n}\n\n// An UnmarshalFieldError describes a JSON object key that\n// led to an unexported (and therefore unwritable) struct field.\n// (No longer used; kept for compatibility.)\ntype UnmarshalFieldError struct {\n\tKey   string\n\tType  reflect.Type\n\tField reflect.StructField\n}\n\nfunc (e *UnmarshalFieldError) Error() string {\n\treturn \"json: cannot unmarshal object key \" + strconv.Quote(e.Key) + \" into unexported field \" + e.Field.Name + \" of type \" + e.Type.String()\n}\n\n// An InvalidUnmarshalError describes an invalid argument passed to Unmarshal.\n// (The argument to Unmarshal must be a non-nil pointer.)\ntype InvalidUnmarshalError struct {\n\tType reflect.Type\n}\n\nfunc (e *InvalidUnmarshalError) Error() string {\n\tif e.Type == nil {\n\t\treturn \"json: Unmarshal(nil)\"\n\t}\n\n\tif e.Type.Kind() != reflect.Ptr {\n\t\treturn \"json: Unmarshal(non-pointer \" + e.Type.String() + \")\"\n\t}\n\treturn \"json: Unmarshal(nil \" + e.Type.String() + \")\"\n}\n\nfunc (d *decodeState) unmarshal(v interface{}) (err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tif _, ok := r.(runtime.Error); ok {\n\t\t\t\tpanic(r)\n\t\t\t}\n\t\t\terr = r.(error)\n\t\t}\n\t}()\n\n\trv := reflect.ValueOf(v)\n\tif rv.Kind() != reflect.Ptr || rv.IsNil() {\n\t\treturn &InvalidUnmarshalError{reflect.TypeOf(v)}\n\t}\n\n\td.scan.reset()\n\t// We decode rv not rv.Elem because the Unmarshaler interface\n\t// test must be applied at the top level of the value.\n\td.value(rv)\n\treturn d.savedError\n}\n\n// A Number represents a JSON number literal.\ntype Number string\n\n// String returns the literal text of the number.\nfunc (n Number) String() string { return string(n) }\n\n// Float64 returns the number as a float64.\nfunc (n Number) Float64() (float64, error) {\n\treturn strconv.ParseFloat(string(n), 64)\n}\n\n// Int64 returns the number as an int64.\nfunc (n Number) Int64() (int64, error) {\n\treturn strconv.ParseInt(string(n), 10, 64)\n}\n\n// isValidNumber reports whether s is a valid JSON number literal.\nfunc isValidNumber(s string) bool {\n\t// This function implements the JSON numbers grammar.\n\t// See https://tools.ietf.org/html/rfc7159#section-6\n\t// and http://json.org/number.gif\n\n\tif s == \"\" {\n\t\treturn false\n\t}\n\n\t// Optional -\n\tif s[0] == '-' {\n\t\ts = s[1:]\n\t\tif s == \"\" {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Digits\n\tswitch {\n\tdefault:\n\t\treturn false\n\n\tcase s[0] == '0':\n\t\ts = s[1:]\n\n\tcase '1' <= s[0] && s[0] <= '9':\n\t\ts = s[1:]\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t}\n\t}\n\n\t// . followed by 1 or more digits.\n\tif len(s) >= 2 && s[0] == '.' && '0' <= s[1] && s[1] <= '9' {\n\t\ts = s[2:]\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t}\n\t}\n\n\t// e or E followed by an optional - or + and\n\t// 1 or more digits.\n\tif len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') {\n\t\ts = s[1:]\n\t\tif s[0] == '+' || s[0] == '-' {\n\t\t\ts = s[1:]\n\t\t\tif s == \"\" {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t}\n\t}\n\n\t// Make sure we are at the end.\n\treturn s == \"\"\n}\n\ntype NumberUnmarshalType int\n\nconst (\n\t// unmarshal a JSON number into an interface{} as a float64\n\tUnmarshalFloat NumberUnmarshalType = iota\n\t// unmarshal a JSON number into an interface{} as a `json.Number`\n\tUnmarshalJSONNumber\n\t// unmarshal a JSON number into an interface{} as a int64\n\t// if value is an integer otherwise float64\n\tUnmarshalIntOrFloat\n)\n\n// decodeState represents the state while decoding a JSON value.\ntype decodeState struct {\n\tdata       []byte\n\toff        int // read offset in data\n\tscan       scanner\n\tnextscan   scanner // for calls to nextValue\n\tsavedError error\n\tnumberType NumberUnmarshalType\n}\n\n// errPhase is used for errors that should not happen unless\n// there is a bug in the JSON decoder or something is editing\n// the data slice while the decoder executes.\nvar errPhase = errors.New(\"JSON decoder out of sync - data changing underfoot?\")\n\nfunc (d *decodeState) init(data []byte) *decodeState {\n\td.data = data\n\td.off = 0\n\td.savedError = nil\n\treturn d\n}\n\n// error aborts the decoding by panicking with err.\nfunc (d *decodeState) error(err error) {\n\tpanic(err)\n}\n\n// saveError saves the first err it is called with,\n// for reporting at the end of the unmarshal.\nfunc (d *decodeState) saveError(err error) {\n\tif d.savedError == nil {\n\t\td.savedError = err\n\t}\n}\n\n// next cuts off and returns the next full JSON value in d.data[d.off:].\n// The next value is known to be an object or array, not a literal.\nfunc (d *decodeState) next() []byte {\n\tc := d.data[d.off]\n\titem, rest, err := nextValue(d.data[d.off:], &d.nextscan)\n\tif err != nil {\n\t\td.error(err)\n\t}\n\td.off = len(d.data) - len(rest)\n\n\t// Our scanner has seen the opening brace/bracket\n\t// and thinks we're still in the middle of the object.\n\t// invent a closing brace/bracket to get it out.\n\tif c == '{' {\n\t\td.scan.step(&d.scan, '}')\n\t} else {\n\t\td.scan.step(&d.scan, ']')\n\t}\n\n\treturn item\n}\n\n// scanWhile processes bytes in d.data[d.off:] until it\n// receives a scan code not equal to op.\n// It updates d.off and returns the new scan code.\nfunc (d *decodeState) scanWhile(op int) int {\n\tvar newOp int\n\tfor {\n\t\tif d.off >= len(d.data) {\n\t\t\tnewOp = d.scan.eof()\n\t\t\td.off = len(d.data) + 1 // mark processed EOF with len+1\n\t\t} else {\n\t\t\tc := d.data[d.off]\n\t\t\td.off++\n\t\t\tnewOp = d.scan.step(&d.scan, c)\n\t\t}\n\t\tif newOp != op {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn newOp\n}\n\n// value decodes a JSON value from d.data[d.off:] into the value.\n// it updates d.off to point past the decoded value.\nfunc (d *decodeState) value(v reflect.Value) {\n\tif !v.IsValid() {\n\t\t_, rest, err := nextValue(d.data[d.off:], &d.nextscan)\n\t\tif err != nil {\n\t\t\td.error(err)\n\t\t}\n\t\td.off = len(d.data) - len(rest)\n\n\t\t// d.scan thinks we're still at the beginning of the item.\n\t\t// Feed in an empty string - the shortest, simplest value -\n\t\t// so that it knows we got to the end of the value.\n\t\tif d.scan.redo {\n\t\t\t// rewind.\n\t\t\td.scan.redo = false\n\t\t\td.scan.step = stateBeginValue\n\t\t}\n\t\td.scan.step(&d.scan, '\"')\n\t\td.scan.step(&d.scan, '\"')\n\n\t\tn := len(d.scan.parseState)\n\t\tif n > 0 && d.scan.parseState[n-1] == parseObjectKey {\n\t\t\t// d.scan thinks we just read an object key; finish the object\n\t\t\td.scan.step(&d.scan, ':')\n\t\t\td.scan.step(&d.scan, '\"')\n\t\t\td.scan.step(&d.scan, '\"')\n\t\t\td.scan.step(&d.scan, '}')\n\t\t}\n\n\t\treturn\n\t}\n\n\tswitch op := d.scanWhile(scanSkipSpace); op {\n\tdefault:\n\t\td.error(errPhase)\n\n\tcase scanBeginArray:\n\t\td.array(v)\n\n\tcase scanBeginObject:\n\t\td.object(v)\n\n\tcase scanBeginLiteral:\n\t\td.literal(v)\n\t}\n}\n\ntype unquotedValue struct{}\n\n// valueQuoted is like value but decodes a\n// quoted string literal or literal null into an interface value.\n// If it finds anything other than a quoted string literal or null,\n// valueQuoted returns unquotedValue{}.\nfunc (d *decodeState) valueQuoted() interface{} {\n\tswitch op := d.scanWhile(scanSkipSpace); op {\n\tdefault:\n\t\td.error(errPhase)\n\n\tcase scanBeginArray:\n\t\td.array(reflect.Value{})\n\n\tcase scanBeginObject:\n\t\td.object(reflect.Value{})\n\n\tcase scanBeginLiteral:\n\t\tswitch v := d.literalInterface().(type) {\n\t\tcase nil, string:\n\t\t\treturn v\n\t\t}\n\t}\n\treturn unquotedValue{}\n}\n\n// indirect walks down v allocating pointers as needed,\n// until it gets to a non-pointer.\n// if it encounters an Unmarshaler, indirect stops and returns that.\n// if decodingNull is true, indirect stops at the last pointer so it can be set to nil.\nfunc (d *decodeState) indirect(v reflect.Value, decodingNull bool) (Unmarshaler, encoding.TextUnmarshaler, reflect.Value) {\n\t// If v is a named type and is addressable,\n\t// start with its address, so that if the type has pointer methods,\n\t// we find them.\n\tif v.Kind() != reflect.Ptr && v.Type().Name() != \"\" && v.CanAddr() {\n\t\tv = v.Addr()\n\t}\n\tfor {\n\t\t// Load value from interface, but only if the result will be\n\t\t// usefully addressable.\n\t\tif v.Kind() == reflect.Interface && !v.IsNil() {\n\t\t\te := v.Elem()\n\t\t\tif e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) {\n\t\t\t\tv = e\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif v.Kind() != reflect.Ptr {\n\t\t\tbreak\n\t\t}\n\n\t\tif v.Elem().Kind() != reflect.Ptr && decodingNull && v.CanSet() {\n\t\t\tbreak\n\t\t}\n\t\tif v.IsNil() {\n\t\t\tv.Set(reflect.New(v.Type().Elem()))\n\t\t}\n\t\tif v.Type().NumMethod() > 0 {\n\t\t\tif u, ok := v.Interface().(Unmarshaler); ok {\n\t\t\t\treturn u, nil, reflect.Value{}\n\t\t\t}\n\t\t\tif u, ok := v.Interface().(encoding.TextUnmarshaler); ok {\n\t\t\t\treturn nil, u, reflect.Value{}\n\t\t\t}\n\t\t}\n\t\tv = v.Elem()\n\t}\n\treturn nil, nil, v\n}\n\n// array consumes an array from d.data[d.off-1:], decoding into the value v.\n// the first byte of the array ('[') has been read already.\nfunc (d *decodeState) array(v reflect.Value) {\n\t// Check for unmarshaler.\n\tu, ut, pv := d.indirect(v, false)\n\tif u != nil {\n\t\td.off--\n\t\terr := u.UnmarshalJSON(d.next())\n\t\tif err != nil {\n\t\t\td.error(err)\n\t\t}\n\t\treturn\n\t}\n\tif ut != nil {\n\t\td.saveError(&UnmarshalTypeError{\"array\", v.Type(), int64(d.off)})\n\t\td.off--\n\t\td.next()\n\t\treturn\n\t}\n\n\tv = pv\n\n\t// Check type of target.\n\tswitch v.Kind() {\n\tcase reflect.Interface:\n\t\tif v.NumMethod() == 0 {\n\t\t\t// Decoding into nil interface?  Switch to non-reflect code.\n\t\t\tv.Set(reflect.ValueOf(d.arrayInterface()))\n\t\t\treturn\n\t\t}\n\t\t// Otherwise it's invalid.\n\t\tfallthrough\n\tdefault:\n\t\td.saveError(&UnmarshalTypeError{\"array\", v.Type(), int64(d.off)})\n\t\td.off--\n\t\td.next()\n\t\treturn\n\tcase reflect.Array:\n\tcase reflect.Slice:\n\t\tbreak\n\t}\n\n\ti := 0\n\tfor {\n\t\t// Look ahead for ] - can only happen on first iteration.\n\t\top := d.scanWhile(scanSkipSpace)\n\t\tif op == scanEndArray {\n\t\t\tbreak\n\t\t}\n\n\t\t// Back up so d.value can have the byte we just read.\n\t\td.off--\n\t\td.scan.undo(op)\n\n\t\t// Get element of array, growing if necessary.\n\t\tif v.Kind() == reflect.Slice {\n\t\t\t// Grow slice if necessary\n\t\t\tif i >= v.Cap() {\n\t\t\t\tnewcap := v.Cap() + v.Cap()/2\n\t\t\t\tif newcap < 4 {\n\t\t\t\t\tnewcap = 4\n\t\t\t\t}\n\t\t\t\tnewv := reflect.MakeSlice(v.Type(), v.Len(), newcap)\n\t\t\t\treflect.Copy(newv, v)\n\t\t\t\tv.Set(newv)\n\t\t\t}\n\t\t\tif i >= v.Len() {\n\t\t\t\tv.SetLen(i + 1)\n\t\t\t}\n\t\t}\n\n\t\tif i < v.Len() {\n\t\t\t// Decode into element.\n\t\t\td.value(v.Index(i))\n\t\t} else {\n\t\t\t// Ran out of fixed array: skip.\n\t\t\td.value(reflect.Value{})\n\t\t}\n\t\ti++\n\n\t\t// Next token must be , or ].\n\t\top = d.scanWhile(scanSkipSpace)\n\t\tif op == scanEndArray {\n\t\t\tbreak\n\t\t}\n\t\tif op != scanArrayValue {\n\t\t\td.error(errPhase)\n\t\t}\n\t}\n\n\tif i < v.Len() {\n\t\tif v.Kind() == reflect.Array {\n\t\t\t// Array.  Zero the rest.\n\t\t\tz := reflect.Zero(v.Type().Elem())\n\t\t\tfor ; i < v.Len(); i++ {\n\t\t\t\tv.Index(i).Set(z)\n\t\t\t}\n\t\t} else {\n\t\t\tv.SetLen(i)\n\t\t}\n\t}\n\tif i == 0 && v.Kind() == reflect.Slice {\n\t\tv.Set(reflect.MakeSlice(v.Type(), 0, 0))\n\t}\n}\n\nvar nullLiteral = []byte(\"null\")\n\n// object consumes an object from d.data[d.off-1:], decoding into the value v.\n// the first byte ('{') of the object has been read already.\nfunc (d *decodeState) object(v reflect.Value) {\n\t// Check for unmarshaler.\n\tu, ut, pv := d.indirect(v, false)\n\tif u != nil {\n\t\td.off--\n\t\terr := u.UnmarshalJSON(d.next())\n\t\tif err != nil {\n\t\t\td.error(err)\n\t\t}\n\t\treturn\n\t}\n\tif ut != nil {\n\t\td.saveError(&UnmarshalTypeError{\"object\", v.Type(), int64(d.off)})\n\t\td.off--\n\t\td.next() // skip over { } in input\n\t\treturn\n\t}\n\tv = pv\n\n\t// Decoding into nil interface?  Switch to non-reflect code.\n\tif v.Kind() == reflect.Interface && v.NumMethod() == 0 {\n\t\tv.Set(reflect.ValueOf(d.objectInterface()))\n\t\treturn\n\t}\n\n\t// Check type of target: struct or map[string]T\n\tswitch v.Kind() {\n\tcase reflect.Map:\n\t\t// map must have string kind\n\t\tt := v.Type()\n\t\tif t.Key().Kind() != reflect.String {\n\t\t\td.saveError(&UnmarshalTypeError{\"object\", v.Type(), int64(d.off)})\n\t\t\td.off--\n\t\t\td.next() // skip over { } in input\n\t\t\treturn\n\t\t}\n\t\tif v.IsNil() {\n\t\t\tv.Set(reflect.MakeMap(t))\n\t\t}\n\tcase reflect.Struct:\n\n\tdefault:\n\t\td.saveError(&UnmarshalTypeError{\"object\", v.Type(), int64(d.off)})\n\t\td.off--\n\t\td.next() // skip over { } in input\n\t\treturn\n\t}\n\n\tvar mapElem reflect.Value\n\tkeys := map[string]bool{}\n\n\tfor {\n\t\t// Read opening \" of string key or closing }.\n\t\top := d.scanWhile(scanSkipSpace)\n\t\tif op == scanEndObject {\n\t\t\t// closing } - can only happen on first iteration.\n\t\t\tbreak\n\t\t}\n\t\tif op != scanBeginLiteral {\n\t\t\td.error(errPhase)\n\t\t}\n\n\t\t// Read key.\n\t\tstart := d.off - 1\n\t\top = d.scanWhile(scanContinue)\n\t\titem := d.data[start : d.off-1]\n\t\tkey, ok := unquote(item)\n\t\tif !ok {\n\t\t\td.error(errPhase)\n\t\t}\n\n\t\t// Check for duplicate keys.\n\t\t_, ok = keys[key]\n\t\tif !ok {\n\t\t\tkeys[key] = true\n\t\t} else {\n\t\t\td.error(fmt.Errorf(\"json: duplicate key '%s' in object\", key))\n\t\t}\n\n\t\t// Figure out field corresponding to key.\n\t\tvar subv reflect.Value\n\t\tdestring := false // whether the value is wrapped in a string to be decoded first\n\n\t\tif v.Kind() == reflect.Map {\n\t\t\telemType := v.Type().Elem()\n\t\t\tif !mapElem.IsValid() {\n\t\t\t\tmapElem = reflect.New(elemType).Elem()\n\t\t\t} else {\n\t\t\t\tmapElem.Set(reflect.Zero(elemType))\n\t\t\t}\n\t\t\tsubv = mapElem\n\t\t} else {\n\t\t\tvar f *field\n\t\t\tfields := cachedTypeFields(v.Type())\n\t\t\tfor i := range fields {\n\t\t\t\tff := &fields[i]\n\t\t\t\tif bytes.Equal(ff.nameBytes, []byte(key)) {\n\t\t\t\t\tf = ff\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif f != nil {\n\t\t\t\tsubv = v\n\t\t\t\tdestring = f.quoted\n\t\t\t\tfor _, i := range f.index {\n\t\t\t\t\tif subv.Kind() == reflect.Ptr {\n\t\t\t\t\t\tif subv.IsNil() {\n\t\t\t\t\t\t\tsubv.Set(reflect.New(subv.Type().Elem()))\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsubv = subv.Elem()\n\t\t\t\t\t}\n\t\t\t\t\tsubv = subv.Field(i)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Read : before value.\n\t\tif op == scanSkipSpace {\n\t\t\top = d.scanWhile(scanSkipSpace)\n\t\t}\n\t\tif op != scanObjectKey {\n\t\t\td.error(errPhase)\n\t\t}\n\n\t\t// Read value.\n\t\tif destring {\n\t\t\tswitch qv := d.valueQuoted().(type) {\n\t\t\tcase nil:\n\t\t\t\td.literalStore(nullLiteral, subv, false)\n\t\t\tcase string:\n\t\t\t\td.literalStore([]byte(qv), subv, true)\n\t\t\tdefault:\n\t\t\t\td.saveError(fmt.Errorf(\"json: invalid use of ,string struct tag, trying to unmarshal unquoted value into %v\", subv.Type()))\n\t\t\t}\n\t\t} else {\n\t\t\td.value(subv)\n\t\t}\n\n\t\t// Write value back to map;\n\t\t// if using struct, subv points into struct already.\n\t\tif v.Kind() == reflect.Map {\n\t\t\tkv := reflect.ValueOf(key).Convert(v.Type().Key())\n\t\t\tv.SetMapIndex(kv, subv)\n\t\t}\n\n\t\t// Next token must be , or }.\n\t\top = d.scanWhile(scanSkipSpace)\n\t\tif op == scanEndObject {\n\t\t\tbreak\n\t\t}\n\t\tif op != scanObjectValue {\n\t\t\td.error(errPhase)\n\t\t}\n\t}\n}\n\n// literal consumes a literal from d.data[d.off-1:], decoding into the value v.\n// The first byte of the literal has been read already\n// (that's how the caller knows it's a literal).\nfunc (d *decodeState) literal(v reflect.Value) {\n\t// All bytes inside literal return scanContinue op code.\n\tstart := d.off - 1\n\top := d.scanWhile(scanContinue)\n\n\t// Scan read one byte too far; back up.\n\td.off--\n\td.scan.undo(op)\n\n\td.literalStore(d.data[start:d.off], v, false)\n}\n\n// convertNumber converts the number literal s to a float64, int64 or a Number\n// depending on d.numberDecodeType.\nfunc (d *decodeState) convertNumber(s string) (interface{}, error) {\n\tswitch d.numberType {\n\n\tcase UnmarshalJSONNumber:\n\t\treturn Number(s), nil\n\tcase UnmarshalIntOrFloat:\n\t\tv, err := strconv.ParseInt(s, 10, 64)\n\t\tif err == nil {\n\t\t\treturn v, nil\n\t\t}\n\n\t\t// tries to parse integer number in scientific notation\n\t\tf, err := strconv.ParseFloat(s, 64)\n\t\tif err != nil {\n\t\t\treturn nil, &UnmarshalTypeError{\"number \" + s, reflect.TypeOf(0.0), int64(d.off)}\n\t\t}\n\n\t\t// if it has no decimal value use int64\n\t\tif fi, fd := math.Modf(f); fd == 0.0 {\n\t\t\treturn int64(fi), nil\n\t\t}\n\t\treturn f, nil\n\tdefault:\n\t\tf, err := strconv.ParseFloat(s, 64)\n\t\tif err != nil {\n\t\t\treturn nil, &UnmarshalTypeError{\"number \" + s, reflect.TypeOf(0.0), int64(d.off)}\n\t\t}\n\t\treturn f, nil\n\t}\n\n}\n\nvar numberType = reflect.TypeOf(Number(\"\"))\n\n// literalStore decodes a literal stored in item into v.\n//\n// fromQuoted indicates whether this literal came from unwrapping a\n// string from the \",string\" struct tag option. this is used only to\n// produce more helpful error messages.\nfunc (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool) {\n\t// Check for unmarshaler.\n\tif len(item) == 0 {\n\t\t//Empty string given\n\t\td.saveError(fmt.Errorf(\"json: invalid use of ,string struct tag, trying to unmarshal %q into %v\", item, v.Type()))\n\t\treturn\n\t}\n\twantptr := item[0] == 'n' // null\n\tu, ut, pv := d.indirect(v, wantptr)\n\tif u != nil {\n\t\terr := u.UnmarshalJSON(item)\n\t\tif err != nil {\n\t\t\td.error(err)\n\t\t}\n\t\treturn\n\t}\n\tif ut != nil {\n\t\tif item[0] != '\"' {\n\t\t\tif fromQuoted {\n\t\t\t\td.saveError(fmt.Errorf(\"json: invalid use of ,string struct tag, trying to unmarshal %q into %v\", item, v.Type()))\n\t\t\t} else {\n\t\t\t\td.saveError(&UnmarshalTypeError{\"string\", v.Type(), int64(d.off)})\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\ts, ok := unquoteBytes(item)\n\t\tif !ok {\n\t\t\tif fromQuoted {\n\t\t\t\td.error(fmt.Errorf(\"json: invalid use of ,string struct tag, trying to unmarshal %q into %v\", item, v.Type()))\n\t\t\t} else {\n\t\t\t\td.error(errPhase)\n\t\t\t}\n\t\t}\n\t\terr := ut.UnmarshalText(s)\n\t\tif err != nil {\n\t\t\td.error(err)\n\t\t}\n\t\treturn\n\t}\n\n\tv = pv\n\n\tswitch c := item[0]; c {\n\tcase 'n': // null\n\t\tswitch v.Kind() {\n\t\tcase reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice:\n\t\t\tv.Set(reflect.Zero(v.Type()))\n\t\t\t// otherwise, ignore null for primitives/string\n\t\t}\n\tcase 't', 'f': // true, false\n\t\tvalue := c == 't'\n\t\tswitch v.Kind() {\n\t\tdefault:\n\t\t\tif fromQuoted {\n\t\t\t\td.saveError(fmt.Errorf(\"json: invalid use of ,string struct tag, trying to unmarshal %q into %v\", item, v.Type()))\n\t\t\t} else {\n\t\t\t\td.saveError(&UnmarshalTypeError{\"bool\", v.Type(), int64(d.off)})\n\t\t\t}\n\t\tcase reflect.Bool:\n\t\t\tv.SetBool(value)\n\t\tcase reflect.Interface:\n\t\t\tif v.NumMethod() == 0 {\n\t\t\t\tv.Set(reflect.ValueOf(value))\n\t\t\t} else {\n\t\t\t\td.saveError(&UnmarshalTypeError{\"bool\", v.Type(), int64(d.off)})\n\t\t\t}\n\t\t}\n\n\tcase '\"': // string\n\t\ts, ok := unquoteBytes(item)\n\t\tif !ok {\n\t\t\tif fromQuoted {\n\t\t\t\td.error(fmt.Errorf(\"json: invalid use of ,string struct tag, trying to unmarshal %q into %v\", item, v.Type()))\n\t\t\t} else {\n\t\t\t\td.error(errPhase)\n\t\t\t}\n\t\t}\n\t\tswitch v.Kind() {\n\t\tdefault:\n\t\t\td.saveError(&UnmarshalTypeError{\"string\", v.Type(), int64(d.off)})\n\t\tcase reflect.Slice:\n\t\t\tif v.Type().Elem().Kind() != reflect.Uint8 {\n\t\t\t\td.saveError(&UnmarshalTypeError{\"string\", v.Type(), int64(d.off)})\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tb := make([]byte, base64.StdEncoding.DecodedLen(len(s)))\n\t\t\tn, err := base64.StdEncoding.Decode(b, s)\n\t\t\tif err != nil {\n\t\t\t\td.saveError(err)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv.SetBytes(b[:n])\n\t\tcase reflect.String:\n\t\t\tv.SetString(string(s))\n\t\tcase reflect.Interface:\n\t\t\tif v.NumMethod() == 0 {\n\t\t\t\tv.Set(reflect.ValueOf(string(s)))\n\t\t\t} else {\n\t\t\t\td.saveError(&UnmarshalTypeError{\"string\", v.Type(), int64(d.off)})\n\t\t\t}\n\t\t}\n\n\tdefault: // number\n\t\tif c != '-' && (c < '0' || c > '9') {\n\t\t\tif fromQuoted {\n\t\t\t\td.error(fmt.Errorf(\"json: invalid use of ,string struct tag, trying to unmarshal %q into %v\", item, v.Type()))\n\t\t\t} else {\n\t\t\t\td.error(errPhase)\n\t\t\t}\n\t\t}\n\t\ts := string(item)\n\t\tswitch v.Kind() {\n\t\tdefault:\n\t\t\tif v.Kind() == reflect.String && v.Type() == numberType {\n\t\t\t\tv.SetString(s)\n\t\t\t\tif !isValidNumber(s) {\n\t\t\t\t\td.error(fmt.Errorf(\"json: invalid number literal, trying to unmarshal %q into Number\", item))\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif fromQuoted {\n\t\t\t\td.error(fmt.Errorf(\"json: invalid use of ,string struct tag, trying to unmarshal %q into %v\", item, v.Type()))\n\t\t\t} else {\n\t\t\t\td.error(&UnmarshalTypeError{\"number\", v.Type(), int64(d.off)})\n\t\t\t}\n\t\tcase reflect.Interface:\n\t\t\tn, err := d.convertNumber(s)\n\t\t\tif err != nil {\n\t\t\t\td.saveError(err)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif v.NumMethod() != 0 {\n\t\t\t\td.saveError(&UnmarshalTypeError{\"number\", v.Type(), int64(d.off)})\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv.Set(reflect.ValueOf(n))\n\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\tn, err := strconv.ParseInt(s, 10, 64)\n\t\t\tif err != nil || v.OverflowInt(n) {\n\t\t\t\td.saveError(&UnmarshalTypeError{\"number \" + s, v.Type(), int64(d.off)})\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv.SetInt(n)\n\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\tn, err := strconv.ParseUint(s, 10, 64)\n\t\t\tif err != nil || v.OverflowUint(n) {\n\t\t\t\td.saveError(&UnmarshalTypeError{\"number \" + s, v.Type(), int64(d.off)})\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv.SetUint(n)\n\n\t\tcase reflect.Float32, reflect.Float64:\n\t\t\tn, err := strconv.ParseFloat(s, v.Type().Bits())\n\t\t\tif err != nil || v.OverflowFloat(n) {\n\t\t\t\td.saveError(&UnmarshalTypeError{\"number \" + s, v.Type(), int64(d.off)})\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv.SetFloat(n)\n\t\t}\n\t}\n}\n\n// The xxxInterface routines build up a value to be stored\n// in an empty interface.  They are not strictly necessary,\n// but they avoid the weight of reflection in this common case.\n\n// valueInterface is like value but returns interface{}\nfunc (d *decodeState) valueInterface() interface{} {\n\tswitch d.scanWhile(scanSkipSpace) {\n\tdefault:\n\t\td.error(errPhase)\n\t\tpanic(\"unreachable\")\n\tcase scanBeginArray:\n\t\treturn d.arrayInterface()\n\tcase scanBeginObject:\n\t\treturn d.objectInterface()\n\tcase scanBeginLiteral:\n\t\treturn d.literalInterface()\n\t}\n}\n\n// arrayInterface is like array but returns []interface{}.\nfunc (d *decodeState) arrayInterface() []interface{} {\n\tvar v = make([]interface{}, 0)\n\tfor {\n\t\t// Look ahead for ] - can only happen on first iteration.\n\t\top := d.scanWhile(scanSkipSpace)\n\t\tif op == scanEndArray {\n\t\t\tbreak\n\t\t}\n\n\t\t// Back up so d.value can have the byte we just read.\n\t\td.off--\n\t\td.scan.undo(op)\n\n\t\tv = append(v, d.valueInterface())\n\n\t\t// Next token must be , or ].\n\t\top = d.scanWhile(scanSkipSpace)\n\t\tif op == scanEndArray {\n\t\t\tbreak\n\t\t}\n\t\tif op != scanArrayValue {\n\t\t\td.error(errPhase)\n\t\t}\n\t}\n\treturn v\n}\n\n// objectInterface is like object but returns map[string]interface{}.\nfunc (d *decodeState) objectInterface() map[string]interface{} {\n\tm := make(map[string]interface{})\n\tkeys := map[string]bool{}\n\n\tfor {\n\t\t// Read opening \" of string key or closing }.\n\t\top := d.scanWhile(scanSkipSpace)\n\t\tif op == scanEndObject {\n\t\t\t// closing } - can only happen on first iteration.\n\t\t\tbreak\n\t\t}\n\t\tif op != scanBeginLiteral {\n\t\t\td.error(errPhase)\n\t\t}\n\n\t\t// Read string key.\n\t\tstart := d.off - 1\n\t\top = d.scanWhile(scanContinue)\n\t\titem := d.data[start : d.off-1]\n\t\tkey, ok := unquote(item)\n\t\tif !ok {\n\t\t\td.error(errPhase)\n\t\t}\n\n\t\t// Check for duplicate keys.\n\t\t_, ok = keys[key]\n\t\tif !ok {\n\t\t\tkeys[key] = true\n\t\t} else {\n\t\t\td.error(fmt.Errorf(\"json: duplicate key '%s' in object\", key))\n\t\t}\n\n\t\t// Read : before value.\n\t\tif op == scanSkipSpace {\n\t\t\top = d.scanWhile(scanSkipSpace)\n\t\t}\n\t\tif op != scanObjectKey {\n\t\t\td.error(errPhase)\n\t\t}\n\n\t\t// Read value.\n\t\tm[key] = d.valueInterface()\n\n\t\t// Next token must be , or }.\n\t\top = d.scanWhile(scanSkipSpace)\n\t\tif op == scanEndObject {\n\t\t\tbreak\n\t\t}\n\t\tif op != scanObjectValue {\n\t\t\td.error(errPhase)\n\t\t}\n\t}\n\treturn m\n}\n\n// literalInterface is like literal but returns an interface value.\nfunc (d *decodeState) literalInterface() interface{} {\n\t// All bytes inside literal return scanContinue op code.\n\tstart := d.off - 1\n\top := d.scanWhile(scanContinue)\n\n\t// Scan read one byte too far; back up.\n\td.off--\n\td.scan.undo(op)\n\titem := d.data[start:d.off]\n\n\tswitch c := item[0]; c {\n\tcase 'n': // null\n\t\treturn nil\n\n\tcase 't', 'f': // true, false\n\t\treturn c == 't'\n\n\tcase '\"': // string\n\t\ts, ok := unquote(item)\n\t\tif !ok {\n\t\t\td.error(errPhase)\n\t\t}\n\t\treturn s\n\n\tdefault: // number\n\t\tif c != '-' && (c < '0' || c > '9') {\n\t\t\td.error(errPhase)\n\t\t}\n\t\tn, err := d.convertNumber(string(item))\n\t\tif err != nil {\n\t\t\td.saveError(err)\n\t\t}\n\t\treturn n\n\t}\n}\n\n// getu4 decodes \\uXXXX from the beginning of s, returning the hex value,\n// or it returns -1.\nfunc getu4(s []byte) rune {\n\tif len(s) < 6 || s[0] != '\\\\' || s[1] != 'u' {\n\t\treturn -1\n\t}\n\tr, err := strconv.ParseUint(string(s[2:6]), 16, 64)\n\tif err != nil {\n\t\treturn -1\n\t}\n\treturn rune(r)\n}\n\n// unquote converts a quoted JSON string literal s into an actual string t.\n// The rules are different than for Go, so cannot use strconv.Unquote.\nfunc unquote(s []byte) (t string, ok bool) {\n\ts, ok = unquoteBytes(s)\n\tt = string(s)\n\treturn\n}\n\nfunc unquoteBytes(s []byte) (t []byte, ok bool) {\n\tif len(s) < 2 || s[0] != '\"' || s[len(s)-1] != '\"' {\n\t\treturn\n\t}\n\ts = s[1 : len(s)-1]\n\n\t// Check for unusual characters. If there are none,\n\t// then no unquoting is needed, so return a slice of the\n\t// original bytes.\n\tr := 0\n\tfor r < len(s) {\n\t\tc := s[r]\n\t\tif c == '\\\\' || c == '\"' || c < ' ' {\n\t\t\tbreak\n\t\t}\n\t\tif c < utf8.RuneSelf {\n\t\t\tr++\n\t\t\tcontinue\n\t\t}\n\t\trr, size := utf8.DecodeRune(s[r:])\n\t\tif rr == utf8.RuneError && size == 1 {\n\t\t\tbreak\n\t\t}\n\t\tr += size\n\t}\n\tif r == len(s) {\n\t\treturn s, true\n\t}\n\n\tb := make([]byte, len(s)+2*utf8.UTFMax)\n\tw := copy(b, s[0:r])\n\tfor r < len(s) {\n\t\t// Out of room?  Can only happen if s is full of\n\t\t// malformed UTF-8 and we're replacing each\n\t\t// byte with RuneError.\n\t\tif w >= len(b)-2*utf8.UTFMax {\n\t\t\tnb := make([]byte, (len(b)+utf8.UTFMax)*2)\n\t\t\tcopy(nb, b[0:w])\n\t\t\tb = nb\n\t\t}\n\t\tswitch c := s[r]; {\n\t\tcase c == '\\\\':\n\t\t\tr++\n\t\t\tif r >= len(s) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tswitch s[r] {\n\t\t\tdefault:\n\t\t\t\treturn\n\t\t\tcase '\"', '\\\\', '/', '\\'':\n\t\t\t\tb[w] = s[r]\n\t\t\t\tr++\n\t\t\t\tw++\n\t\t\tcase 'b':\n\t\t\t\tb[w] = '\\b'\n\t\t\t\tr++\n\t\t\t\tw++\n\t\t\tcase 'f':\n\t\t\t\tb[w] = '\\f'\n\t\t\t\tr++\n\t\t\t\tw++\n\t\t\tcase 'n':\n\t\t\t\tb[w] = '\\n'\n\t\t\t\tr++\n\t\t\t\tw++\n\t\t\tcase 'r':\n\t\t\t\tb[w] = '\\r'\n\t\t\t\tr++\n\t\t\t\tw++\n\t\t\tcase 't':\n\t\t\t\tb[w] = '\\t'\n\t\t\t\tr++\n\t\t\t\tw++\n\t\t\tcase 'u':\n\t\t\t\tr--\n\t\t\t\trr := getu4(s[r:])\n\t\t\t\tif rr < 0 {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tr += 6\n\t\t\t\tif utf16.IsSurrogate(rr) {\n\t\t\t\t\trr1 := getu4(s[r:])\n\t\t\t\t\tif dec := utf16.DecodeRune(rr, rr1); dec != unicode.ReplacementChar {\n\t\t\t\t\t\t// A valid pair; consume.\n\t\t\t\t\t\tr += 6\n\t\t\t\t\t\tw += utf8.EncodeRune(b[w:], dec)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// Invalid surrogate; fall back to replacement rune.\n\t\t\t\t\trr = unicode.ReplacementChar\n\t\t\t\t}\n\t\t\t\tw += utf8.EncodeRune(b[w:], rr)\n\t\t\t}\n\n\t\t// Quote, control characters are invalid.\n\t\tcase c == '\"', c < ' ':\n\t\t\treturn\n\n\t\t// ASCII\n\t\tcase c < utf8.RuneSelf:\n\t\t\tb[w] = c\n\t\t\tr++\n\t\t\tw++\n\n\t\t// Coerce to well-formed UTF-8.\n\t\tdefault:\n\t\t\trr, size := utf8.DecodeRune(s[r:])\n\t\t\tr += size\n\t\t\tw += utf8.EncodeRune(b[w:], rr)\n\t\t}\n\t}\n\treturn b[0:w], true\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/json/encode.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 json implements encoding and decoding of JSON objects as defined in\n// RFC 4627. The mapping between JSON objects and Go values is described\n// in the documentation for the Marshal and Unmarshal functions.\n//\n// See \"JSON and Go\" for an introduction to this package:\n// https://golang.org/doc/articles/json_and_go.html\npackage json\n\nimport (\n\t\"bytes\"\n\t\"encoding\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n)\n\n// Marshal returns the JSON encoding of v.\n//\n// Marshal traverses the value v recursively.\n// If an encountered value implements the Marshaler interface\n// and is not a nil pointer, Marshal calls its MarshalJSON method\n// to produce JSON. If no MarshalJSON method is present but the\n// value implements encoding.TextMarshaler instead, Marshal calls\n// its MarshalText method.\n// The nil pointer exception is not strictly necessary\n// but mimics a similar, necessary exception in the behavior of\n// UnmarshalJSON.\n//\n// Otherwise, Marshal uses the following type-dependent default encodings:\n//\n// Boolean values encode as JSON booleans.\n//\n// Floating point, integer, and Number values encode as JSON numbers.\n//\n// String values encode as JSON strings coerced to valid UTF-8,\n// replacing invalid bytes with the Unicode replacement rune.\n// The angle brackets \"<\" and \">\" are escaped to \"\\u003c\" and \"\\u003e\"\n// to keep some browsers from misinterpreting JSON output as HTML.\n// Ampersand \"&\" is also escaped to \"\\u0026\" for the same reason.\n//\n// Array and slice values encode as JSON arrays, except that\n// []byte encodes as a base64-encoded string, and a nil slice\n// encodes as the null JSON object.\n//\n// Struct values encode as JSON objects. Each exported struct field\n// becomes a member of the object unless\n//   - the field's tag is \"-\", or\n//   - the field is empty and its tag specifies the \"omitempty\" option.\n// The empty values are false, 0, any\n// nil pointer or interface value, and any array, slice, map, or string of\n// length zero. The object's default key string is the struct field name\n// but can be specified in the struct field's tag value. The \"json\" key in\n// the struct field's tag value is the key name, followed by an optional comma\n// and options. Examples:\n//\n//   // Field is ignored by this package.\n//   Field int `json:\"-\"`\n//\n//   // Field appears in JSON as key \"myName\".\n//   Field int `json:\"myName\"`\n//\n//   // Field appears in JSON as key \"myName\" and\n//   // the field is omitted from the object if its value is empty,\n//   // as defined above.\n//   Field int `json:\"myName,omitempty\"`\n//\n//   // Field appears in JSON as key \"Field\" (the default), but\n//   // the field is skipped if empty.\n//   // Note the leading comma.\n//   Field int `json:\",omitempty\"`\n//\n// The \"string\" option signals that a field is stored as JSON inside a\n// JSON-encoded string. It applies only to fields of string, floating point,\n// integer, or boolean types. This extra level of encoding is sometimes used\n// when communicating with JavaScript programs:\n//\n//    Int64String int64 `json:\",string\"`\n//\n// The key name will be used if it's a non-empty string consisting of\n// only Unicode letters, digits, dollar signs, percent signs, hyphens,\n// underscores and slashes.\n//\n// Anonymous struct fields are usually marshaled as if their inner exported fields\n// were fields in the outer struct, subject to the usual Go visibility rules amended\n// as described in the next paragraph.\n// An anonymous struct field with a name given in its JSON tag is treated as\n// having that name, rather than being anonymous.\n// An anonymous struct field of interface type is treated the same as having\n// that type as its name, rather than being anonymous.\n//\n// The Go visibility rules for struct fields are amended for JSON when\n// deciding which field to marshal or unmarshal. If there are\n// multiple fields at the same level, and that level is the least\n// nested (and would therefore be the nesting level selected by the\n// usual Go rules), the following extra rules apply:\n//\n// 1) Of those fields, if any are JSON-tagged, only tagged fields are considered,\n// even if there are multiple untagged fields that would otherwise conflict.\n// 2) If there is exactly one field (tagged or not according to the first rule), that is selected.\n// 3) Otherwise there are multiple fields, and all are ignored; no error occurs.\n//\n// Handling of anonymous struct fields is new in Go 1.1.\n// Prior to Go 1.1, anonymous struct fields were ignored. To force ignoring of\n// an anonymous struct field in both current and earlier versions, give the field\n// a JSON tag of \"-\".\n//\n// Map values encode as JSON objects.\n// The map's key type must be string; the map keys are used as JSON object\n// keys, subject to the UTF-8 coercion described for string values above.\n//\n// Pointer values encode as the value pointed to.\n// A nil pointer encodes as the null JSON object.\n//\n// Interface values encode as the value contained in the interface.\n// A nil interface value encodes as the null JSON object.\n//\n// Channel, complex, and function values cannot be encoded in JSON.\n// Attempting to encode such a value causes Marshal to return\n// an UnsupportedTypeError.\n//\n// JSON cannot represent cyclic data structures and Marshal does not\n// handle them.  Passing cyclic structures to Marshal will result in\n// an infinite recursion.\n//\nfunc Marshal(v interface{}) ([]byte, error) {\n\te := &encodeState{}\n\terr := e.marshal(v)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn e.Bytes(), nil\n}\n\n// MarshalIndent is like Marshal but applies Indent to format the output.\nfunc MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) {\n\tb, err := Marshal(v)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar buf bytes.Buffer\n\terr = Indent(&buf, b, prefix, indent)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf.Bytes(), nil\n}\n\n// HTMLEscape appends to dst the JSON-encoded src with <, >, &, U+2028 and U+2029\n// characters inside string literals changed to \\u003c, \\u003e, \\u0026, \\u2028, \\u2029\n// so that the JSON will be safe to embed inside HTML <script> tags.\n// For historical reasons, web browsers don't honor standard HTML\n// escaping within <script> tags, so an alternative JSON encoding must\n// be used.\nfunc HTMLEscape(dst *bytes.Buffer, src []byte) {\n\t// The characters can only appear in string literals,\n\t// so just scan the string one byte at a time.\n\tstart := 0\n\tfor i, c := range src {\n\t\tif c == '<' || c == '>' || c == '&' {\n\t\t\tif start < i {\n\t\t\t\tdst.Write(src[start:i])\n\t\t\t}\n\t\t\tdst.WriteString(`\\u00`)\n\t\t\tdst.WriteByte(hex[c>>4])\n\t\t\tdst.WriteByte(hex[c&0xF])\n\t\t\tstart = i + 1\n\t\t}\n\t\t// Convert U+2028 and U+2029 (E2 80 A8 and E2 80 A9).\n\t\tif c == 0xE2 && i+2 < len(src) && src[i+1] == 0x80 && src[i+2]&^1 == 0xA8 {\n\t\t\tif start < i {\n\t\t\t\tdst.Write(src[start:i])\n\t\t\t}\n\t\t\tdst.WriteString(`\\u202`)\n\t\t\tdst.WriteByte(hex[src[i+2]&0xF])\n\t\t\tstart = i + 3\n\t\t}\n\t}\n\tif start < len(src) {\n\t\tdst.Write(src[start:])\n\t}\n}\n\n// Marshaler is the interface implemented by objects that\n// can marshal themselves into valid JSON.\ntype Marshaler interface {\n\tMarshalJSON() ([]byte, error)\n}\n\n// An UnsupportedTypeError is returned by Marshal when attempting\n// to encode an unsupported value type.\ntype UnsupportedTypeError struct {\n\tType reflect.Type\n}\n\nfunc (e *UnsupportedTypeError) Error() string {\n\treturn \"json: unsupported type: \" + e.Type.String()\n}\n\ntype UnsupportedValueError struct {\n\tValue reflect.Value\n\tStr   string\n}\n\nfunc (e *UnsupportedValueError) Error() string {\n\treturn \"json: unsupported value: \" + e.Str\n}\n\n// Before Go 1.2, an InvalidUTF8Error was returned by Marshal when\n// attempting to encode a string value with invalid UTF-8 sequences.\n// As of Go 1.2, Marshal instead coerces the string to valid UTF-8 by\n// replacing invalid bytes with the Unicode replacement rune U+FFFD.\n// This error is no longer generated but is kept for backwards compatibility\n// with programs that might mention it.\ntype InvalidUTF8Error struct {\n\tS string // the whole string value that caused the error\n}\n\nfunc (e *InvalidUTF8Error) Error() string {\n\treturn \"json: invalid UTF-8 in string: \" + strconv.Quote(e.S)\n}\n\ntype MarshalerError struct {\n\tType reflect.Type\n\tErr  error\n}\n\nfunc (e *MarshalerError) Error() string {\n\treturn \"json: error calling MarshalJSON for type \" + e.Type.String() + \": \" + e.Err.Error()\n}\n\nvar hex = \"0123456789abcdef\"\n\n// An encodeState encodes JSON into a bytes.Buffer.\ntype encodeState struct {\n\tbytes.Buffer // accumulated output\n\tscratch      [64]byte\n}\n\nvar encodeStatePool sync.Pool\n\nfunc newEncodeState() *encodeState {\n\tif v := encodeStatePool.Get(); v != nil {\n\t\te := v.(*encodeState)\n\t\te.Reset()\n\t\treturn e\n\t}\n\treturn new(encodeState)\n}\n\nfunc (e *encodeState) marshal(v interface{}) (err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tif _, ok := r.(runtime.Error); ok {\n\t\t\t\tpanic(r)\n\t\t\t}\n\t\t\tif s, ok := r.(string); ok {\n\t\t\t\tpanic(s)\n\t\t\t}\n\t\t\terr = r.(error)\n\t\t}\n\t}()\n\te.reflectValue(reflect.ValueOf(v))\n\treturn nil\n}\n\nfunc (e *encodeState) error(err error) {\n\tpanic(err)\n}\n\nfunc isEmptyValue(v reflect.Value) bool {\n\tswitch v.Kind() {\n\tcase reflect.Array, reflect.Map, reflect.Slice, reflect.String:\n\t\treturn v.Len() == 0\n\tcase reflect.Bool:\n\t\treturn !v.Bool()\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn v.Int() == 0\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn v.Uint() == 0\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float() == 0\n\tcase reflect.Interface, reflect.Ptr:\n\t\treturn v.IsNil()\n\t}\n\treturn false\n}\n\nfunc (e *encodeState) reflectValue(v reflect.Value) {\n\tvalueEncoder(v)(e, v, false)\n}\n\ntype encoderFunc func(e *encodeState, v reflect.Value, quoted bool)\n\nvar encoderCache struct {\n\tsync.RWMutex\n\tm map[reflect.Type]encoderFunc\n}\n\nfunc valueEncoder(v reflect.Value) encoderFunc {\n\tif !v.IsValid() {\n\t\treturn invalidValueEncoder\n\t}\n\treturn typeEncoder(v.Type())\n}\n\nfunc typeEncoder(t reflect.Type) encoderFunc {\n\tencoderCache.RLock()\n\tf := encoderCache.m[t]\n\tencoderCache.RUnlock()\n\tif f != nil {\n\t\treturn f\n\t}\n\n\t// To deal with recursive types, populate the map with an\n\t// indirect func before we build it. This type waits on the\n\t// real func (f) to be ready and then calls it.  This indirect\n\t// func is only used for recursive types.\n\tencoderCache.Lock()\n\tif encoderCache.m == nil {\n\t\tencoderCache.m = make(map[reflect.Type]encoderFunc)\n\t}\n\tvar wg sync.WaitGroup\n\twg.Add(1)\n\tencoderCache.m[t] = func(e *encodeState, v reflect.Value, quoted bool) {\n\t\twg.Wait()\n\t\tf(e, v, quoted)\n\t}\n\tencoderCache.Unlock()\n\n\t// Compute fields without lock.\n\t// Might duplicate effort but won't hold other computations back.\n\tf = newTypeEncoder(t, true)\n\twg.Done()\n\tencoderCache.Lock()\n\tencoderCache.m[t] = f\n\tencoderCache.Unlock()\n\treturn f\n}\n\nvar (\n\tmarshalerType     = reflect.TypeOf(new(Marshaler)).Elem()\n\ttextMarshalerType = reflect.TypeOf(new(encoding.TextMarshaler)).Elem()\n)\n\n// newTypeEncoder constructs an encoderFunc for a type.\n// The returned encoder only checks CanAddr when allowAddr is true.\nfunc newTypeEncoder(t reflect.Type, allowAddr bool) encoderFunc {\n\tif t.Implements(marshalerType) {\n\t\treturn marshalerEncoder\n\t}\n\tif t.Kind() != reflect.Ptr && allowAddr {\n\t\tif reflect.PtrTo(t).Implements(marshalerType) {\n\t\t\treturn newCondAddrEncoder(addrMarshalerEncoder, newTypeEncoder(t, false))\n\t\t}\n\t}\n\n\tif t.Implements(textMarshalerType) {\n\t\treturn textMarshalerEncoder\n\t}\n\tif t.Kind() != reflect.Ptr && allowAddr {\n\t\tif reflect.PtrTo(t).Implements(textMarshalerType) {\n\t\t\treturn newCondAddrEncoder(addrTextMarshalerEncoder, newTypeEncoder(t, false))\n\t\t}\n\t}\n\n\tswitch t.Kind() {\n\tcase reflect.Bool:\n\t\treturn boolEncoder\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn intEncoder\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn uintEncoder\n\tcase reflect.Float32:\n\t\treturn float32Encoder\n\tcase reflect.Float64:\n\t\treturn float64Encoder\n\tcase reflect.String:\n\t\treturn stringEncoder\n\tcase reflect.Interface:\n\t\treturn interfaceEncoder\n\tcase reflect.Struct:\n\t\treturn newStructEncoder(t)\n\tcase reflect.Map:\n\t\treturn newMapEncoder(t)\n\tcase reflect.Slice:\n\t\treturn newSliceEncoder(t)\n\tcase reflect.Array:\n\t\treturn newArrayEncoder(t)\n\tcase reflect.Ptr:\n\t\treturn newPtrEncoder(t)\n\tdefault:\n\t\treturn unsupportedTypeEncoder\n\t}\n}\n\nfunc invalidValueEncoder(e *encodeState, v reflect.Value, quoted bool) {\n\te.WriteString(\"null\")\n}\n\nfunc marshalerEncoder(e *encodeState, v reflect.Value, quoted bool) {\n\tif v.Kind() == reflect.Ptr && v.IsNil() {\n\t\te.WriteString(\"null\")\n\t\treturn\n\t}\n\tm := v.Interface().(Marshaler)\n\tb, err := m.MarshalJSON()\n\tif err == nil {\n\t\t// copy JSON into buffer, checking validity.\n\t\terr = compact(&e.Buffer, b, true)\n\t}\n\tif err != nil {\n\t\te.error(&MarshalerError{v.Type(), err})\n\t}\n}\n\nfunc addrMarshalerEncoder(e *encodeState, v reflect.Value, quoted bool) {\n\tva := v.Addr()\n\tif va.IsNil() {\n\t\te.WriteString(\"null\")\n\t\treturn\n\t}\n\tm := va.Interface().(Marshaler)\n\tb, err := m.MarshalJSON()\n\tif err == nil {\n\t\t// copy JSON into buffer, checking validity.\n\t\terr = compact(&e.Buffer, b, true)\n\t}\n\tif err != nil {\n\t\te.error(&MarshalerError{v.Type(), err})\n\t}\n}\n\nfunc textMarshalerEncoder(e *encodeState, v reflect.Value, quoted bool) {\n\tif v.Kind() == reflect.Ptr && v.IsNil() {\n\t\te.WriteString(\"null\")\n\t\treturn\n\t}\n\tm := v.Interface().(encoding.TextMarshaler)\n\tb, err := m.MarshalText()\n\tif err != nil {\n\t\te.error(&MarshalerError{v.Type(), err})\n\t}\n\te.stringBytes(b)\n}\n\nfunc addrTextMarshalerEncoder(e *encodeState, v reflect.Value, quoted bool) {\n\tva := v.Addr()\n\tif va.IsNil() {\n\t\te.WriteString(\"null\")\n\t\treturn\n\t}\n\tm := va.Interface().(encoding.TextMarshaler)\n\tb, err := m.MarshalText()\n\tif err != nil {\n\t\te.error(&MarshalerError{v.Type(), err})\n\t}\n\te.stringBytes(b)\n}\n\nfunc boolEncoder(e *encodeState, v reflect.Value, quoted bool) {\n\tif quoted {\n\t\te.WriteByte('\"')\n\t}\n\tif v.Bool() {\n\t\te.WriteString(\"true\")\n\t} else {\n\t\te.WriteString(\"false\")\n\t}\n\tif quoted {\n\t\te.WriteByte('\"')\n\t}\n}\n\nfunc intEncoder(e *encodeState, v reflect.Value, quoted bool) {\n\tb := strconv.AppendInt(e.scratch[:0], v.Int(), 10)\n\tif quoted {\n\t\te.WriteByte('\"')\n\t}\n\te.Write(b)\n\tif quoted {\n\t\te.WriteByte('\"')\n\t}\n}\n\nfunc uintEncoder(e *encodeState, v reflect.Value, quoted bool) {\n\tb := strconv.AppendUint(e.scratch[:0], v.Uint(), 10)\n\tif quoted {\n\t\te.WriteByte('\"')\n\t}\n\te.Write(b)\n\tif quoted {\n\t\te.WriteByte('\"')\n\t}\n}\n\ntype floatEncoder int // number of bits\n\nfunc (bits floatEncoder) encode(e *encodeState, v reflect.Value, quoted bool) {\n\tf := v.Float()\n\tif math.IsInf(f, 0) || math.IsNaN(f) {\n\t\te.error(&UnsupportedValueError{v, strconv.FormatFloat(f, 'g', -1, int(bits))})\n\t}\n\tb := strconv.AppendFloat(e.scratch[:0], f, 'g', -1, int(bits))\n\tif quoted {\n\t\te.WriteByte('\"')\n\t}\n\te.Write(b)\n\tif quoted {\n\t\te.WriteByte('\"')\n\t}\n}\n\nvar (\n\tfloat32Encoder = (floatEncoder(32)).encode\n\tfloat64Encoder = (floatEncoder(64)).encode\n)\n\nfunc stringEncoder(e *encodeState, v reflect.Value, quoted bool) {\n\tif v.Type() == numberType {\n\t\tnumStr := v.String()\n\t\t// In Go1.5 the empty string encodes to \"0\", while this is not a valid number literal\n\t\t// we keep compatibility so check validity after this.\n\t\tif numStr == \"\" {\n\t\t\tnumStr = \"0\" // Number's zero-val\n\t\t}\n\t\tif !isValidNumber(numStr) {\n\t\t\te.error(fmt.Errorf(\"json: invalid number literal %q\", numStr))\n\t\t}\n\t\te.WriteString(numStr)\n\t\treturn\n\t}\n\tif quoted {\n\t\tsb, err := Marshal(v.String())\n\t\tif err != nil {\n\t\t\te.error(err)\n\t\t}\n\t\te.string(string(sb))\n\t} else {\n\t\te.string(v.String())\n\t}\n}\n\nfunc interfaceEncoder(e *encodeState, v reflect.Value, quoted bool) {\n\tif v.IsNil() {\n\t\te.WriteString(\"null\")\n\t\treturn\n\t}\n\te.reflectValue(v.Elem())\n}\n\nfunc unsupportedTypeEncoder(e *encodeState, v reflect.Value, quoted bool) {\n\te.error(&UnsupportedTypeError{v.Type()})\n}\n\ntype structEncoder struct {\n\tfields    []field\n\tfieldEncs []encoderFunc\n}\n\nfunc (se *structEncoder) encode(e *encodeState, v reflect.Value, quoted bool) {\n\te.WriteByte('{')\n\tfirst := true\n\tfor i, f := range se.fields {\n\t\tfv := fieldByIndex(v, f.index)\n\t\tif !fv.IsValid() || f.omitEmpty && isEmptyValue(fv) {\n\t\t\tcontinue\n\t\t}\n\t\tif first {\n\t\t\tfirst = false\n\t\t} else {\n\t\t\te.WriteByte(',')\n\t\t}\n\t\te.string(f.name)\n\t\te.WriteByte(':')\n\t\tse.fieldEncs[i](e, fv, f.quoted)\n\t}\n\te.WriteByte('}')\n}\n\nfunc newStructEncoder(t reflect.Type) encoderFunc {\n\tfields := cachedTypeFields(t)\n\tse := &structEncoder{\n\t\tfields:    fields,\n\t\tfieldEncs: make([]encoderFunc, len(fields)),\n\t}\n\tfor i, f := range fields {\n\t\tse.fieldEncs[i] = typeEncoder(typeByIndex(t, f.index))\n\t}\n\treturn se.encode\n}\n\ntype mapEncoder struct {\n\telemEnc encoderFunc\n}\n\nfunc (me *mapEncoder) encode(e *encodeState, v reflect.Value, _ bool) {\n\tif v.IsNil() {\n\t\te.WriteString(\"null\")\n\t\treturn\n\t}\n\te.WriteByte('{')\n\tvar sv stringValues = v.MapKeys()\n\tsort.Sort(sv)\n\tfor i, k := range sv {\n\t\tif i > 0 {\n\t\t\te.WriteByte(',')\n\t\t}\n\t\te.string(k.String())\n\t\te.WriteByte(':')\n\t\tme.elemEnc(e, v.MapIndex(k), false)\n\t}\n\te.WriteByte('}')\n}\n\nfunc newMapEncoder(t reflect.Type) encoderFunc {\n\tif t.Key().Kind() != reflect.String {\n\t\treturn unsupportedTypeEncoder\n\t}\n\tme := &mapEncoder{typeEncoder(t.Elem())}\n\treturn me.encode\n}\n\nfunc encodeByteSlice(e *encodeState, v reflect.Value, _ bool) {\n\tif v.IsNil() {\n\t\te.WriteString(\"null\")\n\t\treturn\n\t}\n\ts := v.Bytes()\n\te.WriteByte('\"')\n\tif len(s) < 1024 {\n\t\t// for small buffers, using Encode directly is much faster.\n\t\tdst := make([]byte, base64.StdEncoding.EncodedLen(len(s)))\n\t\tbase64.StdEncoding.Encode(dst, s)\n\t\te.Write(dst)\n\t} else {\n\t\t// for large buffers, avoid unnecessary extra temporary\n\t\t// buffer space.\n\t\tenc := base64.NewEncoder(base64.StdEncoding, e)\n\t\t_, _ = enc.Write(s)\n\t\tenc.Close()\n\t}\n\te.WriteByte('\"')\n}\n\n// sliceEncoder just wraps an arrayEncoder, checking to make sure the value isn't nil.\ntype sliceEncoder struct {\n\tarrayEnc encoderFunc\n}\n\nfunc (se *sliceEncoder) encode(e *encodeState, v reflect.Value, _ bool) {\n\tif v.IsNil() {\n\t\te.WriteString(\"null\")\n\t\treturn\n\t}\n\tse.arrayEnc(e, v, false)\n}\n\nfunc newSliceEncoder(t reflect.Type) encoderFunc {\n\t// Byte slices get special treatment; arrays don't.\n\tif t.Elem().Kind() == reflect.Uint8 {\n\t\treturn encodeByteSlice\n\t}\n\tenc := &sliceEncoder{newArrayEncoder(t)}\n\treturn enc.encode\n}\n\ntype arrayEncoder struct {\n\telemEnc encoderFunc\n}\n\nfunc (ae *arrayEncoder) encode(e *encodeState, v reflect.Value, _ bool) {\n\te.WriteByte('[')\n\tn := v.Len()\n\tfor i := 0; i < n; i++ {\n\t\tif i > 0 {\n\t\t\te.WriteByte(',')\n\t\t}\n\t\tae.elemEnc(e, v.Index(i), false)\n\t}\n\te.WriteByte(']')\n}\n\nfunc newArrayEncoder(t reflect.Type) encoderFunc {\n\tenc := &arrayEncoder{typeEncoder(t.Elem())}\n\treturn enc.encode\n}\n\ntype ptrEncoder struct {\n\telemEnc encoderFunc\n}\n\nfunc (pe *ptrEncoder) encode(e *encodeState, v reflect.Value, quoted bool) {\n\tif v.IsNil() {\n\t\te.WriteString(\"null\")\n\t\treturn\n\t}\n\tpe.elemEnc(e, v.Elem(), quoted)\n}\n\nfunc newPtrEncoder(t reflect.Type) encoderFunc {\n\tenc := &ptrEncoder{typeEncoder(t.Elem())}\n\treturn enc.encode\n}\n\ntype condAddrEncoder struct {\n\tcanAddrEnc, elseEnc encoderFunc\n}\n\nfunc (ce *condAddrEncoder) encode(e *encodeState, v reflect.Value, quoted bool) {\n\tif v.CanAddr() {\n\t\tce.canAddrEnc(e, v, quoted)\n\t} else {\n\t\tce.elseEnc(e, v, quoted)\n\t}\n}\n\n// newCondAddrEncoder returns an encoder that checks whether its value\n// CanAddr and delegates to canAddrEnc if so, else to elseEnc.\nfunc newCondAddrEncoder(canAddrEnc, elseEnc encoderFunc) encoderFunc {\n\tenc := &condAddrEncoder{canAddrEnc: canAddrEnc, elseEnc: elseEnc}\n\treturn enc.encode\n}\n\nfunc isValidTag(s string) bool {\n\tif s == \"\" {\n\t\treturn false\n\t}\n\tfor _, c := range s {\n\t\tswitch {\n\t\tcase strings.ContainsRune(\"!#$%&()*+-./:<=>?@[]^_{|}~ \", c):\n\t\t\t// Backslash and quote chars are reserved, but\n\t\t\t// otherwise any punctuation chars are allowed\n\t\t\t// in a tag name.\n\t\tdefault:\n\t\t\tif !unicode.IsLetter(c) && !unicode.IsDigit(c) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\nfunc fieldByIndex(v reflect.Value, index []int) reflect.Value {\n\tfor _, i := range index {\n\t\tif v.Kind() == reflect.Ptr {\n\t\t\tif v.IsNil() {\n\t\t\t\treturn reflect.Value{}\n\t\t\t}\n\t\t\tv = v.Elem()\n\t\t}\n\t\tv = v.Field(i)\n\t}\n\treturn v\n}\n\nfunc typeByIndex(t reflect.Type, index []int) reflect.Type {\n\tfor _, i := range index {\n\t\tif t.Kind() == reflect.Ptr {\n\t\t\tt = t.Elem()\n\t\t}\n\t\tt = t.Field(i).Type\n\t}\n\treturn t\n}\n\n// stringValues is a slice of reflect.Value holding *reflect.StringValue.\n// It implements the methods to sort by string.\ntype stringValues []reflect.Value\n\nfunc (sv stringValues) Len() int           { return len(sv) }\nfunc (sv stringValues) Swap(i, j int)      { sv[i], sv[j] = sv[j], sv[i] }\nfunc (sv stringValues) Less(i, j int) bool { return sv.get(i) < sv.get(j) }\nfunc (sv stringValues) get(i int) string   { return sv[i].String() }\n\n// NOTE: keep in sync with stringBytes below.\nfunc (e *encodeState) string(s string) int {\n\tlen0 := e.Len()\n\te.WriteByte('\"')\n\tstart := 0\n\tfor i := 0; i < len(s); {\n\t\tif b := s[i]; b < utf8.RuneSelf {\n\t\t\tif 0x20 <= b && b != '\\\\' && b != '\"' && b != '<' && b != '>' && b != '&' {\n\t\t\t\ti++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif start < i {\n\t\t\t\te.WriteString(s[start:i])\n\t\t\t}\n\t\t\tswitch b {\n\t\t\tcase '\\\\', '\"':\n\t\t\t\te.WriteByte('\\\\')\n\t\t\t\te.WriteByte(b)\n\t\t\tcase '\\n':\n\t\t\t\te.WriteByte('\\\\')\n\t\t\t\te.WriteByte('n')\n\t\t\tcase '\\r':\n\t\t\t\te.WriteByte('\\\\')\n\t\t\t\te.WriteByte('r')\n\t\t\tcase '\\t':\n\t\t\t\te.WriteByte('\\\\')\n\t\t\t\te.WriteByte('t')\n\t\t\tdefault:\n\t\t\t\t// This encodes bytes < 0x20 except for \\n and \\r,\n\t\t\t\t// as well as <, > and &. The latter are escaped because they\n\t\t\t\t// can lead to security holes when user-controlled strings\n\t\t\t\t// are rendered into JSON and served to some browsers.\n\t\t\t\te.WriteString(`\\u00`)\n\t\t\t\te.WriteByte(hex[b>>4])\n\t\t\t\te.WriteByte(hex[b&0xF])\n\t\t\t}\n\t\t\ti++\n\t\t\tstart = i\n\t\t\tcontinue\n\t\t}\n\t\tc, size := utf8.DecodeRuneInString(s[i:])\n\t\tif c == utf8.RuneError && size == 1 {\n\t\t\tif start < i {\n\t\t\t\te.WriteString(s[start:i])\n\t\t\t}\n\t\t\te.WriteString(`\\ufffd`)\n\t\t\ti += size\n\t\t\tstart = i\n\t\t\tcontinue\n\t\t}\n\t\t// U+2028 is LINE SEPARATOR.\n\t\t// U+2029 is PARAGRAPH SEPARATOR.\n\t\t// They are both technically valid characters in JSON strings,\n\t\t// but don't work in JSONP, which has to be evaluated as JavaScript,\n\t\t// and can lead to security holes there. It is valid JSON to\n\t\t// escape them, so we do so unconditionally.\n\t\t// See http://timelessrepo.com/json-isnt-a-javascript-subset for discussion.\n\t\tif c == '\\u2028' || c == '\\u2029' {\n\t\t\tif start < i {\n\t\t\t\te.WriteString(s[start:i])\n\t\t\t}\n\t\t\te.WriteString(`\\u202`)\n\t\t\te.WriteByte(hex[c&0xF])\n\t\t\ti += size\n\t\t\tstart = i\n\t\t\tcontinue\n\t\t}\n\t\ti += size\n\t}\n\tif start < len(s) {\n\t\te.WriteString(s[start:])\n\t}\n\te.WriteByte('\"')\n\treturn e.Len() - len0\n}\n\n// NOTE: keep in sync with string above.\nfunc (e *encodeState) stringBytes(s []byte) int {\n\tlen0 := e.Len()\n\te.WriteByte('\"')\n\tstart := 0\n\tfor i := 0; i < len(s); {\n\t\tif b := s[i]; b < utf8.RuneSelf {\n\t\t\tif 0x20 <= b && b != '\\\\' && b != '\"' && b != '<' && b != '>' && b != '&' {\n\t\t\t\ti++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif start < i {\n\t\t\t\te.Write(s[start:i])\n\t\t\t}\n\t\t\tswitch b {\n\t\t\tcase '\\\\', '\"':\n\t\t\t\te.WriteByte('\\\\')\n\t\t\t\te.WriteByte(b)\n\t\t\tcase '\\n':\n\t\t\t\te.WriteByte('\\\\')\n\t\t\t\te.WriteByte('n')\n\t\t\tcase '\\r':\n\t\t\t\te.WriteByte('\\\\')\n\t\t\t\te.WriteByte('r')\n\t\t\tcase '\\t':\n\t\t\t\te.WriteByte('\\\\')\n\t\t\t\te.WriteByte('t')\n\t\t\tdefault:\n\t\t\t\t// This encodes bytes < 0x20 except for \\n and \\r,\n\t\t\t\t// as well as <, >, and &. The latter are escaped because they\n\t\t\t\t// can lead to security holes when user-controlled strings\n\t\t\t\t// are rendered into JSON and served to some browsers.\n\t\t\t\te.WriteString(`\\u00`)\n\t\t\t\te.WriteByte(hex[b>>4])\n\t\t\t\te.WriteByte(hex[b&0xF])\n\t\t\t}\n\t\t\ti++\n\t\t\tstart = i\n\t\t\tcontinue\n\t\t}\n\t\tc, size := utf8.DecodeRune(s[i:])\n\t\tif c == utf8.RuneError && size == 1 {\n\t\t\tif start < i {\n\t\t\t\te.Write(s[start:i])\n\t\t\t}\n\t\t\te.WriteString(`\\ufffd`)\n\t\t\ti += size\n\t\t\tstart = i\n\t\t\tcontinue\n\t\t}\n\t\t// U+2028 is LINE SEPARATOR.\n\t\t// U+2029 is PARAGRAPH SEPARATOR.\n\t\t// They are both technically valid characters in JSON strings,\n\t\t// but don't work in JSONP, which has to be evaluated as JavaScript,\n\t\t// and can lead to security holes there. It is valid JSON to\n\t\t// escape them, so we do so unconditionally.\n\t\t// See http://timelessrepo.com/json-isnt-a-javascript-subset for discussion.\n\t\tif c == '\\u2028' || c == '\\u2029' {\n\t\t\tif start < i {\n\t\t\t\te.Write(s[start:i])\n\t\t\t}\n\t\t\te.WriteString(`\\u202`)\n\t\t\te.WriteByte(hex[c&0xF])\n\t\t\ti += size\n\t\t\tstart = i\n\t\t\tcontinue\n\t\t}\n\t\ti += size\n\t}\n\tif start < len(s) {\n\t\te.Write(s[start:])\n\t}\n\te.WriteByte('\"')\n\treturn e.Len() - len0\n}\n\n// A field represents a single field found in a struct.\ntype field struct {\n\tname      string\n\tnameBytes []byte // []byte(name)\n\n\ttag       bool\n\tindex     []int\n\ttyp       reflect.Type\n\tomitEmpty bool\n\tquoted    bool\n}\n\nfunc fillField(f field) field {\n\tf.nameBytes = []byte(f.name)\n\treturn f\n}\n\n// byName sorts field by name, breaking ties with depth,\n// then breaking ties with \"name came from json tag\", then\n// breaking ties with index sequence.\ntype byName []field\n\nfunc (x byName) Len() int { return len(x) }\n\nfunc (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] }\n\nfunc (x byName) Less(i, j int) bool {\n\tif x[i].name != x[j].name {\n\t\treturn x[i].name < x[j].name\n\t}\n\tif len(x[i].index) != len(x[j].index) {\n\t\treturn len(x[i].index) < len(x[j].index)\n\t}\n\tif x[i].tag != x[j].tag {\n\t\treturn x[i].tag\n\t}\n\treturn byIndex(x).Less(i, j)\n}\n\n// byIndex sorts field by index sequence.\ntype byIndex []field\n\nfunc (x byIndex) Len() int { return len(x) }\n\nfunc (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] }\n\nfunc (x byIndex) Less(i, j int) bool {\n\tfor k, xik := range x[i].index {\n\t\tif k >= len(x[j].index) {\n\t\t\treturn false\n\t\t}\n\t\tif xik != x[j].index[k] {\n\t\t\treturn xik < x[j].index[k]\n\t\t}\n\t}\n\treturn len(x[i].index) < len(x[j].index)\n}\n\n// typeFields returns a list of fields that JSON should recognize for the given type.\n// The algorithm is breadth-first search over the set of structs to include - the top struct\n// and then any reachable anonymous structs.\nfunc typeFields(t reflect.Type) []field {\n\t// Anonymous fields to explore at the current level and the next.\n\tcurrent := []field{}\n\tnext := []field{{typ: t}}\n\n\t// Count of queued names for current level and the next.\n\tcount := map[reflect.Type]int{}\n\tnextCount := map[reflect.Type]int{}\n\n\t// Types already visited at an earlier level.\n\tvisited := map[reflect.Type]bool{}\n\n\t// Fields found.\n\tvar fields []field\n\n\tfor len(next) > 0 {\n\t\tcurrent, next = next, current[:0]\n\t\tcount, nextCount = nextCount, map[reflect.Type]int{}\n\n\t\tfor _, f := range current {\n\t\t\tif visited[f.typ] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvisited[f.typ] = true\n\n\t\t\t// Scan f.typ for fields to include.\n\t\t\tfor i := 0; i < f.typ.NumField(); i++ {\n\t\t\t\tsf := f.typ.Field(i)\n\t\t\t\tif sf.PkgPath != \"\" && !sf.Anonymous { // unexported\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\ttag := sf.Tag.Get(\"json\")\n\t\t\t\tif tag == \"-\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tname, opts := parseTag(tag)\n\t\t\t\tif !isValidTag(name) {\n\t\t\t\t\tname = \"\"\n\t\t\t\t}\n\t\t\t\tindex := make([]int, len(f.index)+1)\n\t\t\t\tcopy(index, f.index)\n\t\t\t\tindex[len(f.index)] = i\n\n\t\t\t\tft := sf.Type\n\t\t\t\tif ft.Name() == \"\" && ft.Kind() == reflect.Ptr {\n\t\t\t\t\t// Follow pointer.\n\t\t\t\t\tft = ft.Elem()\n\t\t\t\t}\n\n\t\t\t\t// Only strings, floats, integers, and booleans can be quoted.\n\t\t\t\tquoted := false\n\t\t\t\tif opts.Contains(\"string\") {\n\t\t\t\t\tswitch ft.Kind() {\n\t\t\t\t\tcase reflect.Bool,\n\t\t\t\t\t\treflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,\n\t\t\t\t\t\treflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64,\n\t\t\t\t\t\treflect.Float32, reflect.Float64,\n\t\t\t\t\t\treflect.String:\n\t\t\t\t\t\tquoted = true\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Record found field and index sequence.\n\t\t\t\tif name != \"\" || !sf.Anonymous || ft.Kind() != reflect.Struct {\n\t\t\t\t\ttagged := name != \"\"\n\t\t\t\t\tif name == \"\" {\n\t\t\t\t\t\tname = sf.Name\n\t\t\t\t\t}\n\t\t\t\t\tfields = append(fields, fillField(field{\n\t\t\t\t\t\tname:      name,\n\t\t\t\t\t\ttag:       tagged,\n\t\t\t\t\t\tindex:     index,\n\t\t\t\t\t\ttyp:       ft,\n\t\t\t\t\t\tomitEmpty: opts.Contains(\"omitempty\"),\n\t\t\t\t\t\tquoted:    quoted,\n\t\t\t\t\t}))\n\t\t\t\t\tif count[f.typ] > 1 {\n\t\t\t\t\t\t// If there were multiple instances, add a second,\n\t\t\t\t\t\t// so that the annihilation code will see a duplicate.\n\t\t\t\t\t\t// It only cares about the distinction between 1 or 2,\n\t\t\t\t\t\t// so don't bother generating any more copies.\n\t\t\t\t\t\tfields = append(fields, fields[len(fields)-1])\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Record new anonymous struct to explore in next round.\n\t\t\t\tnextCount[ft]++\n\t\t\t\tif nextCount[ft] == 1 {\n\t\t\t\t\tnext = append(next, fillField(field{name: ft.Name(), index: index, typ: ft}))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsort.Sort(byName(fields))\n\n\t// Delete all fields that are hidden by the Go rules for embedded fields,\n\t// except that fields with JSON tags are promoted.\n\n\t// The fields are sorted in primary order of name, secondary order\n\t// of field index length. Loop over names; for each name, delete\n\t// hidden fields by choosing the one dominant field that survives.\n\tout := fields[:0]\n\tfor advance, i := 0, 0; i < len(fields); i += advance {\n\t\t// One iteration per name.\n\t\t// Find the sequence of fields with the name of this first field.\n\t\tfi := fields[i]\n\t\tname := fi.name\n\t\tfor advance = 1; i+advance < len(fields); advance++ {\n\t\t\tfj := fields[i+advance]\n\t\t\tif fj.name != name {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif advance == 1 { // Only one field with this name\n\t\t\tout = append(out, fi)\n\t\t\tcontinue\n\t\t}\n\t\tdominant, ok := dominantField(fields[i : i+advance])\n\t\tif ok {\n\t\t\tout = append(out, dominant)\n\t\t}\n\t}\n\n\tfields = out\n\tsort.Sort(byIndex(fields))\n\n\treturn fields\n}\n\n// dominantField looks through the fields, all of which are known to\n// have the same name, to find the single field that dominates the\n// others using Go's embedding rules, modified by the presence of\n// JSON tags. If there are multiple top-level fields, the boolean\n// will be false: This condition is an error in Go and we skip all\n// the fields.\nfunc dominantField(fields []field) (field, bool) {\n\t// The fields are sorted in increasing index-length order. The winner\n\t// must therefore be one with the shortest index length. Drop all\n\t// longer entries, which is easy: just truncate the slice.\n\tlength := len(fields[0].index)\n\ttagged := -1 // Index of first tagged field.\n\tfor i, f := range fields {\n\t\tif len(f.index) > length {\n\t\t\tfields = fields[:i]\n\t\t\tbreak\n\t\t}\n\t\tif f.tag {\n\t\t\tif tagged >= 0 {\n\t\t\t\t// Multiple tagged fields at the same level: conflict.\n\t\t\t\t// Return no field.\n\t\t\t\treturn field{}, false\n\t\t\t}\n\t\t\ttagged = i\n\t\t}\n\t}\n\tif tagged >= 0 {\n\t\treturn fields[tagged], true\n\t}\n\t// All remaining fields have the same length. If there's more than one,\n\t// we have a conflict (two fields named \"X\" at the same level) and we\n\t// return no field.\n\tif len(fields) > 1 {\n\t\treturn field{}, false\n\t}\n\treturn fields[0], true\n}\n\nvar fieldCache struct {\n\tsync.RWMutex\n\tm map[reflect.Type][]field\n}\n\n// cachedTypeFields is like typeFields but uses a cache to avoid repeated work.\nfunc cachedTypeFields(t reflect.Type) []field {\n\tfieldCache.RLock()\n\tf := fieldCache.m[t]\n\tfieldCache.RUnlock()\n\tif f != nil {\n\t\treturn f\n\t}\n\n\t// Compute fields without lock.\n\t// Might duplicate effort but won't hold other computations back.\n\tf = typeFields(t)\n\tif f == nil {\n\t\tf = []field{}\n\t}\n\n\tfieldCache.Lock()\n\tif fieldCache.m == nil {\n\t\tfieldCache.m = map[reflect.Type][]field{}\n\t}\n\tfieldCache.m[t] = f\n\tfieldCache.Unlock()\n\treturn f\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/json/indent.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 json\n\nimport \"bytes\"\n\n// Compact appends to dst the JSON-encoded src with\n// insignificant space characters elided.\nfunc Compact(dst *bytes.Buffer, src []byte) error {\n\treturn compact(dst, src, false)\n}\n\nfunc compact(dst *bytes.Buffer, src []byte, escape bool) error {\n\torigLen := dst.Len()\n\tvar scan scanner\n\tscan.reset()\n\tstart := 0\n\tfor i, c := range src {\n\t\tif escape && (c == '<' || c == '>' || c == '&') {\n\t\t\tif start < i {\n\t\t\t\tdst.Write(src[start:i])\n\t\t\t}\n\t\t\tdst.WriteString(`\\u00`)\n\t\t\tdst.WriteByte(hex[c>>4])\n\t\t\tdst.WriteByte(hex[c&0xF])\n\t\t\tstart = i + 1\n\t\t}\n\t\t// Convert U+2028 and U+2029 (E2 80 A8 and E2 80 A9).\n\t\tif c == 0xE2 && i+2 < len(src) && src[i+1] == 0x80 && src[i+2]&^1 == 0xA8 {\n\t\t\tif start < i {\n\t\t\t\tdst.Write(src[start:i])\n\t\t\t}\n\t\t\tdst.WriteString(`\\u202`)\n\t\t\tdst.WriteByte(hex[src[i+2]&0xF])\n\t\t\tstart = i + 3\n\t\t}\n\t\tv := scan.step(&scan, c)\n\t\tif v >= scanSkipSpace {\n\t\t\tif v == scanError {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif start < i {\n\t\t\t\tdst.Write(src[start:i])\n\t\t\t}\n\t\t\tstart = i + 1\n\t\t}\n\t}\n\tif scan.eof() == scanError {\n\t\tdst.Truncate(origLen)\n\t\treturn scan.err\n\t}\n\tif start < len(src) {\n\t\tdst.Write(src[start:])\n\t}\n\treturn nil\n}\n\nfunc newline(dst *bytes.Buffer, prefix, indent string, depth int) {\n\tdst.WriteByte('\\n')\n\tdst.WriteString(prefix)\n\tfor i := 0; i < depth; i++ {\n\t\tdst.WriteString(indent)\n\t}\n}\n\n// Indent appends to dst an indented form of the JSON-encoded src.\n// Each element in a JSON object or array begins on a new,\n// indented line beginning with prefix followed by one or more\n// copies of indent according to the indentation nesting.\n// The data appended to dst does not begin with the prefix nor\n// any indentation, to make it easier to embed inside other formatted JSON data.\n// Although leading space characters (space, tab, carriage return, newline)\n// at the beginning of src are dropped, trailing space characters\n// at the end of src are preserved and copied to dst.\n// For example, if src has no trailing spaces, neither will dst;\n// if src ends in a trailing newline, so will dst.\nfunc Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error {\n\torigLen := dst.Len()\n\tvar scan scanner\n\tscan.reset()\n\tneedIndent := false\n\tdepth := 0\n\tfor _, c := range src {\n\t\tscan.bytes++\n\t\tv := scan.step(&scan, c)\n\t\tif v == scanSkipSpace {\n\t\t\tcontinue\n\t\t}\n\t\tif v == scanError {\n\t\t\tbreak\n\t\t}\n\t\tif needIndent && v != scanEndObject && v != scanEndArray {\n\t\t\tneedIndent = false\n\t\t\tdepth++\n\t\t\tnewline(dst, prefix, indent, depth)\n\t\t}\n\n\t\t// Emit semantically uninteresting bytes\n\t\t// (in particular, punctuation in strings) unmodified.\n\t\tif v == scanContinue {\n\t\t\tdst.WriteByte(c)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Add spacing around real punctuation.\n\t\tswitch c {\n\t\tcase '{', '[':\n\t\t\t// delay indent so that empty object and array are formatted as {} and [].\n\t\t\tneedIndent = true\n\t\t\tdst.WriteByte(c)\n\n\t\tcase ',':\n\t\t\tdst.WriteByte(c)\n\t\t\tnewline(dst, prefix, indent, depth)\n\n\t\tcase ':':\n\t\t\tdst.WriteByte(c)\n\t\t\tdst.WriteByte(' ')\n\n\t\tcase '}', ']':\n\t\t\tif needIndent {\n\t\t\t\t// suppress indent in empty object/array\n\t\t\t\tneedIndent = false\n\t\t\t} else {\n\t\t\t\tdepth--\n\t\t\t\tnewline(dst, prefix, indent, depth)\n\t\t\t}\n\t\t\tdst.WriteByte(c)\n\n\t\tdefault:\n\t\t\tdst.WriteByte(c)\n\t\t}\n\t}\n\tif scan.eof() == scanError {\n\t\tdst.Truncate(origLen)\n\t\treturn scan.err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/json/scanner.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 json\n\n// JSON value parser state machine.\n// Just about at the limit of what is reasonable to write by hand.\n// Some parts are a bit tedious, but overall it nicely factors out the\n// otherwise common code from the multiple scanning functions\n// in this package (Compact, Indent, checkValid, nextValue, etc).\n//\n// This file starts with two simple examples using the scanner\n// before diving into the scanner itself.\n\nimport \"strconv\"\n\n// checkValid verifies that data is valid JSON-encoded data.\n// scan is passed in for use by checkValid to avoid an allocation.\nfunc checkValid(data []byte, scan *scanner) error {\n\tscan.reset()\n\tfor _, c := range data {\n\t\tscan.bytes++\n\t\tif scan.step(scan, c) == scanError {\n\t\t\treturn scan.err\n\t\t}\n\t}\n\tif scan.eof() == scanError {\n\t\treturn scan.err\n\t}\n\treturn nil\n}\n\n// nextValue splits data after the next whole JSON value,\n// returning that value and the bytes that follow it as separate slices.\n// scan is passed in for use by nextValue to avoid an allocation.\nfunc nextValue(data []byte, scan *scanner) (value, rest []byte, err error) {\n\tscan.reset()\n\tfor i, c := range data {\n\t\tv := scan.step(scan, c)\n\t\tif v >= scanEndObject {\n\t\t\tswitch v {\n\t\t\t// probe the scanner with a space to determine whether we will\n\t\t\t// get scanEnd on the next character. Otherwise, if the next character\n\t\t\t// is not a space, scanEndTop allocates a needless error.\n\t\t\tcase scanEndObject, scanEndArray:\n\t\t\t\tif scan.step(scan, ' ') == scanEnd {\n\t\t\t\t\treturn data[:i+1], data[i+1:], nil\n\t\t\t\t}\n\t\t\tcase scanError:\n\t\t\t\treturn nil, nil, scan.err\n\t\t\tcase scanEnd:\n\t\t\t\treturn data[:i], data[i:], nil\n\t\t\t}\n\t\t}\n\t}\n\tif scan.eof() == scanError {\n\t\treturn nil, nil, scan.err\n\t}\n\treturn data, nil, nil\n}\n\n// A SyntaxError is a description of a JSON syntax error.\ntype SyntaxError struct {\n\tmsg    string // description of error\n\tOffset int64  // error occurred after reading Offset bytes\n}\n\nfunc (e *SyntaxError) Error() string { return e.msg }\n\n// A scanner is a JSON scanning state machine.\n// Callers call scan.reset() and then pass bytes in one at a time\n// by calling scan.step(&scan, c) for each byte.\n// The return value, referred to as an opcode, tells the\n// caller about significant parsing events like beginning\n// and ending literals, objects, and arrays, so that the\n// caller can follow along if it wishes.\n// The return value scanEnd indicates that a single top-level\n// JSON value has been completed, *before* the byte that\n// just got passed in.  (The indication must be delayed in order\n// to recognize the end of numbers: is 123 a whole value or\n// the beginning of 12345e+6?).\ntype scanner struct {\n\t// The step is a func to be called to execute the next transition.\n\t// Also tried using an integer constant and a single func\n\t// with a switch, but using the func directly was 10% faster\n\t// on a 64-bit Mac Mini, and it's nicer to read.\n\tstep func(*scanner, byte) int\n\n\t// Reached end of top-level value.\n\tendTop bool\n\n\t// Stack of what we're in the middle of - array values, object keys, object values.\n\tparseState []int\n\n\t// Error that happened, if any.\n\terr error\n\n\t// 1-byte redo (see undo method)\n\tredo      bool\n\tredoCode  int\n\tredoState func(*scanner, byte) int\n\n\t// total bytes consumed, updated by decoder.Decode\n\tbytes int64\n}\n\n// These values are returned by the state transition functions\n// assigned to scanner.state and the method scanner.eof.\n// They give details about the current state of the scan that\n// callers might be interested to know about.\n// It is okay to ignore the return value of any particular\n// call to scanner.state: if one call returns scanError,\n// every subsequent call will return scanError too.\nconst (\n\t// Continue.\n\tscanContinue     = iota // uninteresting byte\n\tscanBeginLiteral        // end implied by next result != scanContinue\n\tscanBeginObject         // begin object\n\tscanObjectKey           // just finished object key (string)\n\tscanObjectValue         // just finished non-last object value\n\tscanEndObject           // end object (implies scanObjectValue if possible)\n\tscanBeginArray          // begin array\n\tscanArrayValue          // just finished array value\n\tscanEndArray            // end array (implies scanArrayValue if possible)\n\tscanSkipSpace           // space byte; can skip; known to be last \"continue\" result\n\n\t// Stop.\n\tscanEnd   // top-level value ended *before* this byte; known to be first \"stop\" result\n\tscanError // hit an error, scanner.err.\n)\n\n// These values are stored in the parseState stack.\n// They give the current state of a composite value\n// being scanned.  If the parser is inside a nested value\n// the parseState describes the nested state, outermost at entry 0.\nconst (\n\tparseObjectKey   = iota // parsing object key (before colon)\n\tparseObjectValue        // parsing object value (after colon)\n\tparseArrayValue         // parsing array value\n)\n\n// reset prepares the scanner for use.\n// It must be called before calling s.step.\nfunc (s *scanner) reset() {\n\ts.step = stateBeginValue\n\ts.parseState = s.parseState[0:0]\n\ts.err = nil\n\ts.redo = false\n\ts.endTop = false\n}\n\n// eof tells the scanner that the end of input has been reached.\n// It returns a scan status just as s.step does.\nfunc (s *scanner) eof() int {\n\tif s.err != nil {\n\t\treturn scanError\n\t}\n\tif s.endTop {\n\t\treturn scanEnd\n\t}\n\ts.step(s, ' ')\n\tif s.endTop {\n\t\treturn scanEnd\n\t}\n\tif s.err == nil {\n\t\ts.err = &SyntaxError{\"unexpected end of JSON input\", s.bytes}\n\t}\n\treturn scanError\n}\n\n// pushParseState pushes a new parse state p onto the parse stack.\nfunc (s *scanner) pushParseState(p int) {\n\ts.parseState = append(s.parseState, p)\n}\n\n// popParseState pops a parse state (already obtained) off the stack\n// and updates s.step accordingly.\nfunc (s *scanner) popParseState() {\n\tn := len(s.parseState) - 1\n\ts.parseState = s.parseState[0:n]\n\ts.redo = false\n\tif n == 0 {\n\t\ts.step = stateEndTop\n\t\ts.endTop = true\n\t} else {\n\t\ts.step = stateEndValue\n\t}\n}\n\nfunc isSpace(c byte) bool {\n\treturn c == ' ' || c == '\\t' || c == '\\r' || c == '\\n'\n}\n\n// stateBeginValueOrEmpty is the state after reading `[`.\nfunc stateBeginValueOrEmpty(s *scanner, c byte) int {\n\tif c <= ' ' && isSpace(c) {\n\t\treturn scanSkipSpace\n\t}\n\tif c == ']' {\n\t\treturn stateEndValue(s, c)\n\t}\n\treturn stateBeginValue(s, c)\n}\n\n// stateBeginValue is the state at the beginning of the input.\nfunc stateBeginValue(s *scanner, c byte) int {\n\tif c <= ' ' && isSpace(c) {\n\t\treturn scanSkipSpace\n\t}\n\tswitch c {\n\tcase '{':\n\t\ts.step = stateBeginStringOrEmpty\n\t\ts.pushParseState(parseObjectKey)\n\t\treturn scanBeginObject\n\tcase '[':\n\t\ts.step = stateBeginValueOrEmpty\n\t\ts.pushParseState(parseArrayValue)\n\t\treturn scanBeginArray\n\tcase '\"':\n\t\ts.step = stateInString\n\t\treturn scanBeginLiteral\n\tcase '-':\n\t\ts.step = stateNeg\n\t\treturn scanBeginLiteral\n\tcase '0': // beginning of 0.123\n\t\ts.step = state0\n\t\treturn scanBeginLiteral\n\tcase 't': // beginning of true\n\t\ts.step = stateT\n\t\treturn scanBeginLiteral\n\tcase 'f': // beginning of false\n\t\ts.step = stateF\n\t\treturn scanBeginLiteral\n\tcase 'n': // beginning of null\n\t\ts.step = stateN\n\t\treturn scanBeginLiteral\n\t}\n\tif '1' <= c && c <= '9' { // beginning of 1234.5\n\t\ts.step = state1\n\t\treturn scanBeginLiteral\n\t}\n\treturn s.error(c, \"looking for beginning of value\")\n}\n\n// stateBeginStringOrEmpty is the state after reading `{`.\nfunc stateBeginStringOrEmpty(s *scanner, c byte) int {\n\tif c <= ' ' && isSpace(c) {\n\t\treturn scanSkipSpace\n\t}\n\tif c == '}' {\n\t\tn := len(s.parseState)\n\t\ts.parseState[n-1] = parseObjectValue\n\t\treturn stateEndValue(s, c)\n\t}\n\treturn stateBeginString(s, c)\n}\n\n// stateBeginString is the state after reading `{\"key\": value,`.\nfunc stateBeginString(s *scanner, c byte) int {\n\tif c <= ' ' && isSpace(c) {\n\t\treturn scanSkipSpace\n\t}\n\tif c == '\"' {\n\t\ts.step = stateInString\n\t\treturn scanBeginLiteral\n\t}\n\treturn s.error(c, \"looking for beginning of object key string\")\n}\n\n// stateEndValue is the state after completing a value,\n// such as after reading `{}` or `true` or `[\"x\"`.\nfunc stateEndValue(s *scanner, c byte) int {\n\tn := len(s.parseState)\n\tif n == 0 {\n\t\t// Completed top-level before the current byte.\n\t\ts.step = stateEndTop\n\t\ts.endTop = true\n\t\treturn stateEndTop(s, c)\n\t}\n\tif c <= ' ' && isSpace(c) {\n\t\ts.step = stateEndValue\n\t\treturn scanSkipSpace\n\t}\n\tps := s.parseState[n-1]\n\tswitch ps {\n\tcase parseObjectKey:\n\t\tif c == ':' {\n\t\t\ts.parseState[n-1] = parseObjectValue\n\t\t\ts.step = stateBeginValue\n\t\t\treturn scanObjectKey\n\t\t}\n\t\treturn s.error(c, \"after object key\")\n\tcase parseObjectValue:\n\t\tif c == ',' {\n\t\t\ts.parseState[n-1] = parseObjectKey\n\t\t\ts.step = stateBeginString\n\t\t\treturn scanObjectValue\n\t\t}\n\t\tif c == '}' {\n\t\t\ts.popParseState()\n\t\t\treturn scanEndObject\n\t\t}\n\t\treturn s.error(c, \"after object key:value pair\")\n\tcase parseArrayValue:\n\t\tif c == ',' {\n\t\t\ts.step = stateBeginValue\n\t\t\treturn scanArrayValue\n\t\t}\n\t\tif c == ']' {\n\t\t\ts.popParseState()\n\t\t\treturn scanEndArray\n\t\t}\n\t\treturn s.error(c, \"after array element\")\n\t}\n\treturn s.error(c, \"\")\n}\n\n// stateEndTop is the state after finishing the top-level value,\n// such as after reading `{}` or `[1,2,3]`.\n// Only space characters should be seen now.\nfunc stateEndTop(s *scanner, c byte) int {\n\tif c != ' ' && c != '\\t' && c != '\\r' && c != '\\n' {\n\t\t// Complain about non-space byte on next call.\n\t\ts.error(c, \"after top-level value\")\n\t}\n\treturn scanEnd\n}\n\n// stateInString is the state after reading `\"`.\nfunc stateInString(s *scanner, c byte) int {\n\tif c == '\"' {\n\t\ts.step = stateEndValue\n\t\treturn scanContinue\n\t}\n\tif c == '\\\\' {\n\t\ts.step = stateInStringEsc\n\t\treturn scanContinue\n\t}\n\tif c < 0x20 {\n\t\treturn s.error(c, \"in string literal\")\n\t}\n\treturn scanContinue\n}\n\n// stateInStringEsc is the state after reading `\"\\` during a quoted string.\nfunc stateInStringEsc(s *scanner, c byte) int {\n\tswitch c {\n\tcase 'b', 'f', 'n', 'r', 't', '\\\\', '/', '\"':\n\t\ts.step = stateInString\n\t\treturn scanContinue\n\tcase 'u':\n\t\ts.step = stateInStringEscU\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"in string escape code\")\n}\n\n// stateInStringEscU is the state after reading `\"\\u` during a quoted string.\nfunc stateInStringEscU(s *scanner, c byte) int {\n\tif '0' <= c && c <= '9' || 'a' <= c && c <= 'f' || 'A' <= c && c <= 'F' {\n\t\ts.step = stateInStringEscU1\n\t\treturn scanContinue\n\t}\n\t// numbers\n\treturn s.error(c, \"in \\\\u hexadecimal character escape\")\n}\n\n// stateInStringEscU1 is the state after reading `\"\\u1` during a quoted string.\nfunc stateInStringEscU1(s *scanner, c byte) int {\n\tif '0' <= c && c <= '9' || 'a' <= c && c <= 'f' || 'A' <= c && c <= 'F' {\n\t\ts.step = stateInStringEscU12\n\t\treturn scanContinue\n\t}\n\t// numbers\n\treturn s.error(c, \"in \\\\u hexadecimal character escape\")\n}\n\n// stateInStringEscU12 is the state after reading `\"\\u12` during a quoted string.\nfunc stateInStringEscU12(s *scanner, c byte) int {\n\tif '0' <= c && c <= '9' || 'a' <= c && c <= 'f' || 'A' <= c && c <= 'F' {\n\t\ts.step = stateInStringEscU123\n\t\treturn scanContinue\n\t}\n\t// numbers\n\treturn s.error(c, \"in \\\\u hexadecimal character escape\")\n}\n\n// stateInStringEscU123 is the state after reading `\"\\u123` during a quoted string.\nfunc stateInStringEscU123(s *scanner, c byte) int {\n\tif '0' <= c && c <= '9' || 'a' <= c && c <= 'f' || 'A' <= c && c <= 'F' {\n\t\ts.step = stateInString\n\t\treturn scanContinue\n\t}\n\t// numbers\n\treturn s.error(c, \"in \\\\u hexadecimal character escape\")\n}\n\n// stateNeg is the state after reading `-` during a number.\nfunc stateNeg(s *scanner, c byte) int {\n\tif c == '0' {\n\t\ts.step = state0\n\t\treturn scanContinue\n\t}\n\tif '1' <= c && c <= '9' {\n\t\ts.step = state1\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"in numeric literal\")\n}\n\n// state1 is the state after reading a non-zero integer during a number,\n// such as after reading `1` or `100` but not `0`.\nfunc state1(s *scanner, c byte) int {\n\tif '0' <= c && c <= '9' {\n\t\ts.step = state1\n\t\treturn scanContinue\n\t}\n\treturn state0(s, c)\n}\n\n// state0 is the state after reading `0` during a number.\nfunc state0(s *scanner, c byte) int {\n\tif c == '.' {\n\t\ts.step = stateDot\n\t\treturn scanContinue\n\t}\n\tif c == 'e' || c == 'E' {\n\t\ts.step = stateE\n\t\treturn scanContinue\n\t}\n\treturn stateEndValue(s, c)\n}\n\n// stateDot is the state after reading the integer and decimal point in a number,\n// such as after reading `1.`.\nfunc stateDot(s *scanner, c byte) int {\n\tif '0' <= c && c <= '9' {\n\t\ts.step = stateDot0\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"after decimal point in numeric literal\")\n}\n\n// stateDot0 is the state after reading the integer, decimal point, and subsequent\n// digits of a number, such as after reading `3.14`.\nfunc stateDot0(s *scanner, c byte) int {\n\tif '0' <= c && c <= '9' {\n\t\treturn scanContinue\n\t}\n\tif c == 'e' || c == 'E' {\n\t\ts.step = stateE\n\t\treturn scanContinue\n\t}\n\treturn stateEndValue(s, c)\n}\n\n// stateE is the state after reading the mantissa and e in a number,\n// such as after reading `314e` or `0.314e`.\nfunc stateE(s *scanner, c byte) int {\n\tif c == '+' || c == '-' {\n\t\ts.step = stateESign\n\t\treturn scanContinue\n\t}\n\treturn stateESign(s, c)\n}\n\n// stateESign is the state after reading the mantissa, e, and sign in a number,\n// such as after reading `314e-` or `0.314e+`.\nfunc stateESign(s *scanner, c byte) int {\n\tif '0' <= c && c <= '9' {\n\t\ts.step = stateE0\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"in exponent of numeric literal\")\n}\n\n// stateE0 is the state after reading the mantissa, e, optional sign,\n// and at least one digit of the exponent in a number,\n// such as after reading `314e-2` or `0.314e+1` or `3.14e0`.\nfunc stateE0(s *scanner, c byte) int {\n\tif '0' <= c && c <= '9' {\n\t\treturn scanContinue\n\t}\n\treturn stateEndValue(s, c)\n}\n\n// stateT is the state after reading `t`.\nfunc stateT(s *scanner, c byte) int {\n\tif c == 'r' {\n\t\ts.step = stateTr\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"in literal true (expecting 'r')\")\n}\n\n// stateTr is the state after reading `tr`.\nfunc stateTr(s *scanner, c byte) int {\n\tif c == 'u' {\n\t\ts.step = stateTru\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"in literal true (expecting 'u')\")\n}\n\n// stateTru is the state after reading `tru`.\nfunc stateTru(s *scanner, c byte) int {\n\tif c == 'e' {\n\t\ts.step = stateEndValue\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"in literal true (expecting 'e')\")\n}\n\n// stateF is the state after reading `f`.\nfunc stateF(s *scanner, c byte) int {\n\tif c == 'a' {\n\t\ts.step = stateFa\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"in literal false (expecting 'a')\")\n}\n\n// stateFa is the state after reading `fa`.\nfunc stateFa(s *scanner, c byte) int {\n\tif c == 'l' {\n\t\ts.step = stateFal\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"in literal false (expecting 'l')\")\n}\n\n// stateFal is the state after reading `fal`.\nfunc stateFal(s *scanner, c byte) int {\n\tif c == 's' {\n\t\ts.step = stateFals\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"in literal false (expecting 's')\")\n}\n\n// stateFals is the state after reading `fals`.\nfunc stateFals(s *scanner, c byte) int {\n\tif c == 'e' {\n\t\ts.step = stateEndValue\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"in literal false (expecting 'e')\")\n}\n\n// stateN is the state after reading `n`.\nfunc stateN(s *scanner, c byte) int {\n\tif c == 'u' {\n\t\ts.step = stateNu\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"in literal null (expecting 'u')\")\n}\n\n// stateNu is the state after reading `nu`.\nfunc stateNu(s *scanner, c byte) int {\n\tif c == 'l' {\n\t\ts.step = stateNul\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"in literal null (expecting 'l')\")\n}\n\n// stateNul is the state after reading `nul`.\nfunc stateNul(s *scanner, c byte) int {\n\tif c == 'l' {\n\t\ts.step = stateEndValue\n\t\treturn scanContinue\n\t}\n\treturn s.error(c, \"in literal null (expecting 'l')\")\n}\n\n// stateError is the state after reaching a syntax error,\n// such as after reading `[1}` or `5.1.2`.\nfunc stateError(s *scanner, c byte) int {\n\treturn scanError\n}\n\n// error records an error and switches to the error state.\nfunc (s *scanner) error(c byte, context string) int {\n\ts.step = stateError\n\ts.err = &SyntaxError{\"invalid character \" + quoteChar(c) + \" \" + context, s.bytes}\n\treturn scanError\n}\n\n// quoteChar formats c as a quoted character literal\nfunc quoteChar(c byte) string {\n\t// special cases - different from quoted strings\n\tif c == '\\'' {\n\t\treturn `'\\''`\n\t}\n\tif c == '\"' {\n\t\treturn `'\"'`\n\t}\n\n\t// use quoted string with different quotation marks\n\ts := strconv.Quote(string(c))\n\treturn \"'\" + s[1:len(s)-1] + \"'\"\n}\n\n// undo causes the scanner to return scanCode from the next state transition.\n// This gives callers a simple 1-byte undo mechanism.\nfunc (s *scanner) undo(scanCode int) {\n\tif s.redo {\n\t\tpanic(\"json: invalid use of scanner\")\n\t}\n\ts.redoCode = scanCode\n\ts.redoState = s.step\n\ts.step = stateRedo\n\ts.redo = true\n}\n\n// stateRedo helps implement the scanner's 1-byte undo.\nfunc stateRedo(s *scanner, c byte) int {\n\ts.redo = false\n\ts.step = s.redoState\n\treturn s.redoCode\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/json/stream.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 json\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n)\n\n// A Decoder reads and decodes JSON objects from an input stream.\ntype Decoder struct {\n\tr     io.Reader\n\tbuf   []byte\n\td     decodeState\n\tscanp int // start of unread data in buf\n\tscan  scanner\n\terr   error\n\n\ttokenState int\n\ttokenStack []int\n}\n\n// NewDecoder returns a new decoder that reads from r.\n//\n// The decoder introduces its own buffering and may\n// read data from r beyond the JSON values requested.\nfunc NewDecoder(r io.Reader) *Decoder {\n\treturn &Decoder{r: r}\n}\n\n// Deprecated: Use `SetNumberType` instead\n// UseNumber causes the Decoder to unmarshal a number into an interface{} as a\n// Number instead of as a float64.\nfunc (dec *Decoder) UseNumber() { dec.d.numberType = UnmarshalJSONNumber }\n\n// SetNumberType causes the Decoder to unmarshal a number into an interface{} as a\n// Number, float64 or int64 depending on `t` enum value.\nfunc (dec *Decoder) SetNumberType(t NumberUnmarshalType) { dec.d.numberType = t }\n\n// Decode reads the next JSON-encoded value from its\n// input and stores it in the value pointed to by v.\n//\n// See the documentation for Unmarshal for details about\n// the conversion of JSON into a Go value.\nfunc (dec *Decoder) Decode(v interface{}) error {\n\tif dec.err != nil {\n\t\treturn dec.err\n\t}\n\n\tif err := dec.tokenPrepareForDecode(); err != nil {\n\t\treturn err\n\t}\n\n\tif !dec.tokenValueAllowed() {\n\t\treturn &SyntaxError{msg: \"not at beginning of value\"}\n\t}\n\n\t// Read whole value into buffer.\n\tn, err := dec.readValue()\n\tif err != nil {\n\t\treturn err\n\t}\n\tdec.d.init(dec.buf[dec.scanp : dec.scanp+n])\n\tdec.scanp += n\n\n\t// Don't save err from unmarshal into dec.err:\n\t// the connection is still usable since we read a complete JSON\n\t// object from it before the error happened.\n\terr = dec.d.unmarshal(v)\n\n\t// fixup token streaming state\n\tdec.tokenValueEnd()\n\n\treturn err\n}\n\n// Buffered returns a reader of the data remaining in the Decoder's\n// buffer. The reader is valid until the next call to Decode.\nfunc (dec *Decoder) Buffered() io.Reader {\n\treturn bytes.NewReader(dec.buf[dec.scanp:])\n}\n\n// readValue reads a JSON value into dec.buf.\n// It returns the length of the encoding.\nfunc (dec *Decoder) readValue() (int, error) {\n\tdec.scan.reset()\n\n\tscanp := dec.scanp\n\tvar err error\nInput:\n\tfor {\n\t\t// Look in the buffer for a new value.\n\t\tfor i, c := range dec.buf[scanp:] {\n\t\t\tdec.scan.bytes++\n\t\t\tv := dec.scan.step(&dec.scan, c)\n\t\t\tif v == scanEnd {\n\t\t\t\tscanp += i\n\t\t\t\tbreak Input\n\t\t\t}\n\t\t\t// scanEnd is delayed one byte.\n\t\t\t// We might block trying to get that byte from src,\n\t\t\t// so instead invent a space byte.\n\t\t\tif (v == scanEndObject || v == scanEndArray) && dec.scan.step(&dec.scan, ' ') == scanEnd {\n\t\t\t\tscanp += i + 1\n\t\t\t\tbreak Input\n\t\t\t}\n\t\t\tif v == scanError {\n\t\t\t\tdec.err = dec.scan.err\n\t\t\t\treturn 0, dec.scan.err\n\t\t\t}\n\t\t}\n\t\tscanp = len(dec.buf)\n\n\t\t// Did the last read have an error?\n\t\t// Delayed until now to allow buffer scan.\n\t\tif err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\tif dec.scan.step(&dec.scan, ' ') == scanEnd {\n\t\t\t\t\tbreak Input\n\t\t\t\t}\n\t\t\t\tif nonSpace(dec.buf) {\n\t\t\t\t\terr = io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t}\n\t\t\tdec.err = err\n\t\t\treturn 0, err\n\t\t}\n\n\t\tn := scanp - dec.scanp\n\t\terr = dec.refill()\n\t\tscanp = dec.scanp + n\n\t}\n\treturn scanp - dec.scanp, nil\n}\n\nfunc (dec *Decoder) refill() error {\n\t// Make room to read more into the buffer.\n\t// First slide down data already consumed.\n\tif dec.scanp > 0 {\n\t\tn := copy(dec.buf, dec.buf[dec.scanp:])\n\t\tdec.buf = dec.buf[:n]\n\t\tdec.scanp = 0\n\t}\n\n\t// Grow buffer if not large enough.\n\tconst minRead = 512\n\tif cap(dec.buf)-len(dec.buf) < minRead {\n\t\tnewBuf := make([]byte, len(dec.buf), 2*cap(dec.buf)+minRead)\n\t\tcopy(newBuf, dec.buf)\n\t\tdec.buf = newBuf\n\t}\n\n\t// Read.  Delay error for next iteration (after scan).\n\tn, err := dec.r.Read(dec.buf[len(dec.buf):cap(dec.buf)])\n\tdec.buf = dec.buf[0 : len(dec.buf)+n]\n\n\treturn err\n}\n\nfunc nonSpace(b []byte) bool {\n\tfor _, c := range b {\n\t\tif !isSpace(c) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// An Encoder writes JSON objects to an output stream.\ntype Encoder struct {\n\tw   io.Writer\n\terr error\n}\n\n// NewEncoder returns a new encoder that writes to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\treturn &Encoder{w: w}\n}\n\n// Encode writes the JSON encoding of v to the stream,\n// followed by a newline character.\n//\n// See the documentation for Marshal for details about the\n// conversion of Go values to JSON.\nfunc (enc *Encoder) Encode(v interface{}) error {\n\tif enc.err != nil {\n\t\treturn enc.err\n\t}\n\te := newEncodeState()\n\terr := e.marshal(v)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Terminate each value with a newline.\n\t// This makes the output look a little nicer\n\t// when debugging, and some kind of space\n\t// is required if the encoded value was a number,\n\t// so that the reader knows there aren't more\n\t// digits coming.\n\te.WriteByte('\\n')\n\n\tif _, err = enc.w.Write(e.Bytes()); err != nil {\n\t\tenc.err = err\n\t}\n\tencodeStatePool.Put(e)\n\treturn err\n}\n\n// RawMessage is a raw encoded JSON object.\n// It implements Marshaler and Unmarshaler and can\n// be used to delay JSON decoding or precompute a JSON encoding.\ntype RawMessage []byte\n\n// MarshalJSON returns *m as the JSON encoding of m.\nfunc (m *RawMessage) MarshalJSON() ([]byte, error) {\n\treturn *m, nil\n}\n\n// UnmarshalJSON sets *m to a copy of data.\nfunc (m *RawMessage) UnmarshalJSON(data []byte) error {\n\tif m == nil {\n\t\treturn errors.New(\"json.RawMessage: UnmarshalJSON on nil pointer\")\n\t}\n\t*m = append((*m)[0:0], data...)\n\treturn nil\n}\n\nvar _ Marshaler = (*RawMessage)(nil)\nvar _ Unmarshaler = (*RawMessage)(nil)\n\n// A Token holds a value of one of these types:\n//\n//\tDelim, for the four JSON delimiters [ ] { }\n//\tbool, for JSON booleans\n//\tfloat64, for JSON numbers\n//\tNumber, for JSON numbers\n//\tstring, for JSON string literals\n//\tnil, for JSON null\n//\ntype Token interface{}\n\nconst (\n\ttokenTopValue = iota\n\ttokenArrayStart\n\ttokenArrayValue\n\ttokenArrayComma\n\ttokenObjectStart\n\ttokenObjectKey\n\ttokenObjectColon\n\ttokenObjectValue\n\ttokenObjectComma\n)\n\n// advance tokenstate from a separator state to a value state\nfunc (dec *Decoder) tokenPrepareForDecode() error {\n\t// Note: Not calling peek before switch, to avoid\n\t// putting peek into the standard Decode path.\n\t// peek is only called when using the Token API.\n\tswitch dec.tokenState {\n\tcase tokenArrayComma:\n\t\tc, err := dec.peek()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif c != ',' {\n\t\t\treturn &SyntaxError{\"expected comma after array element\", 0}\n\t\t}\n\t\tdec.scanp++\n\t\tdec.tokenState = tokenArrayValue\n\tcase tokenObjectColon:\n\t\tc, err := dec.peek()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif c != ':' {\n\t\t\treturn &SyntaxError{\"expected colon after object key\", 0}\n\t\t}\n\t\tdec.scanp++\n\t\tdec.tokenState = tokenObjectValue\n\t}\n\treturn nil\n}\n\nfunc (dec *Decoder) tokenValueAllowed() bool {\n\tswitch dec.tokenState {\n\tcase tokenTopValue, tokenArrayStart, tokenArrayValue, tokenObjectValue:\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (dec *Decoder) tokenValueEnd() {\n\tswitch dec.tokenState {\n\tcase tokenArrayStart, tokenArrayValue:\n\t\tdec.tokenState = tokenArrayComma\n\tcase tokenObjectValue:\n\t\tdec.tokenState = tokenObjectComma\n\t}\n}\n\n// A Delim is a JSON array or object delimiter, one of [ ] { or }.\ntype Delim rune\n\nfunc (d Delim) String() string {\n\treturn string(d)\n}\n\n// Token returns the next JSON token in the input stream.\n// At the end of the input stream, Token returns nil, io.EOF.\n//\n// Token guarantees that the delimiters [ ] { } it returns are\n// properly nested and matched: if Token encounters an unexpected\n// delimiter in the input, it will return an error.\n//\n// The input stream consists of basic JSON values—bool, string,\n// number, and null—along with delimiters [ ] { } of type Delim\n// to mark the start and end of arrays and objects.\n// Commas and colons are elided.\nfunc (dec *Decoder) Token() (Token, error) {\n\tfor {\n\t\tc, err := dec.peek()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswitch c {\n\t\tcase '[':\n\t\t\tif !dec.tokenValueAllowed() {\n\t\t\t\treturn dec.tokenError(c)\n\t\t\t}\n\t\t\tdec.scanp++\n\t\t\tdec.tokenStack = append(dec.tokenStack, dec.tokenState)\n\t\t\tdec.tokenState = tokenArrayStart\n\t\t\treturn Delim('['), nil\n\n\t\tcase ']':\n\t\t\tif dec.tokenState != tokenArrayStart && dec.tokenState != tokenArrayComma {\n\t\t\t\treturn dec.tokenError(c)\n\t\t\t}\n\t\t\tdec.scanp++\n\t\t\tdec.tokenState = dec.tokenStack[len(dec.tokenStack)-1]\n\t\t\tdec.tokenStack = dec.tokenStack[:len(dec.tokenStack)-1]\n\t\t\tdec.tokenValueEnd()\n\t\t\treturn Delim(']'), nil\n\n\t\tcase '{':\n\t\t\tif !dec.tokenValueAllowed() {\n\t\t\t\treturn dec.tokenError(c)\n\t\t\t}\n\t\t\tdec.scanp++\n\t\t\tdec.tokenStack = append(dec.tokenStack, dec.tokenState)\n\t\t\tdec.tokenState = tokenObjectStart\n\t\t\treturn Delim('{'), nil\n\n\t\tcase '}':\n\t\t\tif dec.tokenState != tokenObjectStart && dec.tokenState != tokenObjectComma {\n\t\t\t\treturn dec.tokenError(c)\n\t\t\t}\n\t\t\tdec.scanp++\n\t\t\tdec.tokenState = dec.tokenStack[len(dec.tokenStack)-1]\n\t\t\tdec.tokenStack = dec.tokenStack[:len(dec.tokenStack)-1]\n\t\t\tdec.tokenValueEnd()\n\t\t\treturn Delim('}'), nil\n\n\t\tcase ':':\n\t\t\tif dec.tokenState != tokenObjectColon {\n\t\t\t\treturn dec.tokenError(c)\n\t\t\t}\n\t\t\tdec.scanp++\n\t\t\tdec.tokenState = tokenObjectValue\n\t\t\tcontinue\n\n\t\tcase ',':\n\t\t\tif dec.tokenState == tokenArrayComma {\n\t\t\t\tdec.scanp++\n\t\t\t\tdec.tokenState = tokenArrayValue\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif dec.tokenState == tokenObjectComma {\n\t\t\t\tdec.scanp++\n\t\t\t\tdec.tokenState = tokenObjectKey\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn dec.tokenError(c)\n\n\t\tcase '\"':\n\t\t\tif dec.tokenState == tokenObjectStart || dec.tokenState == tokenObjectKey {\n\t\t\t\tvar x string\n\t\t\t\told := dec.tokenState\n\t\t\t\tdec.tokenState = tokenTopValue\n\t\t\t\terr := dec.Decode(&x)\n\t\t\t\tdec.tokenState = old\n\t\t\t\tif err != nil {\n\t\t\t\t\tclearOffset(err)\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tdec.tokenState = tokenObjectColon\n\t\t\t\treturn x, nil\n\t\t\t}\n\t\t\tfallthrough\n\n\t\tdefault:\n\t\t\tif !dec.tokenValueAllowed() {\n\t\t\t\treturn dec.tokenError(c)\n\t\t\t}\n\t\t\tvar x interface{}\n\t\t\tif err := dec.Decode(&x); err != nil {\n\t\t\t\tclearOffset(err)\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn x, nil\n\t\t}\n\t}\n}\n\nfunc clearOffset(err error) {\n\tif s, ok := err.(*SyntaxError); ok {\n\t\ts.Offset = 0\n\t}\n}\n\nfunc (dec *Decoder) tokenError(c byte) (Token, error) {\n\tvar context string\n\tswitch dec.tokenState {\n\tcase tokenTopValue:\n\t\tcontext = \" looking for beginning of value\"\n\tcase tokenArrayStart, tokenArrayValue, tokenObjectValue:\n\t\tcontext = \" looking for beginning of value\"\n\tcase tokenArrayComma:\n\t\tcontext = \" after array element\"\n\tcase tokenObjectKey:\n\t\tcontext = \" looking for beginning of object key string\"\n\tcase tokenObjectColon:\n\t\tcontext = \" after object key\"\n\tcase tokenObjectComma:\n\t\tcontext = \" after object key:value pair\"\n\t}\n\treturn nil, &SyntaxError{\"invalid character \" + quoteChar(c) + \" \" + context, 0}\n}\n\n// More reports whether there is another element in the\n// current array or object being parsed.\nfunc (dec *Decoder) More() bool {\n\tc, err := dec.peek()\n\treturn err == nil && c != ']' && c != '}'\n}\n\nfunc (dec *Decoder) peek() (byte, error) {\n\tvar err error\n\tfor {\n\t\tfor i := dec.scanp; i < len(dec.buf); i++ {\n\t\t\tc := dec.buf[i]\n\t\t\tif isSpace(c) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdec.scanp = i\n\t\t\treturn c, nil\n\t\t}\n\t\t// buffer has been scanned, now report any error\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\terr = dec.refill()\n\t}\n}\n\n/*\nTODO\n\n// EncodeToken writes the given JSON token to the stream.\n// It returns an error if the delimiters [ ] { } are not properly used.\n//\n// EncodeToken does not call Flush, because usually it is part of\n// a larger operation such as Encode, and those will call Flush when finished.\n// Callers that create an Encoder and then invoke EncodeToken directly,\n// without using Encode, need to call Flush when finished to ensure that\n// the JSON is written to the underlying writer.\nfunc (e *Encoder) EncodeToken(t Token) error  {\n\t...\n}\n\n*/\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/json/tags.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 json\n\nimport (\n\t\"strings\"\n)\n\n// tagOptions is the string following a comma in a struct field's \"json\"\n// tag, or the empty string. It does not include the leading comma.\ntype tagOptions string\n\n// parseTag splits a struct field's json tag into its name and\n// comma-separated options.\nfunc parseTag(tag string) (string, tagOptions) {\n\tif idx := strings.Index(tag, \",\"); idx != -1 {\n\t\treturn tag[:idx], tagOptions(tag[idx+1:])\n\t}\n\treturn tag, tagOptions(\"\")\n}\n\n// Contains reports whether a comma-separated list of options\n// contains a particular substr flag. substr must be surrounded by a\n// string boundary or commas.\nfunc (o tagOptions) Contains(optionName string) bool {\n\tif len(o) == 0 {\n\t\treturn false\n\t}\n\ts := string(o)\n\tfor s != \"\" {\n\t\tvar next string\n\t\ti := strings.Index(s, \",\")\n\t\tif i >= 0 {\n\t\t\ts, next = s[:i], s[i+1:]\n\t\t}\n\t\tif s == optionName {\n\t\t\treturn true\n\t\t}\n\t\ts = next\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/jwe.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jose\n\nimport (\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/go-jose/go-jose/v3/json\"\n)\n\n// rawJSONWebEncryption represents a raw JWE JSON object. Used for parsing/serializing.\ntype rawJSONWebEncryption struct {\n\tProtected    *byteBuffer        `json:\"protected,omitempty\"`\n\tUnprotected  *rawHeader         `json:\"unprotected,omitempty\"`\n\tHeader       *rawHeader         `json:\"header,omitempty\"`\n\tRecipients   []rawRecipientInfo `json:\"recipients,omitempty\"`\n\tAad          *byteBuffer        `json:\"aad,omitempty\"`\n\tEncryptedKey *byteBuffer        `json:\"encrypted_key,omitempty\"`\n\tIv           *byteBuffer        `json:\"iv,omitempty\"`\n\tCiphertext   *byteBuffer        `json:\"ciphertext,omitempty\"`\n\tTag          *byteBuffer        `json:\"tag,omitempty\"`\n}\n\n// rawRecipientInfo represents a raw JWE Per-Recipient header JSON object. Used for parsing/serializing.\ntype rawRecipientInfo struct {\n\tHeader       *rawHeader `json:\"header,omitempty\"`\n\tEncryptedKey string     `json:\"encrypted_key,omitempty\"`\n}\n\n// JSONWebEncryption represents an encrypted JWE object after parsing.\ntype JSONWebEncryption struct {\n\tHeader                   Header\n\tprotected, unprotected   *rawHeader\n\trecipients               []recipientInfo\n\taad, iv, ciphertext, tag []byte\n\toriginal                 *rawJSONWebEncryption\n}\n\n// recipientInfo represents a raw JWE Per-Recipient header JSON object after parsing.\ntype recipientInfo struct {\n\theader       *rawHeader\n\tencryptedKey []byte\n}\n\n// GetAuthData retrieves the (optional) authenticated data attached to the object.\nfunc (obj JSONWebEncryption) GetAuthData() []byte {\n\tif obj.aad != nil {\n\t\tout := make([]byte, len(obj.aad))\n\t\tcopy(out, obj.aad)\n\t\treturn out\n\t}\n\n\treturn nil\n}\n\n// Get the merged header values\nfunc (obj JSONWebEncryption) mergedHeaders(recipient *recipientInfo) rawHeader {\n\tout := rawHeader{}\n\tout.merge(obj.protected)\n\tout.merge(obj.unprotected)\n\n\tif recipient != nil {\n\t\tout.merge(recipient.header)\n\t}\n\n\treturn out\n}\n\n// Get the additional authenticated data from a JWE object.\nfunc (obj JSONWebEncryption) computeAuthData() []byte {\n\tvar protected string\n\n\tswitch {\n\tcase obj.original != nil && obj.original.Protected != nil:\n\t\tprotected = obj.original.Protected.base64()\n\tcase obj.protected != nil:\n\t\tprotected = base64.RawURLEncoding.EncodeToString(mustSerializeJSON((obj.protected)))\n\tdefault:\n\t\tprotected = \"\"\n\t}\n\n\toutput := []byte(protected)\n\tif obj.aad != nil {\n\t\toutput = append(output, '.')\n\t\toutput = append(output, []byte(base64.RawURLEncoding.EncodeToString(obj.aad))...)\n\t}\n\n\treturn output\n}\n\n// ParseEncrypted parses an encrypted message in compact or JWE JSON Serialization format.\nfunc ParseEncrypted(input string) (*JSONWebEncryption, error) {\n\tinput = stripWhitespace(input)\n\tif strings.HasPrefix(input, \"{\") {\n\t\treturn parseEncryptedFull(input)\n\t}\n\n\treturn parseEncryptedCompact(input)\n}\n\n// parseEncryptedFull parses a message in compact format.\nfunc parseEncryptedFull(input string) (*JSONWebEncryption, error) {\n\tvar parsed rawJSONWebEncryption\n\terr := json.Unmarshal([]byte(input), &parsed)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn parsed.sanitized()\n}\n\n// sanitized produces a cleaned-up JWE object from the raw JSON.\nfunc (parsed *rawJSONWebEncryption) sanitized() (*JSONWebEncryption, error) {\n\tobj := &JSONWebEncryption{\n\t\toriginal:    parsed,\n\t\tunprotected: parsed.Unprotected,\n\t}\n\n\t// Check that there is not a nonce in the unprotected headers\n\tif parsed.Unprotected != nil {\n\t\tif nonce := parsed.Unprotected.getNonce(); nonce != \"\" {\n\t\t\treturn nil, ErrUnprotectedNonce\n\t\t}\n\t}\n\tif parsed.Header != nil {\n\t\tif nonce := parsed.Header.getNonce(); nonce != \"\" {\n\t\t\treturn nil, ErrUnprotectedNonce\n\t\t}\n\t}\n\n\tif parsed.Protected != nil && len(parsed.Protected.bytes()) > 0 {\n\t\terr := json.Unmarshal(parsed.Protected.bytes(), &obj.protected)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid protected header: %s, %s\", err, parsed.Protected.base64())\n\t\t}\n\t}\n\n\t// Note: this must be called _after_ we parse the protected header,\n\t// otherwise fields from the protected header will not get picked up.\n\tvar err error\n\tmergedHeaders := obj.mergedHeaders(nil)\n\tobj.Header, err = mergedHeaders.sanitized()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: cannot sanitize merged headers: %v (%v)\", err, mergedHeaders)\n\t}\n\n\tif len(parsed.Recipients) == 0 {\n\t\tobj.recipients = []recipientInfo{\n\t\t\t{\n\t\t\t\theader:       parsed.Header,\n\t\t\t\tencryptedKey: parsed.EncryptedKey.bytes(),\n\t\t\t},\n\t\t}\n\t} else {\n\t\tobj.recipients = make([]recipientInfo, len(parsed.Recipients))\n\t\tfor r := range parsed.Recipients {\n\t\t\tencryptedKey, err := base64URLDecode(parsed.Recipients[r].EncryptedKey)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\t// Check that there is not a nonce in the unprotected header\n\t\t\tif parsed.Recipients[r].Header != nil && parsed.Recipients[r].Header.getNonce() != \"\" {\n\t\t\t\treturn nil, ErrUnprotectedNonce\n\t\t\t}\n\n\t\t\tobj.recipients[r].header = parsed.Recipients[r].Header\n\t\t\tobj.recipients[r].encryptedKey = encryptedKey\n\t\t}\n\t}\n\n\tfor _, recipient := range obj.recipients {\n\t\theaders := obj.mergedHeaders(&recipient)\n\t\tif headers.getAlgorithm() == \"\" || headers.getEncryption() == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: message is missing alg/enc headers\")\n\t\t}\n\t}\n\n\tobj.iv = parsed.Iv.bytes()\n\tobj.ciphertext = parsed.Ciphertext.bytes()\n\tobj.tag = parsed.Tag.bytes()\n\tobj.aad = parsed.Aad.bytes()\n\n\treturn obj, nil\n}\n\n// parseEncryptedCompact parses a message in compact format.\nfunc parseEncryptedCompact(input string) (*JSONWebEncryption, error) {\n\tparts := strings.Split(input, \".\")\n\tif len(parts) != 5 {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: compact JWE format must have five parts\")\n\t}\n\n\trawProtected, err := base64URLDecode(parts[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tencryptedKey, err := base64URLDecode(parts[1])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tiv, err := base64URLDecode(parts[2])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tciphertext, err := base64URLDecode(parts[3])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\ttag, err := base64URLDecode(parts[4])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\traw := &rawJSONWebEncryption{\n\t\tProtected:    newBuffer(rawProtected),\n\t\tEncryptedKey: newBuffer(encryptedKey),\n\t\tIv:           newBuffer(iv),\n\t\tCiphertext:   newBuffer(ciphertext),\n\t\tTag:          newBuffer(tag),\n\t}\n\n\treturn raw.sanitized()\n}\n\n// CompactSerialize serializes an object using the compact serialization format.\nfunc (obj JSONWebEncryption) CompactSerialize() (string, error) {\n\tif len(obj.recipients) != 1 || obj.unprotected != nil ||\n\t\tobj.protected == nil || obj.recipients[0].header != nil {\n\t\treturn \"\", ErrNotSupported\n\t}\n\n\tserializedProtected := mustSerializeJSON(obj.protected)\n\n\treturn fmt.Sprintf(\n\t\t\"%s.%s.%s.%s.%s\",\n\t\tbase64.RawURLEncoding.EncodeToString(serializedProtected),\n\t\tbase64.RawURLEncoding.EncodeToString(obj.recipients[0].encryptedKey),\n\t\tbase64.RawURLEncoding.EncodeToString(obj.iv),\n\t\tbase64.RawURLEncoding.EncodeToString(obj.ciphertext),\n\t\tbase64.RawURLEncoding.EncodeToString(obj.tag)), nil\n}\n\n// FullSerialize serializes an object using the full JSON serialization format.\nfunc (obj JSONWebEncryption) FullSerialize() string {\n\traw := rawJSONWebEncryption{\n\t\tUnprotected:  obj.unprotected,\n\t\tIv:           newBuffer(obj.iv),\n\t\tCiphertext:   newBuffer(obj.ciphertext),\n\t\tEncryptedKey: newBuffer(obj.recipients[0].encryptedKey),\n\t\tTag:          newBuffer(obj.tag),\n\t\tAad:          newBuffer(obj.aad),\n\t\tRecipients:   []rawRecipientInfo{},\n\t}\n\n\tif len(obj.recipients) > 1 {\n\t\tfor _, recipient := range obj.recipients {\n\t\t\tinfo := rawRecipientInfo{\n\t\t\t\tHeader:       recipient.header,\n\t\t\t\tEncryptedKey: base64.RawURLEncoding.EncodeToString(recipient.encryptedKey),\n\t\t\t}\n\t\t\traw.Recipients = append(raw.Recipients, info)\n\t\t}\n\t} else {\n\t\t// Use flattened serialization\n\t\traw.Header = obj.recipients[0].header\n\t\traw.EncryptedKey = newBuffer(obj.recipients[0].encryptedKey)\n\t}\n\n\tif obj.protected != nil {\n\t\traw.Protected = newBuffer(mustSerializeJSON(obj.protected))\n\t}\n\n\treturn string(mustSerializeJSON(raw))\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/jwk.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jose\n\nimport (\n\t\"bytes\"\n\t\"crypto\"\n\t\"crypto/ecdsa\"\n\t\"crypto/ed25519\"\n\t\"crypto/elliptic\"\n\t\"crypto/rsa\"\n\t\"crypto/sha1\"\n\t\"crypto/sha256\"\n\t\"crypto/x509\"\n\t\"encoding/base64\"\n\t\"encoding/hex\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math/big\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/go-jose/go-jose/v3/json\"\n)\n\n// rawJSONWebKey represents a public or private key in JWK format, used for parsing/serializing.\ntype rawJSONWebKey struct {\n\tUse string      `json:\"use,omitempty\"`\n\tKty string      `json:\"kty,omitempty\"`\n\tKid string      `json:\"kid,omitempty\"`\n\tCrv string      `json:\"crv,omitempty\"`\n\tAlg string      `json:\"alg,omitempty\"`\n\tK   *byteBuffer `json:\"k,omitempty\"`\n\tX   *byteBuffer `json:\"x,omitempty\"`\n\tY   *byteBuffer `json:\"y,omitempty\"`\n\tN   *byteBuffer `json:\"n,omitempty\"`\n\tE   *byteBuffer `json:\"e,omitempty\"`\n\t// -- Following fields are only used for private keys --\n\t// RSA uses D, P and Q, while ECDSA uses only D. Fields Dp, Dq, and Qi are\n\t// completely optional. Therefore for RSA/ECDSA, D != nil is a contract that\n\t// we have a private key whereas D == nil means we have only a public key.\n\tD  *byteBuffer `json:\"d,omitempty\"`\n\tP  *byteBuffer `json:\"p,omitempty\"`\n\tQ  *byteBuffer `json:\"q,omitempty\"`\n\tDp *byteBuffer `json:\"dp,omitempty\"`\n\tDq *byteBuffer `json:\"dq,omitempty\"`\n\tQi *byteBuffer `json:\"qi,omitempty\"`\n\t// Certificates\n\tX5c       []string `json:\"x5c,omitempty\"`\n\tX5u       string   `json:\"x5u,omitempty\"`\n\tX5tSHA1   string   `json:\"x5t,omitempty\"`\n\tX5tSHA256 string   `json:\"x5t#S256,omitempty\"`\n}\n\n// JSONWebKey represents a public or private key in JWK format.\ntype JSONWebKey struct {\n\t// Cryptographic key, can be a symmetric or asymmetric key.\n\tKey interface{}\n\t// Key identifier, parsed from `kid` header.\n\tKeyID string\n\t// Key algorithm, parsed from `alg` header.\n\tAlgorithm string\n\t// Key use, parsed from `use` header.\n\tUse string\n\n\t// X.509 certificate chain, parsed from `x5c` header.\n\tCertificates []*x509.Certificate\n\t// X.509 certificate URL, parsed from `x5u` header.\n\tCertificatesURL *url.URL\n\t// X.509 certificate thumbprint (SHA-1), parsed from `x5t` header.\n\tCertificateThumbprintSHA1 []byte\n\t// X.509 certificate thumbprint (SHA-256), parsed from `x5t#S256` header.\n\tCertificateThumbprintSHA256 []byte\n}\n\n// MarshalJSON serializes the given key to its JSON representation.\nfunc (k JSONWebKey) MarshalJSON() ([]byte, error) {\n\tvar raw *rawJSONWebKey\n\tvar err error\n\n\tswitch key := k.Key.(type) {\n\tcase ed25519.PublicKey:\n\t\traw = fromEdPublicKey(key)\n\tcase *ecdsa.PublicKey:\n\t\traw, err = fromEcPublicKey(key)\n\tcase *rsa.PublicKey:\n\t\traw = fromRsaPublicKey(key)\n\tcase ed25519.PrivateKey:\n\t\traw, err = fromEdPrivateKey(key)\n\tcase *ecdsa.PrivateKey:\n\t\traw, err = fromEcPrivateKey(key)\n\tcase *rsa.PrivateKey:\n\t\traw, err = fromRsaPrivateKey(key)\n\tcase []byte:\n\t\traw, err = fromSymmetricKey(key)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: unknown key type '%s'\", reflect.TypeOf(key))\n\t}\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\traw.Kid = k.KeyID\n\traw.Alg = k.Algorithm\n\traw.Use = k.Use\n\n\tfor _, cert := range k.Certificates {\n\t\traw.X5c = append(raw.X5c, base64.StdEncoding.EncodeToString(cert.Raw))\n\t}\n\n\tx5tSHA1Len := len(k.CertificateThumbprintSHA1)\n\tx5tSHA256Len := len(k.CertificateThumbprintSHA256)\n\tif x5tSHA1Len > 0 {\n\t\tif x5tSHA1Len != sha1.Size {\n\t\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid SHA-1 thumbprint (must be %d bytes, not %d)\", sha1.Size, x5tSHA1Len)\n\t\t}\n\t\traw.X5tSHA1 = base64.RawURLEncoding.EncodeToString(k.CertificateThumbprintSHA1)\n\t}\n\tif x5tSHA256Len > 0 {\n\t\tif x5tSHA256Len != sha256.Size {\n\t\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid SHA-256 thumbprint (must be %d bytes, not %d)\", sha256.Size, x5tSHA256Len)\n\t\t}\n\t\traw.X5tSHA256 = base64.RawURLEncoding.EncodeToString(k.CertificateThumbprintSHA256)\n\t}\n\n\t// If cert chain is attached (as opposed to being behind a URL), check the\n\t// keys thumbprints to make sure they match what is expected. This is to\n\t// ensure we don't accidentally produce a JWK with semantically inconsistent\n\t// data in the headers.\n\tif len(k.Certificates) > 0 {\n\t\texpectedSHA1 := sha1.Sum(k.Certificates[0].Raw)\n\t\texpectedSHA256 := sha256.Sum256(k.Certificates[0].Raw)\n\n\t\tif len(k.CertificateThumbprintSHA1) > 0 && !bytes.Equal(k.CertificateThumbprintSHA1, expectedSHA1[:]) {\n\t\t\treturn nil, errors.New(\"go-jose/go-jose: invalid SHA-1 thumbprint, does not match cert chain\")\n\t\t}\n\t\tif len(k.CertificateThumbprintSHA256) > 0 && !bytes.Equal(k.CertificateThumbprintSHA256, expectedSHA256[:]) {\n\t\t\treturn nil, errors.New(\"go-jose/go-jose: invalid or SHA-256 thumbprint, does not match cert chain\")\n\t\t}\n\t}\n\n\tif k.CertificatesURL != nil {\n\t\traw.X5u = k.CertificatesURL.String()\n\t}\n\n\treturn json.Marshal(raw)\n}\n\n// UnmarshalJSON reads a key from its JSON representation.\nfunc (k *JSONWebKey) UnmarshalJSON(data []byte) (err error) {\n\tvar raw rawJSONWebKey\n\terr = json.Unmarshal(data, &raw)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcerts, err := parseCertificateChain(raw.X5c)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"go-jose/go-jose: failed to unmarshal x5c field: %s\", err)\n\t}\n\n\tvar key interface{}\n\tvar certPub interface{}\n\tvar keyPub interface{}\n\n\tif len(certs) > 0 {\n\t\t// We need to check that leaf public key matches the key embedded in this\n\t\t// JWK, as required by the standard (see RFC 7517, Section 4.7). Otherwise\n\t\t// the JWK parsed could be semantically invalid. Technically, should also\n\t\t// check key usage fields and other extensions on the cert here, but the\n\t\t// standard doesn't exactly explain how they're supposed to map from the\n\t\t// JWK representation to the X.509 extensions.\n\t\tcertPub = certs[0].PublicKey\n\t}\n\n\tswitch raw.Kty {\n\tcase \"EC\":\n\t\tif raw.D != nil {\n\t\t\tkey, err = raw.ecPrivateKey()\n\t\t\tif err == nil {\n\t\t\t\tkeyPub = key.(*ecdsa.PrivateKey).Public()\n\t\t\t}\n\t\t} else {\n\t\t\tkey, err = raw.ecPublicKey()\n\t\t\tkeyPub = key\n\t\t}\n\tcase \"RSA\":\n\t\tif raw.D != nil {\n\t\t\tkey, err = raw.rsaPrivateKey()\n\t\t\tif err == nil {\n\t\t\t\tkeyPub = key.(*rsa.PrivateKey).Public()\n\t\t\t}\n\t\t} else {\n\t\t\tkey, err = raw.rsaPublicKey()\n\t\t\tkeyPub = key\n\t\t}\n\tcase \"oct\":\n\t\tif certPub != nil {\n\t\t\treturn errors.New(\"go-jose/go-jose: invalid JWK, found 'oct' (symmetric) key with cert chain\")\n\t\t}\n\t\tkey, err = raw.symmetricKey()\n\tcase \"OKP\":\n\t\tif raw.Crv == \"Ed25519\" && raw.X != nil {\n\t\t\tif raw.D != nil {\n\t\t\t\tkey, err = raw.edPrivateKey()\n\t\t\t\tif err == nil {\n\t\t\t\t\tkeyPub = key.(ed25519.PrivateKey).Public()\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tkey, err = raw.edPublicKey()\n\t\t\t\tkeyPub = key\n\t\t\t}\n\t\t} else {\n\t\t\terr = fmt.Errorf(\"go-jose/go-jose: unknown curve %s'\", raw.Crv)\n\t\t}\n\tdefault:\n\t\terr = fmt.Errorf(\"go-jose/go-jose: unknown json web key type '%s'\", raw.Kty)\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif certPub != nil && keyPub != nil {\n\t\tif !reflect.DeepEqual(certPub, keyPub) {\n\t\t\treturn errors.New(\"go-jose/go-jose: invalid JWK, public keys in key and x5c fields do not match\")\n\t\t}\n\t}\n\n\t*k = JSONWebKey{Key: key, KeyID: raw.Kid, Algorithm: raw.Alg, Use: raw.Use, Certificates: certs}\n\n\tif raw.X5u != \"\" {\n\t\tk.CertificatesURL, err = url.Parse(raw.X5u)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"go-jose/go-jose: invalid JWK, x5u header is invalid URL: %w\", err)\n\t\t}\n\t}\n\n\t// x5t parameters are base64url-encoded SHA thumbprints\n\t// See RFC 7517, Section 4.8, https://tools.ietf.org/html/rfc7517#section-4.8\n\tx5tSHA1bytes, err := base64URLDecode(raw.X5tSHA1)\n\tif err != nil {\n\t\treturn errors.New(\"go-jose/go-jose: invalid JWK, x5t header has invalid encoding\")\n\t}\n\n\t// RFC 7517, Section 4.8 is ambiguous as to whether the digest output should be byte or hex,\n\t// for this reason, after base64 decoding, if the size is sha1.Size it's likely that the value is a byte encoded\n\t// checksum so we skip this. Otherwise if the checksum was hex encoded we expect a 40 byte sized array so we'll\n\t// try to hex decode it. When Marshalling this value we'll always use a base64 encoded version of byte format checksum.\n\tif len(x5tSHA1bytes) == 2*sha1.Size {\n\t\thx, err := hex.DecodeString(string(x5tSHA1bytes))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"go-jose/go-jose: invalid JWK, unable to hex decode x5t: %v\", err)\n\n\t\t}\n\t\tx5tSHA1bytes = hx\n\t}\n\n\tk.CertificateThumbprintSHA1 = x5tSHA1bytes\n\n\tx5tSHA256bytes, err := base64URLDecode(raw.X5tSHA256)\n\tif err != nil {\n\t\treturn errors.New(\"go-jose/go-jose: invalid JWK, x5t#S256 header has invalid encoding\")\n\t}\n\n\tif len(x5tSHA256bytes) == 2*sha256.Size {\n\t\thx256, err := hex.DecodeString(string(x5tSHA256bytes))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"go-jose/go-jose: invalid JWK, unable to hex decode x5t#S256: %v\", err)\n\t\t}\n\t\tx5tSHA256bytes = hx256\n\t}\n\n\tk.CertificateThumbprintSHA256 = x5tSHA256bytes\n\n\tx5tSHA1Len := len(k.CertificateThumbprintSHA1)\n\tx5tSHA256Len := len(k.CertificateThumbprintSHA256)\n\tif x5tSHA1Len > 0 && x5tSHA1Len != sha1.Size {\n\t\treturn errors.New(\"go-jose/go-jose: invalid JWK, x5t header is of incorrect size\")\n\t}\n\tif x5tSHA256Len > 0 && x5tSHA256Len != sha256.Size {\n\t\treturn errors.New(\"go-jose/go-jose: invalid JWK, x5t#S256 header is of incorrect size\")\n\t}\n\n\t// If certificate chain *and* thumbprints are set, verify correctness.\n\tif len(k.Certificates) > 0 {\n\t\tleaf := k.Certificates[0]\n\t\tsha1sum := sha1.Sum(leaf.Raw)\n\t\tsha256sum := sha256.Sum256(leaf.Raw)\n\n\t\tif len(k.CertificateThumbprintSHA1) > 0 && !bytes.Equal(sha1sum[:], k.CertificateThumbprintSHA1) {\n\t\t\treturn errors.New(\"go-jose/go-jose: invalid JWK, x5c thumbprint does not match x5t value\")\n\t\t}\n\n\t\tif len(k.CertificateThumbprintSHA256) > 0 && !bytes.Equal(sha256sum[:], k.CertificateThumbprintSHA256) {\n\t\t\treturn errors.New(\"go-jose/go-jose: invalid JWK, x5c thumbprint does not match x5t#S256 value\")\n\t\t}\n\t}\n\n\treturn\n}\n\n// JSONWebKeySet represents a JWK Set object.\ntype JSONWebKeySet struct {\n\tKeys []JSONWebKey `json:\"keys\"`\n}\n\n// Key convenience method returns keys by key ID. Specification states\n// that a JWK Set \"SHOULD\" use distinct key IDs, but allows for some\n// cases where they are not distinct. Hence method returns a slice\n// of JSONWebKeys.\nfunc (s *JSONWebKeySet) Key(kid string) []JSONWebKey {\n\tvar keys []JSONWebKey\n\tfor _, key := range s.Keys {\n\t\tif key.KeyID == kid {\n\t\t\tkeys = append(keys, key)\n\t\t}\n\t}\n\n\treturn keys\n}\n\nconst rsaThumbprintTemplate = `{\"e\":\"%s\",\"kty\":\"RSA\",\"n\":\"%s\"}`\nconst ecThumbprintTemplate = `{\"crv\":\"%s\",\"kty\":\"EC\",\"x\":\"%s\",\"y\":\"%s\"}`\nconst edThumbprintTemplate = `{\"crv\":\"%s\",\"kty\":\"OKP\",\"x\":\"%s\"}`\n\nfunc ecThumbprintInput(curve elliptic.Curve, x, y *big.Int) (string, error) {\n\tcoordLength := curveSize(curve)\n\tcrv, err := curveName(curve)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif len(x.Bytes()) > coordLength || len(y.Bytes()) > coordLength {\n\t\treturn \"\", errors.New(\"go-jose/go-jose: invalid elliptic key (too large)\")\n\t}\n\n\treturn fmt.Sprintf(ecThumbprintTemplate, crv,\n\t\tnewFixedSizeBuffer(x.Bytes(), coordLength).base64(),\n\t\tnewFixedSizeBuffer(y.Bytes(), coordLength).base64()), nil\n}\n\nfunc rsaThumbprintInput(n *big.Int, e int) (string, error) {\n\treturn fmt.Sprintf(rsaThumbprintTemplate,\n\t\tnewBufferFromInt(uint64(e)).base64(),\n\t\tnewBuffer(n.Bytes()).base64()), nil\n}\n\nfunc edThumbprintInput(ed ed25519.PublicKey) (string, error) {\n\tcrv := \"Ed25519\"\n\tif len(ed) > 32 {\n\t\treturn \"\", errors.New(\"go-jose/go-jose: invalid elliptic key (too large)\")\n\t}\n\treturn fmt.Sprintf(edThumbprintTemplate, crv,\n\t\tnewFixedSizeBuffer(ed, 32).base64()), nil\n}\n\n// Thumbprint computes the JWK Thumbprint of a key using the\n// indicated hash algorithm.\nfunc (k *JSONWebKey) Thumbprint(hash crypto.Hash) ([]byte, error) {\n\tvar input string\n\tvar err error\n\tswitch key := k.Key.(type) {\n\tcase ed25519.PublicKey:\n\t\tinput, err = edThumbprintInput(key)\n\tcase *ecdsa.PublicKey:\n\t\tinput, err = ecThumbprintInput(key.Curve, key.X, key.Y)\n\tcase *ecdsa.PrivateKey:\n\t\tinput, err = ecThumbprintInput(key.Curve, key.X, key.Y)\n\tcase *rsa.PublicKey:\n\t\tinput, err = rsaThumbprintInput(key.N, key.E)\n\tcase *rsa.PrivateKey:\n\t\tinput, err = rsaThumbprintInput(key.N, key.E)\n\tcase ed25519.PrivateKey:\n\t\tinput, err = edThumbprintInput(ed25519.PublicKey(key[32:]))\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: unknown key type '%s'\", reflect.TypeOf(key))\n\t}\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\th := hash.New()\n\t_, _ = h.Write([]byte(input))\n\treturn h.Sum(nil), nil\n}\n\n// IsPublic returns true if the JWK represents a public key (not symmetric, not private).\nfunc (k *JSONWebKey) IsPublic() bool {\n\tswitch k.Key.(type) {\n\tcase *ecdsa.PublicKey, *rsa.PublicKey, ed25519.PublicKey:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Public creates JSONWebKey with corresponding public key if JWK represents asymmetric private key.\nfunc (k *JSONWebKey) Public() JSONWebKey {\n\tif k.IsPublic() {\n\t\treturn *k\n\t}\n\tret := *k\n\tswitch key := k.Key.(type) {\n\tcase *ecdsa.PrivateKey:\n\t\tret.Key = key.Public()\n\tcase *rsa.PrivateKey:\n\t\tret.Key = key.Public()\n\tcase ed25519.PrivateKey:\n\t\tret.Key = key.Public()\n\tdefault:\n\t\treturn JSONWebKey{} // returning invalid key\n\t}\n\treturn ret\n}\n\n// Valid checks that the key contains the expected parameters.\nfunc (k *JSONWebKey) Valid() bool {\n\tif k.Key == nil {\n\t\treturn false\n\t}\n\tswitch key := k.Key.(type) {\n\tcase *ecdsa.PublicKey:\n\t\tif key.Curve == nil || key.X == nil || key.Y == nil {\n\t\t\treturn false\n\t\t}\n\tcase *ecdsa.PrivateKey:\n\t\tif key.Curve == nil || key.X == nil || key.Y == nil || key.D == nil {\n\t\t\treturn false\n\t\t}\n\tcase *rsa.PublicKey:\n\t\tif key.N == nil || key.E == 0 {\n\t\t\treturn false\n\t\t}\n\tcase *rsa.PrivateKey:\n\t\tif key.N == nil || key.E == 0 || key.D == nil || len(key.Primes) < 2 {\n\t\t\treturn false\n\t\t}\n\tcase ed25519.PublicKey:\n\t\tif len(key) != 32 {\n\t\t\treturn false\n\t\t}\n\tcase ed25519.PrivateKey:\n\t\tif len(key) != 64 {\n\t\t\treturn false\n\t\t}\n\tdefault:\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc (key rawJSONWebKey) rsaPublicKey() (*rsa.PublicKey, error) {\n\tif key.N == nil || key.E == nil {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid RSA key, missing n/e values\")\n\t}\n\n\treturn &rsa.PublicKey{\n\t\tN: key.N.bigInt(),\n\t\tE: key.E.toInt(),\n\t}, nil\n}\n\nfunc fromEdPublicKey(pub ed25519.PublicKey) *rawJSONWebKey {\n\treturn &rawJSONWebKey{\n\t\tKty: \"OKP\",\n\t\tCrv: \"Ed25519\",\n\t\tX:   newBuffer(pub),\n\t}\n}\n\nfunc fromRsaPublicKey(pub *rsa.PublicKey) *rawJSONWebKey {\n\treturn &rawJSONWebKey{\n\t\tKty: \"RSA\",\n\t\tN:   newBuffer(pub.N.Bytes()),\n\t\tE:   newBufferFromInt(uint64(pub.E)),\n\t}\n}\n\nfunc (key rawJSONWebKey) ecPublicKey() (*ecdsa.PublicKey, error) {\n\tvar curve elliptic.Curve\n\tswitch key.Crv {\n\tcase \"P-256\":\n\t\tcurve = elliptic.P256()\n\tcase \"P-384\":\n\t\tcurve = elliptic.P384()\n\tcase \"P-521\":\n\t\tcurve = elliptic.P521()\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: unsupported elliptic curve '%s'\", key.Crv)\n\t}\n\n\tif key.X == nil || key.Y == nil {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid EC key, missing x/y values\")\n\t}\n\n\t// The length of this octet string MUST be the full size of a coordinate for\n\t// the curve specified in the \"crv\" parameter.\n\t// https://tools.ietf.org/html/rfc7518#section-6.2.1.2\n\tif curveSize(curve) != len(key.X.data) {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid EC public key, wrong length for x\")\n\t}\n\n\tif curveSize(curve) != len(key.Y.data) {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid EC public key, wrong length for y\")\n\t}\n\n\tx := key.X.bigInt()\n\ty := key.Y.bigInt()\n\n\tif !curve.IsOnCurve(x, y) {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid EC key, X/Y are not on declared curve\")\n\t}\n\n\treturn &ecdsa.PublicKey{\n\t\tCurve: curve,\n\t\tX:     x,\n\t\tY:     y,\n\t}, nil\n}\n\nfunc fromEcPublicKey(pub *ecdsa.PublicKey) (*rawJSONWebKey, error) {\n\tif pub == nil || pub.X == nil || pub.Y == nil {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid EC key (nil, or X/Y missing)\")\n\t}\n\n\tname, err := curveName(pub.Curve)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsize := curveSize(pub.Curve)\n\n\txBytes := pub.X.Bytes()\n\tyBytes := pub.Y.Bytes()\n\n\tif len(xBytes) > size || len(yBytes) > size {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid EC key (X/Y too large)\")\n\t}\n\n\tkey := &rawJSONWebKey{\n\t\tKty: \"EC\",\n\t\tCrv: name,\n\t\tX:   newFixedSizeBuffer(xBytes, size),\n\t\tY:   newFixedSizeBuffer(yBytes, size),\n\t}\n\n\treturn key, nil\n}\n\nfunc (key rawJSONWebKey) edPrivateKey() (ed25519.PrivateKey, error) {\n\tvar missing []string\n\tswitch {\n\tcase key.D == nil:\n\t\tmissing = append(missing, \"D\")\n\tcase key.X == nil:\n\t\tmissing = append(missing, \"X\")\n\t}\n\n\tif len(missing) > 0 {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid Ed25519 private key, missing %s value(s)\", strings.Join(missing, \", \"))\n\t}\n\n\tprivateKey := make([]byte, ed25519.PrivateKeySize)\n\tcopy(privateKey[0:32], key.D.bytes())\n\tcopy(privateKey[32:], key.X.bytes())\n\trv := ed25519.PrivateKey(privateKey)\n\treturn rv, nil\n}\n\nfunc (key rawJSONWebKey) edPublicKey() (ed25519.PublicKey, error) {\n\tif key.X == nil {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid Ed key, missing x value\")\n\t}\n\tpublicKey := make([]byte, ed25519.PublicKeySize)\n\tcopy(publicKey[0:32], key.X.bytes())\n\trv := ed25519.PublicKey(publicKey)\n\treturn rv, nil\n}\n\nfunc (key rawJSONWebKey) rsaPrivateKey() (*rsa.PrivateKey, error) {\n\tvar missing []string\n\tswitch {\n\tcase key.N == nil:\n\t\tmissing = append(missing, \"N\")\n\tcase key.E == nil:\n\t\tmissing = append(missing, \"E\")\n\tcase key.D == nil:\n\t\tmissing = append(missing, \"D\")\n\tcase key.P == nil:\n\t\tmissing = append(missing, \"P\")\n\tcase key.Q == nil:\n\t\tmissing = append(missing, \"Q\")\n\t}\n\n\tif len(missing) > 0 {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid RSA private key, missing %s value(s)\", strings.Join(missing, \", \"))\n\t}\n\n\trv := &rsa.PrivateKey{\n\t\tPublicKey: rsa.PublicKey{\n\t\t\tN: key.N.bigInt(),\n\t\t\tE: key.E.toInt(),\n\t\t},\n\t\tD: key.D.bigInt(),\n\t\tPrimes: []*big.Int{\n\t\t\tkey.P.bigInt(),\n\t\t\tkey.Q.bigInt(),\n\t\t},\n\t}\n\n\tif key.Dp != nil {\n\t\trv.Precomputed.Dp = key.Dp.bigInt()\n\t}\n\tif key.Dq != nil {\n\t\trv.Precomputed.Dq = key.Dq.bigInt()\n\t}\n\tif key.Qi != nil {\n\t\trv.Precomputed.Qinv = key.Qi.bigInt()\n\t}\n\n\terr := rv.Validate()\n\treturn rv, err\n}\n\nfunc fromEdPrivateKey(ed ed25519.PrivateKey) (*rawJSONWebKey, error) {\n\traw := fromEdPublicKey(ed25519.PublicKey(ed[32:]))\n\n\traw.D = newBuffer(ed[0:32])\n\treturn raw, nil\n}\n\nfunc fromRsaPrivateKey(rsa *rsa.PrivateKey) (*rawJSONWebKey, error) {\n\tif len(rsa.Primes) != 2 {\n\t\treturn nil, ErrUnsupportedKeyType\n\t}\n\n\traw := fromRsaPublicKey(&rsa.PublicKey)\n\n\traw.D = newBuffer(rsa.D.Bytes())\n\traw.P = newBuffer(rsa.Primes[0].Bytes())\n\traw.Q = newBuffer(rsa.Primes[1].Bytes())\n\n\tif rsa.Precomputed.Dp != nil {\n\t\traw.Dp = newBuffer(rsa.Precomputed.Dp.Bytes())\n\t}\n\tif rsa.Precomputed.Dq != nil {\n\t\traw.Dq = newBuffer(rsa.Precomputed.Dq.Bytes())\n\t}\n\tif rsa.Precomputed.Qinv != nil {\n\t\traw.Qi = newBuffer(rsa.Precomputed.Qinv.Bytes())\n\t}\n\n\treturn raw, nil\n}\n\nfunc (key rawJSONWebKey) ecPrivateKey() (*ecdsa.PrivateKey, error) {\n\tvar curve elliptic.Curve\n\tswitch key.Crv {\n\tcase \"P-256\":\n\t\tcurve = elliptic.P256()\n\tcase \"P-384\":\n\t\tcurve = elliptic.P384()\n\tcase \"P-521\":\n\t\tcurve = elliptic.P521()\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: unsupported elliptic curve '%s'\", key.Crv)\n\t}\n\n\tif key.X == nil || key.Y == nil || key.D == nil {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid EC private key, missing x/y/d values\")\n\t}\n\n\t// The length of this octet string MUST be the full size of a coordinate for\n\t// the curve specified in the \"crv\" parameter.\n\t// https://tools.ietf.org/html/rfc7518#section-6.2.1.2\n\tif curveSize(curve) != len(key.X.data) {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid EC private key, wrong length for x\")\n\t}\n\n\tif curveSize(curve) != len(key.Y.data) {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid EC private key, wrong length for y\")\n\t}\n\n\t// https://tools.ietf.org/html/rfc7518#section-6.2.2.1\n\tif dSize(curve) != len(key.D.data) {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid EC private key, wrong length for d\")\n\t}\n\n\tx := key.X.bigInt()\n\ty := key.Y.bigInt()\n\n\tif !curve.IsOnCurve(x, y) {\n\t\treturn nil, errors.New(\"go-jose/go-jose: invalid EC key, X/Y are not on declared curve\")\n\t}\n\n\treturn &ecdsa.PrivateKey{\n\t\tPublicKey: ecdsa.PublicKey{\n\t\t\tCurve: curve,\n\t\t\tX:     x,\n\t\t\tY:     y,\n\t\t},\n\t\tD: key.D.bigInt(),\n\t}, nil\n}\n\nfunc fromEcPrivateKey(ec *ecdsa.PrivateKey) (*rawJSONWebKey, error) {\n\traw, err := fromEcPublicKey(&ec.PublicKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif ec.D == nil {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid EC private key\")\n\t}\n\n\traw.D = newFixedSizeBuffer(ec.D.Bytes(), dSize(ec.PublicKey.Curve))\n\n\treturn raw, nil\n}\n\n// dSize returns the size in octets for the \"d\" member of an elliptic curve\n// private key.\n// The length of this octet string MUST be ceiling(log-base-2(n)/8)\n// octets (where n is the order of the curve).\n// https://tools.ietf.org/html/rfc7518#section-6.2.2.1\nfunc dSize(curve elliptic.Curve) int {\n\torder := curve.Params().P\n\tbitLen := order.BitLen()\n\tsize := bitLen / 8\n\tif bitLen%8 != 0 {\n\t\tsize++\n\t}\n\treturn size\n}\n\nfunc fromSymmetricKey(key []byte) (*rawJSONWebKey, error) {\n\treturn &rawJSONWebKey{\n\t\tKty: \"oct\",\n\t\tK:   newBuffer(key),\n\t}, nil\n}\n\nfunc (key rawJSONWebKey) symmetricKey() ([]byte, error) {\n\tif key.K == nil {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid OCT (symmetric) key, missing k value\")\n\t}\n\treturn key.K.bytes(), nil\n}\n\nfunc tryJWKS(key interface{}, headers ...Header) interface{} {\n\tvar jwks JSONWebKeySet\n\n\tswitch jwksType := key.(type) {\n\tcase *JSONWebKeySet:\n\t\tjwks = *jwksType\n\tcase JSONWebKeySet:\n\t\tjwks = jwksType\n\tdefault:\n\t\treturn key\n\t}\n\n\tvar kid string\n\tfor _, header := range headers {\n\t\tif header.KeyID != \"\" {\n\t\t\tkid = header.KeyID\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif kid == \"\" {\n\t\treturn key\n\t}\n\n\tkeys := jwks.Key(kid)\n\tif len(keys) == 0 {\n\t\treturn key\n\t}\n\n\treturn keys[0].Key\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/jws.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jose\n\nimport (\n\t\"bytes\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/go-jose/go-jose/v3/json\"\n)\n\n// rawJSONWebSignature represents a raw JWS JSON object. Used for parsing/serializing.\ntype rawJSONWebSignature struct {\n\tPayload    *byteBuffer        `json:\"payload,omitempty\"`\n\tSignatures []rawSignatureInfo `json:\"signatures,omitempty\"`\n\tProtected  *byteBuffer        `json:\"protected,omitempty\"`\n\tHeader     *rawHeader         `json:\"header,omitempty\"`\n\tSignature  *byteBuffer        `json:\"signature,omitempty\"`\n}\n\n// rawSignatureInfo represents a single JWS signature over the JWS payload and protected header.\ntype rawSignatureInfo struct {\n\tProtected *byteBuffer `json:\"protected,omitempty\"`\n\tHeader    *rawHeader  `json:\"header,omitempty\"`\n\tSignature *byteBuffer `json:\"signature,omitempty\"`\n}\n\n// JSONWebSignature represents a signed JWS object after parsing.\ntype JSONWebSignature struct {\n\tpayload []byte\n\t// Signatures attached to this object (may be more than one for multi-sig).\n\t// Be careful about accessing these directly, prefer to use Verify() or\n\t// VerifyMulti() to ensure that the data you're getting is verified.\n\tSignatures []Signature\n}\n\n// Signature represents a single signature over the JWS payload and protected header.\ntype Signature struct {\n\t// Merged header fields. Contains both protected and unprotected header\n\t// values. Prefer using Protected and Unprotected fields instead of this.\n\t// Values in this header may or may not have been signed and in general\n\t// should not be trusted.\n\tHeader Header\n\n\t// Protected header. Values in this header were signed and\n\t// will be verified as part of the signature verification process.\n\tProtected Header\n\n\t// Unprotected header. Values in this header were not signed\n\t// and in general should not be trusted.\n\tUnprotected Header\n\n\t// The actual signature value\n\tSignature []byte\n\n\tprotected *rawHeader\n\theader    *rawHeader\n\toriginal  *rawSignatureInfo\n}\n\n// ParseSigned parses a signed message in compact or JWS JSON Serialization format.\nfunc ParseSigned(signature string) (*JSONWebSignature, error) {\n\tsignature = stripWhitespace(signature)\n\tif strings.HasPrefix(signature, \"{\") {\n\t\treturn parseSignedFull(signature)\n\t}\n\n\treturn parseSignedCompact(signature, nil)\n}\n\n// ParseDetached parses a signed message in compact serialization format with detached payload.\nfunc ParseDetached(signature string, payload []byte) (*JSONWebSignature, error) {\n\tif payload == nil {\n\t\treturn nil, errors.New(\"go-jose/go-jose: nil payload\")\n\t}\n\treturn parseSignedCompact(stripWhitespace(signature), payload)\n}\n\n// Get a header value\nfunc (sig Signature) mergedHeaders() rawHeader {\n\tout := rawHeader{}\n\tout.merge(sig.protected)\n\tout.merge(sig.header)\n\treturn out\n}\n\n// Compute data to be signed\nfunc (obj JSONWebSignature) computeAuthData(payload []byte, signature *Signature) ([]byte, error) {\n\tvar authData bytes.Buffer\n\n\tprotectedHeader := new(rawHeader)\n\n\tif signature.original != nil && signature.original.Protected != nil {\n\t\tif err := json.Unmarshal(signature.original.Protected.bytes(), protectedHeader); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tauthData.WriteString(signature.original.Protected.base64())\n\t} else if signature.protected != nil {\n\t\tprotectedHeader = signature.protected\n\t\tauthData.WriteString(base64.RawURLEncoding.EncodeToString(mustSerializeJSON(protectedHeader)))\n\t}\n\n\tneedsBase64 := true\n\n\tif protectedHeader != nil {\n\t\tvar err error\n\t\tif needsBase64, err = protectedHeader.getB64(); err != nil {\n\t\t\tneedsBase64 = true\n\t\t}\n\t}\n\n\tauthData.WriteByte('.')\n\n\tif needsBase64 {\n\t\tauthData.WriteString(base64.RawURLEncoding.EncodeToString(payload))\n\t} else {\n\t\tauthData.Write(payload)\n\t}\n\n\treturn authData.Bytes(), nil\n}\n\n// parseSignedFull parses a message in full format.\nfunc parseSignedFull(input string) (*JSONWebSignature, error) {\n\tvar parsed rawJSONWebSignature\n\terr := json.Unmarshal([]byte(input), &parsed)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn parsed.sanitized()\n}\n\n// sanitized produces a cleaned-up JWS object from the raw JSON.\nfunc (parsed *rawJSONWebSignature) sanitized() (*JSONWebSignature, error) {\n\tif parsed.Payload == nil {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: missing payload in JWS message\")\n\t}\n\n\tobj := &JSONWebSignature{\n\t\tpayload:    parsed.Payload.bytes(),\n\t\tSignatures: make([]Signature, len(parsed.Signatures)),\n\t}\n\n\tif len(parsed.Signatures) == 0 {\n\t\t// No signatures array, must be flattened serialization\n\t\tsignature := Signature{}\n\t\tif parsed.Protected != nil && len(parsed.Protected.bytes()) > 0 {\n\t\t\tsignature.protected = &rawHeader{}\n\t\t\terr := json.Unmarshal(parsed.Protected.bytes(), signature.protected)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\t// Check that there is not a nonce in the unprotected header\n\t\tif parsed.Header != nil && parsed.Header.getNonce() != \"\" {\n\t\t\treturn nil, ErrUnprotectedNonce\n\t\t}\n\n\t\tsignature.header = parsed.Header\n\t\tsignature.Signature = parsed.Signature.bytes()\n\t\t// Make a fake \"original\" rawSignatureInfo to store the unprocessed\n\t\t// Protected header. This is necessary because the Protected header can\n\t\t// contain arbitrary fields not registered as part of the spec. See\n\t\t// https://tools.ietf.org/html/draft-ietf-jose-json-web-signature-41#section-4\n\t\t// If we unmarshal Protected into a rawHeader with its explicit list of fields,\n\t\t// we cannot marshal losslessly. So we have to keep around the original bytes.\n\t\t// This is used in computeAuthData, which will first attempt to use\n\t\t// the original bytes of a protected header, and fall back on marshaling the\n\t\t// header struct only if those bytes are not available.\n\t\tsignature.original = &rawSignatureInfo{\n\t\t\tProtected: parsed.Protected,\n\t\t\tHeader:    parsed.Header,\n\t\t\tSignature: parsed.Signature,\n\t\t}\n\n\t\tvar err error\n\t\tsignature.Header, err = signature.mergedHeaders().sanitized()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif signature.header != nil {\n\t\t\tsignature.Unprotected, err = signature.header.sanitized()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tif signature.protected != nil {\n\t\t\tsignature.Protected, err = signature.protected.sanitized()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\t// As per RFC 7515 Section 4.1.3, only public keys are allowed to be embedded.\n\t\tjwk := signature.Header.JSONWebKey\n\t\tif jwk != nil && (!jwk.Valid() || !jwk.IsPublic()) {\n\t\t\treturn nil, errors.New(\"go-jose/go-jose: invalid embedded jwk, must be public key\")\n\t\t}\n\n\t\tobj.Signatures = append(obj.Signatures, signature)\n\t}\n\n\tfor i, sig := range parsed.Signatures {\n\t\tif sig.Protected != nil && len(sig.Protected.bytes()) > 0 {\n\t\t\tobj.Signatures[i].protected = &rawHeader{}\n\t\t\terr := json.Unmarshal(sig.Protected.bytes(), obj.Signatures[i].protected)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\t// Check that there is not a nonce in the unprotected header\n\t\tif sig.Header != nil && sig.Header.getNonce() != \"\" {\n\t\t\treturn nil, ErrUnprotectedNonce\n\t\t}\n\n\t\tvar err error\n\t\tobj.Signatures[i].Header, err = obj.Signatures[i].mergedHeaders().sanitized()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif obj.Signatures[i].header != nil {\n\t\t\tobj.Signatures[i].Unprotected, err = obj.Signatures[i].header.sanitized()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tif obj.Signatures[i].protected != nil {\n\t\t\tobj.Signatures[i].Protected, err = obj.Signatures[i].protected.sanitized()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tobj.Signatures[i].Signature = sig.Signature.bytes()\n\n\t\t// As per RFC 7515 Section 4.1.3, only public keys are allowed to be embedded.\n\t\tjwk := obj.Signatures[i].Header.JSONWebKey\n\t\tif jwk != nil && (!jwk.Valid() || !jwk.IsPublic()) {\n\t\t\treturn nil, errors.New(\"go-jose/go-jose: invalid embedded jwk, must be public key\")\n\t\t}\n\n\t\t// Copy value of sig\n\t\toriginal := sig\n\n\t\tobj.Signatures[i].header = sig.Header\n\t\tobj.Signatures[i].original = &original\n\t}\n\n\treturn obj, nil\n}\n\n// parseSignedCompact parses a message in compact format.\nfunc parseSignedCompact(input string, payload []byte) (*JSONWebSignature, error) {\n\tparts := strings.Split(input, \".\")\n\tif len(parts) != 3 {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: compact JWS format must have three parts\")\n\t}\n\n\tif parts[1] != \"\" && payload != nil {\n\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: payload is not detached\")\n\t}\n\n\trawProtected, err := base64URLDecode(parts[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif payload == nil {\n\t\tpayload, err = base64URLDecode(parts[1])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tsignature, err := base64URLDecode(parts[2])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\traw := &rawJSONWebSignature{\n\t\tPayload:   newBuffer(payload),\n\t\tProtected: newBuffer(rawProtected),\n\t\tSignature: newBuffer(signature),\n\t}\n\treturn raw.sanitized()\n}\n\nfunc (obj JSONWebSignature) compactSerialize(detached bool) (string, error) {\n\tif len(obj.Signatures) != 1 || obj.Signatures[0].header != nil || obj.Signatures[0].protected == nil {\n\t\treturn \"\", ErrNotSupported\n\t}\n\n\tserializedProtected := base64.RawURLEncoding.EncodeToString(mustSerializeJSON(obj.Signatures[0].protected))\n\tpayload := \"\"\n\tsignature := base64.RawURLEncoding.EncodeToString(obj.Signatures[0].Signature)\n\n\tif !detached {\n\t\tpayload = base64.RawURLEncoding.EncodeToString(obj.payload)\n\t}\n\n\treturn fmt.Sprintf(\"%s.%s.%s\", serializedProtected, payload, signature), nil\n}\n\n// CompactSerialize serializes an object using the compact serialization format.\nfunc (obj JSONWebSignature) CompactSerialize() (string, error) {\n\treturn obj.compactSerialize(false)\n}\n\n// DetachedCompactSerialize serializes an object using the compact serialization format with detached payload.\nfunc (obj JSONWebSignature) DetachedCompactSerialize() (string, error) {\n\treturn obj.compactSerialize(true)\n}\n\n// FullSerialize serializes an object using the full JSON serialization format.\nfunc (obj JSONWebSignature) FullSerialize() string {\n\traw := rawJSONWebSignature{\n\t\tPayload: newBuffer(obj.payload),\n\t}\n\n\tif len(obj.Signatures) == 1 {\n\t\tif obj.Signatures[0].protected != nil {\n\t\t\tserializedProtected := mustSerializeJSON(obj.Signatures[0].protected)\n\t\t\traw.Protected = newBuffer(serializedProtected)\n\t\t}\n\t\traw.Header = obj.Signatures[0].header\n\t\traw.Signature = newBuffer(obj.Signatures[0].Signature)\n\t} else {\n\t\traw.Signatures = make([]rawSignatureInfo, len(obj.Signatures))\n\t\tfor i, signature := range obj.Signatures {\n\t\t\traw.Signatures[i] = rawSignatureInfo{\n\t\t\t\tHeader:    signature.header,\n\t\t\t\tSignature: newBuffer(signature.Signature),\n\t\t\t}\n\n\t\t\tif signature.protected != nil {\n\t\t\t\traw.Signatures[i].Protected = newBuffer(mustSerializeJSON(signature.protected))\n\t\t\t}\n\t\t}\n\t}\n\n\treturn string(mustSerializeJSON(raw))\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/jwt/builder.go",
    "content": "/*-\n * Copyright 2016 Zbigniew Mandziejewicz\n * Copyright 2016 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jwt\n\nimport (\n\t\"bytes\"\n\t\"reflect\"\n\n\t\"github.com/go-jose/go-jose/v3/json\"\n\n\t\"github.com/go-jose/go-jose/v3\"\n)\n\n// Builder is a utility for making JSON Web Tokens. Calls can be chained, and\n// errors are accumulated until the final call to CompactSerialize/FullSerialize.\ntype Builder interface {\n\t// Claims encodes claims into JWE/JWS form. Multiple calls will merge claims\n\t// into single JSON object. If you are passing private claims, make sure to set\n\t// struct field tags to specify the name for the JSON key to be used when\n\t// serializing.\n\tClaims(i interface{}) Builder\n\t// Token builds a JSONWebToken from provided data.\n\tToken() (*JSONWebToken, error)\n\t// FullSerialize serializes a token using the JWS/JWE JSON Serialization format.\n\tFullSerialize() (string, error)\n\t// CompactSerialize serializes a token using the compact serialization format.\n\tCompactSerialize() (string, error)\n}\n\n// NestedBuilder is a utility for making Signed-Then-Encrypted JSON Web Tokens.\n// Calls can be chained, and errors are accumulated until final call to\n// CompactSerialize/FullSerialize.\ntype NestedBuilder interface {\n\t// Claims encodes claims into JWE/JWS form. Multiple calls will merge claims\n\t// into single JSON object. If you are passing private claims, make sure to set\n\t// struct field tags to specify the name for the JSON key to be used when\n\t// serializing.\n\tClaims(i interface{}) NestedBuilder\n\t// Token builds a NestedJSONWebToken from provided data.\n\tToken() (*NestedJSONWebToken, error)\n\t// FullSerialize serializes a token using the JSON Serialization format.\n\tFullSerialize() (string, error)\n\t// CompactSerialize serializes a token using the compact serialization format.\n\tCompactSerialize() (string, error)\n}\n\ntype builder struct {\n\tpayload map[string]interface{}\n\terr     error\n}\n\ntype signedBuilder struct {\n\tbuilder\n\tsig jose.Signer\n}\n\ntype encryptedBuilder struct {\n\tbuilder\n\tenc jose.Encrypter\n}\n\ntype nestedBuilder struct {\n\tbuilder\n\tsig jose.Signer\n\tenc jose.Encrypter\n}\n\n// Signed creates builder for signed tokens.\nfunc Signed(sig jose.Signer) Builder {\n\treturn &signedBuilder{\n\t\tsig: sig,\n\t}\n}\n\n// Encrypted creates builder for encrypted tokens.\nfunc Encrypted(enc jose.Encrypter) Builder {\n\treturn &encryptedBuilder{\n\t\tenc: enc,\n\t}\n}\n\n// SignedAndEncrypted creates builder for signed-then-encrypted tokens.\n// ErrInvalidContentType will be returned if encrypter doesn't have JWT content type.\nfunc SignedAndEncrypted(sig jose.Signer, enc jose.Encrypter) NestedBuilder {\n\tif contentType, _ := enc.Options().ExtraHeaders[jose.HeaderContentType].(jose.ContentType); contentType != \"JWT\" {\n\t\treturn &nestedBuilder{\n\t\t\tbuilder: builder{\n\t\t\t\terr: ErrInvalidContentType,\n\t\t\t},\n\t\t}\n\t}\n\treturn &nestedBuilder{\n\t\tsig: sig,\n\t\tenc: enc,\n\t}\n}\n\nfunc (b builder) claims(i interface{}) builder {\n\tif b.err != nil {\n\t\treturn b\n\t}\n\n\tm, ok := i.(map[string]interface{})\n\tswitch {\n\tcase ok:\n\t\treturn b.merge(m)\n\tcase reflect.Indirect(reflect.ValueOf(i)).Kind() == reflect.Struct:\n\t\tm, err := normalize(i)\n\t\tif err != nil {\n\t\t\treturn builder{\n\t\t\t\terr: err,\n\t\t\t}\n\t\t}\n\t\treturn b.merge(m)\n\tdefault:\n\t\treturn builder{\n\t\t\terr: ErrInvalidClaims,\n\t\t}\n\t}\n}\n\nfunc normalize(i interface{}) (map[string]interface{}, error) {\n\tm := make(map[string]interface{})\n\n\traw, err := json.Marshal(i)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\td := json.NewDecoder(bytes.NewReader(raw))\n\td.SetNumberType(json.UnmarshalJSONNumber)\n\n\tif err := d.Decode(&m); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn m, nil\n}\n\nfunc (b *builder) merge(m map[string]interface{}) builder {\n\tp := make(map[string]interface{})\n\tfor k, v := range b.payload {\n\t\tp[k] = v\n\t}\n\tfor k, v := range m {\n\t\tp[k] = v\n\t}\n\n\treturn builder{\n\t\tpayload: p,\n\t}\n}\n\nfunc (b *builder) token(p func(interface{}) ([]byte, error), h []jose.Header) (*JSONWebToken, error) {\n\treturn &JSONWebToken{\n\t\tpayload: p,\n\t\tHeaders: h,\n\t}, nil\n}\n\nfunc (b *signedBuilder) Claims(i interface{}) Builder {\n\treturn &signedBuilder{\n\t\tbuilder: b.builder.claims(i),\n\t\tsig:     b.sig,\n\t}\n}\n\nfunc (b *signedBuilder) Token() (*JSONWebToken, error) {\n\tsig, err := b.sign()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\th := make([]jose.Header, len(sig.Signatures))\n\tfor i, v := range sig.Signatures {\n\t\th[i] = v.Header\n\t}\n\n\treturn b.builder.token(sig.Verify, h)\n}\n\nfunc (b *signedBuilder) CompactSerialize() (string, error) {\n\tsig, err := b.sign()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn sig.CompactSerialize()\n}\n\nfunc (b *signedBuilder) FullSerialize() (string, error) {\n\tsig, err := b.sign()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn sig.FullSerialize(), nil\n}\n\nfunc (b *signedBuilder) sign() (*jose.JSONWebSignature, error) {\n\tif b.err != nil {\n\t\treturn nil, b.err\n\t}\n\n\tp, err := json.Marshal(b.payload)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn b.sig.Sign(p)\n}\n\nfunc (b *encryptedBuilder) Claims(i interface{}) Builder {\n\treturn &encryptedBuilder{\n\t\tbuilder: b.builder.claims(i),\n\t\tenc:     b.enc,\n\t}\n}\n\nfunc (b *encryptedBuilder) CompactSerialize() (string, error) {\n\tenc, err := b.encrypt()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn enc.CompactSerialize()\n}\n\nfunc (b *encryptedBuilder) FullSerialize() (string, error) {\n\tenc, err := b.encrypt()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn enc.FullSerialize(), nil\n}\n\nfunc (b *encryptedBuilder) Token() (*JSONWebToken, error) {\n\tenc, err := b.encrypt()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn b.builder.token(enc.Decrypt, []jose.Header{enc.Header})\n}\n\nfunc (b *encryptedBuilder) encrypt() (*jose.JSONWebEncryption, error) {\n\tif b.err != nil {\n\t\treturn nil, b.err\n\t}\n\n\tp, err := json.Marshal(b.payload)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn b.enc.Encrypt(p)\n}\n\nfunc (b *nestedBuilder) Claims(i interface{}) NestedBuilder {\n\treturn &nestedBuilder{\n\t\tbuilder: b.builder.claims(i),\n\t\tsig:     b.sig,\n\t\tenc:     b.enc,\n\t}\n}\n\nfunc (b *nestedBuilder) Token() (*NestedJSONWebToken, error) {\n\tenc, err := b.signAndEncrypt()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &NestedJSONWebToken{\n\t\tenc:     enc,\n\t\tHeaders: []jose.Header{enc.Header},\n\t}, nil\n}\n\nfunc (b *nestedBuilder) CompactSerialize() (string, error) {\n\tenc, err := b.signAndEncrypt()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn enc.CompactSerialize()\n}\n\nfunc (b *nestedBuilder) FullSerialize() (string, error) {\n\tenc, err := b.signAndEncrypt()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn enc.FullSerialize(), nil\n}\n\nfunc (b *nestedBuilder) signAndEncrypt() (*jose.JSONWebEncryption, error) {\n\tif b.err != nil {\n\t\treturn nil, b.err\n\t}\n\n\tp, err := json.Marshal(b.payload)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsig, err := b.sig.Sign(p)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tp2, err := sig.CompactSerialize()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn b.enc.Encrypt([]byte(p2))\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/jwt/claims.go",
    "content": "/*-\n * Copyright 2016 Zbigniew Mandziejewicz\n * Copyright 2016 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jwt\n\nimport (\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/go-jose/go-jose/v3/json\"\n)\n\n// Claims represents public claim values (as specified in RFC 7519).\ntype Claims struct {\n\tIssuer    string       `json:\"iss,omitempty\"`\n\tSubject   string       `json:\"sub,omitempty\"`\n\tAudience  Audience     `json:\"aud,omitempty\"`\n\tExpiry    *NumericDate `json:\"exp,omitempty\"`\n\tNotBefore *NumericDate `json:\"nbf,omitempty\"`\n\tIssuedAt  *NumericDate `json:\"iat,omitempty\"`\n\tID        string       `json:\"jti,omitempty\"`\n}\n\n// NumericDate represents date and time as the number of seconds since the\n// epoch, ignoring leap seconds. Non-integer values can be represented\n// in the serialized format, but we round to the nearest second.\n// See RFC7519 Section 2: https://tools.ietf.org/html/rfc7519#section-2\ntype NumericDate int64\n\n// NewNumericDate constructs NumericDate from time.Time value.\nfunc NewNumericDate(t time.Time) *NumericDate {\n\tif t.IsZero() {\n\t\treturn nil\n\t}\n\n\t// While RFC 7519 technically states that NumericDate values may be\n\t// non-integer values, we don't bother serializing timestamps in\n\t// claims with sub-second accurancy and just round to the nearest\n\t// second instead. Not convined sub-second accuracy is useful here.\n\tout := NumericDate(t.Unix())\n\treturn &out\n}\n\n// MarshalJSON serializes the given NumericDate into its JSON representation.\nfunc (n NumericDate) MarshalJSON() ([]byte, error) {\n\treturn []byte(strconv.FormatInt(int64(n), 10)), nil\n}\n\n// UnmarshalJSON reads a date from its JSON representation.\nfunc (n *NumericDate) UnmarshalJSON(b []byte) error {\n\ts := string(b)\n\n\tf, err := strconv.ParseFloat(s, 64)\n\tif err != nil {\n\t\treturn ErrUnmarshalNumericDate\n\t}\n\n\t*n = NumericDate(f)\n\treturn nil\n}\n\n// Time returns time.Time representation of NumericDate.\nfunc (n *NumericDate) Time() time.Time {\n\tif n == nil {\n\t\treturn time.Time{}\n\t}\n\treturn time.Unix(int64(*n), 0)\n}\n\n// Audience represents the recipients that the token is intended for.\ntype Audience []string\n\n// UnmarshalJSON reads an audience from its JSON representation.\nfunc (s *Audience) UnmarshalJSON(b []byte) error {\n\tvar v interface{}\n\tif err := json.Unmarshal(b, &v); err != nil {\n\t\treturn err\n\t}\n\n\tswitch v := v.(type) {\n\tcase string:\n\t\t*s = []string{v}\n\tcase []interface{}:\n\t\ta := make([]string, len(v))\n\t\tfor i, e := range v {\n\t\t\ts, ok := e.(string)\n\t\t\tif !ok {\n\t\t\t\treturn ErrUnmarshalAudience\n\t\t\t}\n\t\t\ta[i] = s\n\t\t}\n\t\t*s = a\n\tdefault:\n\t\treturn ErrUnmarshalAudience\n\t}\n\n\treturn nil\n}\n\n// MarshalJSON converts audience to json representation.\nfunc (s Audience) MarshalJSON() ([]byte, error) {\n\tif len(s) == 1 {\n\t\treturn json.Marshal(s[0])\n\t}\n\treturn json.Marshal([]string(s))\n}\n\n//Contains checks whether a given string is included in the Audience\nfunc (s Audience) Contains(v string) bool {\n\tfor _, a := range s {\n\t\tif a == v {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/jwt/doc.go",
    "content": "/*-\n * Copyright 2017 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n\nPackage jwt provides an implementation of the JSON Web Token standard.\n\n*/\npackage jwt\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/jwt/errors.go",
    "content": "/*-\n * Copyright 2016 Zbigniew Mandziejewicz\n * Copyright 2016 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jwt\n\nimport \"errors\"\n\n// ErrUnmarshalAudience indicates that aud claim could not be unmarshalled.\nvar ErrUnmarshalAudience = errors.New(\"go-jose/go-jose/jwt: expected string or array value to unmarshal to Audience\")\n\n// ErrUnmarshalNumericDate indicates that JWT NumericDate could not be unmarshalled.\nvar ErrUnmarshalNumericDate = errors.New(\"go-jose/go-jose/jwt: expected number value to unmarshal NumericDate\")\n\n// ErrInvalidClaims indicates that given claims have invalid type.\nvar ErrInvalidClaims = errors.New(\"go-jose/go-jose/jwt: expected claims to be value convertible into JSON object\")\n\n// ErrInvalidIssuer indicates invalid iss claim.\nvar ErrInvalidIssuer = errors.New(\"go-jose/go-jose/jwt: validation failed, invalid issuer claim (iss)\")\n\n// ErrInvalidSubject indicates invalid sub claim.\nvar ErrInvalidSubject = errors.New(\"go-jose/go-jose/jwt: validation failed, invalid subject claim (sub)\")\n\n// ErrInvalidAudience indicated invalid aud claim.\nvar ErrInvalidAudience = errors.New(\"go-jose/go-jose/jwt: validation failed, invalid audience claim (aud)\")\n\n// ErrInvalidID indicates invalid jti claim.\nvar ErrInvalidID = errors.New(\"go-jose/go-jose/jwt: validation failed, invalid ID claim (jti)\")\n\n// ErrNotValidYet indicates that token is used before time indicated in nbf claim.\nvar ErrNotValidYet = errors.New(\"go-jose/go-jose/jwt: validation failed, token not valid yet (nbf)\")\n\n// ErrExpired indicates that token is used after expiry time indicated in exp claim.\nvar ErrExpired = errors.New(\"go-jose/go-jose/jwt: validation failed, token is expired (exp)\")\n\n// ErrIssuedInTheFuture indicates that the iat field is in the future.\nvar ErrIssuedInTheFuture = errors.New(\"go-jose/go-jose/jwt: validation field, token issued in the future (iat)\")\n\n// ErrInvalidContentType indicates that token requires JWT cty header.\nvar ErrInvalidContentType = errors.New(\"go-jose/go-jose/jwt: expected content type to be JWT (cty header)\")\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/jwt/jwt.go",
    "content": "/*-\n * Copyright 2016 Zbigniew Mandziejewicz\n * Copyright 2016 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jwt\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\tjose \"github.com/go-jose/go-jose/v3\"\n\t\"github.com/go-jose/go-jose/v3/json\"\n)\n\n// JSONWebToken represents a JSON Web Token (as specified in RFC7519).\ntype JSONWebToken struct {\n\tpayload           func(k interface{}) ([]byte, error)\n\tunverifiedPayload func() []byte\n\tHeaders           []jose.Header\n}\n\ntype NestedJSONWebToken struct {\n\tenc     *jose.JSONWebEncryption\n\tHeaders []jose.Header\n}\n\n// Claims deserializes a JSONWebToken into dest using the provided key.\nfunc (t *JSONWebToken) Claims(key interface{}, dest ...interface{}) error {\n\tb, err := t.payload(key)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, d := range dest {\n\t\tif err := json.Unmarshal(b, d); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// UnsafeClaimsWithoutVerification deserializes the claims of a\n// JSONWebToken into the dests. For signed JWTs, the claims are not\n// verified. This function won't work for encrypted JWTs.\nfunc (t *JSONWebToken) UnsafeClaimsWithoutVerification(dest ...interface{}) error {\n\tif t.unverifiedPayload == nil {\n\t\treturn fmt.Errorf(\"go-jose/go-jose: Cannot get unverified claims\")\n\t}\n\tclaims := t.unverifiedPayload()\n\tfor _, d := range dest {\n\t\tif err := json.Unmarshal(claims, d); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (t *NestedJSONWebToken) Decrypt(decryptionKey interface{}) (*JSONWebToken, error) {\n\tb, err := t.enc.Decrypt(decryptionKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsig, err := ParseSigned(string(b))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn sig, nil\n}\n\n// ParseSigned parses token from JWS form.\nfunc ParseSigned(s string) (*JSONWebToken, error) {\n\tsig, err := jose.ParseSigned(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\theaders := make([]jose.Header, len(sig.Signatures))\n\tfor i, signature := range sig.Signatures {\n\t\theaders[i] = signature.Header\n\t}\n\n\treturn &JSONWebToken{\n\t\tpayload:           sig.Verify,\n\t\tunverifiedPayload: sig.UnsafePayloadWithoutVerification,\n\t\tHeaders:           headers,\n\t}, nil\n}\n\n// ParseEncrypted parses token from JWE form.\nfunc ParseEncrypted(s string) (*JSONWebToken, error) {\n\tenc, err := jose.ParseEncrypted(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &JSONWebToken{\n\t\tpayload: enc.Decrypt,\n\t\tHeaders: []jose.Header{enc.Header},\n\t}, nil\n}\n\n// ParseSignedAndEncrypted parses signed-then-encrypted token from JWE form.\nfunc ParseSignedAndEncrypted(s string) (*NestedJSONWebToken, error) {\n\tenc, err := jose.ParseEncrypted(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcontentType, _ := enc.Header.ExtraHeaders[jose.HeaderContentType].(string)\n\tif strings.ToUpper(contentType) != \"JWT\" {\n\t\treturn nil, ErrInvalidContentType\n\t}\n\n\treturn &NestedJSONWebToken{\n\t\tenc:     enc,\n\t\tHeaders: []jose.Header{enc.Header},\n\t}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/jwt/validation.go",
    "content": "/*-\n * Copyright 2016 Zbigniew Mandziejewicz\n * Copyright 2016 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jwt\n\nimport \"time\"\n\nconst (\n\t// DefaultLeeway defines the default leeway for matching NotBefore/Expiry claims.\n\tDefaultLeeway = 1.0 * time.Minute\n)\n\n// Expected defines values used for protected claims validation.\n// If field has zero value then validation is skipped, with the exception of\n// Time, where the zero value means \"now.\" To skip validating them, set the\n// corresponding field in the Claims struct to nil.\ntype Expected struct {\n\t// Issuer matches the \"iss\" claim exactly.\n\tIssuer string\n\t// Subject matches the \"sub\" claim exactly.\n\tSubject string\n\t// Audience matches the values in \"aud\" claim, regardless of their order.\n\tAudience Audience\n\t// ID matches the \"jti\" claim exactly.\n\tID string\n\t// Time matches the \"exp\", \"nbf\" and \"iat\" claims with leeway.\n\tTime time.Time\n}\n\n// WithTime copies expectations with new time.\nfunc (e Expected) WithTime(t time.Time) Expected {\n\te.Time = t\n\treturn e\n}\n\n// Validate checks claims in a token against expected values.\n// A default leeway value of one minute is used to compare time values.\n//\n// The default leeway will cause the token to be deemed valid until one\n// minute after the expiration time. If you're a server application that\n// wants to give an extra minute to client tokens, use this\n// function. If you're a client application wondering if the server\n// will accept your token, use ValidateWithLeeway with a leeway <=0,\n// otherwise this function might make you think a token is valid when\n// it is not.\nfunc (c Claims) Validate(e Expected) error {\n\treturn c.ValidateWithLeeway(e, DefaultLeeway)\n}\n\n// ValidateWithLeeway checks claims in a token against expected values. A\n// custom leeway may be specified for comparing time values. You may pass a\n// zero value to check time values with no leeway, but you should note that\n// numeric date values are rounded to the nearest second and sub-second\n// precision is not supported.\n//\n// The leeway gives some extra time to the token from the server's\n// point of view. That is, if the token is expired, ValidateWithLeeway\n// will still accept the token for 'leeway' amount of time. This fails\n// if you're using this function to check if a server will accept your\n// token, because it will think the token is valid even after it\n// expires. So if you're a client validating if the token is valid to\n// be submitted to a server, use leeway <=0, if you're a server\n// validation a token, use leeway >=0.\nfunc (c Claims) ValidateWithLeeway(e Expected, leeway time.Duration) error {\n\tif e.Issuer != \"\" && e.Issuer != c.Issuer {\n\t\treturn ErrInvalidIssuer\n\t}\n\n\tif e.Subject != \"\" && e.Subject != c.Subject {\n\t\treturn ErrInvalidSubject\n\t}\n\n\tif e.ID != \"\" && e.ID != c.ID {\n\t\treturn ErrInvalidID\n\t}\n\n\tif len(e.Audience) != 0 {\n\t\tfor _, v := range e.Audience {\n\t\t\tif !c.Audience.Contains(v) {\n\t\t\t\treturn ErrInvalidAudience\n\t\t\t}\n\t\t}\n\t}\n\n\t// validate using the e.Time, or time.Now if not provided\n\tvalidationTime := e.Time\n\tif validationTime.IsZero() {\n\t\tvalidationTime = time.Now()\n\t}\n\n\tif c.NotBefore != nil && validationTime.Add(leeway).Before(c.NotBefore.Time()) {\n\t\treturn ErrNotValidYet\n\t}\n\n\tif c.Expiry != nil && validationTime.Add(-leeway).After(c.Expiry.Time()) {\n\t\treturn ErrExpired\n\t}\n\n\t// IssuedAt is optional but cannot be in the future. This is not required by the RFC, but\n\t// something is misconfigured if this happens and we should not trust it.\n\tif c.IssuedAt != nil && validationTime.Add(leeway).Before(c.IssuedAt.Time()) {\n\t\treturn ErrIssuedInTheFuture\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/opaque.go",
    "content": "/*-\n * Copyright 2018 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jose\n\n// OpaqueSigner is an interface that supports signing payloads with opaque\n// private key(s). Private key operations performed by implementers may, for\n// example, occur in a hardware module. An OpaqueSigner may rotate signing keys\n// transparently to the user of this interface.\ntype OpaqueSigner interface {\n\t// Public returns the public key of the current signing key.\n\tPublic() *JSONWebKey\n\t// Algs returns a list of supported signing algorithms.\n\tAlgs() []SignatureAlgorithm\n\t// SignPayload signs a payload with the current signing key using the given\n\t// algorithm.\n\tSignPayload(payload []byte, alg SignatureAlgorithm) ([]byte, error)\n}\n\ntype opaqueSigner struct {\n\tsigner OpaqueSigner\n}\n\nfunc newOpaqueSigner(alg SignatureAlgorithm, signer OpaqueSigner) (recipientSigInfo, error) {\n\tvar algSupported bool\n\tfor _, salg := range signer.Algs() {\n\t\tif alg == salg {\n\t\t\talgSupported = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !algSupported {\n\t\treturn recipientSigInfo{}, ErrUnsupportedAlgorithm\n\t}\n\n\treturn recipientSigInfo{\n\t\tsigAlg:    alg,\n\t\tpublicKey: signer.Public,\n\t\tsigner: &opaqueSigner{\n\t\t\tsigner: signer,\n\t\t},\n\t}, nil\n}\n\nfunc (o *opaqueSigner) signPayload(payload []byte, alg SignatureAlgorithm) (Signature, error) {\n\tout, err := o.signer.SignPayload(payload, alg)\n\tif err != nil {\n\t\treturn Signature{}, err\n\t}\n\n\treturn Signature{\n\t\tSignature: out,\n\t\tprotected: &rawHeader{},\n\t}, nil\n}\n\n// OpaqueVerifier is an interface that supports verifying payloads with opaque\n// public key(s). An OpaqueSigner may rotate signing keys transparently to the\n// user of this interface.\ntype OpaqueVerifier interface {\n\tVerifyPayload(payload []byte, signature []byte, alg SignatureAlgorithm) error\n}\n\ntype opaqueVerifier struct {\n\tverifier OpaqueVerifier\n}\n\nfunc (o *opaqueVerifier) verifyPayload(payload []byte, signature []byte, alg SignatureAlgorithm) error {\n\treturn o.verifier.VerifyPayload(payload, signature, alg)\n}\n\n// OpaqueKeyEncrypter is an interface that supports encrypting keys with an opaque key.\ntype OpaqueKeyEncrypter interface {\n\t// KeyID returns the kid\n\tKeyID() string\n\t// Algs returns a list of supported key encryption algorithms.\n\tAlgs() []KeyAlgorithm\n\t// encryptKey encrypts the CEK using the given algorithm.\n\tencryptKey(cek []byte, alg KeyAlgorithm) (recipientInfo, error)\n}\n\ntype opaqueKeyEncrypter struct {\n\tencrypter OpaqueKeyEncrypter\n}\n\nfunc newOpaqueKeyEncrypter(alg KeyAlgorithm, encrypter OpaqueKeyEncrypter) (recipientKeyInfo, error) {\n\tvar algSupported bool\n\tfor _, salg := range encrypter.Algs() {\n\t\tif alg == salg {\n\t\t\talgSupported = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !algSupported {\n\t\treturn recipientKeyInfo{}, ErrUnsupportedAlgorithm\n\t}\n\n\treturn recipientKeyInfo{\n\t\tkeyID:  encrypter.KeyID(),\n\t\tkeyAlg: alg,\n\t\tkeyEncrypter: &opaqueKeyEncrypter{\n\t\t\tencrypter: encrypter,\n\t\t},\n\t}, nil\n}\n\nfunc (oke *opaqueKeyEncrypter) encryptKey(cek []byte, alg KeyAlgorithm) (recipientInfo, error) {\n\treturn oke.encrypter.encryptKey(cek, alg)\n}\n\n//OpaqueKeyDecrypter is an interface that supports decrypting keys with an opaque key.\ntype OpaqueKeyDecrypter interface {\n\tDecryptKey(encryptedKey []byte, header Header) ([]byte, error)\n}\n\ntype opaqueKeyDecrypter struct {\n\tdecrypter OpaqueKeyDecrypter\n}\n\nfunc (okd *opaqueKeyDecrypter) decryptKey(headers rawHeader, recipient *recipientInfo, generator keyGenerator) ([]byte, error) {\n\tmergedHeaders := rawHeader{}\n\tmergedHeaders.merge(&headers)\n\tmergedHeaders.merge(recipient.header)\n\n\theader, err := mergedHeaders.sanitized()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn okd.decrypter.DecryptKey(recipient.encryptedKey, header)\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/shared.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jose\n\nimport (\n\t\"crypto/elliptic\"\n\t\"crypto/x509\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/go-jose/go-jose/v3/json\"\n)\n\n// KeyAlgorithm represents a key management algorithm.\ntype KeyAlgorithm string\n\n// SignatureAlgorithm represents a signature (or MAC) algorithm.\ntype SignatureAlgorithm string\n\n// ContentEncryption represents a content encryption algorithm.\ntype ContentEncryption string\n\n// CompressionAlgorithm represents an algorithm used for plaintext compression.\ntype CompressionAlgorithm string\n\n// ContentType represents type of the contained data.\ntype ContentType string\n\nvar (\n\t// ErrCryptoFailure represents an error in cryptographic primitive. This\n\t// occurs when, for example, a message had an invalid authentication tag or\n\t// could not be decrypted.\n\tErrCryptoFailure = errors.New(\"go-jose/go-jose: error in cryptographic primitive\")\n\n\t// ErrUnsupportedAlgorithm indicates that a selected algorithm is not\n\t// supported. This occurs when trying to instantiate an encrypter for an\n\t// algorithm that is not yet implemented.\n\tErrUnsupportedAlgorithm = errors.New(\"go-jose/go-jose: unknown/unsupported algorithm\")\n\n\t// ErrUnsupportedKeyType indicates that the given key type/format is not\n\t// supported. This occurs when trying to instantiate an encrypter and passing\n\t// it a key of an unrecognized type or with unsupported parameters, such as\n\t// an RSA private key with more than two primes.\n\tErrUnsupportedKeyType = errors.New(\"go-jose/go-jose: unsupported key type/format\")\n\n\t// ErrInvalidKeySize indicates that the given key is not the correct size\n\t// for the selected algorithm. This can occur, for example, when trying to\n\t// encrypt with AES-256 but passing only a 128-bit key as input.\n\tErrInvalidKeySize = errors.New(\"go-jose/go-jose: invalid key size for algorithm\")\n\n\t// ErrNotSupported serialization of object is not supported. This occurs when\n\t// trying to compact-serialize an object which can't be represented in\n\t// compact form.\n\tErrNotSupported = errors.New(\"go-jose/go-jose: compact serialization not supported for object\")\n\n\t// ErrUnprotectedNonce indicates that while parsing a JWS or JWE object, a\n\t// nonce header parameter was included in an unprotected header object.\n\tErrUnprotectedNonce = errors.New(\"go-jose/go-jose: Nonce parameter included in unprotected header\")\n)\n\n// Key management algorithms\nconst (\n\tED25519            = KeyAlgorithm(\"ED25519\")\n\tRSA1_5             = KeyAlgorithm(\"RSA1_5\")             // RSA-PKCS1v1.5\n\tRSA_OAEP           = KeyAlgorithm(\"RSA-OAEP\")           // RSA-OAEP-SHA1\n\tRSA_OAEP_256       = KeyAlgorithm(\"RSA-OAEP-256\")       // RSA-OAEP-SHA256\n\tA128KW             = KeyAlgorithm(\"A128KW\")             // AES key wrap (128)\n\tA192KW             = KeyAlgorithm(\"A192KW\")             // AES key wrap (192)\n\tA256KW             = KeyAlgorithm(\"A256KW\")             // AES key wrap (256)\n\tDIRECT             = KeyAlgorithm(\"dir\")                // Direct encryption\n\tECDH_ES            = KeyAlgorithm(\"ECDH-ES\")            // ECDH-ES\n\tECDH_ES_A128KW     = KeyAlgorithm(\"ECDH-ES+A128KW\")     // ECDH-ES + AES key wrap (128)\n\tECDH_ES_A192KW     = KeyAlgorithm(\"ECDH-ES+A192KW\")     // ECDH-ES + AES key wrap (192)\n\tECDH_ES_A256KW     = KeyAlgorithm(\"ECDH-ES+A256KW\")     // ECDH-ES + AES key wrap (256)\n\tA128GCMKW          = KeyAlgorithm(\"A128GCMKW\")          // AES-GCM key wrap (128)\n\tA192GCMKW          = KeyAlgorithm(\"A192GCMKW\")          // AES-GCM key wrap (192)\n\tA256GCMKW          = KeyAlgorithm(\"A256GCMKW\")          // AES-GCM key wrap (256)\n\tPBES2_HS256_A128KW = KeyAlgorithm(\"PBES2-HS256+A128KW\") // PBES2 + HMAC-SHA256 + AES key wrap (128)\n\tPBES2_HS384_A192KW = KeyAlgorithm(\"PBES2-HS384+A192KW\") // PBES2 + HMAC-SHA384 + AES key wrap (192)\n\tPBES2_HS512_A256KW = KeyAlgorithm(\"PBES2-HS512+A256KW\") // PBES2 + HMAC-SHA512 + AES key wrap (256)\n)\n\n// Signature algorithms\nconst (\n\tEdDSA = SignatureAlgorithm(\"EdDSA\")\n\tHS256 = SignatureAlgorithm(\"HS256\") // HMAC using SHA-256\n\tHS384 = SignatureAlgorithm(\"HS384\") // HMAC using SHA-384\n\tHS512 = SignatureAlgorithm(\"HS512\") // HMAC using SHA-512\n\tRS256 = SignatureAlgorithm(\"RS256\") // RSASSA-PKCS-v1.5 using SHA-256\n\tRS384 = SignatureAlgorithm(\"RS384\") // RSASSA-PKCS-v1.5 using SHA-384\n\tRS512 = SignatureAlgorithm(\"RS512\") // RSASSA-PKCS-v1.5 using SHA-512\n\tES256 = SignatureAlgorithm(\"ES256\") // ECDSA using P-256 and SHA-256\n\tES384 = SignatureAlgorithm(\"ES384\") // ECDSA using P-384 and SHA-384\n\tES512 = SignatureAlgorithm(\"ES512\") // ECDSA using P-521 and SHA-512\n\tPS256 = SignatureAlgorithm(\"PS256\") // RSASSA-PSS using SHA256 and MGF1-SHA256\n\tPS384 = SignatureAlgorithm(\"PS384\") // RSASSA-PSS using SHA384 and MGF1-SHA384\n\tPS512 = SignatureAlgorithm(\"PS512\") // RSASSA-PSS using SHA512 and MGF1-SHA512\n)\n\n// Content encryption algorithms\nconst (\n\tA128CBC_HS256 = ContentEncryption(\"A128CBC-HS256\") // AES-CBC + HMAC-SHA256 (128)\n\tA192CBC_HS384 = ContentEncryption(\"A192CBC-HS384\") // AES-CBC + HMAC-SHA384 (192)\n\tA256CBC_HS512 = ContentEncryption(\"A256CBC-HS512\") // AES-CBC + HMAC-SHA512 (256)\n\tA128GCM       = ContentEncryption(\"A128GCM\")       // AES-GCM (128)\n\tA192GCM       = ContentEncryption(\"A192GCM\")       // AES-GCM (192)\n\tA256GCM       = ContentEncryption(\"A256GCM\")       // AES-GCM (256)\n)\n\n// Compression algorithms\nconst (\n\tNONE    = CompressionAlgorithm(\"\")    // No compression\n\tDEFLATE = CompressionAlgorithm(\"DEF\") // DEFLATE (RFC 1951)\n)\n\n// A key in the protected header of a JWS object. Use of the Header...\n// constants is preferred to enhance type safety.\ntype HeaderKey string\n\nconst (\n\tHeaderType        = \"typ\" // string\n\tHeaderContentType = \"cty\" // string\n\n\t// These are set by go-jose and shouldn't need to be set by consumers of the\n\t// library.\n\theaderAlgorithm   = \"alg\"  // string\n\theaderEncryption  = \"enc\"  // ContentEncryption\n\theaderCompression = \"zip\"  // CompressionAlgorithm\n\theaderCritical    = \"crit\" // []string\n\n\theaderAPU = \"apu\" // *byteBuffer\n\theaderAPV = \"apv\" // *byteBuffer\n\theaderEPK = \"epk\" // *JSONWebKey\n\theaderIV  = \"iv\"  // *byteBuffer\n\theaderTag = \"tag\" // *byteBuffer\n\theaderX5c = \"x5c\" // []*x509.Certificate\n\n\theaderJWK   = \"jwk\"   // *JSONWebKey\n\theaderKeyID = \"kid\"   // string\n\theaderNonce = \"nonce\" // string\n\theaderB64   = \"b64\"   // bool\n\n\theaderP2C = \"p2c\" // *byteBuffer (int)\n\theaderP2S = \"p2s\" // *byteBuffer ([]byte)\n\n)\n\n// supportedCritical is the set of supported extensions that are understood and processed.\nvar supportedCritical = map[string]bool{\n\theaderB64: true,\n}\n\n// rawHeader represents the JOSE header for JWE/JWS objects (used for parsing).\n//\n// The decoding of the constituent items is deferred because we want to marshal\n// some members into particular structs rather than generic maps, but at the\n// same time we need to receive any extra fields unhandled by this library to\n// pass through to consuming code in case it wants to examine them.\ntype rawHeader map[HeaderKey]*json.RawMessage\n\n// Header represents the read-only JOSE header for JWE/JWS objects.\ntype Header struct {\n\tKeyID      string\n\tJSONWebKey *JSONWebKey\n\tAlgorithm  string\n\tNonce      string\n\n\t// Unverified certificate chain parsed from x5c header.\n\tcertificates []*x509.Certificate\n\n\t// Any headers not recognised above get unmarshalled\n\t// from JSON in a generic manner and placed in this map.\n\tExtraHeaders map[HeaderKey]interface{}\n}\n\n// Certificates verifies & returns the certificate chain present\n// in the x5c header field of a message, if one was present. Returns\n// an error if there was no x5c header present or the chain could\n// not be validated with the given verify options.\nfunc (h Header) Certificates(opts x509.VerifyOptions) ([][]*x509.Certificate, error) {\n\tif len(h.certificates) == 0 {\n\t\treturn nil, errors.New(\"go-jose/go-jose: no x5c header present in message\")\n\t}\n\n\tleaf := h.certificates[0]\n\tif opts.Intermediates == nil {\n\t\topts.Intermediates = x509.NewCertPool()\n\t\tfor _, intermediate := range h.certificates[1:] {\n\t\t\topts.Intermediates.AddCert(intermediate)\n\t\t}\n\t}\n\n\treturn leaf.Verify(opts)\n}\n\nfunc (parsed rawHeader) set(k HeaderKey, v interface{}) error {\n\tb, err := json.Marshal(v)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tparsed[k] = makeRawMessage(b)\n\treturn nil\n}\n\n// getString gets a string from the raw JSON, defaulting to \"\".\nfunc (parsed rawHeader) getString(k HeaderKey) string {\n\tv, ok := parsed[k]\n\tif !ok || v == nil {\n\t\treturn \"\"\n\t}\n\tvar s string\n\terr := json.Unmarshal(*v, &s)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\treturn s\n}\n\n// getByteBuffer gets a byte buffer from the raw JSON. Returns (nil, nil) if\n// not specified.\nfunc (parsed rawHeader) getByteBuffer(k HeaderKey) (*byteBuffer, error) {\n\tv := parsed[k]\n\tif v == nil {\n\t\treturn nil, nil\n\t}\n\tvar bb *byteBuffer\n\terr := json.Unmarshal(*v, &bb)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn bb, nil\n}\n\n// getAlgorithm extracts parsed \"alg\" from the raw JSON as a KeyAlgorithm.\nfunc (parsed rawHeader) getAlgorithm() KeyAlgorithm {\n\treturn KeyAlgorithm(parsed.getString(headerAlgorithm))\n}\n\n// getSignatureAlgorithm extracts parsed \"alg\" from the raw JSON as a SignatureAlgorithm.\nfunc (parsed rawHeader) getSignatureAlgorithm() SignatureAlgorithm {\n\treturn SignatureAlgorithm(parsed.getString(headerAlgorithm))\n}\n\n// getEncryption extracts parsed \"enc\" from the raw JSON.\nfunc (parsed rawHeader) getEncryption() ContentEncryption {\n\treturn ContentEncryption(parsed.getString(headerEncryption))\n}\n\n// getCompression extracts parsed \"zip\" from the raw JSON.\nfunc (parsed rawHeader) getCompression() CompressionAlgorithm {\n\treturn CompressionAlgorithm(parsed.getString(headerCompression))\n}\n\nfunc (parsed rawHeader) getNonce() string {\n\treturn parsed.getString(headerNonce)\n}\n\n// getEPK extracts parsed \"epk\" from the raw JSON.\nfunc (parsed rawHeader) getEPK() (*JSONWebKey, error) {\n\tv := parsed[headerEPK]\n\tif v == nil {\n\t\treturn nil, nil\n\t}\n\tvar epk *JSONWebKey\n\terr := json.Unmarshal(*v, &epk)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn epk, nil\n}\n\n// getAPU extracts parsed \"apu\" from the raw JSON.\nfunc (parsed rawHeader) getAPU() (*byteBuffer, error) {\n\treturn parsed.getByteBuffer(headerAPU)\n}\n\n// getAPV extracts parsed \"apv\" from the raw JSON.\nfunc (parsed rawHeader) getAPV() (*byteBuffer, error) {\n\treturn parsed.getByteBuffer(headerAPV)\n}\n\n// getIV extracts parsed \"iv\" from the raw JSON.\nfunc (parsed rawHeader) getIV() (*byteBuffer, error) {\n\treturn parsed.getByteBuffer(headerIV)\n}\n\n// getTag extracts parsed \"tag\" from the raw JSON.\nfunc (parsed rawHeader) getTag() (*byteBuffer, error) {\n\treturn parsed.getByteBuffer(headerTag)\n}\n\n// getJWK extracts parsed \"jwk\" from the raw JSON.\nfunc (parsed rawHeader) getJWK() (*JSONWebKey, error) {\n\tv := parsed[headerJWK]\n\tif v == nil {\n\t\treturn nil, nil\n\t}\n\tvar jwk *JSONWebKey\n\terr := json.Unmarshal(*v, &jwk)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn jwk, nil\n}\n\n// getCritical extracts parsed \"crit\" from the raw JSON. If omitted, it\n// returns an empty slice.\nfunc (parsed rawHeader) getCritical() ([]string, error) {\n\tv := parsed[headerCritical]\n\tif v == nil {\n\t\treturn nil, nil\n\t}\n\n\tvar q []string\n\terr := json.Unmarshal(*v, &q)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn q, nil\n}\n\n// getS2C extracts parsed \"p2c\" from the raw JSON.\nfunc (parsed rawHeader) getP2C() (int, error) {\n\tv := parsed[headerP2C]\n\tif v == nil {\n\t\treturn 0, nil\n\t}\n\n\tvar p2c int\n\terr := json.Unmarshal(*v, &p2c)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn p2c, nil\n}\n\n// getS2S extracts parsed \"p2s\" from the raw JSON.\nfunc (parsed rawHeader) getP2S() (*byteBuffer, error) {\n\treturn parsed.getByteBuffer(headerP2S)\n}\n\n// getB64 extracts parsed \"b64\" from the raw JSON, defaulting to true.\nfunc (parsed rawHeader) getB64() (bool, error) {\n\tv := parsed[headerB64]\n\tif v == nil {\n\t\treturn true, nil\n\t}\n\n\tvar b64 bool\n\terr := json.Unmarshal(*v, &b64)\n\tif err != nil {\n\t\treturn true, err\n\t}\n\treturn b64, nil\n}\n\n// sanitized produces a cleaned-up header object from the raw JSON.\nfunc (parsed rawHeader) sanitized() (h Header, err error) {\n\tfor k, v := range parsed {\n\t\tif v == nil {\n\t\t\tcontinue\n\t\t}\n\t\tswitch k {\n\t\tcase headerJWK:\n\t\t\tvar jwk *JSONWebKey\n\t\t\terr = json.Unmarshal(*v, &jwk)\n\t\t\tif err != nil {\n\t\t\t\terr = fmt.Errorf(\"failed to unmarshal JWK: %v: %#v\", err, string(*v))\n\t\t\t\treturn\n\t\t\t}\n\t\t\th.JSONWebKey = jwk\n\t\tcase headerKeyID:\n\t\t\tvar s string\n\t\t\terr = json.Unmarshal(*v, &s)\n\t\t\tif err != nil {\n\t\t\t\terr = fmt.Errorf(\"failed to unmarshal key ID: %v: %#v\", err, string(*v))\n\t\t\t\treturn\n\t\t\t}\n\t\t\th.KeyID = s\n\t\tcase headerAlgorithm:\n\t\t\tvar s string\n\t\t\terr = json.Unmarshal(*v, &s)\n\t\t\tif err != nil {\n\t\t\t\terr = fmt.Errorf(\"failed to unmarshal algorithm: %v: %#v\", err, string(*v))\n\t\t\t\treturn\n\t\t\t}\n\t\t\th.Algorithm = s\n\t\tcase headerNonce:\n\t\t\tvar s string\n\t\t\terr = json.Unmarshal(*v, &s)\n\t\t\tif err != nil {\n\t\t\t\terr = fmt.Errorf(\"failed to unmarshal nonce: %v: %#v\", err, string(*v))\n\t\t\t\treturn\n\t\t\t}\n\t\t\th.Nonce = s\n\t\tcase headerX5c:\n\t\t\tc := []string{}\n\t\t\terr = json.Unmarshal(*v, &c)\n\t\t\tif err != nil {\n\t\t\t\terr = fmt.Errorf(\"failed to unmarshal x5c header: %v: %#v\", err, string(*v))\n\t\t\t\treturn\n\t\t\t}\n\t\t\th.certificates, err = parseCertificateChain(c)\n\t\t\tif err != nil {\n\t\t\t\terr = fmt.Errorf(\"failed to unmarshal x5c header: %v: %#v\", err, string(*v))\n\t\t\t\treturn\n\t\t\t}\n\t\tdefault:\n\t\t\tif h.ExtraHeaders == nil {\n\t\t\t\th.ExtraHeaders = map[HeaderKey]interface{}{}\n\t\t\t}\n\t\t\tvar v2 interface{}\n\t\t\terr = json.Unmarshal(*v, &v2)\n\t\t\tif err != nil {\n\t\t\t\terr = fmt.Errorf(\"failed to unmarshal value: %v: %#v\", err, string(*v))\n\t\t\t\treturn\n\t\t\t}\n\t\t\th.ExtraHeaders[k] = v2\n\t\t}\n\t}\n\treturn\n}\n\nfunc parseCertificateChain(chain []string) ([]*x509.Certificate, error) {\n\tout := make([]*x509.Certificate, len(chain))\n\tfor i, cert := range chain {\n\t\traw, err := base64.StdEncoding.DecodeString(cert)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tout[i], err = x509.ParseCertificate(raw)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn out, nil\n}\n\nfunc (parsed rawHeader) isSet(k HeaderKey) bool {\n\tdvr := parsed[k]\n\tif dvr == nil {\n\t\treturn false\n\t}\n\n\tvar dv interface{}\n\terr := json.Unmarshal(*dvr, &dv)\n\tif err != nil {\n\t\treturn true\n\t}\n\n\tif dvStr, ok := dv.(string); ok {\n\t\treturn dvStr != \"\"\n\t}\n\n\treturn true\n}\n\n// Merge headers from src into dst, giving precedence to headers from l.\nfunc (parsed rawHeader) merge(src *rawHeader) {\n\tif src == nil {\n\t\treturn\n\t}\n\n\tfor k, v := range *src {\n\t\tif parsed.isSet(k) {\n\t\t\tcontinue\n\t\t}\n\n\t\tparsed[k] = v\n\t}\n}\n\n// Get JOSE name of curve\nfunc curveName(crv elliptic.Curve) (string, error) {\n\tswitch crv {\n\tcase elliptic.P256():\n\t\treturn \"P-256\", nil\n\tcase elliptic.P384():\n\t\treturn \"P-384\", nil\n\tcase elliptic.P521():\n\t\treturn \"P-521\", nil\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"go-jose/go-jose: unsupported/unknown elliptic curve\")\n\t}\n}\n\n// Get size of curve in bytes\nfunc curveSize(crv elliptic.Curve) int {\n\tbits := crv.Params().BitSize\n\n\tdiv := bits / 8\n\tmod := bits % 8\n\n\tif mod == 0 {\n\t\treturn div\n\t}\n\n\treturn div + 1\n}\n\nfunc makeRawMessage(b []byte) *json.RawMessage {\n\trm := json.RawMessage(b)\n\treturn &rm\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/signing.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jose\n\nimport (\n\t\"bytes\"\n\t\"crypto/ecdsa\"\n\t\"crypto/ed25519\"\n\t\"crypto/rsa\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/go-jose/go-jose/v3/json\"\n)\n\n// NonceSource represents a source of random nonces to go into JWS objects\ntype NonceSource interface {\n\tNonce() (string, error)\n}\n\n// Signer represents a signer which takes a payload and produces a signed JWS object.\ntype Signer interface {\n\tSign(payload []byte) (*JSONWebSignature, error)\n\tOptions() SignerOptions\n}\n\n// SigningKey represents an algorithm/key used to sign a message.\ntype SigningKey struct {\n\tAlgorithm SignatureAlgorithm\n\tKey       interface{}\n}\n\n// SignerOptions represents options that can be set when creating signers.\ntype SignerOptions struct {\n\tNonceSource NonceSource\n\tEmbedJWK    bool\n\n\t// Optional map of additional keys to be inserted into the protected header\n\t// of a JWS object. Some specifications which make use of JWS like to insert\n\t// additional values here. All values must be JSON-serializable.\n\tExtraHeaders map[HeaderKey]interface{}\n}\n\n// WithHeader adds an arbitrary value to the ExtraHeaders map, initializing it\n// if necessary. It returns itself and so can be used in a fluent style.\nfunc (so *SignerOptions) WithHeader(k HeaderKey, v interface{}) *SignerOptions {\n\tif so.ExtraHeaders == nil {\n\t\tso.ExtraHeaders = map[HeaderKey]interface{}{}\n\t}\n\tso.ExtraHeaders[k] = v\n\treturn so\n}\n\n// WithContentType adds a content type (\"cty\") header and returns the updated\n// SignerOptions.\nfunc (so *SignerOptions) WithContentType(contentType ContentType) *SignerOptions {\n\treturn so.WithHeader(HeaderContentType, contentType)\n}\n\n// WithType adds a type (\"typ\") header and returns the updated SignerOptions.\nfunc (so *SignerOptions) WithType(typ ContentType) *SignerOptions {\n\treturn so.WithHeader(HeaderType, typ)\n}\n\n// WithCritical adds the given names to the critical (\"crit\") header and returns\n// the updated SignerOptions.\nfunc (so *SignerOptions) WithCritical(names ...string) *SignerOptions {\n\tif so.ExtraHeaders[headerCritical] == nil {\n\t\tso.WithHeader(headerCritical, make([]string, 0, len(names)))\n\t}\n\tcrit := so.ExtraHeaders[headerCritical].([]string)\n\tso.ExtraHeaders[headerCritical] = append(crit, names...)\n\treturn so\n}\n\n// WithBase64 adds a base64url-encode payload (\"b64\") header and returns the updated\n// SignerOptions. When the \"b64\" value is \"false\", the payload is not base64 encoded.\nfunc (so *SignerOptions) WithBase64(b64 bool) *SignerOptions {\n\tif !b64 {\n\t\tso.WithHeader(headerB64, b64)\n\t\tso.WithCritical(headerB64)\n\t}\n\treturn so\n}\n\ntype payloadSigner interface {\n\tsignPayload(payload []byte, alg SignatureAlgorithm) (Signature, error)\n}\n\ntype payloadVerifier interface {\n\tverifyPayload(payload []byte, signature []byte, alg SignatureAlgorithm) error\n}\n\ntype genericSigner struct {\n\trecipients   []recipientSigInfo\n\tnonceSource  NonceSource\n\tembedJWK     bool\n\textraHeaders map[HeaderKey]interface{}\n}\n\ntype recipientSigInfo struct {\n\tsigAlg    SignatureAlgorithm\n\tpublicKey func() *JSONWebKey\n\tsigner    payloadSigner\n}\n\nfunc staticPublicKey(jwk *JSONWebKey) func() *JSONWebKey {\n\treturn func() *JSONWebKey {\n\t\treturn jwk\n\t}\n}\n\n// NewSigner creates an appropriate signer based on the key type\nfunc NewSigner(sig SigningKey, opts *SignerOptions) (Signer, error) {\n\treturn NewMultiSigner([]SigningKey{sig}, opts)\n}\n\n// NewMultiSigner creates a signer for multiple recipients\nfunc NewMultiSigner(sigs []SigningKey, opts *SignerOptions) (Signer, error) {\n\tsigner := &genericSigner{recipients: []recipientSigInfo{}}\n\n\tif opts != nil {\n\t\tsigner.nonceSource = opts.NonceSource\n\t\tsigner.embedJWK = opts.EmbedJWK\n\t\tsigner.extraHeaders = opts.ExtraHeaders\n\t}\n\n\tfor _, sig := range sigs {\n\t\terr := signer.addRecipient(sig.Algorithm, sig.Key)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn signer, nil\n}\n\n// newVerifier creates a verifier based on the key type\nfunc newVerifier(verificationKey interface{}) (payloadVerifier, error) {\n\tswitch verificationKey := verificationKey.(type) {\n\tcase ed25519.PublicKey:\n\t\treturn &edEncrypterVerifier{\n\t\t\tpublicKey: verificationKey,\n\t\t}, nil\n\tcase *rsa.PublicKey:\n\t\treturn &rsaEncrypterVerifier{\n\t\t\tpublicKey: verificationKey,\n\t\t}, nil\n\tcase *ecdsa.PublicKey:\n\t\treturn &ecEncrypterVerifier{\n\t\t\tpublicKey: verificationKey,\n\t\t}, nil\n\tcase []byte:\n\t\treturn &symmetricMac{\n\t\t\tkey: verificationKey,\n\t\t}, nil\n\tcase JSONWebKey:\n\t\treturn newVerifier(verificationKey.Key)\n\tcase *JSONWebKey:\n\t\treturn newVerifier(verificationKey.Key)\n\t}\n\tif ov, ok := verificationKey.(OpaqueVerifier); ok {\n\t\treturn &opaqueVerifier{verifier: ov}, nil\n\t}\n\treturn nil, ErrUnsupportedKeyType\n}\n\nfunc (ctx *genericSigner) addRecipient(alg SignatureAlgorithm, signingKey interface{}) error {\n\trecipient, err := makeJWSRecipient(alg, signingKey)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tctx.recipients = append(ctx.recipients, recipient)\n\treturn nil\n}\n\nfunc makeJWSRecipient(alg SignatureAlgorithm, signingKey interface{}) (recipientSigInfo, error) {\n\tswitch signingKey := signingKey.(type) {\n\tcase ed25519.PrivateKey:\n\t\treturn newEd25519Signer(alg, signingKey)\n\tcase *rsa.PrivateKey:\n\t\treturn newRSASigner(alg, signingKey)\n\tcase *ecdsa.PrivateKey:\n\t\treturn newECDSASigner(alg, signingKey)\n\tcase []byte:\n\t\treturn newSymmetricSigner(alg, signingKey)\n\tcase JSONWebKey:\n\t\treturn newJWKSigner(alg, signingKey)\n\tcase *JSONWebKey:\n\t\treturn newJWKSigner(alg, *signingKey)\n\t}\n\tif signer, ok := signingKey.(OpaqueSigner); ok {\n\t\treturn newOpaqueSigner(alg, signer)\n\t}\n\treturn recipientSigInfo{}, ErrUnsupportedKeyType\n}\n\nfunc newJWKSigner(alg SignatureAlgorithm, signingKey JSONWebKey) (recipientSigInfo, error) {\n\trecipient, err := makeJWSRecipient(alg, signingKey.Key)\n\tif err != nil {\n\t\treturn recipientSigInfo{}, err\n\t}\n\tif recipient.publicKey != nil && recipient.publicKey() != nil {\n\t\t// recipient.publicKey is a JWK synthesized for embedding when recipientSigInfo\n\t\t// was created for the inner key (such as a RSA or ECDSA public key). It contains\n\t\t// the pub key for embedding, but doesn't have extra params like key id.\n\t\tpublicKey := signingKey\n\t\tpublicKey.Key = recipient.publicKey().Key\n\t\trecipient.publicKey = staticPublicKey(&publicKey)\n\n\t\t// This should be impossible, but let's check anyway.\n\t\tif !recipient.publicKey().IsPublic() {\n\t\t\treturn recipientSigInfo{}, errors.New(\"go-jose/go-jose: public key was unexpectedly not public\")\n\t\t}\n\t}\n\treturn recipient, nil\n}\n\nfunc (ctx *genericSigner) Sign(payload []byte) (*JSONWebSignature, error) {\n\tobj := &JSONWebSignature{}\n\tobj.payload = payload\n\tobj.Signatures = make([]Signature, len(ctx.recipients))\n\n\tfor i, recipient := range ctx.recipients {\n\t\tprotected := map[HeaderKey]interface{}{\n\t\t\theaderAlgorithm: string(recipient.sigAlg),\n\t\t}\n\n\t\tif recipient.publicKey != nil && recipient.publicKey() != nil {\n\t\t\t// We want to embed the JWK or set the kid header, but not both. Having a protected\n\t\t\t// header that contains an embedded JWK while also simultaneously containing the kid\n\t\t\t// header is confusing, and at least in ACME the two are considered to be mutually\n\t\t\t// exclusive. The fact that both can exist at the same time is a somewhat unfortunate\n\t\t\t// result of the JOSE spec. We've decided that this library will only include one or\n\t\t\t// the other to avoid this confusion.\n\t\t\t//\n\t\t\t// See https://github.com/go-jose/go-jose/issues/157 for more context.\n\t\t\tif ctx.embedJWK {\n\t\t\t\tprotected[headerJWK] = recipient.publicKey()\n\t\t\t} else {\n\t\t\t\tkeyID := recipient.publicKey().KeyID\n\t\t\t\tif keyID != \"\" {\n\t\t\t\t\tprotected[headerKeyID] = keyID\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ctx.nonceSource != nil {\n\t\t\tnonce, err := ctx.nonceSource.Nonce()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: Error generating nonce: %v\", err)\n\t\t\t}\n\t\t\tprotected[headerNonce] = nonce\n\t\t}\n\n\t\tfor k, v := range ctx.extraHeaders {\n\t\t\tprotected[k] = v\n\t\t}\n\n\t\tserializedProtected := mustSerializeJSON(protected)\n\t\tneedsBase64 := true\n\n\t\tif b64, ok := protected[headerB64]; ok {\n\t\t\tif needsBase64, ok = b64.(bool); !ok {\n\t\t\t\treturn nil, errors.New(\"go-jose/go-jose: Invalid b64 header parameter\")\n\t\t\t}\n\t\t}\n\n\t\tvar input bytes.Buffer\n\n\t\tinput.WriteString(base64.RawURLEncoding.EncodeToString(serializedProtected))\n\t\tinput.WriteByte('.')\n\n\t\tif needsBase64 {\n\t\t\tinput.WriteString(base64.RawURLEncoding.EncodeToString(payload))\n\t\t} else {\n\t\t\tinput.Write(payload)\n\t\t}\n\n\t\tsignatureInfo, err := recipient.signer.signPayload(input.Bytes(), recipient.sigAlg)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tsignatureInfo.protected = &rawHeader{}\n\t\tfor k, v := range protected {\n\t\t\tb, err := json.Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: Error marshalling item %#v: %v\", k, err)\n\t\t\t}\n\t\t\t(*signatureInfo.protected)[k] = makeRawMessage(b)\n\t\t}\n\t\tobj.Signatures[i] = signatureInfo\n\t}\n\n\treturn obj, nil\n}\n\nfunc (ctx *genericSigner) Options() SignerOptions {\n\treturn SignerOptions{\n\t\tNonceSource:  ctx.nonceSource,\n\t\tEmbedJWK:     ctx.embedJWK,\n\t\tExtraHeaders: ctx.extraHeaders,\n\t}\n}\n\n// Verify validates the signature on the object and returns the payload.\n// This function does not support multi-signature, if you desire multi-sig\n// verification use VerifyMulti instead.\n//\n// Be careful when verifying signatures based on embedded JWKs inside the\n// payload header. You cannot assume that the key received in a payload is\n// trusted.\nfunc (obj JSONWebSignature) Verify(verificationKey interface{}) ([]byte, error) {\n\terr := obj.DetachedVerify(obj.payload, verificationKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn obj.payload, nil\n}\n\n// UnsafePayloadWithoutVerification returns the payload without\n// verifying it. The content returned from this function cannot be\n// trusted.\nfunc (obj JSONWebSignature) UnsafePayloadWithoutVerification() []byte {\n\treturn obj.payload\n}\n\n// DetachedVerify validates a detached signature on the given payload. In\n// most cases, you will probably want to use Verify instead. DetachedVerify\n// is only useful if you have a payload and signature that are separated from\n// each other.\nfunc (obj JSONWebSignature) DetachedVerify(payload []byte, verificationKey interface{}) error {\n\tkey := tryJWKS(verificationKey, obj.headers()...)\n\tverifier, err := newVerifier(key)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif len(obj.Signatures) > 1 {\n\t\treturn errors.New(\"go-jose/go-jose: too many signatures in payload; expecting only one\")\n\t}\n\n\tsignature := obj.Signatures[0]\n\theaders := signature.mergedHeaders()\n\tcritical, err := headers.getCritical()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, name := range critical {\n\t\tif !supportedCritical[name] {\n\t\t\treturn ErrCryptoFailure\n\t\t}\n\t}\n\n\tinput, err := obj.computeAuthData(payload, &signature)\n\tif err != nil {\n\t\treturn ErrCryptoFailure\n\t}\n\n\talg := headers.getSignatureAlgorithm()\n\terr = verifier.verifyPayload(input, signature.Signature, alg)\n\tif err == nil {\n\t\treturn nil\n\t}\n\n\treturn ErrCryptoFailure\n}\n\n// VerifyMulti validates (one of the multiple) signatures on the object and\n// returns the index of the signature that was verified, along with the signature\n// object and the payload. We return the signature and index to guarantee that\n// callers are getting the verified value.\nfunc (obj JSONWebSignature) VerifyMulti(verificationKey interface{}) (int, Signature, []byte, error) {\n\tidx, sig, err := obj.DetachedVerifyMulti(obj.payload, verificationKey)\n\tif err != nil {\n\t\treturn -1, Signature{}, nil, err\n\t}\n\treturn idx, sig, obj.payload, nil\n}\n\n// DetachedVerifyMulti validates a detached signature on the given payload with\n// a signature/object that has potentially multiple signers. This returns the index\n// of the signature that was verified, along with the signature object. We return\n// the signature and index to guarantee that callers are getting the verified value.\n//\n// In most cases, you will probably want to use Verify or VerifyMulti instead.\n// DetachedVerifyMulti is only useful if you have a payload and signature that are\n// separated from each other, and the signature can have multiple signers at the\n// same time.\nfunc (obj JSONWebSignature) DetachedVerifyMulti(payload []byte, verificationKey interface{}) (int, Signature, error) {\n\tkey := tryJWKS(verificationKey, obj.headers()...)\n\tverifier, err := newVerifier(key)\n\tif err != nil {\n\t\treturn -1, Signature{}, err\n\t}\n\nouter:\n\tfor i, signature := range obj.Signatures {\n\t\theaders := signature.mergedHeaders()\n\t\tcritical, err := headers.getCritical()\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, name := range critical {\n\t\t\tif !supportedCritical[name] {\n\t\t\t\tcontinue outer\n\t\t\t}\n\t\t}\n\n\t\tinput, err := obj.computeAuthData(payload, &signature)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\talg := headers.getSignatureAlgorithm()\n\t\terr = verifier.verifyPayload(input, signature.Signature, alg)\n\t\tif err == nil {\n\t\t\treturn i, signature, nil\n\t\t}\n\t}\n\n\treturn -1, Signature{}, ErrCryptoFailure\n}\n\nfunc (obj JSONWebSignature) headers() []Header {\n\theaders := make([]Header, len(obj.Signatures))\n\tfor i, sig := range obj.Signatures {\n\t\theaders[i] = sig.Header\n\t}\n\treturn headers\n}\n"
  },
  {
    "path": "vendor/github.com/go-jose/go-jose/v3/symmetric.go",
    "content": "/*-\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage jose\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/sha512\"\n\t\"crypto/subtle\"\n\t\"errors\"\n\t\"fmt\"\n\t\"hash\"\n\t\"io\"\n\n\t\"golang.org/x/crypto/pbkdf2\"\n\n\tjosecipher \"github.com/go-jose/go-jose/v3/cipher\"\n)\n\n// RandReader is a cryptographically secure random number generator (stubbed out in tests).\nvar RandReader = rand.Reader\n\nconst (\n\t// RFC7518 recommends a minimum of 1,000 iterations:\n\t// https://tools.ietf.org/html/rfc7518#section-4.8.1.2\n\t// NIST recommends a minimum of 10,000:\n\t// https://pages.nist.gov/800-63-3/sp800-63b.html\n\t// 1Password uses 100,000:\n\t// https://support.1password.com/pbkdf2/\n\tdefaultP2C = 100000\n\t// Default salt size: 128 bits\n\tdefaultP2SSize = 16\n)\n\n// Dummy key cipher for shared symmetric key mode\ntype symmetricKeyCipher struct {\n\tkey []byte // Pre-shared content-encryption key\n\tp2c int    // PBES2 Count\n\tp2s []byte // PBES2 Salt Input\n}\n\n// Signer/verifier for MAC modes\ntype symmetricMac struct {\n\tkey []byte\n}\n\n// Input/output from an AEAD operation\ntype aeadParts struct {\n\tiv, ciphertext, tag []byte\n}\n\n// A content cipher based on an AEAD construction\ntype aeadContentCipher struct {\n\tkeyBytes     int\n\tauthtagBytes int\n\tgetAead      func(key []byte) (cipher.AEAD, error)\n}\n\n// Random key generator\ntype randomKeyGenerator struct {\n\tsize int\n}\n\n// Static key generator\ntype staticKeyGenerator struct {\n\tkey []byte\n}\n\n// Create a new content cipher based on AES-GCM\nfunc newAESGCM(keySize int) contentCipher {\n\treturn &aeadContentCipher{\n\t\tkeyBytes:     keySize,\n\t\tauthtagBytes: 16,\n\t\tgetAead: func(key []byte) (cipher.AEAD, error) {\n\t\t\taes, err := aes.NewCipher(key)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\treturn cipher.NewGCM(aes)\n\t\t},\n\t}\n}\n\n// Create a new content cipher based on AES-CBC+HMAC\nfunc newAESCBC(keySize int) contentCipher {\n\treturn &aeadContentCipher{\n\t\tkeyBytes:     keySize * 2,\n\t\tauthtagBytes: keySize,\n\t\tgetAead: func(key []byte) (cipher.AEAD, error) {\n\t\t\treturn josecipher.NewCBCHMAC(key, aes.NewCipher)\n\t\t},\n\t}\n}\n\n// Get an AEAD cipher object for the given content encryption algorithm\nfunc getContentCipher(alg ContentEncryption) contentCipher {\n\tswitch alg {\n\tcase A128GCM:\n\t\treturn newAESGCM(16)\n\tcase A192GCM:\n\t\treturn newAESGCM(24)\n\tcase A256GCM:\n\t\treturn newAESGCM(32)\n\tcase A128CBC_HS256:\n\t\treturn newAESCBC(16)\n\tcase A192CBC_HS384:\n\t\treturn newAESCBC(24)\n\tcase A256CBC_HS512:\n\t\treturn newAESCBC(32)\n\tdefault:\n\t\treturn nil\n\t}\n}\n\n// getPbkdf2Params returns the key length and hash function used in\n// pbkdf2.Key.\nfunc getPbkdf2Params(alg KeyAlgorithm) (int, func() hash.Hash) {\n\tswitch alg {\n\tcase PBES2_HS256_A128KW:\n\t\treturn 16, sha256.New\n\tcase PBES2_HS384_A192KW:\n\t\treturn 24, sha512.New384\n\tcase PBES2_HS512_A256KW:\n\t\treturn 32, sha512.New\n\tdefault:\n\t\tpanic(\"invalid algorithm\")\n\t}\n}\n\n// getRandomSalt generates a new salt of the given size.\nfunc getRandomSalt(size int) ([]byte, error) {\n\tsalt := make([]byte, size)\n\t_, err := io.ReadFull(RandReader, salt)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn salt, nil\n}\n\n// newSymmetricRecipient creates a JWE encrypter based on AES-GCM key wrap.\nfunc newSymmetricRecipient(keyAlg KeyAlgorithm, key []byte) (recipientKeyInfo, error) {\n\tswitch keyAlg {\n\tcase DIRECT, A128GCMKW, A192GCMKW, A256GCMKW, A128KW, A192KW, A256KW:\n\tcase PBES2_HS256_A128KW, PBES2_HS384_A192KW, PBES2_HS512_A256KW:\n\tdefault:\n\t\treturn recipientKeyInfo{}, ErrUnsupportedAlgorithm\n\t}\n\n\treturn recipientKeyInfo{\n\t\tkeyAlg: keyAlg,\n\t\tkeyEncrypter: &symmetricKeyCipher{\n\t\t\tkey: key,\n\t\t},\n\t}, nil\n}\n\n// newSymmetricSigner creates a recipientSigInfo based on the given key.\nfunc newSymmetricSigner(sigAlg SignatureAlgorithm, key []byte) (recipientSigInfo, error) {\n\t// Verify that key management algorithm is supported by this encrypter\n\tswitch sigAlg {\n\tcase HS256, HS384, HS512:\n\tdefault:\n\t\treturn recipientSigInfo{}, ErrUnsupportedAlgorithm\n\t}\n\n\treturn recipientSigInfo{\n\t\tsigAlg: sigAlg,\n\t\tsigner: &symmetricMac{\n\t\t\tkey: key,\n\t\t},\n\t}, nil\n}\n\n// Generate a random key for the given content cipher\nfunc (ctx randomKeyGenerator) genKey() ([]byte, rawHeader, error) {\n\tkey := make([]byte, ctx.size)\n\t_, err := io.ReadFull(RandReader, key)\n\tif err != nil {\n\t\treturn nil, rawHeader{}, err\n\t}\n\n\treturn key, rawHeader{}, nil\n}\n\n// Key size for random generator\nfunc (ctx randomKeyGenerator) keySize() int {\n\treturn ctx.size\n}\n\n// Generate a static key (for direct mode)\nfunc (ctx staticKeyGenerator) genKey() ([]byte, rawHeader, error) {\n\tcek := make([]byte, len(ctx.key))\n\tcopy(cek, ctx.key)\n\treturn cek, rawHeader{}, nil\n}\n\n// Key size for static generator\nfunc (ctx staticKeyGenerator) keySize() int {\n\treturn len(ctx.key)\n}\n\n// Get key size for this cipher\nfunc (ctx aeadContentCipher) keySize() int {\n\treturn ctx.keyBytes\n}\n\n// Encrypt some data\nfunc (ctx aeadContentCipher) encrypt(key, aad, pt []byte) (*aeadParts, error) {\n\t// Get a new AEAD instance\n\taead, err := ctx.getAead(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Initialize a new nonce\n\tiv := make([]byte, aead.NonceSize())\n\t_, err = io.ReadFull(RandReader, iv)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tciphertextAndTag := aead.Seal(nil, iv, pt, aad)\n\toffset := len(ciphertextAndTag) - ctx.authtagBytes\n\n\treturn &aeadParts{\n\t\tiv:         iv,\n\t\tciphertext: ciphertextAndTag[:offset],\n\t\ttag:        ciphertextAndTag[offset:],\n\t}, nil\n}\n\n// Decrypt some data\nfunc (ctx aeadContentCipher) decrypt(key, aad []byte, parts *aeadParts) ([]byte, error) {\n\taead, err := ctx.getAead(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(parts.iv) != aead.NonceSize() || len(parts.tag) < ctx.authtagBytes {\n\t\treturn nil, ErrCryptoFailure\n\t}\n\n\treturn aead.Open(nil, parts.iv, append(parts.ciphertext, parts.tag...), aad)\n}\n\n// Encrypt the content encryption key.\nfunc (ctx *symmetricKeyCipher) encryptKey(cek []byte, alg KeyAlgorithm) (recipientInfo, error) {\n\tswitch alg {\n\tcase DIRECT:\n\t\treturn recipientInfo{\n\t\t\theader: &rawHeader{},\n\t\t}, nil\n\tcase A128GCMKW, A192GCMKW, A256GCMKW:\n\t\taead := newAESGCM(len(ctx.key))\n\n\t\tparts, err := aead.encrypt(ctx.key, []byte{}, cek)\n\t\tif err != nil {\n\t\t\treturn recipientInfo{}, err\n\t\t}\n\n\t\theader := &rawHeader{}\n\n\t\tif err = header.set(headerIV, newBuffer(parts.iv)); err != nil {\n\t\t\treturn recipientInfo{}, err\n\t\t}\n\n\t\tif err = header.set(headerTag, newBuffer(parts.tag)); err != nil {\n\t\t\treturn recipientInfo{}, err\n\t\t}\n\n\t\treturn recipientInfo{\n\t\t\theader:       header,\n\t\t\tencryptedKey: parts.ciphertext,\n\t\t}, nil\n\tcase A128KW, A192KW, A256KW:\n\t\tblock, err := aes.NewCipher(ctx.key)\n\t\tif err != nil {\n\t\t\treturn recipientInfo{}, err\n\t\t}\n\n\t\tjek, err := josecipher.KeyWrap(block, cek)\n\t\tif err != nil {\n\t\t\treturn recipientInfo{}, err\n\t\t}\n\n\t\treturn recipientInfo{\n\t\t\tencryptedKey: jek,\n\t\t\theader:       &rawHeader{},\n\t\t}, nil\n\tcase PBES2_HS256_A128KW, PBES2_HS384_A192KW, PBES2_HS512_A256KW:\n\t\tif len(ctx.p2s) == 0 {\n\t\t\tsalt, err := getRandomSalt(defaultP2SSize)\n\t\t\tif err != nil {\n\t\t\t\treturn recipientInfo{}, err\n\t\t\t}\n\t\t\tctx.p2s = salt\n\t\t}\n\n\t\tif ctx.p2c <= 0 {\n\t\t\tctx.p2c = defaultP2C\n\t\t}\n\n\t\t// salt is UTF8(Alg) || 0x00 || Salt Input\n\t\tsalt := bytes.Join([][]byte{[]byte(alg), ctx.p2s}, []byte{0x00})\n\n\t\t// derive key\n\t\tkeyLen, h := getPbkdf2Params(alg)\n\t\tkey := pbkdf2.Key(ctx.key, salt, ctx.p2c, keyLen, h)\n\n\t\t// use AES cipher with derived key\n\t\tblock, err := aes.NewCipher(key)\n\t\tif err != nil {\n\t\t\treturn recipientInfo{}, err\n\t\t}\n\n\t\tjek, err := josecipher.KeyWrap(block, cek)\n\t\tif err != nil {\n\t\t\treturn recipientInfo{}, err\n\t\t}\n\n\t\theader := &rawHeader{}\n\n\t\tif err = header.set(headerP2C, ctx.p2c); err != nil {\n\t\t\treturn recipientInfo{}, err\n\t\t}\n\n\t\tif err = header.set(headerP2S, newBuffer(ctx.p2s)); err != nil {\n\t\t\treturn recipientInfo{}, err\n\t\t}\n\n\t\treturn recipientInfo{\n\t\t\tencryptedKey: jek,\n\t\t\theader:       header,\n\t\t}, nil\n\t}\n\n\treturn recipientInfo{}, ErrUnsupportedAlgorithm\n}\n\n// Decrypt the content encryption key.\nfunc (ctx *symmetricKeyCipher) decryptKey(headers rawHeader, recipient *recipientInfo, generator keyGenerator) ([]byte, error) {\n\tswitch headers.getAlgorithm() {\n\tcase DIRECT:\n\t\tcek := make([]byte, len(ctx.key))\n\t\tcopy(cek, ctx.key)\n\t\treturn cek, nil\n\tcase A128GCMKW, A192GCMKW, A256GCMKW:\n\t\taead := newAESGCM(len(ctx.key))\n\n\t\tiv, err := headers.getIV()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid IV: %v\", err)\n\t\t}\n\t\ttag, err := headers.getTag()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid tag: %v\", err)\n\t\t}\n\n\t\tparts := &aeadParts{\n\t\t\tiv:         iv.bytes(),\n\t\t\tciphertext: recipient.encryptedKey,\n\t\t\ttag:        tag.bytes(),\n\t\t}\n\n\t\tcek, err := aead.decrypt(ctx.key, []byte{}, parts)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\treturn cek, nil\n\tcase A128KW, A192KW, A256KW:\n\t\tblock, err := aes.NewCipher(ctx.key)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tcek, err := josecipher.KeyUnwrap(block, recipient.encryptedKey)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn cek, nil\n\tcase PBES2_HS256_A128KW, PBES2_HS384_A192KW, PBES2_HS512_A256KW:\n\t\tp2s, err := headers.getP2S()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid P2S: %v\", err)\n\t\t}\n\t\tif p2s == nil || len(p2s.data) == 0 {\n\t\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid P2S: must be present\")\n\t\t}\n\n\t\tp2c, err := headers.getP2C()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid P2C: %v\", err)\n\t\t}\n\t\tif p2c <= 0 {\n\t\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid P2C: must be a positive integer\")\n\t\t}\n\t\tif p2c > 1000000 {\n\t\t\t// An unauthenticated attacker can set a high P2C value. Set an upper limit to avoid\n\t\t\t// DoS attacks.\n\t\t\treturn nil, fmt.Errorf(\"go-jose/go-jose: invalid P2C: too high\")\n\t\t}\n\n\t\t// salt is UTF8(Alg) || 0x00 || Salt Input\n\t\talg := headers.getAlgorithm()\n\t\tsalt := bytes.Join([][]byte{[]byte(alg), p2s.bytes()}, []byte{0x00})\n\n\t\t// derive key\n\t\tkeyLen, h := getPbkdf2Params(alg)\n\t\tkey := pbkdf2.Key(ctx.key, salt, p2c, keyLen, h)\n\n\t\t// use AES cipher with derived key\n\t\tblock, err := aes.NewCipher(key)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tcek, err := josecipher.KeyUnwrap(block, recipient.encryptedKey)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn cek, nil\n\t}\n\n\treturn nil, ErrUnsupportedAlgorithm\n}\n\n// Sign the given payload\nfunc (ctx symmetricMac) signPayload(payload []byte, alg SignatureAlgorithm) (Signature, error) {\n\tmac, err := ctx.hmac(payload, alg)\n\tif err != nil {\n\t\treturn Signature{}, errors.New(\"go-jose/go-jose: failed to compute hmac\")\n\t}\n\n\treturn Signature{\n\t\tSignature: mac,\n\t\tprotected: &rawHeader{},\n\t}, nil\n}\n\n// Verify the given payload\nfunc (ctx symmetricMac) verifyPayload(payload []byte, mac []byte, alg SignatureAlgorithm) error {\n\texpected, err := ctx.hmac(payload, alg)\n\tif err != nil {\n\t\treturn errors.New(\"go-jose/go-jose: failed to compute hmac\")\n\t}\n\n\tif len(mac) != len(expected) {\n\t\treturn errors.New(\"go-jose/go-jose: invalid hmac\")\n\t}\n\n\tmatch := subtle.ConstantTimeCompare(mac, expected)\n\tif match != 1 {\n\t\treturn errors.New(\"go-jose/go-jose: invalid hmac\")\n\t}\n\n\treturn nil\n}\n\n// Compute the HMAC based on the given alg value\nfunc (ctx symmetricMac) hmac(payload []byte, alg SignatureAlgorithm) ([]byte, error) {\n\tvar hash func() hash.Hash\n\n\tswitch alg {\n\tcase HS256:\n\t\thash = sha256.New\n\tcase HS384:\n\t\thash = sha512.New384\n\tcase HS512:\n\t\thash = sha512.New\n\tdefault:\n\t\treturn nil, ErrUnsupportedAlgorithm\n\t}\n\n\thmac := hmac.New(hash, ctx.key)\n\n\t// According to documentation, Write() on hash never fails\n\t_, _ = hmac.Write(payload)\n\treturn hmac.Sum(nil), nil\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/AUTHORS",
    "content": "# This is the official list of GoGo authors for copyright purposes.\n# This file is distinct from the CONTRIBUTORS file, which\n# lists people.  For example, employees are listed in CONTRIBUTORS,\n# but not in AUTHORS, because the employer holds the copyright.\n\n# Names should be added to this file as one of\n#     Organization's name\n#     Individual's name <submission email address>\n#     Individual's name <submission email address> <email2> <emailN>\n\n# Please keep the list sorted.\n\nSendgrid, Inc\nVastech SA (PTY) LTD\nWalter Schulze <awalterschulze@gmail.com>\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/CONTRIBUTORS",
    "content": "Anton Povarov <anton.povarov@gmail.com>\nBrian Goff <cpuguy83@gmail.com>\nClayton Coleman <ccoleman@redhat.com>\nDenis Smirnov <denis.smirnov.91@gmail.com>\nDongYun Kang <ceram1000@gmail.com>\nDwayne Schultz <dschultz@pivotal.io>\nGeorg Apitz <gapitz@pivotal.io>\nGustav Paul <gustav.paul@gmail.com>\nJohan Brandhorst <johan.brandhorst@gmail.com>\nJohn Shahid <jvshahid@gmail.com>\nJohn Tuley <john@tuley.org>\nLaurent <laurent@adyoulike.com>\nPatrick Lee <patrick@dropbox.com>\nPeter Edge <peter.edge@gmail.com>\nRoger Johansson <rogeralsing@gmail.com>\nSam Nguyen <sam.nguyen@sendgrid.com>\nSergio Arbeo <serabe@gmail.com>\nStephen J Day <stephen.day@docker.com>\nTamir Duberstein <tamird@gmail.com>\nTodd Eisenberger <teisenberger@dropbox.com>\nTormod Erevik Lea <tormodlea@gmail.com>\nVyacheslav Kim <kane@sendgrid.com>\nWalter Schulze <awalterschulze@gmail.com>\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/LICENSE",
    "content": "Copyright (c) 2013, The GoGo Authors. All rights reserved.\n\nProtocol Buffers for Go with Gadgets\n\nGo support for Protocol Buffers - Google's data interchange format\n\nCopyright 2010 The Go Authors.  All rights reserved.\nhttps://github.com/golang/protobuf\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n    * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n    * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/gogoproto/Makefile",
    "content": "# Protocol Buffers for Go with Gadgets\n#\n# Copyright (c) 2013, The GoGo Authors. All rights reserved.\n# http://github.com/gogo/protobuf\n#\n# Redistribution and use in source and binary forms, with or without\n# modification, are permitted provided that the following conditions are\n# met:\n#\n#     * Redistributions of source code must retain the above copyright\n# notice, this list of conditions and the following disclaimer.\n#     * Redistributions in binary form must reproduce the above\n# copyright notice, this list of conditions and the following disclaimer\n# in the documentation and/or other materials provided with the\n# distribution.\n#\n# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n# \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nregenerate:\n\tgo install github.com/gogo/protobuf/protoc-gen-gogo\n\tprotoc --gogo_out=Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor:../../../../ --proto_path=../../../../:../protobuf/:. *.proto\n\nrestore:\n\tcp gogo.pb.golden gogo.pb.go\n\npreserve:\n\tcp gogo.pb.go gogo.pb.golden\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/gogoproto/doc.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n/*\nPackage gogoproto provides extensions for protocol buffers to achieve:\n\n  - fast marshalling and unmarshalling.\n  - peace of mind by optionally generating test and benchmark code.\n  - more canonical Go structures.\n  - less typing by optionally generating extra helper code.\n  - goprotobuf compatibility\n\nMore Canonical Go Structures\n\nA lot of time working with a goprotobuf struct will lead you to a place where you create another struct that is easier to work with and then have a function to copy the values between the two structs.\nYou might also find that basic structs that started their life as part of an API need to be sent over the wire. With gob, you could just send it. With goprotobuf, you need to make a parallel struct.\nGogoprotobuf tries to fix these problems with the nullable, embed, customtype and customname field extensions.\n\n  - nullable, if false, a field is generated without a pointer (see warning below).\n  - embed, if true, the field is generated as an embedded field.\n  - customtype, It works with the Marshal and Unmarshal methods, to allow you to have your own types in your struct, but marshal to bytes. For example, custom.Uuid or custom.Fixed128\n  - customname (beta), Changes the generated fieldname. This is especially useful when generated methods conflict with fieldnames.\n  - casttype (beta), Changes the generated fieldtype.  All generated code assumes that this type is castable to the protocol buffer field type.  It does not work for structs or enums.\n  - castkey (beta), Changes the generated fieldtype for a map key.  All generated code assumes that this type is castable to the protocol buffer field type.  Only supported on maps.\n  - castvalue (beta), Changes the generated fieldtype for a map value.  All generated code assumes that this type is castable to the protocol buffer field type.  Only supported on maps.\n\nWarning about nullable: According to the Protocol Buffer specification, you should be able to tell whether a field is set or unset. With the option nullable=false this feature is lost, since your non-nullable fields will always be set. It can be seen as a layer on top of Protocol Buffers, where before and after marshalling all non-nullable fields are set and they cannot be unset.\n\nLet us look at:\n\n\tgithub.com/gogo/protobuf/test/example/example.proto\n\nfor a quicker overview.\n\nThe following message:\n\n  package test;\n\n  import \"github.com/gogo/protobuf/gogoproto/gogo.proto\";\n\n\tmessage A {\n\t\toptional string Description = 1 [(gogoproto.nullable) = false];\n\t\toptional int64 Number = 2 [(gogoproto.nullable) = false];\n\t\toptional bytes Id = 3 [(gogoproto.customtype) = \"github.com/gogo/protobuf/test/custom.Uuid\", (gogoproto.nullable) = false];\n\t}\n\nWill generate a go struct which looks a lot like this:\n\n\ttype A struct {\n\t\tDescription string\n\t\tNumber      int64\n\t\tId          github_com_gogo_protobuf_test_custom.Uuid\n\t}\n\nYou will see there are no pointers, since all fields are non-nullable.\nYou will also see a custom type which marshals to a string.\nBe warned it is your responsibility to test your custom types thoroughly.\nYou should think of every possible empty and nil case for your marshaling, unmarshaling and size methods.\n\nNext we will embed the message A in message B.\n\n\tmessage B {\n\t\toptional A A = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true];\n\t\trepeated bytes G = 2 [(gogoproto.customtype) = \"github.com/gogo/protobuf/test/custom.Uint128\", (gogoproto.nullable) = false];\n\t}\n\nSee below that A is embedded in B.\n\n\ttype B struct {\n\t\tA\n\t\tG []github_com_gogo_protobuf_test_custom.Uint128\n\t}\n\nAlso see the repeated custom type.\n\n\ttype Uint128 [2]uint64\n\nNext we will create a custom name for one of our fields.\n\n\tmessage C {\n\t\toptional int64 size = 1 [(gogoproto.customname) = \"MySize\"];\n\t}\n\nSee below that the field's name is MySize and not Size.\n\n\ttype C struct {\n\t\tMySize\t\t*int64\n\t}\n\nThe is useful when having a protocol buffer message with a field name which conflicts with a generated method.\nAs an example, having a field name size and using the sizer plugin to generate a Size method will cause a go compiler error.\nUsing customname you can fix this error without changing the field name.\nThis is typically useful when working with a protocol buffer that was designed before these methods and/or the go language were avialable.\n\nGogoprotobuf also has some more subtle changes, these could be changed back:\n\n  - the generated package name for imports do not have the extra /filename.pb,\n  but are actually the imports specified in the .proto file.\n\nGogoprotobuf also has lost some features which should be brought back with time:\n\n  - Marshalling and unmarshalling with reflect and without the unsafe package,\n  this requires work in pointer_reflect.go\n\nWhy does nullable break protocol buffer specifications:\n\nThe protocol buffer specification states, somewhere, that you should be able to tell whether a\nfield is set or unset.  With the option nullable=false this feature is lost,\nsince your non-nullable fields will always be set.  It can be seen as a layer on top of\nprotocol buffers, where before and after marshalling all non-nullable fields are set\nand they cannot be unset.\n\nGoprotobuf Compatibility:\n\nGogoprotobuf is compatible with Goprotobuf, because it is compatible with protocol buffers.\nGogoprotobuf generates the same code as goprotobuf if no extensions are used.\nThe enumprefix, getters and stringer extensions can be used to remove some of the unnecessary code generated by goprotobuf:\n\n  - gogoproto_import, if false, the generated code imports github.com/golang/protobuf/proto instead of github.com/gogo/protobuf/proto.\n  - goproto_enum_prefix, if false, generates the enum constant names without the messagetype prefix\n  - goproto_enum_stringer (experimental), if false, the enum is generated without the default string method, this is useful for rather using enum_stringer, or allowing you to write your own string method.\n  - goproto_getters, if false, the message is generated without get methods, this is useful when you would rather want to use face\n  - goproto_stringer, if false, the message is generated without the default string method, this is useful for rather using stringer, or allowing you to write your own string method.\n  - goproto_extensions_map (beta), if false, the extensions field is generated as type []byte instead of type map[int32]proto.Extension\n  - goproto_unrecognized (beta), if false, XXX_unrecognized field is not generated. This is useful in conjunction with gogoproto.nullable=false, to generate structures completely devoid of pointers and reduce GC pressure at the cost of losing information about unrecognized fields.\n  - goproto_registration (beta), if true, the generated files will register all messages and types against both gogo/protobuf and golang/protobuf. This is necessary when using third-party packages which read registrations from golang/protobuf (such as the grpc-gateway).\n\nLess Typing and Peace of Mind is explained in their specific plugin folders godoc:\n\n\t- github.com/gogo/protobuf/plugin/<extension_name>\n\nIf you do not use any of these extension the code that is generated\nwill be the same as if goprotobuf has generated it.\n\nThe most complete way to see examples is to look at\n\n\tgithub.com/gogo/protobuf/test/thetest.proto\n\nGogoprototest is a seperate project,\nbecause we want to keep gogoprotobuf independent of goprotobuf,\nbut we still want to test it thoroughly.\n\n*/\npackage gogoproto\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: gogo.proto\n\npackage gogoproto\n\nimport (\n\tfmt \"fmt\"\n\tproto \"github.com/gogo/protobuf/proto\"\n\tdescriptor \"github.com/gogo/protobuf/protoc-gen-gogo/descriptor\"\n\tmath \"math\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\nvar E_GoprotoEnumPrefix = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.EnumOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         62001,\n\tName:          \"gogoproto.goproto_enum_prefix\",\n\tTag:           \"varint,62001,opt,name=goproto_enum_prefix\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoEnumStringer = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.EnumOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         62021,\n\tName:          \"gogoproto.goproto_enum_stringer\",\n\tTag:           \"varint,62021,opt,name=goproto_enum_stringer\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_EnumStringer = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.EnumOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         62022,\n\tName:          \"gogoproto.enum_stringer\",\n\tTag:           \"varint,62022,opt,name=enum_stringer\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_EnumCustomname = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.EnumOptions)(nil),\n\tExtensionType: (*string)(nil),\n\tField:         62023,\n\tName:          \"gogoproto.enum_customname\",\n\tTag:           \"bytes,62023,opt,name=enum_customname\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Enumdecl = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.EnumOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         62024,\n\tName:          \"gogoproto.enumdecl\",\n\tTag:           \"varint,62024,opt,name=enumdecl\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_EnumvalueCustomname = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.EnumValueOptions)(nil),\n\tExtensionType: (*string)(nil),\n\tField:         66001,\n\tName:          \"gogoproto.enumvalue_customname\",\n\tTag:           \"bytes,66001,opt,name=enumvalue_customname\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoGettersAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63001,\n\tName:          \"gogoproto.goproto_getters_all\",\n\tTag:           \"varint,63001,opt,name=goproto_getters_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoEnumPrefixAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63002,\n\tName:          \"gogoproto.goproto_enum_prefix_all\",\n\tTag:           \"varint,63002,opt,name=goproto_enum_prefix_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoStringerAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63003,\n\tName:          \"gogoproto.goproto_stringer_all\",\n\tTag:           \"varint,63003,opt,name=goproto_stringer_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_VerboseEqualAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63004,\n\tName:          \"gogoproto.verbose_equal_all\",\n\tTag:           \"varint,63004,opt,name=verbose_equal_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_FaceAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63005,\n\tName:          \"gogoproto.face_all\",\n\tTag:           \"varint,63005,opt,name=face_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GostringAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63006,\n\tName:          \"gogoproto.gostring_all\",\n\tTag:           \"varint,63006,opt,name=gostring_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_PopulateAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63007,\n\tName:          \"gogoproto.populate_all\",\n\tTag:           \"varint,63007,opt,name=populate_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_StringerAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63008,\n\tName:          \"gogoproto.stringer_all\",\n\tTag:           \"varint,63008,opt,name=stringer_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_OnlyoneAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63009,\n\tName:          \"gogoproto.onlyone_all\",\n\tTag:           \"varint,63009,opt,name=onlyone_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_EqualAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63013,\n\tName:          \"gogoproto.equal_all\",\n\tTag:           \"varint,63013,opt,name=equal_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_DescriptionAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63014,\n\tName:          \"gogoproto.description_all\",\n\tTag:           \"varint,63014,opt,name=description_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_TestgenAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63015,\n\tName:          \"gogoproto.testgen_all\",\n\tTag:           \"varint,63015,opt,name=testgen_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_BenchgenAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63016,\n\tName:          \"gogoproto.benchgen_all\",\n\tTag:           \"varint,63016,opt,name=benchgen_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_MarshalerAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63017,\n\tName:          \"gogoproto.marshaler_all\",\n\tTag:           \"varint,63017,opt,name=marshaler_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_UnmarshalerAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63018,\n\tName:          \"gogoproto.unmarshaler_all\",\n\tTag:           \"varint,63018,opt,name=unmarshaler_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_StableMarshalerAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63019,\n\tName:          \"gogoproto.stable_marshaler_all\",\n\tTag:           \"varint,63019,opt,name=stable_marshaler_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_SizerAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63020,\n\tName:          \"gogoproto.sizer_all\",\n\tTag:           \"varint,63020,opt,name=sizer_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoEnumStringerAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63021,\n\tName:          \"gogoproto.goproto_enum_stringer_all\",\n\tTag:           \"varint,63021,opt,name=goproto_enum_stringer_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_EnumStringerAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63022,\n\tName:          \"gogoproto.enum_stringer_all\",\n\tTag:           \"varint,63022,opt,name=enum_stringer_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_UnsafeMarshalerAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63023,\n\tName:          \"gogoproto.unsafe_marshaler_all\",\n\tTag:           \"varint,63023,opt,name=unsafe_marshaler_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_UnsafeUnmarshalerAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63024,\n\tName:          \"gogoproto.unsafe_unmarshaler_all\",\n\tTag:           \"varint,63024,opt,name=unsafe_unmarshaler_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoExtensionsMapAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63025,\n\tName:          \"gogoproto.goproto_extensions_map_all\",\n\tTag:           \"varint,63025,opt,name=goproto_extensions_map_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoUnrecognizedAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63026,\n\tName:          \"gogoproto.goproto_unrecognized_all\",\n\tTag:           \"varint,63026,opt,name=goproto_unrecognized_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GogoprotoImport = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63027,\n\tName:          \"gogoproto.gogoproto_import\",\n\tTag:           \"varint,63027,opt,name=gogoproto_import\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_ProtosizerAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63028,\n\tName:          \"gogoproto.protosizer_all\",\n\tTag:           \"varint,63028,opt,name=protosizer_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_CompareAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63029,\n\tName:          \"gogoproto.compare_all\",\n\tTag:           \"varint,63029,opt,name=compare_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_TypedeclAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63030,\n\tName:          \"gogoproto.typedecl_all\",\n\tTag:           \"varint,63030,opt,name=typedecl_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_EnumdeclAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63031,\n\tName:          \"gogoproto.enumdecl_all\",\n\tTag:           \"varint,63031,opt,name=enumdecl_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoRegistration = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63032,\n\tName:          \"gogoproto.goproto_registration\",\n\tTag:           \"varint,63032,opt,name=goproto_registration\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_MessagenameAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63033,\n\tName:          \"gogoproto.messagename_all\",\n\tTag:           \"varint,63033,opt,name=messagename_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoSizecacheAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63034,\n\tName:          \"gogoproto.goproto_sizecache_all\",\n\tTag:           \"varint,63034,opt,name=goproto_sizecache_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoUnkeyedAll = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FileOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         63035,\n\tName:          \"gogoproto.goproto_unkeyed_all\",\n\tTag:           \"varint,63035,opt,name=goproto_unkeyed_all\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoGetters = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64001,\n\tName:          \"gogoproto.goproto_getters\",\n\tTag:           \"varint,64001,opt,name=goproto_getters\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoStringer = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64003,\n\tName:          \"gogoproto.goproto_stringer\",\n\tTag:           \"varint,64003,opt,name=goproto_stringer\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_VerboseEqual = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64004,\n\tName:          \"gogoproto.verbose_equal\",\n\tTag:           \"varint,64004,opt,name=verbose_equal\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Face = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64005,\n\tName:          \"gogoproto.face\",\n\tTag:           \"varint,64005,opt,name=face\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Gostring = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64006,\n\tName:          \"gogoproto.gostring\",\n\tTag:           \"varint,64006,opt,name=gostring\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Populate = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64007,\n\tName:          \"gogoproto.populate\",\n\tTag:           \"varint,64007,opt,name=populate\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Stringer = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         67008,\n\tName:          \"gogoproto.stringer\",\n\tTag:           \"varint,67008,opt,name=stringer\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Onlyone = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64009,\n\tName:          \"gogoproto.onlyone\",\n\tTag:           \"varint,64009,opt,name=onlyone\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Equal = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64013,\n\tName:          \"gogoproto.equal\",\n\tTag:           \"varint,64013,opt,name=equal\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Description = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64014,\n\tName:          \"gogoproto.description\",\n\tTag:           \"varint,64014,opt,name=description\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Testgen = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64015,\n\tName:          \"gogoproto.testgen\",\n\tTag:           \"varint,64015,opt,name=testgen\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Benchgen = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64016,\n\tName:          \"gogoproto.benchgen\",\n\tTag:           \"varint,64016,opt,name=benchgen\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Marshaler = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64017,\n\tName:          \"gogoproto.marshaler\",\n\tTag:           \"varint,64017,opt,name=marshaler\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Unmarshaler = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64018,\n\tName:          \"gogoproto.unmarshaler\",\n\tTag:           \"varint,64018,opt,name=unmarshaler\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_StableMarshaler = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64019,\n\tName:          \"gogoproto.stable_marshaler\",\n\tTag:           \"varint,64019,opt,name=stable_marshaler\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Sizer = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64020,\n\tName:          \"gogoproto.sizer\",\n\tTag:           \"varint,64020,opt,name=sizer\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_UnsafeMarshaler = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64023,\n\tName:          \"gogoproto.unsafe_marshaler\",\n\tTag:           \"varint,64023,opt,name=unsafe_marshaler\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_UnsafeUnmarshaler = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64024,\n\tName:          \"gogoproto.unsafe_unmarshaler\",\n\tTag:           \"varint,64024,opt,name=unsafe_unmarshaler\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoExtensionsMap = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64025,\n\tName:          \"gogoproto.goproto_extensions_map\",\n\tTag:           \"varint,64025,opt,name=goproto_extensions_map\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoUnrecognized = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64026,\n\tName:          \"gogoproto.goproto_unrecognized\",\n\tTag:           \"varint,64026,opt,name=goproto_unrecognized\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Protosizer = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64028,\n\tName:          \"gogoproto.protosizer\",\n\tTag:           \"varint,64028,opt,name=protosizer\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Compare = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64029,\n\tName:          \"gogoproto.compare\",\n\tTag:           \"varint,64029,opt,name=compare\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Typedecl = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64030,\n\tName:          \"gogoproto.typedecl\",\n\tTag:           \"varint,64030,opt,name=typedecl\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Messagename = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64033,\n\tName:          \"gogoproto.messagename\",\n\tTag:           \"varint,64033,opt,name=messagename\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoSizecache = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64034,\n\tName:          \"gogoproto.goproto_sizecache\",\n\tTag:           \"varint,64034,opt,name=goproto_sizecache\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_GoprotoUnkeyed = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.MessageOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         64035,\n\tName:          \"gogoproto.goproto_unkeyed\",\n\tTag:           \"varint,64035,opt,name=goproto_unkeyed\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Nullable = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FieldOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         65001,\n\tName:          \"gogoproto.nullable\",\n\tTag:           \"varint,65001,opt,name=nullable\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Embed = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FieldOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         65002,\n\tName:          \"gogoproto.embed\",\n\tTag:           \"varint,65002,opt,name=embed\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Customtype = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FieldOptions)(nil),\n\tExtensionType: (*string)(nil),\n\tField:         65003,\n\tName:          \"gogoproto.customtype\",\n\tTag:           \"bytes,65003,opt,name=customtype\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Customname = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FieldOptions)(nil),\n\tExtensionType: (*string)(nil),\n\tField:         65004,\n\tName:          \"gogoproto.customname\",\n\tTag:           \"bytes,65004,opt,name=customname\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Jsontag = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FieldOptions)(nil),\n\tExtensionType: (*string)(nil),\n\tField:         65005,\n\tName:          \"gogoproto.jsontag\",\n\tTag:           \"bytes,65005,opt,name=jsontag\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Moretags = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FieldOptions)(nil),\n\tExtensionType: (*string)(nil),\n\tField:         65006,\n\tName:          \"gogoproto.moretags\",\n\tTag:           \"bytes,65006,opt,name=moretags\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Casttype = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FieldOptions)(nil),\n\tExtensionType: (*string)(nil),\n\tField:         65007,\n\tName:          \"gogoproto.casttype\",\n\tTag:           \"bytes,65007,opt,name=casttype\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Castkey = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FieldOptions)(nil),\n\tExtensionType: (*string)(nil),\n\tField:         65008,\n\tName:          \"gogoproto.castkey\",\n\tTag:           \"bytes,65008,opt,name=castkey\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Castvalue = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FieldOptions)(nil),\n\tExtensionType: (*string)(nil),\n\tField:         65009,\n\tName:          \"gogoproto.castvalue\",\n\tTag:           \"bytes,65009,opt,name=castvalue\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Stdtime = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FieldOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         65010,\n\tName:          \"gogoproto.stdtime\",\n\tTag:           \"varint,65010,opt,name=stdtime\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Stdduration = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FieldOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         65011,\n\tName:          \"gogoproto.stdduration\",\n\tTag:           \"varint,65011,opt,name=stdduration\",\n\tFilename:      \"gogo.proto\",\n}\n\nvar E_Wktpointer = &proto.ExtensionDesc{\n\tExtendedType:  (*descriptor.FieldOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         65012,\n\tName:          \"gogoproto.wktpointer\",\n\tTag:           \"varint,65012,opt,name=wktpointer\",\n\tFilename:      \"gogo.proto\",\n}\n\nfunc init() {\n\tproto.RegisterExtension(E_GoprotoEnumPrefix)\n\tproto.RegisterExtension(E_GoprotoEnumStringer)\n\tproto.RegisterExtension(E_EnumStringer)\n\tproto.RegisterExtension(E_EnumCustomname)\n\tproto.RegisterExtension(E_Enumdecl)\n\tproto.RegisterExtension(E_EnumvalueCustomname)\n\tproto.RegisterExtension(E_GoprotoGettersAll)\n\tproto.RegisterExtension(E_GoprotoEnumPrefixAll)\n\tproto.RegisterExtension(E_GoprotoStringerAll)\n\tproto.RegisterExtension(E_VerboseEqualAll)\n\tproto.RegisterExtension(E_FaceAll)\n\tproto.RegisterExtension(E_GostringAll)\n\tproto.RegisterExtension(E_PopulateAll)\n\tproto.RegisterExtension(E_StringerAll)\n\tproto.RegisterExtension(E_OnlyoneAll)\n\tproto.RegisterExtension(E_EqualAll)\n\tproto.RegisterExtension(E_DescriptionAll)\n\tproto.RegisterExtension(E_TestgenAll)\n\tproto.RegisterExtension(E_BenchgenAll)\n\tproto.RegisterExtension(E_MarshalerAll)\n\tproto.RegisterExtension(E_UnmarshalerAll)\n\tproto.RegisterExtension(E_StableMarshalerAll)\n\tproto.RegisterExtension(E_SizerAll)\n\tproto.RegisterExtension(E_GoprotoEnumStringerAll)\n\tproto.RegisterExtension(E_EnumStringerAll)\n\tproto.RegisterExtension(E_UnsafeMarshalerAll)\n\tproto.RegisterExtension(E_UnsafeUnmarshalerAll)\n\tproto.RegisterExtension(E_GoprotoExtensionsMapAll)\n\tproto.RegisterExtension(E_GoprotoUnrecognizedAll)\n\tproto.RegisterExtension(E_GogoprotoImport)\n\tproto.RegisterExtension(E_ProtosizerAll)\n\tproto.RegisterExtension(E_CompareAll)\n\tproto.RegisterExtension(E_TypedeclAll)\n\tproto.RegisterExtension(E_EnumdeclAll)\n\tproto.RegisterExtension(E_GoprotoRegistration)\n\tproto.RegisterExtension(E_MessagenameAll)\n\tproto.RegisterExtension(E_GoprotoSizecacheAll)\n\tproto.RegisterExtension(E_GoprotoUnkeyedAll)\n\tproto.RegisterExtension(E_GoprotoGetters)\n\tproto.RegisterExtension(E_GoprotoStringer)\n\tproto.RegisterExtension(E_VerboseEqual)\n\tproto.RegisterExtension(E_Face)\n\tproto.RegisterExtension(E_Gostring)\n\tproto.RegisterExtension(E_Populate)\n\tproto.RegisterExtension(E_Stringer)\n\tproto.RegisterExtension(E_Onlyone)\n\tproto.RegisterExtension(E_Equal)\n\tproto.RegisterExtension(E_Description)\n\tproto.RegisterExtension(E_Testgen)\n\tproto.RegisterExtension(E_Benchgen)\n\tproto.RegisterExtension(E_Marshaler)\n\tproto.RegisterExtension(E_Unmarshaler)\n\tproto.RegisterExtension(E_StableMarshaler)\n\tproto.RegisterExtension(E_Sizer)\n\tproto.RegisterExtension(E_UnsafeMarshaler)\n\tproto.RegisterExtension(E_UnsafeUnmarshaler)\n\tproto.RegisterExtension(E_GoprotoExtensionsMap)\n\tproto.RegisterExtension(E_GoprotoUnrecognized)\n\tproto.RegisterExtension(E_Protosizer)\n\tproto.RegisterExtension(E_Compare)\n\tproto.RegisterExtension(E_Typedecl)\n\tproto.RegisterExtension(E_Messagename)\n\tproto.RegisterExtension(E_GoprotoSizecache)\n\tproto.RegisterExtension(E_GoprotoUnkeyed)\n\tproto.RegisterExtension(E_Nullable)\n\tproto.RegisterExtension(E_Embed)\n\tproto.RegisterExtension(E_Customtype)\n\tproto.RegisterExtension(E_Customname)\n\tproto.RegisterExtension(E_Jsontag)\n\tproto.RegisterExtension(E_Moretags)\n\tproto.RegisterExtension(E_Casttype)\n\tproto.RegisterExtension(E_Castkey)\n\tproto.RegisterExtension(E_Castvalue)\n\tproto.RegisterExtension(E_Stdtime)\n\tproto.RegisterExtension(E_Stdduration)\n\tproto.RegisterExtension(E_Wktpointer)\n}\n\nfunc init() { proto.RegisterFile(\"gogo.proto\", fileDescriptor_592445b5231bc2b9) }\n\nvar fileDescriptor_592445b5231bc2b9 = []byte{\n\t// 1328 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x98, 0x49, 0x6f, 0x1c, 0x45,\n\t0x14, 0x80, 0x85, 0x48, 0x64, 0x4f, 0x79, 0x8b, 0xc7, 0xc6, 0x84, 0x08, 0x44, 0xe0, 0xc4, 0xc9,\n\t0x3e, 0x45, 0x28, 0x65, 0x45, 0x96, 0x63, 0x39, 0x56, 0x10, 0x0e, 0xc6, 0x89, 0xc3, 0x76, 0x18,\n\t0xf5, 0xf4, 0x94, 0xdb, 0x8d, 0xbb, 0xbb, 0x9a, 0xee, 0xea, 0x10, 0xe7, 0x86, 0xc2, 0x22, 0x84,\n\t0xd8, 0x91, 0x20, 0x21, 0x09, 0x04, 0xc4, 0xbe, 0x86, 0x7d, 0xb9, 0x70, 0x61, 0xb9, 0xf2, 0x1f,\n\t0xb8, 0x00, 0x66, 0xf7, 0xcd, 0x17, 0xf4, 0xba, 0xdf, 0xeb, 0xa9, 0x69, 0x8f, 0x54, 0x35, 0xb7,\n\t0xf6, 0xb8, 0xbe, 0x6f, 0xaa, 0xdf, 0xeb, 0x7a, 0xef, 0x4d, 0x33, 0xe6, 0x49, 0x4f, 0x4e, 0xc6,\n\t0x89, 0x54, 0xb2, 0x5e, 0x83, 0xeb, 0xfc, 0x72, 0xdf, 0x7e, 0x4f, 0x4a, 0x2f, 0x10, 0x53, 0xf9,\n\t0x5f, 0xcd, 0x6c, 0x75, 0xaa, 0x25, 0x52, 0x37, 0xf1, 0x63, 0x25, 0x93, 0x62, 0x31, 0x3f, 0xc6,\n\t0xc6, 0x70, 0x71, 0x43, 0x44, 0x59, 0xd8, 0x88, 0x13, 0xb1, 0xea, 0x9f, 0xae, 0x5f, 0x3f, 0x59,\n\t0x90, 0x93, 0x44, 0x4e, 0xce, 0x47, 0x59, 0x78, 0x47, 0xac, 0x7c, 0x19, 0xa5, 0x7b, 0xaf, 0xfc,\n\t0x72, 0xf5, 0xfe, 0xab, 0x6e, 0xe9, 0x5f, 0x1e, 0x45, 0x14, 0xfe, 0xb7, 0x94, 0x83, 0x7c, 0x99,\n\t0x5d, 0xd3, 0xe1, 0x4b, 0x55, 0xe2, 0x47, 0x9e, 0x48, 0x0c, 0xc6, 0xef, 0xd1, 0x38, 0xa6, 0x19,\n\t0x8f, 0x23, 0xca, 0xe7, 0xd8, 0x50, 0x2f, 0xae, 0x1f, 0xd0, 0x35, 0x28, 0x74, 0xc9, 0x02, 0x1b,\n\t0xc9, 0x25, 0x6e, 0x96, 0x2a, 0x19, 0x46, 0x4e, 0x28, 0x0c, 0x9a, 0x1f, 0x73, 0x4d, 0x6d, 0x79,\n\t0x18, 0xb0, 0xb9, 0x92, 0xe2, 0x9c, 0xf5, 0xc3, 0x27, 0x2d, 0xe1, 0x06, 0x06, 0xc3, 0x4f, 0xb8,\n\t0x91, 0x72, 0x3d, 0x3f, 0xc9, 0xc6, 0xe1, 0xfa, 0x94, 0x13, 0x64, 0x42, 0xdf, 0xc9, 0x4d, 0x5d,\n\t0x3d, 0x27, 0x61, 0x19, 0xc9, 0x7e, 0x3e, 0xbb, 0x2b, 0xdf, 0xce, 0x58, 0x29, 0xd0, 0xf6, 0xa4,\n\t0x65, 0xd1, 0x13, 0x4a, 0x89, 0x24, 0x6d, 0x38, 0x41, 0xb7, 0xed, 0x1d, 0xf1, 0x83, 0xd2, 0x78,\n\t0x6e, 0xb3, 0x33, 0x8b, 0x0b, 0x05, 0x39, 0x1b, 0x04, 0x7c, 0x85, 0x5d, 0xdb, 0xe5, 0xa9, 0xb0,\n\t0x70, 0x9e, 0x47, 0xe7, 0xf8, 0x8e, 0x27, 0x03, 0xb4, 0x4b, 0x8c, 0x3e, 0x2f, 0x73, 0x69, 0xe1,\n\t0x7c, 0x19, 0x9d, 0x75, 0x64, 0x29, 0xa5, 0x60, 0xbc, 0x8d, 0x8d, 0x9e, 0x12, 0x49, 0x53, 0xa6,\n\t0xa2, 0x21, 0x1e, 0xc8, 0x9c, 0xc0, 0x42, 0x77, 0x01, 0x75, 0x23, 0x08, 0xce, 0x03, 0x07, 0xae,\n\t0x83, 0xac, 0x7f, 0xd5, 0x71, 0x85, 0x85, 0xe2, 0x22, 0x2a, 0xfa, 0x60, 0x3d, 0xa0, 0xb3, 0x6c,\n\t0xd0, 0x93, 0xc5, 0x2d, 0x59, 0xe0, 0x97, 0x10, 0x1f, 0x20, 0x06, 0x15, 0xb1, 0x8c, 0xb3, 0xc0,\n\t0x51, 0x36, 0x3b, 0x78, 0x85, 0x14, 0xc4, 0xa0, 0xa2, 0x87, 0xb0, 0xbe, 0x4a, 0x8a, 0x54, 0x8b,\n\t0xe7, 0x0c, 0x1b, 0x90, 0x51, 0xb0, 0x21, 0x23, 0x9b, 0x4d, 0x5c, 0x46, 0x03, 0x43, 0x04, 0x04,\n\t0xd3, 0xac, 0x66, 0x9b, 0x88, 0x37, 0x36, 0xe9, 0x78, 0x50, 0x06, 0x16, 0xd8, 0x08, 0x15, 0x28,\n\t0x5f, 0x46, 0x16, 0x8a, 0x37, 0x51, 0x31, 0xac, 0x61, 0x78, 0x1b, 0x4a, 0xa4, 0xca, 0x13, 0x36,\n\t0x92, 0xb7, 0xe8, 0x36, 0x10, 0xc1, 0x50, 0x36, 0x45, 0xe4, 0xae, 0xd9, 0x19, 0xde, 0xa6, 0x50,\n\t0x12, 0x03, 0x8a, 0x39, 0x36, 0x14, 0x3a, 0x49, 0xba, 0xe6, 0x04, 0x56, 0xe9, 0x78, 0x07, 0x1d,\n\t0x83, 0x25, 0x84, 0x11, 0xc9, 0xa2, 0x5e, 0x34, 0xef, 0x52, 0x44, 0x34, 0x0c, 0x8f, 0x5e, 0xaa,\n\t0x9c, 0x66, 0x20, 0x1a, 0xbd, 0xd8, 0xde, 0xa3, 0xa3, 0x57, 0xb0, 0x8b, 0xba, 0x71, 0x9a, 0xd5,\n\t0x52, 0xff, 0x8c, 0x95, 0xe6, 0x7d, 0xca, 0x74, 0x0e, 0x00, 0x7c, 0x0f, 0xbb, 0xae, 0x6b, 0x9b,\n\t0xb0, 0x90, 0x7d, 0x80, 0xb2, 0x89, 0x2e, 0xad, 0x02, 0x4b, 0x42, 0xaf, 0xca, 0x0f, 0xa9, 0x24,\n\t0x88, 0x8a, 0x6b, 0x89, 0x8d, 0x67, 0x51, 0xea, 0xac, 0xf6, 0x16, 0xb5, 0x8f, 0x28, 0x6a, 0x05,\n\t0xdb, 0x11, 0xb5, 0x13, 0x6c, 0x02, 0x8d, 0xbd, 0xe5, 0xf5, 0x63, 0x2a, 0xac, 0x05, 0xbd, 0xd2,\n\t0x99, 0xdd, 0xfb, 0xd8, 0xbe, 0x32, 0x9c, 0xa7, 0x95, 0x88, 0x52, 0x60, 0x1a, 0xa1, 0x13, 0x5b,\n\t0x98, 0xaf, 0xa0, 0x99, 0x2a, 0xfe, 0x7c, 0x29, 0x58, 0x74, 0x62, 0x90, 0xdf, 0xcd, 0xf6, 0x92,\n\t0x3c, 0x8b, 0x12, 0xe1, 0x4a, 0x2f, 0xf2, 0xcf, 0x88, 0x96, 0x85, 0xfa, 0x93, 0x4a, 0xaa, 0x56,\n\t0x34, 0x1c, 0xcc, 0x47, 0xd9, 0x9e, 0x72, 0x56, 0x69, 0xf8, 0x61, 0x2c, 0x13, 0x65, 0x30, 0x7e,\n\t0x4a, 0x99, 0x2a, 0xb9, 0xa3, 0x39, 0xc6, 0xe7, 0xd9, 0x70, 0xfe, 0xa7, 0xed, 0x23, 0xf9, 0x19,\n\t0x8a, 0x86, 0xda, 0x14, 0x16, 0x0e, 0x57, 0x86, 0xb1, 0x93, 0xd8, 0xd4, 0xbf, 0xcf, 0xa9, 0x70,\n\t0x20, 0x82, 0x85, 0x43, 0x6d, 0xc4, 0x02, 0xba, 0xbd, 0x85, 0xe1, 0x0b, 0x2a, 0x1c, 0xc4, 0xa0,\n\t0x82, 0x06, 0x06, 0x0b, 0xc5, 0x97, 0xa4, 0x20, 0x06, 0x14, 0x77, 0xb6, 0x1b, 0x6d, 0x22, 0x3c,\n\t0x3f, 0x55, 0x89, 0x03, 0xab, 0x0d, 0xaa, 0xaf, 0x36, 0x3b, 0x87, 0xb0, 0x65, 0x0d, 0x85, 0x4a,\n\t0x14, 0x8a, 0x34, 0x75, 0x3c, 0x01, 0x13, 0x87, 0xc5, 0xc6, 0xbe, 0xa6, 0x4a, 0xa4, 0x61, 0xb0,\n\t0x37, 0x6d, 0x42, 0x84, 0xb0, 0xbb, 0x8e, 0xbb, 0x66, 0xa3, 0xfb, 0xa6, 0xb2, 0xb9, 0xe3, 0xc4,\n\t0x82, 0x53, 0x9b, 0x7f, 0xb2, 0x68, 0x5d, 0x6c, 0x58, 0x3d, 0x9d, 0xdf, 0x56, 0xe6, 0x9f, 0x95,\n\t0x82, 0x2c, 0x6a, 0xc8, 0x48, 0x65, 0x9e, 0xaa, 0xdf, 0xb8, 0xc3, 0xb5, 0x58, 0xdc, 0x17, 0xe9,\n\t0x1e, 0xda, 0xc2, 0xfb, 0xed, 0x1c, 0xa7, 0xf8, 0xed, 0xf0, 0x90, 0x77, 0x0e, 0x3d, 0x66, 0xd9,\n\t0xd9, 0xad, 0xf2, 0x39, 0xef, 0x98, 0x79, 0xf8, 0x11, 0x36, 0xd4, 0x31, 0xf0, 0x98, 0x55, 0x0f,\n\t0xa3, 0x6a, 0x50, 0x9f, 0x77, 0xf8, 0x01, 0xb6, 0x0b, 0x86, 0x17, 0x33, 0xfe, 0x08, 0xe2, 0xf9,\n\t0x72, 0x7e, 0x88, 0xf5, 0xd3, 0xd0, 0x62, 0x46, 0x1f, 0x45, 0xb4, 0x44, 0x00, 0xa7, 0x81, 0xc5,\n\t0x8c, 0x3f, 0x46, 0x38, 0x21, 0x80, 0xdb, 0x87, 0xf0, 0xbb, 0x27, 0x76, 0x61, 0xd3, 0xa1, 0xd8,\n\t0x4d, 0xb3, 0x3e, 0x9c, 0x54, 0xcc, 0xf4, 0xe3, 0xf8, 0xe5, 0x44, 0xf0, 0x5b, 0xd9, 0x6e, 0xcb,\n\t0x80, 0x3f, 0x89, 0x68, 0xb1, 0x9e, 0xcf, 0xb1, 0x01, 0x6d, 0x3a, 0x31, 0xe3, 0x4f, 0x21, 0xae,\n\t0x53, 0xb0, 0x75, 0x9c, 0x4e, 0xcc, 0x82, 0xa7, 0x69, 0xeb, 0x48, 0x40, 0xd8, 0x68, 0x30, 0x31,\n\t0xd3, 0xcf, 0x50, 0xd4, 0x09, 0xe1, 0x33, 0xac, 0x56, 0x36, 0x1b, 0x33, 0xff, 0x2c, 0xf2, 0x6d,\n\t0x06, 0x22, 0xa0, 0x35, 0x3b, 0xb3, 0xe2, 0x39, 0x8a, 0x80, 0x46, 0xc1, 0x31, 0xaa, 0x0e, 0x30,\n\t0x66, 0xd3, 0xf3, 0x74, 0x8c, 0x2a, 0xf3, 0x0b, 0x64, 0x33, 0xaf, 0xf9, 0x66, 0xc5, 0x0b, 0x94,\n\t0xcd, 0x7c, 0x3d, 0x6c, 0xa3, 0x3a, 0x11, 0x98, 0x1d, 0x2f, 0xd2, 0x36, 0x2a, 0x03, 0x01, 0x5f,\n\t0x62, 0xf5, 0x9d, 0xd3, 0x80, 0xd9, 0xf7, 0x12, 0xfa, 0x46, 0x77, 0x0c, 0x03, 0xfc, 0x2e, 0x36,\n\t0xd1, 0x7d, 0x12, 0x30, 0x5b, 0xcf, 0x6d, 0x55, 0x7e, 0xbb, 0xe9, 0x83, 0x00, 0x3f, 0xd1, 0x6e,\n\t0x29, 0xfa, 0x14, 0x60, 0xd6, 0x9e, 0xdf, 0xea, 0x2c, 0xdc, 0xfa, 0x10, 0xc0, 0x67, 0x19, 0x6b,\n\t0x37, 0x60, 0xb3, 0xeb, 0x02, 0xba, 0x34, 0x08, 0x8e, 0x06, 0xf6, 0x5f, 0x33, 0x7f, 0x91, 0x8e,\n\t0x06, 0x12, 0x70, 0x34, 0xa8, 0xf5, 0x9a, 0xe9, 0x4b, 0x74, 0x34, 0x08, 0x81, 0x27, 0x5b, 0xeb,\n\t0x6e, 0x66, 0xc3, 0x65, 0x7a, 0xb2, 0x35, 0x8a, 0x1f, 0x63, 0xa3, 0x3b, 0x1a, 0xa2, 0x59, 0xf5,\n\t0x1a, 0xaa, 0xf6, 0x54, 0xfb, 0xa1, 0xde, 0xbc, 0xb0, 0x19, 0x9a, 0x6d, 0xaf, 0x57, 0x9a, 0x17,\n\t0xf6, 0x42, 0x3e, 0xcd, 0xfa, 0xa3, 0x2c, 0x08, 0xe0, 0xf0, 0xd4, 0x6f, 0xe8, 0xd2, 0x4d, 0x45,\n\t0xd0, 0x22, 0xc5, 0xaf, 0xdb, 0x18, 0x1d, 0x02, 0xf8, 0x01, 0xb6, 0x5b, 0x84, 0x4d, 0xd1, 0x32,\n\t0x91, 0xbf, 0x6d, 0x53, 0xc1, 0x84, 0xd5, 0x7c, 0x86, 0xb1, 0xe2, 0xd5, 0x08, 0x84, 0xd9, 0xc4,\n\t0xfe, 0xbe, 0x5d, 0xbc, 0xa5, 0xd1, 0x90, 0xb6, 0x20, 0x4f, 0x8a, 0x41, 0xb0, 0xd9, 0x29, 0xc8,\n\t0x33, 0x72, 0x90, 0xf5, 0xdd, 0x9f, 0xca, 0x48, 0x39, 0x9e, 0x89, 0xfe, 0x03, 0x69, 0x5a, 0x0f,\n\t0x01, 0x0b, 0x65, 0x22, 0x94, 0xe3, 0xa5, 0x26, 0xf6, 0x4f, 0x64, 0x4b, 0x00, 0x60, 0xd7, 0x49,\n\t0x95, 0xcd, 0x7d, 0xff, 0x45, 0x30, 0x01, 0xb0, 0x69, 0xb8, 0x5e, 0x17, 0x1b, 0x26, 0xf6, 0x6f,\n\t0xda, 0x34, 0xae, 0xe7, 0x87, 0x58, 0x0d, 0x2e, 0xf3, 0xb7, 0x4a, 0x26, 0xf8, 0x1f, 0x84, 0xdb,\n\t0x04, 0x7c, 0x73, 0xaa, 0x5a, 0xca, 0x37, 0x07, 0xfb, 0x5f, 0xcc, 0x34, 0xad, 0xe7, 0xb3, 0x6c,\n\t0x20, 0x55, 0xad, 0x56, 0x86, 0xf3, 0xa9, 0x01, 0xff, 0x6f, 0xbb, 0x7c, 0x65, 0x51, 0x32, 0x90,\n\t0xed, 0x07, 0xd7, 0x55, 0x2c, 0xfd, 0x48, 0x89, 0xc4, 0x64, 0xd8, 0x42, 0x83, 0x86, 0x1c, 0x9e,\n\t0x67, 0x63, 0xae, 0x0c, 0xab, 0xdc, 0x61, 0xb6, 0x20, 0x17, 0xe4, 0x52, 0x5e, 0x67, 0xee, 0xbd,\n\t0xd9, 0xf3, 0xd5, 0x5a, 0xd6, 0x9c, 0x74, 0x65, 0x38, 0x05, 0xbf, 0x3c, 0xda, 0x2f, 0x54, 0xcb,\n\t0xdf, 0x21, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x9c, 0xaf, 0x70, 0x4e, 0x83, 0x15, 0x00, 0x00,\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.golden",
    "content": "// Code generated by protoc-gen-go.\n// source: gogo.proto\n// DO NOT EDIT!\n\npackage gogoproto\n\nimport proto \"github.com/gogo/protobuf/proto\"\nimport json \"encoding/json\"\nimport math \"math\"\nimport google_protobuf \"github.com/gogo/protobuf/protoc-gen-gogo/descriptor\"\n\n// Reference proto, json, and math imports to suppress error if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = &json.SyntaxError{}\nvar _ = math.Inf\n\nvar E_Nullable = &proto.ExtensionDesc{\n\tExtendedType:  (*google_protobuf.FieldOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         51235,\n\tName:          \"gogoproto.nullable\",\n\tTag:           \"varint,51235,opt,name=nullable\",\n}\n\nvar E_Embed = &proto.ExtensionDesc{\n\tExtendedType:  (*google_protobuf.FieldOptions)(nil),\n\tExtensionType: (*bool)(nil),\n\tField:         51236,\n\tName:          \"gogoproto.embed\",\n\tTag:           \"varint,51236,opt,name=embed\",\n}\n\nvar E_Customtype = &proto.ExtensionDesc{\n\tExtendedType:  (*google_protobuf.FieldOptions)(nil),\n\tExtensionType: (*string)(nil),\n\tField:         51237,\n\tName:          \"gogoproto.customtype\",\n\tTag:           \"bytes,51237,opt,name=customtype\",\n}\n\nfunc init() {\n\tproto.RegisterExtension(E_Nullable)\n\tproto.RegisterExtension(E_Embed)\n\tproto.RegisterExtension(E_Customtype)\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/gogoproto/gogo.proto",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nsyntax = \"proto2\";\npackage gogoproto;\n\nimport \"google/protobuf/descriptor.proto\";\n\noption java_package = \"com.google.protobuf\";\noption java_outer_classname = \"GoGoProtos\";\noption go_package = \"github.com/gogo/protobuf/gogoproto\";\n\nextend google.protobuf.EnumOptions {\n\toptional bool goproto_enum_prefix = 62001;\n\toptional bool goproto_enum_stringer = 62021;\n\toptional bool enum_stringer = 62022;\n\toptional string enum_customname = 62023;\n\toptional bool enumdecl = 62024;\n}\n\nextend google.protobuf.EnumValueOptions {\n\toptional string enumvalue_customname = 66001;\n}\n\nextend google.protobuf.FileOptions {\n\toptional bool goproto_getters_all = 63001;\n\toptional bool goproto_enum_prefix_all = 63002;\n\toptional bool goproto_stringer_all = 63003;\n\toptional bool verbose_equal_all = 63004;\n\toptional bool face_all = 63005;\n\toptional bool gostring_all = 63006;\n\toptional bool populate_all = 63007;\n\toptional bool stringer_all = 63008;\n\toptional bool onlyone_all = 63009;\n\n\toptional bool equal_all = 63013;\n\toptional bool description_all = 63014;\n\toptional bool testgen_all = 63015;\n\toptional bool benchgen_all = 63016;\n\toptional bool marshaler_all = 63017;\n\toptional bool unmarshaler_all = 63018;\n\toptional bool stable_marshaler_all = 63019;\n\n\toptional bool sizer_all = 63020;\n\n\toptional bool goproto_enum_stringer_all = 63021;\n\toptional bool enum_stringer_all = 63022;\n\n\toptional bool unsafe_marshaler_all = 63023;\n\toptional bool unsafe_unmarshaler_all = 63024;\n\n\toptional bool goproto_extensions_map_all = 63025;\n\toptional bool goproto_unrecognized_all = 63026;\n\toptional bool gogoproto_import = 63027;\n\toptional bool protosizer_all = 63028;\n\toptional bool compare_all = 63029;\n    optional bool typedecl_all = 63030;\n    optional bool enumdecl_all = 63031;\n\n\toptional bool goproto_registration = 63032;\n\toptional bool messagename_all = 63033;\n\n\toptional bool goproto_sizecache_all = 63034;\n\toptional bool goproto_unkeyed_all = 63035;\n}\n\nextend google.protobuf.MessageOptions {\n\toptional bool goproto_getters = 64001;\n\toptional bool goproto_stringer = 64003;\n\toptional bool verbose_equal = 64004;\n\toptional bool face = 64005;\n\toptional bool gostring = 64006;\n\toptional bool populate = 64007;\n\toptional bool stringer = 67008;\n\toptional bool onlyone = 64009;\n\n\toptional bool equal = 64013;\n\toptional bool description = 64014;\n\toptional bool testgen = 64015;\n\toptional bool benchgen = 64016;\n\toptional bool marshaler = 64017;\n\toptional bool unmarshaler = 64018;\n\toptional bool stable_marshaler = 64019;\n\n\toptional bool sizer = 64020;\n\n\toptional bool unsafe_marshaler = 64023;\n\toptional bool unsafe_unmarshaler = 64024;\n\n\toptional bool goproto_extensions_map = 64025;\n\toptional bool goproto_unrecognized = 64026;\n\n\toptional bool protosizer = 64028;\n\toptional bool compare = 64029;\n\n\toptional bool typedecl = 64030;\n\n\toptional bool messagename = 64033;\n\n\toptional bool goproto_sizecache = 64034;\n\toptional bool goproto_unkeyed = 64035;\n}\n\nextend google.protobuf.FieldOptions {\n\toptional bool nullable = 65001;\n\toptional bool embed = 65002;\n\toptional string customtype = 65003;\n\toptional string customname = 65004;\n\toptional string jsontag = 65005;\n\toptional string moretags = 65006;\n\toptional string casttype = 65007;\n\toptional string castkey = 65008;\n\toptional string castvalue = 65009;\n\n\toptional bool stdtime = 65010;\n\toptional bool stdduration = 65011;\n\toptional bool wktpointer = 65012;\n\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/gogoproto/helper.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage gogoproto\n\nimport google_protobuf \"github.com/gogo/protobuf/protoc-gen-gogo/descriptor\"\nimport proto \"github.com/gogo/protobuf/proto\"\n\nfunc IsEmbed(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Embed, false)\n}\n\nfunc IsNullable(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Nullable, true)\n}\n\nfunc IsStdTime(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Stdtime, false)\n}\n\nfunc IsStdDuration(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Stdduration, false)\n}\n\nfunc IsStdDouble(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == \".google.protobuf.DoubleValue\"\n}\n\nfunc IsStdFloat(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == \".google.protobuf.FloatValue\"\n}\n\nfunc IsStdInt64(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == \".google.protobuf.Int64Value\"\n}\n\nfunc IsStdUInt64(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == \".google.protobuf.UInt64Value\"\n}\n\nfunc IsStdInt32(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == \".google.protobuf.Int32Value\"\n}\n\nfunc IsStdUInt32(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == \".google.protobuf.UInt32Value\"\n}\n\nfunc IsStdBool(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == \".google.protobuf.BoolValue\"\n}\n\nfunc IsStdString(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == \".google.protobuf.StringValue\"\n}\n\nfunc IsStdBytes(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == \".google.protobuf.BytesValue\"\n}\n\nfunc IsStdType(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn (IsStdTime(field) || IsStdDuration(field) ||\n\t\tIsStdDouble(field) || IsStdFloat(field) ||\n\t\tIsStdInt64(field) || IsStdUInt64(field) ||\n\t\tIsStdInt32(field) || IsStdUInt32(field) ||\n\t\tIsStdBool(field) ||\n\t\tIsStdString(field) || IsStdBytes(field))\n}\n\nfunc IsWktPtr(field *google_protobuf.FieldDescriptorProto) bool {\n\treturn proto.GetBoolExtension(field.Options, E_Wktpointer, false)\n}\n\nfunc NeedsNilCheck(proto3 bool, field *google_protobuf.FieldDescriptorProto) bool {\n\tnullable := IsNullable(field)\n\tif field.IsMessage() || IsCustomType(field) {\n\t\treturn nullable\n\t}\n\tif proto3 {\n\t\treturn false\n\t}\n\treturn nullable || *field.Type == google_protobuf.FieldDescriptorProto_TYPE_BYTES\n}\n\nfunc IsCustomType(field *google_protobuf.FieldDescriptorProto) bool {\n\ttyp := GetCustomType(field)\n\tif len(typ) > 0 {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc IsCastType(field *google_protobuf.FieldDescriptorProto) bool {\n\ttyp := GetCastType(field)\n\tif len(typ) > 0 {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc IsCastKey(field *google_protobuf.FieldDescriptorProto) bool {\n\ttyp := GetCastKey(field)\n\tif len(typ) > 0 {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc IsCastValue(field *google_protobuf.FieldDescriptorProto) bool {\n\ttyp := GetCastValue(field)\n\tif len(typ) > 0 {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc HasEnumDecl(file *google_protobuf.FileDescriptorProto, enum *google_protobuf.EnumDescriptorProto) bool {\n\treturn proto.GetBoolExtension(enum.Options, E_Enumdecl, proto.GetBoolExtension(file.Options, E_EnumdeclAll, true))\n}\n\nfunc HasTypeDecl(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Typedecl, proto.GetBoolExtension(file.Options, E_TypedeclAll, true))\n}\n\nfunc GetCustomType(field *google_protobuf.FieldDescriptorProto) string {\n\tif field == nil {\n\t\treturn \"\"\n\t}\n\tif field.Options != nil {\n\t\tv, err := proto.GetExtension(field.Options, E_Customtype)\n\t\tif err == nil && v.(*string) != nil {\n\t\t\treturn *(v.(*string))\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc GetCastType(field *google_protobuf.FieldDescriptorProto) string {\n\tif field == nil {\n\t\treturn \"\"\n\t}\n\tif field.Options != nil {\n\t\tv, err := proto.GetExtension(field.Options, E_Casttype)\n\t\tif err == nil && v.(*string) != nil {\n\t\t\treturn *(v.(*string))\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc GetCastKey(field *google_protobuf.FieldDescriptorProto) string {\n\tif field == nil {\n\t\treturn \"\"\n\t}\n\tif field.Options != nil {\n\t\tv, err := proto.GetExtension(field.Options, E_Castkey)\n\t\tif err == nil && v.(*string) != nil {\n\t\t\treturn *(v.(*string))\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc GetCastValue(field *google_protobuf.FieldDescriptorProto) string {\n\tif field == nil {\n\t\treturn \"\"\n\t}\n\tif field.Options != nil {\n\t\tv, err := proto.GetExtension(field.Options, E_Castvalue)\n\t\tif err == nil && v.(*string) != nil {\n\t\t\treturn *(v.(*string))\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc IsCustomName(field *google_protobuf.FieldDescriptorProto) bool {\n\tname := GetCustomName(field)\n\tif len(name) > 0 {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc IsEnumCustomName(field *google_protobuf.EnumDescriptorProto) bool {\n\tname := GetEnumCustomName(field)\n\tif len(name) > 0 {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc IsEnumValueCustomName(field *google_protobuf.EnumValueDescriptorProto) bool {\n\tname := GetEnumValueCustomName(field)\n\tif len(name) > 0 {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc GetCustomName(field *google_protobuf.FieldDescriptorProto) string {\n\tif field == nil {\n\t\treturn \"\"\n\t}\n\tif field.Options != nil {\n\t\tv, err := proto.GetExtension(field.Options, E_Customname)\n\t\tif err == nil && v.(*string) != nil {\n\t\t\treturn *(v.(*string))\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc GetEnumCustomName(field *google_protobuf.EnumDescriptorProto) string {\n\tif field == nil {\n\t\treturn \"\"\n\t}\n\tif field.Options != nil {\n\t\tv, err := proto.GetExtension(field.Options, E_EnumCustomname)\n\t\tif err == nil && v.(*string) != nil {\n\t\t\treturn *(v.(*string))\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc GetEnumValueCustomName(field *google_protobuf.EnumValueDescriptorProto) string {\n\tif field == nil {\n\t\treturn \"\"\n\t}\n\tif field.Options != nil {\n\t\tv, err := proto.GetExtension(field.Options, E_EnumvalueCustomname)\n\t\tif err == nil && v.(*string) != nil {\n\t\t\treturn *(v.(*string))\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc GetJsonTag(field *google_protobuf.FieldDescriptorProto) *string {\n\tif field == nil {\n\t\treturn nil\n\t}\n\tif field.Options != nil {\n\t\tv, err := proto.GetExtension(field.Options, E_Jsontag)\n\t\tif err == nil && v.(*string) != nil {\n\t\t\treturn (v.(*string))\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc GetMoreTags(field *google_protobuf.FieldDescriptorProto) *string {\n\tif field == nil {\n\t\treturn nil\n\t}\n\tif field.Options != nil {\n\t\tv, err := proto.GetExtension(field.Options, E_Moretags)\n\t\tif err == nil && v.(*string) != nil {\n\t\t\treturn (v.(*string))\n\t\t}\n\t}\n\treturn nil\n}\n\ntype EnableFunc func(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool\n\nfunc EnabledGoEnumPrefix(file *google_protobuf.FileDescriptorProto, enum *google_protobuf.EnumDescriptorProto) bool {\n\treturn proto.GetBoolExtension(enum.Options, E_GoprotoEnumPrefix, proto.GetBoolExtension(file.Options, E_GoprotoEnumPrefixAll, true))\n}\n\nfunc EnabledGoStringer(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_GoprotoStringer, proto.GetBoolExtension(file.Options, E_GoprotoStringerAll, true))\n}\n\nfunc HasGoGetters(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_GoprotoGetters, proto.GetBoolExtension(file.Options, E_GoprotoGettersAll, true))\n}\n\nfunc IsUnion(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Onlyone, proto.GetBoolExtension(file.Options, E_OnlyoneAll, false))\n}\n\nfunc HasGoString(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Gostring, proto.GetBoolExtension(file.Options, E_GostringAll, false))\n}\n\nfunc HasEqual(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Equal, proto.GetBoolExtension(file.Options, E_EqualAll, false))\n}\n\nfunc HasVerboseEqual(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_VerboseEqual, proto.GetBoolExtension(file.Options, E_VerboseEqualAll, false))\n}\n\nfunc IsStringer(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Stringer, proto.GetBoolExtension(file.Options, E_StringerAll, false))\n}\n\nfunc IsFace(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Face, proto.GetBoolExtension(file.Options, E_FaceAll, false))\n}\n\nfunc HasDescription(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Description, proto.GetBoolExtension(file.Options, E_DescriptionAll, false))\n}\n\nfunc HasPopulate(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Populate, proto.GetBoolExtension(file.Options, E_PopulateAll, false))\n}\n\nfunc HasTestGen(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Testgen, proto.GetBoolExtension(file.Options, E_TestgenAll, false))\n}\n\nfunc HasBenchGen(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Benchgen, proto.GetBoolExtension(file.Options, E_BenchgenAll, false))\n}\n\nfunc IsMarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Marshaler, proto.GetBoolExtension(file.Options, E_MarshalerAll, false))\n}\n\nfunc IsUnmarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Unmarshaler, proto.GetBoolExtension(file.Options, E_UnmarshalerAll, false))\n}\n\nfunc IsStableMarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_StableMarshaler, proto.GetBoolExtension(file.Options, E_StableMarshalerAll, false))\n}\n\nfunc IsSizer(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Sizer, proto.GetBoolExtension(file.Options, E_SizerAll, false))\n}\n\nfunc IsProtoSizer(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Protosizer, proto.GetBoolExtension(file.Options, E_ProtosizerAll, false))\n}\n\nfunc IsGoEnumStringer(file *google_protobuf.FileDescriptorProto, enum *google_protobuf.EnumDescriptorProto) bool {\n\treturn proto.GetBoolExtension(enum.Options, E_GoprotoEnumStringer, proto.GetBoolExtension(file.Options, E_GoprotoEnumStringerAll, true))\n}\n\nfunc IsEnumStringer(file *google_protobuf.FileDescriptorProto, enum *google_protobuf.EnumDescriptorProto) bool {\n\treturn proto.GetBoolExtension(enum.Options, E_EnumStringer, proto.GetBoolExtension(file.Options, E_EnumStringerAll, false))\n}\n\nfunc IsUnsafeMarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_UnsafeMarshaler, proto.GetBoolExtension(file.Options, E_UnsafeMarshalerAll, false))\n}\n\nfunc IsUnsafeUnmarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_UnsafeUnmarshaler, proto.GetBoolExtension(file.Options, E_UnsafeUnmarshalerAll, false))\n}\n\nfunc HasExtensionsMap(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_GoprotoExtensionsMap, proto.GetBoolExtension(file.Options, E_GoprotoExtensionsMapAll, true))\n}\n\nfunc HasUnrecognized(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_GoprotoUnrecognized, proto.GetBoolExtension(file.Options, E_GoprotoUnrecognizedAll, true))\n}\n\nfunc IsProto3(file *google_protobuf.FileDescriptorProto) bool {\n\treturn file.GetSyntax() == \"proto3\"\n}\n\nfunc ImportsGoGoProto(file *google_protobuf.FileDescriptorProto) bool {\n\treturn proto.GetBoolExtension(file.Options, E_GogoprotoImport, true)\n}\n\nfunc HasCompare(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Compare, proto.GetBoolExtension(file.Options, E_CompareAll, false))\n}\n\nfunc RegistersGolangProto(file *google_protobuf.FileDescriptorProto) bool {\n\treturn proto.GetBoolExtension(file.Options, E_GoprotoRegistration, false)\n}\n\nfunc HasMessageName(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_Messagename, proto.GetBoolExtension(file.Options, E_MessagenameAll, false))\n}\n\nfunc HasSizecache(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_GoprotoSizecache, proto.GetBoolExtension(file.Options, E_GoprotoSizecacheAll, true))\n}\n\nfunc HasUnkeyed(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool {\n\treturn proto.GetBoolExtension(message.Options, E_GoprotoUnkeyed, proto.GetBoolExtension(file.Options, E_GoprotoUnkeyedAll, true))\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/Makefile",
    "content": "# Go support for Protocol Buffers - Google's data interchange format\n#\n# Copyright 2010 The Go Authors.  All rights reserved.\n# https://github.com/golang/protobuf\n#\n# Redistribution and use in source and binary forms, with or without\n# modification, are permitted provided that the following conditions are\n# met:\n#\n#     * Redistributions of source code must retain the above copyright\n# notice, this list of conditions and the following disclaimer.\n#     * Redistributions in binary form must reproduce the above\n# copyright notice, this list of conditions and the following disclaimer\n# in the documentation and/or other materials provided with the\n# distribution.\n#     * Neither the name of Google Inc. nor the names of its\n# contributors may be used to endorse or promote products derived from\n# this software without specific prior written permission.\n#\n# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n# \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\ninstall:\n\tgo install\n\ntest: install generate-test-pbs\n\tgo test\n\n\ngenerate-test-pbs:\n\tmake install\n\tmake -C test_proto\n\tmake -C proto3_proto\n\tmake\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/clone.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2011 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Protocol buffer deep copy and merge.\n// TODO: RawMessage.\n\npackage proto\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"reflect\"\n\t\"strings\"\n)\n\n// Clone returns a deep copy of a protocol buffer.\nfunc Clone(src Message) Message {\n\tin := reflect.ValueOf(src)\n\tif in.IsNil() {\n\t\treturn src\n\t}\n\tout := reflect.New(in.Type().Elem())\n\tdst := out.Interface().(Message)\n\tMerge(dst, src)\n\treturn dst\n}\n\n// Merger is the interface representing objects that can merge messages of the same type.\ntype Merger interface {\n\t// Merge merges src into this message.\n\t// Required and optional fields that are set in src will be set to that value in dst.\n\t// Elements of repeated fields will be appended.\n\t//\n\t// Merge may panic if called with a different argument type than the receiver.\n\tMerge(src Message)\n}\n\n// generatedMerger is the custom merge method that generated protos will have.\n// We must add this method since a generate Merge method will conflict with\n// many existing protos that have a Merge data field already defined.\ntype generatedMerger interface {\n\tXXX_Merge(src Message)\n}\n\n// Merge merges src into dst.\n// Required and optional fields that are set in src will be set to that value in dst.\n// Elements of repeated fields will be appended.\n// Merge panics if src and dst are not the same type, or if dst is nil.\nfunc Merge(dst, src Message) {\n\tif m, ok := dst.(Merger); ok {\n\t\tm.Merge(src)\n\t\treturn\n\t}\n\n\tin := reflect.ValueOf(src)\n\tout := reflect.ValueOf(dst)\n\tif out.IsNil() {\n\t\tpanic(\"proto: nil destination\")\n\t}\n\tif in.Type() != out.Type() {\n\t\tpanic(fmt.Sprintf(\"proto.Merge(%T, %T) type mismatch\", dst, src))\n\t}\n\tif in.IsNil() {\n\t\treturn // Merge from nil src is a noop\n\t}\n\tif m, ok := dst.(generatedMerger); ok {\n\t\tm.XXX_Merge(src)\n\t\treturn\n\t}\n\tmergeStruct(out.Elem(), in.Elem())\n}\n\nfunc mergeStruct(out, in reflect.Value) {\n\tsprop := GetProperties(in.Type())\n\tfor i := 0; i < in.NumField(); i++ {\n\t\tf := in.Type().Field(i)\n\t\tif strings.HasPrefix(f.Name, \"XXX_\") {\n\t\t\tcontinue\n\t\t}\n\t\tmergeAny(out.Field(i), in.Field(i), false, sprop.Prop[i])\n\t}\n\n\tif emIn, ok := in.Addr().Interface().(extensionsBytes); ok {\n\t\temOut := out.Addr().Interface().(extensionsBytes)\n\t\tbIn := emIn.GetExtensions()\n\t\tbOut := emOut.GetExtensions()\n\t\t*bOut = append(*bOut, *bIn...)\n\t} else if emIn, err := extendable(in.Addr().Interface()); err == nil {\n\t\temOut, _ := extendable(out.Addr().Interface())\n\t\tmIn, muIn := emIn.extensionsRead()\n\t\tif mIn != nil {\n\t\t\tmOut := emOut.extensionsWrite()\n\t\t\tmuIn.Lock()\n\t\t\tmergeExtension(mOut, mIn)\n\t\t\tmuIn.Unlock()\n\t\t}\n\t}\n\n\tuf := in.FieldByName(\"XXX_unrecognized\")\n\tif !uf.IsValid() {\n\t\treturn\n\t}\n\tuin := uf.Bytes()\n\tif len(uin) > 0 {\n\t\tout.FieldByName(\"XXX_unrecognized\").SetBytes(append([]byte(nil), uin...))\n\t}\n}\n\n// mergeAny performs a merge between two values of the same type.\n// viaPtr indicates whether the values were indirected through a pointer (implying proto2).\n// prop is set if this is a struct field (it may be nil).\nfunc mergeAny(out, in reflect.Value, viaPtr bool, prop *Properties) {\n\tif in.Type() == protoMessageType {\n\t\tif !in.IsNil() {\n\t\t\tif out.IsNil() {\n\t\t\t\tout.Set(reflect.ValueOf(Clone(in.Interface().(Message))))\n\t\t\t} else {\n\t\t\t\tMerge(out.Interface().(Message), in.Interface().(Message))\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\tswitch in.Kind() {\n\tcase reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64,\n\t\treflect.String, reflect.Uint32, reflect.Uint64:\n\t\tif !viaPtr && isProto3Zero(in) {\n\t\t\treturn\n\t\t}\n\t\tout.Set(in)\n\tcase reflect.Interface:\n\t\t// Probably a oneof field; copy non-nil values.\n\t\tif in.IsNil() {\n\t\t\treturn\n\t\t}\n\t\t// Allocate destination if it is not set, or set to a different type.\n\t\t// Otherwise we will merge as normal.\n\t\tif out.IsNil() || out.Elem().Type() != in.Elem().Type() {\n\t\t\tout.Set(reflect.New(in.Elem().Elem().Type())) // interface -> *T -> T -> new(T)\n\t\t}\n\t\tmergeAny(out.Elem(), in.Elem(), false, nil)\n\tcase reflect.Map:\n\t\tif in.Len() == 0 {\n\t\t\treturn\n\t\t}\n\t\tif out.IsNil() {\n\t\t\tout.Set(reflect.MakeMap(in.Type()))\n\t\t}\n\t\t// For maps with value types of *T or []byte we need to deep copy each value.\n\t\telemKind := in.Type().Elem().Kind()\n\t\tfor _, key := range in.MapKeys() {\n\t\t\tvar val reflect.Value\n\t\t\tswitch elemKind {\n\t\t\tcase reflect.Ptr:\n\t\t\t\tval = reflect.New(in.Type().Elem().Elem())\n\t\t\t\tmergeAny(val, in.MapIndex(key), false, nil)\n\t\t\tcase reflect.Slice:\n\t\t\t\tval = in.MapIndex(key)\n\t\t\t\tval = reflect.ValueOf(append([]byte{}, val.Bytes()...))\n\t\t\tdefault:\n\t\t\t\tval = in.MapIndex(key)\n\t\t\t}\n\t\t\tout.SetMapIndex(key, val)\n\t\t}\n\tcase reflect.Ptr:\n\t\tif in.IsNil() {\n\t\t\treturn\n\t\t}\n\t\tif out.IsNil() {\n\t\t\tout.Set(reflect.New(in.Elem().Type()))\n\t\t}\n\t\tmergeAny(out.Elem(), in.Elem(), true, nil)\n\tcase reflect.Slice:\n\t\tif in.IsNil() {\n\t\t\treturn\n\t\t}\n\t\tif in.Type().Elem().Kind() == reflect.Uint8 {\n\t\t\t// []byte is a scalar bytes field, not a repeated field.\n\n\t\t\t// Edge case: if this is in a proto3 message, a zero length\n\t\t\t// bytes field is considered the zero value, and should not\n\t\t\t// be merged.\n\t\t\tif prop != nil && prop.proto3 && in.Len() == 0 {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Make a deep copy.\n\t\t\t// Append to []byte{} instead of []byte(nil) so that we never end up\n\t\t\t// with a nil result.\n\t\t\tout.SetBytes(append([]byte{}, in.Bytes()...))\n\t\t\treturn\n\t\t}\n\t\tn := in.Len()\n\t\tif out.IsNil() {\n\t\t\tout.Set(reflect.MakeSlice(in.Type(), 0, n))\n\t\t}\n\t\tswitch in.Type().Elem().Kind() {\n\t\tcase reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64,\n\t\t\treflect.String, reflect.Uint32, reflect.Uint64:\n\t\t\tout.Set(reflect.AppendSlice(out, in))\n\t\tdefault:\n\t\t\tfor i := 0; i < n; i++ {\n\t\t\t\tx := reflect.Indirect(reflect.New(in.Type().Elem()))\n\t\t\t\tmergeAny(x, in.Index(i), false, nil)\n\t\t\t\tout.Set(reflect.Append(out, x))\n\t\t\t}\n\t\t}\n\tcase reflect.Struct:\n\t\tmergeStruct(out, in)\n\tdefault:\n\t\t// unknown type, so not a protocol buffer\n\t\tlog.Printf(\"proto: don't know how to copy %v\", in)\n\t}\n}\n\nfunc mergeExtension(out, in map[int32]Extension) {\n\tfor extNum, eIn := range in {\n\t\teOut := Extension{desc: eIn.desc}\n\t\tif eIn.value != nil {\n\t\t\tv := reflect.New(reflect.TypeOf(eIn.value)).Elem()\n\t\t\tmergeAny(v, reflect.ValueOf(eIn.value), false, nil)\n\t\t\teOut.value = v.Interface()\n\t\t}\n\t\tif eIn.enc != nil {\n\t\t\teOut.enc = make([]byte, len(eIn.enc))\n\t\t\tcopy(eOut.enc, eIn.enc)\n\t\t}\n\n\t\tout[extNum] = eOut\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/custom_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport \"reflect\"\n\ntype custom interface {\n\tMarshal() ([]byte, error)\n\tUnmarshal(data []byte) error\n\tSize() int\n}\n\nvar customType = reflect.TypeOf((*custom)(nil)).Elem()\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/decode.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2010 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\n/*\n * Routines for decoding protocol buffer data to construct in-memory representations.\n */\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n)\n\n// errOverflow is returned when an integer is too large to be represented.\nvar errOverflow = errors.New(\"proto: integer overflow\")\n\n// ErrInternalBadWireType is returned by generated code when an incorrect\n// wire type is encountered. It does not get returned to user code.\nvar ErrInternalBadWireType = errors.New(\"proto: internal error: bad wiretype for oneof\")\n\n// DecodeVarint reads a varint-encoded integer from the slice.\n// It returns the integer and the number of bytes consumed, or\n// zero if there is not enough.\n// This is the format for the\n// int32, int64, uint32, uint64, bool, and enum\n// protocol buffer types.\nfunc DecodeVarint(buf []byte) (x uint64, n int) {\n\tfor shift := uint(0); shift < 64; shift += 7 {\n\t\tif n >= len(buf) {\n\t\t\treturn 0, 0\n\t\t}\n\t\tb := uint64(buf[n])\n\t\tn++\n\t\tx |= (b & 0x7F) << shift\n\t\tif (b & 0x80) == 0 {\n\t\t\treturn x, n\n\t\t}\n\t}\n\n\t// The number is too large to represent in a 64-bit value.\n\treturn 0, 0\n}\n\nfunc (p *Buffer) decodeVarintSlow() (x uint64, err error) {\n\ti := p.index\n\tl := len(p.buf)\n\n\tfor shift := uint(0); shift < 64; shift += 7 {\n\t\tif i >= l {\n\t\t\terr = io.ErrUnexpectedEOF\n\t\t\treturn\n\t\t}\n\t\tb := p.buf[i]\n\t\ti++\n\t\tx |= (uint64(b) & 0x7F) << shift\n\t\tif b < 0x80 {\n\t\t\tp.index = i\n\t\t\treturn\n\t\t}\n\t}\n\n\t// The number is too large to represent in a 64-bit value.\n\terr = errOverflow\n\treturn\n}\n\n// DecodeVarint reads a varint-encoded integer from the Buffer.\n// This is the format for the\n// int32, int64, uint32, uint64, bool, and enum\n// protocol buffer types.\nfunc (p *Buffer) DecodeVarint() (x uint64, err error) {\n\ti := p.index\n\tbuf := p.buf\n\n\tif i >= len(buf) {\n\t\treturn 0, io.ErrUnexpectedEOF\n\t} else if buf[i] < 0x80 {\n\t\tp.index++\n\t\treturn uint64(buf[i]), nil\n\t} else if len(buf)-i < 10 {\n\t\treturn p.decodeVarintSlow()\n\t}\n\n\tvar b uint64\n\t// we already checked the first byte\n\tx = uint64(buf[i]) - 0x80\n\ti++\n\n\tb = uint64(buf[i])\n\ti++\n\tx += b << 7\n\tif b&0x80 == 0 {\n\t\tgoto done\n\t}\n\tx -= 0x80 << 7\n\n\tb = uint64(buf[i])\n\ti++\n\tx += b << 14\n\tif b&0x80 == 0 {\n\t\tgoto done\n\t}\n\tx -= 0x80 << 14\n\n\tb = uint64(buf[i])\n\ti++\n\tx += b << 21\n\tif b&0x80 == 0 {\n\t\tgoto done\n\t}\n\tx -= 0x80 << 21\n\n\tb = uint64(buf[i])\n\ti++\n\tx += b << 28\n\tif b&0x80 == 0 {\n\t\tgoto done\n\t}\n\tx -= 0x80 << 28\n\n\tb = uint64(buf[i])\n\ti++\n\tx += b << 35\n\tif b&0x80 == 0 {\n\t\tgoto done\n\t}\n\tx -= 0x80 << 35\n\n\tb = uint64(buf[i])\n\ti++\n\tx += b << 42\n\tif b&0x80 == 0 {\n\t\tgoto done\n\t}\n\tx -= 0x80 << 42\n\n\tb = uint64(buf[i])\n\ti++\n\tx += b << 49\n\tif b&0x80 == 0 {\n\t\tgoto done\n\t}\n\tx -= 0x80 << 49\n\n\tb = uint64(buf[i])\n\ti++\n\tx += b << 56\n\tif b&0x80 == 0 {\n\t\tgoto done\n\t}\n\tx -= 0x80 << 56\n\n\tb = uint64(buf[i])\n\ti++\n\tx += b << 63\n\tif b&0x80 == 0 {\n\t\tgoto done\n\t}\n\n\treturn 0, errOverflow\n\ndone:\n\tp.index = i\n\treturn x, nil\n}\n\n// DecodeFixed64 reads a 64-bit integer from the Buffer.\n// This is the format for the\n// fixed64, sfixed64, and double protocol buffer types.\nfunc (p *Buffer) DecodeFixed64() (x uint64, err error) {\n\t// x, err already 0\n\ti := p.index + 8\n\tif i < 0 || i > len(p.buf) {\n\t\terr = io.ErrUnexpectedEOF\n\t\treturn\n\t}\n\tp.index = i\n\n\tx = uint64(p.buf[i-8])\n\tx |= uint64(p.buf[i-7]) << 8\n\tx |= uint64(p.buf[i-6]) << 16\n\tx |= uint64(p.buf[i-5]) << 24\n\tx |= uint64(p.buf[i-4]) << 32\n\tx |= uint64(p.buf[i-3]) << 40\n\tx |= uint64(p.buf[i-2]) << 48\n\tx |= uint64(p.buf[i-1]) << 56\n\treturn\n}\n\n// DecodeFixed32 reads a 32-bit integer from the Buffer.\n// This is the format for the\n// fixed32, sfixed32, and float protocol buffer types.\nfunc (p *Buffer) DecodeFixed32() (x uint64, err error) {\n\t// x, err already 0\n\ti := p.index + 4\n\tif i < 0 || i > len(p.buf) {\n\t\terr = io.ErrUnexpectedEOF\n\t\treturn\n\t}\n\tp.index = i\n\n\tx = uint64(p.buf[i-4])\n\tx |= uint64(p.buf[i-3]) << 8\n\tx |= uint64(p.buf[i-2]) << 16\n\tx |= uint64(p.buf[i-1]) << 24\n\treturn\n}\n\n// DecodeZigzag64 reads a zigzag-encoded 64-bit integer\n// from the Buffer.\n// This is the format used for the sint64 protocol buffer type.\nfunc (p *Buffer) DecodeZigzag64() (x uint64, err error) {\n\tx, err = p.DecodeVarint()\n\tif err != nil {\n\t\treturn\n\t}\n\tx = (x >> 1) ^ uint64((int64(x&1)<<63)>>63)\n\treturn\n}\n\n// DecodeZigzag32 reads a zigzag-encoded 32-bit integer\n// from  the Buffer.\n// This is the format used for the sint32 protocol buffer type.\nfunc (p *Buffer) DecodeZigzag32() (x uint64, err error) {\n\tx, err = p.DecodeVarint()\n\tif err != nil {\n\t\treturn\n\t}\n\tx = uint64((uint32(x) >> 1) ^ uint32((int32(x&1)<<31)>>31))\n\treturn\n}\n\n// DecodeRawBytes reads a count-delimited byte buffer from the Buffer.\n// This is the format used for the bytes protocol buffer\n// type and for embedded messages.\nfunc (p *Buffer) DecodeRawBytes(alloc bool) (buf []byte, err error) {\n\tn, err := p.DecodeVarint()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tnb := int(n)\n\tif nb < 0 {\n\t\treturn nil, fmt.Errorf(\"proto: bad byte length %d\", nb)\n\t}\n\tend := p.index + nb\n\tif end < p.index || end > len(p.buf) {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\n\tif !alloc {\n\t\t// todo: check if can get more uses of alloc=false\n\t\tbuf = p.buf[p.index:end]\n\t\tp.index += nb\n\t\treturn\n\t}\n\n\tbuf = make([]byte, nb)\n\tcopy(buf, p.buf[p.index:])\n\tp.index += nb\n\treturn\n}\n\n// DecodeStringBytes reads an encoded string from the Buffer.\n// This is the format used for the proto2 string type.\nfunc (p *Buffer) DecodeStringBytes() (s string, err error) {\n\tbuf, err := p.DecodeRawBytes(false)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn string(buf), nil\n}\n\n// Unmarshaler is the interface representing objects that can\n// unmarshal themselves.  The argument points to data that may be\n// overwritten, so implementations should not keep references to the\n// buffer.\n// Unmarshal implementations should not clear the receiver.\n// Any unmarshaled data should be merged into the receiver.\n// Callers of Unmarshal that do not want to retain existing data\n// should Reset the receiver before calling Unmarshal.\ntype Unmarshaler interface {\n\tUnmarshal([]byte) error\n}\n\n// newUnmarshaler is the interface representing objects that can\n// unmarshal themselves. The semantics are identical to Unmarshaler.\n//\n// This exists to support protoc-gen-go generated messages.\n// The proto package will stop type-asserting to this interface in the future.\n//\n// DO NOT DEPEND ON THIS.\ntype newUnmarshaler interface {\n\tXXX_Unmarshal([]byte) error\n}\n\n// Unmarshal parses the protocol buffer representation in buf and places the\n// decoded result in pb.  If the struct underlying pb does not match\n// the data in buf, the results can be unpredictable.\n//\n// Unmarshal resets pb before starting to unmarshal, so any\n// existing data in pb is always removed. Use UnmarshalMerge\n// to preserve and append to existing data.\nfunc Unmarshal(buf []byte, pb Message) error {\n\tpb.Reset()\n\tif u, ok := pb.(newUnmarshaler); ok {\n\t\treturn u.XXX_Unmarshal(buf)\n\t}\n\tif u, ok := pb.(Unmarshaler); ok {\n\t\treturn u.Unmarshal(buf)\n\t}\n\treturn NewBuffer(buf).Unmarshal(pb)\n}\n\n// UnmarshalMerge parses the protocol buffer representation in buf and\n// writes the decoded result to pb.  If the struct underlying pb does not match\n// the data in buf, the results can be unpredictable.\n//\n// UnmarshalMerge merges into existing data in pb.\n// Most code should use Unmarshal instead.\nfunc UnmarshalMerge(buf []byte, pb Message) error {\n\tif u, ok := pb.(newUnmarshaler); ok {\n\t\treturn u.XXX_Unmarshal(buf)\n\t}\n\tif u, ok := pb.(Unmarshaler); ok {\n\t\t// NOTE: The history of proto have unfortunately been inconsistent\n\t\t// whether Unmarshaler should or should not implicitly clear itself.\n\t\t// Some implementations do, most do not.\n\t\t// Thus, calling this here may or may not do what people want.\n\t\t//\n\t\t// See https://github.com/golang/protobuf/issues/424\n\t\treturn u.Unmarshal(buf)\n\t}\n\treturn NewBuffer(buf).Unmarshal(pb)\n}\n\n// DecodeMessage reads a count-delimited message from the Buffer.\nfunc (p *Buffer) DecodeMessage(pb Message) error {\n\tenc, err := p.DecodeRawBytes(false)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn NewBuffer(enc).Unmarshal(pb)\n}\n\n// DecodeGroup reads a tag-delimited group from the Buffer.\n// StartGroup tag is already consumed. This function consumes\n// EndGroup tag.\nfunc (p *Buffer) DecodeGroup(pb Message) error {\n\tb := p.buf[p.index:]\n\tx, y := findEndGroup(b)\n\tif x < 0 {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\terr := Unmarshal(b[:x], pb)\n\tp.index += y\n\treturn err\n}\n\n// Unmarshal parses the protocol buffer representation in the\n// Buffer and places the decoded result in pb.  If the struct\n// underlying pb does not match the data in the buffer, the results can be\n// unpredictable.\n//\n// Unlike proto.Unmarshal, this does not reset pb before starting to unmarshal.\nfunc (p *Buffer) Unmarshal(pb Message) error {\n\t// If the object can unmarshal itself, let it.\n\tif u, ok := pb.(newUnmarshaler); ok {\n\t\terr := u.XXX_Unmarshal(p.buf[p.index:])\n\t\tp.index = len(p.buf)\n\t\treturn err\n\t}\n\tif u, ok := pb.(Unmarshaler); ok {\n\t\t// NOTE: The history of proto have unfortunately been inconsistent\n\t\t// whether Unmarshaler should or should not implicitly clear itself.\n\t\t// Some implementations do, most do not.\n\t\t// Thus, calling this here may or may not do what people want.\n\t\t//\n\t\t// See https://github.com/golang/protobuf/issues/424\n\t\terr := u.Unmarshal(p.buf[p.index:])\n\t\tp.index = len(p.buf)\n\t\treturn err\n\t}\n\n\t// Slow workaround for messages that aren't Unmarshalers.\n\t// This includes some hand-coded .pb.go files and\n\t// bootstrap protos.\n\t// TODO: fix all of those and then add Unmarshal to\n\t// the Message interface. Then:\n\t// The cast above and code below can be deleted.\n\t// The old unmarshaler can be deleted.\n\t// Clients can call Unmarshal directly (can already do that, actually).\n\tvar info InternalMessageInfo\n\terr := info.Unmarshal(pb, p.buf[p.index:])\n\tp.index = len(p.buf)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/deprecated.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2018 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport \"errors\"\n\n// Deprecated: do not use.\ntype Stats struct{ Emalloc, Dmalloc, Encode, Decode, Chit, Cmiss, Size uint64 }\n\n// Deprecated: do not use.\nfunc GetStats() Stats { return Stats{} }\n\n// Deprecated: do not use.\nfunc MarshalMessageSet(interface{}) ([]byte, error) {\n\treturn nil, errors.New(\"proto: not implemented\")\n}\n\n// Deprecated: do not use.\nfunc UnmarshalMessageSet([]byte, interface{}) error {\n\treturn errors.New(\"proto: not implemented\")\n}\n\n// Deprecated: do not use.\nfunc MarshalMessageSetJSON(interface{}) ([]byte, error) {\n\treturn nil, errors.New(\"proto: not implemented\")\n}\n\n// Deprecated: do not use.\nfunc UnmarshalMessageSetJSON([]byte, interface{}) error {\n\treturn errors.New(\"proto: not implemented\")\n}\n\n// Deprecated: do not use.\nfunc RegisterMessageSetType(Message, int32, string) {}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/discard.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2017 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n)\n\ntype generatedDiscarder interface {\n\tXXX_DiscardUnknown()\n}\n\n// DiscardUnknown recursively discards all unknown fields from this message\n// and all embedded messages.\n//\n// When unmarshaling a message with unrecognized fields, the tags and values\n// of such fields are preserved in the Message. This allows a later call to\n// marshal to be able to produce a message that continues to have those\n// unrecognized fields. To avoid this, DiscardUnknown is used to\n// explicitly clear the unknown fields after unmarshaling.\n//\n// For proto2 messages, the unknown fields of message extensions are only\n// discarded from messages that have been accessed via GetExtension.\nfunc DiscardUnknown(m Message) {\n\tif m, ok := m.(generatedDiscarder); ok {\n\t\tm.XXX_DiscardUnknown()\n\t\treturn\n\t}\n\t// TODO: Dynamically populate a InternalMessageInfo for legacy messages,\n\t// but the master branch has no implementation for InternalMessageInfo,\n\t// so it would be more work to replicate that approach.\n\tdiscardLegacy(m)\n}\n\n// DiscardUnknown recursively discards all unknown fields.\nfunc (a *InternalMessageInfo) DiscardUnknown(m Message) {\n\tdi := atomicLoadDiscardInfo(&a.discard)\n\tif di == nil {\n\t\tdi = getDiscardInfo(reflect.TypeOf(m).Elem())\n\t\tatomicStoreDiscardInfo(&a.discard, di)\n\t}\n\tdi.discard(toPointer(&m))\n}\n\ntype discardInfo struct {\n\ttyp reflect.Type\n\n\tinitialized int32 // 0: only typ is valid, 1: everything is valid\n\tlock        sync.Mutex\n\n\tfields       []discardFieldInfo\n\tunrecognized field\n}\n\ntype discardFieldInfo struct {\n\tfield   field // Offset of field, guaranteed to be valid\n\tdiscard func(src pointer)\n}\n\nvar (\n\tdiscardInfoMap  = map[reflect.Type]*discardInfo{}\n\tdiscardInfoLock sync.Mutex\n)\n\nfunc getDiscardInfo(t reflect.Type) *discardInfo {\n\tdiscardInfoLock.Lock()\n\tdefer discardInfoLock.Unlock()\n\tdi := discardInfoMap[t]\n\tif di == nil {\n\t\tdi = &discardInfo{typ: t}\n\t\tdiscardInfoMap[t] = di\n\t}\n\treturn di\n}\n\nfunc (di *discardInfo) discard(src pointer) {\n\tif src.isNil() {\n\t\treturn // Nothing to do.\n\t}\n\n\tif atomic.LoadInt32(&di.initialized) == 0 {\n\t\tdi.computeDiscardInfo()\n\t}\n\n\tfor _, fi := range di.fields {\n\t\tsfp := src.offset(fi.field)\n\t\tfi.discard(sfp)\n\t}\n\n\t// For proto2 messages, only discard unknown fields in message extensions\n\t// that have been accessed via GetExtension.\n\tif em, err := extendable(src.asPointerTo(di.typ).Interface()); err == nil {\n\t\t// Ignore lock since DiscardUnknown is not concurrency safe.\n\t\temm, _ := em.extensionsRead()\n\t\tfor _, mx := range emm {\n\t\t\tif m, ok := mx.value.(Message); ok {\n\t\t\t\tDiscardUnknown(m)\n\t\t\t}\n\t\t}\n\t}\n\n\tif di.unrecognized.IsValid() {\n\t\t*src.offset(di.unrecognized).toBytes() = nil\n\t}\n}\n\nfunc (di *discardInfo) computeDiscardInfo() {\n\tdi.lock.Lock()\n\tdefer di.lock.Unlock()\n\tif di.initialized != 0 {\n\t\treturn\n\t}\n\tt := di.typ\n\tn := t.NumField()\n\n\tfor i := 0; i < n; i++ {\n\t\tf := t.Field(i)\n\t\tif strings.HasPrefix(f.Name, \"XXX_\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tdfi := discardFieldInfo{field: toField(&f)}\n\t\ttf := f.Type\n\n\t\t// Unwrap tf to get its most basic type.\n\t\tvar isPointer, isSlice bool\n\t\tif tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 {\n\t\t\tisSlice = true\n\t\t\ttf = tf.Elem()\n\t\t}\n\t\tif tf.Kind() == reflect.Ptr {\n\t\t\tisPointer = true\n\t\t\ttf = tf.Elem()\n\t\t}\n\t\tif isPointer && isSlice && tf.Kind() != reflect.Struct {\n\t\t\tpanic(fmt.Sprintf(\"%v.%s cannot be a slice of pointers to primitive types\", t, f.Name))\n\t\t}\n\n\t\tswitch tf.Kind() {\n\t\tcase reflect.Struct:\n\t\t\tswitch {\n\t\t\tcase !isPointer:\n\t\t\t\tpanic(fmt.Sprintf(\"%v.%s cannot be a direct struct value\", t, f.Name))\n\t\t\tcase isSlice: // E.g., []*pb.T\n\t\t\t\tdiscardInfo := getDiscardInfo(tf)\n\t\t\t\tdfi.discard = func(src pointer) {\n\t\t\t\t\tsps := src.getPointerSlice()\n\t\t\t\t\tfor _, sp := range sps {\n\t\t\t\t\t\tif !sp.isNil() {\n\t\t\t\t\t\t\tdiscardInfo.discard(sp)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault: // E.g., *pb.T\n\t\t\t\tdiscardInfo := getDiscardInfo(tf)\n\t\t\t\tdfi.discard = func(src pointer) {\n\t\t\t\t\tsp := src.getPointer()\n\t\t\t\t\tif !sp.isNil() {\n\t\t\t\t\t\tdiscardInfo.discard(sp)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Map:\n\t\t\tswitch {\n\t\t\tcase isPointer || isSlice:\n\t\t\t\tpanic(fmt.Sprintf(\"%v.%s cannot be a pointer to a map or a slice of map values\", t, f.Name))\n\t\t\tdefault: // E.g., map[K]V\n\t\t\t\tif tf.Elem().Kind() == reflect.Ptr { // Proto struct (e.g., *T)\n\t\t\t\t\tdfi.discard = func(src pointer) {\n\t\t\t\t\t\tsm := src.asPointerTo(tf).Elem()\n\t\t\t\t\t\tif sm.Len() == 0 {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor _, key := range sm.MapKeys() {\n\t\t\t\t\t\t\tval := sm.MapIndex(key)\n\t\t\t\t\t\t\tDiscardUnknown(val.Interface().(Message))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdfi.discard = func(pointer) {} // Noop\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Interface:\n\t\t\t// Must be oneof field.\n\t\t\tswitch {\n\t\t\tcase isPointer || isSlice:\n\t\t\t\tpanic(fmt.Sprintf(\"%v.%s cannot be a pointer to a interface or a slice of interface values\", t, f.Name))\n\t\t\tdefault: // E.g., interface{}\n\t\t\t\t// TODO: Make this faster?\n\t\t\t\tdfi.discard = func(src pointer) {\n\t\t\t\t\tsu := src.asPointerTo(tf).Elem()\n\t\t\t\t\tif !su.IsNil() {\n\t\t\t\t\t\tsv := su.Elem().Elem().Field(0)\n\t\t\t\t\t\tif sv.Kind() == reflect.Ptr && sv.IsNil() {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch sv.Type().Kind() {\n\t\t\t\t\t\tcase reflect.Ptr: // Proto struct (e.g., *T)\n\t\t\t\t\t\t\tDiscardUnknown(sv.Interface().(Message))\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\tcontinue\n\t\t}\n\t\tdi.fields = append(di.fields, dfi)\n\t}\n\n\tdi.unrecognized = invalidField\n\tif f, ok := t.FieldByName(\"XXX_unrecognized\"); ok {\n\t\tif f.Type != reflect.TypeOf([]byte{}) {\n\t\t\tpanic(\"expected XXX_unrecognized to be of type []byte\")\n\t\t}\n\t\tdi.unrecognized = toField(&f)\n\t}\n\n\tatomic.StoreInt32(&di.initialized, 1)\n}\n\nfunc discardLegacy(m Message) {\n\tv := reflect.ValueOf(m)\n\tif v.Kind() != reflect.Ptr || v.IsNil() {\n\t\treturn\n\t}\n\tv = v.Elem()\n\tif v.Kind() != reflect.Struct {\n\t\treturn\n\t}\n\tt := v.Type()\n\n\tfor i := 0; i < v.NumField(); i++ {\n\t\tf := t.Field(i)\n\t\tif strings.HasPrefix(f.Name, \"XXX_\") {\n\t\t\tcontinue\n\t\t}\n\t\tvf := v.Field(i)\n\t\ttf := f.Type\n\n\t\t// Unwrap tf to get its most basic type.\n\t\tvar isPointer, isSlice bool\n\t\tif tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 {\n\t\t\tisSlice = true\n\t\t\ttf = tf.Elem()\n\t\t}\n\t\tif tf.Kind() == reflect.Ptr {\n\t\t\tisPointer = true\n\t\t\ttf = tf.Elem()\n\t\t}\n\t\tif isPointer && isSlice && tf.Kind() != reflect.Struct {\n\t\t\tpanic(fmt.Sprintf(\"%T.%s cannot be a slice of pointers to primitive types\", m, f.Name))\n\t\t}\n\n\t\tswitch tf.Kind() {\n\t\tcase reflect.Struct:\n\t\t\tswitch {\n\t\t\tcase !isPointer:\n\t\t\t\tpanic(fmt.Sprintf(\"%T.%s cannot be a direct struct value\", m, f.Name))\n\t\t\tcase isSlice: // E.g., []*pb.T\n\t\t\t\tfor j := 0; j < vf.Len(); j++ {\n\t\t\t\t\tdiscardLegacy(vf.Index(j).Interface().(Message))\n\t\t\t\t}\n\t\t\tdefault: // E.g., *pb.T\n\t\t\t\tdiscardLegacy(vf.Interface().(Message))\n\t\t\t}\n\t\tcase reflect.Map:\n\t\t\tswitch {\n\t\t\tcase isPointer || isSlice:\n\t\t\t\tpanic(fmt.Sprintf(\"%T.%s cannot be a pointer to a map or a slice of map values\", m, f.Name))\n\t\t\tdefault: // E.g., map[K]V\n\t\t\t\ttv := vf.Type().Elem()\n\t\t\t\tif tv.Kind() == reflect.Ptr && tv.Implements(protoMessageType) { // Proto struct (e.g., *T)\n\t\t\t\t\tfor _, key := range vf.MapKeys() {\n\t\t\t\t\t\tval := vf.MapIndex(key)\n\t\t\t\t\t\tdiscardLegacy(val.Interface().(Message))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Interface:\n\t\t\t// Must be oneof field.\n\t\t\tswitch {\n\t\t\tcase isPointer || isSlice:\n\t\t\t\tpanic(fmt.Sprintf(\"%T.%s cannot be a pointer to a interface or a slice of interface values\", m, f.Name))\n\t\t\tdefault: // E.g., test_proto.isCommunique_Union interface\n\t\t\t\tif !vf.IsNil() && f.Tag.Get(\"protobuf_oneof\") != \"\" {\n\t\t\t\t\tvf = vf.Elem() // E.g., *test_proto.Communique_Msg\n\t\t\t\t\tif !vf.IsNil() {\n\t\t\t\t\t\tvf = vf.Elem()   // E.g., test_proto.Communique_Msg\n\t\t\t\t\t\tvf = vf.Field(0) // E.g., Proto struct (e.g., *T) or primitive value\n\t\t\t\t\t\tif vf.Kind() == reflect.Ptr {\n\t\t\t\t\t\t\tdiscardLegacy(vf.Interface().(Message))\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\tif vf := v.FieldByName(\"XXX_unrecognized\"); vf.IsValid() {\n\t\tif vf.Type() != reflect.TypeOf([]byte{}) {\n\t\t\tpanic(\"expected XXX_unrecognized to be of type []byte\")\n\t\t}\n\t\tvf.Set(reflect.ValueOf([]byte(nil)))\n\t}\n\n\t// For proto2 messages, only discard unknown fields in message extensions\n\t// that have been accessed via GetExtension.\n\tif em, err := extendable(m); err == nil {\n\t\t// Ignore lock since discardLegacy is not concurrency safe.\n\t\temm, _ := em.extensionsRead()\n\t\tfor _, mx := range emm {\n\t\t\tif m, ok := mx.value.(Message); ok {\n\t\t\t\tdiscardLegacy(m)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/duration.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2016 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\n// This file implements conversions between google.protobuf.Duration\n// and time.Duration.\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n)\n\nconst (\n\t// Range of a Duration in seconds, as specified in\n\t// google/protobuf/duration.proto. This is about 10,000 years in seconds.\n\tmaxSeconds = int64(10000 * 365.25 * 24 * 60 * 60)\n\tminSeconds = -maxSeconds\n)\n\n// validateDuration determines whether the Duration is valid according to the\n// definition in google/protobuf/duration.proto. A valid Duration\n// may still be too large to fit into a time.Duration (the range of Duration\n// is about 10,000 years, and the range of time.Duration is about 290).\nfunc validateDuration(d *duration) error {\n\tif d == nil {\n\t\treturn errors.New(\"duration: nil Duration\")\n\t}\n\tif d.Seconds < minSeconds || d.Seconds > maxSeconds {\n\t\treturn fmt.Errorf(\"duration: %#v: seconds out of range\", d)\n\t}\n\tif d.Nanos <= -1e9 || d.Nanos >= 1e9 {\n\t\treturn fmt.Errorf(\"duration: %#v: nanos out of range\", d)\n\t}\n\t// Seconds and Nanos must have the same sign, unless d.Nanos is zero.\n\tif (d.Seconds < 0 && d.Nanos > 0) || (d.Seconds > 0 && d.Nanos < 0) {\n\t\treturn fmt.Errorf(\"duration: %#v: seconds and nanos have different signs\", d)\n\t}\n\treturn nil\n}\n\n// DurationFromProto converts a Duration to a time.Duration. DurationFromProto\n// returns an error if the Duration is invalid or is too large to be\n// represented in a time.Duration.\nfunc durationFromProto(p *duration) (time.Duration, error) {\n\tif err := validateDuration(p); err != nil {\n\t\treturn 0, err\n\t}\n\td := time.Duration(p.Seconds) * time.Second\n\tif int64(d/time.Second) != p.Seconds {\n\t\treturn 0, fmt.Errorf(\"duration: %#v is out of range for time.Duration\", p)\n\t}\n\tif p.Nanos != 0 {\n\t\td += time.Duration(p.Nanos)\n\t\tif (d < 0) != (p.Nanos < 0) {\n\t\t\treturn 0, fmt.Errorf(\"duration: %#v is out of range for time.Duration\", p)\n\t\t}\n\t}\n\treturn d, nil\n}\n\n// DurationProto converts a time.Duration to a Duration.\nfunc durationProto(d time.Duration) *duration {\n\tnanos := d.Nanoseconds()\n\tsecs := nanos / 1e9\n\tnanos -= secs * 1e9\n\treturn &duration{\n\t\tSeconds: secs,\n\t\tNanos:   int32(nanos),\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/duration_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2016, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"reflect\"\n\t\"time\"\n)\n\nvar durationType = reflect.TypeOf((*time.Duration)(nil)).Elem()\n\ntype duration struct {\n\tSeconds int64 `protobuf:\"varint,1,opt,name=seconds,proto3\" json:\"seconds,omitempty\"`\n\tNanos   int32 `protobuf:\"varint,2,opt,name=nanos,proto3\" json:\"nanos,omitempty\"`\n}\n\nfunc (m *duration) Reset()       { *m = duration{} }\nfunc (*duration) ProtoMessage()  {}\nfunc (*duration) String() string { return \"duration<string>\" }\n\nfunc init() {\n\tRegisterType((*duration)(nil), \"gogo.protobuf.proto.duration\")\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/encode.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2010 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\n/*\n * Routines for encoding data into the wire format for protocol buffers.\n */\n\nimport (\n\t\"errors\"\n\t\"reflect\"\n)\n\nvar (\n\t// errRepeatedHasNil is the error returned if Marshal is called with\n\t// a struct with a repeated field containing a nil element.\n\terrRepeatedHasNil = errors.New(\"proto: repeated field has nil element\")\n\n\t// errOneofHasNil is the error returned if Marshal is called with\n\t// a struct with a oneof field containing a nil element.\n\terrOneofHasNil = errors.New(\"proto: oneof field has nil value\")\n\n\t// ErrNil is the error returned if Marshal is called with nil.\n\tErrNil = errors.New(\"proto: Marshal called with nil\")\n\n\t// ErrTooLarge is the error returned if Marshal is called with a\n\t// message that encodes to >2GB.\n\tErrTooLarge = errors.New(\"proto: message encodes to over 2 GB\")\n)\n\n// The fundamental encoders that put bytes on the wire.\n// Those that take integer types all accept uint64 and are\n// therefore of type valueEncoder.\n\nconst maxVarintBytes = 10 // maximum length of a varint\n\n// EncodeVarint returns the varint encoding of x.\n// This is the format for the\n// int32, int64, uint32, uint64, bool, and enum\n// protocol buffer types.\n// Not used by the package itself, but helpful to clients\n// wishing to use the same encoding.\nfunc EncodeVarint(x uint64) []byte {\n\tvar buf [maxVarintBytes]byte\n\tvar n int\n\tfor n = 0; x > 127; n++ {\n\t\tbuf[n] = 0x80 | uint8(x&0x7F)\n\t\tx >>= 7\n\t}\n\tbuf[n] = uint8(x)\n\tn++\n\treturn buf[0:n]\n}\n\n// EncodeVarint writes a varint-encoded integer to the Buffer.\n// This is the format for the\n// int32, int64, uint32, uint64, bool, and enum\n// protocol buffer types.\nfunc (p *Buffer) EncodeVarint(x uint64) error {\n\tfor x >= 1<<7 {\n\t\tp.buf = append(p.buf, uint8(x&0x7f|0x80))\n\t\tx >>= 7\n\t}\n\tp.buf = append(p.buf, uint8(x))\n\treturn nil\n}\n\n// SizeVarint returns the varint encoding size of an integer.\nfunc SizeVarint(x uint64) int {\n\tswitch {\n\tcase x < 1<<7:\n\t\treturn 1\n\tcase x < 1<<14:\n\t\treturn 2\n\tcase x < 1<<21:\n\t\treturn 3\n\tcase x < 1<<28:\n\t\treturn 4\n\tcase x < 1<<35:\n\t\treturn 5\n\tcase x < 1<<42:\n\t\treturn 6\n\tcase x < 1<<49:\n\t\treturn 7\n\tcase x < 1<<56:\n\t\treturn 8\n\tcase x < 1<<63:\n\t\treturn 9\n\t}\n\treturn 10\n}\n\n// EncodeFixed64 writes a 64-bit integer to the Buffer.\n// This is the format for the\n// fixed64, sfixed64, and double protocol buffer types.\nfunc (p *Buffer) EncodeFixed64(x uint64) error {\n\tp.buf = append(p.buf,\n\t\tuint8(x),\n\t\tuint8(x>>8),\n\t\tuint8(x>>16),\n\t\tuint8(x>>24),\n\t\tuint8(x>>32),\n\t\tuint8(x>>40),\n\t\tuint8(x>>48),\n\t\tuint8(x>>56))\n\treturn nil\n}\n\n// EncodeFixed32 writes a 32-bit integer to the Buffer.\n// This is the format for the\n// fixed32, sfixed32, and float protocol buffer types.\nfunc (p *Buffer) EncodeFixed32(x uint64) error {\n\tp.buf = append(p.buf,\n\t\tuint8(x),\n\t\tuint8(x>>8),\n\t\tuint8(x>>16),\n\t\tuint8(x>>24))\n\treturn nil\n}\n\n// EncodeZigzag64 writes a zigzag-encoded 64-bit integer\n// to the Buffer.\n// This is the format used for the sint64 protocol buffer type.\nfunc (p *Buffer) EncodeZigzag64(x uint64) error {\n\t// use signed number to get arithmetic right shift.\n\treturn p.EncodeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\n\n// EncodeZigzag32 writes a zigzag-encoded 32-bit integer\n// to the Buffer.\n// This is the format used for the sint32 protocol buffer type.\nfunc (p *Buffer) EncodeZigzag32(x uint64) error {\n\t// use signed number to get arithmetic right shift.\n\treturn p.EncodeVarint(uint64((uint32(x) << 1) ^ uint32((int32(x) >> 31))))\n}\n\n// EncodeRawBytes writes a count-delimited byte buffer to the Buffer.\n// This is the format used for the bytes protocol buffer\n// type and for embedded messages.\nfunc (p *Buffer) EncodeRawBytes(b []byte) error {\n\tp.EncodeVarint(uint64(len(b)))\n\tp.buf = append(p.buf, b...)\n\treturn nil\n}\n\n// EncodeStringBytes writes an encoded string to the Buffer.\n// This is the format used for the proto2 string type.\nfunc (p *Buffer) EncodeStringBytes(s string) error {\n\tp.EncodeVarint(uint64(len(s)))\n\tp.buf = append(p.buf, s...)\n\treturn nil\n}\n\n// Marshaler is the interface representing objects that can marshal themselves.\ntype Marshaler interface {\n\tMarshal() ([]byte, error)\n}\n\n// EncodeMessage writes the protocol buffer to the Buffer,\n// prefixed by a varint-encoded length.\nfunc (p *Buffer) EncodeMessage(pb Message) error {\n\tsiz := Size(pb)\n\tsizVar := SizeVarint(uint64(siz))\n\tp.grow(siz + sizVar)\n\tp.EncodeVarint(uint64(siz))\n\treturn p.Marshal(pb)\n}\n\n// All protocol buffer fields are nillable, but be careful.\nfunc isNil(v reflect.Value) bool {\n\tswitch v.Kind() {\n\tcase reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:\n\t\treturn v.IsNil()\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/encode_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nfunc NewRequiredNotSetError(field string) *RequiredNotSetError {\n\treturn &RequiredNotSetError{field}\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/equal.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2011 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Protocol buffer comparison.\n\npackage proto\n\nimport (\n\t\"bytes\"\n\t\"log\"\n\t\"reflect\"\n\t\"strings\"\n)\n\n/*\nEqual returns true iff protocol buffers a and b are equal.\nThe arguments must both be pointers to protocol buffer structs.\n\nEquality is defined in this way:\n  - Two messages are equal iff they are the same type,\n    corresponding fields are equal, unknown field sets\n    are equal, and extensions sets are equal.\n  - Two set scalar fields are equal iff their values are equal.\n    If the fields are of a floating-point type, remember that\n    NaN != x for all x, including NaN. If the message is defined\n    in a proto3 .proto file, fields are not \"set\"; specifically,\n    zero length proto3 \"bytes\" fields are equal (nil == {}).\n  - Two repeated fields are equal iff their lengths are the same,\n    and their corresponding elements are equal. Note a \"bytes\" field,\n    although represented by []byte, is not a repeated field and the\n    rule for the scalar fields described above applies.\n  - Two unset fields are equal.\n  - Two unknown field sets are equal if their current\n    encoded state is equal.\n  - Two extension sets are equal iff they have corresponding\n    elements that are pairwise equal.\n  - Two map fields are equal iff their lengths are the same,\n    and they contain the same set of elements. Zero-length map\n    fields are equal.\n  - Every other combination of things are not equal.\n\nThe return value is undefined if a and b are not protocol buffers.\n*/\nfunc Equal(a, b Message) bool {\n\tif a == nil || b == nil {\n\t\treturn a == b\n\t}\n\tv1, v2 := reflect.ValueOf(a), reflect.ValueOf(b)\n\tif v1.Type() != v2.Type() {\n\t\treturn false\n\t}\n\tif v1.Kind() == reflect.Ptr {\n\t\tif v1.IsNil() {\n\t\t\treturn v2.IsNil()\n\t\t}\n\t\tif v2.IsNil() {\n\t\t\treturn false\n\t\t}\n\t\tv1, v2 = v1.Elem(), v2.Elem()\n\t}\n\tif v1.Kind() != reflect.Struct {\n\t\treturn false\n\t}\n\treturn equalStruct(v1, v2)\n}\n\n// v1 and v2 are known to have the same type.\nfunc equalStruct(v1, v2 reflect.Value) bool {\n\tsprop := GetProperties(v1.Type())\n\tfor i := 0; i < v1.NumField(); i++ {\n\t\tf := v1.Type().Field(i)\n\t\tif strings.HasPrefix(f.Name, \"XXX_\") {\n\t\t\tcontinue\n\t\t}\n\t\tf1, f2 := v1.Field(i), v2.Field(i)\n\t\tif f.Type.Kind() == reflect.Ptr {\n\t\t\tif n1, n2 := f1.IsNil(), f2.IsNil(); n1 && n2 {\n\t\t\t\t// both unset\n\t\t\t\tcontinue\n\t\t\t} else if n1 != n2 {\n\t\t\t\t// set/unset mismatch\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tf1, f2 = f1.Elem(), f2.Elem()\n\t\t}\n\t\tif !equalAny(f1, f2, sprop.Prop[i]) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif em1 := v1.FieldByName(\"XXX_InternalExtensions\"); em1.IsValid() {\n\t\tem2 := v2.FieldByName(\"XXX_InternalExtensions\")\n\t\tif !equalExtensions(v1.Type(), em1.Interface().(XXX_InternalExtensions), em2.Interface().(XXX_InternalExtensions)) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif em1 := v1.FieldByName(\"XXX_extensions\"); em1.IsValid() {\n\t\tem2 := v2.FieldByName(\"XXX_extensions\")\n\t\tif !equalExtMap(v1.Type(), em1.Interface().(map[int32]Extension), em2.Interface().(map[int32]Extension)) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tuf := v1.FieldByName(\"XXX_unrecognized\")\n\tif !uf.IsValid() {\n\t\treturn true\n\t}\n\n\tu1 := uf.Bytes()\n\tu2 := v2.FieldByName(\"XXX_unrecognized\").Bytes()\n\treturn bytes.Equal(u1, u2)\n}\n\n// v1 and v2 are known to have the same type.\n// prop may be nil.\nfunc equalAny(v1, v2 reflect.Value, prop *Properties) bool {\n\tif v1.Type() == protoMessageType {\n\t\tm1, _ := v1.Interface().(Message)\n\t\tm2, _ := v2.Interface().(Message)\n\t\treturn Equal(m1, m2)\n\t}\n\tswitch v1.Kind() {\n\tcase reflect.Bool:\n\t\treturn v1.Bool() == v2.Bool()\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v1.Float() == v2.Float()\n\tcase reflect.Int32, reflect.Int64:\n\t\treturn v1.Int() == v2.Int()\n\tcase reflect.Interface:\n\t\t// Probably a oneof field; compare the inner values.\n\t\tn1, n2 := v1.IsNil(), v2.IsNil()\n\t\tif n1 || n2 {\n\t\t\treturn n1 == n2\n\t\t}\n\t\te1, e2 := v1.Elem(), v2.Elem()\n\t\tif e1.Type() != e2.Type() {\n\t\t\treturn false\n\t\t}\n\t\treturn equalAny(e1, e2, nil)\n\tcase reflect.Map:\n\t\tif v1.Len() != v2.Len() {\n\t\t\treturn false\n\t\t}\n\t\tfor _, key := range v1.MapKeys() {\n\t\t\tval2 := v2.MapIndex(key)\n\t\t\tif !val2.IsValid() {\n\t\t\t\t// This key was not found in the second map.\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !equalAny(v1.MapIndex(key), val2, nil) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\tcase reflect.Ptr:\n\t\t// Maps may have nil values in them, so check for nil.\n\t\tif v1.IsNil() && v2.IsNil() {\n\t\t\treturn true\n\t\t}\n\t\tif v1.IsNil() != v2.IsNil() {\n\t\t\treturn false\n\t\t}\n\t\treturn equalAny(v1.Elem(), v2.Elem(), prop)\n\tcase reflect.Slice:\n\t\tif v1.Type().Elem().Kind() == reflect.Uint8 {\n\t\t\t// short circuit: []byte\n\n\t\t\t// Edge case: if this is in a proto3 message, a zero length\n\t\t\t// bytes field is considered the zero value.\n\t\t\tif prop != nil && prop.proto3 && v1.Len() == 0 && v2.Len() == 0 {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif v1.IsNil() != v2.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn bytes.Equal(v1.Interface().([]byte), v2.Interface().([]byte))\n\t\t}\n\n\t\tif v1.Len() != v2.Len() {\n\t\t\treturn false\n\t\t}\n\t\tfor i := 0; i < v1.Len(); i++ {\n\t\t\tif !equalAny(v1.Index(i), v2.Index(i), prop) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\tcase reflect.String:\n\t\treturn v1.Interface().(string) == v2.Interface().(string)\n\tcase reflect.Struct:\n\t\treturn equalStruct(v1, v2)\n\tcase reflect.Uint32, reflect.Uint64:\n\t\treturn v1.Uint() == v2.Uint()\n\t}\n\n\t// unknown type, so not a protocol buffer\n\tlog.Printf(\"proto: don't know how to compare %v\", v1)\n\treturn false\n}\n\n// base is the struct type that the extensions are based on.\n// x1 and x2 are InternalExtensions.\nfunc equalExtensions(base reflect.Type, x1, x2 XXX_InternalExtensions) bool {\n\tem1, _ := x1.extensionsRead()\n\tem2, _ := x2.extensionsRead()\n\treturn equalExtMap(base, em1, em2)\n}\n\nfunc equalExtMap(base reflect.Type, em1, em2 map[int32]Extension) bool {\n\tif len(em1) != len(em2) {\n\t\treturn false\n\t}\n\n\tfor extNum, e1 := range em1 {\n\t\te2, ok := em2[extNum]\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\n\t\tm1, m2 := e1.value, e2.value\n\n\t\tif m1 == nil && m2 == nil {\n\t\t\t// Both have only encoded form.\n\t\t\tif bytes.Equal(e1.enc, e2.enc) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// The bytes are different, but the extensions might still be\n\t\t\t// equal. We need to decode them to compare.\n\t\t}\n\n\t\tif m1 != nil && m2 != nil {\n\t\t\t// Both are unencoded.\n\t\t\tif !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// At least one is encoded. To do a semantically correct comparison\n\t\t// we need to unmarshal them first.\n\t\tvar desc *ExtensionDesc\n\t\tif m := extensionMaps[base]; m != nil {\n\t\t\tdesc = m[extNum]\n\t\t}\n\t\tif desc == nil {\n\t\t\t// If both have only encoded form and the bytes are the same,\n\t\t\t// it is handled above. We get here when the bytes are different.\n\t\t\t// We don't know how to decode it, so just compare them as byte\n\t\t\t// slices.\n\t\t\tlog.Printf(\"proto: don't know how to compare extension %d of %v\", extNum, base)\n\t\t\treturn false\n\t\t}\n\t\tvar err error\n\t\tif m1 == nil {\n\t\t\tm1, err = decodeExtension(e1.enc, desc)\n\t\t}\n\t\tif m2 == nil && err == nil {\n\t\t\tm2, err = decodeExtension(e2.enc, desc)\n\t\t}\n\t\tif err != nil {\n\t\t\t// The encoded form is invalid.\n\t\t\tlog.Printf(\"proto: badly encoded extension %d of %v: %v\", extNum, base, err)\n\t\t\treturn false\n\t\t}\n\t\tif !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/extensions.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2010 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\n/*\n * Types and routines for supporting protocol buffer extensions.\n */\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"sync\"\n)\n\n// ErrMissingExtension is the error returned by GetExtension if the named extension is not in the message.\nvar ErrMissingExtension = errors.New(\"proto: missing extension\")\n\n// ExtensionRange represents a range of message extensions for a protocol buffer.\n// Used in code generated by the protocol compiler.\ntype ExtensionRange struct {\n\tStart, End int32 // both inclusive\n}\n\n// extendableProto is an interface implemented by any protocol buffer generated by the current\n// proto compiler that may be extended.\ntype extendableProto interface {\n\tMessage\n\tExtensionRangeArray() []ExtensionRange\n\textensionsWrite() map[int32]Extension\n\textensionsRead() (map[int32]Extension, sync.Locker)\n}\n\n// extendableProtoV1 is an interface implemented by a protocol buffer generated by the previous\n// version of the proto compiler that may be extended.\ntype extendableProtoV1 interface {\n\tMessage\n\tExtensionRangeArray() []ExtensionRange\n\tExtensionMap() map[int32]Extension\n}\n\n// extensionAdapter is a wrapper around extendableProtoV1 that implements extendableProto.\ntype extensionAdapter struct {\n\textendableProtoV1\n}\n\nfunc (e extensionAdapter) extensionsWrite() map[int32]Extension {\n\treturn e.ExtensionMap()\n}\n\nfunc (e extensionAdapter) extensionsRead() (map[int32]Extension, sync.Locker) {\n\treturn e.ExtensionMap(), notLocker{}\n}\n\n// notLocker is a sync.Locker whose Lock and Unlock methods are nops.\ntype notLocker struct{}\n\nfunc (n notLocker) Lock()   {}\nfunc (n notLocker) Unlock() {}\n\n// extendable returns the extendableProto interface for the given generated proto message.\n// If the proto message has the old extension format, it returns a wrapper that implements\n// the extendableProto interface.\nfunc extendable(p interface{}) (extendableProto, error) {\n\tswitch p := p.(type) {\n\tcase extendableProto:\n\t\tif isNilPtr(p) {\n\t\t\treturn nil, fmt.Errorf(\"proto: nil %T is not extendable\", p)\n\t\t}\n\t\treturn p, nil\n\tcase extendableProtoV1:\n\t\tif isNilPtr(p) {\n\t\t\treturn nil, fmt.Errorf(\"proto: nil %T is not extendable\", p)\n\t\t}\n\t\treturn extensionAdapter{p}, nil\n\tcase extensionsBytes:\n\t\treturn slowExtensionAdapter{p}, nil\n\t}\n\t// Don't allocate a specific error containing %T:\n\t// this is the hot path for Clone and MarshalText.\n\treturn nil, errNotExtendable\n}\n\nvar errNotExtendable = errors.New(\"proto: not an extendable proto.Message\")\n\nfunc isNilPtr(x interface{}) bool {\n\tv := reflect.ValueOf(x)\n\treturn v.Kind() == reflect.Ptr && v.IsNil()\n}\n\n// XXX_InternalExtensions is an internal representation of proto extensions.\n//\n// Each generated message struct type embeds an anonymous XXX_InternalExtensions field,\n// thus gaining the unexported 'extensions' method, which can be called only from the proto package.\n//\n// The methods of XXX_InternalExtensions are not concurrency safe in general,\n// but calls to logically read-only methods such as has and get may be executed concurrently.\ntype XXX_InternalExtensions struct {\n\t// The struct must be indirect so that if a user inadvertently copies a\n\t// generated message and its embedded XXX_InternalExtensions, they\n\t// avoid the mayhem of a copied mutex.\n\t//\n\t// The mutex serializes all logically read-only operations to p.extensionMap.\n\t// It is up to the client to ensure that write operations to p.extensionMap are\n\t// mutually exclusive with other accesses.\n\tp *struct {\n\t\tmu           sync.Mutex\n\t\textensionMap map[int32]Extension\n\t}\n}\n\n// extensionsWrite returns the extension map, creating it on first use.\nfunc (e *XXX_InternalExtensions) extensionsWrite() map[int32]Extension {\n\tif e.p == nil {\n\t\te.p = new(struct {\n\t\t\tmu           sync.Mutex\n\t\t\textensionMap map[int32]Extension\n\t\t})\n\t\te.p.extensionMap = make(map[int32]Extension)\n\t}\n\treturn e.p.extensionMap\n}\n\n// extensionsRead returns the extensions map for read-only use.  It may be nil.\n// The caller must hold the returned mutex's lock when accessing Elements within the map.\nfunc (e *XXX_InternalExtensions) extensionsRead() (map[int32]Extension, sync.Locker) {\n\tif e.p == nil {\n\t\treturn nil, nil\n\t}\n\treturn e.p.extensionMap, &e.p.mu\n}\n\n// ExtensionDesc represents an extension specification.\n// Used in generated code from the protocol compiler.\ntype ExtensionDesc struct {\n\tExtendedType  Message     // nil pointer to the type that is being extended\n\tExtensionType interface{} // nil pointer to the extension type\n\tField         int32       // field number\n\tName          string      // fully-qualified name of extension, for text formatting\n\tTag           string      // protobuf tag style\n\tFilename      string      // name of the file in which the extension is defined\n}\n\nfunc (ed *ExtensionDesc) repeated() bool {\n\tt := reflect.TypeOf(ed.ExtensionType)\n\treturn t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8\n}\n\n// Extension represents an extension in a message.\ntype Extension struct {\n\t// When an extension is stored in a message using SetExtension\n\t// only desc and value are set. When the message is marshaled\n\t// enc will be set to the encoded form of the message.\n\t//\n\t// When a message is unmarshaled and contains extensions, each\n\t// extension will have only enc set. When such an extension is\n\t// accessed using GetExtension (or GetExtensions) desc and value\n\t// will be set.\n\tdesc  *ExtensionDesc\n\tvalue interface{}\n\tenc   []byte\n}\n\n// SetRawExtension is for testing only.\nfunc SetRawExtension(base Message, id int32, b []byte) {\n\tif ebase, ok := base.(extensionsBytes); ok {\n\t\tclearExtension(base, id)\n\t\text := ebase.GetExtensions()\n\t\t*ext = append(*ext, b...)\n\t\treturn\n\t}\n\tepb, err := extendable(base)\n\tif err != nil {\n\t\treturn\n\t}\n\textmap := epb.extensionsWrite()\n\textmap[id] = Extension{enc: b}\n}\n\n// isExtensionField returns true iff the given field number is in an extension range.\nfunc isExtensionField(pb extendableProto, field int32) bool {\n\tfor _, er := range pb.ExtensionRangeArray() {\n\t\tif er.Start <= field && field <= er.End {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// checkExtensionTypes checks that the given extension is valid for pb.\nfunc checkExtensionTypes(pb extendableProto, extension *ExtensionDesc) error {\n\tvar pbi interface{} = pb\n\t// Check the extended type.\n\tif ea, ok := pbi.(extensionAdapter); ok {\n\t\tpbi = ea.extendableProtoV1\n\t}\n\tif ea, ok := pbi.(slowExtensionAdapter); ok {\n\t\tpbi = ea.extensionsBytes\n\t}\n\tif a, b := reflect.TypeOf(pbi), reflect.TypeOf(extension.ExtendedType); a != b {\n\t\treturn fmt.Errorf(\"proto: bad extended type; %v does not extend %v\", b, a)\n\t}\n\t// Check the range.\n\tif !isExtensionField(pb, extension.Field) {\n\t\treturn errors.New(\"proto: bad extension number; not in declared ranges\")\n\t}\n\treturn nil\n}\n\n// extPropKey is sufficient to uniquely identify an extension.\ntype extPropKey struct {\n\tbase  reflect.Type\n\tfield int32\n}\n\nvar extProp = struct {\n\tsync.RWMutex\n\tm map[extPropKey]*Properties\n}{\n\tm: make(map[extPropKey]*Properties),\n}\n\nfunc extensionProperties(ed *ExtensionDesc) *Properties {\n\tkey := extPropKey{base: reflect.TypeOf(ed.ExtendedType), field: ed.Field}\n\n\textProp.RLock()\n\tif prop, ok := extProp.m[key]; ok {\n\t\textProp.RUnlock()\n\t\treturn prop\n\t}\n\textProp.RUnlock()\n\n\textProp.Lock()\n\tdefer extProp.Unlock()\n\t// Check again.\n\tif prop, ok := extProp.m[key]; ok {\n\t\treturn prop\n\t}\n\n\tprop := new(Properties)\n\tprop.Init(reflect.TypeOf(ed.ExtensionType), \"unknown_name\", ed.Tag, nil)\n\textProp.m[key] = prop\n\treturn prop\n}\n\n// HasExtension returns whether the given extension is present in pb.\nfunc HasExtension(pb Message, extension *ExtensionDesc) bool {\n\tif epb, doki := pb.(extensionsBytes); doki {\n\t\text := epb.GetExtensions()\n\t\tbuf := *ext\n\t\to := 0\n\t\tfor o < len(buf) {\n\t\t\ttag, n := DecodeVarint(buf[o:])\n\t\t\tfieldNum := int32(tag >> 3)\n\t\t\tif int32(fieldNum) == extension.Field {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\twireType := int(tag & 0x7)\n\t\t\to += n\n\t\t\tl, err := size(buf[o:], wireType)\n\t\t\tif err != nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\to += l\n\t\t}\n\t\treturn false\n\t}\n\t// TODO: Check types, field numbers, etc.?\n\tepb, err := extendable(pb)\n\tif err != nil {\n\t\treturn false\n\t}\n\textmap, mu := epb.extensionsRead()\n\tif extmap == nil {\n\t\treturn false\n\t}\n\tmu.Lock()\n\t_, ok := extmap[extension.Field]\n\tmu.Unlock()\n\treturn ok\n}\n\n// ClearExtension removes the given extension from pb.\nfunc ClearExtension(pb Message, extension *ExtensionDesc) {\n\tclearExtension(pb, extension.Field)\n}\n\nfunc clearExtension(pb Message, fieldNum int32) {\n\tif epb, ok := pb.(extensionsBytes); ok {\n\t\toffset := 0\n\t\tfor offset != -1 {\n\t\t\toffset = deleteExtension(epb, fieldNum, offset)\n\t\t}\n\t\treturn\n\t}\n\tepb, err := extendable(pb)\n\tif err != nil {\n\t\treturn\n\t}\n\t// TODO: Check types, field numbers, etc.?\n\textmap := epb.extensionsWrite()\n\tdelete(extmap, fieldNum)\n}\n\n// GetExtension retrieves a proto2 extended field from pb.\n//\n// If the descriptor is type complete (i.e., ExtensionDesc.ExtensionType is non-nil),\n// then GetExtension parses the encoded field and returns a Go value of the specified type.\n// If the field is not present, then the default value is returned (if one is specified),\n// otherwise ErrMissingExtension is reported.\n//\n// If the descriptor is not type complete (i.e., ExtensionDesc.ExtensionType is nil),\n// then GetExtension returns the raw encoded bytes of the field extension.\nfunc GetExtension(pb Message, extension *ExtensionDesc) (interface{}, error) {\n\tif epb, doki := pb.(extensionsBytes); doki {\n\t\text := epb.GetExtensions()\n\t\treturn decodeExtensionFromBytes(extension, *ext)\n\t}\n\n\tepb, err := extendable(pb)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif extension.ExtendedType != nil {\n\t\t// can only check type if this is a complete descriptor\n\t\tif cerr := checkExtensionTypes(epb, extension); cerr != nil {\n\t\t\treturn nil, cerr\n\t\t}\n\t}\n\n\temap, mu := epb.extensionsRead()\n\tif emap == nil {\n\t\treturn defaultExtensionValue(extension)\n\t}\n\tmu.Lock()\n\tdefer mu.Unlock()\n\te, ok := emap[extension.Field]\n\tif !ok {\n\t\t// defaultExtensionValue returns the default value or\n\t\t// ErrMissingExtension if there is no default.\n\t\treturn defaultExtensionValue(extension)\n\t}\n\n\tif e.value != nil {\n\t\t// Already decoded. Check the descriptor, though.\n\t\tif e.desc != extension {\n\t\t\t// This shouldn't happen. If it does, it means that\n\t\t\t// GetExtension was called twice with two different\n\t\t\t// descriptors with the same field number.\n\t\t\treturn nil, errors.New(\"proto: descriptor conflict\")\n\t\t}\n\t\treturn e.value, nil\n\t}\n\n\tif extension.ExtensionType == nil {\n\t\t// incomplete descriptor\n\t\treturn e.enc, nil\n\t}\n\n\tv, err := decodeExtension(e.enc, extension)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Remember the decoded version and drop the encoded version.\n\t// That way it is safe to mutate what we return.\n\te.value = v\n\te.desc = extension\n\te.enc = nil\n\temap[extension.Field] = e\n\treturn e.value, nil\n}\n\n// defaultExtensionValue returns the default value for extension.\n// If no default for an extension is defined ErrMissingExtension is returned.\nfunc defaultExtensionValue(extension *ExtensionDesc) (interface{}, error) {\n\tif extension.ExtensionType == nil {\n\t\t// incomplete descriptor, so no default\n\t\treturn nil, ErrMissingExtension\n\t}\n\n\tt := reflect.TypeOf(extension.ExtensionType)\n\tprops := extensionProperties(extension)\n\n\tsf, _, err := fieldDefault(t, props)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif sf == nil || sf.value == nil {\n\t\t// There is no default value.\n\t\treturn nil, ErrMissingExtension\n\t}\n\n\tif t.Kind() != reflect.Ptr {\n\t\t// We do not need to return a Ptr, we can directly return sf.value.\n\t\treturn sf.value, nil\n\t}\n\n\t// We need to return an interface{} that is a pointer to sf.value.\n\tvalue := reflect.New(t).Elem()\n\tvalue.Set(reflect.New(value.Type().Elem()))\n\tif sf.kind == reflect.Int32 {\n\t\t// We may have an int32 or an enum, but the underlying data is int32.\n\t\t// Since we can't set an int32 into a non int32 reflect.value directly\n\t\t// set it as a int32.\n\t\tvalue.Elem().SetInt(int64(sf.value.(int32)))\n\t} else {\n\t\tvalue.Elem().Set(reflect.ValueOf(sf.value))\n\t}\n\treturn value.Interface(), nil\n}\n\n// decodeExtension decodes an extension encoded in b.\nfunc decodeExtension(b []byte, extension *ExtensionDesc) (interface{}, error) {\n\tt := reflect.TypeOf(extension.ExtensionType)\n\tunmarshal := typeUnmarshaler(t, extension.Tag)\n\n\t// t is a pointer to a struct, pointer to basic type or a slice.\n\t// Allocate space to store the pointer/slice.\n\tvalue := reflect.New(t).Elem()\n\n\tvar err error\n\tfor {\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\twire := int(x) & 7\n\n\t\tb, err = unmarshal(b, valToPointer(value.Addr()), wire)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif len(b) == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn value.Interface(), nil\n}\n\n// GetExtensions returns a slice of the extensions present in pb that are also listed in es.\n// The returned slice has the same length as es; missing extensions will appear as nil elements.\nfunc GetExtensions(pb Message, es []*ExtensionDesc) (extensions []interface{}, err error) {\n\tepb, err := extendable(pb)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\textensions = make([]interface{}, len(es))\n\tfor i, e := range es {\n\t\textensions[i], err = GetExtension(epb, e)\n\t\tif err == ErrMissingExtension {\n\t\t\terr = nil\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n\n// ExtensionDescs returns a new slice containing pb's extension descriptors, in undefined order.\n// For non-registered extensions, ExtensionDescs returns an incomplete descriptor containing\n// just the Field field, which defines the extension's field number.\nfunc ExtensionDescs(pb Message) ([]*ExtensionDesc, error) {\n\tepb, err := extendable(pb)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tregisteredExtensions := RegisteredExtensions(pb)\n\n\temap, mu := epb.extensionsRead()\n\tif emap == nil {\n\t\treturn nil, nil\n\t}\n\tmu.Lock()\n\tdefer mu.Unlock()\n\textensions := make([]*ExtensionDesc, 0, len(emap))\n\tfor extid, e := range emap {\n\t\tdesc := e.desc\n\t\tif desc == nil {\n\t\t\tdesc = registeredExtensions[extid]\n\t\t\tif desc == nil {\n\t\t\t\tdesc = &ExtensionDesc{Field: extid}\n\t\t\t}\n\t\t}\n\n\t\textensions = append(extensions, desc)\n\t}\n\treturn extensions, nil\n}\n\n// SetExtension sets the specified extension of pb to the specified value.\nfunc SetExtension(pb Message, extension *ExtensionDesc, value interface{}) error {\n\tif epb, ok := pb.(extensionsBytes); ok {\n\t\tClearExtension(pb, extension)\n\t\tnewb, err := encodeExtension(extension, value)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbb := epb.GetExtensions()\n\t\t*bb = append(*bb, newb...)\n\t\treturn nil\n\t}\n\tepb, err := extendable(pb)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := checkExtensionTypes(epb, extension); err != nil {\n\t\treturn err\n\t}\n\ttyp := reflect.TypeOf(extension.ExtensionType)\n\tif typ != reflect.TypeOf(value) {\n\t\treturn fmt.Errorf(\"proto: bad extension value type. got: %T, want: %T\", value, extension.ExtensionType)\n\t}\n\t// nil extension values need to be caught early, because the\n\t// encoder can't distinguish an ErrNil due to a nil extension\n\t// from an ErrNil due to a missing field. Extensions are\n\t// always optional, so the encoder would just swallow the error\n\t// and drop all the extensions from the encoded message.\n\tif reflect.ValueOf(value).IsNil() {\n\t\treturn fmt.Errorf(\"proto: SetExtension called with nil value of type %T\", value)\n\t}\n\n\textmap := epb.extensionsWrite()\n\textmap[extension.Field] = Extension{desc: extension, value: value}\n\treturn nil\n}\n\n// ClearAllExtensions clears all extensions from pb.\nfunc ClearAllExtensions(pb Message) {\n\tif epb, doki := pb.(extensionsBytes); doki {\n\t\text := epb.GetExtensions()\n\t\t*ext = []byte{}\n\t\treturn\n\t}\n\tepb, err := extendable(pb)\n\tif err != nil {\n\t\treturn\n\t}\n\tm := epb.extensionsWrite()\n\tfor k := range m {\n\t\tdelete(m, k)\n\t}\n}\n\n// A global registry of extensions.\n// The generated code will register the generated descriptors by calling RegisterExtension.\n\nvar extensionMaps = make(map[reflect.Type]map[int32]*ExtensionDesc)\n\n// RegisterExtension is called from the generated code.\nfunc RegisterExtension(desc *ExtensionDesc) {\n\tst := reflect.TypeOf(desc.ExtendedType).Elem()\n\tm := extensionMaps[st]\n\tif m == nil {\n\t\tm = make(map[int32]*ExtensionDesc)\n\t\textensionMaps[st] = m\n\t}\n\tif _, ok := m[desc.Field]; ok {\n\t\tpanic(\"proto: duplicate extension registered: \" + st.String() + \" \" + strconv.Itoa(int(desc.Field)))\n\t}\n\tm[desc.Field] = desc\n}\n\n// RegisteredExtensions returns a map of the registered extensions of a\n// protocol buffer struct, indexed by the extension number.\n// The argument pb should be a nil pointer to the struct type.\nfunc RegisteredExtensions(pb Message) map[int32]*ExtensionDesc {\n\treturn extensionMaps[reflect.TypeOf(pb).Elem()]\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/extensions_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n)\n\ntype extensionsBytes interface {\n\tMessage\n\tExtensionRangeArray() []ExtensionRange\n\tGetExtensions() *[]byte\n}\n\ntype slowExtensionAdapter struct {\n\textensionsBytes\n}\n\nfunc (s slowExtensionAdapter) extensionsWrite() map[int32]Extension {\n\tpanic(\"Please report a bug to github.com/gogo/protobuf if you see this message: Writing extensions is not supported for extensions stored in a byte slice field.\")\n}\n\nfunc (s slowExtensionAdapter) extensionsRead() (map[int32]Extension, sync.Locker) {\n\tb := s.GetExtensions()\n\tm, err := BytesToExtensionsMap(*b)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn m, notLocker{}\n}\n\nfunc GetBoolExtension(pb Message, extension *ExtensionDesc, ifnotset bool) bool {\n\tif reflect.ValueOf(pb).IsNil() {\n\t\treturn ifnotset\n\t}\n\tvalue, err := GetExtension(pb, extension)\n\tif err != nil {\n\t\treturn ifnotset\n\t}\n\tif value == nil {\n\t\treturn ifnotset\n\t}\n\tif value.(*bool) == nil {\n\t\treturn ifnotset\n\t}\n\treturn *(value.(*bool))\n}\n\nfunc (this *Extension) Equal(that *Extension) bool {\n\tif err := this.Encode(); err != nil {\n\t\treturn false\n\t}\n\tif err := that.Encode(); err != nil {\n\t\treturn false\n\t}\n\treturn bytes.Equal(this.enc, that.enc)\n}\n\nfunc (this *Extension) Compare(that *Extension) int {\n\tif err := this.Encode(); err != nil {\n\t\treturn 1\n\t}\n\tif err := that.Encode(); err != nil {\n\t\treturn -1\n\t}\n\treturn bytes.Compare(this.enc, that.enc)\n}\n\nfunc SizeOfInternalExtension(m extendableProto) (n int) {\n\tinfo := getMarshalInfo(reflect.TypeOf(m))\n\treturn info.sizeV1Extensions(m.extensionsWrite())\n}\n\ntype sortableMapElem struct {\n\tfield int32\n\text   Extension\n}\n\nfunc newSortableExtensionsFromMap(m map[int32]Extension) sortableExtensions {\n\ts := make(sortableExtensions, 0, len(m))\n\tfor k, v := range m {\n\t\ts = append(s, &sortableMapElem{field: k, ext: v})\n\t}\n\treturn s\n}\n\ntype sortableExtensions []*sortableMapElem\n\nfunc (this sortableExtensions) Len() int { return len(this) }\n\nfunc (this sortableExtensions) Swap(i, j int) { this[i], this[j] = this[j], this[i] }\n\nfunc (this sortableExtensions) Less(i, j int) bool { return this[i].field < this[j].field }\n\nfunc (this sortableExtensions) String() string {\n\tsort.Sort(this)\n\tss := make([]string, len(this))\n\tfor i := range this {\n\t\tss[i] = fmt.Sprintf(\"%d: %v\", this[i].field, this[i].ext)\n\t}\n\treturn \"map[\" + strings.Join(ss, \",\") + \"]\"\n}\n\nfunc StringFromInternalExtension(m extendableProto) string {\n\treturn StringFromExtensionsMap(m.extensionsWrite())\n}\n\nfunc StringFromExtensionsMap(m map[int32]Extension) string {\n\treturn newSortableExtensionsFromMap(m).String()\n}\n\nfunc StringFromExtensionsBytes(ext []byte) string {\n\tm, err := BytesToExtensionsMap(ext)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn StringFromExtensionsMap(m)\n}\n\nfunc EncodeInternalExtension(m extendableProto, data []byte) (n int, err error) {\n\treturn EncodeExtensionMap(m.extensionsWrite(), data)\n}\n\nfunc EncodeInternalExtensionBackwards(m extendableProto, data []byte) (n int, err error) {\n\treturn EncodeExtensionMapBackwards(m.extensionsWrite(), data)\n}\n\nfunc EncodeExtensionMap(m map[int32]Extension, data []byte) (n int, err error) {\n\to := 0\n\tfor _, e := range m {\n\t\tif err := e.Encode(); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tn := copy(data[o:], e.enc)\n\t\tif n != len(e.enc) {\n\t\t\treturn 0, io.ErrShortBuffer\n\t\t}\n\t\to += n\n\t}\n\treturn o, nil\n}\n\nfunc EncodeExtensionMapBackwards(m map[int32]Extension, data []byte) (n int, err error) {\n\to := 0\n\tend := len(data)\n\tfor _, e := range m {\n\t\tif err := e.Encode(); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tn := copy(data[end-len(e.enc):], e.enc)\n\t\tif n != len(e.enc) {\n\t\t\treturn 0, io.ErrShortBuffer\n\t\t}\n\t\tend -= n\n\t\to += n\n\t}\n\treturn o, nil\n}\n\nfunc GetRawExtension(m map[int32]Extension, id int32) ([]byte, error) {\n\te := m[id]\n\tif err := e.Encode(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn e.enc, nil\n}\n\nfunc size(buf []byte, wire int) (int, error) {\n\tswitch wire {\n\tcase WireVarint:\n\t\t_, n := DecodeVarint(buf)\n\t\treturn n, nil\n\tcase WireFixed64:\n\t\treturn 8, nil\n\tcase WireBytes:\n\t\tv, n := DecodeVarint(buf)\n\t\treturn int(v) + n, nil\n\tcase WireFixed32:\n\t\treturn 4, nil\n\tcase WireStartGroup:\n\t\toffset := 0\n\t\tfor {\n\t\t\tu, n := DecodeVarint(buf[offset:])\n\t\t\tfwire := int(u & 0x7)\n\t\t\toffset += n\n\t\t\tif fwire == WireEndGroup {\n\t\t\t\treturn offset, nil\n\t\t\t}\n\t\t\ts, err := size(buf[offset:], wire)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\toffset += s\n\t\t}\n\t}\n\treturn 0, fmt.Errorf(\"proto: can't get size for unknown wire type %d\", wire)\n}\n\nfunc BytesToExtensionsMap(buf []byte) (map[int32]Extension, error) {\n\tm := make(map[int32]Extension)\n\ti := 0\n\tfor i < len(buf) {\n\t\ttag, n := DecodeVarint(buf[i:])\n\t\tif n <= 0 {\n\t\t\treturn nil, fmt.Errorf(\"unable to decode varint\")\n\t\t}\n\t\tfieldNum := int32(tag >> 3)\n\t\twireType := int(tag & 0x7)\n\t\tl, err := size(buf[i+n:], wireType)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tend := i + int(l) + n\n\t\tm[int32(fieldNum)] = Extension{enc: buf[i:end]}\n\t\ti = end\n\t}\n\treturn m, nil\n}\n\nfunc NewExtension(e []byte) Extension {\n\tee := Extension{enc: make([]byte, len(e))}\n\tcopy(ee.enc, e)\n\treturn ee\n}\n\nfunc AppendExtension(e Message, tag int32, buf []byte) {\n\tif ee, eok := e.(extensionsBytes); eok {\n\t\text := ee.GetExtensions()\n\t\t*ext = append(*ext, buf...)\n\t\treturn\n\t}\n\tif ee, eok := e.(extendableProto); eok {\n\t\tm := ee.extensionsWrite()\n\t\text := m[int32(tag)] // may be missing\n\t\text.enc = append(ext.enc, buf...)\n\t\tm[int32(tag)] = ext\n\t}\n}\n\nfunc encodeExtension(extension *ExtensionDesc, value interface{}) ([]byte, error) {\n\tu := getMarshalInfo(reflect.TypeOf(extension.ExtendedType))\n\tei := u.getExtElemInfo(extension)\n\tv := value\n\tp := toAddrPointer(&v, ei.isptr)\n\tsiz := ei.sizer(p, SizeVarint(ei.wiretag))\n\tbuf := make([]byte, 0, siz)\n\treturn ei.marshaler(buf, p, ei.wiretag, false)\n}\n\nfunc decodeExtensionFromBytes(extension *ExtensionDesc, buf []byte) (interface{}, error) {\n\to := 0\n\tfor o < len(buf) {\n\t\ttag, n := DecodeVarint((buf)[o:])\n\t\tfieldNum := int32(tag >> 3)\n\t\twireType := int(tag & 0x7)\n\t\tif o+n > len(buf) {\n\t\t\treturn nil, fmt.Errorf(\"unable to decode extension\")\n\t\t}\n\t\tl, err := size((buf)[o+n:], wireType)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif int32(fieldNum) == extension.Field {\n\t\t\tif o+n+l > len(buf) {\n\t\t\t\treturn nil, fmt.Errorf(\"unable to decode extension\")\n\t\t\t}\n\t\t\tv, err := decodeExtension((buf)[o:o+n+l], extension)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn v, nil\n\t\t}\n\t\to += n + l\n\t}\n\treturn defaultExtensionValue(extension)\n}\n\nfunc (this *Extension) Encode() error {\n\tif this.enc == nil {\n\t\tvar err error\n\t\tthis.enc, err = encodeExtension(this.desc, this.value)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (this Extension) GoString() string {\n\tif err := this.Encode(); err != nil {\n\t\treturn fmt.Sprintf(\"error encoding extension: %v\", err)\n\t}\n\treturn fmt.Sprintf(\"proto.NewExtension(%#v)\", this.enc)\n}\n\nfunc SetUnsafeExtension(pb Message, fieldNum int32, value interface{}) error {\n\ttyp := reflect.TypeOf(pb).Elem()\n\text, ok := extensionMaps[typ]\n\tif !ok {\n\t\treturn fmt.Errorf(\"proto: bad extended type; %s is not extendable\", typ.String())\n\t}\n\tdesc, ok := ext[fieldNum]\n\tif !ok {\n\t\treturn errors.New(\"proto: bad extension number; not in declared ranges\")\n\t}\n\treturn SetExtension(pb, desc, value)\n}\n\nfunc GetUnsafeExtension(pb Message, fieldNum int32) (interface{}, error) {\n\ttyp := reflect.TypeOf(pb).Elem()\n\text, ok := extensionMaps[typ]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"proto: bad extended type; %s is not extendable\", typ.String())\n\t}\n\tdesc, ok := ext[fieldNum]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"unregistered field number %d\", fieldNum)\n\t}\n\treturn GetExtension(pb, desc)\n}\n\nfunc NewUnsafeXXX_InternalExtensions(m map[int32]Extension) XXX_InternalExtensions {\n\tx := &XXX_InternalExtensions{\n\t\tp: new(struct {\n\t\t\tmu           sync.Mutex\n\t\t\textensionMap map[int32]Extension\n\t\t}),\n\t}\n\tx.p.extensionMap = m\n\treturn *x\n}\n\nfunc GetUnsafeExtensionsMap(extendable Message) map[int32]Extension {\n\tpb := extendable.(extendableProto)\n\treturn pb.extensionsWrite()\n}\n\nfunc deleteExtension(pb extensionsBytes, theFieldNum int32, offset int) int {\n\text := pb.GetExtensions()\n\tfor offset < len(*ext) {\n\t\ttag, n1 := DecodeVarint((*ext)[offset:])\n\t\tfieldNum := int32(tag >> 3)\n\t\twireType := int(tag & 0x7)\n\t\tn2, err := size((*ext)[offset+n1:], wireType)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tnewOffset := offset + n1 + n2\n\t\tif fieldNum == theFieldNum {\n\t\t\t*ext = append((*ext)[:offset], (*ext)[newOffset:]...)\n\t\t\treturn offset\n\t\t}\n\t\toffset = newOffset\n\t}\n\treturn -1\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/lib.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2010 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n/*\nPackage proto converts data structures to and from the wire format of\nprotocol buffers.  It works in concert with the Go source code generated\nfor .proto files by the protocol compiler.\n\nA summary of the properties of the protocol buffer interface\nfor a protocol buffer variable v:\n\n  - Names are turned from camel_case to CamelCase for export.\n  - There are no methods on v to set fields; just treat\n\tthem as structure fields.\n  - There are getters that return a field's value if set,\n\tand return the field's default value if unset.\n\tThe getters work even if the receiver is a nil message.\n  - The zero value for a struct is its correct initialization state.\n\tAll desired fields must be set before marshaling.\n  - A Reset() method will restore a protobuf struct to its zero state.\n  - Non-repeated fields are pointers to the values; nil means unset.\n\tThat is, optional or required field int32 f becomes F *int32.\n  - Repeated fields are slices.\n  - Helper functions are available to aid the setting of fields.\n\tmsg.Foo = proto.String(\"hello\") // set field\n  - Constants are defined to hold the default values of all fields that\n\thave them.  They have the form Default_StructName_FieldName.\n\tBecause the getter methods handle defaulted values,\n\tdirect use of these constants should be rare.\n  - Enums are given type names and maps from names to values.\n\tEnum values are prefixed by the enclosing message's name, or by the\n\tenum's type name if it is a top-level enum. Enum types have a String\n\tmethod, and a Enum method to assist in message construction.\n  - Nested messages, groups and enums have type names prefixed with the name of\n\tthe surrounding message type.\n  - Extensions are given descriptor names that start with E_,\n\tfollowed by an underscore-delimited list of the nested messages\n\tthat contain it (if any) followed by the CamelCased name of the\n\textension field itself.  HasExtension, ClearExtension, GetExtension\n\tand SetExtension are functions for manipulating extensions.\n  - Oneof field sets are given a single field in their message,\n\twith distinguished wrapper types for each possible field value.\n  - Marshal and Unmarshal are functions to encode and decode the wire format.\n\nWhen the .proto file specifies `syntax=\"proto3\"`, there are some differences:\n\n  - Non-repeated fields of non-message type are values instead of pointers.\n  - Enum types do not get an Enum method.\n\nThe simplest way to describe this is to see an example.\nGiven file test.proto, containing\n\n\tpackage example;\n\n\tenum FOO { X = 17; }\n\n\tmessage Test {\n\t  required string label = 1;\n\t  optional int32 type = 2 [default=77];\n\t  repeated int64 reps = 3;\n\t  optional group OptionalGroup = 4 {\n\t    required string RequiredField = 5;\n\t  }\n\t  oneof union {\n\t    int32 number = 6;\n\t    string name = 7;\n\t  }\n\t}\n\nThe resulting file, test.pb.go, is:\n\n\tpackage example\n\n\timport proto \"github.com/gogo/protobuf/proto\"\n\timport math \"math\"\n\n\ttype FOO int32\n\tconst (\n\t\tFOO_X FOO = 17\n\t)\n\tvar FOO_name = map[int32]string{\n\t\t17: \"X\",\n\t}\n\tvar FOO_value = map[string]int32{\n\t\t\"X\": 17,\n\t}\n\n\tfunc (x FOO) Enum() *FOO {\n\t\tp := new(FOO)\n\t\t*p = x\n\t\treturn p\n\t}\n\tfunc (x FOO) String() string {\n\t\treturn proto.EnumName(FOO_name, int32(x))\n\t}\n\tfunc (x *FOO) UnmarshalJSON(data []byte) error {\n\t\tvalue, err := proto.UnmarshalJSONEnum(FOO_value, data)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t*x = FOO(value)\n\t\treturn nil\n\t}\n\n\ttype Test struct {\n\t\tLabel         *string             `protobuf:\"bytes,1,req,name=label\" json:\"label,omitempty\"`\n\t\tType          *int32              `protobuf:\"varint,2,opt,name=type,def=77\" json:\"type,omitempty\"`\n\t\tReps          []int64             `protobuf:\"varint,3,rep,name=reps\" json:\"reps,omitempty\"`\n\t\tOptionalgroup *Test_OptionalGroup `protobuf:\"group,4,opt,name=OptionalGroup\" json:\"optionalgroup,omitempty\"`\n\t\t// Types that are valid to be assigned to Union:\n\t\t//\t*Test_Number\n\t\t//\t*Test_Name\n\t\tUnion            isTest_Union `protobuf_oneof:\"union\"`\n\t\tXXX_unrecognized []byte       `json:\"-\"`\n\t}\n\tfunc (m *Test) Reset()         { *m = Test{} }\n\tfunc (m *Test) String() string { return proto.CompactTextString(m) }\n\tfunc (*Test) ProtoMessage() {}\n\n\ttype isTest_Union interface {\n\t\tisTest_Union()\n\t}\n\n\ttype Test_Number struct {\n\t\tNumber int32 `protobuf:\"varint,6,opt,name=number\"`\n\t}\n\ttype Test_Name struct {\n\t\tName string `protobuf:\"bytes,7,opt,name=name\"`\n\t}\n\n\tfunc (*Test_Number) isTest_Union() {}\n\tfunc (*Test_Name) isTest_Union()   {}\n\n\tfunc (m *Test) GetUnion() isTest_Union {\n\t\tif m != nil {\n\t\t\treturn m.Union\n\t\t}\n\t\treturn nil\n\t}\n\tconst Default_Test_Type int32 = 77\n\n\tfunc (m *Test) GetLabel() string {\n\t\tif m != nil && m.Label != nil {\n\t\t\treturn *m.Label\n\t\t}\n\t\treturn \"\"\n\t}\n\n\tfunc (m *Test) GetType() int32 {\n\t\tif m != nil && m.Type != nil {\n\t\t\treturn *m.Type\n\t\t}\n\t\treturn Default_Test_Type\n\t}\n\n\tfunc (m *Test) GetOptionalgroup() *Test_OptionalGroup {\n\t\tif m != nil {\n\t\t\treturn m.Optionalgroup\n\t\t}\n\t\treturn nil\n\t}\n\n\ttype Test_OptionalGroup struct {\n\t\tRequiredField *string `protobuf:\"bytes,5,req\" json:\"RequiredField,omitempty\"`\n\t}\n\tfunc (m *Test_OptionalGroup) Reset()         { *m = Test_OptionalGroup{} }\n\tfunc (m *Test_OptionalGroup) String() string { return proto.CompactTextString(m) }\n\n\tfunc (m *Test_OptionalGroup) GetRequiredField() string {\n\t\tif m != nil && m.RequiredField != nil {\n\t\t\treturn *m.RequiredField\n\t\t}\n\t\treturn \"\"\n\t}\n\n\tfunc (m *Test) GetNumber() int32 {\n\t\tif x, ok := m.GetUnion().(*Test_Number); ok {\n\t\t\treturn x.Number\n\t\t}\n\t\treturn 0\n\t}\n\n\tfunc (m *Test) GetName() string {\n\t\tif x, ok := m.GetUnion().(*Test_Name); ok {\n\t\t\treturn x.Name\n\t\t}\n\t\treturn \"\"\n\t}\n\n\tfunc init() {\n\t\tproto.RegisterEnum(\"example.FOO\", FOO_name, FOO_value)\n\t}\n\nTo create and play with a Test object:\n\n\tpackage main\n\n\timport (\n\t\t\"log\"\n\n\t\t\"github.com/gogo/protobuf/proto\"\n\t\tpb \"./example.pb\"\n\t)\n\n\tfunc main() {\n\t\ttest := &pb.Test{\n\t\t\tLabel: proto.String(\"hello\"),\n\t\t\tType:  proto.Int32(17),\n\t\t\tReps:  []int64{1, 2, 3},\n\t\t\tOptionalgroup: &pb.Test_OptionalGroup{\n\t\t\t\tRequiredField: proto.String(\"good bye\"),\n\t\t\t},\n\t\t\tUnion: &pb.Test_Name{\"fred\"},\n\t\t}\n\t\tdata, err := proto.Marshal(test)\n\t\tif err != nil {\n\t\t\tlog.Fatal(\"marshaling error: \", err)\n\t\t}\n\t\tnewTest := &pb.Test{}\n\t\terr = proto.Unmarshal(data, newTest)\n\t\tif err != nil {\n\t\t\tlog.Fatal(\"unmarshaling error: \", err)\n\t\t}\n\t\t// Now test and newTest contain the same data.\n\t\tif test.GetLabel() != newTest.GetLabel() {\n\t\t\tlog.Fatalf(\"data mismatch %q != %q\", test.GetLabel(), newTest.GetLabel())\n\t\t}\n\t\t// Use a type switch to determine which oneof was set.\n\t\tswitch u := test.Union.(type) {\n\t\tcase *pb.Test_Number: // u.Number contains the number.\n\t\tcase *pb.Test_Name: // u.Name contains the string.\n\t\t}\n\t\t// etc.\n\t}\n*/\npackage proto\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"log\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"sync\"\n)\n\n// RequiredNotSetError is an error type returned by either Marshal or Unmarshal.\n// Marshal reports this when a required field is not initialized.\n// Unmarshal reports this when a required field is missing from the wire data.\ntype RequiredNotSetError struct{ field string }\n\nfunc (e *RequiredNotSetError) Error() string {\n\tif e.field == \"\" {\n\t\treturn fmt.Sprintf(\"proto: required field not set\")\n\t}\n\treturn fmt.Sprintf(\"proto: required field %q not set\", e.field)\n}\nfunc (e *RequiredNotSetError) RequiredNotSet() bool {\n\treturn true\n}\n\ntype invalidUTF8Error struct{ field string }\n\nfunc (e *invalidUTF8Error) Error() string {\n\tif e.field == \"\" {\n\t\treturn \"proto: invalid UTF-8 detected\"\n\t}\n\treturn fmt.Sprintf(\"proto: field %q contains invalid UTF-8\", e.field)\n}\nfunc (e *invalidUTF8Error) InvalidUTF8() bool {\n\treturn true\n}\n\n// errInvalidUTF8 is a sentinel error to identify fields with invalid UTF-8.\n// This error should not be exposed to the external API as such errors should\n// be recreated with the field information.\nvar errInvalidUTF8 = &invalidUTF8Error{}\n\n// isNonFatal reports whether the error is either a RequiredNotSet error\n// or a InvalidUTF8 error.\nfunc isNonFatal(err error) bool {\n\tif re, ok := err.(interface{ RequiredNotSet() bool }); ok && re.RequiredNotSet() {\n\t\treturn true\n\t}\n\tif re, ok := err.(interface{ InvalidUTF8() bool }); ok && re.InvalidUTF8() {\n\t\treturn true\n\t}\n\treturn false\n}\n\ntype nonFatal struct{ E error }\n\n// Merge merges err into nf and reports whether it was successful.\n// Otherwise it returns false for any fatal non-nil errors.\nfunc (nf *nonFatal) Merge(err error) (ok bool) {\n\tif err == nil {\n\t\treturn true // not an error\n\t}\n\tif !isNonFatal(err) {\n\t\treturn false // fatal error\n\t}\n\tif nf.E == nil {\n\t\tnf.E = err // store first instance of non-fatal error\n\t}\n\treturn true\n}\n\n// Message is implemented by generated protocol buffer messages.\ntype Message interface {\n\tReset()\n\tString() string\n\tProtoMessage()\n}\n\n// A Buffer is a buffer manager for marshaling and unmarshaling\n// protocol buffers.  It may be reused between invocations to\n// reduce memory usage.  It is not necessary to use a Buffer;\n// the global functions Marshal and Unmarshal create a\n// temporary Buffer and are fine for most applications.\ntype Buffer struct {\n\tbuf   []byte // encode/decode byte stream\n\tindex int    // read point\n\n\tdeterministic bool\n}\n\n// NewBuffer allocates a new Buffer and initializes its internal data to\n// the contents of the argument slice.\nfunc NewBuffer(e []byte) *Buffer {\n\treturn &Buffer{buf: e}\n}\n\n// Reset resets the Buffer, ready for marshaling a new protocol buffer.\nfunc (p *Buffer) Reset() {\n\tp.buf = p.buf[0:0] // for reading/writing\n\tp.index = 0        // for reading\n}\n\n// SetBuf replaces the internal buffer with the slice,\n// ready for unmarshaling the contents of the slice.\nfunc (p *Buffer) SetBuf(s []byte) {\n\tp.buf = s\n\tp.index = 0\n}\n\n// Bytes returns the contents of the Buffer.\nfunc (p *Buffer) Bytes() []byte { return p.buf }\n\n// SetDeterministic sets whether to use deterministic serialization.\n//\n// Deterministic serialization guarantees that for a given binary, equal\n// messages will always be serialized to the same bytes. This implies:\n//\n//   - Repeated serialization of a message will return the same bytes.\n//   - Different processes of the same binary (which may be executing on\n//     different machines) will serialize equal messages to the same bytes.\n//\n// Note that the deterministic serialization is NOT canonical across\n// languages. It is not guaranteed to remain stable over time. It is unstable\n// across different builds with schema changes due to unknown fields.\n// Users who need canonical serialization (e.g., persistent storage in a\n// canonical form, fingerprinting, etc.) should define their own\n// canonicalization specification and implement their own serializer rather\n// than relying on this API.\n//\n// If deterministic serialization is requested, map entries will be sorted\n// by keys in lexographical order. This is an implementation detail and\n// subject to change.\nfunc (p *Buffer) SetDeterministic(deterministic bool) {\n\tp.deterministic = deterministic\n}\n\n/*\n * Helper routines for simplifying the creation of optional fields of basic type.\n */\n\n// Bool is a helper routine that allocates a new bool value\n// to store v and returns a pointer to it.\nfunc Bool(v bool) *bool {\n\treturn &v\n}\n\n// Int32 is a helper routine that allocates a new int32 value\n// to store v and returns a pointer to it.\nfunc Int32(v int32) *int32 {\n\treturn &v\n}\n\n// Int is a helper routine that allocates a new int32 value\n// to store v and returns a pointer to it, but unlike Int32\n// its argument value is an int.\nfunc Int(v int) *int32 {\n\tp := new(int32)\n\t*p = int32(v)\n\treturn p\n}\n\n// Int64 is a helper routine that allocates a new int64 value\n// to store v and returns a pointer to it.\nfunc Int64(v int64) *int64 {\n\treturn &v\n}\n\n// Float32 is a helper routine that allocates a new float32 value\n// to store v and returns a pointer to it.\nfunc Float32(v float32) *float32 {\n\treturn &v\n}\n\n// Float64 is a helper routine that allocates a new float64 value\n// to store v and returns a pointer to it.\nfunc Float64(v float64) *float64 {\n\treturn &v\n}\n\n// Uint32 is a helper routine that allocates a new uint32 value\n// to store v and returns a pointer to it.\nfunc Uint32(v uint32) *uint32 {\n\treturn &v\n}\n\n// Uint64 is a helper routine that allocates a new uint64 value\n// to store v and returns a pointer to it.\nfunc Uint64(v uint64) *uint64 {\n\treturn &v\n}\n\n// String is a helper routine that allocates a new string value\n// to store v and returns a pointer to it.\nfunc String(v string) *string {\n\treturn &v\n}\n\n// EnumName is a helper function to simplify printing protocol buffer enums\n// by name.  Given an enum map and a value, it returns a useful string.\nfunc EnumName(m map[int32]string, v int32) string {\n\ts, ok := m[v]\n\tif ok {\n\t\treturn s\n\t}\n\treturn strconv.Itoa(int(v))\n}\n\n// UnmarshalJSONEnum is a helper function to simplify recovering enum int values\n// from their JSON-encoded representation. Given a map from the enum's symbolic\n// names to its int values, and a byte buffer containing the JSON-encoded\n// value, it returns an int32 that can be cast to the enum type by the caller.\n//\n// The function can deal with both JSON representations, numeric and symbolic.\nfunc UnmarshalJSONEnum(m map[string]int32, data []byte, enumName string) (int32, error) {\n\tif data[0] == '\"' {\n\t\t// New style: enums are strings.\n\t\tvar repr string\n\t\tif err := json.Unmarshal(data, &repr); err != nil {\n\t\t\treturn -1, err\n\t\t}\n\t\tval, ok := m[repr]\n\t\tif !ok {\n\t\t\treturn 0, fmt.Errorf(\"unrecognized enum %s value %q\", enumName, repr)\n\t\t}\n\t\treturn val, nil\n\t}\n\t// Old style: enums are ints.\n\tvar val int32\n\tif err := json.Unmarshal(data, &val); err != nil {\n\t\treturn 0, fmt.Errorf(\"cannot unmarshal %#q into enum %s\", data, enumName)\n\t}\n\treturn val, nil\n}\n\n// DebugPrint dumps the encoded data in b in a debugging format with a header\n// including the string s. Used in testing but made available for general debugging.\nfunc (p *Buffer) DebugPrint(s string, b []byte) {\n\tvar u uint64\n\n\tobuf := p.buf\n\tsindex := p.index\n\tp.buf = b\n\tp.index = 0\n\tdepth := 0\n\n\tfmt.Printf(\"\\n--- %s ---\\n\", s)\n\nout:\n\tfor {\n\t\tfor i := 0; i < depth; i++ {\n\t\t\tfmt.Print(\"  \")\n\t\t}\n\n\t\tindex := p.index\n\t\tif index == len(p.buf) {\n\t\t\tbreak\n\t\t}\n\n\t\top, err := p.DecodeVarint()\n\t\tif err != nil {\n\t\t\tfmt.Printf(\"%3d: fetching op err %v\\n\", index, err)\n\t\t\tbreak out\n\t\t}\n\t\ttag := op >> 3\n\t\twire := op & 7\n\n\t\tswitch wire {\n\t\tdefault:\n\t\t\tfmt.Printf(\"%3d: t=%3d unknown wire=%d\\n\",\n\t\t\t\tindex, tag, wire)\n\t\t\tbreak out\n\n\t\tcase WireBytes:\n\t\t\tvar r []byte\n\n\t\t\tr, err = p.DecodeRawBytes(false)\n\t\t\tif err != nil {\n\t\t\t\tbreak out\n\t\t\t}\n\t\t\tfmt.Printf(\"%3d: t=%3d bytes [%d]\", index, tag, len(r))\n\t\t\tif len(r) <= 6 {\n\t\t\t\tfor i := 0; i < len(r); i++ {\n\t\t\t\t\tfmt.Printf(\" %.2x\", r[i])\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor i := 0; i < 3; i++ {\n\t\t\t\t\tfmt.Printf(\" %.2x\", r[i])\n\t\t\t\t}\n\t\t\t\tfmt.Printf(\" ..\")\n\t\t\t\tfor i := len(r) - 3; i < len(r); i++ {\n\t\t\t\t\tfmt.Printf(\" %.2x\", r[i])\n\t\t\t\t}\n\t\t\t}\n\t\t\tfmt.Printf(\"\\n\")\n\n\t\tcase WireFixed32:\n\t\t\tu, err = p.DecodeFixed32()\n\t\t\tif err != nil {\n\t\t\t\tfmt.Printf(\"%3d: t=%3d fix32 err %v\\n\", index, tag, err)\n\t\t\t\tbreak out\n\t\t\t}\n\t\t\tfmt.Printf(\"%3d: t=%3d fix32 %d\\n\", index, tag, u)\n\n\t\tcase WireFixed64:\n\t\t\tu, err = p.DecodeFixed64()\n\t\t\tif err != nil {\n\t\t\t\tfmt.Printf(\"%3d: t=%3d fix64 err %v\\n\", index, tag, err)\n\t\t\t\tbreak out\n\t\t\t}\n\t\t\tfmt.Printf(\"%3d: t=%3d fix64 %d\\n\", index, tag, u)\n\n\t\tcase WireVarint:\n\t\t\tu, err = p.DecodeVarint()\n\t\t\tif err != nil {\n\t\t\t\tfmt.Printf(\"%3d: t=%3d varint err %v\\n\", index, tag, err)\n\t\t\t\tbreak out\n\t\t\t}\n\t\t\tfmt.Printf(\"%3d: t=%3d varint %d\\n\", index, tag, u)\n\n\t\tcase WireStartGroup:\n\t\t\tfmt.Printf(\"%3d: t=%3d start\\n\", index, tag)\n\t\t\tdepth++\n\n\t\tcase WireEndGroup:\n\t\t\tdepth--\n\t\t\tfmt.Printf(\"%3d: t=%3d end\\n\", index, tag)\n\t\t}\n\t}\n\n\tif depth != 0 {\n\t\tfmt.Printf(\"%3d: start-end not balanced %d\\n\", p.index, depth)\n\t}\n\tfmt.Printf(\"\\n\")\n\n\tp.buf = obuf\n\tp.index = sindex\n}\n\n// SetDefaults sets unset protocol buffer fields to their default values.\n// It only modifies fields that are both unset and have defined defaults.\n// It recursively sets default values in any non-nil sub-messages.\nfunc SetDefaults(pb Message) {\n\tsetDefaults(reflect.ValueOf(pb), true, false)\n}\n\n// v is a struct.\nfunc setDefaults(v reflect.Value, recur, zeros bool) {\n\tif v.Kind() == reflect.Ptr {\n\t\tv = v.Elem()\n\t}\n\n\tdefaultMu.RLock()\n\tdm, ok := defaults[v.Type()]\n\tdefaultMu.RUnlock()\n\tif !ok {\n\t\tdm = buildDefaultMessage(v.Type())\n\t\tdefaultMu.Lock()\n\t\tdefaults[v.Type()] = dm\n\t\tdefaultMu.Unlock()\n\t}\n\n\tfor _, sf := range dm.scalars {\n\t\tf := v.Field(sf.index)\n\t\tif !f.IsNil() {\n\t\t\t// field already set\n\t\t\tcontinue\n\t\t}\n\t\tdv := sf.value\n\t\tif dv == nil && !zeros {\n\t\t\t// no explicit default, and don't want to set zeros\n\t\t\tcontinue\n\t\t}\n\t\tfptr := f.Addr().Interface() // **T\n\t\t// TODO: Consider batching the allocations we do here.\n\t\tswitch sf.kind {\n\t\tcase reflect.Bool:\n\t\t\tb := new(bool)\n\t\t\tif dv != nil {\n\t\t\t\t*b = dv.(bool)\n\t\t\t}\n\t\t\t*(fptr.(**bool)) = b\n\t\tcase reflect.Float32:\n\t\t\tf := new(float32)\n\t\t\tif dv != nil {\n\t\t\t\t*f = dv.(float32)\n\t\t\t}\n\t\t\t*(fptr.(**float32)) = f\n\t\tcase reflect.Float64:\n\t\t\tf := new(float64)\n\t\t\tif dv != nil {\n\t\t\t\t*f = dv.(float64)\n\t\t\t}\n\t\t\t*(fptr.(**float64)) = f\n\t\tcase reflect.Int32:\n\t\t\t// might be an enum\n\t\t\tif ft := f.Type(); ft != int32PtrType {\n\t\t\t\t// enum\n\t\t\t\tf.Set(reflect.New(ft.Elem()))\n\t\t\t\tif dv != nil {\n\t\t\t\t\tf.Elem().SetInt(int64(dv.(int32)))\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// int32 field\n\t\t\t\ti := new(int32)\n\t\t\t\tif dv != nil {\n\t\t\t\t\t*i = dv.(int32)\n\t\t\t\t}\n\t\t\t\t*(fptr.(**int32)) = i\n\t\t\t}\n\t\tcase reflect.Int64:\n\t\t\ti := new(int64)\n\t\t\tif dv != nil {\n\t\t\t\t*i = dv.(int64)\n\t\t\t}\n\t\t\t*(fptr.(**int64)) = i\n\t\tcase reflect.String:\n\t\t\ts := new(string)\n\t\t\tif dv != nil {\n\t\t\t\t*s = dv.(string)\n\t\t\t}\n\t\t\t*(fptr.(**string)) = s\n\t\tcase reflect.Uint8:\n\t\t\t// exceptional case: []byte\n\t\t\tvar b []byte\n\t\t\tif dv != nil {\n\t\t\t\tdb := dv.([]byte)\n\t\t\t\tb = make([]byte, len(db))\n\t\t\t\tcopy(b, db)\n\t\t\t} else {\n\t\t\t\tb = []byte{}\n\t\t\t}\n\t\t\t*(fptr.(*[]byte)) = b\n\t\tcase reflect.Uint32:\n\t\t\tu := new(uint32)\n\t\t\tif dv != nil {\n\t\t\t\t*u = dv.(uint32)\n\t\t\t}\n\t\t\t*(fptr.(**uint32)) = u\n\t\tcase reflect.Uint64:\n\t\t\tu := new(uint64)\n\t\t\tif dv != nil {\n\t\t\t\t*u = dv.(uint64)\n\t\t\t}\n\t\t\t*(fptr.(**uint64)) = u\n\t\tdefault:\n\t\t\tlog.Printf(\"proto: can't set default for field %v (sf.kind=%v)\", f, sf.kind)\n\t\t}\n\t}\n\n\tfor _, ni := range dm.nested {\n\t\tf := v.Field(ni)\n\t\t// f is *T or T or []*T or []T\n\t\tswitch f.Kind() {\n\t\tcase reflect.Struct:\n\t\t\tsetDefaults(f, recur, zeros)\n\n\t\tcase reflect.Ptr:\n\t\t\tif f.IsNil() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tsetDefaults(f, recur, zeros)\n\n\t\tcase reflect.Slice:\n\t\t\tfor i := 0; i < f.Len(); i++ {\n\t\t\t\te := f.Index(i)\n\t\t\t\tif e.Kind() == reflect.Ptr && e.IsNil() {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tsetDefaults(e, recur, zeros)\n\t\t\t}\n\n\t\tcase reflect.Map:\n\t\t\tfor _, k := range f.MapKeys() {\n\t\t\t\te := f.MapIndex(k)\n\t\t\t\tif e.IsNil() {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tsetDefaults(e, recur, zeros)\n\t\t\t}\n\t\t}\n\t}\n}\n\nvar (\n\t// defaults maps a protocol buffer struct type to a slice of the fields,\n\t// with its scalar fields set to their proto-declared non-zero default values.\n\tdefaultMu sync.RWMutex\n\tdefaults  = make(map[reflect.Type]defaultMessage)\n\n\tint32PtrType = reflect.TypeOf((*int32)(nil))\n)\n\n// defaultMessage represents information about the default values of a message.\ntype defaultMessage struct {\n\tscalars []scalarField\n\tnested  []int // struct field index of nested messages\n}\n\ntype scalarField struct {\n\tindex int          // struct field index\n\tkind  reflect.Kind // element type (the T in *T or []T)\n\tvalue interface{}  // the proto-declared default value, or nil\n}\n\n// t is a struct type.\nfunc buildDefaultMessage(t reflect.Type) (dm defaultMessage) {\n\tsprop := GetProperties(t)\n\tfor _, prop := range sprop.Prop {\n\t\tfi, ok := sprop.decoderTags.get(prop.Tag)\n\t\tif !ok {\n\t\t\t// XXX_unrecognized\n\t\t\tcontinue\n\t\t}\n\t\tft := t.Field(fi).Type\n\n\t\tsf, nested, err := fieldDefault(ft, prop)\n\t\tswitch {\n\t\tcase err != nil:\n\t\t\tlog.Print(err)\n\t\tcase nested:\n\t\t\tdm.nested = append(dm.nested, fi)\n\t\tcase sf != nil:\n\t\t\tsf.index = fi\n\t\t\tdm.scalars = append(dm.scalars, *sf)\n\t\t}\n\t}\n\n\treturn dm\n}\n\n// fieldDefault returns the scalarField for field type ft.\n// sf will be nil if the field can not have a default.\n// nestedMessage will be true if this is a nested message.\n// Note that sf.index is not set on return.\nfunc fieldDefault(ft reflect.Type, prop *Properties) (sf *scalarField, nestedMessage bool, err error) {\n\tvar canHaveDefault bool\n\tswitch ft.Kind() {\n\tcase reflect.Struct:\n\t\tnestedMessage = true // non-nullable\n\n\tcase reflect.Ptr:\n\t\tif ft.Elem().Kind() == reflect.Struct {\n\t\t\tnestedMessage = true\n\t\t} else {\n\t\t\tcanHaveDefault = true // proto2 scalar field\n\t\t}\n\n\tcase reflect.Slice:\n\t\tswitch ft.Elem().Kind() {\n\t\tcase reflect.Ptr, reflect.Struct:\n\t\t\tnestedMessage = true // repeated message\n\t\tcase reflect.Uint8:\n\t\t\tcanHaveDefault = true // bytes field\n\t\t}\n\n\tcase reflect.Map:\n\t\tif ft.Elem().Kind() == reflect.Ptr {\n\t\t\tnestedMessage = true // map with message values\n\t\t}\n\t}\n\n\tif !canHaveDefault {\n\t\tif nestedMessage {\n\t\t\treturn nil, true, nil\n\t\t}\n\t\treturn nil, false, nil\n\t}\n\n\t// We now know that ft is a pointer or slice.\n\tsf = &scalarField{kind: ft.Elem().Kind()}\n\n\t// scalar fields without defaults\n\tif !prop.HasDefault {\n\t\treturn sf, false, nil\n\t}\n\n\t// a scalar field: either *T or []byte\n\tswitch ft.Elem().Kind() {\n\tcase reflect.Bool:\n\t\tx, err := strconv.ParseBool(prop.Default)\n\t\tif err != nil {\n\t\t\treturn nil, false, fmt.Errorf(\"proto: bad default bool %q: %v\", prop.Default, err)\n\t\t}\n\t\tsf.value = x\n\tcase reflect.Float32:\n\t\tx, err := strconv.ParseFloat(prop.Default, 32)\n\t\tif err != nil {\n\t\t\treturn nil, false, fmt.Errorf(\"proto: bad default float32 %q: %v\", prop.Default, err)\n\t\t}\n\t\tsf.value = float32(x)\n\tcase reflect.Float64:\n\t\tx, err := strconv.ParseFloat(prop.Default, 64)\n\t\tif err != nil {\n\t\t\treturn nil, false, fmt.Errorf(\"proto: bad default float64 %q: %v\", prop.Default, err)\n\t\t}\n\t\tsf.value = x\n\tcase reflect.Int32:\n\t\tx, err := strconv.ParseInt(prop.Default, 10, 32)\n\t\tif err != nil {\n\t\t\treturn nil, false, fmt.Errorf(\"proto: bad default int32 %q: %v\", prop.Default, err)\n\t\t}\n\t\tsf.value = int32(x)\n\tcase reflect.Int64:\n\t\tx, err := strconv.ParseInt(prop.Default, 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, false, fmt.Errorf(\"proto: bad default int64 %q: %v\", prop.Default, err)\n\t\t}\n\t\tsf.value = x\n\tcase reflect.String:\n\t\tsf.value = prop.Default\n\tcase reflect.Uint8:\n\t\t// []byte (not *uint8)\n\t\tsf.value = []byte(prop.Default)\n\tcase reflect.Uint32:\n\t\tx, err := strconv.ParseUint(prop.Default, 10, 32)\n\t\tif err != nil {\n\t\t\treturn nil, false, fmt.Errorf(\"proto: bad default uint32 %q: %v\", prop.Default, err)\n\t\t}\n\t\tsf.value = uint32(x)\n\tcase reflect.Uint64:\n\t\tx, err := strconv.ParseUint(prop.Default, 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, false, fmt.Errorf(\"proto: bad default uint64 %q: %v\", prop.Default, err)\n\t\t}\n\t\tsf.value = x\n\tdefault:\n\t\treturn nil, false, fmt.Errorf(\"proto: unhandled def kind %v\", ft.Elem().Kind())\n\t}\n\n\treturn sf, false, nil\n}\n\n// mapKeys returns a sort.Interface to be used for sorting the map keys.\n// Map fields may have key types of non-float scalars, strings and enums.\nfunc mapKeys(vs []reflect.Value) sort.Interface {\n\ts := mapKeySorter{vs: vs}\n\n\t// Type specialization per https://developers.google.com/protocol-buffers/docs/proto#maps.\n\tif len(vs) == 0 {\n\t\treturn s\n\t}\n\tswitch vs[0].Kind() {\n\tcase reflect.Int32, reflect.Int64:\n\t\ts.less = func(a, b reflect.Value) bool { return a.Int() < b.Int() }\n\tcase reflect.Uint32, reflect.Uint64:\n\t\ts.less = func(a, b reflect.Value) bool { return a.Uint() < b.Uint() }\n\tcase reflect.Bool:\n\t\ts.less = func(a, b reflect.Value) bool { return !a.Bool() && b.Bool() } // false < true\n\tcase reflect.String:\n\t\ts.less = func(a, b reflect.Value) bool { return a.String() < b.String() }\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unsupported map key type: %v\", vs[0].Kind()))\n\t}\n\n\treturn s\n}\n\ntype mapKeySorter struct {\n\tvs   []reflect.Value\n\tless func(a, b reflect.Value) bool\n}\n\nfunc (s mapKeySorter) Len() int      { return len(s.vs) }\nfunc (s mapKeySorter) Swap(i, j int) { s.vs[i], s.vs[j] = s.vs[j], s.vs[i] }\nfunc (s mapKeySorter) Less(i, j int) bool {\n\treturn s.less(s.vs[i], s.vs[j])\n}\n\n// isProto3Zero reports whether v is a zero proto3 value.\nfunc isProto3Zero(v reflect.Value) bool {\n\tswitch v.Kind() {\n\tcase reflect.Bool:\n\t\treturn !v.Bool()\n\tcase reflect.Int32, reflect.Int64:\n\t\treturn v.Int() == 0\n\tcase reflect.Uint32, reflect.Uint64:\n\t\treturn v.Uint() == 0\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float() == 0\n\tcase reflect.String:\n\t\treturn v.String() == \"\"\n\t}\n\treturn false\n}\n\nconst (\n\t// ProtoPackageIsVersion3 is referenced from generated protocol buffer files\n\t// to assert that that code is compatible with this version of the proto package.\n\tGoGoProtoPackageIsVersion3 = true\n\n\t// ProtoPackageIsVersion2 is referenced from generated protocol buffer files\n\t// to assert that that code is compatible with this version of the proto package.\n\tGoGoProtoPackageIsVersion2 = true\n\n\t// ProtoPackageIsVersion1 is referenced from generated protocol buffer files\n\t// to assert that that code is compatible with this version of the proto package.\n\tGoGoProtoPackageIsVersion1 = true\n)\n\n// InternalMessageInfo is a type used internally by generated .pb.go files.\n// This type is not intended to be used by non-generated code.\n// This type is not subject to any compatibility guarantee.\ntype InternalMessageInfo struct {\n\tmarshal   *marshalInfo\n\tunmarshal *unmarshalInfo\n\tmerge     *mergeInfo\n\tdiscard   *discardInfo\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/lib_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"encoding/json\"\n\t\"strconv\"\n)\n\ntype Sizer interface {\n\tSize() int\n}\n\ntype ProtoSizer interface {\n\tProtoSize() int\n}\n\nfunc MarshalJSONEnum(m map[int32]string, value int32) ([]byte, error) {\n\ts, ok := m[value]\n\tif !ok {\n\t\ts = strconv.Itoa(int(value))\n\t}\n\treturn json.Marshal(s)\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/message_set.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2010 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\n/*\n * Support for message sets.\n */\n\nimport (\n\t\"errors\"\n)\n\n// errNoMessageTypeID occurs when a protocol buffer does not have a message type ID.\n// A message type ID is required for storing a protocol buffer in a message set.\nvar errNoMessageTypeID = errors.New(\"proto does not have a message type ID\")\n\n// The first two types (_MessageSet_Item and messageSet)\n// model what the protocol compiler produces for the following protocol message:\n//   message MessageSet {\n//     repeated group Item = 1 {\n//       required int32 type_id = 2;\n//       required string message = 3;\n//     };\n//   }\n// That is the MessageSet wire format. We can't use a proto to generate these\n// because that would introduce a circular dependency between it and this package.\n\ntype _MessageSet_Item struct {\n\tTypeId  *int32 `protobuf:\"varint,2,req,name=type_id\"`\n\tMessage []byte `protobuf:\"bytes,3,req,name=message\"`\n}\n\ntype messageSet struct {\n\tItem             []*_MessageSet_Item `protobuf:\"group,1,rep\"`\n\tXXX_unrecognized []byte\n\t// TODO: caching?\n}\n\n// Make sure messageSet is a Message.\nvar _ Message = (*messageSet)(nil)\n\n// messageTypeIder is an interface satisfied by a protocol buffer type\n// that may be stored in a MessageSet.\ntype messageTypeIder interface {\n\tMessageTypeId() int32\n}\n\nfunc (ms *messageSet) find(pb Message) *_MessageSet_Item {\n\tmti, ok := pb.(messageTypeIder)\n\tif !ok {\n\t\treturn nil\n\t}\n\tid := mti.MessageTypeId()\n\tfor _, item := range ms.Item {\n\t\tif *item.TypeId == id {\n\t\t\treturn item\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (ms *messageSet) Has(pb Message) bool {\n\treturn ms.find(pb) != nil\n}\n\nfunc (ms *messageSet) Unmarshal(pb Message) error {\n\tif item := ms.find(pb); item != nil {\n\t\treturn Unmarshal(item.Message, pb)\n\t}\n\tif _, ok := pb.(messageTypeIder); !ok {\n\t\treturn errNoMessageTypeID\n\t}\n\treturn nil // TODO: return error instead?\n}\n\nfunc (ms *messageSet) Marshal(pb Message) error {\n\tmsg, err := Marshal(pb)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif item := ms.find(pb); item != nil {\n\t\t// reuse existing item\n\t\titem.Message = msg\n\t\treturn nil\n\t}\n\n\tmti, ok := pb.(messageTypeIder)\n\tif !ok {\n\t\treturn errNoMessageTypeID\n\t}\n\n\tmtid := mti.MessageTypeId()\n\tms.Item = append(ms.Item, &_MessageSet_Item{\n\t\tTypeId:  &mtid,\n\t\tMessage: msg,\n\t})\n\treturn nil\n}\n\nfunc (ms *messageSet) Reset()         { *ms = messageSet{} }\nfunc (ms *messageSet) String() string { return CompactTextString(ms) }\nfunc (*messageSet) ProtoMessage()     {}\n\n// Support for the message_set_wire_format message option.\n\nfunc skipVarint(buf []byte) []byte {\n\ti := 0\n\tfor ; buf[i]&0x80 != 0; i++ {\n\t}\n\treturn buf[i+1:]\n}\n\n// unmarshalMessageSet decodes the extension map encoded in buf in the message set wire format.\n// It is called by Unmarshal methods on protocol buffer messages with the message_set_wire_format option.\nfunc unmarshalMessageSet(buf []byte, exts interface{}) error {\n\tvar m map[int32]Extension\n\tswitch exts := exts.(type) {\n\tcase *XXX_InternalExtensions:\n\t\tm = exts.extensionsWrite()\n\tcase map[int32]Extension:\n\t\tm = exts\n\tdefault:\n\t\treturn errors.New(\"proto: not an extension map\")\n\t}\n\n\tms := new(messageSet)\n\tif err := Unmarshal(buf, ms); err != nil {\n\t\treturn err\n\t}\n\tfor _, item := range ms.Item {\n\t\tid := *item.TypeId\n\t\tmsg := item.Message\n\n\t\t// Restore wire type and field number varint, plus length varint.\n\t\t// Be careful to preserve duplicate items.\n\t\tb := EncodeVarint(uint64(id)<<3 | WireBytes)\n\t\tif ext, ok := m[id]; ok {\n\t\t\t// Existing data; rip off the tag and length varint\n\t\t\t// so we join the new data correctly.\n\t\t\t// We can assume that ext.enc is set because we are unmarshaling.\n\t\t\to := ext.enc[len(b):]   // skip wire type and field number\n\t\t\t_, n := DecodeVarint(o) // calculate length of length varint\n\t\t\to = o[n:]               // skip length varint\n\t\t\tmsg = append(o, msg...) // join old data and new data\n\t\t}\n\t\tb = append(b, EncodeVarint(uint64(len(msg)))...)\n\t\tb = append(b, msg...)\n\n\t\tm[id] = Extension{enc: b}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/pointer_reflect.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2012 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// +build purego appengine js\n\n// This file contains an implementation of proto field accesses using package reflect.\n// It is slower than the code in pointer_unsafe.go but it avoids package unsafe and can\n// be used on App Engine.\n\npackage proto\n\nimport (\n\t\"reflect\"\n\t\"sync\"\n)\n\nconst unsafeAllowed = false\n\n// A field identifies a field in a struct, accessible from a pointer.\n// In this implementation, a field is identified by the sequence of field indices\n// passed to reflect's FieldByIndex.\ntype field []int\n\n// toField returns a field equivalent to the given reflect field.\nfunc toField(f *reflect.StructField) field {\n\treturn f.Index\n}\n\n// invalidField is an invalid field identifier.\nvar invalidField = field(nil)\n\n// zeroField is a noop when calling pointer.offset.\nvar zeroField = field([]int{})\n\n// IsValid reports whether the field identifier is valid.\nfunc (f field) IsValid() bool { return f != nil }\n\n// The pointer type is for the table-driven decoder.\n// The implementation here uses a reflect.Value of pointer type to\n// create a generic pointer. In pointer_unsafe.go we use unsafe\n// instead of reflect to implement the same (but faster) interface.\ntype pointer struct {\n\tv reflect.Value\n}\n\n// toPointer converts an interface of pointer type to a pointer\n// that points to the same target.\nfunc toPointer(i *Message) pointer {\n\treturn pointer{v: reflect.ValueOf(*i)}\n}\n\n// toAddrPointer converts an interface to a pointer that points to\n// the interface data.\nfunc toAddrPointer(i *interface{}, isptr bool) pointer {\n\tv := reflect.ValueOf(*i)\n\tu := reflect.New(v.Type())\n\tu.Elem().Set(v)\n\treturn pointer{v: u}\n}\n\n// valToPointer converts v to a pointer.  v must be of pointer type.\nfunc valToPointer(v reflect.Value) pointer {\n\treturn pointer{v: v}\n}\n\n// offset converts from a pointer to a structure to a pointer to\n// one of its fields.\nfunc (p pointer) offset(f field) pointer {\n\treturn pointer{v: p.v.Elem().FieldByIndex(f).Addr()}\n}\n\nfunc (p pointer) isNil() bool {\n\treturn p.v.IsNil()\n}\n\n// grow updates the slice s in place to make it one element longer.\n// s must be addressable.\n// Returns the (addressable) new element.\nfunc grow(s reflect.Value) reflect.Value {\n\tn, m := s.Len(), s.Cap()\n\tif n < m {\n\t\ts.SetLen(n + 1)\n\t} else {\n\t\ts.Set(reflect.Append(s, reflect.Zero(s.Type().Elem())))\n\t}\n\treturn s.Index(n)\n}\n\nfunc (p pointer) toInt64() *int64 {\n\treturn p.v.Interface().(*int64)\n}\nfunc (p pointer) toInt64Ptr() **int64 {\n\treturn p.v.Interface().(**int64)\n}\nfunc (p pointer) toInt64Slice() *[]int64 {\n\treturn p.v.Interface().(*[]int64)\n}\n\nvar int32ptr = reflect.TypeOf((*int32)(nil))\n\nfunc (p pointer) toInt32() *int32 {\n\treturn p.v.Convert(int32ptr).Interface().(*int32)\n}\n\n// The toInt32Ptr/Slice methods don't work because of enums.\n// Instead, we must use set/get methods for the int32ptr/slice case.\n/*\n\tfunc (p pointer) toInt32Ptr() **int32 {\n\t\treturn p.v.Interface().(**int32)\n}\n\tfunc (p pointer) toInt32Slice() *[]int32 {\n\t\treturn p.v.Interface().(*[]int32)\n}\n*/\nfunc (p pointer) getInt32Ptr() *int32 {\n\tif p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) {\n\t\t// raw int32 type\n\t\treturn p.v.Elem().Interface().(*int32)\n\t}\n\t// an enum\n\treturn p.v.Elem().Convert(int32PtrType).Interface().(*int32)\n}\nfunc (p pointer) setInt32Ptr(v int32) {\n\t// Allocate value in a *int32. Possibly convert that to a *enum.\n\t// Then assign it to a **int32 or **enum.\n\t// Note: we can convert *int32 to *enum, but we can't convert\n\t// **int32 to **enum!\n\tp.v.Elem().Set(reflect.ValueOf(&v).Convert(p.v.Type().Elem()))\n}\n\n// getInt32Slice copies []int32 from p as a new slice.\n// This behavior differs from the implementation in pointer_unsafe.go.\nfunc (p pointer) getInt32Slice() []int32 {\n\tif p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) {\n\t\t// raw int32 type\n\t\treturn p.v.Elem().Interface().([]int32)\n\t}\n\t// an enum\n\t// Allocate a []int32, then assign []enum's values into it.\n\t// Note: we can't convert []enum to []int32.\n\tslice := p.v.Elem()\n\ts := make([]int32, slice.Len())\n\tfor i := 0; i < slice.Len(); i++ {\n\t\ts[i] = int32(slice.Index(i).Int())\n\t}\n\treturn s\n}\n\n// setInt32Slice copies []int32 into p as a new slice.\n// This behavior differs from the implementation in pointer_unsafe.go.\nfunc (p pointer) setInt32Slice(v []int32) {\n\tif p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) {\n\t\t// raw int32 type\n\t\tp.v.Elem().Set(reflect.ValueOf(v))\n\t\treturn\n\t}\n\t// an enum\n\t// Allocate a []enum, then assign []int32's values into it.\n\t// Note: we can't convert []enum to []int32.\n\tslice := reflect.MakeSlice(p.v.Type().Elem(), len(v), cap(v))\n\tfor i, x := range v {\n\t\tslice.Index(i).SetInt(int64(x))\n\t}\n\tp.v.Elem().Set(slice)\n}\nfunc (p pointer) appendInt32Slice(v int32) {\n\tgrow(p.v.Elem()).SetInt(int64(v))\n}\n\nfunc (p pointer) toUint64() *uint64 {\n\treturn p.v.Interface().(*uint64)\n}\nfunc (p pointer) toUint64Ptr() **uint64 {\n\treturn p.v.Interface().(**uint64)\n}\nfunc (p pointer) toUint64Slice() *[]uint64 {\n\treturn p.v.Interface().(*[]uint64)\n}\nfunc (p pointer) toUint32() *uint32 {\n\treturn p.v.Interface().(*uint32)\n}\nfunc (p pointer) toUint32Ptr() **uint32 {\n\treturn p.v.Interface().(**uint32)\n}\nfunc (p pointer) toUint32Slice() *[]uint32 {\n\treturn p.v.Interface().(*[]uint32)\n}\nfunc (p pointer) toBool() *bool {\n\treturn p.v.Interface().(*bool)\n}\nfunc (p pointer) toBoolPtr() **bool {\n\treturn p.v.Interface().(**bool)\n}\nfunc (p pointer) toBoolSlice() *[]bool {\n\treturn p.v.Interface().(*[]bool)\n}\nfunc (p pointer) toFloat64() *float64 {\n\treturn p.v.Interface().(*float64)\n}\nfunc (p pointer) toFloat64Ptr() **float64 {\n\treturn p.v.Interface().(**float64)\n}\nfunc (p pointer) toFloat64Slice() *[]float64 {\n\treturn p.v.Interface().(*[]float64)\n}\nfunc (p pointer) toFloat32() *float32 {\n\treturn p.v.Interface().(*float32)\n}\nfunc (p pointer) toFloat32Ptr() **float32 {\n\treturn p.v.Interface().(**float32)\n}\nfunc (p pointer) toFloat32Slice() *[]float32 {\n\treturn p.v.Interface().(*[]float32)\n}\nfunc (p pointer) toString() *string {\n\treturn p.v.Interface().(*string)\n}\nfunc (p pointer) toStringPtr() **string {\n\treturn p.v.Interface().(**string)\n}\nfunc (p pointer) toStringSlice() *[]string {\n\treturn p.v.Interface().(*[]string)\n}\nfunc (p pointer) toBytes() *[]byte {\n\treturn p.v.Interface().(*[]byte)\n}\nfunc (p pointer) toBytesSlice() *[][]byte {\n\treturn p.v.Interface().(*[][]byte)\n}\nfunc (p pointer) toExtensions() *XXX_InternalExtensions {\n\treturn p.v.Interface().(*XXX_InternalExtensions)\n}\nfunc (p pointer) toOldExtensions() *map[int32]Extension {\n\treturn p.v.Interface().(*map[int32]Extension)\n}\nfunc (p pointer) getPointer() pointer {\n\treturn pointer{v: p.v.Elem()}\n}\nfunc (p pointer) setPointer(q pointer) {\n\tp.v.Elem().Set(q.v)\n}\nfunc (p pointer) appendPointer(q pointer) {\n\tgrow(p.v.Elem()).Set(q.v)\n}\n\n// getPointerSlice copies []*T from p as a new []pointer.\n// This behavior differs from the implementation in pointer_unsafe.go.\nfunc (p pointer) getPointerSlice() []pointer {\n\tif p.v.IsNil() {\n\t\treturn nil\n\t}\n\tn := p.v.Elem().Len()\n\ts := make([]pointer, n)\n\tfor i := 0; i < n; i++ {\n\t\ts[i] = pointer{v: p.v.Elem().Index(i)}\n\t}\n\treturn s\n}\n\n// setPointerSlice copies []pointer into p as a new []*T.\n// This behavior differs from the implementation in pointer_unsafe.go.\nfunc (p pointer) setPointerSlice(v []pointer) {\n\tif v == nil {\n\t\tp.v.Elem().Set(reflect.New(p.v.Elem().Type()).Elem())\n\t\treturn\n\t}\n\ts := reflect.MakeSlice(p.v.Elem().Type(), 0, len(v))\n\tfor _, p := range v {\n\t\ts = reflect.Append(s, p.v)\n\t}\n\tp.v.Elem().Set(s)\n}\n\n// getInterfacePointer returns a pointer that points to the\n// interface data of the interface pointed by p.\nfunc (p pointer) getInterfacePointer() pointer {\n\tif p.v.Elem().IsNil() {\n\t\treturn pointer{v: p.v.Elem()}\n\t}\n\treturn pointer{v: p.v.Elem().Elem().Elem().Field(0).Addr()} // *interface -> interface -> *struct -> struct\n}\n\nfunc (p pointer) asPointerTo(t reflect.Type) reflect.Value {\n\t// TODO: check that p.v.Type().Elem() == t?\n\treturn p.v\n}\n\nfunc atomicLoadUnmarshalInfo(p **unmarshalInfo) *unmarshalInfo {\n\tatomicLock.Lock()\n\tdefer atomicLock.Unlock()\n\treturn *p\n}\nfunc atomicStoreUnmarshalInfo(p **unmarshalInfo, v *unmarshalInfo) {\n\tatomicLock.Lock()\n\tdefer atomicLock.Unlock()\n\t*p = v\n}\nfunc atomicLoadMarshalInfo(p **marshalInfo) *marshalInfo {\n\tatomicLock.Lock()\n\tdefer atomicLock.Unlock()\n\treturn *p\n}\nfunc atomicStoreMarshalInfo(p **marshalInfo, v *marshalInfo) {\n\tatomicLock.Lock()\n\tdefer atomicLock.Unlock()\n\t*p = v\n}\nfunc atomicLoadMergeInfo(p **mergeInfo) *mergeInfo {\n\tatomicLock.Lock()\n\tdefer atomicLock.Unlock()\n\treturn *p\n}\nfunc atomicStoreMergeInfo(p **mergeInfo, v *mergeInfo) {\n\tatomicLock.Lock()\n\tdefer atomicLock.Unlock()\n\t*p = v\n}\nfunc atomicLoadDiscardInfo(p **discardInfo) *discardInfo {\n\tatomicLock.Lock()\n\tdefer atomicLock.Unlock()\n\treturn *p\n}\nfunc atomicStoreDiscardInfo(p **discardInfo, v *discardInfo) {\n\tatomicLock.Lock()\n\tdefer atomicLock.Unlock()\n\t*p = v\n}\n\nvar atomicLock sync.Mutex\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/pointer_reflect_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// +build purego appengine js\n\n// This file contains an implementation of proto field accesses using package reflect.\n// It is slower than the code in pointer_unsafe.go but it avoids package unsafe and can\n// be used on App Engine.\n\npackage proto\n\nimport (\n\t\"reflect\"\n)\n\n// TODO: untested, so probably incorrect.\n\nfunc (p pointer) getRef() pointer {\n\treturn pointer{v: p.v.Addr()}\n}\n\nfunc (p pointer) appendRef(v pointer, typ reflect.Type) {\n\tslice := p.getSlice(typ)\n\telem := v.asPointerTo(typ).Elem()\n\tnewSlice := reflect.Append(slice, elem)\n\tslice.Set(newSlice)\n}\n\nfunc (p pointer) getSlice(typ reflect.Type) reflect.Value {\n\tsliceTyp := reflect.SliceOf(typ)\n\tslice := p.asPointerTo(sliceTyp)\n\tslice = slice.Elem()\n\treturn slice\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/pointer_unsafe.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2012 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// +build !purego,!appengine,!js\n\n// This file contains the implementation of the proto field accesses using package unsafe.\n\npackage proto\n\nimport (\n\t\"reflect\"\n\t\"sync/atomic\"\n\t\"unsafe\"\n)\n\nconst unsafeAllowed = true\n\n// A field identifies a field in a struct, accessible from a pointer.\n// In this implementation, a field is identified by its byte offset from the start of the struct.\ntype field uintptr\n\n// toField returns a field equivalent to the given reflect field.\nfunc toField(f *reflect.StructField) field {\n\treturn field(f.Offset)\n}\n\n// invalidField is an invalid field identifier.\nconst invalidField = ^field(0)\n\n// zeroField is a noop when calling pointer.offset.\nconst zeroField = field(0)\n\n// IsValid reports whether the field identifier is valid.\nfunc (f field) IsValid() bool {\n\treturn f != invalidField\n}\n\n// The pointer type below is for the new table-driven encoder/decoder.\n// The implementation here uses unsafe.Pointer to create a generic pointer.\n// In pointer_reflect.go we use reflect instead of unsafe to implement\n// the same (but slower) interface.\ntype pointer struct {\n\tp unsafe.Pointer\n}\n\n// size of pointer\nvar ptrSize = unsafe.Sizeof(uintptr(0))\n\n// toPointer converts an interface of pointer type to a pointer\n// that points to the same target.\nfunc toPointer(i *Message) pointer {\n\t// Super-tricky - read pointer out of data word of interface value.\n\t// Saves ~25ns over the equivalent:\n\t// return valToPointer(reflect.ValueOf(*i))\n\treturn pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]}\n}\n\n// toAddrPointer converts an interface to a pointer that points to\n// the interface data.\nfunc toAddrPointer(i *interface{}, isptr bool) pointer {\n\t// Super-tricky - read or get the address of data word of interface value.\n\tif isptr {\n\t\t// The interface is of pointer type, thus it is a direct interface.\n\t\t// The data word is the pointer data itself. We take its address.\n\t\treturn pointer{p: unsafe.Pointer(uintptr(unsafe.Pointer(i)) + ptrSize)}\n\t}\n\t// The interface is not of pointer type. The data word is the pointer\n\t// to the data.\n\treturn pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]}\n}\n\n// valToPointer converts v to a pointer. v must be of pointer type.\nfunc valToPointer(v reflect.Value) pointer {\n\treturn pointer{p: unsafe.Pointer(v.Pointer())}\n}\n\n// offset converts from a pointer to a structure to a pointer to\n// one of its fields.\nfunc (p pointer) offset(f field) pointer {\n\t// For safety, we should panic if !f.IsValid, however calling panic causes\n\t// this to no longer be inlineable, which is a serious performance cost.\n\t/*\n\t\tif !f.IsValid() {\n\t\t\tpanic(\"invalid field\")\n\t\t}\n\t*/\n\treturn pointer{p: unsafe.Pointer(uintptr(p.p) + uintptr(f))}\n}\n\nfunc (p pointer) isNil() bool {\n\treturn p.p == nil\n}\n\nfunc (p pointer) toInt64() *int64 {\n\treturn (*int64)(p.p)\n}\nfunc (p pointer) toInt64Ptr() **int64 {\n\treturn (**int64)(p.p)\n}\nfunc (p pointer) toInt64Slice() *[]int64 {\n\treturn (*[]int64)(p.p)\n}\nfunc (p pointer) toInt32() *int32 {\n\treturn (*int32)(p.p)\n}\n\n// See pointer_reflect.go for why toInt32Ptr/Slice doesn't exist.\n/*\n\tfunc (p pointer) toInt32Ptr() **int32 {\n\t\treturn (**int32)(p.p)\n\t}\n\tfunc (p pointer) toInt32Slice() *[]int32 {\n\t\treturn (*[]int32)(p.p)\n\t}\n*/\nfunc (p pointer) getInt32Ptr() *int32 {\n\treturn *(**int32)(p.p)\n}\nfunc (p pointer) setInt32Ptr(v int32) {\n\t*(**int32)(p.p) = &v\n}\n\n// getInt32Slice loads a []int32 from p.\n// The value returned is aliased with the original slice.\n// This behavior differs from the implementation in pointer_reflect.go.\nfunc (p pointer) getInt32Slice() []int32 {\n\treturn *(*[]int32)(p.p)\n}\n\n// setInt32Slice stores a []int32 to p.\n// The value set is aliased with the input slice.\n// This behavior differs from the implementation in pointer_reflect.go.\nfunc (p pointer) setInt32Slice(v []int32) {\n\t*(*[]int32)(p.p) = v\n}\n\n// TODO: Can we get rid of appendInt32Slice and use setInt32Slice instead?\nfunc (p pointer) appendInt32Slice(v int32) {\n\ts := (*[]int32)(p.p)\n\t*s = append(*s, v)\n}\n\nfunc (p pointer) toUint64() *uint64 {\n\treturn (*uint64)(p.p)\n}\nfunc (p pointer) toUint64Ptr() **uint64 {\n\treturn (**uint64)(p.p)\n}\nfunc (p pointer) toUint64Slice() *[]uint64 {\n\treturn (*[]uint64)(p.p)\n}\nfunc (p pointer) toUint32() *uint32 {\n\treturn (*uint32)(p.p)\n}\nfunc (p pointer) toUint32Ptr() **uint32 {\n\treturn (**uint32)(p.p)\n}\nfunc (p pointer) toUint32Slice() *[]uint32 {\n\treturn (*[]uint32)(p.p)\n}\nfunc (p pointer) toBool() *bool {\n\treturn (*bool)(p.p)\n}\nfunc (p pointer) toBoolPtr() **bool {\n\treturn (**bool)(p.p)\n}\nfunc (p pointer) toBoolSlice() *[]bool {\n\treturn (*[]bool)(p.p)\n}\nfunc (p pointer) toFloat64() *float64 {\n\treturn (*float64)(p.p)\n}\nfunc (p pointer) toFloat64Ptr() **float64 {\n\treturn (**float64)(p.p)\n}\nfunc (p pointer) toFloat64Slice() *[]float64 {\n\treturn (*[]float64)(p.p)\n}\nfunc (p pointer) toFloat32() *float32 {\n\treturn (*float32)(p.p)\n}\nfunc (p pointer) toFloat32Ptr() **float32 {\n\treturn (**float32)(p.p)\n}\nfunc (p pointer) toFloat32Slice() *[]float32 {\n\treturn (*[]float32)(p.p)\n}\nfunc (p pointer) toString() *string {\n\treturn (*string)(p.p)\n}\nfunc (p pointer) toStringPtr() **string {\n\treturn (**string)(p.p)\n}\nfunc (p pointer) toStringSlice() *[]string {\n\treturn (*[]string)(p.p)\n}\nfunc (p pointer) toBytes() *[]byte {\n\treturn (*[]byte)(p.p)\n}\nfunc (p pointer) toBytesSlice() *[][]byte {\n\treturn (*[][]byte)(p.p)\n}\nfunc (p pointer) toExtensions() *XXX_InternalExtensions {\n\treturn (*XXX_InternalExtensions)(p.p)\n}\nfunc (p pointer) toOldExtensions() *map[int32]Extension {\n\treturn (*map[int32]Extension)(p.p)\n}\n\n// getPointerSlice loads []*T from p as a []pointer.\n// The value returned is aliased with the original slice.\n// This behavior differs from the implementation in pointer_reflect.go.\nfunc (p pointer) getPointerSlice() []pointer {\n\t// Super-tricky - p should point to a []*T where T is a\n\t// message type. We load it as []pointer.\n\treturn *(*[]pointer)(p.p)\n}\n\n// setPointerSlice stores []pointer into p as a []*T.\n// The value set is aliased with the input slice.\n// This behavior differs from the implementation in pointer_reflect.go.\nfunc (p pointer) setPointerSlice(v []pointer) {\n\t// Super-tricky - p should point to a []*T where T is a\n\t// message type. We store it as []pointer.\n\t*(*[]pointer)(p.p) = v\n}\n\n// getPointer loads the pointer at p and returns it.\nfunc (p pointer) getPointer() pointer {\n\treturn pointer{p: *(*unsafe.Pointer)(p.p)}\n}\n\n// setPointer stores the pointer q at p.\nfunc (p pointer) setPointer(q pointer) {\n\t*(*unsafe.Pointer)(p.p) = q.p\n}\n\n// append q to the slice pointed to by p.\nfunc (p pointer) appendPointer(q pointer) {\n\ts := (*[]unsafe.Pointer)(p.p)\n\t*s = append(*s, q.p)\n}\n\n// getInterfacePointer returns a pointer that points to the\n// interface data of the interface pointed by p.\nfunc (p pointer) getInterfacePointer() pointer {\n\t// Super-tricky - read pointer out of data word of interface value.\n\treturn pointer{p: (*(*[2]unsafe.Pointer)(p.p))[1]}\n}\n\n// asPointerTo returns a reflect.Value that is a pointer to an\n// object of type t stored at p.\nfunc (p pointer) asPointerTo(t reflect.Type) reflect.Value {\n\treturn reflect.NewAt(t, p.p)\n}\n\nfunc atomicLoadUnmarshalInfo(p **unmarshalInfo) *unmarshalInfo {\n\treturn (*unmarshalInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))\n}\nfunc atomicStoreUnmarshalInfo(p **unmarshalInfo, v *unmarshalInfo) {\n\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))\n}\nfunc atomicLoadMarshalInfo(p **marshalInfo) *marshalInfo {\n\treturn (*marshalInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))\n}\nfunc atomicStoreMarshalInfo(p **marshalInfo, v *marshalInfo) {\n\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))\n}\nfunc atomicLoadMergeInfo(p **mergeInfo) *mergeInfo {\n\treturn (*mergeInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))\n}\nfunc atomicStoreMergeInfo(p **mergeInfo, v *mergeInfo) {\n\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))\n}\nfunc atomicLoadDiscardInfo(p **discardInfo) *discardInfo {\n\treturn (*discardInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))\n}\nfunc atomicStoreDiscardInfo(p **discardInfo, v *discardInfo) {\n\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// +build !purego,!appengine,!js\n\n// This file contains the implementation of the proto field accesses using package unsafe.\n\npackage proto\n\nimport (\n\t\"reflect\"\n\t\"unsafe\"\n)\n\nfunc (p pointer) getRef() pointer {\n\treturn pointer{p: (unsafe.Pointer)(&p.p)}\n}\n\nfunc (p pointer) appendRef(v pointer, typ reflect.Type) {\n\tslice := p.getSlice(typ)\n\telem := v.asPointerTo(typ).Elem()\n\tnewSlice := reflect.Append(slice, elem)\n\tslice.Set(newSlice)\n}\n\nfunc (p pointer) getSlice(typ reflect.Type) reflect.Value {\n\tsliceTyp := reflect.SliceOf(typ)\n\tslice := p.asPointerTo(sliceTyp)\n\tslice = slice.Elem()\n\treturn slice\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/properties.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2010 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\n/*\n * Routines for encoding data into the wire format for protocol buffers.\n */\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n)\n\nconst debug bool = false\n\n// Constants that identify the encoding of a value on the wire.\nconst (\n\tWireVarint     = 0\n\tWireFixed64    = 1\n\tWireBytes      = 2\n\tWireStartGroup = 3\n\tWireEndGroup   = 4\n\tWireFixed32    = 5\n)\n\n// tagMap is an optimization over map[int]int for typical protocol buffer\n// use-cases. Encoded protocol buffers are often in tag order with small tag\n// numbers.\ntype tagMap struct {\n\tfastTags []int\n\tslowTags map[int]int\n}\n\n// tagMapFastLimit is the upper bound on the tag number that will be stored in\n// the tagMap slice rather than its map.\nconst tagMapFastLimit = 1024\n\nfunc (p *tagMap) get(t int) (int, bool) {\n\tif t > 0 && t < tagMapFastLimit {\n\t\tif t >= len(p.fastTags) {\n\t\t\treturn 0, false\n\t\t}\n\t\tfi := p.fastTags[t]\n\t\treturn fi, fi >= 0\n\t}\n\tfi, ok := p.slowTags[t]\n\treturn fi, ok\n}\n\nfunc (p *tagMap) put(t int, fi int) {\n\tif t > 0 && t < tagMapFastLimit {\n\t\tfor len(p.fastTags) < t+1 {\n\t\t\tp.fastTags = append(p.fastTags, -1)\n\t\t}\n\t\tp.fastTags[t] = fi\n\t\treturn\n\t}\n\tif p.slowTags == nil {\n\t\tp.slowTags = make(map[int]int)\n\t}\n\tp.slowTags[t] = fi\n}\n\n// StructProperties represents properties for all the fields of a struct.\n// decoderTags and decoderOrigNames should only be used by the decoder.\ntype StructProperties struct {\n\tProp             []*Properties  // properties for each field\n\treqCount         int            // required count\n\tdecoderTags      tagMap         // map from proto tag to struct field number\n\tdecoderOrigNames map[string]int // map from original name to struct field number\n\torder            []int          // list of struct field numbers in tag order\n\n\t// OneofTypes contains information about the oneof fields in this message.\n\t// It is keyed by the original name of a field.\n\tOneofTypes map[string]*OneofProperties\n}\n\n// OneofProperties represents information about a specific field in a oneof.\ntype OneofProperties struct {\n\tType  reflect.Type // pointer to generated struct type for this oneof field\n\tField int          // struct field number of the containing oneof in the message\n\tProp  *Properties\n}\n\n// Implement the sorting interface so we can sort the fields in tag order, as recommended by the spec.\n// See encode.go, (*Buffer).enc_struct.\n\nfunc (sp *StructProperties) Len() int { return len(sp.order) }\nfunc (sp *StructProperties) Less(i, j int) bool {\n\treturn sp.Prop[sp.order[i]].Tag < sp.Prop[sp.order[j]].Tag\n}\nfunc (sp *StructProperties) Swap(i, j int) { sp.order[i], sp.order[j] = sp.order[j], sp.order[i] }\n\n// Properties represents the protocol-specific behavior of a single struct field.\ntype Properties struct {\n\tName     string // name of the field, for error messages\n\tOrigName string // original name before protocol compiler (always set)\n\tJSONName string // name to use for JSON; determined by protoc\n\tWire     string\n\tWireType int\n\tTag      int\n\tRequired bool\n\tOptional bool\n\tRepeated bool\n\tPacked   bool   // relevant for repeated primitives only\n\tEnum     string // set for enum types only\n\tproto3   bool   // whether this is known to be a proto3 field\n\toneof    bool   // whether this is a oneof field\n\n\tDefault     string // default value\n\tHasDefault  bool   // whether an explicit default was provided\n\tCustomType  string\n\tCastType    string\n\tStdTime     bool\n\tStdDuration bool\n\tWktPointer  bool\n\n\tstype reflect.Type      // set for struct types only\n\tctype reflect.Type      // set for custom types only\n\tsprop *StructProperties // set for struct types only\n\n\tmtype      reflect.Type // set for map types only\n\tMapKeyProp *Properties  // set for map types only\n\tMapValProp *Properties  // set for map types only\n}\n\n// String formats the properties in the protobuf struct field tag style.\nfunc (p *Properties) String() string {\n\ts := p.Wire\n\ts += \",\"\n\ts += strconv.Itoa(p.Tag)\n\tif p.Required {\n\t\ts += \",req\"\n\t}\n\tif p.Optional {\n\t\ts += \",opt\"\n\t}\n\tif p.Repeated {\n\t\ts += \",rep\"\n\t}\n\tif p.Packed {\n\t\ts += \",packed\"\n\t}\n\ts += \",name=\" + p.OrigName\n\tif p.JSONName != p.OrigName {\n\t\ts += \",json=\" + p.JSONName\n\t}\n\tif p.proto3 {\n\t\ts += \",proto3\"\n\t}\n\tif p.oneof {\n\t\ts += \",oneof\"\n\t}\n\tif len(p.Enum) > 0 {\n\t\ts += \",enum=\" + p.Enum\n\t}\n\tif p.HasDefault {\n\t\ts += \",def=\" + p.Default\n\t}\n\treturn s\n}\n\n// Parse populates p by parsing a string in the protobuf struct field tag style.\nfunc (p *Properties) Parse(s string) {\n\t// \"bytes,49,opt,name=foo,def=hello!\"\n\tfields := strings.Split(s, \",\") // breaks def=, but handled below.\n\tif len(fields) < 2 {\n\t\tlog.Printf(\"proto: tag has too few fields: %q\", s)\n\t\treturn\n\t}\n\n\tp.Wire = fields[0]\n\tswitch p.Wire {\n\tcase \"varint\":\n\t\tp.WireType = WireVarint\n\tcase \"fixed32\":\n\t\tp.WireType = WireFixed32\n\tcase \"fixed64\":\n\t\tp.WireType = WireFixed64\n\tcase \"zigzag32\":\n\t\tp.WireType = WireVarint\n\tcase \"zigzag64\":\n\t\tp.WireType = WireVarint\n\tcase \"bytes\", \"group\":\n\t\tp.WireType = WireBytes\n\t\t// no numeric converter for non-numeric types\n\tdefault:\n\t\tlog.Printf(\"proto: tag has unknown wire type: %q\", s)\n\t\treturn\n\t}\n\n\tvar err error\n\tp.Tag, err = strconv.Atoi(fields[1])\n\tif err != nil {\n\t\treturn\n\t}\n\nouter:\n\tfor i := 2; i < len(fields); i++ {\n\t\tf := fields[i]\n\t\tswitch {\n\t\tcase f == \"req\":\n\t\t\tp.Required = true\n\t\tcase f == \"opt\":\n\t\t\tp.Optional = true\n\t\tcase f == \"rep\":\n\t\t\tp.Repeated = true\n\t\tcase f == \"packed\":\n\t\t\tp.Packed = true\n\t\tcase strings.HasPrefix(f, \"name=\"):\n\t\t\tp.OrigName = f[5:]\n\t\tcase strings.HasPrefix(f, \"json=\"):\n\t\t\tp.JSONName = f[5:]\n\t\tcase strings.HasPrefix(f, \"enum=\"):\n\t\t\tp.Enum = f[5:]\n\t\tcase f == \"proto3\":\n\t\t\tp.proto3 = true\n\t\tcase f == \"oneof\":\n\t\t\tp.oneof = true\n\t\tcase strings.HasPrefix(f, \"def=\"):\n\t\t\tp.HasDefault = true\n\t\t\tp.Default = f[4:] // rest of string\n\t\t\tif i+1 < len(fields) {\n\t\t\t\t// Commas aren't escaped, and def is always last.\n\t\t\t\tp.Default += \",\" + strings.Join(fields[i+1:], \",\")\n\t\t\t\tbreak outer\n\t\t\t}\n\t\tcase strings.HasPrefix(f, \"embedded=\"):\n\t\t\tp.OrigName = strings.Split(f, \"=\")[1]\n\t\tcase strings.HasPrefix(f, \"customtype=\"):\n\t\t\tp.CustomType = strings.Split(f, \"=\")[1]\n\t\tcase strings.HasPrefix(f, \"casttype=\"):\n\t\t\tp.CastType = strings.Split(f, \"=\")[1]\n\t\tcase f == \"stdtime\":\n\t\t\tp.StdTime = true\n\t\tcase f == \"stdduration\":\n\t\t\tp.StdDuration = true\n\t\tcase f == \"wktptr\":\n\t\t\tp.WktPointer = true\n\t\t}\n\t}\n}\n\nvar protoMessageType = reflect.TypeOf((*Message)(nil)).Elem()\n\n// setFieldProps initializes the field properties for submessages and maps.\nfunc (p *Properties) setFieldProps(typ reflect.Type, f *reflect.StructField, lockGetProp bool) {\n\tisMap := typ.Kind() == reflect.Map\n\tif len(p.CustomType) > 0 && !isMap {\n\t\tp.ctype = typ\n\t\tp.setTag(lockGetProp)\n\t\treturn\n\t}\n\tif p.StdTime && !isMap {\n\t\tp.setTag(lockGetProp)\n\t\treturn\n\t}\n\tif p.StdDuration && !isMap {\n\t\tp.setTag(lockGetProp)\n\t\treturn\n\t}\n\tif p.WktPointer && !isMap {\n\t\tp.setTag(lockGetProp)\n\t\treturn\n\t}\n\tswitch t1 := typ; t1.Kind() {\n\tcase reflect.Struct:\n\t\tp.stype = typ\n\tcase reflect.Ptr:\n\t\tif t1.Elem().Kind() == reflect.Struct {\n\t\t\tp.stype = t1.Elem()\n\t\t}\n\tcase reflect.Slice:\n\t\tswitch t2 := t1.Elem(); t2.Kind() {\n\t\tcase reflect.Ptr:\n\t\t\tswitch t3 := t2.Elem(); t3.Kind() {\n\t\t\tcase reflect.Struct:\n\t\t\t\tp.stype = t3\n\t\t\t}\n\t\tcase reflect.Struct:\n\t\t\tp.stype = t2\n\t\t}\n\n\tcase reflect.Map:\n\n\t\tp.mtype = t1\n\t\tp.MapKeyProp = &Properties{}\n\t\tp.MapKeyProp.init(reflect.PtrTo(p.mtype.Key()), \"Key\", f.Tag.Get(\"protobuf_key\"), nil, lockGetProp)\n\t\tp.MapValProp = &Properties{}\n\t\tvtype := p.mtype.Elem()\n\t\tif vtype.Kind() != reflect.Ptr && vtype.Kind() != reflect.Slice {\n\t\t\t// The value type is not a message (*T) or bytes ([]byte),\n\t\t\t// so we need encoders for the pointer to this type.\n\t\t\tvtype = reflect.PtrTo(vtype)\n\t\t}\n\n\t\tp.MapValProp.CustomType = p.CustomType\n\t\tp.MapValProp.StdDuration = p.StdDuration\n\t\tp.MapValProp.StdTime = p.StdTime\n\t\tp.MapValProp.WktPointer = p.WktPointer\n\t\tp.MapValProp.init(vtype, \"Value\", f.Tag.Get(\"protobuf_val\"), nil, lockGetProp)\n\t}\n\tp.setTag(lockGetProp)\n}\n\nfunc (p *Properties) setTag(lockGetProp bool) {\n\tif p.stype != nil {\n\t\tif lockGetProp {\n\t\t\tp.sprop = GetProperties(p.stype)\n\t\t} else {\n\t\t\tp.sprop = getPropertiesLocked(p.stype)\n\t\t}\n\t}\n}\n\nvar (\n\tmarshalerType = reflect.TypeOf((*Marshaler)(nil)).Elem()\n)\n\n// Init populates the properties from a protocol buffer struct tag.\nfunc (p *Properties) Init(typ reflect.Type, name, tag string, f *reflect.StructField) {\n\tp.init(typ, name, tag, f, true)\n}\n\nfunc (p *Properties) init(typ reflect.Type, name, tag string, f *reflect.StructField, lockGetProp bool) {\n\t// \"bytes,49,opt,def=hello!\"\n\tp.Name = name\n\tp.OrigName = name\n\tif tag == \"\" {\n\t\treturn\n\t}\n\tp.Parse(tag)\n\tp.setFieldProps(typ, f, lockGetProp)\n}\n\nvar (\n\tpropertiesMu  sync.RWMutex\n\tpropertiesMap = make(map[reflect.Type]*StructProperties)\n)\n\n// GetProperties returns the list of properties for the type represented by t.\n// t must represent a generated struct type of a protocol message.\nfunc GetProperties(t reflect.Type) *StructProperties {\n\tif t.Kind() != reflect.Struct {\n\t\tpanic(\"proto: type must have kind struct\")\n\t}\n\n\t// Most calls to GetProperties in a long-running program will be\n\t// retrieving details for types we have seen before.\n\tpropertiesMu.RLock()\n\tsprop, ok := propertiesMap[t]\n\tpropertiesMu.RUnlock()\n\tif ok {\n\t\treturn sprop\n\t}\n\n\tpropertiesMu.Lock()\n\tsprop = getPropertiesLocked(t)\n\tpropertiesMu.Unlock()\n\treturn sprop\n}\n\ntype (\n\toneofFuncsIface interface {\n\t\tXXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{})\n\t}\n\toneofWrappersIface interface {\n\t\tXXX_OneofWrappers() []interface{}\n\t}\n)\n\n// getPropertiesLocked requires that propertiesMu is held.\nfunc getPropertiesLocked(t reflect.Type) *StructProperties {\n\tif prop, ok := propertiesMap[t]; ok {\n\t\treturn prop\n\t}\n\n\tprop := new(StructProperties)\n\t// in case of recursive protos, fill this in now.\n\tpropertiesMap[t] = prop\n\n\t// build properties\n\tprop.Prop = make([]*Properties, t.NumField())\n\tprop.order = make([]int, t.NumField())\n\n\tisOneofMessage := false\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tf := t.Field(i)\n\t\tp := new(Properties)\n\t\tname := f.Name\n\t\tp.init(f.Type, name, f.Tag.Get(\"protobuf\"), &f, false)\n\n\t\toneof := f.Tag.Get(\"protobuf_oneof\") // special case\n\t\tif oneof != \"\" {\n\t\t\tisOneofMessage = true\n\t\t\t// Oneof fields don't use the traditional protobuf tag.\n\t\t\tp.OrigName = oneof\n\t\t}\n\t\tprop.Prop[i] = p\n\t\tprop.order[i] = i\n\t\tif debug {\n\t\t\tprint(i, \" \", f.Name, \" \", t.String(), \" \")\n\t\t\tif p.Tag > 0 {\n\t\t\t\tprint(p.String())\n\t\t\t}\n\t\t\tprint(\"\\n\")\n\t\t}\n\t}\n\n\t// Re-order prop.order.\n\tsort.Sort(prop)\n\n\tif isOneofMessage {\n\t\tvar oots []interface{}\n\t\tswitch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) {\n\t\tcase oneofFuncsIface:\n\t\t\t_, _, _, oots = m.XXX_OneofFuncs()\n\t\tcase oneofWrappersIface:\n\t\t\toots = m.XXX_OneofWrappers()\n\t\t}\n\t\tif len(oots) > 0 {\n\t\t\t// Interpret oneof metadata.\n\t\t\tprop.OneofTypes = make(map[string]*OneofProperties)\n\t\t\tfor _, oot := range oots {\n\t\t\t\toop := &OneofProperties{\n\t\t\t\t\tType: reflect.ValueOf(oot).Type(), // *T\n\t\t\t\t\tProp: new(Properties),\n\t\t\t\t}\n\t\t\t\tsft := oop.Type.Elem().Field(0)\n\t\t\t\toop.Prop.Name = sft.Name\n\t\t\t\toop.Prop.Parse(sft.Tag.Get(\"protobuf\"))\n\t\t\t\t// There will be exactly one interface field that\n\t\t\t\t// this new value is assignable to.\n\t\t\t\tfor i := 0; i < t.NumField(); i++ {\n\t\t\t\t\tf := t.Field(i)\n\t\t\t\t\tif f.Type.Kind() != reflect.Interface {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif !oop.Type.AssignableTo(f.Type) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\toop.Field = i\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tprop.OneofTypes[oop.Prop.OrigName] = oop\n\t\t\t}\n\t\t}\n\t}\n\n\t// build required counts\n\t// build tags\n\treqCount := 0\n\tprop.decoderOrigNames = make(map[string]int)\n\tfor i, p := range prop.Prop {\n\t\tif strings.HasPrefix(p.Name, \"XXX_\") {\n\t\t\t// Internal fields should not appear in tags/origNames maps.\n\t\t\t// They are handled specially when encoding and decoding.\n\t\t\tcontinue\n\t\t}\n\t\tif p.Required {\n\t\t\treqCount++\n\t\t}\n\t\tprop.decoderTags.put(p.Tag, i)\n\t\tprop.decoderOrigNames[p.OrigName] = i\n\t}\n\tprop.reqCount = reqCount\n\n\treturn prop\n}\n\n// A global registry of enum types.\n// The generated code will register the generated maps by calling RegisterEnum.\n\nvar enumValueMaps = make(map[string]map[string]int32)\nvar enumStringMaps = make(map[string]map[int32]string)\n\n// RegisterEnum is called from the generated code to install the enum descriptor\n// maps into the global table to aid parsing text format protocol buffers.\nfunc RegisterEnum(typeName string, unusedNameMap map[int32]string, valueMap map[string]int32) {\n\tif _, ok := enumValueMaps[typeName]; ok {\n\t\tpanic(\"proto: duplicate enum registered: \" + typeName)\n\t}\n\tenumValueMaps[typeName] = valueMap\n\tif _, ok := enumStringMaps[typeName]; ok {\n\t\tpanic(\"proto: duplicate enum registered: \" + typeName)\n\t}\n\tenumStringMaps[typeName] = unusedNameMap\n}\n\n// EnumValueMap returns the mapping from names to integers of the\n// enum type enumType, or a nil if not found.\nfunc EnumValueMap(enumType string) map[string]int32 {\n\treturn enumValueMaps[enumType]\n}\n\n// A registry of all linked message types.\n// The string is a fully-qualified proto name (\"pkg.Message\").\nvar (\n\tprotoTypedNils = make(map[string]Message)      // a map from proto names to typed nil pointers\n\tprotoMapTypes  = make(map[string]reflect.Type) // a map from proto names to map types\n\trevProtoTypes  = make(map[reflect.Type]string)\n)\n\n// RegisterType is called from generated code and maps from the fully qualified\n// proto name to the type (pointer to struct) of the protocol buffer.\nfunc RegisterType(x Message, name string) {\n\tif _, ok := protoTypedNils[name]; ok {\n\t\t// TODO: Some day, make this a panic.\n\t\tlog.Printf(\"proto: duplicate proto type registered: %s\", name)\n\t\treturn\n\t}\n\tt := reflect.TypeOf(x)\n\tif v := reflect.ValueOf(x); v.Kind() == reflect.Ptr && v.Pointer() == 0 {\n\t\t// Generated code always calls RegisterType with nil x.\n\t\t// This check is just for extra safety.\n\t\tprotoTypedNils[name] = x\n\t} else {\n\t\tprotoTypedNils[name] = reflect.Zero(t).Interface().(Message)\n\t}\n\trevProtoTypes[t] = name\n}\n\n// RegisterMapType is called from generated code and maps from the fully qualified\n// proto name to the native map type of the proto map definition.\nfunc RegisterMapType(x interface{}, name string) {\n\tif reflect.TypeOf(x).Kind() != reflect.Map {\n\t\tpanic(fmt.Sprintf(\"RegisterMapType(%T, %q); want map\", x, name))\n\t}\n\tif _, ok := protoMapTypes[name]; ok {\n\t\tlog.Printf(\"proto: duplicate proto type registered: %s\", name)\n\t\treturn\n\t}\n\tt := reflect.TypeOf(x)\n\tprotoMapTypes[name] = t\n\trevProtoTypes[t] = name\n}\n\n// MessageName returns the fully-qualified proto name for the given message type.\nfunc MessageName(x Message) string {\n\ttype xname interface {\n\t\tXXX_MessageName() string\n\t}\n\tif m, ok := x.(xname); ok {\n\t\treturn m.XXX_MessageName()\n\t}\n\treturn revProtoTypes[reflect.TypeOf(x)]\n}\n\n// MessageType returns the message type (pointer to struct) for a named message.\n// The type is not guaranteed to implement proto.Message if the name refers to a\n// map entry.\nfunc MessageType(name string) reflect.Type {\n\tif t, ok := protoTypedNils[name]; ok {\n\t\treturn reflect.TypeOf(t)\n\t}\n\treturn protoMapTypes[name]\n}\n\n// A registry of all linked proto files.\nvar (\n\tprotoFiles = make(map[string][]byte) // file name => fileDescriptor\n)\n\n// RegisterFile is called from generated code and maps from the\n// full file name of a .proto file to its compressed FileDescriptorProto.\nfunc RegisterFile(filename string, fileDescriptor []byte) {\n\tprotoFiles[filename] = fileDescriptor\n}\n\n// FileDescriptor returns the compressed FileDescriptorProto for a .proto file.\nfunc FileDescriptor(filename string) []byte { return protoFiles[filename] }\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/properties_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"reflect\"\n)\n\nvar sizerType = reflect.TypeOf((*Sizer)(nil)).Elem()\nvar protosizerType = reflect.TypeOf((*ProtoSizer)(nil)).Elem()\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/skip_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\nfunc Skip(data []byte) (n int, err error) {\n\tl := len(data)\n\tindex := 0\n\tfor index < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif index >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := data[index]\n\t\t\tindex++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor {\n\t\t\t\tif index >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tindex++\n\t\t\t\tif data[index-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn index, nil\n\t\tcase 1:\n\t\t\tindex += 8\n\t\t\treturn index, nil\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif index >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := data[index]\n\t\t\t\tindex++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tindex += length\n\t\t\treturn index, nil\n\t\tcase 3:\n\t\t\tfor {\n\t\t\t\tvar innerWire uint64\n\t\t\t\tvar start int = index\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif index >= l {\n\t\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := data[index]\n\t\t\t\t\tindex++\n\t\t\t\t\tinnerWire |= (uint64(b) & 0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tinnerWireType := int(innerWire & 0x7)\n\t\t\t\tif innerWireType == 4 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tnext, err := Skip(data[start:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\tindex = start + next\n\t\t\t}\n\t\t\treturn index, nil\n\t\tcase 4:\n\t\t\treturn index, nil\n\t\tcase 5:\n\t\t\tindex += 4\n\t\t\treturn index, nil\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t}\n\tpanic(\"unreachable\")\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/table_marshal.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2016 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"unicode/utf8\"\n)\n\n// a sizer takes a pointer to a field and the size of its tag, computes the size of\n// the encoded data.\ntype sizer func(pointer, int) int\n\n// a marshaler takes a byte slice, a pointer to a field, and its tag (in wire format),\n// marshals the field to the end of the slice, returns the slice and error (if any).\ntype marshaler func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error)\n\n// marshalInfo is the information used for marshaling a message.\ntype marshalInfo struct {\n\ttyp          reflect.Type\n\tfields       []*marshalFieldInfo\n\tunrecognized field                      // offset of XXX_unrecognized\n\textensions   field                      // offset of XXX_InternalExtensions\n\tv1extensions field                      // offset of XXX_extensions\n\tsizecache    field                      // offset of XXX_sizecache\n\tinitialized  int32                      // 0 -- only typ is set, 1 -- fully initialized\n\tmessageset   bool                       // uses message set wire format\n\thasmarshaler bool                       // has custom marshaler\n\tsync.RWMutex                            // protect extElems map, also for initialization\n\textElems     map[int32]*marshalElemInfo // info of extension elements\n\n\thassizer      bool // has custom sizer\n\thasprotosizer bool // has custom protosizer\n\n\tbytesExtensions field // offset of XXX_extensions where the field type is []byte\n}\n\n// marshalFieldInfo is the information used for marshaling a field of a message.\ntype marshalFieldInfo struct {\n\tfield      field\n\twiretag    uint64 // tag in wire format\n\ttagsize    int    // size of tag in wire format\n\tsizer      sizer\n\tmarshaler  marshaler\n\tisPointer  bool\n\trequired   bool                              // field is required\n\tname       string                            // name of the field, for error reporting\n\toneofElems map[reflect.Type]*marshalElemInfo // info of oneof elements\n}\n\n// marshalElemInfo is the information used for marshaling an extension or oneof element.\ntype marshalElemInfo struct {\n\twiretag   uint64 // tag in wire format\n\ttagsize   int    // size of tag in wire format\n\tsizer     sizer\n\tmarshaler marshaler\n\tisptr     bool // elem is pointer typed, thus interface of this type is a direct interface (extension only)\n}\n\nvar (\n\tmarshalInfoMap  = map[reflect.Type]*marshalInfo{}\n\tmarshalInfoLock sync.Mutex\n\n\tuint8SliceType = reflect.TypeOf(([]uint8)(nil)).Kind()\n)\n\n// getMarshalInfo returns the information to marshal a given type of message.\n// The info it returns may not necessarily initialized.\n// t is the type of the message (NOT the pointer to it).\nfunc getMarshalInfo(t reflect.Type) *marshalInfo {\n\tmarshalInfoLock.Lock()\n\tu, ok := marshalInfoMap[t]\n\tif !ok {\n\t\tu = &marshalInfo{typ: t}\n\t\tmarshalInfoMap[t] = u\n\t}\n\tmarshalInfoLock.Unlock()\n\treturn u\n}\n\n// Size is the entry point from generated code,\n// and should be ONLY called by generated code.\n// It computes the size of encoded data of msg.\n// a is a pointer to a place to store cached marshal info.\nfunc (a *InternalMessageInfo) Size(msg Message) int {\n\tu := getMessageMarshalInfo(msg, a)\n\tptr := toPointer(&msg)\n\tif ptr.isNil() {\n\t\t// We get here if msg is a typed nil ((*SomeMessage)(nil)),\n\t\t// so it satisfies the interface, and msg == nil wouldn't\n\t\t// catch it. We don't want crash in this case.\n\t\treturn 0\n\t}\n\treturn u.size(ptr)\n}\n\n// Marshal is the entry point from generated code,\n// and should be ONLY called by generated code.\n// It marshals msg to the end of b.\n// a is a pointer to a place to store cached marshal info.\nfunc (a *InternalMessageInfo) Marshal(b []byte, msg Message, deterministic bool) ([]byte, error) {\n\tu := getMessageMarshalInfo(msg, a)\n\tptr := toPointer(&msg)\n\tif ptr.isNil() {\n\t\t// We get here if msg is a typed nil ((*SomeMessage)(nil)),\n\t\t// so it satisfies the interface, and msg == nil wouldn't\n\t\t// catch it. We don't want crash in this case.\n\t\treturn b, ErrNil\n\t}\n\treturn u.marshal(b, ptr, deterministic)\n}\n\nfunc getMessageMarshalInfo(msg interface{}, a *InternalMessageInfo) *marshalInfo {\n\t// u := a.marshal, but atomically.\n\t// We use an atomic here to ensure memory consistency.\n\tu := atomicLoadMarshalInfo(&a.marshal)\n\tif u == nil {\n\t\t// Get marshal information from type of message.\n\t\tt := reflect.ValueOf(msg).Type()\n\t\tif t.Kind() != reflect.Ptr {\n\t\t\tpanic(fmt.Sprintf(\"cannot handle non-pointer message type %v\", t))\n\t\t}\n\t\tu = getMarshalInfo(t.Elem())\n\t\t// Store it in the cache for later users.\n\t\t// a.marshal = u, but atomically.\n\t\tatomicStoreMarshalInfo(&a.marshal, u)\n\t}\n\treturn u\n}\n\n// size is the main function to compute the size of the encoded data of a message.\n// ptr is the pointer to the message.\nfunc (u *marshalInfo) size(ptr pointer) int {\n\tif atomic.LoadInt32(&u.initialized) == 0 {\n\t\tu.computeMarshalInfo()\n\t}\n\n\t// If the message can marshal itself, let it do it, for compatibility.\n\t// NOTE: This is not efficient.\n\tif u.hasmarshaler {\n\t\t// Uses the message's Size method if available\n\t\tif u.hassizer {\n\t\t\ts := ptr.asPointerTo(u.typ).Interface().(Sizer)\n\t\t\treturn s.Size()\n\t\t}\n\t\t// Uses the message's ProtoSize method if available\n\t\tif u.hasprotosizer {\n\t\t\ts := ptr.asPointerTo(u.typ).Interface().(ProtoSizer)\n\t\t\treturn s.ProtoSize()\n\t\t}\n\n\t\tm := ptr.asPointerTo(u.typ).Interface().(Marshaler)\n\t\tb, _ := m.Marshal()\n\t\treturn len(b)\n\t}\n\n\tn := 0\n\tfor _, f := range u.fields {\n\t\tif f.isPointer && ptr.offset(f.field).getPointer().isNil() {\n\t\t\t// nil pointer always marshals to nothing\n\t\t\tcontinue\n\t\t}\n\t\tn += f.sizer(ptr.offset(f.field), f.tagsize)\n\t}\n\tif u.extensions.IsValid() {\n\t\te := ptr.offset(u.extensions).toExtensions()\n\t\tif u.messageset {\n\t\t\tn += u.sizeMessageSet(e)\n\t\t} else {\n\t\t\tn += u.sizeExtensions(e)\n\t\t}\n\t}\n\tif u.v1extensions.IsValid() {\n\t\tm := *ptr.offset(u.v1extensions).toOldExtensions()\n\t\tn += u.sizeV1Extensions(m)\n\t}\n\tif u.bytesExtensions.IsValid() {\n\t\ts := *ptr.offset(u.bytesExtensions).toBytes()\n\t\tn += len(s)\n\t}\n\tif u.unrecognized.IsValid() {\n\t\ts := *ptr.offset(u.unrecognized).toBytes()\n\t\tn += len(s)\n\t}\n\n\t// cache the result for use in marshal\n\tif u.sizecache.IsValid() {\n\t\tatomic.StoreInt32(ptr.offset(u.sizecache).toInt32(), int32(n))\n\t}\n\treturn n\n}\n\n// cachedsize gets the size from cache. If there is no cache (i.e. message is not generated),\n// fall back to compute the size.\nfunc (u *marshalInfo) cachedsize(ptr pointer) int {\n\tif u.sizecache.IsValid() {\n\t\treturn int(atomic.LoadInt32(ptr.offset(u.sizecache).toInt32()))\n\t}\n\treturn u.size(ptr)\n}\n\n// marshal is the main function to marshal a message. It takes a byte slice and appends\n// the encoded data to the end of the slice, returns the slice and error (if any).\n// ptr is the pointer to the message.\n// If deterministic is true, map is marshaled in deterministic order.\nfunc (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte, error) {\n\tif atomic.LoadInt32(&u.initialized) == 0 {\n\t\tu.computeMarshalInfo()\n\t}\n\n\t// If the message can marshal itself, let it do it, for compatibility.\n\t// NOTE: This is not efficient.\n\tif u.hasmarshaler {\n\t\tm := ptr.asPointerTo(u.typ).Interface().(Marshaler)\n\t\tb1, err := m.Marshal()\n\t\tb = append(b, b1...)\n\t\treturn b, err\n\t}\n\n\tvar err, errLater error\n\t// The old marshaler encodes extensions at beginning.\n\tif u.extensions.IsValid() {\n\t\te := ptr.offset(u.extensions).toExtensions()\n\t\tif u.messageset {\n\t\t\tb, err = u.appendMessageSet(b, e, deterministic)\n\t\t} else {\n\t\t\tb, err = u.appendExtensions(b, e, deterministic)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\tif u.v1extensions.IsValid() {\n\t\tm := *ptr.offset(u.v1extensions).toOldExtensions()\n\t\tb, err = u.appendV1Extensions(b, m, deterministic)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\tif u.bytesExtensions.IsValid() {\n\t\ts := *ptr.offset(u.bytesExtensions).toBytes()\n\t\tb = append(b, s...)\n\t}\n\tfor _, f := range u.fields {\n\t\tif f.required {\n\t\t\tif f.isPointer && ptr.offset(f.field).getPointer().isNil() {\n\t\t\t\t// Required field is not set.\n\t\t\t\t// We record the error but keep going, to give a complete marshaling.\n\t\t\t\tif errLater == nil {\n\t\t\t\t\terrLater = &RequiredNotSetError{f.name}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tif f.isPointer && ptr.offset(f.field).getPointer().isNil() {\n\t\t\t// nil pointer always marshals to nothing\n\t\t\tcontinue\n\t\t}\n\t\tb, err = f.marshaler(b, ptr.offset(f.field), f.wiretag, deterministic)\n\t\tif err != nil {\n\t\t\tif err1, ok := err.(*RequiredNotSetError); ok {\n\t\t\t\t// Required field in submessage is not set.\n\t\t\t\t// We record the error but keep going, to give a complete marshaling.\n\t\t\t\tif errLater == nil {\n\t\t\t\t\terrLater = &RequiredNotSetError{f.name + \".\" + err1.field}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err == errRepeatedHasNil {\n\t\t\t\terr = errors.New(\"proto: repeated field \" + f.name + \" has nil element\")\n\t\t\t}\n\t\t\tif err == errInvalidUTF8 {\n\t\t\t\tif errLater == nil {\n\t\t\t\t\tfullName := revProtoTypes[reflect.PtrTo(u.typ)] + \".\" + f.name\n\t\t\t\t\terrLater = &invalidUTF8Error{fullName}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn b, err\n\t\t}\n\t}\n\tif u.unrecognized.IsValid() {\n\t\ts := *ptr.offset(u.unrecognized).toBytes()\n\t\tb = append(b, s...)\n\t}\n\treturn b, errLater\n}\n\n// computeMarshalInfo initializes the marshal info.\nfunc (u *marshalInfo) computeMarshalInfo() {\n\tu.Lock()\n\tdefer u.Unlock()\n\tif u.initialized != 0 { // non-atomic read is ok as it is protected by the lock\n\t\treturn\n\t}\n\n\tt := u.typ\n\tu.unrecognized = invalidField\n\tu.extensions = invalidField\n\tu.v1extensions = invalidField\n\tu.bytesExtensions = invalidField\n\tu.sizecache = invalidField\n\tisOneofMessage := false\n\n\tif reflect.PtrTo(t).Implements(sizerType) {\n\t\tu.hassizer = true\n\t}\n\tif reflect.PtrTo(t).Implements(protosizerType) {\n\t\tu.hasprotosizer = true\n\t}\n\t// If the message can marshal itself, let it do it, for compatibility.\n\t// NOTE: This is not efficient.\n\tif reflect.PtrTo(t).Implements(marshalerType) {\n\t\tu.hasmarshaler = true\n\t\tatomic.StoreInt32(&u.initialized, 1)\n\t\treturn\n\t}\n\n\tn := t.NumField()\n\n\t// deal with XXX fields first\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tf := t.Field(i)\n\t\tif f.Tag.Get(\"protobuf_oneof\") != \"\" {\n\t\t\tisOneofMessage = true\n\t\t}\n\t\tif !strings.HasPrefix(f.Name, \"XXX_\") {\n\t\t\tcontinue\n\t\t}\n\t\tswitch f.Name {\n\t\tcase \"XXX_sizecache\":\n\t\t\tu.sizecache = toField(&f)\n\t\tcase \"XXX_unrecognized\":\n\t\t\tu.unrecognized = toField(&f)\n\t\tcase \"XXX_InternalExtensions\":\n\t\t\tu.extensions = toField(&f)\n\t\t\tu.messageset = f.Tag.Get(\"protobuf_messageset\") == \"1\"\n\t\tcase \"XXX_extensions\":\n\t\t\tif f.Type.Kind() == reflect.Map {\n\t\t\t\tu.v1extensions = toField(&f)\n\t\t\t} else {\n\t\t\t\tu.bytesExtensions = toField(&f)\n\t\t\t}\n\t\tcase \"XXX_NoUnkeyedLiteral\":\n\t\t\t// nothing to do\n\t\tdefault:\n\t\t\tpanic(\"unknown XXX field: \" + f.Name)\n\t\t}\n\t\tn--\n\t}\n\n\t// get oneof implementers\n\tvar oneofImplementers []interface{}\n\t// gogo: isOneofMessage is needed for embedded oneof messages, without a marshaler and unmarshaler\n\tif isOneofMessage {\n\t\tswitch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) {\n\t\tcase oneofFuncsIface:\n\t\t\t_, _, _, oneofImplementers = m.XXX_OneofFuncs()\n\t\tcase oneofWrappersIface:\n\t\t\toneofImplementers = m.XXX_OneofWrappers()\n\t\t}\n\t}\n\n\t// normal fields\n\tfields := make([]marshalFieldInfo, n) // batch allocation\n\tu.fields = make([]*marshalFieldInfo, 0, n)\n\tfor i, j := 0, 0; i < t.NumField(); i++ {\n\t\tf := t.Field(i)\n\n\t\tif strings.HasPrefix(f.Name, \"XXX_\") {\n\t\t\tcontinue\n\t\t}\n\t\tfield := &fields[j]\n\t\tj++\n\t\tfield.name = f.Name\n\t\tu.fields = append(u.fields, field)\n\t\tif f.Tag.Get(\"protobuf_oneof\") != \"\" {\n\t\t\tfield.computeOneofFieldInfo(&f, oneofImplementers)\n\t\t\tcontinue\n\t\t}\n\t\tif f.Tag.Get(\"protobuf\") == \"\" {\n\t\t\t// field has no tag (not in generated message), ignore it\n\t\t\tu.fields = u.fields[:len(u.fields)-1]\n\t\t\tj--\n\t\t\tcontinue\n\t\t}\n\t\tfield.computeMarshalFieldInfo(&f)\n\t}\n\n\t// fields are marshaled in tag order on the wire.\n\tsort.Sort(byTag(u.fields))\n\n\tatomic.StoreInt32(&u.initialized, 1)\n}\n\n// helper for sorting fields by tag\ntype byTag []*marshalFieldInfo\n\nfunc (a byTag) Len() int           { return len(a) }\nfunc (a byTag) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }\nfunc (a byTag) Less(i, j int) bool { return a[i].wiretag < a[j].wiretag }\n\n// getExtElemInfo returns the information to marshal an extension element.\n// The info it returns is initialized.\nfunc (u *marshalInfo) getExtElemInfo(desc *ExtensionDesc) *marshalElemInfo {\n\t// get from cache first\n\tu.RLock()\n\te, ok := u.extElems[desc.Field]\n\tu.RUnlock()\n\tif ok {\n\t\treturn e\n\t}\n\n\tt := reflect.TypeOf(desc.ExtensionType) // pointer or slice to basic type or struct\n\ttags := strings.Split(desc.Tag, \",\")\n\ttag, err := strconv.Atoi(tags[1])\n\tif err != nil {\n\t\tpanic(\"tag is not an integer\")\n\t}\n\twt := wiretype(tags[0])\n\tsizr, marshalr := typeMarshaler(t, tags, false, false)\n\te = &marshalElemInfo{\n\t\twiretag:   uint64(tag)<<3 | wt,\n\t\ttagsize:   SizeVarint(uint64(tag) << 3),\n\t\tsizer:     sizr,\n\t\tmarshaler: marshalr,\n\t\tisptr:     t.Kind() == reflect.Ptr,\n\t}\n\n\t// update cache\n\tu.Lock()\n\tif u.extElems == nil {\n\t\tu.extElems = make(map[int32]*marshalElemInfo)\n\t}\n\tu.extElems[desc.Field] = e\n\tu.Unlock()\n\treturn e\n}\n\n// computeMarshalFieldInfo fills up the information to marshal a field.\nfunc (fi *marshalFieldInfo) computeMarshalFieldInfo(f *reflect.StructField) {\n\t// parse protobuf tag of the field.\n\t// tag has format of \"bytes,49,opt,name=foo,def=hello!\"\n\ttags := strings.Split(f.Tag.Get(\"protobuf\"), \",\")\n\tif tags[0] == \"\" {\n\t\treturn\n\t}\n\ttag, err := strconv.Atoi(tags[1])\n\tif err != nil {\n\t\tpanic(\"tag is not an integer\")\n\t}\n\twt := wiretype(tags[0])\n\tif tags[2] == \"req\" {\n\t\tfi.required = true\n\t}\n\tfi.setTag(f, tag, wt)\n\tfi.setMarshaler(f, tags)\n}\n\nfunc (fi *marshalFieldInfo) computeOneofFieldInfo(f *reflect.StructField, oneofImplementers []interface{}) {\n\tfi.field = toField(f)\n\tfi.wiretag = math.MaxInt32 // Use a large tag number, make oneofs sorted at the end. This tag will not appear on the wire.\n\tfi.isPointer = true\n\tfi.sizer, fi.marshaler = makeOneOfMarshaler(fi, f)\n\tfi.oneofElems = make(map[reflect.Type]*marshalElemInfo)\n\n\tityp := f.Type // interface type\n\tfor _, o := range oneofImplementers {\n\t\tt := reflect.TypeOf(o)\n\t\tif !t.Implements(ityp) {\n\t\t\tcontinue\n\t\t}\n\t\tsf := t.Elem().Field(0) // oneof implementer is a struct with a single field\n\t\ttags := strings.Split(sf.Tag.Get(\"protobuf\"), \",\")\n\t\ttag, err := strconv.Atoi(tags[1])\n\t\tif err != nil {\n\t\t\tpanic(\"tag is not an integer\")\n\t\t}\n\t\twt := wiretype(tags[0])\n\t\tsizr, marshalr := typeMarshaler(sf.Type, tags, false, true) // oneof should not omit any zero value\n\t\tfi.oneofElems[t.Elem()] = &marshalElemInfo{\n\t\t\twiretag:   uint64(tag)<<3 | wt,\n\t\t\ttagsize:   SizeVarint(uint64(tag) << 3),\n\t\t\tsizer:     sizr,\n\t\t\tmarshaler: marshalr,\n\t\t}\n\t}\n}\n\n// wiretype returns the wire encoding of the type.\nfunc wiretype(encoding string) uint64 {\n\tswitch encoding {\n\tcase \"fixed32\":\n\t\treturn WireFixed32\n\tcase \"fixed64\":\n\t\treturn WireFixed64\n\tcase \"varint\", \"zigzag32\", \"zigzag64\":\n\t\treturn WireVarint\n\tcase \"bytes\":\n\t\treturn WireBytes\n\tcase \"group\":\n\t\treturn WireStartGroup\n\t}\n\tpanic(\"unknown wire type \" + encoding)\n}\n\n// setTag fills up the tag (in wire format) and its size in the info of a field.\nfunc (fi *marshalFieldInfo) setTag(f *reflect.StructField, tag int, wt uint64) {\n\tfi.field = toField(f)\n\tfi.wiretag = uint64(tag)<<3 | wt\n\tfi.tagsize = SizeVarint(uint64(tag) << 3)\n}\n\n// setMarshaler fills up the sizer and marshaler in the info of a field.\nfunc (fi *marshalFieldInfo) setMarshaler(f *reflect.StructField, tags []string) {\n\tswitch f.Type.Kind() {\n\tcase reflect.Map:\n\t\t// map field\n\t\tfi.isPointer = true\n\t\tfi.sizer, fi.marshaler = makeMapMarshaler(f)\n\t\treturn\n\tcase reflect.Ptr, reflect.Slice:\n\t\tfi.isPointer = true\n\t}\n\tfi.sizer, fi.marshaler = typeMarshaler(f.Type, tags, true, false)\n}\n\n// typeMarshaler returns the sizer and marshaler of a given field.\n// t is the type of the field.\n// tags is the generated \"protobuf\" tag of the field.\n// If nozero is true, zero value is not marshaled to the wire.\n// If oneof is true, it is a oneof field.\nfunc typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, marshaler) {\n\tencoding := tags[0]\n\n\tpointer := false\n\tslice := false\n\tif t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 {\n\t\tslice = true\n\t\tt = t.Elem()\n\t}\n\tif t.Kind() == reflect.Ptr {\n\t\tpointer = true\n\t\tt = t.Elem()\n\t}\n\n\tpacked := false\n\tproto3 := false\n\tctype := false\n\tisTime := false\n\tisDuration := false\n\tisWktPointer := false\n\tvalidateUTF8 := true\n\tfor i := 2; i < len(tags); i++ {\n\t\tif tags[i] == \"packed\" {\n\t\t\tpacked = true\n\t\t}\n\t\tif tags[i] == \"proto3\" {\n\t\t\tproto3 = true\n\t\t}\n\t\tif strings.HasPrefix(tags[i], \"customtype=\") {\n\t\t\tctype = true\n\t\t}\n\t\tif tags[i] == \"stdtime\" {\n\t\t\tisTime = true\n\t\t}\n\t\tif tags[i] == \"stdduration\" {\n\t\t\tisDuration = true\n\t\t}\n\t\tif tags[i] == \"wktptr\" {\n\t\t\tisWktPointer = true\n\t\t}\n\t}\n\tvalidateUTF8 = validateUTF8 && proto3\n\tif !proto3 && !pointer && !slice {\n\t\tnozero = false\n\t}\n\n\tif ctype {\n\t\tif reflect.PtrTo(t).Implements(customType) {\n\t\t\tif slice {\n\t\t\t\treturn makeMessageRefSliceMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\tif pointer {\n\t\t\t\treturn makeCustomPtrMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\treturn makeCustomMarshaler(getMarshalInfo(t))\n\t\t} else {\n\t\t\tpanic(fmt.Sprintf(\"custom type: type: %v, does not implement the proto.custom interface\", t))\n\t\t}\n\t}\n\n\tif isTime {\n\t\tif pointer {\n\t\t\tif slice {\n\t\t\t\treturn makeTimePtrSliceMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\treturn makeTimePtrMarshaler(getMarshalInfo(t))\n\t\t}\n\t\tif slice {\n\t\t\treturn makeTimeSliceMarshaler(getMarshalInfo(t))\n\t\t}\n\t\treturn makeTimeMarshaler(getMarshalInfo(t))\n\t}\n\n\tif isDuration {\n\t\tif pointer {\n\t\t\tif slice {\n\t\t\t\treturn makeDurationPtrSliceMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\treturn makeDurationPtrMarshaler(getMarshalInfo(t))\n\t\t}\n\t\tif slice {\n\t\t\treturn makeDurationSliceMarshaler(getMarshalInfo(t))\n\t\t}\n\t\treturn makeDurationMarshaler(getMarshalInfo(t))\n\t}\n\n\tif isWktPointer {\n\t\tswitch t.Kind() {\n\t\tcase reflect.Float64:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdDoubleValuePtrSliceMarshaler(getMarshalInfo(t))\n\t\t\t\t}\n\t\t\t\treturn makeStdDoubleValuePtrMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdDoubleValueSliceMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\treturn makeStdDoubleValueMarshaler(getMarshalInfo(t))\n\t\tcase reflect.Float32:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdFloatValuePtrSliceMarshaler(getMarshalInfo(t))\n\t\t\t\t}\n\t\t\t\treturn makeStdFloatValuePtrMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdFloatValueSliceMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\treturn makeStdFloatValueMarshaler(getMarshalInfo(t))\n\t\tcase reflect.Int64:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdInt64ValuePtrSliceMarshaler(getMarshalInfo(t))\n\t\t\t\t}\n\t\t\t\treturn makeStdInt64ValuePtrMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdInt64ValueSliceMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\treturn makeStdInt64ValueMarshaler(getMarshalInfo(t))\n\t\tcase reflect.Uint64:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdUInt64ValuePtrSliceMarshaler(getMarshalInfo(t))\n\t\t\t\t}\n\t\t\t\treturn makeStdUInt64ValuePtrMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdUInt64ValueSliceMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\treturn makeStdUInt64ValueMarshaler(getMarshalInfo(t))\n\t\tcase reflect.Int32:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdInt32ValuePtrSliceMarshaler(getMarshalInfo(t))\n\t\t\t\t}\n\t\t\t\treturn makeStdInt32ValuePtrMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdInt32ValueSliceMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\treturn makeStdInt32ValueMarshaler(getMarshalInfo(t))\n\t\tcase reflect.Uint32:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdUInt32ValuePtrSliceMarshaler(getMarshalInfo(t))\n\t\t\t\t}\n\t\t\t\treturn makeStdUInt32ValuePtrMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdUInt32ValueSliceMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\treturn makeStdUInt32ValueMarshaler(getMarshalInfo(t))\n\t\tcase reflect.Bool:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdBoolValuePtrSliceMarshaler(getMarshalInfo(t))\n\t\t\t\t}\n\t\t\t\treturn makeStdBoolValuePtrMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdBoolValueSliceMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\treturn makeStdBoolValueMarshaler(getMarshalInfo(t))\n\t\tcase reflect.String:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdStringValuePtrSliceMarshaler(getMarshalInfo(t))\n\t\t\t\t}\n\t\t\t\treturn makeStdStringValuePtrMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdStringValueSliceMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\treturn makeStdStringValueMarshaler(getMarshalInfo(t))\n\t\tcase uint8SliceType:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdBytesValuePtrSliceMarshaler(getMarshalInfo(t))\n\t\t\t\t}\n\t\t\t\treturn makeStdBytesValuePtrMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdBytesValueSliceMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\treturn makeStdBytesValueMarshaler(getMarshalInfo(t))\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"unknown wktpointer type %#v\", t))\n\t\t}\n\t}\n\n\tswitch t.Kind() {\n\tcase reflect.Bool:\n\t\tif pointer {\n\t\t\treturn sizeBoolPtr, appendBoolPtr\n\t\t}\n\t\tif slice {\n\t\t\tif packed {\n\t\t\t\treturn sizeBoolPackedSlice, appendBoolPackedSlice\n\t\t\t}\n\t\t\treturn sizeBoolSlice, appendBoolSlice\n\t\t}\n\t\tif nozero {\n\t\t\treturn sizeBoolValueNoZero, appendBoolValueNoZero\n\t\t}\n\t\treturn sizeBoolValue, appendBoolValue\n\tcase reflect.Uint32:\n\t\tswitch encoding {\n\t\tcase \"fixed32\":\n\t\t\tif pointer {\n\t\t\t\treturn sizeFixed32Ptr, appendFixed32Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\tif packed {\n\t\t\t\t\treturn sizeFixed32PackedSlice, appendFixed32PackedSlice\n\t\t\t\t}\n\t\t\t\treturn sizeFixed32Slice, appendFixed32Slice\n\t\t\t}\n\t\t\tif nozero {\n\t\t\t\treturn sizeFixed32ValueNoZero, appendFixed32ValueNoZero\n\t\t\t}\n\t\t\treturn sizeFixed32Value, appendFixed32Value\n\t\tcase \"varint\":\n\t\t\tif pointer {\n\t\t\t\treturn sizeVarint32Ptr, appendVarint32Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\tif packed {\n\t\t\t\t\treturn sizeVarint32PackedSlice, appendVarint32PackedSlice\n\t\t\t\t}\n\t\t\t\treturn sizeVarint32Slice, appendVarint32Slice\n\t\t\t}\n\t\t\tif nozero {\n\t\t\t\treturn sizeVarint32ValueNoZero, appendVarint32ValueNoZero\n\t\t\t}\n\t\t\treturn sizeVarint32Value, appendVarint32Value\n\t\t}\n\tcase reflect.Int32:\n\t\tswitch encoding {\n\t\tcase \"fixed32\":\n\t\t\tif pointer {\n\t\t\t\treturn sizeFixedS32Ptr, appendFixedS32Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\tif packed {\n\t\t\t\t\treturn sizeFixedS32PackedSlice, appendFixedS32PackedSlice\n\t\t\t\t}\n\t\t\t\treturn sizeFixedS32Slice, appendFixedS32Slice\n\t\t\t}\n\t\t\tif nozero {\n\t\t\t\treturn sizeFixedS32ValueNoZero, appendFixedS32ValueNoZero\n\t\t\t}\n\t\t\treturn sizeFixedS32Value, appendFixedS32Value\n\t\tcase \"varint\":\n\t\t\tif pointer {\n\t\t\t\treturn sizeVarintS32Ptr, appendVarintS32Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\tif packed {\n\t\t\t\t\treturn sizeVarintS32PackedSlice, appendVarintS32PackedSlice\n\t\t\t\t}\n\t\t\t\treturn sizeVarintS32Slice, appendVarintS32Slice\n\t\t\t}\n\t\t\tif nozero {\n\t\t\t\treturn sizeVarintS32ValueNoZero, appendVarintS32ValueNoZero\n\t\t\t}\n\t\t\treturn sizeVarintS32Value, appendVarintS32Value\n\t\tcase \"zigzag32\":\n\t\t\tif pointer {\n\t\t\t\treturn sizeZigzag32Ptr, appendZigzag32Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\tif packed {\n\t\t\t\t\treturn sizeZigzag32PackedSlice, appendZigzag32PackedSlice\n\t\t\t\t}\n\t\t\t\treturn sizeZigzag32Slice, appendZigzag32Slice\n\t\t\t}\n\t\t\tif nozero {\n\t\t\t\treturn sizeZigzag32ValueNoZero, appendZigzag32ValueNoZero\n\t\t\t}\n\t\t\treturn sizeZigzag32Value, appendZigzag32Value\n\t\t}\n\tcase reflect.Uint64:\n\t\tswitch encoding {\n\t\tcase \"fixed64\":\n\t\t\tif pointer {\n\t\t\t\treturn sizeFixed64Ptr, appendFixed64Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\tif packed {\n\t\t\t\t\treturn sizeFixed64PackedSlice, appendFixed64PackedSlice\n\t\t\t\t}\n\t\t\t\treturn sizeFixed64Slice, appendFixed64Slice\n\t\t\t}\n\t\t\tif nozero {\n\t\t\t\treturn sizeFixed64ValueNoZero, appendFixed64ValueNoZero\n\t\t\t}\n\t\t\treturn sizeFixed64Value, appendFixed64Value\n\t\tcase \"varint\":\n\t\t\tif pointer {\n\t\t\t\treturn sizeVarint64Ptr, appendVarint64Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\tif packed {\n\t\t\t\t\treturn sizeVarint64PackedSlice, appendVarint64PackedSlice\n\t\t\t\t}\n\t\t\t\treturn sizeVarint64Slice, appendVarint64Slice\n\t\t\t}\n\t\t\tif nozero {\n\t\t\t\treturn sizeVarint64ValueNoZero, appendVarint64ValueNoZero\n\t\t\t}\n\t\t\treturn sizeVarint64Value, appendVarint64Value\n\t\t}\n\tcase reflect.Int64:\n\t\tswitch encoding {\n\t\tcase \"fixed64\":\n\t\t\tif pointer {\n\t\t\t\treturn sizeFixedS64Ptr, appendFixedS64Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\tif packed {\n\t\t\t\t\treturn sizeFixedS64PackedSlice, appendFixedS64PackedSlice\n\t\t\t\t}\n\t\t\t\treturn sizeFixedS64Slice, appendFixedS64Slice\n\t\t\t}\n\t\t\tif nozero {\n\t\t\t\treturn sizeFixedS64ValueNoZero, appendFixedS64ValueNoZero\n\t\t\t}\n\t\t\treturn sizeFixedS64Value, appendFixedS64Value\n\t\tcase \"varint\":\n\t\t\tif pointer {\n\t\t\t\treturn sizeVarintS64Ptr, appendVarintS64Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\tif packed {\n\t\t\t\t\treturn sizeVarintS64PackedSlice, appendVarintS64PackedSlice\n\t\t\t\t}\n\t\t\t\treturn sizeVarintS64Slice, appendVarintS64Slice\n\t\t\t}\n\t\t\tif nozero {\n\t\t\t\treturn sizeVarintS64ValueNoZero, appendVarintS64ValueNoZero\n\t\t\t}\n\t\t\treturn sizeVarintS64Value, appendVarintS64Value\n\t\tcase \"zigzag64\":\n\t\t\tif pointer {\n\t\t\t\treturn sizeZigzag64Ptr, appendZigzag64Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\tif packed {\n\t\t\t\t\treturn sizeZigzag64PackedSlice, appendZigzag64PackedSlice\n\t\t\t\t}\n\t\t\t\treturn sizeZigzag64Slice, appendZigzag64Slice\n\t\t\t}\n\t\t\tif nozero {\n\t\t\t\treturn sizeZigzag64ValueNoZero, appendZigzag64ValueNoZero\n\t\t\t}\n\t\t\treturn sizeZigzag64Value, appendZigzag64Value\n\t\t}\n\tcase reflect.Float32:\n\t\tif pointer {\n\t\t\treturn sizeFloat32Ptr, appendFloat32Ptr\n\t\t}\n\t\tif slice {\n\t\t\tif packed {\n\t\t\t\treturn sizeFloat32PackedSlice, appendFloat32PackedSlice\n\t\t\t}\n\t\t\treturn sizeFloat32Slice, appendFloat32Slice\n\t\t}\n\t\tif nozero {\n\t\t\treturn sizeFloat32ValueNoZero, appendFloat32ValueNoZero\n\t\t}\n\t\treturn sizeFloat32Value, appendFloat32Value\n\tcase reflect.Float64:\n\t\tif pointer {\n\t\t\treturn sizeFloat64Ptr, appendFloat64Ptr\n\t\t}\n\t\tif slice {\n\t\t\tif packed {\n\t\t\t\treturn sizeFloat64PackedSlice, appendFloat64PackedSlice\n\t\t\t}\n\t\t\treturn sizeFloat64Slice, appendFloat64Slice\n\t\t}\n\t\tif nozero {\n\t\t\treturn sizeFloat64ValueNoZero, appendFloat64ValueNoZero\n\t\t}\n\t\treturn sizeFloat64Value, appendFloat64Value\n\tcase reflect.String:\n\t\tif validateUTF8 {\n\t\t\tif pointer {\n\t\t\t\treturn sizeStringPtr, appendUTF8StringPtr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn sizeStringSlice, appendUTF8StringSlice\n\t\t\t}\n\t\t\tif nozero {\n\t\t\t\treturn sizeStringValueNoZero, appendUTF8StringValueNoZero\n\t\t\t}\n\t\t\treturn sizeStringValue, appendUTF8StringValue\n\t\t}\n\t\tif pointer {\n\t\t\treturn sizeStringPtr, appendStringPtr\n\t\t}\n\t\tif slice {\n\t\t\treturn sizeStringSlice, appendStringSlice\n\t\t}\n\t\tif nozero {\n\t\t\treturn sizeStringValueNoZero, appendStringValueNoZero\n\t\t}\n\t\treturn sizeStringValue, appendStringValue\n\tcase reflect.Slice:\n\t\tif slice {\n\t\t\treturn sizeBytesSlice, appendBytesSlice\n\t\t}\n\t\tif oneof {\n\t\t\t// Oneof bytes field may also have \"proto3\" tag.\n\t\t\t// We want to marshal it as a oneof field. Do this\n\t\t\t// check before the proto3 check.\n\t\t\treturn sizeBytesOneof, appendBytesOneof\n\t\t}\n\t\tif proto3 {\n\t\t\treturn sizeBytes3, appendBytes3\n\t\t}\n\t\treturn sizeBytes, appendBytes\n\tcase reflect.Struct:\n\t\tswitch encoding {\n\t\tcase \"group\":\n\t\t\tif slice {\n\t\t\t\treturn makeGroupSliceMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t\treturn makeGroupMarshaler(getMarshalInfo(t))\n\t\tcase \"bytes\":\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeMessageSliceMarshaler(getMarshalInfo(t))\n\t\t\t\t}\n\t\t\t\treturn makeMessageMarshaler(getMarshalInfo(t))\n\t\t\t} else {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeMessageRefSliceMarshaler(getMarshalInfo(t))\n\t\t\t\t}\n\t\t\t\treturn makeMessageRefMarshaler(getMarshalInfo(t))\n\t\t\t}\n\t\t}\n\t}\n\tpanic(fmt.Sprintf(\"unknown or mismatched type: type: %v, wire type: %v\", t, encoding))\n}\n\n// Below are functions to size/marshal a specific type of a field.\n// They are stored in the field's info, and called by function pointers.\n// They have type sizer or marshaler.\n\nfunc sizeFixed32Value(_ pointer, tagsize int) int {\n\treturn 4 + tagsize\n}\nfunc sizeFixed32ValueNoZero(ptr pointer, tagsize int) int {\n\tv := *ptr.toUint32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn 4 + tagsize\n}\nfunc sizeFixed32Ptr(ptr pointer, tagsize int) int {\n\tp := *ptr.toUint32Ptr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\treturn 4 + tagsize\n}\nfunc sizeFixed32Slice(ptr pointer, tagsize int) int {\n\ts := *ptr.toUint32Slice()\n\treturn (4 + tagsize) * len(s)\n}\nfunc sizeFixed32PackedSlice(ptr pointer, tagsize int) int {\n\ts := *ptr.toUint32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\treturn 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize\n}\nfunc sizeFixedS32Value(_ pointer, tagsize int) int {\n\treturn 4 + tagsize\n}\nfunc sizeFixedS32ValueNoZero(ptr pointer, tagsize int) int {\n\tv := *ptr.toInt32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn 4 + tagsize\n}\nfunc sizeFixedS32Ptr(ptr pointer, tagsize int) int {\n\tp := ptr.getInt32Ptr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\treturn 4 + tagsize\n}\nfunc sizeFixedS32Slice(ptr pointer, tagsize int) int {\n\ts := ptr.getInt32Slice()\n\treturn (4 + tagsize) * len(s)\n}\nfunc sizeFixedS32PackedSlice(ptr pointer, tagsize int) int {\n\ts := ptr.getInt32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\treturn 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize\n}\nfunc sizeFloat32Value(_ pointer, tagsize int) int {\n\treturn 4 + tagsize\n}\nfunc sizeFloat32ValueNoZero(ptr pointer, tagsize int) int {\n\tv := math.Float32bits(*ptr.toFloat32())\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn 4 + tagsize\n}\nfunc sizeFloat32Ptr(ptr pointer, tagsize int) int {\n\tp := *ptr.toFloat32Ptr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\treturn 4 + tagsize\n}\nfunc sizeFloat32Slice(ptr pointer, tagsize int) int {\n\ts := *ptr.toFloat32Slice()\n\treturn (4 + tagsize) * len(s)\n}\nfunc sizeFloat32PackedSlice(ptr pointer, tagsize int) int {\n\ts := *ptr.toFloat32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\treturn 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize\n}\nfunc sizeFixed64Value(_ pointer, tagsize int) int {\n\treturn 8 + tagsize\n}\nfunc sizeFixed64ValueNoZero(ptr pointer, tagsize int) int {\n\tv := *ptr.toUint64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn 8 + tagsize\n}\nfunc sizeFixed64Ptr(ptr pointer, tagsize int) int {\n\tp := *ptr.toUint64Ptr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\treturn 8 + tagsize\n}\nfunc sizeFixed64Slice(ptr pointer, tagsize int) int {\n\ts := *ptr.toUint64Slice()\n\treturn (8 + tagsize) * len(s)\n}\nfunc sizeFixed64PackedSlice(ptr pointer, tagsize int) int {\n\ts := *ptr.toUint64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\treturn 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize\n}\nfunc sizeFixedS64Value(_ pointer, tagsize int) int {\n\treturn 8 + tagsize\n}\nfunc sizeFixedS64ValueNoZero(ptr pointer, tagsize int) int {\n\tv := *ptr.toInt64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn 8 + tagsize\n}\nfunc sizeFixedS64Ptr(ptr pointer, tagsize int) int {\n\tp := *ptr.toInt64Ptr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\treturn 8 + tagsize\n}\nfunc sizeFixedS64Slice(ptr pointer, tagsize int) int {\n\ts := *ptr.toInt64Slice()\n\treturn (8 + tagsize) * len(s)\n}\nfunc sizeFixedS64PackedSlice(ptr pointer, tagsize int) int {\n\ts := *ptr.toInt64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\treturn 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize\n}\nfunc sizeFloat64Value(_ pointer, tagsize int) int {\n\treturn 8 + tagsize\n}\nfunc sizeFloat64ValueNoZero(ptr pointer, tagsize int) int {\n\tv := math.Float64bits(*ptr.toFloat64())\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn 8 + tagsize\n}\nfunc sizeFloat64Ptr(ptr pointer, tagsize int) int {\n\tp := *ptr.toFloat64Ptr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\treturn 8 + tagsize\n}\nfunc sizeFloat64Slice(ptr pointer, tagsize int) int {\n\ts := *ptr.toFloat64Slice()\n\treturn (8 + tagsize) * len(s)\n}\nfunc sizeFloat64PackedSlice(ptr pointer, tagsize int) int {\n\ts := *ptr.toFloat64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\treturn 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize\n}\nfunc sizeVarint32Value(ptr pointer, tagsize int) int {\n\tv := *ptr.toUint32()\n\treturn SizeVarint(uint64(v)) + tagsize\n}\nfunc sizeVarint32ValueNoZero(ptr pointer, tagsize int) int {\n\tv := *ptr.toUint32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn SizeVarint(uint64(v)) + tagsize\n}\nfunc sizeVarint32Ptr(ptr pointer, tagsize int) int {\n\tp := *ptr.toUint32Ptr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\treturn SizeVarint(uint64(*p)) + tagsize\n}\nfunc sizeVarint32Slice(ptr pointer, tagsize int) int {\n\ts := *ptr.toUint32Slice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64(v)) + tagsize\n\t}\n\treturn n\n}\nfunc sizeVarint32PackedSlice(ptr pointer, tagsize int) int {\n\ts := *ptr.toUint32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64(v))\n\t}\n\treturn n + SizeVarint(uint64(n)) + tagsize\n}\nfunc sizeVarintS32Value(ptr pointer, tagsize int) int {\n\tv := *ptr.toInt32()\n\treturn SizeVarint(uint64(v)) + tagsize\n}\nfunc sizeVarintS32ValueNoZero(ptr pointer, tagsize int) int {\n\tv := *ptr.toInt32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn SizeVarint(uint64(v)) + tagsize\n}\nfunc sizeVarintS32Ptr(ptr pointer, tagsize int) int {\n\tp := ptr.getInt32Ptr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\treturn SizeVarint(uint64(*p)) + tagsize\n}\nfunc sizeVarintS32Slice(ptr pointer, tagsize int) int {\n\ts := ptr.getInt32Slice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64(v)) + tagsize\n\t}\n\treturn n\n}\nfunc sizeVarintS32PackedSlice(ptr pointer, tagsize int) int {\n\ts := ptr.getInt32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64(v))\n\t}\n\treturn n + SizeVarint(uint64(n)) + tagsize\n}\nfunc sizeVarint64Value(ptr pointer, tagsize int) int {\n\tv := *ptr.toUint64()\n\treturn SizeVarint(v) + tagsize\n}\nfunc sizeVarint64ValueNoZero(ptr pointer, tagsize int) int {\n\tv := *ptr.toUint64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn SizeVarint(v) + tagsize\n}\nfunc sizeVarint64Ptr(ptr pointer, tagsize int) int {\n\tp := *ptr.toUint64Ptr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\treturn SizeVarint(*p) + tagsize\n}\nfunc sizeVarint64Slice(ptr pointer, tagsize int) int {\n\ts := *ptr.toUint64Slice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(v) + tagsize\n\t}\n\treturn n\n}\nfunc sizeVarint64PackedSlice(ptr pointer, tagsize int) int {\n\ts := *ptr.toUint64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(v)\n\t}\n\treturn n + SizeVarint(uint64(n)) + tagsize\n}\nfunc sizeVarintS64Value(ptr pointer, tagsize int) int {\n\tv := *ptr.toInt64()\n\treturn SizeVarint(uint64(v)) + tagsize\n}\nfunc sizeVarintS64ValueNoZero(ptr pointer, tagsize int) int {\n\tv := *ptr.toInt64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn SizeVarint(uint64(v)) + tagsize\n}\nfunc sizeVarintS64Ptr(ptr pointer, tagsize int) int {\n\tp := *ptr.toInt64Ptr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\treturn SizeVarint(uint64(*p)) + tagsize\n}\nfunc sizeVarintS64Slice(ptr pointer, tagsize int) int {\n\ts := *ptr.toInt64Slice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64(v)) + tagsize\n\t}\n\treturn n\n}\nfunc sizeVarintS64PackedSlice(ptr pointer, tagsize int) int {\n\ts := *ptr.toInt64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64(v))\n\t}\n\treturn n + SizeVarint(uint64(n)) + tagsize\n}\nfunc sizeZigzag32Value(ptr pointer, tagsize int) int {\n\tv := *ptr.toInt32()\n\treturn SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize\n}\nfunc sizeZigzag32ValueNoZero(ptr pointer, tagsize int) int {\n\tv := *ptr.toInt32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize\n}\nfunc sizeZigzag32Ptr(ptr pointer, tagsize int) int {\n\tp := ptr.getInt32Ptr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\tv := *p\n\treturn SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize\n}\nfunc sizeZigzag32Slice(ptr pointer, tagsize int) int {\n\ts := ptr.getInt32Slice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize\n\t}\n\treturn n\n}\nfunc sizeZigzag32PackedSlice(ptr pointer, tagsize int) int {\n\ts := ptr.getInt32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64((uint32(v) << 1) ^ uint32((int32(v) >> 31))))\n\t}\n\treturn n + SizeVarint(uint64(n)) + tagsize\n}\nfunc sizeZigzag64Value(ptr pointer, tagsize int) int {\n\tv := *ptr.toInt64()\n\treturn SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize\n}\nfunc sizeZigzag64ValueNoZero(ptr pointer, tagsize int) int {\n\tv := *ptr.toInt64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize\n}\nfunc sizeZigzag64Ptr(ptr pointer, tagsize int) int {\n\tp := *ptr.toInt64Ptr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\tv := *p\n\treturn SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize\n}\nfunc sizeZigzag64Slice(ptr pointer, tagsize int) int {\n\ts := *ptr.toInt64Slice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize\n\t}\n\treturn n\n}\nfunc sizeZigzag64PackedSlice(ptr pointer, tagsize int) int {\n\ts := *ptr.toInt64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64(v<<1) ^ uint64((int64(v) >> 63)))\n\t}\n\treturn n + SizeVarint(uint64(n)) + tagsize\n}\nfunc sizeBoolValue(_ pointer, tagsize int) int {\n\treturn 1 + tagsize\n}\nfunc sizeBoolValueNoZero(ptr pointer, tagsize int) int {\n\tv := *ptr.toBool()\n\tif !v {\n\t\treturn 0\n\t}\n\treturn 1 + tagsize\n}\nfunc sizeBoolPtr(ptr pointer, tagsize int) int {\n\tp := *ptr.toBoolPtr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\treturn 1 + tagsize\n}\nfunc sizeBoolSlice(ptr pointer, tagsize int) int {\n\ts := *ptr.toBoolSlice()\n\treturn (1 + tagsize) * len(s)\n}\nfunc sizeBoolPackedSlice(ptr pointer, tagsize int) int {\n\ts := *ptr.toBoolSlice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\treturn len(s) + SizeVarint(uint64(len(s))) + tagsize\n}\nfunc sizeStringValue(ptr pointer, tagsize int) int {\n\tv := *ptr.toString()\n\treturn len(v) + SizeVarint(uint64(len(v))) + tagsize\n}\nfunc sizeStringValueNoZero(ptr pointer, tagsize int) int {\n\tv := *ptr.toString()\n\tif v == \"\" {\n\t\treturn 0\n\t}\n\treturn len(v) + SizeVarint(uint64(len(v))) + tagsize\n}\nfunc sizeStringPtr(ptr pointer, tagsize int) int {\n\tp := *ptr.toStringPtr()\n\tif p == nil {\n\t\treturn 0\n\t}\n\tv := *p\n\treturn len(v) + SizeVarint(uint64(len(v))) + tagsize\n}\nfunc sizeStringSlice(ptr pointer, tagsize int) int {\n\ts := *ptr.toStringSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += len(v) + SizeVarint(uint64(len(v))) + tagsize\n\t}\n\treturn n\n}\nfunc sizeBytes(ptr pointer, tagsize int) int {\n\tv := *ptr.toBytes()\n\tif v == nil {\n\t\treturn 0\n\t}\n\treturn len(v) + SizeVarint(uint64(len(v))) + tagsize\n}\nfunc sizeBytes3(ptr pointer, tagsize int) int {\n\tv := *ptr.toBytes()\n\tif len(v) == 0 {\n\t\treturn 0\n\t}\n\treturn len(v) + SizeVarint(uint64(len(v))) + tagsize\n}\nfunc sizeBytesOneof(ptr pointer, tagsize int) int {\n\tv := *ptr.toBytes()\n\treturn len(v) + SizeVarint(uint64(len(v))) + tagsize\n}\nfunc sizeBytesSlice(ptr pointer, tagsize int) int {\n\ts := *ptr.toBytesSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += len(v) + SizeVarint(uint64(len(v))) + tagsize\n\t}\n\treturn n\n}\n\n// appendFixed32 appends an encoded fixed32 to b.\nfunc appendFixed32(b []byte, v uint32) []byte {\n\tb = append(b,\n\t\tbyte(v),\n\t\tbyte(v>>8),\n\t\tbyte(v>>16),\n\t\tbyte(v>>24))\n\treturn b\n}\n\n// appendFixed64 appends an encoded fixed64 to b.\nfunc appendFixed64(b []byte, v uint64) []byte {\n\tb = append(b,\n\t\tbyte(v),\n\t\tbyte(v>>8),\n\t\tbyte(v>>16),\n\t\tbyte(v>>24),\n\t\tbyte(v>>32),\n\t\tbyte(v>>40),\n\t\tbyte(v>>48),\n\t\tbyte(v>>56))\n\treturn b\n}\n\n// appendVarint appends an encoded varint to b.\nfunc appendVarint(b []byte, v uint64) []byte {\n\t// TODO: make 1-byte (maybe 2-byte) case inline-able, once we\n\t// have non-leaf inliner.\n\tswitch {\n\tcase v < 1<<7:\n\t\tb = append(b, byte(v))\n\tcase v < 1<<14:\n\t\tb = append(b,\n\t\t\tbyte(v&0x7f|0x80),\n\t\t\tbyte(v>>7))\n\tcase v < 1<<21:\n\t\tb = append(b,\n\t\t\tbyte(v&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte(v>>14))\n\tcase v < 1<<28:\n\t\tb = append(b,\n\t\t\tbyte(v&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte(v>>21))\n\tcase v < 1<<35:\n\t\tb = append(b,\n\t\t\tbyte(v&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte(v>>28))\n\tcase v < 1<<42:\n\t\tb = append(b,\n\t\t\tbyte(v&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte(v>>35))\n\tcase v < 1<<49:\n\t\tb = append(b,\n\t\t\tbyte(v&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte(v>>42))\n\tcase v < 1<<56:\n\t\tb = append(b,\n\t\t\tbyte(v&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte((v>>42)&0x7f|0x80),\n\t\t\tbyte(v>>49))\n\tcase v < 1<<63:\n\t\tb = append(b,\n\t\t\tbyte(v&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte((v>>42)&0x7f|0x80),\n\t\t\tbyte((v>>49)&0x7f|0x80),\n\t\t\tbyte(v>>56))\n\tdefault:\n\t\tb = append(b,\n\t\t\tbyte(v&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte((v>>42)&0x7f|0x80),\n\t\t\tbyte((v>>49)&0x7f|0x80),\n\t\t\tbyte((v>>56)&0x7f|0x80),\n\t\t\t1)\n\t}\n\treturn b\n}\n\nfunc appendFixed32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toUint32()\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed32(b, v)\n\treturn b, nil\n}\nfunc appendFixed32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toUint32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed32(b, v)\n\treturn b, nil\n}\nfunc appendFixed32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := *ptr.toUint32Ptr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed32(b, *p)\n\treturn b, nil\n}\nfunc appendFixed32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toUint32Slice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendFixed32(b, v)\n\t}\n\treturn b, nil\n}\nfunc appendFixed32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toUint32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag&^7|WireBytes)\n\tb = appendVarint(b, uint64(4*len(s)))\n\tfor _, v := range s {\n\t\tb = appendFixed32(b, v)\n\t}\n\treturn b, nil\n}\nfunc appendFixedS32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toInt32()\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed32(b, uint32(v))\n\treturn b, nil\n}\nfunc appendFixedS32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toInt32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed32(b, uint32(v))\n\treturn b, nil\n}\nfunc appendFixedS32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := ptr.getInt32Ptr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed32(b, uint32(*p))\n\treturn b, nil\n}\nfunc appendFixedS32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := ptr.getInt32Slice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendFixed32(b, uint32(v))\n\t}\n\treturn b, nil\n}\nfunc appendFixedS32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := ptr.getInt32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag&^7|WireBytes)\n\tb = appendVarint(b, uint64(4*len(s)))\n\tfor _, v := range s {\n\t\tb = appendFixed32(b, uint32(v))\n\t}\n\treturn b, nil\n}\nfunc appendFloat32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := math.Float32bits(*ptr.toFloat32())\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed32(b, v)\n\treturn b, nil\n}\nfunc appendFloat32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := math.Float32bits(*ptr.toFloat32())\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed32(b, v)\n\treturn b, nil\n}\nfunc appendFloat32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := *ptr.toFloat32Ptr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed32(b, math.Float32bits(*p))\n\treturn b, nil\n}\nfunc appendFloat32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toFloat32Slice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendFixed32(b, math.Float32bits(v))\n\t}\n\treturn b, nil\n}\nfunc appendFloat32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toFloat32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag&^7|WireBytes)\n\tb = appendVarint(b, uint64(4*len(s)))\n\tfor _, v := range s {\n\t\tb = appendFixed32(b, math.Float32bits(v))\n\t}\n\treturn b, nil\n}\nfunc appendFixed64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toUint64()\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed64(b, v)\n\treturn b, nil\n}\nfunc appendFixed64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toUint64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed64(b, v)\n\treturn b, nil\n}\nfunc appendFixed64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := *ptr.toUint64Ptr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed64(b, *p)\n\treturn b, nil\n}\nfunc appendFixed64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toUint64Slice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendFixed64(b, v)\n\t}\n\treturn b, nil\n}\nfunc appendFixed64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toUint64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag&^7|WireBytes)\n\tb = appendVarint(b, uint64(8*len(s)))\n\tfor _, v := range s {\n\t\tb = appendFixed64(b, v)\n\t}\n\treturn b, nil\n}\nfunc appendFixedS64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toInt64()\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed64(b, uint64(v))\n\treturn b, nil\n}\nfunc appendFixedS64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toInt64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed64(b, uint64(v))\n\treturn b, nil\n}\nfunc appendFixedS64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := *ptr.toInt64Ptr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed64(b, uint64(*p))\n\treturn b, nil\n}\nfunc appendFixedS64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toInt64Slice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendFixed64(b, uint64(v))\n\t}\n\treturn b, nil\n}\nfunc appendFixedS64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toInt64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag&^7|WireBytes)\n\tb = appendVarint(b, uint64(8*len(s)))\n\tfor _, v := range s {\n\t\tb = appendFixed64(b, uint64(v))\n\t}\n\treturn b, nil\n}\nfunc appendFloat64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := math.Float64bits(*ptr.toFloat64())\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed64(b, v)\n\treturn b, nil\n}\nfunc appendFloat64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := math.Float64bits(*ptr.toFloat64())\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed64(b, v)\n\treturn b, nil\n}\nfunc appendFloat64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := *ptr.toFloat64Ptr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendFixed64(b, math.Float64bits(*p))\n\treturn b, nil\n}\nfunc appendFloat64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toFloat64Slice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendFixed64(b, math.Float64bits(v))\n\t}\n\treturn b, nil\n}\nfunc appendFloat64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toFloat64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag&^7|WireBytes)\n\tb = appendVarint(b, uint64(8*len(s)))\n\tfor _, v := range s {\n\t\tb = appendFixed64(b, math.Float64bits(v))\n\t}\n\treturn b, nil\n}\nfunc appendVarint32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toUint32()\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(v))\n\treturn b, nil\n}\nfunc appendVarint32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toUint32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(v))\n\treturn b, nil\n}\nfunc appendVarint32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := *ptr.toUint32Ptr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(*p))\n\treturn b, nil\n}\nfunc appendVarint32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toUint32Slice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\nfunc appendVarint32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toUint32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag&^7|WireBytes)\n\t// compute size\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64(v))\n\t}\n\tb = appendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = appendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\nfunc appendVarintS32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toInt32()\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(v))\n\treturn b, nil\n}\nfunc appendVarintS32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toInt32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(v))\n\treturn b, nil\n}\nfunc appendVarintS32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := ptr.getInt32Ptr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(*p))\n\treturn b, nil\n}\nfunc appendVarintS32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := ptr.getInt32Slice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\nfunc appendVarintS32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := ptr.getInt32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag&^7|WireBytes)\n\t// compute size\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64(v))\n\t}\n\tb = appendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = appendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\nfunc appendVarint64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toUint64()\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, v)\n\treturn b, nil\n}\nfunc appendVarint64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toUint64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, v)\n\treturn b, nil\n}\nfunc appendVarint64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := *ptr.toUint64Ptr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, *p)\n\treturn b, nil\n}\nfunc appendVarint64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toUint64Slice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendVarint(b, v)\n\t}\n\treturn b, nil\n}\nfunc appendVarint64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toUint64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag&^7|WireBytes)\n\t// compute size\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(v)\n\t}\n\tb = appendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = appendVarint(b, v)\n\t}\n\treturn b, nil\n}\nfunc appendVarintS64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toInt64()\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(v))\n\treturn b, nil\n}\nfunc appendVarintS64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toInt64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(v))\n\treturn b, nil\n}\nfunc appendVarintS64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := *ptr.toInt64Ptr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(*p))\n\treturn b, nil\n}\nfunc appendVarintS64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toInt64Slice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\nfunc appendVarintS64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toInt64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag&^7|WireBytes)\n\t// compute size\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64(v))\n\t}\n\tb = appendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = appendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\nfunc appendZigzag32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toInt32()\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))\n\treturn b, nil\n}\nfunc appendZigzag32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toInt32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))\n\treturn b, nil\n}\nfunc appendZigzag32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := ptr.getInt32Ptr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tv := *p\n\tb = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))\n\treturn b, nil\n}\nfunc appendZigzag32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := ptr.getInt32Slice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))\n\t}\n\treturn b, nil\n}\nfunc appendZigzag32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := ptr.getInt32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag&^7|WireBytes)\n\t// compute size\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64((uint32(v) << 1) ^ uint32((int32(v) >> 31))))\n\t}\n\tb = appendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))\n\t}\n\treturn b, nil\n}\nfunc appendZigzag64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toInt64()\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))\n\treturn b, nil\n}\nfunc appendZigzag64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toInt64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))\n\treturn b, nil\n}\nfunc appendZigzag64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := *ptr.toInt64Ptr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tv := *p\n\tb = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))\n\treturn b, nil\n}\nfunc appendZigzag64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toInt64Slice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))\n\t}\n\treturn b, nil\n}\nfunc appendZigzag64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toInt64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag&^7|WireBytes)\n\t// compute size\n\tn := 0\n\tfor _, v := range s {\n\t\tn += SizeVarint(uint64(v<<1) ^ uint64((int64(v) >> 63)))\n\t}\n\tb = appendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))\n\t}\n\treturn b, nil\n}\nfunc appendBoolValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toBool()\n\tb = appendVarint(b, wiretag)\n\tif v {\n\t\tb = append(b, 1)\n\t} else {\n\t\tb = append(b, 0)\n\t}\n\treturn b, nil\n}\nfunc appendBoolValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toBool()\n\tif !v {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = append(b, 1)\n\treturn b, nil\n}\n\nfunc appendBoolPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := *ptr.toBoolPtr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tif *p {\n\t\tb = append(b, 1)\n\t} else {\n\t\tb = append(b, 0)\n\t}\n\treturn b, nil\n}\nfunc appendBoolSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toBoolSlice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tif v {\n\t\t\tb = append(b, 1)\n\t\t} else {\n\t\t\tb = append(b, 0)\n\t\t}\n\t}\n\treturn b, nil\n}\nfunc appendBoolPackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toBoolSlice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag&^7|WireBytes)\n\tb = appendVarint(b, uint64(len(s)))\n\tfor _, v := range s {\n\t\tif v {\n\t\t\tb = append(b, 1)\n\t\t} else {\n\t\t\tb = append(b, 0)\n\t\t}\n\t}\n\treturn b, nil\n}\nfunc appendStringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toString()\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(len(v)))\n\tb = append(b, v...)\n\treturn b, nil\n}\nfunc appendStringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toString()\n\tif v == \"\" {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(len(v)))\n\tb = append(b, v...)\n\treturn b, nil\n}\nfunc appendStringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tp := *ptr.toStringPtr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tv := *p\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(len(v)))\n\tb = append(b, v...)\n\treturn b, nil\n}\nfunc appendStringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toStringSlice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendVarint(b, uint64(len(v)))\n\t\tb = append(b, v...)\n\t}\n\treturn b, nil\n}\nfunc appendUTF8StringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tvar invalidUTF8 bool\n\tv := *ptr.toString()\n\tif !utf8.ValidString(v) {\n\t\tinvalidUTF8 = true\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(len(v)))\n\tb = append(b, v...)\n\tif invalidUTF8 {\n\t\treturn b, errInvalidUTF8\n\t}\n\treturn b, nil\n}\nfunc appendUTF8StringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tvar invalidUTF8 bool\n\tv := *ptr.toString()\n\tif v == \"\" {\n\t\treturn b, nil\n\t}\n\tif !utf8.ValidString(v) {\n\t\tinvalidUTF8 = true\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(len(v)))\n\tb = append(b, v...)\n\tif invalidUTF8 {\n\t\treturn b, errInvalidUTF8\n\t}\n\treturn b, nil\n}\nfunc appendUTF8StringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tvar invalidUTF8 bool\n\tp := *ptr.toStringPtr()\n\tif p == nil {\n\t\treturn b, nil\n\t}\n\tv := *p\n\tif !utf8.ValidString(v) {\n\t\tinvalidUTF8 = true\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(len(v)))\n\tb = append(b, v...)\n\tif invalidUTF8 {\n\t\treturn b, errInvalidUTF8\n\t}\n\treturn b, nil\n}\nfunc appendUTF8StringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tvar invalidUTF8 bool\n\ts := *ptr.toStringSlice()\n\tfor _, v := range s {\n\t\tif !utf8.ValidString(v) {\n\t\t\tinvalidUTF8 = true\n\t\t}\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendVarint(b, uint64(len(v)))\n\t\tb = append(b, v...)\n\t}\n\tif invalidUTF8 {\n\t\treturn b, errInvalidUTF8\n\t}\n\treturn b, nil\n}\nfunc appendBytes(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toBytes()\n\tif v == nil {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(len(v)))\n\tb = append(b, v...)\n\treturn b, nil\n}\nfunc appendBytes3(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toBytes()\n\tif len(v) == 0 {\n\t\treturn b, nil\n\t}\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(len(v)))\n\tb = append(b, v...)\n\treturn b, nil\n}\nfunc appendBytesOneof(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\tv := *ptr.toBytes()\n\tb = appendVarint(b, wiretag)\n\tb = appendVarint(b, uint64(len(v)))\n\tb = append(b, v...)\n\treturn b, nil\n}\nfunc appendBytesSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {\n\ts := *ptr.toBytesSlice()\n\tfor _, v := range s {\n\t\tb = appendVarint(b, wiretag)\n\t\tb = appendVarint(b, uint64(len(v)))\n\t\tb = append(b, v...)\n\t}\n\treturn b, nil\n}\n\n// makeGroupMarshaler returns the sizer and marshaler for a group.\n// u is the marshal info of the underlying message.\nfunc makeGroupMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tp := ptr.getPointer()\n\t\t\tif p.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\treturn u.size(p) + 2*tagsize\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tp := ptr.getPointer()\n\t\t\tif p.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tvar err error\n\t\t\tb = appendVarint(b, wiretag) // start group\n\t\t\tb, err = u.marshal(b, p, deterministic)\n\t\t\tb = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group\n\t\t\treturn b, err\n\t\t}\n}\n\n// makeGroupSliceMarshaler returns the sizer and marshaler for a group slice.\n// u is the marshal info of the underlying message.\nfunc makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getPointerSlice()\n\t\t\tn := 0\n\t\t\tfor _, v := range s {\n\t\t\t\tif v.isNil() {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tn += u.size(v) + 2*tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getPointerSlice()\n\t\t\tvar err error\n\t\t\tvar nerr nonFatal\n\t\t\tfor _, v := range s {\n\t\t\t\tif v.isNil() {\n\t\t\t\t\treturn b, errRepeatedHasNil\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag) // start group\n\t\t\t\tb, err = u.marshal(b, v, deterministic)\n\t\t\t\tb = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group\n\t\t\t\tif !nerr.Merge(err) {\n\t\t\t\t\tif err == ErrNil {\n\t\t\t\t\t\terr = errRepeatedHasNil\n\t\t\t\t\t}\n\t\t\t\t\treturn b, err\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn b, nerr.E\n\t\t}\n}\n\n// makeMessageMarshaler returns the sizer and marshaler for a message field.\n// u is the marshal info of the message.\nfunc makeMessageMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tp := ptr.getPointer()\n\t\t\tif p.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tsiz := u.size(p)\n\t\t\treturn siz + SizeVarint(uint64(siz)) + tagsize\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tp := ptr.getPointer()\n\t\t\tif p.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tsiz := u.cachedsize(p)\n\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\treturn u.marshal(b, p, deterministic)\n\t\t}\n}\n\n// makeMessageSliceMarshaler returns the sizer and marshaler for a message slice.\n// u is the marshal info of the message.\nfunc makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getPointerSlice()\n\t\t\tn := 0\n\t\t\tfor _, v := range s {\n\t\t\t\tif v.isNil() {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tsiz := u.size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getPointerSlice()\n\t\t\tvar err error\n\t\t\tvar nerr nonFatal\n\t\t\tfor _, v := range s {\n\t\t\t\tif v.isNil() {\n\t\t\t\t\treturn b, errRepeatedHasNil\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tsiz := u.cachedsize(v)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb, err = u.marshal(b, v, deterministic)\n\n\t\t\t\tif !nerr.Merge(err) {\n\t\t\t\t\tif err == ErrNil {\n\t\t\t\t\t\terr = errRepeatedHasNil\n\t\t\t\t\t}\n\t\t\t\t\treturn b, err\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn b, nerr.E\n\t\t}\n}\n\n// makeMapMarshaler returns the sizer and marshaler for a map field.\n// f is the pointer to the reflect data structure of the field.\nfunc makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) {\n\t// figure out key and value type\n\tt := f.Type\n\tkeyType := t.Key()\n\tvalType := t.Elem()\n\ttags := strings.Split(f.Tag.Get(\"protobuf\"), \",\")\n\tkeyTags := strings.Split(f.Tag.Get(\"protobuf_key\"), \",\")\n\tvalTags := strings.Split(f.Tag.Get(\"protobuf_val\"), \",\")\n\tstdOptions := false\n\tfor _, t := range tags {\n\t\tif strings.HasPrefix(t, \"customtype=\") {\n\t\t\tvalTags = append(valTags, t)\n\t\t}\n\t\tif t == \"stdtime\" {\n\t\t\tvalTags = append(valTags, t)\n\t\t\tstdOptions = true\n\t\t}\n\t\tif t == \"stdduration\" {\n\t\t\tvalTags = append(valTags, t)\n\t\t\tstdOptions = true\n\t\t}\n\t\tif t == \"wktptr\" {\n\t\t\tvalTags = append(valTags, t)\n\t\t}\n\t}\n\tkeySizer, keyMarshaler := typeMarshaler(keyType, keyTags, false, false) // don't omit zero value in map\n\tvalSizer, valMarshaler := typeMarshaler(valType, valTags, false, false) // don't omit zero value in map\n\tkeyWireTag := 1<<3 | wiretype(keyTags[0])\n\tvalWireTag := 2<<3 | wiretype(valTags[0])\n\n\t// We create an interface to get the addresses of the map key and value.\n\t// If value is pointer-typed, the interface is a direct interface, the\n\t// idata itself is the value. Otherwise, the idata is the pointer to the\n\t// value.\n\t// Key cannot be pointer-typed.\n\tvalIsPtr := valType.Kind() == reflect.Ptr\n\n\t// If value is a message with nested maps, calling\n\t// valSizer in marshal may be quadratic. We should use\n\t// cached version in marshal (but not in size).\n\t// If value is not message type, we don't have size cache,\n\t// but it cannot be nested either. Just use valSizer.\n\tvalCachedSizer := valSizer\n\tif valIsPtr && !stdOptions && valType.Elem().Kind() == reflect.Struct {\n\t\tu := getMarshalInfo(valType.Elem())\n\t\tvalCachedSizer = func(ptr pointer, tagsize int) int {\n\t\t\t// Same as message sizer, but use cache.\n\t\t\tp := ptr.getPointer()\n\t\t\tif p.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tsiz := u.cachedsize(p)\n\t\t\treturn siz + SizeVarint(uint64(siz)) + tagsize\n\t\t}\n\t}\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tm := ptr.asPointerTo(t).Elem() // the map\n\t\t\tn := 0\n\t\t\tfor _, k := range m.MapKeys() {\n\t\t\t\tki := k.Interface()\n\t\t\t\tvi := m.MapIndex(k).Interface()\n\t\t\t\tkaddr := toAddrPointer(&ki, false)             // pointer to key\n\t\t\t\tvaddr := toAddrPointer(&vi, valIsPtr)          // pointer to value\n\t\t\t\tsiz := keySizer(kaddr, 1) + valSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, tag uint64, deterministic bool) ([]byte, error) {\n\t\t\tm := ptr.asPointerTo(t).Elem() // the map\n\t\t\tvar err error\n\t\t\tkeys := m.MapKeys()\n\t\t\tif len(keys) > 1 && deterministic {\n\t\t\t\tsort.Sort(mapKeys(keys))\n\t\t\t}\n\n\t\t\tvar nerr nonFatal\n\t\t\tfor _, k := range keys {\n\t\t\t\tki := k.Interface()\n\t\t\t\tvi := m.MapIndex(k).Interface()\n\t\t\t\tkaddr := toAddrPointer(&ki, false)    // pointer to key\n\t\t\t\tvaddr := toAddrPointer(&vi, valIsPtr) // pointer to value\n\t\t\t\tb = appendVarint(b, tag)\n\t\t\t\tsiz := keySizer(kaddr, 1) + valCachedSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb, err = keyMarshaler(b, kaddr, keyWireTag, deterministic)\n\t\t\t\tif !nerr.Merge(err) {\n\t\t\t\t\treturn b, err\n\t\t\t\t}\n\t\t\t\tb, err = valMarshaler(b, vaddr, valWireTag, deterministic)\n\t\t\t\tif err != ErrNil && !nerr.Merge(err) { // allow nil value in map\n\t\t\t\t\treturn b, err\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn b, nerr.E\n\t\t}\n}\n\n// makeOneOfMarshaler returns the sizer and marshaler for a oneof field.\n// fi is the marshal info of the field.\n// f is the pointer to the reflect data structure of the field.\nfunc makeOneOfMarshaler(fi *marshalFieldInfo, f *reflect.StructField) (sizer, marshaler) {\n\t// Oneof field is an interface. We need to get the actual data type on the fly.\n\tt := f.Type\n\treturn func(ptr pointer, _ int) int {\n\t\t\tp := ptr.getInterfacePointer()\n\t\t\tif p.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tv := ptr.asPointerTo(t).Elem().Elem().Elem() // *interface -> interface -> *struct -> struct\n\t\t\ttelem := v.Type()\n\t\t\te := fi.oneofElems[telem]\n\t\t\treturn e.sizer(p, e.tagsize)\n\t\t},\n\t\tfunc(b []byte, ptr pointer, _ uint64, deterministic bool) ([]byte, error) {\n\t\t\tp := ptr.getInterfacePointer()\n\t\t\tif p.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tv := ptr.asPointerTo(t).Elem().Elem().Elem() // *interface -> interface -> *struct -> struct\n\t\t\ttelem := v.Type()\n\t\t\tif telem.Field(0).Type.Kind() == reflect.Ptr && p.getPointer().isNil() {\n\t\t\t\treturn b, errOneofHasNil\n\t\t\t}\n\t\t\te := fi.oneofElems[telem]\n\t\t\treturn e.marshaler(b, p, e.wiretag, deterministic)\n\t\t}\n}\n\n// sizeExtensions computes the size of encoded data for a XXX_InternalExtensions field.\nfunc (u *marshalInfo) sizeExtensions(ext *XXX_InternalExtensions) int {\n\tm, mu := ext.extensionsRead()\n\tif m == nil {\n\t\treturn 0\n\t}\n\tmu.Lock()\n\n\tn := 0\n\tfor _, e := range m {\n\t\tif e.value == nil || e.desc == nil {\n\t\t\t// Extension is only in its encoded form.\n\t\t\tn += len(e.enc)\n\t\t\tcontinue\n\t\t}\n\n\t\t// We don't skip extensions that have an encoded form set,\n\t\t// because the extension value may have been mutated after\n\t\t// the last time this function was called.\n\t\tei := u.getExtElemInfo(e.desc)\n\t\tv := e.value\n\t\tp := toAddrPointer(&v, ei.isptr)\n\t\tn += ei.sizer(p, ei.tagsize)\n\t}\n\tmu.Unlock()\n\treturn n\n}\n\n// appendExtensions marshals a XXX_InternalExtensions field to the end of byte slice b.\nfunc (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, deterministic bool) ([]byte, error) {\n\tm, mu := ext.extensionsRead()\n\tif m == nil {\n\t\treturn b, nil\n\t}\n\tmu.Lock()\n\tdefer mu.Unlock()\n\n\tvar err error\n\tvar nerr nonFatal\n\n\t// Fast-path for common cases: zero or one extensions.\n\t// Don't bother sorting the keys.\n\tif len(m) <= 1 {\n\t\tfor _, e := range m {\n\t\t\tif e.value == nil || e.desc == nil {\n\t\t\t\t// Extension is only in its encoded form.\n\t\t\t\tb = append(b, e.enc...)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// We don't skip extensions that have an encoded form set,\n\t\t\t// because the extension value may have been mutated after\n\t\t\t// the last time this function was called.\n\n\t\t\tei := u.getExtElemInfo(e.desc)\n\t\t\tv := e.value\n\t\t\tp := toAddrPointer(&v, ei.isptr)\n\t\t\tb, err = ei.marshaler(b, p, ei.wiretag, deterministic)\n\t\t\tif !nerr.Merge(err) {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t}\n\t\treturn b, nerr.E\n\t}\n\n\t// Sort the keys to provide a deterministic encoding.\n\t// Not sure this is required, but the old code does it.\n\tkeys := make([]int, 0, len(m))\n\tfor k := range m {\n\t\tkeys = append(keys, int(k))\n\t}\n\tsort.Ints(keys)\n\n\tfor _, k := range keys {\n\t\te := m[int32(k)]\n\t\tif e.value == nil || e.desc == nil {\n\t\t\t// Extension is only in its encoded form.\n\t\t\tb = append(b, e.enc...)\n\t\t\tcontinue\n\t\t}\n\n\t\t// We don't skip extensions that have an encoded form set,\n\t\t// because the extension value may have been mutated after\n\t\t// the last time this function was called.\n\n\t\tei := u.getExtElemInfo(e.desc)\n\t\tv := e.value\n\t\tp := toAddrPointer(&v, ei.isptr)\n\t\tb, err = ei.marshaler(b, p, ei.wiretag, deterministic)\n\t\tif !nerr.Merge(err) {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nerr.E\n}\n\n// message set format is:\n//   message MessageSet {\n//     repeated group Item = 1 {\n//       required int32 type_id = 2;\n//       required string message = 3;\n//     };\n//   }\n\n// sizeMessageSet computes the size of encoded data for a XXX_InternalExtensions field\n// in message set format (above).\nfunc (u *marshalInfo) sizeMessageSet(ext *XXX_InternalExtensions) int {\n\tm, mu := ext.extensionsRead()\n\tif m == nil {\n\t\treturn 0\n\t}\n\tmu.Lock()\n\n\tn := 0\n\tfor id, e := range m {\n\t\tn += 2                          // start group, end group. tag = 1 (size=1)\n\t\tn += SizeVarint(uint64(id)) + 1 // type_id, tag = 2 (size=1)\n\n\t\tif e.value == nil || e.desc == nil {\n\t\t\t// Extension is only in its encoded form.\n\t\t\tmsgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint\n\t\t\tsiz := len(msgWithLen)\n\t\t\tn += siz + 1 // message, tag = 3 (size=1)\n\t\t\tcontinue\n\t\t}\n\n\t\t// We don't skip extensions that have an encoded form set,\n\t\t// because the extension value may have been mutated after\n\t\t// the last time this function was called.\n\n\t\tei := u.getExtElemInfo(e.desc)\n\t\tv := e.value\n\t\tp := toAddrPointer(&v, ei.isptr)\n\t\tn += ei.sizer(p, 1) // message, tag = 3 (size=1)\n\t}\n\tmu.Unlock()\n\treturn n\n}\n\n// appendMessageSet marshals a XXX_InternalExtensions field in message set format (above)\n// to the end of byte slice b.\nfunc (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, deterministic bool) ([]byte, error) {\n\tm, mu := ext.extensionsRead()\n\tif m == nil {\n\t\treturn b, nil\n\t}\n\tmu.Lock()\n\tdefer mu.Unlock()\n\n\tvar err error\n\tvar nerr nonFatal\n\n\t// Fast-path for common cases: zero or one extensions.\n\t// Don't bother sorting the keys.\n\tif len(m) <= 1 {\n\t\tfor id, e := range m {\n\t\t\tb = append(b, 1<<3|WireStartGroup)\n\t\t\tb = append(b, 2<<3|WireVarint)\n\t\t\tb = appendVarint(b, uint64(id))\n\n\t\t\tif e.value == nil || e.desc == nil {\n\t\t\t\t// Extension is only in its encoded form.\n\t\t\t\tmsgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint\n\t\t\t\tb = append(b, 3<<3|WireBytes)\n\t\t\t\tb = append(b, msgWithLen...)\n\t\t\t\tb = append(b, 1<<3|WireEndGroup)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// We don't skip extensions that have an encoded form set,\n\t\t\t// because the extension value may have been mutated after\n\t\t\t// the last time this function was called.\n\n\t\t\tei := u.getExtElemInfo(e.desc)\n\t\t\tv := e.value\n\t\t\tp := toAddrPointer(&v, ei.isptr)\n\t\t\tb, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic)\n\t\t\tif !nerr.Merge(err) {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t\tb = append(b, 1<<3|WireEndGroup)\n\t\t}\n\t\treturn b, nerr.E\n\t}\n\n\t// Sort the keys to provide a deterministic encoding.\n\tkeys := make([]int, 0, len(m))\n\tfor k := range m {\n\t\tkeys = append(keys, int(k))\n\t}\n\tsort.Ints(keys)\n\n\tfor _, id := range keys {\n\t\te := m[int32(id)]\n\t\tb = append(b, 1<<3|WireStartGroup)\n\t\tb = append(b, 2<<3|WireVarint)\n\t\tb = appendVarint(b, uint64(id))\n\n\t\tif e.value == nil || e.desc == nil {\n\t\t\t// Extension is only in its encoded form.\n\t\t\tmsgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint\n\t\t\tb = append(b, 3<<3|WireBytes)\n\t\t\tb = append(b, msgWithLen...)\n\t\t\tb = append(b, 1<<3|WireEndGroup)\n\t\t\tcontinue\n\t\t}\n\n\t\t// We don't skip extensions that have an encoded form set,\n\t\t// because the extension value may have been mutated after\n\t\t// the last time this function was called.\n\n\t\tei := u.getExtElemInfo(e.desc)\n\t\tv := e.value\n\t\tp := toAddrPointer(&v, ei.isptr)\n\t\tb, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic)\n\t\tb = append(b, 1<<3|WireEndGroup)\n\t\tif !nerr.Merge(err) {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nerr.E\n}\n\n// sizeV1Extensions computes the size of encoded data for a V1-API extension field.\nfunc (u *marshalInfo) sizeV1Extensions(m map[int32]Extension) int {\n\tif m == nil {\n\t\treturn 0\n\t}\n\n\tn := 0\n\tfor _, e := range m {\n\t\tif e.value == nil || e.desc == nil {\n\t\t\t// Extension is only in its encoded form.\n\t\t\tn += len(e.enc)\n\t\t\tcontinue\n\t\t}\n\n\t\t// We don't skip extensions that have an encoded form set,\n\t\t// because the extension value may have been mutated after\n\t\t// the last time this function was called.\n\n\t\tei := u.getExtElemInfo(e.desc)\n\t\tv := e.value\n\t\tp := toAddrPointer(&v, ei.isptr)\n\t\tn += ei.sizer(p, ei.tagsize)\n\t}\n\treturn n\n}\n\n// appendV1Extensions marshals a V1-API extension field to the end of byte slice b.\nfunc (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, deterministic bool) ([]byte, error) {\n\tif m == nil {\n\t\treturn b, nil\n\t}\n\n\t// Sort the keys to provide a deterministic encoding.\n\tkeys := make([]int, 0, len(m))\n\tfor k := range m {\n\t\tkeys = append(keys, int(k))\n\t}\n\tsort.Ints(keys)\n\n\tvar err error\n\tvar nerr nonFatal\n\tfor _, k := range keys {\n\t\te := m[int32(k)]\n\t\tif e.value == nil || e.desc == nil {\n\t\t\t// Extension is only in its encoded form.\n\t\t\tb = append(b, e.enc...)\n\t\t\tcontinue\n\t\t}\n\n\t\t// We don't skip extensions that have an encoded form set,\n\t\t// because the extension value may have been mutated after\n\t\t// the last time this function was called.\n\n\t\tei := u.getExtElemInfo(e.desc)\n\t\tv := e.value\n\t\tp := toAddrPointer(&v, ei.isptr)\n\t\tb, err = ei.marshaler(b, p, ei.wiretag, deterministic)\n\t\tif !nerr.Merge(err) {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nerr.E\n}\n\n// newMarshaler is the interface representing objects that can marshal themselves.\n//\n// This exists to support protoc-gen-go generated messages.\n// The proto package will stop type-asserting to this interface in the future.\n//\n// DO NOT DEPEND ON THIS.\ntype newMarshaler interface {\n\tXXX_Size() int\n\tXXX_Marshal(b []byte, deterministic bool) ([]byte, error)\n}\n\n// Size returns the encoded size of a protocol buffer message.\n// This is the main entry point.\nfunc Size(pb Message) int {\n\tif m, ok := pb.(newMarshaler); ok {\n\t\treturn m.XXX_Size()\n\t}\n\tif m, ok := pb.(Marshaler); ok {\n\t\t// If the message can marshal itself, let it do it, for compatibility.\n\t\t// NOTE: This is not efficient.\n\t\tb, _ := m.Marshal()\n\t\treturn len(b)\n\t}\n\t// in case somehow we didn't generate the wrapper\n\tif pb == nil {\n\t\treturn 0\n\t}\n\tvar info InternalMessageInfo\n\treturn info.Size(pb)\n}\n\n// Marshal takes a protocol buffer message\n// and encodes it into the wire format, returning the data.\n// This is the main entry point.\nfunc Marshal(pb Message) ([]byte, error) {\n\tif m, ok := pb.(newMarshaler); ok {\n\t\tsiz := m.XXX_Size()\n\t\tb := make([]byte, 0, siz)\n\t\treturn m.XXX_Marshal(b, false)\n\t}\n\tif m, ok := pb.(Marshaler); ok {\n\t\t// If the message can marshal itself, let it do it, for compatibility.\n\t\t// NOTE: This is not efficient.\n\t\treturn m.Marshal()\n\t}\n\t// in case somehow we didn't generate the wrapper\n\tif pb == nil {\n\t\treturn nil, ErrNil\n\t}\n\tvar info InternalMessageInfo\n\tsiz := info.Size(pb)\n\tb := make([]byte, 0, siz)\n\treturn info.Marshal(b, pb, false)\n}\n\n// Marshal takes a protocol buffer message\n// and encodes it into the wire format, writing the result to the\n// Buffer.\n// This is an alternative entry point. It is not necessary to use\n// a Buffer for most applications.\nfunc (p *Buffer) Marshal(pb Message) error {\n\tvar err error\n\tif p.deterministic {\n\t\tif _, ok := pb.(Marshaler); ok {\n\t\t\treturn fmt.Errorf(\"proto: deterministic not supported by the Marshal method of %T\", pb)\n\t\t}\n\t}\n\tif m, ok := pb.(newMarshaler); ok {\n\t\tsiz := m.XXX_Size()\n\t\tp.grow(siz) // make sure buf has enough capacity\n\t\tpp := p.buf[len(p.buf) : len(p.buf) : len(p.buf)+siz]\n\t\tpp, err = m.XXX_Marshal(pp, p.deterministic)\n\t\tp.buf = append(p.buf, pp...)\n\t\treturn err\n\t}\n\tif m, ok := pb.(Marshaler); ok {\n\t\t// If the message can marshal itself, let it do it, for compatibility.\n\t\t// NOTE: This is not efficient.\n\t\tvar b []byte\n\t\tb, err = m.Marshal()\n\t\tp.buf = append(p.buf, b...)\n\t\treturn err\n\t}\n\t// in case somehow we didn't generate the wrapper\n\tif pb == nil {\n\t\treturn ErrNil\n\t}\n\tvar info InternalMessageInfo\n\tsiz := info.Size(pb)\n\tp.grow(siz) // make sure buf has enough capacity\n\tp.buf, err = info.Marshal(p.buf, pb, p.deterministic)\n\treturn err\n}\n\n// grow grows the buffer's capacity, if necessary, to guarantee space for\n// another n bytes. After grow(n), at least n bytes can be written to the\n// buffer without another allocation.\nfunc (p *Buffer) grow(n int) {\n\tneed := len(p.buf) + n\n\tif need <= cap(p.buf) {\n\t\treturn\n\t}\n\tnewCap := len(p.buf) * 2\n\tif newCap < need {\n\t\tnewCap = need\n\t}\n\tp.buf = append(make([]byte, 0, newCap), p.buf...)\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/table_marshal_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"reflect\"\n\t\"time\"\n)\n\n// makeMessageRefMarshaler differs a bit from makeMessageMarshaler\n// It marshal a message T instead of a *T\nfunc makeMessageRefMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tsiz := u.size(ptr)\n\t\t\treturn siz + SizeVarint(uint64(siz)) + tagsize\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tsiz := u.cachedsize(ptr)\n\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\treturn u.marshal(b, ptr, deterministic)\n\t\t}\n}\n\n// makeMessageRefSliceMarshaler differs quite a lot from makeMessageSliceMarshaler\n// It marshals a slice of messages []T instead of []*T\nfunc makeMessageRefSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\te := elem.Interface()\n\t\t\t\tv := toAddrPointer(&e, false)\n\t\t\t\tsiz := u.size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tvar err, errreq error\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\te := elem.Interface()\n\t\t\t\tv := toAddrPointer(&e, false)\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tsiz := u.size(v)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb, err = u.marshal(b, v, deterministic)\n\n\t\t\t\tif err != nil {\n\t\t\t\t\tif _, ok := err.(*RequiredNotSetError); ok {\n\t\t\t\t\t\t// Required field in submessage is not set.\n\t\t\t\t\t\t// We record the error but keep going, to give a complete marshaling.\n\t\t\t\t\t\tif errreq == nil {\n\t\t\t\t\t\t\terrreq = err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif err == ErrNil {\n\t\t\t\t\t\terr = errRepeatedHasNil\n\t\t\t\t\t}\n\t\t\t\t\treturn b, err\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn b, errreq\n\t\t}\n}\n\nfunc makeCustomPtrMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tm := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(custom)\n\t\t\tsiz := m.Size()\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tm := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(custom)\n\t\t\tsiz := m.Size()\n\t\t\tbuf, err := m.Marshal()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeCustomMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tm := ptr.asPointerTo(u.typ).Interface().(custom)\n\t\t\tsiz := m.Size()\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tm := ptr.asPointerTo(u.typ).Interface().(custom)\n\t\t\tsiz := m.Size()\n\t\t\tbuf, err := m.Marshal()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeTimeMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*time.Time)\n\t\t\tts, err := timestampProto(*t)\n\t\t\tif err != nil {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tsiz := Size(ts)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*time.Time)\n\t\t\tts, err := timestampProto(*t)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tbuf, err := Marshal(ts)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeTimePtrMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*time.Time)\n\t\t\tts, err := timestampProto(*t)\n\t\t\tif err != nil {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tsiz := Size(ts)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*time.Time)\n\t\t\tts, err := timestampProto(*t)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tbuf, err := Marshal(ts)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeTimeSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(time.Time)\n\t\t\t\tts, err := timestampProto(t)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0\n\t\t\t\t}\n\t\t\t\tsiz := Size(ts)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(time.Time)\n\t\t\t\tts, err := timestampProto(t)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tsiz := Size(ts)\n\t\t\t\tbuf, err := Marshal(ts)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeTimePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*time.Time)\n\t\t\t\tts, err := timestampProto(*t)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0\n\t\t\t\t}\n\t\t\t\tsiz := Size(ts)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*time.Time)\n\t\t\t\tts, err := timestampProto(*t)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tsiz := Size(ts)\n\t\t\t\tbuf, err := Marshal(ts)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeDurationMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\td := ptr.asPointerTo(u.typ).Interface().(*time.Duration)\n\t\t\tdur := durationProto(*d)\n\t\t\tsiz := Size(dur)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\td := ptr.asPointerTo(u.typ).Interface().(*time.Duration)\n\t\t\tdur := durationProto(*d)\n\t\t\tbuf, err := Marshal(dur)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeDurationPtrMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\td := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*time.Duration)\n\t\t\tdur := durationProto(*d)\n\t\t\tsiz := Size(dur)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\td := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*time.Duration)\n\t\t\tdur := durationProto(*d)\n\t\t\tbuf, err := Marshal(dur)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeDurationSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\td := elem.Interface().(time.Duration)\n\t\t\t\tdur := durationProto(d)\n\t\t\t\tsiz := Size(dur)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\td := elem.Interface().(time.Duration)\n\t\t\t\tdur := durationProto(d)\n\t\t\t\tsiz := Size(dur)\n\t\t\t\tbuf, err := Marshal(dur)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeDurationPtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\td := elem.Interface().(*time.Duration)\n\t\t\t\tdur := durationProto(*d)\n\t\t\t\tsiz := Size(dur)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\td := elem.Interface().(*time.Duration)\n\t\t\t\tdur := durationProto(*d)\n\t\t\t\tsiz := Size(dur)\n\t\t\t\tbuf, err := Marshal(dur)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/table_merge.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2016 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n)\n\n// Merge merges the src message into dst.\n// This assumes that dst and src of the same type and are non-nil.\nfunc (a *InternalMessageInfo) Merge(dst, src Message) {\n\tmi := atomicLoadMergeInfo(&a.merge)\n\tif mi == nil {\n\t\tmi = getMergeInfo(reflect.TypeOf(dst).Elem())\n\t\tatomicStoreMergeInfo(&a.merge, mi)\n\t}\n\tmi.merge(toPointer(&dst), toPointer(&src))\n}\n\ntype mergeInfo struct {\n\ttyp reflect.Type\n\n\tinitialized int32 // 0: only typ is valid, 1: everything is valid\n\tlock        sync.Mutex\n\n\tfields       []mergeFieldInfo\n\tunrecognized field // Offset of XXX_unrecognized\n}\n\ntype mergeFieldInfo struct {\n\tfield field // Offset of field, guaranteed to be valid\n\n\t// isPointer reports whether the value in the field is a pointer.\n\t// This is true for the following situations:\n\t//\t* Pointer to struct\n\t//\t* Pointer to basic type (proto2 only)\n\t//\t* Slice (first value in slice header is a pointer)\n\t//\t* String (first value in string header is a pointer)\n\tisPointer bool\n\n\t// basicWidth reports the width of the field assuming that it is directly\n\t// embedded in the struct (as is the case for basic types in proto3).\n\t// The possible values are:\n\t// \t0: invalid\n\t//\t1: bool\n\t//\t4: int32, uint32, float32\n\t//\t8: int64, uint64, float64\n\tbasicWidth int\n\n\t// Where dst and src are pointers to the types being merged.\n\tmerge func(dst, src pointer)\n}\n\nvar (\n\tmergeInfoMap  = map[reflect.Type]*mergeInfo{}\n\tmergeInfoLock sync.Mutex\n)\n\nfunc getMergeInfo(t reflect.Type) *mergeInfo {\n\tmergeInfoLock.Lock()\n\tdefer mergeInfoLock.Unlock()\n\tmi := mergeInfoMap[t]\n\tif mi == nil {\n\t\tmi = &mergeInfo{typ: t}\n\t\tmergeInfoMap[t] = mi\n\t}\n\treturn mi\n}\n\n// merge merges src into dst assuming they are both of type *mi.typ.\nfunc (mi *mergeInfo) merge(dst, src pointer) {\n\tif dst.isNil() {\n\t\tpanic(\"proto: nil destination\")\n\t}\n\tif src.isNil() {\n\t\treturn // Nothing to do.\n\t}\n\n\tif atomic.LoadInt32(&mi.initialized) == 0 {\n\t\tmi.computeMergeInfo()\n\t}\n\n\tfor _, fi := range mi.fields {\n\t\tsfp := src.offset(fi.field)\n\n\t\t// As an optimization, we can avoid the merge function call cost\n\t\t// if we know for sure that the source will have no effect\n\t\t// by checking if it is the zero value.\n\t\tif unsafeAllowed {\n\t\t\tif fi.isPointer && sfp.getPointer().isNil() { // Could be slice or string\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif fi.basicWidth > 0 {\n\t\t\t\tswitch {\n\t\t\t\tcase fi.basicWidth == 1 && !*sfp.toBool():\n\t\t\t\t\tcontinue\n\t\t\t\tcase fi.basicWidth == 4 && *sfp.toUint32() == 0:\n\t\t\t\t\tcontinue\n\t\t\t\tcase fi.basicWidth == 8 && *sfp.toUint64() == 0:\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdfp := dst.offset(fi.field)\n\t\tfi.merge(dfp, sfp)\n\t}\n\n\t// TODO: Make this faster?\n\tout := dst.asPointerTo(mi.typ).Elem()\n\tin := src.asPointerTo(mi.typ).Elem()\n\tif emIn, err := extendable(in.Addr().Interface()); err == nil {\n\t\temOut, _ := extendable(out.Addr().Interface())\n\t\tmIn, muIn := emIn.extensionsRead()\n\t\tif mIn != nil {\n\t\t\tmOut := emOut.extensionsWrite()\n\t\t\tmuIn.Lock()\n\t\t\tmergeExtension(mOut, mIn)\n\t\t\tmuIn.Unlock()\n\t\t}\n\t}\n\n\tif mi.unrecognized.IsValid() {\n\t\tif b := *src.offset(mi.unrecognized).toBytes(); len(b) > 0 {\n\t\t\t*dst.offset(mi.unrecognized).toBytes() = append([]byte(nil), b...)\n\t\t}\n\t}\n}\n\nfunc (mi *mergeInfo) computeMergeInfo() {\n\tmi.lock.Lock()\n\tdefer mi.lock.Unlock()\n\tif mi.initialized != 0 {\n\t\treturn\n\t}\n\tt := mi.typ\n\tn := t.NumField()\n\n\tprops := GetProperties(t)\n\tfor i := 0; i < n; i++ {\n\t\tf := t.Field(i)\n\t\tif strings.HasPrefix(f.Name, \"XXX_\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tmfi := mergeFieldInfo{field: toField(&f)}\n\t\ttf := f.Type\n\n\t\t// As an optimization, we can avoid the merge function call cost\n\t\t// if we know for sure that the source will have no effect\n\t\t// by checking if it is the zero value.\n\t\tif unsafeAllowed {\n\t\t\tswitch tf.Kind() {\n\t\t\tcase reflect.Ptr, reflect.Slice, reflect.String:\n\t\t\t\t// As a special case, we assume slices and strings are pointers\n\t\t\t\t// since we know that the first field in the SliceSlice or\n\t\t\t\t// StringHeader is a data pointer.\n\t\t\t\tmfi.isPointer = true\n\t\t\tcase reflect.Bool:\n\t\t\t\tmfi.basicWidth = 1\n\t\t\tcase reflect.Int32, reflect.Uint32, reflect.Float32:\n\t\t\t\tmfi.basicWidth = 4\n\t\t\tcase reflect.Int64, reflect.Uint64, reflect.Float64:\n\t\t\t\tmfi.basicWidth = 8\n\t\t\t}\n\t\t}\n\n\t\t// Unwrap tf to get at its most basic type.\n\t\tvar isPointer, isSlice bool\n\t\tif tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 {\n\t\t\tisSlice = true\n\t\t\ttf = tf.Elem()\n\t\t}\n\t\tif tf.Kind() == reflect.Ptr {\n\t\t\tisPointer = true\n\t\t\ttf = tf.Elem()\n\t\t}\n\t\tif isPointer && isSlice && tf.Kind() != reflect.Struct {\n\t\t\tpanic(\"both pointer and slice for basic type in \" + tf.Name())\n\t\t}\n\n\t\tswitch tf.Kind() {\n\t\tcase reflect.Int32:\n\t\t\tswitch {\n\t\t\tcase isSlice: // E.g., []int32\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\t// NOTE: toInt32Slice is not defined (see pointer_reflect.go).\n\t\t\t\t\t/*\n\t\t\t\t\t\tsfsp := src.toInt32Slice()\n\t\t\t\t\t\tif *sfsp != nil {\n\t\t\t\t\t\t\tdfsp := dst.toInt32Slice()\n\t\t\t\t\t\t\t*dfsp = append(*dfsp, *sfsp...)\n\t\t\t\t\t\t\tif *dfsp == nil {\n\t\t\t\t\t\t\t\t*dfsp = []int64{}\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\tsfs := src.getInt32Slice()\n\t\t\t\t\tif sfs != nil {\n\t\t\t\t\t\tdfs := dst.getInt32Slice()\n\t\t\t\t\t\tdfs = append(dfs, sfs...)\n\t\t\t\t\t\tif dfs == nil {\n\t\t\t\t\t\t\tdfs = []int32{}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdst.setInt32Slice(dfs)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase isPointer: // E.g., *int32\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\t// NOTE: toInt32Ptr is not defined (see pointer_reflect.go).\n\t\t\t\t\t/*\n\t\t\t\t\t\tsfpp := src.toInt32Ptr()\n\t\t\t\t\t\tif *sfpp != nil {\n\t\t\t\t\t\t\tdfpp := dst.toInt32Ptr()\n\t\t\t\t\t\t\tif *dfpp == nil {\n\t\t\t\t\t\t\t\t*dfpp = Int32(**sfpp)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t**dfpp = **sfpp\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\tsfp := src.getInt32Ptr()\n\t\t\t\t\tif sfp != nil {\n\t\t\t\t\t\tdfp := dst.getInt32Ptr()\n\t\t\t\t\t\tif dfp == nil {\n\t\t\t\t\t\t\tdst.setInt32Ptr(*sfp)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t*dfp = *sfp\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault: // E.g., int32\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tif v := *src.toInt32(); v != 0 {\n\t\t\t\t\t\t*dst.toInt32() = v\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Int64:\n\t\t\tswitch {\n\t\t\tcase isSlice: // E.g., []int64\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfsp := src.toInt64Slice()\n\t\t\t\t\tif *sfsp != nil {\n\t\t\t\t\t\tdfsp := dst.toInt64Slice()\n\t\t\t\t\t\t*dfsp = append(*dfsp, *sfsp...)\n\t\t\t\t\t\tif *dfsp == nil {\n\t\t\t\t\t\t\t*dfsp = []int64{}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase isPointer: // E.g., *int64\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfpp := src.toInt64Ptr()\n\t\t\t\t\tif *sfpp != nil {\n\t\t\t\t\t\tdfpp := dst.toInt64Ptr()\n\t\t\t\t\t\tif *dfpp == nil {\n\t\t\t\t\t\t\t*dfpp = Int64(**sfpp)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t**dfpp = **sfpp\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault: // E.g., int64\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tif v := *src.toInt64(); v != 0 {\n\t\t\t\t\t\t*dst.toInt64() = v\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Uint32:\n\t\t\tswitch {\n\t\t\tcase isSlice: // E.g., []uint32\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfsp := src.toUint32Slice()\n\t\t\t\t\tif *sfsp != nil {\n\t\t\t\t\t\tdfsp := dst.toUint32Slice()\n\t\t\t\t\t\t*dfsp = append(*dfsp, *sfsp...)\n\t\t\t\t\t\tif *dfsp == nil {\n\t\t\t\t\t\t\t*dfsp = []uint32{}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase isPointer: // E.g., *uint32\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfpp := src.toUint32Ptr()\n\t\t\t\t\tif *sfpp != nil {\n\t\t\t\t\t\tdfpp := dst.toUint32Ptr()\n\t\t\t\t\t\tif *dfpp == nil {\n\t\t\t\t\t\t\t*dfpp = Uint32(**sfpp)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t**dfpp = **sfpp\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault: // E.g., uint32\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tif v := *src.toUint32(); v != 0 {\n\t\t\t\t\t\t*dst.toUint32() = v\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Uint64:\n\t\t\tswitch {\n\t\t\tcase isSlice: // E.g., []uint64\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfsp := src.toUint64Slice()\n\t\t\t\t\tif *sfsp != nil {\n\t\t\t\t\t\tdfsp := dst.toUint64Slice()\n\t\t\t\t\t\t*dfsp = append(*dfsp, *sfsp...)\n\t\t\t\t\t\tif *dfsp == nil {\n\t\t\t\t\t\t\t*dfsp = []uint64{}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase isPointer: // E.g., *uint64\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfpp := src.toUint64Ptr()\n\t\t\t\t\tif *sfpp != nil {\n\t\t\t\t\t\tdfpp := dst.toUint64Ptr()\n\t\t\t\t\t\tif *dfpp == nil {\n\t\t\t\t\t\t\t*dfpp = Uint64(**sfpp)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t**dfpp = **sfpp\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault: // E.g., uint64\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tif v := *src.toUint64(); v != 0 {\n\t\t\t\t\t\t*dst.toUint64() = v\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Float32:\n\t\t\tswitch {\n\t\t\tcase isSlice: // E.g., []float32\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfsp := src.toFloat32Slice()\n\t\t\t\t\tif *sfsp != nil {\n\t\t\t\t\t\tdfsp := dst.toFloat32Slice()\n\t\t\t\t\t\t*dfsp = append(*dfsp, *sfsp...)\n\t\t\t\t\t\tif *dfsp == nil {\n\t\t\t\t\t\t\t*dfsp = []float32{}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase isPointer: // E.g., *float32\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfpp := src.toFloat32Ptr()\n\t\t\t\t\tif *sfpp != nil {\n\t\t\t\t\t\tdfpp := dst.toFloat32Ptr()\n\t\t\t\t\t\tif *dfpp == nil {\n\t\t\t\t\t\t\t*dfpp = Float32(**sfpp)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t**dfpp = **sfpp\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault: // E.g., float32\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tif v := *src.toFloat32(); v != 0 {\n\t\t\t\t\t\t*dst.toFloat32() = v\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Float64:\n\t\t\tswitch {\n\t\t\tcase isSlice: // E.g., []float64\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfsp := src.toFloat64Slice()\n\t\t\t\t\tif *sfsp != nil {\n\t\t\t\t\t\tdfsp := dst.toFloat64Slice()\n\t\t\t\t\t\t*dfsp = append(*dfsp, *sfsp...)\n\t\t\t\t\t\tif *dfsp == nil {\n\t\t\t\t\t\t\t*dfsp = []float64{}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase isPointer: // E.g., *float64\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfpp := src.toFloat64Ptr()\n\t\t\t\t\tif *sfpp != nil {\n\t\t\t\t\t\tdfpp := dst.toFloat64Ptr()\n\t\t\t\t\t\tif *dfpp == nil {\n\t\t\t\t\t\t\t*dfpp = Float64(**sfpp)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t**dfpp = **sfpp\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault: // E.g., float64\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tif v := *src.toFloat64(); v != 0 {\n\t\t\t\t\t\t*dst.toFloat64() = v\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Bool:\n\t\t\tswitch {\n\t\t\tcase isSlice: // E.g., []bool\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfsp := src.toBoolSlice()\n\t\t\t\t\tif *sfsp != nil {\n\t\t\t\t\t\tdfsp := dst.toBoolSlice()\n\t\t\t\t\t\t*dfsp = append(*dfsp, *sfsp...)\n\t\t\t\t\t\tif *dfsp == nil {\n\t\t\t\t\t\t\t*dfsp = []bool{}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase isPointer: // E.g., *bool\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfpp := src.toBoolPtr()\n\t\t\t\t\tif *sfpp != nil {\n\t\t\t\t\t\tdfpp := dst.toBoolPtr()\n\t\t\t\t\t\tif *dfpp == nil {\n\t\t\t\t\t\t\t*dfpp = Bool(**sfpp)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t**dfpp = **sfpp\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault: // E.g., bool\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tif v := *src.toBool(); v {\n\t\t\t\t\t\t*dst.toBool() = v\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.String:\n\t\t\tswitch {\n\t\t\tcase isSlice: // E.g., []string\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfsp := src.toStringSlice()\n\t\t\t\t\tif *sfsp != nil {\n\t\t\t\t\t\tdfsp := dst.toStringSlice()\n\t\t\t\t\t\t*dfsp = append(*dfsp, *sfsp...)\n\t\t\t\t\t\tif *dfsp == nil {\n\t\t\t\t\t\t\t*dfsp = []string{}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase isPointer: // E.g., *string\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsfpp := src.toStringPtr()\n\t\t\t\t\tif *sfpp != nil {\n\t\t\t\t\t\tdfpp := dst.toStringPtr()\n\t\t\t\t\t\tif *dfpp == nil {\n\t\t\t\t\t\t\t*dfpp = String(**sfpp)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t**dfpp = **sfpp\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault: // E.g., string\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tif v := *src.toString(); v != \"\" {\n\t\t\t\t\t\t*dst.toString() = v\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Slice:\n\t\t\tisProto3 := props.Prop[i].proto3\n\t\t\tswitch {\n\t\t\tcase isPointer:\n\t\t\t\tpanic(\"bad pointer in byte slice case in \" + tf.Name())\n\t\t\tcase tf.Elem().Kind() != reflect.Uint8:\n\t\t\t\tpanic(\"bad element kind in byte slice case in \" + tf.Name())\n\t\t\tcase isSlice: // E.g., [][]byte\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsbsp := src.toBytesSlice()\n\t\t\t\t\tif *sbsp != nil {\n\t\t\t\t\t\tdbsp := dst.toBytesSlice()\n\t\t\t\t\t\tfor _, sb := range *sbsp {\n\t\t\t\t\t\t\tif sb == nil {\n\t\t\t\t\t\t\t\t*dbsp = append(*dbsp, nil)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t*dbsp = append(*dbsp, append([]byte{}, sb...))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif *dbsp == nil {\n\t\t\t\t\t\t\t*dbsp = [][]byte{}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault: // E.g., []byte\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsbp := src.toBytes()\n\t\t\t\t\tif *sbp != nil {\n\t\t\t\t\t\tdbp := dst.toBytes()\n\t\t\t\t\t\tif !isProto3 || len(*sbp) > 0 {\n\t\t\t\t\t\t\t*dbp = append([]byte{}, *sbp...)\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\tswitch {\n\t\t\tcase isSlice && !isPointer: // E.g. []pb.T\n\t\t\t\tmergeInfo := getMergeInfo(tf)\n\t\t\t\tzero := reflect.Zero(tf)\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\t// TODO: Make this faster?\n\t\t\t\t\tdstsp := dst.asPointerTo(f.Type)\n\t\t\t\t\tdsts := dstsp.Elem()\n\t\t\t\t\tsrcs := src.asPointerTo(f.Type).Elem()\n\t\t\t\t\tfor i := 0; i < srcs.Len(); i++ {\n\t\t\t\t\t\tdsts = reflect.Append(dsts, zero)\n\t\t\t\t\t\tsrcElement := srcs.Index(i).Addr()\n\t\t\t\t\t\tdstElement := dsts.Index(dsts.Len() - 1).Addr()\n\t\t\t\t\t\tmergeInfo.merge(valToPointer(dstElement), valToPointer(srcElement))\n\t\t\t\t\t}\n\t\t\t\t\tif dsts.IsNil() {\n\t\t\t\t\t\tdsts = reflect.MakeSlice(f.Type, 0, 0)\n\t\t\t\t\t}\n\t\t\t\t\tdstsp.Elem().Set(dsts)\n\t\t\t\t}\n\t\t\tcase !isPointer:\n\t\t\t\tmergeInfo := getMergeInfo(tf)\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tmergeInfo.merge(dst, src)\n\t\t\t\t}\n\t\t\tcase isSlice: // E.g., []*pb.T\n\t\t\t\tmergeInfo := getMergeInfo(tf)\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsps := src.getPointerSlice()\n\t\t\t\t\tif sps != nil {\n\t\t\t\t\t\tdps := dst.getPointerSlice()\n\t\t\t\t\t\tfor _, sp := range sps {\n\t\t\t\t\t\t\tvar dp pointer\n\t\t\t\t\t\t\tif !sp.isNil() {\n\t\t\t\t\t\t\t\tdp = valToPointer(reflect.New(tf))\n\t\t\t\t\t\t\t\tmergeInfo.merge(dp, sp)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdps = append(dps, dp)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif dps == nil {\n\t\t\t\t\t\t\tdps = []pointer{}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdst.setPointerSlice(dps)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault: // E.g., *pb.T\n\t\t\t\tmergeInfo := getMergeInfo(tf)\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsp := src.getPointer()\n\t\t\t\t\tif !sp.isNil() {\n\t\t\t\t\t\tdp := dst.getPointer()\n\t\t\t\t\t\tif dp.isNil() {\n\t\t\t\t\t\t\tdp = valToPointer(reflect.New(tf))\n\t\t\t\t\t\t\tdst.setPointer(dp)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmergeInfo.merge(dp, sp)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Map:\n\t\t\tswitch {\n\t\t\tcase isPointer || isSlice:\n\t\t\t\tpanic(\"bad pointer or slice in map case in \" + tf.Name())\n\t\t\tdefault: // E.g., map[K]V\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsm := src.asPointerTo(tf).Elem()\n\t\t\t\t\tif sm.Len() == 0 {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tdm := dst.asPointerTo(tf).Elem()\n\t\t\t\t\tif dm.IsNil() {\n\t\t\t\t\t\tdm.Set(reflect.MakeMap(tf))\n\t\t\t\t\t}\n\n\t\t\t\t\tswitch tf.Elem().Kind() {\n\t\t\t\t\tcase reflect.Ptr: // Proto struct (e.g., *T)\n\t\t\t\t\t\tfor _, key := range sm.MapKeys() {\n\t\t\t\t\t\t\tval := sm.MapIndex(key)\n\t\t\t\t\t\t\tval = reflect.ValueOf(Clone(val.Interface().(Message)))\n\t\t\t\t\t\t\tdm.SetMapIndex(key, val)\n\t\t\t\t\t\t}\n\t\t\t\t\tcase reflect.Slice: // E.g. Bytes type (e.g., []byte)\n\t\t\t\t\t\tfor _, key := range sm.MapKeys() {\n\t\t\t\t\t\t\tval := sm.MapIndex(key)\n\t\t\t\t\t\t\tval = reflect.ValueOf(append([]byte{}, val.Bytes()...))\n\t\t\t\t\t\t\tdm.SetMapIndex(key, val)\n\t\t\t\t\t\t}\n\t\t\t\t\tdefault: // Basic type (e.g., string)\n\t\t\t\t\t\tfor _, key := range sm.MapKeys() {\n\t\t\t\t\t\t\tval := sm.MapIndex(key)\n\t\t\t\t\t\t\tdm.SetMapIndex(key, val)\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.Interface:\n\t\t\t// Must be oneof field.\n\t\t\tswitch {\n\t\t\tcase isPointer || isSlice:\n\t\t\t\tpanic(\"bad pointer or slice in interface case in \" + tf.Name())\n\t\t\tdefault: // E.g., interface{}\n\t\t\t\t// TODO: Make this faster?\n\t\t\t\tmfi.merge = func(dst, src pointer) {\n\t\t\t\t\tsu := src.asPointerTo(tf).Elem()\n\t\t\t\t\tif !su.IsNil() {\n\t\t\t\t\t\tdu := dst.asPointerTo(tf).Elem()\n\t\t\t\t\t\ttyp := su.Elem().Type()\n\t\t\t\t\t\tif du.IsNil() || du.Elem().Type() != typ {\n\t\t\t\t\t\t\tdu.Set(reflect.New(typ.Elem())) // Initialize interface if empty\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsv := su.Elem().Elem().Field(0)\n\t\t\t\t\t\tif sv.Kind() == reflect.Ptr && sv.IsNil() {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdv := du.Elem().Elem().Field(0)\n\t\t\t\t\t\tif dv.Kind() == reflect.Ptr && dv.IsNil() {\n\t\t\t\t\t\t\tdv.Set(reflect.New(sv.Type().Elem())) // Initialize proto message if empty\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch sv.Type().Kind() {\n\t\t\t\t\t\tcase reflect.Ptr: // Proto struct (e.g., *T)\n\t\t\t\t\t\t\tMerge(dv.Interface().(Message), sv.Interface().(Message))\n\t\t\t\t\t\tcase reflect.Slice: // E.g. Bytes type (e.g., []byte)\n\t\t\t\t\t\t\tdv.Set(reflect.ValueOf(append([]byte{}, sv.Bytes()...)))\n\t\t\t\t\t\tdefault: // Basic type (e.g., string)\n\t\t\t\t\t\t\tdv.Set(sv)\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\tpanic(fmt.Sprintf(\"merger not found for type:%s\", tf))\n\t\t}\n\t\tmi.fields = append(mi.fields, mfi)\n\t}\n\n\tmi.unrecognized = invalidField\n\tif f, ok := t.FieldByName(\"XXX_unrecognized\"); ok {\n\t\tif f.Type != reflect.TypeOf([]byte{}) {\n\t\t\tpanic(\"expected XXX_unrecognized to be of type []byte\")\n\t\t}\n\t\tmi.unrecognized = toField(&f)\n\t}\n\n\tatomic.StoreInt32(&mi.initialized, 1)\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/table_unmarshal.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2016 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"unicode/utf8\"\n)\n\n// Unmarshal is the entry point from the generated .pb.go files.\n// This function is not intended to be used by non-generated code.\n// This function is not subject to any compatibility guarantee.\n// msg contains a pointer to a protocol buffer struct.\n// b is the data to be unmarshaled into the protocol buffer.\n// a is a pointer to a place to store cached unmarshal information.\nfunc (a *InternalMessageInfo) Unmarshal(msg Message, b []byte) error {\n\t// Load the unmarshal information for this message type.\n\t// The atomic load ensures memory consistency.\n\tu := atomicLoadUnmarshalInfo(&a.unmarshal)\n\tif u == nil {\n\t\t// Slow path: find unmarshal info for msg, update a with it.\n\t\tu = getUnmarshalInfo(reflect.TypeOf(msg).Elem())\n\t\tatomicStoreUnmarshalInfo(&a.unmarshal, u)\n\t}\n\t// Then do the unmarshaling.\n\terr := u.unmarshal(toPointer(&msg), b)\n\treturn err\n}\n\ntype unmarshalInfo struct {\n\ttyp reflect.Type // type of the protobuf struct\n\n\t// 0 = only typ field is initialized\n\t// 1 = completely initialized\n\tinitialized     int32\n\tlock            sync.Mutex                    // prevents double initialization\n\tdense           []unmarshalFieldInfo          // fields indexed by tag #\n\tsparse          map[uint64]unmarshalFieldInfo // fields indexed by tag #\n\treqFields       []string                      // names of required fields\n\treqMask         uint64                        // 1<<len(reqFields)-1\n\tunrecognized    field                         // offset of []byte to put unrecognized data (or invalidField if we should throw it away)\n\textensions      field                         // offset of extensions field (of type proto.XXX_InternalExtensions), or invalidField if it does not exist\n\toldExtensions   field                         // offset of old-form extensions field (of type map[int]Extension)\n\textensionRanges []ExtensionRange              // if non-nil, implies extensions field is valid\n\tisMessageSet    bool                          // if true, implies extensions field is valid\n\n\tbytesExtensions field // offset of XXX_extensions with type []byte\n}\n\n// An unmarshaler takes a stream of bytes and a pointer to a field of a message.\n// It decodes the field, stores it at f, and returns the unused bytes.\n// w is the wire encoding.\n// b is the data after the tag and wire encoding have been read.\ntype unmarshaler func(b []byte, f pointer, w int) ([]byte, error)\n\ntype unmarshalFieldInfo struct {\n\t// location of the field in the proto message structure.\n\tfield field\n\n\t// function to unmarshal the data for the field.\n\tunmarshal unmarshaler\n\n\t// if a required field, contains a single set bit at this field's index in the required field list.\n\treqMask uint64\n\n\tname string // name of the field, for error reporting\n}\n\nvar (\n\tunmarshalInfoMap  = map[reflect.Type]*unmarshalInfo{}\n\tunmarshalInfoLock sync.Mutex\n)\n\n// getUnmarshalInfo returns the data structure which can be\n// subsequently used to unmarshal a message of the given type.\n// t is the type of the message (note: not pointer to message).\nfunc getUnmarshalInfo(t reflect.Type) *unmarshalInfo {\n\t// It would be correct to return a new unmarshalInfo\n\t// unconditionally. We would end up allocating one\n\t// per occurrence of that type as a message or submessage.\n\t// We use a cache here just to reduce memory usage.\n\tunmarshalInfoLock.Lock()\n\tdefer unmarshalInfoLock.Unlock()\n\tu := unmarshalInfoMap[t]\n\tif u == nil {\n\t\tu = &unmarshalInfo{typ: t}\n\t\t// Note: we just set the type here. The rest of the fields\n\t\t// will be initialized on first use.\n\t\tunmarshalInfoMap[t] = u\n\t}\n\treturn u\n}\n\n// unmarshal does the main work of unmarshaling a message.\n// u provides type information used to unmarshal the message.\n// m is a pointer to a protocol buffer message.\n// b is a byte stream to unmarshal into m.\n// This is top routine used when recursively unmarshaling submessages.\nfunc (u *unmarshalInfo) unmarshal(m pointer, b []byte) error {\n\tif atomic.LoadInt32(&u.initialized) == 0 {\n\t\tu.computeUnmarshalInfo()\n\t}\n\tif u.isMessageSet {\n\t\treturn unmarshalMessageSet(b, m.offset(u.extensions).toExtensions())\n\t}\n\tvar reqMask uint64 // bitmask of required fields we've seen.\n\tvar errLater error\n\tfor len(b) > 0 {\n\t\t// Read tag and wire type.\n\t\t// Special case 1 and 2 byte varints.\n\t\tvar x uint64\n\t\tif b[0] < 128 {\n\t\t\tx = uint64(b[0])\n\t\t\tb = b[1:]\n\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\tx = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\tb = b[2:]\n\t\t} else {\n\t\t\tvar n int\n\t\t\tx, n = decodeVarint(b)\n\t\t\tif n == 0 {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\t\ttag := x >> 3\n\t\twire := int(x) & 7\n\n\t\t// Dispatch on the tag to one of the unmarshal* functions below.\n\t\tvar f unmarshalFieldInfo\n\t\tif tag < uint64(len(u.dense)) {\n\t\t\tf = u.dense[tag]\n\t\t} else {\n\t\t\tf = u.sparse[tag]\n\t\t}\n\t\tif fn := f.unmarshal; fn != nil {\n\t\t\tvar err error\n\t\t\tb, err = fn(b, m.offset(f.field), wire)\n\t\t\tif err == nil {\n\t\t\t\treqMask |= f.reqMask\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif r, ok := err.(*RequiredNotSetError); ok {\n\t\t\t\t// Remember this error, but keep parsing. We need to produce\n\t\t\t\t// a full parse even if a required field is missing.\n\t\t\t\tif errLater == nil {\n\t\t\t\t\terrLater = r\n\t\t\t\t}\n\t\t\t\treqMask |= f.reqMask\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err != errInternalBadWireType {\n\t\t\t\tif err == errInvalidUTF8 {\n\t\t\t\t\tif errLater == nil {\n\t\t\t\t\t\tfullName := revProtoTypes[reflect.PtrTo(u.typ)] + \".\" + f.name\n\t\t\t\t\t\terrLater = &invalidUTF8Error{fullName}\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// Fragments with bad wire type are treated as unknown fields.\n\t\t}\n\n\t\t// Unknown tag.\n\t\tif !u.unrecognized.IsValid() {\n\t\t\t// Don't keep unrecognized data; just skip it.\n\t\t\tvar err error\n\t\t\tb, err = skipField(b, wire)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\t// Keep unrecognized data around.\n\t\t// maybe in extensions, maybe in the unrecognized field.\n\t\tz := m.offset(u.unrecognized).toBytes()\n\t\tvar emap map[int32]Extension\n\t\tvar e Extension\n\t\tfor _, r := range u.extensionRanges {\n\t\t\tif uint64(r.Start) <= tag && tag <= uint64(r.End) {\n\t\t\t\tif u.extensions.IsValid() {\n\t\t\t\t\tmp := m.offset(u.extensions).toExtensions()\n\t\t\t\t\temap = mp.extensionsWrite()\n\t\t\t\t\te = emap[int32(tag)]\n\t\t\t\t\tz = &e.enc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif u.oldExtensions.IsValid() {\n\t\t\t\t\tp := m.offset(u.oldExtensions).toOldExtensions()\n\t\t\t\t\temap = *p\n\t\t\t\t\tif emap == nil {\n\t\t\t\t\t\temap = map[int32]Extension{}\n\t\t\t\t\t\t*p = emap\n\t\t\t\t\t}\n\t\t\t\t\te = emap[int32(tag)]\n\t\t\t\t\tz = &e.enc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif u.bytesExtensions.IsValid() {\n\t\t\t\t\tz = m.offset(u.bytesExtensions).toBytes()\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tpanic(\"no extensions field available\")\n\t\t\t}\n\t\t}\n\t\t// Use wire type to skip data.\n\t\tvar err error\n\t\tb0 := b\n\t\tb, err = skipField(b, wire)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t*z = encodeVarint(*z, tag<<3|uint64(wire))\n\t\t*z = append(*z, b0[:len(b0)-len(b)]...)\n\n\t\tif emap != nil {\n\t\t\temap[int32(tag)] = e\n\t\t}\n\t}\n\tif reqMask != u.reqMask && errLater == nil {\n\t\t// A required field of this message is missing.\n\t\tfor _, n := range u.reqFields {\n\t\t\tif reqMask&1 == 0 {\n\t\t\t\terrLater = &RequiredNotSetError{n}\n\t\t\t}\n\t\t\treqMask >>= 1\n\t\t}\n\t}\n\treturn errLater\n}\n\n// computeUnmarshalInfo fills in u with information for use\n// in unmarshaling protocol buffers of type u.typ.\nfunc (u *unmarshalInfo) computeUnmarshalInfo() {\n\tu.lock.Lock()\n\tdefer u.lock.Unlock()\n\tif u.initialized != 0 {\n\t\treturn\n\t}\n\tt := u.typ\n\tn := t.NumField()\n\n\t// Set up the \"not found\" value for the unrecognized byte buffer.\n\t// This is the default for proto3.\n\tu.unrecognized = invalidField\n\tu.extensions = invalidField\n\tu.oldExtensions = invalidField\n\tu.bytesExtensions = invalidField\n\n\t// List of the generated type and offset for each oneof field.\n\ttype oneofField struct {\n\t\tityp  reflect.Type // interface type of oneof field\n\t\tfield field        // offset in containing message\n\t}\n\tvar oneofFields []oneofField\n\n\tfor i := 0; i < n; i++ {\n\t\tf := t.Field(i)\n\t\tif f.Name == \"XXX_unrecognized\" {\n\t\t\t// The byte slice used to hold unrecognized input is special.\n\t\t\tif f.Type != reflect.TypeOf(([]byte)(nil)) {\n\t\t\t\tpanic(\"bad type for XXX_unrecognized field: \" + f.Type.Name())\n\t\t\t}\n\t\t\tu.unrecognized = toField(&f)\n\t\t\tcontinue\n\t\t}\n\t\tif f.Name == \"XXX_InternalExtensions\" {\n\t\t\t// Ditto here.\n\t\t\tif f.Type != reflect.TypeOf(XXX_InternalExtensions{}) {\n\t\t\t\tpanic(\"bad type for XXX_InternalExtensions field: \" + f.Type.Name())\n\t\t\t}\n\t\t\tu.extensions = toField(&f)\n\t\t\tif f.Tag.Get(\"protobuf_messageset\") == \"1\" {\n\t\t\t\tu.isMessageSet = true\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif f.Name == \"XXX_extensions\" {\n\t\t\t// An older form of the extensions field.\n\t\t\tif f.Type == reflect.TypeOf((map[int32]Extension)(nil)) {\n\t\t\t\tu.oldExtensions = toField(&f)\n\t\t\t\tcontinue\n\t\t\t} else if f.Type == reflect.TypeOf(([]byte)(nil)) {\n\t\t\t\tu.bytesExtensions = toField(&f)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tpanic(\"bad type for XXX_extensions field: \" + f.Type.Name())\n\t\t}\n\t\tif f.Name == \"XXX_NoUnkeyedLiteral\" || f.Name == \"XXX_sizecache\" {\n\t\t\tcontinue\n\t\t}\n\n\t\toneof := f.Tag.Get(\"protobuf_oneof\")\n\t\tif oneof != \"\" {\n\t\t\toneofFields = append(oneofFields, oneofField{f.Type, toField(&f)})\n\t\t\t// The rest of oneof processing happens below.\n\t\t\tcontinue\n\t\t}\n\n\t\ttags := f.Tag.Get(\"protobuf\")\n\t\ttagArray := strings.Split(tags, \",\")\n\t\tif len(tagArray) < 2 {\n\t\t\tpanic(\"protobuf tag not enough fields in \" + t.Name() + \".\" + f.Name + \": \" + tags)\n\t\t}\n\t\ttag, err := strconv.Atoi(tagArray[1])\n\t\tif err != nil {\n\t\t\tpanic(\"protobuf tag field not an integer: \" + tagArray[1])\n\t\t}\n\n\t\tname := \"\"\n\t\tfor _, tag := range tagArray[3:] {\n\t\t\tif strings.HasPrefix(tag, \"name=\") {\n\t\t\t\tname = tag[5:]\n\t\t\t}\n\t\t}\n\n\t\t// Extract unmarshaling function from the field (its type and tags).\n\t\tunmarshal := fieldUnmarshaler(&f)\n\n\t\t// Required field?\n\t\tvar reqMask uint64\n\t\tif tagArray[2] == \"req\" {\n\t\t\tbit := len(u.reqFields)\n\t\t\tu.reqFields = append(u.reqFields, name)\n\t\t\treqMask = uint64(1) << uint(bit)\n\t\t\t// TODO: if we have more than 64 required fields, we end up\n\t\t\t// not verifying that all required fields are present.\n\t\t\t// Fix this, perhaps using a count of required fields?\n\t\t}\n\n\t\t// Store the info in the correct slot in the message.\n\t\tu.setTag(tag, toField(&f), unmarshal, reqMask, name)\n\t}\n\n\t// Find any types associated with oneof fields.\n\t// gogo: len(oneofFields) > 0 is needed for embedded oneof messages, without a marshaler and unmarshaler\n\tif len(oneofFields) > 0 {\n\t\tvar oneofImplementers []interface{}\n\t\tswitch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) {\n\t\tcase oneofFuncsIface:\n\t\t\t_, _, _, oneofImplementers = m.XXX_OneofFuncs()\n\t\tcase oneofWrappersIface:\n\t\t\toneofImplementers = m.XXX_OneofWrappers()\n\t\t}\n\t\tfor _, v := range oneofImplementers {\n\t\t\ttptr := reflect.TypeOf(v) // *Msg_X\n\t\t\ttyp := tptr.Elem()        // Msg_X\n\n\t\t\tf := typ.Field(0) // oneof implementers have one field\n\t\t\tbaseUnmarshal := fieldUnmarshaler(&f)\n\t\t\ttags := strings.Split(f.Tag.Get(\"protobuf\"), \",\")\n\t\t\tfieldNum, err := strconv.Atoi(tags[1])\n\t\t\tif err != nil {\n\t\t\t\tpanic(\"protobuf tag field not an integer: \" + tags[1])\n\t\t\t}\n\t\t\tvar name string\n\t\t\tfor _, tag := range tags {\n\t\t\t\tif strings.HasPrefix(tag, \"name=\") {\n\t\t\t\t\tname = strings.TrimPrefix(tag, \"name=\")\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Find the oneof field that this struct implements.\n\t\t\t// Might take O(n^2) to process all of the oneofs, but who cares.\n\t\t\tfor _, of := range oneofFields {\n\t\t\t\tif tptr.Implements(of.ityp) {\n\t\t\t\t\t// We have found the corresponding interface for this struct.\n\t\t\t\t\t// That lets us know where this struct should be stored\n\t\t\t\t\t// when we encounter it during unmarshaling.\n\t\t\t\t\tunmarshal := makeUnmarshalOneof(typ, of.ityp, baseUnmarshal)\n\t\t\t\t\tu.setTag(fieldNum, of.field, unmarshal, 0, name)\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\t// Get extension ranges, if any.\n\tfn := reflect.Zero(reflect.PtrTo(t)).MethodByName(\"ExtensionRangeArray\")\n\tif fn.IsValid() {\n\t\tif !u.extensions.IsValid() && !u.oldExtensions.IsValid() && !u.bytesExtensions.IsValid() {\n\t\t\tpanic(\"a message with extensions, but no extensions field in \" + t.Name())\n\t\t}\n\t\tu.extensionRanges = fn.Call(nil)[0].Interface().([]ExtensionRange)\n\t}\n\n\t// Explicitly disallow tag 0. This will ensure we flag an error\n\t// when decoding a buffer of all zeros. Without this code, we\n\t// would decode and skip an all-zero buffer of even length.\n\t// [0 0] is [tag=0/wiretype=varint varint-encoded-0].\n\tu.setTag(0, zeroField, func(b []byte, f pointer, w int) ([]byte, error) {\n\t\treturn nil, fmt.Errorf(\"proto: %s: illegal tag 0 (wire type %d)\", t, w)\n\t}, 0, \"\")\n\n\t// Set mask for required field check.\n\tu.reqMask = uint64(1)<<uint(len(u.reqFields)) - 1\n\n\tatomic.StoreInt32(&u.initialized, 1)\n}\n\n// setTag stores the unmarshal information for the given tag.\n// tag = tag # for field\n// field/unmarshal = unmarshal info for that field.\n// reqMask = if required, bitmask for field position in required field list. 0 otherwise.\n// name = short name of the field.\nfunc (u *unmarshalInfo) setTag(tag int, field field, unmarshal unmarshaler, reqMask uint64, name string) {\n\ti := unmarshalFieldInfo{field: field, unmarshal: unmarshal, reqMask: reqMask, name: name}\n\tn := u.typ.NumField()\n\tif tag >= 0 && (tag < 16 || tag < 2*n) { // TODO: what are the right numbers here?\n\t\tfor len(u.dense) <= tag {\n\t\t\tu.dense = append(u.dense, unmarshalFieldInfo{})\n\t\t}\n\t\tu.dense[tag] = i\n\t\treturn\n\t}\n\tif u.sparse == nil {\n\t\tu.sparse = map[uint64]unmarshalFieldInfo{}\n\t}\n\tu.sparse[uint64(tag)] = i\n}\n\n// fieldUnmarshaler returns an unmarshaler for the given field.\nfunc fieldUnmarshaler(f *reflect.StructField) unmarshaler {\n\tif f.Type.Kind() == reflect.Map {\n\t\treturn makeUnmarshalMap(f)\n\t}\n\treturn typeUnmarshaler(f.Type, f.Tag.Get(\"protobuf\"))\n}\n\n// typeUnmarshaler returns an unmarshaler for the given field type / field tag pair.\nfunc typeUnmarshaler(t reflect.Type, tags string) unmarshaler {\n\ttagArray := strings.Split(tags, \",\")\n\tencoding := tagArray[0]\n\tname := \"unknown\"\n\tctype := false\n\tisTime := false\n\tisDuration := false\n\tisWktPointer := false\n\tproto3 := false\n\tvalidateUTF8 := true\n\tfor _, tag := range tagArray[3:] {\n\t\tif strings.HasPrefix(tag, \"name=\") {\n\t\t\tname = tag[5:]\n\t\t}\n\t\tif tag == \"proto3\" {\n\t\t\tproto3 = true\n\t\t}\n\t\tif strings.HasPrefix(tag, \"customtype=\") {\n\t\t\tctype = true\n\t\t}\n\t\tif tag == \"stdtime\" {\n\t\t\tisTime = true\n\t\t}\n\t\tif tag == \"stdduration\" {\n\t\t\tisDuration = true\n\t\t}\n\t\tif tag == \"wktptr\" {\n\t\t\tisWktPointer = true\n\t\t}\n\t}\n\tvalidateUTF8 = validateUTF8 && proto3\n\n\t// Figure out packaging (pointer, slice, or both)\n\tslice := false\n\tpointer := false\n\tif t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 {\n\t\tslice = true\n\t\tt = t.Elem()\n\t}\n\tif t.Kind() == reflect.Ptr {\n\t\tpointer = true\n\t\tt = t.Elem()\n\t}\n\n\tif ctype {\n\t\tif reflect.PtrTo(t).Implements(customType) {\n\t\t\tif slice {\n\t\t\t\treturn makeUnmarshalCustomSlice(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\tif pointer {\n\t\t\t\treturn makeUnmarshalCustomPtr(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeUnmarshalCustom(getUnmarshalInfo(t), name)\n\t\t} else {\n\t\t\tpanic(fmt.Sprintf(\"custom type: type: %v, does not implement the proto.custom interface\", t))\n\t\t}\n\t}\n\n\tif isTime {\n\t\tif pointer {\n\t\t\tif slice {\n\t\t\t\treturn makeUnmarshalTimePtrSlice(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeUnmarshalTimePtr(getUnmarshalInfo(t), name)\n\t\t}\n\t\tif slice {\n\t\t\treturn makeUnmarshalTimeSlice(getUnmarshalInfo(t), name)\n\t\t}\n\t\treturn makeUnmarshalTime(getUnmarshalInfo(t), name)\n\t}\n\n\tif isDuration {\n\t\tif pointer {\n\t\t\tif slice {\n\t\t\t\treturn makeUnmarshalDurationPtrSlice(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeUnmarshalDurationPtr(getUnmarshalInfo(t), name)\n\t\t}\n\t\tif slice {\n\t\t\treturn makeUnmarshalDurationSlice(getUnmarshalInfo(t), name)\n\t\t}\n\t\treturn makeUnmarshalDuration(getUnmarshalInfo(t), name)\n\t}\n\n\tif isWktPointer {\n\t\tswitch t.Kind() {\n\t\tcase reflect.Float64:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdDoubleValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t\t}\n\t\t\t\treturn makeStdDoubleValuePtrUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdDoubleValueSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeStdDoubleValueUnmarshaler(getUnmarshalInfo(t), name)\n\t\tcase reflect.Float32:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdFloatValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t\t}\n\t\t\t\treturn makeStdFloatValuePtrUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdFloatValueSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeStdFloatValueUnmarshaler(getUnmarshalInfo(t), name)\n\t\tcase reflect.Int64:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdInt64ValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t\t}\n\t\t\t\treturn makeStdInt64ValuePtrUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdInt64ValueSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeStdInt64ValueUnmarshaler(getUnmarshalInfo(t), name)\n\t\tcase reflect.Uint64:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdUInt64ValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t\t}\n\t\t\t\treturn makeStdUInt64ValuePtrUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdUInt64ValueSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeStdUInt64ValueUnmarshaler(getUnmarshalInfo(t), name)\n\t\tcase reflect.Int32:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdInt32ValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t\t}\n\t\t\t\treturn makeStdInt32ValuePtrUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdInt32ValueSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeStdInt32ValueUnmarshaler(getUnmarshalInfo(t), name)\n\t\tcase reflect.Uint32:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdUInt32ValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t\t}\n\t\t\t\treturn makeStdUInt32ValuePtrUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdUInt32ValueSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeStdUInt32ValueUnmarshaler(getUnmarshalInfo(t), name)\n\t\tcase reflect.Bool:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdBoolValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t\t}\n\t\t\t\treturn makeStdBoolValuePtrUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdBoolValueSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeStdBoolValueUnmarshaler(getUnmarshalInfo(t), name)\n\t\tcase reflect.String:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdStringValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t\t}\n\t\t\t\treturn makeStdStringValuePtrUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdStringValueSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeStdStringValueUnmarshaler(getUnmarshalInfo(t), name)\n\t\tcase uint8SliceType:\n\t\t\tif pointer {\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeStdBytesValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t\t}\n\t\t\t\treturn makeStdBytesValuePtrUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn makeStdBytesValueSliceUnmarshaler(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeStdBytesValueUnmarshaler(getUnmarshalInfo(t), name)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"unknown wktpointer type %#v\", t))\n\t\t}\n\t}\n\n\t// We'll never have both pointer and slice for basic types.\n\tif pointer && slice && t.Kind() != reflect.Struct {\n\t\tpanic(\"both pointer and slice for basic type in \" + t.Name())\n\t}\n\n\tswitch t.Kind() {\n\tcase reflect.Bool:\n\t\tif pointer {\n\t\t\treturn unmarshalBoolPtr\n\t\t}\n\t\tif slice {\n\t\t\treturn unmarshalBoolSlice\n\t\t}\n\t\treturn unmarshalBoolValue\n\tcase reflect.Int32:\n\t\tswitch encoding {\n\t\tcase \"fixed32\":\n\t\t\tif pointer {\n\t\t\t\treturn unmarshalFixedS32Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn unmarshalFixedS32Slice\n\t\t\t}\n\t\t\treturn unmarshalFixedS32Value\n\t\tcase \"varint\":\n\t\t\t// this could be int32 or enum\n\t\t\tif pointer {\n\t\t\t\treturn unmarshalInt32Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn unmarshalInt32Slice\n\t\t\t}\n\t\t\treturn unmarshalInt32Value\n\t\tcase \"zigzag32\":\n\t\t\tif pointer {\n\t\t\t\treturn unmarshalSint32Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn unmarshalSint32Slice\n\t\t\t}\n\t\t\treturn unmarshalSint32Value\n\t\t}\n\tcase reflect.Int64:\n\t\tswitch encoding {\n\t\tcase \"fixed64\":\n\t\t\tif pointer {\n\t\t\t\treturn unmarshalFixedS64Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn unmarshalFixedS64Slice\n\t\t\t}\n\t\t\treturn unmarshalFixedS64Value\n\t\tcase \"varint\":\n\t\t\tif pointer {\n\t\t\t\treturn unmarshalInt64Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn unmarshalInt64Slice\n\t\t\t}\n\t\t\treturn unmarshalInt64Value\n\t\tcase \"zigzag64\":\n\t\t\tif pointer {\n\t\t\t\treturn unmarshalSint64Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn unmarshalSint64Slice\n\t\t\t}\n\t\t\treturn unmarshalSint64Value\n\t\t}\n\tcase reflect.Uint32:\n\t\tswitch encoding {\n\t\tcase \"fixed32\":\n\t\t\tif pointer {\n\t\t\t\treturn unmarshalFixed32Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn unmarshalFixed32Slice\n\t\t\t}\n\t\t\treturn unmarshalFixed32Value\n\t\tcase \"varint\":\n\t\t\tif pointer {\n\t\t\t\treturn unmarshalUint32Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn unmarshalUint32Slice\n\t\t\t}\n\t\t\treturn unmarshalUint32Value\n\t\t}\n\tcase reflect.Uint64:\n\t\tswitch encoding {\n\t\tcase \"fixed64\":\n\t\t\tif pointer {\n\t\t\t\treturn unmarshalFixed64Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn unmarshalFixed64Slice\n\t\t\t}\n\t\t\treturn unmarshalFixed64Value\n\t\tcase \"varint\":\n\t\t\tif pointer {\n\t\t\t\treturn unmarshalUint64Ptr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn unmarshalUint64Slice\n\t\t\t}\n\t\t\treturn unmarshalUint64Value\n\t\t}\n\tcase reflect.Float32:\n\t\tif pointer {\n\t\t\treturn unmarshalFloat32Ptr\n\t\t}\n\t\tif slice {\n\t\t\treturn unmarshalFloat32Slice\n\t\t}\n\t\treturn unmarshalFloat32Value\n\tcase reflect.Float64:\n\t\tif pointer {\n\t\t\treturn unmarshalFloat64Ptr\n\t\t}\n\t\tif slice {\n\t\t\treturn unmarshalFloat64Slice\n\t\t}\n\t\treturn unmarshalFloat64Value\n\tcase reflect.Map:\n\t\tpanic(\"map type in typeUnmarshaler in \" + t.Name())\n\tcase reflect.Slice:\n\t\tif pointer {\n\t\t\tpanic(\"bad pointer in slice case in \" + t.Name())\n\t\t}\n\t\tif slice {\n\t\t\treturn unmarshalBytesSlice\n\t\t}\n\t\treturn unmarshalBytesValue\n\tcase reflect.String:\n\t\tif validateUTF8 {\n\t\t\tif pointer {\n\t\t\t\treturn unmarshalUTF8StringPtr\n\t\t\t}\n\t\t\tif slice {\n\t\t\t\treturn unmarshalUTF8StringSlice\n\t\t\t}\n\t\t\treturn unmarshalUTF8StringValue\n\t\t}\n\t\tif pointer {\n\t\t\treturn unmarshalStringPtr\n\t\t}\n\t\tif slice {\n\t\t\treturn unmarshalStringSlice\n\t\t}\n\t\treturn unmarshalStringValue\n\tcase reflect.Struct:\n\t\t// message or group field\n\t\tif !pointer {\n\t\t\tswitch encoding {\n\t\t\tcase \"bytes\":\n\t\t\t\tif slice {\n\t\t\t\t\treturn makeUnmarshalMessageSlice(getUnmarshalInfo(t), name)\n\t\t\t\t}\n\t\t\t\treturn makeUnmarshalMessage(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t}\n\t\tswitch encoding {\n\t\tcase \"bytes\":\n\t\t\tif slice {\n\t\t\t\treturn makeUnmarshalMessageSlicePtr(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeUnmarshalMessagePtr(getUnmarshalInfo(t), name)\n\t\tcase \"group\":\n\t\t\tif slice {\n\t\t\t\treturn makeUnmarshalGroupSlicePtr(getUnmarshalInfo(t), name)\n\t\t\t}\n\t\t\treturn makeUnmarshalGroupPtr(getUnmarshalInfo(t), name)\n\t\t}\n\t}\n\tpanic(fmt.Sprintf(\"unmarshaler not found type:%s encoding:%s\", t, encoding))\n}\n\n// Below are all the unmarshalers for individual fields of various types.\n\nfunc unmarshalInt64Value(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := int64(x)\n\t*f.toInt64() = v\n\treturn b, nil\n}\n\nfunc unmarshalInt64Ptr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := int64(x)\n\t*f.toInt64Ptr() = &v\n\treturn b, nil\n}\n\nfunc unmarshalInt64Slice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w == WireBytes { // packed\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tres := b[x:]\n\t\tb = b[:x]\n\t\tfor len(b) > 0 {\n\t\t\tx, n = decodeVarint(b)\n\t\t\tif n == 0 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tv := int64(x)\n\t\t\ts := f.toInt64Slice()\n\t\t\t*s = append(*s, v)\n\t\t}\n\t\treturn res, nil\n\t}\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := int64(x)\n\ts := f.toInt64Slice()\n\t*s = append(*s, v)\n\treturn b, nil\n}\n\nfunc unmarshalSint64Value(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := int64(x>>1) ^ int64(x)<<63>>63\n\t*f.toInt64() = v\n\treturn b, nil\n}\n\nfunc unmarshalSint64Ptr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := int64(x>>1) ^ int64(x)<<63>>63\n\t*f.toInt64Ptr() = &v\n\treturn b, nil\n}\n\nfunc unmarshalSint64Slice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w == WireBytes { // packed\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tres := b[x:]\n\t\tb = b[:x]\n\t\tfor len(b) > 0 {\n\t\t\tx, n = decodeVarint(b)\n\t\t\tif n == 0 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tv := int64(x>>1) ^ int64(x)<<63>>63\n\t\t\ts := f.toInt64Slice()\n\t\t\t*s = append(*s, v)\n\t\t}\n\t\treturn res, nil\n\t}\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := int64(x>>1) ^ int64(x)<<63>>63\n\ts := f.toInt64Slice()\n\t*s = append(*s, v)\n\treturn b, nil\n}\n\nfunc unmarshalUint64Value(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := uint64(x)\n\t*f.toUint64() = v\n\treturn b, nil\n}\n\nfunc unmarshalUint64Ptr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := uint64(x)\n\t*f.toUint64Ptr() = &v\n\treturn b, nil\n}\n\nfunc unmarshalUint64Slice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w == WireBytes { // packed\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tres := b[x:]\n\t\tb = b[:x]\n\t\tfor len(b) > 0 {\n\t\t\tx, n = decodeVarint(b)\n\t\t\tif n == 0 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tv := uint64(x)\n\t\t\ts := f.toUint64Slice()\n\t\t\t*s = append(*s, v)\n\t\t}\n\t\treturn res, nil\n\t}\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := uint64(x)\n\ts := f.toUint64Slice()\n\t*s = append(*s, v)\n\treturn b, nil\n}\n\nfunc unmarshalInt32Value(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := int32(x)\n\t*f.toInt32() = v\n\treturn b, nil\n}\n\nfunc unmarshalInt32Ptr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := int32(x)\n\tf.setInt32Ptr(v)\n\treturn b, nil\n}\n\nfunc unmarshalInt32Slice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w == WireBytes { // packed\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tres := b[x:]\n\t\tb = b[:x]\n\t\tfor len(b) > 0 {\n\t\t\tx, n = decodeVarint(b)\n\t\t\tif n == 0 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tv := int32(x)\n\t\t\tf.appendInt32Slice(v)\n\t\t}\n\t\treturn res, nil\n\t}\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := int32(x)\n\tf.appendInt32Slice(v)\n\treturn b, nil\n}\n\nfunc unmarshalSint32Value(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := int32(x>>1) ^ int32(x)<<31>>31\n\t*f.toInt32() = v\n\treturn b, nil\n}\n\nfunc unmarshalSint32Ptr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := int32(x>>1) ^ int32(x)<<31>>31\n\tf.setInt32Ptr(v)\n\treturn b, nil\n}\n\nfunc unmarshalSint32Slice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w == WireBytes { // packed\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tres := b[x:]\n\t\tb = b[:x]\n\t\tfor len(b) > 0 {\n\t\t\tx, n = decodeVarint(b)\n\t\t\tif n == 0 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tv := int32(x>>1) ^ int32(x)<<31>>31\n\t\t\tf.appendInt32Slice(v)\n\t\t}\n\t\treturn res, nil\n\t}\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := int32(x>>1) ^ int32(x)<<31>>31\n\tf.appendInt32Slice(v)\n\treturn b, nil\n}\n\nfunc unmarshalUint32Value(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := uint32(x)\n\t*f.toUint32() = v\n\treturn b, nil\n}\n\nfunc unmarshalUint32Ptr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := uint32(x)\n\t*f.toUint32Ptr() = &v\n\treturn b, nil\n}\n\nfunc unmarshalUint32Slice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w == WireBytes { // packed\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tres := b[x:]\n\t\tb = b[:x]\n\t\tfor len(b) > 0 {\n\t\t\tx, n = decodeVarint(b)\n\t\t\tif n == 0 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tv := uint32(x)\n\t\t\ts := f.toUint32Slice()\n\t\t\t*s = append(*s, v)\n\t\t}\n\t\treturn res, nil\n\t}\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tv := uint32(x)\n\ts := f.toUint32Slice()\n\t*s = append(*s, v)\n\treturn b, nil\n}\n\nfunc unmarshalFixed64Value(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireFixed64 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 8 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n\t*f.toUint64() = v\n\treturn b[8:], nil\n}\n\nfunc unmarshalFixed64Ptr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireFixed64 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 8 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n\t*f.toUint64Ptr() = &v\n\treturn b[8:], nil\n}\n\nfunc unmarshalFixed64Slice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w == WireBytes { // packed\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tres := b[x:]\n\t\tb = b[:x]\n\t\tfor len(b) > 0 {\n\t\t\tif len(b) < 8 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n\t\t\ts := f.toUint64Slice()\n\t\t\t*s = append(*s, v)\n\t\t\tb = b[8:]\n\t\t}\n\t\treturn res, nil\n\t}\n\tif w != WireFixed64 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 8 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n\ts := f.toUint64Slice()\n\t*s = append(*s, v)\n\treturn b[8:], nil\n}\n\nfunc unmarshalFixedS64Value(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireFixed64 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 8 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56\n\t*f.toInt64() = v\n\treturn b[8:], nil\n}\n\nfunc unmarshalFixedS64Ptr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireFixed64 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 8 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56\n\t*f.toInt64Ptr() = &v\n\treturn b[8:], nil\n}\n\nfunc unmarshalFixedS64Slice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w == WireBytes { // packed\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tres := b[x:]\n\t\tb = b[:x]\n\t\tfor len(b) > 0 {\n\t\t\tif len(b) < 8 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56\n\t\t\ts := f.toInt64Slice()\n\t\t\t*s = append(*s, v)\n\t\t\tb = b[8:]\n\t\t}\n\t\treturn res, nil\n\t}\n\tif w != WireFixed64 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 8 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56\n\ts := f.toInt64Slice()\n\t*s = append(*s, v)\n\treturn b[8:], nil\n}\n\nfunc unmarshalFixed32Value(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireFixed32 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 4 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24\n\t*f.toUint32() = v\n\treturn b[4:], nil\n}\n\nfunc unmarshalFixed32Ptr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireFixed32 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 4 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24\n\t*f.toUint32Ptr() = &v\n\treturn b[4:], nil\n}\n\nfunc unmarshalFixed32Slice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w == WireBytes { // packed\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tres := b[x:]\n\t\tb = b[:x]\n\t\tfor len(b) > 0 {\n\t\t\tif len(b) < 4 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24\n\t\t\ts := f.toUint32Slice()\n\t\t\t*s = append(*s, v)\n\t\t\tb = b[4:]\n\t\t}\n\t\treturn res, nil\n\t}\n\tif w != WireFixed32 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 4 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24\n\ts := f.toUint32Slice()\n\t*s = append(*s, v)\n\treturn b[4:], nil\n}\n\nfunc unmarshalFixedS32Value(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireFixed32 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 4 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24\n\t*f.toInt32() = v\n\treturn b[4:], nil\n}\n\nfunc unmarshalFixedS32Ptr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireFixed32 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 4 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24\n\tf.setInt32Ptr(v)\n\treturn b[4:], nil\n}\n\nfunc unmarshalFixedS32Slice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w == WireBytes { // packed\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tres := b[x:]\n\t\tb = b[:x]\n\t\tfor len(b) > 0 {\n\t\t\tif len(b) < 4 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24\n\t\t\tf.appendInt32Slice(v)\n\t\t\tb = b[4:]\n\t\t}\n\t\treturn res, nil\n\t}\n\tif w != WireFixed32 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 4 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24\n\tf.appendInt32Slice(v)\n\treturn b[4:], nil\n}\n\nfunc unmarshalBoolValue(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\t// Note: any length varint is allowed, even though any sane\n\t// encoder will use one byte.\n\t// See https://github.com/golang/protobuf/issues/76\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\t// TODO: check if x>1? Tests seem to indicate no.\n\tv := x != 0\n\t*f.toBool() = v\n\treturn b[n:], nil\n}\n\nfunc unmarshalBoolPtr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := x != 0\n\t*f.toBoolPtr() = &v\n\treturn b[n:], nil\n}\n\nfunc unmarshalBoolSlice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w == WireBytes { // packed\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tres := b[x:]\n\t\tb = b[:x]\n\t\tfor len(b) > 0 {\n\t\t\tx, n = decodeVarint(b)\n\t\t\tif n == 0 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := x != 0\n\t\t\ts := f.toBoolSlice()\n\t\t\t*s = append(*s, v)\n\t\t\tb = b[n:]\n\t\t}\n\t\treturn res, nil\n\t}\n\tif w != WireVarint {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := x != 0\n\ts := f.toBoolSlice()\n\t*s = append(*s, v)\n\treturn b[n:], nil\n}\n\nfunc unmarshalFloat64Value(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireFixed64 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 8 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56)\n\t*f.toFloat64() = v\n\treturn b[8:], nil\n}\n\nfunc unmarshalFloat64Ptr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireFixed64 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 8 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56)\n\t*f.toFloat64Ptr() = &v\n\treturn b[8:], nil\n}\n\nfunc unmarshalFloat64Slice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w == WireBytes { // packed\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tres := b[x:]\n\t\tb = b[:x]\n\t\tfor len(b) > 0 {\n\t\t\tif len(b) < 8 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56)\n\t\t\ts := f.toFloat64Slice()\n\t\t\t*s = append(*s, v)\n\t\t\tb = b[8:]\n\t\t}\n\t\treturn res, nil\n\t}\n\tif w != WireFixed64 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 8 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56)\n\ts := f.toFloat64Slice()\n\t*s = append(*s, v)\n\treturn b[8:], nil\n}\n\nfunc unmarshalFloat32Value(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireFixed32 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 4 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24)\n\t*f.toFloat32() = v\n\treturn b[4:], nil\n}\n\nfunc unmarshalFloat32Ptr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireFixed32 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 4 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24)\n\t*f.toFloat32Ptr() = &v\n\treturn b[4:], nil\n}\n\nfunc unmarshalFloat32Slice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w == WireBytes { // packed\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tres := b[x:]\n\t\tb = b[:x]\n\t\tfor len(b) > 0 {\n\t\t\tif len(b) < 4 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24)\n\t\t\ts := f.toFloat32Slice()\n\t\t\t*s = append(*s, v)\n\t\t\tb = b[4:]\n\t\t}\n\t\treturn res, nil\n\t}\n\tif w != WireFixed32 {\n\t\treturn b, errInternalBadWireType\n\t}\n\tif len(b) < 4 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24)\n\ts := f.toFloat32Slice()\n\t*s = append(*s, v)\n\treturn b[4:], nil\n}\n\nfunc unmarshalStringValue(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireBytes {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tif x > uint64(len(b)) {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := string(b[:x])\n\t*f.toString() = v\n\treturn b[x:], nil\n}\n\nfunc unmarshalStringPtr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireBytes {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tif x > uint64(len(b)) {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := string(b[:x])\n\t*f.toStringPtr() = &v\n\treturn b[x:], nil\n}\n\nfunc unmarshalStringSlice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireBytes {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tif x > uint64(len(b)) {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := string(b[:x])\n\ts := f.toStringSlice()\n\t*s = append(*s, v)\n\treturn b[x:], nil\n}\n\nfunc unmarshalUTF8StringValue(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireBytes {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tif x > uint64(len(b)) {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := string(b[:x])\n\t*f.toString() = v\n\tif !utf8.ValidString(v) {\n\t\treturn b[x:], errInvalidUTF8\n\t}\n\treturn b[x:], nil\n}\n\nfunc unmarshalUTF8StringPtr(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireBytes {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tif x > uint64(len(b)) {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := string(b[:x])\n\t*f.toStringPtr() = &v\n\tif !utf8.ValidString(v) {\n\t\treturn b[x:], errInvalidUTF8\n\t}\n\treturn b[x:], nil\n}\n\nfunc unmarshalUTF8StringSlice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireBytes {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tif x > uint64(len(b)) {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := string(b[:x])\n\ts := f.toStringSlice()\n\t*s = append(*s, v)\n\tif !utf8.ValidString(v) {\n\t\treturn b[x:], errInvalidUTF8\n\t}\n\treturn b[x:], nil\n}\n\nvar emptyBuf [0]byte\n\nfunc unmarshalBytesValue(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireBytes {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tif x > uint64(len(b)) {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\t// The use of append here is a trick which avoids the zeroing\n\t// that would be required if we used a make/copy pair.\n\t// We append to emptyBuf instead of nil because we want\n\t// a non-nil result even when the length is 0.\n\tv := append(emptyBuf[:], b[:x]...)\n\t*f.toBytes() = v\n\treturn b[x:], nil\n}\n\nfunc unmarshalBytesSlice(b []byte, f pointer, w int) ([]byte, error) {\n\tif w != WireBytes {\n\t\treturn b, errInternalBadWireType\n\t}\n\tx, n := decodeVarint(b)\n\tif n == 0 {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tb = b[n:]\n\tif x > uint64(len(b)) {\n\t\treturn nil, io.ErrUnexpectedEOF\n\t}\n\tv := append(emptyBuf[:], b[:x]...)\n\ts := f.toBytesSlice()\n\t*s = append(*s, v)\n\treturn b[x:], nil\n}\n\nfunc makeUnmarshalMessagePtr(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn b, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\t// First read the message field to see if something is there.\n\t\t// The semantics of multiple submessages are weird.  Instead of\n\t\t// the last one winning (as it is for all other fields), multiple\n\t\t// submessages are merged.\n\t\tv := f.getPointer()\n\t\tif v.isNil() {\n\t\t\tv = valToPointer(reflect.New(sub.typ))\n\t\t\tf.setPointer(v)\n\t\t}\n\t\terr := sub.unmarshal(v, b[:x])\n\t\tif err != nil {\n\t\t\tif r, ok := err.(*RequiredNotSetError); ok {\n\t\t\t\tr.field = name + \".\" + r.field\n\t\t\t} else {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn b[x:], err\n\t}\n}\n\nfunc makeUnmarshalMessageSlicePtr(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn b, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tv := valToPointer(reflect.New(sub.typ))\n\t\terr := sub.unmarshal(v, b[:x])\n\t\tif err != nil {\n\t\t\tif r, ok := err.(*RequiredNotSetError); ok {\n\t\t\t\tr.field = name + \".\" + r.field\n\t\t\t} else {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\tf.appendPointer(v)\n\t\treturn b[x:], err\n\t}\n}\n\nfunc makeUnmarshalGroupPtr(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireStartGroup {\n\t\t\treturn b, errInternalBadWireType\n\t\t}\n\t\tx, y := findEndGroup(b)\n\t\tif x < 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tv := f.getPointer()\n\t\tif v.isNil() {\n\t\t\tv = valToPointer(reflect.New(sub.typ))\n\t\t\tf.setPointer(v)\n\t\t}\n\t\terr := sub.unmarshal(v, b[:x])\n\t\tif err != nil {\n\t\t\tif r, ok := err.(*RequiredNotSetError); ok {\n\t\t\t\tr.field = name + \".\" + r.field\n\t\t\t} else {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn b[y:], err\n\t}\n}\n\nfunc makeUnmarshalGroupSlicePtr(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireStartGroup {\n\t\t\treturn b, errInternalBadWireType\n\t\t}\n\t\tx, y := findEndGroup(b)\n\t\tif x < 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tv := valToPointer(reflect.New(sub.typ))\n\t\terr := sub.unmarshal(v, b[:x])\n\t\tif err != nil {\n\t\t\tif r, ok := err.(*RequiredNotSetError); ok {\n\t\t\t\tr.field = name + \".\" + r.field\n\t\t\t} else {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\tf.appendPointer(v)\n\t\treturn b[y:], err\n\t}\n}\n\nfunc makeUnmarshalMap(f *reflect.StructField) unmarshaler {\n\tt := f.Type\n\tkt := t.Key()\n\tvt := t.Elem()\n\ttagArray := strings.Split(f.Tag.Get(\"protobuf\"), \",\")\n\tvalTags := strings.Split(f.Tag.Get(\"protobuf_val\"), \",\")\n\tfor _, t := range tagArray {\n\t\tif strings.HasPrefix(t, \"customtype=\") {\n\t\t\tvalTags = append(valTags, t)\n\t\t}\n\t\tif t == \"stdtime\" {\n\t\t\tvalTags = append(valTags, t)\n\t\t}\n\t\tif t == \"stdduration\" {\n\t\t\tvalTags = append(valTags, t)\n\t\t}\n\t\tif t == \"wktptr\" {\n\t\t\tvalTags = append(valTags, t)\n\t\t}\n\t}\n\tunmarshalKey := typeUnmarshaler(kt, f.Tag.Get(\"protobuf_key\"))\n\tunmarshalVal := typeUnmarshaler(vt, strings.Join(valTags, \",\"))\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\t// The map entry is a submessage. Figure out how big it is.\n\t\tif w != WireBytes {\n\t\t\treturn nil, fmt.Errorf(\"proto: bad wiretype for map field: got %d want %d\", w, WireBytes)\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tr := b[x:] // unused data to return\n\t\tb = b[:x]  // data for map entry\n\n\t\t// Note: we could use #keys * #values ~= 200 functions\n\t\t// to do map decoding without reflection. Probably not worth it.\n\t\t// Maps will be somewhat slow. Oh well.\n\n\t\t// Read key and value from data.\n\t\tvar nerr nonFatal\n\t\tk := reflect.New(kt)\n\t\tv := reflect.New(vt)\n\t\tfor len(b) > 0 {\n\t\t\tx, n := decodeVarint(b)\n\t\t\tif n == 0 {\n\t\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\twire := int(x) & 7\n\t\t\tb = b[n:]\n\n\t\t\tvar err error\n\t\t\tswitch x >> 3 {\n\t\t\tcase 1:\n\t\t\t\tb, err = unmarshalKey(b, valToPointer(k), wire)\n\t\t\tcase 2:\n\t\t\t\tb, err = unmarshalVal(b, valToPointer(v), wire)\n\t\t\tdefault:\n\t\t\t\terr = errInternalBadWireType // skip unknown tag\n\t\t\t}\n\n\t\t\tif nerr.Merge(err) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err != errInternalBadWireType {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\t// Skip past unknown fields.\n\t\t\tb, err = skipField(b, wire)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\t// Get map, allocate if needed.\n\t\tm := f.asPointerTo(t).Elem() // an addressable map[K]T\n\t\tif m.IsNil() {\n\t\t\tm.Set(reflect.MakeMap(t))\n\t\t}\n\n\t\t// Insert into map.\n\t\tm.SetMapIndex(k.Elem(), v.Elem())\n\n\t\treturn r, nerr.E\n\t}\n}\n\n// makeUnmarshalOneof makes an unmarshaler for oneof fields.\n// for:\n// message Msg {\n//   oneof F {\n//     int64 X = 1;\n//     float64 Y = 2;\n//   }\n// }\n// typ is the type of the concrete entry for a oneof case (e.g. Msg_X).\n// ityp is the interface type of the oneof field (e.g. isMsg_F).\n// unmarshal is the unmarshaler for the base type of the oneof case (e.g. int64).\n// Note that this function will be called once for each case in the oneof.\nfunc makeUnmarshalOneof(typ, ityp reflect.Type, unmarshal unmarshaler) unmarshaler {\n\tsf := typ.Field(0)\n\tfield0 := toField(&sf)\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\t// Allocate holder for value.\n\t\tv := reflect.New(typ)\n\n\t\t// Unmarshal data into holder.\n\t\t// We unmarshal into the first field of the holder object.\n\t\tvar err error\n\t\tvar nerr nonFatal\n\t\tb, err = unmarshal(b, valToPointer(v).offset(field0), w)\n\t\tif !nerr.Merge(err) {\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// Write pointer to holder into target field.\n\t\tf.asPointerTo(ityp).Elem().Set(v)\n\n\t\treturn b, nerr.E\n\t}\n}\n\n// Error used by decode internally.\nvar errInternalBadWireType = errors.New(\"proto: internal error: bad wiretype\")\n\n// skipField skips past a field of type wire and returns the remaining bytes.\nfunc skipField(b []byte, wire int) ([]byte, error) {\n\tswitch wire {\n\tcase WireVarint:\n\t\t_, k := decodeVarint(b)\n\t\tif k == 0 {\n\t\t\treturn b, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[k:]\n\tcase WireFixed32:\n\t\tif len(b) < 4 {\n\t\t\treturn b, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[4:]\n\tcase WireFixed64:\n\t\tif len(b) < 8 {\n\t\t\treturn b, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[8:]\n\tcase WireBytes:\n\t\tm, k := decodeVarint(b)\n\t\tif k == 0 || uint64(len(b)-k) < m {\n\t\t\treturn b, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[uint64(k)+m:]\n\tcase WireStartGroup:\n\t\t_, i := findEndGroup(b)\n\t\tif i == -1 {\n\t\t\treturn b, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[i:]\n\tdefault:\n\t\treturn b, fmt.Errorf(\"proto: can't skip unknown wire type %d\", wire)\n\t}\n\treturn b, nil\n}\n\n// findEndGroup finds the index of the next EndGroup tag.\n// Groups may be nested, so the \"next\" EndGroup tag is the first\n// unpaired EndGroup.\n// findEndGroup returns the indexes of the start and end of the EndGroup tag.\n// Returns (-1,-1) if it can't find one.\nfunc findEndGroup(b []byte) (int, int) {\n\tdepth := 1\n\ti := 0\n\tfor {\n\t\tx, n := decodeVarint(b[i:])\n\t\tif n == 0 {\n\t\t\treturn -1, -1\n\t\t}\n\t\tj := i\n\t\ti += n\n\t\tswitch x & 7 {\n\t\tcase WireVarint:\n\t\t\t_, k := decodeVarint(b[i:])\n\t\t\tif k == 0 {\n\t\t\t\treturn -1, -1\n\t\t\t}\n\t\t\ti += k\n\t\tcase WireFixed32:\n\t\t\tif len(b)-4 < i {\n\t\t\t\treturn -1, -1\n\t\t\t}\n\t\t\ti += 4\n\t\tcase WireFixed64:\n\t\t\tif len(b)-8 < i {\n\t\t\t\treturn -1, -1\n\t\t\t}\n\t\t\ti += 8\n\t\tcase WireBytes:\n\t\t\tm, k := decodeVarint(b[i:])\n\t\t\tif k == 0 {\n\t\t\t\treturn -1, -1\n\t\t\t}\n\t\t\ti += k\n\t\t\tif uint64(len(b)-i) < m {\n\t\t\t\treturn -1, -1\n\t\t\t}\n\t\t\ti += int(m)\n\t\tcase WireStartGroup:\n\t\t\tdepth++\n\t\tcase WireEndGroup:\n\t\t\tdepth--\n\t\t\tif depth == 0 {\n\t\t\t\treturn j, i\n\t\t\t}\n\t\tdefault:\n\t\t\treturn -1, -1\n\t\t}\n\t}\n}\n\n// encodeVarint appends a varint-encoded integer to b and returns the result.\nfunc encodeVarint(b []byte, x uint64) []byte {\n\tfor x >= 1<<7 {\n\t\tb = append(b, byte(x&0x7f|0x80))\n\t\tx >>= 7\n\t}\n\treturn append(b, byte(x))\n}\n\n// decodeVarint reads a varint-encoded integer from b.\n// Returns the decoded integer and the number of bytes read.\n// If there is an error, it returns 0,0.\nfunc decodeVarint(b []byte) (uint64, int) {\n\tvar x, y uint64\n\tif len(b) == 0 {\n\t\tgoto bad\n\t}\n\tx = uint64(b[0])\n\tif x < 0x80 {\n\t\treturn x, 1\n\t}\n\tx -= 0x80\n\n\tif len(b) <= 1 {\n\t\tgoto bad\n\t}\n\ty = uint64(b[1])\n\tx += y << 7\n\tif y < 0x80 {\n\t\treturn x, 2\n\t}\n\tx -= 0x80 << 7\n\n\tif len(b) <= 2 {\n\t\tgoto bad\n\t}\n\ty = uint64(b[2])\n\tx += y << 14\n\tif y < 0x80 {\n\t\treturn x, 3\n\t}\n\tx -= 0x80 << 14\n\n\tif len(b) <= 3 {\n\t\tgoto bad\n\t}\n\ty = uint64(b[3])\n\tx += y << 21\n\tif y < 0x80 {\n\t\treturn x, 4\n\t}\n\tx -= 0x80 << 21\n\n\tif len(b) <= 4 {\n\t\tgoto bad\n\t}\n\ty = uint64(b[4])\n\tx += y << 28\n\tif y < 0x80 {\n\t\treturn x, 5\n\t}\n\tx -= 0x80 << 28\n\n\tif len(b) <= 5 {\n\t\tgoto bad\n\t}\n\ty = uint64(b[5])\n\tx += y << 35\n\tif y < 0x80 {\n\t\treturn x, 6\n\t}\n\tx -= 0x80 << 35\n\n\tif len(b) <= 6 {\n\t\tgoto bad\n\t}\n\ty = uint64(b[6])\n\tx += y << 42\n\tif y < 0x80 {\n\t\treturn x, 7\n\t}\n\tx -= 0x80 << 42\n\n\tif len(b) <= 7 {\n\t\tgoto bad\n\t}\n\ty = uint64(b[7])\n\tx += y << 49\n\tif y < 0x80 {\n\t\treturn x, 8\n\t}\n\tx -= 0x80 << 49\n\n\tif len(b) <= 8 {\n\t\tgoto bad\n\t}\n\ty = uint64(b[8])\n\tx += y << 56\n\tif y < 0x80 {\n\t\treturn x, 9\n\t}\n\tx -= 0x80 << 56\n\n\tif len(b) <= 9 {\n\t\tgoto bad\n\t}\n\ty = uint64(b[9])\n\tx += y << 63\n\tif y < 2 {\n\t\treturn x, 10\n\t}\n\nbad:\n\treturn 0, 0\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/table_unmarshal_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"io\"\n\t\"reflect\"\n)\n\nfunc makeUnmarshalMessage(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\t// First read the message field to see if something is there.\n\t\t// The semantics of multiple submessages are weird.  Instead of\n\t\t// the last one winning (as it is for all other fields), multiple\n\t\t// submessages are merged.\n\t\tv := f // gogo: changed from v := f.getPointer()\n\t\tif v.isNil() {\n\t\t\tv = valToPointer(reflect.New(sub.typ))\n\t\t\tf.setPointer(v)\n\t\t}\n\t\terr := sub.unmarshal(v, b[:x])\n\t\tif err != nil {\n\t\t\tif r, ok := err.(*RequiredNotSetError); ok {\n\t\t\t\tr.field = name + \".\" + r.field\n\t\t\t} else {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn b[x:], err\n\t}\n}\n\nfunc makeUnmarshalMessageSlice(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tv := valToPointer(reflect.New(sub.typ))\n\t\terr := sub.unmarshal(v, b[:x])\n\t\tif err != nil {\n\t\t\tif r, ok := err.(*RequiredNotSetError); ok {\n\t\t\t\tr.field = name + \".\" + r.field\n\t\t\t} else {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\tf.appendRef(v, sub.typ) // gogo: changed from f.appendPointer(v)\n\t\treturn b[x:], err\n\t}\n}\n\nfunc makeUnmarshalCustomPtr(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\n\t\ts := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem()\n\t\ts.Set(reflect.New(sub.typ))\n\t\tm := s.Interface().(custom)\n\t\tif err := m.Unmarshal(b[:x]); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeUnmarshalCustomSlice(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := reflect.New(sub.typ)\n\t\tc := m.Interface().(custom)\n\t\tif err := c.Unmarshal(b[:x]); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tv := valToPointer(m)\n\t\tf.appendRef(v, sub.typ)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeUnmarshalCustom(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\n\t\tm := f.asPointerTo(sub.typ).Interface().(custom)\n\t\tif err := m.Unmarshal(b[:x]); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeUnmarshalTime(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &timestamp{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tt, err := timestampFromProto(m)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(sub.typ).Elem()\n\t\ts.Set(reflect.ValueOf(t))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeUnmarshalTimePtr(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &timestamp{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tt, err := timestampFromProto(m)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem()\n\t\ts.Set(reflect.ValueOf(&t))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeUnmarshalTimePtrSlice(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &timestamp{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tt, err := timestampFromProto(m)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(reflect.PtrTo(sub.typ))\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(&t))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeUnmarshalTimeSlice(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &timestamp{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tt, err := timestampFromProto(m)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(sub.typ)\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(t))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeUnmarshalDurationPtr(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &duration{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\td, err := durationFromProto(m)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem()\n\t\ts.Set(reflect.ValueOf(&d))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeUnmarshalDuration(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &duration{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\td, err := durationFromProto(m)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(sub.typ).Elem()\n\t\ts.Set(reflect.ValueOf(d))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeUnmarshalDurationPtrSlice(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &duration{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\td, err := durationFromProto(m)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(reflect.PtrTo(sub.typ))\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(&d))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeUnmarshalDurationSlice(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &duration{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\td, err := durationFromProto(m)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(sub.typ)\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(d))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/text.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2010 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\n// Functions for writing the text protocol buffer format.\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"encoding\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"math\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\nvar (\n\tnewline         = []byte(\"\\n\")\n\tspaces          = []byte(\"                                        \")\n\tendBraceNewline = []byte(\"}\\n\")\n\tbackslashN      = []byte{'\\\\', 'n'}\n\tbackslashR      = []byte{'\\\\', 'r'}\n\tbackslashT      = []byte{'\\\\', 't'}\n\tbackslashDQ     = []byte{'\\\\', '\"'}\n\tbackslashBS     = []byte{'\\\\', '\\\\'}\n\tposInf          = []byte(\"inf\")\n\tnegInf          = []byte(\"-inf\")\n\tnan             = []byte(\"nan\")\n)\n\ntype writer interface {\n\tio.Writer\n\tWriteByte(byte) error\n}\n\n// textWriter is an io.Writer that tracks its indentation level.\ntype textWriter struct {\n\tind      int\n\tcomplete bool // if the current position is a complete line\n\tcompact  bool // whether to write out as a one-liner\n\tw        writer\n}\n\nfunc (w *textWriter) WriteString(s string) (n int, err error) {\n\tif !strings.Contains(s, \"\\n\") {\n\t\tif !w.compact && w.complete {\n\t\t\tw.writeIndent()\n\t\t}\n\t\tw.complete = false\n\t\treturn io.WriteString(w.w, s)\n\t}\n\t// WriteString is typically called without newlines, so this\n\t// codepath and its copy are rare.  We copy to avoid\n\t// duplicating all of Write's logic here.\n\treturn w.Write([]byte(s))\n}\n\nfunc (w *textWriter) Write(p []byte) (n int, err error) {\n\tnewlines := bytes.Count(p, newline)\n\tif newlines == 0 {\n\t\tif !w.compact && w.complete {\n\t\t\tw.writeIndent()\n\t\t}\n\t\tn, err = w.w.Write(p)\n\t\tw.complete = false\n\t\treturn n, err\n\t}\n\n\tfrags := bytes.SplitN(p, newline, newlines+1)\n\tif w.compact {\n\t\tfor i, frag := range frags {\n\t\t\tif i > 0 {\n\t\t\t\tif err := w.w.WriteByte(' '); err != nil {\n\t\t\t\t\treturn n, err\n\t\t\t\t}\n\t\t\t\tn++\n\t\t\t}\n\t\t\tnn, err := w.w.Write(frag)\n\t\t\tn += nn\n\t\t\tif err != nil {\n\t\t\t\treturn n, err\n\t\t\t}\n\t\t}\n\t\treturn n, nil\n\t}\n\n\tfor i, frag := range frags {\n\t\tif w.complete {\n\t\t\tw.writeIndent()\n\t\t}\n\t\tnn, err := w.w.Write(frag)\n\t\tn += nn\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tif i+1 < len(frags) {\n\t\t\tif err := w.w.WriteByte('\\n'); err != nil {\n\t\t\t\treturn n, err\n\t\t\t}\n\t\t\tn++\n\t\t}\n\t}\n\tw.complete = len(frags[len(frags)-1]) == 0\n\treturn n, nil\n}\n\nfunc (w *textWriter) WriteByte(c byte) error {\n\tif w.compact && c == '\\n' {\n\t\tc = ' '\n\t}\n\tif !w.compact && w.complete {\n\t\tw.writeIndent()\n\t}\n\terr := w.w.WriteByte(c)\n\tw.complete = c == '\\n'\n\treturn err\n}\n\nfunc (w *textWriter) indent() { w.ind++ }\n\nfunc (w *textWriter) unindent() {\n\tif w.ind == 0 {\n\t\tlog.Print(\"proto: textWriter unindented too far\")\n\t\treturn\n\t}\n\tw.ind--\n}\n\nfunc writeName(w *textWriter, props *Properties) error {\n\tif _, err := w.WriteString(props.OrigName); err != nil {\n\t\treturn err\n\t}\n\tif props.Wire != \"group\" {\n\t\treturn w.WriteByte(':')\n\t}\n\treturn nil\n}\n\nfunc requiresQuotes(u string) bool {\n\t// When type URL contains any characters except [0-9A-Za-z./\\-]*, it must be quoted.\n\tfor _, ch := range u {\n\t\tswitch {\n\t\tcase ch == '.' || ch == '/' || ch == '_':\n\t\t\tcontinue\n\t\tcase '0' <= ch && ch <= '9':\n\t\t\tcontinue\n\t\tcase 'A' <= ch && ch <= 'Z':\n\t\t\tcontinue\n\t\tcase 'a' <= ch && ch <= 'z':\n\t\t\tcontinue\n\t\tdefault:\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// isAny reports whether sv is a google.protobuf.Any message\nfunc isAny(sv reflect.Value) bool {\n\ttype wkt interface {\n\t\tXXX_WellKnownType() string\n\t}\n\tt, ok := sv.Addr().Interface().(wkt)\n\treturn ok && t.XXX_WellKnownType() == \"Any\"\n}\n\n// writeProto3Any writes an expanded google.protobuf.Any message.\n//\n// It returns (false, nil) if sv value can't be unmarshaled (e.g. because\n// required messages are not linked in).\n//\n// It returns (true, error) when sv was written in expanded format or an error\n// was encountered.\nfunc (tm *TextMarshaler) writeProto3Any(w *textWriter, sv reflect.Value) (bool, error) {\n\tturl := sv.FieldByName(\"TypeUrl\")\n\tval := sv.FieldByName(\"Value\")\n\tif !turl.IsValid() || !val.IsValid() {\n\t\treturn true, errors.New(\"proto: invalid google.protobuf.Any message\")\n\t}\n\n\tb, ok := val.Interface().([]byte)\n\tif !ok {\n\t\treturn true, errors.New(\"proto: invalid google.protobuf.Any message\")\n\t}\n\n\tparts := strings.Split(turl.String(), \"/\")\n\tmt := MessageType(parts[len(parts)-1])\n\tif mt == nil {\n\t\treturn false, nil\n\t}\n\tm := reflect.New(mt.Elem())\n\tif err := Unmarshal(b, m.Interface().(Message)); err != nil {\n\t\treturn false, nil\n\t}\n\tw.Write([]byte(\"[\"))\n\tu := turl.String()\n\tif requiresQuotes(u) {\n\t\twriteString(w, u)\n\t} else {\n\t\tw.Write([]byte(u))\n\t}\n\tif w.compact {\n\t\tw.Write([]byte(\"]:<\"))\n\t} else {\n\t\tw.Write([]byte(\"]: <\\n\"))\n\t\tw.ind++\n\t}\n\tif err := tm.writeStruct(w, m.Elem()); err != nil {\n\t\treturn true, err\n\t}\n\tif w.compact {\n\t\tw.Write([]byte(\"> \"))\n\t} else {\n\t\tw.ind--\n\t\tw.Write([]byte(\">\\n\"))\n\t}\n\treturn true, nil\n}\n\nfunc (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error {\n\tif tm.ExpandAny && isAny(sv) {\n\t\tif canExpand, err := tm.writeProto3Any(w, sv); canExpand {\n\t\t\treturn err\n\t\t}\n\t}\n\tst := sv.Type()\n\tsprops := GetProperties(st)\n\tfor i := 0; i < sv.NumField(); i++ {\n\t\tfv := sv.Field(i)\n\t\tprops := sprops.Prop[i]\n\t\tname := st.Field(i).Name\n\n\t\tif name == \"XXX_NoUnkeyedLiteral\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tif strings.HasPrefix(name, \"XXX_\") {\n\t\t\t// There are two XXX_ fields:\n\t\t\t//   XXX_unrecognized []byte\n\t\t\t//   XXX_extensions   map[int32]proto.Extension\n\t\t\t// The first is handled here;\n\t\t\t// the second is handled at the bottom of this function.\n\t\t\tif name == \"XXX_unrecognized\" && !fv.IsNil() {\n\t\t\t\tif err := writeUnknownStruct(w, fv.Interface().([]byte)); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif fv.Kind() == reflect.Ptr && fv.IsNil() {\n\t\t\t// Field not filled in. This could be an optional field or\n\t\t\t// a required field that wasn't filled in. Either way, there\n\t\t\t// isn't anything we can show for it.\n\t\t\tcontinue\n\t\t}\n\t\tif fv.Kind() == reflect.Slice && fv.IsNil() {\n\t\t\t// Repeated field that is empty, or a bytes field that is unused.\n\t\t\tcontinue\n\t\t}\n\n\t\tif props.Repeated && fv.Kind() == reflect.Slice {\n\t\t\t// Repeated field.\n\t\t\tfor j := 0; j < fv.Len(); j++ {\n\t\t\t\tif err := writeName(w, props); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif !w.compact {\n\t\t\t\t\tif err := w.WriteByte(' '); 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\tv := fv.Index(j)\n\t\t\t\tif v.Kind() == reflect.Ptr && v.IsNil() {\n\t\t\t\t\t// A nil message in a repeated field is not valid,\n\t\t\t\t\t// but we can handle that more gracefully than panicking.\n\t\t\t\t\tif _, err := w.Write([]byte(\"<nil>\\n\")); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif len(props.Enum) > 0 {\n\t\t\t\t\tif err := tm.writeEnum(w, v, props); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t} else if err := tm.writeAny(w, v, props); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := w.WriteByte('\\n'); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif fv.Kind() == reflect.Map {\n\t\t\t// Map fields are rendered as a repeated struct with key/value fields.\n\t\t\tkeys := fv.MapKeys()\n\t\t\tsort.Sort(mapKeys(keys))\n\t\t\tfor _, key := range keys {\n\t\t\t\tval := fv.MapIndex(key)\n\t\t\t\tif err := writeName(w, props); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif !w.compact {\n\t\t\t\t\tif err := w.WriteByte(' '); 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\t// open struct\n\t\t\t\tif err := w.WriteByte('<'); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif !w.compact {\n\t\t\t\t\tif err := w.WriteByte('\\n'); 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\tw.indent()\n\t\t\t\t// key\n\t\t\t\tif _, err := w.WriteString(\"key:\"); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif !w.compact {\n\t\t\t\t\tif err := w.WriteByte(' '); 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\tif err := tm.writeAny(w, key, props.MapKeyProp); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := w.WriteByte('\\n'); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\t// nil values aren't legal, but we can avoid panicking because of them.\n\t\t\t\tif val.Kind() != reflect.Ptr || !val.IsNil() {\n\t\t\t\t\t// value\n\t\t\t\t\tif _, err := w.WriteString(\"value:\"); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif !w.compact {\n\t\t\t\t\t\tif err := w.WriteByte(' '); 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\tif err := tm.writeAny(w, val, props.MapValProp); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif err := w.WriteByte('\\n'); 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\t// close struct\n\t\t\t\tw.unindent()\n\t\t\t\tif err := w.WriteByte('>'); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := w.WriteByte('\\n'); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif props.proto3 && fv.Kind() == reflect.Slice && fv.Len() == 0 {\n\t\t\t// empty bytes field\n\t\t\tcontinue\n\t\t}\n\t\tif props.proto3 && fv.Kind() != reflect.Ptr && fv.Kind() != reflect.Slice {\n\t\t\t// proto3 non-repeated scalar field; skip if zero value\n\t\t\tif isProto3Zero(fv) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif fv.Kind() == reflect.Interface {\n\t\t\t// Check if it is a oneof.\n\t\t\tif st.Field(i).Tag.Get(\"protobuf_oneof\") != \"\" {\n\t\t\t\t// fv is nil, or holds a pointer to generated struct.\n\t\t\t\t// That generated struct has exactly one field,\n\t\t\t\t// which has a protobuf struct tag.\n\t\t\t\tif fv.IsNil() {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tinner := fv.Elem().Elem() // interface -> *T -> T\n\t\t\t\ttag := inner.Type().Field(0).Tag.Get(\"protobuf\")\n\t\t\t\tprops = new(Properties) // Overwrite the outer props var, but not its pointee.\n\t\t\t\tprops.Parse(tag)\n\t\t\t\t// Write the value in the oneof, not the oneof itself.\n\t\t\t\tfv = inner.Field(0)\n\n\t\t\t\t// Special case to cope with malformed messages gracefully:\n\t\t\t\t// If the value in the oneof is a nil pointer, don't panic\n\t\t\t\t// in writeAny.\n\t\t\t\tif fv.Kind() == reflect.Ptr && fv.IsNil() {\n\t\t\t\t\t// Use errors.New so writeAny won't render quotes.\n\t\t\t\t\tmsg := errors.New(\"/* nil */\")\n\t\t\t\t\tfv = reflect.ValueOf(&msg).Elem()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif err := writeName(w, props); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif !w.compact {\n\t\t\tif err := w.WriteByte(' '); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tif len(props.Enum) > 0 {\n\t\t\tif err := tm.writeEnum(w, fv, props); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else if err := tm.writeAny(w, fv, props); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif err := w.WriteByte('\\n'); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Extensions (the XXX_extensions field).\n\tpv := sv\n\tif pv.CanAddr() {\n\t\tpv = sv.Addr()\n\t} else {\n\t\tpv = reflect.New(sv.Type())\n\t\tpv.Elem().Set(sv)\n\t}\n\tif _, err := extendable(pv.Interface()); err == nil {\n\t\tif err := tm.writeExtensions(w, pv); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nvar textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem()\n\n// writeAny writes an arbitrary field.\nfunc (tm *TextMarshaler) writeAny(w *textWriter, v reflect.Value, props *Properties) error {\n\tv = reflect.Indirect(v)\n\n\tif props != nil {\n\t\tif len(props.CustomType) > 0 {\n\t\t\tcustom, ok := v.Interface().(Marshaler)\n\t\t\tif ok {\n\t\t\t\tdata, err := custom.Marshal()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err := writeString(w, string(data)); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t}\n\t\t} else if len(props.CastType) > 0 {\n\t\t\tif _, ok := v.Interface().(interface {\n\t\t\t\tString() string\n\t\t\t}); ok {\n\t\t\t\tswitch v.Kind() {\n\t\t\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,\n\t\t\t\t\treflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\t\t\t_, err := fmt.Fprintf(w, \"%d\", v.Interface())\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t} else if props.StdTime {\n\t\t\tt, ok := v.Interface().(time.Time)\n\t\t\tif !ok {\n\t\t\t\treturn fmt.Errorf(\"stdtime is not time.Time, but %T\", v.Interface())\n\t\t\t}\n\t\t\ttproto, err := timestampProto(t)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tpropsCopy := *props // Make a copy so that this is goroutine-safe\n\t\t\tpropsCopy.StdTime = false\n\t\t\terr = tm.writeAny(w, reflect.ValueOf(tproto), &propsCopy)\n\t\t\treturn err\n\t\t} else if props.StdDuration {\n\t\t\td, ok := v.Interface().(time.Duration)\n\t\t\tif !ok {\n\t\t\t\treturn fmt.Errorf(\"stdtime is not time.Duration, but %T\", v.Interface())\n\t\t\t}\n\t\t\tdproto := durationProto(d)\n\t\t\tpropsCopy := *props // Make a copy so that this is goroutine-safe\n\t\t\tpropsCopy.StdDuration = false\n\t\t\terr := tm.writeAny(w, reflect.ValueOf(dproto), &propsCopy)\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Floats have special cases.\n\tif v.Kind() == reflect.Float32 || v.Kind() == reflect.Float64 {\n\t\tx := v.Float()\n\t\tvar b []byte\n\t\tswitch {\n\t\tcase math.IsInf(x, 1):\n\t\t\tb = posInf\n\t\tcase math.IsInf(x, -1):\n\t\t\tb = negInf\n\t\tcase math.IsNaN(x):\n\t\t\tb = nan\n\t\t}\n\t\tif b != nil {\n\t\t\t_, err := w.Write(b)\n\t\t\treturn err\n\t\t}\n\t\t// Other values are handled below.\n\t}\n\n\t// We don't attempt to serialise every possible value type; only those\n\t// that can occur in protocol buffers.\n\tswitch v.Kind() {\n\tcase reflect.Slice:\n\t\t// Should only be a []byte; repeated fields are handled in writeStruct.\n\t\tif err := writeString(w, string(v.Bytes())); err != nil {\n\t\t\treturn err\n\t\t}\n\tcase reflect.String:\n\t\tif err := writeString(w, v.String()); err != nil {\n\t\t\treturn err\n\t\t}\n\tcase reflect.Struct:\n\t\t// Required/optional group/message.\n\t\tvar bra, ket byte = '<', '>'\n\t\tif props != nil && props.Wire == \"group\" {\n\t\t\tbra, ket = '{', '}'\n\t\t}\n\t\tif err := w.WriteByte(bra); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif !w.compact {\n\t\t\tif err := w.WriteByte('\\n'); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tw.indent()\n\t\tif v.CanAddr() {\n\t\t\t// Calling v.Interface on a struct causes the reflect package to\n\t\t\t// copy the entire struct. This is racy with the new Marshaler\n\t\t\t// since we atomically update the XXX_sizecache.\n\t\t\t//\n\t\t\t// Thus, we retrieve a pointer to the struct if possible to avoid\n\t\t\t// a race since v.Interface on the pointer doesn't copy the struct.\n\t\t\t//\n\t\t\t// If v is not addressable, then we are not worried about a race\n\t\t\t// since it implies that the binary Marshaler cannot possibly be\n\t\t\t// mutating this value.\n\t\t\tv = v.Addr()\n\t\t}\n\t\tif v.Type().Implements(textMarshalerType) {\n\t\t\ttext, err := v.Interface().(encoding.TextMarshaler).MarshalText()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif _, err = w.Write(text); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\tif v.Kind() == reflect.Ptr {\n\t\t\t\tv = v.Elem()\n\t\t\t}\n\t\t\tif err := tm.writeStruct(w, v); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tw.unindent()\n\t\tif err := w.WriteByte(ket); err != nil {\n\t\t\treturn err\n\t\t}\n\tdefault:\n\t\t_, err := fmt.Fprint(w, v.Interface())\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// equivalent to C's isprint.\nfunc isprint(c byte) bool {\n\treturn c >= 0x20 && c < 0x7f\n}\n\n// writeString writes a string in the protocol buffer text format.\n// It is similar to strconv.Quote except we don't use Go escape sequences,\n// we treat the string as a byte sequence, and we use octal escapes.\n// These differences are to maintain interoperability with the other\n// languages' implementations of the text format.\nfunc writeString(w *textWriter, s string) error {\n\t// use WriteByte here to get any needed indent\n\tif err := w.WriteByte('\"'); err != nil {\n\t\treturn err\n\t}\n\t// Loop over the bytes, not the runes.\n\tfor i := 0; i < len(s); i++ {\n\t\tvar err error\n\t\t// Divergence from C++: we don't escape apostrophes.\n\t\t// There's no need to escape them, and the C++ parser\n\t\t// copes with a naked apostrophe.\n\t\tswitch c := s[i]; c {\n\t\tcase '\\n':\n\t\t\t_, err = w.w.Write(backslashN)\n\t\tcase '\\r':\n\t\t\t_, err = w.w.Write(backslashR)\n\t\tcase '\\t':\n\t\t\t_, err = w.w.Write(backslashT)\n\t\tcase '\"':\n\t\t\t_, err = w.w.Write(backslashDQ)\n\t\tcase '\\\\':\n\t\t\t_, err = w.w.Write(backslashBS)\n\t\tdefault:\n\t\t\tif isprint(c) {\n\t\t\t\terr = w.w.WriteByte(c)\n\t\t\t} else {\n\t\t\t\t_, err = fmt.Fprintf(w.w, \"\\\\%03o\", c)\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn w.WriteByte('\"')\n}\n\nfunc writeUnknownStruct(w *textWriter, data []byte) (err error) {\n\tif !w.compact {\n\t\tif _, err := fmt.Fprintf(w, \"/* %d unknown bytes */\\n\", len(data)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tb := NewBuffer(data)\n\tfor b.index < len(b.buf) {\n\t\tx, err := b.DecodeVarint()\n\t\tif err != nil {\n\t\t\t_, ferr := fmt.Fprintf(w, \"/* %v */\\n\", err)\n\t\t\treturn ferr\n\t\t}\n\t\twire, tag := x&7, x>>3\n\t\tif wire == WireEndGroup {\n\t\t\tw.unindent()\n\t\t\tif _, werr := w.Write(endBraceNewline); werr != nil {\n\t\t\t\treturn werr\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif _, ferr := fmt.Fprint(w, tag); ferr != nil {\n\t\t\treturn ferr\n\t\t}\n\t\tif wire != WireStartGroup {\n\t\t\tif err = w.WriteByte(':'); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tif !w.compact || wire == WireStartGroup {\n\t\t\tif err = w.WriteByte(' '); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tswitch wire {\n\t\tcase WireBytes:\n\t\t\tbuf, e := b.DecodeRawBytes(false)\n\t\t\tif e == nil {\n\t\t\t\t_, err = fmt.Fprintf(w, \"%q\", buf)\n\t\t\t} else {\n\t\t\t\t_, err = fmt.Fprintf(w, \"/* %v */\", e)\n\t\t\t}\n\t\tcase WireFixed32:\n\t\t\tx, err = b.DecodeFixed32()\n\t\t\terr = writeUnknownInt(w, x, err)\n\t\tcase WireFixed64:\n\t\t\tx, err = b.DecodeFixed64()\n\t\t\terr = writeUnknownInt(w, x, err)\n\t\tcase WireStartGroup:\n\t\t\terr = w.WriteByte('{')\n\t\t\tw.indent()\n\t\tcase WireVarint:\n\t\t\tx, err = b.DecodeVarint()\n\t\t\terr = writeUnknownInt(w, x, err)\n\t\tdefault:\n\t\t\t_, err = fmt.Fprintf(w, \"/* unknown wire type %d */\", wire)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := w.WriteByte('\\n'); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc writeUnknownInt(w *textWriter, x uint64, err error) error {\n\tif err == nil {\n\t\t_, err = fmt.Fprint(w, x)\n\t} else {\n\t\t_, err = fmt.Fprintf(w, \"/* %v */\", err)\n\t}\n\treturn err\n}\n\ntype int32Slice []int32\n\nfunc (s int32Slice) Len() int           { return len(s) }\nfunc (s int32Slice) Less(i, j int) bool { return s[i] < s[j] }\nfunc (s int32Slice) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }\n\n// writeExtensions writes all the extensions in pv.\n// pv is assumed to be a pointer to a protocol message struct that is extendable.\nfunc (tm *TextMarshaler) writeExtensions(w *textWriter, pv reflect.Value) error {\n\temap := extensionMaps[pv.Type().Elem()]\n\te := pv.Interface().(Message)\n\n\tvar m map[int32]Extension\n\tvar mu sync.Locker\n\tif em, ok := e.(extensionsBytes); ok {\n\t\teb := em.GetExtensions()\n\t\tvar err error\n\t\tm, err = BytesToExtensionsMap(*eb)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmu = notLocker{}\n\t} else if _, ok := e.(extendableProto); ok {\n\t\tep, _ := extendable(e)\n\t\tm, mu = ep.extensionsRead()\n\t\tif m == nil {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\t// Order the extensions by ID.\n\t// This isn't strictly necessary, but it will give us\n\t// canonical output, which will also make testing easier.\n\n\tmu.Lock()\n\tids := make([]int32, 0, len(m))\n\tfor id := range m {\n\t\tids = append(ids, id)\n\t}\n\tsort.Sort(int32Slice(ids))\n\tmu.Unlock()\n\n\tfor _, extNum := range ids {\n\t\text := m[extNum]\n\t\tvar desc *ExtensionDesc\n\t\tif emap != nil {\n\t\t\tdesc = emap[extNum]\n\t\t}\n\t\tif desc == nil {\n\t\t\t// Unknown extension.\n\t\t\tif err := writeUnknownStruct(w, ext.enc); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tpb, err := GetExtension(e, desc)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed getting extension: %v\", err)\n\t\t}\n\n\t\t// Repeated extensions will appear as a slice.\n\t\tif !desc.repeated() {\n\t\t\tif err := tm.writeExtension(w, desc.Name, pb); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\tv := reflect.ValueOf(pb)\n\t\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\t\tif err := tm.writeExtension(w, desc.Name, v.Index(i).Interface()); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (tm *TextMarshaler) writeExtension(w *textWriter, name string, pb interface{}) error {\n\tif _, err := fmt.Fprintf(w, \"[%s]:\", name); err != nil {\n\t\treturn err\n\t}\n\tif !w.compact {\n\t\tif err := w.WriteByte(' '); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif err := tm.writeAny(w, reflect.ValueOf(pb), nil); err != nil {\n\t\treturn err\n\t}\n\tif err := w.WriteByte('\\n'); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (w *textWriter) writeIndent() {\n\tif !w.complete {\n\t\treturn\n\t}\n\tremain := w.ind * 2\n\tfor remain > 0 {\n\t\tn := remain\n\t\tif n > len(spaces) {\n\t\t\tn = len(spaces)\n\t\t}\n\t\tw.w.Write(spaces[:n])\n\t\tremain -= n\n\t}\n\tw.complete = false\n}\n\n// TextMarshaler is a configurable text format marshaler.\ntype TextMarshaler struct {\n\tCompact   bool // use compact text format (one line).\n\tExpandAny bool // expand google.protobuf.Any messages of known types\n}\n\n// Marshal writes a given protocol buffer in text format.\n// The only errors returned are from w.\nfunc (tm *TextMarshaler) Marshal(w io.Writer, pb Message) error {\n\tval := reflect.ValueOf(pb)\n\tif pb == nil || val.IsNil() {\n\t\tw.Write([]byte(\"<nil>\"))\n\t\treturn nil\n\t}\n\tvar bw *bufio.Writer\n\tww, ok := w.(writer)\n\tif !ok {\n\t\tbw = bufio.NewWriter(w)\n\t\tww = bw\n\t}\n\taw := &textWriter{\n\t\tw:        ww,\n\t\tcomplete: true,\n\t\tcompact:  tm.Compact,\n\t}\n\n\tif etm, ok := pb.(encoding.TextMarshaler); ok {\n\t\ttext, err := etm.MarshalText()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif _, err = aw.Write(text); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif bw != nil {\n\t\t\treturn bw.Flush()\n\t\t}\n\t\treturn nil\n\t}\n\t// Dereference the received pointer so we don't have outer < and >.\n\tv := reflect.Indirect(val)\n\tif err := tm.writeStruct(aw, v); err != nil {\n\t\treturn err\n\t}\n\tif bw != nil {\n\t\treturn bw.Flush()\n\t}\n\treturn nil\n}\n\n// Text is the same as Marshal, but returns the string directly.\nfunc (tm *TextMarshaler) Text(pb Message) string {\n\tvar buf bytes.Buffer\n\ttm.Marshal(&buf, pb)\n\treturn buf.String()\n}\n\nvar (\n\tdefaultTextMarshaler = TextMarshaler{}\n\tcompactTextMarshaler = TextMarshaler{Compact: true}\n)\n\n// TODO: consider removing some of the Marshal functions below.\n\n// MarshalText writes a given protocol buffer in text format.\n// The only errors returned are from w.\nfunc MarshalText(w io.Writer, pb Message) error { return defaultTextMarshaler.Marshal(w, pb) }\n\n// MarshalTextString is the same as MarshalText, but returns the string directly.\nfunc MarshalTextString(pb Message) string { return defaultTextMarshaler.Text(pb) }\n\n// CompactText writes a given protocol buffer in compact text format (one line).\nfunc CompactText(w io.Writer, pb Message) error { return compactTextMarshaler.Marshal(w, pb) }\n\n// CompactTextString is the same as CompactText, but returns the string directly.\nfunc CompactTextString(pb Message) string { return compactTextMarshaler.Text(pb) }\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/text_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n)\n\nfunc (tm *TextMarshaler) writeEnum(w *textWriter, v reflect.Value, props *Properties) error {\n\tm, ok := enumStringMaps[props.Enum]\n\tif !ok {\n\t\tif err := tm.writeAny(w, v, props); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tkey := int32(0)\n\tif v.Kind() == reflect.Ptr {\n\t\tkey = int32(v.Elem().Int())\n\t} else {\n\t\tkey = int32(v.Int())\n\t}\n\ts, ok := m[key]\n\tif !ok {\n\t\tif err := tm.writeAny(w, v, props); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err := fmt.Fprint(w, s)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/text_parser.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2010 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\n// Functions for parsing the Text protocol buffer format.\n// TODO: message sets.\n\nimport (\n\t\"encoding\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\n// Error string emitted when deserializing Any and fields are already set\nconst anyRepeatedlyUnpacked = \"Any message unpacked multiple times, or %q already set\"\n\ntype ParseError struct {\n\tMessage string\n\tLine    int // 1-based line number\n\tOffset  int // 0-based byte offset from start of input\n}\n\nfunc (p *ParseError) Error() string {\n\tif p.Line == 1 {\n\t\t// show offset only for first line\n\t\treturn fmt.Sprintf(\"line 1.%d: %v\", p.Offset, p.Message)\n\t}\n\treturn fmt.Sprintf(\"line %d: %v\", p.Line, p.Message)\n}\n\ntype token struct {\n\tvalue    string\n\terr      *ParseError\n\tline     int    // line number\n\toffset   int    // byte number from start of input, not start of line\n\tunquoted string // the unquoted version of value, if it was a quoted string\n}\n\nfunc (t *token) String() string {\n\tif t.err == nil {\n\t\treturn fmt.Sprintf(\"%q (line=%d, offset=%d)\", t.value, t.line, t.offset)\n\t}\n\treturn fmt.Sprintf(\"parse error: %v\", t.err)\n}\n\ntype textParser struct {\n\ts            string // remaining input\n\tdone         bool   // whether the parsing is finished (success or error)\n\tbacked       bool   // whether back() was called\n\toffset, line int\n\tcur          token\n}\n\nfunc newTextParser(s string) *textParser {\n\tp := new(textParser)\n\tp.s = s\n\tp.line = 1\n\tp.cur.line = 1\n\treturn p\n}\n\nfunc (p *textParser) errorf(format string, a ...interface{}) *ParseError {\n\tpe := &ParseError{fmt.Sprintf(format, a...), p.cur.line, p.cur.offset}\n\tp.cur.err = pe\n\tp.done = true\n\treturn pe\n}\n\n// Numbers and identifiers are matched by [-+._A-Za-z0-9]\nfunc isIdentOrNumberChar(c byte) bool {\n\tswitch {\n\tcase 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z':\n\t\treturn true\n\tcase '0' <= c && c <= '9':\n\t\treturn true\n\t}\n\tswitch c {\n\tcase '-', '+', '.', '_':\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc isWhitespace(c byte) bool {\n\tswitch c {\n\tcase ' ', '\\t', '\\n', '\\r':\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc isQuote(c byte) bool {\n\tswitch c {\n\tcase '\"', '\\'':\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (p *textParser) skipWhitespace() {\n\ti := 0\n\tfor i < len(p.s) && (isWhitespace(p.s[i]) || p.s[i] == '#') {\n\t\tif p.s[i] == '#' {\n\t\t\t// comment; skip to end of line or input\n\t\t\tfor i < len(p.s) && p.s[i] != '\\n' {\n\t\t\t\ti++\n\t\t\t}\n\t\t\tif i == len(p.s) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif p.s[i] == '\\n' {\n\t\t\tp.line++\n\t\t}\n\t\ti++\n\t}\n\tp.offset += i\n\tp.s = p.s[i:len(p.s)]\n\tif len(p.s) == 0 {\n\t\tp.done = true\n\t}\n}\n\nfunc (p *textParser) advance() {\n\t// Skip whitespace\n\tp.skipWhitespace()\n\tif p.done {\n\t\treturn\n\t}\n\n\t// Start of non-whitespace\n\tp.cur.err = nil\n\tp.cur.offset, p.cur.line = p.offset, p.line\n\tp.cur.unquoted = \"\"\n\tswitch p.s[0] {\n\tcase '<', '>', '{', '}', ':', '[', ']', ';', ',', '/':\n\t\t// Single symbol\n\t\tp.cur.value, p.s = p.s[0:1], p.s[1:len(p.s)]\n\tcase '\"', '\\'':\n\t\t// Quoted string\n\t\ti := 1\n\t\tfor i < len(p.s) && p.s[i] != p.s[0] && p.s[i] != '\\n' {\n\t\t\tif p.s[i] == '\\\\' && i+1 < len(p.s) {\n\t\t\t\t// skip escaped char\n\t\t\t\ti++\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t\tif i >= len(p.s) || p.s[i] != p.s[0] {\n\t\t\tp.errorf(\"unmatched quote\")\n\t\t\treturn\n\t\t}\n\t\tunq, err := unquoteC(p.s[1:i], rune(p.s[0]))\n\t\tif err != nil {\n\t\t\tp.errorf(\"invalid quoted string %s: %v\", p.s[0:i+1], err)\n\t\t\treturn\n\t\t}\n\t\tp.cur.value, p.s = p.s[0:i+1], p.s[i+1:len(p.s)]\n\t\tp.cur.unquoted = unq\n\tdefault:\n\t\ti := 0\n\t\tfor i < len(p.s) && isIdentOrNumberChar(p.s[i]) {\n\t\t\ti++\n\t\t}\n\t\tif i == 0 {\n\t\t\tp.errorf(\"unexpected byte %#x\", p.s[0])\n\t\t\treturn\n\t\t}\n\t\tp.cur.value, p.s = p.s[0:i], p.s[i:len(p.s)]\n\t}\n\tp.offset += len(p.cur.value)\n}\n\nvar (\n\terrBadUTF8 = errors.New(\"proto: bad UTF-8\")\n)\n\nfunc unquoteC(s string, quote rune) (string, error) {\n\t// This is based on C++'s tokenizer.cc.\n\t// Despite its name, this is *not* parsing C syntax.\n\t// For instance, \"\\0\" is an invalid quoted string.\n\n\t// Avoid allocation in trivial cases.\n\tsimple := true\n\tfor _, r := range s {\n\t\tif r == '\\\\' || r == quote {\n\t\t\tsimple = false\n\t\t\tbreak\n\t\t}\n\t}\n\tif simple {\n\t\treturn s, nil\n\t}\n\n\tbuf := make([]byte, 0, 3*len(s)/2)\n\tfor len(s) > 0 {\n\t\tr, n := utf8.DecodeRuneInString(s)\n\t\tif r == utf8.RuneError && n == 1 {\n\t\t\treturn \"\", errBadUTF8\n\t\t}\n\t\ts = s[n:]\n\t\tif r != '\\\\' {\n\t\t\tif r < utf8.RuneSelf {\n\t\t\t\tbuf = append(buf, byte(r))\n\t\t\t} else {\n\t\t\t\tbuf = append(buf, string(r)...)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tch, tail, err := unescape(s)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tbuf = append(buf, ch...)\n\t\ts = tail\n\t}\n\treturn string(buf), nil\n}\n\nfunc unescape(s string) (ch string, tail string, err error) {\n\tr, n := utf8.DecodeRuneInString(s)\n\tif r == utf8.RuneError && n == 1 {\n\t\treturn \"\", \"\", errBadUTF8\n\t}\n\ts = s[n:]\n\tswitch r {\n\tcase 'a':\n\t\treturn \"\\a\", s, nil\n\tcase 'b':\n\t\treturn \"\\b\", s, nil\n\tcase 'f':\n\t\treturn \"\\f\", s, nil\n\tcase 'n':\n\t\treturn \"\\n\", s, nil\n\tcase 'r':\n\t\treturn \"\\r\", s, nil\n\tcase 't':\n\t\treturn \"\\t\", s, nil\n\tcase 'v':\n\t\treturn \"\\v\", s, nil\n\tcase '?':\n\t\treturn \"?\", s, nil // trigraph workaround\n\tcase '\\'', '\"', '\\\\':\n\t\treturn string(r), s, nil\n\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\tif len(s) < 2 {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%c requires 2 following digits`, r)\n\t\t}\n\t\tss := string(r) + s[:2]\n\t\ts = s[2:]\n\t\ti, err := strconv.ParseUint(ss, 8, 8)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%s contains non-octal digits`, ss)\n\t\t}\n\t\treturn string([]byte{byte(i)}), s, nil\n\tcase 'x', 'X', 'u', 'U':\n\t\tvar n int\n\t\tswitch r {\n\t\tcase 'x', 'X':\n\t\t\tn = 2\n\t\tcase 'u':\n\t\t\tn = 4\n\t\tcase 'U':\n\t\t\tn = 8\n\t\t}\n\t\tif len(s) < n {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%c requires %d following digits`, r, n)\n\t\t}\n\t\tss := s[:n]\n\t\ts = s[n:]\n\t\ti, err := strconv.ParseUint(ss, 16, 64)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%c%s contains non-hexadecimal digits`, r, ss)\n\t\t}\n\t\tif r == 'x' || r == 'X' {\n\t\t\treturn string([]byte{byte(i)}), s, nil\n\t\t}\n\t\tif i > utf8.MaxRune {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%c%s is not a valid Unicode code point`, r, ss)\n\t\t}\n\t\treturn string(rune(i)), s, nil\n\t}\n\treturn \"\", \"\", fmt.Errorf(`unknown escape \\%c`, r)\n}\n\n// Back off the parser by one token. Can only be done between calls to next().\n// It makes the next advance() a no-op.\nfunc (p *textParser) back() { p.backed = true }\n\n// Advances the parser and returns the new current token.\nfunc (p *textParser) next() *token {\n\tif p.backed || p.done {\n\t\tp.backed = false\n\t\treturn &p.cur\n\t}\n\tp.advance()\n\tif p.done {\n\t\tp.cur.value = \"\"\n\t} else if len(p.cur.value) > 0 && isQuote(p.cur.value[0]) {\n\t\t// Look for multiple quoted strings separated by whitespace,\n\t\t// and concatenate them.\n\t\tcat := p.cur\n\t\tfor {\n\t\t\tp.skipWhitespace()\n\t\t\tif p.done || !isQuote(p.s[0]) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tp.advance()\n\t\t\tif p.cur.err != nil {\n\t\t\t\treturn &p.cur\n\t\t\t}\n\t\t\tcat.value += \" \" + p.cur.value\n\t\t\tcat.unquoted += p.cur.unquoted\n\t\t}\n\t\tp.done = false // parser may have seen EOF, but we want to return cat\n\t\tp.cur = cat\n\t}\n\treturn &p.cur\n}\n\nfunc (p *textParser) consumeToken(s string) error {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn tok.err\n\t}\n\tif tok.value != s {\n\t\tp.back()\n\t\treturn p.errorf(\"expected %q, found %q\", s, tok.value)\n\t}\n\treturn nil\n}\n\n// Return a RequiredNotSetError indicating which required field was not set.\nfunc (p *textParser) missingRequiredFieldError(sv reflect.Value) *RequiredNotSetError {\n\tst := sv.Type()\n\tsprops := GetProperties(st)\n\tfor i := 0; i < st.NumField(); i++ {\n\t\tif !isNil(sv.Field(i)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tprops := sprops.Prop[i]\n\t\tif props.Required {\n\t\t\treturn &RequiredNotSetError{fmt.Sprintf(\"%v.%v\", st, props.OrigName)}\n\t\t}\n\t}\n\treturn &RequiredNotSetError{fmt.Sprintf(\"%v.<unknown field name>\", st)} // should not happen\n}\n\n// Returns the index in the struct for the named field, as well as the parsed tag properties.\nfunc structFieldByName(sprops *StructProperties, name string) (int, *Properties, bool) {\n\ti, ok := sprops.decoderOrigNames[name]\n\tif ok {\n\t\treturn i, sprops.Prop[i], true\n\t}\n\treturn -1, nil, false\n}\n\n// Consume a ':' from the input stream (if the next token is a colon),\n// returning an error if a colon is needed but not present.\nfunc (p *textParser) checkForColon(props *Properties, typ reflect.Type) *ParseError {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn tok.err\n\t}\n\tif tok.value != \":\" {\n\t\t// Colon is optional when the field is a group or message.\n\t\tneedColon := true\n\t\tswitch props.Wire {\n\t\tcase \"group\":\n\t\t\tneedColon = false\n\t\tcase \"bytes\":\n\t\t\t// A \"bytes\" field is either a message, a string, or a repeated field;\n\t\t\t// those three become *T, *string and []T respectively, so we can check for\n\t\t\t// this field being a pointer to a non-string.\n\t\t\tif typ.Kind() == reflect.Ptr {\n\t\t\t\t// *T or *string\n\t\t\t\tif typ.Elem().Kind() == reflect.String {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t} else if typ.Kind() == reflect.Slice {\n\t\t\t\t// []T or []*T\n\t\t\t\tif typ.Elem().Kind() != reflect.Ptr {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t} else if typ.Kind() == reflect.String {\n\t\t\t\t// The proto3 exception is for a string field,\n\t\t\t\t// which requires a colon.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tneedColon = false\n\t\t}\n\t\tif needColon {\n\t\t\treturn p.errorf(\"expected ':', found %q\", tok.value)\n\t\t}\n\t\tp.back()\n\t}\n\treturn nil\n}\n\nfunc (p *textParser) readStruct(sv reflect.Value, terminator string) error {\n\tst := sv.Type()\n\tsprops := GetProperties(st)\n\treqCount := sprops.reqCount\n\tvar reqFieldErr error\n\tfieldSet := make(map[string]bool)\n\t// A struct is a sequence of \"name: value\", terminated by one of\n\t// '>' or '}', or the end of the input.  A name may also be\n\t// \"[extension]\" or \"[type/url]\".\n\t//\n\t// The whole struct can also be an expanded Any message, like:\n\t// [type/url] < ... struct contents ... >\n\tfor {\n\t\ttok := p.next()\n\t\tif tok.err != nil {\n\t\t\treturn tok.err\n\t\t}\n\t\tif tok.value == terminator {\n\t\t\tbreak\n\t\t}\n\t\tif tok.value == \"[\" {\n\t\t\t// Looks like an extension or an Any.\n\t\t\t//\n\t\t\t// TODO: Check whether we need to handle\n\t\t\t// namespace rooted names (e.g. \".something.Foo\").\n\t\t\textName, err := p.consumeExtName()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif s := strings.LastIndex(extName, \"/\"); s >= 0 {\n\t\t\t\t// If it contains a slash, it's an Any type URL.\n\t\t\t\tmessageName := extName[s+1:]\n\t\t\t\tmt := MessageType(messageName)\n\t\t\t\tif mt == nil {\n\t\t\t\t\treturn p.errorf(\"unrecognized message %q in google.protobuf.Any\", messageName)\n\t\t\t\t}\n\t\t\t\ttok = p.next()\n\t\t\t\tif tok.err != nil {\n\t\t\t\t\treturn tok.err\n\t\t\t\t}\n\t\t\t\t// consume an optional colon\n\t\t\t\tif tok.value == \":\" {\n\t\t\t\t\ttok = p.next()\n\t\t\t\t\tif tok.err != nil {\n\t\t\t\t\t\treturn tok.err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar terminator string\n\t\t\t\tswitch tok.value {\n\t\t\t\tcase \"<\":\n\t\t\t\t\tterminator = \">\"\n\t\t\t\tcase \"{\":\n\t\t\t\t\tterminator = \"}\"\n\t\t\t\tdefault:\n\t\t\t\t\treturn p.errorf(\"expected '{' or '<', found %q\", tok.value)\n\t\t\t\t}\n\t\t\t\tv := reflect.New(mt.Elem())\n\t\t\t\tif pe := p.readStruct(v.Elem(), terminator); pe != nil {\n\t\t\t\t\treturn pe\n\t\t\t\t}\n\t\t\t\tb, err := Marshal(v.Interface().(Message))\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn p.errorf(\"failed to marshal message of type %q: %v\", messageName, err)\n\t\t\t\t}\n\t\t\t\tif fieldSet[\"type_url\"] {\n\t\t\t\t\treturn p.errorf(anyRepeatedlyUnpacked, \"type_url\")\n\t\t\t\t}\n\t\t\t\tif fieldSet[\"value\"] {\n\t\t\t\t\treturn p.errorf(anyRepeatedlyUnpacked, \"value\")\n\t\t\t\t}\n\t\t\t\tsv.FieldByName(\"TypeUrl\").SetString(extName)\n\t\t\t\tsv.FieldByName(\"Value\").SetBytes(b)\n\t\t\t\tfieldSet[\"type_url\"] = true\n\t\t\t\tfieldSet[\"value\"] = true\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvar desc *ExtensionDesc\n\t\t\t// This could be faster, but it's functional.\n\t\t\t// TODO: Do something smarter than a linear scan.\n\t\t\tfor _, d := range RegisteredExtensions(reflect.New(st).Interface().(Message)) {\n\t\t\t\tif d.Name == extName {\n\t\t\t\t\tdesc = d\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif desc == nil {\n\t\t\t\treturn p.errorf(\"unrecognized extension %q\", extName)\n\t\t\t}\n\n\t\t\tprops := &Properties{}\n\t\t\tprops.Parse(desc.Tag)\n\n\t\t\ttyp := reflect.TypeOf(desc.ExtensionType)\n\t\t\tif err := p.checkForColon(props, typ); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\trep := desc.repeated()\n\n\t\t\t// Read the extension structure, and set it in\n\t\t\t// the value we're constructing.\n\t\t\tvar ext reflect.Value\n\t\t\tif !rep {\n\t\t\t\text = reflect.New(typ).Elem()\n\t\t\t} else {\n\t\t\t\text = reflect.New(typ.Elem()).Elem()\n\t\t\t}\n\t\t\tif err := p.readAny(ext, props); err != nil {\n\t\t\t\tif _, ok := err.(*RequiredNotSetError); !ok {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\treqFieldErr = err\n\t\t\t}\n\t\t\tep := sv.Addr().Interface().(Message)\n\t\t\tif !rep {\n\t\t\t\tSetExtension(ep, desc, ext.Interface())\n\t\t\t} else {\n\t\t\t\told, err := GetExtension(ep, desc)\n\t\t\t\tvar sl reflect.Value\n\t\t\t\tif err == nil {\n\t\t\t\t\tsl = reflect.ValueOf(old) // existing slice\n\t\t\t\t} else {\n\t\t\t\t\tsl = reflect.MakeSlice(typ, 0, 1)\n\t\t\t\t}\n\t\t\t\tsl = reflect.Append(sl, ext)\n\t\t\t\tSetExtension(ep, desc, sl.Interface())\n\t\t\t}\n\t\t\tif err := p.consumeOptionalSeparator(); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// This is a normal, non-extension field.\n\t\tname := tok.value\n\t\tvar dst reflect.Value\n\t\tfi, props, ok := structFieldByName(sprops, name)\n\t\tif ok {\n\t\t\tdst = sv.Field(fi)\n\t\t} else if oop, ok := sprops.OneofTypes[name]; ok {\n\t\t\t// It is a oneof.\n\t\t\tprops = oop.Prop\n\t\t\tnv := reflect.New(oop.Type.Elem())\n\t\t\tdst = nv.Elem().Field(0)\n\t\t\tfield := sv.Field(oop.Field)\n\t\t\tif !field.IsNil() {\n\t\t\t\treturn p.errorf(\"field '%s' would overwrite already parsed oneof '%s'\", name, sv.Type().Field(oop.Field).Name)\n\t\t\t}\n\t\t\tfield.Set(nv)\n\t\t}\n\t\tif !dst.IsValid() {\n\t\t\treturn p.errorf(\"unknown field name %q in %v\", name, st)\n\t\t}\n\n\t\tif dst.Kind() == reflect.Map {\n\t\t\t// Consume any colon.\n\t\t\tif err := p.checkForColon(props, dst.Type()); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\t// Construct the map if it doesn't already exist.\n\t\t\tif dst.IsNil() {\n\t\t\t\tdst.Set(reflect.MakeMap(dst.Type()))\n\t\t\t}\n\t\t\tkey := reflect.New(dst.Type().Key()).Elem()\n\t\t\tval := reflect.New(dst.Type().Elem()).Elem()\n\n\t\t\t// The map entry should be this sequence of tokens:\n\t\t\t//\t< key : KEY value : VALUE >\n\t\t\t// However, implementations may omit key or value, and technically\n\t\t\t// we should support them in any order.  See b/28924776 for a time\n\t\t\t// this went wrong.\n\n\t\t\ttok := p.next()\n\t\t\tvar terminator string\n\t\t\tswitch tok.value {\n\t\t\tcase \"<\":\n\t\t\t\tterminator = \">\"\n\t\t\tcase \"{\":\n\t\t\t\tterminator = \"}\"\n\t\t\tdefault:\n\t\t\t\treturn p.errorf(\"expected '{' or '<', found %q\", tok.value)\n\t\t\t}\n\t\t\tfor {\n\t\t\t\ttok := p.next()\n\t\t\t\tif tok.err != nil {\n\t\t\t\t\treturn tok.err\n\t\t\t\t}\n\t\t\t\tif tok.value == terminator {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tswitch tok.value {\n\t\t\t\tcase \"key\":\n\t\t\t\t\tif err := p.consumeToken(\":\"); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif err := p.readAny(key, props.MapKeyProp); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif err := p.consumeOptionalSeparator(); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\tcase \"value\":\n\t\t\t\t\tif err := p.checkForColon(props.MapValProp, dst.Type().Elem()); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif err := p.readAny(val, props.MapValProp); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif err := p.consumeOptionalSeparator(); 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\tp.back()\n\t\t\t\t\treturn p.errorf(`expected \"key\", \"value\", or %q, found %q`, terminator, tok.value)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdst.SetMapIndex(key, val)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Check that it's not already set if it's not a repeated field.\n\t\tif !props.Repeated && fieldSet[name] {\n\t\t\treturn p.errorf(\"non-repeated field %q was repeated\", name)\n\t\t}\n\n\t\tif err := p.checkForColon(props, dst.Type()); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Parse into the field.\n\t\tfieldSet[name] = true\n\t\tif err := p.readAny(dst, props); err != nil {\n\t\t\tif _, ok := err.(*RequiredNotSetError); !ok {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treqFieldErr = err\n\t\t}\n\t\tif props.Required {\n\t\t\treqCount--\n\t\t}\n\n\t\tif err := p.consumeOptionalSeparator(); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t}\n\n\tif reqCount > 0 {\n\t\treturn p.missingRequiredFieldError(sv)\n\t}\n\treturn reqFieldErr\n}\n\n// consumeExtName consumes extension name or expanded Any type URL and the\n// following ']'. It returns the name or URL consumed.\nfunc (p *textParser) consumeExtName() (string, error) {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn \"\", tok.err\n\t}\n\n\t// If extension name or type url is quoted, it's a single token.\n\tif len(tok.value) > 2 && isQuote(tok.value[0]) && tok.value[len(tok.value)-1] == tok.value[0] {\n\t\tname, err := unquoteC(tok.value[1:len(tok.value)-1], rune(tok.value[0]))\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn name, p.consumeToken(\"]\")\n\t}\n\n\t// Consume everything up to \"]\"\n\tvar parts []string\n\tfor tok.value != \"]\" {\n\t\tparts = append(parts, tok.value)\n\t\ttok = p.next()\n\t\tif tok.err != nil {\n\t\t\treturn \"\", p.errorf(\"unrecognized type_url or extension name: %s\", tok.err)\n\t\t}\n\t\tif p.done && tok.value != \"]\" {\n\t\t\treturn \"\", p.errorf(\"unclosed type_url or extension name\")\n\t\t}\n\t}\n\treturn strings.Join(parts, \"\"), nil\n}\n\n// consumeOptionalSeparator consumes an optional semicolon or comma.\n// It is used in readStruct to provide backward compatibility.\nfunc (p *textParser) consumeOptionalSeparator() error {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn tok.err\n\t}\n\tif tok.value != \";\" && tok.value != \",\" {\n\t\tp.back()\n\t}\n\treturn nil\n}\n\nfunc (p *textParser) readAny(v reflect.Value, props *Properties) error {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn tok.err\n\t}\n\tif tok.value == \"\" {\n\t\treturn p.errorf(\"unexpected EOF\")\n\t}\n\tif len(props.CustomType) > 0 {\n\t\tif props.Repeated {\n\t\t\tt := reflect.TypeOf(v.Interface())\n\t\t\tif t.Kind() == reflect.Slice {\n\t\t\t\ttc := reflect.TypeOf(new(Marshaler))\n\t\t\t\tok := t.Elem().Implements(tc.Elem())\n\t\t\t\tif ok {\n\t\t\t\t\tfv := v\n\t\t\t\t\tflen := fv.Len()\n\t\t\t\t\tif flen == fv.Cap() {\n\t\t\t\t\t\tnav := reflect.MakeSlice(v.Type(), flen, 2*flen+1)\n\t\t\t\t\t\treflect.Copy(nav, fv)\n\t\t\t\t\t\tfv.Set(nav)\n\t\t\t\t\t}\n\t\t\t\t\tfv.SetLen(flen + 1)\n\n\t\t\t\t\t// Read one.\n\t\t\t\t\tp.back()\n\t\t\t\t\treturn p.readAny(fv.Index(flen), props)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif reflect.TypeOf(v.Interface()).Kind() == reflect.Ptr {\n\t\t\tcustom := reflect.New(props.ctype.Elem()).Interface().(Unmarshaler)\n\t\t\terr := custom.Unmarshal([]byte(tok.unquoted))\n\t\t\tif err != nil {\n\t\t\t\treturn p.errorf(\"%v %v: %v\", err, v.Type(), tok.value)\n\t\t\t}\n\t\t\tv.Set(reflect.ValueOf(custom))\n\t\t} else {\n\t\t\tcustom := reflect.New(reflect.TypeOf(v.Interface())).Interface().(Unmarshaler)\n\t\t\terr := custom.Unmarshal([]byte(tok.unquoted))\n\t\t\tif err != nil {\n\t\t\t\treturn p.errorf(\"%v %v: %v\", err, v.Type(), tok.value)\n\t\t\t}\n\t\t\tv.Set(reflect.Indirect(reflect.ValueOf(custom)))\n\t\t}\n\t\treturn nil\n\t}\n\tif props.StdTime {\n\t\tfv := v\n\t\tp.back()\n\t\tprops.StdTime = false\n\t\ttproto := &timestamp{}\n\t\terr := p.readAny(reflect.ValueOf(tproto).Elem(), props)\n\t\tprops.StdTime = true\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttim, err := timestampFromProto(tproto)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif props.Repeated {\n\t\t\tt := reflect.TypeOf(v.Interface())\n\t\t\tif t.Kind() == reflect.Slice {\n\t\t\t\tif t.Elem().Kind() == reflect.Ptr {\n\t\t\t\t\tts := fv.Interface().([]*time.Time)\n\t\t\t\t\tts = append(ts, &tim)\n\t\t\t\t\tfv.Set(reflect.ValueOf(ts))\n\t\t\t\t\treturn nil\n\t\t\t\t} else {\n\t\t\t\t\tts := fv.Interface().([]time.Time)\n\t\t\t\t\tts = append(ts, tim)\n\t\t\t\t\tfv.Set(reflect.ValueOf(ts))\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif reflect.TypeOf(v.Interface()).Kind() == reflect.Ptr {\n\t\t\tv.Set(reflect.ValueOf(&tim))\n\t\t} else {\n\t\t\tv.Set(reflect.Indirect(reflect.ValueOf(&tim)))\n\t\t}\n\t\treturn nil\n\t}\n\tif props.StdDuration {\n\t\tfv := v\n\t\tp.back()\n\t\tprops.StdDuration = false\n\t\tdproto := &duration{}\n\t\terr := p.readAny(reflect.ValueOf(dproto).Elem(), props)\n\t\tprops.StdDuration = true\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdur, err := durationFromProto(dproto)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif props.Repeated {\n\t\t\tt := reflect.TypeOf(v.Interface())\n\t\t\tif t.Kind() == reflect.Slice {\n\t\t\t\tif t.Elem().Kind() == reflect.Ptr {\n\t\t\t\t\tds := fv.Interface().([]*time.Duration)\n\t\t\t\t\tds = append(ds, &dur)\n\t\t\t\t\tfv.Set(reflect.ValueOf(ds))\n\t\t\t\t\treturn nil\n\t\t\t\t} else {\n\t\t\t\t\tds := fv.Interface().([]time.Duration)\n\t\t\t\t\tds = append(ds, dur)\n\t\t\t\t\tfv.Set(reflect.ValueOf(ds))\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif reflect.TypeOf(v.Interface()).Kind() == reflect.Ptr {\n\t\t\tv.Set(reflect.ValueOf(&dur))\n\t\t} else {\n\t\t\tv.Set(reflect.Indirect(reflect.ValueOf(&dur)))\n\t\t}\n\t\treturn nil\n\t}\n\tswitch fv := v; fv.Kind() {\n\tcase reflect.Slice:\n\t\tat := v.Type()\n\t\tif at.Elem().Kind() == reflect.Uint8 {\n\t\t\t// Special case for []byte\n\t\t\tif tok.value[0] != '\"' && tok.value[0] != '\\'' {\n\t\t\t\t// Deliberately written out here, as the error after\n\t\t\t\t// this switch statement would write \"invalid []byte: ...\",\n\t\t\t\t// which is not as user-friendly.\n\t\t\t\treturn p.errorf(\"invalid string: %v\", tok.value)\n\t\t\t}\n\t\t\tbytes := []byte(tok.unquoted)\n\t\t\tfv.Set(reflect.ValueOf(bytes))\n\t\t\treturn nil\n\t\t}\n\t\t// Repeated field.\n\t\tif tok.value == \"[\" {\n\t\t\t// Repeated field with list notation, like [1,2,3].\n\t\t\tfor {\n\t\t\t\tfv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem()))\n\t\t\t\terr := p.readAny(fv.Index(fv.Len()-1), props)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tntok := p.next()\n\t\t\t\tif ntok.err != nil {\n\t\t\t\t\treturn ntok.err\n\t\t\t\t}\n\t\t\t\tif ntok.value == \"]\" {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif ntok.value != \",\" {\n\t\t\t\t\treturn p.errorf(\"Expected ']' or ',' found %q\", ntok.value)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\t\t// One value of the repeated field.\n\t\tp.back()\n\t\tfv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem()))\n\t\treturn p.readAny(fv.Index(fv.Len()-1), props)\n\tcase reflect.Bool:\n\t\t// true/1/t/True or false/f/0/False.\n\t\tswitch tok.value {\n\t\tcase \"true\", \"1\", \"t\", \"True\":\n\t\t\tfv.SetBool(true)\n\t\t\treturn nil\n\t\tcase \"false\", \"0\", \"f\", \"False\":\n\t\t\tfv.SetBool(false)\n\t\t\treturn nil\n\t\t}\n\tcase reflect.Float32, reflect.Float64:\n\t\tv := tok.value\n\t\t// Ignore 'f' for compatibility with output generated by C++, but don't\n\t\t// remove 'f' when the value is \"-inf\" or \"inf\".\n\t\tif strings.HasSuffix(v, \"f\") && tok.value != \"-inf\" && tok.value != \"inf\" {\n\t\t\tv = v[:len(v)-1]\n\t\t}\n\t\tif f, err := strconv.ParseFloat(v, fv.Type().Bits()); err == nil {\n\t\t\tfv.SetFloat(f)\n\t\t\treturn nil\n\t\t}\n\tcase reflect.Int8:\n\t\tif x, err := strconv.ParseInt(tok.value, 0, 8); err == nil {\n\t\t\tfv.SetInt(x)\n\t\t\treturn nil\n\t\t}\n\tcase reflect.Int16:\n\t\tif x, err := strconv.ParseInt(tok.value, 0, 16); err == nil {\n\t\t\tfv.SetInt(x)\n\t\t\treturn nil\n\t\t}\n\tcase reflect.Int32:\n\t\tif x, err := strconv.ParseInt(tok.value, 0, 32); err == nil {\n\t\t\tfv.SetInt(x)\n\t\t\treturn nil\n\t\t}\n\n\t\tif len(props.Enum) == 0 {\n\t\t\tbreak\n\t\t}\n\t\tm, ok := enumValueMaps[props.Enum]\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\t\tx, ok := m[tok.value]\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\t\tfv.SetInt(int64(x))\n\t\treturn nil\n\tcase reflect.Int64:\n\t\tif x, err := strconv.ParseInt(tok.value, 0, 64); err == nil {\n\t\t\tfv.SetInt(x)\n\t\t\treturn nil\n\t\t}\n\n\tcase reflect.Ptr:\n\t\t// A basic field (indirected through pointer), or a repeated message/group\n\t\tp.back()\n\t\tfv.Set(reflect.New(fv.Type().Elem()))\n\t\treturn p.readAny(fv.Elem(), props)\n\tcase reflect.String:\n\t\tif tok.value[0] == '\"' || tok.value[0] == '\\'' {\n\t\t\tfv.SetString(tok.unquoted)\n\t\t\treturn nil\n\t\t}\n\tcase reflect.Struct:\n\t\tvar terminator string\n\t\tswitch tok.value {\n\t\tcase \"{\":\n\t\t\tterminator = \"}\"\n\t\tcase \"<\":\n\t\t\tterminator = \">\"\n\t\tdefault:\n\t\t\treturn p.errorf(\"expected '{' or '<', found %q\", tok.value)\n\t\t}\n\t\t// TODO: Handle nested messages which implement encoding.TextUnmarshaler.\n\t\treturn p.readStruct(fv, terminator)\n\tcase reflect.Uint8:\n\t\tif x, err := strconv.ParseUint(tok.value, 0, 8); err == nil {\n\t\t\tfv.SetUint(x)\n\t\t\treturn nil\n\t\t}\n\tcase reflect.Uint16:\n\t\tif x, err := strconv.ParseUint(tok.value, 0, 16); err == nil {\n\t\t\tfv.SetUint(x)\n\t\t\treturn nil\n\t\t}\n\tcase reflect.Uint32:\n\t\tif x, err := strconv.ParseUint(tok.value, 0, 32); err == nil {\n\t\t\tfv.SetUint(uint64(x))\n\t\t\treturn nil\n\t\t}\n\tcase reflect.Uint64:\n\t\tif x, err := strconv.ParseUint(tok.value, 0, 64); err == nil {\n\t\t\tfv.SetUint(x)\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn p.errorf(\"invalid %v: %v\", v.Type(), tok.value)\n}\n\n// UnmarshalText reads a protocol buffer in Text format. UnmarshalText resets pb\n// before starting to unmarshal, so any existing data in pb is always removed.\n// If a required field is not set and no other error occurs,\n// UnmarshalText returns *RequiredNotSetError.\nfunc UnmarshalText(s string, pb Message) error {\n\tif um, ok := pb.(encoding.TextUnmarshaler); ok {\n\t\treturn um.UnmarshalText([]byte(s))\n\t}\n\tpb.Reset()\n\tv := reflect.ValueOf(pb)\n\treturn newTextParser(s).readStruct(v.Elem(), \"\")\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/timestamp.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2016 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\n// This file implements operations on google.protobuf.Timestamp.\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n)\n\nconst (\n\t// Seconds field of the earliest valid Timestamp.\n\t// This is time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC).Unix().\n\tminValidSeconds = -62135596800\n\t// Seconds field just after the latest valid Timestamp.\n\t// This is time.Date(10000, 1, 1, 0, 0, 0, 0, time.UTC).Unix().\n\tmaxValidSeconds = 253402300800\n)\n\n// validateTimestamp determines whether a Timestamp is valid.\n// A valid timestamp represents a time in the range\n// [0001-01-01, 10000-01-01) and has a Nanos field\n// in the range [0, 1e9).\n//\n// If the Timestamp is valid, validateTimestamp returns nil.\n// Otherwise, it returns an error that describes\n// the problem.\n//\n// Every valid Timestamp can be represented by a time.Time, but the converse is not true.\nfunc validateTimestamp(ts *timestamp) error {\n\tif ts == nil {\n\t\treturn errors.New(\"timestamp: nil Timestamp\")\n\t}\n\tif ts.Seconds < minValidSeconds {\n\t\treturn fmt.Errorf(\"timestamp: %#v before 0001-01-01\", ts)\n\t}\n\tif ts.Seconds >= maxValidSeconds {\n\t\treturn fmt.Errorf(\"timestamp: %#v after 10000-01-01\", ts)\n\t}\n\tif ts.Nanos < 0 || ts.Nanos >= 1e9 {\n\t\treturn fmt.Errorf(\"timestamp: %#v: nanos not in range [0, 1e9)\", ts)\n\t}\n\treturn nil\n}\n\n// TimestampFromProto converts a google.protobuf.Timestamp proto to a time.Time.\n// It returns an error if the argument is invalid.\n//\n// Unlike most Go functions, if Timestamp returns an error, the first return value\n// is not the zero time.Time. Instead, it is the value obtained from the\n// time.Unix function when passed the contents of the Timestamp, in the UTC\n// locale. This may or may not be a meaningful time; many invalid Timestamps\n// do map to valid time.Times.\n//\n// A nil Timestamp returns an error. The first return value in that case is\n// undefined.\nfunc timestampFromProto(ts *timestamp) (time.Time, error) {\n\t// Don't return the zero value on error, because corresponds to a valid\n\t// timestamp. Instead return whatever time.Unix gives us.\n\tvar t time.Time\n\tif ts == nil {\n\t\tt = time.Unix(0, 0).UTC() // treat nil like the empty Timestamp\n\t} else {\n\t\tt = time.Unix(ts.Seconds, int64(ts.Nanos)).UTC()\n\t}\n\treturn t, validateTimestamp(ts)\n}\n\n// TimestampProto converts the time.Time to a google.protobuf.Timestamp proto.\n// It returns an error if the resulting Timestamp is invalid.\nfunc timestampProto(t time.Time) (*timestamp, error) {\n\tseconds := t.Unix()\n\tnanos := int32(t.Sub(time.Unix(seconds, 0)))\n\tts := &timestamp{\n\t\tSeconds: seconds,\n\t\tNanos:   nanos,\n\t}\n\tif err := validateTimestamp(ts); err != nil {\n\t\treturn nil, err\n\t}\n\treturn ts, nil\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/timestamp_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2016, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"reflect\"\n\t\"time\"\n)\n\nvar timeType = reflect.TypeOf((*time.Time)(nil)).Elem()\n\ntype timestamp struct {\n\tSeconds int64 `protobuf:\"varint,1,opt,name=seconds,proto3\" json:\"seconds,omitempty\"`\n\tNanos   int32 `protobuf:\"varint,2,opt,name=nanos,proto3\" json:\"nanos,omitempty\"`\n}\n\nfunc (m *timestamp) Reset()       { *m = timestamp{} }\nfunc (*timestamp) ProtoMessage()  {}\nfunc (*timestamp) String() string { return \"timestamp<string>\" }\n\nfunc init() {\n\tRegisterType((*timestamp)(nil), \"gogo.protobuf.proto.timestamp\")\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/wrappers.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\nimport (\n\t\"io\"\n\t\"reflect\"\n)\n\nfunc makeStdDoubleValueMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*float64)\n\t\t\tv := &float64Value{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*float64)\n\t\t\tv := &float64Value{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdDoubleValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*float64)\n\t\t\tv := &float64Value{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*float64)\n\t\t\tv := &float64Value{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdDoubleValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(float64)\n\t\t\t\tv := &float64Value{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(float64)\n\t\t\t\tv := &float64Value{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdDoubleValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*float64)\n\t\t\t\tv := &float64Value{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*float64)\n\t\t\t\tv := &float64Value{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdDoubleValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &float64Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(sub.typ).Elem()\n\t\ts.Set(reflect.ValueOf(m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdDoubleValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &float64Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem()\n\t\ts.Set(reflect.ValueOf(&m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdDoubleValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &float64Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(reflect.PtrTo(sub.typ))\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(&m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdDoubleValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &float64Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(sub.typ)\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdFloatValueMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*float32)\n\t\t\tv := &float32Value{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*float32)\n\t\t\tv := &float32Value{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdFloatValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*float32)\n\t\t\tv := &float32Value{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*float32)\n\t\t\tv := &float32Value{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdFloatValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(float32)\n\t\t\t\tv := &float32Value{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(float32)\n\t\t\t\tv := &float32Value{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdFloatValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*float32)\n\t\t\t\tv := &float32Value{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*float32)\n\t\t\t\tv := &float32Value{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdFloatValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &float32Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(sub.typ).Elem()\n\t\ts.Set(reflect.ValueOf(m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdFloatValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &float32Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem()\n\t\ts.Set(reflect.ValueOf(&m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdFloatValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &float32Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(reflect.PtrTo(sub.typ))\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(&m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdFloatValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &float32Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(sub.typ)\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdInt64ValueMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*int64)\n\t\t\tv := &int64Value{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*int64)\n\t\t\tv := &int64Value{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdInt64ValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*int64)\n\t\t\tv := &int64Value{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*int64)\n\t\t\tv := &int64Value{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdInt64ValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(int64)\n\t\t\t\tv := &int64Value{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(int64)\n\t\t\t\tv := &int64Value{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdInt64ValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*int64)\n\t\t\t\tv := &int64Value{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*int64)\n\t\t\t\tv := &int64Value{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdInt64ValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &int64Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(sub.typ).Elem()\n\t\ts.Set(reflect.ValueOf(m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdInt64ValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &int64Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem()\n\t\ts.Set(reflect.ValueOf(&m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdInt64ValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &int64Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(reflect.PtrTo(sub.typ))\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(&m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdInt64ValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &int64Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(sub.typ)\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdUInt64ValueMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*uint64)\n\t\t\tv := &uint64Value{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*uint64)\n\t\t\tv := &uint64Value{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdUInt64ValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*uint64)\n\t\t\tv := &uint64Value{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*uint64)\n\t\t\tv := &uint64Value{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdUInt64ValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(uint64)\n\t\t\t\tv := &uint64Value{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(uint64)\n\t\t\t\tv := &uint64Value{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdUInt64ValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*uint64)\n\t\t\t\tv := &uint64Value{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*uint64)\n\t\t\t\tv := &uint64Value{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdUInt64ValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &uint64Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(sub.typ).Elem()\n\t\ts.Set(reflect.ValueOf(m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdUInt64ValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &uint64Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem()\n\t\ts.Set(reflect.ValueOf(&m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdUInt64ValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &uint64Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(reflect.PtrTo(sub.typ))\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(&m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdUInt64ValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &uint64Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(sub.typ)\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdInt32ValueMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*int32)\n\t\t\tv := &int32Value{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*int32)\n\t\t\tv := &int32Value{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdInt32ValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*int32)\n\t\t\tv := &int32Value{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*int32)\n\t\t\tv := &int32Value{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdInt32ValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(int32)\n\t\t\t\tv := &int32Value{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(int32)\n\t\t\t\tv := &int32Value{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdInt32ValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*int32)\n\t\t\t\tv := &int32Value{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*int32)\n\t\t\t\tv := &int32Value{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdInt32ValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &int32Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(sub.typ).Elem()\n\t\ts.Set(reflect.ValueOf(m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdInt32ValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &int32Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem()\n\t\ts.Set(reflect.ValueOf(&m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdInt32ValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &int32Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(reflect.PtrTo(sub.typ))\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(&m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdInt32ValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &int32Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(sub.typ)\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdUInt32ValueMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*uint32)\n\t\t\tv := &uint32Value{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*uint32)\n\t\t\tv := &uint32Value{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdUInt32ValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*uint32)\n\t\t\tv := &uint32Value{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*uint32)\n\t\t\tv := &uint32Value{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdUInt32ValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(uint32)\n\t\t\t\tv := &uint32Value{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(uint32)\n\t\t\t\tv := &uint32Value{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdUInt32ValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*uint32)\n\t\t\t\tv := &uint32Value{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*uint32)\n\t\t\t\tv := &uint32Value{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdUInt32ValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &uint32Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(sub.typ).Elem()\n\t\ts.Set(reflect.ValueOf(m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdUInt32ValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &uint32Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem()\n\t\ts.Set(reflect.ValueOf(&m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdUInt32ValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &uint32Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(reflect.PtrTo(sub.typ))\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(&m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdUInt32ValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &uint32Value{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(sub.typ)\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdBoolValueMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*bool)\n\t\t\tv := &boolValue{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*bool)\n\t\t\tv := &boolValue{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdBoolValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*bool)\n\t\t\tv := &boolValue{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*bool)\n\t\t\tv := &boolValue{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdBoolValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(bool)\n\t\t\t\tv := &boolValue{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(bool)\n\t\t\t\tv := &boolValue{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdBoolValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*bool)\n\t\t\t\tv := &boolValue{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*bool)\n\t\t\t\tv := &boolValue{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdBoolValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &boolValue{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(sub.typ).Elem()\n\t\ts.Set(reflect.ValueOf(m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdBoolValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &boolValue{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem()\n\t\ts.Set(reflect.ValueOf(&m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdBoolValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &boolValue{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(reflect.PtrTo(sub.typ))\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(&m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdBoolValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &boolValue{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(sub.typ)\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdStringValueMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*string)\n\t\t\tv := &stringValue{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*string)\n\t\t\tv := &stringValue{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdStringValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*string)\n\t\t\tv := &stringValue{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*string)\n\t\t\tv := &stringValue{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdStringValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(string)\n\t\t\t\tv := &stringValue{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(string)\n\t\t\t\tv := &stringValue{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdStringValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*string)\n\t\t\t\tv := &stringValue{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*string)\n\t\t\t\tv := &stringValue{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdStringValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &stringValue{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(sub.typ).Elem()\n\t\ts.Set(reflect.ValueOf(m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdStringValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &stringValue{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem()\n\t\ts.Set(reflect.ValueOf(&m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdStringValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &stringValue{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(reflect.PtrTo(sub.typ))\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(&m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdStringValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &stringValue{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(sub.typ)\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdBytesValueMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*[]byte)\n\t\t\tv := &bytesValue{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tt := ptr.asPointerTo(u.typ).Interface().(*[]byte)\n\t\t\tv := &bytesValue{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdBytesValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*[]byte)\n\t\t\tv := &bytesValue{*t}\n\t\t\tsiz := Size(v)\n\t\t\treturn tagsize + SizeVarint(uint64(siz)) + siz\n\t\t}, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\tif ptr.isNil() {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tt := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*[]byte)\n\t\t\tv := &bytesValue{*t}\n\t\t\tbuf, err := Marshal(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tb = appendVarint(b, wiretag)\n\t\t\tb = appendVarint(b, uint64(len(buf)))\n\t\t\tb = append(b, buf...)\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdBytesValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().([]byte)\n\t\t\t\tv := &bytesValue{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(u.typ)\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().([]byte)\n\t\t\t\tv := &bytesValue{t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdBytesValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) {\n\treturn func(ptr pointer, tagsize int) int {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tn := 0\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*[]byte)\n\t\t\t\tv := &bytesValue{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tn += siz + SizeVarint(uint64(siz)) + tagsize\n\t\t\t}\n\t\t\treturn n\n\t\t},\n\t\tfunc(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {\n\t\t\ts := ptr.getSlice(reflect.PtrTo(u.typ))\n\t\t\tfor i := 0; i < s.Len(); i++ {\n\t\t\t\telem := s.Index(i)\n\t\t\t\tt := elem.Interface().(*[]byte)\n\t\t\t\tv := &bytesValue{*t}\n\t\t\t\tsiz := Size(v)\n\t\t\t\tbuf, err := Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tb = appendVarint(b, wiretag)\n\t\t\t\tb = appendVarint(b, uint64(siz))\n\t\t\t\tb = append(b, buf...)\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\t}\n}\n\nfunc makeStdBytesValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &bytesValue{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(sub.typ).Elem()\n\t\ts.Set(reflect.ValueOf(m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdBytesValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &bytesValue{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem()\n\t\ts.Set(reflect.ValueOf(&m.Value))\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdBytesValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &bytesValue{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(reflect.PtrTo(sub.typ))\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(&m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n\nfunc makeStdBytesValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler {\n\treturn func(b []byte, f pointer, w int) ([]byte, error) {\n\t\tif w != WireBytes {\n\t\t\treturn nil, errInternalBadWireType\n\t\t}\n\t\tx, n := decodeVarint(b)\n\t\tif n == 0 {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tb = b[n:]\n\t\tif x > uint64(len(b)) {\n\t\t\treturn nil, io.ErrUnexpectedEOF\n\t\t}\n\t\tm := &bytesValue{}\n\t\tif err := Unmarshal(b[:x], m); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslice := f.getSlice(sub.typ)\n\t\tnewSlice := reflect.Append(slice, reflect.ValueOf(m.Value))\n\t\tslice.Set(newSlice)\n\t\treturn b[x:], nil\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/proto/wrappers_gogo.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2018, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage proto\n\ntype float64Value struct {\n\tValue float64 `protobuf:\"fixed64,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (m *float64Value) Reset()       { *m = float64Value{} }\nfunc (*float64Value) ProtoMessage()  {}\nfunc (*float64Value) String() string { return \"float64<string>\" }\n\ntype float32Value struct {\n\tValue float32 `protobuf:\"fixed32,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (m *float32Value) Reset()       { *m = float32Value{} }\nfunc (*float32Value) ProtoMessage()  {}\nfunc (*float32Value) String() string { return \"float32<string>\" }\n\ntype int64Value struct {\n\tValue int64 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (m *int64Value) Reset()       { *m = int64Value{} }\nfunc (*int64Value) ProtoMessage()  {}\nfunc (*int64Value) String() string { return \"int64<string>\" }\n\ntype uint64Value struct {\n\tValue uint64 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (m *uint64Value) Reset()       { *m = uint64Value{} }\nfunc (*uint64Value) ProtoMessage()  {}\nfunc (*uint64Value) String() string { return \"uint64<string>\" }\n\ntype int32Value struct {\n\tValue int32 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (m *int32Value) Reset()       { *m = int32Value{} }\nfunc (*int32Value) ProtoMessage()  {}\nfunc (*int32Value) String() string { return \"int32<string>\" }\n\ntype uint32Value struct {\n\tValue uint32 `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (m *uint32Value) Reset()       { *m = uint32Value{} }\nfunc (*uint32Value) ProtoMessage()  {}\nfunc (*uint32Value) String() string { return \"uint32<string>\" }\n\ntype boolValue struct {\n\tValue bool `protobuf:\"varint,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (m *boolValue) Reset()       { *m = boolValue{} }\nfunc (*boolValue) ProtoMessage()  {}\nfunc (*boolValue) String() string { return \"bool<string>\" }\n\ntype stringValue struct {\n\tValue string `protobuf:\"bytes,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (m *stringValue) Reset()       { *m = stringValue{} }\nfunc (*stringValue) ProtoMessage()  {}\nfunc (*stringValue) String() string { return \"string<string>\" }\n\ntype bytesValue struct {\n\tValue []byte `protobuf:\"bytes,1,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (m *bytesValue) Reset()       { *m = bytesValue{} }\nfunc (*bytesValue) ProtoMessage()  {}\nfunc (*bytesValue) String() string { return \"[]byte<string>\" }\n\nfunc init() {\n\tRegisterType((*float64Value)(nil), \"gogo.protobuf.proto.DoubleValue\")\n\tRegisterType((*float32Value)(nil), \"gogo.protobuf.proto.FloatValue\")\n\tRegisterType((*int64Value)(nil), \"gogo.protobuf.proto.Int64Value\")\n\tRegisterType((*uint64Value)(nil), \"gogo.protobuf.proto.UInt64Value\")\n\tRegisterType((*int32Value)(nil), \"gogo.protobuf.proto.Int32Value\")\n\tRegisterType((*uint32Value)(nil), \"gogo.protobuf.proto.UInt32Value\")\n\tRegisterType((*boolValue)(nil), \"gogo.protobuf.proto.BoolValue\")\n\tRegisterType((*stringValue)(nil), \"gogo.protobuf.proto.StringValue\")\n\tRegisterType((*bytesValue)(nil), \"gogo.protobuf.proto.BytesValue\")\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/Makefile",
    "content": "# Go support for Protocol Buffers - Google's data interchange format\n#\n# Copyright 2010 The Go Authors.  All rights reserved.\n# https://github.com/golang/protobuf\n#\n# Redistribution and use in source and binary forms, with or without\n# modification, are permitted provided that the following conditions are\n# met:\n#\n#     * Redistributions of source code must retain the above copyright\n# notice, this list of conditions and the following disclaimer.\n#     * Redistributions in binary form must reproduce the above\n# copyright notice, this list of conditions and the following disclaimer\n# in the documentation and/or other materials provided with the\n# distribution.\n#     * Neither the name of Google Inc. nor the names of its\n# contributors may be used to endorse or promote products derived from\n# this software without specific prior written permission.\n#\n# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n# \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nregenerate:\n\tgo install github.com/gogo/protobuf/protoc-gen-gogo\n\tgo install github.com/gogo/protobuf/protoc-gen-gostring\n\tprotoc --gogo_out=. -I=../../protobuf/google/protobuf ../../protobuf/google/protobuf/descriptor.proto\n\tprotoc --gostring_out=. -I=../../protobuf/google/protobuf ../../protobuf/google/protobuf/descriptor.proto\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.go",
    "content": "// Go support for Protocol Buffers - Google's data interchange format\n//\n// Copyright 2016 The Go Authors.  All rights reserved.\n// https://github.com/golang/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Package descriptor provides functions for obtaining protocol buffer\n// descriptors for generated Go types.\n//\n// These functions cannot go in package proto because they depend on the\n// generated protobuf descriptor messages, which themselves depend on proto.\npackage descriptor\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\n\t\"github.com/gogo/protobuf/proto\"\n)\n\n// extractFile extracts a FileDescriptorProto from a gzip'd buffer.\nfunc extractFile(gz []byte) (*FileDescriptorProto, error) {\n\tr, err := gzip.NewReader(bytes.NewReader(gz))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to open gzip reader: %v\", err)\n\t}\n\tdefer r.Close()\n\n\tb, err := ioutil.ReadAll(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to uncompress descriptor: %v\", err)\n\t}\n\n\tfd := new(FileDescriptorProto)\n\tif err := proto.Unmarshal(b, fd); err != nil {\n\t\treturn nil, fmt.Errorf(\"malformed FileDescriptorProto: %v\", err)\n\t}\n\n\treturn fd, nil\n}\n\n// Message is a proto.Message with a method to return its descriptor.\n//\n// Message types generated by the protocol compiler always satisfy\n// the Message interface.\ntype Message interface {\n\tproto.Message\n\tDescriptor() ([]byte, []int)\n}\n\n// ForMessage returns a FileDescriptorProto and a DescriptorProto from within it\n// describing the given message.\nfunc ForMessage(msg Message) (fd *FileDescriptorProto, md *DescriptorProto) {\n\tgz, path := msg.Descriptor()\n\tfd, err := extractFile(gz)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"invalid FileDescriptorProto for %T: %v\", msg, err))\n\t}\n\n\tmd = fd.MessageType[path[0]]\n\tfor _, i := range path[1:] {\n\t\tmd = md.NestedType[i]\n\t}\n\treturn fd, md\n}\n\n// Is this field a scalar numeric type?\nfunc (field *FieldDescriptorProto) IsScalar() bool {\n\tif field.Type == nil {\n\t\treturn false\n\t}\n\tswitch *field.Type {\n\tcase FieldDescriptorProto_TYPE_DOUBLE,\n\t\tFieldDescriptorProto_TYPE_FLOAT,\n\t\tFieldDescriptorProto_TYPE_INT64,\n\t\tFieldDescriptorProto_TYPE_UINT64,\n\t\tFieldDescriptorProto_TYPE_INT32,\n\t\tFieldDescriptorProto_TYPE_FIXED64,\n\t\tFieldDescriptorProto_TYPE_FIXED32,\n\t\tFieldDescriptorProto_TYPE_BOOL,\n\t\tFieldDescriptorProto_TYPE_UINT32,\n\t\tFieldDescriptorProto_TYPE_ENUM,\n\t\tFieldDescriptorProto_TYPE_SFIXED32,\n\t\tFieldDescriptorProto_TYPE_SFIXED64,\n\t\tFieldDescriptorProto_TYPE_SINT32,\n\t\tFieldDescriptorProto_TYPE_SINT64:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: descriptor.proto\n\npackage descriptor\n\nimport (\n\tfmt \"fmt\"\n\tproto \"github.com/gogo/protobuf/proto\"\n\tmath \"math\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\ntype FieldDescriptorProto_Type int32\n\nconst (\n\t// 0 is reserved for errors.\n\t// Order is weird for historical reasons.\n\tFieldDescriptorProto_TYPE_DOUBLE FieldDescriptorProto_Type = 1\n\tFieldDescriptorProto_TYPE_FLOAT  FieldDescriptorProto_Type = 2\n\t// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if\n\t// negative values are likely.\n\tFieldDescriptorProto_TYPE_INT64  FieldDescriptorProto_Type = 3\n\tFieldDescriptorProto_TYPE_UINT64 FieldDescriptorProto_Type = 4\n\t// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if\n\t// negative values are likely.\n\tFieldDescriptorProto_TYPE_INT32   FieldDescriptorProto_Type = 5\n\tFieldDescriptorProto_TYPE_FIXED64 FieldDescriptorProto_Type = 6\n\tFieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7\n\tFieldDescriptorProto_TYPE_BOOL    FieldDescriptorProto_Type = 8\n\tFieldDescriptorProto_TYPE_STRING  FieldDescriptorProto_Type = 9\n\t// Tag-delimited aggregate.\n\t// Group type is deprecated and not supported in proto3. However, Proto3\n\t// implementations should still be able to parse the group wire format and\n\t// treat group fields as unknown fields.\n\tFieldDescriptorProto_TYPE_GROUP   FieldDescriptorProto_Type = 10\n\tFieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11\n\t// New in version 2.\n\tFieldDescriptorProto_TYPE_BYTES    FieldDescriptorProto_Type = 12\n\tFieldDescriptorProto_TYPE_UINT32   FieldDescriptorProto_Type = 13\n\tFieldDescriptorProto_TYPE_ENUM     FieldDescriptorProto_Type = 14\n\tFieldDescriptorProto_TYPE_SFIXED32 FieldDescriptorProto_Type = 15\n\tFieldDescriptorProto_TYPE_SFIXED64 FieldDescriptorProto_Type = 16\n\tFieldDescriptorProto_TYPE_SINT32   FieldDescriptorProto_Type = 17\n\tFieldDescriptorProto_TYPE_SINT64   FieldDescriptorProto_Type = 18\n)\n\nvar FieldDescriptorProto_Type_name = map[int32]string{\n\t1:  \"TYPE_DOUBLE\",\n\t2:  \"TYPE_FLOAT\",\n\t3:  \"TYPE_INT64\",\n\t4:  \"TYPE_UINT64\",\n\t5:  \"TYPE_INT32\",\n\t6:  \"TYPE_FIXED64\",\n\t7:  \"TYPE_FIXED32\",\n\t8:  \"TYPE_BOOL\",\n\t9:  \"TYPE_STRING\",\n\t10: \"TYPE_GROUP\",\n\t11: \"TYPE_MESSAGE\",\n\t12: \"TYPE_BYTES\",\n\t13: \"TYPE_UINT32\",\n\t14: \"TYPE_ENUM\",\n\t15: \"TYPE_SFIXED32\",\n\t16: \"TYPE_SFIXED64\",\n\t17: \"TYPE_SINT32\",\n\t18: \"TYPE_SINT64\",\n}\n\nvar FieldDescriptorProto_Type_value = map[string]int32{\n\t\"TYPE_DOUBLE\":   1,\n\t\"TYPE_FLOAT\":    2,\n\t\"TYPE_INT64\":    3,\n\t\"TYPE_UINT64\":   4,\n\t\"TYPE_INT32\":    5,\n\t\"TYPE_FIXED64\":  6,\n\t\"TYPE_FIXED32\":  7,\n\t\"TYPE_BOOL\":     8,\n\t\"TYPE_STRING\":   9,\n\t\"TYPE_GROUP\":    10,\n\t\"TYPE_MESSAGE\":  11,\n\t\"TYPE_BYTES\":    12,\n\t\"TYPE_UINT32\":   13,\n\t\"TYPE_ENUM\":     14,\n\t\"TYPE_SFIXED32\": 15,\n\t\"TYPE_SFIXED64\": 16,\n\t\"TYPE_SINT32\":   17,\n\t\"TYPE_SINT64\":   18,\n}\n\nfunc (x FieldDescriptorProto_Type) Enum() *FieldDescriptorProto_Type {\n\tp := new(FieldDescriptorProto_Type)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldDescriptorProto_Type) String() string {\n\treturn proto.EnumName(FieldDescriptorProto_Type_name, int32(x))\n}\n\nfunc (x *FieldDescriptorProto_Type) UnmarshalJSON(data []byte) error {\n\tvalue, err := proto.UnmarshalJSONEnum(FieldDescriptorProto_Type_value, data, \"FieldDescriptorProto_Type\")\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldDescriptorProto_Type(value)\n\treturn nil\n}\n\nfunc (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{4, 0}\n}\n\ntype FieldDescriptorProto_Label int32\n\nconst (\n\t// 0 is reserved for errors\n\tFieldDescriptorProto_LABEL_OPTIONAL FieldDescriptorProto_Label = 1\n\tFieldDescriptorProto_LABEL_REQUIRED FieldDescriptorProto_Label = 2\n\tFieldDescriptorProto_LABEL_REPEATED FieldDescriptorProto_Label = 3\n)\n\nvar FieldDescriptorProto_Label_name = map[int32]string{\n\t1: \"LABEL_OPTIONAL\",\n\t2: \"LABEL_REQUIRED\",\n\t3: \"LABEL_REPEATED\",\n}\n\nvar FieldDescriptorProto_Label_value = map[string]int32{\n\t\"LABEL_OPTIONAL\": 1,\n\t\"LABEL_REQUIRED\": 2,\n\t\"LABEL_REPEATED\": 3,\n}\n\nfunc (x FieldDescriptorProto_Label) Enum() *FieldDescriptorProto_Label {\n\tp := new(FieldDescriptorProto_Label)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldDescriptorProto_Label) String() string {\n\treturn proto.EnumName(FieldDescriptorProto_Label_name, int32(x))\n}\n\nfunc (x *FieldDescriptorProto_Label) UnmarshalJSON(data []byte) error {\n\tvalue, err := proto.UnmarshalJSONEnum(FieldDescriptorProto_Label_value, data, \"FieldDescriptorProto_Label\")\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldDescriptorProto_Label(value)\n\treturn nil\n}\n\nfunc (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{4, 1}\n}\n\n// Generated classes can be optimized for speed or code size.\ntype FileOptions_OptimizeMode int32\n\nconst (\n\tFileOptions_SPEED FileOptions_OptimizeMode = 1\n\t// etc.\n\tFileOptions_CODE_SIZE    FileOptions_OptimizeMode = 2\n\tFileOptions_LITE_RUNTIME FileOptions_OptimizeMode = 3\n)\n\nvar FileOptions_OptimizeMode_name = map[int32]string{\n\t1: \"SPEED\",\n\t2: \"CODE_SIZE\",\n\t3: \"LITE_RUNTIME\",\n}\n\nvar FileOptions_OptimizeMode_value = map[string]int32{\n\t\"SPEED\":        1,\n\t\"CODE_SIZE\":    2,\n\t\"LITE_RUNTIME\": 3,\n}\n\nfunc (x FileOptions_OptimizeMode) Enum() *FileOptions_OptimizeMode {\n\tp := new(FileOptions_OptimizeMode)\n\t*p = x\n\treturn p\n}\n\nfunc (x FileOptions_OptimizeMode) String() string {\n\treturn proto.EnumName(FileOptions_OptimizeMode_name, int32(x))\n}\n\nfunc (x *FileOptions_OptimizeMode) UnmarshalJSON(data []byte) error {\n\tvalue, err := proto.UnmarshalJSONEnum(FileOptions_OptimizeMode_value, data, \"FileOptions_OptimizeMode\")\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FileOptions_OptimizeMode(value)\n\treturn nil\n}\n\nfunc (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{10, 0}\n}\n\ntype FieldOptions_CType int32\n\nconst (\n\t// Default mode.\n\tFieldOptions_STRING       FieldOptions_CType = 0\n\tFieldOptions_CORD         FieldOptions_CType = 1\n\tFieldOptions_STRING_PIECE FieldOptions_CType = 2\n)\n\nvar FieldOptions_CType_name = map[int32]string{\n\t0: \"STRING\",\n\t1: \"CORD\",\n\t2: \"STRING_PIECE\",\n}\n\nvar FieldOptions_CType_value = map[string]int32{\n\t\"STRING\":       0,\n\t\"CORD\":         1,\n\t\"STRING_PIECE\": 2,\n}\n\nfunc (x FieldOptions_CType) Enum() *FieldOptions_CType {\n\tp := new(FieldOptions_CType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_CType) String() string {\n\treturn proto.EnumName(FieldOptions_CType_name, int32(x))\n}\n\nfunc (x *FieldOptions_CType) UnmarshalJSON(data []byte) error {\n\tvalue, err := proto.UnmarshalJSONEnum(FieldOptions_CType_value, data, \"FieldOptions_CType\")\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_CType(value)\n\treturn nil\n}\n\nfunc (FieldOptions_CType) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{12, 0}\n}\n\ntype FieldOptions_JSType int32\n\nconst (\n\t// Use the default type.\n\tFieldOptions_JS_NORMAL FieldOptions_JSType = 0\n\t// Use JavaScript strings.\n\tFieldOptions_JS_STRING FieldOptions_JSType = 1\n\t// Use JavaScript numbers.\n\tFieldOptions_JS_NUMBER FieldOptions_JSType = 2\n)\n\nvar FieldOptions_JSType_name = map[int32]string{\n\t0: \"JS_NORMAL\",\n\t1: \"JS_STRING\",\n\t2: \"JS_NUMBER\",\n}\n\nvar FieldOptions_JSType_value = map[string]int32{\n\t\"JS_NORMAL\": 0,\n\t\"JS_STRING\": 1,\n\t\"JS_NUMBER\": 2,\n}\n\nfunc (x FieldOptions_JSType) Enum() *FieldOptions_JSType {\n\tp := new(FieldOptions_JSType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_JSType) String() string {\n\treturn proto.EnumName(FieldOptions_JSType_name, int32(x))\n}\n\nfunc (x *FieldOptions_JSType) UnmarshalJSON(data []byte) error {\n\tvalue, err := proto.UnmarshalJSONEnum(FieldOptions_JSType_value, data, \"FieldOptions_JSType\")\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_JSType(value)\n\treturn nil\n}\n\nfunc (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{12, 1}\n}\n\n// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,\n// or neither? HTTP based RPC implementation may choose GET verb for safe\n// methods, and PUT verb for idempotent methods instead of the default POST.\ntype MethodOptions_IdempotencyLevel int32\n\nconst (\n\tMethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0\n\tMethodOptions_NO_SIDE_EFFECTS     MethodOptions_IdempotencyLevel = 1\n\tMethodOptions_IDEMPOTENT          MethodOptions_IdempotencyLevel = 2\n)\n\nvar MethodOptions_IdempotencyLevel_name = map[int32]string{\n\t0: \"IDEMPOTENCY_UNKNOWN\",\n\t1: \"NO_SIDE_EFFECTS\",\n\t2: \"IDEMPOTENT\",\n}\n\nvar MethodOptions_IdempotencyLevel_value = map[string]int32{\n\t\"IDEMPOTENCY_UNKNOWN\": 0,\n\t\"NO_SIDE_EFFECTS\":     1,\n\t\"IDEMPOTENT\":          2,\n}\n\nfunc (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel {\n\tp := new(MethodOptions_IdempotencyLevel)\n\t*p = x\n\treturn p\n}\n\nfunc (x MethodOptions_IdempotencyLevel) String() string {\n\treturn proto.EnumName(MethodOptions_IdempotencyLevel_name, int32(x))\n}\n\nfunc (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error {\n\tvalue, err := proto.UnmarshalJSONEnum(MethodOptions_IdempotencyLevel_value, data, \"MethodOptions_IdempotencyLevel\")\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = MethodOptions_IdempotencyLevel(value)\n\treturn nil\n}\n\nfunc (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{17, 0}\n}\n\n// The protocol compiler can output a FileDescriptorSet containing the .proto\n// files it parses.\ntype FileDescriptorSet struct {\n\tFile                 []*FileDescriptorProto `protobuf:\"bytes,1,rep,name=file\" json:\"file,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}               `json:\"-\"`\n\tXXX_unrecognized     []byte                 `json:\"-\"`\n\tXXX_sizecache        int32                  `json:\"-\"`\n}\n\nfunc (m *FileDescriptorSet) Reset()         { *m = FileDescriptorSet{} }\nfunc (m *FileDescriptorSet) String() string { return proto.CompactTextString(m) }\nfunc (*FileDescriptorSet) ProtoMessage()    {}\nfunc (*FileDescriptorSet) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{0}\n}\nfunc (m *FileDescriptorSet) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_FileDescriptorSet.Unmarshal(m, b)\n}\nfunc (m *FileDescriptorSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_FileDescriptorSet.Marshal(b, m, deterministic)\n}\nfunc (m *FileDescriptorSet) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_FileDescriptorSet.Merge(m, src)\n}\nfunc (m *FileDescriptorSet) XXX_Size() int {\n\treturn xxx_messageInfo_FileDescriptorSet.Size(m)\n}\nfunc (m *FileDescriptorSet) XXX_DiscardUnknown() {\n\txxx_messageInfo_FileDescriptorSet.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_FileDescriptorSet proto.InternalMessageInfo\n\nfunc (m *FileDescriptorSet) GetFile() []*FileDescriptorProto {\n\tif m != nil {\n\t\treturn m.File\n\t}\n\treturn nil\n}\n\n// Describes a complete .proto file.\ntype FileDescriptorProto struct {\n\tName    *string `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tPackage *string `protobuf:\"bytes,2,opt,name=package\" json:\"package,omitempty\"`\n\t// Names of files imported by this file.\n\tDependency []string `protobuf:\"bytes,3,rep,name=dependency\" json:\"dependency,omitempty\"`\n\t// Indexes of the public imported files in the dependency list above.\n\tPublicDependency []int32 `protobuf:\"varint,10,rep,name=public_dependency,json=publicDependency\" json:\"public_dependency,omitempty\"`\n\t// Indexes of the weak imported files in the dependency list.\n\t// For Google-internal migration only. Do not use.\n\tWeakDependency []int32 `protobuf:\"varint,11,rep,name=weak_dependency,json=weakDependency\" json:\"weak_dependency,omitempty\"`\n\t// All top-level definitions in this file.\n\tMessageType []*DescriptorProto        `protobuf:\"bytes,4,rep,name=message_type,json=messageType\" json:\"message_type,omitempty\"`\n\tEnumType    []*EnumDescriptorProto    `protobuf:\"bytes,5,rep,name=enum_type,json=enumType\" json:\"enum_type,omitempty\"`\n\tService     []*ServiceDescriptorProto `protobuf:\"bytes,6,rep,name=service\" json:\"service,omitempty\"`\n\tExtension   []*FieldDescriptorProto   `protobuf:\"bytes,7,rep,name=extension\" json:\"extension,omitempty\"`\n\tOptions     *FileOptions              `protobuf:\"bytes,8,opt,name=options\" json:\"options,omitempty\"`\n\t// This field contains optional information about the original source code.\n\t// You may safely remove this entire field without harming runtime\n\t// functionality of the descriptors -- the information is needed only by\n\t// development tools.\n\tSourceCodeInfo *SourceCodeInfo `protobuf:\"bytes,9,opt,name=source_code_info,json=sourceCodeInfo\" json:\"source_code_info,omitempty\"`\n\t// The syntax of the proto file.\n\t// The supported values are \"proto2\" and \"proto3\".\n\tSyntax               *string  `protobuf:\"bytes,12,opt,name=syntax\" json:\"syntax,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *FileDescriptorProto) Reset()         { *m = FileDescriptorProto{} }\nfunc (m *FileDescriptorProto) String() string { return proto.CompactTextString(m) }\nfunc (*FileDescriptorProto) ProtoMessage()    {}\nfunc (*FileDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{1}\n}\nfunc (m *FileDescriptorProto) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_FileDescriptorProto.Unmarshal(m, b)\n}\nfunc (m *FileDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_FileDescriptorProto.Marshal(b, m, deterministic)\n}\nfunc (m *FileDescriptorProto) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_FileDescriptorProto.Merge(m, src)\n}\nfunc (m *FileDescriptorProto) XXX_Size() int {\n\treturn xxx_messageInfo_FileDescriptorProto.Size(m)\n}\nfunc (m *FileDescriptorProto) XXX_DiscardUnknown() {\n\txxx_messageInfo_FileDescriptorProto.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_FileDescriptorProto proto.InternalMessageInfo\n\nfunc (m *FileDescriptorProto) GetName() string {\n\tif m != nil && m.Name != nil {\n\t\treturn *m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *FileDescriptorProto) GetPackage() string {\n\tif m != nil && m.Package != nil {\n\t\treturn *m.Package\n\t}\n\treturn \"\"\n}\n\nfunc (m *FileDescriptorProto) GetDependency() []string {\n\tif m != nil {\n\t\treturn m.Dependency\n\t}\n\treturn nil\n}\n\nfunc (m *FileDescriptorProto) GetPublicDependency() []int32 {\n\tif m != nil {\n\t\treturn m.PublicDependency\n\t}\n\treturn nil\n}\n\nfunc (m *FileDescriptorProto) GetWeakDependency() []int32 {\n\tif m != nil {\n\t\treturn m.WeakDependency\n\t}\n\treturn nil\n}\n\nfunc (m *FileDescriptorProto) GetMessageType() []*DescriptorProto {\n\tif m != nil {\n\t\treturn m.MessageType\n\t}\n\treturn nil\n}\n\nfunc (m *FileDescriptorProto) GetEnumType() []*EnumDescriptorProto {\n\tif m != nil {\n\t\treturn m.EnumType\n\t}\n\treturn nil\n}\n\nfunc (m *FileDescriptorProto) GetService() []*ServiceDescriptorProto {\n\tif m != nil {\n\t\treturn m.Service\n\t}\n\treturn nil\n}\n\nfunc (m *FileDescriptorProto) GetExtension() []*FieldDescriptorProto {\n\tif m != nil {\n\t\treturn m.Extension\n\t}\n\treturn nil\n}\n\nfunc (m *FileDescriptorProto) GetOptions() *FileOptions {\n\tif m != nil {\n\t\treturn m.Options\n\t}\n\treturn nil\n}\n\nfunc (m *FileDescriptorProto) GetSourceCodeInfo() *SourceCodeInfo {\n\tif m != nil {\n\t\treturn m.SourceCodeInfo\n\t}\n\treturn nil\n}\n\nfunc (m *FileDescriptorProto) GetSyntax() string {\n\tif m != nil && m.Syntax != nil {\n\t\treturn *m.Syntax\n\t}\n\treturn \"\"\n}\n\n// Describes a message type.\ntype DescriptorProto struct {\n\tName           *string                           `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tField          []*FieldDescriptorProto           `protobuf:\"bytes,2,rep,name=field\" json:\"field,omitempty\"`\n\tExtension      []*FieldDescriptorProto           `protobuf:\"bytes,6,rep,name=extension\" json:\"extension,omitempty\"`\n\tNestedType     []*DescriptorProto                `protobuf:\"bytes,3,rep,name=nested_type,json=nestedType\" json:\"nested_type,omitempty\"`\n\tEnumType       []*EnumDescriptorProto            `protobuf:\"bytes,4,rep,name=enum_type,json=enumType\" json:\"enum_type,omitempty\"`\n\tExtensionRange []*DescriptorProto_ExtensionRange `protobuf:\"bytes,5,rep,name=extension_range,json=extensionRange\" json:\"extension_range,omitempty\"`\n\tOneofDecl      []*OneofDescriptorProto           `protobuf:\"bytes,8,rep,name=oneof_decl,json=oneofDecl\" json:\"oneof_decl,omitempty\"`\n\tOptions        *MessageOptions                   `protobuf:\"bytes,7,opt,name=options\" json:\"options,omitempty\"`\n\tReservedRange  []*DescriptorProto_ReservedRange  `protobuf:\"bytes,9,rep,name=reserved_range,json=reservedRange\" json:\"reserved_range,omitempty\"`\n\t// Reserved field names, which may not be used by fields in the same message.\n\t// A given name may only be reserved once.\n\tReservedName         []string `protobuf:\"bytes,10,rep,name=reserved_name,json=reservedName\" json:\"reserved_name,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *DescriptorProto) Reset()         { *m = DescriptorProto{} }\nfunc (m *DescriptorProto) String() string { return proto.CompactTextString(m) }\nfunc (*DescriptorProto) ProtoMessage()    {}\nfunc (*DescriptorProto) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{2}\n}\nfunc (m *DescriptorProto) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_DescriptorProto.Unmarshal(m, b)\n}\nfunc (m *DescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_DescriptorProto.Marshal(b, m, deterministic)\n}\nfunc (m *DescriptorProto) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DescriptorProto.Merge(m, src)\n}\nfunc (m *DescriptorProto) XXX_Size() int {\n\treturn xxx_messageInfo_DescriptorProto.Size(m)\n}\nfunc (m *DescriptorProto) XXX_DiscardUnknown() {\n\txxx_messageInfo_DescriptorProto.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DescriptorProto proto.InternalMessageInfo\n\nfunc (m *DescriptorProto) GetName() string {\n\tif m != nil && m.Name != nil {\n\t\treturn *m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *DescriptorProto) GetField() []*FieldDescriptorProto {\n\tif m != nil {\n\t\treturn m.Field\n\t}\n\treturn nil\n}\n\nfunc (m *DescriptorProto) GetExtension() []*FieldDescriptorProto {\n\tif m != nil {\n\t\treturn m.Extension\n\t}\n\treturn nil\n}\n\nfunc (m *DescriptorProto) GetNestedType() []*DescriptorProto {\n\tif m != nil {\n\t\treturn m.NestedType\n\t}\n\treturn nil\n}\n\nfunc (m *DescriptorProto) GetEnumType() []*EnumDescriptorProto {\n\tif m != nil {\n\t\treturn m.EnumType\n\t}\n\treturn nil\n}\n\nfunc (m *DescriptorProto) GetExtensionRange() []*DescriptorProto_ExtensionRange {\n\tif m != nil {\n\t\treturn m.ExtensionRange\n\t}\n\treturn nil\n}\n\nfunc (m *DescriptorProto) GetOneofDecl() []*OneofDescriptorProto {\n\tif m != nil {\n\t\treturn m.OneofDecl\n\t}\n\treturn nil\n}\n\nfunc (m *DescriptorProto) GetOptions() *MessageOptions {\n\tif m != nil {\n\t\treturn m.Options\n\t}\n\treturn nil\n}\n\nfunc (m *DescriptorProto) GetReservedRange() []*DescriptorProto_ReservedRange {\n\tif m != nil {\n\t\treturn m.ReservedRange\n\t}\n\treturn nil\n}\n\nfunc (m *DescriptorProto) GetReservedName() []string {\n\tif m != nil {\n\t\treturn m.ReservedName\n\t}\n\treturn nil\n}\n\ntype DescriptorProto_ExtensionRange struct {\n\tStart                *int32                 `protobuf:\"varint,1,opt,name=start\" json:\"start,omitempty\"`\n\tEnd                  *int32                 `protobuf:\"varint,2,opt,name=end\" json:\"end,omitempty\"`\n\tOptions              *ExtensionRangeOptions `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}               `json:\"-\"`\n\tXXX_unrecognized     []byte                 `json:\"-\"`\n\tXXX_sizecache        int32                  `json:\"-\"`\n}\n\nfunc (m *DescriptorProto_ExtensionRange) Reset()         { *m = DescriptorProto_ExtensionRange{} }\nfunc (m *DescriptorProto_ExtensionRange) String() string { return proto.CompactTextString(m) }\nfunc (*DescriptorProto_ExtensionRange) ProtoMessage()    {}\nfunc (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{2, 0}\n}\nfunc (m *DescriptorProto_ExtensionRange) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_DescriptorProto_ExtensionRange.Unmarshal(m, b)\n}\nfunc (m *DescriptorProto_ExtensionRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_DescriptorProto_ExtensionRange.Marshal(b, m, deterministic)\n}\nfunc (m *DescriptorProto_ExtensionRange) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DescriptorProto_ExtensionRange.Merge(m, src)\n}\nfunc (m *DescriptorProto_ExtensionRange) XXX_Size() int {\n\treturn xxx_messageInfo_DescriptorProto_ExtensionRange.Size(m)\n}\nfunc (m *DescriptorProto_ExtensionRange) XXX_DiscardUnknown() {\n\txxx_messageInfo_DescriptorProto_ExtensionRange.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DescriptorProto_ExtensionRange proto.InternalMessageInfo\n\nfunc (m *DescriptorProto_ExtensionRange) GetStart() int32 {\n\tif m != nil && m.Start != nil {\n\t\treturn *m.Start\n\t}\n\treturn 0\n}\n\nfunc (m *DescriptorProto_ExtensionRange) GetEnd() int32 {\n\tif m != nil && m.End != nil {\n\t\treturn *m.End\n\t}\n\treturn 0\n}\n\nfunc (m *DescriptorProto_ExtensionRange) GetOptions() *ExtensionRangeOptions {\n\tif m != nil {\n\t\treturn m.Options\n\t}\n\treturn nil\n}\n\n// Range of reserved tag numbers. Reserved tag numbers may not be used by\n// fields or extension ranges in the same message. Reserved ranges may\n// not overlap.\ntype DescriptorProto_ReservedRange struct {\n\tStart                *int32   `protobuf:\"varint,1,opt,name=start\" json:\"start,omitempty\"`\n\tEnd                  *int32   `protobuf:\"varint,2,opt,name=end\" json:\"end,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *DescriptorProto_ReservedRange) Reset()         { *m = DescriptorProto_ReservedRange{} }\nfunc (m *DescriptorProto_ReservedRange) String() string { return proto.CompactTextString(m) }\nfunc (*DescriptorProto_ReservedRange) ProtoMessage()    {}\nfunc (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{2, 1}\n}\nfunc (m *DescriptorProto_ReservedRange) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_DescriptorProto_ReservedRange.Unmarshal(m, b)\n}\nfunc (m *DescriptorProto_ReservedRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_DescriptorProto_ReservedRange.Marshal(b, m, deterministic)\n}\nfunc (m *DescriptorProto_ReservedRange) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DescriptorProto_ReservedRange.Merge(m, src)\n}\nfunc (m *DescriptorProto_ReservedRange) XXX_Size() int {\n\treturn xxx_messageInfo_DescriptorProto_ReservedRange.Size(m)\n}\nfunc (m *DescriptorProto_ReservedRange) XXX_DiscardUnknown() {\n\txxx_messageInfo_DescriptorProto_ReservedRange.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DescriptorProto_ReservedRange proto.InternalMessageInfo\n\nfunc (m *DescriptorProto_ReservedRange) GetStart() int32 {\n\tif m != nil && m.Start != nil {\n\t\treturn *m.Start\n\t}\n\treturn 0\n}\n\nfunc (m *DescriptorProto_ReservedRange) GetEnd() int32 {\n\tif m != nil && m.End != nil {\n\t\treturn *m.End\n\t}\n\treturn 0\n}\n\ntype ExtensionRangeOptions struct {\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption          []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\tXXX_NoUnkeyedLiteral         struct{}               `json:\"-\"`\n\tproto.XXX_InternalExtensions `json:\"-\"`\n\tXXX_unrecognized             []byte `json:\"-\"`\n\tXXX_sizecache                int32  `json:\"-\"`\n}\n\nfunc (m *ExtensionRangeOptions) Reset()         { *m = ExtensionRangeOptions{} }\nfunc (m *ExtensionRangeOptions) String() string { return proto.CompactTextString(m) }\nfunc (*ExtensionRangeOptions) ProtoMessage()    {}\nfunc (*ExtensionRangeOptions) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{3}\n}\n\nvar extRange_ExtensionRangeOptions = []proto.ExtensionRange{\n\t{Start: 1000, End: 536870911},\n}\n\nfunc (*ExtensionRangeOptions) ExtensionRangeArray() []proto.ExtensionRange {\n\treturn extRange_ExtensionRangeOptions\n}\n\nfunc (m *ExtensionRangeOptions) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_ExtensionRangeOptions.Unmarshal(m, b)\n}\nfunc (m *ExtensionRangeOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_ExtensionRangeOptions.Marshal(b, m, deterministic)\n}\nfunc (m *ExtensionRangeOptions) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_ExtensionRangeOptions.Merge(m, src)\n}\nfunc (m *ExtensionRangeOptions) XXX_Size() int {\n\treturn xxx_messageInfo_ExtensionRangeOptions.Size(m)\n}\nfunc (m *ExtensionRangeOptions) XXX_DiscardUnknown() {\n\txxx_messageInfo_ExtensionRangeOptions.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_ExtensionRangeOptions proto.InternalMessageInfo\n\nfunc (m *ExtensionRangeOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif m != nil {\n\t\treturn m.UninterpretedOption\n\t}\n\treturn nil\n}\n\n// Describes a field within a message.\ntype FieldDescriptorProto struct {\n\tName   *string                     `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tNumber *int32                      `protobuf:\"varint,3,opt,name=number\" json:\"number,omitempty\"`\n\tLabel  *FieldDescriptorProto_Label `protobuf:\"varint,4,opt,name=label,enum=google.protobuf.FieldDescriptorProto_Label\" json:\"label,omitempty\"`\n\t// If type_name is set, this need not be set.  If both this and type_name\n\t// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.\n\tType *FieldDescriptorProto_Type `protobuf:\"varint,5,opt,name=type,enum=google.protobuf.FieldDescriptorProto_Type\" json:\"type,omitempty\"`\n\t// For message and enum types, this is the name of the type.  If the name\n\t// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping\n\t// rules are used to find the type (i.e. first the nested types within this\n\t// message are searched, then within the parent, on up to the root\n\t// namespace).\n\tTypeName *string `protobuf:\"bytes,6,opt,name=type_name,json=typeName\" json:\"type_name,omitempty\"`\n\t// For extensions, this is the name of the type being extended.  It is\n\t// resolved in the same manner as type_name.\n\tExtendee *string `protobuf:\"bytes,2,opt,name=extendee\" json:\"extendee,omitempty\"`\n\t// For numeric types, contains the original text representation of the value.\n\t// For booleans, \"true\" or \"false\".\n\t// For strings, contains the default text contents (not escaped in any way).\n\t// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.\n\t// TODO(kenton):  Base-64 encode?\n\tDefaultValue *string `protobuf:\"bytes,7,opt,name=default_value,json=defaultValue\" json:\"default_value,omitempty\"`\n\t// If set, gives the index of a oneof in the containing type's oneof_decl\n\t// list.  This field is a member of that oneof.\n\tOneofIndex *int32 `protobuf:\"varint,9,opt,name=oneof_index,json=oneofIndex\" json:\"oneof_index,omitempty\"`\n\t// JSON name of this field. The value is set by protocol compiler. If the\n\t// user has set a \"json_name\" option on this field, that option's value\n\t// will be used. Otherwise, it's deduced from the field's name by converting\n\t// it to camelCase.\n\tJsonName             *string       `protobuf:\"bytes,10,opt,name=json_name,json=jsonName\" json:\"json_name,omitempty\"`\n\tOptions              *FieldOptions `protobuf:\"bytes,8,opt,name=options\" json:\"options,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}      `json:\"-\"`\n\tXXX_unrecognized     []byte        `json:\"-\"`\n\tXXX_sizecache        int32         `json:\"-\"`\n}\n\nfunc (m *FieldDescriptorProto) Reset()         { *m = FieldDescriptorProto{} }\nfunc (m *FieldDescriptorProto) String() string { return proto.CompactTextString(m) }\nfunc (*FieldDescriptorProto) ProtoMessage()    {}\nfunc (*FieldDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{4}\n}\nfunc (m *FieldDescriptorProto) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_FieldDescriptorProto.Unmarshal(m, b)\n}\nfunc (m *FieldDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_FieldDescriptorProto.Marshal(b, m, deterministic)\n}\nfunc (m *FieldDescriptorProto) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_FieldDescriptorProto.Merge(m, src)\n}\nfunc (m *FieldDescriptorProto) XXX_Size() int {\n\treturn xxx_messageInfo_FieldDescriptorProto.Size(m)\n}\nfunc (m *FieldDescriptorProto) XXX_DiscardUnknown() {\n\txxx_messageInfo_FieldDescriptorProto.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_FieldDescriptorProto proto.InternalMessageInfo\n\nfunc (m *FieldDescriptorProto) GetName() string {\n\tif m != nil && m.Name != nil {\n\t\treturn *m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *FieldDescriptorProto) GetNumber() int32 {\n\tif m != nil && m.Number != nil {\n\t\treturn *m.Number\n\t}\n\treturn 0\n}\n\nfunc (m *FieldDescriptorProto) GetLabel() FieldDescriptorProto_Label {\n\tif m != nil && m.Label != nil {\n\t\treturn *m.Label\n\t}\n\treturn FieldDescriptorProto_LABEL_OPTIONAL\n}\n\nfunc (m *FieldDescriptorProto) GetType() FieldDescriptorProto_Type {\n\tif m != nil && m.Type != nil {\n\t\treturn *m.Type\n\t}\n\treturn FieldDescriptorProto_TYPE_DOUBLE\n}\n\nfunc (m *FieldDescriptorProto) GetTypeName() string {\n\tif m != nil && m.TypeName != nil {\n\t\treturn *m.TypeName\n\t}\n\treturn \"\"\n}\n\nfunc (m *FieldDescriptorProto) GetExtendee() string {\n\tif m != nil && m.Extendee != nil {\n\t\treturn *m.Extendee\n\t}\n\treturn \"\"\n}\n\nfunc (m *FieldDescriptorProto) GetDefaultValue() string {\n\tif m != nil && m.DefaultValue != nil {\n\t\treturn *m.DefaultValue\n\t}\n\treturn \"\"\n}\n\nfunc (m *FieldDescriptorProto) GetOneofIndex() int32 {\n\tif m != nil && m.OneofIndex != nil {\n\t\treturn *m.OneofIndex\n\t}\n\treturn 0\n}\n\nfunc (m *FieldDescriptorProto) GetJsonName() string {\n\tif m != nil && m.JsonName != nil {\n\t\treturn *m.JsonName\n\t}\n\treturn \"\"\n}\n\nfunc (m *FieldDescriptorProto) GetOptions() *FieldOptions {\n\tif m != nil {\n\t\treturn m.Options\n\t}\n\treturn nil\n}\n\n// Describes a oneof.\ntype OneofDescriptorProto struct {\n\tName                 *string       `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tOptions              *OneofOptions `protobuf:\"bytes,2,opt,name=options\" json:\"options,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}      `json:\"-\"`\n\tXXX_unrecognized     []byte        `json:\"-\"`\n\tXXX_sizecache        int32         `json:\"-\"`\n}\n\nfunc (m *OneofDescriptorProto) Reset()         { *m = OneofDescriptorProto{} }\nfunc (m *OneofDescriptorProto) String() string { return proto.CompactTextString(m) }\nfunc (*OneofDescriptorProto) ProtoMessage()    {}\nfunc (*OneofDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{5}\n}\nfunc (m *OneofDescriptorProto) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_OneofDescriptorProto.Unmarshal(m, b)\n}\nfunc (m *OneofDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_OneofDescriptorProto.Marshal(b, m, deterministic)\n}\nfunc (m *OneofDescriptorProto) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_OneofDescriptorProto.Merge(m, src)\n}\nfunc (m *OneofDescriptorProto) XXX_Size() int {\n\treturn xxx_messageInfo_OneofDescriptorProto.Size(m)\n}\nfunc (m *OneofDescriptorProto) XXX_DiscardUnknown() {\n\txxx_messageInfo_OneofDescriptorProto.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_OneofDescriptorProto proto.InternalMessageInfo\n\nfunc (m *OneofDescriptorProto) GetName() string {\n\tif m != nil && m.Name != nil {\n\t\treturn *m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *OneofDescriptorProto) GetOptions() *OneofOptions {\n\tif m != nil {\n\t\treturn m.Options\n\t}\n\treturn nil\n}\n\n// Describes an enum type.\ntype EnumDescriptorProto struct {\n\tName    *string                     `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tValue   []*EnumValueDescriptorProto `protobuf:\"bytes,2,rep,name=value\" json:\"value,omitempty\"`\n\tOptions *EnumOptions                `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n\t// Range of reserved numeric values. Reserved numeric values may not be used\n\t// by enum values in the same enum declaration. Reserved ranges may not\n\t// overlap.\n\tReservedRange []*EnumDescriptorProto_EnumReservedRange `protobuf:\"bytes,4,rep,name=reserved_range,json=reservedRange\" json:\"reserved_range,omitempty\"`\n\t// Reserved enum value names, which may not be reused. A given name may only\n\t// be reserved once.\n\tReservedName         []string `protobuf:\"bytes,5,rep,name=reserved_name,json=reservedName\" json:\"reserved_name,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *EnumDescriptorProto) Reset()         { *m = EnumDescriptorProto{} }\nfunc (m *EnumDescriptorProto) String() string { return proto.CompactTextString(m) }\nfunc (*EnumDescriptorProto) ProtoMessage()    {}\nfunc (*EnumDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{6}\n}\nfunc (m *EnumDescriptorProto) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_EnumDescriptorProto.Unmarshal(m, b)\n}\nfunc (m *EnumDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_EnumDescriptorProto.Marshal(b, m, deterministic)\n}\nfunc (m *EnumDescriptorProto) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EnumDescriptorProto.Merge(m, src)\n}\nfunc (m *EnumDescriptorProto) XXX_Size() int {\n\treturn xxx_messageInfo_EnumDescriptorProto.Size(m)\n}\nfunc (m *EnumDescriptorProto) XXX_DiscardUnknown() {\n\txxx_messageInfo_EnumDescriptorProto.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EnumDescriptorProto proto.InternalMessageInfo\n\nfunc (m *EnumDescriptorProto) GetName() string {\n\tif m != nil && m.Name != nil {\n\t\treturn *m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *EnumDescriptorProto) GetValue() []*EnumValueDescriptorProto {\n\tif m != nil {\n\t\treturn m.Value\n\t}\n\treturn nil\n}\n\nfunc (m *EnumDescriptorProto) GetOptions() *EnumOptions {\n\tif m != nil {\n\t\treturn m.Options\n\t}\n\treturn nil\n}\n\nfunc (m *EnumDescriptorProto) GetReservedRange() []*EnumDescriptorProto_EnumReservedRange {\n\tif m != nil {\n\t\treturn m.ReservedRange\n\t}\n\treturn nil\n}\n\nfunc (m *EnumDescriptorProto) GetReservedName() []string {\n\tif m != nil {\n\t\treturn m.ReservedName\n\t}\n\treturn nil\n}\n\n// Range of reserved numeric values. Reserved values may not be used by\n// entries in the same enum. Reserved ranges may not overlap.\n//\n// Note that this is distinct from DescriptorProto.ReservedRange in that it\n// is inclusive such that it can appropriately represent the entire int32\n// domain.\ntype EnumDescriptorProto_EnumReservedRange struct {\n\tStart                *int32   `protobuf:\"varint,1,opt,name=start\" json:\"start,omitempty\"`\n\tEnd                  *int32   `protobuf:\"varint,2,opt,name=end\" json:\"end,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *EnumDescriptorProto_EnumReservedRange) Reset()         { *m = EnumDescriptorProto_EnumReservedRange{} }\nfunc (m *EnumDescriptorProto_EnumReservedRange) String() string { return proto.CompactTextString(m) }\nfunc (*EnumDescriptorProto_EnumReservedRange) ProtoMessage()    {}\nfunc (*EnumDescriptorProto_EnumReservedRange) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{6, 0}\n}\nfunc (m *EnumDescriptorProto_EnumReservedRange) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Unmarshal(m, b)\n}\nfunc (m *EnumDescriptorProto_EnumReservedRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Marshal(b, m, deterministic)\n}\nfunc (m *EnumDescriptorProto_EnumReservedRange) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Merge(m, src)\n}\nfunc (m *EnumDescriptorProto_EnumReservedRange) XXX_Size() int {\n\treturn xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Size(m)\n}\nfunc (m *EnumDescriptorProto_EnumReservedRange) XXX_DiscardUnknown() {\n\txxx_messageInfo_EnumDescriptorProto_EnumReservedRange.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EnumDescriptorProto_EnumReservedRange proto.InternalMessageInfo\n\nfunc (m *EnumDescriptorProto_EnumReservedRange) GetStart() int32 {\n\tif m != nil && m.Start != nil {\n\t\treturn *m.Start\n\t}\n\treturn 0\n}\n\nfunc (m *EnumDescriptorProto_EnumReservedRange) GetEnd() int32 {\n\tif m != nil && m.End != nil {\n\t\treturn *m.End\n\t}\n\treturn 0\n}\n\n// Describes a value within an enum.\ntype EnumValueDescriptorProto struct {\n\tName                 *string           `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tNumber               *int32            `protobuf:\"varint,2,opt,name=number\" json:\"number,omitempty\"`\n\tOptions              *EnumValueOptions `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}          `json:\"-\"`\n\tXXX_unrecognized     []byte            `json:\"-\"`\n\tXXX_sizecache        int32             `json:\"-\"`\n}\n\nfunc (m *EnumValueDescriptorProto) Reset()         { *m = EnumValueDescriptorProto{} }\nfunc (m *EnumValueDescriptorProto) String() string { return proto.CompactTextString(m) }\nfunc (*EnumValueDescriptorProto) ProtoMessage()    {}\nfunc (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{7}\n}\nfunc (m *EnumValueDescriptorProto) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_EnumValueDescriptorProto.Unmarshal(m, b)\n}\nfunc (m *EnumValueDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_EnumValueDescriptorProto.Marshal(b, m, deterministic)\n}\nfunc (m *EnumValueDescriptorProto) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EnumValueDescriptorProto.Merge(m, src)\n}\nfunc (m *EnumValueDescriptorProto) XXX_Size() int {\n\treturn xxx_messageInfo_EnumValueDescriptorProto.Size(m)\n}\nfunc (m *EnumValueDescriptorProto) XXX_DiscardUnknown() {\n\txxx_messageInfo_EnumValueDescriptorProto.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EnumValueDescriptorProto proto.InternalMessageInfo\n\nfunc (m *EnumValueDescriptorProto) GetName() string {\n\tif m != nil && m.Name != nil {\n\t\treturn *m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *EnumValueDescriptorProto) GetNumber() int32 {\n\tif m != nil && m.Number != nil {\n\t\treturn *m.Number\n\t}\n\treturn 0\n}\n\nfunc (m *EnumValueDescriptorProto) GetOptions() *EnumValueOptions {\n\tif m != nil {\n\t\treturn m.Options\n\t}\n\treturn nil\n}\n\n// Describes a service.\ntype ServiceDescriptorProto struct {\n\tName                 *string                  `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tMethod               []*MethodDescriptorProto `protobuf:\"bytes,2,rep,name=method\" json:\"method,omitempty\"`\n\tOptions              *ServiceOptions          `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}                 `json:\"-\"`\n\tXXX_unrecognized     []byte                   `json:\"-\"`\n\tXXX_sizecache        int32                    `json:\"-\"`\n}\n\nfunc (m *ServiceDescriptorProto) Reset()         { *m = ServiceDescriptorProto{} }\nfunc (m *ServiceDescriptorProto) String() string { return proto.CompactTextString(m) }\nfunc (*ServiceDescriptorProto) ProtoMessage()    {}\nfunc (*ServiceDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{8}\n}\nfunc (m *ServiceDescriptorProto) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_ServiceDescriptorProto.Unmarshal(m, b)\n}\nfunc (m *ServiceDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_ServiceDescriptorProto.Marshal(b, m, deterministic)\n}\nfunc (m *ServiceDescriptorProto) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_ServiceDescriptorProto.Merge(m, src)\n}\nfunc (m *ServiceDescriptorProto) XXX_Size() int {\n\treturn xxx_messageInfo_ServiceDescriptorProto.Size(m)\n}\nfunc (m *ServiceDescriptorProto) XXX_DiscardUnknown() {\n\txxx_messageInfo_ServiceDescriptorProto.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_ServiceDescriptorProto proto.InternalMessageInfo\n\nfunc (m *ServiceDescriptorProto) GetName() string {\n\tif m != nil && m.Name != nil {\n\t\treturn *m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *ServiceDescriptorProto) GetMethod() []*MethodDescriptorProto {\n\tif m != nil {\n\t\treturn m.Method\n\t}\n\treturn nil\n}\n\nfunc (m *ServiceDescriptorProto) GetOptions() *ServiceOptions {\n\tif m != nil {\n\t\treturn m.Options\n\t}\n\treturn nil\n}\n\n// Describes a method of a service.\ntype MethodDescriptorProto struct {\n\tName *string `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\t// Input and output type names.  These are resolved in the same way as\n\t// FieldDescriptorProto.type_name, but must refer to a message type.\n\tInputType  *string        `protobuf:\"bytes,2,opt,name=input_type,json=inputType\" json:\"input_type,omitempty\"`\n\tOutputType *string        `protobuf:\"bytes,3,opt,name=output_type,json=outputType\" json:\"output_type,omitempty\"`\n\tOptions    *MethodOptions `protobuf:\"bytes,4,opt,name=options\" json:\"options,omitempty\"`\n\t// Identifies if client streams multiple client messages\n\tClientStreaming *bool `protobuf:\"varint,5,opt,name=client_streaming,json=clientStreaming,def=0\" json:\"client_streaming,omitempty\"`\n\t// Identifies if server streams multiple server messages\n\tServerStreaming      *bool    `protobuf:\"varint,6,opt,name=server_streaming,json=serverStreaming,def=0\" json:\"server_streaming,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *MethodDescriptorProto) Reset()         { *m = MethodDescriptorProto{} }\nfunc (m *MethodDescriptorProto) String() string { return proto.CompactTextString(m) }\nfunc (*MethodDescriptorProto) ProtoMessage()    {}\nfunc (*MethodDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{9}\n}\nfunc (m *MethodDescriptorProto) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_MethodDescriptorProto.Unmarshal(m, b)\n}\nfunc (m *MethodDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_MethodDescriptorProto.Marshal(b, m, deterministic)\n}\nfunc (m *MethodDescriptorProto) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MethodDescriptorProto.Merge(m, src)\n}\nfunc (m *MethodDescriptorProto) XXX_Size() int {\n\treturn xxx_messageInfo_MethodDescriptorProto.Size(m)\n}\nfunc (m *MethodDescriptorProto) XXX_DiscardUnknown() {\n\txxx_messageInfo_MethodDescriptorProto.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MethodDescriptorProto proto.InternalMessageInfo\n\nconst Default_MethodDescriptorProto_ClientStreaming bool = false\nconst Default_MethodDescriptorProto_ServerStreaming bool = false\n\nfunc (m *MethodDescriptorProto) GetName() string {\n\tif m != nil && m.Name != nil {\n\t\treturn *m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *MethodDescriptorProto) GetInputType() string {\n\tif m != nil && m.InputType != nil {\n\t\treturn *m.InputType\n\t}\n\treturn \"\"\n}\n\nfunc (m *MethodDescriptorProto) GetOutputType() string {\n\tif m != nil && m.OutputType != nil {\n\t\treturn *m.OutputType\n\t}\n\treturn \"\"\n}\n\nfunc (m *MethodDescriptorProto) GetOptions() *MethodOptions {\n\tif m != nil {\n\t\treturn m.Options\n\t}\n\treturn nil\n}\n\nfunc (m *MethodDescriptorProto) GetClientStreaming() bool {\n\tif m != nil && m.ClientStreaming != nil {\n\t\treturn *m.ClientStreaming\n\t}\n\treturn Default_MethodDescriptorProto_ClientStreaming\n}\n\nfunc (m *MethodDescriptorProto) GetServerStreaming() bool {\n\tif m != nil && m.ServerStreaming != nil {\n\t\treturn *m.ServerStreaming\n\t}\n\treturn Default_MethodDescriptorProto_ServerStreaming\n}\n\ntype FileOptions struct {\n\t// Sets the Java package where classes generated from this .proto will be\n\t// placed.  By default, the proto package is used, but this is often\n\t// inappropriate because proto packages do not normally start with backwards\n\t// domain names.\n\tJavaPackage *string `protobuf:\"bytes,1,opt,name=java_package,json=javaPackage\" json:\"java_package,omitempty\"`\n\t// If set, all the classes from the .proto file are wrapped in a single\n\t// outer class with the given name.  This applies to both Proto1\n\t// (equivalent to the old \"--one_java_file\" option) and Proto2 (where\n\t// a .proto always translates to a single class, but you may want to\n\t// explicitly choose the class name).\n\tJavaOuterClassname *string `protobuf:\"bytes,8,opt,name=java_outer_classname,json=javaOuterClassname\" json:\"java_outer_classname,omitempty\"`\n\t// If set true, then the Java code generator will generate a separate .java\n\t// file for each top-level message, enum, and service defined in the .proto\n\t// file.  Thus, these types will *not* be nested inside the outer class\n\t// named by java_outer_classname.  However, the outer class will still be\n\t// generated to contain the file's getDescriptor() method as well as any\n\t// top-level extensions defined in the file.\n\tJavaMultipleFiles *bool `protobuf:\"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0\" json:\"java_multiple_files,omitempty\"`\n\t// This option does nothing.\n\tJavaGenerateEqualsAndHash *bool `protobuf:\"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash\" json:\"java_generate_equals_and_hash,omitempty\"` // Deprecated: Do not use.\n\t// If set true, then the Java2 code generator will generate code that\n\t// throws an exception whenever an attempt is made to assign a non-UTF-8\n\t// byte sequence to a string field.\n\t// Message reflection will do the same.\n\t// However, an extension field still accepts non-UTF-8 byte sequences.\n\t// This option has no effect on when used with the lite runtime.\n\tJavaStringCheckUtf8 *bool                     `protobuf:\"varint,27,opt,name=java_string_check_utf8,json=javaStringCheckUtf8,def=0\" json:\"java_string_check_utf8,omitempty\"`\n\tOptimizeFor         *FileOptions_OptimizeMode `protobuf:\"varint,9,opt,name=optimize_for,json=optimizeFor,enum=google.protobuf.FileOptions_OptimizeMode,def=1\" json:\"optimize_for,omitempty\"`\n\t// Sets the Go package where structs generated from this .proto will be\n\t// placed. If omitted, the Go package will be derived from the following:\n\t//   - The basename of the package import path, if provided.\n\t//   - Otherwise, the package statement in the .proto file, if present.\n\t//   - Otherwise, the basename of the .proto file, without extension.\n\tGoPackage *string `protobuf:\"bytes,11,opt,name=go_package,json=goPackage\" json:\"go_package,omitempty\"`\n\t// Should generic services be generated in each language?  \"Generic\" services\n\t// are not specific to any particular RPC system.  They are generated by the\n\t// main code generators in each language (without additional plugins).\n\t// Generic services were the only kind of service generation supported by\n\t// early versions of google.protobuf.\n\t//\n\t// Generic services are now considered deprecated in favor of using plugins\n\t// that generate code specific to your particular RPC system.  Therefore,\n\t// these default to false.  Old code which depends on generic services should\n\t// explicitly set them to true.\n\tCcGenericServices   *bool `protobuf:\"varint,16,opt,name=cc_generic_services,json=ccGenericServices,def=0\" json:\"cc_generic_services,omitempty\"`\n\tJavaGenericServices *bool `protobuf:\"varint,17,opt,name=java_generic_services,json=javaGenericServices,def=0\" json:\"java_generic_services,omitempty\"`\n\tPyGenericServices   *bool `protobuf:\"varint,18,opt,name=py_generic_services,json=pyGenericServices,def=0\" json:\"py_generic_services,omitempty\"`\n\tPhpGenericServices  *bool `protobuf:\"varint,42,opt,name=php_generic_services,json=phpGenericServices,def=0\" json:\"php_generic_services,omitempty\"`\n\t// Is this file deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for everything in the file, or it will be completely ignored; in the very\n\t// least, this is a formalization for deprecating files.\n\tDeprecated *bool `protobuf:\"varint,23,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// Enables the use of arenas for the proto messages in this file. This applies\n\t// only to generated classes for C++.\n\tCcEnableArenas *bool `protobuf:\"varint,31,opt,name=cc_enable_arenas,json=ccEnableArenas,def=0\" json:\"cc_enable_arenas,omitempty\"`\n\t// Sets the objective c class prefix which is prepended to all objective c\n\t// generated classes from this .proto. There is no default.\n\tObjcClassPrefix *string `protobuf:\"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix\" json:\"objc_class_prefix,omitempty\"`\n\t// Namespace for generated classes; defaults to the package.\n\tCsharpNamespace *string `protobuf:\"bytes,37,opt,name=csharp_namespace,json=csharpNamespace\" json:\"csharp_namespace,omitempty\"`\n\t// By default Swift generators will take the proto package and CamelCase it\n\t// replacing '.' with underscore and use that to prefix the types/symbols\n\t// defined. When this options is provided, they will use this value instead\n\t// to prefix the types/symbols defined.\n\tSwiftPrefix *string `protobuf:\"bytes,39,opt,name=swift_prefix,json=swiftPrefix\" json:\"swift_prefix,omitempty\"`\n\t// Sets the php class prefix which is prepended to all php generated classes\n\t// from this .proto. Default is empty.\n\tPhpClassPrefix *string `protobuf:\"bytes,40,opt,name=php_class_prefix,json=phpClassPrefix\" json:\"php_class_prefix,omitempty\"`\n\t// Use this option to change the namespace of php generated classes. Default\n\t// is empty. When this option is empty, the package name will be used for\n\t// determining the namespace.\n\tPhpNamespace *string `protobuf:\"bytes,41,opt,name=php_namespace,json=phpNamespace\" json:\"php_namespace,omitempty\"`\n\t// Use this option to change the namespace of php generated metadata classes.\n\t// Default is empty. When this option is empty, the proto file name will be\n\t// used for determining the namespace.\n\tPhpMetadataNamespace *string `protobuf:\"bytes,44,opt,name=php_metadata_namespace,json=phpMetadataNamespace\" json:\"php_metadata_namespace,omitempty\"`\n\t// Use this option to change the package of ruby generated classes. Default\n\t// is empty. When this option is not set, the package name will be used for\n\t// determining the ruby package.\n\tRubyPackage *string `protobuf:\"bytes,45,opt,name=ruby_package,json=rubyPackage\" json:\"ruby_package,omitempty\"`\n\t// The parser stores options it doesn't recognize here.\n\t// See the documentation for the \"Options\" section above.\n\tUninterpretedOption          []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\tXXX_NoUnkeyedLiteral         struct{}               `json:\"-\"`\n\tproto.XXX_InternalExtensions `json:\"-\"`\n\tXXX_unrecognized             []byte `json:\"-\"`\n\tXXX_sizecache                int32  `json:\"-\"`\n}\n\nfunc (m *FileOptions) Reset()         { *m = FileOptions{} }\nfunc (m *FileOptions) String() string { return proto.CompactTextString(m) }\nfunc (*FileOptions) ProtoMessage()    {}\nfunc (*FileOptions) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{10}\n}\n\nvar extRange_FileOptions = []proto.ExtensionRange{\n\t{Start: 1000, End: 536870911},\n}\n\nfunc (*FileOptions) ExtensionRangeArray() []proto.ExtensionRange {\n\treturn extRange_FileOptions\n}\n\nfunc (m *FileOptions) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_FileOptions.Unmarshal(m, b)\n}\nfunc (m *FileOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_FileOptions.Marshal(b, m, deterministic)\n}\nfunc (m *FileOptions) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_FileOptions.Merge(m, src)\n}\nfunc (m *FileOptions) XXX_Size() int {\n\treturn xxx_messageInfo_FileOptions.Size(m)\n}\nfunc (m *FileOptions) XXX_DiscardUnknown() {\n\txxx_messageInfo_FileOptions.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_FileOptions proto.InternalMessageInfo\n\nconst Default_FileOptions_JavaMultipleFiles bool = false\nconst Default_FileOptions_JavaStringCheckUtf8 bool = false\nconst Default_FileOptions_OptimizeFor FileOptions_OptimizeMode = FileOptions_SPEED\nconst Default_FileOptions_CcGenericServices bool = false\nconst Default_FileOptions_JavaGenericServices bool = false\nconst Default_FileOptions_PyGenericServices bool = false\nconst Default_FileOptions_PhpGenericServices bool = false\nconst Default_FileOptions_Deprecated bool = false\nconst Default_FileOptions_CcEnableArenas bool = false\n\nfunc (m *FileOptions) GetJavaPackage() string {\n\tif m != nil && m.JavaPackage != nil {\n\t\treturn *m.JavaPackage\n\t}\n\treturn \"\"\n}\n\nfunc (m *FileOptions) GetJavaOuterClassname() string {\n\tif m != nil && m.JavaOuterClassname != nil {\n\t\treturn *m.JavaOuterClassname\n\t}\n\treturn \"\"\n}\n\nfunc (m *FileOptions) GetJavaMultipleFiles() bool {\n\tif m != nil && m.JavaMultipleFiles != nil {\n\t\treturn *m.JavaMultipleFiles\n\t}\n\treturn Default_FileOptions_JavaMultipleFiles\n}\n\n// Deprecated: Do not use.\nfunc (m *FileOptions) GetJavaGenerateEqualsAndHash() bool {\n\tif m != nil && m.JavaGenerateEqualsAndHash != nil {\n\t\treturn *m.JavaGenerateEqualsAndHash\n\t}\n\treturn false\n}\n\nfunc (m *FileOptions) GetJavaStringCheckUtf8() bool {\n\tif m != nil && m.JavaStringCheckUtf8 != nil {\n\t\treturn *m.JavaStringCheckUtf8\n\t}\n\treturn Default_FileOptions_JavaStringCheckUtf8\n}\n\nfunc (m *FileOptions) GetOptimizeFor() FileOptions_OptimizeMode {\n\tif m != nil && m.OptimizeFor != nil {\n\t\treturn *m.OptimizeFor\n\t}\n\treturn Default_FileOptions_OptimizeFor\n}\n\nfunc (m *FileOptions) GetGoPackage() string {\n\tif m != nil && m.GoPackage != nil {\n\t\treturn *m.GoPackage\n\t}\n\treturn \"\"\n}\n\nfunc (m *FileOptions) GetCcGenericServices() bool {\n\tif m != nil && m.CcGenericServices != nil {\n\t\treturn *m.CcGenericServices\n\t}\n\treturn Default_FileOptions_CcGenericServices\n}\n\nfunc (m *FileOptions) GetJavaGenericServices() bool {\n\tif m != nil && m.JavaGenericServices != nil {\n\t\treturn *m.JavaGenericServices\n\t}\n\treturn Default_FileOptions_JavaGenericServices\n}\n\nfunc (m *FileOptions) GetPyGenericServices() bool {\n\tif m != nil && m.PyGenericServices != nil {\n\t\treturn *m.PyGenericServices\n\t}\n\treturn Default_FileOptions_PyGenericServices\n}\n\nfunc (m *FileOptions) GetPhpGenericServices() bool {\n\tif m != nil && m.PhpGenericServices != nil {\n\t\treturn *m.PhpGenericServices\n\t}\n\treturn Default_FileOptions_PhpGenericServices\n}\n\nfunc (m *FileOptions) GetDeprecated() bool {\n\tif m != nil && m.Deprecated != nil {\n\t\treturn *m.Deprecated\n\t}\n\treturn Default_FileOptions_Deprecated\n}\n\nfunc (m *FileOptions) GetCcEnableArenas() bool {\n\tif m != nil && m.CcEnableArenas != nil {\n\t\treturn *m.CcEnableArenas\n\t}\n\treturn Default_FileOptions_CcEnableArenas\n}\n\nfunc (m *FileOptions) GetObjcClassPrefix() string {\n\tif m != nil && m.ObjcClassPrefix != nil {\n\t\treturn *m.ObjcClassPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (m *FileOptions) GetCsharpNamespace() string {\n\tif m != nil && m.CsharpNamespace != nil {\n\t\treturn *m.CsharpNamespace\n\t}\n\treturn \"\"\n}\n\nfunc (m *FileOptions) GetSwiftPrefix() string {\n\tif m != nil && m.SwiftPrefix != nil {\n\t\treturn *m.SwiftPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (m *FileOptions) GetPhpClassPrefix() string {\n\tif m != nil && m.PhpClassPrefix != nil {\n\t\treturn *m.PhpClassPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (m *FileOptions) GetPhpNamespace() string {\n\tif m != nil && m.PhpNamespace != nil {\n\t\treturn *m.PhpNamespace\n\t}\n\treturn \"\"\n}\n\nfunc (m *FileOptions) GetPhpMetadataNamespace() string {\n\tif m != nil && m.PhpMetadataNamespace != nil {\n\t\treturn *m.PhpMetadataNamespace\n\t}\n\treturn \"\"\n}\n\nfunc (m *FileOptions) GetRubyPackage() string {\n\tif m != nil && m.RubyPackage != nil {\n\t\treturn *m.RubyPackage\n\t}\n\treturn \"\"\n}\n\nfunc (m *FileOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif m != nil {\n\t\treturn m.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype MessageOptions struct {\n\t// Set true to use the old proto1 MessageSet wire format for extensions.\n\t// This is provided for backwards-compatibility with the MessageSet wire\n\t// format.  You should not use this for any other reason:  It's less\n\t// efficient, has fewer features, and is more complicated.\n\t//\n\t// The message must be defined exactly as follows:\n\t//   message Foo {\n\t//     option message_set_wire_format = true;\n\t//     extensions 4 to max;\n\t//   }\n\t// Note that the message cannot have any defined fields; MessageSets only\n\t// have extensions.\n\t//\n\t// All extensions of your type must be singular messages; e.g. they cannot\n\t// be int32s, enums, or repeated messages.\n\t//\n\t// Because this is an option, the above two restrictions are not enforced by\n\t// the protocol compiler.\n\tMessageSetWireFormat *bool `protobuf:\"varint,1,opt,name=message_set_wire_format,json=messageSetWireFormat,def=0\" json:\"message_set_wire_format,omitempty\"`\n\t// Disables the generation of the standard \"descriptor()\" accessor, which can\n\t// conflict with a field of the same name.  This is meant to make migration\n\t// from proto1 easier; new code should avoid fields named \"descriptor\".\n\tNoStandardDescriptorAccessor *bool `protobuf:\"varint,2,opt,name=no_standard_descriptor_accessor,json=noStandardDescriptorAccessor,def=0\" json:\"no_standard_descriptor_accessor,omitempty\"`\n\t// Is this message deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the message, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating messages.\n\tDeprecated *bool `protobuf:\"varint,3,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// Whether the message is an automatically generated map entry type for the\n\t// maps field.\n\t//\n\t// For maps fields:\n\t//     map<KeyType, ValueType> map_field = 1;\n\t// The parsed descriptor looks like:\n\t//     message MapFieldEntry {\n\t//         option map_entry = true;\n\t//         optional KeyType key = 1;\n\t//         optional ValueType value = 2;\n\t//     }\n\t//     repeated MapFieldEntry map_field = 1;\n\t//\n\t// Implementations may choose not to generate the map_entry=true message, but\n\t// use a native map in the target language to hold the keys and values.\n\t// The reflection APIs in such implementations still need to work as\n\t// if the field is a repeated message field.\n\t//\n\t// NOTE: Do not set the option in .proto files. Always use the maps syntax\n\t// instead. The option should only be implicitly set by the proto compiler\n\t// parser.\n\tMapEntry *bool `protobuf:\"varint,7,opt,name=map_entry,json=mapEntry\" json:\"map_entry,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption          []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\tXXX_NoUnkeyedLiteral         struct{}               `json:\"-\"`\n\tproto.XXX_InternalExtensions `json:\"-\"`\n\tXXX_unrecognized             []byte `json:\"-\"`\n\tXXX_sizecache                int32  `json:\"-\"`\n}\n\nfunc (m *MessageOptions) Reset()         { *m = MessageOptions{} }\nfunc (m *MessageOptions) String() string { return proto.CompactTextString(m) }\nfunc (*MessageOptions) ProtoMessage()    {}\nfunc (*MessageOptions) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{11}\n}\n\nvar extRange_MessageOptions = []proto.ExtensionRange{\n\t{Start: 1000, End: 536870911},\n}\n\nfunc (*MessageOptions) ExtensionRangeArray() []proto.ExtensionRange {\n\treturn extRange_MessageOptions\n}\n\nfunc (m *MessageOptions) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_MessageOptions.Unmarshal(m, b)\n}\nfunc (m *MessageOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_MessageOptions.Marshal(b, m, deterministic)\n}\nfunc (m *MessageOptions) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MessageOptions.Merge(m, src)\n}\nfunc (m *MessageOptions) XXX_Size() int {\n\treturn xxx_messageInfo_MessageOptions.Size(m)\n}\nfunc (m *MessageOptions) XXX_DiscardUnknown() {\n\txxx_messageInfo_MessageOptions.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MessageOptions proto.InternalMessageInfo\n\nconst Default_MessageOptions_MessageSetWireFormat bool = false\nconst Default_MessageOptions_NoStandardDescriptorAccessor bool = false\nconst Default_MessageOptions_Deprecated bool = false\n\nfunc (m *MessageOptions) GetMessageSetWireFormat() bool {\n\tif m != nil && m.MessageSetWireFormat != nil {\n\t\treturn *m.MessageSetWireFormat\n\t}\n\treturn Default_MessageOptions_MessageSetWireFormat\n}\n\nfunc (m *MessageOptions) GetNoStandardDescriptorAccessor() bool {\n\tif m != nil && m.NoStandardDescriptorAccessor != nil {\n\t\treturn *m.NoStandardDescriptorAccessor\n\t}\n\treturn Default_MessageOptions_NoStandardDescriptorAccessor\n}\n\nfunc (m *MessageOptions) GetDeprecated() bool {\n\tif m != nil && m.Deprecated != nil {\n\t\treturn *m.Deprecated\n\t}\n\treturn Default_MessageOptions_Deprecated\n}\n\nfunc (m *MessageOptions) GetMapEntry() bool {\n\tif m != nil && m.MapEntry != nil {\n\t\treturn *m.MapEntry\n\t}\n\treturn false\n}\n\nfunc (m *MessageOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif m != nil {\n\t\treturn m.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype FieldOptions struct {\n\t// The ctype option instructs the C++ code generator to use a different\n\t// representation of the field than it normally would.  See the specific\n\t// options below.  This option is not yet implemented in the open source\n\t// release -- sorry, we'll try to include it in a future version!\n\tCtype *FieldOptions_CType `protobuf:\"varint,1,opt,name=ctype,enum=google.protobuf.FieldOptions_CType,def=0\" json:\"ctype,omitempty\"`\n\t// The packed option can be enabled for repeated primitive fields to enable\n\t// a more efficient representation on the wire. Rather than repeatedly\n\t// writing the tag and type for each element, the entire array is encoded as\n\t// a single length-delimited blob. In proto3, only explicit setting it to\n\t// false will avoid using packed encoding.\n\tPacked *bool `protobuf:\"varint,2,opt,name=packed\" json:\"packed,omitempty\"`\n\t// The jstype option determines the JavaScript type used for values of the\n\t// field.  The option is permitted only for 64 bit integral and fixed types\n\t// (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING\n\t// is represented as JavaScript string, which avoids loss of precision that\n\t// can happen when a large value is converted to a floating point JavaScript.\n\t// Specifying JS_NUMBER for the jstype causes the generated JavaScript code to\n\t// use the JavaScript \"number\" type.  The behavior of the default option\n\t// JS_NORMAL is implementation dependent.\n\t//\n\t// This option is an enum to permit additional types to be added, e.g.\n\t// goog.math.Integer.\n\tJstype *FieldOptions_JSType `protobuf:\"varint,6,opt,name=jstype,enum=google.protobuf.FieldOptions_JSType,def=0\" json:\"jstype,omitempty\"`\n\t// Should this field be parsed lazily?  Lazy applies only to message-type\n\t// fields.  It means that when the outer message is initially parsed, the\n\t// inner message's contents will not be parsed but instead stored in encoded\n\t// form.  The inner message will actually be parsed when it is first accessed.\n\t//\n\t// This is only a hint.  Implementations are free to choose whether to use\n\t// eager or lazy parsing regardless of the value of this option.  However,\n\t// setting this option true suggests that the protocol author believes that\n\t// using lazy parsing on this field is worth the additional bookkeeping\n\t// overhead typically needed to implement it.\n\t//\n\t// This option does not affect the public interface of any generated code;\n\t// all method signatures remain the same.  Furthermore, thread-safety of the\n\t// interface is not affected by this option; const methods remain safe to\n\t// call from multiple threads concurrently, while non-const methods continue\n\t// to require exclusive access.\n\t//\n\t//\n\t// Note that implementations may choose not to check required fields within\n\t// a lazy sub-message.  That is, calling IsInitialized() on the outer message\n\t// may return true even if the inner message has missing required fields.\n\t// This is necessary because otherwise the inner message would have to be\n\t// parsed in order to perform the check, defeating the purpose of lazy\n\t// parsing.  An implementation which chooses not to check required fields\n\t// must be consistent about it.  That is, for any particular sub-message, the\n\t// implementation must either *always* check its required fields, or *never*\n\t// check its required fields, regardless of whether or not the message has\n\t// been parsed.\n\tLazy *bool `protobuf:\"varint,5,opt,name=lazy,def=0\" json:\"lazy,omitempty\"`\n\t// Is this field deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for accessors, or it will be completely ignored; in the very least, this\n\t// is a formalization for deprecating fields.\n\tDeprecated *bool `protobuf:\"varint,3,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// For Google-internal migration only. Do not use.\n\tWeak *bool `protobuf:\"varint,10,opt,name=weak,def=0\" json:\"weak,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption          []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\tXXX_NoUnkeyedLiteral         struct{}               `json:\"-\"`\n\tproto.XXX_InternalExtensions `json:\"-\"`\n\tXXX_unrecognized             []byte `json:\"-\"`\n\tXXX_sizecache                int32  `json:\"-\"`\n}\n\nfunc (m *FieldOptions) Reset()         { *m = FieldOptions{} }\nfunc (m *FieldOptions) String() string { return proto.CompactTextString(m) }\nfunc (*FieldOptions) ProtoMessage()    {}\nfunc (*FieldOptions) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{12}\n}\n\nvar extRange_FieldOptions = []proto.ExtensionRange{\n\t{Start: 1000, End: 536870911},\n}\n\nfunc (*FieldOptions) ExtensionRangeArray() []proto.ExtensionRange {\n\treturn extRange_FieldOptions\n}\n\nfunc (m *FieldOptions) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_FieldOptions.Unmarshal(m, b)\n}\nfunc (m *FieldOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_FieldOptions.Marshal(b, m, deterministic)\n}\nfunc (m *FieldOptions) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_FieldOptions.Merge(m, src)\n}\nfunc (m *FieldOptions) XXX_Size() int {\n\treturn xxx_messageInfo_FieldOptions.Size(m)\n}\nfunc (m *FieldOptions) XXX_DiscardUnknown() {\n\txxx_messageInfo_FieldOptions.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_FieldOptions proto.InternalMessageInfo\n\nconst Default_FieldOptions_Ctype FieldOptions_CType = FieldOptions_STRING\nconst Default_FieldOptions_Jstype FieldOptions_JSType = FieldOptions_JS_NORMAL\nconst Default_FieldOptions_Lazy bool = false\nconst Default_FieldOptions_Deprecated bool = false\nconst Default_FieldOptions_Weak bool = false\n\nfunc (m *FieldOptions) GetCtype() FieldOptions_CType {\n\tif m != nil && m.Ctype != nil {\n\t\treturn *m.Ctype\n\t}\n\treturn Default_FieldOptions_Ctype\n}\n\nfunc (m *FieldOptions) GetPacked() bool {\n\tif m != nil && m.Packed != nil {\n\t\treturn *m.Packed\n\t}\n\treturn false\n}\n\nfunc (m *FieldOptions) GetJstype() FieldOptions_JSType {\n\tif m != nil && m.Jstype != nil {\n\t\treturn *m.Jstype\n\t}\n\treturn Default_FieldOptions_Jstype\n}\n\nfunc (m *FieldOptions) GetLazy() bool {\n\tif m != nil && m.Lazy != nil {\n\t\treturn *m.Lazy\n\t}\n\treturn Default_FieldOptions_Lazy\n}\n\nfunc (m *FieldOptions) GetDeprecated() bool {\n\tif m != nil && m.Deprecated != nil {\n\t\treturn *m.Deprecated\n\t}\n\treturn Default_FieldOptions_Deprecated\n}\n\nfunc (m *FieldOptions) GetWeak() bool {\n\tif m != nil && m.Weak != nil {\n\t\treturn *m.Weak\n\t}\n\treturn Default_FieldOptions_Weak\n}\n\nfunc (m *FieldOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif m != nil {\n\t\treturn m.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype OneofOptions struct {\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption          []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\tXXX_NoUnkeyedLiteral         struct{}               `json:\"-\"`\n\tproto.XXX_InternalExtensions `json:\"-\"`\n\tXXX_unrecognized             []byte `json:\"-\"`\n\tXXX_sizecache                int32  `json:\"-\"`\n}\n\nfunc (m *OneofOptions) Reset()         { *m = OneofOptions{} }\nfunc (m *OneofOptions) String() string { return proto.CompactTextString(m) }\nfunc (*OneofOptions) ProtoMessage()    {}\nfunc (*OneofOptions) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{13}\n}\n\nvar extRange_OneofOptions = []proto.ExtensionRange{\n\t{Start: 1000, End: 536870911},\n}\n\nfunc (*OneofOptions) ExtensionRangeArray() []proto.ExtensionRange {\n\treturn extRange_OneofOptions\n}\n\nfunc (m *OneofOptions) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_OneofOptions.Unmarshal(m, b)\n}\nfunc (m *OneofOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_OneofOptions.Marshal(b, m, deterministic)\n}\nfunc (m *OneofOptions) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_OneofOptions.Merge(m, src)\n}\nfunc (m *OneofOptions) XXX_Size() int {\n\treturn xxx_messageInfo_OneofOptions.Size(m)\n}\nfunc (m *OneofOptions) XXX_DiscardUnknown() {\n\txxx_messageInfo_OneofOptions.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_OneofOptions proto.InternalMessageInfo\n\nfunc (m *OneofOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif m != nil {\n\t\treturn m.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype EnumOptions struct {\n\t// Set this option to true to allow mapping different tag names to the same\n\t// value.\n\tAllowAlias *bool `protobuf:\"varint,2,opt,name=allow_alias,json=allowAlias\" json:\"allow_alias,omitempty\"`\n\t// Is this enum deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the enum, or it will be completely ignored; in the very least, this\n\t// is a formalization for deprecating enums.\n\tDeprecated *bool `protobuf:\"varint,3,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption          []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\tXXX_NoUnkeyedLiteral         struct{}               `json:\"-\"`\n\tproto.XXX_InternalExtensions `json:\"-\"`\n\tXXX_unrecognized             []byte `json:\"-\"`\n\tXXX_sizecache                int32  `json:\"-\"`\n}\n\nfunc (m *EnumOptions) Reset()         { *m = EnumOptions{} }\nfunc (m *EnumOptions) String() string { return proto.CompactTextString(m) }\nfunc (*EnumOptions) ProtoMessage()    {}\nfunc (*EnumOptions) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{14}\n}\n\nvar extRange_EnumOptions = []proto.ExtensionRange{\n\t{Start: 1000, End: 536870911},\n}\n\nfunc (*EnumOptions) ExtensionRangeArray() []proto.ExtensionRange {\n\treturn extRange_EnumOptions\n}\n\nfunc (m *EnumOptions) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_EnumOptions.Unmarshal(m, b)\n}\nfunc (m *EnumOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_EnumOptions.Marshal(b, m, deterministic)\n}\nfunc (m *EnumOptions) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EnumOptions.Merge(m, src)\n}\nfunc (m *EnumOptions) XXX_Size() int {\n\treturn xxx_messageInfo_EnumOptions.Size(m)\n}\nfunc (m *EnumOptions) XXX_DiscardUnknown() {\n\txxx_messageInfo_EnumOptions.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EnumOptions proto.InternalMessageInfo\n\nconst Default_EnumOptions_Deprecated bool = false\n\nfunc (m *EnumOptions) GetAllowAlias() bool {\n\tif m != nil && m.AllowAlias != nil {\n\t\treturn *m.AllowAlias\n\t}\n\treturn false\n}\n\nfunc (m *EnumOptions) GetDeprecated() bool {\n\tif m != nil && m.Deprecated != nil {\n\t\treturn *m.Deprecated\n\t}\n\treturn Default_EnumOptions_Deprecated\n}\n\nfunc (m *EnumOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif m != nil {\n\t\treturn m.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype EnumValueOptions struct {\n\t// Is this enum value deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the enum value, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating enum values.\n\tDeprecated *bool `protobuf:\"varint,1,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption          []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\tXXX_NoUnkeyedLiteral         struct{}               `json:\"-\"`\n\tproto.XXX_InternalExtensions `json:\"-\"`\n\tXXX_unrecognized             []byte `json:\"-\"`\n\tXXX_sizecache                int32  `json:\"-\"`\n}\n\nfunc (m *EnumValueOptions) Reset()         { *m = EnumValueOptions{} }\nfunc (m *EnumValueOptions) String() string { return proto.CompactTextString(m) }\nfunc (*EnumValueOptions) ProtoMessage()    {}\nfunc (*EnumValueOptions) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{15}\n}\n\nvar extRange_EnumValueOptions = []proto.ExtensionRange{\n\t{Start: 1000, End: 536870911},\n}\n\nfunc (*EnumValueOptions) ExtensionRangeArray() []proto.ExtensionRange {\n\treturn extRange_EnumValueOptions\n}\n\nfunc (m *EnumValueOptions) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_EnumValueOptions.Unmarshal(m, b)\n}\nfunc (m *EnumValueOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_EnumValueOptions.Marshal(b, m, deterministic)\n}\nfunc (m *EnumValueOptions) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EnumValueOptions.Merge(m, src)\n}\nfunc (m *EnumValueOptions) XXX_Size() int {\n\treturn xxx_messageInfo_EnumValueOptions.Size(m)\n}\nfunc (m *EnumValueOptions) XXX_DiscardUnknown() {\n\txxx_messageInfo_EnumValueOptions.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EnumValueOptions proto.InternalMessageInfo\n\nconst Default_EnumValueOptions_Deprecated bool = false\n\nfunc (m *EnumValueOptions) GetDeprecated() bool {\n\tif m != nil && m.Deprecated != nil {\n\t\treturn *m.Deprecated\n\t}\n\treturn Default_EnumValueOptions_Deprecated\n}\n\nfunc (m *EnumValueOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif m != nil {\n\t\treturn m.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype ServiceOptions struct {\n\t// Is this service deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the service, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating services.\n\tDeprecated *bool `protobuf:\"varint,33,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption          []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\tXXX_NoUnkeyedLiteral         struct{}               `json:\"-\"`\n\tproto.XXX_InternalExtensions `json:\"-\"`\n\tXXX_unrecognized             []byte `json:\"-\"`\n\tXXX_sizecache                int32  `json:\"-\"`\n}\n\nfunc (m *ServiceOptions) Reset()         { *m = ServiceOptions{} }\nfunc (m *ServiceOptions) String() string { return proto.CompactTextString(m) }\nfunc (*ServiceOptions) ProtoMessage()    {}\nfunc (*ServiceOptions) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{16}\n}\n\nvar extRange_ServiceOptions = []proto.ExtensionRange{\n\t{Start: 1000, End: 536870911},\n}\n\nfunc (*ServiceOptions) ExtensionRangeArray() []proto.ExtensionRange {\n\treturn extRange_ServiceOptions\n}\n\nfunc (m *ServiceOptions) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_ServiceOptions.Unmarshal(m, b)\n}\nfunc (m *ServiceOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_ServiceOptions.Marshal(b, m, deterministic)\n}\nfunc (m *ServiceOptions) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_ServiceOptions.Merge(m, src)\n}\nfunc (m *ServiceOptions) XXX_Size() int {\n\treturn xxx_messageInfo_ServiceOptions.Size(m)\n}\nfunc (m *ServiceOptions) XXX_DiscardUnknown() {\n\txxx_messageInfo_ServiceOptions.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_ServiceOptions proto.InternalMessageInfo\n\nconst Default_ServiceOptions_Deprecated bool = false\n\nfunc (m *ServiceOptions) GetDeprecated() bool {\n\tif m != nil && m.Deprecated != nil {\n\t\treturn *m.Deprecated\n\t}\n\treturn Default_ServiceOptions_Deprecated\n}\n\nfunc (m *ServiceOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif m != nil {\n\t\treturn m.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype MethodOptions struct {\n\t// Is this method deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the method, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating methods.\n\tDeprecated       *bool                           `protobuf:\"varint,33,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\tIdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:\"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0\" json:\"idempotency_level,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption          []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\tXXX_NoUnkeyedLiteral         struct{}               `json:\"-\"`\n\tproto.XXX_InternalExtensions `json:\"-\"`\n\tXXX_unrecognized             []byte `json:\"-\"`\n\tXXX_sizecache                int32  `json:\"-\"`\n}\n\nfunc (m *MethodOptions) Reset()         { *m = MethodOptions{} }\nfunc (m *MethodOptions) String() string { return proto.CompactTextString(m) }\nfunc (*MethodOptions) ProtoMessage()    {}\nfunc (*MethodOptions) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{17}\n}\n\nvar extRange_MethodOptions = []proto.ExtensionRange{\n\t{Start: 1000, End: 536870911},\n}\n\nfunc (*MethodOptions) ExtensionRangeArray() []proto.ExtensionRange {\n\treturn extRange_MethodOptions\n}\n\nfunc (m *MethodOptions) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_MethodOptions.Unmarshal(m, b)\n}\nfunc (m *MethodOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_MethodOptions.Marshal(b, m, deterministic)\n}\nfunc (m *MethodOptions) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MethodOptions.Merge(m, src)\n}\nfunc (m *MethodOptions) XXX_Size() int {\n\treturn xxx_messageInfo_MethodOptions.Size(m)\n}\nfunc (m *MethodOptions) XXX_DiscardUnknown() {\n\txxx_messageInfo_MethodOptions.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MethodOptions proto.InternalMessageInfo\n\nconst Default_MethodOptions_Deprecated bool = false\nconst Default_MethodOptions_IdempotencyLevel MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN\n\nfunc (m *MethodOptions) GetDeprecated() bool {\n\tif m != nil && m.Deprecated != nil {\n\t\treturn *m.Deprecated\n\t}\n\treturn Default_MethodOptions_Deprecated\n}\n\nfunc (m *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel {\n\tif m != nil && m.IdempotencyLevel != nil {\n\t\treturn *m.IdempotencyLevel\n\t}\n\treturn Default_MethodOptions_IdempotencyLevel\n}\n\nfunc (m *MethodOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif m != nil {\n\t\treturn m.UninterpretedOption\n\t}\n\treturn nil\n}\n\n// A message representing a option the parser does not recognize. This only\n// appears in options protos created by the compiler::Parser class.\n// DescriptorPool resolves these when building Descriptor objects. Therefore,\n// options protos in descriptor objects (e.g. returned by Descriptor::options(),\n// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions\n// in them.\ntype UninterpretedOption struct {\n\tName []*UninterpretedOption_NamePart `protobuf:\"bytes,2,rep,name=name\" json:\"name,omitempty\"`\n\t// The value of the uninterpreted option, in whatever type the tokenizer\n\t// identified it as during parsing. Exactly one of these should be set.\n\tIdentifierValue      *string  `protobuf:\"bytes,3,opt,name=identifier_value,json=identifierValue\" json:\"identifier_value,omitempty\"`\n\tPositiveIntValue     *uint64  `protobuf:\"varint,4,opt,name=positive_int_value,json=positiveIntValue\" json:\"positive_int_value,omitempty\"`\n\tNegativeIntValue     *int64   `protobuf:\"varint,5,opt,name=negative_int_value,json=negativeIntValue\" json:\"negative_int_value,omitempty\"`\n\tDoubleValue          *float64 `protobuf:\"fixed64,6,opt,name=double_value,json=doubleValue\" json:\"double_value,omitempty\"`\n\tStringValue          []byte   `protobuf:\"bytes,7,opt,name=string_value,json=stringValue\" json:\"string_value,omitempty\"`\n\tAggregateValue       *string  `protobuf:\"bytes,8,opt,name=aggregate_value,json=aggregateValue\" json:\"aggregate_value,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *UninterpretedOption) Reset()         { *m = UninterpretedOption{} }\nfunc (m *UninterpretedOption) String() string { return proto.CompactTextString(m) }\nfunc (*UninterpretedOption) ProtoMessage()    {}\nfunc (*UninterpretedOption) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{18}\n}\nfunc (m *UninterpretedOption) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_UninterpretedOption.Unmarshal(m, b)\n}\nfunc (m *UninterpretedOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_UninterpretedOption.Marshal(b, m, deterministic)\n}\nfunc (m *UninterpretedOption) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_UninterpretedOption.Merge(m, src)\n}\nfunc (m *UninterpretedOption) XXX_Size() int {\n\treturn xxx_messageInfo_UninterpretedOption.Size(m)\n}\nfunc (m *UninterpretedOption) XXX_DiscardUnknown() {\n\txxx_messageInfo_UninterpretedOption.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_UninterpretedOption proto.InternalMessageInfo\n\nfunc (m *UninterpretedOption) GetName() []*UninterpretedOption_NamePart {\n\tif m != nil {\n\t\treturn m.Name\n\t}\n\treturn nil\n}\n\nfunc (m *UninterpretedOption) GetIdentifierValue() string {\n\tif m != nil && m.IdentifierValue != nil {\n\t\treturn *m.IdentifierValue\n\t}\n\treturn \"\"\n}\n\nfunc (m *UninterpretedOption) GetPositiveIntValue() uint64 {\n\tif m != nil && m.PositiveIntValue != nil {\n\t\treturn *m.PositiveIntValue\n\t}\n\treturn 0\n}\n\nfunc (m *UninterpretedOption) GetNegativeIntValue() int64 {\n\tif m != nil && m.NegativeIntValue != nil {\n\t\treturn *m.NegativeIntValue\n\t}\n\treturn 0\n}\n\nfunc (m *UninterpretedOption) GetDoubleValue() float64 {\n\tif m != nil && m.DoubleValue != nil {\n\t\treturn *m.DoubleValue\n\t}\n\treturn 0\n}\n\nfunc (m *UninterpretedOption) GetStringValue() []byte {\n\tif m != nil {\n\t\treturn m.StringValue\n\t}\n\treturn nil\n}\n\nfunc (m *UninterpretedOption) GetAggregateValue() string {\n\tif m != nil && m.AggregateValue != nil {\n\t\treturn *m.AggregateValue\n\t}\n\treturn \"\"\n}\n\n// The name of the uninterpreted option.  Each string represents a segment in\n// a dot-separated name.  is_extension is true iff a segment represents an\n// extension (denoted with parentheses in options specs in .proto files).\n// E.g.,{ [\"foo\", false], [\"bar.baz\", true], [\"qux\", false] } represents\n// \"foo.(bar.baz).qux\".\ntype UninterpretedOption_NamePart struct {\n\tNamePart             *string  `protobuf:\"bytes,1,req,name=name_part,json=namePart\" json:\"name_part,omitempty\"`\n\tIsExtension          *bool    `protobuf:\"varint,2,req,name=is_extension,json=isExtension\" json:\"is_extension,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *UninterpretedOption_NamePart) Reset()         { *m = UninterpretedOption_NamePart{} }\nfunc (m *UninterpretedOption_NamePart) String() string { return proto.CompactTextString(m) }\nfunc (*UninterpretedOption_NamePart) ProtoMessage()    {}\nfunc (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{18, 0}\n}\nfunc (m *UninterpretedOption_NamePart) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_UninterpretedOption_NamePart.Unmarshal(m, b)\n}\nfunc (m *UninterpretedOption_NamePart) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_UninterpretedOption_NamePart.Marshal(b, m, deterministic)\n}\nfunc (m *UninterpretedOption_NamePart) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_UninterpretedOption_NamePart.Merge(m, src)\n}\nfunc (m *UninterpretedOption_NamePart) XXX_Size() int {\n\treturn xxx_messageInfo_UninterpretedOption_NamePart.Size(m)\n}\nfunc (m *UninterpretedOption_NamePart) XXX_DiscardUnknown() {\n\txxx_messageInfo_UninterpretedOption_NamePart.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_UninterpretedOption_NamePart proto.InternalMessageInfo\n\nfunc (m *UninterpretedOption_NamePart) GetNamePart() string {\n\tif m != nil && m.NamePart != nil {\n\t\treturn *m.NamePart\n\t}\n\treturn \"\"\n}\n\nfunc (m *UninterpretedOption_NamePart) GetIsExtension() bool {\n\tif m != nil && m.IsExtension != nil {\n\t\treturn *m.IsExtension\n\t}\n\treturn false\n}\n\n// Encapsulates information about the original source file from which a\n// FileDescriptorProto was generated.\ntype SourceCodeInfo struct {\n\t// A Location identifies a piece of source code in a .proto file which\n\t// corresponds to a particular definition.  This information is intended\n\t// to be useful to IDEs, code indexers, documentation generators, and similar\n\t// tools.\n\t//\n\t// For example, say we have a file like:\n\t//   message Foo {\n\t//     optional string foo = 1;\n\t//   }\n\t// Let's look at just the field definition:\n\t//   optional string foo = 1;\n\t//   ^       ^^     ^^  ^  ^^^\n\t//   a       bc     de  f  ghi\n\t// We have the following locations:\n\t//   span   path               represents\n\t//   [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.\n\t//   [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).\n\t//   [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).\n\t//   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).\n\t//   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).\n\t//\n\t// Notes:\n\t// - A location may refer to a repeated field itself (i.e. not to any\n\t//   particular index within it).  This is used whenever a set of elements are\n\t//   logically enclosed in a single code segment.  For example, an entire\n\t//   extend block (possibly containing multiple extension definitions) will\n\t//   have an outer location whose path refers to the \"extensions\" repeated\n\t//   field without an index.\n\t// - Multiple locations may have the same path.  This happens when a single\n\t//   logical declaration is spread out across multiple places.  The most\n\t//   obvious example is the \"extend\" block again -- there may be multiple\n\t//   extend blocks in the same scope, each of which will have the same path.\n\t// - A location's span is not always a subset of its parent's span.  For\n\t//   example, the \"extendee\" of an extension declaration appears at the\n\t//   beginning of the \"extend\" block and is shared by all extensions within\n\t//   the block.\n\t// - Just because a location's span is a subset of some other location's span\n\t//   does not mean that it is a descendant.  For example, a \"group\" defines\n\t//   both a type and a field in a single declaration.  Thus, the locations\n\t//   corresponding to the type and field and their components will overlap.\n\t// - Code which tries to interpret locations should probably be designed to\n\t//   ignore those that it doesn't understand, as more types of locations could\n\t//   be recorded in the future.\n\tLocation             []*SourceCodeInfo_Location `protobuf:\"bytes,1,rep,name=location\" json:\"location,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}                   `json:\"-\"`\n\tXXX_unrecognized     []byte                     `json:\"-\"`\n\tXXX_sizecache        int32                      `json:\"-\"`\n}\n\nfunc (m *SourceCodeInfo) Reset()         { *m = SourceCodeInfo{} }\nfunc (m *SourceCodeInfo) String() string { return proto.CompactTextString(m) }\nfunc (*SourceCodeInfo) ProtoMessage()    {}\nfunc (*SourceCodeInfo) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{19}\n}\nfunc (m *SourceCodeInfo) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_SourceCodeInfo.Unmarshal(m, b)\n}\nfunc (m *SourceCodeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_SourceCodeInfo.Marshal(b, m, deterministic)\n}\nfunc (m *SourceCodeInfo) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_SourceCodeInfo.Merge(m, src)\n}\nfunc (m *SourceCodeInfo) XXX_Size() int {\n\treturn xxx_messageInfo_SourceCodeInfo.Size(m)\n}\nfunc (m *SourceCodeInfo) XXX_DiscardUnknown() {\n\txxx_messageInfo_SourceCodeInfo.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_SourceCodeInfo proto.InternalMessageInfo\n\nfunc (m *SourceCodeInfo) GetLocation() []*SourceCodeInfo_Location {\n\tif m != nil {\n\t\treturn m.Location\n\t}\n\treturn nil\n}\n\ntype SourceCodeInfo_Location struct {\n\t// Identifies which part of the FileDescriptorProto was defined at this\n\t// location.\n\t//\n\t// Each element is a field number or an index.  They form a path from\n\t// the root FileDescriptorProto to the place where the definition.  For\n\t// example, this path:\n\t//   [ 4, 3, 2, 7, 1 ]\n\t// refers to:\n\t//   file.message_type(3)  // 4, 3\n\t//       .field(7)         // 2, 7\n\t//       .name()           // 1\n\t// This is because FileDescriptorProto.message_type has field number 4:\n\t//   repeated DescriptorProto message_type = 4;\n\t// and DescriptorProto.field has field number 2:\n\t//   repeated FieldDescriptorProto field = 2;\n\t// and FieldDescriptorProto.name has field number 1:\n\t//   optional string name = 1;\n\t//\n\t// Thus, the above path gives the location of a field name.  If we removed\n\t// the last element:\n\t//   [ 4, 3, 2, 7 ]\n\t// this path refers to the whole field declaration (from the beginning\n\t// of the label to the terminating semicolon).\n\tPath []int32 `protobuf:\"varint,1,rep,packed,name=path\" json:\"path,omitempty\"`\n\t// Always has exactly three or four elements: start line, start column,\n\t// end line (optional, otherwise assumed same as start line), end column.\n\t// These are packed into a single field for efficiency.  Note that line\n\t// and column numbers are zero-based -- typically you will want to add\n\t// 1 to each before displaying to a user.\n\tSpan []int32 `protobuf:\"varint,2,rep,packed,name=span\" json:\"span,omitempty\"`\n\t// If this SourceCodeInfo represents a complete declaration, these are any\n\t// comments appearing before and after the declaration which appear to be\n\t// attached to the declaration.\n\t//\n\t// A series of line comments appearing on consecutive lines, with no other\n\t// tokens appearing on those lines, will be treated as a single comment.\n\t//\n\t// leading_detached_comments will keep paragraphs of comments that appear\n\t// before (but not connected to) the current element. Each paragraph,\n\t// separated by empty lines, will be one comment element in the repeated\n\t// field.\n\t//\n\t// Only the comment content is provided; comment markers (e.g. //) are\n\t// stripped out.  For block comments, leading whitespace and an asterisk\n\t// will be stripped from the beginning of each line other than the first.\n\t// Newlines are included in the output.\n\t//\n\t// Examples:\n\t//\n\t//   optional int32 foo = 1;  // Comment attached to foo.\n\t//   // Comment attached to bar.\n\t//   optional int32 bar = 2;\n\t//\n\t//   optional string baz = 3;\n\t//   // Comment attached to baz.\n\t//   // Another line attached to baz.\n\t//\n\t//   // Comment attached to qux.\n\t//   //\n\t//   // Another line attached to qux.\n\t//   optional double qux = 4;\n\t//\n\t//   // Detached comment for corge. This is not leading or trailing comments\n\t//   // to qux or corge because there are blank lines separating it from\n\t//   // both.\n\t//\n\t//   // Detached comment for corge paragraph 2.\n\t//\n\t//   optional string corge = 5;\n\t//   /* Block comment attached\n\t//    * to corge.  Leading asterisks\n\t//    * will be removed. */\n\t//   /* Block comment attached to\n\t//    * grault. */\n\t//   optional int32 grault = 6;\n\t//\n\t//   // ignored detached comments.\n\tLeadingComments         *string  `protobuf:\"bytes,3,opt,name=leading_comments,json=leadingComments\" json:\"leading_comments,omitempty\"`\n\tTrailingComments        *string  `protobuf:\"bytes,4,opt,name=trailing_comments,json=trailingComments\" json:\"trailing_comments,omitempty\"`\n\tLeadingDetachedComments []string `protobuf:\"bytes,6,rep,name=leading_detached_comments,json=leadingDetachedComments\" json:\"leading_detached_comments,omitempty\"`\n\tXXX_NoUnkeyedLiteral    struct{} `json:\"-\"`\n\tXXX_unrecognized        []byte   `json:\"-\"`\n\tXXX_sizecache           int32    `json:\"-\"`\n}\n\nfunc (m *SourceCodeInfo_Location) Reset()         { *m = SourceCodeInfo_Location{} }\nfunc (m *SourceCodeInfo_Location) String() string { return proto.CompactTextString(m) }\nfunc (*SourceCodeInfo_Location) ProtoMessage()    {}\nfunc (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{19, 0}\n}\nfunc (m *SourceCodeInfo_Location) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_SourceCodeInfo_Location.Unmarshal(m, b)\n}\nfunc (m *SourceCodeInfo_Location) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_SourceCodeInfo_Location.Marshal(b, m, deterministic)\n}\nfunc (m *SourceCodeInfo_Location) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_SourceCodeInfo_Location.Merge(m, src)\n}\nfunc (m *SourceCodeInfo_Location) XXX_Size() int {\n\treturn xxx_messageInfo_SourceCodeInfo_Location.Size(m)\n}\nfunc (m *SourceCodeInfo_Location) XXX_DiscardUnknown() {\n\txxx_messageInfo_SourceCodeInfo_Location.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_SourceCodeInfo_Location proto.InternalMessageInfo\n\nfunc (m *SourceCodeInfo_Location) GetPath() []int32 {\n\tif m != nil {\n\t\treturn m.Path\n\t}\n\treturn nil\n}\n\nfunc (m *SourceCodeInfo_Location) GetSpan() []int32 {\n\tif m != nil {\n\t\treturn m.Span\n\t}\n\treturn nil\n}\n\nfunc (m *SourceCodeInfo_Location) GetLeadingComments() string {\n\tif m != nil && m.LeadingComments != nil {\n\t\treturn *m.LeadingComments\n\t}\n\treturn \"\"\n}\n\nfunc (m *SourceCodeInfo_Location) GetTrailingComments() string {\n\tif m != nil && m.TrailingComments != nil {\n\t\treturn *m.TrailingComments\n\t}\n\treturn \"\"\n}\n\nfunc (m *SourceCodeInfo_Location) GetLeadingDetachedComments() []string {\n\tif m != nil {\n\t\treturn m.LeadingDetachedComments\n\t}\n\treturn nil\n}\n\n// Describes the relationship between generated code and its original source\n// file. A GeneratedCodeInfo message is associated with only one generated\n// source file, but may contain references to different source .proto files.\ntype GeneratedCodeInfo struct {\n\t// An Annotation connects some span of text in generated code to an element\n\t// of its generating .proto file.\n\tAnnotation           []*GeneratedCodeInfo_Annotation `protobuf:\"bytes,1,rep,name=annotation\" json:\"annotation,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}                        `json:\"-\"`\n\tXXX_unrecognized     []byte                          `json:\"-\"`\n\tXXX_sizecache        int32                           `json:\"-\"`\n}\n\nfunc (m *GeneratedCodeInfo) Reset()         { *m = GeneratedCodeInfo{} }\nfunc (m *GeneratedCodeInfo) String() string { return proto.CompactTextString(m) }\nfunc (*GeneratedCodeInfo) ProtoMessage()    {}\nfunc (*GeneratedCodeInfo) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{20}\n}\nfunc (m *GeneratedCodeInfo) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_GeneratedCodeInfo.Unmarshal(m, b)\n}\nfunc (m *GeneratedCodeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_GeneratedCodeInfo.Marshal(b, m, deterministic)\n}\nfunc (m *GeneratedCodeInfo) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_GeneratedCodeInfo.Merge(m, src)\n}\nfunc (m *GeneratedCodeInfo) XXX_Size() int {\n\treturn xxx_messageInfo_GeneratedCodeInfo.Size(m)\n}\nfunc (m *GeneratedCodeInfo) XXX_DiscardUnknown() {\n\txxx_messageInfo_GeneratedCodeInfo.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_GeneratedCodeInfo proto.InternalMessageInfo\n\nfunc (m *GeneratedCodeInfo) GetAnnotation() []*GeneratedCodeInfo_Annotation {\n\tif m != nil {\n\t\treturn m.Annotation\n\t}\n\treturn nil\n}\n\ntype GeneratedCodeInfo_Annotation struct {\n\t// Identifies the element in the original source .proto file. This field\n\t// is formatted the same as SourceCodeInfo.Location.path.\n\tPath []int32 `protobuf:\"varint,1,rep,packed,name=path\" json:\"path,omitempty\"`\n\t// Identifies the filesystem path to the original source .proto.\n\tSourceFile *string `protobuf:\"bytes,2,opt,name=source_file,json=sourceFile\" json:\"source_file,omitempty\"`\n\t// Identifies the starting offset in bytes in the generated code\n\t// that relates to the identified object.\n\tBegin *int32 `protobuf:\"varint,3,opt,name=begin\" json:\"begin,omitempty\"`\n\t// Identifies the ending offset in bytes in the generated code that\n\t// relates to the identified offset. The end offset should be one past\n\t// the last relevant byte (so the length of the text = end - begin).\n\tEnd                  *int32   `protobuf:\"varint,4,opt,name=end\" json:\"end,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *GeneratedCodeInfo_Annotation) Reset()         { *m = GeneratedCodeInfo_Annotation{} }\nfunc (m *GeneratedCodeInfo_Annotation) String() string { return proto.CompactTextString(m) }\nfunc (*GeneratedCodeInfo_Annotation) ProtoMessage()    {}\nfunc (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_308767df5ffe18af, []int{20, 0}\n}\nfunc (m *GeneratedCodeInfo_Annotation) XXX_Unmarshal(b []byte) error {\n\treturn xxx_messageInfo_GeneratedCodeInfo_Annotation.Unmarshal(m, b)\n}\nfunc (m *GeneratedCodeInfo_Annotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\treturn xxx_messageInfo_GeneratedCodeInfo_Annotation.Marshal(b, m, deterministic)\n}\nfunc (m *GeneratedCodeInfo_Annotation) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_GeneratedCodeInfo_Annotation.Merge(m, src)\n}\nfunc (m *GeneratedCodeInfo_Annotation) XXX_Size() int {\n\treturn xxx_messageInfo_GeneratedCodeInfo_Annotation.Size(m)\n}\nfunc (m *GeneratedCodeInfo_Annotation) XXX_DiscardUnknown() {\n\txxx_messageInfo_GeneratedCodeInfo_Annotation.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_GeneratedCodeInfo_Annotation proto.InternalMessageInfo\n\nfunc (m *GeneratedCodeInfo_Annotation) GetPath() []int32 {\n\tif m != nil {\n\t\treturn m.Path\n\t}\n\treturn nil\n}\n\nfunc (m *GeneratedCodeInfo_Annotation) GetSourceFile() string {\n\tif m != nil && m.SourceFile != nil {\n\t\treturn *m.SourceFile\n\t}\n\treturn \"\"\n}\n\nfunc (m *GeneratedCodeInfo_Annotation) GetBegin() int32 {\n\tif m != nil && m.Begin != nil {\n\t\treturn *m.Begin\n\t}\n\treturn 0\n}\n\nfunc (m *GeneratedCodeInfo_Annotation) GetEnd() int32 {\n\tif m != nil && m.End != nil {\n\t\treturn *m.End\n\t}\n\treturn 0\n}\n\nfunc init() {\n\tproto.RegisterEnum(\"google.protobuf.FieldDescriptorProto_Type\", FieldDescriptorProto_Type_name, FieldDescriptorProto_Type_value)\n\tproto.RegisterEnum(\"google.protobuf.FieldDescriptorProto_Label\", FieldDescriptorProto_Label_name, FieldDescriptorProto_Label_value)\n\tproto.RegisterEnum(\"google.protobuf.FileOptions_OptimizeMode\", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value)\n\tproto.RegisterEnum(\"google.protobuf.FieldOptions_CType\", FieldOptions_CType_name, FieldOptions_CType_value)\n\tproto.RegisterEnum(\"google.protobuf.FieldOptions_JSType\", FieldOptions_JSType_name, FieldOptions_JSType_value)\n\tproto.RegisterEnum(\"google.protobuf.MethodOptions_IdempotencyLevel\", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value)\n\tproto.RegisterType((*FileDescriptorSet)(nil), \"google.protobuf.FileDescriptorSet\")\n\tproto.RegisterType((*FileDescriptorProto)(nil), \"google.protobuf.FileDescriptorProto\")\n\tproto.RegisterType((*DescriptorProto)(nil), \"google.protobuf.DescriptorProto\")\n\tproto.RegisterType((*DescriptorProto_ExtensionRange)(nil), \"google.protobuf.DescriptorProto.ExtensionRange\")\n\tproto.RegisterType((*DescriptorProto_ReservedRange)(nil), \"google.protobuf.DescriptorProto.ReservedRange\")\n\tproto.RegisterType((*ExtensionRangeOptions)(nil), \"google.protobuf.ExtensionRangeOptions\")\n\tproto.RegisterType((*FieldDescriptorProto)(nil), \"google.protobuf.FieldDescriptorProto\")\n\tproto.RegisterType((*OneofDescriptorProto)(nil), \"google.protobuf.OneofDescriptorProto\")\n\tproto.RegisterType((*EnumDescriptorProto)(nil), \"google.protobuf.EnumDescriptorProto\")\n\tproto.RegisterType((*EnumDescriptorProto_EnumReservedRange)(nil), \"google.protobuf.EnumDescriptorProto.EnumReservedRange\")\n\tproto.RegisterType((*EnumValueDescriptorProto)(nil), \"google.protobuf.EnumValueDescriptorProto\")\n\tproto.RegisterType((*ServiceDescriptorProto)(nil), \"google.protobuf.ServiceDescriptorProto\")\n\tproto.RegisterType((*MethodDescriptorProto)(nil), \"google.protobuf.MethodDescriptorProto\")\n\tproto.RegisterType((*FileOptions)(nil), \"google.protobuf.FileOptions\")\n\tproto.RegisterType((*MessageOptions)(nil), \"google.protobuf.MessageOptions\")\n\tproto.RegisterType((*FieldOptions)(nil), \"google.protobuf.FieldOptions\")\n\tproto.RegisterType((*OneofOptions)(nil), \"google.protobuf.OneofOptions\")\n\tproto.RegisterType((*EnumOptions)(nil), \"google.protobuf.EnumOptions\")\n\tproto.RegisterType((*EnumValueOptions)(nil), \"google.protobuf.EnumValueOptions\")\n\tproto.RegisterType((*ServiceOptions)(nil), \"google.protobuf.ServiceOptions\")\n\tproto.RegisterType((*MethodOptions)(nil), \"google.protobuf.MethodOptions\")\n\tproto.RegisterType((*UninterpretedOption)(nil), \"google.protobuf.UninterpretedOption\")\n\tproto.RegisterType((*UninterpretedOption_NamePart)(nil), \"google.protobuf.UninterpretedOption.NamePart\")\n\tproto.RegisterType((*SourceCodeInfo)(nil), \"google.protobuf.SourceCodeInfo\")\n\tproto.RegisterType((*SourceCodeInfo_Location)(nil), \"google.protobuf.SourceCodeInfo.Location\")\n\tproto.RegisterType((*GeneratedCodeInfo)(nil), \"google.protobuf.GeneratedCodeInfo\")\n\tproto.RegisterType((*GeneratedCodeInfo_Annotation)(nil), \"google.protobuf.GeneratedCodeInfo.Annotation\")\n}\n\nfunc init() { proto.RegisterFile(\"descriptor.proto\", fileDescriptor_308767df5ffe18af) }\n\nvar fileDescriptor_308767df5ffe18af = []byte{\n\t// 2522 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xcd, 0x6f, 0xdb, 0xc8,\n\t0x15, 0x5f, 0x7d, 0x5a, 0x7a, 0x92, 0x65, 0x7a, 0xec, 0x75, 0x18, 0xef, 0x47, 0x1c, 0xed, 0x66,\n\t0xe3, 0x24, 0xbb, 0xca, 0xc2, 0x49, 0x9c, 0xac, 0x53, 0x6c, 0x2b, 0x4b, 0x8c, 0x57, 0xa9, 0xbe,\n\t0x4a, 0xc9, 0xdd, 0x64, 0x8b, 0x82, 0x18, 0x93, 0x23, 0x89, 0x09, 0x45, 0x72, 0x49, 0x2a, 0x89,\n\t0x83, 0x1e, 0x02, 0xf4, 0x54, 0xa0, 0x7f, 0x40, 0x51, 0x14, 0x3d, 0xf4, 0xb2, 0x40, 0xff, 0x80,\n\t0x02, 0xed, 0xbd, 0xd7, 0x02, 0xbd, 0xf7, 0x50, 0xa0, 0x05, 0xda, 0x3f, 0xa1, 0xc7, 0x62, 0x66,\n\t0x48, 0x8a, 0xd4, 0x47, 0xe2, 0x5d, 0x20, 0xd9, 0x93, 0x3d, 0xef, 0xfd, 0xde, 0x9b, 0x37, 0x8f,\n\t0xbf, 0x79, 0xf3, 0x66, 0x04, 0x82, 0x46, 0x5c, 0xd5, 0xd1, 0x6d, 0xcf, 0x72, 0x2a, 0xb6, 0x63,\n\t0x79, 0x16, 0x5a, 0x1b, 0x5a, 0xd6, 0xd0, 0x20, 0x7c, 0x74, 0x32, 0x19, 0x94, 0x5b, 0xb0, 0x7e,\n\t0x4f, 0x37, 0x48, 0x3d, 0x04, 0xf6, 0x88, 0x87, 0xee, 0x40, 0x7a, 0xa0, 0x1b, 0x44, 0x4c, 0xec,\n\t0xa4, 0x76, 0x0b, 0x7b, 0x1f, 0x56, 0x66, 0x8c, 0x2a, 0x71, 0x8b, 0x2e, 0x15, 0xcb, 0xcc, 0xa2,\n\t0xfc, 0xef, 0x34, 0x6c, 0x2c, 0xd0, 0x22, 0x04, 0x69, 0x13, 0x8f, 0xa9, 0xc7, 0xc4, 0x6e, 0x5e,\n\t0x66, 0xff, 0x23, 0x11, 0x56, 0x6c, 0xac, 0x3e, 0xc6, 0x43, 0x22, 0x26, 0x99, 0x38, 0x18, 0xa2,\n\t0xf7, 0x01, 0x34, 0x62, 0x13, 0x53, 0x23, 0xa6, 0x7a, 0x2a, 0xa6, 0x76, 0x52, 0xbb, 0x79, 0x39,\n\t0x22, 0x41, 0xd7, 0x60, 0xdd, 0x9e, 0x9c, 0x18, 0xba, 0xaa, 0x44, 0x60, 0xb0, 0x93, 0xda, 0xcd,\n\t0xc8, 0x02, 0x57, 0xd4, 0xa7, 0xe0, 0xcb, 0xb0, 0xf6, 0x94, 0xe0, 0xc7, 0x51, 0x68, 0x81, 0x41,\n\t0x4b, 0x54, 0x1c, 0x01, 0xd6, 0xa0, 0x38, 0x26, 0xae, 0x8b, 0x87, 0x44, 0xf1, 0x4e, 0x6d, 0x22,\n\t0xa6, 0xd9, 0xea, 0x77, 0xe6, 0x56, 0x3f, 0xbb, 0xf2, 0x82, 0x6f, 0xd5, 0x3f, 0xb5, 0x09, 0xaa,\n\t0x42, 0x9e, 0x98, 0x93, 0x31, 0xf7, 0x90, 0x59, 0x92, 0x3f, 0xc9, 0x9c, 0x8c, 0x67, 0xbd, 0xe4,\n\t0xa8, 0x99, 0xef, 0x62, 0xc5, 0x25, 0xce, 0x13, 0x5d, 0x25, 0x62, 0x96, 0x39, 0xb8, 0x3c, 0xe7,\n\t0xa0, 0xc7, 0xf5, 0xb3, 0x3e, 0x02, 0x3b, 0x54, 0x83, 0x3c, 0x79, 0xe6, 0x11, 0xd3, 0xd5, 0x2d,\n\t0x53, 0x5c, 0x61, 0x4e, 0x2e, 0x2d, 0xf8, 0x8a, 0xc4, 0xd0, 0x66, 0x5d, 0x4c, 0xed, 0xd0, 0x3e,\n\t0xac, 0x58, 0xb6, 0xa7, 0x5b, 0xa6, 0x2b, 0xe6, 0x76, 0x12, 0xbb, 0x85, 0xbd, 0x77, 0x17, 0x12,\n\t0xa1, 0xc3, 0x31, 0x72, 0x00, 0x46, 0x0d, 0x10, 0x5c, 0x6b, 0xe2, 0xa8, 0x44, 0x51, 0x2d, 0x8d,\n\t0x28, 0xba, 0x39, 0xb0, 0xc4, 0x3c, 0x73, 0x70, 0x61, 0x7e, 0x21, 0x0c, 0x58, 0xb3, 0x34, 0xd2,\n\t0x30, 0x07, 0x96, 0x5c, 0x72, 0x63, 0x63, 0xb4, 0x05, 0x59, 0xf7, 0xd4, 0xf4, 0xf0, 0x33, 0xb1,\n\t0xc8, 0x18, 0xe2, 0x8f, 0xca, 0x7f, 0xce, 0xc2, 0xda, 0x59, 0x28, 0x76, 0x17, 0x32, 0x03, 0xba,\n\t0x4a, 0x31, 0xf9, 0x6d, 0x72, 0xc0, 0x6d, 0xe2, 0x49, 0xcc, 0x7e, 0xc7, 0x24, 0x56, 0xa1, 0x60,\n\t0x12, 0xd7, 0x23, 0x1a, 0x67, 0x44, 0xea, 0x8c, 0x9c, 0x02, 0x6e, 0x34, 0x4f, 0xa9, 0xf4, 0x77,\n\t0xa2, 0xd4, 0x03, 0x58, 0x0b, 0x43, 0x52, 0x1c, 0x6c, 0x0e, 0x03, 0x6e, 0x5e, 0x7f, 0x55, 0x24,\n\t0x15, 0x29, 0xb0, 0x93, 0xa9, 0x99, 0x5c, 0x22, 0xb1, 0x31, 0xaa, 0x03, 0x58, 0x26, 0xb1, 0x06,\n\t0x8a, 0x46, 0x54, 0x43, 0xcc, 0x2d, 0xc9, 0x52, 0x87, 0x42, 0xe6, 0xb2, 0x64, 0x71, 0xa9, 0x6a,\n\t0xa0, 0xcf, 0xa6, 0x54, 0x5b, 0x59, 0xc2, 0x94, 0x16, 0xdf, 0x64, 0x73, 0x6c, 0x3b, 0x86, 0x92,\n\t0x43, 0x28, 0xef, 0x89, 0xe6, 0xaf, 0x2c, 0xcf, 0x82, 0xa8, 0xbc, 0x72, 0x65, 0xb2, 0x6f, 0xc6,\n\t0x17, 0xb6, 0xea, 0x44, 0x87, 0xe8, 0x03, 0x08, 0x05, 0x0a, 0xa3, 0x15, 0xb0, 0x2a, 0x54, 0x0c,\n\t0x84, 0x6d, 0x3c, 0x26, 0xdb, 0xcf, 0xa1, 0x14, 0x4f, 0x0f, 0xda, 0x84, 0x8c, 0xeb, 0x61, 0xc7,\n\t0x63, 0x2c, 0xcc, 0xc8, 0x7c, 0x80, 0x04, 0x48, 0x11, 0x53, 0x63, 0x55, 0x2e, 0x23, 0xd3, 0x7f,\n\t0xd1, 0x8f, 0xa6, 0x0b, 0x4e, 0xb1, 0x05, 0x7f, 0x34, 0xff, 0x45, 0x63, 0x9e, 0x67, 0xd7, 0xbd,\n\t0x7d, 0x1b, 0x56, 0x63, 0x0b, 0x38, 0xeb, 0xd4, 0xe5, 0x5f, 0xc0, 0xdb, 0x0b, 0x5d, 0xa3, 0x07,\n\t0xb0, 0x39, 0x31, 0x75, 0xd3, 0x23, 0x8e, 0xed, 0x10, 0xca, 0x58, 0x3e, 0x95, 0xf8, 0x9f, 0x95,\n\t0x25, 0x9c, 0x3b, 0x8e, 0xa2, 0xb9, 0x17, 0x79, 0x63, 0x32, 0x2f, 0xbc, 0x9a, 0xcf, 0xfd, 0x77,\n\t0x45, 0x78, 0xf1, 0xe2, 0xc5, 0x8b, 0x64, 0xf9, 0x37, 0x59, 0xd8, 0x5c, 0xb4, 0x67, 0x16, 0x6e,\n\t0xdf, 0x2d, 0xc8, 0x9a, 0x93, 0xf1, 0x09, 0x71, 0x58, 0x92, 0x32, 0xb2, 0x3f, 0x42, 0x55, 0xc8,\n\t0x18, 0xf8, 0x84, 0x18, 0x62, 0x7a, 0x27, 0xb1, 0x5b, 0xda, 0xbb, 0x76, 0xa6, 0x5d, 0x59, 0x69,\n\t0x52, 0x13, 0x99, 0x5b, 0xa2, 0xcf, 0x21, 0xed, 0x97, 0x68, 0xea, 0xe1, 0xea, 0xd9, 0x3c, 0xd0,\n\t0xbd, 0x24, 0x33, 0x3b, 0xf4, 0x0e, 0xe4, 0xe9, 0x5f, 0xce, 0x8d, 0x2c, 0x8b, 0x39, 0x47, 0x05,\n\t0x94, 0x17, 0x68, 0x1b, 0x72, 0x6c, 0x9b, 0x68, 0x24, 0x38, 0xda, 0xc2, 0x31, 0x25, 0x96, 0x46,\n\t0x06, 0x78, 0x62, 0x78, 0xca, 0x13, 0x6c, 0x4c, 0x08, 0x23, 0x7c, 0x5e, 0x2e, 0xfa, 0xc2, 0x9f,\n\t0x52, 0x19, 0xba, 0x00, 0x05, 0xbe, 0xab, 0x74, 0x53, 0x23, 0xcf, 0x58, 0xf5, 0xcc, 0xc8, 0x7c,\n\t0xa3, 0x35, 0xa8, 0x84, 0x4e, 0xff, 0xc8, 0xb5, 0xcc, 0x80, 0x9a, 0x6c, 0x0a, 0x2a, 0x60, 0xd3,\n\t0xdf, 0x9e, 0x2d, 0xdc, 0xef, 0x2d, 0x5e, 0xde, 0x2c, 0xa7, 0xca, 0x7f, 0x4a, 0x42, 0x9a, 0xd5,\n\t0x8b, 0x35, 0x28, 0xf4, 0x1f, 0x76, 0x25, 0xa5, 0xde, 0x39, 0x3e, 0x6c, 0x4a, 0x42, 0x02, 0x95,\n\t0x00, 0x98, 0xe0, 0x5e, 0xb3, 0x53, 0xed, 0x0b, 0xc9, 0x70, 0xdc, 0x68, 0xf7, 0xf7, 0x6f, 0x0a,\n\t0xa9, 0xd0, 0xe0, 0x98, 0x0b, 0xd2, 0x51, 0xc0, 0x8d, 0x3d, 0x21, 0x83, 0x04, 0x28, 0x72, 0x07,\n\t0x8d, 0x07, 0x52, 0x7d, 0xff, 0xa6, 0x90, 0x8d, 0x4b, 0x6e, 0xec, 0x09, 0x2b, 0x68, 0x15, 0xf2,\n\t0x4c, 0x72, 0xd8, 0xe9, 0x34, 0x85, 0x5c, 0xe8, 0xb3, 0xd7, 0x97, 0x1b, 0xed, 0x23, 0x21, 0x1f,\n\t0xfa, 0x3c, 0x92, 0x3b, 0xc7, 0x5d, 0x01, 0x42, 0x0f, 0x2d, 0xa9, 0xd7, 0xab, 0x1e, 0x49, 0x42,\n\t0x21, 0x44, 0x1c, 0x3e, 0xec, 0x4b, 0x3d, 0xa1, 0x18, 0x0b, 0xeb, 0xc6, 0x9e, 0xb0, 0x1a, 0x4e,\n\t0x21, 0xb5, 0x8f, 0x5b, 0x42, 0x09, 0xad, 0xc3, 0x2a, 0x9f, 0x22, 0x08, 0x62, 0x6d, 0x46, 0xb4,\n\t0x7f, 0x53, 0x10, 0xa6, 0x81, 0x70, 0x2f, 0xeb, 0x31, 0xc1, 0xfe, 0x4d, 0x01, 0x95, 0x6b, 0x90,\n\t0x61, 0xec, 0x42, 0x08, 0x4a, 0xcd, 0xea, 0xa1, 0xd4, 0x54, 0x3a, 0xdd, 0x7e, 0xa3, 0xd3, 0xae,\n\t0x36, 0x85, 0xc4, 0x54, 0x26, 0x4b, 0x3f, 0x39, 0x6e, 0xc8, 0x52, 0x5d, 0x48, 0x46, 0x65, 0x5d,\n\t0xa9, 0xda, 0x97, 0xea, 0x42, 0xaa, 0xac, 0xc2, 0xe6, 0xa2, 0x3a, 0xb9, 0x70, 0x67, 0x44, 0x3e,\n\t0x71, 0x72, 0xc9, 0x27, 0x66, 0xbe, 0xe6, 0x3e, 0xf1, 0xbf, 0x92, 0xb0, 0xb1, 0xe0, 0xac, 0x58,\n\t0x38, 0xc9, 0x0f, 0x21, 0xc3, 0x29, 0xca, 0x4f, 0xcf, 0x2b, 0x0b, 0x0f, 0x1d, 0x46, 0xd8, 0xb9,\n\t0x13, 0x94, 0xd9, 0x45, 0x3b, 0x88, 0xd4, 0x92, 0x0e, 0x82, 0xba, 0x98, 0xab, 0xe9, 0x3f, 0x9f,\n\t0xab, 0xe9, 0xfc, 0xd8, 0xdb, 0x3f, 0xcb, 0xb1, 0xc7, 0x64, 0xdf, 0xae, 0xb6, 0x67, 0x16, 0xd4,\n\t0xf6, 0xbb, 0xb0, 0x3e, 0xe7, 0xe8, 0xcc, 0x35, 0xf6, 0x97, 0x09, 0x10, 0x97, 0x25, 0xe7, 0x15,\n\t0x95, 0x2e, 0x19, 0xab, 0x74, 0x77, 0x67, 0x33, 0x78, 0x71, 0xf9, 0x47, 0x98, 0xfb, 0xd6, 0xdf,\n\t0x24, 0x60, 0x6b, 0x71, 0xa7, 0xb8, 0x30, 0x86, 0xcf, 0x21, 0x3b, 0x26, 0xde, 0xc8, 0x0a, 0xba,\n\t0xa5, 0x8f, 0x16, 0x9c, 0xc1, 0x54, 0x3d, 0xfb, 0xb1, 0x7d, 0xab, 0xe8, 0x21, 0x9e, 0x5a, 0xd6,\n\t0xee, 0xf1, 0x68, 0xe6, 0x22, 0xfd, 0x55, 0x12, 0xde, 0x5e, 0xe8, 0x7c, 0x61, 0xa0, 0xef, 0x01,\n\t0xe8, 0xa6, 0x3d, 0xf1, 0x78, 0x47, 0xc4, 0x0b, 0x6c, 0x9e, 0x49, 0x58, 0xf1, 0xa2, 0xc5, 0x73,\n\t0xe2, 0x85, 0xfa, 0x14, 0xd3, 0x03, 0x17, 0x31, 0xc0, 0x9d, 0x69, 0xa0, 0x69, 0x16, 0xe8, 0xfb,\n\t0x4b, 0x56, 0x3a, 0x47, 0xcc, 0x4f, 0x41, 0x50, 0x0d, 0x9d, 0x98, 0x9e, 0xe2, 0x7a, 0x0e, 0xc1,\n\t0x63, 0xdd, 0x1c, 0xb2, 0x13, 0x24, 0x77, 0x90, 0x19, 0x60, 0xc3, 0x25, 0xf2, 0x1a, 0x57, 0xf7,\n\t0x02, 0x2d, 0xb5, 0x60, 0x04, 0x72, 0x22, 0x16, 0xd9, 0x98, 0x05, 0x57, 0x87, 0x16, 0xe5, 0x5f,\n\t0xe7, 0xa1, 0x10, 0xe9, 0xab, 0xd1, 0x45, 0x28, 0x3e, 0xc2, 0x4f, 0xb0, 0x12, 0xdc, 0x95, 0x78,\n\t0x26, 0x0a, 0x54, 0xd6, 0xf5, 0xef, 0x4b, 0x9f, 0xc2, 0x26, 0x83, 0x58, 0x13, 0x8f, 0x38, 0x8a,\n\t0x6a, 0x60, 0xd7, 0x65, 0x49, 0xcb, 0x31, 0x28, 0xa2, 0xba, 0x0e, 0x55, 0xd5, 0x02, 0x0d, 0xba,\n\t0x05, 0x1b, 0xcc, 0x62, 0x3c, 0x31, 0x3c, 0xdd, 0x36, 0x88, 0x42, 0x6f, 0x6f, 0x2e, 0x3b, 0x49,\n\t0xc2, 0xc8, 0xd6, 0x29, 0xa2, 0xe5, 0x03, 0x68, 0x44, 0x2e, 0xaa, 0xc3, 0x7b, 0xcc, 0x6c, 0x48,\n\t0x4c, 0xe2, 0x60, 0x8f, 0x28, 0xe4, 0xeb, 0x09, 0x36, 0x5c, 0x05, 0x9b, 0x9a, 0x32, 0xc2, 0xee,\n\t0x48, 0xdc, 0xa4, 0x0e, 0x0e, 0x93, 0x62, 0x42, 0x3e, 0x4f, 0x81, 0x47, 0x3e, 0x4e, 0x62, 0xb0,\n\t0xaa, 0xa9, 0x7d, 0x81, 0xdd, 0x11, 0x3a, 0x80, 0x2d, 0xe6, 0xc5, 0xf5, 0x1c, 0xdd, 0x1c, 0x2a,\n\t0xea, 0x88, 0xa8, 0x8f, 0x95, 0x89, 0x37, 0xb8, 0x23, 0xbe, 0x13, 0x9d, 0x9f, 0x45, 0xd8, 0x63,\n\t0x98, 0x1a, 0x85, 0x1c, 0x7b, 0x83, 0x3b, 0xa8, 0x07, 0x45, 0xfa, 0x31, 0xc6, 0xfa, 0x73, 0xa2,\n\t0x0c, 0x2c, 0x87, 0x1d, 0x8d, 0xa5, 0x05, 0xa5, 0x29, 0x92, 0xc1, 0x4a, 0xc7, 0x37, 0x68, 0x59,\n\t0x1a, 0x39, 0xc8, 0xf4, 0xba, 0x92, 0x54, 0x97, 0x0b, 0x81, 0x97, 0x7b, 0x96, 0x43, 0x09, 0x35,\n\t0xb4, 0xc2, 0x04, 0x17, 0x38, 0xa1, 0x86, 0x56, 0x90, 0xde, 0x5b, 0xb0, 0xa1, 0xaa, 0x7c, 0xcd,\n\t0xba, 0xaa, 0xf8, 0x77, 0x2c, 0x57, 0x14, 0x62, 0xc9, 0x52, 0xd5, 0x23, 0x0e, 0xf0, 0x39, 0xee,\n\t0xa2, 0xcf, 0xe0, 0xed, 0x69, 0xb2, 0xa2, 0x86, 0xeb, 0x73, 0xab, 0x9c, 0x35, 0xbd, 0x05, 0x1b,\n\t0xf6, 0xe9, 0xbc, 0x21, 0x8a, 0xcd, 0x68, 0x9f, 0xce, 0x9a, 0xdd, 0x86, 0x4d, 0x7b, 0x64, 0xcf,\n\t0xdb, 0x5d, 0x8d, 0xda, 0x21, 0x7b, 0x64, 0xcf, 0x1a, 0x5e, 0x62, 0x17, 0x6e, 0x87, 0xa8, 0xd8,\n\t0x23, 0x9a, 0x78, 0x2e, 0x0a, 0x8f, 0x28, 0xd0, 0x75, 0x10, 0x54, 0x55, 0x21, 0x26, 0x3e, 0x31,\n\t0x88, 0x82, 0x1d, 0x62, 0x62, 0x57, 0xbc, 0x10, 0x05, 0x97, 0x54, 0x55, 0x62, 0xda, 0x2a, 0x53,\n\t0xa2, 0xab, 0xb0, 0x6e, 0x9d, 0x3c, 0x52, 0x39, 0x25, 0x15, 0xdb, 0x21, 0x03, 0xfd, 0x99, 0xf8,\n\t0x21, 0xcb, 0xef, 0x1a, 0x55, 0x30, 0x42, 0x76, 0x99, 0x18, 0x5d, 0x01, 0x41, 0x75, 0x47, 0xd8,\n\t0xb1, 0x59, 0x4d, 0x76, 0x6d, 0xac, 0x12, 0xf1, 0x12, 0x87, 0x72, 0x79, 0x3b, 0x10, 0xd3, 0x2d,\n\t0xe1, 0x3e, 0xd5, 0x07, 0x5e, 0xe0, 0xf1, 0x32, 0xdf, 0x12, 0x4c, 0xe6, 0x7b, 0xdb, 0x05, 0x81,\n\t0xa6, 0x22, 0x36, 0xf1, 0x2e, 0x83, 0x95, 0xec, 0x91, 0x1d, 0x9d, 0xf7, 0x03, 0x58, 0xa5, 0xc8,\n\t0xe9, 0xa4, 0x57, 0x78, 0x43, 0x66, 0x8f, 0x22, 0x33, 0xde, 0x84, 0x2d, 0x0a, 0x1a, 0x13, 0x0f,\n\t0x6b, 0xd8, 0xc3, 0x11, 0xf4, 0xc7, 0x0c, 0x4d, 0xf3, 0xde, 0xf2, 0x95, 0xb1, 0x38, 0x9d, 0xc9,\n\t0xc9, 0x69, 0xc8, 0xac, 0x4f, 0x78, 0x9c, 0x54, 0x16, 0x70, 0xeb, 0xb5, 0x35, 0xdd, 0xe5, 0x03,\n\t0x28, 0x46, 0x89, 0x8f, 0xf2, 0xc0, 0xa9, 0x2f, 0x24, 0x68, 0x17, 0x54, 0xeb, 0xd4, 0x69, 0xff,\n\t0xf2, 0x95, 0x24, 0x24, 0x69, 0x1f, 0xd5, 0x6c, 0xf4, 0x25, 0x45, 0x3e, 0x6e, 0xf7, 0x1b, 0x2d,\n\t0x49, 0x48, 0x45, 0x1b, 0xf6, 0xbf, 0x26, 0xa1, 0x14, 0xbf, 0x7b, 0xa1, 0x1f, 0xc0, 0xb9, 0xe0,\n\t0xa1, 0xc4, 0x25, 0x9e, 0xf2, 0x54, 0x77, 0xd8, 0x5e, 0x1c, 0x63, 0x7e, 0x2e, 0x86, 0x6c, 0xd8,\n\t0xf4, 0x51, 0x3d, 0xe2, 0x7d, 0xa9, 0x3b, 0x74, 0xa7, 0x8d, 0xb1, 0x87, 0x9a, 0x70, 0xc1, 0xb4,\n\t0x14, 0xd7, 0xc3, 0xa6, 0x86, 0x1d, 0x4d, 0x99, 0x3e, 0x51, 0x29, 0x58, 0x55, 0x89, 0xeb, 0x5a,\n\t0xfc, 0x0c, 0x0c, 0xbd, 0xbc, 0x6b, 0x5a, 0x3d, 0x1f, 0x3c, 0x3d, 0x1c, 0xaa, 0x3e, 0x74, 0x86,\n\t0xb9, 0xa9, 0x65, 0xcc, 0x7d, 0x07, 0xf2, 0x63, 0x6c, 0x2b, 0xc4, 0xf4, 0x9c, 0x53, 0xd6, 0x71,\n\t0xe7, 0xe4, 0xdc, 0x18, 0xdb, 0x12, 0x1d, 0xbf, 0x99, 0x8b, 0xcf, 0x3f, 0x52, 0x50, 0x8c, 0x76,\n\t0xdd, 0xf4, 0x12, 0xa3, 0xb2, 0x03, 0x2a, 0xc1, 0x4a, 0xd8, 0x07, 0x2f, 0xed, 0xd1, 0x2b, 0x35,\n\t0x7a, 0x72, 0x1d, 0x64, 0x79, 0x2f, 0x2c, 0x73, 0x4b, 0xda, 0x35, 0x50, 0x6a, 0x11, 0xde, 0x7b,\n\t0xe4, 0x64, 0x7f, 0x84, 0x8e, 0x20, 0xfb, 0xc8, 0x65, 0xbe, 0xb3, 0xcc, 0xf7, 0x87, 0x2f, 0xf7,\n\t0x7d, 0xbf, 0xc7, 0x9c, 0xe7, 0xef, 0xf7, 0x94, 0x76, 0x47, 0x6e, 0x55, 0x9b, 0xb2, 0x6f, 0x8e,\n\t0xce, 0x43, 0xda, 0xc0, 0xcf, 0x4f, 0xe3, 0x67, 0x1c, 0x13, 0x9d, 0x35, 0xf1, 0xe7, 0x21, 0xfd,\n\t0x94, 0xe0, 0xc7, 0xf1, 0x93, 0x85, 0x89, 0x5e, 0x23, 0xf5, 0xaf, 0x43, 0x86, 0xe5, 0x0b, 0x01,\n\t0xf8, 0x19, 0x13, 0xde, 0x42, 0x39, 0x48, 0xd7, 0x3a, 0x32, 0xa5, 0xbf, 0x00, 0x45, 0x2e, 0x55,\n\t0xba, 0x0d, 0xa9, 0x26, 0x09, 0xc9, 0xf2, 0x2d, 0xc8, 0xf2, 0x24, 0xd0, 0xad, 0x11, 0xa6, 0x41,\n\t0x78, 0xcb, 0x1f, 0xfa, 0x3e, 0x12, 0x81, 0xf6, 0xb8, 0x75, 0x28, 0xc9, 0x42, 0x32, 0xfa, 0x79,\n\t0x5d, 0x28, 0x46, 0x1b, 0xee, 0x37, 0xc3, 0xa9, 0xbf, 0x24, 0xa0, 0x10, 0x69, 0xa0, 0x69, 0xe7,\n\t0x83, 0x0d, 0xc3, 0x7a, 0xaa, 0x60, 0x43, 0xc7, 0xae, 0x4f, 0x0a, 0x60, 0xa2, 0x2a, 0x95, 0x9c,\n\t0xf5, 0xa3, 0xbd, 0x91, 0xe0, 0x7f, 0x9f, 0x00, 0x61, 0xb6, 0x77, 0x9d, 0x09, 0x30, 0xf1, 0xbd,\n\t0x06, 0xf8, 0xbb, 0x04, 0x94, 0xe2, 0x0d, 0xeb, 0x4c, 0x78, 0x17, 0xbf, 0xd7, 0xf0, 0xfe, 0x99,\n\t0x84, 0xd5, 0x58, 0x9b, 0x7a, 0xd6, 0xe8, 0xbe, 0x86, 0x75, 0x5d, 0x23, 0x63, 0xdb, 0xf2, 0x88,\n\t0xa9, 0x9e, 0x2a, 0x06, 0x79, 0x42, 0x0c, 0xb1, 0xcc, 0x0a, 0xc5, 0xf5, 0x97, 0x37, 0xc2, 0x95,\n\t0xc6, 0xd4, 0xae, 0x49, 0xcd, 0x0e, 0x36, 0x1a, 0x75, 0xa9, 0xd5, 0xed, 0xf4, 0xa5, 0x76, 0xed,\n\t0xa1, 0x72, 0xdc, 0xfe, 0x71, 0xbb, 0xf3, 0x65, 0x5b, 0x16, 0xf4, 0x19, 0xd8, 0x6b, 0xdc, 0xea,\n\t0x5d, 0x10, 0x66, 0x83, 0x42, 0xe7, 0x60, 0x51, 0x58, 0xc2, 0x5b, 0x68, 0x03, 0xd6, 0xda, 0x1d,\n\t0xa5, 0xd7, 0xa8, 0x4b, 0x8a, 0x74, 0xef, 0x9e, 0x54, 0xeb, 0xf7, 0xf8, 0xd3, 0x46, 0x88, 0xee,\n\t0xc7, 0x37, 0xf5, 0x6f, 0x53, 0xb0, 0xb1, 0x20, 0x12, 0x54, 0xf5, 0x2f, 0x25, 0xfc, 0x9e, 0xf4,\n\t0xc9, 0x59, 0xa2, 0xaf, 0xd0, 0xae, 0xa0, 0x8b, 0x1d, 0xcf, 0xbf, 0xc3, 0x5c, 0x01, 0x9a, 0x25,\n\t0xd3, 0xd3, 0x07, 0x3a, 0x71, 0xfc, 0x97, 0x20, 0x7e, 0x53, 0x59, 0x9b, 0xca, 0xf9, 0x63, 0xd0,\n\t0xc7, 0x80, 0x6c, 0xcb, 0xd5, 0x3d, 0xfd, 0x09, 0x51, 0x74, 0x33, 0x78, 0x36, 0xa2, 0x37, 0x97,\n\t0xb4, 0x2c, 0x04, 0x9a, 0x86, 0xe9, 0x85, 0x68, 0x93, 0x0c, 0xf1, 0x0c, 0x9a, 0x16, 0xf0, 0x94,\n\t0x2c, 0x04, 0x9a, 0x10, 0x7d, 0x11, 0x8a, 0x9a, 0x35, 0xa1, 0xed, 0x1c, 0xc7, 0xd1, 0xf3, 0x22,\n\t0x21, 0x17, 0xb8, 0x2c, 0x84, 0xf8, 0x8d, 0xfa, 0xf4, 0xbd, 0xaa, 0x28, 0x17, 0xb8, 0x8c, 0x43,\n\t0x2e, 0xc3, 0x1a, 0x1e, 0x0e, 0x1d, 0xea, 0x3c, 0x70, 0xc4, 0xaf, 0x1e, 0xa5, 0x50, 0xcc, 0x80,\n\t0xdb, 0xf7, 0x21, 0x17, 0xe4, 0x81, 0x1e, 0xc9, 0x34, 0x13, 0x8a, 0xcd, 0xef, 0xd3, 0xc9, 0xdd,\n\t0xbc, 0x9c, 0x33, 0x03, 0xe5, 0x45, 0x28, 0xea, 0xae, 0x32, 0x7d, 0x7e, 0x4f, 0xee, 0x24, 0x77,\n\t0x73, 0x72, 0x41, 0x77, 0xc3, 0xa7, 0xcb, 0xf2, 0x37, 0x49, 0x28, 0xc5, 0x7f, 0x3e, 0x40, 0x75,\n\t0xc8, 0x19, 0x96, 0x8a, 0x19, 0xb5, 0xf8, 0x6f, 0x57, 0xbb, 0xaf, 0xf8, 0xc5, 0xa1, 0xd2, 0xf4,\n\t0xf1, 0x72, 0x68, 0xb9, 0xfd, 0xb7, 0x04, 0xe4, 0x02, 0x31, 0xda, 0x82, 0xb4, 0x8d, 0xbd, 0x11,\n\t0x73, 0x97, 0x39, 0x4c, 0x0a, 0x09, 0x99, 0x8d, 0xa9, 0xdc, 0xb5, 0xb1, 0xc9, 0x28, 0xe0, 0xcb,\n\t0xe9, 0x98, 0x7e, 0x57, 0x83, 0x60, 0x8d, 0xdd, 0x6b, 0xac, 0xf1, 0x98, 0x98, 0x9e, 0x1b, 0x7c,\n\t0x57, 0x5f, 0x5e, 0xf3, 0xc5, 0xe8, 0x1a, 0xac, 0x7b, 0x0e, 0xd6, 0x8d, 0x18, 0x36, 0xcd, 0xb0,\n\t0x42, 0xa0, 0x08, 0xc1, 0x07, 0x70, 0x3e, 0xf0, 0xab, 0x11, 0x0f, 0xab, 0x23, 0xa2, 0x4d, 0x8d,\n\t0xb2, 0xec, 0xfd, 0xe2, 0x9c, 0x0f, 0xa8, 0xfb, 0xfa, 0xc0, 0xb6, 0xfc, 0xf7, 0x04, 0xac, 0x07,\n\t0x37, 0x31, 0x2d, 0x4c, 0x56, 0x0b, 0x00, 0x9b, 0xa6, 0xe5, 0x45, 0xd3, 0x35, 0x4f, 0xe5, 0x39,\n\t0xbb, 0x4a, 0x35, 0x34, 0x92, 0x23, 0x0e, 0xb6, 0xc7, 0x00, 0x53, 0xcd, 0xd2, 0xb4, 0x5d, 0x80,\n\t0x82, 0xff, 0xdb, 0x10, 0xfb, 0x81, 0x91, 0xdf, 0xdd, 0x81, 0x8b, 0xe8, 0x95, 0x0d, 0x6d, 0x42,\n\t0xe6, 0x84, 0x0c, 0x75, 0xd3, 0x7f, 0xf1, 0xe5, 0x83, 0xe0, 0x85, 0x25, 0x1d, 0xbe, 0xb0, 0x1c,\n\t0xfe, 0x0c, 0x36, 0x54, 0x6b, 0x3c, 0x1b, 0xee, 0xa1, 0x30, 0xf3, 0x7e, 0xe0, 0x7e, 0x91, 0xf8,\n\t0x0a, 0xa6, 0x2d, 0xe6, 0xff, 0x12, 0x89, 0x3f, 0x24, 0x53, 0x47, 0xdd, 0xc3, 0x3f, 0x26, 0xb7,\n\t0x8f, 0xb8, 0x69, 0x37, 0x58, 0xa9, 0x4c, 0x06, 0x06, 0x51, 0x69, 0xf4, 0xff, 0x0f, 0x00, 0x00,\n\t0xff, 0xff, 0x88, 0x17, 0xc1, 0xbe, 0x38, 0x1d, 0x00, 0x00,\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor_gostring.gen.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: descriptor.proto\n\npackage descriptor\n\nimport (\n\tfmt \"fmt\"\n\tgithub_com_gogo_protobuf_proto \"github.com/gogo/protobuf/proto\"\n\tproto \"github.com/gogo/protobuf/proto\"\n\tmath \"math\"\n\treflect \"reflect\"\n\tsort \"sort\"\n\tstrconv \"strconv\"\n\tstrings \"strings\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\nfunc (this *FileDescriptorSet) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 5)\n\ts = append(s, \"&descriptor.FileDescriptorSet{\")\n\tif this.File != nil {\n\t\ts = append(s, \"File: \"+fmt.Sprintf(\"%#v\", this.File)+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *FileDescriptorProto) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 16)\n\ts = append(s, \"&descriptor.FileDescriptorProto{\")\n\tif this.Name != nil {\n\t\ts = append(s, \"Name: \"+valueToGoStringDescriptor(this.Name, \"string\")+\",\\n\")\n\t}\n\tif this.Package != nil {\n\t\ts = append(s, \"Package: \"+valueToGoStringDescriptor(this.Package, \"string\")+\",\\n\")\n\t}\n\tif this.Dependency != nil {\n\t\ts = append(s, \"Dependency: \"+fmt.Sprintf(\"%#v\", this.Dependency)+\",\\n\")\n\t}\n\tif this.PublicDependency != nil {\n\t\ts = append(s, \"PublicDependency: \"+fmt.Sprintf(\"%#v\", this.PublicDependency)+\",\\n\")\n\t}\n\tif this.WeakDependency != nil {\n\t\ts = append(s, \"WeakDependency: \"+fmt.Sprintf(\"%#v\", this.WeakDependency)+\",\\n\")\n\t}\n\tif this.MessageType != nil {\n\t\ts = append(s, \"MessageType: \"+fmt.Sprintf(\"%#v\", this.MessageType)+\",\\n\")\n\t}\n\tif this.EnumType != nil {\n\t\ts = append(s, \"EnumType: \"+fmt.Sprintf(\"%#v\", this.EnumType)+\",\\n\")\n\t}\n\tif this.Service != nil {\n\t\ts = append(s, \"Service: \"+fmt.Sprintf(\"%#v\", this.Service)+\",\\n\")\n\t}\n\tif this.Extension != nil {\n\t\ts = append(s, \"Extension: \"+fmt.Sprintf(\"%#v\", this.Extension)+\",\\n\")\n\t}\n\tif this.Options != nil {\n\t\ts = append(s, \"Options: \"+fmt.Sprintf(\"%#v\", this.Options)+\",\\n\")\n\t}\n\tif this.SourceCodeInfo != nil {\n\t\ts = append(s, \"SourceCodeInfo: \"+fmt.Sprintf(\"%#v\", this.SourceCodeInfo)+\",\\n\")\n\t}\n\tif this.Syntax != nil {\n\t\ts = append(s, \"Syntax: \"+valueToGoStringDescriptor(this.Syntax, \"string\")+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *DescriptorProto) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 14)\n\ts = append(s, \"&descriptor.DescriptorProto{\")\n\tif this.Name != nil {\n\t\ts = append(s, \"Name: \"+valueToGoStringDescriptor(this.Name, \"string\")+\",\\n\")\n\t}\n\tif this.Field != nil {\n\t\ts = append(s, \"Field: \"+fmt.Sprintf(\"%#v\", this.Field)+\",\\n\")\n\t}\n\tif this.Extension != nil {\n\t\ts = append(s, \"Extension: \"+fmt.Sprintf(\"%#v\", this.Extension)+\",\\n\")\n\t}\n\tif this.NestedType != nil {\n\t\ts = append(s, \"NestedType: \"+fmt.Sprintf(\"%#v\", this.NestedType)+\",\\n\")\n\t}\n\tif this.EnumType != nil {\n\t\ts = append(s, \"EnumType: \"+fmt.Sprintf(\"%#v\", this.EnumType)+\",\\n\")\n\t}\n\tif this.ExtensionRange != nil {\n\t\ts = append(s, \"ExtensionRange: \"+fmt.Sprintf(\"%#v\", this.ExtensionRange)+\",\\n\")\n\t}\n\tif this.OneofDecl != nil {\n\t\ts = append(s, \"OneofDecl: \"+fmt.Sprintf(\"%#v\", this.OneofDecl)+\",\\n\")\n\t}\n\tif this.Options != nil {\n\t\ts = append(s, \"Options: \"+fmt.Sprintf(\"%#v\", this.Options)+\",\\n\")\n\t}\n\tif this.ReservedRange != nil {\n\t\ts = append(s, \"ReservedRange: \"+fmt.Sprintf(\"%#v\", this.ReservedRange)+\",\\n\")\n\t}\n\tif this.ReservedName != nil {\n\t\ts = append(s, \"ReservedName: \"+fmt.Sprintf(\"%#v\", this.ReservedName)+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *DescriptorProto_ExtensionRange) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 7)\n\ts = append(s, \"&descriptor.DescriptorProto_ExtensionRange{\")\n\tif this.Start != nil {\n\t\ts = append(s, \"Start: \"+valueToGoStringDescriptor(this.Start, \"int32\")+\",\\n\")\n\t}\n\tif this.End != nil {\n\t\ts = append(s, \"End: \"+valueToGoStringDescriptor(this.End, \"int32\")+\",\\n\")\n\t}\n\tif this.Options != nil {\n\t\ts = append(s, \"Options: \"+fmt.Sprintf(\"%#v\", this.Options)+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *DescriptorProto_ReservedRange) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 6)\n\ts = append(s, \"&descriptor.DescriptorProto_ReservedRange{\")\n\tif this.Start != nil {\n\t\ts = append(s, \"Start: \"+valueToGoStringDescriptor(this.Start, \"int32\")+\",\\n\")\n\t}\n\tif this.End != nil {\n\t\ts = append(s, \"End: \"+valueToGoStringDescriptor(this.End, \"int32\")+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *ExtensionRangeOptions) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 5)\n\ts = append(s, \"&descriptor.ExtensionRangeOptions{\")\n\tif this.UninterpretedOption != nil {\n\t\ts = append(s, \"UninterpretedOption: \"+fmt.Sprintf(\"%#v\", this.UninterpretedOption)+\",\\n\")\n\t}\n\ts = append(s, \"XXX_InternalExtensions: \"+extensionToGoStringDescriptor(this)+\",\\n\")\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *FieldDescriptorProto) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 14)\n\ts = append(s, \"&descriptor.FieldDescriptorProto{\")\n\tif this.Name != nil {\n\t\ts = append(s, \"Name: \"+valueToGoStringDescriptor(this.Name, \"string\")+\",\\n\")\n\t}\n\tif this.Number != nil {\n\t\ts = append(s, \"Number: \"+valueToGoStringDescriptor(this.Number, \"int32\")+\",\\n\")\n\t}\n\tif this.Label != nil {\n\t\ts = append(s, \"Label: \"+valueToGoStringDescriptor(this.Label, \"FieldDescriptorProto_Label\")+\",\\n\")\n\t}\n\tif this.Type != nil {\n\t\ts = append(s, \"Type: \"+valueToGoStringDescriptor(this.Type, \"FieldDescriptorProto_Type\")+\",\\n\")\n\t}\n\tif this.TypeName != nil {\n\t\ts = append(s, \"TypeName: \"+valueToGoStringDescriptor(this.TypeName, \"string\")+\",\\n\")\n\t}\n\tif this.Extendee != nil {\n\t\ts = append(s, \"Extendee: \"+valueToGoStringDescriptor(this.Extendee, \"string\")+\",\\n\")\n\t}\n\tif this.DefaultValue != nil {\n\t\ts = append(s, \"DefaultValue: \"+valueToGoStringDescriptor(this.DefaultValue, \"string\")+\",\\n\")\n\t}\n\tif this.OneofIndex != nil {\n\t\ts = append(s, \"OneofIndex: \"+valueToGoStringDescriptor(this.OneofIndex, \"int32\")+\",\\n\")\n\t}\n\tif this.JsonName != nil {\n\t\ts = append(s, \"JsonName: \"+valueToGoStringDescriptor(this.JsonName, \"string\")+\",\\n\")\n\t}\n\tif this.Options != nil {\n\t\ts = append(s, \"Options: \"+fmt.Sprintf(\"%#v\", this.Options)+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *OneofDescriptorProto) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 6)\n\ts = append(s, \"&descriptor.OneofDescriptorProto{\")\n\tif this.Name != nil {\n\t\ts = append(s, \"Name: \"+valueToGoStringDescriptor(this.Name, \"string\")+\",\\n\")\n\t}\n\tif this.Options != nil {\n\t\ts = append(s, \"Options: \"+fmt.Sprintf(\"%#v\", this.Options)+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *EnumDescriptorProto) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 9)\n\ts = append(s, \"&descriptor.EnumDescriptorProto{\")\n\tif this.Name != nil {\n\t\ts = append(s, \"Name: \"+valueToGoStringDescriptor(this.Name, \"string\")+\",\\n\")\n\t}\n\tif this.Value != nil {\n\t\ts = append(s, \"Value: \"+fmt.Sprintf(\"%#v\", this.Value)+\",\\n\")\n\t}\n\tif this.Options != nil {\n\t\ts = append(s, \"Options: \"+fmt.Sprintf(\"%#v\", this.Options)+\",\\n\")\n\t}\n\tif this.ReservedRange != nil {\n\t\ts = append(s, \"ReservedRange: \"+fmt.Sprintf(\"%#v\", this.ReservedRange)+\",\\n\")\n\t}\n\tif this.ReservedName != nil {\n\t\ts = append(s, \"ReservedName: \"+fmt.Sprintf(\"%#v\", this.ReservedName)+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *EnumDescriptorProto_EnumReservedRange) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 6)\n\ts = append(s, \"&descriptor.EnumDescriptorProto_EnumReservedRange{\")\n\tif this.Start != nil {\n\t\ts = append(s, \"Start: \"+valueToGoStringDescriptor(this.Start, \"int32\")+\",\\n\")\n\t}\n\tif this.End != nil {\n\t\ts = append(s, \"End: \"+valueToGoStringDescriptor(this.End, \"int32\")+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *EnumValueDescriptorProto) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 7)\n\ts = append(s, \"&descriptor.EnumValueDescriptorProto{\")\n\tif this.Name != nil {\n\t\ts = append(s, \"Name: \"+valueToGoStringDescriptor(this.Name, \"string\")+\",\\n\")\n\t}\n\tif this.Number != nil {\n\t\ts = append(s, \"Number: \"+valueToGoStringDescriptor(this.Number, \"int32\")+\",\\n\")\n\t}\n\tif this.Options != nil {\n\t\ts = append(s, \"Options: \"+fmt.Sprintf(\"%#v\", this.Options)+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *ServiceDescriptorProto) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 7)\n\ts = append(s, \"&descriptor.ServiceDescriptorProto{\")\n\tif this.Name != nil {\n\t\ts = append(s, \"Name: \"+valueToGoStringDescriptor(this.Name, \"string\")+\",\\n\")\n\t}\n\tif this.Method != nil {\n\t\ts = append(s, \"Method: \"+fmt.Sprintf(\"%#v\", this.Method)+\",\\n\")\n\t}\n\tif this.Options != nil {\n\t\ts = append(s, \"Options: \"+fmt.Sprintf(\"%#v\", this.Options)+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *MethodDescriptorProto) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 10)\n\ts = append(s, \"&descriptor.MethodDescriptorProto{\")\n\tif this.Name != nil {\n\t\ts = append(s, \"Name: \"+valueToGoStringDescriptor(this.Name, \"string\")+\",\\n\")\n\t}\n\tif this.InputType != nil {\n\t\ts = append(s, \"InputType: \"+valueToGoStringDescriptor(this.InputType, \"string\")+\",\\n\")\n\t}\n\tif this.OutputType != nil {\n\t\ts = append(s, \"OutputType: \"+valueToGoStringDescriptor(this.OutputType, \"string\")+\",\\n\")\n\t}\n\tif this.Options != nil {\n\t\ts = append(s, \"Options: \"+fmt.Sprintf(\"%#v\", this.Options)+\",\\n\")\n\t}\n\tif this.ClientStreaming != nil {\n\t\ts = append(s, \"ClientStreaming: \"+valueToGoStringDescriptor(this.ClientStreaming, \"bool\")+\",\\n\")\n\t}\n\tif this.ServerStreaming != nil {\n\t\ts = append(s, \"ServerStreaming: \"+valueToGoStringDescriptor(this.ServerStreaming, \"bool\")+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *FileOptions) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 25)\n\ts = append(s, \"&descriptor.FileOptions{\")\n\tif this.JavaPackage != nil {\n\t\ts = append(s, \"JavaPackage: \"+valueToGoStringDescriptor(this.JavaPackage, \"string\")+\",\\n\")\n\t}\n\tif this.JavaOuterClassname != nil {\n\t\ts = append(s, \"JavaOuterClassname: \"+valueToGoStringDescriptor(this.JavaOuterClassname, \"string\")+\",\\n\")\n\t}\n\tif this.JavaMultipleFiles != nil {\n\t\ts = append(s, \"JavaMultipleFiles: \"+valueToGoStringDescriptor(this.JavaMultipleFiles, \"bool\")+\",\\n\")\n\t}\n\tif this.JavaGenerateEqualsAndHash != nil {\n\t\ts = append(s, \"JavaGenerateEqualsAndHash: \"+valueToGoStringDescriptor(this.JavaGenerateEqualsAndHash, \"bool\")+\",\\n\")\n\t}\n\tif this.JavaStringCheckUtf8 != nil {\n\t\ts = append(s, \"JavaStringCheckUtf8: \"+valueToGoStringDescriptor(this.JavaStringCheckUtf8, \"bool\")+\",\\n\")\n\t}\n\tif this.OptimizeFor != nil {\n\t\ts = append(s, \"OptimizeFor: \"+valueToGoStringDescriptor(this.OptimizeFor, \"FileOptions_OptimizeMode\")+\",\\n\")\n\t}\n\tif this.GoPackage != nil {\n\t\ts = append(s, \"GoPackage: \"+valueToGoStringDescriptor(this.GoPackage, \"string\")+\",\\n\")\n\t}\n\tif this.CcGenericServices != nil {\n\t\ts = append(s, \"CcGenericServices: \"+valueToGoStringDescriptor(this.CcGenericServices, \"bool\")+\",\\n\")\n\t}\n\tif this.JavaGenericServices != nil {\n\t\ts = append(s, \"JavaGenericServices: \"+valueToGoStringDescriptor(this.JavaGenericServices, \"bool\")+\",\\n\")\n\t}\n\tif this.PyGenericServices != nil {\n\t\ts = append(s, \"PyGenericServices: \"+valueToGoStringDescriptor(this.PyGenericServices, \"bool\")+\",\\n\")\n\t}\n\tif this.PhpGenericServices != nil {\n\t\ts = append(s, \"PhpGenericServices: \"+valueToGoStringDescriptor(this.PhpGenericServices, \"bool\")+\",\\n\")\n\t}\n\tif this.Deprecated != nil {\n\t\ts = append(s, \"Deprecated: \"+valueToGoStringDescriptor(this.Deprecated, \"bool\")+\",\\n\")\n\t}\n\tif this.CcEnableArenas != nil {\n\t\ts = append(s, \"CcEnableArenas: \"+valueToGoStringDescriptor(this.CcEnableArenas, \"bool\")+\",\\n\")\n\t}\n\tif this.ObjcClassPrefix != nil {\n\t\ts = append(s, \"ObjcClassPrefix: \"+valueToGoStringDescriptor(this.ObjcClassPrefix, \"string\")+\",\\n\")\n\t}\n\tif this.CsharpNamespace != nil {\n\t\ts = append(s, \"CsharpNamespace: \"+valueToGoStringDescriptor(this.CsharpNamespace, \"string\")+\",\\n\")\n\t}\n\tif this.SwiftPrefix != nil {\n\t\ts = append(s, \"SwiftPrefix: \"+valueToGoStringDescriptor(this.SwiftPrefix, \"string\")+\",\\n\")\n\t}\n\tif this.PhpClassPrefix != nil {\n\t\ts = append(s, \"PhpClassPrefix: \"+valueToGoStringDescriptor(this.PhpClassPrefix, \"string\")+\",\\n\")\n\t}\n\tif this.PhpNamespace != nil {\n\t\ts = append(s, \"PhpNamespace: \"+valueToGoStringDescriptor(this.PhpNamespace, \"string\")+\",\\n\")\n\t}\n\tif this.PhpMetadataNamespace != nil {\n\t\ts = append(s, \"PhpMetadataNamespace: \"+valueToGoStringDescriptor(this.PhpMetadataNamespace, \"string\")+\",\\n\")\n\t}\n\tif this.RubyPackage != nil {\n\t\ts = append(s, \"RubyPackage: \"+valueToGoStringDescriptor(this.RubyPackage, \"string\")+\",\\n\")\n\t}\n\tif this.UninterpretedOption != nil {\n\t\ts = append(s, \"UninterpretedOption: \"+fmt.Sprintf(\"%#v\", this.UninterpretedOption)+\",\\n\")\n\t}\n\ts = append(s, \"XXX_InternalExtensions: \"+extensionToGoStringDescriptor(this)+\",\\n\")\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *MessageOptions) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 9)\n\ts = append(s, \"&descriptor.MessageOptions{\")\n\tif this.MessageSetWireFormat != nil {\n\t\ts = append(s, \"MessageSetWireFormat: \"+valueToGoStringDescriptor(this.MessageSetWireFormat, \"bool\")+\",\\n\")\n\t}\n\tif this.NoStandardDescriptorAccessor != nil {\n\t\ts = append(s, \"NoStandardDescriptorAccessor: \"+valueToGoStringDescriptor(this.NoStandardDescriptorAccessor, \"bool\")+\",\\n\")\n\t}\n\tif this.Deprecated != nil {\n\t\ts = append(s, \"Deprecated: \"+valueToGoStringDescriptor(this.Deprecated, \"bool\")+\",\\n\")\n\t}\n\tif this.MapEntry != nil {\n\t\ts = append(s, \"MapEntry: \"+valueToGoStringDescriptor(this.MapEntry, \"bool\")+\",\\n\")\n\t}\n\tif this.UninterpretedOption != nil {\n\t\ts = append(s, \"UninterpretedOption: \"+fmt.Sprintf(\"%#v\", this.UninterpretedOption)+\",\\n\")\n\t}\n\ts = append(s, \"XXX_InternalExtensions: \"+extensionToGoStringDescriptor(this)+\",\\n\")\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *FieldOptions) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 11)\n\ts = append(s, \"&descriptor.FieldOptions{\")\n\tif this.Ctype != nil {\n\t\ts = append(s, \"Ctype: \"+valueToGoStringDescriptor(this.Ctype, \"FieldOptions_CType\")+\",\\n\")\n\t}\n\tif this.Packed != nil {\n\t\ts = append(s, \"Packed: \"+valueToGoStringDescriptor(this.Packed, \"bool\")+\",\\n\")\n\t}\n\tif this.Jstype != nil {\n\t\ts = append(s, \"Jstype: \"+valueToGoStringDescriptor(this.Jstype, \"FieldOptions_JSType\")+\",\\n\")\n\t}\n\tif this.Lazy != nil {\n\t\ts = append(s, \"Lazy: \"+valueToGoStringDescriptor(this.Lazy, \"bool\")+\",\\n\")\n\t}\n\tif this.Deprecated != nil {\n\t\ts = append(s, \"Deprecated: \"+valueToGoStringDescriptor(this.Deprecated, \"bool\")+\",\\n\")\n\t}\n\tif this.Weak != nil {\n\t\ts = append(s, \"Weak: \"+valueToGoStringDescriptor(this.Weak, \"bool\")+\",\\n\")\n\t}\n\tif this.UninterpretedOption != nil {\n\t\ts = append(s, \"UninterpretedOption: \"+fmt.Sprintf(\"%#v\", this.UninterpretedOption)+\",\\n\")\n\t}\n\ts = append(s, \"XXX_InternalExtensions: \"+extensionToGoStringDescriptor(this)+\",\\n\")\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *OneofOptions) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 5)\n\ts = append(s, \"&descriptor.OneofOptions{\")\n\tif this.UninterpretedOption != nil {\n\t\ts = append(s, \"UninterpretedOption: \"+fmt.Sprintf(\"%#v\", this.UninterpretedOption)+\",\\n\")\n\t}\n\ts = append(s, \"XXX_InternalExtensions: \"+extensionToGoStringDescriptor(this)+\",\\n\")\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *EnumOptions) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 7)\n\ts = append(s, \"&descriptor.EnumOptions{\")\n\tif this.AllowAlias != nil {\n\t\ts = append(s, \"AllowAlias: \"+valueToGoStringDescriptor(this.AllowAlias, \"bool\")+\",\\n\")\n\t}\n\tif this.Deprecated != nil {\n\t\ts = append(s, \"Deprecated: \"+valueToGoStringDescriptor(this.Deprecated, \"bool\")+\",\\n\")\n\t}\n\tif this.UninterpretedOption != nil {\n\t\ts = append(s, \"UninterpretedOption: \"+fmt.Sprintf(\"%#v\", this.UninterpretedOption)+\",\\n\")\n\t}\n\ts = append(s, \"XXX_InternalExtensions: \"+extensionToGoStringDescriptor(this)+\",\\n\")\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *EnumValueOptions) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 6)\n\ts = append(s, \"&descriptor.EnumValueOptions{\")\n\tif this.Deprecated != nil {\n\t\ts = append(s, \"Deprecated: \"+valueToGoStringDescriptor(this.Deprecated, \"bool\")+\",\\n\")\n\t}\n\tif this.UninterpretedOption != nil {\n\t\ts = append(s, \"UninterpretedOption: \"+fmt.Sprintf(\"%#v\", this.UninterpretedOption)+\",\\n\")\n\t}\n\ts = append(s, \"XXX_InternalExtensions: \"+extensionToGoStringDescriptor(this)+\",\\n\")\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *ServiceOptions) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 6)\n\ts = append(s, \"&descriptor.ServiceOptions{\")\n\tif this.Deprecated != nil {\n\t\ts = append(s, \"Deprecated: \"+valueToGoStringDescriptor(this.Deprecated, \"bool\")+\",\\n\")\n\t}\n\tif this.UninterpretedOption != nil {\n\t\ts = append(s, \"UninterpretedOption: \"+fmt.Sprintf(\"%#v\", this.UninterpretedOption)+\",\\n\")\n\t}\n\ts = append(s, \"XXX_InternalExtensions: \"+extensionToGoStringDescriptor(this)+\",\\n\")\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *MethodOptions) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 7)\n\ts = append(s, \"&descriptor.MethodOptions{\")\n\tif this.Deprecated != nil {\n\t\ts = append(s, \"Deprecated: \"+valueToGoStringDescriptor(this.Deprecated, \"bool\")+\",\\n\")\n\t}\n\tif this.IdempotencyLevel != nil {\n\t\ts = append(s, \"IdempotencyLevel: \"+valueToGoStringDescriptor(this.IdempotencyLevel, \"MethodOptions_IdempotencyLevel\")+\",\\n\")\n\t}\n\tif this.UninterpretedOption != nil {\n\t\ts = append(s, \"UninterpretedOption: \"+fmt.Sprintf(\"%#v\", this.UninterpretedOption)+\",\\n\")\n\t}\n\ts = append(s, \"XXX_InternalExtensions: \"+extensionToGoStringDescriptor(this)+\",\\n\")\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *UninterpretedOption) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 11)\n\ts = append(s, \"&descriptor.UninterpretedOption{\")\n\tif this.Name != nil {\n\t\ts = append(s, \"Name: \"+fmt.Sprintf(\"%#v\", this.Name)+\",\\n\")\n\t}\n\tif this.IdentifierValue != nil {\n\t\ts = append(s, \"IdentifierValue: \"+valueToGoStringDescriptor(this.IdentifierValue, \"string\")+\",\\n\")\n\t}\n\tif this.PositiveIntValue != nil {\n\t\ts = append(s, \"PositiveIntValue: \"+valueToGoStringDescriptor(this.PositiveIntValue, \"uint64\")+\",\\n\")\n\t}\n\tif this.NegativeIntValue != nil {\n\t\ts = append(s, \"NegativeIntValue: \"+valueToGoStringDescriptor(this.NegativeIntValue, \"int64\")+\",\\n\")\n\t}\n\tif this.DoubleValue != nil {\n\t\ts = append(s, \"DoubleValue: \"+valueToGoStringDescriptor(this.DoubleValue, \"float64\")+\",\\n\")\n\t}\n\tif this.StringValue != nil {\n\t\ts = append(s, \"StringValue: \"+valueToGoStringDescriptor(this.StringValue, \"byte\")+\",\\n\")\n\t}\n\tif this.AggregateValue != nil {\n\t\ts = append(s, \"AggregateValue: \"+valueToGoStringDescriptor(this.AggregateValue, \"string\")+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *UninterpretedOption_NamePart) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 6)\n\ts = append(s, \"&descriptor.UninterpretedOption_NamePart{\")\n\tif this.NamePart != nil {\n\t\ts = append(s, \"NamePart: \"+valueToGoStringDescriptor(this.NamePart, \"string\")+\",\\n\")\n\t}\n\tif this.IsExtension != nil {\n\t\ts = append(s, \"IsExtension: \"+valueToGoStringDescriptor(this.IsExtension, \"bool\")+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *SourceCodeInfo) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 5)\n\ts = append(s, \"&descriptor.SourceCodeInfo{\")\n\tif this.Location != nil {\n\t\ts = append(s, \"Location: \"+fmt.Sprintf(\"%#v\", this.Location)+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *SourceCodeInfo_Location) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 9)\n\ts = append(s, \"&descriptor.SourceCodeInfo_Location{\")\n\tif this.Path != nil {\n\t\ts = append(s, \"Path: \"+fmt.Sprintf(\"%#v\", this.Path)+\",\\n\")\n\t}\n\tif this.Span != nil {\n\t\ts = append(s, \"Span: \"+fmt.Sprintf(\"%#v\", this.Span)+\",\\n\")\n\t}\n\tif this.LeadingComments != nil {\n\t\ts = append(s, \"LeadingComments: \"+valueToGoStringDescriptor(this.LeadingComments, \"string\")+\",\\n\")\n\t}\n\tif this.TrailingComments != nil {\n\t\ts = append(s, \"TrailingComments: \"+valueToGoStringDescriptor(this.TrailingComments, \"string\")+\",\\n\")\n\t}\n\tif this.LeadingDetachedComments != nil {\n\t\ts = append(s, \"LeadingDetachedComments: \"+fmt.Sprintf(\"%#v\", this.LeadingDetachedComments)+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *GeneratedCodeInfo) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 5)\n\ts = append(s, \"&descriptor.GeneratedCodeInfo{\")\n\tif this.Annotation != nil {\n\t\ts = append(s, \"Annotation: \"+fmt.Sprintf(\"%#v\", this.Annotation)+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc (this *GeneratedCodeInfo_Annotation) GoString() string {\n\tif this == nil {\n\t\treturn \"nil\"\n\t}\n\ts := make([]string, 0, 8)\n\ts = append(s, \"&descriptor.GeneratedCodeInfo_Annotation{\")\n\tif this.Path != nil {\n\t\ts = append(s, \"Path: \"+fmt.Sprintf(\"%#v\", this.Path)+\",\\n\")\n\t}\n\tif this.SourceFile != nil {\n\t\ts = append(s, \"SourceFile: \"+valueToGoStringDescriptor(this.SourceFile, \"string\")+\",\\n\")\n\t}\n\tif this.Begin != nil {\n\t\ts = append(s, \"Begin: \"+valueToGoStringDescriptor(this.Begin, \"int32\")+\",\\n\")\n\t}\n\tif this.End != nil {\n\t\ts = append(s, \"End: \"+valueToGoStringDescriptor(this.End, \"int32\")+\",\\n\")\n\t}\n\tif this.XXX_unrecognized != nil {\n\t\ts = append(s, \"XXX_unrecognized:\"+fmt.Sprintf(\"%#v\", this.XXX_unrecognized)+\",\\n\")\n\t}\n\ts = append(s, \"}\")\n\treturn strings.Join(s, \"\")\n}\nfunc valueToGoStringDescriptor(v interface{}, typ string) string {\n\trv := reflect.ValueOf(v)\n\tif rv.IsNil() {\n\t\treturn \"nil\"\n\t}\n\tpv := reflect.Indirect(rv).Interface()\n\treturn fmt.Sprintf(\"func(v %v) *%v { return &v } ( %#v )\", typ, typ, pv)\n}\nfunc extensionToGoStringDescriptor(m github_com_gogo_protobuf_proto.Message) string {\n\te := github_com_gogo_protobuf_proto.GetUnsafeExtensionsMap(m)\n\tif e == nil {\n\t\treturn \"nil\"\n\t}\n\ts := \"proto.NewUnsafeXXX_InternalExtensions(map[int32]proto.Extension{\"\n\tkeys := make([]int, 0, len(e))\n\tfor k := range e {\n\t\tkeys = append(keys, int(k))\n\t}\n\tsort.Ints(keys)\n\tss := []string{}\n\tfor _, k := range keys {\n\t\tss = append(ss, strconv.Itoa(k)+\": \"+e[int32(k)].GoString())\n\t}\n\ts += strings.Join(ss, \",\") + \"})\"\n\treturn s\n}\n"
  },
  {
    "path": "vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/helper.go",
    "content": "// Protocol Buffers for Go with Gadgets\n//\n// Copyright (c) 2013, The GoGo Authors. All rights reserved.\n// http://github.com/gogo/protobuf\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\npackage descriptor\n\nimport (\n\t\"strings\"\n)\n\nfunc (msg *DescriptorProto) GetMapFields() (*FieldDescriptorProto, *FieldDescriptorProto) {\n\tif !msg.GetOptions().GetMapEntry() {\n\t\treturn nil, nil\n\t}\n\treturn msg.GetField()[0], msg.GetField()[1]\n}\n\nfunc dotToUnderscore(r rune) rune {\n\tif r == '.' {\n\t\treturn '_'\n\t}\n\treturn r\n}\n\nfunc (field *FieldDescriptorProto) WireType() (wire int) {\n\tswitch *field.Type {\n\tcase FieldDescriptorProto_TYPE_DOUBLE:\n\t\treturn 1\n\tcase FieldDescriptorProto_TYPE_FLOAT:\n\t\treturn 5\n\tcase FieldDescriptorProto_TYPE_INT64:\n\t\treturn 0\n\tcase FieldDescriptorProto_TYPE_UINT64:\n\t\treturn 0\n\tcase FieldDescriptorProto_TYPE_INT32:\n\t\treturn 0\n\tcase FieldDescriptorProto_TYPE_UINT32:\n\t\treturn 0\n\tcase FieldDescriptorProto_TYPE_FIXED64:\n\t\treturn 1\n\tcase FieldDescriptorProto_TYPE_FIXED32:\n\t\treturn 5\n\tcase FieldDescriptorProto_TYPE_BOOL:\n\t\treturn 0\n\tcase FieldDescriptorProto_TYPE_STRING:\n\t\treturn 2\n\tcase FieldDescriptorProto_TYPE_GROUP:\n\t\treturn 2\n\tcase FieldDescriptorProto_TYPE_MESSAGE:\n\t\treturn 2\n\tcase FieldDescriptorProto_TYPE_BYTES:\n\t\treturn 2\n\tcase FieldDescriptorProto_TYPE_ENUM:\n\t\treturn 0\n\tcase FieldDescriptorProto_TYPE_SFIXED32:\n\t\treturn 5\n\tcase FieldDescriptorProto_TYPE_SFIXED64:\n\t\treturn 1\n\tcase FieldDescriptorProto_TYPE_SINT32:\n\t\treturn 0\n\tcase FieldDescriptorProto_TYPE_SINT64:\n\t\treturn 0\n\t}\n\tpanic(\"unreachable\")\n}\n\nfunc (field *FieldDescriptorProto) GetKeyUint64() (x uint64) {\n\tpacked := field.IsPacked()\n\twireType := field.WireType()\n\tfieldNumber := field.GetNumber()\n\tif packed {\n\t\twireType = 2\n\t}\n\tx = uint64(uint32(fieldNumber)<<3 | uint32(wireType))\n\treturn x\n}\n\nfunc (field *FieldDescriptorProto) GetKey3Uint64() (x uint64) {\n\tpacked := field.IsPacked3()\n\twireType := field.WireType()\n\tfieldNumber := field.GetNumber()\n\tif packed {\n\t\twireType = 2\n\t}\n\tx = uint64(uint32(fieldNumber)<<3 | uint32(wireType))\n\treturn x\n}\n\nfunc (field *FieldDescriptorProto) GetKey() []byte {\n\tx := field.GetKeyUint64()\n\ti := 0\n\tkeybuf := make([]byte, 0)\n\tfor i = 0; x > 127; i++ {\n\t\tkeybuf = append(keybuf, 0x80|uint8(x&0x7F))\n\t\tx >>= 7\n\t}\n\tkeybuf = append(keybuf, uint8(x))\n\treturn keybuf\n}\n\nfunc (field *FieldDescriptorProto) GetKey3() []byte {\n\tx := field.GetKey3Uint64()\n\ti := 0\n\tkeybuf := make([]byte, 0)\n\tfor i = 0; x > 127; i++ {\n\t\tkeybuf = append(keybuf, 0x80|uint8(x&0x7F))\n\t\tx >>= 7\n\t}\n\tkeybuf = append(keybuf, uint8(x))\n\treturn keybuf\n}\n\nfunc (desc *FileDescriptorSet) GetField(packageName, messageName, fieldName string) *FieldDescriptorProto {\n\tmsg := desc.GetMessage(packageName, messageName)\n\tif msg == nil {\n\t\treturn nil\n\t}\n\tfor _, field := range msg.GetField() {\n\t\tif field.GetName() == fieldName {\n\t\t\treturn field\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (file *FileDescriptorProto) GetMessage(typeName string) *DescriptorProto {\n\tfor _, msg := range file.GetMessageType() {\n\t\tif msg.GetName() == typeName {\n\t\t\treturn msg\n\t\t}\n\t\tnes := file.GetNestedMessage(msg, strings.TrimPrefix(typeName, msg.GetName()+\".\"))\n\t\tif nes != nil {\n\t\t\treturn nes\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (file *FileDescriptorProto) GetNestedMessage(msg *DescriptorProto, typeName string) *DescriptorProto {\n\tfor _, nes := range msg.GetNestedType() {\n\t\tif nes.GetName() == typeName {\n\t\t\treturn nes\n\t\t}\n\t\tres := file.GetNestedMessage(nes, strings.TrimPrefix(typeName, nes.GetName()+\".\"))\n\t\tif res != nil {\n\t\t\treturn res\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (desc *FileDescriptorSet) GetMessage(packageName string, typeName string) *DescriptorProto {\n\tfor _, file := range desc.GetFile() {\n\t\tif strings.Map(dotToUnderscore, file.GetPackage()) != strings.Map(dotToUnderscore, packageName) {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, msg := range file.GetMessageType() {\n\t\t\tif msg.GetName() == typeName {\n\t\t\t\treturn msg\n\t\t\t}\n\t\t}\n\t\tfor _, msg := range file.GetMessageType() {\n\t\t\tfor _, nes := range msg.GetNestedType() {\n\t\t\t\tif nes.GetName() == typeName {\n\t\t\t\t\treturn nes\n\t\t\t\t}\n\t\t\t\tif msg.GetName()+\".\"+nes.GetName() == typeName {\n\t\t\t\t\treturn nes\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (desc *FileDescriptorSet) IsProto3(packageName string, typeName string) bool {\n\tfor _, file := range desc.GetFile() {\n\t\tif strings.Map(dotToUnderscore, file.GetPackage()) != strings.Map(dotToUnderscore, packageName) {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, msg := range file.GetMessageType() {\n\t\t\tif msg.GetName() == typeName {\n\t\t\t\treturn file.GetSyntax() == \"proto3\"\n\t\t\t}\n\t\t}\n\t\tfor _, msg := range file.GetMessageType() {\n\t\t\tfor _, nes := range msg.GetNestedType() {\n\t\t\t\tif nes.GetName() == typeName {\n\t\t\t\t\treturn file.GetSyntax() == \"proto3\"\n\t\t\t\t}\n\t\t\t\tif msg.GetName()+\".\"+nes.GetName() == typeName {\n\t\t\t\t\treturn file.GetSyntax() == \"proto3\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (msg *DescriptorProto) IsExtendable() bool {\n\treturn len(msg.GetExtensionRange()) > 0\n}\n\nfunc (desc *FileDescriptorSet) FindExtension(packageName string, typeName string, fieldName string) (extPackageName string, field *FieldDescriptorProto) {\n\tparent := desc.GetMessage(packageName, typeName)\n\tif parent == nil {\n\t\treturn \"\", nil\n\t}\n\tif !parent.IsExtendable() {\n\t\treturn \"\", nil\n\t}\n\textendee := \".\" + packageName + \".\" + typeName\n\tfor _, file := range desc.GetFile() {\n\t\tfor _, ext := range file.GetExtension() {\n\t\t\tif strings.Map(dotToUnderscore, file.GetPackage()) == strings.Map(dotToUnderscore, packageName) {\n\t\t\t\tif !(ext.GetExtendee() == typeName || ext.GetExtendee() == extendee) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ext.GetExtendee() != extendee {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ext.GetName() == fieldName {\n\t\t\t\treturn file.GetPackage(), ext\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\", nil\n}\n\nfunc (desc *FileDescriptorSet) FindExtensionByFieldNumber(packageName string, typeName string, fieldNum int32) (extPackageName string, field *FieldDescriptorProto) {\n\tparent := desc.GetMessage(packageName, typeName)\n\tif parent == nil {\n\t\treturn \"\", nil\n\t}\n\tif !parent.IsExtendable() {\n\t\treturn \"\", nil\n\t}\n\textendee := \".\" + packageName + \".\" + typeName\n\tfor _, file := range desc.GetFile() {\n\t\tfor _, ext := range file.GetExtension() {\n\t\t\tif strings.Map(dotToUnderscore, file.GetPackage()) == strings.Map(dotToUnderscore, packageName) {\n\t\t\t\tif !(ext.GetExtendee() == typeName || ext.GetExtendee() == extendee) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ext.GetExtendee() != extendee {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ext.GetNumber() == fieldNum {\n\t\t\t\treturn file.GetPackage(), ext\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\", nil\n}\n\nfunc (desc *FileDescriptorSet) FindMessage(packageName string, typeName string, fieldName string) (msgPackageName string, msgName string) {\n\tparent := desc.GetMessage(packageName, typeName)\n\tif parent == nil {\n\t\treturn \"\", \"\"\n\t}\n\tfield := parent.GetFieldDescriptor(fieldName)\n\tif field == nil {\n\t\tvar extPackageName string\n\t\textPackageName, field = desc.FindExtension(packageName, typeName, fieldName)\n\t\tif field == nil {\n\t\t\treturn \"\", \"\"\n\t\t}\n\t\tpackageName = extPackageName\n\t}\n\ttypeNames := strings.Split(field.GetTypeName(), \".\")\n\tif len(typeNames) == 1 {\n\t\tmsg := desc.GetMessage(packageName, typeName)\n\t\tif msg == nil {\n\t\t\treturn \"\", \"\"\n\t\t}\n\t\treturn packageName, msg.GetName()\n\t}\n\tif len(typeNames) > 2 {\n\t\tfor i := 1; i < len(typeNames)-1; i++ {\n\t\t\tpackageName = strings.Join(typeNames[1:len(typeNames)-i], \".\")\n\t\t\ttypeName = strings.Join(typeNames[len(typeNames)-i:], \".\")\n\t\t\tmsg := desc.GetMessage(packageName, typeName)\n\t\t\tif msg != nil {\n\t\t\t\ttypeNames := strings.Split(msg.GetName(), \".\")\n\t\t\t\tif len(typeNames) == 1 {\n\t\t\t\t\treturn packageName, msg.GetName()\n\t\t\t\t}\n\t\t\t\treturn strings.Join(typeNames[1:len(typeNames)-1], \".\"), typeNames[len(typeNames)-1]\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\", \"\"\n}\n\nfunc (msg *DescriptorProto) GetFieldDescriptor(fieldName string) *FieldDescriptorProto {\n\tfor _, field := range msg.GetField() {\n\t\tif field.GetName() == fieldName {\n\t\t\treturn field\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (desc *FileDescriptorSet) GetEnum(packageName string, typeName string) *EnumDescriptorProto {\n\tfor _, file := range desc.GetFile() {\n\t\tif strings.Map(dotToUnderscore, file.GetPackage()) != strings.Map(dotToUnderscore, packageName) {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, enum := range file.GetEnumType() {\n\t\t\tif enum.GetName() == typeName {\n\t\t\t\treturn enum\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (f *FieldDescriptorProto) IsEnum() bool {\n\treturn *f.Type == FieldDescriptorProto_TYPE_ENUM\n}\n\nfunc (f *FieldDescriptorProto) IsMessage() bool {\n\treturn *f.Type == FieldDescriptorProto_TYPE_MESSAGE\n}\n\nfunc (f *FieldDescriptorProto) IsBytes() bool {\n\treturn *f.Type == FieldDescriptorProto_TYPE_BYTES\n}\n\nfunc (f *FieldDescriptorProto) IsRepeated() bool {\n\treturn f.Label != nil && *f.Label == FieldDescriptorProto_LABEL_REPEATED\n}\n\nfunc (f *FieldDescriptorProto) IsString() bool {\n\treturn *f.Type == FieldDescriptorProto_TYPE_STRING\n}\n\nfunc (f *FieldDescriptorProto) IsBool() bool {\n\treturn *f.Type == FieldDescriptorProto_TYPE_BOOL\n}\n\nfunc (f *FieldDescriptorProto) IsRequired() bool {\n\treturn f.Label != nil && *f.Label == FieldDescriptorProto_LABEL_REQUIRED\n}\n\nfunc (f *FieldDescriptorProto) IsPacked() bool {\n\treturn f.Options != nil && f.GetOptions().GetPacked()\n}\n\nfunc (f *FieldDescriptorProto) IsPacked3() bool {\n\tif f.IsRepeated() && f.IsScalar() {\n\t\tif f.Options == nil || f.GetOptions().Packed == nil {\n\t\t\treturn true\n\t\t}\n\t\treturn f.Options != nil && f.GetOptions().GetPacked()\n\t}\n\treturn false\n}\n\nfunc (m *DescriptorProto) HasExtension() bool {\n\treturn len(m.ExtensionRange) > 0\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/AUTHORS",
    "content": "# This source code refers to The Go Authors for copyright purposes.\n# The master list of authors is in the main Go distribution,\n# visible at http://tip.golang.org/AUTHORS.\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/CONTRIBUTORS",
    "content": "# This source code was written by the Go contributors.\n# The master list of contributors is in the main Go distribution,\n# visible at http://tip.golang.org/CONTRIBUTORS.\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/LICENSE",
    "content": "Copyright 2010 The Go Authors.  All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n    * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n    * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/jsonpb/decode.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 jsonpb\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/golang/protobuf/proto\"\n\t\"google.golang.org/protobuf/encoding/protojson\"\n\tprotoV2 \"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nconst wrapJSONUnmarshalV2 = false\n\n// UnmarshalNext unmarshals the next JSON object from d into m.\nfunc UnmarshalNext(d *json.Decoder, m proto.Message) error {\n\treturn new(Unmarshaler).UnmarshalNext(d, m)\n}\n\n// Unmarshal unmarshals a JSON object from r into m.\nfunc Unmarshal(r io.Reader, m proto.Message) error {\n\treturn new(Unmarshaler).Unmarshal(r, m)\n}\n\n// UnmarshalString unmarshals a JSON object from s into m.\nfunc UnmarshalString(s string, m proto.Message) error {\n\treturn new(Unmarshaler).Unmarshal(strings.NewReader(s), m)\n}\n\n// Unmarshaler is a configurable object for converting from a JSON\n// representation to a protocol buffer object.\ntype Unmarshaler struct {\n\t// AllowUnknownFields specifies whether to allow messages to contain\n\t// unknown JSON fields, as opposed to failing to unmarshal.\n\tAllowUnknownFields bool\n\n\t// AnyResolver is used to resolve the google.protobuf.Any well-known type.\n\t// If unset, the global registry is used by default.\n\tAnyResolver AnyResolver\n}\n\n// JSONPBUnmarshaler is implemented by protobuf messages that customize the way\n// they are unmarshaled from JSON. Messages that implement this should also\n// implement JSONPBMarshaler so that the custom format can be produced.\n//\n// The JSON unmarshaling must follow the JSON to proto specification:\n//\thttps://developers.google.com/protocol-buffers/docs/proto3#json\n//\n// Deprecated: Custom types should implement protobuf reflection instead.\ntype JSONPBUnmarshaler interface {\n\tUnmarshalJSONPB(*Unmarshaler, []byte) error\n}\n\n// Unmarshal unmarshals a JSON object from r into m.\nfunc (u *Unmarshaler) Unmarshal(r io.Reader, m proto.Message) error {\n\treturn u.UnmarshalNext(json.NewDecoder(r), m)\n}\n\n// UnmarshalNext unmarshals the next JSON object from d into m.\nfunc (u *Unmarshaler) UnmarshalNext(d *json.Decoder, m proto.Message) error {\n\tif m == nil {\n\t\treturn errors.New(\"invalid nil message\")\n\t}\n\n\t// Parse the next JSON object from the stream.\n\traw := json.RawMessage{}\n\tif err := d.Decode(&raw); err != nil {\n\t\treturn err\n\t}\n\n\t// Check for custom unmarshalers first since they may not properly\n\t// implement protobuf reflection that the logic below relies on.\n\tif jsu, ok := m.(JSONPBUnmarshaler); ok {\n\t\treturn jsu.UnmarshalJSONPB(u, raw)\n\t}\n\n\tmr := proto.MessageReflect(m)\n\n\t// NOTE: For historical reasons, a top-level null is treated as a noop.\n\t// This is incorrect, but kept for compatibility.\n\tif string(raw) == \"null\" && mr.Descriptor().FullName() != \"google.protobuf.Value\" {\n\t\treturn nil\n\t}\n\n\tif wrapJSONUnmarshalV2 {\n\t\t// NOTE: If input message is non-empty, we need to preserve merge semantics\n\t\t// of the old jsonpb implementation. These semantics are not supported by\n\t\t// the protobuf JSON specification.\n\t\tisEmpty := true\n\t\tmr.Range(func(protoreflect.FieldDescriptor, protoreflect.Value) bool {\n\t\t\tisEmpty = false // at least one iteration implies non-empty\n\t\t\treturn false\n\t\t})\n\t\tif !isEmpty {\n\t\t\t// Perform unmarshaling into a newly allocated, empty message.\n\t\t\tmr = mr.New()\n\n\t\t\t// Use a defer to copy all unmarshaled fields into the original message.\n\t\t\tdst := proto.MessageReflect(m)\n\t\t\tdefer mr.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\t\t\tdst.Set(fd, v)\n\t\t\t\treturn true\n\t\t\t})\n\t\t}\n\n\t\t// Unmarshal using the v2 JSON unmarshaler.\n\t\topts := protojson.UnmarshalOptions{\n\t\t\tDiscardUnknown: u.AllowUnknownFields,\n\t\t}\n\t\tif u.AnyResolver != nil {\n\t\t\topts.Resolver = anyResolver{u.AnyResolver}\n\t\t}\n\t\treturn opts.Unmarshal(raw, mr.Interface())\n\t} else {\n\t\tif err := u.unmarshalMessage(mr, raw); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn protoV2.CheckInitialized(mr.Interface())\n\t}\n}\n\nfunc (u *Unmarshaler) unmarshalMessage(m protoreflect.Message, in []byte) error {\n\tmd := m.Descriptor()\n\tfds := md.Fields()\n\n\tif jsu, ok := proto.MessageV1(m.Interface()).(JSONPBUnmarshaler); ok {\n\t\treturn jsu.UnmarshalJSONPB(u, in)\n\t}\n\n\tif string(in) == \"null\" && md.FullName() != \"google.protobuf.Value\" {\n\t\treturn nil\n\t}\n\n\tswitch wellKnownType(md.FullName()) {\n\tcase \"Any\":\n\t\tvar jsonObject map[string]json.RawMessage\n\t\tif err := json.Unmarshal(in, &jsonObject); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\trawTypeURL, ok := jsonObject[\"@type\"]\n\t\tif !ok {\n\t\t\treturn errors.New(\"Any JSON doesn't have '@type'\")\n\t\t}\n\t\ttypeURL, err := unquoteString(string(rawTypeURL))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"can't unmarshal Any's '@type': %q\", rawTypeURL)\n\t\t}\n\t\tm.Set(fds.ByNumber(1), protoreflect.ValueOfString(typeURL))\n\n\t\tvar m2 protoreflect.Message\n\t\tif u.AnyResolver != nil {\n\t\t\tmi, err := u.AnyResolver.Resolve(typeURL)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm2 = proto.MessageReflect(mi)\n\t\t} else {\n\t\t\tmt, err := protoregistry.GlobalTypes.FindMessageByURL(typeURL)\n\t\t\tif err != nil {\n\t\t\t\tif err == protoregistry.NotFound {\n\t\t\t\t\treturn fmt.Errorf(\"could not resolve Any message type: %v\", typeURL)\n\t\t\t\t}\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm2 = mt.New()\n\t\t}\n\n\t\tif wellKnownType(m2.Descriptor().FullName()) != \"\" {\n\t\t\trawValue, ok := jsonObject[\"value\"]\n\t\t\tif !ok {\n\t\t\t\treturn errors.New(\"Any JSON doesn't have 'value'\")\n\t\t\t}\n\t\t\tif err := u.unmarshalMessage(m2, rawValue); err != nil {\n\t\t\t\treturn fmt.Errorf(\"can't unmarshal Any nested proto %v: %v\", typeURL, err)\n\t\t\t}\n\t\t} else {\n\t\t\tdelete(jsonObject, \"@type\")\n\t\t\trawJSON, err := json.Marshal(jsonObject)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"can't generate JSON for Any's nested proto to be unmarshaled: %v\", err)\n\t\t\t}\n\t\t\tif err = u.unmarshalMessage(m2, rawJSON); err != nil {\n\t\t\t\treturn fmt.Errorf(\"can't unmarshal Any nested proto %v: %v\", typeURL, err)\n\t\t\t}\n\t\t}\n\n\t\trawWire, err := protoV2.Marshal(m2.Interface())\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"can't marshal proto %v into Any.Value: %v\", typeURL, err)\n\t\t}\n\t\tm.Set(fds.ByNumber(2), protoreflect.ValueOfBytes(rawWire))\n\t\treturn nil\n\tcase \"BoolValue\", \"BytesValue\", \"StringValue\",\n\t\t\"Int32Value\", \"UInt32Value\", \"FloatValue\",\n\t\t\"Int64Value\", \"UInt64Value\", \"DoubleValue\":\n\t\tfd := fds.ByNumber(1)\n\t\tv, err := u.unmarshalValue(m.NewField(fd), in, fd)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tm.Set(fd, v)\n\t\treturn nil\n\tcase \"Duration\":\n\t\tv, err := unquoteString(string(in))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\td, err := time.ParseDuration(v)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"bad Duration: %v\", err)\n\t\t}\n\n\t\tsec := d.Nanoseconds() / 1e9\n\t\tnsec := d.Nanoseconds() % 1e9\n\t\tm.Set(fds.ByNumber(1), protoreflect.ValueOfInt64(int64(sec)))\n\t\tm.Set(fds.ByNumber(2), protoreflect.ValueOfInt32(int32(nsec)))\n\t\treturn nil\n\tcase \"Timestamp\":\n\t\tv, err := unquoteString(string(in))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tt, err := time.Parse(time.RFC3339Nano, v)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"bad Timestamp: %v\", err)\n\t\t}\n\n\t\tsec := t.Unix()\n\t\tnsec := t.Nanosecond()\n\t\tm.Set(fds.ByNumber(1), protoreflect.ValueOfInt64(int64(sec)))\n\t\tm.Set(fds.ByNumber(2), protoreflect.ValueOfInt32(int32(nsec)))\n\t\treturn nil\n\tcase \"Value\":\n\t\tswitch {\n\t\tcase string(in) == \"null\":\n\t\t\tm.Set(fds.ByNumber(1), protoreflect.ValueOfEnum(0))\n\t\tcase string(in) == \"true\":\n\t\t\tm.Set(fds.ByNumber(4), protoreflect.ValueOfBool(true))\n\t\tcase string(in) == \"false\":\n\t\t\tm.Set(fds.ByNumber(4), protoreflect.ValueOfBool(false))\n\t\tcase hasPrefixAndSuffix('\"', in, '\"'):\n\t\t\ts, err := unquoteString(string(in))\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"unrecognized type for Value %q\", in)\n\t\t\t}\n\t\t\tm.Set(fds.ByNumber(3), protoreflect.ValueOfString(s))\n\t\tcase hasPrefixAndSuffix('[', in, ']'):\n\t\t\tv := m.Mutable(fds.ByNumber(6))\n\t\t\treturn u.unmarshalMessage(v.Message(), in)\n\t\tcase hasPrefixAndSuffix('{', in, '}'):\n\t\t\tv := m.Mutable(fds.ByNumber(5))\n\t\t\treturn u.unmarshalMessage(v.Message(), in)\n\t\tdefault:\n\t\t\tf, err := strconv.ParseFloat(string(in), 0)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"unrecognized type for Value %q\", in)\n\t\t\t}\n\t\t\tm.Set(fds.ByNumber(2), protoreflect.ValueOfFloat64(f))\n\t\t}\n\t\treturn nil\n\tcase \"ListValue\":\n\t\tvar jsonArray []json.RawMessage\n\t\tif err := json.Unmarshal(in, &jsonArray); err != nil {\n\t\t\treturn fmt.Errorf(\"bad ListValue: %v\", err)\n\t\t}\n\n\t\tlv := m.Mutable(fds.ByNumber(1)).List()\n\t\tfor _, raw := range jsonArray {\n\t\t\tve := lv.NewElement()\n\t\t\tif err := u.unmarshalMessage(ve.Message(), raw); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tlv.Append(ve)\n\t\t}\n\t\treturn nil\n\tcase \"Struct\":\n\t\tvar jsonObject map[string]json.RawMessage\n\t\tif err := json.Unmarshal(in, &jsonObject); err != nil {\n\t\t\treturn fmt.Errorf(\"bad StructValue: %v\", err)\n\t\t}\n\n\t\tmv := m.Mutable(fds.ByNumber(1)).Map()\n\t\tfor key, raw := range jsonObject {\n\t\t\tkv := protoreflect.ValueOf(key).MapKey()\n\t\t\tvv := mv.NewValue()\n\t\t\tif err := u.unmarshalMessage(vv.Message(), raw); err != nil {\n\t\t\t\treturn fmt.Errorf(\"bad value in StructValue for key %q: %v\", key, err)\n\t\t\t}\n\t\t\tmv.Set(kv, vv)\n\t\t}\n\t\treturn nil\n\t}\n\n\tvar jsonObject map[string]json.RawMessage\n\tif err := json.Unmarshal(in, &jsonObject); err != nil {\n\t\treturn err\n\t}\n\n\t// Handle known fields.\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tfd := fds.Get(i)\n\t\tif fd.IsWeak() && fd.Message().IsPlaceholder() {\n\t\t\tcontinue //  weak reference is not linked in\n\t\t}\n\n\t\t// Search for any raw JSON value associated with this field.\n\t\tvar raw json.RawMessage\n\t\tname := string(fd.Name())\n\t\tif fd.Kind() == protoreflect.GroupKind {\n\t\t\tname = string(fd.Message().Name())\n\t\t}\n\t\tif v, ok := jsonObject[name]; ok {\n\t\t\tdelete(jsonObject, name)\n\t\t\traw = v\n\t\t}\n\t\tname = string(fd.JSONName())\n\t\tif v, ok := jsonObject[name]; ok {\n\t\t\tdelete(jsonObject, name)\n\t\t\traw = v\n\t\t}\n\n\t\tfield := m.NewField(fd)\n\t\t// Unmarshal the field value.\n\t\tif raw == nil || (string(raw) == \"null\" && !isSingularWellKnownValue(fd) && !isSingularJSONPBUnmarshaler(field, fd)) {\n\t\t\tcontinue\n\t\t}\n\t\tv, err := u.unmarshalValue(field, raw, fd)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tm.Set(fd, v)\n\t}\n\n\t// Handle extension fields.\n\tfor name, raw := range jsonObject {\n\t\tif !strings.HasPrefix(name, \"[\") || !strings.HasSuffix(name, \"]\") {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Resolve the extension field by name.\n\t\txname := protoreflect.FullName(name[len(\"[\") : len(name)-len(\"]\")])\n\t\txt, _ := protoregistry.GlobalTypes.FindExtensionByName(xname)\n\t\tif xt == nil && isMessageSet(md) {\n\t\t\txt, _ = protoregistry.GlobalTypes.FindExtensionByName(xname.Append(\"message_set_extension\"))\n\t\t}\n\t\tif xt == nil {\n\t\t\tcontinue\n\t\t}\n\t\tdelete(jsonObject, name)\n\t\tfd := xt.TypeDescriptor()\n\t\tif fd.ContainingMessage().FullName() != m.Descriptor().FullName() {\n\t\t\treturn fmt.Errorf(\"extension field %q does not extend message %q\", xname, m.Descriptor().FullName())\n\t\t}\n\n\t\tfield := m.NewField(fd)\n\t\t// Unmarshal the field value.\n\t\tif raw == nil || (string(raw) == \"null\" && !isSingularWellKnownValue(fd) && !isSingularJSONPBUnmarshaler(field, fd)) {\n\t\t\tcontinue\n\t\t}\n\t\tv, err := u.unmarshalValue(field, raw, fd)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tm.Set(fd, v)\n\t}\n\n\tif !u.AllowUnknownFields && len(jsonObject) > 0 {\n\t\tfor name := range jsonObject {\n\t\t\treturn fmt.Errorf(\"unknown field %q in %v\", name, md.FullName())\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc isSingularWellKnownValue(fd protoreflect.FieldDescriptor) bool {\n\tif fd.Cardinality() == protoreflect.Repeated {\n\t\treturn false\n\t}\n\tif md := fd.Message(); md != nil {\n\t\treturn md.FullName() == \"google.protobuf.Value\"\n\t}\n\tif ed := fd.Enum(); ed != nil {\n\t\treturn ed.FullName() == \"google.protobuf.NullValue\"\n\t}\n\treturn false\n}\n\nfunc isSingularJSONPBUnmarshaler(v protoreflect.Value, fd protoreflect.FieldDescriptor) bool {\n\tif fd.Message() != nil && fd.Cardinality() != protoreflect.Repeated {\n\t\t_, ok := proto.MessageV1(v.Interface()).(JSONPBUnmarshaler)\n\t\treturn ok\n\t}\n\treturn false\n}\n\nfunc (u *Unmarshaler) unmarshalValue(v protoreflect.Value, in []byte, fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {\n\tswitch {\n\tcase fd.IsList():\n\t\tvar jsonArray []json.RawMessage\n\t\tif err := json.Unmarshal(in, &jsonArray); err != nil {\n\t\t\treturn v, err\n\t\t}\n\t\tlv := v.List()\n\t\tfor _, raw := range jsonArray {\n\t\t\tve, err := u.unmarshalSingularValue(lv.NewElement(), raw, fd)\n\t\t\tif err != nil {\n\t\t\t\treturn v, err\n\t\t\t}\n\t\t\tlv.Append(ve)\n\t\t}\n\t\treturn v, nil\n\tcase fd.IsMap():\n\t\tvar jsonObject map[string]json.RawMessage\n\t\tif err := json.Unmarshal(in, &jsonObject); err != nil {\n\t\t\treturn v, err\n\t\t}\n\t\tkfd := fd.MapKey()\n\t\tvfd := fd.MapValue()\n\t\tmv := v.Map()\n\t\tfor key, raw := range jsonObject {\n\t\t\tvar kv protoreflect.MapKey\n\t\t\tif kfd.Kind() == protoreflect.StringKind {\n\t\t\t\tkv = protoreflect.ValueOf(key).MapKey()\n\t\t\t} else {\n\t\t\t\tv, err := u.unmarshalSingularValue(kfd.Default(), []byte(key), kfd)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\t\tkv = v.MapKey()\n\t\t\t}\n\n\t\t\tvv, err := u.unmarshalSingularValue(mv.NewValue(), raw, vfd)\n\t\t\tif err != nil {\n\t\t\t\treturn v, err\n\t\t\t}\n\t\t\tmv.Set(kv, vv)\n\t\t}\n\t\treturn v, nil\n\tdefault:\n\t\treturn u.unmarshalSingularValue(v, in, fd)\n\t}\n}\n\nvar nonFinite = map[string]float64{\n\t`\"NaN\"`:       math.NaN(),\n\t`\"Infinity\"`:  math.Inf(+1),\n\t`\"-Infinity\"`: math.Inf(-1),\n}\n\nfunc (u *Unmarshaler) unmarshalSingularValue(v protoreflect.Value, in []byte, fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\treturn unmarshalValue(in, new(bool))\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\treturn unmarshalValue(trimQuote(in), new(int32))\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\treturn unmarshalValue(trimQuote(in), new(int64))\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\treturn unmarshalValue(trimQuote(in), new(uint32))\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\treturn unmarshalValue(trimQuote(in), new(uint64))\n\tcase protoreflect.FloatKind:\n\t\tif f, ok := nonFinite[string(in)]; ok {\n\t\t\treturn protoreflect.ValueOfFloat32(float32(f)), nil\n\t\t}\n\t\treturn unmarshalValue(trimQuote(in), new(float32))\n\tcase protoreflect.DoubleKind:\n\t\tif f, ok := nonFinite[string(in)]; ok {\n\t\t\treturn protoreflect.ValueOfFloat64(float64(f)), nil\n\t\t}\n\t\treturn unmarshalValue(trimQuote(in), new(float64))\n\tcase protoreflect.StringKind:\n\t\treturn unmarshalValue(in, new(string))\n\tcase protoreflect.BytesKind:\n\t\treturn unmarshalValue(in, new([]byte))\n\tcase protoreflect.EnumKind:\n\t\tif hasPrefixAndSuffix('\"', in, '\"') {\n\t\t\tvd := fd.Enum().Values().ByName(protoreflect.Name(trimQuote(in)))\n\t\t\tif vd == nil {\n\t\t\t\treturn v, fmt.Errorf(\"unknown value %q for enum %s\", in, fd.Enum().FullName())\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfEnum(vd.Number()), nil\n\t\t}\n\t\treturn unmarshalValue(in, new(protoreflect.EnumNumber))\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\terr := u.unmarshalMessage(v.Message(), in)\n\t\treturn v, err\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid kind %v\", fd.Kind()))\n\t}\n}\n\nfunc unmarshalValue(in []byte, v interface{}) (protoreflect.Value, error) {\n\terr := json.Unmarshal(in, v)\n\treturn protoreflect.ValueOf(reflect.ValueOf(v).Elem().Interface()), err\n}\n\nfunc unquoteString(in string) (out string, err error) {\n\terr = json.Unmarshal([]byte(in), &out)\n\treturn out, err\n}\n\nfunc hasPrefixAndSuffix(prefix byte, in []byte, suffix byte) bool {\n\tif len(in) >= 2 && in[0] == prefix && in[len(in)-1] == suffix {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// trimQuote is like unquoteString but simply strips surrounding quotes.\n// This is incorrect, but is behavior done by the legacy implementation.\nfunc trimQuote(in []byte) []byte {\n\tif len(in) >= 2 && in[0] == '\"' && in[len(in)-1] == '\"' {\n\t\tin = in[1 : len(in)-1]\n\t}\n\treturn in\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/jsonpb/encode.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 jsonpb\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\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\n\t\"github.com/golang/protobuf/proto\"\n\t\"google.golang.org/protobuf/encoding/protojson\"\n\tprotoV2 \"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nconst wrapJSONMarshalV2 = false\n\n// Marshaler is a configurable object for marshaling protocol buffer messages\n// to the specified JSON representation.\ntype Marshaler struct {\n\t// OrigName specifies whether to use the original protobuf name for fields.\n\tOrigName bool\n\n\t// EnumsAsInts specifies whether to render enum values as integers,\n\t// as opposed to string values.\n\tEnumsAsInts bool\n\n\t// EmitDefaults specifies whether to render fields with zero values.\n\tEmitDefaults bool\n\n\t// Indent controls whether the output is compact or not.\n\t// If empty, the output is compact JSON. Otherwise, every JSON object\n\t// entry and JSON array value will be on its own line.\n\t// Each line will be preceded by repeated copies of Indent, where the\n\t// number of copies is the current indentation depth.\n\tIndent string\n\n\t// AnyResolver is used to resolve the google.protobuf.Any well-known type.\n\t// If unset, the global registry is used by default.\n\tAnyResolver AnyResolver\n}\n\n// JSONPBMarshaler is implemented by protobuf messages that customize the\n// way they are marshaled to JSON. Messages that implement this should also\n// implement JSONPBUnmarshaler so that the custom format can be parsed.\n//\n// The JSON marshaling must follow the proto to JSON specification:\n//\thttps://developers.google.com/protocol-buffers/docs/proto3#json\n//\n// Deprecated: Custom types should implement protobuf reflection instead.\ntype JSONPBMarshaler interface {\n\tMarshalJSONPB(*Marshaler) ([]byte, error)\n}\n\n// Marshal serializes a protobuf message as JSON into w.\nfunc (jm *Marshaler) Marshal(w io.Writer, m proto.Message) error {\n\tb, err := jm.marshal(m)\n\tif len(b) > 0 {\n\t\tif _, err := w.Write(b); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn err\n}\n\n// MarshalToString serializes a protobuf message as JSON in string form.\nfunc (jm *Marshaler) MarshalToString(m proto.Message) (string, error) {\n\tb, err := jm.marshal(m)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn string(b), nil\n}\n\nfunc (jm *Marshaler) marshal(m proto.Message) ([]byte, error) {\n\tv := reflect.ValueOf(m)\n\tif m == nil || (v.Kind() == reflect.Ptr && v.IsNil()) {\n\t\treturn nil, errors.New(\"Marshal called with nil\")\n\t}\n\n\t// Check for custom marshalers first since they may not properly\n\t// implement protobuf reflection that the logic below relies on.\n\tif jsm, ok := m.(JSONPBMarshaler); ok {\n\t\treturn jsm.MarshalJSONPB(jm)\n\t}\n\n\tif wrapJSONMarshalV2 {\n\t\topts := protojson.MarshalOptions{\n\t\t\tUseProtoNames:   jm.OrigName,\n\t\t\tUseEnumNumbers:  jm.EnumsAsInts,\n\t\t\tEmitUnpopulated: jm.EmitDefaults,\n\t\t\tIndent:          jm.Indent,\n\t\t}\n\t\tif jm.AnyResolver != nil {\n\t\t\topts.Resolver = anyResolver{jm.AnyResolver}\n\t\t}\n\t\treturn opts.Marshal(proto.MessageReflect(m).Interface())\n\t} else {\n\t\t// Check for unpopulated required fields first.\n\t\tm2 := proto.MessageReflect(m)\n\t\tif err := protoV2.CheckInitialized(m2.Interface()); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tw := jsonWriter{Marshaler: jm}\n\t\terr := w.marshalMessage(m2, \"\", \"\")\n\t\treturn w.buf, err\n\t}\n}\n\ntype jsonWriter struct {\n\t*Marshaler\n\tbuf []byte\n}\n\nfunc (w *jsonWriter) write(s string) {\n\tw.buf = append(w.buf, s...)\n}\n\nfunc (w *jsonWriter) marshalMessage(m protoreflect.Message, indent, typeURL string) error {\n\tif jsm, ok := proto.MessageV1(m.Interface()).(JSONPBMarshaler); ok {\n\t\tb, err := jsm.MarshalJSONPB(w.Marshaler)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif typeURL != \"\" {\n\t\t\t// we are marshaling this object to an Any type\n\t\t\tvar js map[string]*json.RawMessage\n\t\t\tif err = json.Unmarshal(b, &js); err != nil {\n\t\t\t\treturn fmt.Errorf(\"type %T produced invalid JSON: %v\", m.Interface(), err)\n\t\t\t}\n\t\t\tturl, err := json.Marshal(typeURL)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"failed to marshal type URL %q to JSON: %v\", typeURL, err)\n\t\t\t}\n\t\t\tjs[\"@type\"] = (*json.RawMessage)(&turl)\n\t\t\tif b, err = json.Marshal(js); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tw.write(string(b))\n\t\treturn nil\n\t}\n\n\tmd := m.Descriptor()\n\tfds := md.Fields()\n\n\t// Handle well-known types.\n\tconst secondInNanos = int64(time.Second / time.Nanosecond)\n\tswitch wellKnownType(md.FullName()) {\n\tcase \"Any\":\n\t\treturn w.marshalAny(m, indent)\n\tcase \"BoolValue\", \"BytesValue\", \"StringValue\",\n\t\t\"Int32Value\", \"UInt32Value\", \"FloatValue\",\n\t\t\"Int64Value\", \"UInt64Value\", \"DoubleValue\":\n\t\tfd := fds.ByNumber(1)\n\t\treturn w.marshalValue(fd, m.Get(fd), indent)\n\tcase \"Duration\":\n\t\tconst maxSecondsInDuration = 315576000000\n\t\t// \"Generated output always contains 0, 3, 6, or 9 fractional digits,\n\t\t//  depending on required precision.\"\n\t\ts := m.Get(fds.ByNumber(1)).Int()\n\t\tns := m.Get(fds.ByNumber(2)).Int()\n\t\tif s < -maxSecondsInDuration || s > maxSecondsInDuration {\n\t\t\treturn fmt.Errorf(\"seconds out of range %v\", s)\n\t\t}\n\t\tif ns <= -secondInNanos || ns >= secondInNanos {\n\t\t\treturn fmt.Errorf(\"ns out of range (%v, %v)\", -secondInNanos, secondInNanos)\n\t\t}\n\t\tif (s > 0 && ns < 0) || (s < 0 && ns > 0) {\n\t\t\treturn errors.New(\"signs of seconds and nanos do not match\")\n\t\t}\n\t\tvar sign string\n\t\tif s < 0 || ns < 0 {\n\t\t\tsign, s, ns = \"-\", -1*s, -1*ns\n\t\t}\n\t\tx := fmt.Sprintf(\"%s%d.%09d\", sign, s, ns)\n\t\tx = strings.TrimSuffix(x, \"000\")\n\t\tx = strings.TrimSuffix(x, \"000\")\n\t\tx = strings.TrimSuffix(x, \".000\")\n\t\tw.write(fmt.Sprintf(`\"%vs\"`, x))\n\t\treturn nil\n\tcase \"Timestamp\":\n\t\t// \"RFC 3339, where generated output will always be Z-normalized\n\t\t//  and uses 0, 3, 6 or 9 fractional digits.\"\n\t\ts := m.Get(fds.ByNumber(1)).Int()\n\t\tns := m.Get(fds.ByNumber(2)).Int()\n\t\tif ns < 0 || ns >= secondInNanos {\n\t\t\treturn fmt.Errorf(\"ns out of range [0, %v)\", secondInNanos)\n\t\t}\n\t\tt := time.Unix(s, ns).UTC()\n\t\t// time.RFC3339Nano isn't exactly right (we need to get 3/6/9 fractional digits).\n\t\tx := t.Format(\"2006-01-02T15:04:05.000000000\")\n\t\tx = strings.TrimSuffix(x, \"000\")\n\t\tx = strings.TrimSuffix(x, \"000\")\n\t\tx = strings.TrimSuffix(x, \".000\")\n\t\tw.write(fmt.Sprintf(`\"%vZ\"`, x))\n\t\treturn nil\n\tcase \"Value\":\n\t\t// JSON value; which is a null, number, string, bool, object, or array.\n\t\tod := md.Oneofs().Get(0)\n\t\tfd := m.WhichOneof(od)\n\t\tif fd == nil {\n\t\t\treturn errors.New(\"nil Value\")\n\t\t}\n\t\treturn w.marshalValue(fd, m.Get(fd), indent)\n\tcase \"Struct\", \"ListValue\":\n\t\t// JSON object or array.\n\t\tfd := fds.ByNumber(1)\n\t\treturn w.marshalValue(fd, m.Get(fd), indent)\n\t}\n\n\tw.write(\"{\")\n\tif w.Indent != \"\" {\n\t\tw.write(\"\\n\")\n\t}\n\n\tfirstField := true\n\tif typeURL != \"\" {\n\t\tif err := w.marshalTypeURL(indent, typeURL); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirstField = false\n\t}\n\n\tfor i := 0; i < fds.Len(); {\n\t\tfd := fds.Get(i)\n\t\tif od := fd.ContainingOneof(); od != nil {\n\t\t\tfd = m.WhichOneof(od)\n\t\t\ti += od.Fields().Len()\n\t\t\tif fd == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else {\n\t\t\ti++\n\t\t}\n\n\t\tv := m.Get(fd)\n\n\t\tif !m.Has(fd) {\n\t\t\tif !w.EmitDefaults || fd.ContainingOneof() != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif fd.Cardinality() != protoreflect.Repeated && (fd.Message() != nil || fd.Syntax() == protoreflect.Proto2) {\n\t\t\t\tv = protoreflect.Value{} // use \"null\" for singular messages or proto2 scalars\n\t\t\t}\n\t\t}\n\n\t\tif !firstField {\n\t\t\tw.writeComma()\n\t\t}\n\t\tif err := w.marshalField(fd, v, indent); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirstField = false\n\t}\n\n\t// Handle proto2 extensions.\n\tif md.ExtensionRanges().Len() > 0 {\n\t\t// Collect a sorted list of all extension descriptor and values.\n\t\ttype ext struct {\n\t\t\tdesc protoreflect.FieldDescriptor\n\t\t\tval  protoreflect.Value\n\t\t}\n\t\tvar exts []ext\n\t\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\t\tif fd.IsExtension() {\n\t\t\t\texts = append(exts, ext{fd, v})\n\t\t\t}\n\t\t\treturn true\n\t\t})\n\t\tsort.Slice(exts, func(i, j int) bool {\n\t\t\treturn exts[i].desc.Number() < exts[j].desc.Number()\n\t\t})\n\n\t\tfor _, ext := range exts {\n\t\t\tif !firstField {\n\t\t\t\tw.writeComma()\n\t\t\t}\n\t\t\tif err := w.marshalField(ext.desc, ext.val, indent); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tfirstField = false\n\t\t}\n\t}\n\n\tif w.Indent != \"\" {\n\t\tw.write(\"\\n\")\n\t\tw.write(indent)\n\t}\n\tw.write(\"}\")\n\treturn nil\n}\n\nfunc (w *jsonWriter) writeComma() {\n\tif w.Indent != \"\" {\n\t\tw.write(\",\\n\")\n\t} else {\n\t\tw.write(\",\")\n\t}\n}\n\nfunc (w *jsonWriter) marshalAny(m protoreflect.Message, indent string) error {\n\t// \"If the Any contains a value that has a special JSON mapping,\n\t//  it will be converted as follows: {\"@type\": xxx, \"value\": yyy}.\n\t//  Otherwise, the value will be converted into a JSON object,\n\t//  and the \"@type\" field will be inserted to indicate the actual data type.\"\n\tmd := m.Descriptor()\n\ttypeURL := m.Get(md.Fields().ByNumber(1)).String()\n\trawVal := m.Get(md.Fields().ByNumber(2)).Bytes()\n\n\tvar m2 protoreflect.Message\n\tif w.AnyResolver != nil {\n\t\tmi, err := w.AnyResolver.Resolve(typeURL)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tm2 = proto.MessageReflect(mi)\n\t} else {\n\t\tmt, err := protoregistry.GlobalTypes.FindMessageByURL(typeURL)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tm2 = mt.New()\n\t}\n\n\tif err := protoV2.Unmarshal(rawVal, m2.Interface()); err != nil {\n\t\treturn err\n\t}\n\n\tif wellKnownType(m2.Descriptor().FullName()) == \"\" {\n\t\treturn w.marshalMessage(m2, indent, typeURL)\n\t}\n\n\tw.write(\"{\")\n\tif w.Indent != \"\" {\n\t\tw.write(\"\\n\")\n\t}\n\tif err := w.marshalTypeURL(indent, typeURL); err != nil {\n\t\treturn err\n\t}\n\tw.writeComma()\n\tif w.Indent != \"\" {\n\t\tw.write(indent)\n\t\tw.write(w.Indent)\n\t\tw.write(`\"value\": `)\n\t} else {\n\t\tw.write(`\"value\":`)\n\t}\n\tif err := w.marshalMessage(m2, indent+w.Indent, \"\"); err != nil {\n\t\treturn err\n\t}\n\tif w.Indent != \"\" {\n\t\tw.write(\"\\n\")\n\t\tw.write(indent)\n\t}\n\tw.write(\"}\")\n\treturn nil\n}\n\nfunc (w *jsonWriter) marshalTypeURL(indent, typeURL string) error {\n\tif w.Indent != \"\" {\n\t\tw.write(indent)\n\t\tw.write(w.Indent)\n\t}\n\tw.write(`\"@type\":`)\n\tif w.Indent != \"\" {\n\t\tw.write(\" \")\n\t}\n\tb, err := json.Marshal(typeURL)\n\tif err != nil {\n\t\treturn err\n\t}\n\tw.write(string(b))\n\treturn nil\n}\n\n// marshalField writes field description and value to the Writer.\nfunc (w *jsonWriter) marshalField(fd protoreflect.FieldDescriptor, v protoreflect.Value, indent string) error {\n\tif w.Indent != \"\" {\n\t\tw.write(indent)\n\t\tw.write(w.Indent)\n\t}\n\tw.write(`\"`)\n\tswitch {\n\tcase fd.IsExtension():\n\t\t// For message set, use the fname of the message as the extension name.\n\t\tname := string(fd.FullName())\n\t\tif isMessageSet(fd.ContainingMessage()) {\n\t\t\tname = strings.TrimSuffix(name, \".message_set_extension\")\n\t\t}\n\n\t\tw.write(\"[\" + name + \"]\")\n\tcase w.OrigName:\n\t\tname := string(fd.Name())\n\t\tif fd.Kind() == protoreflect.GroupKind {\n\t\t\tname = string(fd.Message().Name())\n\t\t}\n\t\tw.write(name)\n\tdefault:\n\t\tw.write(string(fd.JSONName()))\n\t}\n\tw.write(`\":`)\n\tif w.Indent != \"\" {\n\t\tw.write(\" \")\n\t}\n\treturn w.marshalValue(fd, v, indent)\n}\n\nfunc (w *jsonWriter) marshalValue(fd protoreflect.FieldDescriptor, v protoreflect.Value, indent string) error {\n\tswitch {\n\tcase fd.IsList():\n\t\tw.write(\"[\")\n\t\tcomma := \"\"\n\t\tlv := v.List()\n\t\tfor i := 0; i < lv.Len(); i++ {\n\t\t\tw.write(comma)\n\t\t\tif w.Indent != \"\" {\n\t\t\t\tw.write(\"\\n\")\n\t\t\t\tw.write(indent)\n\t\t\t\tw.write(w.Indent)\n\t\t\t\tw.write(w.Indent)\n\t\t\t}\n\t\t\tif err := w.marshalSingularValue(fd, lv.Get(i), indent+w.Indent); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcomma = \",\"\n\t\t}\n\t\tif w.Indent != \"\" {\n\t\t\tw.write(\"\\n\")\n\t\t\tw.write(indent)\n\t\t\tw.write(w.Indent)\n\t\t}\n\t\tw.write(\"]\")\n\t\treturn nil\n\tcase fd.IsMap():\n\t\tkfd := fd.MapKey()\n\t\tvfd := fd.MapValue()\n\t\tmv := v.Map()\n\n\t\t// Collect a sorted list of all map keys and values.\n\t\ttype entry struct{ key, val protoreflect.Value }\n\t\tvar entries []entry\n\t\tmv.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool {\n\t\t\tentries = append(entries, entry{k.Value(), v})\n\t\t\treturn true\n\t\t})\n\t\tsort.Slice(entries, func(i, j int) bool {\n\t\t\tswitch kfd.Kind() {\n\t\t\tcase protoreflect.BoolKind:\n\t\t\t\treturn !entries[i].key.Bool() && entries[j].key.Bool()\n\t\t\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\t\t\treturn entries[i].key.Int() < entries[j].key.Int()\n\t\t\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind, protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\t\t\treturn entries[i].key.Uint() < entries[j].key.Uint()\n\t\t\tcase protoreflect.StringKind:\n\t\t\t\treturn entries[i].key.String() < entries[j].key.String()\n\t\t\tdefault:\n\t\t\t\tpanic(\"invalid kind\")\n\t\t\t}\n\t\t})\n\n\t\tw.write(`{`)\n\t\tcomma := \"\"\n\t\tfor _, entry := range entries {\n\t\t\tw.write(comma)\n\t\t\tif w.Indent != \"\" {\n\t\t\t\tw.write(\"\\n\")\n\t\t\t\tw.write(indent)\n\t\t\t\tw.write(w.Indent)\n\t\t\t\tw.write(w.Indent)\n\t\t\t}\n\n\t\t\ts := fmt.Sprint(entry.key.Interface())\n\t\t\tb, err := json.Marshal(s)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tw.write(string(b))\n\n\t\t\tw.write(`:`)\n\t\t\tif w.Indent != \"\" {\n\t\t\t\tw.write(` `)\n\t\t\t}\n\n\t\t\tif err := w.marshalSingularValue(vfd, entry.val, indent+w.Indent); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcomma = \",\"\n\t\t}\n\t\tif w.Indent != \"\" {\n\t\t\tw.write(\"\\n\")\n\t\t\tw.write(indent)\n\t\t\tw.write(w.Indent)\n\t\t}\n\t\tw.write(`}`)\n\t\treturn nil\n\tdefault:\n\t\treturn w.marshalSingularValue(fd, v, indent)\n\t}\n}\n\nfunc (w *jsonWriter) marshalSingularValue(fd protoreflect.FieldDescriptor, v protoreflect.Value, indent string) error {\n\tswitch {\n\tcase !v.IsValid():\n\t\tw.write(\"null\")\n\t\treturn nil\n\tcase fd.Message() != nil:\n\t\treturn w.marshalMessage(v.Message(), indent+w.Indent, \"\")\n\tcase fd.Enum() != nil:\n\t\tif fd.Enum().FullName() == \"google.protobuf.NullValue\" {\n\t\t\tw.write(\"null\")\n\t\t\treturn nil\n\t\t}\n\n\t\tvd := fd.Enum().Values().ByNumber(v.Enum())\n\t\tif vd == nil || w.EnumsAsInts {\n\t\t\tw.write(strconv.Itoa(int(v.Enum())))\n\t\t} else {\n\t\t\tw.write(`\"` + string(vd.Name()) + `\"`)\n\t\t}\n\t\treturn nil\n\tdefault:\n\t\tswitch v.Interface().(type) {\n\t\tcase float32, float64:\n\t\t\tswitch {\n\t\t\tcase math.IsInf(v.Float(), +1):\n\t\t\t\tw.write(`\"Infinity\"`)\n\t\t\t\treturn nil\n\t\t\tcase math.IsInf(v.Float(), -1):\n\t\t\t\tw.write(`\"-Infinity\"`)\n\t\t\t\treturn nil\n\t\t\tcase math.IsNaN(v.Float()):\n\t\t\t\tw.write(`\"NaN\"`)\n\t\t\t\treturn nil\n\t\t\t}\n\t\tcase int64, uint64:\n\t\t\tw.write(fmt.Sprintf(`\"%d\"`, v.Interface()))\n\t\t\treturn nil\n\t\t}\n\n\t\tb, err := json.Marshal(v.Interface())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tw.write(string(b))\n\t\treturn nil\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/jsonpb/json.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package jsonpb provides functionality to marshal and unmarshal between a\n// protocol buffer message and JSON. It follows the specification at\n// https://developers.google.com/protocol-buffers/docs/proto3#json.\n//\n// Do not rely on the default behavior of the standard encoding/json package\n// when called on generated message types as it does not operate correctly.\n//\n// Deprecated: Use the \"google.golang.org/protobuf/encoding/protojson\"\n// package instead.\npackage jsonpb\n\nimport (\n\t\"github.com/golang/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\n// AnyResolver takes a type URL, present in an Any message,\n// and resolves it into an instance of the associated message.\ntype AnyResolver interface {\n\tResolve(typeURL string) (proto.Message, error)\n}\n\ntype anyResolver struct{ AnyResolver }\n\nfunc (r anyResolver) FindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error) {\n\treturn r.FindMessageByURL(string(message))\n}\n\nfunc (r anyResolver) FindMessageByURL(url string) (protoreflect.MessageType, error) {\n\tm, err := r.Resolve(url)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn protoimpl.X.MessageTypeOf(m), nil\n}\n\nfunc (r anyResolver) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) {\n\treturn protoregistry.GlobalTypes.FindExtensionByName(field)\n}\n\nfunc (r anyResolver) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) {\n\treturn protoregistry.GlobalTypes.FindExtensionByNumber(message, field)\n}\n\nfunc wellKnownType(s protoreflect.FullName) string {\n\tif s.Parent() == \"google.protobuf\" {\n\t\tswitch s.Name() {\n\t\tcase \"Empty\", \"Any\",\n\t\t\t\"BoolValue\", \"BytesValue\", \"StringValue\",\n\t\t\t\"Int32Value\", \"UInt32Value\", \"FloatValue\",\n\t\t\t\"Int64Value\", \"UInt64Value\", \"DoubleValue\",\n\t\t\t\"Duration\", \"Timestamp\",\n\t\t\t\"NullValue\", \"Struct\", \"Value\", \"ListValue\":\n\t\t\treturn string(s.Name())\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc isMessageSet(md protoreflect.MessageDescriptor) bool {\n\tms, ok := md.(interface{ IsMessageSet() bool })\n\treturn ok && ms.IsMessageSet()\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/buffer.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/encoding/prototext\"\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\tWireVarint     = 0\n\tWireFixed32    = 5\n\tWireFixed64    = 1\n\tWireBytes      = 2\n\tWireStartGroup = 3\n\tWireEndGroup   = 4\n)\n\n// EncodeVarint returns the varint encoded bytes of v.\nfunc EncodeVarint(v uint64) []byte {\n\treturn protowire.AppendVarint(nil, v)\n}\n\n// SizeVarint returns the length of the varint encoded bytes of v.\n// This is equal to len(EncodeVarint(v)).\nfunc SizeVarint(v uint64) int {\n\treturn protowire.SizeVarint(v)\n}\n\n// DecodeVarint parses a varint encoded integer from b,\n// returning the integer value and the length of the varint.\n// It returns (0, 0) if there is a parse error.\nfunc DecodeVarint(b []byte) (uint64, int) {\n\tv, n := protowire.ConsumeVarint(b)\n\tif n < 0 {\n\t\treturn 0, 0\n\t}\n\treturn v, n\n}\n\n// Buffer is a buffer for encoding and decoding the protobuf wire format.\n// It may be reused between invocations to reduce memory usage.\ntype Buffer struct {\n\tbuf           []byte\n\tidx           int\n\tdeterministic bool\n}\n\n// NewBuffer allocates a new Buffer initialized with buf,\n// where the contents of buf are considered the unread portion of the buffer.\nfunc NewBuffer(buf []byte) *Buffer {\n\treturn &Buffer{buf: buf}\n}\n\n// SetDeterministic specifies whether to use deterministic serialization.\n//\n// Deterministic serialization guarantees that for a given binary, equal\n// messages will always be serialized to the same bytes. This implies:\n//\n//   - Repeated serialization of a message will return the same bytes.\n//   - Different processes of the same binary (which may be executing on\n//     different machines) will serialize equal messages to the same bytes.\n//\n// Note that the deterministic serialization is NOT canonical across\n// languages. It is not guaranteed to remain stable over time. It is unstable\n// across different builds with schema changes due to unknown fields.\n// Users who need canonical serialization (e.g., persistent storage in a\n// canonical form, fingerprinting, etc.) should define their own\n// canonicalization specification and implement their own serializer rather\n// than relying on this API.\n//\n// If deterministic serialization is requested, map entries will be sorted\n// by keys in lexographical order. This is an implementation detail and\n// subject to change.\nfunc (b *Buffer) SetDeterministic(deterministic bool) {\n\tb.deterministic = deterministic\n}\n\n// SetBuf sets buf as the internal buffer,\n// where the contents of buf are considered the unread portion of the buffer.\nfunc (b *Buffer) SetBuf(buf []byte) {\n\tb.buf = buf\n\tb.idx = 0\n}\n\n// Reset clears the internal buffer of all written and unread data.\nfunc (b *Buffer) Reset() {\n\tb.buf = b.buf[:0]\n\tb.idx = 0\n}\n\n// Bytes returns the internal buffer.\nfunc (b *Buffer) Bytes() []byte {\n\treturn b.buf\n}\n\n// Unread returns the unread portion of the buffer.\nfunc (b *Buffer) Unread() []byte {\n\treturn b.buf[b.idx:]\n}\n\n// Marshal appends the wire-format encoding of m to the buffer.\nfunc (b *Buffer) Marshal(m Message) error {\n\tvar err error\n\tb.buf, err = marshalAppend(b.buf, m, b.deterministic)\n\treturn err\n}\n\n// Unmarshal parses the wire-format message in the buffer and\n// places the decoded results in m.\n// It does not reset m before unmarshaling.\nfunc (b *Buffer) Unmarshal(m Message) error {\n\terr := UnmarshalMerge(b.Unread(), m)\n\tb.idx = len(b.buf)\n\treturn err\n}\n\ntype unknownFields struct{ XXX_unrecognized protoimpl.UnknownFields }\n\nfunc (m *unknownFields) String() string { panic(\"not implemented\") }\nfunc (m *unknownFields) Reset()         { panic(\"not implemented\") }\nfunc (m *unknownFields) ProtoMessage()  { panic(\"not implemented\") }\n\n// DebugPrint dumps the encoded bytes of b with a header and footer including s\n// to stdout. This is only intended for debugging.\nfunc (*Buffer) DebugPrint(s string, b []byte) {\n\tm := MessageReflect(new(unknownFields))\n\tm.SetUnknown(b)\n\tb, _ = prototext.MarshalOptions{AllowPartial: true, Indent: \"\\t\"}.Marshal(m.Interface())\n\tfmt.Printf(\"==== %s ====\\n%s==== %s ====\\n\", s, b, s)\n}\n\n// EncodeVarint appends an unsigned varint encoding to the buffer.\nfunc (b *Buffer) EncodeVarint(v uint64) error {\n\tb.buf = protowire.AppendVarint(b.buf, v)\n\treturn nil\n}\n\n// EncodeZigzag32 appends a 32-bit zig-zag varint encoding to the buffer.\nfunc (b *Buffer) EncodeZigzag32(v uint64) error {\n\treturn b.EncodeVarint(uint64((uint32(v) << 1) ^ uint32((int32(v) >> 31))))\n}\n\n// EncodeZigzag64 appends a 64-bit zig-zag varint encoding to the buffer.\nfunc (b *Buffer) EncodeZigzag64(v uint64) error {\n\treturn b.EncodeVarint(uint64((uint64(v) << 1) ^ uint64((int64(v) >> 63))))\n}\n\n// EncodeFixed32 appends a 32-bit little-endian integer to the buffer.\nfunc (b *Buffer) EncodeFixed32(v uint64) error {\n\tb.buf = protowire.AppendFixed32(b.buf, uint32(v))\n\treturn nil\n}\n\n// EncodeFixed64 appends a 64-bit little-endian integer to the buffer.\nfunc (b *Buffer) EncodeFixed64(v uint64) error {\n\tb.buf = protowire.AppendFixed64(b.buf, uint64(v))\n\treturn nil\n}\n\n// EncodeRawBytes appends a length-prefixed raw bytes to the buffer.\nfunc (b *Buffer) EncodeRawBytes(v []byte) error {\n\tb.buf = protowire.AppendBytes(b.buf, v)\n\treturn nil\n}\n\n// EncodeStringBytes appends a length-prefixed raw bytes to the buffer.\n// It does not validate whether v contains valid UTF-8.\nfunc (b *Buffer) EncodeStringBytes(v string) error {\n\tb.buf = protowire.AppendString(b.buf, v)\n\treturn nil\n}\n\n// EncodeMessage appends a length-prefixed encoded message to the buffer.\nfunc (b *Buffer) EncodeMessage(m Message) error {\n\tvar err error\n\tb.buf = protowire.AppendVarint(b.buf, uint64(Size(m)))\n\tb.buf, err = marshalAppend(b.buf, m, b.deterministic)\n\treturn err\n}\n\n// DecodeVarint consumes an encoded unsigned varint from the buffer.\nfunc (b *Buffer) DecodeVarint() (uint64, error) {\n\tv, n := protowire.ConsumeVarint(b.buf[b.idx:])\n\tif n < 0 {\n\t\treturn 0, protowire.ParseError(n)\n\t}\n\tb.idx += n\n\treturn uint64(v), nil\n}\n\n// DecodeZigzag32 consumes an encoded 32-bit zig-zag varint from the buffer.\nfunc (b *Buffer) DecodeZigzag32() (uint64, error) {\n\tv, err := b.DecodeVarint()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn uint64((uint32(v) >> 1) ^ uint32((int32(v&1)<<31)>>31)), nil\n}\n\n// DecodeZigzag64 consumes an encoded 64-bit zig-zag varint from the buffer.\nfunc (b *Buffer) DecodeZigzag64() (uint64, error) {\n\tv, err := b.DecodeVarint()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn uint64((uint64(v) >> 1) ^ uint64((int64(v&1)<<63)>>63)), nil\n}\n\n// DecodeFixed32 consumes a 32-bit little-endian integer from the buffer.\nfunc (b *Buffer) DecodeFixed32() (uint64, error) {\n\tv, n := protowire.ConsumeFixed32(b.buf[b.idx:])\n\tif n < 0 {\n\t\treturn 0, protowire.ParseError(n)\n\t}\n\tb.idx += n\n\treturn uint64(v), nil\n}\n\n// DecodeFixed64 consumes a 64-bit little-endian integer from the buffer.\nfunc (b *Buffer) DecodeFixed64() (uint64, error) {\n\tv, n := protowire.ConsumeFixed64(b.buf[b.idx:])\n\tif n < 0 {\n\t\treturn 0, protowire.ParseError(n)\n\t}\n\tb.idx += n\n\treturn uint64(v), nil\n}\n\n// DecodeRawBytes consumes a length-prefixed raw bytes from the buffer.\n// If alloc is specified, it returns a copy the raw bytes\n// rather than a sub-slice of the buffer.\nfunc (b *Buffer) DecodeRawBytes(alloc bool) ([]byte, error) {\n\tv, n := protowire.ConsumeBytes(b.buf[b.idx:])\n\tif n < 0 {\n\t\treturn nil, protowire.ParseError(n)\n\t}\n\tb.idx += n\n\tif alloc {\n\t\tv = append([]byte(nil), v...)\n\t}\n\treturn v, nil\n}\n\n// DecodeStringBytes consumes a length-prefixed raw bytes from the buffer.\n// It does not validate whether the raw bytes contain valid UTF-8.\nfunc (b *Buffer) DecodeStringBytes() (string, error) {\n\tv, n := protowire.ConsumeString(b.buf[b.idx:])\n\tif n < 0 {\n\t\treturn \"\", protowire.ParseError(n)\n\t}\n\tb.idx += n\n\treturn v, nil\n}\n\n// DecodeMessage consumes a length-prefixed message from the buffer.\n// It does not reset m before unmarshaling.\nfunc (b *Buffer) DecodeMessage(m Message) error {\n\tv, err := b.DecodeRawBytes(false)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn UnmarshalMerge(v, m)\n}\n\n// DecodeGroup consumes a message group from the buffer.\n// It assumes that the start group marker has already been consumed and\n// consumes all bytes until (and including the end group marker).\n// It does not reset m before unmarshaling.\nfunc (b *Buffer) DecodeGroup(m Message) error {\n\tv, n, err := consumeGroup(b.buf[b.idx:])\n\tif err != nil {\n\t\treturn err\n\t}\n\tb.idx += n\n\treturn UnmarshalMerge(v, m)\n}\n\n// consumeGroup parses b until it finds an end group marker, returning\n// the raw bytes of the message (excluding the end group marker) and the\n// the total length of the message (including the end group marker).\nfunc consumeGroup(b []byte) ([]byte, int, error) {\n\tb0 := b\n\tdepth := 1 // assume this follows a start group marker\n\tfor {\n\t\t_, wtyp, tagLen := protowire.ConsumeTag(b)\n\t\tif tagLen < 0 {\n\t\t\treturn nil, 0, protowire.ParseError(tagLen)\n\t\t}\n\t\tb = b[tagLen:]\n\n\t\tvar valLen int\n\t\tswitch wtyp {\n\t\tcase protowire.VarintType:\n\t\t\t_, valLen = protowire.ConsumeVarint(b)\n\t\tcase protowire.Fixed32Type:\n\t\t\t_, valLen = protowire.ConsumeFixed32(b)\n\t\tcase protowire.Fixed64Type:\n\t\t\t_, valLen = protowire.ConsumeFixed64(b)\n\t\tcase protowire.BytesType:\n\t\t\t_, valLen = protowire.ConsumeBytes(b)\n\t\tcase protowire.StartGroupType:\n\t\t\tdepth++\n\t\tcase protowire.EndGroupType:\n\t\t\tdepth--\n\t\tdefault:\n\t\t\treturn nil, 0, errors.New(\"proto: cannot parse reserved wire type\")\n\t\t}\n\t\tif valLen < 0 {\n\t\t\treturn nil, 0, protowire.ParseError(valLen)\n\t\t}\n\t\tb = b[valLen:]\n\n\t\tif depth == 0 {\n\t\t\treturn b0[:len(b0)-len(b)-tagLen], len(b0) - len(b), nil\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/defaults.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// SetDefaults sets unpopulated scalar fields to their default values.\n// Fields within a oneof are not set even if they have a default value.\n// SetDefaults is recursively called upon any populated message fields.\nfunc SetDefaults(m Message) {\n\tif m != nil {\n\t\tsetDefaults(MessageReflect(m))\n\t}\n}\n\nfunc setDefaults(m protoreflect.Message) {\n\tfds := m.Descriptor().Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tfd := fds.Get(i)\n\t\tif !m.Has(fd) {\n\t\t\tif fd.HasDefault() && fd.ContainingOneof() == nil {\n\t\t\t\tv := fd.Default()\n\t\t\t\tif fd.Kind() == protoreflect.BytesKind {\n\t\t\t\t\tv = protoreflect.ValueOf(append([]byte(nil), v.Bytes()...)) // copy the default bytes\n\t\t\t\t}\n\t\t\t\tm.Set(fd, v)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t}\n\n\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tswitch {\n\t\t// Handle singular message.\n\t\tcase fd.Cardinality() != protoreflect.Repeated:\n\t\t\tif fd.Message() != nil {\n\t\t\t\tsetDefaults(m.Get(fd).Message())\n\t\t\t}\n\t\t// Handle list of messages.\n\t\tcase fd.IsList():\n\t\t\tif fd.Message() != nil {\n\t\t\t\tls := m.Get(fd).List()\n\t\t\t\tfor i := 0; i < ls.Len(); i++ {\n\t\t\t\t\tsetDefaults(ls.Get(i).Message())\n\t\t\t\t}\n\t\t\t}\n\t\t// Handle map of messages.\n\t\tcase fd.IsMap():\n\t\t\tif fd.MapValue().Message() != nil {\n\t\t\t\tms := m.Get(fd).Map()\n\t\t\t\tms.Range(func(_ protoreflect.MapKey, v protoreflect.Value) bool {\n\t\t\t\t\tsetDefaults(v.Message())\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn true\n\t})\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/deprecated.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\n\tprotoV2 \"google.golang.org/protobuf/proto\"\n)\n\nvar (\n\t// Deprecated: No longer returned.\n\tErrNil = errors.New(\"proto: Marshal called with nil\")\n\n\t// Deprecated: No longer returned.\n\tErrTooLarge = errors.New(\"proto: message encodes to over 2 GB\")\n\n\t// Deprecated: No longer returned.\n\tErrInternalBadWireType = errors.New(\"proto: internal error: bad wiretype for oneof\")\n)\n\n// Deprecated: Do not use.\ntype Stats struct{ Emalloc, Dmalloc, Encode, Decode, Chit, Cmiss, Size uint64 }\n\n// Deprecated: Do not use.\nfunc GetStats() Stats { return Stats{} }\n\n// Deprecated: Do not use.\nfunc MarshalMessageSet(interface{}) ([]byte, error) {\n\treturn nil, errors.New(\"proto: not implemented\")\n}\n\n// Deprecated: Do not use.\nfunc UnmarshalMessageSet([]byte, interface{}) error {\n\treturn errors.New(\"proto: not implemented\")\n}\n\n// Deprecated: Do not use.\nfunc MarshalMessageSetJSON(interface{}) ([]byte, error) {\n\treturn nil, errors.New(\"proto: not implemented\")\n}\n\n// Deprecated: Do not use.\nfunc UnmarshalMessageSetJSON([]byte, interface{}) error {\n\treturn errors.New(\"proto: not implemented\")\n}\n\n// Deprecated: Do not use.\nfunc RegisterMessageSetType(Message, int32, string) {}\n\n// Deprecated: Do not use.\nfunc EnumName(m map[int32]string, v int32) string {\n\ts, ok := m[v]\n\tif ok {\n\t\treturn s\n\t}\n\treturn strconv.Itoa(int(v))\n}\n\n// Deprecated: Do not use.\nfunc UnmarshalJSONEnum(m map[string]int32, data []byte, enumName string) (int32, error) {\n\tif data[0] == '\"' {\n\t\t// New style: enums are strings.\n\t\tvar repr string\n\t\tif err := json.Unmarshal(data, &repr); err != nil {\n\t\t\treturn -1, err\n\t\t}\n\t\tval, ok := m[repr]\n\t\tif !ok {\n\t\t\treturn 0, fmt.Errorf(\"unrecognized enum %s value %q\", enumName, repr)\n\t\t}\n\t\treturn val, nil\n\t}\n\t// Old style: enums are ints.\n\tvar val int32\n\tif err := json.Unmarshal(data, &val); err != nil {\n\t\treturn 0, fmt.Errorf(\"cannot unmarshal %#q into enum %s\", data, enumName)\n\t}\n\treturn val, nil\n}\n\n// Deprecated: Do not use; this type existed for intenal-use only.\ntype InternalMessageInfo struct{}\n\n// Deprecated: Do not use; this method existed for intenal-use only.\nfunc (*InternalMessageInfo) DiscardUnknown(m Message) {\n\tDiscardUnknown(m)\n}\n\n// Deprecated: Do not use; this method existed for intenal-use only.\nfunc (*InternalMessageInfo) Marshal(b []byte, m Message, deterministic bool) ([]byte, error) {\n\treturn protoV2.MarshalOptions{Deterministic: deterministic}.MarshalAppend(b, MessageV2(m))\n}\n\n// Deprecated: Do not use; this method existed for intenal-use only.\nfunc (*InternalMessageInfo) Merge(dst, src Message) {\n\tprotoV2.Merge(MessageV2(dst), MessageV2(src))\n}\n\n// Deprecated: Do not use; this method existed for intenal-use only.\nfunc (*InternalMessageInfo) Size(m Message) int {\n\treturn protoV2.Size(MessageV2(m))\n}\n\n// Deprecated: Do not use; this method existed for intenal-use only.\nfunc (*InternalMessageInfo) Unmarshal(m Message, b []byte) error {\n\treturn protoV2.UnmarshalOptions{Merge: true}.Unmarshal(b, MessageV2(m))\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/discard.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// DiscardUnknown recursively discards all unknown fields from this message\n// and all embedded messages.\n//\n// When unmarshaling a message with unrecognized fields, the tags and values\n// of such fields are preserved in the Message. This allows a later call to\n// marshal to be able to produce a message that continues to have those\n// unrecognized fields. To avoid this, DiscardUnknown is used to\n// explicitly clear the unknown fields after unmarshaling.\nfunc DiscardUnknown(m Message) {\n\tif m != nil {\n\t\tdiscardUnknown(MessageReflect(m))\n\t}\n}\n\nfunc discardUnknown(m protoreflect.Message) {\n\tm.Range(func(fd protoreflect.FieldDescriptor, val protoreflect.Value) bool {\n\t\tswitch {\n\t\t// Handle singular message.\n\t\tcase fd.Cardinality() != protoreflect.Repeated:\n\t\t\tif fd.Message() != nil {\n\t\t\t\tdiscardUnknown(m.Get(fd).Message())\n\t\t\t}\n\t\t// Handle list of messages.\n\t\tcase fd.IsList():\n\t\t\tif fd.Message() != nil {\n\t\t\t\tls := m.Get(fd).List()\n\t\t\t\tfor i := 0; i < ls.Len(); i++ {\n\t\t\t\t\tdiscardUnknown(ls.Get(i).Message())\n\t\t\t\t}\n\t\t\t}\n\t\t// Handle map of messages.\n\t\tcase fd.IsMap():\n\t\t\tif fd.MapValue().Message() != nil {\n\t\t\t\tms := m.Get(fd).Map()\n\t\t\t\tms.Range(func(_ protoreflect.MapKey, v protoreflect.Value) bool {\n\t\t\t\t\tdiscardUnknown(v.Message())\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn true\n\t})\n\n\t// Discard unknown fields.\n\tif len(m.GetUnknown()) > 0 {\n\t\tm.SetUnknown(nil)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/extensions.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 proto\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\ntype (\n\t// ExtensionDesc represents an extension descriptor and\n\t// is used to interact with an extension field in a message.\n\t//\n\t// Variables of this type are generated in code by protoc-gen-go.\n\tExtensionDesc = protoimpl.ExtensionInfo\n\n\t// ExtensionRange represents a range of message extensions.\n\t// Used in code generated by protoc-gen-go.\n\tExtensionRange = protoiface.ExtensionRangeV1\n\n\t// Deprecated: Do not use; this is an internal type.\n\tExtension = protoimpl.ExtensionFieldV1\n\n\t// Deprecated: Do not use; this is an internal type.\n\tXXX_InternalExtensions = protoimpl.ExtensionFields\n)\n\n// ErrMissingExtension reports whether the extension was not present.\nvar ErrMissingExtension = errors.New(\"proto: missing extension\")\n\nvar errNotExtendable = errors.New(\"proto: not an extendable proto.Message\")\n\n// HasExtension reports whether the extension field is present in m\n// either as an explicitly populated field or as an unknown field.\nfunc HasExtension(m Message, xt *ExtensionDesc) (has bool) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() {\n\t\treturn false\n\t}\n\n\t// Check whether any populated known field matches the field number.\n\txtd := xt.TypeDescriptor()\n\tif isValidExtension(mr.Descriptor(), xtd) {\n\t\thas = mr.Has(xtd)\n\t} else {\n\t\tmr.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool {\n\t\t\thas = int32(fd.Number()) == xt.Field\n\t\t\treturn !has\n\t\t})\n\t}\n\n\t// Check whether any unknown field matches the field number.\n\tfor b := mr.GetUnknown(); !has && len(b) > 0; {\n\t\tnum, _, n := protowire.ConsumeField(b)\n\t\thas = int32(num) == xt.Field\n\t\tb = b[n:]\n\t}\n\treturn has\n}\n\n// ClearExtension removes the extension field from m\n// either as an explicitly populated field or as an unknown field.\nfunc ClearExtension(m Message, xt *ExtensionDesc) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() {\n\t\treturn\n\t}\n\n\txtd := xt.TypeDescriptor()\n\tif isValidExtension(mr.Descriptor(), xtd) {\n\t\tmr.Clear(xtd)\n\t} else {\n\t\tmr.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool {\n\t\t\tif int32(fd.Number()) == xt.Field {\n\t\t\t\tmr.Clear(fd)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t})\n\t}\n\tclearUnknown(mr, fieldNum(xt.Field))\n}\n\n// ClearAllExtensions clears all extensions from m.\n// This includes populated fields and unknown fields in the extension range.\nfunc ClearAllExtensions(m Message) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() {\n\t\treturn\n\t}\n\n\tmr.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool {\n\t\tif fd.IsExtension() {\n\t\t\tmr.Clear(fd)\n\t\t}\n\t\treturn true\n\t})\n\tclearUnknown(mr, mr.Descriptor().ExtensionRanges())\n}\n\n// GetExtension retrieves a proto2 extended field from m.\n//\n// If the descriptor is type complete (i.e., ExtensionDesc.ExtensionType is non-nil),\n// then GetExtension parses the encoded field and returns a Go value of the specified type.\n// If the field is not present, then the default value is returned (if one is specified),\n// otherwise ErrMissingExtension is reported.\n//\n// If the descriptor is type incomplete (i.e., ExtensionDesc.ExtensionType is nil),\n// then GetExtension returns the raw encoded bytes for the extension field.\nfunc GetExtension(m Message, xt *ExtensionDesc) (interface{}, error) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() || mr.Descriptor().ExtensionRanges().Len() == 0 {\n\t\treturn nil, errNotExtendable\n\t}\n\n\t// Retrieve the unknown fields for this extension field.\n\tvar bo protoreflect.RawFields\n\tfor bi := mr.GetUnknown(); len(bi) > 0; {\n\t\tnum, _, n := protowire.ConsumeField(bi)\n\t\tif int32(num) == xt.Field {\n\t\t\tbo = append(bo, bi[:n]...)\n\t\t}\n\t\tbi = bi[n:]\n\t}\n\n\t// For type incomplete descriptors, only retrieve the unknown fields.\n\tif xt.ExtensionType == nil {\n\t\treturn []byte(bo), nil\n\t}\n\n\t// If the extension field only exists as unknown fields, unmarshal it.\n\t// This is rarely done since proto.Unmarshal eagerly unmarshals extensions.\n\txtd := xt.TypeDescriptor()\n\tif !isValidExtension(mr.Descriptor(), xtd) {\n\t\treturn nil, fmt.Errorf(\"proto: bad extended type; %T does not extend %T\", xt.ExtendedType, m)\n\t}\n\tif !mr.Has(xtd) && len(bo) > 0 {\n\t\tm2 := mr.New()\n\t\tif err := (proto.UnmarshalOptions{\n\t\t\tResolver: extensionResolver{xt},\n\t\t}.Unmarshal(bo, m2.Interface())); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m2.Has(xtd) {\n\t\t\tmr.Set(xtd, m2.Get(xtd))\n\t\t\tclearUnknown(mr, fieldNum(xt.Field))\n\t\t}\n\t}\n\n\t// Check whether the message has the extension field set or a default.\n\tvar pv protoreflect.Value\n\tswitch {\n\tcase mr.Has(xtd):\n\t\tpv = mr.Get(xtd)\n\tcase xtd.HasDefault():\n\t\tpv = xtd.Default()\n\tdefault:\n\t\treturn nil, ErrMissingExtension\n\t}\n\n\tv := xt.InterfaceOf(pv)\n\trv := reflect.ValueOf(v)\n\tif isScalarKind(rv.Kind()) {\n\t\trv2 := reflect.New(rv.Type())\n\t\trv2.Elem().Set(rv)\n\t\tv = rv2.Interface()\n\t}\n\treturn v, nil\n}\n\n// extensionResolver is a custom extension resolver that stores a single\n// extension type that takes precedence over the global registry.\ntype extensionResolver struct{ xt protoreflect.ExtensionType }\n\nfunc (r extensionResolver) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) {\n\tif xtd := r.xt.TypeDescriptor(); xtd.FullName() == field {\n\t\treturn r.xt, nil\n\t}\n\treturn protoregistry.GlobalTypes.FindExtensionByName(field)\n}\n\nfunc (r extensionResolver) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) {\n\tif xtd := r.xt.TypeDescriptor(); xtd.ContainingMessage().FullName() == message && xtd.Number() == field {\n\t\treturn r.xt, nil\n\t}\n\treturn protoregistry.GlobalTypes.FindExtensionByNumber(message, field)\n}\n\n// GetExtensions returns a list of the extensions values present in m,\n// corresponding with the provided list of extension descriptors, xts.\n// If an extension is missing in m, the corresponding value is nil.\nfunc GetExtensions(m Message, xts []*ExtensionDesc) ([]interface{}, error) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() {\n\t\treturn nil, errNotExtendable\n\t}\n\n\tvs := make([]interface{}, len(xts))\n\tfor i, xt := range xts {\n\t\tv, err := GetExtension(m, xt)\n\t\tif err != nil {\n\t\t\tif err == ErrMissingExtension {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn vs, err\n\t\t}\n\t\tvs[i] = v\n\t}\n\treturn vs, nil\n}\n\n// SetExtension sets an extension field in m to the provided value.\nfunc SetExtension(m Message, xt *ExtensionDesc, v interface{}) error {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() || mr.Descriptor().ExtensionRanges().Len() == 0 {\n\t\treturn errNotExtendable\n\t}\n\n\trv := reflect.ValueOf(v)\n\tif reflect.TypeOf(v) != reflect.TypeOf(xt.ExtensionType) {\n\t\treturn fmt.Errorf(\"proto: bad extension value type. got: %T, want: %T\", v, xt.ExtensionType)\n\t}\n\tif rv.Kind() == reflect.Ptr {\n\t\tif rv.IsNil() {\n\t\t\treturn fmt.Errorf(\"proto: SetExtension called with nil value of type %T\", v)\n\t\t}\n\t\tif isScalarKind(rv.Elem().Kind()) {\n\t\t\tv = rv.Elem().Interface()\n\t\t}\n\t}\n\n\txtd := xt.TypeDescriptor()\n\tif !isValidExtension(mr.Descriptor(), xtd) {\n\t\treturn fmt.Errorf(\"proto: bad extended type; %T does not extend %T\", xt.ExtendedType, m)\n\t}\n\tmr.Set(xtd, xt.ValueOf(v))\n\tclearUnknown(mr, fieldNum(xt.Field))\n\treturn nil\n}\n\n// SetRawExtension inserts b into the unknown fields of m.\n//\n// Deprecated: Use Message.ProtoReflect.SetUnknown instead.\nfunc SetRawExtension(m Message, fnum int32, b []byte) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() {\n\t\treturn\n\t}\n\n\t// Verify that the raw field is valid.\n\tfor b0 := b; len(b0) > 0; {\n\t\tnum, _, n := protowire.ConsumeField(b0)\n\t\tif int32(num) != fnum {\n\t\t\tpanic(fmt.Sprintf(\"mismatching field number: got %d, want %d\", num, fnum))\n\t\t}\n\t\tb0 = b0[n:]\n\t}\n\n\tClearExtension(m, &ExtensionDesc{Field: fnum})\n\tmr.SetUnknown(append(mr.GetUnknown(), b...))\n}\n\n// ExtensionDescs returns a list of extension descriptors found in m,\n// containing descriptors for both populated extension fields in m and\n// also unknown fields of m that are in the extension range.\n// For the later case, an type incomplete descriptor is provided where only\n// the ExtensionDesc.Field field is populated.\n// The order of the extension descriptors is undefined.\nfunc ExtensionDescs(m Message) ([]*ExtensionDesc, error) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() || mr.Descriptor().ExtensionRanges().Len() == 0 {\n\t\treturn nil, errNotExtendable\n\t}\n\n\t// Collect a set of known extension descriptors.\n\textDescs := make(map[protoreflect.FieldNumber]*ExtensionDesc)\n\tmr.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tif fd.IsExtension() {\n\t\t\txt := fd.(protoreflect.ExtensionTypeDescriptor)\n\t\t\tif xd, ok := xt.Type().(*ExtensionDesc); ok {\n\t\t\t\textDescs[fd.Number()] = xd\n\t\t\t}\n\t\t}\n\t\treturn true\n\t})\n\n\t// Collect a set of unknown extension descriptors.\n\textRanges := mr.Descriptor().ExtensionRanges()\n\tfor b := mr.GetUnknown(); len(b) > 0; {\n\t\tnum, _, n := protowire.ConsumeField(b)\n\t\tif extRanges.Has(num) && extDescs[num] == nil {\n\t\t\textDescs[num] = nil\n\t\t}\n\t\tb = b[n:]\n\t}\n\n\t// Transpose the set of descriptors into a list.\n\tvar xts []*ExtensionDesc\n\tfor num, xt := range extDescs {\n\t\tif xt == nil {\n\t\t\txt = &ExtensionDesc{Field: int32(num)}\n\t\t}\n\t\txts = append(xts, xt)\n\t}\n\treturn xts, nil\n}\n\n// isValidExtension reports whether xtd is a valid extension descriptor for md.\nfunc isValidExtension(md protoreflect.MessageDescriptor, xtd protoreflect.ExtensionTypeDescriptor) bool {\n\treturn xtd.ContainingMessage() == md && md.ExtensionRanges().Has(xtd.Number())\n}\n\n// isScalarKind reports whether k is a protobuf scalar kind (except bytes).\n// This function exists for historical reasons since the representation of\n// scalars differs between v1 and v2, where v1 uses *T and v2 uses T.\nfunc isScalarKind(k reflect.Kind) bool {\n\tswitch k {\n\tcase reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// clearUnknown removes unknown fields from m where remover.Has reports true.\nfunc clearUnknown(m protoreflect.Message, remover interface {\n\tHas(protoreflect.FieldNumber) bool\n}) {\n\tvar bo protoreflect.RawFields\n\tfor bi := m.GetUnknown(); len(bi) > 0; {\n\t\tnum, _, n := protowire.ConsumeField(bi)\n\t\tif !remover.Has(num) {\n\t\t\tbo = append(bo, bi[:n]...)\n\t\t}\n\t\tbi = bi[n:]\n\t}\n\tif bi := m.GetUnknown(); len(bi) != len(bo) {\n\t\tm.SetUnknown(bo)\n\t}\n}\n\ntype fieldNum protoreflect.FieldNumber\n\nfunc (n1 fieldNum) Has(n2 protoreflect.FieldNumber) bool {\n\treturn protoreflect.FieldNumber(n1) == n2\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/properties.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 proto\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\n// StructProperties represents protocol buffer type information for a\n// generated protobuf message in the open-struct API.\n//\n// Deprecated: Do not use.\ntype StructProperties struct {\n\t// Prop are the properties for each field.\n\t//\n\t// Fields belonging to a oneof are stored in OneofTypes instead, with a\n\t// single Properties representing the parent oneof held here.\n\t//\n\t// The order of Prop matches the order of fields in the Go struct.\n\t// Struct fields that are not related to protobufs have a \"XXX_\" prefix\n\t// in the Properties.Name and must be ignored by the user.\n\tProp []*Properties\n\n\t// OneofTypes contains information about the oneof fields in this message.\n\t// It is keyed by the protobuf field name.\n\tOneofTypes map[string]*OneofProperties\n}\n\n// Properties represents the type information for a protobuf message field.\n//\n// Deprecated: Do not use.\ntype Properties struct {\n\t// Name is a placeholder name with little meaningful semantic value.\n\t// If the name has an \"XXX_\" prefix, the entire Properties must be ignored.\n\tName string\n\t// OrigName is the protobuf field name or oneof name.\n\tOrigName string\n\t// JSONName is the JSON name for the protobuf field.\n\tJSONName string\n\t// Enum is a placeholder name for enums.\n\t// For historical reasons, this is neither the Go name for the enum,\n\t// nor the protobuf name for the enum.\n\tEnum string // Deprecated: Do not use.\n\t// Weak contains the full name of the weakly referenced message.\n\tWeak string\n\t// Wire is a string representation of the wire type.\n\tWire string\n\t// WireType is the protobuf wire type for the field.\n\tWireType int\n\t// Tag is the protobuf field number.\n\tTag int\n\t// Required reports whether this is a required field.\n\tRequired bool\n\t// Optional reports whether this is a optional field.\n\tOptional bool\n\t// Repeated reports whether this is a repeated field.\n\tRepeated bool\n\t// Packed reports whether this is a packed repeated field of scalars.\n\tPacked bool\n\t// Proto3 reports whether this field operates under the proto3 syntax.\n\tProto3 bool\n\t// Oneof reports whether this field belongs within a oneof.\n\tOneof bool\n\n\t// Default is the default value in string form.\n\tDefault string\n\t// HasDefault reports whether the field has a default value.\n\tHasDefault bool\n\n\t// MapKeyProp is the properties for the key field for a map field.\n\tMapKeyProp *Properties\n\t// MapValProp is the properties for the value field for a map field.\n\tMapValProp *Properties\n}\n\n// OneofProperties represents the type information for a protobuf oneof.\n//\n// Deprecated: Do not use.\ntype OneofProperties struct {\n\t// Type is a pointer to the generated wrapper type for the field value.\n\t// This is nil for messages that are not in the open-struct API.\n\tType reflect.Type\n\t// Field is the index into StructProperties.Prop for the containing oneof.\n\tField int\n\t// Prop is the properties for the field.\n\tProp *Properties\n}\n\n// String formats the properties in the protobuf struct field tag style.\nfunc (p *Properties) String() string {\n\ts := p.Wire\n\ts += \",\" + strconv.Itoa(p.Tag)\n\tif p.Required {\n\t\ts += \",req\"\n\t}\n\tif p.Optional {\n\t\ts += \",opt\"\n\t}\n\tif p.Repeated {\n\t\ts += \",rep\"\n\t}\n\tif p.Packed {\n\t\ts += \",packed\"\n\t}\n\ts += \",name=\" + p.OrigName\n\tif p.JSONName != \"\" {\n\t\ts += \",json=\" + p.JSONName\n\t}\n\tif len(p.Enum) > 0 {\n\t\ts += \",enum=\" + p.Enum\n\t}\n\tif len(p.Weak) > 0 {\n\t\ts += \",weak=\" + p.Weak\n\t}\n\tif p.Proto3 {\n\t\ts += \",proto3\"\n\t}\n\tif p.Oneof {\n\t\ts += \",oneof\"\n\t}\n\tif p.HasDefault {\n\t\ts += \",def=\" + p.Default\n\t}\n\treturn s\n}\n\n// Parse populates p by parsing a string in the protobuf struct field tag style.\nfunc (p *Properties) Parse(tag string) {\n\t// For example: \"bytes,49,opt,name=foo,def=hello!\"\n\tfor len(tag) > 0 {\n\t\ti := strings.IndexByte(tag, ',')\n\t\tif i < 0 {\n\t\t\ti = len(tag)\n\t\t}\n\t\tswitch s := tag[:i]; {\n\t\tcase strings.HasPrefix(s, \"name=\"):\n\t\t\tp.OrigName = s[len(\"name=\"):]\n\t\tcase strings.HasPrefix(s, \"json=\"):\n\t\t\tp.JSONName = s[len(\"json=\"):]\n\t\tcase strings.HasPrefix(s, \"enum=\"):\n\t\t\tp.Enum = s[len(\"enum=\"):]\n\t\tcase strings.HasPrefix(s, \"weak=\"):\n\t\t\tp.Weak = s[len(\"weak=\"):]\n\t\tcase strings.Trim(s, \"0123456789\") == \"\":\n\t\t\tn, _ := strconv.ParseUint(s, 10, 32)\n\t\t\tp.Tag = int(n)\n\t\tcase s == \"opt\":\n\t\t\tp.Optional = true\n\t\tcase s == \"req\":\n\t\t\tp.Required = true\n\t\tcase s == \"rep\":\n\t\t\tp.Repeated = true\n\t\tcase s == \"varint\" || s == \"zigzag32\" || s == \"zigzag64\":\n\t\t\tp.Wire = s\n\t\t\tp.WireType = WireVarint\n\t\tcase s == \"fixed32\":\n\t\t\tp.Wire = s\n\t\t\tp.WireType = WireFixed32\n\t\tcase s == \"fixed64\":\n\t\t\tp.Wire = s\n\t\t\tp.WireType = WireFixed64\n\t\tcase s == \"bytes\":\n\t\t\tp.Wire = s\n\t\t\tp.WireType = WireBytes\n\t\tcase s == \"group\":\n\t\t\tp.Wire = s\n\t\t\tp.WireType = WireStartGroup\n\t\tcase s == \"packed\":\n\t\t\tp.Packed = true\n\t\tcase s == \"proto3\":\n\t\t\tp.Proto3 = true\n\t\tcase s == \"oneof\":\n\t\t\tp.Oneof = true\n\t\tcase strings.HasPrefix(s, \"def=\"):\n\t\t\t// The default tag is special in that everything afterwards is the\n\t\t\t// default regardless of the presence of commas.\n\t\t\tp.HasDefault = true\n\t\t\tp.Default, i = tag[len(\"def=\"):], len(tag)\n\t\t}\n\t\ttag = strings.TrimPrefix(tag[i:], \",\")\n\t}\n}\n\n// Init populates the properties from a protocol buffer struct tag.\n//\n// Deprecated: Do not use.\nfunc (p *Properties) Init(typ reflect.Type, name, tag string, f *reflect.StructField) {\n\tp.Name = name\n\tp.OrigName = name\n\tif tag == \"\" {\n\t\treturn\n\t}\n\tp.Parse(tag)\n\n\tif typ != nil && typ.Kind() == reflect.Map {\n\t\tp.MapKeyProp = new(Properties)\n\t\tp.MapKeyProp.Init(nil, \"Key\", f.Tag.Get(\"protobuf_key\"), nil)\n\t\tp.MapValProp = new(Properties)\n\t\tp.MapValProp.Init(nil, \"Value\", f.Tag.Get(\"protobuf_val\"), nil)\n\t}\n}\n\nvar propertiesCache sync.Map // map[reflect.Type]*StructProperties\n\n// GetProperties returns the list of properties for the type represented by t,\n// which must be a generated protocol buffer message in the open-struct API,\n// where protobuf message fields are represented by exported Go struct fields.\n//\n// Deprecated: Use protobuf reflection instead.\nfunc GetProperties(t reflect.Type) *StructProperties {\n\tif p, ok := propertiesCache.Load(t); ok {\n\t\treturn p.(*StructProperties)\n\t}\n\tp, _ := propertiesCache.LoadOrStore(t, newProperties(t))\n\treturn p.(*StructProperties)\n}\n\nfunc newProperties(t reflect.Type) *StructProperties {\n\tif t.Kind() != reflect.Struct {\n\t\tpanic(fmt.Sprintf(\"%v is not a generated message in the open-struct API\", t))\n\t}\n\n\tvar hasOneof bool\n\tprop := new(StructProperties)\n\n\t// Construct a list of properties for each field in the struct.\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tp := new(Properties)\n\t\tf := t.Field(i)\n\t\ttagField := f.Tag.Get(\"protobuf\")\n\t\tp.Init(f.Type, f.Name, tagField, &f)\n\n\t\ttagOneof := f.Tag.Get(\"protobuf_oneof\")\n\t\tif tagOneof != \"\" {\n\t\t\thasOneof = true\n\t\t\tp.OrigName = tagOneof\n\t\t}\n\n\t\t// Rename unrelated struct fields with the \"XXX_\" prefix since so much\n\t\t// user code simply checks for this to exclude special fields.\n\t\tif tagField == \"\" && tagOneof == \"\" && !strings.HasPrefix(p.Name, \"XXX_\") {\n\t\t\tp.Name = \"XXX_\" + p.Name\n\t\t\tp.OrigName = \"XXX_\" + p.OrigName\n\t\t} else if p.Weak != \"\" {\n\t\t\tp.Name = p.OrigName // avoid possible \"XXX_\" prefix on weak field\n\t\t}\n\n\t\tprop.Prop = append(prop.Prop, p)\n\t}\n\n\t// Construct a mapping of oneof field names to properties.\n\tif hasOneof {\n\t\tvar oneofWrappers []interface{}\n\t\tif fn, ok := reflect.PtrTo(t).MethodByName(\"XXX_OneofFuncs\"); ok {\n\t\t\toneofWrappers = fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[3].Interface().([]interface{})\n\t\t}\n\t\tif fn, ok := reflect.PtrTo(t).MethodByName(\"XXX_OneofWrappers\"); ok {\n\t\t\toneofWrappers = fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[0].Interface().([]interface{})\n\t\t}\n\t\tif m, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(protoreflect.ProtoMessage); ok {\n\t\t\tif m, ok := m.ProtoReflect().(interface{ ProtoMessageInfo() *protoimpl.MessageInfo }); ok {\n\t\t\t\toneofWrappers = m.ProtoMessageInfo().OneofWrappers\n\t\t\t}\n\t\t}\n\n\t\tprop.OneofTypes = make(map[string]*OneofProperties)\n\t\tfor _, wrapper := range oneofWrappers {\n\t\t\tp := &OneofProperties{\n\t\t\t\tType: reflect.ValueOf(wrapper).Type(), // *T\n\t\t\t\tProp: new(Properties),\n\t\t\t}\n\t\t\tf := p.Type.Elem().Field(0)\n\t\t\tp.Prop.Name = f.Name\n\t\t\tp.Prop.Parse(f.Tag.Get(\"protobuf\"))\n\n\t\t\t// Determine the struct field that contains this oneof.\n\t\t\t// Each wrapper is assignable to exactly one parent field.\n\t\t\tvar foundOneof bool\n\t\t\tfor i := 0; i < t.NumField() && !foundOneof; i++ {\n\t\t\t\tif p.Type.AssignableTo(t.Field(i).Type) {\n\t\t\t\t\tp.Field = i\n\t\t\t\t\tfoundOneof = true\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !foundOneof {\n\t\t\t\tpanic(fmt.Sprintf(\"%v is not a generated message in the open-struct API\", t))\n\t\t\t}\n\t\t\tprop.OneofTypes[p.Prop.OrigName] = p\n\t\t}\n\t}\n\n\treturn prop\n}\n\nfunc (sp *StructProperties) Len() int           { return len(sp.Prop) }\nfunc (sp *StructProperties) Less(i, j int) bool { return false }\nfunc (sp *StructProperties) Swap(i, j int)      { return }\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/proto.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package proto provides functionality for handling protocol buffer messages.\n// In particular, it provides marshaling and unmarshaling between a protobuf\n// message and the binary wire format.\n//\n// See https://developers.google.com/protocol-buffers/docs/gotutorial for\n// more information.\n//\n// Deprecated: Use the \"google.golang.org/protobuf/proto\" package instead.\npackage proto\n\nimport (\n\tprotoV2 \"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\tProtoPackageIsVersion1 = true\n\tProtoPackageIsVersion2 = true\n\tProtoPackageIsVersion3 = true\n\tProtoPackageIsVersion4 = true\n)\n\n// GeneratedEnum is any enum type generated by protoc-gen-go\n// which is a named int32 kind.\n// This type exists for documentation purposes.\ntype GeneratedEnum interface{}\n\n// GeneratedMessage is any message type generated by protoc-gen-go\n// which is a pointer to a named struct kind.\n// This type exists for documentation purposes.\ntype GeneratedMessage interface{}\n\n// Message is a protocol buffer message.\n//\n// This is the v1 version of the message interface and is marginally better\n// than an empty interface as it lacks any method to programatically interact\n// with the contents of the message.\n//\n// A v2 message is declared in \"google.golang.org/protobuf/proto\".Message and\n// exposes protobuf reflection as a first-class feature of the interface.\n//\n// To convert a v1 message to a v2 message, use the MessageV2 function.\n// To convert a v2 message to a v1 message, use the MessageV1 function.\ntype Message = protoiface.MessageV1\n\n// MessageV1 converts either a v1 or v2 message to a v1 message.\n// It returns nil if m is nil.\nfunc MessageV1(m GeneratedMessage) protoiface.MessageV1 {\n\treturn protoimpl.X.ProtoMessageV1Of(m)\n}\n\n// MessageV2 converts either a v1 or v2 message to a v2 message.\n// It returns nil if m is nil.\nfunc MessageV2(m GeneratedMessage) protoV2.Message {\n\treturn protoimpl.X.ProtoMessageV2Of(m)\n}\n\n// MessageReflect returns a reflective view for a message.\n// It returns nil if m is nil.\nfunc MessageReflect(m Message) protoreflect.Message {\n\treturn protoimpl.X.MessageOf(m)\n}\n\n// Marshaler is implemented by messages that can marshal themselves.\n// This interface is used by the following functions: Size, Marshal,\n// Buffer.Marshal, and Buffer.EncodeMessage.\n//\n// Deprecated: Do not implement.\ntype Marshaler interface {\n\t// Marshal formats the encoded bytes of the message.\n\t// It should be deterministic and emit valid protobuf wire data.\n\t// The caller takes ownership of the returned buffer.\n\tMarshal() ([]byte, error)\n}\n\n// Unmarshaler is implemented by messages that can unmarshal themselves.\n// This interface is used by the following functions: Unmarshal, UnmarshalMerge,\n// Buffer.Unmarshal, Buffer.DecodeMessage, and Buffer.DecodeGroup.\n//\n// Deprecated: Do not implement.\ntype Unmarshaler interface {\n\t// Unmarshal parses the encoded bytes of the protobuf wire input.\n\t// The provided buffer is only valid for during method call.\n\t// It should not reset the receiver message.\n\tUnmarshal([]byte) error\n}\n\n// Merger is implemented by messages that can merge themselves.\n// This interface is used by the following functions: Clone and Merge.\n//\n// Deprecated: Do not implement.\ntype Merger interface {\n\t// Merge merges the contents of src into the receiver message.\n\t// It clones all data structures in src such that it aliases no mutable\n\t// memory referenced by src.\n\tMerge(src Message)\n}\n\n// RequiredNotSetError is an error type returned when\n// marshaling or unmarshaling a message with missing required fields.\ntype RequiredNotSetError struct {\n\terr error\n}\n\nfunc (e *RequiredNotSetError) Error() string {\n\tif e.err != nil {\n\t\treturn e.err.Error()\n\t}\n\treturn \"proto: required field not set\"\n}\nfunc (e *RequiredNotSetError) RequiredNotSet() bool {\n\treturn true\n}\n\nfunc checkRequiredNotSet(m protoV2.Message) error {\n\tif err := protoV2.CheckInitialized(m); err != nil {\n\t\treturn &RequiredNotSetError{err: err}\n\t}\n\treturn nil\n}\n\n// Clone returns a deep copy of src.\nfunc Clone(src Message) Message {\n\treturn MessageV1(protoV2.Clone(MessageV2(src)))\n}\n\n// Merge merges src into dst, which must be messages of the same type.\n//\n// Populated scalar fields in src are copied to dst, while populated\n// singular messages in src are merged into dst by recursively calling Merge.\n// The elements of every list field in src is appended to the corresponded\n// list fields in dst. The entries of every map field in src is copied into\n// the corresponding map field in dst, possibly replacing existing entries.\n// The unknown fields of src are appended to the unknown fields of dst.\nfunc Merge(dst, src Message) {\n\tprotoV2.Merge(MessageV2(dst), MessageV2(src))\n}\n\n// Equal reports whether two messages are equal.\n// If two messages marshal to the same bytes under deterministic serialization,\n// then Equal is guaranteed to report true.\n//\n// Two messages are equal if they are the same protobuf message type,\n// have the same set of populated known and extension field values,\n// and the same set of unknown fields values.\n//\n// Scalar values are compared with the equivalent of the == operator in Go,\n// except bytes values which are compared using bytes.Equal and\n// floating point values which specially treat NaNs as equal.\n// Message values are compared by recursively calling Equal.\n// Lists are equal if each element value is also equal.\n// Maps are equal if they have the same set of keys, where the pair of values\n// for each key is also equal.\nfunc Equal(x, y Message) bool {\n\treturn protoV2.Equal(MessageV2(x), MessageV2(y))\n}\n\nfunc isMessageSet(md protoreflect.MessageDescriptor) bool {\n\tms, ok := md.(interface{ IsMessageSet() bool })\n\treturn ok && ms.IsMessageSet()\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/registry.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/reflect/protodesc\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\n// filePath is the path to the proto source file.\ntype filePath = string // e.g., \"google/protobuf/descriptor.proto\"\n\n// fileDescGZIP is the compressed contents of the encoded FileDescriptorProto.\ntype fileDescGZIP = []byte\n\nvar fileCache sync.Map // map[filePath]fileDescGZIP\n\n// RegisterFile is called from generated code to register the compressed\n// FileDescriptorProto with the file path for a proto source file.\n//\n// Deprecated: Use protoregistry.GlobalFiles.RegisterFile instead.\nfunc RegisterFile(s filePath, d fileDescGZIP) {\n\t// Decompress the descriptor.\n\tzr, err := gzip.NewReader(bytes.NewReader(d))\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"proto: invalid compressed file descriptor: %v\", err))\n\t}\n\tb, err := ioutil.ReadAll(zr)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"proto: invalid compressed file descriptor: %v\", err))\n\t}\n\n\t// Construct a protoreflect.FileDescriptor from the raw descriptor.\n\t// Note that DescBuilder.Build automatically registers the constructed\n\t// file descriptor with the v2 registry.\n\tprotoimpl.DescBuilder{RawDescriptor: b}.Build()\n\n\t// Locally cache the raw descriptor form for the file.\n\tfileCache.Store(s, d)\n}\n\n// FileDescriptor returns the compressed FileDescriptorProto given the file path\n// for a proto source file. It returns nil if not found.\n//\n// Deprecated: Use protoregistry.GlobalFiles.FindFileByPath instead.\nfunc FileDescriptor(s filePath) fileDescGZIP {\n\tif v, ok := fileCache.Load(s); ok {\n\t\treturn v.(fileDescGZIP)\n\t}\n\n\t// Find the descriptor in the v2 registry.\n\tvar b []byte\n\tif fd, _ := protoregistry.GlobalFiles.FindFileByPath(s); fd != nil {\n\t\tb, _ = Marshal(protodesc.ToFileDescriptorProto(fd))\n\t}\n\n\t// Locally cache the raw descriptor form for the file.\n\tif len(b) > 0 {\n\t\tv, _ := fileCache.LoadOrStore(s, protoimpl.X.CompressGZIP(b))\n\t\treturn v.(fileDescGZIP)\n\t}\n\treturn nil\n}\n\n// enumName is the name of an enum. For historical reasons, the enum name is\n// neither the full Go name nor the full protobuf name of the enum.\n// The name is the dot-separated combination of just the proto package that the\n// enum is declared within followed by the Go type name of the generated enum.\ntype enumName = string // e.g., \"my.proto.package.GoMessage_GoEnum\"\n\n// enumsByName maps enum values by name to their numeric counterpart.\ntype enumsByName = map[string]int32\n\n// enumsByNumber maps enum values by number to their name counterpart.\ntype enumsByNumber = map[int32]string\n\nvar enumCache sync.Map     // map[enumName]enumsByName\nvar numFilesCache sync.Map // map[protoreflect.FullName]int\n\n// RegisterEnum is called from the generated code to register the mapping of\n// enum value names to enum numbers for the enum identified by s.\n//\n// Deprecated: Use protoregistry.GlobalTypes.RegisterEnum instead.\nfunc RegisterEnum(s enumName, _ enumsByNumber, m enumsByName) {\n\tif _, ok := enumCache.Load(s); ok {\n\t\tpanic(\"proto: duplicate enum registered: \" + s)\n\t}\n\tenumCache.Store(s, m)\n\n\t// This does not forward registration to the v2 registry since this API\n\t// lacks sufficient information to construct a complete v2 enum descriptor.\n}\n\n// EnumValueMap returns the mapping from enum value names to enum numbers for\n// the enum of the given name. It returns nil if not found.\n//\n// Deprecated: Use protoregistry.GlobalTypes.FindEnumByName instead.\nfunc EnumValueMap(s enumName) enumsByName {\n\tif v, ok := enumCache.Load(s); ok {\n\t\treturn v.(enumsByName)\n\t}\n\n\t// Check whether the cache is stale. If the number of files in the current\n\t// package differs, then it means that some enums may have been recently\n\t// registered upstream that we do not know about.\n\tvar protoPkg protoreflect.FullName\n\tif i := strings.LastIndexByte(s, '.'); i >= 0 {\n\t\tprotoPkg = protoreflect.FullName(s[:i])\n\t}\n\tv, _ := numFilesCache.Load(protoPkg)\n\tnumFiles, _ := v.(int)\n\tif protoregistry.GlobalFiles.NumFilesByPackage(protoPkg) == numFiles {\n\t\treturn nil // cache is up-to-date; was not found earlier\n\t}\n\n\t// Update the enum cache for all enums declared in the given proto package.\n\tnumFiles = 0\n\tprotoregistry.GlobalFiles.RangeFilesByPackage(protoPkg, func(fd protoreflect.FileDescriptor) bool {\n\t\twalkEnums(fd, func(ed protoreflect.EnumDescriptor) {\n\t\t\tname := protoimpl.X.LegacyEnumName(ed)\n\t\t\tif _, ok := enumCache.Load(name); !ok {\n\t\t\t\tm := make(enumsByName)\n\t\t\t\tevs := ed.Values()\n\t\t\t\tfor i := evs.Len() - 1; i >= 0; i-- {\n\t\t\t\t\tev := evs.Get(i)\n\t\t\t\t\tm[string(ev.Name())] = int32(ev.Number())\n\t\t\t\t}\n\t\t\t\tenumCache.LoadOrStore(name, m)\n\t\t\t}\n\t\t})\n\t\tnumFiles++\n\t\treturn true\n\t})\n\tnumFilesCache.Store(protoPkg, numFiles)\n\n\t// Check cache again for enum map.\n\tif v, ok := enumCache.Load(s); ok {\n\t\treturn v.(enumsByName)\n\t}\n\treturn nil\n}\n\n// walkEnums recursively walks all enums declared in d.\nfunc walkEnums(d interface {\n\tEnums() protoreflect.EnumDescriptors\n\tMessages() protoreflect.MessageDescriptors\n}, f func(protoreflect.EnumDescriptor)) {\n\teds := d.Enums()\n\tfor i := eds.Len() - 1; i >= 0; i-- {\n\t\tf(eds.Get(i))\n\t}\n\tmds := d.Messages()\n\tfor i := mds.Len() - 1; i >= 0; i-- {\n\t\twalkEnums(mds.Get(i), f)\n\t}\n}\n\n// messageName is the full name of protobuf message.\ntype messageName = string\n\nvar messageTypeCache sync.Map // map[messageName]reflect.Type\n\n// RegisterType is called from generated code to register the message Go type\n// for a message of the given name.\n//\n// Deprecated: Use protoregistry.GlobalTypes.RegisterMessage instead.\nfunc RegisterType(m Message, s messageName) {\n\tmt := protoimpl.X.LegacyMessageTypeOf(m, protoreflect.FullName(s))\n\tif err := protoregistry.GlobalTypes.RegisterMessage(mt); err != nil {\n\t\tpanic(err)\n\t}\n\tmessageTypeCache.Store(s, reflect.TypeOf(m))\n}\n\n// RegisterMapType is called from generated code to register the Go map type\n// for a protobuf message representing a map entry.\n//\n// Deprecated: Do not use.\nfunc RegisterMapType(m interface{}, s messageName) {\n\tt := reflect.TypeOf(m)\n\tif t.Kind() != reflect.Map {\n\t\tpanic(fmt.Sprintf(\"invalid map kind: %v\", t))\n\t}\n\tif _, ok := messageTypeCache.Load(s); ok {\n\t\tpanic(fmt.Errorf(\"proto: duplicate proto message registered: %s\", s))\n\t}\n\tmessageTypeCache.Store(s, t)\n}\n\n// MessageType returns the message type for a named message.\n// It returns nil if not found.\n//\n// Deprecated: Use protoregistry.GlobalTypes.FindMessageByName instead.\nfunc MessageType(s messageName) reflect.Type {\n\tif v, ok := messageTypeCache.Load(s); ok {\n\t\treturn v.(reflect.Type)\n\t}\n\n\t// Derive the message type from the v2 registry.\n\tvar t reflect.Type\n\tif mt, _ := protoregistry.GlobalTypes.FindMessageByName(protoreflect.FullName(s)); mt != nil {\n\t\tt = messageGoType(mt)\n\t}\n\n\t// If we could not get a concrete type, it is possible that it is a\n\t// pseudo-message for a map entry.\n\tif t == nil {\n\t\td, _ := protoregistry.GlobalFiles.FindDescriptorByName(protoreflect.FullName(s))\n\t\tif md, _ := d.(protoreflect.MessageDescriptor); md != nil && md.IsMapEntry() {\n\t\t\tkt := goTypeForField(md.Fields().ByNumber(1))\n\t\t\tvt := goTypeForField(md.Fields().ByNumber(2))\n\t\t\tt = reflect.MapOf(kt, vt)\n\t\t}\n\t}\n\n\t// Locally cache the message type for the given name.\n\tif t != nil {\n\t\tv, _ := messageTypeCache.LoadOrStore(s, t)\n\t\treturn v.(reflect.Type)\n\t}\n\treturn nil\n}\n\nfunc goTypeForField(fd protoreflect.FieldDescriptor) reflect.Type {\n\tswitch k := fd.Kind(); k {\n\tcase protoreflect.EnumKind:\n\t\tif et, _ := protoregistry.GlobalTypes.FindEnumByName(fd.Enum().FullName()); et != nil {\n\t\t\treturn enumGoType(et)\n\t\t}\n\t\treturn reflect.TypeOf(protoreflect.EnumNumber(0))\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tif mt, _ := protoregistry.GlobalTypes.FindMessageByName(fd.Message().FullName()); mt != nil {\n\t\t\treturn messageGoType(mt)\n\t\t}\n\t\treturn reflect.TypeOf((*protoreflect.Message)(nil)).Elem()\n\tdefault:\n\t\treturn reflect.TypeOf(fd.Default().Interface())\n\t}\n}\n\nfunc enumGoType(et protoreflect.EnumType) reflect.Type {\n\treturn reflect.TypeOf(et.New(0))\n}\n\nfunc messageGoType(mt protoreflect.MessageType) reflect.Type {\n\treturn reflect.TypeOf(MessageV1(mt.Zero().Interface()))\n}\n\n// MessageName returns the full protobuf name for the given message type.\n//\n// Deprecated: Use protoreflect.MessageDescriptor.FullName instead.\nfunc MessageName(m Message) messageName {\n\tif m == nil {\n\t\treturn \"\"\n\t}\n\tif m, ok := m.(interface{ XXX_MessageName() messageName }); ok {\n\t\treturn m.XXX_MessageName()\n\t}\n\treturn messageName(protoimpl.X.MessageDescriptorOf(m).FullName())\n}\n\n// RegisterExtension is called from the generated code to register\n// the extension descriptor.\n//\n// Deprecated: Use protoregistry.GlobalTypes.RegisterExtension instead.\nfunc RegisterExtension(d *ExtensionDesc) {\n\tif err := protoregistry.GlobalTypes.RegisterExtension(d); err != nil {\n\t\tpanic(err)\n\t}\n}\n\ntype extensionsByNumber = map[int32]*ExtensionDesc\n\nvar extensionCache sync.Map // map[messageName]extensionsByNumber\n\n// RegisteredExtensions returns a map of the registered extensions for the\n// provided protobuf message, indexed by the extension field number.\n//\n// Deprecated: Use protoregistry.GlobalTypes.RangeExtensionsByMessage instead.\nfunc RegisteredExtensions(m Message) extensionsByNumber {\n\t// Check whether the cache is stale. If the number of extensions for\n\t// the given message differs, then it means that some extensions were\n\t// recently registered upstream that we do not know about.\n\ts := MessageName(m)\n\tv, _ := extensionCache.Load(s)\n\txs, _ := v.(extensionsByNumber)\n\tif protoregistry.GlobalTypes.NumExtensionsByMessage(protoreflect.FullName(s)) == len(xs) {\n\t\treturn xs // cache is up-to-date\n\t}\n\n\t// Cache is stale, re-compute the extensions map.\n\txs = make(extensionsByNumber)\n\tprotoregistry.GlobalTypes.RangeExtensionsByMessage(protoreflect.FullName(s), func(xt protoreflect.ExtensionType) bool {\n\t\tif xd, ok := xt.(*ExtensionDesc); ok {\n\t\t\txs[int32(xt.TypeDescriptor().Number())] = xd\n\t\t} else {\n\t\t\t// TODO: This implies that the protoreflect.ExtensionType is a\n\t\t\t// custom type not generated by protoc-gen-go. We could try and\n\t\t\t// convert the type to an ExtensionDesc.\n\t\t}\n\t\treturn true\n\t})\n\textensionCache.Store(s, xs)\n\treturn xs\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/text_decode.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 proto\n\nimport (\n\t\"encoding\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/prototext\"\n\tprotoV2 \"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nconst wrapTextUnmarshalV2 = false\n\n// ParseError is returned by UnmarshalText.\ntype ParseError struct {\n\tMessage string\n\n\t// Deprecated: Do not use.\n\tLine, Offset int\n}\n\nfunc (e *ParseError) Error() string {\n\tif wrapTextUnmarshalV2 {\n\t\treturn e.Message\n\t}\n\tif e.Line == 1 {\n\t\treturn fmt.Sprintf(\"line 1.%d: %v\", e.Offset, e.Message)\n\t}\n\treturn fmt.Sprintf(\"line %d: %v\", e.Line, e.Message)\n}\n\n// UnmarshalText parses a proto text formatted string into m.\nfunc UnmarshalText(s string, m Message) error {\n\tif u, ok := m.(encoding.TextUnmarshaler); ok {\n\t\treturn u.UnmarshalText([]byte(s))\n\t}\n\n\tm.Reset()\n\tmi := MessageV2(m)\n\n\tif wrapTextUnmarshalV2 {\n\t\terr := prototext.UnmarshalOptions{\n\t\t\tAllowPartial: true,\n\t\t}.Unmarshal([]byte(s), mi)\n\t\tif err != nil {\n\t\t\treturn &ParseError{Message: err.Error()}\n\t\t}\n\t\treturn checkRequiredNotSet(mi)\n\t} else {\n\t\tif err := newTextParser(s).unmarshalMessage(mi.ProtoReflect(), \"\"); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn checkRequiredNotSet(mi)\n\t}\n}\n\ntype textParser struct {\n\ts            string // remaining input\n\tdone         bool   // whether the parsing is finished (success or error)\n\tbacked       bool   // whether back() was called\n\toffset, line int\n\tcur          token\n}\n\ntype token struct {\n\tvalue    string\n\terr      *ParseError\n\tline     int    // line number\n\toffset   int    // byte number from start of input, not start of line\n\tunquoted string // the unquoted version of value, if it was a quoted string\n}\n\nfunc newTextParser(s string) *textParser {\n\tp := new(textParser)\n\tp.s = s\n\tp.line = 1\n\tp.cur.line = 1\n\treturn p\n}\n\nfunc (p *textParser) unmarshalMessage(m protoreflect.Message, terminator string) (err error) {\n\tmd := m.Descriptor()\n\tfds := md.Fields()\n\n\t// A struct is a sequence of \"name: value\", terminated by one of\n\t// '>' or '}', or the end of the input.  A name may also be\n\t// \"[extension]\" or \"[type/url]\".\n\t//\n\t// The whole struct can also be an expanded Any message, like:\n\t// [type/url] < ... struct contents ... >\n\tseen := make(map[protoreflect.FieldNumber]bool)\n\tfor {\n\t\ttok := p.next()\n\t\tif tok.err != nil {\n\t\t\treturn tok.err\n\t\t}\n\t\tif tok.value == terminator {\n\t\t\tbreak\n\t\t}\n\t\tif tok.value == \"[\" {\n\t\t\tif err := p.unmarshalExtensionOrAny(m, seen); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// This is a normal, non-extension field.\n\t\tname := protoreflect.Name(tok.value)\n\t\tfd := fds.ByName(name)\n\t\tswitch {\n\t\tcase fd == nil:\n\t\t\tgd := fds.ByName(protoreflect.Name(strings.ToLower(string(name))))\n\t\t\tif gd != nil && gd.Kind() == protoreflect.GroupKind && gd.Message().Name() == name {\n\t\t\t\tfd = gd\n\t\t\t}\n\t\tcase fd.Kind() == protoreflect.GroupKind && fd.Message().Name() != name:\n\t\t\tfd = nil\n\t\tcase fd.IsWeak() && fd.Message().IsPlaceholder():\n\t\t\tfd = nil\n\t\t}\n\t\tif fd == nil {\n\t\t\ttypeName := string(md.FullName())\n\t\t\tif m, ok := m.Interface().(Message); ok {\n\t\t\t\tt := reflect.TypeOf(m)\n\t\t\t\tif t.Kind() == reflect.Ptr {\n\t\t\t\t\ttypeName = t.Elem().String()\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn p.errorf(\"unknown field name %q in %v\", name, typeName)\n\t\t}\n\t\tif od := fd.ContainingOneof(); od != nil && m.WhichOneof(od) != nil {\n\t\t\treturn p.errorf(\"field '%s' would overwrite already parsed oneof '%s'\", name, od.Name())\n\t\t}\n\t\tif fd.Cardinality() != protoreflect.Repeated && seen[fd.Number()] {\n\t\t\treturn p.errorf(\"non-repeated field %q was repeated\", fd.Name())\n\t\t}\n\t\tseen[fd.Number()] = true\n\n\t\t// Consume any colon.\n\t\tif err := p.checkForColon(fd); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Parse into the field.\n\t\tv := m.Get(fd)\n\t\tif !m.Has(fd) && (fd.IsList() || fd.IsMap() || fd.Message() != nil) {\n\t\t\tv = m.Mutable(fd)\n\t\t}\n\t\tif v, err = p.unmarshalValue(v, fd); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tm.Set(fd, v)\n\n\t\tif err := p.consumeOptionalSeparator(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (p *textParser) unmarshalExtensionOrAny(m protoreflect.Message, seen map[protoreflect.FieldNumber]bool) error {\n\tname, err := p.consumeExtensionOrAnyName()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// If it contains a slash, it's an Any type URL.\n\tif slashIdx := strings.LastIndex(name, \"/\"); slashIdx >= 0 {\n\t\ttok := p.next()\n\t\tif tok.err != nil {\n\t\t\treturn tok.err\n\t\t}\n\t\t// consume an optional colon\n\t\tif tok.value == \":\" {\n\t\t\ttok = p.next()\n\t\t\tif tok.err != nil {\n\t\t\t\treturn tok.err\n\t\t\t}\n\t\t}\n\n\t\tvar terminator string\n\t\tswitch tok.value {\n\t\tcase \"<\":\n\t\t\tterminator = \">\"\n\t\tcase \"{\":\n\t\t\tterminator = \"}\"\n\t\tdefault:\n\t\t\treturn p.errorf(\"expected '{' or '<', found %q\", tok.value)\n\t\t}\n\n\t\tmt, err := protoregistry.GlobalTypes.FindMessageByURL(name)\n\t\tif err != nil {\n\t\t\treturn p.errorf(\"unrecognized message %q in google.protobuf.Any\", name[slashIdx+len(\"/\"):])\n\t\t}\n\t\tm2 := mt.New()\n\t\tif err := p.unmarshalMessage(m2, terminator); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tb, err := protoV2.Marshal(m2.Interface())\n\t\tif err != nil {\n\t\t\treturn p.errorf(\"failed to marshal message of type %q: %v\", name[slashIdx+len(\"/\"):], err)\n\t\t}\n\n\t\turlFD := m.Descriptor().Fields().ByName(\"type_url\")\n\t\tvalFD := m.Descriptor().Fields().ByName(\"value\")\n\t\tif seen[urlFD.Number()] {\n\t\t\treturn p.errorf(\"Any message unpacked multiple times, or %q already set\", urlFD.Name())\n\t\t}\n\t\tif seen[valFD.Number()] {\n\t\t\treturn p.errorf(\"Any message unpacked multiple times, or %q already set\", valFD.Name())\n\t\t}\n\t\tm.Set(urlFD, protoreflect.ValueOfString(name))\n\t\tm.Set(valFD, protoreflect.ValueOfBytes(b))\n\t\tseen[urlFD.Number()] = true\n\t\tseen[valFD.Number()] = true\n\t\treturn nil\n\t}\n\n\txname := protoreflect.FullName(name)\n\txt, _ := protoregistry.GlobalTypes.FindExtensionByName(xname)\n\tif xt == nil && isMessageSet(m.Descriptor()) {\n\t\txt, _ = protoregistry.GlobalTypes.FindExtensionByName(xname.Append(\"message_set_extension\"))\n\t}\n\tif xt == nil {\n\t\treturn p.errorf(\"unrecognized extension %q\", name)\n\t}\n\tfd := xt.TypeDescriptor()\n\tif fd.ContainingMessage().FullName() != m.Descriptor().FullName() {\n\t\treturn p.errorf(\"extension field %q does not extend message %q\", name, m.Descriptor().FullName())\n\t}\n\n\tif err := p.checkForColon(fd); err != nil {\n\t\treturn err\n\t}\n\n\tv := m.Get(fd)\n\tif !m.Has(fd) && (fd.IsList() || fd.IsMap() || fd.Message() != nil) {\n\t\tv = m.Mutable(fd)\n\t}\n\tv, err = p.unmarshalValue(v, fd)\n\tif err != nil {\n\t\treturn err\n\t}\n\tm.Set(fd, v)\n\treturn p.consumeOptionalSeparator()\n}\n\nfunc (p *textParser) unmarshalValue(v protoreflect.Value, fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn v, tok.err\n\t}\n\tif tok.value == \"\" {\n\t\treturn v, p.errorf(\"unexpected EOF\")\n\t}\n\n\tswitch {\n\tcase fd.IsList():\n\t\tlv := v.List()\n\t\tvar err error\n\t\tif tok.value == \"[\" {\n\t\t\t// Repeated field with list notation, like [1,2,3].\n\t\t\tfor {\n\t\t\t\tvv := lv.NewElement()\n\t\t\t\tvv, err = p.unmarshalSingularValue(vv, fd)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\t\tlv.Append(vv)\n\n\t\t\t\ttok := p.next()\n\t\t\t\tif tok.err != nil {\n\t\t\t\t\treturn v, tok.err\n\t\t\t\t}\n\t\t\t\tif tok.value == \"]\" {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif tok.value != \",\" {\n\t\t\t\t\treturn v, p.errorf(\"Expected ']' or ',' found %q\", tok.value)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn v, nil\n\t\t}\n\n\t\t// One value of the repeated field.\n\t\tp.back()\n\t\tvv := lv.NewElement()\n\t\tvv, err = p.unmarshalSingularValue(vv, fd)\n\t\tif err != nil {\n\t\t\treturn v, err\n\t\t}\n\t\tlv.Append(vv)\n\t\treturn v, nil\n\tcase fd.IsMap():\n\t\t// The map entry should be this sequence of tokens:\n\t\t//\t< key : KEY value : VALUE >\n\t\t// However, implementations may omit key or value, and technically\n\t\t// we should support them in any order.\n\t\tvar terminator string\n\t\tswitch tok.value {\n\t\tcase \"<\":\n\t\t\tterminator = \">\"\n\t\tcase \"{\":\n\t\t\tterminator = \"}\"\n\t\tdefault:\n\t\t\treturn v, p.errorf(\"expected '{' or '<', found %q\", tok.value)\n\t\t}\n\n\t\tkeyFD := fd.MapKey()\n\t\tvalFD := fd.MapValue()\n\n\t\tmv := v.Map()\n\t\tkv := keyFD.Default()\n\t\tvv := mv.NewValue()\n\t\tfor {\n\t\t\ttok := p.next()\n\t\t\tif tok.err != nil {\n\t\t\t\treturn v, tok.err\n\t\t\t}\n\t\t\tif tok.value == terminator {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar err error\n\t\t\tswitch tok.value {\n\t\t\tcase \"key\":\n\t\t\t\tif err := p.consumeToken(\":\"); err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\t\tif kv, err = p.unmarshalSingularValue(kv, keyFD); err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\t\tif err := p.consumeOptionalSeparator(); err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\tcase \"value\":\n\t\t\t\tif err := p.checkForColon(valFD); err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\t\tif vv, err = p.unmarshalSingularValue(vv, valFD); err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\t\tif err := p.consumeOptionalSeparator(); err != nil {\n\t\t\t\t\treturn v, err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tp.back()\n\t\t\t\treturn v, p.errorf(`expected \"key\", \"value\", or %q, found %q`, terminator, tok.value)\n\t\t\t}\n\t\t}\n\t\tmv.Set(kv.MapKey(), vv)\n\t\treturn v, nil\n\tdefault:\n\t\tp.back()\n\t\treturn p.unmarshalSingularValue(v, fd)\n\t}\n}\n\nfunc (p *textParser) unmarshalSingularValue(v protoreflect.Value, fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn v, tok.err\n\t}\n\tif tok.value == \"\" {\n\t\treturn v, p.errorf(\"unexpected EOF\")\n\t}\n\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tswitch tok.value {\n\t\tcase \"true\", \"1\", \"t\", \"True\":\n\t\t\treturn protoreflect.ValueOfBool(true), nil\n\t\tcase \"false\", \"0\", \"f\", \"False\":\n\t\t\treturn protoreflect.ValueOfBool(false), nil\n\t\t}\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif x, err := strconv.ParseInt(tok.value, 0, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfInt32(int32(x)), nil\n\t\t}\n\n\t\t// The C++ parser accepts large positive hex numbers that uses\n\t\t// two's complement arithmetic to represent negative numbers.\n\t\t// This feature is here for backwards compatibility with C++.\n\t\tif strings.HasPrefix(tok.value, \"0x\") {\n\t\t\tif x, err := strconv.ParseUint(tok.value, 0, 32); err == nil {\n\t\t\t\treturn protoreflect.ValueOfInt32(int32(-(int64(^x) + 1))), nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif x, err := strconv.ParseInt(tok.value, 0, 64); err == nil {\n\t\t\treturn protoreflect.ValueOfInt64(int64(x)), nil\n\t\t}\n\n\t\t// The C++ parser accepts large positive hex numbers that uses\n\t\t// two's complement arithmetic to represent negative numbers.\n\t\t// This feature is here for backwards compatibility with C++.\n\t\tif strings.HasPrefix(tok.value, \"0x\") {\n\t\t\tif x, err := strconv.ParseUint(tok.value, 0, 64); err == nil {\n\t\t\t\treturn protoreflect.ValueOfInt64(int64(-(int64(^x) + 1))), nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif x, err := strconv.ParseUint(tok.value, 0, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfUint32(uint32(x)), nil\n\t\t}\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif x, err := strconv.ParseUint(tok.value, 0, 64); err == nil {\n\t\t\treturn protoreflect.ValueOfUint64(uint64(x)), nil\n\t\t}\n\tcase protoreflect.FloatKind:\n\t\t// Ignore 'f' for compatibility with output generated by C++,\n\t\t// but don't remove 'f' when the value is \"-inf\" or \"inf\".\n\t\tv := tok.value\n\t\tif strings.HasSuffix(v, \"f\") && v != \"-inf\" && v != \"inf\" {\n\t\t\tv = v[:len(v)-len(\"f\")]\n\t\t}\n\t\tif x, err := strconv.ParseFloat(v, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfFloat32(float32(x)), nil\n\t\t}\n\tcase protoreflect.DoubleKind:\n\t\t// Ignore 'f' for compatibility with output generated by C++,\n\t\t// but don't remove 'f' when the value is \"-inf\" or \"inf\".\n\t\tv := tok.value\n\t\tif strings.HasSuffix(v, \"f\") && v != \"-inf\" && v != \"inf\" {\n\t\t\tv = v[:len(v)-len(\"f\")]\n\t\t}\n\t\tif x, err := strconv.ParseFloat(v, 64); err == nil {\n\t\t\treturn protoreflect.ValueOfFloat64(float64(x)), nil\n\t\t}\n\tcase protoreflect.StringKind:\n\t\tif isQuote(tok.value[0]) {\n\t\t\treturn protoreflect.ValueOfString(tok.unquoted), nil\n\t\t}\n\tcase protoreflect.BytesKind:\n\t\tif isQuote(tok.value[0]) {\n\t\t\treturn protoreflect.ValueOfBytes([]byte(tok.unquoted)), nil\n\t\t}\n\tcase protoreflect.EnumKind:\n\t\tif x, err := strconv.ParseInt(tok.value, 0, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(x)), nil\n\t\t}\n\t\tvd := fd.Enum().Values().ByName(protoreflect.Name(tok.value))\n\t\tif vd != nil {\n\t\t\treturn protoreflect.ValueOfEnum(vd.Number()), nil\n\t\t}\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tvar terminator string\n\t\tswitch tok.value {\n\t\tcase \"{\":\n\t\t\tterminator = \"}\"\n\t\tcase \"<\":\n\t\t\tterminator = \">\"\n\t\tdefault:\n\t\t\treturn v, p.errorf(\"expected '{' or '<', found %q\", tok.value)\n\t\t}\n\t\terr := p.unmarshalMessage(v.Message(), terminator)\n\t\treturn v, err\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid kind %v\", fd.Kind()))\n\t}\n\treturn v, p.errorf(\"invalid %v: %v\", fd.Kind(), tok.value)\n}\n\n// Consume a ':' from the input stream (if the next token is a colon),\n// returning an error if a colon is needed but not present.\nfunc (p *textParser) checkForColon(fd protoreflect.FieldDescriptor) *ParseError {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn tok.err\n\t}\n\tif tok.value != \":\" {\n\t\tif fd.Message() == nil {\n\t\t\treturn p.errorf(\"expected ':', found %q\", tok.value)\n\t\t}\n\t\tp.back()\n\t}\n\treturn nil\n}\n\n// consumeExtensionOrAnyName consumes an extension name or an Any type URL and\n// the following ']'. It returns the name or URL consumed.\nfunc (p *textParser) consumeExtensionOrAnyName() (string, error) {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn \"\", tok.err\n\t}\n\n\t// If extension name or type url is quoted, it's a single token.\n\tif len(tok.value) > 2 && isQuote(tok.value[0]) && tok.value[len(tok.value)-1] == tok.value[0] {\n\t\tname, err := unquoteC(tok.value[1:len(tok.value)-1], rune(tok.value[0]))\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn name, p.consumeToken(\"]\")\n\t}\n\n\t// Consume everything up to \"]\"\n\tvar parts []string\n\tfor tok.value != \"]\" {\n\t\tparts = append(parts, tok.value)\n\t\ttok = p.next()\n\t\tif tok.err != nil {\n\t\t\treturn \"\", p.errorf(\"unrecognized type_url or extension name: %s\", tok.err)\n\t\t}\n\t\tif p.done && tok.value != \"]\" {\n\t\t\treturn \"\", p.errorf(\"unclosed type_url or extension name\")\n\t\t}\n\t}\n\treturn strings.Join(parts, \"\"), nil\n}\n\n// consumeOptionalSeparator consumes an optional semicolon or comma.\n// It is used in unmarshalMessage to provide backward compatibility.\nfunc (p *textParser) consumeOptionalSeparator() error {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn tok.err\n\t}\n\tif tok.value != \";\" && tok.value != \",\" {\n\t\tp.back()\n\t}\n\treturn nil\n}\n\nfunc (p *textParser) errorf(format string, a ...interface{}) *ParseError {\n\tpe := &ParseError{fmt.Sprintf(format, a...), p.cur.line, p.cur.offset}\n\tp.cur.err = pe\n\tp.done = true\n\treturn pe\n}\n\nfunc (p *textParser) skipWhitespace() {\n\ti := 0\n\tfor i < len(p.s) && (isWhitespace(p.s[i]) || p.s[i] == '#') {\n\t\tif p.s[i] == '#' {\n\t\t\t// comment; skip to end of line or input\n\t\t\tfor i < len(p.s) && p.s[i] != '\\n' {\n\t\t\t\ti++\n\t\t\t}\n\t\t\tif i == len(p.s) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif p.s[i] == '\\n' {\n\t\t\tp.line++\n\t\t}\n\t\ti++\n\t}\n\tp.offset += i\n\tp.s = p.s[i:len(p.s)]\n\tif len(p.s) == 0 {\n\t\tp.done = true\n\t}\n}\n\nfunc (p *textParser) advance() {\n\t// Skip whitespace\n\tp.skipWhitespace()\n\tif p.done {\n\t\treturn\n\t}\n\n\t// Start of non-whitespace\n\tp.cur.err = nil\n\tp.cur.offset, p.cur.line = p.offset, p.line\n\tp.cur.unquoted = \"\"\n\tswitch p.s[0] {\n\tcase '<', '>', '{', '}', ':', '[', ']', ';', ',', '/':\n\t\t// Single symbol\n\t\tp.cur.value, p.s = p.s[0:1], p.s[1:len(p.s)]\n\tcase '\"', '\\'':\n\t\t// Quoted string\n\t\ti := 1\n\t\tfor i < len(p.s) && p.s[i] != p.s[0] && p.s[i] != '\\n' {\n\t\t\tif p.s[i] == '\\\\' && i+1 < len(p.s) {\n\t\t\t\t// skip escaped char\n\t\t\t\ti++\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t\tif i >= len(p.s) || p.s[i] != p.s[0] {\n\t\t\tp.errorf(\"unmatched quote\")\n\t\t\treturn\n\t\t}\n\t\tunq, err := unquoteC(p.s[1:i], rune(p.s[0]))\n\t\tif err != nil {\n\t\t\tp.errorf(\"invalid quoted string %s: %v\", p.s[0:i+1], err)\n\t\t\treturn\n\t\t}\n\t\tp.cur.value, p.s = p.s[0:i+1], p.s[i+1:len(p.s)]\n\t\tp.cur.unquoted = unq\n\tdefault:\n\t\ti := 0\n\t\tfor i < len(p.s) && isIdentOrNumberChar(p.s[i]) {\n\t\t\ti++\n\t\t}\n\t\tif i == 0 {\n\t\t\tp.errorf(\"unexpected byte %#x\", p.s[0])\n\t\t\treturn\n\t\t}\n\t\tp.cur.value, p.s = p.s[0:i], p.s[i:len(p.s)]\n\t}\n\tp.offset += len(p.cur.value)\n}\n\n// Back off the parser by one token. Can only be done between calls to next().\n// It makes the next advance() a no-op.\nfunc (p *textParser) back() { p.backed = true }\n\n// Advances the parser and returns the new current token.\nfunc (p *textParser) next() *token {\n\tif p.backed || p.done {\n\t\tp.backed = false\n\t\treturn &p.cur\n\t}\n\tp.advance()\n\tif p.done {\n\t\tp.cur.value = \"\"\n\t} else if len(p.cur.value) > 0 && isQuote(p.cur.value[0]) {\n\t\t// Look for multiple quoted strings separated by whitespace,\n\t\t// and concatenate them.\n\t\tcat := p.cur\n\t\tfor {\n\t\t\tp.skipWhitespace()\n\t\t\tif p.done || !isQuote(p.s[0]) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tp.advance()\n\t\t\tif p.cur.err != nil {\n\t\t\t\treturn &p.cur\n\t\t\t}\n\t\t\tcat.value += \" \" + p.cur.value\n\t\t\tcat.unquoted += p.cur.unquoted\n\t\t}\n\t\tp.done = false // parser may have seen EOF, but we want to return cat\n\t\tp.cur = cat\n\t}\n\treturn &p.cur\n}\n\nfunc (p *textParser) consumeToken(s string) error {\n\ttok := p.next()\n\tif tok.err != nil {\n\t\treturn tok.err\n\t}\n\tif tok.value != s {\n\t\tp.back()\n\t\treturn p.errorf(\"expected %q, found %q\", s, tok.value)\n\t}\n\treturn nil\n}\n\nvar errBadUTF8 = errors.New(\"proto: bad UTF-8\")\n\nfunc unquoteC(s string, quote rune) (string, error) {\n\t// This is based on C++'s tokenizer.cc.\n\t// Despite its name, this is *not* parsing C syntax.\n\t// For instance, \"\\0\" is an invalid quoted string.\n\n\t// Avoid allocation in trivial cases.\n\tsimple := true\n\tfor _, r := range s {\n\t\tif r == '\\\\' || r == quote {\n\t\t\tsimple = false\n\t\t\tbreak\n\t\t}\n\t}\n\tif simple {\n\t\treturn s, nil\n\t}\n\n\tbuf := make([]byte, 0, 3*len(s)/2)\n\tfor len(s) > 0 {\n\t\tr, n := utf8.DecodeRuneInString(s)\n\t\tif r == utf8.RuneError && n == 1 {\n\t\t\treturn \"\", errBadUTF8\n\t\t}\n\t\ts = s[n:]\n\t\tif r != '\\\\' {\n\t\t\tif r < utf8.RuneSelf {\n\t\t\t\tbuf = append(buf, byte(r))\n\t\t\t} else {\n\t\t\t\tbuf = append(buf, string(r)...)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tch, tail, err := unescape(s)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tbuf = append(buf, ch...)\n\t\ts = tail\n\t}\n\treturn string(buf), nil\n}\n\nfunc unescape(s string) (ch string, tail string, err error) {\n\tr, n := utf8.DecodeRuneInString(s)\n\tif r == utf8.RuneError && n == 1 {\n\t\treturn \"\", \"\", errBadUTF8\n\t}\n\ts = s[n:]\n\tswitch r {\n\tcase 'a':\n\t\treturn \"\\a\", s, nil\n\tcase 'b':\n\t\treturn \"\\b\", s, nil\n\tcase 'f':\n\t\treturn \"\\f\", s, nil\n\tcase 'n':\n\t\treturn \"\\n\", s, nil\n\tcase 'r':\n\t\treturn \"\\r\", s, nil\n\tcase 't':\n\t\treturn \"\\t\", s, nil\n\tcase 'v':\n\t\treturn \"\\v\", s, nil\n\tcase '?':\n\t\treturn \"?\", s, nil // trigraph workaround\n\tcase '\\'', '\"', '\\\\':\n\t\treturn string(r), s, nil\n\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\tif len(s) < 2 {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%c requires 2 following digits`, r)\n\t\t}\n\t\tss := string(r) + s[:2]\n\t\ts = s[2:]\n\t\ti, err := strconv.ParseUint(ss, 8, 8)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%s contains non-octal digits`, ss)\n\t\t}\n\t\treturn string([]byte{byte(i)}), s, nil\n\tcase 'x', 'X', 'u', 'U':\n\t\tvar n int\n\t\tswitch r {\n\t\tcase 'x', 'X':\n\t\t\tn = 2\n\t\tcase 'u':\n\t\t\tn = 4\n\t\tcase 'U':\n\t\t\tn = 8\n\t\t}\n\t\tif len(s) < n {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%c requires %d following digits`, r, n)\n\t\t}\n\t\tss := s[:n]\n\t\ts = s[n:]\n\t\ti, err := strconv.ParseUint(ss, 16, 64)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%c%s contains non-hexadecimal digits`, r, ss)\n\t\t}\n\t\tif r == 'x' || r == 'X' {\n\t\t\treturn string([]byte{byte(i)}), s, nil\n\t\t}\n\t\tif i > utf8.MaxRune {\n\t\t\treturn \"\", \"\", fmt.Errorf(`\\%c%s is not a valid Unicode code point`, r, ss)\n\t\t}\n\t\treturn string(rune(i)), s, nil\n\t}\n\treturn \"\", \"\", fmt.Errorf(`unknown escape \\%c`, r)\n}\n\nfunc isIdentOrNumberChar(c byte) bool {\n\tswitch {\n\tcase 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z':\n\t\treturn true\n\tcase '0' <= c && c <= '9':\n\t\treturn true\n\t}\n\tswitch c {\n\tcase '-', '+', '.', '_':\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc isWhitespace(c byte) bool {\n\tswitch c {\n\tcase ' ', '\\t', '\\n', '\\r':\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc isQuote(c byte) bool {\n\tswitch c {\n\tcase '\"', '\\'':\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/text_encode.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 proto\n\nimport (\n\t\"bytes\"\n\t\"encoding\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/encoding/prototext\"\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nconst wrapTextMarshalV2 = false\n\n// TextMarshaler is a configurable text format marshaler.\ntype TextMarshaler struct {\n\tCompact   bool // use compact text format (one line)\n\tExpandAny bool // expand google.protobuf.Any messages of known types\n}\n\n// Marshal writes the proto text format of m to w.\nfunc (tm *TextMarshaler) Marshal(w io.Writer, m Message) error {\n\tb, err := tm.marshal(m)\n\tif len(b) > 0 {\n\t\tif _, err := w.Write(b); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn err\n}\n\n// Text returns a proto text formatted string of m.\nfunc (tm *TextMarshaler) Text(m Message) string {\n\tb, _ := tm.marshal(m)\n\treturn string(b)\n}\n\nfunc (tm *TextMarshaler) marshal(m Message) ([]byte, error) {\n\tmr := MessageReflect(m)\n\tif mr == nil || !mr.IsValid() {\n\t\treturn []byte(\"<nil>\"), nil\n\t}\n\n\tif wrapTextMarshalV2 {\n\t\tif m, ok := m.(encoding.TextMarshaler); ok {\n\t\t\treturn m.MarshalText()\n\t\t}\n\n\t\topts := prototext.MarshalOptions{\n\t\t\tAllowPartial: true,\n\t\t\tEmitUnknown:  true,\n\t\t}\n\t\tif !tm.Compact {\n\t\t\topts.Indent = \"  \"\n\t\t}\n\t\tif !tm.ExpandAny {\n\t\t\topts.Resolver = (*protoregistry.Types)(nil)\n\t\t}\n\t\treturn opts.Marshal(mr.Interface())\n\t} else {\n\t\tw := &textWriter{\n\t\t\tcompact:   tm.Compact,\n\t\t\texpandAny: tm.ExpandAny,\n\t\t\tcomplete:  true,\n\t\t}\n\n\t\tif m, ok := m.(encoding.TextMarshaler); ok {\n\t\t\tb, err := m.MarshalText()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tw.Write(b)\n\t\t\treturn w.buf, nil\n\t\t}\n\n\t\terr := w.writeMessage(mr)\n\t\treturn w.buf, err\n\t}\n}\n\nvar (\n\tdefaultTextMarshaler = TextMarshaler{}\n\tcompactTextMarshaler = TextMarshaler{Compact: true}\n)\n\n// MarshalText writes the proto text format of m to w.\nfunc MarshalText(w io.Writer, m Message) error { return defaultTextMarshaler.Marshal(w, m) }\n\n// MarshalTextString returns a proto text formatted string of m.\nfunc MarshalTextString(m Message) string { return defaultTextMarshaler.Text(m) }\n\n// CompactText writes the compact proto text format of m to w.\nfunc CompactText(w io.Writer, m Message) error { return compactTextMarshaler.Marshal(w, m) }\n\n// CompactTextString returns a compact proto text formatted string of m.\nfunc CompactTextString(m Message) string { return compactTextMarshaler.Text(m) }\n\nvar (\n\tnewline         = []byte(\"\\n\")\n\tendBraceNewline = []byte(\"}\\n\")\n\tposInf          = []byte(\"inf\")\n\tnegInf          = []byte(\"-inf\")\n\tnan             = []byte(\"nan\")\n)\n\n// textWriter is an io.Writer that tracks its indentation level.\ntype textWriter struct {\n\tcompact   bool // same as TextMarshaler.Compact\n\texpandAny bool // same as TextMarshaler.ExpandAny\n\tcomplete  bool // whether the current position is a complete line\n\tindent    int  // indentation level; never negative\n\tbuf       []byte\n}\n\nfunc (w *textWriter) Write(p []byte) (n int, _ error) {\n\tnewlines := bytes.Count(p, newline)\n\tif newlines == 0 {\n\t\tif !w.compact && w.complete {\n\t\t\tw.writeIndent()\n\t\t}\n\t\tw.buf = append(w.buf, p...)\n\t\tw.complete = false\n\t\treturn len(p), nil\n\t}\n\n\tfrags := bytes.SplitN(p, newline, newlines+1)\n\tif w.compact {\n\t\tfor i, frag := range frags {\n\t\t\tif i > 0 {\n\t\t\t\tw.buf = append(w.buf, ' ')\n\t\t\t\tn++\n\t\t\t}\n\t\t\tw.buf = append(w.buf, frag...)\n\t\t\tn += len(frag)\n\t\t}\n\t\treturn n, nil\n\t}\n\n\tfor i, frag := range frags {\n\t\tif w.complete {\n\t\t\tw.writeIndent()\n\t\t}\n\t\tw.buf = append(w.buf, frag...)\n\t\tn += len(frag)\n\t\tif i+1 < len(frags) {\n\t\t\tw.buf = append(w.buf, '\\n')\n\t\t\tn++\n\t\t}\n\t}\n\tw.complete = len(frags[len(frags)-1]) == 0\n\treturn n, nil\n}\n\nfunc (w *textWriter) WriteByte(c byte) error {\n\tif w.compact && c == '\\n' {\n\t\tc = ' '\n\t}\n\tif !w.compact && w.complete {\n\t\tw.writeIndent()\n\t}\n\tw.buf = append(w.buf, c)\n\tw.complete = c == '\\n'\n\treturn nil\n}\n\nfunc (w *textWriter) writeName(fd protoreflect.FieldDescriptor) {\n\tif !w.compact && w.complete {\n\t\tw.writeIndent()\n\t}\n\tw.complete = false\n\n\tif fd.Kind() != protoreflect.GroupKind {\n\t\tw.buf = append(w.buf, fd.Name()...)\n\t\tw.WriteByte(':')\n\t} else {\n\t\t// Use message type name for group field name.\n\t\tw.buf = append(w.buf, fd.Message().Name()...)\n\t}\n\n\tif !w.compact {\n\t\tw.WriteByte(' ')\n\t}\n}\n\nfunc requiresQuotes(u string) bool {\n\t// When type URL contains any characters except [0-9A-Za-z./\\-]*, it must be quoted.\n\tfor _, ch := range u {\n\t\tswitch {\n\t\tcase ch == '.' || ch == '/' || ch == '_':\n\t\t\tcontinue\n\t\tcase '0' <= ch && ch <= '9':\n\t\t\tcontinue\n\t\tcase 'A' <= ch && ch <= 'Z':\n\t\t\tcontinue\n\t\tcase 'a' <= ch && ch <= 'z':\n\t\t\tcontinue\n\t\tdefault:\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// writeProto3Any writes an expanded google.protobuf.Any message.\n//\n// It returns (false, nil) if sv value can't be unmarshaled (e.g. because\n// required messages are not linked in).\n//\n// It returns (true, error) when sv was written in expanded format or an error\n// was encountered.\nfunc (w *textWriter) writeProto3Any(m protoreflect.Message) (bool, error) {\n\tmd := m.Descriptor()\n\tfdURL := md.Fields().ByName(\"type_url\")\n\tfdVal := md.Fields().ByName(\"value\")\n\n\turl := m.Get(fdURL).String()\n\tmt, err := protoregistry.GlobalTypes.FindMessageByURL(url)\n\tif err != nil {\n\t\treturn false, nil\n\t}\n\n\tb := m.Get(fdVal).Bytes()\n\tm2 := mt.New()\n\tif err := proto.Unmarshal(b, m2.Interface()); err != nil {\n\t\treturn false, nil\n\t}\n\tw.Write([]byte(\"[\"))\n\tif requiresQuotes(url) {\n\t\tw.writeQuotedString(url)\n\t} else {\n\t\tw.Write([]byte(url))\n\t}\n\tif w.compact {\n\t\tw.Write([]byte(\"]:<\"))\n\t} else {\n\t\tw.Write([]byte(\"]: <\\n\"))\n\t\tw.indent++\n\t}\n\tif err := w.writeMessage(m2); err != nil {\n\t\treturn true, err\n\t}\n\tif w.compact {\n\t\tw.Write([]byte(\"> \"))\n\t} else {\n\t\tw.indent--\n\t\tw.Write([]byte(\">\\n\"))\n\t}\n\treturn true, nil\n}\n\nfunc (w *textWriter) writeMessage(m protoreflect.Message) error {\n\tmd := m.Descriptor()\n\tif w.expandAny && md.FullName() == \"google.protobuf.Any\" {\n\t\tif canExpand, err := w.writeProto3Any(m); canExpand {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfds := md.Fields()\n\tfor i := 0; i < fds.Len(); {\n\t\tfd := fds.Get(i)\n\t\tif od := fd.ContainingOneof(); od != nil {\n\t\t\tfd = m.WhichOneof(od)\n\t\t\ti += od.Fields().Len()\n\t\t} else {\n\t\t\ti++\n\t\t}\n\t\tif fd == nil || !m.Has(fd) {\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch {\n\t\tcase fd.IsList():\n\t\t\tlv := m.Get(fd).List()\n\t\t\tfor j := 0; j < lv.Len(); j++ {\n\t\t\t\tw.writeName(fd)\n\t\t\t\tv := lv.Get(j)\n\t\t\t\tif err := w.writeSingularValue(v, fd); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tw.WriteByte('\\n')\n\t\t\t}\n\t\tcase fd.IsMap():\n\t\t\tkfd := fd.MapKey()\n\t\t\tvfd := fd.MapValue()\n\t\t\tmv := m.Get(fd).Map()\n\n\t\t\ttype entry struct{ key, val protoreflect.Value }\n\t\t\tvar entries []entry\n\t\t\tmv.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool {\n\t\t\t\tentries = append(entries, entry{k.Value(), v})\n\t\t\t\treturn true\n\t\t\t})\n\t\t\tsort.Slice(entries, func(i, j int) bool {\n\t\t\t\tswitch kfd.Kind() {\n\t\t\t\tcase protoreflect.BoolKind:\n\t\t\t\t\treturn !entries[i].key.Bool() && entries[j].key.Bool()\n\t\t\t\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\t\t\t\treturn entries[i].key.Int() < entries[j].key.Int()\n\t\t\t\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind, protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\t\t\t\treturn entries[i].key.Uint() < entries[j].key.Uint()\n\t\t\t\tcase protoreflect.StringKind:\n\t\t\t\t\treturn entries[i].key.String() < entries[j].key.String()\n\t\t\t\tdefault:\n\t\t\t\t\tpanic(\"invalid kind\")\n\t\t\t\t}\n\t\t\t})\n\t\t\tfor _, entry := range entries {\n\t\t\t\tw.writeName(fd)\n\t\t\t\tw.WriteByte('<')\n\t\t\t\tif !w.compact {\n\t\t\t\t\tw.WriteByte('\\n')\n\t\t\t\t}\n\t\t\t\tw.indent++\n\t\t\t\tw.writeName(kfd)\n\t\t\t\tif err := w.writeSingularValue(entry.key, kfd); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tw.WriteByte('\\n')\n\t\t\t\tw.writeName(vfd)\n\t\t\t\tif err := w.writeSingularValue(entry.val, vfd); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tw.WriteByte('\\n')\n\t\t\t\tw.indent--\n\t\t\t\tw.WriteByte('>')\n\t\t\t\tw.WriteByte('\\n')\n\t\t\t}\n\t\tdefault:\n\t\t\tw.writeName(fd)\n\t\t\tif err := w.writeSingularValue(m.Get(fd), fd); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tw.WriteByte('\\n')\n\t\t}\n\t}\n\n\tif b := m.GetUnknown(); len(b) > 0 {\n\t\tw.writeUnknownFields(b)\n\t}\n\treturn w.writeExtensions(m)\n}\n\nfunc (w *textWriter) writeSingularValue(v protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tswitch fd.Kind() {\n\tcase protoreflect.FloatKind, protoreflect.DoubleKind:\n\t\tswitch vf := v.Float(); {\n\t\tcase math.IsInf(vf, +1):\n\t\t\tw.Write(posInf)\n\t\tcase math.IsInf(vf, -1):\n\t\t\tw.Write(negInf)\n\t\tcase math.IsNaN(vf):\n\t\t\tw.Write(nan)\n\t\tdefault:\n\t\t\tfmt.Fprint(w, v.Interface())\n\t\t}\n\tcase protoreflect.StringKind:\n\t\t// NOTE: This does not validate UTF-8 for historical reasons.\n\t\tw.writeQuotedString(string(v.String()))\n\tcase protoreflect.BytesKind:\n\t\tw.writeQuotedString(string(v.Bytes()))\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tvar bra, ket byte = '<', '>'\n\t\tif fd.Kind() == protoreflect.GroupKind {\n\t\t\tbra, ket = '{', '}'\n\t\t}\n\t\tw.WriteByte(bra)\n\t\tif !w.compact {\n\t\t\tw.WriteByte('\\n')\n\t\t}\n\t\tw.indent++\n\t\tm := v.Message()\n\t\tif m2, ok := m.Interface().(encoding.TextMarshaler); ok {\n\t\t\tb, err := m2.MarshalText()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tw.Write(b)\n\t\t} else {\n\t\t\tw.writeMessage(m)\n\t\t}\n\t\tw.indent--\n\t\tw.WriteByte(ket)\n\tcase protoreflect.EnumKind:\n\t\tif ev := fd.Enum().Values().ByNumber(v.Enum()); ev != nil {\n\t\t\tfmt.Fprint(w, ev.Name())\n\t\t} else {\n\t\t\tfmt.Fprint(w, v.Enum())\n\t\t}\n\tdefault:\n\t\tfmt.Fprint(w, v.Interface())\n\t}\n\treturn nil\n}\n\n// writeQuotedString writes a quoted string in the protocol buffer text format.\nfunc (w *textWriter) writeQuotedString(s string) {\n\tw.WriteByte('\"')\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch c := s[i]; c {\n\t\tcase '\\n':\n\t\t\tw.buf = append(w.buf, `\\n`...)\n\t\tcase '\\r':\n\t\t\tw.buf = append(w.buf, `\\r`...)\n\t\tcase '\\t':\n\t\t\tw.buf = append(w.buf, `\\t`...)\n\t\tcase '\"':\n\t\t\tw.buf = append(w.buf, `\\\"`...)\n\t\tcase '\\\\':\n\t\t\tw.buf = append(w.buf, `\\\\`...)\n\t\tdefault:\n\t\t\tif isPrint := c >= 0x20 && c < 0x7f; isPrint {\n\t\t\t\tw.buf = append(w.buf, c)\n\t\t\t} else {\n\t\t\t\tw.buf = append(w.buf, fmt.Sprintf(`\\%03o`, c)...)\n\t\t\t}\n\t\t}\n\t}\n\tw.WriteByte('\"')\n}\n\nfunc (w *textWriter) writeUnknownFields(b []byte) {\n\tif !w.compact {\n\t\tfmt.Fprintf(w, \"/* %d unknown bytes */\\n\", len(b))\n\t}\n\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn\n\t\t}\n\t\tb = b[n:]\n\n\t\tif wtyp == protowire.EndGroupType {\n\t\t\tw.indent--\n\t\t\tw.Write(endBraceNewline)\n\t\t\tcontinue\n\t\t}\n\t\tfmt.Fprint(w, num)\n\t\tif wtyp != protowire.StartGroupType {\n\t\t\tw.WriteByte(':')\n\t\t}\n\t\tif !w.compact || wtyp == protowire.StartGroupType {\n\t\t\tw.WriteByte(' ')\n\t\t}\n\t\tswitch wtyp {\n\t\tcase protowire.VarintType:\n\t\t\tv, n := protowire.ConsumeVarint(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tfmt.Fprint(w, v)\n\t\tcase protowire.Fixed32Type:\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tfmt.Fprint(w, v)\n\t\tcase protowire.Fixed64Type:\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tfmt.Fprint(w, v)\n\t\tcase protowire.BytesType:\n\t\t\tv, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tfmt.Fprintf(w, \"%q\", v)\n\t\tcase protowire.StartGroupType:\n\t\t\tw.WriteByte('{')\n\t\t\tw.indent++\n\t\tdefault:\n\t\t\tfmt.Fprintf(w, \"/* unknown wire type %d */\", wtyp)\n\t\t}\n\t\tw.WriteByte('\\n')\n\t}\n}\n\n// writeExtensions writes all the extensions in m.\nfunc (w *textWriter) writeExtensions(m protoreflect.Message) error {\n\tmd := m.Descriptor()\n\tif md.ExtensionRanges().Len() == 0 {\n\t\treturn nil\n\t}\n\n\ttype ext struct {\n\t\tdesc protoreflect.FieldDescriptor\n\t\tval  protoreflect.Value\n\t}\n\tvar exts []ext\n\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tif fd.IsExtension() {\n\t\t\texts = append(exts, ext{fd, v})\n\t\t}\n\t\treturn true\n\t})\n\tsort.Slice(exts, func(i, j int) bool {\n\t\treturn exts[i].desc.Number() < exts[j].desc.Number()\n\t})\n\n\tfor _, ext := range exts {\n\t\t// For message set, use the name of the message as the extension name.\n\t\tname := string(ext.desc.FullName())\n\t\tif isMessageSet(ext.desc.ContainingMessage()) {\n\t\t\tname = strings.TrimSuffix(name, \".message_set_extension\")\n\t\t}\n\n\t\tif !ext.desc.IsList() {\n\t\t\tif err := w.writeSingularExtension(name, ext.val, ext.desc); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\tlv := ext.val.List()\n\t\t\tfor i := 0; i < lv.Len(); i++ {\n\t\t\t\tif err := w.writeSingularExtension(name, lv.Get(i), ext.desc); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (w *textWriter) writeSingularExtension(name string, v protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tfmt.Fprintf(w, \"[%s]:\", name)\n\tif !w.compact {\n\t\tw.WriteByte(' ')\n\t}\n\tif err := w.writeSingularValue(v, fd); err != nil {\n\t\treturn err\n\t}\n\tw.WriteByte('\\n')\n\treturn nil\n}\n\nfunc (w *textWriter) writeIndent() {\n\tif !w.complete {\n\t\treturn\n\t}\n\tfor i := 0; i < w.indent*2; i++ {\n\t\tw.buf = append(w.buf, ' ')\n\t}\n\tw.complete = false\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/wire.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\tprotoV2 \"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// Size returns the size in bytes of the wire-format encoding of m.\nfunc Size(m Message) int {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tmi := MessageV2(m)\n\treturn protoV2.Size(mi)\n}\n\n// Marshal returns the wire-format encoding of m.\nfunc Marshal(m Message) ([]byte, error) {\n\tb, err := marshalAppend(nil, m, false)\n\tif b == nil {\n\t\tb = zeroBytes\n\t}\n\treturn b, err\n}\n\nvar zeroBytes = make([]byte, 0, 0)\n\nfunc marshalAppend(buf []byte, m Message, deterministic bool) ([]byte, error) {\n\tif m == nil {\n\t\treturn nil, ErrNil\n\t}\n\tmi := MessageV2(m)\n\tnbuf, err := protoV2.MarshalOptions{\n\t\tDeterministic: deterministic,\n\t\tAllowPartial:  true,\n\t}.MarshalAppend(buf, mi)\n\tif err != nil {\n\t\treturn buf, err\n\t}\n\tif len(buf) == len(nbuf) {\n\t\tif !mi.ProtoReflect().IsValid() {\n\t\t\treturn buf, ErrNil\n\t\t}\n\t}\n\treturn nbuf, checkRequiredNotSet(mi)\n}\n\n// Unmarshal parses a wire-format message in b and places the decoded results in m.\n//\n// Unmarshal resets m before starting to unmarshal, so any existing data in m is always\n// removed. Use UnmarshalMerge to preserve and append to existing data.\nfunc Unmarshal(b []byte, m Message) error {\n\tm.Reset()\n\treturn UnmarshalMerge(b, m)\n}\n\n// UnmarshalMerge parses a wire-format message in b and places the decoded results in m.\nfunc UnmarshalMerge(b []byte, m Message) error {\n\tmi := MessageV2(m)\n\tout, err := protoV2.UnmarshalOptions{\n\t\tAllowPartial: true,\n\t\tMerge:        true,\n\t}.UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     b,\n\t\tMessage: mi.ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tif out.Flags&protoiface.UnmarshalInitialized > 0 {\n\t\treturn nil\n\t}\n\treturn checkRequiredNotSet(mi)\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/proto/wrappers.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\n// Bool stores v in a new bool value and returns a pointer to it.\nfunc Bool(v bool) *bool { return &v }\n\n// Int stores v in a new int32 value and returns a pointer to it.\n//\n// Deprecated: Use Int32 instead.\nfunc Int(v int) *int32 { return Int32(int32(v)) }\n\n// Int32 stores v in a new int32 value and returns a pointer to it.\nfunc Int32(v int32) *int32 { return &v }\n\n// Int64 stores v in a new int64 value and returns a pointer to it.\nfunc Int64(v int64) *int64 { return &v }\n\n// Uint32 stores v in a new uint32 value and returns a pointer to it.\nfunc Uint32(v uint32) *uint32 { return &v }\n\n// Uint64 stores v in a new uint64 value and returns a pointer to it.\nfunc Uint64(v uint64) *uint64 { return &v }\n\n// Float32 stores v in a new float32 value and returns a pointer to it.\nfunc Float32(v float32) *float32 { return &v }\n\n// Float64 stores v in a new float64 value and returns a pointer to it.\nfunc Float64(v float64) *float64 { return &v }\n\n// String stores v in a new string value and returns a pointer to it.\nfunc String(v string) *string { return &v }\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/any/any.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: github.com/golang/protobuf/ptypes/any/any.proto\n\npackage any\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\treflect \"reflect\"\n)\n\n// Symbols defined in public import of google/protobuf/any.proto.\n\ntype Any = anypb.Any\n\nvar File_github_com_golang_protobuf_ptypes_any_any_proto protoreflect.FileDescriptor\n\nvar file_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc = []byte{\n\t0x0a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,\n\t0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,\n\t0x70, 0x65, 0x73, 0x2f, 0x61, 0x6e, 0x79, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x2b, 0x5a, 0x29,\n\t0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e,\n\t0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65,\n\t0x73, 0x2f, 0x61, 0x6e, 0x79, 0x3b, 0x61, 0x6e, 0x79, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x33,\n}\n\nvar file_github_com_golang_protobuf_ptypes_any_any_proto_goTypes = []interface{}{}\nvar file_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_github_com_golang_protobuf_ptypes_any_any_proto_init() }\nfunc file_github_com_golang_protobuf_ptypes_any_any_proto_init() {\n\tif File_github_com_golang_protobuf_ptypes_any_any_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_github_com_golang_protobuf_ptypes_any_any_proto_goTypes,\n\t\tDependencyIndexes: file_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs,\n\t}.Build()\n\tFile_github_com_golang_protobuf_ptypes_any_any_proto = out.File\n\tfile_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc = nil\n\tfile_github_com_golang_protobuf_ptypes_any_any_proto_goTypes = nil\n\tfile_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/any.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 ptypes\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/golang/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\n\tanypb \"github.com/golang/protobuf/ptypes/any\"\n)\n\nconst urlPrefix = \"type.googleapis.com/\"\n\n// AnyMessageName returns the message name contained in an anypb.Any message.\n// Most type assertions should use the Is function instead.\n//\n// Deprecated: Call the any.MessageName method instead.\nfunc AnyMessageName(any *anypb.Any) (string, error) {\n\tname, err := anyMessageName(any)\n\treturn string(name), err\n}\nfunc anyMessageName(any *anypb.Any) (protoreflect.FullName, error) {\n\tif any == nil {\n\t\treturn \"\", fmt.Errorf(\"message is nil\")\n\t}\n\tname := protoreflect.FullName(any.TypeUrl)\n\tif i := strings.LastIndex(any.TypeUrl, \"/\"); i >= 0 {\n\t\tname = name[i+len(\"/\"):]\n\t}\n\tif !name.IsValid() {\n\t\treturn \"\", fmt.Errorf(\"message type url %q is invalid\", any.TypeUrl)\n\t}\n\treturn name, nil\n}\n\n// MarshalAny marshals the given message m into an anypb.Any message.\n//\n// Deprecated: Call the anypb.New function instead.\nfunc MarshalAny(m proto.Message) (*anypb.Any, error) {\n\tswitch dm := m.(type) {\n\tcase DynamicAny:\n\t\tm = dm.Message\n\tcase *DynamicAny:\n\t\tif dm == nil {\n\t\t\treturn nil, proto.ErrNil\n\t\t}\n\t\tm = dm.Message\n\t}\n\tb, err := proto.Marshal(m)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &anypb.Any{TypeUrl: urlPrefix + proto.MessageName(m), Value: b}, nil\n}\n\n// Empty returns a new message of the type specified in an anypb.Any message.\n// It returns protoregistry.NotFound if the corresponding message type could not\n// be resolved in the global registry.\n//\n// Deprecated: Use protoregistry.GlobalTypes.FindMessageByName instead\n// to resolve the message name and create a new instance of it.\nfunc Empty(any *anypb.Any) (proto.Message, error) {\n\tname, err := anyMessageName(any)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmt, err := protoregistry.GlobalTypes.FindMessageByName(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn proto.MessageV1(mt.New().Interface()), nil\n}\n\n// UnmarshalAny unmarshals the encoded value contained in the anypb.Any message\n// into the provided message m. It returns an error if the target message\n// does not match the type in the Any message or if an unmarshal error occurs.\n//\n// The target message m may be a *DynamicAny message. If the underlying message\n// type could not be resolved, then this returns protoregistry.NotFound.\n//\n// Deprecated: Call the any.UnmarshalTo method instead.\nfunc UnmarshalAny(any *anypb.Any, m proto.Message) error {\n\tif dm, ok := m.(*DynamicAny); ok {\n\t\tif dm.Message == nil {\n\t\t\tvar err error\n\t\t\tdm.Message, err = Empty(any)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tm = dm.Message\n\t}\n\n\tanyName, err := AnyMessageName(any)\n\tif err != nil {\n\t\treturn err\n\t}\n\tmsgName := proto.MessageName(m)\n\tif anyName != msgName {\n\t\treturn fmt.Errorf(\"mismatched message type: got %q want %q\", anyName, msgName)\n\t}\n\treturn proto.Unmarshal(any.Value, m)\n}\n\n// Is reports whether the Any message contains a message of the specified type.\n//\n// Deprecated: Call the any.MessageIs method instead.\nfunc Is(any *anypb.Any, m proto.Message) bool {\n\tif any == nil || m == nil {\n\t\treturn false\n\t}\n\tname := proto.MessageName(m)\n\tif !strings.HasSuffix(any.TypeUrl, name) {\n\t\treturn false\n\t}\n\treturn len(any.TypeUrl) == len(name) || any.TypeUrl[len(any.TypeUrl)-len(name)-1] == '/'\n}\n\n// DynamicAny is a value that can be passed to UnmarshalAny to automatically\n// allocate a proto.Message for the type specified in an anypb.Any message.\n// The allocated message is stored in the embedded proto.Message.\n//\n// Example:\n//   var x ptypes.DynamicAny\n//   if err := ptypes.UnmarshalAny(a, &x); err != nil { ... }\n//   fmt.Printf(\"unmarshaled message: %v\", x.Message)\n//\n// Deprecated: Use the any.UnmarshalNew method instead to unmarshal\n// the any message contents into a new instance of the underlying message.\ntype DynamicAny struct{ proto.Message }\n\nfunc (m DynamicAny) String() string {\n\tif m.Message == nil {\n\t\treturn \"<nil>\"\n\t}\n\treturn m.Message.String()\n}\nfunc (m DynamicAny) Reset() {\n\tif m.Message == nil {\n\t\treturn\n\t}\n\tm.Message.Reset()\n}\nfunc (m DynamicAny) ProtoMessage() {\n\treturn\n}\nfunc (m DynamicAny) ProtoReflect() protoreflect.Message {\n\tif m.Message == nil {\n\t\treturn nil\n\t}\n\treturn dynamicAny{proto.MessageReflect(m.Message)}\n}\n\ntype dynamicAny struct{ protoreflect.Message }\n\nfunc (m dynamicAny) Type() protoreflect.MessageType {\n\treturn dynamicAnyType{m.Message.Type()}\n}\nfunc (m dynamicAny) New() protoreflect.Message {\n\treturn dynamicAnyType{m.Message.Type()}.New()\n}\nfunc (m dynamicAny) Interface() protoreflect.ProtoMessage {\n\treturn DynamicAny{proto.MessageV1(m.Message.Interface())}\n}\n\ntype dynamicAnyType struct{ protoreflect.MessageType }\n\nfunc (t dynamicAnyType) New() protoreflect.Message {\n\treturn dynamicAny{t.MessageType.New()}\n}\nfunc (t dynamicAnyType) Zero() protoreflect.Message {\n\treturn dynamicAny{t.MessageType.Zero()}\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/doc.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 ptypes provides functionality for interacting with well-known types.\n//\n// Deprecated: Well-known types have specialized functionality directly\n// injected into the generated packages for each message type.\n// See the deprecation notice for each function for the suggested alternative.\npackage ptypes\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: github.com/golang/protobuf/ptypes/duration/duration.proto\n\npackage duration\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\treflect \"reflect\"\n)\n\n// Symbols defined in public import of google/protobuf/duration.proto.\n\ntype Duration = durationpb.Duration\n\nvar File_github_com_golang_protobuf_ptypes_duration_duration_proto protoreflect.FileDescriptor\n\nvar file_github_com_golang_protobuf_ptypes_duration_duration_proto_rawDesc = []byte{\n\t0x0a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,\n\t0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,\n\t0x70, 0x65, 0x73, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x64, 0x75, 0x72,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x35, 0x5a, 0x33, 0x67,\n\t0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,\n\t0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73,\n\t0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar file_github_com_golang_protobuf_ptypes_duration_duration_proto_goTypes = []interface{}{}\nvar file_github_com_golang_protobuf_ptypes_duration_duration_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_github_com_golang_protobuf_ptypes_duration_duration_proto_init() }\nfunc file_github_com_golang_protobuf_ptypes_duration_duration_proto_init() {\n\tif File_github_com_golang_protobuf_ptypes_duration_duration_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_github_com_golang_protobuf_ptypes_duration_duration_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_github_com_golang_protobuf_ptypes_duration_duration_proto_goTypes,\n\t\tDependencyIndexes: file_github_com_golang_protobuf_ptypes_duration_duration_proto_depIdxs,\n\t}.Build()\n\tFile_github_com_golang_protobuf_ptypes_duration_duration_proto = out.File\n\tfile_github_com_golang_protobuf_ptypes_duration_duration_proto_rawDesc = nil\n\tfile_github_com_golang_protobuf_ptypes_duration_duration_proto_goTypes = nil\n\tfile_github_com_golang_protobuf_ptypes_duration_duration_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/duration.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 ptypes\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n\n\tdurationpb \"github.com/golang/protobuf/ptypes/duration\"\n)\n\n// Range of google.protobuf.Duration as specified in duration.proto.\n// This is about 10,000 years in seconds.\nconst (\n\tmaxSeconds = int64(10000 * 365.25 * 24 * 60 * 60)\n\tminSeconds = -maxSeconds\n)\n\n// Duration converts a durationpb.Duration to a time.Duration.\n// Duration returns an error if dur is invalid or overflows a time.Duration.\n//\n// Deprecated: Call the dur.AsDuration and dur.CheckValid methods instead.\nfunc Duration(dur *durationpb.Duration) (time.Duration, error) {\n\tif err := validateDuration(dur); err != nil {\n\t\treturn 0, err\n\t}\n\td := time.Duration(dur.Seconds) * time.Second\n\tif int64(d/time.Second) != dur.Seconds {\n\t\treturn 0, fmt.Errorf(\"duration: %v is out of range for time.Duration\", dur)\n\t}\n\tif dur.Nanos != 0 {\n\t\td += time.Duration(dur.Nanos) * time.Nanosecond\n\t\tif (d < 0) != (dur.Nanos < 0) {\n\t\t\treturn 0, fmt.Errorf(\"duration: %v is out of range for time.Duration\", dur)\n\t\t}\n\t}\n\treturn d, nil\n}\n\n// DurationProto converts a time.Duration to a durationpb.Duration.\n//\n// Deprecated: Call the durationpb.New function instead.\nfunc DurationProto(d time.Duration) *durationpb.Duration {\n\tnanos := d.Nanoseconds()\n\tsecs := nanos / 1e9\n\tnanos -= secs * 1e9\n\treturn &durationpb.Duration{\n\t\tSeconds: int64(secs),\n\t\tNanos:   int32(nanos),\n\t}\n}\n\n// validateDuration determines whether the durationpb.Duration is valid\n// according to the definition in google/protobuf/duration.proto.\n// A valid durpb.Duration may still be too large to fit into a time.Duration\n// Note that the range of durationpb.Duration is about 10,000 years,\n// while the range of time.Duration is about 290 years.\nfunc validateDuration(dur *durationpb.Duration) error {\n\tif dur == nil {\n\t\treturn errors.New(\"duration: nil Duration\")\n\t}\n\tif dur.Seconds < minSeconds || dur.Seconds > maxSeconds {\n\t\treturn fmt.Errorf(\"duration: %v: seconds out of range\", dur)\n\t}\n\tif dur.Nanos <= -1e9 || dur.Nanos >= 1e9 {\n\t\treturn fmt.Errorf(\"duration: %v: nanos out of range\", dur)\n\t}\n\t// Seconds and Nanos must have the same sign, unless d.Nanos is zero.\n\tif (dur.Seconds < 0 && dur.Nanos > 0) || (dur.Seconds > 0 && dur.Nanos < 0) {\n\t\treturn fmt.Errorf(\"duration: %v: seconds and nanos have different signs\", dur)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go",
    "content": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: github.com/golang/protobuf/ptypes/timestamp/timestamp.proto\n\npackage timestamp\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\treflect \"reflect\"\n)\n\n// Symbols defined in public import of google/protobuf/timestamp.proto.\n\ntype Timestamp = timestamppb.Timestamp\n\nvar File_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto protoreflect.FileDescriptor\n\nvar file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_rawDesc = []byte{\n\t0x0a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,\n\t0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,\n\t0x70, 0x65, 0x73, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2f, 0x74, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74,\n\t0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x37,\n\t0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,\n\t0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,\n\t0x70, 0x65, 0x73, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x3b, 0x74, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x33,\n}\n\nvar file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_goTypes = []interface{}{}\nvar file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_init() }\nfunc file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_init() {\n\tif File_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_goTypes,\n\t\tDependencyIndexes: file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_depIdxs,\n\t}.Build()\n\tFile_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto = out.File\n\tfile_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_rawDesc = nil\n\tfile_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_goTypes = nil\n\tfile_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/github.com/golang/protobuf/ptypes/timestamp.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 ptypes\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n\n\ttimestamppb \"github.com/golang/protobuf/ptypes/timestamp\"\n)\n\n// Range of google.protobuf.Duration as specified in timestamp.proto.\nconst (\n\t// Seconds field of the earliest valid Timestamp.\n\t// This is time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC).Unix().\n\tminValidSeconds = -62135596800\n\t// Seconds field just after the latest valid Timestamp.\n\t// This is time.Date(10000, 1, 1, 0, 0, 0, 0, time.UTC).Unix().\n\tmaxValidSeconds = 253402300800\n)\n\n// Timestamp converts a timestamppb.Timestamp to a time.Time.\n// It returns an error if the argument is invalid.\n//\n// Unlike most Go functions, if Timestamp returns an error, the first return\n// value is not the zero time.Time. Instead, it is the value obtained from the\n// time.Unix function when passed the contents of the Timestamp, in the UTC\n// locale. This may or may not be a meaningful time; many invalid Timestamps\n// do map to valid time.Times.\n//\n// A nil Timestamp returns an error. The first return value in that case is\n// undefined.\n//\n// Deprecated: Call the ts.AsTime and ts.CheckValid methods instead.\nfunc Timestamp(ts *timestamppb.Timestamp) (time.Time, error) {\n\t// Don't return the zero value on error, because corresponds to a valid\n\t// timestamp. Instead return whatever time.Unix gives us.\n\tvar t time.Time\n\tif ts == nil {\n\t\tt = time.Unix(0, 0).UTC() // treat nil like the empty Timestamp\n\t} else {\n\t\tt = time.Unix(ts.Seconds, int64(ts.Nanos)).UTC()\n\t}\n\treturn t, validateTimestamp(ts)\n}\n\n// TimestampNow returns a google.protobuf.Timestamp for the current time.\n//\n// Deprecated: Call the timestamppb.Now function instead.\nfunc TimestampNow() *timestamppb.Timestamp {\n\tts, err := TimestampProto(time.Now())\n\tif err != nil {\n\t\tpanic(\"ptypes: time.Now() out of Timestamp range\")\n\t}\n\treturn ts\n}\n\n// TimestampProto converts the time.Time to a google.protobuf.Timestamp proto.\n// It returns an error if the resulting Timestamp is invalid.\n//\n// Deprecated: Call the timestamppb.New function instead.\nfunc TimestampProto(t time.Time) (*timestamppb.Timestamp, error) {\n\tts := &timestamppb.Timestamp{\n\t\tSeconds: t.Unix(),\n\t\tNanos:   int32(t.Nanosecond()),\n\t}\n\tif err := validateTimestamp(ts); err != nil {\n\t\treturn nil, err\n\t}\n\treturn ts, nil\n}\n\n// TimestampString returns the RFC 3339 string for valid Timestamps.\n// For invalid Timestamps, it returns an error message in parentheses.\n//\n// Deprecated: Call the ts.AsTime method instead,\n// followed by a call to the Format method on the time.Time value.\nfunc TimestampString(ts *timestamppb.Timestamp) string {\n\tt, err := Timestamp(ts)\n\tif err != nil {\n\t\treturn fmt.Sprintf(\"(%v)\", err)\n\t}\n\treturn t.Format(time.RFC3339Nano)\n}\n\n// validateTimestamp determines whether a Timestamp is valid.\n// A valid timestamp represents a time in the range [0001-01-01, 10000-01-01)\n// and has a Nanos field in the range [0, 1e9).\n//\n// If the Timestamp is valid, validateTimestamp returns nil.\n// Otherwise, it returns an error that describes the problem.\n//\n// Every valid Timestamp can be represented by a time.Time,\n// but the converse is not true.\nfunc validateTimestamp(ts *timestamppb.Timestamp) error {\n\tif ts == nil {\n\t\treturn errors.New(\"timestamp: nil Timestamp\")\n\t}\n\tif ts.Seconds < minValidSeconds {\n\t\treturn fmt.Errorf(\"timestamp: %v before 0001-01-01\", ts)\n\t}\n\tif ts.Seconds >= maxValidSeconds {\n\t\treturn fmt.Errorf(\"timestamp: %v after 10000-01-01\", ts)\n\t}\n\tif ts.Nanos < 0 || ts.Nanos >= 1e9 {\n\t\treturn fmt.Errorf(\"timestamp: %v: nanos not in range [0, 1e9)\", ts)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/.copywrite.hcl",
    "content": "schema_version = 1\n\nproject {\n  license\t\t= \"MPL-2.0\"\n  copyright_year\t= 2023\n\n  header_ignore\t\t= []\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/LICENSE",
    "content": "Copyright (c) 2020 HashiCorp, Inc.\n\nMozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. \"Contributor\"\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n\n     means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the terms of\n        a Secondary License.\n\n1.6. \"Executable Form\"\n\n     means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n\n     means a work that combines Covered Software with other material, in a\n     separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n\n     means this document.\n\n1.9. \"Licensable\"\n\n     means having the right to grant, to the maximum extent possible, whether\n     at the time of the initial grant or subsequently, any and all of the\n     rights conveyed by this License.\n\n1.10. \"Modifications\"\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. \"Patent Claims\" of a Contributor\n\n      means any patent claim(s), including without limitation, method,\n      process, and apparatus claims, in any patent Licensable by such\n      Contributor that would be infringed, but for the grant of the License,\n      by the making, using, selling, offering for sale, having made, import,\n      or transfer of either its Contributions or its Contributor Version.\n\n1.12. \"Secondary License\"\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. \"Source Code Form\"\n\n      means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, \"You\" includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, \"control\" means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or\n        as part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its\n        Contributions or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution\n     become effective for each Contribution on the date the Contributor first\n     distributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under\n     this License. No additional rights or licenses will be implied from the\n     distribution or licensing of Covered Software under this License.\n     Notwithstanding Section 2.1(b) above, no patent license is granted by a\n     Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party's\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of\n        its Contributions.\n\n     This License does not grant any rights in the trademarks, service marks,\n     or logos of any Contributor (except as may be necessary to comply with\n     the notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this\n     License (see Section 10.2) or under the terms of a Secondary License (if\n     permitted under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its\n     Contributions are its original creation(s) or it has sufficient rights to\n     grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under\n     applicable copyright doctrines of fair use, fair dealing, or other\n     equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under\n     the terms of this License. You must inform recipients that the Source\n     Code Form of the Covered Software is governed by the terms of this\n     License, and how they can obtain a copy of this License. You may not\n     attempt to alter or restrict the recipients' rights in the Source Code\n     Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this\n        License, or sublicense it under different terms, provided that the\n        license for the Executable Form does not attempt to limit or alter the\n        recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for\n     the Covered Software. If the Larger Work is a combination of Covered\n     Software with a work governed by one or more Secondary Licenses, and the\n     Covered Software is not Incompatible With Secondary Licenses, this\n     License permits You to additionally distribute such Covered Software\n     under the terms of such Secondary License(s), so that the recipient of\n     the Larger Work may, at their option, further distribute the Covered\n     Software under the terms of either this License or such Secondary\n     License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices\n     (including copyright notices, patent notices, disclaimers of warranty, or\n     limitations of liability) contained within the Source Code Form of the\n     Covered Software, except that You may alter any license notices to the\n     extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on\n     behalf of any Contributor. You must make it absolutely clear that any\n     such warranty, support, indemnity, or liability obligation is offered by\n     You alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute,\n   judicial order, or regulation then You must: (a) comply with the terms of\n   this License to the maximum extent possible; and (b) describe the\n   limitations and the code they affect. Such description must be placed in a\n   text file included with all distributions of the Covered Software under\n   this License. Except to the extent prohibited by statute or regulation,\n   such description must be sufficiently detailed for a recipient of ordinary\n   skill to be able to understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing\n     basis, if such Contributor fails to notify You of the non-compliance by\n     some reasonable means prior to 60 days after You have come back into\n     compliance. Moreover, Your grants from a particular Contributor are\n     reinstated on an ongoing basis if such Contributor notifies You of the\n     non-compliance by some reasonable means, this is the first time You have\n     received notice of non-compliance with this License from such\n     Contributor, and You become compliant prior to 30 days after Your receipt\n     of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions,\n     counter-claims, and cross-claims) alleging that a Contributor Version\n     directly or indirectly infringes any patent, then the rights granted to\n     You by any and all Contributors for the Covered Software under Section\n     2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an \"as is\" basis,\n   without warranty of any kind, either expressed, implied, or statutory,\n   including, without limitation, warranties that the Covered Software is free\n   of defects, merchantable, fit for a particular purpose or non-infringing.\n   The entire risk as to the quality and performance of the Covered Software\n   is with You. Should any Covered Software prove defective in any respect,\n   You (not any Contributor) assume the cost of any necessary servicing,\n   repair, or correction. This disclaimer of warranty constitutes an essential\n   part of this License. No use of  any Covered Software is authorized under\n   this License except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from\n   such party's negligence to the extent applicable law prohibits such\n   limitation. Some jurisdictions do not allow the exclusion or limitation of\n   incidental or consequential damages, so this exclusion and limitation may\n   not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts\n   of a jurisdiction where the defendant maintains its principal place of\n   business and such litigation shall be governed by laws of that\n   jurisdiction, without reference to its conflict-of-law provisions. Nothing\n   in this Section shall prevent a party's ability to bring cross-claims or\n   counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject\n   matter hereof. If any provision of this License is held to be\n   unenforceable, such provision shall be reformed only to the extent\n   necessary to make it enforceable. Any law or regulation which provides that\n   the language of a contract shall be construed against the drafter shall not\n   be used to construe this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version\n      of the License under which You originally received the Covered Software,\n      or under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a\n      modified version of this License if you rename the license and remove\n      any references to the name of the license steward (except to note that\n      such modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\n      Licenses If You choose to distribute Source Code Form that is\n      Incompatible With Secondary Licenses under the terms of this version of\n      the License, the notice described in Exhibit B of this License must be\n      attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file,\nthen You may include the notice in a location (such as a LICENSE file in a\nrelevant directory) where a recipient would be likely to look for such a\nnotice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n\n      This Source Code Form is \"Incompatible\n      With Secondary Licenses\", as defined by\n      the Mozilla Public License, v. 2.0.\n\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/README.md",
    "content": "# Consul API Client\n\nThis package provides the `api` package which provides programmatic access to the full Consul API.\n\nThe full documentation is available on [Godoc](https://godoc.org/github.com/hashicorp/consul/api).\n\n## Usage\n\nBelow is an example of using the Consul client. To run the example, you must first\n[install Consul](https://developer.hashicorp.com/consul/downloads) and \n[Go](https://go.dev/doc/install).\n\nTo run the client API, create a new Go module.\n\n```shell\ngo mod init consul-demo\n```\n\nCopy the example code into a file called `main.go` in the directory where the module is defined.\nAs seen in the example, the Consul API is often imported with the alias `capi`.\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\tcapi \"github.com/hashicorp/consul/api\"\n)\n\nfunc main() {\n\t// Get a new client\n\tclient, err := capi.NewClient(capi.DefaultConfig())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// Get a handle to the KV API\n\tkv := client.KV()\n\n\t// PUT a new KV pair\n\tp := &capi.KVPair{Key: \"REDIS_MAXCLIENTS\", Value: []byte(\"1000\")}\n\t_, err = kv.Put(p, nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// Lookup the pair\n\tpair, _, err := kv.Get(\"REDIS_MAXCLIENTS\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Printf(\"KV: %v %s\\n\", pair.Key, pair.Value)\n}\n```\n\nInstall the Consul API dependency with `go mod tidy`.\n\nIn a separate terminal window, start a local Consul server.\n\n```shell\nconsul agent -dev -node machine\n```\n\nRun the example.\n\n```shell\ngo run .\n```\n\nYou should get the following result printed to the terminal.\n\n```shell\nKV: REDIS_MAXCLIENTS 1000\n```\n\nAfter running the code, you can also view the values in the Consul UI on your local machine at http://localhost:8500/ui/dc1/kv\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/acl.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nconst (\n\t// ACLClientType is the client type token\n\tACLClientType = \"client\"\n\n\t// ACLManagementType is the management type token\n\tACLManagementType = \"management\"\n\n\t// ACLTemplatedPolicy names\n\tACLTemplatedPolicyServiceName          = \"builtin/service\"\n\tACLTemplatedPolicyNodeName             = \"builtin/node\"\n\tACLTemplatedPolicyDNSName              = \"builtin/dns\"\n\tACLTemplatedPolicyNomadServerName      = \"builtin/nomad-server\"\n\tACLTemplatedPolicyWorkloadIdentityName = \"builtin/workload-identity\"\n)\n\ntype ACLLink struct {\n\tID   string\n\tName string\n}\n\ntype ACLTokenPolicyLink = ACLLink\ntype ACLTokenRoleLink = ACLLink\n\n// ACLToken represents an ACL Token\ntype ACLToken struct {\n\tCreateIndex       uint64\n\tModifyIndex       uint64\n\tAccessorID        string\n\tSecretID          string\n\tDescription       string\n\tPolicies          []*ACLTokenPolicyLink `json:\",omitempty\"`\n\tRoles             []*ACLTokenRoleLink   `json:\",omitempty\"`\n\tServiceIdentities []*ACLServiceIdentity `json:\",omitempty\"`\n\tNodeIdentities    []*ACLNodeIdentity    `json:\",omitempty\"`\n\tTemplatedPolicies []*ACLTemplatedPolicy `json:\",omitempty\"`\n\tLocal             bool\n\tAuthMethod        string        `json:\",omitempty\"`\n\tExpirationTTL     time.Duration `json:\",omitempty\"`\n\tExpirationTime    *time.Time    `json:\",omitempty\"`\n\tCreateTime        time.Time     `json:\",omitempty\"`\n\tHash              []byte        `json:\",omitempty\"`\n\n\t// DEPRECATED (ACL-Legacy-Compat)\n\t// Rules are an artifact of legacy tokens deprecated in Consul 1.4\n\tRules string `json:\"-\"`\n\n\t// Namespace is the namespace the ACLToken is associated with.\n\t// Namespaces are a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// Partition is the partition the ACLToken is associated with.\n\t// Partitions are a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// AuthMethodNamespace is the namespace the token's AuthMethod is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tAuthMethodNamespace string `json:\",omitempty\"`\n}\n\ntype ACLTokenExpanded struct {\n\tExpandedPolicies []ACLPolicy\n\tExpandedRoles    []ACLRole\n\n\tNamespaceDefaultPolicyIDs []string\n\tNamespaceDefaultRoleIDs   []string\n\n\tAgentACLDefaultPolicy string\n\tAgentACLDownPolicy    string\n\tResolvedByAgent       string\n\n\tACLToken\n}\n\ntype ACLTokenListEntry struct {\n\tCreateIndex       uint64\n\tModifyIndex       uint64\n\tAccessorID        string\n\tSecretID          string\n\tDescription       string\n\tPolicies          []*ACLTokenPolicyLink `json:\",omitempty\"`\n\tRoles             []*ACLTokenRoleLink   `json:\",omitempty\"`\n\tServiceIdentities []*ACLServiceIdentity `json:\",omitempty\"`\n\tNodeIdentities    []*ACLNodeIdentity    `json:\",omitempty\"`\n\tTemplatedPolicies []*ACLTemplatedPolicy `json:\",omitempty\"`\n\tLocal             bool\n\tAuthMethod        string     `json:\",omitempty\"`\n\tExpirationTime    *time.Time `json:\",omitempty\"`\n\tCreateTime        time.Time\n\tHash              []byte\n\tLegacy            bool `json:\"-\"` // DEPRECATED\n\n\t// Namespace is the namespace the ACLTokenListEntry is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// Partition is the partition the ACLTokenListEntry is associated with.\n\t// Partitions are a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// AuthMethodNamespace is the namespace the token's AuthMethod is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tAuthMethodNamespace string `json:\",omitempty\"`\n}\n\n// ACLEntry is used to represent a legacy ACL token\n// The legacy tokens are deprecated.\ntype ACLEntry struct {\n\tCreateIndex uint64\n\tModifyIndex uint64\n\tID          string\n\tName        string\n\tType        string\n\tRules       string\n}\n\n// ACLReplicationStatus is used to represent the status of ACL replication.\ntype ACLReplicationStatus struct {\n\tEnabled              bool\n\tRunning              bool\n\tSourceDatacenter     string\n\tReplicationType      string\n\tReplicatedIndex      uint64\n\tReplicatedRoleIndex  uint64\n\tReplicatedTokenIndex uint64\n\tLastSuccess          time.Time\n\tLastError            time.Time\n\tLastErrorMessage     string\n}\n\n// ACLServiceIdentity represents a high-level grant of all necessary privileges\n// to assume the identity of the named Service in the Catalog and within\n// Connect.\ntype ACLServiceIdentity struct {\n\tServiceName string\n\tDatacenters []string `json:\",omitempty\"`\n}\n\n// ACLNodeIdentity represents a high-level grant of all necessary privileges\n// to assume the identity of the named Node in the Catalog and within Connect.\ntype ACLNodeIdentity struct {\n\tNodeName   string\n\tDatacenter string\n}\n\n// ACLTemplatedPolicy represents a template used to generate a `synthetic` policy\n// given some input variables.\ntype ACLTemplatedPolicy struct {\n\tTemplateName      string\n\tTemplateVariables *ACLTemplatedPolicyVariables `json:\",omitempty\"`\n\n\t// Datacenters are an artifact of Nodeidentity & ServiceIdentity.\n\t// It is used to facilitate the future migration away from both\n\tDatacenters []string `json:\",omitempty\"`\n}\n\ntype ACLTemplatedPolicyResponse struct {\n\tTemplateName string\n\tSchema       string\n\tTemplate     string\n}\n\ntype ACLTemplatedPolicyVariables struct {\n\tName string\n}\n\n// ACLPolicy represents an ACL Policy.\ntype ACLPolicy struct {\n\tID          string\n\tName        string\n\tDescription string\n\tRules       string\n\tDatacenters []string\n\tHash        []byte\n\tCreateIndex uint64\n\tModifyIndex uint64\n\n\t// Namespace is the namespace the ACLPolicy is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// Partition is the partition the ACLPolicy is associated with.\n\t// Partitions are a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n}\n\ntype ACLPolicyListEntry struct {\n\tID          string\n\tName        string\n\tDescription string\n\tDatacenters []string\n\tHash        []byte\n\tCreateIndex uint64\n\tModifyIndex uint64\n\n\t// Namespace is the namespace the ACLPolicyListEntry is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// Partition is the partition the ACLPolicyListEntry is associated with.\n\t// Partitions are a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n}\n\ntype ACLRolePolicyLink = ACLLink\n\n// ACLRole represents an ACL Role.\ntype ACLRole struct {\n\tID                string\n\tName              string\n\tDescription       string\n\tPolicies          []*ACLRolePolicyLink  `json:\",omitempty\"`\n\tServiceIdentities []*ACLServiceIdentity `json:\",omitempty\"`\n\tNodeIdentities    []*ACLNodeIdentity    `json:\",omitempty\"`\n\tTemplatedPolicies []*ACLTemplatedPolicy `json:\",omitempty\"`\n\tHash              []byte\n\tCreateIndex       uint64\n\tModifyIndex       uint64\n\n\t// Namespace is the namespace the ACLRole is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// Partition is the partition the ACLRole is associated with.\n\t// Partitions are a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n}\n\n// BindingRuleBindType is the type of binding rule mechanism used.\ntype BindingRuleBindType string\n\nconst (\n\t// BindingRuleBindTypeService binds to a service identity with the given name.\n\tBindingRuleBindTypeService BindingRuleBindType = \"service\"\n\n\t// BindingRuleBindTypeRole binds to pre-existing roles with the given name.\n\tBindingRuleBindTypeRole BindingRuleBindType = \"role\"\n\n\t// BindingRuleBindTypeNode binds to a node identity with given name.\n\tBindingRuleBindTypeNode BindingRuleBindType = \"node\"\n\n\t// BindingRuleBindTypeTemplatedPolicy binds to a templated policy with given template name and variables.\n\tBindingRuleBindTypeTemplatedPolicy BindingRuleBindType = \"templated-policy\"\n)\n\ntype ACLBindingRule struct {\n\tID          string\n\tDescription string\n\tAuthMethod  string\n\tSelector    string\n\tBindType    BindingRuleBindType\n\tBindName    string\n\tBindVars    *ACLTemplatedPolicyVariables `json:\",omitempty\"`\n\n\tCreateIndex uint64\n\tModifyIndex uint64\n\n\t// Namespace is the namespace the ACLBindingRule is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// Partition is the partition the ACLBindingRule is associated with.\n\t// Partitions are a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n}\n\ntype ACLAuthMethod struct {\n\tName        string\n\tType        string\n\tDisplayName string        `json:\",omitempty\"`\n\tDescription string        `json:\",omitempty\"`\n\tMaxTokenTTL time.Duration `json:\",omitempty\"`\n\n\t// TokenLocality defines the kind of token that this auth method produces.\n\t// This can be either 'local' or 'global'. If empty 'local' is assumed.\n\tTokenLocality string `json:\",omitempty\"`\n\n\t// Configuration is arbitrary configuration for the auth method. This\n\t// should only contain primitive values and containers (such as lists and\n\t// maps).\n\tConfig map[string]interface{}\n\n\tCreateIndex uint64\n\tModifyIndex uint64\n\n\t// NamespaceRules apply only on auth methods defined in the default namespace.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespaceRules []*ACLAuthMethodNamespaceRule `json:\",omitempty\"`\n\n\t// Namespace is the namespace the ACLAuthMethod is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// Partition is the partition the ACLAuthMethod is associated with.\n\t// Partitions are a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n}\n\ntype ACLTokenFilterOptions struct {\n\tAuthMethod  string `json:\",omitempty\"`\n\tPolicy      string `json:\",omitempty\"`\n\tRole        string `json:\",omitempty\"`\n\tServiceName string `json:\",omitempty\"`\n}\n\nfunc (m *ACLAuthMethod) MarshalJSON() ([]byte, error) {\n\ttype Alias ACLAuthMethod\n\texported := &struct {\n\t\tMaxTokenTTL string `json:\",omitempty\"`\n\t\t*Alias\n\t}{\n\t\tMaxTokenTTL: m.MaxTokenTTL.String(),\n\t\tAlias:       (*Alias)(m),\n\t}\n\tif m.MaxTokenTTL == 0 {\n\t\texported.MaxTokenTTL = \"\"\n\t}\n\n\treturn json.Marshal(exported)\n}\n\nfunc (m *ACLAuthMethod) UnmarshalJSON(data []byte) error {\n\ttype Alias ACLAuthMethod\n\taux := &struct {\n\t\tMaxTokenTTL string\n\t\t*Alias\n\t}{\n\t\tAlias: (*Alias)(m),\n\t}\n\tif err := json.Unmarshal(data, &aux); err != nil {\n\t\treturn err\n\t}\n\tvar err error\n\tif aux.MaxTokenTTL != \"\" {\n\t\tif m.MaxTokenTTL, err = time.ParseDuration(aux.MaxTokenTTL); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\ntype ACLAuthMethodNamespaceRule struct {\n\t// Selector is an expression that matches against verified identity\n\t// attributes returned from the auth method during login.\n\tSelector string `json:\",omitempty\"`\n\n\t// BindNamespace is the target namespace of the binding. Can be lightly\n\t// templated using HIL ${foo} syntax from available field names.\n\t//\n\t// If empty it's created in the same namespace as the auth method.\n\tBindNamespace string `json:\",omitempty\"`\n}\n\ntype ACLAuthMethodListEntry struct {\n\tName        string\n\tType        string\n\tDisplayName string        `json:\",omitempty\"`\n\tDescription string        `json:\",omitempty\"`\n\tMaxTokenTTL time.Duration `json:\",omitempty\"`\n\n\t// TokenLocality defines the kind of token that this auth method produces.\n\t// This can be either 'local' or 'global'. If empty 'local' is assumed.\n\tTokenLocality string `json:\",omitempty\"`\n\tCreateIndex   uint64\n\tModifyIndex   uint64\n\n\t// Namespace is the namespace the ACLAuthMethodListEntry is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// Partition is the partition the ACLAuthMethodListEntry is associated with.\n\t// Partitions are a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n}\n\n// This is nearly identical to the ACLAuthMethod MarshalJSON\nfunc (m *ACLAuthMethodListEntry) MarshalJSON() ([]byte, error) {\n\ttype Alias ACLAuthMethodListEntry\n\texported := &struct {\n\t\tMaxTokenTTL string `json:\",omitempty\"`\n\t\t*Alias\n\t}{\n\t\tMaxTokenTTL: m.MaxTokenTTL.String(),\n\t\tAlias:       (*Alias)(m),\n\t}\n\tif m.MaxTokenTTL == 0 {\n\t\texported.MaxTokenTTL = \"\"\n\t}\n\n\treturn json.Marshal(exported)\n}\n\n// This is nearly identical to the ACLAuthMethod UnmarshalJSON\nfunc (m *ACLAuthMethodListEntry) UnmarshalJSON(data []byte) error {\n\ttype Alias ACLAuthMethodListEntry\n\taux := &struct {\n\t\tMaxTokenTTL string\n\t\t*Alias\n\t}{\n\t\tAlias: (*Alias)(m),\n\t}\n\n\tif err := json.Unmarshal(data, &aux); err != nil {\n\t\treturn err\n\t}\n\tvar err error\n\tif aux.MaxTokenTTL != \"\" {\n\t\tif m.MaxTokenTTL, err = time.ParseDuration(aux.MaxTokenTTL); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// ParseKubernetesAuthMethodConfig takes a raw config map and returns a parsed\n// KubernetesAuthMethodConfig.\nfunc ParseKubernetesAuthMethodConfig(raw map[string]interface{}) (*KubernetesAuthMethodConfig, error) {\n\tvar config KubernetesAuthMethodConfig\n\tdecodeConf := &mapstructure.DecoderConfig{\n\t\tResult:           &config,\n\t\tWeaklyTypedInput: true,\n\t}\n\n\tdecoder, err := mapstructure.NewDecoder(decodeConf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := decoder.Decode(raw); err != nil {\n\t\treturn nil, fmt.Errorf(\"error decoding config: %s\", err)\n\t}\n\n\treturn &config, nil\n}\n\n// KubernetesAuthMethodConfig is the config for the built-in Consul auth method\n// for Kubernetes.\ntype KubernetesAuthMethodConfig struct {\n\tHost              string `json:\",omitempty\"`\n\tCACert            string `json:\",omitempty\"`\n\tServiceAccountJWT string `json:\",omitempty\"`\n}\n\n// RenderToConfig converts this into a map[string]interface{} suitable for use\n// in the ACLAuthMethod.Config field.\nfunc (c *KubernetesAuthMethodConfig) RenderToConfig() map[string]interface{} {\n\treturn map[string]interface{}{\n\t\t\"Host\":              c.Host,\n\t\t\"CACert\":            c.CACert,\n\t\t\"ServiceAccountJWT\": c.ServiceAccountJWT,\n\t}\n}\n\n// OIDCAuthMethodConfig is the config for the built-in Consul auth method for\n// OIDC and JWT.\ntype OIDCAuthMethodConfig struct {\n\t// common for type=oidc and type=jwt\n\tJWTSupportedAlgs    []string          `json:\",omitempty\"`\n\tBoundAudiences      []string          `json:\",omitempty\"`\n\tClaimMappings       map[string]string `json:\",omitempty\"`\n\tListClaimMappings   map[string]string `json:\",omitempty\"`\n\tOIDCDiscoveryURL    string            `json:\",omitempty\"`\n\tOIDCDiscoveryCACert string            `json:\",omitempty\"`\n\t// just for type=oidc\n\tOIDCClientID        string   `json:\",omitempty\"`\n\tOIDCClientSecret    string   `json:\",omitempty\"`\n\tOIDCScopes          []string `json:\",omitempty\"`\n\tOIDCACRValues       []string `json:\",omitempty\"`\n\tAllowedRedirectURIs []string `json:\",omitempty\"`\n\tVerboseOIDCLogging  bool     `json:\",omitempty\"`\n\t// just for type=jwt\n\tJWKSURL              string        `json:\",omitempty\"`\n\tJWKSCACert           string        `json:\",omitempty\"`\n\tJWTValidationPubKeys []string      `json:\",omitempty\"`\n\tBoundIssuer          string        `json:\",omitempty\"`\n\tExpirationLeeway     time.Duration `json:\",omitempty\"`\n\tNotBeforeLeeway      time.Duration `json:\",omitempty\"`\n\tClockSkewLeeway      time.Duration `json:\",omitempty\"`\n}\n\n// RenderToConfig converts this into a map[string]interface{} suitable for use\n// in the ACLAuthMethod.Config field.\nfunc (c *OIDCAuthMethodConfig) RenderToConfig() map[string]interface{} {\n\treturn map[string]interface{}{\n\t\t// common for type=oidc and type=jwt\n\t\t\"JWTSupportedAlgs\":    c.JWTSupportedAlgs,\n\t\t\"BoundAudiences\":      c.BoundAudiences,\n\t\t\"ClaimMappings\":       c.ClaimMappings,\n\t\t\"ListClaimMappings\":   c.ListClaimMappings,\n\t\t\"OIDCDiscoveryURL\":    c.OIDCDiscoveryURL,\n\t\t\"OIDCDiscoveryCACert\": c.OIDCDiscoveryCACert,\n\t\t// just for type=oidc\n\t\t\"OIDCClientID\":        c.OIDCClientID,\n\t\t\"OIDCClientSecret\":    c.OIDCClientSecret,\n\t\t\"OIDCScopes\":          c.OIDCScopes,\n\t\t\"OIDCACRValues\":       c.OIDCACRValues,\n\t\t\"AllowedRedirectURIs\": c.AllowedRedirectURIs,\n\t\t\"VerboseOIDCLogging\":  c.VerboseOIDCLogging,\n\t\t// just for type=jwt\n\t\t\"JWKSURL\":              c.JWKSURL,\n\t\t\"JWKSCACert\":           c.JWKSCACert,\n\t\t\"JWTValidationPubKeys\": c.JWTValidationPubKeys,\n\t\t\"BoundIssuer\":          c.BoundIssuer,\n\t\t\"ExpirationLeeway\":     c.ExpirationLeeway,\n\t\t\"NotBeforeLeeway\":      c.NotBeforeLeeway,\n\t\t\"ClockSkewLeeway\":      c.ClockSkewLeeway,\n\t}\n}\n\ntype ACLLoginParams struct {\n\tAuthMethod  string\n\tBearerToken string\n\tMeta        map[string]string `json:\",omitempty\"`\n}\n\ntype ACLOIDCAuthURLParams struct {\n\tAuthMethod  string\n\tRedirectURI string\n\tClientNonce string\n\tMeta        map[string]string `json:\",omitempty\"`\n}\n\n// ACL can be used to query the ACL endpoints\ntype ACL struct {\n\tc *Client\n}\n\n// ACL returns a handle to the ACL endpoints\nfunc (c *Client) ACL() *ACL {\n\treturn &ACL{c}\n}\n\n// BootstrapRequest is used for when operators provide an ACL Bootstrap Token\ntype BootstrapRequest struct {\n\tBootstrapSecret string\n}\n\n// Bootstrap is used to perform a one-time ACL bootstrap operation on a cluster\n// to get the first management token.\nfunc (a *ACL) Bootstrap() (*ACLToken, *WriteMeta, error) {\n\treturn a.BootstrapWithToken(\"\")\n}\n\n// BootstrapWithToken is used to get the initial bootstrap token or pass in the one that was provided in the API\nfunc (a *ACL) BootstrapWithToken(btoken string) (*ACLToken, *WriteMeta, error) {\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/bootstrap\")\n\tif btoken != \"\" {\n\t\tr.obj = &BootstrapRequest{\n\t\t\tBootstrapSecret: btoken,\n\t\t}\n\t}\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLToken\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn &out, wm, nil\n}\n\n// Create is used to generate a new token with the given parameters\n//\n// Deprecated: Use TokenCreate instead.\nfunc (a *ACL) Create(acl *ACLEntry, q *WriteOptions) (string, *WriteMeta, error) {\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/create\")\n\tr.setWriteOptions(q)\n\tr.obj = acl\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out struct{ ID string }\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\treturn out.ID, wm, nil\n}\n\n// Update is used to update the rules of an existing token\n//\n// Deprecated: Use TokenUpdate instead.\nfunc (a *ACL) Update(acl *ACLEntry, q *WriteOptions) (*WriteMeta, error) {\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/update\")\n\tr.setWriteOptions(q)\n\tr.obj = acl\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\treturn wm, nil\n}\n\n// Destroy is used to destroy a given ACL token ID\n//\n// Deprecated: Use TokenDelete instead.\nfunc (a *ACL) Destroy(id string, q *WriteOptions) (*WriteMeta, error) {\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/destroy/\"+id)\n\tr.setWriteOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tcloseResponseBody(resp)\n\n\twm := &WriteMeta{RequestTime: rtt}\n\treturn wm, nil\n}\n\n// Clone is used to return a new token cloned from an existing one\n//\n// Deprecated: Use TokenClone instead.\nfunc (a *ACL) Clone(id string, q *WriteOptions) (string, *WriteMeta, error) {\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/clone/\"+id)\n\tr.setWriteOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out struct{ ID string }\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\treturn out.ID, wm, nil\n}\n\n// Info is used to query for information about an ACL token\n//\n// Deprecated: Use TokenRead instead.\nfunc (a *ACL) Info(id string, q *QueryOptions) (*ACLEntry, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/info/\"+id)\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar entries []*ACLEntry\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif len(entries) > 0 {\n\t\treturn entries[0], qm, nil\n\t}\n\treturn nil, qm, nil\n}\n\n// List is used to get all the ACL tokens\n//\n// Deprecated: Use TokenList instead.\nfunc (a *ACL) List(q *QueryOptions) ([]*ACLEntry, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/list\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar entries []*ACLEntry\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n\n// Replication returns the status of the ACL replication process in the datacenter\nfunc (a *ACL) Replication(q *QueryOptions) (*ACLReplicationStatus, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/replication\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar entries *ACLReplicationStatus\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n\n// TokenCreate creates a new ACL token. If either the AccessorID or SecretID fields\n// of the ACLToken structure are empty they will be filled in by Consul.\nfunc (a *ACL) TokenCreate(token *ACLToken, q *WriteOptions) (*ACLToken, *WriteMeta, error) {\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/token\")\n\tr.setWriteOptions(q)\n\tr.obj = token\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLToken\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\n// TokenUpdate updates a token in place without modifying its AccessorID or SecretID. A valid\n// AccessorID must be set in the ACLToken structure passed to this function but the SecretID may\n// be omitted and will be filled in by Consul with its existing value.\nfunc (a *ACL) TokenUpdate(token *ACLToken, q *WriteOptions) (*ACLToken, *WriteMeta, error) {\n\tif token.AccessorID == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Must specify an AccessorID for Token Updating\")\n\t}\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/token/\"+token.AccessorID)\n\tr.setWriteOptions(q)\n\tr.obj = token\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLToken\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\n// TokenClone will create a new token with the same policies and locality as the original\n// token but will have its own auto-generated AccessorID and SecretID as well having the\n// description passed to this function. The accessorID parameter must be a valid Accessor ID\n// of an existing token.\nfunc (a *ACL) TokenClone(accessorID string, description string, q *WriteOptions) (*ACLToken, *WriteMeta, error) {\n\tif accessorID == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Must specify a token AccessorID for Token Cloning\")\n\t}\n\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/token/\"+accessorID+\"/clone\")\n\tr.setWriteOptions(q)\n\tr.obj = struct{ Description string }{description}\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLToken\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\n// TokenDelete removes a single ACL token. The accessorID parameter must be a valid\n// Accessor ID of an existing token.\nfunc (a *ACL) TokenDelete(accessorID string, q *WriteOptions) (*WriteMeta, error) {\n\tr := a.c.newRequest(\"DELETE\", \"/v1/acl/token/\"+accessorID)\n\tr.setWriteOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tcloseResponseBody(resp)\n\n\twm := &WriteMeta{RequestTime: rtt}\n\treturn wm, nil\n}\n\n// TokenRead retrieves the full token details. The accessorID parameter must be a valid\n// Accessor ID of an existing token.\nfunc (a *ACL) TokenRead(accessorID string, q *QueryOptions) (*ACLToken, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/token/\"+accessorID)\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out ACLToken\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, qm, nil\n}\n\n// TokenReadExpanded retrieves the full token details, as well as the contents of any policies affecting the token.\n// The accessorID parameter must be a valid Accessor ID of an existing token.\nfunc (a *ACL) TokenReadExpanded(accessorID string, q *QueryOptions) (*ACLTokenExpanded, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/token/\"+accessorID)\n\tr.setQueryOptions(q)\n\tr.params.Set(\"expanded\", \"true\")\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out ACLTokenExpanded\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, qm, nil\n}\n\n// TokenReadSelf retrieves the full token details of the token currently\n// assigned to the API Client. In this manner its possible to read a token\n// by its Secret ID.\nfunc (a *ACL) TokenReadSelf(q *QueryOptions) (*ACLToken, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/token/self\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out ACLToken\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, qm, nil\n}\n\n// TokenList lists all tokens. The listing does not contain any SecretIDs as those\n// may only be retrieved by a call to TokenRead.\nfunc (a *ACL) TokenList(q *QueryOptions) ([]*ACLTokenListEntry, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/tokens\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar entries []*ACLTokenListEntry\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n\n// TokenListFiltered lists all tokens that match the given filter options.\n// The listing does not contain any SecretIDs as those may only be retrieved by a call to TokenRead.\nfunc (a *ACL) TokenListFiltered(t ACLTokenFilterOptions, q *QueryOptions) ([]*ACLTokenListEntry, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/tokens\")\n\tr.setQueryOptions(q)\n\n\tif t.AuthMethod != \"\" {\n\t\tr.params.Set(\"authmethod\", t.AuthMethod)\n\t}\n\tif t.Policy != \"\" {\n\t\tr.params.Set(\"policy\", t.Policy)\n\t}\n\tif t.Role != \"\" {\n\t\tr.params.Set(\"role\", t.Role)\n\t}\n\tif t.ServiceName != \"\" {\n\t\tr.params.Set(\"servicename\", t.ServiceName)\n\t}\n\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar entries []*ACLTokenListEntry\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n\n// PolicyCreate will create a new policy. It is not allowed for the policy parameters\n// ID field to be set as this will be generated by Consul while processing the request.\nfunc (a *ACL) PolicyCreate(policy *ACLPolicy, q *WriteOptions) (*ACLPolicy, *WriteMeta, error) {\n\tif policy.ID != \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Cannot specify an ID in Policy Creation\")\n\t}\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/policy\")\n\tr.setWriteOptions(q)\n\tr.obj = policy\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLPolicy\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\n// PolicyUpdate updates a policy. The ID field of the policy parameter must be set to an\n// existing policy ID\nfunc (a *ACL) PolicyUpdate(policy *ACLPolicy, q *WriteOptions) (*ACLPolicy, *WriteMeta, error) {\n\tif policy.ID == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Must specify an ID in Policy Update\")\n\t}\n\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/policy/\"+policy.ID)\n\tr.setWriteOptions(q)\n\tr.obj = policy\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLPolicy\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\n// PolicyDelete deletes a policy given its ID.\nfunc (a *ACL) PolicyDelete(policyID string, q *WriteOptions) (*WriteMeta, error) {\n\tr := a.c.newRequest(\"DELETE\", \"/v1/acl/policy/\"+policyID)\n\tr.setWriteOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcloseResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\treturn wm, nil\n}\n\n// PolicyRead retrieves the policy details including the rule set.\nfunc (a *ACL) PolicyRead(policyID string, q *QueryOptions) (*ACLPolicy, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/policy/\"+policyID)\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out ACLPolicy\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, qm, nil\n}\n\n// PolicyReadByName retrieves the policy details including the rule set with name.\nfunc (a *ACL) PolicyReadByName(policyName string, q *QueryOptions) (*ACLPolicy, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/policy/name/\"+url.QueryEscape(policyName))\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tfound, resp, err := requireNotFoundOrOK(resp)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif !found {\n\t\treturn nil, qm, nil\n\t}\n\n\tvar out ACLPolicy\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, qm, nil\n}\n\n// PolicyList retrieves a listing of all policies. The listing does not include the\n// rules for any policy as those should be retrieved by subsequent calls to PolicyRead.\nfunc (a *ACL) PolicyList(q *QueryOptions) ([]*ACLPolicyListEntry, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/policies\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar entries []*ACLPolicyListEntry\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n\n// RulesTranslate translates the legacy rule syntax into the current syntax.\n//\n// Deprecated: Support for the legacy syntax translation has been removed.\n// This function always returns an error.\nfunc (a *ACL) RulesTranslate(rules io.Reader) (string, error) {\n\treturn \"\", fmt.Errorf(\"Legacy ACL rules were deprecated in Consul 1.4\")\n}\n\n// RulesTranslateToken translates the rules associated with the legacy syntax\n// into the current syntax and returns the results.\n//\n// Deprecated: Support for the legacy syntax translation has been removed.\n// This function always returns an error.\nfunc (a *ACL) RulesTranslateToken(tokenID string) (string, error) {\n\treturn \"\", fmt.Errorf(\"Legacy ACL tokens and rules were deprecated in Consul 1.4\")\n}\n\n// RoleCreate will create a new role. It is not allowed for the role parameters\n// ID field to be set as this will be generated by Consul while processing the request.\nfunc (a *ACL) RoleCreate(role *ACLRole, q *WriteOptions) (*ACLRole, *WriteMeta, error) {\n\tif role.ID != \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Cannot specify an ID in Role Creation\")\n\t}\n\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/role\")\n\tr.setWriteOptions(q)\n\tr.obj = role\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLRole\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\n// RoleUpdate updates a role. The ID field of the role parameter must be set to an\n// existing role ID\nfunc (a *ACL) RoleUpdate(role *ACLRole, q *WriteOptions) (*ACLRole, *WriteMeta, error) {\n\tif role.ID == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Must specify an ID in Role Update\")\n\t}\n\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/role/\"+role.ID)\n\tr.setWriteOptions(q)\n\tr.obj = role\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLRole\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\n// RoleDelete deletes a role given its ID.\nfunc (a *ACL) RoleDelete(roleID string, q *WriteOptions) (*WriteMeta, error) {\n\tr := a.c.newRequest(\"DELETE\", \"/v1/acl/role/\"+roleID)\n\tr.setWriteOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tcloseResponseBody(resp)\n\n\twm := &WriteMeta{RequestTime: rtt}\n\treturn wm, nil\n}\n\n// RoleRead retrieves the role details (by ID). Returns nil if not found.\nfunc (a *ACL) RoleRead(roleID string, q *QueryOptions) (*ACLRole, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/role/\"+roleID)\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tfound, resp, err := requireNotFoundOrOK(resp)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif !found {\n\t\treturn nil, qm, nil\n\t}\n\n\tvar out ACLRole\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, qm, nil\n}\n\n// RoleReadByName retrieves the role details (by name). Returns nil if not found.\nfunc (a *ACL) RoleReadByName(roleName string, q *QueryOptions) (*ACLRole, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/role/name/\"+url.QueryEscape(roleName))\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tfound, resp, err := requireNotFoundOrOK(resp)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif !found {\n\t\treturn nil, qm, nil\n\t}\n\n\tvar out ACLRole\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, qm, nil\n}\n\n// RoleList retrieves a listing of all roles. The listing does not include some\n// metadata for the role as those should be retrieved by subsequent calls to\n// RoleRead.\nfunc (a *ACL) RoleList(q *QueryOptions) ([]*ACLRole, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/roles\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar entries []*ACLRole\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n\n// AuthMethodCreate will create a new auth method.\nfunc (a *ACL) AuthMethodCreate(method *ACLAuthMethod, q *WriteOptions) (*ACLAuthMethod, *WriteMeta, error) {\n\tif method.Name == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Must specify a Name in Auth Method Creation\")\n\t}\n\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/auth-method\")\n\tr.setWriteOptions(q)\n\tr.obj = method\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLAuthMethod\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\n// AuthMethodUpdate updates an auth method.\nfunc (a *ACL) AuthMethodUpdate(method *ACLAuthMethod, q *WriteOptions) (*ACLAuthMethod, *WriteMeta, error) {\n\tif method.Name == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Must specify a Name in Auth Method Update\")\n\t}\n\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/auth-method/\"+url.QueryEscape(method.Name))\n\tr.setWriteOptions(q)\n\tr.obj = method\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLAuthMethod\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\n// AuthMethodDelete deletes an auth method given its Name.\nfunc (a *ACL) AuthMethodDelete(methodName string, q *WriteOptions) (*WriteMeta, error) {\n\tif methodName == \"\" {\n\t\treturn nil, fmt.Errorf(\"Must specify a Name in Auth Method Delete\")\n\t}\n\n\tr := a.c.newRequest(\"DELETE\", \"/v1/acl/auth-method/\"+url.QueryEscape(methodName))\n\tr.setWriteOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tcloseResponseBody(resp)\n\n\twm := &WriteMeta{RequestTime: rtt}\n\treturn wm, nil\n}\n\n// AuthMethodRead retrieves the auth method. Returns nil if not found.\nfunc (a *ACL) AuthMethodRead(methodName string, q *QueryOptions) (*ACLAuthMethod, *QueryMeta, error) {\n\tif methodName == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Must specify a Name in Auth Method Read\")\n\t}\n\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/auth-method/\"+url.QueryEscape(methodName))\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tfound, resp, err := requireNotFoundOrOK(resp)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif !found {\n\t\treturn nil, qm, nil\n\t}\n\n\tvar out ACLAuthMethod\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, qm, nil\n}\n\n// AuthMethodList retrieves a listing of all auth methods. The listing does not\n// include some metadata for the auth method as those should be retrieved by\n// subsequent calls to AuthMethodRead.\nfunc (a *ACL) AuthMethodList(q *QueryOptions) ([]*ACLAuthMethodListEntry, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/auth-methods\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar entries []*ACLAuthMethodListEntry\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n\n// BindingRuleCreate will create a new binding rule. It is not allowed for the\n// binding rule parameter's ID field to be set as this will be generated by\n// Consul while processing the request.\nfunc (a *ACL) BindingRuleCreate(rule *ACLBindingRule, q *WriteOptions) (*ACLBindingRule, *WriteMeta, error) {\n\tif rule.ID != \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Cannot specify an ID in Binding Rule Creation\")\n\t}\n\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/binding-rule\")\n\tr.setWriteOptions(q)\n\tr.obj = rule\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLBindingRule\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\n// BindingRuleUpdate updates a binding rule. The ID field of the role binding\n// rule parameter must be set to an existing binding rule ID.\nfunc (a *ACL) BindingRuleUpdate(rule *ACLBindingRule, q *WriteOptions) (*ACLBindingRule, *WriteMeta, error) {\n\tif rule.ID == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Must specify an ID in Binding Rule Update\")\n\t}\n\n\tr := a.c.newRequest(\"PUT\", \"/v1/acl/binding-rule/\"+rule.ID)\n\tr.setWriteOptions(q)\n\tr.obj = rule\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLBindingRule\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\n// BindingRuleDelete deletes a binding rule given its ID.\nfunc (a *ACL) BindingRuleDelete(bindingRuleID string, q *WriteOptions) (*WriteMeta, error) {\n\tr := a.c.newRequest(\"DELETE\", \"/v1/acl/binding-rule/\"+bindingRuleID)\n\tr.setWriteOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\treturn wm, nil\n}\n\n// BindingRuleRead retrieves the binding rule details. Returns nil if not found.\nfunc (a *ACL) BindingRuleRead(bindingRuleID string, q *QueryOptions) (*ACLBindingRule, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/binding-rule/\"+bindingRuleID)\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tfound, resp, err := requireNotFoundOrOK(resp)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif !found {\n\t\treturn nil, qm, nil\n\t}\n\n\tvar out ACLBindingRule\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, qm, nil\n}\n\n// BindingRuleList retrieves a listing of all binding rules.\nfunc (a *ACL) BindingRuleList(methodName string, q *QueryOptions) ([]*ACLBindingRule, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/binding-rules\")\n\tif methodName != \"\" {\n\t\tr.params.Set(\"authmethod\", methodName)\n\t}\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar entries []*ACLBindingRule\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n\n// Login is used to exchange auth method credentials for a newly-minted Consul Token.\nfunc (a *ACL) Login(auth *ACLLoginParams, q *WriteOptions) (*ACLToken, *WriteMeta, error) {\n\tr := a.c.newRequest(\"POST\", \"/v1/acl/login\")\n\tr.setWriteOptions(q)\n\tr.obj = auth\n\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLToken\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn &out, wm, nil\n}\n\n// Logout is used to destroy a Consul Token created via Login().\nfunc (a *ACL) Logout(q *WriteOptions) (*WriteMeta, error) {\n\tr := a.c.newRequest(\"POST\", \"/v1/acl/logout\")\n\tr.setWriteOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tcloseResponseBody(resp)\n\n\twm := &WriteMeta{RequestTime: rtt}\n\treturn wm, nil\n}\n\n// OIDCAuthURL requests an authorization URL to start an OIDC login flow.\nfunc (a *ACL) OIDCAuthURL(auth *ACLOIDCAuthURLParams, q *WriteOptions) (string, *WriteMeta, error) {\n\tif auth.AuthMethod == \"\" {\n\t\treturn \"\", nil, fmt.Errorf(\"Must specify an auth method name\")\n\t}\n\n\tr := a.c.newRequest(\"POST\", \"/v1/acl/oidc/auth-url\")\n\tr.setWriteOptions(q)\n\tr.obj = auth\n\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out aclOIDCAuthURLResponse\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\treturn out.AuthURL, wm, nil\n}\n\ntype aclOIDCAuthURLResponse struct {\n\tAuthURL string\n}\n\ntype ACLOIDCCallbackParams struct {\n\tAuthMethod  string\n\tState       string\n\tCode        string\n\tClientNonce string\n}\n\n// OIDCCallback is the callback endpoint to complete an OIDC login.\nfunc (a *ACL) OIDCCallback(auth *ACLOIDCCallbackParams, q *WriteOptions) (*ACLToken, *WriteMeta, error) {\n\tif auth.AuthMethod == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Must specify an auth method name\")\n\t}\n\n\tr := a.c.newRequest(\"POST\", \"/v1/acl/oidc/callback\")\n\tr.setWriteOptions(q)\n\tr.obj = auth\n\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLToken\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn &out, wm, nil\n}\n\n// TemplatedPolicyReadByName retrieves the templated policy details (by name). Returns nil if not found.\nfunc (a *ACL) TemplatedPolicyReadByName(templateName string, q *QueryOptions) (*ACLTemplatedPolicyResponse, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/templated-policy/name/\"+templateName)\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tfound, resp, err := requireNotFoundOrOK(resp)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif !found {\n\t\treturn nil, qm, nil\n\t}\n\n\tvar out ACLTemplatedPolicyResponse\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, qm, nil\n}\n\n// TemplatedPolicyList retrieves a listing of all templated policies.\nfunc (a *ACL) TemplatedPolicyList(q *QueryOptions) (map[string]ACLTemplatedPolicyResponse, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/acl/templated-policies\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar entries map[string]ACLTemplatedPolicyResponse\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n\n// TemplatedPolicyPreview is used to preview the policy rendered by the templated policy.\nfunc (a *ACL) TemplatedPolicyPreview(tp *ACLTemplatedPolicy, q *WriteOptions) (*ACLPolicy, *WriteMeta, error) {\n\tr := a.c.newRequest(\"POST\", \"/v1/acl/templated-policy/preview/\"+tp.TemplateName)\n\tr.setWriteOptions(q)\n\tr.obj = tp.TemplateVariables\n\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out ACLPolicy\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn &out, wm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/agent.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\n// ServiceKind is the kind of service being registered.\ntype ServiceKind string\n\nconst (\n\t// ServiceKindTypical is a typical, classic Consul service. This is\n\t// represented by the absence of a value. This was chosen for ease of\n\t// backwards compatibility: existing services in the catalog would\n\t// default to the typical service.\n\tServiceKindTypical ServiceKind = \"\"\n\n\t// ServiceKindConnectProxy is a proxy for the Connect feature. This\n\t// service proxies another service within Consul and speaks the connect\n\t// protocol.\n\tServiceKindConnectProxy ServiceKind = \"connect-proxy\"\n\n\t// ServiceKindMeshGateway is a Mesh Gateway for the Connect feature. This\n\t// service will proxy connections based off the SNI header set by other\n\t// connect proxies\n\tServiceKindMeshGateway ServiceKind = \"mesh-gateway\"\n\n\t// ServiceKindTerminatingGateway is a Terminating Gateway for the Connect\n\t// feature. This service will proxy connections to services outside the mesh.\n\tServiceKindTerminatingGateway ServiceKind = \"terminating-gateway\"\n\n\t// ServiceKindIngressGateway is an Ingress Gateway for the Connect feature.\n\t// This service will ingress connections based of configuration defined in\n\t// the ingress-gateway config entry.\n\tServiceKindIngressGateway ServiceKind = \"ingress-gateway\"\n\n\t// ServiceKindAPIGateway is an API Gateway for the Connect feature.\n\t// This service will ingress connections based of configuration defined in\n\t// the api-gateway config entry.\n\tServiceKindAPIGateway ServiceKind = \"api-gateway\"\n)\n\n// UpstreamDestType is the type of upstream discovery mechanism.\ntype UpstreamDestType string\n\nconst (\n\t// UpstreamDestTypeService discovers instances via healthy service lookup.\n\tUpstreamDestTypeService UpstreamDestType = \"service\"\n\n\t// UpstreamDestTypePreparedQuery discovers instances via prepared query\n\t// execution.\n\tUpstreamDestTypePreparedQuery UpstreamDestType = \"prepared_query\"\n)\n\n// AgentCheck represents a check known to the agent\ntype AgentCheck struct {\n\tNode        string\n\tCheckID     string\n\tName        string\n\tStatus      string\n\tNotes       string\n\tOutput      string\n\tServiceID   string\n\tServiceName string\n\tType        string\n\tExposedPort int\n\tDefinition  HealthCheckDefinition\n\tNamespace   string `json:\",omitempty\"`\n\tPartition   string `json:\",omitempty\"`\n}\n\n// AgentWeights represent optional weights for a service\ntype AgentWeights struct {\n\tPassing int\n\tWarning int\n}\n\n// AgentService represents a service known to the agent\ntype AgentService struct {\n\tKind              ServiceKind `json:\",omitempty\"`\n\tID                string\n\tService           string\n\tTags              []string\n\tMeta              map[string]string\n\tPort              int\n\tAddress           string\n\tSocketPath        string                    `json:\",omitempty\"`\n\tTaggedAddresses   map[string]ServiceAddress `json:\",omitempty\"`\n\tWeights           AgentWeights\n\tEnableTagOverride bool\n\tCreateIndex       uint64                          `json:\",omitempty\" bexpr:\"-\"`\n\tModifyIndex       uint64                          `json:\",omitempty\" bexpr:\"-\"`\n\tContentHash       string                          `json:\",omitempty\" bexpr:\"-\"`\n\tProxy             *AgentServiceConnectProxyConfig `json:\",omitempty\"`\n\tConnect           *AgentServiceConnect            `json:\",omitempty\"`\n\tPeerName          string                          `json:\",omitempty\"`\n\t// NOTE: If we ever set the ContentHash outside of singular service lookup then we may need\n\t// to include the Namespace in the hash. When we do, then we are in for lots of fun with tests.\n\t// For now though, ignoring it works well enough.\n\tNamespace string `json:\",omitempty\" bexpr:\"-\" hash:\"ignore\"`\n\tPartition string `json:\",omitempty\" bexpr:\"-\" hash:\"ignore\"`\n\t// Datacenter is only ever returned and is ignored if presented.\n\tDatacenter string    `json:\",omitempty\" bexpr:\"-\" hash:\"ignore\"`\n\tLocality   *Locality `json:\",omitempty\" bexpr:\"-\" hash:\"ignore\"`\n}\n\n// AgentServiceChecksInfo returns information about a Service and its checks\ntype AgentServiceChecksInfo struct {\n\tAggregatedStatus string\n\tService          *AgentService\n\tChecks           HealthChecks\n}\n\n// AgentServiceConnect represents the Connect configuration of a service.\ntype AgentServiceConnect struct {\n\tNative         bool                      `json:\",omitempty\"`\n\tSidecarService *AgentServiceRegistration `json:\",omitempty\" bexpr:\"-\"`\n}\n\n// AgentServiceConnectProxyConfig is the proxy configuration in a connect-proxy\n// ServiceDefinition or response.\ntype AgentServiceConnectProxyConfig struct {\n\tEnvoyExtensions        []EnvoyExtension        `json:\",omitempty\"`\n\tDestinationServiceName string                  `json:\",omitempty\"`\n\tDestinationServiceID   string                  `json:\",omitempty\"`\n\tLocalServiceAddress    string                  `json:\",omitempty\"`\n\tLocalServicePort       int                     `json:\",omitempty\"`\n\tLocalServiceSocketPath string                  `json:\",omitempty\"`\n\tMode                   ProxyMode               `json:\",omitempty\"`\n\tTransparentProxy       *TransparentProxyConfig `json:\",omitempty\"`\n\tConfig                 map[string]interface{}  `json:\",omitempty\" bexpr:\"-\"`\n\tUpstreams              []Upstream              `json:\",omitempty\"`\n\tMeshGateway            MeshGatewayConfig       `json:\",omitempty\"`\n\tExpose                 ExposeConfig            `json:\",omitempty\"`\n\tAccessLogs             *AccessLogsConfig       `json:\",omitempty\"`\n}\n\nconst (\n\t// MemberTagKeyACLMode is the key used to indicate what ACL mode the agent is\n\t// operating in. The values of this key will be one of the MemberACLMode constants\n\t// with the key not being present indicating ACLModeUnknown.\n\tMemberTagKeyACLMode = \"acls\"\n\n\t// MemberTagRole is the key used to indicate that the member is a server or not.\n\tMemberTagKeyRole = \"role\"\n\n\t// MemberTagValueRoleServer is the value of the MemberTagKeyRole used to indicate\n\t// that the member represents a Consul server.\n\tMemberTagValueRoleServer = \"consul\"\n\n\t// MemberTagValueRoleClient is the value of the MemberTagKeyRole used to indicate\n\t// that the member represents a Consul client.\n\tMemberTagValueRoleClient = \"node\"\n\n\t// MemberTagKeyDatacenter is the key used to indicate which datacenter this member is in.\n\tMemberTagKeyDatacenter = \"dc\"\n\n\t// MemberTagKeySegment is the key name of the tag used to indicate which network\n\t// segment this member is in.\n\t// Network Segments are a Consul Enterprise feature.\n\tMemberTagKeySegment = \"segment\"\n\n\t// MemberTagKeyPartition is the key name of the tag used to indicate which partition\n\t// this member is in.\n\t// Partitions are a Consul Enterprise feature.\n\tMemberTagKeyPartition = \"ap\"\n\n\t// MemberTagKeyBootstrap is the key name of the tag used to indicate whether this\n\t// agent was started with the \"bootstrap\" configuration enabled\n\tMemberTagKeyBootstrap = \"bootstrap\"\n\t// MemberTagValueBootstrap is the value of the MemberTagKeyBootstrap key when the\n\t// agent was started with the \"bootstrap\" configuration enabled.\n\tMemberTagValueBootstrap = \"1\"\n\n\t// MemberTagKeyBootstrapExpect is the key name of the tag used to indicate whether\n\t// this agent was started with the \"bootstrap_expect\" configuration set to a non-zero\n\t// value. The value of this key will be the string for of that configuration value.\n\tMemberTagKeyBootstrapExpect = \"expect\"\n\n\t// MemberTagKeyUseTLS is the key name of the tag used to indicate whther this agent\n\t// was configured to use TLS.\n\tMemberTagKeyUseTLS = \"use_tls\"\n\t// MemberTagValueUseTLS is the value of the MemberTagKeyUseTLS when the agent was\n\t// configured to use TLS. Any other value indicates that it was not setup in\n\t// that manner.\n\tMemberTagValueUseTLS = \"1\"\n\n\t// MemberTagKeyReadReplica is the key used to indicate that the member is a read\n\t// replica server (will remain a Raft non-voter).\n\t// Read Replicas are a Consul Enterprise feature.\n\tMemberTagKeyReadReplica = \"read_replica\"\n\t// MemberTagValueReadReplica is the value of the MemberTagKeyReadReplica key when\n\t// the member is in fact a read-replica. Any other value indicates that it is not.\n\t// Read Replicas are a Consul Enterprise feature.\n\tMemberTagValueReadReplica = \"1\"\n)\n\ntype MemberACLMode string\n\nconst (\n\t// ACLModeDisables indicates that ACLs are disabled for this agent\n\tACLModeDisabled MemberACLMode = \"0\"\n\t// ACLModeEnabled indicates that ACLs are enabled and operating in new ACL\n\t// mode (v1.4.0+ ACLs)\n\tACLModeEnabled MemberACLMode = \"1\"\n\t// ACLModeLegacy has been deprecated, and will be treated as ACLModeUnknown.\n\tACLModeLegacy MemberACLMode = \"2\" // DEPRECATED\n\t// ACLModeUnkown is used to indicate that the AgentMember.Tags didn't advertise\n\t// an ACL mode at all. This is the case for Consul versions before v1.4.0 and\n\t// should be treated the same as ACLModeLegacy.\n\tACLModeUnknown MemberACLMode = \"3\"\n)\n\n// AgentMember represents a cluster member known to the agent\ntype AgentMember struct {\n\tName string\n\tAddr string\n\tPort uint16\n\tTags map[string]string\n\t// Status of the Member which corresponds to  github.com/hashicorp/serf/serf.MemberStatus\n\t// Value is one of:\n\t//\n\t// \t  AgentMemberNone    = 0\n\t//\t  AgentMemberAlive   = 1\n\t//\t  AgentMemberLeaving = 2\n\t//\t  AgentMemberLeft    = 3\n\t//\t  AgentMemberFailed  = 4\n\tStatus      int\n\tProtocolMin uint8\n\tProtocolMax uint8\n\tProtocolCur uint8\n\tDelegateMin uint8\n\tDelegateMax uint8\n\tDelegateCur uint8\n}\n\n// ACLMode returns the ACL mode this agent is operating in.\nfunc (m *AgentMember) ACLMode() MemberACLMode {\n\tmode := m.Tags[MemberTagKeyACLMode]\n\n\t// the key may not have existed but then an\n\t// empty string will be returned and we will\n\t// handle that in the default case of the switch\n\tswitch MemberACLMode(mode) {\n\tcase ACLModeDisabled:\n\t\treturn ACLModeDisabled\n\tcase ACLModeEnabled:\n\t\treturn ACLModeEnabled\n\tdefault:\n\t\treturn ACLModeUnknown\n\t}\n}\n\n// IsConsulServer returns true when this member is a Consul server.\nfunc (m *AgentMember) IsConsulServer() bool {\n\treturn m.Tags[MemberTagKeyRole] == MemberTagValueRoleServer\n}\n\n// AllSegments is used to select for all segments in MembersOpts.\nconst AllSegments = \"_all\"\n\n// MembersOpts is used for querying member information.\ntype MembersOpts struct {\n\t// WAN is whether to show members from the WAN.\n\tWAN bool\n\n\t// Segment is the LAN segment to show members for. Setting this to the\n\t// AllSegments value above will show members in all segments.\n\tSegment string\n\n\tFilter string\n}\n\n// AgentServiceRegistration is used to register a new service\ntype AgentServiceRegistration struct {\n\tKind              ServiceKind               `json:\",omitempty\"`\n\tID                string                    `json:\",omitempty\"`\n\tName              string                    `json:\",omitempty\"`\n\tTags              []string                  `json:\",omitempty\"`\n\tPort              int                       `json:\",omitempty\"`\n\tAddress           string                    `json:\",omitempty\"`\n\tSocketPath        string                    `json:\",omitempty\"`\n\tTaggedAddresses   map[string]ServiceAddress `json:\",omitempty\"`\n\tEnableTagOverride bool                      `json:\",omitempty\"`\n\tMeta              map[string]string         `json:\",omitempty\"`\n\tWeights           *AgentWeights             `json:\",omitempty\"`\n\tCheck             *AgentServiceCheck\n\tChecks            AgentServiceChecks\n\tProxy             *AgentServiceConnectProxyConfig `json:\",omitempty\"`\n\tConnect           *AgentServiceConnect            `json:\",omitempty\"`\n\tNamespace         string                          `json:\",omitempty\" bexpr:\"-\" hash:\"ignore\"`\n\tPartition         string                          `json:\",omitempty\" bexpr:\"-\" hash:\"ignore\"`\n\tLocality          *Locality                       `json:\",omitempty\" bexpr:\"-\" hash:\"ignore\"`\n}\n\n// ServiceRegisterOpts is used to pass extra options to the service register.\ntype ServiceRegisterOpts struct {\n\t// Missing healthchecks will be deleted from the agent.\n\t// Using this parameter allows to idempotently register a service and its checks without\n\t// having to manually deregister checks.\n\tReplaceExistingChecks bool\n\n\t// Token is used to provide a per-request ACL token\n\t// which overrides the agent's default token.\n\tToken string\n\n\t// ctx is an optional context pass through to the underlying HTTP\n\t// request layer. Use WithContext() to set the context.\n\tctx context.Context\n}\n\n// WithContext sets the context to be used for the request on a new ServiceRegisterOpts,\n// and returns the opts.\nfunc (o ServiceRegisterOpts) WithContext(ctx context.Context) ServiceRegisterOpts {\n\to.ctx = ctx\n\treturn o\n}\n\n// AgentCheckRegistration is used to register a new check\ntype AgentCheckRegistration struct {\n\tID        string `json:\",omitempty\"`\n\tName      string `json:\",omitempty\"`\n\tNotes     string `json:\",omitempty\"`\n\tServiceID string `json:\",omitempty\"`\n\tAgentServiceCheck\n\tNamespace string `json:\",omitempty\"`\n\tPartition string `json:\",omitempty\"`\n}\n\n// AgentServiceCheck is used to define a node or service level check\ntype AgentServiceCheck struct {\n\tCheckID                string              `json:\",omitempty\"`\n\tName                   string              `json:\",omitempty\"`\n\tArgs                   []string            `json:\"ScriptArgs,omitempty\"`\n\tDockerContainerID      string              `json:\",omitempty\"`\n\tShell                  string              `json:\",omitempty\"` // Only supported for Docker.\n\tInterval               string              `json:\",omitempty\"`\n\tTimeout                string              `json:\",omitempty\"`\n\tTTL                    string              `json:\",omitempty\"`\n\tHTTP                   string              `json:\",omitempty\"`\n\tHeader                 map[string][]string `json:\",omitempty\"`\n\tMethod                 string              `json:\",omitempty\"`\n\tBody                   string              `json:\",omitempty\"`\n\tTCP                    string              `json:\",omitempty\"`\n\tTCPUseTLS              bool                `json:\",omitempty\"`\n\tUDP                    string              `json:\",omitempty\"`\n\tStatus                 string              `json:\",omitempty\"`\n\tNotes                  string              `json:\",omitempty\"`\n\tTLSServerName          string              `json:\",omitempty\"`\n\tTLSSkipVerify          bool                `json:\",omitempty\"`\n\tGRPC                   string              `json:\",omitempty\"`\n\tGRPCUseTLS             bool                `json:\",omitempty\"`\n\tH2PING                 string              `json:\",omitempty\"`\n\tH2PingUseTLS           bool                `json:\",omitempty\"`\n\tAliasNode              string              `json:\",omitempty\"`\n\tAliasService           string              `json:\",omitempty\"`\n\tSuccessBeforePassing   int                 `json:\",omitempty\"`\n\tFailuresBeforeWarning  int                 `json:\",omitempty\"`\n\tFailuresBeforeCritical int                 `json:\",omitempty\"`\n\n\t// In Consul 0.7 and later, checks that are associated with a service\n\t// may also contain this optional DeregisterCriticalServiceAfter field,\n\t// which is a timeout in the same Go time format as Interval and TTL. If\n\t// a check is in the critical state for more than this configured value,\n\t// then its associated service (and all of its associated checks) will\n\t// automatically be deregistered.\n\tDeregisterCriticalServiceAfter string `json:\",omitempty\"`\n}\ntype AgentServiceChecks []*AgentServiceCheck\n\n// AgentToken is used when updating ACL tokens for an agent.\ntype AgentToken struct {\n\tToken string\n}\n\n// Metrics info is used to store different types of metric values from the agent.\ntype MetricsInfo struct {\n\tTimestamp string\n\tGauges    []GaugeValue\n\tPoints    []PointValue\n\tCounters  []SampledValue\n\tSamples   []SampledValue\n}\n\n// GaugeValue stores one value that is updated as time goes on, such as\n// the amount of memory allocated.\ntype GaugeValue struct {\n\tName   string\n\tValue  float32\n\tLabels map[string]string\n}\n\n// PointValue holds a series of points for a metric.\ntype PointValue struct {\n\tName   string\n\tPoints []float32\n}\n\n// SampledValue stores info about a metric that is incremented over time,\n// such as the number of requests to an HTTP endpoint.\ntype SampledValue struct {\n\tName   string\n\tCount  int\n\tSum    float64\n\tMin    float64\n\tMax    float64\n\tMean   float64\n\tStddev float64\n\tLabels map[string]string\n}\n\n// AgentAuthorizeParams are the request parameters for authorizing a request.\ntype AgentAuthorizeParams struct {\n\tTarget           string\n\tClientCertURI    string\n\tClientCertSerial string\n}\n\n// AgentAuthorize is the response structure for Connect authorization.\ntype AgentAuthorize struct {\n\tAuthorized bool\n\tReason     string\n}\n\n// ConnectProxyConfig is the response structure for agent-local proxy\n// configuration.\ntype ConnectProxyConfig struct {\n\tProxyServiceID    string\n\tTargetServiceID   string\n\tTargetServiceName string\n\tContentHash       string\n\tConfig            map[string]interface{} `bexpr:\"-\"`\n\tUpstreams         []Upstream\n}\n\n// Upstream is the response structure for a proxy upstream configuration.\ntype Upstream struct {\n\tDestinationType      UpstreamDestType `json:\",omitempty\"`\n\tDestinationPartition string           `json:\",omitempty\"`\n\tDestinationNamespace string           `json:\",omitempty\"`\n\tDestinationPeer      string           `json:\",omitempty\"`\n\tDestinationName      string\n\tDatacenter           string                 `json:\",omitempty\"`\n\tLocalBindAddress     string                 `json:\",omitempty\"`\n\tLocalBindPort        int                    `json:\",omitempty\"`\n\tLocalBindSocketPath  string                 `json:\",omitempty\"`\n\tLocalBindSocketMode  string                 `json:\",omitempty\"`\n\tConfig               map[string]interface{} `json:\",omitempty\" bexpr:\"-\"`\n\tMeshGateway          MeshGatewayConfig      `json:\",omitempty\"`\n\tCentrallyConfigured  bool                   `json:\",omitempty\" bexpr:\"-\"`\n}\n\n// Agent can be used to query the Agent endpoints\ntype Agent struct {\n\tc *Client\n\n\t// cache the node name\n\tnodeName string\n}\n\n// Agent returns a handle to the agent endpoints\nfunc (c *Client) Agent() *Agent {\n\treturn &Agent{c: c}\n}\n\n// Self is used to query the agent we are speaking to for\n// information about itself\nfunc (a *Agent) Self() (map[string]map[string]interface{}, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/agent/self\")\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar out map[string]map[string]interface{}\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// Host is used to retrieve information about the host the\n// agent is running on such as CPU, memory, and disk. Requires\n// a operator:read ACL token.\nfunc (a *Agent) Host() (map[string]interface{}, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/agent/host\")\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tvar out map[string]interface{}\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// Version is used to retrieve information about the running Consul version and build.\nfunc (a *Agent) Version() (map[string]interface{}, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/agent/version\")\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tvar out map[string]interface{}\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// Metrics is used to query the agent we are speaking to for\n// its current internal metric data\nfunc (a *Agent) Metrics() (*MetricsInfo, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/agent/metrics\")\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tvar out *MetricsInfo\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// MetricsStream returns an io.ReadCloser which will emit a stream of metrics\n// until the context is cancelled. The metrics are json encoded.\n// The caller is responsible for closing the returned io.ReadCloser.\nfunc (a *Agent) MetricsStream(ctx context.Context) (io.ReadCloser, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/agent/metrics/stream\")\n\tr.ctx = ctx\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn resp.Body, nil\n}\n\n// Reload triggers a configuration reload for the agent we are connected to.\nfunc (a *Agent) Reload() error {\n\tr := a.c.newRequest(\"PUT\", \"/v1/agent/reload\")\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// NodeName is used to get the node name of the agent\nfunc (a *Agent) NodeName() (string, error) {\n\tif a.nodeName != \"\" {\n\t\treturn a.nodeName, nil\n\t}\n\tinfo, err := a.Self()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tname := info[\"Config\"][\"NodeName\"].(string)\n\ta.nodeName = name\n\treturn name, nil\n}\n\n// Checks returns the locally registered checks\nfunc (a *Agent) Checks() (map[string]*AgentCheck, error) {\n\treturn a.ChecksWithFilter(\"\")\n}\n\n// ChecksWithFilter returns a subset of the locally registered checks that match\n// the given filter expression\nfunc (a *Agent) ChecksWithFilter(filter string) (map[string]*AgentCheck, error) {\n\treturn a.ChecksWithFilterOpts(filter, nil)\n}\n\n// ChecksWithFilterOpts returns a subset of the locally registered checks that match\n// the given filter expression and QueryOptions.\nfunc (a *Agent) ChecksWithFilterOpts(filter string, q *QueryOptions) (map[string]*AgentCheck, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/agent/checks\")\n\tr.setQueryOptions(q)\n\tr.filterQuery(filter)\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tvar out map[string]*AgentCheck\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// Services returns the locally registered services\nfunc (a *Agent) Services() (map[string]*AgentService, error) {\n\treturn a.ServicesWithFilter(\"\")\n}\n\n// ServicesWithFilter returns a subset of the locally registered services that match\n// the given filter expression\nfunc (a *Agent) ServicesWithFilter(filter string) (map[string]*AgentService, error) {\n\treturn a.ServicesWithFilterOpts(filter, nil)\n}\n\n// ServicesWithFilterOpts returns a subset of the locally registered services that match\n// the given filter expression and QueryOptions.\nfunc (a *Agent) ServicesWithFilterOpts(filter string, q *QueryOptions) (map[string]*AgentService, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/agent/services\")\n\tr.setQueryOptions(q)\n\tr.filterQuery(filter)\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tvar out map[string]*AgentService\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn out, nil\n}\n\n// AgentHealthServiceByID returns for a given serviceID: the aggregated health status, the service definition or an error if any\n// - If the service is not found, will return status (critical, nil, nil)\n// - If the service is found, will return (critical|passing|warning), AgentServiceChecksInfo, nil)\n// - In all other cases, will return an error\nfunc (a *Agent) AgentHealthServiceByID(serviceID string) (string, *AgentServiceChecksInfo, error) {\n\treturn a.AgentHealthServiceByIDOpts(serviceID, nil)\n}\n\nfunc (a *Agent) AgentHealthServiceByIDOpts(serviceID string, q *QueryOptions) (string, *AgentServiceChecksInfo, error) {\n\tpath := fmt.Sprintf(\"/v1/agent/health/service/id/%v\", serviceID)\n\tr := a.c.newRequest(\"GET\", path)\n\tr.setQueryOptions(q)\n\tr.params.Add(\"format\", \"json\")\n\tr.header.Set(\"Accept\", \"application/json\")\n\t// not a lot of value in wrapping the doRequest call in a requireHttpCodes call\n\t// we manipulate the resp body  and the require calls \"swallow\" the content on err\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\t// Service not Found\n\tif resp.StatusCode == http.StatusNotFound {\n\t\treturn HealthCritical, nil, nil\n\t}\n\tvar out *AgentServiceChecksInfo\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn HealthCritical, out, err\n\t}\n\tswitch resp.StatusCode {\n\tcase http.StatusOK:\n\t\treturn HealthPassing, out, nil\n\tcase http.StatusTooManyRequests:\n\t\treturn HealthWarning, out, nil\n\tcase http.StatusServiceUnavailable:\n\t\treturn HealthCritical, out, nil\n\t}\n\treturn HealthCritical, out, fmt.Errorf(\"Unexpected Error Code %v for %s\", resp.StatusCode, path)\n}\n\n// AgentHealthServiceByName returns for a given service name: the aggregated health status for all services\n// having the specified name.\n// - If no service is not found, will return status (critical, [], nil)\n// - If the service is found, will return (critical|passing|warning), []api.AgentServiceChecksInfo, nil)\n// - In all other cases, will return an error\nfunc (a *Agent) AgentHealthServiceByName(service string) (string, []AgentServiceChecksInfo, error) {\n\treturn a.AgentHealthServiceByNameOpts(service, nil)\n}\n\nfunc (a *Agent) AgentHealthServiceByNameOpts(service string, q *QueryOptions) (string, []AgentServiceChecksInfo, error) {\n\tpath := fmt.Sprintf(\"/v1/agent/health/service/name/%v\", service)\n\tr := a.c.newRequest(\"GET\", path)\n\tr.setQueryOptions(q)\n\tr.params.Add(\"format\", \"json\")\n\tr.header.Set(\"Accept\", \"application/json\")\n\t// not a lot of value in wrapping the doRequest call in a requireHttpCodes call\n\t// we manipulate the resp body  and the require calls \"swallow\" the content on err\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\t// Service not Found\n\tif resp.StatusCode == http.StatusNotFound {\n\t\treturn HealthCritical, nil, nil\n\t}\n\tvar out []AgentServiceChecksInfo\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn HealthCritical, out, err\n\t}\n\tswitch resp.StatusCode {\n\tcase http.StatusOK:\n\t\treturn HealthPassing, out, nil\n\tcase http.StatusTooManyRequests:\n\t\treturn HealthWarning, out, nil\n\tcase http.StatusServiceUnavailable:\n\t\treturn HealthCritical, out, nil\n\t}\n\treturn HealthCritical, out, fmt.Errorf(\"Unexpected Error Code %v for %s\", resp.StatusCode, path)\n}\n\n// Service returns a locally registered service instance and allows for\n// hash-based blocking.\n//\n// Note that this uses an unconventional blocking mechanism since it's\n// agent-local state. That means there is no persistent raft index so we block\n// based on object hash instead.\nfunc (a *Agent) Service(serviceID string, q *QueryOptions) (*AgentService, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/agent/service/\"+serviceID)\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out *AgentService\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn out, qm, nil\n}\n\n// Members returns the known gossip members. The WAN\n// flag can be used to query a server for WAN members.\nfunc (a *Agent) Members(wan bool) ([]*AgentMember, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/agent/members\")\n\tif wan {\n\t\tr.params.Set(\"wan\", \"1\")\n\t}\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tvar out []*AgentMember\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// MembersOpts returns the known gossip members and can be passed\n// additional options for WAN/segment filtering.\nfunc (a *Agent) MembersOpts(opts MembersOpts) ([]*AgentMember, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/agent/members\")\n\tr.params.Set(\"segment\", opts.Segment)\n\tif opts.WAN {\n\t\tr.params.Set(\"wan\", \"1\")\n\t}\n\n\tif opts.Filter != \"\" {\n\t\tr.params.Set(\"filter\", opts.Filter)\n\t}\n\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tvar out []*AgentMember\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// ServiceRegister is used to register a new service with\n// the local agent\nfunc (a *Agent) ServiceRegister(service *AgentServiceRegistration) error {\n\topts := ServiceRegisterOpts{\n\t\tReplaceExistingChecks: false,\n\t}\n\n\treturn a.serviceRegister(service, opts)\n}\n\n// ServiceRegister is used to register a new service with\n// the local agent and can be passed additional options.\nfunc (a *Agent) ServiceRegisterOpts(service *AgentServiceRegistration, opts ServiceRegisterOpts) error {\n\treturn a.serviceRegister(service, opts)\n}\n\nfunc (a *Agent) serviceRegister(service *AgentServiceRegistration, opts ServiceRegisterOpts) error {\n\tr := a.c.newRequest(\"PUT\", \"/v1/agent/service/register\")\n\tr.obj = service\n\tr.ctx = opts.ctx\n\tif opts.ReplaceExistingChecks {\n\t\tr.params.Set(\"replace-existing-checks\", \"true\")\n\t}\n\tif opts.Token != \"\" {\n\t\tr.header.Set(\"X-Consul-Token\", opts.Token)\n\t}\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// ServiceDeregister is used to deregister a service with\n// the local agent\nfunc (a *Agent) ServiceDeregister(serviceID string) error {\n\tr := a.c.newRequest(\"PUT\", \"/v1/agent/service/deregister/\"+serviceID)\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// ServiceDeregisterOpts is used to deregister a service with\n// the local agent with QueryOptions.\nfunc (a *Agent) ServiceDeregisterOpts(serviceID string, q *QueryOptions) error {\n\tr := a.c.newRequest(\"PUT\", \"/v1/agent/service/deregister/\"+serviceID)\n\tr.setQueryOptions(q)\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// PassTTL is used to set a TTL check to the passing state.\n//\n// DEPRECATION NOTICE: This interface is deprecated in favor of UpdateTTL().\n// The client interface will be removed in 0.8 or changed to use\n// UpdateTTL()'s endpoint and the server endpoints will be removed in 0.9.\nfunc (a *Agent) PassTTL(checkID, note string) error {\n\treturn a.updateTTL(checkID, note, \"pass\")\n}\n\n// WarnTTL is used to set a TTL check to the warning state.\n//\n// DEPRECATION NOTICE: This interface is deprecated in favor of UpdateTTL().\n// The client interface will be removed in 0.8 or changed to use\n// UpdateTTL()'s endpoint and the server endpoints will be removed in 0.9.\nfunc (a *Agent) WarnTTL(checkID, note string) error {\n\treturn a.updateTTL(checkID, note, \"warn\")\n}\n\n// FailTTL is used to set a TTL check to the failing state.\n//\n// DEPRECATION NOTICE: This interface is deprecated in favor of UpdateTTL().\n// The client interface will be removed in 0.8 or changed to use\n// UpdateTTL()'s endpoint and the server endpoints will be removed in 0.9.\nfunc (a *Agent) FailTTL(checkID, note string) error {\n\treturn a.updateTTL(checkID, note, \"fail\")\n}\n\n// updateTTL is used to update the TTL of a check. This is the internal\n// method that uses the old API that's present in Consul versions prior to\n// 0.6.4. Since Consul didn't have an analogous \"update\" API before it seemed\n// ok to break this (former) UpdateTTL in favor of the new UpdateTTL below,\n// but keep the old Pass/Warn/Fail methods using the old API under the hood.\n//\n// DEPRECATION NOTICE: This interface is deprecated in favor of UpdateTTL().\n// The client interface will be removed in 0.8 and the server endpoints will\n// be removed in 0.9.\nfunc (a *Agent) updateTTL(checkID, note, status string) error {\n\tswitch status {\n\tcase \"pass\":\n\tcase \"warn\":\n\tcase \"fail\":\n\tdefault:\n\t\treturn fmt.Errorf(\"Invalid status: %s\", status)\n\t}\n\tendpoint := fmt.Sprintf(\"/v1/agent/check/%s/%s\", status, checkID)\n\tr := a.c.newRequest(\"PUT\", endpoint)\n\tr.params.Set(\"note\", note)\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// checkUpdate is the payload for a PUT for a check update.\ntype checkUpdate struct {\n\t// Status is one of the api.Health* states: HealthPassing\n\t// (\"passing\"), HealthWarning (\"warning\"), or HealthCritical\n\t// (\"critical\").\n\tStatus string\n\n\t// Output is the information to post to the UI for operators as the\n\t// output of the process that decided to hit the TTL check. This is\n\t// different from the note field that's associated with the check\n\t// itself.\n\tOutput string\n}\n\n// UpdateTTL is used to update the TTL of a check. This uses the newer API\n// that was introduced in Consul 0.6.4 and later. We translate the old status\n// strings for compatibility (though a newer version of Consul will still be\n// required to use this API).\nfunc (a *Agent) UpdateTTL(checkID, output, status string) error {\n\treturn a.UpdateTTLOpts(checkID, output, status, nil)\n}\n\nfunc (a *Agent) UpdateTTLOpts(checkID, output, status string, q *QueryOptions) error {\n\tswitch status {\n\tcase \"pass\", HealthPassing:\n\t\tstatus = HealthPassing\n\tcase \"warn\", HealthWarning:\n\t\tstatus = HealthWarning\n\tcase \"fail\", HealthCritical:\n\t\tstatus = HealthCritical\n\tdefault:\n\t\treturn fmt.Errorf(\"Invalid status: %s\", status)\n\t}\n\n\tendpoint := fmt.Sprintf(\"/v1/agent/check/update/%s\", checkID)\n\tr := a.c.newRequest(\"PUT\", endpoint)\n\tr.setQueryOptions(q)\n\tr.obj = &checkUpdate{\n\t\tStatus: status,\n\t\tOutput: output,\n\t}\n\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// CheckRegister is used to register a new check with\n// the local agent\nfunc (a *Agent) CheckRegister(check *AgentCheckRegistration) error {\n\treturn a.CheckRegisterOpts(check, nil)\n}\n\n// CheckRegisterOpts is used to register a new check with\n// the local agent using query options\nfunc (a *Agent) CheckRegisterOpts(check *AgentCheckRegistration, q *QueryOptions) error {\n\tr := a.c.newRequest(\"PUT\", \"/v1/agent/check/register\")\n\tr.setQueryOptions(q)\n\tr.obj = check\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// CheckDeregister is used to deregister a check with\n// the local agent\nfunc (a *Agent) CheckDeregister(checkID string) error {\n\treturn a.CheckDeregisterOpts(checkID, nil)\n}\n\n// CheckDeregisterOpts is used to deregister a check with\n// the local agent using query options\nfunc (a *Agent) CheckDeregisterOpts(checkID string, q *QueryOptions) error {\n\tr := a.c.newRequest(\"PUT\", \"/v1/agent/check/deregister/\"+checkID)\n\tr.setQueryOptions(q)\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// Join is used to instruct the agent to attempt a join to\n// another cluster member\nfunc (a *Agent) Join(addr string, wan bool) error {\n\tr := a.c.newRequest(\"PUT\", \"/v1/agent/join/\"+addr)\n\tif wan {\n\t\tr.params.Set(\"wan\", \"1\")\n\t}\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// Leave is used to have the agent gracefully leave the cluster and shutdown\nfunc (a *Agent) Leave() error {\n\tr := a.c.newRequest(\"PUT\", \"/v1/agent/leave\")\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\ntype ForceLeaveOpts struct {\n\t// Prune indicates if we should remove a failed agent from the list of\n\t// members in addition to ejecting it.\n\tPrune bool\n\n\t// WAN indicates that the request should exclusively target the WAN pool.\n\tWAN bool\n}\n\n// ForceLeave is used to have the agent eject a failed node\nfunc (a *Agent) ForceLeave(node string) error {\n\treturn a.ForceLeaveOpts(node, ForceLeaveOpts{})\n}\n\n// ForceLeavePrune is used to have an a failed agent removed\n// from the list of members\nfunc (a *Agent) ForceLeavePrune(node string) error {\n\treturn a.ForceLeaveOpts(node, ForceLeaveOpts{Prune: true})\n}\n\n// ForceLeaveOpts is used to have the agent eject a failed node or remove it\n// completely from the list of members.\n//\n// DEPRECATED - Use ForceLeaveOptions instead.\nfunc (a *Agent) ForceLeaveOpts(node string, opts ForceLeaveOpts) error {\n\treturn a.ForceLeaveOptions(node, opts, nil)\n}\n\n// ForceLeaveOptions is used to have the agent eject a failed node or remove it\n// completely from the list of members. Allows usage of QueryOptions on-top of ForceLeaveOpts\nfunc (a *Agent) ForceLeaveOptions(node string, opts ForceLeaveOpts, q *QueryOptions) error {\n\tr := a.c.newRequest(\"PUT\", \"/v1/agent/force-leave/\"+node)\n\tr.setQueryOptions(q)\n\tif opts.Prune {\n\t\tr.params.Set(\"prune\", \"1\")\n\t}\n\tif opts.WAN {\n\t\tr.params.Set(\"wan\", \"1\")\n\t}\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// ConnectAuthorize is used to authorize an incoming connection\n// to a natively integrated Connect service.\nfunc (a *Agent) ConnectAuthorize(auth *AgentAuthorizeParams) (*AgentAuthorize, error) {\n\tr := a.c.newRequest(\"POST\", \"/v1/agent/connect/authorize\")\n\tr.obj = auth\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tvar out AgentAuthorize\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &out, nil\n}\n\n// ConnectCARoots returns the list of roots.\nfunc (a *Agent) ConnectCARoots(q *QueryOptions) (*CARootList, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/agent/connect/ca/roots\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out CARootList\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn &out, qm, nil\n}\n\n// ConnectCALeaf gets the leaf certificate for the given service ID.\nfunc (a *Agent) ConnectCALeaf(serviceID string, q *QueryOptions) (*LeafCert, *QueryMeta, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/agent/connect/ca/leaf/\"+serviceID)\n\tr.setQueryOptions(q)\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out LeafCert\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn &out, qm, nil\n}\n\n// EnableServiceMaintenance toggles service maintenance mode on\n// for the given service ID.\nfunc (a *Agent) EnableServiceMaintenance(serviceID, reason string) error {\n\treturn a.EnableServiceMaintenanceOpts(serviceID, reason, nil)\n}\n\nfunc (a *Agent) EnableServiceMaintenanceOpts(serviceID, reason string, q *QueryOptions) error {\n\tr := a.c.newRequest(\"PUT\", \"/v1/agent/service/maintenance/\"+serviceID)\n\tr.setQueryOptions(q)\n\tr.params.Set(\"enable\", \"true\")\n\tr.params.Set(\"reason\", reason)\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// DisableServiceMaintenance toggles service maintenance mode off\n// for the given service ID.\nfunc (a *Agent) DisableServiceMaintenance(serviceID string) error {\n\treturn a.DisableServiceMaintenanceOpts(serviceID, nil)\n}\n\nfunc (a *Agent) DisableServiceMaintenanceOpts(serviceID string, q *QueryOptions) error {\n\tr := a.c.newRequest(\"PUT\", \"/v1/agent/service/maintenance/\"+serviceID)\n\tr.setQueryOptions(q)\n\tr.params.Set(\"enable\", \"false\")\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// EnableNodeMaintenance toggles node maintenance mode on for the\n// agent we are connected to.\nfunc (a *Agent) EnableNodeMaintenance(reason string) error {\n\tr := a.c.newRequest(\"PUT\", \"/v1/agent/maintenance\")\n\tr.params.Set(\"enable\", \"true\")\n\tr.params.Set(\"reason\", reason)\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// DisableNodeMaintenance toggles node maintenance mode off for the\n// agent we are connected to.\nfunc (a *Agent) DisableNodeMaintenance() error {\n\tr := a.c.newRequest(\"PUT\", \"/v1/agent/maintenance\")\n\tr.params.Set(\"enable\", \"false\")\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// Monitor returns a channel which will receive streaming logs from the agent\n// Providing a non-nil stopCh can be used to close the connection and stop the\n// log stream. An empty string will be sent down the given channel when there's\n// nothing left to stream, after which the caller should close the stopCh.\nfunc (a *Agent) Monitor(loglevel string, stopCh <-chan struct{}, q *QueryOptions) (chan string, error) {\n\treturn a.monitor(loglevel, false, stopCh, q)\n}\n\n// MonitorJSON is like Monitor except it returns logs in JSON format.\nfunc (a *Agent) MonitorJSON(loglevel string, stopCh <-chan struct{}, q *QueryOptions) (chan string, error) {\n\treturn a.monitor(loglevel, true, stopCh, q)\n}\n\nfunc (a *Agent) monitor(loglevel string, logJSON bool, stopCh <-chan struct{}, q *QueryOptions) (chan string, error) {\n\tr := a.c.newRequest(\"GET\", \"/v1/agent/monitor\")\n\tr.setQueryOptions(q)\n\tif loglevel != \"\" {\n\t\tr.params.Add(\"loglevel\", loglevel)\n\t}\n\tif logJSON {\n\t\tr.params.Set(\"logjson\", \"true\")\n\t}\n\t_, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tlogCh := make(chan string, 64)\n\tgo func() {\n\t\tdefer closeResponseBody(resp)\n\t\tscanner := bufio.NewScanner(resp.Body)\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-stopCh:\n\t\t\t\tclose(logCh)\n\t\t\t\treturn\n\t\t\tdefault:\n\t\t\t}\n\t\t\tif scanner.Scan() {\n\t\t\t\t// An empty string signals to the caller that\n\t\t\t\t// the scan is done, so make sure we only emit\n\t\t\t\t// that when the scanner says it's done, not if\n\t\t\t\t// we happen to ingest an empty line.\n\t\t\t\tif text := scanner.Text(); text != \"\" {\n\t\t\t\t\tlogCh <- text\n\t\t\t\t} else {\n\t\t\t\t\tlogCh <- \" \"\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlogCh <- \"\"\n\t\t\t}\n\t\t}\n\t}()\n\treturn logCh, nil\n}\n\n// UpdateACLToken updates the agent's \"acl_token\". See updateToken for more\n// details. Deprecated in Consul 1.4.\n//\n// DEPRECATED (ACL-Legacy-Compat) - Prefer UpdateDefaultACLToken for v1.4.3 and above\nfunc (a *Agent) UpdateACLToken(token string, q *WriteOptions) (*WriteMeta, error) {\n\treturn nil, fmt.Errorf(\"Legacy ACL Tokens were deprecated in Consul 1.4\")\n}\n\n// UpdateACLAgentToken updates the agent's \"acl_agent_token\". See updateToken\n// for more details. Deprecated in Consul 1.4.\n//\n// DEPRECATED (ACL-Legacy-Compat) - Prefer UpdateAgentACLToken for v1.4.3 and above\nfunc (a *Agent) UpdateACLAgentToken(token string, q *WriteOptions) (*WriteMeta, error) {\n\treturn nil, fmt.Errorf(\"Legacy ACL Tokens were deprecated in Consul 1.4\")\n}\n\n// UpdateACLAgentMasterToken updates the agent's \"acl_agent_master_token\". See\n// updateToken for more details. Deprecated in Consul 1.4.\n//\n// DEPRECATED (ACL-Legacy-Compat) - Prefer UpdateAgentMasterACLToken for v1.4.3 and above\nfunc (a *Agent) UpdateACLAgentMasterToken(token string, q *WriteOptions) (*WriteMeta, error) {\n\treturn nil, fmt.Errorf(\"Legacy ACL Tokens were deprecated in Consul 1.4\")\n}\n\n// UpdateACLReplicationToken updates the agent's \"acl_replication_token\". See\n// updateToken for more details. Deprecated in Consul 1.4.\n//\n// DEPRECATED (ACL-Legacy-Compat) - Prefer UpdateReplicationACLToken for v1.4.3 and above\nfunc (a *Agent) UpdateACLReplicationToken(token string, q *WriteOptions) (*WriteMeta, error) {\n\treturn nil, fmt.Errorf(\"Legacy ACL Tokens were deprecated in Consul 1.4\")\n}\n\n// UpdateDefaultACLToken updates the agent's \"default\" token. See updateToken\n// for more details\nfunc (a *Agent) UpdateDefaultACLToken(token string, q *WriteOptions) (*WriteMeta, error) {\n\treturn a.updateTokenFallback(token, q, \"default\", \"acl_token\")\n}\n\n// UpdateAgentACLToken updates the agent's \"agent\" token. See updateToken\n// for more details\nfunc (a *Agent) UpdateAgentACLToken(token string, q *WriteOptions) (*WriteMeta, error) {\n\treturn a.updateTokenFallback(token, q, \"agent\", \"acl_agent_token\")\n}\n\n// UpdateAgentRecoveryACLToken updates the agent's \"agent_recovery\" token. See updateToken\n// for more details.\nfunc (a *Agent) UpdateAgentRecoveryACLToken(token string, q *WriteOptions) (*WriteMeta, error) {\n\treturn a.updateTokenFallback(token, q, \"agent_recovery\", \"agent_master\", \"acl_agent_master_token\")\n}\n\n// UpdateAgentMasterACLToken updates the agent's \"agent_master\" token. See updateToken\n// for more details.\n//\n// DEPRECATED - Prefer UpdateAgentRecoveryACLToken for v1.11 and above.\nfunc (a *Agent) UpdateAgentMasterACLToken(token string, q *WriteOptions) (*WriteMeta, error) {\n\treturn a.updateTokenFallback(token, q, \"agent_master\", \"acl_agent_master_token\")\n}\n\n// UpdateReplicationACLToken updates the agent's \"replication\" token. See updateToken\n// for more details\nfunc (a *Agent) UpdateReplicationACLToken(token string, q *WriteOptions) (*WriteMeta, error) {\n\treturn a.updateTokenFallback(token, q, \"replication\", \"acl_replication_token\")\n}\n\n// UpdateConfigFileRegistrationToken updates the agent's \"replication\" token. See updateToken\n// for more details\nfunc (a *Agent) UpdateConfigFileRegistrationToken(token string, q *WriteOptions) (*WriteMeta, error) {\n\treturn a.updateToken(\"config_file_service_registration\", token, q)\n}\n\nfunc (a *Agent) UpdateDNSToken(token string, q *WriteOptions) (*WriteMeta, error) {\n\treturn a.updateToken(\"dns\", token, q)\n}\n\n// updateToken can be used to update one of an agent's ACL tokens after the agent has\n// started. The tokens are may not be persisted, so will need to be updated again if\n// the agent is restarted unless the agent is configured to persist them.\nfunc (a *Agent) updateToken(target, token string, q *WriteOptions) (*WriteMeta, error) {\n\tmeta, _, err := a.updateTokenOnce(target, token, q)\n\treturn meta, err\n}\n\nfunc (a *Agent) updateTokenFallback(token string, q *WriteOptions, targets ...string) (*WriteMeta, error) {\n\tif len(targets) == 0 {\n\t\tpanic(\"targets must not be empty\")\n\t}\n\n\tvar (\n\t\tmeta *WriteMeta\n\t\terr  error\n\t)\n\tfor _, target := range targets {\n\t\tvar status int\n\t\tmeta, status, err = a.updateTokenOnce(target, token, q)\n\t\tif err == nil && status != http.StatusNotFound {\n\t\t\treturn meta, err\n\t\t}\n\t}\n\treturn meta, err\n}\n\nfunc (a *Agent) updateTokenOnce(target, token string, q *WriteOptions) (*WriteMeta, int, error) {\n\tr := a.c.newRequest(\"PUT\", fmt.Sprintf(\"/v1/agent/token/%s\", target))\n\tr.setWriteOptions(q)\n\tr.obj = &AgentToken{Token: token}\n\n\trtt, resp, err := a.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, 500, err\n\t}\n\tdefer closeResponseBody(resp)\n\twm := &WriteMeta{RequestTime: rtt}\n\tif err := requireOK(resp); err != nil {\n\t\tvar statusE StatusError\n\t\tif errors.As(err, &statusE) {\n\t\t\treturn wm, statusE.Code, statusE\n\t\t}\n\t\treturn nil, 0, err\n\t}\n\treturn wm, resp.StatusCode, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/api.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/tls\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/hashicorp/go-cleanhttp\"\n\t\"github.com/hashicorp/go-hclog\"\n\t\"github.com/hashicorp/go-rootcerts\"\n)\n\nconst (\n\t// HTTPAddrEnvName defines an environment variable name which sets\n\t// the HTTP address if there is no -http-addr specified.\n\tHTTPAddrEnvName = \"CONSUL_HTTP_ADDR\"\n\n\t// HTTPTokenEnvName defines an environment variable name which sets\n\t// the HTTP token.\n\tHTTPTokenEnvName = \"CONSUL_HTTP_TOKEN\"\n\n\t// HTTPTokenFileEnvName defines an environment variable name which sets\n\t// the HTTP token file.\n\tHTTPTokenFileEnvName = \"CONSUL_HTTP_TOKEN_FILE\"\n\n\t// HTTPAuthEnvName defines an environment variable name which sets\n\t// the HTTP authentication header.\n\tHTTPAuthEnvName = \"CONSUL_HTTP_AUTH\"\n\n\t// HTTPSSLEnvName defines an environment variable name which sets\n\t// whether or not to use HTTPS.\n\tHTTPSSLEnvName = \"CONSUL_HTTP_SSL\"\n\n\t// HTTPCAFile defines an environment variable name which sets the\n\t// CA file to use for talking to Consul over TLS.\n\tHTTPCAFile = \"CONSUL_CACERT\"\n\n\t// HTTPCAPath defines an environment variable name which sets the\n\t// path to a directory of CA certs to use for talking to Consul over TLS.\n\tHTTPCAPath = \"CONSUL_CAPATH\"\n\n\t// HTTPClientCert defines an environment variable name which sets the\n\t// client cert file to use for talking to Consul over TLS.\n\tHTTPClientCert = \"CONSUL_CLIENT_CERT\"\n\n\t// HTTPClientKey defines an environment variable name which sets the\n\t// client key file to use for talking to Consul over TLS.\n\tHTTPClientKey = \"CONSUL_CLIENT_KEY\"\n\n\t// HTTPTLSServerName defines an environment variable name which sets the\n\t// server name to use as the SNI host when connecting via TLS\n\tHTTPTLSServerName = \"CONSUL_TLS_SERVER_NAME\"\n\n\t// HTTPSSLVerifyEnvName defines an environment variable name which sets\n\t// whether or not to disable certificate checking.\n\tHTTPSSLVerifyEnvName = \"CONSUL_HTTP_SSL_VERIFY\"\n\n\t// GRPCAddrEnvName defines an environment variable name which sets the gRPC\n\t// address for consul connect envoy. Note this isn't actually used by the api\n\t// client in this package but is defined here for consistency with all the\n\t// other ENV names we use.\n\tGRPCAddrEnvName = \"CONSUL_GRPC_ADDR\"\n\n\t// GRPCCAFileEnvName defines an environment variable name which sets the\n\t// CA file to use for talking to Consul gRPC over TLS.\n\tGRPCCAFileEnvName = \"CONSUL_GRPC_CACERT\"\n\n\t// GRPCCAPathEnvName defines an environment variable name which sets the\n\t// path to a directory of CA certs to use for talking to Consul gRPC over TLS.\n\tGRPCCAPathEnvName = \"CONSUL_GRPC_CAPATH\"\n\n\t// HTTPNamespaceEnvVar defines an environment variable name which sets\n\t// the HTTP Namespace to be used by default. This can still be overridden.\n\tHTTPNamespaceEnvName = \"CONSUL_NAMESPACE\"\n\n\t// HTTPPartitionEnvName defines an environment variable name which sets\n\t// the HTTP Partition to be used by default. This can still be overridden.\n\tHTTPPartitionEnvName = \"CONSUL_PARTITION\"\n\n\t// QueryBackendStreaming Query backend of type streaming\n\tQueryBackendStreaming = \"streaming\"\n\n\t// QueryBackendBlockingQuery Query backend of type blocking query\n\tQueryBackendBlockingQuery = \"blocking-query\"\n)\n\ntype StatusError struct {\n\tCode int\n\tBody string\n}\n\nfunc (e StatusError) Error() string {\n\treturn fmt.Sprintf(\"Unexpected response code: %d (%s)\", e.Code, e.Body)\n}\n\n// QueryOptions are used to parameterize a query\ntype QueryOptions struct {\n\t// Namespace overrides the `default` namespace\n\t// Note: Namespaces are available only in Consul Enterprise\n\tNamespace string\n\n\t// Partition overrides the `default` partition\n\t// Note: Partitions are available only in Consul Enterprise\n\tPartition string\n\n\t// Providing a datacenter overwrites the DC provided\n\t// by the Config\n\tDatacenter string\n\n\t// Providing a peer name in the query option\n\tPeer string\n\n\t// AllowStale allows any Consul server (non-leader) to service\n\t// a read. This allows for lower latency and higher throughput\n\tAllowStale bool\n\n\t// RequireConsistent forces the read to be fully consistent.\n\t// This is more expensive but prevents ever performing a stale\n\t// read.\n\tRequireConsistent bool\n\n\t// UseCache requests that the agent cache results locally. See\n\t// https://www.consul.io/api/features/caching.html for more details on the\n\t// semantics.\n\tUseCache bool\n\n\t// MaxAge limits how old a cached value will be returned if UseCache is true.\n\t// If there is a cached response that is older than the MaxAge, it is treated\n\t// as a cache miss and a new fetch invoked. If the fetch fails, the error is\n\t// returned. Clients that wish to allow for stale results on error can set\n\t// StaleIfError to a longer duration to change this behavior. It is ignored\n\t// if the endpoint supports background refresh caching. See\n\t// https://www.consul.io/api/features/caching.html for more details.\n\tMaxAge time.Duration\n\n\t// StaleIfError specifies how stale the client will accept a cached response\n\t// if the servers are unavailable to fetch a fresh one. Only makes sense when\n\t// UseCache is true and MaxAge is set to a lower, non-zero value. It is\n\t// ignored if the endpoint supports background refresh caching. See\n\t// https://www.consul.io/api/features/caching.html for more details.\n\tStaleIfError time.Duration\n\n\t// WaitIndex is used to enable a blocking query. Waits\n\t// until the timeout or the next index is reached\n\tWaitIndex uint64\n\n\t// WaitHash is used by some endpoints instead of WaitIndex to perform blocking\n\t// on state based on a hash of the response rather than a monotonic index.\n\t// This is required when the state being blocked on is not stored in Raft, for\n\t// example agent-local proxy configuration.\n\tWaitHash string\n\n\t// WaitTime is used to bound the duration of a wait.\n\t// Defaults to that of the Config, but can be overridden.\n\tWaitTime time.Duration\n\n\t// Token is used to provide a per-request ACL token\n\t// which overrides the agent's default token.\n\tToken string\n\n\t// Near is used to provide a node name that will sort the results\n\t// in ascending order based on the estimated round trip time from\n\t// that node. Setting this to \"_agent\" will use the agent's node\n\t// for the sort.\n\tNear string\n\n\t// NodeMeta is used to filter results by nodes with the given\n\t// metadata key/value pairs. Currently, only one key/value pair can\n\t// be provided for filtering.\n\tNodeMeta map[string]string\n\n\t// RelayFactor is used in keyring operations to cause responses to be\n\t// relayed back to the sender through N other random nodes. Must be\n\t// a value from 0 to 5 (inclusive).\n\tRelayFactor uint8\n\n\t// LocalOnly is used in keyring list operation to force the keyring\n\t// query to only hit local servers (no WAN traffic).\n\tLocalOnly bool\n\n\t// Connect filters prepared query execution to only include Connect-capable\n\t// services. This currently affects prepared query execution.\n\tConnect bool\n\n\t// ctx is an optional context pass through to the underlying HTTP\n\t// request layer. Use Context() and WithContext() to manage this.\n\tctx context.Context\n\n\t// Filter requests filtering data prior to it being returned. The string\n\t// is a go-bexpr compatible expression.\n\tFilter string\n\n\t// MergeCentralConfig returns a service definition merged with the\n\t// proxy-defaults/global and service-defaults/:service config entries.\n\t// This can be used to ensure a full service definition is returned in the response\n\t// especially when the service might not be written into the catalog that way.\n\tMergeCentralConfig bool\n\n\t// Global is used to request information from all datacenters. Currently only\n\t// used for operator usage requests.\n\tGlobal bool\n}\n\nfunc (o *QueryOptions) Context() context.Context {\n\tif o != nil && o.ctx != nil {\n\t\treturn o.ctx\n\t}\n\treturn context.Background()\n}\n\nfunc (o *QueryOptions) WithContext(ctx context.Context) *QueryOptions {\n\to2 := new(QueryOptions)\n\tif o != nil {\n\t\t*o2 = *o\n\t}\n\to2.ctx = ctx\n\treturn o2\n}\n\n// WriteOptions are used to parameterize a write\ntype WriteOptions struct {\n\t// Namespace overrides the `default` namespace\n\t// Note: Namespaces are available only in Consul Enterprise\n\tNamespace string\n\n\t// Partition overrides the `default` partition\n\t// Note: Partitions are available only in Consul Enterprise\n\tPartition string\n\n\t// Providing a datacenter overwrites the DC provided\n\t// by the Config\n\tDatacenter string\n\n\t// Token is used to provide a per-request ACL token\n\t// which overrides the agent's default token.\n\tToken string\n\n\t// RelayFactor is used in keyring operations to cause responses to be\n\t// relayed back to the sender through N other random nodes. Must be\n\t// a value from 0 to 5 (inclusive).\n\tRelayFactor uint8\n\n\t// ctx is an optional context pass through to the underlying HTTP\n\t// request layer. Use Context() and WithContext() to manage this.\n\tctx context.Context\n}\n\nfunc (o *WriteOptions) Context() context.Context {\n\tif o != nil && o.ctx != nil {\n\t\treturn o.ctx\n\t}\n\treturn context.Background()\n}\n\nfunc (o *WriteOptions) WithContext(ctx context.Context) *WriteOptions {\n\to2 := new(WriteOptions)\n\tif o != nil {\n\t\t*o2 = *o\n\t}\n\to2.ctx = ctx\n\treturn o2\n}\n\n// QueryMeta is used to return meta data about a query\ntype QueryMeta struct {\n\t// LastIndex. This can be used as a WaitIndex to perform\n\t// a blocking query\n\tLastIndex uint64\n\n\t// LastContentHash. This can be used as a WaitHash to perform a blocking query\n\t// for endpoints that support hash-based blocking. Endpoints that do not\n\t// support it will return an empty hash.\n\tLastContentHash string\n\n\t// Time of last contact from the leader for the\n\t// server servicing the request\n\tLastContact time.Duration\n\n\t// Is there a known leader\n\tKnownLeader bool\n\n\t// How long did the request take\n\tRequestTime time.Duration\n\n\t// Is address translation enabled for HTTP responses on this agent\n\tAddressTranslationEnabled bool\n\n\t// CacheHit is true if the result was served from agent-local cache.\n\tCacheHit bool\n\n\t// CacheAge is set if request was ?cached and indicates how stale the cached\n\t// response is.\n\tCacheAge time.Duration\n\n\t// QueryBackend represent which backend served the request.\n\tQueryBackend string\n\n\t// DefaultACLPolicy is used to control the ACL interaction when there is no\n\t// defined policy. This can be \"allow\" which means ACLs are used to\n\t// deny-list, or \"deny\" which means ACLs are allow-lists.\n\tDefaultACLPolicy string\n\n\t// ResultsFilteredByACLs is true when some of the query's results were\n\t// filtered out by enforcing ACLs. It may be false because nothing was\n\t// removed, or because the endpoint does not yet support this flag.\n\tResultsFilteredByACLs bool\n}\n\n// WriteMeta is used to return meta data about a write\ntype WriteMeta struct {\n\t// How long did the request take\n\tRequestTime time.Duration\n}\n\n// HttpBasicAuth is used to authenticate http client with HTTP Basic Authentication\ntype HttpBasicAuth struct {\n\t// Username to use for HTTP Basic Authentication\n\tUsername string\n\n\t// Password to use for HTTP Basic Authentication\n\tPassword string\n}\n\n// Config is used to configure the creation of a client\ntype Config struct {\n\t// Address is the address of the Consul server\n\tAddress string\n\n\t// Scheme is the URI scheme for the Consul server\n\tScheme string\n\n\t// Prefix for URIs for when consul is behind an API gateway (reverse\n\t// proxy).  The API gateway must strip off the PathPrefix before\n\t// passing the request onto consul.\n\tPathPrefix string\n\n\t// Datacenter to use. If not provided, the default agent datacenter is used.\n\tDatacenter string\n\n\t// Transport is the Transport to use for the http client.\n\tTransport *http.Transport\n\n\t// HttpClient is the client to use. Default will be\n\t// used if not provided.\n\tHttpClient *http.Client\n\n\t// HttpAuth is the auth info to use for http access.\n\tHttpAuth *HttpBasicAuth\n\n\t// WaitTime limits how long a Watch will block. If not provided,\n\t// the agent default values will be used.\n\tWaitTime time.Duration\n\n\t// Token is used to provide a per-request ACL token\n\t// which overrides the agent's default token.\n\tToken string\n\n\t// TokenFile is a file containing the current token to use for this client.\n\t// If provided it is read once at startup and never again.\n\tTokenFile string\n\n\t// Namespace is the name of the namespace to send along for the request\n\t// when no other Namespace is present in the QueryOptions\n\tNamespace string\n\n\t// Partition is the name of the partition to send along for the request\n\t// when no other Partition is present in the QueryOptions\n\tPartition string\n\n\tTLSConfig TLSConfig\n}\n\n// TLSConfig is used to generate a TLSClientConfig that's useful for talking to\n// Consul using TLS.\ntype TLSConfig struct {\n\t// Address is the optional address of the Consul server. The port, if any\n\t// will be removed from here and this will be set to the ServerName of the\n\t// resulting config.\n\tAddress string\n\n\t// CAFile is the optional path to the CA certificate used for Consul\n\t// communication, defaults to the system bundle if not specified.\n\tCAFile string\n\n\t// CAPath is the optional path to a directory of CA certificates to use for\n\t// Consul communication, defaults to the system bundle if not specified.\n\tCAPath string\n\n\t// CAPem is the optional PEM-encoded CA certificate used for Consul\n\t// communication, defaults to the system bundle if not specified.\n\tCAPem []byte\n\n\t// CertFile is the optional path to the certificate for Consul\n\t// communication. If this is set then you need to also set KeyFile.\n\tCertFile string\n\n\t// CertPEM is the optional PEM-encoded certificate for Consul\n\t// communication. If this is set then you need to also set KeyPEM.\n\tCertPEM []byte\n\n\t// KeyFile is the optional path to the private key for Consul communication.\n\t// If this is set then you need to also set CertFile.\n\tKeyFile string\n\n\t// KeyPEM is the optional PEM-encoded private key for Consul communication.\n\t// If this is set then you need to also set CertPEM.\n\tKeyPEM []byte\n\n\t// InsecureSkipVerify if set to true will disable TLS host verification.\n\tInsecureSkipVerify bool\n}\n\n// DefaultConfig returns a default configuration for the client. By default this\n// will pool and reuse idle connections to Consul. If you have a long-lived\n// client object, this is the desired behavior and should make the most efficient\n// use of the connections to Consul. If you don't reuse a client object, which\n// is not recommended, then you may notice idle connections building up over\n// time. To avoid this, use the DefaultNonPooledConfig() instead.\nfunc DefaultConfig() *Config {\n\treturn defaultConfig(nil, cleanhttp.DefaultPooledTransport)\n}\n\n// DefaultConfigWithLogger returns a default configuration for the client. It\n// is exactly the same as DefaultConfig, but allows for a pre-configured logger\n// object to be passed through.\nfunc DefaultConfigWithLogger(logger hclog.Logger) *Config {\n\treturn defaultConfig(logger, cleanhttp.DefaultPooledTransport)\n}\n\n// DefaultNonPooledConfig returns a default configuration for the client which\n// does not pool connections. This isn't a recommended configuration because it\n// will reconnect to Consul on every request, but this is useful to avoid the\n// accumulation of idle connections if you make many client objects during the\n// lifetime of your application.\nfunc DefaultNonPooledConfig() *Config {\n\treturn defaultConfig(nil, cleanhttp.DefaultTransport)\n}\n\n// defaultConfig returns the default configuration for the client, using the\n// given function to make the transport.\nfunc defaultConfig(logger hclog.Logger, transportFn func() *http.Transport) *Config {\n\tif logger == nil {\n\t\tlogger = hclog.New(&hclog.LoggerOptions{\n\t\t\tName: \"consul-api\",\n\t\t})\n\t}\n\n\tconfig := &Config{\n\t\tAddress:   \"127.0.0.1:8500\",\n\t\tScheme:    \"http\",\n\t\tTransport: transportFn(),\n\t}\n\n\tif addr := os.Getenv(HTTPAddrEnvName); addr != \"\" {\n\t\tconfig.Address = addr\n\t}\n\n\tif tokenFile := os.Getenv(HTTPTokenFileEnvName); tokenFile != \"\" {\n\t\tconfig.TokenFile = tokenFile\n\t}\n\n\tif token := os.Getenv(HTTPTokenEnvName); token != \"\" {\n\t\tconfig.Token = token\n\t}\n\n\tif auth := os.Getenv(HTTPAuthEnvName); auth != \"\" {\n\t\tvar username, password string\n\t\tif strings.Contains(auth, \":\") {\n\t\t\tsplit := strings.SplitN(auth, \":\", 2)\n\t\t\tusername = split[0]\n\t\t\tpassword = split[1]\n\t\t} else {\n\t\t\tusername = auth\n\t\t}\n\n\t\tconfig.HttpAuth = &HttpBasicAuth{\n\t\t\tUsername: username,\n\t\t\tPassword: password,\n\t\t}\n\t}\n\n\tif ssl := os.Getenv(HTTPSSLEnvName); ssl != \"\" {\n\t\tenabled, err := strconv.ParseBool(ssl)\n\t\tif err != nil {\n\t\t\tlogger.Warn(fmt.Sprintf(\"could not parse %s\", HTTPSSLEnvName), \"error\", err)\n\t\t}\n\n\t\tif enabled {\n\t\t\tconfig.Scheme = \"https\"\n\t\t}\n\t}\n\n\tif v := os.Getenv(HTTPTLSServerName); v != \"\" {\n\t\tconfig.TLSConfig.Address = v\n\t}\n\tif v := os.Getenv(HTTPCAFile); v != \"\" {\n\t\tconfig.TLSConfig.CAFile = v\n\t}\n\tif v := os.Getenv(HTTPCAPath); v != \"\" {\n\t\tconfig.TLSConfig.CAPath = v\n\t}\n\tif v := os.Getenv(HTTPClientCert); v != \"\" {\n\t\tconfig.TLSConfig.CertFile = v\n\t}\n\tif v := os.Getenv(HTTPClientKey); v != \"\" {\n\t\tconfig.TLSConfig.KeyFile = v\n\t}\n\tif v := os.Getenv(HTTPSSLVerifyEnvName); v != \"\" {\n\t\tdoVerify, err := strconv.ParseBool(v)\n\t\tif err != nil {\n\t\t\tlogger.Warn(fmt.Sprintf(\"could not parse %s\", HTTPSSLVerifyEnvName), \"error\", err)\n\t\t}\n\t\tif !doVerify {\n\t\t\tconfig.TLSConfig.InsecureSkipVerify = true\n\t\t}\n\t}\n\n\tif v := os.Getenv(HTTPNamespaceEnvName); v != \"\" {\n\t\tconfig.Namespace = v\n\t}\n\n\tif v := os.Getenv(HTTPPartitionEnvName); v != \"\" {\n\t\tconfig.Partition = v\n\t}\n\n\treturn config\n}\n\n// TLSConfig is used to generate a TLSClientConfig that's useful for talking to\n// Consul using TLS.\nfunc SetupTLSConfig(tlsConfig *TLSConfig) (*tls.Config, error) {\n\ttlsClientConfig := &tls.Config{\n\t\tInsecureSkipVerify: tlsConfig.InsecureSkipVerify,\n\t}\n\n\tif tlsConfig.Address != \"\" {\n\t\tserver := tlsConfig.Address\n\t\thasPort := strings.LastIndex(server, \":\") > strings.LastIndex(server, \"]\")\n\t\tif hasPort {\n\t\t\tvar err error\n\t\t\tserver, _, err = net.SplitHostPort(server)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\ttlsClientConfig.ServerName = server\n\t}\n\n\tif len(tlsConfig.CertPEM) != 0 && len(tlsConfig.KeyPEM) != 0 {\n\t\ttlsCert, err := tls.X509KeyPair(tlsConfig.CertPEM, tlsConfig.KeyPEM)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttlsClientConfig.Certificates = []tls.Certificate{tlsCert}\n\t} else if len(tlsConfig.CertPEM) != 0 || len(tlsConfig.KeyPEM) != 0 {\n\t\treturn nil, fmt.Errorf(\"both client cert and client key must be provided\")\n\t}\n\n\tif tlsConfig.CertFile != \"\" && tlsConfig.KeyFile != \"\" {\n\t\ttlsCert, err := tls.LoadX509KeyPair(tlsConfig.CertFile, tlsConfig.KeyFile)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttlsClientConfig.Certificates = []tls.Certificate{tlsCert}\n\t} else if tlsConfig.CertFile != \"\" || tlsConfig.KeyFile != \"\" {\n\t\treturn nil, fmt.Errorf(\"both client cert and client key must be provided\")\n\t}\n\n\tif tlsConfig.CAFile != \"\" || tlsConfig.CAPath != \"\" || len(tlsConfig.CAPem) != 0 {\n\t\trootConfig := &rootcerts.Config{\n\t\t\tCAFile:        tlsConfig.CAFile,\n\t\t\tCAPath:        tlsConfig.CAPath,\n\t\t\tCACertificate: tlsConfig.CAPem,\n\t\t}\n\t\tif err := rootcerts.ConfigureTLS(tlsClientConfig, rootConfig); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn tlsClientConfig, nil\n}\n\nfunc (c *Config) GenerateEnv() []string {\n\tenv := make([]string, 0, 10)\n\n\tenv = append(env,\n\t\tfmt.Sprintf(\"%s=%s\", HTTPAddrEnvName, c.Address),\n\t\tfmt.Sprintf(\"%s=%s\", HTTPTokenEnvName, c.Token),\n\t\tfmt.Sprintf(\"%s=%s\", HTTPTokenFileEnvName, c.TokenFile),\n\t\tfmt.Sprintf(\"%s=%t\", HTTPSSLEnvName, c.Scheme == \"https\"),\n\t\tfmt.Sprintf(\"%s=%s\", HTTPCAFile, c.TLSConfig.CAFile),\n\t\tfmt.Sprintf(\"%s=%s\", HTTPCAPath, c.TLSConfig.CAPath),\n\t\tfmt.Sprintf(\"%s=%s\", HTTPClientCert, c.TLSConfig.CertFile),\n\t\tfmt.Sprintf(\"%s=%s\", HTTPClientKey, c.TLSConfig.KeyFile),\n\t\tfmt.Sprintf(\"%s=%s\", HTTPTLSServerName, c.TLSConfig.Address),\n\t\tfmt.Sprintf(\"%s=%t\", HTTPSSLVerifyEnvName, !c.TLSConfig.InsecureSkipVerify))\n\n\tif c.HttpAuth != nil {\n\t\tenv = append(env, fmt.Sprintf(\"%s=%s:%s\", HTTPAuthEnvName, c.HttpAuth.Username, c.HttpAuth.Password))\n\t} else {\n\t\tenv = append(env, fmt.Sprintf(\"%s=\", HTTPAuthEnvName))\n\t}\n\n\treturn env\n}\n\n// Client provides a client to the Consul API\ntype Client struct {\n\tmodifyLock sync.RWMutex\n\theaders    http.Header\n\n\tconfig Config\n}\n\n// Headers gets the current set of headers used for requests. This returns a\n// copy; to modify it call AddHeader or SetHeaders.\nfunc (c *Client) Headers() http.Header {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\n\tif c.headers == nil {\n\t\treturn nil\n\t}\n\n\tret := make(http.Header)\n\tfor k, v := range c.headers {\n\t\tfor _, val := range v {\n\t\t\tret[k] = append(ret[k], val)\n\t\t}\n\t}\n\n\treturn ret\n}\n\n// AddHeader allows a single header key/value pair to be added\n// in a race-safe fashion.\nfunc (c *Client) AddHeader(key, value string) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.headers.Add(key, value)\n}\n\n// SetHeaders clears all previous headers and uses only the given\n// ones going forward.\nfunc (c *Client) SetHeaders(headers http.Header) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.headers = headers\n}\n\n// NewClient returns a new client\nfunc NewClient(config *Config) (*Client, error) {\n\t// bootstrap the config\n\tdefConfig := DefaultConfig()\n\n\tif config.Address == \"\" {\n\t\tconfig.Address = defConfig.Address\n\t}\n\n\tif config.Scheme == \"\" {\n\t\tconfig.Scheme = defConfig.Scheme\n\t}\n\n\tif config.Transport == nil {\n\t\tconfig.Transport = defConfig.Transport\n\t}\n\n\tif config.TLSConfig.Address == \"\" {\n\t\tconfig.TLSConfig.Address = defConfig.TLSConfig.Address\n\t}\n\n\tif config.TLSConfig.CAFile == \"\" {\n\t\tconfig.TLSConfig.CAFile = defConfig.TLSConfig.CAFile\n\t}\n\n\tif config.TLSConfig.CAPath == \"\" {\n\t\tconfig.TLSConfig.CAPath = defConfig.TLSConfig.CAPath\n\t}\n\n\tif config.TLSConfig.CertFile == \"\" {\n\t\tconfig.TLSConfig.CertFile = defConfig.TLSConfig.CertFile\n\t}\n\n\tif config.TLSConfig.KeyFile == \"\" {\n\t\tconfig.TLSConfig.KeyFile = defConfig.TLSConfig.KeyFile\n\t}\n\n\tif !config.TLSConfig.InsecureSkipVerify {\n\t\tconfig.TLSConfig.InsecureSkipVerify = defConfig.TLSConfig.InsecureSkipVerify\n\t}\n\n\tif config.HttpClient == nil {\n\t\tvar err error\n\t\tconfig.HttpClient, err = NewHttpClient(config.Transport, config.TLSConfig)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif config.Namespace == \"\" {\n\t\tconfig.Namespace = defConfig.Namespace\n\t}\n\n\tif config.Partition == \"\" {\n\t\tconfig.Partition = defConfig.Partition\n\t}\n\n\tparts := strings.SplitN(config.Address, \"://\", 2)\n\tif len(parts) == 2 {\n\t\tswitch parts[0] {\n\t\tcase \"http\":\n\t\t\t// Never revert to http if TLS was explicitly requested.\n\t\tcase \"https\":\n\t\t\tconfig.Scheme = \"https\"\n\t\tcase \"unix\":\n\t\t\ttrans := cleanhttp.DefaultTransport()\n\t\t\ttrans.DialContext = func(_ context.Context, _, _ string) (net.Conn, error) {\n\t\t\t\treturn net.Dial(\"unix\", parts[1])\n\t\t\t}\n\t\t\thttpClient, err := NewHttpClient(trans, config.TLSConfig)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tconfig.HttpClient = httpClient\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"Unknown protocol scheme: %s\", parts[0])\n\t\t}\n\t\tconfig.Address = parts[1]\n\n\t\t// separate out a reverse proxy prefix, if it is present.\n\t\t// NOTE: Rewriting this code to use url.Parse() instead of\n\t\t// strings.SplitN() breaks existing test cases.\n\t\tswitch parts[0] {\n\t\tcase \"http\", \"https\":\n\t\t\tparts := strings.SplitN(parts[1], \"/\", 2)\n\t\t\tif len(parts) == 2 {\n\t\t\t\tconfig.Address = parts[0]\n\t\t\t\tconfig.PathPrefix = \"/\" + parts[1]\n\t\t\t}\n\t\t}\n\t}\n\n\t// If the TokenFile is set, always use that, even if a Token is configured.\n\t// This is because when TokenFile is set it is read into the Token field.\n\t// We want any derived clients to have to re-read the token file.\n\t// The precedence of ACL token should be:\n\t// 1. -token-file cli option\n\t// 2. -token cli option\n\t// 3. CONSUL_HTTP_TOKEN_FILE environment variable\n\t// 4. CONSUL_HTTP_TOKEN environment variable\n\tif config.TokenFile != \"\" && config.TokenFile != defConfig.TokenFile {\n\t\tdata, err := os.ReadFile(config.TokenFile)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"Error loading token file %s : %s\", config.TokenFile, err)\n\t\t}\n\n\t\tif token := strings.TrimSpace(string(data)); token != \"\" {\n\t\t\tconfig.Token = token\n\t\t}\n\t} else if config.Token != \"\" && defConfig.Token != config.Token {\n\t\t// Fall through\n\t} else if defConfig.TokenFile != \"\" {\n\t\tdata, err := os.ReadFile(defConfig.TokenFile)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"Error loading token file %s : %s\", defConfig.TokenFile, err)\n\t\t}\n\n\t\tif token := strings.TrimSpace(string(data)); token != \"\" {\n\t\t\tconfig.Token = token\n\t\t\tconfig.TokenFile = defConfig.TokenFile\n\t\t}\n\t} else {\n\t\tconfig.Token = defConfig.Token\n\t}\n\treturn &Client{config: *config, headers: make(http.Header)}, nil\n}\n\n// NewHttpClient returns an http client configured with the given Transport and TLS\n// config.\nfunc NewHttpClient(transport *http.Transport, tlsConf TLSConfig) (*http.Client, error) {\n\tclient := &http.Client{\n\t\tTransport: transport,\n\t}\n\n\t// TODO (slackpad) - Once we get some run time on the HTTP/2 support we\n\t// should turn it on by default if TLS is enabled. We would basically\n\t// just need to call http2.ConfigureTransport(transport) here. We also\n\t// don't want to introduce another external dependency on\n\t// golang.org/x/net/http2 at this time. For a complete recipe for how\n\t// to enable HTTP/2 support on a transport suitable for the API client\n\t// library see agent/http_test.go:TestHTTPServer_H2.\n\n\tif transport.TLSClientConfig == nil {\n\t\ttlsClientConfig, err := SetupTLSConfig(&tlsConf)\n\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\ttransport.TLSClientConfig = tlsClientConfig\n\t}\n\n\treturn client, nil\n}\n\n// request is used to help build up a request\ntype request struct {\n\tconfig *Config\n\tmethod string\n\turl    *url.URL\n\tparams url.Values\n\tbody   io.Reader\n\theader http.Header\n\tobj    interface{}\n\tctx    context.Context\n}\n\n// setQueryOptions is used to annotate the request with\n// additional query options\nfunc (r *request) setQueryOptions(q *QueryOptions) {\n\tif q == nil {\n\t\treturn\n\t}\n\tif q.Namespace != \"\" {\n\t\t// For backwards-compatibility with existing tests,\n\t\t// use the short-hand query param name \"ns\"\n\t\t// rather than the alternative long-hand \"namespace\"\n\t\tr.params.Set(\"ns\", q.Namespace)\n\t}\n\tif q.Partition != \"\" {\n\t\t// For backwards-compatibility with existing tests,\n\t\t// use the long-hand query param name \"partition\"\n\t\t// rather than the alternative short-hand \"ap\"\n\t\tr.params.Set(\"partition\", q.Partition)\n\t}\n\tif q.Datacenter != \"\" {\n\t\t// For backwards-compatibility with existing tests,\n\t\t// use the short-hand query param name \"dc\"\n\t\t// rather than the alternative long-hand \"datacenter\"\n\t\tr.params.Set(\"dc\", q.Datacenter)\n\t}\n\tif q.Peer != \"\" {\n\t\tr.params.Set(\"peer\", q.Peer)\n\t}\n\tif q.AllowStale {\n\t\tr.params.Set(\"stale\", \"\")\n\t}\n\tif q.RequireConsistent {\n\t\tr.params.Set(\"consistent\", \"\")\n\t}\n\tif q.WaitIndex != 0 {\n\t\tr.params.Set(\"index\", strconv.FormatUint(q.WaitIndex, 10))\n\t}\n\tif q.WaitTime != 0 {\n\t\tr.params.Set(\"wait\", durToMsec(q.WaitTime))\n\t}\n\tif q.WaitHash != \"\" {\n\t\tr.params.Set(\"hash\", q.WaitHash)\n\t}\n\tif q.Token != \"\" {\n\t\tr.header.Set(\"X-Consul-Token\", q.Token)\n\t}\n\tif q.Near != \"\" {\n\t\tr.params.Set(\"near\", q.Near)\n\t}\n\tif q.Filter != \"\" {\n\t\tr.params.Set(\"filter\", q.Filter)\n\t}\n\tif len(q.NodeMeta) > 0 {\n\t\tfor key, value := range q.NodeMeta {\n\t\t\tr.params.Add(\"node-meta\", key+\":\"+value)\n\t\t}\n\t}\n\tif q.RelayFactor != 0 {\n\t\tr.params.Set(\"relay-factor\", strconv.Itoa(int(q.RelayFactor)))\n\t}\n\tif q.LocalOnly {\n\t\tr.params.Set(\"local-only\", fmt.Sprintf(\"%t\", q.LocalOnly))\n\t}\n\tif q.Connect {\n\t\tr.params.Set(\"connect\", \"true\")\n\t}\n\tif q.UseCache && !q.RequireConsistent {\n\t\tr.params.Set(\"cached\", \"\")\n\n\t\tcc := []string{}\n\t\tif q.MaxAge > 0 {\n\t\t\tcc = append(cc, fmt.Sprintf(\"max-age=%.0f\", q.MaxAge.Seconds()))\n\t\t}\n\t\tif q.StaleIfError > 0 {\n\t\t\tcc = append(cc, fmt.Sprintf(\"stale-if-error=%.0f\", q.StaleIfError.Seconds()))\n\t\t}\n\t\tif len(cc) > 0 {\n\t\t\tr.header.Set(\"Cache-Control\", strings.Join(cc, \", \"))\n\t\t}\n\t}\n\tif q.MergeCentralConfig {\n\t\tr.params.Set(\"merge-central-config\", \"\")\n\t}\n\tif q.Global {\n\t\tr.params.Set(\"global\", \"\")\n\t}\n\n\tr.ctx = q.ctx\n}\n\n// durToMsec converts a duration to a millisecond specified string. If the\n// user selected a positive value that rounds to 0 ms, then we will use 1 ms\n// so they get a short delay, otherwise Consul will translate the 0 ms into\n// a huge default delay.\nfunc durToMsec(dur time.Duration) string {\n\tms := dur / time.Millisecond\n\tif dur > 0 && ms == 0 {\n\t\tms = 1\n\t}\n\treturn fmt.Sprintf(\"%dms\", ms)\n}\n\n// serverError is a string we look for to detect 500 errors.\nconst serverError = \"Unexpected response code: 500\"\n\n// IsRetryableError returns true for 500 errors from the Consul servers, and\n// network connection errors. These are usually retryable at a later time.\n// This applies to reads but NOT to writes. This may return true for errors\n// on writes that may have still gone through, so do not use this to retry\n// any write operations.\nfunc IsRetryableError(err error) bool {\n\tif err == nil {\n\t\treturn false\n\t}\n\n\tif _, ok := err.(net.Error); ok {\n\t\treturn true\n\t}\n\n\t// TODO (slackpad) - Make a real error type here instead of using\n\t// a string check.\n\treturn strings.Contains(err.Error(), serverError)\n}\n\n// setWriteOptions is used to annotate the request with\n// additional write options\nfunc (r *request) setWriteOptions(q *WriteOptions) {\n\tif q == nil {\n\t\treturn\n\t}\n\t// For backwards-compatibility, continue to use the shorthand \"ns\"\n\t// rather than \"namespace\"\n\tif q.Namespace != \"\" {\n\t\tr.params.Set(\"ns\", q.Namespace)\n\t}\n\tif q.Partition != \"\" {\n\t\tr.params.Set(\"partition\", q.Partition)\n\t}\n\t// For backwards-compatibility, continue to use the shorthand \"dc\"\n\t// rather than \"datacenter\"\n\tif q.Datacenter != \"\" {\n\t\tr.params.Set(\"dc\", q.Datacenter)\n\t}\n\tif q.Token != \"\" {\n\t\tr.header.Set(\"X-Consul-Token\", q.Token)\n\t}\n\tif q.RelayFactor != 0 {\n\t\tr.params.Set(\"relay-factor\", strconv.Itoa(int(q.RelayFactor)))\n\t}\n\tr.ctx = q.ctx\n}\n\n// toHTTP converts the request to an HTTP request\nfunc (r *request) toHTTP() (*http.Request, error) {\n\t// Encode the query parameters\n\tr.url.RawQuery = r.params.Encode()\n\n\t// Check if we should encode the body\n\tif r.body == nil && r.obj != nil {\n\t\tb, err := encodeBody(r.obj)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tr.body = b\n\t}\n\n\t// Create the HTTP request\n\treq, err := http.NewRequest(r.method, r.url.RequestURI(), r.body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// validate that socket communications that do not use the host, detect\n\t// slashes in the host name and replace it with local host.\n\t// this is required since go started validating req.host in 1.20.6 and 1.19.11.\n\t// prior to that they would strip out the slashes for you.  They removed that\n\t// behavior and added more strict validation as part of a CVE.\n\t// This issue is being tracked by the Go team:\n\t// https://github.com/golang/go/issues/61431\n\t// If there is a resolution in this issue, we will remove this code.\n\t// In the time being, this is the accepted workaround.\n\tif strings.HasPrefix(r.url.Host, \"/\") {\n\t\tr.url.Host = \"localhost\"\n\t}\n\n\treq.URL.Host = r.url.Host\n\treq.URL.Scheme = r.url.Scheme\n\treq.Host = r.url.Host\n\treq.Header = r.header\n\n\t// Content-Type must always be set when a body is present\n\t// See https://github.com/hashicorp/consul/issues/10011\n\tif req.Body != nil && req.Header.Get(\"Content-Type\") == \"\" {\n\t\treq.Header.Set(\"Content-Type\", \"application/json\")\n\t}\n\n\t// Setup auth\n\tif r.config.HttpAuth != nil {\n\t\treq.SetBasicAuth(r.config.HttpAuth.Username, r.config.HttpAuth.Password)\n\t}\n\tif r.ctx != nil {\n\t\treturn req.WithContext(r.ctx), nil\n\t}\n\n\treturn req, nil\n}\n\n// newRequest is used to create a new request\nfunc (c *Client) newRequest(method, path string) *request {\n\tr := &request{\n\t\tconfig: &c.config,\n\t\tmethod: method,\n\t\turl: &url.URL{\n\t\t\tScheme: c.config.Scheme,\n\t\t\tHost:   c.config.Address,\n\t\t\tPath:   c.config.PathPrefix + path,\n\t\t},\n\t\tparams: make(map[string][]string),\n\t\theader: c.Headers(),\n\t}\n\n\tif c.config.Datacenter != \"\" {\n\t\tr.params.Set(\"dc\", c.config.Datacenter)\n\t}\n\tif c.config.Namespace != \"\" {\n\t\tr.params.Set(\"ns\", c.config.Namespace)\n\t}\n\tif c.config.Partition != \"\" {\n\t\tr.params.Set(\"partition\", c.config.Partition)\n\t}\n\tif c.config.WaitTime != 0 {\n\t\tr.params.Set(\"wait\", durToMsec(r.config.WaitTime))\n\t}\n\tif c.config.Token != \"\" {\n\t\tr.header.Set(\"X-Consul-Token\", r.config.Token)\n\t}\n\treturn r\n}\n\n// doRequest runs a request with our client\nfunc (c *Client) doRequest(r *request) (time.Duration, *http.Response, error) {\n\treq, err := r.toHTTP()\n\tif err != nil {\n\t\treturn 0, nil, err\n\t}\n\tstart := time.Now()\n\tresp, err := c.config.HttpClient.Do(req)\n\tdiff := time.Since(start)\n\treturn diff, resp, err\n}\n\n// Query is used to do a GET request against an endpoint\n// and deserialize the response into an interface using\n// standard Consul conventions.\nfunc (c *Client) query(endpoint string, out interface{}, q *QueryOptions) (*QueryMeta, error) {\n\tr := c.newRequest(\"GET\", endpoint)\n\tr.setQueryOptions(q)\n\trtt, resp, err := c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif err := decodeBody(resp, out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn qm, nil\n}\n\n// write is used to do a PUT request against an endpoint\n// and serialize/deserialized using the standard Consul conventions.\nfunc (c *Client) write(endpoint string, in, out interface{}, q *WriteOptions) (*WriteMeta, error) {\n\tr := c.newRequest(\"PUT\", endpoint)\n\tr.setWriteOptions(q)\n\tr.obj = in\n\trtt, resp, err := c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\tif out != nil {\n\t\tif err := decodeBody(resp, &out); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else if _, err := io.ReadAll(resp.Body); err != nil {\n\t\treturn nil, err\n\t}\n\treturn wm, nil\n}\n\n// parseQueryMeta is used to help parse query meta-data\n//\n// TODO(rb): bug? the error from this function is never handled\nfunc parseQueryMeta(resp *http.Response, q *QueryMeta) error {\n\theader := resp.Header\n\n\t// Parse the X-Consul-Index (if it's set - hash based blocking queries don't\n\t// set this)\n\tif indexStr := header.Get(\"X-Consul-Index\"); indexStr != \"\" {\n\t\tindex, err := strconv.ParseUint(indexStr, 10, 64)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Failed to parse X-Consul-Index: %v\", err)\n\t\t}\n\t\tq.LastIndex = index\n\t}\n\tq.LastContentHash = header.Get(\"X-Consul-ContentHash\")\n\n\t// Parse the X-Consul-LastContact\n\tlast, err := strconv.ParseUint(header.Get(\"X-Consul-LastContact\"), 10, 64)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Failed to parse X-Consul-LastContact: %v\", err)\n\t}\n\tq.LastContact = time.Duration(last) * time.Millisecond\n\n\t// Parse the X-Consul-KnownLeader\n\tswitch header.Get(\"X-Consul-KnownLeader\") {\n\tcase \"true\":\n\t\tq.KnownLeader = true\n\tdefault:\n\t\tq.KnownLeader = false\n\t}\n\n\t// Parse X-Consul-Translate-Addresses\n\tswitch header.Get(\"X-Consul-Translate-Addresses\") {\n\tcase \"true\":\n\t\tq.AddressTranslationEnabled = true\n\tdefault:\n\t\tq.AddressTranslationEnabled = false\n\t}\n\n\t// Parse X-Consul-Default-ACL-Policy\n\tswitch v := header.Get(\"X-Consul-Default-ACL-Policy\"); v {\n\tcase \"allow\", \"deny\":\n\t\tq.DefaultACLPolicy = v\n\t}\n\n\t// Parse the X-Consul-Results-Filtered-By-ACLs\n\tswitch header.Get(\"X-Consul-Results-Filtered-By-ACLs\") {\n\tcase \"true\":\n\t\tq.ResultsFilteredByACLs = true\n\tdefault:\n\t\tq.ResultsFilteredByACLs = false\n\t}\n\n\t// Parse Cache info\n\tif cacheStr := header.Get(\"X-Cache\"); cacheStr != \"\" {\n\t\tq.CacheHit = strings.EqualFold(cacheStr, \"HIT\")\n\t}\n\tif ageStr := header.Get(\"Age\"); ageStr != \"\" {\n\t\tage, err := strconv.ParseUint(ageStr, 10, 64)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Failed to parse Age Header: %v\", err)\n\t\t}\n\t\tq.CacheAge = time.Duration(age) * time.Second\n\t}\n\n\tswitch v := header.Get(\"X-Consul-Query-Backend\"); v {\n\tcase QueryBackendStreaming, QueryBackendBlockingQuery:\n\t\tq.QueryBackend = v\n\t}\n\treturn nil\n}\n\n// decodeBody is used to JSON decode a body\nfunc decodeBody(resp *http.Response, out interface{}) error {\n\tdec := json.NewDecoder(resp.Body)\n\treturn dec.Decode(out)\n}\n\n// encodeBody is used to encode a request body\nfunc encodeBody(obj interface{}) (io.Reader, error) {\n\tbuf := bytes.NewBuffer(nil)\n\tenc := json.NewEncoder(buf)\n\tif err := enc.Encode(obj); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf, nil\n}\n\n// requireOK is used to wrap doRequest and check for a 200\nfunc requireOK(resp *http.Response) error {\n\treturn requireHttpCodes(resp, 200)\n}\n\n// requireHttpCodes checks for the \"allowable\" http codes for a response\nfunc requireHttpCodes(resp *http.Response, httpCodes ...int) error {\n\t// if there is an http code that we require, return w no error\n\tfor _, httpCode := range httpCodes {\n\t\tif resp.StatusCode == httpCode {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\t// if we reached here, then none of the http codes in resp matched any that we expected\n\t// so err out\n\treturn generateUnexpectedResponseCodeError(resp)\n}\n\n// closeResponseBody reads resp.Body until EOF, and then closes it. The read\n// is necessary to ensure that the http.Client's underlying RoundTripper is able\n// to re-use the TCP connection. See godoc on net/http.Client.Do.\nfunc closeResponseBody(resp *http.Response) error {\n\t_, _ = io.Copy(io.Discard, resp.Body)\n\treturn resp.Body.Close()\n}\n\nfunc (req *request) filterQuery(filter string) {\n\tif filter == \"\" {\n\t\treturn\n\t}\n\n\treq.params.Set(\"filter\", filter)\n}\n\n// generateUnexpectedResponseCodeError consumes the rest of the body, closes\n// the body stream and generates an error indicating the status code was\n// unexpected.\nfunc generateUnexpectedResponseCodeError(resp *http.Response) error {\n\tvar buf bytes.Buffer\n\tio.Copy(&buf, resp.Body)\n\tcloseResponseBody(resp)\n\n\ttrimmed := strings.TrimSpace(string(buf.Bytes()))\n\treturn StatusError{Code: resp.StatusCode, Body: trimmed}\n}\n\nfunc requireNotFoundOrOK(resp *http.Response) (bool, *http.Response, error) {\n\tswitch resp.StatusCode {\n\tcase 200:\n\t\treturn true, resp, nil\n\tcase 404:\n\t\treturn false, resp, nil\n\tdefault:\n\t\treturn false, nil, generateUnexpectedResponseCodeError(resp)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/catalog.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"net\"\n\t\"strconv\"\n)\n\ntype Weights struct {\n\tPassing int\n\tWarning int\n}\n\ntype Node struct {\n\tID              string\n\tNode            string\n\tAddress         string\n\tDatacenter      string\n\tTaggedAddresses map[string]string\n\tMeta            map[string]string\n\tCreateIndex     uint64\n\tModifyIndex     uint64\n\tPartition       string    `json:\",omitempty\"`\n\tPeerName        string    `json:\",omitempty\"`\n\tLocality        *Locality `json:\",omitempty\"`\n}\n\ntype ServiceAddress struct {\n\tAddress string\n\tPort    int\n}\n\ntype CatalogService struct {\n\tID                       string\n\tNode                     string\n\tAddress                  string\n\tDatacenter               string\n\tTaggedAddresses          map[string]string\n\tNodeMeta                 map[string]string\n\tServiceID                string\n\tServiceName              string\n\tServiceAddress           string\n\tServiceTaggedAddresses   map[string]ServiceAddress\n\tServiceTags              []string\n\tServiceMeta              map[string]string\n\tServicePort              int\n\tServiceWeights           Weights\n\tServiceEnableTagOverride bool\n\tServiceProxy             *AgentServiceConnectProxyConfig\n\tServiceLocality          *Locality `json:\",omitempty\"`\n\tCreateIndex              uint64\n\tChecks                   HealthChecks\n\tModifyIndex              uint64\n\tNamespace                string `json:\",omitempty\"`\n\tPartition                string `json:\",omitempty\"`\n}\n\ntype CatalogNode struct {\n\tNode     *Node\n\tServices map[string]*AgentService\n}\n\ntype CatalogNodeServiceList struct {\n\tNode     *Node\n\tServices []*AgentService\n}\n\ntype CatalogRegistration struct {\n\tID              string\n\tNode            string\n\tAddress         string\n\tTaggedAddresses map[string]string\n\tNodeMeta        map[string]string\n\tDatacenter      string\n\tService         *AgentService\n\tCheck           *AgentCheck\n\tChecks          HealthChecks\n\tSkipNodeUpdate  bool\n\tPartition       string    `json:\",omitempty\"`\n\tLocality        *Locality `json:\",omitempty\"`\n}\n\ntype CatalogDeregistration struct {\n\tNode       string\n\tAddress    string `json:\",omitempty\"` // Obsolete.\n\tDatacenter string\n\tServiceID  string\n\tCheckID    string\n\tNamespace  string `json:\",omitempty\"`\n\tPartition  string `json:\",omitempty\"`\n}\n\ntype CompoundServiceName struct {\n\tName string\n\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\t// Partitions are a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n}\n\n// GatewayService associates a gateway with a linked service.\n// It also contains service-specific gateway configuration like ingress listener port and protocol.\ntype GatewayService struct {\n\tGateway      CompoundServiceName\n\tService      CompoundServiceName\n\tGatewayKind  ServiceKind\n\tPort         int      `json:\",omitempty\"`\n\tProtocol     string   `json:\",omitempty\"`\n\tHosts        []string `json:\",omitempty\"`\n\tCAFile       string   `json:\",omitempty\"`\n\tCertFile     string   `json:\",omitempty\"`\n\tKeyFile      string   `json:\",omitempty\"`\n\tSNI          string   `json:\",omitempty\"`\n\tFromWildcard bool     `json:\",omitempty\"`\n}\n\n// Catalog can be used to query the Catalog endpoints\ntype Catalog struct {\n\tc *Client\n}\n\n// Catalog returns a handle to the catalog endpoints\nfunc (c *Client) Catalog() *Catalog {\n\treturn &Catalog{c}\n}\n\nfunc (c *Catalog) Register(reg *CatalogRegistration, q *WriteOptions) (*WriteMeta, error) {\n\tr := c.c.newRequest(\"PUT\", \"/v1/catalog/register\")\n\tr.setWriteOptions(q)\n\tr.obj = reg\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\n\treturn wm, nil\n}\n\nfunc (c *Catalog) Deregister(dereg *CatalogDeregistration, q *WriteOptions) (*WriteMeta, error) {\n\tr := c.c.newRequest(\"PUT\", \"/v1/catalog/deregister\")\n\tr.setWriteOptions(q)\n\tr.obj = dereg\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\n\treturn wm, nil\n}\n\n// Datacenters is used to query for all the known datacenters\nfunc (c *Catalog) Datacenters() ([]string, error) {\n\tr := c.c.newRequest(\"GET\", \"/v1/catalog/datacenters\")\n\t_, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar out []string\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// Nodes is used to query all the known nodes\nfunc (c *Catalog) Nodes(q *QueryOptions) ([]*Node, *QueryMeta, error) {\n\tr := c.c.newRequest(\"GET\", \"/v1/catalog/nodes\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out []*Node\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// Services is used to query for all known services\nfunc (c *Catalog) Services(q *QueryOptions) (map[string][]string, *QueryMeta, error) {\n\tr := c.c.newRequest(\"GET\", \"/v1/catalog/services\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out map[string][]string\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// Service is used to query catalog entries for a given service\nfunc (c *Catalog) Service(service, tag string, q *QueryOptions) ([]*CatalogService, *QueryMeta, error) {\n\tvar tags []string\n\tif tag != \"\" {\n\t\ttags = []string{tag}\n\t}\n\treturn c.service(service, tags, q, false)\n}\n\n// Supports multiple tags for filtering\nfunc (c *Catalog) ServiceMultipleTags(service string, tags []string, q *QueryOptions) ([]*CatalogService, *QueryMeta, error) {\n\treturn c.service(service, tags, q, false)\n}\n\n// Connect is used to query catalog entries for a given Connect-enabled service\nfunc (c *Catalog) Connect(service, tag string, q *QueryOptions) ([]*CatalogService, *QueryMeta, error) {\n\tvar tags []string\n\tif tag != \"\" {\n\t\ttags = []string{tag}\n\t}\n\treturn c.service(service, tags, q, true)\n}\n\n// Supports multiple tags for filtering\nfunc (c *Catalog) ConnectMultipleTags(service string, tags []string, q *QueryOptions) ([]*CatalogService, *QueryMeta, error) {\n\treturn c.service(service, tags, q, true)\n}\n\nfunc (c *Catalog) service(service string, tags []string, q *QueryOptions, connect bool) ([]*CatalogService, *QueryMeta, error) {\n\tpath := \"/v1/catalog/service/\" + service\n\tif connect {\n\t\tpath = \"/v1/catalog/connect/\" + service\n\t}\n\tr := c.c.newRequest(\"GET\", path)\n\tr.setQueryOptions(q)\n\tif len(tags) > 0 {\n\t\tfor _, tag := range tags {\n\t\t\tr.params.Add(\"tag\", tag)\n\t\t}\n\t}\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out []*CatalogService\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// Node is used to query for service information about a single node\nfunc (c *Catalog) Node(node string, q *QueryOptions) (*CatalogNode, *QueryMeta, error) {\n\tr := c.c.newRequest(\"GET\", \"/v1/catalog/node/\"+node)\n\tr.setQueryOptions(q)\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out *CatalogNode\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// NodeServiceList is used to query for service information about a single node. It differs from\n// the Node function only in its return type which will contain a list of services as opposed to\n// a map of service ids to services. This different structure allows for using the wildcard specifier\n// '*' for the Namespace in the QueryOptions.\nfunc (c *Catalog) NodeServiceList(node string, q *QueryOptions) (*CatalogNodeServiceList, *QueryMeta, error) {\n\tr := c.c.newRequest(\"GET\", \"/v1/catalog/node-services/\"+node)\n\tr.setQueryOptions(q)\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out *CatalogNodeServiceList\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// GatewayServices is used to query the services associated with an ingress gateway or terminating gateway.\nfunc (c *Catalog) GatewayServices(gateway string, q *QueryOptions) ([]*GatewayService, *QueryMeta, error) {\n\tr := c.c.newRequest(\"GET\", \"/v1/catalog/gateway-services/\"+gateway)\n\tr.setQueryOptions(q)\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out []*GatewayService\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\nfunc ParseServiceAddr(addrPort string) (ServiceAddress, error) {\n\tport := 0\n\thost, portStr, err := net.SplitHostPort(addrPort)\n\tif err == nil {\n\t\tport, err = strconv.Atoi(portStr)\n\t}\n\treturn ServiceAddress{Address: host, Port: port}, err\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/config_entry.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nconst (\n\tServiceDefaults    string = \"service-defaults\"\n\tProxyDefaults      string = \"proxy-defaults\"\n\tServiceRouter      string = \"service-router\"\n\tServiceSplitter    string = \"service-splitter\"\n\tServiceResolver    string = \"service-resolver\"\n\tIngressGateway     string = \"ingress-gateway\"\n\tTerminatingGateway string = \"terminating-gateway\"\n\tServiceIntentions  string = \"service-intentions\"\n\tMeshConfig         string = \"mesh\"\n\tExportedServices   string = \"exported-services\"\n\tSamenessGroup      string = \"sameness-group\"\n\tRateLimitIPConfig  string = \"control-plane-request-limit\"\n\n\tProxyConfigGlobal string = \"global\"\n\tMeshConfigMesh    string = \"mesh\"\n\tAPIGateway        string = \"api-gateway\"\n\tTCPRoute          string = \"tcp-route\"\n\tInlineCertificate string = \"inline-certificate\"\n\tHTTPRoute         string = \"http-route\"\n\tJWTProvider       string = \"jwt-provider\"\n)\n\nconst (\n\tBuiltinAWSLambdaExtension         string = \"builtin/aws/lambda\"\n\tBuiltinExtAuthzExtension          string = \"builtin/ext-authz\"\n\tBuiltinLuaExtension               string = \"builtin/lua\"\n\tBuiltinOTELAccessLoggingExtension string = \"builtin/otel-access-logging\"\n\tBuiltinPropertyOverrideExtension  string = \"builtin/property-override\"\n\tBuiltinWasmExtension              string = \"builtin/wasm\"\n\t// BuiltinValidateExtension should not be exposed directly or accepted as a valid configured\n\t// extension type, as it is only used indirectly via troubleshooting tools. It is included here\n\t// for common reference alongside other builtin extensions.\n\tBuiltinValidateExtension string = \"builtin/proxy/validate\"\n)\n\ntype ConfigEntry interface {\n\tGetKind() string\n\tGetName() string\n\tGetPartition() string\n\tGetNamespace() string\n\tGetMeta() map[string]string\n\tGetCreateIndex() uint64\n\tGetModifyIndex() uint64\n}\n\ntype MeshGatewayMode string\n\nconst (\n\t// MeshGatewayModeDefault represents no specific mode and should\n\t// be used to indicate that a different layer of the configuration\n\t// chain should take precedence\n\tMeshGatewayModeDefault MeshGatewayMode = \"\"\n\n\t// MeshGatewayModeNone represents that the Upstream Connect connections\n\t// should be direct and not flow through a mesh gateway.\n\tMeshGatewayModeNone MeshGatewayMode = \"none\"\n\n\t// MeshGatewayModeLocal represents that the Upstream Connect connections\n\t// should be made to a mesh gateway in the local datacenter.\n\tMeshGatewayModeLocal MeshGatewayMode = \"local\"\n\n\t// MeshGatewayModeRemote represents that the Upstream Connect connections\n\t// should be made to a mesh gateway in a remote datacenter.\n\tMeshGatewayModeRemote MeshGatewayMode = \"remote\"\n)\n\n// MeshGatewayConfig controls how Mesh Gateways are used for upstream Connect\n// services\ntype MeshGatewayConfig struct {\n\t// Mode is the mode that should be used for the upstream connection.\n\tMode MeshGatewayMode `json:\",omitempty\"`\n}\n\ntype ProxyMode string\n\nconst (\n\t// ProxyModeDefault represents no specific mode and should\n\t// be used to indicate that a different layer of the configuration\n\t// chain should take precedence\n\tProxyModeDefault ProxyMode = \"\"\n\n\t// ProxyModeTransparent represents that inbound and outbound application\n\t// traffic is being captured and redirected through the proxy.\n\tProxyModeTransparent ProxyMode = \"transparent\"\n\n\t// ProxyModeDirect represents that the proxy's listeners must be dialed directly\n\t// by the local application and other proxies.\n\tProxyModeDirect ProxyMode = \"direct\"\n)\n\ntype TransparentProxyConfig struct {\n\t// The port of the listener where outbound application traffic is being redirected to.\n\tOutboundListenerPort int `json:\",omitempty\" alias:\"outbound_listener_port\"`\n\n\t// DialedDirectly indicates whether transparent proxies can dial this proxy instance directly.\n\t// The discovery chain is not considered when dialing a service instance directly.\n\t// This setting is useful when addressing stateful services, such as a database cluster with a leader node.\n\tDialedDirectly bool `json:\",omitempty\" alias:\"dialed_directly\"`\n}\n\ntype MutualTLSMode string\n\nconst (\n\t// MutualTLSModeDefault represents no specific mode and should\n\t// be used to indicate that a different layer of the configuration\n\t// chain should take precedence.\n\tMutualTLSModeDefault MutualTLSMode = \"\"\n\n\t// MutualTLSModeStrict requires mTLS for incoming traffic.\n\tMutualTLSModeStrict MutualTLSMode = \"strict\"\n\n\t// MutualTLSModePermissive allows incoming non-mTLS traffic.\n\tMutualTLSModePermissive MutualTLSMode = \"permissive\"\n)\n\n// ExposeConfig describes HTTP paths to expose through Envoy outside of Connect.\n// Users can expose individual paths and/or all HTTP/GRPC paths for checks.\ntype ExposeConfig struct {\n\t// Checks defines whether paths associated with Consul checks will be exposed.\n\t// This flag triggers exposing all HTTP and GRPC check paths registered for the service.\n\tChecks bool `json:\",omitempty\"`\n\n\t// Paths is the list of paths exposed through the proxy.\n\tPaths []ExposePath `json:\",omitempty\"`\n}\n\n// EnvoyExtension has configuration for an extension that patches Envoy resources.\ntype EnvoyExtension struct {\n\tName          string\n\tRequired      bool\n\tArguments     map[string]interface{} `bexpr:\"-\"`\n\tConsulVersion string\n\tEnvoyVersion  string\n}\n\ntype ExposePath struct {\n\t// ListenerPort defines the port of the proxy's listener for exposed paths.\n\tListenerPort int `json:\",omitempty\" alias:\"listener_port\"`\n\n\t// Path is the path to expose through the proxy, ie. \"/metrics.\"\n\tPath string `json:\",omitempty\"`\n\n\t// LocalPathPort is the port that the service is listening on for the given path.\n\tLocalPathPort int `json:\",omitempty\" alias:\"local_path_port\"`\n\n\t// Protocol describes the upstream's service protocol.\n\t// Valid values are \"http\" and \"http2\", defaults to \"http\"\n\tProtocol string `json:\",omitempty\"`\n\n\t// ParsedFromCheck is set if this path was parsed from a registered check\n\tParsedFromCheck bool\n}\n\ntype LogSinkType string\n\nconst (\n\tDefaultLogSinkType LogSinkType = \"\"\n\tFileLogSinkType    LogSinkType = \"file\"\n\tStdErrLogSinkType  LogSinkType = \"stderr\"\n\tStdOutLogSinkType  LogSinkType = \"stdout\"\n)\n\n// AccessLogsConfig contains the associated default settings for all Envoy instances within the datacenter or partition\ntype AccessLogsConfig struct {\n\t// Enabled turns off all access logging\n\tEnabled bool `json:\",omitempty\" alias:\"enabled\"`\n\n\t// DisableListenerLogs turns off just listener logs for connections rejected by Envoy because they don't\n\t// have a matching listener filter.\n\tDisableListenerLogs bool `json:\",omitempty\" alias:\"disable_listener_logs\"`\n\n\t// Type selects the output for logs: \"file\", \"stderr\". \"stdout\"\n\tType LogSinkType `json:\",omitempty\" alias:\"type\"`\n\n\t// Path is the output file to write logs\n\tPath string `json:\",omitempty\" alias:\"path\"`\n\n\t// The presence of one format string or the other implies the access log string encoding.\n\t// Defining Both is invalid.\n\tJSONFormat string `json:\",omitempty\" alias:\"json_format\"`\n\tTextFormat string `json:\",omitempty\" alias:\"text_format\"`\n}\n\ntype UpstreamConfiguration struct {\n\t// Overrides is a slice of per-service configuration. The name field is\n\t// required.\n\tOverrides []*UpstreamConfig `json:\",omitempty\"`\n\n\t// Defaults contains default configuration for all upstreams of a given\n\t// service. The name field must be empty.\n\tDefaults *UpstreamConfig `json:\",omitempty\"`\n}\n\ntype UpstreamConfig struct {\n\t// Name is only accepted within service-defaults.upstreamConfig.overrides .\n\tName string `json:\",omitempty\"`\n\n\t// Partition is only accepted within service-defaults.upstreamConfig.overrides .\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace is only accepted within service-defaults.upstreamConfig.overrides .\n\tNamespace string `json:\",omitempty\"`\n\n\t// Peer is only accepted within service-defaults.upstreamConfig.overrides .\n\tPeer string `json:\",omitempty\"`\n\n\t// EnvoyListenerJSON is a complete override (\"escape hatch\") for the upstream's\n\t// listener.\n\t//\n\t// Note: This escape hatch is NOT compatible with the discovery chain and\n\t// will be ignored if a discovery chain is active.\n\tEnvoyListenerJSON string `json:\",omitempty\" alias:\"envoy_listener_json\"`\n\n\t// EnvoyClusterJSON is a complete override (\"escape hatch\") for the upstream's\n\t// cluster. The Connect client TLS certificate and context will be injected\n\t// overriding any TLS settings present.\n\t//\n\t// Note: This escape hatch is NOT compatible with the discovery chain and\n\t// will be ignored if a discovery chain is active.\n\tEnvoyClusterJSON string `json:\",omitempty\" alias:\"envoy_cluster_json\"`\n\n\t// Protocol describes the upstream's service protocol. Valid values are \"tcp\",\n\t// \"http\" and \"grpc\". Anything else is treated as tcp. The enables protocol\n\t// aware features like per-request metrics and connection pooling, tracing,\n\t// routing etc.\n\tProtocol string `json:\",omitempty\"`\n\n\t// ConnectTimeoutMs is the number of milliseconds to timeout making a new\n\t// connection to this upstream. Defaults to 5000 (5 seconds) if not set.\n\tConnectTimeoutMs int `json:\",omitempty\" alias:\"connect_timeout_ms\"`\n\n\t// Limits are the set of limits that are applied to the proxy for a specific upstream of a\n\t// service instance.\n\tLimits *UpstreamLimits `json:\",omitempty\"`\n\n\t// PassiveHealthCheck configuration determines how upstream proxy instances will\n\t// be monitored for removal from the load balancing pool.\n\tPassiveHealthCheck *PassiveHealthCheck `json:\",omitempty\" alias:\"passive_health_check\"`\n\n\t// MeshGatewayConfig controls how Mesh Gateways are configured and used\n\tMeshGateway MeshGatewayConfig `json:\",omitempty\" alias:\"mesh_gateway\" `\n\n\t// BalanceOutboundConnections indicates that the proxy should attempt to evenly distribute\n\t// outbound connections across worker threads. Only used by envoy proxies.\n\tBalanceOutboundConnections string `json:\",omitempty\" alias:\"balance_outbound_connections\"`\n}\n\n// DestinationConfig represents a virtual service, i.e. one that is external to Consul\ntype DestinationConfig struct {\n\t// Addresses of the endpoint; hostname or IP\n\tAddresses []string `json:\",omitempty\"`\n\n\t// Port allowed within this endpoint\n\tPort int `json:\",omitempty\"`\n}\n\ntype PassiveHealthCheck struct {\n\t// Interval between health check analysis sweeps. Each sweep may remove\n\t// hosts or return hosts to the pool.\n\tInterval time.Duration `json:\",omitempty\"`\n\n\t// MaxFailures is the count of consecutive failures that results in a host\n\t// being removed from the pool.\n\tMaxFailures uint32 `alias:\"max_failures\"`\n\n\t// EnforcingConsecutive5xx is the % chance that a host will be actually ejected\n\t// when an outlier status is detected through consecutive 5xx.\n\t// This setting can be used to disable ejection or to ramp it up slowly.\n\tEnforcingConsecutive5xx *uint32 `json:\",omitempty\" alias:\"enforcing_consecutive_5xx\"`\n\n\t// The maximum % of an upstream cluster that can be ejected due to outlier detection.\n\t// Defaults to 10% but will eject at least one host regardless of the value.\n\tMaxEjectionPercent *uint32 `json:\",omitempty\" alias:\"max_ejection_percent\"`\n\n\t// The base time that a host is ejected for. The real time is equal to the base time\n\t// multiplied by the number of times the host has been ejected and is capped by\n\t// max_ejection_time (Default 300s). Defaults to 30000ms or 30s.\n\tBaseEjectionTime *time.Duration `json:\",omitempty\" alias:\"base_ejection_time\"`\n}\n\n// UpstreamLimits describes the limits that are associated with a specific\n// upstream of a service instance.\ntype UpstreamLimits struct {\n\t// MaxConnections is the maximum number of connections the local proxy can\n\t// make to the upstream service.\n\tMaxConnections *int `alias:\"max_connections\"`\n\n\t// MaxPendingRequests is the maximum number of requests that will be queued\n\t// waiting for an available connection. This is mostly applicable to HTTP/1.1\n\t// clusters since all HTTP/2 requests are streamed over a single\n\t// connection.\n\tMaxPendingRequests *int `alias:\"max_pending_requests\"`\n\n\t// MaxConcurrentRequests is the maximum number of in-flight requests that will be allowed\n\t// to the upstream cluster at a point in time. This is mostly applicable to HTTP/2\n\t// clusters since all HTTP/1.1 requests are limited by MaxConnections.\n\tMaxConcurrentRequests *int `alias:\"max_concurrent_requests\"`\n}\n\n// RateLimits is rate limiting configuration that is applied to\n// inbound traffic for a service.\n// Rate limiting is a Consul enterprise feature.\ntype RateLimits struct {\n\tInstanceLevel InstanceLevelRateLimits `alias:\"instance_level\"`\n}\n\n// InstanceLevelRateLimits represents rate limit configuration\n// that are applied per service instance.\ntype InstanceLevelRateLimits struct {\n\t// RequestsPerSecond is the average number of requests per second that can be\n\t// made without being throttled. This field is required if RequestsMaxBurst\n\t// is set. The allowed number of requests may exceed RequestsPerSecond up to\n\t// the value specified in RequestsMaxBurst.\n\t//\n\t// Internally, this is the refill rate of the token bucket used for rate limiting.\n\tRequestsPerSecond int `alias:\"requests_per_second\"`\n\n\t// RequestsMaxBurst is the maximum number of requests that can be sent\n\t// in a burst. Should be equal to or greater than RequestsPerSecond.\n\t// If unset, defaults to RequestsPerSecond.\n\t//\n\t// Internally, this is the maximum size of the token bucket used for rate limiting.\n\tRequestsMaxBurst int `alias:\"requests_max_burst\"`\n\n\t// Routes is a list of rate limits applied to specific routes.\n\t// Overrides any top-level configuration.\n\tRoutes []InstanceLevelRouteRateLimits\n}\n\n// InstanceLevelRouteRateLimits represents rate limit configuration\n// applied to a route matching one of PathExact/PathPrefix/PathRegex.\ntype InstanceLevelRouteRateLimits struct {\n\tPathExact  string `alias:\"path_exact\"`\n\tPathPrefix string `alias:\"path_prefix\"`\n\tPathRegex  string `alias:\"path_regex\"`\n\n\tRequestsPerSecond int `alias:\"requests_per_second\"`\n\tRequestsMaxBurst  int `alias:\"requests_max_burst\"`\n}\n\ntype ServiceConfigEntry struct {\n\tKind                      string\n\tName                      string\n\tPartition                 string                  `json:\",omitempty\"`\n\tNamespace                 string                  `json:\",omitempty\"`\n\tProtocol                  string                  `json:\",omitempty\"`\n\tMode                      ProxyMode               `json:\",omitempty\"`\n\tTransparentProxy          *TransparentProxyConfig `json:\",omitempty\" alias:\"transparent_proxy\"`\n\tMutualTLSMode             MutualTLSMode           `json:\",omitempty\" alias:\"mutual_tls_mode\"`\n\tMeshGateway               MeshGatewayConfig       `json:\",omitempty\" alias:\"mesh_gateway\"`\n\tExpose                    ExposeConfig            `json:\",omitempty\"`\n\tExternalSNI               string                  `json:\",omitempty\" alias:\"external_sni\"`\n\tUpstreamConfig            *UpstreamConfiguration  `json:\",omitempty\" alias:\"upstream_config\"`\n\tDestination               *DestinationConfig      `json:\",omitempty\"`\n\tMaxInboundConnections     int                     `json:\",omitempty\" alias:\"max_inbound_connections\"`\n\tLocalConnectTimeoutMs     int                     `json:\",omitempty\" alias:\"local_connect_timeout_ms\"`\n\tLocalRequestTimeoutMs     int                     `json:\",omitempty\" alias:\"local_request_timeout_ms\"`\n\tBalanceInboundConnections string                  `json:\",omitempty\" alias:\"balance_inbound_connections\"`\n\tRateLimits                *RateLimits             `json:\",omitempty\" alias:\"rate_limits\"`\n\tEnvoyExtensions           []EnvoyExtension        `json:\",omitempty\" alias:\"envoy_extensions\"`\n\tMeta                      map[string]string       `json:\",omitempty\"`\n\tCreateIndex               uint64\n\tModifyIndex               uint64\n}\n\nfunc (s *ServiceConfigEntry) GetKind() string            { return s.Kind }\nfunc (s *ServiceConfigEntry) GetName() string            { return s.Name }\nfunc (s *ServiceConfigEntry) GetPartition() string       { return s.Partition }\nfunc (s *ServiceConfigEntry) GetNamespace() string       { return s.Namespace }\nfunc (s *ServiceConfigEntry) GetMeta() map[string]string { return s.Meta }\nfunc (s *ServiceConfigEntry) GetCreateIndex() uint64     { return s.CreateIndex }\nfunc (s *ServiceConfigEntry) GetModifyIndex() uint64     { return s.ModifyIndex }\n\ntype ProxyConfigEntry struct {\n\tKind                 string\n\tName                 string\n\tPartition            string                               `json:\",omitempty\"`\n\tNamespace            string                               `json:\",omitempty\"`\n\tMode                 ProxyMode                            `json:\",omitempty\"`\n\tTransparentProxy     *TransparentProxyConfig              `json:\",omitempty\" alias:\"transparent_proxy\"`\n\tMutualTLSMode        MutualTLSMode                        `json:\",omitempty\" alias:\"mutual_tls_mode\"`\n\tConfig               map[string]interface{}               `json:\",omitempty\"`\n\tMeshGateway          MeshGatewayConfig                    `json:\",omitempty\" alias:\"mesh_gateway\"`\n\tExpose               ExposeConfig                         `json:\",omitempty\"`\n\tAccessLogs           *AccessLogsConfig                    `json:\",omitempty\" alias:\"access_logs\"`\n\tEnvoyExtensions      []EnvoyExtension                     `json:\",omitempty\" alias:\"envoy_extensions\"`\n\tFailoverPolicy       *ServiceResolverFailoverPolicy       `json:\",omitempty\" alias:\"failover_policy\"`\n\tPrioritizeByLocality *ServiceResolverPrioritizeByLocality `json:\",omitempty\" alias:\"prioritize_by_locality\"`\n\n\tMeta        map[string]string `json:\",omitempty\"`\n\tCreateIndex uint64\n\tModifyIndex uint64\n}\n\nfunc (p *ProxyConfigEntry) GetKind() string            { return p.Kind }\nfunc (p *ProxyConfigEntry) GetName() string            { return ProxyConfigGlobal }\nfunc (p *ProxyConfigEntry) GetPartition() string       { return p.Partition }\nfunc (p *ProxyConfigEntry) GetNamespace() string       { return p.Namespace }\nfunc (p *ProxyConfigEntry) GetMeta() map[string]string { return p.Meta }\nfunc (p *ProxyConfigEntry) GetCreateIndex() uint64     { return p.CreateIndex }\nfunc (p *ProxyConfigEntry) GetModifyIndex() uint64     { return p.ModifyIndex }\n\nfunc makeConfigEntry(kind, name string) (ConfigEntry, error) {\n\tswitch kind {\n\tcase ServiceDefaults:\n\t\treturn &ServiceConfigEntry{Kind: kind, Name: name}, nil\n\tcase ProxyDefaults:\n\t\treturn &ProxyConfigEntry{Kind: kind, Name: name}, nil\n\tcase ServiceRouter:\n\t\treturn &ServiceRouterConfigEntry{Kind: kind, Name: name}, nil\n\tcase ServiceSplitter:\n\t\treturn &ServiceSplitterConfigEntry{Kind: kind, Name: name}, nil\n\tcase ServiceResolver:\n\t\treturn &ServiceResolverConfigEntry{Kind: kind, Name: name}, nil\n\tcase IngressGateway:\n\t\treturn &IngressGatewayConfigEntry{Kind: kind, Name: name}, nil\n\tcase TerminatingGateway:\n\t\treturn &TerminatingGatewayConfigEntry{Kind: kind, Name: name}, nil\n\tcase ServiceIntentions:\n\t\treturn &ServiceIntentionsConfigEntry{Kind: kind, Name: name}, nil\n\tcase MeshConfig:\n\t\treturn &MeshConfigEntry{}, nil\n\tcase ExportedServices:\n\t\treturn &ExportedServicesConfigEntry{Name: name}, nil\n\tcase SamenessGroup:\n\t\treturn &SamenessGroupConfigEntry{Kind: kind, Name: name}, nil\n\tcase APIGateway:\n\t\treturn &APIGatewayConfigEntry{Kind: kind, Name: name}, nil\n\tcase TCPRoute:\n\t\treturn &TCPRouteConfigEntry{Kind: kind, Name: name}, nil\n\tcase InlineCertificate:\n\t\treturn &InlineCertificateConfigEntry{Kind: kind, Name: name}, nil\n\tcase HTTPRoute:\n\t\treturn &HTTPRouteConfigEntry{Kind: kind, Name: name}, nil\n\tcase RateLimitIPConfig:\n\t\treturn &RateLimitIPConfigEntry{Kind: kind, Name: name}, nil\n\tcase JWTProvider:\n\t\treturn &JWTProviderConfigEntry{Kind: kind, Name: name}, nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"invalid config entry kind: %s\", kind)\n\t}\n}\n\nfunc MakeConfigEntry(kind, name string) (ConfigEntry, error) {\n\treturn makeConfigEntry(kind, name)\n}\n\n// DecodeConfigEntry will decode the result of using json.Unmarshal of a config\n// entry into a map[string]interface{}.\n//\n// Important caveats:\n//\n// - This will NOT work if the map[string]interface{} was produced using HCL\n// decoding as that requires more extensive parsing to work around the issues\n// with map[string][]interface{} that arise.\n//\n// - This will only decode fields using their camel case json field\n// representations.\nfunc DecodeConfigEntry(raw map[string]interface{}) (ConfigEntry, error) {\n\tvar entry ConfigEntry\n\n\tkindVal, ok := raw[\"Kind\"]\n\tif !ok {\n\t\tkindVal, ok = raw[\"kind\"]\n\t}\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"Payload does not contain a kind/Kind key at the top level\")\n\t}\n\n\tif kindStr, ok := kindVal.(string); ok {\n\t\tnewEntry, err := makeConfigEntry(kindStr, \"\")\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tentry = newEntry\n\t} else {\n\t\treturn nil, fmt.Errorf(\"Kind value in payload is not a string\")\n\t}\n\n\tdecodeConf := &mapstructure.DecoderConfig{\n\t\tDecodeHook: mapstructure.ComposeDecodeHookFunc(\n\t\t\tmapstructure.StringToTimeDurationHookFunc(),\n\t\t\tmapstructure.StringToTimeHookFunc(time.RFC3339),\n\t\t),\n\t\tResult:           &entry,\n\t\tWeaklyTypedInput: true,\n\t}\n\n\tdecoder, err := mapstructure.NewDecoder(decodeConf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn entry, decoder.Decode(raw)\n}\n\nfunc DecodeConfigEntryFromJSON(data []byte) (ConfigEntry, error) {\n\tvar raw map[string]interface{}\n\tif err := json.Unmarshal(data, &raw); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn DecodeConfigEntry(raw)\n}\n\nfunc decodeConfigEntrySlice(raw []map[string]interface{}) ([]ConfigEntry, error) {\n\tvar entries []ConfigEntry\n\tfor _, rawEntry := range raw {\n\t\tentry, err := DecodeConfigEntry(rawEntry)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tentries = append(entries, entry)\n\t}\n\treturn entries, nil\n}\n\n// ConfigEntries can be used to query the Config endpoints\ntype ConfigEntries struct {\n\tc *Client\n}\n\n// Config returns a handle to the Config endpoints\nfunc (c *Client) ConfigEntries() *ConfigEntries {\n\treturn &ConfigEntries{c}\n}\n\nfunc (conf *ConfigEntries) Get(kind string, name string, q *QueryOptions) (ConfigEntry, *QueryMeta, error) {\n\tif kind == \"\" || name == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Both kind and name parameters must not be empty\")\n\t}\n\n\tentry, err := makeConfigEntry(kind, name)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tr := conf.c.newRequest(\"GET\", fmt.Sprintf(\"/v1/config/%s/%s\", kind, name))\n\tr.setQueryOptions(q)\n\trtt, resp, err := conf.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif err := decodeBody(resp, entry); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn entry, qm, nil\n}\n\nfunc (conf *ConfigEntries) List(kind string, q *QueryOptions) ([]ConfigEntry, *QueryMeta, error) {\n\tif kind == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"The kind parameter must not be empty\")\n\t}\n\n\tr := conf.c.newRequest(\"GET\", fmt.Sprintf(\"/v1/config/%s\", kind))\n\tr.setQueryOptions(q)\n\trtt, resp, err := conf.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar raw []map[string]interface{}\n\tif err := decodeBody(resp, &raw); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tentries, err := decodeConfigEntrySlice(raw)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn entries, qm, nil\n}\n\nfunc (conf *ConfigEntries) Set(entry ConfigEntry, w *WriteOptions) (bool, *WriteMeta, error) {\n\treturn conf.set(entry, nil, w)\n}\n\nfunc (conf *ConfigEntries) CAS(entry ConfigEntry, index uint64, w *WriteOptions) (bool, *WriteMeta, error) {\n\treturn conf.set(entry, map[string]string{\"cas\": strconv.FormatUint(index, 10)}, w)\n}\n\nfunc (conf *ConfigEntries) set(entry ConfigEntry, params map[string]string, w *WriteOptions) (bool, *WriteMeta, error) {\n\tr := conf.c.newRequest(\"PUT\", \"/v1/config\")\n\tr.setWriteOptions(w)\n\tfor param, value := range params {\n\t\tr.params.Set(param, value)\n\t}\n\tr.obj = entry\n\trtt, resp, err := conf.c.doRequest(r)\n\tif err != nil {\n\t\treturn false, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn false, nil, err\n\t}\n\n\tvar buf bytes.Buffer\n\tif _, err := io.Copy(&buf, resp.Body); err != nil {\n\t\treturn false, nil, fmt.Errorf(\"Failed to read response: %v\", err)\n\t}\n\tres := strings.Contains(buf.String(), \"true\")\n\n\twm := &WriteMeta{RequestTime: rtt}\n\treturn res, wm, nil\n}\n\nfunc (conf *ConfigEntries) Delete(kind string, name string, w *WriteOptions) (*WriteMeta, error) {\n\t_, wm, err := conf.delete(kind, name, nil, w)\n\treturn wm, err\n}\n\n// DeleteCAS performs a Check-And-Set deletion of the given config entry, and\n// returns true if it was successful. If the provided index no longer matches\n// the entry's ModifyIndex (i.e. it was modified by another process) then the\n// operation will fail and return false.\nfunc (conf *ConfigEntries) DeleteCAS(kind, name string, index uint64, w *WriteOptions) (bool, *WriteMeta, error) {\n\treturn conf.delete(kind, name, map[string]string{\"cas\": strconv.FormatUint(index, 10)}, w)\n}\n\nfunc (conf *ConfigEntries) delete(kind, name string, params map[string]string, w *WriteOptions) (bool, *WriteMeta, error) {\n\tif kind == \"\" || name == \"\" {\n\t\treturn false, nil, fmt.Errorf(\"Both kind and name parameters must not be empty\")\n\t}\n\n\tr := conf.c.newRequest(\"DELETE\", fmt.Sprintf(\"/v1/config/%s/%s\", kind, name))\n\tr.setWriteOptions(w)\n\tfor param, value := range params {\n\t\tr.params.Set(param, value)\n\t}\n\n\trtt, resp, err := conf.c.doRequest(r)\n\tif err != nil {\n\t\treturn false, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\n\tif err := requireOK(resp); err != nil {\n\t\treturn false, nil, err\n\t}\n\n\tvar buf bytes.Buffer\n\tif _, err := io.Copy(&buf, resp.Body); err != nil {\n\t\treturn false, nil, fmt.Errorf(\"Failed to read response: %v\", err)\n\t}\n\n\tres := strings.Contains(buf.String(), \"true\")\n\twm := &WriteMeta{RequestTime: rtt}\n\treturn res, wm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/config_entry_discoverychain.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"encoding/json\"\n\t\"time\"\n\n\t\"github.com/hashicorp/go-multierror\"\n)\n\ntype ServiceRouterConfigEntry struct {\n\tKind      string\n\tName      string\n\tPartition string `json:\",omitempty\"`\n\tNamespace string `json:\",omitempty\"`\n\n\tRoutes []ServiceRoute `json:\",omitempty\"`\n\n\tMeta        map[string]string `json:\",omitempty\"`\n\tCreateIndex uint64\n\tModifyIndex uint64\n}\n\nfunc (e *ServiceRouterConfigEntry) GetKind() string            { return e.Kind }\nfunc (e *ServiceRouterConfigEntry) GetName() string            { return e.Name }\nfunc (e *ServiceRouterConfigEntry) GetPartition() string       { return e.Partition }\nfunc (e *ServiceRouterConfigEntry) GetNamespace() string       { return e.Namespace }\nfunc (e *ServiceRouterConfigEntry) GetMeta() map[string]string { return e.Meta }\nfunc (e *ServiceRouterConfigEntry) GetCreateIndex() uint64     { return e.CreateIndex }\nfunc (e *ServiceRouterConfigEntry) GetModifyIndex() uint64     { return e.ModifyIndex }\n\ntype ServiceRoute struct {\n\tMatch       *ServiceRouteMatch       `json:\",omitempty\"`\n\tDestination *ServiceRouteDestination `json:\",omitempty\"`\n}\n\ntype ServiceRouteMatch struct {\n\tHTTP *ServiceRouteHTTPMatch `json:\",omitempty\"`\n}\n\ntype ServiceRouteHTTPMatch struct {\n\tPathExact  string `json:\",omitempty\" alias:\"path_exact\"`\n\tPathPrefix string `json:\",omitempty\" alias:\"path_prefix\"`\n\tPathRegex  string `json:\",omitempty\" alias:\"path_regex\"`\n\n\tHeader     []ServiceRouteHTTPMatchHeader     `json:\",omitempty\"`\n\tQueryParam []ServiceRouteHTTPMatchQueryParam `json:\",omitempty\" alias:\"query_param\"`\n\tMethods    []string                          `json:\",omitempty\"`\n}\n\ntype ServiceRouteHTTPMatchHeader struct {\n\tName    string\n\tPresent bool   `json:\",omitempty\"`\n\tExact   string `json:\",omitempty\"`\n\tPrefix  string `json:\",omitempty\"`\n\tSuffix  string `json:\",omitempty\"`\n\tRegex   string `json:\",omitempty\"`\n\tInvert  bool   `json:\",omitempty\"`\n}\n\ntype ServiceRouteHTTPMatchQueryParam struct {\n\tName    string\n\tPresent bool   `json:\",omitempty\"`\n\tExact   string `json:\",omitempty\"`\n\tRegex   string `json:\",omitempty\"`\n}\n\ntype ServiceRouteDestination struct {\n\tService               string               `json:\",omitempty\"`\n\tServiceSubset         string               `json:\",omitempty\" alias:\"service_subset\"`\n\tNamespace             string               `json:\",omitempty\"`\n\tPartition             string               `json:\",omitempty\"`\n\tPrefixRewrite         string               `json:\",omitempty\" alias:\"prefix_rewrite\"`\n\tRequestTimeout        time.Duration        `json:\",omitempty\" alias:\"request_timeout\"`\n\tIdleTimeout           time.Duration        `json:\",omitempty\" alias:\"idle_timeout\"`\n\tNumRetries            uint32               `json:\",omitempty\" alias:\"num_retries\"`\n\tRetryOnConnectFailure bool                 `json:\",omitempty\" alias:\"retry_on_connect_failure\"`\n\tRetryOnStatusCodes    []uint32             `json:\",omitempty\" alias:\"retry_on_status_codes\"`\n\tRetryOn               []string             `json:\",omitempty\" alias:\"retry_on\"`\n\tRequestHeaders        *HTTPHeaderModifiers `json:\",omitempty\" alias:\"request_headers\"`\n\tResponseHeaders       *HTTPHeaderModifiers `json:\",omitempty\" alias:\"response_headers\"`\n}\n\nfunc (e *ServiceRouteDestination) MarshalJSON() ([]byte, error) {\n\ttype Alias ServiceRouteDestination\n\texported := &struct {\n\t\tRequestTimeout string `json:\",omitempty\"`\n\t\tIdleTimeout    string `json:\",omitempty\"`\n\t\t*Alias\n\t}{\n\t\tRequestTimeout: e.RequestTimeout.String(),\n\t\tIdleTimeout:    e.IdleTimeout.String(),\n\t\tAlias:          (*Alias)(e),\n\t}\n\tif e.RequestTimeout == 0 {\n\t\texported.RequestTimeout = \"\"\n\t}\n\tif e.IdleTimeout == 0 {\n\t\texported.IdleTimeout = \"\"\n\t}\n\n\treturn json.Marshal(exported)\n}\n\nfunc (e *ServiceRouteDestination) UnmarshalJSON(data []byte) error {\n\ttype Alias ServiceRouteDestination\n\taux := &struct {\n\t\tRequestTimeout string\n\t\tIdleTimeout    string\n\t\t*Alias\n\t}{\n\t\tAlias: (*Alias)(e),\n\t}\n\tif err := json.Unmarshal(data, &aux); err != nil {\n\t\treturn err\n\t}\n\tvar err error\n\tif aux.RequestTimeout != \"\" {\n\t\tif e.RequestTimeout, err = time.ParseDuration(aux.RequestTimeout); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif aux.IdleTimeout != \"\" {\n\t\tif e.IdleTimeout, err = time.ParseDuration(aux.IdleTimeout); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\ntype ServiceSplitterConfigEntry struct {\n\tKind      string\n\tName      string\n\tPartition string `json:\",omitempty\"`\n\tNamespace string `json:\",omitempty\"`\n\n\tSplits []ServiceSplit `json:\",omitempty\"`\n\n\tMeta        map[string]string `json:\",omitempty\"`\n\tCreateIndex uint64\n\tModifyIndex uint64\n}\n\nfunc (e *ServiceSplitterConfigEntry) GetKind() string            { return e.Kind }\nfunc (e *ServiceSplitterConfigEntry) GetName() string            { return e.Name }\nfunc (e *ServiceSplitterConfigEntry) GetPartition() string       { return e.Partition }\nfunc (e *ServiceSplitterConfigEntry) GetNamespace() string       { return e.Namespace }\nfunc (e *ServiceSplitterConfigEntry) GetMeta() map[string]string { return e.Meta }\nfunc (e *ServiceSplitterConfigEntry) GetCreateIndex() uint64     { return e.CreateIndex }\nfunc (e *ServiceSplitterConfigEntry) GetModifyIndex() uint64     { return e.ModifyIndex }\n\ntype ServiceSplit struct {\n\tWeight          float32\n\tService         string               `json:\",omitempty\"`\n\tServiceSubset   string               `json:\",omitempty\" alias:\"service_subset\"`\n\tNamespace       string               `json:\",omitempty\"`\n\tPartition       string               `json:\",omitempty\"`\n\tRequestHeaders  *HTTPHeaderModifiers `json:\",omitempty\" alias:\"request_headers\"`\n\tResponseHeaders *HTTPHeaderModifiers `json:\",omitempty\" alias:\"response_headers\"`\n}\n\ntype ServiceResolverConfigEntry struct {\n\tKind      string\n\tName      string\n\tPartition string `json:\",omitempty\"`\n\tNamespace string `json:\",omitempty\"`\n\n\tDefaultSubset  string                             `json:\",omitempty\" alias:\"default_subset\"`\n\tSubsets        map[string]ServiceResolverSubset   `json:\",omitempty\"`\n\tRedirect       *ServiceResolverRedirect           `json:\",omitempty\"`\n\tFailover       map[string]ServiceResolverFailover `json:\",omitempty\"`\n\tConnectTimeout time.Duration                      `json:\",omitempty\" alias:\"connect_timeout\"`\n\tRequestTimeout time.Duration                      `json:\",omitempty\" alias:\"request_timeout\"`\n\n\t// PrioritizeByLocality controls whether the locality of services within the\n\t// local partition will be used to prioritize connectivity.\n\tPrioritizeByLocality *ServiceResolverPrioritizeByLocality `json:\",omitempty\" alias:\"prioritize_by_locality\"`\n\n\t// LoadBalancer determines the load balancing policy and configuration for services\n\t// issuing requests to this upstream service.\n\tLoadBalancer *LoadBalancer `json:\",omitempty\" alias:\"load_balancer\"`\n\n\tMeta        map[string]string `json:\",omitempty\"`\n\tCreateIndex uint64\n\tModifyIndex uint64\n}\n\nfunc (e *ServiceResolverConfigEntry) MarshalJSON() ([]byte, error) {\n\ttype Alias ServiceResolverConfigEntry\n\texported := &struct {\n\t\tConnectTimeout string `json:\",omitempty\"`\n\t\tRequestTimeout string `json:\",omitempty\"`\n\t\t*Alias\n\t}{\n\t\tConnectTimeout: e.ConnectTimeout.String(),\n\t\tRequestTimeout: e.RequestTimeout.String(),\n\t\tAlias:          (*Alias)(e),\n\t}\n\tif e.ConnectTimeout == 0 {\n\t\texported.ConnectTimeout = \"\"\n\t}\n\tif e.RequestTimeout == 0 {\n\t\texported.RequestTimeout = \"\"\n\t}\n\n\treturn json.Marshal(exported)\n}\n\nfunc (e *ServiceResolverConfigEntry) UnmarshalJSON(data []byte) error {\n\ttype Alias ServiceResolverConfigEntry\n\taux := &struct {\n\t\tConnectTimeout string\n\t\tRequestTimeout string\n\t\t*Alias\n\t}{\n\t\tAlias: (*Alias)(e),\n\t}\n\tvar err error\n\tif err = json.Unmarshal(data, &aux); err != nil {\n\t\treturn err\n\t}\n\tvar merr *multierror.Error\n\tif aux.ConnectTimeout != \"\" {\n\t\tif e.ConnectTimeout, err = time.ParseDuration(aux.ConnectTimeout); err != nil {\n\t\t\tmerr = multierror.Append(merr, err)\n\t\t}\n\t}\n\tif aux.RequestTimeout != \"\" {\n\t\tif e.RequestTimeout, err = time.ParseDuration(aux.RequestTimeout); err != nil {\n\t\t\tmerr = multierror.Append(merr, err)\n\t\t}\n\t}\n\treturn merr.ErrorOrNil()\n}\n\nfunc (e *ServiceResolverConfigEntry) GetKind() string            { return e.Kind }\nfunc (e *ServiceResolverConfigEntry) GetName() string            { return e.Name }\nfunc (e *ServiceResolverConfigEntry) GetPartition() string       { return e.Partition }\nfunc (e *ServiceResolverConfigEntry) GetNamespace() string       { return e.Namespace }\nfunc (e *ServiceResolverConfigEntry) GetMeta() map[string]string { return e.Meta }\nfunc (e *ServiceResolverConfigEntry) GetCreateIndex() uint64     { return e.CreateIndex }\nfunc (e *ServiceResolverConfigEntry) GetModifyIndex() uint64     { return e.ModifyIndex }\n\ntype ServiceResolverSubset struct {\n\tFilter      string `json:\",omitempty\"`\n\tOnlyPassing bool   `json:\",omitempty\" alias:\"only_passing\"`\n}\n\ntype ServiceResolverRedirect struct {\n\tService       string `json:\",omitempty\"`\n\tServiceSubset string `json:\",omitempty\" alias:\"service_subset\"`\n\tNamespace     string `json:\",omitempty\"`\n\tPartition     string `json:\",omitempty\"`\n\tDatacenter    string `json:\",omitempty\"`\n\tPeer          string `json:\",omitempty\"`\n\tSamenessGroup string `json:\",omitempty\" alias:\"sameness_group\"`\n}\n\ntype ServiceResolverFailover struct {\n\tService       string `json:\",omitempty\"`\n\tServiceSubset string `json:\",omitempty\" alias:\"service_subset\"`\n\t// Referencing other partitions is not supported.\n\tNamespace     string                          `json:\",omitempty\"`\n\tDatacenters   []string                        `json:\",omitempty\"`\n\tTargets       []ServiceResolverFailoverTarget `json:\",omitempty\"`\n\tPolicy        *ServiceResolverFailoverPolicy  `json:\",omitempty\"`\n\tSamenessGroup string                          `json:\",omitempty\" alias:\"sameness_group\"`\n}\n\ntype ServiceResolverFailoverTarget struct {\n\tService       string `json:\",omitempty\"`\n\tServiceSubset string `json:\",omitempty\" alias:\"service_subset\"`\n\tPartition     string `json:\",omitempty\"`\n\tNamespace     string `json:\",omitempty\"`\n\tDatacenter    string `json:\",omitempty\"`\n\tPeer          string `json:\",omitempty\"`\n}\n\ntype ServiceResolverFailoverPolicy struct {\n\t// Mode specifies the type of failover that will be performed. Valid values are\n\t// \"sequential\", \"\" (equivalent to \"sequential\") and \"order-by-locality\".\n\tMode    string   `json:\",omitempty\"`\n\tRegions []string `json:\",omitempty\"`\n}\n\ntype ServiceResolverPrioritizeByLocality struct {\n\t// Mode specifies the type of prioritization that will be performed\n\t// when selecting nodes in the local partition.\n\t// Valid values are: \"\" (default \"none\"), \"none\", and \"failover\".\n\tMode string `json:\",omitempty\"`\n}\n\n// LoadBalancer determines the load balancing policy and configuration for services\n// issuing requests to this upstream service.\ntype LoadBalancer struct {\n\t// Policy is the load balancing policy used to select a host\n\tPolicy string `json:\",omitempty\"`\n\n\t// RingHashConfig contains configuration for the \"ring_hash\" policy type\n\tRingHashConfig *RingHashConfig `json:\",omitempty\" alias:\"ring_hash_config\"`\n\n\t// LeastRequestConfig contains configuration for the \"least_request\" policy type\n\tLeastRequestConfig *LeastRequestConfig `json:\",omitempty\" alias:\"least_request_config\"`\n\n\t// HashPolicies is a list of hash policies to use for hashing load balancing algorithms.\n\t// Hash policies are evaluated individually and combined such that identical lists\n\t// result in the same hash.\n\t// If no hash policies are present, or none are successfully evaluated,\n\t// then a random backend host will be selected.\n\tHashPolicies []HashPolicy `json:\",omitempty\" alias:\"hash_policies\"`\n}\n\n// RingHashConfig contains configuration for the \"ring_hash\" policy type\ntype RingHashConfig struct {\n\t// MinimumRingSize determines the minimum number of entries in the hash ring\n\tMinimumRingSize uint64 `json:\",omitempty\" alias:\"minimum_ring_size\"`\n\n\t// MaximumRingSize determines the maximum number of entries in the hash ring\n\tMaximumRingSize uint64 `json:\",omitempty\" alias:\"maximum_ring_size\"`\n}\n\n// LeastRequestConfig contains configuration for the \"least_request\" policy type\ntype LeastRequestConfig struct {\n\t// ChoiceCount determines the number of random healthy hosts from which to select the one with the least requests.\n\tChoiceCount uint32 `json:\",omitempty\" alias:\"choice_count\"`\n}\n\n// HashPolicy defines which attributes will be hashed by hash-based LB algorithms\ntype HashPolicy struct {\n\t// Field is the attribute type to hash on.\n\t// Must be one of \"header\",\"cookie\", or \"query_parameter\".\n\t// Cannot be specified along with SourceIP.\n\tField string `json:\",omitempty\"`\n\n\t// FieldValue is the value to hash.\n\t// ie. header name, cookie name, URL query parameter name\n\t// Cannot be specified along with SourceIP.\n\tFieldValue string `json:\",omitempty\" alias:\"field_value\"`\n\n\t// CookieConfig contains configuration for the \"cookie\" hash policy type.\n\tCookieConfig *CookieConfig `json:\",omitempty\" alias:\"cookie_config\"`\n\n\t// SourceIP determines whether the hash should be of the source IP rather than of a field and field value.\n\t// Cannot be specified along with Field or FieldValue.\n\tSourceIP bool `json:\",omitempty\" alias:\"source_ip\"`\n\n\t// Terminal will short circuit the computation of the hash when multiple hash policies are present.\n\t// If a hash is computed when a Terminal policy is evaluated,\n\t// then that hash will be used and subsequent hash policies will be ignored.\n\tTerminal bool `json:\",omitempty\"`\n}\n\n// CookieConfig contains configuration for the \"cookie\" hash policy type.\n// This is specified to have Envoy generate a cookie for a client on its first request.\ntype CookieConfig struct {\n\t// Generates a session cookie with no expiration.\n\tSession bool `json:\",omitempty\"`\n\n\t// TTL for generated cookies. Cannot be specified for session cookies.\n\tTTL time.Duration `json:\",omitempty\"`\n\n\t// The path to set for the cookie\n\tPath string `json:\",omitempty\"`\n}\n\n// HTTPHeaderModifiers is a set of rules for HTTP header modification that\n// should be performed by proxies as the request passes through them. It can\n// operate on either request or response headers depending on the context in\n// which it is used.\ntype HTTPHeaderModifiers struct {\n\t// Add is a set of name -> value pairs that should be appended to the request\n\t// or response (i.e. allowing duplicates if the same header already exists).\n\tAdd map[string]string `json:\",omitempty\"`\n\n\t// Set is a set of name -> value pairs that should be added to the request or\n\t// response, overwriting any existing header values of the same name.\n\tSet map[string]string `json:\",omitempty\"`\n\n\t// Remove is the set of header names that should be stripped from the request\n\t// or response.\n\tRemove []string `json:\",omitempty\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/config_entry_exports.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport \"encoding/json\"\n\n// ExportedServicesConfigEntry manages the exported services for a single admin partition.\n// Admin Partitions are a Consul Enterprise feature.\ntype ExportedServicesConfigEntry struct {\n\t// Name is the name of the partition the ExportedServicesConfigEntry applies to.\n\t// Partitioning is a Consul Enterprise feature.\n\tName string `json:\",omitempty\"`\n\n\t// Partition is the partition where the ExportedServicesConfigEntry is stored.\n\t// If the partition does not match the name, the name will overwrite the partition.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// Services is a list of services to be exported and the list of partitions\n\t// to expose them to.\n\tServices []ExportedService `json:\",omitempty\"`\n\n\tMeta map[string]string `json:\",omitempty\"`\n\n\t// CreateIndex is the Raft index this entry was created at. This is a\n\t// read-only field.\n\tCreateIndex uint64\n\n\t// ModifyIndex is used for the Check-And-Set operations and can also be fed\n\t// back into the WaitIndex of the QueryOptions in order to perform blocking\n\t// queries.\n\tModifyIndex uint64\n}\n\n// ExportedService manages the exporting of a service in the local partition to\n// other partitions.\ntype ExportedService struct {\n\t// Name is the name of the service to be exported.\n\tName string\n\n\t// Namespace is the namespace to export the service from.\n\tNamespace string `json:\",omitempty\"`\n\n\t// Consumers is a list of downstream consumers of the service to be exported.\n\tConsumers []ServiceConsumer `json:\",omitempty\"`\n}\n\n// ServiceConsumer represents a downstream consumer of the service to be exported.\n// At most one of Partition or Peer must be specified.\ntype ServiceConsumer struct {\n\t// Partition is the admin partition to export the service to.\n\tPartition string `json:\",omitempty\"`\n\n\t// Peer is the name of the peer to export the service to.\n\tPeer string `json:\",omitempty\" alias:\"peer_name\"`\n\n\t// SamenessGroup is the name of the sameness group to export the service to.\n\tSamenessGroup string `json:\",omitempty\" alias:\"sameness_group\"`\n}\n\nfunc (e *ExportedServicesConfigEntry) GetKind() string            { return ExportedServices }\nfunc (e *ExportedServicesConfigEntry) GetName() string            { return e.Name }\nfunc (e *ExportedServicesConfigEntry) GetPartition() string       { return e.Name }\nfunc (e *ExportedServicesConfigEntry) GetNamespace() string       { return \"\" }\nfunc (e *ExportedServicesConfigEntry) GetMeta() map[string]string { return e.Meta }\nfunc (e *ExportedServicesConfigEntry) GetCreateIndex() uint64     { return e.CreateIndex }\nfunc (e *ExportedServicesConfigEntry) GetModifyIndex() uint64     { return e.ModifyIndex }\n\n// MarshalJSON adds the Kind field so that the JSON can be decoded back into the\n// correct type.\nfunc (e *ExportedServicesConfigEntry) MarshalJSON() ([]byte, error) {\n\ttype Alias ExportedServicesConfigEntry\n\tsource := &struct {\n\t\tKind string\n\t\t*Alias\n\t}{\n\t\tKind:  ExportedServices,\n\t\tAlias: (*Alias)(e),\n\t}\n\treturn json.Marshal(source)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/config_entry_gateways.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// IngressGatewayConfigEntry manages the configuration for an ingress service\n// with the given name.\ntype IngressGatewayConfigEntry struct {\n\t// Kind of the config entry. This should be set to api.IngressGateway.\n\tKind string\n\n\t// Name is used to match the config entry with its associated ingress gateway\n\t// service. This should match the name provided in the service definition.\n\tName string\n\n\t// Partition is the partition the IngressGateway is associated with.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace is the namespace the IngressGateway is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// TLS holds the TLS configuration for this gateway.\n\tTLS GatewayTLSConfig\n\n\t// Listeners declares what ports the ingress gateway should listen on, and\n\t// what services to associated to those ports.\n\tListeners []IngressListener\n\n\tMeta map[string]string `json:\",omitempty\"`\n\n\t// Defaults is default configuration for all upstream services\n\tDefaults *IngressServiceConfig `json:\",omitempty\"`\n\n\t// CreateIndex is the Raft index this entry was created at. This is a\n\t// read-only field.\n\tCreateIndex uint64\n\n\t// ModifyIndex is used for the Check-And-Set operations and can also be fed\n\t// back into the WaitIndex of the QueryOptions in order to perform blocking\n\t// queries.\n\tModifyIndex uint64\n}\n\ntype IngressServiceConfig struct {\n\tMaxConnections        *uint32\n\tMaxPendingRequests    *uint32\n\tMaxConcurrentRequests *uint32\n\n\t// PassiveHealthCheck configuration determines how upstream proxy instances will\n\t// be monitored for removal from the load balancing pool.\n\tPassiveHealthCheck *PassiveHealthCheck `json:\",omitempty\" alias:\"passive_health_check\"`\n}\n\ntype GatewayTLSConfig struct {\n\t// Indicates that TLS should be enabled for this gateway service.\n\tEnabled bool\n\n\t// SDS allows configuring TLS certificate from an SDS service.\n\tSDS *GatewayTLSSDSConfig `json:\",omitempty\"`\n\n\tTLSMinVersion string `json:\",omitempty\" alias:\"tls_min_version\"`\n\tTLSMaxVersion string `json:\",omitempty\" alias:\"tls_max_version\"`\n\n\t// Define a subset of cipher suites to restrict\n\t// Only applicable to connections negotiated via TLS 1.2 or earlier\n\tCipherSuites []string `json:\",omitempty\" alias:\"cipher_suites\"`\n}\n\ntype GatewayServiceTLSConfig struct {\n\t// SDS allows configuring TLS certificate from an SDS service.\n\tSDS *GatewayTLSSDSConfig `json:\",omitempty\"`\n}\n\ntype GatewayTLSSDSConfig struct {\n\tClusterName  string `json:\",omitempty\" alias:\"cluster_name\"`\n\tCertResource string `json:\",omitempty\" alias:\"cert_resource\"`\n}\n\n// IngressListener manages the configuration for a listener on a specific port.\ntype IngressListener struct {\n\t// Port declares the port on which the ingress gateway should listen for traffic.\n\tPort int\n\n\t// Protocol declares what type of traffic this listener is expected to\n\t// receive. Depending on the protocol, a listener might support multiplexing\n\t// services over a single port, or additional discovery chain features. The\n\t// current supported values are: (tcp | http | http2 | grpc).\n\tProtocol string\n\n\t// Services declares the set of services to which the listener forwards\n\t// traffic.\n\t//\n\t// For \"tcp\" protocol listeners, only a single service is allowed.\n\t// For \"http\" listeners, multiple services can be declared.\n\tServices []IngressService\n\n\t// TLS allows specifying some TLS configuration per listener.\n\tTLS *GatewayTLSConfig `json:\",omitempty\"`\n}\n\n// IngressService manages configuration for services that are exposed to\n// ingress traffic.\ntype IngressService struct {\n\t// Name declares the service to which traffic should be forwarded.\n\t//\n\t// This can either be a specific service, or the wildcard specifier,\n\t// \"*\". If the wildcard specifier is provided, the listener must be of \"http\"\n\t// protocol and means that the listener will forward traffic to all services.\n\t//\n\t// A name can be specified on multiple listeners, and will be exposed on both\n\t// of the listeners.\n\tName string\n\n\t// Hosts is a list of hostnames which should be associated to this service on\n\t// the defined listener. Only allowed on layer 7 protocols, this will be used\n\t// to route traffic to the service by matching the Host header of the HTTP\n\t// request.\n\t//\n\t// If a host is provided for a service that also has a wildcard specifier\n\t// defined, the host will override the wildcard-specifier-provided\n\t// \"<service-name>.*\" domain for that listener.\n\t//\n\t// This cannot be specified when using the wildcard specifier, \"*\", or when\n\t// using a \"tcp\" listener.\n\tHosts []string\n\n\t// Namespace is the namespace where the service is located.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// Partition is the partition where the service is located.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// TLS allows specifying some TLS configuration per listener.\n\tTLS *GatewayServiceTLSConfig `json:\",omitempty\"`\n\n\t// Allow HTTP header manipulation to be configured.\n\tRequestHeaders  *HTTPHeaderModifiers `json:\",omitempty\" alias:\"request_headers\"`\n\tResponseHeaders *HTTPHeaderModifiers `json:\",omitempty\" alias:\"response_headers\"`\n\n\tMaxConnections        *uint32 `json:\",omitempty\" alias:\"max_connections\"`\n\tMaxPendingRequests    *uint32 `json:\",omitempty\" alias:\"max_pending_requests\"`\n\tMaxConcurrentRequests *uint32 `json:\",omitempty\" alias:\"max_concurrent_requests\"`\n\n\t// PassiveHealthCheck configuration determines how upstream proxy instances will\n\t// be monitored for removal from the load balancing pool.\n\tPassiveHealthCheck *PassiveHealthCheck `json:\",omitempty\" alias:\"passive_health_check\"`\n}\n\nfunc (i *IngressGatewayConfigEntry) GetKind() string            { return i.Kind }\nfunc (i *IngressGatewayConfigEntry) GetName() string            { return i.Name }\nfunc (i *IngressGatewayConfigEntry) GetPartition() string       { return i.Partition }\nfunc (i *IngressGatewayConfigEntry) GetNamespace() string       { return i.Namespace }\nfunc (i *IngressGatewayConfigEntry) GetMeta() map[string]string { return i.Meta }\nfunc (i *IngressGatewayConfigEntry) GetCreateIndex() uint64     { return i.CreateIndex }\nfunc (i *IngressGatewayConfigEntry) GetModifyIndex() uint64     { return i.ModifyIndex }\n\n// TerminatingGatewayConfigEntry manages the configuration for a terminating gateway\n// with the given name.\ntype TerminatingGatewayConfigEntry struct {\n\t// Kind of the config entry. This should be set to api.TerminatingGateway.\n\tKind string\n\n\t// Name is used to match the config entry with its associated terminating gateway\n\t// service. This should match the name provided in the service definition.\n\tName string\n\n\t// Services is a list of service names represented by the terminating gateway.\n\tServices []LinkedService `json:\",omitempty\"`\n\n\tMeta map[string]string `json:\",omitempty\"`\n\n\t// CreateIndex is the Raft index this entry was created at. This is a\n\t// read-only field.\n\tCreateIndex uint64\n\n\t// ModifyIndex is used for the Check-And-Set operations and can also be fed\n\t// back into the WaitIndex of the QueryOptions in order to perform blocking\n\t// queries.\n\tModifyIndex uint64\n\n\t// Partition is the partition the config entry is associated with.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace is the namespace the config entry is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n}\n\n// A LinkedService is a service represented by a terminating gateway\ntype LinkedService struct {\n\t// Referencing other partitions is not supported.\n\n\t// Namespace is where the service is registered.\n\tNamespace string `json:\",omitempty\"`\n\n\t// Name is the name of the service, as defined in Consul's catalog.\n\tName string `json:\",omitempty\"`\n\n\t// CAFile is the optional path to a CA certificate to use for TLS connections\n\t// from the gateway to the linked service.\n\tCAFile string `json:\",omitempty\" alias:\"ca_file\"`\n\n\t// CertFile is the optional path to a client certificate to use for TLS connections\n\t// from the gateway to the linked service.\n\tCertFile string `json:\",omitempty\" alias:\"cert_file\"`\n\n\t// KeyFile is the optional path to a private key to use for TLS connections\n\t// from the gateway to the linked service.\n\tKeyFile string `json:\",omitempty\" alias:\"key_file\"`\n\n\t// SNI is the optional name to specify during the TLS handshake with a linked service.\n\tSNI string `json:\",omitempty\"`\n}\n\nfunc (g *TerminatingGatewayConfigEntry) GetKind() string            { return g.Kind }\nfunc (g *TerminatingGatewayConfigEntry) GetName() string            { return g.Name }\nfunc (g *TerminatingGatewayConfigEntry) GetPartition() string       { return g.Partition }\nfunc (g *TerminatingGatewayConfigEntry) GetNamespace() string       { return g.Namespace }\nfunc (g *TerminatingGatewayConfigEntry) GetMeta() map[string]string { return g.Meta }\nfunc (g *TerminatingGatewayConfigEntry) GetCreateIndex() uint64     { return g.CreateIndex }\nfunc (g *TerminatingGatewayConfigEntry) GetModifyIndex() uint64     { return g.ModifyIndex }\n\n// APIGatewayConfigEntry manages the configuration for an API gateway\n// with the given name.\ntype APIGatewayConfigEntry struct {\n\t// Kind of the config entry. This should be set to api.APIGateway.\n\tKind string\n\n\t// Name is used to match the config entry with its associated api gateway\n\t// service. This should match the name provided in the service definition.\n\tName string\n\n\tMeta map[string]string `json:\",omitempty\"`\n\n\t// Listeners is the set of listener configuration to which an API Gateway\n\t// might bind.\n\tListeners []APIGatewayListener\n\t// Status is the asynchronous status which an APIGateway propagates to the user.\n\tStatus ConfigEntryStatus\n\n\t// CreateIndex is the Raft index this entry was created at. This is a\n\t// read-only field.\n\tCreateIndex uint64\n\n\t// ModifyIndex is used for the Check-And-Set operations and can also be fed\n\t// back into the WaitIndex of the QueryOptions in order to perform blocking\n\t// queries.\n\tModifyIndex uint64\n\n\t// Partition is the partition the config entry is associated with.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace is the namespace the config entry is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n}\n\nfunc (g *APIGatewayConfigEntry) GetKind() string            { return g.Kind }\nfunc (g *APIGatewayConfigEntry) GetName() string            { return g.Name }\nfunc (g *APIGatewayConfigEntry) GetPartition() string       { return g.Partition }\nfunc (g *APIGatewayConfigEntry) GetNamespace() string       { return g.Namespace }\nfunc (g *APIGatewayConfigEntry) GetMeta() map[string]string { return g.Meta }\nfunc (g *APIGatewayConfigEntry) GetCreateIndex() uint64     { return g.CreateIndex }\nfunc (g *APIGatewayConfigEntry) GetModifyIndex() uint64     { return g.ModifyIndex }\n\n// APIGatewayListener represents an individual listener for an APIGateway\ntype APIGatewayListener struct {\n\t// Name is the name of the listener in a given gateway. This must be\n\t// unique within a gateway.\n\tName string\n\t// Hostname is the host name that a listener should be bound to, if\n\t// unspecified, the listener accepts requests for all hostnames.\n\tHostname string\n\t// Port is the port at which this listener should bind.\n\tPort int\n\t// Protocol is the protocol that a listener should use, it must\n\t// either be \"http\" or \"tcp\"\n\tProtocol string\n\t// TLS is the TLS settings for the listener.\n\tTLS APIGatewayTLSConfiguration\n\t// Override is the policy that overrides all other policy and route specific configuration\n\tOverride *APIGatewayPolicy `json:\",omitempty\"`\n\t// Default is the policy that is the default for the listener and route, routes can override this behavior\n\tDefault *APIGatewayPolicy `json:\",omitempty\"`\n}\n\n// APIGatewayTLSConfiguration specifies the configuration of a listener’s\n// TLS settings.\ntype APIGatewayTLSConfiguration struct {\n\t// Certificates is a set of references to certificates\n\t// that a gateway listener uses for TLS termination.\n\tCertificates []ResourceReference\n\t// MaxVersion is the maximum TLS version that the listener\n\t// should support.\n\tMaxVersion string `json:\",omitempty\" alias:\"tls_max_version\"`\n\t// MinVersion is the minimum TLS version that the listener\n\t// should support.\n\tMinVersion string `json:\",omitempty\" alias:\"tls_min_version\"`\n\t// Define a subset of cipher suites to restrict\n\t// Only applicable to connections negotiated via TLS 1.2 or earlier\n\tCipherSuites []string `json:\",omitempty\" alias:\"cipher_suites\"`\n}\n\n// APIGatewayPolicy holds the policy that configures the gateway listener, this is used in the `Override` and `Default` fields of a listener\ntype APIGatewayPolicy struct {\n\t// JWT holds the JWT configuration for the Listener\n\tJWT *APIGatewayJWTRequirement `json:\",omitempty\"`\n}\n\n// APIGatewayJWTRequirement holds the list of JWT providers to be verified against\ntype APIGatewayJWTRequirement struct {\n\t// Providers is a list of providers to consider when verifying a JWT.\n\tProviders []*APIGatewayJWTProvider `json:\",omitempty\"`\n}\n\n// APIGatewayJWTProvider holds the provider and claim verification information\ntype APIGatewayJWTProvider struct {\n\t// Name is the name of the JWT provider. There MUST be a corresponding\n\t// \"jwt-provider\" config entry with this name.\n\tName string `json:\",omitempty\"`\n\n\t// VerifyClaims is a list of additional claims to verify in a JWT's payload.\n\tVerifyClaims []*APIGatewayJWTClaimVerification `json:\",omitempty\" alias:\"verify_claims\"`\n}\n\n// APIGatewayJWTClaimVerification holds the actual claim information to be verified\ntype APIGatewayJWTClaimVerification struct {\n\t// Path is the path to the claim in the token JSON.\n\tPath []string `json:\",omitempty\"`\n\n\t// Value is the expected value at the given path:\n\t// - If the type at the path is a list then we verify\n\t//   that this value is contained in the list.\n\t//\n\t// - If the type at the path is a string then we verify\n\t//   that this value matches.\n\tValue string `json:\",omitempty\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/config_entry_inline_certificate.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// InlineCertificateConfigEntry -- TODO stub\ntype InlineCertificateConfigEntry struct {\n\t// Kind of the config entry. This should be set to api.InlineCertificate.\n\tKind string\n\n\t// Name is used to match the config entry with its associated tcp-route\n\t// service. This should match the name provided in the service definition.\n\tName string\n\n\t// Certificate is the public certificate component of an x509 key pair encoded in raw PEM format.\n\tCertificate string\n\t// PrivateKey is the private key component of an x509 key pair encoded in raw PEM format.\n\tPrivateKey string `alias:\"private_key\"`\n\n\tMeta map[string]string `json:\",omitempty\"`\n\n\t// CreateIndex is the Raft index this entry was created at. This is a\n\t// read-only field.\n\tCreateIndex uint64\n\n\t// ModifyIndex is used for the Check-And-Set operations and can also be fed\n\t// back into the WaitIndex of the QueryOptions in order to perform blocking\n\t// queries.\n\tModifyIndex uint64\n\n\t// Partition is the partition the config entry is associated with.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace is the namespace the config entry is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n}\n\nfunc (a *InlineCertificateConfigEntry) GetKind() string            { return InlineCertificate }\nfunc (a *InlineCertificateConfigEntry) GetName() string            { return a.Name }\nfunc (a *InlineCertificateConfigEntry) GetPartition() string       { return a.Partition }\nfunc (a *InlineCertificateConfigEntry) GetNamespace() string       { return a.Namespace }\nfunc (a *InlineCertificateConfigEntry) GetMeta() map[string]string { return a.Meta }\nfunc (a *InlineCertificateConfigEntry) GetCreateIndex() uint64     { return a.CreateIndex }\nfunc (a *InlineCertificateConfigEntry) GetModifyIndex() uint64     { return a.ModifyIndex }\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/config_entry_intentions.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport \"time\"\n\ntype ServiceIntentionsConfigEntry struct {\n\tKind      string\n\tName      string\n\tPartition string `json:\",omitempty\"`\n\tNamespace string `json:\",omitempty\"`\n\n\tSources []*SourceIntention\n\tJWT     *IntentionJWTRequirement `json:\",omitempty\"`\n\n\tMeta map[string]string `json:\",omitempty\"`\n\n\tCreateIndex uint64\n\tModifyIndex uint64\n}\n\ntype SourceIntention struct {\n\tName          string\n\tPeer          string                 `json:\",omitempty\"`\n\tPartition     string                 `json:\",omitempty\"`\n\tNamespace     string                 `json:\",omitempty\"`\n\tSamenessGroup string                 `json:\",omitempty\" alias:\"sameness_group\"`\n\tAction        IntentionAction        `json:\",omitempty\"`\n\tPermissions   []*IntentionPermission `json:\",omitempty\"`\n\tPrecedence    int\n\tType          IntentionSourceType\n\tDescription   string `json:\",omitempty\"`\n\n\tLegacyID         string            `json:\",omitempty\" alias:\"legacy_id\"`\n\tLegacyMeta       map[string]string `json:\",omitempty\" alias:\"legacy_meta\"`\n\tLegacyCreateTime *time.Time        `json:\",omitempty\" alias:\"legacy_create_time\"`\n\tLegacyUpdateTime *time.Time        `json:\",omitempty\" alias:\"legacy_update_time\"`\n}\n\nfunc (e *ServiceIntentionsConfigEntry) GetKind() string            { return e.Kind }\nfunc (e *ServiceIntentionsConfigEntry) GetName() string            { return e.Name }\nfunc (e *ServiceIntentionsConfigEntry) GetPartition() string       { return e.Partition }\nfunc (e *ServiceIntentionsConfigEntry) GetNamespace() string       { return e.Namespace }\nfunc (e *ServiceIntentionsConfigEntry) GetMeta() map[string]string { return e.Meta }\nfunc (e *ServiceIntentionsConfigEntry) GetCreateIndex() uint64     { return e.CreateIndex }\nfunc (e *ServiceIntentionsConfigEntry) GetModifyIndex() uint64     { return e.ModifyIndex }\n\ntype IntentionPermission struct {\n\tAction IntentionAction\n\tHTTP   *IntentionHTTPPermission `json:\",omitempty\"`\n\tJWT    *IntentionJWTRequirement `json:\",omitempty\"`\n}\n\ntype IntentionHTTPPermission struct {\n\tPathExact  string `json:\",omitempty\" alias:\"path_exact\"`\n\tPathPrefix string `json:\",omitempty\" alias:\"path_prefix\"`\n\tPathRegex  string `json:\",omitempty\" alias:\"path_regex\"`\n\n\tHeader []IntentionHTTPHeaderPermission `json:\",omitempty\"`\n\n\tMethods []string `json:\",omitempty\"`\n}\n\ntype IntentionHTTPHeaderPermission struct {\n\tName    string\n\tPresent bool   `json:\",omitempty\"`\n\tExact   string `json:\",omitempty\"`\n\tPrefix  string `json:\",omitempty\"`\n\tSuffix  string `json:\",omitempty\"`\n\tRegex   string `json:\",omitempty\"`\n\tInvert  bool   `json:\",omitempty\"`\n}\n\ntype IntentionJWTRequirement struct {\n\t// Providers is a list of providers to consider when verifying a JWT.\n\tProviders []*IntentionJWTProvider `json:\",omitempty\"`\n}\n\ntype IntentionJWTProvider struct {\n\t// Name is the name of the JWT provider. There MUST be a corresponding\n\t// \"jwt-provider\" config entry with this name.\n\tName string `json:\",omitempty\"`\n\n\t// VerifyClaims is a list of additional claims to verify in a JWT's payload.\n\tVerifyClaims []*IntentionJWTClaimVerification `json:\",omitempty\" alias:\"verify_claims\"`\n}\n\ntype IntentionJWTClaimVerification struct {\n\t// Path is the path to the claim in the token JSON.\n\tPath []string `json:\",omitempty\"`\n\n\t// Value is the expected value at the given path:\n\t// - If the type at the path is a list then we verify\n\t//   that this value is contained in the list.\n\t//\n\t// - If the type at the path is a string then we verify\n\t//   that this value matches.\n\tValue string `json:\",omitempty\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/config_entry_jwt_provider.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"time\"\n)\n\nconst (\n\tDiscoveryTypeStrictDNS   ClusterDiscoveryType = \"STRICT_DNS\"\n\tDiscoveryTypeStatic      ClusterDiscoveryType = \"STATIC\"\n\tDiscoveryTypeLogicalDNS  ClusterDiscoveryType = \"LOGICAL_DNS\"\n\tDiscoveryTypeEDS         ClusterDiscoveryType = \"EDS\"\n\tDiscoveryTypeOriginalDST ClusterDiscoveryType = \"ORIGINAL_DST\"\n)\n\ntype JWTProviderConfigEntry struct {\n\t// Kind is the kind of configuration entry and must be \"jwt-provider\".\n\tKind string `json:\",omitempty\"`\n\n\t// Name is the name of the provider being configured.\n\tName string `json:\",omitempty\"`\n\n\t// JSONWebKeySet defines a JSON Web Key Set, its location on disk, or the\n\t// means with which to fetch a key set from a remote server.\n\tJSONWebKeySet *JSONWebKeySet `json:\",omitempty\" alias:\"json_web_key_set\"`\n\n\t// Issuer is the entity that must have issued the JWT.\n\t// This value must match the \"iss\" claim of the token.\n\tIssuer string `json:\",omitempty\"`\n\n\t// Audiences is the set of audiences the JWT is allowed to access.\n\t// If specified, all JWTs verified with this provider must address\n\t// at least one of these to be considered valid.\n\tAudiences []string `json:\",omitempty\"`\n\n\t// Locations where the JWT will be present in requests.\n\t// Envoy will check all of these locations to extract a JWT.\n\t// If no locations are specified Envoy will default to:\n\t// 1. Authorization header with Bearer schema:\n\t//    \"Authorization: Bearer <token>\"\n\t// 2. access_token query parameter.\n\tLocations []*JWTLocation `json:\",omitempty\"`\n\n\t// Forwarding defines rules for forwarding verified JWTs to the backend.\n\tForwarding *JWTForwardingConfig `json:\",omitempty\"`\n\n\t// ClockSkewSeconds specifies the maximum allowable time difference\n\t// from clock skew when validating the \"exp\" (Expiration) and \"nbf\"\n\t// (Not Before) claims.\n\t//\n\t// Default value is 30 seconds.\n\tClockSkewSeconds int `json:\",omitempty\" alias:\"clock_skew_seconds\"`\n\n\t// CacheConfig defines configuration for caching the validation\n\t// result for previously seen JWTs. Caching results can speed up\n\t// verification when individual tokens are expected to be handled\n\t// multiple times.\n\tCacheConfig *JWTCacheConfig `json:\",omitempty\" alias:\"cache_config\"`\n\n\tMeta map[string]string `json:\",omitempty\"`\n\n\t// CreateIndex is the Raft index this entry was created at. This is a\n\t// read-only field.\n\tCreateIndex uint64 `json:\",omitempty\"`\n\n\t// ModifyIndex is used for the Check-And-Set operations and can also be fed\n\t// back into the WaitIndex of the QueryOptions in order to perform blocking\n\t// queries.\n\tModifyIndex uint64 `json:\",omitempty\"`\n\n\t// Partition is the partition the JWTProviderConfigEntry applies to.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace is the namespace the JWTProviderConfigEntry applies to.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n}\n\n// JWTLocation is a location where the JWT could be present in requests.\n//\n// Only one of Header, QueryParam, or Cookie can be specified.\ntype JWTLocation struct {\n\t// Header defines how to extract a JWT from an HTTP request header.\n\tHeader *JWTLocationHeader `json:\",omitempty\"`\n\n\t// QueryParam defines how to extract a JWT from an HTTP request\n\t// query parameter.\n\tQueryParam *JWTLocationQueryParam `json:\",omitempty\" alias:\"query_param\"`\n\n\t// Cookie defines how to extract a JWT from an HTTP request cookie.\n\tCookie *JWTLocationCookie `json:\",omitempty\"`\n}\n\n// JWTLocationHeader defines how to extract a JWT from an HTTP\n// request header.\ntype JWTLocationHeader struct {\n\t// Name is the name of the header containing the token.\n\tName string `json:\",omitempty\"`\n\n\t// ValuePrefix is an optional prefix that precedes the token in the\n\t// header value.\n\t// For example, \"Bearer \" is a standard value prefix for a header named\n\t// \"Authorization\", but the prefix is not part of the token itself:\n\t// \"Authorization: Bearer <token>\"\n\tValuePrefix string `json:\",omitempty\" alias:\"value_prefix\"`\n\n\t// Forward defines whether the header with the JWT should be\n\t// forwarded after the token has been verified. If false, the\n\t// header will not be forwarded to the backend.\n\t//\n\t// Default value is false.\n\tForward bool `json:\",omitempty\"`\n}\n\n// JWTLocationQueryParam defines how to extract a JWT from an HTTP request query parameter.\ntype JWTLocationQueryParam struct {\n\t// Name is the name of the query param containing the token.\n\tName string `json:\",omitempty\"`\n}\n\n// JWTLocationCookie defines how to extract a JWT from an HTTP request cookie.\ntype JWTLocationCookie struct {\n\t// Name is the name of the cookie containing the token.\n\tName string `json:\",omitempty\"`\n}\n\ntype JWTForwardingConfig struct {\n\t// HeaderName is a header name to use when forwarding a verified\n\t// JWT to the backend. The verified JWT could have been extracted\n\t// from any location (query param, header, or cookie).\n\t//\n\t// The header value will be base64-URL-encoded, and will not be\n\t// padded unless PadForwardPayloadHeader is true.\n\tHeaderName string `json:\",omitempty\" alias:\"header_name\"`\n\n\t// PadForwardPayloadHeader determines whether padding should be added\n\t// to the base64 encoded token forwarded with ForwardPayloadHeader.\n\t//\n\t// Default value is false.\n\tPadForwardPayloadHeader bool `json:\",omitempty\" alias:\"pad_forward_payload_header\"`\n}\n\n// JSONWebKeySet defines a key set, its location on disk, or the\n// means with which to fetch a key set from a remote server.\n//\n// Exactly one of Local or Remote must be specified.\ntype JSONWebKeySet struct {\n\t// Local specifies a local source for the key set.\n\tLocal *LocalJWKS `json:\",omitempty\"`\n\n\t// Remote specifies how to fetch a key set from a remote server.\n\tRemote *RemoteJWKS `json:\",omitempty\"`\n}\n\n// LocalJWKS specifies a location for a local JWKS.\n//\n// Only one of String and Filename can be specified.\ntype LocalJWKS struct {\n\t// JWKS contains a base64 encoded JWKS.\n\tJWKS string `json:\",omitempty\"`\n\n\t// Filename configures a location on disk where the JWKS can be\n\t// found. If specified, the file must be present on the disk of ALL\n\t// proxies with intentions referencing this provider.\n\tFilename string `json:\",omitempty\"`\n}\n\n// RemoteJWKS specifies how to fetch a JWKS from a remote server.\ntype RemoteJWKS struct {\n\t// URI is the URI of the server to query for the JWKS.\n\tURI string `json:\",omitempty\"`\n\n\t// RequestTimeoutMs is the number of milliseconds to\n\t// time out when making a request for the JWKS.\n\tRequestTimeoutMs int `json:\",omitempty\" alias:\"request_timeout_ms\"`\n\n\t// CacheDuration is the duration after which cached keys\n\t// should be expired.\n\t//\n\t// Default value is 5 minutes.\n\tCacheDuration time.Duration `json:\",omitempty\" alias:\"cache_duration\"`\n\n\t// FetchAsynchronously indicates that the JWKS should be fetched\n\t// when a client request arrives. Client requests will be paused\n\t// until the JWKS is fetched.\n\t// If false, the proxy listener will wait for the JWKS to be\n\t// fetched before being activated.\n\t//\n\t// Default value is false.\n\tFetchAsynchronously bool `json:\",omitempty\" alias:\"fetch_asynchronously\"`\n\n\t// RetryPolicy defines a retry policy for fetching JWKS.\n\t//\n\t// There is no retry by default.\n\tRetryPolicy *JWKSRetryPolicy `json:\",omitempty\" alias:\"retry_policy\"`\n\n\t// JWKSCluster defines how the specified Remote JWKS URI is to be fetched.\n\tJWKSCluster *JWKSCluster `json:\",omitempty\" alias:\"jwks_cluster\"`\n}\n\ntype JWKSCluster struct {\n\t// DiscoveryType refers to the service discovery type to use for resolving the cluster.\n\t//\n\t// This defaults to STRICT_DNS.\n\t// Other options include STATIC, LOGICAL_DNS, EDS or ORIGINAL_DST.\n\tDiscoveryType ClusterDiscoveryType `json:\",omitempty\" alias:\"discovery_type\"`\n\n\t// TLSCertificates refers to the data containing certificate authority certificates to use\n\t// in verifying a presented peer certificate.\n\t// If not specified and a peer certificate is presented it will not be verified.\n\t//\n\t// Must be either CaCertificateProviderInstance or TrustedCA.\n\tTLSCertificates *JWKSTLSCertificate `json:\",omitempty\" alias:\"tls_certificates\"`\n\n\t// The timeout for new network connections to hosts in the cluster.\n\t// If not set, a default value of 5s will be used.\n\tConnectTimeout time.Duration `json:\",omitempty\" alias:\"connect_timeout\"`\n}\n\ntype ClusterDiscoveryType string\n\n// JWKSTLSCertificate refers to the data containing certificate authority certificates to use\n// in verifying a presented peer certificate.\n// If not specified and a peer certificate is presented it will not be verified.\n//\n// Must be either CaCertificateProviderInstance or TrustedCA.\ntype JWKSTLSCertificate struct {\n\t// CaCertificateProviderInstance Certificate provider instance for fetching TLS certificates.\n\tCaCertificateProviderInstance *JWKSTLSCertProviderInstance `json:\",omitempty\" alias:\"ca_certificate_provider_instance\"`\n\n\t// TrustedCA defines TLS certificate data containing certificate authority certificates\n\t// to use in verifying a presented peer certificate.\n\t//\n\t// Exactly one of Filename, EnvironmentVariable, InlineString or InlineBytes must be specified.\n\tTrustedCA *JWKSTLSCertTrustedCA `json:\",omitempty\" alias:\"trusted_ca\"`\n}\n\n// JWKSTLSCertTrustedCA defines TLS certificate data containing certificate authority certificates\n// to use in verifying a presented peer certificate.\n//\n// Exactly one of Filename, EnvironmentVariable, InlineString or InlineBytes must be specified.\ntype JWKSTLSCertTrustedCA struct {\n\tFilename            string `json:\",omitempty\" alias:\"filename\"`\n\tEnvironmentVariable string `json:\",omitempty\" alias:\"environment_variable\"`\n\tInlineString        string `json:\",omitempty\" alias:\"inline_string\"`\n\tInlineBytes         []byte `json:\",omitempty\" alias:\"inline_bytes\"`\n}\n\ntype JWKSTLSCertProviderInstance struct {\n\t// InstanceName refers to the certificate provider instance name\n\t//\n\t// The default value is \"default\".\n\tInstanceName string `json:\",omitempty\" alias:\"instance_name\"`\n\n\t// CertificateName is used to specify certificate instances or types. For example, \"ROOTCA\" to specify\n\t// a root-certificate (validation context) or \"example.com\" to specify a certificate for a\n\t// particular domain.\n\t//\n\t// The default value is the empty string.\n\tCertificateName string `json:\",omitempty\" alias:\"certificate_name\"`\n}\n\ntype JWKSRetryPolicy struct {\n\t// NumRetries is the number of times to retry fetching the JWKS.\n\t// The retry strategy uses jittered exponential backoff with\n\t// a base interval of 1s and max of 10s.\n\t//\n\t// Default value is 0.\n\tNumRetries int `json:\",omitempty\" alias:\"num_retries\"`\n\n\t// Backoff policy\n\t//\n\t// Defaults to Envoy's backoff policy\n\tRetryPolicyBackOff *RetryPolicyBackOff `json:\",omitempty\" alias:\"retry_policy_back_off\"`\n}\n\ntype RetryPolicyBackOff struct {\n\t// BaseInterval to be used for the next back off computation\n\t//\n\t// The default value from envoy is 1s\n\tBaseInterval time.Duration `json:\",omitempty\" alias:\"base_interval\"`\n\n\t// MaxInternal to be used to specify the maximum interval between retries.\n\t// Optional but should be greater or equal to BaseInterval.\n\t//\n\t// Defaults to 10 times BaseInterval\n\tMaxInterval time.Duration `json:\",omitempty\" alias:\"max_interval\"`\n}\n\ntype JWTCacheConfig struct {\n\t// Size specifies the maximum number of JWT verification\n\t// results to cache.\n\t//\n\t// Defaults to 0, meaning that JWT caching is disabled.\n\tSize int `json:\",omitempty\"`\n}\n\nfunc (e *JWTProviderConfigEntry) GetKind() string {\n\treturn JWTProvider\n}\n\nfunc (e *JWTProviderConfigEntry) GetName() string            { return e.Name }\nfunc (e *JWTProviderConfigEntry) GetMeta() map[string]string { return e.Meta }\nfunc (e *JWTProviderConfigEntry) GetCreateIndex() uint64     { return e.CreateIndex }\nfunc (e *JWTProviderConfigEntry) GetModifyIndex() uint64     { return e.ModifyIndex }\nfunc (e *JWTProviderConfigEntry) GetPartition() string       { return e.Partition }\nfunc (e *JWTProviderConfigEntry) GetNamespace() string       { return e.Namespace }\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/config_entry_mesh.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"encoding/json\"\n)\n\n// MeshConfigEntry manages the global configuration for all service mesh\n// proxies.\ntype MeshConfigEntry struct {\n\t// Partition is the partition the MeshConfigEntry applies to.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace is the namespace the MeshConfigEntry applies to.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// TransparentProxy applies configuration specific to proxies\n\t// in transparent mode.\n\tTransparentProxy TransparentProxyMeshConfig `alias:\"transparent_proxy\"`\n\n\t// AllowEnablingPermissiveMutualTLS must be true in order to allow setting\n\t// MutualTLSMode=permissive in either service-defaults or proxy-defaults.\n\tAllowEnablingPermissiveMutualTLS bool `json:\",omitempty\" alias:\"allow_enabling_permissive_mutual_tls\"`\n\n\tTLS *MeshTLSConfig `json:\",omitempty\"`\n\n\tHTTP *MeshHTTPConfig `json:\",omitempty\"`\n\n\tPeering *PeeringMeshConfig `json:\",omitempty\"`\n\n\tMeta map[string]string `json:\",omitempty\"`\n\n\t// CreateIndex is the Raft index this entry was created at. This is a\n\t// read-only field.\n\tCreateIndex uint64\n\n\t// ModifyIndex is used for the Check-And-Set operations and can also be fed\n\t// back into the WaitIndex of the QueryOptions in order to perform blocking\n\t// queries.\n\tModifyIndex uint64\n}\n\ntype TransparentProxyMeshConfig struct {\n\tMeshDestinationsOnly bool `alias:\"mesh_destinations_only\"`\n}\n\ntype MeshTLSConfig struct {\n\tIncoming *MeshDirectionalTLSConfig `json:\",omitempty\"`\n\tOutgoing *MeshDirectionalTLSConfig `json:\",omitempty\"`\n}\n\ntype MeshDirectionalTLSConfig struct {\n\tTLSMinVersion string   `json:\",omitempty\" alias:\"tls_min_version\"`\n\tTLSMaxVersion string   `json:\",omitempty\" alias:\"tls_max_version\"`\n\tCipherSuites  []string `json:\",omitempty\" alias:\"cipher_suites\"`\n}\n\ntype MeshHTTPConfig struct {\n\tSanitizeXForwardedClientCert bool `alias:\"sanitize_x_forwarded_client_cert\"`\n}\n\ntype PeeringMeshConfig struct {\n\tPeerThroughMeshGateways bool `json:\",omitempty\" alias:\"peer_through_mesh_gateways\"`\n}\n\nfunc (e *MeshConfigEntry) GetKind() string            { return MeshConfig }\nfunc (e *MeshConfigEntry) GetName() string            { return MeshConfigMesh }\nfunc (e *MeshConfigEntry) GetPartition() string       { return e.Partition }\nfunc (e *MeshConfigEntry) GetNamespace() string       { return e.Namespace }\nfunc (e *MeshConfigEntry) GetMeta() map[string]string { return e.Meta }\nfunc (e *MeshConfigEntry) GetCreateIndex() uint64     { return e.CreateIndex }\nfunc (e *MeshConfigEntry) GetModifyIndex() uint64     { return e.ModifyIndex }\n\n// MarshalJSON adds the Kind field so that the JSON can be decoded back into the\n// correct type.\nfunc (e *MeshConfigEntry) MarshalJSON() ([]byte, error) {\n\ttype Alias MeshConfigEntry\n\tsource := &struct {\n\t\tKind string\n\t\t*Alias\n\t}{\n\t\tKind:  MeshConfig,\n\t\tAlias: (*Alias)(e),\n\t}\n\treturn json.Marshal(source)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/config_entry_rate_limit_ip.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\ntype ReadWriteRatesConfig struct {\n\tReadRate  float64 `alias:\"read_rate\"`\n\tWriteRate float64 `alias:\"write_rate\"`\n}\n\ntype RateLimitIPConfigEntry struct {\n\t// Kind of the config entry. This will be set to structs.RateLimitIPConfig\n\tKind string\n\tName string\n\tMode string // {permissive, enforcing, disabled}\n\n\tMeta map[string]string `json:\",omitempty\"`\n\t// overall limits\n\tReadRate  float64 `alias:\"read_rate\"`\n\tWriteRate float64 `alias:\"write_rate\"`\n\n\t//limits specific to a type of call\n\tACL             *ReadWriteRatesConfig `json:\",omitempty\"` //\tOperationCategoryACL             OperationCategory = \"ACL\"\n\tCatalog         *ReadWriteRatesConfig `json:\",omitempty\"` //   OperationCategoryCatalog         OperationCategory = \"Catalog\"\n\tConfigEntry     *ReadWriteRatesConfig `json:\",omitempty\"` //   OperationCategoryConfigEntry     OperationCategory = \"ConfigEntry\"\n\tConnectCA       *ReadWriteRatesConfig `json:\",omitempty\"` //   OperationCategoryConnectCA       OperationCategory = \"ConnectCA\"\n\tCoordinate      *ReadWriteRatesConfig `json:\",omitempty\"` //   OperationCategoryCoordinate      OperationCategory = \"Coordinate\"\n\tDiscoveryChain  *ReadWriteRatesConfig `json:\",omitempty\"` //   OperationCategoryDiscoveryChain  OperationCategory = \"DiscoveryChain\"\n\tServerDiscovery *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryServerDiscovery OperationCategory = \"ServerDiscovery\"\n\tHealth          *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryHealth          OperationCategory = \"Health\"\n\tIntention       *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryIntention       OperationCategory = \"Intention\"\n\tKV              *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryKV              OperationCategory = \"KV\"\n\tTenancy         *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryPartition        OperationCategory = \"Tenancy\"\n\tPreparedQuery   *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryPreparedQuery   OperationCategory = \"PreparedQuery\"\n\tSession         *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategorySession         OperationCategory = \"Session\"\n\tTxn             *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryTxn             OperationCategory = \"Txn\"\n\tAutoConfig      *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryAutoConfig      OperationCategory = \"AutoConfig\"\n\tFederationState *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryFederationState OperationCategory = \"FederationState\"\n\tInternal        *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryInternal        OperationCategory = \"Internal\"\n\tPeerStream      *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryPeerStream      OperationCategory = \"PeerStream\"\n\tPeering         *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryPeering         OperationCategory = \"Peering\"\n\tDataPlane       *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryDataPlane       OperationCategory = \"DataPlane\"\n\tDNS             *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryDNS             OperationCategory = \"DNS\"\n\tSubscribe       *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategorySubscribe       OperationCategory = \"Subscribe\"\n\tResource        *ReadWriteRatesConfig `json:\",omitempty\"` //  OperationCategoryResource        OperationCategory = \"Resource\"\n\n\t// Partition is the partition the config entry is associated with.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace is the namespace the config entry is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// CreateIndex is the Raft index this entry was created at. This is a\n\t// read-only field.\n\tCreateIndex uint64\n\n\t// ModifyIndex is used for the Check-And-Set operations and can also be fed\n\t// back into the WaitIndex of the QueryOptions in order to perform blocking\n\t// queries.\n\tModifyIndex uint64\n}\n\nfunc (r *RateLimitIPConfigEntry) GetKind() string {\n\treturn RateLimitIPConfig\n}\nfunc (r *RateLimitIPConfigEntry) GetName() string {\n\tif r == nil {\n\t\treturn \"\"\n\t}\n\treturn r.Name\n}\nfunc (r *RateLimitIPConfigEntry) GetPartition() string {\n\treturn r.Partition\n}\nfunc (r *RateLimitIPConfigEntry) GetNamespace() string {\n\treturn r.Namespace\n}\nfunc (r *RateLimitIPConfigEntry) GetMeta() map[string]string {\n\tif r == nil {\n\t\treturn nil\n\t}\n\treturn r.Meta\n}\nfunc (r *RateLimitIPConfigEntry) GetCreateIndex() uint64 {\n\treturn r.CreateIndex\n}\nfunc (r *RateLimitIPConfigEntry) GetModifyIndex() uint64 {\n\treturn r.ModifyIndex\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/config_entry_routes.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport \"time\"\n\n// TCPRouteConfigEntry -- TODO stub\ntype TCPRouteConfigEntry struct {\n\t// Kind of the config entry. This should be set to api.TCPRoute.\n\tKind string\n\n\t// Name is used to match the config entry with its associated tcp-route\n\t// service. This should match the name provided in the service definition.\n\tName string\n\n\t// Parents is a list of gateways that this route should be bound to.\n\tParents []ResourceReference\n\t// Services is a list of TCP-based services that this should route to.\n\t// Currently, this must specify at maximum one service.\n\tServices []TCPService\n\n\tMeta map[string]string `json:\",omitempty\"`\n\n\t// Status is the asynchronous status which a TCPRoute propagates to the user.\n\tStatus ConfigEntryStatus\n\n\t// CreateIndex is the Raft index this entry was created at. This is a\n\t// read-only field.\n\tCreateIndex uint64\n\n\t// ModifyIndex is used for the Check-And-Set operations and can also be fed\n\t// back into the WaitIndex of the QueryOptions in order to perform blocking\n\t// queries.\n\tModifyIndex uint64\n\n\t// Partition is the partition the config entry is associated with.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace is the namespace the config entry is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n}\n\nfunc (a *TCPRouteConfigEntry) GetKind() string            { return TCPRoute }\nfunc (a *TCPRouteConfigEntry) GetName() string            { return a.Name }\nfunc (a *TCPRouteConfigEntry) GetPartition() string       { return a.Partition }\nfunc (a *TCPRouteConfigEntry) GetNamespace() string       { return a.Namespace }\nfunc (a *TCPRouteConfigEntry) GetMeta() map[string]string { return a.Meta }\nfunc (a *TCPRouteConfigEntry) GetCreateIndex() uint64     { return a.CreateIndex }\nfunc (a *TCPRouteConfigEntry) GetModifyIndex() uint64     { return a.ModifyIndex }\n\n// TCPService is a service reference for a TCPRoute\ntype TCPService struct {\n\tName string\n\n\t// Partition is the partition the config entry is associated with.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace is the namespace the config entry is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n}\n\n// HTTPRouteConfigEntry manages the configuration for a HTTP route\n// with the given name.\ntype HTTPRouteConfigEntry struct {\n\t// Kind of the config entry. This should be set to api.HTTPRoute.\n\tKind string\n\n\t// Name is used to match the config entry with its associated http-route.\n\tName string\n\n\t// Parents is a list of gateways that this route should be bound to\n\tParents []ResourceReference\n\t// Rules are a list of HTTP-based routing rules that this route should\n\t// use for constructing a routing table.\n\tRules []HTTPRouteRule\n\t// Hostnames are the hostnames for which this HTTPRoute should respond to requests.\n\tHostnames []string\n\n\tMeta map[string]string `json:\",omitempty\"`\n\n\t// CreateIndex is the Raft index this entry was created at. This is a\n\t// read-only field.\n\tCreateIndex uint64\n\n\t// ModifyIndex is used for the Check-And-Set operations and can also be fed\n\t// back into the WaitIndex of the QueryOptions in order to perform blocking\n\t// queries.\n\tModifyIndex uint64\n\n\t// Partition is the partition the config entry is associated with.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace is the namespace the config entry is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// Status is the asynchronous status which an HTTPRoute propagates to the user.\n\tStatus ConfigEntryStatus\n}\n\nfunc (r *HTTPRouteConfigEntry) GetKind() string            { return HTTPRoute }\nfunc (r *HTTPRouteConfigEntry) GetName() string            { return r.Name }\nfunc (r *HTTPRouteConfigEntry) GetPartition() string       { return r.Partition }\nfunc (r *HTTPRouteConfigEntry) GetNamespace() string       { return r.Namespace }\nfunc (r *HTTPRouteConfigEntry) GetMeta() map[string]string { return r.Meta }\nfunc (r *HTTPRouteConfigEntry) GetCreateIndex() uint64     { return r.CreateIndex }\nfunc (r *HTTPRouteConfigEntry) GetModifyIndex() uint64     { return r.ModifyIndex }\n\n// HTTPMatch specifies the criteria that should be\n// used in determining whether or not a request should\n// be routed to a given set of services.\ntype HTTPMatch struct {\n\tHeaders []HTTPHeaderMatch\n\tMethod  HTTPMatchMethod\n\tPath    HTTPPathMatch\n\tQuery   []HTTPQueryMatch\n}\n\n// HTTPMatchMethod specifies which type of HTTP verb should\n// be used for matching a given request.\ntype HTTPMatchMethod string\n\nconst (\n\tHTTPMatchMethodAll     HTTPMatchMethod = \"\"\n\tHTTPMatchMethodConnect HTTPMatchMethod = \"CONNECT\"\n\tHTTPMatchMethodDelete  HTTPMatchMethod = \"DELETE\"\n\tHTTPMatchMethodGet     HTTPMatchMethod = \"GET\"\n\tHTTPMatchMethodHead    HTTPMatchMethod = \"HEAD\"\n\tHTTPMatchMethodOptions HTTPMatchMethod = \"OPTIONS\"\n\tHTTPMatchMethodPatch   HTTPMatchMethod = \"PATCH\"\n\tHTTPMatchMethodPost    HTTPMatchMethod = \"POST\"\n\tHTTPMatchMethodPut     HTTPMatchMethod = \"PUT\"\n\tHTTPMatchMethodTrace   HTTPMatchMethod = \"TRACE\"\n)\n\n// HTTPHeaderMatchType specifies how header matching criteria\n// should be applied to a request.\ntype HTTPHeaderMatchType string\n\nconst (\n\tHTTPHeaderMatchExact             HTTPHeaderMatchType = \"exact\"\n\tHTTPHeaderMatchPrefix            HTTPHeaderMatchType = \"prefix\"\n\tHTTPHeaderMatchPresent           HTTPHeaderMatchType = \"present\"\n\tHTTPHeaderMatchRegularExpression HTTPHeaderMatchType = \"regex\"\n\tHTTPHeaderMatchSuffix            HTTPHeaderMatchType = \"suffix\"\n)\n\n// HTTPHeaderMatch specifies how a match should be done\n// on a request's headers.\ntype HTTPHeaderMatch struct {\n\tMatch HTTPHeaderMatchType\n\tName  string\n\tValue string\n}\n\n// HTTPPathMatchType specifies how path matching criteria\n// should be applied to a request.\ntype HTTPPathMatchType string\n\nconst (\n\tHTTPPathMatchExact             HTTPPathMatchType = \"exact\"\n\tHTTPPathMatchPrefix            HTTPPathMatchType = \"prefix\"\n\tHTTPPathMatchRegularExpression HTTPPathMatchType = \"regex\"\n)\n\n// HTTPPathMatch specifies how a match should be done\n// on a request's path.\ntype HTTPPathMatch struct {\n\tMatch HTTPPathMatchType\n\tValue string\n}\n\n// HTTPQueryMatchType specifies how querys matching criteria\n// should be applied to a request.\ntype HTTPQueryMatchType string\n\nconst (\n\tHTTPQueryMatchExact             HTTPQueryMatchType = \"exact\"\n\tHTTPQueryMatchPresent           HTTPQueryMatchType = \"present\"\n\tHTTPQueryMatchRegularExpression HTTPQueryMatchType = \"regex\"\n)\n\n// HTTPQueryMatch specifies how a match should be done\n// on a request's query parameters.\ntype HTTPQueryMatch struct {\n\tMatch HTTPQueryMatchType\n\tName  string\n\tValue string\n}\n\n// HTTPFilters specifies a list of filters used to modify a request\n// before it is routed to an upstream.\ntype HTTPFilters struct {\n\tHeaders       []HTTPHeaderFilter\n\tURLRewrite    *URLRewrite\n\tRetryFilter   *RetryFilter\n\tTimeoutFilter *TimeoutFilter\n\tJWT           *JWTFilter\n}\n\n// HTTPResponseFilters specifies a list of filters used to modify a\n// response returned by an upstream\ntype HTTPResponseFilters struct {\n\tHeaders []HTTPHeaderFilter\n}\n\n// HTTPHeaderFilter specifies how HTTP headers should be modified.\ntype HTTPHeaderFilter struct {\n\tAdd    map[string]string\n\tRemove []string\n\tSet    map[string]string\n}\n\ntype URLRewrite struct {\n\tPath string\n}\n\ntype RetryFilter struct {\n\tNumRetries            uint32\n\tRetryOn               []string\n\tRetryOnStatusCodes    []uint32\n\tRetryOnConnectFailure bool\n}\n\ntype TimeoutFilter struct {\n\tRequestTimeout time.Duration\n\tIdleTimeout    time.Duration\n}\n\n// JWTFilter specifies the JWT configuration for a route\ntype JWTFilter struct {\n\tProviders []*APIGatewayJWTProvider `json:\",omitempty\"`\n}\n\n// HTTPRouteRule specifies the routing rules used to determine what upstream\n// service an HTTP request is routed to.\ntype HTTPRouteRule struct {\n\t// Filters is a list of HTTP-based filters used to modify a request prior\n\t// to routing it to the upstream service\n\tFilters HTTPFilters\n\t// ResponseFilters is a list of HTTP-based filters used to modify a response\n\t// returned by the upstream service\n\tResponseFilters HTTPResponseFilters\n\t// Matches specified the matching criteria used in the routing table. If a\n\t// request matches the given HTTPMatch configuration, then traffic is routed\n\t// to services specified in the Services field.\n\tMatches []HTTPMatch\n\t// Services is a list of HTTP-based services to route to if the request matches\n\t// the rules specified in the Matches field.\n\tServices []HTTPService\n}\n\n// HTTPService is a service reference for HTTP-based routing rules\ntype HTTPService struct {\n\tName string\n\t// Weight is an arbitrary integer used in calculating how much\n\t// traffic should be sent to the given service.\n\tWeight int\n\n\t// Filters is a list of HTTP-based filters used to modify a request prior\n\t// to routing it to the upstream service\n\tFilters HTTPFilters\n\n\t// ResponseFilters is a list of HTTP-based filters used to modify the\n\t// response returned from the upstream service\n\tResponseFilters HTTPResponseFilters\n\n\t// Partition is the partition the config entry is associated with.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace is the namespace the config entry is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/config_entry_sameness_group.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\ntype SamenessGroupConfigEntry struct {\n\tKind               string\n\tName               string\n\tPartition          string `json:\",omitempty\"`\n\tDefaultForFailover bool   `json:\",omitempty\" alias:\"default_for_failover\"`\n\tIncludeLocal       bool   `json:\",omitempty\" alias:\"include_local\"`\n\tMembers            []SamenessGroupMember\n\tMeta               map[string]string `json:\",omitempty\"`\n\tCreateIndex        uint64\n\tModifyIndex        uint64\n}\n\ntype SamenessGroupMember struct {\n\tPartition string `json:\",omitempty\"`\n\tPeer      string `json:\",omitempty\"`\n}\n\nfunc (s *SamenessGroupConfigEntry) GetKind() string            { return s.Kind }\nfunc (s *SamenessGroupConfigEntry) GetName() string            { return s.Name }\nfunc (s *SamenessGroupConfigEntry) GetPartition() string       { return s.Partition }\nfunc (s *SamenessGroupConfigEntry) GetNamespace() string       { return \"\" }\nfunc (s *SamenessGroupConfigEntry) GetCreateIndex() uint64     { return s.CreateIndex }\nfunc (s *SamenessGroupConfigEntry) GetModifyIndex() uint64     { return s.ModifyIndex }\nfunc (s *SamenessGroupConfigEntry) GetMeta() map[string]string { return s.Meta }\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/config_entry_status.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"golang.org/x/exp/slices\"\n)\n\n// ResourceReference is a reference to a ConfigEntry\n// with an optional reference to a subsection of that ConfigEntry\n// that can be specified as SectionName\ntype ResourceReference struct {\n\t// Kind is the kind of ConfigEntry that this resource refers to.\n\tKind string\n\t// Name is the identifier for the ConfigEntry this resource refers to.\n\tName string\n\t// SectionName is a generic subresource identifier that specifies\n\t// a subset of the ConfigEntry to which this reference applies. Usage\n\t// of this field should be up to the controller that leverages it. If\n\t// unused, this should be blank.\n\tSectionName string\n\n\t// Partition is the partition the config entry is associated with.\n\t// Partitioning is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace is the namespace the config entry is associated with.\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n}\n\n// ConfigEntryStatus is used for propagating back asynchronously calculated\n// messages from control loops to a user\ntype ConfigEntryStatus struct {\n\t// Conditions is the set of condition objects associated with\n\t// a ConfigEntry status.\n\tConditions []Condition\n}\n\n// Condition is used for a single message and state associated\n// with an object. For example, a ConfigEntry that references\n// multiple other resources may have different statuses with\n// respect to each of those resources.\ntype Condition struct {\n\t// Type is a value from a bounded set of types that an object might have\n\tType string\n\t// Status is a value from a bounded set of statuses that an object might have\n\tStatus ConditionStatus\n\t// Reason is a value from a bounded set of reasons for a given status\n\tReason string\n\t// Message is a message that gives more detailed information about\n\t// why a Condition has a given status and reason\n\tMessage string\n\t// Resource is an optional reference to a resource for which this\n\t// condition applies\n\tResource *ResourceReference\n\t// LastTransitionTime is the time at which this Condition was created\n\tLastTransitionTime *time.Time\n}\n\ntype (\n\tConditionStatus string\n)\n\nconst (\n\tConditionStatusTrue    ConditionStatus = \"True\"\n\tConditionStatusFalse   ConditionStatus = \"False\"\n\tConditionStatusUnknown ConditionStatus = \"Unknown\"\n)\n\n// GatewayConditionType is a type of condition associated with a\n// Gateway. This type should be used with the GatewayStatus.Conditions\n// field.\ntype GatewayConditionType string\n\n// GatewayConditionReason defines the set of reasons that explain why a\n// particular Gateway condition type has been raised.\ntype GatewayConditionReason string\n\n// the following are directly from the k8s spec\nconst (\n\t// This condition is true when the controller managing the Gateway is\n\t// syntactically and semantically valid enough to produce some configuration\n\t// in the underlying data plane. This does not indicate whether or not the\n\t// configuration has been propagated to the data plane.\n\t//\n\t// Possible reasons for this condition to be True are:\n\t//\n\t// * \"Accepted\"\n\t//\n\t// Possible reasons for this condition to be False are:\n\t//\n\t// * InvalidCertificates\n\t//\n\tGatewayConditionAccepted GatewayConditionType = \"Accepted\"\n\n\t// This reason is used with the \"Accepted\" condition when the condition is\n\t// True.\n\tGatewayReasonAccepted GatewayConditionReason = \"Accepted\"\n\n\t// This reason is used with the \"Accepted\" condition when the gateway has multiple invalid\n\t// certificates and cannot bind to any routes\n\tGatewayReasonInvalidCertificates GatewayConditionReason = \"InvalidCertificates\"\n\n\t// This reason is used with the \"Accepted\" condition when the gateway has multiple invalid\n\t// JWT providers and cannot bind to any routes\n\tGatewayReasonInvalidJWTProviders GatewayConditionReason = \"InvalidJWTProviders\"\n\n\t// This condition indicates that the gateway was unable to resolve\n\t// conflicting specification requirements for this Listener. If a\n\t// Listener is conflicted, its network port should not be configured\n\t// on any network elements.\n\t//\n\t// Possible reasons for this condition to be true are:\n\t//\n\t// * \"RouteConflict\"\n\t//\n\t// Possible reasons for this condition to be False are:\n\t//\n\t// * \"NoConflict\"\n\t//\n\t// Controllers may raise this condition with other reasons,\n\t// but should prefer to use the reasons listed above to improve\n\t// interoperability.\n\tGatewayConditionConflicted GatewayConditionType = \"Conflicted\"\n\t// This reason is used with the \"Conflicted\" condition when the condition\n\t// is False.\n\tGatewayReasonNoConflict GatewayConditionReason = \"NoConflict\"\n\t// This reason is used with the \"Conflicted\" condition when the route is\n\t// in a conflicted state, such as when a TCPListener attempts to bind to two routes\n\tGatewayReasonRouteConflict GatewayConditionReason = \"RouteConflict\"\n\n\t// This condition indicates whether the controller was able to\n\t// resolve all the object references for the Gateway. When setting this\n\t// condition to False, a ResourceReference to the misconfigured Listener should\n\t// be provided.\n\t//\n\t// Possible reasons for this condition to be true are:\n\t//\n\t// * \"ResolvedRefs\"\n\t//\n\t// Possible reasons for this condition to be False are:\n\t//\n\t// * \"InvalidCertificateRef\"\n\t// * \"InvalidRouteKinds\"\n\t// * \"RefNotPermitted\"\n\t//\n\tGatewayConditionResolvedRefs GatewayConditionType = \"ResolvedRefs\"\n\n\t// This reason is used with the \"ResolvedRefs\" condition when the condition\n\t// is true.\n\tGatewayReasonResolvedRefs GatewayConditionReason = \"ResolvedRefs\"\n\n\t// This reason is used with the \"ResolvedRefs\" condition when a\n\t// Listener has a TLS configuration with at least one TLS CertificateRef\n\t// that is invalid or does not exist.\n\t// A CertificateRef is considered invalid when it refers to a nonexistent\n\t// or unsupported resource or kind, or when the data within that resource\n\t// is malformed.\n\t// This reason must be used only when the reference is allowed, either by\n\t// referencing an object in the same namespace as the Gateway, or when\n\t// a cross-namespace reference has been explicitly allowed by a ReferenceGrant.\n\t// If the reference is not allowed, the reason RefNotPermitted must be used\n\t// instead.\n\tGatewayListenerReasonInvalidCertificateRef GatewayConditionReason = \"InvalidCertificateRef\"\n\n\t// This reason is used with the \"ResolvedRefs\" condition when a\n\t// Listener has a JWT configuration with at least one JWTProvider\n\t// that is invalid or does not exist.\n\t// A JWTProvider is considered invalid when it refers to a nonexistent\n\t// or unsupported resource or kind, or when the data within that resource\n\t// is malformed.\n\tGatewayListenerReasonInvalidJWTProviderRef GatewayConditionReason = \"InvalidJWTProviderRef\"\n)\n\nvar validGatewayConditionReasonsMapping = map[GatewayConditionType]map[ConditionStatus][]GatewayConditionReason{\n\tGatewayConditionAccepted: {\n\t\tConditionStatusTrue: {\n\t\t\tGatewayReasonAccepted,\n\t\t},\n\t\tConditionStatusFalse: {\n\t\t\tGatewayReasonInvalidCertificates,\n\t\t\tGatewayReasonInvalidJWTProviders,\n\t\t},\n\t\tConditionStatusUnknown: {},\n\t},\n\tGatewayConditionConflicted: {\n\t\tConditionStatusTrue: {\n\t\t\tGatewayReasonRouteConflict,\n\t\t},\n\t\tConditionStatusFalse: {\n\t\t\tGatewayReasonNoConflict,\n\t\t},\n\t\tConditionStatusUnknown: {},\n\t},\n\tGatewayConditionResolvedRefs: {\n\t\tConditionStatusTrue: {\n\t\t\tGatewayReasonResolvedRefs,\n\t\t},\n\t\tConditionStatusFalse: {\n\t\t\tGatewayListenerReasonInvalidCertificateRef,\n\t\t\tGatewayListenerReasonInvalidJWTProviderRef,\n\t\t},\n\t\tConditionStatusUnknown: {},\n\t},\n}\n\nfunc ValidateGatewayConditionReason(name GatewayConditionType, status ConditionStatus, reason GatewayConditionReason) error {\n\tif err := checkConditionStatus(status); err != nil {\n\t\treturn err\n\t}\n\n\treasons, ok := validGatewayConditionReasonsMapping[name]\n\tif !ok {\n\t\treturn fmt.Errorf(\"unrecognized GatewayConditionType %q\", name)\n\t}\n\n\treasonsForStatus, ok := reasons[status]\n\tif !ok {\n\t\treturn fmt.Errorf(\"unrecognized ConditionStatus %q\", status)\n\t}\n\n\tif !slices.Contains(reasonsForStatus, reason) {\n\t\treturn fmt.Errorf(\"gateway condition reason %q not allowed for gateway condition type %q with status %q\", reason, name, status)\n\t}\n\treturn nil\n}\n\n// RouteConditionType is a type of condition for a route.\ntype RouteConditionType string\n\n// RouteConditionReason is a reason for a route condition.\ntype RouteConditionReason string\n\n// The following statuses are taken from the K8's Spec\n// With the exception of: \"RouteReasonInvalidDiscoveryChain\" and \"NoUpstreamServicesTargeted\"\nconst (\n\t// This condition indicates whether the route has been accepted or rejected\n\t// by a Gateway, and why.\n\t//\n\t// Possible reasons for this condition to be true are:\n\t//\n\t// * \"Accepted\"\n\t//\n\t// Possible reasons for this condition to be False are:\n\t//\n\t// * \"InvalidDiscoveryChain\"\n\t// * \"NoUpstreamServicesTargeted\"\n\t//\n\t//\n\t// Controllers may raise this condition with other reasons,\n\t// but should prefer to use the reasons listed above to improve\n\t// interoperability.\n\tRouteConditionAccepted RouteConditionType = \"Accepted\"\n\n\t// This reason is used with the \"Accepted\" condition when the Route has been\n\t// accepted by the Gateway.\n\tRouteReasonAccepted RouteConditionReason = \"Accepted\"\n\n\t// This reason is used with the \"Accepted\" condition when the route has an\n\t// invalid discovery chain, this includes conditions like the protocol being invalid\n\t// or the discovery chain failing to compile\n\tRouteReasonInvalidDiscoveryChain RouteConditionReason = \"InvalidDiscoveryChain\"\n\n\t// This reason is used with the \"Accepted\" condition when the route\n\tRouteReasonNoUpstreamServicesTargeted RouteConditionReason = \"NoUpstreamServicesTargeted\"\n)\n\n// the following statuses are custom to Consul\nconst (\n\t// This condition indicates whether the route was able to successfully bind the\n\t// Listener on the gateway\n\t// Possible reasons for this condition to be true are:\n\t//\n\t// * \"Bound\"\n\t//\n\t// Possible reasons for this condition to be false are:\n\t//\n\t// * \"FailedToBind\"\n\t// * \"GatewayNotFound\"\n\t//\n\tRouteConditionBound RouteConditionType = \"Bound\"\n\n\t// This reason is used with the \"Bound\" condition when the condition\n\t// is true\n\tRouteReasonBound RouteConditionReason = \"Bound\"\n\n\t// This reason is used with the \"Bound\" condition when the route failed\n\t// to bind to the gateway\n\tRouteReasonFailedToBind RouteConditionReason = \"FailedToBind\"\n\n\t// This reason is used with the \"Bound\" condition when the route fails\n\t// to find the gateway\n\tRouteReasonGatewayNotFound RouteConditionReason = \"GatewayNotFound\"\n\n\t// This reason is used with the \"Accepted\" condition when the route references non-existent\n\t// JWTProviders\n\tRouteReasonJWTProvidersNotFound RouteConditionReason = \"JWTProvidersNotFound\"\n)\n\nvar validRouteConditionReasonsMapping = map[RouteConditionType]map[ConditionStatus][]RouteConditionReason{\n\tRouteConditionAccepted: {\n\t\tConditionStatusTrue: {\n\t\t\tRouteReasonAccepted,\n\t\t},\n\t\tConditionStatusFalse: {\n\t\t\tRouteReasonInvalidDiscoveryChain,\n\t\t\tRouteReasonNoUpstreamServicesTargeted,\n\t\t},\n\t\tConditionStatusUnknown: {},\n\t},\n\tRouteConditionBound: {\n\t\tConditionStatusTrue: {\n\t\t\tRouteReasonBound,\n\t\t},\n\t\tConditionStatusFalse: {\n\t\t\tRouteReasonGatewayNotFound,\n\t\t\tRouteReasonFailedToBind,\n\t\t\tRouteReasonJWTProvidersNotFound,\n\t\t},\n\t\tConditionStatusUnknown: {},\n\t},\n}\n\nfunc ValidateRouteConditionReason(name RouteConditionType, status ConditionStatus, reason RouteConditionReason) error {\n\tif err := checkConditionStatus(status); err != nil {\n\t\treturn err\n\t}\n\n\treasons, ok := validRouteConditionReasonsMapping[name]\n\tif !ok {\n\t\treturn fmt.Errorf(\"unrecognized RouteConditionType %s\", name)\n\t}\n\n\treasonsForStatus, ok := reasons[status]\n\tif !ok {\n\t\treturn fmt.Errorf(\"unrecognized ConditionStatus %s\", name)\n\t}\n\n\tif !slices.Contains(reasonsForStatus, reason) {\n\t\treturn fmt.Errorf(\"route condition reason %s not allowed for route condition type %s with status %s\", reason, name, status)\n\t}\n\n\treturn nil\n}\n\nfunc checkConditionStatus(status ConditionStatus) error {\n\tswitch status {\n\tcase ConditionStatusTrue, ConditionStatusFalse, ConditionStatusUnknown:\n\t\treturn nil\n\tdefault:\n\t\treturn fmt.Errorf(\"unrecognized condition status: %q\", status)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/connect.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// TelemetryCollectorName is the service name for the Consul Telemetry Collector\nconst TelemetryCollectorName string = \"consul-telemetry-collector\"\n\n// Connect can be used to work with endpoints related to Connect, the\n// feature for securely connecting services within Consul.\ntype Connect struct {\n\tc *Client\n}\n\n// Connect returns a handle to the connect-related endpoints\nfunc (c *Client) Connect() *Connect {\n\treturn &Connect{c}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/connect_ca.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\n// CAConfig is the structure for the Connect CA configuration.\ntype CAConfig struct {\n\t// Provider is the CA provider implementation to use.\n\tProvider string\n\n\t// Configuration is arbitrary configuration for the provider. This\n\t// should only contain primitive values and containers (such as lists\n\t// and maps).\n\tConfig map[string]interface{}\n\n\t// State is read-only data that the provider might have persisted for use\n\t// after restart or leadership transition. For example this might include\n\t// UUIDs of resources it has created. Setting this when writing a\n\t// configuration is an error.\n\tState map[string]string\n\n\t// ForceWithoutCrossSigning indicates that the CA reconfiguration should go\n\t// ahead even if the current CA is unable to cross sign certificates. This\n\t// risks temporary connection failures during the rollout as new leafs will be\n\t// rejected by proxies that have not yet observed the new root cert but is the\n\t// only option if a CA that doesn't support cross signing needs to be\n\t// reconfigured or mirated away from.\n\tForceWithoutCrossSigning bool\n\n\tCreateIndex uint64\n\tModifyIndex uint64\n}\n\n// CommonCAProviderConfig is the common options available to all CA providers.\ntype CommonCAProviderConfig struct {\n\tLeafCertTTL      time.Duration\n\tRootCertTTL      time.Duration\n\tSkipValidate     bool\n\tCSRMaxPerSecond  float32\n\tCSRMaxConcurrent int\n}\n\n// ConsulCAProviderConfig is the config for the built-in Consul CA provider.\ntype ConsulCAProviderConfig struct {\n\tCommonCAProviderConfig `mapstructure:\",squash\"`\n\n\tPrivateKey          string\n\tRootCert            string\n\tIntermediateCertTTL time.Duration\n}\n\n// ParseConsulCAConfig takes a raw config map and returns a parsed\n// ConsulCAProviderConfig.\nfunc ParseConsulCAConfig(raw map[string]interface{}) (*ConsulCAProviderConfig, error) {\n\tvar config ConsulCAProviderConfig\n\tdecodeConf := &mapstructure.DecoderConfig{\n\t\tDecodeHook:       mapstructure.StringToTimeDurationHookFunc(),\n\t\tResult:           &config,\n\t\tWeaklyTypedInput: true,\n\t}\n\n\tdecoder, err := mapstructure.NewDecoder(decodeConf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := decoder.Decode(raw); err != nil {\n\t\treturn nil, fmt.Errorf(\"error decoding config: %s\", err)\n\t}\n\n\treturn &config, nil\n}\n\n// CARootList is the structure for the results of listing roots.\ntype CARootList struct {\n\tActiveRootID string\n\tTrustDomain  string\n\tRoots        []*CARoot\n}\n\n// CARoot represents a root CA certificate that is trusted.\ntype CARoot struct {\n\t// ID is a globally unique ID (UUID) representing this CA root.\n\tID string\n\n\t// Name is a human-friendly name for this CA root. This value is\n\t// opaque to Consul and is not used for anything internally.\n\tName string\n\n\t// RootCertPEM is the PEM-encoded public certificate.\n\tRootCertPEM string `json:\"RootCert\"`\n\n\t// Active is true if this is the current active CA. This must only\n\t// be true for exactly one CA. For any method that modifies roots in the\n\t// state store, tests should be written to verify that multiple roots\n\t// cannot be active.\n\tActive bool\n\n\tCreateIndex uint64\n\tModifyIndex uint64\n}\n\n// LeafCert is a certificate that has been issued by a Connect CA.\ntype LeafCert struct {\n\t// SerialNumber is the unique serial number for this certificate.\n\t// This is encoded in standard hex separated by :.\n\tSerialNumber string\n\n\t// CertPEM and PrivateKeyPEM are the PEM-encoded certificate and private\n\t// key for that cert, respectively. This should not be stored in the\n\t// state store, but is present in the sign API response.\n\tCertPEM       string `json:\",omitempty\"`\n\tPrivateKeyPEM string `json:\",omitempty\"`\n\n\t// Service is the name of the service for which the cert was issued.\n\t// ServiceURI is the cert URI value.\n\tService    string\n\tServiceURI string\n\n\t// ValidAfter and ValidBefore are the validity periods for the\n\t// certificate.\n\tValidAfter  time.Time\n\tValidBefore time.Time\n\n\tCreateIndex uint64\n\tModifyIndex uint64\n}\n\n// CARoots queries the list of available roots.\nfunc (h *Connect) CARoots(q *QueryOptions) (*CARootList, *QueryMeta, error) {\n\tr := h.c.newRequest(\"GET\", \"/v1/connect/ca/roots\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out CARootList\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn &out, qm, nil\n}\n\n// CAGetConfig returns the current CA configuration.\nfunc (h *Connect) CAGetConfig(q *QueryOptions) (*CAConfig, *QueryMeta, error) {\n\tr := h.c.newRequest(\"GET\", \"/v1/connect/ca/configuration\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out CAConfig\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn &out, qm, nil\n}\n\n// CASetConfig sets the current CA configuration.\nfunc (h *Connect) CASetConfig(conf *CAConfig, q *WriteOptions) (*WriteMeta, error) {\n\tr := h.c.newRequest(\"PUT\", \"/v1/connect/ca/configuration\")\n\tr.setWriteOptions(q)\n\tr.obj = conf\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\treturn wm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/connect_intention.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"time\"\n)\n\n// Intention defines an intention for the Connect Service Graph. This defines\n// the allowed or denied behavior of a connection between two services using\n// Connect.\ntype Intention struct {\n\t// ID is the UUID-based ID for the intention, always generated by Consul.\n\tID string `json:\",omitempty\"`\n\n\t// Description is a human-friendly description of this intention.\n\t// It is opaque to Consul and is only stored and transferred in API\n\t// requests.\n\tDescription string `json:\",omitempty\"`\n\n\t// SourceNS, SourceName are the namespace and name, respectively, of\n\t// the source service. Either of these may be the wildcard \"*\", but only\n\t// the full value can be a wildcard. Partial wildcards are not allowed.\n\t// The source may also be a non-Consul service, as specified by SourceType.\n\t//\n\t// DestinationNS, DestinationName is the same, but for the destination\n\t// service. The same rules apply. The destination is always a Consul\n\t// service.\n\tSourceNS, SourceName           string\n\tDestinationNS, DestinationName string\n\n\t// SourcePartition and DestinationPartition cannot be wildcards \"*\" and\n\t// are not compatible with legacy intentions.\n\tSourcePartition      string `json:\",omitempty\"`\n\tDestinationPartition string `json:\",omitempty\"`\n\n\t// SourcePeer cannot be a wildcard \"*\" and is not compatible with legacy\n\t// intentions. Cannot be used with SourcePartition, as both represent the\n\t// same level of tenancy (partition is local to cluster, peer is remote).\n\tSourcePeer string `json:\",omitempty\"`\n\n\t// SourceSamenessGroup cannot be wildcards \"*\" and\n\t// is not compatible with legacy intentions.\n\tSourceSamenessGroup string `json:\",omitempty\"`\n\n\t// SourceType is the type of the value for the source.\n\tSourceType IntentionSourceType\n\n\t// Action is whether this is an allowlist or denylist intention.\n\tAction IntentionAction `json:\",omitempty\"`\n\n\t// Permissions is the list of additional L7 attributes that extend the\n\t// intention definition.\n\t//\n\t// NOTE: This field is not editable unless editing the underlying\n\t// service-intentions config entry directly.\n\tPermissions []*IntentionPermission `json:\",omitempty\"`\n\n\t// DefaultAddr is not used.\n\t// Deprecated: DefaultAddr is not used and may be removed in a future version.\n\tDefaultAddr string `json:\",omitempty\"`\n\t// DefaultPort is not used.\n\t// Deprecated: DefaultPort is not used and may be removed in a future version.\n\tDefaultPort int `json:\",omitempty\"`\n\n\t// Meta is arbitrary metadata associated with the intention. This is\n\t// opaque to Consul but is served in API responses.\n\tMeta map[string]string `json:\",omitempty\"`\n\n\t// Precedence is the order that the intention will be applied, with\n\t// larger numbers being applied first. This is a read-only field, on\n\t// any intention update it is updated.\n\tPrecedence int\n\n\t// CreatedAt and UpdatedAt keep track of when this record was created\n\t// or modified.\n\tCreatedAt, UpdatedAt time.Time\n\n\t// Hash of the contents of the intention\n\t//\n\t// This is needed mainly for replication purposes. When replicating from\n\t// one DC to another keeping the content Hash will allow us to detect\n\t// content changes more efficiently than checking every single field\n\tHash []byte `json:\",omitempty\"`\n\n\tCreateIndex uint64\n\tModifyIndex uint64\n}\n\n// String returns human-friendly output describing ths intention.\nfunc (i *Intention) String() string {\n\tvar detail string\n\tswitch n := len(i.Permissions); n {\n\tcase 0:\n\t\tdetail = string(i.Action)\n\tcase 1:\n\t\tdetail = \"1 permission\"\n\tdefault:\n\t\tdetail = fmt.Sprintf(\"%d permissions\", len(i.Permissions))\n\t}\n\n\treturn fmt.Sprintf(\"%s => %s (%s)\",\n\t\ti.SourceString(),\n\t\ti.DestinationString(),\n\t\tdetail)\n}\n\n// SourceString returns the namespace/name format for the source, or\n// just \"name\" if the namespace is the default namespace.\nfunc (i *Intention) SourceString() string {\n\treturn i.partString(i.SourceNS, i.SourceName)\n}\n\n// DestinationString returns the namespace/name format for the source, or\n// just \"name\" if the namespace is the default namespace.\nfunc (i *Intention) DestinationString() string {\n\treturn i.partString(i.DestinationNS, i.DestinationName)\n}\n\nfunc (i *Intention) partString(ns, n string) string {\n\t// For now we omit the default namespace from the output. In the future\n\t// we might want to look at this and show this in a multi-namespace world.\n\tif ns != \"\" && ns != IntentionDefaultNamespace {\n\t\tn = ns + \"/\" + n\n\t}\n\n\treturn n\n}\n\n// IntentionDefaultNamespace is the default namespace value.\nconst IntentionDefaultNamespace = \"default\"\n\n// IntentionAction is the action that the intention represents. This\n// can be \"allow\" or \"deny\" to allowlist or denylist intentions.\ntype IntentionAction string\n\nconst (\n\tIntentionActionAllow IntentionAction = \"allow\"\n\tIntentionActionDeny  IntentionAction = \"deny\"\n)\n\n// IntentionSourceType is the type of the source within an intention.\ntype IntentionSourceType string\n\nconst (\n\t// IntentionSourceConsul is a service within the Consul catalog.\n\tIntentionSourceConsul IntentionSourceType = \"consul\"\n)\n\n// IntentionMatch are the arguments for the intention match API.\ntype IntentionMatch struct {\n\tBy    IntentionMatchType\n\tNames []string\n}\n\n// IntentionMatchType is the target for a match request. For example,\n// matching by source will look for all intentions that match the given\n// source value.\ntype IntentionMatchType string\n\nconst (\n\tIntentionMatchSource      IntentionMatchType = \"source\"\n\tIntentionMatchDestination IntentionMatchType = \"destination\"\n)\n\n// IntentionCheck are the arguments for the intention check API. For\n// more documentation see the IntentionCheck function.\ntype IntentionCheck struct {\n\t// Source and Destination are the source and destination values to\n\t// check. The destination is always a Consul service, but the source\n\t// may be other values as defined by the SourceType.\n\tSource, Destination string\n\n\t// SourceType is the type of the value for the source.\n\tSourceType IntentionSourceType\n}\n\n// Intentions returns the list of intentions.\nfunc (h *Connect) Intentions(q *QueryOptions) ([]*Intention, *QueryMeta, error) {\n\tr := h.c.newRequest(\"GET\", \"/v1/connect/intentions\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out []*Intention\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// IntentionGetExact retrieves a single intention by its unique name instead of\n// its ID.\nfunc (h *Connect) IntentionGetExact(source, destination string, q *QueryOptions) (*Intention, *QueryMeta, error) {\n\tr := h.c.newRequest(\"GET\", \"/v1/connect/intentions/exact\")\n\tr.setQueryOptions(q)\n\tr.params.Set(\"source\", source)\n\tr.params.Set(\"destination\", destination)\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif resp.StatusCode == 404 {\n\t\treturn nil, qm, nil\n\t} else if resp.StatusCode != 200 {\n\t\tvar buf bytes.Buffer\n\t\tio.Copy(&buf, resp.Body)\n\t\treturn nil, nil, fmt.Errorf(\n\t\t\t\"Unexpected response %d: %s\", resp.StatusCode, buf.String())\n\t}\n\n\tvar out Intention\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn &out, qm, nil\n}\n\n// IntentionGet retrieves a single intention.\n//\n// Deprecated: use IntentionGetExact instead\nfunc (h *Connect) IntentionGet(id string, q *QueryOptions) (*Intention, *QueryMeta, error) {\n\tr := h.c.newRequest(\"GET\", \"/v1/connect/intentions/\"+id)\n\tr.setQueryOptions(q)\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif resp.StatusCode == 404 {\n\t\treturn nil, qm, nil\n\t} else if resp.StatusCode != 200 {\n\t\tvar buf bytes.Buffer\n\t\tio.Copy(&buf, resp.Body)\n\t\treturn nil, nil, fmt.Errorf(\n\t\t\t\"Unexpected response %d: %s\", resp.StatusCode, buf.String())\n\t}\n\n\tvar out Intention\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn &out, qm, nil\n}\n\n// IntentionDeleteExact deletes a single intention by its unique name instead of its ID.\nfunc (h *Connect) IntentionDeleteExact(source, destination string, q *WriteOptions) (*WriteMeta, error) {\n\tr := h.c.newRequest(\"DELETE\", \"/v1/connect/intentions/exact\")\n\tr.setWriteOptions(q)\n\tr.params.Set(\"source\", source)\n\tr.params.Set(\"destination\", destination)\n\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\tqm := &WriteMeta{}\n\tqm.RequestTime = rtt\n\n\treturn qm, nil\n}\n\n// IntentionDelete deletes a single intention.\n//\n// Deprecated: use IntentionDeleteExact instead\nfunc (h *Connect) IntentionDelete(id string, q *WriteOptions) (*WriteMeta, error) {\n\tr := h.c.newRequest(\"DELETE\", \"/v1/connect/intentions/\"+id)\n\tr.setWriteOptions(q)\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\tqm := &WriteMeta{}\n\tqm.RequestTime = rtt\n\n\treturn qm, nil\n}\n\n// IntentionMatch returns the list of intentions that match a given source\n// or destination. The returned intentions are ordered by precedence where\n// result[0] is the highest precedence (if that matches, then that rule overrides\n// all other rules).\n//\n// Matching can be done for multiple names at the same time. The resulting\n// map is keyed by the given names. Casing is preserved.\nfunc (h *Connect) IntentionMatch(args *IntentionMatch, q *QueryOptions) (map[string][]*Intention, *QueryMeta, error) {\n\tr := h.c.newRequest(\"GET\", \"/v1/connect/intentions/match\")\n\tr.setQueryOptions(q)\n\tr.params.Set(\"by\", string(args.By))\n\tfor _, name := range args.Names {\n\t\tr.params.Add(\"name\", name)\n\t}\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out map[string][]*Intention\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// IntentionCheck returns whether a given source/destination would be allowed\n// or not given the current set of intentions and the configuration of Consul.\nfunc (h *Connect) IntentionCheck(args *IntentionCheck, q *QueryOptions) (bool, *QueryMeta, error) {\n\tr := h.c.newRequest(\"GET\", \"/v1/connect/intentions/check\")\n\tr.setQueryOptions(q)\n\tr.params.Set(\"source\", args.Source)\n\tr.params.Set(\"destination\", args.Destination)\n\tif args.SourceType != \"\" {\n\t\tr.params.Set(\"source-type\", string(args.SourceType))\n\t}\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn false, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn false, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out struct{ Allowed bool }\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn false, nil, err\n\t}\n\treturn out.Allowed, qm, nil\n}\n\n// IntentionUpsert will update an existing intention. The Source & Destination parameters\n// in the structure must be non-empty. The ID must be empty.\nfunc (c *Connect) IntentionUpsert(ixn *Intention, q *WriteOptions) (*WriteMeta, error) {\n\tr := c.c.newRequest(\"PUT\", \"/v1/connect/intentions/exact\")\n\tr.setWriteOptions(q)\n\tr.params.Set(\"source\", maybePrefixNamespaceAndPartition(ixn.SourcePartition, ixn.SourceNS, ixn.SourceName))\n\tr.params.Set(\"destination\", maybePrefixNamespaceAndPartition(ixn.DestinationPartition, ixn.DestinationNS, ixn.DestinationName))\n\tr.obj = ixn\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\treturn wm, nil\n}\n\nfunc maybePrefixNamespaceAndPartition(part, ns, name string) string {\n\tswitch {\n\tcase part == \"\" && ns == \"\":\n\t\treturn name\n\tcase part == \"\" && ns != \"\":\n\t\treturn ns + \"/\" + name\n\tcase part != \"\" && ns == \"\":\n\t\treturn part + \"/\" + IntentionDefaultNamespace + \"/\" + name\n\tdefault:\n\t\treturn part + \"/\" + ns + \"/\" + name\n\t}\n}\n\n// IntentionCreate will create a new intention. The ID in the given\n// structure must be empty and a generate ID will be returned on\n// success.\n//\n// Deprecated: use IntentionUpsert instead\nfunc (c *Connect) IntentionCreate(ixn *Intention, q *WriteOptions) (string, *WriteMeta, error) {\n\tr := c.c.newRequest(\"POST\", \"/v1/connect/intentions\")\n\tr.setWriteOptions(q)\n\tr.obj = ixn\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\n\tvar out struct{ ID string }\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\treturn out.ID, wm, nil\n}\n\n// IntentionUpdate will update an existing intention. The ID in the given\n// structure must be non-empty.\n//\n// Deprecated: use IntentionUpsert instead\nfunc (c *Connect) IntentionUpdate(ixn *Intention, q *WriteOptions) (*WriteMeta, error) {\n\tr := c.c.newRequest(\"PUT\", \"/v1/connect/intentions/\"+ixn.ID)\n\tr.setWriteOptions(q)\n\tr.obj = ixn\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\treturn wm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/coordinate.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"github.com/hashicorp/serf/coordinate\"\n)\n\n// CoordinateEntry represents a node and its associated network coordinate.\ntype CoordinateEntry struct {\n\tNode      string\n\tSegment   string\n\tPartition string `json:\",omitempty\"`\n\tCoord     *coordinate.Coordinate\n}\n\n// CoordinateDatacenterMap has the coordinates for servers in a given datacenter\n// and area. Network coordinates are only compatible within the same area.\ntype CoordinateDatacenterMap struct {\n\tDatacenter  string\n\tAreaID      string\n\tCoordinates []CoordinateEntry\n}\n\n// Coordinate can be used to query the coordinate endpoints\ntype Coordinate struct {\n\tc *Client\n}\n\n// Coordinate returns a handle to the coordinate endpoints\nfunc (c *Client) Coordinate() *Coordinate {\n\treturn &Coordinate{c}\n}\n\n// Datacenters is used to return the coordinates of all the servers in the WAN\n// pool.\nfunc (c *Coordinate) Datacenters() ([]*CoordinateDatacenterMap, error) {\n\tr := c.c.newRequest(\"GET\", \"/v1/coordinate/datacenters\")\n\t_, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar out []*CoordinateDatacenterMap\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// Nodes is used to return the coordinates of all the nodes in the LAN pool.\nfunc (c *Coordinate) Nodes(q *QueryOptions) ([]*CoordinateEntry, *QueryMeta, error) {\n\tr := c.c.newRequest(\"GET\", \"/v1/coordinate/nodes\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out []*CoordinateEntry\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// Update inserts or updates the LAN coordinate of a node.\nfunc (c *Coordinate) Update(coord *CoordinateEntry, q *WriteOptions) (*WriteMeta, error) {\n\tr := c.c.newRequest(\"PUT\", \"/v1/coordinate/update\")\n\tr.setWriteOptions(q)\n\tr.obj = coord\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\n\treturn wm, nil\n}\n\n// Node is used to return the coordinates of a single node in the LAN pool.\nfunc (c *Coordinate) Node(node string, q *QueryOptions) ([]*CoordinateEntry, *QueryMeta, error) {\n\tr := c.c.newRequest(\"GET\", \"/v1/coordinate/node/\"+node)\n\tr.setQueryOptions(q)\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out []*CoordinateEntry\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/debug.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n)\n\n// Debug can be used to query the /debug/pprof endpoints to gather\n// profiling information about the target agent.Debug\n//\n// The agent must have enable_debug set to true for profiling to be enabled\n// and for these endpoints to function.\ntype Debug struct {\n\tc *Client\n}\n\n// Debug returns a handle that exposes the internal debug endpoints.\nfunc (c *Client) Debug() *Debug {\n\treturn &Debug{c}\n}\n\n// Heap returns a pprof heap dump\nfunc (d *Debug) Heap() ([]byte, error) {\n\tr := d.c.newRequest(\"GET\", \"/debug/pprof/heap\")\n\t_, resp, err := d.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error making request: %s\", err)\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// We return a raw response because we're just passing through a response\n\t// from the pprof handlers\n\tbody, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error decoding body: %s\", err)\n\t}\n\n\treturn body, nil\n}\n\n// Profile returns a pprof CPU profile for the specified number of seconds\nfunc (d *Debug) Profile(seconds int) ([]byte, error) {\n\tr := d.c.newRequest(\"GET\", \"/debug/pprof/profile\")\n\n\t// Capture a profile for the specified number of seconds\n\tr.params.Set(\"seconds\", strconv.Itoa(seconds))\n\n\t_, resp, err := d.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error making request: %s\", err)\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// We return a raw response because we're just passing through a response\n\t// from the pprof handlers\n\tbody, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error decoding body: %s\", err)\n\t}\n\n\treturn body, nil\n}\n\n// PProf returns a pprof profile for the specified number of seconds. The caller\n// is responsible for closing the returned io.ReadCloser once all bytes are read.\nfunc (d *Debug) PProf(ctx context.Context, name string, seconds int) (io.ReadCloser, error) {\n\tr := d.c.newRequest(\"GET\", \"/debug/pprof/\"+name)\n\tr.ctx = ctx\n\n\t// Capture a profile for the specified number of seconds\n\tr.params.Set(\"seconds\", strconv.Itoa(seconds))\n\n\t_, resp, err := d.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error making request: %s\", err)\n\t}\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\treturn resp.Body, nil\n}\n\n// Trace returns an execution trace\nfunc (d *Debug) Trace(seconds int) ([]byte, error) {\n\tr := d.c.newRequest(\"GET\", \"/debug/pprof/trace\")\n\n\t// Capture a trace for the specified number of seconds\n\tr.params.Set(\"seconds\", strconv.Itoa(seconds))\n\n\t_, resp, err := d.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error making request: %s\", err)\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// We return a raw response because we're just passing through a response\n\t// from the pprof handlers\n\tbody, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error decoding body: %s\", err)\n\t}\n\n\treturn body, nil\n}\n\n// Goroutine returns a pprof goroutine profile\nfunc (d *Debug) Goroutine() ([]byte, error) {\n\tr := d.c.newRequest(\"GET\", \"/debug/pprof/goroutine\")\n\n\t_, resp, err := d.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error making request: %s\", err)\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// We return a raw response because we're just passing through a response\n\t// from the pprof handlers\n\tbody, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error decoding body: %s\", err)\n\t}\n\n\treturn body, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/discovery_chain.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"time\"\n)\n\n// DiscoveryChain can be used to query the discovery-chain endpoints\ntype DiscoveryChain struct {\n\tc *Client\n}\n\n// DiscoveryChain returns a handle to the discovery-chain endpoints\nfunc (c *Client) DiscoveryChain() *DiscoveryChain {\n\treturn &DiscoveryChain{c}\n}\n\nfunc (d *DiscoveryChain) Get(name string, opts *DiscoveryChainOptions, q *QueryOptions) (*DiscoveryChainResponse, *QueryMeta, error) {\n\tif name == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Name parameter must not be empty\")\n\t}\n\n\tmethod := \"GET\"\n\tif opts != nil && opts.requiresPOST() {\n\t\tmethod = \"POST\"\n\t}\n\n\tr := d.c.newRequest(method, fmt.Sprintf(\"/v1/discovery-chain/%s\", name))\n\tr.setQueryOptions(q)\n\n\tif opts != nil {\n\t\tif opts.EvaluateInDatacenter != \"\" {\n\t\t\tr.params.Set(\"compile-dc\", opts.EvaluateInDatacenter)\n\t\t}\n\t}\n\n\tif method == \"POST\" {\n\t\tr.obj = opts\n\t}\n\trtt, resp, err := d.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out DiscoveryChainResponse\n\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, qm, nil\n}\n\ntype DiscoveryChainOptions struct {\n\tEvaluateInDatacenter string `json:\"-\"`\n\n\t// OverrideMeshGateway allows for the mesh gateway setting to be overridden\n\t// for any resolver in the compiled chain.\n\tOverrideMeshGateway MeshGatewayConfig `json:\",omitempty\"`\n\n\t// OverrideProtocol allows for the final protocol for the chain to be\n\t// altered.\n\t//\n\t// - If the chain ordinarily would be TCP and an L7 protocol is passed here\n\t// the chain will not include Routers or Splitters.\n\t//\n\t// - If the chain ordinarily would be L7 and TCP is passed here the chain\n\t// will not include Routers or Splitters.\n\tOverrideProtocol string `json:\",omitempty\"`\n\n\t// OverrideConnectTimeout allows for the ConnectTimeout setting to be\n\t// overridden for any resolver in the compiled chain.\n\tOverrideConnectTimeout time.Duration `json:\",omitempty\"`\n}\n\nfunc (o *DiscoveryChainOptions) requiresPOST() bool {\n\tif o == nil {\n\t\treturn false\n\t}\n\treturn o.OverrideMeshGateway.Mode != \"\" ||\n\t\to.OverrideProtocol != \"\" ||\n\t\to.OverrideConnectTimeout != 0\n}\n\ntype DiscoveryChainResponse struct {\n\tChain *CompiledDiscoveryChain\n}\n\ntype CompiledDiscoveryChain struct {\n\tServiceName string\n\tNamespace   string\n\tDatacenter  string\n\n\t// CustomizationHash is a unique hash of any data that affects the\n\t// compilation of the discovery chain other than config entries or the\n\t// name/namespace/datacenter evaluation criteria.\n\t//\n\t// If set, this value should be used to prefix/suffix any generated load\n\t// balancer data plane objects to avoid sharing customized and\n\t// non-customized versions.\n\tCustomizationHash string\n\n\t// Default indicates if this discovery chain is based on no\n\t// service-resolver, service-splitter, or service-router config entries.\n\tDefault bool\n\n\t// Protocol is the overall protocol shared by everything in the chain.\n\tProtocol string\n\n\t// ServiceMeta is the metadata from the underlying service-defaults config\n\t// entry for the service named ServiceName.\n\tServiceMeta map[string]string\n\n\t// StartNode is the first key into the Nodes map that should be followed\n\t// when walking the discovery chain.\n\tStartNode string\n\n\t// Nodes contains all nodes available for traversal in the chain keyed by a\n\t// unique name.  You can walk this by starting with StartNode.\n\t//\n\t// NOTE: The names should be treated as opaque values and are only\n\t// guaranteed to be consistent within a single compilation.\n\tNodes map[string]*DiscoveryGraphNode\n\n\t// Targets is a list of all targets used in this chain.\n\t//\n\t// NOTE: The names should be treated as opaque values and are only\n\t// guaranteed to be consistent within a single compilation.\n\tTargets map[string]*DiscoveryTarget\n}\n\nconst (\n\tDiscoveryGraphNodeTypeRouter   = \"router\"\n\tDiscoveryGraphNodeTypeSplitter = \"splitter\"\n\tDiscoveryGraphNodeTypeResolver = \"resolver\"\n)\n\n// DiscoveryGraphNode is a single node in the compiled discovery chain.\ntype DiscoveryGraphNode struct {\n\tType string\n\tName string // this is NOT necessarily a service\n\n\t// fields for Type==router\n\tRoutes []*DiscoveryRoute\n\n\t// fields for Type==splitter\n\tSplits []*DiscoverySplit\n\n\t// fields for Type==resolver\n\tResolver *DiscoveryResolver\n\n\t// shared by Type==resolver || Type==splitter\n\tLoadBalancer *LoadBalancer `json:\",omitempty\"`\n}\n\n// compiled form of ServiceRoute\ntype DiscoveryRoute struct {\n\tDefinition *ServiceRoute\n\tNextNode   string\n}\n\n// compiled form of ServiceSplit\ntype DiscoverySplit struct {\n\tWeight   float32\n\tNextNode string\n}\n\n// compiled form of ServiceResolverConfigEntry\ntype DiscoveryResolver struct {\n\tDefault        bool\n\tConnectTimeout time.Duration\n\tTarget         string\n\tFailover       *DiscoveryFailover\n}\n\nfunc (r *DiscoveryResolver) MarshalJSON() ([]byte, error) {\n\ttype Alias DiscoveryResolver\n\texported := &struct {\n\t\tConnectTimeout string `json:\",omitempty\"`\n\t\t*Alias\n\t}{\n\t\tConnectTimeout: r.ConnectTimeout.String(),\n\t\tAlias:          (*Alias)(r),\n\t}\n\tif r.ConnectTimeout == 0 {\n\t\texported.ConnectTimeout = \"\"\n\t}\n\n\treturn json.Marshal(exported)\n}\n\nfunc (r *DiscoveryResolver) UnmarshalJSON(data []byte) error {\n\ttype Alias DiscoveryResolver\n\taux := &struct {\n\t\tConnectTimeout string\n\t\t*Alias\n\t}{\n\t\tAlias: (*Alias)(r),\n\t}\n\tif err := json.Unmarshal(data, &aux); err != nil {\n\t\treturn err\n\t}\n\tvar err error\n\tif aux.ConnectTimeout != \"\" {\n\t\tif r.ConnectTimeout, err = time.ParseDuration(aux.ConnectTimeout); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// compiled form of ServiceResolverFailover\ntype DiscoveryFailover struct {\n\tTargets []string\n\tPolicy  ServiceResolverFailoverPolicy `json:\",omitempty\"`\n}\n\n// DiscoveryTarget represents all of the inputs necessary to use a resolver\n// config entry to execute a catalog query to generate a list of service\n// instances during discovery.\ntype DiscoveryTarget struct {\n\tID string\n\n\tService       string\n\tServiceSubset string\n\tNamespace     string\n\tDatacenter    string\n\n\tMeshGateway    MeshGatewayConfig\n\tSubset         ServiceResolverSubset\n\tConnectTimeout time.Duration\n\tExternal       bool\n\tSNI            string\n\tName           string\n}\n\nfunc (t *DiscoveryTarget) MarshalJSON() ([]byte, error) {\n\ttype Alias DiscoveryTarget\n\texported := &struct {\n\t\tConnectTimeout string `json:\",omitempty\"`\n\t\t*Alias\n\t}{\n\t\tConnectTimeout: t.ConnectTimeout.String(),\n\t\tAlias:          (*Alias)(t),\n\t}\n\tif t.ConnectTimeout == 0 {\n\t\texported.ConnectTimeout = \"\"\n\t}\n\n\treturn json.Marshal(exported)\n}\n\nfunc (t *DiscoveryTarget) UnmarshalJSON(data []byte) error {\n\ttype Alias DiscoveryTarget\n\taux := &struct {\n\t\tConnectTimeout string\n\t\t*Alias\n\t}{\n\t\tAlias: (*Alias)(t),\n\t}\n\tif err := json.Unmarshal(data, &aux); err != nil {\n\t\treturn err\n\t}\n\tvar err error\n\tif aux.ConnectTimeout != \"\" {\n\t\tif t.ConnectTimeout, err = time.ParseDuration(aux.ConnectTimeout); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/event.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"bytes\"\n\t\"strconv\"\n)\n\n// Event can be used to query the Event endpoints\ntype Event struct {\n\tc *Client\n}\n\n// UserEvent represents an event that was fired by the user\ntype UserEvent struct {\n\tID            string\n\tName          string\n\tPayload       []byte\n\tNodeFilter    string\n\tServiceFilter string\n\tTagFilter     string\n\tVersion       int\n\tLTime         uint64\n}\n\n// Event returns a handle to the event endpoints\nfunc (c *Client) Event() *Event {\n\treturn &Event{c}\n}\n\n// Fire is used to fire a new user event. Only the Name, Payload and Filters\n// are respected. This returns the ID or an associated error. Cross DC requests\n// are supported.\nfunc (e *Event) Fire(params *UserEvent, q *WriteOptions) (string, *WriteMeta, error) {\n\tr := e.c.newRequest(\"PUT\", \"/v1/event/fire/\"+params.Name)\n\tr.setWriteOptions(q)\n\tif params.NodeFilter != \"\" {\n\t\tr.params.Set(\"node\", params.NodeFilter)\n\t}\n\tif params.ServiceFilter != \"\" {\n\t\tr.params.Set(\"service\", params.ServiceFilter)\n\t}\n\tif params.TagFilter != \"\" {\n\t\tr.params.Set(\"tag\", params.TagFilter)\n\t}\n\tif params.Payload != nil {\n\t\tr.body = bytes.NewReader(params.Payload)\n\t}\n\tr.header.Set(\"Content-Type\", \"application/octet-stream\")\n\n\trtt, resp, err := e.c.doRequest(r)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out UserEvent\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\treturn out.ID, wm, nil\n}\n\n// List is used to get the most recent events an agent has received.\n// This list can be optionally filtered by the name. This endpoint supports\n// quasi-blocking queries. The index is not monotonic, nor does it provide provide\n// LastContact or KnownLeader.\nfunc (e *Event) List(name string, q *QueryOptions) ([]*UserEvent, *QueryMeta, error) {\n\tr := e.c.newRequest(\"GET\", \"/v1/event/list\")\n\tr.setQueryOptions(q)\n\tif name != \"\" {\n\t\tr.params.Set(\"name\", name)\n\t}\n\trtt, resp, err := e.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar entries []*UserEvent\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n\n// IDToIndex is a bit of a hack. This simulates the index generation to\n// convert an event ID into a WaitIndex.\nfunc (e *Event) IDToIndex(uuid string) uint64 {\n\tlower := uuid[0:8] + uuid[9:13] + uuid[14:18]\n\tupper := uuid[19:23] + uuid[24:36]\n\tlowVal, err := strconv.ParseUint(lower, 16, 64)\n\tif err != nil {\n\t\tpanic(\"Failed to convert \" + lower)\n\t}\n\thighVal, err := strconv.ParseUint(upper, 16, 64)\n\tif err != nil {\n\t\tpanic(\"Failed to convert \" + upper)\n\t}\n\treturn lowVal ^ highVal\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/health.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n)\n\nconst (\n\t// HealthAny is special, and is used as a wild card,\n\t// not as a specific state.\n\tHealthAny      = \"any\"\n\tHealthPassing  = \"passing\"\n\tHealthWarning  = \"warning\"\n\tHealthCritical = \"critical\"\n\tHealthMaint    = \"maintenance\"\n)\n\nconst (\n\tserviceHealth = \"service\"\n\tconnectHealth = \"connect\"\n\tingressHealth = \"ingress\"\n)\n\nconst (\n\t// NodeMaint is the special key set by a node in maintenance mode.\n\tNodeMaint = \"_node_maintenance\"\n\n\t// ServiceMaintPrefix is the prefix for a service in maintenance mode.\n\tServiceMaintPrefix = \"_service_maintenance:\"\n)\n\n// HealthCheck is used to represent a single check\ntype HealthCheck struct {\n\tNode        string\n\tCheckID     string\n\tName        string\n\tStatus      string\n\tNotes       string\n\tOutput      string\n\tServiceID   string\n\tServiceName string\n\tServiceTags []string\n\tType        string\n\tNamespace   string `json:\",omitempty\"`\n\tPartition   string `json:\",omitempty\"`\n\tExposedPort int\n\tPeerName    string `json:\",omitempty\"`\n\n\tDefinition HealthCheckDefinition\n\n\tCreateIndex uint64\n\tModifyIndex uint64\n}\n\n// HealthCheckDefinition is used to store the details about\n// a health check's execution.\ntype HealthCheckDefinition struct {\n\tHTTP                                   string\n\tHeader                                 map[string][]string\n\tMethod                                 string\n\tBody                                   string\n\tTLSServerName                          string\n\tTLSSkipVerify                          bool\n\tTCP                                    string\n\tTCPUseTLS                              bool\n\tUDP                                    string\n\tGRPC                                   string\n\tOSService                              string\n\tGRPCUseTLS                             bool\n\tIntervalDuration                       time.Duration `json:\"-\"`\n\tTimeoutDuration                        time.Duration `json:\"-\"`\n\tDeregisterCriticalServiceAfterDuration time.Duration `json:\"-\"`\n\n\t// DEPRECATED in Consul 1.4.1. Use the above time.Duration fields instead.\n\tInterval                       ReadableDuration\n\tTimeout                        ReadableDuration\n\tDeregisterCriticalServiceAfter ReadableDuration\n}\n\nfunc (d *HealthCheckDefinition) MarshalJSON() ([]byte, error) {\n\ttype Alias HealthCheckDefinition\n\tout := &struct {\n\t\tInterval                       string\n\t\tTimeout                        string\n\t\tDeregisterCriticalServiceAfter string\n\t\t*Alias\n\t}{\n\t\tInterval:                       d.Interval.String(),\n\t\tTimeout:                        d.Timeout.String(),\n\t\tDeregisterCriticalServiceAfter: d.DeregisterCriticalServiceAfter.String(),\n\t\tAlias:                          (*Alias)(d),\n\t}\n\n\tif d.IntervalDuration != 0 {\n\t\tout.Interval = d.IntervalDuration.String()\n\t} else if d.Interval != 0 {\n\t\tout.Interval = d.Interval.String()\n\t}\n\tif d.TimeoutDuration != 0 {\n\t\tout.Timeout = d.TimeoutDuration.String()\n\t} else if d.Timeout != 0 {\n\t\tout.Timeout = d.Timeout.String()\n\t}\n\tif d.DeregisterCriticalServiceAfterDuration != 0 {\n\t\tout.DeregisterCriticalServiceAfter = d.DeregisterCriticalServiceAfterDuration.String()\n\t} else if d.DeregisterCriticalServiceAfter != 0 {\n\t\tout.DeregisterCriticalServiceAfter = d.DeregisterCriticalServiceAfter.String()\n\t}\n\n\treturn json.Marshal(out)\n}\n\nfunc (t *HealthCheckDefinition) UnmarshalJSON(data []byte) (err error) {\n\ttype Alias HealthCheckDefinition\n\taux := &struct {\n\t\tIntervalDuration                       interface{}\n\t\tTimeoutDuration                        interface{}\n\t\tDeregisterCriticalServiceAfterDuration interface{}\n\t\t*Alias\n\t}{\n\t\tAlias: (*Alias)(t),\n\t}\n\tif err := json.Unmarshal(data, &aux); err != nil {\n\t\treturn err\n\t}\n\n\t// Parse the values into both the time.Duration and old ReadableDuration fields.\n\n\tif aux.IntervalDuration == nil {\n\t\tt.IntervalDuration = time.Duration(t.Interval)\n\t} else {\n\t\tswitch v := aux.IntervalDuration.(type) {\n\t\tcase string:\n\t\t\tif t.IntervalDuration, err = time.ParseDuration(v); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase float64:\n\t\t\tt.IntervalDuration = time.Duration(v)\n\t\t}\n\t\tt.Interval = ReadableDuration(t.IntervalDuration)\n\t}\n\n\tif aux.TimeoutDuration == nil {\n\t\tt.TimeoutDuration = time.Duration(t.Timeout)\n\t} else {\n\t\tswitch v := aux.TimeoutDuration.(type) {\n\t\tcase string:\n\t\t\tif t.TimeoutDuration, err = time.ParseDuration(v); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase float64:\n\t\t\tt.TimeoutDuration = time.Duration(v)\n\t\t}\n\t\tt.Timeout = ReadableDuration(t.TimeoutDuration)\n\t}\n\tif aux.DeregisterCriticalServiceAfterDuration == nil {\n\t\tt.DeregisterCriticalServiceAfterDuration = time.Duration(t.DeregisterCriticalServiceAfter)\n\t} else {\n\t\tswitch v := aux.DeregisterCriticalServiceAfterDuration.(type) {\n\t\tcase string:\n\t\t\tif t.DeregisterCriticalServiceAfterDuration, err = time.ParseDuration(v); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase float64:\n\t\t\tt.DeregisterCriticalServiceAfterDuration = time.Duration(v)\n\t\t}\n\t\tt.DeregisterCriticalServiceAfter = ReadableDuration(t.DeregisterCriticalServiceAfterDuration)\n\t}\n\n\treturn nil\n}\n\n// HealthChecks is a collection of HealthCheck structs.\ntype HealthChecks []*HealthCheck\n\n// AggregatedStatus returns the \"best\" status for the list of health checks.\n// Because a given entry may have many service and node-level health checks\n// attached, this function determines the best representative of the status as\n// as single string using the following heuristic:\n//\n//\tmaintenance > critical > warning > passing\nfunc (c HealthChecks) AggregatedStatus() string {\n\tvar passing, warning, critical, maintenance bool\n\tfor _, check := range c {\n\t\tid := check.CheckID\n\t\tif id == NodeMaint || strings.HasPrefix(id, ServiceMaintPrefix) {\n\t\t\tmaintenance = true\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch check.Status {\n\t\tcase HealthPassing:\n\t\t\tpassing = true\n\t\tcase HealthWarning:\n\t\t\twarning = true\n\t\tcase HealthCritical:\n\t\t\tcritical = true\n\t\tdefault:\n\t\t\treturn \"\"\n\t\t}\n\t}\n\n\tswitch {\n\tcase maintenance:\n\t\treturn HealthMaint\n\tcase critical:\n\t\treturn HealthCritical\n\tcase warning:\n\t\treturn HealthWarning\n\tcase passing:\n\t\treturn HealthPassing\n\tdefault:\n\t\treturn HealthPassing\n\t}\n}\n\n// ServiceEntry is used for the health service endpoint\ntype ServiceEntry struct {\n\tNode    *Node\n\tService *AgentService\n\tChecks  HealthChecks\n}\n\n// Health can be used to query the Health endpoints\ntype Health struct {\n\tc *Client\n}\n\n// Health returns a handle to the health endpoints\nfunc (c *Client) Health() *Health {\n\treturn &Health{c}\n}\n\n// Node is used to query for checks belonging to a given node\nfunc (h *Health) Node(node string, q *QueryOptions) (HealthChecks, *QueryMeta, error) {\n\tr := h.c.newRequest(\"GET\", \"/v1/health/node/\"+node)\n\tr.setQueryOptions(q)\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out HealthChecks\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// Checks is used to return the checks associated with a service\nfunc (h *Health) Checks(service string, q *QueryOptions) (HealthChecks, *QueryMeta, error) {\n\tr := h.c.newRequest(\"GET\", \"/v1/health/checks/\"+service)\n\tr.setQueryOptions(q)\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out HealthChecks\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// Service is used to query health information along with service info\n// for a given service. It can optionally do server-side filtering on a tag\n// or nodes with passing health checks only.\nfunc (h *Health) Service(service, tag string, passingOnly bool, q *QueryOptions) ([]*ServiceEntry, *QueryMeta, error) {\n\tvar tags []string\n\tif tag != \"\" {\n\t\ttags = []string{tag}\n\t}\n\treturn h.service(service, tags, passingOnly, q, serviceHealth)\n}\n\nfunc (h *Health) ServiceMultipleTags(service string, tags []string, passingOnly bool, q *QueryOptions) ([]*ServiceEntry, *QueryMeta, error) {\n\treturn h.service(service, tags, passingOnly, q, serviceHealth)\n}\n\n// Connect is equivalent to Service except that it will only return services\n// which are Connect-enabled and will returns the connection address for Connect\n// client's to use which may be a proxy in front of the named service. If\n// passingOnly is true only instances where both the service and any proxy are\n// healthy will be returned.\nfunc (h *Health) Connect(service, tag string, passingOnly bool, q *QueryOptions) ([]*ServiceEntry, *QueryMeta, error) {\n\tvar tags []string\n\tif tag != \"\" {\n\t\ttags = []string{tag}\n\t}\n\treturn h.service(service, tags, passingOnly, q, connectHealth)\n}\n\nfunc (h *Health) ConnectMultipleTags(service string, tags []string, passingOnly bool, q *QueryOptions) ([]*ServiceEntry, *QueryMeta, error) {\n\treturn h.service(service, tags, passingOnly, q, connectHealth)\n}\n\n// Ingress is equivalent to Connect except that it will only return associated\n// ingress gateways for the requested service.\nfunc (h *Health) Ingress(service string, passingOnly bool, q *QueryOptions) ([]*ServiceEntry, *QueryMeta, error) {\n\tvar tags []string\n\treturn h.service(service, tags, passingOnly, q, ingressHealth)\n}\n\nfunc (h *Health) service(service string, tags []string, passingOnly bool, q *QueryOptions, healthType string) ([]*ServiceEntry, *QueryMeta, error) {\n\tvar path string\n\tswitch healthType {\n\tcase connectHealth:\n\t\tpath = \"/v1/health/connect/\" + service\n\tcase ingressHealth:\n\t\tpath = \"/v1/health/ingress/\" + service\n\tdefault:\n\t\tpath = \"/v1/health/service/\" + service\n\t}\n\n\tr := h.c.newRequest(\"GET\", path)\n\tr.setQueryOptions(q)\n\tif len(tags) > 0 {\n\t\tfor _, tag := range tags {\n\t\t\tr.params.Add(\"tag\", tag)\n\t\t}\n\t}\n\tif passingOnly {\n\t\tr.params.Set(HealthPassing, \"1\")\n\t}\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out []*ServiceEntry\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// State is used to retrieve all the checks in a given state.\n// The wildcard \"any\" state can also be used for all checks.\nfunc (h *Health) State(state string, q *QueryOptions) (HealthChecks, *QueryMeta, error) {\n\tswitch state {\n\tcase HealthAny:\n\tcase HealthWarning:\n\tcase HealthCritical:\n\tcase HealthPassing:\n\tdefault:\n\t\treturn nil, nil, fmt.Errorf(\"Unsupported state: %v\", state)\n\t}\n\tr := h.c.newRequest(\"GET\", \"/v1/health/state/\"+state)\n\tr.setQueryOptions(q)\n\trtt, resp, err := h.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out HealthChecks\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/internal.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport \"context\"\n\n// Internal can be used to query endpoints that are intended for\n// Hashicorp internal-use only.\ntype Internal struct {\n\tc *Client\n}\n\n// Internal returns a handle to endpoints that are for internal\n// Hashicorp usage only. There is not guarantee that these will\n// be backwards-compatible or supported, so usage of these is\n// not encouraged.\nfunc (c *Client) Internal() *Internal {\n\treturn &Internal{c}\n}\n\ntype AssignServiceManualVIPsRequest struct {\n\tService    string\n\tManualVIPs []string\n}\n\ntype AssignServiceManualVIPsResponse struct {\n\tServiceFound   bool `json:\"Found\"`\n\tUnassignedFrom []PeeredServiceName\n}\n\ntype PeeredServiceName struct {\n\tServiceName CompoundServiceName\n\tPeer        string\n}\n\nfunc (i *Internal) AssignServiceVirtualIP(\n\tctx context.Context,\n\tservice string,\n\tmanualVIPs []string,\n\two *WriteOptions,\n) (*AssignServiceManualVIPsResponse, *QueryMeta, error) {\n\treq := i.c.newRequest(\"PUT\", \"/v1/internal/service-virtual-ip\")\n\treq.setWriteOptions(wo)\n\treq.ctx = ctx\n\treq.obj = AssignServiceManualVIPsRequest{\n\t\tService:    service,\n\t\tManualVIPs: manualVIPs,\n\t}\n\trtt, resp, err := i.c.doRequest(req)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{RequestTime: rtt}\n\tparseQueryMeta(resp, qm)\n\n\tvar out AssignServiceManualVIPsResponse\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn &out, qm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/kv.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// KVPair is used to represent a single K/V entry\ntype KVPair struct {\n\t// Key is the name of the key. It is also part of the URL path when accessed\n\t// via the API.\n\tKey string\n\n\t// CreateIndex holds the index corresponding the creation of this KVPair. This\n\t// is a read-only field.\n\tCreateIndex uint64\n\n\t// ModifyIndex is used for the Check-And-Set operations and can also be fed\n\t// back into the WaitIndex of the QueryOptions in order to perform blocking\n\t// queries.\n\tModifyIndex uint64\n\n\t// LockIndex holds the index corresponding to a lock on this key, if any. This\n\t// is a read-only field.\n\tLockIndex uint64\n\n\t// Flags are any user-defined flags on the key. It is up to the implementer\n\t// to check these values, since Consul does not treat them specially.\n\tFlags uint64\n\n\t// Value is the value for the key. This can be any value, but it will be\n\t// base64 encoded upon transport.\n\tValue []byte\n\n\t// Session is a string representing the ID of the session. Any other\n\t// interactions with this key over the same session must specify the same\n\t// session ID.\n\tSession string\n\n\t// Namespace is the namespace the KVPair is associated with\n\t// Namespacing is a Consul Enterprise feature.\n\tNamespace string `json:\",omitempty\"`\n\n\t// Partition is the partition the KVPair is associated with\n\t// Admin Partition is a Consul Enterprise feature.\n\tPartition string `json:\",omitempty\"`\n}\n\n// KVPairs is a list of KVPair objects\ntype KVPairs []*KVPair\n\n// KV is used to manipulate the K/V API\ntype KV struct {\n\tc *Client\n}\n\n// KV is used to return a handle to the K/V apis\nfunc (c *Client) KV() *KV {\n\treturn &KV{c}\n}\n\n// Get is used to lookup a single key. The returned pointer\n// to the KVPair will be nil if the key does not exist.\nfunc (k *KV) Get(key string, q *QueryOptions) (*KVPair, *QueryMeta, error) {\n\tresp, qm, err := k.getInternal(key, nil, q)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif resp == nil {\n\t\treturn nil, qm, nil\n\t}\n\tdefer closeResponseBody(resp)\n\n\tvar entries []*KVPair\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif len(entries) > 0 {\n\t\treturn entries[0], qm, nil\n\t}\n\treturn nil, qm, nil\n}\n\n// List is used to lookup all keys under a prefix\nfunc (k *KV) List(prefix string, q *QueryOptions) (KVPairs, *QueryMeta, error) {\n\tresp, qm, err := k.getInternal(prefix, map[string]string{\"recurse\": \"\"}, q)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif resp == nil {\n\t\treturn nil, qm, nil\n\t}\n\tdefer closeResponseBody(resp)\n\n\tvar entries []*KVPair\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n\n// Keys is used to list all the keys under a prefix. Optionally,\n// a separator can be used to limit the responses.\nfunc (k *KV) Keys(prefix, separator string, q *QueryOptions) ([]string, *QueryMeta, error) {\n\tparams := map[string]string{\"keys\": \"\"}\n\tif separator != \"\" {\n\t\tparams[\"separator\"] = separator\n\t}\n\tresp, qm, err := k.getInternal(prefix, params, q)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif resp == nil {\n\t\treturn nil, qm, nil\n\t}\n\tdefer closeResponseBody(resp)\n\n\tvar entries []string\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n\nfunc (k *KV) getInternal(key string, params map[string]string, q *QueryOptions) (*http.Response, *QueryMeta, error) {\n\tr := k.c.newRequest(\"GET\", \"/v1/kv/\"+strings.TrimPrefix(key, \"/\"))\n\tr.setQueryOptions(q)\n\tfor param, val := range params {\n\t\tr.params.Set(param, val)\n\t}\n\trtt, resp, err := k.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\terr = requireHttpCodes(resp, 200, 404)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif resp.StatusCode == 404 {\n\t\tcloseResponseBody(resp)\n\t\treturn nil, qm, nil\n\t}\n\n\treturn resp, qm, nil\n}\n\n// Put is used to write a new value. Only the\n// Key, Flags and Value is respected.\nfunc (k *KV) Put(p *KVPair, q *WriteOptions) (*WriteMeta, error) {\n\tparams := make(map[string]string, 1)\n\tif p.Flags != 0 {\n\t\tparams[\"flags\"] = strconv.FormatUint(p.Flags, 10)\n\t}\n\t_, wm, err := k.put(p.Key, params, p.Value, q)\n\treturn wm, err\n}\n\n// CAS is used for a Check-And-Set operation. The Key,\n// ModifyIndex, Flags and Value are respected. Returns true\n// on success or false on failures.\nfunc (k *KV) CAS(p *KVPair, q *WriteOptions) (bool, *WriteMeta, error) {\n\tparams := make(map[string]string, 2)\n\tif p.Flags != 0 {\n\t\tparams[\"flags\"] = strconv.FormatUint(p.Flags, 10)\n\t}\n\tparams[\"cas\"] = strconv.FormatUint(p.ModifyIndex, 10)\n\treturn k.put(p.Key, params, p.Value, q)\n}\n\n// Acquire is used for a lock acquisition operation. The Key,\n// Flags, Value and Session are respected. Returns true\n// on success or false on failures.\nfunc (k *KV) Acquire(p *KVPair, q *WriteOptions) (bool, *WriteMeta, error) {\n\tparams := make(map[string]string, 2)\n\tif p.Flags != 0 {\n\t\tparams[\"flags\"] = strconv.FormatUint(p.Flags, 10)\n\t}\n\tparams[\"acquire\"] = p.Session\n\treturn k.put(p.Key, params, p.Value, q)\n}\n\n// Release is used for a lock release operation. The Key,\n// Flags, Value and Session are respected. Returns true\n// on success or false on failures.\nfunc (k *KV) Release(p *KVPair, q *WriteOptions) (bool, *WriteMeta, error) {\n\tparams := make(map[string]string, 2)\n\tif p.Flags != 0 {\n\t\tparams[\"flags\"] = strconv.FormatUint(p.Flags, 10)\n\t}\n\tparams[\"release\"] = p.Session\n\treturn k.put(p.Key, params, p.Value, q)\n}\n\nfunc (k *KV) put(key string, params map[string]string, body []byte, q *WriteOptions) (bool, *WriteMeta, error) {\n\tif len(key) > 0 && key[0] == '/' {\n\t\treturn false, nil, fmt.Errorf(\"Invalid key. Key must not begin with a '/': %s\", key)\n\t}\n\n\tr := k.c.newRequest(\"PUT\", \"/v1/kv/\"+key)\n\tr.setWriteOptions(q)\n\tfor param, val := range params {\n\t\tr.params.Set(param, val)\n\t}\n\tr.body = bytes.NewReader(body)\n\tr.header.Set(\"Content-Type\", \"application/octet-stream\")\n\trtt, resp, err := k.c.doRequest(r)\n\tif err != nil {\n\t\treturn false, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn false, nil, err\n\t}\n\n\tqm := &WriteMeta{}\n\tqm.RequestTime = rtt\n\n\tvar buf bytes.Buffer\n\tif _, err := io.Copy(&buf, resp.Body); err != nil {\n\t\treturn false, nil, fmt.Errorf(\"Failed to read response: %v\", err)\n\t}\n\tres := strings.Contains(buf.String(), \"true\")\n\treturn res, qm, nil\n}\n\n// Delete is used to delete a single key\nfunc (k *KV) Delete(key string, w *WriteOptions) (*WriteMeta, error) {\n\t_, qm, err := k.deleteInternal(key, nil, w)\n\treturn qm, err\n}\n\n// DeleteCAS is used for a Delete Check-And-Set operation. The Key\n// and ModifyIndex are respected. Returns true on success or false on failures.\nfunc (k *KV) DeleteCAS(p *KVPair, q *WriteOptions) (bool, *WriteMeta, error) {\n\tparams := map[string]string{\n\t\t\"cas\": strconv.FormatUint(p.ModifyIndex, 10),\n\t}\n\treturn k.deleteInternal(p.Key, params, q)\n}\n\n// DeleteTree is used to delete all keys under a prefix\nfunc (k *KV) DeleteTree(prefix string, w *WriteOptions) (*WriteMeta, error) {\n\t_, qm, err := k.deleteInternal(prefix, map[string]string{\"recurse\": \"\"}, w)\n\treturn qm, err\n}\n\nfunc (k *KV) deleteInternal(key string, params map[string]string, q *WriteOptions) (bool, *WriteMeta, error) {\n\tr := k.c.newRequest(\"DELETE\", \"/v1/kv/\"+strings.TrimPrefix(key, \"/\"))\n\tr.setWriteOptions(q)\n\tfor param, val := range params {\n\t\tr.params.Set(param, val)\n\t}\n\trtt, resp, err := k.c.doRequest(r)\n\tif err != nil {\n\t\treturn false, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn false, nil, err\n\t}\n\n\tqm := &WriteMeta{}\n\tqm.RequestTime = rtt\n\n\tvar buf bytes.Buffer\n\tif _, err := io.Copy(&buf, resp.Body); err != nil {\n\t\treturn false, nil, fmt.Errorf(\"Failed to read response: %v\", err)\n\t}\n\tres := strings.Contains(buf.String(), \"true\")\n\treturn res, qm, nil\n}\n\n// The Txn function has been deprecated from the KV object; please see the Txn\n// object for more information about Transactions.\nfunc (k *KV) Txn(txn KVTxnOps, q *QueryOptions) (bool, *KVTxnResponse, *QueryMeta, error) {\n\tvar ops TxnOps\n\tfor _, op := range txn {\n\t\tops = append(ops, &TxnOp{KV: op})\n\t}\n\n\trespOk, txnResp, qm, err := k.c.txn(ops, q)\n\tif err != nil {\n\t\treturn false, nil, nil, err\n\t}\n\n\t// Convert from the internal format.\n\tkvResp := KVTxnResponse{\n\t\tErrors: txnResp.Errors,\n\t}\n\tfor _, result := range txnResp.Results {\n\t\tkvResp.Results = append(kvResp.Results, result.KV)\n\t}\n\treturn respOk, &kvResp, qm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/lock.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\t\"time\"\n)\n\nconst (\n\t// DefaultLockSessionName is the Session Name we assign if none is provided\n\tDefaultLockSessionName = \"Consul API Lock\"\n\n\t// DefaultLockSessionTTL is the default session TTL if no Session is provided\n\t// when creating a new Lock. This is used because we do not have another\n\t// other check to depend upon.\n\tDefaultLockSessionTTL = \"15s\"\n\n\t// DefaultLockWaitTime is how long we block for at a time to check if lock\n\t// acquisition is possible. This affects the minimum time it takes to cancel\n\t// a Lock acquisition.\n\tDefaultLockWaitTime = 15 * time.Second\n\n\t// DefaultLockRetryTime is how long we wait after a failed lock acquisition\n\t// before attempting to do the lock again. This is so that once a lock-delay\n\t// is in effect, we do not hot loop retrying the acquisition.\n\tDefaultLockRetryTime = 5 * time.Second\n\n\t// DefaultMonitorRetryTime is how long we wait after a failed monitor check\n\t// of a lock (500 response code). This allows the monitor to ride out brief\n\t// periods of unavailability, subject to the MonitorRetries setting in the\n\t// lock options which is by default set to 0, disabling this feature. This\n\t// affects locks and semaphores.\n\tDefaultMonitorRetryTime = 2 * time.Second\n\n\t// LockFlagValue is a magic flag we set to indicate a key\n\t// is being used for a lock. It is used to detect a potential\n\t// conflict with a semaphore.\n\tLockFlagValue = 0x2ddccbc058a50c18\n)\n\nvar (\n\t// ErrLockHeld is returned if we attempt to double lock\n\tErrLockHeld = fmt.Errorf(\"Lock already held\")\n\n\t// ErrLockNotHeld is returned if we attempt to unlock a lock\n\t// that we do not hold.\n\tErrLockNotHeld = fmt.Errorf(\"Lock not held\")\n\n\t// ErrLockInUse is returned if we attempt to destroy a lock\n\t// that is in use.\n\tErrLockInUse = fmt.Errorf(\"Lock in use\")\n\n\t// ErrLockConflict is returned if the flags on a key\n\t// used for a lock do not match expectation\n\tErrLockConflict = fmt.Errorf(\"Existing key does not match lock use\")\n)\n\n// Lock is used to implement client-side leader election. It is follows the\n// algorithm as described here: https://www.consul.io/docs/guides/leader-election.html.\ntype Lock struct {\n\tc    *Client\n\topts *LockOptions\n\n\tisHeld       bool\n\tsessionRenew chan struct{}\n\tlockSession  string\n\tl            sync.Mutex\n}\n\n// LockOptions is used to parameterize the Lock behavior.\ntype LockOptions struct {\n\tKey              string        // Must be set and have write permissions\n\tValue            []byte        // Optional, value to associate with the lock\n\tSession          string        // Optional, created if not specified\n\tSessionOpts      *SessionEntry // Optional, options to use when creating a session\n\tSessionName      string        // Optional, defaults to DefaultLockSessionName (ignored if SessionOpts is given)\n\tSessionTTL       string        // Optional, defaults to DefaultLockSessionTTL (ignored if SessionOpts is given)\n\tMonitorRetries   int           // Optional, defaults to 0 which means no retries\n\tMonitorRetryTime time.Duration // Optional, defaults to DefaultMonitorRetryTime\n\tLockWaitTime     time.Duration // Optional, defaults to DefaultLockWaitTime\n\tLockTryOnce      bool          // Optional, defaults to false which means try forever\n\tLockDelay        time.Duration // Optional, defaults to 15s\n\tNamespace        string        `json:\",omitempty\"` // Optional, defaults to API client config, namespace of ACL token, or \"default\" namespace\n}\n\n// LockKey returns a handle to a lock struct which can be used\n// to acquire and release the mutex. The key used must have\n// write permissions.\nfunc (c *Client) LockKey(key string) (*Lock, error) {\n\topts := &LockOptions{\n\t\tKey: key,\n\t}\n\treturn c.LockOpts(opts)\n}\n\n// LockOpts returns a handle to a lock struct which can be used\n// to acquire and release the mutex. The key used must have\n// write permissions.\nfunc (c *Client) LockOpts(opts *LockOptions) (*Lock, error) {\n\tif opts.Key == \"\" {\n\t\treturn nil, fmt.Errorf(\"missing key\")\n\t}\n\tif opts.SessionName == \"\" {\n\t\topts.SessionName = DefaultLockSessionName\n\t}\n\tif opts.SessionTTL == \"\" {\n\t\topts.SessionTTL = DefaultLockSessionTTL\n\t} else {\n\t\tif _, err := time.ParseDuration(opts.SessionTTL); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid SessionTTL: %v\", err)\n\t\t}\n\t}\n\tif opts.MonitorRetryTime == 0 {\n\t\topts.MonitorRetryTime = DefaultMonitorRetryTime\n\t}\n\tif opts.LockWaitTime == 0 {\n\t\topts.LockWaitTime = DefaultLockWaitTime\n\t}\n\tl := &Lock{\n\t\tc:    c,\n\t\topts: opts,\n\t}\n\treturn l, nil\n}\n\n// Lock attempts to acquire the lock and blocks while doing so.\n// Providing a non-nil stopCh can be used to abort the lock attempt.\n// Returns a channel that is closed if our lock is lost or an error.\n// This channel could be closed at any time due to session invalidation,\n// communication errors, operator intervention, etc. It is NOT safe to\n// assume that the lock is held until Unlock() unless the Session is specifically\n// created without any associated health checks. By default Consul sessions\n// prefer liveness over safety and an application must be able to handle\n// the lock being lost.\nfunc (l *Lock) Lock(stopCh <-chan struct{}) (<-chan struct{}, error) {\n\t// Hold the lock as we try to acquire\n\tl.l.Lock()\n\tdefer l.l.Unlock()\n\n\t// Check if we already hold the lock\n\tif l.isHeld {\n\t\treturn nil, ErrLockHeld\n\t}\n\n\twOpts := WriteOptions{\n\t\tNamespace: l.opts.Namespace,\n\t}\n\n\t// Check if we need to create a session first\n\tl.lockSession = l.opts.Session\n\tif l.lockSession == \"\" {\n\t\ts, err := l.createSession()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create session: %v\", err)\n\t\t}\n\n\t\tl.sessionRenew = make(chan struct{})\n\t\tl.lockSession = s\n\n\t\tsession := l.c.Session()\n\t\tgo session.RenewPeriodic(l.opts.SessionTTL, s, &wOpts, l.sessionRenew)\n\n\t\t// If we fail to acquire the lock, cleanup the session\n\t\tdefer func() {\n\t\t\tif !l.isHeld {\n\t\t\t\tclose(l.sessionRenew)\n\t\t\t\tl.sessionRenew = nil\n\t\t\t}\n\t\t}()\n\t}\n\n\t// Setup the query options\n\tkv := l.c.KV()\n\tqOpts := QueryOptions{\n\t\tWaitTime:  l.opts.LockWaitTime,\n\t\tNamespace: l.opts.Namespace,\n\t}\n\n\tstart := time.Now()\n\tattempts := 0\nWAIT:\n\t// Check if we should quit\n\tselect {\n\tcase <-stopCh:\n\t\treturn nil, nil\n\tdefault:\n\t}\n\n\t// Handle the one-shot mode.\n\tif l.opts.LockTryOnce && attempts > 0 {\n\t\telapsed := time.Since(start)\n\t\tif elapsed > l.opts.LockWaitTime {\n\t\t\treturn nil, nil\n\t\t}\n\n\t\t// Query wait time should not exceed the lock wait time\n\t\tqOpts.WaitTime = l.opts.LockWaitTime - elapsed\n\t}\n\tattempts++\n\n\t// Look for an existing lock, blocking until not taken\n\tpair, meta, err := kv.Get(l.opts.Key, &qOpts)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read lock: %v\", err)\n\t}\n\tif pair != nil && pair.Flags != LockFlagValue {\n\t\treturn nil, ErrLockConflict\n\t}\n\tlocked := false\n\tif pair != nil && pair.Session == l.lockSession {\n\t\tgoto HELD\n\t}\n\tif pair != nil && pair.Session != \"\" {\n\t\tqOpts.WaitIndex = meta.LastIndex\n\t\tgoto WAIT\n\t}\n\n\t// Try to acquire the lock\n\tpair = l.lockEntry(l.lockSession)\n\n\tlocked, _, err = kv.Acquire(pair, &wOpts)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to acquire lock: %v\", err)\n\t}\n\n\t// Handle the case of not getting the lock\n\tif !locked {\n\t\t// Determine why the lock failed\n\t\tqOpts.WaitIndex = 0\n\t\tpair, meta, err = kv.Get(l.opts.Key, &qOpts)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif pair != nil && pair.Session != \"\" {\n\t\t\t//If the session is not null, this means that a wait can safely happen\n\t\t\t//using a long poll\n\t\t\tqOpts.WaitIndex = meta.LastIndex\n\t\t\tgoto WAIT\n\t\t} else {\n\t\t\t// If the session is empty and the lock failed to acquire, then it means\n\t\t\t// a lock-delay is in effect and a timed wait must be used\n\t\t\tselect {\n\t\t\tcase <-time.After(DefaultLockRetryTime):\n\t\t\t\tgoto WAIT\n\t\t\tcase <-stopCh:\n\t\t\t\treturn nil, nil\n\t\t\t}\n\t\t}\n\t}\n\nHELD:\n\t// Watch to ensure we maintain leadership\n\tleaderCh := make(chan struct{})\n\tgo l.monitorLock(l.lockSession, leaderCh)\n\n\t// Set that we own the lock\n\tl.isHeld = true\n\n\t// Locked! All done\n\treturn leaderCh, nil\n}\n\n// Unlock released the lock. It is an error to call this\n// if the lock is not currently held.\nfunc (l *Lock) Unlock() error {\n\t// Hold the lock as we try to release\n\tl.l.Lock()\n\tdefer l.l.Unlock()\n\n\t// Ensure the lock is actually held\n\tif !l.isHeld {\n\t\treturn ErrLockNotHeld\n\t}\n\n\t// Set that we no longer own the lock\n\tl.isHeld = false\n\n\t// Stop the session renew\n\tif l.sessionRenew != nil {\n\t\tdefer func() {\n\t\t\tclose(l.sessionRenew)\n\t\t\tl.sessionRenew = nil\n\t\t}()\n\t}\n\n\t// Get the lock entry, and clear the lock session\n\tlockEnt := l.lockEntry(l.lockSession)\n\tl.lockSession = \"\"\n\n\t// Release the lock explicitly\n\tkv := l.c.KV()\n\tw := WriteOptions{Namespace: l.opts.Namespace}\n\n\t_, _, err := kv.Release(lockEnt, &w)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to release lock: %v\", err)\n\t}\n\treturn nil\n}\n\n// Destroy is used to cleanup the lock entry. It is not necessary\n// to invoke. It will fail if the lock is in use.\nfunc (l *Lock) Destroy() error {\n\t// Hold the lock as we try to release\n\tl.l.Lock()\n\tdefer l.l.Unlock()\n\n\t// Check if we already hold the lock\n\tif l.isHeld {\n\t\treturn ErrLockHeld\n\t}\n\n\t// Look for an existing lock\n\tkv := l.c.KV()\n\tq := QueryOptions{Namespace: l.opts.Namespace}\n\n\tpair, _, err := kv.Get(l.opts.Key, &q)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to read lock: %v\", err)\n\t}\n\n\t// Nothing to do if the lock does not exist\n\tif pair == nil {\n\t\treturn nil\n\t}\n\n\t// Check for possible flag conflict\n\tif pair.Flags != LockFlagValue {\n\t\treturn ErrLockConflict\n\t}\n\n\t// Check if it is in use\n\tif pair.Session != \"\" {\n\t\treturn ErrLockInUse\n\t}\n\n\t// Attempt the delete\n\tw := WriteOptions{Namespace: l.opts.Namespace}\n\tdidRemove, _, err := kv.DeleteCAS(pair, &w)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to remove lock: %v\", err)\n\t}\n\tif !didRemove {\n\t\treturn ErrLockInUse\n\t}\n\treturn nil\n}\n\n// createSession is used to create a new managed session\nfunc (l *Lock) createSession() (string, error) {\n\tsession := l.c.Session()\n\tse := l.opts.SessionOpts\n\tif se == nil {\n\t\tse = &SessionEntry{\n\t\t\tName:      l.opts.SessionName,\n\t\t\tTTL:       l.opts.SessionTTL,\n\t\t\tLockDelay: l.opts.LockDelay,\n\t\t}\n\t}\n\tw := WriteOptions{Namespace: l.opts.Namespace}\n\tid, _, err := session.Create(se, &w)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn id, nil\n}\n\n// lockEntry returns a formatted KVPair for the lock\nfunc (l *Lock) lockEntry(session string) *KVPair {\n\treturn &KVPair{\n\t\tKey:     l.opts.Key,\n\t\tValue:   l.opts.Value,\n\t\tSession: session,\n\t\tFlags:   LockFlagValue,\n\t}\n}\n\n// monitorLock is a long running routine to monitor a lock ownership\n// It closes the stopCh if we lose our leadership.\nfunc (l *Lock) monitorLock(session string, stopCh chan struct{}) {\n\tdefer close(stopCh)\n\tkv := l.c.KV()\n\topts := QueryOptions{\n\t\tRequireConsistent: true,\n\t\tNamespace:         l.opts.Namespace,\n\t}\nWAIT:\n\tretries := l.opts.MonitorRetries\nRETRY:\n\tpair, meta, err := kv.Get(l.opts.Key, &opts)\n\tif err != nil {\n\t\t// If configured we can try to ride out a brief Consul unavailability\n\t\t// by doing retries. Note that we have to attempt the retry in a non-\n\t\t// blocking fashion so that we have a clean place to reset the retry\n\t\t// counter if service is restored.\n\t\tif retries > 0 && IsRetryableError(err) {\n\t\t\ttime.Sleep(l.opts.MonitorRetryTime)\n\t\t\tretries--\n\t\t\topts.WaitIndex = 0\n\t\t\tgoto RETRY\n\t\t}\n\t\treturn\n\t}\n\tif pair != nil && pair.Session == session {\n\t\topts.WaitIndex = meta.LastIndex\n\t\tgoto WAIT\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/namespace.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"time\"\n)\n\n// Namespace is the configuration of a single namespace. Namespacing is a Consul Enterprise feature.\ntype Namespace struct {\n\t// Name is the name of the Namespace. It must be unique and\n\t// must be a DNS hostname. There are also other reserved names\n\t// that may not be used.\n\tName string `json:\"Name\"`\n\n\t// Description is where the user puts any information they want\n\t// about the namespace. It is not used internally.\n\tDescription string `json:\"Description,omitempty\"`\n\n\t// ACLs is the configuration of ACLs for this namespace. It has its\n\t// own struct so that we can add more to it in the future.\n\t// This is nullable so that we can omit if empty when encoding in JSON\n\tACLs *NamespaceACLConfig `json:\"ACLs,omitempty\"`\n\n\t// Meta is a map that can be used to add kv metadata to the namespace definition\n\tMeta map[string]string `json:\"Meta,omitempty\"`\n\n\t// DeletedAt is the time when the Namespace was marked for deletion\n\t// This is nullable so that we can omit if empty when encoding in JSON\n\tDeletedAt *time.Time `json:\"DeletedAt,omitempty\" alias:\"deleted_at\"`\n\n\t// Partition which contains the Namespace.\n\tPartition string `json:\"Partition,omitempty\"`\n\n\t// CreateIndex is the Raft index at which the Namespace was created\n\tCreateIndex uint64 `json:\"CreateIndex,omitempty\"`\n\n\t// ModifyIndex is the latest Raft index at which the Namespace was modified.\n\tModifyIndex uint64 `json:\"ModifyIndex,omitempty\"`\n}\n\nfunc (n *Namespace) UnmarshalJSON(data []byte) error {\n\ttype Alias Namespace\n\taux := struct {\n\t\tDeletedAtSnake *time.Time `json:\"deleted_at\"`\n\t\t*Alias\n\t}{\n\t\tAlias: (*Alias)(n),\n\t}\n\tif err := json.Unmarshal(data, &aux); err != nil {\n\t\treturn err\n\t}\n\n\tif n.DeletedAt == nil && aux.DeletedAtSnake != nil {\n\t\tn.DeletedAt = aux.DeletedAtSnake\n\t}\n\n\treturn nil\n}\n\n// NamespaceACLConfig is the Namespace specific ACL configuration container\ntype NamespaceACLConfig struct {\n\t// PolicyDefaults is the list of policies that should be used for the parent authorizer\n\t// of all tokens in the associated namespace.\n\tPolicyDefaults []ACLLink `json:\"PolicyDefaults\" alias:\"policy_defaults\"`\n\t// RoleDefaults is the list of roles that should be used for the parent authorizer\n\t// of all tokens in the associated namespace.\n\tRoleDefaults []ACLLink `json:\"RoleDefaults\" alias:\"role_defaults\"`\n}\n\nfunc (n *NamespaceACLConfig) UnmarshalJSON(data []byte) error {\n\ttype Alias NamespaceACLConfig\n\taux := struct {\n\t\tPolicyDefaultsSnake []ACLLink `json:\"policy_defaults\"`\n\t\tRoleDefaultsSnake   []ACLLink `json:\"role_defaults\"`\n\t\t*Alias\n\t}{\n\t\tAlias: (*Alias)(n),\n\t}\n\tif err := json.Unmarshal(data, &aux); err != nil {\n\t\treturn err\n\t}\n\n\tif n.PolicyDefaults == nil {\n\t\tfor _, pd := range aux.PolicyDefaultsSnake {\n\t\t\tn.PolicyDefaults = append(n.PolicyDefaults, pd)\n\t\t}\n\t}\n\tif n.RoleDefaults == nil {\n\t\tfor _, pd := range aux.RoleDefaultsSnake {\n\t\t\tn.RoleDefaults = append(n.RoleDefaults, pd)\n\t\t}\n\t}\n\treturn nil\n}\n\n// Namespaces can be used to manage Namespaces in Consul Enterprise..\ntype Namespaces struct {\n\tc *Client\n}\n\n// Namespaces returns a handle to the namespaces endpoints.\nfunc (c *Client) Namespaces() *Namespaces {\n\treturn &Namespaces{c}\n}\n\nfunc (n *Namespaces) Create(ns *Namespace, q *WriteOptions) (*Namespace, *WriteMeta, error) {\n\tif ns.Name == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Must specify a Name for Namespace creation\")\n\t}\n\n\tr := n.c.newRequest(\"PUT\", \"/v1/namespace\")\n\tr.setWriteOptions(q)\n\tr.obj = ns\n\trtt, resp, err := n.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out Namespace\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\nfunc (n *Namespaces) Update(ns *Namespace, q *WriteOptions) (*Namespace, *WriteMeta, error) {\n\tif ns.Name == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Must specify a Name for Namespace updating\")\n\t}\n\n\tr := n.c.newRequest(\"PUT\", \"/v1/namespace/\"+ns.Name)\n\tr.setWriteOptions(q)\n\tr.obj = ns\n\trtt, resp, err := n.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out Namespace\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\nfunc (n *Namespaces) Read(name string, q *QueryOptions) (*Namespace, *QueryMeta, error) {\n\tvar out Namespace\n\tr := n.c.newRequest(\"GET\", \"/v1/namespace/\"+name)\n\tr.setQueryOptions(q)\n\trtt, resp, err := n.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tfound, resp, err := requireNotFoundOrOK(resp)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif !found {\n\t\treturn nil, qm, nil\n\t}\n\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn &out, qm, nil\n}\n\nfunc (n *Namespaces) Delete(name string, q *WriteOptions) (*WriteMeta, error) {\n\tr := n.c.newRequest(\"DELETE\", \"/v1/namespace/\"+name)\n\tr.setWriteOptions(q)\n\trtt, resp, err := n.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\treturn wm, nil\n}\n\nfunc (n *Namespaces) List(q *QueryOptions) ([]*Namespace, *QueryMeta, error) {\n\tvar out []*Namespace\n\tr := n.c.newRequest(\"GET\", \"/v1/namespaces\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := n.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/operator.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// Operator can be used to perform low-level operator tasks for Consul.\ntype Operator struct {\n\tc *Client\n}\n\n// Operator returns a handle to the operator endpoints.\nfunc (c *Client) Operator() *Operator {\n\treturn &Operator{c}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/operator_area.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// The /v1/operator/area endpoints are available only in Consul Enterprise and\n// interact with its network area subsystem. Network areas are used to link\n// together Consul servers in different Consul datacenters. With network areas,\n// Consul datacenters can be linked together in ways other than a fully-connected\n// mesh, as is required for Consul's WAN.\n\nimport (\n\t\"net\"\n\t\"time\"\n)\n\n// Area defines a network area.\ntype Area struct {\n\t// ID is this identifier for an area (a UUID). This must be left empty\n\t// when creating a new area.\n\tID string\n\n\t// PeerDatacenter is the peer Consul datacenter that will make up the\n\t// other side of this network area. Network areas always involve a pair\n\t// of datacenters: the datacenter where the area was created, and the\n\t// peer datacenter. This is required.\n\tPeerDatacenter string\n\n\t// RetryJoin specifies the address of Consul servers to join to, such as\n\t// an IPs or hostnames with an optional port number. This is optional.\n\tRetryJoin []string\n\n\t// UseTLS specifies whether gossip over this area should be encrypted with TLS\n\t// if possible.\n\tUseTLS bool\n}\n\n// AreaJoinResponse is returned when a join occurs and gives the result for each\n// address.\ntype AreaJoinResponse struct {\n\t// The address that was joined.\n\tAddress string\n\n\t// Whether or not the join was a success.\n\tJoined bool\n\n\t// If we couldn't join, this is the message with information.\n\tError string\n}\n\n// SerfMember is a generic structure for reporting information about members in\n// a Serf cluster. This is only used by the area endpoints right now, but this\n// could be expanded to other endpoints in the future.\ntype SerfMember struct {\n\t// ID is the node identifier (a UUID).\n\tID string\n\n\t// Name is the node name.\n\tName string\n\n\t// Addr has the IP address.\n\tAddr net.IP\n\n\t// Port is the RPC port.\n\tPort uint16\n\n\t// Datacenter is the DC name.\n\tDatacenter string\n\n\t// Role is \"client\", \"server\", or \"unknown\".\n\tRole string\n\n\t// Build has the version of the Consul agent.\n\tBuild string\n\n\t// Protocol is the protocol of the Consul agent.\n\tProtocol int\n\n\t// Status is the Serf health status \"none\", \"alive\", \"leaving\", \"left\",\n\t// or \"failed\".\n\tStatus string\n\n\t// RTT is the estimated round trip time from the server handling the\n\t// request to the this member. This will be negative if no RTT estimate\n\t// is available.\n\tRTT time.Duration\n}\n\n// AreaCreate will create a new network area. The ID in the given structure must\n// be empty and a generated ID will be returned on success.\nfunc (op *Operator) AreaCreate(area *Area, q *WriteOptions) (string, *WriteMeta, error) {\n\tr := op.c.newRequest(\"POST\", \"/v1/operator/area\")\n\tr.setWriteOptions(q)\n\tr.obj = area\n\trtt, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\n\tvar out struct{ ID string }\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\treturn out.ID, wm, nil\n}\n\n// AreaUpdate will update the configuration of the network area with the given ID.\nfunc (op *Operator) AreaUpdate(areaID string, area *Area, q *WriteOptions) (string, *WriteMeta, error) {\n\tr := op.c.newRequest(\"PUT\", \"/v1/operator/area/\"+areaID)\n\tr.setWriteOptions(q)\n\tr.obj = area\n\trtt, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\n\tvar out struct{ ID string }\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\treturn out.ID, wm, nil\n}\n\n// AreaGet returns a single network area.\nfunc (op *Operator) AreaGet(areaID string, q *QueryOptions) ([]*Area, *QueryMeta, error) {\n\tvar out []*Area\n\tqm, err := op.c.query(\"/v1/operator/area/\"+areaID, &out, q)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// AreaList returns all the available network areas.\nfunc (op *Operator) AreaList(q *QueryOptions) ([]*Area, *QueryMeta, error) {\n\tvar out []*Area\n\tqm, err := op.c.query(\"/v1/operator/area\", &out, q)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// AreaDelete deletes the given network area.\nfunc (op *Operator) AreaDelete(areaID string, q *WriteOptions) (*WriteMeta, error) {\n\tr := op.c.newRequest(\"DELETE\", \"/v1/operator/area/\"+areaID)\n\tr.setWriteOptions(q)\n\trtt, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\treturn wm, nil\n}\n\n// AreaJoin attempts to join the given set of join addresses to the given\n// network area. See the Area structure for details about join addresses.\nfunc (op *Operator) AreaJoin(areaID string, addresses []string, q *WriteOptions) ([]*AreaJoinResponse, *WriteMeta, error) {\n\tr := op.c.newRequest(\"PUT\", \"/v1/operator/area/\"+areaID+\"/join\")\n\tr.setWriteOptions(q)\n\tr.obj = addresses\n\trtt, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\n\tvar out []*AreaJoinResponse\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, wm, nil\n}\n\n// AreaMembers lists the Serf information about the members in the given area.\nfunc (op *Operator) AreaMembers(areaID string, q *QueryOptions) ([]*SerfMember, *QueryMeta, error) {\n\tvar out []*SerfMember\n\tqm, err := op.c.query(\"/v1/operator/area/\"+areaID+\"/members\", &out, q)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/operator_audit.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\n// The /v1/operator/audit-hash endpoint is available only in Consul Enterprise and\n// interact with its audit logging subsystem.\n\npackage api\n\ntype AuditHashRequest struct {\n\tInput string\n}\n\ntype AuditHashResponse struct {\n\tHash string\n}\n\nfunc (op *Operator) AuditHash(a *AuditHashRequest, q *QueryOptions) (*AuditHashResponse, error) {\n\tr := op.c.newRequest(\"POST\", \"/v1/operator/audit-hash\")\n\tr.setQueryOptions(q)\n\tr.obj = a\n\n\trtt, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\n\tvar out AuditHashResponse\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &out, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/operator_autopilot.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// AutopilotConfiguration is used for querying/setting the Autopilot configuration.\n// Autopilot helps manage operator tasks related to Consul servers like removing\n// failed servers from the Raft quorum.\ntype AutopilotConfiguration struct {\n\t// CleanupDeadServers controls whether to remove dead servers from the Raft\n\t// peer list when a new server joins\n\tCleanupDeadServers bool\n\n\t// LastContactThreshold is the limit on the amount of time a server can go\n\t// without leader contact before being considered unhealthy.\n\tLastContactThreshold *ReadableDuration\n\n\t// MaxTrailingLogs is the amount of entries in the Raft Log that a server can\n\t// be behind before being considered unhealthy.\n\tMaxTrailingLogs uint64\n\n\t// MinQuorum sets the minimum number of servers allowed in a cluster before\n\t// autopilot can prune dead servers.\n\tMinQuorum uint\n\n\t// ServerStabilizationTime is the minimum amount of time a server must be\n\t// in a stable, healthy state before it can be added to the cluster. Only\n\t// applicable with Raft protocol version 3 or higher.\n\tServerStabilizationTime *ReadableDuration\n\n\t// (Enterprise-only) RedundancyZoneTag is the node tag to use for separating\n\t// servers into zones for redundancy. If left blank, this feature will be disabled.\n\tRedundancyZoneTag string\n\n\t// (Enterprise-only) DisableUpgradeMigration will disable Autopilot's upgrade migration\n\t// strategy of waiting until enough newer-versioned servers have been added to the\n\t// cluster before promoting them to voters.\n\tDisableUpgradeMigration bool\n\n\t// (Enterprise-only) UpgradeVersionTag is the node tag to use for version info when\n\t// performing upgrade migrations. If left blank, the Consul version will be used.\n\tUpgradeVersionTag string\n\n\t// CreateIndex holds the index corresponding the creation of this configuration.\n\t// This is a read-only field.\n\tCreateIndex uint64\n\n\t// ModifyIndex will be set to the index of the last update when retrieving the\n\t// Autopilot configuration. Resubmitting a configuration with\n\t// AutopilotCASConfiguration will perform a check-and-set operation which ensures\n\t// there hasn't been a subsequent update since the configuration was retrieved.\n\tModifyIndex uint64\n}\n\n// Defines default values for the AutopilotConfiguration type, consistent with\n// https://www.consul.io/api-docs/operator/autopilot#parameters-1\nfunc NewAutopilotConfiguration() AutopilotConfiguration {\n\tcfg := AutopilotConfiguration{\n\t\tCleanupDeadServers:      true,\n\t\tLastContactThreshold:    NewReadableDuration(200 * time.Millisecond),\n\t\tMaxTrailingLogs:         250,\n\t\tMinQuorum:               0,\n\t\tServerStabilizationTime: NewReadableDuration(10 * time.Second),\n\t\tRedundancyZoneTag:       \"\",\n\t\tDisableUpgradeMigration: false,\n\t\tUpgradeVersionTag:       \"\",\n\t}\n\n\treturn cfg\n}\n\n// ServerHealth is the health (from the leader's point of view) of a server.\ntype ServerHealth struct {\n\t// ID is the raft ID of the server.\n\tID string\n\n\t// Name is the node name of the server.\n\tName string\n\n\t// Address is the address of the server.\n\tAddress string\n\n\t// The status of the SerfHealth check for the server.\n\tSerfStatus string\n\n\t// Version is the Consul version of the server.\n\tVersion string\n\n\t// Leader is whether this server is currently the leader.\n\tLeader bool\n\n\t// LastContact is the time since this node's last contact with the leader.\n\tLastContact *ReadableDuration\n\n\t// LastTerm is the highest leader term this server has a record of in its Raft log.\n\tLastTerm uint64\n\n\t// LastIndex is the last log index this server has a record of in its Raft log.\n\tLastIndex uint64\n\n\t// Healthy is whether or not the server is healthy according to the current\n\t// Autopilot config.\n\tHealthy bool\n\n\t// Voter is whether this is a voting server.\n\tVoter bool\n\n\t// StableSince is the last time this server's Healthy value changed.\n\tStableSince time.Time\n}\n\n// OperatorHealthReply is a representation of the overall health of the cluster\ntype OperatorHealthReply struct {\n\t// Healthy is true if all the servers in the cluster are healthy.\n\tHealthy bool\n\n\t// FailureTolerance is the number of healthy servers that could be lost without\n\t// an outage occurring.\n\tFailureTolerance int\n\n\t// Servers holds the health of each server.\n\tServers []ServerHealth\n}\n\ntype AutopilotState struct {\n\tHealthy                    bool\n\tFailureTolerance           int\n\tOptimisticFailureTolerance int\n\n\tServers         map[string]AutopilotServer\n\tLeader          string\n\tVoters          []string\n\tReadReplicas    []string                 `json:\",omitempty\"`\n\tRedundancyZones map[string]AutopilotZone `json:\",omitempty\"`\n\tUpgrade         *AutopilotUpgrade        `json:\",omitempty\"`\n}\n\ntype AutopilotServer struct {\n\tID             string\n\tName           string\n\tAddress        string\n\tNodeStatus     string\n\tVersion        string\n\tLastContact    *ReadableDuration\n\tLastTerm       uint64\n\tLastIndex      uint64\n\tHealthy        bool\n\tStableSince    time.Time\n\tRedundancyZone string `json:\",omitempty\"`\n\tUpgradeVersion string `json:\",omitempty\"`\n\tReadReplica    bool\n\tStatus         AutopilotServerStatus\n\tMeta           map[string]string\n\tNodeType       AutopilotServerType\n}\n\ntype AutopilotServerStatus string\n\nconst (\n\tAutopilotServerNone     AutopilotServerStatus = \"none\"\n\tAutopilotServerLeader   AutopilotServerStatus = \"leader\"\n\tAutopilotServerVoter    AutopilotServerStatus = \"voter\"\n\tAutopilotServerNonVoter AutopilotServerStatus = \"non-voter\"\n\tAutopilotServerStaging  AutopilotServerStatus = \"staging\"\n)\n\ntype AutopilotServerType string\n\nconst (\n\tAutopilotTypeVoter          AutopilotServerType = \"voter\"\n\tAutopilotTypeReadReplica    AutopilotServerType = \"read-replica\"\n\tAutopilotTypeZoneVoter      AutopilotServerType = \"zone-voter\"\n\tAutopilotTypeZoneExtraVoter AutopilotServerType = \"zone-extra-voter\"\n\tAutopilotTypeZoneStandby    AutopilotServerType = \"zone-standby\"\n)\n\ntype AutopilotZone struct {\n\tServers          []string\n\tVoters           []string\n\tFailureTolerance int\n}\n\ntype AutopilotZoneUpgradeVersions struct {\n\tTargetVersionVoters    []string `json:\",omitempty\"`\n\tTargetVersionNonVoters []string `json:\",omitempty\"`\n\tOtherVersionVoters     []string `json:\",omitempty\"`\n\tOtherVersionNonVoters  []string `json:\",omitempty\"`\n}\n\ntype AutopilotUpgrade struct {\n\tStatus                    AutopilotUpgradeStatus\n\tTargetVersion             string                                  `json:\",omitempty\"`\n\tTargetVersionVoters       []string                                `json:\",omitempty\"`\n\tTargetVersionNonVoters    []string                                `json:\",omitempty\"`\n\tTargetVersionReadReplicas []string                                `json:\",omitempty\"`\n\tOtherVersionVoters        []string                                `json:\",omitempty\"`\n\tOtherVersionNonVoters     []string                                `json:\",omitempty\"`\n\tOtherVersionReadReplicas  []string                                `json:\",omitempty\"`\n\tRedundancyZones           map[string]AutopilotZoneUpgradeVersions `json:\",omitempty\"`\n}\n\ntype AutopilotUpgradeStatus string\n\nconst (\n\t// AutopilotUpgradeIdle is the status when no upgrade is in progress.\n\tAutopilotUpgradeIdle AutopilotUpgradeStatus = \"idle\"\n\n\t// AutopilotUpgradeAwaitNewVoters is the status when more servers of\n\t// the target version must be added in order to start the promotion\n\t// phase of the upgrade\n\tAutopilotUpgradeAwaitNewVoters AutopilotUpgradeStatus = \"await-new-voters\"\n\n\t// AutopilotUpgradePromoting is the status when autopilot is promoting\n\t// servers of the target version.\n\tAutopilotUpgradePromoting AutopilotUpgradeStatus = \"promoting\"\n\n\t// AutopilotUpgradeDemoting is the status when autopilot is demoting\n\t// servers not on the target version\n\tAutopilotUpgradeDemoting AutopilotUpgradeStatus = \"demoting\"\n\n\t// AutopilotUpgradeLeaderTransfer is the status when autopilot is transferring\n\t// leadership from a server running an older version to a server\n\t// using the target version.\n\tAutopilotUpgradeLeaderTransfer AutopilotUpgradeStatus = \"leader-transfer\"\n\n\t// AutopilotUpgradeAwaitNewServers is the status when autpilot has finished\n\t// transferring leadership and has demoted all the other versioned\n\t// servers but wants to indicate that more target version servers\n\t// are needed to replace all the existing other version servers.\n\tAutopilotUpgradeAwaitNewServers AutopilotUpgradeStatus = \"await-new-servers\"\n\n\t// AutopilotUpgradeAwaitServerRemoval is the status when autopilot is waiting\n\t// for the servers on non-target versions to be removed\n\tAutopilotUpgradeAwaitServerRemoval AutopilotUpgradeStatus = \"await-server-removal\"\n\n\t// AutopilotUpgradeDisabled is the status when automated ugprades are\n\t// disabled in the autopilot configuration\n\tAutopilotUpgradeDisabled AutopilotUpgradeStatus = \"disabled\"\n)\n\n// ReadableDuration is a duration type that is serialized to JSON in human readable format.\ntype ReadableDuration time.Duration\n\nfunc NewReadableDuration(dur time.Duration) *ReadableDuration {\n\td := ReadableDuration(dur)\n\treturn &d\n}\n\nfunc (d *ReadableDuration) String() string {\n\treturn d.Duration().String()\n}\n\nfunc (d *ReadableDuration) Duration() time.Duration {\n\tif d == nil {\n\t\treturn time.Duration(0)\n\t}\n\treturn time.Duration(*d)\n}\n\nfunc (d *ReadableDuration) MarshalJSON() ([]byte, error) {\n\treturn []byte(fmt.Sprintf(`\"%s\"`, d.Duration().String())), nil\n}\n\nfunc (d *ReadableDuration) UnmarshalJSON(raw []byte) (err error) {\n\tif d == nil {\n\t\treturn fmt.Errorf(\"cannot unmarshal to nil pointer\")\n\t}\n\n\tvar dur time.Duration\n\tstr := string(raw)\n\tif len(str) >= 2 && str[0] == '\"' && str[len(str)-1] == '\"' {\n\t\t// quoted string\n\t\tdur, err = time.ParseDuration(str[1 : len(str)-1])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\t// no quotes, not a string\n\t\tv, err := strconv.ParseFloat(str, 64)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdur = time.Duration(v)\n\t}\n\n\t*d = ReadableDuration(dur)\n\treturn nil\n}\n\n// AutopilotGetConfiguration is used to query the current Autopilot configuration.\nfunc (op *Operator) AutopilotGetConfiguration(q *QueryOptions) (*AutopilotConfiguration, error) {\n\tr := op.c.newRequest(\"GET\", \"/v1/operator/autopilot/configuration\")\n\tr.setQueryOptions(q)\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar out AutopilotConfiguration\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &out, nil\n}\n\n// AutopilotSetConfiguration is used to set the current Autopilot configuration.\nfunc (op *Operator) AutopilotSetConfiguration(conf *AutopilotConfiguration, q *WriteOptions) error {\n\tr := op.c.newRequest(\"PUT\", \"/v1/operator/autopilot/configuration\")\n\tr.setWriteOptions(q)\n\tr.obj = conf\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// AutopilotCASConfiguration is used to perform a Check-And-Set update on the\n// Autopilot configuration. The ModifyIndex value will be respected. Returns\n// true on success or false on failures.\nfunc (op *Operator) AutopilotCASConfiguration(conf *AutopilotConfiguration, q *WriteOptions) (bool, error) {\n\tr := op.c.newRequest(\"PUT\", \"/v1/operator/autopilot/configuration\")\n\tr.setWriteOptions(q)\n\tr.params.Set(\"cas\", strconv.FormatUint(conf.ModifyIndex, 10))\n\tr.obj = conf\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn false, err\n\t}\n\n\tvar buf bytes.Buffer\n\tif _, err := io.Copy(&buf, resp.Body); err != nil {\n\t\treturn false, fmt.Errorf(\"Failed to read response: %v\", err)\n\t}\n\tres := strings.Contains(buf.String(), \"true\")\n\n\treturn res, nil\n}\n\n// AutopilotServerHealth\nfunc (op *Operator) AutopilotServerHealth(q *QueryOptions) (*OperatorHealthReply, error) {\n\tr := op.c.newRequest(\"GET\", \"/v1/operator/autopilot/health\")\n\tr.setQueryOptions(q)\n\n\t// we use 429 status to indicate unhealthiness\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\terr = requireHttpCodes(resp, 200, 429)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\n\tvar out OperatorHealthReply\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &out, nil\n}\n\nfunc (op *Operator) AutopilotState(q *QueryOptions) (*AutopilotState, error) {\n\tr := op.c.newRequest(\"GET\", \"/v1/operator/autopilot/state\")\n\tr.setQueryOptions(q)\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar out AutopilotState\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &out, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/operator_keyring.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// keyringRequest is used for performing Keyring operations\ntype keyringRequest struct {\n\tKey string\n}\n\n// KeyringResponse is returned when listing the gossip encryption keys\ntype KeyringResponse struct {\n\t// Whether this response is for a WAN ring\n\tWAN bool\n\n\t// The datacenter name this request corresponds to\n\tDatacenter string\n\n\t// Segment has the network segment this request corresponds to.\n\tSegment string\n\n\t// Partition has the admin partition this request corresponds to.\n\tPartition string `json:\",omitempty\"`\n\n\t// Messages has information or errors from serf\n\tMessages map[string]string `json:\",omitempty\"`\n\n\t// A map of the encryption keys to the number of nodes they're installed on\n\tKeys map[string]int\n\n\t// A map of the encryption primary keys to the number of nodes they're installed on\n\tPrimaryKeys map[string]int\n\n\t// The total number of nodes in this ring\n\tNumNodes int\n}\n\n// KeyringInstall is used to install a new gossip encryption key into the cluster\nfunc (op *Operator) KeyringInstall(key string, q *WriteOptions) error {\n\tr := op.c.newRequest(\"POST\", \"/v1/operator/keyring\")\n\tr.setWriteOptions(q)\n\tr.obj = keyringRequest{\n\t\tKey: key,\n\t}\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// KeyringList is used to list the gossip keys installed in the cluster\nfunc (op *Operator) KeyringList(q *QueryOptions) ([]*KeyringResponse, error) {\n\tr := op.c.newRequest(\"GET\", \"/v1/operator/keyring\")\n\tr.setQueryOptions(q)\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar out []*KeyringResponse\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// KeyringRemove is used to remove a gossip encryption key from the cluster\nfunc (op *Operator) KeyringRemove(key string, q *WriteOptions) error {\n\tr := op.c.newRequest(\"DELETE\", \"/v1/operator/keyring\")\n\tr.setWriteOptions(q)\n\tr.obj = keyringRequest{\n\t\tKey: key,\n\t}\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// KeyringUse is used to change the active gossip encryption key\nfunc (op *Operator) KeyringUse(key string, q *WriteOptions) error {\n\tr := op.c.newRequest(\"PUT\", \"/v1/operator/keyring\")\n\tr.setWriteOptions(q)\n\tr.obj = keyringRequest{\n\t\tKey: key,\n\t}\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/operator_license.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"io\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype License struct {\n\t// The unique identifier of the license\n\tLicenseID string `json:\"license_id\"`\n\n\t// The customer ID associated with the license\n\tCustomerID string `json:\"customer_id\"`\n\n\t// If set, an identifier that should be used to lock the license to a\n\t// particular site, cluster, etc.\n\tInstallationID string `json:\"installation_id\"`\n\n\t// The time at which the license was issued\n\tIssueTime time.Time `json:\"issue_time\"`\n\n\t// The time at which the license starts being valid\n\tStartTime time.Time `json:\"start_time\"`\n\n\t// The time after which the license expires\n\tExpirationTime time.Time `json:\"expiration_time\"`\n\n\t// The time at which the license ceases to function and can\n\t// no longer be used in any capacity\n\tTerminationTime time.Time `json:\"termination_time\"`\n\n\t// Whether the license will ignore termination\n\tIgnoreTermination bool `json:\"ignore_termination\"`\n\n\t// The product the license is valid for\n\tProduct string `json:\"product\"`\n\n\t// License Specific Flags\n\tFlags map[string]interface{} `json:\"flags\"`\n\n\t// Modules is a list of the licensed enterprise modules\n\tModules []string `json:\"modules\"`\n\n\t// List of features enabled by the license\n\tFeatures []string `json:\"features\"`\n}\n\ntype LicenseReply struct {\n\tValid    bool\n\tLicense  *License\n\tWarnings []string\n}\n\nfunc (op *Operator) LicenseGet(q *QueryOptions) (*LicenseReply, error) {\n\tvar reply LicenseReply\n\tif _, err := op.c.query(\"/v1/operator/license\", &reply, q); err != nil {\n\t\treturn nil, err\n\t} else {\n\t\treturn &reply, nil\n\t}\n}\n\nfunc (op *Operator) LicenseGetSigned(q *QueryOptions) (string, error) {\n\tr := op.c.newRequest(\"GET\", \"/v1/operator/license\")\n\tr.params.Set(\"signed\", \"1\")\n\tr.setQueryOptions(q)\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tdata, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn string(data), nil\n}\n\n// LicenseReset will reset the license to the builtin one if it is still valid.\n// If the builtin license is invalid, the current license stays active.\n//\n// DEPRECATED: Consul 1.10 removes the corresponding HTTP endpoint as licenses\n// are now set via agent configuration instead of through the API\nfunc (op *Operator) LicenseReset(opts *WriteOptions) (*LicenseReply, error) {\n\tvar reply LicenseReply\n\tr := op.c.newRequest(\"DELETE\", \"/v1/operator/license\")\n\tr.setWriteOptions(opts)\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := decodeBody(resp, &reply); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &reply, nil\n}\n\n// LicensePut will configure the Consul Enterprise license for the target datacenter\n//\n// DEPRECATED: Consul 1.10 removes the corresponding HTTP endpoint as licenses\n// are now set via agent configuration instead of through the API\nfunc (op *Operator) LicensePut(license string, opts *WriteOptions) (*LicenseReply, error) {\n\tvar reply LicenseReply\n\tr := op.c.newRequest(\"PUT\", \"/v1/operator/license\")\n\tr.setWriteOptions(opts)\n\tr.body = strings.NewReader(license)\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := decodeBody(resp, &reply); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &reply, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/operator_raft.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// RaftServer has information about a server in the Raft configuration.\ntype RaftServer struct {\n\t// ID is the unique ID for the server. These are currently the same\n\t// as the address, but they will be changed to a real GUID in a future\n\t// release of Consul.\n\tID string\n\n\t// Node is the node name of the server, as known by Consul, or this\n\t// will be set to \"(unknown)\" otherwise.\n\tNode string\n\n\t// Address is the IP:port of the server, used for Raft communications.\n\tAddress string\n\n\t// Leader is true if this server is the current cluster leader.\n\tLeader bool\n\n\t// Protocol version is the raft protocol version used by the server\n\tProtocolVersion string\n\n\t// Voter is true if this server has a vote in the cluster. This might\n\t// be false if the server is staging and still coming online, or if\n\t// it's a non-voting server, which will be added in a future release of\n\t// Consul.\n\tVoter bool\n\n\t// LastIndex is the last log index this server has a record of in its Raft log.\n\tLastIndex uint64\n}\n\n// RaftConfiguration is returned when querying for the current Raft configuration.\ntype RaftConfiguration struct {\n\t// Servers has the list of servers in the Raft configuration.\n\tServers []*RaftServer\n\n\t// Index has the Raft index of this configuration.\n\tIndex uint64\n}\n\n// TransferLeaderResponse is returned when querying for the current Raft configuration.\ntype TransferLeaderResponse struct {\n\tSuccess bool\n}\n\n// RaftGetConfiguration is used to query the current Raft peer set.\nfunc (op *Operator) RaftGetConfiguration(q *QueryOptions) (*RaftConfiguration, error) {\n\tr := op.c.newRequest(\"GET\", \"/v1/operator/raft/configuration\")\n\tr.setQueryOptions(q)\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar out RaftConfiguration\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &out, nil\n}\n\n// RaftLeaderTransfer is used to transfer the current raft leader to another node\n// Optionally accepts a non-empty id of another node to transfer leadership to.\nfunc (op *Operator) RaftLeaderTransfer(id string, q *QueryOptions) (*TransferLeaderResponse, error) {\n\tr := op.c.newRequest(\"POST\", \"/v1/operator/raft/transfer-leader\")\n\tr.setQueryOptions(q)\n\n\tif id != \"\" {\n\t\tr.params.Set(\"id\", id)\n\t}\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar out TransferLeaderResponse\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &out, nil\n}\n\n// RaftRemovePeerByAddress is used to kick a stale peer (one that it in the Raft\n// quorum but no longer known to Serf or the catalog) by address in the form of\n// \"IP:port\".\nfunc (op *Operator) RaftRemovePeerByAddress(address string, q *WriteOptions) error {\n\tr := op.c.newRequest(\"DELETE\", \"/v1/operator/raft/peer\")\n\tr.setWriteOptions(q)\n\n\tr.params.Set(\"address\", address)\n\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// RaftRemovePeerByID is used to kick a stale peer (one that it in the Raft\n// quorum but no longer known to Serf or the catalog) by ID.\nfunc (op *Operator) RaftRemovePeerByID(id string, q *WriteOptions) error {\n\tr := op.c.newRequest(\"DELETE\", \"/v1/operator/raft/peer\")\n\tr.setWriteOptions(q)\n\n\tr.params.Set(\"id\", id)\n\n\t_, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/operator_segment.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// SegmentList returns all the available LAN segments.\nfunc (op *Operator) SegmentList(q *QueryOptions) ([]string, *QueryMeta, error) {\n\tvar out []string\n\tqm, err := op.c.query(\"/v1/operator/segment\", &out, q)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/operator_usage.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\ntype Usage struct {\n\t// Usage is a map of datacenter -> usage information\n\tUsage map[string]ServiceUsage\n}\n\n// ServiceUsage contains information about the number of services and service instances for a datacenter.\ntype ServiceUsage struct {\n\tNodes                   int\n\tServices                int\n\tServiceInstances        int\n\tConnectServiceInstances map[string]int\n\n\t// Billable services are of \"typical\" service kind (i.e. non-connect or connect-native),\n\t// excluding the \"consul\" service.\n\tBillableServiceInstances int\n\n\t// A map of partition+namespace to number of unique services registered in that namespace\n\tPartitionNamespaceServices map[string]map[string]int\n\n\t// A map of partition+namespace to number of service instances registered in that namespace\n\tPartitionNamespaceServiceInstances map[string]map[string]int\n\n\t// A map of partition+namespace+kind to number of service-mesh instances registered in that namespace\n\tPartitionNamespaceConnectServiceInstances map[string]map[string]map[string]int\n\n\t// A map of partition+namespace to number of billable instances registered in that namespace\n\tPartitionNamespaceBillableServiceInstances map[string]map[string]int\n}\n\n// Usage is used to query for usage information in the given datacenter.\nfunc (op *Operator) Usage(q *QueryOptions) (*Usage, *QueryMeta, error) {\n\tr := op.c.newRequest(\"GET\", \"/v1/operator/usage\")\n\tr.setQueryOptions(q)\n\trtt, resp, err := op.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out *Usage\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/partition.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"time\"\n)\n\n// Partition is the configuration of a single admin partition. Admin Partitions are a Consul Enterprise feature.\ntype Partition struct {\n\t// Name is the name of the Partition.\n\tName string `json:\"Name\"`\n\n\t// Description is where the user puts any information they want\n\t// about the admin partition. It is not used internally.\n\tDescription string `json:\"Description,omitempty\"`\n\n\t// DeletedAt is the time when the Partition was marked for deletion\n\t// This is nullable so that we can omit if empty when encoding in JSON\n\tDeletedAt *time.Time `json:\"DeletedAt,omitempty\" alias:\"deleted_at\"`\n\n\t// CreateIndex is the Raft index at which the Partition was created\n\tCreateIndex uint64 `json:\"CreateIndex,omitempty\"`\n\n\t// ModifyIndex is the latest Raft index at which the Partition was modified.\n\tModifyIndex uint64 `json:\"ModifyIndex,omitempty\"`\n}\n\n// PartitionDefaultName is the default partition value.\nconst PartitionDefaultName = \"default\"\n\n// Partitions can be used to manage Partitions in Consul Enterprise.\ntype Partitions struct {\n\tc *Client\n}\n\n// Operator returns a handle to the operator endpoints.\nfunc (c *Client) Partitions() *Partitions {\n\treturn &Partitions{c}\n}\n\nfunc (p *Partitions) Create(ctx context.Context, partition *Partition, q *WriteOptions) (*Partition, *WriteMeta, error) {\n\tif partition.Name == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Must specify a Name for Partition creation\")\n\t}\n\n\tr := p.c.newRequest(\"PUT\", \"/v1/partition\")\n\tr.setWriteOptions(q)\n\tr.ctx = ctx\n\tr.obj = partition\n\trtt, resp, err := p.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out Partition\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\nfunc (p *Partitions) Update(ctx context.Context, partition *Partition, q *WriteOptions) (*Partition, *WriteMeta, error) {\n\tif partition.Name == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"Must specify a Name for Partition updating\")\n\t}\n\n\tr := p.c.newRequest(\"PUT\", \"/v1/partition/\"+partition.Name)\n\tr.setWriteOptions(q)\n\tr.ctx = ctx\n\tr.obj = partition\n\trtt, resp, err := p.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\tvar out Partition\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\nfunc (p *Partitions) Read(ctx context.Context, name string, q *QueryOptions) (*Partition, *QueryMeta, error) {\n\tvar out Partition\n\tr := p.c.newRequest(\"GET\", \"/v1/partition/\"+name)\n\tr.setQueryOptions(q)\n\tr.ctx = ctx\n\trtt, resp, err := p.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tfound, resp, err := requireNotFoundOrOK(resp)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif !found {\n\t\treturn nil, qm, nil\n\t}\n\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn &out, qm, nil\n}\n\nfunc (p *Partitions) Delete(ctx context.Context, name string, q *WriteOptions) (*WriteMeta, error) {\n\tr := p.c.newRequest(\"DELETE\", \"/v1/partition/\"+name)\n\tr.setWriteOptions(q)\n\tr.ctx = ctx\n\trtt, resp, err := p.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\treturn wm, nil\n}\n\nfunc (p *Partitions) List(ctx context.Context, q *QueryOptions) ([]*Partition, *QueryMeta, error) {\n\tvar out []*Partition\n\tr := p.c.newRequest(\"GET\", \"/v1/partitions\")\n\tr.setQueryOptions(q)\n\tr.ctx = ctx\n\trtt, resp, err := p.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/peering.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"time\"\n)\n\n// PeeringState enumerates all the states a peering can be in\ntype PeeringState string\n\nconst (\n\t// PeeringStateUndefined represents an unset value for PeeringState during\n\t// writes.\n\tPeeringStateUndefined PeeringState = \"UNDEFINED\"\n\n\t// PeeringStatePending means the peering was created by generating a peering token.\n\t// Peerings stay in a pending state until the peer uses the token to dial\n\t// the local cluster.\n\tPeeringStatePending PeeringState = \"PENDING\"\n\n\t// PeeringStateEstablishing means the peering is being established from a peering token.\n\t// This is the initial state for dialing peers.\n\tPeeringStateEstablishing PeeringState = \"ESTABLISHING\"\n\n\t// PeeringStateActive means that the peering connection is active and\n\t// healthy.\n\tPeeringStateActive PeeringState = \"ACTIVE\"\n\n\t// PeeringStateFailing means the peering connection has been interrupted\n\t// but has not yet been terminated.\n\tPeeringStateFailing PeeringState = \"FAILING\"\n\n\t// PeeringStateDeleting means a peering was marked for deletion and is in the process\n\t// of being deleted.\n\tPeeringStateDeleting PeeringState = \"DELETING\"\n\n\t// PeeringStateTerminated means the peering relationship has been removed.\n\tPeeringStateTerminated PeeringState = \"TERMINATED\"\n)\n\ntype PeeringRemoteInfo struct {\n\t// Partition is the remote peer's partition.\n\tPartition string\n\t// Datacenter is the remote peer's datacenter.\n\tDatacenter string\n\tLocality   *Locality `json:\",omitempty\"`\n}\n\n// Locality identifies where a given entity is running.\ntype Locality struct {\n\t// Region is region the zone belongs to.\n\tRegion string\n\n\t// Zone is the zone the entity is running in.\n\tZone string\n}\n\ntype Peering struct {\n\t// ID is a datacenter-scoped UUID for the peering.\n\tID string\n\t// Name is the local alias for the peering relationship.\n\tName string\n\t// Partition is the local partition connecting to the peer.\n\tPartition string `json:\",omitempty\"`\n\t// DeletedAt is the time when the Peering was marked for deletion\n\tDeletedAt *time.Time `json:\",omitempty\" alias:\"deleted_at\"`\n\t// Meta is a mapping of some string value to any other string value\n\tMeta map[string]string `json:\",omitempty\"`\n\t// State is one of the valid PeeringState values to represent the status of\n\t// peering relationship.\n\tState PeeringState\n\t// PeerID is the ID that our peer assigned to this peering. This ID is to\n\t// be used when dialing the peer, so that it can know who dialed it.\n\tPeerID string `json:\",omitempty\"`\n\t// PeerCAPems contains all the CA certificates for the remote peer.\n\tPeerCAPems []string `json:\",omitempty\"`\n\t// PeerServerName is the name of the remote server as it relates to TLS.\n\tPeerServerName string `json:\",omitempty\"`\n\t// PeerServerAddresses contains all the connection addresses for the remote peer.\n\tPeerServerAddresses []string `json:\",omitempty\"`\n\t// StreamStatus contains information computed on read based on the state of the stream.\n\tStreamStatus PeeringStreamStatus\n\t// CreateIndex is the Raft index at which the Peering was created.\n\tCreateIndex uint64\n\t// ModifyIndex is the latest Raft index at which the Peering was modified.\n\tModifyIndex uint64\n\t// Remote contains metadata for the remote peer.\n\tRemote PeeringRemoteInfo\n}\n\ntype PeeringStreamStatus struct {\n\t// ImportedServices is the list of services imported from this peering.\n\tImportedServices []string\n\t// ExportedServices is the list of services exported to this peering.\n\tExportedServices []string\n\t// LastHeartbeat represents when the last heartbeat message was received.\n\tLastHeartbeat *time.Time\n\t// LastReceive represents when any message was last received, regardless of success or error.\n\tLastReceive *time.Time\n\t// LastSend represents when any message was last sent, regardless of success or error.\n\tLastSend *time.Time\n}\n\ntype PeeringReadResponse struct {\n\tPeering *Peering\n}\n\ntype PeeringGenerateTokenRequest struct {\n\t// PeerName is the name of the remote peer.\n\tPeerName string\n\t// Partition to be peered.\n\tPartition string `json:\",omitempty\"`\n\t// Meta is a mapping of some string value to any other string value\n\tMeta map[string]string `json:\",omitempty\"`\n\t// ServerExternalAddresses is a list of addresses to put into the generated token. This could be used to specify\n\t// load balancer(s) or external IPs to reach the servers from the dialing side, and will override any server\n\t// addresses obtained from the \"consul\" service.\n\tServerExternalAddresses []string `json:\",omitempty\"`\n}\n\ntype PeeringGenerateTokenResponse struct {\n\t// PeeringToken is an opaque string provided to the remote peer for it to complete\n\t// the peering initialization handshake.\n\tPeeringToken string\n}\n\ntype PeeringEstablishRequest struct {\n\t// Name of the remote peer.\n\tPeerName string\n\t// The peering token returned from the peer's GenerateToken endpoint.\n\tPeeringToken string `json:\",omitempty\"`\n\t// Partition to be peered.\n\tPartition string `json:\",omitempty\"`\n\t// Meta is a mapping of some string value to any other string value\n\tMeta map[string]string `json:\",omitempty\"`\n}\n\ntype PeeringEstablishResponse struct {\n}\n\ntype PeeringListRequest struct {\n\t// future proofing in case we extend List functionality\n}\n\ntype Peerings struct {\n\tc *Client\n}\n\n// Peerings returns a handle to the operator endpoints.\nfunc (c *Client) Peerings() *Peerings {\n\treturn &Peerings{c: c}\n}\n\nfunc (p *Peerings) Read(ctx context.Context, name string, q *QueryOptions) (*Peering, *QueryMeta, error) {\n\tif name == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"peering name cannot be empty\")\n\t}\n\n\treq := p.c.newRequest(\"GET\", fmt.Sprintf(\"/v1/peering/%s\", name))\n\treq.setQueryOptions(q)\n\treq.ctx = ctx\n\n\trtt, resp, err := p.c.doRequest(req)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tfound, resp, err := requireNotFoundOrOK(resp)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif !found {\n\t\treturn nil, qm, nil\n\t}\n\n\tvar out Peering\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, qm, nil\n}\n\nfunc (p *Peerings) Delete(ctx context.Context, name string, q *WriteOptions) (*WriteMeta, error) {\n\tif name == \"\" {\n\t\treturn nil, fmt.Errorf(\"peering name cannot be empty\")\n\t}\n\n\treq := p.c.newRequest(\"DELETE\", fmt.Sprintf(\"/v1/peering/%s\", name))\n\treq.setWriteOptions(q)\n\treq.ctx = ctx\n\n\trtt, resp, err := p.c.doRequest(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\treturn wm, nil\n}\n\n// TODO(peering): verify this is the ultimate signature we want\nfunc (p *Peerings) GenerateToken(ctx context.Context, g PeeringGenerateTokenRequest, wq *WriteOptions) (*PeeringGenerateTokenResponse, *WriteMeta, error) {\n\tif g.PeerName == \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"peer name cannot be empty\")\n\t}\n\n\treq := p.c.newRequest(\"POST\", fmt.Sprint(\"/v1/peering/token\"))\n\treq.setWriteOptions(wq)\n\treq.ctx = ctx\n\treq.obj = g\n\n\trtt, resp, err := p.c.doRequest(req)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\n\tvar out PeeringGenerateTokenResponse\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\n// TODO(peering): verify this is the ultimate signature we want\nfunc (p *Peerings) Establish(ctx context.Context, i PeeringEstablishRequest, wq *WriteOptions) (*PeeringEstablishResponse, *WriteMeta, error) {\n\treq := p.c.newRequest(\"POST\", fmt.Sprint(\"/v1/peering/establish\"))\n\treq.setWriteOptions(wq)\n\treq.ctx = ctx\n\treq.obj = i\n\n\trtt, resp, err := p.c.doRequest(req)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\twm := &WriteMeta{RequestTime: rtt}\n\n\tvar out PeeringEstablishResponse\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &out, wm, nil\n}\n\nfunc (p *Peerings) List(ctx context.Context, q *QueryOptions) ([]*Peering, *QueryMeta, error) {\n\treq := p.c.newRequest(\"GET\", \"/v1/peerings\")\n\treq.setQueryOptions(q)\n\treq.ctx = ctx\n\n\trtt, resp, err := p.c.doRequest(req)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tvar out []*Peering\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn out, qm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/prepared_query.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// QueryFailoverOptions sets options about how we fail over if there are no\n// healthy nodes in the local datacenter.\ntype QueryFailoverOptions struct {\n\t// NearestN is set to the number of remote datacenters to try, based on\n\t// network coordinates.\n\tNearestN int\n\n\t// Datacenters is a fixed list of datacenters to try after NearestN. We\n\t// never try a datacenter multiple times, so those are subtracted from\n\t// this list before proceeding.\n\tDatacenters []string\n\n\t// Targets is a fixed list of datacenters and peers to try. This field cannot\n\t// be populated with NearestN or Datacenters.\n\tTargets []QueryFailoverTarget\n}\n\n// Deprecated: use QueryFailoverOptions instead.\ntype QueryDatacenterOptions = QueryFailoverOptions\n\ntype QueryFailoverTarget struct {\n\t// Peer specifies a peer to try during failover.\n\tPeer string\n\n\t// Datacenter specifies a datacenter to try during failover.\n\tDatacenter string\n\n\t// Partition specifies a partition to try during failover\n\t// Note: Partition are available only in Consul Enterprise\n\tPartition string `json:\",omitempty\"`\n\n\t// Namespace specifies a namespace to try during failover\n\t// Note: Namespaces are available only in Consul Enterprise\n\tNamespace string `json:\",omitempty\"`\n}\n\n// QueryDNSOptions controls settings when query results are served over DNS.\ntype QueryDNSOptions struct {\n\t// TTL is the time to live for the served DNS results.\n\tTTL string\n}\n\n// ServiceQuery is used to query for a set of healthy nodes offering a specific\n// service.\ntype ServiceQuery struct {\n\t// Service is the service to query.\n\tService string\n\n\t// SamenessGroup specifies a sameness group to query. The first member of the Sameness Group will\n\t// be targeted first on PQ execution and subsequent members will be targeted during failover scenarios.\n\t// This field is mutually exclusive with Failover.\n\tSamenessGroup string `json:\",omitempty\"`\n\n\t// Namespace of the service to query\n\tNamespace string `json:\",omitempty\"`\n\n\t// Partition of the service to query\n\tPartition string `json:\",omitempty\"`\n\n\t// Near allows baking in the name of a node to automatically distance-\n\t// sort from. The magic \"_agent\" value is supported, which sorts near\n\t// the agent which initiated the request by default.\n\tNear string\n\n\t// Failover controls what we do if there are no healthy nodes in the\n\t// local datacenter.\n\tFailover QueryFailoverOptions `json:\",omitempty\"`\n\n\t// IgnoreCheckIDs is an optional list of health check IDs to ignore when\n\t// considering which nodes are healthy. It is useful as an emergency measure\n\t// to temporarily override some health check that is producing false negatives\n\t// for example.\n\tIgnoreCheckIDs []string\n\n\t// If OnlyPassing is true then we will only include nodes with passing\n\t// health checks (critical AND warning checks will cause a node to be\n\t// discarded)\n\tOnlyPassing bool\n\n\t// Tags are a set of required and/or disallowed tags. If a tag is in\n\t// this list it must be present. If the tag is preceded with \"!\" then\n\t// it is disallowed.\n\tTags []string\n\n\t// NodeMeta is a map of required node metadata fields. If a key/value\n\t// pair is in this map it must be present on the node in order for the\n\t// service entry to be returned.\n\tNodeMeta map[string]string\n\n\t// ServiceMeta is a map of required service metadata fields. If a key/value\n\t// pair is in this map it must be present on the node in order for the\n\t// service entry to be returned.\n\tServiceMeta map[string]string\n\n\t// Connect if true will filter the prepared query results to only\n\t// include Connect-capable services. These include both native services\n\t// and proxies for matching services. Note that if a proxy matches,\n\t// the constraints in the query above (Near, OnlyPassing, etc.) apply\n\t// to the _proxy_ and not the service being proxied. In practice, proxies\n\t// should be directly next to their services so this isn't an issue.\n\tConnect bool\n}\n\n// QueryTemplate carries the arguments for creating a templated query.\ntype QueryTemplate struct {\n\t// Type specifies the type of the query template. Currently only\n\t// \"name_prefix_match\" is supported. This field is required.\n\tType string\n\n\t// Regexp allows specifying a regex pattern to match against the name\n\t// of the query being executed.\n\tRegexp string\n\n\t// RemoveEmptyTags if set to true, will cause the Tags list inside\n\t// the Service structure to be stripped of any empty strings. This is useful\n\t// when interpolating into tags in a way where the tag is optional, and\n\t// where searching for an empty tag would yield no results from the query.\n\tRemoveEmptyTags bool\n}\n\n// PreparedQueryDefinition defines a complete prepared query.\ntype PreparedQueryDefinition struct {\n\t// ID is this UUID-based ID for the query, always generated by Consul.\n\tID string\n\n\t// Name is an optional friendly name for the query supplied by the\n\t// user. NOTE - if this feature is used then it will reduce the security\n\t// of any read ACL associated with this query/service since this name\n\t// can be used to locate nodes with supplying any ACL.\n\tName string\n\n\t// Session is an optional session to tie this query's lifetime to. If\n\t// this is omitted then the query will not expire.\n\tSession string\n\n\t// Token is the ACL token used when the query was created, and it is\n\t// used when a query is subsequently executed. This token, or a token\n\t// with management privileges, must be used to change the query later.\n\tToken string\n\n\t// Service defines a service query (leaving things open for other types\n\t// later).\n\tService ServiceQuery\n\n\t// DNS has options that control how the results of this query are\n\t// served over DNS.\n\tDNS QueryDNSOptions\n\n\t// Template is used to pass through the arguments for creating a\n\t// prepared query with an attached template. If a template is given,\n\t// interpolations are possible in other struct fields.\n\tTemplate QueryTemplate\n}\n\n// PreparedQueryExecuteResponse has the results of executing a query.\ntype PreparedQueryExecuteResponse struct {\n\t// Service is the service that was queried.\n\tService string\n\n\t// Namespace of the service that was queried\n\tNamespace string `json:\",omitempty\"`\n\n\t// Nodes has the nodes that were output by the query.\n\tNodes []ServiceEntry\n\n\t// DNS has the options for serving these results over DNS.\n\tDNS QueryDNSOptions\n\n\t// Datacenter is the datacenter that these results came from.\n\tDatacenter string\n\n\t// Failovers is a count of how many times we had to query a remote\n\t// datacenter.\n\tFailovers int\n}\n\n// PreparedQuery can be used to query the prepared query endpoints.\ntype PreparedQuery struct {\n\tc *Client\n}\n\n// PreparedQuery returns a handle to the prepared query endpoints.\nfunc (c *Client) PreparedQuery() *PreparedQuery {\n\treturn &PreparedQuery{c}\n}\n\n// Create makes a new prepared query. The ID of the new query is returned.\nfunc (c *PreparedQuery) Create(query *PreparedQueryDefinition, q *WriteOptions) (string, *WriteMeta, error) {\n\tr := c.c.newRequest(\"POST\", \"/v1/query\")\n\tr.setWriteOptions(q)\n\tr.obj = query\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\n\tvar out struct{ ID string }\n\tif err := decodeBody(resp, &out); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\treturn out.ID, wm, nil\n}\n\n// Update makes updates to an existing prepared query.\nfunc (c *PreparedQuery) Update(query *PreparedQueryDefinition, q *WriteOptions) (*WriteMeta, error) {\n\treturn c.c.write(\"/v1/query/\"+query.ID, query, nil, q)\n}\n\n// List is used to fetch all the prepared queries (always requires a management\n// token).\nfunc (c *PreparedQuery) List(q *QueryOptions) ([]*PreparedQueryDefinition, *QueryMeta, error) {\n\tvar out []*PreparedQueryDefinition\n\tqm, err := c.c.query(\"/v1/query\", &out, q)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// Get is used to fetch a specific prepared query.\nfunc (c *PreparedQuery) Get(queryID string, q *QueryOptions) ([]*PreparedQueryDefinition, *QueryMeta, error) {\n\tvar out []*PreparedQueryDefinition\n\tqm, err := c.c.query(\"/v1/query/\"+queryID, &out, q)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n\n// Delete is used to delete a specific prepared query.\nfunc (c *PreparedQuery) Delete(queryID string, q *WriteOptions) (*WriteMeta, error) {\n\tr := c.c.newRequest(\"DELETE\", \"/v1/query/\"+queryID)\n\tr.setWriteOptions(q)\n\trtt, resp, err := c.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\twm := &WriteMeta{}\n\twm.RequestTime = rtt\n\treturn wm, nil\n}\n\n// Execute is used to execute a specific prepared query. You can execute using\n// a query ID or name.\nfunc (c *PreparedQuery) Execute(queryIDOrName string, q *QueryOptions) (*PreparedQueryExecuteResponse, *QueryMeta, error) {\n\tvar out *PreparedQueryExecuteResponse\n\tqm, err := c.c.query(\"/v1/query/\"+queryIDOrName+\"/execute\", &out, q)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn out, qm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/raw.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// Raw can be used to do raw queries against custom endpoints\ntype Raw struct {\n\tc *Client\n}\n\n// Raw returns a handle to query endpoints\nfunc (c *Client) Raw() *Raw {\n\treturn &Raw{c}\n}\n\n// Query is used to do a GET request against an endpoint\n// and deserialize the response into an interface using\n// standard Consul conventions.\nfunc (raw *Raw) Query(endpoint string, out interface{}, q *QueryOptions) (*QueryMeta, error) {\n\treturn raw.c.query(endpoint, out, q)\n}\n\n// Write is used to do a PUT request against an endpoint\n// and serialize/deserialized using the standard Consul conventions.\nfunc (raw *Raw) Write(endpoint string, in, out interface{}, q *WriteOptions) (*WriteMeta, error) {\n\treturn raw.c.write(endpoint, in, out, q)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/semaphore.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"path\"\n\t\"sync\"\n\t\"time\"\n)\n\nconst (\n\t// DefaultSemaphoreSessionName is the Session Name we assign if none is provided\n\tDefaultSemaphoreSessionName = \"Consul API Semaphore\"\n\n\t// DefaultSemaphoreSessionTTL is the default session TTL if no Session is provided\n\t// when creating a new Semaphore. This is used because we do not have another\n\t// other check to depend upon.\n\tDefaultSemaphoreSessionTTL = \"15s\"\n\n\t// DefaultSemaphoreWaitTime is how long we block for at a time to check if semaphore\n\t// acquisition is possible. This affects the minimum time it takes to cancel\n\t// a Semaphore acquisition.\n\tDefaultSemaphoreWaitTime = 15 * time.Second\n\n\t// DefaultSemaphoreKey is the key used within the prefix to\n\t// use for coordination between all the contenders.\n\tDefaultSemaphoreKey = \".lock\"\n\n\t// SemaphoreFlagValue is a magic flag we set to indicate a key\n\t// is being used for a semaphore. It is used to detect a potential\n\t// conflict with a lock.\n\tSemaphoreFlagValue = 0xe0f69a2baa414de0\n)\n\nvar (\n\t// ErrSemaphoreHeld is returned if we attempt to double lock\n\tErrSemaphoreHeld = fmt.Errorf(\"Semaphore already held\")\n\n\t// ErrSemaphoreNotHeld is returned if we attempt to unlock a semaphore\n\t// that we do not hold.\n\tErrSemaphoreNotHeld = fmt.Errorf(\"Semaphore not held\")\n\n\t// ErrSemaphoreInUse is returned if we attempt to destroy a semaphore\n\t// that is in use.\n\tErrSemaphoreInUse = fmt.Errorf(\"Semaphore in use\")\n\n\t// ErrSemaphoreConflict is returned if the flags on a key\n\t// used for a semaphore do not match expectation\n\tErrSemaphoreConflict = fmt.Errorf(\"Existing key does not match semaphore use\")\n)\n\n// Semaphore is used to implement a distributed semaphore\n// using the Consul KV primitives.\ntype Semaphore struct {\n\tc    *Client\n\topts *SemaphoreOptions\n\n\tisHeld       bool\n\tsessionRenew chan struct{}\n\tlockSession  string\n\tl            sync.Mutex\n}\n\n// SemaphoreOptions is used to parameterize the Semaphore\ntype SemaphoreOptions struct {\n\tPrefix            string        // Must be set and have write permissions\n\tLimit             int           // Must be set, and be positive\n\tValue             []byte        // Optional, value to associate with the contender entry\n\tSession           string        // Optional, created if not specified\n\tSessionName       string        // Optional, defaults to DefaultLockSessionName\n\tSessionTTL        string        // Optional, defaults to DefaultLockSessionTTL\n\tMonitorRetries    int           // Optional, defaults to 0 which means no retries\n\tMonitorRetryTime  time.Duration // Optional, defaults to DefaultMonitorRetryTime\n\tSemaphoreWaitTime time.Duration // Optional, defaults to DefaultSemaphoreWaitTime\n\tSemaphoreTryOnce  bool          // Optional, defaults to false which means try forever\n\tNamespace         string        `json:\",omitempty\"` // Optional, defaults to API client config, namespace of ACL token, or \"default\" namespace\n}\n\n// semaphoreLock is written under the DefaultSemaphoreKey and\n// is used to coordinate between all the contenders.\ntype semaphoreLock struct {\n\t// Limit is the integer limit of holders. This is used to\n\t// verify that all the holders agree on the value.\n\tLimit int\n\n\t// Holders is a list of all the semaphore holders.\n\t// It maps the session ID to true. It is used as a set effectively.\n\tHolders map[string]bool\n}\n\n// SemaphorePrefix is used to created a Semaphore which will operate\n// at the given KV prefix and uses the given limit for the semaphore.\n// The prefix must have write privileges, and the limit must be agreed\n// upon by all contenders.\nfunc (c *Client) SemaphorePrefix(prefix string, limit int) (*Semaphore, error) {\n\topts := &SemaphoreOptions{\n\t\tPrefix: prefix,\n\t\tLimit:  limit,\n\t}\n\treturn c.SemaphoreOpts(opts)\n}\n\n// SemaphoreOpts is used to create a Semaphore with the given options.\n// The prefix must have write privileges, and the limit must be agreed\n// upon by all contenders. If a Session is not provided, one will be created.\nfunc (c *Client) SemaphoreOpts(opts *SemaphoreOptions) (*Semaphore, error) {\n\tif opts.Prefix == \"\" {\n\t\treturn nil, fmt.Errorf(\"missing prefix\")\n\t}\n\tif opts.Limit <= 0 {\n\t\treturn nil, fmt.Errorf(\"semaphore limit must be positive\")\n\t}\n\tif opts.SessionName == \"\" {\n\t\topts.SessionName = DefaultSemaphoreSessionName\n\t}\n\tif opts.SessionTTL == \"\" {\n\t\topts.SessionTTL = DefaultSemaphoreSessionTTL\n\t} else {\n\t\tif _, err := time.ParseDuration(opts.SessionTTL); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid SessionTTL: %v\", err)\n\t\t}\n\t}\n\tif opts.MonitorRetryTime == 0 {\n\t\topts.MonitorRetryTime = DefaultMonitorRetryTime\n\t}\n\tif opts.SemaphoreWaitTime == 0 {\n\t\topts.SemaphoreWaitTime = DefaultSemaphoreWaitTime\n\t}\n\ts := &Semaphore{\n\t\tc:    c,\n\t\topts: opts,\n\t}\n\treturn s, nil\n}\n\n// Acquire attempts to reserve a slot in the semaphore, blocking until\n// success, interrupted via the stopCh or an error is encountered.\n// Providing a non-nil stopCh can be used to abort the attempt.\n// On success, a channel is returned that represents our slot.\n// This channel could be closed at any time due to session invalidation,\n// communication errors, operator intervention, etc. It is NOT safe to\n// assume that the slot is held until Release() unless the Session is specifically\n// created without any associated health checks. By default Consul sessions\n// prefer liveness over safety and an application must be able to handle\n// the session being lost.\nfunc (s *Semaphore) Acquire(stopCh <-chan struct{}) (<-chan struct{}, error) {\n\t// Hold the lock as we try to acquire\n\ts.l.Lock()\n\tdefer s.l.Unlock()\n\n\t// Check if we already hold the semaphore\n\tif s.isHeld {\n\t\treturn nil, ErrSemaphoreHeld\n\t}\n\n\t// Check if we need to create a session first\n\ts.lockSession = s.opts.Session\n\tif s.lockSession == \"\" {\n\t\tsess, err := s.createSession()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create session: %v\", err)\n\t\t}\n\n\t\ts.sessionRenew = make(chan struct{})\n\t\ts.lockSession = sess\n\t\tsession := s.c.Session()\n\t\tgo session.RenewPeriodic(s.opts.SessionTTL, sess, nil, s.sessionRenew)\n\n\t\t// If we fail to acquire the lock, cleanup the session\n\t\tdefer func() {\n\t\t\tif !s.isHeld {\n\t\t\t\tclose(s.sessionRenew)\n\t\t\t\ts.sessionRenew = nil\n\t\t\t}\n\t\t}()\n\t}\n\n\t// Create the contender entry\n\tkv := s.c.KV()\n\twOpts := WriteOptions{Namespace: s.opts.Namespace}\n\n\tmade, _, err := kv.Acquire(s.contenderEntry(s.lockSession), &wOpts)\n\tif err != nil || !made {\n\t\treturn nil, fmt.Errorf(\"failed to make contender entry: %v\", err)\n\t}\n\n\t// Setup the query options\n\tqOpts := QueryOptions{\n\t\tWaitTime:  s.opts.SemaphoreWaitTime,\n\t\tNamespace: s.opts.Namespace,\n\t}\n\n\tstart := time.Now()\n\tattempts := 0\nWAIT:\n\t// Check if we should quit\n\tselect {\n\tcase <-stopCh:\n\t\treturn nil, nil\n\tdefault:\n\t}\n\n\t// Handle the one-shot mode.\n\tif s.opts.SemaphoreTryOnce && attempts > 0 {\n\t\telapsed := time.Since(start)\n\t\tif elapsed > s.opts.SemaphoreWaitTime {\n\t\t\treturn nil, nil\n\t\t}\n\n\t\t// Query wait time should not exceed the semaphore wait time\n\t\tqOpts.WaitTime = s.opts.SemaphoreWaitTime - elapsed\n\t}\n\tattempts++\n\n\t// Read the prefix\n\tpairs, meta, err := kv.List(s.opts.Prefix, &qOpts)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read prefix: %v\", err)\n\t}\n\n\t// Decode the lock\n\tlockPair := s.findLock(pairs)\n\tif lockPair.Flags != SemaphoreFlagValue {\n\t\treturn nil, ErrSemaphoreConflict\n\t}\n\tlock, err := s.decodeLock(lockPair)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Verify we agree with the limit\n\tif lock.Limit != s.opts.Limit {\n\t\treturn nil, fmt.Errorf(\"semaphore limit conflict (lock: %d, local: %d)\",\n\t\t\tlock.Limit, s.opts.Limit)\n\t}\n\n\t// Prune the dead holders\n\ts.pruneDeadHolders(lock, pairs)\n\n\t// Check if the lock is held\n\tif len(lock.Holders) >= lock.Limit {\n\t\tqOpts.WaitIndex = meta.LastIndex\n\t\tgoto WAIT\n\t}\n\n\t// Create a new lock with us as a holder\n\tlock.Holders[s.lockSession] = true\n\tnewLock, err := s.encodeLock(lock, lockPair.ModifyIndex)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Attempt the acquisition\n\tdidSet, _, err := kv.CAS(newLock, &wOpts)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to update lock: %v\", err)\n\t}\n\tif !didSet {\n\t\t// Update failed, could have been a race with another contender,\n\t\t// retry the operation\n\t\tgoto WAIT\n\t}\n\n\t// Watch to ensure we maintain ownership of the slot\n\tlockCh := make(chan struct{})\n\tgo s.monitorLock(s.lockSession, lockCh)\n\n\t// Set that we own the lock\n\ts.isHeld = true\n\n\t// Acquired! All done\n\treturn lockCh, nil\n}\n\n// Release is used to voluntarily give up our semaphore slot. It is\n// an error to call this if the semaphore has not been acquired.\nfunc (s *Semaphore) Release() error {\n\t// Hold the lock as we try to release\n\ts.l.Lock()\n\tdefer s.l.Unlock()\n\n\t// Ensure the lock is actually held\n\tif !s.isHeld {\n\t\treturn ErrSemaphoreNotHeld\n\t}\n\n\t// Set that we no longer own the lock\n\ts.isHeld = false\n\n\t// Stop the session renew\n\tif s.sessionRenew != nil {\n\t\tdefer func() {\n\t\t\tclose(s.sessionRenew)\n\t\t\ts.sessionRenew = nil\n\t\t}()\n\t}\n\n\t// Get and clear the lock session\n\tlockSession := s.lockSession\n\ts.lockSession = \"\"\n\n\t// Remove ourselves as a lock holder\n\tkv := s.c.KV()\n\tkey := path.Join(s.opts.Prefix, DefaultSemaphoreKey)\n\n\twOpts := WriteOptions{Namespace: s.opts.Namespace}\n\tqOpts := QueryOptions{Namespace: s.opts.Namespace}\n\nREAD:\n\tpair, _, err := kv.Get(key, &qOpts)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif pair == nil {\n\t\tpair = &KVPair{}\n\t}\n\tlock, err := s.decodeLock(pair)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Create a new lock without us as a holder\n\tif _, ok := lock.Holders[lockSession]; ok {\n\t\tdelete(lock.Holders, lockSession)\n\t\tnewLock, err := s.encodeLock(lock, pair.ModifyIndex)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Swap the locks\n\t\tdidSet, _, err := kv.CAS(newLock, &wOpts)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to update lock: %v\", err)\n\t\t}\n\t\tif !didSet {\n\t\t\tgoto READ\n\t\t}\n\t}\n\n\t// Destroy the contender entry\n\tcontenderKey := path.Join(s.opts.Prefix, lockSession)\n\tif _, err := kv.Delete(contenderKey, &wOpts); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// Destroy is used to cleanup the semaphore entry. It is not necessary\n// to invoke. It will fail if the semaphore is in use.\nfunc (s *Semaphore) Destroy() error {\n\t// Hold the lock as we try to acquire\n\ts.l.Lock()\n\tdefer s.l.Unlock()\n\n\t// Check if we already hold the semaphore\n\tif s.isHeld {\n\t\treturn ErrSemaphoreHeld\n\t}\n\n\t// List for the semaphore\n\tkv := s.c.KV()\n\n\tq := QueryOptions{Namespace: s.opts.Namespace}\n\tpairs, _, err := kv.List(s.opts.Prefix, &q)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to read prefix: %v\", err)\n\t}\n\n\t// Find the lock pair, bail if it doesn't exist\n\tlockPair := s.findLock(pairs)\n\tif lockPair.ModifyIndex == 0 {\n\t\treturn nil\n\t}\n\tif lockPair.Flags != SemaphoreFlagValue {\n\t\treturn ErrSemaphoreConflict\n\t}\n\n\t// Decode the lock\n\tlock, err := s.decodeLock(lockPair)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Prune the dead holders\n\ts.pruneDeadHolders(lock, pairs)\n\n\t// Check if there are any holders\n\tif len(lock.Holders) > 0 {\n\t\treturn ErrSemaphoreInUse\n\t}\n\n\t// Attempt the delete\n\tw := WriteOptions{Namespace: s.opts.Namespace}\n\tdidRemove, _, err := kv.DeleteCAS(lockPair, &w)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to remove semaphore: %v\", err)\n\t}\n\tif !didRemove {\n\t\treturn ErrSemaphoreInUse\n\t}\n\treturn nil\n}\n\n// createSession is used to create a new managed session\nfunc (s *Semaphore) createSession() (string, error) {\n\tsession := s.c.Session()\n\tse := &SessionEntry{\n\t\tName:     s.opts.SessionName,\n\t\tTTL:      s.opts.SessionTTL,\n\t\tBehavior: SessionBehaviorDelete,\n\t}\n\n\tw := WriteOptions{Namespace: s.opts.Namespace}\n\tid, _, err := session.Create(se, &w)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn id, nil\n}\n\n// contenderEntry returns a formatted KVPair for the contender\nfunc (s *Semaphore) contenderEntry(session string) *KVPair {\n\treturn &KVPair{\n\t\tKey:     path.Join(s.opts.Prefix, session),\n\t\tValue:   s.opts.Value,\n\t\tSession: session,\n\t\tFlags:   SemaphoreFlagValue,\n\t}\n}\n\n// findLock is used to find the KV Pair which is used for coordination\nfunc (s *Semaphore) findLock(pairs KVPairs) *KVPair {\n\tkey := path.Join(s.opts.Prefix, DefaultSemaphoreKey)\n\tfor _, pair := range pairs {\n\t\tif pair.Key == key {\n\t\t\treturn pair\n\t\t}\n\t}\n\treturn &KVPair{Flags: SemaphoreFlagValue}\n}\n\n// decodeLock is used to decode a semaphoreLock from an\n// entry in Consul\nfunc (s *Semaphore) decodeLock(pair *KVPair) (*semaphoreLock, error) {\n\t// Handle if there is no lock\n\tif pair == nil || pair.Value == nil {\n\t\treturn &semaphoreLock{\n\t\t\tLimit:   s.opts.Limit,\n\t\t\tHolders: make(map[string]bool),\n\t\t}, nil\n\t}\n\n\tl := &semaphoreLock{}\n\tif err := json.Unmarshal(pair.Value, l); err != nil {\n\t\treturn nil, fmt.Errorf(\"lock decoding failed: %v\", err)\n\t}\n\treturn l, nil\n}\n\n// encodeLock is used to encode a semaphoreLock into a KVPair\n// that can be PUT\nfunc (s *Semaphore) encodeLock(l *semaphoreLock, oldIndex uint64) (*KVPair, error) {\n\tenc, err := json.Marshal(l)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"lock encoding failed: %v\", err)\n\t}\n\tpair := &KVPair{\n\t\tKey:         path.Join(s.opts.Prefix, DefaultSemaphoreKey),\n\t\tValue:       enc,\n\t\tFlags:       SemaphoreFlagValue,\n\t\tModifyIndex: oldIndex,\n\t}\n\treturn pair, nil\n}\n\n// pruneDeadHolders is used to remove all the dead lock holders\nfunc (s *Semaphore) pruneDeadHolders(lock *semaphoreLock, pairs KVPairs) {\n\t// Gather all the live holders\n\talive := make(map[string]struct{}, len(pairs))\n\tfor _, pair := range pairs {\n\t\tif pair.Session != \"\" {\n\t\t\talive[pair.Session] = struct{}{}\n\t\t}\n\t}\n\n\t// Remove any holders that are dead\n\tfor holder := range lock.Holders {\n\t\tif _, ok := alive[holder]; !ok {\n\t\t\tdelete(lock.Holders, holder)\n\t\t}\n\t}\n}\n\n// monitorLock is a long running routine to monitor a semaphore ownership\n// It closes the stopCh if we lose our slot.\nfunc (s *Semaphore) monitorLock(session string, stopCh chan struct{}) {\n\tdefer close(stopCh)\n\tkv := s.c.KV()\n\topts := QueryOptions{\n\t\tRequireConsistent: true,\n\t\tNamespace:         s.opts.Namespace,\n\t}\nWAIT:\n\tretries := s.opts.MonitorRetries\nRETRY:\n\tpairs, meta, err := kv.List(s.opts.Prefix, &opts)\n\tif err != nil {\n\t\t// If configured we can try to ride out a brief Consul unavailability\n\t\t// by doing retries. Note that we have to attempt the retry in a non-\n\t\t// blocking fashion so that we have a clean place to reset the retry\n\t\t// counter if service is restored.\n\t\tif retries > 0 && IsRetryableError(err) {\n\t\t\ttime.Sleep(s.opts.MonitorRetryTime)\n\t\t\tretries--\n\t\t\topts.WaitIndex = 0\n\t\t\tgoto RETRY\n\t\t}\n\t\treturn\n\t}\n\tlockPair := s.findLock(pairs)\n\tlock, err := s.decodeLock(lockPair)\n\tif err != nil {\n\t\treturn\n\t}\n\ts.pruneDeadHolders(lock, pairs)\n\tif _, ok := lock.Holders[session]; ok {\n\t\topts.WaitIndex = meta.LastIndex\n\t\tgoto WAIT\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/session.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n)\n\nconst (\n\t// SessionBehaviorRelease is the default behavior and causes\n\t// all associated locks to be released on session invalidation.\n\tSessionBehaviorRelease = \"release\"\n\n\t// SessionBehaviorDelete is new in Consul 0.5 and changes the\n\t// behavior to delete all associated locks on session invalidation.\n\t// It can be used in a way similar to Ephemeral Nodes in ZooKeeper.\n\tSessionBehaviorDelete = \"delete\"\n)\n\nvar ErrSessionExpired = errors.New(\"session expired\")\n\n// SessionEntry represents a session in consul\ntype SessionEntry struct {\n\tCreateIndex uint64\n\tID          string\n\tName        string\n\tNode        string\n\tLockDelay   time.Duration\n\tBehavior    string\n\tTTL         string\n\tNamespace   string `json:\",omitempty\"`\n\n\t// Deprecated for Consul Enterprise in v1.7.0.\n\tChecks []string\n\n\t// NodeChecks and ServiceChecks are new in Consul 1.7.0.\n\t// When associating checks with sessions, namespaces can be specified for service checks.\n\tNodeChecks    []string\n\tServiceChecks []ServiceCheck\n}\n\ntype ServiceCheck struct {\n\tID        string\n\tNamespace string\n}\n\n// Session can be used to query the Session endpoints\ntype Session struct {\n\tc *Client\n}\n\n// Session returns a handle to the session endpoints\nfunc (c *Client) Session() *Session {\n\treturn &Session{c}\n}\n\n// CreateNoChecks is like Create but is used specifically to create\n// a session with no associated health checks.\nfunc (s *Session) CreateNoChecks(se *SessionEntry, q *WriteOptions) (string, *WriteMeta, error) {\n\tbody := make(map[string]interface{})\n\tbody[\"NodeChecks\"] = []string{}\n\tif se != nil {\n\t\tif se.Name != \"\" {\n\t\t\tbody[\"Name\"] = se.Name\n\t\t}\n\t\tif se.Node != \"\" {\n\t\t\tbody[\"Node\"] = se.Node\n\t\t}\n\t\tif se.LockDelay != 0 {\n\t\t\tbody[\"LockDelay\"] = durToMsec(se.LockDelay)\n\t\t}\n\t\tif se.Behavior != \"\" {\n\t\t\tbody[\"Behavior\"] = se.Behavior\n\t\t}\n\t\tif se.TTL != \"\" {\n\t\t\tbody[\"TTL\"] = se.TTL\n\t\t}\n\t}\n\treturn s.create(body, q)\n\n}\n\n// Create makes a new session. Providing a session entry can\n// customize the session. It can also be nil to use defaults.\nfunc (s *Session) Create(se *SessionEntry, q *WriteOptions) (string, *WriteMeta, error) {\n\tvar obj interface{}\n\tif se != nil {\n\t\tbody := make(map[string]interface{})\n\t\tobj = body\n\t\tif se.Name != \"\" {\n\t\t\tbody[\"Name\"] = se.Name\n\t\t}\n\t\tif se.Node != \"\" {\n\t\t\tbody[\"Node\"] = se.Node\n\t\t}\n\t\tif se.LockDelay != 0 {\n\t\t\tbody[\"LockDelay\"] = durToMsec(se.LockDelay)\n\t\t}\n\t\tif len(se.Checks) > 0 {\n\t\t\tbody[\"Checks\"] = se.Checks\n\t\t}\n\t\tif len(se.NodeChecks) > 0 {\n\t\t\tbody[\"NodeChecks\"] = se.NodeChecks\n\t\t}\n\t\tif len(se.ServiceChecks) > 0 {\n\t\t\tbody[\"ServiceChecks\"] = se.ServiceChecks\n\t\t}\n\t\tif se.Behavior != \"\" {\n\t\t\tbody[\"Behavior\"] = se.Behavior\n\t\t}\n\t\tif se.TTL != \"\" {\n\t\t\tbody[\"TTL\"] = se.TTL\n\t\t}\n\t}\n\treturn s.create(obj, q)\n}\n\nfunc (s *Session) create(obj interface{}, q *WriteOptions) (string, *WriteMeta, error) {\n\tvar out struct{ ID string }\n\twm, err := s.c.write(\"/v1/session/create\", obj, &out, q)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\treturn out.ID, wm, nil\n}\n\n// Destroy invalidates a given session\nfunc (s *Session) Destroy(id string, q *WriteOptions) (*WriteMeta, error) {\n\twm, err := s.c.write(\"/v1/session/destroy/\"+id, nil, nil, q)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn wm, nil\n}\n\n// Renew renews the TTL on a given session\nfunc (s *Session) Renew(id string, q *WriteOptions) (*SessionEntry, *WriteMeta, error) {\n\tr := s.c.newRequest(\"PUT\", \"/v1/session/renew/\"+id)\n\tr.setWriteOptions(q)\n\trtt, resp, err := s.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\n\twm := &WriteMeta{RequestTime: rtt}\n\n\tif resp.StatusCode == 404 {\n\t\treturn nil, wm, nil\n\t} else if resp.StatusCode != 200 {\n\t\treturn nil, nil, fmt.Errorf(\"Unexpected response code: %d\", resp.StatusCode)\n\t}\n\n\tvar entries []*SessionEntry\n\tif err := decodeBody(resp, &entries); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"Failed to read response: %v\", err)\n\t}\n\tif len(entries) > 0 {\n\t\treturn entries[0], wm, nil\n\t}\n\treturn nil, wm, nil\n}\n\n// RenewPeriodic is used to periodically invoke Session.Renew on a\n// session until a doneCh is closed. This is meant to be used in a long running\n// goroutine to ensure a session stays valid.\nfunc (s *Session) RenewPeriodic(initialTTL string, id string, q *WriteOptions, doneCh <-chan struct{}) error {\n\tctx := q.Context()\n\n\tttl, err := time.ParseDuration(initialTTL)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\twaitDur := ttl / 2\n\tlastRenewTime := time.Now()\n\tvar lastErr error\n\tfor {\n\t\tif time.Since(lastRenewTime) > ttl {\n\t\t\treturn lastErr\n\t\t}\n\t\tselect {\n\t\tcase <-time.After(waitDur):\n\t\t\tentry, _, err := s.Renew(id, q)\n\t\t\tif err != nil {\n\t\t\t\twaitDur = time.Second\n\t\t\t\tlastErr = err\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif entry == nil {\n\t\t\t\treturn ErrSessionExpired\n\t\t\t}\n\n\t\t\t// Handle the server updating the TTL\n\t\t\tttl, _ = time.ParseDuration(entry.TTL)\n\t\t\twaitDur = ttl / 2\n\t\t\tlastRenewTime = time.Now()\n\n\t\tcase <-doneCh:\n\t\t\t// Attempt a session destroy\n\t\t\ts.Destroy(id, q)\n\t\t\treturn nil\n\n\t\tcase <-ctx.Done():\n\t\t\t// Bail immediately since attempting the destroy would\n\t\t\t// use the canceled context in q, which would just bail.\n\t\t\treturn ctx.Err()\n\t\t}\n\t}\n}\n\n// Info looks up a single session\nfunc (s *Session) Info(id string, q *QueryOptions) (*SessionEntry, *QueryMeta, error) {\n\tvar entries []*SessionEntry\n\tqm, err := s.c.query(\"/v1/session/info/\"+id, &entries, q)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif len(entries) > 0 {\n\t\treturn entries[0], qm, nil\n\t}\n\treturn nil, qm, nil\n}\n\n// List gets sessions for a node\nfunc (s *Session) Node(node string, q *QueryOptions) ([]*SessionEntry, *QueryMeta, error) {\n\tvar entries []*SessionEntry\n\tqm, err := s.c.query(\"/v1/session/node/\"+node, &entries, q)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n\n// List gets all active sessions\nfunc (s *Session) List(q *QueryOptions) ([]*SessionEntry, *QueryMeta, error) {\n\tvar entries []*SessionEntry\n\tqm, err := s.c.query(\"/v1/session/list\", &entries, q)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn entries, qm, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/snapshot.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"io\"\n)\n\n// Snapshot can be used to query the /v1/snapshot endpoint to take snapshots of\n// Consul's internal state and restore snapshots for disaster recovery.\ntype Snapshot struct {\n\tc *Client\n}\n\n// Snapshot returns a handle that exposes the snapshot endpoints.\nfunc (c *Client) Snapshot() *Snapshot {\n\treturn &Snapshot{c}\n}\n\n// Save requests a new snapshot and provides an io.ReadCloser with the snapshot\n// data to save. If this doesn't return an error, then it's the responsibility\n// of the caller to close it. Only a subset of the QueryOptions are supported:\n// Datacenter, AllowStale, and Token.\nfunc (s *Snapshot) Save(q *QueryOptions) (io.ReadCloser, *QueryMeta, error) {\n\tr := s.c.newRequest(\"GET\", \"/v1/snapshot\")\n\tr.setQueryOptions(q)\n\n\trtt, resp, err := s.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\treturn resp.Body, qm, nil\n}\n\n// Restore streams in an existing snapshot and attempts to restore it.\nfunc (s *Snapshot) Restore(q *WriteOptions, in io.Reader) error {\n\tr := s.c.newRequest(\"PUT\", \"/v1/snapshot\")\n\tr.body = in\n\tr.header.Set(\"Content-Type\", \"application/octet-stream\")\n\tr.setWriteOptions(q)\n\t_, resp, err := s.c.doRequest(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := requireOK(resp); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/status.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// Status can be used to query the Status endpoints\ntype Status struct {\n\tc *Client\n}\n\n// Status returns a handle to the status endpoints\nfunc (c *Client) Status() *Status {\n\treturn &Status{c}\n}\n\n// Leader is used to query for a known leader\nfunc (s *Status) LeaderWithQueryOptions(q *QueryOptions) (string, error) {\n\tr := s.c.newRequest(\"GET\", \"/v1/status/leader\")\n\n\tif q != nil {\n\t\tr.setQueryOptions(q)\n\t}\n\n\t_, resp, err := s.c.doRequest(r)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tvar leader string\n\tif err := decodeBody(resp, &leader); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn leader, nil\n}\n\nfunc (s *Status) Leader() (string, error) {\n\treturn s.LeaderWithQueryOptions(nil)\n}\n\n// Peers is used to query for a known raft peers\nfunc (s *Status) PeersWithQueryOptions(q *QueryOptions) ([]string, error) {\n\tr := s.c.newRequest(\"GET\", \"/v1/status/peers\")\n\n\tif q != nil {\n\t\tr.setQueryOptions(q)\n\t}\n\n\t_, resp, err := s.c.doRequest(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\tif err := requireOK(resp); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar peers []string\n\tif err := decodeBody(resp, &peers); err != nil {\n\t\treturn nil, err\n\t}\n\treturn peers, nil\n}\n\nfunc (s *Status) Peers() ([]string, error) {\n\treturn s.PeersWithQueryOptions(nil)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/consul/api/txn.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\n// Txn is used to manipulate the Txn API\ntype Txn struct {\n\tc *Client\n}\n\n// Txn is used to return a handle to the K/V apis\nfunc (c *Client) Txn() *Txn {\n\treturn &Txn{c}\n}\n\n// TxnOp is the internal format we send to Consul. Currently only K/V and\n// check operations are supported.\ntype TxnOp struct {\n\tKV      *KVTxnOp\n\tNode    *NodeTxnOp\n\tService *ServiceTxnOp\n\tCheck   *CheckTxnOp\n}\n\n// TxnOps is a list of transaction operations.\ntype TxnOps []*TxnOp\n\n// TxnResult is the internal format we receive from Consul.\ntype TxnResult struct {\n\tKV      *KVPair\n\tNode    *Node\n\tService *CatalogService\n\tCheck   *HealthCheck\n}\n\n// TxnResults is a list of TxnResult objects.\ntype TxnResults []*TxnResult\n\n// TxnError is used to return information about an operation in a transaction.\ntype TxnError struct {\n\tOpIndex int\n\tWhat    string\n}\n\n// TxnErrors is a list of TxnError objects.\ntype TxnErrors []*TxnError\n\n// TxnResponse is the internal format we receive from Consul.\ntype TxnResponse struct {\n\tResults TxnResults\n\tErrors  TxnErrors\n}\n\n// KVOp constants give possible operations available in a transaction.\ntype KVOp string\n\nconst (\n\tKVSet            KVOp = \"set\"\n\tKVDelete         KVOp = \"delete\"\n\tKVDeleteCAS      KVOp = \"delete-cas\"\n\tKVDeleteTree     KVOp = \"delete-tree\"\n\tKVCAS            KVOp = \"cas\"\n\tKVLock           KVOp = \"lock\"\n\tKVUnlock         KVOp = \"unlock\"\n\tKVGet            KVOp = \"get\"\n\tKVGetOrEmpty     KVOp = \"get-or-empty\"\n\tKVGetTree        KVOp = \"get-tree\"\n\tKVCheckSession   KVOp = \"check-session\"\n\tKVCheckIndex     KVOp = \"check-index\"\n\tKVCheckNotExists KVOp = \"check-not-exists\"\n)\n\n// KVTxnOp defines a single operation inside a transaction.\ntype KVTxnOp struct {\n\tVerb      KVOp\n\tKey       string\n\tValue     []byte\n\tFlags     uint64\n\tIndex     uint64\n\tSession   string\n\tNamespace string `json:\",omitempty\"`\n\tPartition string `json:\",omitempty\"`\n}\n\n// KVTxnOps defines a set of operations to be performed inside a single\n// transaction.\ntype KVTxnOps []*KVTxnOp\n\n// KVTxnResponse has the outcome of a transaction.\ntype KVTxnResponse struct {\n\tResults []*KVPair\n\tErrors  TxnErrors\n}\n\n// SessionOp constants give possible operations available in a transaction.\ntype SessionOp string\n\nconst (\n\tSessionDelete SessionOp = \"delete\"\n)\n\n// SessionTxnOp defines a single operation inside a transaction.\ntype SessionTxnOp struct {\n\tVerb    SessionOp\n\tSession Session\n}\n\n// NodeOp constants give possible operations available in a transaction.\ntype NodeOp string\n\nconst (\n\tNodeGet       NodeOp = \"get\"\n\tNodeSet       NodeOp = \"set\"\n\tNodeCAS       NodeOp = \"cas\"\n\tNodeDelete    NodeOp = \"delete\"\n\tNodeDeleteCAS NodeOp = \"delete-cas\"\n)\n\n// NodeTxnOp defines a single operation inside a transaction.\ntype NodeTxnOp struct {\n\tVerb NodeOp\n\tNode Node\n}\n\n// ServiceOp constants give possible operations available in a transaction.\ntype ServiceOp string\n\nconst (\n\tServiceGet       ServiceOp = \"get\"\n\tServiceSet       ServiceOp = \"set\"\n\tServiceCAS       ServiceOp = \"cas\"\n\tServiceDelete    ServiceOp = \"delete\"\n\tServiceDeleteCAS ServiceOp = \"delete-cas\"\n)\n\n// ServiceTxnOp defines a single operation inside a transaction.\ntype ServiceTxnOp struct {\n\tVerb    ServiceOp\n\tNode    string\n\tService AgentService\n}\n\n// CheckOp constants give possible operations available in a transaction.\ntype CheckOp string\n\nconst (\n\tCheckGet       CheckOp = \"get\"\n\tCheckSet       CheckOp = \"set\"\n\tCheckCAS       CheckOp = \"cas\"\n\tCheckDelete    CheckOp = \"delete\"\n\tCheckDeleteCAS CheckOp = \"delete-cas\"\n)\n\n// CheckTxnOp defines a single operation inside a transaction.\ntype CheckTxnOp struct {\n\tVerb  CheckOp\n\tCheck HealthCheck\n}\n\n// Txn is used to apply multiple Consul operations in a single, atomic transaction.\n//\n// Note that Go will perform the required base64 encoding on the values\n// automatically because the type is a byte slice. Transactions are defined as a\n// list of operations to perform, using the different fields in the TxnOp structure\n// to define operations. If any operation fails, none of the changes are applied\n// to the state store.\n//\n// Even though this is generally a write operation, we take a QueryOptions input\n// and return a QueryMeta output. If the transaction contains only read ops, then\n// Consul will fast-path it to a different endpoint internally which supports\n// consistency controls, but not blocking. If there are write operations then\n// the request will always be routed through raft and any consistency settings\n// will be ignored.\n//\n// Here's an example:\n//\n//\t   ops := KVTxnOps{\n//\t\t   &KVTxnOp{\n//\t\t\t   Verb:    KVLock,\n//\t\t\t   Key:     \"test/lock\",\n//\t\t\t   Session: \"adf4238a-882b-9ddc-4a9d-5b6758e4159e\",\n//\t\t\t   Value:   []byte(\"hello\"),\n//\t\t   },\n//\t\t   &KVTxnOp{\n//\t\t\t   Verb:    KVGet,\n//\t\t\t   Key:     \"another/key\",\n//\t\t   },\n//\t\t   &CheckTxnOp{\n//\t\t\t   Verb:        CheckSet,\n//\t\t\t   HealthCheck: HealthCheck{\n//\t\t\t\t   Node:    \"foo\",\n//\t\t\t\t   CheckID: \"redis:a\",\n//\t\t\t\t   Name:    \"Redis Health Check\",\n//\t\t\t\t   Status:  \"passing\",\n//\t\t\t   },\n//\t\t   }\n//\t   }\n//\t   ok, response, _, err := kv.Txn(&ops, nil)\n//\n// If there is a problem making the transaction request then an error will be\n// returned. Otherwise, the ok value will be true if the transaction succeeded\n// or false if it was rolled back. The response is a structured return value which\n// will have the outcome of the transaction. Its Results member will have entries\n// for each operation. For KV operations, Deleted keys will have a nil entry in the\n// results, and to save space, the Value of each key in the Results will be nil\n// unless the operation is a KVGet. If the transaction was rolled back, the Errors\n// member will have entries referencing the index of the operation that failed\n// along with an error message.\nfunc (t *Txn) Txn(txn TxnOps, q *QueryOptions) (bool, *TxnResponse, *QueryMeta, error) {\n\treturn t.c.txn(txn, q)\n}\n\nfunc (c *Client) txn(txn TxnOps, q *QueryOptions) (bool, *TxnResponse, *QueryMeta, error) {\n\tr := c.newRequest(\"PUT\", \"/v1/txn\")\n\tr.setQueryOptions(q)\n\n\tr.obj = txn\n\trtt, resp, err := c.doRequest(r)\n\tif err != nil {\n\t\treturn false, nil, nil, err\n\t}\n\tdefer closeResponseBody(resp)\n\n\tqm := &QueryMeta{}\n\tparseQueryMeta(resp, qm)\n\tqm.RequestTime = rtt\n\n\tif resp.StatusCode == http.StatusOK || resp.StatusCode == http.StatusConflict {\n\t\tvar txnResp TxnResponse\n\t\tif err := decodeBody(resp, &txnResp); err != nil {\n\t\t\treturn false, nil, nil, err\n\t\t}\n\n\t\treturn resp.StatusCode == http.StatusOK, &txnResp, qm, nil\n\t}\n\n\tvar buf bytes.Buffer\n\tif _, err := io.Copy(&buf, resp.Body); err != nil {\n\t\treturn false, nil, nil, fmt.Errorf(\"Failed to read response: %v\", err)\n\t}\n\treturn false, nil, nil, fmt.Errorf(\"Failed request: %s\", buf.String())\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/errwrap/LICENSE",
    "content": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. “Contributor”\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. “Contributor Version”\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor’s Contribution.\n\n1.3. “Contribution”\n\n     means Covered Software of a particular Contributor.\n\n1.4. “Covered Software”\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. “Incompatible With Secondary Licenses”\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of version\n        1.1 or earlier of the License, but not also under the terms of a\n        Secondary License.\n\n1.6. “Executable Form”\n\n     means any form of the work other than Source Code Form.\n\n1.7. “Larger Work”\n\n     means a work that combines Covered Software with other material, in a separate\n     file or files, that is not Covered Software.\n\n1.8. “License”\n\n     means this document.\n\n1.9. “Licensable”\n\n     means having the right to grant, to the maximum extent possible, whether at the\n     time of the initial grant or subsequently, any and all of the rights conveyed by\n     this License.\n\n1.10. “Modifications”\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to, deletion\n        from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. “Patent Claims” of a Contributor\n\n      means any patent claim(s), including without limitation, method, process,\n      and apparatus claims, in any patent Licensable by such Contributor that\n      would be infringed, but for the grant of the License, by the making,\n      using, selling, offering for sale, having made, import, or transfer of\n      either its Contributions or its Contributor Version.\n\n1.12. “Secondary License”\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. “Source Code Form”\n\n      means the form of the work preferred for making modifications.\n\n1.14. “You” (or “Your”)\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, “You” includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, “control” means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or as\n        part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its Contributions\n        or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution become\n     effective for each Contribution on the date the Contributor first distributes\n     such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under this\n     License. No additional rights or licenses will be implied from the distribution\n     or licensing of Covered Software under this License. Notwithstanding Section\n     2.1(b) above, no patent license is granted by a Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party’s\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of its\n        Contributions.\n\n     This License does not grant any rights in the trademarks, service marks, or\n     logos of any Contributor (except as may be necessary to comply with the\n     notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this License\n     (see Section 10.2) or under the terms of a Secondary License (if permitted\n     under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its Contributions\n     are its original creation(s) or it has sufficient rights to grant the\n     rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under applicable\n     copyright doctrines of fair use, fair dealing, or other equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under the\n     terms of this License. You must inform recipients that the Source Code Form\n     of the Covered Software is governed by the terms of this License, and how\n     they can obtain a copy of this License. You may not attempt to alter or\n     restrict the recipients’ rights in the Source Code Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this License,\n        or sublicense it under different terms, provided that the license for\n        the Executable Form does not attempt to limit or alter the recipients’\n        rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for the\n     Covered Software. If the Larger Work is a combination of Covered Software\n     with a work governed by one or more Secondary Licenses, and the Covered\n     Software is not Incompatible With Secondary Licenses, this License permits\n     You to additionally distribute such Covered Software under the terms of\n     such Secondary License(s), so that the recipient of the Larger Work may, at\n     their option, further distribute the Covered Software under the terms of\n     either this License or such Secondary License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices (including\n     copyright notices, patent notices, disclaimers of warranty, or limitations\n     of liability) contained within the Source Code Form of the Covered\n     Software, except that You may alter any license notices to the extent\n     required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on behalf\n     of any Contributor. You must make it absolutely clear that any such\n     warranty, support, indemnity, or liability obligation is offered by You\n     alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute, judicial\n   order, or regulation then You must: (a) comply with the terms of this License\n   to the maximum extent possible; and (b) describe the limitations and the code\n   they affect. Such description must be placed in a text file included with all\n   distributions of the Covered Software under this License. Except to the\n   extent prohibited by statute or regulation, such description must be\n   sufficiently detailed for a recipient of ordinary skill to be able to\n   understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing basis,\n     if such Contributor fails to notify You of the non-compliance by some\n     reasonable means prior to 60 days after You have come back into compliance.\n     Moreover, Your grants from a particular Contributor are reinstated on an\n     ongoing basis if such Contributor notifies You of the non-compliance by\n     some reasonable means, this is the first time You have received notice of\n     non-compliance with this License from such Contributor, and You become\n     compliant prior to 30 days after Your receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions, counter-claims,\n     and cross-claims) alleging that a Contributor Version directly or\n     indirectly infringes any patent, then the rights granted to You by any and\n     all Contributors for the Covered Software under Section 2.1 of this License\n     shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an “as is” basis, without\n   warranty of any kind, either expressed, implied, or statutory, including,\n   without limitation, warranties that the Covered Software is free of defects,\n   merchantable, fit for a particular purpose or non-infringing. The entire\n   risk as to the quality and performance of the Covered Software is with You.\n   Should any Covered Software prove defective in any respect, You (not any\n   Contributor) assume the cost of any necessary servicing, repair, or\n   correction. This disclaimer of warranty constitutes an essential part of this\n   License. No use of  any Covered Software is authorized under this License\n   except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from such\n   party’s negligence to the extent applicable law prohibits such limitation.\n   Some jurisdictions do not allow the exclusion or limitation of incidental or\n   consequential damages, so this exclusion and limitation may not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts of\n   a jurisdiction where the defendant maintains its principal place of business\n   and such litigation shall be governed by laws of that jurisdiction, without\n   reference to its conflict-of-law provisions. Nothing in this Section shall\n   prevent a party’s ability to bring cross-claims or counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject matter\n   hereof. If any provision of this License is held to be unenforceable, such\n   provision shall be reformed only to the extent necessary to make it\n   enforceable. Any law or regulation which provides that the language of a\n   contract shall be construed against the drafter shall not be used to construe\n   this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version of\n      the License under which You originally received the Covered Software, or\n      under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a modified\n      version of this License if you rename the license and remove any\n      references to the name of the license steward (except to note that such\n      modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses\n      If You choose to distribute Source Code Form that is Incompatible With\n      Secondary Licenses under the terms of this version of the License, the\n      notice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file, then\nYou may include the notice in a location (such as a LICENSE file in a relevant\ndirectory) where a recipient would be likely to look for such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - “Incompatible With Secondary Licenses” Notice\n\n      This Source Code Form is “Incompatible\n      With Secondary Licenses”, as defined by\n      the Mozilla Public License, v. 2.0.\n\n"
  },
  {
    "path": "vendor/github.com/hashicorp/errwrap/README.md",
    "content": "# errwrap\n\n`errwrap` is a package for Go that formalizes the pattern of wrapping errors\nand checking if an error contains another error.\n\nThere is a common pattern in Go of taking a returned `error` value and\nthen wrapping it (such as with `fmt.Errorf`) before returning it. The problem\nwith this pattern is that you completely lose the original `error` structure.\n\nArguably the _correct_ approach is that you should make a custom structure\nimplementing the `error` interface, and have the original error as a field\non that structure, such [as this example](http://golang.org/pkg/os/#PathError).\nThis is a good approach, but you have to know the entire chain of possible\nrewrapping that happens, when you might just care about one.\n\n`errwrap` formalizes this pattern (it doesn't matter what approach you use\nabove) by giving a single interface for wrapping errors, checking if a specific\nerror is wrapped, and extracting that error.\n\n## Installation and Docs\n\nInstall using `go get github.com/hashicorp/errwrap`.\n\nFull documentation is available at\nhttp://godoc.org/github.com/hashicorp/errwrap\n\n## Usage\n\n#### Basic Usage\n\nBelow is a very basic example of its usage:\n\n```go\n// A function that always returns an error, but wraps it, like a real\n// function might.\nfunc tryOpen() error {\n\t_, err := os.Open(\"/i/dont/exist\")\n\tif err != nil {\n\t\treturn errwrap.Wrapf(\"Doesn't exist: {{err}}\", err)\n\t}\n\n\treturn nil\n}\n\nfunc main() {\n\terr := tryOpen()\n\n\t// We can use the Contains helpers to check if an error contains\n\t// another error. It is safe to do this with a nil error, or with\n\t// an error that doesn't even use the errwrap package.\n\tif errwrap.Contains(err, \"does not exist\") {\n\t\t// Do something\n\t}\n\tif errwrap.ContainsType(err, new(os.PathError)) {\n\t\t// Do something\n\t}\n\n\t// Or we can use the associated `Get` functions to just extract\n\t// a specific error. This would return nil if that specific error doesn't\n\t// exist.\n\tperr := errwrap.GetType(err, new(os.PathError))\n}\n```\n\n#### Custom Types\n\nIf you're already making custom types that properly wrap errors, then\nyou can get all the functionality of `errwraps.Contains` and such by\nimplementing the `Wrapper` interface with just one function. Example:\n\n```go\ntype AppError {\n  Code ErrorCode\n  Err  error\n}\n\nfunc (e *AppError) WrappedErrors() []error {\n  return []error{e.Err}\n}\n```\n\nNow this works:\n\n```go\nerr := &AppError{Err: fmt.Errorf(\"an error\")}\nif errwrap.ContainsType(err, fmt.Errorf(\"\")) {\n\t// This will work!\n}\n```\n"
  },
  {
    "path": "vendor/github.com/hashicorp/errwrap/errwrap.go",
    "content": "// Package errwrap implements methods to formalize error wrapping in Go.\n//\n// All of the top-level functions that take an `error` are built to be able\n// to take any error, not just wrapped errors. This allows you to use errwrap\n// without having to type-check and type-cast everywhere.\npackage errwrap\n\nimport (\n\t\"errors\"\n\t\"reflect\"\n\t\"strings\"\n)\n\n// WalkFunc is the callback called for Walk.\ntype WalkFunc func(error)\n\n// Wrapper is an interface that can be implemented by custom types to\n// have all the Contains, Get, etc. functions in errwrap work.\n//\n// When Walk reaches a Wrapper, it will call the callback for every\n// wrapped error in addition to the wrapper itself. Since all the top-level\n// functions in errwrap use Walk, this means that all those functions work\n// with your custom type.\ntype Wrapper interface {\n\tWrappedErrors() []error\n}\n\n// Wrap defines that outer wraps inner, returning an error type that\n// can be cleanly used with the other methods in this package, such as\n// Contains, GetAll, etc.\n//\n// This function won't modify the error message at all (the outer message\n// will be used).\nfunc Wrap(outer, inner error) error {\n\treturn &wrappedError{\n\t\tOuter: outer,\n\t\tInner: inner,\n\t}\n}\n\n// Wrapf wraps an error with a formatting message. This is similar to using\n// `fmt.Errorf` to wrap an error. If you're using `fmt.Errorf` to wrap\n// errors, you should replace it with this.\n//\n// format is the format of the error message. The string '{{err}}' will\n// be replaced with the original error message.\n//\n// Deprecated: Use fmt.Errorf()\nfunc Wrapf(format string, err error) error {\n\touterMsg := \"<nil>\"\n\tif err != nil {\n\t\touterMsg = err.Error()\n\t}\n\n\touter := errors.New(strings.Replace(\n\t\tformat, \"{{err}}\", outerMsg, -1))\n\n\treturn Wrap(outer, err)\n}\n\n// Contains checks if the given error contains an error with the\n// message msg. If err is not a wrapped error, this will always return\n// false unless the error itself happens to match this msg.\nfunc Contains(err error, msg string) bool {\n\treturn len(GetAll(err, msg)) > 0\n}\n\n// ContainsType checks if the given error contains an error with\n// the same concrete type as v. If err is not a wrapped error, this will\n// check the err itself.\nfunc ContainsType(err error, v interface{}) bool {\n\treturn len(GetAllType(err, v)) > 0\n}\n\n// Get is the same as GetAll but returns the deepest matching error.\nfunc Get(err error, msg string) error {\n\tes := GetAll(err, msg)\n\tif len(es) > 0 {\n\t\treturn es[len(es)-1]\n\t}\n\n\treturn nil\n}\n\n// GetType is the same as GetAllType but returns the deepest matching error.\nfunc GetType(err error, v interface{}) error {\n\tes := GetAllType(err, v)\n\tif len(es) > 0 {\n\t\treturn es[len(es)-1]\n\t}\n\n\treturn nil\n}\n\n// GetAll gets all the errors that might be wrapped in err with the\n// given message. The order of the errors is such that the outermost\n// matching error (the most recent wrap) is index zero, and so on.\nfunc GetAll(err error, msg string) []error {\n\tvar result []error\n\n\tWalk(err, func(err error) {\n\t\tif err.Error() == msg {\n\t\t\tresult = append(result, err)\n\t\t}\n\t})\n\n\treturn result\n}\n\n// GetAllType gets all the errors that are the same type as v.\n//\n// The order of the return value is the same as described in GetAll.\nfunc GetAllType(err error, v interface{}) []error {\n\tvar result []error\n\n\tvar search string\n\tif v != nil {\n\t\tsearch = reflect.TypeOf(v).String()\n\t}\n\tWalk(err, func(err error) {\n\t\tvar needle string\n\t\tif err != nil {\n\t\t\tneedle = reflect.TypeOf(err).String()\n\t\t}\n\n\t\tif needle == search {\n\t\t\tresult = append(result, err)\n\t\t}\n\t})\n\n\treturn result\n}\n\n// Walk walks all the wrapped errors in err and calls the callback. If\n// err isn't a wrapped error, this will be called once for err. If err\n// is a wrapped error, the callback will be called for both the wrapper\n// that implements error as well as the wrapped error itself.\nfunc Walk(err error, cb WalkFunc) {\n\tif err == nil {\n\t\treturn\n\t}\n\n\tswitch e := err.(type) {\n\tcase *wrappedError:\n\t\tcb(e.Outer)\n\t\tWalk(e.Inner, cb)\n\tcase Wrapper:\n\t\tcb(err)\n\n\t\tfor _, err := range e.WrappedErrors() {\n\t\t\tWalk(err, cb)\n\t\t}\n\tcase interface{ Unwrap() error }:\n\t\tcb(err)\n\t\tWalk(e.Unwrap(), cb)\n\tdefault:\n\t\tcb(err)\n\t}\n}\n\n// wrappedError is an implementation of error that has both the\n// outer and inner errors.\ntype wrappedError struct {\n\tOuter error\n\tInner error\n}\n\nfunc (w *wrappedError) Error() string {\n\treturn w.Outer.Error()\n}\n\nfunc (w *wrappedError) WrappedErrors() []error {\n\treturn []error{w.Outer, w.Inner}\n}\n\nfunc (w *wrappedError) Unwrap() error {\n\treturn w.Inner\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-cleanhttp/LICENSE",
    "content": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. \"Contributor\"\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n\n     means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the terms of\n        a Secondary License.\n\n1.6. \"Executable Form\"\n\n     means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n\n     means a work that combines Covered Software with other material, in a\n     separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n\n     means this document.\n\n1.9. \"Licensable\"\n\n     means having the right to grant, to the maximum extent possible, whether\n     at the time of the initial grant or subsequently, any and all of the\n     rights conveyed by this License.\n\n1.10. \"Modifications\"\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. \"Patent Claims\" of a Contributor\n\n      means any patent claim(s), including without limitation, method,\n      process, and apparatus claims, in any patent Licensable by such\n      Contributor that would be infringed, but for the grant of the License,\n      by the making, using, selling, offering for sale, having made, import,\n      or transfer of either its Contributions or its Contributor Version.\n\n1.12. \"Secondary License\"\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. \"Source Code Form\"\n\n      means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, \"You\" includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, \"control\" means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or\n        as part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its\n        Contributions or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution\n     become effective for each Contribution on the date the Contributor first\n     distributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under\n     this License. No additional rights or licenses will be implied from the\n     distribution or licensing of Covered Software under this License.\n     Notwithstanding Section 2.1(b) above, no patent license is granted by a\n     Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party's\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of\n        its Contributions.\n\n     This License does not grant any rights in the trademarks, service marks,\n     or logos of any Contributor (except as may be necessary to comply with\n     the notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this\n     License (see Section 10.2) or under the terms of a Secondary License (if\n     permitted under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its\n     Contributions are its original creation(s) or it has sufficient rights to\n     grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under\n     applicable copyright doctrines of fair use, fair dealing, or other\n     equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under\n     the terms of this License. You must inform recipients that the Source\n     Code Form of the Covered Software is governed by the terms of this\n     License, and how they can obtain a copy of this License. You may not\n     attempt to alter or restrict the recipients' rights in the Source Code\n     Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this\n        License, or sublicense it under different terms, provided that the\n        license for the Executable Form does not attempt to limit or alter the\n        recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for\n     the Covered Software. If the Larger Work is a combination of Covered\n     Software with a work governed by one or more Secondary Licenses, and the\n     Covered Software is not Incompatible With Secondary Licenses, this\n     License permits You to additionally distribute such Covered Software\n     under the terms of such Secondary License(s), so that the recipient of\n     the Larger Work may, at their option, further distribute the Covered\n     Software under the terms of either this License or such Secondary\n     License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices\n     (including copyright notices, patent notices, disclaimers of warranty, or\n     limitations of liability) contained within the Source Code Form of the\n     Covered Software, except that You may alter any license notices to the\n     extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on\n     behalf of any Contributor. You must make it absolutely clear that any\n     such warranty, support, indemnity, or liability obligation is offered by\n     You alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute,\n   judicial order, or regulation then You must: (a) comply with the terms of\n   this License to the maximum extent possible; and (b) describe the\n   limitations and the code they affect. Such description must be placed in a\n   text file included with all distributions of the Covered Software under\n   this License. Except to the extent prohibited by statute or regulation,\n   such description must be sufficiently detailed for a recipient of ordinary\n   skill to be able to understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing\n     basis, if such Contributor fails to notify You of the non-compliance by\n     some reasonable means prior to 60 days after You have come back into\n     compliance. Moreover, Your grants from a particular Contributor are\n     reinstated on an ongoing basis if such Contributor notifies You of the\n     non-compliance by some reasonable means, this is the first time You have\n     received notice of non-compliance with this License from such\n     Contributor, and You become compliant prior to 30 days after Your receipt\n     of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions,\n     counter-claims, and cross-claims) alleging that a Contributor Version\n     directly or indirectly infringes any patent, then the rights granted to\n     You by any and all Contributors for the Covered Software under Section\n     2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an \"as is\" basis,\n   without warranty of any kind, either expressed, implied, or statutory,\n   including, without limitation, warranties that the Covered Software is free\n   of defects, merchantable, fit for a particular purpose or non-infringing.\n   The entire risk as to the quality and performance of the Covered Software\n   is with You. Should any Covered Software prove defective in any respect,\n   You (not any Contributor) assume the cost of any necessary servicing,\n   repair, or correction. This disclaimer of warranty constitutes an essential\n   part of this License. No use of  any Covered Software is authorized under\n   this License except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from\n   such party's negligence to the extent applicable law prohibits such\n   limitation. Some jurisdictions do not allow the exclusion or limitation of\n   incidental or consequential damages, so this exclusion and limitation may\n   not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts\n   of a jurisdiction where the defendant maintains its principal place of\n   business and such litigation shall be governed by laws of that\n   jurisdiction, without reference to its conflict-of-law provisions. Nothing\n   in this Section shall prevent a party's ability to bring cross-claims or\n   counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject\n   matter hereof. If any provision of this License is held to be\n   unenforceable, such provision shall be reformed only to the extent\n   necessary to make it enforceable. Any law or regulation which provides that\n   the language of a contract shall be construed against the drafter shall not\n   be used to construe this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version\n      of the License under which You originally received the Covered Software,\n      or under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a\n      modified version of this License if you rename the license and remove\n      any references to the name of the license steward (except to note that\n      such modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\n      Licenses If You choose to distribute Source Code Form that is\n      Incompatible With Secondary Licenses under the terms of this version of\n      the License, the notice described in Exhibit B of this License must be\n      attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file,\nthen You may include the notice in a location (such as a LICENSE file in a\nrelevant directory) where a recipient would be likely to look for such a\nnotice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n\n      This Source Code Form is \"Incompatible\n      With Secondary Licenses\", as defined by\n      the Mozilla Public License, v. 2.0.\n\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-cleanhttp/README.md",
    "content": "# cleanhttp\n\nFunctions for accessing \"clean\" Go http.Client values\n\n-------------\n\nThe Go standard library contains a default `http.Client` called\n`http.DefaultClient`. It is a common idiom in Go code to start with\n`http.DefaultClient` and tweak it as necessary, and in fact, this is\nencouraged; from the `http` package documentation:\n\n> The Client's Transport typically has internal state (cached TCP connections),\nso Clients should be reused instead of created as needed. Clients are safe for\nconcurrent use by multiple goroutines.\n\nUnfortunately, this is a shared value, and it is not uncommon for libraries to\nassume that they are free to modify it at will. With enough dependencies, it\ncan be very easy to encounter strange problems and race conditions due to\nmanipulation of this shared value across libraries and goroutines (clients are\nsafe for concurrent use, but writing values to the client struct itself is not\nprotected).\n\nMaking things worse is the fact that a bare `http.Client` will use a default\n`http.Transport` called `http.DefaultTransport`, which is another global value\nthat behaves the same way. So it is not simply enough to replace\n`http.DefaultClient` with `&http.Client{}`.\n\nThis repository provides some simple functions to get a \"clean\" `http.Client`\n-- one that uses the same default values as the Go standard library, but\nreturns a client that does not share any state with other clients.\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go",
    "content": "package cleanhttp\n\nimport (\n\t\"net\"\n\t\"net/http\"\n\t\"runtime\"\n\t\"time\"\n)\n\n// DefaultTransport returns a new http.Transport with similar default values to\n// http.DefaultTransport, but with idle connections and keepalives disabled.\nfunc DefaultTransport() *http.Transport {\n\ttransport := DefaultPooledTransport()\n\ttransport.DisableKeepAlives = true\n\ttransport.MaxIdleConnsPerHost = -1\n\treturn transport\n}\n\n// DefaultPooledTransport returns a new http.Transport with similar default\n// values to http.DefaultTransport. Do not use this for transient transports as\n// it can leak file descriptors over time. Only use this for transports that\n// will be re-used for the same host(s).\nfunc DefaultPooledTransport() *http.Transport {\n\ttransport := &http.Transport{\n\t\tProxy: http.ProxyFromEnvironment,\n\t\tDialContext: (&net.Dialer{\n\t\t\tTimeout:   30 * time.Second,\n\t\t\tKeepAlive: 30 * time.Second,\n\t\t\tDualStack: true,\n\t\t}).DialContext,\n\t\tMaxIdleConns:          100,\n\t\tIdleConnTimeout:       90 * time.Second,\n\t\tTLSHandshakeTimeout:   10 * time.Second,\n\t\tExpectContinueTimeout: 1 * time.Second,\n\t\tForceAttemptHTTP2:     true,\n\t\tMaxIdleConnsPerHost:   runtime.GOMAXPROCS(0) + 1,\n\t}\n\treturn transport\n}\n\n// DefaultClient returns a new http.Client with similar default values to\n// http.Client, but with a non-shared Transport, idle connections disabled, and\n// keepalives disabled.\nfunc DefaultClient() *http.Client {\n\treturn &http.Client{\n\t\tTransport: DefaultTransport(),\n\t}\n}\n\n// DefaultPooledClient returns a new http.Client with similar default values to\n// http.Client, but with a shared Transport. Do not use this function for\n// transient clients as it can leak file descriptors over time. Only use this\n// for clients that will be re-used for the same host(s).\nfunc DefaultPooledClient() *http.Client {\n\treturn &http.Client{\n\t\tTransport: DefaultPooledTransport(),\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-cleanhttp/doc.go",
    "content": "// Package cleanhttp offers convenience utilities for acquiring \"clean\"\n// http.Transport and http.Client structs.\n//\n// Values set on http.DefaultClient and http.DefaultTransport affect all\n// callers. This can have detrimental effects, esepcially in TLS contexts,\n// where client or root certificates set to talk to multiple endpoints can end\n// up displacing each other, leading to hard-to-debug issues. This package\n// provides non-shared http.Client and http.Transport structs to ensure that\n// the configuration will not be overwritten by other parts of the application\n// or dependencies.\n//\n// The DefaultClient and DefaultTransport functions disable idle connections\n// and keepalives. Without ensuring that idle connections are closed before\n// garbage collection, short-term clients/transports can leak file descriptors,\n// eventually leading to \"too many open files\" errors. If you will be\n// connecting to the same hosts repeatedly from the same client, you can use\n// DefaultPooledClient to receive a client that has connection pooling\n// semantics similar to http.DefaultClient.\n//\npackage cleanhttp\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-cleanhttp/handlers.go",
    "content": "package cleanhttp\n\nimport (\n\t\"net/http\"\n\t\"strings\"\n\t\"unicode\"\n)\n\n// HandlerInput provides input options to cleanhttp's handlers\ntype HandlerInput struct {\n\tErrStatus int\n}\n\n// PrintablePathCheckHandler is a middleware that ensures the request path\n// contains only printable runes.\nfunc PrintablePathCheckHandler(next http.Handler, input *HandlerInput) http.Handler {\n\t// Nil-check on input to make it optional\n\tif input == nil {\n\t\tinput = &HandlerInput{\n\t\t\tErrStatus: http.StatusBadRequest,\n\t\t}\n\t}\n\n\t// Default to http.StatusBadRequest on error\n\tif input.ErrStatus == 0 {\n\t\tinput.ErrStatus = http.StatusBadRequest\n\t}\n\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tif r != nil {\n\t\t\t// Check URL path for non-printable characters\n\t\t\tidx := strings.IndexFunc(r.URL.Path, func(c rune) bool {\n\t\t\t\treturn !unicode.IsPrint(c)\n\t\t\t})\n\n\t\t\tif idx != -1 {\n\t\t\t\tw.WriteHeader(input.ErrStatus)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif next != nil {\n\t\t\t\tnext.ServeHTTP(w, r)\n\t\t\t}\n\t\t}\n\n\t\treturn\n\t})\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/.gitignore",
    "content": ".idea*"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/LICENSE",
    "content": "Copyright (c) 2017 HashiCorp, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/README.md",
    "content": "# go-hclog\n\n[![Go Documentation](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)][godocs]\n\n[godocs]: https://godoc.org/github.com/hashicorp/go-hclog\n\n`go-hclog` is a package for Go that provides a simple key/value logging\ninterface for use in development and production environments.\n\nIt provides logging levels that provide decreased output based upon the\ndesired amount of output, unlike the standard library `log` package.\n\nIt provides `Printf` style logging of values via `hclog.Fmt()`.\n\nIt provides a human readable output mode for use in development as well as\nJSON output mode for production.\n\n## Stability Note\n\nThis library has reached 1.0 stability. Its API can be considered solidified\nand promised through future versions.\n\n## Installation and Docs\n\nInstall using `go get github.com/hashicorp/go-hclog`.\n\nFull documentation is available at\nhttp://godoc.org/github.com/hashicorp/go-hclog\n\n## Usage\n\n### Use the global logger\n\n```go\nhclog.Default().Info(\"hello world\")\n```\n\n```text\n2017-07-05T16:15:55.167-0700 [INFO ] hello world\n```\n\n(Note timestamps are removed in future examples for brevity.)\n\n### Create a new logger\n\n```go\nappLogger := hclog.New(&hclog.LoggerOptions{\n\tName:  \"my-app\",\n\tLevel: hclog.LevelFromString(\"DEBUG\"),\n})\n```\n\n### Emit an Info level message with 2 key/value pairs\n\n```go\ninput := \"5.5\"\n_, err := strconv.ParseInt(input, 10, 32)\nif err != nil {\n\tappLogger.Info(\"Invalid input for ParseInt\", \"input\", input, \"error\", err)\n}\n```\n\n```text\n... [INFO ] my-app: Invalid input for ParseInt: input=5.5 error=\"strconv.ParseInt: parsing \"5.5\": invalid syntax\"\n```\n\n### Create a new Logger for a major subsystem\n\n```go\nsubsystemLogger := appLogger.Named(\"transport\")\nsubsystemLogger.Info(\"we are transporting something\")\n```\n\n```text\n... [INFO ] my-app.transport: we are transporting something\n```\n\nNotice that logs emitted by `subsystemLogger` contain `my-app.transport`,\nreflecting both the application and subsystem names.\n\n### Create a new Logger with fixed key/value pairs\n\nUsing `With()` will include a specific key-value pair in all messages emitted\nby that logger.\n\n```go\nrequestID := \"5fb446b6-6eba-821d-df1b-cd7501b6a363\"\nrequestLogger := subsystemLogger.With(\"request\", requestID)\nrequestLogger.Info(\"we are transporting a request\")\n```\n\n```text\n... [INFO ] my-app.transport: we are transporting a request: request=5fb446b6-6eba-821d-df1b-cd7501b6a363\n```\n\nThis allows sub Loggers to be context specific without having to thread that\ninto all the callers.\n\n### Using `hclog.Fmt()`\n\n```go\ntotalBandwidth := 200\nappLogger.Info(\"total bandwidth exceeded\", \"bandwidth\", hclog.Fmt(\"%d GB/s\", totalBandwidth))\n```\n\n```text\n... [INFO ] my-app: total bandwidth exceeded: bandwidth=\"200 GB/s\"\n```\n\n### Use this with code that uses the standard library logger\n\nIf you want to use the standard library's `log.Logger` interface you can wrap\n`hclog.Logger` by calling the `StandardLogger()` method. This allows you to use\nit with the familiar `Println()`, `Printf()`, etc. For example:\n\n```go\nstdLogger := appLogger.StandardLogger(&hclog.StandardLoggerOptions{\n\tInferLevels: true,\n})\n// Printf() is provided by stdlib log.Logger interface, not hclog.Logger\nstdLogger.Printf(\"[DEBUG] %+v\", stdLogger)\n```\n\n```text\n... [DEBUG] my-app: &{mu:{state:0 sema:0} prefix: flag:0 out:0xc42000a0a0 buf:[]}\n```\n\nAlternatively, you may configure the system-wide logger:\n\n```go\n// log the standard logger from 'import \"log\"'\nlog.SetOutput(appLogger.StandardWriter(&hclog.StandardLoggerOptions{InferLevels: true}))\nlog.SetPrefix(\"\")\nlog.SetFlags(0)\n\nlog.Printf(\"[DEBUG] %d\", 42)\n```\n\n```text\n... [DEBUG] my-app: 42\n```\n\nNotice that if `appLogger` is initialized with the `INFO` log level, _and_ you\nspecify `InferLevels: true`, you will not see any output here. You must change\n`appLogger` to `DEBUG` to see output. See the docs for more information.\n\nIf the log lines start with a timestamp you can use the\n`InferLevelsWithTimestamp` option to try and ignore them. Please note that in order\nfor `InferLevelsWithTimestamp` to be relevant, `InferLevels` must be set to `true`.\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/colorize_unix.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MIT\n\n//go:build !windows\n// +build !windows\n\npackage hclog\n\nimport (\n\t\"github.com/mattn/go-isatty\"\n)\n\n// hasFD is used to check if the writer has an Fd value to check\n// if it's a terminal.\ntype hasFD interface {\n\tFd() uintptr\n}\n\n// setColorization will mutate the values of this logger\n// to appropriately configure colorization options. It provides\n// a wrapper to the output stream on Windows systems.\nfunc (l *intLogger) setColorization(opts *LoggerOptions) {\n\tif opts.Color != AutoColor {\n\t\treturn\n\t}\n\n\tif sc, ok := l.writer.w.(SupportsColor); ok {\n\t\tif !sc.SupportsColor() {\n\t\t\tl.headerColor = ColorOff\n\t\t\tl.writer.color = ColorOff\n\t\t}\n\t\treturn\n\t}\n\n\tfi, ok := l.writer.w.(hasFD)\n\tif !ok {\n\t\treturn\n\t}\n\n\tif !isatty.IsTerminal(fi.Fd()) {\n\t\tl.headerColor = ColorOff\n\t\tl.writer.color = ColorOff\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/colorize_windows.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MIT\n\n//go:build windows\n// +build windows\n\npackage hclog\n\nimport (\n\t\"os\"\n\n\tcolorable \"github.com/mattn/go-colorable\"\n)\n\n// setColorization will mutate the values of this logger\n// to appropriately configure colorization options. It provides\n// a wrapper to the output stream on Windows systems.\nfunc (l *intLogger) setColorization(opts *LoggerOptions) {\n\tif opts.Color == ColorOff {\n\t\treturn\n\t}\n\n\tfi, ok := l.writer.w.(*os.File)\n\tif !ok {\n\t\tl.writer.color = ColorOff\n\t\tl.headerColor = ColorOff\n\t\treturn\n\t}\n\n\tcfi := colorable.NewColorable(fi)\n\n\t// NewColorable detects if color is possible and if it's not, then it\n\t// returns the original value. So we can test if we got the original\n\t// value back to know if color is possible.\n\tif cfi == fi {\n\t\tl.writer.color = ColorOff\n\t\tl.headerColor = ColorOff\n\t} else {\n\t\tl.writer.w = cfi\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/context.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MIT\n\npackage hclog\n\nimport (\n\t\"context\"\n)\n\n// WithContext inserts a logger into the context and is retrievable\n// with FromContext. The optional args can be set with the same syntax as\n// Logger.With to set fields on the inserted logger. This will not modify\n// the logger argument in-place.\nfunc WithContext(ctx context.Context, logger Logger, args ...interface{}) context.Context {\n\t// While we could call logger.With even with zero args, we have this\n\t// check to avoid unnecessary allocations around creating a copy of a\n\t// logger.\n\tif len(args) > 0 {\n\t\tlogger = logger.With(args...)\n\t}\n\n\treturn context.WithValue(ctx, contextKey, logger)\n}\n\n// FromContext returns a logger from the context. This will return L()\n// (the default logger) if no logger is found in the context. Therefore,\n// this will never return a nil value.\nfunc FromContext(ctx context.Context) Logger {\n\tlogger, _ := ctx.Value(contextKey).(Logger)\n\tif logger == nil {\n\t\treturn L()\n\t}\n\n\treturn logger\n}\n\n// Unexported new type so that our context key never collides with another.\ntype contextKeyType struct{}\n\n// contextKey is the key used for the context to store the logger.\nvar contextKey = contextKeyType{}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/exclude.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MIT\n\npackage hclog\n\nimport (\n\t\"regexp\"\n\t\"strings\"\n)\n\n// ExcludeByMessage provides a simple way to build a list of log messages that\n// can be queried and matched. This is meant to be used with the Exclude\n// option on Options to suppress log messages. This does not hold any mutexs\n// within itself, so normal usage would be to Add entries at setup and none after\n// Exclude is going to be called. Exclude is called with a mutex held within\n// the Logger, so that doesn't need to use a mutex. Example usage:\n//\n//\tf := new(ExcludeByMessage)\n//\tf.Add(\"Noisy log message text\")\n//\tappLogger.Exclude = f.Exclude\ntype ExcludeByMessage struct {\n\tmessages map[string]struct{}\n}\n\n// Add a message to be filtered. Do not call this after Exclude is to be called\n// due to concurrency issues.\nfunc (f *ExcludeByMessage) Add(msg string) {\n\tif f.messages == nil {\n\t\tf.messages = make(map[string]struct{})\n\t}\n\n\tf.messages[msg] = struct{}{}\n}\n\n// Return true if the given message should be included\nfunc (f *ExcludeByMessage) Exclude(level Level, msg string, args ...interface{}) bool {\n\t_, ok := f.messages[msg]\n\treturn ok\n}\n\n// ExcludeByPrefix is a simple type to match a message string that has a common prefix.\ntype ExcludeByPrefix string\n\n// Matches an message that starts with the prefix.\nfunc (p ExcludeByPrefix) Exclude(level Level, msg string, args ...interface{}) bool {\n\treturn strings.HasPrefix(msg, string(p))\n}\n\n// ExcludeByRegexp takes a regexp and uses it to match a log message string. If it matches\n// the log entry is excluded.\ntype ExcludeByRegexp struct {\n\tRegexp *regexp.Regexp\n}\n\n// Exclude the log message if the message string matches the regexp\nfunc (e ExcludeByRegexp) Exclude(level Level, msg string, args ...interface{}) bool {\n\treturn e.Regexp.MatchString(msg)\n}\n\n// ExcludeFuncs is a slice of functions that will called to see if a log entry\n// should be filtered or not. It stops calling functions once at least one returns\n// true.\ntype ExcludeFuncs []func(level Level, msg string, args ...interface{}) bool\n\n// Calls each function until one of them returns true\nfunc (ff ExcludeFuncs) Exclude(level Level, msg string, args ...interface{}) bool {\n\tfor _, f := range ff {\n\t\tif f(level, msg, args...) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/global.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MIT\n\npackage hclog\n\nimport (\n\t\"sync\"\n\t\"time\"\n)\n\nvar (\n\tprotect sync.Once\n\tdef     Logger\n\n\t// DefaultOptions is used to create the Default logger. These are read\n\t// only when the Default logger is created, so set them as soon as the\n\t// process starts.\n\tDefaultOptions = &LoggerOptions{\n\t\tLevel:  DefaultLevel,\n\t\tOutput: DefaultOutput,\n\t\tTimeFn: time.Now,\n\t}\n)\n\n// Default returns a globally held logger. This can be a good starting\n// place, and then you can use .With() and .Named() to create sub-loggers\n// to be used in more specific contexts.\n// The value of the Default logger can be set via SetDefault() or by\n// changing the options in DefaultOptions.\n//\n// This method is goroutine safe, returning a global from memory, but\n// care should be used if SetDefault() is called it random times\n// in the program as that may result in race conditions and an unexpected\n// Logger being returned.\nfunc Default() Logger {\n\tprotect.Do(func() {\n\t\t// If SetDefault was used before Default() was called, we need to\n\t\t// detect that here.\n\t\tif def == nil {\n\t\t\tdef = New(DefaultOptions)\n\t\t}\n\t})\n\n\treturn def\n}\n\n// L is a short alias for Default().\nfunc L() Logger {\n\treturn Default()\n}\n\n// SetDefault changes the logger to be returned by Default()and L()\n// to the one given. This allows packages to use the default logger\n// and have higher level packages change it to match the execution\n// environment. It returns any old default if there is one.\n//\n// NOTE: This is expected to be called early in the program to setup\n// a default logger. As such, it does not attempt to make itself\n// not racy with regard to the value of the default logger. Ergo\n// if it is called in goroutines, you may experience race conditions\n// with other goroutines retrieving the default logger. Basically,\n// don't do that.\nfunc SetDefault(log Logger) Logger {\n\told := def\n\tdef = log\n\treturn old\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/interceptlogger.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MIT\n\npackage hclog\n\nimport (\n\t\"io\"\n\t\"log\"\n\t\"sync\"\n\t\"sync/atomic\"\n)\n\nvar _ Logger = &interceptLogger{}\n\ntype interceptLogger struct {\n\tLogger\n\n\tmu        *sync.Mutex\n\tsinkCount *int32\n\tSinks     map[SinkAdapter]struct{}\n}\n\nfunc NewInterceptLogger(opts *LoggerOptions) InterceptLogger {\n\tl := newLogger(opts)\n\tif l.callerOffset > 0 {\n\t\t// extra frames for interceptLogger.{Warn,Info,Log,etc...}, and interceptLogger.log\n\t\tl.callerOffset += 2\n\t}\n\tintercept := &interceptLogger{\n\t\tLogger:    l,\n\t\tmu:        new(sync.Mutex),\n\t\tsinkCount: new(int32),\n\t\tSinks:     make(map[SinkAdapter]struct{}),\n\t}\n\n\tatomic.StoreInt32(intercept.sinkCount, 0)\n\n\treturn intercept\n}\n\nfunc (i *interceptLogger) Log(level Level, msg string, args ...interface{}) {\n\ti.log(level, msg, args...)\n}\n\n// log is used to make the caller stack frame lookup consistent. If Warn,Info,etc\n// all called Log then direct calls to Log would have a different stack frame\n// depth. By having all the methods call the same helper we ensure the stack\n// frame depth is the same.\nfunc (i *interceptLogger) log(level Level, msg string, args ...interface{}) {\n\ti.Logger.Log(level, msg, args...)\n\tif atomic.LoadInt32(i.sinkCount) == 0 {\n\t\treturn\n\t}\n\n\ti.mu.Lock()\n\tdefer i.mu.Unlock()\n\tfor s := range i.Sinks {\n\t\ts.Accept(i.Name(), level, msg, i.retrieveImplied(args...)...)\n\t}\n}\n\n// Emit the message and args at TRACE level to log and sinks\nfunc (i *interceptLogger) Trace(msg string, args ...interface{}) {\n\ti.log(Trace, msg, args...)\n}\n\n// Emit the message and args at DEBUG level to log and sinks\nfunc (i *interceptLogger) Debug(msg string, args ...interface{}) {\n\ti.log(Debug, msg, args...)\n}\n\n// Emit the message and args at INFO level to log and sinks\nfunc (i *interceptLogger) Info(msg string, args ...interface{}) {\n\ti.log(Info, msg, args...)\n}\n\n// Emit the message and args at WARN level to log and sinks\nfunc (i *interceptLogger) Warn(msg string, args ...interface{}) {\n\ti.log(Warn, msg, args...)\n}\n\n// Emit the message and args at ERROR level to log and sinks\nfunc (i *interceptLogger) Error(msg string, args ...interface{}) {\n\ti.log(Error, msg, args...)\n}\n\nfunc (i *interceptLogger) retrieveImplied(args ...interface{}) []interface{} {\n\ttop := i.Logger.ImpliedArgs()\n\n\tcp := make([]interface{}, len(top)+len(args))\n\tcopy(cp, top)\n\tcopy(cp[len(top):], args)\n\n\treturn cp\n}\n\n// Create a new sub-Logger that a name descending from the current name.\n// This is used to create a subsystem specific Logger.\n// Registered sinks will subscribe to these messages as well.\nfunc (i *interceptLogger) Named(name string) Logger {\n\treturn i.NamedIntercept(name)\n}\n\n// Create a new sub-Logger with an explicit name. This ignores the current\n// name. This is used to create a standalone logger that doesn't fall\n// within the normal hierarchy. Registered sinks will subscribe\n// to these messages as well.\nfunc (i *interceptLogger) ResetNamed(name string) Logger {\n\treturn i.ResetNamedIntercept(name)\n}\n\n// Create a new sub-Logger that a name decending from the current name.\n// This is used to create a subsystem specific Logger.\n// Registered sinks will subscribe to these messages as well.\nfunc (i *interceptLogger) NamedIntercept(name string) InterceptLogger {\n\tvar sub interceptLogger\n\n\tsub = *i\n\tsub.Logger = i.Logger.Named(name)\n\treturn &sub\n}\n\n// Create a new sub-Logger with an explicit name. This ignores the current\n// name. This is used to create a standalone logger that doesn't fall\n// within the normal hierarchy. Registered sinks will subscribe\n// to these messages as well.\nfunc (i *interceptLogger) ResetNamedIntercept(name string) InterceptLogger {\n\tvar sub interceptLogger\n\n\tsub = *i\n\tsub.Logger = i.Logger.ResetNamed(name)\n\treturn &sub\n}\n\n// Return a sub-Logger for which every emitted log message will contain\n// the given key/value pairs. This is used to create a context specific\n// Logger.\nfunc (i *interceptLogger) With(args ...interface{}) Logger {\n\tvar sub interceptLogger\n\n\tsub = *i\n\n\tsub.Logger = i.Logger.With(args...)\n\n\treturn &sub\n}\n\n// RegisterSink attaches a SinkAdapter to interceptLoggers sinks.\nfunc (i *interceptLogger) RegisterSink(sink SinkAdapter) {\n\ti.mu.Lock()\n\tdefer i.mu.Unlock()\n\n\ti.Sinks[sink] = struct{}{}\n\n\tatomic.AddInt32(i.sinkCount, 1)\n}\n\n// DeregisterSink removes a SinkAdapter from interceptLoggers sinks.\nfunc (i *interceptLogger) DeregisterSink(sink SinkAdapter) {\n\ti.mu.Lock()\n\tdefer i.mu.Unlock()\n\n\tdelete(i.Sinks, sink)\n\n\tatomic.AddInt32(i.sinkCount, -1)\n}\n\nfunc (i *interceptLogger) StandardLoggerIntercept(opts *StandardLoggerOptions) *log.Logger {\n\treturn i.StandardLogger(opts)\n}\n\nfunc (i *interceptLogger) StandardLogger(opts *StandardLoggerOptions) *log.Logger {\n\tif opts == nil {\n\t\topts = &StandardLoggerOptions{}\n\t}\n\n\treturn log.New(i.StandardWriter(opts), \"\", 0)\n}\n\nfunc (i *interceptLogger) StandardWriterIntercept(opts *StandardLoggerOptions) io.Writer {\n\treturn i.StandardWriter(opts)\n}\n\nfunc (i *interceptLogger) StandardWriter(opts *StandardLoggerOptions) io.Writer {\n\treturn &stdlogAdapter{\n\t\tlog:                      i,\n\t\tinferLevels:              opts.InferLevels,\n\t\tinferLevelsWithTimestamp: opts.InferLevelsWithTimestamp,\n\t\tforceLevel:               opts.ForceLevel,\n\t}\n}\n\nfunc (i *interceptLogger) ResetOutput(opts *LoggerOptions) error {\n\tif or, ok := i.Logger.(OutputResettable); ok {\n\t\treturn or.ResetOutput(opts)\n\t} else {\n\t\treturn nil\n\t}\n}\n\nfunc (i *interceptLogger) ResetOutputWithFlush(opts *LoggerOptions, flushable Flushable) error {\n\tif or, ok := i.Logger.(OutputResettable); ok {\n\t\treturn or.ResetOutputWithFlush(opts, flushable)\n\t} else {\n\t\treturn nil\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/intlogger.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MIT\n\npackage hclog\n\nimport (\n\t\"bytes\"\n\t\"encoding\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"github.com/fatih/color\"\n)\n\n// TimeFormat is the time format to use for plain (non-JSON) output.\n// This is a version of RFC3339 that contains millisecond precision.\nconst TimeFormat = \"2006-01-02T15:04:05.000Z0700\"\n\n// TimeFormatJSON is the time format to use for JSON output.\n// This is a version of RFC3339 that contains microsecond precision.\nconst TimeFormatJSON = \"2006-01-02T15:04:05.000000Z07:00\"\n\n// errJsonUnsupportedTypeMsg is included in log json entries, if an arg cannot be serialized to json\nconst errJsonUnsupportedTypeMsg = \"logging contained values that don't serialize to json\"\n\nvar (\n\t_levelToBracket = map[Level]string{\n\t\tDebug: \"[DEBUG]\",\n\t\tTrace: \"[TRACE]\",\n\t\tInfo:  \"[INFO] \",\n\t\tWarn:  \"[WARN] \",\n\t\tError: \"[ERROR]\",\n\t}\n\n\t_levelToColor = map[Level]*color.Color{\n\t\tDebug: color.New(color.FgHiWhite),\n\t\tTrace: color.New(color.FgHiGreen),\n\t\tInfo:  color.New(color.FgHiBlue),\n\t\tWarn:  color.New(color.FgHiYellow),\n\t\tError: color.New(color.FgHiRed),\n\t}\n\n\tfaintBoldColor                 = color.New(color.Faint, color.Bold)\n\tfaintColor                     = color.New(color.Faint)\n\tfaintMultiLinePrefix           string\n\tfaintFieldSeparator            string\n\tfaintFieldSeparatorWithNewLine string\n)\n\nfunc init() {\n\t// Force all the colors to enabled because we do our own detection of color usage.\n\tfor _, c := range _levelToColor {\n\t\tc.EnableColor()\n\t}\n\n\tfaintBoldColor.EnableColor()\n\tfaintColor.EnableColor()\n\n\tfaintMultiLinePrefix = faintColor.Sprint(\"  | \")\n\tfaintFieldSeparator = faintColor.Sprint(\"=\")\n\tfaintFieldSeparatorWithNewLine = faintColor.Sprint(\"=\\n\")\n}\n\n// Make sure that intLogger is a Logger\nvar _ Logger = &intLogger{}\n\n// intLogger is an internal logger implementation. Internal in that it is\n// defined entirely by this package.\ntype intLogger struct {\n\tjson         bool\n\tcallerOffset int\n\tname         string\n\ttimeFormat   string\n\ttimeFn       TimeFunction\n\tdisableTime  bool\n\n\t// This is an interface so that it's shared by any derived loggers, since\n\t// those derived loggers share the bufio.Writer as well.\n\tmutex  Locker\n\twriter *writer\n\tlevel  *int32\n\n\t// The value of curEpoch the last time we performed the level sync process\n\townEpoch uint64\n\n\t// Shared amongst all the loggers created in this hierachy, used to determine\n\t// if the level sync process should be run by comparing it with ownEpoch\n\tcurEpoch *uint64\n\n\t// The logger this one was created from. Only set when syncParentLevel is set\n\tparent *intLogger\n\n\theaderColor ColorOption\n\tfieldColor  ColorOption\n\n\timplied []interface{}\n\n\texclude func(level Level, msg string, args ...interface{}) bool\n\n\t// create subloggers with their own level setting\n\tindependentLevels bool\n\tsyncParentLevel   bool\n\n\tsubloggerHook func(sub Logger) Logger\n}\n\n// New returns a configured logger.\nfunc New(opts *LoggerOptions) Logger {\n\treturn newLogger(opts)\n}\n\n// NewSinkAdapter returns a SinkAdapter with configured settings\n// defined by LoggerOptions\nfunc NewSinkAdapter(opts *LoggerOptions) SinkAdapter {\n\tl := newLogger(opts)\n\tif l.callerOffset > 0 {\n\t\t// extra frames for interceptLogger.{Warn,Info,Log,etc...}, and SinkAdapter.Accept\n\t\tl.callerOffset += 2\n\t}\n\treturn l\n}\n\nfunc newLogger(opts *LoggerOptions) *intLogger {\n\tif opts == nil {\n\t\topts = &LoggerOptions{}\n\t}\n\n\toutput := opts.Output\n\tif output == nil {\n\t\toutput = DefaultOutput\n\t}\n\n\tlevel := opts.Level\n\tif level == NoLevel {\n\t\tlevel = DefaultLevel\n\t}\n\n\tmutex := opts.Mutex\n\tif mutex == nil {\n\t\tmutex = new(sync.Mutex)\n\t}\n\n\tvar (\n\t\tprimaryColor = ColorOff\n\t\theaderColor  = ColorOff\n\t\tfieldColor   = ColorOff\n\t)\n\tswitch {\n\tcase opts.ColorHeaderOnly:\n\t\theaderColor = opts.Color\n\tcase opts.ColorHeaderAndFields:\n\t\tfieldColor = opts.Color\n\t\theaderColor = opts.Color\n\tdefault:\n\t\tprimaryColor = opts.Color\n\t}\n\n\tl := &intLogger{\n\t\tjson:              opts.JSONFormat,\n\t\tname:              opts.Name,\n\t\ttimeFormat:        TimeFormat,\n\t\ttimeFn:            time.Now,\n\t\tdisableTime:       opts.DisableTime,\n\t\tmutex:             mutex,\n\t\twriter:            newWriter(output, primaryColor),\n\t\tlevel:             new(int32),\n\t\tcurEpoch:          new(uint64),\n\t\texclude:           opts.Exclude,\n\t\tindependentLevels: opts.IndependentLevels,\n\t\tsyncParentLevel:   opts.SyncParentLevel,\n\t\theaderColor:       headerColor,\n\t\tfieldColor:        fieldColor,\n\t\tsubloggerHook:     opts.SubloggerHook,\n\t}\n\tif opts.IncludeLocation {\n\t\tl.callerOffset = offsetIntLogger + opts.AdditionalLocationOffset\n\t}\n\n\tif l.json {\n\t\tl.timeFormat = TimeFormatJSON\n\t}\n\tif opts.TimeFn != nil {\n\t\tl.timeFn = opts.TimeFn\n\t}\n\tif opts.TimeFormat != \"\" {\n\t\tl.timeFormat = opts.TimeFormat\n\t}\n\n\tif l.subloggerHook == nil {\n\t\tl.subloggerHook = identityHook\n\t}\n\n\tl.setColorization(opts)\n\n\tatomic.StoreInt32(l.level, int32(level))\n\n\treturn l\n}\n\nfunc identityHook(logger Logger) Logger {\n\treturn logger\n}\n\n// offsetIntLogger is the stack frame offset in the call stack for the caller to\n// one of the Warn, Info, Log, etc methods.\nconst offsetIntLogger = 3\n\n// Log a message and a set of key/value pairs if the given level is at\n// or more severe that the threshold configured in the Logger.\nfunc (l *intLogger) log(name string, level Level, msg string, args ...interface{}) {\n\tif level < l.GetLevel() {\n\t\treturn\n\t}\n\n\tt := l.timeFn()\n\n\tl.mutex.Lock()\n\tdefer l.mutex.Unlock()\n\n\tif l.exclude != nil && l.exclude(level, msg, args...) {\n\t\treturn\n\t}\n\n\tif l.json {\n\t\tl.logJSON(t, name, level, msg, args...)\n\t} else {\n\t\tl.logPlain(t, name, level, msg, args...)\n\t}\n\n\tl.writer.Flush(level)\n}\n\n// Cleanup a path by returning the last 2 segments of the path only.\nfunc trimCallerPath(path string) string {\n\t// lovely borrowed from zap\n\t// nb. To make sure we trim the path correctly on Windows too, we\n\t// counter-intuitively need to use '/' and *not* os.PathSeparator here,\n\t// because the path given originates from Go stdlib, specifically\n\t// runtime.Caller() which (as of Mar/17) returns forward slashes even on\n\t// Windows.\n\t//\n\t// See https://github.com/golang/go/issues/3335\n\t// and https://github.com/golang/go/issues/18151\n\t//\n\t// for discussion on the issue on Go side.\n\n\t// Find the last separator.\n\tidx := strings.LastIndexByte(path, '/')\n\tif idx == -1 {\n\t\treturn path\n\t}\n\n\t// Find the penultimate separator.\n\tidx = strings.LastIndexByte(path[:idx], '/')\n\tif idx == -1 {\n\t\treturn path\n\t}\n\n\treturn path[idx+1:]\n}\n\n// isNormal indicates if the rune is one allowed to exist as an unquoted\n// string value. This is a subset of ASCII, `-` through `~`.\nfunc isNormal(r rune) bool {\n\treturn 0x2D <= r && r <= 0x7E // - through ~\n}\n\n// needsQuoting returns false if all the runes in string are normal, according\n// to isNormal\nfunc needsQuoting(str string) bool {\n\tfor _, r := range str {\n\t\tif !isNormal(r) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// logPlain is the non-JSON logging format function which writes directly\n// to the underlying writer the logger was initialized with.\n//\n// If the logger was initialized with a color function, it also handles\n// applying the color to the log message.\n//\n// Color Options\n//  1. No color.\n//  2. Color the whole log line, based on the level.\n//  3. Color only the header (level) part of the log line.\n//  4. Color both the header and fields of the log line.\nfunc (l *intLogger) logPlain(t time.Time, name string, level Level, msg string, args ...interface{}) {\n\n\tif !l.disableTime {\n\t\tl.writer.WriteString(t.Format(l.timeFormat))\n\t\tl.writer.WriteByte(' ')\n\t}\n\n\ts, ok := _levelToBracket[level]\n\tif ok {\n\t\tif l.headerColor != ColorOff {\n\t\t\tcolor := _levelToColor[level]\n\t\t\tcolor.Fprint(l.writer, s)\n\t\t} else {\n\t\t\tl.writer.WriteString(s)\n\t\t}\n\t} else {\n\t\tl.writer.WriteString(\"[?????]\")\n\t}\n\n\tif l.callerOffset > 0 {\n\t\tif _, file, line, ok := runtime.Caller(l.callerOffset); ok {\n\t\t\tl.writer.WriteByte(' ')\n\t\t\tl.writer.WriteString(trimCallerPath(file))\n\t\t\tl.writer.WriteByte(':')\n\t\t\tl.writer.WriteString(strconv.Itoa(line))\n\t\t\tl.writer.WriteByte(':')\n\t\t}\n\t}\n\n\tl.writer.WriteByte(' ')\n\n\tif name != \"\" {\n\t\tl.writer.WriteString(name)\n\t\tif msg != \"\" {\n\t\t\tl.writer.WriteString(\": \")\n\t\t\tl.writer.WriteString(msg)\n\t\t}\n\t} else if msg != \"\" {\n\t\tl.writer.WriteString(msg)\n\t}\n\n\targs = append(l.implied, args...)\n\n\tvar stacktrace CapturedStacktrace\n\n\tif len(args) > 0 {\n\t\tif len(args)%2 != 0 {\n\t\t\tcs, ok := args[len(args)-1].(CapturedStacktrace)\n\t\t\tif ok {\n\t\t\t\targs = args[:len(args)-1]\n\t\t\t\tstacktrace = cs\n\t\t\t} else {\n\t\t\t\textra := args[len(args)-1]\n\t\t\t\targs = append(args[:len(args)-1], MissingKey, extra)\n\t\t\t}\n\t\t}\n\n\t\tl.writer.WriteByte(':')\n\n\t\t// Handle the field arguments, which come in pairs (key=val).\n\tFOR:\n\t\tfor i := 0; i < len(args); i = i + 2 {\n\t\t\tvar (\n\t\t\t\tkey string\n\t\t\t\tval string\n\t\t\t\traw bool\n\t\t\t)\n\n\t\t\t// Convert the field value to a string.\n\t\t\tswitch st := args[i+1].(type) {\n\t\t\tcase string:\n\t\t\t\tval = st\n\t\t\t\tif st == \"\" {\n\t\t\t\t\tval = `\"\"`\n\t\t\t\t\traw = true\n\t\t\t\t}\n\t\t\tcase int:\n\t\t\t\tval = strconv.FormatInt(int64(st), 10)\n\t\t\tcase int64:\n\t\t\t\tval = strconv.FormatInt(int64(st), 10)\n\t\t\tcase int32:\n\t\t\t\tval = strconv.FormatInt(int64(st), 10)\n\t\t\tcase int16:\n\t\t\t\tval = strconv.FormatInt(int64(st), 10)\n\t\t\tcase int8:\n\t\t\t\tval = strconv.FormatInt(int64(st), 10)\n\t\t\tcase uint:\n\t\t\t\tval = strconv.FormatUint(uint64(st), 10)\n\t\t\tcase uint64:\n\t\t\t\tval = strconv.FormatUint(uint64(st), 10)\n\t\t\tcase uint32:\n\t\t\t\tval = strconv.FormatUint(uint64(st), 10)\n\t\t\tcase uint16:\n\t\t\t\tval = strconv.FormatUint(uint64(st), 10)\n\t\t\tcase uint8:\n\t\t\t\tval = strconv.FormatUint(uint64(st), 10)\n\t\t\tcase Hex:\n\t\t\t\tval = \"0x\" + strconv.FormatUint(uint64(st), 16)\n\t\t\tcase Octal:\n\t\t\t\tval = \"0\" + strconv.FormatUint(uint64(st), 8)\n\t\t\tcase Binary:\n\t\t\t\tval = \"0b\" + strconv.FormatUint(uint64(st), 2)\n\t\t\tcase CapturedStacktrace:\n\t\t\t\tstacktrace = st\n\t\t\t\tcontinue FOR\n\t\t\tcase Format:\n\t\t\t\tval = fmt.Sprintf(st[0].(string), st[1:]...)\n\t\t\tcase Quote:\n\t\t\t\traw = true\n\t\t\t\tval = strconv.Quote(string(st))\n\t\t\tdefault:\n\t\t\t\tv := reflect.ValueOf(st)\n\t\t\t\tif v.Kind() == reflect.Slice {\n\t\t\t\t\tval = l.renderSlice(v)\n\t\t\t\t\traw = true\n\t\t\t\t} else {\n\t\t\t\t\tval = fmt.Sprintf(\"%v\", st)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Convert the field key to a string.\n\t\t\tswitch st := args[i].(type) {\n\t\t\tcase string:\n\t\t\t\tkey = st\n\t\t\tdefault:\n\t\t\t\tkey = fmt.Sprintf(\"%s\", st)\n\t\t\t}\n\n\t\t\t// Optionally apply the ANSI \"faint\" and \"bold\"\n\t\t\t// SGR values to the key.\n\t\t\tif l.fieldColor != ColorOff {\n\t\t\t\tkey = faintBoldColor.Sprint(key)\n\t\t\t}\n\n\t\t\t// Values may contain multiple lines, and that format\n\t\t\t// is preserved, with each line prefixed with a \"  | \"\n\t\t\t// to show it's part of a collection of lines.\n\t\t\t//\n\t\t\t// Values may also need quoting, if not all the runes\n\t\t\t// in the value string are \"normal\", like if they\n\t\t\t// contain ANSI escape sequences.\n\t\t\tif strings.Contains(val, \"\\n\") {\n\t\t\t\tl.writer.WriteString(\"\\n  \")\n\t\t\t\tl.writer.WriteString(key)\n\t\t\t\tif l.fieldColor != ColorOff {\n\t\t\t\t\tl.writer.WriteString(faintFieldSeparatorWithNewLine)\n\t\t\t\t\twriteIndent(l.writer, val, faintMultiLinePrefix)\n\t\t\t\t} else {\n\t\t\t\t\tl.writer.WriteString(\"=\\n\")\n\t\t\t\t\twriteIndent(l.writer, val, \"  | \")\n\t\t\t\t}\n\t\t\t\tl.writer.WriteString(\"  \")\n\t\t\t} else if !raw && needsQuoting(val) {\n\t\t\t\tl.writer.WriteByte(' ')\n\t\t\t\tl.writer.WriteString(key)\n\t\t\t\tif l.fieldColor != ColorOff {\n\t\t\t\t\tl.writer.WriteString(faintFieldSeparator)\n\t\t\t\t} else {\n\t\t\t\t\tl.writer.WriteByte('=')\n\t\t\t\t}\n\t\t\t\tl.writer.WriteByte('\"')\n\t\t\t\twriteEscapedForOutput(l.writer, val, true)\n\t\t\t\tl.writer.WriteByte('\"')\n\t\t\t} else {\n\t\t\t\tl.writer.WriteByte(' ')\n\t\t\t\tl.writer.WriteString(key)\n\t\t\t\tif l.fieldColor != ColorOff {\n\t\t\t\t\tl.writer.WriteString(faintFieldSeparator)\n\t\t\t\t} else {\n\t\t\t\t\tl.writer.WriteByte('=')\n\t\t\t\t}\n\t\t\t\tl.writer.WriteString(val)\n\t\t\t}\n\t\t}\n\t}\n\n\tl.writer.WriteString(\"\\n\")\n\n\tif stacktrace != \"\" {\n\t\tl.writer.WriteString(string(stacktrace))\n\t\tl.writer.WriteString(\"\\n\")\n\t}\n}\n\nfunc writeIndent(w *writer, str string, indent string) {\n\tfor {\n\t\tnl := strings.IndexByte(str, \"\\n\"[0])\n\t\tif nl == -1 {\n\t\t\tif str != \"\" {\n\t\t\t\tw.WriteString(indent)\n\t\t\t\twriteEscapedForOutput(w, str, false)\n\t\t\t\tw.WriteString(\"\\n\")\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tw.WriteString(indent)\n\t\twriteEscapedForOutput(w, str[:nl], false)\n\t\tw.WriteString(\"\\n\")\n\t\tstr = str[nl+1:]\n\t}\n}\n\nfunc needsEscaping(str string) bool {\n\tfor _, b := range str {\n\t\tif !unicode.IsPrint(b) || b == '\"' {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nconst (\n\tlowerhex = \"0123456789abcdef\"\n)\n\nvar bufPool = sync.Pool{\n\tNew: func() interface{} {\n\t\treturn new(bytes.Buffer)\n\t},\n}\n\nfunc writeEscapedForOutput(w io.Writer, str string, escapeQuotes bool) {\n\tif !needsEscaping(str) {\n\t\tw.Write([]byte(str))\n\t\treturn\n\t}\n\n\tbb := bufPool.Get().(*bytes.Buffer)\n\tbb.Reset()\n\n\tdefer bufPool.Put(bb)\n\n\tfor _, r := range str {\n\t\tif escapeQuotes && r == '\"' {\n\t\t\tbb.WriteString(`\\\"`)\n\t\t} else if unicode.IsPrint(r) {\n\t\t\tbb.WriteRune(r)\n\t\t} else {\n\t\t\tswitch r {\n\t\t\tcase '\\a':\n\t\t\t\tbb.WriteString(`\\a`)\n\t\t\tcase '\\b':\n\t\t\t\tbb.WriteString(`\\b`)\n\t\t\tcase '\\f':\n\t\t\t\tbb.WriteString(`\\f`)\n\t\t\tcase '\\n':\n\t\t\t\tbb.WriteString(`\\n`)\n\t\t\tcase '\\r':\n\t\t\t\tbb.WriteString(`\\r`)\n\t\t\tcase '\\t':\n\t\t\t\tbb.WriteString(`\\t`)\n\t\t\tcase '\\v':\n\t\t\t\tbb.WriteString(`\\v`)\n\t\t\tdefault:\n\t\t\t\tswitch {\n\t\t\t\tcase r < ' ':\n\t\t\t\t\tbb.WriteString(`\\x`)\n\t\t\t\t\tbb.WriteByte(lowerhex[byte(r)>>4])\n\t\t\t\t\tbb.WriteByte(lowerhex[byte(r)&0xF])\n\t\t\t\tcase !utf8.ValidRune(r):\n\t\t\t\t\tr = 0xFFFD\n\t\t\t\t\tfallthrough\n\t\t\t\tcase r < 0x10000:\n\t\t\t\t\tbb.WriteString(`\\u`)\n\t\t\t\t\tfor s := 12; s >= 0; s -= 4 {\n\t\t\t\t\t\tbb.WriteByte(lowerhex[r>>uint(s)&0xF])\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tbb.WriteString(`\\U`)\n\t\t\t\t\tfor s := 28; s >= 0; s -= 4 {\n\t\t\t\t\t\tbb.WriteByte(lowerhex[r>>uint(s)&0xF])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tw.Write(bb.Bytes())\n}\n\nfunc (l *intLogger) renderSlice(v reflect.Value) string {\n\tvar buf bytes.Buffer\n\n\tbuf.WriteRune('[')\n\n\tfor i := 0; i < v.Len(); i++ {\n\t\tif i > 0 {\n\t\t\tbuf.WriteString(\", \")\n\t\t}\n\n\t\tsv := v.Index(i)\n\n\t\tvar val string\n\n\t\tswitch sv.Kind() {\n\t\tcase reflect.String:\n\t\t\tval = strconv.Quote(sv.String())\n\t\tcase reflect.Int, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\tval = strconv.FormatInt(sv.Int(), 10)\n\t\tcase reflect.Uint, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\tval = strconv.FormatUint(sv.Uint(), 10)\n\t\tdefault:\n\t\t\tval = fmt.Sprintf(\"%v\", sv.Interface())\n\t\t\tif strings.ContainsAny(val, \" \\t\\n\\r\") {\n\t\t\t\tval = strconv.Quote(val)\n\t\t\t}\n\t\t}\n\n\t\tbuf.WriteString(val)\n\t}\n\n\tbuf.WriteRune(']')\n\n\treturn buf.String()\n}\n\n// JSON logging function\nfunc (l *intLogger) logJSON(t time.Time, name string, level Level, msg string, args ...interface{}) {\n\tvals := l.jsonMapEntry(t, name, level, msg)\n\targs = append(l.implied, args...)\n\n\tif len(args) > 0 {\n\t\tif len(args)%2 != 0 {\n\t\t\tcs, ok := args[len(args)-1].(CapturedStacktrace)\n\t\t\tif ok {\n\t\t\t\targs = args[:len(args)-1]\n\t\t\t\tvals[\"stacktrace\"] = cs\n\t\t\t} else {\n\t\t\t\textra := args[len(args)-1]\n\t\t\t\targs = append(args[:len(args)-1], MissingKey, extra)\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < len(args); i = i + 2 {\n\t\t\tval := args[i+1]\n\t\t\tswitch sv := val.(type) {\n\t\t\tcase error:\n\t\t\t\t// Check if val is of type error. If error type doesn't\n\t\t\t\t// implement json.Marshaler or encoding.TextMarshaler\n\t\t\t\t// then set val to err.Error() so that it gets marshaled\n\t\t\t\tswitch sv.(type) {\n\t\t\t\tcase json.Marshaler, encoding.TextMarshaler:\n\t\t\t\tdefault:\n\t\t\t\t\tval = sv.Error()\n\t\t\t\t}\n\t\t\tcase Format:\n\t\t\t\tval = fmt.Sprintf(sv[0].(string), sv[1:]...)\n\t\t\t}\n\n\t\t\tvar key string\n\n\t\t\tswitch st := args[i].(type) {\n\t\t\tcase string:\n\t\t\t\tkey = st\n\t\t\tdefault:\n\t\t\t\tkey = fmt.Sprintf(\"%s\", st)\n\t\t\t}\n\t\t\tvals[key] = val\n\t\t}\n\t}\n\n\terr := json.NewEncoder(l.writer).Encode(vals)\n\tif err != nil {\n\t\tif _, ok := err.(*json.UnsupportedTypeError); ok {\n\t\t\tplainVal := l.jsonMapEntry(t, name, level, msg)\n\t\t\tplainVal[\"@warn\"] = errJsonUnsupportedTypeMsg\n\n\t\t\tjson.NewEncoder(l.writer).Encode(plainVal)\n\t\t}\n\t}\n}\n\nfunc (l intLogger) jsonMapEntry(t time.Time, name string, level Level, msg string) map[string]interface{} {\n\tvals := map[string]interface{}{\n\t\t\"@message\": msg,\n\t}\n\tif !l.disableTime {\n\t\tvals[\"@timestamp\"] = t.Format(l.timeFormat)\n\t}\n\n\tvar levelStr string\n\tswitch level {\n\tcase Error:\n\t\tlevelStr = \"error\"\n\tcase Warn:\n\t\tlevelStr = \"warn\"\n\tcase Info:\n\t\tlevelStr = \"info\"\n\tcase Debug:\n\t\tlevelStr = \"debug\"\n\tcase Trace:\n\t\tlevelStr = \"trace\"\n\tdefault:\n\t\tlevelStr = \"all\"\n\t}\n\n\tvals[\"@level\"] = levelStr\n\n\tif name != \"\" {\n\t\tvals[\"@module\"] = name\n\t}\n\n\tif l.callerOffset > 0 {\n\t\tif _, file, line, ok := runtime.Caller(l.callerOffset + 1); ok {\n\t\t\tvals[\"@caller\"] = fmt.Sprintf(\"%s:%d\", file, line)\n\t\t}\n\t}\n\treturn vals\n}\n\n// Emit the message and args at the provided level\nfunc (l *intLogger) Log(level Level, msg string, args ...interface{}) {\n\tl.log(l.Name(), level, msg, args...)\n}\n\n// Emit the message and args at DEBUG level\nfunc (l *intLogger) Debug(msg string, args ...interface{}) {\n\tl.log(l.Name(), Debug, msg, args...)\n}\n\n// Emit the message and args at TRACE level\nfunc (l *intLogger) Trace(msg string, args ...interface{}) {\n\tl.log(l.Name(), Trace, msg, args...)\n}\n\n// Emit the message and args at INFO level\nfunc (l *intLogger) Info(msg string, args ...interface{}) {\n\tl.log(l.Name(), Info, msg, args...)\n}\n\n// Emit the message and args at WARN level\nfunc (l *intLogger) Warn(msg string, args ...interface{}) {\n\tl.log(l.Name(), Warn, msg, args...)\n}\n\n// Emit the message and args at ERROR level\nfunc (l *intLogger) Error(msg string, args ...interface{}) {\n\tl.log(l.Name(), Error, msg, args...)\n}\n\n// Indicate that the logger would emit TRACE level logs\nfunc (l *intLogger) IsTrace() bool {\n\treturn l.GetLevel() == Trace\n}\n\n// Indicate that the logger would emit DEBUG level logs\nfunc (l *intLogger) IsDebug() bool {\n\treturn l.GetLevel() <= Debug\n}\n\n// Indicate that the logger would emit INFO level logs\nfunc (l *intLogger) IsInfo() bool {\n\treturn l.GetLevel() <= Info\n}\n\n// Indicate that the logger would emit WARN level logs\nfunc (l *intLogger) IsWarn() bool {\n\treturn l.GetLevel() <= Warn\n}\n\n// Indicate that the logger would emit ERROR level logs\nfunc (l *intLogger) IsError() bool {\n\treturn l.GetLevel() <= Error\n}\n\nconst MissingKey = \"EXTRA_VALUE_AT_END\"\n\n// Return a sub-Logger for which every emitted log message will contain\n// the given key/value pairs. This is used to create a context specific\n// Logger.\nfunc (l *intLogger) With(args ...interface{}) Logger {\n\tvar extra interface{}\n\n\tif len(args)%2 != 0 {\n\t\textra = args[len(args)-1]\n\t\targs = args[:len(args)-1]\n\t}\n\n\tsl := l.copy()\n\n\tresult := make(map[string]interface{}, len(l.implied)+len(args))\n\tkeys := make([]string, 0, len(l.implied)+len(args))\n\n\t// Read existing args, store map and key for consistent sorting\n\tfor i := 0; i < len(l.implied); i += 2 {\n\t\tkey := l.implied[i].(string)\n\t\tkeys = append(keys, key)\n\t\tresult[key] = l.implied[i+1]\n\t}\n\t// Read new args, store map and key for consistent sorting\n\tfor i := 0; i < len(args); i += 2 {\n\t\tkey := args[i].(string)\n\t\t_, exists := result[key]\n\t\tif !exists {\n\t\t\tkeys = append(keys, key)\n\t\t}\n\t\tresult[key] = args[i+1]\n\t}\n\n\t// Sort keys to be consistent\n\tsort.Strings(keys)\n\n\tsl.implied = make([]interface{}, 0, len(l.implied)+len(args))\n\tfor _, k := range keys {\n\t\tsl.implied = append(sl.implied, k)\n\t\tsl.implied = append(sl.implied, result[k])\n\t}\n\n\tif extra != nil {\n\t\tsl.implied = append(sl.implied, MissingKey, extra)\n\t}\n\n\treturn l.subloggerHook(sl)\n}\n\n// Create a new sub-Logger that a name decending from the current name.\n// This is used to create a subsystem specific Logger.\nfunc (l *intLogger) Named(name string) Logger {\n\tsl := l.copy()\n\n\tif sl.name != \"\" {\n\t\tsl.name = sl.name + \".\" + name\n\t} else {\n\t\tsl.name = name\n\t}\n\n\treturn l.subloggerHook(sl)\n}\n\n// Create a new sub-Logger with an explicit name. This ignores the current\n// name. This is used to create a standalone logger that doesn't fall\n// within the normal hierarchy.\nfunc (l *intLogger) ResetNamed(name string) Logger {\n\tsl := l.copy()\n\n\tsl.name = name\n\n\treturn l.subloggerHook(sl)\n}\n\nfunc (l *intLogger) ResetOutput(opts *LoggerOptions) error {\n\tif opts.Output == nil {\n\t\treturn errors.New(\"given output is nil\")\n\t}\n\n\tl.mutex.Lock()\n\tdefer l.mutex.Unlock()\n\n\treturn l.resetOutput(opts)\n}\n\nfunc (l *intLogger) ResetOutputWithFlush(opts *LoggerOptions, flushable Flushable) error {\n\tif opts.Output == nil {\n\t\treturn errors.New(\"given output is nil\")\n\t}\n\tif flushable == nil {\n\t\treturn errors.New(\"flushable is nil\")\n\t}\n\n\tl.mutex.Lock()\n\tdefer l.mutex.Unlock()\n\n\tif err := flushable.Flush(); err != nil {\n\t\treturn err\n\t}\n\n\treturn l.resetOutput(opts)\n}\n\nfunc (l *intLogger) resetOutput(opts *LoggerOptions) error {\n\tl.writer = newWriter(opts.Output, opts.Color)\n\tl.setColorization(opts)\n\treturn nil\n}\n\n// Update the logging level on-the-fly. This will affect all subloggers as\n// well.\nfunc (l *intLogger) SetLevel(level Level) {\n\tif !l.syncParentLevel {\n\t\tatomic.StoreInt32(l.level, int32(level))\n\t\treturn\n\t}\n\n\tnsl := new(int32)\n\t*nsl = int32(level)\n\n\tl.level = nsl\n\n\tl.ownEpoch = atomic.AddUint64(l.curEpoch, 1)\n}\n\nfunc (l *intLogger) searchLevelPtr() *int32 {\n\tp := l.parent\n\n\tptr := l.level\n\n\tmax := l.ownEpoch\n\n\tfor p != nil {\n\t\tif p.ownEpoch > max {\n\t\t\tmax = p.ownEpoch\n\t\t\tptr = p.level\n\t\t}\n\n\t\tp = p.parent\n\t}\n\n\treturn ptr\n}\n\n// Returns the current level\nfunc (l *intLogger) GetLevel() Level {\n\t// We perform the loads immediately to keep the CPU pipeline busy, which\n\t// effectively makes the second load cost nothing. Once loaded into registers\n\t// the comparison returns the already loaded value. The comparison is almost\n\t// always true, so the branch predictor should hit consistently with it.\n\tvar (\n\t\tcurEpoch = atomic.LoadUint64(l.curEpoch)\n\t\tlevel    = Level(atomic.LoadInt32(l.level))\n\t\town      = l.ownEpoch\n\t)\n\n\tif curEpoch == own {\n\t\treturn level\n\t}\n\n\t// Perform the level sync process. We'll avoid doing this next time by seeing the\n\t// epoch as current.\n\n\tptr := l.searchLevelPtr()\n\tl.level = ptr\n\tl.ownEpoch = curEpoch\n\n\treturn Level(atomic.LoadInt32(ptr))\n}\n\n// Create a *log.Logger that will send it's data through this Logger. This\n// allows packages that expect to be using the standard library log to actually\n// use this logger.\nfunc (l *intLogger) StandardLogger(opts *StandardLoggerOptions) *log.Logger {\n\tif opts == nil {\n\t\topts = &StandardLoggerOptions{}\n\t}\n\n\treturn log.New(l.StandardWriter(opts), \"\", 0)\n}\n\nfunc (l *intLogger) StandardWriter(opts *StandardLoggerOptions) io.Writer {\n\tnewLog := *l\n\tif l.callerOffset > 0 {\n\t\t// the stack is\n\t\t// logger.printf() -> l.Output() ->l.out.writer(hclog:stdlogAdaptor.write) -> hclog:stdlogAdaptor.dispatch()\n\t\t// So plus 4.\n\t\tnewLog.callerOffset = l.callerOffset + 4\n\t}\n\treturn &stdlogAdapter{\n\t\tlog:                      &newLog,\n\t\tinferLevels:              opts.InferLevels,\n\t\tinferLevelsWithTimestamp: opts.InferLevelsWithTimestamp,\n\t\tforceLevel:               opts.ForceLevel,\n\t}\n}\n\n// Accept implements the SinkAdapter interface\nfunc (i *intLogger) Accept(name string, level Level, msg string, args ...interface{}) {\n\ti.log(name, level, msg, args...)\n}\n\n// ImpliedArgs returns the loggers implied args\nfunc (i *intLogger) ImpliedArgs() []interface{} {\n\treturn i.implied\n}\n\n// Name returns the loggers name\nfunc (i *intLogger) Name() string {\n\treturn i.name\n}\n\n// copy returns a shallow copy of the intLogger, replacing the level pointer\n// when necessary\nfunc (l *intLogger) copy() *intLogger {\n\tsl := *l\n\n\tif l.independentLevels {\n\t\tsl.level = new(int32)\n\t\t*sl.level = *l.level\n\t} else if l.syncParentLevel {\n\t\tsl.parent = l\n\t}\n\n\treturn &sl\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/logger.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MIT\n\npackage hclog\n\nimport (\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar (\n\t// DefaultOutput is used as the default log output.\n\tDefaultOutput io.Writer = os.Stderr\n\n\t// DefaultLevel is used as the default log level.\n\tDefaultLevel = Info\n)\n\n// Level represents a log level.\ntype Level int32\n\nconst (\n\t// NoLevel is a special level used to indicate that no level has been\n\t// set and allow for a default to be used.\n\tNoLevel Level = 0\n\n\t// Trace is the most verbose level. Intended to be used for the tracing\n\t// of actions in code, such as function enters/exits, etc.\n\tTrace Level = 1\n\n\t// Debug information for programmer low-level analysis.\n\tDebug Level = 2\n\n\t// Info information about steady state operations.\n\tInfo Level = 3\n\n\t// Warn information about rare but handled events.\n\tWarn Level = 4\n\n\t// Error information about unrecoverable events.\n\tError Level = 5\n\n\t// Off disables all logging output.\n\tOff Level = 6\n)\n\n// Format is a simple convenience type for when formatting is required. When\n// processing a value of this type, the logger automatically treats the first\n// argument as a Printf formatting string and passes the rest as the values\n// to be formatted. For example: L.Info(Fmt{\"%d beans/day\", beans}).\ntype Format []interface{}\n\n// Fmt returns a Format type. This is a convenience function for creating a Format\n// type.\nfunc Fmt(str string, args ...interface{}) Format {\n\treturn append(Format{str}, args...)\n}\n\n// A simple shortcut to format numbers in hex when displayed with the normal\n// text output. For example: L.Info(\"header value\", Hex(17))\ntype Hex int\n\n// A simple shortcut to format numbers in octal when displayed with the normal\n// text output. For example: L.Info(\"perms\", Octal(17))\ntype Octal int\n\n// A simple shortcut to format numbers in binary when displayed with the normal\n// text output. For example: L.Info(\"bits\", Binary(17))\ntype Binary int\n\n// A simple shortcut to format strings with Go quoting. Control and\n// non-printable characters will be escaped with their backslash equivalents in\n// output. Intended for untrusted or multiline strings which should be logged\n// as concisely as possible.\ntype Quote string\n\n// ColorOption expresses how the output should be colored, if at all.\ntype ColorOption uint8\n\nconst (\n\t// ColorOff is the default coloration, and does not\n\t// inject color codes into the io.Writer.\n\tColorOff ColorOption = iota\n\t// AutoColor checks if the io.Writer is a tty,\n\t// and if so enables coloring.\n\tAutoColor\n\t// ForceColor will enable coloring, regardless of whether\n\t// the io.Writer is a tty or not.\n\tForceColor\n)\n\n// SupportsColor is an optional interface that can be implemented by the output\n// value. If implemented and SupportsColor() returns true, then AutoColor will\n// enable colorization.\ntype SupportsColor interface {\n\tSupportsColor() bool\n}\n\n// LevelFromString returns a Level type for the named log level, or \"NoLevel\" if\n// the level string is invalid. This facilitates setting the log level via\n// config or environment variable by name in a predictable way.\nfunc LevelFromString(levelStr string) Level {\n\t// We don't care about case. Accept both \"INFO\" and \"info\".\n\tlevelStr = strings.ToLower(strings.TrimSpace(levelStr))\n\tswitch levelStr {\n\tcase \"trace\":\n\t\treturn Trace\n\tcase \"debug\":\n\t\treturn Debug\n\tcase \"info\":\n\t\treturn Info\n\tcase \"warn\":\n\t\treturn Warn\n\tcase \"error\":\n\t\treturn Error\n\tcase \"off\":\n\t\treturn Off\n\tdefault:\n\t\treturn NoLevel\n\t}\n}\n\nfunc (l Level) String() string {\n\tswitch l {\n\tcase Trace:\n\t\treturn \"trace\"\n\tcase Debug:\n\t\treturn \"debug\"\n\tcase Info:\n\t\treturn \"info\"\n\tcase Warn:\n\t\treturn \"warn\"\n\tcase Error:\n\t\treturn \"error\"\n\tcase NoLevel:\n\t\treturn \"none\"\n\tcase Off:\n\t\treturn \"off\"\n\tdefault:\n\t\treturn \"unknown\"\n\t}\n}\n\n// Logger describes the interface that must be implemented by all loggers.\ntype Logger interface {\n\t// Args are alternating key, val pairs\n\t// keys must be strings\n\t// vals can be any type, but display is implementation specific\n\t// Emit a message and key/value pairs at a provided log level\n\tLog(level Level, msg string, args ...interface{})\n\n\t// Emit a message and key/value pairs at the TRACE level\n\tTrace(msg string, args ...interface{})\n\n\t// Emit a message and key/value pairs at the DEBUG level\n\tDebug(msg string, args ...interface{})\n\n\t// Emit a message and key/value pairs at the INFO level\n\tInfo(msg string, args ...interface{})\n\n\t// Emit a message and key/value pairs at the WARN level\n\tWarn(msg string, args ...interface{})\n\n\t// Emit a message and key/value pairs at the ERROR level\n\tError(msg string, args ...interface{})\n\n\t// Indicate if TRACE logs would be emitted. This and the other Is* guards\n\t// are used to elide expensive logging code based on the current level.\n\tIsTrace() bool\n\n\t// Indicate if DEBUG logs would be emitted. This and the other Is* guards\n\tIsDebug() bool\n\n\t// Indicate if INFO logs would be emitted. This and the other Is* guards\n\tIsInfo() bool\n\n\t// Indicate if WARN logs would be emitted. This and the other Is* guards\n\tIsWarn() bool\n\n\t// Indicate if ERROR logs would be emitted. This and the other Is* guards\n\tIsError() bool\n\n\t// ImpliedArgs returns With key/value pairs\n\tImpliedArgs() []interface{}\n\n\t// Creates a sublogger that will always have the given key/value pairs\n\tWith(args ...interface{}) Logger\n\n\t// Returns the Name of the logger\n\tName() string\n\n\t// Create a logger that will prepend the name string on the front of all messages.\n\t// If the logger already has a name, the new value will be appended to the current\n\t// name. That way, a major subsystem can use this to decorate all it's own logs\n\t// without losing context.\n\tNamed(name string) Logger\n\n\t// Create a logger that will prepend the name string on the front of all messages.\n\t// This sets the name of the logger to the value directly, unlike Named which honor\n\t// the current name as well.\n\tResetNamed(name string) Logger\n\n\t// Updates the level. This should affect all related loggers as well,\n\t// unless they were created with IndependentLevels. If an\n\t// implementation cannot update the level on the fly, it should no-op.\n\tSetLevel(level Level)\n\n\t// Returns the current level\n\tGetLevel() Level\n\n\t// Return a value that conforms to the stdlib log.Logger interface\n\tStandardLogger(opts *StandardLoggerOptions) *log.Logger\n\n\t// Return a value that conforms to io.Writer, which can be passed into log.SetOutput()\n\tStandardWriter(opts *StandardLoggerOptions) io.Writer\n}\n\n// StandardLoggerOptions can be used to configure a new standard logger.\ntype StandardLoggerOptions struct {\n\t// Indicate that some minimal parsing should be done on strings to try\n\t// and detect their level and re-emit them.\n\t// This supports the strings like [ERROR], [ERR] [TRACE], [WARN], [INFO],\n\t// [DEBUG] and strip it off before reapplying it.\n\tInferLevels bool\n\n\t// Indicate that some minimal parsing should be done on strings to try\n\t// and detect their level and re-emit them while ignoring possible\n\t// timestamp values in the beginning of the string.\n\t// This supports the strings like [ERROR], [ERR] [TRACE], [WARN], [INFO],\n\t// [DEBUG] and strip it off before reapplying it.\n\t// The timestamp detection may result in false positives and incomplete\n\t// string outputs.\n\t// InferLevelsWithTimestamp is only relevant if InferLevels is true.\n\tInferLevelsWithTimestamp bool\n\n\t// ForceLevel is used to force all output from the standard logger to be at\n\t// the specified level. Similar to InferLevels, this will strip any level\n\t// prefix contained in the logged string before applying the forced level.\n\t// If set, this override InferLevels.\n\tForceLevel Level\n}\n\ntype TimeFunction = func() time.Time\n\n// LoggerOptions can be used to configure a new logger.\ntype LoggerOptions struct {\n\t// Name of the subsystem to prefix logs with\n\tName string\n\n\t// The threshold for the logger. Anything less severe is suppressed\n\tLevel Level\n\n\t// Where to write the logs to. Defaults to os.Stderr if nil\n\tOutput io.Writer\n\n\t// An optional Locker in case Output is shared. This can be a sync.Mutex or\n\t// a NoopLocker if the caller wants control over output, e.g. for batching\n\t// log lines.\n\tMutex Locker\n\n\t// Control if the output should be in JSON.\n\tJSONFormat bool\n\n\t// Include file and line information in each log line\n\tIncludeLocation bool\n\n\t// AdditionalLocationOffset is the number of additional stack levels to skip\n\t// when finding the file and line information for the log line\n\tAdditionalLocationOffset int\n\n\t// The time format to use instead of the default\n\tTimeFormat string\n\n\t// A function which is called to get the time object that is formatted using `TimeFormat`\n\tTimeFn TimeFunction\n\n\t// Control whether or not to display the time at all. This is required\n\t// because setting TimeFormat to empty assumes the default format.\n\tDisableTime bool\n\n\t// Color the output. On Windows, colored logs are only available for io.Writers that\n\t// are concretely instances of *os.File.\n\tColor ColorOption\n\n\t// Only color the header, not the body. This can help with readability of long messages.\n\tColorHeaderOnly bool\n\n\t// Color the header and message body fields. This can help with readability\n\t// of long messages with multiple fields.\n\tColorHeaderAndFields bool\n\n\t// A function which is called with the log information and if it returns true the value\n\t// should not be logged.\n\t// This is useful when interacting with a system that you wish to suppress the log\n\t// message for (because it's too noisy, etc)\n\tExclude func(level Level, msg string, args ...interface{}) bool\n\n\t// IndependentLevels causes subloggers to be created with an independent\n\t// copy of this logger's level. This means that using SetLevel on this\n\t// logger will not affect any subloggers, and SetLevel on any subloggers\n\t// will not affect the parent or sibling loggers.\n\tIndependentLevels bool\n\n\t// When set, changing the level of a logger effects only it's direct sub-loggers\n\t// rather than all sub-loggers. For example:\n\t// a := logger.Named(\"a\")\n\t// a.SetLevel(Error)\n\t// b := a.Named(\"b\")\n\t// c := a.Named(\"c\")\n\t// b.GetLevel() => Error\n\t// c.GetLevel() => Error\n\t// b.SetLevel(Info)\n\t// a.GetLevel() => Error\n\t// b.GetLevel() => Info\n\t// c.GetLevel() => Error\n\t// a.SetLevel(Warn)\n\t// a.GetLevel() => Warn\n\t// b.GetLevel() => Warn\n\t// c.GetLevel() => Warn\n\tSyncParentLevel bool\n\n\t// SubloggerHook registers a function that is called when a sublogger via\n\t// Named, With, or ResetNamed is created. If defined, the function is passed\n\t// the newly created Logger and the returned Logger is returned from the\n\t// original function. This option allows customization via interception and\n\t// wrapping of Logger instances.\n\tSubloggerHook func(sub Logger) Logger\n}\n\n// InterceptLogger describes the interface for using a logger\n// that can register different output sinks.\n// This is useful for sending lower level log messages\n// to a different output while keeping the root logger\n// at a higher one.\ntype InterceptLogger interface {\n\t// Logger is the root logger for an InterceptLogger\n\tLogger\n\n\t// RegisterSink adds a SinkAdapter to the InterceptLogger\n\tRegisterSink(sink SinkAdapter)\n\n\t// DeregisterSink removes a SinkAdapter from the InterceptLogger\n\tDeregisterSink(sink SinkAdapter)\n\n\t// Create a interceptlogger that will prepend the name string on the front of all messages.\n\t// If the logger already has a name, the new value will be appended to the current\n\t// name. That way, a major subsystem can use this to decorate all it's own logs\n\t// without losing context.\n\tNamedIntercept(name string) InterceptLogger\n\n\t// Create a interceptlogger that will prepend the name string on the front of all messages.\n\t// This sets the name of the logger to the value directly, unlike Named which honor\n\t// the current name as well.\n\tResetNamedIntercept(name string) InterceptLogger\n\n\t// Deprecated: use StandardLogger\n\tStandardLoggerIntercept(opts *StandardLoggerOptions) *log.Logger\n\n\t// Deprecated: use StandardWriter\n\tStandardWriterIntercept(opts *StandardLoggerOptions) io.Writer\n}\n\n// SinkAdapter describes the interface that must be implemented\n// in order to Register a new sink to an InterceptLogger\ntype SinkAdapter interface {\n\tAccept(name string, level Level, msg string, args ...interface{})\n}\n\n// Flushable represents a method for flushing an output buffer. It can be used\n// if Resetting the log to use a new output, in order to flush the writes to\n// the existing output beforehand.\ntype Flushable interface {\n\tFlush() error\n}\n\n// OutputResettable provides ways to swap the output in use at runtime\ntype OutputResettable interface {\n\t// ResetOutput swaps the current output writer with the one given in the\n\t// opts. Color options given in opts will be used for the new output.\n\tResetOutput(opts *LoggerOptions) error\n\n\t// ResetOutputWithFlush swaps the current output writer with the one given\n\t// in the opts, first calling Flush on the given Flushable. Color options\n\t// given in opts will be used for the new output.\n\tResetOutputWithFlush(opts *LoggerOptions, flushable Flushable) error\n}\n\n// Locker is used for locking output. If not set when creating a logger, a\n// sync.Mutex will be used internally.\ntype Locker interface {\n\t// Lock is called when the output is going to be changed or written to\n\tLock()\n\n\t// Unlock is called when the operation that called Lock() completes\n\tUnlock()\n}\n\n// NoopLocker implements locker but does nothing. This is useful if the client\n// wants tight control over locking, in order to provide grouping of log\n// entries or other functionality.\ntype NoopLocker struct{}\n\n// Lock does nothing\nfunc (n NoopLocker) Lock() {}\n\n// Unlock does nothing\nfunc (n NoopLocker) Unlock() {}\n\nvar _ Locker = (*NoopLocker)(nil)\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/nulllogger.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MIT\n\npackage hclog\n\nimport (\n\t\"io\"\n\t\"io/ioutil\"\n\t\"log\"\n)\n\n// NewNullLogger instantiates a Logger for which all calls\n// will succeed without doing anything.\n// Useful for testing purposes.\nfunc NewNullLogger() Logger {\n\treturn &nullLogger{}\n}\n\ntype nullLogger struct{}\n\nfunc (l *nullLogger) Log(level Level, msg string, args ...interface{}) {}\n\nfunc (l *nullLogger) Trace(msg string, args ...interface{}) {}\n\nfunc (l *nullLogger) Debug(msg string, args ...interface{}) {}\n\nfunc (l *nullLogger) Info(msg string, args ...interface{}) {}\n\nfunc (l *nullLogger) Warn(msg string, args ...interface{}) {}\n\nfunc (l *nullLogger) Error(msg string, args ...interface{}) {}\n\nfunc (l *nullLogger) IsTrace() bool { return false }\n\nfunc (l *nullLogger) IsDebug() bool { return false }\n\nfunc (l *nullLogger) IsInfo() bool { return false }\n\nfunc (l *nullLogger) IsWarn() bool { return false }\n\nfunc (l *nullLogger) IsError() bool { return false }\n\nfunc (l *nullLogger) ImpliedArgs() []interface{} { return []interface{}{} }\n\nfunc (l *nullLogger) With(args ...interface{}) Logger { return l }\n\nfunc (l *nullLogger) Name() string { return \"\" }\n\nfunc (l *nullLogger) Named(name string) Logger { return l }\n\nfunc (l *nullLogger) ResetNamed(name string) Logger { return l }\n\nfunc (l *nullLogger) SetLevel(level Level) {}\n\nfunc (l *nullLogger) GetLevel() Level { return NoLevel }\n\nfunc (l *nullLogger) StandardLogger(opts *StandardLoggerOptions) *log.Logger {\n\treturn log.New(l.StandardWriter(opts), \"\", log.LstdFlags)\n}\n\nfunc (l *nullLogger) StandardWriter(opts *StandardLoggerOptions) io.Writer {\n\treturn ioutil.Discard\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/stacktrace.go",
    "content": "// Copyright (c) 2016 Uber Technologies, Inc.\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\npackage hclog\n\nimport (\n\t\"bytes\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n)\n\nvar (\n\t_stacktraceIgnorePrefixes = []string{\n\t\t\"runtime.goexit\",\n\t\t\"runtime.main\",\n\t}\n\t_stacktracePool = sync.Pool{\n\t\tNew: func() interface{} {\n\t\t\treturn newProgramCounters(64)\n\t\t},\n\t}\n)\n\n// CapturedStacktrace represents a stacktrace captured by a previous call\n// to log.Stacktrace. If passed to a logging function, the stacktrace\n// will be appended.\ntype CapturedStacktrace string\n\n// Stacktrace captures a stacktrace of the current goroutine and returns\n// it to be passed to a logging function.\nfunc Stacktrace() CapturedStacktrace {\n\treturn CapturedStacktrace(takeStacktrace())\n}\n\nfunc takeStacktrace() string {\n\tprogramCounters := _stacktracePool.Get().(*programCounters)\n\tdefer _stacktracePool.Put(programCounters)\n\n\tvar buffer bytes.Buffer\n\n\tfor {\n\t\t// Skip the call to runtime.Counters and takeStacktrace so that the\n\t\t// program counters start at the caller of takeStacktrace.\n\t\tn := runtime.Callers(2, programCounters.pcs)\n\t\tif n < cap(programCounters.pcs) {\n\t\t\tprogramCounters.pcs = programCounters.pcs[:n]\n\t\t\tbreak\n\t\t}\n\t\t// Don't put the too-short counter slice back into the pool; this lets\n\t\t// the pool adjust if we consistently take deep stacktraces.\n\t\tprogramCounters = newProgramCounters(len(programCounters.pcs) * 2)\n\t}\n\n\ti := 0\n\tframes := runtime.CallersFrames(programCounters.pcs)\n\tfor frame, more := frames.Next(); more; frame, more = frames.Next() {\n\t\tif shouldIgnoreStacktraceFunction(frame.Function) {\n\t\t\tcontinue\n\t\t}\n\t\tif i != 0 {\n\t\t\tbuffer.WriteByte('\\n')\n\t\t}\n\t\ti++\n\t\tbuffer.WriteString(frame.Function)\n\t\tbuffer.WriteByte('\\n')\n\t\tbuffer.WriteByte('\\t')\n\t\tbuffer.WriteString(frame.File)\n\t\tbuffer.WriteByte(':')\n\t\tbuffer.WriteString(strconv.Itoa(int(frame.Line)))\n\t}\n\n\treturn buffer.String()\n}\n\nfunc shouldIgnoreStacktraceFunction(function string) bool {\n\tfor _, prefix := range _stacktraceIgnorePrefixes {\n\t\tif strings.HasPrefix(function, prefix) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\ntype programCounters struct {\n\tpcs []uintptr\n}\n\nfunc newProgramCounters(size int) *programCounters {\n\treturn &programCounters{make([]uintptr, size)}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/stdlog.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MIT\n\npackage hclog\n\nimport (\n\t\"bytes\"\n\t\"log\"\n\t\"regexp\"\n\t\"strings\"\n)\n\n// Regex to ignore characters commonly found in timestamp formats from the\n// beginning of inputs.\nvar logTimestampRegexp = regexp.MustCompile(`^[\\d\\s\\:\\/\\.\\+-TZ]*`)\n\n// Provides a io.Writer to shim the data out of *log.Logger\n// and back into our Logger. This is basically the only way to\n// build upon *log.Logger.\ntype stdlogAdapter struct {\n\tlog                      Logger\n\tinferLevels              bool\n\tinferLevelsWithTimestamp bool\n\tforceLevel               Level\n}\n\n// Take the data, infer the levels if configured, and send it through\n// a regular Logger.\nfunc (s *stdlogAdapter) Write(data []byte) (int, error) {\n\tstr := string(bytes.TrimRight(data, \" \\t\\n\"))\n\n\tif s.forceLevel != NoLevel {\n\t\t// Use pickLevel to strip log levels included in the line since we are\n\t\t// forcing the level\n\t\t_, str := s.pickLevel(str)\n\n\t\t// Log at the forced level\n\t\ts.dispatch(str, s.forceLevel)\n\t} else if s.inferLevels {\n\t\tif s.inferLevelsWithTimestamp {\n\t\t\tstr = s.trimTimestamp(str)\n\t\t}\n\n\t\tlevel, str := s.pickLevel(str)\n\t\ts.dispatch(str, level)\n\t} else {\n\t\ts.log.Info(str)\n\t}\n\n\treturn len(data), nil\n}\n\nfunc (s *stdlogAdapter) dispatch(str string, level Level) {\n\tswitch level {\n\tcase Trace:\n\t\ts.log.Trace(str)\n\tcase Debug:\n\t\ts.log.Debug(str)\n\tcase Info:\n\t\ts.log.Info(str)\n\tcase Warn:\n\t\ts.log.Warn(str)\n\tcase Error:\n\t\ts.log.Error(str)\n\tdefault:\n\t\ts.log.Info(str)\n\t}\n}\n\n// Detect, based on conventions, what log level this is.\nfunc (s *stdlogAdapter) pickLevel(str string) (Level, string) {\n\tswitch {\n\tcase strings.HasPrefix(str, \"[DEBUG]\"):\n\t\treturn Debug, strings.TrimSpace(str[7:])\n\tcase strings.HasPrefix(str, \"[TRACE]\"):\n\t\treturn Trace, strings.TrimSpace(str[7:])\n\tcase strings.HasPrefix(str, \"[INFO]\"):\n\t\treturn Info, strings.TrimSpace(str[6:])\n\tcase strings.HasPrefix(str, \"[WARN]\"):\n\t\treturn Warn, strings.TrimSpace(str[6:])\n\tcase strings.HasPrefix(str, \"[ERROR]\"):\n\t\treturn Error, strings.TrimSpace(str[7:])\n\tcase strings.HasPrefix(str, \"[ERR]\"):\n\t\treturn Error, strings.TrimSpace(str[5:])\n\tdefault:\n\t\treturn Info, str\n\t}\n}\n\nfunc (s *stdlogAdapter) trimTimestamp(str string) string {\n\tidx := logTimestampRegexp.FindStringIndex(str)\n\treturn str[idx[1]:]\n}\n\ntype logWriter struct {\n\tl *log.Logger\n}\n\nfunc (l *logWriter) Write(b []byte) (int, error) {\n\tl.l.Println(string(bytes.TrimRight(b, \" \\n\\t\")))\n\treturn len(b), nil\n}\n\n// Takes a standard library logger and returns a Logger that will write to it\nfunc FromStandardLogger(l *log.Logger, opts *LoggerOptions) Logger {\n\tvar dl LoggerOptions = *opts\n\n\t// Use the time format that log.Logger uses\n\tdl.DisableTime = true\n\tdl.Output = &logWriter{l}\n\n\treturn New(&dl)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-hclog/writer.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MIT\n\npackage hclog\n\nimport (\n\t\"bytes\"\n\t\"io\"\n)\n\ntype writer struct {\n\tb     bytes.Buffer\n\tw     io.Writer\n\tcolor ColorOption\n}\n\nfunc newWriter(w io.Writer, color ColorOption) *writer {\n\treturn &writer{w: w, color: color}\n}\n\nfunc (w *writer) Flush(level Level) (err error) {\n\tvar unwritten = w.b.Bytes()\n\n\tif w.color != ColorOff {\n\t\tcolor := _levelToColor[level]\n\t\tunwritten = []byte(color.Sprintf(\"%s\", unwritten))\n\t}\n\n\tif lw, ok := w.w.(LevelWriter); ok {\n\t\t_, err = lw.LevelWrite(level, unwritten)\n\t} else {\n\t\t_, err = w.w.Write(unwritten)\n\t}\n\tw.b.Reset()\n\treturn err\n}\n\nfunc (w *writer) Write(p []byte) (int, error) {\n\treturn w.b.Write(p)\n}\n\nfunc (w *writer) WriteByte(c byte) error {\n\treturn w.b.WriteByte(c)\n}\n\nfunc (w *writer) WriteString(s string) (int, error) {\n\treturn w.b.WriteString(s)\n}\n\n// LevelWriter is the interface that wraps the LevelWrite method.\ntype LevelWriter interface {\n\tLevelWrite(level Level, p []byte) (n int, err error)\n}\n\n// LeveledWriter writes all log messages to the standard writer,\n// except for log levels that are defined in the overrides map.\ntype LeveledWriter struct {\n\tstandard  io.Writer\n\toverrides map[Level]io.Writer\n}\n\n// NewLeveledWriter returns an initialized LeveledWriter.\n//\n// standard will be used as the default writer for all log levels,\n// except for log levels that are defined in the overrides map.\nfunc NewLeveledWriter(standard io.Writer, overrides map[Level]io.Writer) *LeveledWriter {\n\treturn &LeveledWriter{\n\t\tstandard:  standard,\n\t\toverrides: overrides,\n\t}\n}\n\n// Write implements io.Writer.\nfunc (lw *LeveledWriter) Write(p []byte) (int, error) {\n\treturn lw.standard.Write(p)\n}\n\n// LevelWrite implements LevelWriter.\nfunc (lw *LeveledWriter) LevelWrite(level Level, p []byte) (int, error) {\n\tw, ok := lw.overrides[level]\n\tif !ok {\n\t\tw = lw.standard\n\t}\n\treturn w.Write(p)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-immutable-radix/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n*.test\n*.prof\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-immutable-radix/CHANGELOG.md",
    "content": "# UNRELEASED\n\n# 1.3.0 (September 17th, 2020)\n\nFEATURES\n\n* Add reverse tree traversal [[GH-30](https://github.com/hashicorp/go-immutable-radix/pull/30)]\n\n# 1.2.0 (March 18th, 2020)\n\nFEATURES\n\n* Adds a `Clone` method to `Txn` allowing transactions to be split either into two independently mutable trees. [[GH-26](https://github.com/hashicorp/go-immutable-radix/pull/26)]\n\n# 1.1.0 (May 22nd, 2019)\n\nFEATURES\n\n* Add `SeekLowerBound` to allow for range scans. [[GH-24](https://github.com/hashicorp/go-immutable-radix/pull/24)]\n\n# 1.0.0 (August 30th, 2018)\n\n* go mod adopted\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-immutable-radix/LICENSE",
    "content": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. \"Contributor\"\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n\n     means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the terms of\n        a Secondary License.\n\n1.6. \"Executable Form\"\n\n     means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n\n     means a work that combines Covered Software with other material, in a\n     separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n\n     means this document.\n\n1.9. \"Licensable\"\n\n     means having the right to grant, to the maximum extent possible, whether\n     at the time of the initial grant or subsequently, any and all of the\n     rights conveyed by this License.\n\n1.10. \"Modifications\"\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. \"Patent Claims\" of a Contributor\n\n      means any patent claim(s), including without limitation, method,\n      process, and apparatus claims, in any patent Licensable by such\n      Contributor that would be infringed, but for the grant of the License,\n      by the making, using, selling, offering for sale, having made, import,\n      or transfer of either its Contributions or its Contributor Version.\n\n1.12. \"Secondary License\"\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. \"Source Code Form\"\n\n      means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, \"You\" includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, \"control\" means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or\n        as part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its\n        Contributions or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution\n     become effective for each Contribution on the date the Contributor first\n     distributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under\n     this License. No additional rights or licenses will be implied from the\n     distribution or licensing of Covered Software under this License.\n     Notwithstanding Section 2.1(b) above, no patent license is granted by a\n     Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party's\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of\n        its Contributions.\n\n     This License does not grant any rights in the trademarks, service marks,\n     or logos of any Contributor (except as may be necessary to comply with\n     the notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this\n     License (see Section 10.2) or under the terms of a Secondary License (if\n     permitted under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its\n     Contributions are its original creation(s) or it has sufficient rights to\n     grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under\n     applicable copyright doctrines of fair use, fair dealing, or other\n     equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under\n     the terms of this License. You must inform recipients that the Source\n     Code Form of the Covered Software is governed by the terms of this\n     License, and how they can obtain a copy of this License. You may not\n     attempt to alter or restrict the recipients' rights in the Source Code\n     Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this\n        License, or sublicense it under different terms, provided that the\n        license for the Executable Form does not attempt to limit or alter the\n        recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for\n     the Covered Software. If the Larger Work is a combination of Covered\n     Software with a work governed by one or more Secondary Licenses, and the\n     Covered Software is not Incompatible With Secondary Licenses, this\n     License permits You to additionally distribute such Covered Software\n     under the terms of such Secondary License(s), so that the recipient of\n     the Larger Work may, at their option, further distribute the Covered\n     Software under the terms of either this License or such Secondary\n     License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices\n     (including copyright notices, patent notices, disclaimers of warranty, or\n     limitations of liability) contained within the Source Code Form of the\n     Covered Software, except that You may alter any license notices to the\n     extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on\n     behalf of any Contributor. You must make it absolutely clear that any\n     such warranty, support, indemnity, or liability obligation is offered by\n     You alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute,\n   judicial order, or regulation then You must: (a) comply with the terms of\n   this License to the maximum extent possible; and (b) describe the\n   limitations and the code they affect. Such description must be placed in a\n   text file included with all distributions of the Covered Software under\n   this License. Except to the extent prohibited by statute or regulation,\n   such description must be sufficiently detailed for a recipient of ordinary\n   skill to be able to understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing\n     basis, if such Contributor fails to notify You of the non-compliance by\n     some reasonable means prior to 60 days after You have come back into\n     compliance. Moreover, Your grants from a particular Contributor are\n     reinstated on an ongoing basis if such Contributor notifies You of the\n     non-compliance by some reasonable means, this is the first time You have\n     received notice of non-compliance with this License from such\n     Contributor, and You become compliant prior to 30 days after Your receipt\n     of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions,\n     counter-claims, and cross-claims) alleging that a Contributor Version\n     directly or indirectly infringes any patent, then the rights granted to\n     You by any and all Contributors for the Covered Software under Section\n     2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an \"as is\" basis,\n   without warranty of any kind, either expressed, implied, or statutory,\n   including, without limitation, warranties that the Covered Software is free\n   of defects, merchantable, fit for a particular purpose or non-infringing.\n   The entire risk as to the quality and performance of the Covered Software\n   is with You. Should any Covered Software prove defective in any respect,\n   You (not any Contributor) assume the cost of any necessary servicing,\n   repair, or correction. This disclaimer of warranty constitutes an essential\n   part of this License. No use of  any Covered Software is authorized under\n   this License except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from\n   such party's negligence to the extent applicable law prohibits such\n   limitation. Some jurisdictions do not allow the exclusion or limitation of\n   incidental or consequential damages, so this exclusion and limitation may\n   not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts\n   of a jurisdiction where the defendant maintains its principal place of\n   business and such litigation shall be governed by laws of that\n   jurisdiction, without reference to its conflict-of-law provisions. Nothing\n   in this Section shall prevent a party's ability to bring cross-claims or\n   counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject\n   matter hereof. If any provision of this License is held to be\n   unenforceable, such provision shall be reformed only to the extent\n   necessary to make it enforceable. Any law or regulation which provides that\n   the language of a contract shall be construed against the drafter shall not\n   be used to construe this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version\n      of the License under which You originally received the Covered Software,\n      or under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a\n      modified version of this License if you rename the license and remove\n      any references to the name of the license steward (except to note that\n      such modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\n      Licenses If You choose to distribute Source Code Form that is\n      Incompatible With Secondary Licenses under the terms of this version of\n      the License, the notice described in Exhibit B of this License must be\n      attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file,\nthen You may include the notice in a location (such as a LICENSE file in a\nrelevant directory) where a recipient would be likely to look for such a\nnotice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n\n      This Source Code Form is \"Incompatible\n      With Secondary Licenses\", as defined by\n      the Mozilla Public License, v. 2.0.\n\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-immutable-radix/README.md",
    "content": "go-immutable-radix [![CircleCI](https://circleci.com/gh/hashicorp/go-immutable-radix/tree/master.svg?style=svg)](https://circleci.com/gh/hashicorp/go-immutable-radix/tree/master)\n=========\n\nProvides the `iradix` package that implements an immutable [radix tree](http://en.wikipedia.org/wiki/Radix_tree).\nThe package only provides a single `Tree` implementation, optimized for sparse nodes.\n\nAs a radix tree, it provides the following:\n * O(k) operations. In many cases, this can be faster than a hash table since\n   the hash function is an O(k) operation, and hash tables have very poor cache locality.\n * Minimum / Maximum value lookups\n * Ordered iteration\n\nA tree supports using a transaction to batch multiple updates (insert, delete)\nin a more efficient manner than performing each operation one at a time.\n\nFor a mutable variant, see [go-radix](https://github.com/armon/go-radix).\n\nDocumentation\n=============\n\nThe full documentation is available on [Godoc](http://godoc.org/github.com/hashicorp/go-immutable-radix).\n\nExample\n=======\n\nBelow is a simple example of usage\n\n```go\n// Create a tree\nr := iradix.New()\nr, _, _ = r.Insert([]byte(\"foo\"), 1)\nr, _, _ = r.Insert([]byte(\"bar\"), 2)\nr, _, _ = r.Insert([]byte(\"foobar\"), 2)\n\n// Find the longest prefix match\nm, _, _ := r.Root().LongestPrefix([]byte(\"foozip\"))\nif string(m) != \"foo\" {\n    panic(\"should be foo\")\n}\n```\n\nHere is an example of performing a range scan of the keys.\n\n```go\n// Create a tree\nr := iradix.New()\nr, _, _ = r.Insert([]byte(\"001\"), 1)\nr, _, _ = r.Insert([]byte(\"002\"), 2)\nr, _, _ = r.Insert([]byte(\"005\"), 5)\nr, _, _ = r.Insert([]byte(\"010\"), 10)\nr, _, _ = r.Insert([]byte(\"100\"), 10)\n\n// Range scan over the keys that sort lexicographically between [003, 050)\nit := r.Root().Iterator()\nit.SeekLowerBound([]byte(\"003\"))\nfor key, _, ok := it.Next(); ok; key, _, ok = it.Next() {\n  if key >= \"050\" {\n      break\n  }\n  fmt.Println(key)\n}\n// Output:\n//  005\n//  010\n```\n\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-immutable-radix/edges.go",
    "content": "package iradix\n\nimport \"sort\"\n\ntype edges []edge\n\nfunc (e edges) Len() int {\n\treturn len(e)\n}\n\nfunc (e edges) Less(i, j int) bool {\n\treturn e[i].label < e[j].label\n}\n\nfunc (e edges) Swap(i, j int) {\n\te[i], e[j] = e[j], e[i]\n}\n\nfunc (e edges) Sort() {\n\tsort.Sort(e)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-immutable-radix/iradix.go",
    "content": "package iradix\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\n\t\"github.com/hashicorp/golang-lru/simplelru\"\n)\n\nconst (\n\t// defaultModifiedCache is the default size of the modified node\n\t// cache used per transaction. This is used to cache the updates\n\t// to the nodes near the root, while the leaves do not need to be\n\t// cached. This is important for very large transactions to prevent\n\t// the modified cache from growing to be enormous. This is also used\n\t// to set the max size of the mutation notify maps since those should\n\t// also be bounded in a similar way.\n\tdefaultModifiedCache = 8192\n)\n\n// Tree implements an immutable radix tree. This can be treated as a\n// Dictionary abstract data type. The main advantage over a standard\n// hash map is prefix-based lookups and ordered iteration. The immutability\n// means that it is safe to concurrently read from a Tree without any\n// coordination.\ntype Tree struct {\n\troot *Node\n\tsize int\n}\n\n// New returns an empty Tree\nfunc New() *Tree {\n\tt := &Tree{\n\t\troot: &Node{\n\t\t\tmutateCh: make(chan struct{}),\n\t\t},\n\t}\n\treturn t\n}\n\n// Len is used to return the number of elements in the tree\nfunc (t *Tree) Len() int {\n\treturn t.size\n}\n\n// Txn is a transaction on the tree. This transaction is applied\n// atomically and returns a new tree when committed. A transaction\n// is not thread safe, and should only be used by a single goroutine.\ntype Txn struct {\n\t// root is the modified root for the transaction.\n\troot *Node\n\n\t// snap is a snapshot of the root node for use if we have to run the\n\t// slow notify algorithm.\n\tsnap *Node\n\n\t// size tracks the size of the tree as it is modified during the\n\t// transaction.\n\tsize int\n\n\t// writable is a cache of writable nodes that have been created during\n\t// the course of the transaction. This allows us to re-use the same\n\t// nodes for further writes and avoid unnecessary copies of nodes that\n\t// have never been exposed outside the transaction. This will only hold\n\t// up to defaultModifiedCache number of entries.\n\twritable *simplelru.LRU\n\n\t// trackChannels is used to hold channels that need to be notified to\n\t// signal mutation of the tree. This will only hold up to\n\t// defaultModifiedCache number of entries, after which we will set the\n\t// trackOverflow flag, which will cause us to use a more expensive\n\t// algorithm to perform the notifications. Mutation tracking is only\n\t// performed if trackMutate is true.\n\ttrackChannels map[chan struct{}]struct{}\n\ttrackOverflow bool\n\ttrackMutate   bool\n}\n\n// Txn starts a new transaction that can be used to mutate the tree\nfunc (t *Tree) Txn() *Txn {\n\ttxn := &Txn{\n\t\troot: t.root,\n\t\tsnap: t.root,\n\t\tsize: t.size,\n\t}\n\treturn txn\n}\n\n// Clone makes an independent copy of the transaction. The new transaction\n// does not track any nodes and has TrackMutate turned off. The cloned transaction will contain any uncommitted writes in the original transaction but further mutations to either will be independent and result in different radix trees on Commit. A cloned transaction may be passed to another goroutine and mutated there independently however each transaction may only be mutated in a single thread.\nfunc (t *Txn) Clone() *Txn {\n\t// reset the writable node cache to avoid leaking future writes into the clone\n\tt.writable = nil\n\n\ttxn := &Txn{\n\t\troot: t.root,\n\t\tsnap: t.snap,\n\t\tsize: t.size,\n\t}\n\treturn txn\n}\n\n// TrackMutate can be used to toggle if mutations are tracked. If this is enabled\n// then notifications will be issued for affected internal nodes and leaves when\n// the transaction is committed.\nfunc (t *Txn) TrackMutate(track bool) {\n\tt.trackMutate = track\n}\n\n// trackChannel safely attempts to track the given mutation channel, setting the\n// overflow flag if we can no longer track any more. This limits the amount of\n// state that will accumulate during a transaction and we have a slower algorithm\n// to switch to if we overflow.\nfunc (t *Txn) trackChannel(ch chan struct{}) {\n\t// In overflow, make sure we don't store any more objects.\n\tif t.trackOverflow {\n\t\treturn\n\t}\n\n\t// If this would overflow the state we reject it and set the flag (since\n\t// we aren't tracking everything that's required any longer).\n\tif len(t.trackChannels) >= defaultModifiedCache {\n\t\t// Mark that we are in the overflow state\n\t\tt.trackOverflow = true\n\n\t\t// Clear the map so that the channels can be garbage collected. It is\n\t\t// safe to do this since we have already overflowed and will be using\n\t\t// the slow notify algorithm.\n\t\tt.trackChannels = nil\n\t\treturn\n\t}\n\n\t// Create the map on the fly when we need it.\n\tif t.trackChannels == nil {\n\t\tt.trackChannels = make(map[chan struct{}]struct{})\n\t}\n\n\t// Otherwise we are good to track it.\n\tt.trackChannels[ch] = struct{}{}\n}\n\n// writeNode returns a node to be modified, if the current node has already been\n// modified during the course of the transaction, it is used in-place. Set\n// forLeafUpdate to true if you are getting a write node to update the leaf,\n// which will set leaf mutation tracking appropriately as well.\nfunc (t *Txn) writeNode(n *Node, forLeafUpdate bool) *Node {\n\t// Ensure the writable set exists.\n\tif t.writable == nil {\n\t\tlru, err := simplelru.NewLRU(defaultModifiedCache, nil)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tt.writable = lru\n\t}\n\n\t// If this node has already been modified, we can continue to use it\n\t// during this transaction. We know that we don't need to track it for\n\t// a node update since the node is writable, but if this is for a leaf\n\t// update we track it, in case the initial write to this node didn't\n\t// update the leaf.\n\tif _, ok := t.writable.Get(n); ok {\n\t\tif t.trackMutate && forLeafUpdate && n.leaf != nil {\n\t\t\tt.trackChannel(n.leaf.mutateCh)\n\t\t}\n\t\treturn n\n\t}\n\n\t// Mark this node as being mutated.\n\tif t.trackMutate {\n\t\tt.trackChannel(n.mutateCh)\n\t}\n\n\t// Mark its leaf as being mutated, if appropriate.\n\tif t.trackMutate && forLeafUpdate && n.leaf != nil {\n\t\tt.trackChannel(n.leaf.mutateCh)\n\t}\n\n\t// Copy the existing node. If you have set forLeafUpdate it will be\n\t// safe to replace this leaf with another after you get your node for\n\t// writing. You MUST replace it, because the channel associated with\n\t// this leaf will be closed when this transaction is committed.\n\tnc := &Node{\n\t\tmutateCh: make(chan struct{}),\n\t\tleaf:     n.leaf,\n\t}\n\tif n.prefix != nil {\n\t\tnc.prefix = make([]byte, len(n.prefix))\n\t\tcopy(nc.prefix, n.prefix)\n\t}\n\tif len(n.edges) != 0 {\n\t\tnc.edges = make([]edge, len(n.edges))\n\t\tcopy(nc.edges, n.edges)\n\t}\n\n\t// Mark this node as writable.\n\tt.writable.Add(nc, nil)\n\treturn nc\n}\n\n// Visit all the nodes in the tree under n, and add their mutateChannels to the transaction\n// Returns the size of the subtree visited\nfunc (t *Txn) trackChannelsAndCount(n *Node) int {\n\t// Count only leaf nodes\n\tleaves := 0\n\tif n.leaf != nil {\n\t\tleaves = 1\n\t}\n\t// Mark this node as being mutated.\n\tif t.trackMutate {\n\t\tt.trackChannel(n.mutateCh)\n\t}\n\n\t// Mark its leaf as being mutated, if appropriate.\n\tif t.trackMutate && n.leaf != nil {\n\t\tt.trackChannel(n.leaf.mutateCh)\n\t}\n\n\t// Recurse on the children\n\tfor _, e := range n.edges {\n\t\tleaves += t.trackChannelsAndCount(e.node)\n\t}\n\treturn leaves\n}\n\n// mergeChild is called to collapse the given node with its child. This is only\n// called when the given node is not a leaf and has a single edge.\nfunc (t *Txn) mergeChild(n *Node) {\n\t// Mark the child node as being mutated since we are about to abandon\n\t// it. We don't need to mark the leaf since we are retaining it if it\n\t// is there.\n\te := n.edges[0]\n\tchild := e.node\n\tif t.trackMutate {\n\t\tt.trackChannel(child.mutateCh)\n\t}\n\n\t// Merge the nodes.\n\tn.prefix = concat(n.prefix, child.prefix)\n\tn.leaf = child.leaf\n\tif len(child.edges) != 0 {\n\t\tn.edges = make([]edge, len(child.edges))\n\t\tcopy(n.edges, child.edges)\n\t} else {\n\t\tn.edges = nil\n\t}\n}\n\n// insert does a recursive insertion\nfunc (t *Txn) insert(n *Node, k, search []byte, v interface{}) (*Node, interface{}, bool) {\n\t// Handle key exhaustion\n\tif len(search) == 0 {\n\t\tvar oldVal interface{}\n\t\tdidUpdate := false\n\t\tif n.isLeaf() {\n\t\t\toldVal = n.leaf.val\n\t\t\tdidUpdate = true\n\t\t}\n\n\t\tnc := t.writeNode(n, true)\n\t\tnc.leaf = &leafNode{\n\t\t\tmutateCh: make(chan struct{}),\n\t\t\tkey:      k,\n\t\t\tval:      v,\n\t\t}\n\t\treturn nc, oldVal, didUpdate\n\t}\n\n\t// Look for the edge\n\tidx, child := n.getEdge(search[0])\n\n\t// No edge, create one\n\tif child == nil {\n\t\te := edge{\n\t\t\tlabel: search[0],\n\t\t\tnode: &Node{\n\t\t\t\tmutateCh: make(chan struct{}),\n\t\t\t\tleaf: &leafNode{\n\t\t\t\t\tmutateCh: make(chan struct{}),\n\t\t\t\t\tkey:      k,\n\t\t\t\t\tval:      v,\n\t\t\t\t},\n\t\t\t\tprefix: search,\n\t\t\t},\n\t\t}\n\t\tnc := t.writeNode(n, false)\n\t\tnc.addEdge(e)\n\t\treturn nc, nil, false\n\t}\n\n\t// Determine longest prefix of the search key on match\n\tcommonPrefix := longestPrefix(search, child.prefix)\n\tif commonPrefix == len(child.prefix) {\n\t\tsearch = search[commonPrefix:]\n\t\tnewChild, oldVal, didUpdate := t.insert(child, k, search, v)\n\t\tif newChild != nil {\n\t\t\tnc := t.writeNode(n, false)\n\t\t\tnc.edges[idx].node = newChild\n\t\t\treturn nc, oldVal, didUpdate\n\t\t}\n\t\treturn nil, oldVal, didUpdate\n\t}\n\n\t// Split the node\n\tnc := t.writeNode(n, false)\n\tsplitNode := &Node{\n\t\tmutateCh: make(chan struct{}),\n\t\tprefix:   search[:commonPrefix],\n\t}\n\tnc.replaceEdge(edge{\n\t\tlabel: search[0],\n\t\tnode:  splitNode,\n\t})\n\n\t// Restore the existing child node\n\tmodChild := t.writeNode(child, false)\n\tsplitNode.addEdge(edge{\n\t\tlabel: modChild.prefix[commonPrefix],\n\t\tnode:  modChild,\n\t})\n\tmodChild.prefix = modChild.prefix[commonPrefix:]\n\n\t// Create a new leaf node\n\tleaf := &leafNode{\n\t\tmutateCh: make(chan struct{}),\n\t\tkey:      k,\n\t\tval:      v,\n\t}\n\n\t// If the new key is a subset, add to to this node\n\tsearch = search[commonPrefix:]\n\tif len(search) == 0 {\n\t\tsplitNode.leaf = leaf\n\t\treturn nc, nil, false\n\t}\n\n\t// Create a new edge for the node\n\tsplitNode.addEdge(edge{\n\t\tlabel: search[0],\n\t\tnode: &Node{\n\t\t\tmutateCh: make(chan struct{}),\n\t\t\tleaf:     leaf,\n\t\t\tprefix:   search,\n\t\t},\n\t})\n\treturn nc, nil, false\n}\n\n// delete does a recursive deletion\nfunc (t *Txn) delete(parent, n *Node, search []byte) (*Node, *leafNode) {\n\t// Check for key exhaustion\n\tif len(search) == 0 {\n\t\tif !n.isLeaf() {\n\t\t\treturn nil, nil\n\t\t}\n\t\t// Copy the pointer in case we are in a transaction that already\n\t\t// modified this node since the node will be reused. Any changes\n\t\t// made to the node will not affect returning the original leaf\n\t\t// value.\n\t\toldLeaf := n.leaf\n\n\t\t// Remove the leaf node\n\t\tnc := t.writeNode(n, true)\n\t\tnc.leaf = nil\n\n\t\t// Check if this node should be merged\n\t\tif n != t.root && len(nc.edges) == 1 {\n\t\t\tt.mergeChild(nc)\n\t\t}\n\t\treturn nc, oldLeaf\n\t}\n\n\t// Look for an edge\n\tlabel := search[0]\n\tidx, child := n.getEdge(label)\n\tif child == nil || !bytes.HasPrefix(search, child.prefix) {\n\t\treturn nil, nil\n\t}\n\n\t// Consume the search prefix\n\tsearch = search[len(child.prefix):]\n\tnewChild, leaf := t.delete(n, child, search)\n\tif newChild == nil {\n\t\treturn nil, nil\n\t}\n\n\t// Copy this node. WATCH OUT - it's safe to pass \"false\" here because we\n\t// will only ADD a leaf via nc.mergeChild() if there isn't one due to\n\t// the !nc.isLeaf() check in the logic just below. This is pretty subtle,\n\t// so be careful if you change any of the logic here.\n\tnc := t.writeNode(n, false)\n\n\t// Delete the edge if the node has no edges\n\tif newChild.leaf == nil && len(newChild.edges) == 0 {\n\t\tnc.delEdge(label)\n\t\tif n != t.root && len(nc.edges) == 1 && !nc.isLeaf() {\n\t\t\tt.mergeChild(nc)\n\t\t}\n\t} else {\n\t\tnc.edges[idx].node = newChild\n\t}\n\treturn nc, leaf\n}\n\n// delete does a recursive deletion\nfunc (t *Txn) deletePrefix(parent, n *Node, search []byte) (*Node, int) {\n\t// Check for key exhaustion\n\tif len(search) == 0 {\n\t\tnc := t.writeNode(n, true)\n\t\tif n.isLeaf() {\n\t\t\tnc.leaf = nil\n\t\t}\n\t\tnc.edges = nil\n\t\treturn nc, t.trackChannelsAndCount(n)\n\t}\n\n\t// Look for an edge\n\tlabel := search[0]\n\tidx, child := n.getEdge(label)\n\t// We make sure that either the child node's prefix starts with the search term, or the search term starts with the child node's prefix\n\t// Need to do both so that we can delete prefixes that don't correspond to any node in the tree\n\tif child == nil || (!bytes.HasPrefix(child.prefix, search) && !bytes.HasPrefix(search, child.prefix)) {\n\t\treturn nil, 0\n\t}\n\n\t// Consume the search prefix\n\tif len(child.prefix) > len(search) {\n\t\tsearch = []byte(\"\")\n\t} else {\n\t\tsearch = search[len(child.prefix):]\n\t}\n\tnewChild, numDeletions := t.deletePrefix(n, child, search)\n\tif newChild == nil {\n\t\treturn nil, 0\n\t}\n\t// Copy this node. WATCH OUT - it's safe to pass \"false\" here because we\n\t// will only ADD a leaf via nc.mergeChild() if there isn't one due to\n\t// the !nc.isLeaf() check in the logic just below. This is pretty subtle,\n\t// so be careful if you change any of the logic here.\n\n\tnc := t.writeNode(n, false)\n\n\t// Delete the edge if the node has no edges\n\tif newChild.leaf == nil && len(newChild.edges) == 0 {\n\t\tnc.delEdge(label)\n\t\tif n != t.root && len(nc.edges) == 1 && !nc.isLeaf() {\n\t\t\tt.mergeChild(nc)\n\t\t}\n\t} else {\n\t\tnc.edges[idx].node = newChild\n\t}\n\treturn nc, numDeletions\n}\n\n// Insert is used to add or update a given key. The return provides\n// the previous value and a bool indicating if any was set.\nfunc (t *Txn) Insert(k []byte, v interface{}) (interface{}, bool) {\n\tnewRoot, oldVal, didUpdate := t.insert(t.root, k, k, v)\n\tif newRoot != nil {\n\t\tt.root = newRoot\n\t}\n\tif !didUpdate {\n\t\tt.size++\n\t}\n\treturn oldVal, didUpdate\n}\n\n// Delete is used to delete a given key. Returns the old value if any,\n// and a bool indicating if the key was set.\nfunc (t *Txn) Delete(k []byte) (interface{}, bool) {\n\tnewRoot, leaf := t.delete(nil, t.root, k)\n\tif newRoot != nil {\n\t\tt.root = newRoot\n\t}\n\tif leaf != nil {\n\t\tt.size--\n\t\treturn leaf.val, true\n\t}\n\treturn nil, false\n}\n\n// DeletePrefix is used to delete an entire subtree that matches the prefix\n// This will delete all nodes under that prefix\nfunc (t *Txn) DeletePrefix(prefix []byte) bool {\n\tnewRoot, numDeletions := t.deletePrefix(nil, t.root, prefix)\n\tif newRoot != nil {\n\t\tt.root = newRoot\n\t\tt.size = t.size - numDeletions\n\t\treturn true\n\t}\n\treturn false\n\n}\n\n// Root returns the current root of the radix tree within this\n// transaction. The root is not safe across insert and delete operations,\n// but can be used to read the current state during a transaction.\nfunc (t *Txn) Root() *Node {\n\treturn t.root\n}\n\n// Get is used to lookup a specific key, returning\n// the value and if it was found\nfunc (t *Txn) Get(k []byte) (interface{}, bool) {\n\treturn t.root.Get(k)\n}\n\n// GetWatch is used to lookup a specific key, returning\n// the watch channel, value and if it was found\nfunc (t *Txn) GetWatch(k []byte) (<-chan struct{}, interface{}, bool) {\n\treturn t.root.GetWatch(k)\n}\n\n// Commit is used to finalize the transaction and return a new tree. If mutation\n// tracking is turned on then notifications will also be issued.\nfunc (t *Txn) Commit() *Tree {\n\tnt := t.CommitOnly()\n\tif t.trackMutate {\n\t\tt.Notify()\n\t}\n\treturn nt\n}\n\n// CommitOnly is used to finalize the transaction and return a new tree, but\n// does not issue any notifications until Notify is called.\nfunc (t *Txn) CommitOnly() *Tree {\n\tnt := &Tree{t.root, t.size}\n\tt.writable = nil\n\treturn nt\n}\n\n// slowNotify does a complete comparison of the before and after trees in order\n// to trigger notifications. This doesn't require any additional state but it\n// is very expensive to compute.\nfunc (t *Txn) slowNotify() {\n\tsnapIter := t.snap.rawIterator()\n\trootIter := t.root.rawIterator()\n\tfor snapIter.Front() != nil || rootIter.Front() != nil {\n\t\t// If we've exhausted the nodes in the old snapshot, we know\n\t\t// there's nothing remaining to notify.\n\t\tif snapIter.Front() == nil {\n\t\t\treturn\n\t\t}\n\t\tsnapElem := snapIter.Front()\n\n\t\t// If we've exhausted the nodes in the new root, we know we need\n\t\t// to invalidate everything that remains in the old snapshot. We\n\t\t// know from the loop condition there's something in the old\n\t\t// snapshot.\n\t\tif rootIter.Front() == nil {\n\t\t\tclose(snapElem.mutateCh)\n\t\t\tif snapElem.isLeaf() {\n\t\t\t\tclose(snapElem.leaf.mutateCh)\n\t\t\t}\n\t\t\tsnapIter.Next()\n\t\t\tcontinue\n\t\t}\n\n\t\t// Do one string compare so we can check the various conditions\n\t\t// below without repeating the compare.\n\t\tcmp := strings.Compare(snapIter.Path(), rootIter.Path())\n\n\t\t// If the snapshot is behind the root, then we must have deleted\n\t\t// this node during the transaction.\n\t\tif cmp < 0 {\n\t\t\tclose(snapElem.mutateCh)\n\t\t\tif snapElem.isLeaf() {\n\t\t\t\tclose(snapElem.leaf.mutateCh)\n\t\t\t}\n\t\t\tsnapIter.Next()\n\t\t\tcontinue\n\t\t}\n\n\t\t// If the snapshot is ahead of the root, then we must have added\n\t\t// this node during the transaction.\n\t\tif cmp > 0 {\n\t\t\trootIter.Next()\n\t\t\tcontinue\n\t\t}\n\n\t\t// If we have the same path, then we need to see if we mutated a\n\t\t// node and possibly the leaf.\n\t\trootElem := rootIter.Front()\n\t\tif snapElem != rootElem {\n\t\t\tclose(snapElem.mutateCh)\n\t\t\tif snapElem.leaf != nil && (snapElem.leaf != rootElem.leaf) {\n\t\t\t\tclose(snapElem.leaf.mutateCh)\n\t\t\t}\n\t\t}\n\t\tsnapIter.Next()\n\t\trootIter.Next()\n\t}\n}\n\n// Notify is used along with TrackMutate to trigger notifications. This must\n// only be done once a transaction is committed via CommitOnly, and it is called\n// automatically by Commit.\nfunc (t *Txn) Notify() {\n\tif !t.trackMutate {\n\t\treturn\n\t}\n\n\t// If we've overflowed the tracking state we can't use it in any way and\n\t// need to do a full tree compare.\n\tif t.trackOverflow {\n\t\tt.slowNotify()\n\t} else {\n\t\tfor ch := range t.trackChannels {\n\t\t\tclose(ch)\n\t\t}\n\t}\n\n\t// Clean up the tracking state so that a re-notify is safe (will trigger\n\t// the else clause above which will be a no-op).\n\tt.trackChannels = nil\n\tt.trackOverflow = false\n}\n\n// Insert is used to add or update a given key. The return provides\n// the new tree, previous value and a bool indicating if any was set.\nfunc (t *Tree) Insert(k []byte, v interface{}) (*Tree, interface{}, bool) {\n\ttxn := t.Txn()\n\told, ok := txn.Insert(k, v)\n\treturn txn.Commit(), old, ok\n}\n\n// Delete is used to delete a given key. Returns the new tree,\n// old value if any, and a bool indicating if the key was set.\nfunc (t *Tree) Delete(k []byte) (*Tree, interface{}, bool) {\n\ttxn := t.Txn()\n\told, ok := txn.Delete(k)\n\treturn txn.Commit(), old, ok\n}\n\n// DeletePrefix is used to delete all nodes starting with a given prefix. Returns the new tree,\n// and a bool indicating if the prefix matched any nodes\nfunc (t *Tree) DeletePrefix(k []byte) (*Tree, bool) {\n\ttxn := t.Txn()\n\tok := txn.DeletePrefix(k)\n\treturn txn.Commit(), ok\n}\n\n// Root returns the root node of the tree which can be used for richer\n// query operations.\nfunc (t *Tree) Root() *Node {\n\treturn t.root\n}\n\n// Get is used to lookup a specific key, returning\n// the value and if it was found\nfunc (t *Tree) Get(k []byte) (interface{}, bool) {\n\treturn t.root.Get(k)\n}\n\n// longestPrefix finds the length of the shared prefix\n// of two strings\nfunc longestPrefix(k1, k2 []byte) int {\n\tmax := len(k1)\n\tif l := len(k2); l < max {\n\t\tmax = l\n\t}\n\tvar i int\n\tfor i = 0; i < max; i++ {\n\t\tif k1[i] != k2[i] {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn i\n}\n\n// concat two byte slices, returning a third new copy\nfunc concat(a, b []byte) []byte {\n\tc := make([]byte, len(a)+len(b))\n\tcopy(c, a)\n\tcopy(c[len(a):], b)\n\treturn c\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-immutable-radix/iter.go",
    "content": "package iradix\n\nimport (\n\t\"bytes\"\n)\n\n// Iterator is used to iterate over a set of nodes\n// in pre-order\ntype Iterator struct {\n\tnode  *Node\n\tstack []edges\n}\n\n// SeekPrefixWatch is used to seek the iterator to a given prefix\n// and returns the watch channel of the finest granularity\nfunc (i *Iterator) SeekPrefixWatch(prefix []byte) (watch <-chan struct{}) {\n\t// Wipe the stack\n\ti.stack = nil\n\tn := i.node\n\twatch = n.mutateCh\n\tsearch := prefix\n\tfor {\n\t\t// Check for key exhaustion\n\t\tif len(search) == 0 {\n\t\t\ti.node = n\n\t\t\treturn\n\t\t}\n\n\t\t// Look for an edge\n\t\t_, n = n.getEdge(search[0])\n\t\tif n == nil {\n\t\t\ti.node = nil\n\t\t\treturn\n\t\t}\n\n\t\t// Update to the finest granularity as the search makes progress\n\t\twatch = n.mutateCh\n\n\t\t// Consume the search prefix\n\t\tif bytes.HasPrefix(search, n.prefix) {\n\t\t\tsearch = search[len(n.prefix):]\n\n\t\t} else if bytes.HasPrefix(n.prefix, search) {\n\t\t\ti.node = n\n\t\t\treturn\n\t\t} else {\n\t\t\ti.node = nil\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// SeekPrefix is used to seek the iterator to a given prefix\nfunc (i *Iterator) SeekPrefix(prefix []byte) {\n\ti.SeekPrefixWatch(prefix)\n}\n\nfunc (i *Iterator) recurseMin(n *Node) *Node {\n\t// Traverse to the minimum child\n\tif n.leaf != nil {\n\t\treturn n\n\t}\n\tnEdges := len(n.edges)\n\tif nEdges > 1 {\n\t\t// Add all the other edges to the stack (the min node will be added as\n\t\t// we recurse)\n\t\ti.stack = append(i.stack, n.edges[1:])\n\t}\n\tif nEdges > 0 {\n\t\treturn i.recurseMin(n.edges[0].node)\n\t}\n\t// Shouldn't be possible\n\treturn nil\n}\n\n// SeekLowerBound is used to seek the iterator to the smallest key that is\n// greater or equal to the given key. There is no watch variant as it's hard to\n// predict based on the radix structure which node(s) changes might affect the\n// result.\nfunc (i *Iterator) SeekLowerBound(key []byte) {\n\t// Wipe the stack. Unlike Prefix iteration, we need to build the stack as we\n\t// go because we need only a subset of edges of many nodes in the path to the\n\t// leaf with the lower bound. Note that the iterator will still recurse into\n\t// children that we don't traverse on the way to the reverse lower bound as it\n\t// walks the stack.\n\ti.stack = []edges{}\n\t// i.node starts off in the common case as pointing to the root node of the\n\t// tree. By the time we return we have either found a lower bound and setup\n\t// the stack to traverse all larger keys, or we have not and the stack and\n\t// node should both be nil to prevent the iterator from assuming it is just\n\t// iterating the whole tree from the root node. Either way this needs to end\n\t// up as nil so just set it here.\n\tn := i.node\n\ti.node = nil\n\tsearch := key\n\n\tfound := func(n *Node) {\n\t\ti.stack = append(i.stack, edges{edge{node: n}})\n\t}\n\n\tfindMin := func(n *Node) {\n\t\tn = i.recurseMin(n)\n\t\tif n != nil {\n\t\t\tfound(n)\n\t\t\treturn\n\t\t}\n\t}\n\n\tfor {\n\t\t// Compare current prefix with the search key's same-length prefix.\n\t\tvar prefixCmp int\n\t\tif len(n.prefix) < len(search) {\n\t\t\tprefixCmp = bytes.Compare(n.prefix, search[0:len(n.prefix)])\n\t\t} else {\n\t\t\tprefixCmp = bytes.Compare(n.prefix, search)\n\t\t}\n\n\t\tif prefixCmp > 0 {\n\t\t\t// Prefix is larger, that means the lower bound is greater than the search\n\t\t\t// and from now on we need to follow the minimum path to the smallest\n\t\t\t// leaf under this subtree.\n\t\t\tfindMin(n)\n\t\t\treturn\n\t\t}\n\n\t\tif prefixCmp < 0 {\n\t\t\t// Prefix is smaller than search prefix, that means there is no lower\n\t\t\t// bound\n\t\t\ti.node = nil\n\t\t\treturn\n\t\t}\n\n\t\t// Prefix is equal, we are still heading for an exact match. If this is a\n\t\t// leaf and an exact match we're done.\n\t\tif n.leaf != nil && bytes.Equal(n.leaf.key, key) {\n\t\t\tfound(n)\n\t\t\treturn\n\t\t}\n\n\t\t// Consume the search prefix if the current node has one. Note that this is\n\t\t// safe because if n.prefix is longer than the search slice prefixCmp would\n\t\t// have been > 0 above and the method would have already returned.\n\t\tsearch = search[len(n.prefix):]\n\n\t\tif len(search) == 0 {\n\t\t\t// We've exhausted the search key, but the current node is not an exact\n\t\t\t// match or not a leaf. That means that the leaf value if it exists, and\n\t\t\t// all child nodes must be strictly greater, the smallest key in this\n\t\t\t// subtree must be the lower bound.\n\t\t\tfindMin(n)\n\t\t\treturn\n\t\t}\n\n\t\t// Otherwise, take the lower bound next edge.\n\t\tidx, lbNode := n.getLowerBoundEdge(search[0])\n\t\tif lbNode == nil {\n\t\t\treturn\n\t\t}\n\n\t\t// Create stack edges for the all strictly higher edges in this node.\n\t\tif idx+1 < len(n.edges) {\n\t\t\ti.stack = append(i.stack, n.edges[idx+1:])\n\t\t}\n\n\t\t// Recurse\n\t\tn = lbNode\n\t}\n}\n\n// Next returns the next node in order\nfunc (i *Iterator) Next() ([]byte, interface{}, bool) {\n\t// Initialize our stack if needed\n\tif i.stack == nil && i.node != nil {\n\t\ti.stack = []edges{\n\t\t\t{\n\t\t\t\tedge{node: i.node},\n\t\t\t},\n\t\t}\n\t}\n\n\tfor len(i.stack) > 0 {\n\t\t// Inspect the last element of the stack\n\t\tn := len(i.stack)\n\t\tlast := i.stack[n-1]\n\t\telem := last[0].node\n\n\t\t// Update the stack\n\t\tif len(last) > 1 {\n\t\t\ti.stack[n-1] = last[1:]\n\t\t} else {\n\t\t\ti.stack = i.stack[:n-1]\n\t\t}\n\n\t\t// Push the edges onto the frontier\n\t\tif len(elem.edges) > 0 {\n\t\t\ti.stack = append(i.stack, elem.edges)\n\t\t}\n\n\t\t// Return the leaf values if any\n\t\tif elem.leaf != nil {\n\t\t\treturn elem.leaf.key, elem.leaf.val, true\n\t\t}\n\t}\n\treturn nil, nil, false\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-immutable-radix/node.go",
    "content": "package iradix\n\nimport (\n\t\"bytes\"\n\t\"sort\"\n)\n\n// WalkFn is used when walking the tree. Takes a\n// key and value, returning if iteration should\n// be terminated.\ntype WalkFn func(k []byte, v interface{}) bool\n\n// leafNode is used to represent a value\ntype leafNode struct {\n\tmutateCh chan struct{}\n\tkey      []byte\n\tval      interface{}\n}\n\n// edge is used to represent an edge node\ntype edge struct {\n\tlabel byte\n\tnode  *Node\n}\n\n// Node is an immutable node in the radix tree\ntype Node struct {\n\t// mutateCh is closed if this node is modified\n\tmutateCh chan struct{}\n\n\t// leaf is used to store possible leaf\n\tleaf *leafNode\n\n\t// prefix is the common prefix we ignore\n\tprefix []byte\n\n\t// Edges should be stored in-order for iteration.\n\t// We avoid a fully materialized slice to save memory,\n\t// since in most cases we expect to be sparse\n\tedges edges\n}\n\nfunc (n *Node) isLeaf() bool {\n\treturn n.leaf != nil\n}\n\nfunc (n *Node) addEdge(e edge) {\n\tnum := len(n.edges)\n\tidx := sort.Search(num, func(i int) bool {\n\t\treturn n.edges[i].label >= e.label\n\t})\n\tn.edges = append(n.edges, e)\n\tif idx != num {\n\t\tcopy(n.edges[idx+1:], n.edges[idx:num])\n\t\tn.edges[idx] = e\n\t}\n}\n\nfunc (n *Node) replaceEdge(e edge) {\n\tnum := len(n.edges)\n\tidx := sort.Search(num, func(i int) bool {\n\t\treturn n.edges[i].label >= e.label\n\t})\n\tif idx < num && n.edges[idx].label == e.label {\n\t\tn.edges[idx].node = e.node\n\t\treturn\n\t}\n\tpanic(\"replacing missing edge\")\n}\n\nfunc (n *Node) getEdge(label byte) (int, *Node) {\n\tnum := len(n.edges)\n\tidx := sort.Search(num, func(i int) bool {\n\t\treturn n.edges[i].label >= label\n\t})\n\tif idx < num && n.edges[idx].label == label {\n\t\treturn idx, n.edges[idx].node\n\t}\n\treturn -1, nil\n}\n\nfunc (n *Node) getLowerBoundEdge(label byte) (int, *Node) {\n\tnum := len(n.edges)\n\tidx := sort.Search(num, func(i int) bool {\n\t\treturn n.edges[i].label >= label\n\t})\n\t// we want lower bound behavior so return even if it's not an exact match\n\tif idx < num {\n\t\treturn idx, n.edges[idx].node\n\t}\n\treturn -1, nil\n}\n\nfunc (n *Node) delEdge(label byte) {\n\tnum := len(n.edges)\n\tidx := sort.Search(num, func(i int) bool {\n\t\treturn n.edges[i].label >= label\n\t})\n\tif idx < num && n.edges[idx].label == label {\n\t\tcopy(n.edges[idx:], n.edges[idx+1:])\n\t\tn.edges[len(n.edges)-1] = edge{}\n\t\tn.edges = n.edges[:len(n.edges)-1]\n\t}\n}\n\nfunc (n *Node) GetWatch(k []byte) (<-chan struct{}, interface{}, bool) {\n\tsearch := k\n\twatch := n.mutateCh\n\tfor {\n\t\t// Check for key exhaustion\n\t\tif len(search) == 0 {\n\t\t\tif n.isLeaf() {\n\t\t\t\treturn n.leaf.mutateCh, n.leaf.val, true\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\t// Look for an edge\n\t\t_, n = n.getEdge(search[0])\n\t\tif n == nil {\n\t\t\tbreak\n\t\t}\n\n\t\t// Update to the finest granularity as the search makes progress\n\t\twatch = n.mutateCh\n\n\t\t// Consume the search prefix\n\t\tif bytes.HasPrefix(search, n.prefix) {\n\t\t\tsearch = search[len(n.prefix):]\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn watch, nil, false\n}\n\nfunc (n *Node) Get(k []byte) (interface{}, bool) {\n\t_, val, ok := n.GetWatch(k)\n\treturn val, ok\n}\n\n// LongestPrefix is like Get, but instead of an\n// exact match, it will return the longest prefix match.\nfunc (n *Node) LongestPrefix(k []byte) ([]byte, interface{}, bool) {\n\tvar last *leafNode\n\tsearch := k\n\tfor {\n\t\t// Look for a leaf node\n\t\tif n.isLeaf() {\n\t\t\tlast = n.leaf\n\t\t}\n\n\t\t// Check for key exhaution\n\t\tif len(search) == 0 {\n\t\t\tbreak\n\t\t}\n\n\t\t// Look for an edge\n\t\t_, n = n.getEdge(search[0])\n\t\tif n == nil {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume the search prefix\n\t\tif bytes.HasPrefix(search, n.prefix) {\n\t\t\tsearch = search[len(n.prefix):]\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\tif last != nil {\n\t\treturn last.key, last.val, true\n\t}\n\treturn nil, nil, false\n}\n\n// Minimum is used to return the minimum value in the tree\nfunc (n *Node) Minimum() ([]byte, interface{}, bool) {\n\tfor {\n\t\tif n.isLeaf() {\n\t\t\treturn n.leaf.key, n.leaf.val, true\n\t\t}\n\t\tif len(n.edges) > 0 {\n\t\t\tn = n.edges[0].node\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn nil, nil, false\n}\n\n// Maximum is used to return the maximum value in the tree\nfunc (n *Node) Maximum() ([]byte, interface{}, bool) {\n\tfor {\n\t\tif num := len(n.edges); num > 0 {\n\t\t\tn = n.edges[num-1].node\n\t\t\tcontinue\n\t\t}\n\t\tif n.isLeaf() {\n\t\t\treturn n.leaf.key, n.leaf.val, true\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn nil, nil, false\n}\n\n// Iterator is used to return an iterator at\n// the given node to walk the tree\nfunc (n *Node) Iterator() *Iterator {\n\treturn &Iterator{node: n}\n}\n\n// ReverseIterator is used to return an iterator at\n// the given node to walk the tree backwards\nfunc (n *Node) ReverseIterator() *ReverseIterator {\n\treturn NewReverseIterator(n)\n}\n\n// rawIterator is used to return a raw iterator at the given node to walk the\n// tree.\nfunc (n *Node) rawIterator() *rawIterator {\n\titer := &rawIterator{node: n}\n\titer.Next()\n\treturn iter\n}\n\n// Walk is used to walk the tree\nfunc (n *Node) Walk(fn WalkFn) {\n\trecursiveWalk(n, fn)\n}\n\n// WalkBackwards is used to walk the tree in reverse order\nfunc (n *Node) WalkBackwards(fn WalkFn) {\n\treverseRecursiveWalk(n, fn)\n}\n\n// WalkPrefix is used to walk the tree under a prefix\nfunc (n *Node) WalkPrefix(prefix []byte, fn WalkFn) {\n\tsearch := prefix\n\tfor {\n\t\t// Check for key exhaution\n\t\tif len(search) == 0 {\n\t\t\trecursiveWalk(n, fn)\n\t\t\treturn\n\t\t}\n\n\t\t// Look for an edge\n\t\t_, n = n.getEdge(search[0])\n\t\tif n == nil {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume the search prefix\n\t\tif bytes.HasPrefix(search, n.prefix) {\n\t\t\tsearch = search[len(n.prefix):]\n\n\t\t} else if bytes.HasPrefix(n.prefix, search) {\n\t\t\t// Child may be under our search prefix\n\t\t\trecursiveWalk(n, fn)\n\t\t\treturn\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n// WalkPath is used to walk the tree, but only visiting nodes\n// from the root down to a given leaf. Where WalkPrefix walks\n// all the entries *under* the given prefix, this walks the\n// entries *above* the given prefix.\nfunc (n *Node) WalkPath(path []byte, fn WalkFn) {\n\tsearch := path\n\tfor {\n\t\t// Visit the leaf values if any\n\t\tif n.leaf != nil && fn(n.leaf.key, n.leaf.val) {\n\t\t\treturn\n\t\t}\n\n\t\t// Check for key exhaution\n\t\tif len(search) == 0 {\n\t\t\treturn\n\t\t}\n\n\t\t// Look for an edge\n\t\t_, n = n.getEdge(search[0])\n\t\tif n == nil {\n\t\t\treturn\n\t\t}\n\n\t\t// Consume the search prefix\n\t\tif bytes.HasPrefix(search, n.prefix) {\n\t\t\tsearch = search[len(n.prefix):]\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n// recursiveWalk is used to do a pre-order walk of a node\n// recursively. Returns true if the walk should be aborted\nfunc recursiveWalk(n *Node, fn WalkFn) bool {\n\t// Visit the leaf values if any\n\tif n.leaf != nil && fn(n.leaf.key, n.leaf.val) {\n\t\treturn true\n\t}\n\n\t// Recurse on the children\n\tfor _, e := range n.edges {\n\t\tif recursiveWalk(e.node, fn) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// reverseRecursiveWalk is used to do a reverse pre-order\n// walk of a node recursively. Returns true if the walk\n// should be aborted\nfunc reverseRecursiveWalk(n *Node, fn WalkFn) bool {\n\t// Visit the leaf values if any\n\tif n.leaf != nil && fn(n.leaf.key, n.leaf.val) {\n\t\treturn true\n\t}\n\n\t// Recurse on the children in reverse order\n\tfor i := len(n.edges) - 1; i >= 0; i-- {\n\t\te := n.edges[i]\n\t\tif reverseRecursiveWalk(e.node, fn) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-immutable-radix/raw_iter.go",
    "content": "package iradix\n\n// rawIterator visits each of the nodes in the tree, even the ones that are not\n// leaves. It keeps track of the effective path (what a leaf at a given node\n// would be called), which is useful for comparing trees.\ntype rawIterator struct {\n\t// node is the starting node in the tree for the iterator.\n\tnode *Node\n\n\t// stack keeps track of edges in the frontier.\n\tstack []rawStackEntry\n\n\t// pos is the current position of the iterator.\n\tpos *Node\n\n\t// path is the effective path of the current iterator position,\n\t// regardless of whether the current node is a leaf.\n\tpath string\n}\n\n// rawStackEntry is used to keep track of the cumulative common path as well as\n// its associated edges in the frontier.\ntype rawStackEntry struct {\n\tpath  string\n\tedges edges\n}\n\n// Front returns the current node that has been iterated to.\nfunc (i *rawIterator) Front() *Node {\n\treturn i.pos\n}\n\n// Path returns the effective path of the current node, even if it's not actually\n// a leaf.\nfunc (i *rawIterator) Path() string {\n\treturn i.path\n}\n\n// Next advances the iterator to the next node.\nfunc (i *rawIterator) Next() {\n\t// Initialize our stack if needed.\n\tif i.stack == nil && i.node != nil {\n\t\ti.stack = []rawStackEntry{\n\t\t\t{\n\t\t\t\tedges: edges{\n\t\t\t\t\tedge{node: i.node},\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t}\n\n\tfor len(i.stack) > 0 {\n\t\t// Inspect the last element of the stack.\n\t\tn := len(i.stack)\n\t\tlast := i.stack[n-1]\n\t\telem := last.edges[0].node\n\n\t\t// Update the stack.\n\t\tif len(last.edges) > 1 {\n\t\t\ti.stack[n-1].edges = last.edges[1:]\n\t\t} else {\n\t\t\ti.stack = i.stack[:n-1]\n\t\t}\n\n\t\t// Push the edges onto the frontier.\n\t\tif len(elem.edges) > 0 {\n\t\t\tpath := last.path + string(elem.prefix)\n\t\t\ti.stack = append(i.stack, rawStackEntry{path, elem.edges})\n\t\t}\n\n\t\ti.pos = elem\n\t\ti.path = last.path + string(elem.prefix)\n\t\treturn\n\t}\n\n\ti.pos = nil\n\ti.path = \"\"\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-immutable-radix/reverse_iter.go",
    "content": "package iradix\n\nimport (\n\t\"bytes\"\n)\n\n// ReverseIterator is used to iterate over a set of nodes\n// in reverse in-order\ntype ReverseIterator struct {\n\ti *Iterator\n\n\t// expandedParents stores the set of parent nodes whose relevant children have\n\t// already been pushed into the stack. This can happen during seek or during\n\t// iteration.\n\t//\n\t// Unlike forward iteration we need to recurse into children before we can\n\t// output the value stored in an internal leaf since all children are greater.\n\t// We use this to track whether we have already ensured all the children are\n\t// in the stack.\n\texpandedParents map[*Node]struct{}\n}\n\n// NewReverseIterator returns a new ReverseIterator at a node\nfunc NewReverseIterator(n *Node) *ReverseIterator {\n\treturn &ReverseIterator{\n\t\ti: &Iterator{node: n},\n\t}\n}\n\n// SeekPrefixWatch is used to seek the iterator to a given prefix\n// and returns the watch channel of the finest granularity\nfunc (ri *ReverseIterator) SeekPrefixWatch(prefix []byte) (watch <-chan struct{}) {\n\treturn ri.i.SeekPrefixWatch(prefix)\n}\n\n// SeekPrefix is used to seek the iterator to a given prefix\nfunc (ri *ReverseIterator) SeekPrefix(prefix []byte) {\n\tri.i.SeekPrefixWatch(prefix)\n}\n\n// SeekReverseLowerBound is used to seek the iterator to the largest key that is\n// lower or equal to the given key. There is no watch variant as it's hard to\n// predict based on the radix structure which node(s) changes might affect the\n// result.\nfunc (ri *ReverseIterator) SeekReverseLowerBound(key []byte) {\n\t// Wipe the stack. Unlike Prefix iteration, we need to build the stack as we\n\t// go because we need only a subset of edges of many nodes in the path to the\n\t// leaf with the lower bound. Note that the iterator will still recurse into\n\t// children that we don't traverse on the way to the reverse lower bound as it\n\t// walks the stack.\n\tri.i.stack = []edges{}\n\t// ri.i.node starts off in the common case as pointing to the root node of the\n\t// tree. By the time we return we have either found a lower bound and setup\n\t// the stack to traverse all larger keys, or we have not and the stack and\n\t// node should both be nil to prevent the iterator from assuming it is just\n\t// iterating the whole tree from the root node. Either way this needs to end\n\t// up as nil so just set it here.\n\tn := ri.i.node\n\tri.i.node = nil\n\tsearch := key\n\n\tif ri.expandedParents == nil {\n\t\tri.expandedParents = make(map[*Node]struct{})\n\t}\n\n\tfound := func(n *Node) {\n\t\tri.i.stack = append(ri.i.stack, edges{edge{node: n}})\n\t\t// We need to mark this node as expanded in advance too otherwise the\n\t\t// iterator will attempt to walk all of its children even though they are\n\t\t// greater than the lower bound we have found. We've expanded it in the\n\t\t// sense that all of its children that we want to walk are already in the\n\t\t// stack (i.e. none of them).\n\t\tri.expandedParents[n] = struct{}{}\n\t}\n\n\tfor {\n\t\t// Compare current prefix with the search key's same-length prefix.\n\t\tvar prefixCmp int\n\t\tif len(n.prefix) < len(search) {\n\t\t\tprefixCmp = bytes.Compare(n.prefix, search[0:len(n.prefix)])\n\t\t} else {\n\t\t\tprefixCmp = bytes.Compare(n.prefix, search)\n\t\t}\n\n\t\tif prefixCmp < 0 {\n\t\t\t// Prefix is smaller than search prefix, that means there is no exact\n\t\t\t// match for the search key. But we are looking in reverse, so the reverse\n\t\t\t// lower bound will be the largest leaf under this subtree, since it is\n\t\t\t// the value that would come right before the current search key if it\n\t\t\t// were in the tree. So we need to follow the maximum path in this subtree\n\t\t\t// to find it. Note that this is exactly what the iterator will already do\n\t\t\t// if it finds a node in the stack that has _not_ been marked as expanded\n\t\t\t// so in this one case we don't call `found` and instead let the iterator\n\t\t\t// do the expansion and recursion through all the children.\n\t\t\tri.i.stack = append(ri.i.stack, edges{edge{node: n}})\n\t\t\treturn\n\t\t}\n\n\t\tif prefixCmp > 0 {\n\t\t\t// Prefix is larger than search prefix, or there is no prefix but we've\n\t\t\t// also exhausted the search key. Either way, that means there is no\n\t\t\t// reverse lower bound since nothing comes before our current search\n\t\t\t// prefix.\n\t\t\treturn\n\t\t}\n\n\t\t// If this is a leaf, something needs to happen! Note that if it's a leaf\n\t\t// and prefixCmp was zero (which it must be to get here) then the leaf value\n\t\t// is either an exact match for the search, or it's lower. It can't be\n\t\t// greater.\n\t\tif n.isLeaf() {\n\n\t\t\t// Firstly, if it's an exact match, we're done!\n\t\t\tif bytes.Equal(n.leaf.key, key) {\n\t\t\t\tfound(n)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// It's not so this node's leaf value must be lower and could still be a\n\t\t\t// valid contender for reverse lower bound.\n\n\t\t\t// If it has no children then we are also done.\n\t\t\tif len(n.edges) == 0 {\n\t\t\t\t// This leaf is the lower bound.\n\t\t\t\tfound(n)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Finally, this leaf is internal (has children) so we'll keep searching,\n\t\t\t// but we need to add it to the iterator's stack since it has a leaf value\n\t\t\t// that needs to be iterated over. It needs to be added to the stack\n\t\t\t// before its children below as it comes first.\n\t\t\tri.i.stack = append(ri.i.stack, edges{edge{node: n}})\n\t\t\t// We also need to mark it as expanded since we'll be adding any of its\n\t\t\t// relevant children below and so don't want the iterator to re-add them\n\t\t\t// on its way back up the stack.\n\t\t\tri.expandedParents[n] = struct{}{}\n\t\t}\n\n\t\t// Consume the search prefix. Note that this is safe because if n.prefix is\n\t\t// longer than the search slice prefixCmp would have been > 0 above and the\n\t\t// method would have already returned.\n\t\tsearch = search[len(n.prefix):]\n\n\t\tif len(search) == 0 {\n\t\t\t// We've exhausted the search key but we are not at a leaf. That means all\n\t\t\t// children are greater than the search key so a reverse lower bound\n\t\t\t// doesn't exist in this subtree. Note that there might still be one in\n\t\t\t// the whole radix tree by following a different path somewhere further\n\t\t\t// up. If that's the case then the iterator's stack will contain all the\n\t\t\t// smaller nodes already and Previous will walk through them correctly.\n\t\t\treturn\n\t\t}\n\n\t\t// Otherwise, take the lower bound next edge.\n\t\tidx, lbNode := n.getLowerBoundEdge(search[0])\n\n\t\t// From here, we need to update the stack with all values lower than\n\t\t// the lower bound edge. Since getLowerBoundEdge() returns -1 when the\n\t\t// search prefix is larger than all edges, we need to place idx at the\n\t\t// last edge index so they can all be place in the stack, since they\n\t\t// come before our search prefix.\n\t\tif idx == -1 {\n\t\t\tidx = len(n.edges)\n\t\t}\n\n\t\t// Create stack edges for the all strictly lower edges in this node.\n\t\tif len(n.edges[:idx]) > 0 {\n\t\t\tri.i.stack = append(ri.i.stack, n.edges[:idx])\n\t\t}\n\n\t\t// Exit if there's no lower bound edge. The stack will have the previous\n\t\t// nodes already.\n\t\tif lbNode == nil {\n\t\t\treturn\n\t\t}\n\n\t\t// Recurse\n\t\tn = lbNode\n\t}\n}\n\n// Previous returns the previous node in reverse order\nfunc (ri *ReverseIterator) Previous() ([]byte, interface{}, bool) {\n\t// Initialize our stack if needed\n\tif ri.i.stack == nil && ri.i.node != nil {\n\t\tri.i.stack = []edges{\n\t\t\t{\n\t\t\t\tedge{node: ri.i.node},\n\t\t\t},\n\t\t}\n\t}\n\n\tif ri.expandedParents == nil {\n\t\tri.expandedParents = make(map[*Node]struct{})\n\t}\n\n\tfor len(ri.i.stack) > 0 {\n\t\t// Inspect the last element of the stack\n\t\tn := len(ri.i.stack)\n\t\tlast := ri.i.stack[n-1]\n\t\tm := len(last)\n\t\telem := last[m-1].node\n\n\t\t_, alreadyExpanded := ri.expandedParents[elem]\n\n\t\t// If this is an internal node and we've not seen it already, we need to\n\t\t// leave it in the stack so we can return its possible leaf value _after_\n\t\t// we've recursed through all its children.\n\t\tif len(elem.edges) > 0 && !alreadyExpanded {\n\t\t\t// record that we've seen this node!\n\t\t\tri.expandedParents[elem] = struct{}{}\n\t\t\t// push child edges onto stack and skip the rest of the loop to recurse\n\t\t\t// into the largest one.\n\t\t\tri.i.stack = append(ri.i.stack, elem.edges)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Remove the node from the stack\n\t\tif m > 1 {\n\t\t\tri.i.stack[n-1] = last[:m-1]\n\t\t} else {\n\t\t\tri.i.stack = ri.i.stack[:n-1]\n\t\t}\n\t\t// We don't need this state any more as it's no longer in the stack so we\n\t\t// won't visit it again\n\t\tif alreadyExpanded {\n\t\t\tdelete(ri.expandedParents, elem)\n\t\t}\n\n\t\t// If this is a leaf, return it\n\t\tif elem.leaf != nil {\n\t\t\treturn elem.leaf.key, elem.leaf.val, true\n\t\t}\n\n\t\t// it's not a leaf so keep walking the stack to find the previous leaf\n\t}\n\treturn nil, nil, false\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-multierror/LICENSE",
    "content": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. “Contributor”\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. “Contributor Version”\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor’s Contribution.\n\n1.3. “Contribution”\n\n     means Covered Software of a particular Contributor.\n\n1.4. “Covered Software”\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. “Incompatible With Secondary Licenses”\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of version\n        1.1 or earlier of the License, but not also under the terms of a\n        Secondary License.\n\n1.6. “Executable Form”\n\n     means any form of the work other than Source Code Form.\n\n1.7. “Larger Work”\n\n     means a work that combines Covered Software with other material, in a separate\n     file or files, that is not Covered Software.\n\n1.8. “License”\n\n     means this document.\n\n1.9. “Licensable”\n\n     means having the right to grant, to the maximum extent possible, whether at the\n     time of the initial grant or subsequently, any and all of the rights conveyed by\n     this License.\n\n1.10. “Modifications”\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to, deletion\n        from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. “Patent Claims” of a Contributor\n\n      means any patent claim(s), including without limitation, method, process,\n      and apparatus claims, in any patent Licensable by such Contributor that\n      would be infringed, but for the grant of the License, by the making,\n      using, selling, offering for sale, having made, import, or transfer of\n      either its Contributions or its Contributor Version.\n\n1.12. “Secondary License”\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. “Source Code Form”\n\n      means the form of the work preferred for making modifications.\n\n1.14. “You” (or “Your”)\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, “You” includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, “control” means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or as\n        part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its Contributions\n        or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution become\n     effective for each Contribution on the date the Contributor first distributes\n     such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under this\n     License. No additional rights or licenses will be implied from the distribution\n     or licensing of Covered Software under this License. Notwithstanding Section\n     2.1(b) above, no patent license is granted by a Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party’s\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of its\n        Contributions.\n\n     This License does not grant any rights in the trademarks, service marks, or\n     logos of any Contributor (except as may be necessary to comply with the\n     notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this License\n     (see Section 10.2) or under the terms of a Secondary License (if permitted\n     under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its Contributions\n     are its original creation(s) or it has sufficient rights to grant the\n     rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under applicable\n     copyright doctrines of fair use, fair dealing, or other equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under the\n     terms of this License. You must inform recipients that the Source Code Form\n     of the Covered Software is governed by the terms of this License, and how\n     they can obtain a copy of this License. You may not attempt to alter or\n     restrict the recipients’ rights in the Source Code Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this License,\n        or sublicense it under different terms, provided that the license for\n        the Executable Form does not attempt to limit or alter the recipients’\n        rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for the\n     Covered Software. If the Larger Work is a combination of Covered Software\n     with a work governed by one or more Secondary Licenses, and the Covered\n     Software is not Incompatible With Secondary Licenses, this License permits\n     You to additionally distribute such Covered Software under the terms of\n     such Secondary License(s), so that the recipient of the Larger Work may, at\n     their option, further distribute the Covered Software under the terms of\n     either this License or such Secondary License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices (including\n     copyright notices, patent notices, disclaimers of warranty, or limitations\n     of liability) contained within the Source Code Form of the Covered\n     Software, except that You may alter any license notices to the extent\n     required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on behalf\n     of any Contributor. You must make it absolutely clear that any such\n     warranty, support, indemnity, or liability obligation is offered by You\n     alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute, judicial\n   order, or regulation then You must: (a) comply with the terms of this License\n   to the maximum extent possible; and (b) describe the limitations and the code\n   they affect. Such description must be placed in a text file included with all\n   distributions of the Covered Software under this License. Except to the\n   extent prohibited by statute or regulation, such description must be\n   sufficiently detailed for a recipient of ordinary skill to be able to\n   understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing basis,\n     if such Contributor fails to notify You of the non-compliance by some\n     reasonable means prior to 60 days after You have come back into compliance.\n     Moreover, Your grants from a particular Contributor are reinstated on an\n     ongoing basis if such Contributor notifies You of the non-compliance by\n     some reasonable means, this is the first time You have received notice of\n     non-compliance with this License from such Contributor, and You become\n     compliant prior to 30 days after Your receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions, counter-claims,\n     and cross-claims) alleging that a Contributor Version directly or\n     indirectly infringes any patent, then the rights granted to You by any and\n     all Contributors for the Covered Software under Section 2.1 of this License\n     shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an “as is” basis, without\n   warranty of any kind, either expressed, implied, or statutory, including,\n   without limitation, warranties that the Covered Software is free of defects,\n   merchantable, fit for a particular purpose or non-infringing. The entire\n   risk as to the quality and performance of the Covered Software is with You.\n   Should any Covered Software prove defective in any respect, You (not any\n   Contributor) assume the cost of any necessary servicing, repair, or\n   correction. This disclaimer of warranty constitutes an essential part of this\n   License. No use of  any Covered Software is authorized under this License\n   except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from such\n   party’s negligence to the extent applicable law prohibits such limitation.\n   Some jurisdictions do not allow the exclusion or limitation of incidental or\n   consequential damages, so this exclusion and limitation may not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts of\n   a jurisdiction where the defendant maintains its principal place of business\n   and such litigation shall be governed by laws of that jurisdiction, without\n   reference to its conflict-of-law provisions. Nothing in this Section shall\n   prevent a party’s ability to bring cross-claims or counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject matter\n   hereof. If any provision of this License is held to be unenforceable, such\n   provision shall be reformed only to the extent necessary to make it\n   enforceable. Any law or regulation which provides that the language of a\n   contract shall be construed against the drafter shall not be used to construe\n   this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version of\n      the License under which You originally received the Covered Software, or\n      under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a modified\n      version of this License if you rename the license and remove any\n      references to the name of the license steward (except to note that such\n      modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses\n      If You choose to distribute Source Code Form that is Incompatible With\n      Secondary Licenses under the terms of this version of the License, the\n      notice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file, then\nYou may include the notice in a location (such as a LICENSE file in a relevant\ndirectory) where a recipient would be likely to look for such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - “Incompatible With Secondary Licenses” Notice\n\n      This Source Code Form is “Incompatible\n      With Secondary Licenses”, as defined by\n      the Mozilla Public License, v. 2.0.\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-multierror/Makefile",
    "content": "TEST?=./...\n\ndefault: test\n\n# test runs the test suite and vets the code.\ntest: generate\n\t@echo \"==> Running tests...\"\n\t@go list $(TEST) \\\n\t\t| grep -v \"/vendor/\" \\\n\t\t| xargs -n1 go test -timeout=60s -parallel=10 ${TESTARGS}\n\n# testrace runs the race checker\ntestrace: generate\n\t@echo \"==> Running tests (race)...\"\n\t@go list $(TEST) \\\n\t\t| grep -v \"/vendor/\" \\\n\t\t| xargs -n1 go test -timeout=60s -race ${TESTARGS}\n\n# updatedeps installs all the dependencies needed to run and build.\nupdatedeps:\n\t@sh -c \"'${CURDIR}/scripts/deps.sh' '${NAME}'\"\n\n# generate runs `go generate` to build the dynamically generated source files.\ngenerate:\n\t@echo \"==> Generating...\"\n\t@find . -type f -name '.DS_Store' -delete\n\t@go list ./... \\\n\t\t| grep -v \"/vendor/\" \\\n\t\t| xargs -n1 go generate\n\n.PHONY: default test testrace updatedeps generate\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-multierror/README.md",
    "content": "# go-multierror\n\n[![CircleCI](https://img.shields.io/circleci/build/github/hashicorp/go-multierror/master)](https://circleci.com/gh/hashicorp/go-multierror)\n[![Go Reference](https://pkg.go.dev/badge/github.com/hashicorp/go-multierror.svg)](https://pkg.go.dev/github.com/hashicorp/go-multierror)\n![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/hashicorp/go-multierror)\n\n[circleci]: https://app.circleci.com/pipelines/github/hashicorp/go-multierror\n[godocs]: https://pkg.go.dev/github.com/hashicorp/go-multierror\n\n`go-multierror` is a package for Go that provides a mechanism for\nrepresenting a list of `error` values as a single `error`.\n\nThis allows a function in Go to return an `error` that might actually\nbe a list of errors. If the caller knows this, they can unwrap the\nlist and access the errors. If the caller doesn't know, the error\nformats to a nice human-readable format.\n\n`go-multierror` is fully compatible with the Go standard library\n[errors](https://golang.org/pkg/errors/) package, including the\nfunctions `As`, `Is`, and `Unwrap`. This provides a standardized approach\nfor introspecting on error values.\n\n## Installation and Docs\n\nInstall using `go get github.com/hashicorp/go-multierror`.\n\nFull documentation is available at\nhttps://pkg.go.dev/github.com/hashicorp/go-multierror\n\n### Requires go version 1.13 or newer\n\n`go-multierror` requires go version 1.13 or newer. Go 1.13 introduced\n[error wrapping](https://golang.org/doc/go1.13#error_wrapping), which\nthis library takes advantage of.\n\nIf you need to use an earlier version of go, you can use the\n[v1.0.0](https://github.com/hashicorp/go-multierror/tree/v1.0.0)\ntag, which doesn't rely on features in go 1.13.\n\nIf you see compile errors that look like the below, it's likely that\nyou're on an older version of go:\n\n```\n/go/src/github.com/hashicorp/go-multierror/multierror.go:112:9: undefined: errors.As\n/go/src/github.com/hashicorp/go-multierror/multierror.go:117:9: undefined: errors.Is\n```\n\n## Usage\n\ngo-multierror is easy to use and purposely built to be unobtrusive in\nexisting Go applications/libraries that may not be aware of it.\n\n**Building a list of errors**\n\nThe `Append` function is used to create a list of errors. This function\nbehaves a lot like the Go built-in `append` function: it doesn't matter\nif the first argument is nil, a `multierror.Error`, or any other `error`,\nthe function behaves as you would expect.\n\n```go\nvar result error\n\nif err := step1(); err != nil {\n\tresult = multierror.Append(result, err)\n}\nif err := step2(); err != nil {\n\tresult = multierror.Append(result, err)\n}\n\nreturn result\n```\n\n**Customizing the formatting of the errors**\n\nBy specifying a custom `ErrorFormat`, you can customize the format\nof the `Error() string` function:\n\n```go\nvar result *multierror.Error\n\n// ... accumulate errors here, maybe using Append\n\nif result != nil {\n\tresult.ErrorFormat = func([]error) string {\n\t\treturn \"errors!\"\n\t}\n}\n```\n\n**Accessing the list of errors**\n\n`multierror.Error` implements `error` so if the caller doesn't know about\nmultierror, it will work just fine. But if you're aware a multierror might\nbe returned, you can use type switches to access the list of errors:\n\n```go\nif err := something(); err != nil {\n\tif merr, ok := err.(*multierror.Error); ok {\n\t\t// Use merr.Errors\n\t}\n}\n```\n\nYou can also use the standard [`errors.Unwrap`](https://golang.org/pkg/errors/#Unwrap)\nfunction. This will continue to unwrap into subsequent errors until none exist.\n\n**Extracting an error**\n\nThe standard library [`errors.As`](https://golang.org/pkg/errors/#As)\nfunction can be used directly with a multierror to extract a specific error:\n\n```go\n// Assume err is a multierror value\nerr := somefunc()\n\n// We want to know if \"err\" has a \"RichErrorType\" in it and extract it.\nvar errRich RichErrorType\nif errors.As(err, &errRich) {\n\t// It has it, and now errRich is populated.\n}\n```\n\n**Checking for an exact error value**\n\nSome errors are returned as exact errors such as the [`ErrNotExist`](https://golang.org/pkg/os/#pkg-variables)\nerror in the `os` package. You can check if this error is present by using\nthe standard [`errors.Is`](https://golang.org/pkg/errors/#Is) function.\n\n```go\n// Assume err is a multierror value\nerr := somefunc()\nif errors.Is(err, os.ErrNotExist) {\n\t// err contains os.ErrNotExist\n}\n```\n\n**Returning a multierror only if there are errors**\n\nIf you build a `multierror.Error`, you can use the `ErrorOrNil` function\nto return an `error` implementation only if there are errors to return:\n\n```go\nvar result *multierror.Error\n\n// ... accumulate errors here\n\n// Return the `error` only if errors were added to the multierror, otherwise\n// return nil since there are no errors.\nreturn result.ErrorOrNil()\n```\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-multierror/append.go",
    "content": "package multierror\n\n// Append is a helper function that will append more errors\n// onto an Error in order to create a larger multi-error.\n//\n// If err is not a multierror.Error, then it will be turned into\n// one. If any of the errs are multierr.Error, they will be flattened\n// one level into err.\n// Any nil errors within errs will be ignored. If err is nil, a new\n// *Error will be returned.\nfunc Append(err error, errs ...error) *Error {\n\tswitch err := err.(type) {\n\tcase *Error:\n\t\t// Typed nils can reach here, so initialize if we are nil\n\t\tif err == nil {\n\t\t\terr = new(Error)\n\t\t}\n\n\t\t// Go through each error and flatten\n\t\tfor _, e := range errs {\n\t\t\tswitch e := e.(type) {\n\t\t\tcase *Error:\n\t\t\t\tif e != nil {\n\t\t\t\t\terr.Errors = append(err.Errors, e.Errors...)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tif e != nil {\n\t\t\t\t\terr.Errors = append(err.Errors, e)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn err\n\tdefault:\n\t\tnewErrs := make([]error, 0, len(errs)+1)\n\t\tif err != nil {\n\t\t\tnewErrs = append(newErrs, err)\n\t\t}\n\t\tnewErrs = append(newErrs, errs...)\n\n\t\treturn Append(&Error{}, newErrs...)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-multierror/flatten.go",
    "content": "package multierror\n\n// Flatten flattens the given error, merging any *Errors together into\n// a single *Error.\nfunc Flatten(err error) error {\n\t// If it isn't an *Error, just return the error as-is\n\tif _, ok := err.(*Error); !ok {\n\t\treturn err\n\t}\n\n\t// Otherwise, make the result and flatten away!\n\tflatErr := new(Error)\n\tflatten(err, flatErr)\n\treturn flatErr\n}\n\nfunc flatten(err error, flatErr *Error) {\n\tswitch err := err.(type) {\n\tcase *Error:\n\t\tfor _, e := range err.Errors {\n\t\t\tflatten(e, flatErr)\n\t\t}\n\tdefault:\n\t\tflatErr.Errors = append(flatErr.Errors, err)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-multierror/format.go",
    "content": "package multierror\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// ErrorFormatFunc is a function callback that is called by Error to\n// turn the list of errors into a string.\ntype ErrorFormatFunc func([]error) string\n\n// ListFormatFunc is a basic formatter that outputs the number of errors\n// that occurred along with a bullet point list of the errors.\nfunc ListFormatFunc(es []error) string {\n\tif len(es) == 1 {\n\t\treturn fmt.Sprintf(\"1 error occurred:\\n\\t* %s\\n\\n\", es[0])\n\t}\n\n\tpoints := make([]string, len(es))\n\tfor i, err := range es {\n\t\tpoints[i] = fmt.Sprintf(\"* %s\", err)\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"%d errors occurred:\\n\\t%s\\n\\n\",\n\t\tlen(es), strings.Join(points, \"\\n\\t\"))\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-multierror/group.go",
    "content": "package multierror\n\nimport \"sync\"\n\n// Group is a collection of goroutines which return errors that need to be\n// coalesced.\ntype Group struct {\n\tmutex sync.Mutex\n\terr   *Error\n\twg    sync.WaitGroup\n}\n\n// Go calls the given function in a new goroutine.\n//\n// If the function returns an error it is added to the group multierror which\n// is returned by Wait.\nfunc (g *Group) Go(f func() error) {\n\tg.wg.Add(1)\n\n\tgo func() {\n\t\tdefer g.wg.Done()\n\n\t\tif err := f(); err != nil {\n\t\t\tg.mutex.Lock()\n\t\t\tg.err = Append(g.err, err)\n\t\t\tg.mutex.Unlock()\n\t\t}\n\t}()\n}\n\n// Wait blocks until all function calls from the Go method have returned, then\n// returns the multierror.\nfunc (g *Group) Wait() *Error {\n\tg.wg.Wait()\n\tg.mutex.Lock()\n\tdefer g.mutex.Unlock()\n\treturn g.err\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-multierror/multierror.go",
    "content": "package multierror\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// Error is an error type to track multiple errors. This is used to\n// accumulate errors in cases and return them as a single \"error\".\ntype Error struct {\n\tErrors      []error\n\tErrorFormat ErrorFormatFunc\n}\n\nfunc (e *Error) Error() string {\n\tfn := e.ErrorFormat\n\tif fn == nil {\n\t\tfn = ListFormatFunc\n\t}\n\n\treturn fn(e.Errors)\n}\n\n// ErrorOrNil returns an error interface if this Error represents\n// a list of errors, or returns nil if the list of errors is empty. This\n// function is useful at the end of accumulation to make sure that the value\n// returned represents the existence of errors.\nfunc (e *Error) ErrorOrNil() error {\n\tif e == nil {\n\t\treturn nil\n\t}\n\tif len(e.Errors) == 0 {\n\t\treturn nil\n\t}\n\n\treturn e\n}\n\nfunc (e *Error) GoString() string {\n\treturn fmt.Sprintf(\"*%#v\", *e)\n}\n\n// WrappedErrors returns the list of errors that this Error is wrapping. It is\n// an implementation of the errwrap.Wrapper interface so that multierror.Error\n// can be used with that library.\n//\n// This method is not safe to be called concurrently. Unlike accessing the\n// Errors field directly, this function also checks if the multierror is nil to\n// prevent a null-pointer panic. It satisfies the errwrap.Wrapper interface.\nfunc (e *Error) WrappedErrors() []error {\n\tif e == nil {\n\t\treturn nil\n\t}\n\treturn e.Errors\n}\n\n// Unwrap returns an error from Error (or nil if there are no errors).\n// This error returned will further support Unwrap to get the next error,\n// etc. The order will match the order of Errors in the multierror.Error\n// at the time of calling.\n//\n// The resulting error supports errors.As/Is/Unwrap so you can continue\n// to use the stdlib errors package to introspect further.\n//\n// This will perform a shallow copy of the errors slice. Any errors appended\n// to this error after calling Unwrap will not be available until a new\n// Unwrap is called on the multierror.Error.\nfunc (e *Error) Unwrap() error {\n\t// If we have no errors then we do nothing\n\tif e == nil || len(e.Errors) == 0 {\n\t\treturn nil\n\t}\n\n\t// If we have exactly one error, we can just return that directly.\n\tif len(e.Errors) == 1 {\n\t\treturn e.Errors[0]\n\t}\n\n\t// Shallow copy the slice\n\terrs := make([]error, len(e.Errors))\n\tcopy(errs, e.Errors)\n\treturn chain(errs)\n}\n\n// chain implements the interfaces necessary for errors.Is/As/Unwrap to\n// work in a deterministic way with multierror. A chain tracks a list of\n// errors while accounting for the current represented error. This lets\n// Is/As be meaningful.\n//\n// Unwrap returns the next error. In the cleanest form, Unwrap would return\n// the wrapped error here but we can't do that if we want to properly\n// get access to all the errors. Instead, users are recommended to use\n// Is/As to get the correct error type out.\n//\n// Precondition: []error is non-empty (len > 0)\ntype chain []error\n\n// Error implements the error interface\nfunc (e chain) Error() string {\n\treturn e[0].Error()\n}\n\n// Unwrap implements errors.Unwrap by returning the next error in the\n// chain or nil if there are no more errors.\nfunc (e chain) Unwrap() error {\n\tif len(e) == 1 {\n\t\treturn nil\n\t}\n\n\treturn e[1:]\n}\n\n// As implements errors.As by attempting to map to the current value.\nfunc (e chain) As(target interface{}) bool {\n\treturn errors.As(e[0], target)\n}\n\n// Is implements errors.Is by comparing the current value directly.\nfunc (e chain) Is(target error) bool {\n\treturn errors.Is(e[0], target)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-multierror/prefix.go",
    "content": "package multierror\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/hashicorp/errwrap\"\n)\n\n// Prefix is a helper function that will prefix some text\n// to the given error. If the error is a multierror.Error, then\n// it will be prefixed to each wrapped error.\n//\n// This is useful to use when appending multiple multierrors\n// together in order to give better scoping.\nfunc Prefix(err error, prefix string) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\n\tformat := fmt.Sprintf(\"%s {{err}}\", prefix)\n\tswitch err := err.(type) {\n\tcase *Error:\n\t\t// Typed nils can reach here, so initialize if we are nil\n\t\tif err == nil {\n\t\t\terr = new(Error)\n\t\t}\n\n\t\t// Wrap each of the errors\n\t\tfor i, e := range err.Errors {\n\t\t\terr.Errors[i] = errwrap.Wrapf(format, e)\n\t\t}\n\n\t\treturn err\n\tdefault:\n\t\treturn errwrap.Wrapf(format, err)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-multierror/sort.go",
    "content": "package multierror\n\n// Len implements sort.Interface function for length\nfunc (err Error) Len() int {\n\treturn len(err.Errors)\n}\n\n// Swap implements sort.Interface function for swapping elements\nfunc (err Error) Swap(i, j int) {\n\terr.Errors[i], err.Errors[j] = err.Errors[j], err.Errors[i]\n}\n\n// Less implements sort.Interface function for determining order\nfunc (err Error) Less(i, j int) bool {\n\treturn err.Errors[i].Error() < err.Errors[j].Error()\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-retryablehttp/.gitignore",
    "content": ".idea/\n*.iml\n*.test\n.vscode/"
  },
  {
    "path": "vendor/github.com/hashicorp/go-retryablehttp/CHANGELOG.md",
    "content": "## 0.7.5 (Nov 8, 2023)\n\nBUG FIXES\n\n- client: fixes an issue where the request body is not preserved on temporary redirects or re-established HTTP/2 connections [GH-207]\n\n## 0.7.4 (Jun 6, 2023)\n\nBUG FIXES\n\n- client: fixing an issue where the Content-Type header wouldn't be sent with an empty payload when using HTTP/2 [GH-194]\n\n## 0.7.3 (May 15, 2023)\n\nInitial release\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-retryablehttp/CODEOWNERS",
    "content": "* @hashicorp/release-engineering"
  },
  {
    "path": "vendor/github.com/hashicorp/go-retryablehttp/LICENSE",
    "content": "Copyright (c) 2015 HashiCorp, Inc.\n\nMozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. \"Contributor\"\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n\n     means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the terms of\n        a Secondary License.\n\n1.6. \"Executable Form\"\n\n     means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n\n     means a work that combines Covered Software with other material, in a\n     separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n\n     means this document.\n\n1.9. \"Licensable\"\n\n     means having the right to grant, to the maximum extent possible, whether\n     at the time of the initial grant or subsequently, any and all of the\n     rights conveyed by this License.\n\n1.10. \"Modifications\"\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. \"Patent Claims\" of a Contributor\n\n      means any patent claim(s), including without limitation, method,\n      process, and apparatus claims, in any patent Licensable by such\n      Contributor that would be infringed, but for the grant of the License,\n      by the making, using, selling, offering for sale, having made, import,\n      or transfer of either its Contributions or its Contributor Version.\n\n1.12. \"Secondary License\"\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. \"Source Code Form\"\n\n      means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, \"You\" includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, \"control\" means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or\n        as part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its\n        Contributions or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution\n     become effective for each Contribution on the date the Contributor first\n     distributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under\n     this License. No additional rights or licenses will be implied from the\n     distribution or licensing of Covered Software under this License.\n     Notwithstanding Section 2.1(b) above, no patent license is granted by a\n     Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party's\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of\n        its Contributions.\n\n     This License does not grant any rights in the trademarks, service marks,\n     or logos of any Contributor (except as may be necessary to comply with\n     the notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this\n     License (see Section 10.2) or under the terms of a Secondary License (if\n     permitted under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its\n     Contributions are its original creation(s) or it has sufficient rights to\n     grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under\n     applicable copyright doctrines of fair use, fair dealing, or other\n     equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under\n     the terms of this License. You must inform recipients that the Source\n     Code Form of the Covered Software is governed by the terms of this\n     License, and how they can obtain a copy of this License. You may not\n     attempt to alter or restrict the recipients' rights in the Source Code\n     Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this\n        License, or sublicense it under different terms, provided that the\n        license for the Executable Form does not attempt to limit or alter the\n        recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for\n     the Covered Software. If the Larger Work is a combination of Covered\n     Software with a work governed by one or more Secondary Licenses, and the\n     Covered Software is not Incompatible With Secondary Licenses, this\n     License permits You to additionally distribute such Covered Software\n     under the terms of such Secondary License(s), so that the recipient of\n     the Larger Work may, at their option, further distribute the Covered\n     Software under the terms of either this License or such Secondary\n     License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices\n     (including copyright notices, patent notices, disclaimers of warranty, or\n     limitations of liability) contained within the Source Code Form of the\n     Covered Software, except that You may alter any license notices to the\n     extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on\n     behalf of any Contributor. You must make it absolutely clear that any\n     such warranty, support, indemnity, or liability obligation is offered by\n     You alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute,\n   judicial order, or regulation then You must: (a) comply with the terms of\n   this License to the maximum extent possible; and (b) describe the\n   limitations and the code they affect. Such description must be placed in a\n   text file included with all distributions of the Covered Software under\n   this License. Except to the extent prohibited by statute or regulation,\n   such description must be sufficiently detailed for a recipient of ordinary\n   skill to be able to understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing\n     basis, if such Contributor fails to notify You of the non-compliance by\n     some reasonable means prior to 60 days after You have come back into\n     compliance. Moreover, Your grants from a particular Contributor are\n     reinstated on an ongoing basis if such Contributor notifies You of the\n     non-compliance by some reasonable means, this is the first time You have\n     received notice of non-compliance with this License from such\n     Contributor, and You become compliant prior to 30 days after Your receipt\n     of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions,\n     counter-claims, and cross-claims) alleging that a Contributor Version\n     directly or indirectly infringes any patent, then the rights granted to\n     You by any and all Contributors for the Covered Software under Section\n     2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an \"as is\" basis,\n   without warranty of any kind, either expressed, implied, or statutory,\n   including, without limitation, warranties that the Covered Software is free\n   of defects, merchantable, fit for a particular purpose or non-infringing.\n   The entire risk as to the quality and performance of the Covered Software\n   is with You. Should any Covered Software prove defective in any respect,\n   You (not any Contributor) assume the cost of any necessary servicing,\n   repair, or correction. This disclaimer of warranty constitutes an essential\n   part of this License. No use of  any Covered Software is authorized under\n   this License except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from\n   such party's negligence to the extent applicable law prohibits such\n   limitation. Some jurisdictions do not allow the exclusion or limitation of\n   incidental or consequential damages, so this exclusion and limitation may\n   not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts\n   of a jurisdiction where the defendant maintains its principal place of\n   business and such litigation shall be governed by laws of that\n   jurisdiction, without reference to its conflict-of-law provisions. Nothing\n   in this Section shall prevent a party's ability to bring cross-claims or\n   counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject\n   matter hereof. If any provision of this License is held to be\n   unenforceable, such provision shall be reformed only to the extent\n   necessary to make it enforceable. Any law or regulation which provides that\n   the language of a contract shall be construed against the drafter shall not\n   be used to construe this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version\n      of the License under which You originally received the Covered Software,\n      or under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a\n      modified version of this License if you rename the license and remove\n      any references to the name of the license steward (except to note that\n      such modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\n      Licenses If You choose to distribute Source Code Form that is\n      Incompatible With Secondary Licenses under the terms of this version of\n      the License, the notice described in Exhibit B of this License must be\n      attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file,\nthen You may include the notice in a location (such as a LICENSE file in a\nrelevant directory) where a recipient would be likely to look for such a\nnotice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n\n      This Source Code Form is \"Incompatible\n      With Secondary Licenses\", as defined by\n      the Mozilla Public License, v. 2.0.\n\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-retryablehttp/Makefile",
    "content": "default: test\n\ntest:\n\tgo vet ./...\n\tgo test -race ./...\n\nupdatedeps:\n\tgo get -f -t -u ./...\n\tgo get -f -u ./...\n\n.PHONY: default test updatedeps\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-retryablehttp/README.md",
    "content": "go-retryablehttp\n================\n\n[![Build Status](http://img.shields.io/travis/hashicorp/go-retryablehttp.svg?style=flat-square)][travis]\n[![Go Documentation](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)][godocs]\n\n[travis]: http://travis-ci.org/hashicorp/go-retryablehttp\n[godocs]: http://godoc.org/github.com/hashicorp/go-retryablehttp\n\nThe `retryablehttp` package provides a familiar HTTP client interface with\nautomatic retries and exponential backoff. It is a thin wrapper over the\nstandard `net/http` client library and exposes nearly the same public API. This\nmakes `retryablehttp` very easy to drop into existing programs.\n\n`retryablehttp` performs automatic retries under certain conditions. Mainly, if\nan error is returned by the client (connection errors, etc.), or if a 500-range\nresponse code is received (except 501), then a retry is invoked after a wait\nperiod.  Otherwise, the response is returned and left to the caller to\ninterpret.\n\nThe main difference from `net/http` is that requests which take a request body\n(POST/PUT et. al) can have the body provided in a number of ways (some more or\nless efficient) that allow \"rewinding\" the request body if the initial request\nfails so that the full request can be attempted again. See the\n[godoc](http://godoc.org/github.com/hashicorp/go-retryablehttp) for more\ndetails.\n\nVersion 0.6.0 and before are compatible with Go prior to 1.12. From 0.6.1 onward, Go 1.12+ is required.\nFrom 0.6.7 onward, Go 1.13+ is required.\n\nExample Use\n===========\n\nUsing this library should look almost identical to what you would do with\n`net/http`. The most simple example of a GET request is shown below:\n\n```go\nresp, err := retryablehttp.Get(\"/foo\")\nif err != nil {\n    panic(err)\n}\n```\n\nThe returned response object is an `*http.Response`, the same thing you would\nusually get from `net/http`. Had the request failed one or more times, the above\ncall would block and retry with exponential backoff.\n\n## Getting a stdlib `*http.Client` with retries\n\nIt's possible to convert a `*retryablehttp.Client` directly to a `*http.Client`.\nThis makes use of retryablehttp broadly applicable with minimal effort. Simply\nconfigure a `*retryablehttp.Client` as you wish, and then call `StandardClient()`:\n\n```go\nretryClient := retryablehttp.NewClient()\nretryClient.RetryMax = 10\n\nstandardClient := retryClient.StandardClient() // *http.Client\n```\n\nFor more usage and examples see the\n[godoc](http://godoc.org/github.com/hashicorp/go-retryablehttp).\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-retryablehttp/client.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\n// Package retryablehttp provides a familiar HTTP client interface with\n// automatic retries and exponential backoff. It is a thin wrapper over the\n// standard net/http client library and exposes nearly the same public API.\n// This makes retryablehttp very easy to drop into existing programs.\n//\n// retryablehttp performs automatic retries under certain conditions. Mainly, if\n// an error is returned by the client (connection errors etc), or if a 500-range\n// response is received, then a retry is invoked. Otherwise, the response is\n// returned and left to the caller to interpret.\n//\n// Requests which take a request body should provide a non-nil function\n// parameter. The best choice is to provide either a function satisfying\n// ReaderFunc which provides multiple io.Readers in an efficient manner, a\n// *bytes.Buffer (the underlying raw byte slice will be used) or a raw byte\n// slice. As it is a reference type, and we will wrap it as needed by readers,\n// we can efficiently re-use the request body without needing to copy it. If an\n// io.Reader (such as a *bytes.Reader) is provided, the full body will be read\n// prior to the first request, and will be efficiently re-used for any retries.\n// ReadSeeker can be used, but some users have observed occasional data races\n// between the net/http library and the Seek functionality of some\n// implementations of ReadSeeker, so should be avoided if possible.\npackage retryablehttp\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/x509\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"math\"\n\t\"math/rand\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\tcleanhttp \"github.com/hashicorp/go-cleanhttp\"\n)\n\nvar (\n\t// Default retry configuration\n\tdefaultRetryWaitMin = 1 * time.Second\n\tdefaultRetryWaitMax = 30 * time.Second\n\tdefaultRetryMax     = 4\n\n\t// defaultLogger is the logger provided with defaultClient\n\tdefaultLogger = log.New(os.Stderr, \"\", log.LstdFlags)\n\n\t// defaultClient is used for performing requests without explicitly making\n\t// a new client. It is purposely private to avoid modifications.\n\tdefaultClient = NewClient()\n\n\t// We need to consume response bodies to maintain http connections, but\n\t// limit the size we consume to respReadLimit.\n\trespReadLimit = int64(4096)\n\n\t// A regular expression to match the error returned by net/http when the\n\t// configured number of redirects is exhausted. This error isn't typed\n\t// specifically so we resort to matching on the error string.\n\tredirectsErrorRe = regexp.MustCompile(`stopped after \\d+ redirects\\z`)\n\n\t// A regular expression to match the error returned by net/http when the\n\t// scheme specified in the URL is invalid. This error isn't typed\n\t// specifically so we resort to matching on the error string.\n\tschemeErrorRe = regexp.MustCompile(`unsupported protocol scheme`)\n\n\t// A regular expression to match the error returned by net/http when the\n\t// TLS certificate is not trusted. This error isn't typed\n\t// specifically so we resort to matching on the error string.\n\tnotTrustedErrorRe = regexp.MustCompile(`certificate is not trusted`)\n)\n\n// ReaderFunc is the type of function that can be given natively to NewRequest\ntype ReaderFunc func() (io.Reader, error)\n\n// ResponseHandlerFunc is a type of function that takes in a Response, and does something with it.\n// The ResponseHandlerFunc is called when the HTTP client successfully receives a response and the\n// CheckRetry function indicates that a retry of the base request is not necessary.\n// If an error is returned from this function, the CheckRetry policy will be used to determine\n// whether to retry the whole request (including this handler).\n//\n// Make sure to check status codes! Even if the request was completed it may have a non-2xx status code.\n//\n// The response body is not automatically closed. It must be closed either by the ResponseHandlerFunc or\n// by the caller out-of-band. Failure to do so will result in a memory leak.\ntype ResponseHandlerFunc func(*http.Response) error\n\n// LenReader is an interface implemented by many in-memory io.Reader's. Used\n// for automatically sending the right Content-Length header when possible.\ntype LenReader interface {\n\tLen() int\n}\n\n// Request wraps the metadata needed to create HTTP requests.\ntype Request struct {\n\t// body is a seekable reader over the request body payload. This is\n\t// used to rewind the request data in between retries.\n\tbody ReaderFunc\n\n\tresponseHandler ResponseHandlerFunc\n\n\t// Embed an HTTP request directly. This makes a *Request act exactly\n\t// like an *http.Request so that all meta methods are supported.\n\t*http.Request\n}\n\n// WithContext returns wrapped Request with a shallow copy of underlying *http.Request\n// with its context changed to ctx. The provided ctx must be non-nil.\nfunc (r *Request) WithContext(ctx context.Context) *Request {\n\treturn &Request{\n\t\tbody:            r.body,\n\t\tresponseHandler: r.responseHandler,\n\t\tRequest:         r.Request.WithContext(ctx),\n\t}\n}\n\n// SetResponseHandler allows setting the response handler.\nfunc (r *Request) SetResponseHandler(fn ResponseHandlerFunc) {\n\tr.responseHandler = fn\n}\n\n// BodyBytes allows accessing the request body. It is an analogue to\n// http.Request's Body variable, but it returns a copy of the underlying data\n// rather than consuming it.\n//\n// This function is not thread-safe; do not call it at the same time as another\n// call, or at the same time this request is being used with Client.Do.\nfunc (r *Request) BodyBytes() ([]byte, error) {\n\tif r.body == nil {\n\t\treturn nil, nil\n\t}\n\tbody, err := r.body()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tbuf := new(bytes.Buffer)\n\t_, err = buf.ReadFrom(body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf.Bytes(), nil\n}\n\n// SetBody allows setting the request body.\n//\n// It is useful if a new body needs to be set without constructing a new Request.\nfunc (r *Request) SetBody(rawBody interface{}) error {\n\tbodyReader, contentLength, err := getBodyReaderAndContentLength(rawBody)\n\tif err != nil {\n\t\treturn err\n\t}\n\tr.body = bodyReader\n\tr.ContentLength = contentLength\n\tif bodyReader != nil {\n\t\tr.GetBody = func() (io.ReadCloser, error) {\n\t\t\tbody, err := bodyReader()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif rc, ok := body.(io.ReadCloser); ok {\n\t\t\t\treturn rc, nil\n\t\t\t}\n\t\t\treturn io.NopCloser(body), nil\n\t\t}\n\t} else {\n\t\tr.GetBody = func() (io.ReadCloser, error) { return http.NoBody, nil }\n\t}\n\treturn nil\n}\n\n// WriteTo allows copying the request body into a writer.\n//\n// It writes data to w until there's no more data to write or\n// when an error occurs. The return int64 value is the number of bytes\n// written. Any error encountered during the write is also returned.\n// The signature matches io.WriterTo interface.\nfunc (r *Request) WriteTo(w io.Writer) (int64, error) {\n\tbody, err := r.body()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif c, ok := body.(io.Closer); ok {\n\t\tdefer c.Close()\n\t}\n\treturn io.Copy(w, body)\n}\n\nfunc getBodyReaderAndContentLength(rawBody interface{}) (ReaderFunc, int64, error) {\n\tvar bodyReader ReaderFunc\n\tvar contentLength int64\n\n\tswitch body := rawBody.(type) {\n\t// If they gave us a function already, great! Use it.\n\tcase ReaderFunc:\n\t\tbodyReader = body\n\t\ttmp, err := body()\n\t\tif err != nil {\n\t\t\treturn nil, 0, err\n\t\t}\n\t\tif lr, ok := tmp.(LenReader); ok {\n\t\t\tcontentLength = int64(lr.Len())\n\t\t}\n\t\tif c, ok := tmp.(io.Closer); ok {\n\t\t\tc.Close()\n\t\t}\n\n\tcase func() (io.Reader, error):\n\t\tbodyReader = body\n\t\ttmp, err := body()\n\t\tif err != nil {\n\t\t\treturn nil, 0, err\n\t\t}\n\t\tif lr, ok := tmp.(LenReader); ok {\n\t\t\tcontentLength = int64(lr.Len())\n\t\t}\n\t\tif c, ok := tmp.(io.Closer); ok {\n\t\t\tc.Close()\n\t\t}\n\n\t// If a regular byte slice, we can read it over and over via new\n\t// readers\n\tcase []byte:\n\t\tbuf := body\n\t\tbodyReader = func() (io.Reader, error) {\n\t\t\treturn bytes.NewReader(buf), nil\n\t\t}\n\t\tcontentLength = int64(len(buf))\n\n\t// If a bytes.Buffer we can read the underlying byte slice over and\n\t// over\n\tcase *bytes.Buffer:\n\t\tbuf := body\n\t\tbodyReader = func() (io.Reader, error) {\n\t\t\treturn bytes.NewReader(buf.Bytes()), nil\n\t\t}\n\t\tcontentLength = int64(buf.Len())\n\n\t// We prioritize *bytes.Reader here because we don't really want to\n\t// deal with it seeking so want it to match here instead of the\n\t// io.ReadSeeker case.\n\tcase *bytes.Reader:\n\t\tbuf, err := ioutil.ReadAll(body)\n\t\tif err != nil {\n\t\t\treturn nil, 0, err\n\t\t}\n\t\tbodyReader = func() (io.Reader, error) {\n\t\t\treturn bytes.NewReader(buf), nil\n\t\t}\n\t\tcontentLength = int64(len(buf))\n\n\t// Compat case\n\tcase io.ReadSeeker:\n\t\traw := body\n\t\tbodyReader = func() (io.Reader, error) {\n\t\t\t_, err := raw.Seek(0, 0)\n\t\t\treturn ioutil.NopCloser(raw), err\n\t\t}\n\t\tif lr, ok := raw.(LenReader); ok {\n\t\t\tcontentLength = int64(lr.Len())\n\t\t}\n\n\t// Read all in so we can reset\n\tcase io.Reader:\n\t\tbuf, err := ioutil.ReadAll(body)\n\t\tif err != nil {\n\t\t\treturn nil, 0, err\n\t\t}\n\t\tif len(buf) == 0 {\n\t\t\tbodyReader = func() (io.Reader, error) {\n\t\t\t\treturn http.NoBody, nil\n\t\t\t}\n\t\t\tcontentLength = 0\n\t\t} else {\n\t\t\tbodyReader = func() (io.Reader, error) {\n\t\t\t\treturn bytes.NewReader(buf), nil\n\t\t\t}\n\t\t\tcontentLength = int64(len(buf))\n\t\t}\n\n\t// No body provided, nothing to do\n\tcase nil:\n\n\t// Unrecognized type\n\tdefault:\n\t\treturn nil, 0, fmt.Errorf(\"cannot handle type %T\", rawBody)\n\t}\n\treturn bodyReader, contentLength, nil\n}\n\n// FromRequest wraps an http.Request in a retryablehttp.Request\nfunc FromRequest(r *http.Request) (*Request, error) {\n\tbodyReader, _, err := getBodyReaderAndContentLength(r.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// Could assert contentLength == r.ContentLength\n\treturn &Request{body: bodyReader, Request: r}, nil\n}\n\n// NewRequest creates a new wrapped request.\nfunc NewRequest(method, url string, rawBody interface{}) (*Request, error) {\n\treturn NewRequestWithContext(context.Background(), method, url, rawBody)\n}\n\n// NewRequestWithContext creates a new wrapped request with the provided context.\n//\n// The context controls the entire lifetime of a request and its response:\n// obtaining a connection, sending the request, and reading the response headers and body.\nfunc NewRequestWithContext(ctx context.Context, method, url string, rawBody interface{}) (*Request, error) {\n\thttpReq, err := http.NewRequestWithContext(ctx, method, url, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treq := &Request{\n\t\tRequest: httpReq,\n\t}\n\tif err := req.SetBody(rawBody); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn req, nil\n}\n\n// Logger interface allows to use other loggers than\n// standard log.Logger.\ntype Logger interface {\n\tPrintf(string, ...interface{})\n}\n\n// LeveledLogger is an interface that can be implemented by any logger or a\n// logger wrapper to provide leveled logging. The methods accept a message\n// string and a variadic number of key-value pairs. For log.Printf style\n// formatting where message string contains a format specifier, use Logger\n// interface.\ntype LeveledLogger interface {\n\tError(msg string, keysAndValues ...interface{})\n\tInfo(msg string, keysAndValues ...interface{})\n\tDebug(msg string, keysAndValues ...interface{})\n\tWarn(msg string, keysAndValues ...interface{})\n}\n\n// hookLogger adapts an LeveledLogger to Logger for use by the existing hook functions\n// without changing the API.\ntype hookLogger struct {\n\tLeveledLogger\n}\n\nfunc (h hookLogger) Printf(s string, args ...interface{}) {\n\th.Info(fmt.Sprintf(s, args...))\n}\n\n// RequestLogHook allows a function to run before each retry. The HTTP\n// request which will be made, and the retry number (0 for the initial\n// request) are available to users. The internal logger is exposed to\n// consumers.\ntype RequestLogHook func(Logger, *http.Request, int)\n\n// ResponseLogHook is like RequestLogHook, but allows running a function\n// on each HTTP response. This function will be invoked at the end of\n// every HTTP request executed, regardless of whether a subsequent retry\n// needs to be performed or not. If the response body is read or closed\n// from this method, this will affect the response returned from Do().\ntype ResponseLogHook func(Logger, *http.Response)\n\n// CheckRetry specifies a policy for handling retries. It is called\n// following each request with the response and error values returned by\n// the http.Client. If CheckRetry returns false, the Client stops retrying\n// and returns the response to the caller. If CheckRetry returns an error,\n// that error value is returned in lieu of the error from the request. The\n// Client will close any response body when retrying, but if the retry is\n// aborted it is up to the CheckRetry callback to properly close any\n// response body before returning.\ntype CheckRetry func(ctx context.Context, resp *http.Response, err error) (bool, error)\n\n// Backoff specifies a policy for how long to wait between retries.\n// It is called after a failing request to determine the amount of time\n// that should pass before trying again.\ntype Backoff func(min, max time.Duration, attemptNum int, resp *http.Response) time.Duration\n\n// ErrorHandler is called if retries are expired, containing the last status\n// from the http library. If not specified, default behavior for the library is\n// to close the body and return an error indicating how many tries were\n// attempted. If overriding this, be sure to close the body if needed.\ntype ErrorHandler func(resp *http.Response, err error, numTries int) (*http.Response, error)\n\n// Client is used to make HTTP requests. It adds additional functionality\n// like automatic retries to tolerate minor outages.\ntype Client struct {\n\tHTTPClient *http.Client // Internal HTTP client.\n\tLogger     interface{}  // Customer logger instance. Can be either Logger or LeveledLogger\n\n\tRetryWaitMin time.Duration // Minimum time to wait\n\tRetryWaitMax time.Duration // Maximum time to wait\n\tRetryMax     int           // Maximum number of retries\n\n\t// RequestLogHook allows a user-supplied function to be called\n\t// before each retry.\n\tRequestLogHook RequestLogHook\n\n\t// ResponseLogHook allows a user-supplied function to be called\n\t// with the response from each HTTP request executed.\n\tResponseLogHook ResponseLogHook\n\n\t// CheckRetry specifies the policy for handling retries, and is called\n\t// after each request. The default policy is DefaultRetryPolicy.\n\tCheckRetry CheckRetry\n\n\t// Backoff specifies the policy for how long to wait between retries\n\tBackoff Backoff\n\n\t// ErrorHandler specifies the custom error handler to use, if any\n\tErrorHandler ErrorHandler\n\n\tloggerInit sync.Once\n\tclientInit sync.Once\n}\n\n// NewClient creates a new Client with default settings.\nfunc NewClient() *Client {\n\treturn &Client{\n\t\tHTTPClient:   cleanhttp.DefaultPooledClient(),\n\t\tLogger:       defaultLogger,\n\t\tRetryWaitMin: defaultRetryWaitMin,\n\t\tRetryWaitMax: defaultRetryWaitMax,\n\t\tRetryMax:     defaultRetryMax,\n\t\tCheckRetry:   DefaultRetryPolicy,\n\t\tBackoff:      DefaultBackoff,\n\t}\n}\n\nfunc (c *Client) logger() interface{} {\n\tc.loggerInit.Do(func() {\n\t\tif c.Logger == nil {\n\t\t\treturn\n\t\t}\n\n\t\tswitch c.Logger.(type) {\n\t\tcase Logger, LeveledLogger:\n\t\t\t// ok\n\t\tdefault:\n\t\t\t// This should happen in dev when they are setting Logger and work on code, not in prod.\n\t\t\tpanic(fmt.Sprintf(\"invalid logger type passed, must be Logger or LeveledLogger, was %T\", c.Logger))\n\t\t}\n\t})\n\n\treturn c.Logger\n}\n\n// DefaultRetryPolicy provides a default callback for Client.CheckRetry, which\n// will retry on connection errors and server errors.\nfunc DefaultRetryPolicy(ctx context.Context, resp *http.Response, err error) (bool, error) {\n\t// do not retry on context.Canceled or context.DeadlineExceeded\n\tif ctx.Err() != nil {\n\t\treturn false, ctx.Err()\n\t}\n\n\t// don't propagate other errors\n\tshouldRetry, _ := baseRetryPolicy(resp, err)\n\treturn shouldRetry, nil\n}\n\n// ErrorPropagatedRetryPolicy is the same as DefaultRetryPolicy, except it\n// propagates errors back instead of returning nil. This allows you to inspect\n// why it decided to retry or not.\nfunc ErrorPropagatedRetryPolicy(ctx context.Context, resp *http.Response, err error) (bool, error) {\n\t// do not retry on context.Canceled or context.DeadlineExceeded\n\tif ctx.Err() != nil {\n\t\treturn false, ctx.Err()\n\t}\n\n\treturn baseRetryPolicy(resp, err)\n}\n\nfunc baseRetryPolicy(resp *http.Response, err error) (bool, error) {\n\tif err != nil {\n\t\tif v, ok := err.(*url.Error); ok {\n\t\t\t// Don't retry if the error was due to too many redirects.\n\t\t\tif redirectsErrorRe.MatchString(v.Error()) {\n\t\t\t\treturn false, v\n\t\t\t}\n\n\t\t\t// Don't retry if the error was due to an invalid protocol scheme.\n\t\t\tif schemeErrorRe.MatchString(v.Error()) {\n\t\t\t\treturn false, v\n\t\t\t}\n\n\t\t\t// Don't retry if the error was due to TLS cert verification failure.\n\t\t\tif notTrustedErrorRe.MatchString(v.Error()) {\n\t\t\t\treturn false, v\n\t\t\t}\n\t\t\tif _, ok := v.Err.(x509.UnknownAuthorityError); ok {\n\t\t\t\treturn false, v\n\t\t\t}\n\t\t}\n\n\t\t// The error is likely recoverable so retry.\n\t\treturn true, nil\n\t}\n\n\t// 429 Too Many Requests is recoverable. Sometimes the server puts\n\t// a Retry-After response header to indicate when the server is\n\t// available to start processing request from client.\n\tif resp.StatusCode == http.StatusTooManyRequests {\n\t\treturn true, nil\n\t}\n\n\t// Check the response code. We retry on 500-range responses to allow\n\t// the server time to recover, as 500's are typically not permanent\n\t// errors and may relate to outages on the server side. This will catch\n\t// invalid response codes as well, like 0 and 999.\n\tif resp.StatusCode == 0 || (resp.StatusCode >= 500 && resp.StatusCode != http.StatusNotImplemented) {\n\t\treturn true, fmt.Errorf(\"unexpected HTTP status %s\", resp.Status)\n\t}\n\n\treturn false, nil\n}\n\n// DefaultBackoff provides a default callback for Client.Backoff which\n// will perform exponential backoff based on the attempt number and limited\n// by the provided minimum and maximum durations.\n//\n// It also tries to parse Retry-After response header when a http.StatusTooManyRequests\n// (HTTP Code 429) is found in the resp parameter. Hence it will return the number of\n// seconds the server states it may be ready to process more requests from this client.\nfunc DefaultBackoff(min, max time.Duration, attemptNum int, resp *http.Response) time.Duration {\n\tif resp != nil {\n\t\tif resp.StatusCode == http.StatusTooManyRequests || resp.StatusCode == http.StatusServiceUnavailable {\n\t\t\tif s, ok := resp.Header[\"Retry-After\"]; ok {\n\t\t\t\tif sleep, err := strconv.ParseInt(s[0], 10, 64); err == nil {\n\t\t\t\t\treturn time.Second * time.Duration(sleep)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tmult := math.Pow(2, float64(attemptNum)) * float64(min)\n\tsleep := time.Duration(mult)\n\tif float64(sleep) != mult || sleep > max {\n\t\tsleep = max\n\t}\n\treturn sleep\n}\n\n// LinearJitterBackoff provides a callback for Client.Backoff which will\n// perform linear backoff based on the attempt number and with jitter to\n// prevent a thundering herd.\n//\n// min and max here are *not* absolute values. The number to be multiplied by\n// the attempt number will be chosen at random from between them, thus they are\n// bounding the jitter.\n//\n// For instance:\n// * To get strictly linear backoff of one second increasing each retry, set\n// both to one second (1s, 2s, 3s, 4s, ...)\n// * To get a small amount of jitter centered around one second increasing each\n// retry, set to around one second, such as a min of 800ms and max of 1200ms\n// (892ms, 2102ms, 2945ms, 4312ms, ...)\n// * To get extreme jitter, set to a very wide spread, such as a min of 100ms\n// and a max of 20s (15382ms, 292ms, 51321ms, 35234ms, ...)\nfunc LinearJitterBackoff(min, max time.Duration, attemptNum int, resp *http.Response) time.Duration {\n\t// attemptNum always starts at zero but we want to start at 1 for multiplication\n\tattemptNum++\n\n\tif max <= min {\n\t\t// Unclear what to do here, or they are the same, so return min *\n\t\t// attemptNum\n\t\treturn min * time.Duration(attemptNum)\n\t}\n\n\t// Seed rand; doing this every time is fine\n\trand := rand.New(rand.NewSource(int64(time.Now().Nanosecond())))\n\n\t// Pick a random number that lies somewhere between the min and max and\n\t// multiply by the attemptNum. attemptNum starts at zero so we always\n\t// increment here. We first get a random percentage, then apply that to the\n\t// difference between min and max, and add to min.\n\tjitter := rand.Float64() * float64(max-min)\n\tjitterMin := int64(jitter) + int64(min)\n\treturn time.Duration(jitterMin * int64(attemptNum))\n}\n\n// PassthroughErrorHandler is an ErrorHandler that directly passes through the\n// values from the net/http library for the final request. The body is not\n// closed.\nfunc PassthroughErrorHandler(resp *http.Response, err error, _ int) (*http.Response, error) {\n\treturn resp, err\n}\n\n// Do wraps calling an HTTP method with retries.\nfunc (c *Client) Do(req *Request) (*http.Response, error) {\n\tc.clientInit.Do(func() {\n\t\tif c.HTTPClient == nil {\n\t\t\tc.HTTPClient = cleanhttp.DefaultPooledClient()\n\t\t}\n\t})\n\n\tlogger := c.logger()\n\n\tif logger != nil {\n\t\tswitch v := logger.(type) {\n\t\tcase LeveledLogger:\n\t\t\tv.Debug(\"performing request\", \"method\", req.Method, \"url\", req.URL)\n\t\tcase Logger:\n\t\t\tv.Printf(\"[DEBUG] %s %s\", req.Method, req.URL)\n\t\t}\n\t}\n\n\tvar resp *http.Response\n\tvar attempt int\n\tvar shouldRetry bool\n\tvar doErr, respErr, checkErr error\n\n\tfor i := 0; ; i++ {\n\t\tdoErr, respErr = nil, nil\n\t\tattempt++\n\n\t\t// Always rewind the request body when non-nil.\n\t\tif req.body != nil {\n\t\t\tbody, err := req.body()\n\t\t\tif err != nil {\n\t\t\t\tc.HTTPClient.CloseIdleConnections()\n\t\t\t\treturn resp, err\n\t\t\t}\n\t\t\tif c, ok := body.(io.ReadCloser); ok {\n\t\t\t\treq.Body = c\n\t\t\t} else {\n\t\t\t\treq.Body = ioutil.NopCloser(body)\n\t\t\t}\n\t\t}\n\n\t\tif c.RequestLogHook != nil {\n\t\t\tswitch v := logger.(type) {\n\t\t\tcase LeveledLogger:\n\t\t\t\tc.RequestLogHook(hookLogger{v}, req.Request, i)\n\t\t\tcase Logger:\n\t\t\t\tc.RequestLogHook(v, req.Request, i)\n\t\t\tdefault:\n\t\t\t\tc.RequestLogHook(nil, req.Request, i)\n\t\t\t}\n\t\t}\n\n\t\t// Attempt the request\n\t\tresp, doErr = c.HTTPClient.Do(req.Request)\n\n\t\t// Check if we should continue with retries.\n\t\tshouldRetry, checkErr = c.CheckRetry(req.Context(), resp, doErr)\n\t\tif !shouldRetry && doErr == nil && req.responseHandler != nil {\n\t\t\trespErr = req.responseHandler(resp)\n\t\t\tshouldRetry, checkErr = c.CheckRetry(req.Context(), resp, respErr)\n\t\t}\n\n\t\terr := doErr\n\t\tif respErr != nil {\n\t\t\terr = respErr\n\t\t}\n\t\tif err != nil {\n\t\t\tswitch v := logger.(type) {\n\t\t\tcase LeveledLogger:\n\t\t\t\tv.Error(\"request failed\", \"error\", err, \"method\", req.Method, \"url\", req.URL)\n\t\t\tcase Logger:\n\t\t\t\tv.Printf(\"[ERR] %s %s request failed: %v\", req.Method, req.URL, err)\n\t\t\t}\n\t\t} else {\n\t\t\t// Call this here to maintain the behavior of logging all requests,\n\t\t\t// even if CheckRetry signals to stop.\n\t\t\tif c.ResponseLogHook != nil {\n\t\t\t\t// Call the response logger function if provided.\n\t\t\t\tswitch v := logger.(type) {\n\t\t\t\tcase LeveledLogger:\n\t\t\t\t\tc.ResponseLogHook(hookLogger{v}, resp)\n\t\t\t\tcase Logger:\n\t\t\t\t\tc.ResponseLogHook(v, resp)\n\t\t\t\tdefault:\n\t\t\t\t\tc.ResponseLogHook(nil, resp)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif !shouldRetry {\n\t\t\tbreak\n\t\t}\n\n\t\t// We do this before drainBody because there's no need for the I/O if\n\t\t// we're breaking out\n\t\tremain := c.RetryMax - i\n\t\tif remain <= 0 {\n\t\t\tbreak\n\t\t}\n\n\t\t// We're going to retry, consume any response to reuse the connection.\n\t\tif doErr == nil {\n\t\t\tc.drainBody(resp.Body)\n\t\t}\n\n\t\twait := c.Backoff(c.RetryWaitMin, c.RetryWaitMax, i, resp)\n\t\tif logger != nil {\n\t\t\tdesc := fmt.Sprintf(\"%s %s\", req.Method, req.URL)\n\t\t\tif resp != nil {\n\t\t\t\tdesc = fmt.Sprintf(\"%s (status: %d)\", desc, resp.StatusCode)\n\t\t\t}\n\t\t\tswitch v := logger.(type) {\n\t\t\tcase LeveledLogger:\n\t\t\t\tv.Debug(\"retrying request\", \"request\", desc, \"timeout\", wait, \"remaining\", remain)\n\t\t\tcase Logger:\n\t\t\t\tv.Printf(\"[DEBUG] %s: retrying in %s (%d left)\", desc, wait, remain)\n\t\t\t}\n\t\t}\n\t\ttimer := time.NewTimer(wait)\n\t\tselect {\n\t\tcase <-req.Context().Done():\n\t\t\ttimer.Stop()\n\t\t\tc.HTTPClient.CloseIdleConnections()\n\t\t\treturn nil, req.Context().Err()\n\t\tcase <-timer.C:\n\t\t}\n\n\t\t// Make shallow copy of http Request so that we can modify its body\n\t\t// without racing against the closeBody call in persistConn.writeLoop.\n\t\thttpreq := *req.Request\n\t\treq.Request = &httpreq\n\t}\n\n\t// this is the closest we have to success criteria\n\tif doErr == nil && respErr == nil && checkErr == nil && !shouldRetry {\n\t\treturn resp, nil\n\t}\n\n\tdefer c.HTTPClient.CloseIdleConnections()\n\n\tvar err error\n\tif checkErr != nil {\n\t\terr = checkErr\n\t} else if respErr != nil {\n\t\terr = respErr\n\t} else {\n\t\terr = doErr\n\t}\n\n\tif c.ErrorHandler != nil {\n\t\treturn c.ErrorHandler(resp, err, attempt)\n\t}\n\n\t// By default, we close the response body and return an error without\n\t// returning the response\n\tif resp != nil {\n\t\tc.drainBody(resp.Body)\n\t}\n\n\t// this means CheckRetry thought the request was a failure, but didn't\n\t// communicate why\n\tif err == nil {\n\t\treturn nil, fmt.Errorf(\"%s %s giving up after %d attempt(s)\",\n\t\t\treq.Method, req.URL, attempt)\n\t}\n\n\treturn nil, fmt.Errorf(\"%s %s giving up after %d attempt(s): %w\",\n\t\treq.Method, req.URL, attempt, err)\n}\n\n// Try to read the response body so we can reuse this connection.\nfunc (c *Client) drainBody(body io.ReadCloser) {\n\tdefer body.Close()\n\t_, err := io.Copy(ioutil.Discard, io.LimitReader(body, respReadLimit))\n\tif err != nil {\n\t\tif c.logger() != nil {\n\t\t\tswitch v := c.logger().(type) {\n\t\t\tcase LeveledLogger:\n\t\t\t\tv.Error(\"error reading response body\", \"error\", err)\n\t\t\tcase Logger:\n\t\t\t\tv.Printf(\"[ERR] error reading response body: %v\", err)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Get is a shortcut for doing a GET request without making a new client.\nfunc Get(url string) (*http.Response, error) {\n\treturn defaultClient.Get(url)\n}\n\n// Get is a convenience helper for doing simple GET requests.\nfunc (c *Client) Get(url string) (*http.Response, error) {\n\treq, err := NewRequest(\"GET\", url, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn c.Do(req)\n}\n\n// Head is a shortcut for doing a HEAD request without making a new client.\nfunc Head(url string) (*http.Response, error) {\n\treturn defaultClient.Head(url)\n}\n\n// Head is a convenience method for doing simple HEAD requests.\nfunc (c *Client) Head(url string) (*http.Response, error) {\n\treq, err := NewRequest(\"HEAD\", url, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn c.Do(req)\n}\n\n// Post is a shortcut for doing a POST request without making a new client.\nfunc Post(url, bodyType string, body interface{}) (*http.Response, error) {\n\treturn defaultClient.Post(url, bodyType, body)\n}\n\n// Post is a convenience method for doing simple POST requests.\nfunc (c *Client) Post(url, bodyType string, body interface{}) (*http.Response, error) {\n\treq, err := NewRequest(\"POST\", url, body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treq.Header.Set(\"Content-Type\", bodyType)\n\treturn c.Do(req)\n}\n\n// PostForm is a shortcut to perform a POST with form data without creating\n// a new client.\nfunc PostForm(url string, data url.Values) (*http.Response, error) {\n\treturn defaultClient.PostForm(url, data)\n}\n\n// PostForm is a convenience method for doing simple POST operations using\n// pre-filled url.Values form data.\nfunc (c *Client) PostForm(url string, data url.Values) (*http.Response, error) {\n\treturn c.Post(url, \"application/x-www-form-urlencoded\", strings.NewReader(data.Encode()))\n}\n\n// StandardClient returns a stdlib *http.Client with a custom Transport, which\n// shims in a *retryablehttp.Client for added retries.\nfunc (c *Client) StandardClient() *http.Client {\n\treturn &http.Client{\n\t\tTransport: &RoundTripper{Client: c},\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-retryablehttp/roundtripper.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage retryablehttp\n\nimport (\n\t\"errors\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"sync\"\n)\n\n// RoundTripper implements the http.RoundTripper interface, using a retrying\n// HTTP client to execute requests.\n//\n// It is important to note that retryablehttp doesn't always act exactly as a\n// RoundTripper should. This is highly dependent on the retryable client's\n// configuration.\ntype RoundTripper struct {\n\t// The client to use during requests. If nil, the default retryablehttp\n\t// client and settings will be used.\n\tClient *Client\n\n\t// once ensures that the logic to initialize the default client runs at\n\t// most once, in a single thread.\n\tonce sync.Once\n}\n\n// init initializes the underlying retryable client.\nfunc (rt *RoundTripper) init() {\n\tif rt.Client == nil {\n\t\trt.Client = NewClient()\n\t}\n}\n\n// RoundTrip satisfies the http.RoundTripper interface.\nfunc (rt *RoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {\n\trt.once.Do(rt.init)\n\n\t// Convert the request to be retryable.\n\tretryableReq, err := FromRequest(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Execute the request.\n\tresp, err := rt.Client.Do(retryableReq)\n\t// If we got an error returned by standard library's `Do` method, unwrap it\n\t// otherwise we will wind up erroneously re-nesting the error.\n\tif _, ok := err.(*url.Error); ok {\n\t\treturn resp, errors.Unwrap(err)\n\t}\n\n\treturn resp, err\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-rootcerts/.travis.yml",
    "content": "sudo: false\n\nlanguage: go\n\ngo:\n  - 1.6\n\nbranches:\n  only:\n    - master\n\nscript: make test\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-rootcerts/LICENSE",
    "content": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. \"Contributor\"\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n\n     means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the terms of\n        a Secondary License.\n\n1.6. \"Executable Form\"\n\n     means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n\n     means a work that combines Covered Software with other material, in a\n     separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n\n     means this document.\n\n1.9. \"Licensable\"\n\n     means having the right to grant, to the maximum extent possible, whether\n     at the time of the initial grant or subsequently, any and all of the\n     rights conveyed by this License.\n\n1.10. \"Modifications\"\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. \"Patent Claims\" of a Contributor\n\n      means any patent claim(s), including without limitation, method,\n      process, and apparatus claims, in any patent Licensable by such\n      Contributor that would be infringed, but for the grant of the License,\n      by the making, using, selling, offering for sale, having made, import,\n      or transfer of either its Contributions or its Contributor Version.\n\n1.12. \"Secondary License\"\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. \"Source Code Form\"\n\n      means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, \"You\" includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, \"control\" means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or\n        as part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its\n        Contributions or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution\n     become effective for each Contribution on the date the Contributor first\n     distributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under\n     this License. No additional rights or licenses will be implied from the\n     distribution or licensing of Covered Software under this License.\n     Notwithstanding Section 2.1(b) above, no patent license is granted by a\n     Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party's\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of\n        its Contributions.\n\n     This License does not grant any rights in the trademarks, service marks,\n     or logos of any Contributor (except as may be necessary to comply with\n     the notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this\n     License (see Section 10.2) or under the terms of a Secondary License (if\n     permitted under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its\n     Contributions are its original creation(s) or it has sufficient rights to\n     grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under\n     applicable copyright doctrines of fair use, fair dealing, or other\n     equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under\n     the terms of this License. You must inform recipients that the Source\n     Code Form of the Covered Software is governed by the terms of this\n     License, and how they can obtain a copy of this License. You may not\n     attempt to alter or restrict the recipients' rights in the Source Code\n     Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this\n        License, or sublicense it under different terms, provided that the\n        license for the Executable Form does not attempt to limit or alter the\n        recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for\n     the Covered Software. If the Larger Work is a combination of Covered\n     Software with a work governed by one or more Secondary Licenses, and the\n     Covered Software is not Incompatible With Secondary Licenses, this\n     License permits You to additionally distribute such Covered Software\n     under the terms of such Secondary License(s), so that the recipient of\n     the Larger Work may, at their option, further distribute the Covered\n     Software under the terms of either this License or such Secondary\n     License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices\n     (including copyright notices, patent notices, disclaimers of warranty, or\n     limitations of liability) contained within the Source Code Form of the\n     Covered Software, except that You may alter any license notices to the\n     extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on\n     behalf of any Contributor. You must make it absolutely clear that any\n     such warranty, support, indemnity, or liability obligation is offered by\n     You alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute,\n   judicial order, or regulation then You must: (a) comply with the terms of\n   this License to the maximum extent possible; and (b) describe the\n   limitations and the code they affect. Such description must be placed in a\n   text file included with all distributions of the Covered Software under\n   this License. Except to the extent prohibited by statute or regulation,\n   such description must be sufficiently detailed for a recipient of ordinary\n   skill to be able to understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing\n     basis, if such Contributor fails to notify You of the non-compliance by\n     some reasonable means prior to 60 days after You have come back into\n     compliance. Moreover, Your grants from a particular Contributor are\n     reinstated on an ongoing basis if such Contributor notifies You of the\n     non-compliance by some reasonable means, this is the first time You have\n     received notice of non-compliance with this License from such\n     Contributor, and You become compliant prior to 30 days after Your receipt\n     of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions,\n     counter-claims, and cross-claims) alleging that a Contributor Version\n     directly or indirectly infringes any patent, then the rights granted to\n     You by any and all Contributors for the Covered Software under Section\n     2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an \"as is\" basis,\n   without warranty of any kind, either expressed, implied, or statutory,\n   including, without limitation, warranties that the Covered Software is free\n   of defects, merchantable, fit for a particular purpose or non-infringing.\n   The entire risk as to the quality and performance of the Covered Software\n   is with You. Should any Covered Software prove defective in any respect,\n   You (not any Contributor) assume the cost of any necessary servicing,\n   repair, or correction. This disclaimer of warranty constitutes an essential\n   part of this License. No use of  any Covered Software is authorized under\n   this License except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from\n   such party's negligence to the extent applicable law prohibits such\n   limitation. Some jurisdictions do not allow the exclusion or limitation of\n   incidental or consequential damages, so this exclusion and limitation may\n   not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts\n   of a jurisdiction where the defendant maintains its principal place of\n   business and such litigation shall be governed by laws of that\n   jurisdiction, without reference to its conflict-of-law provisions. Nothing\n   in this Section shall prevent a party's ability to bring cross-claims or\n   counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject\n   matter hereof. If any provision of this License is held to be\n   unenforceable, such provision shall be reformed only to the extent\n   necessary to make it enforceable. Any law or regulation which provides that\n   the language of a contract shall be construed against the drafter shall not\n   be used to construe this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version\n      of the License under which You originally received the Covered Software,\n      or under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a\n      modified version of this License if you rename the license and remove\n      any references to the name of the license steward (except to note that\n      such modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\n      Licenses If You choose to distribute Source Code Form that is\n      Incompatible With Secondary Licenses under the terms of this version of\n      the License, the notice described in Exhibit B of this License must be\n      attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file,\nthen You may include the notice in a location (such as a LICENSE file in a\nrelevant directory) where a recipient would be likely to look for such a\nnotice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n\n      This Source Code Form is \"Incompatible\n      With Secondary Licenses\", as defined by\n      the Mozilla Public License, v. 2.0.\n\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-rootcerts/Makefile",
    "content": "TEST?=./...\n\ntest:\n\tgo test $(TEST) $(TESTARGS) -timeout=3s -parallel=4\n\tgo vet $(TEST)\n\tgo test $(TEST) -race\n\n.PHONY: test\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-rootcerts/README.md",
    "content": "# rootcerts\n\nFunctions for loading root certificates for TLS connections.\n\n-----\n\nGo's standard library `crypto/tls` provides a common mechanism for configuring\nTLS connections in `tls.Config`. The `RootCAs` field on this struct is a pool\nof certificates for the client to use as a trust store when verifying server\ncertificates.\n\nThis library contains utility functions for loading certificates destined for\nthat field, as well as one other important thing:\n\nWhen the `RootCAs` field is `nil`, the standard library attempts to load the\nhost's root CA set.  This behavior is OS-specific, and the Darwin\nimplementation contains [a bug that prevents trusted certificates from the\nSystem and Login keychains from being loaded][1]. This library contains\nDarwin-specific behavior that works around that bug.\n\n[1]: https://github.com/golang/go/issues/14514\n\n## Example Usage\n\nHere's a snippet demonstrating how this library is meant to be used:\n\n```go\nfunc httpClient() (*http.Client, error)\n\ttlsConfig := &tls.Config{}\n\terr := rootcerts.ConfigureTLS(tlsConfig, &rootcerts.Config{\n\t\tCAFile:      os.Getenv(\"MYAPP_CAFILE\"),\n\t\tCAPath:      os.Getenv(\"MYAPP_CAPATH\"),\n\t\tCertificate: os.Getenv(\"MYAPP_CERTIFICATE\"),\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc := cleanhttp.DefaultClient()\n\tt := cleanhttp.DefaultTransport()\n\tt.TLSClientConfig = tlsConfig\n\tc.Transport = t\n\treturn c, nil\n}\n```\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-rootcerts/doc.go",
    "content": "// Package rootcerts contains functions to aid in loading CA certificates for\n// TLS connections.\n//\n// In addition, its default behavior on Darwin works around an open issue [1]\n// in Go's crypto/x509 that prevents certicates from being loaded from the\n// System or Login keychains.\n//\n// [1] https://github.com/golang/go/issues/14514\npackage rootcerts\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-rootcerts/rootcerts.go",
    "content": "package rootcerts\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n)\n\n// Config determines where LoadCACerts will load certificates from. When CAFile,\n// CACertificate and CAPath are blank, this library's functions will either load\n// system roots explicitly and return them, or set the CertPool to nil to allow\n// Go's standard library to load system certs.\ntype Config struct {\n\t// CAFile is a path to a PEM-encoded certificate file or bundle. Takes\n\t// precedence over CACertificate and CAPath.\n\tCAFile string\n\n\t// CACertificate is a PEM-encoded certificate or bundle. Takes precedence\n\t// over CAPath.\n\tCACertificate []byte\n\n\t// CAPath is a path to a directory populated with PEM-encoded certificates.\n\tCAPath string\n}\n\n// ConfigureTLS sets up the RootCAs on the provided tls.Config based on the\n// Config specified.\nfunc ConfigureTLS(t *tls.Config, c *Config) error {\n\tif t == nil {\n\t\treturn nil\n\t}\n\tpool, err := LoadCACerts(c)\n\tif err != nil {\n\t\treturn err\n\t}\n\tt.RootCAs = pool\n\treturn nil\n}\n\n// LoadCACerts loads a CertPool based on the Config specified.\nfunc LoadCACerts(c *Config) (*x509.CertPool, error) {\n\tif c == nil {\n\t\tc = &Config{}\n\t}\n\tif c.CAFile != \"\" {\n\t\treturn LoadCAFile(c.CAFile)\n\t}\n\tif len(c.CACertificate) != 0 {\n\t\treturn AppendCertificate(c.CACertificate)\n\t}\n\tif c.CAPath != \"\" {\n\t\treturn LoadCAPath(c.CAPath)\n\t}\n\n\treturn LoadSystemCAs()\n}\n\n// LoadCAFile loads a single PEM-encoded file from the path specified.\nfunc LoadCAFile(caFile string) (*x509.CertPool, error) {\n\tpool := x509.NewCertPool()\n\n\tpem, err := ioutil.ReadFile(caFile)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Error loading CA File: %s\", err)\n\t}\n\n\tok := pool.AppendCertsFromPEM(pem)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"Error loading CA File: Couldn't parse PEM in: %s\", caFile)\n\t}\n\n\treturn pool, nil\n}\n\n// AppendCertificate appends an in-memory PEM-encoded certificate or bundle and returns a pool.\nfunc AppendCertificate(ca []byte) (*x509.CertPool, error) {\n\tpool := x509.NewCertPool()\n\n\tok := pool.AppendCertsFromPEM(ca)\n\tif !ok {\n\t\treturn nil, errors.New(\"Error appending CA: Couldn't parse PEM\")\n\t}\n\n\treturn pool, nil\n}\n\n// LoadCAPath walks the provided path and loads all certificates encounted into\n// a pool.\nfunc LoadCAPath(caPath string) (*x509.CertPool, error) {\n\tpool := x509.NewCertPool()\n\twalkFn := func(path string, info os.FileInfo, err error) error {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif info.IsDir() {\n\t\t\treturn nil\n\t\t}\n\n\t\tpem, err := ioutil.ReadFile(path)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Error loading file from CAPath: %s\", err)\n\t\t}\n\n\t\tok := pool.AppendCertsFromPEM(pem)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"Error loading CA Path: Couldn't parse PEM in: %s\", path)\n\t\t}\n\n\t\treturn nil\n\t}\n\n\terr := filepath.Walk(caPath, walkFn)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn pool, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-rootcerts/rootcerts_base.go",
    "content": "// +build !darwin\n\npackage rootcerts\n\nimport \"crypto/x509\"\n\n// LoadSystemCAs does nothing on non-Darwin systems. We return nil so that\n// default behavior of standard TLS config libraries is triggered, which is to\n// load system certs.\nfunc LoadSystemCAs() (*x509.CertPool, error) {\n\treturn nil, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-rootcerts/rootcerts_darwin.go",
    "content": "package rootcerts\n\nimport (\n\t\"crypto/x509\"\n\t\"os/exec\"\n\t\"path\"\n\n\t\"github.com/mitchellh/go-homedir\"\n)\n\n// LoadSystemCAs has special behavior on Darwin systems to work around\nfunc LoadSystemCAs() (*x509.CertPool, error) {\n\tpool := x509.NewCertPool()\n\n\tfor _, keychain := range certKeychains() {\n\t\terr := addCertsFromKeychain(pool, keychain)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn pool, nil\n}\n\nfunc addCertsFromKeychain(pool *x509.CertPool, keychain string) error {\n\tcmd := exec.Command(\"/usr/bin/security\", \"find-certificate\", \"-a\", \"-p\", keychain)\n\tdata, err := cmd.Output()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpool.AppendCertsFromPEM(data)\n\n\treturn nil\n}\n\nfunc certKeychains() []string {\n\tkeychains := []string{\n\t\t\"/System/Library/Keychains/SystemRootCertificates.keychain\",\n\t\t\"/Library/Keychains/System.keychain\",\n\t}\n\thome, err := homedir.Dir()\n\tif err == nil {\n\t\tloginKeychain := path.Join(home, \"Library\", \"Keychains\", \"login.keychain\")\n\t\tkeychains = append(keychains, loginKeychain)\n\t}\n\treturn keychains\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-secure-stdlib/parseutil/LICENSE",
    "content": "Copyright (c) 2020 HashiCorp, Inc.\n\nMozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. \"Contributor\"\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n\n     means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the terms of\n        a Secondary License.\n\n1.6. \"Executable Form\"\n\n     means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n\n     means a work that combines Covered Software with other material, in a\n     separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n\n     means this document.\n\n1.9. \"Licensable\"\n\n     means having the right to grant, to the maximum extent possible, whether\n     at the time of the initial grant or subsequently, any and all of the\n     rights conveyed by this License.\n\n1.10. \"Modifications\"\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. \"Patent Claims\" of a Contributor\n\n      means any patent claim(s), including without limitation, method,\n      process, and apparatus claims, in any patent Licensable by such\n      Contributor that would be infringed, but for the grant of the License,\n      by the making, using, selling, offering for sale, having made, import,\n      or transfer of either its Contributions or its Contributor Version.\n\n1.12. \"Secondary License\"\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. \"Source Code Form\"\n\n      means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, \"You\" includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, \"control\" means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or\n        as part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its\n        Contributions or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution\n     become effective for each Contribution on the date the Contributor first\n     distributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under\n     this License. No additional rights or licenses will be implied from the\n     distribution or licensing of Covered Software under this License.\n     Notwithstanding Section 2.1(b) above, no patent license is granted by a\n     Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party's\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of\n        its Contributions.\n\n     This License does not grant any rights in the trademarks, service marks,\n     or logos of any Contributor (except as may be necessary to comply with\n     the notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this\n     License (see Section 10.2) or under the terms of a Secondary License (if\n     permitted under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its\n     Contributions are its original creation(s) or it has sufficient rights to\n     grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under\n     applicable copyright doctrines of fair use, fair dealing, or other\n     equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under\n     the terms of this License. You must inform recipients that the Source\n     Code Form of the Covered Software is governed by the terms of this\n     License, and how they can obtain a copy of this License. You may not\n     attempt to alter or restrict the recipients' rights in the Source Code\n     Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this\n        License, or sublicense it under different terms, provided that the\n        license for the Executable Form does not attempt to limit or alter the\n        recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for\n     the Covered Software. If the Larger Work is a combination of Covered\n     Software with a work governed by one or more Secondary Licenses, and the\n     Covered Software is not Incompatible With Secondary Licenses, this\n     License permits You to additionally distribute such Covered Software\n     under the terms of such Secondary License(s), so that the recipient of\n     the Larger Work may, at their option, further distribute the Covered\n     Software under the terms of either this License or such Secondary\n     License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices\n     (including copyright notices, patent notices, disclaimers of warranty, or\n     limitations of liability) contained within the Source Code Form of the\n     Covered Software, except that You may alter any license notices to the\n     extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on\n     behalf of any Contributor. You must make it absolutely clear that any\n     such warranty, support, indemnity, or liability obligation is offered by\n     You alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute,\n   judicial order, or regulation then You must: (a) comply with the terms of\n   this License to the maximum extent possible; and (b) describe the\n   limitations and the code they affect. Such description must be placed in a\n   text file included with all distributions of the Covered Software under\n   this License. Except to the extent prohibited by statute or regulation,\n   such description must be sufficiently detailed for a recipient of ordinary\n   skill to be able to understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing\n     basis, if such Contributor fails to notify You of the non-compliance by\n     some reasonable means prior to 60 days after You have come back into\n     compliance. Moreover, Your grants from a particular Contributor are\n     reinstated on an ongoing basis if such Contributor notifies You of the\n     non-compliance by some reasonable means, this is the first time You have\n     received notice of non-compliance with this License from such\n     Contributor, and You become compliant prior to 30 days after Your receipt\n     of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions,\n     counter-claims, and cross-claims) alleging that a Contributor Version\n     directly or indirectly infringes any patent, then the rights granted to\n     You by any and all Contributors for the Covered Software under Section\n     2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an \"as is\" basis,\n   without warranty of any kind, either expressed, implied, or statutory,\n   including, without limitation, warranties that the Covered Software is free\n   of defects, merchantable, fit for a particular purpose or non-infringing.\n   The entire risk as to the quality and performance of the Covered Software\n   is with You. Should any Covered Software prove defective in any respect,\n   You (not any Contributor) assume the cost of any necessary servicing,\n   repair, or correction. This disclaimer of warranty constitutes an essential\n   part of this License. No use of  any Covered Software is authorized under\n   this License except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from\n   such party's negligence to the extent applicable law prohibits such\n   limitation. Some jurisdictions do not allow the exclusion or limitation of\n   incidental or consequential damages, so this exclusion and limitation may\n   not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts\n   of a jurisdiction where the defendant maintains its principal place of\n   business and such litigation shall be governed by laws of that\n   jurisdiction, without reference to its conflict-of-law provisions. Nothing\n   in this Section shall prevent a party's ability to bring cross-claims or\n   counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject\n   matter hereof. If any provision of this License is held to be\n   unenforceable, such provision shall be reformed only to the extent\n   necessary to make it enforceable. Any law or regulation which provides that\n   the language of a contract shall be construed against the drafter shall not\n   be used to construe this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version\n      of the License under which You originally received the Covered Software,\n      or under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a\n      modified version of this License if you rename the license and remove\n      any references to the name of the license steward (except to note that\n      such modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\n      Licenses If You choose to distribute Source Code Form that is\n      Incompatible With Secondary Licenses under the terms of this version of\n      the License, the notice described in Exhibit B of this License must be\n      attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file,\nthen You may include the notice in a location (such as a LICENSE file in a\nrelevant directory) where a recipient would be likely to look for such a\nnotice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n\n      This Source Code Form is \"Incompatible\n      With Secondary Licenses\", as defined by\n      the Mozilla Public License, v. 2.0.\n\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-secure-stdlib/parseutil/parsepath.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage parseutil\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/url\"\n\t\"os\"\n\t\"strings\"\n)\n\nvar (\n\tErrNotAUrl   = errors.New(\"not a url\")\n\tErrNotParsed = errors.New(\"not a parsed value\")\n)\n\n// ParsePath parses a URL with schemes file://, env://, or any other. Depending\n// on the scheme it will return specific types of data:\n//\n// * file:// will return a string with the file's contents\n//\n// * env:// will return a string with the env var's contents\n//\n// * Anything else will return the string as it was. Functionally this means\n// anything for which Go's `url.Parse` function does not throw an error. If you\n// want to ensure that this function errors if a known scheme is not found, use\n// MustParsePath.\n//\n// On error, we return the original string along with the error. The caller can\n// switch on errors.Is(err, ErrNotAUrl) to understand whether it was the parsing\n// step that errored or something else (such as a file not found). This is\n// useful to attempt to read a non-URL string from some resource, but where the\n// original input may simply be a valid string of that type.\nfunc ParsePath(path string) (string, error) {\n\treturn parsePath(path, false)\n}\n\n// MustParsePath behaves like ParsePath but will return ErrNotAUrl if the value\n// is not a URL with a scheme that can be parsed by this function.\nfunc MustParsePath(path string) (string, error) {\n\treturn parsePath(path, true)\n}\n\nfunc parsePath(path string, mustParse bool) (string, error) {\n\tpath = strings.TrimSpace(path)\n\tparsed, err := url.Parse(path)\n\tif err != nil {\n\t\treturn path, fmt.Errorf(\"error parsing url (%q): %w\", err.Error(), ErrNotAUrl)\n\t}\n\tswitch parsed.Scheme {\n\tcase \"file\":\n\t\tcontents, err := ioutil.ReadFile(strings.TrimPrefix(path, \"file://\"))\n\t\tif err != nil {\n\t\t\treturn path, fmt.Errorf(\"error reading file at %s: %w\", path, err)\n\t\t}\n\t\treturn strings.TrimSpace(string(contents)), nil\n\tcase \"env\":\n\t\treturn strings.TrimSpace(os.Getenv(strings.TrimPrefix(path, \"env://\"))), nil\n\tdefault:\n\t\tif mustParse {\n\t\t\treturn \"\", ErrNotParsed\n\t\t}\n\t\treturn path, nil\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-secure-stdlib/parseutil/parseutil.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage parseutil\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/hashicorp/go-secure-stdlib/strutil\"\n\tsockaddr \"github.com/hashicorp/go-sockaddr\"\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nvar validCapacityString = regexp.MustCompile(\"^[\\t ]*([0-9]+)[\\t ]?([kmgtKMGT][iI]?[bB])?[\\t ]*$\")\n\n// ParseCapacityString parses a capacity string and returns the number of bytes it represents.\n// Capacity strings are things like 5gib or 10MB. Supported prefixes are kb, kib, mb, mib, gb,\n// gib, tb, tib, which are not case sensitive. If no prefix is present, the number is assumed\n// to be in bytes already.\nfunc ParseCapacityString(in interface{}) (uint64, error) {\n\tvar cap uint64\n\n\tjsonIn, ok := in.(json.Number)\n\tif ok {\n\t\tin = jsonIn.String()\n\t}\n\n\tswitch inp := in.(type) {\n\tcase nil:\n\t\t// return default of zero\n\tcase string:\n\t\tif inp == \"\" {\n\t\t\treturn cap, nil\n\t\t}\n\n\t\tmatches := validCapacityString.FindStringSubmatch(inp)\n\n\t\t// no sub-groups means we couldn't parse it\n\t\tif len(matches) <= 1 {\n\t\t\treturn cap, errors.New(\"could not parse capacity from input\")\n\t\t}\n\n\t\tvar multiplier uint64 = 1\n\t\tswitch strings.ToLower(matches[2]) {\n\t\tcase \"kb\":\n\t\t\tmultiplier = 1000\n\t\tcase \"kib\":\n\t\t\tmultiplier = 1024\n\t\tcase \"mb\":\n\t\t\tmultiplier = 1000 * 1000\n\t\tcase \"mib\":\n\t\t\tmultiplier = 1024 * 1024\n\t\tcase \"gb\":\n\t\t\tmultiplier = 1000 * 1000 * 1000\n\t\tcase \"gib\":\n\t\t\tmultiplier = 1024 * 1024 * 1024\n\t\tcase \"tb\":\n\t\t\tmultiplier = 1000 * 1000 * 1000 * 1000\n\t\tcase \"tib\":\n\t\t\tmultiplier = 1024 * 1024 * 1024 * 1024\n\t\t}\n\n\t\tsize, err := strconv.ParseUint(matches[1], 10, 64)\n\t\tif err != nil {\n\t\t\treturn cap, err\n\t\t}\n\n\t\tcap = size * multiplier\n\tcase int:\n\t\tcap = uint64(inp)\n\tcase int32:\n\t\tcap = uint64(inp)\n\tcase int64:\n\t\tcap = uint64(inp)\n\tcase uint:\n\t\tcap = uint64(inp)\n\tcase uint32:\n\t\tcap = uint64(inp)\n\tcase uint64:\n\t\tcap = uint64(inp)\n\tcase float32:\n\t\tcap = uint64(inp)\n\tcase float64:\n\t\tcap = uint64(inp)\n\tdefault:\n\t\treturn cap, errors.New(\"could not parse capacity from input\")\n\t}\n\n\treturn cap, nil\n}\n\n// Parse a duration from an arbitrary value (a string or numeric value) into\n// a time.Duration; when units are missing (such as when a numeric type is\n// provided), the duration is assumed to be in seconds.\nfunc ParseDurationSecond(in interface{}) (time.Duration, error) {\n\tvar dur time.Duration\n\tjsonIn, ok := in.(json.Number)\n\tif ok {\n\t\tin = jsonIn.String()\n\t}\n\tswitch inp := in.(type) {\n\tcase nil:\n\t\t// return default of zero\n\tcase string:\n\t\tif inp == \"\" {\n\t\t\treturn dur, nil\n\t\t}\n\n\t\tif v, err := strconv.ParseInt(inp, 10, 64); err == nil {\n\t\t\treturn time.Duration(v) * time.Second, nil\n\t\t}\n\n\t\tif strings.HasSuffix(inp, \"d\") {\n\t\t\tv, err := strconv.ParseInt(inp[:len(inp)-1], 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn dur, err\n\t\t\t}\n\t\t\treturn time.Duration(v) * 24 * time.Hour, nil\n\t\t}\n\n\t\tvar err error\n\t\tif dur, err = time.ParseDuration(inp); err != nil {\n\t\t\treturn dur, err\n\t\t}\n\tcase int:\n\t\tdur = time.Duration(inp) * time.Second\n\tcase int32:\n\t\tdur = time.Duration(inp) * time.Second\n\tcase int64:\n\t\tdur = time.Duration(inp) * time.Second\n\tcase uint:\n\t\tdur = time.Duration(inp) * time.Second\n\tcase uint32:\n\t\tdur = time.Duration(inp) * time.Second\n\tcase uint64:\n\t\tdur = time.Duration(inp) * time.Second\n\tcase float32:\n\t\tdur = time.Duration(inp) * time.Second\n\tcase float64:\n\t\tdur = time.Duration(inp) * time.Second\n\tcase time.Duration:\n\t\tdur = inp\n\tdefault:\n\t\treturn 0, errors.New(\"could not parse duration from input\")\n\t}\n\n\treturn dur, nil\n}\n\n// Parse an absolute timestamp from the provided arbitrary value (string or\n// numeric value). When an untyped numeric value is provided, it is assumed\n// to be seconds from the Unix Epoch.\nfunc ParseAbsoluteTime(in interface{}) (time.Time, error) {\n\tvar t time.Time\n\tswitch inp := in.(type) {\n\tcase nil:\n\t\t// return default of zero\n\t\treturn t, nil\n\tcase string:\n\t\t// Allow RFC3339 with nanoseconds, or without,\n\t\t// or an epoch time as an integer.\n\t\tvar err error\n\t\tt, err = time.Parse(time.RFC3339Nano, inp)\n\t\tif err == nil {\n\t\t\tbreak\n\t\t}\n\t\tt, err = time.Parse(time.RFC3339, inp)\n\t\tif err == nil {\n\t\t\tbreak\n\t\t}\n\t\tepochTime, err := strconv.ParseInt(inp, 10, 64)\n\t\tif err == nil {\n\t\t\tt = time.Unix(epochTime, 0)\n\t\t\tbreak\n\t\t}\n\t\treturn t, errors.New(\"could not parse string as date and time\")\n\tcase json.Number:\n\t\tepochTime, err := inp.Int64()\n\t\tif err != nil {\n\t\t\treturn t, err\n\t\t}\n\t\tt = time.Unix(epochTime, 0)\n\tcase int:\n\t\tt = time.Unix(int64(inp), 0)\n\tcase int32:\n\t\tt = time.Unix(int64(inp), 0)\n\tcase int64:\n\t\tt = time.Unix(inp, 0)\n\tcase uint:\n\t\tt = time.Unix(int64(inp), 0)\n\tcase uint32:\n\t\tt = time.Unix(int64(inp), 0)\n\tcase uint64:\n\t\tt = time.Unix(int64(inp), 0)\n\tdefault:\n\t\treturn t, errors.New(\"could not parse time from input type\")\n\t}\n\treturn t, nil\n}\n\n// ParseInt takes an arbitrary value (either a string or numeric type) and\n// parses it as an int64 value. This value is assumed to be larger than the\n// provided type, but cannot safely be cast.\n//\n// When the end value is bounded (such as an int value), it is recommended\n// to instead call SafeParseInt or SafeParseIntRange to safely cast to a\n// more restrictive type.\nfunc ParseInt(in interface{}) (int64, error) {\n\tvar ret int64\n\tjsonIn, ok := in.(json.Number)\n\tif ok {\n\t\tin = jsonIn.String()\n\t}\n\tswitch in.(type) {\n\tcase string:\n\t\tinp := in.(string)\n\t\tif inp == \"\" {\n\t\t\treturn 0, nil\n\t\t}\n\t\tvar err error\n\t\tleft, err := strconv.ParseInt(inp, 10, 64)\n\t\tif err != nil {\n\t\t\treturn ret, err\n\t\t}\n\t\tret = left\n\tcase int:\n\t\tret = int64(in.(int))\n\tcase int32:\n\t\tret = int64(in.(int32))\n\tcase int64:\n\t\tret = in.(int64)\n\tcase uint:\n\t\tret = int64(in.(uint))\n\tcase uint32:\n\t\tret = int64(in.(uint32))\n\tcase uint64:\n\t\tret = int64(in.(uint64))\n\tdefault:\n\t\treturn 0, errors.New(\"could not parse value from input\")\n\t}\n\n\treturn ret, nil\n}\n\n// ParseDirectIntSlice behaves similarly to ParseInt, but accepts typed\n// slices, returning a slice of int64s.\n//\n// If the starting value may not be in slice form (e.g.. a bare numeric value\n// could be provided), it is suggested to call ParseIntSlice instead.\nfunc ParseDirectIntSlice(in interface{}) ([]int64, error) {\n\tvar ret []int64\n\n\tswitch in.(type) {\n\tcase []int:\n\t\tfor _, v := range in.([]int) {\n\t\t\tret = append(ret, int64(v))\n\t\t}\n\tcase []int32:\n\t\tfor _, v := range in.([]int32) {\n\t\t\tret = append(ret, int64(v))\n\t\t}\n\tcase []int64:\n\t\t// For consistency to ensure callers can always modify ret without\n\t\t// impacting in.\n\t\tfor _, v := range in.([]int64) {\n\t\t\tret = append(ret, v)\n\t\t}\n\tcase []uint:\n\t\tfor _, v := range in.([]uint) {\n\t\t\tret = append(ret, int64(v))\n\t\t}\n\tcase []uint32:\n\t\tfor _, v := range in.([]uint32) {\n\t\t\tret = append(ret, int64(v))\n\t\t}\n\tcase []uint64:\n\t\tfor _, v := range in.([]uint64) {\n\t\t\tret = append(ret, int64(v))\n\t\t}\n\tcase []json.Number:\n\t\tfor _, v := range in.([]json.Number) {\n\t\t\telement, err := ParseInt(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tret = append(ret, element)\n\t\t}\n\tcase []string:\n\t\tfor _, v := range in.([]string) {\n\t\t\telement, err := ParseInt(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tret = append(ret, element)\n\t\t}\n\tdefault:\n\t\treturn nil, errors.New(\"could not parse value from input\")\n\t}\n\n\treturn ret, nil\n}\n\n// ParseIntSlice is a helper function for handling upgrades of optional\n// slices; that is, if the API accepts a type similar to <int|[]int>,\n// nicely handle the common cases of providing only an int-ish, providing\n// an actual slice of int-ishes, or providing a comma-separated list of\n// numbers.\n//\n// When []int64 is not the desired final type (or the values should be\n// range-bound), it is suggested to call SafeParseIntSlice or\n// SafeParseIntSliceRange instead.\nfunc ParseIntSlice(in interface{}) ([]int64, error) {\n\tif ret, err := ParseInt(in); err == nil {\n\t\treturn []int64{ret}, nil\n\t}\n\n\tif ret, err := ParseDirectIntSlice(in); err == nil {\n\t\treturn ret, nil\n\t}\n\n\tif strings, err := ParseCommaStringSlice(in); err == nil {\n\t\tvar ret []int64\n\t\tfor _, v := range strings {\n\t\t\tif v == \"\" {\n\t\t\t\t// Ignore empty fields\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\telement, err := ParseInt(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tret = append(ret, element)\n\t\t}\n\n\t\treturn ret, nil\n\t}\n\n\treturn nil, errors.New(\"could not parse value from input\")\n}\n\n// Parses the provided arbitrary value as a boolean-like value.\nfunc ParseBool(in interface{}) (bool, error) {\n\tvar result bool\n\tif err := mapstructure.WeakDecode(in, &result); err != nil {\n\t\treturn false, err\n\t}\n\treturn result, nil\n}\n\n// Parses the provided arbitrary value as a string.\nfunc ParseString(in interface{}) (string, error) {\n\tvar result string\n\tif err := mapstructure.WeakDecode(in, &result); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn result, nil\n}\n\n// Parses the provided string-like value as a comma-separated list of values.\nfunc ParseCommaStringSlice(in interface{}) ([]string, error) {\n\tjsonIn, ok := in.(json.Number)\n\tif ok {\n\t\tin = jsonIn.String()\n\t}\n\n\trawString, ok := in.(string)\n\tif ok && rawString == \"\" {\n\t\treturn []string{}, nil\n\t}\n\tvar result []string\n\tconfig := &mapstructure.DecoderConfig{\n\t\tResult:           &result,\n\t\tWeaklyTypedInput: true,\n\t\tDecodeHook:       mapstructure.StringToSliceHookFunc(\",\"),\n\t}\n\tdecoder, err := mapstructure.NewDecoder(config)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := decoder.Decode(in); err != nil {\n\t\treturn nil, err\n\t}\n\treturn strutil.TrimStrings(result), nil\n}\n\n// Parses the specified value as one or more addresses, separated by commas.\nfunc ParseAddrs(addrs interface{}) ([]*sockaddr.SockAddrMarshaler, error) {\n\tout := make([]*sockaddr.SockAddrMarshaler, 0)\n\tstringAddrs := make([]string, 0)\n\n\tswitch addrs.(type) {\n\tcase string:\n\t\tstringAddrs = strutil.ParseArbitraryStringSlice(addrs.(string), \",\")\n\t\tif len(stringAddrs) == 0 {\n\t\t\treturn nil, fmt.Errorf(\"unable to parse addresses from %v\", addrs)\n\t\t}\n\n\tcase []string:\n\t\tstringAddrs = addrs.([]string)\n\n\tcase []interface{}:\n\t\tfor _, v := range addrs.([]interface{}) {\n\t\t\tstringAddr, ok := v.(string)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"error parsing %v as string\", v)\n\t\t\t}\n\t\t\tstringAddrs = append(stringAddrs, stringAddr)\n\t\t}\n\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unknown address input type %T\", addrs)\n\t}\n\n\tfor _, addr := range stringAddrs {\n\t\tsa, err := sockaddr.NewSockAddr(addr)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error parsing address %q: %w\", addr, err)\n\t\t}\n\t\tout = append(out, &sockaddr.SockAddrMarshaler{\n\t\t\tSockAddr: sa,\n\t\t})\n\t}\n\n\treturn out, nil\n}\n\n// Parses the provided arbitrary value (see ParseInt), ensuring it is within\n// the specified range (inclusive of bounds). If this range corresponds to a\n// smaller type, the returned value can then be safely cast without risking\n// overflow.\nfunc SafeParseIntRange(in interface{}, min int64, max int64) (int64, error) {\n\traw, err := ParseInt(in)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tif raw < min || raw > max {\n\t\treturn 0, fmt.Errorf(\"error parsing int value; out of range [%v to %v]: %v\", min, max, raw)\n\t}\n\n\treturn raw, nil\n}\n\n// Parses the specified arbitrary value (see ParseInt), ensuring that the\n// resulting value is within the range for an int value. If no error occurred,\n// the caller knows no overflow occurred.\nfunc SafeParseInt(in interface{}) (int, error) {\n\traw, err := SafeParseIntRange(in, math.MinInt, math.MaxInt)\n\treturn int(raw), err\n}\n\n// Parses the provided arbitrary value (see ParseIntSlice) into a slice of\n// int64 values, ensuring each is within the specified range (inclusive of\n// bounds). If this range corresponds to a smaller type, the returned value\n// can then be safely cast without risking overflow.\n//\n// If elements is positive, it is used to ensure the resulting slice is\n// bounded above by that many number of elements (inclusive).\nfunc SafeParseIntSliceRange(in interface{}, minValue int64, maxValue int64, elements int) ([]int64, error) {\n\traw, err := ParseIntSlice(in)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif elements > 0 && len(raw) > elements {\n\t\treturn nil, fmt.Errorf(\"error parsing value from input: got %v but expected at most %v elements\", len(raw), elements)\n\t}\n\n\tfor index, value := range raw {\n\t\tif value < minValue || value > maxValue {\n\t\t\treturn nil, fmt.Errorf(\"error parsing value from input: element %v was outside of range [%v to %v]: %v\", index, minValue, maxValue, value)\n\t\t}\n\t}\n\n\treturn raw, nil\n}\n\n// Parses the provided arbitrary value (see ParseIntSlice) into a slice of\n// int values, ensuring the each resulting value in the slice is within the\n// range for an int value. If no error occurred, the caller knows no overflow\n// occurred.\n//\n// If elements is positive, it is used to ensure the resulting slice is\n// bounded above by that many number of elements (inclusive).\nfunc SafeParseIntSlice(in interface{}, elements int) ([]int, error) {\n\traw, err := SafeParseIntSliceRange(in, math.MinInt, math.MaxInt, elements)\n\tif err != nil || raw == nil {\n\t\treturn nil, err\n\t}\n\n\tvar result = make([]int, 0, len(raw))\n\tfor _, element := range raw {\n\t\tresult = append(result, int(element))\n\t}\n\n\treturn result, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-secure-stdlib/strutil/LICENSE",
    "content": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. \"Contributor\"\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n\n     means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the terms of\n        a Secondary License.\n\n1.6. \"Executable Form\"\n\n     means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n\n     means a work that combines Covered Software with other material, in a\n     separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n\n     means this document.\n\n1.9. \"Licensable\"\n\n     means having the right to grant, to the maximum extent possible, whether\n     at the time of the initial grant or subsequently, any and all of the\n     rights conveyed by this License.\n\n1.10. \"Modifications\"\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. \"Patent Claims\" of a Contributor\n\n      means any patent claim(s), including without limitation, method,\n      process, and apparatus claims, in any patent Licensable by such\n      Contributor that would be infringed, but for the grant of the License,\n      by the making, using, selling, offering for sale, having made, import,\n      or transfer of either its Contributions or its Contributor Version.\n\n1.12. \"Secondary License\"\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. \"Source Code Form\"\n\n      means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, \"You\" includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, \"control\" means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or\n        as part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its\n        Contributions or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution\n     become effective for each Contribution on the date the Contributor first\n     distributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under\n     this License. No additional rights or licenses will be implied from the\n     distribution or licensing of Covered Software under this License.\n     Notwithstanding Section 2.1(b) above, no patent license is granted by a\n     Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party's\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of\n        its Contributions.\n\n     This License does not grant any rights in the trademarks, service marks,\n     or logos of any Contributor (except as may be necessary to comply with\n     the notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this\n     License (see Section 10.2) or under the terms of a Secondary License (if\n     permitted under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its\n     Contributions are its original creation(s) or it has sufficient rights to\n     grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under\n     applicable copyright doctrines of fair use, fair dealing, or other\n     equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under\n     the terms of this License. You must inform recipients that the Source\n     Code Form of the Covered Software is governed by the terms of this\n     License, and how they can obtain a copy of this License. You may not\n     attempt to alter or restrict the recipients' rights in the Source Code\n     Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this\n        License, or sublicense it under different terms, provided that the\n        license for the Executable Form does not attempt to limit or alter the\n        recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for\n     the Covered Software. If the Larger Work is a combination of Covered\n     Software with a work governed by one or more Secondary Licenses, and the\n     Covered Software is not Incompatible With Secondary Licenses, this\n     License permits You to additionally distribute such Covered Software\n     under the terms of such Secondary License(s), so that the recipient of\n     the Larger Work may, at their option, further distribute the Covered\n     Software under the terms of either this License or such Secondary\n     License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices\n     (including copyright notices, patent notices, disclaimers of warranty, or\n     limitations of liability) contained within the Source Code Form of the\n     Covered Software, except that You may alter any license notices to the\n     extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on\n     behalf of any Contributor. You must make it absolutely clear that any\n     such warranty, support, indemnity, or liability obligation is offered by\n     You alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute,\n   judicial order, or regulation then You must: (a) comply with the terms of\n   this License to the maximum extent possible; and (b) describe the\n   limitations and the code they affect. Such description must be placed in a\n   text file included with all distributions of the Covered Software under\n   this License. Except to the extent prohibited by statute or regulation,\n   such description must be sufficiently detailed for a recipient of ordinary\n   skill to be able to understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing\n     basis, if such Contributor fails to notify You of the non-compliance by\n     some reasonable means prior to 60 days after You have come back into\n     compliance. Moreover, Your grants from a particular Contributor are\n     reinstated on an ongoing basis if such Contributor notifies You of the\n     non-compliance by some reasonable means, this is the first time You have\n     received notice of non-compliance with this License from such\n     Contributor, and You become compliant prior to 30 days after Your receipt\n     of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions,\n     counter-claims, and cross-claims) alleging that a Contributor Version\n     directly or indirectly infringes any patent, then the rights granted to\n     You by any and all Contributors for the Covered Software under Section\n     2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an \"as is\" basis,\n   without warranty of any kind, either expressed, implied, or statutory,\n   including, without limitation, warranties that the Covered Software is free\n   of defects, merchantable, fit for a particular purpose or non-infringing.\n   The entire risk as to the quality and performance of the Covered Software\n   is with You. Should any Covered Software prove defective in any respect,\n   You (not any Contributor) assume the cost of any necessary servicing,\n   repair, or correction. This disclaimer of warranty constitutes an essential\n   part of this License. No use of  any Covered Software is authorized under\n   this License except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from\n   such party's negligence to the extent applicable law prohibits such\n   limitation. Some jurisdictions do not allow the exclusion or limitation of\n   incidental or consequential damages, so this exclusion and limitation may\n   not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts\n   of a jurisdiction where the defendant maintains its principal place of\n   business and such litigation shall be governed by laws of that\n   jurisdiction, without reference to its conflict-of-law provisions. Nothing\n   in this Section shall prevent a party's ability to bring cross-claims or\n   counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject\n   matter hereof. If any provision of this License is held to be\n   unenforceable, such provision shall be reformed only to the extent\n   necessary to make it enforceable. Any law or regulation which provides that\n   the language of a contract shall be construed against the drafter shall not\n   be used to construe this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version\n      of the License under which You originally received the Covered Software,\n      or under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a\n      modified version of this License if you rename the license and remove\n      any references to the name of the license steward (except to note that\n      such modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\n      Licenses If You choose to distribute Source Code Form that is\n      Incompatible With Secondary Licenses under the terms of this version of\n      the License, the notice described in Exhibit B of this License must be\n      attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file,\nthen You may include the notice in a location (such as a LICENSE file in a\nrelevant directory) where a recipient would be likely to look for such a\nnotice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n\n      This Source Code Form is \"Incompatible\n      With Secondary Licenses\", as defined by\n      the Mozilla Public License, v. 2.0.\n\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-secure-stdlib/strutil/strutil.go",
    "content": "package strutil\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n\t\"unicode\"\n\n\tglob \"github.com/ryanuber/go-glob\"\n)\n\n// StrListContainsGlob looks for a string in a list of strings and allows\n// globs.\nfunc StrListContainsGlob(haystack []string, needle string) bool {\n\tfor _, item := range haystack {\n\t\tif glob.Glob(item, needle) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// StrListContains looks for a string in a list of strings.\nfunc StrListContains(haystack []string, needle string) bool {\n\tfor _, item := range haystack {\n\t\tif item == needle {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// StrListContainsCaseInsensitive looks for a string in a list of strings.\nfunc StrListContainsCaseInsensitive(haystack []string, needle string) bool {\n\tfor _, item := range haystack {\n\t\tif strings.EqualFold(item, needle) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// StrListSubset checks if a given list is a subset\n// of another set\nfunc StrListSubset(super, sub []string) bool {\n\tfor _, item := range sub {\n\t\tif !StrListContains(super, item) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// ParseDedupAndSortStrings parses a comma separated list of strings\n// into a slice of strings. The return slice will be sorted and will\n// not contain duplicate or empty items.\nfunc ParseDedupAndSortStrings(input string, sep string) []string {\n\tinput = strings.TrimSpace(input)\n\tparsed := []string{}\n\tif input == \"\" {\n\t\t// Don't return nil\n\t\treturn parsed\n\t}\n\treturn RemoveDuplicates(strings.Split(input, sep), false)\n}\n\n// ParseDedupLowercaseAndSortStrings parses a comma separated list of\n// strings into a slice of strings. The return slice will be sorted and\n// will not contain duplicate or empty items. The values will be converted\n// to lower case.\nfunc ParseDedupLowercaseAndSortStrings(input string, sep string) []string {\n\tinput = strings.TrimSpace(input)\n\tparsed := []string{}\n\tif input == \"\" {\n\t\t// Don't return nil\n\t\treturn parsed\n\t}\n\treturn RemoveDuplicates(strings.Split(input, sep), true)\n}\n\n// ParseKeyValues parses a comma separated list of `<key>=<value>` tuples\n// into a map[string]string.\nfunc ParseKeyValues(input string, out map[string]string, sep string) error {\n\tif out == nil {\n\t\treturn fmt.Errorf(\"'out is nil\")\n\t}\n\n\tkeyValues := ParseDedupLowercaseAndSortStrings(input, sep)\n\tif len(keyValues) == 0 {\n\t\treturn nil\n\t}\n\n\tfor _, keyValue := range keyValues {\n\t\tshards := strings.Split(keyValue, \"=\")\n\t\tif len(shards) != 2 {\n\t\t\treturn fmt.Errorf(\"invalid <key,value> format\")\n\t\t}\n\n\t\tkey := strings.TrimSpace(shards[0])\n\t\tvalue := strings.TrimSpace(shards[1])\n\t\tif key == \"\" || value == \"\" {\n\t\t\treturn fmt.Errorf(\"invalid <key,value> pair: key: %q value: %q\", key, value)\n\t\t}\n\t\tout[key] = value\n\t}\n\treturn nil\n}\n\n// ParseArbitraryKeyValues parses arbitrary <key,value> tuples. The input\n// can be one of the following:\n// * JSON string\n// * Base64 encoded JSON string\n// * Comma separated list of `<key>=<value>` pairs\n// * Base64 encoded string containing comma separated list of\n//   `<key>=<value>` pairs\n//\n// Input will be parsed into the output parameter, which should\n// be a non-nil map[string]string.\nfunc ParseArbitraryKeyValues(input string, out map[string]string, sep string) error {\n\tinput = strings.TrimSpace(input)\n\tif input == \"\" {\n\t\treturn nil\n\t}\n\tif out == nil {\n\t\treturn fmt.Errorf(\"'out' is nil\")\n\t}\n\n\t// Try to base64 decode the input. If successful, consider the decoded\n\t// value as input.\n\tinputBytes, err := base64.StdEncoding.DecodeString(input)\n\tif err == nil {\n\t\tinput = string(inputBytes)\n\t}\n\n\t// Try to JSON unmarshal the input. If successful, consider that the\n\t// metadata was supplied as JSON input.\n\terr = json.Unmarshal([]byte(input), &out)\n\tif err != nil {\n\t\t// If JSON unmarshaling fails, consider that the input was\n\t\t// supplied as a comma separated string of 'key=value' pairs.\n\t\tif err = ParseKeyValues(input, out, sep); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to parse the input: %w\", err)\n\t\t}\n\t}\n\n\t// Validate the parsed input\n\tfor key, value := range out {\n\t\tif key != \"\" && value == \"\" {\n\t\t\treturn fmt.Errorf(\"invalid value for key %q\", key)\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// ParseStringSlice parses a `sep`-separated list of strings into a\n// []string with surrounding whitespace removed.\n//\n// The output will always be a valid slice but may be of length zero.\nfunc ParseStringSlice(input string, sep string) []string {\n\tinput = strings.TrimSpace(input)\n\tif input == \"\" {\n\t\treturn []string{}\n\t}\n\n\tsplitStr := strings.Split(input, sep)\n\tret := make([]string, len(splitStr))\n\tfor i, val := range splitStr {\n\t\tret[i] = strings.TrimSpace(val)\n\t}\n\n\treturn ret\n}\n\n// ParseArbitraryStringSlice parses arbitrary string slice. The input\n// can be one of the following:\n// * JSON string\n// * Base64 encoded JSON string\n// * `sep` separated list of values\n// * Base64-encoded string containing a `sep` separated list of values\n//\n// Note that the separator is ignored if the input is found to already be in a\n// structured format (e.g., JSON)\n//\n// The output will always be a valid slice but may be of length zero.\nfunc ParseArbitraryStringSlice(input string, sep string) []string {\n\tinput = strings.TrimSpace(input)\n\tif input == \"\" {\n\t\treturn []string{}\n\t}\n\n\t// Try to base64 decode the input. If successful, consider the decoded\n\t// value as input.\n\tinputBytes, err := base64.StdEncoding.DecodeString(input)\n\tif err == nil {\n\t\tinput = string(inputBytes)\n\t}\n\n\tret := []string{}\n\n\t// Try to JSON unmarshal the input. If successful, consider that the\n\t// metadata was supplied as JSON input.\n\terr = json.Unmarshal([]byte(input), &ret)\n\tif err != nil {\n\t\t// If JSON unmarshaling fails, consider that the input was\n\t\t// supplied as a separated string of values.\n\t\treturn ParseStringSlice(input, sep)\n\t}\n\n\tif ret == nil {\n\t\treturn []string{}\n\t}\n\n\treturn ret\n}\n\n// TrimStrings takes a slice of strings and returns a slice of strings\n// with trimmed spaces\nfunc TrimStrings(items []string) []string {\n\tret := make([]string, len(items))\n\tfor i, item := range items {\n\t\tret[i] = strings.TrimSpace(item)\n\t}\n\treturn ret\n}\n\n// RemoveDuplicates removes duplicate and empty elements from a slice of\n// strings. This also may convert the items in the slice to lower case and\n// returns a sorted slice.\nfunc RemoveDuplicates(items []string, lowercase bool) []string {\n\titemsMap := make(map[string]struct{}, len(items))\n\tfor _, item := range items {\n\t\titem = strings.TrimSpace(item)\n\t\tif item == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tif lowercase {\n\t\t\titem = strings.ToLower(item)\n\t\t}\n\t\titemsMap[item] = struct{}{}\n\t}\n\titems = make([]string, 0, len(itemsMap))\n\tfor item := range itemsMap {\n\t\titems = append(items, item)\n\t}\n\tsort.Strings(items)\n\treturn items\n}\n\n// RemoveDuplicatesStable removes duplicate and empty elements from a slice of\n// strings, preserving order (and case) of the original slice.\n// In all cases, strings are compared after trimming whitespace\n// If caseInsensitive, strings will be compared after ToLower()\nfunc RemoveDuplicatesStable(items []string, caseInsensitive bool) []string {\n\titemsMap := make(map[string]struct{}, len(items))\n\tdeduplicated := make([]string, 0, len(items))\n\n\tfor _, item := range items {\n\t\tkey := strings.TrimSpace(item)\n\t\tif _, ok := itemsMap[key]; ok || key == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tif caseInsensitive {\n\t\t\tkey = strings.ToLower(key)\n\t\t}\n\t\tif _, ok := itemsMap[key]; ok {\n\t\t\tcontinue\n\t\t}\n\t\titemsMap[key] = struct{}{}\n\t\tdeduplicated = append(deduplicated, item)\n\t}\n\treturn deduplicated\n}\n\n// RemoveEmpty removes empty elements from a slice of\n// strings\nfunc RemoveEmpty(items []string) []string {\n\tif len(items) == 0 {\n\t\treturn items\n\t}\n\titemsSlice := make([]string, 0, len(items))\n\tfor _, item := range items {\n\t\tif item == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\titemsSlice = append(itemsSlice, item)\n\t}\n\treturn itemsSlice\n}\n\n// EquivalentSlices checks whether the given string sets are equivalent, as in,\n// they contain the same values.\nfunc EquivalentSlices(a, b []string) bool {\n\tif a == nil && b == nil {\n\t\treturn true\n\t}\n\n\tif a == nil || b == nil {\n\t\treturn false\n\t}\n\n\t// First we'll build maps to ensure unique values\n\tmapA := make(map[string]struct{}, len(a))\n\tmapB := make(map[string]struct{}, len(b))\n\tfor _, keyA := range a {\n\t\tmapA[keyA] = struct{}{}\n\t}\n\tfor _, keyB := range b {\n\t\tmapB[keyB] = struct{}{}\n\t}\n\n\t// Now we'll build our checking slices\n\tsortedA := make([]string, 0, len(mapA))\n\tsortedB := make([]string, 0, len(mapB))\n\tfor keyA := range mapA {\n\t\tsortedA = append(sortedA, keyA)\n\t}\n\tfor keyB := range mapB {\n\t\tsortedB = append(sortedB, keyB)\n\t}\n\tsort.Strings(sortedA)\n\tsort.Strings(sortedB)\n\n\t// Finally, compare\n\tif len(sortedA) != len(sortedB) {\n\t\treturn false\n\t}\n\n\tfor i := range sortedA {\n\t\tif sortedA[i] != sortedB[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\n// EqualStringMaps tests whether two map[string]string objects are equal.\n// Equal means both maps have the same sets of keys and values. This function\n// is 6-10x faster than a call to reflect.DeepEqual().\nfunc EqualStringMaps(a, b map[string]string) bool {\n\tif len(a) != len(b) {\n\t\treturn false\n\t}\n\n\tfor k := range a {\n\t\tv, ok := b[k]\n\t\tif !ok || a[k] != v {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\n// StrListDelete removes the first occurrence of the given item from the slice\n// of strings if the item exists.\nfunc StrListDelete(s []string, d string) []string {\n\tif s == nil {\n\t\treturn s\n\t}\n\n\tfor index, element := range s {\n\t\tif element == d {\n\t\t\treturn append(s[:index], s[index+1:]...)\n\t\t}\n\t}\n\n\treturn s\n}\n\n// GlobbedStringsMatch compares item to val with support for a leading and/or\n// trailing wildcard '*' in item.\nfunc GlobbedStringsMatch(item, val string) bool {\n\tif len(item) < 2 {\n\t\treturn val == item\n\t}\n\n\thasPrefix := strings.HasPrefix(item, \"*\")\n\thasSuffix := strings.HasSuffix(item, \"*\")\n\n\tif hasPrefix && hasSuffix {\n\t\treturn strings.Contains(val, item[1:len(item)-1])\n\t} else if hasPrefix {\n\t\treturn strings.HasSuffix(val, item[1:])\n\t} else if hasSuffix {\n\t\treturn strings.HasPrefix(val, item[:len(item)-1])\n\t}\n\n\treturn val == item\n}\n\n// AppendIfMissing adds a string to a slice if the given string is not present\nfunc AppendIfMissing(slice []string, i string) []string {\n\tif StrListContains(slice, i) {\n\t\treturn slice\n\t}\n\treturn append(slice, i)\n}\n\n// MergeSlices adds an arbitrary number of slices together, uniquely\nfunc MergeSlices(args ...[]string) []string {\n\tall := map[string]struct{}{}\n\tfor _, slice := range args {\n\t\tfor _, v := range slice {\n\t\t\tall[v] = struct{}{}\n\t\t}\n\t}\n\n\tresult := make([]string, 0, len(all))\n\tfor k := range all {\n\t\tresult = append(result, k)\n\t}\n\tsort.Strings(result)\n\treturn result\n}\n\n// Difference returns the set difference (A - B) of the two given slices. The\n// result will also remove any duplicated values in set A regardless of whether\n// that matches any values in set B.\nfunc Difference(a, b []string, lowercase bool) []string {\n\tif len(a) == 0 {\n\t\treturn a\n\t}\n\tif len(b) == 0 {\n\t\tif !lowercase {\n\t\t\treturn a\n\t\t}\n\t\tnewA := make([]string, len(a))\n\t\tfor i, v := range a {\n\t\t\tnewA[i] = strings.ToLower(v)\n\t\t}\n\t\treturn newA\n\t}\n\n\ta = RemoveDuplicates(a, lowercase)\n\tb = RemoveDuplicates(b, lowercase)\n\n\titemsMap := map[string]struct{}{}\n\tfor _, aVal := range a {\n\t\titemsMap[aVal] = struct{}{}\n\t}\n\n\t// Perform difference calculation\n\tfor _, bVal := range b {\n\t\tif _, ok := itemsMap[bVal]; ok {\n\t\t\tdelete(itemsMap, bVal)\n\t\t}\n\t}\n\n\titems := []string{}\n\tfor item := range itemsMap {\n\t\titems = append(items, item)\n\t}\n\tsort.Strings(items)\n\treturn items\n}\n\n// GetString attempts to retrieve a value from the provided map and assert that it is a string. If the key does not\n// exist in the map, this will return an empty string. If the key exists, but the value is not a string type, this will\n// return an error. If no map or key is provied, this will return an error\nfunc GetString(m map[string]interface{}, key string) (string, error) {\n\tif m == nil {\n\t\treturn \"\", fmt.Errorf(\"missing map\")\n\t}\n\tif key == \"\" {\n\t\treturn \"\", fmt.Errorf(\"missing key\")\n\t}\n\n\trawVal, ok := m[key]\n\tif !ok {\n\t\treturn \"\", nil\n\t}\n\n\tstr, ok := rawVal.(string)\n\tif !ok {\n\t\treturn \"\", fmt.Errorf(\"invalid value at %s: is a %T\", key, rawVal)\n\t}\n\treturn str, nil\n}\n\n// Printable returns true if all characters in the string are printable\n// according to Unicode\nfunc Printable(s string) bool {\n\treturn strings.IndexFunc(s, func(c rune) bool {\n\t\treturn !unicode.IsPrint(c)\n\t}) == -1\n}\n\n// StringListToInterfaceList simply takes a []string and turns it into a\n// []interface{} to satisfy the input requirements for other library functions\nfunc StringListToInterfaceList(in []string) []interface{} {\n\tret := make([]interface{}, len(in))\n\tfor i, v := range in {\n\t\tret[i] = v\n\t}\n\treturn ret\n}\n\n// Reverse reverses the input string\nfunc Reverse(in string) string {\n\tl := len(in)\n\tout := make([]byte, l)\n\tfor i := 0; i <= l/2; i++ {\n\t\tout[i], out[l-1-i] = in[l-1-i], in[i]\n\t}\n\treturn string(out)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n*.test\n*.prof\n.cover.out*\ncoverage.html\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/GNUmakefile",
    "content": "TOOLS= golang.org/x/tools/cover\nGOCOVER_TMPFILE?=\t$(GOCOVER_FILE).tmp\nGOCOVER_FILE?=\t.cover.out\nGOCOVERHTML?=\tcoverage.html\nFIND=`/usr/bin/which 2> /dev/null gfind find | /usr/bin/grep -v ^no | /usr/bin/head -n 1`\nXARGS=`/usr/bin/which 2> /dev/null gxargs xargs | /usr/bin/grep -v ^no | /usr/bin/head -n 1`\n\ntest:: $(GOCOVER_FILE)\n\t@$(MAKE) -C cmd/sockaddr test\n\ncover:: coverage_report\n\n$(GOCOVER_FILE)::\n\t@${FIND} . -type d ! -path '*cmd*' ! -path '*.git*' -print0 | ${XARGS} -0 -I % sh -ec \"cd % && rm -f $(GOCOVER_TMPFILE) && go test -coverprofile=$(GOCOVER_TMPFILE)\"\n\n\t@echo 'mode: set' > $(GOCOVER_FILE)\n\t@${FIND} . -type f ! -path '*cmd*' ! -path '*.git*' -name \"$(GOCOVER_TMPFILE)\" -print0 | ${XARGS} -0 -n1 cat $(GOCOVER_TMPFILE) | grep -v '^mode: ' >> ${PWD}/$(GOCOVER_FILE)\n\n$(GOCOVERHTML): $(GOCOVER_FILE)\n\tgo tool cover -html=$(GOCOVER_FILE) -o $(GOCOVERHTML)\n\ncoverage_report:: $(GOCOVER_FILE)\n\tgo tool cover -html=$(GOCOVER_FILE)\n\naudit_tools::\n\t@go get -u github.com/golang/lint/golint && echo \"Installed golint:\"\n\t@go get -u github.com/fzipp/gocyclo && echo \"Installed gocyclo:\"\n\t@go get -u github.com/remyoudompheng/go-misc/deadcode && echo \"Installed deadcode:\"\n\t@go get -u github.com/client9/misspell/cmd/misspell && echo \"Installed misspell:\"\n\t@go get -u github.com/gordonklaus/ineffassign && echo \"Installed ineffassign:\"\n\naudit::\n\tdeadcode\n\tgo tool vet -all *.go\n\tgo tool vet -shadow=true *.go\n\tgolint *.go\n\tineffassign .\n\tgocyclo -over 65 *.go\n\tmisspell *.go\n\nclean::\n\trm -f $(GOCOVER_FILE) $(GOCOVERHTML)\n\ndev::\n\t@go build\n\t@$(MAKE) -B -C cmd/sockaddr sockaddr\n\ninstall::\n\t@go install\n\t@$(MAKE) -C cmd/sockaddr install\n\ndoc::\n\t@echo Visit: http://127.0.0.1:6161/pkg/github.com/hashicorp/go-sockaddr/\n\tgodoc -http=:6161 -goroot $GOROOT\n\nworld::\n\t@set -e; \\\n\tfor os in solaris darwin freebsd linux windows android; do \\\n\t\tfor arch in amd64; do \\\n\t\t\tprintf \"Building on %s-%s\\n\" \"$${os}\" \"$${arch}\" ; \\\n\t\t\tenv GOOS=\"$${os}\" GOARCH=\"$${arch}\" go build -o /dev/null; \\\n\t\tdone; \\\n\tdone\n\n\t$(MAKE) -C cmd/sockaddr world\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/LICENSE",
    "content": "Copyright (c) 2016 HashiCorp, Inc.\n\nMozilla Public License Version 2.0\n==================================\n\n1. Definitions\n--------------\n\n1.1. \"Contributor\"\n    means each individual or legal entity that creates, contributes to\n    the creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n    means the combination of the Contributions of others (if any) used\n    by a Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n    means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n    means Source Code Form to which the initial Contributor has attached\n    the notice in Exhibit A, the Executable Form of such Source Code\n    Form, and Modifications of such Source Code Form, in each case\n    including portions thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n    means\n\n    (a) that the initial Contributor has attached the notice described\n        in Exhibit B to the Covered Software; or\n\n    (b) that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the\n        terms of a Secondary License.\n\n1.6. \"Executable Form\"\n    means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n    means a work that combines Covered Software with other material, in\n    a separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n    means this document.\n\n1.9. \"Licensable\"\n    means having the right to grant, to the maximum extent possible,\n    whether at the time of the initial grant or subsequently, any and\n    all of the rights conveyed by this License.\n\n1.10. \"Modifications\"\n    means any of the following:\n\n    (a) any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered\n        Software; or\n\n    (b) any new file in Source Code Form that contains any Covered\n        Software.\n\n1.11. \"Patent Claims\" of a Contributor\n    means any patent claim(s), including without limitation, method,\n    process, and apparatus claims, in any patent Licensable by such\n    Contributor that would be infringed, but for the grant of the\n    License, by the making, using, selling, offering for sale, having\n    made, import, or transfer of either its Contributions or its\n    Contributor Version.\n\n1.12. \"Secondary License\"\n    means either the GNU General Public License, Version 2.0, the GNU\n    Lesser General Public License, Version 2.1, the GNU Affero General\n    Public License, Version 3.0, or any later versions of those\n    licenses.\n\n1.13. \"Source Code Form\"\n    means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n    means an individual or a legal entity exercising rights under this\n    License. For legal entities, \"You\" includes any entity that\n    controls, is controlled by, or is under common control with You. For\n    purposes of this definition, \"control\" means (a) the power, direct\n    or indirect, to cause the direction or management of such entity,\n    whether by contract or otherwise, or (b) ownership of more than\n    fifty percent (50%) of the outstanding shares or beneficial\n    ownership of such entity.\n\n2. License Grants and Conditions\n--------------------------------\n\n2.1. Grants\n\nEach Contributor hereby grants You a world-wide, royalty-free,\nnon-exclusive license:\n\n(a) under intellectual property rights (other than patent or trademark)\n    Licensable by such Contributor to use, reproduce, make available,\n    modify, display, perform, distribute, and otherwise exploit its\n    Contributions, either on an unmodified basis, with Modifications, or\n    as part of a Larger Work; and\n\n(b) under Patent Claims of such Contributor to make, use, sell, offer\n    for sale, have made, import, and otherwise transfer either its\n    Contributions or its Contributor Version.\n\n2.2. Effective Date\n\nThe licenses granted in Section 2.1 with respect to any Contribution\nbecome effective for each Contribution on the date the Contributor first\ndistributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\nThe licenses granted in this Section 2 are the only rights granted under\nthis License. No additional rights or licenses will be implied from the\ndistribution or licensing of Covered Software under this License.\nNotwithstanding Section 2.1(b) above, no patent license is granted by a\nContributor:\n\n(a) for any code that a Contributor has removed from Covered Software;\n    or\n\n(b) for infringements caused by: (i) Your and any other third party's\n    modifications of Covered Software, or (ii) the combination of its\n    Contributions with other software (except as part of its Contributor\n    Version); or\n\n(c) under Patent Claims infringed by Covered Software in the absence of\n    its Contributions.\n\nThis License does not grant any rights in the trademarks, service marks,\nor logos of any Contributor (except as may be necessary to comply with\nthe notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\nNo Contributor makes additional grants as a result of Your choice to\ndistribute the Covered Software under a subsequent version of this\nLicense (see Section 10.2) or under the terms of a Secondary License (if\npermitted under the terms of Section 3.3).\n\n2.5. Representation\n\nEach Contributor represents that the Contributor believes its\nContributions are its original creation(s) or it has sufficient rights\nto grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\nThis License is not intended to limit any rights You have under\napplicable copyright doctrines of fair use, fair dealing, or other\nequivalents.\n\n2.7. Conditions\n\nSections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted\nin Section 2.1.\n\n3. Responsibilities\n-------------------\n\n3.1. Distribution of Source Form\n\nAll distribution of Covered Software in Source Code Form, including any\nModifications that You create or to which You contribute, must be under\nthe terms of this License. You must inform recipients that the Source\nCode Form of the Covered Software is governed by the terms of this\nLicense, and how they can obtain a copy of this License. You may not\nattempt to alter or restrict the recipients' rights in the Source Code\nForm.\n\n3.2. Distribution of Executable Form\n\nIf You distribute Covered Software in Executable Form then:\n\n(a) such Covered Software must also be made available in Source Code\n    Form, as described in Section 3.1, and You must inform recipients of\n    the Executable Form how they can obtain a copy of such Source Code\n    Form by reasonable means in a timely manner, at a charge no more\n    than the cost of distribution to the recipient; and\n\n(b) You may distribute such Executable Form under the terms of this\n    License, or sublicense it under different terms, provided that the\n    license for the Executable Form does not attempt to limit or alter\n    the recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\nYou may create and distribute a Larger Work under terms of Your choice,\nprovided that You also comply with the requirements of this License for\nthe Covered Software. If the Larger Work is a combination of Covered\nSoftware with a work governed by one or more Secondary Licenses, and the\nCovered Software is not Incompatible With Secondary Licenses, this\nLicense permits You to additionally distribute such Covered Software\nunder the terms of such Secondary License(s), so that the recipient of\nthe Larger Work may, at their option, further distribute the Covered\nSoftware under the terms of either this License or such Secondary\nLicense(s).\n\n3.4. Notices\n\nYou may not remove or alter the substance of any license notices\n(including copyright notices, patent notices, disclaimers of warranty,\nor limitations of liability) contained within the Source Code Form of\nthe Covered Software, except that You may alter any license notices to\nthe extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\nYou may choose to offer, and to charge a fee for, warranty, support,\nindemnity or liability obligations to one or more recipients of Covered\nSoftware. However, You may do so only on Your own behalf, and not on\nbehalf of any Contributor. You must make it absolutely clear that any\nsuch warranty, support, indemnity, or liability obligation is offered by\nYou alone, and You hereby agree to indemnify every Contributor for any\nliability incurred by such Contributor as a result of warranty, support,\nindemnity or liability terms You offer. You may include additional\ndisclaimers of warranty and limitations of liability specific to any\njurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n---------------------------------------------------\n\nIf it is impossible for You to comply with any of the terms of this\nLicense with respect to some or all of the Covered Software due to\nstatute, judicial order, or regulation then You must: (a) comply with\nthe terms of this License to the maximum extent possible; and (b)\ndescribe the limitations and the code they affect. Such description must\nbe placed in a text file included with all distributions of the Covered\nSoftware under this License. Except to the extent prohibited by statute\nor regulation, such description must be sufficiently detailed for a\nrecipient of ordinary skill to be able to understand it.\n\n5. Termination\n--------------\n\n5.1. The rights granted under this License will terminate automatically\nif You fail to comply with any of its terms. However, if You become\ncompliant, then the rights granted under this License from a particular\nContributor are reinstated (a) provisionally, unless and until such\nContributor explicitly and finally terminates Your grants, and (b) on an\nongoing basis, if such Contributor fails to notify You of the\nnon-compliance by some reasonable means prior to 60 days after You have\ncome back into compliance. Moreover, Your grants from a particular\nContributor are reinstated on an ongoing basis if such Contributor\nnotifies You of the non-compliance by some reasonable means, this is the\nfirst time You have received notice of non-compliance with this License\nfrom such Contributor, and You become compliant prior to 30 days after\nYour receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\ninfringement claim (excluding declaratory judgment actions,\ncounter-claims, and cross-claims) alleging that a Contributor Version\ndirectly or indirectly infringes any patent, then the rights granted to\nYou by any and all Contributors for the Covered Software under Section\n2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all\nend user license agreements (excluding distributors and resellers) which\nhave been validly granted by You or Your distributors under this License\nprior to termination shall survive termination.\n\n************************************************************************\n*                                                                      *\n*  6. Disclaimer of Warranty                                           *\n*  -------------------------                                           *\n*                                                                      *\n*  Covered Software is provided under this License on an \"as is\"       *\n*  basis, without warranty of any kind, either expressed, implied, or  *\n*  statutory, including, without limitation, warranties that the       *\n*  Covered Software is free of defects, merchantable, fit for a        *\n*  particular purpose or non-infringing. The entire risk as to the     *\n*  quality and performance of the Covered Software is with You.        *\n*  Should any Covered Software prove defective in any respect, You     *\n*  (not any Contributor) assume the cost of any necessary servicing,   *\n*  repair, or correction. This disclaimer of warranty constitutes an   *\n*  essential part of this License. No use of any Covered Software is   *\n*  authorized under this License except under this disclaimer.         *\n*                                                                      *\n************************************************************************\n\n************************************************************************\n*                                                                      *\n*  7. Limitation of Liability                                          *\n*  --------------------------                                          *\n*                                                                      *\n*  Under no circumstances and under no legal theory, whether tort      *\n*  (including negligence), contract, or otherwise, shall any           *\n*  Contributor, or anyone who distributes Covered Software as          *\n*  permitted above, be liable to You for any direct, indirect,         *\n*  special, incidental, or consequential damages of any character      *\n*  including, without limitation, damages for lost profits, loss of    *\n*  goodwill, work stoppage, computer failure or malfunction, or any    *\n*  and all other commercial damages or losses, even if such party      *\n*  shall have been informed of the possibility of such damages. This   *\n*  limitation of liability shall not apply to liability for death or   *\n*  personal injury resulting from such party's negligence to the       *\n*  extent applicable law prohibits such limitation. Some               *\n*  jurisdictions do not allow the exclusion or limitation of           *\n*  incidental or consequential damages, so this exclusion and          *\n*  limitation may not apply to You.                                    *\n*                                                                      *\n************************************************************************\n\n8. Litigation\n-------------\n\nAny litigation relating to this License may be brought only in the\ncourts of a jurisdiction where the defendant maintains its principal\nplace of business and such litigation shall be governed by laws of that\njurisdiction, without reference to its conflict-of-law provisions.\nNothing in this Section shall prevent a party's ability to bring\ncross-claims or counter-claims.\n\n9. Miscellaneous\n----------------\n\nThis License represents the complete agreement concerning the subject\nmatter hereof. If any provision of this License is held to be\nunenforceable, such provision shall be reformed only to the extent\nnecessary to make it enforceable. Any law or regulation which provides\nthat the language of a contract shall be construed against the drafter\nshall not be used to construe this License against a Contributor.\n\n10. Versions of the License\n---------------------------\n\n10.1. New Versions\n\nMozilla Foundation is the license steward. Except as provided in Section\n10.3, no one other than the license steward has the right to modify or\npublish new versions of this License. Each version will be given a\ndistinguishing version number.\n\n10.2. Effect of New Versions\n\nYou may distribute the Covered Software under the terms of the version\nof the License under which You originally received the Covered Software,\nor under the terms of any subsequent version published by the license\nsteward.\n\n10.3. Modified Versions\n\nIf you create software not governed by this License, and you want to\ncreate a new license for such software, you may create and use a\nmodified version of this License if you rename the license and remove\nany references to the name of the license steward (except to note that\nsuch modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\nLicenses\n\nIf You choose to distribute Source Code Form that is Incompatible With\nSecondary Licenses under the terms of this version of the License, the\nnotice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n-------------------------------------------\n\n  This Source Code Form is subject to the terms of the Mozilla Public\n  License, v. 2.0. If a copy of the MPL was not distributed with this\n  file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular\nfile, then You may include the notice in a location (such as a LICENSE\nfile in a relevant directory) where a recipient would be likely to look\nfor such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n---------------------------------------------------------\n\n  This Source Code Form is \"Incompatible With Secondary Licenses\", as\n  defined by the Mozilla Public License, v. 2.0.\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/README.md",
    "content": "# go-sockaddr\n\n## `sockaddr` Library\n\nSocket address convenience functions for Go.  `go-sockaddr` is a convenience\nlibrary that makes doing the right thing with IP addresses easy.  `go-sockaddr`\nis loosely modeled after the UNIX `sockaddr_t` and creates a union of the family\nof `sockaddr_t` types (see below for an ascii diagram).  Library documentation\nis available\nat\n[https://godoc.org/github.com/hashicorp/go-sockaddr](https://godoc.org/github.com/hashicorp/go-sockaddr).\nThe primary intent of the library was to make it possible to define heuristics\nfor selecting the correct IP addresses when a configuration is evaluated at\nruntime.  See\nthe\n[docs](https://godoc.org/github.com/hashicorp/go-sockaddr),\n[`template` package](https://godoc.org/github.com/hashicorp/go-sockaddr/template),\ntests,\nand\n[CLI utility](https://github.com/hashicorp/go-sockaddr/tree/master/cmd/sockaddr)\nfor details and hints as to how to use this library.\n\nFor example, with this library it is possible to find an IP address that:\n\n* is attached to a default route\n  ([`GetDefaultInterfaces()`](https://godoc.org/github.com/hashicorp/go-sockaddr#GetDefaultInterfaces))\n* is contained within a CIDR block ([`IfByNetwork()`](https://godoc.org/github.com/hashicorp/go-sockaddr#IfByNetwork))\n* is an RFC1918 address\n  ([`IfByRFC(\"1918\")`](https://godoc.org/github.com/hashicorp/go-sockaddr#IfByRFC))\n* is ordered\n  ([`OrderedIfAddrBy(args)`](https://godoc.org/github.com/hashicorp/go-sockaddr#OrderedIfAddrBy) where\n  `args` includes, but is not limited\n  to,\n  [`AscIfType`](https://godoc.org/github.com/hashicorp/go-sockaddr#AscIfType),\n  [`AscNetworkSize`](https://godoc.org/github.com/hashicorp/go-sockaddr#AscNetworkSize))\n* excludes all IPv6 addresses\n  ([`IfByType(\"^(IPv4)$\")`](https://godoc.org/github.com/hashicorp/go-sockaddr#IfByType))\n* is larger than a `/32`\n  ([`IfByMaskSize(32)`](https://godoc.org/github.com/hashicorp/go-sockaddr#IfByMaskSize))\n* is not on a `down` interface\n  ([`ExcludeIfs(\"flags\", \"down\")`](https://godoc.org/github.com/hashicorp/go-sockaddr#ExcludeIfs))\n* preferences an IPv6 address over an IPv4 address\n  ([`SortIfByType()`](https://godoc.org/github.com/hashicorp/go-sockaddr#SortIfByType) +\n  [`ReverseIfAddrs()`](https://godoc.org/github.com/hashicorp/go-sockaddr#ReverseIfAddrs)); and\n* excludes any IP in RFC6890 address\n  ([`IfByRFC(\"6890\")`](https://godoc.org/github.com/hashicorp/go-sockaddr#IfByRFC))\n\nOr any combination or variation therein.\n\nThere are also a few simple helper functions such as `GetPublicIP` and\n`GetPrivateIP` which both return strings and select the first public or private\nIP address on the default interface, respectively.  Similarly, there is also a\nhelper function called `GetInterfaceIP` which returns the first usable IP\naddress on the named interface.\n\n## `sockaddr` CLI\n\nGiven the possible complexity of the `sockaddr` library, there is a CLI utility\nthat accompanies the library, also\ncalled\n[`sockaddr`](https://github.com/hashicorp/go-sockaddr/tree/master/cmd/sockaddr).\nThe\n[`sockaddr`](https://github.com/hashicorp/go-sockaddr/tree/master/cmd/sockaddr)\nutility exposes nearly all of the functionality of the library and can be used\neither as an administrative tool or testing tool.  To install\nthe\n[`sockaddr`](https://github.com/hashicorp/go-sockaddr/tree/master/cmd/sockaddr),\nrun:\n\n```text\n$ go get -u github.com/hashicorp/go-sockaddr/cmd/sockaddr\n```\n\nIf you're familiar with UNIX's `sockaddr` struct's, the following diagram\nmapping the C `sockaddr` (top) to `go-sockaddr` structs (bottom) and\ninterfaces will be helpful:\n\n```\n+-------------------------------------------------------+\n|                                                       |\n|                        sockaddr                       |\n|                        SockAddr                       |\n|                                                       |\n| +--------------+ +----------------------------------+ |\n| | sockaddr_un  | |                                  | |\n| | SockAddrUnix | |           sockaddr_in{,6}        | |\n| +--------------+ |                IPAddr            | |\n|                  |                                  | |\n|                  | +-------------+ +--------------+ | |\n|                  | | sockaddr_in | | sockaddr_in6 | | |\n|                  | |   IPv4Addr  | |   IPv6Addr   | | |\n|                  | +-------------+ +--------------+ | |\n|                  |                                  | |\n|                  +----------------------------------+ |\n|                                                       |\n+-------------------------------------------------------+\n```\n\n## Inspiration and Design\n\nThere were many subtle inspirations that led to this design, but the most direct\ninspiration for the filtering syntax was\nOpenBSD's\n[`pf.conf(5)`](https://www.freebsd.org/cgi/man.cgi?query=pf.conf&apropos=0&sektion=0&arch=default&format=html#PARAMETERS) firewall\nsyntax that lets you select the first IP address on a given named interface.\nThe original problem stemmed from:\n\n* needing to create immutable images using [Packer](https://www.packer.io) that\n  ran the [Consul](https://www.consul.io) process (Consul can only use one IP\n  address at a time);\n* images that may or may not have multiple interfaces or IP addresses at\n  runtime; and\n* we didn't want to rely on configuration management to render out the correct\n  IP address if the VM image was being used in an auto-scaling group.\n\nInstead we needed some way to codify a heuristic that would correctly select the\nright IP address but the input parameters were not known when the image was\ncreated.\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/doc.go",
    "content": "/*\nPackage sockaddr is a Go implementation of the UNIX socket family data types and\nrelated helper functions.\n*/\npackage sockaddr\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/ifaddr.go",
    "content": "package sockaddr\n\nimport \"strings\"\n\n// ifAddrAttrMap is a map of the IfAddr type-specific attributes.\nvar ifAddrAttrMap map[AttrName]func(IfAddr) string\nvar ifAddrAttrs []AttrName\n\nfunc init() {\n\tifAddrAttrInit()\n}\n\n// GetPrivateIP returns a string with a single IP address that is part of RFC\n// 6890 and has a default route.  If the system can't determine its IP address\n// or find an RFC 6890 IP address, an empty string will be returned instead.\n// This function is the `eval` equivalent of:\n//\n// ```\n// $ sockaddr eval -r '{{GetPrivateInterfaces | attr \"address\"}}'\n/// ```\nfunc GetPrivateIP() (string, error) {\n\tprivateIfs, err := GetPrivateInterfaces()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif len(privateIfs) < 1 {\n\t\treturn \"\", nil\n\t}\n\n\tifAddr := privateIfs[0]\n\tip := *ToIPAddr(ifAddr.SockAddr)\n\treturn ip.NetIP().String(), nil\n}\n\n// GetPrivateIPs returns a string with all IP addresses that are part of RFC\n// 6890 (regardless of whether or not there is a default route, unlike\n// GetPublicIP).  If the system can't find any RFC 6890 IP addresses, an empty\n// string will be returned instead.  This function is the `eval` equivalent of:\n//\n// ```\n// $ sockaddr eval -r '{{GetAllInterfaces | include \"RFC\" \"6890\" | join \"address\" \" \"}}'\n/// ```\nfunc GetPrivateIPs() (string, error) {\n\tifAddrs, err := GetAllInterfaces()\n\tif err != nil {\n\t\treturn \"\", err\n\t} else if len(ifAddrs) < 1 {\n\t\treturn \"\", nil\n\t}\n\n\tifAddrs, _ = FilterIfByType(ifAddrs, TypeIP)\n\tif len(ifAddrs) == 0 {\n\t\treturn \"\", nil\n\t}\n\n\tOrderedIfAddrBy(AscIfType, AscIfNetworkSize).Sort(ifAddrs)\n\n\tifAddrs, _, err = IfByRFC(\"6890\", ifAddrs)\n\tif err != nil {\n\t\treturn \"\", err\n\t} else if len(ifAddrs) == 0 {\n\t\treturn \"\", nil\n\t}\n\n\t_, ifAddrs, err = IfByRFC(ForwardingBlacklistRFC, ifAddrs)\n\tif err != nil {\n\t\treturn \"\", err\n\t} else if len(ifAddrs) == 0 {\n\t\treturn \"\", nil\n\t}\n\n\tips := make([]string, 0, len(ifAddrs))\n\tfor _, ifAddr := range ifAddrs {\n\t\tip := *ToIPAddr(ifAddr.SockAddr)\n\t\ts := ip.NetIP().String()\n\t\tips = append(ips, s)\n\t}\n\n\treturn strings.Join(ips, \" \"), nil\n}\n\n// GetPublicIP returns a string with a single IP address that is NOT part of RFC\n// 6890 and has a default route.  If the system can't determine its IP address\n// or find a non RFC 6890 IP address, an empty string will be returned instead.\n// This function is the `eval` equivalent of:\n//\n// ```\n// $ sockaddr eval -r '{{GetPublicInterfaces | attr \"address\"}}'\n/// ```\nfunc GetPublicIP() (string, error) {\n\tpublicIfs, err := GetPublicInterfaces()\n\tif err != nil {\n\t\treturn \"\", err\n\t} else if len(publicIfs) < 1 {\n\t\treturn \"\", nil\n\t}\n\n\tifAddr := publicIfs[0]\n\tip := *ToIPAddr(ifAddr.SockAddr)\n\treturn ip.NetIP().String(), nil\n}\n\n// GetPublicIPs returns a string with all IP addresses that are NOT part of RFC\n// 6890 (regardless of whether or not there is a default route, unlike\n// GetPublicIP).  If the system can't find any non RFC 6890 IP addresses, an\n// empty string will be returned instead.  This function is the `eval`\n// equivalent of:\n//\n// ```\n// $ sockaddr eval -r '{{GetAllInterfaces | exclude \"RFC\" \"6890\" | join \"address\" \" \"}}'\n/// ```\nfunc GetPublicIPs() (string, error) {\n\tifAddrs, err := GetAllInterfaces()\n\tif err != nil {\n\t\treturn \"\", err\n\t} else if len(ifAddrs) < 1 {\n\t\treturn \"\", nil\n\t}\n\n\tifAddrs, _ = FilterIfByType(ifAddrs, TypeIP)\n\tif len(ifAddrs) == 0 {\n\t\treturn \"\", nil\n\t}\n\n\tOrderedIfAddrBy(AscIfType, AscIfNetworkSize).Sort(ifAddrs)\n\n\t_, ifAddrs, err = IfByRFC(\"6890\", ifAddrs)\n\tif err != nil {\n\t\treturn \"\", err\n\t} else if len(ifAddrs) == 0 {\n\t\treturn \"\", nil\n\t}\n\n\tips := make([]string, 0, len(ifAddrs))\n\tfor _, ifAddr := range ifAddrs {\n\t\tip := *ToIPAddr(ifAddr.SockAddr)\n\t\ts := ip.NetIP().String()\n\t\tips = append(ips, s)\n\t}\n\n\treturn strings.Join(ips, \" \"), nil\n}\n\n// GetInterfaceIP returns a string with a single IP address sorted by the size\n// of the network (i.e. IP addresses with a smaller netmask, larger network\n// size, are sorted first).  This function is the `eval` equivalent of:\n//\n// ```\n// $ sockaddr eval -r '{{GetAllInterfaces | include \"name\" <<ARG>> | sort \"type,size\" | include \"flag\" \"forwardable\" | attr \"address\" }}'\n/// ```\nfunc GetInterfaceIP(namedIfRE string) (string, error) {\n\tifAddrs, err := GetAllInterfaces()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tifAddrs, _, err = IfByName(namedIfRE, ifAddrs)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tifAddrs, _, err = IfByFlag(\"forwardable\", ifAddrs)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tifAddrs, err = SortIfBy(\"+type,+size\", ifAddrs)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif len(ifAddrs) == 0 {\n\t\treturn \"\", err\n\t}\n\n\tip := ToIPAddr(ifAddrs[0].SockAddr)\n\tif ip == nil {\n\t\treturn \"\", err\n\t}\n\n\treturn IPAddrAttr(*ip, \"address\"), nil\n}\n\n// GetInterfaceIPs returns a string with all IPs, sorted by the size of the\n// network (i.e. IP addresses with a smaller netmask, larger network size, are\n// sorted first), on a named interface.  This function is the `eval` equivalent\n// of:\n//\n// ```\n// $ sockaddr eval -r '{{GetAllInterfaces | include \"name\" <<ARG>> | sort \"type,size\" | join \"address\" \" \"}}'\n/// ```\nfunc GetInterfaceIPs(namedIfRE string) (string, error) {\n\tifAddrs, err := GetAllInterfaces()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tifAddrs, _, err = IfByName(namedIfRE, ifAddrs)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tifAddrs, err = SortIfBy(\"+type,+size\", ifAddrs)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif len(ifAddrs) == 0 {\n\t\treturn \"\", err\n\t}\n\n\tips := make([]string, 0, len(ifAddrs))\n\tfor _, ifAddr := range ifAddrs {\n\t\tip := *ToIPAddr(ifAddr.SockAddr)\n\t\ts := ip.NetIP().String()\n\t\tips = append(ips, s)\n\t}\n\n\treturn strings.Join(ips, \" \"), nil\n}\n\n// IfAddrAttrs returns a list of attributes supported by the IfAddr type\nfunc IfAddrAttrs() []AttrName {\n\treturn ifAddrAttrs\n}\n\n// IfAddrAttr returns a string representation of an attribute for the given\n// IfAddr.\nfunc IfAddrAttr(ifAddr IfAddr, attrName AttrName) string {\n\tfn, found := ifAddrAttrMap[attrName]\n\tif !found {\n\t\treturn \"\"\n\t}\n\n\treturn fn(ifAddr)\n}\n\n// ifAddrAttrInit is called once at init()\nfunc ifAddrAttrInit() {\n\t// Sorted for human readability\n\tifAddrAttrs = []AttrName{\n\t\t\"flags\",\n\t\t\"name\",\n\t}\n\n\tifAddrAttrMap = map[AttrName]func(ifAddr IfAddr) string{\n\t\t\"flags\": func(ifAddr IfAddr) string {\n\t\t\treturn ifAddr.Interface.Flags.String()\n\t\t},\n\t\t\"name\": func(ifAddr IfAddr) string {\n\t\t\treturn ifAddr.Interface.Name\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/ifaddrs.go",
    "content": "package sockaddr\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math/big\"\n\t\"net\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nvar (\n\t// Centralize all regexps and regexp.Copy() where necessary.\n\tsignRE       *regexp.Regexp = regexp.MustCompile(`^[\\s]*[+-]`)\n\twhitespaceRE *regexp.Regexp = regexp.MustCompile(`[\\s]+`)\n\t// These regular expressions enable the deprecated parseDefaultIfNameWindows\n\t// and should be removed when those functions are.\n\tifNameRE *regexp.Regexp = regexp.MustCompile(`^(?:Ethernet|Wireless LAN) adapter ([^:]+):`)\n\tipAddrRE *regexp.Regexp = regexp.MustCompile(`^   IPv[46] Address\\. \\. \\. \\. \\. \\. \\. \\. \\. \\. \\. : ([^\\s]+)`)\n)\n\n// IfAddrs is a slice of IfAddr\ntype IfAddrs []IfAddr\n\nfunc (ifs IfAddrs) Len() int { return len(ifs) }\n\n// CmpIfFunc is the function signature that must be met to be used in the\n// OrderedIfAddrBy multiIfAddrSorter\ntype CmpIfAddrFunc func(p1, p2 *IfAddr) int\n\n// multiIfAddrSorter implements the Sort interface, sorting the IfAddrs within.\ntype multiIfAddrSorter struct {\n\tifAddrs IfAddrs\n\tcmp     []CmpIfAddrFunc\n}\n\n// Sort sorts the argument slice according to the Cmp functions passed to\n// OrderedIfAddrBy.\nfunc (ms *multiIfAddrSorter) Sort(ifAddrs IfAddrs) {\n\tms.ifAddrs = ifAddrs\n\tsort.Sort(ms)\n}\n\n// OrderedIfAddrBy sorts SockAddr by the list of sort function pointers.\nfunc OrderedIfAddrBy(cmpFuncs ...CmpIfAddrFunc) *multiIfAddrSorter {\n\treturn &multiIfAddrSorter{\n\t\tcmp: cmpFuncs,\n\t}\n}\n\n// Len is part of sort.Interface.\nfunc (ms *multiIfAddrSorter) Len() int {\n\treturn len(ms.ifAddrs)\n}\n\n// Less is part of sort.Interface. It is implemented by looping along the Cmp()\n// functions until it finds a comparison that is either less than or greater\n// than.  A return value of 0 defers sorting to the next function in the\n// multisorter (which means the results of sorting may leave the resutls in a\n// non-deterministic order).\nfunc (ms *multiIfAddrSorter) Less(i, j int) bool {\n\tp, q := &ms.ifAddrs[i], &ms.ifAddrs[j]\n\t// Try all but the last comparison.\n\tvar k int\n\tfor k = 0; k < len(ms.cmp)-1; k++ {\n\t\tcmp := ms.cmp[k]\n\t\tx := cmp(p, q)\n\t\tswitch x {\n\t\tcase -1:\n\t\t\t// p < q, so we have a decision.\n\t\t\treturn true\n\t\tcase 1:\n\t\t\t// p > q, so we have a decision.\n\t\t\treturn false\n\t\t}\n\t\t// p == q; try the next comparison.\n\t}\n\t// All comparisons to here said \"equal\", so just return whatever the\n\t// final comparison reports.\n\tswitch ms.cmp[k](p, q) {\n\tcase -1:\n\t\treturn true\n\tcase 1:\n\t\treturn false\n\tdefault:\n\t\t// Still a tie! Now what?\n\t\treturn false\n\t\tpanic(\"undefined sort order for remaining items in the list\")\n\t}\n}\n\n// Swap is part of sort.Interface.\nfunc (ms *multiIfAddrSorter) Swap(i, j int) {\n\tms.ifAddrs[i], ms.ifAddrs[j] = ms.ifAddrs[j], ms.ifAddrs[i]\n}\n\n// AscIfAddress is a sorting function to sort IfAddrs by their respective\n// address type.  Non-equal types are deferred in the sort.\nfunc AscIfAddress(p1Ptr, p2Ptr *IfAddr) int {\n\treturn AscAddress(&p1Ptr.SockAddr, &p2Ptr.SockAddr)\n}\n\n// AscIfDefault is a sorting function to sort IfAddrs by whether or not they\n// have a default route or not.  Non-equal types are deferred in the sort.\n//\n// FIXME: This is a particularly expensive sorting operation because of the\n// non-memoized calls to NewRouteInfo().  In an ideal world the routeInfo data\n// once at the start of the sort and pass it along as a context or by wrapping\n// the IfAddr type with this information (this would also solve the inability to\n// return errors and the possibility of failing silently).  Fortunately,\n// N*log(N) where N = 3 is only ~6.2 invocations.  Not ideal, but not worth\n// optimizing today.  The common case is this gets called once or twice.\n// Patches welcome.\nfunc AscIfDefault(p1Ptr, p2Ptr *IfAddr) int {\n\tri, err := NewRouteInfo()\n\tif err != nil {\n\t\treturn sortDeferDecision\n\t}\n\n\tdefaultIfName, err := ri.GetDefaultInterfaceName()\n\tif err != nil {\n\t\treturn sortDeferDecision\n\t}\n\n\tswitch {\n\tcase p1Ptr.Interface.Name == defaultIfName && p2Ptr.Interface.Name == defaultIfName:\n\t\treturn sortDeferDecision\n\tcase p1Ptr.Interface.Name == defaultIfName:\n\t\treturn sortReceiverBeforeArg\n\tcase p2Ptr.Interface.Name == defaultIfName:\n\t\treturn sortArgBeforeReceiver\n\tdefault:\n\t\treturn sortDeferDecision\n\t}\n}\n\n// AscIfName is a sorting function to sort IfAddrs by their interface names.\nfunc AscIfName(p1Ptr, p2Ptr *IfAddr) int {\n\treturn strings.Compare(p1Ptr.Name, p2Ptr.Name)\n}\n\n// AscIfNetworkSize is a sorting function to sort IfAddrs by their respective\n// network mask size.\nfunc AscIfNetworkSize(p1Ptr, p2Ptr *IfAddr) int {\n\treturn AscNetworkSize(&p1Ptr.SockAddr, &p2Ptr.SockAddr)\n}\n\n// AscIfPort is a sorting function to sort IfAddrs by their respective\n// port type.  Non-equal types are deferred in the sort.\nfunc AscIfPort(p1Ptr, p2Ptr *IfAddr) int {\n\treturn AscPort(&p1Ptr.SockAddr, &p2Ptr.SockAddr)\n}\n\n// AscIfPrivate is a sorting function to sort IfAddrs by \"private\" values before\n// \"public\" values.  Both IPv4 and IPv6 are compared against RFC6890 (RFC6890\n// includes, and is not limited to, RFC1918 and RFC6598 for IPv4, and IPv6\n// includes RFC4193).\nfunc AscIfPrivate(p1Ptr, p2Ptr *IfAddr) int {\n\treturn AscPrivate(&p1Ptr.SockAddr, &p2Ptr.SockAddr)\n}\n\n// AscIfType is a sorting function to sort IfAddrs by their respective address\n// type.  Non-equal types are deferred in the sort.\nfunc AscIfType(p1Ptr, p2Ptr *IfAddr) int {\n\treturn AscType(&p1Ptr.SockAddr, &p2Ptr.SockAddr)\n}\n\n// DescIfAddress is identical to AscIfAddress but reverse ordered.\nfunc DescIfAddress(p1Ptr, p2Ptr *IfAddr) int {\n\treturn -1 * AscAddress(&p1Ptr.SockAddr, &p2Ptr.SockAddr)\n}\n\n// DescIfDefault is identical to AscIfDefault but reverse ordered.\nfunc DescIfDefault(p1Ptr, p2Ptr *IfAddr) int {\n\treturn -1 * AscIfDefault(p1Ptr, p2Ptr)\n}\n\n// DescIfName is identical to AscIfName but reverse ordered.\nfunc DescIfName(p1Ptr, p2Ptr *IfAddr) int {\n\treturn -1 * strings.Compare(p1Ptr.Name, p2Ptr.Name)\n}\n\n// DescIfNetworkSize is identical to AscIfNetworkSize but reverse ordered.\nfunc DescIfNetworkSize(p1Ptr, p2Ptr *IfAddr) int {\n\treturn -1 * AscNetworkSize(&p1Ptr.SockAddr, &p2Ptr.SockAddr)\n}\n\n// DescIfPort is identical to AscIfPort but reverse ordered.\nfunc DescIfPort(p1Ptr, p2Ptr *IfAddr) int {\n\treturn -1 * AscPort(&p1Ptr.SockAddr, &p2Ptr.SockAddr)\n}\n\n// DescIfPrivate is identical to AscIfPrivate but reverse ordered.\nfunc DescIfPrivate(p1Ptr, p2Ptr *IfAddr) int {\n\treturn -1 * AscPrivate(&p1Ptr.SockAddr, &p2Ptr.SockAddr)\n}\n\n// DescIfType is identical to AscIfType but reverse ordered.\nfunc DescIfType(p1Ptr, p2Ptr *IfAddr) int {\n\treturn -1 * AscType(&p1Ptr.SockAddr, &p2Ptr.SockAddr)\n}\n\n// FilterIfByType filters IfAddrs and returns a list of the matching type\nfunc FilterIfByType(ifAddrs IfAddrs, type_ SockAddrType) (matchedIfs, excludedIfs IfAddrs) {\n\texcludedIfs = make(IfAddrs, 0, len(ifAddrs))\n\tmatchedIfs = make(IfAddrs, 0, len(ifAddrs))\n\n\tfor _, ifAddr := range ifAddrs {\n\t\tif ifAddr.SockAddr.Type()&type_ != 0 {\n\t\t\tmatchedIfs = append(matchedIfs, ifAddr)\n\t\t} else {\n\t\t\texcludedIfs = append(excludedIfs, ifAddr)\n\t\t}\n\t}\n\treturn matchedIfs, excludedIfs\n}\n\n// IfAttr forwards the selector to IfAttr.Attr() for resolution.  If there is\n// more than one IfAddr, only the first IfAddr is used.\nfunc IfAttr(selectorName string, ifAddr IfAddr) (string, error) {\n\tattrName := AttrName(strings.ToLower(selectorName))\n\tattrVal, err := ifAddr.Attr(attrName)\n\treturn attrVal, err\n}\n\n// IfAttrs forwards the selector to IfAttrs.Attr() for resolution.  If there is\n// more than one IfAddr, only the first IfAddr is used.\nfunc IfAttrs(selectorName string, ifAddrs IfAddrs) (string, error) {\n\tif len(ifAddrs) == 0 {\n\t\treturn \"\", nil\n\t}\n\n\tattrName := AttrName(strings.ToLower(selectorName))\n\tattrVal, err := ifAddrs[0].Attr(attrName)\n\treturn attrVal, err\n}\n\n// GetAllInterfaces iterates over all available network interfaces and finds all\n// available IP addresses on each interface and converts them to\n// sockaddr.IPAddrs, and returning the result as an array of IfAddr.\nfunc GetAllInterfaces() (IfAddrs, error) {\n\tifs, err := net.Interfaces()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tifAddrs := make(IfAddrs, 0, len(ifs))\n\tfor _, intf := range ifs {\n\t\taddrs, err := intf.Addrs()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tfor _, addr := range addrs {\n\t\t\tvar ipAddr IPAddr\n\t\t\tipAddr, err = NewIPAddr(addr.String())\n\t\t\tif err != nil {\n\t\t\t\treturn IfAddrs{}, fmt.Errorf(\"unable to create an IP address from %q\", addr.String())\n\t\t\t}\n\n\t\t\tifAddr := IfAddr{\n\t\t\t\tSockAddr:  ipAddr,\n\t\t\t\tInterface: intf,\n\t\t\t}\n\t\t\tifAddrs = append(ifAddrs, ifAddr)\n\t\t}\n\t}\n\n\treturn ifAddrs, nil\n}\n\n// GetDefaultInterfaces returns IfAddrs of the addresses attached to the default\n// route.\nfunc GetDefaultInterfaces() (IfAddrs, error) {\n\tri, err := NewRouteInfo()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdefaultIfName, err := ri.GetDefaultInterfaceName()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar defaultIfs, ifAddrs IfAddrs\n\tifAddrs, err = GetAllInterfaces()\n\tfor _, ifAddr := range ifAddrs {\n\t\tif ifAddr.Name == defaultIfName {\n\t\t\tdefaultIfs = append(defaultIfs, ifAddr)\n\t\t}\n\t}\n\n\treturn defaultIfs, nil\n}\n\n// GetPrivateInterfaces returns an IfAddrs that are part of RFC 6890 and have a\n// default route.  If the system can't determine its IP address or find an RFC\n// 6890 IP address, an empty IfAddrs will be returned instead.  This function is\n// the `eval` equivalent of:\n//\n// ```\n// $ sockaddr eval -r '{{GetAllInterfaces | include \"type\" \"ip\" | include \"flags\" \"forwardable\" | include \"flags\" \"up\" | sort \"default,type,size\" | include \"RFC\" \"6890\" }}'\n/// ```\nfunc GetPrivateInterfaces() (IfAddrs, error) {\n\tprivateIfs, err := GetAllInterfaces()\n\tif err != nil {\n\t\treturn IfAddrs{}, err\n\t}\n\tif len(privateIfs) == 0 {\n\t\treturn IfAddrs{}, nil\n\t}\n\n\tprivateIfs, _ = FilterIfByType(privateIfs, TypeIP)\n\tif len(privateIfs) == 0 {\n\t\treturn IfAddrs{}, nil\n\t}\n\n\tprivateIfs, _, err = IfByFlag(\"forwardable\", privateIfs)\n\tif err != nil {\n\t\treturn IfAddrs{}, err\n\t}\n\n\tprivateIfs, _, err = IfByFlag(\"up\", privateIfs)\n\tif err != nil {\n\t\treturn IfAddrs{}, err\n\t}\n\n\tif len(privateIfs) == 0 {\n\t\treturn IfAddrs{}, nil\n\t}\n\n\tOrderedIfAddrBy(AscIfDefault, AscIfType, AscIfNetworkSize).Sort(privateIfs)\n\n\tprivateIfs, _, err = IfByRFC(\"6890\", privateIfs)\n\tif err != nil {\n\t\treturn IfAddrs{}, err\n\t} else if len(privateIfs) == 0 {\n\t\treturn IfAddrs{}, nil\n\t}\n\n\treturn privateIfs, nil\n}\n\n// GetPublicInterfaces returns an IfAddrs that are NOT part of RFC 6890 and has a\n// default route.  If the system can't determine its IP address or find a non\n// RFC 6890 IP address, an empty IfAddrs will be returned instead.  This\n// function is the `eval` equivalent of:\n//\n// ```\n// $ sockaddr eval -r '{{GetAllInterfaces | include \"type\" \"ip\" | include \"flags\" \"forwardable\" | include \"flags\" \"up\" | sort \"default,type,size\" | exclude \"RFC\" \"6890\" }}'\n/// ```\nfunc GetPublicInterfaces() (IfAddrs, error) {\n\tpublicIfs, err := GetAllInterfaces()\n\tif err != nil {\n\t\treturn IfAddrs{}, err\n\t}\n\tif len(publicIfs) == 0 {\n\t\treturn IfAddrs{}, nil\n\t}\n\n\tpublicIfs, _ = FilterIfByType(publicIfs, TypeIP)\n\tif len(publicIfs) == 0 {\n\t\treturn IfAddrs{}, nil\n\t}\n\n\tpublicIfs, _, err = IfByFlag(\"forwardable\", publicIfs)\n\tif err != nil {\n\t\treturn IfAddrs{}, err\n\t}\n\n\tpublicIfs, _, err = IfByFlag(\"up\", publicIfs)\n\tif err != nil {\n\t\treturn IfAddrs{}, err\n\t}\n\n\tif len(publicIfs) == 0 {\n\t\treturn IfAddrs{}, nil\n\t}\n\n\tOrderedIfAddrBy(AscIfDefault, AscIfType, AscIfNetworkSize).Sort(publicIfs)\n\n\t_, publicIfs, err = IfByRFC(\"6890\", publicIfs)\n\tif err != nil {\n\t\treturn IfAddrs{}, err\n\t} else if len(publicIfs) == 0 {\n\t\treturn IfAddrs{}, nil\n\t}\n\n\treturn publicIfs, nil\n}\n\n// IfByAddress returns a list of matched and non-matched IfAddrs, or an error if\n// the regexp fails to compile.\nfunc IfByAddress(inputRe string, ifAddrs IfAddrs) (matched, remainder IfAddrs, err error) {\n\tre, err := regexp.Compile(inputRe)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"Unable to compile address regexp %+q: %v\", inputRe, err)\n\t}\n\n\tmatchedAddrs := make(IfAddrs, 0, len(ifAddrs))\n\texcludedAddrs := make(IfAddrs, 0, len(ifAddrs))\n\tfor _, addr := range ifAddrs {\n\t\tif re.MatchString(addr.SockAddr.String()) {\n\t\t\tmatchedAddrs = append(matchedAddrs, addr)\n\t\t} else {\n\t\t\texcludedAddrs = append(excludedAddrs, addr)\n\t\t}\n\t}\n\n\treturn matchedAddrs, excludedAddrs, nil\n}\n\n// IfByName returns a list of matched and non-matched IfAddrs, or an error if\n// the regexp fails to compile.\nfunc IfByName(inputRe string, ifAddrs IfAddrs) (matched, remainder IfAddrs, err error) {\n\tre, err := regexp.Compile(inputRe)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"Unable to compile name regexp %+q: %v\", inputRe, err)\n\t}\n\n\tmatchedAddrs := make(IfAddrs, 0, len(ifAddrs))\n\texcludedAddrs := make(IfAddrs, 0, len(ifAddrs))\n\tfor _, addr := range ifAddrs {\n\t\tif re.MatchString(addr.Name) {\n\t\t\tmatchedAddrs = append(matchedAddrs, addr)\n\t\t} else {\n\t\t\texcludedAddrs = append(excludedAddrs, addr)\n\t\t}\n\t}\n\n\treturn matchedAddrs, excludedAddrs, nil\n}\n\n// IfByPort returns a list of matched and non-matched IfAddrs, or an error if\n// the regexp fails to compile.\nfunc IfByPort(inputRe string, ifAddrs IfAddrs) (matchedIfs, excludedIfs IfAddrs, err error) {\n\tre, err := regexp.Compile(inputRe)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"Unable to compile port regexp %+q: %v\", inputRe, err)\n\t}\n\n\tipIfs, nonIfs := FilterIfByType(ifAddrs, TypeIP)\n\tmatchedIfs = make(IfAddrs, 0, len(ipIfs))\n\texcludedIfs = append(IfAddrs(nil), nonIfs...)\n\tfor _, addr := range ipIfs {\n\t\tipAddr := ToIPAddr(addr.SockAddr)\n\t\tif ipAddr == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tport := strconv.FormatInt(int64((*ipAddr).IPPort()), 10)\n\t\tif re.MatchString(port) {\n\t\t\tmatchedIfs = append(matchedIfs, addr)\n\t\t} else {\n\t\t\texcludedIfs = append(excludedIfs, addr)\n\t\t}\n\t}\n\n\treturn matchedIfs, excludedIfs, nil\n}\n\n// IfByRFC returns a list of matched and non-matched IfAddrs that contain the\n// relevant RFC-specified traits.\nfunc IfByRFC(selectorParam string, ifAddrs IfAddrs) (matched, remainder IfAddrs, err error) {\n\tinputRFC, err := strconv.ParseUint(selectorParam, 10, 64)\n\tif err != nil {\n\t\treturn IfAddrs{}, IfAddrs{}, fmt.Errorf(\"unable to parse RFC number %q: %v\", selectorParam, err)\n\t}\n\n\tmatchedIfAddrs := make(IfAddrs, 0, len(ifAddrs))\n\tremainingIfAddrs := make(IfAddrs, 0, len(ifAddrs))\n\n\trfcNetMap := KnownRFCs()\n\trfcNets, ok := rfcNetMap[uint(inputRFC)]\n\tif !ok {\n\t\treturn nil, nil, fmt.Errorf(\"unsupported RFC %d\", inputRFC)\n\t}\n\n\tfor _, ifAddr := range ifAddrs {\n\t\tvar contained bool\n\t\tfor _, rfcNet := range rfcNets {\n\t\t\tif rfcNet.Contains(ifAddr.SockAddr) {\n\t\t\t\tmatchedIfAddrs = append(matchedIfAddrs, ifAddr)\n\t\t\t\tcontained = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !contained {\n\t\t\tremainingIfAddrs = append(remainingIfAddrs, ifAddr)\n\t\t}\n\t}\n\n\treturn matchedIfAddrs, remainingIfAddrs, nil\n}\n\n// IfByRFCs returns a list of matched and non-matched IfAddrs that contain the\n// relevant RFC-specified traits.  Multiple RFCs can be specified and separated\n// by the `|` symbol.  No protection is taken to ensure an IfAddr does not end\n// up in both the included and excluded list.\nfunc IfByRFCs(selectorParam string, ifAddrs IfAddrs) (matched, remainder IfAddrs, err error) {\n\tvar includedIfs, excludedIfs IfAddrs\n\tfor _, rfcStr := range strings.Split(selectorParam, \"|\") {\n\t\tincludedRFCIfs, excludedRFCIfs, err := IfByRFC(rfcStr, ifAddrs)\n\t\tif err != nil {\n\t\t\treturn IfAddrs{}, IfAddrs{}, fmt.Errorf(\"unable to lookup RFC number %q: %v\", rfcStr, err)\n\t\t}\n\t\tincludedIfs = append(includedIfs, includedRFCIfs...)\n\t\texcludedIfs = append(excludedIfs, excludedRFCIfs...)\n\t}\n\n\treturn includedIfs, excludedIfs, nil\n}\n\n// IfByMaskSize returns a list of matched and non-matched IfAddrs that have the\n// matching mask size.\nfunc IfByMaskSize(selectorParam string, ifAddrs IfAddrs) (matchedIfs, excludedIfs IfAddrs, err error) {\n\tmaskSize, err := strconv.ParseUint(selectorParam, 10, 64)\n\tif err != nil {\n\t\treturn IfAddrs{}, IfAddrs{}, fmt.Errorf(\"invalid exclude size argument (%q): %v\", selectorParam, err)\n\t}\n\n\tipIfs, nonIfs := FilterIfByType(ifAddrs, TypeIP)\n\tmatchedIfs = make(IfAddrs, 0, len(ipIfs))\n\texcludedIfs = append(IfAddrs(nil), nonIfs...)\n\tfor _, addr := range ipIfs {\n\t\tipAddr := ToIPAddr(addr.SockAddr)\n\t\tif ipAddr == nil {\n\t\t\treturn IfAddrs{}, IfAddrs{}, fmt.Errorf(\"unable to filter mask sizes on non-IP type %s: %v\", addr.SockAddr.Type().String(), addr.SockAddr.String())\n\t\t}\n\n\t\tswitch {\n\t\tcase (*ipAddr).Type()&TypeIPv4 != 0 && maskSize > 32:\n\t\t\treturn IfAddrs{}, IfAddrs{}, fmt.Errorf(\"mask size out of bounds for IPv4 address: %d\", maskSize)\n\t\tcase (*ipAddr).Type()&TypeIPv6 != 0 && maskSize > 128:\n\t\t\treturn IfAddrs{}, IfAddrs{}, fmt.Errorf(\"mask size out of bounds for IPv6 address: %d\", maskSize)\n\t\t}\n\n\t\tif (*ipAddr).Maskbits() == int(maskSize) {\n\t\t\tmatchedIfs = append(matchedIfs, addr)\n\t\t} else {\n\t\t\texcludedIfs = append(excludedIfs, addr)\n\t\t}\n\t}\n\n\treturn matchedIfs, excludedIfs, nil\n}\n\n// IfByType returns a list of matching and non-matching IfAddr that match the\n// specified type.  For instance:\n//\n// include \"type\" \"IPv4,IPv6\"\n//\n// will include any IfAddrs that is either an IPv4 or IPv6 address.  Any\n// addresses on those interfaces that don't match will be included in the\n// remainder results.\nfunc IfByType(inputTypes string, ifAddrs IfAddrs) (matched, remainder IfAddrs, err error) {\n\tmatchingIfAddrs := make(IfAddrs, 0, len(ifAddrs))\n\tremainingIfAddrs := make(IfAddrs, 0, len(ifAddrs))\n\n\tifTypes := strings.Split(strings.ToLower(inputTypes), \"|\")\n\tfor _, ifType := range ifTypes {\n\t\tswitch ifType {\n\t\tcase \"ip\", \"ipv4\", \"ipv6\", \"unix\":\n\t\t\t// Valid types\n\t\tdefault:\n\t\t\treturn nil, nil, fmt.Errorf(\"unsupported type %q %q\", ifType, inputTypes)\n\t\t}\n\t}\n\n\tfor _, ifAddr := range ifAddrs {\n\t\tfor _, ifType := range ifTypes {\n\t\t\tvar matched bool\n\t\t\tswitch {\n\t\t\tcase ifType == \"ip\" && ifAddr.SockAddr.Type()&TypeIP != 0:\n\t\t\t\tmatched = true\n\t\t\tcase ifType == \"ipv4\" && ifAddr.SockAddr.Type()&TypeIPv4 != 0:\n\t\t\t\tmatched = true\n\t\t\tcase ifType == \"ipv6\" && ifAddr.SockAddr.Type()&TypeIPv6 != 0:\n\t\t\t\tmatched = true\n\t\t\tcase ifType == \"unix\" && ifAddr.SockAddr.Type()&TypeUnix != 0:\n\t\t\t\tmatched = true\n\t\t\t}\n\n\t\t\tif matched {\n\t\t\t\tmatchingIfAddrs = append(matchingIfAddrs, ifAddr)\n\t\t\t} else {\n\t\t\t\tremainingIfAddrs = append(remainingIfAddrs, ifAddr)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn matchingIfAddrs, remainingIfAddrs, nil\n}\n\n// IfByFlag returns a list of matching and non-matching IfAddrs that match the\n// specified type.  For instance:\n//\n// include \"flag\" \"up,broadcast\"\n//\n// will include any IfAddrs that have both the \"up\" and \"broadcast\" flags set.\n// Any addresses on those interfaces that don't match will be omitted from the\n// results.\nfunc IfByFlag(inputFlags string, ifAddrs IfAddrs) (matched, remainder IfAddrs, err error) {\n\tmatchedAddrs := make(IfAddrs, 0, len(ifAddrs))\n\texcludedAddrs := make(IfAddrs, 0, len(ifAddrs))\n\n\tvar wantForwardable,\n\t\twantGlobalUnicast,\n\t\twantInterfaceLocalMulticast,\n\t\twantLinkLocalMulticast,\n\t\twantLinkLocalUnicast,\n\t\twantLoopback,\n\t\twantMulticast,\n\t\twantUnspecified bool\n\tvar ifFlags net.Flags\n\tvar checkFlags, checkAttrs bool\n\tfor _, flagName := range strings.Split(strings.ToLower(inputFlags), \"|\") {\n\t\tswitch flagName {\n\t\tcase \"broadcast\":\n\t\t\tcheckFlags = true\n\t\t\tifFlags = ifFlags | net.FlagBroadcast\n\t\tcase \"down\":\n\t\t\tcheckFlags = true\n\t\t\tifFlags = (ifFlags &^ net.FlagUp)\n\t\tcase \"forwardable\":\n\t\t\tcheckAttrs = true\n\t\t\twantForwardable = true\n\t\tcase \"global unicast\":\n\t\t\tcheckAttrs = true\n\t\t\twantGlobalUnicast = true\n\t\tcase \"interface-local multicast\":\n\t\t\tcheckAttrs = true\n\t\t\twantInterfaceLocalMulticast = true\n\t\tcase \"link-local multicast\":\n\t\t\tcheckAttrs = true\n\t\t\twantLinkLocalMulticast = true\n\t\tcase \"link-local unicast\":\n\t\t\tcheckAttrs = true\n\t\t\twantLinkLocalUnicast = true\n\t\tcase \"loopback\":\n\t\t\tcheckAttrs = true\n\t\t\tcheckFlags = true\n\t\t\tifFlags = ifFlags | net.FlagLoopback\n\t\t\twantLoopback = true\n\t\tcase \"multicast\":\n\t\t\tcheckAttrs = true\n\t\t\tcheckFlags = true\n\t\t\tifFlags = ifFlags | net.FlagMulticast\n\t\t\twantMulticast = true\n\t\tcase \"point-to-point\":\n\t\t\tcheckFlags = true\n\t\t\tifFlags = ifFlags | net.FlagPointToPoint\n\t\tcase \"unspecified\":\n\t\t\tcheckAttrs = true\n\t\t\twantUnspecified = true\n\t\tcase \"up\":\n\t\t\tcheckFlags = true\n\t\t\tifFlags = ifFlags | net.FlagUp\n\t\tdefault:\n\t\t\treturn nil, nil, fmt.Errorf(\"Unknown interface flag: %+q\", flagName)\n\t\t}\n\t}\n\n\tfor _, ifAddr := range ifAddrs {\n\t\tvar matched bool\n\t\tif checkFlags && ifAddr.Interface.Flags&ifFlags == ifFlags {\n\t\t\tmatched = true\n\t\t}\n\t\tif checkAttrs {\n\t\t\tif ip := ToIPAddr(ifAddr.SockAddr); ip != nil {\n\t\t\t\tnetIP := (*ip).NetIP()\n\t\t\t\tswitch {\n\t\t\t\tcase wantGlobalUnicast && netIP.IsGlobalUnicast():\n\t\t\t\t\tmatched = true\n\t\t\t\tcase wantInterfaceLocalMulticast && netIP.IsInterfaceLocalMulticast():\n\t\t\t\t\tmatched = true\n\t\t\t\tcase wantLinkLocalMulticast && netIP.IsLinkLocalMulticast():\n\t\t\t\t\tmatched = true\n\t\t\t\tcase wantLinkLocalUnicast && netIP.IsLinkLocalUnicast():\n\t\t\t\t\tmatched = true\n\t\t\t\tcase wantLoopback && netIP.IsLoopback():\n\t\t\t\t\tmatched = true\n\t\t\t\tcase wantMulticast && netIP.IsMulticast():\n\t\t\t\t\tmatched = true\n\t\t\t\tcase wantUnspecified && netIP.IsUnspecified():\n\t\t\t\t\tmatched = true\n\t\t\t\tcase wantForwardable && !IsRFC(ForwardingBlacklist, ifAddr.SockAddr):\n\t\t\t\t\tmatched = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif matched {\n\t\t\tmatchedAddrs = append(matchedAddrs, ifAddr)\n\t\t} else {\n\t\t\texcludedAddrs = append(excludedAddrs, ifAddr)\n\t\t}\n\t}\n\treturn matchedAddrs, excludedAddrs, nil\n}\n\n// IfByNetwork returns an IfAddrs that are equal to or included within the\n// network passed in by selector.\nfunc IfByNetwork(selectorParam string, inputIfAddrs IfAddrs) (IfAddrs, IfAddrs, error) {\n\tvar includedIfs, excludedIfs IfAddrs\n\tfor _, netStr := range strings.Split(selectorParam, \"|\") {\n\t\tnetAddr, err := NewIPAddr(netStr)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"unable to create an IP address from %+q: %v\", netStr, err)\n\t\t}\n\n\t\tfor _, ifAddr := range inputIfAddrs {\n\t\t\tif netAddr.Contains(ifAddr.SockAddr) {\n\t\t\t\tincludedIfs = append(includedIfs, ifAddr)\n\t\t\t} else {\n\t\t\t\texcludedIfs = append(excludedIfs, ifAddr)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn includedIfs, excludedIfs, nil\n}\n\n// IfAddrMath will return a new IfAddr struct with a mutated value.\nfunc IfAddrMath(operation, value string, inputIfAddr IfAddr) (IfAddr, error) {\n\t// Regexp used to enforce the sign being a required part of the grammar for\n\t// some values.\n\tsignRe := signRE.Copy()\n\n\tswitch strings.ToLower(operation) {\n\tcase \"address\":\n\t\t// \"address\" operates on the IP address and is allowed to overflow or\n\t\t// underflow networks, however it will wrap along the underlying address's\n\t\t// underlying type.\n\n\t\tif !signRe.MatchString(value) {\n\t\t\treturn IfAddr{}, fmt.Errorf(\"sign (+/-) is required for operation %q\", operation)\n\t\t}\n\n\t\tswitch sockType := inputIfAddr.SockAddr.Type(); sockType {\n\t\tcase TypeIPv4:\n\t\t\t// 33 == Accept any uint32 value\n\t\t\t// TODO(seanc@): Add the ability to parse hex\n\t\t\ti, err := strconv.ParseInt(value, 10, 33)\n\t\t\tif err != nil {\n\t\t\t\treturn IfAddr{}, fmt.Errorf(\"unable to convert %q to int for operation %q: %v\", value, operation, err)\n\t\t\t}\n\n\t\t\tipv4 := *ToIPv4Addr(inputIfAddr.SockAddr)\n\t\t\tipv4Uint32 := uint32(ipv4.Address)\n\t\t\tipv4Uint32 += uint32(i)\n\t\t\treturn IfAddr{\n\t\t\t\tSockAddr: IPv4Addr{\n\t\t\t\t\tAddress: IPv4Address(ipv4Uint32),\n\t\t\t\t\tMask:    ipv4.Mask,\n\t\t\t\t},\n\t\t\t\tInterface: inputIfAddr.Interface,\n\t\t\t}, nil\n\t\tcase TypeIPv6:\n\t\t\t// 64 == Accept any int32 value\n\t\t\t// TODO(seanc@): Add the ability to parse hex.  Also parse a bignum int.\n\t\t\ti, err := strconv.ParseInt(value, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn IfAddr{}, fmt.Errorf(\"unable to convert %q to int for operation %q: %v\", value, operation, err)\n\t\t\t}\n\n\t\t\tipv6 := *ToIPv6Addr(inputIfAddr.SockAddr)\n\t\t\tipv6BigIntA := new(big.Int)\n\t\t\tipv6BigIntA.Set(ipv6.Address)\n\t\t\tipv6BigIntB := big.NewInt(i)\n\n\t\t\tipv6Addr := ipv6BigIntA.Add(ipv6BigIntA, ipv6BigIntB)\n\t\t\tipv6Addr.And(ipv6Addr, ipv6HostMask)\n\n\t\t\treturn IfAddr{\n\t\t\t\tSockAddr: IPv6Addr{\n\t\t\t\t\tAddress: IPv6Address(ipv6Addr),\n\t\t\t\t\tMask:    ipv6.Mask,\n\t\t\t\t},\n\t\t\t\tInterface: inputIfAddr.Interface,\n\t\t\t}, nil\n\t\tdefault:\n\t\t\treturn IfAddr{}, fmt.Errorf(\"unsupported type for operation %q: %T\", operation, sockType)\n\t\t}\n\tcase \"network\":\n\t\t// \"network\" operates on the network address.  Positive values start at the\n\t\t// network address and negative values wrap at the network address, which\n\t\t// means a \"-1\" value on a network will be the broadcast address after\n\t\t// wrapping is applied.\n\n\t\tif !signRe.MatchString(value) {\n\t\t\treturn IfAddr{}, fmt.Errorf(\"sign (+/-) is required for operation %q\", operation)\n\t\t}\n\n\t\tswitch sockType := inputIfAddr.SockAddr.Type(); sockType {\n\t\tcase TypeIPv4:\n\t\t\t// 33 == Accept any uint32 value\n\t\t\t// TODO(seanc@): Add the ability to parse hex\n\t\t\ti, err := strconv.ParseInt(value, 10, 33)\n\t\t\tif err != nil {\n\t\t\t\treturn IfAddr{}, fmt.Errorf(\"unable to convert %q to int for operation %q: %v\", value, operation, err)\n\t\t\t}\n\n\t\t\tipv4 := *ToIPv4Addr(inputIfAddr.SockAddr)\n\t\t\tipv4Uint32 := uint32(ipv4.NetworkAddress())\n\n\t\t\t// Wrap along network mask boundaries.  EZ-mode wrapping made possible by\n\t\t\t// use of int64 vs a uint.\n\t\t\tvar wrappedMask int64\n\t\t\tif i >= 0 {\n\t\t\t\twrappedMask = i\n\t\t\t} else {\n\t\t\t\twrappedMask = 1 + i + int64(^uint32(ipv4.Mask))\n\t\t\t}\n\n\t\t\tipv4Uint32 = ipv4Uint32 + (uint32(wrappedMask) &^ uint32(ipv4.Mask))\n\n\t\t\treturn IfAddr{\n\t\t\t\tSockAddr: IPv4Addr{\n\t\t\t\t\tAddress: IPv4Address(ipv4Uint32),\n\t\t\t\t\tMask:    ipv4.Mask,\n\t\t\t\t},\n\t\t\t\tInterface: inputIfAddr.Interface,\n\t\t\t}, nil\n\t\tcase TypeIPv6:\n\t\t\t// 64 == Accept any int32 value\n\t\t\t// TODO(seanc@): Add the ability to parse hex.  Also parse a bignum int.\n\t\t\ti, err := strconv.ParseInt(value, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn IfAddr{}, fmt.Errorf(\"unable to convert %q to int for operation %q: %v\", value, operation, err)\n\t\t\t}\n\n\t\t\tipv6 := *ToIPv6Addr(inputIfAddr.SockAddr)\n\t\t\tipv6BigInt := new(big.Int)\n\t\t\tipv6BigInt.Set(ipv6.NetworkAddress())\n\n\t\t\tmask := new(big.Int)\n\t\t\tmask.Set(ipv6.Mask)\n\t\t\tif i > 0 {\n\t\t\t\twrappedMask := new(big.Int)\n\t\t\t\twrappedMask.SetInt64(i)\n\n\t\t\t\twrappedMask.AndNot(wrappedMask, mask)\n\t\t\t\tipv6BigInt.Add(ipv6BigInt, wrappedMask)\n\t\t\t} else {\n\t\t\t\t// Mask off any bits that exceed the network size.  Subtract the\n\t\t\t\t// wrappedMask from the last usable - 1\n\t\t\t\twrappedMask := new(big.Int)\n\t\t\t\twrappedMask.SetInt64(-1 * i)\n\t\t\t\twrappedMask.Sub(wrappedMask, big.NewInt(1))\n\n\t\t\t\twrappedMask.AndNot(wrappedMask, mask)\n\n\t\t\t\tlastUsable := new(big.Int)\n\t\t\t\tlastUsable.Set(ipv6.LastUsable().(IPv6Addr).Address)\n\n\t\t\t\tipv6BigInt = lastUsable.Sub(lastUsable, wrappedMask)\n\t\t\t}\n\n\t\t\treturn IfAddr{\n\t\t\t\tSockAddr: IPv6Addr{\n\t\t\t\t\tAddress: IPv6Address(ipv6BigInt),\n\t\t\t\t\tMask:    ipv6.Mask,\n\t\t\t\t},\n\t\t\t\tInterface: inputIfAddr.Interface,\n\t\t\t}, nil\n\t\tdefault:\n\t\t\treturn IfAddr{}, fmt.Errorf(\"unsupported type for operation %q: %T\", operation, sockType)\n\t\t}\n\tcase \"mask\":\n\t\t// \"mask\" operates on the IP address and returns the IP address on\n\t\t// which the given integer mask has been applied. If the applied mask\n\t\t// corresponds to a larger network than the mask of the IP address,\n\t\t// the latter will be replaced by the former.\n\t\tswitch sockType := inputIfAddr.SockAddr.Type(); sockType {\n\t\tcase TypeIPv4:\n\t\t\ti, err := strconv.ParseUint(value, 10, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn IfAddr{}, fmt.Errorf(\"unable to convert %q to int for operation %q: %v\", value, operation, err)\n\t\t\t}\n\n\t\t\tif i > 32 {\n\t\t\t\treturn IfAddr{}, fmt.Errorf(\"parameter for operation %q on ipv4 addresses must be between 0 and 32\", operation)\n\t\t\t}\n\n\t\t\tipv4 := *ToIPv4Addr(inputIfAddr.SockAddr)\n\n\t\t\tipv4Mask := net.CIDRMask(int(i), 32)\n\t\t\tipv4MaskUint32 := binary.BigEndian.Uint32(ipv4Mask)\n\n\t\t\tmaskedIpv4 := ipv4.NetIP().Mask(ipv4Mask)\n\t\t\tmaskedIpv4Uint32 := binary.BigEndian.Uint32(maskedIpv4)\n\n\t\t\tmaskedIpv4MaskUint32 := uint32(ipv4.Mask)\n\n\t\t\tif ipv4MaskUint32 < maskedIpv4MaskUint32 {\n\t\t\t\tmaskedIpv4MaskUint32 = ipv4MaskUint32\n\t\t\t}\n\n\t\t\treturn IfAddr{\n\t\t\t\tSockAddr: IPv4Addr{\n\t\t\t\t\tAddress: IPv4Address(maskedIpv4Uint32),\n\t\t\t\t\tMask:    IPv4Mask(maskedIpv4MaskUint32),\n\t\t\t\t},\n\t\t\t\tInterface: inputIfAddr.Interface,\n\t\t\t}, nil\n\t\tcase TypeIPv6:\n\t\t\ti, err := strconv.ParseUint(value, 10, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn IfAddr{}, fmt.Errorf(\"unable to convert %q to int for operation %q: %v\", value, operation, err)\n\t\t\t}\n\n\t\t\tif i > 128 {\n\t\t\t\treturn IfAddr{}, fmt.Errorf(\"parameter for operation %q on ipv6 addresses must be between 0 and 64\", operation)\n\t\t\t}\n\n\t\t\tipv6 := *ToIPv6Addr(inputIfAddr.SockAddr)\n\n\t\t\tipv6Mask := net.CIDRMask(int(i), 128)\n\t\t\tipv6MaskBigInt := new(big.Int)\n\t\t\tipv6MaskBigInt.SetBytes(ipv6Mask)\n\n\t\t\tmaskedIpv6 := ipv6.NetIP().Mask(ipv6Mask)\n\t\t\tmaskedIpv6BigInt := new(big.Int)\n\t\t\tmaskedIpv6BigInt.SetBytes(maskedIpv6)\n\n\t\t\tmaskedIpv6MaskBigInt := new(big.Int)\n\t\t\tmaskedIpv6MaskBigInt.Set(ipv6.Mask)\n\n\t\t\tif ipv6MaskBigInt.Cmp(maskedIpv6MaskBigInt) == -1 {\n\t\t\t\tmaskedIpv6MaskBigInt = ipv6MaskBigInt\n\t\t\t}\n\n\t\t\treturn IfAddr{\n\t\t\t\tSockAddr: IPv6Addr{\n\t\t\t\t\tAddress: IPv6Address(maskedIpv6BigInt),\n\t\t\t\t\tMask:    IPv6Mask(maskedIpv6MaskBigInt),\n\t\t\t\t},\n\t\t\t\tInterface: inputIfAddr.Interface,\n\t\t\t}, nil\n\t\tdefault:\n\t\t\treturn IfAddr{}, fmt.Errorf(\"unsupported type for operation %q: %T\", operation, sockType)\n\t\t}\n\tdefault:\n\t\treturn IfAddr{}, fmt.Errorf(\"unsupported math operation: %q\", operation)\n\t}\n}\n\n// IfAddrsMath will apply an IfAddrMath operation each IfAddr struct.  Any\n// failure will result in zero results.\nfunc IfAddrsMath(operation, value string, inputIfAddrs IfAddrs) (IfAddrs, error) {\n\toutputAddrs := make(IfAddrs, 0, len(inputIfAddrs))\n\tfor _, ifAddr := range inputIfAddrs {\n\t\tresult, err := IfAddrMath(operation, value, ifAddr)\n\t\tif err != nil {\n\t\t\treturn IfAddrs{}, fmt.Errorf(\"unable to perform an IPMath operation on %s: %v\", ifAddr, err)\n\t\t}\n\t\toutputAddrs = append(outputAddrs, result)\n\t}\n\treturn outputAddrs, nil\n}\n\n// IncludeIfs returns an IfAddrs based on the passed in selector.\nfunc IncludeIfs(selectorName, selectorParam string, inputIfAddrs IfAddrs) (IfAddrs, error) {\n\tvar includedIfs IfAddrs\n\tvar err error\n\n\tswitch strings.ToLower(selectorName) {\n\tcase \"address\":\n\t\tincludedIfs, _, err = IfByAddress(selectorParam, inputIfAddrs)\n\tcase \"flag\", \"flags\":\n\t\tincludedIfs, _, err = IfByFlag(selectorParam, inputIfAddrs)\n\tcase \"name\":\n\t\tincludedIfs, _, err = IfByName(selectorParam, inputIfAddrs)\n\tcase \"network\":\n\t\tincludedIfs, _, err = IfByNetwork(selectorParam, inputIfAddrs)\n\tcase \"port\":\n\t\tincludedIfs, _, err = IfByPort(selectorParam, inputIfAddrs)\n\tcase \"rfc\", \"rfcs\":\n\t\tincludedIfs, _, err = IfByRFCs(selectorParam, inputIfAddrs)\n\tcase \"size\":\n\t\tincludedIfs, _, err = IfByMaskSize(selectorParam, inputIfAddrs)\n\tcase \"type\":\n\t\tincludedIfs, _, err = IfByType(selectorParam, inputIfAddrs)\n\tdefault:\n\t\treturn IfAddrs{}, fmt.Errorf(\"invalid include selector %q\", selectorName)\n\t}\n\n\tif err != nil {\n\t\treturn IfAddrs{}, err\n\t}\n\n\treturn includedIfs, nil\n}\n\n// ExcludeIfs returns an IfAddrs based on the passed in selector.\nfunc ExcludeIfs(selectorName, selectorParam string, inputIfAddrs IfAddrs) (IfAddrs, error) {\n\tvar excludedIfs IfAddrs\n\tvar err error\n\n\tswitch strings.ToLower(selectorName) {\n\tcase \"address\":\n\t\t_, excludedIfs, err = IfByAddress(selectorParam, inputIfAddrs)\n\tcase \"flag\", \"flags\":\n\t\t_, excludedIfs, err = IfByFlag(selectorParam, inputIfAddrs)\n\tcase \"name\":\n\t\t_, excludedIfs, err = IfByName(selectorParam, inputIfAddrs)\n\tcase \"network\":\n\t\t_, excludedIfs, err = IfByNetwork(selectorParam, inputIfAddrs)\n\tcase \"port\":\n\t\t_, excludedIfs, err = IfByPort(selectorParam, inputIfAddrs)\n\tcase \"rfc\", \"rfcs\":\n\t\t_, excludedIfs, err = IfByRFCs(selectorParam, inputIfAddrs)\n\tcase \"size\":\n\t\t_, excludedIfs, err = IfByMaskSize(selectorParam, inputIfAddrs)\n\tcase \"type\":\n\t\t_, excludedIfs, err = IfByType(selectorParam, inputIfAddrs)\n\tdefault:\n\t\treturn IfAddrs{}, fmt.Errorf(\"invalid exclude selector %q\", selectorName)\n\t}\n\n\tif err != nil {\n\t\treturn IfAddrs{}, err\n\t}\n\n\treturn excludedIfs, nil\n}\n\n// SortIfBy returns an IfAddrs sorted based on the passed in selector.  Multiple\n// sort clauses can be passed in as a comma delimited list without whitespace.\nfunc SortIfBy(selectorParam string, inputIfAddrs IfAddrs) (IfAddrs, error) {\n\tsortedIfs := append(IfAddrs(nil), inputIfAddrs...)\n\n\tclauses := strings.Split(selectorParam, \",\")\n\tsortFuncs := make([]CmpIfAddrFunc, len(clauses))\n\n\tfor i, clause := range clauses {\n\t\tswitch strings.TrimSpace(strings.ToLower(clause)) {\n\t\tcase \"+address\", \"address\":\n\t\t\t// The \"address\" selector returns an array of IfAddrs\n\t\t\t// ordered by the network address.  IfAddrs that are not\n\t\t\t// comparable will be at the end of the list and in a\n\t\t\t// non-deterministic order.\n\t\t\tsortFuncs[i] = AscIfAddress\n\t\tcase \"-address\":\n\t\t\tsortFuncs[i] = DescIfAddress\n\t\tcase \"+default\", \"default\":\n\t\t\tsortFuncs[i] = AscIfDefault\n\t\tcase \"-default\":\n\t\t\tsortFuncs[i] = DescIfDefault\n\t\tcase \"+name\", \"name\":\n\t\t\t// The \"name\" selector returns an array of IfAddrs\n\t\t\t// ordered by the interface name.\n\t\t\tsortFuncs[i] = AscIfName\n\t\tcase \"-name\":\n\t\t\tsortFuncs[i] = DescIfName\n\t\tcase \"+port\", \"port\":\n\t\t\t// The \"port\" selector returns an array of IfAddrs\n\t\t\t// ordered by the port, if included in the IfAddr.\n\t\t\t// IfAddrs that are not comparable will be at the end of\n\t\t\t// the list and in a non-deterministic order.\n\t\t\tsortFuncs[i] = AscIfPort\n\t\tcase \"-port\":\n\t\t\tsortFuncs[i] = DescIfPort\n\t\tcase \"+private\", \"private\":\n\t\t\t// The \"private\" selector returns an array of IfAddrs\n\t\t\t// ordered by private addresses first.  IfAddrs that are\n\t\t\t// not comparable will be at the end of the list and in\n\t\t\t// a non-deterministic order.\n\t\t\tsortFuncs[i] = AscIfPrivate\n\t\tcase \"-private\":\n\t\t\tsortFuncs[i] = DescIfPrivate\n\t\tcase \"+size\", \"size\":\n\t\t\t// The \"size\" selector returns an array of IfAddrs\n\t\t\t// ordered by the size of the network mask, smaller mask\n\t\t\t// (larger number of hosts per network) to largest\n\t\t\t// (e.g. a /24 sorts before a /32).\n\t\t\tsortFuncs[i] = AscIfNetworkSize\n\t\tcase \"-size\":\n\t\t\tsortFuncs[i] = DescIfNetworkSize\n\t\tcase \"+type\", \"type\":\n\t\t\t// The \"type\" selector returns an array of IfAddrs\n\t\t\t// ordered by the type of the IfAddr.  The sort order is\n\t\t\t// Unix, IPv4, then IPv6.\n\t\t\tsortFuncs[i] = AscIfType\n\t\tcase \"-type\":\n\t\t\tsortFuncs[i] = DescIfType\n\t\tdefault:\n\t\t\t// Return an empty list for invalid sort types.\n\t\t\treturn IfAddrs{}, fmt.Errorf(\"unknown sort type: %q\", clause)\n\t\t}\n\t}\n\n\tOrderedIfAddrBy(sortFuncs...).Sort(sortedIfs)\n\n\treturn sortedIfs, nil\n}\n\n// UniqueIfAddrsBy creates a unique set of IfAddrs based on the matching\n// selector.  UniqueIfAddrsBy assumes the input has already been sorted.\nfunc UniqueIfAddrsBy(selectorName string, inputIfAddrs IfAddrs) (IfAddrs, error) {\n\tattrName := strings.ToLower(selectorName)\n\n\tifs := make(IfAddrs, 0, len(inputIfAddrs))\n\tvar lastMatch string\n\tfor _, ifAddr := range inputIfAddrs {\n\t\tvar out string\n\t\tswitch attrName {\n\t\tcase \"address\":\n\t\t\tout = ifAddr.SockAddr.String()\n\t\tcase \"name\":\n\t\t\tout = ifAddr.Name\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unsupported unique constraint %+q\", selectorName)\n\t\t}\n\n\t\tswitch {\n\t\tcase lastMatch == \"\", lastMatch != out:\n\t\t\tlastMatch = out\n\t\t\tifs = append(ifs, ifAddr)\n\t\tcase lastMatch == out:\n\t\t\tcontinue\n\t\t}\n\t}\n\n\treturn ifs, nil\n}\n\n// JoinIfAddrs joins an IfAddrs and returns a string\nfunc JoinIfAddrs(selectorName string, joinStr string, inputIfAddrs IfAddrs) (string, error) {\n\toutputs := make([]string, 0, len(inputIfAddrs))\n\tattrName := AttrName(strings.ToLower(selectorName))\n\n\tfor _, ifAddr := range inputIfAddrs {\n\t\tvar attrVal string\n\t\tvar err error\n\t\tattrVal, err = ifAddr.Attr(attrName)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\toutputs = append(outputs, attrVal)\n\t}\n\treturn strings.Join(outputs, joinStr), nil\n}\n\n// LimitIfAddrs returns a slice of IfAddrs based on the specified limit.\nfunc LimitIfAddrs(lim uint, in IfAddrs) (IfAddrs, error) {\n\t// Clamp the limit to the length of the array\n\tif int(lim) > len(in) {\n\t\tlim = uint(len(in))\n\t}\n\n\treturn in[0:lim], nil\n}\n\n// OffsetIfAddrs returns a slice of IfAddrs based on the specified offset.\nfunc OffsetIfAddrs(off int, in IfAddrs) (IfAddrs, error) {\n\tvar end bool\n\tif off < 0 {\n\t\tend = true\n\t\toff = off * -1\n\t}\n\n\tif off > len(in) {\n\t\treturn IfAddrs{}, fmt.Errorf(\"unable to seek past the end of the interface array: offset (%d) exceeds the number of interfaces (%d)\", off, len(in))\n\t}\n\n\tif end {\n\t\treturn in[len(in)-off:], nil\n\t}\n\treturn in[off:], nil\n}\n\nfunc (ifAddr IfAddr) String() string {\n\treturn fmt.Sprintf(\"%s %v\", ifAddr.SockAddr, ifAddr.Interface)\n}\n\n// parseDefaultIfNameFromRoute parses standard route(8)'s output for the *BSDs\n// and Solaris.\nfunc parseDefaultIfNameFromRoute(routeOut string) (string, error) {\n\tlines := strings.Split(routeOut, \"\\n\")\n\tfor _, line := range lines {\n\t\tkvs := strings.SplitN(line, \":\", 2)\n\t\tif len(kvs) != 2 {\n\t\t\tcontinue\n\t\t}\n\n\t\tif strings.TrimSpace(kvs[0]) == \"interface\" {\n\t\t\tifName := strings.TrimSpace(kvs[1])\n\t\t\treturn ifName, nil\n\t\t}\n\t}\n\n\treturn \"\", errors.New(\"No default interface found\")\n}\n\n// parseDefaultIfNameFromIPCmd parses the default interface from ip(8) for\n// Linux.\nfunc parseDefaultIfNameFromIPCmd(routeOut string) (string, error) {\n\tparsedLines := parseIfNameFromIPCmd(routeOut)\n\tfor _, parsedLine := range parsedLines {\n\t\tif parsedLine[0] == \"default\" &&\n\t\t\tparsedLine[1] == \"via\" &&\n\t\t\tparsedLine[3] == \"dev\" {\n\t\t\tifName := strings.TrimSpace(parsedLine[4])\n\t\t\treturn ifName, nil\n\t\t}\n\t}\n\n\treturn \"\", errors.New(\"No default interface found\")\n}\n\n// parseDefaultIfNameFromIPCmdAndroid parses the default interface from ip(8) for\n// Android.\nfunc parseDefaultIfNameFromIPCmdAndroid(routeOut string) (string, error) {\n\tparsedLines := parseIfNameFromIPCmd(routeOut)\n\tif len(parsedLines) > 0 {\n\t\tifName := strings.TrimSpace(parsedLines[0][4])\n\t\treturn ifName, nil\n\t}\n\n\treturn \"\", errors.New(\"No default interface found\")\n}\n\n// parseIfNameFromIPCmd parses interfaces from ip(8) for\n// Linux.\nfunc parseIfNameFromIPCmd(routeOut string) [][]string {\n\tlines := strings.Split(routeOut, \"\\n\")\n\tre := whitespaceRE.Copy()\n\tparsedLines := make([][]string, 0, len(lines))\n\tfor _, line := range lines {\n\t\tkvs := re.Split(line, -1)\n\t\tif len(kvs) < 5 {\n\t\t\tcontinue\n\t\t}\n\t\tparsedLines = append(parsedLines, kvs)\n\t}\n\treturn parsedLines\n}\n\n// parseDefaultIfNameWindows parses the default interface from `netstat -rn` and\n// `ipconfig` on Windows.\n//\n// This has been deprecated in favor of a Powershell-based solution because of\n// issues with localized Windows versions, but is currently retained for backward\n// compatibility\nfunc parseDefaultIfNameWindows(routeOut, ipconfigOut string) (string, error) {\n\tdefaultIPAddr, err := parseDefaultIPAddrWindowsRoute(routeOut)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tifName, err := parseDefaultIfNameWindowsIPConfig(defaultIPAddr, ipconfigOut)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn ifName, nil\n}\n\n// parseDefaultIPAddrWindowsRoute parses the IP address on the default interface\n// `netstat -rn`.\n//\n// NOTES(sean): Only IPv4 addresses are parsed at this time.  If you have an\n// IPv6 connected host, submit an issue on github.com/hashicorp/go-sockaddr with\n// the output from `netstat -rn`, `ipconfig`, and version of Windows to see IPv6\n// support added.\n//\n// This has been deprecated in favor of a Powershell-based solution because of\n// issues with localized Windows versions, but is currently retained for backward\n// compatibility.\nfunc parseDefaultIPAddrWindowsRoute(routeOut string) (string, error) {\n\tlines := strings.Split(routeOut, \"\\n\")\n\tre := whitespaceRE.Copy()\n\tfor _, line := range lines {\n\t\tkvs := re.Split(strings.TrimSpace(line), -1)\n\t\tif len(kvs) < 3 {\n\t\t\tcontinue\n\t\t}\n\n\t\tif kvs[0] == \"0.0.0.0\" && kvs[1] == \"0.0.0.0\" {\n\t\t\tdefaultIPAddr := strings.TrimSpace(kvs[3])\n\t\t\treturn defaultIPAddr, nil\n\t\t}\n\t}\n\n\treturn \"\", errors.New(\"No IP on default interface found\")\n}\n\n// parseDefaultIfNameWindowsIPConfig parses the output of `ipconfig` to find the\n// interface name forwarding traffic to the default gateway.\n//\n// This has been deprecated in favor of a Powershell-based solution because of\n// issues with localized Windows versions, but is currently retained for backward\n// compatibility\nfunc parseDefaultIfNameWindowsIPConfig(defaultIPAddr, routeOut string) (string, error) {\n\tlines := strings.Split(routeOut, \"\\n\")\n\tifNameRe := ifNameRE.Copy()\n\tipAddrRe := ipAddrRE.Copy()\n\tvar ifName string\n\tfor _, line := range lines {\n\t\tswitch ifNameMatches := ifNameRe.FindStringSubmatch(line); {\n\t\tcase len(ifNameMatches) > 1:\n\t\t\tifName = ifNameMatches[1]\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch ipAddrMatches := ipAddrRe.FindStringSubmatch(line); {\n\t\tcase len(ipAddrMatches) > 1 && ipAddrMatches[1] == defaultIPAddr:\n\t\t\treturn ifName, nil\n\t\t}\n\t}\n\n\treturn \"\", errors.New(\"No default interface found with matching IP\")\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/ifattr.go",
    "content": "package sockaddr\n\nimport (\n\t\"fmt\"\n\t\"net\"\n)\n\n// IfAddr is a union of a SockAddr and a net.Interface.\ntype IfAddr struct {\n\tSockAddr\n\tnet.Interface\n}\n\n// Attr returns the named attribute as a string\nfunc (ifAddr IfAddr) Attr(attrName AttrName) (string, error) {\n\tval := IfAddrAttr(ifAddr, attrName)\n\tif val != \"\" {\n\t\treturn val, nil\n\t}\n\n\treturn Attr(ifAddr.SockAddr, attrName)\n}\n\n// Attr returns the named attribute as a string\nfunc Attr(sa SockAddr, attrName AttrName) (string, error) {\n\tswitch sockType := sa.Type(); {\n\tcase sockType&TypeIP != 0:\n\t\tip := *ToIPAddr(sa)\n\t\tattrVal := IPAddrAttr(ip, attrName)\n\t\tif attrVal != \"\" {\n\t\t\treturn attrVal, nil\n\t\t}\n\n\t\tif sockType == TypeIPv4 {\n\t\t\tipv4 := *ToIPv4Addr(sa)\n\t\t\tattrVal := IPv4AddrAttr(ipv4, attrName)\n\t\t\tif attrVal != \"\" {\n\t\t\t\treturn attrVal, nil\n\t\t\t}\n\t\t} else if sockType == TypeIPv6 {\n\t\t\tipv6 := *ToIPv6Addr(sa)\n\t\t\tattrVal := IPv6AddrAttr(ipv6, attrName)\n\t\t\tif attrVal != \"\" {\n\t\t\t\treturn attrVal, nil\n\t\t\t}\n\t\t}\n\n\tcase sockType == TypeUnix:\n\t\tus := *ToUnixSock(sa)\n\t\tattrVal := UnixSockAttr(us, attrName)\n\t\tif attrVal != \"\" {\n\t\t\treturn attrVal, nil\n\t\t}\n\t}\n\n\t// Non type-specific attributes\n\tswitch attrName {\n\tcase \"string\":\n\t\treturn sa.String(), nil\n\tcase \"type\":\n\t\treturn sa.Type().String(), nil\n\t}\n\n\treturn \"\", fmt.Errorf(\"unsupported attribute name %q\", attrName)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/ipaddr.go",
    "content": "package sockaddr\n\nimport (\n\t\"fmt\"\n\t\"math/big\"\n\t\"net\"\n\t\"strings\"\n)\n\n// Constants for the sizes of IPv3, IPv4, and IPv6 address types.\nconst (\n\tIPv3len = 6\n\tIPv4len = 4\n\tIPv6len = 16\n)\n\n// IPAddr is a generic IP address interface for IPv4 and IPv6 addresses,\n// networks, and socket endpoints.\ntype IPAddr interface {\n\tSockAddr\n\tAddressBinString() string\n\tAddressHexString() string\n\tCmp(SockAddr) int\n\tCmpAddress(SockAddr) int\n\tCmpPort(SockAddr) int\n\tFirstUsable() IPAddr\n\tHost() IPAddr\n\tIPPort() IPPort\n\tLastUsable() IPAddr\n\tMaskbits() int\n\tNetIP() *net.IP\n\tNetIPMask() *net.IPMask\n\tNetIPNet() *net.IPNet\n\tNetwork() IPAddr\n\tOctets() []int\n}\n\n// IPPort is the type for an IP port number for the TCP and UDP IP transports.\ntype IPPort uint16\n\n// IPPrefixLen is a typed integer representing the prefix length for a given\n// IPAddr.\ntype IPPrefixLen byte\n\n// ipAddrAttrMap is a map of the IPAddr type-specific attributes.\nvar ipAddrAttrMap map[AttrName]func(IPAddr) string\nvar ipAddrAttrs []AttrName\n\nfunc init() {\n\tipAddrInit()\n}\n\n// NewIPAddr creates a new IPAddr from a string.  Returns nil if the string is\n// not an IPv4 or an IPv6 address.\nfunc NewIPAddr(addr string) (IPAddr, error) {\n\tipv4Addr, err := NewIPv4Addr(addr)\n\tif err == nil {\n\t\treturn ipv4Addr, nil\n\t}\n\n\tipv6Addr, err := NewIPv6Addr(addr)\n\tif err == nil {\n\t\treturn ipv6Addr, nil\n\t}\n\n\treturn nil, fmt.Errorf(\"invalid IPAddr %v\", addr)\n}\n\n// IPAddrAttr returns a string representation of an attribute for the given\n// IPAddr.\nfunc IPAddrAttr(ip IPAddr, selector AttrName) string {\n\tfn, found := ipAddrAttrMap[selector]\n\tif !found {\n\t\treturn \"\"\n\t}\n\n\treturn fn(ip)\n}\n\n// IPAttrs returns a list of attributes supported by the IPAddr type\nfunc IPAttrs() []AttrName {\n\treturn ipAddrAttrs\n}\n\n// MustIPAddr is a helper method that must return an IPAddr or panic on invalid\n// input.\nfunc MustIPAddr(addr string) IPAddr {\n\tip, err := NewIPAddr(addr)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"Unable to create an IPAddr from %+q: %v\", addr, err))\n\t}\n\treturn ip\n}\n\n// ipAddrInit is called once at init()\nfunc ipAddrInit() {\n\t// Sorted for human readability\n\tipAddrAttrs = []AttrName{\n\t\t\"host\",\n\t\t\"address\",\n\t\t\"port\",\n\t\t\"netmask\",\n\t\t\"network\",\n\t\t\"mask_bits\",\n\t\t\"binary\",\n\t\t\"hex\",\n\t\t\"first_usable\",\n\t\t\"last_usable\",\n\t\t\"octets\",\n\t}\n\n\tipAddrAttrMap = map[AttrName]func(ip IPAddr) string{\n\t\t\"address\": func(ip IPAddr) string {\n\t\t\treturn ip.NetIP().String()\n\t\t},\n\t\t\"binary\": func(ip IPAddr) string {\n\t\t\treturn ip.AddressBinString()\n\t\t},\n\t\t\"first_usable\": func(ip IPAddr) string {\n\t\t\treturn ip.FirstUsable().String()\n\t\t},\n\t\t\"hex\": func(ip IPAddr) string {\n\t\t\treturn ip.AddressHexString()\n\t\t},\n\t\t\"host\": func(ip IPAddr) string {\n\t\t\treturn ip.Host().String()\n\t\t},\n\t\t\"last_usable\": func(ip IPAddr) string {\n\t\t\treturn ip.LastUsable().String()\n\t\t},\n\t\t\"mask_bits\": func(ip IPAddr) string {\n\t\t\treturn fmt.Sprintf(\"%d\", ip.Maskbits())\n\t\t},\n\t\t\"netmask\": func(ip IPAddr) string {\n\t\t\tswitch v := ip.(type) {\n\t\t\tcase IPv4Addr:\n\t\t\t\tipv4Mask := IPv4Addr{\n\t\t\t\t\tAddress: IPv4Address(v.Mask),\n\t\t\t\t\tMask:    IPv4HostMask,\n\t\t\t\t}\n\t\t\t\treturn ipv4Mask.String()\n\t\t\tcase IPv6Addr:\n\t\t\t\tipv6Mask := new(big.Int)\n\t\t\t\tipv6Mask.Set(v.Mask)\n\t\t\t\tipv6MaskAddr := IPv6Addr{\n\t\t\t\t\tAddress: IPv6Address(ipv6Mask),\n\t\t\t\t\tMask:    ipv6HostMask,\n\t\t\t\t}\n\t\t\t\treturn ipv6MaskAddr.String()\n\t\t\tdefault:\n\t\t\t\treturn fmt.Sprintf(\"<unsupported type: %T>\", ip)\n\t\t\t}\n\t\t},\n\t\t\"network\": func(ip IPAddr) string {\n\t\t\treturn ip.Network().NetIP().String()\n\t\t},\n\t\t\"octets\": func(ip IPAddr) string {\n\t\t\toctets := ip.Octets()\n\t\t\toctetStrs := make([]string, 0, len(octets))\n\t\t\tfor _, octet := range octets {\n\t\t\t\toctetStrs = append(octetStrs, fmt.Sprintf(\"%d\", octet))\n\t\t\t}\n\t\t\treturn strings.Join(octetStrs, \" \")\n\t\t},\n\t\t\"port\": func(ip IPAddr) string {\n\t\t\treturn fmt.Sprintf(\"%d\", ip.IPPort())\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/ipaddrs.go",
    "content": "package sockaddr\n\nimport \"bytes\"\n\ntype IPAddrs []IPAddr\n\nfunc (s IPAddrs) Len() int      { return len(s) }\nfunc (s IPAddrs) Swap(i, j int) { s[i], s[j] = s[j], s[i] }\n\n// // SortIPAddrsByCmp is a type that satisfies sort.Interface and can be used\n// // by the routines in this package.  The SortIPAddrsByCmp type is used to\n// // sort IPAddrs by Cmp()\n// type SortIPAddrsByCmp struct{ IPAddrs }\n\n// // Less reports whether the element with index i should sort before the\n// // element with index j.\n// func (s SortIPAddrsByCmp) Less(i, j int) bool {\n// \t// Sort by Type, then address, then port number.\n// \treturn Less(s.IPAddrs[i], s.IPAddrs[j])\n// }\n\n// SortIPAddrsBySpecificMaskLen is a type that satisfies sort.Interface and\n// can be used by the routines in this package.  The\n// SortIPAddrsBySpecificMaskLen type is used to sort IPAddrs by smallest\n// network (most specific to largest network).\ntype SortIPAddrsByNetworkSize struct{ IPAddrs }\n\n// Less reports whether the element with index i should sort before the\n// element with index j.\nfunc (s SortIPAddrsByNetworkSize) Less(i, j int) bool {\n\t// Sort masks with a larger binary value (i.e. fewer hosts per network\n\t// prefix) after masks with a smaller value (larger number of hosts per\n\t// prefix).\n\tswitch bytes.Compare([]byte(*s.IPAddrs[i].NetIPMask()), []byte(*s.IPAddrs[j].NetIPMask())) {\n\tcase 0:\n\t\t// Fall through to the second test if the net.IPMasks are the\n\t\t// same.\n\t\tbreak\n\tcase 1:\n\t\treturn true\n\tcase -1:\n\t\treturn false\n\tdefault:\n\t\tpanic(\"bad, m'kay?\")\n\t}\n\n\t// Sort IPs based on the length (i.e. prefer IPv4 over IPv6).\n\tiLen := len(*s.IPAddrs[i].NetIP())\n\tjLen := len(*s.IPAddrs[j].NetIP())\n\tif iLen != jLen {\n\t\treturn iLen > jLen\n\t}\n\n\t// Sort IPs based on their network address from lowest to highest.\n\tswitch bytes.Compare(s.IPAddrs[i].NetIPNet().IP, s.IPAddrs[j].NetIPNet().IP) {\n\tcase 0:\n\t\tbreak\n\tcase 1:\n\t\treturn false\n\tcase -1:\n\t\treturn true\n\tdefault:\n\t\tpanic(\"lol wut?\")\n\t}\n\n\t// If a host does not have a port set, it always sorts after hosts\n\t// that have a port (e.g. a host with a /32 and port number is more\n\t// specific and should sort first over a host with a /32 but no port\n\t// set).\n\tif s.IPAddrs[i].IPPort() == 0 || s.IPAddrs[j].IPPort() == 0 {\n\t\treturn false\n\t}\n\treturn s.IPAddrs[i].IPPort() < s.IPAddrs[j].IPPort()\n}\n\n// SortIPAddrsBySpecificMaskLen is a type that satisfies sort.Interface and\n// can be used by the routines in this package.  The\n// SortIPAddrsBySpecificMaskLen type is used to sort IPAddrs by smallest\n// network (most specific to largest network).\ntype SortIPAddrsBySpecificMaskLen struct{ IPAddrs }\n\n// Less reports whether the element with index i should sort before the\n// element with index j.\nfunc (s SortIPAddrsBySpecificMaskLen) Less(i, j int) bool {\n\treturn s.IPAddrs[i].Maskbits() > s.IPAddrs[j].Maskbits()\n}\n\n// SortIPAddrsByBroadMaskLen is a type that satisfies sort.Interface and can\n// be used by the routines in this package.  The SortIPAddrsByBroadMaskLen\n// type is used to sort IPAddrs by largest network (i.e. largest subnets\n// first).\ntype SortIPAddrsByBroadMaskLen struct{ IPAddrs }\n\n// Less reports whether the element with index i should sort before the\n// element with index j.\nfunc (s SortIPAddrsByBroadMaskLen) Less(i, j int) bool {\n\treturn s.IPAddrs[i].Maskbits() < s.IPAddrs[j].Maskbits()\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/ipv4addr.go",
    "content": "package sockaddr\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"net\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype (\n\t// IPv4Address is a named type representing an IPv4 address.\n\tIPv4Address uint32\n\n\t// IPv4Network is a named type representing an IPv4 network.\n\tIPv4Network uint32\n\n\t// IPv4Mask is a named type representing an IPv4 network mask.\n\tIPv4Mask uint32\n)\n\n// IPv4HostMask is a constant represents a /32 IPv4 Address\n// (i.e. 255.255.255.255).\nconst IPv4HostMask = IPv4Mask(0xffffffff)\n\n// ipv4AddrAttrMap is a map of the IPv4Addr type-specific attributes.\nvar ipv4AddrAttrMap map[AttrName]func(IPv4Addr) string\nvar ipv4AddrAttrs []AttrName\nvar trailingHexNetmaskRE *regexp.Regexp\n\n// IPv4Addr implements a convenience wrapper around the union of Go's\n// built-in net.IP and net.IPNet types.  In UNIX-speak, IPv4Addr implements\n// `sockaddr` when the the address family is set to AF_INET\n// (i.e. `sockaddr_in`).\ntype IPv4Addr struct {\n\tIPAddr\n\tAddress IPv4Address\n\tMask    IPv4Mask\n\tPort    IPPort\n}\n\nfunc init() {\n\tipv4AddrInit()\n\ttrailingHexNetmaskRE = regexp.MustCompile(`/([0f]{8})$`)\n}\n\n// NewIPv4Addr creates an IPv4Addr from a string.  String can be in the form\n// of either an IPv4:port (e.g. `1.2.3.4:80`, in which case the mask is\n// assumed to be a `/32`), an IPv4 address (e.g. `1.2.3.4`, also with a `/32`\n// mask), or an IPv4 CIDR (e.g. `1.2.3.4/24`, which has its IP port\n// initialized to zero).  ipv4Str can not be a hostname.\n//\n// NOTE: Many net.*() routines will initialize and return an IPv6 address.\n// To create uint32 values from net.IP, always test to make sure the address\n// returned can be converted to a 4 byte array using To4().\nfunc NewIPv4Addr(ipv4Str string) (IPv4Addr, error) {\n\t// Strip off any bogus hex-encoded netmasks that will be mis-parsed by Go.  In\n\t// particular, clients with the Barracuda VPN client will see something like:\n\t// `192.168.3.51/00ffffff` as their IP address.\n\ttrailingHexNetmaskRe := trailingHexNetmaskRE.Copy()\n\tif match := trailingHexNetmaskRe.FindStringIndex(ipv4Str); match != nil {\n\t\tipv4Str = ipv4Str[:match[0]]\n\t}\n\n\t// Parse as an IPv4 CIDR\n\tipAddr, network, err := net.ParseCIDR(ipv4Str)\n\tif err == nil {\n\t\tipv4 := ipAddr.To4()\n\t\tif ipv4 == nil {\n\t\t\treturn IPv4Addr{}, fmt.Errorf(\"Unable to convert %s to an IPv4 address\", ipv4Str)\n\t\t}\n\n\t\t// If we see an IPv6 netmask, convert it to an IPv4 mask.\n\t\tnetmaskSepPos := strings.LastIndexByte(ipv4Str, '/')\n\t\tif netmaskSepPos != -1 && netmaskSepPos+1 < len(ipv4Str) {\n\t\t\tnetMask, err := strconv.ParseUint(ipv4Str[netmaskSepPos+1:], 10, 8)\n\t\t\tif err != nil {\n\t\t\t\treturn IPv4Addr{}, fmt.Errorf(\"Unable to convert %s to an IPv4 address: unable to parse CIDR netmask: %v\", ipv4Str, err)\n\t\t\t} else if netMask > 128 {\n\t\t\t\treturn IPv4Addr{}, fmt.Errorf(\"Unable to convert %s to an IPv4 address: invalid CIDR netmask\", ipv4Str)\n\t\t\t}\n\n\t\t\tif netMask >= 96 {\n\t\t\t\t// Convert the IPv6 netmask to an IPv4 netmask\n\t\t\t\tnetwork.Mask = net.CIDRMask(int(netMask-96), IPv4len*8)\n\t\t\t}\n\t\t}\n\t\tipv4Addr := IPv4Addr{\n\t\t\tAddress: IPv4Address(binary.BigEndian.Uint32(ipv4)),\n\t\t\tMask:    IPv4Mask(binary.BigEndian.Uint32(network.Mask)),\n\t\t}\n\t\treturn ipv4Addr, nil\n\t}\n\n\t// Attempt to parse ipv4Str as a /32 host with a port number.\n\ttcpAddr, err := net.ResolveTCPAddr(\"tcp4\", ipv4Str)\n\tif err == nil {\n\t\tipv4 := tcpAddr.IP.To4()\n\t\tif ipv4 == nil {\n\t\t\treturn IPv4Addr{}, fmt.Errorf(\"Unable to resolve %+q as an IPv4 address\", ipv4Str)\n\t\t}\n\n\t\tipv4Uint32 := binary.BigEndian.Uint32(ipv4)\n\t\tipv4Addr := IPv4Addr{\n\t\t\tAddress: IPv4Address(ipv4Uint32),\n\t\t\tMask:    IPv4HostMask,\n\t\t\tPort:    IPPort(tcpAddr.Port),\n\t\t}\n\n\t\treturn ipv4Addr, nil\n\t}\n\n\t// Parse as a naked IPv4 address\n\tip := net.ParseIP(ipv4Str)\n\tif ip != nil {\n\t\tipv4 := ip.To4()\n\t\tif ipv4 == nil {\n\t\t\treturn IPv4Addr{}, fmt.Errorf(\"Unable to string convert %+q to an IPv4 address\", ipv4Str)\n\t\t}\n\n\t\tipv4Uint32 := binary.BigEndian.Uint32(ipv4)\n\t\tipv4Addr := IPv4Addr{\n\t\t\tAddress: IPv4Address(ipv4Uint32),\n\t\t\tMask:    IPv4HostMask,\n\t\t}\n\t\treturn ipv4Addr, nil\n\t}\n\n\treturn IPv4Addr{}, fmt.Errorf(\"Unable to parse %+q to an IPv4 address: %v\", ipv4Str, err)\n}\n\n// AddressBinString returns a string with the IPv4Addr's Address represented\n// as a sequence of '0' and '1' characters.  This method is useful for\n// debugging or by operators who want to inspect an address.\nfunc (ipv4 IPv4Addr) AddressBinString() string {\n\treturn fmt.Sprintf(\"%032s\", strconv.FormatUint(uint64(ipv4.Address), 2))\n}\n\n// AddressHexString returns a string with the IPv4Addr address represented as\n// a sequence of hex characters.  This method is useful for debugging or by\n// operators who want to inspect an address.\nfunc (ipv4 IPv4Addr) AddressHexString() string {\n\treturn fmt.Sprintf(\"%08s\", strconv.FormatUint(uint64(ipv4.Address), 16))\n}\n\n// Broadcast is an IPv4Addr-only method that returns the broadcast address of\n// the network.\n//\n// NOTE: IPv6 only supports multicast, so this method only exists for\n// IPv4Addr.\nfunc (ipv4 IPv4Addr) Broadcast() IPAddr {\n\t// Nothing should listen on a broadcast address.\n\treturn IPv4Addr{\n\t\tAddress: IPv4Address(ipv4.BroadcastAddress()),\n\t\tMask:    IPv4HostMask,\n\t}\n}\n\n// BroadcastAddress returns a IPv4Network of the IPv4Addr's broadcast\n// address.\nfunc (ipv4 IPv4Addr) BroadcastAddress() IPv4Network {\n\treturn IPv4Network(uint32(ipv4.Address)&uint32(ipv4.Mask) | ^uint32(ipv4.Mask))\n}\n\n// CmpAddress follows the Cmp() standard protocol and returns:\n//\n// - -1 If the receiver should sort first because its address is lower than arg\n// - 0 if the SockAddr arg is equal to the receiving IPv4Addr or the argument is\n//   of a different type.\n// - 1 If the argument should sort first.\nfunc (ipv4 IPv4Addr) CmpAddress(sa SockAddr) int {\n\tipv4b, ok := sa.(IPv4Addr)\n\tif !ok {\n\t\treturn sortDeferDecision\n\t}\n\n\tswitch {\n\tcase ipv4.Address == ipv4b.Address:\n\t\treturn sortDeferDecision\n\tcase ipv4.Address < ipv4b.Address:\n\t\treturn sortReceiverBeforeArg\n\tdefault:\n\t\treturn sortArgBeforeReceiver\n\t}\n}\n\n// CmpPort follows the Cmp() standard protocol and returns:\n//\n// - -1 If the receiver should sort first because its port is lower than arg\n// - 0 if the SockAddr arg's port number is equal to the receiving IPv4Addr,\n//   regardless of type.\n// - 1 If the argument should sort first.\nfunc (ipv4 IPv4Addr) CmpPort(sa SockAddr) int {\n\tvar saPort IPPort\n\tswitch v := sa.(type) {\n\tcase IPv4Addr:\n\t\tsaPort = v.Port\n\tcase IPv6Addr:\n\t\tsaPort = v.Port\n\tdefault:\n\t\treturn sortDeferDecision\n\t}\n\n\tswitch {\n\tcase ipv4.Port == saPort:\n\t\treturn sortDeferDecision\n\tcase ipv4.Port < saPort:\n\t\treturn sortReceiverBeforeArg\n\tdefault:\n\t\treturn sortArgBeforeReceiver\n\t}\n}\n\n// CmpRFC follows the Cmp() standard protocol and returns:\n//\n// - -1 If the receiver should sort first because it belongs to the RFC and its\n//   arg does not\n// - 0 if the receiver and arg both belong to the same RFC or neither do.\n// - 1 If the arg belongs to the RFC but receiver does not.\nfunc (ipv4 IPv4Addr) CmpRFC(rfcNum uint, sa SockAddr) int {\n\trecvInRFC := IsRFC(rfcNum, ipv4)\n\tipv4b, ok := sa.(IPv4Addr)\n\tif !ok {\n\t\t// If the receiver is part of the desired RFC and the SockAddr\n\t\t// argument is not, return -1 so that the receiver sorts before\n\t\t// the non-IPv4 SockAddr.  Conversely, if the receiver is not\n\t\t// part of the RFC, punt on sorting and leave it for the next\n\t\t// sorter.\n\t\tif recvInRFC {\n\t\t\treturn sortReceiverBeforeArg\n\t\t} else {\n\t\t\treturn sortDeferDecision\n\t\t}\n\t}\n\n\targInRFC := IsRFC(rfcNum, ipv4b)\n\tswitch {\n\tcase (recvInRFC && argInRFC), (!recvInRFC && !argInRFC):\n\t\t// If a and b both belong to the RFC, or neither belong to\n\t\t// rfcNum, defer sorting to the next sorter.\n\t\treturn sortDeferDecision\n\tcase recvInRFC && !argInRFC:\n\t\treturn sortReceiverBeforeArg\n\tdefault:\n\t\treturn sortArgBeforeReceiver\n\t}\n}\n\n// Contains returns true if the SockAddr is contained within the receiver.\nfunc (ipv4 IPv4Addr) Contains(sa SockAddr) bool {\n\tipv4b, ok := sa.(IPv4Addr)\n\tif !ok {\n\t\treturn false\n\t}\n\n\treturn ipv4.ContainsNetwork(ipv4b)\n}\n\n// ContainsAddress returns true if the IPv4Address is contained within the\n// receiver.\nfunc (ipv4 IPv4Addr) ContainsAddress(x IPv4Address) bool {\n\treturn IPv4Address(ipv4.NetworkAddress()) <= x &&\n\t\tIPv4Address(ipv4.BroadcastAddress()) >= x\n}\n\n// ContainsNetwork returns true if the network from IPv4Addr is contained\n// within the receiver.\nfunc (ipv4 IPv4Addr) ContainsNetwork(x IPv4Addr) bool {\n\treturn ipv4.NetworkAddress() <= x.NetworkAddress() &&\n\t\tipv4.BroadcastAddress() >= x.BroadcastAddress()\n}\n\n// DialPacketArgs returns the arguments required to be passed to\n// net.DialUDP().  If the Mask of ipv4 is not a /32 or the Port is 0,\n// DialPacketArgs() will fail.  See Host() to create an IPv4Addr with its\n// mask set to /32.\nfunc (ipv4 IPv4Addr) DialPacketArgs() (network, dialArgs string) {\n\tif ipv4.Mask != IPv4HostMask || ipv4.Port == 0 {\n\t\treturn \"udp4\", \"\"\n\t}\n\treturn \"udp4\", fmt.Sprintf(\"%s:%d\", ipv4.NetIP().String(), ipv4.Port)\n}\n\n// DialStreamArgs returns the arguments required to be passed to\n// net.DialTCP().  If the Mask of ipv4 is not a /32 or the Port is 0,\n// DialStreamArgs() will fail.  See Host() to create an IPv4Addr with its\n// mask set to /32.\nfunc (ipv4 IPv4Addr) DialStreamArgs() (network, dialArgs string) {\n\tif ipv4.Mask != IPv4HostMask || ipv4.Port == 0 {\n\t\treturn \"tcp4\", \"\"\n\t}\n\treturn \"tcp4\", fmt.Sprintf(\"%s:%d\", ipv4.NetIP().String(), ipv4.Port)\n}\n\n// Equal returns true if a SockAddr is equal to the receiving IPv4Addr.\nfunc (ipv4 IPv4Addr) Equal(sa SockAddr) bool {\n\tipv4b, ok := sa.(IPv4Addr)\n\tif !ok {\n\t\treturn false\n\t}\n\n\tif ipv4.Port != ipv4b.Port {\n\t\treturn false\n\t}\n\n\tif ipv4.Address != ipv4b.Address {\n\t\treturn false\n\t}\n\n\tif ipv4.NetIPNet().String() != ipv4b.NetIPNet().String() {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n// FirstUsable returns an IPv4Addr set to the first address following the\n// network prefix.  The first usable address in a network is normally the\n// gateway and should not be used except by devices forwarding packets\n// between two administratively distinct networks (i.e. a router).  This\n// function does not discriminate against first usable vs \"first address that\n// should be used.\"  For example, FirstUsable() on \"192.168.1.10/24\" would\n// return the address \"192.168.1.1/24\".\nfunc (ipv4 IPv4Addr) FirstUsable() IPAddr {\n\taddr := ipv4.NetworkAddress()\n\n\t// If /32, return the address itself. If /31 assume a point-to-point\n\t// link and return the lower address.\n\tif ipv4.Maskbits() < 31 {\n\t\taddr++\n\t}\n\n\treturn IPv4Addr{\n\t\tAddress: IPv4Address(addr),\n\t\tMask:    IPv4HostMask,\n\t}\n}\n\n// Host returns a copy of ipv4 with its mask set to /32 so that it can be\n// used by DialPacketArgs(), DialStreamArgs(), ListenPacketArgs(), or\n// ListenStreamArgs().\nfunc (ipv4 IPv4Addr) Host() IPAddr {\n\t// Nothing should listen on a broadcast address.\n\treturn IPv4Addr{\n\t\tAddress: ipv4.Address,\n\t\tMask:    IPv4HostMask,\n\t\tPort:    ipv4.Port,\n\t}\n}\n\n// IPPort returns the Port number attached to the IPv4Addr\nfunc (ipv4 IPv4Addr) IPPort() IPPort {\n\treturn ipv4.Port\n}\n\n// LastUsable returns the last address before the broadcast address in a\n// given network.\nfunc (ipv4 IPv4Addr) LastUsable() IPAddr {\n\taddr := ipv4.BroadcastAddress()\n\n\t// If /32, return the address itself. If /31 assume a point-to-point\n\t// link and return the upper address.\n\tif ipv4.Maskbits() < 31 {\n\t\taddr--\n\t}\n\n\treturn IPv4Addr{\n\t\tAddress: IPv4Address(addr),\n\t\tMask:    IPv4HostMask,\n\t}\n}\n\n// ListenPacketArgs returns the arguments required to be passed to\n// net.ListenUDP().  If the Mask of ipv4 is not a /32, ListenPacketArgs()\n// will fail.  See Host() to create an IPv4Addr with its mask set to /32.\nfunc (ipv4 IPv4Addr) ListenPacketArgs() (network, listenArgs string) {\n\tif ipv4.Mask != IPv4HostMask {\n\t\treturn \"udp4\", \"\"\n\t}\n\treturn \"udp4\", fmt.Sprintf(\"%s:%d\", ipv4.NetIP().String(), ipv4.Port)\n}\n\n// ListenStreamArgs returns the arguments required to be passed to\n// net.ListenTCP().  If the Mask of ipv4 is not a /32, ListenStreamArgs()\n// will fail.  See Host() to create an IPv4Addr with its mask set to /32.\nfunc (ipv4 IPv4Addr) ListenStreamArgs() (network, listenArgs string) {\n\tif ipv4.Mask != IPv4HostMask {\n\t\treturn \"tcp4\", \"\"\n\t}\n\treturn \"tcp4\", fmt.Sprintf(\"%s:%d\", ipv4.NetIP().String(), ipv4.Port)\n}\n\n// Maskbits returns the number of network mask bits in a given IPv4Addr.  For\n// example, the Maskbits() of \"192.168.1.1/24\" would return 24.\nfunc (ipv4 IPv4Addr) Maskbits() int {\n\tmask := make(net.IPMask, IPv4len)\n\tbinary.BigEndian.PutUint32(mask, uint32(ipv4.Mask))\n\tmaskOnes, _ := mask.Size()\n\treturn maskOnes\n}\n\n// MustIPv4Addr is a helper method that must return an IPv4Addr or panic on\n// invalid input.\nfunc MustIPv4Addr(addr string) IPv4Addr {\n\tipv4, err := NewIPv4Addr(addr)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"Unable to create an IPv4Addr from %+q: %v\", addr, err))\n\t}\n\treturn ipv4\n}\n\n// NetIP returns the address as a net.IP (address is always presized to\n// IPv4).\nfunc (ipv4 IPv4Addr) NetIP() *net.IP {\n\tx := make(net.IP, IPv4len)\n\tbinary.BigEndian.PutUint32(x, uint32(ipv4.Address))\n\treturn &x\n}\n\n// NetIPMask create a new net.IPMask from the IPv4Addr.\nfunc (ipv4 IPv4Addr) NetIPMask() *net.IPMask {\n\tipv4Mask := net.IPMask{}\n\tipv4Mask = make(net.IPMask, IPv4len)\n\tbinary.BigEndian.PutUint32(ipv4Mask, uint32(ipv4.Mask))\n\treturn &ipv4Mask\n}\n\n// NetIPNet create a new net.IPNet from the IPv4Addr.\nfunc (ipv4 IPv4Addr) NetIPNet() *net.IPNet {\n\tipv4net := &net.IPNet{}\n\tipv4net.IP = make(net.IP, IPv4len)\n\tbinary.BigEndian.PutUint32(ipv4net.IP, uint32(ipv4.NetworkAddress()))\n\tipv4net.Mask = *ipv4.NetIPMask()\n\treturn ipv4net\n}\n\n// Network returns the network prefix or network address for a given network.\nfunc (ipv4 IPv4Addr) Network() IPAddr {\n\treturn IPv4Addr{\n\t\tAddress: IPv4Address(ipv4.NetworkAddress()),\n\t\tMask:    ipv4.Mask,\n\t}\n}\n\n// NetworkAddress returns an IPv4Network of the IPv4Addr's network address.\nfunc (ipv4 IPv4Addr) NetworkAddress() IPv4Network {\n\treturn IPv4Network(uint32(ipv4.Address) & uint32(ipv4.Mask))\n}\n\n// Octets returns a slice of the four octets in an IPv4Addr's Address.  The\n// order of the bytes is big endian.\nfunc (ipv4 IPv4Addr) Octets() []int {\n\treturn []int{\n\t\tint(ipv4.Address >> 24),\n\t\tint((ipv4.Address >> 16) & 0xff),\n\t\tint((ipv4.Address >> 8) & 0xff),\n\t\tint(ipv4.Address & 0xff),\n\t}\n}\n\n// String returns a string representation of the IPv4Addr\nfunc (ipv4 IPv4Addr) String() string {\n\tif ipv4.Port != 0 {\n\t\treturn fmt.Sprintf(\"%s:%d\", ipv4.NetIP().String(), ipv4.Port)\n\t}\n\n\tif ipv4.Maskbits() == 32 {\n\t\treturn ipv4.NetIP().String()\n\t}\n\n\treturn fmt.Sprintf(\"%s/%d\", ipv4.NetIP().String(), ipv4.Maskbits())\n}\n\n// Type is used as a type switch and returns TypeIPv4\nfunc (IPv4Addr) Type() SockAddrType {\n\treturn TypeIPv4\n}\n\n// IPv4AddrAttr returns a string representation of an attribute for the given\n// IPv4Addr.\nfunc IPv4AddrAttr(ipv4 IPv4Addr, selector AttrName) string {\n\tfn, found := ipv4AddrAttrMap[selector]\n\tif !found {\n\t\treturn \"\"\n\t}\n\n\treturn fn(ipv4)\n}\n\n// IPv4Attrs returns a list of attributes supported by the IPv4Addr type\nfunc IPv4Attrs() []AttrName {\n\treturn ipv4AddrAttrs\n}\n\n// ipv4AddrInit is called once at init()\nfunc ipv4AddrInit() {\n\t// Sorted for human readability\n\tipv4AddrAttrs = []AttrName{\n\t\t\"size\", // Same position as in IPv6 for output consistency\n\t\t\"broadcast\",\n\t\t\"uint32\",\n\t}\n\n\tipv4AddrAttrMap = map[AttrName]func(ipv4 IPv4Addr) string{\n\t\t\"broadcast\": func(ipv4 IPv4Addr) string {\n\t\t\treturn ipv4.Broadcast().String()\n\t\t},\n\t\t\"size\": func(ipv4 IPv4Addr) string {\n\t\t\treturn fmt.Sprintf(\"%d\", 1<<uint(IPv4len*8-ipv4.Maskbits()))\n\t\t},\n\t\t\"uint32\": func(ipv4 IPv4Addr) string {\n\t\t\treturn fmt.Sprintf(\"%d\", uint32(ipv4.Address))\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/ipv6addr.go",
    "content": "package sockaddr\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"math/big\"\n\t\"net\"\n)\n\ntype (\n\t// IPv6Address is a named type representing an IPv6 address.\n\tIPv6Address *big.Int\n\n\t// IPv6Network is a named type representing an IPv6 network.\n\tIPv6Network *big.Int\n\n\t// IPv6Mask is a named type representing an IPv6 network mask.\n\tIPv6Mask *big.Int\n)\n\n// IPv6HostPrefix is a constant represents a /128 IPv6 Prefix.\nconst IPv6HostPrefix = IPPrefixLen(128)\n\n// ipv6HostMask is an unexported big.Int representing a /128 IPv6 address.\n// This value must be a constant and always set to all ones.\nvar ipv6HostMask IPv6Mask\n\n// ipv6AddrAttrMap is a map of the IPv6Addr type-specific attributes.\nvar ipv6AddrAttrMap map[AttrName]func(IPv6Addr) string\nvar ipv6AddrAttrs []AttrName\n\nfunc init() {\n\tbiMask := new(big.Int)\n\tbiMask.SetBytes([]byte{\n\t\t0xff, 0xff,\n\t\t0xff, 0xff,\n\t\t0xff, 0xff,\n\t\t0xff, 0xff,\n\t\t0xff, 0xff,\n\t\t0xff, 0xff,\n\t\t0xff, 0xff,\n\t\t0xff, 0xff,\n\t},\n\t)\n\tipv6HostMask = IPv6Mask(biMask)\n\n\tipv6AddrInit()\n}\n\n// IPv6Addr implements a convenience wrapper around the union of Go's\n// built-in net.IP and net.IPNet types.  In UNIX-speak, IPv6Addr implements\n// `sockaddr` when the the address family is set to AF_INET6\n// (i.e. `sockaddr_in6`).\ntype IPv6Addr struct {\n\tIPAddr\n\tAddress IPv6Address\n\tMask    IPv6Mask\n\tPort    IPPort\n}\n\n// NewIPv6Addr creates an IPv6Addr from a string.  String can be in the form of\n// an an IPv6:port (e.g. `[2001:4860:0:2001::68]:80`, in which case the mask is\n// assumed to be a /128), an IPv6 address (e.g. `2001:4860:0:2001::68`, also\n// with a `/128` mask), an IPv6 CIDR (e.g. `2001:4860:0:2001::68/64`, which has\n// its IP port initialized to zero).  ipv6Str can not be a hostname.\n//\n// NOTE: Many net.*() routines will initialize and return an IPv4 address.\n// Always test to make sure the address returned cannot be converted to a 4 byte\n// array using To4().\nfunc NewIPv6Addr(ipv6Str string) (IPv6Addr, error) {\n\tv6Addr := false\nLOOP:\n\tfor i := 0; i < len(ipv6Str); i++ {\n\t\tswitch ipv6Str[i] {\n\t\tcase '.':\n\t\t\tbreak LOOP\n\t\tcase ':':\n\t\t\tv6Addr = true\n\t\t\tbreak LOOP\n\t\t}\n\t}\n\n\tif !v6Addr {\n\t\treturn IPv6Addr{}, fmt.Errorf(\"Unable to resolve %+q as an IPv6 address, appears to be an IPv4 address\", ipv6Str)\n\t}\n\n\t// Attempt to parse ipv6Str as a /128 host with a port number.\n\ttcpAddr, err := net.ResolveTCPAddr(\"tcp6\", ipv6Str)\n\tif err == nil {\n\t\tipv6 := tcpAddr.IP.To16()\n\t\tif ipv6 == nil {\n\t\t\treturn IPv6Addr{}, fmt.Errorf(\"Unable to resolve %+q as a 16byte IPv6 address\", ipv6Str)\n\t\t}\n\n\t\tipv6BigIntAddr := new(big.Int)\n\t\tipv6BigIntAddr.SetBytes(ipv6)\n\n\t\tipv6BigIntMask := new(big.Int)\n\t\tipv6BigIntMask.Set(ipv6HostMask)\n\n\t\tipv6Addr := IPv6Addr{\n\t\t\tAddress: IPv6Address(ipv6BigIntAddr),\n\t\t\tMask:    IPv6Mask(ipv6BigIntMask),\n\t\t\tPort:    IPPort(tcpAddr.Port),\n\t\t}\n\n\t\treturn ipv6Addr, nil\n\t}\n\n\t// Parse as a naked IPv6 address.  Trim square brackets if present.\n\tif len(ipv6Str) > 2 && ipv6Str[0] == '[' && ipv6Str[len(ipv6Str)-1] == ']' {\n\t\tipv6Str = ipv6Str[1 : len(ipv6Str)-1]\n\t}\n\tip := net.ParseIP(ipv6Str)\n\tif ip != nil {\n\t\tipv6 := ip.To16()\n\t\tif ipv6 == nil {\n\t\t\treturn IPv6Addr{}, fmt.Errorf(\"Unable to string convert %+q to a 16byte IPv6 address\", ipv6Str)\n\t\t}\n\n\t\tipv6BigIntAddr := new(big.Int)\n\t\tipv6BigIntAddr.SetBytes(ipv6)\n\n\t\tipv6BigIntMask := new(big.Int)\n\t\tipv6BigIntMask.Set(ipv6HostMask)\n\n\t\treturn IPv6Addr{\n\t\t\tAddress: IPv6Address(ipv6BigIntAddr),\n\t\t\tMask:    IPv6Mask(ipv6BigIntMask),\n\t\t}, nil\n\t}\n\n\t// Parse as an IPv6 CIDR\n\tipAddr, network, err := net.ParseCIDR(ipv6Str)\n\tif err == nil {\n\t\tipv6 := ipAddr.To16()\n\t\tif ipv6 == nil {\n\t\t\treturn IPv6Addr{}, fmt.Errorf(\"Unable to convert %+q to a 16byte IPv6 address\", ipv6Str)\n\t\t}\n\n\t\tipv6BigIntAddr := new(big.Int)\n\t\tipv6BigIntAddr.SetBytes(ipv6)\n\n\t\tipv6BigIntMask := new(big.Int)\n\t\tipv6BigIntMask.SetBytes(network.Mask)\n\n\t\tipv6Addr := IPv6Addr{\n\t\t\tAddress: IPv6Address(ipv6BigIntAddr),\n\t\t\tMask:    IPv6Mask(ipv6BigIntMask),\n\t\t}\n\t\treturn ipv6Addr, nil\n\t}\n\n\treturn IPv6Addr{}, fmt.Errorf(\"Unable to parse %+q to an IPv6 address: %v\", ipv6Str, err)\n}\n\n// AddressBinString returns a string with the IPv6Addr's Address represented\n// as a sequence of '0' and '1' characters.  This method is useful for\n// debugging or by operators who want to inspect an address.\nfunc (ipv6 IPv6Addr) AddressBinString() string {\n\tbi := big.Int(*ipv6.Address)\n\treturn fmt.Sprintf(\"%0128s\", bi.Text(2))\n}\n\n// AddressHexString returns a string with the IPv6Addr address represented as\n// a sequence of hex characters.  This method is useful for debugging or by\n// operators who want to inspect an address.\nfunc (ipv6 IPv6Addr) AddressHexString() string {\n\tbi := big.Int(*ipv6.Address)\n\treturn fmt.Sprintf(\"%032s\", bi.Text(16))\n}\n\n// CmpAddress follows the Cmp() standard protocol and returns:\n//\n// - -1 If the receiver should sort first because its address is lower than arg\n// - 0 if the SockAddr arg equal to the receiving IPv6Addr or the argument is of a\n//   different type.\n// - 1 If the argument should sort first.\nfunc (ipv6 IPv6Addr) CmpAddress(sa SockAddr) int {\n\tipv6b, ok := sa.(IPv6Addr)\n\tif !ok {\n\t\treturn sortDeferDecision\n\t}\n\n\tipv6aBigInt := new(big.Int)\n\tipv6aBigInt.Set(ipv6.Address)\n\tipv6bBigInt := new(big.Int)\n\tipv6bBigInt.Set(ipv6b.Address)\n\n\treturn ipv6aBigInt.Cmp(ipv6bBigInt)\n}\n\n// CmpPort follows the Cmp() standard protocol and returns:\n//\n// - -1 If the receiver should sort first because its port is lower than arg\n// - 0 if the SockAddr arg's port number is equal to the receiving IPv6Addr,\n//   regardless of type.\n// - 1 If the argument should sort first.\nfunc (ipv6 IPv6Addr) CmpPort(sa SockAddr) int {\n\tvar saPort IPPort\n\tswitch v := sa.(type) {\n\tcase IPv4Addr:\n\t\tsaPort = v.Port\n\tcase IPv6Addr:\n\t\tsaPort = v.Port\n\tdefault:\n\t\treturn sortDeferDecision\n\t}\n\n\tswitch {\n\tcase ipv6.Port == saPort:\n\t\treturn sortDeferDecision\n\tcase ipv6.Port < saPort:\n\t\treturn sortReceiverBeforeArg\n\tdefault:\n\t\treturn sortArgBeforeReceiver\n\t}\n}\n\n// CmpRFC follows the Cmp() standard protocol and returns:\n//\n// - -1 If the receiver should sort first because it belongs to the RFC and its\n//   arg does not\n// - 0 if the receiver and arg both belong to the same RFC or neither do.\n// - 1 If the arg belongs to the RFC but receiver does not.\nfunc (ipv6 IPv6Addr) CmpRFC(rfcNum uint, sa SockAddr) int {\n\trecvInRFC := IsRFC(rfcNum, ipv6)\n\tipv6b, ok := sa.(IPv6Addr)\n\tif !ok {\n\t\t// If the receiver is part of the desired RFC and the SockAddr\n\t\t// argument is not, sort receiver before the non-IPv6 SockAddr.\n\t\t// Conversely, if the receiver is not part of the RFC, punt on\n\t\t// sorting and leave it for the next sorter.\n\t\tif recvInRFC {\n\t\t\treturn sortReceiverBeforeArg\n\t\t} else {\n\t\t\treturn sortDeferDecision\n\t\t}\n\t}\n\n\targInRFC := IsRFC(rfcNum, ipv6b)\n\tswitch {\n\tcase (recvInRFC && argInRFC), (!recvInRFC && !argInRFC):\n\t\t// If a and b both belong to the RFC, or neither belong to\n\t\t// rfcNum, defer sorting to the next sorter.\n\t\treturn sortDeferDecision\n\tcase recvInRFC && !argInRFC:\n\t\treturn sortReceiverBeforeArg\n\tdefault:\n\t\treturn sortArgBeforeReceiver\n\t}\n}\n\n// Contains returns true if the SockAddr is contained within the receiver.\nfunc (ipv6 IPv6Addr) Contains(sa SockAddr) bool {\n\tipv6b, ok := sa.(IPv6Addr)\n\tif !ok {\n\t\treturn false\n\t}\n\n\treturn ipv6.ContainsNetwork(ipv6b)\n}\n\n// ContainsAddress returns true if the IPv6Address is contained within the\n// receiver.\nfunc (ipv6 IPv6Addr) ContainsAddress(x IPv6Address) bool {\n\txAddr := IPv6Addr{\n\t\tAddress: x,\n\t\tMask:    ipv6HostMask,\n\t}\n\n\t{\n\t\txIPv6 := xAddr.FirstUsable().(IPv6Addr)\n\t\tyIPv6 := ipv6.FirstUsable().(IPv6Addr)\n\t\tif xIPv6.CmpAddress(yIPv6) >= 1 {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t{\n\t\txIPv6 := xAddr.LastUsable().(IPv6Addr)\n\t\tyIPv6 := ipv6.LastUsable().(IPv6Addr)\n\t\tif xIPv6.CmpAddress(yIPv6) <= -1 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// ContainsNetwork returns true if the network from IPv6Addr is contained within\n// the receiver.\nfunc (x IPv6Addr) ContainsNetwork(y IPv6Addr) bool {\n\t{\n\t\txIPv6 := x.FirstUsable().(IPv6Addr)\n\t\tyIPv6 := y.FirstUsable().(IPv6Addr)\n\t\tif ret := xIPv6.CmpAddress(yIPv6); ret >= 1 {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t{\n\t\txIPv6 := x.LastUsable().(IPv6Addr)\n\t\tyIPv6 := y.LastUsable().(IPv6Addr)\n\t\tif ret := xIPv6.CmpAddress(yIPv6); ret <= -1 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// DialPacketArgs returns the arguments required to be passed to\n// net.DialUDP().  If the Mask of ipv6 is not a /128 or the Port is 0,\n// DialPacketArgs() will fail.  See Host() to create an IPv6Addr with its\n// mask set to /128.\nfunc (ipv6 IPv6Addr) DialPacketArgs() (network, dialArgs string) {\n\tipv6Mask := big.Int(*ipv6.Mask)\n\tif ipv6Mask.Cmp(ipv6HostMask) != 0 || ipv6.Port == 0 {\n\t\treturn \"udp6\", \"\"\n\t}\n\treturn \"udp6\", fmt.Sprintf(\"[%s]:%d\", ipv6.NetIP().String(), ipv6.Port)\n}\n\n// DialStreamArgs returns the arguments required to be passed to\n// net.DialTCP().  If the Mask of ipv6 is not a /128 or the Port is 0,\n// DialStreamArgs() will fail.  See Host() to create an IPv6Addr with its\n// mask set to /128.\nfunc (ipv6 IPv6Addr) DialStreamArgs() (network, dialArgs string) {\n\tipv6Mask := big.Int(*ipv6.Mask)\n\tif ipv6Mask.Cmp(ipv6HostMask) != 0 || ipv6.Port == 0 {\n\t\treturn \"tcp6\", \"\"\n\t}\n\treturn \"tcp6\", fmt.Sprintf(\"[%s]:%d\", ipv6.NetIP().String(), ipv6.Port)\n}\n\n// Equal returns true if a SockAddr is equal to the receiving IPv4Addr.\nfunc (ipv6a IPv6Addr) Equal(sa SockAddr) bool {\n\tipv6b, ok := sa.(IPv6Addr)\n\tif !ok {\n\t\treturn false\n\t}\n\n\tif ipv6a.NetIP().String() != ipv6b.NetIP().String() {\n\t\treturn false\n\t}\n\n\tif ipv6a.NetIPNet().String() != ipv6b.NetIPNet().String() {\n\t\treturn false\n\t}\n\n\tif ipv6a.Port != ipv6b.Port {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n// FirstUsable returns an IPv6Addr set to the first address following the\n// network prefix.  The first usable address in a network is normally the\n// gateway and should not be used except by devices forwarding packets\n// between two administratively distinct networks (i.e. a router).  This\n// function does not discriminate against first usable vs \"first address that\n// should be used.\"  For example, FirstUsable() on \"2001:0db8::0003/64\" would\n// return \"2001:0db8::00011\".\nfunc (ipv6 IPv6Addr) FirstUsable() IPAddr {\n\treturn IPv6Addr{\n\t\tAddress: IPv6Address(ipv6.NetworkAddress()),\n\t\tMask:    ipv6HostMask,\n\t}\n}\n\n// Host returns a copy of ipv6 with its mask set to /128 so that it can be\n// used by DialPacketArgs(), DialStreamArgs(), ListenPacketArgs(), or\n// ListenStreamArgs().\nfunc (ipv6 IPv6Addr) Host() IPAddr {\n\t// Nothing should listen on a broadcast address.\n\treturn IPv6Addr{\n\t\tAddress: ipv6.Address,\n\t\tMask:    ipv6HostMask,\n\t\tPort:    ipv6.Port,\n\t}\n}\n\n// IPPort returns the Port number attached to the IPv6Addr\nfunc (ipv6 IPv6Addr) IPPort() IPPort {\n\treturn ipv6.Port\n}\n\n// LastUsable returns the last address in a given network.\nfunc (ipv6 IPv6Addr) LastUsable() IPAddr {\n\taddr := new(big.Int)\n\taddr.Set(ipv6.Address)\n\n\tmask := new(big.Int)\n\tmask.Set(ipv6.Mask)\n\n\tnegMask := new(big.Int)\n\tnegMask.Xor(ipv6HostMask, mask)\n\n\tlastAddr := new(big.Int)\n\tlastAddr.And(addr, mask)\n\tlastAddr.Or(lastAddr, negMask)\n\n\treturn IPv6Addr{\n\t\tAddress: IPv6Address(lastAddr),\n\t\tMask:    ipv6HostMask,\n\t}\n}\n\n// ListenPacketArgs returns the arguments required to be passed to\n// net.ListenUDP().  If the Mask of ipv6 is not a /128, ListenPacketArgs()\n// will fail.  See Host() to create an IPv6Addr with its mask set to /128.\nfunc (ipv6 IPv6Addr) ListenPacketArgs() (network, listenArgs string) {\n\tipv6Mask := big.Int(*ipv6.Mask)\n\tif ipv6Mask.Cmp(ipv6HostMask) != 0 {\n\t\treturn \"udp6\", \"\"\n\t}\n\treturn \"udp6\", fmt.Sprintf(\"[%s]:%d\", ipv6.NetIP().String(), ipv6.Port)\n}\n\n// ListenStreamArgs returns the arguments required to be passed to\n// net.ListenTCP().  If the Mask of ipv6 is not a /128, ListenStreamArgs()\n// will fail.  See Host() to create an IPv6Addr with its mask set to /128.\nfunc (ipv6 IPv6Addr) ListenStreamArgs() (network, listenArgs string) {\n\tipv6Mask := big.Int(*ipv6.Mask)\n\tif ipv6Mask.Cmp(ipv6HostMask) != 0 {\n\t\treturn \"tcp6\", \"\"\n\t}\n\treturn \"tcp6\", fmt.Sprintf(\"[%s]:%d\", ipv6.NetIP().String(), ipv6.Port)\n}\n\n// Maskbits returns the number of network mask bits in a given IPv6Addr.  For\n// example, the Maskbits() of \"2001:0db8::0003/64\" would return 64.\nfunc (ipv6 IPv6Addr) Maskbits() int {\n\tmaskOnes, _ := ipv6.NetIPNet().Mask.Size()\n\n\treturn maskOnes\n}\n\n// MustIPv6Addr is a helper method that must return an IPv6Addr or panic on\n// invalid input.\nfunc MustIPv6Addr(addr string) IPv6Addr {\n\tipv6, err := NewIPv6Addr(addr)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"Unable to create an IPv6Addr from %+q: %v\", addr, err))\n\t}\n\treturn ipv6\n}\n\n// NetIP returns the address as a net.IP.\nfunc (ipv6 IPv6Addr) NetIP() *net.IP {\n\treturn bigIntToNetIPv6(ipv6.Address)\n}\n\n// NetIPMask create a new net.IPMask from the IPv6Addr.\nfunc (ipv6 IPv6Addr) NetIPMask() *net.IPMask {\n\tipv6Mask := make(net.IPMask, IPv6len)\n\tm := big.Int(*ipv6.Mask)\n\tcopy(ipv6Mask, m.Bytes())\n\treturn &ipv6Mask\n}\n\n// Network returns a pointer to the net.IPNet within IPv4Addr receiver.\nfunc (ipv6 IPv6Addr) NetIPNet() *net.IPNet {\n\tipv6net := &net.IPNet{}\n\tipv6net.IP = make(net.IP, IPv6len)\n\tcopy(ipv6net.IP, *ipv6.NetIP())\n\tipv6net.Mask = *ipv6.NetIPMask()\n\treturn ipv6net\n}\n\n// Network returns the network prefix or network address for a given network.\nfunc (ipv6 IPv6Addr) Network() IPAddr {\n\treturn IPv6Addr{\n\t\tAddress: IPv6Address(ipv6.NetworkAddress()),\n\t\tMask:    ipv6.Mask,\n\t}\n}\n\n// NetworkAddress returns an IPv6Network of the IPv6Addr's network address.\nfunc (ipv6 IPv6Addr) NetworkAddress() IPv6Network {\n\taddr := new(big.Int)\n\taddr.SetBytes((*ipv6.Address).Bytes())\n\n\tmask := new(big.Int)\n\tmask.SetBytes(*ipv6.NetIPMask())\n\n\tnetAddr := new(big.Int)\n\tnetAddr.And(addr, mask)\n\n\treturn IPv6Network(netAddr)\n}\n\n// Octets returns a slice of the 16 octets in an IPv6Addr's Address.  The\n// order of the bytes is big endian.\nfunc (ipv6 IPv6Addr) Octets() []int {\n\tx := make([]int, IPv6len)\n\tfor i, b := range *bigIntToNetIPv6(ipv6.Address) {\n\t\tx[i] = int(b)\n\t}\n\n\treturn x\n}\n\n// String returns a string representation of the IPv6Addr\nfunc (ipv6 IPv6Addr) String() string {\n\tif ipv6.Port != 0 {\n\t\treturn fmt.Sprintf(\"[%s]:%d\", ipv6.NetIP().String(), ipv6.Port)\n\t}\n\n\tif ipv6.Maskbits() == 128 {\n\t\treturn ipv6.NetIP().String()\n\t}\n\n\treturn fmt.Sprintf(\"%s/%d\", ipv6.NetIP().String(), ipv6.Maskbits())\n}\n\n// Type is used as a type switch and returns TypeIPv6\nfunc (IPv6Addr) Type() SockAddrType {\n\treturn TypeIPv6\n}\n\n// IPv6Attrs returns a list of attributes supported by the IPv6Addr type\nfunc IPv6Attrs() []AttrName {\n\treturn ipv6AddrAttrs\n}\n\n// IPv6AddrAttr returns a string representation of an attribute for the given\n// IPv6Addr.\nfunc IPv6AddrAttr(ipv6 IPv6Addr, selector AttrName) string {\n\tfn, found := ipv6AddrAttrMap[selector]\n\tif !found {\n\t\treturn \"\"\n\t}\n\n\treturn fn(ipv6)\n}\n\n// ipv6AddrInit is called once at init()\nfunc ipv6AddrInit() {\n\t// Sorted for human readability\n\tipv6AddrAttrs = []AttrName{\n\t\t\"size\", // Same position as in IPv6 for output consistency\n\t\t\"uint128\",\n\t}\n\n\tipv6AddrAttrMap = map[AttrName]func(ipv6 IPv6Addr) string{\n\t\t\"size\": func(ipv6 IPv6Addr) string {\n\t\t\tnetSize := big.NewInt(1)\n\t\t\tnetSize = netSize.Lsh(netSize, uint(IPv6len*8-ipv6.Maskbits()))\n\t\t\treturn netSize.Text(10)\n\t\t},\n\t\t\"uint128\": func(ipv6 IPv6Addr) string {\n\t\t\tb := big.Int(*ipv6.Address)\n\t\t\treturn b.Text(10)\n\t\t},\n\t}\n}\n\n// bigIntToNetIPv6 is a helper function that correctly returns a net.IP with the\n// correctly padded values.\nfunc bigIntToNetIPv6(bi *big.Int) *net.IP {\n\tx := make(net.IP, IPv6len)\n\tipv6Bytes := bi.Bytes()\n\n\t// It's possibe for ipv6Bytes to be less than IPv6len bytes in size.  If\n\t// they are different sizes we to pad the size of response.\n\tif len(ipv6Bytes) < IPv6len {\n\t\tbuf := new(bytes.Buffer)\n\t\tbuf.Grow(IPv6len)\n\n\t\tfor i := len(ipv6Bytes); i < IPv6len; i++ {\n\t\t\tif err := binary.Write(buf, binary.BigEndian, byte(0)); err != nil {\n\t\t\t\tpanic(fmt.Sprintf(\"Unable to pad byte %d of input %v: %v\", i, bi, err))\n\t\t\t}\n\t\t}\n\n\t\tfor _, b := range ipv6Bytes {\n\t\t\tif err := binary.Write(buf, binary.BigEndian, b); err != nil {\n\t\t\t\tpanic(fmt.Sprintf(\"Unable to preserve endianness of input %v: %v\", bi, err))\n\t\t\t}\n\t\t}\n\n\t\tipv6Bytes = buf.Bytes()\n\t}\n\ti := copy(x, ipv6Bytes)\n\tif i != IPv6len {\n\t\tpanic(\"IPv6 wrong size\")\n\t}\n\treturn &x\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/rfc.go",
    "content": "package sockaddr\n\n// ForwardingBlacklist is a faux RFC that includes a list of non-forwardable IP\n// blocks.\nconst ForwardingBlacklist = 4294967295\nconst ForwardingBlacklistRFC = \"4294967295\"\n\n// IsRFC tests to see if an SockAddr matches the specified RFC\nfunc IsRFC(rfcNum uint, sa SockAddr) bool {\n\trfcNetMap := KnownRFCs()\n\trfcNets, ok := rfcNetMap[rfcNum]\n\tif !ok {\n\t\treturn false\n\t}\n\n\tvar contained bool\n\tfor _, rfcNet := range rfcNets {\n\t\tif rfcNet.Contains(sa) {\n\t\t\tcontained = true\n\t\t\tbreak\n\t\t}\n\t}\n\treturn contained\n}\n\n// KnownRFCs returns an initial set of known RFCs.\n//\n// NOTE (sean@): As this list evolves over time, please submit patches to keep\n// this list current.  If something isn't right, inquire, as it may just be a\n// bug on my part.  Some of the inclusions were based on my judgement as to what\n// would be a useful value (e.g. RFC3330).\n//\n// Useful resources:\n//\n// * https://www.iana.org/assignments/ipv6-address-space/ipv6-address-space.xhtml\n// * https://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xhtml\n// * https://www.iana.org/assignments/ipv6-address-space/ipv6-address-space.xhtml\nfunc KnownRFCs() map[uint]SockAddrs {\n\t// NOTE(sean@): Multiple SockAddrs per RFC lend themselves well to a\n\t// RADIX tree, but `ENOTIME`.  Patches welcome.\n\treturn map[uint]SockAddrs{\n\t\t919: {\n\t\t\t// [RFC919] Broadcasting Internet Datagrams\n\t\t\tMustIPv4Addr(\"255.255.255.255/32\"), // [RFC1122], §7 Broadcast IP Addressing - Proposed Standards\n\t\t},\n\t\t1122: {\n\t\t\t// [RFC1122] Requirements for Internet Hosts -- Communication Layers\n\t\t\tMustIPv4Addr(\"0.0.0.0/8\"),   // [RFC1122], §3.2.1.3\n\t\t\tMustIPv4Addr(\"127.0.0.0/8\"), // [RFC1122], §3.2.1.3\n\t\t},\n\t\t1112: {\n\t\t\t// [RFC1112] Host Extensions for IP Multicasting\n\t\t\tMustIPv4Addr(\"224.0.0.0/4\"), // [RFC1112], §4 Host Group Addresses\n\t\t},\n\t\t1918: {\n\t\t\t// [RFC1918] Address Allocation for Private Internets\n\t\t\tMustIPv4Addr(\"10.0.0.0/8\"),\n\t\t\tMustIPv4Addr(\"172.16.0.0/12\"),\n\t\t\tMustIPv4Addr(\"192.168.0.0/16\"),\n\t\t},\n\t\t2544: {\n\t\t\t// [RFC2544] Benchmarking Methodology for Network\n\t\t\t// Interconnect Devices\n\t\t\tMustIPv4Addr(\"198.18.0.0/15\"),\n\t\t},\n\t\t2765: {\n\t\t\t// [RFC2765] Stateless IP/ICMP Translation Algorithm\n\t\t\t// (SIIT) (obsoleted by RFCs 6145, which itself was\n\t\t\t// later obsoleted by 7915).\n\n\t\t\t// [RFC2765], §2.1 Addresses\n\t\t\tMustIPv6Addr(\"0:0:0:0:0:ffff:0:0/96\"),\n\t\t},\n\t\t2928: {\n\t\t\t// [RFC2928] Initial IPv6 Sub-TLA ID Assignments\n\t\t\tMustIPv6Addr(\"2001::/16\"), // Superblock\n\t\t\t//MustIPv6Addr(\"2001:0000::/23\"), // IANA\n\t\t\t//MustIPv6Addr(\"2001:0200::/23\"), // APNIC\n\t\t\t//MustIPv6Addr(\"2001:0400::/23\"), // ARIN\n\t\t\t//MustIPv6Addr(\"2001:0600::/23\"), // RIPE NCC\n\t\t\t//MustIPv6Addr(\"2001:0800::/23\"), // (future assignment)\n\t\t\t// ...\n\t\t\t//MustIPv6Addr(\"2001:FE00::/23\"), // (future assignment)\n\t\t},\n\t\t3056: { // 6to4 address\n\t\t\t// [RFC3056] Connection of IPv6 Domains via IPv4 Clouds\n\n\t\t\t// [RFC3056], §2 IPv6 Prefix Allocation\n\t\t\tMustIPv6Addr(\"2002::/16\"),\n\t\t},\n\t\t3068: {\n\t\t\t// [RFC3068] An Anycast Prefix for 6to4 Relay Routers\n\t\t\t// (obsolete by RFC7526)\n\n\t\t\t// [RFC3068], § 6to4 Relay anycast address\n\t\t\tMustIPv4Addr(\"192.88.99.0/24\"),\n\n\t\t\t// [RFC3068], §2.5 6to4 IPv6 relay anycast address\n\t\t\t//\n\t\t\t// NOTE: /120 == 128-(32-24)\n\t\t\tMustIPv6Addr(\"2002:c058:6301::/120\"),\n\t\t},\n\t\t3171: {\n\t\t\t// [RFC3171] IANA Guidelines for IPv4 Multicast Address Assignments\n\t\t\tMustIPv4Addr(\"224.0.0.0/4\"),\n\t\t},\n\t\t3330: {\n\t\t\t// [RFC3330] Special-Use IPv4 Addresses\n\n\t\t\t// Addresses in this block refer to source hosts on\n\t\t\t// \"this\" network.  Address 0.0.0.0/32 may be used as a\n\t\t\t// source address for this host on this network; other\n\t\t\t// addresses within 0.0.0.0/8 may be used to refer to\n\t\t\t// specified hosts on this network [RFC1700, page 4].\n\t\t\tMustIPv4Addr(\"0.0.0.0/8\"),\n\n\t\t\t// 10.0.0.0/8 - This block is set aside for use in\n\t\t\t// private networks.  Its intended use is documented in\n\t\t\t// [RFC1918].  Addresses within this block should not\n\t\t\t// appear on the public Internet.\n\t\t\tMustIPv4Addr(\"10.0.0.0/8\"),\n\n\t\t\t// 14.0.0.0/8 - This block is set aside for assignments\n\t\t\t// to the international system of Public Data Networks\n\t\t\t// [RFC1700, page 181]. The registry of assignments\n\t\t\t// within this block can be accessed from the \"Public\n\t\t\t// Data Network Numbers\" link on the web page at\n\t\t\t// http://www.iana.org/numbers.html.  Addresses within\n\t\t\t// this block are assigned to users and should be\n\t\t\t// treated as such.\n\n\t\t\t// 24.0.0.0/8 - This block was allocated in early 1996\n\t\t\t// for use in provisioning IP service over cable\n\t\t\t// television systems.  Although the IANA initially was\n\t\t\t// involved in making assignments to cable operators,\n\t\t\t// this responsibility was transferred to American\n\t\t\t// Registry for Internet Numbers (ARIN) in May 2001.\n\t\t\t// Addresses within this block are assigned in the\n\t\t\t// normal manner and should be treated as such.\n\n\t\t\t// 39.0.0.0/8 - This block was used in the \"Class A\n\t\t\t// Subnet Experiment\" that commenced in May 1995, as\n\t\t\t// documented in [RFC1797].  The experiment has been\n\t\t\t// completed and this block has been returned to the\n\t\t\t// pool of addresses reserved for future allocation or\n\t\t\t// assignment.  This block therefore no longer has a\n\t\t\t// special use and is subject to allocation to a\n\t\t\t// Regional Internet Registry for assignment in the\n\t\t\t// normal manner.\n\n\t\t\t// 127.0.0.0/8 - This block is assigned for use as the Internet host\n\t\t\t// loopback address.  A datagram sent by a higher level protocol to an\n\t\t\t// address anywhere within this block should loop back inside the host.\n\t\t\t// This is ordinarily implemented using only 127.0.0.1/32 for loopback,\n\t\t\t// but no addresses within this block should ever appear on any network\n\t\t\t// anywhere [RFC1700, page 5].\n\t\t\tMustIPv4Addr(\"127.0.0.0/8\"),\n\n\t\t\t// 128.0.0.0/16 - This block, corresponding to the\n\t\t\t// numerically lowest of the former Class B addresses,\n\t\t\t// was initially and is still reserved by the IANA.\n\t\t\t// Given the present classless nature of the IP address\n\t\t\t// space, the basis for the reservation no longer\n\t\t\t// applies and addresses in this block are subject to\n\t\t\t// future allocation to a Regional Internet Registry for\n\t\t\t// assignment in the normal manner.\n\n\t\t\t// 169.254.0.0/16 - This is the \"link local\" block.  It\n\t\t\t// is allocated for communication between hosts on a\n\t\t\t// single link.  Hosts obtain these addresses by\n\t\t\t// auto-configuration, such as when a DHCP server may\n\t\t\t// not be found.\n\t\t\tMustIPv4Addr(\"169.254.0.0/16\"),\n\n\t\t\t// 172.16.0.0/12 - This block is set aside for use in\n\t\t\t// private networks.  Its intended use is documented in\n\t\t\t// [RFC1918].  Addresses within this block should not\n\t\t\t// appear on the public Internet.\n\t\t\tMustIPv4Addr(\"172.16.0.0/12\"),\n\n\t\t\t// 191.255.0.0/16 - This block, corresponding to the numerically highest\n\t\t\t// to the former Class B addresses, was initially and is still reserved\n\t\t\t// by the IANA.  Given the present classless nature of the IP address\n\t\t\t// space, the basis for the reservation no longer applies and addresses\n\t\t\t// in this block are subject to future allocation to a Regional Internet\n\t\t\t// Registry for assignment in the normal manner.\n\n\t\t\t// 192.0.0.0/24 - This block, corresponding to the\n\t\t\t// numerically lowest of the former Class C addresses,\n\t\t\t// was initially and is still reserved by the IANA.\n\t\t\t// Given the present classless nature of the IP address\n\t\t\t// space, the basis for the reservation no longer\n\t\t\t// applies and addresses in this block are subject to\n\t\t\t// future allocation to a Regional Internet Registry for\n\t\t\t// assignment in the normal manner.\n\n\t\t\t// 192.0.2.0/24 - This block is assigned as \"TEST-NET\" for use in\n\t\t\t// documentation and example code.  It is often used in conjunction with\n\t\t\t// domain names example.com or example.net in vendor and protocol\n\t\t\t// documentation.  Addresses within this block should not appear on the\n\t\t\t// public Internet.\n\t\t\tMustIPv4Addr(\"192.0.2.0/24\"),\n\n\t\t\t// 192.88.99.0/24 - This block is allocated for use as 6to4 relay\n\t\t\t// anycast addresses, according to [RFC3068].\n\t\t\tMustIPv4Addr(\"192.88.99.0/24\"),\n\n\t\t\t// 192.168.0.0/16 - This block is set aside for use in private networks.\n\t\t\t// Its intended use is documented in [RFC1918].  Addresses within this\n\t\t\t// block should not appear on the public Internet.\n\t\t\tMustIPv4Addr(\"192.168.0.0/16\"),\n\n\t\t\t// 198.18.0.0/15 - This block has been allocated for use\n\t\t\t// in benchmark tests of network interconnect devices.\n\t\t\t// Its use is documented in [RFC2544].\n\t\t\tMustIPv4Addr(\"198.18.0.0/15\"),\n\n\t\t\t// 223.255.255.0/24 - This block, corresponding to the\n\t\t\t// numerically highest of the former Class C addresses,\n\t\t\t// was initially and is still reserved by the IANA.\n\t\t\t// Given the present classless nature of the IP address\n\t\t\t// space, the basis for the reservation no longer\n\t\t\t// applies and addresses in this block are subject to\n\t\t\t// future allocation to a Regional Internet Registry for\n\t\t\t// assignment in the normal manner.\n\n\t\t\t// 224.0.0.0/4 - This block, formerly known as the Class\n\t\t\t// D address space, is allocated for use in IPv4\n\t\t\t// multicast address assignments.  The IANA guidelines\n\t\t\t// for assignments from this space are described in\n\t\t\t// [RFC3171].\n\t\t\tMustIPv4Addr(\"224.0.0.0/4\"),\n\n\t\t\t// 240.0.0.0/4 - This block, formerly known as the Class E address\n\t\t\t// space, is reserved.  The \"limited broadcast\" destination address\n\t\t\t// 255.255.255.255 should never be forwarded outside the (sub-)net of\n\t\t\t// the source.  The remainder of this space is reserved\n\t\t\t// for future use.  [RFC1700, page 4]\n\t\t\tMustIPv4Addr(\"240.0.0.0/4\"),\n\t\t},\n\t\t3849: {\n\t\t\t// [RFC3849] IPv6 Address Prefix Reserved for Documentation\n\t\t\tMustIPv6Addr(\"2001:db8::/32\"), // [RFC3849], §4 IANA Considerations\n\t\t},\n\t\t3927: {\n\t\t\t// [RFC3927] Dynamic Configuration of IPv4 Link-Local Addresses\n\t\t\tMustIPv4Addr(\"169.254.0.0/16\"), // [RFC3927], §2.1 Link-Local Address Selection\n\t\t},\n\t\t4038: {\n\t\t\t// [RFC4038] Application Aspects of IPv6 Transition\n\n\t\t\t// [RFC4038], §4.2. IPv6 Applications in a Dual-Stack Node\n\t\t\tMustIPv6Addr(\"0:0:0:0:0:ffff::/96\"),\n\t\t},\n\t\t4193: {\n\t\t\t// [RFC4193] Unique Local IPv6 Unicast Addresses\n\t\t\tMustIPv6Addr(\"fc00::/7\"),\n\t\t},\n\t\t4291: {\n\t\t\t// [RFC4291] IP Version 6 Addressing Architecture\n\n\t\t\t// [RFC4291], §2.5.2 The Unspecified Address\n\t\t\tMustIPv6Addr(\"::/128\"),\n\n\t\t\t// [RFC4291], §2.5.3 The Loopback Address\n\t\t\tMustIPv6Addr(\"::1/128\"),\n\n\t\t\t// [RFC4291], §2.5.5.1.  IPv4-Compatible IPv6 Address\n\t\t\tMustIPv6Addr(\"::/96\"),\n\n\t\t\t// [RFC4291], §2.5.5.2.  IPv4-Mapped IPv6 Address\n\t\t\tMustIPv6Addr(\"::ffff:0:0/96\"),\n\n\t\t\t// [RFC4291], §2.5.6 Link-Local IPv6 Unicast Addresses\n\t\t\tMustIPv6Addr(\"fe80::/10\"),\n\n\t\t\t// [RFC4291], §2.5.7 Site-Local IPv6 Unicast Addresses\n\t\t\t// (depreciated)\n\t\t\tMustIPv6Addr(\"fec0::/10\"),\n\n\t\t\t// [RFC4291], §2.7 Multicast Addresses\n\t\t\tMustIPv6Addr(\"ff00::/8\"),\n\n\t\t\t// IPv6 Multicast Information.\n\t\t\t//\n\t\t\t// In the following \"table\" below, `ff0x` is replaced\n\t\t\t// with the following values depending on the scope of\n\t\t\t// the query:\n\t\t\t//\n\t\t\t// IPv6 Multicast Scopes:\n\t\t\t// * ff00/9 // reserved\n\t\t\t// * ff01/9 // interface-local\n\t\t\t// * ff02/9 // link-local\n\t\t\t// * ff03/9 // realm-local\n\t\t\t// * ff04/9 // admin-local\n\t\t\t// * ff05/9 // site-local\n\t\t\t// * ff08/9 // organization-local\n\t\t\t// * ff0e/9 // global\n\t\t\t// * ff0f/9 // reserved\n\t\t\t//\n\t\t\t// IPv6 Multicast Addresses:\n\t\t\t// * ff0x::2 // All routers\n\t\t\t// * ff02::5 // OSPFIGP\n\t\t\t// * ff02::6 // OSPFIGP Designated Routers\n\t\t\t// * ff02::9 // RIP Routers\n\t\t\t// * ff02::a // EIGRP Routers\n\t\t\t// * ff02::d // All PIM Routers\n\t\t\t// * ff02::1a // All RPL Routers\n\t\t\t// * ff0x::fb // mDNSv6\n\t\t\t// * ff0x::101 // All Network Time Protocol (NTP) servers\n\t\t\t// * ff02::1:1 // Link Name\n\t\t\t// * ff02::1:2 // All-dhcp-agents\n\t\t\t// * ff02::1:3 // Link-local Multicast Name Resolution\n\t\t\t// * ff05::1:3 // All-dhcp-servers\n\t\t\t// * ff02::1:ff00:0/104 // Solicited-node multicast address.\n\t\t\t// * ff02::2:ff00:0/104 // Node Information Queries\n\t\t},\n\t\t4380: {\n\t\t\t// [RFC4380] Teredo: Tunneling IPv6 over UDP through\n\t\t\t// Network Address Translations (NATs)\n\n\t\t\t// [RFC4380], §2.6 Global Teredo IPv6 Service Prefix\n\t\t\tMustIPv6Addr(\"2001:0000::/32\"),\n\t\t},\n\t\t4773: {\n\t\t\t// [RFC4773] Administration of the IANA Special Purpose IPv6 Address Block\n\t\t\tMustIPv6Addr(\"2001:0000::/23\"), // IANA\n\t\t},\n\t\t4843: {\n\t\t\t// [RFC4843] An IPv6 Prefix for Overlay Routable Cryptographic Hash Identifiers (ORCHID)\n\t\t\tMustIPv6Addr(\"2001:10::/28\"), // [RFC4843], §7 IANA Considerations\n\t\t},\n\t\t5180: {\n\t\t\t// [RFC5180] IPv6 Benchmarking Methodology for Network Interconnect Devices\n\t\t\tMustIPv6Addr(\"2001:0200::/48\"), // [RFC5180], §8 IANA Considerations\n\t\t},\n\t\t5735: {\n\t\t\t// [RFC5735] Special Use IPv4 Addresses\n\t\t\tMustIPv4Addr(\"192.0.2.0/24\"),    // TEST-NET-1\n\t\t\tMustIPv4Addr(\"198.51.100.0/24\"), // TEST-NET-2\n\t\t\tMustIPv4Addr(\"203.0.113.0/24\"),  // TEST-NET-3\n\t\t\tMustIPv4Addr(\"198.18.0.0/15\"),   // Benchmarks\n\t\t},\n\t\t5737: {\n\t\t\t// [RFC5737] IPv4 Address Blocks Reserved for Documentation\n\t\t\tMustIPv4Addr(\"192.0.2.0/24\"),    // TEST-NET-1\n\t\t\tMustIPv4Addr(\"198.51.100.0/24\"), // TEST-NET-2\n\t\t\tMustIPv4Addr(\"203.0.113.0/24\"),  // TEST-NET-3\n\t\t},\n\t\t6052: {\n\t\t\t// [RFC6052] IPv6 Addressing of IPv4/IPv6 Translators\n\t\t\tMustIPv6Addr(\"64:ff9b::/96\"), // [RFC6052], §2.1. Well-Known Prefix\n\t\t},\n\t\t6333: {\n\t\t\t// [RFC6333] Dual-Stack Lite Broadband Deployments Following IPv4 Exhaustion\n\t\t\tMustIPv4Addr(\"192.0.0.0/29\"), // [RFC6333], §5.7 Well-Known IPv4 Address\n\t\t},\n\t\t6598: {\n\t\t\t// [RFC6598] IANA-Reserved IPv4 Prefix for Shared Address Space\n\t\t\tMustIPv4Addr(\"100.64.0.0/10\"),\n\t\t},\n\t\t6666: {\n\t\t\t// [RFC6666] A Discard Prefix for IPv6\n\t\t\tMustIPv6Addr(\"0100::/64\"),\n\t\t},\n\t\t6890: {\n\t\t\t// [RFC6890] Special-Purpose IP Address Registries\n\n\t\t\t// From \"RFC6890 §2.2.1 Information Requirements\":\n\t\t\t/*\n\t\t\t   The IPv4 and IPv6 Special-Purpose Address Registries maintain the\n\t\t\t   following information regarding each entry:\n\n\t\t\t   o  Address Block - A block of IPv4 or IPv6 addresses that has been\n\t\t\t      registered for a special purpose.\n\n\t\t\t   o  Name - A descriptive name for the special-purpose address block.\n\n\t\t\t   o  RFC - The RFC through which the special-purpose address block was\n\t\t\t      requested.\n\n\t\t\t   o  Allocation Date - The date upon which the special-purpose address\n\t\t\t      block was allocated.\n\n\t\t\t   o  Termination Date - The date upon which the allocation is to be\n\t\t\t      terminated.  This field is applicable for limited-use allocations\n\t\t\t      only.\n\n\t\t\t   o  Source - A boolean value indicating whether an address from the\n\t\t\t      allocated special-purpose address block is valid when used as the\n\t\t\t      source address of an IP datagram that transits two devices.\n\n\t\t\t   o  Destination - A boolean value indicating whether an address from\n\t\t\t      the allocated special-purpose address block is valid when used as\n\t\t\t      the destination address of an IP datagram that transits two\n\t\t\t      devices.\n\n\t\t\t   o  Forwardable - A boolean value indicating whether a router may\n\t\t\t      forward an IP datagram whose destination address is drawn from the\n\t\t\t      allocated special-purpose address block between external\n\t\t\t      interfaces.\n\n\t\t\t   o  Global - A boolean value indicating whether an IP datagram whose\n\t\t\t      destination address is drawn from the allocated special-purpose\n\t\t\t      address block is forwardable beyond a specified administrative\n\t\t\t      domain.\n\n\t\t\t   o  Reserved-by-Protocol - A boolean value indicating whether the\n\t\t\t      special-purpose address block is reserved by IP, itself.  This\n\t\t\t      value is \"TRUE\" if the RFC that created the special-purpose\n\t\t\t      address block requires all compliant IP implementations to behave\n\t\t\t      in a special way when processing packets either to or from\n\t\t\t      addresses contained by the address block.\n\n\t\t\t   If the value of \"Destination\" is FALSE, the values of \"Forwardable\"\n\t\t\t   and \"Global\" must also be false.\n\t\t\t*/\n\n\t\t\t/*+----------------------+----------------------------+\n\t\t\t* | Attribute            | Value                      |\n\t\t\t* +----------------------+----------------------------+\n\t\t\t* | Address Block        | 0.0.0.0/8                  |\n\t\t\t* | Name                 | \"This host on this network\"|\n\t\t\t* | RFC                  | [RFC1122], Section 3.2.1.3 |\n\t\t\t* | Allocation Date      | September 1981             |\n\t\t\t* | Termination Date     | N/A                        |\n\t\t\t* | Source               | True                       |\n\t\t\t* | Destination          | False                      |\n\t\t\t* | Forwardable          | False                      |\n\t\t\t* | Global               | False                      |\n\t\t\t* | Reserved-by-Protocol | True                       |\n\t\t\t* +----------------------+----------------------------+*/\n\t\t\tMustIPv4Addr(\"0.0.0.0/8\"),\n\n\t\t\t/*+----------------------+---------------+\n\t\t\t* | Attribute            | Value         |\n\t\t\t* +----------------------+---------------+\n\t\t\t* | Address Block        | 10.0.0.0/8    |\n\t\t\t* | Name                 | Private-Use   |\n\t\t\t* | RFC                  | [RFC1918]     |\n\t\t\t* | Allocation Date      | February 1996 |\n\t\t\t* | Termination Date     | N/A           |\n\t\t\t* | Source               | True          |\n\t\t\t* | Destination          | True          |\n\t\t\t* | Forwardable          | True          |\n\t\t\t* | Global               | False         |\n\t\t\t* | Reserved-by-Protocol | False         |\n\t\t\t* +----------------------+---------------+ */\n\t\t\tMustIPv4Addr(\"10.0.0.0/8\"),\n\n\t\t\t/*+----------------------+----------------------+\n\t\t\t  | Attribute            | Value                |\n\t\t\t  +----------------------+----------------------+\n\t\t\t  | Address Block        | 100.64.0.0/10        |\n\t\t\t  | Name                 | Shared Address Space |\n\t\t\t  | RFC                  | [RFC6598]            |\n\t\t\t  | Allocation Date      | April 2012           |\n\t\t\t  | Termination Date     | N/A                  |\n\t\t\t  | Source               | True                 |\n\t\t\t  | Destination          | True                 |\n\t\t\t  | Forwardable          | True                 |\n\t\t\t  | Global               | False                |\n\t\t\t  | Reserved-by-Protocol | False                |\n\t\t\t  +----------------------+----------------------+*/\n\t\t\tMustIPv4Addr(\"100.64.0.0/10\"),\n\n\t\t\t/*+----------------------+----------------------------+\n\t\t\t  | Attribute            | Value                      |\n\t\t\t  +----------------------+----------------------------+\n\t\t\t  | Address Block        | 127.0.0.0/8                |\n\t\t\t  | Name                 | Loopback                   |\n\t\t\t  | RFC                  | [RFC1122], Section 3.2.1.3 |\n\t\t\t  | Allocation Date      | September 1981             |\n\t\t\t  | Termination Date     | N/A                        |\n\t\t\t  | Source               | False [1]                  |\n\t\t\t  | Destination          | False [1]                  |\n\t\t\t  | Forwardable          | False [1]                  |\n\t\t\t  | Global               | False [1]                  |\n\t\t\t  | Reserved-by-Protocol | True                       |\n\t\t\t  +----------------------+----------------------------+*/\n\t\t\t// [1] Several protocols have been granted exceptions to\n\t\t\t// this rule.  For examples, see [RFC4379] and\n\t\t\t// [RFC5884].\n\t\t\tMustIPv4Addr(\"127.0.0.0/8\"),\n\n\t\t\t/*+----------------------+----------------+\n\t\t\t  | Attribute            | Value          |\n\t\t\t  +----------------------+----------------+\n\t\t\t  | Address Block        | 169.254.0.0/16 |\n\t\t\t  | Name                 | Link Local     |\n\t\t\t  | RFC                  | [RFC3927]      |\n\t\t\t  | Allocation Date      | May 2005       |\n\t\t\t  | Termination Date     | N/A            |\n\t\t\t  | Source               | True           |\n\t\t\t  | Destination          | True           |\n\t\t\t  | Forwardable          | False          |\n\t\t\t  | Global               | False          |\n\t\t\t  | Reserved-by-Protocol | True           |\n\t\t\t  +----------------------+----------------+*/\n\t\t\tMustIPv4Addr(\"169.254.0.0/16\"),\n\n\t\t\t/*+----------------------+---------------+\n\t\t\t  | Attribute            | Value         |\n\t\t\t  +----------------------+---------------+\n\t\t\t  | Address Block        | 172.16.0.0/12 |\n\t\t\t  | Name                 | Private-Use   |\n\t\t\t  | RFC                  | [RFC1918]     |\n\t\t\t  | Allocation Date      | February 1996 |\n\t\t\t  | Termination Date     | N/A           |\n\t\t\t  | Source               | True          |\n\t\t\t  | Destination          | True          |\n\t\t\t  | Forwardable          | True          |\n\t\t\t  | Global               | False         |\n\t\t\t  | Reserved-by-Protocol | False         |\n\t\t\t  +----------------------+---------------+*/\n\t\t\tMustIPv4Addr(\"172.16.0.0/12\"),\n\n\t\t\t/*+----------------------+---------------------------------+\n\t\t\t  | Attribute            | Value                           |\n\t\t\t  +----------------------+---------------------------------+\n\t\t\t  | Address Block        | 192.0.0.0/24 [2]                |\n\t\t\t  | Name                 | IETF Protocol Assignments       |\n\t\t\t  | RFC                  | Section 2.1 of this document    |\n\t\t\t  | Allocation Date      | January 2010                    |\n\t\t\t  | Termination Date     | N/A                             |\n\t\t\t  | Source               | False                           |\n\t\t\t  | Destination          | False                           |\n\t\t\t  | Forwardable          | False                           |\n\t\t\t  | Global               | False                           |\n\t\t\t  | Reserved-by-Protocol | False                           |\n\t\t\t  +----------------------+---------------------------------+*/\n\t\t\t// [2] Not usable unless by virtue of a more specific\n\t\t\t// reservation.\n\t\t\tMustIPv4Addr(\"192.0.0.0/24\"),\n\n\t\t\t/*+----------------------+--------------------------------+\n\t\t\t  | Attribute            | Value                          |\n\t\t\t  +----------------------+--------------------------------+\n\t\t\t  | Address Block        | 192.0.0.0/29                   |\n\t\t\t  | Name                 | IPv4 Service Continuity Prefix |\n\t\t\t  | RFC                  | [RFC6333], [RFC7335]           |\n\t\t\t  | Allocation Date      | June 2011                      |\n\t\t\t  | Termination Date     | N/A                            |\n\t\t\t  | Source               | True                           |\n\t\t\t  | Destination          | True                           |\n\t\t\t  | Forwardable          | True                           |\n\t\t\t  | Global               | False                          |\n\t\t\t  | Reserved-by-Protocol | False                          |\n\t\t\t  +----------------------+--------------------------------+*/\n\t\t\tMustIPv4Addr(\"192.0.0.0/29\"),\n\n\t\t\t/*+----------------------+----------------------------+\n\t\t\t  | Attribute            | Value                      |\n\t\t\t  +----------------------+----------------------------+\n\t\t\t  | Address Block        | 192.0.2.0/24               |\n\t\t\t  | Name                 | Documentation (TEST-NET-1) |\n\t\t\t  | RFC                  | [RFC5737]                  |\n\t\t\t  | Allocation Date      | January 2010               |\n\t\t\t  | Termination Date     | N/A                        |\n\t\t\t  | Source               | False                      |\n\t\t\t  | Destination          | False                      |\n\t\t\t  | Forwardable          | False                      |\n\t\t\t  | Global               | False                      |\n\t\t\t  | Reserved-by-Protocol | False                      |\n\t\t\t  +----------------------+----------------------------+*/\n\t\t\tMustIPv4Addr(\"192.0.2.0/24\"),\n\n\t\t\t/*+----------------------+--------------------+\n\t\t\t  | Attribute            | Value              |\n\t\t\t  +----------------------+--------------------+\n\t\t\t  | Address Block        | 192.88.99.0/24     |\n\t\t\t  | Name                 | 6to4 Relay Anycast |\n\t\t\t  | RFC                  | [RFC3068]          |\n\t\t\t  | Allocation Date      | June 2001          |\n\t\t\t  | Termination Date     | N/A                |\n\t\t\t  | Source               | True               |\n\t\t\t  | Destination          | True               |\n\t\t\t  | Forwardable          | True               |\n\t\t\t  | Global               | True               |\n\t\t\t  | Reserved-by-Protocol | False              |\n\t\t\t  +----------------------+--------------------+*/\n\t\t\tMustIPv4Addr(\"192.88.99.0/24\"),\n\n\t\t\t/*+----------------------+----------------+\n\t\t\t  | Attribute            | Value          |\n\t\t\t  +----------------------+----------------+\n\t\t\t  | Address Block        | 192.168.0.0/16 |\n\t\t\t  | Name                 | Private-Use    |\n\t\t\t  | RFC                  | [RFC1918]      |\n\t\t\t  | Allocation Date      | February 1996  |\n\t\t\t  | Termination Date     | N/A            |\n\t\t\t  | Source               | True           |\n\t\t\t  | Destination          | True           |\n\t\t\t  | Forwardable          | True           |\n\t\t\t  | Global               | False          |\n\t\t\t  | Reserved-by-Protocol | False          |\n\t\t\t  +----------------------+----------------+*/\n\t\t\tMustIPv4Addr(\"192.168.0.0/16\"),\n\n\t\t\t/*+----------------------+---------------+\n\t\t\t  | Attribute            | Value         |\n\t\t\t  +----------------------+---------------+\n\t\t\t  | Address Block        | 198.18.0.0/15 |\n\t\t\t  | Name                 | Benchmarking  |\n\t\t\t  | RFC                  | [RFC2544]     |\n\t\t\t  | Allocation Date      | March 1999    |\n\t\t\t  | Termination Date     | N/A           |\n\t\t\t  | Source               | True          |\n\t\t\t  | Destination          | True          |\n\t\t\t  | Forwardable          | True          |\n\t\t\t  | Global               | False         |\n\t\t\t  | Reserved-by-Protocol | False         |\n\t\t\t  +----------------------+---------------+*/\n\t\t\tMustIPv4Addr(\"198.18.0.0/15\"),\n\n\t\t\t/*+----------------------+----------------------------+\n\t\t\t  | Attribute            | Value                      |\n\t\t\t  +----------------------+----------------------------+\n\t\t\t  | Address Block        | 198.51.100.0/24            |\n\t\t\t  | Name                 | Documentation (TEST-NET-2) |\n\t\t\t  | RFC                  | [RFC5737]                  |\n\t\t\t  | Allocation Date      | January 2010               |\n\t\t\t  | Termination Date     | N/A                        |\n\t\t\t  | Source               | False                      |\n\t\t\t  | Destination          | False                      |\n\t\t\t  | Forwardable          | False                      |\n\t\t\t  | Global               | False                      |\n\t\t\t  | Reserved-by-Protocol | False                      |\n\t\t\t  +----------------------+----------------------------+*/\n\t\t\tMustIPv4Addr(\"198.51.100.0/24\"),\n\n\t\t\t/*+----------------------+----------------------------+\n\t\t\t  | Attribute            | Value                      |\n\t\t\t  +----------------------+----------------------------+\n\t\t\t  | Address Block        | 203.0.113.0/24             |\n\t\t\t  | Name                 | Documentation (TEST-NET-3) |\n\t\t\t  | RFC                  | [RFC5737]                  |\n\t\t\t  | Allocation Date      | January 2010               |\n\t\t\t  | Termination Date     | N/A                        |\n\t\t\t  | Source               | False                      |\n\t\t\t  | Destination          | False                      |\n\t\t\t  | Forwardable          | False                      |\n\t\t\t  | Global               | False                      |\n\t\t\t  | Reserved-by-Protocol | False                      |\n\t\t\t  +----------------------+----------------------------+*/\n\t\t\tMustIPv4Addr(\"203.0.113.0/24\"),\n\n\t\t\t/*+----------------------+----------------------+\n\t\t\t  | Attribute            | Value                |\n\t\t\t  +----------------------+----------------------+\n\t\t\t  | Address Block        | 240.0.0.0/4          |\n\t\t\t  | Name                 | Reserved             |\n\t\t\t  | RFC                  | [RFC1112], Section 4 |\n\t\t\t  | Allocation Date      | August 1989          |\n\t\t\t  | Termination Date     | N/A                  |\n\t\t\t  | Source               | False                |\n\t\t\t  | Destination          | False                |\n\t\t\t  | Forwardable          | False                |\n\t\t\t  | Global               | False                |\n\t\t\t  | Reserved-by-Protocol | True                 |\n\t\t\t  +----------------------+----------------------+*/\n\t\t\tMustIPv4Addr(\"240.0.0.0/4\"),\n\n\t\t\t/*+----------------------+----------------------+\n\t\t\t  | Attribute            | Value                |\n\t\t\t  +----------------------+----------------------+\n\t\t\t  | Address Block        | 255.255.255.255/32   |\n\t\t\t  | Name                 | Limited Broadcast    |\n\t\t\t  | RFC                  | [RFC0919], Section 7 |\n\t\t\t  | Allocation Date      | October 1984         |\n\t\t\t  | Termination Date     | N/A                  |\n\t\t\t  | Source               | False                |\n\t\t\t  | Destination          | True                 |\n\t\t\t  | Forwardable          | False                |\n\t\t\t  | Global               | False                |\n\t\t\t  | Reserved-by-Protocol | False                |\n\t\t\t  +----------------------+----------------------+*/\n\t\t\tMustIPv4Addr(\"255.255.255.255/32\"),\n\n\t\t\t/*+----------------------+------------------+\n\t\t\t  | Attribute            | Value            |\n\t\t\t  +----------------------+------------------+\n\t\t\t  | Address Block        | ::1/128          |\n\t\t\t  | Name                 | Loopback Address |\n\t\t\t  | RFC                  | [RFC4291]        |\n\t\t\t  | Allocation Date      | February 2006    |\n\t\t\t  | Termination Date     | N/A              |\n\t\t\t  | Source               | False            |\n\t\t\t  | Destination          | False            |\n\t\t\t  | Forwardable          | False            |\n\t\t\t  | Global               | False            |\n\t\t\t  | Reserved-by-Protocol | True             |\n\t\t\t  +----------------------+------------------+*/\n\t\t\tMustIPv6Addr(\"::1/128\"),\n\n\t\t\t/*+----------------------+---------------------+\n\t\t\t  | Attribute            | Value               |\n\t\t\t  +----------------------+---------------------+\n\t\t\t  | Address Block        | ::/128              |\n\t\t\t  | Name                 | Unspecified Address |\n\t\t\t  | RFC                  | [RFC4291]           |\n\t\t\t  | Allocation Date      | February 2006       |\n\t\t\t  | Termination Date     | N/A                 |\n\t\t\t  | Source               | True                |\n\t\t\t  | Destination          | False               |\n\t\t\t  | Forwardable          | False               |\n\t\t\t  | Global               | False               |\n\t\t\t  | Reserved-by-Protocol | True                |\n\t\t\t  +----------------------+---------------------+*/\n\t\t\tMustIPv6Addr(\"::/128\"),\n\n\t\t\t/*+----------------------+---------------------+\n\t\t\t  | Attribute            | Value               |\n\t\t\t  +----------------------+---------------------+\n\t\t\t  | Address Block        | 64:ff9b::/96        |\n\t\t\t  | Name                 | IPv4-IPv6 Translat. |\n\t\t\t  | RFC                  | [RFC6052]           |\n\t\t\t  | Allocation Date      | October 2010        |\n\t\t\t  | Termination Date     | N/A                 |\n\t\t\t  | Source               | True                |\n\t\t\t  | Destination          | True                |\n\t\t\t  | Forwardable          | True                |\n\t\t\t  | Global               | True                |\n\t\t\t  | Reserved-by-Protocol | False               |\n\t\t\t  +----------------------+---------------------+*/\n\t\t\tMustIPv6Addr(\"64:ff9b::/96\"),\n\n\t\t\t/*+----------------------+---------------------+\n\t\t\t  | Attribute            | Value               |\n\t\t\t  +----------------------+---------------------+\n\t\t\t  | Address Block        | ::ffff:0:0/96       |\n\t\t\t  | Name                 | IPv4-mapped Address |\n\t\t\t  | RFC                  | [RFC4291]           |\n\t\t\t  | Allocation Date      | February 2006       |\n\t\t\t  | Termination Date     | N/A                 |\n\t\t\t  | Source               | False               |\n\t\t\t  | Destination          | False               |\n\t\t\t  | Forwardable          | False               |\n\t\t\t  | Global               | False               |\n\t\t\t  | Reserved-by-Protocol | True                |\n\t\t\t  +----------------------+---------------------+*/\n\t\t\tMustIPv6Addr(\"::ffff:0:0/96\"),\n\n\t\t\t/*+----------------------+----------------------------+\n\t\t\t  | Attribute            | Value                      |\n\t\t\t  +----------------------+----------------------------+\n\t\t\t  | Address Block        | 100::/64                   |\n\t\t\t  | Name                 | Discard-Only Address Block |\n\t\t\t  | RFC                  | [RFC6666]                  |\n\t\t\t  | Allocation Date      | June 2012                  |\n\t\t\t  | Termination Date     | N/A                        |\n\t\t\t  | Source               | True                       |\n\t\t\t  | Destination          | True                       |\n\t\t\t  | Forwardable          | True                       |\n\t\t\t  | Global               | False                      |\n\t\t\t  | Reserved-by-Protocol | False                      |\n\t\t\t  +----------------------+----------------------------+*/\n\t\t\tMustIPv6Addr(\"100::/64\"),\n\n\t\t\t/*+----------------------+---------------------------+\n\t\t\t  | Attribute            | Value                     |\n\t\t\t  +----------------------+---------------------------+\n\t\t\t  | Address Block        | 2001::/23                 |\n\t\t\t  | Name                 | IETF Protocol Assignments |\n\t\t\t  | RFC                  | [RFC2928]                 |\n\t\t\t  | Allocation Date      | September 2000            |\n\t\t\t  | Termination Date     | N/A                       |\n\t\t\t  | Source               | False[1]                  |\n\t\t\t  | Destination          | False[1]                  |\n\t\t\t  | Forwardable          | False[1]                  |\n\t\t\t  | Global               | False[1]                  |\n\t\t\t  | Reserved-by-Protocol | False                     |\n\t\t\t  +----------------------+---------------------------+*/\n\t\t\t// [1] Unless allowed by a more specific allocation.\n\t\t\tMustIPv6Addr(\"2001::/16\"),\n\n\t\t\t/*+----------------------+----------------+\n\t\t\t  | Attribute            | Value          |\n\t\t\t  +----------------------+----------------+\n\t\t\t  | Address Block        | 2001::/32      |\n\t\t\t  | Name                 | TEREDO         |\n\t\t\t  | RFC                  | [RFC4380]      |\n\t\t\t  | Allocation Date      | January 2006   |\n\t\t\t  | Termination Date     | N/A            |\n\t\t\t  | Source               | True           |\n\t\t\t  | Destination          | True           |\n\t\t\t  | Forwardable          | True           |\n\t\t\t  | Global               | False          |\n\t\t\t  | Reserved-by-Protocol | False          |\n\t\t\t  +----------------------+----------------+*/\n\t\t\t// Covered by previous entry, included for completeness.\n\t\t\t//\n\t\t\t// MustIPv6Addr(\"2001::/16\"),\n\n\t\t\t/*+----------------------+----------------+\n\t\t\t  | Attribute            | Value          |\n\t\t\t  +----------------------+----------------+\n\t\t\t  | Address Block        | 2001:2::/48    |\n\t\t\t  | Name                 | Benchmarking   |\n\t\t\t  | RFC                  | [RFC5180]      |\n\t\t\t  | Allocation Date      | April 2008     |\n\t\t\t  | Termination Date     | N/A            |\n\t\t\t  | Source               | True           |\n\t\t\t  | Destination          | True           |\n\t\t\t  | Forwardable          | True           |\n\t\t\t  | Global               | False          |\n\t\t\t  | Reserved-by-Protocol | False          |\n\t\t\t  +----------------------+----------------+*/\n\t\t\t// Covered by previous entry, included for completeness.\n\t\t\t//\n\t\t\t// MustIPv6Addr(\"2001:2::/48\"),\n\n\t\t\t/*+----------------------+---------------+\n\t\t\t  | Attribute            | Value         |\n\t\t\t  +----------------------+---------------+\n\t\t\t  | Address Block        | 2001:db8::/32 |\n\t\t\t  | Name                 | Documentation |\n\t\t\t  | RFC                  | [RFC3849]     |\n\t\t\t  | Allocation Date      | July 2004     |\n\t\t\t  | Termination Date     | N/A           |\n\t\t\t  | Source               | False         |\n\t\t\t  | Destination          | False         |\n\t\t\t  | Forwardable          | False         |\n\t\t\t  | Global               | False         |\n\t\t\t  | Reserved-by-Protocol | False         |\n\t\t\t  +----------------------+---------------+*/\n\t\t\t// Covered by previous entry, included for completeness.\n\t\t\t//\n\t\t\t// MustIPv6Addr(\"2001:db8::/32\"),\n\n\t\t\t/*+----------------------+--------------+\n\t\t\t  | Attribute            | Value        |\n\t\t\t  +----------------------+--------------+\n\t\t\t  | Address Block        | 2001:10::/28 |\n\t\t\t  | Name                 | ORCHID       |\n\t\t\t  | RFC                  | [RFC4843]    |\n\t\t\t  | Allocation Date      | March 2007   |\n\t\t\t  | Termination Date     | March 2014   |\n\t\t\t  | Source               | False        |\n\t\t\t  | Destination          | False        |\n\t\t\t  | Forwardable          | False        |\n\t\t\t  | Global               | False        |\n\t\t\t  | Reserved-by-Protocol | False        |\n\t\t\t  +----------------------+--------------+*/\n\t\t\t// Covered by previous entry, included for completeness.\n\t\t\t//\n\t\t\t// MustIPv6Addr(\"2001:10::/28\"),\n\n\t\t\t/*+----------------------+---------------+\n\t\t\t  | Attribute            | Value         |\n\t\t\t  +----------------------+---------------+\n\t\t\t  | Address Block        | 2002::/16 [2] |\n\t\t\t  | Name                 | 6to4          |\n\t\t\t  | RFC                  | [RFC3056]     |\n\t\t\t  | Allocation Date      | February 2001 |\n\t\t\t  | Termination Date     | N/A           |\n\t\t\t  | Source               | True          |\n\t\t\t  | Destination          | True          |\n\t\t\t  | Forwardable          | True          |\n\t\t\t  | Global               | N/A [2]       |\n\t\t\t  | Reserved-by-Protocol | False         |\n\t\t\t  +----------------------+---------------+*/\n\t\t\t// [2] See [RFC3056] for details.\n\t\t\tMustIPv6Addr(\"2002::/16\"),\n\n\t\t\t/*+----------------------+--------------+\n\t\t\t  | Attribute            | Value        |\n\t\t\t  +----------------------+--------------+\n\t\t\t  | Address Block        | fc00::/7     |\n\t\t\t  | Name                 | Unique-Local |\n\t\t\t  | RFC                  | [RFC4193]    |\n\t\t\t  | Allocation Date      | October 2005 |\n\t\t\t  | Termination Date     | N/A          |\n\t\t\t  | Source               | True         |\n\t\t\t  | Destination          | True         |\n\t\t\t  | Forwardable          | True         |\n\t\t\t  | Global               | False        |\n\t\t\t  | Reserved-by-Protocol | False        |\n\t\t\t  +----------------------+--------------+*/\n\t\t\tMustIPv6Addr(\"fc00::/7\"),\n\n\t\t\t/*+----------------------+-----------------------+\n\t\t\t  | Attribute            | Value                 |\n\t\t\t  +----------------------+-----------------------+\n\t\t\t  | Address Block        | fe80::/10             |\n\t\t\t  | Name                 | Linked-Scoped Unicast |\n\t\t\t  | RFC                  | [RFC4291]             |\n\t\t\t  | Allocation Date      | February 2006         |\n\t\t\t  | Termination Date     | N/A                   |\n\t\t\t  | Source               | True                  |\n\t\t\t  | Destination          | True                  |\n\t\t\t  | Forwardable          | False                 |\n\t\t\t  | Global               | False                 |\n\t\t\t  | Reserved-by-Protocol | True                  |\n\t\t\t  +----------------------+-----------------------+*/\n\t\t\tMustIPv6Addr(\"fe80::/10\"),\n\t\t},\n\t\t7335: {\n\t\t\t// [RFC7335] IPv4 Service Continuity Prefix\n\t\t\tMustIPv4Addr(\"192.0.0.0/29\"), // [RFC7335], §6 IANA Considerations\n\t\t},\n\t\tForwardingBlacklist: { // Pseudo-RFC\n\t\t\t// Blacklist of non-forwardable IP blocks taken from RFC6890\n\t\t\t//\n\t\t\t// TODO: the attributes for forwardable should be\n\t\t\t// searcahble and embedded in the main list of RFCs\n\t\t\t// above.\n\t\t\tMustIPv4Addr(\"0.0.0.0/8\"),\n\t\t\tMustIPv4Addr(\"127.0.0.0/8\"),\n\t\t\tMustIPv4Addr(\"169.254.0.0/16\"),\n\t\t\tMustIPv4Addr(\"192.0.0.0/24\"),\n\t\t\tMustIPv4Addr(\"192.0.2.0/24\"),\n\t\t\tMustIPv4Addr(\"198.51.100.0/24\"),\n\t\t\tMustIPv4Addr(\"203.0.113.0/24\"),\n\t\t\tMustIPv4Addr(\"240.0.0.0/4\"),\n\t\t\tMustIPv4Addr(\"255.255.255.255/32\"),\n\t\t\tMustIPv6Addr(\"::1/128\"),\n\t\t\tMustIPv6Addr(\"::/128\"),\n\t\t\tMustIPv6Addr(\"::ffff:0:0/96\"),\n\n\t\t\t// There is no way of expressing a whitelist per RFC2928\n\t\t\t// atm without creating a negative mask, which I don't\n\t\t\t// want to do atm.\n\t\t\t//MustIPv6Addr(\"2001::/23\"),\n\n\t\t\tMustIPv6Addr(\"2001:db8::/32\"),\n\t\t\tMustIPv6Addr(\"2001:10::/28\"),\n\t\t\tMustIPv6Addr(\"fe80::/10\"),\n\t\t},\n\t}\n}\n\n// VisitAllRFCs iterates over all known RFCs and calls the visitor\nfunc VisitAllRFCs(fn func(rfcNum uint, sockaddrs SockAddrs)) {\n\trfcNetMap := KnownRFCs()\n\n\t// Blacklist of faux-RFCs.  Don't show the world that we're abusing the\n\t// RFC system in this library.\n\trfcBlacklist := map[uint]struct{}{\n\t\tForwardingBlacklist: {},\n\t}\n\n\tfor rfcNum, sas := range rfcNetMap {\n\t\tif _, found := rfcBlacklist[rfcNum]; !found {\n\t\t\tfn(rfcNum, sas)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/route_info.go",
    "content": "package sockaddr\n\nimport \"errors\"\n\nvar (\n\tErrNoInterface = errors.New(\"No default interface found (unsupported platform)\")\n\tErrNoRoute     = errors.New(\"no route info found (unsupported platform)\")\n)\n\n// RouteInterface specifies an interface for obtaining memoized route table and\n// network information from a given OS.\ntype RouteInterface interface {\n\t// GetDefaultInterfaceName returns the name of the interface that has a\n\t// default route or an error and an empty string if a problem was\n\t// encountered.\n\tGetDefaultInterfaceName() (string, error)\n}\n\ntype routeInfo struct {\n\tcmds map[string][]string\n}\n\n// VisitCommands visits each command used by the platform-specific RouteInfo\n// implementation.\nfunc (ri routeInfo) VisitCommands(fn func(name string, cmd []string)) {\n\tfor k, v := range ri.cmds {\n\t\tcmds := append([]string(nil), v...)\n\t\tfn(k, cmds)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/route_info_android.go",
    "content": "package sockaddr\n\nimport (\n\t\"errors\"\n\t\"os/exec\"\n)\n\ntype routeInfo struct {\n\tcmds map[string][]string\n}\n\n// NewRouteInfo returns a Android-specific implementation of the RouteInfo\n// interface.\nfunc NewRouteInfo() (routeInfo, error) {\n\treturn routeInfo{\n\t\tcmds: map[string][]string{\"ip\": {\"/system/bin/ip\", \"route\", \"get\", \"8.8.8.8\"}},\n\t}, nil\n}\n\n// GetDefaultInterfaceName returns the interface name attached to the default\n// route on the default interface.\nfunc (ri routeInfo) GetDefaultInterfaceName() (string, error) {\n\tout, err := exec.Command(ri.cmds[\"ip\"][0], ri.cmds[\"ip\"][1:]...).Output()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\n\tvar ifName string\n\tif ifName, err = parseDefaultIfNameFromIPCmdAndroid(string(out)); err != nil {\n\t\treturn \"\", errors.New(\"No default interface found\")\n\t}\n\treturn ifName, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/route_info_bsd.go",
    "content": "//go:build darwin || dragonfly || freebsd || netbsd || openbsd\n// +build darwin dragonfly freebsd netbsd openbsd\n\npackage sockaddr\n\nimport \"os/exec\"\n\nvar cmds = map[string][]string{\n\t\"route\": {\"/sbin/route\", \"-n\", \"get\", \"default\"},\n}\n\n// NewRouteInfo returns a BSD-specific implementation of the RouteInfo\n// interface.\nfunc NewRouteInfo() (routeInfo, error) {\n\treturn routeInfo{\n\t\tcmds: cmds,\n\t}, nil\n}\n\n// GetDefaultInterfaceName returns the interface name attached to the default\n// route on the default interface.\nfunc (ri routeInfo) GetDefaultInterfaceName() (string, error) {\n\tout, err := exec.Command(cmds[\"route\"][0], cmds[\"route\"][1:]...).Output()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tvar ifName string\n\tif ifName, err = parseDefaultIfNameFromRoute(string(out)); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn ifName, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/route_info_default.go",
    "content": "//go:build android || nacl || plan9 || js\n// +build android nacl plan9 js\n\npackage sockaddr\n\n// getDefaultIfName is the default interface function for unsupported platforms.\nfunc getDefaultIfName() (string, error) {\n\treturn \"\", ErrNoInterface\n}\n\nfunc NewRouteInfo() (routeInfo, error) {\n\treturn routeInfo{}, ErrNoRoute\n}\n\n// GetDefaultInterfaceName returns the interface name attached to the default\n// route on the default interface.\nfunc (ri routeInfo) GetDefaultInterfaceName() (string, error) {\n\treturn \"\", ErrNoInterface\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/route_info_linux.go",
    "content": "//go:build !android\n// +build !android\n\npackage sockaddr\n\nimport (\n\t\"errors\"\n\t\"os/exec\"\n)\n\n// NewRouteInfo returns a Linux-specific implementation of the RouteInfo\n// interface.\nfunc NewRouteInfo() (routeInfo, error) {\n\t// CoreOS Container Linux moved ip to /usr/bin/ip, so look it up on\n\t// $PATH and fallback to /sbin/ip on error.\n\tpath, _ := exec.LookPath(\"ip\")\n\tif path == \"\" {\n\t\tpath = \"/sbin/ip\"\n\t}\n\n\treturn routeInfo{\n\t\tcmds: map[string][]string{\"ip\": {path, \"route\"}},\n\t}, nil\n}\n\n// GetDefaultInterfaceName returns the interface name attached to the default\n// route on the default interface.\nfunc (ri routeInfo) GetDefaultInterfaceName() (string, error) {\n\tout, err := exec.Command(ri.cmds[\"ip\"][0], ri.cmds[\"ip\"][1:]...).Output()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tvar ifName string\n\tif ifName, err = parseDefaultIfNameFromIPCmd(string(out)); err != nil {\n\t\treturn \"\", errors.New(\"No default interface found\")\n\t}\n\treturn ifName, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/route_info_solaris.go",
    "content": "package sockaddr\n\nimport (\n\t\"errors\"\n\t\"os/exec\"\n)\n\nvar cmds map[string][]string = map[string][]string{\n\t\"route\": {\"/usr/sbin/route\", \"-n\", \"get\", \"default\"},\n}\n\n// NewRouteInfo returns a BSD-specific implementation of the RouteInfo\n// interface.\nfunc NewRouteInfo() (routeInfo, error) {\n\treturn routeInfo{\n\t\tcmds: cmds,\n\t}, nil\n}\n\n// GetDefaultInterfaceName returns the interface name attached to the default\n// route on the default interface.\nfunc (ri routeInfo) GetDefaultInterfaceName() (string, error) {\n\tout, err := exec.Command(cmds[\"route\"][0], cmds[\"route\"][1:]...).Output()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tvar ifName string\n\tif ifName, err = parseDefaultIfNameFromRoute(string(out)); err != nil {\n\t\treturn \"\", errors.New(\"No default interface found\")\n\t}\n\treturn ifName, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/route_info_test_windows.go",
    "content": "package sockaddr\n\nimport \"testing\"\n\nfunc Test_parseWindowsDefaultIfName_new_vs_old(t *testing.T) {\n\tif !hasPowershell() {\n\t\tt.Skip(\"this test requires powershell.\")\n\t\treturn\n\t}\n\tri, err := NewRouteInfo()\n\tif err != nil {\n\t\tt.Fatalf(\"bad: %v\", err)\n\t}\n\tpsVer, err1 := ri.GetDefaultInterfaceName()\n\tlegacyVer, err2 := ri.GetDefaultInterfaceNameLegacy()\n\tif err1 != nil {\n\t\tt.Errorf(\"err != nil for GetDefaultInterfaceName - %v\", err1)\n\t}\n\tif err2 != nil {\n\t\tt.Errorf(\"err != nil for GetDefaultInterfaceNameLegacy - %v\", err2)\n\t}\n\tif psVer != legacyVer {\n\t\tt.Errorf(\"got %s; want %s\", psVer, legacyVer)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/route_info_windows.go",
    "content": "package sockaddr\n\nimport (\n\t\"os/exec\"\n\t\"strings\"\n)\n\nvar cmds map[string][]string = map[string][]string{\n\t\"defaultInterface\": {\"powershell\", \"Get-NetRoute -DestinationPrefix '0.0.0.0/0' | select -ExpandProperty InterfaceAlias\"},\n\t// These commands enable GetDefaultInterfaceNameLegacy and should be removed\n\t// when it is.\n\t\"netstat\":  {\"netstat\", \"-rn\"},\n\t\"ipconfig\": {\"ipconfig\"},\n}\n\n// NewRouteInfo returns a BSD-specific implementation of the RouteInfo\n// interface.\nfunc NewRouteInfo() (routeInfo, error) {\n\treturn routeInfo{\n\t\tcmds: cmds,\n\t}, nil\n}\n\n// GetDefaultInterfaceName returns the interface name attached to the default\n// route on the default interface.\nfunc (ri routeInfo) GetDefaultInterfaceName() (string, error) {\n\tif !hasPowershell() {\n\t\t// No powershell, fallback to legacy method\n\t\treturn ri.GetDefaultInterfaceNameLegacy()\n\t}\n\n\tifNameOut, err := exec.Command(cmds[\"defaultInterface\"][0], cmds[\"defaultInterface\"][1:]...).Output()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tifName := strings.TrimSpace(string(ifNameOut[:]))\n\treturn ifName, nil\n}\n\n// GetDefaultInterfaceNameLegacy provides legacy behavior for GetDefaultInterfaceName\n// on Windows machines without powershell.\nfunc (ri routeInfo) GetDefaultInterfaceNameLegacy() (string, error) {\n\tifNameOut, err := exec.Command(cmds[\"netstat\"][0], cmds[\"netstat\"][1:]...).Output()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tipconfigOut, err := exec.Command(cmds[\"ipconfig\"][0], cmds[\"ipconfig\"][1:]...).Output()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tifName, err := parseDefaultIfNameWindows(string(ifNameOut), string(ipconfigOut))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn ifName, nil\n}\n\nfunc hasPowershell() bool {\n\t_, err := exec.LookPath(\"powershell\")\n\treturn (err != nil)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/sockaddr.go",
    "content": "package sockaddr\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strings\"\n)\n\ntype SockAddrType int\ntype AttrName string\n\nconst (\n\tTypeUnknown SockAddrType = 0x0\n\tTypeUnix                 = 0x1\n\tTypeIPv4                 = 0x2\n\tTypeIPv6                 = 0x4\n\n\t// TypeIP is the union of TypeIPv4 and TypeIPv6\n\tTypeIP = 0x6\n)\n\ntype SockAddr interface {\n\t// CmpRFC returns 0 if SockAddr exactly matches one of the matched RFC\n\t// networks, -1 if the receiver is contained within the RFC network, or\n\t// 1 if the address is not contained within the RFC.\n\tCmpRFC(rfcNum uint, sa SockAddr) int\n\n\t// Contains returns true if the SockAddr arg is contained within the\n\t// receiver\n\tContains(SockAddr) bool\n\n\t// Equal allows for the comparison of two SockAddrs\n\tEqual(SockAddr) bool\n\n\tDialPacketArgs() (string, string)\n\tDialStreamArgs() (string, string)\n\tListenPacketArgs() (string, string)\n\tListenStreamArgs() (string, string)\n\n\t// String returns the string representation of SockAddr\n\tString() string\n\n\t// Type returns the SockAddrType\n\tType() SockAddrType\n}\n\n// sockAddrAttrMap is a map of the SockAddr type-specific attributes.\nvar sockAddrAttrMap map[AttrName]func(SockAddr) string\nvar sockAddrAttrs []AttrName\n\nfunc init() {\n\tsockAddrInit()\n}\n\n// New creates a new SockAddr from the string.  The order in which New()\n// attempts to construct a SockAddr is: IPv4Addr, IPv6Addr, SockAddrUnix.\n//\n// NOTE: New() relies on the heuristic wherein if the path begins with either a\n// '.'  or '/' character before creating a new UnixSock.  For UNIX sockets that\n// are absolute paths or are nested within a sub-directory, this works as\n// expected, however if the UNIX socket is contained in the current working\n// directory, this will fail unless the path begins with \"./\"\n// (e.g. \"./my-local-socket\").  Calls directly to NewUnixSock() do not suffer\n// this limitation.  Invalid IP addresses such as \"256.0.0.0/-1\" will run afoul\n// of this heuristic and be assumed to be a valid UNIX socket path (which they\n// are, but it is probably not what you want and you won't realize it until you\n// stat(2) the file system to discover it doesn't exist).\nfunc NewSockAddr(s string) (SockAddr, error) {\n\tipv4Addr, err := NewIPv4Addr(s)\n\tif err == nil {\n\t\treturn ipv4Addr, nil\n\t}\n\n\tipv6Addr, err := NewIPv6Addr(s)\n\tif err == nil {\n\t\treturn ipv6Addr, nil\n\t}\n\n\t// Check to make sure the string begins with either a '.' or '/', or\n\t// contains a '/'.\n\tif len(s) > 1 && (strings.IndexAny(s[0:1], \"./\") != -1 || strings.IndexByte(s, '/') != -1) {\n\t\tunixSock, err := NewUnixSock(s)\n\t\tif err == nil {\n\t\t\treturn unixSock, nil\n\t\t}\n\t}\n\n\treturn nil, fmt.Errorf(\"Unable to convert %q to an IPv4 or IPv6 address, or a UNIX Socket\", s)\n}\n\n// ToIPAddr returns an IPAddr type or nil if the type conversion fails.\nfunc ToIPAddr(sa SockAddr) *IPAddr {\n\tipa, ok := sa.(IPAddr)\n\tif !ok {\n\t\treturn nil\n\t}\n\treturn &ipa\n}\n\n// ToIPv4Addr returns an IPv4Addr type or nil if the type conversion fails.\nfunc ToIPv4Addr(sa SockAddr) *IPv4Addr {\n\tswitch v := sa.(type) {\n\tcase IPv4Addr:\n\t\treturn &v\n\tdefault:\n\t\treturn nil\n\t}\n}\n\n// ToIPv6Addr returns an IPv6Addr type or nil if the type conversion fails.\nfunc ToIPv6Addr(sa SockAddr) *IPv6Addr {\n\tswitch v := sa.(type) {\n\tcase IPv6Addr:\n\t\treturn &v\n\tdefault:\n\t\treturn nil\n\t}\n}\n\n// ToUnixSock returns a UnixSock type or nil if the type conversion fails.\nfunc ToUnixSock(sa SockAddr) *UnixSock {\n\tswitch v := sa.(type) {\n\tcase UnixSock:\n\t\treturn &v\n\tdefault:\n\t\treturn nil\n\t}\n}\n\n// SockAddrAttr returns a string representation of an attribute for the given\n// SockAddr.\nfunc SockAddrAttr(sa SockAddr, selector AttrName) string {\n\tfn, found := sockAddrAttrMap[selector]\n\tif !found {\n\t\treturn \"\"\n\t}\n\n\treturn fn(sa)\n}\n\n// String() for SockAddrType returns a string representation of the\n// SockAddrType (e.g. \"IPv4\", \"IPv6\", \"UNIX\", \"IP\", or \"unknown\").\nfunc (sat SockAddrType) String() string {\n\tswitch sat {\n\tcase TypeIPv4:\n\t\treturn \"IPv4\"\n\tcase TypeIPv6:\n\t\treturn \"IPv6\"\n\t// There is no concrete \"IP\" type.  Leaving here as a reminder.\n\t// case TypeIP:\n\t// \treturn \"IP\"\n\tcase TypeUnix:\n\t\treturn \"UNIX\"\n\tdefault:\n\t\tpanic(\"unsupported type\")\n\t}\n}\n\n// sockAddrInit is called once at init()\nfunc sockAddrInit() {\n\tsockAddrAttrs = []AttrName{\n\t\t\"type\", // type should be first\n\t\t\"string\",\n\t}\n\n\tsockAddrAttrMap = map[AttrName]func(sa SockAddr) string{\n\t\t\"string\": func(sa SockAddr) string {\n\t\t\treturn sa.String()\n\t\t},\n\t\t\"type\": func(sa SockAddr) string {\n\t\t\treturn sa.Type().String()\n\t\t},\n\t}\n}\n\n// UnixSockAttrs returns a list of attributes supported by the UnixSock type\nfunc SockAddrAttrs() []AttrName {\n\treturn sockAddrAttrs\n}\n\n// Although this is pretty trivial to do in a program, having the logic here is\n// useful all around. Note that this marshals into a *string* -- the underlying\n// string representation of the sockaddr. If you then unmarshal into this type\n// in Go, all will work as expected, but externally you can take what comes out\n// and use the string value directly.\ntype SockAddrMarshaler struct {\n\tSockAddr\n}\n\nfunc (s *SockAddrMarshaler) MarshalJSON() ([]byte, error) {\n\treturn json.Marshal(s.SockAddr.String())\n}\n\nfunc (s *SockAddrMarshaler) UnmarshalJSON(in []byte) error {\n\tvar str string\n\terr := json.Unmarshal(in, &str)\n\tif err != nil {\n\t\treturn err\n\t}\n\tsa, err := NewSockAddr(str)\n\tif err != nil {\n\t\treturn err\n\t}\n\ts.SockAddr = sa\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/sockaddrs.go",
    "content": "package sockaddr\n\nimport (\n\t\"bytes\"\n\t\"sort\"\n)\n\n// SockAddrs is a slice of SockAddrs\ntype SockAddrs []SockAddr\n\nfunc (s SockAddrs) Len() int      { return len(s) }\nfunc (s SockAddrs) Swap(i, j int) { s[i], s[j] = s[j], s[i] }\n\n// CmpAddrFunc is the function signature that must be met to be used in the\n// OrderedAddrBy multiAddrSorter\ntype CmpAddrFunc func(p1, p2 *SockAddr) int\n\n// multiAddrSorter implements the Sort interface, sorting the SockAddrs within.\ntype multiAddrSorter struct {\n\taddrs SockAddrs\n\tcmp   []CmpAddrFunc\n}\n\n// Sort sorts the argument slice according to the Cmp functions passed to\n// OrderedAddrBy.\nfunc (ms *multiAddrSorter) Sort(sockAddrs SockAddrs) {\n\tms.addrs = sockAddrs\n\tsort.Sort(ms)\n}\n\n// OrderedAddrBy sorts SockAddr by the list of sort function pointers.\nfunc OrderedAddrBy(cmpFuncs ...CmpAddrFunc) *multiAddrSorter {\n\treturn &multiAddrSorter{\n\t\tcmp: cmpFuncs,\n\t}\n}\n\n// Len is part of sort.Interface.\nfunc (ms *multiAddrSorter) Len() int {\n\treturn len(ms.addrs)\n}\n\n// Less is part of sort.Interface. It is implemented by looping along the\n// Cmp() functions until it finds a comparison that is either less than,\n// equal to, or greater than.\nfunc (ms *multiAddrSorter) Less(i, j int) bool {\n\tp, q := &ms.addrs[i], &ms.addrs[j]\n\t// Try all but the last comparison.\n\tvar k int\n\tfor k = 0; k < len(ms.cmp)-1; k++ {\n\t\tcmp := ms.cmp[k]\n\t\tx := cmp(p, q)\n\t\tswitch x {\n\t\tcase -1:\n\t\t\t// p < q, so we have a decision.\n\t\t\treturn true\n\t\tcase 1:\n\t\t\t// p > q, so we have a decision.\n\t\t\treturn false\n\t\t}\n\t\t// p == q; try the next comparison.\n\t}\n\t// All comparisons to here said \"equal\", so just return whatever the\n\t// final comparison reports.\n\tswitch ms.cmp[k](p, q) {\n\tcase -1:\n\t\treturn true\n\tcase 1:\n\t\treturn false\n\tdefault:\n\t\t// Still a tie! Now what?\n\t\treturn false\n\t}\n}\n\n// Swap is part of sort.Interface.\nfunc (ms *multiAddrSorter) Swap(i, j int) {\n\tms.addrs[i], ms.addrs[j] = ms.addrs[j], ms.addrs[i]\n}\n\nconst (\n\t// NOTE (sean@): These constants are here for code readability only and\n\t// are sprucing up the code for readability purposes.  Some of the\n\t// Cmp*() variants have confusing logic (especially when dealing with\n\t// mixed-type comparisons) and this, I think, has made it easier to grok\n\t// the code faster.\n\tsortReceiverBeforeArg = -1\n\tsortDeferDecision     = 0\n\tsortArgBeforeReceiver = 1\n)\n\n// AscAddress is a sorting function to sort SockAddrs by their respective\n// address type.  Non-equal types are deferred in the sort.\nfunc AscAddress(p1Ptr, p2Ptr *SockAddr) int {\n\tp1 := *p1Ptr\n\tp2 := *p2Ptr\n\n\tswitch v := p1.(type) {\n\tcase IPv4Addr:\n\t\treturn v.CmpAddress(p2)\n\tcase IPv6Addr:\n\t\treturn v.CmpAddress(p2)\n\tcase UnixSock:\n\t\treturn v.CmpAddress(p2)\n\tdefault:\n\t\treturn sortDeferDecision\n\t}\n}\n\n// AscPort is a sorting function to sort SockAddrs by their respective address\n// type.  Non-equal types are deferred in the sort.\nfunc AscPort(p1Ptr, p2Ptr *SockAddr) int {\n\tp1 := *p1Ptr\n\tp2 := *p2Ptr\n\n\tswitch v := p1.(type) {\n\tcase IPv4Addr:\n\t\treturn v.CmpPort(p2)\n\tcase IPv6Addr:\n\t\treturn v.CmpPort(p2)\n\tdefault:\n\t\treturn sortDeferDecision\n\t}\n}\n\n// AscPrivate is a sorting function to sort \"more secure\" private values before\n// \"more public\" values.  Both IPv4 and IPv6 are compared against RFC6890\n// (RFC6890 includes, and is not limited to, RFC1918 and RFC6598 for IPv4, and\n// IPv6 includes RFC4193).\nfunc AscPrivate(p1Ptr, p2Ptr *SockAddr) int {\n\tp1 := *p1Ptr\n\tp2 := *p2Ptr\n\n\tswitch v := p1.(type) {\n\tcase IPv4Addr, IPv6Addr:\n\t\treturn v.CmpRFC(6890, p2)\n\tdefault:\n\t\treturn sortDeferDecision\n\t}\n}\n\n// AscNetworkSize is a sorting function to sort SockAddrs based on their network\n// size.  Non-equal types are deferred in the sort.\nfunc AscNetworkSize(p1Ptr, p2Ptr *SockAddr) int {\n\tp1 := *p1Ptr\n\tp2 := *p2Ptr\n\tp1Type := p1.Type()\n\tp2Type := p2.Type()\n\n\t// Network size operations on non-IP types make no sense\n\tif p1Type != p2Type && p1Type != TypeIP {\n\t\treturn sortDeferDecision\n\t}\n\n\tipA := p1.(IPAddr)\n\tipB := p2.(IPAddr)\n\n\treturn bytes.Compare([]byte(*ipA.NetIPMask()), []byte(*ipB.NetIPMask()))\n}\n\n// AscType is a sorting function to sort \"more secure\" types before\n// \"less-secure\" types.\nfunc AscType(p1Ptr, p2Ptr *SockAddr) int {\n\tp1 := *p1Ptr\n\tp2 := *p2Ptr\n\tp1Type := p1.Type()\n\tp2Type := p2.Type()\n\tswitch {\n\tcase p1Type < p2Type:\n\t\treturn sortReceiverBeforeArg\n\tcase p1Type == p2Type:\n\t\treturn sortDeferDecision\n\tcase p1Type > p2Type:\n\t\treturn sortArgBeforeReceiver\n\tdefault:\n\t\treturn sortDeferDecision\n\t}\n}\n\n// FilterByType returns two lists: a list of matched and unmatched SockAddrs\nfunc (sas SockAddrs) FilterByType(type_ SockAddrType) (matched, excluded SockAddrs) {\n\tmatched = make(SockAddrs, 0, len(sas))\n\texcluded = make(SockAddrs, 0, len(sas))\n\n\tfor _, sa := range sas {\n\t\tif sa.Type()&type_ != 0 {\n\t\t\tmatched = append(matched, sa)\n\t\t} else {\n\t\t\texcluded = append(excluded, sa)\n\t\t}\n\t}\n\treturn matched, excluded\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/go-sockaddr/unixsock.go",
    "content": "package sockaddr\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\ntype UnixSock struct {\n\tSockAddr\n\tpath string\n}\ntype UnixSocks []*UnixSock\n\n// unixAttrMap is a map of the UnixSockAddr type-specific attributes.\nvar unixAttrMap map[AttrName]func(UnixSock) string\nvar unixAttrs []AttrName\n\nfunc init() {\n\tunixAttrInit()\n}\n\n// NewUnixSock creates an UnixSock from a string path.  String can be in the\n// form of either URI-based string (e.g. `file:///etc/passwd`), an absolute\n// path (e.g. `/etc/passwd`), or a relative path (e.g. `./foo`).\nfunc NewUnixSock(s string) (ret UnixSock, err error) {\n\tret.path = s\n\treturn ret, nil\n}\n\n// Contains returns true if sa and us have the same path\nfunc (us UnixSock) Contains(sa SockAddr) bool {\n\tusb, ok := sa.(UnixSock)\n\tif !ok {\n\t\treturn false\n\t}\n\n\treturn usb.path == us.path\n}\n\n// CmpAddress follows the Cmp() standard protocol and returns:\n//\n// - -1 If the receiver should sort first because its name lexically sorts before arg\n// - 0 if the SockAddr arg is not a UnixSock, or is a UnixSock with the same path.\n// - 1 If the argument should sort first.\nfunc (us UnixSock) CmpAddress(sa SockAddr) int {\n\tusb, ok := sa.(UnixSock)\n\tif !ok {\n\t\treturn sortDeferDecision\n\t}\n\n\treturn strings.Compare(us.Path(), usb.Path())\n}\n\n// CmpRFC doesn't make sense for a Unix socket, so just return defer decision\nfunc (us UnixSock) CmpRFC(rfcNum uint, sa SockAddr) int { return sortDeferDecision }\n\n// DialPacketArgs returns the arguments required to be passed to net.DialUnix()\n// with the `unixgram` network type.\nfunc (us UnixSock) DialPacketArgs() (network, dialArgs string) {\n\treturn \"unixgram\", us.path\n}\n\n// DialStreamArgs returns the arguments required to be passed to net.DialUnix()\n// with the `unix` network type.\nfunc (us UnixSock) DialStreamArgs() (network, dialArgs string) {\n\treturn \"unix\", us.path\n}\n\n// Equal returns true if a SockAddr is equal to the receiving UnixSock.\nfunc (us UnixSock) Equal(sa SockAddr) bool {\n\tusb, ok := sa.(UnixSock)\n\tif !ok {\n\t\treturn false\n\t}\n\n\tif us.Path() != usb.Path() {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n// ListenPacketArgs returns the arguments required to be passed to\n// net.ListenUnixgram() with the `unixgram` network type.\nfunc (us UnixSock) ListenPacketArgs() (network, dialArgs string) {\n\treturn \"unixgram\", us.path\n}\n\n// ListenStreamArgs returns the arguments required to be passed to\n// net.ListenUnix() with the `unix` network type.\nfunc (us UnixSock) ListenStreamArgs() (network, dialArgs string) {\n\treturn \"unix\", us.path\n}\n\n// MustUnixSock is a helper method that must return an UnixSock or panic on\n// invalid input.\nfunc MustUnixSock(addr string) UnixSock {\n\tus, err := NewUnixSock(addr)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"Unable to create a UnixSock from %+q: %v\", addr, err))\n\t}\n\treturn us\n}\n\n// Path returns the given path of the UnixSock\nfunc (us UnixSock) Path() string {\n\treturn us.path\n}\n\n// String returns the path of the UnixSock\nfunc (us UnixSock) String() string {\n\treturn fmt.Sprintf(\"%+q\", us.path)\n}\n\n// Type is used as a type switch and returns TypeUnix\nfunc (UnixSock) Type() SockAddrType {\n\treturn TypeUnix\n}\n\n// UnixSockAttrs returns a list of attributes supported by the UnixSockAddr type\nfunc UnixSockAttrs() []AttrName {\n\treturn unixAttrs\n}\n\n// UnixSockAttr returns a string representation of an attribute for the given\n// UnixSock.\nfunc UnixSockAttr(us UnixSock, attrName AttrName) string {\n\tfn, found := unixAttrMap[attrName]\n\tif !found {\n\t\treturn \"\"\n\t}\n\n\treturn fn(us)\n}\n\n// unixAttrInit is called once at init()\nfunc unixAttrInit() {\n\t// Sorted for human readability\n\tunixAttrs = []AttrName{\n\t\t\"path\",\n\t}\n\n\tunixAttrMap = map[AttrName]func(us UnixSock) string{\n\t\t\"path\": func(us UnixSock) string {\n\t\t\treturn us.Path()\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/golang-lru/LICENSE",
    "content": "Copyright (c) 2014 HashiCorp, Inc.\n\nMozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. \"Contributor\"\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n\n     means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the terms of\n        a Secondary License.\n\n1.6. \"Executable Form\"\n\n     means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n\n     means a work that combines Covered Software with other material, in a\n     separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n\n     means this document.\n\n1.9. \"Licensable\"\n\n     means having the right to grant, to the maximum extent possible, whether\n     at the time of the initial grant or subsequently, any and all of the\n     rights conveyed by this License.\n\n1.10. \"Modifications\"\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. \"Patent Claims\" of a Contributor\n\n      means any patent claim(s), including without limitation, method,\n      process, and apparatus claims, in any patent Licensable by such\n      Contributor that would be infringed, but for the grant of the License,\n      by the making, using, selling, offering for sale, having made, import,\n      or transfer of either its Contributions or its Contributor Version.\n\n1.12. \"Secondary License\"\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. \"Source Code Form\"\n\n      means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, \"You\" includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, \"control\" means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or\n        as part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its\n        Contributions or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution\n     become effective for each Contribution on the date the Contributor first\n     distributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under\n     this License. No additional rights or licenses will be implied from the\n     distribution or licensing of Covered Software under this License.\n     Notwithstanding Section 2.1(b) above, no patent license is granted by a\n     Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party's\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of\n        its Contributions.\n\n     This License does not grant any rights in the trademarks, service marks,\n     or logos of any Contributor (except as may be necessary to comply with\n     the notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this\n     License (see Section 10.2) or under the terms of a Secondary License (if\n     permitted under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its\n     Contributions are its original creation(s) or it has sufficient rights to\n     grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under\n     applicable copyright doctrines of fair use, fair dealing, or other\n     equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under\n     the terms of this License. You must inform recipients that the Source\n     Code Form of the Covered Software is governed by the terms of this\n     License, and how they can obtain a copy of this License. You may not\n     attempt to alter or restrict the recipients' rights in the Source Code\n     Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this\n        License, or sublicense it under different terms, provided that the\n        license for the Executable Form does not attempt to limit or alter the\n        recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for\n     the Covered Software. If the Larger Work is a combination of Covered\n     Software with a work governed by one or more Secondary Licenses, and the\n     Covered Software is not Incompatible With Secondary Licenses, this\n     License permits You to additionally distribute such Covered Software\n     under the terms of such Secondary License(s), so that the recipient of\n     the Larger Work may, at their option, further distribute the Covered\n     Software under the terms of either this License or such Secondary\n     License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices\n     (including copyright notices, patent notices, disclaimers of warranty, or\n     limitations of liability) contained within the Source Code Form of the\n     Covered Software, except that You may alter any license notices to the\n     extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on\n     behalf of any Contributor. You must make it absolutely clear that any\n     such warranty, support, indemnity, or liability obligation is offered by\n     You alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute,\n   judicial order, or regulation then You must: (a) comply with the terms of\n   this License to the maximum extent possible; and (b) describe the\n   limitations and the code they affect. Such description must be placed in a\n   text file included with all distributions of the Covered Software under\n   this License. Except to the extent prohibited by statute or regulation,\n   such description must be sufficiently detailed for a recipient of ordinary\n   skill to be able to understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing\n     basis, if such Contributor fails to notify You of the non-compliance by\n     some reasonable means prior to 60 days after You have come back into\n     compliance. Moreover, Your grants from a particular Contributor are\n     reinstated on an ongoing basis if such Contributor notifies You of the\n     non-compliance by some reasonable means, this is the first time You have\n     received notice of non-compliance with this License from such\n     Contributor, and You become compliant prior to 30 days after Your receipt\n     of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions,\n     counter-claims, and cross-claims) alleging that a Contributor Version\n     directly or indirectly infringes any patent, then the rights granted to\n     You by any and all Contributors for the Covered Software under Section\n     2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an \"as is\" basis,\n   without warranty of any kind, either expressed, implied, or statutory,\n   including, without limitation, warranties that the Covered Software is free\n   of defects, merchantable, fit for a particular purpose or non-infringing.\n   The entire risk as to the quality and performance of the Covered Software\n   is with You. Should any Covered Software prove defective in any respect,\n   You (not any Contributor) assume the cost of any necessary servicing,\n   repair, or correction. This disclaimer of warranty constitutes an essential\n   part of this License. No use of  any Covered Software is authorized under\n   this License except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from\n   such party's negligence to the extent applicable law prohibits such\n   limitation. Some jurisdictions do not allow the exclusion or limitation of\n   incidental or consequential damages, so this exclusion and limitation may\n   not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts\n   of a jurisdiction where the defendant maintains its principal place of\n   business and such litigation shall be governed by laws of that\n   jurisdiction, without reference to its conflict-of-law provisions. Nothing\n   in this Section shall prevent a party's ability to bring cross-claims or\n   counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject\n   matter hereof. If any provision of this License is held to be\n   unenforceable, such provision shall be reformed only to the extent\n   necessary to make it enforceable. Any law or regulation which provides that\n   the language of a contract shall be construed against the drafter shall not\n   be used to construe this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version\n      of the License under which You originally received the Covered Software,\n      or under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a\n      modified version of this License if you rename the license and remove\n      any references to the name of the license steward (except to note that\n      such modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\n      Licenses If You choose to distribute Source Code Form that is\n      Incompatible With Secondary Licenses under the terms of this version of\n      the License, the notice described in Exhibit B of this License must be\n      attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file,\nthen You may include the notice in a location (such as a LICENSE file in a\nrelevant directory) where a recipient would be likely to look for such a\nnotice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n\n      This Source Code Form is \"Incompatible\n      With Secondary Licenses\", as defined by\n      the Mozilla Public License, v. 2.0.\n"
  },
  {
    "path": "vendor/github.com/hashicorp/golang-lru/simplelru/lru.go",
    "content": "package simplelru\n\nimport (\n\t\"container/list\"\n\t\"errors\"\n)\n\n// EvictCallback is used to get a callback when a cache entry is evicted\ntype EvictCallback func(key interface{}, value interface{})\n\n// LRU implements a non-thread safe fixed size LRU cache\ntype LRU struct {\n\tsize      int\n\tevictList *list.List\n\titems     map[interface{}]*list.Element\n\tonEvict   EvictCallback\n}\n\n// entry is used to hold a value in the evictList\ntype entry struct {\n\tkey   interface{}\n\tvalue interface{}\n}\n\n// NewLRU constructs an LRU of the given size\nfunc NewLRU(size int, onEvict EvictCallback) (*LRU, error) {\n\tif size <= 0 {\n\t\treturn nil, errors.New(\"must provide a positive size\")\n\t}\n\tc := &LRU{\n\t\tsize:      size,\n\t\tevictList: list.New(),\n\t\titems:     make(map[interface{}]*list.Element),\n\t\tonEvict:   onEvict,\n\t}\n\treturn c, nil\n}\n\n// Purge is used to completely clear the cache.\nfunc (c *LRU) Purge() {\n\tfor k, v := range c.items {\n\t\tif c.onEvict != nil {\n\t\t\tc.onEvict(k, v.Value.(*entry).value)\n\t\t}\n\t\tdelete(c.items, k)\n\t}\n\tc.evictList.Init()\n}\n\n// Add adds a value to the cache.  Returns true if an eviction occurred.\nfunc (c *LRU) Add(key, value interface{}) (evicted bool) {\n\t// Check for existing item\n\tif ent, ok := c.items[key]; ok {\n\t\tc.evictList.MoveToFront(ent)\n\t\tent.Value.(*entry).value = value\n\t\treturn false\n\t}\n\n\t// Add new item\n\tent := &entry{key, value}\n\tentry := c.evictList.PushFront(ent)\n\tc.items[key] = entry\n\n\tevict := c.evictList.Len() > c.size\n\t// Verify size not exceeded\n\tif evict {\n\t\tc.removeOldest()\n\t}\n\treturn evict\n}\n\n// Get looks up a key's value from the cache.\nfunc (c *LRU) Get(key interface{}) (value interface{}, ok bool) {\n\tif ent, ok := c.items[key]; ok {\n\t\tc.evictList.MoveToFront(ent)\n\t\tif ent.Value.(*entry) == nil {\n\t\t\treturn nil, false\n\t\t}\n\t\treturn ent.Value.(*entry).value, true\n\t}\n\treturn\n}\n\n// Contains checks if a key is in the cache, without updating the recent-ness\n// or deleting it for being stale.\nfunc (c *LRU) Contains(key interface{}) (ok bool) {\n\t_, ok = c.items[key]\n\treturn ok\n}\n\n// Peek returns the key value (or undefined if not found) without updating\n// the \"recently used\"-ness of the key.\nfunc (c *LRU) Peek(key interface{}) (value interface{}, ok bool) {\n\tvar ent *list.Element\n\tif ent, ok = c.items[key]; ok {\n\t\treturn ent.Value.(*entry).value, true\n\t}\n\treturn nil, ok\n}\n\n// Remove removes the provided key from the cache, returning if the\n// key was contained.\nfunc (c *LRU) Remove(key interface{}) (present bool) {\n\tif ent, ok := c.items[key]; ok {\n\t\tc.removeElement(ent)\n\t\treturn true\n\t}\n\treturn false\n}\n\n// RemoveOldest removes the oldest item from the cache.\nfunc (c *LRU) RemoveOldest() (key, value interface{}, ok bool) {\n\tent := c.evictList.Back()\n\tif ent != nil {\n\t\tc.removeElement(ent)\n\t\tkv := ent.Value.(*entry)\n\t\treturn kv.key, kv.value, true\n\t}\n\treturn nil, nil, false\n}\n\n// GetOldest returns the oldest entry\nfunc (c *LRU) GetOldest() (key, value interface{}, ok bool) {\n\tent := c.evictList.Back()\n\tif ent != nil {\n\t\tkv := ent.Value.(*entry)\n\t\treturn kv.key, kv.value, true\n\t}\n\treturn nil, nil, false\n}\n\n// Keys returns a slice of the keys in the cache, from oldest to newest.\nfunc (c *LRU) Keys() []interface{} {\n\tkeys := make([]interface{}, len(c.items))\n\ti := 0\n\tfor ent := c.evictList.Back(); ent != nil; ent = ent.Prev() {\n\t\tkeys[i] = ent.Value.(*entry).key\n\t\ti++\n\t}\n\treturn keys\n}\n\n// Len returns the number of items in the cache.\nfunc (c *LRU) Len() int {\n\treturn c.evictList.Len()\n}\n\n// Resize changes the cache size.\nfunc (c *LRU) Resize(size int) (evicted int) {\n\tdiff := c.Len() - size\n\tif diff < 0 {\n\t\tdiff = 0\n\t}\n\tfor i := 0; i < diff; i++ {\n\t\tc.removeOldest()\n\t}\n\tc.size = size\n\treturn diff\n}\n\n// removeOldest removes the oldest item from the cache.\nfunc (c *LRU) removeOldest() {\n\tent := c.evictList.Back()\n\tif ent != nil {\n\t\tc.removeElement(ent)\n\t}\n}\n\n// removeElement is used to remove a given list element from the cache\nfunc (c *LRU) removeElement(e *list.Element) {\n\tc.evictList.Remove(e)\n\tkv := e.Value.(*entry)\n\tdelete(c.items, kv.key)\n\tif c.onEvict != nil {\n\t\tc.onEvict(kv.key, kv.value)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go",
    "content": "// Package simplelru provides simple LRU implementation based on build-in container/list.\npackage simplelru\n\n// LRUCache is the interface for simple LRU cache.\ntype LRUCache interface {\n\t// Adds a value to the cache, returns true if an eviction occurred and\n\t// updates the \"recently used\"-ness of the key.\n\tAdd(key, value interface{}) bool\n\n\t// Returns key's value from the cache and\n\t// updates the \"recently used\"-ness of the key. #value, isFound\n\tGet(key interface{}) (value interface{}, ok bool)\n\n\t// Checks if a key exists in cache without updating the recent-ness.\n\tContains(key interface{}) (ok bool)\n\n\t// Returns key's value without updating the \"recently used\"-ness of the key.\n\tPeek(key interface{}) (value interface{}, ok bool)\n\n\t// Removes a key from the cache.\n\tRemove(key interface{}) bool\n\n\t// Removes the oldest entry from cache.\n\tRemoveOldest() (interface{}, interface{}, bool)\n\n\t// Returns the oldest entry from the cache. #key, value, isFound\n\tGetOldest() (interface{}, interface{}, bool)\n\n\t// Returns a slice of the keys in the cache, from oldest to newest.\n\tKeys() []interface{}\n\n\t// Returns the number of items in the cache.\n\tLen() int\n\n\t// Clears all cache entries.\n\tPurge()\n\n\t// Resizes cache, returning number evicted\n\tResize(int) int\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/.gitignore",
    "content": "y.output\r\n\r\n# ignore intellij files\r\n.idea\r\n*.iml\r\n*.ipr\r\n*.iws\r\n\r\n*.test\r\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/.travis.yml",
    "content": "sudo: false\n\nlanguage: go\n\ngo:\n  - 1.x\n  - tip\n\nbranches:\n  only:\n    - master\n\nscript: make test\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/LICENSE",
    "content": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. “Contributor”\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. “Contributor Version”\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor’s Contribution.\n\n1.3. “Contribution”\n\n     means Covered Software of a particular Contributor.\n\n1.4. “Covered Software”\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. “Incompatible With Secondary Licenses”\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of version\n        1.1 or earlier of the License, but not also under the terms of a\n        Secondary License.\n\n1.6. “Executable Form”\n\n     means any form of the work other than Source Code Form.\n\n1.7. “Larger Work”\n\n     means a work that combines Covered Software with other material, in a separate\n     file or files, that is not Covered Software.\n\n1.8. “License”\n\n     means this document.\n\n1.9. “Licensable”\n\n     means having the right to grant, to the maximum extent possible, whether at the\n     time of the initial grant or subsequently, any and all of the rights conveyed by\n     this License.\n\n1.10. “Modifications”\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to, deletion\n        from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. “Patent Claims” of a Contributor\n\n      means any patent claim(s), including without limitation, method, process,\n      and apparatus claims, in any patent Licensable by such Contributor that\n      would be infringed, but for the grant of the License, by the making,\n      using, selling, offering for sale, having made, import, or transfer of\n      either its Contributions or its Contributor Version.\n\n1.12. “Secondary License”\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. “Source Code Form”\n\n      means the form of the work preferred for making modifications.\n\n1.14. “You” (or “Your”)\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, “You” includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, “control” means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or as\n        part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its Contributions\n        or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution become\n     effective for each Contribution on the date the Contributor first distributes\n     such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under this\n     License. No additional rights or licenses will be implied from the distribution\n     or licensing of Covered Software under this License. Notwithstanding Section\n     2.1(b) above, no patent license is granted by a Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party’s\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of its\n        Contributions.\n\n     This License does not grant any rights in the trademarks, service marks, or\n     logos of any Contributor (except as may be necessary to comply with the\n     notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this License\n     (see Section 10.2) or under the terms of a Secondary License (if permitted\n     under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its Contributions\n     are its original creation(s) or it has sufficient rights to grant the\n     rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under applicable\n     copyright doctrines of fair use, fair dealing, or other equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under the\n     terms of this License. You must inform recipients that the Source Code Form\n     of the Covered Software is governed by the terms of this License, and how\n     they can obtain a copy of this License. You may not attempt to alter or\n     restrict the recipients’ rights in the Source Code Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this License,\n        or sublicense it under different terms, provided that the license for\n        the Executable Form does not attempt to limit or alter the recipients’\n        rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for the\n     Covered Software. If the Larger Work is a combination of Covered Software\n     with a work governed by one or more Secondary Licenses, and the Covered\n     Software is not Incompatible With Secondary Licenses, this License permits\n     You to additionally distribute such Covered Software under the terms of\n     such Secondary License(s), so that the recipient of the Larger Work may, at\n     their option, further distribute the Covered Software under the terms of\n     either this License or such Secondary License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices (including\n     copyright notices, patent notices, disclaimers of warranty, or limitations\n     of liability) contained within the Source Code Form of the Covered\n     Software, except that You may alter any license notices to the extent\n     required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on behalf\n     of any Contributor. You must make it absolutely clear that any such\n     warranty, support, indemnity, or liability obligation is offered by You\n     alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute, judicial\n   order, or regulation then You must: (a) comply with the terms of this License\n   to the maximum extent possible; and (b) describe the limitations and the code\n   they affect. Such description must be placed in a text file included with all\n   distributions of the Covered Software under this License. Except to the\n   extent prohibited by statute or regulation, such description must be\n   sufficiently detailed for a recipient of ordinary skill to be able to\n   understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing basis,\n     if such Contributor fails to notify You of the non-compliance by some\n     reasonable means prior to 60 days after You have come back into compliance.\n     Moreover, Your grants from a particular Contributor are reinstated on an\n     ongoing basis if such Contributor notifies You of the non-compliance by\n     some reasonable means, this is the first time You have received notice of\n     non-compliance with this License from such Contributor, and You become\n     compliant prior to 30 days after Your receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions, counter-claims,\n     and cross-claims) alleging that a Contributor Version directly or\n     indirectly infringes any patent, then the rights granted to You by any and\n     all Contributors for the Covered Software under Section 2.1 of this License\n     shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an “as is” basis, without\n   warranty of any kind, either expressed, implied, or statutory, including,\n   without limitation, warranties that the Covered Software is free of defects,\n   merchantable, fit for a particular purpose or non-infringing. The entire\n   risk as to the quality and performance of the Covered Software is with You.\n   Should any Covered Software prove defective in any respect, You (not any\n   Contributor) assume the cost of any necessary servicing, repair, or\n   correction. This disclaimer of warranty constitutes an essential part of this\n   License. No use of  any Covered Software is authorized under this License\n   except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from such\n   party’s negligence to the extent applicable law prohibits such limitation.\n   Some jurisdictions do not allow the exclusion or limitation of incidental or\n   consequential damages, so this exclusion and limitation may not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts of\n   a jurisdiction where the defendant maintains its principal place of business\n   and such litigation shall be governed by laws of that jurisdiction, without\n   reference to its conflict-of-law provisions. Nothing in this Section shall\n   prevent a party’s ability to bring cross-claims or counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject matter\n   hereof. If any provision of this License is held to be unenforceable, such\n   provision shall be reformed only to the extent necessary to make it\n   enforceable. Any law or regulation which provides that the language of a\n   contract shall be construed against the drafter shall not be used to construe\n   this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version of\n      the License under which You originally received the Covered Software, or\n      under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a modified\n      version of this License if you rename the license and remove any\n      references to the name of the license steward (except to note that such\n      modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses\n      If You choose to distribute Source Code Form that is Incompatible With\n      Secondary Licenses under the terms of this version of the License, the\n      notice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file, then\nYou may include the notice in a location (such as a LICENSE file in a relevant\ndirectory) where a recipient would be likely to look for such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - “Incompatible With Secondary Licenses” Notice\n\n      This Source Code Form is “Incompatible\n      With Secondary Licenses”, as defined by\n      the Mozilla Public License, v. 2.0.\n\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/Makefile",
    "content": "TEST?=./...\r\n\r\ndefault: test\r\n\r\nfmt: generate\r\n\tgo fmt ./...\r\n\r\ntest: generate\r\n\tgo get -t ./...\r\n\tgo test $(TEST) $(TESTARGS)\r\n\r\ngenerate:\r\n\tgo generate ./...\r\n\r\nupdatedeps:\r\n\tgo get -u golang.org/x/tools/cmd/stringer\r\n\r\n.PHONY: default generate test updatedeps\r\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/README.md",
    "content": "# HCL\n\n[![GoDoc](https://godoc.org/github.com/hashicorp/hcl?status.png)](https://godoc.org/github.com/hashicorp/hcl) [![Build Status](https://travis-ci.org/hashicorp/hcl.svg?branch=master)](https://travis-ci.org/hashicorp/hcl)\n\nHCL (HashiCorp Configuration Language) is a configuration language built\nby HashiCorp. The goal of HCL is to build a structured configuration language\nthat is both human and machine friendly for use with command-line tools, but\nspecifically targeted towards DevOps tools, servers, etc.\n\nHCL is also fully JSON compatible. That is, JSON can be used as completely\nvalid input to a system expecting HCL. This helps makes systems\ninteroperable with other systems.\n\nHCL is heavily inspired by\n[libucl](https://github.com/vstakhov/libucl),\nnginx configuration, and others similar.\n\n## Why?\n\nA common question when viewing HCL is to ask the question: why not\nJSON, YAML, etc.?\n\nPrior to HCL, the tools we built at [HashiCorp](http://www.hashicorp.com)\nused a variety of configuration languages from full programming languages\nsuch as Ruby to complete data structure languages such as JSON. What we\nlearned is that some people wanted human-friendly configuration languages\nand some people wanted machine-friendly languages.\n\nJSON fits a nice balance in this, but is fairly verbose and most\nimportantly doesn't support comments. With YAML, we found that beginners\nhad a really hard time determining what the actual structure was, and\nended up guessing more often than not whether to use a hyphen, colon, etc.\nin order to represent some configuration key.\n\nFull programming languages such as Ruby enable complex behavior\na configuration language shouldn't usually allow, and also forces\npeople to learn some set of Ruby.\n\nBecause of this, we decided to create our own configuration language\nthat is JSON-compatible. Our configuration language (HCL) is designed\nto be written and modified by humans. The API for HCL allows JSON\nas an input so that it is also machine-friendly (machines can generate\nJSON instead of trying to generate HCL).\n\nOur goal with HCL is not to alienate other configuration languages.\nIt is instead to provide HCL as a specialized language for our tools,\nand JSON as the interoperability layer.\n\n## Syntax\n\nFor a complete grammar, please see the parser itself. A high-level overview\nof the syntax and grammar is listed here.\n\n  * Single line comments start with `#` or `//`\n\n  * Multi-line comments are wrapped in `/*` and `*/`. Nested block comments\n    are not allowed. A multi-line comment (also known as a block comment)\n    terminates at the first `*/` found.\n\n  * Values are assigned with the syntax `key = value` (whitespace doesn't\n    matter). The value can be any primitive: a string, number, boolean,\n    object, or list.\n\n  * Strings are double-quoted and can contain any UTF-8 characters.\n    Example: `\"Hello, World\"`\n\n  * Multi-line strings start with `<<EOF` at the end of a line, and end\n    with `EOF` on its own line ([here documents](https://en.wikipedia.org/wiki/Here_document)).\n    Any text may be used in place of `EOF`. Example:\n```\n<<FOO\nhello\nworld\nFOO\n```\n\n  * Numbers are assumed to be base 10. If you prefix a number with 0x,\n    it is treated as a hexadecimal. If it is prefixed with 0, it is\n    treated as an octal. Numbers can be in scientific notation: \"1e10\".\n\n  * Boolean values: `true`, `false`\n\n  * Arrays can be made by wrapping it in `[]`. Example:\n    `[\"foo\", \"bar\", 42]`. Arrays can contain primitives,\n    other arrays, and objects. As an alternative, lists\n    of objects can be created with repeated blocks, using\n    this structure:\n\n    ```hcl\n    service {\n        key = \"value\"\n    }\n\n    service {\n        key = \"value\"\n    }\n    ```\n\nObjects and nested objects are created using the structure shown below:\n\n```\nvariable \"ami\" {\n    description = \"the AMI to use\"\n}\n```\nThis would be equivalent to the following json:\n``` json\n{\n  \"variable\": {\n      \"ami\": {\n          \"description\": \"the AMI to use\"\n        }\n    }\n}\n```\n\n## Thanks\n\nThanks to:\n\n  * [@vstakhov](https://github.com/vstakhov) - The original libucl parser\n    and syntax that HCL was based off of.\n\n  * [@fatih](https://github.com/fatih) - The rewritten HCL parser\n    in pure Go (no goyacc) and support for a printer.\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/appveyor.yml",
    "content": "version: \"build-{branch}-{build}\"\nimage: Visual Studio 2015\nclone_folder: c:\\gopath\\src\\github.com\\hashicorp\\hcl\nenvironment:\n  GOPATH: c:\\gopath\ninit:\n  - git config --global core.autocrlf false\ninstall:\n- cmd: >-\n    echo %Path%\n\n    go version\n\n    go env\n\n    go get -t ./...\n\nbuild_script:\n- cmd: go test -v ./...\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/decoder.go",
    "content": "package hcl\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/hashicorp/hcl/hcl/ast\"\n\t\"github.com/hashicorp/hcl/hcl/parser\"\n\t\"github.com/hashicorp/hcl/hcl/token\"\n)\n\n// This is the tag to use with structures to have settings for HCL\nconst tagName = \"hcl\"\n\nvar (\n\t// nodeType holds a reference to the type of ast.Node\n\tnodeType reflect.Type = findNodeType()\n)\n\n// Unmarshal accepts a byte slice as input and writes the\n// data to the value pointed to by v.\nfunc Unmarshal(bs []byte, v interface{}) error {\n\troot, err := parse(bs)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn DecodeObject(v, root)\n}\n\n// Decode reads the given input and decodes it into the structure\n// given by `out`.\nfunc Decode(out interface{}, in string) error {\n\tobj, err := Parse(in)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn DecodeObject(out, obj)\n}\n\n// DecodeObject is a lower-level version of Decode. It decodes a\n// raw Object into the given output.\nfunc DecodeObject(out interface{}, n ast.Node) error {\n\tval := reflect.ValueOf(out)\n\tif val.Kind() != reflect.Ptr {\n\t\treturn errors.New(\"result must be a pointer\")\n\t}\n\n\t// If we have the file, we really decode the root node\n\tif f, ok := n.(*ast.File); ok {\n\t\tn = f.Node\n\t}\n\n\tvar d decoder\n\treturn d.decode(\"root\", n, val.Elem())\n}\n\ntype decoder struct {\n\tstack []reflect.Kind\n}\n\nfunc (d *decoder) decode(name string, node ast.Node, result reflect.Value) error {\n\tk := result\n\n\t// If we have an interface with a valid value, we use that\n\t// for the check.\n\tif result.Kind() == reflect.Interface {\n\t\telem := result.Elem()\n\t\tif elem.IsValid() {\n\t\t\tk = elem\n\t\t}\n\t}\n\n\t// Push current onto stack unless it is an interface.\n\tif k.Kind() != reflect.Interface {\n\t\td.stack = append(d.stack, k.Kind())\n\n\t\t// Schedule a pop\n\t\tdefer func() {\n\t\t\td.stack = d.stack[:len(d.stack)-1]\n\t\t}()\n\t}\n\n\tswitch k.Kind() {\n\tcase reflect.Bool:\n\t\treturn d.decodeBool(name, node, result)\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn d.decodeFloat(name, node, result)\n\tcase reflect.Int, reflect.Int32, reflect.Int64:\n\t\treturn d.decodeInt(name, node, result)\n\tcase reflect.Interface:\n\t\t// When we see an interface, we make our own thing\n\t\treturn d.decodeInterface(name, node, result)\n\tcase reflect.Map:\n\t\treturn d.decodeMap(name, node, result)\n\tcase reflect.Ptr:\n\t\treturn d.decodePtr(name, node, result)\n\tcase reflect.Slice:\n\t\treturn d.decodeSlice(name, node, result)\n\tcase reflect.String:\n\t\treturn d.decodeString(name, node, result)\n\tcase reflect.Struct:\n\t\treturn d.decodeStruct(name, node, result)\n\tdefault:\n\t\treturn &parser.PosError{\n\t\t\tPos: node.Pos(),\n\t\t\tErr: fmt.Errorf(\"%s: unknown kind to decode into: %s\", name, k.Kind()),\n\t\t}\n\t}\n}\n\nfunc (d *decoder) decodeBool(name string, node ast.Node, result reflect.Value) error {\n\tswitch n := node.(type) {\n\tcase *ast.LiteralType:\n\t\tif n.Token.Type == token.BOOL {\n\t\t\tv, err := strconv.ParseBool(n.Token.Text)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tresult.Set(reflect.ValueOf(v))\n\t\t\treturn nil\n\t\t}\n\t}\n\n\treturn &parser.PosError{\n\t\tPos: node.Pos(),\n\t\tErr: fmt.Errorf(\"%s: unknown type %T\", name, node),\n\t}\n}\n\nfunc (d *decoder) decodeFloat(name string, node ast.Node, result reflect.Value) error {\n\tswitch n := node.(type) {\n\tcase *ast.LiteralType:\n\t\tif n.Token.Type == token.FLOAT || n.Token.Type == token.NUMBER {\n\t\t\tv, err := strconv.ParseFloat(n.Token.Text, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tresult.Set(reflect.ValueOf(v).Convert(result.Type()))\n\t\t\treturn nil\n\t\t}\n\t}\n\n\treturn &parser.PosError{\n\t\tPos: node.Pos(),\n\t\tErr: fmt.Errorf(\"%s: unknown type %T\", name, node),\n\t}\n}\n\nfunc (d *decoder) decodeInt(name string, node ast.Node, result reflect.Value) error {\n\tswitch n := node.(type) {\n\tcase *ast.LiteralType:\n\t\tswitch n.Token.Type {\n\t\tcase token.NUMBER:\n\t\t\tv, err := strconv.ParseInt(n.Token.Text, 0, 0)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif result.Kind() == reflect.Interface {\n\t\t\t\tresult.Set(reflect.ValueOf(int(v)))\n\t\t\t} else {\n\t\t\t\tresult.SetInt(v)\n\t\t\t}\n\t\t\treturn nil\n\t\tcase token.STRING:\n\t\t\tv, err := strconv.ParseInt(n.Token.Value().(string), 0, 0)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif result.Kind() == reflect.Interface {\n\t\t\t\tresult.Set(reflect.ValueOf(int(v)))\n\t\t\t} else {\n\t\t\t\tresult.SetInt(v)\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\t}\n\n\treturn &parser.PosError{\n\t\tPos: node.Pos(),\n\t\tErr: fmt.Errorf(\"%s: unknown type %T\", name, node),\n\t}\n}\n\nfunc (d *decoder) decodeInterface(name string, node ast.Node, result reflect.Value) error {\n\t// When we see an ast.Node, we retain the value to enable deferred decoding.\n\t// Very useful in situations where we want to preserve ast.Node information\n\t// like Pos\n\tif result.Type() == nodeType && result.CanSet() {\n\t\tresult.Set(reflect.ValueOf(node))\n\t\treturn nil\n\t}\n\n\tvar set reflect.Value\n\tredecode := true\n\n\t// For testing types, ObjectType should just be treated as a list. We\n\t// set this to a temporary var because we want to pass in the real node.\n\ttestNode := node\n\tif ot, ok := node.(*ast.ObjectType); ok {\n\t\ttestNode = ot.List\n\t}\n\n\tswitch n := testNode.(type) {\n\tcase *ast.ObjectList:\n\t\t// If we're at the root or we're directly within a slice, then we\n\t\t// decode objects into map[string]interface{}, otherwise we decode\n\t\t// them into lists.\n\t\tif len(d.stack) == 0 || d.stack[len(d.stack)-1] == reflect.Slice {\n\t\t\tvar temp map[string]interface{}\n\t\t\ttempVal := reflect.ValueOf(temp)\n\t\t\tresult := reflect.MakeMap(\n\t\t\t\treflect.MapOf(\n\t\t\t\t\treflect.TypeOf(\"\"),\n\t\t\t\t\ttempVal.Type().Elem()))\n\n\t\t\tset = result\n\t\t} else {\n\t\t\tvar temp []map[string]interface{}\n\t\t\ttempVal := reflect.ValueOf(temp)\n\t\t\tresult := reflect.MakeSlice(\n\t\t\t\treflect.SliceOf(tempVal.Type().Elem()), 0, len(n.Items))\n\t\t\tset = result\n\t\t}\n\tcase *ast.ObjectType:\n\t\t// If we're at the root or we're directly within a slice, then we\n\t\t// decode objects into map[string]interface{}, otherwise we decode\n\t\t// them into lists.\n\t\tif len(d.stack) == 0 || d.stack[len(d.stack)-1] == reflect.Slice {\n\t\t\tvar temp map[string]interface{}\n\t\t\ttempVal := reflect.ValueOf(temp)\n\t\t\tresult := reflect.MakeMap(\n\t\t\t\treflect.MapOf(\n\t\t\t\t\treflect.TypeOf(\"\"),\n\t\t\t\t\ttempVal.Type().Elem()))\n\n\t\t\tset = result\n\t\t} else {\n\t\t\tvar temp []map[string]interface{}\n\t\t\ttempVal := reflect.ValueOf(temp)\n\t\t\tresult := reflect.MakeSlice(\n\t\t\t\treflect.SliceOf(tempVal.Type().Elem()), 0, 1)\n\t\t\tset = result\n\t\t}\n\tcase *ast.ListType:\n\t\tvar temp []interface{}\n\t\ttempVal := reflect.ValueOf(temp)\n\t\tresult := reflect.MakeSlice(\n\t\t\treflect.SliceOf(tempVal.Type().Elem()), 0, 0)\n\t\tset = result\n\tcase *ast.LiteralType:\n\t\tswitch n.Token.Type {\n\t\tcase token.BOOL:\n\t\t\tvar result bool\n\t\t\tset = reflect.Indirect(reflect.New(reflect.TypeOf(result)))\n\t\tcase token.FLOAT:\n\t\t\tvar result float64\n\t\t\tset = reflect.Indirect(reflect.New(reflect.TypeOf(result)))\n\t\tcase token.NUMBER:\n\t\t\tvar result int\n\t\t\tset = reflect.Indirect(reflect.New(reflect.TypeOf(result)))\n\t\tcase token.STRING, token.HEREDOC:\n\t\t\tset = reflect.Indirect(reflect.New(reflect.TypeOf(\"\")))\n\t\tdefault:\n\t\t\treturn &parser.PosError{\n\t\t\t\tPos: node.Pos(),\n\t\t\t\tErr: fmt.Errorf(\"%s: cannot decode into interface: %T\", name, node),\n\t\t\t}\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\n\t\t\t\"%s: cannot decode into interface: %T\",\n\t\t\tname, node)\n\t}\n\n\t// Set the result to what its supposed to be, then reset\n\t// result so we don't reflect into this method anymore.\n\tresult.Set(set)\n\n\tif redecode {\n\t\t// Revisit the node so that we can use the newly instantiated\n\t\t// thing and populate it.\n\t\tif err := d.decode(name, node, result); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (d *decoder) decodeMap(name string, node ast.Node, result reflect.Value) error {\n\tif item, ok := node.(*ast.ObjectItem); ok {\n\t\tnode = &ast.ObjectList{Items: []*ast.ObjectItem{item}}\n\t}\n\n\tif ot, ok := node.(*ast.ObjectType); ok {\n\t\tnode = ot.List\n\t}\n\n\tn, ok := node.(*ast.ObjectList)\n\tif !ok {\n\t\treturn &parser.PosError{\n\t\t\tPos: node.Pos(),\n\t\t\tErr: fmt.Errorf(\"%s: not an object type for map (%T)\", name, node),\n\t\t}\n\t}\n\n\t// If we have an interface, then we can address the interface,\n\t// but not the slice itself, so get the element but set the interface\n\tset := result\n\tif result.Kind() == reflect.Interface {\n\t\tresult = result.Elem()\n\t}\n\n\tresultType := result.Type()\n\tresultElemType := resultType.Elem()\n\tresultKeyType := resultType.Key()\n\tif resultKeyType.Kind() != reflect.String {\n\t\treturn &parser.PosError{\n\t\t\tPos: node.Pos(),\n\t\t\tErr: fmt.Errorf(\"%s: map must have string keys\", name),\n\t\t}\n\t}\n\n\t// Make a map if it is nil\n\tresultMap := result\n\tif result.IsNil() {\n\t\tresultMap = reflect.MakeMap(\n\t\t\treflect.MapOf(resultKeyType, resultElemType))\n\t}\n\n\t// Go through each element and decode it.\n\tdone := make(map[string]struct{})\n\tfor _, item := range n.Items {\n\t\tif item.Val == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\t// github.com/hashicorp/terraform/issue/5740\n\t\tif len(item.Keys) == 0 {\n\t\t\treturn &parser.PosError{\n\t\t\t\tPos: node.Pos(),\n\t\t\t\tErr: fmt.Errorf(\"%s: map must have string keys\", name),\n\t\t\t}\n\t\t}\n\n\t\t// Get the key we're dealing with, which is the first item\n\t\tkeyStr := item.Keys[0].Token.Value().(string)\n\n\t\t// If we've already processed this key, then ignore it\n\t\tif _, ok := done[keyStr]; ok {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Determine the value. If we have more than one key, then we\n\t\t// get the objectlist of only these keys.\n\t\titemVal := item.Val\n\t\tif len(item.Keys) > 1 {\n\t\t\titemVal = n.Filter(keyStr)\n\t\t\tdone[keyStr] = struct{}{}\n\t\t}\n\n\t\t// Make the field name\n\t\tfieldName := fmt.Sprintf(\"%s.%s\", name, keyStr)\n\n\t\t// Get the key/value as reflection values\n\t\tkey := reflect.ValueOf(keyStr)\n\t\tval := reflect.Indirect(reflect.New(resultElemType))\n\n\t\t// If we have a pre-existing value in the map, use that\n\t\toldVal := resultMap.MapIndex(key)\n\t\tif oldVal.IsValid() {\n\t\t\tval.Set(oldVal)\n\t\t}\n\n\t\t// Decode!\n\t\tif err := d.decode(fieldName, itemVal, val); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Set the value on the map\n\t\tresultMap.SetMapIndex(key, val)\n\t}\n\n\t// Set the final map if we can\n\tset.Set(resultMap)\n\treturn nil\n}\n\nfunc (d *decoder) decodePtr(name string, node ast.Node, result reflect.Value) error {\n\t// Create an element of the concrete (non pointer) type and decode\n\t// into that. Then set the value of the pointer to this type.\n\tresultType := result.Type()\n\tresultElemType := resultType.Elem()\n\tval := reflect.New(resultElemType)\n\tif err := d.decode(name, node, reflect.Indirect(val)); err != nil {\n\t\treturn err\n\t}\n\n\tresult.Set(val)\n\treturn nil\n}\n\nfunc (d *decoder) decodeSlice(name string, node ast.Node, result reflect.Value) error {\n\t// If we have an interface, then we can address the interface,\n\t// but not the slice itself, so get the element but set the interface\n\tset := result\n\tif result.Kind() == reflect.Interface {\n\t\tresult = result.Elem()\n\t}\n\t// Create the slice if it isn't nil\n\tresultType := result.Type()\n\tresultElemType := resultType.Elem()\n\tif result.IsNil() {\n\t\tresultSliceType := reflect.SliceOf(resultElemType)\n\t\tresult = reflect.MakeSlice(\n\t\t\tresultSliceType, 0, 0)\n\t}\n\n\t// Figure out the items we'll be copying into the slice\n\tvar items []ast.Node\n\tswitch n := node.(type) {\n\tcase *ast.ObjectList:\n\t\titems = make([]ast.Node, len(n.Items))\n\t\tfor i, item := range n.Items {\n\t\t\titems[i] = item\n\t\t}\n\tcase *ast.ObjectType:\n\t\titems = []ast.Node{n}\n\tcase *ast.ListType:\n\t\titems = n.List\n\tdefault:\n\t\treturn &parser.PosError{\n\t\t\tPos: node.Pos(),\n\t\t\tErr: fmt.Errorf(\"unknown slice type: %T\", node),\n\t\t}\n\t}\n\n\tfor i, item := range items {\n\t\tfieldName := fmt.Sprintf(\"%s[%d]\", name, i)\n\n\t\t// Decode\n\t\tval := reflect.Indirect(reflect.New(resultElemType))\n\n\t\t// if item is an object that was decoded from ambiguous JSON and\n\t\t// flattened, make sure it's expanded if it needs to decode into a\n\t\t// defined structure.\n\t\titem := expandObject(item, val)\n\n\t\tif err := d.decode(fieldName, item, val); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Append it onto the slice\n\t\tresult = reflect.Append(result, val)\n\t}\n\n\tset.Set(result)\n\treturn nil\n}\n\n// expandObject detects if an ambiguous JSON object was flattened to a List which\n// should be decoded into a struct, and expands the ast to properly deocode.\nfunc expandObject(node ast.Node, result reflect.Value) ast.Node {\n\titem, ok := node.(*ast.ObjectItem)\n\tif !ok {\n\t\treturn node\n\t}\n\n\telemType := result.Type()\n\n\t// our target type must be a struct\n\tswitch elemType.Kind() {\n\tcase reflect.Ptr:\n\t\tswitch elemType.Elem().Kind() {\n\t\tcase reflect.Struct:\n\t\t\t//OK\n\t\tdefault:\n\t\t\treturn node\n\t\t}\n\tcase reflect.Struct:\n\t\t//OK\n\tdefault:\n\t\treturn node\n\t}\n\n\t// A list value will have a key and field name. If it had more fields,\n\t// it wouldn't have been flattened.\n\tif len(item.Keys) != 2 {\n\t\treturn node\n\t}\n\n\tkeyToken := item.Keys[0].Token\n\titem.Keys = item.Keys[1:]\n\n\t// we need to un-flatten the ast enough to decode\n\tnewNode := &ast.ObjectItem{\n\t\tKeys: []*ast.ObjectKey{\n\t\t\t{\n\t\t\t\tToken: keyToken,\n\t\t\t},\n\t\t},\n\t\tVal: &ast.ObjectType{\n\t\t\tList: &ast.ObjectList{\n\t\t\t\tItems: []*ast.ObjectItem{item},\n\t\t\t},\n\t\t},\n\t}\n\n\treturn newNode\n}\n\nfunc (d *decoder) decodeString(name string, node ast.Node, result reflect.Value) error {\n\tswitch n := node.(type) {\n\tcase *ast.LiteralType:\n\t\tswitch n.Token.Type {\n\t\tcase token.NUMBER:\n\t\t\tresult.Set(reflect.ValueOf(n.Token.Text).Convert(result.Type()))\n\t\t\treturn nil\n\t\tcase token.STRING, token.HEREDOC:\n\t\t\tresult.Set(reflect.ValueOf(n.Token.Value()).Convert(result.Type()))\n\t\t\treturn nil\n\t\t}\n\t}\n\n\treturn &parser.PosError{\n\t\tPos: node.Pos(),\n\t\tErr: fmt.Errorf(\"%s: unknown type for string %T\", name, node),\n\t}\n}\n\nfunc (d *decoder) decodeStruct(name string, node ast.Node, result reflect.Value) error {\n\tvar item *ast.ObjectItem\n\tif it, ok := node.(*ast.ObjectItem); ok {\n\t\titem = it\n\t\tnode = it.Val\n\t}\n\n\tif ot, ok := node.(*ast.ObjectType); ok {\n\t\tnode = ot.List\n\t}\n\n\t// Handle the special case where the object itself is a literal. Previously\n\t// the yacc parser would always ensure top-level elements were arrays. The new\n\t// parser does not make the same guarantees, thus we need to convert any\n\t// top-level literal elements into a list.\n\tif _, ok := node.(*ast.LiteralType); ok && item != nil {\n\t\tnode = &ast.ObjectList{Items: []*ast.ObjectItem{item}}\n\t}\n\n\tlist, ok := node.(*ast.ObjectList)\n\tif !ok {\n\t\treturn &parser.PosError{\n\t\t\tPos: node.Pos(),\n\t\t\tErr: fmt.Errorf(\"%s: not an object type for struct (%T)\", name, node),\n\t\t}\n\t}\n\n\t// This slice will keep track of all the structs we'll be decoding.\n\t// There can be more than one struct if there are embedded structs\n\t// that are squashed.\n\tstructs := make([]reflect.Value, 1, 5)\n\tstructs[0] = result\n\n\t// Compile the list of all the fields that we're going to be decoding\n\t// from all the structs.\n\ttype field struct {\n\t\tfield reflect.StructField\n\t\tval   reflect.Value\n\t}\n\tfields := []field{}\n\tfor len(structs) > 0 {\n\t\tstructVal := structs[0]\n\t\tstructs = structs[1:]\n\n\t\tstructType := structVal.Type()\n\t\tfor i := 0; i < structType.NumField(); i++ {\n\t\t\tfieldType := structType.Field(i)\n\t\t\ttagParts := strings.Split(fieldType.Tag.Get(tagName), \",\")\n\n\t\t\t// Ignore fields with tag name \"-\"\n\t\t\tif tagParts[0] == \"-\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif fieldType.Anonymous {\n\t\t\t\tfieldKind := fieldType.Type.Kind()\n\t\t\t\tif fieldKind != reflect.Struct {\n\t\t\t\t\treturn &parser.PosError{\n\t\t\t\t\t\tPos: node.Pos(),\n\t\t\t\t\t\tErr: fmt.Errorf(\"%s: unsupported type to struct: %s\",\n\t\t\t\t\t\t\tfieldType.Name, fieldKind),\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// We have an embedded field. We \"squash\" the fields down\n\t\t\t\t// if specified in the tag.\n\t\t\t\tsquash := false\n\t\t\t\tfor _, tag := range tagParts[1:] {\n\t\t\t\t\tif tag == \"squash\" {\n\t\t\t\t\t\tsquash = 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 squash {\n\t\t\t\t\tstructs = append(\n\t\t\t\t\t\tstructs, result.FieldByName(fieldType.Name))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Normal struct field, store it away\n\t\t\tfields = append(fields, field{fieldType, structVal.Field(i)})\n\t\t}\n\t}\n\n\tusedKeys := make(map[string]struct{})\n\tdecodedFields := make([]string, 0, len(fields))\n\tdecodedFieldsVal := make([]reflect.Value, 0)\n\tunusedKeysVal := make([]reflect.Value, 0)\n\n\t// fill unusedNodeKeys with keys from the AST\n\t// a slice because we have to do equals case fold to match Filter\n\tunusedNodeKeys := make(map[string][]token.Pos, 0)\n\tfor i, item := range list.Items {\n\t\tfor _, k := range item.Keys {\n\t\t\t// isNestedJSON returns true for e.g. bar in\n\t\t\t// { \"foo\": { \"bar\": {...} } }\n\t\t\t// This isn't an unused node key, so we want to skip it\n\t\t\tisNestedJSON := i > 0 && len(item.Keys) > 1\n\t\t\tif !isNestedJSON && (k.Token.JSON || k.Token.Type == token.IDENT) {\n\t\t\t\tfn := k.Token.Value().(string)\n\t\t\t\tsl := unusedNodeKeys[fn]\n\t\t\t\tunusedNodeKeys[fn] = append(sl, k.Token.Pos)\n\t\t\t}\n\t\t}\n\t}\n\n\tfor _, f := range fields {\n\t\tfield, fieldValue := f.field, f.val\n\t\tif !fieldValue.IsValid() {\n\t\t\t// This should never happen\n\t\t\tpanic(\"field is not valid\")\n\t\t}\n\n\t\t// If we can't set the field, then it is unexported or something,\n\t\t// and we just continue onwards.\n\t\tif !fieldValue.CanSet() {\n\t\t\tcontinue\n\t\t}\n\n\t\tfieldName := field.Name\n\n\t\ttagValue := field.Tag.Get(tagName)\n\t\ttagParts := strings.SplitN(tagValue, \",\", 2)\n\t\tif len(tagParts) >= 2 {\n\t\t\tswitch tagParts[1] {\n\t\t\tcase \"decodedFields\":\n\t\t\t\tdecodedFieldsVal = append(decodedFieldsVal, fieldValue)\n\t\t\t\tcontinue\n\t\t\tcase \"key\":\n\t\t\t\tif item == nil {\n\t\t\t\t\treturn &parser.PosError{\n\t\t\t\t\t\tPos: node.Pos(),\n\t\t\t\t\t\tErr: fmt.Errorf(\"%s: %s asked for 'key', impossible\",\n\t\t\t\t\t\t\tname, fieldName),\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfieldValue.SetString(item.Keys[0].Token.Value().(string))\n\t\t\t\tcontinue\n\t\t\tcase \"unusedKeyPositions\":\n\t\t\t\tunusedKeysVal = append(unusedKeysVal, fieldValue)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif tagParts[0] != \"\" {\n\t\t\tfieldName = tagParts[0]\n\t\t}\n\n\t\t// Determine the element we'll use to decode. If it is a single\n\t\t// match (only object with the field), then we decode it exactly.\n\t\t// If it is a prefix match, then we decode the matches.\n\t\tfilter := list.Filter(fieldName)\n\n\t\tprefixMatches := filter.Children()\n\t\tmatches := filter.Elem()\n\t\tif len(matches.Items) == 0 && len(prefixMatches.Items) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Track the used keys\n\t\tusedKeys[fieldName] = struct{}{}\n\t\tunusedNodeKeys = removeCaseFold(unusedNodeKeys, fieldName)\n\n\t\t// Create the field name and decode. We range over the elements\n\t\t// because we actually want the value.\n\t\tfieldName = fmt.Sprintf(\"%s.%s\", name, fieldName)\n\t\tif len(prefixMatches.Items) > 0 {\n\t\t\tif err := d.decode(fieldName, prefixMatches, fieldValue); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tfor _, match := range matches.Items {\n\t\t\tvar decodeNode ast.Node = match.Val\n\t\t\tif ot, ok := decodeNode.(*ast.ObjectType); ok {\n\t\t\t\tdecodeNode = &ast.ObjectList{Items: ot.List.Items}\n\t\t\t}\n\n\t\t\tif err := d.decode(fieldName, decodeNode, fieldValue); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tdecodedFields = append(decodedFields, field.Name)\n\t}\n\n\tif len(decodedFieldsVal) > 0 {\n\t\t// Sort it so that it is deterministic\n\t\tsort.Strings(decodedFields)\n\n\t\tfor _, v := range decodedFieldsVal {\n\t\t\tv.Set(reflect.ValueOf(decodedFields))\n\t\t}\n\t}\n\n\tif len(unusedNodeKeys) > 0 {\n\t\t// like decodedFields, populated the unusedKeys field(s)\n\t\tfor _, v := range unusedKeysVal {\n\t\t\tv.Set(reflect.ValueOf(unusedNodeKeys))\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// findNodeType returns the type of ast.Node\nfunc findNodeType() reflect.Type {\n\tvar nodeContainer struct {\n\t\tNode ast.Node\n\t}\n\tvalue := reflect.ValueOf(nodeContainer).FieldByName(\"Node\")\n\treturn value.Type()\n}\n\nfunc removeCaseFold(xs map[string][]token.Pos, y string) map[string][]token.Pos {\n\tvar toDel []string\n\n\tfor i := range xs {\n\t\tif strings.EqualFold(i, y) {\n\t\t\ttoDel = append(toDel, i)\n\t\t}\n\t}\n\tfor _, i := range toDel {\n\t\tdelete(xs, i)\n\t}\n\treturn xs\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/hcl/ast/ast.go",
    "content": "// Package ast declares the types used to represent syntax trees for HCL\n// (HashiCorp Configuration Language)\npackage ast\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/hashicorp/hcl/hcl/token\"\n)\n\n// Node is an element in the abstract syntax tree.\ntype Node interface {\n\tnode()\n\tPos() token.Pos\n}\n\nfunc (File) node()         {}\nfunc (ObjectList) node()   {}\nfunc (ObjectKey) node()    {}\nfunc (ObjectItem) node()   {}\nfunc (Comment) node()      {}\nfunc (CommentGroup) node() {}\nfunc (ObjectType) node()   {}\nfunc (LiteralType) node()  {}\nfunc (ListType) node()     {}\n\nvar unknownPos token.Pos\n\n// File represents a single HCL file\ntype File struct {\n\tNode     Node            // usually a *ObjectList\n\tComments []*CommentGroup // list of all comments in the source\n}\n\nfunc (f *File) Pos() token.Pos {\n\treturn f.Node.Pos()\n}\n\n// ObjectList represents a list of ObjectItems. An HCL file itself is an\n// ObjectList.\ntype ObjectList struct {\n\tItems []*ObjectItem\n}\n\nfunc (o *ObjectList) Add(item *ObjectItem) {\n\to.Items = append(o.Items, item)\n}\n\n// Filter filters out the objects with the given key list as a prefix.\n//\n// The returned list of objects contain ObjectItems where the keys have\n// this prefix already stripped off. This might result in objects with\n// zero-length key lists if they have no children.\n//\n// If no matches are found, an empty ObjectList (non-nil) is returned.\nfunc (o *ObjectList) Filter(keys ...string) *ObjectList {\n\tvar result ObjectList\n\tfor _, item := range o.Items {\n\t\t// If there aren't enough keys, then ignore this\n\t\tif len(item.Keys) < len(keys) {\n\t\t\tcontinue\n\t\t}\n\n\t\tmatch := true\n\t\tfor i, key := range item.Keys[:len(keys)] {\n\t\t\tkey := key.Token.Value().(string)\n\t\t\tif key != keys[i] && !strings.EqualFold(key, keys[i]) {\n\t\t\t\tmatch = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !match {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Strip off the prefix from the children\n\t\tnewItem := *item\n\t\tnewItem.Keys = newItem.Keys[len(keys):]\n\t\tresult.Add(&newItem)\n\t}\n\n\treturn &result\n}\n\n// Children returns further nested objects (key length > 0) within this\n// ObjectList. This should be used with Filter to get at child items.\nfunc (o *ObjectList) Children() *ObjectList {\n\tvar result ObjectList\n\tfor _, item := range o.Items {\n\t\tif len(item.Keys) > 0 {\n\t\t\tresult.Add(item)\n\t\t}\n\t}\n\n\treturn &result\n}\n\n// Elem returns items in the list that are direct element assignments\n// (key length == 0). This should be used with Filter to get at elements.\nfunc (o *ObjectList) Elem() *ObjectList {\n\tvar result ObjectList\n\tfor _, item := range o.Items {\n\t\tif len(item.Keys) == 0 {\n\t\t\tresult.Add(item)\n\t\t}\n\t}\n\n\treturn &result\n}\n\nfunc (o *ObjectList) Pos() token.Pos {\n\t// If an Object has no members, it won't have a first item\n\t// to use as position\n\tif len(o.Items) == 0 {\n\t\treturn unknownPos\n\t}\n\t// Return the uninitialized position\n\treturn o.Items[0].Pos()\n}\n\n// ObjectItem represents a HCL Object Item. An item is represented with a key\n// (or keys). It can be an assignment or an object (both normal and nested)\ntype ObjectItem struct {\n\t// keys is only one length long if it's of type assignment. If it's a\n\t// nested object it can be larger than one. In that case \"assign\" is\n\t// invalid as there is no assignments for a nested object.\n\tKeys []*ObjectKey\n\n\t// assign contains the position of \"=\", if any\n\tAssign token.Pos\n\n\t// val is the item itself. It can be an object,list, number, bool or a\n\t// string. If key length is larger than one, val can be only of type\n\t// Object.\n\tVal Node\n\n\tLeadComment *CommentGroup // associated lead comment\n\tLineComment *CommentGroup // associated line comment\n}\n\nfunc (o *ObjectItem) Pos() token.Pos {\n\t// If a parsed object has no keys, there is no position\n\t// for its first element.\n\tif len(o.Keys) == 0 {\n\t\treturn unknownPos\n\t}\n\n\treturn o.Keys[0].Pos()\n}\n\n// ObjectKeys are either an identifier or of type string.\ntype ObjectKey struct {\n\tToken token.Token\n}\n\nfunc (o *ObjectKey) Pos() token.Pos {\n\treturn o.Token.Pos\n}\n\n// LiteralType represents a literal of basic type. Valid types are:\n// token.NUMBER, token.FLOAT, token.BOOL and token.STRING\ntype LiteralType struct {\n\tToken token.Token\n\n\t// comment types, only used when in a list\n\tLeadComment *CommentGroup\n\tLineComment *CommentGroup\n}\n\nfunc (l *LiteralType) Pos() token.Pos {\n\treturn l.Token.Pos\n}\n\n// ListStatement represents a HCL List type\ntype ListType struct {\n\tLbrack token.Pos // position of \"[\"\n\tRbrack token.Pos // position of \"]\"\n\tList   []Node    // the elements in lexical order\n}\n\nfunc (l *ListType) Pos() token.Pos {\n\treturn l.Lbrack\n}\n\nfunc (l *ListType) Add(node Node) {\n\tl.List = append(l.List, node)\n}\n\n// ObjectType represents a HCL Object Type\ntype ObjectType struct {\n\tLbrace token.Pos   // position of \"{\"\n\tRbrace token.Pos   // position of \"}\"\n\tList   *ObjectList // the nodes in lexical order\n}\n\nfunc (o *ObjectType) Pos() token.Pos {\n\treturn o.Lbrace\n}\n\n// Comment node represents a single //, # style or /*- style commment\ntype Comment struct {\n\tStart token.Pos // position of / or #\n\tText  string\n}\n\nfunc (c *Comment) Pos() token.Pos {\n\treturn c.Start\n}\n\n// CommentGroup node represents a sequence of comments with no other tokens and\n// no empty lines between.\ntype CommentGroup struct {\n\tList []*Comment // len(List) > 0\n}\n\nfunc (c *CommentGroup) Pos() token.Pos {\n\treturn c.List[0].Pos()\n}\n\n//-------------------------------------------------------------------\n// GoStringer\n//-------------------------------------------------------------------\n\nfunc (o *ObjectKey) GoString() string  { return fmt.Sprintf(\"*%#v\", *o) }\nfunc (o *ObjectList) GoString() string { return fmt.Sprintf(\"*%#v\", *o) }\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/hcl/ast/walk.go",
    "content": "package ast\n\nimport \"fmt\"\n\n// WalkFunc describes a function to be called for each node during a Walk. The\n// returned node can be used to rewrite the AST. Walking stops the returned\n// bool is false.\ntype WalkFunc func(Node) (Node, bool)\n\n// Walk traverses an AST in depth-first order: It starts by calling fn(node);\n// node must not be nil. If fn returns true, Walk invokes fn recursively for\n// each of the non-nil children of node, followed by a call of fn(nil). The\n// returned node of fn can be used to rewrite the passed node to fn.\nfunc Walk(node Node, fn WalkFunc) Node {\n\trewritten, ok := fn(node)\n\tif !ok {\n\t\treturn rewritten\n\t}\n\n\tswitch n := node.(type) {\n\tcase *File:\n\t\tn.Node = Walk(n.Node, fn)\n\tcase *ObjectList:\n\t\tfor i, item := range n.Items {\n\t\t\tn.Items[i] = Walk(item, fn).(*ObjectItem)\n\t\t}\n\tcase *ObjectKey:\n\t\t// nothing to do\n\tcase *ObjectItem:\n\t\tfor i, k := range n.Keys {\n\t\t\tn.Keys[i] = Walk(k, fn).(*ObjectKey)\n\t\t}\n\n\t\tif n.Val != nil {\n\t\t\tn.Val = Walk(n.Val, fn)\n\t\t}\n\tcase *LiteralType:\n\t\t// nothing to do\n\tcase *ListType:\n\t\tfor i, l := range n.List {\n\t\t\tn.List[i] = Walk(l, fn)\n\t\t}\n\tcase *ObjectType:\n\t\tn.List = Walk(n.List, fn).(*ObjectList)\n\tdefault:\n\t\t// should we panic here?\n\t\tfmt.Printf(\"unknown type: %T\\n\", n)\n\t}\n\n\tfn(nil)\n\treturn rewritten\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/hcl/parser/error.go",
    "content": "package parser\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/hashicorp/hcl/hcl/token\"\n)\n\n// PosError is a parse error that contains a position.\ntype PosError struct {\n\tPos token.Pos\n\tErr error\n}\n\nfunc (e *PosError) Error() string {\n\treturn fmt.Sprintf(\"At %s: %s\", e.Pos, e.Err)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/hcl/parser/parser.go",
    "content": "// Package parser implements a parser for HCL (HashiCorp Configuration\n// Language)\npackage parser\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/hashicorp/hcl/hcl/ast\"\n\t\"github.com/hashicorp/hcl/hcl/scanner\"\n\t\"github.com/hashicorp/hcl/hcl/token\"\n)\n\ntype Parser struct {\n\tsc *scanner.Scanner\n\n\t// Last read token\n\ttok       token.Token\n\tcommaPrev token.Token\n\n\tcomments    []*ast.CommentGroup\n\tleadComment *ast.CommentGroup // last lead comment\n\tlineComment *ast.CommentGroup // last line comment\n\n\tenableTrace bool\n\tindent      int\n\tn           int // buffer size (max = 1)\n}\n\nfunc newParser(src []byte) *Parser {\n\treturn &Parser{\n\t\tsc: scanner.New(src),\n\t}\n}\n\n// Parse returns the fully parsed source and returns the abstract syntax tree.\nfunc Parse(src []byte) (*ast.File, error) {\n\t// normalize all line endings\n\t// since the scanner and output only work with \"\\n\" line endings, we may\n\t// end up with dangling \"\\r\" characters in the parsed data.\n\tsrc = bytes.Replace(src, []byte(\"\\r\\n\"), []byte(\"\\n\"), -1)\n\n\tp := newParser(src)\n\treturn p.Parse()\n}\n\nvar errEofToken = errors.New(\"EOF token found\")\n\n// Parse returns the fully parsed source and returns the abstract syntax tree.\nfunc (p *Parser) Parse() (*ast.File, error) {\n\tf := &ast.File{}\n\tvar err, scerr error\n\tp.sc.Error = func(pos token.Pos, msg string) {\n\t\tscerr = &PosError{Pos: pos, Err: errors.New(msg)}\n\t}\n\n\tf.Node, err = p.objectList(false)\n\tif scerr != nil {\n\t\treturn nil, scerr\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tf.Comments = p.comments\n\treturn f, nil\n}\n\n// objectList parses a list of items within an object (generally k/v pairs).\n// The parameter\" obj\" tells this whether to we are within an object (braces:\n// '{', '}') or just at the top level. If we're within an object, we end\n// at an RBRACE.\nfunc (p *Parser) objectList(obj bool) (*ast.ObjectList, error) {\n\tdefer un(trace(p, \"ParseObjectList\"))\n\tnode := &ast.ObjectList{}\n\n\tfor {\n\t\tif obj {\n\t\t\ttok := p.scan()\n\t\t\tp.unscan()\n\t\t\tif tok.Type == token.RBRACE {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tn, err := p.objectItem()\n\t\tif err == errEofToken {\n\t\t\tbreak // we are finished\n\t\t}\n\n\t\t// we don't return a nil node, because might want to use already\n\t\t// collected items.\n\t\tif err != nil {\n\t\t\treturn node, err\n\t\t}\n\n\t\tnode.Add(n)\n\n\t\t// object lists can be optionally comma-delimited e.g. when a list of maps\n\t\t// is being expressed, so a comma is allowed here - it's simply consumed\n\t\ttok := p.scan()\n\t\tif tok.Type != token.COMMA {\n\t\t\tp.unscan()\n\t\t}\n\t}\n\treturn node, nil\n}\n\nfunc (p *Parser) consumeComment() (comment *ast.Comment, endline int) {\n\tendline = p.tok.Pos.Line\n\n\t// count the endline if it's multiline comment, ie starting with /*\n\tif len(p.tok.Text) > 1 && p.tok.Text[1] == '*' {\n\t\t// don't use range here - no need to decode Unicode code points\n\t\tfor i := 0; i < len(p.tok.Text); i++ {\n\t\t\tif p.tok.Text[i] == '\\n' {\n\t\t\t\tendline++\n\t\t\t}\n\t\t}\n\t}\n\n\tcomment = &ast.Comment{Start: p.tok.Pos, Text: p.tok.Text}\n\tp.tok = p.sc.Scan()\n\treturn\n}\n\nfunc (p *Parser) consumeCommentGroup(n int) (comments *ast.CommentGroup, endline int) {\n\tvar list []*ast.Comment\n\tendline = p.tok.Pos.Line\n\n\tfor p.tok.Type == token.COMMENT && p.tok.Pos.Line <= endline+n {\n\t\tvar comment *ast.Comment\n\t\tcomment, endline = p.consumeComment()\n\t\tlist = append(list, comment)\n\t}\n\n\t// add comment group to the comments list\n\tcomments = &ast.CommentGroup{List: list}\n\tp.comments = append(p.comments, comments)\n\n\treturn\n}\n\n// objectItem parses a single object item\nfunc (p *Parser) objectItem() (*ast.ObjectItem, error) {\n\tdefer un(trace(p, \"ParseObjectItem\"))\n\n\tkeys, err := p.objectKey()\n\tif len(keys) > 0 && err == errEofToken {\n\t\t// We ignore eof token here since it is an error if we didn't\n\t\t// receive a value (but we did receive a key) for the item.\n\t\terr = nil\n\t}\n\tif len(keys) > 0 && err != nil && p.tok.Type == token.RBRACE {\n\t\t// This is a strange boolean statement, but what it means is:\n\t\t// We have keys with no value, and we're likely in an object\n\t\t// (since RBrace ends an object). For this, we set err to nil so\n\t\t// we continue and get the error below of having the wrong value\n\t\t// type.\n\t\terr = nil\n\n\t\t// Reset the token type so we don't think it completed fine. See\n\t\t// objectType which uses p.tok.Type to check if we're done with\n\t\t// the object.\n\t\tp.tok.Type = token.EOF\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\to := &ast.ObjectItem{\n\t\tKeys: keys,\n\t}\n\n\tif p.leadComment != nil {\n\t\to.LeadComment = p.leadComment\n\t\tp.leadComment = nil\n\t}\n\n\tswitch p.tok.Type {\n\tcase token.ASSIGN:\n\t\to.Assign = p.tok.Pos\n\t\to.Val, err = p.object()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\tcase token.LBRACE:\n\t\to.Val, err = p.objectType()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\tdefault:\n\t\tkeyStr := make([]string, 0, len(keys))\n\t\tfor _, k := range keys {\n\t\t\tkeyStr = append(keyStr, k.Token.Text)\n\t\t}\n\n\t\treturn nil, &PosError{\n\t\t\tPos: p.tok.Pos,\n\t\t\tErr: fmt.Errorf(\n\t\t\t\t\"key '%s' expected start of object ('{') or assignment ('=')\",\n\t\t\t\tstrings.Join(keyStr, \" \")),\n\t\t}\n\t}\n\n\t// key=#comment\n\t// val\n\tif p.lineComment != nil {\n\t\to.LineComment, p.lineComment = p.lineComment, nil\n\t}\n\n\t// do a look-ahead for line comment\n\tp.scan()\n\tif len(keys) > 0 && o.Val.Pos().Line == keys[0].Pos().Line && p.lineComment != nil {\n\t\to.LineComment = p.lineComment\n\t\tp.lineComment = nil\n\t}\n\tp.unscan()\n\treturn o, nil\n}\n\n// objectKey parses an object key and returns a ObjectKey AST\nfunc (p *Parser) objectKey() ([]*ast.ObjectKey, error) {\n\tkeyCount := 0\n\tkeys := make([]*ast.ObjectKey, 0)\n\n\tfor {\n\t\ttok := p.scan()\n\t\tswitch tok.Type {\n\t\tcase token.EOF:\n\t\t\t// It is very important to also return the keys here as well as\n\t\t\t// the error. This is because we need to be able to tell if we\n\t\t\t// did parse keys prior to finding the EOF, or if we just found\n\t\t\t// a bare EOF.\n\t\t\treturn keys, errEofToken\n\t\tcase token.ASSIGN:\n\t\t\t// assignment or object only, but not nested objects. this is not\n\t\t\t// allowed: `foo bar = {}`\n\t\t\tif keyCount > 1 {\n\t\t\t\treturn nil, &PosError{\n\t\t\t\t\tPos: p.tok.Pos,\n\t\t\t\t\tErr: fmt.Errorf(\"nested object expected: LBRACE got: %s\", p.tok.Type),\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif keyCount == 0 {\n\t\t\t\treturn nil, &PosError{\n\t\t\t\t\tPos: p.tok.Pos,\n\t\t\t\t\tErr: errors.New(\"no object keys found!\"),\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn keys, nil\n\t\tcase token.LBRACE:\n\t\t\tvar err error\n\n\t\t\t// If we have no keys, then it is a syntax error. i.e. {{}} is not\n\t\t\t// allowed.\n\t\t\tif len(keys) == 0 {\n\t\t\t\terr = &PosError{\n\t\t\t\t\tPos: p.tok.Pos,\n\t\t\t\t\tErr: fmt.Errorf(\"expected: IDENT | STRING got: %s\", p.tok.Type),\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// object\n\t\t\treturn keys, err\n\t\tcase token.IDENT, token.STRING:\n\t\t\tkeyCount++\n\t\t\tkeys = append(keys, &ast.ObjectKey{Token: p.tok})\n\t\tcase token.ILLEGAL:\n\t\t\treturn keys, &PosError{\n\t\t\t\tPos: p.tok.Pos,\n\t\t\t\tErr: fmt.Errorf(\"illegal character\"),\n\t\t\t}\n\t\tdefault:\n\t\t\treturn keys, &PosError{\n\t\t\t\tPos: p.tok.Pos,\n\t\t\t\tErr: fmt.Errorf(\"expected: IDENT | STRING | ASSIGN | LBRACE got: %s\", p.tok.Type),\n\t\t\t}\n\t\t}\n\t}\n}\n\n// object parses any type of object, such as number, bool, string, object or\n// list.\nfunc (p *Parser) object() (ast.Node, error) {\n\tdefer un(trace(p, \"ParseType\"))\n\ttok := p.scan()\n\n\tswitch tok.Type {\n\tcase token.NUMBER, token.FLOAT, token.BOOL, token.STRING, token.HEREDOC:\n\t\treturn p.literalType()\n\tcase token.LBRACE:\n\t\treturn p.objectType()\n\tcase token.LBRACK:\n\t\treturn p.listType()\n\tcase token.COMMENT:\n\t\t// implement comment\n\tcase token.EOF:\n\t\treturn nil, errEofToken\n\t}\n\n\treturn nil, &PosError{\n\t\tPos: tok.Pos,\n\t\tErr: fmt.Errorf(\"Unknown token: %+v\", tok),\n\t}\n}\n\n// objectType parses an object type and returns a ObjectType AST\nfunc (p *Parser) objectType() (*ast.ObjectType, error) {\n\tdefer un(trace(p, \"ParseObjectType\"))\n\n\t// we assume that the currently scanned token is a LBRACE\n\to := &ast.ObjectType{\n\t\tLbrace: p.tok.Pos,\n\t}\n\n\tl, err := p.objectList(true)\n\n\t// if we hit RBRACE, we are good to go (means we parsed all Items), if it's\n\t// not a RBRACE, it's an syntax error and we just return it.\n\tif err != nil && p.tok.Type != token.RBRACE {\n\t\treturn nil, err\n\t}\n\n\t// No error, scan and expect the ending to be a brace\n\tif tok := p.scan(); tok.Type != token.RBRACE {\n\t\treturn nil, &PosError{\n\t\t\tPos: tok.Pos,\n\t\t\tErr: fmt.Errorf(\"object expected closing RBRACE got: %s\", tok.Type),\n\t\t}\n\t}\n\n\to.List = l\n\to.Rbrace = p.tok.Pos // advanced via parseObjectList\n\treturn o, nil\n}\n\n// listType parses a list type and returns a ListType AST\nfunc (p *Parser) listType() (*ast.ListType, error) {\n\tdefer un(trace(p, \"ParseListType\"))\n\n\t// we assume that the currently scanned token is a LBRACK\n\tl := &ast.ListType{\n\t\tLbrack: p.tok.Pos,\n\t}\n\n\tneedComma := false\n\tfor {\n\t\ttok := p.scan()\n\t\tif needComma {\n\t\t\tswitch tok.Type {\n\t\t\tcase token.COMMA, token.RBRACK:\n\t\t\tdefault:\n\t\t\t\treturn nil, &PosError{\n\t\t\t\t\tPos: tok.Pos,\n\t\t\t\t\tErr: fmt.Errorf(\n\t\t\t\t\t\t\"error parsing list, expected comma or list end, got: %s\",\n\t\t\t\t\t\ttok.Type),\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tswitch tok.Type {\n\t\tcase token.BOOL, token.NUMBER, token.FLOAT, token.STRING, token.HEREDOC:\n\t\t\tnode, err := p.literalType()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\t// If there is a lead comment, apply it\n\t\t\tif p.leadComment != nil {\n\t\t\t\tnode.LeadComment = p.leadComment\n\t\t\t\tp.leadComment = nil\n\t\t\t}\n\n\t\t\tl.Add(node)\n\t\t\tneedComma = true\n\t\tcase token.COMMA:\n\t\t\t// get next list item or we are at the end\n\t\t\t// do a look-ahead for line comment\n\t\t\tp.scan()\n\t\t\tif p.lineComment != nil && len(l.List) > 0 {\n\t\t\t\tlit, ok := l.List[len(l.List)-1].(*ast.LiteralType)\n\t\t\t\tif ok {\n\t\t\t\t\tlit.LineComment = p.lineComment\n\t\t\t\t\tl.List[len(l.List)-1] = lit\n\t\t\t\t\tp.lineComment = nil\n\t\t\t\t}\n\t\t\t}\n\t\t\tp.unscan()\n\n\t\t\tneedComma = false\n\t\t\tcontinue\n\t\tcase token.LBRACE:\n\t\t\t// Looks like a nested object, so parse it out\n\t\t\tnode, err := p.objectType()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, &PosError{\n\t\t\t\t\tPos: tok.Pos,\n\t\t\t\t\tErr: fmt.Errorf(\n\t\t\t\t\t\t\"error while trying to parse object within list: %s\", err),\n\t\t\t\t}\n\t\t\t}\n\t\t\tl.Add(node)\n\t\t\tneedComma = true\n\t\tcase token.LBRACK:\n\t\t\tnode, err := p.listType()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, &PosError{\n\t\t\t\t\tPos: tok.Pos,\n\t\t\t\t\tErr: fmt.Errorf(\n\t\t\t\t\t\t\"error while trying to parse list within list: %s\", err),\n\t\t\t\t}\n\t\t\t}\n\t\t\tl.Add(node)\n\t\tcase token.RBRACK:\n\t\t\t// finished\n\t\t\tl.Rbrack = p.tok.Pos\n\t\t\treturn l, nil\n\t\tdefault:\n\t\t\treturn nil, &PosError{\n\t\t\t\tPos: tok.Pos,\n\t\t\t\tErr: fmt.Errorf(\"unexpected token while parsing list: %s\", tok.Type),\n\t\t\t}\n\t\t}\n\t}\n}\n\n// literalType parses a literal type and returns a LiteralType AST\nfunc (p *Parser) literalType() (*ast.LiteralType, error) {\n\tdefer un(trace(p, \"ParseLiteral\"))\n\n\treturn &ast.LiteralType{\n\t\tToken: p.tok,\n\t}, nil\n}\n\n// scan returns the next token from the underlying scanner. If a token has\n// been unscanned then read that instead. In the process, it collects any\n// comment groups encountered, and remembers the last lead and line comments.\nfunc (p *Parser) scan() token.Token {\n\t// If we have a token on the buffer, then return it.\n\tif p.n != 0 {\n\t\tp.n = 0\n\t\treturn p.tok\n\t}\n\n\t// Otherwise read the next token from the scanner and Save it to the buffer\n\t// in case we unscan later.\n\tprev := p.tok\n\tp.tok = p.sc.Scan()\n\n\tif p.tok.Type == token.COMMENT {\n\t\tvar comment *ast.CommentGroup\n\t\tvar endline int\n\n\t\t// fmt.Printf(\"p.tok.Pos.Line = %+v prev: %d endline %d \\n\",\n\t\t// p.tok.Pos.Line, prev.Pos.Line, endline)\n\t\tif p.tok.Pos.Line == prev.Pos.Line {\n\t\t\t// The comment is on same line as the previous token; it\n\t\t\t// cannot be a lead comment but may be a line comment.\n\t\t\tcomment, endline = p.consumeCommentGroup(0)\n\t\t\tif p.tok.Pos.Line != endline {\n\t\t\t\t// The next token is on a different line, thus\n\t\t\t\t// the last comment group is a line comment.\n\t\t\t\tp.lineComment = comment\n\t\t\t}\n\t\t}\n\n\t\t// consume successor comments, if any\n\t\tendline = -1\n\t\tfor p.tok.Type == token.COMMENT {\n\t\t\tcomment, endline = p.consumeCommentGroup(1)\n\t\t}\n\n\t\tif endline+1 == p.tok.Pos.Line && p.tok.Type != token.RBRACE {\n\t\t\tswitch p.tok.Type {\n\t\t\tcase token.RBRACE, token.RBRACK:\n\t\t\t\t// Do not count for these cases\n\t\t\tdefault:\n\t\t\t\t// The next token is following on the line immediately after the\n\t\t\t\t// comment group, thus the last comment group is a lead comment.\n\t\t\t\tp.leadComment = comment\n\t\t\t}\n\t\t}\n\n\t}\n\n\treturn p.tok\n}\n\n// unscan pushes the previously read token back onto the buffer.\nfunc (p *Parser) unscan() {\n\tp.n = 1\n}\n\n// ----------------------------------------------------------------------------\n// Parsing support\n\nfunc (p *Parser) printTrace(a ...interface{}) {\n\tif !p.enableTrace {\n\t\treturn\n\t}\n\n\tconst dots = \". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \"\n\tconst n = len(dots)\n\tfmt.Printf(\"%5d:%3d: \", p.tok.Pos.Line, p.tok.Pos.Column)\n\n\ti := 2 * p.indent\n\tfor i > n {\n\t\tfmt.Print(dots)\n\t\ti -= n\n\t}\n\t// i <= n\n\tfmt.Print(dots[0:i])\n\tfmt.Println(a...)\n}\n\nfunc trace(p *Parser, msg string) *Parser {\n\tp.printTrace(msg, \"(\")\n\tp.indent++\n\treturn p\n}\n\n// Usage pattern: defer un(trace(p, \"...\"))\nfunc un(p *Parser) {\n\tp.indent--\n\tp.printTrace(\")\")\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/hcl/scanner/scanner.go",
    "content": "// Package scanner implements a scanner for HCL (HashiCorp Configuration\n// Language) source text.\npackage scanner\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os\"\n\t\"regexp\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"github.com/hashicorp/hcl/hcl/token\"\n)\n\n// eof represents a marker rune for the end of the reader.\nconst eof = rune(0)\n\n// Scanner defines a lexical scanner\ntype Scanner struct {\n\tbuf *bytes.Buffer // Source buffer for advancing and scanning\n\tsrc []byte        // Source buffer for immutable access\n\n\t// Source Position\n\tsrcPos  token.Pos // current position\n\tprevPos token.Pos // previous position, used for peek() method\n\n\tlastCharLen int // length of last character in bytes\n\tlastLineLen int // length of last line in characters (for correct column reporting)\n\n\ttokStart int // token text start position\n\ttokEnd   int // token text end  position\n\n\t// Error is called for each error encountered. If no Error\n\t// function is set, the error is reported to os.Stderr.\n\tError func(pos token.Pos, msg string)\n\n\t// ErrorCount is incremented by one for each error encountered.\n\tErrorCount int\n\n\t// tokPos is the start position of most recently scanned token; set by\n\t// Scan. The Filename field is always left untouched by the Scanner.  If\n\t// an error is reported (via Error) and Position is invalid, the scanner is\n\t// not inside a token.\n\ttokPos token.Pos\n}\n\n// New creates and initializes a new instance of Scanner using src as\n// its source content.\nfunc New(src []byte) *Scanner {\n\t// even though we accept a src, we read from a io.Reader compatible type\n\t// (*bytes.Buffer). So in the future we might easily change it to streaming\n\t// read.\n\tb := bytes.NewBuffer(src)\n\ts := &Scanner{\n\t\tbuf: b,\n\t\tsrc: src,\n\t}\n\n\t// srcPosition always starts with 1\n\ts.srcPos.Line = 1\n\treturn s\n}\n\n// next reads the next rune from the bufferred reader. Returns the rune(0) if\n// an error occurs (or io.EOF is returned).\nfunc (s *Scanner) next() rune {\n\tch, size, err := s.buf.ReadRune()\n\tif err != nil {\n\t\t// advance for error reporting\n\t\ts.srcPos.Column++\n\t\ts.srcPos.Offset += size\n\t\ts.lastCharLen = size\n\t\treturn eof\n\t}\n\n\t// remember last position\n\ts.prevPos = s.srcPos\n\n\ts.srcPos.Column++\n\ts.lastCharLen = size\n\ts.srcPos.Offset += size\n\n\tif ch == utf8.RuneError && size == 1 {\n\t\ts.err(\"illegal UTF-8 encoding\")\n\t\treturn ch\n\t}\n\n\tif ch == '\\n' {\n\t\ts.srcPos.Line++\n\t\ts.lastLineLen = s.srcPos.Column\n\t\ts.srcPos.Column = 0\n\t}\n\n\tif ch == '\\x00' {\n\t\ts.err(\"unexpected null character (0x00)\")\n\t\treturn eof\n\t}\n\n\tif ch == '\\uE123' {\n\t\ts.err(\"unicode code point U+E123 reserved for internal use\")\n\t\treturn utf8.RuneError\n\t}\n\n\t// debug\n\t// fmt.Printf(\"ch: %q, offset:column: %d:%d\\n\", ch, s.srcPos.Offset, s.srcPos.Column)\n\treturn ch\n}\n\n// unread unreads the previous read Rune and updates the source position\nfunc (s *Scanner) unread() {\n\tif err := s.buf.UnreadRune(); err != nil {\n\t\tpanic(err) // this is user fault, we should catch it\n\t}\n\ts.srcPos = s.prevPos // put back last position\n}\n\n// peek returns the next rune without advancing the reader.\nfunc (s *Scanner) peek() rune {\n\tpeek, _, err := s.buf.ReadRune()\n\tif err != nil {\n\t\treturn eof\n\t}\n\n\ts.buf.UnreadRune()\n\treturn peek\n}\n\n// Scan scans the next token and returns the token.\nfunc (s *Scanner) Scan() token.Token {\n\tch := s.next()\n\n\t// skip white space\n\tfor isWhitespace(ch) {\n\t\tch = s.next()\n\t}\n\n\tvar tok token.Type\n\n\t// token text markings\n\ts.tokStart = s.srcPos.Offset - s.lastCharLen\n\n\t// token position, initial next() is moving the offset by one(size of rune\n\t// actually), though we are interested with the starting point\n\ts.tokPos.Offset = s.srcPos.Offset - s.lastCharLen\n\tif s.srcPos.Column > 0 {\n\t\t// common case: last character was not a '\\n'\n\t\ts.tokPos.Line = s.srcPos.Line\n\t\ts.tokPos.Column = s.srcPos.Column\n\t} else {\n\t\t// last character was a '\\n'\n\t\t// (we cannot be at the beginning of the source\n\t\t// since we have called next() at least once)\n\t\ts.tokPos.Line = s.srcPos.Line - 1\n\t\ts.tokPos.Column = s.lastLineLen\n\t}\n\n\tswitch {\n\tcase isLetter(ch):\n\t\ttok = token.IDENT\n\t\tlit := s.scanIdentifier()\n\t\tif lit == \"true\" || lit == \"false\" {\n\t\t\ttok = token.BOOL\n\t\t}\n\tcase isDecimal(ch):\n\t\ttok = s.scanNumber(ch)\n\tdefault:\n\t\tswitch ch {\n\t\tcase eof:\n\t\t\ttok = token.EOF\n\t\tcase '\"':\n\t\t\ttok = token.STRING\n\t\t\ts.scanString()\n\t\tcase '#', '/':\n\t\t\ttok = token.COMMENT\n\t\t\ts.scanComment(ch)\n\t\tcase '.':\n\t\t\ttok = token.PERIOD\n\t\t\tch = s.peek()\n\t\t\tif isDecimal(ch) {\n\t\t\t\ttok = token.FLOAT\n\t\t\t\tch = s.scanMantissa(ch)\n\t\t\t\tch = s.scanExponent(ch)\n\t\t\t}\n\t\tcase '<':\n\t\t\ttok = token.HEREDOC\n\t\t\ts.scanHeredoc()\n\t\tcase '[':\n\t\t\ttok = token.LBRACK\n\t\tcase ']':\n\t\t\ttok = token.RBRACK\n\t\tcase '{':\n\t\t\ttok = token.LBRACE\n\t\tcase '}':\n\t\t\ttok = token.RBRACE\n\t\tcase ',':\n\t\t\ttok = token.COMMA\n\t\tcase '=':\n\t\t\ttok = token.ASSIGN\n\t\tcase '+':\n\t\t\ttok = token.ADD\n\t\tcase '-':\n\t\t\tif isDecimal(s.peek()) {\n\t\t\t\tch := s.next()\n\t\t\t\ttok = s.scanNumber(ch)\n\t\t\t} else {\n\t\t\t\ttok = token.SUB\n\t\t\t}\n\t\tdefault:\n\t\t\ts.err(\"illegal char\")\n\t\t}\n\t}\n\n\t// finish token ending\n\ts.tokEnd = s.srcPos.Offset\n\n\t// create token literal\n\tvar tokenText string\n\tif s.tokStart >= 0 {\n\t\ttokenText = string(s.src[s.tokStart:s.tokEnd])\n\t}\n\ts.tokStart = s.tokEnd // ensure idempotency of tokenText() call\n\n\treturn token.Token{\n\t\tType: tok,\n\t\tPos:  s.tokPos,\n\t\tText: tokenText,\n\t}\n}\n\nfunc (s *Scanner) scanComment(ch rune) {\n\t// single line comments\n\tif ch == '#' || (ch == '/' && s.peek() != '*') {\n\t\tif ch == '/' && s.peek() != '/' {\n\t\t\ts.err(\"expected '/' for comment\")\n\t\t\treturn\n\t\t}\n\n\t\tch = s.next()\n\t\tfor ch != '\\n' && ch >= 0 && ch != eof {\n\t\t\tch = s.next()\n\t\t}\n\t\tif ch != eof && ch >= 0 {\n\t\t\ts.unread()\n\t\t}\n\t\treturn\n\t}\n\n\t// be sure we get the character after /* This allows us to find comment's\n\t// that are not erminated\n\tif ch == '/' {\n\t\ts.next()\n\t\tch = s.next() // read character after \"/*\"\n\t}\n\n\t// look for /* - style comments\n\tfor {\n\t\tif ch < 0 || ch == eof {\n\t\t\ts.err(\"comment not terminated\")\n\t\t\tbreak\n\t\t}\n\n\t\tch0 := ch\n\t\tch = s.next()\n\t\tif ch0 == '*' && ch == '/' {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n// scanNumber scans a HCL number definition starting with the given rune\nfunc (s *Scanner) scanNumber(ch rune) token.Type {\n\tif ch == '0' {\n\t\t// check for hexadecimal, octal or float\n\t\tch = s.next()\n\t\tif ch == 'x' || ch == 'X' {\n\t\t\t// hexadecimal\n\t\t\tch = s.next()\n\t\t\tfound := false\n\t\t\tfor isHexadecimal(ch) {\n\t\t\t\tch = s.next()\n\t\t\t\tfound = true\n\t\t\t}\n\n\t\t\tif !found {\n\t\t\t\ts.err(\"illegal hexadecimal number\")\n\t\t\t}\n\n\t\t\tif ch != eof {\n\t\t\t\ts.unread()\n\t\t\t}\n\n\t\t\treturn token.NUMBER\n\t\t}\n\n\t\t// now it's either something like: 0421(octal) or 0.1231(float)\n\t\tillegalOctal := false\n\t\tfor isDecimal(ch) {\n\t\t\tch = s.next()\n\t\t\tif ch == '8' || ch == '9' {\n\t\t\t\t// this is just a possibility. For example 0159 is illegal, but\n\t\t\t\t// 0159.23 is valid. So we mark a possible illegal octal. If\n\t\t\t\t// the next character is not a period, we'll print the error.\n\t\t\t\tillegalOctal = true\n\t\t\t}\n\t\t}\n\n\t\tif ch == 'e' || ch == 'E' {\n\t\t\tch = s.scanExponent(ch)\n\t\t\treturn token.FLOAT\n\t\t}\n\n\t\tif ch == '.' {\n\t\t\tch = s.scanFraction(ch)\n\n\t\t\tif ch == 'e' || ch == 'E' {\n\t\t\t\tch = s.next()\n\t\t\t\tch = s.scanExponent(ch)\n\t\t\t}\n\t\t\treturn token.FLOAT\n\t\t}\n\n\t\tif illegalOctal {\n\t\t\ts.err(\"illegal octal number\")\n\t\t}\n\n\t\tif ch != eof {\n\t\t\ts.unread()\n\t\t}\n\t\treturn token.NUMBER\n\t}\n\n\ts.scanMantissa(ch)\n\tch = s.next() // seek forward\n\tif ch == 'e' || ch == 'E' {\n\t\tch = s.scanExponent(ch)\n\t\treturn token.FLOAT\n\t}\n\n\tif ch == '.' {\n\t\tch = s.scanFraction(ch)\n\t\tif ch == 'e' || ch == 'E' {\n\t\t\tch = s.next()\n\t\t\tch = s.scanExponent(ch)\n\t\t}\n\t\treturn token.FLOAT\n\t}\n\n\tif ch != eof {\n\t\ts.unread()\n\t}\n\treturn token.NUMBER\n}\n\n// scanMantissa scans the mantissa beginning from the rune. It returns the next\n// non decimal rune. It's used to determine wheter it's a fraction or exponent.\nfunc (s *Scanner) scanMantissa(ch rune) rune {\n\tscanned := false\n\tfor isDecimal(ch) {\n\t\tch = s.next()\n\t\tscanned = true\n\t}\n\n\tif scanned && ch != eof {\n\t\ts.unread()\n\t}\n\treturn ch\n}\n\n// scanFraction scans the fraction after the '.' rune\nfunc (s *Scanner) scanFraction(ch rune) rune {\n\tif ch == '.' {\n\t\tch = s.peek() // we peek just to see if we can move forward\n\t\tch = s.scanMantissa(ch)\n\t}\n\treturn ch\n}\n\n// scanExponent scans the remaining parts of an exponent after the 'e' or 'E'\n// rune.\nfunc (s *Scanner) scanExponent(ch rune) rune {\n\tif ch == 'e' || ch == 'E' {\n\t\tch = s.next()\n\t\tif ch == '-' || ch == '+' {\n\t\t\tch = s.next()\n\t\t}\n\t\tch = s.scanMantissa(ch)\n\t}\n\treturn ch\n}\n\n// scanHeredoc scans a heredoc string\nfunc (s *Scanner) scanHeredoc() {\n\t// Scan the second '<' in example: '<<EOF'\n\tif s.next() != '<' {\n\t\ts.err(\"heredoc expected second '<', didn't see it\")\n\t\treturn\n\t}\n\n\t// Get the original offset so we can read just the heredoc ident\n\toffs := s.srcPos.Offset\n\n\t// Scan the identifier\n\tch := s.next()\n\n\t// Indented heredoc syntax\n\tif ch == '-' {\n\t\tch = s.next()\n\t}\n\n\tfor isLetter(ch) || isDigit(ch) {\n\t\tch = s.next()\n\t}\n\n\t// If we reached an EOF then that is not good\n\tif ch == eof {\n\t\ts.err(\"heredoc not terminated\")\n\t\treturn\n\t}\n\n\t// Ignore the '\\r' in Windows line endings\n\tif ch == '\\r' {\n\t\tif s.peek() == '\\n' {\n\t\t\tch = s.next()\n\t\t}\n\t}\n\n\t// If we didn't reach a newline then that is also not good\n\tif ch != '\\n' {\n\t\ts.err(\"invalid characters in heredoc anchor\")\n\t\treturn\n\t}\n\n\t// Read the identifier\n\tidentBytes := s.src[offs : s.srcPos.Offset-s.lastCharLen]\n\tif len(identBytes) == 0 || (len(identBytes) == 1 && identBytes[0] == '-') {\n\t\ts.err(\"zero-length heredoc anchor\")\n\t\treturn\n\t}\n\n\tvar identRegexp *regexp.Regexp\n\tif identBytes[0] == '-' {\n\t\tidentRegexp = regexp.MustCompile(fmt.Sprintf(`^[[:space:]]*%s\\r*\\z`, identBytes[1:]))\n\t} else {\n\t\tidentRegexp = regexp.MustCompile(fmt.Sprintf(`^[[:space:]]*%s\\r*\\z`, identBytes))\n\t}\n\n\t// Read the actual string value\n\tlineStart := s.srcPos.Offset\n\tfor {\n\t\tch := s.next()\n\n\t\t// Special newline handling.\n\t\tif ch == '\\n' {\n\t\t\t// Math is fast, so we first compare the byte counts to see if we have a chance\n\t\t\t// of seeing the same identifier - if the length is less than the number of bytes\n\t\t\t// in the identifier, this cannot be a valid terminator.\n\t\t\tlineBytesLen := s.srcPos.Offset - s.lastCharLen - lineStart\n\t\t\tif lineBytesLen >= len(identBytes) && identRegexp.Match(s.src[lineStart:s.srcPos.Offset-s.lastCharLen]) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Not an anchor match, record the start of a new line\n\t\t\tlineStart = s.srcPos.Offset\n\t\t}\n\n\t\tif ch == eof {\n\t\t\ts.err(\"heredoc not terminated\")\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn\n}\n\n// scanString scans a quoted string\nfunc (s *Scanner) scanString() {\n\tbraces := 0\n\tfor {\n\t\t// '\"' opening already consumed\n\t\t// read character after quote\n\t\tch := s.next()\n\n\t\tif (ch == '\\n' && braces == 0) || ch < 0 || ch == eof {\n\t\t\ts.err(\"literal not terminated\")\n\t\t\treturn\n\t\t}\n\n\t\tif ch == '\"' && braces == 0 {\n\t\t\tbreak\n\t\t}\n\n\t\t// If we're going into a ${} then we can ignore quotes for awhile\n\t\tif braces == 0 && ch == '$' && s.peek() == '{' {\n\t\t\tbraces++\n\t\t\ts.next()\n\t\t} else if braces > 0 && ch == '{' {\n\t\t\tbraces++\n\t\t}\n\t\tif braces > 0 && ch == '}' {\n\t\t\tbraces--\n\t\t}\n\n\t\tif ch == '\\\\' {\n\t\t\ts.scanEscape()\n\t\t}\n\t}\n\n\treturn\n}\n\n// scanEscape scans an escape sequence\nfunc (s *Scanner) scanEscape() rune {\n\t// http://en.cppreference.com/w/cpp/language/escape\n\tch := s.next() // read character after '/'\n\tswitch ch {\n\tcase 'a', 'b', 'f', 'n', 'r', 't', 'v', '\\\\', '\"':\n\t\t// nothing to do\n\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\t// octal notation\n\t\tch = s.scanDigits(ch, 8, 3)\n\tcase 'x':\n\t\t// hexademical notation\n\t\tch = s.scanDigits(s.next(), 16, 2)\n\tcase 'u':\n\t\t// universal character name\n\t\tch = s.scanDigits(s.next(), 16, 4)\n\tcase 'U':\n\t\t// universal character name\n\t\tch = s.scanDigits(s.next(), 16, 8)\n\tdefault:\n\t\ts.err(\"illegal char escape\")\n\t}\n\treturn ch\n}\n\n// scanDigits scans a rune with the given base for n times. For example an\n// octal notation \\184 would yield in scanDigits(ch, 8, 3)\nfunc (s *Scanner) scanDigits(ch rune, base, n int) rune {\n\tstart := n\n\tfor n > 0 && digitVal(ch) < base {\n\t\tch = s.next()\n\t\tif ch == eof {\n\t\t\t// If we see an EOF, we halt any more scanning of digits\n\t\t\t// immediately.\n\t\t\tbreak\n\t\t}\n\n\t\tn--\n\t}\n\tif n > 0 {\n\t\ts.err(\"illegal char escape\")\n\t}\n\n\tif n != start && ch != eof {\n\t\t// we scanned all digits, put the last non digit char back,\n\t\t// only if we read anything at all\n\t\ts.unread()\n\t}\n\n\treturn ch\n}\n\n// scanIdentifier scans an identifier and returns the literal string\nfunc (s *Scanner) scanIdentifier() string {\n\toffs := s.srcPos.Offset - s.lastCharLen\n\tch := s.next()\n\tfor isLetter(ch) || isDigit(ch) || ch == '-' || ch == '.' {\n\t\tch = s.next()\n\t}\n\n\tif ch != eof {\n\t\ts.unread() // we got identifier, put back latest char\n\t}\n\n\treturn string(s.src[offs:s.srcPos.Offset])\n}\n\n// recentPosition returns the position of the character immediately after the\n// character or token returned by the last call to Scan.\nfunc (s *Scanner) recentPosition() (pos token.Pos) {\n\tpos.Offset = s.srcPos.Offset - s.lastCharLen\n\tswitch {\n\tcase s.srcPos.Column > 0:\n\t\t// common case: last character was not a '\\n'\n\t\tpos.Line = s.srcPos.Line\n\t\tpos.Column = s.srcPos.Column\n\tcase s.lastLineLen > 0:\n\t\t// last character was a '\\n'\n\t\t// (we cannot be at the beginning of the source\n\t\t// since we have called next() at least once)\n\t\tpos.Line = s.srcPos.Line - 1\n\t\tpos.Column = s.lastLineLen\n\tdefault:\n\t\t// at the beginning of the source\n\t\tpos.Line = 1\n\t\tpos.Column = 1\n\t}\n\treturn\n}\n\n// err prints the error of any scanning to s.Error function. If the function is\n// not defined, by default it prints them to os.Stderr\nfunc (s *Scanner) err(msg string) {\n\ts.ErrorCount++\n\tpos := s.recentPosition()\n\n\tif s.Error != nil {\n\t\ts.Error(pos, msg)\n\t\treturn\n\t}\n\n\tfmt.Fprintf(os.Stderr, \"%s: %s\\n\", pos, msg)\n}\n\n// isHexadecimal returns true if the given rune is a letter\nfunc isLetter(ch rune) bool {\n\treturn 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_' || ch >= 0x80 && unicode.IsLetter(ch)\n}\n\n// isDigit returns true if the given rune is a decimal digit\nfunc isDigit(ch rune) bool {\n\treturn '0' <= ch && ch <= '9' || ch >= 0x80 && unicode.IsDigit(ch)\n}\n\n// isDecimal returns true if the given rune is a decimal number\nfunc isDecimal(ch rune) bool {\n\treturn '0' <= ch && ch <= '9'\n}\n\n// isHexadecimal returns true if the given rune is an hexadecimal number\nfunc isHexadecimal(ch rune) bool {\n\treturn '0' <= ch && ch <= '9' || 'a' <= ch && ch <= 'f' || 'A' <= ch && ch <= 'F'\n}\n\n// isWhitespace returns true if the rune is a space, tab, newline or carriage return\nfunc isWhitespace(ch rune) bool {\n\treturn ch == ' ' || ch == '\\t' || ch == '\\n' || ch == '\\r'\n}\n\n// digitVal returns the integer value of a given octal,decimal or hexadecimal rune\nfunc digitVal(ch rune) int {\n\tswitch {\n\tcase '0' <= ch && ch <= '9':\n\t\treturn int(ch - '0')\n\tcase 'a' <= ch && ch <= 'f':\n\t\treturn int(ch - 'a' + 10)\n\tcase 'A' <= ch && ch <= 'F':\n\t\treturn int(ch - 'A' + 10)\n\t}\n\treturn 16 // larger than any legal digit val\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/hcl/strconv/quote.go",
    "content": "package strconv\n\nimport (\n\t\"errors\"\n\t\"unicode/utf8\"\n)\n\n// ErrSyntax indicates that a value does not have the right syntax for the target type.\nvar ErrSyntax = errors.New(\"invalid syntax\")\n\n// Unquote interprets s as a single-quoted, double-quoted,\n// or backquoted Go string literal, returning the string value\n// that s quotes.  (If s is single-quoted, it would be a Go\n// character literal; Unquote returns the corresponding\n// one-character string.)\nfunc Unquote(s string) (t string, err error) {\n\tn := len(s)\n\tif n < 2 {\n\t\treturn \"\", ErrSyntax\n\t}\n\tquote := s[0]\n\tif quote != s[n-1] {\n\t\treturn \"\", ErrSyntax\n\t}\n\ts = s[1 : n-1]\n\n\tif quote != '\"' {\n\t\treturn \"\", ErrSyntax\n\t}\n\tif !contains(s, '$') && !contains(s, '{') && contains(s, '\\n') {\n\t\treturn \"\", ErrSyntax\n\t}\n\n\t// Is it trivial?  Avoid allocation.\n\tif !contains(s, '\\\\') && !contains(s, quote) && !contains(s, '$') {\n\t\tswitch quote {\n\t\tcase '\"':\n\t\t\treturn s, nil\n\t\tcase '\\'':\n\t\t\tr, size := utf8.DecodeRuneInString(s)\n\t\t\tif size == len(s) && (r != utf8.RuneError || size != 1) {\n\t\t\t\treturn s, nil\n\t\t\t}\n\t\t}\n\t}\n\n\tvar runeTmp [utf8.UTFMax]byte\n\tbuf := make([]byte, 0, 3*len(s)/2) // Try to avoid more allocations.\n\tfor len(s) > 0 {\n\t\t// If we're starting a '${}' then let it through un-unquoted.\n\t\t// Specifically: we don't unquote any characters within the `${}`\n\t\t// section.\n\t\tif s[0] == '$' && len(s) > 1 && s[1] == '{' {\n\t\t\tbuf = append(buf, '$', '{')\n\t\t\ts = s[2:]\n\n\t\t\t// Continue reading until we find the closing brace, copying as-is\n\t\t\tbraces := 1\n\t\t\tfor len(s) > 0 && braces > 0 {\n\t\t\t\tr, size := utf8.DecodeRuneInString(s)\n\t\t\t\tif r == utf8.RuneError {\n\t\t\t\t\treturn \"\", ErrSyntax\n\t\t\t\t}\n\n\t\t\t\ts = s[size:]\n\n\t\t\t\tn := utf8.EncodeRune(runeTmp[:], r)\n\t\t\t\tbuf = append(buf, runeTmp[:n]...)\n\n\t\t\t\tswitch r {\n\t\t\t\tcase '{':\n\t\t\t\t\tbraces++\n\t\t\t\tcase '}':\n\t\t\t\t\tbraces--\n\t\t\t\t}\n\t\t\t}\n\t\t\tif braces != 0 {\n\t\t\t\treturn \"\", ErrSyntax\n\t\t\t}\n\t\t\tif len(s) == 0 {\n\t\t\t\t// If there's no string left, we're done!\n\t\t\t\tbreak\n\t\t\t} else {\n\t\t\t\t// If there's more left, we need to pop back up to the top of the loop\n\t\t\t\t// in case there's another interpolation in this string.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif s[0] == '\\n' {\n\t\t\treturn \"\", ErrSyntax\n\t\t}\n\n\t\tc, multibyte, ss, err := unquoteChar(s, quote)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\ts = ss\n\t\tif c < utf8.RuneSelf || !multibyte {\n\t\t\tbuf = append(buf, byte(c))\n\t\t} else {\n\t\t\tn := utf8.EncodeRune(runeTmp[:], c)\n\t\t\tbuf = append(buf, runeTmp[:n]...)\n\t\t}\n\t\tif quote == '\\'' && len(s) != 0 {\n\t\t\t// single-quoted must be single character\n\t\t\treturn \"\", ErrSyntax\n\t\t}\n\t}\n\treturn string(buf), nil\n}\n\n// contains reports whether the string contains the byte c.\nfunc contains(s string, c byte) bool {\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] == c {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc unhex(b byte) (v rune, ok bool) {\n\tc := rune(b)\n\tswitch {\n\tcase '0' <= c && c <= '9':\n\t\treturn c - '0', true\n\tcase 'a' <= c && c <= 'f':\n\t\treturn c - 'a' + 10, true\n\tcase 'A' <= c && c <= 'F':\n\t\treturn c - 'A' + 10, true\n\t}\n\treturn\n}\n\nfunc unquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, err error) {\n\t// easy cases\n\tswitch c := s[0]; {\n\tcase c == quote && (quote == '\\'' || quote == '\"'):\n\t\terr = ErrSyntax\n\t\treturn\n\tcase c >= utf8.RuneSelf:\n\t\tr, size := utf8.DecodeRuneInString(s)\n\t\treturn r, true, s[size:], nil\n\tcase c != '\\\\':\n\t\treturn rune(s[0]), false, s[1:], nil\n\t}\n\n\t// hard case: c is backslash\n\tif len(s) <= 1 {\n\t\terr = ErrSyntax\n\t\treturn\n\t}\n\tc := s[1]\n\ts = s[2:]\n\n\tswitch c {\n\tcase 'a':\n\t\tvalue = '\\a'\n\tcase 'b':\n\t\tvalue = '\\b'\n\tcase 'f':\n\t\tvalue = '\\f'\n\tcase 'n':\n\t\tvalue = '\\n'\n\tcase 'r':\n\t\tvalue = '\\r'\n\tcase 't':\n\t\tvalue = '\\t'\n\tcase 'v':\n\t\tvalue = '\\v'\n\tcase 'x', 'u', 'U':\n\t\tn := 0\n\t\tswitch c {\n\t\tcase 'x':\n\t\t\tn = 2\n\t\tcase 'u':\n\t\t\tn = 4\n\t\tcase 'U':\n\t\t\tn = 8\n\t\t}\n\t\tvar v rune\n\t\tif len(s) < n {\n\t\t\terr = ErrSyntax\n\t\t\treturn\n\t\t}\n\t\tfor j := 0; j < n; j++ {\n\t\t\tx, ok := unhex(s[j])\n\t\t\tif !ok {\n\t\t\t\terr = ErrSyntax\n\t\t\t\treturn\n\t\t\t}\n\t\t\tv = v<<4 | x\n\t\t}\n\t\ts = s[n:]\n\t\tif c == 'x' {\n\t\t\t// single-byte string, possibly not UTF-8\n\t\t\tvalue = v\n\t\t\tbreak\n\t\t}\n\t\tif v > utf8.MaxRune {\n\t\t\terr = ErrSyntax\n\t\t\treturn\n\t\t}\n\t\tvalue = v\n\t\tmultibyte = true\n\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\tv := rune(c) - '0'\n\t\tif len(s) < 2 {\n\t\t\terr = ErrSyntax\n\t\t\treturn\n\t\t}\n\t\tfor j := 0; j < 2; j++ { // one digit already; two more\n\t\t\tx := rune(s[j]) - '0'\n\t\t\tif x < 0 || x > 7 {\n\t\t\t\terr = ErrSyntax\n\t\t\t\treturn\n\t\t\t}\n\t\t\tv = (v << 3) | x\n\t\t}\n\t\ts = s[2:]\n\t\tif v > 255 {\n\t\t\terr = ErrSyntax\n\t\t\treturn\n\t\t}\n\t\tvalue = v\n\tcase '\\\\':\n\t\tvalue = '\\\\'\n\tcase '\\'', '\"':\n\t\tif c != quote {\n\t\t\terr = ErrSyntax\n\t\t\treturn\n\t\t}\n\t\tvalue = rune(c)\n\tdefault:\n\t\terr = ErrSyntax\n\t\treturn\n\t}\n\ttail = s\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/hcl/token/position.go",
    "content": "package token\n\nimport \"fmt\"\n\n// Pos describes an arbitrary source position\n// including the file, line, and column location.\n// A Position is valid if the line number is > 0.\ntype Pos struct {\n\tFilename string // filename, if any\n\tOffset   int    // offset, starting at 0\n\tLine     int    // line number, starting at 1\n\tColumn   int    // column number, starting at 1 (character count)\n}\n\n// IsValid returns true if the position is valid.\nfunc (p *Pos) IsValid() bool { return p.Line > 0 }\n\n// String returns a string in one of several forms:\n//\n//\tfile:line:column    valid position with file name\n//\tline:column         valid position without file name\n//\tfile                invalid position with file name\n//\t-                   invalid position without file name\nfunc (p Pos) String() string {\n\ts := p.Filename\n\tif p.IsValid() {\n\t\tif s != \"\" {\n\t\t\ts += \":\"\n\t\t}\n\t\ts += fmt.Sprintf(\"%d:%d\", p.Line, p.Column)\n\t}\n\tif s == \"\" {\n\t\ts = \"-\"\n\t}\n\treturn s\n}\n\n// Before reports whether the position p is before u.\nfunc (p Pos) Before(u Pos) bool {\n\treturn u.Offset > p.Offset || u.Line > p.Line\n}\n\n// After reports whether the position p is after u.\nfunc (p Pos) After(u Pos) bool {\n\treturn u.Offset < p.Offset || u.Line < p.Line\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/hcl/token/token.go",
    "content": "// Package token defines constants representing the lexical tokens for HCL\n// (HashiCorp Configuration Language)\npackage token\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\thclstrconv \"github.com/hashicorp/hcl/hcl/strconv\"\n)\n\n// Token defines a single HCL token which can be obtained via the Scanner\ntype Token struct {\n\tType Type\n\tPos  Pos\n\tText string\n\tJSON bool\n}\n\n// Type is the set of lexical tokens of the HCL (HashiCorp Configuration Language)\ntype Type int\n\nconst (\n\t// Special tokens\n\tILLEGAL Type = iota\n\tEOF\n\tCOMMENT\n\n\tidentifier_beg\n\tIDENT // literals\n\tliteral_beg\n\tNUMBER  // 12345\n\tFLOAT   // 123.45\n\tBOOL    // true,false\n\tSTRING  // \"abc\"\n\tHEREDOC // <<FOO\\nbar\\nFOO\n\tliteral_end\n\tidentifier_end\n\n\toperator_beg\n\tLBRACK // [\n\tLBRACE // {\n\tCOMMA  // ,\n\tPERIOD // .\n\n\tRBRACK // ]\n\tRBRACE // }\n\n\tASSIGN // =\n\tADD    // +\n\tSUB    // -\n\toperator_end\n)\n\nvar tokens = [...]string{\n\tILLEGAL: \"ILLEGAL\",\n\n\tEOF:     \"EOF\",\n\tCOMMENT: \"COMMENT\",\n\n\tIDENT:  \"IDENT\",\n\tNUMBER: \"NUMBER\",\n\tFLOAT:  \"FLOAT\",\n\tBOOL:   \"BOOL\",\n\tSTRING: \"STRING\",\n\n\tLBRACK:  \"LBRACK\",\n\tLBRACE:  \"LBRACE\",\n\tCOMMA:   \"COMMA\",\n\tPERIOD:  \"PERIOD\",\n\tHEREDOC: \"HEREDOC\",\n\n\tRBRACK: \"RBRACK\",\n\tRBRACE: \"RBRACE\",\n\n\tASSIGN: \"ASSIGN\",\n\tADD:    \"ADD\",\n\tSUB:    \"SUB\",\n}\n\n// String returns the string corresponding to the token tok.\nfunc (t Type) String() string {\n\ts := \"\"\n\tif 0 <= t && t < Type(len(tokens)) {\n\t\ts = tokens[t]\n\t}\n\tif s == \"\" {\n\t\ts = \"token(\" + strconv.Itoa(int(t)) + \")\"\n\t}\n\treturn s\n}\n\n// IsIdentifier returns true for tokens corresponding to identifiers and basic\n// type literals; it returns false otherwise.\nfunc (t Type) IsIdentifier() bool { return identifier_beg < t && t < identifier_end }\n\n// IsLiteral returns true for tokens corresponding to basic type literals; it\n// returns false otherwise.\nfunc (t Type) IsLiteral() bool { return literal_beg < t && t < literal_end }\n\n// IsOperator returns true for tokens corresponding to operators and\n// delimiters; it returns false otherwise.\nfunc (t Type) IsOperator() bool { return operator_beg < t && t < operator_end }\n\n// String returns the token's literal text. Note that this is only\n// applicable for certain token types, such as token.IDENT,\n// token.STRING, etc..\nfunc (t Token) String() string {\n\treturn fmt.Sprintf(\"%s %s %s\", t.Pos.String(), t.Type.String(), t.Text)\n}\n\n// Value returns the properly typed value for this token. The type of\n// the returned interface{} is guaranteed based on the Type field.\n//\n// This can only be called for literal types. If it is called for any other\n// type, this will panic.\nfunc (t Token) Value() interface{} {\n\tswitch t.Type {\n\tcase BOOL:\n\t\tif t.Text == \"true\" {\n\t\t\treturn true\n\t\t} else if t.Text == \"false\" {\n\t\t\treturn false\n\t\t}\n\n\t\tpanic(\"unknown bool value: \" + t.Text)\n\tcase FLOAT:\n\t\tv, err := strconv.ParseFloat(t.Text, 64)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\treturn float64(v)\n\tcase NUMBER:\n\t\tv, err := strconv.ParseInt(t.Text, 0, 64)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\treturn int64(v)\n\tcase IDENT:\n\t\treturn t.Text\n\tcase HEREDOC:\n\t\treturn unindentHeredoc(t.Text)\n\tcase STRING:\n\t\t// Determine the Unquote method to use. If it came from JSON,\n\t\t// then we need to use the built-in unquote since we have to\n\t\t// escape interpolations there.\n\t\tf := hclstrconv.Unquote\n\t\tif t.JSON {\n\t\t\tf = strconv.Unquote\n\t\t}\n\n\t\t// This case occurs if json null is used\n\t\tif t.Text == \"\" {\n\t\t\treturn \"\"\n\t\t}\n\n\t\tv, err := f(t.Text)\n\t\tif err != nil {\n\t\t\tpanic(fmt.Sprintf(\"unquote %s err: %s\", t.Text, err))\n\t\t}\n\n\t\treturn v\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unimplemented Value for type: %s\", t.Type))\n\t}\n}\n\n// unindentHeredoc returns the string content of a HEREDOC if it is started with <<\n// and the content of a HEREDOC with the hanging indent removed if it is started with\n// a <<-, and the terminating line is at least as indented as the least indented line.\nfunc unindentHeredoc(heredoc string) string {\n\t// We need to find the end of the marker\n\tidx := strings.IndexByte(heredoc, '\\n')\n\tif idx == -1 {\n\t\tpanic(\"heredoc doesn't contain newline\")\n\t}\n\n\tunindent := heredoc[2] == '-'\n\n\t// We can optimize if the heredoc isn't marked for indentation\n\tif !unindent {\n\t\treturn string(heredoc[idx+1 : len(heredoc)-idx+1])\n\t}\n\n\t// We need to unindent each line based on the indentation level of the marker\n\tlines := strings.Split(string(heredoc[idx+1:len(heredoc)-idx+2]), \"\\n\")\n\twhitespacePrefix := lines[len(lines)-1]\n\n\tisIndented := true\n\tfor _, v := range lines {\n\t\tif strings.HasPrefix(v, whitespacePrefix) {\n\t\t\tcontinue\n\t\t}\n\n\t\tisIndented = false\n\t\tbreak\n\t}\n\n\t// If all lines are not at least as indented as the terminating mark, return the\n\t// heredoc as is, but trim the leading space from the marker on the final line.\n\tif !isIndented {\n\t\treturn strings.TrimRight(string(heredoc[idx+1:len(heredoc)-idx+1]), \" \\t\")\n\t}\n\n\tunindentedLines := make([]string, len(lines))\n\tfor k, v := range lines {\n\t\tif k == len(lines)-1 {\n\t\t\tunindentedLines[k] = \"\"\n\t\t\tbreak\n\t\t}\n\n\t\tunindentedLines[k] = strings.TrimPrefix(v, whitespacePrefix)\n\t}\n\n\treturn strings.Join(unindentedLines, \"\\n\")\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/hcl.go",
    "content": "// Package hcl decodes HCL into usable Go structures.\n//\n// hcl input can come in either pure HCL format or JSON format.\n// It can be parsed into an AST, and then decoded into a structure,\n// or it can be decoded directly from a string into a structure.\n//\n// If you choose to parse HCL into a raw AST, the benefit is that you\n// can write custom visitor implementations to implement custom\n// semantic checks. By default, HCL does not perform any semantic\n// checks.\npackage hcl\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/json/parser/flatten.go",
    "content": "package parser\n\nimport \"github.com/hashicorp/hcl/hcl/ast\"\n\n// flattenObjects takes an AST node, walks it, and flattens\nfunc flattenObjects(node ast.Node) {\n\tast.Walk(node, func(n ast.Node) (ast.Node, bool) {\n\t\t// We only care about lists, because this is what we modify\n\t\tlist, ok := n.(*ast.ObjectList)\n\t\tif !ok {\n\t\t\treturn n, true\n\t\t}\n\n\t\t// Rebuild the item list\n\t\titems := make([]*ast.ObjectItem, 0, len(list.Items))\n\t\tfrontier := make([]*ast.ObjectItem, len(list.Items))\n\t\tcopy(frontier, list.Items)\n\t\tfor len(frontier) > 0 {\n\t\t\t// Pop the current item\n\t\t\tn := len(frontier)\n\t\t\titem := frontier[n-1]\n\t\t\tfrontier = frontier[:n-1]\n\n\t\t\tswitch v := item.Val.(type) {\n\t\t\tcase *ast.ObjectType:\n\t\t\t\titems, frontier = flattenObjectType(v, item, items, frontier)\n\t\t\tcase *ast.ListType:\n\t\t\t\titems, frontier = flattenListType(v, item, items, frontier)\n\t\t\tdefault:\n\t\t\t\titems = append(items, item)\n\t\t\t}\n\t\t}\n\n\t\t// Reverse the list since the frontier model runs things backwards\n\t\tfor i := len(items)/2 - 1; i >= 0; i-- {\n\t\t\topp := len(items) - 1 - i\n\t\t\titems[i], items[opp] = items[opp], items[i]\n\t\t}\n\n\t\t// Done! Set the original items\n\t\tlist.Items = items\n\t\treturn n, true\n\t})\n}\n\nfunc flattenListType(\n\tot *ast.ListType,\n\titem *ast.ObjectItem,\n\titems []*ast.ObjectItem,\n\tfrontier []*ast.ObjectItem) ([]*ast.ObjectItem, []*ast.ObjectItem) {\n\t// If the list is empty, keep the original list\n\tif len(ot.List) == 0 {\n\t\titems = append(items, item)\n\t\treturn items, frontier\n\t}\n\n\t// All the elements of this object must also be objects!\n\tfor _, subitem := range ot.List {\n\t\tif _, ok := subitem.(*ast.ObjectType); !ok {\n\t\t\titems = append(items, item)\n\t\t\treturn items, frontier\n\t\t}\n\t}\n\n\t// Great! We have a match go through all the items and flatten\n\tfor _, elem := range ot.List {\n\t\t// Add it to the frontier so that we can recurse\n\t\tfrontier = append(frontier, &ast.ObjectItem{\n\t\t\tKeys:        item.Keys,\n\t\t\tAssign:      item.Assign,\n\t\t\tVal:         elem,\n\t\t\tLeadComment: item.LeadComment,\n\t\t\tLineComment: item.LineComment,\n\t\t})\n\t}\n\n\treturn items, frontier\n}\n\nfunc flattenObjectType(\n\tot *ast.ObjectType,\n\titem *ast.ObjectItem,\n\titems []*ast.ObjectItem,\n\tfrontier []*ast.ObjectItem) ([]*ast.ObjectItem, []*ast.ObjectItem) {\n\t// If the list has no items we do not have to flatten anything\n\tif ot.List.Items == nil {\n\t\titems = append(items, item)\n\t\treturn items, frontier\n\t}\n\n\t// All the elements of this object must also be objects!\n\tfor _, subitem := range ot.List.Items {\n\t\tif _, ok := subitem.Val.(*ast.ObjectType); !ok {\n\t\t\titems = append(items, item)\n\t\t\treturn items, frontier\n\t\t}\n\t}\n\n\t// Great! We have a match go through all the items and flatten\n\tfor _, subitem := range ot.List.Items {\n\t\t// Copy the new key\n\t\tkeys := make([]*ast.ObjectKey, len(item.Keys)+len(subitem.Keys))\n\t\tcopy(keys, item.Keys)\n\t\tcopy(keys[len(item.Keys):], subitem.Keys)\n\n\t\t// Add it to the frontier so that we can recurse\n\t\tfrontier = append(frontier, &ast.ObjectItem{\n\t\t\tKeys:        keys,\n\t\t\tAssign:      item.Assign,\n\t\t\tVal:         subitem.Val,\n\t\t\tLeadComment: item.LeadComment,\n\t\t\tLineComment: item.LineComment,\n\t\t})\n\t}\n\n\treturn items, frontier\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/json/parser/parser.go",
    "content": "package parser\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/hashicorp/hcl/hcl/ast\"\n\thcltoken \"github.com/hashicorp/hcl/hcl/token\"\n\t\"github.com/hashicorp/hcl/json/scanner\"\n\t\"github.com/hashicorp/hcl/json/token\"\n)\n\ntype Parser struct {\n\tsc *scanner.Scanner\n\n\t// Last read token\n\ttok       token.Token\n\tcommaPrev token.Token\n\n\tenableTrace bool\n\tindent      int\n\tn           int // buffer size (max = 1)\n}\n\nfunc newParser(src []byte) *Parser {\n\treturn &Parser{\n\t\tsc: scanner.New(src),\n\t}\n}\n\n// Parse returns the fully parsed source and returns the abstract syntax tree.\nfunc Parse(src []byte) (*ast.File, error) {\n\tp := newParser(src)\n\treturn p.Parse()\n}\n\nvar errEofToken = errors.New(\"EOF token found\")\n\n// Parse returns the fully parsed source and returns the abstract syntax tree.\nfunc (p *Parser) Parse() (*ast.File, error) {\n\tf := &ast.File{}\n\tvar err, scerr error\n\tp.sc.Error = func(pos token.Pos, msg string) {\n\t\tscerr = fmt.Errorf(\"%s: %s\", pos, msg)\n\t}\n\n\t// The root must be an object in JSON\n\tobject, err := p.object()\n\tif scerr != nil {\n\t\treturn nil, scerr\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// We make our final node an object list so it is more HCL compatible\n\tf.Node = object.List\n\n\t// Flatten it, which finds patterns and turns them into more HCL-like\n\t// AST trees.\n\tflattenObjects(f.Node)\n\n\treturn f, nil\n}\n\nfunc (p *Parser) objectList() (*ast.ObjectList, error) {\n\tdefer un(trace(p, \"ParseObjectList\"))\n\tnode := &ast.ObjectList{}\n\n\tfor {\n\t\tn, err := p.objectItem()\n\t\tif err == errEofToken {\n\t\t\tbreak // we are finished\n\t\t}\n\n\t\t// we don't return a nil node, because might want to use already\n\t\t// collected items.\n\t\tif err != nil {\n\t\t\treturn node, err\n\t\t}\n\n\t\tnode.Add(n)\n\n\t\t// Check for a followup comma. If it isn't a comma, then we're done\n\t\tif tok := p.scan(); tok.Type != token.COMMA {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn node, nil\n}\n\n// objectItem parses a single object item\nfunc (p *Parser) objectItem() (*ast.ObjectItem, error) {\n\tdefer un(trace(p, \"ParseObjectItem\"))\n\n\tkeys, err := p.objectKey()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\to := &ast.ObjectItem{\n\t\tKeys: keys,\n\t}\n\n\tswitch p.tok.Type {\n\tcase token.COLON:\n\t\tpos := p.tok.Pos\n\t\to.Assign = hcltoken.Pos{\n\t\t\tFilename: pos.Filename,\n\t\t\tOffset:   pos.Offset,\n\t\t\tLine:     pos.Line,\n\t\t\tColumn:   pos.Column,\n\t\t}\n\n\t\to.Val, err = p.objectValue()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn o, nil\n}\n\n// objectKey parses an object key and returns a ObjectKey AST\nfunc (p *Parser) objectKey() ([]*ast.ObjectKey, error) {\n\tkeyCount := 0\n\tkeys := make([]*ast.ObjectKey, 0)\n\n\tfor {\n\t\ttok := p.scan()\n\t\tswitch tok.Type {\n\t\tcase token.EOF:\n\t\t\treturn nil, errEofToken\n\t\tcase token.STRING:\n\t\t\tkeyCount++\n\t\t\tkeys = append(keys, &ast.ObjectKey{\n\t\t\t\tToken: p.tok.HCLToken(),\n\t\t\t})\n\t\tcase token.COLON:\n\t\t\t// If we have a zero keycount it means that we never got\n\t\t\t// an object key, i.e. `{ :`. This is a syntax error.\n\t\t\tif keyCount == 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"expected: STRING got: %s\", p.tok.Type)\n\t\t\t}\n\n\t\t\t// Done\n\t\t\treturn keys, nil\n\t\tcase token.ILLEGAL:\n\t\t\treturn nil, errors.New(\"illegal\")\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"expected: STRING got: %s\", p.tok.Type)\n\t\t}\n\t}\n}\n\n// object parses any type of object, such as number, bool, string, object or\n// list.\nfunc (p *Parser) objectValue() (ast.Node, error) {\n\tdefer un(trace(p, \"ParseObjectValue\"))\n\ttok := p.scan()\n\n\tswitch tok.Type {\n\tcase token.NUMBER, token.FLOAT, token.BOOL, token.NULL, token.STRING:\n\t\treturn p.literalType()\n\tcase token.LBRACE:\n\t\treturn p.objectType()\n\tcase token.LBRACK:\n\t\treturn p.listType()\n\tcase token.EOF:\n\t\treturn nil, errEofToken\n\t}\n\n\treturn nil, fmt.Errorf(\"Expected object value, got unknown token: %+v\", tok)\n}\n\n// object parses any type of object, such as number, bool, string, object or\n// list.\nfunc (p *Parser) object() (*ast.ObjectType, error) {\n\tdefer un(trace(p, \"ParseType\"))\n\ttok := p.scan()\n\n\tswitch tok.Type {\n\tcase token.LBRACE:\n\t\treturn p.objectType()\n\tcase token.EOF:\n\t\treturn nil, errEofToken\n\t}\n\n\treturn nil, fmt.Errorf(\"Expected object, got unknown token: %+v\", tok)\n}\n\n// objectType parses an object type and returns a ObjectType AST\nfunc (p *Parser) objectType() (*ast.ObjectType, error) {\n\tdefer un(trace(p, \"ParseObjectType\"))\n\n\t// we assume that the currently scanned token is a LBRACE\n\to := &ast.ObjectType{}\n\n\tl, err := p.objectList()\n\n\t// if we hit RBRACE, we are good to go (means we parsed all Items), if it's\n\t// not a RBRACE, it's an syntax error and we just return it.\n\tif err != nil && p.tok.Type != token.RBRACE {\n\t\treturn nil, err\n\t}\n\n\to.List = l\n\treturn o, nil\n}\n\n// listType parses a list type and returns a ListType AST\nfunc (p *Parser) listType() (*ast.ListType, error) {\n\tdefer un(trace(p, \"ParseListType\"))\n\n\t// we assume that the currently scanned token is a LBRACK\n\tl := &ast.ListType{}\n\n\tfor {\n\t\ttok := p.scan()\n\t\tswitch tok.Type {\n\t\tcase token.NUMBER, token.FLOAT, token.STRING:\n\t\t\tnode, err := p.literalType()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tl.Add(node)\n\t\tcase token.COMMA:\n\t\t\tcontinue\n\t\tcase token.LBRACE:\n\t\t\tnode, err := p.objectType()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tl.Add(node)\n\t\tcase token.BOOL:\n\t\t\t// TODO(arslan) should we support? not supported by HCL yet\n\t\tcase token.LBRACK:\n\t\t\t// TODO(arslan) should we support nested lists? Even though it's\n\t\t\t// written in README of HCL, it's not a part of the grammar\n\t\t\t// (not defined in parse.y)\n\t\tcase token.RBRACK:\n\t\t\t// finished\n\t\t\treturn l, nil\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unexpected token while parsing list: %s\", tok.Type)\n\t\t}\n\n\t}\n}\n\n// literalType parses a literal type and returns a LiteralType AST\nfunc (p *Parser) literalType() (*ast.LiteralType, error) {\n\tdefer un(trace(p, \"ParseLiteral\"))\n\n\treturn &ast.LiteralType{\n\t\tToken: p.tok.HCLToken(),\n\t}, nil\n}\n\n// scan returns the next token from the underlying scanner. If a token has\n// been unscanned then read that instead.\nfunc (p *Parser) scan() token.Token {\n\t// If we have a token on the buffer, then return it.\n\tif p.n != 0 {\n\t\tp.n = 0\n\t\treturn p.tok\n\t}\n\n\tp.tok = p.sc.Scan()\n\treturn p.tok\n}\n\n// unscan pushes the previously read token back onto the buffer.\nfunc (p *Parser) unscan() {\n\tp.n = 1\n}\n\n// ----------------------------------------------------------------------------\n// Parsing support\n\nfunc (p *Parser) printTrace(a ...interface{}) {\n\tif !p.enableTrace {\n\t\treturn\n\t}\n\n\tconst dots = \". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \"\n\tconst n = len(dots)\n\tfmt.Printf(\"%5d:%3d: \", p.tok.Pos.Line, p.tok.Pos.Column)\n\n\ti := 2 * p.indent\n\tfor i > n {\n\t\tfmt.Print(dots)\n\t\ti -= n\n\t}\n\t// i <= n\n\tfmt.Print(dots[0:i])\n\tfmt.Println(a...)\n}\n\nfunc trace(p *Parser, msg string) *Parser {\n\tp.printTrace(msg, \"(\")\n\tp.indent++\n\treturn p\n}\n\n// Usage pattern: defer un(trace(p, \"...\"))\nfunc un(p *Parser) {\n\tp.indent--\n\tp.printTrace(\")\")\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/json/scanner/scanner.go",
    "content": "package scanner\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"github.com/hashicorp/hcl/json/token\"\n)\n\n// eof represents a marker rune for the end of the reader.\nconst eof = rune(0)\n\n// Scanner defines a lexical scanner\ntype Scanner struct {\n\tbuf *bytes.Buffer // Source buffer for advancing and scanning\n\tsrc []byte        // Source buffer for immutable access\n\n\t// Source Position\n\tsrcPos  token.Pos // current position\n\tprevPos token.Pos // previous position, used for peek() method\n\n\tlastCharLen int // length of last character in bytes\n\tlastLineLen int // length of last line in characters (for correct column reporting)\n\n\ttokStart int // token text start position\n\ttokEnd   int // token text end  position\n\n\t// Error is called for each error encountered. If no Error\n\t// function is set, the error is reported to os.Stderr.\n\tError func(pos token.Pos, msg string)\n\n\t// ErrorCount is incremented by one for each error encountered.\n\tErrorCount int\n\n\t// tokPos is the start position of most recently scanned token; set by\n\t// Scan. The Filename field is always left untouched by the Scanner.  If\n\t// an error is reported (via Error) and Position is invalid, the scanner is\n\t// not inside a token.\n\ttokPos token.Pos\n}\n\n// New creates and initializes a new instance of Scanner using src as\n// its source content.\nfunc New(src []byte) *Scanner {\n\t// even though we accept a src, we read from a io.Reader compatible type\n\t// (*bytes.Buffer). So in the future we might easily change it to streaming\n\t// read.\n\tb := bytes.NewBuffer(src)\n\ts := &Scanner{\n\t\tbuf: b,\n\t\tsrc: src,\n\t}\n\n\t// srcPosition always starts with 1\n\ts.srcPos.Line = 1\n\treturn s\n}\n\n// next reads the next rune from the bufferred reader. Returns the rune(0) if\n// an error occurs (or io.EOF is returned).\nfunc (s *Scanner) next() rune {\n\tch, size, err := s.buf.ReadRune()\n\tif err != nil {\n\t\t// advance for error reporting\n\t\ts.srcPos.Column++\n\t\ts.srcPos.Offset += size\n\t\ts.lastCharLen = size\n\t\treturn eof\n\t}\n\n\tif ch == utf8.RuneError && size == 1 {\n\t\ts.srcPos.Column++\n\t\ts.srcPos.Offset += size\n\t\ts.lastCharLen = size\n\t\ts.err(\"illegal UTF-8 encoding\")\n\t\treturn ch\n\t}\n\n\t// remember last position\n\ts.prevPos = s.srcPos\n\n\ts.srcPos.Column++\n\ts.lastCharLen = size\n\ts.srcPos.Offset += size\n\n\tif ch == '\\n' {\n\t\ts.srcPos.Line++\n\t\ts.lastLineLen = s.srcPos.Column\n\t\ts.srcPos.Column = 0\n\t}\n\n\t// debug\n\t// fmt.Printf(\"ch: %q, offset:column: %d:%d\\n\", ch, s.srcPos.Offset, s.srcPos.Column)\n\treturn ch\n}\n\n// unread unreads the previous read Rune and updates the source position\nfunc (s *Scanner) unread() {\n\tif err := s.buf.UnreadRune(); err != nil {\n\t\tpanic(err) // this is user fault, we should catch it\n\t}\n\ts.srcPos = s.prevPos // put back last position\n}\n\n// peek returns the next rune without advancing the reader.\nfunc (s *Scanner) peek() rune {\n\tpeek, _, err := s.buf.ReadRune()\n\tif err != nil {\n\t\treturn eof\n\t}\n\n\ts.buf.UnreadRune()\n\treturn peek\n}\n\n// Scan scans the next token and returns the token.\nfunc (s *Scanner) Scan() token.Token {\n\tch := s.next()\n\n\t// skip white space\n\tfor isWhitespace(ch) {\n\t\tch = s.next()\n\t}\n\n\tvar tok token.Type\n\n\t// token text markings\n\ts.tokStart = s.srcPos.Offset - s.lastCharLen\n\n\t// token position, initial next() is moving the offset by one(size of rune\n\t// actually), though we are interested with the starting point\n\ts.tokPos.Offset = s.srcPos.Offset - s.lastCharLen\n\tif s.srcPos.Column > 0 {\n\t\t// common case: last character was not a '\\n'\n\t\ts.tokPos.Line = s.srcPos.Line\n\t\ts.tokPos.Column = s.srcPos.Column\n\t} else {\n\t\t// last character was a '\\n'\n\t\t// (we cannot be at the beginning of the source\n\t\t// since we have called next() at least once)\n\t\ts.tokPos.Line = s.srcPos.Line - 1\n\t\ts.tokPos.Column = s.lastLineLen\n\t}\n\n\tswitch {\n\tcase isLetter(ch):\n\t\tlit := s.scanIdentifier()\n\t\tif lit == \"true\" || lit == \"false\" {\n\t\t\ttok = token.BOOL\n\t\t} else if lit == \"null\" {\n\t\t\ttok = token.NULL\n\t\t} else {\n\t\t\ts.err(\"illegal char\")\n\t\t}\n\tcase isDecimal(ch):\n\t\ttok = s.scanNumber(ch)\n\tdefault:\n\t\tswitch ch {\n\t\tcase eof:\n\t\t\ttok = token.EOF\n\t\tcase '\"':\n\t\t\ttok = token.STRING\n\t\t\ts.scanString()\n\t\tcase '.':\n\t\t\ttok = token.PERIOD\n\t\t\tch = s.peek()\n\t\t\tif isDecimal(ch) {\n\t\t\t\ttok = token.FLOAT\n\t\t\t\tch = s.scanMantissa(ch)\n\t\t\t\tch = s.scanExponent(ch)\n\t\t\t}\n\t\tcase '[':\n\t\t\ttok = token.LBRACK\n\t\tcase ']':\n\t\t\ttok = token.RBRACK\n\t\tcase '{':\n\t\t\ttok = token.LBRACE\n\t\tcase '}':\n\t\t\ttok = token.RBRACE\n\t\tcase ',':\n\t\t\ttok = token.COMMA\n\t\tcase ':':\n\t\t\ttok = token.COLON\n\t\tcase '-':\n\t\t\tif isDecimal(s.peek()) {\n\t\t\t\tch := s.next()\n\t\t\t\ttok = s.scanNumber(ch)\n\t\t\t} else {\n\t\t\t\ts.err(\"illegal char\")\n\t\t\t}\n\t\tdefault:\n\t\t\ts.err(\"illegal char: \" + string(ch))\n\t\t}\n\t}\n\n\t// finish token ending\n\ts.tokEnd = s.srcPos.Offset\n\n\t// create token literal\n\tvar tokenText string\n\tif s.tokStart >= 0 {\n\t\ttokenText = string(s.src[s.tokStart:s.tokEnd])\n\t}\n\ts.tokStart = s.tokEnd // ensure idempotency of tokenText() call\n\n\treturn token.Token{\n\t\tType: tok,\n\t\tPos:  s.tokPos,\n\t\tText: tokenText,\n\t}\n}\n\n// scanNumber scans a HCL number definition starting with the given rune\nfunc (s *Scanner) scanNumber(ch rune) token.Type {\n\tzero := ch == '0'\n\tpos := s.srcPos\n\n\ts.scanMantissa(ch)\n\tch = s.next() // seek forward\n\tif ch == 'e' || ch == 'E' {\n\t\tch = s.scanExponent(ch)\n\t\treturn token.FLOAT\n\t}\n\n\tif ch == '.' {\n\t\tch = s.scanFraction(ch)\n\t\tif ch == 'e' || ch == 'E' {\n\t\t\tch = s.next()\n\t\t\tch = s.scanExponent(ch)\n\t\t}\n\t\treturn token.FLOAT\n\t}\n\n\tif ch != eof {\n\t\ts.unread()\n\t}\n\n\t// If we have a larger number and this is zero, error\n\tif zero && pos != s.srcPos {\n\t\ts.err(\"numbers cannot start with 0\")\n\t}\n\n\treturn token.NUMBER\n}\n\n// scanMantissa scans the mantissa beginning from the rune. It returns the next\n// non decimal rune. It's used to determine wheter it's a fraction or exponent.\nfunc (s *Scanner) scanMantissa(ch rune) rune {\n\tscanned := false\n\tfor isDecimal(ch) {\n\t\tch = s.next()\n\t\tscanned = true\n\t}\n\n\tif scanned && ch != eof {\n\t\ts.unread()\n\t}\n\treturn ch\n}\n\n// scanFraction scans the fraction after the '.' rune\nfunc (s *Scanner) scanFraction(ch rune) rune {\n\tif ch == '.' {\n\t\tch = s.peek() // we peek just to see if we can move forward\n\t\tch = s.scanMantissa(ch)\n\t}\n\treturn ch\n}\n\n// scanExponent scans the remaining parts of an exponent after the 'e' or 'E'\n// rune.\nfunc (s *Scanner) scanExponent(ch rune) rune {\n\tif ch == 'e' || ch == 'E' {\n\t\tch = s.next()\n\t\tif ch == '-' || ch == '+' {\n\t\t\tch = s.next()\n\t\t}\n\t\tch = s.scanMantissa(ch)\n\t}\n\treturn ch\n}\n\n// scanString scans a quoted string\nfunc (s *Scanner) scanString() {\n\tbraces := 0\n\tfor {\n\t\t// '\"' opening already consumed\n\t\t// read character after quote\n\t\tch := s.next()\n\n\t\tif ch == '\\n' || ch < 0 || ch == eof {\n\t\t\ts.err(\"literal not terminated\")\n\t\t\treturn\n\t\t}\n\n\t\tif ch == '\"' {\n\t\t\tbreak\n\t\t}\n\n\t\t// If we're going into a ${} then we can ignore quotes for awhile\n\t\tif braces == 0 && ch == '$' && s.peek() == '{' {\n\t\t\tbraces++\n\t\t\ts.next()\n\t\t} else if braces > 0 && ch == '{' {\n\t\t\tbraces++\n\t\t}\n\t\tif braces > 0 && ch == '}' {\n\t\t\tbraces--\n\t\t}\n\n\t\tif ch == '\\\\' {\n\t\t\ts.scanEscape()\n\t\t}\n\t}\n\n\treturn\n}\n\n// scanEscape scans an escape sequence\nfunc (s *Scanner) scanEscape() rune {\n\t// http://en.cppreference.com/w/cpp/language/escape\n\tch := s.next() // read character after '/'\n\tswitch ch {\n\tcase 'a', 'b', 'f', 'n', 'r', 't', 'v', '\\\\', '\"':\n\t\t// nothing to do\n\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\t// octal notation\n\t\tch = s.scanDigits(ch, 8, 3)\n\tcase 'x':\n\t\t// hexademical notation\n\t\tch = s.scanDigits(s.next(), 16, 2)\n\tcase 'u':\n\t\t// universal character name\n\t\tch = s.scanDigits(s.next(), 16, 4)\n\tcase 'U':\n\t\t// universal character name\n\t\tch = s.scanDigits(s.next(), 16, 8)\n\tdefault:\n\t\ts.err(\"illegal char escape\")\n\t}\n\treturn ch\n}\n\n// scanDigits scans a rune with the given base for n times. For example an\n// octal notation \\184 would yield in scanDigits(ch, 8, 3)\nfunc (s *Scanner) scanDigits(ch rune, base, n int) rune {\n\tfor n > 0 && digitVal(ch) < base {\n\t\tch = s.next()\n\t\tn--\n\t}\n\tif n > 0 {\n\t\ts.err(\"illegal char escape\")\n\t}\n\n\t// we scanned all digits, put the last non digit char back\n\ts.unread()\n\treturn ch\n}\n\n// scanIdentifier scans an identifier and returns the literal string\nfunc (s *Scanner) scanIdentifier() string {\n\toffs := s.srcPos.Offset - s.lastCharLen\n\tch := s.next()\n\tfor isLetter(ch) || isDigit(ch) || ch == '-' {\n\t\tch = s.next()\n\t}\n\n\tif ch != eof {\n\t\ts.unread() // we got identifier, put back latest char\n\t}\n\n\treturn string(s.src[offs:s.srcPos.Offset])\n}\n\n// recentPosition returns the position of the character immediately after the\n// character or token returned by the last call to Scan.\nfunc (s *Scanner) recentPosition() (pos token.Pos) {\n\tpos.Offset = s.srcPos.Offset - s.lastCharLen\n\tswitch {\n\tcase s.srcPos.Column > 0:\n\t\t// common case: last character was not a '\\n'\n\t\tpos.Line = s.srcPos.Line\n\t\tpos.Column = s.srcPos.Column\n\tcase s.lastLineLen > 0:\n\t\t// last character was a '\\n'\n\t\t// (we cannot be at the beginning of the source\n\t\t// since we have called next() at least once)\n\t\tpos.Line = s.srcPos.Line - 1\n\t\tpos.Column = s.lastLineLen\n\tdefault:\n\t\t// at the beginning of the source\n\t\tpos.Line = 1\n\t\tpos.Column = 1\n\t}\n\treturn\n}\n\n// err prints the error of any scanning to s.Error function. If the function is\n// not defined, by default it prints them to os.Stderr\nfunc (s *Scanner) err(msg string) {\n\ts.ErrorCount++\n\tpos := s.recentPosition()\n\n\tif s.Error != nil {\n\t\ts.Error(pos, msg)\n\t\treturn\n\t}\n\n\tfmt.Fprintf(os.Stderr, \"%s: %s\\n\", pos, msg)\n}\n\n// isHexadecimal returns true if the given rune is a letter\nfunc isLetter(ch rune) bool {\n\treturn 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_' || ch >= 0x80 && unicode.IsLetter(ch)\n}\n\n// isHexadecimal returns true if the given rune is a decimal digit\nfunc isDigit(ch rune) bool {\n\treturn '0' <= ch && ch <= '9' || ch >= 0x80 && unicode.IsDigit(ch)\n}\n\n// isHexadecimal returns true if the given rune is a decimal number\nfunc isDecimal(ch rune) bool {\n\treturn '0' <= ch && ch <= '9'\n}\n\n// isHexadecimal returns true if the given rune is an hexadecimal number\nfunc isHexadecimal(ch rune) bool {\n\treturn '0' <= ch && ch <= '9' || 'a' <= ch && ch <= 'f' || 'A' <= ch && ch <= 'F'\n}\n\n// isWhitespace returns true if the rune is a space, tab, newline or carriage return\nfunc isWhitespace(ch rune) bool {\n\treturn ch == ' ' || ch == '\\t' || ch == '\\n' || ch == '\\r'\n}\n\n// digitVal returns the integer value of a given octal,decimal or hexadecimal rune\nfunc digitVal(ch rune) int {\n\tswitch {\n\tcase '0' <= ch && ch <= '9':\n\t\treturn int(ch - '0')\n\tcase 'a' <= ch && ch <= 'f':\n\t\treturn int(ch - 'a' + 10)\n\tcase 'A' <= ch && ch <= 'F':\n\t\treturn int(ch - 'A' + 10)\n\t}\n\treturn 16 // larger than any legal digit val\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/json/token/position.go",
    "content": "package token\n\nimport \"fmt\"\n\n// Pos describes an arbitrary source position\n// including the file, line, and column location.\n// A Position is valid if the line number is > 0.\ntype Pos struct {\n\tFilename string // filename, if any\n\tOffset   int    // offset, starting at 0\n\tLine     int    // line number, starting at 1\n\tColumn   int    // column number, starting at 1 (character count)\n}\n\n// IsValid returns true if the position is valid.\nfunc (p *Pos) IsValid() bool { return p.Line > 0 }\n\n// String returns a string in one of several forms:\n//\n//\tfile:line:column    valid position with file name\n//\tline:column         valid position without file name\n//\tfile                invalid position with file name\n//\t-                   invalid position without file name\nfunc (p Pos) String() string {\n\ts := p.Filename\n\tif p.IsValid() {\n\t\tif s != \"\" {\n\t\t\ts += \":\"\n\t\t}\n\t\ts += fmt.Sprintf(\"%d:%d\", p.Line, p.Column)\n\t}\n\tif s == \"\" {\n\t\ts = \"-\"\n\t}\n\treturn s\n}\n\n// Before reports whether the position p is before u.\nfunc (p Pos) Before(u Pos) bool {\n\treturn u.Offset > p.Offset || u.Line > p.Line\n}\n\n// After reports whether the position p is after u.\nfunc (p Pos) After(u Pos) bool {\n\treturn u.Offset < p.Offset || u.Line < p.Line\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/json/token/token.go",
    "content": "package token\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\n\thcltoken \"github.com/hashicorp/hcl/hcl/token\"\n)\n\n// Token defines a single HCL token which can be obtained via the Scanner\ntype Token struct {\n\tType Type\n\tPos  Pos\n\tText string\n}\n\n// Type is the set of lexical tokens of the HCL (HashiCorp Configuration Language)\ntype Type int\n\nconst (\n\t// Special tokens\n\tILLEGAL Type = iota\n\tEOF\n\n\tidentifier_beg\n\tliteral_beg\n\tNUMBER // 12345\n\tFLOAT  // 123.45\n\tBOOL   // true,false\n\tSTRING // \"abc\"\n\tNULL   // null\n\tliteral_end\n\tidentifier_end\n\n\toperator_beg\n\tLBRACK // [\n\tLBRACE // {\n\tCOMMA  // ,\n\tPERIOD // .\n\tCOLON  // :\n\n\tRBRACK // ]\n\tRBRACE // }\n\n\toperator_end\n)\n\nvar tokens = [...]string{\n\tILLEGAL: \"ILLEGAL\",\n\n\tEOF: \"EOF\",\n\n\tNUMBER: \"NUMBER\",\n\tFLOAT:  \"FLOAT\",\n\tBOOL:   \"BOOL\",\n\tSTRING: \"STRING\",\n\tNULL:   \"NULL\",\n\n\tLBRACK: \"LBRACK\",\n\tLBRACE: \"LBRACE\",\n\tCOMMA:  \"COMMA\",\n\tPERIOD: \"PERIOD\",\n\tCOLON:  \"COLON\",\n\n\tRBRACK: \"RBRACK\",\n\tRBRACE: \"RBRACE\",\n}\n\n// String returns the string corresponding to the token tok.\nfunc (t Type) String() string {\n\ts := \"\"\n\tif 0 <= t && t < Type(len(tokens)) {\n\t\ts = tokens[t]\n\t}\n\tif s == \"\" {\n\t\ts = \"token(\" + strconv.Itoa(int(t)) + \")\"\n\t}\n\treturn s\n}\n\n// IsIdentifier returns true for tokens corresponding to identifiers and basic\n// type literals; it returns false otherwise.\nfunc (t Type) IsIdentifier() bool { return identifier_beg < t && t < identifier_end }\n\n// IsLiteral returns true for tokens corresponding to basic type literals; it\n// returns false otherwise.\nfunc (t Type) IsLiteral() bool { return literal_beg < t && t < literal_end }\n\n// IsOperator returns true for tokens corresponding to operators and\n// delimiters; it returns false otherwise.\nfunc (t Type) IsOperator() bool { return operator_beg < t && t < operator_end }\n\n// String returns the token's literal text. Note that this is only\n// applicable for certain token types, such as token.IDENT,\n// token.STRING, etc..\nfunc (t Token) String() string {\n\treturn fmt.Sprintf(\"%s %s %s\", t.Pos.String(), t.Type.String(), t.Text)\n}\n\n// HCLToken converts this token to an HCL token.\n//\n// The token type must be a literal type or this will panic.\nfunc (t Token) HCLToken() hcltoken.Token {\n\tswitch t.Type {\n\tcase BOOL:\n\t\treturn hcltoken.Token{Type: hcltoken.BOOL, Text: t.Text}\n\tcase FLOAT:\n\t\treturn hcltoken.Token{Type: hcltoken.FLOAT, Text: t.Text}\n\tcase NULL:\n\t\treturn hcltoken.Token{Type: hcltoken.STRING, Text: \"\"}\n\tcase NUMBER:\n\t\treturn hcltoken.Token{Type: hcltoken.NUMBER, Text: t.Text}\n\tcase STRING:\n\t\treturn hcltoken.Token{Type: hcltoken.STRING, Text: t.Text, JSON: true}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unimplemented HCLToken for type: %s\", t.Type))\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/lex.go",
    "content": "package hcl\n\nimport (\n\t\"unicode\"\n\t\"unicode/utf8\"\n)\n\ntype lexModeValue byte\n\nconst (\n\tlexModeUnknown lexModeValue = iota\n\tlexModeHcl\n\tlexModeJson\n)\n\n// lexMode returns whether we're going to be parsing in JSON\n// mode or HCL mode.\nfunc lexMode(v []byte) lexModeValue {\n\tvar (\n\t\tr      rune\n\t\tw      int\n\t\toffset int\n\t)\n\n\tfor {\n\t\tr, w = utf8.DecodeRune(v[offset:])\n\t\toffset += w\n\t\tif unicode.IsSpace(r) {\n\t\t\tcontinue\n\t\t}\n\t\tif r == '{' {\n\t\t\treturn lexModeJson\n\t\t}\n\t\tbreak\n\t}\n\n\treturn lexModeHcl\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/hcl/parse.go",
    "content": "package hcl\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/hashicorp/hcl/hcl/ast\"\n\thclParser \"github.com/hashicorp/hcl/hcl/parser\"\n\tjsonParser \"github.com/hashicorp/hcl/json/parser\"\n)\n\n// ParseBytes accepts as input byte slice and returns ast tree.\n//\n// Input can be either JSON or HCL\nfunc ParseBytes(in []byte) (*ast.File, error) {\n\treturn parse(in)\n}\n\n// ParseString accepts input as a string and returns ast tree.\nfunc ParseString(input string) (*ast.File, error) {\n\treturn parse([]byte(input))\n}\n\nfunc parse(in []byte) (*ast.File, error) {\n\tswitch lexMode(in) {\n\tcase lexModeHcl:\n\t\treturn hclParser.Parse(in)\n\tcase lexModeJson:\n\t\treturn jsonParser.Parse(in)\n\t}\n\n\treturn nil, fmt.Errorf(\"unknown config format\")\n}\n\n// Parse parses the given input and returns the root object.\n//\n// The input format can be either HCL or JSON.\nfunc Parse(input string) (*ast.File, error) {\n\treturn parse([]byte(input))\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/serf/LICENSE",
    "content": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. “Contributor”\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. “Contributor Version”\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor’s Contribution.\n\n1.3. “Contribution”\n\n     means Covered Software of a particular Contributor.\n\n1.4. “Covered Software”\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. “Incompatible With Secondary Licenses”\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of version\n        1.1 or earlier of the License, but not also under the terms of a\n        Secondary License.\n\n1.6. “Executable Form”\n\n     means any form of the work other than Source Code Form.\n\n1.7. “Larger Work”\n\n     means a work that combines Covered Software with other material, in a separate\n     file or files, that is not Covered Software.\n\n1.8. “License”\n\n     means this document.\n\n1.9. “Licensable”\n\n     means having the right to grant, to the maximum extent possible, whether at the\n     time of the initial grant or subsequently, any and all of the rights conveyed by\n     this License.\n\n1.10. “Modifications”\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to, deletion\n        from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. “Patent Claims” of a Contributor\n\n      means any patent claim(s), including without limitation, method, process,\n      and apparatus claims, in any patent Licensable by such Contributor that\n      would be infringed, but for the grant of the License, by the making,\n      using, selling, offering for sale, having made, import, or transfer of\n      either its Contributions or its Contributor Version.\n\n1.12. “Secondary License”\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. “Source Code Form”\n\n      means the form of the work preferred for making modifications.\n\n1.14. “You” (or “Your”)\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, “You” includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, “control” means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or as\n        part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its Contributions\n        or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution become\n     effective for each Contribution on the date the Contributor first distributes\n     such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under this\n     License. No additional rights or licenses will be implied from the distribution\n     or licensing of Covered Software under this License. Notwithstanding Section\n     2.1(b) above, no patent license is granted by a Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party’s\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of its\n        Contributions.\n\n     This License does not grant any rights in the trademarks, service marks, or\n     logos of any Contributor (except as may be necessary to comply with the\n     notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this License\n     (see Section 10.2) or under the terms of a Secondary License (if permitted\n     under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its Contributions\n     are its original creation(s) or it has sufficient rights to grant the\n     rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under applicable\n     copyright doctrines of fair use, fair dealing, or other equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under the\n     terms of this License. You must inform recipients that the Source Code Form\n     of the Covered Software is governed by the terms of this License, and how\n     they can obtain a copy of this License. You may not attempt to alter or\n     restrict the recipients’ rights in the Source Code Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this License,\n        or sublicense it under different terms, provided that the license for\n        the Executable Form does not attempt to limit or alter the recipients’\n        rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for the\n     Covered Software. If the Larger Work is a combination of Covered Software\n     with a work governed by one or more Secondary Licenses, and the Covered\n     Software is not Incompatible With Secondary Licenses, this License permits\n     You to additionally distribute such Covered Software under the terms of\n     such Secondary License(s), so that the recipient of the Larger Work may, at\n     their option, further distribute the Covered Software under the terms of\n     either this License or such Secondary License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices (including\n     copyright notices, patent notices, disclaimers of warranty, or limitations\n     of liability) contained within the Source Code Form of the Covered\n     Software, except that You may alter any license notices to the extent\n     required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on behalf\n     of any Contributor. You must make it absolutely clear that any such\n     warranty, support, indemnity, or liability obligation is offered by You\n     alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute, judicial\n   order, or regulation then You must: (a) comply with the terms of this License\n   to the maximum extent possible; and (b) describe the limitations and the code\n   they affect. Such description must be placed in a text file included with all\n   distributions of the Covered Software under this License. Except to the\n   extent prohibited by statute or regulation, such description must be\n   sufficiently detailed for a recipient of ordinary skill to be able to\n   understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing basis,\n     if such Contributor fails to notify You of the non-compliance by some\n     reasonable means prior to 60 days after You have come back into compliance.\n     Moreover, Your grants from a particular Contributor are reinstated on an\n     ongoing basis if such Contributor notifies You of the non-compliance by\n     some reasonable means, this is the first time You have received notice of\n     non-compliance with this License from such Contributor, and You become\n     compliant prior to 30 days after Your receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions, counter-claims,\n     and cross-claims) alleging that a Contributor Version directly or\n     indirectly infringes any patent, then the rights granted to You by any and\n     all Contributors for the Covered Software under Section 2.1 of this License\n     shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an “as is” basis, without\n   warranty of any kind, either expressed, implied, or statutory, including,\n   without limitation, warranties that the Covered Software is free of defects,\n   merchantable, fit for a particular purpose or non-infringing. The entire\n   risk as to the quality and performance of the Covered Software is with You.\n   Should any Covered Software prove defective in any respect, You (not any\n   Contributor) assume the cost of any necessary servicing, repair, or\n   correction. This disclaimer of warranty constitutes an essential part of this\n   License. No use of  any Covered Software is authorized under this License\n   except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from such\n   party’s negligence to the extent applicable law prohibits such limitation.\n   Some jurisdictions do not allow the exclusion or limitation of incidental or\n   consequential damages, so this exclusion and limitation may not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts of\n   a jurisdiction where the defendant maintains its principal place of business\n   and such litigation shall be governed by laws of that jurisdiction, without\n   reference to its conflict-of-law provisions. Nothing in this Section shall\n   prevent a party’s ability to bring cross-claims or counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject matter\n   hereof. If any provision of this License is held to be unenforceable, such\n   provision shall be reformed only to the extent necessary to make it\n   enforceable. Any law or regulation which provides that the language of a\n   contract shall be construed against the drafter shall not be used to construe\n   this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version of\n      the License under which You originally received the Covered Software, or\n      under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a modified\n      version of this License if you rename the license and remove any\n      references to the name of the license steward (except to note that such\n      modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses\n      If You choose to distribute Source Code Form that is Incompatible With\n      Secondary Licenses under the terms of this version of the License, the\n      notice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file, then\nYou may include the notice in a location (such as a LICENSE file in a relevant\ndirectory) where a recipient would be likely to look for such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - “Incompatible With Secondary Licenses” Notice\n\n      This Source Code Form is “Incompatible\n      With Secondary Licenses”, as defined by\n      the Mozilla Public License, v. 2.0.\n\n"
  },
  {
    "path": "vendor/github.com/hashicorp/serf/coordinate/client.go",
    "content": "package coordinate\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"sort\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/armon/go-metrics\"\n)\n\n// Client manages the estimated network coordinate for a given node, and adjusts\n// it as the node observes round trip times and estimated coordinates from other\n// nodes. The core algorithm is based on Vivaldi, see the documentation for Config\n// for more details.\ntype Client struct {\n\t// coord is the current estimate of the client's network coordinate.\n\tcoord *Coordinate\n\n\t// origin is a coordinate sitting at the origin.\n\torigin *Coordinate\n\n\t// config contains the tuning parameters that govern the performance of\n\t// the algorithm.\n\tconfig *Config\n\n\t// adjustmentIndex is the current index into the adjustmentSamples slice.\n\tadjustmentIndex uint\n\n\t// adjustment is used to store samples for the adjustment calculation.\n\tadjustmentSamples []float64\n\n\t// latencyFilterSamples is used to store the last several RTT samples,\n\t// keyed by node name. We will use the config's LatencyFilterSamples\n\t// value to determine how many samples we keep, per node.\n\tlatencyFilterSamples map[string][]float64\n\n\t// stats is used to record events that occur when updating coordinates.\n\tstats ClientStats\n\n\t// mutex enables safe concurrent access to the client.\n\tmutex sync.RWMutex\n}\n\n// ClientStats is used to record events that occur when updating coordinates.\ntype ClientStats struct {\n\t// Resets is incremented any time we reset our local coordinate because\n\t// our calculations have resulted in an invalid state.\n\tResets int\n}\n\n// NewClient creates a new Client and verifies the configuration is valid.\nfunc NewClient(config *Config) (*Client, error) {\n\tif !(config.Dimensionality > 0) {\n\t\treturn nil, fmt.Errorf(\"dimensionality must be >0\")\n\t}\n\n\treturn &Client{\n\t\tcoord:                NewCoordinate(config),\n\t\torigin:               NewCoordinate(config),\n\t\tconfig:               config,\n\t\tadjustmentIndex:      0,\n\t\tadjustmentSamples:    make([]float64, config.AdjustmentWindowSize),\n\t\tlatencyFilterSamples: make(map[string][]float64),\n\t}, nil\n}\n\n// GetCoordinate returns a copy of the coordinate for this client.\nfunc (c *Client) GetCoordinate() *Coordinate {\n\tc.mutex.RLock()\n\tdefer c.mutex.RUnlock()\n\n\treturn c.coord.Clone()\n}\n\n// SetCoordinate forces the client's coordinate to a known state.\nfunc (c *Client) SetCoordinate(coord *Coordinate) error {\n\tc.mutex.Lock()\n\tdefer c.mutex.Unlock()\n\n\tif err := c.checkCoordinate(coord); err != nil {\n\t\treturn err\n\t}\n\n\tc.coord = coord.Clone()\n\treturn nil\n}\n\n// ForgetNode removes any client state for the given node.\nfunc (c *Client) ForgetNode(node string) {\n\tc.mutex.Lock()\n\tdefer c.mutex.Unlock()\n\n\tdelete(c.latencyFilterSamples, node)\n}\n\n// Stats returns a copy of stats for the client.\nfunc (c *Client) Stats() ClientStats {\n\tc.mutex.Lock()\n\tdefer c.mutex.Unlock()\n\n\treturn c.stats\n}\n\n// checkCoordinate returns an error if the coordinate isn't compatible with\n// this client, or if the coordinate itself isn't valid. This assumes the mutex\n// has been locked already.\nfunc (c *Client) checkCoordinate(coord *Coordinate) error {\n\tif !c.coord.IsCompatibleWith(coord) {\n\t\treturn fmt.Errorf(\"dimensions aren't compatible\")\n\t}\n\n\tif !coord.IsValid() {\n\t\treturn fmt.Errorf(\"coordinate is invalid\")\n\t}\n\n\treturn nil\n}\n\n// latencyFilter applies a simple moving median filter with a new sample for\n// a node. This assumes that the mutex has been locked already.\nfunc (c *Client) latencyFilter(node string, rttSeconds float64) float64 {\n\tsamples, ok := c.latencyFilterSamples[node]\n\tif !ok {\n\t\tsamples = make([]float64, 0, c.config.LatencyFilterSize)\n\t}\n\n\t// Add the new sample and trim the list, if needed.\n\tsamples = append(samples, rttSeconds)\n\tif len(samples) > int(c.config.LatencyFilterSize) {\n\t\tsamples = samples[1:]\n\t}\n\tc.latencyFilterSamples[node] = samples\n\n\t// Sort a copy of the samples and return the median.\n\tsorted := make([]float64, len(samples))\n\tcopy(sorted, samples)\n\tsort.Float64s(sorted)\n\treturn sorted[len(sorted)/2]\n}\n\n// updateVivialdi updates the Vivaldi portion of the client's coordinate. This\n// assumes that the mutex has been locked already.\nfunc (c *Client) updateVivaldi(other *Coordinate, rttSeconds float64) {\n\tconst zeroThreshold = 1.0e-6\n\n\tdist := c.coord.DistanceTo(other).Seconds()\n\tif rttSeconds < zeroThreshold {\n\t\trttSeconds = zeroThreshold\n\t}\n\twrongness := math.Abs(dist-rttSeconds) / rttSeconds\n\n\ttotalError := c.coord.Error + other.Error\n\tif totalError < zeroThreshold {\n\t\ttotalError = zeroThreshold\n\t}\n\tweight := c.coord.Error / totalError\n\n\tc.coord.Error = c.config.VivaldiCE*weight*wrongness + c.coord.Error*(1.0-c.config.VivaldiCE*weight)\n\tif c.coord.Error > c.config.VivaldiErrorMax {\n\t\tc.coord.Error = c.config.VivaldiErrorMax\n\t}\n\n\tdelta := c.config.VivaldiCC * weight\n\tforce := delta * (rttSeconds - dist)\n\tc.coord = c.coord.ApplyForce(c.config, force, other)\n}\n\n// updateAdjustment updates the adjustment portion of the client's coordinate, if\n// the feature is enabled. This assumes that the mutex has been locked already.\nfunc (c *Client) updateAdjustment(other *Coordinate, rttSeconds float64) {\n\tif c.config.AdjustmentWindowSize == 0 {\n\t\treturn\n\t}\n\n\t// Note that the existing adjustment factors don't figure in to this\n\t// calculation so we use the raw distance here.\n\tdist := c.coord.rawDistanceTo(other)\n\tc.adjustmentSamples[c.adjustmentIndex] = rttSeconds - dist\n\tc.adjustmentIndex = (c.adjustmentIndex + 1) % c.config.AdjustmentWindowSize\n\n\tsum := 0.0\n\tfor _, sample := range c.adjustmentSamples {\n\t\tsum += sample\n\t}\n\tc.coord.Adjustment = sum / (2.0 * float64(c.config.AdjustmentWindowSize))\n}\n\n// updateGravity applies a small amount of gravity to pull coordinates towards\n// the center of the coordinate system to combat drift. This assumes that the\n// mutex is locked already.\nfunc (c *Client) updateGravity() {\n\tdist := c.origin.DistanceTo(c.coord).Seconds()\n\tforce := -1.0 * math.Pow(dist/c.config.GravityRho, 2.0)\n\tc.coord = c.coord.ApplyForce(c.config, force, c.origin)\n}\n\n// Update takes other, a coordinate for another node, and rtt, a round trip\n// time observation for a ping to that node, and updates the estimated position of\n// the client's coordinate. Returns the updated coordinate.\nfunc (c *Client) Update(node string, other *Coordinate, rtt time.Duration) (*Coordinate, error) {\n\tc.mutex.Lock()\n\tdefer c.mutex.Unlock()\n\n\tif err := c.checkCoordinate(other); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// The code down below can handle zero RTTs, which we have seen in\n\t// https://github.com/hashicorp/consul/issues/3789, presumably in\n\t// environments with coarse-grained monotonic clocks (we are still\n\t// trying to pin this down). In any event, this is ok from a code PoV\n\t// so we don't need to alert operators with spammy messages. We did\n\t// add a counter so this is still observable, though.\n\tconst maxRTT = 10 * time.Second\n\tif rtt < 0 || rtt > maxRTT {\n\t\treturn nil, fmt.Errorf(\"round trip time not in valid range, duration %v is not a positive value less than %v \", rtt, maxRTT)\n\t}\n\tif rtt == 0 {\n\t\tmetrics.IncrCounterWithLabels([]string{\"serf\", \"coordinate\", \"zero-rtt\"}, 1, c.config.MetricLabels)\n\t}\n\n\trttSeconds := c.latencyFilter(node, rtt.Seconds())\n\tc.updateVivaldi(other, rttSeconds)\n\tc.updateAdjustment(other, rttSeconds)\n\tc.updateGravity()\n\tif !c.coord.IsValid() {\n\t\tc.stats.Resets++\n\t\tc.coord = NewCoordinate(c.config)\n\t}\n\n\treturn c.coord.Clone(), nil\n}\n\n// DistanceTo returns the estimated RTT from the client's coordinate to other, the\n// coordinate for another node.\nfunc (c *Client) DistanceTo(other *Coordinate) time.Duration {\n\tc.mutex.RLock()\n\tdefer c.mutex.RUnlock()\n\n\treturn c.coord.DistanceTo(other)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/serf/coordinate/config.go",
    "content": "package coordinate\n\nimport (\n\t\"github.com/armon/go-metrics\"\n)\n\n// Config is used to set the parameters of the Vivaldi-based coordinate mapping\n// algorithm.\n//\n// The following references are called out at various points in the documentation\n// here:\n//\n// [1] Dabek, Frank, et al. \"Vivaldi: A decentralized network coordinate system.\"\n//     ACM SIGCOMM Computer Communication Review. Vol. 34. No. 4. ACM, 2004.\n// [2] Ledlie, Jonathan, Paul Gardner, and Margo I. Seltzer. \"Network Coordinates\n//     in the Wild.\" NSDI. Vol. 7. 2007.\n// [3] Lee, Sanghwan, et al. \"On suitability of Euclidean embedding for\n//     host-based network coordinate systems.\" Networking, IEEE/ACM Transactions\n//     on 18.1 (2010): 27-40.\ntype Config struct {\n\t// The dimensionality of the coordinate system. As discussed in [2], more\n\t// dimensions improves the accuracy of the estimates up to a point. Per [2]\n\t// we chose 8 dimensions plus a non-Euclidean height.\n\tDimensionality uint\n\n\t// VivaldiErrorMax is the default error value when a node hasn't yet made\n\t// any observations. It also serves as an upper limit on the error value in\n\t// case observations cause the error value to increase without bound.\n\tVivaldiErrorMax float64\n\n\t// VivaldiCE is a tuning factor that controls the maximum impact an\n\t// observation can have on a node's confidence. See [1] for more details.\n\tVivaldiCE float64\n\n\t// VivaldiCC is a tuning factor that controls the maximum impact an\n\t// observation can have on a node's coordinate. See [1] for more details.\n\tVivaldiCC float64\n\n\t// AdjustmentWindowSize is a tuning factor that determines how many samples\n\t// we retain to calculate the adjustment factor as discussed in [3]. Setting\n\t// this to zero disables this feature.\n\tAdjustmentWindowSize uint\n\n\t// HeightMin is the minimum value of the height parameter. Since this\n\t// always must be positive, it will introduce a small amount error, so\n\t// the chosen value should be relatively small compared to \"normal\"\n\t// coordinates.\n\tHeightMin float64\n\n\t// LatencyFilterSamples is the maximum number of samples that are retained\n\t// per node, in order to compute a median. The intent is to ride out blips\n\t// but still keep the delay low, since our time to probe any given node is\n\t// pretty infrequent. See [2] for more details.\n\tLatencyFilterSize uint\n\n\t// GravityRho is a tuning factor that sets how much gravity has an effect\n\t// to try to re-center coordinates. See [2] for more details.\n\tGravityRho float64\n\n\t// metricLabels is the slice of labels to put on all emitted metrics\n\tMetricLabels []metrics.Label\n}\n\n// DefaultConfig returns a Config that has some default values suitable for\n// basic testing of the algorithm, but not tuned to any particular type of cluster.\nfunc DefaultConfig() *Config {\n\treturn &Config{\n\t\tDimensionality:       8,\n\t\tVivaldiErrorMax:      1.5,\n\t\tVivaldiCE:            0.25,\n\t\tVivaldiCC:            0.25,\n\t\tAdjustmentWindowSize: 20,\n\t\tHeightMin:            10.0e-6,\n\t\tLatencyFilterSize:    3,\n\t\tGravityRho:           150.0,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/serf/coordinate/coordinate.go",
    "content": "package coordinate\n\nimport (\n\t\"math\"\n\t\"math/rand\"\n\t\"time\"\n)\n\n// Coordinate is a specialized structure for holding network coordinates for the\n// Vivaldi-based coordinate mapping algorithm. All of the fields should be public\n// to enable this to be serialized. All values in here are in units of seconds.\ntype Coordinate struct {\n\t// Vec is the Euclidean portion of the coordinate. This is used along\n\t// with the other fields to provide an overall distance estimate. The\n\t// units here are seconds.\n\tVec []float64\n\n\t// Err reflects the confidence in the given coordinate and is updated\n\t// dynamically by the Vivaldi Client. This is dimensionless.\n\tError float64\n\n\t// Adjustment is a distance offset computed based on a calculation over\n\t// observations from all other nodes over a fixed window and is updated\n\t// dynamically by the Vivaldi Client. The units here are seconds.\n\tAdjustment float64\n\n\t// Height is a distance offset that accounts for non-Euclidean effects\n\t// which model the access links from nodes to the core Internet. The access\n\t// links are usually set by bandwidth and congestion, and the core links\n\t// usually follow distance based on geography.\n\tHeight float64\n}\n\nconst (\n\t// secondsToNanoseconds is used to convert float seconds to nanoseconds.\n\tsecondsToNanoseconds = 1.0e9\n\n\t// zeroThreshold is used to decide if two coordinates are on top of each\n\t// other.\n\tzeroThreshold = 1.0e-6\n)\n\n// ErrDimensionalityConflict will be panic-d if you try to perform operations\n// with incompatible dimensions.\ntype DimensionalityConflictError struct{}\n\n// Adds the error interface.\nfunc (e DimensionalityConflictError) Error() string {\n\treturn \"coordinate dimensionality does not match\"\n}\n\n// NewCoordinate creates a new coordinate at the origin, using the given config\n// to supply key initial values.\nfunc NewCoordinate(config *Config) *Coordinate {\n\treturn &Coordinate{\n\t\tVec:        make([]float64, config.Dimensionality),\n\t\tError:      config.VivaldiErrorMax,\n\t\tAdjustment: 0.0,\n\t\tHeight:     config.HeightMin,\n\t}\n}\n\n// Clone creates an independent copy of this coordinate.\nfunc (c *Coordinate) Clone() *Coordinate {\n\tvec := make([]float64, len(c.Vec))\n\tcopy(vec, c.Vec)\n\treturn &Coordinate{\n\t\tVec:        vec,\n\t\tError:      c.Error,\n\t\tAdjustment: c.Adjustment,\n\t\tHeight:     c.Height,\n\t}\n}\n\n// componentIsValid returns false if a floating point value is a NaN or an\n// infinity.\nfunc componentIsValid(f float64) bool {\n\treturn !math.IsInf(f, 0) && !math.IsNaN(f)\n}\n\n// IsValid returns false if any component of a coordinate isn't valid, per the\n// componentIsValid() helper above.\nfunc (c *Coordinate) IsValid() bool {\n\tfor i := range c.Vec {\n\t\tif !componentIsValid(c.Vec[i]) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn componentIsValid(c.Error) &&\n\t\tcomponentIsValid(c.Adjustment) &&\n\t\tcomponentIsValid(c.Height)\n}\n\n// IsCompatibleWith checks to see if the two coordinates are compatible\n// dimensionally. If this returns true then you are guaranteed to not get\n// any runtime errors operating on them.\nfunc (c *Coordinate) IsCompatibleWith(other *Coordinate) bool {\n\treturn len(c.Vec) == len(other.Vec)\n}\n\n// ApplyForce returns the result of applying the force from the direction of the\n// other coordinate.\nfunc (c *Coordinate) ApplyForce(config *Config, force float64, other *Coordinate) *Coordinate {\n\tif !c.IsCompatibleWith(other) {\n\t\tpanic(DimensionalityConflictError{})\n\t}\n\n\tret := c.Clone()\n\tunit, mag := unitVectorAt(c.Vec, other.Vec)\n\tret.Vec = add(ret.Vec, mul(unit, force))\n\tif mag > zeroThreshold {\n\t\tret.Height = (ret.Height+other.Height)*force/mag + ret.Height\n\t\tret.Height = math.Max(ret.Height, config.HeightMin)\n\t}\n\treturn ret\n}\n\n// DistanceTo returns the distance between this coordinate and the other\n// coordinate, including adjustments.\nfunc (c *Coordinate) DistanceTo(other *Coordinate) time.Duration {\n\tif !c.IsCompatibleWith(other) {\n\t\tpanic(DimensionalityConflictError{})\n\t}\n\n\tdist := c.rawDistanceTo(other)\n\tadjustedDist := dist + c.Adjustment + other.Adjustment\n\tif adjustedDist > 0.0 {\n\t\tdist = adjustedDist\n\t}\n\treturn time.Duration(dist * secondsToNanoseconds)\n}\n\n// rawDistanceTo returns the Vivaldi distance between this coordinate and the\n// other coordinate in seconds, not including adjustments. This assumes the\n// dimensions have already been checked to be compatible.\nfunc (c *Coordinate) rawDistanceTo(other *Coordinate) float64 {\n\treturn magnitude(diff(c.Vec, other.Vec)) + c.Height + other.Height\n}\n\n// add returns the sum of vec1 and vec2. This assumes the dimensions have\n// already been checked to be compatible.\nfunc add(vec1 []float64, vec2 []float64) []float64 {\n\tret := make([]float64, len(vec1))\n\tfor i := range ret {\n\t\tret[i] = vec1[i] + vec2[i]\n\t}\n\treturn ret\n}\n\n// diff returns the difference between the vec1 and vec2. This assumes the\n// dimensions have already been checked to be compatible.\nfunc diff(vec1 []float64, vec2 []float64) []float64 {\n\tret := make([]float64, len(vec1))\n\tfor i := range ret {\n\t\tret[i] = vec1[i] - vec2[i]\n\t}\n\treturn ret\n}\n\n// mul returns vec multiplied by a scalar factor.\nfunc mul(vec []float64, factor float64) []float64 {\n\tret := make([]float64, len(vec))\n\tfor i := range vec {\n\t\tret[i] = vec[i] * factor\n\t}\n\treturn ret\n}\n\n// magnitude computes the magnitude of the vec.\nfunc magnitude(vec []float64) float64 {\n\tsum := 0.0\n\tfor i := range vec {\n\t\tsum += vec[i] * vec[i]\n\t}\n\treturn math.Sqrt(sum)\n}\n\n// unitVectorAt returns a unit vector pointing at vec1 from vec2. If the two\n// positions are the same then a random unit vector is returned. We also return\n// the distance between the points for use in the later height calculation.\nfunc unitVectorAt(vec1 []float64, vec2 []float64) ([]float64, float64) {\n\tret := diff(vec1, vec2)\n\n\t// If the coordinates aren't on top of each other we can normalize.\n\tif mag := magnitude(ret); mag > zeroThreshold {\n\t\treturn mul(ret, 1.0/mag), mag\n\t}\n\n\t// Otherwise, just return a random unit vector.\n\tfor i := range ret {\n\t\tret[i] = rand.Float64() - 0.5\n\t}\n\tif mag := magnitude(ret); mag > zeroThreshold {\n\t\treturn mul(ret, 1.0/mag), 0.0\n\t}\n\n\t// And finally just give up and make a unit vector along the first\n\t// dimension. This should be exceedingly rare.\n\tret = make([]float64, len(ret))\n\tret[0] = 1.0\n\treturn ret, 0.0\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/serf/coordinate/phantom.go",
    "content": "package coordinate\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"math/rand\"\n\t\"time\"\n)\n\n// GenerateClients returns a slice with nodes number of clients, all with the\n// given config.\nfunc GenerateClients(nodes int, config *Config) ([]*Client, error) {\n\tclients := make([]*Client, nodes)\n\tfor i := range clients {\n\t\tclient, err := NewClient(config)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tclients[i] = client\n\t}\n\treturn clients, nil\n}\n\n// GenerateLine returns a truth matrix as if all the nodes are in a straight linke\n// with the given spacing between them.\nfunc GenerateLine(nodes int, spacing time.Duration) [][]time.Duration {\n\ttruth := make([][]time.Duration, nodes)\n\tfor i := range truth {\n\t\ttruth[i] = make([]time.Duration, nodes)\n\t}\n\n\tfor i := 0; i < nodes; i++ {\n\t\tfor j := i + 1; j < nodes; j++ {\n\t\t\trtt := time.Duration(j-i) * spacing\n\t\t\ttruth[i][j], truth[j][i] = rtt, rtt\n\t\t}\n\t}\n\treturn truth\n}\n\n// GenerateGrid returns a truth matrix as if all the nodes are in a two dimensional\n// grid with the given spacing between them.\nfunc GenerateGrid(nodes int, spacing time.Duration) [][]time.Duration {\n\ttruth := make([][]time.Duration, nodes)\n\tfor i := range truth {\n\t\ttruth[i] = make([]time.Duration, nodes)\n\t}\n\n\tn := int(math.Sqrt(float64(nodes)))\n\tfor i := 0; i < nodes; i++ {\n\t\tfor j := i + 1; j < nodes; j++ {\n\t\t\tx1, y1 := float64(i%n), float64(i/n)\n\t\t\tx2, y2 := float64(j%n), float64(j/n)\n\t\t\tdx, dy := x2-x1, y2-y1\n\t\t\tdist := math.Sqrt(dx*dx + dy*dy)\n\t\t\trtt := time.Duration(dist * float64(spacing))\n\t\t\ttruth[i][j], truth[j][i] = rtt, rtt\n\t\t}\n\t}\n\treturn truth\n}\n\n// GenerateSplit returns a truth matrix as if half the nodes are close together in\n// one location and half the nodes are close together in another. The lan factor\n// is used to separate the nodes locally and the wan factor represents the split\n// between the two sides.\nfunc GenerateSplit(nodes int, lan time.Duration, wan time.Duration) [][]time.Duration {\n\ttruth := make([][]time.Duration, nodes)\n\tfor i := range truth {\n\t\ttruth[i] = make([]time.Duration, nodes)\n\t}\n\n\tsplit := nodes / 2\n\tfor i := 0; i < nodes; i++ {\n\t\tfor j := i + 1; j < nodes; j++ {\n\t\t\trtt := lan\n\t\t\tif (i <= split && j > split) || (i > split && j <= split) {\n\t\t\t\trtt += wan\n\t\t\t}\n\t\t\ttruth[i][j], truth[j][i] = rtt, rtt\n\t\t}\n\t}\n\treturn truth\n}\n\n// GenerateCircle returns a truth matrix for a set of nodes, evenly distributed\n// around a circle with the given radius. The first node is at the \"center\" of the\n// circle because it's equidistant from all the other nodes, but we place it at\n// double the radius, so it should show up above all the other nodes in height.\nfunc GenerateCircle(nodes int, radius time.Duration) [][]time.Duration {\n\ttruth := make([][]time.Duration, nodes)\n\tfor i := range truth {\n\t\ttruth[i] = make([]time.Duration, nodes)\n\t}\n\n\tfor i := 0; i < nodes; i++ {\n\t\tfor j := i + 1; j < nodes; j++ {\n\t\t\tvar rtt time.Duration\n\t\t\tif i == 0 {\n\t\t\t\trtt = 2 * radius\n\t\t\t} else {\n\t\t\t\tt1 := 2.0 * math.Pi * float64(i) / float64(nodes)\n\t\t\t\tx1, y1 := math.Cos(t1), math.Sin(t1)\n\t\t\t\tt2 := 2.0 * math.Pi * float64(j) / float64(nodes)\n\t\t\t\tx2, y2 := math.Cos(t2), math.Sin(t2)\n\t\t\t\tdx, dy := x2-x1, y2-y1\n\t\t\t\tdist := math.Sqrt(dx*dx + dy*dy)\n\t\t\t\trtt = time.Duration(dist * float64(radius))\n\t\t\t}\n\t\t\ttruth[i][j], truth[j][i] = rtt, rtt\n\t\t}\n\t}\n\treturn truth\n}\n\n// GenerateRandom returns a truth matrix for a set of nodes with normally\n// distributed delays, with the given mean and deviation. The RNG is re-seeded\n// so you always get the same matrix for a given size.\nfunc GenerateRandom(nodes int, mean time.Duration, deviation time.Duration) [][]time.Duration {\n\trand.Seed(1)\n\n\ttruth := make([][]time.Duration, nodes)\n\tfor i := range truth {\n\t\ttruth[i] = make([]time.Duration, nodes)\n\t}\n\n\tfor i := 0; i < nodes; i++ {\n\t\tfor j := i + 1; j < nodes; j++ {\n\t\t\trttSeconds := rand.NormFloat64()*deviation.Seconds() + mean.Seconds()\n\t\t\trtt := time.Duration(rttSeconds * secondsToNanoseconds)\n\t\t\ttruth[i][j], truth[j][i] = rtt, rtt\n\t\t}\n\t}\n\treturn truth\n}\n\n// Simulate runs the given number of cycles using the given list of clients and\n// truth matrix. On each cycle, each client will pick a random node and observe\n// the truth RTT, updating its coordinate estimate. The RNG is re-seeded for\n// each simulation run to get deterministic results (for this algorithm and the\n// underlying algorithm which will use random numbers for position vectors when\n// starting out with everything at the origin).\nfunc Simulate(clients []*Client, truth [][]time.Duration, cycles int) {\n\trand.Seed(1)\n\n\tnodes := len(clients)\n\tfor cycle := 0; cycle < cycles; cycle++ {\n\t\tfor i := range clients {\n\t\t\tif j := rand.Intn(nodes); j != i {\n\t\t\t\tc := clients[j].GetCoordinate()\n\t\t\t\trtt := truth[i][j]\n\t\t\t\tnode := fmt.Sprintf(\"node_%d\", j)\n\t\t\t\tclients[i].Update(node, c, rtt)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Stats is returned from the Evaluate function with a summary of the algorithm\n// performance.\ntype Stats struct {\n\tErrorMax float64\n\tErrorAvg float64\n}\n\n// Evaluate uses the coordinates of the given clients to calculate estimated\n// distances and compares them with the given truth matrix, returning summary\n// stats.\nfunc Evaluate(clients []*Client, truth [][]time.Duration) (stats Stats) {\n\tnodes := len(clients)\n\tcount := 0\n\tfor i := 0; i < nodes; i++ {\n\t\tfor j := i + 1; j < nodes; j++ {\n\t\t\test := clients[i].DistanceTo(clients[j].GetCoordinate()).Seconds()\n\t\t\tactual := truth[i][j].Seconds()\n\t\t\terror := math.Abs(est-actual) / actual\n\t\t\tstats.ErrorMax = math.Max(stats.ErrorMax, error)\n\t\t\tstats.ErrorAvg += error\n\t\t\tcount += 1\n\t\t}\n\t}\n\n\tstats.ErrorAvg /= float64(count)\n\tfmt.Printf(\"Error avg=%9.6f max=%9.6f\\n\", stats.ErrorAvg, stats.ErrorMax)\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/LICENSE",
    "content": "Copyright (c) 2015 HashiCorp, Inc.\n\nMozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. \"Contributor\"\n\n     means each individual or legal entity that creates, contributes to the\n     creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n\n     means the combination of the Contributions of others (if any) used by a\n     Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n\n     means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n\n     means Source Code Form to which the initial Contributor has attached the\n     notice in Exhibit A, the Executable Form of such Source Code Form, and\n     Modifications of such Source Code Form, in each case including portions\n     thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n     means\n\n     a. that the initial Contributor has attached the notice described in\n        Exhibit B to the Covered Software; or\n\n     b. that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the terms of\n        a Secondary License.\n\n1.6. \"Executable Form\"\n\n     means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n\n     means a work that combines Covered Software with other material, in a\n     separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n\n     means this document.\n\n1.9. \"Licensable\"\n\n     means having the right to grant, to the maximum extent possible, whether\n     at the time of the initial grant or subsequently, any and all of the\n     rights conveyed by this License.\n\n1.10. \"Modifications\"\n\n     means any of the following:\n\n     a. any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered Software; or\n\n     b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. \"Patent Claims\" of a Contributor\n\n      means any patent claim(s), including without limitation, method,\n      process, and apparatus claims, in any patent Licensable by such\n      Contributor that would be infringed, but for the grant of the License,\n      by the making, using, selling, offering for sale, having made, import,\n      or transfer of either its Contributions or its Contributor Version.\n\n1.12. \"Secondary License\"\n\n      means either the GNU General Public License, Version 2.0, the GNU Lesser\n      General Public License, Version 2.1, the GNU Affero General Public\n      License, Version 3.0, or any later versions of those licenses.\n\n1.13. \"Source Code Form\"\n\n      means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n\n      means an individual or a legal entity exercising rights under this\n      License. For legal entities, \"You\" includes any entity that controls, is\n      controlled by, or is under common control with You. For purposes of this\n      definition, \"control\" means (a) the power, direct or indirect, to cause\n      the direction or management of such entity, whether by contract or\n      otherwise, or (b) ownership of more than fifty percent (50%) of the\n      outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n     Each Contributor hereby grants You a world-wide, royalty-free,\n     non-exclusive license:\n\n     a. under intellectual property rights (other than patent or trademark)\n        Licensable by such Contributor to use, reproduce, make available,\n        modify, display, perform, distribute, and otherwise exploit its\n        Contributions, either on an unmodified basis, with Modifications, or\n        as part of a Larger Work; and\n\n     b. under Patent Claims of such Contributor to make, use, sell, offer for\n        sale, have made, import, and otherwise transfer either its\n        Contributions or its Contributor Version.\n\n2.2. Effective Date\n\n     The licenses granted in Section 2.1 with respect to any Contribution\n     become effective for each Contribution on the date the Contributor first\n     distributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\n     The licenses granted in this Section 2 are the only rights granted under\n     this License. No additional rights or licenses will be implied from the\n     distribution or licensing of Covered Software under this License.\n     Notwithstanding Section 2.1(b) above, no patent license is granted by a\n     Contributor:\n\n     a. for any code that a Contributor has removed from Covered Software; or\n\n     b. for infringements caused by: (i) Your and any other third party's\n        modifications of Covered Software, or (ii) the combination of its\n        Contributions with other software (except as part of its Contributor\n        Version); or\n\n     c. under Patent Claims infringed by Covered Software in the absence of\n        its Contributions.\n\n     This License does not grant any rights in the trademarks, service marks,\n     or logos of any Contributor (except as may be necessary to comply with\n     the notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n     No Contributor makes additional grants as a result of Your choice to\n     distribute the Covered Software under a subsequent version of this\n     License (see Section 10.2) or under the terms of a Secondary License (if\n     permitted under the terms of Section 3.3).\n\n2.5. Representation\n\n     Each Contributor represents that the Contributor believes its\n     Contributions are its original creation(s) or it has sufficient rights to\n     grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n     This License is not intended to limit any rights You have under\n     applicable copyright doctrines of fair use, fair dealing, or other\n     equivalents.\n\n2.7. Conditions\n\n     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n     Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n     All distribution of Covered Software in Source Code Form, including any\n     Modifications that You create or to which You contribute, must be under\n     the terms of this License. You must inform recipients that the Source\n     Code Form of the Covered Software is governed by the terms of this\n     License, and how they can obtain a copy of this License. You may not\n     attempt to alter or restrict the recipients' rights in the Source Code\n     Form.\n\n3.2. Distribution of Executable Form\n\n     If You distribute Covered Software in Executable Form then:\n\n     a. such Covered Software must also be made available in Source Code Form,\n        as described in Section 3.1, and You must inform recipients of the\n        Executable Form how they can obtain a copy of such Source Code Form by\n        reasonable means in a timely manner, at a charge no more than the cost\n        of distribution to the recipient; and\n\n     b. You may distribute such Executable Form under the terms of this\n        License, or sublicense it under different terms, provided that the\n        license for the Executable Form does not attempt to limit or alter the\n        recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n     You may create and distribute a Larger Work under terms of Your choice,\n     provided that You also comply with the requirements of this License for\n     the Covered Software. If the Larger Work is a combination of Covered\n     Software with a work governed by one or more Secondary Licenses, and the\n     Covered Software is not Incompatible With Secondary Licenses, this\n     License permits You to additionally distribute such Covered Software\n     under the terms of such Secondary License(s), so that the recipient of\n     the Larger Work may, at their option, further distribute the Covered\n     Software under the terms of either this License or such Secondary\n     License(s).\n\n3.4. Notices\n\n     You may not remove or alter the substance of any license notices\n     (including copyright notices, patent notices, disclaimers of warranty, or\n     limitations of liability) contained within the Source Code Form of the\n     Covered Software, except that You may alter any license notices to the\n     extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n     You may choose to offer, and to charge a fee for, warranty, support,\n     indemnity or liability obligations to one or more recipients of Covered\n     Software. However, You may do so only on Your own behalf, and not on\n     behalf of any Contributor. You must make it absolutely clear that any\n     such warranty, support, indemnity, or liability obligation is offered by\n     You alone, and You hereby agree to indemnify every Contributor for any\n     liability incurred by such Contributor as a result of warranty, support,\n     indemnity or liability terms You offer. You may include additional\n     disclaimers of warranty and limitations of liability specific to any\n     jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n   If it is impossible for You to comply with any of the terms of this License\n   with respect to some or all of the Covered Software due to statute,\n   judicial order, or regulation then You must: (a) comply with the terms of\n   this License to the maximum extent possible; and (b) describe the\n   limitations and the code they affect. Such description must be placed in a\n   text file included with all distributions of the Covered Software under\n   this License. Except to the extent prohibited by statute or regulation,\n   such description must be sufficiently detailed for a recipient of ordinary\n   skill to be able to understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n     fail to comply with any of its terms. However, if You become compliant,\n     then the rights granted under this License from a particular Contributor\n     are reinstated (a) provisionally, unless and until such Contributor\n     explicitly and finally terminates Your grants, and (b) on an ongoing\n     basis, if such Contributor fails to notify You of the non-compliance by\n     some reasonable means prior to 60 days after You have come back into\n     compliance. Moreover, Your grants from a particular Contributor are\n     reinstated on an ongoing basis if such Contributor notifies You of the\n     non-compliance by some reasonable means, this is the first time You have\n     received notice of non-compliance with this License from such\n     Contributor, and You become compliant prior to 30 days after Your receipt\n     of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n     infringement claim (excluding declaratory judgment actions,\n     counter-claims, and cross-claims) alleging that a Contributor Version\n     directly or indirectly infringes any patent, then the rights granted to\n     You by any and all Contributors for the Covered Software under Section\n     2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n     license agreements (excluding distributors and resellers) which have been\n     validly granted by You or Your distributors under this License prior to\n     termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n   Covered Software is provided under this License on an \"as is\" basis,\n   without warranty of any kind, either expressed, implied, or statutory,\n   including, without limitation, warranties that the Covered Software is free\n   of defects, merchantable, fit for a particular purpose or non-infringing.\n   The entire risk as to the quality and performance of the Covered Software\n   is with You. Should any Covered Software prove defective in any respect,\n   You (not any Contributor) assume the cost of any necessary servicing,\n   repair, or correction. This disclaimer of warranty constitutes an essential\n   part of this License. No use of  any Covered Software is authorized under\n   this License except under this disclaimer.\n\n7. Limitation of Liability\n\n   Under no circumstances and under no legal theory, whether tort (including\n   negligence), contract, or otherwise, shall any Contributor, or anyone who\n   distributes Covered Software as permitted above, be liable to You for any\n   direct, indirect, special, incidental, or consequential damages of any\n   character including, without limitation, damages for lost profits, loss of\n   goodwill, work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses, even if such party shall have been\n   informed of the possibility of such damages. This limitation of liability\n   shall not apply to liability for death or personal injury resulting from\n   such party's negligence to the extent applicable law prohibits such\n   limitation. Some jurisdictions do not allow the exclusion or limitation of\n   incidental or consequential damages, so this exclusion and limitation may\n   not apply to You.\n\n8. Litigation\n\n   Any litigation relating to this License may be brought only in the courts\n   of a jurisdiction where the defendant maintains its principal place of\n   business and such litigation shall be governed by laws of that\n   jurisdiction, without reference to its conflict-of-law provisions. Nothing\n   in this Section shall prevent a party's ability to bring cross-claims or\n   counter-claims.\n\n9. Miscellaneous\n\n   This License represents the complete agreement concerning the subject\n   matter hereof. If any provision of this License is held to be\n   unenforceable, such provision shall be reformed only to the extent\n   necessary to make it enforceable. Any law or regulation which provides that\n   the language of a contract shall be construed against the drafter shall not\n   be used to construe this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n      Mozilla Foundation is the license steward. Except as provided in Section\n      10.3, no one other than the license steward has the right to modify or\n      publish new versions of this License. Each version will be given a\n      distinguishing version number.\n\n10.2. Effect of New Versions\n\n      You may distribute the Covered Software under the terms of the version\n      of the License under which You originally received the Covered Software,\n      or under the terms of any subsequent version published by the license\n      steward.\n\n10.3. Modified Versions\n\n      If you create software not governed by this License, and you want to\n      create a new license for such software, you may create and use a\n      modified version of this License if you rename the license and remove\n      any references to the name of the license steward (except to note that\n      such modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\n      Licenses If You choose to distribute Source Code Form that is\n      Incompatible With Secondary Licenses under the terms of this version of\n      the License, the notice described in Exhibit B of this License must be\n      attached.\n\nExhibit A - Source Code Form License Notice\n\n      This Source Code Form is subject to the\n      terms of the Mozilla Public License, v.\n      2.0. If a copy of the MPL was not\n      distributed with this file, You can\n      obtain one at\n      http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file,\nthen You may include the notice in a location (such as a LICENSE file in a\nrelevant directory) where a recipient would be likely to look for such a\nnotice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n\n      This Source Code Form is \"Incompatible\n      With Secondary Licenses\", as defined by\n      the Mozilla Public License, v. 2.0.\n\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/README.md",
    "content": "Vault API\n=================\n\nThis provides the `github.com/hashicorp/vault/api` package which contains code useful for interacting with a Vault server.\n\nFor examples of how to use this module, see the [vault-examples](https://github.com/hashicorp/vault-examples) repo.\nFor a step-by-step walkthrough on using these client libraries, see the [developer quickstart](https://developer.hashicorp.com/vault/docs/get-started/developer-qs).\n\n[![GoDoc](https://godoc.org/github.com/hashicorp/vault/api?status.png)](https://godoc.org/github.com/hashicorp/vault/api)"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/auth.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"fmt\"\n)\n\n// Auth is used to perform credential backend related operations.\ntype Auth struct {\n\tc *Client\n}\n\ntype AuthMethod interface {\n\tLogin(ctx context.Context, client *Client) (*Secret, error)\n}\n\n// Auth is used to return the client for credential-backend API calls.\nfunc (c *Client) Auth() *Auth {\n\treturn &Auth{c: c}\n}\n\n// Login sets up the required request body for login requests to the given auth\n// method's /login API endpoint, and then performs a write to it. After a\n// successful login, this method will automatically set the client's token to\n// the login response's ClientToken as well.\n//\n// The Secret returned is the authentication secret, which if desired can be\n// passed as input to the NewLifetimeWatcher method in order to start\n// automatically renewing the token.\nfunc (a *Auth) Login(ctx context.Context, authMethod AuthMethod) (*Secret, error) {\n\tif authMethod == nil {\n\t\treturn nil, fmt.Errorf(\"no auth method provided for login\")\n\t}\n\treturn a.login(ctx, authMethod)\n}\n\n// MFALogin is a wrapper that helps satisfy Vault's MFA implementation.\n// If optional credentials are provided a single-phase login will be attempted\n// and the resulting Secret will contain a ClientToken if the authentication is successful.\n// The client's token will also be set accordingly.\n//\n// If no credentials are provided a two-phase MFA login will be assumed and the resulting\n// Secret will have a MFARequirement containing the MFARequestID to be used in a follow-up\n// call to `sys/mfa/validate` or by passing it to the method (*Auth).MFAValidate.\nfunc (a *Auth) MFALogin(ctx context.Context, authMethod AuthMethod, creds ...string) (*Secret, error) {\n\tif len(creds) > 0 {\n\t\ta.c.SetMFACreds(creds)\n\t\treturn a.login(ctx, authMethod)\n\t}\n\n\treturn a.twoPhaseMFALogin(ctx, authMethod)\n}\n\n// MFAValidate validates an MFA request using the appropriate payload and a secret containing\n// Auth.MFARequirement, like the one returned by MFALogin when credentials are not provided.\n// Upon successful validation the client token will be set accordingly.\n//\n// The Secret returned is the authentication secret, which if desired can be\n// passed as input to the NewLifetimeWatcher method in order to start\n// automatically renewing the token.\nfunc (a *Auth) MFAValidate(ctx context.Context, mfaSecret *Secret, payload map[string]interface{}) (*Secret, error) {\n\tif mfaSecret == nil || mfaSecret.Auth == nil || mfaSecret.Auth.MFARequirement == nil {\n\t\treturn nil, fmt.Errorf(\"secret does not contain MFARequirements\")\n\t}\n\n\ts, err := a.c.Sys().MFAValidateWithContext(ctx, mfaSecret.Auth.MFARequirement.MFARequestID, payload)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn a.checkAndSetToken(s)\n}\n\n// login performs the (*AuthMethod).Login() with the configured client and checks that a ClientToken is returned\nfunc (a *Auth) login(ctx context.Context, authMethod AuthMethod) (*Secret, error) {\n\ts, err := authMethod.Login(ctx, a.c)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to log in to auth method: %w\", err)\n\t}\n\n\treturn a.checkAndSetToken(s)\n}\n\n// twoPhaseMFALogin performs the (*AuthMethod).Login() with the configured client\n// and checks that an MFARequirement is returned\nfunc (a *Auth) twoPhaseMFALogin(ctx context.Context, authMethod AuthMethod) (*Secret, error) {\n\ts, err := authMethod.Login(ctx, a.c)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to log in: %w\", err)\n\t}\n\tif s == nil || s.Auth == nil || s.Auth.MFARequirement == nil {\n\t\tif s != nil {\n\t\t\ts.Warnings = append(s.Warnings, \"expected secret to contain MFARequirements\")\n\t\t}\n\t\treturn s, fmt.Errorf(\"assumed two-phase MFA login, returned secret is missing MFARequirements\")\n\t}\n\n\treturn s, nil\n}\n\nfunc (a *Auth) checkAndSetToken(s *Secret) (*Secret, error) {\n\tif s == nil || s.Auth == nil || s.Auth.ClientToken == \"\" {\n\t\tif s != nil {\n\t\t\ts.Warnings = append(s.Warnings, \"expected secret to contain ClientToken\")\n\t\t}\n\t\treturn s, fmt.Errorf(\"response did not return ClientToken, client token not set\")\n\t}\n\n\ta.c.SetToken(s.Auth.ClientToken)\n\n\treturn s, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/auth_token.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\n// TokenAuth is used to perform token backend operations on Vault\ntype TokenAuth struct {\n\tc *Client\n}\n\n// Token is used to return the client for token-backend API calls\nfunc (a *Auth) Token() *TokenAuth {\n\treturn &TokenAuth{c: a.c}\n}\n\nfunc (c *TokenAuth) Create(opts *TokenCreateRequest) (*Secret, error) {\n\treturn c.CreateWithContext(context.Background(), opts)\n}\n\nfunc (c *TokenAuth) CreateWithContext(ctx context.Context, opts *TokenCreateRequest) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPost, \"/v1/auth/token/create\")\n\tif err := r.SetJSONBody(opts); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *TokenAuth) CreateOrphan(opts *TokenCreateRequest) (*Secret, error) {\n\treturn c.CreateOrphanWithContext(context.Background(), opts)\n}\n\nfunc (c *TokenAuth) CreateOrphanWithContext(ctx context.Context, opts *TokenCreateRequest) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPost, \"/v1/auth/token/create-orphan\")\n\tif err := r.SetJSONBody(opts); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *TokenAuth) CreateWithRole(opts *TokenCreateRequest, roleName string) (*Secret, error) {\n\treturn c.CreateWithRoleWithContext(context.Background(), opts, roleName)\n}\n\nfunc (c *TokenAuth) CreateWithRoleWithContext(ctx context.Context, opts *TokenCreateRequest, roleName string) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPost, \"/v1/auth/token/create/\"+roleName)\n\tif err := r.SetJSONBody(opts); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *TokenAuth) Lookup(token string) (*Secret, error) {\n\treturn c.LookupWithContext(context.Background(), token)\n}\n\nfunc (c *TokenAuth) LookupWithContext(ctx context.Context, token string) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPost, \"/v1/auth/token/lookup\")\n\tif err := r.SetJSONBody(map[string]interface{}{\n\t\t\"token\": token,\n\t}); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *TokenAuth) LookupAccessor(accessor string) (*Secret, error) {\n\treturn c.LookupAccessorWithContext(context.Background(), accessor)\n}\n\nfunc (c *TokenAuth) LookupAccessorWithContext(ctx context.Context, accessor string) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPost, \"/v1/auth/token/lookup-accessor\")\n\tif err := r.SetJSONBody(map[string]interface{}{\n\t\t\"accessor\": accessor,\n\t}); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *TokenAuth) LookupSelf() (*Secret, error) {\n\treturn c.LookupSelfWithContext(context.Background())\n}\n\nfunc (c *TokenAuth) LookupSelfWithContext(ctx context.Context) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/auth/token/lookup-self\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *TokenAuth) RenewAccessor(accessor string, increment int) (*Secret, error) {\n\treturn c.RenewAccessorWithContext(context.Background(), accessor, increment)\n}\n\nfunc (c *TokenAuth) RenewAccessorWithContext(ctx context.Context, accessor string, increment int) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPost, \"/v1/auth/token/renew-accessor\")\n\tif err := r.SetJSONBody(map[string]interface{}{\n\t\t\"accessor\":  accessor,\n\t\t\"increment\": increment,\n\t}); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *TokenAuth) Renew(token string, increment int) (*Secret, error) {\n\treturn c.RenewWithContext(context.Background(), token, increment)\n}\n\nfunc (c *TokenAuth) RenewWithContext(ctx context.Context, token string, increment int) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/auth/token/renew\")\n\tif err := r.SetJSONBody(map[string]interface{}{\n\t\t\"token\":     token,\n\t\t\"increment\": increment,\n\t}); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *TokenAuth) RenewSelf(increment int) (*Secret, error) {\n\treturn c.RenewSelfWithContext(context.Background(), increment)\n}\n\nfunc (c *TokenAuth) RenewSelfWithContext(ctx context.Context, increment int) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/auth/token/renew-self\")\n\n\tbody := map[string]interface{}{\"increment\": increment}\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n\n// RenewTokenAsSelf wraps RenewTokenAsSelfWithContext using context.Background.\nfunc (c *TokenAuth) RenewTokenAsSelf(token string, increment int) (*Secret, error) {\n\treturn c.RenewTokenAsSelfWithContext(context.Background(), token, increment)\n}\n\n// RenewTokenAsSelfWithContext behaves like renew-self, but authenticates using a provided\n// token instead of the token attached to the client.\nfunc (c *TokenAuth) RenewTokenAsSelfWithContext(ctx context.Context, token string, increment int) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/auth/token/renew-self\")\n\tr.ClientToken = token\n\n\tbody := map[string]interface{}{\"increment\": increment}\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n\n// RevokeAccessor wraps RevokeAccessorWithContext using context.Background.\nfunc (c *TokenAuth) RevokeAccessor(accessor string) error {\n\treturn c.RevokeAccessorWithContext(context.Background(), accessor)\n}\n\n// RevokeAccessorWithContext revokes a token associated with the given accessor\n// along with all the child tokens.\nfunc (c *TokenAuth) RevokeAccessorWithContext(ctx context.Context, accessor string) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPost, \"/v1/auth/token/revoke-accessor\")\n\tif err := r.SetJSONBody(map[string]interface{}{\n\t\t\"accessor\": accessor,\n\t}); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n\n// RevokeOrphan wraps RevokeOrphanWithContext using context.Background.\nfunc (c *TokenAuth) RevokeOrphan(token string) error {\n\treturn c.RevokeOrphanWithContext(context.Background(), token)\n}\n\n// RevokeOrphanWithContext revokes a token without revoking the tree underneath it (so\n// child tokens are orphaned rather than revoked)\nfunc (c *TokenAuth) RevokeOrphanWithContext(ctx context.Context, token string) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/auth/token/revoke-orphan\")\n\tif err := r.SetJSONBody(map[string]interface{}{\n\t\t\"token\": token,\n\t}); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n\n// RevokeSelf wraps RevokeSelfWithContext using context.Background.\nfunc (c *TokenAuth) RevokeSelf(token string) error {\n\treturn c.RevokeSelfWithContext(context.Background(), token)\n}\n\n// RevokeSelfWithContext revokes the token making the call. The `token` parameter is kept\n// for backwards compatibility but is ignored; only the client's set token has\n// an effect.\nfunc (c *TokenAuth) RevokeSelfWithContext(ctx context.Context, token string) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/auth/token/revoke-self\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n\n// RevokeTree wraps RevokeTreeWithContext using context.Background.\nfunc (c *TokenAuth) RevokeTree(token string) error {\n\treturn c.RevokeTreeWithContext(context.Background(), token)\n}\n\n// RevokeTreeWithContext is the \"normal\" revoke operation that revokes the given token and\n// the entire tree underneath -- all of its child tokens, their child tokens,\n// etc.\nfunc (c *TokenAuth) RevokeTreeWithContext(ctx context.Context, token string) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/auth/token/revoke\")\n\tif err := r.SetJSONBody(map[string]interface{}{\n\t\t\"token\": token,\n\t}); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n\n// TokenCreateRequest is the options structure for creating a token.\ntype TokenCreateRequest struct {\n\tID              string            `json:\"id,omitempty\"`\n\tPolicies        []string          `json:\"policies,omitempty\"`\n\tMetadata        map[string]string `json:\"meta,omitempty\"`\n\tLease           string            `json:\"lease,omitempty\"`\n\tTTL             string            `json:\"ttl,omitempty\"`\n\tExplicitMaxTTL  string            `json:\"explicit_max_ttl,omitempty\"`\n\tPeriod          string            `json:\"period,omitempty\"`\n\tNoParent        bool              `json:\"no_parent,omitempty\"`\n\tNoDefaultPolicy bool              `json:\"no_default_policy,omitempty\"`\n\tDisplayName     string            `json:\"display_name\"`\n\tNumUses         int               `json:\"num_uses\"`\n\tRenewable       *bool             `json:\"renewable,omitempty\"`\n\tType            string            `json:\"type\"`\n\tEntityAlias     string            `json:\"entity_alias\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/client.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"crypto/hmac\"\n\t\"crypto/sha256\"\n\t\"crypto/tls\"\n\t\"encoding/base64\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"path\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\t\"unicode\"\n\n\t\"github.com/hashicorp/errwrap\"\n\t\"github.com/hashicorp/go-cleanhttp\"\n\t\"github.com/hashicorp/go-retryablehttp\"\n\t\"github.com/hashicorp/go-rootcerts\"\n\t\"github.com/hashicorp/go-secure-stdlib/parseutil\"\n\t\"github.com/hashicorp/go-secure-stdlib/strutil\"\n\t\"golang.org/x/net/http2\"\n\t\"golang.org/x/time/rate\"\n)\n\nconst (\n\tEnvVaultAddress          = \"VAULT_ADDR\"\n\tEnvVaultAgentAddr        = \"VAULT_AGENT_ADDR\"\n\tEnvVaultCACert           = \"VAULT_CACERT\"\n\tEnvVaultCACertBytes      = \"VAULT_CACERT_BYTES\"\n\tEnvVaultCAPath           = \"VAULT_CAPATH\"\n\tEnvVaultClientCert       = \"VAULT_CLIENT_CERT\"\n\tEnvVaultClientKey        = \"VAULT_CLIENT_KEY\"\n\tEnvVaultClientTimeout    = \"VAULT_CLIENT_TIMEOUT\"\n\tEnvVaultSRVLookup        = \"VAULT_SRV_LOOKUP\"\n\tEnvVaultSkipVerify       = \"VAULT_SKIP_VERIFY\"\n\tEnvVaultNamespace        = \"VAULT_NAMESPACE\"\n\tEnvVaultTLSServerName    = \"VAULT_TLS_SERVER_NAME\"\n\tEnvVaultWrapTTL          = \"VAULT_WRAP_TTL\"\n\tEnvVaultMaxRetries       = \"VAULT_MAX_RETRIES\"\n\tEnvVaultToken            = \"VAULT_TOKEN\"\n\tEnvVaultMFA              = \"VAULT_MFA\"\n\tEnvRateLimit             = \"VAULT_RATE_LIMIT\"\n\tEnvHTTPProxy             = \"VAULT_HTTP_PROXY\"\n\tEnvVaultProxyAddr        = \"VAULT_PROXY_ADDR\"\n\tEnvVaultDisableRedirects = \"VAULT_DISABLE_REDIRECTS\"\n\tHeaderIndex              = \"X-Vault-Index\"\n\tHeaderForward            = \"X-Vault-Forward\"\n\tHeaderInconsistent       = \"X-Vault-Inconsistent\"\n\n\t// NamespaceHeaderName is the header set to specify which namespace the\n\t// request is indented for.\n\tNamespaceHeaderName = \"X-Vault-Namespace\"\n\n\t// AuthHeaderName is the name of the header containing the token.\n\tAuthHeaderName = \"X-Vault-Token\"\n\n\t// RequestHeaderName is the name of the header used by the Agent for\n\t// SSRF protection.\n\tRequestHeaderName = \"X-Vault-Request\"\n\n\tTLSErrorString = \"This error usually means that the server is running with TLS disabled\\n\" +\n\t\t\"but the client is configured to use TLS. Please either enable TLS\\n\" +\n\t\t\"on the server or run the client with -address set to an address\\n\" +\n\t\t\"that uses the http protocol:\\n\\n\" +\n\t\t\"    vault <command> -address http://<address>\\n\\n\" +\n\t\t\"You can also set the VAULT_ADDR environment variable:\\n\\n\\n\" +\n\t\t\"    VAULT_ADDR=http://<address> vault <command>\\n\\n\" +\n\t\t\"where <address> is replaced by the actual address to the server.\"\n)\n\n// Deprecated values\nconst (\n\tEnvVaultAgentAddress = \"VAULT_AGENT_ADDR\"\n\tEnvVaultInsecure     = \"VAULT_SKIP_VERIFY\"\n)\n\n// WrappingLookupFunc is a function that, given an HTTP verb and a path,\n// returns an optional string duration to be used for response wrapping (e.g.\n// \"15s\", or simply \"15\"). The path will not begin with \"/v1/\" or \"v1/\" or \"/\",\n// however, end-of-path forward slashes are not trimmed, so must match your\n// called path precisely. Response wrapping will only be used when the return\n// value is not the empty string.\ntype WrappingLookupFunc func(operation, path string) string\n\n// Config is used to configure the creation of the client.\ntype Config struct {\n\tmodifyLock sync.RWMutex\n\n\t// Address is the address of the Vault server. This should be a complete\n\t// URL such as \"http://vault.example.com\". If you need a custom SSL\n\t// cert or want to enable insecure mode, you need to specify a custom\n\t// HttpClient.\n\tAddress string\n\n\t// AgentAddress is the address of the local Vault agent. This should be a\n\t// complete URL such as \"http://vault.example.com\".\n\tAgentAddress string\n\n\t// HttpClient is the HTTP client to use. Vault sets sane defaults for the\n\t// http.Client and its associated http.Transport created in DefaultConfig.\n\t// If you must modify Vault's defaults, it is suggested that you start with\n\t// that client and modify as needed rather than start with an empty client\n\t// (or http.DefaultClient).\n\tHttpClient *http.Client\n\n\t// MinRetryWait controls the minimum time to wait before retrying when a 5xx\n\t// error occurs. Defaults to 1000 milliseconds.\n\tMinRetryWait time.Duration\n\n\t// MaxRetryWait controls the maximum time to wait before retrying when a 5xx\n\t// error occurs. Defaults to 1500 milliseconds.\n\tMaxRetryWait time.Duration\n\n\t// MaxRetries controls the maximum number of times to retry when a 5xx\n\t// error occurs. Set to 0 to disable retrying. Defaults to 2 (for a total\n\t// of three tries).\n\tMaxRetries int\n\n\t// Timeout, given a non-negative value, will apply the request timeout\n\t// to each request function unless an earlier deadline is passed to the\n\t// request function through context.Context. Note that this timeout is\n\t// not applicable to Logical().ReadRaw* (raw response) functions.\n\t// Defaults to 60 seconds.\n\tTimeout time.Duration\n\n\t// If there is an error when creating the configuration, this will be the\n\t// error\n\tError error\n\n\t// The Backoff function to use; a default is used if not provided\n\tBackoff retryablehttp.Backoff\n\n\t// The CheckRetry function to use; a default is used if not provided\n\tCheckRetry retryablehttp.CheckRetry\n\n\t// Logger is the leveled logger to provide to the retryable HTTP client.\n\tLogger retryablehttp.LeveledLogger\n\n\t// Limiter is the rate limiter used by the client.\n\t// If this pointer is nil, then there will be no limit set.\n\t// In contrast, if this pointer is set, even to an empty struct,\n\t// then that limiter will be used. Note that an empty Limiter\n\t// is equivalent blocking all events.\n\tLimiter *rate.Limiter\n\n\t// OutputCurlString causes the actual request to return an error of type\n\t// *OutputStringError. Type asserting the error message will allow\n\t// fetching a cURL-compatible string for the operation.\n\t//\n\t// Note: It is not thread-safe to set this and make concurrent requests\n\t// with the same client. Cloning a client will not clone this value.\n\tOutputCurlString bool\n\n\t// OutputPolicy causes the actual request to return an error of type\n\t// *OutputPolicyError. Type asserting the error message will display\n\t// an example of the required policy HCL needed for the operation.\n\t//\n\t// Note: It is not thread-safe to set this and make concurrent requests\n\t// with the same client. Cloning a client will not clone this value.\n\tOutputPolicy bool\n\n\t// curlCACert, curlCAPath, curlClientCert and curlClientKey are used to keep\n\t// track of the name of the TLS certs and keys when OutputCurlString is set.\n\t// Cloning a client will also not clone those values.\n\tcurlCACert, curlCAPath        string\n\tcurlClientCert, curlClientKey string\n\n\t// SRVLookup enables the client to lookup the host through DNS SRV lookup\n\tSRVLookup bool\n\n\t// CloneHeaders ensures that the source client's headers are copied to\n\t// its clone.\n\tCloneHeaders bool\n\n\t// CloneToken from parent.\n\tCloneToken bool\n\n\t// CloneTLSConfig from parent (tls.Config).\n\tCloneTLSConfig bool\n\n\t// ReadYourWrites ensures isolated read-after-write semantics by\n\t// providing discovered cluster replication states in each request.\n\t// The shared state is automatically propagated to all Client clones.\n\t//\n\t// Note: Careful consideration should be made prior to enabling this setting\n\t// since there will be a performance penalty paid upon each request.\n\t// This feature requires Enterprise server-side.\n\tReadYourWrites bool\n\n\t// DisableRedirects when set to true, will prevent the client from\n\t// automatically following a (single) redirect response to its initial\n\t// request. This behavior may be desirable if using Vault CLI on the server\n\t// side.\n\t//\n\t// Note: Disabling redirect following behavior could cause issues with\n\t// commands such as 'vault operator raft snapshot' as this redirects to the\n\t// primary node.\n\tDisableRedirects bool\n\tclientTLSConfig  *tls.Config\n}\n\n// TLSConfig contains the parameters needed to configure TLS on the HTTP client\n// used to communicate with Vault.\ntype TLSConfig struct {\n\t// CACert is the path to a PEM-encoded CA cert file to use to verify the\n\t// Vault server SSL certificate. It takes precedence over CACertBytes\n\t// and CAPath.\n\tCACert string\n\n\t// CACertBytes is a PEM-encoded certificate or bundle. It takes precedence\n\t// over CAPath.\n\tCACertBytes []byte\n\n\t// CAPath is the path to a directory of PEM-encoded CA cert files to verify\n\t// the Vault server SSL certificate.\n\tCAPath string\n\n\t// ClientCert is the path to the certificate for Vault communication\n\tClientCert string\n\n\t// ClientKey is the path to the private key for Vault communication\n\tClientKey string\n\n\t// TLSServerName, if set, is used to set the SNI host when connecting via\n\t// TLS.\n\tTLSServerName string\n\n\t// Insecure enables or disables SSL verification\n\tInsecure bool\n}\n\n// DefaultConfig returns a default configuration for the client. It is\n// safe to modify the return value of this function.\n//\n// The default Address is https://127.0.0.1:8200, but this can be overridden by\n// setting the `VAULT_ADDR` environment variable.\n//\n// If an error is encountered, the Error field on the returned *Config will be populated with the specific error.\nfunc DefaultConfig() *Config {\n\tconfig := &Config{\n\t\tAddress:      \"https://127.0.0.1:8200\",\n\t\tHttpClient:   cleanhttp.DefaultPooledClient(),\n\t\tTimeout:      time.Second * 60,\n\t\tMinRetryWait: time.Millisecond * 1000,\n\t\tMaxRetryWait: time.Millisecond * 1500,\n\t\tMaxRetries:   2,\n\t\tBackoff:      retryablehttp.LinearJitterBackoff,\n\t}\n\n\ttransport := config.HttpClient.Transport.(*http.Transport)\n\ttransport.TLSHandshakeTimeout = 10 * time.Second\n\ttransport.TLSClientConfig = &tls.Config{\n\t\tMinVersion: tls.VersionTLS12,\n\t}\n\tif err := http2.ConfigureTransport(transport); err != nil {\n\t\tconfig.Error = err\n\t\treturn config\n\t}\n\n\tif err := config.ReadEnvironment(); err != nil {\n\t\tconfig.Error = err\n\t\treturn config\n\t}\n\n\t// Ensure redirects are not automatically followed\n\t// Note that this is sane for the API client as it has its own\n\t// redirect handling logic (and thus also for command/meta),\n\t// but in e.g. http_test actual redirect handling is necessary\n\tconfig.HttpClient.CheckRedirect = func(req *http.Request, via []*http.Request) error {\n\t\t// Returning this value causes the Go net library to not close the\n\t\t// response body and to nil out the error. Otherwise retry clients may\n\t\t// try three times on every redirect because it sees an error from this\n\t\t// function (to prevent redirects) passing through to it.\n\t\treturn http.ErrUseLastResponse\n\t}\n\n\treturn config\n}\n\n// configureTLS is a lock free version of ConfigureTLS that can be used in\n// ReadEnvironment where the lock is already hold\nfunc (c *Config) configureTLS(t *TLSConfig) error {\n\tif c.HttpClient == nil {\n\t\tc.HttpClient = DefaultConfig().HttpClient\n\t}\n\n\ttransport, ok := c.HttpClient.Transport.(*http.Transport)\n\tif !ok {\n\t\treturn fmt.Errorf(\n\t\t\t\"unsupported HTTPClient transport type %T\", c.HttpClient.Transport)\n\t}\n\n\tclientTLSConfig := transport.TLSClientConfig\n\n\tvar clientCert tls.Certificate\n\tfoundClientCert := false\n\n\tswitch {\n\tcase t.ClientCert != \"\" && t.ClientKey != \"\":\n\t\tvar err error\n\t\tclientCert, err = tls.LoadX509KeyPair(t.ClientCert, t.ClientKey)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoundClientCert = true\n\t\tc.curlClientCert = t.ClientCert\n\t\tc.curlClientKey = t.ClientKey\n\tcase t.ClientCert != \"\" || t.ClientKey != \"\":\n\t\treturn fmt.Errorf(\"both client cert and client key must be provided\")\n\t}\n\n\tif t.CACert != \"\" || len(t.CACertBytes) != 0 || t.CAPath != \"\" {\n\t\tc.curlCACert = t.CACert\n\t\tc.curlCAPath = t.CAPath\n\t\trootConfig := &rootcerts.Config{\n\t\t\tCAFile:        t.CACert,\n\t\t\tCACertificate: t.CACertBytes,\n\t\t\tCAPath:        t.CAPath,\n\t\t}\n\t\tif err := rootcerts.ConfigureTLS(clientTLSConfig, rootConfig); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif t.Insecure {\n\t\tclientTLSConfig.InsecureSkipVerify = true\n\t}\n\n\tif foundClientCert {\n\t\t// We use this function to ignore the server's preferential list of\n\t\t// CAs, otherwise any CA used for the cert auth backend must be in the\n\t\t// server's CA pool\n\t\tclientTLSConfig.GetClientCertificate = func(*tls.CertificateRequestInfo) (*tls.Certificate, error) {\n\t\t\treturn &clientCert, nil\n\t\t}\n\t}\n\n\tif t.TLSServerName != \"\" {\n\t\tclientTLSConfig.ServerName = t.TLSServerName\n\t}\n\tc.clientTLSConfig = clientTLSConfig\n\n\treturn nil\n}\n\nfunc (c *Config) TLSConfig() *tls.Config {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\treturn c.clientTLSConfig.Clone()\n}\n\n// ConfigureTLS takes a set of TLS configurations and applies those to the\n// HTTP client.\nfunc (c *Config) ConfigureTLS(t *TLSConfig) error {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\n\treturn c.configureTLS(t)\n}\n\n// ReadEnvironment reads configuration information from the environment. If\n// there is an error, no configuration value is updated.\nfunc (c *Config) ReadEnvironment() error {\n\tvar envAddress string\n\tvar envAgentAddress string\n\tvar envCACert string\n\tvar envCACertBytes []byte\n\tvar envCAPath string\n\tvar envClientCert string\n\tvar envClientKey string\n\tvar envClientTimeout time.Duration\n\tvar envInsecure bool\n\tvar envTLSServerName string\n\tvar envMaxRetries *uint64\n\tvar envSRVLookup bool\n\tvar limit *rate.Limiter\n\tvar envVaultProxy string\n\tvar envVaultDisableRedirects bool\n\n\t// Parse the environment variables\n\tif v := os.Getenv(EnvVaultAddress); v != \"\" {\n\t\tenvAddress = v\n\t}\n\tif v := os.Getenv(EnvVaultAgentAddr); v != \"\" {\n\t\tenvAgentAddress = v\n\t}\n\tif v := os.Getenv(EnvVaultMaxRetries); v != \"\" {\n\t\tmaxRetries, err := strconv.ParseUint(v, 10, 32)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tenvMaxRetries = &maxRetries\n\t}\n\tif v := os.Getenv(EnvVaultCACert); v != \"\" {\n\t\tenvCACert = v\n\t}\n\tif v := os.Getenv(EnvVaultCACertBytes); v != \"\" {\n\t\tenvCACertBytes = []byte(v)\n\t}\n\tif v := os.Getenv(EnvVaultCAPath); v != \"\" {\n\t\tenvCAPath = v\n\t}\n\tif v := os.Getenv(EnvVaultClientCert); v != \"\" {\n\t\tenvClientCert = v\n\t}\n\tif v := os.Getenv(EnvVaultClientKey); v != \"\" {\n\t\tenvClientKey = v\n\t}\n\tif v := os.Getenv(EnvRateLimit); v != \"\" {\n\t\trateLimit, burstLimit, err := parseRateLimit(v)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlimit = rate.NewLimiter(rate.Limit(rateLimit), burstLimit)\n\t}\n\tif t := os.Getenv(EnvVaultClientTimeout); t != \"\" {\n\t\tclientTimeout, err := parseutil.ParseDurationSecond(t)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"could not parse %q\", EnvVaultClientTimeout)\n\t\t}\n\t\tenvClientTimeout = clientTimeout\n\t}\n\tif v := os.Getenv(EnvVaultSkipVerify); v != \"\" {\n\t\tvar err error\n\t\tenvInsecure, err = strconv.ParseBool(v)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"could not parse %s\", EnvVaultSkipVerify)\n\t\t}\n\t}\n\tif v := os.Getenv(EnvVaultSRVLookup); v != \"\" {\n\t\tvar err error\n\t\tenvSRVLookup, err = strconv.ParseBool(v)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"could not parse %s\", EnvVaultSRVLookup)\n\t\t}\n\t}\n\n\tif v := os.Getenv(EnvVaultTLSServerName); v != \"\" {\n\t\tenvTLSServerName = v\n\t}\n\n\tif v := os.Getenv(EnvHTTPProxy); v != \"\" {\n\t\tenvVaultProxy = v\n\t}\n\n\t// VAULT_PROXY_ADDR supersedes VAULT_HTTP_PROXY\n\tif v := os.Getenv(EnvVaultProxyAddr); v != \"\" {\n\t\tenvVaultProxy = v\n\t}\n\n\tif v := os.Getenv(EnvVaultDisableRedirects); v != \"\" {\n\t\tvar err error\n\t\tenvVaultDisableRedirects, err = strconv.ParseBool(v)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"could not parse %s\", EnvVaultDisableRedirects)\n\t\t}\n\n\t\tc.DisableRedirects = envVaultDisableRedirects\n\t}\n\n\t// Configure the HTTP clients TLS configuration.\n\tt := &TLSConfig{\n\t\tCACert:        envCACert,\n\t\tCACertBytes:   envCACertBytes,\n\t\tCAPath:        envCAPath,\n\t\tClientCert:    envClientCert,\n\t\tClientKey:     envClientKey,\n\t\tTLSServerName: envTLSServerName,\n\t\tInsecure:      envInsecure,\n\t}\n\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\n\tc.SRVLookup = envSRVLookup\n\tc.Limiter = limit\n\n\tif err := c.configureTLS(t); err != nil {\n\t\treturn err\n\t}\n\n\tif envAddress != \"\" {\n\t\tc.Address = envAddress\n\t}\n\n\tif envAgentAddress != \"\" {\n\t\tc.AgentAddress = envAgentAddress\n\t}\n\n\tif envMaxRetries != nil {\n\t\tc.MaxRetries = int(*envMaxRetries)\n\t}\n\n\tif envClientTimeout != 0 {\n\t\tc.Timeout = envClientTimeout\n\t}\n\n\tif envVaultProxy != \"\" {\n\t\tu, err := url.Parse(envVaultProxy)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\ttransport := c.HttpClient.Transport.(*http.Transport)\n\t\ttransport.Proxy = http.ProxyURL(u)\n\t}\n\n\treturn nil\n}\n\n// ParseAddress transforms the provided address into a url.URL and handles\n// the case of Unix domain sockets by setting the DialContext in the\n// configuration's HttpClient.Transport. This function must be called with\n// c.modifyLock held for write access.\nfunc (c *Config) ParseAddress(address string) (*url.URL, error) {\n\tu, err := url.Parse(address)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tc.Address = address\n\n\tif strings.HasPrefix(address, \"unix://\") {\n\t\t// When the address begins with unix://, always change the transport's\n\t\t// DialContext (to match previous behaviour)\n\t\tsocket := strings.TrimPrefix(address, \"unix://\")\n\n\t\tif transport, ok := c.HttpClient.Transport.(*http.Transport); ok {\n\t\t\ttransport.DialContext = func(context.Context, string, string) (net.Conn, error) {\n\t\t\t\treturn net.Dial(\"unix\", socket)\n\t\t\t}\n\n\t\t\t// Since the address points to a unix domain socket, the scheme in the\n\t\t\t// *URL would be set to `unix`. The *URL in the client is expected to\n\t\t\t// be pointing to the protocol used in the application layer and not to\n\t\t\t// the transport layer. Hence, setting the fields accordingly.\n\t\t\tu.Scheme = \"http\"\n\t\t\tu.Host = \"localhost\"\n\t\t\tu.Path = \"\"\n\t\t} else {\n\t\t\treturn nil, fmt.Errorf(\"attempting to specify unix:// address with non-transport transport\")\n\t\t}\n\t} else if strings.HasPrefix(c.Address, \"unix://\") {\n\t\t// When the address being set does not begin with unix:// but the previous\n\t\t// address in the Config did, change the transport's DialContext back to\n\t\t// use the default configuration that cleanhttp uses.\n\n\t\tif transport, ok := c.HttpClient.Transport.(*http.Transport); ok {\n\t\t\ttransport.DialContext = cleanhttp.DefaultPooledTransport().DialContext\n\t\t}\n\t}\n\n\treturn u, nil\n}\n\nfunc parseRateLimit(val string) (rate float64, burst int, err error) {\n\t_, err = fmt.Sscanf(val, \"%f:%d\", &rate, &burst)\n\tif err != nil {\n\t\trate, err = strconv.ParseFloat(val, 64)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"%v was provided but incorrectly formatted\", EnvRateLimit)\n\t\t}\n\t\tburst = int(rate)\n\t}\n\n\treturn rate, burst, err\n}\n\n// Client is the client to the Vault API. Create a client with NewClient.\ntype Client struct {\n\tmodifyLock            sync.RWMutex\n\taddr                  *url.URL\n\tconfig                *Config\n\ttoken                 string\n\theaders               http.Header\n\twrappingLookupFunc    WrappingLookupFunc\n\tmfaCreds              []string\n\tpolicyOverride        bool\n\trequestCallbacks      []RequestCallback\n\tresponseCallbacks     []ResponseCallback\n\treplicationStateStore *replicationStateStore\n}\n\n// NewClient returns a new client for the given configuration.\n//\n// If the configuration is nil, Vault will use configuration from\n// DefaultConfig(), which is the recommended starting configuration.\n//\n// If the environment variable `VAULT_TOKEN` is present, the token will be\n// automatically added to the client. Otherwise, you must manually call\n// `SetToken()`.\nfunc NewClient(c *Config) (*Client, error) {\n\tdef := DefaultConfig()\n\tif def == nil {\n\t\treturn nil, fmt.Errorf(\"could not create/read default configuration\")\n\t}\n\tif def.Error != nil {\n\t\treturn nil, errwrap.Wrapf(\"error encountered setting up default configuration: {{err}}\", def.Error)\n\t}\n\n\tif c == nil {\n\t\tc = def\n\t}\n\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\n\tif c.MinRetryWait == 0 {\n\t\tc.MinRetryWait = def.MinRetryWait\n\t}\n\n\tif c.MaxRetryWait == 0 {\n\t\tc.MaxRetryWait = def.MaxRetryWait\n\t}\n\n\tif c.HttpClient == nil {\n\t\tc.HttpClient = def.HttpClient\n\t}\n\tif c.HttpClient.Transport == nil {\n\t\tc.HttpClient.Transport = def.HttpClient.Transport\n\t}\n\n\taddress := c.Address\n\tif c.AgentAddress != \"\" {\n\t\taddress = c.AgentAddress\n\t}\n\n\tu, err := c.ParseAddress(address)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tclient := &Client{\n\t\taddr:    u,\n\t\tconfig:  c,\n\t\theaders: make(http.Header),\n\t}\n\n\tif c.ReadYourWrites {\n\t\tclient.replicationStateStore = &replicationStateStore{}\n\t}\n\n\t// Add the VaultRequest SSRF protection header\n\tclient.headers[RequestHeaderName] = []string{\"true\"}\n\n\tif token := os.Getenv(EnvVaultToken); token != \"\" {\n\t\tclient.token = token\n\t}\n\n\tif namespace := os.Getenv(EnvVaultNamespace); namespace != \"\" {\n\t\tclient.setNamespace(namespace)\n\t}\n\n\treturn client, nil\n}\n\nfunc (c *Client) CloneConfig() *Config {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\n\tnewConfig := DefaultConfig()\n\tnewConfig.Address = c.config.Address\n\tnewConfig.AgentAddress = c.config.AgentAddress\n\tnewConfig.MinRetryWait = c.config.MinRetryWait\n\tnewConfig.MaxRetryWait = c.config.MaxRetryWait\n\tnewConfig.MaxRetries = c.config.MaxRetries\n\tnewConfig.Timeout = c.config.Timeout\n\tnewConfig.Backoff = c.config.Backoff\n\tnewConfig.CheckRetry = c.config.CheckRetry\n\tnewConfig.Logger = c.config.Logger\n\tnewConfig.Limiter = c.config.Limiter\n\tnewConfig.SRVLookup = c.config.SRVLookup\n\tnewConfig.CloneHeaders = c.config.CloneHeaders\n\tnewConfig.CloneToken = c.config.CloneToken\n\tnewConfig.ReadYourWrites = c.config.ReadYourWrites\n\tnewConfig.clientTLSConfig = c.config.clientTLSConfig\n\n\t// we specifically want a _copy_ of the client here, not a pointer to the original one\n\tnewClient := *c.config.HttpClient\n\tnewConfig.HttpClient = &newClient\n\n\treturn newConfig\n}\n\n// SetAddress sets the address of Vault in the client. The format of address should be\n// \"<Scheme>://<Host>:<Port>\". Setting this on a client will override the\n// value of VAULT_ADDR environment variable.\nfunc (c *Client) SetAddress(addr string) error {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\n\tparsedAddr, err := c.config.ParseAddress(addr)\n\tif err != nil {\n\t\treturn errwrap.Wrapf(\"failed to set address: {{err}}\", err)\n\t}\n\n\tc.addr = parsedAddr\n\treturn nil\n}\n\n// Address returns the Vault URL the client is configured to connect to\nfunc (c *Client) Address() string {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\n\treturn c.addr.String()\n}\n\nfunc (c *Client) SetCheckRedirect(f func(*http.Request, []*http.Request) error) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.HttpClient.CheckRedirect = f\n}\n\n// SetLimiter will set the rate limiter for this client.\n// This method is thread-safe.\n// rateLimit and burst are specified according to https://godoc.org/golang.org/x/time/rate#NewLimiter\nfunc (c *Client) SetLimiter(rateLimit float64, burst int) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.Limiter = rate.NewLimiter(rate.Limit(rateLimit), burst)\n}\n\nfunc (c *Client) Limiter() *rate.Limiter {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.Limiter\n}\n\n// SetMinRetryWait sets the minimum time to wait before retrying in the case of certain errors.\nfunc (c *Client) SetMinRetryWait(retryWait time.Duration) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.MinRetryWait = retryWait\n}\n\nfunc (c *Client) MinRetryWait() time.Duration {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.MinRetryWait\n}\n\n// SetMaxRetryWait sets the maximum time to wait before retrying in the case of certain errors.\nfunc (c *Client) SetMaxRetryWait(retryWait time.Duration) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.MaxRetryWait = retryWait\n}\n\nfunc (c *Client) MaxRetryWait() time.Duration {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.MaxRetryWait\n}\n\n// SetMaxRetries sets the number of retries that will be used in the case of certain errors\nfunc (c *Client) SetMaxRetries(retries int) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.MaxRetries = retries\n}\n\nfunc (c *Client) SetMaxIdleConnections(idle int) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.HttpClient.Transport.(*http.Transport).MaxIdleConns = idle\n}\n\nfunc (c *Client) MaxIdleConnections() int {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\treturn c.config.HttpClient.Transport.(*http.Transport).MaxIdleConns\n}\n\nfunc (c *Client) SetDisableKeepAlives(disable bool) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.HttpClient.Transport.(*http.Transport).DisableKeepAlives = disable\n}\n\nfunc (c *Client) DisableKeepAlives() bool {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.HttpClient.Transport.(*http.Transport).DisableKeepAlives\n}\n\nfunc (c *Client) MaxRetries() int {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.MaxRetries\n}\n\nfunc (c *Client) SetSRVLookup(srv bool) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.SRVLookup = srv\n}\n\nfunc (c *Client) SRVLookup() bool {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.SRVLookup\n}\n\n// SetCheckRetry sets the CheckRetry function to be used for future requests.\nfunc (c *Client) SetCheckRetry(checkRetry retryablehttp.CheckRetry) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.CheckRetry = checkRetry\n}\n\nfunc (c *Client) CheckRetry() retryablehttp.CheckRetry {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.CheckRetry\n}\n\n// SetClientTimeout sets the client request timeout\nfunc (c *Client) SetClientTimeout(timeout time.Duration) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.Timeout = timeout\n}\n\nfunc (c *Client) ClientTimeout() time.Duration {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.Timeout\n}\n\nfunc (c *Client) OutputCurlString() bool {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.OutputCurlString\n}\n\nfunc (c *Client) SetOutputCurlString(curl bool) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.OutputCurlString = curl\n}\n\nfunc (c *Client) OutputPolicy() bool {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.OutputPolicy\n}\n\nfunc (c *Client) SetOutputPolicy(isSet bool) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.OutputPolicy = isSet\n}\n\n// CurrentWrappingLookupFunc sets a lookup function that returns desired wrap TTLs\n// for a given operation and path.\nfunc (c *Client) CurrentWrappingLookupFunc() WrappingLookupFunc {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\treturn c.wrappingLookupFunc\n}\n\n// SetWrappingLookupFunc sets a lookup function that returns desired wrap TTLs\n// for a given operation and path.\nfunc (c *Client) SetWrappingLookupFunc(lookupFunc WrappingLookupFunc) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.wrappingLookupFunc = lookupFunc\n}\n\n// SetMFACreds sets the MFA credentials supplied either via the environment\n// variable or via the command line.\nfunc (c *Client) SetMFACreds(creds []string) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.mfaCreds = creds\n}\n\n// SetNamespace sets the namespace supplied either via the environment\n// variable or via the command line.\nfunc (c *Client) SetNamespace(namespace string) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.setNamespace(namespace)\n}\n\nfunc (c *Client) setNamespace(namespace string) {\n\tif c.headers == nil {\n\t\tc.headers = make(http.Header)\n\t}\n\n\tc.headers.Set(NamespaceHeaderName, namespace)\n}\n\n// ClearNamespace removes the namespace header if set.\nfunc (c *Client) ClearNamespace() {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tif c.headers != nil {\n\t\tc.headers.Del(NamespaceHeaderName)\n\t}\n}\n\n// Namespace returns the namespace currently set in this client. It will\n// return an empty string if there is no namespace set.\nfunc (c *Client) Namespace() string {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tif c.headers == nil {\n\t\treturn \"\"\n\t}\n\treturn c.headers.Get(NamespaceHeaderName)\n}\n\n// WithNamespace makes a shallow copy of Client, modifies it to use\n// the given namespace, and returns it. Passing an empty string will\n// temporarily unset the namespace.\nfunc (c *Client) WithNamespace(namespace string) *Client {\n\tc2 := *c\n\tc2.modifyLock = sync.RWMutex{}\n\tc.modifyLock.RLock()\n\tc2.headers = c.headersInternal()\n\tc.modifyLock.RUnlock()\n\tif namespace == \"\" {\n\t\tc2.ClearNamespace()\n\t} else {\n\t\tc2.SetNamespace(namespace)\n\t}\n\treturn &c2\n}\n\n// Token returns the access token being used by this client. It will\n// return the empty string if there is no token set.\nfunc (c *Client) Token() string {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\treturn c.token\n}\n\n// SetToken sets the token directly. This won't perform any auth\n// verification, it simply sets the token properly for future requests.\nfunc (c *Client) SetToken(v string) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.token = v\n}\n\n// ClearToken deletes the token if it is set or does nothing otherwise.\nfunc (c *Client) ClearToken() {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.token = \"\"\n}\n\n// Headers gets the current set of headers used for requests. This returns a\n// copy; to modify it call AddHeader or SetHeaders.\nfunc (c *Client) Headers() http.Header {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\treturn c.headersInternal()\n}\n\n// headersInternal gets the current set of headers used for requests. Must be called\n// with the read modifyLock held.\nfunc (c *Client) headersInternal() http.Header {\n\tif c.headers == nil {\n\t\treturn nil\n\t}\n\n\tret := make(http.Header)\n\tfor k, v := range c.headers {\n\t\tfor _, val := range v {\n\t\t\tret[k] = append(ret[k], val)\n\t\t}\n\t}\n\n\treturn ret\n}\n\n// AddHeader allows a single header key/value pair to be added\n// in a race-safe fashion.\nfunc (c *Client) AddHeader(key, value string) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.headers.Add(key, value)\n}\n\n// SetHeaders clears all previous headers and uses only the given\n// ones going forward.\nfunc (c *Client) SetHeaders(headers http.Header) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.headers = headers\n}\n\n// SetBackoff sets the backoff function to be used for future requests.\nfunc (c *Client) SetBackoff(backoff retryablehttp.Backoff) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.Backoff = backoff\n}\n\nfunc (c *Client) SetLogger(logger retryablehttp.LeveledLogger) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.Logger = logger\n}\n\n// SetCloneHeaders to allow headers to be copied whenever the client is cloned.\nfunc (c *Client) SetCloneHeaders(cloneHeaders bool) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.CloneHeaders = cloneHeaders\n}\n\n// CloneHeaders gets the configured CloneHeaders value.\nfunc (c *Client) CloneHeaders() bool {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.CloneHeaders\n}\n\n// SetCloneToken from parent\nfunc (c *Client) SetCloneToken(cloneToken bool) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.CloneToken = cloneToken\n}\n\n// CloneToken gets the configured CloneToken value.\nfunc (c *Client) CloneToken() bool {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.CloneToken\n}\n\n// SetReadYourWrites to prevent reading stale cluster replication state.\nfunc (c *Client) SetReadYourWrites(preventStaleReads bool) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tif preventStaleReads {\n\t\tif c.replicationStateStore == nil {\n\t\t\tc.replicationStateStore = &replicationStateStore{}\n\t\t}\n\t} else {\n\t\tc.replicationStateStore = nil\n\t}\n\n\tc.config.ReadYourWrites = preventStaleReads\n}\n\n// ReadYourWrites gets the configured value of ReadYourWrites\nfunc (c *Client) ReadYourWrites() bool {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.ReadYourWrites\n}\n\n// SetCloneTLSConfig from parent.\nfunc (c *Client) SetCloneTLSConfig(clone bool) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.config.modifyLock.Lock()\n\tdefer c.config.modifyLock.Unlock()\n\n\tc.config.CloneTLSConfig = clone\n}\n\n// CloneTLSConfig gets the configured CloneTLSConfig value.\nfunc (c *Client) CloneTLSConfig() bool {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\n\treturn c.config.CloneTLSConfig\n}\n\n// Clone creates a new client with the same configuration. Note that the same\n// underlying http.Client is used; modifying the client from more than one\n// goroutine at once may not be safe, so modify the client as needed and then\n// clone. The headers are cloned based on the CloneHeaders property of the\n// source config\n//\n// Also, only the client's config is currently copied; this means items not in\n// the api.Config struct, such as policy override and wrapping function\n// behavior, must currently then be set as desired on the new client.\nfunc (c *Client) Clone() (*Client, error) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\treturn c.clone(c.config.CloneHeaders)\n}\n\n// CloneWithHeaders creates a new client similar to Clone, with the difference\n// being that the headers are always cloned\nfunc (c *Client) CloneWithHeaders() (*Client, error) {\n\tc.modifyLock.RLock()\n\tdefer c.modifyLock.RUnlock()\n\tc.config.modifyLock.RLock()\n\tdefer c.config.modifyLock.RUnlock()\n\treturn c.clone(true)\n}\n\n// clone creates a new client, with the headers being cloned based on the\n// passed in cloneheaders boolean.\n// Must be called with the read lock and config read lock held.\nfunc (c *Client) clone(cloneHeaders bool) (*Client, error) {\n\tconfig := c.config\n\n\tnewConfig := &Config{\n\t\tAddress:        config.Address,\n\t\tHttpClient:     config.HttpClient,\n\t\tMinRetryWait:   config.MinRetryWait,\n\t\tMaxRetryWait:   config.MaxRetryWait,\n\t\tMaxRetries:     config.MaxRetries,\n\t\tTimeout:        config.Timeout,\n\t\tBackoff:        config.Backoff,\n\t\tCheckRetry:     config.CheckRetry,\n\t\tLogger:         config.Logger,\n\t\tLimiter:        config.Limiter,\n\t\tAgentAddress:   config.AgentAddress,\n\t\tSRVLookup:      config.SRVLookup,\n\t\tCloneHeaders:   config.CloneHeaders,\n\t\tCloneToken:     config.CloneToken,\n\t\tReadYourWrites: config.ReadYourWrites,\n\t}\n\n\tif config.CloneTLSConfig {\n\t\tnewConfig.clientTLSConfig = config.clientTLSConfig\n\t}\n\n\tclient, err := NewClient(newConfig)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif cloneHeaders {\n\t\tclient.SetHeaders(c.headersInternal().Clone())\n\t}\n\n\tif config.CloneToken {\n\t\tclient.SetToken(c.token)\n\t}\n\n\tclient.replicationStateStore = c.replicationStateStore\n\n\treturn client, nil\n}\n\n// SetPolicyOverride sets whether requests should be sent with the policy\n// override flag to request overriding soft-mandatory Sentinel policies (both\n// RGPs and EGPs)\nfunc (c *Client) SetPolicyOverride(override bool) {\n\tc.modifyLock.Lock()\n\tdefer c.modifyLock.Unlock()\n\tc.policyOverride = override\n}\n\n// NewRequest creates a new raw request object to query the Vault server\n// configured for this client. This is an advanced method and generally\n// doesn't need to be called externally.\nfunc (c *Client) NewRequest(method, requestPath string) *Request {\n\tc.modifyLock.RLock()\n\taddr := c.addr\n\ttoken := c.token\n\tmfaCreds := c.mfaCreds\n\twrappingLookupFunc := c.wrappingLookupFunc\n\tpolicyOverride := c.policyOverride\n\theaders := c.headersInternal()\n\tc.modifyLock.RUnlock()\n\n\thost := addr.Host\n\t// if SRV records exist (see https://tools.ietf.org/html/draft-andrews-http-srv-02), lookup the SRV\n\t// record and take the highest match; this is not designed for high-availability, just discovery\n\t// Internet Draft specifies that the SRV record is ignored if a port is given\n\tif addr.Port() == \"\" && c.config.SRVLookup {\n\t\t_, addrs, err := net.LookupSRV(\"http\", \"tcp\", addr.Hostname())\n\t\tif err == nil && len(addrs) > 0 {\n\t\t\thost = fmt.Sprintf(\"%s:%d\", addrs[0].Target, addrs[0].Port)\n\t\t}\n\t}\n\n\treq := &Request{\n\t\tMethod: method,\n\t\tURL: &url.URL{\n\t\t\tUser:   addr.User,\n\t\t\tScheme: addr.Scheme,\n\t\t\tHost:   host,\n\t\t\tPath:   path.Join(addr.Path, requestPath),\n\t\t},\n\t\tHost:        addr.Host,\n\t\tClientToken: token,\n\t\tParams:      make(map[string][]string),\n\t}\n\n\tvar lookupPath string\n\tswitch {\n\tcase strings.HasPrefix(requestPath, \"/v1/\"):\n\t\tlookupPath = strings.TrimPrefix(requestPath, \"/v1/\")\n\tcase strings.HasPrefix(requestPath, \"v1/\"):\n\t\tlookupPath = strings.TrimPrefix(requestPath, \"v1/\")\n\tdefault:\n\t\tlookupPath = requestPath\n\t}\n\n\treq.MFAHeaderVals = mfaCreds\n\n\tif wrappingLookupFunc != nil {\n\t\treq.WrapTTL = wrappingLookupFunc(method, lookupPath)\n\t} else {\n\t\treq.WrapTTL = DefaultWrappingLookupFunc(method, lookupPath)\n\t}\n\n\treq.Headers = headers\n\treq.PolicyOverride = policyOverride\n\n\treturn req\n}\n\n// RawRequest performs the raw request given. This request may be against\n// a Vault server not configured with this client. This is an advanced operation\n// that generally won't need to be called externally.\n//\n// Deprecated: RawRequest exists for historical compatibility and should not be\n// used directly. Use client.Logical().ReadRaw(...) or higher level methods\n// instead.\nfunc (c *Client) RawRequest(r *Request) (*Response, error) {\n\treturn c.RawRequestWithContext(context.Background(), r)\n}\n\n// RawRequestWithContext performs the raw request given. This request may be against\n// a Vault server not configured with this client. This is an advanced operation\n// that generally won't need to be called externally.\n//\n// Deprecated: RawRequestWithContext exists for historical compatibility and\n// should not be used directly. Use client.Logical().ReadRawWithContext(...)\n// or higher level methods instead.\nfunc (c *Client) RawRequestWithContext(ctx context.Context, r *Request) (*Response, error) {\n\t// Note: we purposefully do not call cancel manually. The reason is\n\t// when canceled, the request.Body will EOF when reading due to the way\n\t// it streams data in. Cancel will still be run when the timeout is\n\t// hit, so this doesn't really harm anything.\n\tctx, _ = c.withConfiguredTimeout(ctx)\n\treturn c.rawRequestWithContext(ctx, r)\n}\n\nfunc (c *Client) rawRequestWithContext(ctx context.Context, r *Request) (*Response, error) {\n\tc.modifyLock.RLock()\n\ttoken := c.token\n\n\tc.config.modifyLock.RLock()\n\tlimiter := c.config.Limiter\n\tminRetryWait := c.config.MinRetryWait\n\tmaxRetryWait := c.config.MaxRetryWait\n\tmaxRetries := c.config.MaxRetries\n\tcheckRetry := c.config.CheckRetry\n\tbackoff := c.config.Backoff\n\thttpClient := c.config.HttpClient\n\tns := c.headers.Get(NamespaceHeaderName)\n\toutputCurlString := c.config.OutputCurlString\n\toutputPolicy := c.config.OutputPolicy\n\tlogger := c.config.Logger\n\tdisableRedirects := c.config.DisableRedirects\n\tc.config.modifyLock.RUnlock()\n\n\tc.modifyLock.RUnlock()\n\n\t// ensure that the most current namespace setting is used at the time of the call\n\t// e.g. calls using (*Client).WithNamespace\n\tswitch ns {\n\tcase \"\":\n\t\tr.Headers.Del(NamespaceHeaderName)\n\tdefault:\n\t\tr.Headers.Set(NamespaceHeaderName, ns)\n\t}\n\n\tfor _, cb := range c.requestCallbacks {\n\t\tcb(r)\n\t}\n\n\tif c.config.ReadYourWrites {\n\t\tc.replicationStateStore.requireState(r)\n\t}\n\n\tif limiter != nil {\n\t\tlimiter.Wait(ctx)\n\t}\n\n\t// check the token before potentially erroring from the API\n\tif err := validateToken(token); err != nil {\n\t\treturn nil, err\n\t}\n\n\tredirectCount := 0\nSTART:\n\treq, err := r.toRetryableHTTP()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif req == nil {\n\t\treturn nil, fmt.Errorf(\"nil request created\")\n\t}\n\n\tif outputCurlString {\n\t\tLastOutputStringError = &OutputStringError{\n\t\t\tRequest:       req,\n\t\t\tTLSSkipVerify: c.config.HttpClient.Transport.(*http.Transport).TLSClientConfig.InsecureSkipVerify,\n\t\t\tClientCert:    c.config.curlClientCert,\n\t\t\tClientKey:     c.config.curlClientKey,\n\t\t\tClientCACert:  c.config.curlCACert,\n\t\t\tClientCAPath:  c.config.curlCAPath,\n\t\t}\n\t\treturn nil, LastOutputStringError\n\t}\n\n\tif outputPolicy {\n\t\tLastOutputPolicyError = &OutputPolicyError{\n\t\t\tmethod: req.Method,\n\t\t\tpath:   strings.TrimPrefix(req.URL.Path, \"/v1\"),\n\t\t\tparams: req.URL.Query(),\n\t\t}\n\t\treturn nil, LastOutputPolicyError\n\t}\n\n\treq.Request = req.Request.WithContext(ctx)\n\n\tif backoff == nil {\n\t\tbackoff = retryablehttp.LinearJitterBackoff\n\t}\n\n\tif checkRetry == nil {\n\t\tcheckRetry = DefaultRetryPolicy\n\t}\n\n\tclient := &retryablehttp.Client{\n\t\tHTTPClient:   httpClient,\n\t\tRetryWaitMin: minRetryWait,\n\t\tRetryWaitMax: maxRetryWait,\n\t\tRetryMax:     maxRetries,\n\t\tBackoff:      backoff,\n\t\tCheckRetry:   checkRetry,\n\t\tLogger:       logger,\n\t\tErrorHandler: retryablehttp.PassthroughErrorHandler,\n\t}\n\n\tvar result *Response\n\tresp, err := client.Do(req)\n\tif resp != nil {\n\t\tresult = &Response{Response: resp}\n\t}\n\tif err != nil {\n\t\tif strings.Contains(err.Error(), \"tls: oversized\") {\n\t\t\terr = errwrap.Wrapf(\"{{err}}\\n\\n\"+TLSErrorString, err)\n\t\t}\n\t\treturn result, err\n\t}\n\n\t// Check for a redirect, only allowing for a single redirect (if redirects aren't disabled)\n\tif (resp.StatusCode == 301 || resp.StatusCode == 302 || resp.StatusCode == 307) && redirectCount == 0 && !disableRedirects {\n\t\t// Parse the updated location\n\t\trespLoc, err := resp.Location()\n\t\tif err != nil {\n\t\t\treturn result, err\n\t\t}\n\n\t\t// Ensure a protocol downgrade doesn't happen\n\t\tif req.URL.Scheme == \"https\" && respLoc.Scheme != \"https\" {\n\t\t\treturn result, fmt.Errorf(\"redirect would cause protocol downgrade\")\n\t\t}\n\n\t\t// Update the request\n\t\tr.URL = respLoc\n\n\t\t// Reset the request body if any\n\t\tif err := r.ResetJSONBody(); err != nil {\n\t\t\treturn result, err\n\t\t}\n\n\t\t// Retry the request\n\t\tredirectCount++\n\t\tgoto START\n\t}\n\n\tif result != nil {\n\t\tfor _, cb := range c.responseCallbacks {\n\t\t\tcb(result)\n\t\t}\n\n\t\tif c.config.ReadYourWrites {\n\t\t\tc.replicationStateStore.recordState(result)\n\t\t}\n\t}\n\tif err := result.Error(); err != nil {\n\t\treturn result, err\n\t}\n\n\treturn result, nil\n}\n\n// httpRequestWithContext avoids the use of the go-retryable library found in RawRequestWithContext and is\n// useful when making calls where a net/http client is desirable. A single redirect (status code 301, 302,\n// or 307) will be followed but all retry and timeout logic is the responsibility of the caller as is\n// closing the Response body.\nfunc (c *Client) httpRequestWithContext(ctx context.Context, r *Request) (*Response, error) {\n\treq, err := http.NewRequestWithContext(ctx, r.Method, r.URL.RequestURI(), r.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tc.modifyLock.RLock()\n\ttoken := c.token\n\n\tc.config.modifyLock.RLock()\n\tlimiter := c.config.Limiter\n\thttpClient := c.config.HttpClient\n\toutputCurlString := c.config.OutputCurlString\n\toutputPolicy := c.config.OutputPolicy\n\tdisableRedirects := c.config.DisableRedirects\n\n\t// add headers\n\tif c.headers != nil {\n\t\tfor header, vals := range c.headers {\n\t\t\tfor _, val := range vals {\n\t\t\t\treq.Header.Add(header, val)\n\t\t\t}\n\t\t}\n\t\t// explicitly set the namespace header to current client\n\t\tif ns := c.headers.Get(NamespaceHeaderName); ns != \"\" {\n\t\t\tr.Headers.Set(NamespaceHeaderName, ns)\n\t\t}\n\t}\n\n\tc.config.modifyLock.RUnlock()\n\tc.modifyLock.RUnlock()\n\n\t// OutputCurlString and OutputPolicy logic rely on the request type to be retryable.Request\n\tif outputCurlString {\n\t\treturn nil, fmt.Errorf(\"output-curl-string is not implemented for this request\")\n\t}\n\tif outputPolicy {\n\t\treturn nil, fmt.Errorf(\"output-policy is not implemented for this request\")\n\t}\n\n\treq.URL.User = r.URL.User\n\treq.URL.Scheme = r.URL.Scheme\n\treq.URL.Host = r.URL.Host\n\treq.Host = r.URL.Host\n\n\tif len(r.ClientToken) != 0 {\n\t\treq.Header.Set(AuthHeaderName, r.ClientToken)\n\t}\n\n\tif len(r.WrapTTL) != 0 {\n\t\treq.Header.Set(\"X-Vault-Wrap-TTL\", r.WrapTTL)\n\t}\n\n\tif len(r.MFAHeaderVals) != 0 {\n\t\tfor _, mfaHeaderVal := range r.MFAHeaderVals {\n\t\t\treq.Header.Add(\"X-Vault-MFA\", mfaHeaderVal)\n\t\t}\n\t}\n\n\tif r.PolicyOverride {\n\t\treq.Header.Set(\"X-Vault-Policy-Override\", \"true\")\n\t}\n\n\tif limiter != nil {\n\t\tlimiter.Wait(ctx)\n\t}\n\n\t// check the token before potentially erroring from the API\n\tif err := validateToken(token); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar result *Response\n\n\tresp, err := httpClient.Do(req)\n\n\tif resp != nil {\n\t\tresult = &Response{Response: resp}\n\t}\n\n\tif err != nil {\n\t\tif strings.Contains(err.Error(), \"tls: oversized\") {\n\t\t\terr = errwrap.Wrapf(\"{{err}}\\n\\n\"+TLSErrorString, err)\n\t\t}\n\t\treturn result, err\n\t}\n\n\t// Check for a redirect, only allowing for a single redirect, if redirects aren't disabled\n\tif (resp.StatusCode == 301 || resp.StatusCode == 302 || resp.StatusCode == 307) && !disableRedirects {\n\t\t// Parse the updated location\n\t\trespLoc, err := resp.Location()\n\t\tif err != nil {\n\t\t\treturn result, fmt.Errorf(\"redirect failed: %s\", err)\n\t\t}\n\n\t\t// Ensure a protocol downgrade doesn't happen\n\t\tif req.URL.Scheme == \"https\" && respLoc.Scheme != \"https\" {\n\t\t\treturn result, fmt.Errorf(\"redirect would cause protocol downgrade\")\n\t\t}\n\n\t\t// Update the request\n\t\treq.URL = respLoc\n\n\t\t// Reset the request body if any\n\t\tif err := r.ResetJSONBody(); err != nil {\n\t\t\treturn result, fmt.Errorf(\"redirect failed: %s\", err)\n\t\t}\n\n\t\t// Retry the request\n\t\tresp, err = httpClient.Do(req)\n\t\tif err != nil {\n\t\t\treturn result, fmt.Errorf(\"redirect failed: %s\", err)\n\t\t}\n\t}\n\n\tif err := result.Error(); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn result, nil\n}\n\ntype (\n\tRequestCallback  func(*Request)\n\tResponseCallback func(*Response)\n)\n\n// WithRequestCallbacks makes a shallow clone of Client, modifies it to use\n// the given callbacks, and returns it.  Each of the callbacks will be invoked\n// on every outgoing request.  A client may be used to issue requests\n// concurrently; any locking needed by callbacks invoked concurrently is the\n// callback's responsibility.\nfunc (c *Client) WithRequestCallbacks(callbacks ...RequestCallback) *Client {\n\tc2 := *c\n\tc2.modifyLock = sync.RWMutex{}\n\tc2.requestCallbacks = callbacks\n\treturn &c2\n}\n\n// WithResponseCallbacks makes a shallow clone of Client, modifies it to use\n// the given callbacks, and returns it.  Each of the callbacks will be invoked\n// on every received response.  A client may be used to issue requests\n// concurrently; any locking needed by callbacks invoked concurrently is the\n// callback's responsibility.\nfunc (c *Client) WithResponseCallbacks(callbacks ...ResponseCallback) *Client {\n\tc2 := *c\n\tc2.modifyLock = sync.RWMutex{}\n\tc2.responseCallbacks = callbacks\n\treturn &c2\n}\n\n// withConfiguredTimeout wraps the context with a timeout from the client configuration.\nfunc (c *Client) withConfiguredTimeout(ctx context.Context) (context.Context, context.CancelFunc) {\n\ttimeout := c.ClientTimeout()\n\n\tif timeout > 0 {\n\t\treturn context.WithTimeout(ctx, timeout)\n\t}\n\n\treturn ctx, func() {}\n}\n\n// RecordState returns a response callback that will record the state returned\n// by Vault in a response header.\nfunc RecordState(state *string) ResponseCallback {\n\treturn func(resp *Response) {\n\t\t*state = resp.Header.Get(HeaderIndex)\n\t}\n}\n\n// RequireState returns a request callback that will add a request header to\n// specify the state we require of Vault. This state was obtained from a\n// response header seen previous, probably captured with RecordState.\nfunc RequireState(states ...string) RequestCallback {\n\treturn func(req *Request) {\n\t\tfor _, s := range states {\n\t\t\treq.Headers.Add(HeaderIndex, s)\n\t\t}\n\t}\n}\n\n// compareReplicationStates returns 1 if s1 is newer or identical, -1 if s1 is older, and 0\n// if neither s1 or s2 is strictly greater. An error is returned if s1 or s2\n// are invalid or from different clusters.\nfunc compareReplicationStates(s1, s2 string) (int, error) {\n\tw1, err := ParseReplicationState(s1, nil)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tw2, err := ParseReplicationState(s2, nil)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tif w1.ClusterID != w2.ClusterID {\n\t\treturn 0, fmt.Errorf(\"can't compare replication states with different ClusterIDs\")\n\t}\n\n\tswitch {\n\tcase w1.LocalIndex >= w2.LocalIndex && w1.ReplicatedIndex >= w2.ReplicatedIndex:\n\t\treturn 1, nil\n\t// We've already handled the case where both are equal above, so really we're\n\t// asking here if one or both are lesser.\n\tcase w1.LocalIndex <= w2.LocalIndex && w1.ReplicatedIndex <= w2.ReplicatedIndex:\n\t\treturn -1, nil\n\t}\n\n\treturn 0, nil\n}\n\n// MergeReplicationStates returns a merged array of replication states by iterating\n// through all states in `old`. An iterated state is merged to the result before `new`\n// based on the result of compareReplicationStates\nfunc MergeReplicationStates(old []string, new string) []string {\n\tif len(old) == 0 || len(old) > 2 {\n\t\treturn []string{new}\n\t}\n\n\tvar ret []string\n\tfor _, o := range old {\n\t\tc, err := compareReplicationStates(o, new)\n\t\tif err != nil {\n\t\t\treturn []string{new}\n\t\t}\n\t\tswitch c {\n\t\tcase 1:\n\t\t\tret = append(ret, o)\n\t\tcase -1:\n\t\t\tret = append(ret, new)\n\t\tcase 0:\n\t\t\tret = append(ret, o, new)\n\t\t}\n\t}\n\treturn strutil.RemoveDuplicates(ret, false)\n}\n\ntype WALState struct {\n\tClusterID       string\n\tLocalIndex      uint64\n\tReplicatedIndex uint64\n}\n\nfunc ParseReplicationState(raw string, hmacKey []byte) (*WALState, error) {\n\tcooked, err := base64.StdEncoding.DecodeString(raw)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ts := string(cooked)\n\n\tlastIndex := strings.LastIndexByte(s, ':')\n\tif lastIndex == -1 {\n\t\treturn nil, fmt.Errorf(\"invalid full state header format\")\n\t}\n\tstate, stateHMACRaw := s[:lastIndex], s[lastIndex+1:]\n\tstateHMAC, err := hex.DecodeString(stateHMACRaw)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid state header HMAC: %v, %w\", stateHMACRaw, err)\n\t}\n\n\tif len(hmacKey) != 0 {\n\t\thm := hmac.New(sha256.New, hmacKey)\n\t\thm.Write([]byte(state))\n\t\tif !hmac.Equal(hm.Sum(nil), stateHMAC) {\n\t\t\treturn nil, fmt.Errorf(\"invalid state header HMAC (mismatch)\")\n\t\t}\n\t}\n\n\tpieces := strings.Split(state, \":\")\n\tif len(pieces) != 4 || pieces[0] != \"v1\" || pieces[1] == \"\" {\n\t\treturn nil, fmt.Errorf(\"invalid state header format\")\n\t}\n\tlocalIndex, err := strconv.ParseUint(pieces[2], 10, 64)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid local index in state header: %w\", err)\n\t}\n\treplicatedIndex, err := strconv.ParseUint(pieces[3], 10, 64)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid replicated index in state header: %w\", err)\n\t}\n\n\treturn &WALState{\n\t\tClusterID:       pieces[1],\n\t\tLocalIndex:      localIndex,\n\t\tReplicatedIndex: replicatedIndex,\n\t}, nil\n}\n\n// ForwardInconsistent returns a request callback that will add a request\n// header which says: if the state required isn't present on the node receiving\n// this request, forward it to the active node.  This should be used in\n// conjunction with RequireState.\nfunc ForwardInconsistent() RequestCallback {\n\treturn func(req *Request) {\n\t\treq.Headers.Set(HeaderInconsistent, \"forward-active-node\")\n\t}\n}\n\n// ForwardAlways returns a request callback which adds a header telling any\n// performance standbys handling the request to forward it to the active node.\n// This feature must be enabled in Vault's configuration.\nfunc ForwardAlways() RequestCallback {\n\treturn func(req *Request) {\n\t\treq.Headers.Set(HeaderForward, \"active-node\")\n\t}\n}\n\n// DefaultRetryPolicy is the default retry policy used by new Client objects.\n// It is the same as retryablehttp.DefaultRetryPolicy except that it also retries\n// 412 requests, which are returned by Vault when a X-Vault-Index header isn't\n// satisfied.\nfunc DefaultRetryPolicy(ctx context.Context, resp *http.Response, err error) (bool, error) {\n\tretry, err := retryablehttp.DefaultRetryPolicy(ctx, resp, err)\n\tif err != nil || retry {\n\t\treturn retry, err\n\t}\n\tif resp != nil && resp.StatusCode == 412 {\n\t\treturn true, nil\n\t}\n\treturn false, nil\n}\n\n// replicationStateStore is used to track cluster replication states\n// in order to ensure proper read-after-write semantics for a Client.\ntype replicationStateStore struct {\n\tm     sync.RWMutex\n\tstore []string\n}\n\n// recordState updates the store's replication states with the merger of all\n// states.\nfunc (w *replicationStateStore) recordState(resp *Response) {\n\tw.m.Lock()\n\tdefer w.m.Unlock()\n\tnewState := resp.Header.Get(HeaderIndex)\n\tif newState != \"\" {\n\t\tw.store = MergeReplicationStates(w.store, newState)\n\t}\n}\n\n// requireState updates the Request with the store's current replication states.\nfunc (w *replicationStateStore) requireState(req *Request) {\n\tw.m.RLock()\n\tdefer w.m.RUnlock()\n\tfor _, s := range w.store {\n\t\treq.Headers.Add(HeaderIndex, s)\n\t}\n}\n\n// states currently stored.\nfunc (w *replicationStateStore) states() []string {\n\tw.m.RLock()\n\tdefer w.m.RUnlock()\n\tc := make([]string, len(w.store))\n\tcopy(c, w.store)\n\treturn c\n}\n\n// validateToken will check for non-printable characters to prevent a call that will fail at the api\nfunc validateToken(t string) error {\n\tidx := strings.IndexFunc(t, func(c rune) bool {\n\t\treturn !unicode.IsPrint(c)\n\t})\n\tif idx != -1 {\n\t\treturn fmt.Errorf(\"configured Vault token contains non-printable characters and cannot be used\")\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/help.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n)\n\n// Help wraps HelpWithContext using context.Background.\nfunc (c *Client) Help(path string) (*Help, error) {\n\treturn c.HelpWithContext(context.Background(), path)\n}\n\n// HelpWithContext reads the help information for the given path.\nfunc (c *Client) HelpWithContext(ctx context.Context, path string) (*Help, error) {\n\tctx, cancelFunc := c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.NewRequest(http.MethodGet, fmt.Sprintf(\"/v1/%s\", path))\n\tr.Params.Add(\"help\", \"1\")\n\n\tresp, err := c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result Help\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\ntype Help struct {\n\tHelp    string                 `json:\"help\"`\n\tSeeAlso []string               `json:\"see_also\"`\n\tOpenAPI map[string]interface{} `json:\"openapi\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/kv.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport \"errors\"\n\n// ErrSecretNotFound is returned by KVv1 and KVv2 wrappers to indicate that the\n// secret is missing at the given location.\nvar ErrSecretNotFound = errors.New(\"secret not found\")\n\n// A KVSecret is a key-value secret returned by Vault's KV secrets engine,\n// and is the most basic type of secret stored in Vault.\n//\n// Data contains the key-value pairs of the secret itself,\n// while Metadata contains a subset of metadata describing\n// this particular version of the secret.\n// The Metadata field for a KV v1 secret will always be nil, as\n// metadata is only supported starting in KV v2.\n//\n// The Raw field can be inspected for information about the lease,\n// and passed to a LifetimeWatcher object for periodic renewal.\ntype KVSecret struct {\n\tData            map[string]interface{}\n\tVersionMetadata *KVVersionMetadata\n\tCustomMetadata  map[string]interface{}\n\tRaw             *Secret\n}\n\n// KVv1 is used to return a client for reads and writes against\n// a KV v1 secrets engine in Vault.\n//\n// The mount path is the location where the target KV secrets engine resides\n// in Vault.\n//\n// While v1 is not necessarily deprecated, Vault development servers tend to\n// use v2 as the version of the KV secrets engine, as this is what's mounted\n// by default when a server is started in -dev mode. See the kvv2 struct.\n//\n// Learn more about the KV secrets engine here:\n// https://developer.hashicorp.com/vault/docs/secrets/kv\nfunc (c *Client) KVv1(mountPath string) *KVv1 {\n\treturn &KVv1{c: c, mountPath: mountPath}\n}\n\n// KVv2 is used to return a client for reads and writes against\n// a KV v2 secrets engine in Vault.\n//\n// The mount path is the location where the target KV secrets engine resides\n// in Vault.\n//\n// Vault development servers tend to have \"secret\" as the mount path,\n// as these are the default settings when a server is started in -dev mode.\n//\n// Learn more about the KV secrets engine here:\n// https://developer.hashicorp.com/vault/docs/secrets/kv\nfunc (c *Client) KVv2(mountPath string) *KVv2 {\n\treturn &KVv2{c: c, mountPath: mountPath}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/kv_v1.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"fmt\"\n)\n\ntype KVv1 struct {\n\tc         *Client\n\tmountPath string\n}\n\n// Get returns a secret from the KV v1 secrets engine.\nfunc (kv *KVv1) Get(ctx context.Context, secretPath string) (*KVSecret, error) {\n\tpathToRead := fmt.Sprintf(\"%s/%s\", kv.mountPath, secretPath)\n\n\tsecret, err := kv.c.Logical().ReadWithContext(ctx, pathToRead)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error encountered while reading secret at %s: %w\", pathToRead, err)\n\t}\n\tif secret == nil {\n\t\treturn nil, fmt.Errorf(\"%w: at %s\", ErrSecretNotFound, pathToRead)\n\t}\n\n\treturn &KVSecret{\n\t\tData:            secret.Data,\n\t\tVersionMetadata: nil,\n\t\tRaw:             secret,\n\t}, nil\n}\n\n// Put inserts a key-value secret (e.g. {\"password\": \"Hashi123\"}) into the\n// KV v1 secrets engine.\n//\n// If the secret already exists, it will be overwritten.\nfunc (kv *KVv1) Put(ctx context.Context, secretPath string, data map[string]interface{}) error {\n\tpathToWriteTo := fmt.Sprintf(\"%s/%s\", kv.mountPath, secretPath)\n\n\t_, err := kv.c.Logical().WriteWithContext(ctx, pathToWriteTo, data)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error writing secret to %s: %w\", pathToWriteTo, err)\n\t}\n\n\treturn nil\n}\n\n// Delete deletes a secret from the KV v1 secrets engine.\nfunc (kv *KVv1) Delete(ctx context.Context, secretPath string) error {\n\tpathToDelete := fmt.Sprintf(\"%s/%s\", kv.mountPath, secretPath)\n\n\t_, err := kv.c.Logical().DeleteWithContext(ctx, pathToDelete)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error deleting secret at %s: %w\", pathToDelete, err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/kv_v2.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"sort\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\ntype KVv2 struct {\n\tc         *Client\n\tmountPath string\n}\n\n// KVMetadata is the full metadata for a given KV v2 secret.\ntype KVMetadata struct {\n\tCASRequired        bool                   `mapstructure:\"cas_required\"`\n\tCreatedTime        time.Time              `mapstructure:\"created_time\"`\n\tCurrentVersion     int                    `mapstructure:\"current_version\"`\n\tCustomMetadata     map[string]interface{} `mapstructure:\"custom_metadata\"`\n\tDeleteVersionAfter time.Duration          `mapstructure:\"delete_version_after\"`\n\tMaxVersions        int                    `mapstructure:\"max_versions\"`\n\tOldestVersion      int                    `mapstructure:\"oldest_version\"`\n\tUpdatedTime        time.Time              `mapstructure:\"updated_time\"`\n\t// Keys are stringified ints, e.g. \"3\". To get a sorted slice of version metadata, use GetVersionsAsList.\n\tVersions map[string]KVVersionMetadata `mapstructure:\"versions\"`\n\tRaw      *Secret\n}\n\n// KVMetadataPutInput is the subset of metadata that can be replaced for a\n// KV v2 secret using the PutMetadata method.\n//\n// All fields should be explicitly provided, as any fields left unset in the\n// struct will be reset to their zero value.\ntype KVMetadataPutInput struct {\n\tCASRequired        bool\n\tCustomMetadata     map[string]interface{}\n\tDeleteVersionAfter time.Duration\n\tMaxVersions        int\n}\n\n// KVMetadataPatchInput is the subset of metadata that can be manually modified for\n// a KV v2 secret using the PatchMetadata method.\n//\n// The struct's fields are all pointers. A pointer to a field's zero\n// value (e.g. false for *bool) implies that field should be reset to its\n// zero value after update, whereas a field left as a nil pointer\n// (e.g. nil for *bool) implies the field should remain unchanged.\n//\n// Since maps are already pointers, use an empty map to remove all\n// custom metadata.\ntype KVMetadataPatchInput struct {\n\tCASRequired        *bool\n\tCustomMetadata     map[string]interface{}\n\tDeleteVersionAfter *time.Duration\n\tMaxVersions        *int\n}\n\n// KVVersionMetadata is a subset of metadata for a given version of a KV v2 secret.\ntype KVVersionMetadata struct {\n\tVersion      int       `mapstructure:\"version\"`\n\tCreatedTime  time.Time `mapstructure:\"created_time\"`\n\tDeletionTime time.Time `mapstructure:\"deletion_time\"`\n\tDestroyed    bool      `mapstructure:\"destroyed\"`\n}\n\n// Currently supported options: WithOption, WithCheckAndSet, WithMethod\ntype KVOption func() (key string, value interface{})\n\nconst (\n\tKVOptionCheckAndSet    = \"cas\"\n\tKVOptionMethod         = \"method\"\n\tKVMergeMethodPatch     = \"patch\"\n\tKVMergeMethodReadWrite = \"rw\"\n)\n\n// WithOption can optionally be passed to provide generic options for a\n// KV request. Valid keys and values depend on the type of request.\nfunc WithOption(key string, value interface{}) KVOption {\n\treturn func() (string, interface{}) {\n\t\treturn key, value\n\t}\n}\n\n// WithCheckAndSet can optionally be passed to perform a check-and-set\n// operation on a KV request. If not set, the write will be allowed.\n// If cas is set to 0, a write will only be allowed if the key doesn't exist.\n// If set to non-zero, the write will only be allowed if the key’s current\n// version matches the version specified in the cas parameter.\nfunc WithCheckAndSet(cas int) KVOption {\n\treturn WithOption(KVOptionCheckAndSet, cas)\n}\n\n// WithMergeMethod can optionally be passed to dictate which type of\n// patch to perform in a Patch request. If set to \"patch\", then an HTTP PATCH\n// request will be issued. If set to \"rw\", then a read will be performed,\n// then a local update, followed by a remote update. Defaults to \"patch\".\nfunc WithMergeMethod(method string) KVOption {\n\treturn WithOption(KVOptionMethod, method)\n}\n\n// Get returns the latest version of a secret from the KV v2 secrets engine.\n//\n// If the latest version has been deleted, an error will not be thrown, but\n// the Data field on the returned secret will be nil, and the Metadata field\n// will contain the deletion time.\nfunc (kv *KVv2) Get(ctx context.Context, secretPath string) (*KVSecret, error) {\n\tpathToRead := fmt.Sprintf(\"%s/data/%s\", kv.mountPath, secretPath)\n\n\tsecret, err := kv.c.Logical().ReadWithContext(ctx, pathToRead)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error encountered while reading secret at %s: %w\", pathToRead, err)\n\t}\n\tif secret == nil {\n\t\treturn nil, fmt.Errorf(\"%w: at %s\", ErrSecretNotFound, pathToRead)\n\t}\n\n\tkvSecret, err := extractDataAndVersionMetadata(secret)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error parsing secret at %s: %w\", pathToRead, err)\n\t}\n\n\tkvSecret.CustomMetadata = extractCustomMetadata(secret)\n\n\treturn kvSecret, nil\n}\n\n// GetVersion returns the data and metadata for a specific version of the\n// given secret.\n//\n// If that version has been deleted, the Data field on the\n// returned secret will be nil, and the Metadata field will contain the deletion time.\n//\n// GetVersionsAsList can provide a list of available versions sorted by\n// version number, while the response from GetMetadata contains them as a map.\nfunc (kv *KVv2) GetVersion(ctx context.Context, secretPath string, version int) (*KVSecret, error) {\n\tpathToRead := fmt.Sprintf(\"%s/data/%s\", kv.mountPath, secretPath)\n\n\tqueryParams := map[string][]string{\"version\": {strconv.Itoa(version)}}\n\tsecret, err := kv.c.Logical().ReadWithDataWithContext(ctx, pathToRead, queryParams)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil {\n\t\treturn nil, fmt.Errorf(\"%w: for version %d at %s\", ErrSecretNotFound, version, pathToRead)\n\t}\n\n\tkvSecret, err := extractDataAndVersionMetadata(secret)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error parsing secret at %s: %w\", pathToRead, err)\n\t}\n\n\tkvSecret.CustomMetadata = extractCustomMetadata(secret)\n\n\treturn kvSecret, nil\n}\n\n// GetVersionsAsList returns a subset of the metadata for each version of the secret, sorted by version number.\nfunc (kv *KVv2) GetVersionsAsList(ctx context.Context, secretPath string) ([]KVVersionMetadata, error) {\n\tpathToRead := fmt.Sprintf(\"%s/metadata/%s\", kv.mountPath, secretPath)\n\n\tsecret, err := kv.c.Logical().ReadWithContext(ctx, pathToRead)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, fmt.Errorf(\"%w: no metadata at %s\", ErrSecretNotFound, pathToRead)\n\t}\n\n\tmd, err := extractFullMetadata(secret)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to extract metadata from secret to determine versions: %w\", err)\n\t}\n\n\tversionsList := make([]KVVersionMetadata, 0, len(md.Versions))\n\tfor _, versionMetadata := range md.Versions {\n\t\tversionsList = append(versionsList, versionMetadata)\n\t}\n\n\tsort.Slice(versionsList, func(i, j int) bool { return versionsList[i].Version < versionsList[j].Version })\n\treturn versionsList, nil\n}\n\n// GetMetadata returns the full metadata for a given secret, including a map of\n// its existing versions and their respective creation/deletion times, etc.\nfunc (kv *KVv2) GetMetadata(ctx context.Context, secretPath string) (*KVMetadata, error) {\n\tpathToRead := fmt.Sprintf(\"%s/metadata/%s\", kv.mountPath, secretPath)\n\n\tsecret, err := kv.c.Logical().ReadWithContext(ctx, pathToRead)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, fmt.Errorf(\"%w: no metadata at %s\", ErrSecretNotFound, pathToRead)\n\t}\n\n\tmd, err := extractFullMetadata(secret)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to extract metadata from secret: %w\", err)\n\t}\n\n\treturn md, nil\n}\n\n// Put inserts a key-value secret (e.g. {\"password\": \"Hashi123\"})\n// into the KV v2 secrets engine.\n//\n// If the secret already exists, a new version will be created\n// and the previous version can be accessed with the GetVersion method.\n// GetMetadata can provide a list of available versions.\nfunc (kv *KVv2) Put(ctx context.Context, secretPath string, data map[string]interface{}, opts ...KVOption) (*KVSecret, error) {\n\tpathToWriteTo := fmt.Sprintf(\"%s/data/%s\", kv.mountPath, secretPath)\n\n\twrappedData := map[string]interface{}{\n\t\t\"data\": data,\n\t}\n\n\t// Add options such as check-and-set, etc.\n\t// We leave this as an optional arg so that most users\n\t// can just pass plain key-value secret data without\n\t// having to remember to put the extra layer \"data\" in there.\n\toptions := make(map[string]interface{})\n\tfor _, opt := range opts {\n\t\tk, v := opt()\n\t\toptions[k] = v\n\t}\n\tif len(opts) > 0 {\n\t\twrappedData[\"options\"] = options\n\t}\n\n\tsecret, err := kv.c.Logical().WriteWithContext(ctx, pathToWriteTo, wrappedData)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error writing secret to %s: %w\", pathToWriteTo, err)\n\t}\n\tif secret == nil {\n\t\treturn nil, fmt.Errorf(\"%w: after writing to %s\", ErrSecretNotFound, pathToWriteTo)\n\t}\n\n\tmetadata, err := extractVersionMetadata(secret)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"secret was written successfully, but unable to view version metadata from response: %w\", err)\n\t}\n\n\tkvSecret := &KVSecret{\n\t\tData:            nil, // secret.Data in this case is the metadata\n\t\tVersionMetadata: metadata,\n\t\tRaw:             secret,\n\t}\n\n\tkvSecret.CustomMetadata = extractCustomMetadata(secret)\n\n\treturn kvSecret, nil\n}\n\n// PutMetadata can be used to fully replace a subset of metadata fields for a\n// given KV v2 secret. All fields will replace the corresponding values on the Vault server.\n// Any fields left as nil will reset the field on the Vault server back to its zero value.\n//\n// To only partially replace the values of these metadata fields, use PatchMetadata.\n//\n// This method can also be used to create a new secret with just metadata and no secret data yet.\nfunc (kv *KVv2) PutMetadata(ctx context.Context, secretPath string, metadata KVMetadataPutInput) error {\n\tpathToWriteTo := fmt.Sprintf(\"%s/metadata/%s\", kv.mountPath, secretPath)\n\n\tconst (\n\t\tcasRequiredKey        = \"cas_required\"\n\t\tdeleteVersionAfterKey = \"delete_version_after\"\n\t\tmaxVersionsKey        = \"max_versions\"\n\t\tcustomMetadataKey     = \"custom_metadata\"\n\t)\n\n\t// convert values to a map we can pass to Logical\n\tmetadataMap := make(map[string]interface{})\n\tmetadataMap[maxVersionsKey] = metadata.MaxVersions\n\tmetadataMap[deleteVersionAfterKey] = metadata.DeleteVersionAfter.String()\n\tmetadataMap[casRequiredKey] = metadata.CASRequired\n\tmetadataMap[customMetadataKey] = metadata.CustomMetadata\n\n\t_, err := kv.c.Logical().WriteWithContext(ctx, pathToWriteTo, metadataMap)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error writing secret metadata to %s: %w\", pathToWriteTo, err)\n\t}\n\n\treturn nil\n}\n\n// Patch additively updates the most recent version of a key-value secret,\n// differentiating it from Put which will fully overwrite the previous data.\n// Only the key-value pairs that are new or changing need to be provided.\n//\n// The WithMethod KVOption function can optionally be passed to dictate which\n// kind of patch to perform, as older Vault server versions (pre-1.9.0) may\n// only be able to use the old \"rw\" (read-then-write) style of partial update,\n// whereas newer Vault servers can use the default value of \"patch\" if the\n// client token's policy has the \"patch\" capability.\nfunc (kv *KVv2) Patch(ctx context.Context, secretPath string, newData map[string]interface{}, opts ...KVOption) (*KVSecret, error) {\n\t// determine patch method\n\tvar patchMethod string\n\tvar ok bool\n\tfor _, opt := range opts {\n\t\tk, v := opt()\n\t\tif k == \"method\" {\n\t\t\tpatchMethod, ok = v.(string)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"unsupported type provided for option value; value for patch method should be string \\\"rw\\\" or \\\"patch\\\"\")\n\t\t\t}\n\t\t}\n\t}\n\n\t// Determine which kind of patch to use,\n\t// the newer HTTP Patch style or the older read-then-write style\n\tvar kvs *KVSecret\n\tvar err error\n\tswitch patchMethod {\n\tcase \"rw\":\n\t\tkvs, err = readThenWrite(ctx, kv.c, kv.mountPath, secretPath, newData)\n\tcase \"patch\":\n\t\tkvs, err = mergePatch(ctx, kv.c, kv.mountPath, secretPath, newData, opts...)\n\tcase \"\":\n\t\tkvs, err = mergePatch(ctx, kv.c, kv.mountPath, secretPath, newData, opts...)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unsupported patch method provided; value for patch method should be string \\\"rw\\\" or \\\"patch\\\"\")\n\t}\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to perform patch: %w\", err)\n\t}\n\tif kvs == nil {\n\t\treturn nil, fmt.Errorf(\"no secret was written to %s\", secretPath)\n\t}\n\n\treturn kvs, nil\n}\n\n// PatchMetadata can be used to replace just a subset of a secret's\n// metadata fields at a time, as opposed to PutMetadata which is used to\n// completely replace all fields on the previous metadata.\nfunc (kv *KVv2) PatchMetadata(ctx context.Context, secretPath string, metadata KVMetadataPatchInput) error {\n\tpathToWriteTo := fmt.Sprintf(\"%s/metadata/%s\", kv.mountPath, secretPath)\n\n\tmd, err := toMetadataMap(metadata)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to create map for JSON merge patch request: %w\", err)\n\t}\n\n\t_, err = kv.c.Logical().JSONMergePatch(ctx, pathToWriteTo, md)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error patching metadata at %s: %w\", pathToWriteTo, err)\n\t}\n\n\treturn nil\n}\n\n// Delete deletes the most recent version of a secret from the KV v2\n// secrets engine. To delete an older version, use DeleteVersions.\nfunc (kv *KVv2) Delete(ctx context.Context, secretPath string) error {\n\tpathToDelete := fmt.Sprintf(\"%s/data/%s\", kv.mountPath, secretPath)\n\n\t_, err := kv.c.Logical().DeleteWithContext(ctx, pathToDelete)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error deleting secret at %s: %w\", pathToDelete, err)\n\t}\n\n\treturn nil\n}\n\n// DeleteVersions deletes the specified versions of a secret from the KV v2\n// secrets engine. To delete the latest version of a secret, just use Delete.\nfunc (kv *KVv2) DeleteVersions(ctx context.Context, secretPath string, versions []int) error {\n\t// verb and path are different when trying to delete past versions\n\tpathToDelete := fmt.Sprintf(\"%s/delete/%s\", kv.mountPath, secretPath)\n\n\tif len(versions) == 0 {\n\t\treturn nil\n\t}\n\n\tvar versionsToDelete []string\n\tfor _, version := range versions {\n\t\tversionsToDelete = append(versionsToDelete, strconv.Itoa(version))\n\t}\n\tversionsMap := map[string]interface{}{\n\t\t\"versions\": versionsToDelete,\n\t}\n\t_, err := kv.c.Logical().WriteWithContext(ctx, pathToDelete, versionsMap)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error deleting secret at %s: %w\", pathToDelete, err)\n\t}\n\n\treturn nil\n}\n\n// DeleteMetadata deletes all versions and metadata of the secret at the\n// given path.\nfunc (kv *KVv2) DeleteMetadata(ctx context.Context, secretPath string) error {\n\tpathToDelete := fmt.Sprintf(\"%s/metadata/%s\", kv.mountPath, secretPath)\n\n\t_, err := kv.c.Logical().DeleteWithContext(ctx, pathToDelete)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error deleting secret metadata at %s: %w\", pathToDelete, err)\n\t}\n\n\treturn nil\n}\n\n// Undelete undeletes the given versions of a secret, restoring the data\n// so that it can be fetched again with Get requests.\n//\n// A list of existing versions can be retrieved using the GetVersionsAsList method.\nfunc (kv *KVv2) Undelete(ctx context.Context, secretPath string, versions []int) error {\n\tpathToUndelete := fmt.Sprintf(\"%s/undelete/%s\", kv.mountPath, secretPath)\n\n\tdata := map[string]interface{}{\n\t\t\"versions\": versions,\n\t}\n\n\t_, err := kv.c.Logical().WriteWithContext(ctx, pathToUndelete, data)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error undeleting secret metadata at %s: %w\", pathToUndelete, err)\n\t}\n\n\treturn nil\n}\n\n// Destroy permanently removes the specified secret versions' data\n// from the Vault server. If no secret exists at the given path, no\n// action will be taken.\n//\n// A list of existing versions can be retrieved using the GetVersionsAsList method.\nfunc (kv *KVv2) Destroy(ctx context.Context, secretPath string, versions []int) error {\n\tpathToDestroy := fmt.Sprintf(\"%s/destroy/%s\", kv.mountPath, secretPath)\n\n\tdata := map[string]interface{}{\n\t\t\"versions\": versions,\n\t}\n\n\t_, err := kv.c.Logical().WriteWithContext(ctx, pathToDestroy, data)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error destroying secret metadata at %s: %w\", pathToDestroy, err)\n\t}\n\n\treturn nil\n}\n\n// Rollback can be used to roll a secret back to a previous\n// non-deleted/non-destroyed version. That previous version becomes the\n// next/newest version for the path.\nfunc (kv *KVv2) Rollback(ctx context.Context, secretPath string, toVersion int) (*KVSecret, error) {\n\t// First, do a read to get the current version for check-and-set\n\tlatest, err := kv.Get(ctx, secretPath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to get latest version of secret: %w\", err)\n\t}\n\n\t// Make sure a value already exists\n\tif latest == nil {\n\t\treturn nil, fmt.Errorf(\"no secret was found: %w\", err)\n\t}\n\n\t// Verify metadata found\n\tif latest.VersionMetadata == nil {\n\t\treturn nil, fmt.Errorf(\"no metadata found; rollback can only be used on existing data\")\n\t}\n\n\t// Now run it again and read the version we want to roll back to\n\trollbackVersion, err := kv.GetVersion(ctx, secretPath, toVersion)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to get previous version %d of secret: %w\", toVersion, err)\n\t}\n\n\terr = validateRollbackVersion(rollbackVersion)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid rollback version %d: %w\", toVersion, err)\n\t}\n\n\tcasVersion := latest.VersionMetadata.Version\n\tkvs, err := kv.Put(ctx, secretPath, rollbackVersion.Data, WithCheckAndSet(casVersion))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to roll back to previous secret version: %w\", err)\n\t}\n\n\treturn kvs, nil\n}\n\nfunc extractCustomMetadata(secret *Secret) map[string]interface{} {\n\t// Logical Writes return the metadata directly, Reads return it nested inside the \"metadata\" key\n\tcustomMetadataInterface, ok := secret.Data[\"custom_metadata\"]\n\tif !ok {\n\t\tmetadataInterface := secret.Data[\"metadata\"]\n\t\tmetadataMap, ok := metadataInterface.(map[string]interface{})\n\t\tif !ok {\n\t\t\treturn nil\n\t\t}\n\t\tcustomMetadataInterface = metadataMap[\"custom_metadata\"]\n\t}\n\n\tcm, ok := customMetadataInterface.(map[string]interface{})\n\tif !ok {\n\t\treturn nil\n\t}\n\n\treturn cm\n}\n\nfunc extractDataAndVersionMetadata(secret *Secret) (*KVSecret, error) {\n\t// A nil map is a valid value for data: secret.Data will be nil when this\n\t// version of the secret has been deleted, but the metadata is still\n\t// available.\n\tvar data map[string]interface{}\n\tif secret.Data != nil {\n\t\tdataInterface, ok := secret.Data[\"data\"]\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"missing expected 'data' element\")\n\t\t}\n\n\t\tif dataInterface != nil {\n\t\t\tdata, ok = dataInterface.(map[string]interface{})\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"unexpected type for 'data' element: %T (%#v)\", data, data)\n\t\t\t}\n\t\t}\n\t}\n\n\tmetadata, err := extractVersionMetadata(secret)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to get version metadata: %w\", err)\n\t}\n\n\treturn &KVSecret{\n\t\tData:            data,\n\t\tVersionMetadata: metadata,\n\t\tRaw:             secret,\n\t}, nil\n}\n\nfunc extractVersionMetadata(secret *Secret) (*KVVersionMetadata, error) {\n\tvar metadata *KVVersionMetadata\n\n\tif secret.Data == nil {\n\t\treturn nil, nil\n\t}\n\n\t// Logical Writes return the metadata directly, Reads return it nested inside the \"metadata\" key\n\tvar metadataMap map[string]interface{}\n\tmetadataInterface, ok := secret.Data[\"metadata\"]\n\tif ok {\n\t\tmetadataMap, ok = metadataInterface.(map[string]interface{})\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"unexpected type for 'metadata' element: %T (%#v)\", metadataInterface, metadataInterface)\n\t\t}\n\t} else {\n\t\tmetadataMap = secret.Data\n\t}\n\n\t// deletion_time usually comes in as an empty string which can't be\n\t// processed as time.RFC3339, so we reset it to a convertible value\n\tif metadataMap[\"deletion_time\"] == \"\" {\n\t\tmetadataMap[\"deletion_time\"] = time.Time{}\n\t}\n\n\td, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{\n\t\tDecodeHook: mapstructure.StringToTimeHookFunc(time.RFC3339),\n\t\tResult:     &metadata,\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error setting up decoder for API response: %w\", err)\n\t}\n\n\terr = d.Decode(metadataMap)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error decoding metadata from API response into VersionMetadata: %w\", err)\n\t}\n\n\treturn metadata, nil\n}\n\nfunc extractFullMetadata(secret *Secret) (*KVMetadata, error) {\n\tvar metadata *KVMetadata\n\n\tif secret.Data == nil {\n\t\treturn nil, nil\n\t}\n\n\tif versions, ok := secret.Data[\"versions\"]; ok {\n\t\tversionsMap := versions.(map[string]interface{})\n\t\tif len(versionsMap) > 0 {\n\t\t\tfor version, metadata := range versionsMap {\n\t\t\t\tmetadataMap := metadata.(map[string]interface{})\n\t\t\t\t// deletion_time usually comes in as an empty string which can't be\n\t\t\t\t// processed as time.RFC3339, so we reset it to a convertible value\n\t\t\t\tif metadataMap[\"deletion_time\"] == \"\" {\n\t\t\t\t\tmetadataMap[\"deletion_time\"] = time.Time{}\n\t\t\t\t}\n\t\t\t\tversionInt, err := strconv.Atoi(version)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, fmt.Errorf(\"error converting version %s to integer: %w\", version, err)\n\t\t\t\t}\n\t\t\t\tmetadataMap[\"version\"] = versionInt\n\t\t\t\tversionsMap[version] = metadataMap // save the updated copy of the metadata map\n\t\t\t}\n\t\t}\n\t\tsecret.Data[\"versions\"] = versionsMap // save the updated copy of the versions map\n\t}\n\n\td, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{\n\t\tDecodeHook: mapstructure.ComposeDecodeHookFunc(\n\t\t\tmapstructure.StringToTimeHookFunc(time.RFC3339),\n\t\t\tmapstructure.StringToTimeDurationHookFunc(),\n\t\t),\n\t\tResult: &metadata,\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error setting up decoder for API response: %w\", err)\n\t}\n\n\terr = d.Decode(secret.Data)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error decoding metadata from API response into KVMetadata: %w\", err)\n\t}\n\n\treturn metadata, nil\n}\n\nfunc validateRollbackVersion(rollbackVersion *KVSecret) error {\n\t// Make sure a value already exists\n\tif rollbackVersion == nil || rollbackVersion.Data == nil {\n\t\treturn fmt.Errorf(\"no secret found\")\n\t}\n\n\t// Verify metadata found\n\tif rollbackVersion.VersionMetadata == nil {\n\t\treturn fmt.Errorf(\"no version metadata found; rollback only works on existing data\")\n\t}\n\n\t// Verify it hasn't been deleted\n\tif !rollbackVersion.VersionMetadata.DeletionTime.IsZero() {\n\t\treturn fmt.Errorf(\"cannot roll back to a version that has been deleted\")\n\t}\n\n\tif rollbackVersion.VersionMetadata.Destroyed {\n\t\treturn fmt.Errorf(\"cannot roll back to a version that has been destroyed\")\n\t}\n\n\t// Verify old data found\n\tif rollbackVersion.Data == nil {\n\t\treturn fmt.Errorf(\"no data found; rollback only works on existing data\")\n\t}\n\n\treturn nil\n}\n\nfunc mergePatch(ctx context.Context, client *Client, mountPath string, secretPath string, newData map[string]interface{}, opts ...KVOption) (*KVSecret, error) {\n\tpathToMergePatch := fmt.Sprintf(\"%s/data/%s\", mountPath, secretPath)\n\n\t// take any other additional options provided\n\t// and pass them along to the patch request\n\twrappedData := map[string]interface{}{\n\t\t\"data\": newData,\n\t}\n\toptions := make(map[string]interface{})\n\tfor _, opt := range opts {\n\t\tk, v := opt()\n\t\toptions[k] = v\n\t}\n\tif len(opts) > 0 {\n\t\twrappedData[\"options\"] = options\n\t}\n\n\tsecret, err := client.Logical().JSONMergePatch(ctx, pathToMergePatch, wrappedData)\n\tif err != nil {\n\t\tvar re *ResponseError\n\n\t\tif errors.As(err, &re) {\n\t\t\tswitch re.StatusCode {\n\t\t\t// 403\n\t\t\tcase http.StatusForbidden:\n\t\t\t\treturn nil, fmt.Errorf(\"received 403 from Vault server; please ensure that token's policy has \\\"patch\\\" capability: %w\", err)\n\n\t\t\t// 404\n\t\t\tcase http.StatusNotFound:\n\t\t\t\treturn nil, fmt.Errorf(\"%w: performing merge patch to %s\", ErrSecretNotFound, pathToMergePatch)\n\n\t\t\t// 405\n\t\t\tcase http.StatusMethodNotAllowed:\n\t\t\t\t// If it's a 405, that probably means the server is running a pre-1.9\n\t\t\t\t// Vault version that doesn't support the HTTP PATCH method.\n\t\t\t\t// Fall back to the old way of doing it.\n\t\t\t\treturn readThenWrite(ctx, client, mountPath, secretPath, newData)\n\t\t\t}\n\t\t}\n\n\t\treturn nil, fmt.Errorf(\"error performing merge patch to %s: %w\", pathToMergePatch, err)\n\t}\n\n\tmetadata, err := extractVersionMetadata(secret)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"secret was written successfully, but unable to view version metadata from response: %w\", err)\n\t}\n\n\tkvSecret := &KVSecret{\n\t\tData:            nil, // secret.Data in this case is the metadata\n\t\tVersionMetadata: metadata,\n\t\tRaw:             secret,\n\t}\n\n\tkvSecret.CustomMetadata = extractCustomMetadata(secret)\n\n\treturn kvSecret, nil\n}\n\nfunc readThenWrite(ctx context.Context, client *Client, mountPath string, secretPath string, newData map[string]interface{}) (*KVSecret, error) {\n\t// First, read the secret.\n\texistingVersion, err := client.KVv2(mountPath).Get(ctx, secretPath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error reading secret as part of read-then-write patch operation: %w\", err)\n\t}\n\n\t// Make sure the secret already exists\n\tif existingVersion == nil || existingVersion.Data == nil {\n\t\treturn nil, fmt.Errorf(\"%w: at %s as part of read-then-write patch operation\", ErrSecretNotFound, secretPath)\n\t}\n\n\t// Verify existing secret has metadata\n\tif existingVersion.VersionMetadata == nil {\n\t\treturn nil, fmt.Errorf(\"no metadata found at %s; patch can only be used on existing data\", secretPath)\n\t}\n\n\t// Copy new data over with existing data\n\tcombinedData := existingVersion.Data\n\tfor k, v := range newData {\n\t\tcombinedData[k] = v\n\t}\n\n\tupdatedSecret, err := client.KVv2(mountPath).Put(ctx, secretPath, combinedData, WithCheckAndSet(existingVersion.VersionMetadata.Version))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error writing secret to %s: %w\", secretPath, err)\n\t}\n\n\treturn updatedSecret, nil\n}\n\nfunc toMetadataMap(patchInput KVMetadataPatchInput) (map[string]interface{}, error) {\n\tmetadataMap := make(map[string]interface{})\n\n\tconst (\n\t\tcasRequiredKey        = \"cas_required\"\n\t\tdeleteVersionAfterKey = \"delete_version_after\"\n\t\tmaxVersionsKey        = \"max_versions\"\n\t\tcustomMetadataKey     = \"custom_metadata\"\n\t)\n\n\t// The KVMetadataPatchInput struct is designed to have pointer fields so that\n\t// the user can easily express the difference between explicitly setting a\n\t// field back to its zero value (e.g. false), as opposed to just having\n\t// the field remain unchanged (e.g. nil). This way, they only need to pass\n\t// the fields they want to change.\n\tif patchInput.MaxVersions != nil {\n\t\tmetadataMap[maxVersionsKey] = *(patchInput.MaxVersions)\n\t}\n\tif patchInput.CASRequired != nil {\n\t\tmetadataMap[casRequiredKey] = *(patchInput.CASRequired)\n\t}\n\tif patchInput.CustomMetadata != nil {\n\t\tif len(patchInput.CustomMetadata) == 0 { // empty non-nil map means delete all the keys\n\t\t\tmetadataMap[customMetadataKey] = nil\n\t\t} else {\n\t\t\tmetadataMap[customMetadataKey] = patchInput.CustomMetadata\n\t\t}\n\t}\n\tif patchInput.DeleteVersionAfter != nil {\n\t\tmetadataMap[deleteVersionAfterKey] = patchInput.DeleteVersionAfter.String()\n\t}\n\n\treturn metadataMap, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/lifetime_watcher.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"errors\"\n\t\"math/rand\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/cenkalti/backoff/v3\"\n)\n\nvar (\n\tErrLifetimeWatcherMissingInput  = errors.New(\"missing input\")\n\tErrLifetimeWatcherMissingSecret = errors.New(\"missing secret\")\n\tErrLifetimeWatcherNotRenewable  = errors.New(\"secret is not renewable\")\n\tErrLifetimeWatcherNoSecretData  = errors.New(\"returned empty secret data\")\n\n\t// Deprecated; kept for compatibility\n\tErrRenewerMissingInput  = errors.New(\"missing input to renewer\")\n\tErrRenewerMissingSecret = errors.New(\"missing secret to renew\")\n\tErrRenewerNotRenewable  = errors.New(\"secret is not renewable\")\n\tErrRenewerNoSecretData  = errors.New(\"returned empty secret data\")\n\n\t// DefaultLifetimeWatcherRenewBuffer is the default size of the buffer for renew\n\t// messages on the channel.\n\tDefaultLifetimeWatcherRenewBuffer = 5\n\t// Deprecated: kept for backwards compatibility\n\tDefaultRenewerRenewBuffer = 5\n)\n\ntype RenewBehavior uint\n\nconst (\n\t// RenewBehaviorIgnoreErrors means we will attempt to keep renewing until\n\t// we hit the lifetime threshold. It also ignores errors stemming from\n\t// passing a non-renewable lease in. In practice, this means you simply\n\t// reauthenticate/refetch credentials when the watcher exits. This is the\n\t// default.\n\tRenewBehaviorIgnoreErrors RenewBehavior = iota\n\n\t// RenewBehaviorRenewDisabled turns off renewal attempts entirely. This\n\t// allows you to simply watch lifetime and have the watcher return at a\n\t// reasonable threshold without actually making Vault calls.\n\tRenewBehaviorRenewDisabled\n\n\t// RenewBehaviorErrorOnErrors is the \"legacy\" behavior which always exits\n\t// on some kind of error\n\tRenewBehaviorErrorOnErrors\n)\n\n// LifetimeWatcher is a process for watching lifetime of a secret.\n//\n//\twatcher, err := client.NewLifetimeWatcher(&LifetimeWatcherInput{\n//\t\tSecret: mySecret,\n//\t})\n//\tgo watcher.Start()\n//\tdefer watcher.Stop()\n//\n//\tfor {\n//\t\tselect {\n//\t\tcase err := <-watcher.DoneCh():\n//\t\t\tif err != nil {\n//\t\t\t\tlog.Fatal(err)\n//\t\t\t}\n//\n//\t\t\t// Renewal is now over\n//\t\tcase renewal := <-watcher.RenewCh():\n//\t\t\tlog.Printf(\"Successfully renewed: %#v\", renewal)\n//\t\t}\n//\t}\n//\n// `DoneCh` will return if renewal fails, or if the remaining lease duration is\n// under a built-in threshold and either renewing is not extending it or\n// renewing is disabled.  In both cases, the caller should attempt a re-read of\n// the secret. Clients should check the return value of the channel to see if\n// renewal was successful.\ntype LifetimeWatcher struct {\n\tl sync.Mutex\n\n\tclient        *Client\n\tsecret        *Secret\n\tgrace         time.Duration\n\trandom        *rand.Rand\n\tincrement     int\n\tdoneCh        chan error\n\trenewCh       chan *RenewOutput\n\trenewBehavior RenewBehavior\n\n\tstopped bool\n\tstopCh  chan struct{}\n\n\terrLifetimeWatcherNotRenewable error\n\terrLifetimeWatcherNoSecretData error\n}\n\n// LifetimeWatcherInput is used as input to the renew function.\ntype LifetimeWatcherInput struct {\n\t// Secret is the secret to renew\n\tSecret *Secret\n\n\t// DEPRECATED: this does not do anything.\n\tGrace time.Duration\n\n\t// Rand is the randomizer to use for underlying randomization. If not\n\t// provided, one will be generated and seeded automatically. If provided, it\n\t// is assumed to have already been seeded.\n\tRand *rand.Rand\n\n\t// RenewBuffer is the size of the buffered channel where renew messages are\n\t// dispatched.\n\tRenewBuffer int\n\n\t// The new TTL, in seconds, that should be set on the lease. The TTL set\n\t// here may or may not be honored by the vault server, based on Vault\n\t// configuration or any associated max TTL values. If specified, the\n\t// minimum of this value and the remaining lease duration will be used\n\t// for grace period calculations.\n\tIncrement int\n\n\t// RenewBehavior controls what happens when a renewal errors or the\n\t// passed-in secret is not renewable.\n\tRenewBehavior RenewBehavior\n}\n\n// RenewOutput is the metadata returned to the client (if it's listening) to\n// renew messages.\ntype RenewOutput struct {\n\t// RenewedAt is the timestamp when the renewal took place (UTC).\n\tRenewedAt time.Time\n\n\t// Secret is the underlying renewal data. It's the same struct as all data\n\t// that is returned from Vault, but since this is renewal data, it will not\n\t// usually include the secret itself.\n\tSecret *Secret\n}\n\n// NewLifetimeWatcher creates a new renewer from the given input.\nfunc (c *Client) NewLifetimeWatcher(i *LifetimeWatcherInput) (*LifetimeWatcher, error) {\n\tif i == nil {\n\t\treturn nil, ErrLifetimeWatcherMissingInput\n\t}\n\n\tsecret := i.Secret\n\tif secret == nil {\n\t\treturn nil, ErrLifetimeWatcherMissingSecret\n\t}\n\n\trandom := i.Rand\n\tif random == nil {\n\t\t// NOTE:\n\t\t// Rather than a cryptographically secure random number generator (RNG),\n\t\t// the default behavior uses the math/rand package. The random number is\n\t\t// used to introduce a slight jitter when calculating the grace period\n\t\t// for a monitored secret monitoring. This is intended to stagger renewal\n\t\t// requests to the Vault server, but in a semi-predictable way, so there\n\t\t// is no need to use a cryptographically secure RNG.\n\t\trandom = rand.New(rand.NewSource(int64(time.Now().Nanosecond())))\n\t}\n\n\trenewBuffer := i.RenewBuffer\n\tif renewBuffer == 0 {\n\t\trenewBuffer = DefaultLifetimeWatcherRenewBuffer\n\t}\n\n\treturn &LifetimeWatcher{\n\t\tclient:        c,\n\t\tsecret:        secret,\n\t\tincrement:     i.Increment,\n\t\trandom:        random,\n\t\tdoneCh:        make(chan error, 1),\n\t\trenewCh:       make(chan *RenewOutput, renewBuffer),\n\t\trenewBehavior: i.RenewBehavior,\n\n\t\tstopped: false,\n\t\tstopCh:  make(chan struct{}),\n\n\t\terrLifetimeWatcherNotRenewable: ErrLifetimeWatcherNotRenewable,\n\t\terrLifetimeWatcherNoSecretData: ErrLifetimeWatcherNoSecretData,\n\t}, nil\n}\n\n// Deprecated: exists only for backwards compatibility. Calls\n// NewLifetimeWatcher, and sets compatibility flags.\nfunc (c *Client) NewRenewer(i *LifetimeWatcherInput) (*LifetimeWatcher, error) {\n\tif i == nil {\n\t\treturn nil, ErrRenewerMissingInput\n\t}\n\n\tsecret := i.Secret\n\tif secret == nil {\n\t\treturn nil, ErrRenewerMissingSecret\n\t}\n\n\trenewer, err := c.NewLifetimeWatcher(i)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\trenewer.renewBehavior = RenewBehaviorErrorOnErrors\n\trenewer.errLifetimeWatcherNotRenewable = ErrRenewerNotRenewable\n\trenewer.errLifetimeWatcherNoSecretData = ErrRenewerNoSecretData\n\treturn renewer, err\n}\n\n// DoneCh returns the channel where the renewer will publish when renewal stops.\n// If there is an error, this will be an error.\nfunc (r *LifetimeWatcher) DoneCh() <-chan error {\n\treturn r.doneCh\n}\n\n// RenewCh is a channel that receives a message when a successful renewal takes\n// place and includes metadata about the renewal.\nfunc (r *LifetimeWatcher) RenewCh() <-chan *RenewOutput {\n\treturn r.renewCh\n}\n\n// Stop stops the renewer.\nfunc (r *LifetimeWatcher) Stop() {\n\tr.l.Lock()\n\tdefer r.l.Unlock()\n\n\tif !r.stopped {\n\t\tclose(r.stopCh)\n\t\tr.stopped = true\n\t}\n}\n\n// Start starts a background process for watching the lifetime of this secret.\n// If renewal is enabled, when the secret has auth data, this attempts to renew\n// the auth (token); When the secret has a lease, this attempts to renew the\n// lease.\nfunc (r *LifetimeWatcher) Start() {\n\tr.doneCh <- r.doRenew()\n}\n\n// Renew is for compatibility with the legacy api.Renewer. Calling Renew\n// simply chains to Start.\nfunc (r *LifetimeWatcher) Renew() {\n\tr.Start()\n}\n\ntype renewFunc func(string, int) (*Secret, error)\n\n// doRenew is a helper for renewing authentication.\nfunc (r *LifetimeWatcher) doRenew() error {\n\tdefaultInitialRetryInterval := 10 * time.Second\n\tswitch {\n\tcase r.secret.Auth != nil:\n\t\treturn r.doRenewWithOptions(true, !r.secret.Auth.Renewable,\n\t\t\tr.secret.Auth.LeaseDuration, r.secret.Auth.ClientToken,\n\t\t\tr.client.Auth().Token().RenewTokenAsSelf, defaultInitialRetryInterval)\n\tdefault:\n\t\treturn r.doRenewWithOptions(false, !r.secret.Renewable,\n\t\t\tr.secret.LeaseDuration, r.secret.LeaseID,\n\t\t\tr.client.Sys().Renew, defaultInitialRetryInterval)\n\t}\n}\n\nfunc (r *LifetimeWatcher) doRenewWithOptions(tokenMode bool, nonRenewable bool, initLeaseDuration int, credString string,\n\trenew renewFunc, initialRetryInterval time.Duration,\n) error {\n\tif credString == \"\" ||\n\t\t(nonRenewable && r.renewBehavior == RenewBehaviorErrorOnErrors) {\n\t\treturn r.errLifetimeWatcherNotRenewable\n\t}\n\n\tinitialTime := time.Now()\n\tpriorDuration := time.Duration(initLeaseDuration) * time.Second\n\tr.calculateGrace(priorDuration, time.Duration(r.increment)*time.Second)\n\tvar errorBackoff backoff.BackOff\n\n\tfor {\n\t\t// Check if we are stopped.\n\t\tselect {\n\t\tcase <-r.stopCh:\n\t\t\treturn nil\n\t\tdefault:\n\t\t}\n\n\t\tvar remainingLeaseDuration time.Duration\n\t\tfallbackLeaseDuration := initialTime.Add(priorDuration).Sub(time.Now())\n\t\tvar renewal *Secret\n\t\tvar err error\n\n\t\tswitch {\n\t\tcase nonRenewable || r.renewBehavior == RenewBehaviorRenewDisabled:\n\t\t\t// Can't or won't renew, just keep the same expiration so we exit\n\t\t\t// when it's reauthentication time\n\t\t\tremainingLeaseDuration = fallbackLeaseDuration\n\n\t\tdefault:\n\t\t\t// Renew the token\n\t\t\trenewal, err = renew(credString, r.increment)\n\t\t\tif err != nil || renewal == nil || (tokenMode && renewal.Auth == nil) {\n\t\t\t\tif r.renewBehavior == RenewBehaviorErrorOnErrors {\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif renewal == nil || (tokenMode && renewal.Auth == nil) {\n\t\t\t\t\t\treturn r.errLifetimeWatcherNoSecretData\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Calculate remaining duration until initial token lease expires\n\t\t\t\tremainingLeaseDuration = initialTime.Add(time.Duration(initLeaseDuration) * time.Second).Sub(time.Now())\n\t\t\t\tif errorBackoff == nil {\n\t\t\t\t\terrorBackoff = &backoff.ExponentialBackOff{\n\t\t\t\t\t\tMaxElapsedTime:      remainingLeaseDuration,\n\t\t\t\t\t\tRandomizationFactor: backoff.DefaultRandomizationFactor,\n\t\t\t\t\t\tInitialInterval:     initialRetryInterval,\n\t\t\t\t\t\tMaxInterval:         5 * time.Minute,\n\t\t\t\t\t\tMultiplier:          2,\n\t\t\t\t\t\tClock:               backoff.SystemClock,\n\t\t\t\t\t}\n\t\t\t\t\terrorBackoff.Reset()\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\terrorBackoff = nil\n\n\t\t\t// Push a message that a renewal took place.\n\t\t\tselect {\n\t\t\tcase r.renewCh <- &RenewOutput{time.Now().UTC(), renewal}:\n\t\t\tdefault:\n\t\t\t}\n\n\t\t\t// Possibly error if we are not renewable\n\t\t\tif ((tokenMode && !renewal.Auth.Renewable) || (!tokenMode && !renewal.Renewable)) &&\n\t\t\t\tr.renewBehavior == RenewBehaviorErrorOnErrors {\n\t\t\t\treturn r.errLifetimeWatcherNotRenewable\n\t\t\t}\n\n\t\t\t// Reset initial time\n\t\t\tinitialTime = time.Now()\n\n\t\t\t// Grab the lease duration\n\t\t\tinitLeaseDuration = renewal.LeaseDuration\n\t\t\tif tokenMode {\n\t\t\t\tinitLeaseDuration = renewal.Auth.LeaseDuration\n\t\t\t}\n\n\t\t\tremainingLeaseDuration = time.Duration(initLeaseDuration) * time.Second\n\t\t}\n\n\t\tvar sleepDuration time.Duration\n\n\t\tif errorBackoff == nil {\n\t\t\tsleepDuration = r.calculateSleepDuration(remainingLeaseDuration, priorDuration)\n\t\t} else if errorBackoff.NextBackOff() == backoff.Stop {\n\t\t\treturn err\n\t\t}\n\n\t\t// remainingLeaseDuration becomes the priorDuration for the next loop\n\t\tpriorDuration = remainingLeaseDuration\n\n\t\t// If we are within grace, return now; or, if the amount of time we\n\t\t// would sleep would land us in the grace period. This helps with short\n\t\t// tokens; for example, you don't want a current lease duration of 4\n\t\t// seconds, a grace period of 3 seconds, and end up sleeping for more\n\t\t// than three of those seconds and having a very small budget of time\n\t\t// to renew.\n\t\tif remainingLeaseDuration <= r.grace || remainingLeaseDuration-sleepDuration <= r.grace {\n\t\t\treturn nil\n\t\t}\n\n\t\ttimer := time.NewTimer(sleepDuration)\n\t\tselect {\n\t\tcase <-r.stopCh:\n\t\t\ttimer.Stop()\n\t\t\treturn nil\n\t\tcase <-timer.C:\n\t\t\tcontinue\n\t\t}\n\t}\n}\n\n// calculateSleepDuration calculates the amount of time the LifeTimeWatcher should sleep\n// before re-entering its loop.\nfunc (r *LifetimeWatcher) calculateSleepDuration(remainingLeaseDuration, priorDuration time.Duration) time.Duration {\n\t// We keep evaluating a new grace period so long as the lease is\n\t// extending. Once it stops extending, we've hit the max and need to\n\t// rely on the grace duration.\n\tif remainingLeaseDuration > priorDuration {\n\t\tr.calculateGrace(remainingLeaseDuration, time.Duration(r.increment)*time.Second)\n\t}\n\n\t// The sleep duration is set to 2/3 of the current lease duration plus\n\t// 1/3 of the current grace period, which adds jitter.\n\treturn time.Duration(float64(remainingLeaseDuration.Nanoseconds())*2/3 + float64(r.grace.Nanoseconds())/3)\n}\n\n// calculateGrace calculates the grace period based on the minimum of the\n// remaining lease duration and the token increment value; it also adds some\n// jitter to not have clients be in sync.\nfunc (r *LifetimeWatcher) calculateGrace(leaseDuration, increment time.Duration) {\n\tminDuration := leaseDuration\n\tif minDuration > increment && increment > 0 {\n\t\tminDuration = increment\n\t}\n\n\tif minDuration <= 0 {\n\t\tr.grace = 0\n\t\treturn\n\t}\n\n\tleaseNanos := float64(minDuration.Nanoseconds())\n\tjitterMax := 0.1 * leaseNanos\n\n\t// For a given lease duration, we want to allow 80-90% of that to elapse,\n\t// so the remaining amount is the grace period\n\tr.grace = time.Duration(jitterMax) + time.Duration(uint64(r.random.Int63())%uint64(jitterMax))\n}\n\ntype (\n\tRenewer      = LifetimeWatcher\n\tRenewerInput = LifetimeWatcherInput\n)\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/logical.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/hashicorp/errwrap\"\n)\n\nconst (\n\twrappedResponseLocation = \"cubbyhole/response\"\n)\n\nvar (\n\t// The default TTL that will be used with `sys/wrapping/wrap`, can be\n\t// changed\n\tDefaultWrappingTTL = \"5m\"\n\n\t// The default function used if no other function is set. It honors the env\n\t// var to set the wrap TTL. The default wrap TTL will apply when when writing\n\t// to `sys/wrapping/wrap` when the env var is not set.\n\tDefaultWrappingLookupFunc = func(operation, path string) string {\n\t\tif os.Getenv(EnvVaultWrapTTL) != \"\" {\n\t\t\treturn os.Getenv(EnvVaultWrapTTL)\n\t\t}\n\n\t\tif (operation == http.MethodPut || operation == http.MethodPost) && path == \"sys/wrapping/wrap\" {\n\t\t\treturn DefaultWrappingTTL\n\t\t}\n\n\t\treturn \"\"\n\t}\n)\n\n// Logical is used to perform logical backend operations on Vault.\ntype Logical struct {\n\tc *Client\n}\n\n// Logical is used to return the client for logical-backend API calls.\nfunc (c *Client) Logical() *Logical {\n\treturn &Logical{c: c}\n}\n\nfunc (c *Logical) Read(path string) (*Secret, error) {\n\treturn c.ReadWithDataWithContext(context.Background(), path, nil)\n}\n\nfunc (c *Logical) ReadWithContext(ctx context.Context, path string) (*Secret, error) {\n\treturn c.ReadWithDataWithContext(ctx, path, nil)\n}\n\nfunc (c *Logical) ReadWithData(path string, data map[string][]string) (*Secret, error) {\n\treturn c.ReadWithDataWithContext(context.Background(), path, data)\n}\n\nfunc (c *Logical) ReadWithDataWithContext(ctx context.Context, path string, data map[string][]string) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tresp, err := c.readRawWithDataWithContext(ctx, path, data)\n\treturn c.ParseRawResponseAndCloseBody(resp, err)\n}\n\n// ReadRaw attempts to read the value stored at the given Vault path\n// (without '/v1/' prefix) and returns a raw *http.Response.\n//\n// Note: the raw-response functions do not respect the client-configured\n// request timeout; if a timeout is desired, please use ReadRawWithContext\n// instead and set the timeout through context.WithTimeout or context.WithDeadline.\nfunc (c *Logical) ReadRaw(path string) (*Response, error) {\n\treturn c.ReadRawWithDataWithContext(context.Background(), path, nil)\n}\n\n// ReadRawWithContext attempts to read the value stored at the give Vault path\n// (without '/v1/' prefix) and returns a raw *http.Response.\n//\n// Note: the raw-response functions do not respect the client-configured\n// request timeout; if a timeout is desired, please set it through\n// context.WithTimeout or context.WithDeadline.\nfunc (c *Logical) ReadRawWithContext(ctx context.Context, path string) (*Response, error) {\n\treturn c.ReadRawWithDataWithContext(ctx, path, nil)\n}\n\n// ReadRawWithData attempts to read the value stored at the given Vault\n// path (without '/v1/' prefix) and returns a raw *http.Response. The 'data' map\n// is added as query parameters to the request.\n//\n// Note: the raw-response functions do not respect the client-configured\n// request timeout; if a timeout is desired, please use\n// ReadRawWithDataWithContext instead and set the timeout through\n// context.WithTimeout or context.WithDeadline.\nfunc (c *Logical) ReadRawWithData(path string, data map[string][]string) (*Response, error) {\n\treturn c.ReadRawWithDataWithContext(context.Background(), path, data)\n}\n\n// ReadRawWithDataWithContext attempts to read the value stored at the given\n// Vault path (without '/v1/' prefix) and returns a raw *http.Response. The 'data'\n// map is added as query parameters to the request.\n//\n// Note: the raw-response functions do not respect the client-configured\n// request timeout; if a timeout is desired, please set it through\n// context.WithTimeout or context.WithDeadline.\nfunc (c *Logical) ReadRawWithDataWithContext(ctx context.Context, path string, data map[string][]string) (*Response, error) {\n\treturn c.readRawWithDataWithContext(ctx, path, data)\n}\n\nfunc (c *Logical) ParseRawResponseAndCloseBody(resp *Response, err error) (*Secret, error) {\n\tif resp != nil {\n\t\tdefer resp.Body.Close()\n\t}\n\tif resp != nil && resp.StatusCode == 404 {\n\t\tsecret, parseErr := ParseSecret(resp.Body)\n\t\tswitch parseErr {\n\t\tcase nil:\n\t\tcase io.EOF:\n\t\t\treturn nil, nil\n\t\tdefault:\n\t\t\treturn nil, parseErr\n\t\t}\n\t\tif secret != nil && (len(secret.Warnings) > 0 || len(secret.Data) > 0) {\n\t\t\treturn secret, nil\n\t\t}\n\t\treturn nil, nil\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *Logical) readRawWithDataWithContext(ctx context.Context, path string, data map[string][]string) (*Response, error) {\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/\"+path)\n\n\tvar values url.Values\n\tfor k, v := range data {\n\t\tif values == nil {\n\t\t\tvalues = make(url.Values)\n\t\t}\n\t\tfor _, val := range v {\n\t\t\tvalues.Add(k, val)\n\t\t}\n\t}\n\n\tif values != nil {\n\t\tr.Params = values\n\t}\n\n\treturn c.c.RawRequestWithContext(ctx, r)\n}\n\nfunc (c *Logical) List(path string) (*Secret, error) {\n\treturn c.ListWithContext(context.Background(), path)\n}\n\nfunc (c *Logical) ListWithContext(ctx context.Context, path string) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(\"LIST\", \"/v1/\"+path)\n\t// Set this for broader compatibility, but we use LIST above to be able to\n\t// handle the wrapping lookup function\n\tr.Method = http.MethodGet\n\tr.Params.Set(\"list\", \"true\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif resp != nil {\n\t\tdefer resp.Body.Close()\n\t}\n\tif resp != nil && resp.StatusCode == 404 {\n\t\tsecret, parseErr := ParseSecret(resp.Body)\n\t\tswitch parseErr {\n\t\tcase nil:\n\t\tcase io.EOF:\n\t\t\treturn nil, nil\n\t\tdefault:\n\t\t\treturn nil, parseErr\n\t\t}\n\t\tif secret != nil && (len(secret.Warnings) > 0 || len(secret.Data) > 0) {\n\t\t\treturn secret, nil\n\t\t}\n\t\treturn nil, nil\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *Logical) Write(path string, data map[string]interface{}) (*Secret, error) {\n\treturn c.WriteWithContext(context.Background(), path, data)\n}\n\nfunc (c *Logical) WriteWithContext(ctx context.Context, path string, data map[string]interface{}) (*Secret, error) {\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/\"+path)\n\tif err := r.SetJSONBody(data); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn c.write(ctx, path, r)\n}\n\nfunc (c *Logical) JSONMergePatch(ctx context.Context, path string, data map[string]interface{}) (*Secret, error) {\n\tr := c.c.NewRequest(http.MethodPatch, \"/v1/\"+path)\n\tr.Headers.Set(\"Content-Type\", \"application/merge-patch+json\")\n\tif err := r.SetJSONBody(data); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn c.write(ctx, path, r)\n}\n\nfunc (c *Logical) WriteBytes(path string, data []byte) (*Secret, error) {\n\treturn c.WriteBytesWithContext(context.Background(), path, data)\n}\n\nfunc (c *Logical) WriteBytesWithContext(ctx context.Context, path string, data []byte) (*Secret, error) {\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/\"+path)\n\tr.BodyBytes = data\n\n\treturn c.write(ctx, path, r)\n}\n\nfunc (c *Logical) write(ctx context.Context, path string, request *Request) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tresp, err := c.c.rawRequestWithContext(ctx, request)\n\tif resp != nil {\n\t\tdefer resp.Body.Close()\n\t}\n\tif resp != nil && resp.StatusCode == 404 {\n\t\tsecret, parseErr := ParseSecret(resp.Body)\n\t\tswitch parseErr {\n\t\tcase nil:\n\t\tcase io.EOF:\n\t\t\treturn nil, nil\n\t\tdefault:\n\t\t\treturn nil, parseErr\n\t\t}\n\t\tif secret != nil && (len(secret.Warnings) > 0 || len(secret.Data) > 0) {\n\t\t\treturn secret, err\n\t\t}\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *Logical) Delete(path string) (*Secret, error) {\n\treturn c.DeleteWithContext(context.Background(), path)\n}\n\nfunc (c *Logical) DeleteWithContext(ctx context.Context, path string) (*Secret, error) {\n\treturn c.DeleteWithDataWithContext(ctx, path, nil)\n}\n\nfunc (c *Logical) DeleteWithData(path string, data map[string][]string) (*Secret, error) {\n\treturn c.DeleteWithDataWithContext(context.Background(), path, data)\n}\n\nfunc (c *Logical) DeleteWithDataWithContext(ctx context.Context, path string, data map[string][]string) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodDelete, \"/v1/\"+path)\n\n\tvar values url.Values\n\tfor k, v := range data {\n\t\tif values == nil {\n\t\t\tvalues = make(url.Values)\n\t\t}\n\t\tfor _, val := range v {\n\t\t\tvalues.Add(k, val)\n\t\t}\n\t}\n\n\tif values != nil {\n\t\tr.Params = values\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif resp != nil {\n\t\tdefer resp.Body.Close()\n\t}\n\tif resp != nil && resp.StatusCode == 404 {\n\t\tsecret, parseErr := ParseSecret(resp.Body)\n\t\tswitch parseErr {\n\t\tcase nil:\n\t\tcase io.EOF:\n\t\t\treturn nil, nil\n\t\tdefault:\n\t\t\treturn nil, parseErr\n\t\t}\n\t\tif secret != nil && (len(secret.Warnings) > 0 || len(secret.Data) > 0) {\n\t\t\treturn secret, err\n\t\t}\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *Logical) Unwrap(wrappingToken string) (*Secret, error) {\n\treturn c.UnwrapWithContext(context.Background(), wrappingToken)\n}\n\nfunc (c *Logical) UnwrapWithContext(ctx context.Context, wrappingToken string) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tvar data map[string]interface{}\n\twt := strings.TrimSpace(wrappingToken)\n\tif wrappingToken != \"\" {\n\t\tif c.c.Token() == \"\" {\n\t\t\tc.c.SetToken(wt)\n\t\t} else if wrappingToken != c.c.Token() {\n\t\t\tdata = map[string]interface{}{\n\t\t\t\t\"token\": wt,\n\t\t\t}\n\t\t}\n\t}\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/wrapping/unwrap\")\n\tif err := r.SetJSONBody(data); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif resp != nil {\n\t\tdefer resp.Body.Close()\n\t}\n\tif resp == nil || resp.StatusCode != 404 {\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif resp == nil {\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn ParseSecret(resp.Body)\n\t}\n\n\t// In the 404 case this may actually be a wrapped 404 error\n\tsecret, parseErr := ParseSecret(resp.Body)\n\tswitch parseErr {\n\tcase nil:\n\tcase io.EOF:\n\t\treturn nil, nil\n\tdefault:\n\t\treturn nil, parseErr\n\t}\n\tif secret != nil && (len(secret.Warnings) > 0 || len(secret.Data) > 0) {\n\t\treturn secret, nil\n\t}\n\n\t// Otherwise this might be an old-style wrapping token so attempt the old\n\t// method\n\tif wrappingToken != \"\" {\n\t\torigToken := c.c.Token()\n\t\tdefer c.c.SetToken(origToken)\n\t\tc.c.SetToken(wrappingToken)\n\t}\n\n\tsecret, err = c.ReadWithContext(ctx, wrappedResponseLocation)\n\tif err != nil {\n\t\treturn nil, errwrap.Wrapf(fmt.Sprintf(\"error reading %q: {{err}}\", wrappedResponseLocation), err)\n\t}\n\tif secret == nil {\n\t\treturn nil, fmt.Errorf(\"no value found at %q\", wrappedResponseLocation)\n\t}\n\tif secret.Data == nil {\n\t\treturn nil, fmt.Errorf(\"\\\"data\\\" not found in wrapping response\")\n\t}\n\tif _, ok := secret.Data[\"response\"]; !ok {\n\t\treturn nil, fmt.Errorf(\"\\\"response\\\" not found in wrapping response \\\"data\\\" map\")\n\t}\n\n\twrappedSecret := new(Secret)\n\tbuf := bytes.NewBufferString(secret.Data[\"response\"].(string))\n\tdec := json.NewDecoder(buf)\n\tdec.UseNumber()\n\tif err := dec.Decode(wrappedSecret); err != nil {\n\t\treturn nil, errwrap.Wrapf(\"error unmarshalling wrapped secret: {{err}}\", err)\n\t}\n\n\treturn wrappedSecret, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/output_policy.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\tErrOutputPolicyRequest = \"output a policy, please\"\n)\n\nvar LastOutputPolicyError *OutputPolicyError\n\ntype OutputPolicyError struct {\n\tmethod         string\n\tpath           string\n\tparams         url.Values\n\tfinalHCLString string\n}\n\nfunc (d *OutputPolicyError) Error() string {\n\tif d.finalHCLString == \"\" {\n\t\tp, err := d.buildSamplePolicy()\n\t\tif err != nil {\n\t\t\treturn err.Error()\n\t\t}\n\t\td.finalHCLString = p\n\t}\n\n\treturn ErrOutputPolicyRequest\n}\n\nfunc (d *OutputPolicyError) HCLString() (string, error) {\n\tif d.finalHCLString == \"\" {\n\t\tp, err := d.buildSamplePolicy()\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\td.finalHCLString = p\n\t}\n\treturn d.finalHCLString, nil\n}\n\n// Builds a sample policy document from the request\nfunc (d *OutputPolicyError) buildSamplePolicy() (string, error) {\n\toperation := d.method\n\t// List is often defined as a URL param instead of as an http.Method\n\t// this will check for the header and properly switch off of the intended functionality\n\tif d.params.Has(\"list\") {\n\t\tisList, err := strconv.ParseBool(d.params.Get(\"list\"))\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"the value of the list url param is not a bool: %v\", err)\n\t\t}\n\n\t\tif isList {\n\t\t\toperation = \"LIST\"\n\t\t}\n\t}\n\n\tvar capabilities []string\n\tswitch operation {\n\tcase http.MethodGet, \"\":\n\t\tcapabilities = append(capabilities, \"read\")\n\tcase http.MethodPost, http.MethodPut:\n\t\tcapabilities = append(capabilities, \"create\")\n\t\tcapabilities = append(capabilities, \"update\")\n\tcase http.MethodPatch:\n\t\tcapabilities = append(capabilities, \"patch\")\n\tcase http.MethodDelete:\n\t\tcapabilities = append(capabilities, \"delete\")\n\tcase \"LIST\":\n\t\tcapabilities = append(capabilities, \"list\")\n\t}\n\n\t// determine whether to add sudo capability\n\tif IsSudoPath(d.path) {\n\t\tcapabilities = append(capabilities, \"sudo\")\n\t}\n\n\treturn formatOutputPolicy(d.path, capabilities), nil\n}\n\nfunc formatOutputPolicy(path string, capabilities []string) string {\n\t// the OpenAPI response has a / in front of each path,\n\t// but policies need the path without that leading slash\n\tpath = strings.TrimLeft(path, \"/\")\n\n\tcapStr := strings.Join(capabilities, `\", \"`)\n\treturn fmt.Sprintf(\n\t\t`path \"%s\" {\n  capabilities = [\"%s\"]\n}`, path, capStr)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/output_string.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"strings\"\n\n\tretryablehttp \"github.com/hashicorp/go-retryablehttp\"\n)\n\nconst (\n\tErrOutputStringRequest = \"output a string, please\"\n)\n\nvar LastOutputStringError *OutputStringError\n\ntype OutputStringError struct {\n\t*retryablehttp.Request\n\tTLSSkipVerify              bool\n\tClientCACert, ClientCAPath string\n\tClientCert, ClientKey      string\n\tfinalCurlString            string\n}\n\nfunc (d *OutputStringError) Error() string {\n\tif d.finalCurlString == \"\" {\n\t\tcs, err := d.buildCurlString()\n\t\tif err != nil {\n\t\t\treturn err.Error()\n\t\t}\n\t\td.finalCurlString = cs\n\t}\n\n\treturn ErrOutputStringRequest\n}\n\nfunc (d *OutputStringError) CurlString() (string, error) {\n\tif d.finalCurlString == \"\" {\n\t\tcs, err := d.buildCurlString()\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\td.finalCurlString = cs\n\t}\n\treturn d.finalCurlString, nil\n}\n\nfunc (d *OutputStringError) buildCurlString() (string, error) {\n\tbody, err := d.Request.BodyBytes()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// Build cURL string\n\tfinalCurlString := \"curl \"\n\tif d.TLSSkipVerify {\n\t\tfinalCurlString += \"--insecure \"\n\t}\n\tif d.Request.Method != http.MethodGet {\n\t\tfinalCurlString = fmt.Sprintf(\"%s-X %s \", finalCurlString, d.Request.Method)\n\t}\n\tif d.ClientCACert != \"\" {\n\t\tclientCACert := strings.ReplaceAll(d.ClientCACert, \"'\", \"'\\\"'\\\"'\")\n\t\tfinalCurlString = fmt.Sprintf(\"%s--cacert '%s' \", finalCurlString, clientCACert)\n\t}\n\tif d.ClientCAPath != \"\" {\n\t\tclientCAPath := strings.ReplaceAll(d.ClientCAPath, \"'\", \"'\\\"'\\\"'\")\n\t\tfinalCurlString = fmt.Sprintf(\"%s--capath '%s' \", finalCurlString, clientCAPath)\n\t}\n\tif d.ClientCert != \"\" {\n\t\tclientCert := strings.ReplaceAll(d.ClientCert, \"'\", \"'\\\"'\\\"'\")\n\t\tfinalCurlString = fmt.Sprintf(\"%s--cert '%s' \", finalCurlString, clientCert)\n\t}\n\tif d.ClientKey != \"\" {\n\t\tclientKey := strings.ReplaceAll(d.ClientKey, \"'\", \"'\\\"'\\\"'\")\n\t\tfinalCurlString = fmt.Sprintf(\"%s--key '%s' \", finalCurlString, clientKey)\n\t}\n\tfor k, v := range d.Request.Header {\n\t\tfor _, h := range v {\n\t\t\tif strings.ToLower(k) == \"x-vault-token\" {\n\t\t\t\th = `$(vault print token)`\n\t\t\t}\n\t\t\tfinalCurlString = fmt.Sprintf(\"%s-H \\\"%s: %s\\\" \", finalCurlString, k, h)\n\t\t}\n\t}\n\n\tif len(body) > 0 {\n\t\t// We need to escape single quotes since that's what we're using to\n\t\t// quote the body\n\t\tescapedBody := strings.ReplaceAll(string(body), \"'\", \"'\\\"'\\\"'\")\n\t\tfinalCurlString = fmt.Sprintf(\"%s-d '%s' \", finalCurlString, escapedBody)\n\t}\n\n\treturn fmt.Sprintf(\"%s%s\", finalCurlString, d.Request.URL.String()), nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/plugin_helpers.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"flag\"\n\t\"net/url\"\n\t\"os\"\n\n\t\"github.com/go-jose/go-jose/v3/jwt\"\n\n\t\"github.com/hashicorp/errwrap\"\n)\n\n// This file contains helper code used when writing Vault auth method or secrets engine plugins.\n//\n// As such, it would be better located in the sdk module with the rest of the code which is only to support plugins,\n// rather than api, but is here for historical reasons. (The api module used to depend on the sdk module, this code\n// calls NewClient within the api package, so placing it in the sdk would have created a dependency cycle. This reason\n// is now historical, as the dependency between sdk and api has since been reversed in direction.)\n// Moving this code to the sdk would be appropriate if an api v2.0.0 release is ever planned.\n//\n// This helper code is used when a plugin is hosted by Vault 1.11 and earlier. Vault 1.12 and sdk v0.6.0 introduced\n// version 5 of the backend plugin interface, which uses go-plugin's AutoMTLS feature instead of this code.\n\nconst (\n\t// PluginAutoMTLSEnv is used to ensure AutoMTLS is used. This will override\n\t// setting a TLSProviderFunc for a plugin.\n\tPluginAutoMTLSEnv = \"VAULT_PLUGIN_AUTOMTLS_ENABLED\"\n\n\t// PluginMetadataModeEnv is an ENV name used to disable TLS communication\n\t// to bootstrap mounting plugins.\n\tPluginMetadataModeEnv = \"VAULT_PLUGIN_METADATA_MODE\"\n\n\t// PluginUnwrapTokenEnv is the ENV name used to pass unwrap tokens to the\n\t// plugin.\n\tPluginUnwrapTokenEnv = \"VAULT_UNWRAP_TOKEN\"\n)\n\n// PluginAPIClientMeta is a helper that plugins can use to configure TLS connections\n// back to Vault.\ntype PluginAPIClientMeta struct {\n\t// These are set by the command line flags.\n\tflagCACert     string\n\tflagCAPath     string\n\tflagClientCert string\n\tflagClientKey  string\n\tflagInsecure   bool\n}\n\n// FlagSet returns the flag set for configuring the TLS connection\nfunc (f *PluginAPIClientMeta) FlagSet() *flag.FlagSet {\n\tfs := flag.NewFlagSet(\"vault plugin settings\", flag.ContinueOnError)\n\n\tfs.StringVar(&f.flagCACert, \"ca-cert\", \"\", \"\")\n\tfs.StringVar(&f.flagCAPath, \"ca-path\", \"\", \"\")\n\tfs.StringVar(&f.flagClientCert, \"client-cert\", \"\", \"\")\n\tfs.StringVar(&f.flagClientKey, \"client-key\", \"\", \"\")\n\tfs.BoolVar(&f.flagInsecure, \"tls-skip-verify\", false, \"\")\n\n\treturn fs\n}\n\n// GetTLSConfig will return a TLSConfig based off the values from the flags\nfunc (f *PluginAPIClientMeta) GetTLSConfig() *TLSConfig {\n\t// If we need custom TLS configuration, then set it\n\tif f.flagCACert != \"\" || f.flagCAPath != \"\" || f.flagClientCert != \"\" || f.flagClientKey != \"\" || f.flagInsecure {\n\t\tt := &TLSConfig{\n\t\t\tCACert:        f.flagCACert,\n\t\t\tCAPath:        f.flagCAPath,\n\t\t\tClientCert:    f.flagClientCert,\n\t\t\tClientKey:     f.flagClientKey,\n\t\t\tTLSServerName: \"\",\n\t\t\tInsecure:      f.flagInsecure,\n\t\t}\n\n\t\treturn t\n\t}\n\n\treturn nil\n}\n\n// VaultPluginTLSProvider wraps VaultPluginTLSProviderContext using context.Background.\nfunc VaultPluginTLSProvider(apiTLSConfig *TLSConfig) func() (*tls.Config, error) {\n\treturn VaultPluginTLSProviderContext(context.Background(), apiTLSConfig)\n}\n\n// VaultPluginTLSProviderContext is run inside a plugin and retrieves the response\n// wrapped TLS certificate from vault. It returns a configured TLS Config.\nfunc VaultPluginTLSProviderContext(ctx context.Context, apiTLSConfig *TLSConfig) func() (*tls.Config, error) {\n\tif os.Getenv(PluginAutoMTLSEnv) == \"true\" || os.Getenv(PluginMetadataModeEnv) == \"true\" {\n\t\treturn nil\n\t}\n\n\treturn func() (*tls.Config, error) {\n\t\tunwrapToken := os.Getenv(PluginUnwrapTokenEnv)\n\n\t\tparsedJWT, err := jwt.ParseSigned(unwrapToken)\n\t\tif err != nil {\n\t\t\treturn nil, errwrap.Wrapf(\"error parsing wrapping token: {{err}}\", err)\n\t\t}\n\n\t\tallClaims := make(map[string]interface{})\n\t\tif err = parsedJWT.UnsafeClaimsWithoutVerification(&allClaims); err != nil {\n\t\t\treturn nil, errwrap.Wrapf(\"error parsing claims from wrapping token: {{err}}\", err)\n\t\t}\n\n\t\taddrClaimRaw, ok := allClaims[\"addr\"]\n\t\tif !ok {\n\t\t\treturn nil, errors.New(\"could not validate addr claim\")\n\t\t}\n\t\tvaultAddr, ok := addrClaimRaw.(string)\n\t\tif !ok {\n\t\t\treturn nil, errors.New(\"could not parse addr claim\")\n\t\t}\n\t\tif vaultAddr == \"\" {\n\t\t\treturn nil, errors.New(`no vault api_addr found`)\n\t\t}\n\n\t\t// Sanity check the value\n\t\tif _, err := url.Parse(vaultAddr); err != nil {\n\t\t\treturn nil, errwrap.Wrapf(\"error parsing the vault api_addr: {{err}}\", err)\n\t\t}\n\n\t\t// Unwrap the token\n\t\tclientConf := DefaultConfig()\n\t\tclientConf.Address = vaultAddr\n\t\tif apiTLSConfig != nil {\n\t\t\terr := clientConf.ConfigureTLS(apiTLSConfig)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, errwrap.Wrapf(\"error configuring api client {{err}}\", err)\n\t\t\t}\n\t\t}\n\t\tclient, err := NewClient(clientConf)\n\t\tif err != nil {\n\t\t\treturn nil, errwrap.Wrapf(\"error during api client creation: {{err}}\", err)\n\t\t}\n\n\t\t// Reset token value to make sure nothing has been set by default\n\t\tclient.ClearToken()\n\n\t\tsecret, err := client.Logical().UnwrapWithContext(ctx, unwrapToken)\n\t\tif err != nil {\n\t\t\treturn nil, errwrap.Wrapf(\"error during token unwrap request: {{err}}\", err)\n\t\t}\n\t\tif secret == nil {\n\t\t\treturn nil, errors.New(\"error during token unwrap request: secret is nil\")\n\t\t}\n\n\t\t// Retrieve and parse the server's certificate\n\t\tserverCertBytesRaw, ok := secret.Data[\"ServerCert\"].(string)\n\t\tif !ok {\n\t\t\treturn nil, errors.New(\"error unmarshalling certificate\")\n\t\t}\n\n\t\tserverCertBytes, err := base64.StdEncoding.DecodeString(serverCertBytesRaw)\n\t\tif err != nil {\n\t\t\treturn nil, errwrap.Wrapf(\"error parsing certificate: {{err}}\", err)\n\t\t}\n\n\t\tserverCert, err := x509.ParseCertificate(serverCertBytes)\n\t\tif err != nil {\n\t\t\treturn nil, errwrap.Wrapf(\"error parsing certificate: {{err}}\", err)\n\t\t}\n\n\t\t// Retrieve and parse the server's private key\n\t\tserverKeyB64, ok := secret.Data[\"ServerKey\"].(string)\n\t\tif !ok {\n\t\t\treturn nil, errors.New(\"error unmarshalling certificate\")\n\t\t}\n\n\t\tserverKeyRaw, err := base64.StdEncoding.DecodeString(serverKeyB64)\n\t\tif err != nil {\n\t\t\treturn nil, errwrap.Wrapf(\"error parsing certificate: {{err}}\", err)\n\t\t}\n\n\t\tserverKey, err := x509.ParseECPrivateKey(serverKeyRaw)\n\t\tif err != nil {\n\t\t\treturn nil, errwrap.Wrapf(\"error parsing certificate: {{err}}\", err)\n\t\t}\n\n\t\t// Add CA cert to the cert pool\n\t\tcaCertPool := x509.NewCertPool()\n\t\tcaCertPool.AddCert(serverCert)\n\n\t\t// Build a certificate object out of the server's cert and private key.\n\t\tcert := tls.Certificate{\n\t\t\tCertificate: [][]byte{serverCertBytes},\n\t\t\tPrivateKey:  serverKey,\n\t\t\tLeaf:        serverCert,\n\t\t}\n\n\t\t// Setup TLS config\n\t\ttlsConfig := &tls.Config{\n\t\t\tClientCAs:  caCertPool,\n\t\t\tRootCAs:    caCertPool,\n\t\t\tClientAuth: tls.RequireAndVerifyClientCert,\n\t\t\t// TLS 1.2 minimum\n\t\t\tMinVersion:   tls.VersionTLS12,\n\t\t\tCertificates: []tls.Certificate{cert},\n\t\t\tServerName:   serverCert.Subject.CommonName,\n\t\t}\n\n\t\treturn tlsConfig, nil\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/plugin_runtime_types.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// NOTE: this file was copied from\n// https://github.com/hashicorp/vault/blob/main/sdk/helper/consts/plugin_runtime_types.go\n// Any changes made should be made to both files at the same time.\n\nimport \"fmt\"\n\nvar PluginRuntimeTypes = []PluginRuntimeType{\n\tPluginRuntimeTypeUnsupported,\n\tPluginRuntimeTypeContainer,\n}\n\ntype PluginRuntimeType uint32\n\n// This is a list of PluginRuntimeTypes used by Vault.\nconst (\n\tPluginRuntimeTypeUnsupported PluginRuntimeType = iota\n\tPluginRuntimeTypeContainer\n)\n\nfunc (r PluginRuntimeType) String() string {\n\tswitch r {\n\tcase PluginRuntimeTypeContainer:\n\t\treturn \"container\"\n\tdefault:\n\t\treturn \"unsupported\"\n\t}\n}\n\nfunc ParsePluginRuntimeType(PluginRuntimeType string) (PluginRuntimeType, error) {\n\tswitch PluginRuntimeType {\n\tcase \"container\":\n\t\treturn PluginRuntimeTypeContainer, nil\n\tdefault:\n\t\treturn PluginRuntimeTypeUnsupported, fmt.Errorf(\"%q is not a supported plugin runtime type\", PluginRuntimeType)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/plugin_types.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// NOTE: this file was copied from\n// https://github.com/hashicorp/vault/blob/main/sdk/helper/consts/plugin_types.go\n// Any changes made should be made to both files at the same time.\n\nimport \"fmt\"\n\nvar PluginTypes = []PluginType{\n\tPluginTypeUnknown,\n\tPluginTypeCredential,\n\tPluginTypeDatabase,\n\tPluginTypeSecrets,\n}\n\ntype PluginType uint32\n\n// This is a list of PluginTypes used by Vault.\n// If we need to add any in the future, it would\n// be best to add them to the _end_ of the list below\n// because they resolve to incrementing numbers,\n// which may be saved in state somewhere. Thus if\n// the name for one of those numbers changed because\n// a value were added to the middle, that could cause\n// the wrong plugin types to be read from storage\n// for a given underlying number. Example of the problem\n// here: https://play.golang.org/p/YAaPw5ww3er\nconst (\n\tPluginTypeUnknown PluginType = iota\n\tPluginTypeCredential\n\tPluginTypeDatabase\n\tPluginTypeSecrets\n)\n\nfunc (p PluginType) String() string {\n\tswitch p {\n\tcase PluginTypeUnknown:\n\t\treturn \"unknown\"\n\tcase PluginTypeCredential:\n\t\treturn \"auth\"\n\tcase PluginTypeDatabase:\n\t\treturn \"database\"\n\tcase PluginTypeSecrets:\n\t\treturn \"secret\"\n\tdefault:\n\t\treturn \"unsupported\"\n\t}\n}\n\nfunc ParsePluginType(pluginType string) (PluginType, error) {\n\tswitch pluginType {\n\tcase \"unknown\":\n\t\treturn PluginTypeUnknown, nil\n\tcase \"auth\":\n\t\treturn PluginTypeCredential, nil\n\tcase \"database\":\n\t\treturn PluginTypeDatabase, nil\n\tcase \"secret\":\n\t\treturn PluginTypeSecrets, nil\n\tdefault:\n\t\treturn PluginTypeUnknown, fmt.Errorf(\"%q is not a supported plugin type\", pluginType)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/replication_status.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nconst (\n\tapiRepPerformanceStatusPath = \"/v1/sys/replication/performance/status\"\n\tapiRepDRStatusPath          = \"/v1/sys/replication/dr/status\"\n\tapiRepStatusPath            = \"/v1/sys/replication/status\"\n)\n\ntype ClusterInfo struct {\n\tAPIAddr          string `json:\"api_address,omitempty\" mapstructure:\"api_address\"`\n\tClusterAddress   string `json:\"cluster_address,omitempty\" mapstructure:\"cluster_address\"`\n\tConnectionStatus string `json:\"connection_status,omitempty\" mapstructure:\"connection_status\"`\n\tLastHeartBeat    string `json:\"last_heartbeat,omitempty\" mapstructure:\"last_heartbeat\"`\n\tNodeID           string `json:\"node_id,omitempty\" mapstructure:\"node_id\"`\n}\n\ntype ReplicationStatusGenericResponse struct {\n\tLastDRWAL             uint64 `json:\"last_dr_wal,omitempty\" mapstructure:\"last_dr_wal\"`\n\tLastReindexEpoch      string `json:\"last_reindex_epoch,omitempty\" mapstructure:\"last_reindex_epoch\"`\n\tClusterID             string `json:\"cluster_id,omitempty\" mapstructure:\"cluster_id\"`\n\tLastWAL               uint64 `json:\"last_wal,omitempty\" mapstructure:\"last_wal\"`\n\tMerkleRoot            string `json:\"merkle_root,omitempty\" mapstructure:\"merkle_root\"`\n\tMode                  string `json:\"mode,omitempty\" mapstructure:\"mode\"`\n\tPrimaryClusterAddr    string `json:\"primary_cluster_addr,omitempty\" mapstructure:\"primary_cluster_addr\"`\n\tLastPerformanceWAL    uint64 `json:\"last_performance_wal,omitempty\" mapstructure:\"last_performance_wal\"`\n\tState                 string `json:\"state,omitempty\" mapstructure:\"state\"`\n\tLastRemoteWAL         uint64 `json:\"last_remote_wal,omitempty\" mapstructure:\"last_remote_wal\"`\n\tSecondaryID           string `json:\"secondary_id,omitempty\" mapstructure:\"secondary_id\"`\n\tSSCTGenerationCounter uint64 `json:\"ssct_generation_counter,omitempty\" mapstructure:\"ssct_generation_counter\"`\n\n\tKnownSecondaries         []string      `json:\"known_secondaries,omitempty\" mapstructure:\"known_secondaries\"`\n\tKnownPrimaryClusterAddrs []string      `json:\"known_primary_cluster_addrs,omitempty\" mapstructure:\"known_primary_cluster_addrs\"`\n\tPrimaries                []ClusterInfo `json:\"primaries,omitempty\" mapstructure:\"primaries\"`\n\tSecondaries              []ClusterInfo `json:\"secondaries,omitempty\" mapstructure:\"secondaries\"`\n}\n\ntype ReplicationStatusResponse struct {\n\tDR          ReplicationStatusGenericResponse `json:\"dr,omitempty\" mapstructure:\"dr\"`\n\tPerformance ReplicationStatusGenericResponse `json:\"performance,omitempty\" mapstructure:\"performance\"`\n}\n\nfunc (c *Sys) ReplicationStatus() (*ReplicationStatusResponse, error) {\n\treturn c.ReplicationStatusWithContext(context.Background(), apiRepStatusPath)\n}\n\nfunc (c *Sys) ReplicationPerformanceStatusWithContext(ctx context.Context) (*ReplicationStatusGenericResponse, error) {\n\ts, err := c.ReplicationStatusWithContext(ctx, apiRepPerformanceStatusPath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &s.Performance, nil\n}\n\nfunc (c *Sys) ReplicationDRStatusWithContext(ctx context.Context) (*ReplicationStatusGenericResponse, error) {\n\ts, err := c.ReplicationStatusWithContext(ctx, apiRepDRStatusPath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &s.DR, nil\n}\n\nfunc (c *Sys) ReplicationStatusWithContext(ctx context.Context, path string) (*ReplicationStatusResponse, error) {\n\t// default to replication/status\n\tif path == \"\" {\n\t\tpath = apiRepStatusPath\n\t}\n\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, path)\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer func() { _ = resp.Body.Close() }()\n\n\t// First decode response into a map[string]interface{}\n\tdata := make(map[string]interface{})\n\tdec := json.NewDecoder(resp.Body)\n\tdec.UseNumber()\n\tif err := dec.Decode(&data); err != nil {\n\t\treturn nil, err\n\t}\n\n\trawData, ok := data[\"data\"]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"empty data in replication status response\")\n\t}\n\n\ts := &ReplicationStatusResponse{}\n\tg := &ReplicationStatusGenericResponse{}\n\tswitch {\n\tcase path == apiRepPerformanceStatusPath:\n\t\terr = mapstructure.Decode(rawData, g)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts.Performance = *g\n\tcase path == apiRepDRStatusPath:\n\t\terr = mapstructure.Decode(rawData, g)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ts.DR = *g\n\tdefault:\n\t\terr = mapstructure.Decode(rawData, s)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn s, err\n\t}\n\n\treturn s, err\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/request.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\n\tretryablehttp \"github.com/hashicorp/go-retryablehttp\"\n)\n\n// Request is a raw request configuration structure used to initiate\n// API requests to the Vault server.\ntype Request struct {\n\tMethod        string\n\tURL           *url.URL\n\tHost          string\n\tParams        url.Values\n\tHeaders       http.Header\n\tClientToken   string\n\tMFAHeaderVals []string\n\tWrapTTL       string\n\tObj           interface{}\n\n\t// When possible, use BodyBytes as it is more efficient due to how the\n\t// retry logic works\n\tBodyBytes []byte\n\n\t// Fallback\n\tBody     io.Reader\n\tBodySize int64\n\n\t// Whether to request overriding soft-mandatory Sentinel policies (RGPs and\n\t// EGPs). If set, the override flag will take effect for all policies\n\t// evaluated during the request.\n\tPolicyOverride bool\n}\n\n// SetJSONBody is used to set a request body that is a JSON-encoded value.\nfunc (r *Request) SetJSONBody(val interface{}) error {\n\tbuf, err := json.Marshal(val)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tr.Obj = val\n\tr.BodyBytes = buf\n\treturn nil\n}\n\n// ResetJSONBody is used to reset the body for a redirect\nfunc (r *Request) ResetJSONBody() error {\n\tif r.BodyBytes == nil {\n\t\treturn nil\n\t}\n\treturn r.SetJSONBody(r.Obj)\n}\n\n// DEPRECATED: ToHTTP turns this request into a valid *http.Request for use\n// with the net/http package.\nfunc (r *Request) ToHTTP() (*http.Request, error) {\n\treq, err := r.toRetryableHTTP()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch {\n\tcase r.BodyBytes == nil && r.Body == nil:\n\t\t// No body\n\n\tcase r.BodyBytes != nil:\n\t\treq.Request.Body = ioutil.NopCloser(bytes.NewReader(r.BodyBytes))\n\n\tdefault:\n\t\tif c, ok := r.Body.(io.ReadCloser); ok {\n\t\t\treq.Request.Body = c\n\t\t} else {\n\t\t\treq.Request.Body = ioutil.NopCloser(r.Body)\n\t\t}\n\t}\n\n\treturn req.Request, nil\n}\n\nfunc (r *Request) toRetryableHTTP() (*retryablehttp.Request, error) {\n\t// Encode the query parameters\n\tr.URL.RawQuery = r.Params.Encode()\n\n\t// Create the HTTP request, defaulting to retryable\n\tvar req *retryablehttp.Request\n\n\tvar err error\n\tvar body interface{}\n\n\tswitch {\n\tcase r.BodyBytes == nil && r.Body == nil:\n\t\t// No body\n\n\tcase r.BodyBytes != nil:\n\t\t// Use bytes, it's more efficient\n\t\tbody = r.BodyBytes\n\n\tdefault:\n\t\tbody = r.Body\n\t}\n\n\treq, err = retryablehttp.NewRequest(r.Method, r.URL.RequestURI(), body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treq.URL.User = r.URL.User\n\treq.URL.Scheme = r.URL.Scheme\n\treq.URL.Host = r.URL.Host\n\treq.Host = r.Host\n\n\tif r.Headers != nil {\n\t\tfor header, vals := range r.Headers {\n\t\t\tfor _, val := range vals {\n\t\t\t\treq.Header.Add(header, val)\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(r.ClientToken) != 0 {\n\t\treq.Header.Set(AuthHeaderName, r.ClientToken)\n\t}\n\n\tif len(r.WrapTTL) != 0 {\n\t\treq.Header.Set(\"X-Vault-Wrap-TTL\", r.WrapTTL)\n\t}\n\n\tif len(r.MFAHeaderVals) != 0 {\n\t\tfor _, mfaHeaderVal := range r.MFAHeaderVals {\n\t\t\treq.Header.Add(\"X-Vault-MFA\", mfaHeaderVal)\n\t\t}\n\t}\n\n\tif r.PolicyOverride {\n\t\treq.Header.Set(\"X-Vault-Policy-Override\", \"true\")\n\t}\n\n\treturn req, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/response.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n)\n\n// Response is a raw response that wraps an HTTP response.\ntype Response struct {\n\t*http.Response\n}\n\n// DecodeJSON will decode the response body to a JSON structure. This\n// will consume the response body, but will not close it. Close must\n// still be called.\nfunc (r *Response) DecodeJSON(out interface{}) error {\n\tdec := json.NewDecoder(r.Body)\n\tdec.UseNumber()\n\treturn dec.Decode(out)\n}\n\n// Error returns an error response if there is one. If there is an error,\n// this will fully consume the response body, but will not close it. The\n// body must still be closed manually.\nfunc (r *Response) Error() error {\n\t// 200 to 399 are okay status codes. 429 is the code for health status of\n\t// standby nodes, otherwise, 429 is treated as quota limit reached.\n\tif (r.StatusCode >= 200 && r.StatusCode < 400) || (r.StatusCode == 429 && r.Request.URL.Path == \"/v1/sys/health\") {\n\t\treturn nil\n\t}\n\n\t// We have an error. Let's copy the body into our own buffer first,\n\t// so that if we can't decode JSON, we can at least copy it raw.\n\tbodyBuf := &bytes.Buffer{}\n\tif _, err := io.Copy(bodyBuf, r.Body); err != nil {\n\t\treturn err\n\t}\n\n\tr.Body.Close()\n\tr.Body = ioutil.NopCloser(bodyBuf)\n\tns := r.Header.Get(NamespaceHeaderName)\n\n\t// Build up the error object\n\trespErr := &ResponseError{\n\t\tHTTPMethod:    r.Request.Method,\n\t\tURL:           r.Request.URL.String(),\n\t\tStatusCode:    r.StatusCode,\n\t\tNamespacePath: ns,\n\t}\n\n\t// Decode the error response if we can. Note that we wrap the bodyBuf\n\t// in a bytes.Reader here so that the JSON decoder doesn't move the\n\t// read pointer for the original buffer.\n\tvar resp ErrorResponse\n\tdec := json.NewDecoder(bytes.NewReader(bodyBuf.Bytes()))\n\tdec.UseNumber()\n\tif err := dec.Decode(&resp); err != nil {\n\t\t// Store the fact that we couldn't decode the errors\n\t\trespErr.RawError = true\n\t\trespErr.Errors = []string{bodyBuf.String()}\n\t} else {\n\t\t// Store the decoded errors\n\t\trespErr.Errors = resp.Errors\n\t}\n\n\treturn respErr\n}\n\n// ErrorResponse is the raw structure of errors when they're returned by the\n// HTTP API.\ntype ErrorResponse struct {\n\tErrors []string\n}\n\n// ResponseError is the error returned when Vault responds with an error or\n// non-success HTTP status code. If a request to Vault fails because of a\n// network error a different error message will be returned. ResponseError gives\n// access to the underlying errors and status code.\ntype ResponseError struct {\n\t// HTTPMethod is the HTTP method for the request (PUT, GET, etc).\n\tHTTPMethod string\n\n\t// URL is the URL of the request.\n\tURL string\n\n\t// StatusCode is the HTTP status code.\n\tStatusCode int\n\n\t// RawError marks that the underlying error messages returned by Vault were\n\t// not parsable. The Errors slice will contain the raw response body as the\n\t// first and only error string if this value is set to true.\n\tRawError bool\n\n\t// Errors are the underlying errors returned by Vault.\n\tErrors []string\n\n\t// Namespace path to be reported to the client if it is set to anything other\n\t// than root\n\tNamespacePath string\n}\n\n// Error returns a human-readable error string for the response error.\nfunc (r *ResponseError) Error() string {\n\terrString := \"Errors\"\n\tif r.RawError {\n\t\terrString = \"Raw Message\"\n\t}\n\n\tvar ns string\n\tif r.NamespacePath != \"\" && r.NamespacePath != \"root/\" {\n\t\tns = \"Namespace: \" + r.NamespacePath + \"\\n\"\n\t}\n\n\tvar errBody bytes.Buffer\n\terrBody.WriteString(fmt.Sprintf(\n\t\t\"Error making API request.\\n\\n\"+\n\t\t\tns+\n\t\t\t\"URL: %s %s\\n\"+\n\t\t\t\"Code: %d. %s:\\n\\n\",\n\t\tr.HTTPMethod, r.URL, r.StatusCode, errString))\n\n\tif r.RawError && len(r.Errors) == 1 {\n\t\terrBody.WriteString(r.Errors[0])\n\t} else {\n\t\tfor _, err := range r.Errors {\n\t\t\terrBody.WriteString(fmt.Sprintf(\"* %s\", err))\n\t\t}\n\t}\n\n\treturn errBody.String()\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/secret.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/hashicorp/errwrap\"\n\t\"github.com/hashicorp/go-secure-stdlib/parseutil\"\n)\n\n// Secret is the structure returned for every secret within Vault.\ntype Secret struct {\n\t// The request ID that generated this response\n\tRequestID string `json:\"request_id\"`\n\n\tLeaseID       string `json:\"lease_id\"`\n\tLeaseDuration int    `json:\"lease_duration\"`\n\tRenewable     bool   `json:\"renewable\"`\n\n\t// Data is the actual contents of the secret. The format of the data\n\t// is arbitrary and up to the secret backend.\n\tData map[string]interface{} `json:\"data\"`\n\n\t// Warnings contains any warnings related to the operation. These\n\t// are not issues that caused the command to fail, but that the\n\t// client should be aware of.\n\tWarnings []string `json:\"warnings\"`\n\n\t// Auth, if non-nil, means that there was authentication information\n\t// attached to this response.\n\tAuth *SecretAuth `json:\"auth,omitempty\"`\n\n\t// WrapInfo, if non-nil, means that the initial response was wrapped in the\n\t// cubbyhole of the given token (which has a TTL of the given number of\n\t// seconds)\n\tWrapInfo *SecretWrapInfo `json:\"wrap_info,omitempty\"`\n}\n\n// TokenID returns the standardized token ID (token) for the given secret.\nfunc (s *Secret) TokenID() (string, error) {\n\tif s == nil {\n\t\treturn \"\", nil\n\t}\n\n\tif s.Auth != nil && len(s.Auth.ClientToken) > 0 {\n\t\treturn s.Auth.ClientToken, nil\n\t}\n\n\tif s.Data == nil || s.Data[\"id\"] == nil {\n\t\treturn \"\", nil\n\t}\n\n\tid, ok := s.Data[\"id\"].(string)\n\tif !ok {\n\t\treturn \"\", fmt.Errorf(\"token found but in the wrong format\")\n\t}\n\n\treturn id, nil\n}\n\n// TokenAccessor returns the standardized token accessor for the given secret.\n// If the secret is nil or does not contain an accessor, this returns the empty\n// string.\nfunc (s *Secret) TokenAccessor() (string, error) {\n\tif s == nil {\n\t\treturn \"\", nil\n\t}\n\n\tif s.Auth != nil && len(s.Auth.Accessor) > 0 {\n\t\treturn s.Auth.Accessor, nil\n\t}\n\n\tif s.Data == nil || s.Data[\"accessor\"] == nil {\n\t\treturn \"\", nil\n\t}\n\n\taccessor, ok := s.Data[\"accessor\"].(string)\n\tif !ok {\n\t\treturn \"\", fmt.Errorf(\"token found but in the wrong format\")\n\t}\n\n\treturn accessor, nil\n}\n\n// TokenRemainingUses returns the standardized remaining uses for the given\n// secret. If the secret is nil or does not contain the \"num_uses\", this\n// returns -1. On error, this will return -1 and a non-nil error.\nfunc (s *Secret) TokenRemainingUses() (int, error) {\n\tif s == nil || s.Data == nil || s.Data[\"num_uses\"] == nil {\n\t\treturn -1, nil\n\t}\n\n\treturn parseutil.SafeParseInt(s.Data[\"num_uses\"])\n}\n\n// TokenPolicies returns the standardized list of policies for the given secret.\n// If the secret is nil or does not contain any policies, this returns nil. It\n// also populates the secret's Auth info with identity/token policy info.\nfunc (s *Secret) TokenPolicies() ([]string, error) {\n\tif s == nil {\n\t\treturn nil, nil\n\t}\n\n\tif s.Auth != nil && len(s.Auth.Policies) > 0 {\n\t\treturn s.Auth.Policies, nil\n\t}\n\n\tif s.Data == nil || s.Data[\"policies\"] == nil {\n\t\treturn nil, nil\n\t}\n\n\tvar tokenPolicies []string\n\n\t// Token policies\n\t{\n\t\t_, ok := s.Data[\"policies\"]\n\t\tif !ok {\n\t\t\tgoto TOKEN_DONE\n\t\t}\n\n\t\tsList, ok := s.Data[\"policies\"].([]string)\n\t\tif ok {\n\t\t\ttokenPolicies = sList\n\t\t\tgoto TOKEN_DONE\n\t\t}\n\n\t\tlist, ok := s.Data[\"policies\"].([]interface{})\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"unable to convert token policies to expected format\")\n\t\t}\n\t\tfor _, v := range list {\n\t\t\tp, ok := v.(string)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"unable to convert policy %v to string\", v)\n\t\t\t}\n\t\t\ttokenPolicies = append(tokenPolicies, p)\n\t\t}\n\t}\n\nTOKEN_DONE:\n\tvar identityPolicies []string\n\n\t// Identity policies\n\t{\n\t\tv, ok := s.Data[\"identity_policies\"]\n\t\tif !ok || v == nil {\n\t\t\tgoto DONE\n\t\t}\n\n\t\tsList, ok := s.Data[\"identity_policies\"].([]string)\n\t\tif ok {\n\t\t\tidentityPolicies = sList\n\t\t\tgoto DONE\n\t\t}\n\n\t\tlist, ok := s.Data[\"identity_policies\"].([]interface{})\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"unable to convert identity policies to expected format\")\n\t\t}\n\t\tfor _, v := range list {\n\t\t\tp, ok := v.(string)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"unable to convert policy %v to string\", v)\n\t\t\t}\n\t\t\tidentityPolicies = append(identityPolicies, p)\n\t\t}\n\t}\n\nDONE:\n\n\tif s.Auth == nil {\n\t\ts.Auth = &SecretAuth{}\n\t}\n\n\tpolicies := append(tokenPolicies, identityPolicies...)\n\n\ts.Auth.TokenPolicies = tokenPolicies\n\ts.Auth.IdentityPolicies = identityPolicies\n\ts.Auth.Policies = policies\n\n\treturn policies, nil\n}\n\n// TokenMetadata returns the map of metadata associated with this token, if any\n// exists. If the secret is nil or does not contain the \"metadata\" key, this\n// returns nil.\nfunc (s *Secret) TokenMetadata() (map[string]string, error) {\n\tif s == nil {\n\t\treturn nil, nil\n\t}\n\n\tif s.Auth != nil && len(s.Auth.Metadata) > 0 {\n\t\treturn s.Auth.Metadata, nil\n\t}\n\n\tif s.Data == nil || (s.Data[\"metadata\"] == nil && s.Data[\"meta\"] == nil) {\n\t\treturn nil, nil\n\t}\n\n\tdata, ok := s.Data[\"metadata\"].(map[string]interface{})\n\tif !ok {\n\t\tdata, ok = s.Data[\"meta\"].(map[string]interface{})\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"unable to convert metadata field to expected format\")\n\t\t}\n\t}\n\n\tmetadata := make(map[string]string, len(data))\n\tfor k, v := range data {\n\t\ttyped, ok := v.(string)\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"unable to convert metadata value %v to string\", v)\n\t\t}\n\t\tmetadata[k] = typed\n\t}\n\n\treturn metadata, nil\n}\n\n// TokenIsRenewable returns the standardized token renewability for the given\n// secret. If the secret is nil or does not contain the \"renewable\" key, this\n// returns false.\nfunc (s *Secret) TokenIsRenewable() (bool, error) {\n\tif s == nil {\n\t\treturn false, nil\n\t}\n\n\tif s.Auth != nil && s.Auth.Renewable {\n\t\treturn s.Auth.Renewable, nil\n\t}\n\n\tif s.Data == nil || s.Data[\"renewable\"] == nil {\n\t\treturn false, nil\n\t}\n\n\trenewable, err := parseutil.ParseBool(s.Data[\"renewable\"])\n\tif err != nil {\n\t\treturn false, errwrap.Wrapf(\"could not convert renewable value to a boolean: {{err}}\", err)\n\t}\n\n\treturn renewable, nil\n}\n\n// TokenTTL returns the standardized remaining token TTL for the given secret.\n// If the secret is nil or does not contain a TTL, this returns 0.\nfunc (s *Secret) TokenTTL() (time.Duration, error) {\n\tif s == nil {\n\t\treturn 0, nil\n\t}\n\n\tif s.Auth != nil && s.Auth.LeaseDuration > 0 {\n\t\treturn time.Duration(s.Auth.LeaseDuration) * time.Second, nil\n\t}\n\n\tif s.Data == nil || s.Data[\"ttl\"] == nil {\n\t\treturn 0, nil\n\t}\n\n\tttl, err := parseutil.ParseDurationSecond(s.Data[\"ttl\"])\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\treturn ttl, nil\n}\n\n// SecretWrapInfo contains wrapping information if we have it. If what is\n// contained is an authentication token, the accessor for the token will be\n// available in WrappedAccessor.\ntype SecretWrapInfo struct {\n\tToken           string    `json:\"token\"`\n\tAccessor        string    `json:\"accessor\"`\n\tTTL             int       `json:\"ttl\"`\n\tCreationTime    time.Time `json:\"creation_time\"`\n\tCreationPath    string    `json:\"creation_path\"`\n\tWrappedAccessor string    `json:\"wrapped_accessor\"`\n}\n\ntype MFAMethodID struct {\n\tType         string `json:\"type,omitempty\"`\n\tID           string `json:\"id,omitempty\"`\n\tUsesPasscode bool   `json:\"uses_passcode,omitempty\"`\n\tName         string `json:\"name,omitempty\"`\n}\n\ntype MFAConstraintAny struct {\n\tAny []*MFAMethodID `json:\"any,omitempty\"`\n}\n\ntype MFARequirement struct {\n\tMFARequestID   string                       `json:\"mfa_request_id,omitempty\"`\n\tMFAConstraints map[string]*MFAConstraintAny `json:\"mfa_constraints,omitempty\"`\n}\n\n// SecretAuth is the structure containing auth information if we have it.\ntype SecretAuth struct {\n\tClientToken      string            `json:\"client_token\"`\n\tAccessor         string            `json:\"accessor\"`\n\tPolicies         []string          `json:\"policies\"`\n\tTokenPolicies    []string          `json:\"token_policies\"`\n\tIdentityPolicies []string          `json:\"identity_policies\"`\n\tMetadata         map[string]string `json:\"metadata\"`\n\tOrphan           bool              `json:\"orphan\"`\n\tEntityID         string            `json:\"entity_id\"`\n\n\tLeaseDuration int  `json:\"lease_duration\"`\n\tRenewable     bool `json:\"renewable\"`\n\n\tMFARequirement *MFARequirement `json:\"mfa_requirement\"`\n}\n\n// ParseSecret is used to parse a secret value from JSON from an io.Reader.\nfunc ParseSecret(r io.Reader) (*Secret, error) {\n\t// First read the data into a buffer. Not super efficient but we want to\n\t// know if we actually have a body or not.\n\tvar buf bytes.Buffer\n\n\t// io.Reader is treated like a stream and cannot be read\n\t// multiple times. Duplicating this stream using TeeReader\n\t// to use this data in case there is no top-level data from\n\t// api response\n\tvar teebuf bytes.Buffer\n\ttee := io.TeeReader(r, &teebuf)\n\n\t_, err := buf.ReadFrom(tee)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif buf.Len() == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// First decode the JSON into a map[string]interface{}\n\tvar secret Secret\n\tdec := json.NewDecoder(&buf)\n\tdec.UseNumber()\n\tif err := dec.Decode(&secret); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// If the secret is null, add raw data to secret data if present\n\tif reflect.DeepEqual(secret, Secret{}) {\n\t\tdata := make(map[string]interface{})\n\t\tdec := json.NewDecoder(&teebuf)\n\t\tdec.UseNumber()\n\t\tif err := dec.Decode(&data); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\terrRaw, errPresent := data[\"errors\"]\n\n\t\t// if only errors are present in the resp.Body return nil\n\t\t// to return value not found as it does not have any raw data\n\t\tif len(data) == 1 && errPresent {\n\t\t\treturn nil, nil\n\t\t}\n\n\t\t// if errors are present along with raw data return the error\n\t\tif errPresent {\n\t\t\tvar errStrArray []string\n\t\t\terrBytes, err := json.Marshal(errRaw)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif err := json.Unmarshal(errBytes, &errStrArray); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn nil, fmt.Errorf(strings.Join(errStrArray, \" \"))\n\t\t}\n\n\t\t// if any raw data is present in resp.Body, add it to secret\n\t\tif len(data) > 0 {\n\t\t\tsecret.Data = data\n\t\t}\n\t}\n\n\treturn &secret, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/ssh.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n)\n\n// SSH is used to return a client to invoke operations on SSH backend.\ntype SSH struct {\n\tc          *Client\n\tMountPoint string\n}\n\n// SSH returns the client for logical-backend API calls.\nfunc (c *Client) SSH() *SSH {\n\treturn c.SSHWithMountPoint(SSHHelperDefaultMountPoint)\n}\n\n// SSHWithMountPoint returns the client with specific SSH mount point.\nfunc (c *Client) SSHWithMountPoint(mountPoint string) *SSH {\n\treturn &SSH{\n\t\tc:          c,\n\t\tMountPoint: mountPoint,\n\t}\n}\n\n// Credential wraps CredentialWithContext using context.Background.\nfunc (c *SSH) Credential(role string, data map[string]interface{}) (*Secret, error) {\n\treturn c.CredentialWithContext(context.Background(), role, data)\n}\n\n// CredentialWithContext invokes the SSH backend API to create a credential to establish an SSH session.\nfunc (c *SSH) CredentialWithContext(ctx context.Context, role string, data map[string]interface{}) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, fmt.Sprintf(\"/v1/%s/creds/%s\", c.MountPoint, role))\n\tif err := r.SetJSONBody(data); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n\n// SignKey wraps SignKeyWithContext using context.Background.\nfunc (c *SSH) SignKey(role string, data map[string]interface{}) (*Secret, error) {\n\treturn c.SignKeyWithContext(context.Background(), role, data)\n}\n\n// SignKeyWithContext signs the given public key and returns a signed public key to pass\n// along with the SSH request.\nfunc (c *SSH) SignKeyWithContext(ctx context.Context, role string, data map[string]interface{}) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, fmt.Sprintf(\"/v1/%s/sign/%s\", c.MountPoint, role))\n\tif err := r.SetJSONBody(data); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/ssh_agent.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"os\"\n\n\t\"github.com/hashicorp/errwrap\"\n\tcleanhttp \"github.com/hashicorp/go-cleanhttp\"\n\tmultierror \"github.com/hashicorp/go-multierror\"\n\trootcerts \"github.com/hashicorp/go-rootcerts\"\n\t\"github.com/hashicorp/hcl\"\n\t\"github.com/hashicorp/hcl/hcl/ast\"\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nconst (\n\t// SSHHelperDefaultMountPoint is the default path at which SSH backend will be\n\t// mounted in the Vault server.\n\tSSHHelperDefaultMountPoint = \"ssh\"\n\n\t// VerifyEchoRequest is the echo request message sent as OTP by the helper.\n\tVerifyEchoRequest = \"verify-echo-request\"\n\n\t// VerifyEchoResponse is the echo response message sent as a response to OTP\n\t// matching echo request.\n\tVerifyEchoResponse = \"verify-echo-response\"\n)\n\n// SSHHelper is a structure representing a vault-ssh-helper which can talk to vault server\n// in order to verify the OTP entered by the user. It contains the path at which\n// SSH backend is mounted at the server.\ntype SSHHelper struct {\n\tc          *Client\n\tMountPoint string\n}\n\n// SSHVerifyResponse is a structure representing the fields in Vault server's\n// response.\ntype SSHVerifyResponse struct {\n\t// Usually empty. If the request OTP is echo request message, this will\n\t// be set to the corresponding echo response message.\n\tMessage string `json:\"message\" mapstructure:\"message\"`\n\n\t// Username associated with the OTP\n\tUsername string `json:\"username\" mapstructure:\"username\"`\n\n\t// IP associated with the OTP\n\tIP string `json:\"ip\" mapstructure:\"ip\"`\n\n\t// Name of the role against which the OTP was issued\n\tRoleName string `json:\"role_name\" mapstructure:\"role_name\"`\n}\n\n// SSHHelperConfig is a structure which represents the entries from the vault-ssh-helper's configuration file.\ntype SSHHelperConfig struct {\n\tVaultAddr       string `hcl:\"vault_addr\"`\n\tSSHMountPoint   string `hcl:\"ssh_mount_point\"`\n\tNamespace       string `hcl:\"namespace\"`\n\tCACert          string `hcl:\"ca_cert\"`\n\tCAPath          string `hcl:\"ca_path\"`\n\tAllowedCidrList string `hcl:\"allowed_cidr_list\"`\n\tAllowedRoles    string `hcl:\"allowed_roles\"`\n\tTLSSkipVerify   bool   `hcl:\"tls_skip_verify\"`\n\tTLSServerName   string `hcl:\"tls_server_name\"`\n}\n\n// SetTLSParameters sets the TLS parameters for this SSH agent.\nfunc (c *SSHHelperConfig) SetTLSParameters(clientConfig *Config, certPool *x509.CertPool) {\n\ttlsConfig := &tls.Config{\n\t\tInsecureSkipVerify: c.TLSSkipVerify,\n\t\tMinVersion:         tls.VersionTLS12,\n\t\tRootCAs:            certPool,\n\t\tServerName:         c.TLSServerName,\n\t}\n\n\ttransport := cleanhttp.DefaultTransport()\n\ttransport.TLSClientConfig = tlsConfig\n\tclientConfig.HttpClient.Transport = transport\n}\n\n// Returns true if any of the following conditions are true:\n//   - CA cert is configured\n//   - CA path is configured\n//   - configured to skip certificate verification\n//   - TLS server name is configured\nfunc (c *SSHHelperConfig) shouldSetTLSParameters() bool {\n\treturn c.CACert != \"\" || c.CAPath != \"\" || c.TLSServerName != \"\" || c.TLSSkipVerify\n}\n\n// NewClient returns a new client for the configuration. This client will be used by the\n// vault-ssh-helper to communicate with Vault server and verify the OTP entered by user.\n// If the configuration supplies Vault SSL certificates, then the client will\n// have TLS configured in its transport.\nfunc (c *SSHHelperConfig) NewClient() (*Client, error) {\n\t// Creating a default client configuration for communicating with vault server.\n\tclientConfig := DefaultConfig()\n\n\t// Pointing the client to the actual address of vault server.\n\tclientConfig.Address = c.VaultAddr\n\n\t// Check if certificates are provided via config file.\n\tif c.shouldSetTLSParameters() {\n\t\trootConfig := &rootcerts.Config{\n\t\t\tCAFile: c.CACert,\n\t\t\tCAPath: c.CAPath,\n\t\t}\n\t\tcertPool, err := rootcerts.LoadCACerts(rootConfig)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// Enable TLS on the HTTP client information\n\t\tc.SetTLSParameters(clientConfig, certPool)\n\t}\n\n\t// Creating the client object for the given configuration\n\tclient, err := NewClient(clientConfig)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Configure namespace\n\tif c.Namespace != \"\" {\n\t\tclient.SetNamespace(c.Namespace)\n\t}\n\n\treturn client, nil\n}\n\n// LoadSSHHelperConfig loads ssh-helper's configuration from the file and populates the corresponding\n// in-memory structure.\n//\n// Vault address is a required parameter.\n// Mount point defaults to \"ssh\".\nfunc LoadSSHHelperConfig(path string) (*SSHHelperConfig, error) {\n\tcontents, err := ioutil.ReadFile(path)\n\tif err != nil && !os.IsNotExist(err) {\n\t\treturn nil, multierror.Prefix(err, \"ssh_helper:\")\n\t}\n\treturn ParseSSHHelperConfig(string(contents))\n}\n\n// ParseSSHHelperConfig parses the given contents as a string for the SSHHelper\n// configuration.\nfunc ParseSSHHelperConfig(contents string) (*SSHHelperConfig, error) {\n\troot, err := hcl.Parse(string(contents))\n\tif err != nil {\n\t\treturn nil, errwrap.Wrapf(\"error parsing config: {{err}}\", err)\n\t}\n\n\tlist, ok := root.Node.(*ast.ObjectList)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"error parsing config: file doesn't contain a root object\")\n\t}\n\n\tvalid := []string{\n\t\t\"vault_addr\",\n\t\t\"ssh_mount_point\",\n\t\t\"namespace\",\n\t\t\"ca_cert\",\n\t\t\"ca_path\",\n\t\t\"allowed_cidr_list\",\n\t\t\"allowed_roles\",\n\t\t\"tls_skip_verify\",\n\t\t\"tls_server_name\",\n\t}\n\tif err := CheckHCLKeys(list, valid); err != nil {\n\t\treturn nil, multierror.Prefix(err, \"ssh_helper:\")\n\t}\n\n\tvar c SSHHelperConfig\n\tc.SSHMountPoint = SSHHelperDefaultMountPoint\n\tif err := hcl.DecodeObject(&c, list); err != nil {\n\t\treturn nil, multierror.Prefix(err, \"ssh_helper:\")\n\t}\n\n\tif c.VaultAddr == \"\" {\n\t\treturn nil, fmt.Errorf(`missing config \"vault_addr\"`)\n\t}\n\treturn &c, nil\n}\n\nfunc CheckHCLKeys(node ast.Node, valid []string) error {\n\tvar list *ast.ObjectList\n\tswitch n := node.(type) {\n\tcase *ast.ObjectList:\n\t\tlist = n\n\tcase *ast.ObjectType:\n\t\tlist = n.List\n\tdefault:\n\t\treturn fmt.Errorf(\"cannot check HCL keys of type %T\", n)\n\t}\n\n\tvalidMap := make(map[string]struct{}, len(valid))\n\tfor _, v := range valid {\n\t\tvalidMap[v] = struct{}{}\n\t}\n\n\tvar result error\n\tfor _, item := range list.Items {\n\t\tkey := item.Keys[0].Token.Value().(string)\n\t\tif _, ok := validMap[key]; !ok {\n\t\t\tresult = multierror.Append(result, fmt.Errorf(\"invalid key %q on line %d\", key, item.Assign.Line))\n\t\t}\n\t}\n\n\treturn result\n}\n\n// SSHHelper creates an SSHHelper object which can talk to Vault server with SSH backend\n// mounted at default path (\"ssh\").\nfunc (c *Client) SSHHelper() *SSHHelper {\n\treturn c.SSHHelperWithMountPoint(SSHHelperDefaultMountPoint)\n}\n\n// SSHHelperWithMountPoint creates an SSHHelper object which can talk to Vault server with SSH backend\n// mounted at a specific mount point.\nfunc (c *Client) SSHHelperWithMountPoint(mountPoint string) *SSHHelper {\n\treturn &SSHHelper{\n\t\tc:          c,\n\t\tMountPoint: mountPoint,\n\t}\n}\n\n// Verify verifies if the key provided by user is present in Vault server. The response\n// will contain the IP address and username associated with the OTP. In case the\n// OTP matches the echo request message, instead of searching an entry for the OTP,\n// an echo response message is returned. This feature is used by ssh-helper to verify if\n// its configured correctly.\nfunc (c *SSHHelper) Verify(otp string) (*SSHVerifyResponse, error) {\n\treturn c.VerifyWithContext(context.Background(), otp)\n}\n\n// VerifyWithContext the same as Verify but with a custom context.\nfunc (c *SSHHelper) VerifyWithContext(ctx context.Context, otp string) (*SSHVerifyResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tdata := map[string]interface{}{\n\t\t\"otp\": otp,\n\t}\n\tverifyPath := fmt.Sprintf(\"/v1/%s/verify\", c.MountPoint)\n\tr := c.c.NewRequest(http.MethodPut, verifyPath)\n\tif err := r.SetJSONBody(data); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif secret.Data == nil {\n\t\treturn nil, nil\n\t}\n\n\tvar verifyResp SSHVerifyResponse\n\terr = mapstructure.Decode(secret.Data, &verifyResp)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &verifyResp, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sudo_paths.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"regexp\"\n)\n\n// sudoPaths is a map containing the paths that require a token's policy\n// to have the \"sudo\" capability. The keys are the paths as strings, in\n// the same format as they are returned by the OpenAPI spec. The values\n// are the regular expressions that can be used to test whether a given\n// path matches that path or not (useful specifically for the paths that\n// contain templated fields.)\nvar sudoPaths = map[string]*regexp.Regexp{\n\t\"/auth/token/accessors\":                         regexp.MustCompile(`^/auth/token/accessors/?$`),\n\t\"/auth/token/revoke-orphan\":                     regexp.MustCompile(`^/auth/token/revoke-orphan$`),\n\t\"/pki/root\":                                     regexp.MustCompile(`^/pki/root$`),\n\t\"/pki/root/sign-self-issued\":                    regexp.MustCompile(`^/pki/root/sign-self-issued$`),\n\t\"/sys/audit\":                                    regexp.MustCompile(`^/sys/audit$`),\n\t\"/sys/audit/{path}\":                             regexp.MustCompile(`^/sys/audit/.+$`),\n\t\"/sys/auth/{path}\":                              regexp.MustCompile(`^/sys/auth/.+$`),\n\t\"/sys/auth/{path}/tune\":                         regexp.MustCompile(`^/sys/auth/.+/tune$`),\n\t\"/sys/config/auditing/request-headers\":          regexp.MustCompile(`^/sys/config/auditing/request-headers$`),\n\t\"/sys/config/auditing/request-headers/{header}\": regexp.MustCompile(`^/sys/config/auditing/request-headers/.+$`),\n\t\"/sys/config/cors\":                              regexp.MustCompile(`^/sys/config/cors$`),\n\t\"/sys/config/ui/headers\":                        regexp.MustCompile(`^/sys/config/ui/headers/?$`),\n\t\"/sys/config/ui/headers/{header}\":               regexp.MustCompile(`^/sys/config/ui/headers/.+$`),\n\t\"/sys/internal/inspect/router/{tag}\":            regexp.MustCompile(`^/sys/internal/inspect/router/.+$`),\n\t\"/sys/leases\":                                   regexp.MustCompile(`^/sys/leases$`),\n\t// This entry is a bit wrong... sys/leases/lookup does NOT require sudo. But sys/leases/lookup/ with a trailing\n\t// slash DOES require sudo. But the part of the Vault CLI that uses this logic doesn't pass operation-appropriate\n\t// trailing slashes, it always strips them off, so we end up giving the wrong answer for one of these.\n\t\"/sys/leases/lookup/{prefix}\":                 regexp.MustCompile(`^/sys/leases/lookup(?:/.+)?$`),\n\t\"/sys/leases/revoke-force/{prefix}\":           regexp.MustCompile(`^/sys/leases/revoke-force/.+$`),\n\t\"/sys/leases/revoke-prefix/{prefix}\":          regexp.MustCompile(`^/sys/leases/revoke-prefix/.+$`),\n\t\"/sys/plugins/catalog/{name}\":                 regexp.MustCompile(`^/sys/plugins/catalog/[^/]+$`),\n\t\"/sys/plugins/catalog/{type}\":                 regexp.MustCompile(`^/sys/plugins/catalog/[\\w-]+$`),\n\t\"/sys/plugins/catalog/{type}/{name}\":          regexp.MustCompile(`^/sys/plugins/catalog/[\\w-]+/[^/]+$`),\n\t\"/sys/plugins/runtimes/catalog\":               regexp.MustCompile(`^/sys/plugins/runtimes/catalog/?$`),\n\t\"/sys/plugins/runtimes/catalog/{type}/{name}\": regexp.MustCompile(`^/sys/plugins/runtimes/catalog/[\\w-]+/[^/]+$`),\n\t\"/sys/raw/{path}\":                             regexp.MustCompile(`^/sys/raw(?:/.+)?$`),\n\t\"/sys/remount\":                                regexp.MustCompile(`^/sys/remount$`),\n\t\"/sys/revoke-force/{prefix}\":                  regexp.MustCompile(`^/sys/revoke-force/.+$`),\n\t\"/sys/revoke-prefix/{prefix}\":                 regexp.MustCompile(`^/sys/revoke-prefix/.+$`),\n\t\"/sys/rotate\":                                 regexp.MustCompile(`^/sys/rotate$`),\n\t\"/sys/seal\":                                   regexp.MustCompile(`^/sys/seal$`),\n\t\"/sys/step-down\":                              regexp.MustCompile(`^/sys/step-down$`),\n\n\t// enterprise-only paths\n\t\"/sys/replication/dr/primary/secondary-token\":          regexp.MustCompile(`^/sys/replication/dr/primary/secondary-token$`),\n\t\"/sys/replication/performance/primary/secondary-token\": regexp.MustCompile(`^/sys/replication/performance/primary/secondary-token$`),\n\t\"/sys/replication/primary/secondary-token\":             regexp.MustCompile(`^/sys/replication/primary/secondary-token$`),\n\t\"/sys/replication/reindex\":                             regexp.MustCompile(`^/sys/replication/reindex$`),\n\t\"/sys/storage/raft/snapshot-auto/config\":               regexp.MustCompile(`^/sys/storage/raft/snapshot-auto/config/?$`),\n\t\"/sys/storage/raft/snapshot-auto/config/{name}\":        regexp.MustCompile(`^/sys/storage/raft/snapshot-auto/config/[^/]+$`),\n}\n\nfunc SudoPaths() map[string]*regexp.Regexp {\n\treturn sudoPaths\n}\n\n// Determine whether the given path requires the sudo capability.\n// Note that this uses hardcoded static path information, so will return incorrect results for paths in namespaces,\n// or for secret engines mounted at non-default paths.\n// Expects to receive a path with an initial slash, but no trailing slashes, as the Vault CLI (the only known and\n// expected user of this function) sanitizes its paths that way.\nfunc IsSudoPath(path string) bool {\n\t// Return early if the path is any of the non-templated sudo paths.\n\tif _, ok := sudoPaths[path]; ok {\n\t\treturn true\n\t}\n\n\t// Some sudo paths have templated fields in them.\n\t// (e.g. /sys/revoke-prefix/{prefix})\n\t// The values in the sudoPaths map are actually regular expressions,\n\t// so we can check if our path matches against them.\n\tfor _, sudoPathRegexp := range sudoPaths {\n\t\tmatch := sudoPathRegexp.MatchString(path)\n\t\tif match {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\n// Sys is used to perform system-related operations on Vault.\ntype Sys struct {\n\tc *Client\n}\n\n// Sys is used to return the client for sys-related API calls.\nfunc (c *Client) Sys() *Sys {\n\treturn &Sys{c: c}\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_audit.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nfunc (c *Sys) AuditHash(path string, input string) (string, error) {\n\treturn c.AuditHashWithContext(context.Background(), path, input)\n}\n\nfunc (c *Sys) AuditHashWithContext(ctx context.Context, path string, input string) (string, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tbody := map[string]interface{}{\n\t\t\"input\": input,\n\t}\n\n\tr := c.c.NewRequest(http.MethodPut, fmt.Sprintf(\"/v1/sys/audit-hash/%s\", path))\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn \"\", errors.New(\"data from server response is empty\")\n\t}\n\n\thash, ok := secret.Data[\"hash\"]\n\tif !ok {\n\t\treturn \"\", errors.New(\"hash not found in response data\")\n\t}\n\thashStr, ok := hash.(string)\n\tif !ok {\n\t\treturn \"\", errors.New(\"could not parse hash in response data\")\n\t}\n\n\treturn hashStr, nil\n}\n\nfunc (c *Sys) ListAudit() (map[string]*Audit, error) {\n\treturn c.ListAuditWithContext(context.Background())\n}\n\nfunc (c *Sys) ListAuditWithContext(ctx context.Context) (map[string]*Audit, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/audit\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tmounts := map[string]*Audit{}\n\terr = mapstructure.Decode(secret.Data, &mounts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn mounts, nil\n}\n\n// DEPRECATED: Use EnableAuditWithOptions instead\nfunc (c *Sys) EnableAudit(\n\tpath string, auditType string, desc string, opts map[string]string,\n) error {\n\treturn c.EnableAuditWithOptions(path, &EnableAuditOptions{\n\t\tType:        auditType,\n\t\tDescription: desc,\n\t\tOptions:     opts,\n\t})\n}\n\nfunc (c *Sys) EnableAuditWithOptions(path string, options *EnableAuditOptions) error {\n\treturn c.EnableAuditWithOptionsWithContext(context.Background(), path, options)\n}\n\nfunc (c *Sys) EnableAuditWithOptionsWithContext(ctx context.Context, path string, options *EnableAuditOptions) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, fmt.Sprintf(\"/v1/sys/audit/%s\", path))\n\tif err := r.SetJSONBody(options); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n\nfunc (c *Sys) DisableAudit(path string) error {\n\treturn c.DisableAuditWithContext(context.Background(), path)\n}\n\nfunc (c *Sys) DisableAuditWithContext(ctx context.Context, path string) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodDelete, fmt.Sprintf(\"/v1/sys/audit/%s\", path))\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\n// Structures for the requests/response are all down here. They aren't\n// individually documented because the map almost directly to the raw HTTP API\n// documentation. Please refer to that documentation for more details.\n\ntype EnableAuditOptions struct {\n\tType        string            `json:\"type\" mapstructure:\"type\"`\n\tDescription string            `json:\"description\" mapstructure:\"description\"`\n\tOptions     map[string]string `json:\"options\" mapstructure:\"options\"`\n\tLocal       bool              `json:\"local\" mapstructure:\"local\"`\n}\n\ntype Audit struct {\n\tType        string            `json:\"type\" mapstructure:\"type\"`\n\tDescription string            `json:\"description\" mapstructure:\"description\"`\n\tOptions     map[string]string `json:\"options\" mapstructure:\"options\"`\n\tLocal       bool              `json:\"local\" mapstructure:\"local\"`\n\tPath        string            `json:\"path\" mapstructure:\"path\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_auth.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nfunc (c *Sys) ListAuth() (map[string]*AuthMount, error) {\n\treturn c.ListAuthWithContext(context.Background())\n}\n\nfunc (c *Sys) ListAuthWithContext(ctx context.Context) (map[string]*AuthMount, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/auth\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tmounts := map[string]*AuthMount{}\n\terr = mapstructure.Decode(secret.Data, &mounts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn mounts, nil\n}\n\n// DEPRECATED: Use EnableAuthWithOptions instead\nfunc (c *Sys) EnableAuth(path, authType, desc string) error {\n\treturn c.EnableAuthWithOptions(path, &EnableAuthOptions{\n\t\tType:        authType,\n\t\tDescription: desc,\n\t})\n}\n\nfunc (c *Sys) EnableAuthWithOptions(path string, options *EnableAuthOptions) error {\n\treturn c.EnableAuthWithOptionsWithContext(context.Background(), path, options)\n}\n\nfunc (c *Sys) EnableAuthWithOptionsWithContext(ctx context.Context, path string, options *EnableAuthOptions) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPost, fmt.Sprintf(\"/v1/sys/auth/%s\", path))\n\tif err := r.SetJSONBody(options); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n\nfunc (c *Sys) DisableAuth(path string) error {\n\treturn c.DisableAuthWithContext(context.Background(), path)\n}\n\nfunc (c *Sys) DisableAuthWithContext(ctx context.Context, path string) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodDelete, fmt.Sprintf(\"/v1/sys/auth/%s\", path))\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\n// Rather than duplicate, we can use modern Go's type aliasing\ntype (\n\tEnableAuthOptions = MountInput\n\tAuthConfigInput   = MountConfigInput\n\tAuthMount         = MountOutput\n\tAuthConfigOutput  = MountConfigOutput\n)\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_capabilities.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nfunc (c *Sys) CapabilitiesSelf(path string) ([]string, error) {\n\treturn c.CapabilitiesSelfWithContext(context.Background(), path)\n}\n\nfunc (c *Sys) CapabilitiesSelfWithContext(ctx context.Context, path string) ([]string, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\treturn c.CapabilitiesWithContext(ctx, c.c.Token(), path)\n}\n\nfunc (c *Sys) Capabilities(token, path string) ([]string, error) {\n\treturn c.CapabilitiesWithContext(context.Background(), token, path)\n}\n\nfunc (c *Sys) CapabilitiesWithContext(ctx context.Context, token, path string) ([]string, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tbody := map[string]string{\n\t\t\"token\": token,\n\t\t\"path\":  path,\n\t}\n\n\treqPath := \"/v1/sys/capabilities\"\n\tif token == c.c.Token() {\n\t\treqPath = fmt.Sprintf(\"%s-self\", reqPath)\n\t}\n\n\tr := c.c.NewRequest(http.MethodPost, reqPath)\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tvar res []string\n\terr = mapstructure.Decode(secret.Data[path], &res)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(res) == 0 {\n\t\t_, ok := secret.Data[\"capabilities\"]\n\t\tif ok {\n\t\t\terr = mapstructure.Decode(secret.Data[\"capabilities\"], &res)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn res, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_config_cors.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"net/http\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nfunc (c *Sys) CORSStatus() (*CORSResponse, error) {\n\treturn c.CORSStatusWithContext(context.Background())\n}\n\nfunc (c *Sys) CORSStatusWithContext(ctx context.Context) (*CORSResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/config/cors\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tvar result CORSResponse\n\terr = mapstructure.Decode(secret.Data, &result)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &result, err\n}\n\nfunc (c *Sys) ConfigureCORS(req *CORSRequest) error {\n\treturn c.ConfigureCORSWithContext(context.Background(), req)\n}\n\nfunc (c *Sys) ConfigureCORSWithContext(ctx context.Context, req *CORSRequest) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/config/cors\")\n\tif err := r.SetJSONBody(req); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\nfunc (c *Sys) DisableCORS() error {\n\treturn c.DisableCORSWithContext(context.Background())\n}\n\nfunc (c *Sys) DisableCORSWithContext(ctx context.Context) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodDelete, \"/v1/sys/config/cors\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\ntype CORSRequest struct {\n\tAllowedOrigins []string `json:\"allowed_origins\" mapstructure:\"allowed_origins\"`\n\tAllowedHeaders []string `json:\"allowed_headers\" mapstructure:\"allowed_headers\"`\n\tEnabled        bool     `json:\"enabled\" mapstructure:\"enabled\"`\n}\n\ntype CORSResponse struct {\n\tAllowedOrigins []string `json:\"allowed_origins\" mapstructure:\"allowed_origins\"`\n\tAllowedHeaders []string `json:\"allowed_headers\" mapstructure:\"allowed_headers\"`\n\tEnabled        bool     `json:\"enabled\" mapstructure:\"enabled\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_generate_root.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc (c *Sys) GenerateRootStatus() (*GenerateRootStatusResponse, error) {\n\treturn c.GenerateRootStatusWithContext(context.Background())\n}\n\nfunc (c *Sys) GenerateDROperationTokenStatus() (*GenerateRootStatusResponse, error) {\n\treturn c.GenerateDROperationTokenStatusWithContext(context.Background())\n}\n\nfunc (c *Sys) GenerateRecoveryOperationTokenStatus() (*GenerateRootStatusResponse, error) {\n\treturn c.GenerateRecoveryOperationTokenStatusWithContext(context.Background())\n}\n\nfunc (c *Sys) GenerateRootStatusWithContext(ctx context.Context) (*GenerateRootStatusResponse, error) {\n\treturn c.generateRootStatusCommonWithContext(ctx, \"/v1/sys/generate-root/attempt\")\n}\n\nfunc (c *Sys) GenerateDROperationTokenStatusWithContext(ctx context.Context) (*GenerateRootStatusResponse, error) {\n\treturn c.generateRootStatusCommonWithContext(ctx, \"/v1/sys/replication/dr/secondary/generate-operation-token/attempt\")\n}\n\nfunc (c *Sys) GenerateRecoveryOperationTokenStatusWithContext(ctx context.Context) (*GenerateRootStatusResponse, error) {\n\treturn c.generateRootStatusCommonWithContext(ctx, \"/v1/sys/generate-recovery-token/attempt\")\n}\n\nfunc (c *Sys) generateRootStatusCommonWithContext(ctx context.Context, path string) (*GenerateRootStatusResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, path)\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result GenerateRootStatusResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\nfunc (c *Sys) GenerateRootInit(otp, pgpKey string) (*GenerateRootStatusResponse, error) {\n\treturn c.GenerateRootInitWithContext(context.Background(), otp, pgpKey)\n}\n\nfunc (c *Sys) GenerateDROperationTokenInit(otp, pgpKey string) (*GenerateRootStatusResponse, error) {\n\treturn c.GenerateDROperationTokenInitWithContext(context.Background(), otp, pgpKey)\n}\n\nfunc (c *Sys) GenerateRecoveryOperationTokenInit(otp, pgpKey string) (*GenerateRootStatusResponse, error) {\n\treturn c.GenerateRecoveryOperationTokenInitWithContext(context.Background(), otp, pgpKey)\n}\n\nfunc (c *Sys) GenerateRootInitWithContext(ctx context.Context, otp, pgpKey string) (*GenerateRootStatusResponse, error) {\n\treturn c.generateRootInitCommonWithContext(ctx, \"/v1/sys/generate-root/attempt\", otp, pgpKey)\n}\n\nfunc (c *Sys) GenerateDROperationTokenInitWithContext(ctx context.Context, otp, pgpKey string) (*GenerateRootStatusResponse, error) {\n\treturn c.generateRootInitCommonWithContext(ctx, \"/v1/sys/replication/dr/secondary/generate-operation-token/attempt\", otp, pgpKey)\n}\n\nfunc (c *Sys) GenerateRecoveryOperationTokenInitWithContext(ctx context.Context, otp, pgpKey string) (*GenerateRootStatusResponse, error) {\n\treturn c.generateRootInitCommonWithContext(ctx, \"/v1/sys/generate-recovery-token/attempt\", otp, pgpKey)\n}\n\nfunc (c *Sys) generateRootInitCommonWithContext(ctx context.Context, path, otp, pgpKey string) (*GenerateRootStatusResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tbody := map[string]interface{}{\n\t\t\"otp\":     otp,\n\t\t\"pgp_key\": pgpKey,\n\t}\n\n\tr := c.c.NewRequest(http.MethodPut, path)\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result GenerateRootStatusResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\nfunc (c *Sys) GenerateRootCancel() error {\n\treturn c.GenerateRootCancelWithContext(context.Background())\n}\n\nfunc (c *Sys) GenerateDROperationTokenCancel() error {\n\treturn c.GenerateDROperationTokenCancelWithContext(context.Background())\n}\n\nfunc (c *Sys) GenerateRecoveryOperationTokenCancel() error {\n\treturn c.GenerateRecoveryOperationTokenCancelWithContext(context.Background())\n}\n\nfunc (c *Sys) GenerateRootCancelWithContext(ctx context.Context) error {\n\treturn c.generateRootCancelCommonWithContext(ctx, \"/v1/sys/generate-root/attempt\")\n}\n\nfunc (c *Sys) GenerateDROperationTokenCancelWithContext(ctx context.Context) error {\n\treturn c.generateRootCancelCommonWithContext(ctx, \"/v1/sys/replication/dr/secondary/generate-operation-token/attempt\")\n}\n\nfunc (c *Sys) GenerateRecoveryOperationTokenCancelWithContext(ctx context.Context) error {\n\treturn c.generateRootCancelCommonWithContext(ctx, \"/v1/sys/generate-recovery-token/attempt\")\n}\n\nfunc (c *Sys) generateRootCancelCommonWithContext(ctx context.Context, path string) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodDelete, path)\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\nfunc (c *Sys) GenerateRootUpdate(shard, nonce string) (*GenerateRootStatusResponse, error) {\n\treturn c.GenerateRootUpdateWithContext(context.Background(), shard, nonce)\n}\n\nfunc (c *Sys) GenerateDROperationTokenUpdate(shard, nonce string) (*GenerateRootStatusResponse, error) {\n\treturn c.GenerateDROperationTokenUpdateWithContext(context.Background(), shard, nonce)\n}\n\nfunc (c *Sys) GenerateRecoveryOperationTokenUpdate(shard, nonce string) (*GenerateRootStatusResponse, error) {\n\treturn c.GenerateRecoveryOperationTokenUpdateWithContext(context.Background(), shard, nonce)\n}\n\nfunc (c *Sys) GenerateRootUpdateWithContext(ctx context.Context, shard, nonce string) (*GenerateRootStatusResponse, error) {\n\treturn c.generateRootUpdateCommonWithContext(ctx, \"/v1/sys/generate-root/update\", shard, nonce)\n}\n\nfunc (c *Sys) GenerateDROperationTokenUpdateWithContext(ctx context.Context, shard, nonce string) (*GenerateRootStatusResponse, error) {\n\treturn c.generateRootUpdateCommonWithContext(ctx, \"/v1/sys/replication/dr/secondary/generate-operation-token/update\", shard, nonce)\n}\n\nfunc (c *Sys) GenerateRecoveryOperationTokenUpdateWithContext(ctx context.Context, shard, nonce string) (*GenerateRootStatusResponse, error) {\n\treturn c.generateRootUpdateCommonWithContext(ctx, \"/v1/sys/generate-recovery-token/update\", shard, nonce)\n}\n\nfunc (c *Sys) generateRootUpdateCommonWithContext(ctx context.Context, path, shard, nonce string) (*GenerateRootStatusResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tbody := map[string]interface{}{\n\t\t\"key\":   shard,\n\t\t\"nonce\": nonce,\n\t}\n\n\tr := c.c.NewRequest(http.MethodPut, path)\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result GenerateRootStatusResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\ntype GenerateRootStatusResponse struct {\n\tNonce            string `json:\"nonce\"`\n\tStarted          bool   `json:\"started\"`\n\tProgress         int    `json:\"progress\"`\n\tRequired         int    `json:\"required\"`\n\tComplete         bool   `json:\"complete\"`\n\tEncodedToken     string `json:\"encoded_token\"`\n\tEncodedRootToken string `json:\"encoded_root_token\"`\n\tPGPFingerprint   string `json:\"pgp_fingerprint\"`\n\tOTP              string `json:\"otp\"`\n\tOTPLength        int    `json:\"otp_length\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_hastatus.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"time\"\n)\n\nfunc (c *Sys) HAStatus() (*HAStatusResponse, error) {\n\treturn c.HAStatusWithContext(context.Background())\n}\n\nfunc (c *Sys) HAStatusWithContext(ctx context.Context) (*HAStatusResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/ha-status\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result HAStatusResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\ntype HAStatusResponse struct {\n\tNodes []HANode\n}\n\ntype HANode struct {\n\tHostname       string     `json:\"hostname\"`\n\tAPIAddress     string     `json:\"api_address\"`\n\tClusterAddress string     `json:\"cluster_address\"`\n\tActiveNode     bool       `json:\"active_node\"`\n\tLastEcho       *time.Time `json:\"last_echo\"`\n\tVersion        string     `json:\"version\"`\n\tUpgradeVersion string     `json:\"upgrade_version,omitempty\"`\n\tRedundancyZone string     `json:\"redundancy_zone,omitempty\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_health.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc (c *Sys) Health() (*HealthResponse, error) {\n\treturn c.HealthWithContext(context.Background())\n}\n\nfunc (c *Sys) HealthWithContext(ctx context.Context) (*HealthResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/health\")\n\t// If the code is 400 or above it will automatically turn into an error,\n\t// but the sys/health API defaults to returning 5xx when not sealed or\n\t// inited, so we force this code to be something else so we parse correctly\n\tr.Params.Add(\"uninitcode\", \"299\")\n\tr.Params.Add(\"sealedcode\", \"299\")\n\tr.Params.Add(\"standbycode\", \"299\")\n\tr.Params.Add(\"drsecondarycode\", \"299\")\n\tr.Params.Add(\"performancestandbycode\", \"299\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result HealthResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\ntype HealthResponse struct {\n\tInitialized                bool   `json:\"initialized\"`\n\tSealed                     bool   `json:\"sealed\"`\n\tStandby                    bool   `json:\"standby\"`\n\tPerformanceStandby         bool   `json:\"performance_standby\"`\n\tReplicationPerformanceMode string `json:\"replication_performance_mode\"`\n\tReplicationDRMode          string `json:\"replication_dr_mode\"`\n\tServerTimeUTC              int64  `json:\"server_time_utc\"`\n\tVersion                    string `json:\"version\"`\n\tClusterName                string `json:\"cluster_name,omitempty\"`\n\tClusterID                  string `json:\"cluster_id,omitempty\"`\n\tLastWAL                    uint64 `json:\"last_wal,omitempty\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_init.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc (c *Sys) InitStatus() (bool, error) {\n\treturn c.InitStatusWithContext(context.Background())\n}\n\nfunc (c *Sys) InitStatusWithContext(ctx context.Context) (bool, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/init\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result InitStatusResponse\n\terr = resp.DecodeJSON(&result)\n\treturn result.Initialized, err\n}\n\nfunc (c *Sys) Init(opts *InitRequest) (*InitResponse, error) {\n\treturn c.InitWithContext(context.Background(), opts)\n}\n\nfunc (c *Sys) InitWithContext(ctx context.Context, opts *InitRequest) (*InitResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/init\")\n\tif err := r.SetJSONBody(opts); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result InitResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\ntype InitRequest struct {\n\tSecretShares      int      `json:\"secret_shares\"`\n\tSecretThreshold   int      `json:\"secret_threshold\"`\n\tStoredShares      int      `json:\"stored_shares\"`\n\tPGPKeys           []string `json:\"pgp_keys\"`\n\tRecoveryShares    int      `json:\"recovery_shares\"`\n\tRecoveryThreshold int      `json:\"recovery_threshold\"`\n\tRecoveryPGPKeys   []string `json:\"recovery_pgp_keys\"`\n\tRootTokenPGPKey   string   `json:\"root_token_pgp_key\"`\n}\n\ntype InitStatusResponse struct {\n\tInitialized bool\n}\n\ntype InitResponse struct {\n\tKeys            []string `json:\"keys\"`\n\tKeysB64         []string `json:\"keys_base64\"`\n\tRecoveryKeys    []string `json:\"recovery_keys\"`\n\tRecoveryKeysB64 []string `json:\"recovery_keys_base64\"`\n\tRootToken       string   `json:\"root_token\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_leader.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"time\"\n)\n\nfunc (c *Sys) Leader() (*LeaderResponse, error) {\n\treturn c.LeaderWithContext(context.Background())\n}\n\nfunc (c *Sys) LeaderWithContext(ctx context.Context) (*LeaderResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/leader\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result LeaderResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\ntype LeaderResponse struct {\n\tHAEnabled                bool      `json:\"ha_enabled\"`\n\tIsSelf                   bool      `json:\"is_self\"`\n\tActiveTime               time.Time `json:\"active_time\"`\n\tLeaderAddress            string    `json:\"leader_address\"`\n\tLeaderClusterAddress     string    `json:\"leader_cluster_address\"`\n\tPerfStandby              bool      `json:\"performance_standby\"`\n\tPerfStandbyLastRemoteWAL uint64    `json:\"performance_standby_last_remote_wal\"`\n\tLastWAL                  uint64    `json:\"last_wal\"`\n\tRaftCommittedIndex       uint64    `json:\"raft_committed_index,omitempty\"`\n\tRaftAppliedIndex         uint64    `json:\"raft_applied_index,omitempty\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_leases.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"net/http\"\n)\n\nfunc (c *Sys) Renew(id string, increment int) (*Secret, error) {\n\treturn c.RenewWithContext(context.Background(), id, increment)\n}\n\nfunc (c *Sys) RenewWithContext(ctx context.Context, id string, increment int) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/leases/renew\")\n\n\tbody := map[string]interface{}{\n\t\t\"increment\": increment,\n\t\t\"lease_id\":  id,\n\t}\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *Sys) Lookup(id string) (*Secret, error) {\n\treturn c.LookupWithContext(context.Background(), id)\n}\n\nfunc (c *Sys) LookupWithContext(ctx context.Context, id string) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/leases/lookup\")\n\n\tbody := map[string]interface{}{\n\t\t\"lease_id\": id,\n\t}\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn ParseSecret(resp.Body)\n}\n\nfunc (c *Sys) Revoke(id string) error {\n\treturn c.RevokeWithContext(context.Background(), id)\n}\n\nfunc (c *Sys) RevokeWithContext(ctx context.Context, id string) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/leases/revoke\")\n\tbody := map[string]interface{}{\n\t\t\"lease_id\": id,\n\t}\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\nfunc (c *Sys) RevokePrefix(id string) error {\n\treturn c.RevokePrefixWithContext(context.Background(), id)\n}\n\nfunc (c *Sys) RevokePrefixWithContext(ctx context.Context, id string) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/leases/revoke-prefix/\"+id)\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\nfunc (c *Sys) RevokeForce(id string) error {\n\treturn c.RevokeForceWithContext(context.Background(), id)\n}\n\nfunc (c *Sys) RevokeForceWithContext(ctx context.Context, id string) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/leases/revoke-force/\"+id)\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\nfunc (c *Sys) RevokeWithOptions(opts *RevokeOptions) error {\n\treturn c.RevokeWithOptionsWithContext(context.Background(), opts)\n}\n\nfunc (c *Sys) RevokeWithOptionsWithContext(ctx context.Context, opts *RevokeOptions) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tif opts == nil {\n\t\treturn errors.New(\"nil options provided\")\n\t}\n\n\t// Construct path\n\tpath := \"/v1/sys/leases/revoke/\"\n\tswitch {\n\tcase opts.Force:\n\t\tpath = \"/v1/sys/leases/revoke-force/\"\n\tcase opts.Prefix:\n\t\tpath = \"/v1/sys/leases/revoke-prefix/\"\n\t}\n\tpath += opts.LeaseID\n\n\tr := c.c.NewRequest(http.MethodPut, path)\n\tif !opts.Force {\n\t\tbody := map[string]interface{}{\n\t\t\t\"sync\": opts.Sync,\n\t\t}\n\t\tif err := r.SetJSONBody(body); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\ntype RevokeOptions struct {\n\tLeaseID string\n\tForce   bool\n\tPrefix  bool\n\tSync    bool\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_mfa.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n)\n\nfunc (c *Sys) MFAValidate(requestID string, payload map[string]interface{}) (*Secret, error) {\n\treturn c.MFAValidateWithContext(context.Background(), requestID, payload)\n}\n\nfunc (c *Sys) MFAValidateWithContext(ctx context.Context, requestID string, payload map[string]interface{}) (*Secret, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tbody := map[string]interface{}{\n\t\t\"mfa_request_id\": requestID,\n\t\t\"mfa_payload\":    payload,\n\t}\n\n\tr := c.c.NewRequest(http.MethodPost, fmt.Sprintf(\"/v1/sys/mfa/validate\"))\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to set request body: %w\", err)\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif resp != nil {\n\t\tdefer resp.Body.Close()\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse secret from response: %w\", err)\n\t}\n\n\tif secret == nil {\n\t\treturn nil, fmt.Errorf(\"data from server response is empty\")\n\t}\n\n\treturn secret, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_monitor.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n)\n\n// Monitor returns a channel that outputs strings containing the log messages\n// coming from the server.\nfunc (c *Sys) Monitor(ctx context.Context, logLevel string, logFormat string) (chan string, error) {\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/monitor\")\n\n\tif logLevel == \"\" {\n\t\tr.Params.Add(\"log_level\", \"info\")\n\t} else {\n\t\tr.Params.Add(\"log_level\", logLevel)\n\t}\n\n\tif logFormat == \"\" {\n\t\tr.Params.Add(\"log_format\", \"standard\")\n\t} else {\n\t\tr.Params.Add(\"log_format\", logFormat)\n\t}\n\n\tresp, err := c.c.RawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tlogCh := make(chan string, 64)\n\n\tgo func() {\n\t\tscanner := bufio.NewScanner(resp.Body)\n\t\tdroppedCount := 0\n\n\t\tdefer close(logCh)\n\t\tdefer resp.Body.Close()\n\n\t\tfor {\n\t\t\tif ctx.Err() != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif !scanner.Scan() {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlogMessage := scanner.Text()\n\n\t\t\tif droppedCount > 0 {\n\t\t\t\tselect {\n\t\t\t\tcase logCh <- fmt.Sprintf(\"Monitor dropped %d logs during monitor request\\n\", droppedCount):\n\t\t\t\t\tdroppedCount = 0\n\t\t\t\tdefault:\n\t\t\t\t\tdroppedCount++\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tselect {\n\t\t\tcase logCh <- logMessage:\n\t\t\tdefault:\n\t\t\t\tdroppedCount++\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn logCh, nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_mounts.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nfunc (c *Sys) ListMounts() (map[string]*MountOutput, error) {\n\treturn c.ListMountsWithContext(context.Background())\n}\n\nfunc (c *Sys) ListMountsWithContext(ctx context.Context) (map[string]*MountOutput, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/mounts\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tmounts := map[string]*MountOutput{}\n\terr = mapstructure.Decode(secret.Data, &mounts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn mounts, nil\n}\n\nfunc (c *Sys) Mount(path string, mountInfo *MountInput) error {\n\treturn c.MountWithContext(context.Background(), path, mountInfo)\n}\n\nfunc (c *Sys) MountWithContext(ctx context.Context, path string, mountInfo *MountInput) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPost, fmt.Sprintf(\"/v1/sys/mounts/%s\", path))\n\tif err := r.SetJSONBody(mountInfo); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n\nfunc (c *Sys) Unmount(path string) error {\n\treturn c.UnmountWithContext(context.Background(), path)\n}\n\nfunc (c *Sys) UnmountWithContext(ctx context.Context, path string) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodDelete, fmt.Sprintf(\"/v1/sys/mounts/%s\", path))\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\n// Remount wraps RemountWithContext using context.Background.\nfunc (c *Sys) Remount(from, to string) error {\n\treturn c.RemountWithContext(context.Background(), from, to)\n}\n\n// RemountWithContext kicks off a remount operation, polls the status endpoint using\n// the migration ID till either success or failure state is observed\nfunc (c *Sys) RemountWithContext(ctx context.Context, from, to string) error {\n\tremountResp, err := c.StartRemountWithContext(ctx, from, to)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor {\n\t\tremountStatusResp, err := c.RemountStatusWithContext(ctx, remountResp.MigrationID)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif remountStatusResp.MigrationInfo.MigrationStatus == \"success\" {\n\t\t\treturn nil\n\t\t}\n\t\tif remountStatusResp.MigrationInfo.MigrationStatus == \"failure\" {\n\t\t\treturn fmt.Errorf(\"Failure! Error encountered moving mount %s to %s, with migration ID %s\", from, to, remountResp.MigrationID)\n\t\t}\n\t\ttime.Sleep(1 * time.Second)\n\t}\n}\n\n// StartRemount wraps StartRemountWithContext using context.Background.\nfunc (c *Sys) StartRemount(from, to string) (*MountMigrationOutput, error) {\n\treturn c.StartRemountWithContext(context.Background(), from, to)\n}\n\n// StartRemountWithContext kicks off a mount migration and returns a response with the migration ID\nfunc (c *Sys) StartRemountWithContext(ctx context.Context, from, to string) (*MountMigrationOutput, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tbody := map[string]interface{}{\n\t\t\"from\": from,\n\t\t\"to\":   to,\n\t}\n\n\tr := c.c.NewRequest(http.MethodPost, \"/v1/sys/remount\")\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tvar result MountMigrationOutput\n\terr = mapstructure.Decode(secret.Data, &result)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &result, err\n}\n\n// RemountStatus wraps RemountStatusWithContext using context.Background.\nfunc (c *Sys) RemountStatus(migrationID string) (*MountMigrationStatusOutput, error) {\n\treturn c.RemountStatusWithContext(context.Background(), migrationID)\n}\n\n// RemountStatusWithContext checks the status of a mount migration operation with the provided ID\nfunc (c *Sys) RemountStatusWithContext(ctx context.Context, migrationID string) (*MountMigrationStatusOutput, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, fmt.Sprintf(\"/v1/sys/remount/status/%s\", migrationID))\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tvar result MountMigrationStatusOutput\n\terr = mapstructure.Decode(secret.Data, &result)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &result, err\n}\n\nfunc (c *Sys) TuneMount(path string, config MountConfigInput) error {\n\treturn c.TuneMountWithContext(context.Background(), path, config)\n}\n\nfunc (c *Sys) TuneMountWithContext(ctx context.Context, path string, config MountConfigInput) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPost, fmt.Sprintf(\"/v1/sys/mounts/%s/tune\", path))\n\tif err := r.SetJSONBody(config); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\nfunc (c *Sys) MountConfig(path string) (*MountConfigOutput, error) {\n\treturn c.MountConfigWithContext(context.Background(), path)\n}\n\nfunc (c *Sys) MountConfigWithContext(ctx context.Context, path string) (*MountConfigOutput, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, fmt.Sprintf(\"/v1/sys/mounts/%s/tune\", path))\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tvar result MountConfigOutput\n\terr = mapstructure.Decode(secret.Data, &result)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &result, err\n}\n\ntype MountInput struct {\n\tType                  string            `json:\"type\"`\n\tDescription           string            `json:\"description\"`\n\tConfig                MountConfigInput  `json:\"config\"`\n\tLocal                 bool              `json:\"local\"`\n\tSealWrap              bool              `json:\"seal_wrap\" mapstructure:\"seal_wrap\"`\n\tExternalEntropyAccess bool              `json:\"external_entropy_access\" mapstructure:\"external_entropy_access\"`\n\tOptions               map[string]string `json:\"options\"`\n\n\t// Deprecated: Newer server responses should be returning this information in the\n\t// Type field (json: \"type\") instead.\n\tPluginName string `json:\"plugin_name,omitempty\"`\n}\n\ntype MountConfigInput struct {\n\tOptions                   map[string]string       `json:\"options\" mapstructure:\"options\"`\n\tDefaultLeaseTTL           string                  `json:\"default_lease_ttl\" mapstructure:\"default_lease_ttl\"`\n\tDescription               *string                 `json:\"description,omitempty\" mapstructure:\"description\"`\n\tMaxLeaseTTL               string                  `json:\"max_lease_ttl\" mapstructure:\"max_lease_ttl\"`\n\tForceNoCache              bool                    `json:\"force_no_cache\" mapstructure:\"force_no_cache\"`\n\tAuditNonHMACRequestKeys   []string                `json:\"audit_non_hmac_request_keys,omitempty\" mapstructure:\"audit_non_hmac_request_keys\"`\n\tAuditNonHMACResponseKeys  []string                `json:\"audit_non_hmac_response_keys,omitempty\" mapstructure:\"audit_non_hmac_response_keys\"`\n\tListingVisibility         string                  `json:\"listing_visibility,omitempty\" mapstructure:\"listing_visibility\"`\n\tPassthroughRequestHeaders []string                `json:\"passthrough_request_headers,omitempty\" mapstructure:\"passthrough_request_headers\"`\n\tAllowedResponseHeaders    []string                `json:\"allowed_response_headers,omitempty\" mapstructure:\"allowed_response_headers\"`\n\tTokenType                 string                  `json:\"token_type,omitempty\" mapstructure:\"token_type\"`\n\tAllowedManagedKeys        []string                `json:\"allowed_managed_keys,omitempty\" mapstructure:\"allowed_managed_keys\"`\n\tPluginVersion             string                  `json:\"plugin_version,omitempty\"`\n\tUserLockoutConfig         *UserLockoutConfigInput `json:\"user_lockout_config,omitempty\"`\n\t// Deprecated: This field will always be blank for newer server responses.\n\tPluginName string `json:\"plugin_name,omitempty\" mapstructure:\"plugin_name\"`\n}\n\ntype MountOutput struct {\n\tUUID                  string            `json:\"uuid\"`\n\tType                  string            `json:\"type\"`\n\tDescription           string            `json:\"description\"`\n\tAccessor              string            `json:\"accessor\"`\n\tConfig                MountConfigOutput `json:\"config\"`\n\tOptions               map[string]string `json:\"options\"`\n\tLocal                 bool              `json:\"local\"`\n\tSealWrap              bool              `json:\"seal_wrap\" mapstructure:\"seal_wrap\"`\n\tExternalEntropyAccess bool              `json:\"external_entropy_access\" mapstructure:\"external_entropy_access\"`\n\tPluginVersion         string            `json:\"plugin_version\" mapstructure:\"plugin_version\"`\n\tRunningVersion        string            `json:\"running_plugin_version\" mapstructure:\"running_plugin_version\"`\n\tRunningSha256         string            `json:\"running_sha256\" mapstructure:\"running_sha256\"`\n\tDeprecationStatus     string            `json:\"deprecation_status\" mapstructure:\"deprecation_status\"`\n}\n\ntype MountConfigOutput struct {\n\tDefaultLeaseTTL           int                      `json:\"default_lease_ttl\" mapstructure:\"default_lease_ttl\"`\n\tMaxLeaseTTL               int                      `json:\"max_lease_ttl\" mapstructure:\"max_lease_ttl\"`\n\tForceNoCache              bool                     `json:\"force_no_cache\" mapstructure:\"force_no_cache\"`\n\tAuditNonHMACRequestKeys   []string                 `json:\"audit_non_hmac_request_keys,omitempty\" mapstructure:\"audit_non_hmac_request_keys\"`\n\tAuditNonHMACResponseKeys  []string                 `json:\"audit_non_hmac_response_keys,omitempty\" mapstructure:\"audit_non_hmac_response_keys\"`\n\tListingVisibility         string                   `json:\"listing_visibility,omitempty\" mapstructure:\"listing_visibility\"`\n\tPassthroughRequestHeaders []string                 `json:\"passthrough_request_headers,omitempty\" mapstructure:\"passthrough_request_headers\"`\n\tAllowedResponseHeaders    []string                 `json:\"allowed_response_headers,omitempty\" mapstructure:\"allowed_response_headers\"`\n\tTokenType                 string                   `json:\"token_type,omitempty\" mapstructure:\"token_type\"`\n\tAllowedManagedKeys        []string                 `json:\"allowed_managed_keys,omitempty\" mapstructure:\"allowed_managed_keys\"`\n\tUserLockoutConfig         *UserLockoutConfigOutput `json:\"user_lockout_config,omitempty\"`\n\t// Deprecated: This field will always be blank for newer server responses.\n\tPluginName string `json:\"plugin_name,omitempty\" mapstructure:\"plugin_name\"`\n}\n\ntype UserLockoutConfigInput struct {\n\tLockoutThreshold            string `json:\"lockout_threshold,omitempty\" structs:\"lockout_threshold\" mapstructure:\"lockout_threshold\"`\n\tLockoutDuration             string `json:\"lockout_duration,omitempty\" structs:\"lockout_duration\" mapstructure:\"lockout_duration\"`\n\tLockoutCounterResetDuration string `json:\"lockout_counter_reset_duration,omitempty\" structs:\"lockout_counter_reset_duration\" mapstructure:\"lockout_counter_reset_duration\"`\n\tDisableLockout              *bool  `json:\"lockout_disable,omitempty\" structs:\"lockout_disable\" mapstructure:\"lockout_disable\"`\n}\n\ntype UserLockoutConfigOutput struct {\n\tLockoutThreshold    uint  `json:\"lockout_threshold,omitempty\" structs:\"lockout_threshold\" mapstructure:\"lockout_threshold\"`\n\tLockoutDuration     int   `json:\"lockout_duration,omitempty\" structs:\"lockout_duration\" mapstructure:\"lockout_duration\"`\n\tLockoutCounterReset int   `json:\"lockout_counter_reset,omitempty\" structs:\"lockout_counter_reset\" mapstructure:\"lockout_counter_reset\"`\n\tDisableLockout      *bool `json:\"disable_lockout,omitempty\" structs:\"disable_lockout\" mapstructure:\"disable_lockout\"`\n}\n\ntype MountMigrationOutput struct {\n\tMigrationID string `mapstructure:\"migration_id\"`\n}\n\ntype MountMigrationStatusOutput struct {\n\tMigrationID   string                    `mapstructure:\"migration_id\"`\n\tMigrationInfo *MountMigrationStatusInfo `mapstructure:\"migration_info\"`\n}\n\ntype MountMigrationStatusInfo struct {\n\tSourceMount     string `mapstructure:\"source_mount\"`\n\tTargetMount     string `mapstructure:\"target_mount\"`\n\tMigrationStatus string `mapstructure:\"status\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_plugins.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\n// ListPluginsInput is used as input to the ListPlugins function.\ntype ListPluginsInput struct {\n\t// Type of the plugin. Required.\n\tType PluginType `json:\"type\"`\n}\n\n// ListPluginsResponse is the response from the ListPlugins call.\ntype ListPluginsResponse struct {\n\t// PluginsByType is the list of plugins by type.\n\tPluginsByType map[PluginType][]string `json:\"types\"`\n\n\tDetails []PluginDetails `json:\"details,omitempty\"`\n\n\t// Names is the list of names of the plugins.\n\t//\n\t// Deprecated: Newer server responses should be returning PluginsByType (json:\n\t// \"types\") instead.\n\tNames []string `json:\"names\"`\n}\n\ntype PluginDetails struct {\n\tType              string `json:\"type\"`\n\tName              string `json:\"name\"`\n\tVersion           string `json:\"version,omitempty\"`\n\tBuiltin           bool   `json:\"builtin\"`\n\tDeprecationStatus string `json:\"deprecation_status,omitempty\" mapstructure:\"deprecation_status\"`\n}\n\n// ListPlugins wraps ListPluginsWithContext using context.Background.\nfunc (c *Sys) ListPlugins(i *ListPluginsInput) (*ListPluginsResponse, error) {\n\treturn c.ListPluginsWithContext(context.Background(), i)\n}\n\n// ListPluginsWithContext lists all plugins in the catalog and returns their names as a\n// list of strings.\nfunc (c *Sys) ListPluginsWithContext(ctx context.Context, i *ListPluginsInput) (*ListPluginsResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tresp, err := c.c.rawRequestWithContext(ctx, c.c.NewRequest(http.MethodGet, \"/v1/sys/plugins/catalog\"))\n\tif err != nil && resp == nil {\n\t\treturn nil, err\n\t}\n\tif resp == nil {\n\t\treturn nil, nil\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tresult := &ListPluginsResponse{\n\t\tPluginsByType: make(map[PluginType][]string),\n\t}\n\tswitch i.Type {\n\tcase PluginTypeUnknown:\n\t\tfor _, pluginType := range PluginTypes {\n\t\t\tpluginsRaw, ok := secret.Data[pluginType.String()]\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tpluginsIfc, ok := pluginsRaw.([]interface{})\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"unable to parse plugins for %q type\", pluginType.String())\n\t\t\t}\n\n\t\t\tplugins := make([]string, 0, len(pluginsIfc))\n\t\t\tfor _, nameIfc := range pluginsIfc {\n\t\t\t\tname, ok := nameIfc.(string)\n\t\t\t\tif !ok {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tplugins = append(plugins, name)\n\t\t\t}\n\t\t\tresult.PluginsByType[pluginType] = plugins\n\t\t}\n\tdefault:\n\t\tpluginsRaw, ok := secret.Data[i.Type.String()]\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"no %s entry in returned data\", i.Type.String())\n\t\t}\n\n\t\tvar respKeys []string\n\t\tif err := mapstructure.Decode(pluginsRaw, &respKeys); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tresult.PluginsByType[i.Type] = respKeys\n\t}\n\n\tif detailed, ok := secret.Data[\"detailed\"]; ok {\n\t\tvar details []PluginDetails\n\t\tif err := mapstructure.Decode(detailed, &details); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tswitch i.Type {\n\t\tcase PluginTypeUnknown:\n\t\t\tresult.Details = details\n\t\tdefault:\n\t\t\t// Filter for just the queried type.\n\t\t\tfor _, entry := range details {\n\t\t\t\tif entry.Type == i.Type.String() {\n\t\t\t\t\tresult.Details = append(result.Details, entry)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result, nil\n}\n\n// GetPluginInput is used as input to the GetPlugin function.\ntype GetPluginInput struct {\n\tName string `json:\"-\"`\n\n\t// Type of the plugin. Required.\n\tType    PluginType `json:\"type\"`\n\tVersion string     `json:\"version\"`\n}\n\n// GetPluginResponse is the response from the GetPlugin call.\ntype GetPluginResponse struct {\n\tArgs              []string `json:\"args\"`\n\tBuiltin           bool     `json:\"builtin\"`\n\tCommand           string   `json:\"command\"`\n\tOCIImage          string   `json:\"oci_image\"`\n\tName              string   `json:\"name\"`\n\tSHA256            string   `json:\"sha256\"`\n\tDeprecationStatus string   `json:\"deprecation_status,omitempty\"`\n\tVersion           string   `json:\"version,omitempty\"`\n}\n\n// GetPlugin wraps GetPluginWithContext using context.Background.\nfunc (c *Sys) GetPlugin(i *GetPluginInput) (*GetPluginResponse, error) {\n\treturn c.GetPluginWithContext(context.Background(), i)\n}\n\n// GetPluginWithContext retrieves information about the plugin.\nfunc (c *Sys) GetPluginWithContext(ctx context.Context, i *GetPluginInput) (*GetPluginResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tpath := catalogPathByType(i.Type, i.Name)\n\treq := c.c.NewRequest(http.MethodGet, path)\n\tif i.Version != \"\" {\n\t\treq.Params.Set(\"version\", i.Version)\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result struct {\n\t\tData *GetPluginResponse\n\t}\n\terr = resp.DecodeJSON(&result)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn result.Data, err\n}\n\n// RegisterPluginInput is used as input to the RegisterPlugin function.\ntype RegisterPluginInput struct {\n\t// Name is the name of the plugin. Required.\n\tName string `json:\"-\"`\n\n\t// Type of the plugin. Required.\n\tType PluginType `json:\"type\"`\n\n\t// Args is the list of args to spawn the process with.\n\tArgs []string `json:\"args,omitempty\"`\n\n\t// Command is the command to run.\n\tCommand string `json:\"command,omitempty\"`\n\n\t// SHA256 is the shasum of the plugin.\n\tSHA256 string `json:\"sha256,omitempty\"`\n\n\t// Version is the optional version of the plugin being registered\n\tVersion string `json:\"version,omitempty\"`\n\n\t// OCIImage specifies the container image to run as a plugin.\n\tOCIImage string `json:\"oci_image,omitempty\"`\n\n\t// Env specifies a list of key=value pairs to add to the plugin's environment\n\t// variables.\n\tEnv []string `json:\"env,omitempty\"`\n}\n\n// RegisterPlugin wraps RegisterPluginWithContext using context.Background.\nfunc (c *Sys) RegisterPlugin(i *RegisterPluginInput) error {\n\treturn c.RegisterPluginWithContext(context.Background(), i)\n}\n\n// RegisterPluginWithContext registers the plugin with the given information.\nfunc (c *Sys) RegisterPluginWithContext(ctx context.Context, i *RegisterPluginInput) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tpath := catalogPathByType(i.Type, i.Name)\n\treq := c.c.NewRequest(http.MethodPut, path)\n\n\tif err := req.SetJSONBody(i); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, req)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\n// DeregisterPluginInput is used as input to the DeregisterPlugin function.\ntype DeregisterPluginInput struct {\n\t// Name is the name of the plugin. Required.\n\tName string `json:\"-\"`\n\n\t// Type of the plugin. Required.\n\tType PluginType `json:\"type\"`\n\n\t// Version of the plugin. Optional.\n\tVersion string `json:\"version,omitempty\"`\n}\n\n// DeregisterPlugin wraps DeregisterPluginWithContext using context.Background.\nfunc (c *Sys) DeregisterPlugin(i *DeregisterPluginInput) error {\n\treturn c.DeregisterPluginWithContext(context.Background(), i)\n}\n\n// DeregisterPluginWithContext removes the plugin with the given name from the plugin\n// catalog.\nfunc (c *Sys) DeregisterPluginWithContext(ctx context.Context, i *DeregisterPluginInput) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tpath := catalogPathByType(i.Type, i.Name)\n\treq := c.c.NewRequest(http.MethodDelete, path)\n\treq.Params.Set(\"version\", i.Version)\n\tresp, err := c.c.rawRequestWithContext(ctx, req)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\n// ReloadPluginInput is used as input to the ReloadPlugin function.\ntype ReloadPluginInput struct {\n\t// Plugin is the name of the plugin to reload, as registered in the plugin catalog\n\tPlugin string `json:\"plugin\"`\n\n\t// Mounts is the array of string mount paths of the plugin backends to reload\n\tMounts []string `json:\"mounts\"`\n\n\t// Scope is the scope of the plugin reload\n\tScope string `json:\"scope\"`\n}\n\n// ReloadPlugin wraps ReloadPluginWithContext using context.Background.\nfunc (c *Sys) ReloadPlugin(i *ReloadPluginInput) (string, error) {\n\treturn c.ReloadPluginWithContext(context.Background(), i)\n}\n\n// ReloadPluginWithContext reloads mounted plugin backends, possibly returning\n// reloadId for a cluster scoped reload\nfunc (c *Sys) ReloadPluginWithContext(ctx context.Context, i *ReloadPluginInput) (string, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tpath := \"/v1/sys/plugins/reload/backend\"\n\treq := c.c.NewRequest(http.MethodPut, path)\n\n\tif err := req.SetJSONBody(i); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, req)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer resp.Body.Close()\n\n\tif i.Scope == \"global\" {\n\t\t// Get the reload id\n\t\tsecret, parseErr := ParseSecret(resp.Body)\n\t\tif parseErr != nil {\n\t\t\treturn \"\", parseErr\n\t\t}\n\t\tif _, ok := secret.Data[\"reload_id\"]; ok {\n\t\t\treturn secret.Data[\"reload_id\"].(string), nil\n\t\t}\n\t}\n\treturn \"\", err\n}\n\n// ReloadStatus is the status of an individual node's plugin reload\ntype ReloadStatus struct {\n\tTimestamp time.Time `json:\"timestamp\" mapstructure:\"timestamp\"`\n\tError     string    `json:\"error\" mapstructure:\"error\"`\n}\n\n// ReloadStatusResponse is the combined response of all known completed plugin reloads\ntype ReloadStatusResponse struct {\n\tReloadID string                   `mapstructure:\"reload_id\"`\n\tResults  map[string]*ReloadStatus `mapstructure:\"results\"`\n}\n\n// ReloadPluginStatusInput is used as input to the ReloadStatusPlugin function.\ntype ReloadPluginStatusInput struct {\n\t// ReloadID is the ID of the reload operation\n\tReloadID string `json:\"reload_id\"`\n}\n\n// ReloadPluginStatus wraps ReloadPluginStatusWithContext using context.Background.\nfunc (c *Sys) ReloadPluginStatus(reloadStatusInput *ReloadPluginStatusInput) (*ReloadStatusResponse, error) {\n\treturn c.ReloadPluginStatusWithContext(context.Background(), reloadStatusInput)\n}\n\n// ReloadPluginStatusWithContext retrieves the status of a reload operation\nfunc (c *Sys) ReloadPluginStatusWithContext(ctx context.Context, reloadStatusInput *ReloadPluginStatusInput) (*ReloadStatusResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tpath := \"/v1/sys/plugins/reload/backend/status\"\n\treq := c.c.NewRequest(http.MethodGet, path)\n\treq.Params.Add(\"reload_id\", reloadStatusInput.ReloadID)\n\n\tresp, err := c.c.rawRequestWithContext(ctx, req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\tif resp != nil {\n\t\tsecret, parseErr := ParseSecret(resp.Body)\n\t\tif parseErr != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar r ReloadStatusResponse\n\t\td, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{\n\t\t\tDecodeHook: mapstructure.StringToTimeHookFunc(time.RFC3339),\n\t\t\tResult:     &r,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\terr = d.Decode(secret.Data)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn &r, nil\n\t}\n\treturn nil, nil\n}\n\n// catalogPathByType is a helper to construct the proper API path by plugin type\nfunc catalogPathByType(pluginType PluginType, name string) string {\n\tpath := fmt.Sprintf(\"/v1/sys/plugins/catalog/%s/%s\", pluginType, name)\n\n\t// Backwards compat, if type is not provided then use old path\n\tif pluginType == PluginTypeUnknown {\n\t\tpath = fmt.Sprintf(\"/v1/sys/plugins/catalog/%s\", name)\n\t}\n\n\treturn path\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_plugins_runtimes.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\n// GetPluginRuntimeInput is used as input to the GetPluginRuntime function.\ntype GetPluginRuntimeInput struct {\n\tName string `json:\"-\"`\n\n\t// Type of the plugin runtime. Required.\n\tType PluginRuntimeType `json:\"type\"`\n}\n\n// GetPluginRuntimeResponse is the response from the GetPluginRuntime call.\ntype GetPluginRuntimeResponse struct {\n\tType         string `json:\"type\"`\n\tName         string `json:\"name\"`\n\tOCIRuntime   string `json:\"oci_runtime\"`\n\tCgroupParent string `json:\"cgroup_parent\"`\n\tCPU          int64  `json:\"cpu_nanos\"`\n\tMemory       int64  `json:\"memory_bytes\"`\n}\n\n// GetPluginRuntime retrieves information about the plugin.\nfunc (c *Sys) GetPluginRuntime(ctx context.Context, i *GetPluginRuntimeInput) (*GetPluginRuntimeResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tpath := pluginRuntimeCatalogPathByType(i.Type, i.Name)\n\treq := c.c.NewRequest(http.MethodGet, path)\n\n\tresp, err := c.c.rawRequestWithContext(ctx, req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result struct {\n\t\tData *GetPluginRuntimeResponse\n\t}\n\terr = resp.DecodeJSON(&result)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn result.Data, err\n}\n\n// RegisterPluginRuntimeInput is used as input to the RegisterPluginRuntime function.\ntype RegisterPluginRuntimeInput struct {\n\t// Name is the name of the plugin. Required.\n\tName string `json:\"-\"`\n\n\t// Type of the plugin. Required.\n\tType PluginRuntimeType `json:\"type\"`\n\n\tOCIRuntime   string `json:\"oci_runtime,omitempty\"`\n\tCgroupParent string `json:\"cgroup_parent,omitempty\"`\n\tCPU          int64  `json:\"cpu,omitempty\"`\n\tMemory       int64  `json:\"memory,omitempty\"`\n}\n\n// RegisterPluginRuntime registers the plugin with the given information.\nfunc (c *Sys) RegisterPluginRuntime(ctx context.Context, i *RegisterPluginRuntimeInput) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tpath := pluginRuntimeCatalogPathByType(i.Type, i.Name)\n\treq := c.c.NewRequest(http.MethodPut, path)\n\n\tif err := req.SetJSONBody(i); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, req)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\n// DeregisterPluginRuntimeInput is used as input to the DeregisterPluginRuntime function.\ntype DeregisterPluginRuntimeInput struct {\n\t// Name is the name of the plugin runtime. Required.\n\tName string `json:\"-\"`\n\n\t// Type of the plugin. Required.\n\tType PluginRuntimeType `json:\"type\"`\n}\n\n// DeregisterPluginRuntime removes the plugin with the given name from the plugin\n// catalog.\nfunc (c *Sys) DeregisterPluginRuntime(ctx context.Context, i *DeregisterPluginRuntimeInput) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tpath := pluginRuntimeCatalogPathByType(i.Type, i.Name)\n\treq := c.c.NewRequest(http.MethodDelete, path)\n\tresp, err := c.c.rawRequestWithContext(ctx, req)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\ntype PluginRuntimeDetails struct {\n\tType         string `json:\"type\" mapstructure:\"type\"`\n\tName         string `json:\"name\" mapstructure:\"name\"`\n\tOCIRuntime   string `json:\"oci_runtime\" mapstructure:\"oci_runtime\"`\n\tCgroupParent string `json:\"cgroup_parent\" mapstructure:\"cgroup_parent\"`\n\tCPU          int64  `json:\"cpu_nanos\" mapstructure:\"cpu_nanos\"`\n\tMemory       int64  `json:\"memory_bytes\" mapstructure:\"memory_bytes\"`\n}\n\n// ListPluginRuntimesInput is used as input to the ListPluginRuntimes function.\ntype ListPluginRuntimesInput struct {\n\t// Type of the plugin. Required.\n\tType PluginRuntimeType `json:\"type\"`\n}\n\n// ListPluginRuntimesResponse is the response from the ListPluginRuntimes call.\ntype ListPluginRuntimesResponse struct {\n\t// RuntimesByType is the list of plugin runtimes by type.\n\tRuntimes []PluginRuntimeDetails `json:\"runtimes\"`\n}\n\n// ListPluginRuntimes lists all plugin runtimes in the catalog and returns their names as a\n// list of strings.\nfunc (c *Sys) ListPluginRuntimes(ctx context.Context, input *ListPluginRuntimesInput) (*ListPluginRuntimesResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tif input != nil && input.Type == PluginRuntimeTypeUnsupported {\n\t\treturn nil, fmt.Errorf(\"%q is not a supported runtime type\", input.Type.String())\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, c.c.NewRequest(http.MethodGet, \"/v1/sys/plugins/runtimes/catalog\"))\n\tif err != nil && resp == nil {\n\t\treturn nil, err\n\t}\n\tif resp == nil {\n\t\treturn nil, nil\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\tif _, ok := secret.Data[\"runtimes\"]; !ok {\n\t\treturn nil, fmt.Errorf(\"data from server response does not contain runtimes\")\n\t}\n\n\tvar runtimes []PluginRuntimeDetails\n\tif err = mapstructure.Decode(secret.Data[\"runtimes\"], &runtimes); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// return all runtimes in the catalog\n\tif input == nil {\n\t\treturn &ListPluginRuntimesResponse{Runtimes: runtimes}, nil\n\t}\n\n\tresult := &ListPluginRuntimesResponse{\n\t\tRuntimes: []PluginRuntimeDetails{},\n\t}\n\tfor _, runtime := range runtimes {\n\t\tif runtime.Type == input.Type.String() {\n\t\t\tresult.Runtimes = append(result.Runtimes, runtime)\n\t\t}\n\t}\n\treturn result, nil\n}\n\n// pluginRuntimeCatalogPathByType is a helper to construct the proper API path by plugin type\nfunc pluginRuntimeCatalogPathByType(runtimeType PluginRuntimeType, name string) string {\n\treturn fmt.Sprintf(\"/v1/sys/plugins/runtimes/catalog/%s/%s\", runtimeType, name)\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_policy.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nfunc (c *Sys) ListPolicies() ([]string, error) {\n\treturn c.ListPoliciesWithContext(context.Background())\n}\n\nfunc (c *Sys) ListPoliciesWithContext(ctx context.Context) ([]string, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(\"LIST\", \"/v1/sys/policies/acl\")\n\t// Set this for broader compatibility, but we use LIST above to be able to\n\t// handle the wrapping lookup function\n\tr.Method = http.MethodGet\n\tr.Params.Set(\"list\", \"true\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tvar result []string\n\terr = mapstructure.Decode(secret.Data[\"keys\"], &result)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn result, err\n}\n\nfunc (c *Sys) GetPolicy(name string) (string, error) {\n\treturn c.GetPolicyWithContext(context.Background(), name)\n}\n\nfunc (c *Sys) GetPolicyWithContext(ctx context.Context, name string) (string, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, fmt.Sprintf(\"/v1/sys/policies/acl/%s\", name))\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif resp != nil {\n\t\tdefer resp.Body.Close()\n\t\tif resp.StatusCode == 404 {\n\t\t\treturn \"\", nil\n\t\t}\n\t}\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn \"\", errors.New(\"data from server response is empty\")\n\t}\n\n\tif policyRaw, ok := secret.Data[\"policy\"]; ok {\n\t\treturn policyRaw.(string), nil\n\t}\n\n\treturn \"\", fmt.Errorf(\"no policy found in response\")\n}\n\nfunc (c *Sys) PutPolicy(name, rules string) error {\n\treturn c.PutPolicyWithContext(context.Background(), name, rules)\n}\n\nfunc (c *Sys) PutPolicyWithContext(ctx context.Context, name, rules string) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tbody := map[string]string{\n\t\t\"policy\": rules,\n\t}\n\n\tr := c.c.NewRequest(http.MethodPut, fmt.Sprintf(\"/v1/sys/policies/acl/%s\", name))\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n\nfunc (c *Sys) DeletePolicy(name string) error {\n\treturn c.DeletePolicyWithContext(context.Background(), name)\n}\n\nfunc (c *Sys) DeletePolicyWithContext(ctx context.Context, name string) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodDelete, fmt.Sprintf(\"/v1/sys/policies/acl/%s\", name))\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\ntype getPoliciesResp struct {\n\tRules string `json:\"rules\"`\n}\n\ntype listPoliciesResp struct {\n\tPolicies []string `json:\"policies\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_raft.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"archive/tar\"\n\t\"compress/gzip\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/hashicorp/go-secure-stdlib/parseutil\"\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nvar ErrIncompleteSnapshot = errors.New(\"incomplete snapshot, unable to read SHA256SUMS.sealed file\")\n\n// RaftJoinResponse represents the response of the raft join API\ntype RaftJoinResponse struct {\n\tJoined bool `json:\"joined\"`\n}\n\n// RaftJoinRequest represents the parameters consumed by the raft join API\ntype RaftJoinRequest struct {\n\tAutoJoin         string `json:\"auto_join\"`\n\tAutoJoinScheme   string `json:\"auto_join_scheme\"`\n\tAutoJoinPort     uint   `json:\"auto_join_port\"`\n\tLeaderAPIAddr    string `json:\"leader_api_addr\"`\n\tLeaderCACert     string `json:\"leader_ca_cert\"`\n\tLeaderClientCert string `json:\"leader_client_cert\"`\n\tLeaderClientKey  string `json:\"leader_client_key\"`\n\tRetry            bool   `json:\"retry\"`\n\tNonVoter         bool   `json:\"non_voter\"`\n}\n\n// AutopilotConfig is used for querying/setting the Autopilot configuration.\ntype AutopilotConfig struct {\n\tCleanupDeadServers             bool          `json:\"cleanup_dead_servers\" mapstructure:\"cleanup_dead_servers\"`\n\tLastContactThreshold           time.Duration `json:\"last_contact_threshold\" mapstructure:\"-\"`\n\tDeadServerLastContactThreshold time.Duration `json:\"dead_server_last_contact_threshold\" mapstructure:\"-\"`\n\tMaxTrailingLogs                uint64        `json:\"max_trailing_logs\" mapstructure:\"max_trailing_logs\"`\n\tMinQuorum                      uint          `json:\"min_quorum\" mapstructure:\"min_quorum\"`\n\tServerStabilizationTime        time.Duration `json:\"server_stabilization_time\" mapstructure:\"-\"`\n\tDisableUpgradeMigration        bool          `json:\"disable_upgrade_migration\" mapstructure:\"disable_upgrade_migration\"`\n}\n\n// MarshalJSON makes the autopilot config fields JSON compatible\nfunc (ac *AutopilotConfig) MarshalJSON() ([]byte, error) {\n\treturn json.Marshal(map[string]interface{}{\n\t\t\"cleanup_dead_servers\":               ac.CleanupDeadServers,\n\t\t\"last_contact_threshold\":             ac.LastContactThreshold.String(),\n\t\t\"dead_server_last_contact_threshold\": ac.DeadServerLastContactThreshold.String(),\n\t\t\"max_trailing_logs\":                  ac.MaxTrailingLogs,\n\t\t\"min_quorum\":                         ac.MinQuorum,\n\t\t\"server_stabilization_time\":          ac.ServerStabilizationTime.String(),\n\t\t\"disable_upgrade_migration\":          ac.DisableUpgradeMigration,\n\t})\n}\n\n// UnmarshalJSON parses the autopilot config JSON blob\nfunc (ac *AutopilotConfig) UnmarshalJSON(b []byte) error {\n\tvar data interface{}\n\terr := json.Unmarshal(b, &data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tconf := data.(map[string]interface{})\n\tif err = mapstructure.WeakDecode(conf, ac); err != nil {\n\t\treturn err\n\t}\n\tif ac.LastContactThreshold, err = parseutil.ParseDurationSecond(conf[\"last_contact_threshold\"]); err != nil {\n\t\treturn err\n\t}\n\tif ac.DeadServerLastContactThreshold, err = parseutil.ParseDurationSecond(conf[\"dead_server_last_contact_threshold\"]); err != nil {\n\t\treturn err\n\t}\n\tif ac.ServerStabilizationTime, err = parseutil.ParseDurationSecond(conf[\"server_stabilization_time\"]); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// AutopilotState represents the response of the raft autopilot state API\ntype AutopilotState struct {\n\tHealthy                    bool                        `mapstructure:\"healthy\"`\n\tFailureTolerance           int                         `mapstructure:\"failure_tolerance\"`\n\tServers                    map[string]*AutopilotServer `mapstructure:\"servers\"`\n\tLeader                     string                      `mapstructure:\"leader\"`\n\tVoters                     []string                    `mapstructure:\"voters\"`\n\tNonVoters                  []string                    `mapstructure:\"non_voters\"`\n\tRedundancyZones            map[string]AutopilotZone    `mapstructure:\"redundancy_zones,omitempty\"`\n\tUpgrade                    *AutopilotUpgrade           `mapstructure:\"upgrade_info,omitempty\"`\n\tOptimisticFailureTolerance int                         `mapstructure:\"optimistic_failure_tolerance,omitempty\"`\n}\n\n// AutopilotServer represents the server blocks in the response of the raft\n// autopilot state API.\ntype AutopilotServer struct {\n\tID             string `mapstructure:\"id\"`\n\tName           string `mapstructure:\"name\"`\n\tAddress        string `mapstructure:\"address\"`\n\tNodeStatus     string `mapstructure:\"node_status\"`\n\tLastContact    string `mapstructure:\"last_contact\"`\n\tLastTerm       uint64 `mapstructure:\"last_term\"`\n\tLastIndex      uint64 `mapstructure:\"last_index\"`\n\tHealthy        bool   `mapstructure:\"healthy\"`\n\tStableSince    string `mapstructure:\"stable_since\"`\n\tStatus         string `mapstructure:\"status\"`\n\tVersion        string `mapstructure:\"version\"`\n\tUpgradeVersion string `mapstructure:\"upgrade_version,omitempty\"`\n\tRedundancyZone string `mapstructure:\"redundancy_zone,omitempty\"`\n\tNodeType       string `mapstructure:\"node_type,omitempty\"`\n}\n\ntype AutopilotZone struct {\n\tServers          []string `mapstructure:\"servers,omitempty\"`\n\tVoters           []string `mapstructure:\"voters,omitempty\"`\n\tFailureTolerance int      `mapstructure:\"failure_tolerance,omitempty\"`\n}\n\ntype AutopilotUpgrade struct {\n\tStatus                    string                                  `mapstructure:\"status\"`\n\tTargetVersion             string                                  `mapstructure:\"target_version,omitempty\"`\n\tTargetVersionVoters       []string                                `mapstructure:\"target_version_voters,omitempty\"`\n\tTargetVersionNonVoters    []string                                `mapstructure:\"target_version_non_voters,omitempty\"`\n\tTargetVersionReadReplicas []string                                `mapstructure:\"target_version_read_replicas,omitempty\"`\n\tOtherVersionVoters        []string                                `mapstructure:\"other_version_voters,omitempty\"`\n\tOtherVersionNonVoters     []string                                `mapstructure:\"other_version_non_voters,omitempty\"`\n\tOtherVersionReadReplicas  []string                                `mapstructure:\"other_version_read_replicas,omitempty\"`\n\tRedundancyZones           map[string]AutopilotZoneUpgradeVersions `mapstructure:\"redundancy_zones,omitempty\"`\n}\n\ntype AutopilotZoneUpgradeVersions struct {\n\tTargetVersionVoters    []string `mapstructure:\"target_version_voters,omitempty\"`\n\tTargetVersionNonVoters []string `mapstructure:\"target_version_non_voters,omitempty\"`\n\tOtherVersionVoters     []string `mapstructure:\"other_version_voters,omitempty\"`\n\tOtherVersionNonVoters  []string `mapstructure:\"other_version_non_voters,omitempty\"`\n}\n\n// RaftJoin wraps RaftJoinWithContext using context.Background.\nfunc (c *Sys) RaftJoin(opts *RaftJoinRequest) (*RaftJoinResponse, error) {\n\treturn c.RaftJoinWithContext(context.Background(), opts)\n}\n\n// RaftJoinWithContext adds the node from which this call is invoked from to the raft\n// cluster represented by the leader address in the parameter.\nfunc (c *Sys) RaftJoinWithContext(ctx context.Context, opts *RaftJoinRequest) (*RaftJoinResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPost, \"/v1/sys/storage/raft/join\")\n\n\tif err := r.SetJSONBody(opts); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result RaftJoinResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\n// RaftSnapshot wraps RaftSnapshotWithContext using context.Background.\nfunc (c *Sys) RaftSnapshot(snapWriter io.Writer) error {\n\treturn c.RaftSnapshotWithContext(context.Background(), snapWriter)\n}\n\n// RaftSnapshotWithContext invokes the API that takes the snapshot of the raft cluster and\n// writes it to the supplied io.Writer.\nfunc (c *Sys) RaftSnapshotWithContext(ctx context.Context, snapWriter io.Writer) error {\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/storage/raft/snapshot\")\n\tr.URL.RawQuery = r.Params.Encode()\n\n\tresp, err := c.c.httpRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\t// Make sure that the last file in the archive, SHA256SUMS.sealed, is present\n\t// and non-empty.  This is to catch cases where the snapshot failed midstream,\n\t// e.g. due to a problem with the seal that prevented encryption of that file.\n\tvar wg sync.WaitGroup\n\twg.Add(1)\n\tvar verified bool\n\n\trPipe, wPipe := io.Pipe()\n\tdup := io.TeeReader(resp.Body, wPipe)\n\tgo func() {\n\t\tdefer func() {\n\t\t\tio.Copy(ioutil.Discard, rPipe)\n\t\t\trPipe.Close()\n\t\t\twg.Done()\n\t\t}()\n\n\t\tuncompressed, err := gzip.NewReader(rPipe)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tt := tar.NewReader(uncompressed)\n\t\tvar h *tar.Header\n\t\tfor {\n\t\t\th, err = t.Next()\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif h.Name != \"SHA256SUMS.sealed\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvar b []byte\n\t\t\tb, err = ioutil.ReadAll(t)\n\t\t\tif err != nil || len(b) == 0 {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tverified = true\n\t\t\treturn\n\t\t}\n\t}()\n\n\t// Copy bytes from dup to snapWriter.  This will have a side effect that\n\t// everything read from dup will be written to wPipe.\n\t_, err = io.Copy(snapWriter, dup)\n\twPipe.Close()\n\tif err != nil {\n\t\trPipe.CloseWithError(err)\n\t\treturn err\n\t}\n\twg.Wait()\n\n\tif !verified {\n\t\treturn ErrIncompleteSnapshot\n\t}\n\treturn nil\n}\n\n// RaftSnapshotRestore wraps RaftSnapshotRestoreWithContext using context.Background.\nfunc (c *Sys) RaftSnapshotRestore(snapReader io.Reader, force bool) error {\n\treturn c.RaftSnapshotRestoreWithContext(context.Background(), snapReader, force)\n}\n\n// RaftSnapshotRestoreWithContext reads the snapshot from the io.Reader and installs that\n// snapshot, returning the cluster to the state defined by it.\nfunc (c *Sys) RaftSnapshotRestoreWithContext(ctx context.Context, snapReader io.Reader, force bool) error {\n\tpath := \"/v1/sys/storage/raft/snapshot\"\n\tif force {\n\t\tpath = \"/v1/sys/storage/raft/snapshot-force\"\n\t}\n\n\tr := c.c.NewRequest(http.MethodPost, path)\n\tr.Body = snapReader\n\n\tresp, err := c.c.httpRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n\n// RaftAutopilotState wraps RaftAutopilotStateWithContext using context.Background.\nfunc (c *Sys) RaftAutopilotState() (*AutopilotState, error) {\n\treturn c.RaftAutopilotStateWithContext(context.Background())\n}\n\n// RaftAutopilotStateWithToken wraps RaftAutopilotStateWithContext using the given token.\nfunc (c *Sys) RaftAutopilotStateWithDRToken(drToken string) (*AutopilotState, error) {\n\treturn c.RaftAutopilotStateWithContext(context.WithValue(context.Background(), \"dr-token\", drToken))\n}\n\n// RaftAutopilotStateWithContext returns the state of the raft cluster as seen by autopilot.\nfunc (c *Sys) RaftAutopilotStateWithContext(ctx context.Context) (*AutopilotState, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tif ctx.Value(\"dr-token\") != nil {\n\t\tc.c.SetToken(ctx.Value(\"dr-token\").(string))\n\t}\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/storage/raft/autopilot/state\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif resp != nil {\n\t\tdefer resp.Body.Close()\n\t\tif resp.StatusCode == 404 {\n\t\t\treturn nil, nil\n\t\t}\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tvar result AutopilotState\n\terr = mapstructure.Decode(secret.Data, &result)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &result, err\n}\n\n// RaftAutopilotConfiguration wraps RaftAutopilotConfigurationWithContext using context.Background.\nfunc (c *Sys) RaftAutopilotConfiguration() (*AutopilotConfig, error) {\n\treturn c.RaftAutopilotConfigurationWithContext(context.Background())\n}\n\n// RaftAutopilotConfigurationWithDRToken wraps RaftAutopilotConfigurationWithContext using the given token.\nfunc (c *Sys) RaftAutopilotConfigurationWithDRToken(drToken string) (*AutopilotConfig, error) {\n\treturn c.RaftAutopilotConfigurationWithContext(context.WithValue(context.Background(), \"dr-token\", drToken))\n}\n\n// RaftAutopilotConfigurationWithContext fetches the autopilot config.\nfunc (c *Sys) RaftAutopilotConfigurationWithContext(ctx context.Context) (*AutopilotConfig, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tif ctx.Value(\"dr-token\") != nil {\n\t\tc.c.SetToken(ctx.Value(\"dr-token\").(string))\n\t}\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/storage/raft/autopilot/configuration\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif resp != nil {\n\t\tdefer resp.Body.Close()\n\t\tif resp.StatusCode == 404 {\n\t\t\treturn nil, nil\n\t\t}\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tvar result AutopilotConfig\n\tif err = mapstructure.Decode(secret.Data, &result); err != nil {\n\t\treturn nil, err\n\t}\n\tif result.LastContactThreshold, err = parseutil.ParseDurationSecond(secret.Data[\"last_contact_threshold\"]); err != nil {\n\t\treturn nil, err\n\t}\n\tif result.DeadServerLastContactThreshold, err = parseutil.ParseDurationSecond(secret.Data[\"dead_server_last_contact_threshold\"]); err != nil {\n\t\treturn nil, err\n\t}\n\tif result.ServerStabilizationTime, err = parseutil.ParseDurationSecond(secret.Data[\"server_stabilization_time\"]); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &result, err\n}\n\n// PutRaftAutopilotConfiguration wraps PutRaftAutopilotConfigurationWithContext using context.Background.\nfunc (c *Sys) PutRaftAutopilotConfiguration(opts *AutopilotConfig) error {\n\treturn c.PutRaftAutopilotConfigurationWithContext(context.Background(), opts)\n}\n\n// PutRaftAutopilotConfigurationWithContext allows modifying the raft autopilot configuration\nfunc (c *Sys) PutRaftAutopilotConfigurationWithContext(ctx context.Context, opts *AutopilotConfig) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPost, \"/v1/sys/storage/raft/autopilot/configuration\")\n\n\tif err := r.SetJSONBody(opts); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_rekey.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"net/http\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nfunc (c *Sys) RekeyStatus() (*RekeyStatusResponse, error) {\n\treturn c.RekeyStatusWithContext(context.Background())\n}\n\nfunc (c *Sys) RekeyStatusWithContext(ctx context.Context) (*RekeyStatusResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/rekey/init\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result RekeyStatusResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\nfunc (c *Sys) RekeyRecoveryKeyStatus() (*RekeyStatusResponse, error) {\n\treturn c.RekeyRecoveryKeyStatusWithContext(context.Background())\n}\n\nfunc (c *Sys) RekeyRecoveryKeyStatusWithContext(ctx context.Context) (*RekeyStatusResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/rekey-recovery-key/init\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result RekeyStatusResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\nfunc (c *Sys) RekeyVerificationStatus() (*RekeyVerificationStatusResponse, error) {\n\treturn c.RekeyVerificationStatusWithContext(context.Background())\n}\n\nfunc (c *Sys) RekeyVerificationStatusWithContext(ctx context.Context) (*RekeyVerificationStatusResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/rekey/verify\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result RekeyVerificationStatusResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\nfunc (c *Sys) RekeyRecoveryKeyVerificationStatus() (*RekeyVerificationStatusResponse, error) {\n\treturn c.RekeyRecoveryKeyVerificationStatusWithContext(context.Background())\n}\n\nfunc (c *Sys) RekeyRecoveryKeyVerificationStatusWithContext(ctx context.Context) (*RekeyVerificationStatusResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/rekey-recovery-key/verify\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result RekeyVerificationStatusResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\nfunc (c *Sys) RekeyInit(config *RekeyInitRequest) (*RekeyStatusResponse, error) {\n\treturn c.RekeyInitWithContext(context.Background(), config)\n}\n\nfunc (c *Sys) RekeyInitWithContext(ctx context.Context, config *RekeyInitRequest) (*RekeyStatusResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/rekey/init\")\n\tif err := r.SetJSONBody(config); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result RekeyStatusResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\nfunc (c *Sys) RekeyRecoveryKeyInit(config *RekeyInitRequest) (*RekeyStatusResponse, error) {\n\treturn c.RekeyRecoveryKeyInitWithContext(context.Background(), config)\n}\n\nfunc (c *Sys) RekeyRecoveryKeyInitWithContext(ctx context.Context, config *RekeyInitRequest) (*RekeyStatusResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/rekey-recovery-key/init\")\n\tif err := r.SetJSONBody(config); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result RekeyStatusResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\nfunc (c *Sys) RekeyCancel() error {\n\treturn c.RekeyCancelWithContext(context.Background())\n}\n\nfunc (c *Sys) RekeyCancelWithContext(ctx context.Context) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodDelete, \"/v1/sys/rekey/init\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\nfunc (c *Sys) RekeyRecoveryKeyCancel() error {\n\treturn c.RekeyRecoveryKeyCancelWithContext(context.Background())\n}\n\nfunc (c *Sys) RekeyRecoveryKeyCancelWithContext(ctx context.Context) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodDelete, \"/v1/sys/rekey-recovery-key/init\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\nfunc (c *Sys) RekeyVerificationCancel() error {\n\treturn c.RekeyVerificationCancelWithContext(context.Background())\n}\n\nfunc (c *Sys) RekeyVerificationCancelWithContext(ctx context.Context) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodDelete, \"/v1/sys/rekey/verify\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\nfunc (c *Sys) RekeyRecoveryKeyVerificationCancel() error {\n\treturn c.RekeyRecoveryKeyVerificationCancelWithContext(context.Background())\n}\n\nfunc (c *Sys) RekeyRecoveryKeyVerificationCancelWithContext(ctx context.Context) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodDelete, \"/v1/sys/rekey-recovery-key/verify\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\nfunc (c *Sys) RekeyUpdate(shard, nonce string) (*RekeyUpdateResponse, error) {\n\treturn c.RekeyUpdateWithContext(context.Background(), shard, nonce)\n}\n\nfunc (c *Sys) RekeyUpdateWithContext(ctx context.Context, shard, nonce string) (*RekeyUpdateResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tbody := map[string]interface{}{\n\t\t\"key\":   shard,\n\t\t\"nonce\": nonce,\n\t}\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/rekey/update\")\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result RekeyUpdateResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\nfunc (c *Sys) RekeyRecoveryKeyUpdate(shard, nonce string) (*RekeyUpdateResponse, error) {\n\treturn c.RekeyRecoveryKeyUpdateWithContext(context.Background(), shard, nonce)\n}\n\nfunc (c *Sys) RekeyRecoveryKeyUpdateWithContext(ctx context.Context, shard, nonce string) (*RekeyUpdateResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tbody := map[string]interface{}{\n\t\t\"key\":   shard,\n\t\t\"nonce\": nonce,\n\t}\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/rekey-recovery-key/update\")\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result RekeyUpdateResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\nfunc (c *Sys) RekeyRetrieveBackup() (*RekeyRetrieveResponse, error) {\n\treturn c.RekeyRetrieveBackupWithContext(context.Background())\n}\n\nfunc (c *Sys) RekeyRetrieveBackupWithContext(ctx context.Context) (*RekeyRetrieveResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/rekey/backup\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tvar result RekeyRetrieveResponse\n\terr = mapstructure.Decode(secret.Data, &result)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &result, err\n}\n\nfunc (c *Sys) RekeyRetrieveRecoveryBackup() (*RekeyRetrieveResponse, error) {\n\treturn c.RekeyRetrieveRecoveryBackupWithContext(context.Background())\n}\n\nfunc (c *Sys) RekeyRetrieveRecoveryBackupWithContext(ctx context.Context) (*RekeyRetrieveResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/rekey/recovery-key-backup\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tvar result RekeyRetrieveResponse\n\terr = mapstructure.Decode(secret.Data, &result)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &result, err\n}\n\nfunc (c *Sys) RekeyDeleteBackup() error {\n\treturn c.RekeyDeleteBackupWithContext(context.Background())\n}\n\nfunc (c *Sys) RekeyDeleteBackupWithContext(ctx context.Context) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodDelete, \"/v1/sys/rekey/backup\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\n\treturn err\n}\n\nfunc (c *Sys) RekeyDeleteRecoveryBackup() error {\n\treturn c.RekeyDeleteRecoveryBackupWithContext(context.Background())\n}\n\nfunc (c *Sys) RekeyDeleteRecoveryBackupWithContext(ctx context.Context) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodDelete, \"/v1/sys/rekey/recovery-key-backup\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\n\treturn err\n}\n\nfunc (c *Sys) RekeyVerificationUpdate(shard, nonce string) (*RekeyVerificationUpdateResponse, error) {\n\treturn c.RekeyVerificationUpdateWithContext(context.Background(), shard, nonce)\n}\n\nfunc (c *Sys) RekeyVerificationUpdateWithContext(ctx context.Context, shard, nonce string) (*RekeyVerificationUpdateResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tbody := map[string]interface{}{\n\t\t\"key\":   shard,\n\t\t\"nonce\": nonce,\n\t}\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/rekey/verify\")\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result RekeyVerificationUpdateResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\nfunc (c *Sys) RekeyRecoveryKeyVerificationUpdate(shard, nonce string) (*RekeyVerificationUpdateResponse, error) {\n\treturn c.RekeyRecoveryKeyVerificationUpdateWithContext(context.Background(), shard, nonce)\n}\n\nfunc (c *Sys) RekeyRecoveryKeyVerificationUpdateWithContext(ctx context.Context, shard, nonce string) (*RekeyVerificationUpdateResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tbody := map[string]interface{}{\n\t\t\"key\":   shard,\n\t\t\"nonce\": nonce,\n\t}\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/rekey-recovery-key/verify\")\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result RekeyVerificationUpdateResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\ntype RekeyInitRequest struct {\n\tSecretShares        int      `json:\"secret_shares\"`\n\tSecretThreshold     int      `json:\"secret_threshold\"`\n\tStoredShares        int      `json:\"stored_shares\"`\n\tPGPKeys             []string `json:\"pgp_keys\"`\n\tBackup              bool\n\tRequireVerification bool `json:\"require_verification\"`\n}\n\ntype RekeyStatusResponse struct {\n\tNonce                string   `json:\"nonce\"`\n\tStarted              bool     `json:\"started\"`\n\tT                    int      `json:\"t\"`\n\tN                    int      `json:\"n\"`\n\tProgress             int      `json:\"progress\"`\n\tRequired             int      `json:\"required\"`\n\tPGPFingerprints      []string `json:\"pgp_fingerprints\"`\n\tBackup               bool     `json:\"backup\"`\n\tVerificationRequired bool     `json:\"verification_required\"`\n\tVerificationNonce    string   `json:\"verification_nonce\"`\n}\n\ntype RekeyUpdateResponse struct {\n\tNonce                string   `json:\"nonce\"`\n\tComplete             bool     `json:\"complete\"`\n\tKeys                 []string `json:\"keys\"`\n\tKeysB64              []string `json:\"keys_base64\"`\n\tPGPFingerprints      []string `json:\"pgp_fingerprints\"`\n\tBackup               bool     `json:\"backup\"`\n\tVerificationRequired bool     `json:\"verification_required\"`\n\tVerificationNonce    string   `json:\"verification_nonce,omitempty\"`\n}\n\ntype RekeyRetrieveResponse struct {\n\tNonce   string              `json:\"nonce\" mapstructure:\"nonce\"`\n\tKeys    map[string][]string `json:\"keys\" mapstructure:\"keys\"`\n\tKeysB64 map[string][]string `json:\"keys_base64\" mapstructure:\"keys_base64\"`\n}\n\ntype RekeyVerificationStatusResponse struct {\n\tNonce    string `json:\"nonce\"`\n\tStarted  bool   `json:\"started\"`\n\tT        int    `json:\"t\"`\n\tN        int    `json:\"n\"`\n\tProgress int    `json:\"progress\"`\n}\n\ntype RekeyVerificationUpdateResponse struct {\n\tNonce    string `json:\"nonce\"`\n\tComplete bool   `json:\"complete\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_rotate.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"net/http\"\n\t\"time\"\n)\n\nfunc (c *Sys) Rotate() error {\n\treturn c.RotateWithContext(context.Background())\n}\n\nfunc (c *Sys) RotateWithContext(ctx context.Context) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPost, \"/v1/sys/rotate\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\nfunc (c *Sys) KeyStatus() (*KeyStatus, error) {\n\treturn c.KeyStatusWithContext(context.Background())\n}\n\nfunc (c *Sys) KeyStatusWithContext(ctx context.Context) (*KeyStatus, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/key-status\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tvar result KeyStatus\n\n\ttermRaw, ok := secret.Data[\"term\"]\n\tif !ok {\n\t\treturn nil, errors.New(\"term not found in response\")\n\t}\n\tterm, ok := termRaw.(json.Number)\n\tif !ok {\n\t\treturn nil, errors.New(\"could not convert term to a number\")\n\t}\n\tterm64, err := term.Int64()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresult.Term = int(term64)\n\n\tinstallTimeRaw, ok := secret.Data[\"install_time\"]\n\tif !ok {\n\t\treturn nil, errors.New(\"install_time not found in response\")\n\t}\n\tinstallTimeStr, ok := installTimeRaw.(string)\n\tif !ok {\n\t\treturn nil, errors.New(\"could not convert install_time to a string\")\n\t}\n\tinstallTime, err := time.Parse(time.RFC3339Nano, installTimeStr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresult.InstallTime = installTime\n\n\tencryptionsRaw, ok := secret.Data[\"encryptions\"]\n\tif ok {\n\t\tencryptions, ok := encryptionsRaw.(json.Number)\n\t\tif !ok {\n\t\t\treturn nil, errors.New(\"could not convert encryptions to a number\")\n\t\t}\n\t\tencryptions64, err := encryptions.Int64()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tresult.Encryptions = int(encryptions64)\n\t}\n\n\treturn &result, err\n}\n\ntype KeyStatus struct {\n\tTerm        int       `json:\"term\"`\n\tInstallTime time.Time `json:\"install_time\"`\n\tEncryptions int       `json:\"encryptions\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_seal.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc (c *Sys) SealStatus() (*SealStatusResponse, error) {\n\treturn c.SealStatusWithContext(context.Background())\n}\n\nfunc (c *Sys) SealStatusWithContext(ctx context.Context) (*SealStatusResponse, error) {\n\tr := c.c.NewRequest(http.MethodGet, \"/v1/sys/seal-status\")\n\treturn sealStatusRequestWithContext(ctx, c, r)\n}\n\nfunc (c *Sys) Seal() error {\n\treturn c.SealWithContext(context.Background())\n}\n\nfunc (c *Sys) SealWithContext(ctx context.Context) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/seal\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n\nfunc (c *Sys) ResetUnsealProcess() (*SealStatusResponse, error) {\n\treturn c.ResetUnsealProcessWithContext(context.Background())\n}\n\nfunc (c *Sys) ResetUnsealProcessWithContext(ctx context.Context) (*SealStatusResponse, error) {\n\tbody := map[string]interface{}{\"reset\": true}\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/unseal\")\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn sealStatusRequestWithContext(ctx, c, r)\n}\n\nfunc (c *Sys) Unseal(shard string) (*SealStatusResponse, error) {\n\treturn c.UnsealWithContext(context.Background(), shard)\n}\n\nfunc (c *Sys) UnsealWithContext(ctx context.Context, shard string) (*SealStatusResponse, error) {\n\tbody := map[string]interface{}{\"key\": shard}\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/unseal\")\n\tif err := r.SetJSONBody(body); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn sealStatusRequestWithContext(ctx, c, r)\n}\n\nfunc (c *Sys) UnsealWithOptions(opts *UnsealOpts) (*SealStatusResponse, error) {\n\treturn c.UnsealWithOptionsWithContext(context.Background(), opts)\n}\n\nfunc (c *Sys) UnsealWithOptionsWithContext(ctx context.Context, opts *UnsealOpts) (*SealStatusResponse, error) {\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/unseal\")\n\n\tif err := r.SetJSONBody(opts); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn sealStatusRequestWithContext(ctx, c, r)\n}\n\nfunc sealStatusRequestWithContext(ctx context.Context, c *Sys, r *Request) (*SealStatusResponse, error) {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar result SealStatusResponse\n\terr = resp.DecodeJSON(&result)\n\treturn &result, err\n}\n\ntype SealStatusResponse struct {\n\tType              string   `json:\"type\"`\n\tInitialized       bool     `json:\"initialized\"`\n\tSealed            bool     `json:\"sealed\"`\n\tT                 int      `json:\"t\"`\n\tN                 int      `json:\"n\"`\n\tProgress          int      `json:\"progress\"`\n\tNonce             string   `json:\"nonce\"`\n\tVersion           string   `json:\"version\"`\n\tBuildDate         string   `json:\"build_date\"`\n\tMigration         bool     `json:\"migration\"`\n\tClusterName       string   `json:\"cluster_name,omitempty\"`\n\tClusterID         string   `json:\"cluster_id,omitempty\"`\n\tRecoverySeal      bool     `json:\"recovery_seal\"`\n\tStorageType       string   `json:\"storage_type,omitempty\"`\n\tHCPLinkStatus     string   `json:\"hcp_link_status,omitempty\"`\n\tHCPLinkResourceID string   `json:\"hcp_link_resource_ID,omitempty\"`\n\tWarnings          []string `json:\"warnings,omitempty\"`\n}\n\ntype UnsealOpts struct {\n\tKey     string `json:\"key\"`\n\tReset   bool   `json:\"reset\"`\n\tMigrate bool   `json:\"migrate\"`\n}\n"
  },
  {
    "path": "vendor/github.com/hashicorp/vault/api/sys_stepdown.go",
    "content": "// Copyright (c) HashiCorp, Inc.\n// SPDX-License-Identifier: MPL-2.0\n\npackage api\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc (c *Sys) StepDown() error {\n\treturn c.StepDownWithContext(context.Background())\n}\n\nfunc (c *Sys) StepDownWithContext(ctx context.Context) error {\n\tctx, cancelFunc := c.c.withConfiguredTimeout(ctx)\n\tdefer cancelFunc()\n\n\tr := c.c.NewRequest(http.MethodPut, \"/v1/sys/step-down\")\n\n\tresp, err := c.c.rawRequestWithContext(ctx, r)\n\tif resp != nil && resp.Body != nil {\n\t\tresp.Body.Close()\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/jmespath/go-jmespath/.gitignore",
    "content": "/jpgo\njmespath-fuzz.zip\ncpu.out\ngo-jmespath.test\n"
  },
  {
    "path": "vendor/github.com/jmespath/go-jmespath/.travis.yml",
    "content": "language: go\n\nsudo: false\n\ngo:\n  - 1.5.x\n  - 1.6.x\n  - 1.7.x\n  - 1.8.x\n  - 1.9.x\n  - 1.10.x\n  - 1.11.x\n  - 1.12.x\n  - 1.13.x\n  - 1.14.x\n  - 1.15.x\n  - tip\n\nallow_failures:\n  - go: tip\n\nscript: make build\n\nmatrix:\n  include:\n    - language: go\n      go: 1.15.x\n      script: make test\n"
  },
  {
    "path": "vendor/github.com/jmespath/go-jmespath/LICENSE",
    "content": "Copyright 2015 James Saryerwinnie\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "vendor/github.com/jmespath/go-jmespath/Makefile",
    "content": "\nCMD = jpgo\n\nSRC_PKGS=./ ./cmd/... ./fuzz/...\n\nhelp:\n\t@echo \"Please use \\`make <target>' where <target> is one of\"\n\t@echo \"  test                    to run all the tests\"\n\t@echo \"  build                   to build the library and jp executable\"\n\t@echo \"  generate                to run codegen\"\n\n\ngenerate:\n\tgo generate ${SRC_PKGS}\n\nbuild:\n\trm -f $(CMD)\n\tgo build ${SRC_PKGS}\n\trm -f cmd/$(CMD)/$(CMD) && cd cmd/$(CMD)/ && go build ./...\n\tmv cmd/$(CMD)/$(CMD) .\n\ntest: test-internal-testify\n\techo \"making tests ${SRC_PKGS}\"\n\tgo test -v ${SRC_PKGS}\n\ncheck:\n\tgo vet ${SRC_PKGS}\n\t@echo \"golint ${SRC_PKGS}\"\n\t@lint=`golint ${SRC_PKGS}`; \\\n\tlint=`echo \"$$lint\" | grep -v \"astnodetype_string.go\" | grep -v \"toktype_string.go\"`; \\\n\techo \"$$lint\"; \\\n\tif [ \"$$lint\" != \"\" ]; then exit 1; fi\n\nhtmlc:\n\tgo test -coverprofile=\"/tmp/jpcov\"  && go tool cover -html=\"/tmp/jpcov\" && unlink /tmp/jpcov\n\nbuildfuzz:\n\tgo-fuzz-build github.com/jmespath/go-jmespath/fuzz\n\nfuzz: buildfuzz\n\tgo-fuzz -bin=./jmespath-fuzz.zip -workdir=fuzz/testdata\n\nbench:\n\tgo test -bench . -cpuprofile cpu.out\n\npprof-cpu:\n\tgo tool pprof ./go-jmespath.test ./cpu.out\n\ntest-internal-testify:\n\tcd internal/testify && go test ./...\n\n"
  },
  {
    "path": "vendor/github.com/jmespath/go-jmespath/README.md",
    "content": "# go-jmespath - A JMESPath implementation in Go\n\n[![Build Status](https://img.shields.io/travis/jmespath/go-jmespath.svg)](https://travis-ci.org/jmespath/go-jmespath)\n\n\n\ngo-jmespath is a GO implementation of JMESPath,\nwhich is a query language for JSON.  It will take a JSON\ndocument and transform it into another JSON document\nthrough a JMESPath expression.\n\nUsing go-jmespath is really easy.  There's a single function\nyou use, `jmespath.search`:\n\n\n```go\n> import \"github.com/jmespath/go-jmespath\"\n>\n> var jsondata = []byte(`{\"foo\": {\"bar\": {\"baz\": [0, 1, 2, 3, 4]}}}`) // your data\n> var data interface{}\n> err := json.Unmarshal(jsondata, &data)\n> result, err := jmespath.Search(\"foo.bar.baz[2]\", data)\nresult = 2\n```\n\nIn the example we gave the ``search`` function input data of\n`{\"foo\": {\"bar\": {\"baz\": [0, 1, 2, 3, 4]}}}` as well as the JMESPath\nexpression `foo.bar.baz[2]`, and the `search` function evaluated\nthe expression against the input data to produce the result ``2``.\n\nThe JMESPath language can do a lot more than select an element\nfrom a list.  Here are a few more examples:\n\n```go\n> var jsondata = []byte(`{\"foo\": {\"bar\": {\"baz\": [0, 1, 2, 3, 4]}}}`) // your data\n> var data interface{}\n> err := json.Unmarshal(jsondata, &data)\n> result, err := jmespath.search(\"foo.bar\", data)\nresult = { \"baz\": [ 0, 1, 2, 3, 4 ] }\n\n\n> var jsondata  = []byte(`{\"foo\": [{\"first\": \"a\", \"last\": \"b\"},\n                           {\"first\": \"c\", \"last\": \"d\"}]}`) // your data\n> var data interface{}\n> err := json.Unmarshal(jsondata, &data)\n> result, err := jmespath.search({\"foo[*].first\", data)\nresult [ 'a', 'c' ]\n\n\n> var jsondata = []byte(`{\"foo\": [{\"age\": 20}, {\"age\": 25},\n                           {\"age\": 30}, {\"age\": 35},\n                           {\"age\": 40}]}`) // your data\n> var data interface{}\n> err := json.Unmarshal(jsondata, &data)\n> result, err := jmespath.search(\"foo[?age > `30`]\")\nresult = [ { age: 35 }, { age: 40 } ]\n```\n\nYou can also pre-compile your query. This is usefull if \nyou are going to run multiple searches with it:\n\n```go\n\t> var jsondata = []byte(`{\"foo\": \"bar\"}`)\n\t> var data interface{}\n    > err := json.Unmarshal(jsondata, &data)\n\t> precompiled, err := Compile(\"foo\")\n\t> if err != nil{\n    >   // ... handle the error\n    > }\n    > result, err := precompiled.Search(data)\n\tresult = \"bar\"\n```\n\n## More Resources\n\nThe example above only show a small amount of what\na JMESPath expression can do.  If you want to take a\ntour of the language, the *best* place to go is the\n[JMESPath Tutorial](http://jmespath.org/tutorial.html).\n\nOne of the best things about JMESPath is that it is\nimplemented in many different programming languages including\npython, ruby, php, lua, etc.  To see a complete list of libraries,\ncheck out the [JMESPath libraries page](http://jmespath.org/libraries.html).\n\nAnd finally, the full JMESPath specification can be found\non the [JMESPath site](http://jmespath.org/specification.html).\n"
  },
  {
    "path": "vendor/github.com/jmespath/go-jmespath/api.go",
    "content": "package jmespath\n\nimport \"strconv\"\n\n// JMESPath is the representation of a compiled JMES path query. A JMESPath is\n// safe for concurrent use by multiple goroutines.\ntype JMESPath struct {\n\tast  ASTNode\n\tintr *treeInterpreter\n}\n\n// Compile parses a JMESPath expression and returns, if successful, a JMESPath\n// object that can be used to match against data.\nfunc Compile(expression string) (*JMESPath, error) {\n\tparser := NewParser()\n\tast, err := parser.Parse(expression)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tjmespath := &JMESPath{ast: ast, intr: newInterpreter()}\n\treturn jmespath, nil\n}\n\n// MustCompile is like Compile but panics if the expression cannot be parsed.\n// It simplifies safe initialization of global variables holding compiled\n// JMESPaths.\nfunc MustCompile(expression string) *JMESPath {\n\tjmespath, err := Compile(expression)\n\tif err != nil {\n\t\tpanic(`jmespath: Compile(` + strconv.Quote(expression) + `): ` + err.Error())\n\t}\n\treturn jmespath\n}\n\n// Search evaluates a JMESPath expression against input data and returns the result.\nfunc (jp *JMESPath) Search(data interface{}) (interface{}, error) {\n\treturn jp.intr.Execute(jp.ast, data)\n}\n\n// Search evaluates a JMESPath expression against input data and returns the result.\nfunc Search(expression string, data interface{}) (interface{}, error) {\n\tintr := newInterpreter()\n\tparser := NewParser()\n\tast, err := parser.Parse(expression)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn intr.Execute(ast, data)\n}\n"
  },
  {
    "path": "vendor/github.com/jmespath/go-jmespath/astnodetype_string.go",
    "content": "// generated by stringer -type astNodeType; DO NOT EDIT\n\npackage jmespath\n\nimport \"fmt\"\n\nconst _astNodeType_name = \"ASTEmptyASTComparatorASTCurrentNodeASTExpRefASTFunctionExpressionASTFieldASTFilterProjectionASTFlattenASTIdentityASTIndexASTIndexExpressionASTKeyValPairASTLiteralASTMultiSelectHashASTMultiSelectListASTOrExpressionASTAndExpressionASTNotExpressionASTPipeASTProjectionASTSubexpressionASTSliceASTValueProjection\"\n\nvar _astNodeType_index = [...]uint16{0, 8, 21, 35, 44, 65, 73, 92, 102, 113, 121, 139, 152, 162, 180, 198, 213, 229, 245, 252, 265, 281, 289, 307}\n\nfunc (i astNodeType) String() string {\n\tif i < 0 || i >= astNodeType(len(_astNodeType_index)-1) {\n\t\treturn fmt.Sprintf(\"astNodeType(%d)\", i)\n\t}\n\treturn _astNodeType_name[_astNodeType_index[i]:_astNodeType_index[i+1]]\n}\n"
  },
  {
    "path": "vendor/github.com/jmespath/go-jmespath/functions.go",
    "content": "package jmespath\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n)\n\ntype jpFunction func(arguments []interface{}) (interface{}, error)\n\ntype jpType string\n\nconst (\n\tjpUnknown     jpType = \"unknown\"\n\tjpNumber      jpType = \"number\"\n\tjpString      jpType = \"string\"\n\tjpArray       jpType = \"array\"\n\tjpObject      jpType = \"object\"\n\tjpArrayNumber jpType = \"array[number]\"\n\tjpArrayString jpType = \"array[string]\"\n\tjpExpref      jpType = \"expref\"\n\tjpAny         jpType = \"any\"\n)\n\ntype functionEntry struct {\n\tname      string\n\targuments []argSpec\n\thandler   jpFunction\n\thasExpRef bool\n}\n\ntype argSpec struct {\n\ttypes    []jpType\n\tvariadic bool\n}\n\ntype byExprString struct {\n\tintr     *treeInterpreter\n\tnode     ASTNode\n\titems    []interface{}\n\thasError bool\n}\n\nfunc (a *byExprString) Len() int {\n\treturn len(a.items)\n}\nfunc (a *byExprString) Swap(i, j int) {\n\ta.items[i], a.items[j] = a.items[j], a.items[i]\n}\nfunc (a *byExprString) Less(i, j int) bool {\n\tfirst, err := a.intr.Execute(a.node, a.items[i])\n\tif err != nil {\n\t\ta.hasError = true\n\t\t// Return a dummy value.\n\t\treturn true\n\t}\n\tith, ok := first.(string)\n\tif !ok {\n\t\ta.hasError = true\n\t\treturn true\n\t}\n\tsecond, err := a.intr.Execute(a.node, a.items[j])\n\tif err != nil {\n\t\ta.hasError = true\n\t\t// Return a dummy value.\n\t\treturn true\n\t}\n\tjth, ok := second.(string)\n\tif !ok {\n\t\ta.hasError = true\n\t\treturn true\n\t}\n\treturn ith < jth\n}\n\ntype byExprFloat struct {\n\tintr     *treeInterpreter\n\tnode     ASTNode\n\titems    []interface{}\n\thasError bool\n}\n\nfunc (a *byExprFloat) Len() int {\n\treturn len(a.items)\n}\nfunc (a *byExprFloat) Swap(i, j int) {\n\ta.items[i], a.items[j] = a.items[j], a.items[i]\n}\nfunc (a *byExprFloat) Less(i, j int) bool {\n\tfirst, err := a.intr.Execute(a.node, a.items[i])\n\tif err != nil {\n\t\ta.hasError = true\n\t\t// Return a dummy value.\n\t\treturn true\n\t}\n\tith, ok := first.(float64)\n\tif !ok {\n\t\ta.hasError = true\n\t\treturn true\n\t}\n\tsecond, err := a.intr.Execute(a.node, a.items[j])\n\tif err != nil {\n\t\ta.hasError = true\n\t\t// Return a dummy value.\n\t\treturn true\n\t}\n\tjth, ok := second.(float64)\n\tif !ok {\n\t\ta.hasError = true\n\t\treturn true\n\t}\n\treturn ith < jth\n}\n\ntype functionCaller struct {\n\tfunctionTable map[string]functionEntry\n}\n\nfunc newFunctionCaller() *functionCaller {\n\tcaller := &functionCaller{}\n\tcaller.functionTable = map[string]functionEntry{\n\t\t\"length\": {\n\t\t\tname: \"length\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpString, jpArray, jpObject}},\n\t\t\t},\n\t\t\thandler: jpfLength,\n\t\t},\n\t\t\"starts_with\": {\n\t\t\tname: \"starts_with\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpString}},\n\t\t\t\t{types: []jpType{jpString}},\n\t\t\t},\n\t\t\thandler: jpfStartsWith,\n\t\t},\n\t\t\"abs\": {\n\t\t\tname: \"abs\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpNumber}},\n\t\t\t},\n\t\t\thandler: jpfAbs,\n\t\t},\n\t\t\"avg\": {\n\t\t\tname: \"avg\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpArrayNumber}},\n\t\t\t},\n\t\t\thandler: jpfAvg,\n\t\t},\n\t\t\"ceil\": {\n\t\t\tname: \"ceil\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpNumber}},\n\t\t\t},\n\t\t\thandler: jpfCeil,\n\t\t},\n\t\t\"contains\": {\n\t\t\tname: \"contains\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpArray, jpString}},\n\t\t\t\t{types: []jpType{jpAny}},\n\t\t\t},\n\t\t\thandler: jpfContains,\n\t\t},\n\t\t\"ends_with\": {\n\t\t\tname: \"ends_with\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpString}},\n\t\t\t\t{types: []jpType{jpString}},\n\t\t\t},\n\t\t\thandler: jpfEndsWith,\n\t\t},\n\t\t\"floor\": {\n\t\t\tname: \"floor\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpNumber}},\n\t\t\t},\n\t\t\thandler: jpfFloor,\n\t\t},\n\t\t\"map\": {\n\t\t\tname: \"amp\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpExpref}},\n\t\t\t\t{types: []jpType{jpArray}},\n\t\t\t},\n\t\t\thandler:   jpfMap,\n\t\t\thasExpRef: true,\n\t\t},\n\t\t\"max\": {\n\t\t\tname: \"max\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpArrayNumber, jpArrayString}},\n\t\t\t},\n\t\t\thandler: jpfMax,\n\t\t},\n\t\t\"merge\": {\n\t\t\tname: \"merge\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpObject}, variadic: true},\n\t\t\t},\n\t\t\thandler: jpfMerge,\n\t\t},\n\t\t\"max_by\": {\n\t\t\tname: \"max_by\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpArray}},\n\t\t\t\t{types: []jpType{jpExpref}},\n\t\t\t},\n\t\t\thandler:   jpfMaxBy,\n\t\t\thasExpRef: true,\n\t\t},\n\t\t\"sum\": {\n\t\t\tname: \"sum\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpArrayNumber}},\n\t\t\t},\n\t\t\thandler: jpfSum,\n\t\t},\n\t\t\"min\": {\n\t\t\tname: \"min\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpArrayNumber, jpArrayString}},\n\t\t\t},\n\t\t\thandler: jpfMin,\n\t\t},\n\t\t\"min_by\": {\n\t\t\tname: \"min_by\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpArray}},\n\t\t\t\t{types: []jpType{jpExpref}},\n\t\t\t},\n\t\t\thandler:   jpfMinBy,\n\t\t\thasExpRef: true,\n\t\t},\n\t\t\"type\": {\n\t\t\tname: \"type\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpAny}},\n\t\t\t},\n\t\t\thandler: jpfType,\n\t\t},\n\t\t\"keys\": {\n\t\t\tname: \"keys\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpObject}},\n\t\t\t},\n\t\t\thandler: jpfKeys,\n\t\t},\n\t\t\"values\": {\n\t\t\tname: \"values\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpObject}},\n\t\t\t},\n\t\t\thandler: jpfValues,\n\t\t},\n\t\t\"sort\": {\n\t\t\tname: \"sort\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpArrayString, jpArrayNumber}},\n\t\t\t},\n\t\t\thandler: jpfSort,\n\t\t},\n\t\t\"sort_by\": {\n\t\t\tname: \"sort_by\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpArray}},\n\t\t\t\t{types: []jpType{jpExpref}},\n\t\t\t},\n\t\t\thandler:   jpfSortBy,\n\t\t\thasExpRef: true,\n\t\t},\n\t\t\"join\": {\n\t\t\tname: \"join\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpString}},\n\t\t\t\t{types: []jpType{jpArrayString}},\n\t\t\t},\n\t\t\thandler: jpfJoin,\n\t\t},\n\t\t\"reverse\": {\n\t\t\tname: \"reverse\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpArray, jpString}},\n\t\t\t},\n\t\t\thandler: jpfReverse,\n\t\t},\n\t\t\"to_array\": {\n\t\t\tname: \"to_array\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpAny}},\n\t\t\t},\n\t\t\thandler: jpfToArray,\n\t\t},\n\t\t\"to_string\": {\n\t\t\tname: \"to_string\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpAny}},\n\t\t\t},\n\t\t\thandler: jpfToString,\n\t\t},\n\t\t\"to_number\": {\n\t\t\tname: \"to_number\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpAny}},\n\t\t\t},\n\t\t\thandler: jpfToNumber,\n\t\t},\n\t\t\"not_null\": {\n\t\t\tname: \"not_null\",\n\t\t\targuments: []argSpec{\n\t\t\t\t{types: []jpType{jpAny}, variadic: true},\n\t\t\t},\n\t\t\thandler: jpfNotNull,\n\t\t},\n\t}\n\treturn caller\n}\n\nfunc (e *functionEntry) resolveArgs(arguments []interface{}) ([]interface{}, error) {\n\tif len(e.arguments) == 0 {\n\t\treturn arguments, nil\n\t}\n\tif !e.arguments[len(e.arguments)-1].variadic {\n\t\tif len(e.arguments) != len(arguments) {\n\t\t\treturn nil, errors.New(\"incorrect number of args\")\n\t\t}\n\t\tfor i, spec := range e.arguments {\n\t\t\tuserArg := arguments[i]\n\t\t\terr := spec.typeCheck(userArg)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn arguments, nil\n\t}\n\tif len(arguments) < len(e.arguments) {\n\t\treturn nil, errors.New(\"Invalid arity.\")\n\t}\n\treturn arguments, nil\n}\n\nfunc (a *argSpec) typeCheck(arg interface{}) error {\n\tfor _, t := range a.types {\n\t\tswitch t {\n\t\tcase jpNumber:\n\t\t\tif _, ok := arg.(float64); ok {\n\t\t\t\treturn nil\n\t\t\t}\n\t\tcase jpString:\n\t\t\tif _, ok := arg.(string); ok {\n\t\t\t\treturn nil\n\t\t\t}\n\t\tcase jpArray:\n\t\t\tif isSliceType(arg) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\tcase jpObject:\n\t\t\tif _, ok := arg.(map[string]interface{}); ok {\n\t\t\t\treturn nil\n\t\t\t}\n\t\tcase jpArrayNumber:\n\t\t\tif _, ok := toArrayNum(arg); ok {\n\t\t\t\treturn nil\n\t\t\t}\n\t\tcase jpArrayString:\n\t\t\tif _, ok := toArrayStr(arg); ok {\n\t\t\t\treturn nil\n\t\t\t}\n\t\tcase jpAny:\n\t\t\treturn nil\n\t\tcase jpExpref:\n\t\t\tif _, ok := arg.(expRef); ok {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\treturn fmt.Errorf(\"Invalid type for: %v, expected: %#v\", arg, a.types)\n}\n\nfunc (f *functionCaller) CallFunction(name string, arguments []interface{}, intr *treeInterpreter) (interface{}, error) {\n\tentry, ok := f.functionTable[name]\n\tif !ok {\n\t\treturn nil, errors.New(\"unknown function: \" + name)\n\t}\n\tresolvedArgs, err := entry.resolveArgs(arguments)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif entry.hasExpRef {\n\t\tvar extra []interface{}\n\t\textra = append(extra, intr)\n\t\tresolvedArgs = append(extra, resolvedArgs...)\n\t}\n\treturn entry.handler(resolvedArgs)\n}\n\nfunc jpfAbs(arguments []interface{}) (interface{}, error) {\n\tnum := arguments[0].(float64)\n\treturn math.Abs(num), nil\n}\n\nfunc jpfLength(arguments []interface{}) (interface{}, error) {\n\targ := arguments[0]\n\tif c, ok := arg.(string); ok {\n\t\treturn float64(utf8.RuneCountInString(c)), nil\n\t} else if isSliceType(arg) {\n\t\tv := reflect.ValueOf(arg)\n\t\treturn float64(v.Len()), nil\n\t} else if c, ok := arg.(map[string]interface{}); ok {\n\t\treturn float64(len(c)), nil\n\t}\n\treturn nil, errors.New(\"could not compute length()\")\n}\n\nfunc jpfStartsWith(arguments []interface{}) (interface{}, error) {\n\tsearch := arguments[0].(string)\n\tprefix := arguments[1].(string)\n\treturn strings.HasPrefix(search, prefix), nil\n}\n\nfunc jpfAvg(arguments []interface{}) (interface{}, error) {\n\t// We've already type checked the value so we can safely use\n\t// type assertions.\n\targs := arguments[0].([]interface{})\n\tlength := float64(len(args))\n\tnumerator := 0.0\n\tfor _, n := range args {\n\t\tnumerator += n.(float64)\n\t}\n\treturn numerator / length, nil\n}\nfunc jpfCeil(arguments []interface{}) (interface{}, error) {\n\tval := arguments[0].(float64)\n\treturn math.Ceil(val), nil\n}\nfunc jpfContains(arguments []interface{}) (interface{}, error) {\n\tsearch := arguments[0]\n\tel := arguments[1]\n\tif searchStr, ok := search.(string); ok {\n\t\tif elStr, ok := el.(string); ok {\n\t\t\treturn strings.Index(searchStr, elStr) != -1, nil\n\t\t}\n\t\treturn false, nil\n\t}\n\t// Otherwise this is a generic contains for []interface{}\n\tgeneral := search.([]interface{})\n\tfor _, item := range general {\n\t\tif item == el {\n\t\t\treturn true, nil\n\t\t}\n\t}\n\treturn false, nil\n}\nfunc jpfEndsWith(arguments []interface{}) (interface{}, error) {\n\tsearch := arguments[0].(string)\n\tsuffix := arguments[1].(string)\n\treturn strings.HasSuffix(search, suffix), nil\n}\nfunc jpfFloor(arguments []interface{}) (interface{}, error) {\n\tval := arguments[0].(float64)\n\treturn math.Floor(val), nil\n}\nfunc jpfMap(arguments []interface{}) (interface{}, error) {\n\tintr := arguments[0].(*treeInterpreter)\n\texp := arguments[1].(expRef)\n\tnode := exp.ref\n\tarr := arguments[2].([]interface{})\n\tmapped := make([]interface{}, 0, len(arr))\n\tfor _, value := range arr {\n\t\tcurrent, err := intr.Execute(node, value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tmapped = append(mapped, current)\n\t}\n\treturn mapped, nil\n}\nfunc jpfMax(arguments []interface{}) (interface{}, error) {\n\tif items, ok := toArrayNum(arguments[0]); ok {\n\t\tif len(items) == 0 {\n\t\t\treturn nil, nil\n\t\t}\n\t\tif len(items) == 1 {\n\t\t\treturn items[0], nil\n\t\t}\n\t\tbest := items[0]\n\t\tfor _, item := range items[1:] {\n\t\t\tif item > best {\n\t\t\t\tbest = item\n\t\t\t}\n\t\t}\n\t\treturn best, nil\n\t}\n\t// Otherwise we're dealing with a max() of strings.\n\titems, _ := toArrayStr(arguments[0])\n\tif len(items) == 0 {\n\t\treturn nil, nil\n\t}\n\tif len(items) == 1 {\n\t\treturn items[0], nil\n\t}\n\tbest := items[0]\n\tfor _, item := range items[1:] {\n\t\tif item > best {\n\t\t\tbest = item\n\t\t}\n\t}\n\treturn best, nil\n}\nfunc jpfMerge(arguments []interface{}) (interface{}, error) {\n\tfinal := make(map[string]interface{})\n\tfor _, m := range arguments {\n\t\tmapped := m.(map[string]interface{})\n\t\tfor key, value := range mapped {\n\t\t\tfinal[key] = value\n\t\t}\n\t}\n\treturn final, nil\n}\nfunc jpfMaxBy(arguments []interface{}) (interface{}, error) {\n\tintr := arguments[0].(*treeInterpreter)\n\tarr := arguments[1].([]interface{})\n\texp := arguments[2].(expRef)\n\tnode := exp.ref\n\tif len(arr) == 0 {\n\t\treturn nil, nil\n\t} else if len(arr) == 1 {\n\t\treturn arr[0], nil\n\t}\n\tstart, err := intr.Execute(node, arr[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch t := start.(type) {\n\tcase float64:\n\t\tbestVal := t\n\t\tbestItem := arr[0]\n\t\tfor _, item := range arr[1:] {\n\t\t\tresult, err := intr.Execute(node, item)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcurrent, ok := result.(float64)\n\t\t\tif !ok {\n\t\t\t\treturn nil, errors.New(\"invalid type, must be number\")\n\t\t\t}\n\t\t\tif current > bestVal {\n\t\t\t\tbestVal = current\n\t\t\t\tbestItem = item\n\t\t\t}\n\t\t}\n\t\treturn bestItem, nil\n\tcase string:\n\t\tbestVal := t\n\t\tbestItem := arr[0]\n\t\tfor _, item := range arr[1:] {\n\t\t\tresult, err := intr.Execute(node, item)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcurrent, ok := result.(string)\n\t\t\tif !ok {\n\t\t\t\treturn nil, errors.New(\"invalid type, must be string\")\n\t\t\t}\n\t\t\tif current > bestVal {\n\t\t\t\tbestVal = current\n\t\t\t\tbestItem = item\n\t\t\t}\n\t\t}\n\t\treturn bestItem, nil\n\tdefault:\n\t\treturn nil, errors.New(\"invalid type, must be number of string\")\n\t}\n}\nfunc jpfSum(arguments []interface{}) (interface{}, error) {\n\titems, _ := toArrayNum(arguments[0])\n\tsum := 0.0\n\tfor _, item := range items {\n\t\tsum += item\n\t}\n\treturn sum, nil\n}\n\nfunc jpfMin(arguments []interface{}) (interface{}, error) {\n\tif items, ok := toArrayNum(arguments[0]); ok {\n\t\tif len(items) == 0 {\n\t\t\treturn nil, nil\n\t\t}\n\t\tif len(items) == 1 {\n\t\t\treturn items[0], nil\n\t\t}\n\t\tbest := items[0]\n\t\tfor _, item := range items[1:] {\n\t\t\tif item < best {\n\t\t\t\tbest = item\n\t\t\t}\n\t\t}\n\t\treturn best, nil\n\t}\n\titems, _ := toArrayStr(arguments[0])\n\tif len(items) == 0 {\n\t\treturn nil, nil\n\t}\n\tif len(items) == 1 {\n\t\treturn items[0], nil\n\t}\n\tbest := items[0]\n\tfor _, item := range items[1:] {\n\t\tif item < best {\n\t\t\tbest = item\n\t\t}\n\t}\n\treturn best, nil\n}\n\nfunc jpfMinBy(arguments []interface{}) (interface{}, error) {\n\tintr := arguments[0].(*treeInterpreter)\n\tarr := arguments[1].([]interface{})\n\texp := arguments[2].(expRef)\n\tnode := exp.ref\n\tif len(arr) == 0 {\n\t\treturn nil, nil\n\t} else if len(arr) == 1 {\n\t\treturn arr[0], nil\n\t}\n\tstart, err := intr.Execute(node, arr[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif t, ok := start.(float64); ok {\n\t\tbestVal := t\n\t\tbestItem := arr[0]\n\t\tfor _, item := range arr[1:] {\n\t\t\tresult, err := intr.Execute(node, item)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcurrent, ok := result.(float64)\n\t\t\tif !ok {\n\t\t\t\treturn nil, errors.New(\"invalid type, must be number\")\n\t\t\t}\n\t\t\tif current < bestVal {\n\t\t\t\tbestVal = current\n\t\t\t\tbestItem = item\n\t\t\t}\n\t\t}\n\t\treturn bestItem, nil\n\t} else if t, ok := start.(string); ok {\n\t\tbestVal := t\n\t\tbestItem := arr[0]\n\t\tfor _, item := range arr[1:] {\n\t\t\tresult, err := intr.Execute(node, item)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcurrent, ok := result.(string)\n\t\t\tif !ok {\n\t\t\t\treturn nil, errors.New(\"invalid type, must be string\")\n\t\t\t}\n\t\t\tif current < bestVal {\n\t\t\t\tbestVal = current\n\t\t\t\tbestItem = item\n\t\t\t}\n\t\t}\n\t\treturn bestItem, nil\n\t} else {\n\t\treturn nil, errors.New(\"invalid type, must be number of string\")\n\t}\n}\nfunc jpfType(arguments []interface{}) (interface{}, error) {\n\targ := arguments[0]\n\tif _, ok := arg.(float64); ok {\n\t\treturn \"number\", nil\n\t}\n\tif _, ok := arg.(string); ok {\n\t\treturn \"string\", nil\n\t}\n\tif _, ok := arg.([]interface{}); ok {\n\t\treturn \"array\", nil\n\t}\n\tif _, ok := arg.(map[string]interface{}); ok {\n\t\treturn \"object\", nil\n\t}\n\tif arg == nil {\n\t\treturn \"null\", nil\n\t}\n\tif arg == true || arg == false {\n\t\treturn \"boolean\", nil\n\t}\n\treturn nil, errors.New(\"unknown type\")\n}\nfunc jpfKeys(arguments []interface{}) (interface{}, error) {\n\targ := arguments[0].(map[string]interface{})\n\tcollected := make([]interface{}, 0, len(arg))\n\tfor key := range arg {\n\t\tcollected = append(collected, key)\n\t}\n\treturn collected, nil\n}\nfunc jpfValues(arguments []interface{}) (interface{}, error) {\n\targ := arguments[0].(map[string]interface{})\n\tcollected := make([]interface{}, 0, len(arg))\n\tfor _, value := range arg {\n\t\tcollected = append(collected, value)\n\t}\n\treturn collected, nil\n}\nfunc jpfSort(arguments []interface{}) (interface{}, error) {\n\tif items, ok := toArrayNum(arguments[0]); ok {\n\t\td := sort.Float64Slice(items)\n\t\tsort.Stable(d)\n\t\tfinal := make([]interface{}, len(d))\n\t\tfor i, val := range d {\n\t\t\tfinal[i] = val\n\t\t}\n\t\treturn final, nil\n\t}\n\t// Otherwise we're dealing with sort()'ing strings.\n\titems, _ := toArrayStr(arguments[0])\n\td := sort.StringSlice(items)\n\tsort.Stable(d)\n\tfinal := make([]interface{}, len(d))\n\tfor i, val := range d {\n\t\tfinal[i] = val\n\t}\n\treturn final, nil\n}\nfunc jpfSortBy(arguments []interface{}) (interface{}, error) {\n\tintr := arguments[0].(*treeInterpreter)\n\tarr := arguments[1].([]interface{})\n\texp := arguments[2].(expRef)\n\tnode := exp.ref\n\tif len(arr) == 0 {\n\t\treturn arr, nil\n\t} else if len(arr) == 1 {\n\t\treturn arr, nil\n\t}\n\tstart, err := intr.Execute(node, arr[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif _, ok := start.(float64); ok {\n\t\tsortable := &byExprFloat{intr, node, arr, false}\n\t\tsort.Stable(sortable)\n\t\tif sortable.hasError {\n\t\t\treturn nil, errors.New(\"error in sort_by comparison\")\n\t\t}\n\t\treturn arr, nil\n\t} else if _, ok := start.(string); ok {\n\t\tsortable := &byExprString{intr, node, arr, false}\n\t\tsort.Stable(sortable)\n\t\tif sortable.hasError {\n\t\t\treturn nil, errors.New(\"error in sort_by comparison\")\n\t\t}\n\t\treturn arr, nil\n\t} else {\n\t\treturn nil, errors.New(\"invalid type, must be number of string\")\n\t}\n}\nfunc jpfJoin(arguments []interface{}) (interface{}, error) {\n\tsep := arguments[0].(string)\n\t// We can't just do arguments[1].([]string), we have to\n\t// manually convert each item to a string.\n\tarrayStr := []string{}\n\tfor _, item := range arguments[1].([]interface{}) {\n\t\tarrayStr = append(arrayStr, item.(string))\n\t}\n\treturn strings.Join(arrayStr, sep), nil\n}\nfunc jpfReverse(arguments []interface{}) (interface{}, error) {\n\tif s, ok := arguments[0].(string); ok {\n\t\tr := []rune(s)\n\t\tfor i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {\n\t\t\tr[i], r[j] = r[j], r[i]\n\t\t}\n\t\treturn string(r), nil\n\t}\n\titems := arguments[0].([]interface{})\n\tlength := len(items)\n\treversed := make([]interface{}, length)\n\tfor i, item := range items {\n\t\treversed[length-(i+1)] = item\n\t}\n\treturn reversed, nil\n}\nfunc jpfToArray(arguments []interface{}) (interface{}, error) {\n\tif _, ok := arguments[0].([]interface{}); ok {\n\t\treturn arguments[0], nil\n\t}\n\treturn arguments[:1:1], nil\n}\nfunc jpfToString(arguments []interface{}) (interface{}, error) {\n\tif v, ok := arguments[0].(string); ok {\n\t\treturn v, nil\n\t}\n\tresult, err := json.Marshal(arguments[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn string(result), nil\n}\nfunc jpfToNumber(arguments []interface{}) (interface{}, error) {\n\targ := arguments[0]\n\tif v, ok := arg.(float64); ok {\n\t\treturn v, nil\n\t}\n\tif v, ok := arg.(string); ok {\n\t\tconv, err := strconv.ParseFloat(v, 64)\n\t\tif err != nil {\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn conv, nil\n\t}\n\tif _, ok := arg.([]interface{}); ok {\n\t\treturn nil, nil\n\t}\n\tif _, ok := arg.(map[string]interface{}); ok {\n\t\treturn nil, nil\n\t}\n\tif arg == nil {\n\t\treturn nil, nil\n\t}\n\tif arg == true || arg == false {\n\t\treturn nil, nil\n\t}\n\treturn nil, errors.New(\"unknown type\")\n}\nfunc jpfNotNull(arguments []interface{}) (interface{}, error) {\n\tfor _, arg := range arguments {\n\t\tif arg != nil {\n\t\t\treturn arg, nil\n\t\t}\n\t}\n\treturn nil, nil\n}\n"
  },
  {
    "path": "vendor/github.com/jmespath/go-jmespath/interpreter.go",
    "content": "package jmespath\n\nimport (\n\t\"errors\"\n\t\"reflect\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n)\n\n/* This is a tree based interpreter.  It walks the AST and directly\n   interprets the AST to search through a JSON document.\n*/\n\ntype treeInterpreter struct {\n\tfCall *functionCaller\n}\n\nfunc newInterpreter() *treeInterpreter {\n\tinterpreter := treeInterpreter{}\n\tinterpreter.fCall = newFunctionCaller()\n\treturn &interpreter\n}\n\ntype expRef struct {\n\tref ASTNode\n}\n\n// Execute takes an ASTNode and input data and interprets the AST directly.\n// It will produce the result of applying the JMESPath expression associated\n// with the ASTNode to the input data \"value\".\nfunc (intr *treeInterpreter) Execute(node ASTNode, value interface{}) (interface{}, error) {\n\tswitch node.nodeType {\n\tcase ASTComparator:\n\t\tleft, err := intr.Execute(node.children[0], value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tright, err := intr.Execute(node.children[1], value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswitch node.value {\n\t\tcase tEQ:\n\t\t\treturn objsEqual(left, right), nil\n\t\tcase tNE:\n\t\t\treturn !objsEqual(left, right), nil\n\t\t}\n\t\tleftNum, ok := left.(float64)\n\t\tif !ok {\n\t\t\treturn nil, nil\n\t\t}\n\t\trightNum, ok := right.(float64)\n\t\tif !ok {\n\t\t\treturn nil, nil\n\t\t}\n\t\tswitch node.value {\n\t\tcase tGT:\n\t\t\treturn leftNum > rightNum, nil\n\t\tcase tGTE:\n\t\t\treturn leftNum >= rightNum, nil\n\t\tcase tLT:\n\t\t\treturn leftNum < rightNum, nil\n\t\tcase tLTE:\n\t\t\treturn leftNum <= rightNum, nil\n\t\t}\n\tcase ASTExpRef:\n\t\treturn expRef{ref: node.children[0]}, nil\n\tcase ASTFunctionExpression:\n\t\tresolvedArgs := []interface{}{}\n\t\tfor _, arg := range node.children {\n\t\t\tcurrent, err := intr.Execute(arg, value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tresolvedArgs = append(resolvedArgs, current)\n\t\t}\n\t\treturn intr.fCall.CallFunction(node.value.(string), resolvedArgs, intr)\n\tcase ASTField:\n\t\tif m, ok := value.(map[string]interface{}); ok {\n\t\t\tkey := node.value.(string)\n\t\t\treturn m[key], nil\n\t\t}\n\t\treturn intr.fieldFromStruct(node.value.(string), value)\n\tcase ASTFilterProjection:\n\t\tleft, err := intr.Execute(node.children[0], value)\n\t\tif err != nil {\n\t\t\treturn nil, nil\n\t\t}\n\t\tsliceType, ok := left.([]interface{})\n\t\tif !ok {\n\t\t\tif isSliceType(left) {\n\t\t\t\treturn intr.filterProjectionWithReflection(node, left)\n\t\t\t}\n\t\t\treturn nil, nil\n\t\t}\n\t\tcompareNode := node.children[2]\n\t\tcollected := []interface{}{}\n\t\tfor _, element := range sliceType {\n\t\t\tresult, err := intr.Execute(compareNode, element)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif !isFalse(result) {\n\t\t\t\tcurrent, err := intr.Execute(node.children[1], element)\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 current != nil {\n\t\t\t\t\tcollected = append(collected, current)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn collected, nil\n\tcase ASTFlatten:\n\t\tleft, err := intr.Execute(node.children[0], value)\n\t\tif err != nil {\n\t\t\treturn nil, nil\n\t\t}\n\t\tsliceType, ok := left.([]interface{})\n\t\tif !ok {\n\t\t\t// If we can't type convert to []interface{}, there's\n\t\t\t// a chance this could still work via reflection if we're\n\t\t\t// dealing with user provided types.\n\t\t\tif isSliceType(left) {\n\t\t\t\treturn intr.flattenWithReflection(left)\n\t\t\t}\n\t\t\treturn nil, nil\n\t\t}\n\t\tflattened := []interface{}{}\n\t\tfor _, element := range sliceType {\n\t\t\tif elementSlice, ok := element.([]interface{}); ok {\n\t\t\t\tflattened = append(flattened, elementSlice...)\n\t\t\t} else if isSliceType(element) {\n\t\t\t\treflectFlat := []interface{}{}\n\t\t\t\tv := reflect.ValueOf(element)\n\t\t\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\t\t\treflectFlat = append(reflectFlat, v.Index(i).Interface())\n\t\t\t\t}\n\t\t\t\tflattened = append(flattened, reflectFlat...)\n\t\t\t} else {\n\t\t\t\tflattened = append(flattened, element)\n\t\t\t}\n\t\t}\n\t\treturn flattened, nil\n\tcase ASTIdentity, ASTCurrentNode:\n\t\treturn value, nil\n\tcase ASTIndex:\n\t\tif sliceType, ok := value.([]interface{}); ok {\n\t\t\tindex := node.value.(int)\n\t\t\tif index < 0 {\n\t\t\t\tindex += len(sliceType)\n\t\t\t}\n\t\t\tif index < len(sliceType) && index >= 0 {\n\t\t\t\treturn sliceType[index], nil\n\t\t\t}\n\t\t\treturn nil, nil\n\t\t}\n\t\t// Otherwise try via reflection.\n\t\trv := reflect.ValueOf(value)\n\t\tif rv.Kind() == reflect.Slice {\n\t\t\tindex := node.value.(int)\n\t\t\tif index < 0 {\n\t\t\t\tindex += rv.Len()\n\t\t\t}\n\t\t\tif index < rv.Len() && index >= 0 {\n\t\t\t\tv := rv.Index(index)\n\t\t\t\treturn v.Interface(), nil\n\t\t\t}\n\t\t}\n\t\treturn nil, nil\n\tcase ASTKeyValPair:\n\t\treturn intr.Execute(node.children[0], value)\n\tcase ASTLiteral:\n\t\treturn node.value, nil\n\tcase ASTMultiSelectHash:\n\t\tif value == nil {\n\t\t\treturn nil, nil\n\t\t}\n\t\tcollected := make(map[string]interface{})\n\t\tfor _, child := range node.children {\n\t\t\tcurrent, err := intr.Execute(child, value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tkey := child.value.(string)\n\t\t\tcollected[key] = current\n\t\t}\n\t\treturn collected, nil\n\tcase ASTMultiSelectList:\n\t\tif value == nil {\n\t\t\treturn nil, nil\n\t\t}\n\t\tcollected := []interface{}{}\n\t\tfor _, child := range node.children {\n\t\t\tcurrent, err := intr.Execute(child, value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tcollected = append(collected, current)\n\t\t}\n\t\treturn collected, nil\n\tcase ASTOrExpression:\n\t\tmatched, err := intr.Execute(node.children[0], value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif isFalse(matched) {\n\t\t\tmatched, err = intr.Execute(node.children[1], value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn matched, nil\n\tcase ASTAndExpression:\n\t\tmatched, err := intr.Execute(node.children[0], value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif isFalse(matched) {\n\t\t\treturn matched, nil\n\t\t}\n\t\treturn intr.Execute(node.children[1], value)\n\tcase ASTNotExpression:\n\t\tmatched, err := intr.Execute(node.children[0], value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif isFalse(matched) {\n\t\t\treturn true, nil\n\t\t}\n\t\treturn false, nil\n\tcase ASTPipe:\n\t\tresult := value\n\t\tvar err error\n\t\tfor _, child := range node.children {\n\t\t\tresult, err = intr.Execute(child, result)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn result, nil\n\tcase ASTProjection:\n\t\tleft, err := intr.Execute(node.children[0], value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tsliceType, ok := left.([]interface{})\n\t\tif !ok {\n\t\t\tif isSliceType(left) {\n\t\t\t\treturn intr.projectWithReflection(node, left)\n\t\t\t}\n\t\t\treturn nil, nil\n\t\t}\n\t\tcollected := []interface{}{}\n\t\tvar current interface{}\n\t\tfor _, element := range sliceType {\n\t\t\tcurrent, err = intr.Execute(node.children[1], element)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif current != nil {\n\t\t\t\tcollected = append(collected, current)\n\t\t\t}\n\t\t}\n\t\treturn collected, nil\n\tcase ASTSubexpression, ASTIndexExpression:\n\t\tleft, err := intr.Execute(node.children[0], value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn intr.Execute(node.children[1], left)\n\tcase ASTSlice:\n\t\tsliceType, ok := value.([]interface{})\n\t\tif !ok {\n\t\t\tif isSliceType(value) {\n\t\t\t\treturn intr.sliceWithReflection(node, value)\n\t\t\t}\n\t\t\treturn nil, nil\n\t\t}\n\t\tparts := node.value.([]*int)\n\t\tsliceParams := make([]sliceParam, 3)\n\t\tfor i, part := range parts {\n\t\t\tif part != nil {\n\t\t\t\tsliceParams[i].Specified = true\n\t\t\t\tsliceParams[i].N = *part\n\t\t\t}\n\t\t}\n\t\treturn slice(sliceType, sliceParams)\n\tcase ASTValueProjection:\n\t\tleft, err := intr.Execute(node.children[0], value)\n\t\tif err != nil {\n\t\t\treturn nil, nil\n\t\t}\n\t\tmapType, ok := left.(map[string]interface{})\n\t\tif !ok {\n\t\t\treturn nil, nil\n\t\t}\n\t\tvalues := make([]interface{}, len(mapType))\n\t\tfor _, value := range mapType {\n\t\t\tvalues = append(values, value)\n\t\t}\n\t\tcollected := []interface{}{}\n\t\tfor _, element := range values {\n\t\t\tcurrent, err := intr.Execute(node.children[1], element)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif current != nil {\n\t\t\t\tcollected = append(collected, current)\n\t\t\t}\n\t\t}\n\t\treturn collected, nil\n\t}\n\treturn nil, errors.New(\"Unknown AST node: \" + node.nodeType.String())\n}\n\nfunc (intr *treeInterpreter) fieldFromStruct(key string, value interface{}) (interface{}, error) {\n\trv := reflect.ValueOf(value)\n\tfirst, n := utf8.DecodeRuneInString(key)\n\tfieldName := string(unicode.ToUpper(first)) + key[n:]\n\tif rv.Kind() == reflect.Struct {\n\t\tv := rv.FieldByName(fieldName)\n\t\tif !v.IsValid() {\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn v.Interface(), nil\n\t} else if rv.Kind() == reflect.Ptr {\n\t\t// Handle multiple levels of indirection?\n\t\tif rv.IsNil() {\n\t\t\treturn nil, nil\n\t\t}\n\t\trv = rv.Elem()\n\t\tv := rv.FieldByName(fieldName)\n\t\tif !v.IsValid() {\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn v.Interface(), nil\n\t}\n\treturn nil, nil\n}\n\nfunc (intr *treeInterpreter) flattenWithReflection(value interface{}) (interface{}, error) {\n\tv := reflect.ValueOf(value)\n\tflattened := []interface{}{}\n\tfor i := 0; i < v.Len(); i++ {\n\t\telement := v.Index(i).Interface()\n\t\tif reflect.TypeOf(element).Kind() == reflect.Slice {\n\t\t\t// Then insert the contents of the element\n\t\t\t// slice into the flattened slice,\n\t\t\t// i.e flattened = append(flattened, mySlice...)\n\t\t\telementV := reflect.ValueOf(element)\n\t\t\tfor j := 0; j < elementV.Len(); j++ {\n\t\t\t\tflattened = append(\n\t\t\t\t\tflattened, elementV.Index(j).Interface())\n\t\t\t}\n\t\t} else {\n\t\t\tflattened = append(flattened, element)\n\t\t}\n\t}\n\treturn flattened, nil\n}\n\nfunc (intr *treeInterpreter) sliceWithReflection(node ASTNode, value interface{}) (interface{}, error) {\n\tv := reflect.ValueOf(value)\n\tparts := node.value.([]*int)\n\tsliceParams := make([]sliceParam, 3)\n\tfor i, part := range parts {\n\t\tif part != nil {\n\t\t\tsliceParams[i].Specified = true\n\t\t\tsliceParams[i].N = *part\n\t\t}\n\t}\n\tfinal := []interface{}{}\n\tfor i := 0; i < v.Len(); i++ {\n\t\telement := v.Index(i).Interface()\n\t\tfinal = append(final, element)\n\t}\n\treturn slice(final, sliceParams)\n}\n\nfunc (intr *treeInterpreter) filterProjectionWithReflection(node ASTNode, value interface{}) (interface{}, error) {\n\tcompareNode := node.children[2]\n\tcollected := []interface{}{}\n\tv := reflect.ValueOf(value)\n\tfor i := 0; i < v.Len(); i++ {\n\t\telement := v.Index(i).Interface()\n\t\tresult, err := intr.Execute(compareNode, element)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif !isFalse(result) {\n\t\t\tcurrent, err := intr.Execute(node.children[1], element)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif current != nil {\n\t\t\t\tcollected = append(collected, current)\n\t\t\t}\n\t\t}\n\t}\n\treturn collected, nil\n}\n\nfunc (intr *treeInterpreter) projectWithReflection(node ASTNode, value interface{}) (interface{}, error) {\n\tcollected := []interface{}{}\n\tv := reflect.ValueOf(value)\n\tfor i := 0; i < v.Len(); i++ {\n\t\telement := v.Index(i).Interface()\n\t\tresult, err := intr.Execute(node.children[1], element)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif result != nil {\n\t\t\tcollected = append(collected, result)\n\t\t}\n\t}\n\treturn collected, nil\n}\n"
  },
  {
    "path": "vendor/github.com/jmespath/go-jmespath/lexer.go",
    "content": "package jmespath\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n)\n\ntype token struct {\n\ttokenType tokType\n\tvalue     string\n\tposition  int\n\tlength    int\n}\n\ntype tokType int\n\nconst eof = -1\n\n// Lexer contains information about the expression being tokenized.\ntype Lexer struct {\n\texpression string       // The expression provided by the user.\n\tcurrentPos int          // The current position in the string.\n\tlastWidth  int          // The width of the current rune.  This\n\tbuf        bytes.Buffer // Internal buffer used for building up values.\n}\n\n// SyntaxError is the main error used whenever a lexing or parsing error occurs.\ntype SyntaxError struct {\n\tmsg        string // Error message displayed to user\n\tExpression string // Expression that generated a SyntaxError\n\tOffset     int    // The location in the string where the error occurred\n}\n\nfunc (e SyntaxError) Error() string {\n\t// In the future, it would be good to underline the specific\n\t// location where the error occurred.\n\treturn \"SyntaxError: \" + e.msg\n}\n\n// HighlightLocation will show where the syntax error occurred.\n// It will place a \"^\" character on a line below the expression\n// at the point where the syntax error occurred.\nfunc (e SyntaxError) HighlightLocation() string {\n\treturn e.Expression + \"\\n\" + strings.Repeat(\" \", e.Offset) + \"^\"\n}\n\n//go:generate stringer -type=tokType\nconst (\n\ttUnknown tokType = iota\n\ttStar\n\ttDot\n\ttFilter\n\ttFlatten\n\ttLparen\n\ttRparen\n\ttLbracket\n\ttRbracket\n\ttLbrace\n\ttRbrace\n\ttOr\n\ttPipe\n\ttNumber\n\ttUnquotedIdentifier\n\ttQuotedIdentifier\n\ttComma\n\ttColon\n\ttLT\n\ttLTE\n\ttGT\n\ttGTE\n\ttEQ\n\ttNE\n\ttJSONLiteral\n\ttStringLiteral\n\ttCurrent\n\ttExpref\n\ttAnd\n\ttNot\n\ttEOF\n)\n\nvar basicTokens = map[rune]tokType{\n\t'.': tDot,\n\t'*': tStar,\n\t',': tComma,\n\t':': tColon,\n\t'{': tLbrace,\n\t'}': tRbrace,\n\t']': tRbracket, // tLbracket not included because it could be \"[]\"\n\t'(': tLparen,\n\t')': tRparen,\n\t'@': tCurrent,\n}\n\n// Bit mask for [a-zA-Z_] shifted down 64 bits to fit in a single uint64.\n// When using this bitmask just be sure to shift the rune down 64 bits\n// before checking against identifierStartBits.\nconst identifierStartBits uint64 = 576460745995190270\n\n// Bit mask for [a-zA-Z0-9], 128 bits -> 2 uint64s.\nvar identifierTrailingBits = [2]uint64{287948901175001088, 576460745995190270}\n\nvar whiteSpace = map[rune]bool{\n\t' ': true, '\\t': true, '\\n': true, '\\r': true,\n}\n\nfunc (t token) String() string {\n\treturn fmt.Sprintf(\"Token{%+v, %s, %d, %d}\",\n\t\tt.tokenType, t.value, t.position, t.length)\n}\n\n// NewLexer creates a new JMESPath lexer.\nfunc NewLexer() *Lexer {\n\tlexer := Lexer{}\n\treturn &lexer\n}\n\nfunc (lexer *Lexer) next() rune {\n\tif lexer.currentPos >= len(lexer.expression) {\n\t\tlexer.lastWidth = 0\n\t\treturn eof\n\t}\n\tr, w := utf8.DecodeRuneInString(lexer.expression[lexer.currentPos:])\n\tlexer.lastWidth = w\n\tlexer.currentPos += w\n\treturn r\n}\n\nfunc (lexer *Lexer) back() {\n\tlexer.currentPos -= lexer.lastWidth\n}\n\nfunc (lexer *Lexer) peek() rune {\n\tt := lexer.next()\n\tlexer.back()\n\treturn t\n}\n\n// tokenize takes an expression and returns corresponding tokens.\nfunc (lexer *Lexer) tokenize(expression string) ([]token, error) {\n\tvar tokens []token\n\tlexer.expression = expression\n\tlexer.currentPos = 0\n\tlexer.lastWidth = 0\nloop:\n\tfor {\n\t\tr := lexer.next()\n\t\tif identifierStartBits&(1<<(uint64(r)-64)) > 0 {\n\t\t\tt := lexer.consumeUnquotedIdentifier()\n\t\t\ttokens = append(tokens, t)\n\t\t} else if val, ok := basicTokens[r]; ok {\n\t\t\t// Basic single char token.\n\t\t\tt := token{\n\t\t\t\ttokenType: val,\n\t\t\t\tvalue:     string(r),\n\t\t\t\tposition:  lexer.currentPos - lexer.lastWidth,\n\t\t\t\tlength:    1,\n\t\t\t}\n\t\t\ttokens = append(tokens, t)\n\t\t} else if r == '-' || (r >= '0' && r <= '9') {\n\t\t\tt := lexer.consumeNumber()\n\t\t\ttokens = append(tokens, t)\n\t\t} else if r == '[' {\n\t\t\tt := lexer.consumeLBracket()\n\t\t\ttokens = append(tokens, t)\n\t\t} else if r == '\"' {\n\t\t\tt, err := lexer.consumeQuotedIdentifier()\n\t\t\tif err != nil {\n\t\t\t\treturn tokens, err\n\t\t\t}\n\t\t\ttokens = append(tokens, t)\n\t\t} else if r == '\\'' {\n\t\t\tt, err := lexer.consumeRawStringLiteral()\n\t\t\tif err != nil {\n\t\t\t\treturn tokens, err\n\t\t\t}\n\t\t\ttokens = append(tokens, t)\n\t\t} else if r == '`' {\n\t\t\tt, err := lexer.consumeLiteral()\n\t\t\tif err != nil {\n\t\t\t\treturn tokens, err\n\t\t\t}\n\t\t\ttokens = append(tokens, t)\n\t\t} else if r == '|' {\n\t\t\tt := lexer.matchOrElse(r, '|', tOr, tPipe)\n\t\t\ttokens = append(tokens, t)\n\t\t} else if r == '<' {\n\t\t\tt := lexer.matchOrElse(r, '=', tLTE, tLT)\n\t\t\ttokens = append(tokens, t)\n\t\t} else if r == '>' {\n\t\t\tt := lexer.matchOrElse(r, '=', tGTE, tGT)\n\t\t\ttokens = append(tokens, t)\n\t\t} else if r == '!' {\n\t\t\tt := lexer.matchOrElse(r, '=', tNE, tNot)\n\t\t\ttokens = append(tokens, t)\n\t\t} else if r == '=' {\n\t\t\tt := lexer.matchOrElse(r, '=', tEQ, tUnknown)\n\t\t\ttokens = append(tokens, t)\n\t\t} else if r == '&' {\n\t\t\tt := lexer.matchOrElse(r, '&', tAnd, tExpref)\n\t\t\ttokens = append(tokens, t)\n\t\t} else if r == eof {\n\t\t\tbreak loop\n\t\t} else if _, ok := whiteSpace[r]; ok {\n\t\t\t// Ignore whitespace\n\t\t} else {\n\t\t\treturn tokens, lexer.syntaxError(fmt.Sprintf(\"Unknown char: %s\", strconv.QuoteRuneToASCII(r)))\n\t\t}\n\t}\n\ttokens = append(tokens, token{tEOF, \"\", len(lexer.expression), 0})\n\treturn tokens, nil\n}\n\n// Consume characters until the ending rune \"r\" is reached.\n// If the end of the expression is reached before seeing the\n// terminating rune \"r\", then an error is returned.\n// If no error occurs then the matching substring is returned.\n// The returned string will not include the ending rune.\nfunc (lexer *Lexer) consumeUntil(end rune) (string, error) {\n\tstart := lexer.currentPos\n\tcurrent := lexer.next()\n\tfor current != end && current != eof {\n\t\tif current == '\\\\' && lexer.peek() != eof {\n\t\t\tlexer.next()\n\t\t}\n\t\tcurrent = lexer.next()\n\t}\n\tif lexer.lastWidth == 0 {\n\t\t// Then we hit an EOF so we never reached the closing\n\t\t// delimiter.\n\t\treturn \"\", SyntaxError{\n\t\t\tmsg:        \"Unclosed delimiter: \" + string(end),\n\t\t\tExpression: lexer.expression,\n\t\t\tOffset:     len(lexer.expression),\n\t\t}\n\t}\n\treturn lexer.expression[start : lexer.currentPos-lexer.lastWidth], nil\n}\n\nfunc (lexer *Lexer) consumeLiteral() (token, error) {\n\tstart := lexer.currentPos\n\tvalue, err := lexer.consumeUntil('`')\n\tif err != nil {\n\t\treturn token{}, err\n\t}\n\tvalue = strings.Replace(value, \"\\\\`\", \"`\", -1)\n\treturn token{\n\t\ttokenType: tJSONLiteral,\n\t\tvalue:     value,\n\t\tposition:  start,\n\t\tlength:    len(value),\n\t}, nil\n}\n\nfunc (lexer *Lexer) consumeRawStringLiteral() (token, error) {\n\tstart := lexer.currentPos\n\tcurrentIndex := start\n\tcurrent := lexer.next()\n\tfor current != '\\'' && lexer.peek() != eof {\n\t\tif current == '\\\\' && lexer.peek() == '\\'' {\n\t\t\tchunk := lexer.expression[currentIndex : lexer.currentPos-1]\n\t\t\tlexer.buf.WriteString(chunk)\n\t\t\tlexer.buf.WriteString(\"'\")\n\t\t\tlexer.next()\n\t\t\tcurrentIndex = lexer.currentPos\n\t\t}\n\t\tcurrent = lexer.next()\n\t}\n\tif lexer.lastWidth == 0 {\n\t\t// Then we hit an EOF so we never reached the closing\n\t\t// delimiter.\n\t\treturn token{}, SyntaxError{\n\t\t\tmsg:        \"Unclosed delimiter: '\",\n\t\t\tExpression: lexer.expression,\n\t\t\tOffset:     len(lexer.expression),\n\t\t}\n\t}\n\tif currentIndex < lexer.currentPos {\n\t\tlexer.buf.WriteString(lexer.expression[currentIndex : lexer.currentPos-1])\n\t}\n\tvalue := lexer.buf.String()\n\t// Reset the buffer so it can reused again.\n\tlexer.buf.Reset()\n\treturn token{\n\t\ttokenType: tStringLiteral,\n\t\tvalue:     value,\n\t\tposition:  start,\n\t\tlength:    len(value),\n\t}, nil\n}\n\nfunc (lexer *Lexer) syntaxError(msg string) SyntaxError {\n\treturn SyntaxError{\n\t\tmsg:        msg,\n\t\tExpression: lexer.expression,\n\t\tOffset:     lexer.currentPos - 1,\n\t}\n}\n\n// Checks for a two char token, otherwise matches a single character\n// token. This is used whenever a two char token overlaps a single\n// char token, e.g. \"||\" -> tPipe, \"|\" -> tOr.\nfunc (lexer *Lexer) matchOrElse(first rune, second rune, matchedType tokType, singleCharType tokType) token {\n\tstart := lexer.currentPos - lexer.lastWidth\n\tnextRune := lexer.next()\n\tvar t token\n\tif nextRune == second {\n\t\tt = token{\n\t\t\ttokenType: matchedType,\n\t\t\tvalue:     string(first) + string(second),\n\t\t\tposition:  start,\n\t\t\tlength:    2,\n\t\t}\n\t} else {\n\t\tlexer.back()\n\t\tt = token{\n\t\t\ttokenType: singleCharType,\n\t\t\tvalue:     string(first),\n\t\t\tposition:  start,\n\t\t\tlength:    1,\n\t\t}\n\t}\n\treturn t\n}\n\nfunc (lexer *Lexer) consumeLBracket() token {\n\t// There's three options here:\n\t// 1. A filter expression \"[?\"\n\t// 2. A flatten operator \"[]\"\n\t// 3. A bare rbracket \"[\"\n\tstart := lexer.currentPos - lexer.lastWidth\n\tnextRune := lexer.next()\n\tvar t token\n\tif nextRune == '?' {\n\t\tt = token{\n\t\t\ttokenType: tFilter,\n\t\t\tvalue:     \"[?\",\n\t\t\tposition:  start,\n\t\t\tlength:    2,\n\t\t}\n\t} else if nextRune == ']' {\n\t\tt = token{\n\t\t\ttokenType: tFlatten,\n\t\t\tvalue:     \"[]\",\n\t\t\tposition:  start,\n\t\t\tlength:    2,\n\t\t}\n\t} else {\n\t\tt = token{\n\t\t\ttokenType: tLbracket,\n\t\t\tvalue:     \"[\",\n\t\t\tposition:  start,\n\t\t\tlength:    1,\n\t\t}\n\t\tlexer.back()\n\t}\n\treturn t\n}\n\nfunc (lexer *Lexer) consumeQuotedIdentifier() (token, error) {\n\tstart := lexer.currentPos\n\tvalue, err := lexer.consumeUntil('\"')\n\tif err != nil {\n\t\treturn token{}, err\n\t}\n\tvar decoded string\n\tasJSON := []byte(\"\\\"\" + value + \"\\\"\")\n\tif err := json.Unmarshal([]byte(asJSON), &decoded); err != nil {\n\t\treturn token{}, err\n\t}\n\treturn token{\n\t\ttokenType: tQuotedIdentifier,\n\t\tvalue:     decoded,\n\t\tposition:  start - 1,\n\t\tlength:    len(decoded),\n\t}, nil\n}\n\nfunc (lexer *Lexer) consumeUnquotedIdentifier() token {\n\t// Consume runes until we reach the end of an unquoted\n\t// identifier.\n\tstart := lexer.currentPos - lexer.lastWidth\n\tfor {\n\t\tr := lexer.next()\n\t\tif r < 0 || r > 128 || identifierTrailingBits[uint64(r)/64]&(1<<(uint64(r)%64)) == 0 {\n\t\t\tlexer.back()\n\t\t\tbreak\n\t\t}\n\t}\n\tvalue := lexer.expression[start:lexer.currentPos]\n\treturn token{\n\t\ttokenType: tUnquotedIdentifier,\n\t\tvalue:     value,\n\t\tposition:  start,\n\t\tlength:    lexer.currentPos - start,\n\t}\n}\n\nfunc (lexer *Lexer) consumeNumber() token {\n\t// Consume runes until we reach something that's not a number.\n\tstart := lexer.currentPos - lexer.lastWidth\n\tfor {\n\t\tr := lexer.next()\n\t\tif r < '0' || r > '9' {\n\t\t\tlexer.back()\n\t\t\tbreak\n\t\t}\n\t}\n\tvalue := lexer.expression[start:lexer.currentPos]\n\treturn token{\n\t\ttokenType: tNumber,\n\t\tvalue:     value,\n\t\tposition:  start,\n\t\tlength:    lexer.currentPos - start,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/jmespath/go-jmespath/parser.go",
    "content": "package jmespath\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype astNodeType int\n\n//go:generate stringer -type astNodeType\nconst (\n\tASTEmpty astNodeType = iota\n\tASTComparator\n\tASTCurrentNode\n\tASTExpRef\n\tASTFunctionExpression\n\tASTField\n\tASTFilterProjection\n\tASTFlatten\n\tASTIdentity\n\tASTIndex\n\tASTIndexExpression\n\tASTKeyValPair\n\tASTLiteral\n\tASTMultiSelectHash\n\tASTMultiSelectList\n\tASTOrExpression\n\tASTAndExpression\n\tASTNotExpression\n\tASTPipe\n\tASTProjection\n\tASTSubexpression\n\tASTSlice\n\tASTValueProjection\n)\n\n// ASTNode represents the abstract syntax tree of a JMESPath expression.\ntype ASTNode struct {\n\tnodeType astNodeType\n\tvalue    interface{}\n\tchildren []ASTNode\n}\n\nfunc (node ASTNode) String() string {\n\treturn node.PrettyPrint(0)\n}\n\n// PrettyPrint will pretty print the parsed AST.\n// The AST is an implementation detail and this pretty print\n// function is provided as a convenience method to help with\n// debugging.  You should not rely on its output as the internal\n// structure of the AST may change at any time.\nfunc (node ASTNode) PrettyPrint(indent int) string {\n\tspaces := strings.Repeat(\" \", indent)\n\toutput := fmt.Sprintf(\"%s%s {\\n\", spaces, node.nodeType)\n\tnextIndent := indent + 2\n\tif node.value != nil {\n\t\tif converted, ok := node.value.(fmt.Stringer); ok {\n\t\t\t// Account for things like comparator nodes\n\t\t\t// that are enums with a String() method.\n\t\t\toutput += fmt.Sprintf(\"%svalue: %s\\n\", strings.Repeat(\" \", nextIndent), converted.String())\n\t\t} else {\n\t\t\toutput += fmt.Sprintf(\"%svalue: %#v\\n\", strings.Repeat(\" \", nextIndent), node.value)\n\t\t}\n\t}\n\tlastIndex := len(node.children)\n\tif lastIndex > 0 {\n\t\toutput += fmt.Sprintf(\"%schildren: {\\n\", strings.Repeat(\" \", nextIndent))\n\t\tchildIndent := nextIndent + 2\n\t\tfor _, elem := range node.children {\n\t\t\toutput += elem.PrettyPrint(childIndent)\n\t\t}\n\t}\n\toutput += fmt.Sprintf(\"%s}\\n\", spaces)\n\treturn output\n}\n\nvar bindingPowers = map[tokType]int{\n\ttEOF:                0,\n\ttUnquotedIdentifier: 0,\n\ttQuotedIdentifier:   0,\n\ttRbracket:           0,\n\ttRparen:             0,\n\ttComma:              0,\n\ttRbrace:             0,\n\ttNumber:             0,\n\ttCurrent:            0,\n\ttExpref:             0,\n\ttColon:              0,\n\ttPipe:               1,\n\ttOr:                 2,\n\ttAnd:                3,\n\ttEQ:                 5,\n\ttLT:                 5,\n\ttLTE:                5,\n\ttGT:                 5,\n\ttGTE:                5,\n\ttNE:                 5,\n\ttFlatten:            9,\n\ttStar:               20,\n\ttFilter:             21,\n\ttDot:                40,\n\ttNot:                45,\n\ttLbrace:             50,\n\ttLbracket:           55,\n\ttLparen:             60,\n}\n\n// Parser holds state about the current expression being parsed.\ntype Parser struct {\n\texpression string\n\ttokens     []token\n\tindex      int\n}\n\n// NewParser creates a new JMESPath parser.\nfunc NewParser() *Parser {\n\tp := Parser{}\n\treturn &p\n}\n\n// Parse will compile a JMESPath expression.\nfunc (p *Parser) Parse(expression string) (ASTNode, error) {\n\tlexer := NewLexer()\n\tp.expression = expression\n\tp.index = 0\n\ttokens, err := lexer.tokenize(expression)\n\tif err != nil {\n\t\treturn ASTNode{}, err\n\t}\n\tp.tokens = tokens\n\tparsed, err := p.parseExpression(0)\n\tif err != nil {\n\t\treturn ASTNode{}, err\n\t}\n\tif p.current() != tEOF {\n\t\treturn ASTNode{}, p.syntaxError(fmt.Sprintf(\n\t\t\t\"Unexpected token at the end of the expression: %s\", p.current()))\n\t}\n\treturn parsed, nil\n}\n\nfunc (p *Parser) parseExpression(bindingPower int) (ASTNode, error) {\n\tvar err error\n\tleftToken := p.lookaheadToken(0)\n\tp.advance()\n\tleftNode, err := p.nud(leftToken)\n\tif err != nil {\n\t\treturn ASTNode{}, err\n\t}\n\tcurrentToken := p.current()\n\tfor bindingPower < bindingPowers[currentToken] {\n\t\tp.advance()\n\t\tleftNode, err = p.led(currentToken, leftNode)\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\tcurrentToken = p.current()\n\t}\n\treturn leftNode, nil\n}\n\nfunc (p *Parser) parseIndexExpression() (ASTNode, error) {\n\tif p.lookahead(0) == tColon || p.lookahead(1) == tColon {\n\t\treturn p.parseSliceExpression()\n\t}\n\tindexStr := p.lookaheadToken(0).value\n\tparsedInt, err := strconv.Atoi(indexStr)\n\tif err != nil {\n\t\treturn ASTNode{}, err\n\t}\n\tindexNode := ASTNode{nodeType: ASTIndex, value: parsedInt}\n\tp.advance()\n\tif err := p.match(tRbracket); err != nil {\n\t\treturn ASTNode{}, err\n\t}\n\treturn indexNode, nil\n}\n\nfunc (p *Parser) parseSliceExpression() (ASTNode, error) {\n\tparts := []*int{nil, nil, nil}\n\tindex := 0\n\tcurrent := p.current()\n\tfor current != tRbracket && index < 3 {\n\t\tif current == tColon {\n\t\t\tindex++\n\t\t\tp.advance()\n\t\t} else if current == tNumber {\n\t\t\tparsedInt, err := strconv.Atoi(p.lookaheadToken(0).value)\n\t\t\tif err != nil {\n\t\t\t\treturn ASTNode{}, err\n\t\t\t}\n\t\t\tparts[index] = &parsedInt\n\t\t\tp.advance()\n\t\t} else {\n\t\t\treturn ASTNode{}, p.syntaxError(\n\t\t\t\t\"Expected tColon or tNumber\" + \", received: \" + p.current().String())\n\t\t}\n\t\tcurrent = p.current()\n\t}\n\tif err := p.match(tRbracket); err != nil {\n\t\treturn ASTNode{}, err\n\t}\n\treturn ASTNode{\n\t\tnodeType: ASTSlice,\n\t\tvalue:    parts,\n\t}, nil\n}\n\nfunc (p *Parser) match(tokenType tokType) error {\n\tif p.current() == tokenType {\n\t\tp.advance()\n\t\treturn nil\n\t}\n\treturn p.syntaxError(\"Expected \" + tokenType.String() + \", received: \" + p.current().String())\n}\n\nfunc (p *Parser) led(tokenType tokType, node ASTNode) (ASTNode, error) {\n\tswitch tokenType {\n\tcase tDot:\n\t\tif p.current() != tStar {\n\t\t\tright, err := p.parseDotRHS(bindingPowers[tDot])\n\t\t\treturn ASTNode{\n\t\t\t\tnodeType: ASTSubexpression,\n\t\t\t\tchildren: []ASTNode{node, right},\n\t\t\t}, err\n\t\t}\n\t\tp.advance()\n\t\tright, err := p.parseProjectionRHS(bindingPowers[tDot])\n\t\treturn ASTNode{\n\t\t\tnodeType: ASTValueProjection,\n\t\t\tchildren: []ASTNode{node, right},\n\t\t}, err\n\tcase tPipe:\n\t\tright, err := p.parseExpression(bindingPowers[tPipe])\n\t\treturn ASTNode{nodeType: ASTPipe, children: []ASTNode{node, right}}, err\n\tcase tOr:\n\t\tright, err := p.parseExpression(bindingPowers[tOr])\n\t\treturn ASTNode{nodeType: ASTOrExpression, children: []ASTNode{node, right}}, err\n\tcase tAnd:\n\t\tright, err := p.parseExpression(bindingPowers[tAnd])\n\t\treturn ASTNode{nodeType: ASTAndExpression, children: []ASTNode{node, right}}, err\n\tcase tLparen:\n\t\tname := node.value\n\t\tvar args []ASTNode\n\t\tfor p.current() != tRparen {\n\t\t\texpression, err := p.parseExpression(0)\n\t\t\tif err != nil {\n\t\t\t\treturn ASTNode{}, err\n\t\t\t}\n\t\t\tif p.current() == tComma {\n\t\t\t\tif err := p.match(tComma); err != nil {\n\t\t\t\t\treturn ASTNode{}, err\n\t\t\t\t}\n\t\t\t}\n\t\t\targs = append(args, expression)\n\t\t}\n\t\tif err := p.match(tRparen); err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\treturn ASTNode{\n\t\t\tnodeType: ASTFunctionExpression,\n\t\t\tvalue:    name,\n\t\t\tchildren: args,\n\t\t}, nil\n\tcase tFilter:\n\t\treturn p.parseFilter(node)\n\tcase tFlatten:\n\t\tleft := ASTNode{nodeType: ASTFlatten, children: []ASTNode{node}}\n\t\tright, err := p.parseProjectionRHS(bindingPowers[tFlatten])\n\t\treturn ASTNode{\n\t\t\tnodeType: ASTProjection,\n\t\t\tchildren: []ASTNode{left, right},\n\t\t}, err\n\tcase tEQ, tNE, tGT, tGTE, tLT, tLTE:\n\t\tright, err := p.parseExpression(bindingPowers[tokenType])\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\treturn ASTNode{\n\t\t\tnodeType: ASTComparator,\n\t\t\tvalue:    tokenType,\n\t\t\tchildren: []ASTNode{node, right},\n\t\t}, nil\n\tcase tLbracket:\n\t\ttokenType := p.current()\n\t\tvar right ASTNode\n\t\tvar err error\n\t\tif tokenType == tNumber || tokenType == tColon {\n\t\t\tright, err = p.parseIndexExpression()\n\t\t\tif err != nil {\n\t\t\t\treturn ASTNode{}, err\n\t\t\t}\n\t\t\treturn p.projectIfSlice(node, right)\n\t\t}\n\t\t// Otherwise this is a projection.\n\t\tif err := p.match(tStar); err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\tif err := p.match(tRbracket); err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\tright, err = p.parseProjectionRHS(bindingPowers[tStar])\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\treturn ASTNode{\n\t\t\tnodeType: ASTProjection,\n\t\t\tchildren: []ASTNode{node, right},\n\t\t}, nil\n\t}\n\treturn ASTNode{}, p.syntaxError(\"Unexpected token: \" + tokenType.String())\n}\n\nfunc (p *Parser) nud(token token) (ASTNode, error) {\n\tswitch token.tokenType {\n\tcase tJSONLiteral:\n\t\tvar parsed interface{}\n\t\terr := json.Unmarshal([]byte(token.value), &parsed)\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\treturn ASTNode{nodeType: ASTLiteral, value: parsed}, nil\n\tcase tStringLiteral:\n\t\treturn ASTNode{nodeType: ASTLiteral, value: token.value}, nil\n\tcase tUnquotedIdentifier:\n\t\treturn ASTNode{\n\t\t\tnodeType: ASTField,\n\t\t\tvalue:    token.value,\n\t\t}, nil\n\tcase tQuotedIdentifier:\n\t\tnode := ASTNode{nodeType: ASTField, value: token.value}\n\t\tif p.current() == tLparen {\n\t\t\treturn ASTNode{}, p.syntaxErrorToken(\"Can't have quoted identifier as function name.\", token)\n\t\t}\n\t\treturn node, nil\n\tcase tStar:\n\t\tleft := ASTNode{nodeType: ASTIdentity}\n\t\tvar right ASTNode\n\t\tvar err error\n\t\tif p.current() == tRbracket {\n\t\t\tright = ASTNode{nodeType: ASTIdentity}\n\t\t} else {\n\t\t\tright, err = p.parseProjectionRHS(bindingPowers[tStar])\n\t\t}\n\t\treturn ASTNode{nodeType: ASTValueProjection, children: []ASTNode{left, right}}, err\n\tcase tFilter:\n\t\treturn p.parseFilter(ASTNode{nodeType: ASTIdentity})\n\tcase tLbrace:\n\t\treturn p.parseMultiSelectHash()\n\tcase tFlatten:\n\t\tleft := ASTNode{\n\t\t\tnodeType: ASTFlatten,\n\t\t\tchildren: []ASTNode{{nodeType: ASTIdentity}},\n\t\t}\n\t\tright, err := p.parseProjectionRHS(bindingPowers[tFlatten])\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\treturn ASTNode{nodeType: ASTProjection, children: []ASTNode{left, right}}, nil\n\tcase tLbracket:\n\t\ttokenType := p.current()\n\t\t//var right ASTNode\n\t\tif tokenType == tNumber || tokenType == tColon {\n\t\t\tright, err := p.parseIndexExpression()\n\t\t\tif err != nil {\n\t\t\t\treturn ASTNode{}, nil\n\t\t\t}\n\t\t\treturn p.projectIfSlice(ASTNode{nodeType: ASTIdentity}, right)\n\t\t} else if tokenType == tStar && p.lookahead(1) == tRbracket {\n\t\t\tp.advance()\n\t\t\tp.advance()\n\t\t\tright, err := p.parseProjectionRHS(bindingPowers[tStar])\n\t\t\tif err != nil {\n\t\t\t\treturn ASTNode{}, err\n\t\t\t}\n\t\t\treturn ASTNode{\n\t\t\t\tnodeType: ASTProjection,\n\t\t\t\tchildren: []ASTNode{{nodeType: ASTIdentity}, right},\n\t\t\t}, nil\n\t\t} else {\n\t\t\treturn p.parseMultiSelectList()\n\t\t}\n\tcase tCurrent:\n\t\treturn ASTNode{nodeType: ASTCurrentNode}, nil\n\tcase tExpref:\n\t\texpression, err := p.parseExpression(bindingPowers[tExpref])\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\treturn ASTNode{nodeType: ASTExpRef, children: []ASTNode{expression}}, nil\n\tcase tNot:\n\t\texpression, err := p.parseExpression(bindingPowers[tNot])\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\treturn ASTNode{nodeType: ASTNotExpression, children: []ASTNode{expression}}, nil\n\tcase tLparen:\n\t\texpression, err := p.parseExpression(0)\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\tif err := p.match(tRparen); err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\treturn expression, nil\n\tcase tEOF:\n\t\treturn ASTNode{}, p.syntaxErrorToken(\"Incomplete expression\", token)\n\t}\n\n\treturn ASTNode{}, p.syntaxErrorToken(\"Invalid token: \"+token.tokenType.String(), token)\n}\n\nfunc (p *Parser) parseMultiSelectList() (ASTNode, error) {\n\tvar expressions []ASTNode\n\tfor {\n\t\texpression, err := p.parseExpression(0)\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\texpressions = append(expressions, expression)\n\t\tif p.current() == tRbracket {\n\t\t\tbreak\n\t\t}\n\t\terr = p.match(tComma)\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t}\n\terr := p.match(tRbracket)\n\tif err != nil {\n\t\treturn ASTNode{}, err\n\t}\n\treturn ASTNode{\n\t\tnodeType: ASTMultiSelectList,\n\t\tchildren: expressions,\n\t}, nil\n}\n\nfunc (p *Parser) parseMultiSelectHash() (ASTNode, error) {\n\tvar children []ASTNode\n\tfor {\n\t\tkeyToken := p.lookaheadToken(0)\n\t\tif err := p.match(tUnquotedIdentifier); err != nil {\n\t\t\tif err := p.match(tQuotedIdentifier); err != nil {\n\t\t\t\treturn ASTNode{}, p.syntaxError(\"Expected tQuotedIdentifier or tUnquotedIdentifier\")\n\t\t\t}\n\t\t}\n\t\tkeyName := keyToken.value\n\t\terr := p.match(tColon)\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\tvalue, err := p.parseExpression(0)\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\tnode := ASTNode{\n\t\t\tnodeType: ASTKeyValPair,\n\t\t\tvalue:    keyName,\n\t\t\tchildren: []ASTNode{value},\n\t\t}\n\t\tchildren = append(children, node)\n\t\tif p.current() == tComma {\n\t\t\terr := p.match(tComma)\n\t\t\tif err != nil {\n\t\t\t\treturn ASTNode{}, nil\n\t\t\t}\n\t\t} else if p.current() == tRbrace {\n\t\t\terr := p.match(tRbrace)\n\t\t\tif err != nil {\n\t\t\t\treturn ASTNode{}, nil\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\treturn ASTNode{\n\t\tnodeType: ASTMultiSelectHash,\n\t\tchildren: children,\n\t}, nil\n}\n\nfunc (p *Parser) projectIfSlice(left ASTNode, right ASTNode) (ASTNode, error) {\n\tindexExpr := ASTNode{\n\t\tnodeType: ASTIndexExpression,\n\t\tchildren: []ASTNode{left, right},\n\t}\n\tif right.nodeType == ASTSlice {\n\t\tright, err := p.parseProjectionRHS(bindingPowers[tStar])\n\t\treturn ASTNode{\n\t\t\tnodeType: ASTProjection,\n\t\t\tchildren: []ASTNode{indexExpr, right},\n\t\t}, err\n\t}\n\treturn indexExpr, nil\n}\nfunc (p *Parser) parseFilter(node ASTNode) (ASTNode, error) {\n\tvar right, condition ASTNode\n\tvar err error\n\tcondition, err = p.parseExpression(0)\n\tif err != nil {\n\t\treturn ASTNode{}, err\n\t}\n\tif err := p.match(tRbracket); err != nil {\n\t\treturn ASTNode{}, err\n\t}\n\tif p.current() == tFlatten {\n\t\tright = ASTNode{nodeType: ASTIdentity}\n\t} else {\n\t\tright, err = p.parseProjectionRHS(bindingPowers[tFilter])\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t}\n\n\treturn ASTNode{\n\t\tnodeType: ASTFilterProjection,\n\t\tchildren: []ASTNode{node, right, condition},\n\t}, nil\n}\n\nfunc (p *Parser) parseDotRHS(bindingPower int) (ASTNode, error) {\n\tlookahead := p.current()\n\tif tokensOneOf([]tokType{tQuotedIdentifier, tUnquotedIdentifier, tStar}, lookahead) {\n\t\treturn p.parseExpression(bindingPower)\n\t} else if lookahead == tLbracket {\n\t\tif err := p.match(tLbracket); err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\treturn p.parseMultiSelectList()\n\t} else if lookahead == tLbrace {\n\t\tif err := p.match(tLbrace); err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\treturn p.parseMultiSelectHash()\n\t}\n\treturn ASTNode{}, p.syntaxError(\"Expected identifier, lbracket, or lbrace\")\n}\n\nfunc (p *Parser) parseProjectionRHS(bindingPower int) (ASTNode, error) {\n\tcurrent := p.current()\n\tif bindingPowers[current] < 10 {\n\t\treturn ASTNode{nodeType: ASTIdentity}, nil\n\t} else if current == tLbracket {\n\t\treturn p.parseExpression(bindingPower)\n\t} else if current == tFilter {\n\t\treturn p.parseExpression(bindingPower)\n\t} else if current == tDot {\n\t\terr := p.match(tDot)\n\t\tif err != nil {\n\t\t\treturn ASTNode{}, err\n\t\t}\n\t\treturn p.parseDotRHS(bindingPower)\n\t} else {\n\t\treturn ASTNode{}, p.syntaxError(\"Error\")\n\t}\n}\n\nfunc (p *Parser) lookahead(number int) tokType {\n\treturn p.lookaheadToken(number).tokenType\n}\n\nfunc (p *Parser) current() tokType {\n\treturn p.lookahead(0)\n}\n\nfunc (p *Parser) lookaheadToken(number int) token {\n\treturn p.tokens[p.index+number]\n}\n\nfunc (p *Parser) advance() {\n\tp.index++\n}\n\nfunc tokensOneOf(elements []tokType, token tokType) bool {\n\tfor _, elem := range elements {\n\t\tif elem == token {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (p *Parser) syntaxError(msg string) SyntaxError {\n\treturn SyntaxError{\n\t\tmsg:        msg,\n\t\tExpression: p.expression,\n\t\tOffset:     p.lookaheadToken(0).position,\n\t}\n}\n\n// Create a SyntaxError based on the provided token.\n// This differs from syntaxError() which creates a SyntaxError\n// based on the current lookahead token.\nfunc (p *Parser) syntaxErrorToken(msg string, t token) SyntaxError {\n\treturn SyntaxError{\n\t\tmsg:        msg,\n\t\tExpression: p.expression,\n\t\tOffset:     t.position,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/jmespath/go-jmespath/toktype_string.go",
    "content": "// generated by stringer -type=tokType; DO NOT EDIT\n\npackage jmespath\n\nimport \"fmt\"\n\nconst _tokType_name = \"tUnknowntStartDottFiltertFlattentLparentRparentLbrackettRbrackettLbracetRbracetOrtPipetNumbertUnquotedIdentifiertQuotedIdentifiertCommatColontLTtLTEtGTtGTEtEQtNEtJSONLiteraltStringLiteraltCurrenttExpreftAndtNottEOF\"\n\nvar _tokType_index = [...]uint8{0, 8, 13, 17, 24, 32, 39, 46, 55, 64, 71, 78, 81, 86, 93, 112, 129, 135, 141, 144, 148, 151, 155, 158, 161, 173, 187, 195, 202, 206, 210, 214}\n\nfunc (i tokType) String() string {\n\tif i < 0 || i >= tokType(len(_tokType_index)-1) {\n\t\treturn fmt.Sprintf(\"tokType(%d)\", i)\n\t}\n\treturn _tokType_name[_tokType_index[i]:_tokType_index[i+1]]\n}\n"
  },
  {
    "path": "vendor/github.com/jmespath/go-jmespath/util.go",
    "content": "package jmespath\n\nimport (\n\t\"errors\"\n\t\"reflect\"\n)\n\n// IsFalse determines if an object is false based on the JMESPath spec.\n// JMESPath defines false values to be any of:\n// - An empty string array, or hash.\n// - The boolean value false.\n// - nil\nfunc isFalse(value interface{}) bool {\n\tswitch v := value.(type) {\n\tcase bool:\n\t\treturn !v\n\tcase []interface{}:\n\t\treturn len(v) == 0\n\tcase map[string]interface{}:\n\t\treturn len(v) == 0\n\tcase string:\n\t\treturn len(v) == 0\n\tcase nil:\n\t\treturn true\n\t}\n\t// Try the reflection cases before returning false.\n\trv := reflect.ValueOf(value)\n\tswitch rv.Kind() {\n\tcase reflect.Struct:\n\t\t// A struct type will never be false, even if\n\t\t// all of its values are the zero type.\n\t\treturn false\n\tcase reflect.Slice, reflect.Map:\n\t\treturn rv.Len() == 0\n\tcase reflect.Ptr:\n\t\tif rv.IsNil() {\n\t\t\treturn true\n\t\t}\n\t\t// If it's a pointer type, we'll try to deref the pointer\n\t\t// and evaluate the pointer value for isFalse.\n\t\telement := rv.Elem()\n\t\treturn isFalse(element.Interface())\n\t}\n\treturn false\n}\n\n// ObjsEqual is a generic object equality check.\n// It will take two arbitrary objects and recursively determine\n// if they are equal.\nfunc objsEqual(left interface{}, right interface{}) bool {\n\treturn reflect.DeepEqual(left, right)\n}\n\n// SliceParam refers to a single part of a slice.\n// A slice consists of a start, a stop, and a step, similar to\n// python slices.\ntype sliceParam struct {\n\tN         int\n\tSpecified bool\n}\n\n// Slice supports [start:stop:step] style slicing that's supported in JMESPath.\nfunc slice(slice []interface{}, parts []sliceParam) ([]interface{}, error) {\n\tcomputed, err := computeSliceParams(len(slice), parts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tstart, stop, step := computed[0], computed[1], computed[2]\n\tresult := []interface{}{}\n\tif step > 0 {\n\t\tfor i := start; i < stop; i += step {\n\t\t\tresult = append(result, slice[i])\n\t\t}\n\t} else {\n\t\tfor i := start; i > stop; i += step {\n\t\t\tresult = append(result, slice[i])\n\t\t}\n\t}\n\treturn result, nil\n}\n\nfunc computeSliceParams(length int, parts []sliceParam) ([]int, error) {\n\tvar start, stop, step int\n\tif !parts[2].Specified {\n\t\tstep = 1\n\t} else if parts[2].N == 0 {\n\t\treturn nil, errors.New(\"Invalid slice, step cannot be 0\")\n\t} else {\n\t\tstep = parts[2].N\n\t}\n\tvar stepValueNegative bool\n\tif step < 0 {\n\t\tstepValueNegative = true\n\t} else {\n\t\tstepValueNegative = false\n\t}\n\n\tif !parts[0].Specified {\n\t\tif stepValueNegative {\n\t\t\tstart = length - 1\n\t\t} else {\n\t\t\tstart = 0\n\t\t}\n\t} else {\n\t\tstart = capSlice(length, parts[0].N, step)\n\t}\n\n\tif !parts[1].Specified {\n\t\tif stepValueNegative {\n\t\t\tstop = -1\n\t\t} else {\n\t\t\tstop = length\n\t\t}\n\t} else {\n\t\tstop = capSlice(length, parts[1].N, step)\n\t}\n\treturn []int{start, stop, step}, nil\n}\n\nfunc capSlice(length int, actual int, step int) int {\n\tif actual < 0 {\n\t\tactual += length\n\t\tif actual < 0 {\n\t\t\tif step < 0 {\n\t\t\t\tactual = -1\n\t\t\t} else {\n\t\t\t\tactual = 0\n\t\t\t}\n\t\t}\n\t} else if actual >= length {\n\t\tif step < 0 {\n\t\t\tactual = length - 1\n\t\t} else {\n\t\t\tactual = length\n\t\t}\n\t}\n\treturn actual\n}\n\n// ToArrayNum converts an empty interface type to a slice of float64.\n// If any element in the array cannot be converted, then nil is returned\n// along with a second value of false.\nfunc toArrayNum(data interface{}) ([]float64, bool) {\n\t// Is there a better way to do this with reflect?\n\tif d, ok := data.([]interface{}); ok {\n\t\tresult := make([]float64, len(d))\n\t\tfor i, el := range d {\n\t\t\titem, ok := el.(float64)\n\t\t\tif !ok {\n\t\t\t\treturn nil, false\n\t\t\t}\n\t\t\tresult[i] = item\n\t\t}\n\t\treturn result, true\n\t}\n\treturn nil, false\n}\n\n// ToArrayStr converts an empty interface type to a slice of strings.\n// If any element in the array cannot be converted, then nil is returned\n// along with a second value of false.  If the input data could be entirely\n// converted, then the converted data, along with a second value of true,\n// will be returned.\nfunc toArrayStr(data interface{}) ([]string, bool) {\n\t// Is there a better way to do this with reflect?\n\tif d, ok := data.([]interface{}); ok {\n\t\tresult := make([]string, len(d))\n\t\tfor i, el := range d {\n\t\t\titem, ok := el.(string)\n\t\t\tif !ok {\n\t\t\t\treturn nil, false\n\t\t\t}\n\t\t\tresult[i] = item\n\t\t}\n\t\treturn result, true\n\t}\n\treturn nil, false\n}\n\nfunc isSliceType(v interface{}) bool {\n\tif v == nil {\n\t\treturn false\n\t}\n\treturn reflect.TypeOf(v).Kind() == reflect.Slice\n}\n"
  },
  {
    "path": "vendor/github.com/kelseyhightower/memkv/.travis.yml",
    "content": "language: go\n\ngo:\n  - 1.8\n  - tip\n"
  },
  {
    "path": "vendor/github.com/kelseyhightower/memkv/LICENSE",
    "content": "Copyright (c) 2014 Kelsey Hightower\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/kelseyhightower/memkv/README.md",
    "content": "# memkv\n\nSimple in memory k/v store.\n\n[![Build Status](https://travis-ci.org/kelseyhightower/memkv.svg)](https://travis-ci.org/kelseyhightower/memkv) [![GoDoc](https://godoc.org/github.com/kelseyhightower/memkv?status.png)](https://godoc.org/github.com/kelseyhightower/memkv)\n\n## Usage\n\n```Go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\n\t\"github.com/kelseyhightower/memkv\"\n)\n\nfunc main() {\n\ts := memkv.New()\n\ts.Set(\"/myapp/database/username\", \"admin\")\n\ts.Set(\"/myapp/database/password\", \"123456789\")\n\ts.Set(\"/myapp/port\", \"80\")\n\tkv, err := s.Get(\"/myapp/database/username\")\t\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"Key: %s, Value: %s\\n\", kv.Key, kv.Value)\n\tks, err := s.GetAll(\"/myapp/*/*\")\n\tif err == nil {\n\t\tfor _, kv := range ks {\n\t\t\tfmt.Printf(\"Key: %s, Value: %s\\n\", kv.Key, kv.Value)\n\t\t}\n\t}\n}\n```\n\n---\n\n```\nKey: /myapp/database/username, Value: admin\nKey: /myapp/database/password, Value: 123456789\nKey: /myapp/database/username, Value: admin\n```\n"
  },
  {
    "path": "vendor/github.com/kelseyhightower/memkv/kvpair.go",
    "content": "package memkv\n\ntype KVPair struct {\n\tKey   string\n\tValue string\n}\n\ntype KVPairs []KVPair\n\nfunc (ks KVPairs) Len() int {\n\treturn len(ks)\n}\n\nfunc (ks KVPairs) Less(i, j int) bool {\n\treturn ks[i].Key < ks[j].Key\n}\n\nfunc (ks KVPairs) Swap(i, j int) {\n\tks[i], ks[j] = ks[j], ks[i]\n}\n"
  },
  {
    "path": "vendor/github.com/kelseyhightower/memkv/store.go",
    "content": "// Copyright 2014 Kelsey Hightower. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license found in the LICENSE file.\n\n// Package memkv implements an in-memory key/value store.\npackage memkv\n\nimport (\n\t\"errors\"\n\t\"path\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n)\n\nvar ErrNotExist = errors.New(\"key does not exist\")\nvar ErrNoMatch = errors.New(\"no keys match\")\n\ntype KeyError struct {\n\tKey string\n\tErr error\n}\n\nfunc (e *KeyError) Error() string {\n\treturn e.Err.Error() + \": \" + e.Key\n}\n\n// A Store represents an in-memory key-value store safe for\n// concurrent access.\ntype Store struct {\n\tFuncMap map[string]interface{}\n\tsync.RWMutex\n\tm map[string]KVPair\n}\n\n// New creates and initializes a new Store.\nfunc New() Store {\n\ts := Store{m: make(map[string]KVPair)}\n\ts.FuncMap = map[string]interface{}{\n\t\t\"exists\": s.Exists,\n\t\t\"ls\":     s.List,\n\t\t\"lsdir\":  s.ListDir,\n\t\t\"get\":    s.Get,\n\t\t\"gets\":   s.GetAll,\n\t\t\"getv\":   s.GetValue,\n\t\t\"getvs\":  s.GetAllValues,\n\t}\n\treturn s\n}\n\n// Delete deletes the KVPair associated with key.\nfunc (s Store) Del(key string) {\n\ts.Lock()\n\tdelete(s.m, key)\n\ts.Unlock()\n}\n\n// Exists checks for the existence of key in the store.\nfunc (s Store) Exists(key string) bool {\n\t_, err := s.Get(key)\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Get gets the KVPair associated with key. If there is no KVPair\n// associated with key, Get returns KVPair{}, ErrNotExist.\nfunc (s Store) Get(key string) (KVPair, error) {\n\ts.RLock()\n\tkv, ok := s.m[key]\n\ts.RUnlock()\n\tif !ok {\n\t\treturn kv, &KeyError{key, ErrNotExist}\n\t}\n\treturn kv, nil\n}\n\n// GetValue gets the value associated with key. If there are no values\n// associated with key, GetValue returns \"\", ErrNotExist.\nfunc (s Store) GetValue(key string, v ...string) (string, error) {\n\tkv, err := s.Get(key)\n\tif err != nil {\n\t\tif len(v) > 0 {\n\t\t\t// Take default\n\t\t\treturn v[0], nil\n\t\t}\n\t\treturn \"\", err\n\t}\n\treturn kv.Value, nil\n}\n\n// GetAll returns a KVPair for all nodes with keys matching pattern.\n// The syntax of patterns is the same as in path.Match.\nfunc (s Store) GetAll(pattern string) (KVPairs, error) {\n\tks := make(KVPairs, 0)\n\ts.RLock()\n\tdefer s.RUnlock()\n\tfor _, kv := range s.m {\n\t\tm, err := path.Match(pattern, kv.Key)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m {\n\t\t\tks = append(ks, kv)\n\t\t}\n\t}\n\tif len(ks) == 0 {\n\t\treturn ks, nil\n\t}\n\tsort.Sort(ks)\n\treturn ks, nil\n}\n\nfunc (s Store) GetAllValues(pattern string) ([]string, error) {\n\tvs := make([]string, 0)\n\tks, err := s.GetAll(pattern)\n\tif err != nil {\n\t\treturn vs, err\n\t}\n\tif len(ks) == 0 {\n\t\treturn vs, nil\n\t}\n\tfor _, kv := range ks {\n\t\tvs = append(vs, kv.Value)\n\t}\n\tsort.Strings(vs)\n\treturn vs, nil\n}\n\nfunc (s Store) List(filePath string) []string {\n\tvs := make([]string, 0)\n\tm := make(map[string]bool)\n\ts.RLock()\n\tdefer s.RUnlock()\n\tprefix := pathToTerms(filePath)\n\tfor _, kv := range s.m {\n\t\tif kv.Key == filePath {\n\t\t\tm[path.Base(kv.Key)] = true\n\t\t\tcontinue\n\t\t}\n\t\ttarget := pathToTerms(path.Dir(kv.Key))\n\t\tif samePrefixTerms(prefix, target) {\n\t\t\tm[strings.Split(stripKey(kv.Key, filePath), \"/\")[0]] = true\n\t\t}\n\t}\n\tfor k := range m {\n\t\tvs = append(vs, k)\n\t}\n\tsort.Strings(vs)\n\treturn vs\n}\n\nfunc (s Store) ListDir(filePath string) []string {\n\tvs := make([]string, 0)\n\tm := make(map[string]bool)\n\ts.RLock()\n\tdefer s.RUnlock()\n\tprefix := pathToTerms(filePath)\n\tfor _, kv := range s.m {\n\t\tif strings.HasPrefix(kv.Key, filePath) {\n\t\t\titems := pathToTerms(path.Dir(kv.Key))\n\t\t\tif samePrefixTerms(prefix, items) && (len(items)-len(prefix) >= 1) {\n\t\t\t\tm[items[len(prefix):][0]] = true\n\t\t\t}\n\t\t}\n\t}\n\tfor k := range m {\n\t\tvs = append(vs, k)\n\t}\n\tsort.Strings(vs)\n\treturn vs\n}\n\n// Set sets the KVPair entry associated with key to value.\nfunc (s Store) Set(key string, value string) {\n\ts.Lock()\n\ts.m[key] = KVPair{key, value}\n\ts.Unlock()\n}\n\nfunc (s Store) Purge() {\n\ts.Lock()\n\tfor k := range s.m {\n\t\tdelete(s.m, k)\n\t}\n\ts.Unlock()\n}\n\nfunc stripKey(key, prefix string) string {\n\treturn strings.TrimPrefix(strings.TrimPrefix(key, prefix), \"/\")\n}\n\nfunc pathToTerms(filePath string) []string {\n\treturn strings.Split(path.Clean(filePath), \"/\")\n}\n\nfunc samePrefixTerms(prefix, test []string) bool {\n\tif len(test) < len(prefix) {\n\t\treturn false\n\t}\n\tfor i := 0; i < len(prefix); i++ {\n\t\tif prefix[i] != test[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/mattn/go-colorable/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 Yasuhiro Matsumoto\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/mattn/go-colorable/README.md",
    "content": "# go-colorable\n\n[![Build Status](https://github.com/mattn/go-colorable/workflows/test/badge.svg)](https://github.com/mattn/go-colorable/actions?query=workflow%3Atest)\n[![Codecov](https://codecov.io/gh/mattn/go-colorable/branch/master/graph/badge.svg)](https://codecov.io/gh/mattn/go-colorable)\n[![GoDoc](https://godoc.org/github.com/mattn/go-colorable?status.svg)](http://godoc.org/github.com/mattn/go-colorable)\n[![Go Report Card](https://goreportcard.com/badge/mattn/go-colorable)](https://goreportcard.com/report/mattn/go-colorable)\n\nColorable writer for windows.\n\nFor example, most of logger packages doesn't show colors on windows. (I know we can do it with ansicon. But I don't want.)\nThis package is possible to handle escape sequence for ansi color on windows.\n\n## Too Bad!\n\n![](https://raw.githubusercontent.com/mattn/go-colorable/gh-pages/bad.png)\n\n\n## So Good!\n\n![](https://raw.githubusercontent.com/mattn/go-colorable/gh-pages/good.png)\n\n## Usage\n\n```go\nlogrus.SetFormatter(&logrus.TextFormatter{ForceColors: true})\nlogrus.SetOutput(colorable.NewColorableStdout())\n\nlogrus.Info(\"succeeded\")\nlogrus.Warn(\"not correct\")\nlogrus.Error(\"something error\")\nlogrus.Fatal(\"panic\")\n```\n\nYou can compile above code on non-windows OSs.\n\n## Installation\n\n```\n$ go get github.com/mattn/go-colorable\n```\n\n# License\n\nMIT\n\n# Author\n\nYasuhiro Matsumoto (a.k.a mattn)\n"
  },
  {
    "path": "vendor/github.com/mattn/go-colorable/colorable_appengine.go",
    "content": "//go:build appengine\n// +build appengine\n\npackage colorable\n\nimport (\n\t\"io\"\n\t\"os\"\n\n\t_ \"github.com/mattn/go-isatty\"\n)\n\n// NewColorable returns new instance of Writer which handles escape sequence.\nfunc NewColorable(file *os.File) io.Writer {\n\tif file == nil {\n\t\tpanic(\"nil passed instead of *os.File to NewColorable()\")\n\t}\n\n\treturn file\n}\n\n// NewColorableStdout returns new instance of Writer which handles escape sequence for stdout.\nfunc NewColorableStdout() io.Writer {\n\treturn os.Stdout\n}\n\n// NewColorableStderr returns new instance of Writer which handles escape sequence for stderr.\nfunc NewColorableStderr() io.Writer {\n\treturn os.Stderr\n}\n\n// EnableColorsStdout enable colors if possible.\nfunc EnableColorsStdout(enabled *bool) func() {\n\tif enabled != nil {\n\t\t*enabled = true\n\t}\n\treturn func() {}\n}\n"
  },
  {
    "path": "vendor/github.com/mattn/go-colorable/colorable_others.go",
    "content": "//go:build !windows && !appengine\n// +build !windows,!appengine\n\npackage colorable\n\nimport (\n\t\"io\"\n\t\"os\"\n\n\t_ \"github.com/mattn/go-isatty\"\n)\n\n// NewColorable returns new instance of Writer which handles escape sequence.\nfunc NewColorable(file *os.File) io.Writer {\n\tif file == nil {\n\t\tpanic(\"nil passed instead of *os.File to NewColorable()\")\n\t}\n\n\treturn file\n}\n\n// NewColorableStdout returns new instance of Writer which handles escape sequence for stdout.\nfunc NewColorableStdout() io.Writer {\n\treturn os.Stdout\n}\n\n// NewColorableStderr returns new instance of Writer which handles escape sequence for stderr.\nfunc NewColorableStderr() io.Writer {\n\treturn os.Stderr\n}\n\n// EnableColorsStdout enable colors if possible.\nfunc EnableColorsStdout(enabled *bool) func() {\n\tif enabled != nil {\n\t\t*enabled = true\n\t}\n\treturn func() {}\n}\n"
  },
  {
    "path": "vendor/github.com/mattn/go-colorable/colorable_windows.go",
    "content": "//go:build windows && !appengine\n// +build windows,!appengine\n\npackage colorable\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"math\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/mattn/go-isatty\"\n)\n\nconst (\n\tforegroundBlue      = 0x1\n\tforegroundGreen     = 0x2\n\tforegroundRed       = 0x4\n\tforegroundIntensity = 0x8\n\tforegroundMask      = (foregroundRed | foregroundBlue | foregroundGreen | foregroundIntensity)\n\tbackgroundBlue      = 0x10\n\tbackgroundGreen     = 0x20\n\tbackgroundRed       = 0x40\n\tbackgroundIntensity = 0x80\n\tbackgroundMask      = (backgroundRed | backgroundBlue | backgroundGreen | backgroundIntensity)\n\tcommonLvbUnderscore = 0x8000\n\n\tcENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4\n)\n\nconst (\n\tgenericRead  = 0x80000000\n\tgenericWrite = 0x40000000\n)\n\nconst (\n\tconsoleTextmodeBuffer = 0x1\n)\n\ntype wchar uint16\ntype short int16\ntype dword uint32\ntype word uint16\n\ntype coord struct {\n\tx short\n\ty short\n}\n\ntype smallRect struct {\n\tleft   short\n\ttop    short\n\tright  short\n\tbottom short\n}\n\ntype consoleScreenBufferInfo struct {\n\tsize              coord\n\tcursorPosition    coord\n\tattributes        word\n\twindow            smallRect\n\tmaximumWindowSize coord\n}\n\ntype consoleCursorInfo struct {\n\tsize    dword\n\tvisible int32\n}\n\nvar (\n\tkernel32                       = syscall.NewLazyDLL(\"kernel32.dll\")\n\tprocGetConsoleScreenBufferInfo = kernel32.NewProc(\"GetConsoleScreenBufferInfo\")\n\tprocSetConsoleTextAttribute    = kernel32.NewProc(\"SetConsoleTextAttribute\")\n\tprocSetConsoleCursorPosition   = kernel32.NewProc(\"SetConsoleCursorPosition\")\n\tprocFillConsoleOutputCharacter = kernel32.NewProc(\"FillConsoleOutputCharacterW\")\n\tprocFillConsoleOutputAttribute = kernel32.NewProc(\"FillConsoleOutputAttribute\")\n\tprocGetConsoleCursorInfo       = kernel32.NewProc(\"GetConsoleCursorInfo\")\n\tprocSetConsoleCursorInfo       = kernel32.NewProc(\"SetConsoleCursorInfo\")\n\tprocSetConsoleTitle            = kernel32.NewProc(\"SetConsoleTitleW\")\n\tprocGetConsoleMode             = kernel32.NewProc(\"GetConsoleMode\")\n\tprocSetConsoleMode             = kernel32.NewProc(\"SetConsoleMode\")\n\tprocCreateConsoleScreenBuffer  = kernel32.NewProc(\"CreateConsoleScreenBuffer\")\n)\n\n// Writer provides colorable Writer to the console\ntype Writer struct {\n\tout       io.Writer\n\thandle    syscall.Handle\n\talthandle syscall.Handle\n\toldattr   word\n\toldpos    coord\n\trest      bytes.Buffer\n\tmutex     sync.Mutex\n}\n\n// NewColorable returns new instance of Writer which handles escape sequence from File.\nfunc NewColorable(file *os.File) io.Writer {\n\tif file == nil {\n\t\tpanic(\"nil passed instead of *os.File to NewColorable()\")\n\t}\n\n\tif isatty.IsTerminal(file.Fd()) {\n\t\tvar mode uint32\n\t\tif r, _, _ := procGetConsoleMode.Call(file.Fd(), uintptr(unsafe.Pointer(&mode))); r != 0 && mode&cENABLE_VIRTUAL_TERMINAL_PROCESSING != 0 {\n\t\t\treturn file\n\t\t}\n\t\tvar csbi consoleScreenBufferInfo\n\t\thandle := syscall.Handle(file.Fd())\n\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\treturn &Writer{out: file, handle: handle, oldattr: csbi.attributes, oldpos: coord{0, 0}}\n\t}\n\treturn file\n}\n\n// NewColorableStdout returns new instance of Writer which handles escape sequence for stdout.\nfunc NewColorableStdout() io.Writer {\n\treturn NewColorable(os.Stdout)\n}\n\n// NewColorableStderr returns new instance of Writer which handles escape sequence for stderr.\nfunc NewColorableStderr() io.Writer {\n\treturn NewColorable(os.Stderr)\n}\n\nvar color256 = map[int]int{\n\t0:   0x000000,\n\t1:   0x800000,\n\t2:   0x008000,\n\t3:   0x808000,\n\t4:   0x000080,\n\t5:   0x800080,\n\t6:   0x008080,\n\t7:   0xc0c0c0,\n\t8:   0x808080,\n\t9:   0xff0000,\n\t10:  0x00ff00,\n\t11:  0xffff00,\n\t12:  0x0000ff,\n\t13:  0xff00ff,\n\t14:  0x00ffff,\n\t15:  0xffffff,\n\t16:  0x000000,\n\t17:  0x00005f,\n\t18:  0x000087,\n\t19:  0x0000af,\n\t20:  0x0000d7,\n\t21:  0x0000ff,\n\t22:  0x005f00,\n\t23:  0x005f5f,\n\t24:  0x005f87,\n\t25:  0x005faf,\n\t26:  0x005fd7,\n\t27:  0x005fff,\n\t28:  0x008700,\n\t29:  0x00875f,\n\t30:  0x008787,\n\t31:  0x0087af,\n\t32:  0x0087d7,\n\t33:  0x0087ff,\n\t34:  0x00af00,\n\t35:  0x00af5f,\n\t36:  0x00af87,\n\t37:  0x00afaf,\n\t38:  0x00afd7,\n\t39:  0x00afff,\n\t40:  0x00d700,\n\t41:  0x00d75f,\n\t42:  0x00d787,\n\t43:  0x00d7af,\n\t44:  0x00d7d7,\n\t45:  0x00d7ff,\n\t46:  0x00ff00,\n\t47:  0x00ff5f,\n\t48:  0x00ff87,\n\t49:  0x00ffaf,\n\t50:  0x00ffd7,\n\t51:  0x00ffff,\n\t52:  0x5f0000,\n\t53:  0x5f005f,\n\t54:  0x5f0087,\n\t55:  0x5f00af,\n\t56:  0x5f00d7,\n\t57:  0x5f00ff,\n\t58:  0x5f5f00,\n\t59:  0x5f5f5f,\n\t60:  0x5f5f87,\n\t61:  0x5f5faf,\n\t62:  0x5f5fd7,\n\t63:  0x5f5fff,\n\t64:  0x5f8700,\n\t65:  0x5f875f,\n\t66:  0x5f8787,\n\t67:  0x5f87af,\n\t68:  0x5f87d7,\n\t69:  0x5f87ff,\n\t70:  0x5faf00,\n\t71:  0x5faf5f,\n\t72:  0x5faf87,\n\t73:  0x5fafaf,\n\t74:  0x5fafd7,\n\t75:  0x5fafff,\n\t76:  0x5fd700,\n\t77:  0x5fd75f,\n\t78:  0x5fd787,\n\t79:  0x5fd7af,\n\t80:  0x5fd7d7,\n\t81:  0x5fd7ff,\n\t82:  0x5fff00,\n\t83:  0x5fff5f,\n\t84:  0x5fff87,\n\t85:  0x5fffaf,\n\t86:  0x5fffd7,\n\t87:  0x5fffff,\n\t88:  0x870000,\n\t89:  0x87005f,\n\t90:  0x870087,\n\t91:  0x8700af,\n\t92:  0x8700d7,\n\t93:  0x8700ff,\n\t94:  0x875f00,\n\t95:  0x875f5f,\n\t96:  0x875f87,\n\t97:  0x875faf,\n\t98:  0x875fd7,\n\t99:  0x875fff,\n\t100: 0x878700,\n\t101: 0x87875f,\n\t102: 0x878787,\n\t103: 0x8787af,\n\t104: 0x8787d7,\n\t105: 0x8787ff,\n\t106: 0x87af00,\n\t107: 0x87af5f,\n\t108: 0x87af87,\n\t109: 0x87afaf,\n\t110: 0x87afd7,\n\t111: 0x87afff,\n\t112: 0x87d700,\n\t113: 0x87d75f,\n\t114: 0x87d787,\n\t115: 0x87d7af,\n\t116: 0x87d7d7,\n\t117: 0x87d7ff,\n\t118: 0x87ff00,\n\t119: 0x87ff5f,\n\t120: 0x87ff87,\n\t121: 0x87ffaf,\n\t122: 0x87ffd7,\n\t123: 0x87ffff,\n\t124: 0xaf0000,\n\t125: 0xaf005f,\n\t126: 0xaf0087,\n\t127: 0xaf00af,\n\t128: 0xaf00d7,\n\t129: 0xaf00ff,\n\t130: 0xaf5f00,\n\t131: 0xaf5f5f,\n\t132: 0xaf5f87,\n\t133: 0xaf5faf,\n\t134: 0xaf5fd7,\n\t135: 0xaf5fff,\n\t136: 0xaf8700,\n\t137: 0xaf875f,\n\t138: 0xaf8787,\n\t139: 0xaf87af,\n\t140: 0xaf87d7,\n\t141: 0xaf87ff,\n\t142: 0xafaf00,\n\t143: 0xafaf5f,\n\t144: 0xafaf87,\n\t145: 0xafafaf,\n\t146: 0xafafd7,\n\t147: 0xafafff,\n\t148: 0xafd700,\n\t149: 0xafd75f,\n\t150: 0xafd787,\n\t151: 0xafd7af,\n\t152: 0xafd7d7,\n\t153: 0xafd7ff,\n\t154: 0xafff00,\n\t155: 0xafff5f,\n\t156: 0xafff87,\n\t157: 0xafffaf,\n\t158: 0xafffd7,\n\t159: 0xafffff,\n\t160: 0xd70000,\n\t161: 0xd7005f,\n\t162: 0xd70087,\n\t163: 0xd700af,\n\t164: 0xd700d7,\n\t165: 0xd700ff,\n\t166: 0xd75f00,\n\t167: 0xd75f5f,\n\t168: 0xd75f87,\n\t169: 0xd75faf,\n\t170: 0xd75fd7,\n\t171: 0xd75fff,\n\t172: 0xd78700,\n\t173: 0xd7875f,\n\t174: 0xd78787,\n\t175: 0xd787af,\n\t176: 0xd787d7,\n\t177: 0xd787ff,\n\t178: 0xd7af00,\n\t179: 0xd7af5f,\n\t180: 0xd7af87,\n\t181: 0xd7afaf,\n\t182: 0xd7afd7,\n\t183: 0xd7afff,\n\t184: 0xd7d700,\n\t185: 0xd7d75f,\n\t186: 0xd7d787,\n\t187: 0xd7d7af,\n\t188: 0xd7d7d7,\n\t189: 0xd7d7ff,\n\t190: 0xd7ff00,\n\t191: 0xd7ff5f,\n\t192: 0xd7ff87,\n\t193: 0xd7ffaf,\n\t194: 0xd7ffd7,\n\t195: 0xd7ffff,\n\t196: 0xff0000,\n\t197: 0xff005f,\n\t198: 0xff0087,\n\t199: 0xff00af,\n\t200: 0xff00d7,\n\t201: 0xff00ff,\n\t202: 0xff5f00,\n\t203: 0xff5f5f,\n\t204: 0xff5f87,\n\t205: 0xff5faf,\n\t206: 0xff5fd7,\n\t207: 0xff5fff,\n\t208: 0xff8700,\n\t209: 0xff875f,\n\t210: 0xff8787,\n\t211: 0xff87af,\n\t212: 0xff87d7,\n\t213: 0xff87ff,\n\t214: 0xffaf00,\n\t215: 0xffaf5f,\n\t216: 0xffaf87,\n\t217: 0xffafaf,\n\t218: 0xffafd7,\n\t219: 0xffafff,\n\t220: 0xffd700,\n\t221: 0xffd75f,\n\t222: 0xffd787,\n\t223: 0xffd7af,\n\t224: 0xffd7d7,\n\t225: 0xffd7ff,\n\t226: 0xffff00,\n\t227: 0xffff5f,\n\t228: 0xffff87,\n\t229: 0xffffaf,\n\t230: 0xffffd7,\n\t231: 0xffffff,\n\t232: 0x080808,\n\t233: 0x121212,\n\t234: 0x1c1c1c,\n\t235: 0x262626,\n\t236: 0x303030,\n\t237: 0x3a3a3a,\n\t238: 0x444444,\n\t239: 0x4e4e4e,\n\t240: 0x585858,\n\t241: 0x626262,\n\t242: 0x6c6c6c,\n\t243: 0x767676,\n\t244: 0x808080,\n\t245: 0x8a8a8a,\n\t246: 0x949494,\n\t247: 0x9e9e9e,\n\t248: 0xa8a8a8,\n\t249: 0xb2b2b2,\n\t250: 0xbcbcbc,\n\t251: 0xc6c6c6,\n\t252: 0xd0d0d0,\n\t253: 0xdadada,\n\t254: 0xe4e4e4,\n\t255: 0xeeeeee,\n}\n\n// `\\033]0;TITLESTR\\007`\nfunc doTitleSequence(er *bytes.Reader) error {\n\tvar c byte\n\tvar err error\n\n\tc, err = er.ReadByte()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif c != '0' && c != '2' {\n\t\treturn nil\n\t}\n\tc, err = er.ReadByte()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif c != ';' {\n\t\treturn nil\n\t}\n\ttitle := make([]byte, 0, 80)\n\tfor {\n\t\tc, err = er.ReadByte()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif c == 0x07 || c == '\\n' {\n\t\t\tbreak\n\t\t}\n\t\ttitle = append(title, c)\n\t}\n\tif len(title) > 0 {\n\t\ttitle8, err := syscall.UTF16PtrFromString(string(title))\n\t\tif err == nil {\n\t\t\tprocSetConsoleTitle.Call(uintptr(unsafe.Pointer(title8)))\n\t\t}\n\t}\n\treturn nil\n}\n\n// returns Atoi(s) unless s == \"\" in which case it returns def\nfunc atoiWithDefault(s string, def int) (int, error) {\n\tif s == \"\" {\n\t\treturn def, nil\n\t}\n\treturn strconv.Atoi(s)\n}\n\n// Write writes data on console\nfunc (w *Writer) Write(data []byte) (n int, err error) {\n\tw.mutex.Lock()\n\tdefer w.mutex.Unlock()\n\tvar csbi consoleScreenBufferInfo\n\tprocGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))\n\n\thandle := w.handle\n\n\tvar er *bytes.Reader\n\tif w.rest.Len() > 0 {\n\t\tvar rest bytes.Buffer\n\t\tw.rest.WriteTo(&rest)\n\t\tw.rest.Reset()\n\t\trest.Write(data)\n\t\ter = bytes.NewReader(rest.Bytes())\n\t} else {\n\t\ter = bytes.NewReader(data)\n\t}\n\tvar plaintext bytes.Buffer\nloop:\n\tfor {\n\t\tc1, err := er.ReadByte()\n\t\tif err != nil {\n\t\t\tplaintext.WriteTo(w.out)\n\t\t\tbreak loop\n\t\t}\n\t\tif c1 != 0x1b {\n\t\t\tplaintext.WriteByte(c1)\n\t\t\tcontinue\n\t\t}\n\t\t_, err = plaintext.WriteTo(w.out)\n\t\tif err != nil {\n\t\t\tbreak loop\n\t\t}\n\t\tc2, err := er.ReadByte()\n\t\tif err != nil {\n\t\t\tbreak loop\n\t\t}\n\n\t\tswitch c2 {\n\t\tcase '>':\n\t\t\tcontinue\n\t\tcase ']':\n\t\t\tw.rest.WriteByte(c1)\n\t\t\tw.rest.WriteByte(c2)\n\t\t\ter.WriteTo(&w.rest)\n\t\t\tif bytes.IndexByte(w.rest.Bytes(), 0x07) == -1 {\n\t\t\t\tbreak loop\n\t\t\t}\n\t\t\ter = bytes.NewReader(w.rest.Bytes()[2:])\n\t\t\terr := doTitleSequence(er)\n\t\t\tif err != nil {\n\t\t\t\tbreak loop\n\t\t\t}\n\t\t\tw.rest.Reset()\n\t\t\tcontinue\n\t\t// https://github.com/mattn/go-colorable/issues/27\n\t\tcase '7':\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tw.oldpos = csbi.cursorPosition\n\t\t\tcontinue\n\t\tcase '8':\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&w.oldpos)))\n\t\t\tcontinue\n\t\tcase 0x5b:\n\t\t\t// execute part after switch\n\t\tdefault:\n\t\t\tcontinue\n\t\t}\n\n\t\tw.rest.WriteByte(c1)\n\t\tw.rest.WriteByte(c2)\n\t\ter.WriteTo(&w.rest)\n\n\t\tvar buf bytes.Buffer\n\t\tvar m byte\n\t\tfor i, c := range w.rest.Bytes()[2:] {\n\t\t\tif ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' {\n\t\t\t\tm = c\n\t\t\t\ter = bytes.NewReader(w.rest.Bytes()[2+i+1:])\n\t\t\t\tw.rest.Reset()\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tbuf.Write([]byte(string(c)))\n\t\t}\n\t\tif m == 0 {\n\t\t\tbreak loop\n\t\t}\n\n\t\tswitch m {\n\t\tcase 'A':\n\t\t\tn, err = atoiWithDefault(buf.String(), 1)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.y -= short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'B':\n\t\t\tn, err = atoiWithDefault(buf.String(), 1)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.y += short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'C':\n\t\t\tn, err = atoiWithDefault(buf.String(), 1)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.x += short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'D':\n\t\t\tn, err = atoiWithDefault(buf.String(), 1)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.x -= short(n)\n\t\t\tif csbi.cursorPosition.x < 0 {\n\t\t\t\tcsbi.cursorPosition.x = 0\n\t\t\t}\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'E':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.x = 0\n\t\t\tcsbi.cursorPosition.y += short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'F':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.x = 0\n\t\t\tcsbi.cursorPosition.y -= short(n)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'G':\n\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif n < 1 {\n\t\t\t\tn = 1\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tcsbi.cursorPosition.x = short(n - 1)\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'H', 'f':\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tif buf.Len() > 0 {\n\t\t\t\ttoken := strings.Split(buf.String(), \";\")\n\t\t\t\tswitch len(token) {\n\t\t\t\tcase 1:\n\t\t\t\t\tn1, err := strconv.Atoi(token[0])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tcsbi.cursorPosition.y = short(n1 - 1)\n\t\t\t\tcase 2:\n\t\t\t\t\tn1, err := strconv.Atoi(token[0])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tn2, err := strconv.Atoi(token[1])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tcsbi.cursorPosition.x = short(n2 - 1)\n\t\t\t\t\tcsbi.cursorPosition.y = short(n1 - 1)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcsbi.cursorPosition.y = 0\n\t\t\t}\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))\n\t\tcase 'J':\n\t\t\tn := 0\n\t\t\tif buf.Len() > 0 {\n\t\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\t\tif err != nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar count, written dword\n\t\t\tvar cursor coord\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tswitch n {\n\t\t\tcase 0:\n\t\t\t\tcursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y}\n\t\t\t\tcount = dword(csbi.size.x) - dword(csbi.cursorPosition.x) + dword(csbi.size.y-csbi.cursorPosition.y)*dword(csbi.size.x)\n\t\t\tcase 1:\n\t\t\t\tcursor = coord{x: csbi.window.left, y: csbi.window.top}\n\t\t\t\tcount = dword(csbi.size.x) - dword(csbi.cursorPosition.x) + dword(csbi.window.top-csbi.cursorPosition.y)*dword(csbi.size.x)\n\t\t\tcase 2:\n\t\t\t\tcursor = coord{x: csbi.window.left, y: csbi.window.top}\n\t\t\t\tcount = dword(csbi.size.x) - dword(csbi.cursorPosition.x) + dword(csbi.size.y-csbi.cursorPosition.y)*dword(csbi.size.x)\n\t\t\t}\n\t\t\tprocFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\t\tprocFillConsoleOutputAttribute.Call(uintptr(handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\tcase 'K':\n\t\t\tn := 0\n\t\t\tif buf.Len() > 0 {\n\t\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\t\tif err != nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tvar cursor coord\n\t\t\tvar count, written dword\n\t\t\tswitch n {\n\t\t\tcase 0:\n\t\t\t\tcursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y}\n\t\t\t\tcount = dword(csbi.size.x - csbi.cursorPosition.x)\n\t\t\tcase 1:\n\t\t\t\tcursor = coord{x: csbi.window.left, y: csbi.cursorPosition.y}\n\t\t\t\tcount = dword(csbi.size.x - csbi.cursorPosition.x)\n\t\t\tcase 2:\n\t\t\t\tcursor = coord{x: csbi.window.left, y: csbi.cursorPosition.y}\n\t\t\t\tcount = dword(csbi.size.x)\n\t\t\t}\n\t\t\tprocFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\t\tprocFillConsoleOutputAttribute.Call(uintptr(handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\tcase 'X':\n\t\t\tn := 0\n\t\t\tif buf.Len() > 0 {\n\t\t\t\tn, err = strconv.Atoi(buf.String())\n\t\t\t\tif err != nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tvar cursor coord\n\t\t\tvar written dword\n\t\t\tcursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y}\n\t\t\tprocFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(n), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\t\tprocFillConsoleOutputAttribute.Call(uintptr(handle), uintptr(csbi.attributes), uintptr(n), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))\n\t\tcase 'm':\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tattr := csbi.attributes\n\t\t\tcs := buf.String()\n\t\t\tif cs == \"\" {\n\t\t\t\tprocSetConsoleTextAttribute.Call(uintptr(handle), uintptr(w.oldattr))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ttoken := strings.Split(cs, \";\")\n\t\t\tfor i := 0; i < len(token); i++ {\n\t\t\t\tns := token[i]\n\t\t\t\tif n, err = strconv.Atoi(ns); err == nil {\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase n == 0 || n == 100:\n\t\t\t\t\t\tattr = w.oldattr\n\t\t\t\t\tcase n == 4:\n\t\t\t\t\t\tattr |= commonLvbUnderscore\n\t\t\t\t\tcase (1 <= n && n <= 3) || n == 5:\n\t\t\t\t\t\tattr |= foregroundIntensity\n\t\t\t\t\tcase n == 7 || n == 27:\n\t\t\t\t\t\tattr =\n\t\t\t\t\t\t\t(attr &^ (foregroundMask | backgroundMask)) |\n\t\t\t\t\t\t\t\t((attr & foregroundMask) << 4) |\n\t\t\t\t\t\t\t\t((attr & backgroundMask) >> 4)\n\t\t\t\t\tcase n == 22:\n\t\t\t\t\t\tattr &^= foregroundIntensity\n\t\t\t\t\tcase n == 24:\n\t\t\t\t\t\tattr &^= commonLvbUnderscore\n\t\t\t\t\tcase 30 <= n && n <= 37:\n\t\t\t\t\t\tattr &= backgroundMask\n\t\t\t\t\t\tif (n-30)&1 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundRed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-30)&2 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundGreen\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-30)&4 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundBlue\n\t\t\t\t\t\t}\n\t\t\t\t\tcase n == 38: // set foreground color.\n\t\t\t\t\t\tif i < len(token)-2 && (token[i+1] == \"5\" || token[i+1] == \"05\") {\n\t\t\t\t\t\t\tif n256, err := strconv.Atoi(token[i+2]); err == nil {\n\t\t\t\t\t\t\t\tif n256foreAttr == nil {\n\t\t\t\t\t\t\t\t\tn256setup()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tattr &= backgroundMask\n\t\t\t\t\t\t\t\tattr |= n256foreAttr[n256%len(n256foreAttr)]\n\t\t\t\t\t\t\t\ti += 2\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if len(token) == 5 && token[i+1] == \"2\" {\n\t\t\t\t\t\t\tvar r, g, b int\n\t\t\t\t\t\t\tr, _ = strconv.Atoi(token[i+2])\n\t\t\t\t\t\t\tg, _ = strconv.Atoi(token[i+3])\n\t\t\t\t\t\t\tb, _ = strconv.Atoi(token[i+4])\n\t\t\t\t\t\t\ti += 4\n\t\t\t\t\t\t\tif r > 127 {\n\t\t\t\t\t\t\t\tattr |= foregroundRed\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif g > 127 {\n\t\t\t\t\t\t\t\tattr |= foregroundGreen\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif b > 127 {\n\t\t\t\t\t\t\t\tattr |= foregroundBlue\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tattr = attr & (w.oldattr & backgroundMask)\n\t\t\t\t\t\t}\n\t\t\t\t\tcase n == 39: // reset foreground color.\n\t\t\t\t\t\tattr &= backgroundMask\n\t\t\t\t\t\tattr |= w.oldattr & foregroundMask\n\t\t\t\t\tcase 40 <= n && n <= 47:\n\t\t\t\t\t\tattr &= foregroundMask\n\t\t\t\t\t\tif (n-40)&1 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundRed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-40)&2 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundGreen\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-40)&4 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundBlue\n\t\t\t\t\t\t}\n\t\t\t\t\tcase n == 48: // set background color.\n\t\t\t\t\t\tif i < len(token)-2 && token[i+1] == \"5\" {\n\t\t\t\t\t\t\tif n256, err := strconv.Atoi(token[i+2]); err == nil {\n\t\t\t\t\t\t\t\tif n256backAttr == nil {\n\t\t\t\t\t\t\t\t\tn256setup()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tattr &= foregroundMask\n\t\t\t\t\t\t\t\tattr |= n256backAttr[n256%len(n256backAttr)]\n\t\t\t\t\t\t\t\ti += 2\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if len(token) == 5 && token[i+1] == \"2\" {\n\t\t\t\t\t\t\tvar r, g, b int\n\t\t\t\t\t\t\tr, _ = strconv.Atoi(token[i+2])\n\t\t\t\t\t\t\tg, _ = strconv.Atoi(token[i+3])\n\t\t\t\t\t\t\tb, _ = strconv.Atoi(token[i+4])\n\t\t\t\t\t\t\ti += 4\n\t\t\t\t\t\t\tif r > 127 {\n\t\t\t\t\t\t\t\tattr |= backgroundRed\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif g > 127 {\n\t\t\t\t\t\t\t\tattr |= backgroundGreen\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif b > 127 {\n\t\t\t\t\t\t\t\tattr |= backgroundBlue\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tattr = attr & (w.oldattr & foregroundMask)\n\t\t\t\t\t\t}\n\t\t\t\t\tcase n == 49: // reset foreground color.\n\t\t\t\t\t\tattr &= foregroundMask\n\t\t\t\t\t\tattr |= w.oldattr & backgroundMask\n\t\t\t\t\tcase 90 <= n && n <= 97:\n\t\t\t\t\t\tattr = (attr & backgroundMask)\n\t\t\t\t\t\tattr |= foregroundIntensity\n\t\t\t\t\t\tif (n-90)&1 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundRed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-90)&2 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundGreen\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-90)&4 != 0 {\n\t\t\t\t\t\t\tattr |= foregroundBlue\n\t\t\t\t\t\t}\n\t\t\t\t\tcase 100 <= n && n <= 107:\n\t\t\t\t\t\tattr = (attr & foregroundMask)\n\t\t\t\t\t\tattr |= backgroundIntensity\n\t\t\t\t\t\tif (n-100)&1 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundRed\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-100)&2 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundGreen\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n-100)&4 != 0 {\n\t\t\t\t\t\t\tattr |= backgroundBlue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tprocSetConsoleTextAttribute.Call(uintptr(handle), uintptr(attr))\n\t\t\t\t}\n\t\t\t}\n\t\tcase 'h':\n\t\t\tvar ci consoleCursorInfo\n\t\t\tcs := buf.String()\n\t\t\tif cs == \"5>\" {\n\t\t\t\tprocGetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci)))\n\t\t\t\tci.visible = 0\n\t\t\t\tprocSetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci)))\n\t\t\t} else if cs == \"?25\" {\n\t\t\t\tprocGetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci)))\n\t\t\t\tci.visible = 1\n\t\t\t\tprocSetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci)))\n\t\t\t} else if cs == \"?1049\" {\n\t\t\t\tif w.althandle == 0 {\n\t\t\t\t\th, _, _ := procCreateConsoleScreenBuffer.Call(uintptr(genericRead|genericWrite), 0, 0, uintptr(consoleTextmodeBuffer), 0, 0)\n\t\t\t\t\tw.althandle = syscall.Handle(h)\n\t\t\t\t\tif w.althandle != 0 {\n\t\t\t\t\t\thandle = w.althandle\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase 'l':\n\t\t\tvar ci consoleCursorInfo\n\t\t\tcs := buf.String()\n\t\t\tif cs == \"5>\" {\n\t\t\t\tprocGetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci)))\n\t\t\t\tci.visible = 1\n\t\t\t\tprocSetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci)))\n\t\t\t} else if cs == \"?25\" {\n\t\t\t\tprocGetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci)))\n\t\t\t\tci.visible = 0\n\t\t\t\tprocSetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci)))\n\t\t\t} else if cs == \"?1049\" {\n\t\t\t\tif w.althandle != 0 {\n\t\t\t\t\tsyscall.CloseHandle(w.althandle)\n\t\t\t\t\tw.althandle = 0\n\t\t\t\t\thandle = w.handle\n\t\t\t\t}\n\t\t\t}\n\t\tcase 's':\n\t\t\tprocGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))\n\t\t\tw.oldpos = csbi.cursorPosition\n\t\tcase 'u':\n\t\t\tprocSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&w.oldpos)))\n\t\t}\n\t}\n\n\treturn len(data), nil\n}\n\ntype consoleColor struct {\n\trgb       int\n\tred       bool\n\tgreen     bool\n\tblue      bool\n\tintensity bool\n}\n\nfunc (c consoleColor) foregroundAttr() (attr word) {\n\tif c.red {\n\t\tattr |= foregroundRed\n\t}\n\tif c.green {\n\t\tattr |= foregroundGreen\n\t}\n\tif c.blue {\n\t\tattr |= foregroundBlue\n\t}\n\tif c.intensity {\n\t\tattr |= foregroundIntensity\n\t}\n\treturn\n}\n\nfunc (c consoleColor) backgroundAttr() (attr word) {\n\tif c.red {\n\t\tattr |= backgroundRed\n\t}\n\tif c.green {\n\t\tattr |= backgroundGreen\n\t}\n\tif c.blue {\n\t\tattr |= backgroundBlue\n\t}\n\tif c.intensity {\n\t\tattr |= backgroundIntensity\n\t}\n\treturn\n}\n\nvar color16 = []consoleColor{\n\t{0x000000, false, false, false, false},\n\t{0x000080, false, false, true, false},\n\t{0x008000, false, true, false, false},\n\t{0x008080, false, true, true, false},\n\t{0x800000, true, false, false, false},\n\t{0x800080, true, false, true, false},\n\t{0x808000, true, true, false, false},\n\t{0xc0c0c0, true, true, true, false},\n\t{0x808080, false, false, false, true},\n\t{0x0000ff, false, false, true, true},\n\t{0x00ff00, false, true, false, true},\n\t{0x00ffff, false, true, true, true},\n\t{0xff0000, true, false, false, true},\n\t{0xff00ff, true, false, true, true},\n\t{0xffff00, true, true, false, true},\n\t{0xffffff, true, true, true, true},\n}\n\ntype hsv struct {\n\th, s, v float32\n}\n\nfunc (a hsv) dist(b hsv) float32 {\n\tdh := a.h - b.h\n\tswitch {\n\tcase dh > 0.5:\n\t\tdh = 1 - dh\n\tcase dh < -0.5:\n\t\tdh = -1 - dh\n\t}\n\tds := a.s - b.s\n\tdv := a.v - b.v\n\treturn float32(math.Sqrt(float64(dh*dh + ds*ds + dv*dv)))\n}\n\nfunc toHSV(rgb int) hsv {\n\tr, g, b := float32((rgb&0xFF0000)>>16)/256.0,\n\t\tfloat32((rgb&0x00FF00)>>8)/256.0,\n\t\tfloat32(rgb&0x0000FF)/256.0\n\tmin, max := minmax3f(r, g, b)\n\th := max - min\n\tif h > 0 {\n\t\tif max == r {\n\t\t\th = (g - b) / h\n\t\t\tif h < 0 {\n\t\t\t\th += 6\n\t\t\t}\n\t\t} else if max == g {\n\t\t\th = 2 + (b-r)/h\n\t\t} else {\n\t\t\th = 4 + (r-g)/h\n\t\t}\n\t}\n\th /= 6.0\n\ts := max - min\n\tif max != 0 {\n\t\ts /= max\n\t}\n\tv := max\n\treturn hsv{h: h, s: s, v: v}\n}\n\ntype hsvTable []hsv\n\nfunc toHSVTable(rgbTable []consoleColor) hsvTable {\n\tt := make(hsvTable, len(rgbTable))\n\tfor i, c := range rgbTable {\n\t\tt[i] = toHSV(c.rgb)\n\t}\n\treturn t\n}\n\nfunc (t hsvTable) find(rgb int) consoleColor {\n\thsv := toHSV(rgb)\n\tn := 7\n\tl := float32(5.0)\n\tfor i, p := range t {\n\t\td := hsv.dist(p)\n\t\tif d < l {\n\t\t\tl, n = d, i\n\t\t}\n\t}\n\treturn color16[n]\n}\n\nfunc minmax3f(a, b, c float32) (min, max float32) {\n\tif a < b {\n\t\tif b < c {\n\t\t\treturn a, c\n\t\t} else if a < c {\n\t\t\treturn a, b\n\t\t} else {\n\t\t\treturn c, b\n\t\t}\n\t} else {\n\t\tif a < c {\n\t\t\treturn b, c\n\t\t} else if b < c {\n\t\t\treturn b, a\n\t\t} else {\n\t\t\treturn c, a\n\t\t}\n\t}\n}\n\nvar n256foreAttr []word\nvar n256backAttr []word\n\nfunc n256setup() {\n\tn256foreAttr = make([]word, 256)\n\tn256backAttr = make([]word, 256)\n\tt := toHSVTable(color16)\n\tfor i, rgb := range color256 {\n\t\tc := t.find(rgb)\n\t\tn256foreAttr[i] = c.foregroundAttr()\n\t\tn256backAttr[i] = c.backgroundAttr()\n\t}\n}\n\n// EnableColorsStdout enable colors if possible.\nfunc EnableColorsStdout(enabled *bool) func() {\n\tvar mode uint32\n\th := os.Stdout.Fd()\n\tif r, _, _ := procGetConsoleMode.Call(h, uintptr(unsafe.Pointer(&mode))); r != 0 {\n\t\tif r, _, _ = procSetConsoleMode.Call(h, uintptr(mode|cENABLE_VIRTUAL_TERMINAL_PROCESSING)); r != 0 {\n\t\t\tif enabled != nil {\n\t\t\t\t*enabled = true\n\t\t\t}\n\t\t\treturn func() {\n\t\t\t\tprocSetConsoleMode.Call(h, uintptr(mode))\n\t\t\t}\n\t\t}\n\t}\n\tif enabled != nil {\n\t\t*enabled = true\n\t}\n\treturn func() {}\n}\n"
  },
  {
    "path": "vendor/github.com/mattn/go-colorable/go.test.sh",
    "content": "#!/usr/bin/env bash\n\nset -e\necho \"\" > coverage.txt\n\nfor d in $(go list ./... | grep -v vendor); do\n    go test -race -coverprofile=profile.out -covermode=atomic \"$d\"\n    if [ -f profile.out ]; then\n        cat profile.out >> coverage.txt\n        rm profile.out\n    fi\ndone\n"
  },
  {
    "path": "vendor/github.com/mattn/go-colorable/noncolorable.go",
    "content": "package colorable\n\nimport (\n\t\"bytes\"\n\t\"io\"\n)\n\n// NonColorable holds writer but removes escape sequence.\ntype NonColorable struct {\n\tout io.Writer\n}\n\n// NewNonColorable returns new instance of Writer which removes escape sequence from Writer.\nfunc NewNonColorable(w io.Writer) io.Writer {\n\treturn &NonColorable{out: w}\n}\n\n// Write writes data on console\nfunc (w *NonColorable) Write(data []byte) (n int, err error) {\n\ter := bytes.NewReader(data)\n\tvar plaintext bytes.Buffer\nloop:\n\tfor {\n\t\tc1, err := er.ReadByte()\n\t\tif err != nil {\n\t\t\tplaintext.WriteTo(w.out)\n\t\t\tbreak loop\n\t\t}\n\t\tif c1 != 0x1b {\n\t\t\tplaintext.WriteByte(c1)\n\t\t\tcontinue\n\t\t}\n\t\t_, err = plaintext.WriteTo(w.out)\n\t\tif err != nil {\n\t\t\tbreak loop\n\t\t}\n\t\tc2, err := er.ReadByte()\n\t\tif err != nil {\n\t\t\tbreak loop\n\t\t}\n\t\tif c2 != 0x5b {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor {\n\t\t\tc, err := er.ReadByte()\n\t\t\tif err != nil {\n\t\t\t\tbreak loop\n\t\t\t}\n\t\t\tif ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\treturn len(data), nil\n}\n"
  },
  {
    "path": "vendor/github.com/mattn/go-isatty/LICENSE",
    "content": "Copyright (c) Yasuhiro MATSUMOTO <mattn.jp@gmail.com>\n\nMIT License (Expat)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/mattn/go-isatty/README.md",
    "content": "# go-isatty\n\n[![Godoc Reference](https://godoc.org/github.com/mattn/go-isatty?status.svg)](http://godoc.org/github.com/mattn/go-isatty)\n[![Codecov](https://codecov.io/gh/mattn/go-isatty/branch/master/graph/badge.svg)](https://codecov.io/gh/mattn/go-isatty)\n[![Coverage Status](https://coveralls.io/repos/github/mattn/go-isatty/badge.svg?branch=master)](https://coveralls.io/github/mattn/go-isatty?branch=master)\n[![Go Report Card](https://goreportcard.com/badge/mattn/go-isatty)](https://goreportcard.com/report/mattn/go-isatty)\n\nisatty for golang\n\n## Usage\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"github.com/mattn/go-isatty\"\n\t\"os\"\n)\n\nfunc main() {\n\tif isatty.IsTerminal(os.Stdout.Fd()) {\n\t\tfmt.Println(\"Is Terminal\")\n\t} else if isatty.IsCygwinTerminal(os.Stdout.Fd()) {\n\t\tfmt.Println(\"Is Cygwin/MSYS2 Terminal\")\n\t} else {\n\t\tfmt.Println(\"Is Not Terminal\")\n\t}\n}\n```\n\n## Installation\n\n```\n$ go get github.com/mattn/go-isatty\n```\n\n## License\n\nMIT\n\n## Author\n\nYasuhiro Matsumoto (a.k.a mattn)\n\n## Thanks\n\n* k-takata: base idea for IsCygwinTerminal\n\n    https://github.com/k-takata/go-iscygpty\n"
  },
  {
    "path": "vendor/github.com/mattn/go-isatty/doc.go",
    "content": "// Package isatty implements interface to isatty\npackage isatty\n"
  },
  {
    "path": "vendor/github.com/mattn/go-isatty/go.test.sh",
    "content": "#!/usr/bin/env bash\n\nset -e\necho \"\" > coverage.txt\n\nfor d in $(go list ./... | grep -v vendor); do\n    go test -race -coverprofile=profile.out -covermode=atomic \"$d\"\n    if [ -f profile.out ]; then\n        cat profile.out >> coverage.txt\n        rm profile.out\n    fi\ndone\n"
  },
  {
    "path": "vendor/github.com/mattn/go-isatty/isatty_bsd.go",
    "content": "//go:build (darwin || freebsd || openbsd || netbsd || dragonfly || hurd) && !appengine && !tinygo\n// +build darwin freebsd openbsd netbsd dragonfly hurd\n// +build !appengine\n// +build !tinygo\n\npackage isatty\n\nimport \"golang.org/x/sys/unix\"\n\n// IsTerminal return true if the file descriptor is terminal.\nfunc IsTerminal(fd uintptr) bool {\n\t_, err := unix.IoctlGetTermios(int(fd), unix.TIOCGETA)\n\treturn err == nil\n}\n\n// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2\n// terminal. This is also always false on this environment.\nfunc IsCygwinTerminal(fd uintptr) bool {\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/mattn/go-isatty/isatty_others.go",
    "content": "//go:build (appengine || js || nacl || tinygo || wasm) && !windows\n// +build appengine js nacl tinygo wasm\n// +build !windows\n\npackage isatty\n\n// IsTerminal returns true if the file descriptor is terminal which\n// is always false on js and appengine classic which is a sandboxed PaaS.\nfunc IsTerminal(fd uintptr) bool {\n\treturn false\n}\n\n// IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2\n// terminal. This is also always false on this environment.\nfunc IsCygwinTerminal(fd uintptr) bool {\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/mattn/go-isatty/isatty_plan9.go",
    "content": "//go:build plan9\n// +build plan9\n\npackage isatty\n\nimport (\n\t\"syscall\"\n)\n\n// IsTerminal returns true if the given file descriptor is a terminal.\nfunc IsTerminal(fd uintptr) bool {\n\tpath, err := syscall.Fd2path(int(fd))\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn path == \"/dev/cons\" || path == \"/mnt/term/dev/cons\"\n}\n\n// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2\n// terminal. This is also always false on this environment.\nfunc IsCygwinTerminal(fd uintptr) bool {\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/mattn/go-isatty/isatty_solaris.go",
    "content": "//go:build solaris && !appengine\n// +build solaris,!appengine\n\npackage isatty\n\nimport (\n\t\"golang.org/x/sys/unix\"\n)\n\n// IsTerminal returns true if the given file descriptor is a terminal.\n// see: https://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libc/port/gen/isatty.c\nfunc IsTerminal(fd uintptr) bool {\n\t_, err := unix.IoctlGetTermio(int(fd), unix.TCGETA)\n\treturn err == nil\n}\n\n// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2\n// terminal. This is also always false on this environment.\nfunc IsCygwinTerminal(fd uintptr) bool {\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/mattn/go-isatty/isatty_tcgets.go",
    "content": "//go:build (linux || aix || zos) && !appengine && !tinygo\n// +build linux aix zos\n// +build !appengine\n// +build !tinygo\n\npackage isatty\n\nimport \"golang.org/x/sys/unix\"\n\n// IsTerminal return true if the file descriptor is terminal.\nfunc IsTerminal(fd uintptr) bool {\n\t_, err := unix.IoctlGetTermios(int(fd), unix.TCGETS)\n\treturn err == nil\n}\n\n// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2\n// terminal. This is also always false on this environment.\nfunc IsCygwinTerminal(fd uintptr) bool {\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/mattn/go-isatty/isatty_windows.go",
    "content": "//go:build windows && !appengine\n// +build windows,!appengine\n\npackage isatty\n\nimport (\n\t\"errors\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unicode/utf16\"\n\t\"unsafe\"\n)\n\nconst (\n\tobjectNameInfo uintptr = 1\n\tfileNameInfo           = 2\n\tfileTypePipe           = 3\n)\n\nvar (\n\tkernel32                         = syscall.NewLazyDLL(\"kernel32.dll\")\n\tntdll                            = syscall.NewLazyDLL(\"ntdll.dll\")\n\tprocGetConsoleMode               = kernel32.NewProc(\"GetConsoleMode\")\n\tprocGetFileInformationByHandleEx = kernel32.NewProc(\"GetFileInformationByHandleEx\")\n\tprocGetFileType                  = kernel32.NewProc(\"GetFileType\")\n\tprocNtQueryObject                = ntdll.NewProc(\"NtQueryObject\")\n)\n\nfunc init() {\n\t// Check if GetFileInformationByHandleEx is available.\n\tif procGetFileInformationByHandleEx.Find() != nil {\n\t\tprocGetFileInformationByHandleEx = nil\n\t}\n}\n\n// IsTerminal return true if the file descriptor is terminal.\nfunc IsTerminal(fd uintptr) bool {\n\tvar st uint32\n\tr, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, fd, uintptr(unsafe.Pointer(&st)), 0)\n\treturn r != 0 && e == 0\n}\n\n// Check pipe name is used for cygwin/msys2 pty.\n// Cygwin/MSYS2 PTY has a name like:\n//   \\{cygwin,msys}-XXXXXXXXXXXXXXXX-ptyN-{from,to}-master\nfunc isCygwinPipeName(name string) bool {\n\ttoken := strings.Split(name, \"-\")\n\tif len(token) < 5 {\n\t\treturn false\n\t}\n\n\tif token[0] != `\\msys` &&\n\t\ttoken[0] != `\\cygwin` &&\n\t\ttoken[0] != `\\Device\\NamedPipe\\msys` &&\n\t\ttoken[0] != `\\Device\\NamedPipe\\cygwin` {\n\t\treturn false\n\t}\n\n\tif token[1] == \"\" {\n\t\treturn false\n\t}\n\n\tif !strings.HasPrefix(token[2], \"pty\") {\n\t\treturn false\n\t}\n\n\tif token[3] != `from` && token[3] != `to` {\n\t\treturn false\n\t}\n\n\tif token[4] != \"master\" {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n// getFileNameByHandle use the undocomented ntdll NtQueryObject to get file full name from file handler\n// since GetFileInformationByHandleEx is not available under windows Vista and still some old fashion\n// guys are using Windows XP, this is a workaround for those guys, it will also work on system from\n// Windows vista to 10\n// see https://stackoverflow.com/a/18792477 for details\nfunc getFileNameByHandle(fd uintptr) (string, error) {\n\tif procNtQueryObject == nil {\n\t\treturn \"\", errors.New(\"ntdll.dll: NtQueryObject not supported\")\n\t}\n\n\tvar buf [4 + syscall.MAX_PATH]uint16\n\tvar result int\n\tr, _, e := syscall.Syscall6(procNtQueryObject.Addr(), 5,\n\t\tfd, objectNameInfo, uintptr(unsafe.Pointer(&buf)), uintptr(2*len(buf)), uintptr(unsafe.Pointer(&result)), 0)\n\tif r != 0 {\n\t\treturn \"\", e\n\t}\n\treturn string(utf16.Decode(buf[4 : 4+buf[0]/2])), nil\n}\n\n// IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2\n// terminal.\nfunc IsCygwinTerminal(fd uintptr) bool {\n\tif procGetFileInformationByHandleEx == nil {\n\t\tname, err := getFileNameByHandle(fd)\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\treturn isCygwinPipeName(name)\n\t}\n\n\t// Cygwin/msys's pty is a pipe.\n\tft, _, e := syscall.Syscall(procGetFileType.Addr(), 1, fd, 0, 0)\n\tif ft != fileTypePipe || e != 0 {\n\t\treturn false\n\t}\n\n\tvar buf [2 + syscall.MAX_PATH]uint16\n\tr, _, e := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(),\n\t\t4, fd, fileNameInfo, uintptr(unsafe.Pointer(&buf)),\n\t\tuintptr(len(buf)*2), 0, 0)\n\tif r == 0 || e != 0 {\n\t\treturn false\n\t}\n\n\tl := *(*uint32)(unsafe.Pointer(&buf))\n\treturn isCygwinPipeName(string(utf16.Decode(buf[2 : 2+l/2])))\n}\n"
  },
  {
    "path": "vendor/github.com/mitchellh/go-homedir/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2013 Mitchell Hashimoto\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/mitchellh/go-homedir/README.md",
    "content": "# go-homedir\n\nThis is a Go library for detecting the user's home directory without\nthe use of cgo, so the library can be used in cross-compilation environments.\n\nUsage is incredibly simple, just call `homedir.Dir()` to get the home directory\nfor a user, and `homedir.Expand()` to expand the `~` in a path to the home\ndirectory.\n\n**Why not just use `os/user`?** The built-in `os/user` package requires\ncgo on Darwin systems. This means that any Go code that uses that package\ncannot cross compile. But 99% of the time the use for `os/user` is just to\nretrieve the home directory, which we can do for the current user without\ncgo. This library does that, enabling cross-compilation.\n"
  },
  {
    "path": "vendor/github.com/mitchellh/go-homedir/homedir.go",
    "content": "package homedir\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n)\n\n// DisableCache will disable caching of the home directory. Caching is enabled\n// by default.\nvar DisableCache bool\n\nvar homedirCache string\nvar cacheLock sync.RWMutex\n\n// Dir returns the home directory for the executing user.\n//\n// This uses an OS-specific method for discovering the home directory.\n// An error is returned if a home directory cannot be detected.\nfunc Dir() (string, error) {\n\tif !DisableCache {\n\t\tcacheLock.RLock()\n\t\tcached := homedirCache\n\t\tcacheLock.RUnlock()\n\t\tif cached != \"\" {\n\t\t\treturn cached, nil\n\t\t}\n\t}\n\n\tcacheLock.Lock()\n\tdefer cacheLock.Unlock()\n\n\tvar result string\n\tvar err error\n\tif runtime.GOOS == \"windows\" {\n\t\tresult, err = dirWindows()\n\t} else {\n\t\t// Unix-like system, so just assume Unix\n\t\tresult, err = dirUnix()\n\t}\n\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\thomedirCache = result\n\treturn result, nil\n}\n\n// Expand expands the path to include the home directory if the path\n// is prefixed with `~`. If it isn't prefixed with `~`, the path is\n// returned as-is.\nfunc Expand(path string) (string, error) {\n\tif len(path) == 0 {\n\t\treturn path, nil\n\t}\n\n\tif path[0] != '~' {\n\t\treturn path, nil\n\t}\n\n\tif len(path) > 1 && path[1] != '/' && path[1] != '\\\\' {\n\t\treturn \"\", errors.New(\"cannot expand user-specific home dir\")\n\t}\n\n\tdir, err := Dir()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn filepath.Join(dir, path[1:]), nil\n}\n\n// Reset clears the cache, forcing the next call to Dir to re-detect\n// the home directory. This generally never has to be called, but can be\n// useful in tests if you're modifying the home directory via the HOME\n// env var or something.\nfunc Reset() {\n\tcacheLock.Lock()\n\tdefer cacheLock.Unlock()\n\thomedirCache = \"\"\n}\n\nfunc dirUnix() (string, error) {\n\thomeEnv := \"HOME\"\n\tif runtime.GOOS == \"plan9\" {\n\t\t// On plan9, env vars are lowercase.\n\t\thomeEnv = \"home\"\n\t}\n\n\t// First prefer the HOME environmental variable\n\tif home := os.Getenv(homeEnv); home != \"\" {\n\t\treturn home, nil\n\t}\n\n\tvar stdout bytes.Buffer\n\n\t// If that fails, try OS specific commands\n\tif runtime.GOOS == \"darwin\" {\n\t\tcmd := exec.Command(\"sh\", \"-c\", `dscl -q . -read /Users/\"$(whoami)\" NFSHomeDirectory | sed 's/^[^ ]*: //'`)\n\t\tcmd.Stdout = &stdout\n\t\tif err := cmd.Run(); err == nil {\n\t\t\tresult := strings.TrimSpace(stdout.String())\n\t\t\tif result != \"\" {\n\t\t\t\treturn result, nil\n\t\t\t}\n\t\t}\n\t} else {\n\t\tcmd := exec.Command(\"getent\", \"passwd\", strconv.Itoa(os.Getuid()))\n\t\tcmd.Stdout = &stdout\n\t\tif err := cmd.Run(); err != nil {\n\t\t\t// If the error is ErrNotFound, we ignore it. Otherwise, return it.\n\t\t\tif err != exec.ErrNotFound {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t} else {\n\t\t\tif passwd := strings.TrimSpace(stdout.String()); passwd != \"\" {\n\t\t\t\t// username:password:uid:gid:gecos:home:shell\n\t\t\t\tpasswdParts := strings.SplitN(passwd, \":\", 7)\n\t\t\t\tif len(passwdParts) > 5 {\n\t\t\t\t\treturn passwdParts[5], nil\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// If all else fails, try the shell\n\tstdout.Reset()\n\tcmd := exec.Command(\"sh\", \"-c\", \"cd && pwd\")\n\tcmd.Stdout = &stdout\n\tif err := cmd.Run(); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tresult := strings.TrimSpace(stdout.String())\n\tif result == \"\" {\n\t\treturn \"\", errors.New(\"blank output when reading home directory\")\n\t}\n\n\treturn result, nil\n}\n\nfunc dirWindows() (string, error) {\n\t// First prefer the HOME environmental variable\n\tif home := os.Getenv(\"HOME\"); home != \"\" {\n\t\treturn home, nil\n\t}\n\n\t// Prefer standard environment variable USERPROFILE\n\tif home := os.Getenv(\"USERPROFILE\"); home != \"\" {\n\t\treturn home, nil\n\t}\n\n\tdrive := os.Getenv(\"HOMEDRIVE\")\n\tpath := os.Getenv(\"HOMEPATH\")\n\thome := drive + path\n\tif drive == \"\" || path == \"\" {\n\t\treturn \"\", errors.New(\"HOMEDRIVE, HOMEPATH, or USERPROFILE are blank\")\n\t}\n\n\treturn home, nil\n}\n"
  },
  {
    "path": "vendor/github.com/mitchellh/mapstructure/CHANGELOG.md",
    "content": "## 1.5.0\n\n* New option `IgnoreUntaggedFields` to ignore decoding to any fields\n  without `mapstructure` (or the configured tag name) set [GH-277]\n* New option `ErrorUnset` which makes it an error if any fields\n  in a target struct are not set by the decoding process. [GH-225]\n* New function `OrComposeDecodeHookFunc` to help compose decode hooks. [GH-240]\n* Decoding to slice from array no longer crashes [GH-265]\n* Decode nested struct pointers to map [GH-271]\n* Fix issue where `,squash` was ignored if `Squash` option was set. [GH-280]\n* Fix issue where fields with `,omitempty` would sometimes decode\n  into a map with an empty string key [GH-281]\n\n## 1.4.3\n\n* Fix cases where `json.Number` didn't decode properly [GH-261]\n\n## 1.4.2\n\n* Custom name matchers to support any sort of casing, formatting, etc. for\n  field names. [GH-250]\n* Fix possible panic in ComposeDecodeHookFunc [GH-251]\n\n## 1.4.1\n\n* Fix regression where `*time.Time` value would be set to empty and not be sent\n  to decode hooks properly [GH-232]\n\n## 1.4.0\n\n* A new decode hook type `DecodeHookFuncValue` has been added that has\n  access to the full values. [GH-183]\n* Squash is now supported with embedded fields that are struct pointers [GH-205]\n* Empty strings will convert to 0 for all numeric types when weakly decoding [GH-206]\n\n## 1.3.3\n\n* Decoding maps from maps creates a settable value for decode hooks [GH-203]\n\n## 1.3.2\n\n* Decode into interface type with a struct value is supported [GH-187]\n\n## 1.3.1\n\n* Squash should only squash embedded structs. [GH-194]\n\n## 1.3.0\n\n* Added `\",omitempty\"` support. This will ignore zero values in the source\n  structure when encoding. [GH-145]\n\n## 1.2.3\n\n* Fix duplicate entries in Keys list with pointer values. [GH-185]\n\n## 1.2.2\n\n* Do not add unsettable (unexported) values to the unused metadata key\n  or \"remain\" value. [GH-150]\n\n## 1.2.1\n\n* Go modules checksum mismatch fix\n\n## 1.2.0\n\n* Added support to capture unused values in a field using the `\",remain\"` value\n  in the mapstructure tag. There is an example to showcase usage.\n* Added `DecoderConfig` option to always squash embedded structs\n* `json.Number` can decode into `uint` types\n* Empty slices are preserved and not replaced with nil slices\n* Fix panic that can occur in when decoding a map into a nil slice of structs\n* Improved package documentation for godoc\n\n## 1.1.2\n\n* Fix error when decode hook decodes interface implementation into interface\n  type. [GH-140]\n\n## 1.1.1\n\n* Fix panic that can happen in `decodePtr`\n\n## 1.1.0\n\n* Added `StringToIPHookFunc` to convert `string` to `net.IP` and `net.IPNet` [GH-133]\n* Support struct to struct decoding [GH-137]\n* If source map value is nil, then destination map value is nil (instead of empty)\n* If source slice value is nil, then destination slice value is nil (instead of empty)\n* If source pointer is nil, then destination pointer is set to nil (instead of\n  allocated zero value of type)\n\n## 1.0.0\n\n* Initial tagged stable release.\n"
  },
  {
    "path": "vendor/github.com/mitchellh/mapstructure/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2013 Mitchell Hashimoto\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/mitchellh/mapstructure/README.md",
    "content": "# mapstructure [![Godoc](https://godoc.org/github.com/mitchellh/mapstructure?status.svg)](https://godoc.org/github.com/mitchellh/mapstructure)\n\nmapstructure is a Go library for decoding generic map values to structures\nand vice versa, while providing helpful error handling.\n\nThis library is most useful when decoding values from some data stream (JSON,\nGob, etc.) where you don't _quite_ know the structure of the underlying data\nuntil you read a part of it. You can therefore read a `map[string]interface{}`\nand use this library to decode it into the proper underlying native Go\nstructure.\n\n## Installation\n\nStandard `go get`:\n\n```\n$ go get github.com/mitchellh/mapstructure\n```\n\n## Usage & Example\n\nFor usage and examples see the [Godoc](http://godoc.org/github.com/mitchellh/mapstructure).\n\nThe `Decode` function has examples associated with it there.\n\n## But Why?!\n\nGo offers fantastic standard libraries for decoding formats such as JSON.\nThe standard method is to have a struct pre-created, and populate that struct\nfrom the bytes of the encoded format. This is great, but the problem is if\nyou have configuration or an encoding that changes slightly depending on\nspecific fields. For example, consider this JSON:\n\n```json\n{\n  \"type\": \"person\",\n  \"name\": \"Mitchell\"\n}\n```\n\nPerhaps we can't populate a specific structure without first reading\nthe \"type\" field from the JSON. We could always do two passes over the\ndecoding of the JSON (reading the \"type\" first, and the rest later).\nHowever, it is much simpler to just decode this into a `map[string]interface{}`\nstructure, read the \"type\" key, then use something like this library\nto decode it into the proper structure.\n"
  },
  {
    "path": "vendor/github.com/mitchellh/mapstructure/decode_hooks.go",
    "content": "package mapstructure\n\nimport (\n\t\"encoding\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// typedDecodeHook takes a raw DecodeHookFunc (an interface{}) and turns\n// it into the proper DecodeHookFunc type, such as DecodeHookFuncType.\nfunc typedDecodeHook(h DecodeHookFunc) DecodeHookFunc {\n\t// Create variables here so we can reference them with the reflect pkg\n\tvar f1 DecodeHookFuncType\n\tvar f2 DecodeHookFuncKind\n\tvar f3 DecodeHookFuncValue\n\n\t// Fill in the variables into this interface and the rest is done\n\t// automatically using the reflect package.\n\tpotential := []interface{}{f1, f2, f3}\n\n\tv := reflect.ValueOf(h)\n\tvt := v.Type()\n\tfor _, raw := range potential {\n\t\tpt := reflect.ValueOf(raw).Type()\n\t\tif vt.ConvertibleTo(pt) {\n\t\t\treturn v.Convert(pt).Interface()\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// DecodeHookExec executes the given decode hook. This should be used\n// since it'll naturally degrade to the older backwards compatible DecodeHookFunc\n// that took reflect.Kind instead of reflect.Type.\nfunc DecodeHookExec(\n\traw DecodeHookFunc,\n\tfrom reflect.Value, to reflect.Value) (interface{}, error) {\n\n\tswitch f := typedDecodeHook(raw).(type) {\n\tcase DecodeHookFuncType:\n\t\treturn f(from.Type(), to.Type(), from.Interface())\n\tcase DecodeHookFuncKind:\n\t\treturn f(from.Kind(), to.Kind(), from.Interface())\n\tcase DecodeHookFuncValue:\n\t\treturn f(from, to)\n\tdefault:\n\t\treturn nil, errors.New(\"invalid decode hook signature\")\n\t}\n}\n\n// ComposeDecodeHookFunc creates a single DecodeHookFunc that\n// automatically composes multiple DecodeHookFuncs.\n//\n// The composed funcs are called in order, with the result of the\n// previous transformation.\nfunc ComposeDecodeHookFunc(fs ...DecodeHookFunc) DecodeHookFunc {\n\treturn func(f reflect.Value, t reflect.Value) (interface{}, error) {\n\t\tvar err error\n\t\tdata := f.Interface()\n\n\t\tnewFrom := f\n\t\tfor _, f1 := range fs {\n\t\t\tdata, err = DecodeHookExec(f1, newFrom, t)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tnewFrom = reflect.ValueOf(data)\n\t\t}\n\n\t\treturn data, nil\n\t}\n}\n\n// OrComposeDecodeHookFunc executes all input hook functions until one of them returns no error. In that case its value is returned.\n// If all hooks return an error, OrComposeDecodeHookFunc returns an error concatenating all error messages.\nfunc OrComposeDecodeHookFunc(ff ...DecodeHookFunc) DecodeHookFunc {\n\treturn func(a, b reflect.Value) (interface{}, error) {\n\t\tvar allErrs string\n\t\tvar out interface{}\n\t\tvar err error\n\n\t\tfor _, f := range ff {\n\t\t\tout, err = DecodeHookExec(f, a, b)\n\t\t\tif err != nil {\n\t\t\t\tallErrs += err.Error() + \"\\n\"\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\treturn out, nil\n\t\t}\n\n\t\treturn nil, errors.New(allErrs)\n\t}\n}\n\n// StringToSliceHookFunc returns a DecodeHookFunc that converts\n// string to []string by splitting on the given sep.\nfunc StringToSliceHookFunc(sep string) DecodeHookFunc {\n\treturn func(\n\t\tf reflect.Kind,\n\t\tt reflect.Kind,\n\t\tdata interface{}) (interface{}, error) {\n\t\tif f != reflect.String || t != reflect.Slice {\n\t\t\treturn data, nil\n\t\t}\n\n\t\traw := data.(string)\n\t\tif raw == \"\" {\n\t\t\treturn []string{}, nil\n\t\t}\n\n\t\treturn strings.Split(raw, sep), nil\n\t}\n}\n\n// StringToTimeDurationHookFunc returns a DecodeHookFunc that converts\n// strings to time.Duration.\nfunc StringToTimeDurationHookFunc() DecodeHookFunc {\n\treturn func(\n\t\tf reflect.Type,\n\t\tt reflect.Type,\n\t\tdata interface{}) (interface{}, error) {\n\t\tif f.Kind() != reflect.String {\n\t\t\treturn data, nil\n\t\t}\n\t\tif t != reflect.TypeOf(time.Duration(5)) {\n\t\t\treturn data, nil\n\t\t}\n\n\t\t// Convert it by parsing\n\t\treturn time.ParseDuration(data.(string))\n\t}\n}\n\n// StringToIPHookFunc returns a DecodeHookFunc that converts\n// strings to net.IP\nfunc StringToIPHookFunc() DecodeHookFunc {\n\treturn func(\n\t\tf reflect.Type,\n\t\tt reflect.Type,\n\t\tdata interface{}) (interface{}, error) {\n\t\tif f.Kind() != reflect.String {\n\t\t\treturn data, nil\n\t\t}\n\t\tif t != reflect.TypeOf(net.IP{}) {\n\t\t\treturn data, nil\n\t\t}\n\n\t\t// Convert it by parsing\n\t\tip := net.ParseIP(data.(string))\n\t\tif ip == nil {\n\t\t\treturn net.IP{}, fmt.Errorf(\"failed parsing ip %v\", data)\n\t\t}\n\n\t\treturn ip, nil\n\t}\n}\n\n// StringToIPNetHookFunc returns a DecodeHookFunc that converts\n// strings to net.IPNet\nfunc StringToIPNetHookFunc() DecodeHookFunc {\n\treturn func(\n\t\tf reflect.Type,\n\t\tt reflect.Type,\n\t\tdata interface{}) (interface{}, error) {\n\t\tif f.Kind() != reflect.String {\n\t\t\treturn data, nil\n\t\t}\n\t\tif t != reflect.TypeOf(net.IPNet{}) {\n\t\t\treturn data, nil\n\t\t}\n\n\t\t// Convert it by parsing\n\t\t_, net, err := net.ParseCIDR(data.(string))\n\t\treturn net, err\n\t}\n}\n\n// StringToTimeHookFunc returns a DecodeHookFunc that converts\n// strings to time.Time.\nfunc StringToTimeHookFunc(layout string) DecodeHookFunc {\n\treturn func(\n\t\tf reflect.Type,\n\t\tt reflect.Type,\n\t\tdata interface{}) (interface{}, error) {\n\t\tif f.Kind() != reflect.String {\n\t\t\treturn data, nil\n\t\t}\n\t\tif t != reflect.TypeOf(time.Time{}) {\n\t\t\treturn data, nil\n\t\t}\n\n\t\t// Convert it by parsing\n\t\treturn time.Parse(layout, data.(string))\n\t}\n}\n\n// WeaklyTypedHook is a DecodeHookFunc which adds support for weak typing to\n// the decoder.\n//\n// Note that this is significantly different from the WeaklyTypedInput option\n// of the DecoderConfig.\nfunc WeaklyTypedHook(\n\tf reflect.Kind,\n\tt reflect.Kind,\n\tdata interface{}) (interface{}, error) {\n\tdataVal := reflect.ValueOf(data)\n\tswitch t {\n\tcase reflect.String:\n\t\tswitch f {\n\t\tcase reflect.Bool:\n\t\t\tif dataVal.Bool() {\n\t\t\t\treturn \"1\", nil\n\t\t\t}\n\t\t\treturn \"0\", nil\n\t\tcase reflect.Float32:\n\t\t\treturn strconv.FormatFloat(dataVal.Float(), 'f', -1, 64), nil\n\t\tcase reflect.Int:\n\t\t\treturn strconv.FormatInt(dataVal.Int(), 10), nil\n\t\tcase reflect.Slice:\n\t\t\tdataType := dataVal.Type()\n\t\t\telemKind := dataType.Elem().Kind()\n\t\t\tif elemKind == reflect.Uint8 {\n\t\t\t\treturn string(dataVal.Interface().([]uint8)), nil\n\t\t\t}\n\t\tcase reflect.Uint:\n\t\t\treturn strconv.FormatUint(dataVal.Uint(), 10), nil\n\t\t}\n\t}\n\n\treturn data, nil\n}\n\nfunc RecursiveStructToMapHookFunc() DecodeHookFunc {\n\treturn func(f reflect.Value, t reflect.Value) (interface{}, error) {\n\t\tif f.Kind() != reflect.Struct {\n\t\t\treturn f.Interface(), nil\n\t\t}\n\n\t\tvar i interface{} = struct{}{}\n\t\tif t.Type() != reflect.TypeOf(&i).Elem() {\n\t\t\treturn f.Interface(), nil\n\t\t}\n\n\t\tm := make(map[string]interface{})\n\t\tt.Set(reflect.ValueOf(m))\n\n\t\treturn f.Interface(), nil\n\t}\n}\n\n// TextUnmarshallerHookFunc returns a DecodeHookFunc that applies\n// strings to the UnmarshalText function, when the target type\n// implements the encoding.TextUnmarshaler interface\nfunc TextUnmarshallerHookFunc() DecodeHookFuncType {\n\treturn func(\n\t\tf reflect.Type,\n\t\tt reflect.Type,\n\t\tdata interface{}) (interface{}, error) {\n\t\tif f.Kind() != reflect.String {\n\t\t\treturn data, nil\n\t\t}\n\t\tresult := reflect.New(t).Interface()\n\t\tunmarshaller, ok := result.(encoding.TextUnmarshaler)\n\t\tif !ok {\n\t\t\treturn data, nil\n\t\t}\n\t\tif err := unmarshaller.UnmarshalText([]byte(data.(string))); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn result, nil\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/mitchellh/mapstructure/error.go",
    "content": "package mapstructure\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// Error implements the error interface and can represents multiple\n// errors that occur in the course of a single decode.\ntype Error struct {\n\tErrors []string\n}\n\nfunc (e *Error) Error() string {\n\tpoints := make([]string, len(e.Errors))\n\tfor i, err := range e.Errors {\n\t\tpoints[i] = fmt.Sprintf(\"* %s\", err)\n\t}\n\n\tsort.Strings(points)\n\treturn fmt.Sprintf(\n\t\t\"%d error(s) decoding:\\n\\n%s\",\n\t\tlen(e.Errors), strings.Join(points, \"\\n\"))\n}\n\n// WrappedErrors implements the errwrap.Wrapper interface to make this\n// return value more useful with the errwrap and go-multierror libraries.\nfunc (e *Error) WrappedErrors() []error {\n\tif e == nil {\n\t\treturn nil\n\t}\n\n\tresult := make([]error, len(e.Errors))\n\tfor i, e := range e.Errors {\n\t\tresult[i] = errors.New(e)\n\t}\n\n\treturn result\n}\n\nfunc appendErrors(errors []string, err error) []string {\n\tswitch e := err.(type) {\n\tcase *Error:\n\t\treturn append(errors, e.Errors...)\n\tdefault:\n\t\treturn append(errors, e.Error())\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/mitchellh/mapstructure/mapstructure.go",
    "content": "// Package mapstructure exposes functionality to convert one arbitrary\n// Go type into another, typically to convert a map[string]interface{}\n// into a native Go structure.\n//\n// The Go structure can be arbitrarily complex, containing slices,\n// other structs, etc. and the decoder will properly decode nested\n// maps and so on into the proper structures in the native Go struct.\n// See the examples to see what the decoder is capable of.\n//\n// The simplest function to start with is Decode.\n//\n// Field Tags\n//\n// When decoding to a struct, mapstructure will use the field name by\n// default to perform the mapping. For example, if a struct has a field\n// \"Username\" then mapstructure will look for a key in the source value\n// of \"username\" (case insensitive).\n//\n//     type User struct {\n//         Username string\n//     }\n//\n// You can change the behavior of mapstructure by using struct tags.\n// The default struct tag that mapstructure looks for is \"mapstructure\"\n// but you can customize it using DecoderConfig.\n//\n// Renaming Fields\n//\n// To rename the key that mapstructure looks for, use the \"mapstructure\"\n// tag and set a value directly. For example, to change the \"username\" example\n// above to \"user\":\n//\n//     type User struct {\n//         Username string `mapstructure:\"user\"`\n//     }\n//\n// Embedded Structs and Squashing\n//\n// Embedded structs are treated as if they're another field with that name.\n// By default, the two structs below are equivalent when decoding with\n// mapstructure:\n//\n//     type Person struct {\n//         Name string\n//     }\n//\n//     type Friend struct {\n//         Person\n//     }\n//\n//     type Friend struct {\n//         Person Person\n//     }\n//\n// This would require an input that looks like below:\n//\n//     map[string]interface{}{\n//         \"person\": map[string]interface{}{\"name\": \"alice\"},\n//     }\n//\n// If your \"person\" value is NOT nested, then you can append \",squash\" to\n// your tag value and mapstructure will treat it as if the embedded struct\n// were part of the struct directly. Example:\n//\n//     type Friend struct {\n//         Person `mapstructure:\",squash\"`\n//     }\n//\n// Now the following input would be accepted:\n//\n//     map[string]interface{}{\n//         \"name\": \"alice\",\n//     }\n//\n// When decoding from a struct to a map, the squash tag squashes the struct\n// fields into a single map. Using the example structs from above:\n//\n//     Friend{Person: Person{Name: \"alice\"}}\n//\n// Will be decoded into a map:\n//\n//     map[string]interface{}{\n//         \"name\": \"alice\",\n//     }\n//\n// DecoderConfig has a field that changes the behavior of mapstructure\n// to always squash embedded structs.\n//\n// Remainder Values\n//\n// If there are any unmapped keys in the source value, mapstructure by\n// default will silently ignore them. You can error by setting ErrorUnused\n// in DecoderConfig. If you're using Metadata you can also maintain a slice\n// of the unused keys.\n//\n// You can also use the \",remain\" suffix on your tag to collect all unused\n// values in a map. The field with this tag MUST be a map type and should\n// probably be a \"map[string]interface{}\" or \"map[interface{}]interface{}\".\n// See example below:\n//\n//     type Friend struct {\n//         Name  string\n//         Other map[string]interface{} `mapstructure:\",remain\"`\n//     }\n//\n// Given the input below, Other would be populated with the other\n// values that weren't used (everything but \"name\"):\n//\n//     map[string]interface{}{\n//         \"name\":    \"bob\",\n//         \"address\": \"123 Maple St.\",\n//     }\n//\n// Omit Empty Values\n//\n// When decoding from a struct to any other value, you may use the\n// \",omitempty\" suffix on your tag to omit that value if it equates to\n// the zero value. The zero value of all types is specified in the Go\n// specification.\n//\n// For example, the zero type of a numeric type is zero (\"0\"). If the struct\n// field value is zero and a numeric type, the field is empty, and it won't\n// be encoded into the destination type.\n//\n//     type Source struct {\n//         Age int `mapstructure:\",omitempty\"`\n//     }\n//\n// Unexported fields\n//\n// Since unexported (private) struct fields cannot be set outside the package\n// where they are defined, the decoder will simply skip them.\n//\n// For this output type definition:\n//\n//     type Exported struct {\n//         private string // this unexported field will be skipped\n//         Public string\n//     }\n//\n// Using this map as input:\n//\n//     map[string]interface{}{\n//         \"private\": \"I will be ignored\",\n//         \"Public\":  \"I made it through!\",\n//     }\n//\n// The following struct will be decoded:\n//\n//     type Exported struct {\n//         private: \"\" // field is left with an empty string (zero value)\n//         Public: \"I made it through!\"\n//     }\n//\n// Other Configuration\n//\n// mapstructure is highly configurable. See the DecoderConfig struct\n// for other features and options that are supported.\npackage mapstructure\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// DecodeHookFunc is the callback function that can be used for\n// data transformations. See \"DecodeHook\" in the DecoderConfig\n// struct.\n//\n// The type must be one of DecodeHookFuncType, DecodeHookFuncKind, or\n// DecodeHookFuncValue.\n// Values are a superset of Types (Values can return types), and Types are a\n// superset of Kinds (Types can return Kinds) and are generally a richer thing\n// to use, but Kinds are simpler if you only need those.\n//\n// The reason DecodeHookFunc is multi-typed is for backwards compatibility:\n// we started with Kinds and then realized Types were the better solution,\n// but have a promise to not break backwards compat so we now support\n// both.\ntype DecodeHookFunc interface{}\n\n// DecodeHookFuncType is a DecodeHookFunc which has complete information about\n// the source and target types.\ntype DecodeHookFuncType func(reflect.Type, reflect.Type, interface{}) (interface{}, error)\n\n// DecodeHookFuncKind is a DecodeHookFunc which knows only the Kinds of the\n// source and target types.\ntype DecodeHookFuncKind func(reflect.Kind, reflect.Kind, interface{}) (interface{}, error)\n\n// DecodeHookFuncValue is a DecodeHookFunc which has complete access to both the source and target\n// values.\ntype DecodeHookFuncValue func(from reflect.Value, to reflect.Value) (interface{}, error)\n\n// DecoderConfig is the configuration that is used to create a new decoder\n// and allows customization of various aspects of decoding.\ntype DecoderConfig struct {\n\t// DecodeHook, if set, will be called before any decoding and any\n\t// type conversion (if WeaklyTypedInput is on). This lets you modify\n\t// the values before they're set down onto the resulting struct. The\n\t// DecodeHook is called for every map and value in the input. This means\n\t// that if a struct has embedded fields with squash tags the decode hook\n\t// is called only once with all of the input data, not once for each\n\t// embedded struct.\n\t//\n\t// If an error is returned, the entire decode will fail with that error.\n\tDecodeHook DecodeHookFunc\n\n\t// If ErrorUnused is true, then it is an error for there to exist\n\t// keys in the original map that were unused in the decoding process\n\t// (extra keys).\n\tErrorUnused bool\n\n\t// If ErrorUnset is true, then it is an error for there to exist\n\t// fields in the result that were not set in the decoding process\n\t// (extra fields). This only applies to decoding to a struct. This\n\t// will affect all nested structs as well.\n\tErrorUnset bool\n\n\t// ZeroFields, if set to true, will zero fields before writing them.\n\t// For example, a map will be emptied before decoded values are put in\n\t// it. If this is false, a map will be merged.\n\tZeroFields bool\n\n\t// If WeaklyTypedInput is true, the decoder will make the following\n\t// \"weak\" conversions:\n\t//\n\t//   - bools to string (true = \"1\", false = \"0\")\n\t//   - numbers to string (base 10)\n\t//   - bools to int/uint (true = 1, false = 0)\n\t//   - strings to int/uint (base implied by prefix)\n\t//   - int to bool (true if value != 0)\n\t//   - string to bool (accepts: 1, t, T, TRUE, true, True, 0, f, F,\n\t//     FALSE, false, False. Anything else is an error)\n\t//   - empty array = empty map and vice versa\n\t//   - negative numbers to overflowed uint values (base 10)\n\t//   - slice of maps to a merged map\n\t//   - single values are converted to slices if required. Each\n\t//     element is weakly decoded. For example: \"4\" can become []int{4}\n\t//     if the target type is an int slice.\n\t//\n\tWeaklyTypedInput bool\n\n\t// Squash will squash embedded structs.  A squash tag may also be\n\t// added to an individual struct field using a tag.  For example:\n\t//\n\t//  type Parent struct {\n\t//      Child `mapstructure:\",squash\"`\n\t//  }\n\tSquash bool\n\n\t// Metadata is the struct that will contain extra metadata about\n\t// the decoding. If this is nil, then no metadata will be tracked.\n\tMetadata *Metadata\n\n\t// Result is a pointer to the struct that will contain the decoded\n\t// value.\n\tResult interface{}\n\n\t// The tag name that mapstructure reads for field names. This\n\t// defaults to \"mapstructure\"\n\tTagName string\n\n\t// IgnoreUntaggedFields ignores all struct fields without explicit\n\t// TagName, comparable to `mapstructure:\"-\"` as default behaviour.\n\tIgnoreUntaggedFields bool\n\n\t// MatchName is the function used to match the map key to the struct\n\t// field name or tag. Defaults to `strings.EqualFold`. This can be used\n\t// to implement case-sensitive tag values, support snake casing, etc.\n\tMatchName func(mapKey, fieldName string) bool\n}\n\n// A Decoder takes a raw interface value and turns it into structured\n// data, keeping track of rich error information along the way in case\n// anything goes wrong. Unlike the basic top-level Decode method, you can\n// more finely control how the Decoder behaves using the DecoderConfig\n// structure. The top-level Decode method is just a convenience that sets\n// up the most basic Decoder.\ntype Decoder struct {\n\tconfig *DecoderConfig\n}\n\n// Metadata contains information about decoding a structure that\n// is tedious or difficult to get otherwise.\ntype Metadata struct {\n\t// Keys are the keys of the structure which were successfully decoded\n\tKeys []string\n\n\t// Unused is a slice of keys that were found in the raw value but\n\t// weren't decoded since there was no matching field in the result interface\n\tUnused []string\n\n\t// Unset is a slice of field names that were found in the result interface\n\t// but weren't set in the decoding process since there was no matching value\n\t// in the input\n\tUnset []string\n}\n\n// Decode takes an input structure and uses reflection to translate it to\n// the output structure. output must be a pointer to a map or struct.\nfunc Decode(input interface{}, output interface{}) error {\n\tconfig := &DecoderConfig{\n\t\tMetadata: nil,\n\t\tResult:   output,\n\t}\n\n\tdecoder, err := NewDecoder(config)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn decoder.Decode(input)\n}\n\n// WeakDecode is the same as Decode but is shorthand to enable\n// WeaklyTypedInput. See DecoderConfig for more info.\nfunc WeakDecode(input, output interface{}) error {\n\tconfig := &DecoderConfig{\n\t\tMetadata:         nil,\n\t\tResult:           output,\n\t\tWeaklyTypedInput: true,\n\t}\n\n\tdecoder, err := NewDecoder(config)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn decoder.Decode(input)\n}\n\n// DecodeMetadata is the same as Decode, but is shorthand to\n// enable metadata collection. See DecoderConfig for more info.\nfunc DecodeMetadata(input interface{}, output interface{}, metadata *Metadata) error {\n\tconfig := &DecoderConfig{\n\t\tMetadata: metadata,\n\t\tResult:   output,\n\t}\n\n\tdecoder, err := NewDecoder(config)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn decoder.Decode(input)\n}\n\n// WeakDecodeMetadata is the same as Decode, but is shorthand to\n// enable both WeaklyTypedInput and metadata collection. See\n// DecoderConfig for more info.\nfunc WeakDecodeMetadata(input interface{}, output interface{}, metadata *Metadata) error {\n\tconfig := &DecoderConfig{\n\t\tMetadata:         metadata,\n\t\tResult:           output,\n\t\tWeaklyTypedInput: true,\n\t}\n\n\tdecoder, err := NewDecoder(config)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn decoder.Decode(input)\n}\n\n// NewDecoder returns a new decoder for the given configuration. Once\n// a decoder has been returned, the same configuration must not be used\n// again.\nfunc NewDecoder(config *DecoderConfig) (*Decoder, error) {\n\tval := reflect.ValueOf(config.Result)\n\tif val.Kind() != reflect.Ptr {\n\t\treturn nil, errors.New(\"result must be a pointer\")\n\t}\n\n\tval = val.Elem()\n\tif !val.CanAddr() {\n\t\treturn nil, errors.New(\"result must be addressable (a pointer)\")\n\t}\n\n\tif config.Metadata != nil {\n\t\tif config.Metadata.Keys == nil {\n\t\t\tconfig.Metadata.Keys = make([]string, 0)\n\t\t}\n\n\t\tif config.Metadata.Unused == nil {\n\t\t\tconfig.Metadata.Unused = make([]string, 0)\n\t\t}\n\n\t\tif config.Metadata.Unset == nil {\n\t\t\tconfig.Metadata.Unset = make([]string, 0)\n\t\t}\n\t}\n\n\tif config.TagName == \"\" {\n\t\tconfig.TagName = \"mapstructure\"\n\t}\n\n\tif config.MatchName == nil {\n\t\tconfig.MatchName = strings.EqualFold\n\t}\n\n\tresult := &Decoder{\n\t\tconfig: config,\n\t}\n\n\treturn result, nil\n}\n\n// Decode decodes the given raw interface to the target pointer specified\n// by the configuration.\nfunc (d *Decoder) Decode(input interface{}) error {\n\treturn d.decode(\"\", input, reflect.ValueOf(d.config.Result).Elem())\n}\n\n// Decodes an unknown data type into a specific reflection value.\nfunc (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) error {\n\tvar inputVal reflect.Value\n\tif input != nil {\n\t\tinputVal = reflect.ValueOf(input)\n\n\t\t// We need to check here if input is a typed nil. Typed nils won't\n\t\t// match the \"input == nil\" below so we check that here.\n\t\tif inputVal.Kind() == reflect.Ptr && inputVal.IsNil() {\n\t\t\tinput = nil\n\t\t}\n\t}\n\n\tif input == nil {\n\t\t// If the data is nil, then we don't set anything, unless ZeroFields is set\n\t\t// to true.\n\t\tif d.config.ZeroFields {\n\t\t\toutVal.Set(reflect.Zero(outVal.Type()))\n\n\t\t\tif d.config.Metadata != nil && name != \"\" {\n\t\t\t\td.config.Metadata.Keys = append(d.config.Metadata.Keys, name)\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\n\tif !inputVal.IsValid() {\n\t\t// If the input value is invalid, then we just set the value\n\t\t// to be the zero value.\n\t\toutVal.Set(reflect.Zero(outVal.Type()))\n\t\tif d.config.Metadata != nil && name != \"\" {\n\t\t\td.config.Metadata.Keys = append(d.config.Metadata.Keys, name)\n\t\t}\n\t\treturn nil\n\t}\n\n\tif d.config.DecodeHook != nil {\n\t\t// We have a DecodeHook, so let's pre-process the input.\n\t\tvar err error\n\t\tinput, err = DecodeHookExec(d.config.DecodeHook, inputVal, outVal)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error decoding '%s': %s\", name, err)\n\t\t}\n\t}\n\n\tvar err error\n\toutputKind := getKind(outVal)\n\taddMetaKey := true\n\tswitch outputKind {\n\tcase reflect.Bool:\n\t\terr = d.decodeBool(name, input, outVal)\n\tcase reflect.Interface:\n\t\terr = d.decodeBasic(name, input, outVal)\n\tcase reflect.String:\n\t\terr = d.decodeString(name, input, outVal)\n\tcase reflect.Int:\n\t\terr = d.decodeInt(name, input, outVal)\n\tcase reflect.Uint:\n\t\terr = d.decodeUint(name, input, outVal)\n\tcase reflect.Float32:\n\t\terr = d.decodeFloat(name, input, outVal)\n\tcase reflect.Struct:\n\t\terr = d.decodeStruct(name, input, outVal)\n\tcase reflect.Map:\n\t\terr = d.decodeMap(name, input, outVal)\n\tcase reflect.Ptr:\n\t\taddMetaKey, err = d.decodePtr(name, input, outVal)\n\tcase reflect.Slice:\n\t\terr = d.decodeSlice(name, input, outVal)\n\tcase reflect.Array:\n\t\terr = d.decodeArray(name, input, outVal)\n\tcase reflect.Func:\n\t\terr = d.decodeFunc(name, input, outVal)\n\tdefault:\n\t\t// If we reached this point then we weren't able to decode it\n\t\treturn fmt.Errorf(\"%s: unsupported type: %s\", name, outputKind)\n\t}\n\n\t// If we reached here, then we successfully decoded SOMETHING, so\n\t// mark the key as used if we're tracking metainput.\n\tif addMetaKey && d.config.Metadata != nil && name != \"\" {\n\t\td.config.Metadata.Keys = append(d.config.Metadata.Keys, name)\n\t}\n\n\treturn err\n}\n\n// This decodes a basic type (bool, int, string, etc.) and sets the\n// value to \"data\" of that type.\nfunc (d *Decoder) decodeBasic(name string, data interface{}, val reflect.Value) error {\n\tif val.IsValid() && val.Elem().IsValid() {\n\t\telem := val.Elem()\n\n\t\t// If we can't address this element, then its not writable. Instead,\n\t\t// we make a copy of the value (which is a pointer and therefore\n\t\t// writable), decode into that, and replace the whole value.\n\t\tcopied := false\n\t\tif !elem.CanAddr() {\n\t\t\tcopied = true\n\n\t\t\t// Make *T\n\t\t\tcopy := reflect.New(elem.Type())\n\n\t\t\t// *T = elem\n\t\t\tcopy.Elem().Set(elem)\n\n\t\t\t// Set elem so we decode into it\n\t\t\telem = copy\n\t\t}\n\n\t\t// Decode. If we have an error then return. We also return right\n\t\t// away if we're not a copy because that means we decoded directly.\n\t\tif err := d.decode(name, data, elem); err != nil || !copied {\n\t\t\treturn err\n\t\t}\n\n\t\t// If we're a copy, we need to set te final result\n\t\tval.Set(elem.Elem())\n\t\treturn nil\n\t}\n\n\tdataVal := reflect.ValueOf(data)\n\n\t// If the input data is a pointer, and the assigned type is the dereference\n\t// of that exact pointer, then indirect it so that we can assign it.\n\t// Example: *string to string\n\tif dataVal.Kind() == reflect.Ptr && dataVal.Type().Elem() == val.Type() {\n\t\tdataVal = reflect.Indirect(dataVal)\n\t}\n\n\tif !dataVal.IsValid() {\n\t\tdataVal = reflect.Zero(val.Type())\n\t}\n\n\tdataValType := dataVal.Type()\n\tif !dataValType.AssignableTo(val.Type()) {\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got '%s'\",\n\t\t\tname, val.Type(), dataValType)\n\t}\n\n\tval.Set(dataVal)\n\treturn nil\n}\n\nfunc (d *Decoder) decodeString(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataKind := getKind(dataVal)\n\n\tconverted := true\n\tswitch {\n\tcase dataKind == reflect.String:\n\t\tval.SetString(dataVal.String())\n\tcase dataKind == reflect.Bool && d.config.WeaklyTypedInput:\n\t\tif dataVal.Bool() {\n\t\t\tval.SetString(\"1\")\n\t\t} else {\n\t\t\tval.SetString(\"0\")\n\t\t}\n\tcase dataKind == reflect.Int && d.config.WeaklyTypedInput:\n\t\tval.SetString(strconv.FormatInt(dataVal.Int(), 10))\n\tcase dataKind == reflect.Uint && d.config.WeaklyTypedInput:\n\t\tval.SetString(strconv.FormatUint(dataVal.Uint(), 10))\n\tcase dataKind == reflect.Float32 && d.config.WeaklyTypedInput:\n\t\tval.SetString(strconv.FormatFloat(dataVal.Float(), 'f', -1, 64))\n\tcase dataKind == reflect.Slice && d.config.WeaklyTypedInput,\n\t\tdataKind == reflect.Array && d.config.WeaklyTypedInput:\n\t\tdataType := dataVal.Type()\n\t\telemKind := dataType.Elem().Kind()\n\t\tswitch elemKind {\n\t\tcase reflect.Uint8:\n\t\t\tvar uints []uint8\n\t\t\tif dataKind == reflect.Array {\n\t\t\t\tuints = make([]uint8, dataVal.Len(), dataVal.Len())\n\t\t\t\tfor i := range uints {\n\t\t\t\t\tuints[i] = dataVal.Index(i).Interface().(uint8)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tuints = dataVal.Interface().([]uint8)\n\t\t\t}\n\t\t\tval.SetString(string(uints))\n\t\tdefault:\n\t\t\tconverted = false\n\t\t}\n\tdefault:\n\t\tconverted = false\n\t}\n\n\tif !converted {\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got unconvertible type '%s', value: '%v'\",\n\t\t\tname, val.Type(), dataVal.Type(), data)\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeInt(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataKind := getKind(dataVal)\n\tdataType := dataVal.Type()\n\n\tswitch {\n\tcase dataKind == reflect.Int:\n\t\tval.SetInt(dataVal.Int())\n\tcase dataKind == reflect.Uint:\n\t\tval.SetInt(int64(dataVal.Uint()))\n\tcase dataKind == reflect.Float32:\n\t\tval.SetInt(int64(dataVal.Float()))\n\tcase dataKind == reflect.Bool && d.config.WeaklyTypedInput:\n\t\tif dataVal.Bool() {\n\t\t\tval.SetInt(1)\n\t\t} else {\n\t\t\tval.SetInt(0)\n\t\t}\n\tcase dataKind == reflect.String && d.config.WeaklyTypedInput:\n\t\tstr := dataVal.String()\n\t\tif str == \"\" {\n\t\t\tstr = \"0\"\n\t\t}\n\n\t\ti, err := strconv.ParseInt(str, 0, val.Type().Bits())\n\t\tif err == nil {\n\t\t\tval.SetInt(i)\n\t\t} else {\n\t\t\treturn fmt.Errorf(\"cannot parse '%s' as int: %s\", name, err)\n\t\t}\n\tcase dataType.PkgPath() == \"encoding/json\" && dataType.Name() == \"Number\":\n\t\tjn := data.(json.Number)\n\t\ti, err := jn.Int64()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\n\t\t\t\t\"error decoding json.Number into %s: %s\", name, err)\n\t\t}\n\t\tval.SetInt(i)\n\tdefault:\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got unconvertible type '%s', value: '%v'\",\n\t\t\tname, val.Type(), dataVal.Type(), data)\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeUint(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataKind := getKind(dataVal)\n\tdataType := dataVal.Type()\n\n\tswitch {\n\tcase dataKind == reflect.Int:\n\t\ti := dataVal.Int()\n\t\tif i < 0 && !d.config.WeaklyTypedInput {\n\t\t\treturn fmt.Errorf(\"cannot parse '%s', %d overflows uint\",\n\t\t\t\tname, i)\n\t\t}\n\t\tval.SetUint(uint64(i))\n\tcase dataKind == reflect.Uint:\n\t\tval.SetUint(dataVal.Uint())\n\tcase dataKind == reflect.Float32:\n\t\tf := dataVal.Float()\n\t\tif f < 0 && !d.config.WeaklyTypedInput {\n\t\t\treturn fmt.Errorf(\"cannot parse '%s', %f overflows uint\",\n\t\t\t\tname, f)\n\t\t}\n\t\tval.SetUint(uint64(f))\n\tcase dataKind == reflect.Bool && d.config.WeaklyTypedInput:\n\t\tif dataVal.Bool() {\n\t\t\tval.SetUint(1)\n\t\t} else {\n\t\t\tval.SetUint(0)\n\t\t}\n\tcase dataKind == reflect.String && d.config.WeaklyTypedInput:\n\t\tstr := dataVal.String()\n\t\tif str == \"\" {\n\t\t\tstr = \"0\"\n\t\t}\n\n\t\ti, err := strconv.ParseUint(str, 0, val.Type().Bits())\n\t\tif err == nil {\n\t\t\tval.SetUint(i)\n\t\t} else {\n\t\t\treturn fmt.Errorf(\"cannot parse '%s' as uint: %s\", name, err)\n\t\t}\n\tcase dataType.PkgPath() == \"encoding/json\" && dataType.Name() == \"Number\":\n\t\tjn := data.(json.Number)\n\t\ti, err := strconv.ParseUint(string(jn), 0, 64)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\n\t\t\t\t\"error decoding json.Number into %s: %s\", name, err)\n\t\t}\n\t\tval.SetUint(i)\n\tdefault:\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got unconvertible type '%s', value: '%v'\",\n\t\t\tname, val.Type(), dataVal.Type(), data)\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeBool(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataKind := getKind(dataVal)\n\n\tswitch {\n\tcase dataKind == reflect.Bool:\n\t\tval.SetBool(dataVal.Bool())\n\tcase dataKind == reflect.Int && d.config.WeaklyTypedInput:\n\t\tval.SetBool(dataVal.Int() != 0)\n\tcase dataKind == reflect.Uint && d.config.WeaklyTypedInput:\n\t\tval.SetBool(dataVal.Uint() != 0)\n\tcase dataKind == reflect.Float32 && d.config.WeaklyTypedInput:\n\t\tval.SetBool(dataVal.Float() != 0)\n\tcase dataKind == reflect.String && d.config.WeaklyTypedInput:\n\t\tb, err := strconv.ParseBool(dataVal.String())\n\t\tif err == nil {\n\t\t\tval.SetBool(b)\n\t\t} else if dataVal.String() == \"\" {\n\t\t\tval.SetBool(false)\n\t\t} else {\n\t\t\treturn fmt.Errorf(\"cannot parse '%s' as bool: %s\", name, err)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got unconvertible type '%s', value: '%v'\",\n\t\t\tname, val.Type(), dataVal.Type(), data)\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeFloat(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataKind := getKind(dataVal)\n\tdataType := dataVal.Type()\n\n\tswitch {\n\tcase dataKind == reflect.Int:\n\t\tval.SetFloat(float64(dataVal.Int()))\n\tcase dataKind == reflect.Uint:\n\t\tval.SetFloat(float64(dataVal.Uint()))\n\tcase dataKind == reflect.Float32:\n\t\tval.SetFloat(dataVal.Float())\n\tcase dataKind == reflect.Bool && d.config.WeaklyTypedInput:\n\t\tif dataVal.Bool() {\n\t\t\tval.SetFloat(1)\n\t\t} else {\n\t\t\tval.SetFloat(0)\n\t\t}\n\tcase dataKind == reflect.String && d.config.WeaklyTypedInput:\n\t\tstr := dataVal.String()\n\t\tif str == \"\" {\n\t\t\tstr = \"0\"\n\t\t}\n\n\t\tf, err := strconv.ParseFloat(str, val.Type().Bits())\n\t\tif err == nil {\n\t\t\tval.SetFloat(f)\n\t\t} else {\n\t\t\treturn fmt.Errorf(\"cannot parse '%s' as float: %s\", name, err)\n\t\t}\n\tcase dataType.PkgPath() == \"encoding/json\" && dataType.Name() == \"Number\":\n\t\tjn := data.(json.Number)\n\t\ti, err := jn.Float64()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\n\t\t\t\t\"error decoding json.Number into %s: %s\", name, err)\n\t\t}\n\t\tval.SetFloat(i)\n\tdefault:\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got unconvertible type '%s', value: '%v'\",\n\t\t\tname, val.Type(), dataVal.Type(), data)\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeMap(name string, data interface{}, val reflect.Value) error {\n\tvalType := val.Type()\n\tvalKeyType := valType.Key()\n\tvalElemType := valType.Elem()\n\n\t// By default we overwrite keys in the current map\n\tvalMap := val\n\n\t// If the map is nil or we're purposely zeroing fields, make a new map\n\tif valMap.IsNil() || d.config.ZeroFields {\n\t\t// Make a new map to hold our result\n\t\tmapType := reflect.MapOf(valKeyType, valElemType)\n\t\tvalMap = reflect.MakeMap(mapType)\n\t}\n\n\t// Check input type and based on the input type jump to the proper func\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tswitch dataVal.Kind() {\n\tcase reflect.Map:\n\t\treturn d.decodeMapFromMap(name, dataVal, val, valMap)\n\n\tcase reflect.Struct:\n\t\treturn d.decodeMapFromStruct(name, dataVal, val, valMap)\n\n\tcase reflect.Array, reflect.Slice:\n\t\tif d.config.WeaklyTypedInput {\n\t\t\treturn d.decodeMapFromSlice(name, dataVal, val, valMap)\n\t\t}\n\n\t\tfallthrough\n\n\tdefault:\n\t\treturn fmt.Errorf(\"'%s' expected a map, got '%s'\", name, dataVal.Kind())\n\t}\n}\n\nfunc (d *Decoder) decodeMapFromSlice(name string, dataVal reflect.Value, val reflect.Value, valMap reflect.Value) error {\n\t// Special case for BC reasons (covered by tests)\n\tif dataVal.Len() == 0 {\n\t\tval.Set(valMap)\n\t\treturn nil\n\t}\n\n\tfor i := 0; i < dataVal.Len(); i++ {\n\t\terr := d.decode(\n\t\t\tname+\"[\"+strconv.Itoa(i)+\"]\",\n\t\t\tdataVal.Index(i).Interface(), val)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeMapFromMap(name string, dataVal reflect.Value, val reflect.Value, valMap reflect.Value) error {\n\tvalType := val.Type()\n\tvalKeyType := valType.Key()\n\tvalElemType := valType.Elem()\n\n\t// Accumulate errors\n\terrors := make([]string, 0)\n\n\t// If the input data is empty, then we just match what the input data is.\n\tif dataVal.Len() == 0 {\n\t\tif dataVal.IsNil() {\n\t\t\tif !val.IsNil() {\n\t\t\t\tval.Set(dataVal)\n\t\t\t}\n\t\t} else {\n\t\t\t// Set to empty allocated value\n\t\t\tval.Set(valMap)\n\t\t}\n\n\t\treturn nil\n\t}\n\n\tfor _, k := range dataVal.MapKeys() {\n\t\tfieldName := name + \"[\" + k.String() + \"]\"\n\n\t\t// First decode the key into the proper type\n\t\tcurrentKey := reflect.Indirect(reflect.New(valKeyType))\n\t\tif err := d.decode(fieldName, k.Interface(), currentKey); err != nil {\n\t\t\terrors = appendErrors(errors, err)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Next decode the data into the proper type\n\t\tv := dataVal.MapIndex(k).Interface()\n\t\tcurrentVal := reflect.Indirect(reflect.New(valElemType))\n\t\tif err := d.decode(fieldName, v, currentVal); err != nil {\n\t\t\terrors = appendErrors(errors, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tvalMap.SetMapIndex(currentKey, currentVal)\n\t}\n\n\t// Set the built up map to the value\n\tval.Set(valMap)\n\n\t// If we had errors, return those\n\tif len(errors) > 0 {\n\t\treturn &Error{errors}\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeMapFromStruct(name string, dataVal reflect.Value, val reflect.Value, valMap reflect.Value) error {\n\ttyp := dataVal.Type()\n\tfor i := 0; i < typ.NumField(); i++ {\n\t\t// Get the StructField first since this is a cheap operation. If the\n\t\t// field is unexported, then ignore it.\n\t\tf := typ.Field(i)\n\t\tif f.PkgPath != \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Next get the actual value of this field and verify it is assignable\n\t\t// to the map value.\n\t\tv := dataVal.Field(i)\n\t\tif !v.Type().AssignableTo(valMap.Type().Elem()) {\n\t\t\treturn fmt.Errorf(\"cannot assign type '%s' to map value field of type '%s'\", v.Type(), valMap.Type().Elem())\n\t\t}\n\n\t\ttagValue := f.Tag.Get(d.config.TagName)\n\t\tkeyName := f.Name\n\n\t\tif tagValue == \"\" && d.config.IgnoreUntaggedFields {\n\t\t\tcontinue\n\t\t}\n\n\t\t// If Squash is set in the config, we squash the field down.\n\t\tsquash := d.config.Squash && v.Kind() == reflect.Struct && f.Anonymous\n\n\t\tv = dereferencePtrToStructIfNeeded(v, d.config.TagName)\n\n\t\t// Determine the name of the key in the map\n\t\tif index := strings.Index(tagValue, \",\"); index != -1 {\n\t\t\tif tagValue[:index] == \"-\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// If \"omitempty\" is specified in the tag, it ignores empty values.\n\t\t\tif strings.Index(tagValue[index+1:], \"omitempty\") != -1 && isEmptyValue(v) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// If \"squash\" is specified in the tag, we squash the field down.\n\t\t\tsquash = squash || strings.Index(tagValue[index+1:], \"squash\") != -1\n\t\t\tif squash {\n\t\t\t\t// When squashing, the embedded type can be a pointer to a struct.\n\t\t\t\tif v.Kind() == reflect.Ptr && v.Elem().Kind() == reflect.Struct {\n\t\t\t\t\tv = v.Elem()\n\t\t\t\t}\n\n\t\t\t\t// The final type must be a struct\n\t\t\t\tif v.Kind() != reflect.Struct {\n\t\t\t\t\treturn fmt.Errorf(\"cannot squash non-struct type '%s'\", v.Type())\n\t\t\t\t}\n\t\t\t}\n\t\t\tif keyNameTagValue := tagValue[:index]; keyNameTagValue != \"\" {\n\t\t\t\tkeyName = keyNameTagValue\n\t\t\t}\n\t\t} else if len(tagValue) > 0 {\n\t\t\tif tagValue == \"-\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tkeyName = tagValue\n\t\t}\n\n\t\tswitch v.Kind() {\n\t\t// this is an embedded struct, so handle it differently\n\t\tcase reflect.Struct:\n\t\t\tx := reflect.New(v.Type())\n\t\t\tx.Elem().Set(v)\n\n\t\t\tvType := valMap.Type()\n\t\t\tvKeyType := vType.Key()\n\t\t\tvElemType := vType.Elem()\n\t\t\tmType := reflect.MapOf(vKeyType, vElemType)\n\t\t\tvMap := reflect.MakeMap(mType)\n\n\t\t\t// Creating a pointer to a map so that other methods can completely\n\t\t\t// overwrite the map if need be (looking at you decodeMapFromMap). The\n\t\t\t// indirection allows the underlying map to be settable (CanSet() == true)\n\t\t\t// where as reflect.MakeMap returns an unsettable map.\n\t\t\taddrVal := reflect.New(vMap.Type())\n\t\t\treflect.Indirect(addrVal).Set(vMap)\n\n\t\t\terr := d.decode(keyName, x.Interface(), reflect.Indirect(addrVal))\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\t// the underlying map may have been completely overwritten so pull\n\t\t\t// it indirectly out of the enclosing value.\n\t\t\tvMap = reflect.Indirect(addrVal)\n\n\t\t\tif squash {\n\t\t\t\tfor _, k := range vMap.MapKeys() {\n\t\t\t\t\tvalMap.SetMapIndex(k, vMap.MapIndex(k))\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvalMap.SetMapIndex(reflect.ValueOf(keyName), vMap)\n\t\t\t}\n\n\t\tdefault:\n\t\t\tvalMap.SetMapIndex(reflect.ValueOf(keyName), v)\n\t\t}\n\t}\n\n\tif val.CanAddr() {\n\t\tval.Set(valMap)\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodePtr(name string, data interface{}, val reflect.Value) (bool, error) {\n\t// If the input data is nil, then we want to just set the output\n\t// pointer to be nil as well.\n\tisNil := data == nil\n\tif !isNil {\n\t\tswitch v := reflect.Indirect(reflect.ValueOf(data)); v.Kind() {\n\t\tcase reflect.Chan,\n\t\t\treflect.Func,\n\t\t\treflect.Interface,\n\t\t\treflect.Map,\n\t\t\treflect.Ptr,\n\t\t\treflect.Slice:\n\t\t\tisNil = v.IsNil()\n\t\t}\n\t}\n\tif isNil {\n\t\tif !val.IsNil() && val.CanSet() {\n\t\t\tnilValue := reflect.New(val.Type()).Elem()\n\t\t\tval.Set(nilValue)\n\t\t}\n\n\t\treturn true, nil\n\t}\n\n\t// Create an element of the concrete (non pointer) type and decode\n\t// into that. Then set the value of the pointer to this type.\n\tvalType := val.Type()\n\tvalElemType := valType.Elem()\n\tif val.CanSet() {\n\t\trealVal := val\n\t\tif realVal.IsNil() || d.config.ZeroFields {\n\t\t\trealVal = reflect.New(valElemType)\n\t\t}\n\n\t\tif err := d.decode(name, data, reflect.Indirect(realVal)); err != nil {\n\t\t\treturn false, err\n\t\t}\n\n\t\tval.Set(realVal)\n\t} else {\n\t\tif err := d.decode(name, data, reflect.Indirect(val)); err != nil {\n\t\t\treturn false, err\n\t\t}\n\t}\n\treturn false, nil\n}\n\nfunc (d *Decoder) decodeFunc(name string, data interface{}, val reflect.Value) error {\n\t// Create an element of the concrete (non pointer) type and decode\n\t// into that. Then set the value of the pointer to this type.\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tif val.Type() != dataVal.Type() {\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' expected type '%s', got unconvertible type '%s', value: '%v'\",\n\t\t\tname, val.Type(), dataVal.Type(), data)\n\t}\n\tval.Set(dataVal)\n\treturn nil\n}\n\nfunc (d *Decoder) decodeSlice(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataValKind := dataVal.Kind()\n\tvalType := val.Type()\n\tvalElemType := valType.Elem()\n\tsliceType := reflect.SliceOf(valElemType)\n\n\t// If we have a non array/slice type then we first attempt to convert.\n\tif dataValKind != reflect.Array && dataValKind != reflect.Slice {\n\t\tif d.config.WeaklyTypedInput {\n\t\t\tswitch {\n\t\t\t// Slice and array we use the normal logic\n\t\t\tcase dataValKind == reflect.Slice, dataValKind == reflect.Array:\n\t\t\t\tbreak\n\n\t\t\t// Empty maps turn into empty slices\n\t\t\tcase dataValKind == reflect.Map:\n\t\t\t\tif dataVal.Len() == 0 {\n\t\t\t\t\tval.Set(reflect.MakeSlice(sliceType, 0, 0))\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\t// Create slice of maps of other sizes\n\t\t\t\treturn d.decodeSlice(name, []interface{}{data}, val)\n\n\t\t\tcase dataValKind == reflect.String && valElemType.Kind() == reflect.Uint8:\n\t\t\t\treturn d.decodeSlice(name, []byte(dataVal.String()), val)\n\n\t\t\t// All other types we try to convert to the slice type\n\t\t\t// and \"lift\" it into it. i.e. a string becomes a string slice.\n\t\t\tdefault:\n\t\t\t\t// Just re-try this function with data as a slice.\n\t\t\t\treturn d.decodeSlice(name, []interface{}{data}, val)\n\t\t\t}\n\t\t}\n\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s': source data must be an array or slice, got %s\", name, dataValKind)\n\t}\n\n\t// If the input value is nil, then don't allocate since empty != nil\n\tif dataValKind != reflect.Array && dataVal.IsNil() {\n\t\treturn nil\n\t}\n\n\tvalSlice := val\n\tif valSlice.IsNil() || d.config.ZeroFields {\n\t\t// Make a new slice to hold our result, same size as the original data.\n\t\tvalSlice = reflect.MakeSlice(sliceType, dataVal.Len(), dataVal.Len())\n\t}\n\n\t// Accumulate any errors\n\terrors := make([]string, 0)\n\n\tfor i := 0; i < dataVal.Len(); i++ {\n\t\tcurrentData := dataVal.Index(i).Interface()\n\t\tfor valSlice.Len() <= i {\n\t\t\tvalSlice = reflect.Append(valSlice, reflect.Zero(valElemType))\n\t\t}\n\t\tcurrentField := valSlice.Index(i)\n\n\t\tfieldName := name + \"[\" + strconv.Itoa(i) + \"]\"\n\t\tif err := d.decode(fieldName, currentData, currentField); err != nil {\n\t\t\terrors = appendErrors(errors, err)\n\t\t}\n\t}\n\n\t// Finally, set the value to the slice we built up\n\tval.Set(valSlice)\n\n\t// If there were errors, we return those\n\tif len(errors) > 0 {\n\t\treturn &Error{errors}\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeArray(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\tdataValKind := dataVal.Kind()\n\tvalType := val.Type()\n\tvalElemType := valType.Elem()\n\tarrayType := reflect.ArrayOf(valType.Len(), valElemType)\n\n\tvalArray := val\n\n\tif valArray.Interface() == reflect.Zero(valArray.Type()).Interface() || d.config.ZeroFields {\n\t\t// Check input type\n\t\tif dataValKind != reflect.Array && dataValKind != reflect.Slice {\n\t\t\tif d.config.WeaklyTypedInput {\n\t\t\t\tswitch {\n\t\t\t\t// Empty maps turn into empty arrays\n\t\t\t\tcase dataValKind == reflect.Map:\n\t\t\t\t\tif dataVal.Len() == 0 {\n\t\t\t\t\t\tval.Set(reflect.Zero(arrayType))\n\t\t\t\t\t\treturn nil\n\t\t\t\t\t}\n\n\t\t\t\t// All other types we try to convert to the array type\n\t\t\t\t// and \"lift\" it into it. i.e. a string becomes a string array.\n\t\t\t\tdefault:\n\t\t\t\t\t// Just re-try this function with data as a slice.\n\t\t\t\t\treturn d.decodeArray(name, []interface{}{data}, val)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn fmt.Errorf(\n\t\t\t\t\"'%s': source data must be an array or slice, got %s\", name, dataValKind)\n\n\t\t}\n\t\tif dataVal.Len() > arrayType.Len() {\n\t\t\treturn fmt.Errorf(\n\t\t\t\t\"'%s': expected source data to have length less or equal to %d, got %d\", name, arrayType.Len(), dataVal.Len())\n\n\t\t}\n\n\t\t// Make a new array to hold our result, same size as the original data.\n\t\tvalArray = reflect.New(arrayType).Elem()\n\t}\n\n\t// Accumulate any errors\n\terrors := make([]string, 0)\n\n\tfor i := 0; i < dataVal.Len(); i++ {\n\t\tcurrentData := dataVal.Index(i).Interface()\n\t\tcurrentField := valArray.Index(i)\n\n\t\tfieldName := name + \"[\" + strconv.Itoa(i) + \"]\"\n\t\tif err := d.decode(fieldName, currentData, currentField); err != nil {\n\t\t\terrors = appendErrors(errors, err)\n\t\t}\n\t}\n\n\t// Finally, set the value to the array we built up\n\tval.Set(valArray)\n\n\t// If there were errors, we return those\n\tif len(errors) > 0 {\n\t\treturn &Error{errors}\n\t}\n\n\treturn nil\n}\n\nfunc (d *Decoder) decodeStruct(name string, data interface{}, val reflect.Value) error {\n\tdataVal := reflect.Indirect(reflect.ValueOf(data))\n\n\t// If the type of the value to write to and the data match directly,\n\t// then we just set it directly instead of recursing into the structure.\n\tif dataVal.Type() == val.Type() {\n\t\tval.Set(dataVal)\n\t\treturn nil\n\t}\n\n\tdataValKind := dataVal.Kind()\n\tswitch dataValKind {\n\tcase reflect.Map:\n\t\treturn d.decodeStructFromMap(name, dataVal, val)\n\n\tcase reflect.Struct:\n\t\t// Not the most efficient way to do this but we can optimize later if\n\t\t// we want to. To convert from struct to struct we go to map first\n\t\t// as an intermediary.\n\n\t\t// Make a new map to hold our result\n\t\tmapType := reflect.TypeOf((map[string]interface{})(nil))\n\t\tmval := reflect.MakeMap(mapType)\n\n\t\t// Creating a pointer to a map so that other methods can completely\n\t\t// overwrite the map if need be (looking at you decodeMapFromMap). The\n\t\t// indirection allows the underlying map to be settable (CanSet() == true)\n\t\t// where as reflect.MakeMap returns an unsettable map.\n\t\taddrVal := reflect.New(mval.Type())\n\n\t\treflect.Indirect(addrVal).Set(mval)\n\t\tif err := d.decodeMapFromStruct(name, dataVal, reflect.Indirect(addrVal), mval); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tresult := d.decodeStructFromMap(name, reflect.Indirect(addrVal), val)\n\t\treturn result\n\n\tdefault:\n\t\treturn fmt.Errorf(\"'%s' expected a map, got '%s'\", name, dataVal.Kind())\n\t}\n}\n\nfunc (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) error {\n\tdataValType := dataVal.Type()\n\tif kind := dataValType.Key().Kind(); kind != reflect.String && kind != reflect.Interface {\n\t\treturn fmt.Errorf(\n\t\t\t\"'%s' needs a map with string keys, has '%s' keys\",\n\t\t\tname, dataValType.Key().Kind())\n\t}\n\n\tdataValKeys := make(map[reflect.Value]struct{})\n\tdataValKeysUnused := make(map[interface{}]struct{})\n\tfor _, dataValKey := range dataVal.MapKeys() {\n\t\tdataValKeys[dataValKey] = struct{}{}\n\t\tdataValKeysUnused[dataValKey.Interface()] = struct{}{}\n\t}\n\n\ttargetValKeysUnused := make(map[interface{}]struct{})\n\terrors := make([]string, 0)\n\n\t// This slice will keep track of all the structs we'll be decoding.\n\t// There can be more than one struct if there are embedded structs\n\t// that are squashed.\n\tstructs := make([]reflect.Value, 1, 5)\n\tstructs[0] = val\n\n\t// Compile the list of all the fields that we're going to be decoding\n\t// from all the structs.\n\ttype field struct {\n\t\tfield reflect.StructField\n\t\tval   reflect.Value\n\t}\n\n\t// remainField is set to a valid field set with the \"remain\" tag if\n\t// we are keeping track of remaining values.\n\tvar remainField *field\n\n\tfields := []field{}\n\tfor len(structs) > 0 {\n\t\tstructVal := structs[0]\n\t\tstructs = structs[1:]\n\n\t\tstructType := structVal.Type()\n\n\t\tfor i := 0; i < structType.NumField(); i++ {\n\t\t\tfieldType := structType.Field(i)\n\t\t\tfieldVal := structVal.Field(i)\n\t\t\tif fieldVal.Kind() == reflect.Ptr && fieldVal.Elem().Kind() == reflect.Struct {\n\t\t\t\t// Handle embedded struct pointers as embedded structs.\n\t\t\t\tfieldVal = fieldVal.Elem()\n\t\t\t}\n\n\t\t\t// If \"squash\" is specified in the tag, we squash the field down.\n\t\t\tsquash := d.config.Squash && fieldVal.Kind() == reflect.Struct && fieldType.Anonymous\n\t\t\tremain := false\n\n\t\t\t// We always parse the tags cause we're looking for other tags too\n\t\t\ttagParts := strings.Split(fieldType.Tag.Get(d.config.TagName), \",\")\n\t\t\tfor _, tag := range tagParts[1:] {\n\t\t\t\tif tag == \"squash\" {\n\t\t\t\t\tsquash = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tif tag == \"remain\" {\n\t\t\t\t\tremain = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif squash {\n\t\t\t\tif fieldVal.Kind() != reflect.Struct {\n\t\t\t\t\terrors = appendErrors(errors,\n\t\t\t\t\t\tfmt.Errorf(\"%s: unsupported type for squash: %s\", fieldType.Name, fieldVal.Kind()))\n\t\t\t\t} else {\n\t\t\t\t\tstructs = append(structs, fieldVal)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Build our field\n\t\t\tif remain {\n\t\t\t\tremainField = &field{fieldType, fieldVal}\n\t\t\t} else {\n\t\t\t\t// Normal struct field, store it away\n\t\t\t\tfields = append(fields, field{fieldType, fieldVal})\n\t\t\t}\n\t\t}\n\t}\n\n\t// for fieldType, field := range fields {\n\tfor _, f := range fields {\n\t\tfield, fieldValue := f.field, f.val\n\t\tfieldName := field.Name\n\n\t\ttagValue := field.Tag.Get(d.config.TagName)\n\t\ttagValue = strings.SplitN(tagValue, \",\", 2)[0]\n\t\tif tagValue != \"\" {\n\t\t\tfieldName = tagValue\n\t\t}\n\n\t\trawMapKey := reflect.ValueOf(fieldName)\n\t\trawMapVal := dataVal.MapIndex(rawMapKey)\n\t\tif !rawMapVal.IsValid() {\n\t\t\t// Do a slower search by iterating over each key and\n\t\t\t// doing case-insensitive search.\n\t\t\tfor dataValKey := range dataValKeys {\n\t\t\t\tmK, ok := dataValKey.Interface().(string)\n\t\t\t\tif !ok {\n\t\t\t\t\t// Not a string key\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tif d.config.MatchName(mK, fieldName) {\n\t\t\t\t\trawMapKey = dataValKey\n\t\t\t\t\trawMapVal = dataVal.MapIndex(dataValKey)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif !rawMapVal.IsValid() {\n\t\t\t\t// There was no matching key in the map for the value in\n\t\t\t\t// the struct. Remember it for potential errors and metadata.\n\t\t\t\ttargetValKeysUnused[fieldName] = struct{}{}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif !fieldValue.IsValid() {\n\t\t\t// This should never happen\n\t\t\tpanic(\"field is not valid\")\n\t\t}\n\n\t\t// If we can't set the field, then it is unexported or something,\n\t\t// and we just continue onwards.\n\t\tif !fieldValue.CanSet() {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Delete the key we're using from the unused map so we stop tracking\n\t\tdelete(dataValKeysUnused, rawMapKey.Interface())\n\n\t\t// If the name is empty string, then we're at the root, and we\n\t\t// don't dot-join the fields.\n\t\tif name != \"\" {\n\t\t\tfieldName = name + \".\" + fieldName\n\t\t}\n\n\t\tif err := d.decode(fieldName, rawMapVal.Interface(), fieldValue); err != nil {\n\t\t\terrors = appendErrors(errors, err)\n\t\t}\n\t}\n\n\t// If we have a \"remain\"-tagged field and we have unused keys then\n\t// we put the unused keys directly into the remain field.\n\tif remainField != nil && len(dataValKeysUnused) > 0 {\n\t\t// Build a map of only the unused values\n\t\tremain := map[interface{}]interface{}{}\n\t\tfor key := range dataValKeysUnused {\n\t\t\tremain[key] = dataVal.MapIndex(reflect.ValueOf(key)).Interface()\n\t\t}\n\n\t\t// Decode it as-if we were just decoding this map onto our map.\n\t\tif err := d.decodeMap(name, remain, remainField.val); err != nil {\n\t\t\terrors = appendErrors(errors, err)\n\t\t}\n\n\t\t// Set the map to nil so we have none so that the next check will\n\t\t// not error (ErrorUnused)\n\t\tdataValKeysUnused = nil\n\t}\n\n\tif d.config.ErrorUnused && len(dataValKeysUnused) > 0 {\n\t\tkeys := make([]string, 0, len(dataValKeysUnused))\n\t\tfor rawKey := range dataValKeysUnused {\n\t\t\tkeys = append(keys, rawKey.(string))\n\t\t}\n\t\tsort.Strings(keys)\n\n\t\terr := fmt.Errorf(\"'%s' has invalid keys: %s\", name, strings.Join(keys, \", \"))\n\t\terrors = appendErrors(errors, err)\n\t}\n\n\tif d.config.ErrorUnset && len(targetValKeysUnused) > 0 {\n\t\tkeys := make([]string, 0, len(targetValKeysUnused))\n\t\tfor rawKey := range targetValKeysUnused {\n\t\t\tkeys = append(keys, rawKey.(string))\n\t\t}\n\t\tsort.Strings(keys)\n\n\t\terr := fmt.Errorf(\"'%s' has unset fields: %s\", name, strings.Join(keys, \", \"))\n\t\terrors = appendErrors(errors, err)\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn &Error{errors}\n\t}\n\n\t// Add the unused keys to the list of unused keys if we're tracking metadata\n\tif d.config.Metadata != nil {\n\t\tfor rawKey := range dataValKeysUnused {\n\t\t\tkey := rawKey.(string)\n\t\t\tif name != \"\" {\n\t\t\t\tkey = name + \".\" + key\n\t\t\t}\n\n\t\t\td.config.Metadata.Unused = append(d.config.Metadata.Unused, key)\n\t\t}\n\t\tfor rawKey := range targetValKeysUnused {\n\t\t\tkey := rawKey.(string)\n\t\t\tif name != \"\" {\n\t\t\t\tkey = name + \".\" + key\n\t\t\t}\n\n\t\t\td.config.Metadata.Unset = append(d.config.Metadata.Unset, key)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc isEmptyValue(v reflect.Value) bool {\n\tswitch getKind(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 getKind(val reflect.Value) reflect.Kind {\n\tkind := val.Kind()\n\n\tswitch {\n\tcase kind >= reflect.Int && kind <= reflect.Int64:\n\t\treturn reflect.Int\n\tcase kind >= reflect.Uint && kind <= reflect.Uint64:\n\t\treturn reflect.Uint\n\tcase kind >= reflect.Float32 && kind <= reflect.Float64:\n\t\treturn reflect.Float32\n\tdefault:\n\t\treturn kind\n\t}\n}\n\nfunc isStructTypeConvertibleToMap(typ reflect.Type, checkMapstructureTags bool, tagName string) bool {\n\tfor i := 0; i < typ.NumField(); i++ {\n\t\tf := typ.Field(i)\n\t\tif f.PkgPath == \"\" && !checkMapstructureTags { // check for unexported fields\n\t\t\treturn true\n\t\t}\n\t\tif checkMapstructureTags && f.Tag.Get(tagName) != \"\" { // check for mapstructure tags inside\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc dereferencePtrToStructIfNeeded(v reflect.Value, tagName string) reflect.Value {\n\tif v.Kind() != reflect.Ptr || v.Elem().Kind() != reflect.Struct {\n\t\treturn v\n\t}\n\tderef := v.Elem()\n\tderefT := deref.Type()\n\tif isStructTypeConvertibleToMap(derefT, true, tagName) {\n\t\treturn deref\n\t}\n\treturn v\n}\n"
  },
  {
    "path": "vendor/github.com/ryanuber/go-glob/.travis.yml",
    "content": "language: go\ngo:\n  - tip\nscript:\n  - go test -v ./...\n"
  },
  {
    "path": "vendor/github.com/ryanuber/go-glob/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Ryan Uber\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/ryanuber/go-glob/README.md",
    "content": "# String globbing in golang [![Build Status](https://travis-ci.org/ryanuber/go-glob.svg)](https://travis-ci.org/ryanuber/go-glob)\n\n`go-glob` is a single-function library implementing basic string glob support.\n\nGlobs are an extremely user-friendly way of supporting string matching without\nrequiring knowledge of regular expressions or Go's particular regex engine. Most\npeople understand that if you put a `*` character somewhere in a string, it is\ntreated as a wildcard. Surprisingly, this functionality isn't found in Go's\nstandard library, except for `path.Match`, which is intended to be used while\ncomparing paths (not arbitrary strings), and contains specialized logic for this\nuse case. A better solution might be a POSIX basic (non-ERE) regular expression\nengine for Go, which doesn't exist currently.\n\nExample\n=======\n\n```\npackage main\n\nimport \"github.com/ryanuber/go-glob\"\n\nfunc main() {\n    glob.Glob(\"*World!\", \"Hello, World!\") // true\n    glob.Glob(\"Hello,*\", \"Hello, World!\") // true\n    glob.Glob(\"*ello,*\", \"Hello, World!\") // true\n    glob.Glob(\"World!\", \"Hello, World!\")  // false\n    glob.Glob(\"/home/*\", \"/home/ryanuber/.bashrc\") // true\n}\n```\n"
  },
  {
    "path": "vendor/github.com/ryanuber/go-glob/glob.go",
    "content": "package glob\n\nimport \"strings\"\n\n// The character which is treated like a glob\nconst GLOB = \"*\"\n\n// Glob will test a string pattern, potentially containing globs, against a\n// subject string. The result is a simple true/false, determining whether or\n// not the glob pattern matched the subject text.\nfunc Glob(pattern, subj string) bool {\n\t// Empty pattern can only match empty subject\n\tif pattern == \"\" {\n\t\treturn subj == pattern\n\t}\n\n\t// If the pattern _is_ a glob, it matches everything\n\tif pattern == GLOB {\n\t\treturn true\n\t}\n\n\tparts := strings.Split(pattern, GLOB)\n\n\tif len(parts) == 1 {\n\t\t// No globs in pattern, so test for equality\n\t\treturn subj == pattern\n\t}\n\n\tleadingGlob := strings.HasPrefix(pattern, GLOB)\n\ttrailingGlob := strings.HasSuffix(pattern, GLOB)\n\tend := len(parts) - 1\n\n\t// Go over the leading parts and ensure they match.\n\tfor i := 0; i < end; i++ {\n\t\tidx := strings.Index(subj, parts[i])\n\n\t\tswitch i {\n\t\tcase 0:\n\t\t\t// Check the first section. Requires special handling.\n\t\t\tif !leadingGlob && idx != 0 {\n\t\t\t\treturn false\n\t\t\t}\n\t\tdefault:\n\t\t\t// Check that the middle parts match.\n\t\t\tif idx < 0 {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Trim evaluated text from subj as we loop over the pattern.\n\t\tsubj = subj[idx+len(parts[i]):]\n\t}\n\n\t// Reached the last section. Requires special handling.\n\treturn trailingGlob || strings.HasSuffix(subj, parts[end])\n}\n"
  },
  {
    "path": "vendor/github.com/samuel/go-zookeeper/LICENSE",
    "content": "Copyright (c) 2013, Samuel Stauffer <samuel@descolada.com>\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright\n  notice, this list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright\n  notice, this list of conditions and the following disclaimer in the\n  documentation and/or other materials provided with the distribution.\n* Neither the name of the author nor the\n  names of its contributors may be used to endorse or promote products\n  derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON 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\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/github.com/samuel/go-zookeeper/zk/conn.go",
    "content": "// Package zk is a native Go client library for the ZooKeeper orchestration service.\npackage zk\n\n/*\nTODO:\n* make sure a ping response comes back in a reasonable time\n\nPossible watcher events:\n* Event{Type: EventNotWatching, State: StateDisconnected, Path: path, Err: err}\n*/\n\nimport (\n\t\"crypto/rand\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n)\n\n// ErrNoServer indicates that an operation cannot be completed\n// because attempts to connect to all servers in the list failed.\nvar ErrNoServer = errors.New(\"zk: could not connect to a server\")\n\n// ErrInvalidPath indicates that an operation was being attempted on\n// an invalid path. (e.g. empty path)\nvar ErrInvalidPath = errors.New(\"zk: invalid path\")\n\n// DefaultLogger uses the stdlib log package for logging.\nvar DefaultLogger Logger = defaultLogger{}\n\nconst (\n\tbufferSize      = 1536 * 1024\n\teventChanSize   = 6\n\tsendChanSize    = 16\n\tprotectedPrefix = \"_c_\"\n)\n\ntype watchType int\n\nconst (\n\twatchTypeData = iota\n\twatchTypeExist\n\twatchTypeChild\n)\n\ntype watchPathType struct {\n\tpath  string\n\twType watchType\n}\n\ntype Dialer func(network, address string, timeout time.Duration) (net.Conn, error)\n\n// Logger is an interface that can be implemented to provide custom log output.\ntype Logger interface {\n\tPrintf(string, ...interface{})\n}\n\ntype authCreds struct {\n\tscheme string\n\tauth   []byte\n}\n\ntype Conn struct {\n\tlastZxid         int64\n\tsessionID        int64\n\tstate            State // must be 32-bit aligned\n\txid              uint32\n\tsessionTimeoutMs int32 // session timeout in milliseconds\n\tpasswd           []byte\n\n\tdialer         Dialer\n\thostProvider   HostProvider\n\tserverMu       sync.Mutex // protects server\n\tserver         string     // remember the address/port of the current server\n\tconn           net.Conn\n\teventChan      chan Event\n\teventCallback  EventCallback // may be nil\n\tshouldQuit     chan struct{}\n\tpingInterval   time.Duration\n\trecvTimeout    time.Duration\n\tconnectTimeout time.Duration\n\tmaxBufferSize  int\n\n\tcreds   []authCreds\n\tcredsMu sync.Mutex // protects server\n\n\tsendChan     chan *request\n\trequests     map[int32]*request // Xid -> pending request\n\trequestsLock sync.Mutex\n\twatchers     map[watchPathType][]chan Event\n\twatchersLock sync.Mutex\n\tcloseChan    chan struct{} // channel to tell send loop stop\n\n\t// Debug (used by unit tests)\n\treconnectLatch   chan struct{}\n\tsetWatchLimit    int\n\tsetWatchCallback func([]*setWatchesRequest)\n\t// Debug (for recurring re-auth hang)\n\tdebugCloseRecvLoop bool\n\tdebugReauthDone    chan struct{}\n\n\tlogger  Logger\n\tlogInfo bool // true if information messages are logged; false if only errors are logged\n\n\tbuf []byte\n}\n\n// connOption represents a connection option.\ntype connOption func(c *Conn)\n\ntype request struct {\n\txid        int32\n\topcode     int32\n\tpkt        interface{}\n\trecvStruct interface{}\n\trecvChan   chan response\n\n\t// Because sending and receiving happen in separate go routines, there's\n\t// a possible race condition when creating watches from outside the read\n\t// loop. We must ensure that a watcher gets added to the list synchronously\n\t// with the response from the server on any request that creates a watch.\n\t// In order to not hard code the watch logic for each opcode in the recv\n\t// loop the caller can use recvFunc to insert some synchronously code\n\t// after a response.\n\trecvFunc func(*request, *responseHeader, error)\n}\n\ntype response struct {\n\tzxid int64\n\terr  error\n}\n\ntype Event struct {\n\tType   EventType\n\tState  State\n\tPath   string // For non-session events, the path of the watched node.\n\tErr    error\n\tServer string // For connection events\n}\n\n// HostProvider is used to represent a set of hosts a ZooKeeper client should connect to.\n// It is an analog of the Java equivalent:\n// http://svn.apache.org/viewvc/zookeeper/trunk/src/java/main/org/apache/zookeeper/client/HostProvider.java?view=markup\ntype HostProvider interface {\n\t// Init is called first, with the servers specified in the connection string.\n\tInit(servers []string) error\n\t// Len returns the number of servers.\n\tLen() int\n\t// Next returns the next server to connect to. retryStart will be true if we've looped through\n\t// all known servers without Connected() being called.\n\tNext() (server string, retryStart bool)\n\t// Notify the HostProvider of a successful connection.\n\tConnected()\n}\n\n// ConnectWithDialer establishes a new connection to a pool of zookeeper servers\n// using a custom Dialer. See Connect for further information about session timeout.\n// This method is deprecated and provided for compatibility: use the WithDialer option instead.\nfunc ConnectWithDialer(servers []string, sessionTimeout time.Duration, dialer Dialer) (*Conn, <-chan Event, error) {\n\treturn Connect(servers, sessionTimeout, WithDialer(dialer))\n}\n\n// Connect establishes a new connection to a pool of zookeeper\n// servers. The provided session timeout sets the amount of time for which\n// a session is considered valid after losing connection to a server. Within\n// the session timeout it's possible to reestablish a connection to a different\n// server and keep the same session. This is means any ephemeral nodes and\n// watches are maintained.\nfunc Connect(servers []string, sessionTimeout time.Duration, options ...connOption) (*Conn, <-chan Event, error) {\n\tif len(servers) == 0 {\n\t\treturn nil, nil, errors.New(\"zk: server list must not be empty\")\n\t}\n\n\tsrvs := make([]string, len(servers))\n\n\tfor i, addr := range servers {\n\t\tif strings.Contains(addr, \":\") {\n\t\t\tsrvs[i] = addr\n\t\t} else {\n\t\t\tsrvs[i] = addr + \":\" + strconv.Itoa(DefaultPort)\n\t\t}\n\t}\n\n\t// Randomize the order of the servers to avoid creating hotspots\n\tstringShuffle(srvs)\n\n\tec := make(chan Event, eventChanSize)\n\tconn := &Conn{\n\t\tdialer:         net.DialTimeout,\n\t\thostProvider:   &DNSHostProvider{},\n\t\tconn:           nil,\n\t\tstate:          StateDisconnected,\n\t\teventChan:      ec,\n\t\tshouldQuit:     make(chan struct{}),\n\t\tconnectTimeout: 1 * time.Second,\n\t\tsendChan:       make(chan *request, sendChanSize),\n\t\trequests:       make(map[int32]*request),\n\t\twatchers:       make(map[watchPathType][]chan Event),\n\t\tpasswd:         emptyPassword,\n\t\tlogger:         DefaultLogger,\n\t\tlogInfo:        true, // default is true for backwards compatability\n\t\tbuf:            make([]byte, bufferSize),\n\t}\n\n\t// Set provided options.\n\tfor _, option := range options {\n\t\toption(conn)\n\t}\n\n\tif err := conn.hostProvider.Init(srvs); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tconn.setTimeouts(int32(sessionTimeout / time.Millisecond))\n\n\tgo func() {\n\t\tconn.loop()\n\t\tconn.flushRequests(ErrClosing)\n\t\tconn.invalidateWatches(ErrClosing)\n\t\tclose(conn.eventChan)\n\t}()\n\treturn conn, ec, nil\n}\n\n// WithDialer returns a connection option specifying a non-default Dialer.\nfunc WithDialer(dialer Dialer) connOption {\n\treturn func(c *Conn) {\n\t\tc.dialer = dialer\n\t}\n}\n\n// WithHostProvider returns a connection option specifying a non-default HostProvider.\nfunc WithHostProvider(hostProvider HostProvider) connOption {\n\treturn func(c *Conn) {\n\t\tc.hostProvider = hostProvider\n\t}\n}\n\n// WithLogger returns a connection option specifying a non-default Logger\nfunc WithLogger(logger Logger) connOption {\n\treturn func(c *Conn) {\n\t\tc.logger = logger\n\t}\n}\n\n// WithLogInfo returns a connection option specifying whether or not information messages\n// shoud be logged.\nfunc WithLogInfo(logInfo bool) connOption {\n\treturn func(c *Conn) {\n\t\tc.logInfo = logInfo\n\t}\n}\n\n// EventCallback is a function that is called when an Event occurs.\ntype EventCallback func(Event)\n\n// WithEventCallback returns a connection option that specifies an event\n// callback.\n// The callback must not block - doing so would delay the ZK go routines.\nfunc WithEventCallback(cb EventCallback) connOption {\n\treturn func(c *Conn) {\n\t\tc.eventCallback = cb\n\t}\n}\n\n// WithMaxBufferSize sets the maximum buffer size used to read and decode\n// packets received from the Zookeeper server. The standard Zookeeper client for\n// Java defaults to a limit of 1mb. For backwards compatibility, this Go client\n// defaults to unbounded unless overridden via this option. A value that is zero\n// or negative indicates that no limit is enforced.\n//\n// This is meant to prevent resource exhaustion in the face of potentially\n// malicious data in ZK. It should generally match the server setting (which\n// also defaults ot 1mb) so that clients and servers agree on the limits for\n// things like the size of data in an individual znode and the total size of a\n// transaction.\n//\n// For production systems, this should be set to a reasonable value (ideally\n// that matches the server configuration). For ops tooling, it is handy to use a\n// much larger limit, in order to do things like clean-up problematic state in\n// the ZK tree. For example, if a single znode has a huge number of children, it\n// is possible for the response to a \"list children\" operation to exceed this\n// buffer size and cause errors in clients. The only way to subsequently clean\n// up the tree (by removing superfluous children) is to use a client configured\n// with a larger buffer size that can successfully query for all of the child\n// names and then remove them. (Note there are other tools that can list all of\n// the child names without an increased buffer size in the client, but they work\n// by inspecting the servers' transaction logs to enumerate children instead of\n// sending an online request to a server.\nfunc WithMaxBufferSize(maxBufferSize int) connOption {\n\treturn func(c *Conn) {\n\t\tc.maxBufferSize = maxBufferSize\n\t}\n}\n\n// WithMaxConnBufferSize sets maximum buffer size used to send and encode\n// packets to Zookeeper server. The standard Zookeepeer client for java defaults\n// to a limit of 1mb. This option should be used for non-standard server setup\n// where znode is bigger than default 1mb.\nfunc WithMaxConnBufferSize(maxBufferSize int) connOption {\n\treturn func(c *Conn) {\n\t\tc.buf = make([]byte, maxBufferSize)\n\t}\n}\n\nfunc (c *Conn) Close() {\n\tclose(c.shouldQuit)\n\n\tselect {\n\tcase <-c.queueRequest(opClose, &closeRequest{}, &closeResponse{}, nil):\n\tcase <-time.After(time.Second):\n\t}\n}\n\n// State returns the current state of the connection.\nfunc (c *Conn) State() State {\n\treturn State(atomic.LoadInt32((*int32)(&c.state)))\n}\n\n// SessionID returns the current session id of the connection.\nfunc (c *Conn) SessionID() int64 {\n\treturn atomic.LoadInt64(&c.sessionID)\n}\n\n// SetLogger sets the logger to be used for printing errors.\n// Logger is an interface provided by this package.\nfunc (c *Conn) SetLogger(l Logger) {\n\tc.logger = l\n}\n\nfunc (c *Conn) setTimeouts(sessionTimeoutMs int32) {\n\tc.sessionTimeoutMs = sessionTimeoutMs\n\tsessionTimeout := time.Duration(sessionTimeoutMs) * time.Millisecond\n\tc.recvTimeout = sessionTimeout * 2 / 3\n\tc.pingInterval = c.recvTimeout / 2\n}\n\nfunc (c *Conn) setState(state State) {\n\tatomic.StoreInt32((*int32)(&c.state), int32(state))\n\tc.sendEvent(Event{Type: EventSession, State: state, Server: c.Server()})\n}\n\nfunc (c *Conn) sendEvent(evt Event) {\n\tif c.eventCallback != nil {\n\t\tc.eventCallback(evt)\n\t}\n\n\tselect {\n\tcase c.eventChan <- evt:\n\tdefault:\n\t\t// panic(\"zk: event channel full - it must be monitored and never allowed to be full\")\n\t}\n}\n\nfunc (c *Conn) connect() error {\n\tvar retryStart bool\n\tfor {\n\t\tc.serverMu.Lock()\n\t\tc.server, retryStart = c.hostProvider.Next()\n\t\tc.serverMu.Unlock()\n\t\tc.setState(StateConnecting)\n\t\tif retryStart {\n\t\t\tc.flushUnsentRequests(ErrNoServer)\n\t\t\tselect {\n\t\t\tcase <-time.After(time.Second):\n\t\t\t\t// pass\n\t\t\tcase <-c.shouldQuit:\n\t\t\t\tc.setState(StateDisconnected)\n\t\t\t\tc.flushUnsentRequests(ErrClosing)\n\t\t\t\treturn ErrClosing\n\t\t\t}\n\t\t}\n\n\t\tzkConn, err := c.dialer(\"tcp\", c.Server(), c.connectTimeout)\n\t\tif err == nil {\n\t\t\tc.conn = zkConn\n\t\t\tc.setState(StateConnected)\n\t\t\tif c.logInfo {\n\t\t\t\tc.logger.Printf(\"Connected to %s\", c.Server())\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\n\t\tc.logger.Printf(\"Failed to connect to %s: %+v\", c.Server(), err)\n\t}\n}\n\nfunc (c *Conn) resendZkAuth(reauthReadyChan chan struct{}) {\n\tshouldCancel := func() bool {\n\t\tselect {\n\t\tcase <-c.shouldQuit:\n\t\t\treturn true\n\t\tcase <-c.closeChan:\n\t\t\treturn true\n\t\tdefault:\n\t\t\treturn false\n\t\t}\n\t}\n\n\tc.credsMu.Lock()\n\tdefer c.credsMu.Unlock()\n\n\tdefer close(reauthReadyChan)\n\n\tif c.logInfo {\n\t\tc.logger.Printf(\"re-submitting `%d` credentials after reconnect\", len(c.creds))\n\t}\n\n\tfor _, cred := range c.creds {\n\t\tif shouldCancel() {\n\t\t\treturn\n\t\t}\n\t\tresChan, err := c.sendRequest(\n\t\t\topSetAuth,\n\t\t\t&setAuthRequest{Type: 0,\n\t\t\t\tScheme: cred.scheme,\n\t\t\t\tAuth:   cred.auth,\n\t\t\t},\n\t\t\t&setAuthResponse{},\n\t\t\tnil)\n\n\t\tif err != nil {\n\t\t\tc.logger.Printf(\"call to sendRequest failed during credential resubmit: %s\", err)\n\t\t\t// FIXME(prozlach): lets ignore errors for now\n\t\t\tcontinue\n\t\t}\n\n\t\tvar res response\n\t\tselect {\n\t\tcase res = <-resChan:\n\t\tcase <-c.closeChan:\n\t\t\tc.logger.Printf(\"recv closed, cancel re-submitting credentials\")\n\t\t\treturn\n\t\tcase <-c.shouldQuit:\n\t\t\tc.logger.Printf(\"should quit, cancel re-submitting credentials\")\n\t\t\treturn\n\t\t}\n\t\tif res.err != nil {\n\t\t\tc.logger.Printf(\"credential re-submit failed: %s\", res.err)\n\t\t\t// FIXME(prozlach): lets ignore errors for now\n\t\t\tcontinue\n\t\t}\n\t}\n}\n\nfunc (c *Conn) sendRequest(\n\topcode int32,\n\treq interface{},\n\tres interface{},\n\trecvFunc func(*request, *responseHeader, error),\n) (\n\t<-chan response,\n\terror,\n) {\n\trq := &request{\n\t\txid:        c.nextXid(),\n\t\topcode:     opcode,\n\t\tpkt:        req,\n\t\trecvStruct: res,\n\t\trecvChan:   make(chan response, 1),\n\t\trecvFunc:   recvFunc,\n\t}\n\n\tif err := c.sendData(rq); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn rq.recvChan, nil\n}\n\nfunc (c *Conn) loop() {\n\tfor {\n\t\tif err := c.connect(); err != nil {\n\t\t\t// c.Close() was called\n\t\t\treturn\n\t\t}\n\n\t\terr := c.authenticate()\n\t\tswitch {\n\t\tcase err == ErrSessionExpired:\n\t\t\tc.logger.Printf(\"authentication failed: %s\", err)\n\t\t\tc.invalidateWatches(err)\n\t\tcase err != nil && c.conn != nil:\n\t\t\tc.logger.Printf(\"authentication failed: %s\", err)\n\t\t\tc.conn.Close()\n\t\tcase err == nil:\n\t\t\tif c.logInfo {\n\t\t\t\tc.logger.Printf(\"authenticated: id=%d, timeout=%d\", c.SessionID(), c.sessionTimeoutMs)\n\t\t\t}\n\t\t\tc.hostProvider.Connected()        // mark success\n\t\t\tc.closeChan = make(chan struct{}) // channel to tell send loop stop\n\t\t\treauthChan := make(chan struct{}) // channel to tell send loop that authdata has been resubmitted\n\n\t\t\tvar wg sync.WaitGroup\n\t\t\twg.Add(1)\n\t\t\tgo func() {\n\t\t\t\t<-reauthChan\n\t\t\t\tif c.debugCloseRecvLoop {\n\t\t\t\t\tclose(c.debugReauthDone)\n\t\t\t\t}\n\t\t\t\terr := c.sendLoop()\n\t\t\t\tif err != nil || c.logInfo {\n\t\t\t\t\tc.logger.Printf(\"send loop terminated: err=%v\", err)\n\t\t\t\t}\n\t\t\t\tc.conn.Close() // causes recv loop to EOF/exit\n\t\t\t\twg.Done()\n\t\t\t}()\n\n\t\t\twg.Add(1)\n\t\t\tgo func() {\n\t\t\t\tvar err error\n\t\t\t\tif c.debugCloseRecvLoop {\n\t\t\t\t\terr = errors.New(\"DEBUG: close recv loop\")\n\t\t\t\t} else {\n\t\t\t\t\terr = c.recvLoop(c.conn)\n\t\t\t\t}\n\t\t\t\tif err != io.EOF || c.logInfo {\n\t\t\t\t\tc.logger.Printf(\"recv loop terminated: err=%v\", err)\n\t\t\t\t}\n\t\t\t\tif err == nil {\n\t\t\t\t\tpanic(\"zk: recvLoop should never return nil error\")\n\t\t\t\t}\n\t\t\t\tclose(c.closeChan) // tell send loop to exit\n\t\t\t\twg.Done()\n\t\t\t}()\n\n\t\t\tc.resendZkAuth(reauthChan)\n\n\t\t\tc.sendSetWatches()\n\t\t\twg.Wait()\n\t\t}\n\n\t\tc.setState(StateDisconnected)\n\n\t\tselect {\n\t\tcase <-c.shouldQuit:\n\t\t\tc.flushRequests(ErrClosing)\n\t\t\treturn\n\t\tdefault:\n\t\t}\n\n\t\tif err != ErrSessionExpired {\n\t\t\terr = ErrConnectionClosed\n\t\t}\n\t\tc.flushRequests(err)\n\n\t\tif c.reconnectLatch != nil {\n\t\t\tselect {\n\t\t\tcase <-c.shouldQuit:\n\t\t\t\treturn\n\t\t\tcase <-c.reconnectLatch:\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (c *Conn) flushUnsentRequests(err error) {\n\tfor {\n\t\tselect {\n\t\tdefault:\n\t\t\treturn\n\t\tcase req := <-c.sendChan:\n\t\t\treq.recvChan <- response{-1, err}\n\t\t}\n\t}\n}\n\n// Send error to all pending requests and clear request map\nfunc (c *Conn) flushRequests(err error) {\n\tc.requestsLock.Lock()\n\tfor _, req := range c.requests {\n\t\treq.recvChan <- response{-1, err}\n\t}\n\tc.requests = make(map[int32]*request)\n\tc.requestsLock.Unlock()\n}\n\n// Send error to all watchers and clear watchers map\nfunc (c *Conn) invalidateWatches(err error) {\n\tc.watchersLock.Lock()\n\tdefer c.watchersLock.Unlock()\n\n\tif len(c.watchers) >= 0 {\n\t\tfor pathType, watchers := range c.watchers {\n\t\t\tev := Event{Type: EventNotWatching, State: StateDisconnected, Path: pathType.path, Err: err}\n\t\t\tfor _, ch := range watchers {\n\t\t\t\tch <- ev\n\t\t\t\tclose(ch)\n\t\t\t}\n\t\t}\n\t\tc.watchers = make(map[watchPathType][]chan Event)\n\t}\n}\n\nfunc (c *Conn) sendSetWatches() {\n\tc.watchersLock.Lock()\n\tdefer c.watchersLock.Unlock()\n\n\tif len(c.watchers) == 0 {\n\t\treturn\n\t}\n\n\t// NB: A ZK server, by default, rejects packets >1mb. So, if we have too\n\t// many watches to reset, we need to break this up into multiple packets\n\t// to avoid hitting that limit. Mirroring the Java client behavior: we are\n\t// conservative in that we limit requests to 128kb (since server limit is\n\t// is actually configurable and could conceivably be configured smaller\n\t// than default of 1mb).\n\tlimit := 128 * 1024\n\tif c.setWatchLimit > 0 {\n\t\tlimit = c.setWatchLimit\n\t}\n\n\tvar reqs []*setWatchesRequest\n\tvar req *setWatchesRequest\n\tvar sizeSoFar int\n\n\tn := 0\n\tfor pathType, watchers := range c.watchers {\n\t\tif len(watchers) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\taddlLen := 4 + len(pathType.path)\n\t\tif req == nil || sizeSoFar+addlLen > limit {\n\t\t\tif req != nil {\n\t\t\t\t// add to set of requests that we'll send\n\t\t\t\treqs = append(reqs, req)\n\t\t\t}\n\t\t\tsizeSoFar = 28 // fixed overhead of a set-watches packet\n\t\t\treq = &setWatchesRequest{\n\t\t\t\tRelativeZxid: c.lastZxid,\n\t\t\t\tDataWatches:  make([]string, 0),\n\t\t\t\tExistWatches: make([]string, 0),\n\t\t\t\tChildWatches: make([]string, 0),\n\t\t\t}\n\t\t}\n\t\tsizeSoFar += addlLen\n\t\tswitch pathType.wType {\n\t\tcase watchTypeData:\n\t\t\treq.DataWatches = append(req.DataWatches, pathType.path)\n\t\tcase watchTypeExist:\n\t\t\treq.ExistWatches = append(req.ExistWatches, pathType.path)\n\t\tcase watchTypeChild:\n\t\t\treq.ChildWatches = append(req.ChildWatches, pathType.path)\n\t\t}\n\t\tn++\n\t}\n\tif n == 0 {\n\t\treturn\n\t}\n\tif req != nil { // don't forget any trailing packet we were building\n\t\treqs = append(reqs, req)\n\t}\n\n\tif c.setWatchCallback != nil {\n\t\tc.setWatchCallback(reqs)\n\t}\n\n\tgo func() {\n\t\tres := &setWatchesResponse{}\n\t\t// TODO: Pipeline these so queue all of them up before waiting on any\n\t\t// response. That will require some investigation to make sure there\n\t\t// aren't failure modes where a blocking write to the channel of requests\n\t\t// could hang indefinitely and cause this goroutine to leak...\n\t\tfor _, req := range reqs {\n\t\t\t_, err := c.request(opSetWatches, req, res, nil)\n\t\t\tif err != nil {\n\t\t\t\tc.logger.Printf(\"Failed to set previous watches: %s\", err.Error())\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}()\n}\n\nfunc (c *Conn) authenticate() error {\n\tbuf := make([]byte, 256)\n\n\t// Encode and send a connect request.\n\tn, err := encodePacket(buf[4:], &connectRequest{\n\t\tProtocolVersion: protocolVersion,\n\t\tLastZxidSeen:    c.lastZxid,\n\t\tTimeOut:         c.sessionTimeoutMs,\n\t\tSessionID:       c.SessionID(),\n\t\tPasswd:          c.passwd,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tbinary.BigEndian.PutUint32(buf[:4], uint32(n))\n\n\tif err := c.conn.SetWriteDeadline(time.Now().Add(c.recvTimeout * 10)); err != nil {\n\t\treturn err\n\t}\n\t_, err = c.conn.Write(buf[:n+4])\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := c.conn.SetWriteDeadline(time.Time{}); err != nil {\n\t\treturn err\n\t}\n\n\t// Receive and decode a connect response.\n\tif err := c.conn.SetReadDeadline(time.Now().Add(c.recvTimeout * 10)); err != nil {\n\t\treturn err\n\t}\n\t_, err = io.ReadFull(c.conn, buf[:4])\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := c.conn.SetReadDeadline(time.Time{}); err != nil {\n\t\treturn err\n\t}\n\n\tblen := int(binary.BigEndian.Uint32(buf[:4]))\n\tif cap(buf) < blen {\n\t\tbuf = make([]byte, blen)\n\t}\n\n\t_, err = io.ReadFull(c.conn, buf[:blen])\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tr := connectResponse{}\n\t_, err = decodePacket(buf[:blen], &r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif r.SessionID == 0 {\n\t\tatomic.StoreInt64(&c.sessionID, int64(0))\n\t\tc.passwd = emptyPassword\n\t\tc.lastZxid = 0\n\t\tc.setState(StateExpired)\n\t\treturn ErrSessionExpired\n\t}\n\n\tatomic.StoreInt64(&c.sessionID, r.SessionID)\n\tc.setTimeouts(r.TimeOut)\n\tc.passwd = r.Passwd\n\tc.setState(StateHasSession)\n\n\treturn nil\n}\n\nfunc (c *Conn) sendData(req *request) error {\n\theader := &requestHeader{req.xid, req.opcode}\n\tn, err := encodePacket(c.buf[4:], header)\n\tif err != nil {\n\t\treq.recvChan <- response{-1, err}\n\t\treturn nil\n\t}\n\n\tn2, err := encodePacket(c.buf[4+n:], req.pkt)\n\tif err != nil {\n\t\treq.recvChan <- response{-1, err}\n\t\treturn nil\n\t}\n\n\tn += n2\n\n\tbinary.BigEndian.PutUint32(c.buf[:4], uint32(n))\n\n\tc.requestsLock.Lock()\n\tselect {\n\tcase <-c.closeChan:\n\t\treq.recvChan <- response{-1, ErrConnectionClosed}\n\t\tc.requestsLock.Unlock()\n\t\treturn ErrConnectionClosed\n\tdefault:\n\t}\n\tc.requests[req.xid] = req\n\tc.requestsLock.Unlock()\n\n\tif err := c.conn.SetWriteDeadline(time.Now().Add(c.recvTimeout)); err != nil {\n\t\treturn err\n\t}\n\t_, err = c.conn.Write(c.buf[:n+4])\n\tif err != nil {\n\t\treq.recvChan <- response{-1, err}\n\t\tc.conn.Close()\n\t\treturn err\n\t}\n\tif err := c.conn.SetWriteDeadline(time.Time{}); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (c *Conn) sendLoop() error {\n\tpingTicker := time.NewTicker(c.pingInterval)\n\tdefer pingTicker.Stop()\n\n\tfor {\n\t\tselect {\n\t\tcase req := <-c.sendChan:\n\t\t\tif err := c.sendData(req); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase <-pingTicker.C:\n\t\t\tn, err := encodePacket(c.buf[4:], &requestHeader{Xid: -2, Opcode: opPing})\n\t\t\tif err != nil {\n\t\t\t\tpanic(\"zk: opPing should never fail to serialize\")\n\t\t\t}\n\n\t\t\tbinary.BigEndian.PutUint32(c.buf[:4], uint32(n))\n\n\t\t\tif err := c.conn.SetWriteDeadline(time.Now().Add(c.recvTimeout)); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t_, err = c.conn.Write(c.buf[:n+4])\n\t\t\tif err != nil {\n\t\t\t\tc.conn.Close()\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif err := c.conn.SetWriteDeadline(time.Time{}); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase <-c.closeChan:\n\t\t\treturn nil\n\t\t}\n\t}\n}\n\nfunc (c *Conn) recvLoop(conn net.Conn) error {\n\tsz := bufferSize\n\tif c.maxBufferSize > 0 && sz > c.maxBufferSize {\n\t\tsz = c.maxBufferSize\n\t}\n\tbuf := make([]byte, sz)\n\tfor {\n\t\t// package length\n\t\tif err := conn.SetReadDeadline(time.Now().Add(c.recvTimeout)); err != nil {\n\t\t\tc.logger.Printf(\"failed to set connection deadline: %v\", err)\n\t\t}\n\t\t_, err := io.ReadFull(conn, buf[:4])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to read from connection: %v\", err)\n\t\t}\n\n\t\tblen := int(binary.BigEndian.Uint32(buf[:4]))\n\t\tif cap(buf) < blen {\n\t\t\tif c.maxBufferSize > 0 && blen > c.maxBufferSize {\n\t\t\t\treturn fmt.Errorf(\"received packet from server with length %d, which exceeds max buffer size %d\", blen, c.maxBufferSize)\n\t\t\t}\n\t\t\tbuf = make([]byte, blen)\n\t\t}\n\n\t\t_, err = io.ReadFull(conn, buf[:blen])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := conn.SetReadDeadline(time.Time{}); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tres := responseHeader{}\n\t\t_, err = decodePacket(buf[:16], &res)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif res.Xid == -1 {\n\t\t\tres := &watcherEvent{}\n\t\t\t_, err := decodePacket(buf[16:blen], res)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tev := Event{\n\t\t\t\tType:  res.Type,\n\t\t\t\tState: res.State,\n\t\t\t\tPath:  res.Path,\n\t\t\t\tErr:   nil,\n\t\t\t}\n\t\t\tc.sendEvent(ev)\n\t\t\twTypes := make([]watchType, 0, 2)\n\t\t\tswitch res.Type {\n\t\t\tcase EventNodeCreated:\n\t\t\t\twTypes = append(wTypes, watchTypeExist)\n\t\t\tcase EventNodeDeleted, EventNodeDataChanged:\n\t\t\t\twTypes = append(wTypes, watchTypeExist, watchTypeData, watchTypeChild)\n\t\t\tcase EventNodeChildrenChanged:\n\t\t\t\twTypes = append(wTypes, watchTypeChild)\n\t\t\t}\n\t\t\tc.watchersLock.Lock()\n\t\t\tfor _, t := range wTypes {\n\t\t\t\twpt := watchPathType{res.Path, t}\n\t\t\t\tif watchers, ok := c.watchers[wpt]; ok {\n\t\t\t\t\tfor _, ch := range watchers {\n\t\t\t\t\t\tch <- ev\n\t\t\t\t\t\tclose(ch)\n\t\t\t\t\t}\n\t\t\t\t\tdelete(c.watchers, wpt)\n\t\t\t\t}\n\t\t\t}\n\t\t\tc.watchersLock.Unlock()\n\t\t} else if res.Xid == -2 {\n\t\t\t// Ping response. Ignore.\n\t\t} else if res.Xid < 0 {\n\t\t\tc.logger.Printf(\"Xid < 0 (%d) but not ping or watcher event\", res.Xid)\n\t\t} else {\n\t\t\tif res.Zxid > 0 {\n\t\t\t\tc.lastZxid = res.Zxid\n\t\t\t}\n\n\t\t\tc.requestsLock.Lock()\n\t\t\treq, ok := c.requests[res.Xid]\n\t\t\tif ok {\n\t\t\t\tdelete(c.requests, res.Xid)\n\t\t\t}\n\t\t\tc.requestsLock.Unlock()\n\n\t\t\tif !ok {\n\t\t\t\tc.logger.Printf(\"Response for unknown request with xid %d\", res.Xid)\n\t\t\t} else {\n\t\t\t\tif res.Err != 0 {\n\t\t\t\t\terr = res.Err.toError()\n\t\t\t\t} else {\n\t\t\t\t\t_, err = decodePacket(buf[16:blen], req.recvStruct)\n\t\t\t\t}\n\t\t\t\tif req.recvFunc != nil {\n\t\t\t\t\treq.recvFunc(req, &res, err)\n\t\t\t\t}\n\t\t\t\treq.recvChan <- response{res.Zxid, err}\n\t\t\t\tif req.opcode == opClose {\n\t\t\t\t\treturn io.EOF\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (c *Conn) nextXid() int32 {\n\treturn int32(atomic.AddUint32(&c.xid, 1) & 0x7fffffff)\n}\n\nfunc (c *Conn) addWatcher(path string, watchType watchType) <-chan Event {\n\tc.watchersLock.Lock()\n\tdefer c.watchersLock.Unlock()\n\n\tch := make(chan Event, 1)\n\twpt := watchPathType{path, watchType}\n\tc.watchers[wpt] = append(c.watchers[wpt], ch)\n\treturn ch\n}\n\nfunc (c *Conn) queueRequest(opcode int32, req interface{}, res interface{}, recvFunc func(*request, *responseHeader, error)) <-chan response {\n\trq := &request{\n\t\txid:        c.nextXid(),\n\t\topcode:     opcode,\n\t\tpkt:        req,\n\t\trecvStruct: res,\n\t\trecvChan:   make(chan response, 1),\n\t\trecvFunc:   recvFunc,\n\t}\n\tc.sendChan <- rq\n\treturn rq.recvChan\n}\n\nfunc (c *Conn) request(opcode int32, req interface{}, res interface{}, recvFunc func(*request, *responseHeader, error)) (int64, error) {\n\tr := <-c.queueRequest(opcode, req, res, recvFunc)\n\treturn r.zxid, r.err\n}\n\nfunc (c *Conn) AddAuth(scheme string, auth []byte) error {\n\t_, err := c.request(opSetAuth, &setAuthRequest{Type: 0, Scheme: scheme, Auth: auth}, &setAuthResponse{}, nil)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Remember authdata so that it can be re-submitted on reconnect\n\t//\n\t// FIXME(prozlach): For now we treat \"userfoo:passbar\" and \"userfoo:passbar2\"\n\t// as two different entries, which will be re-submitted on reconnet. Some\n\t// research is needed on how ZK treats these cases and\n\t// then maybe switch to something like \"map[username] = password\" to allow\n\t// only single password for given user with users being unique.\n\tobj := authCreds{\n\t\tscheme: scheme,\n\t\tauth:   auth,\n\t}\n\n\tc.credsMu.Lock()\n\tc.creds = append(c.creds, obj)\n\tc.credsMu.Unlock()\n\n\treturn nil\n}\n\nfunc (c *Conn) Children(path string) ([]string, *Stat, error) {\n\tif err := validatePath(path, false); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tres := &getChildren2Response{}\n\t_, err := c.request(opGetChildren2, &getChildren2Request{Path: path, Watch: false}, res, nil)\n\treturn res.Children, &res.Stat, err\n}\n\nfunc (c *Conn) ChildrenW(path string) ([]string, *Stat, <-chan Event, error) {\n\tif err := validatePath(path, false); err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\n\tvar ech <-chan Event\n\tres := &getChildren2Response{}\n\t_, err := c.request(opGetChildren2, &getChildren2Request{Path: path, Watch: true}, res, func(req *request, res *responseHeader, err error) {\n\t\tif err == nil {\n\t\t\tech = c.addWatcher(path, watchTypeChild)\n\t\t}\n\t})\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\treturn res.Children, &res.Stat, ech, err\n}\n\nfunc (c *Conn) Get(path string) ([]byte, *Stat, error) {\n\tif err := validatePath(path, false); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tres := &getDataResponse{}\n\t_, err := c.request(opGetData, &getDataRequest{Path: path, Watch: false}, res, nil)\n\treturn res.Data, &res.Stat, err\n}\n\n// GetW returns the contents of a znode and sets a watch\nfunc (c *Conn) GetW(path string) ([]byte, *Stat, <-chan Event, error) {\n\tif err := validatePath(path, false); err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\n\tvar ech <-chan Event\n\tres := &getDataResponse{}\n\t_, err := c.request(opGetData, &getDataRequest{Path: path, Watch: true}, res, func(req *request, res *responseHeader, err error) {\n\t\tif err == nil {\n\t\t\tech = c.addWatcher(path, watchTypeData)\n\t\t}\n\t})\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\treturn res.Data, &res.Stat, ech, err\n}\n\nfunc (c *Conn) Set(path string, data []byte, version int32) (*Stat, error) {\n\tif err := validatePath(path, false); err != nil {\n\t\treturn nil, err\n\t}\n\n\tres := &setDataResponse{}\n\t_, err := c.request(opSetData, &SetDataRequest{path, data, version}, res, nil)\n\treturn &res.Stat, err\n}\n\nfunc (c *Conn) Create(path string, data []byte, flags int32, acl []ACL) (string, error) {\n\tif err := validatePath(path, flags&FlagSequence == FlagSequence); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tres := &createResponse{}\n\t_, err := c.request(opCreate, &CreateRequest{path, data, acl, flags}, res, nil)\n\treturn res.Path, err\n}\n\n// CreateProtectedEphemeralSequential fixes a race condition if the server crashes\n// after it creates the node. On reconnect the session may still be valid so the\n// ephemeral node still exists. Therefore, on reconnect we need to check if a node\n// with a GUID generated on create exists.\nfunc (c *Conn) CreateProtectedEphemeralSequential(path string, data []byte, acl []ACL) (string, error) {\n\tif err := validatePath(path, true); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tvar guid [16]byte\n\t_, err := io.ReadFull(rand.Reader, guid[:16])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tguidStr := fmt.Sprintf(\"%x\", guid)\n\n\tparts := strings.Split(path, \"/\")\n\tparts[len(parts)-1] = fmt.Sprintf(\"%s%s-%s\", protectedPrefix, guidStr, parts[len(parts)-1])\n\trootPath := strings.Join(parts[:len(parts)-1], \"/\")\n\tprotectedPath := strings.Join(parts, \"/\")\n\n\tvar newPath string\n\tfor i := 0; i < 3; i++ {\n\t\tnewPath, err = c.Create(protectedPath, data, FlagEphemeral|FlagSequence, acl)\n\t\tswitch err {\n\t\tcase ErrSessionExpired:\n\t\t\t// No need to search for the node since it can't exist. Just try again.\n\t\tcase ErrConnectionClosed:\n\t\t\tchildren, _, err := c.Children(rootPath)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\tfor _, p := range children {\n\t\t\t\tparts := strings.Split(p, \"/\")\n\t\t\t\tif pth := parts[len(parts)-1]; strings.HasPrefix(pth, protectedPrefix) {\n\t\t\t\t\tif g := pth[len(protectedPrefix) : len(protectedPrefix)+32]; g == guidStr {\n\t\t\t\t\t\treturn rootPath + \"/\" + p, nil\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase nil:\n\t\t\treturn newPath, nil\n\t\tdefault:\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\treturn \"\", err\n}\n\nfunc (c *Conn) Delete(path string, version int32) error {\n\tif err := validatePath(path, false); err != nil {\n\t\treturn err\n\t}\n\n\t_, err := c.request(opDelete, &DeleteRequest{path, version}, &deleteResponse{}, nil)\n\treturn err\n}\n\nfunc (c *Conn) Exists(path string) (bool, *Stat, error) {\n\tif err := validatePath(path, false); err != nil {\n\t\treturn false, nil, err\n\t}\n\n\tres := &existsResponse{}\n\t_, err := c.request(opExists, &existsRequest{Path: path, Watch: false}, res, nil)\n\texists := true\n\tif err == ErrNoNode {\n\t\texists = false\n\t\terr = nil\n\t}\n\treturn exists, &res.Stat, err\n}\n\nfunc (c *Conn) ExistsW(path string) (bool, *Stat, <-chan Event, error) {\n\tif err := validatePath(path, false); err != nil {\n\t\treturn false, nil, nil, err\n\t}\n\n\tvar ech <-chan Event\n\tres := &existsResponse{}\n\t_, err := c.request(opExists, &existsRequest{Path: path, Watch: true}, res, func(req *request, res *responseHeader, err error) {\n\t\tif err == nil {\n\t\t\tech = c.addWatcher(path, watchTypeData)\n\t\t} else if err == ErrNoNode {\n\t\t\tech = c.addWatcher(path, watchTypeExist)\n\t\t}\n\t})\n\texists := true\n\tif err == ErrNoNode {\n\t\texists = false\n\t\terr = nil\n\t}\n\tif err != nil {\n\t\treturn false, nil, nil, err\n\t}\n\treturn exists, &res.Stat, ech, err\n}\n\nfunc (c *Conn) GetACL(path string) ([]ACL, *Stat, error) {\n\tif err := validatePath(path, false); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tres := &getAclResponse{}\n\t_, err := c.request(opGetAcl, &getAclRequest{Path: path}, res, nil)\n\treturn res.Acl, &res.Stat, err\n}\nfunc (c *Conn) SetACL(path string, acl []ACL, version int32) (*Stat, error) {\n\tif err := validatePath(path, false); err != nil {\n\t\treturn nil, err\n\t}\n\n\tres := &setAclResponse{}\n\t_, err := c.request(opSetAcl, &setAclRequest{Path: path, Acl: acl, Version: version}, res, nil)\n\treturn &res.Stat, err\n}\n\nfunc (c *Conn) Sync(path string) (string, error) {\n\tif err := validatePath(path, false); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tres := &syncResponse{}\n\t_, err := c.request(opSync, &syncRequest{Path: path}, res, nil)\n\treturn res.Path, err\n}\n\ntype MultiResponse struct {\n\tStat   *Stat\n\tString string\n\tError  error\n}\n\n// Multi executes multiple ZooKeeper operations or none of them. The provided\n// ops must be one of *CreateRequest, *DeleteRequest, *SetDataRequest, or\n// *CheckVersionRequest.\nfunc (c *Conn) Multi(ops ...interface{}) ([]MultiResponse, error) {\n\treq := &multiRequest{\n\t\tOps:        make([]multiRequestOp, 0, len(ops)),\n\t\tDoneHeader: multiHeader{Type: -1, Done: true, Err: -1},\n\t}\n\tfor _, op := range ops {\n\t\tvar opCode int32\n\t\tswitch op.(type) {\n\t\tcase *CreateRequest:\n\t\t\topCode = opCreate\n\t\tcase *SetDataRequest:\n\t\t\topCode = opSetData\n\t\tcase *DeleteRequest:\n\t\t\topCode = opDelete\n\t\tcase *CheckVersionRequest:\n\t\t\topCode = opCheck\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unknown operation type %T\", op)\n\t\t}\n\t\treq.Ops = append(req.Ops, multiRequestOp{multiHeader{opCode, false, -1}, op})\n\t}\n\tres := &multiResponse{}\n\t_, err := c.request(opMulti, req, res, nil)\n\tmr := make([]MultiResponse, len(res.Ops))\n\tfor i, op := range res.Ops {\n\t\tmr[i] = MultiResponse{Stat: op.Stat, String: op.String, Error: op.Err.toError()}\n\t}\n\treturn mr, err\n}\n\n// IncrementalReconfig is the zookeeper reconfiguration api that allows adding and removing servers\n// by lists of members.\n// Return the new configuration stats.\nfunc (c *Conn) IncrementalReconfig(joining, leaving []string, version int64) (*Stat, error) {\n\t// TODO: validate the shape of the member string to give early feedback.\n\trequest := &reconfigRequest{\n\t\tJoiningServers: []byte(strings.Join(joining, \",\")),\n\t\tLeavingServers: []byte(strings.Join(leaving, \",\")),\n\t\tCurConfigId:    version,\n\t}\n\n\treturn c.internalReconfig(request)\n}\n\n// Reconfig is the non-incremental update functionality for Zookeeper where the list preovided\n// is the entire new member list.\n// the optional version allows for conditional reconfigurations, -1 ignores the condition.\nfunc (c *Conn) Reconfig(members []string, version int64) (*Stat, error) {\n\trequest := &reconfigRequest{\n\t\tNewMembers:  []byte(strings.Join(members, \",\")),\n\t\tCurConfigId: version,\n\t}\n\n\treturn c.internalReconfig(request)\n}\n\nfunc (c *Conn) internalReconfig(request *reconfigRequest) (*Stat, error) {\n\tresponse := &reconfigReponse{}\n\t_, err := c.request(opReconfig, request, response, nil)\n\treturn &response.Stat, err\n}\n\n// Server returns the current or last-connected server name.\nfunc (c *Conn) Server() string {\n\tc.serverMu.Lock()\n\tdefer c.serverMu.Unlock()\n\treturn c.server\n}\n"
  },
  {
    "path": "vendor/github.com/samuel/go-zookeeper/zk/constants.go",
    "content": "package zk\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\nconst (\n\tprotocolVersion = 0\n\n\tDefaultPort = 2181\n)\n\nconst (\n\topNotify       = 0\n\topCreate       = 1\n\topDelete       = 2\n\topExists       = 3\n\topGetData      = 4\n\topSetData      = 5\n\topGetAcl       = 6\n\topSetAcl       = 7\n\topGetChildren  = 8\n\topSync         = 9\n\topPing         = 11\n\topGetChildren2 = 12\n\topCheck        = 13\n\topMulti        = 14\n\topReconfig     = 16\n\topClose        = -11\n\topSetAuth      = 100\n\topSetWatches   = 101\n\topError        = -1\n\t// Not in protocol, used internally\n\topWatcherEvent = -2\n)\n\nconst (\n\tEventNodeCreated         EventType = 1\n\tEventNodeDeleted         EventType = 2\n\tEventNodeDataChanged     EventType = 3\n\tEventNodeChildrenChanged EventType = 4\n\n\tEventSession     EventType = -1\n\tEventNotWatching EventType = -2\n)\n\nvar (\n\teventNames = map[EventType]string{\n\t\tEventNodeCreated:         \"EventNodeCreated\",\n\t\tEventNodeDeleted:         \"EventNodeDeleted\",\n\t\tEventNodeDataChanged:     \"EventNodeDataChanged\",\n\t\tEventNodeChildrenChanged: \"EventNodeChildrenChanged\",\n\t\tEventSession:             \"EventSession\",\n\t\tEventNotWatching:         \"EventNotWatching\",\n\t}\n)\n\nconst (\n\tStateUnknown           State = -1\n\tStateDisconnected      State = 0\n\tStateConnecting        State = 1\n\tStateAuthFailed        State = 4\n\tStateConnectedReadOnly State = 5\n\tStateSaslAuthenticated State = 6\n\tStateExpired           State = -112\n\n\tStateConnected  = State(100)\n\tStateHasSession = State(101)\n)\n\nconst (\n\tFlagEphemeral = 1\n\tFlagSequence  = 2\n)\n\nvar (\n\tstateNames = map[State]string{\n\t\tStateUnknown:           \"StateUnknown\",\n\t\tStateDisconnected:      \"StateDisconnected\",\n\t\tStateConnectedReadOnly: \"StateConnectedReadOnly\",\n\t\tStateSaslAuthenticated: \"StateSaslAuthenticated\",\n\t\tStateExpired:           \"StateExpired\",\n\t\tStateAuthFailed:        \"StateAuthFailed\",\n\t\tStateConnecting:        \"StateConnecting\",\n\t\tStateConnected:         \"StateConnected\",\n\t\tStateHasSession:        \"StateHasSession\",\n\t}\n)\n\ntype State int32\n\nfunc (s State) String() string {\n\tif name := stateNames[s]; name != \"\" {\n\t\treturn name\n\t}\n\treturn \"unknown state\"\n}\n\ntype ErrCode int32\n\nvar (\n\tErrConnectionClosed        = errors.New(\"zk: connection closed\")\n\tErrUnknown                 = errors.New(\"zk: unknown error\")\n\tErrAPIError                = errors.New(\"zk: api error\")\n\tErrNoNode                  = errors.New(\"zk: node does not exist\")\n\tErrNoAuth                  = errors.New(\"zk: not authenticated\")\n\tErrBadVersion              = errors.New(\"zk: version conflict\")\n\tErrNoChildrenForEphemerals = errors.New(\"zk: ephemeral nodes may not have children\")\n\tErrNodeExists              = errors.New(\"zk: node already exists\")\n\tErrNotEmpty                = errors.New(\"zk: node has children\")\n\tErrSessionExpired          = errors.New(\"zk: session has been expired by the server\")\n\tErrInvalidACL              = errors.New(\"zk: invalid ACL specified\")\n\tErrAuthFailed              = errors.New(\"zk: client authentication failed\")\n\tErrClosing                 = errors.New(\"zk: zookeeper is closing\")\n\tErrNothing                 = errors.New(\"zk: no server responsees to process\")\n\tErrSessionMoved            = errors.New(\"zk: session moved to another server, so operation is ignored\")\n\tErrReconfigDisabled        = errors.New(\"attempts to perform a reconfiguration operation when reconfiguration feature is disabled\")\n\tErrBadArguments            = errors.New(\"invalid arguments\")\n\t// ErrInvalidCallback         = errors.New(\"zk: invalid callback specified\")\n\n\terrCodeToError = map[ErrCode]error{\n\t\t0:                          nil,\n\t\terrAPIError:                ErrAPIError,\n\t\terrNoNode:                  ErrNoNode,\n\t\terrNoAuth:                  ErrNoAuth,\n\t\terrBadVersion:              ErrBadVersion,\n\t\terrNoChildrenForEphemerals: ErrNoChildrenForEphemerals,\n\t\terrNodeExists:              ErrNodeExists,\n\t\terrNotEmpty:                ErrNotEmpty,\n\t\terrSessionExpired:          ErrSessionExpired,\n\t\t// errInvalidCallback:         ErrInvalidCallback,\n\t\terrInvalidAcl:        ErrInvalidACL,\n\t\terrAuthFailed:        ErrAuthFailed,\n\t\terrClosing:           ErrClosing,\n\t\terrNothing:           ErrNothing,\n\t\terrSessionMoved:      ErrSessionMoved,\n\t\terrZReconfigDisabled: ErrReconfigDisabled,\n\t\terrBadArguments:      ErrBadArguments,\n\t}\n)\n\nfunc (e ErrCode) toError() error {\n\tif err, ok := errCodeToError[e]; ok {\n\t\treturn err\n\t}\n\treturn fmt.Errorf(\"unknown error: %v\", e)\n}\n\nconst (\n\terrOk = 0\n\t// System and server-side errors\n\terrSystemError          = -1\n\terrRuntimeInconsistency = -2\n\terrDataInconsistency    = -3\n\terrConnectionLoss       = -4\n\terrMarshallingError     = -5\n\terrUnimplemented        = -6\n\terrOperationTimeout     = -7\n\terrBadArguments         = -8\n\terrInvalidState         = -9\n\t// API errors\n\terrAPIError                ErrCode = -100\n\terrNoNode                  ErrCode = -101 // *\n\terrNoAuth                  ErrCode = -102\n\terrBadVersion              ErrCode = -103 // *\n\terrNoChildrenForEphemerals ErrCode = -108\n\terrNodeExists              ErrCode = -110 // *\n\terrNotEmpty                ErrCode = -111\n\terrSessionExpired          ErrCode = -112\n\terrInvalidCallback         ErrCode = -113\n\terrInvalidAcl              ErrCode = -114\n\terrAuthFailed              ErrCode = -115\n\terrClosing                 ErrCode = -116\n\terrNothing                 ErrCode = -117\n\terrSessionMoved            ErrCode = -118\n\t// Attempts to perform a reconfiguration operation when reconfiguration feature is disabled\n\terrZReconfigDisabled ErrCode = -123\n)\n\n// Constants for ACL permissions\nconst (\n\tPermRead = 1 << iota\n\tPermWrite\n\tPermCreate\n\tPermDelete\n\tPermAdmin\n\tPermAll = 0x1f\n)\n\nvar (\n\temptyPassword = []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}\n\topNames       = map[int32]string{\n\t\topNotify:       \"notify\",\n\t\topCreate:       \"create\",\n\t\topDelete:       \"delete\",\n\t\topExists:       \"exists\",\n\t\topGetData:      \"getData\",\n\t\topSetData:      \"setData\",\n\t\topGetAcl:       \"getACL\",\n\t\topSetAcl:       \"setACL\",\n\t\topGetChildren:  \"getChildren\",\n\t\topSync:         \"sync\",\n\t\topPing:         \"ping\",\n\t\topGetChildren2: \"getChildren2\",\n\t\topCheck:        \"check\",\n\t\topMulti:        \"multi\",\n\t\topReconfig:     \"reconfig\",\n\t\topClose:        \"close\",\n\t\topSetAuth:      \"setAuth\",\n\t\topSetWatches:   \"setWatches\",\n\n\t\topWatcherEvent: \"watcherEvent\",\n\t}\n)\n\ntype EventType int32\n\nfunc (t EventType) String() string {\n\tif name := eventNames[t]; name != \"\" {\n\t\treturn name\n\t}\n\treturn \"Unknown\"\n}\n\n// Mode is used to build custom server modes (leader|follower|standalone).\ntype Mode uint8\n\nfunc (m Mode) String() string {\n\tif name := modeNames[m]; name != \"\" {\n\t\treturn name\n\t}\n\treturn \"unknown\"\n}\n\nconst (\n\tModeUnknown    Mode = iota\n\tModeLeader     Mode = iota\n\tModeFollower   Mode = iota\n\tModeStandalone Mode = iota\n)\n\nvar (\n\tmodeNames = map[Mode]string{\n\t\tModeLeader:     \"leader\",\n\t\tModeFollower:   \"follower\",\n\t\tModeStandalone: \"standalone\",\n\t}\n)\n"
  },
  {
    "path": "vendor/github.com/samuel/go-zookeeper/zk/dnshostprovider.go",
    "content": "package zk\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"sync\"\n)\n\n// DNSHostProvider is the default HostProvider. It currently matches\n// the Java StaticHostProvider, resolving hosts from DNS once during\n// the call to Init.  It could be easily extended to re-query DNS\n// periodically or if there is trouble connecting.\ntype DNSHostProvider struct {\n\tmu         sync.Mutex // Protects everything, so we can add asynchronous updates later.\n\tservers    []string\n\tcurr       int\n\tlast       int\n\tlookupHost func(string) ([]string, error) // Override of net.LookupHost, for testing.\n}\n\n// Init is called first, with the servers specified in the connection\n// string. It uses DNS to look up addresses for each server, then\n// shuffles them all together.\nfunc (hp *DNSHostProvider) Init(servers []string) error {\n\thp.mu.Lock()\n\tdefer hp.mu.Unlock()\n\n\tlookupHost := hp.lookupHost\n\tif lookupHost == nil {\n\t\tlookupHost = net.LookupHost\n\t}\n\n\tfound := []string{}\n\tfor _, server := range servers {\n\t\thost, port, err := net.SplitHostPort(server)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddrs, err := lookupHost(host)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfor _, addr := range addrs {\n\t\t\tfound = append(found, net.JoinHostPort(addr, port))\n\t\t}\n\t}\n\n\tif len(found) == 0 {\n\t\treturn fmt.Errorf(\"No hosts found for addresses %q\", servers)\n\t}\n\n\t// Randomize the order of the servers to avoid creating hotspots\n\tstringShuffle(found)\n\n\thp.servers = found\n\thp.curr = -1\n\thp.last = -1\n\n\treturn nil\n}\n\n// Len returns the number of servers available\nfunc (hp *DNSHostProvider) Len() int {\n\thp.mu.Lock()\n\tdefer hp.mu.Unlock()\n\treturn len(hp.servers)\n}\n\n// Next returns the next server to connect to. retryStart will be true\n// if we've looped through all known servers without Connected() being\n// called.\nfunc (hp *DNSHostProvider) Next() (server string, retryStart bool) {\n\thp.mu.Lock()\n\tdefer hp.mu.Unlock()\n\thp.curr = (hp.curr + 1) % len(hp.servers)\n\tretryStart = hp.curr == hp.last\n\tif hp.last == -1 {\n\t\thp.last = 0\n\t}\n\treturn hp.servers[hp.curr], retryStart\n}\n\n// Connected notifies the HostProvider of a successful connection.\nfunc (hp *DNSHostProvider) Connected() {\n\thp.mu.Lock()\n\tdefer hp.mu.Unlock()\n\thp.last = hp.curr\n}\n"
  },
  {
    "path": "vendor/github.com/samuel/go-zookeeper/zk/flw.go",
    "content": "package zk\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// FLWSrvr is a FourLetterWord helper function. In particular, this function pulls the srvr output\n// from the zookeeper instances and parses the output. A slice of *ServerStats structs are returned\n// as well as a boolean value to indicate whether this function processed successfully.\n//\n// If the boolean value is false there was a problem. If the *ServerStats slice is empty or nil,\n// then the error happened before we started to obtain 'srvr' values. Otherwise, one of the\n// servers had an issue and the \"Error\" value in the struct should be inspected to determine\n// which server had the issue.\nfunc FLWSrvr(servers []string, timeout time.Duration) ([]*ServerStats, bool) {\n\t// different parts of the regular expression that are required to parse the srvr output\n\tconst (\n\t\tzrVer   = `^Zookeeper version: ([A-Za-z0-9\\.\\-]+), built on (\\d\\d/\\d\\d/\\d\\d\\d\\d \\d\\d:\\d\\d [A-Za-z0-9:\\+\\-]+)`\n\t\tzrLat   = `^Latency min/avg/max: (\\d+)/(\\d+)/(\\d+)`\n\t\tzrNet   = `^Received: (\\d+).*\\n^Sent: (\\d+).*\\n^Connections: (\\d+).*\\n^Outstanding: (\\d+)`\n\t\tzrState = `^Zxid: (0x[A-Za-z0-9]+).*\\n^Mode: (\\w+).*\\n^Node count: (\\d+)`\n\t)\n\n\t// build the regex from the pieces above\n\tre, err := regexp.Compile(fmt.Sprintf(`(?m:\\A%v.*\\n%v.*\\n%v.*\\n%v)`, zrVer, zrLat, zrNet, zrState))\n\tif err != nil {\n\t\treturn nil, false\n\t}\n\n\timOk := true\n\tservers = FormatServers(servers)\n\tss := make([]*ServerStats, len(servers))\n\n\tfor i := range ss {\n\t\tresponse, err := fourLetterWord(servers[i], \"srvr\", timeout)\n\n\t\tif err != nil {\n\t\t\tss[i] = &ServerStats{Error: err}\n\t\t\timOk = false\n\t\t\tcontinue\n\t\t}\n\n\t\tmatches := re.FindAllStringSubmatch(string(response), -1)\n\n\t\tif matches == nil {\n\t\t\terr := fmt.Errorf(\"unable to parse fields from zookeeper response (no regex matches)\")\n\t\t\tss[i] = &ServerStats{Error: err}\n\t\t\timOk = false\n\t\t\tcontinue\n\t\t}\n\n\t\tmatch := matches[0][1:]\n\n\t\t// determine current server\n\t\tvar srvrMode Mode\n\t\tswitch match[10] {\n\t\tcase \"leader\":\n\t\t\tsrvrMode = ModeLeader\n\t\tcase \"follower\":\n\t\t\tsrvrMode = ModeFollower\n\t\tcase \"standalone\":\n\t\t\tsrvrMode = ModeStandalone\n\t\tdefault:\n\t\t\tsrvrMode = ModeUnknown\n\t\t}\n\n\t\tbuildTime, err := time.Parse(\"01/02/2006 15:04 MST\", match[1])\n\n\t\tif err != nil {\n\t\t\tss[i] = &ServerStats{Error: err}\n\t\t\timOk = false\n\t\t\tcontinue\n\t\t}\n\n\t\tparsedInt, err := strconv.ParseInt(match[9], 0, 64)\n\n\t\tif err != nil {\n\t\t\tss[i] = &ServerStats{Error: err}\n\t\t\timOk = false\n\t\t\tcontinue\n\t\t}\n\n\t\t// the ZxID value is an int64 with two int32s packed inside\n\t\t// the high int32 is the epoch (i.e., number of leader elections)\n\t\t// the low int32 is the counter\n\t\tepoch := int32(parsedInt >> 32)\n\t\tcounter := int32(parsedInt & 0xFFFFFFFF)\n\n\t\t// within the regex above, these values must be numerical\n\t\t// so we can avoid useless checking of the error return value\n\t\tminLatency, _ := strconv.ParseInt(match[2], 0, 64)\n\t\tavgLatency, _ := strconv.ParseInt(match[3], 0, 64)\n\t\tmaxLatency, _ := strconv.ParseInt(match[4], 0, 64)\n\t\trecv, _ := strconv.ParseInt(match[5], 0, 64)\n\t\tsent, _ := strconv.ParseInt(match[6], 0, 64)\n\t\tcons, _ := strconv.ParseInt(match[7], 0, 64)\n\t\touts, _ := strconv.ParseInt(match[8], 0, 64)\n\t\tncnt, _ := strconv.ParseInt(match[11], 0, 64)\n\n\t\tss[i] = &ServerStats{\n\t\t\tSent:        sent,\n\t\t\tReceived:    recv,\n\t\t\tNodeCount:   ncnt,\n\t\t\tMinLatency:  minLatency,\n\t\t\tAvgLatency:  avgLatency,\n\t\t\tMaxLatency:  maxLatency,\n\t\t\tConnections: cons,\n\t\t\tOutstanding: outs,\n\t\t\tEpoch:       epoch,\n\t\t\tCounter:     counter,\n\t\t\tBuildTime:   buildTime,\n\t\t\tMode:        srvrMode,\n\t\t\tVersion:     match[0],\n\t\t}\n\t}\n\n\treturn ss, imOk\n}\n\n// FLWRuok is a FourLetterWord helper function. In particular, this function\n// pulls the ruok output from each server.\nfunc FLWRuok(servers []string, timeout time.Duration) []bool {\n\tservers = FormatServers(servers)\n\toks := make([]bool, len(servers))\n\n\tfor i := range oks {\n\t\tresponse, err := fourLetterWord(servers[i], \"ruok\", timeout)\n\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif bytes.Equal(response[:4], []byte(\"imok\")) {\n\t\t\toks[i] = true\n\t\t}\n\t}\n\treturn oks\n}\n\n// FLWCons is a FourLetterWord helper function. In particular, this function\n// pulls the ruok output from each server.\n//\n// As with FLWSrvr, the boolean value indicates whether one of the requests had\n// an issue. The Clients struct has an Error value that can be checked.\nfunc FLWCons(servers []string, timeout time.Duration) ([]*ServerClients, bool) {\n\tconst (\n\t\tzrAddr = `^ /((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):(?:\\d+))\\[\\d+\\]`\n\t\tzrPac  = `\\(queued=(\\d+),recved=(\\d+),sent=(\\d+),sid=(0x[A-Za-z0-9]+),lop=(\\w+),est=(\\d+),to=(\\d+),`\n\t\tzrSesh = `lcxid=(0x[A-Za-z0-9]+),lzxid=(0x[A-Za-z0-9]+),lresp=(\\d+),llat=(\\d+),minlat=(\\d+),avglat=(\\d+),maxlat=(\\d+)\\)`\n\t)\n\n\tre, err := regexp.Compile(fmt.Sprintf(\"%v%v%v\", zrAddr, zrPac, zrSesh))\n\tif err != nil {\n\t\treturn nil, false\n\t}\n\n\tservers = FormatServers(servers)\n\tsc := make([]*ServerClients, len(servers))\n\timOk := true\n\n\tfor i := range sc {\n\t\tresponse, err := fourLetterWord(servers[i], \"cons\", timeout)\n\n\t\tif err != nil {\n\t\t\tsc[i] = &ServerClients{Error: err}\n\t\t\timOk = false\n\t\t\tcontinue\n\t\t}\n\n\t\tscan := bufio.NewScanner(bytes.NewReader(response))\n\n\t\tvar clients []*ServerClient\n\n\t\tfor scan.Scan() {\n\t\t\tline := scan.Bytes()\n\n\t\t\tif len(line) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tm := re.FindAllStringSubmatch(string(line), -1)\n\n\t\t\tif m == nil {\n\t\t\t\terr := fmt.Errorf(\"unable to parse fields from zookeeper response (no regex matches)\")\n\t\t\t\tsc[i] = &ServerClients{Error: err}\n\t\t\t\timOk = false\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tmatch := m[0][1:]\n\n\t\t\tqueued, _ := strconv.ParseInt(match[1], 0, 64)\n\t\t\trecvd, _ := strconv.ParseInt(match[2], 0, 64)\n\t\t\tsent, _ := strconv.ParseInt(match[3], 0, 64)\n\t\t\tsid, _ := strconv.ParseInt(match[4], 0, 64)\n\t\t\test, _ := strconv.ParseInt(match[6], 0, 64)\n\t\t\ttimeout, _ := strconv.ParseInt(match[7], 0, 32)\n\t\t\tlcxid, _ := parseInt64(match[8])\n\t\t\tlzxid, _ := parseInt64(match[9])\n\t\t\tlresp, _ := strconv.ParseInt(match[10], 0, 64)\n\t\t\tllat, _ := strconv.ParseInt(match[11], 0, 32)\n\t\t\tminlat, _ := strconv.ParseInt(match[12], 0, 32)\n\t\t\tavglat, _ := strconv.ParseInt(match[13], 0, 32)\n\t\t\tmaxlat, _ := strconv.ParseInt(match[14], 0, 32)\n\n\t\t\tclients = append(clients, &ServerClient{\n\t\t\t\tQueued:        queued,\n\t\t\t\tReceived:      recvd,\n\t\t\t\tSent:          sent,\n\t\t\t\tSessionID:     sid,\n\t\t\t\tLcxid:         int64(lcxid),\n\t\t\t\tLzxid:         int64(lzxid),\n\t\t\t\tTimeout:       int32(timeout),\n\t\t\t\tLastLatency:   int32(llat),\n\t\t\t\tMinLatency:    int32(minlat),\n\t\t\t\tAvgLatency:    int32(avglat),\n\t\t\t\tMaxLatency:    int32(maxlat),\n\t\t\t\tEstablished:   time.Unix(est, 0),\n\t\t\t\tLastResponse:  time.Unix(lresp, 0),\n\t\t\t\tAddr:          match[0],\n\t\t\t\tLastOperation: match[5],\n\t\t\t})\n\t\t}\n\n\t\tsc[i] = &ServerClients{Clients: clients}\n\t}\n\n\treturn sc, imOk\n}\n\n// parseInt64 is similar to strconv.ParseInt, but it also handles hex values that represent negative numbers\nfunc parseInt64(s string) (int64, error) {\n\tif strings.HasPrefix(s, \"0x\") {\n\t\ti, err := strconv.ParseUint(s, 0, 64)\n\t\treturn int64(i), err\n\t}\n\treturn strconv.ParseInt(s, 0, 64)\n}\n\nfunc fourLetterWord(server, command string, timeout time.Duration) ([]byte, error) {\n\tconn, err := net.DialTimeout(\"tcp\", server, timeout)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// the zookeeper server should automatically close this socket\n\t// once the command has been processed, but better safe than sorry\n\tdefer conn.Close()\n\n\tif err := conn.SetWriteDeadline(time.Now().Add(timeout)); err != nil {\n\t\treturn nil, err\n\t}\n\t_, err = conn.Write([]byte(command))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := conn.SetReadDeadline(time.Now().Add(timeout)); err != nil {\n\t\treturn nil, err\n\t}\n\treturn ioutil.ReadAll(conn)\n}\n"
  },
  {
    "path": "vendor/github.com/samuel/go-zookeeper/zk/lock.go",
    "content": "package zk\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nvar (\n\t// ErrDeadlock is returned by Lock when trying to lock twice without unlocking first\n\tErrDeadlock = errors.New(\"zk: trying to acquire a lock twice\")\n\t// ErrNotLocked is returned by Unlock when trying to release a lock that has not first be acquired.\n\tErrNotLocked = errors.New(\"zk: not locked\")\n)\n\n// Lock is a mutual exclusion lock.\ntype Lock struct {\n\tc        *Conn\n\tpath     string\n\tacl      []ACL\n\tlockPath string\n\tseq      int\n}\n\n// NewLock creates a new lock instance using the provided connection, path, and acl.\n// The path must be a node that is only used by this lock. A lock instances starts\n// unlocked until Lock() is called.\nfunc NewLock(c *Conn, path string, acl []ACL) *Lock {\n\treturn &Lock{\n\t\tc:    c,\n\t\tpath: path,\n\t\tacl:  acl,\n\t}\n}\n\nfunc parseSeq(path string) (int, error) {\n\tparts := strings.Split(path, \"-\")\n\treturn strconv.Atoi(parts[len(parts)-1])\n}\n\n// Lock attempts to acquire the lock. It will wait to return until the lock\n// is acquired or an error occurs. If this instance already has the lock\n// then ErrDeadlock is returned.\nfunc (l *Lock) Lock() error {\n\tif l.lockPath != \"\" {\n\t\treturn ErrDeadlock\n\t}\n\n\tprefix := fmt.Sprintf(\"%s/lock-\", l.path)\n\n\tpath := \"\"\n\tvar err error\n\tfor i := 0; i < 3; i++ {\n\t\tpath, err = l.c.CreateProtectedEphemeralSequential(prefix, []byte{}, l.acl)\n\t\tif err == ErrNoNode {\n\t\t\t// Create parent node.\n\t\t\tparts := strings.Split(l.path, \"/\")\n\t\t\tpth := \"\"\n\t\t\tfor _, p := range parts[1:] {\n\t\t\t\tvar exists bool\n\t\t\t\tpth += \"/\" + p\n\t\t\t\texists, _, err = l.c.Exists(pth)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif exists == true {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t_, err = l.c.Create(pth, []byte{}, 0, l.acl)\n\t\t\t\tif err != nil && err != ErrNodeExists {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t} else if err == nil {\n\t\t\tbreak\n\t\t} else {\n\t\t\treturn err\n\t\t}\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tseq, err := parseSeq(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor {\n\t\tchildren, _, err := l.c.Children(l.path)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tlowestSeq := seq\n\t\tprevSeq := -1\n\t\tprevSeqPath := \"\"\n\t\tfor _, p := range children {\n\t\t\ts, err := parseSeq(p)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif s < lowestSeq {\n\t\t\t\tlowestSeq = s\n\t\t\t}\n\t\t\tif s < seq && s > prevSeq {\n\t\t\t\tprevSeq = s\n\t\t\t\tprevSeqPath = p\n\t\t\t}\n\t\t}\n\n\t\tif seq == lowestSeq {\n\t\t\t// Acquired the lock\n\t\t\tbreak\n\t\t}\n\n\t\t// Wait on the node next in line for the lock\n\t\t_, _, ch, err := l.c.GetW(l.path + \"/\" + prevSeqPath)\n\t\tif err != nil && err != ErrNoNode {\n\t\t\treturn err\n\t\t} else if err != nil && err == ErrNoNode {\n\t\t\t// try again\n\t\t\tcontinue\n\t\t}\n\n\t\tev := <-ch\n\t\tif ev.Err != nil {\n\t\t\treturn ev.Err\n\t\t}\n\t}\n\n\tl.seq = seq\n\tl.lockPath = path\n\treturn nil\n}\n\n// Unlock releases an acquired lock. If the lock is not currently acquired by\n// this Lock instance than ErrNotLocked is returned.\nfunc (l *Lock) Unlock() error {\n\tif l.lockPath == \"\" {\n\t\treturn ErrNotLocked\n\t}\n\tif err := l.c.Delete(l.lockPath, -1); err != nil {\n\t\treturn err\n\t}\n\tl.lockPath = \"\"\n\tl.seq = 0\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/samuel/go-zookeeper/zk/structs.go",
    "content": "package zk\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"log\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar (\n\tErrUnhandledFieldType = errors.New(\"zk: unhandled field type\")\n\tErrPtrExpected        = errors.New(\"zk: encode/decode expect a non-nil pointer to struct\")\n\tErrShortBuffer        = errors.New(\"zk: buffer too small\")\n)\n\ntype defaultLogger struct{}\n\nfunc (defaultLogger) Printf(format string, a ...interface{}) {\n\tlog.Printf(format, a...)\n}\n\ntype ACL struct {\n\tPerms  int32\n\tScheme string\n\tID     string\n}\n\ntype Stat struct {\n\tCzxid          int64 // The zxid of the change that caused this znode to be created.\n\tMzxid          int64 // The zxid of the change that last modified this znode.\n\tCtime          int64 // The time in milliseconds from epoch when this znode was created.\n\tMtime          int64 // The time in milliseconds from epoch when this znode was last modified.\n\tVersion        int32 // The number of changes to the data of this znode.\n\tCversion       int32 // The number of changes to the children of this znode.\n\tAversion       int32 // The number of changes to the ACL of this znode.\n\tEphemeralOwner int64 // The session id of the owner of this znode if the znode is an ephemeral node. If it is not an ephemeral node, it will be zero.\n\tDataLength     int32 // The length of the data field of this znode.\n\tNumChildren    int32 // The number of children of this znode.\n\tPzxid          int64 // last modified children\n}\n\n// ServerClient is the information for a single Zookeeper client and its session.\n// This is used to parse/extract the output fo the `cons` command.\ntype ServerClient struct {\n\tQueued        int64\n\tReceived      int64\n\tSent          int64\n\tSessionID     int64\n\tLcxid         int64\n\tLzxid         int64\n\tTimeout       int32\n\tLastLatency   int32\n\tMinLatency    int32\n\tAvgLatency    int32\n\tMaxLatency    int32\n\tEstablished   time.Time\n\tLastResponse  time.Time\n\tAddr          string\n\tLastOperation string // maybe?\n\tError         error\n}\n\n// ServerClients is a struct for the FLWCons() function. It's used to provide\n// the list of Clients.\n//\n// This is needed because FLWCons() takes multiple servers.\ntype ServerClients struct {\n\tClients []*ServerClient\n\tError   error\n}\n\n// ServerStats is the information pulled from the Zookeeper `stat` command.\ntype ServerStats struct {\n\tSent        int64\n\tReceived    int64\n\tNodeCount   int64\n\tMinLatency  int64\n\tAvgLatency  int64\n\tMaxLatency  int64\n\tConnections int64\n\tOutstanding int64\n\tEpoch       int32\n\tCounter     int32\n\tBuildTime   time.Time\n\tMode        Mode\n\tVersion     string\n\tError       error\n}\n\ntype requestHeader struct {\n\tXid    int32\n\tOpcode int32\n}\n\ntype responseHeader struct {\n\tXid  int32\n\tZxid int64\n\tErr  ErrCode\n}\n\ntype multiHeader struct {\n\tType int32\n\tDone bool\n\tErr  ErrCode\n}\n\ntype auth struct {\n\tType   int32\n\tScheme string\n\tAuth   []byte\n}\n\n// Generic request structs\n\ntype pathRequest struct {\n\tPath string\n}\n\ntype PathVersionRequest struct {\n\tPath    string\n\tVersion int32\n}\n\ntype pathWatchRequest struct {\n\tPath  string\n\tWatch bool\n}\n\ntype pathResponse struct {\n\tPath string\n}\n\ntype statResponse struct {\n\tStat Stat\n}\n\n//\n\ntype CheckVersionRequest PathVersionRequest\ntype closeRequest struct{}\ntype closeResponse struct{}\n\ntype connectRequest struct {\n\tProtocolVersion int32\n\tLastZxidSeen    int64\n\tTimeOut         int32\n\tSessionID       int64\n\tPasswd          []byte\n}\n\ntype connectResponse struct {\n\tProtocolVersion int32\n\tTimeOut         int32\n\tSessionID       int64\n\tPasswd          []byte\n}\n\ntype CreateRequest struct {\n\tPath  string\n\tData  []byte\n\tAcl   []ACL\n\tFlags int32\n}\n\ntype createResponse pathResponse\ntype DeleteRequest PathVersionRequest\ntype deleteResponse struct{}\n\ntype errorResponse struct {\n\tErr int32\n}\n\ntype existsRequest pathWatchRequest\ntype existsResponse statResponse\ntype getAclRequest pathRequest\n\ntype getAclResponse struct {\n\tAcl  []ACL\n\tStat Stat\n}\n\ntype getChildrenRequest pathRequest\n\ntype getChildrenResponse struct {\n\tChildren []string\n}\n\ntype getChildren2Request pathWatchRequest\n\ntype getChildren2Response struct {\n\tChildren []string\n\tStat     Stat\n}\n\ntype getDataRequest pathWatchRequest\n\ntype getDataResponse struct {\n\tData []byte\n\tStat Stat\n}\n\ntype getMaxChildrenRequest pathRequest\n\ntype getMaxChildrenResponse struct {\n\tMax int32\n}\n\ntype getSaslRequest struct {\n\tToken []byte\n}\n\ntype pingRequest struct{}\ntype pingResponse struct{}\n\ntype setAclRequest struct {\n\tPath    string\n\tAcl     []ACL\n\tVersion int32\n}\n\ntype setAclResponse statResponse\n\ntype SetDataRequest struct {\n\tPath    string\n\tData    []byte\n\tVersion int32\n}\n\ntype setDataResponse statResponse\n\ntype setMaxChildren struct {\n\tPath string\n\tMax  int32\n}\n\ntype setSaslRequest struct {\n\tToken string\n}\n\ntype setSaslResponse struct {\n\tToken string\n}\n\ntype setWatchesRequest struct {\n\tRelativeZxid int64\n\tDataWatches  []string\n\tExistWatches []string\n\tChildWatches []string\n}\n\ntype setWatchesResponse struct{}\n\ntype syncRequest pathRequest\ntype syncResponse pathResponse\n\ntype setAuthRequest auth\ntype setAuthResponse struct{}\n\ntype multiRequestOp struct {\n\tHeader multiHeader\n\tOp     interface{}\n}\ntype multiRequest struct {\n\tOps        []multiRequestOp\n\tDoneHeader multiHeader\n}\ntype multiResponseOp struct {\n\tHeader multiHeader\n\tString string\n\tStat   *Stat\n\tErr    ErrCode\n}\ntype multiResponse struct {\n\tOps        []multiResponseOp\n\tDoneHeader multiHeader\n}\n\n// zk version 3.5 reconfig API\ntype reconfigRequest struct {\n\tJoiningServers []byte\n\tLeavingServers []byte\n\tNewMembers     []byte\n\t// curConfigId version of the current configuration\n\t// optional - causes reconfiguration to return an error if configuration is no longer current\n\tCurConfigId int64\n}\n\ntype reconfigReponse getDataResponse\n\nfunc (r *multiRequest) Encode(buf []byte) (int, error) {\n\ttotal := 0\n\tfor _, op := range r.Ops {\n\t\top.Header.Done = false\n\t\tn, err := encodePacketValue(buf[total:], reflect.ValueOf(op))\n\t\tif err != nil {\n\t\t\treturn total, err\n\t\t}\n\t\ttotal += n\n\t}\n\tr.DoneHeader.Done = true\n\tn, err := encodePacketValue(buf[total:], reflect.ValueOf(r.DoneHeader))\n\tif err != nil {\n\t\treturn total, err\n\t}\n\ttotal += n\n\n\treturn total, nil\n}\n\nfunc (r *multiRequest) Decode(buf []byte) (int, error) {\n\tr.Ops = make([]multiRequestOp, 0)\n\tr.DoneHeader = multiHeader{-1, true, -1}\n\ttotal := 0\n\tfor {\n\t\theader := &multiHeader{}\n\t\tn, err := decodePacketValue(buf[total:], reflect.ValueOf(header))\n\t\tif err != nil {\n\t\t\treturn total, err\n\t\t}\n\t\ttotal += n\n\t\tif header.Done {\n\t\t\tr.DoneHeader = *header\n\t\t\tbreak\n\t\t}\n\n\t\treq := requestStructForOp(header.Type)\n\t\tif req == nil {\n\t\t\treturn total, ErrAPIError\n\t\t}\n\t\tn, err = decodePacketValue(buf[total:], reflect.ValueOf(req))\n\t\tif err != nil {\n\t\t\treturn total, err\n\t\t}\n\t\ttotal += n\n\t\tr.Ops = append(r.Ops, multiRequestOp{*header, req})\n\t}\n\treturn total, nil\n}\n\nfunc (r *multiResponse) Decode(buf []byte) (int, error) {\n\tvar multiErr error\n\n\tr.Ops = make([]multiResponseOp, 0)\n\tr.DoneHeader = multiHeader{-1, true, -1}\n\ttotal := 0\n\tfor {\n\t\theader := &multiHeader{}\n\t\tn, err := decodePacketValue(buf[total:], reflect.ValueOf(header))\n\t\tif err != nil {\n\t\t\treturn total, err\n\t\t}\n\t\ttotal += n\n\t\tif header.Done {\n\t\t\tr.DoneHeader = *header\n\t\t\tbreak\n\t\t}\n\n\t\tres := multiResponseOp{Header: *header}\n\t\tvar w reflect.Value\n\t\tswitch header.Type {\n\t\tdefault:\n\t\t\treturn total, ErrAPIError\n\t\tcase opError:\n\t\t\tw = reflect.ValueOf(&res.Err)\n\t\tcase opCreate:\n\t\t\tw = reflect.ValueOf(&res.String)\n\t\tcase opSetData:\n\t\t\tres.Stat = new(Stat)\n\t\t\tw = reflect.ValueOf(res.Stat)\n\t\tcase opCheck, opDelete:\n\t\t}\n\t\tif w.IsValid() {\n\t\t\tn, err := decodePacketValue(buf[total:], w)\n\t\t\tif err != nil {\n\t\t\t\treturn total, err\n\t\t\t}\n\t\t\ttotal += n\n\t\t}\n\t\tr.Ops = append(r.Ops, res)\n\t\tif multiErr == nil && res.Err != errOk {\n\t\t\t// Use the first error as the error returned from Multi().\n\t\t\tmultiErr = res.Err.toError()\n\t\t}\n\t}\n\treturn total, multiErr\n}\n\ntype watcherEvent struct {\n\tType  EventType\n\tState State\n\tPath  string\n}\n\ntype decoder interface {\n\tDecode(buf []byte) (int, error)\n}\n\ntype encoder interface {\n\tEncode(buf []byte) (int, error)\n}\n\nfunc decodePacket(buf []byte, st interface{}) (n int, err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tif e, ok := r.(runtime.Error); ok && strings.HasPrefix(e.Error(), \"runtime error: slice bounds out of range\") {\n\t\t\t\terr = ErrShortBuffer\n\t\t\t} else {\n\t\t\t\tpanic(r)\n\t\t\t}\n\t\t}\n\t}()\n\n\tv := reflect.ValueOf(st)\n\tif v.Kind() != reflect.Ptr || v.IsNil() {\n\t\treturn 0, ErrPtrExpected\n\t}\n\treturn decodePacketValue(buf, v)\n}\n\nfunc decodePacketValue(buf []byte, v reflect.Value) (int, error) {\n\trv := v\n\tkind := v.Kind()\n\tif kind == reflect.Ptr {\n\t\tif v.IsNil() {\n\t\t\tv.Set(reflect.New(v.Type().Elem()))\n\t\t}\n\t\tv = v.Elem()\n\t\tkind = v.Kind()\n\t}\n\n\tn := 0\n\tswitch kind {\n\tdefault:\n\t\treturn n, ErrUnhandledFieldType\n\tcase reflect.Struct:\n\t\tif de, ok := rv.Interface().(decoder); ok {\n\t\t\treturn de.Decode(buf)\n\t\t} else if de, ok := v.Interface().(decoder); ok {\n\t\t\treturn de.Decode(buf)\n\t\t} else {\n\t\t\tfor i := 0; i < v.NumField(); i++ {\n\t\t\t\tfield := v.Field(i)\n\t\t\t\tn2, err := decodePacketValue(buf[n:], field)\n\t\t\t\tn += n2\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn n, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Bool:\n\t\tv.SetBool(buf[n] != 0)\n\t\tn++\n\tcase reflect.Int32:\n\t\tv.SetInt(int64(binary.BigEndian.Uint32(buf[n : n+4])))\n\t\tn += 4\n\tcase reflect.Int64:\n\t\tv.SetInt(int64(binary.BigEndian.Uint64(buf[n : n+8])))\n\t\tn += 8\n\tcase reflect.String:\n\t\tln := int(binary.BigEndian.Uint32(buf[n : n+4]))\n\t\tv.SetString(string(buf[n+4 : n+4+ln]))\n\t\tn += 4 + ln\n\tcase reflect.Slice:\n\t\tswitch v.Type().Elem().Kind() {\n\t\tdefault:\n\t\t\tcount := int(binary.BigEndian.Uint32(buf[n : n+4]))\n\t\t\tn += 4\n\t\t\tvalues := reflect.MakeSlice(v.Type(), count, count)\n\t\t\tv.Set(values)\n\t\t\tfor i := 0; i < count; i++ {\n\t\t\t\tn2, err := decodePacketValue(buf[n:], values.Index(i))\n\t\t\t\tn += n2\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn n, err\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Uint8:\n\t\t\tln := int(int32(binary.BigEndian.Uint32(buf[n : n+4])))\n\t\t\tif ln < 0 {\n\t\t\t\tn += 4\n\t\t\t\tv.SetBytes(nil)\n\t\t\t} else {\n\t\t\t\tbytes := make([]byte, ln)\n\t\t\t\tcopy(bytes, buf[n+4:n+4+ln])\n\t\t\t\tv.SetBytes(bytes)\n\t\t\t\tn += 4 + ln\n\t\t\t}\n\t\t}\n\t}\n\treturn n, nil\n}\n\nfunc encodePacket(buf []byte, st interface{}) (n int, err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tif e, ok := r.(runtime.Error); ok && strings.HasPrefix(e.Error(), \"runtime error: slice bounds out of range\") {\n\t\t\t\terr = ErrShortBuffer\n\t\t\t} else {\n\t\t\t\tpanic(r)\n\t\t\t}\n\t\t}\n\t}()\n\n\tv := reflect.ValueOf(st)\n\tif v.Kind() != reflect.Ptr || v.IsNil() {\n\t\treturn 0, ErrPtrExpected\n\t}\n\treturn encodePacketValue(buf, v)\n}\n\nfunc encodePacketValue(buf []byte, v reflect.Value) (int, error) {\n\trv := v\n\tfor v.Kind() == reflect.Ptr || v.Kind() == reflect.Interface {\n\t\tv = v.Elem()\n\t}\n\n\tn := 0\n\tswitch v.Kind() {\n\tdefault:\n\t\treturn n, ErrUnhandledFieldType\n\tcase reflect.Struct:\n\t\tif en, ok := rv.Interface().(encoder); ok {\n\t\t\treturn en.Encode(buf)\n\t\t} else if en, ok := v.Interface().(encoder); ok {\n\t\t\treturn en.Encode(buf)\n\t\t} else {\n\t\t\tfor i := 0; i < v.NumField(); i++ {\n\t\t\t\tfield := v.Field(i)\n\t\t\t\tn2, err := encodePacketValue(buf[n:], field)\n\t\t\t\tn += n2\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn n, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Bool:\n\t\tif v.Bool() {\n\t\t\tbuf[n] = 1\n\t\t} else {\n\t\t\tbuf[n] = 0\n\t\t}\n\t\tn++\n\tcase reflect.Int32:\n\t\tbinary.BigEndian.PutUint32(buf[n:n+4], uint32(v.Int()))\n\t\tn += 4\n\tcase reflect.Int64:\n\t\tbinary.BigEndian.PutUint64(buf[n:n+8], uint64(v.Int()))\n\t\tn += 8\n\tcase reflect.String:\n\t\tstr := v.String()\n\t\tbinary.BigEndian.PutUint32(buf[n:n+4], uint32(len(str)))\n\t\tcopy(buf[n+4:n+4+len(str)], []byte(str))\n\t\tn += 4 + len(str)\n\tcase reflect.Slice:\n\t\tswitch v.Type().Elem().Kind() {\n\t\tdefault:\n\t\t\tcount := v.Len()\n\t\t\tstartN := n\n\t\t\tn += 4\n\t\t\tfor i := 0; i < count; i++ {\n\t\t\t\tn2, err := encodePacketValue(buf[n:], v.Index(i))\n\t\t\t\tn += n2\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn n, err\n\t\t\t\t}\n\t\t\t}\n\t\t\tbinary.BigEndian.PutUint32(buf[startN:startN+4], uint32(count))\n\t\tcase reflect.Uint8:\n\t\t\tif v.IsNil() {\n\t\t\t\tbinary.BigEndian.PutUint32(buf[n:n+4], uint32(0xffffffff))\n\t\t\t\tn += 4\n\t\t\t} else {\n\t\t\t\tbytes := v.Bytes()\n\t\t\t\tbinary.BigEndian.PutUint32(buf[n:n+4], uint32(len(bytes)))\n\t\t\t\tcopy(buf[n+4:n+4+len(bytes)], bytes)\n\t\t\t\tn += 4 + len(bytes)\n\t\t\t}\n\t\t}\n\t}\n\treturn n, nil\n}\n\nfunc requestStructForOp(op int32) interface{} {\n\tswitch op {\n\tcase opClose:\n\t\treturn &closeRequest{}\n\tcase opCreate:\n\t\treturn &CreateRequest{}\n\tcase opDelete:\n\t\treturn &DeleteRequest{}\n\tcase opExists:\n\t\treturn &existsRequest{}\n\tcase opGetAcl:\n\t\treturn &getAclRequest{}\n\tcase opGetChildren:\n\t\treturn &getChildrenRequest{}\n\tcase opGetChildren2:\n\t\treturn &getChildren2Request{}\n\tcase opGetData:\n\t\treturn &getDataRequest{}\n\tcase opPing:\n\t\treturn &pingRequest{}\n\tcase opSetAcl:\n\t\treturn &setAclRequest{}\n\tcase opSetData:\n\t\treturn &SetDataRequest{}\n\tcase opSetWatches:\n\t\treturn &setWatchesRequest{}\n\tcase opSync:\n\t\treturn &syncRequest{}\n\tcase opSetAuth:\n\t\treturn &setAuthRequest{}\n\tcase opCheck:\n\t\treturn &CheckVersionRequest{}\n\tcase opMulti:\n\t\treturn &multiRequest{}\n\tcase opReconfig:\n\t\treturn &reconfigRequest{}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/samuel/go-zookeeper/zk/util.go",
    "content": "package zk\n\nimport (\n\t\"crypto/sha1\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"math/rand\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n)\n\n// AuthACL produces an ACL list containing a single ACL which uses the\n// provided permissions, with the scheme \"auth\", and ID \"\", which is used\n// by ZooKeeper to represent any authenticated user.\nfunc AuthACL(perms int32) []ACL {\n\treturn []ACL{{perms, \"auth\", \"\"}}\n}\n\n// WorldACL produces an ACL list containing a single ACL which uses the\n// provided permissions, with the scheme \"world\", and ID \"anyone\", which\n// is used by ZooKeeper to represent any user at all.\nfunc WorldACL(perms int32) []ACL {\n\treturn []ACL{{perms, \"world\", \"anyone\"}}\n}\n\nfunc DigestACL(perms int32, user, password string) []ACL {\n\tuserPass := []byte(fmt.Sprintf(\"%s:%s\", user, password))\n\th := sha1.New()\n\tif n, err := h.Write(userPass); err != nil || n != len(userPass) {\n\t\tpanic(\"SHA1 failed\")\n\t}\n\tdigest := base64.StdEncoding.EncodeToString(h.Sum(nil))\n\treturn []ACL{{perms, \"digest\", fmt.Sprintf(\"%s:%s\", user, digest)}}\n}\n\n// FormatServers takes a slice of addresses, and makes sure they are in a format\n// that resembles <addr>:<port>. If the server has no port provided, the\n// DefaultPort constant is added to the end.\nfunc FormatServers(servers []string) []string {\n\tfor i := range servers {\n\t\tif !strings.Contains(servers[i], \":\") {\n\t\t\tservers[i] = servers[i] + \":\" + strconv.Itoa(DefaultPort)\n\t\t}\n\t}\n\treturn servers\n}\n\n// stringShuffle performs a Fisher-Yates shuffle on a slice of strings\nfunc stringShuffle(s []string) {\n\tfor i := len(s) - 1; i > 0; i-- {\n\t\tj := rand.Intn(i + 1)\n\t\ts[i], s[j] = s[j], s[i]\n\t}\n}\n\n// validatePath will make sure a path is valid before sending the request\nfunc validatePath(path string, isSequential bool) error {\n\tif path == \"\" {\n\t\treturn ErrInvalidPath\n\t}\n\n\tif path[0] != '/' {\n\t\treturn ErrInvalidPath\n\t}\n\n\tn := len(path)\n\tif n == 1 {\n\t\t// path is just the root\n\t\treturn nil\n\t}\n\n\tif !isSequential && path[n-1] == '/' {\n\t\treturn ErrInvalidPath\n\t}\n\n\t// Start at rune 1 since we already know that the first character is\n\t// a '/'.\n\tfor i, w := 1, 0; i < n; i += w {\n\t\tr, width := utf8.DecodeRuneInString(path[i:])\n\t\tswitch {\n\t\tcase r == '\\u0000':\n\t\t\treturn ErrInvalidPath\n\t\tcase r == '/':\n\t\t\tlast, _ := utf8.DecodeLastRuneInString(path[:i])\n\t\t\tif last == '/' {\n\t\t\t\treturn ErrInvalidPath\n\t\t\t}\n\t\tcase r == '.':\n\t\t\tlast, lastWidth := utf8.DecodeLastRuneInString(path[:i])\n\n\t\t\t// Check for double dot\n\t\t\tif last == '.' {\n\t\t\t\tlast, _ = utf8.DecodeLastRuneInString(path[:i-lastWidth])\n\t\t\t}\n\n\t\t\tif last == '/' {\n\t\t\t\tif i+1 == n {\n\t\t\t\t\treturn ErrInvalidPath\n\t\t\t\t}\n\n\t\t\t\tnext, _ := utf8.DecodeRuneInString(path[i+w:])\n\t\t\t\tif next == '/' {\n\t\t\t\t\treturn ErrInvalidPath\n\t\t\t\t}\n\t\t\t}\n\t\tcase r >= '\\u0000' && r <= '\\u001f',\n\t\t\tr >= '\\u007f' && r <= '\\u009f',\n\t\t\tr >= '\\uf000' && r <= '\\uf8ff',\n\t\t\tr >= '\\ufff0' && r < '\\uffff':\n\t\t\treturn ErrInvalidPath\n\t\t}\n\t\tw = width\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/authpb/auth.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: auth.proto\n\npackage authpb\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\n\t_ \"github.com/gogo/protobuf/gogoproto\"\n\tproto \"github.com/golang/protobuf/proto\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package\n\ntype Permission_Type int32\n\nconst (\n\tREAD      Permission_Type = 0\n\tWRITE     Permission_Type = 1\n\tREADWRITE Permission_Type = 2\n)\n\nvar Permission_Type_name = map[int32]string{\n\t0: \"READ\",\n\t1: \"WRITE\",\n\t2: \"READWRITE\",\n}\n\nvar Permission_Type_value = map[string]int32{\n\t\"READ\":      0,\n\t\"WRITE\":     1,\n\t\"READWRITE\": 2,\n}\n\nfunc (x Permission_Type) String() string {\n\treturn proto.EnumName(Permission_Type_name, int32(x))\n}\n\nfunc (Permission_Type) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_8bbd6f3875b0e874, []int{2, 0}\n}\n\ntype UserAddOptions struct {\n\tNoPassword           bool     `protobuf:\"varint,1,opt,name=no_password,json=noPassword,proto3\" json:\"no_password,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *UserAddOptions) Reset()         { *m = UserAddOptions{} }\nfunc (m *UserAddOptions) String() string { return proto.CompactTextString(m) }\nfunc (*UserAddOptions) ProtoMessage()    {}\nfunc (*UserAddOptions) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_8bbd6f3875b0e874, []int{0}\n}\nfunc (m *UserAddOptions) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *UserAddOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_UserAddOptions.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *UserAddOptions) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_UserAddOptions.Merge(m, src)\n}\nfunc (m *UserAddOptions) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *UserAddOptions) XXX_DiscardUnknown() {\n\txxx_messageInfo_UserAddOptions.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_UserAddOptions proto.InternalMessageInfo\n\n// User is a single entry in the bucket authUsers\ntype User struct {\n\tName                 []byte          `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tPassword             []byte          `protobuf:\"bytes,2,opt,name=password,proto3\" json:\"password,omitempty\"`\n\tRoles                []string        `protobuf:\"bytes,3,rep,name=roles,proto3\" json:\"roles,omitempty\"`\n\tOptions              *UserAddOptions `protobuf:\"bytes,4,opt,name=options,proto3\" json:\"options,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *User) Reset()         { *m = User{} }\nfunc (m *User) String() string { return proto.CompactTextString(m) }\nfunc (*User) ProtoMessage()    {}\nfunc (*User) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_8bbd6f3875b0e874, []int{1}\n}\nfunc (m *User) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *User) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_User.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *User) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_User.Merge(m, src)\n}\nfunc (m *User) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *User) XXX_DiscardUnknown() {\n\txxx_messageInfo_User.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_User proto.InternalMessageInfo\n\n// Permission is a single entity\ntype Permission struct {\n\tPermType             Permission_Type `protobuf:\"varint,1,opt,name=permType,proto3,enum=authpb.Permission_Type\" json:\"permType,omitempty\"`\n\tKey                  []byte          `protobuf:\"bytes,2,opt,name=key,proto3\" json:\"key,omitempty\"`\n\tRangeEnd             []byte          `protobuf:\"bytes,3,opt,name=range_end,json=rangeEnd,proto3\" json:\"range_end,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *Permission) Reset()         { *m = Permission{} }\nfunc (m *Permission) String() string { return proto.CompactTextString(m) }\nfunc (*Permission) ProtoMessage()    {}\nfunc (*Permission) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_8bbd6f3875b0e874, []int{2}\n}\nfunc (m *Permission) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Permission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Permission.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Permission) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Permission.Merge(m, src)\n}\nfunc (m *Permission) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Permission) XXX_DiscardUnknown() {\n\txxx_messageInfo_Permission.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Permission proto.InternalMessageInfo\n\n// Role is a single entry in the bucket authRoles\ntype Role struct {\n\tName                 []byte        `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tKeyPermission        []*Permission `protobuf:\"bytes,2,rep,name=keyPermission,proto3\" json:\"keyPermission,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}      `json:\"-\"`\n\tXXX_unrecognized     []byte        `json:\"-\"`\n\tXXX_sizecache        int32         `json:\"-\"`\n}\n\nfunc (m *Role) Reset()         { *m = Role{} }\nfunc (m *Role) String() string { return proto.CompactTextString(m) }\nfunc (*Role) ProtoMessage()    {}\nfunc (*Role) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_8bbd6f3875b0e874, []int{3}\n}\nfunc (m *Role) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Role) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Role.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Role) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Role.Merge(m, src)\n}\nfunc (m *Role) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Role) XXX_DiscardUnknown() {\n\txxx_messageInfo_Role.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Role proto.InternalMessageInfo\n\nfunc init() {\n\tproto.RegisterEnum(\"authpb.Permission_Type\", Permission_Type_name, Permission_Type_value)\n\tproto.RegisterType((*UserAddOptions)(nil), \"authpb.UserAddOptions\")\n\tproto.RegisterType((*User)(nil), \"authpb.User\")\n\tproto.RegisterType((*Permission)(nil), \"authpb.Permission\")\n\tproto.RegisterType((*Role)(nil), \"authpb.Role\")\n}\n\nfunc init() { proto.RegisterFile(\"auth.proto\", fileDescriptor_8bbd6f3875b0e874) }\n\nvar fileDescriptor_8bbd6f3875b0e874 = []byte{\n\t// 338 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xcf, 0x4e, 0xea, 0x40,\n\t0x14, 0xc6, 0x3b, 0xb4, 0x70, 0xdb, 0xc3, 0x85, 0x90, 0x13, 0x72, 0x6f, 0x83, 0x49, 0x6d, 0xba,\n\t0x6a, 0x5c, 0x54, 0x85, 0x8d, 0x5b, 0x8c, 0x2c, 0x5c, 0x49, 0x26, 0x18, 0x97, 0xa4, 0xa4, 0x13,\n\t0x24, 0xc0, 0x4c, 0x33, 0x83, 0x31, 0x6c, 0x7c, 0x0e, 0x17, 0x3e, 0x10, 0x4b, 0x1e, 0x41, 0xf0,\n\t0x45, 0x4c, 0x67, 0xf8, 0x13, 0xa2, 0xbb, 0xef, 0x7c, 0xe7, 0xfb, 0x66, 0x7e, 0x99, 0x01, 0x48,\n\t0x5f, 0x16, 0xcf, 0x49, 0x2e, 0xc5, 0x42, 0x60, 0xa5, 0xd0, 0xf9, 0xa8, 0xd5, 0x1c, 0x8b, 0xb1,\n\t0xd0, 0xd6, 0x65, 0xa1, 0xcc, 0x36, 0xba, 0x86, 0xfa, 0xa3, 0x62, 0xb2, 0x9b, 0x65, 0x0f, 0xf9,\n\t0x62, 0x22, 0xb8, 0xc2, 0x73, 0xa8, 0x72, 0x31, 0xcc, 0x53, 0xa5, 0x5e, 0x85, 0xcc, 0x7c, 0x12,\n\t0x92, 0xd8, 0xa5, 0xc0, 0x45, 0x7f, 0xe7, 0x44, 0x6f, 0xe0, 0x14, 0x15, 0x44, 0x70, 0x78, 0x3a,\n\t0x67, 0x3a, 0xf1, 0x97, 0x6a, 0x8d, 0x2d, 0x70, 0x0f, 0xcd, 0x92, 0xf6, 0x0f, 0x33, 0x36, 0xa1,\n\t0x2c, 0xc5, 0x8c, 0x29, 0xdf, 0x0e, 0xed, 0xd8, 0xa3, 0x66, 0xc0, 0x2b, 0xf8, 0x23, 0xcc, 0xcd,\n\t0xbe, 0x13, 0x92, 0xb8, 0xda, 0xfe, 0x97, 0x18, 0xe0, 0xe4, 0x94, 0x8b, 0xee, 0x63, 0xd1, 0x07,\n\t0x01, 0xe8, 0x33, 0x39, 0x9f, 0x28, 0x35, 0x11, 0x1c, 0x3b, 0xe0, 0xe6, 0x4c, 0xce, 0x07, 0xcb,\n\t0xdc, 0xa0, 0xd4, 0xdb, 0xff, 0xf7, 0x27, 0x1c, 0x53, 0x49, 0xb1, 0xa6, 0x87, 0x20, 0x36, 0xc0,\n\t0x9e, 0xb2, 0xe5, 0x0e, 0xb1, 0x90, 0x78, 0x06, 0x9e, 0x4c, 0xf9, 0x98, 0x0d, 0x19, 0xcf, 0x7c,\n\t0xdb, 0xa0, 0x6b, 0xa3, 0xc7, 0xb3, 0xe8, 0x02, 0x1c, 0x5d, 0x73, 0xc1, 0xa1, 0xbd, 0xee, 0x5d,\n\t0xc3, 0x42, 0x0f, 0xca, 0x4f, 0xf4, 0x7e, 0xd0, 0x6b, 0x10, 0xac, 0x81, 0x57, 0x98, 0x66, 0x2c,\n\t0x45, 0x03, 0x70, 0xa8, 0x98, 0xb1, 0x5f, 0x9f, 0xe7, 0x06, 0x6a, 0x53, 0xb6, 0x3c, 0x62, 0xf9,\n\t0xa5, 0xd0, 0x8e, 0xab, 0x6d, 0xfc, 0x09, 0x4c, 0x4f, 0x83, 0xb7, 0xfe, 0x6a, 0x13, 0x58, 0xeb,\n\t0x4d, 0x60, 0xad, 0xb6, 0x01, 0x59, 0x6f, 0x03, 0xf2, 0xb9, 0x0d, 0xc8, 0xfb, 0x57, 0x60, 0x8d,\n\t0x2a, 0xfa, 0x23, 0x3b, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x61, 0x66, 0xc6, 0x9d, 0xf4, 0x01,\n\t0x00, 0x00,\n}\n\nfunc (m *UserAddOptions) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UserAddOptions) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *UserAddOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.NoPassword {\n\t\ti--\n\t\tif m.NoPassword {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *User) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *User) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *User) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Options != nil {\n\t\t{\n\t\t\tsize, err := m.Options.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintAuth(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.Roles) > 0 {\n\t\tfor iNdEx := len(m.Roles) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Roles[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Roles[iNdEx])\n\t\t\ti = encodeVarintAuth(dAtA, i, uint64(len(m.Roles[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.Password) > 0 {\n\t\ti -= len(m.Password)\n\t\tcopy(dAtA[i:], m.Password)\n\t\ti = encodeVarintAuth(dAtA, i, uint64(len(m.Password)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarintAuth(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Permission) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Permission) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Permission) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.RangeEnd) > 0 {\n\t\ti -= len(m.RangeEnd)\n\t\tcopy(dAtA[i:], m.RangeEnd)\n\t\ti = encodeVarintAuth(dAtA, i, uint64(len(m.RangeEnd)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = encodeVarintAuth(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.PermType != 0 {\n\t\ti = encodeVarintAuth(dAtA, i, uint64(m.PermType))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Role) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Role) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Role) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.KeyPermission) > 0 {\n\t\tfor iNdEx := len(m.KeyPermission) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.KeyPermission[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintAuth(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarintAuth(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintAuth(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovAuth(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *UserAddOptions) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.NoPassword {\n\t\tn += 2\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *User) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sovAuth(uint64(l))\n\t}\n\tl = len(m.Password)\n\tif l > 0 {\n\t\tn += 1 + l + sovAuth(uint64(l))\n\t}\n\tif len(m.Roles) > 0 {\n\t\tfor _, s := range m.Roles {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovAuth(uint64(l))\n\t\t}\n\t}\n\tif m.Options != nil {\n\t\tl = m.Options.Size()\n\t\tn += 1 + l + sovAuth(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *Permission) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.PermType != 0 {\n\t\tn += 1 + sovAuth(uint64(m.PermType))\n\t}\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + sovAuth(uint64(l))\n\t}\n\tl = len(m.RangeEnd)\n\tif l > 0 {\n\t\tn += 1 + l + sovAuth(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *Role) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sovAuth(uint64(l))\n\t}\n\tif len(m.KeyPermission) > 0 {\n\t\tfor _, e := range m.KeyPermission {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovAuth(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc sovAuth(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozAuth(x uint64) (n int) {\n\treturn sovAuth(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *UserAddOptions) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UserAddOptions: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UserAddOptions: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field NoPassword\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.NoPassword = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipAuth(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *User) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: User: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: User: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = append(m.Name[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Name == nil {\n\t\t\t\tm.Name = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Password\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Password = append(m.Password[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Password == nil {\n\t\t\t\tm.Password = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Roles\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Options\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Options == nil {\n\t\t\t\tm.Options = &UserAddOptions{}\n\t\t\t}\n\t\t\tif err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipAuth(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Permission) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Permission: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Permission: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PermType\", wireType)\n\t\t\t}\n\t\t\tm.PermType = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.PermType |= Permission_Type(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Key\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Key == nil {\n\t\t\t\tm.Key = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RangeEnd\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RangeEnd = append(m.RangeEnd[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.RangeEnd == nil {\n\t\t\t\tm.RangeEnd = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipAuth(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Role) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Role: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Role: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = append(m.Name[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Name == nil {\n\t\t\t\tm.Name = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field KeyPermission\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAuth\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.KeyPermission = append(m.KeyPermission, &Permission{})\n\t\t\tif err := m.KeyPermission[len(m.KeyPermission)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipAuth(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipAuth(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowAuth\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowAuth\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowAuth\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthAuth\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupAuth\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthAuth\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthAuth        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowAuth          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupAuth = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/authpb/auth.proto",
    "content": "syntax = \"proto3\";\npackage authpb;\n\nimport \"gogoproto/gogo.proto\";\n\noption (gogoproto.marshaler_all) = true;\noption (gogoproto.sizer_all) = true;\noption (gogoproto.unmarshaler_all) = true;\noption (gogoproto.goproto_getters_all) = false;\noption (gogoproto.goproto_enum_prefix_all) = false;\n\nmessage UserAddOptions {\n  bool no_password = 1;\n};\n\n// User is a single entry in the bucket authUsers\nmessage User {\n  bytes name = 1;\n  bytes password = 2;\n  repeated string roles = 3;\n  UserAddOptions options = 4;\n}\n\n// Permission is a single entity\nmessage Permission {\n  enum Type {\n    READ = 0;\n    WRITE = 1;\n    READWRITE = 2;\n  }\n  Type permType = 1;\n\n  bytes key = 2;\n  bytes range_end = 3;\n}\n\n// Role is a single entry in the bucket authRoles\nmessage Role {\n  bytes name = 1;\n\n  repeated Permission keyPermission = 2;\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/etcdserverpb/etcdserver.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: etcdserver.proto\n\npackage etcdserverpb\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\n\t_ \"github.com/gogo/protobuf/gogoproto\"\n\tproto \"github.com/golang/protobuf/proto\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package\n\ntype Request struct {\n\tID                   uint64   `protobuf:\"varint,1,opt,name=ID\" json:\"ID\"`\n\tMethod               string   `protobuf:\"bytes,2,opt,name=Method\" json:\"Method\"`\n\tPath                 string   `protobuf:\"bytes,3,opt,name=Path\" json:\"Path\"`\n\tVal                  string   `protobuf:\"bytes,4,opt,name=Val\" json:\"Val\"`\n\tDir                  bool     `protobuf:\"varint,5,opt,name=Dir\" json:\"Dir\"`\n\tPrevValue            string   `protobuf:\"bytes,6,opt,name=PrevValue\" json:\"PrevValue\"`\n\tPrevIndex            uint64   `protobuf:\"varint,7,opt,name=PrevIndex\" json:\"PrevIndex\"`\n\tPrevExist            *bool    `protobuf:\"varint,8,opt,name=PrevExist\" json:\"PrevExist,omitempty\"`\n\tExpiration           int64    `protobuf:\"varint,9,opt,name=Expiration\" json:\"Expiration\"`\n\tWait                 bool     `protobuf:\"varint,10,opt,name=Wait\" json:\"Wait\"`\n\tSince                uint64   `protobuf:\"varint,11,opt,name=Since\" json:\"Since\"`\n\tRecursive            bool     `protobuf:\"varint,12,opt,name=Recursive\" json:\"Recursive\"`\n\tSorted               bool     `protobuf:\"varint,13,opt,name=Sorted\" json:\"Sorted\"`\n\tQuorum               bool     `protobuf:\"varint,14,opt,name=Quorum\" json:\"Quorum\"`\n\tTime                 int64    `protobuf:\"varint,15,opt,name=Time\" json:\"Time\"`\n\tStream               bool     `protobuf:\"varint,16,opt,name=Stream\" json:\"Stream\"`\n\tRefresh              *bool    `protobuf:\"varint,17,opt,name=Refresh\" json:\"Refresh,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *Request) Reset()         { *m = Request{} }\nfunc (m *Request) String() string { return proto.CompactTextString(m) }\nfunc (*Request) ProtoMessage()    {}\nfunc (*Request) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_09ffbeb3bebbce7e, []int{0}\n}\nfunc (m *Request) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Request.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Request) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Request.Merge(m, src)\n}\nfunc (m *Request) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Request) XXX_DiscardUnknown() {\n\txxx_messageInfo_Request.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Request proto.InternalMessageInfo\n\ntype Metadata struct {\n\tNodeID               uint64   `protobuf:\"varint,1,opt,name=NodeID\" json:\"NodeID\"`\n\tClusterID            uint64   `protobuf:\"varint,2,opt,name=ClusterID\" json:\"ClusterID\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *Metadata) Reset()         { *m = Metadata{} }\nfunc (m *Metadata) String() string { return proto.CompactTextString(m) }\nfunc (*Metadata) ProtoMessage()    {}\nfunc (*Metadata) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_09ffbeb3bebbce7e, []int{1}\n}\nfunc (m *Metadata) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Metadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Metadata.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Metadata) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Metadata.Merge(m, src)\n}\nfunc (m *Metadata) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Metadata) XXX_DiscardUnknown() {\n\txxx_messageInfo_Metadata.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Metadata proto.InternalMessageInfo\n\nfunc init() {\n\tproto.RegisterType((*Request)(nil), \"etcdserverpb.Request\")\n\tproto.RegisterType((*Metadata)(nil), \"etcdserverpb.Metadata\")\n}\n\nfunc init() { proto.RegisterFile(\"etcdserver.proto\", fileDescriptor_09ffbeb3bebbce7e) }\n\nvar fileDescriptor_09ffbeb3bebbce7e = []byte{\n\t// 380 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0xd2, 0xdd, 0x6e, 0xda, 0x30,\n\t0x14, 0x07, 0x70, 0x0c, 0xe1, 0xcb, 0x63, 0x1b, 0xb3, 0xd0, 0x74, 0x84, 0xa6, 0x2c, 0x42, 0xbb,\n\t0xc8, 0xd5, 0xf6, 0x0e, 0x2c, 0x5c, 0x44, 0x2a, 0x15, 0x0d, 0x15, 0xbd, 0x76, 0xc9, 0x29, 0x58,\n\t0x02, 0x4c, 0x1d, 0x07, 0xf1, 0x06, 0x7d, 0x85, 0x3e, 0x12, 0x97, 0x7d, 0x82, 0xaa, 0xa5, 0x2f,\n\t0x52, 0x39, 0x24, 0xc4, 0xed, 0x5d, 0xf4, 0xfb, 0x9f, 0x1c, 0x1f, 0x7f, 0xd0, 0x2e, 0xea, 0x79,\n\t0x9c, 0xa0, 0xda, 0xa1, 0xfa, 0xbb, 0x55, 0x52, 0x4b, 0xd6, 0x29, 0x65, 0x7b, 0xdb, 0xef, 0x2d,\n\t0xe4, 0x42, 0x66, 0xc1, 0x3f, 0xf3, 0x75, 0xaa, 0x19, 0x3c, 0x38, 0xb4, 0x19, 0xe1, 0x7d, 0x8a,\n\t0x89, 0x66, 0x3d, 0x5a, 0x0d, 0x03, 0x20, 0x1e, 0xf1, 0x9d, 0xa1, 0x73, 0x78, 0xfe, 0x5d, 0x89,\n\t0xaa, 0x61, 0xc0, 0x7e, 0xd1, 0xc6, 0x18, 0xf5, 0x52, 0xc6, 0x50, 0xf5, 0x88, 0xdf, 0xce, 0x93,\n\t0xdc, 0x18, 0x50, 0x67, 0xc2, 0xf5, 0x12, 0x6a, 0x56, 0x96, 0x09, 0xfb, 0x49, 0x6b, 0x33, 0xbe,\n\t0x02, 0xc7, 0x0a, 0x0c, 0x18, 0x0f, 0x84, 0x82, 0xba, 0x47, 0xfc, 0x56, 0xe1, 0x81, 0x50, 0x6c,\n\t0x40, 0xdb, 0x13, 0x85, 0xbb, 0x19, 0x5f, 0xa5, 0x08, 0x0d, 0xeb, 0xaf, 0x92, 0x8b, 0x9a, 0x70,\n\t0x13, 0xe3, 0x1e, 0x9a, 0xd6, 0xa0, 0x25, 0x17, 0x35, 0xa3, 0xbd, 0x48, 0x34, 0xb4, 0xce, 0xab,\n\t0x90, 0xa8, 0x64, 0xf6, 0x87, 0xd2, 0xd1, 0x7e, 0x2b, 0x14, 0xd7, 0x42, 0x6e, 0xa0, 0xed, 0x11,\n\t0xbf, 0x96, 0x37, 0xb2, 0xdc, 0xec, 0xed, 0x86, 0x0b, 0x0d, 0xd4, 0x1a, 0x35, 0x13, 0xd6, 0xa7,\n\t0xf5, 0xa9, 0xd8, 0xcc, 0x11, 0xbe, 0x58, 0x33, 0x9c, 0xc8, 0xac, 0x1f, 0xe1, 0x3c, 0x55, 0x89,\n\t0xd8, 0x21, 0x74, 0xac, 0x5f, 0x4b, 0x36, 0x67, 0x3a, 0x95, 0x4a, 0x63, 0x0c, 0x5f, 0xad, 0x82,\n\t0xdc, 0x4c, 0x7a, 0x95, 0x4a, 0x95, 0xae, 0xe1, 0x9b, 0x9d, 0x9e, 0xcc, 0x4c, 0x75, 0x2d, 0xd6,\n\t0x08, 0xdf, 0xad, 0xa9, 0x33, 0xc9, 0xba, 0x6a, 0x85, 0x7c, 0x0d, 0xdd, 0x0f, 0x5d, 0x33, 0x63,\n\t0xae, 0xb9, 0xe8, 0x3b, 0x85, 0xc9, 0x12, 0x7e, 0x58, 0xa7, 0x52, 0xe0, 0xe0, 0x82, 0xb6, 0xc6,\n\t0xa8, 0x79, 0xcc, 0x35, 0x37, 0x9d, 0x2e, 0x65, 0x8c, 0x9f, 0x5e, 0x43, 0x6e, 0x66, 0x87, 0xff,\n\t0x57, 0x69, 0xa2, 0x51, 0x85, 0x41, 0xf6, 0x28, 0xce, 0xb7, 0x70, 0xe6, 0x61, 0xef, 0xf0, 0xea,\n\t0x56, 0x0e, 0x47, 0x97, 0x3c, 0x1d, 0x5d, 0xf2, 0x72, 0x74, 0xc9, 0xe3, 0x9b, 0x5b, 0x79, 0x0f,\n\t0x00, 0x00, 0xff, 0xff, 0xee, 0x40, 0xba, 0xd6, 0xa4, 0x02, 0x00, 0x00,\n}\n\nfunc (m *Request) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Request) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Request) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Refresh != nil {\n\t\ti--\n\t\tif *m.Refresh {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1\n\t\ti--\n\t\tdAtA[i] = 0x88\n\t}\n\ti--\n\tif m.Stream {\n\t\tdAtA[i] = 1\n\t} else {\n\t\tdAtA[i] = 0\n\t}\n\ti--\n\tdAtA[i] = 0x1\n\ti--\n\tdAtA[i] = 0x80\n\ti = encodeVarintEtcdserver(dAtA, i, uint64(m.Time))\n\ti--\n\tdAtA[i] = 0x78\n\ti--\n\tif m.Quorum {\n\t\tdAtA[i] = 1\n\t} else {\n\t\tdAtA[i] = 0\n\t}\n\ti--\n\tdAtA[i] = 0x70\n\ti--\n\tif m.Sorted {\n\t\tdAtA[i] = 1\n\t} else {\n\t\tdAtA[i] = 0\n\t}\n\ti--\n\tdAtA[i] = 0x68\n\ti--\n\tif m.Recursive {\n\t\tdAtA[i] = 1\n\t} else {\n\t\tdAtA[i] = 0\n\t}\n\ti--\n\tdAtA[i] = 0x60\n\ti = encodeVarintEtcdserver(dAtA, i, uint64(m.Since))\n\ti--\n\tdAtA[i] = 0x58\n\ti--\n\tif m.Wait {\n\t\tdAtA[i] = 1\n\t} else {\n\t\tdAtA[i] = 0\n\t}\n\ti--\n\tdAtA[i] = 0x50\n\ti = encodeVarintEtcdserver(dAtA, i, uint64(m.Expiration))\n\ti--\n\tdAtA[i] = 0x48\n\tif m.PrevExist != nil {\n\t\ti--\n\t\tif *m.PrevExist {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x40\n\t}\n\ti = encodeVarintEtcdserver(dAtA, i, uint64(m.PrevIndex))\n\ti--\n\tdAtA[i] = 0x38\n\ti -= len(m.PrevValue)\n\tcopy(dAtA[i:], m.PrevValue)\n\ti = encodeVarintEtcdserver(dAtA, i, uint64(len(m.PrevValue)))\n\ti--\n\tdAtA[i] = 0x32\n\ti--\n\tif m.Dir {\n\t\tdAtA[i] = 1\n\t} else {\n\t\tdAtA[i] = 0\n\t}\n\ti--\n\tdAtA[i] = 0x28\n\ti -= len(m.Val)\n\tcopy(dAtA[i:], m.Val)\n\ti = encodeVarintEtcdserver(dAtA, i, uint64(len(m.Val)))\n\ti--\n\tdAtA[i] = 0x22\n\ti -= len(m.Path)\n\tcopy(dAtA[i:], m.Path)\n\ti = encodeVarintEtcdserver(dAtA, i, uint64(len(m.Path)))\n\ti--\n\tdAtA[i] = 0x1a\n\ti -= len(m.Method)\n\tcopy(dAtA[i:], m.Method)\n\ti = encodeVarintEtcdserver(dAtA, i, uint64(len(m.Method)))\n\ti--\n\tdAtA[i] = 0x12\n\ti = encodeVarintEtcdserver(dAtA, i, uint64(m.ID))\n\ti--\n\tdAtA[i] = 0x8\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Metadata) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Metadata) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Metadata) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\ti = encodeVarintEtcdserver(dAtA, i, uint64(m.ClusterID))\n\ti--\n\tdAtA[i] = 0x10\n\ti = encodeVarintEtcdserver(dAtA, i, uint64(m.NodeID))\n\ti--\n\tdAtA[i] = 0x8\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintEtcdserver(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovEtcdserver(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *Request) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 1 + sovEtcdserver(uint64(m.ID))\n\tl = len(m.Method)\n\tn += 1 + l + sovEtcdserver(uint64(l))\n\tl = len(m.Path)\n\tn += 1 + l + sovEtcdserver(uint64(l))\n\tl = len(m.Val)\n\tn += 1 + l + sovEtcdserver(uint64(l))\n\tn += 2\n\tl = len(m.PrevValue)\n\tn += 1 + l + sovEtcdserver(uint64(l))\n\tn += 1 + sovEtcdserver(uint64(m.PrevIndex))\n\tif m.PrevExist != nil {\n\t\tn += 2\n\t}\n\tn += 1 + sovEtcdserver(uint64(m.Expiration))\n\tn += 2\n\tn += 1 + sovEtcdserver(uint64(m.Since))\n\tn += 2\n\tn += 2\n\tn += 2\n\tn += 1 + sovEtcdserver(uint64(m.Time))\n\tn += 3\n\tif m.Refresh != nil {\n\t\tn += 3\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *Metadata) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 1 + sovEtcdserver(uint64(m.NodeID))\n\tn += 1 + sovEtcdserver(uint64(m.ClusterID))\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc sovEtcdserver(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozEtcdserver(x uint64) (n int) {\n\treturn sovEtcdserver(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *Request) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Request: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Request: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Method\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEtcdserver\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEtcdserver\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Method = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Path\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEtcdserver\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEtcdserver\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Path = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Val\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEtcdserver\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEtcdserver\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Val = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Dir\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Dir = bool(v != 0)\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PrevValue\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEtcdserver\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEtcdserver\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PrevValue = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PrevIndex\", wireType)\n\t\t\t}\n\t\t\tm.PrevIndex = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.PrevIndex |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 8:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PrevExist\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tb := bool(v != 0)\n\t\t\tm.PrevExist = &b\n\t\tcase 9:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Expiration\", wireType)\n\t\t\t}\n\t\t\tm.Expiration = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Expiration |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 10:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Wait\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Wait = bool(v != 0)\n\t\tcase 11:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Since\", wireType)\n\t\t\t}\n\t\t\tm.Since = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Since |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 12:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Recursive\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Recursive = bool(v != 0)\n\t\tcase 13:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Sorted\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Sorted = bool(v != 0)\n\t\tcase 14:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Quorum\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Quorum = bool(v != 0)\n\t\tcase 15:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Time\", wireType)\n\t\t\t}\n\t\t\tm.Time = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Time |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 16:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Stream\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Stream = bool(v != 0)\n\t\tcase 17:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Refresh\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tb := bool(v != 0)\n\t\t\tm.Refresh = &b\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipEtcdserver(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthEtcdserver\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Metadata) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Metadata: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Metadata: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field NodeID\", wireType)\n\t\t\t}\n\t\t\tm.NodeID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.NodeID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ClusterID\", wireType)\n\t\t\t}\n\t\t\tm.ClusterID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ClusterID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipEtcdserver(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthEtcdserver\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipEtcdserver(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowEtcdserver\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowEtcdserver\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthEtcdserver\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupEtcdserver\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthEtcdserver\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthEtcdserver        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowEtcdserver          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupEtcdserver = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/etcdserverpb/etcdserver.proto",
    "content": "syntax = \"proto2\";\npackage etcdserverpb;\n\nimport \"gogoproto/gogo.proto\";\n\noption (gogoproto.marshaler_all) = true;\noption (gogoproto.sizer_all) = true;\noption (gogoproto.unmarshaler_all) = true;\noption (gogoproto.goproto_getters_all) = false;\n\nmessage Request {\n\toptional uint64 ID         =  1 [(gogoproto.nullable) = false];\n\toptional string Method     =  2 [(gogoproto.nullable) = false];\n\toptional string Path       =  3 [(gogoproto.nullable) = false];\n\toptional string Val        =  4 [(gogoproto.nullable) = false];\n\toptional bool   Dir        =  5 [(gogoproto.nullable) = false];\n\toptional string PrevValue  =  6 [(gogoproto.nullable) = false];\n\toptional uint64 PrevIndex  =  7 [(gogoproto.nullable) = false];\n\toptional bool   PrevExist  =  8 [(gogoproto.nullable) = true];\n\toptional int64  Expiration =  9 [(gogoproto.nullable) = false];\n\toptional bool   Wait       = 10 [(gogoproto.nullable) = false];\n\toptional uint64 Since      = 11 [(gogoproto.nullable) = false];\n\toptional bool   Recursive  = 12 [(gogoproto.nullable) = false];\n\toptional bool   Sorted     = 13 [(gogoproto.nullable) = false];\n\toptional bool   Quorum     = 14 [(gogoproto.nullable) = false];\n\toptional int64  Time       = 15 [(gogoproto.nullable) = false];\n\toptional bool   Stream     = 16 [(gogoproto.nullable) = false];\n\toptional bool   Refresh    = 17 [(gogoproto.nullable) = true];\n}\n\nmessage Metadata {\n\toptional uint64 NodeID    = 1 [(gogoproto.nullable) = false];\n\toptional uint64 ClusterID = 2 [(gogoproto.nullable) = false];\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/etcdserverpb/raft_internal.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: raft_internal.proto\n\npackage etcdserverpb\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\n\t_ \"github.com/gogo/protobuf/gogoproto\"\n\tproto \"github.com/golang/protobuf/proto\"\n\tmembershippb \"go.etcd.io/etcd/api/v3/membershippb\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package\n\ntype RequestHeader struct {\n\tID uint64 `protobuf:\"varint,1,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\t// username is a username that is associated with an auth token of gRPC connection\n\tUsername string `protobuf:\"bytes,2,opt,name=username,proto3\" json:\"username,omitempty\"`\n\t// auth_revision is a revision number of auth.authStore. It is not related to mvcc\n\tAuthRevision         uint64   `protobuf:\"varint,3,opt,name=auth_revision,json=authRevision,proto3\" json:\"auth_revision,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *RequestHeader) Reset()         { *m = RequestHeader{} }\nfunc (m *RequestHeader) String() string { return proto.CompactTextString(m) }\nfunc (*RequestHeader) ProtoMessage()    {}\nfunc (*RequestHeader) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b4c9a9be0cfca103, []int{0}\n}\nfunc (m *RequestHeader) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *RequestHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_RequestHeader.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *RequestHeader) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_RequestHeader.Merge(m, src)\n}\nfunc (m *RequestHeader) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *RequestHeader) XXX_DiscardUnknown() {\n\txxx_messageInfo_RequestHeader.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_RequestHeader proto.InternalMessageInfo\n\n// An InternalRaftRequest is the union of all requests which can be\n// sent via raft.\ntype InternalRaftRequest struct {\n\tHeader                   *RequestHeader                            `protobuf:\"bytes,100,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tID                       uint64                                    `protobuf:\"varint,1,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\tV2                       *Request                                  `protobuf:\"bytes,2,opt,name=v2,proto3\" json:\"v2,omitempty\"`\n\tRange                    *RangeRequest                             `protobuf:\"bytes,3,opt,name=range,proto3\" json:\"range,omitempty\"`\n\tPut                      *PutRequest                               `protobuf:\"bytes,4,opt,name=put,proto3\" json:\"put,omitempty\"`\n\tDeleteRange              *DeleteRangeRequest                       `protobuf:\"bytes,5,opt,name=delete_range,json=deleteRange,proto3\" json:\"delete_range,omitempty\"`\n\tTxn                      *TxnRequest                               `protobuf:\"bytes,6,opt,name=txn,proto3\" json:\"txn,omitempty\"`\n\tCompaction               *CompactionRequest                        `protobuf:\"bytes,7,opt,name=compaction,proto3\" json:\"compaction,omitempty\"`\n\tLeaseGrant               *LeaseGrantRequest                        `protobuf:\"bytes,8,opt,name=lease_grant,json=leaseGrant,proto3\" json:\"lease_grant,omitempty\"`\n\tLeaseRevoke              *LeaseRevokeRequest                       `protobuf:\"bytes,9,opt,name=lease_revoke,json=leaseRevoke,proto3\" json:\"lease_revoke,omitempty\"`\n\tAlarm                    *AlarmRequest                             `protobuf:\"bytes,10,opt,name=alarm,proto3\" json:\"alarm,omitempty\"`\n\tLeaseCheckpoint          *LeaseCheckpointRequest                   `protobuf:\"bytes,11,opt,name=lease_checkpoint,json=leaseCheckpoint,proto3\" json:\"lease_checkpoint,omitempty\"`\n\tAuthEnable               *AuthEnableRequest                        `protobuf:\"bytes,1000,opt,name=auth_enable,json=authEnable,proto3\" json:\"auth_enable,omitempty\"`\n\tAuthDisable              *AuthDisableRequest                       `protobuf:\"bytes,1011,opt,name=auth_disable,json=authDisable,proto3\" json:\"auth_disable,omitempty\"`\n\tAuthStatus               *AuthStatusRequest                        `protobuf:\"bytes,1013,opt,name=auth_status,json=authStatus,proto3\" json:\"auth_status,omitempty\"`\n\tAuthenticate             *InternalAuthenticateRequest              `protobuf:\"bytes,1012,opt,name=authenticate,proto3\" json:\"authenticate,omitempty\"`\n\tAuthUserAdd              *AuthUserAddRequest                       `protobuf:\"bytes,1100,opt,name=auth_user_add,json=authUserAdd,proto3\" json:\"auth_user_add,omitempty\"`\n\tAuthUserDelete           *AuthUserDeleteRequest                    `protobuf:\"bytes,1101,opt,name=auth_user_delete,json=authUserDelete,proto3\" json:\"auth_user_delete,omitempty\"`\n\tAuthUserGet              *AuthUserGetRequest                       `protobuf:\"bytes,1102,opt,name=auth_user_get,json=authUserGet,proto3\" json:\"auth_user_get,omitempty\"`\n\tAuthUserChangePassword   *AuthUserChangePasswordRequest            `protobuf:\"bytes,1103,opt,name=auth_user_change_password,json=authUserChangePassword,proto3\" json:\"auth_user_change_password,omitempty\"`\n\tAuthUserGrantRole        *AuthUserGrantRoleRequest                 `protobuf:\"bytes,1104,opt,name=auth_user_grant_role,json=authUserGrantRole,proto3\" json:\"auth_user_grant_role,omitempty\"`\n\tAuthUserRevokeRole       *AuthUserRevokeRoleRequest                `protobuf:\"bytes,1105,opt,name=auth_user_revoke_role,json=authUserRevokeRole,proto3\" json:\"auth_user_revoke_role,omitempty\"`\n\tAuthUserList             *AuthUserListRequest                      `protobuf:\"bytes,1106,opt,name=auth_user_list,json=authUserList,proto3\" json:\"auth_user_list,omitempty\"`\n\tAuthRoleList             *AuthRoleListRequest                      `protobuf:\"bytes,1107,opt,name=auth_role_list,json=authRoleList,proto3\" json:\"auth_role_list,omitempty\"`\n\tAuthRoleAdd              *AuthRoleAddRequest                       `protobuf:\"bytes,1200,opt,name=auth_role_add,json=authRoleAdd,proto3\" json:\"auth_role_add,omitempty\"`\n\tAuthRoleDelete           *AuthRoleDeleteRequest                    `protobuf:\"bytes,1201,opt,name=auth_role_delete,json=authRoleDelete,proto3\" json:\"auth_role_delete,omitempty\"`\n\tAuthRoleGet              *AuthRoleGetRequest                       `protobuf:\"bytes,1202,opt,name=auth_role_get,json=authRoleGet,proto3\" json:\"auth_role_get,omitempty\"`\n\tAuthRoleGrantPermission  *AuthRoleGrantPermissionRequest           `protobuf:\"bytes,1203,opt,name=auth_role_grant_permission,json=authRoleGrantPermission,proto3\" json:\"auth_role_grant_permission,omitempty\"`\n\tAuthRoleRevokePermission *AuthRoleRevokePermissionRequest          `protobuf:\"bytes,1204,opt,name=auth_role_revoke_permission,json=authRoleRevokePermission,proto3\" json:\"auth_role_revoke_permission,omitempty\"`\n\tClusterVersionSet        *membershippb.ClusterVersionSetRequest    `protobuf:\"bytes,1300,opt,name=cluster_version_set,json=clusterVersionSet,proto3\" json:\"cluster_version_set,omitempty\"`\n\tClusterMemberAttrSet     *membershippb.ClusterMemberAttrSetRequest `protobuf:\"bytes,1301,opt,name=cluster_member_attr_set,json=clusterMemberAttrSet,proto3\" json:\"cluster_member_attr_set,omitempty\"`\n\tDowngradeInfoSet         *membershippb.DowngradeInfoSetRequest     `protobuf:\"bytes,1302,opt,name=downgrade_info_set,json=downgradeInfoSet,proto3\" json:\"downgrade_info_set,omitempty\"`\n\tXXX_NoUnkeyedLiteral     struct{}                                  `json:\"-\"`\n\tXXX_unrecognized         []byte                                    `json:\"-\"`\n\tXXX_sizecache            int32                                     `json:\"-\"`\n}\n\nfunc (m *InternalRaftRequest) Reset()         { *m = InternalRaftRequest{} }\nfunc (m *InternalRaftRequest) String() string { return proto.CompactTextString(m) }\nfunc (*InternalRaftRequest) ProtoMessage()    {}\nfunc (*InternalRaftRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b4c9a9be0cfca103, []int{1}\n}\nfunc (m *InternalRaftRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *InternalRaftRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_InternalRaftRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *InternalRaftRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_InternalRaftRequest.Merge(m, src)\n}\nfunc (m *InternalRaftRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *InternalRaftRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_InternalRaftRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_InternalRaftRequest proto.InternalMessageInfo\n\ntype EmptyResponse struct {\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *EmptyResponse) Reset()         { *m = EmptyResponse{} }\nfunc (m *EmptyResponse) String() string { return proto.CompactTextString(m) }\nfunc (*EmptyResponse) ProtoMessage()    {}\nfunc (*EmptyResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b4c9a9be0cfca103, []int{2}\n}\nfunc (m *EmptyResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *EmptyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_EmptyResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *EmptyResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EmptyResponse.Merge(m, src)\n}\nfunc (m *EmptyResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *EmptyResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_EmptyResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EmptyResponse proto.InternalMessageInfo\n\n// What is the difference between AuthenticateRequest (defined in rpc.proto) and InternalAuthenticateRequest?\n// InternalAuthenticateRequest has a member that is filled by etcdserver and shouldn't be user-facing.\n// For avoiding misusage the field, we have an internal version of AuthenticateRequest.\ntype InternalAuthenticateRequest struct {\n\tName     string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tPassword string `protobuf:\"bytes,2,opt,name=password,proto3\" json:\"password,omitempty\"`\n\t// simple_token is generated in API layer (etcdserver/v3_server.go)\n\tSimpleToken          string   `protobuf:\"bytes,3,opt,name=simple_token,json=simpleToken,proto3\" json:\"simple_token,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *InternalAuthenticateRequest) Reset()         { *m = InternalAuthenticateRequest{} }\nfunc (m *InternalAuthenticateRequest) String() string { return proto.CompactTextString(m) }\nfunc (*InternalAuthenticateRequest) ProtoMessage()    {}\nfunc (*InternalAuthenticateRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b4c9a9be0cfca103, []int{3}\n}\nfunc (m *InternalAuthenticateRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *InternalAuthenticateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_InternalAuthenticateRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *InternalAuthenticateRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_InternalAuthenticateRequest.Merge(m, src)\n}\nfunc (m *InternalAuthenticateRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *InternalAuthenticateRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_InternalAuthenticateRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_InternalAuthenticateRequest proto.InternalMessageInfo\n\nfunc init() {\n\tproto.RegisterType((*RequestHeader)(nil), \"etcdserverpb.RequestHeader\")\n\tproto.RegisterType((*InternalRaftRequest)(nil), \"etcdserverpb.InternalRaftRequest\")\n\tproto.RegisterType((*EmptyResponse)(nil), \"etcdserverpb.EmptyResponse\")\n\tproto.RegisterType((*InternalAuthenticateRequest)(nil), \"etcdserverpb.InternalAuthenticateRequest\")\n}\n\nfunc init() { proto.RegisterFile(\"raft_internal.proto\", fileDescriptor_b4c9a9be0cfca103) }\n\nvar fileDescriptor_b4c9a9be0cfca103 = []byte{\n\t// 1003 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x96, 0xd9, 0x72, 0x1b, 0x45,\n\t0x14, 0x86, 0x23, 0xc5, 0x71, 0xac, 0x96, 0xed, 0x38, 0x6d, 0x87, 0x34, 0x72, 0x95, 0x70, 0x1c,\n\t0x12, 0xcc, 0x66, 0x53, 0xca, 0x03, 0x80, 0x90, 0x5c, 0x8e, 0xab, 0x42, 0x70, 0x4d, 0xcc, 0x52,\n\t0xc5, 0xc5, 0xd0, 0x9a, 0x39, 0x96, 0x06, 0xcf, 0x46, 0x77, 0x4b, 0x31, 0xef, 0x11, 0x28, 0x1e,\n\t0x83, 0xed, 0x21, 0x72, 0xc1, 0x62, 0xe0, 0x05, 0xc0, 0xdc, 0x70, 0x0f, 0xdc, 0x53, 0xbd, 0xcc,\n\t0x26, 0xb5, 0x7c, 0xa7, 0xf9, 0xcf, 0x7f, 0xbe, 0x73, 0xba, 0xe7, 0xf4, 0xa8, 0xd1, 0x3a, 0xa3,\n\t0x27, 0xc2, 0x0d, 0x62, 0x01, 0x2c, 0xa6, 0xe1, 0x6e, 0xca, 0x12, 0x91, 0xe0, 0x65, 0x10, 0x9e,\n\t0xcf, 0x81, 0x4d, 0x80, 0xa5, 0x83, 0xd6, 0xc6, 0x30, 0x19, 0x26, 0x2a, 0xb0, 0x27, 0x7f, 0x69,\n\t0x4f, 0x6b, 0xad, 0xf0, 0x18, 0xa5, 0xc1, 0x52, 0xcf, 0xfc, 0xbc, 0x2f, 0x83, 0x7b, 0x34, 0x0d,\n\t0xf6, 0x22, 0x88, 0x06, 0xc0, 0xf8, 0x28, 0x48, 0xd3, 0x41, 0xe9, 0x41, 0xfb, 0xb6, 0x3f, 0x45,\n\t0x2b, 0x0e, 0x7c, 0x3e, 0x06, 0x2e, 0x1e, 0x02, 0xf5, 0x81, 0xe1, 0x55, 0x54, 0x3f, 0xec, 0x93,\n\t0xda, 0x56, 0x6d, 0x67, 0xc1, 0xa9, 0x1f, 0xf6, 0x71, 0x0b, 0x2d, 0x8d, 0xb9, 0x6c, 0x2d, 0x02,\n\t0x52, 0xdf, 0xaa, 0xed, 0x34, 0x9c, 0xfc, 0x19, 0xdf, 0x45, 0x2b, 0x74, 0x2c, 0x46, 0x2e, 0x83,\n\t0x49, 0xc0, 0x83, 0x24, 0x26, 0x57, 0x55, 0xda, 0xb2, 0x14, 0x1d, 0xa3, 0x6d, 0x3f, 0xc3, 0x68,\n\t0xfd, 0xd0, 0xac, 0xce, 0xa1, 0x27, 0xc2, 0x94, 0xc3, 0x0f, 0xd0, 0xe2, 0x48, 0x95, 0x24, 0xfe,\n\t0x56, 0x6d, 0xa7, 0xd9, 0xd9, 0xdc, 0x2d, 0xaf, 0x79, 0xb7, 0xd2, 0x95, 0x63, 0xac, 0x33, 0xdd,\n\t0xdd, 0x43, 0xf5, 0x49, 0x47, 0xf5, 0xd5, 0xec, 0xdc, 0xb2, 0x02, 0x9c, 0xfa, 0xa4, 0x83, 0xdf,\n\t0x42, 0xd7, 0x18, 0x8d, 0x87, 0xa0, 0x1a, 0x6c, 0x76, 0x5a, 0x53, 0x4e, 0x19, 0xca, 0xec, 0xda,\n\t0x88, 0x5f, 0x43, 0x57, 0xd3, 0xb1, 0x20, 0x0b, 0xca, 0x4f, 0xaa, 0xfe, 0xa3, 0x71, 0xb6, 0x08,\n\t0x47, 0x9a, 0x70, 0x0f, 0x2d, 0xfb, 0x10, 0x82, 0x00, 0x57, 0x17, 0xb9, 0xa6, 0x92, 0xb6, 0xaa,\n\t0x49, 0x7d, 0xe5, 0xa8, 0x94, 0x6a, 0xfa, 0x85, 0x26, 0x0b, 0x8a, 0xb3, 0x98, 0x2c, 0xda, 0x0a,\n\t0x1e, 0x9f, 0xc5, 0x79, 0x41, 0x71, 0x16, 0xe3, 0xb7, 0x11, 0xf2, 0x92, 0x28, 0xa5, 0x9e, 0x90,\n\t0x9b, 0x7e, 0x5d, 0xa5, 0xbc, 0x54, 0x4d, 0xe9, 0xe5, 0xf1, 0x2c, 0xb3, 0x94, 0x82, 0xdf, 0x41,\n\t0xcd, 0x10, 0x28, 0x07, 0x77, 0xc8, 0x68, 0x2c, 0xc8, 0x92, 0x8d, 0xf0, 0x48, 0x1a, 0x0e, 0x64,\n\t0x3c, 0x27, 0x84, 0xb9, 0x24, 0xd7, 0xac, 0x09, 0x0c, 0x26, 0xc9, 0x29, 0x90, 0x86, 0x6d, 0xcd,\n\t0x0a, 0xe1, 0x28, 0x43, 0xbe, 0xe6, 0xb0, 0xd0, 0xe4, 0x6b, 0xa1, 0x21, 0x65, 0x11, 0x41, 0xb6,\n\t0xd7, 0xd2, 0x95, 0xa1, 0xfc, 0xb5, 0x28, 0x23, 0x7e, 0x1f, 0xad, 0xe9, 0xb2, 0xde, 0x08, 0xbc,\n\t0xd3, 0x34, 0x09, 0x62, 0x41, 0x9a, 0x2a, 0xf9, 0x65, 0x4b, 0xe9, 0x5e, 0x6e, 0xca, 0x30, 0x37,\n\t0xc2, 0xaa, 0x8e, 0xbb, 0xa8, 0xa9, 0x46, 0x18, 0x62, 0x3a, 0x08, 0x81, 0xfc, 0x6d, 0xdd, 0xcc,\n\t0xee, 0x58, 0x8c, 0xf6, 0x95, 0x21, 0xdf, 0x0a, 0x9a, 0x4b, 0xb8, 0x8f, 0xd4, 0xc0, 0xbb, 0x7e,\n\t0xc0, 0x15, 0xe3, 0x9f, 0xeb, 0xb6, 0xbd, 0x90, 0x8c, 0xbe, 0x76, 0xe4, 0x7b, 0x41, 0x0b, 0x2d,\n\t0x6f, 0x84, 0x0b, 0x2a, 0xc6, 0x9c, 0xfc, 0x37, 0xb7, 0x91, 0x27, 0xca, 0x50, 0x69, 0x44, 0x4b,\n\t0xf8, 0xb1, 0x6e, 0x04, 0x62, 0x11, 0x78, 0x54, 0x00, 0xf9, 0x57, 0x33, 0x5e, 0xad, 0x32, 0xb2,\n\t0xb3, 0xd8, 0x2d, 0x59, 0x33, 0x5a, 0x25, 0x1f, 0xef, 0x9b, 0xe3, 0x2d, 0xcf, 0xbb, 0x4b, 0x7d,\n\t0x9f, 0xfc, 0xb8, 0x34, 0x6f, 0x65, 0x1f, 0x70, 0x60, 0x5d, 0xdf, 0xaf, 0xac, 0xcc, 0x68, 0xf8,\n\t0x31, 0x5a, 0x2b, 0x30, 0x7a, 0xe4, 0xc9, 0x4f, 0x9a, 0x74, 0xd7, 0x4e, 0x32, 0x67, 0xc5, 0xc0,\n\t0x56, 0x69, 0x45, 0xae, 0xb6, 0x35, 0x04, 0x41, 0x7e, 0xbe, 0xb4, 0xad, 0x03, 0x10, 0x33, 0x6d,\n\t0x1d, 0x80, 0xc0, 0x43, 0xf4, 0x62, 0x81, 0xf1, 0x46, 0xf2, 0x10, 0xba, 0x29, 0xe5, 0xfc, 0x69,\n\t0xc2, 0x7c, 0xf2, 0x8b, 0x46, 0xbe, 0x6e, 0x47, 0xf6, 0x94, 0xfb, 0xc8, 0x98, 0x33, 0xfa, 0x0b,\n\t0xd4, 0x1a, 0xc6, 0x1f, 0xa3, 0x8d, 0x52, 0xbf, 0xf2, 0xf4, 0xb8, 0x2c, 0x09, 0x81, 0x9c, 0xeb,\n\t0x1a, 0xf7, 0xe7, 0xb4, 0xad, 0x4e, 0x5e, 0x52, 0x4c, 0xcb, 0x4d, 0x3a, 0x1d, 0xc1, 0x9f, 0xa0,\n\t0x5b, 0x05, 0x59, 0x1f, 0x44, 0x8d, 0xfe, 0x55, 0xa3, 0x5f, 0xb1, 0xa3, 0xcd, 0x89, 0x2c, 0xb1,\n\t0x31, 0x9d, 0x09, 0xe1, 0x87, 0x68, 0xb5, 0x80, 0x87, 0x01, 0x17, 0xe4, 0x37, 0x4d, 0xbd, 0x63,\n\t0xa7, 0x3e, 0x0a, 0xb8, 0xa8, 0xcc, 0x51, 0x26, 0xe6, 0x24, 0xd9, 0x9a, 0x26, 0xfd, 0x3e, 0x97,\n\t0x24, 0x4b, 0xcf, 0x90, 0x32, 0x31, 0x7f, 0xf5, 0x8a, 0x24, 0x27, 0xf2, 0x9b, 0xc6, 0xbc, 0x57,\n\t0x2f, 0x73, 0xa6, 0x27, 0xd2, 0x68, 0xf9, 0x44, 0x2a, 0x8c, 0x99, 0xc8, 0x6f, 0x1b, 0xf3, 0x26,\n\t0x52, 0x66, 0x59, 0x26, 0xb2, 0x90, 0xab, 0x6d, 0xc9, 0x89, 0xfc, 0xee, 0xd2, 0xb6, 0xa6, 0x27,\n\t0xd2, 0x68, 0xf8, 0x33, 0xd4, 0x2a, 0x61, 0xd4, 0xa0, 0xa4, 0xc0, 0xa2, 0x80, 0xab, 0xff, 0xd6,\n\t0xef, 0x35, 0xf3, 0x8d, 0x39, 0x4c, 0x69, 0x3f, 0xca, 0xdd, 0x19, 0xff, 0x36, 0xb5, 0xc7, 0x71,\n\t0x84, 0x36, 0x8b, 0x5a, 0x66, 0x74, 0x4a, 0xc5, 0x7e, 0xd0, 0xc5, 0xde, 0xb4, 0x17, 0xd3, 0x53,\n\t0x32, 0x5b, 0x8d, 0xd0, 0x39, 0x06, 0xfc, 0x11, 0x5a, 0xf7, 0xc2, 0x31, 0x17, 0xc0, 0xdc, 0x09,\n\t0x30, 0x29, 0xb9, 0x1c, 0x04, 0x79, 0x86, 0xcc, 0x11, 0x28, 0x5f, 0x52, 0x76, 0x7b, 0xda, 0xf9,\n\t0xa1, 0x36, 0x3e, 0x29, 0x76, 0xeb, 0xa6, 0x37, 0x1d, 0xc1, 0x14, 0xdd, 0xce, 0xc0, 0x9a, 0xe1,\n\t0x52, 0x21, 0x98, 0x82, 0x7f, 0x89, 0xcc, 0xe7, 0xcf, 0x06, 0x7f, 0x4f, 0x69, 0x5d, 0x21, 0x58,\n\t0x89, 0xbf, 0xe1, 0x59, 0x82, 0xf8, 0x18, 0x61, 0x3f, 0x79, 0x1a, 0x0f, 0x19, 0xf5, 0xc1, 0x0d,\n\t0xe2, 0x93, 0x44, 0xd1, 0xbf, 0xd2, 0xf4, 0x7b, 0x55, 0x7a, 0x3f, 0x33, 0x1e, 0xc6, 0x27, 0x49,\n\t0x89, 0xbc, 0xe6, 0x4f, 0x05, 0xb6, 0x6f, 0xa0, 0x95, 0xfd, 0x28, 0x15, 0x5f, 0x38, 0xc0, 0xd3,\n\t0x24, 0xe6, 0xb0, 0x9d, 0xa2, 0xcd, 0x4b, 0x3e, 0xcd, 0x18, 0xa3, 0x05, 0x75, 0x07, 0xab, 0xa9,\n\t0x3b, 0x98, 0xfa, 0x2d, 0xef, 0x66, 0xf9, 0x17, 0xcb, 0xdc, 0xcd, 0xb2, 0x67, 0x7c, 0x07, 0x2d,\n\t0xf3, 0x20, 0x4a, 0x43, 0x70, 0x45, 0x72, 0x0a, 0xfa, 0x6a, 0xd6, 0x70, 0x9a, 0x5a, 0x3b, 0x96,\n\t0xd2, 0xbb, 0x1b, 0xcf, 0xff, 0x6c, 0x5f, 0x79, 0x7e, 0xd1, 0xae, 0x9d, 0x5f, 0xb4, 0x6b, 0x7f,\n\t0x5c, 0xb4, 0x6b, 0x5f, 0xff, 0xd5, 0xbe, 0x32, 0x58, 0x54, 0x17, 0xc3, 0x07, 0xff, 0x07, 0x00,\n\t0x00, 0xff, 0xff, 0x94, 0x6f, 0x64, 0x0a, 0x98, 0x0a, 0x00, 0x00,\n}\n\nfunc (m *RequestHeader) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RequestHeader) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RequestHeader) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.AuthRevision != 0 {\n\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(m.AuthRevision))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.Username) > 0 {\n\t\ti -= len(m.Username)\n\t\tcopy(dAtA[i:], m.Username)\n\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(len(m.Username)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *InternalRaftRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *InternalRaftRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *InternalRaftRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.DowngradeInfoSet != nil {\n\t\t{\n\t\t\tsize, err := m.DowngradeInfoSet.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x51\n\t\ti--\n\t\tdAtA[i] = 0xb2\n\t}\n\tif m.ClusterMemberAttrSet != nil {\n\t\t{\n\t\t\tsize, err := m.ClusterMemberAttrSet.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x51\n\t\ti--\n\t\tdAtA[i] = 0xaa\n\t}\n\tif m.ClusterVersionSet != nil {\n\t\t{\n\t\t\tsize, err := m.ClusterVersionSet.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x51\n\t\ti--\n\t\tdAtA[i] = 0xa2\n\t}\n\tif m.AuthRoleRevokePermission != nil {\n\t\t{\n\t\t\tsize, err := m.AuthRoleRevokePermission.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x4b\n\t\ti--\n\t\tdAtA[i] = 0xa2\n\t}\n\tif m.AuthRoleGrantPermission != nil {\n\t\t{\n\t\t\tsize, err := m.AuthRoleGrantPermission.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x4b\n\t\ti--\n\t\tdAtA[i] = 0x9a\n\t}\n\tif m.AuthRoleGet != nil {\n\t\t{\n\t\t\tsize, err := m.AuthRoleGet.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x4b\n\t\ti--\n\t\tdAtA[i] = 0x92\n\t}\n\tif m.AuthRoleDelete != nil {\n\t\t{\n\t\t\tsize, err := m.AuthRoleDelete.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x4b\n\t\ti--\n\t\tdAtA[i] = 0x8a\n\t}\n\tif m.AuthRoleAdd != nil {\n\t\t{\n\t\t\tsize, err := m.AuthRoleAdd.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x4b\n\t\ti--\n\t\tdAtA[i] = 0x82\n\t}\n\tif m.AuthRoleList != nil {\n\t\t{\n\t\t\tsize, err := m.AuthRoleList.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x45\n\t\ti--\n\t\tdAtA[i] = 0x9a\n\t}\n\tif m.AuthUserList != nil {\n\t\t{\n\t\t\tsize, err := m.AuthUserList.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x45\n\t\ti--\n\t\tdAtA[i] = 0x92\n\t}\n\tif m.AuthUserRevokeRole != nil {\n\t\t{\n\t\t\tsize, err := m.AuthUserRevokeRole.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x45\n\t\ti--\n\t\tdAtA[i] = 0x8a\n\t}\n\tif m.AuthUserGrantRole != nil {\n\t\t{\n\t\t\tsize, err := m.AuthUserGrantRole.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x45\n\t\ti--\n\t\tdAtA[i] = 0x82\n\t}\n\tif m.AuthUserChangePassword != nil {\n\t\t{\n\t\t\tsize, err := m.AuthUserChangePassword.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x44\n\t\ti--\n\t\tdAtA[i] = 0xfa\n\t}\n\tif m.AuthUserGet != nil {\n\t\t{\n\t\t\tsize, err := m.AuthUserGet.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x44\n\t\ti--\n\t\tdAtA[i] = 0xf2\n\t}\n\tif m.AuthUserDelete != nil {\n\t\t{\n\t\t\tsize, err := m.AuthUserDelete.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x44\n\t\ti--\n\t\tdAtA[i] = 0xea\n\t}\n\tif m.AuthUserAdd != nil {\n\t\t{\n\t\t\tsize, err := m.AuthUserAdd.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x44\n\t\ti--\n\t\tdAtA[i] = 0xe2\n\t}\n\tif m.AuthStatus != nil {\n\t\t{\n\t\t\tsize, err := m.AuthStatus.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x3f\n\t\ti--\n\t\tdAtA[i] = 0xaa\n\t}\n\tif m.Authenticate != nil {\n\t\t{\n\t\t\tsize, err := m.Authenticate.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x3f\n\t\ti--\n\t\tdAtA[i] = 0xa2\n\t}\n\tif m.AuthDisable != nil {\n\t\t{\n\t\t\tsize, err := m.AuthDisable.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x3f\n\t\ti--\n\t\tdAtA[i] = 0x9a\n\t}\n\tif m.AuthEnable != nil {\n\t\t{\n\t\t\tsize, err := m.AuthEnable.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x3e\n\t\ti--\n\t\tdAtA[i] = 0xc2\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x6\n\t\ti--\n\t\tdAtA[i] = 0xa2\n\t}\n\tif m.LeaseCheckpoint != nil {\n\t\t{\n\t\t\tsize, err := m.LeaseCheckpoint.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\tif m.Alarm != nil {\n\t\t{\n\t\t\tsize, err := m.Alarm.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x52\n\t}\n\tif m.LeaseRevoke != nil {\n\t\t{\n\t\t\tsize, err := m.LeaseRevoke.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\tif m.LeaseGrant != nil {\n\t\t{\n\t\t\tsize, err := m.LeaseGrant.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif m.Compaction != nil {\n\t\t{\n\t\t\tsize, err := m.Compaction.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif m.Txn != nil {\n\t\t{\n\t\t\tsize, err := m.Txn.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.DeleteRange != nil {\n\t\t{\n\t\t\tsize, err := m.DeleteRange.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.Put != nil {\n\t\t{\n\t\t\tsize, err := m.Put.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Range != nil {\n\t\t{\n\t\t\tsize, err := m.Range.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.V2 != nil {\n\t\t{\n\t\t\tsize, err := m.V2.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *EmptyResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *EmptyResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *EmptyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *InternalAuthenticateRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *InternalAuthenticateRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *InternalAuthenticateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.SimpleToken) > 0 {\n\t\ti -= len(m.SimpleToken)\n\t\tcopy(dAtA[i:], m.SimpleToken)\n\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(len(m.SimpleToken)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Password) > 0 {\n\t\ti -= len(m.Password)\n\t\tcopy(dAtA[i:], m.Password)\n\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(len(m.Password)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarintRaftInternal(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintRaftInternal(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovRaftInternal(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *RequestHeader) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ID != 0 {\n\t\tn += 1 + sovRaftInternal(uint64(m.ID))\n\t}\n\tl = len(m.Username)\n\tif l > 0 {\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthRevision != 0 {\n\t\tn += 1 + sovRaftInternal(uint64(m.AuthRevision))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *InternalRaftRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ID != 0 {\n\t\tn += 1 + sovRaftInternal(uint64(m.ID))\n\t}\n\tif m.V2 != nil {\n\t\tl = m.V2.Size()\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.Range != nil {\n\t\tl = m.Range.Size()\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.Put != nil {\n\t\tl = m.Put.Size()\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.DeleteRange != nil {\n\t\tl = m.DeleteRange.Size()\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.Txn != nil {\n\t\tl = m.Txn.Size()\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.Compaction != nil {\n\t\tl = m.Compaction.Size()\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.LeaseGrant != nil {\n\t\tl = m.LeaseGrant.Size()\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.LeaseRevoke != nil {\n\t\tl = m.LeaseRevoke.Size()\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.Alarm != nil {\n\t\tl = m.Alarm.Size()\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.LeaseCheckpoint != nil {\n\t\tl = m.LeaseCheckpoint.Size()\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthEnable != nil {\n\t\tl = m.AuthEnable.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthDisable != nil {\n\t\tl = m.AuthDisable.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.Authenticate != nil {\n\t\tl = m.Authenticate.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthStatus != nil {\n\t\tl = m.AuthStatus.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthUserAdd != nil {\n\t\tl = m.AuthUserAdd.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthUserDelete != nil {\n\t\tl = m.AuthUserDelete.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthUserGet != nil {\n\t\tl = m.AuthUserGet.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthUserChangePassword != nil {\n\t\tl = m.AuthUserChangePassword.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthUserGrantRole != nil {\n\t\tl = m.AuthUserGrantRole.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthUserRevokeRole != nil {\n\t\tl = m.AuthUserRevokeRole.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthUserList != nil {\n\t\tl = m.AuthUserList.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthRoleList != nil {\n\t\tl = m.AuthRoleList.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthRoleAdd != nil {\n\t\tl = m.AuthRoleAdd.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthRoleDelete != nil {\n\t\tl = m.AuthRoleDelete.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthRoleGet != nil {\n\t\tl = m.AuthRoleGet.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthRoleGrantPermission != nil {\n\t\tl = m.AuthRoleGrantPermission.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.AuthRoleRevokePermission != nil {\n\t\tl = m.AuthRoleRevokePermission.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.ClusterVersionSet != nil {\n\t\tl = m.ClusterVersionSet.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.ClusterMemberAttrSet != nil {\n\t\tl = m.ClusterMemberAttrSet.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.DowngradeInfoSet != nil {\n\t\tl = m.DowngradeInfoSet.Size()\n\t\tn += 2 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *EmptyResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *InternalAuthenticateRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tl = len(m.Password)\n\tif l > 0 {\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tl = len(m.SimpleToken)\n\tif l > 0 {\n\t\tn += 1 + l + sovRaftInternal(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc sovRaftInternal(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozRaftInternal(x uint64) (n int) {\n\treturn sovRaftInternal(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *RequestHeader) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RequestHeader: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RequestHeader: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Username\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Username = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthRevision\", wireType)\n\t\t\t}\n\t\t\tm.AuthRevision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.AuthRevision |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRaftInternal(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *InternalRaftRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: InternalRaftRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: InternalRaftRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field V2\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.V2 == nil {\n\t\t\t\tm.V2 = &Request{}\n\t\t\t}\n\t\t\tif err := m.V2.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Range\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Range == nil {\n\t\t\t\tm.Range = &RangeRequest{}\n\t\t\t}\n\t\t\tif err := m.Range.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Put\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Put == nil {\n\t\t\t\tm.Put = &PutRequest{}\n\t\t\t}\n\t\t\tif err := m.Put.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DeleteRange\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.DeleteRange == nil {\n\t\t\t\tm.DeleteRange = &DeleteRangeRequest{}\n\t\t\t}\n\t\t\tif err := m.DeleteRange.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Txn\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Txn == nil {\n\t\t\t\tm.Txn = &TxnRequest{}\n\t\t\t}\n\t\t\tif err := m.Txn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Compaction\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Compaction == nil {\n\t\t\t\tm.Compaction = &CompactionRequest{}\n\t\t\t}\n\t\t\tif err := m.Compaction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field LeaseGrant\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.LeaseGrant == nil {\n\t\t\t\tm.LeaseGrant = &LeaseGrantRequest{}\n\t\t\t}\n\t\t\tif err := m.LeaseGrant.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 9:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field LeaseRevoke\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.LeaseRevoke == nil {\n\t\t\t\tm.LeaseRevoke = &LeaseRevokeRequest{}\n\t\t\t}\n\t\t\tif err := m.LeaseRevoke.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 10:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Alarm\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Alarm == nil {\n\t\t\t\tm.Alarm = &AlarmRequest{}\n\t\t\t}\n\t\t\tif err := m.Alarm.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 11:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field LeaseCheckpoint\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.LeaseCheckpoint == nil {\n\t\t\t\tm.LeaseCheckpoint = &LeaseCheckpointRequest{}\n\t\t\t}\n\t\t\tif err := m.LeaseCheckpoint.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 100:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &RequestHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1000:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthEnable\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthEnable == nil {\n\t\t\t\tm.AuthEnable = &AuthEnableRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthEnable.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1011:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthDisable\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthDisable == nil {\n\t\t\t\tm.AuthDisable = &AuthDisableRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthDisable.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1012:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Authenticate\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Authenticate == nil {\n\t\t\t\tm.Authenticate = &InternalAuthenticateRequest{}\n\t\t\t}\n\t\t\tif err := m.Authenticate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1013:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthStatus\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthStatus == nil {\n\t\t\t\tm.AuthStatus = &AuthStatusRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthStatus.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1100:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthUserAdd\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthUserAdd == nil {\n\t\t\t\tm.AuthUserAdd = &AuthUserAddRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthUserAdd.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1101:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthUserDelete\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthUserDelete == nil {\n\t\t\t\tm.AuthUserDelete = &AuthUserDeleteRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthUserDelete.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1102:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthUserGet\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthUserGet == nil {\n\t\t\t\tm.AuthUserGet = &AuthUserGetRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthUserGet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1103:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthUserChangePassword\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthUserChangePassword == nil {\n\t\t\t\tm.AuthUserChangePassword = &AuthUserChangePasswordRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthUserChangePassword.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1104:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthUserGrantRole\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthUserGrantRole == nil {\n\t\t\t\tm.AuthUserGrantRole = &AuthUserGrantRoleRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthUserGrantRole.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1105:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthUserRevokeRole\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthUserRevokeRole == nil {\n\t\t\t\tm.AuthUserRevokeRole = &AuthUserRevokeRoleRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthUserRevokeRole.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1106:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthUserList\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthUserList == nil {\n\t\t\t\tm.AuthUserList = &AuthUserListRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthUserList.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1107:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthRoleList\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthRoleList == nil {\n\t\t\t\tm.AuthRoleList = &AuthRoleListRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthRoleList.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1200:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthRoleAdd\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthRoleAdd == nil {\n\t\t\t\tm.AuthRoleAdd = &AuthRoleAddRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthRoleAdd.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1201:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthRoleDelete\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthRoleDelete == nil {\n\t\t\t\tm.AuthRoleDelete = &AuthRoleDeleteRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthRoleDelete.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1202:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthRoleGet\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthRoleGet == nil {\n\t\t\t\tm.AuthRoleGet = &AuthRoleGetRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthRoleGet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1203:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthRoleGrantPermission\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthRoleGrantPermission == nil {\n\t\t\t\tm.AuthRoleGrantPermission = &AuthRoleGrantPermissionRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthRoleGrantPermission.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1204:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthRoleRevokePermission\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AuthRoleRevokePermission == nil {\n\t\t\t\tm.AuthRoleRevokePermission = &AuthRoleRevokePermissionRequest{}\n\t\t\t}\n\t\t\tif err := m.AuthRoleRevokePermission.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1300:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ClusterVersionSet\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.ClusterVersionSet == nil {\n\t\t\t\tm.ClusterVersionSet = &membershippb.ClusterVersionSetRequest{}\n\t\t\t}\n\t\t\tif err := m.ClusterVersionSet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1301:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ClusterMemberAttrSet\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.ClusterMemberAttrSet == nil {\n\t\t\t\tm.ClusterMemberAttrSet = &membershippb.ClusterMemberAttrSetRequest{}\n\t\t\t}\n\t\t\tif err := m.ClusterMemberAttrSet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 1302:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DowngradeInfoSet\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.DowngradeInfoSet == nil {\n\t\t\t\tm.DowngradeInfoSet = &membershippb.DowngradeInfoSetRequest{}\n\t\t\t}\n\t\t\tif err := m.DowngradeInfoSet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRaftInternal(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *EmptyResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: EmptyResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: EmptyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRaftInternal(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *InternalAuthenticateRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: InternalAuthenticateRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: InternalAuthenticateRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Password\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Password = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field SimpleToken\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.SimpleToken = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRaftInternal(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipRaftInternal(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowRaftInternal\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowRaftInternal\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthRaftInternal\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupRaftInternal\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthRaftInternal\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthRaftInternal        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowRaftInternal          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupRaftInternal = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/etcdserverpb/raft_internal.proto",
    "content": "syntax = \"proto3\";\npackage etcdserverpb;\n\nimport \"gogoproto/gogo.proto\";\nimport \"etcdserver.proto\";\nimport \"rpc.proto\";\nimport \"etcd/api/membershippb/membership.proto\";\n\noption (gogoproto.marshaler_all) = true;\noption (gogoproto.sizer_all) = true;\noption (gogoproto.unmarshaler_all) = true;\noption (gogoproto.goproto_getters_all) = false;\n\nmessage RequestHeader {\n  uint64 ID = 1;\n  // username is a username that is associated with an auth token of gRPC connection\n  string username = 2;\n  // auth_revision is a revision number of auth.authStore. It is not related to mvcc\n  uint64 auth_revision = 3;\n}\n\n// An InternalRaftRequest is the union of all requests which can be\n// sent via raft.\nmessage InternalRaftRequest {\n  RequestHeader header = 100;\n  uint64 ID = 1;\n\n  Request v2 = 2;\n\n  RangeRequest range = 3;\n  PutRequest put = 4;\n  DeleteRangeRequest delete_range = 5;\n  TxnRequest txn = 6;\n  CompactionRequest compaction = 7;\n\n  LeaseGrantRequest lease_grant = 8;\n  LeaseRevokeRequest lease_revoke = 9;\n\n  AlarmRequest alarm = 10;\n\n  LeaseCheckpointRequest lease_checkpoint = 11;\n\n  AuthEnableRequest auth_enable = 1000;\n  AuthDisableRequest auth_disable = 1011;\n  AuthStatusRequest auth_status = 1013;\n\n  InternalAuthenticateRequest authenticate = 1012;\n\n  AuthUserAddRequest auth_user_add = 1100;\n  AuthUserDeleteRequest auth_user_delete = 1101;\n  AuthUserGetRequest auth_user_get = 1102;\n  AuthUserChangePasswordRequest auth_user_change_password = 1103;\n  AuthUserGrantRoleRequest auth_user_grant_role = 1104;\n  AuthUserRevokeRoleRequest auth_user_revoke_role = 1105;\n  AuthUserListRequest auth_user_list = 1106;\n  AuthRoleListRequest auth_role_list = 1107;\n\n  AuthRoleAddRequest auth_role_add = 1200;\n  AuthRoleDeleteRequest auth_role_delete = 1201;\n  AuthRoleGetRequest auth_role_get = 1202;\n  AuthRoleGrantPermissionRequest auth_role_grant_permission = 1203;\n  AuthRoleRevokePermissionRequest auth_role_revoke_permission = 1204;\n\n  membershippb.ClusterVersionSetRequest cluster_version_set = 1300;\n  membershippb.ClusterMemberAttrSetRequest cluster_member_attr_set = 1301;\n  membershippb.DowngradeInfoSetRequest  downgrade_info_set = 1302;\n}\n\nmessage EmptyResponse {\n}\n\n// What is the difference between AuthenticateRequest (defined in rpc.proto) and InternalAuthenticateRequest?\n// InternalAuthenticateRequest has a member that is filled by etcdserver and shouldn't be user-facing.\n// For avoiding misusage the field, we have an internal version of AuthenticateRequest.\nmessage InternalAuthenticateRequest {\n  string name = 1;\n  string password = 2;\n\n  // simple_token is generated in API layer (etcdserver/v3_server.go)\n  string simple_token = 3;\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/etcdserverpb/raft_internal_stringer.go",
    "content": "// Copyright 2018 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage etcdserverpb\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\tproto \"github.com/golang/protobuf/proto\"\n)\n\n// InternalRaftStringer implements custom proto Stringer:\n// redact password, replace value fields with value_size fields.\ntype InternalRaftStringer struct {\n\tRequest *InternalRaftRequest\n}\n\nfunc (as *InternalRaftStringer) String() string {\n\tswitch {\n\tcase as.Request.LeaseGrant != nil:\n\t\treturn fmt.Sprintf(\"header:<%s> lease_grant:<ttl:%d-second id:%016x>\",\n\t\t\tas.Request.Header.String(),\n\t\t\tas.Request.LeaseGrant.TTL,\n\t\t\tas.Request.LeaseGrant.ID,\n\t\t)\n\tcase as.Request.LeaseRevoke != nil:\n\t\treturn fmt.Sprintf(\"header:<%s> lease_revoke:<id:%016x>\",\n\t\t\tas.Request.Header.String(),\n\t\t\tas.Request.LeaseRevoke.ID,\n\t\t)\n\tcase as.Request.Authenticate != nil:\n\t\treturn fmt.Sprintf(\"header:<%s> authenticate:<name:%s simple_token:%s>\",\n\t\t\tas.Request.Header.String(),\n\t\t\tas.Request.Authenticate.Name,\n\t\t\tas.Request.Authenticate.SimpleToken,\n\t\t)\n\tcase as.Request.AuthUserAdd != nil:\n\t\treturn fmt.Sprintf(\"header:<%s> auth_user_add:<name:%s>\",\n\t\t\tas.Request.Header.String(),\n\t\t\tas.Request.AuthUserAdd.Name,\n\t\t)\n\tcase as.Request.AuthUserChangePassword != nil:\n\t\treturn fmt.Sprintf(\"header:<%s> auth_user_change_password:<name:%s>\",\n\t\t\tas.Request.Header.String(),\n\t\t\tas.Request.AuthUserChangePassword.Name,\n\t\t)\n\tcase as.Request.Put != nil:\n\t\treturn fmt.Sprintf(\"header:<%s> put:<%s>\",\n\t\t\tas.Request.Header.String(),\n\t\t\tNewLoggablePutRequest(as.Request.Put).String(),\n\t\t)\n\tcase as.Request.Txn != nil:\n\t\treturn fmt.Sprintf(\"header:<%s> txn:<%s>\",\n\t\t\tas.Request.Header.String(),\n\t\t\tNewLoggableTxnRequest(as.Request.Txn).String(),\n\t\t)\n\tdefault:\n\t\t// nothing to redact\n\t}\n\treturn as.Request.String()\n}\n\n// txnRequestStringer implements a custom proto String to replace value bytes fields with value size\n// fields in any nested txn and put operations.\ntype txnRequestStringer struct {\n\tRequest *TxnRequest\n}\n\nfunc NewLoggableTxnRequest(request *TxnRequest) *txnRequestStringer {\n\treturn &txnRequestStringer{request}\n}\n\nfunc (as *txnRequestStringer) String() string {\n\tvar compare []string\n\tfor _, c := range as.Request.Compare {\n\t\tswitch cv := c.TargetUnion.(type) {\n\t\tcase *Compare_Value:\n\t\t\tcompare = append(compare, newLoggableValueCompare(c, cv).String())\n\t\tdefault:\n\t\t\t// nothing to redact\n\t\t\tcompare = append(compare, c.String())\n\t\t}\n\t}\n\tvar success []string\n\tfor _, s := range as.Request.Success {\n\t\tsuccess = append(success, newLoggableRequestOp(s).String())\n\t}\n\tvar failure []string\n\tfor _, f := range as.Request.Failure {\n\t\tfailure = append(failure, newLoggableRequestOp(f).String())\n\t}\n\treturn fmt.Sprintf(\"compare:<%s> success:<%s> failure:<%s>\",\n\t\tstrings.Join(compare, \" \"),\n\t\tstrings.Join(success, \" \"),\n\t\tstrings.Join(failure, \" \"),\n\t)\n}\n\n// requestOpStringer implements a custom proto String to replace value bytes fields with value\n// size fields in any nested txn and put operations.\ntype requestOpStringer struct {\n\tOp *RequestOp\n}\n\nfunc newLoggableRequestOp(op *RequestOp) *requestOpStringer {\n\treturn &requestOpStringer{op}\n}\n\nfunc (as *requestOpStringer) String() string {\n\tswitch op := as.Op.Request.(type) {\n\tcase *RequestOp_RequestPut:\n\t\treturn fmt.Sprintf(\"request_put:<%s>\", NewLoggablePutRequest(op.RequestPut).String())\n\tcase *RequestOp_RequestTxn:\n\t\treturn fmt.Sprintf(\"request_txn:<%s>\", NewLoggableTxnRequest(op.RequestTxn).String())\n\tdefault:\n\t\t// nothing to redact\n\t}\n\treturn as.Op.String()\n}\n\n// loggableValueCompare implements a custom proto String for Compare.Value union member types to\n// replace the value bytes field with a value size field.\n// To preserve proto encoding of the key and range_end bytes, a faked out proto type is used here.\ntype loggableValueCompare struct {\n\tResult    Compare_CompareResult `protobuf:\"varint,1,opt,name=result,proto3,enum=etcdserverpb.Compare_CompareResult\"`\n\tTarget    Compare_CompareTarget `protobuf:\"varint,2,opt,name=target,proto3,enum=etcdserverpb.Compare_CompareTarget\"`\n\tKey       []byte                `protobuf:\"bytes,3,opt,name=key,proto3\"`\n\tValueSize int64                 `protobuf:\"varint,7,opt,name=value_size,proto3\"`\n\tRangeEnd  []byte                `protobuf:\"bytes,64,opt,name=range_end,proto3\"`\n}\n\nfunc newLoggableValueCompare(c *Compare, cv *Compare_Value) *loggableValueCompare {\n\treturn &loggableValueCompare{\n\t\tc.Result,\n\t\tc.Target,\n\t\tc.Key,\n\t\tint64(len(cv.Value)),\n\t\tc.RangeEnd,\n\t}\n}\n\nfunc (m *loggableValueCompare) Reset()         { *m = loggableValueCompare{} }\nfunc (m *loggableValueCompare) String() string { return proto.CompactTextString(m) }\nfunc (*loggableValueCompare) ProtoMessage()    {}\n\n// loggablePutRequest implements a custom proto String to replace value bytes field with a value\n// size field.\n// To preserve proto encoding of the key bytes, a faked out proto type is used here.\ntype loggablePutRequest struct {\n\tKey         []byte `protobuf:\"bytes,1,opt,name=key,proto3\"`\n\tValueSize   int64  `protobuf:\"varint,2,opt,name=value_size,proto3\"`\n\tLease       int64  `protobuf:\"varint,3,opt,name=lease,proto3\"`\n\tPrevKv      bool   `protobuf:\"varint,4,opt,name=prev_kv,proto3\"`\n\tIgnoreValue bool   `protobuf:\"varint,5,opt,name=ignore_value,proto3\"`\n\tIgnoreLease bool   `protobuf:\"varint,6,opt,name=ignore_lease,proto3\"`\n}\n\nfunc NewLoggablePutRequest(request *PutRequest) *loggablePutRequest {\n\treturn &loggablePutRequest{\n\t\trequest.Key,\n\t\tint64(len(request.Value)),\n\t\trequest.Lease,\n\t\trequest.PrevKv,\n\t\trequest.IgnoreValue,\n\t\trequest.IgnoreLease,\n\t}\n}\n\nfunc (m *loggablePutRequest) Reset()         { *m = loggablePutRequest{} }\nfunc (m *loggablePutRequest) String() string { return proto.CompactTextString(m) }\nfunc (*loggablePutRequest) ProtoMessage()    {}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/etcdserverpb/rpc.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: rpc.proto\n\npackage etcdserverpb\n\nimport (\n\tcontext \"context\"\n\tfmt \"fmt\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\n\t_ \"github.com/gogo/protobuf/gogoproto\"\n\tproto \"github.com/golang/protobuf/proto\"\n\tauthpb \"go.etcd.io/etcd/api/v3/authpb\"\n\tmvccpb \"go.etcd.io/etcd/api/v3/mvccpb\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package\n\ntype AlarmType int32\n\nconst (\n\tAlarmType_NONE    AlarmType = 0\n\tAlarmType_NOSPACE AlarmType = 1\n\tAlarmType_CORRUPT AlarmType = 2\n)\n\nvar AlarmType_name = map[int32]string{\n\t0: \"NONE\",\n\t1: \"NOSPACE\",\n\t2: \"CORRUPT\",\n}\n\nvar AlarmType_value = map[string]int32{\n\t\"NONE\":    0,\n\t\"NOSPACE\": 1,\n\t\"CORRUPT\": 2,\n}\n\nfunc (x AlarmType) String() string {\n\treturn proto.EnumName(AlarmType_name, int32(x))\n}\n\nfunc (AlarmType) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{0}\n}\n\ntype RangeRequest_SortOrder int32\n\nconst (\n\tRangeRequest_NONE    RangeRequest_SortOrder = 0\n\tRangeRequest_ASCEND  RangeRequest_SortOrder = 1\n\tRangeRequest_DESCEND RangeRequest_SortOrder = 2\n)\n\nvar RangeRequest_SortOrder_name = map[int32]string{\n\t0: \"NONE\",\n\t1: \"ASCEND\",\n\t2: \"DESCEND\",\n}\n\nvar RangeRequest_SortOrder_value = map[string]int32{\n\t\"NONE\":    0,\n\t\"ASCEND\":  1,\n\t\"DESCEND\": 2,\n}\n\nfunc (x RangeRequest_SortOrder) String() string {\n\treturn proto.EnumName(RangeRequest_SortOrder_name, int32(x))\n}\n\nfunc (RangeRequest_SortOrder) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{1, 0}\n}\n\ntype RangeRequest_SortTarget int32\n\nconst (\n\tRangeRequest_KEY     RangeRequest_SortTarget = 0\n\tRangeRequest_VERSION RangeRequest_SortTarget = 1\n\tRangeRequest_CREATE  RangeRequest_SortTarget = 2\n\tRangeRequest_MOD     RangeRequest_SortTarget = 3\n\tRangeRequest_VALUE   RangeRequest_SortTarget = 4\n)\n\nvar RangeRequest_SortTarget_name = map[int32]string{\n\t0: \"KEY\",\n\t1: \"VERSION\",\n\t2: \"CREATE\",\n\t3: \"MOD\",\n\t4: \"VALUE\",\n}\n\nvar RangeRequest_SortTarget_value = map[string]int32{\n\t\"KEY\":     0,\n\t\"VERSION\": 1,\n\t\"CREATE\":  2,\n\t\"MOD\":     3,\n\t\"VALUE\":   4,\n}\n\nfunc (x RangeRequest_SortTarget) String() string {\n\treturn proto.EnumName(RangeRequest_SortTarget_name, int32(x))\n}\n\nfunc (RangeRequest_SortTarget) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{1, 1}\n}\n\ntype Compare_CompareResult int32\n\nconst (\n\tCompare_EQUAL     Compare_CompareResult = 0\n\tCompare_GREATER   Compare_CompareResult = 1\n\tCompare_LESS      Compare_CompareResult = 2\n\tCompare_NOT_EQUAL Compare_CompareResult = 3\n)\n\nvar Compare_CompareResult_name = map[int32]string{\n\t0: \"EQUAL\",\n\t1: \"GREATER\",\n\t2: \"LESS\",\n\t3: \"NOT_EQUAL\",\n}\n\nvar Compare_CompareResult_value = map[string]int32{\n\t\"EQUAL\":     0,\n\t\"GREATER\":   1,\n\t\"LESS\":      2,\n\t\"NOT_EQUAL\": 3,\n}\n\nfunc (x Compare_CompareResult) String() string {\n\treturn proto.EnumName(Compare_CompareResult_name, int32(x))\n}\n\nfunc (Compare_CompareResult) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{9, 0}\n}\n\ntype Compare_CompareTarget int32\n\nconst (\n\tCompare_VERSION Compare_CompareTarget = 0\n\tCompare_CREATE  Compare_CompareTarget = 1\n\tCompare_MOD     Compare_CompareTarget = 2\n\tCompare_VALUE   Compare_CompareTarget = 3\n\tCompare_LEASE   Compare_CompareTarget = 4\n)\n\nvar Compare_CompareTarget_name = map[int32]string{\n\t0: \"VERSION\",\n\t1: \"CREATE\",\n\t2: \"MOD\",\n\t3: \"VALUE\",\n\t4: \"LEASE\",\n}\n\nvar Compare_CompareTarget_value = map[string]int32{\n\t\"VERSION\": 0,\n\t\"CREATE\":  1,\n\t\"MOD\":     2,\n\t\"VALUE\":   3,\n\t\"LEASE\":   4,\n}\n\nfunc (x Compare_CompareTarget) String() string {\n\treturn proto.EnumName(Compare_CompareTarget_name, int32(x))\n}\n\nfunc (Compare_CompareTarget) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{9, 1}\n}\n\ntype WatchCreateRequest_FilterType int32\n\nconst (\n\t// filter out put event.\n\tWatchCreateRequest_NOPUT WatchCreateRequest_FilterType = 0\n\t// filter out delete event.\n\tWatchCreateRequest_NODELETE WatchCreateRequest_FilterType = 1\n)\n\nvar WatchCreateRequest_FilterType_name = map[int32]string{\n\t0: \"NOPUT\",\n\t1: \"NODELETE\",\n}\n\nvar WatchCreateRequest_FilterType_value = map[string]int32{\n\t\"NOPUT\":    0,\n\t\"NODELETE\": 1,\n}\n\nfunc (x WatchCreateRequest_FilterType) String() string {\n\treturn proto.EnumName(WatchCreateRequest_FilterType_name, int32(x))\n}\n\nfunc (WatchCreateRequest_FilterType) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{21, 0}\n}\n\ntype AlarmRequest_AlarmAction int32\n\nconst (\n\tAlarmRequest_GET        AlarmRequest_AlarmAction = 0\n\tAlarmRequest_ACTIVATE   AlarmRequest_AlarmAction = 1\n\tAlarmRequest_DEACTIVATE AlarmRequest_AlarmAction = 2\n)\n\nvar AlarmRequest_AlarmAction_name = map[int32]string{\n\t0: \"GET\",\n\t1: \"ACTIVATE\",\n\t2: \"DEACTIVATE\",\n}\n\nvar AlarmRequest_AlarmAction_value = map[string]int32{\n\t\"GET\":        0,\n\t\"ACTIVATE\":   1,\n\t\"DEACTIVATE\": 2,\n}\n\nfunc (x AlarmRequest_AlarmAction) String() string {\n\treturn proto.EnumName(AlarmRequest_AlarmAction_name, int32(x))\n}\n\nfunc (AlarmRequest_AlarmAction) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{54, 0}\n}\n\ntype DowngradeRequest_DowngradeAction int32\n\nconst (\n\tDowngradeRequest_VALIDATE DowngradeRequest_DowngradeAction = 0\n\tDowngradeRequest_ENABLE   DowngradeRequest_DowngradeAction = 1\n\tDowngradeRequest_CANCEL   DowngradeRequest_DowngradeAction = 2\n)\n\nvar DowngradeRequest_DowngradeAction_name = map[int32]string{\n\t0: \"VALIDATE\",\n\t1: \"ENABLE\",\n\t2: \"CANCEL\",\n}\n\nvar DowngradeRequest_DowngradeAction_value = map[string]int32{\n\t\"VALIDATE\": 0,\n\t\"ENABLE\":   1,\n\t\"CANCEL\":   2,\n}\n\nfunc (x DowngradeRequest_DowngradeAction) String() string {\n\treturn proto.EnumName(DowngradeRequest_DowngradeAction_name, int32(x))\n}\n\nfunc (DowngradeRequest_DowngradeAction) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{57, 0}\n}\n\ntype ResponseHeader struct {\n\t// cluster_id is the ID of the cluster which sent the response.\n\tClusterId uint64 `protobuf:\"varint,1,opt,name=cluster_id,json=clusterId,proto3\" json:\"cluster_id,omitempty\"`\n\t// member_id is the ID of the member which sent the response.\n\tMemberId uint64 `protobuf:\"varint,2,opt,name=member_id,json=memberId,proto3\" json:\"member_id,omitempty\"`\n\t// revision is the key-value store revision when the request was applied.\n\t// For watch progress responses, the header.revision indicates progress. All future events\n\t// recieved in this stream are guaranteed to have a higher revision number than the\n\t// header.revision number.\n\tRevision int64 `protobuf:\"varint,3,opt,name=revision,proto3\" json:\"revision,omitempty\"`\n\t// raft_term is the raft term when the request was applied.\n\tRaftTerm             uint64   `protobuf:\"varint,4,opt,name=raft_term,json=raftTerm,proto3\" json:\"raft_term,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *ResponseHeader) Reset()         { *m = ResponseHeader{} }\nfunc (m *ResponseHeader) String() string { return proto.CompactTextString(m) }\nfunc (*ResponseHeader) ProtoMessage()    {}\nfunc (*ResponseHeader) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{0}\n}\nfunc (m *ResponseHeader) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *ResponseHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_ResponseHeader.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *ResponseHeader) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_ResponseHeader.Merge(m, src)\n}\nfunc (m *ResponseHeader) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *ResponseHeader) XXX_DiscardUnknown() {\n\txxx_messageInfo_ResponseHeader.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_ResponseHeader proto.InternalMessageInfo\n\nfunc (m *ResponseHeader) GetClusterId() uint64 {\n\tif m != nil {\n\t\treturn m.ClusterId\n\t}\n\treturn 0\n}\n\nfunc (m *ResponseHeader) GetMemberId() uint64 {\n\tif m != nil {\n\t\treturn m.MemberId\n\t}\n\treturn 0\n}\n\nfunc (m *ResponseHeader) GetRevision() int64 {\n\tif m != nil {\n\t\treturn m.Revision\n\t}\n\treturn 0\n}\n\nfunc (m *ResponseHeader) GetRaftTerm() uint64 {\n\tif m != nil {\n\t\treturn m.RaftTerm\n\t}\n\treturn 0\n}\n\ntype RangeRequest struct {\n\t// key is the first key for the range. If range_end is not given, the request only looks up key.\n\tKey []byte `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// range_end is the upper bound on the requested range [key, range_end).\n\t// If range_end is '\\0', the range is all keys >= key.\n\t// If range_end is key plus one (e.g., \"aa\"+1 == \"ab\", \"a\\xff\"+1 == \"b\"),\n\t// then the range request gets all keys prefixed with key.\n\t// If both key and range_end are '\\0', then the range request returns all keys.\n\tRangeEnd []byte `protobuf:\"bytes,2,opt,name=range_end,json=rangeEnd,proto3\" json:\"range_end,omitempty\"`\n\t// limit is a limit on the number of keys returned for the request. When limit is set to 0,\n\t// it is treated as no limit.\n\tLimit int64 `protobuf:\"varint,3,opt,name=limit,proto3\" json:\"limit,omitempty\"`\n\t// revision is the point-in-time of the key-value store to use for the range.\n\t// If revision is less or equal to zero, the range is over the newest key-value store.\n\t// If the revision has been compacted, ErrCompacted is returned as a response.\n\tRevision int64 `protobuf:\"varint,4,opt,name=revision,proto3\" json:\"revision,omitempty\"`\n\t// sort_order is the order for returned sorted results.\n\tSortOrder RangeRequest_SortOrder `protobuf:\"varint,5,opt,name=sort_order,json=sortOrder,proto3,enum=etcdserverpb.RangeRequest_SortOrder\" json:\"sort_order,omitempty\"`\n\t// sort_target is the key-value field to use for sorting.\n\tSortTarget RangeRequest_SortTarget `protobuf:\"varint,6,opt,name=sort_target,json=sortTarget,proto3,enum=etcdserverpb.RangeRequest_SortTarget\" json:\"sort_target,omitempty\"`\n\t// serializable sets the range request to use serializable member-local reads.\n\t// Range requests are linearizable by default; linearizable requests have higher\n\t// latency and lower throughput than serializable requests but reflect the current\n\t// consensus of the cluster. For better performance, in exchange for possible stale reads,\n\t// a serializable range request is served locally without needing to reach consensus\n\t// with other nodes in the cluster.\n\tSerializable bool `protobuf:\"varint,7,opt,name=serializable,proto3\" json:\"serializable,omitempty\"`\n\t// keys_only when set returns only the keys and not the values.\n\tKeysOnly bool `protobuf:\"varint,8,opt,name=keys_only,json=keysOnly,proto3\" json:\"keys_only,omitempty\"`\n\t// count_only when set returns only the count of the keys in the range.\n\tCountOnly bool `protobuf:\"varint,9,opt,name=count_only,json=countOnly,proto3\" json:\"count_only,omitempty\"`\n\t// min_mod_revision is the lower bound for returned key mod revisions; all keys with\n\t// lesser mod revisions will be filtered away.\n\tMinModRevision int64 `protobuf:\"varint,10,opt,name=min_mod_revision,json=minModRevision,proto3\" json:\"min_mod_revision,omitempty\"`\n\t// max_mod_revision is the upper bound for returned key mod revisions; all keys with\n\t// greater mod revisions will be filtered away.\n\tMaxModRevision int64 `protobuf:\"varint,11,opt,name=max_mod_revision,json=maxModRevision,proto3\" json:\"max_mod_revision,omitempty\"`\n\t// min_create_revision is the lower bound for returned key create revisions; all keys with\n\t// lesser create revisions will be filtered away.\n\tMinCreateRevision int64 `protobuf:\"varint,12,opt,name=min_create_revision,json=minCreateRevision,proto3\" json:\"min_create_revision,omitempty\"`\n\t// max_create_revision is the upper bound for returned key create revisions; all keys with\n\t// greater create revisions will be filtered away.\n\tMaxCreateRevision    int64    `protobuf:\"varint,13,opt,name=max_create_revision,json=maxCreateRevision,proto3\" json:\"max_create_revision,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *RangeRequest) Reset()         { *m = RangeRequest{} }\nfunc (m *RangeRequest) String() string { return proto.CompactTextString(m) }\nfunc (*RangeRequest) ProtoMessage()    {}\nfunc (*RangeRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{1}\n}\nfunc (m *RangeRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *RangeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_RangeRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *RangeRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_RangeRequest.Merge(m, src)\n}\nfunc (m *RangeRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *RangeRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_RangeRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_RangeRequest proto.InternalMessageInfo\n\nfunc (m *RangeRequest) GetKey() []byte {\n\tif m != nil {\n\t\treturn m.Key\n\t}\n\treturn nil\n}\n\nfunc (m *RangeRequest) GetRangeEnd() []byte {\n\tif m != nil {\n\t\treturn m.RangeEnd\n\t}\n\treturn nil\n}\n\nfunc (m *RangeRequest) GetLimit() int64 {\n\tif m != nil {\n\t\treturn m.Limit\n\t}\n\treturn 0\n}\n\nfunc (m *RangeRequest) GetRevision() int64 {\n\tif m != nil {\n\t\treturn m.Revision\n\t}\n\treturn 0\n}\n\nfunc (m *RangeRequest) GetSortOrder() RangeRequest_SortOrder {\n\tif m != nil {\n\t\treturn m.SortOrder\n\t}\n\treturn RangeRequest_NONE\n}\n\nfunc (m *RangeRequest) GetSortTarget() RangeRequest_SortTarget {\n\tif m != nil {\n\t\treturn m.SortTarget\n\t}\n\treturn RangeRequest_KEY\n}\n\nfunc (m *RangeRequest) GetSerializable() bool {\n\tif m != nil {\n\t\treturn m.Serializable\n\t}\n\treturn false\n}\n\nfunc (m *RangeRequest) GetKeysOnly() bool {\n\tif m != nil {\n\t\treturn m.KeysOnly\n\t}\n\treturn false\n}\n\nfunc (m *RangeRequest) GetCountOnly() bool {\n\tif m != nil {\n\t\treturn m.CountOnly\n\t}\n\treturn false\n}\n\nfunc (m *RangeRequest) GetMinModRevision() int64 {\n\tif m != nil {\n\t\treturn m.MinModRevision\n\t}\n\treturn 0\n}\n\nfunc (m *RangeRequest) GetMaxModRevision() int64 {\n\tif m != nil {\n\t\treturn m.MaxModRevision\n\t}\n\treturn 0\n}\n\nfunc (m *RangeRequest) GetMinCreateRevision() int64 {\n\tif m != nil {\n\t\treturn m.MinCreateRevision\n\t}\n\treturn 0\n}\n\nfunc (m *RangeRequest) GetMaxCreateRevision() int64 {\n\tif m != nil {\n\t\treturn m.MaxCreateRevision\n\t}\n\treturn 0\n}\n\ntype RangeResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// kvs is the list of key-value pairs matched by the range request.\n\t// kvs is empty when count is requested.\n\tKvs []*mvccpb.KeyValue `protobuf:\"bytes,2,rep,name=kvs,proto3\" json:\"kvs,omitempty\"`\n\t// more indicates if there are more keys to return in the requested range.\n\tMore bool `protobuf:\"varint,3,opt,name=more,proto3\" json:\"more,omitempty\"`\n\t// count is set to the number of keys within the range when requested.\n\tCount                int64    `protobuf:\"varint,4,opt,name=count,proto3\" json:\"count,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *RangeResponse) Reset()         { *m = RangeResponse{} }\nfunc (m *RangeResponse) String() string { return proto.CompactTextString(m) }\nfunc (*RangeResponse) ProtoMessage()    {}\nfunc (*RangeResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{2}\n}\nfunc (m *RangeResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *RangeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_RangeResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *RangeResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_RangeResponse.Merge(m, src)\n}\nfunc (m *RangeResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *RangeResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_RangeResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_RangeResponse proto.InternalMessageInfo\n\nfunc (m *RangeResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *RangeResponse) GetKvs() []*mvccpb.KeyValue {\n\tif m != nil {\n\t\treturn m.Kvs\n\t}\n\treturn nil\n}\n\nfunc (m *RangeResponse) GetMore() bool {\n\tif m != nil {\n\t\treturn m.More\n\t}\n\treturn false\n}\n\nfunc (m *RangeResponse) GetCount() int64 {\n\tif m != nil {\n\t\treturn m.Count\n\t}\n\treturn 0\n}\n\ntype PutRequest struct {\n\t// key is the key, in bytes, to put into the key-value store.\n\tKey []byte `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// value is the value, in bytes, to associate with the key in the key-value store.\n\tValue []byte `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n\t// lease is the lease ID to associate with the key in the key-value store. A lease\n\t// value of 0 indicates no lease.\n\tLease int64 `protobuf:\"varint,3,opt,name=lease,proto3\" json:\"lease,omitempty\"`\n\t// If prev_kv is set, etcd gets the previous key-value pair before changing it.\n\t// The previous key-value pair will be returned in the put response.\n\tPrevKv bool `protobuf:\"varint,4,opt,name=prev_kv,json=prevKv,proto3\" json:\"prev_kv,omitempty\"`\n\t// If ignore_value is set, etcd updates the key using its current value.\n\t// Returns an error if the key does not exist.\n\tIgnoreValue bool `protobuf:\"varint,5,opt,name=ignore_value,json=ignoreValue,proto3\" json:\"ignore_value,omitempty\"`\n\t// If ignore_lease is set, etcd updates the key using its current lease.\n\t// Returns an error if the key does not exist.\n\tIgnoreLease          bool     `protobuf:\"varint,6,opt,name=ignore_lease,json=ignoreLease,proto3\" json:\"ignore_lease,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *PutRequest) Reset()         { *m = PutRequest{} }\nfunc (m *PutRequest) String() string { return proto.CompactTextString(m) }\nfunc (*PutRequest) ProtoMessage()    {}\nfunc (*PutRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{3}\n}\nfunc (m *PutRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *PutRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_PutRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *PutRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_PutRequest.Merge(m, src)\n}\nfunc (m *PutRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *PutRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_PutRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_PutRequest proto.InternalMessageInfo\n\nfunc (m *PutRequest) GetKey() []byte {\n\tif m != nil {\n\t\treturn m.Key\n\t}\n\treturn nil\n}\n\nfunc (m *PutRequest) GetValue() []byte {\n\tif m != nil {\n\t\treturn m.Value\n\t}\n\treturn nil\n}\n\nfunc (m *PutRequest) GetLease() int64 {\n\tif m != nil {\n\t\treturn m.Lease\n\t}\n\treturn 0\n}\n\nfunc (m *PutRequest) GetPrevKv() bool {\n\tif m != nil {\n\t\treturn m.PrevKv\n\t}\n\treturn false\n}\n\nfunc (m *PutRequest) GetIgnoreValue() bool {\n\tif m != nil {\n\t\treturn m.IgnoreValue\n\t}\n\treturn false\n}\n\nfunc (m *PutRequest) GetIgnoreLease() bool {\n\tif m != nil {\n\t\treturn m.IgnoreLease\n\t}\n\treturn false\n}\n\ntype PutResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// if prev_kv is set in the request, the previous key-value pair will be returned.\n\tPrevKv               *mvccpb.KeyValue `protobuf:\"bytes,2,opt,name=prev_kv,json=prevKv,proto3\" json:\"prev_kv,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}         `json:\"-\"`\n\tXXX_unrecognized     []byte           `json:\"-\"`\n\tXXX_sizecache        int32            `json:\"-\"`\n}\n\nfunc (m *PutResponse) Reset()         { *m = PutResponse{} }\nfunc (m *PutResponse) String() string { return proto.CompactTextString(m) }\nfunc (*PutResponse) ProtoMessage()    {}\nfunc (*PutResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{4}\n}\nfunc (m *PutResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *PutResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_PutResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *PutResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_PutResponse.Merge(m, src)\n}\nfunc (m *PutResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *PutResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_PutResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_PutResponse proto.InternalMessageInfo\n\nfunc (m *PutResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *PutResponse) GetPrevKv() *mvccpb.KeyValue {\n\tif m != nil {\n\t\treturn m.PrevKv\n\t}\n\treturn nil\n}\n\ntype DeleteRangeRequest struct {\n\t// key is the first key to delete in the range.\n\tKey []byte `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// range_end is the key following the last key to delete for the range [key, range_end).\n\t// If range_end is not given, the range is defined to contain only the key argument.\n\t// If range_end is one bit larger than the given key, then the range is all the keys\n\t// with the prefix (the given key).\n\t// If range_end is '\\0', the range is all keys greater than or equal to the key argument.\n\tRangeEnd []byte `protobuf:\"bytes,2,opt,name=range_end,json=rangeEnd,proto3\" json:\"range_end,omitempty\"`\n\t// If prev_kv is set, etcd gets the previous key-value pairs before deleting it.\n\t// The previous key-value pairs will be returned in the delete response.\n\tPrevKv               bool     `protobuf:\"varint,3,opt,name=prev_kv,json=prevKv,proto3\" json:\"prev_kv,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *DeleteRangeRequest) Reset()         { *m = DeleteRangeRequest{} }\nfunc (m *DeleteRangeRequest) String() string { return proto.CompactTextString(m) }\nfunc (*DeleteRangeRequest) ProtoMessage()    {}\nfunc (*DeleteRangeRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{5}\n}\nfunc (m *DeleteRangeRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *DeleteRangeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_DeleteRangeRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *DeleteRangeRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DeleteRangeRequest.Merge(m, src)\n}\nfunc (m *DeleteRangeRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *DeleteRangeRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_DeleteRangeRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DeleteRangeRequest proto.InternalMessageInfo\n\nfunc (m *DeleteRangeRequest) GetKey() []byte {\n\tif m != nil {\n\t\treturn m.Key\n\t}\n\treturn nil\n}\n\nfunc (m *DeleteRangeRequest) GetRangeEnd() []byte {\n\tif m != nil {\n\t\treturn m.RangeEnd\n\t}\n\treturn nil\n}\n\nfunc (m *DeleteRangeRequest) GetPrevKv() bool {\n\tif m != nil {\n\t\treturn m.PrevKv\n\t}\n\treturn false\n}\n\ntype DeleteRangeResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// deleted is the number of keys deleted by the delete range request.\n\tDeleted int64 `protobuf:\"varint,2,opt,name=deleted,proto3\" json:\"deleted,omitempty\"`\n\t// if prev_kv is set in the request, the previous key-value pairs will be returned.\n\tPrevKvs              []*mvccpb.KeyValue `protobuf:\"bytes,3,rep,name=prev_kvs,json=prevKvs,proto3\" json:\"prev_kvs,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}           `json:\"-\"`\n\tXXX_unrecognized     []byte             `json:\"-\"`\n\tXXX_sizecache        int32              `json:\"-\"`\n}\n\nfunc (m *DeleteRangeResponse) Reset()         { *m = DeleteRangeResponse{} }\nfunc (m *DeleteRangeResponse) String() string { return proto.CompactTextString(m) }\nfunc (*DeleteRangeResponse) ProtoMessage()    {}\nfunc (*DeleteRangeResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{6}\n}\nfunc (m *DeleteRangeResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *DeleteRangeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_DeleteRangeResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *DeleteRangeResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DeleteRangeResponse.Merge(m, src)\n}\nfunc (m *DeleteRangeResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *DeleteRangeResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_DeleteRangeResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DeleteRangeResponse proto.InternalMessageInfo\n\nfunc (m *DeleteRangeResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *DeleteRangeResponse) GetDeleted() int64 {\n\tif m != nil {\n\t\treturn m.Deleted\n\t}\n\treturn 0\n}\n\nfunc (m *DeleteRangeResponse) GetPrevKvs() []*mvccpb.KeyValue {\n\tif m != nil {\n\t\treturn m.PrevKvs\n\t}\n\treturn nil\n}\n\ntype RequestOp struct {\n\t// request is a union of request types accepted by a transaction.\n\t//\n\t// Types that are valid to be assigned to Request:\n\t//\t*RequestOp_RequestRange\n\t//\t*RequestOp_RequestPut\n\t//\t*RequestOp_RequestDeleteRange\n\t//\t*RequestOp_RequestTxn\n\tRequest              isRequestOp_Request `protobuf_oneof:\"request\"`\n\tXXX_NoUnkeyedLiteral struct{}            `json:\"-\"`\n\tXXX_unrecognized     []byte              `json:\"-\"`\n\tXXX_sizecache        int32               `json:\"-\"`\n}\n\nfunc (m *RequestOp) Reset()         { *m = RequestOp{} }\nfunc (m *RequestOp) String() string { return proto.CompactTextString(m) }\nfunc (*RequestOp) ProtoMessage()    {}\nfunc (*RequestOp) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{7}\n}\nfunc (m *RequestOp) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *RequestOp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_RequestOp.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *RequestOp) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_RequestOp.Merge(m, src)\n}\nfunc (m *RequestOp) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *RequestOp) XXX_DiscardUnknown() {\n\txxx_messageInfo_RequestOp.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_RequestOp proto.InternalMessageInfo\n\ntype isRequestOp_Request interface {\n\tisRequestOp_Request()\n\tMarshalTo([]byte) (int, error)\n\tSize() int\n}\n\ntype RequestOp_RequestRange struct {\n\tRequestRange *RangeRequest `protobuf:\"bytes,1,opt,name=request_range,json=requestRange,proto3,oneof\" json:\"request_range,omitempty\"`\n}\ntype RequestOp_RequestPut struct {\n\tRequestPut *PutRequest `protobuf:\"bytes,2,opt,name=request_put,json=requestPut,proto3,oneof\" json:\"request_put,omitempty\"`\n}\ntype RequestOp_RequestDeleteRange struct {\n\tRequestDeleteRange *DeleteRangeRequest `protobuf:\"bytes,3,opt,name=request_delete_range,json=requestDeleteRange,proto3,oneof\" json:\"request_delete_range,omitempty\"`\n}\ntype RequestOp_RequestTxn struct {\n\tRequestTxn *TxnRequest `protobuf:\"bytes,4,opt,name=request_txn,json=requestTxn,proto3,oneof\" json:\"request_txn,omitempty\"`\n}\n\nfunc (*RequestOp_RequestRange) isRequestOp_Request()       {}\nfunc (*RequestOp_RequestPut) isRequestOp_Request()         {}\nfunc (*RequestOp_RequestDeleteRange) isRequestOp_Request() {}\nfunc (*RequestOp_RequestTxn) isRequestOp_Request()         {}\n\nfunc (m *RequestOp) GetRequest() isRequestOp_Request {\n\tif m != nil {\n\t\treturn m.Request\n\t}\n\treturn nil\n}\n\nfunc (m *RequestOp) GetRequestRange() *RangeRequest {\n\tif x, ok := m.GetRequest().(*RequestOp_RequestRange); ok {\n\t\treturn x.RequestRange\n\t}\n\treturn nil\n}\n\nfunc (m *RequestOp) GetRequestPut() *PutRequest {\n\tif x, ok := m.GetRequest().(*RequestOp_RequestPut); ok {\n\t\treturn x.RequestPut\n\t}\n\treturn nil\n}\n\nfunc (m *RequestOp) GetRequestDeleteRange() *DeleteRangeRequest {\n\tif x, ok := m.GetRequest().(*RequestOp_RequestDeleteRange); ok {\n\t\treturn x.RequestDeleteRange\n\t}\n\treturn nil\n}\n\nfunc (m *RequestOp) GetRequestTxn() *TxnRequest {\n\tif x, ok := m.GetRequest().(*RequestOp_RequestTxn); ok {\n\t\treturn x.RequestTxn\n\t}\n\treturn nil\n}\n\n// XXX_OneofWrappers is for the internal use of the proto package.\nfunc (*RequestOp) XXX_OneofWrappers() []interface{} {\n\treturn []interface{}{\n\t\t(*RequestOp_RequestRange)(nil),\n\t\t(*RequestOp_RequestPut)(nil),\n\t\t(*RequestOp_RequestDeleteRange)(nil),\n\t\t(*RequestOp_RequestTxn)(nil),\n\t}\n}\n\ntype ResponseOp struct {\n\t// response is a union of response types returned by a transaction.\n\t//\n\t// Types that are valid to be assigned to Response:\n\t//\t*ResponseOp_ResponseRange\n\t//\t*ResponseOp_ResponsePut\n\t//\t*ResponseOp_ResponseDeleteRange\n\t//\t*ResponseOp_ResponseTxn\n\tResponse             isResponseOp_Response `protobuf_oneof:\"response\"`\n\tXXX_NoUnkeyedLiteral struct{}              `json:\"-\"`\n\tXXX_unrecognized     []byte                `json:\"-\"`\n\tXXX_sizecache        int32                 `json:\"-\"`\n}\n\nfunc (m *ResponseOp) Reset()         { *m = ResponseOp{} }\nfunc (m *ResponseOp) String() string { return proto.CompactTextString(m) }\nfunc (*ResponseOp) ProtoMessage()    {}\nfunc (*ResponseOp) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{8}\n}\nfunc (m *ResponseOp) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *ResponseOp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_ResponseOp.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *ResponseOp) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_ResponseOp.Merge(m, src)\n}\nfunc (m *ResponseOp) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *ResponseOp) XXX_DiscardUnknown() {\n\txxx_messageInfo_ResponseOp.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_ResponseOp proto.InternalMessageInfo\n\ntype isResponseOp_Response interface {\n\tisResponseOp_Response()\n\tMarshalTo([]byte) (int, error)\n\tSize() int\n}\n\ntype ResponseOp_ResponseRange struct {\n\tResponseRange *RangeResponse `protobuf:\"bytes,1,opt,name=response_range,json=responseRange,proto3,oneof\" json:\"response_range,omitempty\"`\n}\ntype ResponseOp_ResponsePut struct {\n\tResponsePut *PutResponse `protobuf:\"bytes,2,opt,name=response_put,json=responsePut,proto3,oneof\" json:\"response_put,omitempty\"`\n}\ntype ResponseOp_ResponseDeleteRange struct {\n\tResponseDeleteRange *DeleteRangeResponse `protobuf:\"bytes,3,opt,name=response_delete_range,json=responseDeleteRange,proto3,oneof\" json:\"response_delete_range,omitempty\"`\n}\ntype ResponseOp_ResponseTxn struct {\n\tResponseTxn *TxnResponse `protobuf:\"bytes,4,opt,name=response_txn,json=responseTxn,proto3,oneof\" json:\"response_txn,omitempty\"`\n}\n\nfunc (*ResponseOp_ResponseRange) isResponseOp_Response()       {}\nfunc (*ResponseOp_ResponsePut) isResponseOp_Response()         {}\nfunc (*ResponseOp_ResponseDeleteRange) isResponseOp_Response() {}\nfunc (*ResponseOp_ResponseTxn) isResponseOp_Response()         {}\n\nfunc (m *ResponseOp) GetResponse() isResponseOp_Response {\n\tif m != nil {\n\t\treturn m.Response\n\t}\n\treturn nil\n}\n\nfunc (m *ResponseOp) GetResponseRange() *RangeResponse {\n\tif x, ok := m.GetResponse().(*ResponseOp_ResponseRange); ok {\n\t\treturn x.ResponseRange\n\t}\n\treturn nil\n}\n\nfunc (m *ResponseOp) GetResponsePut() *PutResponse {\n\tif x, ok := m.GetResponse().(*ResponseOp_ResponsePut); ok {\n\t\treturn x.ResponsePut\n\t}\n\treturn nil\n}\n\nfunc (m *ResponseOp) GetResponseDeleteRange() *DeleteRangeResponse {\n\tif x, ok := m.GetResponse().(*ResponseOp_ResponseDeleteRange); ok {\n\t\treturn x.ResponseDeleteRange\n\t}\n\treturn nil\n}\n\nfunc (m *ResponseOp) GetResponseTxn() *TxnResponse {\n\tif x, ok := m.GetResponse().(*ResponseOp_ResponseTxn); ok {\n\t\treturn x.ResponseTxn\n\t}\n\treturn nil\n}\n\n// XXX_OneofWrappers is for the internal use of the proto package.\nfunc (*ResponseOp) XXX_OneofWrappers() []interface{} {\n\treturn []interface{}{\n\t\t(*ResponseOp_ResponseRange)(nil),\n\t\t(*ResponseOp_ResponsePut)(nil),\n\t\t(*ResponseOp_ResponseDeleteRange)(nil),\n\t\t(*ResponseOp_ResponseTxn)(nil),\n\t}\n}\n\ntype Compare struct {\n\t// result is logical comparison operation for this comparison.\n\tResult Compare_CompareResult `protobuf:\"varint,1,opt,name=result,proto3,enum=etcdserverpb.Compare_CompareResult\" json:\"result,omitempty\"`\n\t// target is the key-value field to inspect for the comparison.\n\tTarget Compare_CompareTarget `protobuf:\"varint,2,opt,name=target,proto3,enum=etcdserverpb.Compare_CompareTarget\" json:\"target,omitempty\"`\n\t// key is the subject key for the comparison operation.\n\tKey []byte `protobuf:\"bytes,3,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// Types that are valid to be assigned to TargetUnion:\n\t//\t*Compare_Version\n\t//\t*Compare_CreateRevision\n\t//\t*Compare_ModRevision\n\t//\t*Compare_Value\n\t//\t*Compare_Lease\n\tTargetUnion isCompare_TargetUnion `protobuf_oneof:\"target_union\"`\n\t// range_end compares the given target to all keys in the range [key, range_end).\n\t// See RangeRequest for more details on key ranges.\n\tRangeEnd             []byte   `protobuf:\"bytes,64,opt,name=range_end,json=rangeEnd,proto3\" json:\"range_end,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *Compare) Reset()         { *m = Compare{} }\nfunc (m *Compare) String() string { return proto.CompactTextString(m) }\nfunc (*Compare) ProtoMessage()    {}\nfunc (*Compare) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{9}\n}\nfunc (m *Compare) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Compare) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Compare.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Compare) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Compare.Merge(m, src)\n}\nfunc (m *Compare) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Compare) XXX_DiscardUnknown() {\n\txxx_messageInfo_Compare.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Compare proto.InternalMessageInfo\n\ntype isCompare_TargetUnion interface {\n\tisCompare_TargetUnion()\n\tMarshalTo([]byte) (int, error)\n\tSize() int\n}\n\ntype Compare_Version struct {\n\tVersion int64 `protobuf:\"varint,4,opt,name=version,proto3,oneof\" json:\"version,omitempty\"`\n}\ntype Compare_CreateRevision struct {\n\tCreateRevision int64 `protobuf:\"varint,5,opt,name=create_revision,json=createRevision,proto3,oneof\" json:\"create_revision,omitempty\"`\n}\ntype Compare_ModRevision struct {\n\tModRevision int64 `protobuf:\"varint,6,opt,name=mod_revision,json=modRevision,proto3,oneof\" json:\"mod_revision,omitempty\"`\n}\ntype Compare_Value struct {\n\tValue []byte `protobuf:\"bytes,7,opt,name=value,proto3,oneof\" json:\"value,omitempty\"`\n}\ntype Compare_Lease struct {\n\tLease int64 `protobuf:\"varint,8,opt,name=lease,proto3,oneof\" json:\"lease,omitempty\"`\n}\n\nfunc (*Compare_Version) isCompare_TargetUnion()        {}\nfunc (*Compare_CreateRevision) isCompare_TargetUnion() {}\nfunc (*Compare_ModRevision) isCompare_TargetUnion()    {}\nfunc (*Compare_Value) isCompare_TargetUnion()          {}\nfunc (*Compare_Lease) isCompare_TargetUnion()          {}\n\nfunc (m *Compare) GetTargetUnion() isCompare_TargetUnion {\n\tif m != nil {\n\t\treturn m.TargetUnion\n\t}\n\treturn nil\n}\n\nfunc (m *Compare) GetResult() Compare_CompareResult {\n\tif m != nil {\n\t\treturn m.Result\n\t}\n\treturn Compare_EQUAL\n}\n\nfunc (m *Compare) GetTarget() Compare_CompareTarget {\n\tif m != nil {\n\t\treturn m.Target\n\t}\n\treturn Compare_VERSION\n}\n\nfunc (m *Compare) GetKey() []byte {\n\tif m != nil {\n\t\treturn m.Key\n\t}\n\treturn nil\n}\n\nfunc (m *Compare) GetVersion() int64 {\n\tif x, ok := m.GetTargetUnion().(*Compare_Version); ok {\n\t\treturn x.Version\n\t}\n\treturn 0\n}\n\nfunc (m *Compare) GetCreateRevision() int64 {\n\tif x, ok := m.GetTargetUnion().(*Compare_CreateRevision); ok {\n\t\treturn x.CreateRevision\n\t}\n\treturn 0\n}\n\nfunc (m *Compare) GetModRevision() int64 {\n\tif x, ok := m.GetTargetUnion().(*Compare_ModRevision); ok {\n\t\treturn x.ModRevision\n\t}\n\treturn 0\n}\n\nfunc (m *Compare) GetValue() []byte {\n\tif x, ok := m.GetTargetUnion().(*Compare_Value); ok {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nfunc (m *Compare) GetLease() int64 {\n\tif x, ok := m.GetTargetUnion().(*Compare_Lease); ok {\n\t\treturn x.Lease\n\t}\n\treturn 0\n}\n\nfunc (m *Compare) GetRangeEnd() []byte {\n\tif m != nil {\n\t\treturn m.RangeEnd\n\t}\n\treturn nil\n}\n\n// XXX_OneofWrappers is for the internal use of the proto package.\nfunc (*Compare) XXX_OneofWrappers() []interface{} {\n\treturn []interface{}{\n\t\t(*Compare_Version)(nil),\n\t\t(*Compare_CreateRevision)(nil),\n\t\t(*Compare_ModRevision)(nil),\n\t\t(*Compare_Value)(nil),\n\t\t(*Compare_Lease)(nil),\n\t}\n}\n\n// From google paxosdb paper:\n// Our implementation hinges around a powerful primitive which we call MultiOp. All other database\n// operations except for iteration are implemented as a single call to MultiOp. A MultiOp is applied atomically\n// and consists of three components:\n// 1. A list of tests called guard. Each test in guard checks a single entry in the database. It may check\n// for the absence or presence of a value, or compare with a given value. Two different tests in the guard\n// may apply to the same or different entries in the database. All tests in the guard are applied and\n// MultiOp returns the results. If all tests are true, MultiOp executes t op (see item 2 below), otherwise\n// it executes f op (see item 3 below).\n// 2. A list of database operations called t op. Each operation in the list is either an insert, delete, or\n// lookup operation, and applies to a single database entry. Two different operations in the list may apply\n// to the same or different entries in the database. These operations are executed\n// if guard evaluates to\n// true.\n// 3. A list of database operations called f op. Like t op, but executed if guard evaluates to false.\ntype TxnRequest struct {\n\t// compare is a list of predicates representing a conjunction of terms.\n\t// If the comparisons succeed, then the success requests will be processed in order,\n\t// and the response will contain their respective responses in order.\n\t// If the comparisons fail, then the failure requests will be processed in order,\n\t// and the response will contain their respective responses in order.\n\tCompare []*Compare `protobuf:\"bytes,1,rep,name=compare,proto3\" json:\"compare,omitempty\"`\n\t// success is a list of requests which will be applied when compare evaluates to true.\n\tSuccess []*RequestOp `protobuf:\"bytes,2,rep,name=success,proto3\" json:\"success,omitempty\"`\n\t// failure is a list of requests which will be applied when compare evaluates to false.\n\tFailure              []*RequestOp `protobuf:\"bytes,3,rep,name=failure,proto3\" json:\"failure,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}     `json:\"-\"`\n\tXXX_unrecognized     []byte       `json:\"-\"`\n\tXXX_sizecache        int32        `json:\"-\"`\n}\n\nfunc (m *TxnRequest) Reset()         { *m = TxnRequest{} }\nfunc (m *TxnRequest) String() string { return proto.CompactTextString(m) }\nfunc (*TxnRequest) ProtoMessage()    {}\nfunc (*TxnRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{10}\n}\nfunc (m *TxnRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *TxnRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_TxnRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *TxnRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_TxnRequest.Merge(m, src)\n}\nfunc (m *TxnRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *TxnRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_TxnRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_TxnRequest proto.InternalMessageInfo\n\nfunc (m *TxnRequest) GetCompare() []*Compare {\n\tif m != nil {\n\t\treturn m.Compare\n\t}\n\treturn nil\n}\n\nfunc (m *TxnRequest) GetSuccess() []*RequestOp {\n\tif m != nil {\n\t\treturn m.Success\n\t}\n\treturn nil\n}\n\nfunc (m *TxnRequest) GetFailure() []*RequestOp {\n\tif m != nil {\n\t\treturn m.Failure\n\t}\n\treturn nil\n}\n\ntype TxnResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// succeeded is set to true if the compare evaluated to true or false otherwise.\n\tSucceeded bool `protobuf:\"varint,2,opt,name=succeeded,proto3\" json:\"succeeded,omitempty\"`\n\t// responses is a list of responses corresponding to the results from applying\n\t// success if succeeded is true or failure if succeeded is false.\n\tResponses            []*ResponseOp `protobuf:\"bytes,3,rep,name=responses,proto3\" json:\"responses,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}      `json:\"-\"`\n\tXXX_unrecognized     []byte        `json:\"-\"`\n\tXXX_sizecache        int32         `json:\"-\"`\n}\n\nfunc (m *TxnResponse) Reset()         { *m = TxnResponse{} }\nfunc (m *TxnResponse) String() string { return proto.CompactTextString(m) }\nfunc (*TxnResponse) ProtoMessage()    {}\nfunc (*TxnResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{11}\n}\nfunc (m *TxnResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *TxnResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_TxnResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *TxnResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_TxnResponse.Merge(m, src)\n}\nfunc (m *TxnResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *TxnResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_TxnResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_TxnResponse proto.InternalMessageInfo\n\nfunc (m *TxnResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *TxnResponse) GetSucceeded() bool {\n\tif m != nil {\n\t\treturn m.Succeeded\n\t}\n\treturn false\n}\n\nfunc (m *TxnResponse) GetResponses() []*ResponseOp {\n\tif m != nil {\n\t\treturn m.Responses\n\t}\n\treturn nil\n}\n\n// CompactionRequest compacts the key-value store up to a given revision. All superseded keys\n// with a revision less than the compaction revision will be removed.\ntype CompactionRequest struct {\n\t// revision is the key-value store revision for the compaction operation.\n\tRevision int64 `protobuf:\"varint,1,opt,name=revision,proto3\" json:\"revision,omitempty\"`\n\t// physical is set so the RPC will wait until the compaction is physically\n\t// applied to the local database such that compacted entries are totally\n\t// removed from the backend database.\n\tPhysical             bool     `protobuf:\"varint,2,opt,name=physical,proto3\" json:\"physical,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *CompactionRequest) Reset()         { *m = CompactionRequest{} }\nfunc (m *CompactionRequest) String() string { return proto.CompactTextString(m) }\nfunc (*CompactionRequest) ProtoMessage()    {}\nfunc (*CompactionRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{12}\n}\nfunc (m *CompactionRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *CompactionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_CompactionRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *CompactionRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_CompactionRequest.Merge(m, src)\n}\nfunc (m *CompactionRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *CompactionRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_CompactionRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_CompactionRequest proto.InternalMessageInfo\n\nfunc (m *CompactionRequest) GetRevision() int64 {\n\tif m != nil {\n\t\treturn m.Revision\n\t}\n\treturn 0\n}\n\nfunc (m *CompactionRequest) GetPhysical() bool {\n\tif m != nil {\n\t\treturn m.Physical\n\t}\n\treturn false\n}\n\ntype CompactionResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *CompactionResponse) Reset()         { *m = CompactionResponse{} }\nfunc (m *CompactionResponse) String() string { return proto.CompactTextString(m) }\nfunc (*CompactionResponse) ProtoMessage()    {}\nfunc (*CompactionResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{13}\n}\nfunc (m *CompactionResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *CompactionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_CompactionResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *CompactionResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_CompactionResponse.Merge(m, src)\n}\nfunc (m *CompactionResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *CompactionResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_CompactionResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_CompactionResponse proto.InternalMessageInfo\n\nfunc (m *CompactionResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype HashRequest struct {\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *HashRequest) Reset()         { *m = HashRequest{} }\nfunc (m *HashRequest) String() string { return proto.CompactTextString(m) }\nfunc (*HashRequest) ProtoMessage()    {}\nfunc (*HashRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{14}\n}\nfunc (m *HashRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *HashRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_HashRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *HashRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_HashRequest.Merge(m, src)\n}\nfunc (m *HashRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *HashRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_HashRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_HashRequest proto.InternalMessageInfo\n\ntype HashKVRequest struct {\n\t// revision is the key-value store revision for the hash operation.\n\tRevision             int64    `protobuf:\"varint,1,opt,name=revision,proto3\" json:\"revision,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *HashKVRequest) Reset()         { *m = HashKVRequest{} }\nfunc (m *HashKVRequest) String() string { return proto.CompactTextString(m) }\nfunc (*HashKVRequest) ProtoMessage()    {}\nfunc (*HashKVRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{15}\n}\nfunc (m *HashKVRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *HashKVRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_HashKVRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *HashKVRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_HashKVRequest.Merge(m, src)\n}\nfunc (m *HashKVRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *HashKVRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_HashKVRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_HashKVRequest proto.InternalMessageInfo\n\nfunc (m *HashKVRequest) GetRevision() int64 {\n\tif m != nil {\n\t\treturn m.Revision\n\t}\n\treturn 0\n}\n\ntype HashKVResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// hash is the hash value computed from the responding member's MVCC keys up to a given revision.\n\tHash uint32 `protobuf:\"varint,2,opt,name=hash,proto3\" json:\"hash,omitempty\"`\n\t// compact_revision is the compacted revision of key-value store when hash begins.\n\tCompactRevision      int64    `protobuf:\"varint,3,opt,name=compact_revision,json=compactRevision,proto3\" json:\"compact_revision,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *HashKVResponse) Reset()         { *m = HashKVResponse{} }\nfunc (m *HashKVResponse) String() string { return proto.CompactTextString(m) }\nfunc (*HashKVResponse) ProtoMessage()    {}\nfunc (*HashKVResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{16}\n}\nfunc (m *HashKVResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *HashKVResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_HashKVResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *HashKVResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_HashKVResponse.Merge(m, src)\n}\nfunc (m *HashKVResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *HashKVResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_HashKVResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_HashKVResponse proto.InternalMessageInfo\n\nfunc (m *HashKVResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *HashKVResponse) GetHash() uint32 {\n\tif m != nil {\n\t\treturn m.Hash\n\t}\n\treturn 0\n}\n\nfunc (m *HashKVResponse) GetCompactRevision() int64 {\n\tif m != nil {\n\t\treturn m.CompactRevision\n\t}\n\treturn 0\n}\n\ntype HashResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// hash is the hash value computed from the responding member's KV's backend.\n\tHash                 uint32   `protobuf:\"varint,2,opt,name=hash,proto3\" json:\"hash,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *HashResponse) Reset()         { *m = HashResponse{} }\nfunc (m *HashResponse) String() string { return proto.CompactTextString(m) }\nfunc (*HashResponse) ProtoMessage()    {}\nfunc (*HashResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{17}\n}\nfunc (m *HashResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *HashResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_HashResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *HashResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_HashResponse.Merge(m, src)\n}\nfunc (m *HashResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *HashResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_HashResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_HashResponse proto.InternalMessageInfo\n\nfunc (m *HashResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *HashResponse) GetHash() uint32 {\n\tif m != nil {\n\t\treturn m.Hash\n\t}\n\treturn 0\n}\n\ntype SnapshotRequest struct {\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *SnapshotRequest) Reset()         { *m = SnapshotRequest{} }\nfunc (m *SnapshotRequest) String() string { return proto.CompactTextString(m) }\nfunc (*SnapshotRequest) ProtoMessage()    {}\nfunc (*SnapshotRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{18}\n}\nfunc (m *SnapshotRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *SnapshotRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_SnapshotRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *SnapshotRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_SnapshotRequest.Merge(m, src)\n}\nfunc (m *SnapshotRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *SnapshotRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_SnapshotRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_SnapshotRequest proto.InternalMessageInfo\n\ntype SnapshotResponse struct {\n\t// header has the current key-value store information. The first header in the snapshot\n\t// stream indicates the point in time of the snapshot.\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// remaining_bytes is the number of blob bytes to be sent after this message\n\tRemainingBytes uint64 `protobuf:\"varint,2,opt,name=remaining_bytes,json=remainingBytes,proto3\" json:\"remaining_bytes,omitempty\"`\n\t// blob contains the next chunk of the snapshot in the snapshot stream.\n\tBlob                 []byte   `protobuf:\"bytes,3,opt,name=blob,proto3\" json:\"blob,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *SnapshotResponse) Reset()         { *m = SnapshotResponse{} }\nfunc (m *SnapshotResponse) String() string { return proto.CompactTextString(m) }\nfunc (*SnapshotResponse) ProtoMessage()    {}\nfunc (*SnapshotResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{19}\n}\nfunc (m *SnapshotResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *SnapshotResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_SnapshotResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *SnapshotResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_SnapshotResponse.Merge(m, src)\n}\nfunc (m *SnapshotResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *SnapshotResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_SnapshotResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_SnapshotResponse proto.InternalMessageInfo\n\nfunc (m *SnapshotResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *SnapshotResponse) GetRemainingBytes() uint64 {\n\tif m != nil {\n\t\treturn m.RemainingBytes\n\t}\n\treturn 0\n}\n\nfunc (m *SnapshotResponse) GetBlob() []byte {\n\tif m != nil {\n\t\treturn m.Blob\n\t}\n\treturn nil\n}\n\ntype WatchRequest struct {\n\t// request_union is a request to either create a new watcher or cancel an existing watcher.\n\t//\n\t// Types that are valid to be assigned to RequestUnion:\n\t//\t*WatchRequest_CreateRequest\n\t//\t*WatchRequest_CancelRequest\n\t//\t*WatchRequest_ProgressRequest\n\tRequestUnion         isWatchRequest_RequestUnion `protobuf_oneof:\"request_union\"`\n\tXXX_NoUnkeyedLiteral struct{}                    `json:\"-\"`\n\tXXX_unrecognized     []byte                      `json:\"-\"`\n\tXXX_sizecache        int32                       `json:\"-\"`\n}\n\nfunc (m *WatchRequest) Reset()         { *m = WatchRequest{} }\nfunc (m *WatchRequest) String() string { return proto.CompactTextString(m) }\nfunc (*WatchRequest) ProtoMessage()    {}\nfunc (*WatchRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{20}\n}\nfunc (m *WatchRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *WatchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_WatchRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *WatchRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_WatchRequest.Merge(m, src)\n}\nfunc (m *WatchRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *WatchRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_WatchRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_WatchRequest proto.InternalMessageInfo\n\ntype isWatchRequest_RequestUnion interface {\n\tisWatchRequest_RequestUnion()\n\tMarshalTo([]byte) (int, error)\n\tSize() int\n}\n\ntype WatchRequest_CreateRequest struct {\n\tCreateRequest *WatchCreateRequest `protobuf:\"bytes,1,opt,name=create_request,json=createRequest,proto3,oneof\" json:\"create_request,omitempty\"`\n}\ntype WatchRequest_CancelRequest struct {\n\tCancelRequest *WatchCancelRequest `protobuf:\"bytes,2,opt,name=cancel_request,json=cancelRequest,proto3,oneof\" json:\"cancel_request,omitempty\"`\n}\ntype WatchRequest_ProgressRequest struct {\n\tProgressRequest *WatchProgressRequest `protobuf:\"bytes,3,opt,name=progress_request,json=progressRequest,proto3,oneof\" json:\"progress_request,omitempty\"`\n}\n\nfunc (*WatchRequest_CreateRequest) isWatchRequest_RequestUnion()   {}\nfunc (*WatchRequest_CancelRequest) isWatchRequest_RequestUnion()   {}\nfunc (*WatchRequest_ProgressRequest) isWatchRequest_RequestUnion() {}\n\nfunc (m *WatchRequest) GetRequestUnion() isWatchRequest_RequestUnion {\n\tif m != nil {\n\t\treturn m.RequestUnion\n\t}\n\treturn nil\n}\n\nfunc (m *WatchRequest) GetCreateRequest() *WatchCreateRequest {\n\tif x, ok := m.GetRequestUnion().(*WatchRequest_CreateRequest); ok {\n\t\treturn x.CreateRequest\n\t}\n\treturn nil\n}\n\nfunc (m *WatchRequest) GetCancelRequest() *WatchCancelRequest {\n\tif x, ok := m.GetRequestUnion().(*WatchRequest_CancelRequest); ok {\n\t\treturn x.CancelRequest\n\t}\n\treturn nil\n}\n\nfunc (m *WatchRequest) GetProgressRequest() *WatchProgressRequest {\n\tif x, ok := m.GetRequestUnion().(*WatchRequest_ProgressRequest); ok {\n\t\treturn x.ProgressRequest\n\t}\n\treturn nil\n}\n\n// XXX_OneofWrappers is for the internal use of the proto package.\nfunc (*WatchRequest) XXX_OneofWrappers() []interface{} {\n\treturn []interface{}{\n\t\t(*WatchRequest_CreateRequest)(nil),\n\t\t(*WatchRequest_CancelRequest)(nil),\n\t\t(*WatchRequest_ProgressRequest)(nil),\n\t}\n}\n\ntype WatchCreateRequest struct {\n\t// key is the key to register for watching.\n\tKey []byte `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// range_end is the end of the range [key, range_end) to watch. If range_end is not given,\n\t// only the key argument is watched. If range_end is equal to '\\0', all keys greater than\n\t// or equal to the key argument are watched.\n\t// If the range_end is one bit larger than the given key,\n\t// then all keys with the prefix (the given key) will be watched.\n\tRangeEnd []byte `protobuf:\"bytes,2,opt,name=range_end,json=rangeEnd,proto3\" json:\"range_end,omitempty\"`\n\t// start_revision is an optional revision to watch from (inclusive). No start_revision is \"now\".\n\tStartRevision int64 `protobuf:\"varint,3,opt,name=start_revision,json=startRevision,proto3\" json:\"start_revision,omitempty\"`\n\t// progress_notify is set so that the etcd server will periodically send a WatchResponse with\n\t// no events to the new watcher if there are no recent events. It is useful when clients\n\t// wish to recover a disconnected watcher starting from a recent known revision.\n\t// The etcd server may decide how often it will send notifications based on current load.\n\tProgressNotify bool `protobuf:\"varint,4,opt,name=progress_notify,json=progressNotify,proto3\" json:\"progress_notify,omitempty\"`\n\t// filters filter the events at server side before it sends back to the watcher.\n\tFilters []WatchCreateRequest_FilterType `protobuf:\"varint,5,rep,packed,name=filters,proto3,enum=etcdserverpb.WatchCreateRequest_FilterType\" json:\"filters,omitempty\"`\n\t// If prev_kv is set, created watcher gets the previous KV before the event happens.\n\t// If the previous KV is already compacted, nothing will be returned.\n\tPrevKv bool `protobuf:\"varint,6,opt,name=prev_kv,json=prevKv,proto3\" json:\"prev_kv,omitempty\"`\n\t// If watch_id is provided and non-zero, it will be assigned to this watcher.\n\t// Since creating a watcher in etcd is not a synchronous operation,\n\t// this can be used ensure that ordering is correct when creating multiple\n\t// watchers on the same stream. Creating a watcher with an ID already in\n\t// use on the stream will cause an error to be returned.\n\tWatchId int64 `protobuf:\"varint,7,opt,name=watch_id,json=watchId,proto3\" json:\"watch_id,omitempty\"`\n\t// fragment enables splitting large revisions into multiple watch responses.\n\tFragment             bool     `protobuf:\"varint,8,opt,name=fragment,proto3\" json:\"fragment,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *WatchCreateRequest) Reset()         { *m = WatchCreateRequest{} }\nfunc (m *WatchCreateRequest) String() string { return proto.CompactTextString(m) }\nfunc (*WatchCreateRequest) ProtoMessage()    {}\nfunc (*WatchCreateRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{21}\n}\nfunc (m *WatchCreateRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *WatchCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_WatchCreateRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *WatchCreateRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_WatchCreateRequest.Merge(m, src)\n}\nfunc (m *WatchCreateRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *WatchCreateRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_WatchCreateRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_WatchCreateRequest proto.InternalMessageInfo\n\nfunc (m *WatchCreateRequest) GetKey() []byte {\n\tif m != nil {\n\t\treturn m.Key\n\t}\n\treturn nil\n}\n\nfunc (m *WatchCreateRequest) GetRangeEnd() []byte {\n\tif m != nil {\n\t\treturn m.RangeEnd\n\t}\n\treturn nil\n}\n\nfunc (m *WatchCreateRequest) GetStartRevision() int64 {\n\tif m != nil {\n\t\treturn m.StartRevision\n\t}\n\treturn 0\n}\n\nfunc (m *WatchCreateRequest) GetProgressNotify() bool {\n\tif m != nil {\n\t\treturn m.ProgressNotify\n\t}\n\treturn false\n}\n\nfunc (m *WatchCreateRequest) GetFilters() []WatchCreateRequest_FilterType {\n\tif m != nil {\n\t\treturn m.Filters\n\t}\n\treturn nil\n}\n\nfunc (m *WatchCreateRequest) GetPrevKv() bool {\n\tif m != nil {\n\t\treturn m.PrevKv\n\t}\n\treturn false\n}\n\nfunc (m *WatchCreateRequest) GetWatchId() int64 {\n\tif m != nil {\n\t\treturn m.WatchId\n\t}\n\treturn 0\n}\n\nfunc (m *WatchCreateRequest) GetFragment() bool {\n\tif m != nil {\n\t\treturn m.Fragment\n\t}\n\treturn false\n}\n\ntype WatchCancelRequest struct {\n\t// watch_id is the watcher id to cancel so that no more events are transmitted.\n\tWatchId              int64    `protobuf:\"varint,1,opt,name=watch_id,json=watchId,proto3\" json:\"watch_id,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *WatchCancelRequest) Reset()         { *m = WatchCancelRequest{} }\nfunc (m *WatchCancelRequest) String() string { return proto.CompactTextString(m) }\nfunc (*WatchCancelRequest) ProtoMessage()    {}\nfunc (*WatchCancelRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{22}\n}\nfunc (m *WatchCancelRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *WatchCancelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_WatchCancelRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *WatchCancelRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_WatchCancelRequest.Merge(m, src)\n}\nfunc (m *WatchCancelRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *WatchCancelRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_WatchCancelRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_WatchCancelRequest proto.InternalMessageInfo\n\nfunc (m *WatchCancelRequest) GetWatchId() int64 {\n\tif m != nil {\n\t\treturn m.WatchId\n\t}\n\treturn 0\n}\n\n// Requests the a watch stream progress status be sent in the watch response stream as soon as\n// possible.\ntype WatchProgressRequest struct {\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *WatchProgressRequest) Reset()         { *m = WatchProgressRequest{} }\nfunc (m *WatchProgressRequest) String() string { return proto.CompactTextString(m) }\nfunc (*WatchProgressRequest) ProtoMessage()    {}\nfunc (*WatchProgressRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{23}\n}\nfunc (m *WatchProgressRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *WatchProgressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_WatchProgressRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *WatchProgressRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_WatchProgressRequest.Merge(m, src)\n}\nfunc (m *WatchProgressRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *WatchProgressRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_WatchProgressRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_WatchProgressRequest proto.InternalMessageInfo\n\ntype WatchResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// watch_id is the ID of the watcher that corresponds to the response.\n\tWatchId int64 `protobuf:\"varint,2,opt,name=watch_id,json=watchId,proto3\" json:\"watch_id,omitempty\"`\n\t// created is set to true if the response is for a create watch request.\n\t// The client should record the watch_id and expect to receive events for\n\t// the created watcher from the same stream.\n\t// All events sent to the created watcher will attach with the same watch_id.\n\tCreated bool `protobuf:\"varint,3,opt,name=created,proto3\" json:\"created,omitempty\"`\n\t// canceled is set to true if the response is for a cancel watch request.\n\t// No further events will be sent to the canceled watcher.\n\tCanceled bool `protobuf:\"varint,4,opt,name=canceled,proto3\" json:\"canceled,omitempty\"`\n\t// compact_revision is set to the minimum index if a watcher tries to watch\n\t// at a compacted index.\n\t//\n\t// This happens when creating a watcher at a compacted revision or the watcher cannot\n\t// catch up with the progress of the key-value store.\n\t//\n\t// The client should treat the watcher as canceled and should not try to create any\n\t// watcher with the same start_revision again.\n\tCompactRevision int64 `protobuf:\"varint,5,opt,name=compact_revision,json=compactRevision,proto3\" json:\"compact_revision,omitempty\"`\n\t// cancel_reason indicates the reason for canceling the watcher.\n\tCancelReason string `protobuf:\"bytes,6,opt,name=cancel_reason,json=cancelReason,proto3\" json:\"cancel_reason,omitempty\"`\n\t// framgment is true if large watch response was split over multiple responses.\n\tFragment             bool            `protobuf:\"varint,7,opt,name=fragment,proto3\" json:\"fragment,omitempty\"`\n\tEvents               []*mvccpb.Event `protobuf:\"bytes,11,rep,name=events,proto3\" json:\"events,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *WatchResponse) Reset()         { *m = WatchResponse{} }\nfunc (m *WatchResponse) String() string { return proto.CompactTextString(m) }\nfunc (*WatchResponse) ProtoMessage()    {}\nfunc (*WatchResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{24}\n}\nfunc (m *WatchResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *WatchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_WatchResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *WatchResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_WatchResponse.Merge(m, src)\n}\nfunc (m *WatchResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *WatchResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_WatchResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_WatchResponse proto.InternalMessageInfo\n\nfunc (m *WatchResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *WatchResponse) GetWatchId() int64 {\n\tif m != nil {\n\t\treturn m.WatchId\n\t}\n\treturn 0\n}\n\nfunc (m *WatchResponse) GetCreated() bool {\n\tif m != nil {\n\t\treturn m.Created\n\t}\n\treturn false\n}\n\nfunc (m *WatchResponse) GetCanceled() bool {\n\tif m != nil {\n\t\treturn m.Canceled\n\t}\n\treturn false\n}\n\nfunc (m *WatchResponse) GetCompactRevision() int64 {\n\tif m != nil {\n\t\treturn m.CompactRevision\n\t}\n\treturn 0\n}\n\nfunc (m *WatchResponse) GetCancelReason() string {\n\tif m != nil {\n\t\treturn m.CancelReason\n\t}\n\treturn \"\"\n}\n\nfunc (m *WatchResponse) GetFragment() bool {\n\tif m != nil {\n\t\treturn m.Fragment\n\t}\n\treturn false\n}\n\nfunc (m *WatchResponse) GetEvents() []*mvccpb.Event {\n\tif m != nil {\n\t\treturn m.Events\n\t}\n\treturn nil\n}\n\ntype LeaseGrantRequest struct {\n\t// TTL is the advisory time-to-live in seconds. Expired lease will return -1.\n\tTTL int64 `protobuf:\"varint,1,opt,name=TTL,proto3\" json:\"TTL,omitempty\"`\n\t// ID is the requested ID for the lease. If ID is set to 0, the lessor chooses an ID.\n\tID                   int64    `protobuf:\"varint,2,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *LeaseGrantRequest) Reset()         { *m = LeaseGrantRequest{} }\nfunc (m *LeaseGrantRequest) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseGrantRequest) ProtoMessage()    {}\nfunc (*LeaseGrantRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{25}\n}\nfunc (m *LeaseGrantRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseGrantRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseGrantRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseGrantRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseGrantRequest.Merge(m, src)\n}\nfunc (m *LeaseGrantRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseGrantRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseGrantRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseGrantRequest proto.InternalMessageInfo\n\nfunc (m *LeaseGrantRequest) GetTTL() int64 {\n\tif m != nil {\n\t\treturn m.TTL\n\t}\n\treturn 0\n}\n\nfunc (m *LeaseGrantRequest) GetID() int64 {\n\tif m != nil {\n\t\treturn m.ID\n\t}\n\treturn 0\n}\n\ntype LeaseGrantResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// ID is the lease ID for the granted lease.\n\tID int64 `protobuf:\"varint,2,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\t// TTL is the server chosen lease time-to-live in seconds.\n\tTTL                  int64    `protobuf:\"varint,3,opt,name=TTL,proto3\" json:\"TTL,omitempty\"`\n\tError                string   `protobuf:\"bytes,4,opt,name=error,proto3\" json:\"error,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *LeaseGrantResponse) Reset()         { *m = LeaseGrantResponse{} }\nfunc (m *LeaseGrantResponse) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseGrantResponse) ProtoMessage()    {}\nfunc (*LeaseGrantResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{26}\n}\nfunc (m *LeaseGrantResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseGrantResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseGrantResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseGrantResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseGrantResponse.Merge(m, src)\n}\nfunc (m *LeaseGrantResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseGrantResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseGrantResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseGrantResponse proto.InternalMessageInfo\n\nfunc (m *LeaseGrantResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *LeaseGrantResponse) GetID() int64 {\n\tif m != nil {\n\t\treturn m.ID\n\t}\n\treturn 0\n}\n\nfunc (m *LeaseGrantResponse) GetTTL() int64 {\n\tif m != nil {\n\t\treturn m.TTL\n\t}\n\treturn 0\n}\n\nfunc (m *LeaseGrantResponse) GetError() string {\n\tif m != nil {\n\t\treturn m.Error\n\t}\n\treturn \"\"\n}\n\ntype LeaseRevokeRequest struct {\n\t// ID is the lease ID to revoke. When the ID is revoked, all associated keys will be deleted.\n\tID                   int64    `protobuf:\"varint,1,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *LeaseRevokeRequest) Reset()         { *m = LeaseRevokeRequest{} }\nfunc (m *LeaseRevokeRequest) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseRevokeRequest) ProtoMessage()    {}\nfunc (*LeaseRevokeRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{27}\n}\nfunc (m *LeaseRevokeRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseRevokeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseRevokeRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseRevokeRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseRevokeRequest.Merge(m, src)\n}\nfunc (m *LeaseRevokeRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseRevokeRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseRevokeRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseRevokeRequest proto.InternalMessageInfo\n\nfunc (m *LeaseRevokeRequest) GetID() int64 {\n\tif m != nil {\n\t\treturn m.ID\n\t}\n\treturn 0\n}\n\ntype LeaseRevokeResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *LeaseRevokeResponse) Reset()         { *m = LeaseRevokeResponse{} }\nfunc (m *LeaseRevokeResponse) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseRevokeResponse) ProtoMessage()    {}\nfunc (*LeaseRevokeResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{28}\n}\nfunc (m *LeaseRevokeResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseRevokeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseRevokeResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseRevokeResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseRevokeResponse.Merge(m, src)\n}\nfunc (m *LeaseRevokeResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseRevokeResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseRevokeResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseRevokeResponse proto.InternalMessageInfo\n\nfunc (m *LeaseRevokeResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype LeaseCheckpoint struct {\n\t// ID is the lease ID to checkpoint.\n\tID int64 `protobuf:\"varint,1,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\t// Remaining_TTL is the remaining time until expiry of the lease.\n\tRemaining_TTL        int64    `protobuf:\"varint,2,opt,name=remaining_TTL,json=remainingTTL,proto3\" json:\"remaining_TTL,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *LeaseCheckpoint) Reset()         { *m = LeaseCheckpoint{} }\nfunc (m *LeaseCheckpoint) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseCheckpoint) ProtoMessage()    {}\nfunc (*LeaseCheckpoint) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{29}\n}\nfunc (m *LeaseCheckpoint) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseCheckpoint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseCheckpoint.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseCheckpoint) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseCheckpoint.Merge(m, src)\n}\nfunc (m *LeaseCheckpoint) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseCheckpoint) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseCheckpoint.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseCheckpoint proto.InternalMessageInfo\n\nfunc (m *LeaseCheckpoint) GetID() int64 {\n\tif m != nil {\n\t\treturn m.ID\n\t}\n\treturn 0\n}\n\nfunc (m *LeaseCheckpoint) GetRemaining_TTL() int64 {\n\tif m != nil {\n\t\treturn m.Remaining_TTL\n\t}\n\treturn 0\n}\n\ntype LeaseCheckpointRequest struct {\n\tCheckpoints          []*LeaseCheckpoint `protobuf:\"bytes,1,rep,name=checkpoints,proto3\" json:\"checkpoints,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}           `json:\"-\"`\n\tXXX_unrecognized     []byte             `json:\"-\"`\n\tXXX_sizecache        int32              `json:\"-\"`\n}\n\nfunc (m *LeaseCheckpointRequest) Reset()         { *m = LeaseCheckpointRequest{} }\nfunc (m *LeaseCheckpointRequest) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseCheckpointRequest) ProtoMessage()    {}\nfunc (*LeaseCheckpointRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{30}\n}\nfunc (m *LeaseCheckpointRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseCheckpointRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseCheckpointRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseCheckpointRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseCheckpointRequest.Merge(m, src)\n}\nfunc (m *LeaseCheckpointRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseCheckpointRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseCheckpointRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseCheckpointRequest proto.InternalMessageInfo\n\nfunc (m *LeaseCheckpointRequest) GetCheckpoints() []*LeaseCheckpoint {\n\tif m != nil {\n\t\treturn m.Checkpoints\n\t}\n\treturn nil\n}\n\ntype LeaseCheckpointResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *LeaseCheckpointResponse) Reset()         { *m = LeaseCheckpointResponse{} }\nfunc (m *LeaseCheckpointResponse) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseCheckpointResponse) ProtoMessage()    {}\nfunc (*LeaseCheckpointResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{31}\n}\nfunc (m *LeaseCheckpointResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseCheckpointResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseCheckpointResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseCheckpointResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseCheckpointResponse.Merge(m, src)\n}\nfunc (m *LeaseCheckpointResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseCheckpointResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseCheckpointResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseCheckpointResponse proto.InternalMessageInfo\n\nfunc (m *LeaseCheckpointResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype LeaseKeepAliveRequest struct {\n\t// ID is the lease ID for the lease to keep alive.\n\tID                   int64    `protobuf:\"varint,1,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *LeaseKeepAliveRequest) Reset()         { *m = LeaseKeepAliveRequest{} }\nfunc (m *LeaseKeepAliveRequest) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseKeepAliveRequest) ProtoMessage()    {}\nfunc (*LeaseKeepAliveRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{32}\n}\nfunc (m *LeaseKeepAliveRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseKeepAliveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseKeepAliveRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseKeepAliveRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseKeepAliveRequest.Merge(m, src)\n}\nfunc (m *LeaseKeepAliveRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseKeepAliveRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseKeepAliveRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseKeepAliveRequest proto.InternalMessageInfo\n\nfunc (m *LeaseKeepAliveRequest) GetID() int64 {\n\tif m != nil {\n\t\treturn m.ID\n\t}\n\treturn 0\n}\n\ntype LeaseKeepAliveResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// ID is the lease ID from the keep alive request.\n\tID int64 `protobuf:\"varint,2,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\t// TTL is the new time-to-live for the lease.\n\tTTL                  int64    `protobuf:\"varint,3,opt,name=TTL,proto3\" json:\"TTL,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *LeaseKeepAliveResponse) Reset()         { *m = LeaseKeepAliveResponse{} }\nfunc (m *LeaseKeepAliveResponse) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseKeepAliveResponse) ProtoMessage()    {}\nfunc (*LeaseKeepAliveResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{33}\n}\nfunc (m *LeaseKeepAliveResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseKeepAliveResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseKeepAliveResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseKeepAliveResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseKeepAliveResponse.Merge(m, src)\n}\nfunc (m *LeaseKeepAliveResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseKeepAliveResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseKeepAliveResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseKeepAliveResponse proto.InternalMessageInfo\n\nfunc (m *LeaseKeepAliveResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *LeaseKeepAliveResponse) GetID() int64 {\n\tif m != nil {\n\t\treturn m.ID\n\t}\n\treturn 0\n}\n\nfunc (m *LeaseKeepAliveResponse) GetTTL() int64 {\n\tif m != nil {\n\t\treturn m.TTL\n\t}\n\treturn 0\n}\n\ntype LeaseTimeToLiveRequest struct {\n\t// ID is the lease ID for the lease.\n\tID int64 `protobuf:\"varint,1,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\t// keys is true to query all the keys attached to this lease.\n\tKeys                 bool     `protobuf:\"varint,2,opt,name=keys,proto3\" json:\"keys,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *LeaseTimeToLiveRequest) Reset()         { *m = LeaseTimeToLiveRequest{} }\nfunc (m *LeaseTimeToLiveRequest) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseTimeToLiveRequest) ProtoMessage()    {}\nfunc (*LeaseTimeToLiveRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{34}\n}\nfunc (m *LeaseTimeToLiveRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseTimeToLiveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseTimeToLiveRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseTimeToLiveRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseTimeToLiveRequest.Merge(m, src)\n}\nfunc (m *LeaseTimeToLiveRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseTimeToLiveRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseTimeToLiveRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseTimeToLiveRequest proto.InternalMessageInfo\n\nfunc (m *LeaseTimeToLiveRequest) GetID() int64 {\n\tif m != nil {\n\t\treturn m.ID\n\t}\n\treturn 0\n}\n\nfunc (m *LeaseTimeToLiveRequest) GetKeys() bool {\n\tif m != nil {\n\t\treturn m.Keys\n\t}\n\treturn false\n}\n\ntype LeaseTimeToLiveResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// ID is the lease ID from the keep alive request.\n\tID int64 `protobuf:\"varint,2,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\t// TTL is the remaining TTL in seconds for the lease; the lease will expire in under TTL+1 seconds.\n\tTTL int64 `protobuf:\"varint,3,opt,name=TTL,proto3\" json:\"TTL,omitempty\"`\n\t// GrantedTTL is the initial granted time in seconds upon lease creation/renewal.\n\tGrantedTTL int64 `protobuf:\"varint,4,opt,name=grantedTTL,proto3\" json:\"grantedTTL,omitempty\"`\n\t// Keys is the list of keys attached to this lease.\n\tKeys                 [][]byte `protobuf:\"bytes,5,rep,name=keys,proto3\" json:\"keys,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *LeaseTimeToLiveResponse) Reset()         { *m = LeaseTimeToLiveResponse{} }\nfunc (m *LeaseTimeToLiveResponse) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseTimeToLiveResponse) ProtoMessage()    {}\nfunc (*LeaseTimeToLiveResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{35}\n}\nfunc (m *LeaseTimeToLiveResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseTimeToLiveResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseTimeToLiveResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseTimeToLiveResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseTimeToLiveResponse.Merge(m, src)\n}\nfunc (m *LeaseTimeToLiveResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseTimeToLiveResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseTimeToLiveResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseTimeToLiveResponse proto.InternalMessageInfo\n\nfunc (m *LeaseTimeToLiveResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *LeaseTimeToLiveResponse) GetID() int64 {\n\tif m != nil {\n\t\treturn m.ID\n\t}\n\treturn 0\n}\n\nfunc (m *LeaseTimeToLiveResponse) GetTTL() int64 {\n\tif m != nil {\n\t\treturn m.TTL\n\t}\n\treturn 0\n}\n\nfunc (m *LeaseTimeToLiveResponse) GetGrantedTTL() int64 {\n\tif m != nil {\n\t\treturn m.GrantedTTL\n\t}\n\treturn 0\n}\n\nfunc (m *LeaseTimeToLiveResponse) GetKeys() [][]byte {\n\tif m != nil {\n\t\treturn m.Keys\n\t}\n\treturn nil\n}\n\ntype LeaseLeasesRequest struct {\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *LeaseLeasesRequest) Reset()         { *m = LeaseLeasesRequest{} }\nfunc (m *LeaseLeasesRequest) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseLeasesRequest) ProtoMessage()    {}\nfunc (*LeaseLeasesRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{36}\n}\nfunc (m *LeaseLeasesRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseLeasesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseLeasesRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseLeasesRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseLeasesRequest.Merge(m, src)\n}\nfunc (m *LeaseLeasesRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseLeasesRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseLeasesRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseLeasesRequest proto.InternalMessageInfo\n\ntype LeaseStatus struct {\n\tID                   int64    `protobuf:\"varint,1,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *LeaseStatus) Reset()         { *m = LeaseStatus{} }\nfunc (m *LeaseStatus) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseStatus) ProtoMessage()    {}\nfunc (*LeaseStatus) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{37}\n}\nfunc (m *LeaseStatus) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseStatus.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseStatus) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseStatus.Merge(m, src)\n}\nfunc (m *LeaseStatus) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseStatus) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseStatus.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseStatus proto.InternalMessageInfo\n\nfunc (m *LeaseStatus) GetID() int64 {\n\tif m != nil {\n\t\treturn m.ID\n\t}\n\treturn 0\n}\n\ntype LeaseLeasesResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tLeases               []*LeaseStatus  `protobuf:\"bytes,2,rep,name=leases,proto3\" json:\"leases,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *LeaseLeasesResponse) Reset()         { *m = LeaseLeasesResponse{} }\nfunc (m *LeaseLeasesResponse) String() string { return proto.CompactTextString(m) }\nfunc (*LeaseLeasesResponse) ProtoMessage()    {}\nfunc (*LeaseLeasesResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{38}\n}\nfunc (m *LeaseLeasesResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LeaseLeasesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LeaseLeasesResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LeaseLeasesResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LeaseLeasesResponse.Merge(m, src)\n}\nfunc (m *LeaseLeasesResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LeaseLeasesResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_LeaseLeasesResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LeaseLeasesResponse proto.InternalMessageInfo\n\nfunc (m *LeaseLeasesResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *LeaseLeasesResponse) GetLeases() []*LeaseStatus {\n\tif m != nil {\n\t\treturn m.Leases\n\t}\n\treturn nil\n}\n\ntype Member struct {\n\t// ID is the member ID for this member.\n\tID uint64 `protobuf:\"varint,1,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\t// name is the human-readable name of the member. If the member is not started, the name will be an empty string.\n\tName string `protobuf:\"bytes,2,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// peerURLs is the list of URLs the member exposes to the cluster for communication.\n\tPeerURLs []string `protobuf:\"bytes,3,rep,name=peerURLs,proto3\" json:\"peerURLs,omitempty\"`\n\t// clientURLs is the list of URLs the member exposes to clients for communication. If the member is not started, clientURLs will be empty.\n\tClientURLs []string `protobuf:\"bytes,4,rep,name=clientURLs,proto3\" json:\"clientURLs,omitempty\"`\n\t// isLearner indicates if the member is raft learner.\n\tIsLearner            bool     `protobuf:\"varint,5,opt,name=isLearner,proto3\" json:\"isLearner,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *Member) Reset()         { *m = Member{} }\nfunc (m *Member) String() string { return proto.CompactTextString(m) }\nfunc (*Member) ProtoMessage()    {}\nfunc (*Member) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{39}\n}\nfunc (m *Member) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Member) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Member.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Member) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Member.Merge(m, src)\n}\nfunc (m *Member) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Member) XXX_DiscardUnknown() {\n\txxx_messageInfo_Member.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Member proto.InternalMessageInfo\n\nfunc (m *Member) GetID() uint64 {\n\tif m != nil {\n\t\treturn m.ID\n\t}\n\treturn 0\n}\n\nfunc (m *Member) GetName() string {\n\tif m != nil {\n\t\treturn m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *Member) GetPeerURLs() []string {\n\tif m != nil {\n\t\treturn m.PeerURLs\n\t}\n\treturn nil\n}\n\nfunc (m *Member) GetClientURLs() []string {\n\tif m != nil {\n\t\treturn m.ClientURLs\n\t}\n\treturn nil\n}\n\nfunc (m *Member) GetIsLearner() bool {\n\tif m != nil {\n\t\treturn m.IsLearner\n\t}\n\treturn false\n}\n\ntype MemberAddRequest struct {\n\t// peerURLs is the list of URLs the added member will use to communicate with the cluster.\n\tPeerURLs []string `protobuf:\"bytes,1,rep,name=peerURLs,proto3\" json:\"peerURLs,omitempty\"`\n\t// isLearner indicates if the added member is raft learner.\n\tIsLearner            bool     `protobuf:\"varint,2,opt,name=isLearner,proto3\" json:\"isLearner,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *MemberAddRequest) Reset()         { *m = MemberAddRequest{} }\nfunc (m *MemberAddRequest) String() string { return proto.CompactTextString(m) }\nfunc (*MemberAddRequest) ProtoMessage()    {}\nfunc (*MemberAddRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{40}\n}\nfunc (m *MemberAddRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MemberAddRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MemberAddRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MemberAddRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MemberAddRequest.Merge(m, src)\n}\nfunc (m *MemberAddRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MemberAddRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_MemberAddRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MemberAddRequest proto.InternalMessageInfo\n\nfunc (m *MemberAddRequest) GetPeerURLs() []string {\n\tif m != nil {\n\t\treturn m.PeerURLs\n\t}\n\treturn nil\n}\n\nfunc (m *MemberAddRequest) GetIsLearner() bool {\n\tif m != nil {\n\t\treturn m.IsLearner\n\t}\n\treturn false\n}\n\ntype MemberAddResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// member is the member information for the added member.\n\tMember *Member `protobuf:\"bytes,2,opt,name=member,proto3\" json:\"member,omitempty\"`\n\t// members is a list of all members after adding the new member.\n\tMembers              []*Member `protobuf:\"bytes,3,rep,name=members,proto3\" json:\"members,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}  `json:\"-\"`\n\tXXX_unrecognized     []byte    `json:\"-\"`\n\tXXX_sizecache        int32     `json:\"-\"`\n}\n\nfunc (m *MemberAddResponse) Reset()         { *m = MemberAddResponse{} }\nfunc (m *MemberAddResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MemberAddResponse) ProtoMessage()    {}\nfunc (*MemberAddResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{41}\n}\nfunc (m *MemberAddResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MemberAddResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MemberAddResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MemberAddResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MemberAddResponse.Merge(m, src)\n}\nfunc (m *MemberAddResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MemberAddResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MemberAddResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MemberAddResponse proto.InternalMessageInfo\n\nfunc (m *MemberAddResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *MemberAddResponse) GetMember() *Member {\n\tif m != nil {\n\t\treturn m.Member\n\t}\n\treturn nil\n}\n\nfunc (m *MemberAddResponse) GetMembers() []*Member {\n\tif m != nil {\n\t\treturn m.Members\n\t}\n\treturn nil\n}\n\ntype MemberRemoveRequest struct {\n\t// ID is the member ID of the member to remove.\n\tID                   uint64   `protobuf:\"varint,1,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *MemberRemoveRequest) Reset()         { *m = MemberRemoveRequest{} }\nfunc (m *MemberRemoveRequest) String() string { return proto.CompactTextString(m) }\nfunc (*MemberRemoveRequest) ProtoMessage()    {}\nfunc (*MemberRemoveRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{42}\n}\nfunc (m *MemberRemoveRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MemberRemoveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MemberRemoveRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MemberRemoveRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MemberRemoveRequest.Merge(m, src)\n}\nfunc (m *MemberRemoveRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MemberRemoveRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_MemberRemoveRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MemberRemoveRequest proto.InternalMessageInfo\n\nfunc (m *MemberRemoveRequest) GetID() uint64 {\n\tif m != nil {\n\t\treturn m.ID\n\t}\n\treturn 0\n}\n\ntype MemberRemoveResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// members is a list of all members after removing the member.\n\tMembers              []*Member `protobuf:\"bytes,2,rep,name=members,proto3\" json:\"members,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}  `json:\"-\"`\n\tXXX_unrecognized     []byte    `json:\"-\"`\n\tXXX_sizecache        int32     `json:\"-\"`\n}\n\nfunc (m *MemberRemoveResponse) Reset()         { *m = MemberRemoveResponse{} }\nfunc (m *MemberRemoveResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MemberRemoveResponse) ProtoMessage()    {}\nfunc (*MemberRemoveResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{43}\n}\nfunc (m *MemberRemoveResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MemberRemoveResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MemberRemoveResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MemberRemoveResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MemberRemoveResponse.Merge(m, src)\n}\nfunc (m *MemberRemoveResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MemberRemoveResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MemberRemoveResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MemberRemoveResponse proto.InternalMessageInfo\n\nfunc (m *MemberRemoveResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *MemberRemoveResponse) GetMembers() []*Member {\n\tif m != nil {\n\t\treturn m.Members\n\t}\n\treturn nil\n}\n\ntype MemberUpdateRequest struct {\n\t// ID is the member ID of the member to update.\n\tID uint64 `protobuf:\"varint,1,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\t// peerURLs is the new list of URLs the member will use to communicate with the cluster.\n\tPeerURLs             []string `protobuf:\"bytes,2,rep,name=peerURLs,proto3\" json:\"peerURLs,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *MemberUpdateRequest) Reset()         { *m = MemberUpdateRequest{} }\nfunc (m *MemberUpdateRequest) String() string { return proto.CompactTextString(m) }\nfunc (*MemberUpdateRequest) ProtoMessage()    {}\nfunc (*MemberUpdateRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{44}\n}\nfunc (m *MemberUpdateRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MemberUpdateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MemberUpdateRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MemberUpdateRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MemberUpdateRequest.Merge(m, src)\n}\nfunc (m *MemberUpdateRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MemberUpdateRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_MemberUpdateRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MemberUpdateRequest proto.InternalMessageInfo\n\nfunc (m *MemberUpdateRequest) GetID() uint64 {\n\tif m != nil {\n\t\treturn m.ID\n\t}\n\treturn 0\n}\n\nfunc (m *MemberUpdateRequest) GetPeerURLs() []string {\n\tif m != nil {\n\t\treturn m.PeerURLs\n\t}\n\treturn nil\n}\n\ntype MemberUpdateResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// members is a list of all members after updating the member.\n\tMembers              []*Member `protobuf:\"bytes,2,rep,name=members,proto3\" json:\"members,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}  `json:\"-\"`\n\tXXX_unrecognized     []byte    `json:\"-\"`\n\tXXX_sizecache        int32     `json:\"-\"`\n}\n\nfunc (m *MemberUpdateResponse) Reset()         { *m = MemberUpdateResponse{} }\nfunc (m *MemberUpdateResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MemberUpdateResponse) ProtoMessage()    {}\nfunc (*MemberUpdateResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{45}\n}\nfunc (m *MemberUpdateResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MemberUpdateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MemberUpdateResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MemberUpdateResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MemberUpdateResponse.Merge(m, src)\n}\nfunc (m *MemberUpdateResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MemberUpdateResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MemberUpdateResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MemberUpdateResponse proto.InternalMessageInfo\n\nfunc (m *MemberUpdateResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *MemberUpdateResponse) GetMembers() []*Member {\n\tif m != nil {\n\t\treturn m.Members\n\t}\n\treturn nil\n}\n\ntype MemberListRequest struct {\n\tLinearizable         bool     `protobuf:\"varint,1,opt,name=linearizable,proto3\" json:\"linearizable,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *MemberListRequest) Reset()         { *m = MemberListRequest{} }\nfunc (m *MemberListRequest) String() string { return proto.CompactTextString(m) }\nfunc (*MemberListRequest) ProtoMessage()    {}\nfunc (*MemberListRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{46}\n}\nfunc (m *MemberListRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MemberListRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MemberListRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MemberListRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MemberListRequest.Merge(m, src)\n}\nfunc (m *MemberListRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MemberListRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_MemberListRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MemberListRequest proto.InternalMessageInfo\n\nfunc (m *MemberListRequest) GetLinearizable() bool {\n\tif m != nil {\n\t\treturn m.Linearizable\n\t}\n\treturn false\n}\n\ntype MemberListResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// members is a list of all members associated with the cluster.\n\tMembers              []*Member `protobuf:\"bytes,2,rep,name=members,proto3\" json:\"members,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}  `json:\"-\"`\n\tXXX_unrecognized     []byte    `json:\"-\"`\n\tXXX_sizecache        int32     `json:\"-\"`\n}\n\nfunc (m *MemberListResponse) Reset()         { *m = MemberListResponse{} }\nfunc (m *MemberListResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MemberListResponse) ProtoMessage()    {}\nfunc (*MemberListResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{47}\n}\nfunc (m *MemberListResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MemberListResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MemberListResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MemberListResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MemberListResponse.Merge(m, src)\n}\nfunc (m *MemberListResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MemberListResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MemberListResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MemberListResponse proto.InternalMessageInfo\n\nfunc (m *MemberListResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *MemberListResponse) GetMembers() []*Member {\n\tif m != nil {\n\t\treturn m.Members\n\t}\n\treturn nil\n}\n\ntype MemberPromoteRequest struct {\n\t// ID is the member ID of the member to promote.\n\tID                   uint64   `protobuf:\"varint,1,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *MemberPromoteRequest) Reset()         { *m = MemberPromoteRequest{} }\nfunc (m *MemberPromoteRequest) String() string { return proto.CompactTextString(m) }\nfunc (*MemberPromoteRequest) ProtoMessage()    {}\nfunc (*MemberPromoteRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{48}\n}\nfunc (m *MemberPromoteRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MemberPromoteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MemberPromoteRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MemberPromoteRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MemberPromoteRequest.Merge(m, src)\n}\nfunc (m *MemberPromoteRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MemberPromoteRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_MemberPromoteRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MemberPromoteRequest proto.InternalMessageInfo\n\nfunc (m *MemberPromoteRequest) GetID() uint64 {\n\tif m != nil {\n\t\treturn m.ID\n\t}\n\treturn 0\n}\n\ntype MemberPromoteResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// members is a list of all members after promoting the member.\n\tMembers              []*Member `protobuf:\"bytes,2,rep,name=members,proto3\" json:\"members,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}  `json:\"-\"`\n\tXXX_unrecognized     []byte    `json:\"-\"`\n\tXXX_sizecache        int32     `json:\"-\"`\n}\n\nfunc (m *MemberPromoteResponse) Reset()         { *m = MemberPromoteResponse{} }\nfunc (m *MemberPromoteResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MemberPromoteResponse) ProtoMessage()    {}\nfunc (*MemberPromoteResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{49}\n}\nfunc (m *MemberPromoteResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MemberPromoteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MemberPromoteResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MemberPromoteResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MemberPromoteResponse.Merge(m, src)\n}\nfunc (m *MemberPromoteResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MemberPromoteResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MemberPromoteResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MemberPromoteResponse proto.InternalMessageInfo\n\nfunc (m *MemberPromoteResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *MemberPromoteResponse) GetMembers() []*Member {\n\tif m != nil {\n\t\treturn m.Members\n\t}\n\treturn nil\n}\n\ntype DefragmentRequest struct {\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *DefragmentRequest) Reset()         { *m = DefragmentRequest{} }\nfunc (m *DefragmentRequest) String() string { return proto.CompactTextString(m) }\nfunc (*DefragmentRequest) ProtoMessage()    {}\nfunc (*DefragmentRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{50}\n}\nfunc (m *DefragmentRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *DefragmentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_DefragmentRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *DefragmentRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DefragmentRequest.Merge(m, src)\n}\nfunc (m *DefragmentRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *DefragmentRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_DefragmentRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DefragmentRequest proto.InternalMessageInfo\n\ntype DefragmentResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *DefragmentResponse) Reset()         { *m = DefragmentResponse{} }\nfunc (m *DefragmentResponse) String() string { return proto.CompactTextString(m) }\nfunc (*DefragmentResponse) ProtoMessage()    {}\nfunc (*DefragmentResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{51}\n}\nfunc (m *DefragmentResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *DefragmentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_DefragmentResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *DefragmentResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DefragmentResponse.Merge(m, src)\n}\nfunc (m *DefragmentResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *DefragmentResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_DefragmentResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DefragmentResponse proto.InternalMessageInfo\n\nfunc (m *DefragmentResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype MoveLeaderRequest struct {\n\t// targetID is the node ID for the new leader.\n\tTargetID             uint64   `protobuf:\"varint,1,opt,name=targetID,proto3\" json:\"targetID,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *MoveLeaderRequest) Reset()         { *m = MoveLeaderRequest{} }\nfunc (m *MoveLeaderRequest) String() string { return proto.CompactTextString(m) }\nfunc (*MoveLeaderRequest) ProtoMessage()    {}\nfunc (*MoveLeaderRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{52}\n}\nfunc (m *MoveLeaderRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MoveLeaderRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MoveLeaderRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MoveLeaderRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MoveLeaderRequest.Merge(m, src)\n}\nfunc (m *MoveLeaderRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MoveLeaderRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_MoveLeaderRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MoveLeaderRequest proto.InternalMessageInfo\n\nfunc (m *MoveLeaderRequest) GetTargetID() uint64 {\n\tif m != nil {\n\t\treturn m.TargetID\n\t}\n\treturn 0\n}\n\ntype MoveLeaderResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *MoveLeaderResponse) Reset()         { *m = MoveLeaderResponse{} }\nfunc (m *MoveLeaderResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MoveLeaderResponse) ProtoMessage()    {}\nfunc (*MoveLeaderResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{53}\n}\nfunc (m *MoveLeaderResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MoveLeaderResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MoveLeaderResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MoveLeaderResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MoveLeaderResponse.Merge(m, src)\n}\nfunc (m *MoveLeaderResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MoveLeaderResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MoveLeaderResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MoveLeaderResponse proto.InternalMessageInfo\n\nfunc (m *MoveLeaderResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype AlarmRequest struct {\n\t// action is the kind of alarm request to issue. The action\n\t// may GET alarm statuses, ACTIVATE an alarm, or DEACTIVATE a\n\t// raised alarm.\n\tAction AlarmRequest_AlarmAction `protobuf:\"varint,1,opt,name=action,proto3,enum=etcdserverpb.AlarmRequest_AlarmAction\" json:\"action,omitempty\"`\n\t// memberID is the ID of the member associated with the alarm. If memberID is 0, the\n\t// alarm request covers all members.\n\tMemberID uint64 `protobuf:\"varint,2,opt,name=memberID,proto3\" json:\"memberID,omitempty\"`\n\t// alarm is the type of alarm to consider for this request.\n\tAlarm                AlarmType `protobuf:\"varint,3,opt,name=alarm,proto3,enum=etcdserverpb.AlarmType\" json:\"alarm,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}  `json:\"-\"`\n\tXXX_unrecognized     []byte    `json:\"-\"`\n\tXXX_sizecache        int32     `json:\"-\"`\n}\n\nfunc (m *AlarmRequest) Reset()         { *m = AlarmRequest{} }\nfunc (m *AlarmRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AlarmRequest) ProtoMessage()    {}\nfunc (*AlarmRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{54}\n}\nfunc (m *AlarmRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AlarmRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AlarmRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AlarmRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AlarmRequest.Merge(m, src)\n}\nfunc (m *AlarmRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AlarmRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AlarmRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AlarmRequest proto.InternalMessageInfo\n\nfunc (m *AlarmRequest) GetAction() AlarmRequest_AlarmAction {\n\tif m != nil {\n\t\treturn m.Action\n\t}\n\treturn AlarmRequest_GET\n}\n\nfunc (m *AlarmRequest) GetMemberID() uint64 {\n\tif m != nil {\n\t\treturn m.MemberID\n\t}\n\treturn 0\n}\n\nfunc (m *AlarmRequest) GetAlarm() AlarmType {\n\tif m != nil {\n\t\treturn m.Alarm\n\t}\n\treturn AlarmType_NONE\n}\n\ntype AlarmMember struct {\n\t// memberID is the ID of the member associated with the raised alarm.\n\tMemberID uint64 `protobuf:\"varint,1,opt,name=memberID,proto3\" json:\"memberID,omitempty\"`\n\t// alarm is the type of alarm which has been raised.\n\tAlarm                AlarmType `protobuf:\"varint,2,opt,name=alarm,proto3,enum=etcdserverpb.AlarmType\" json:\"alarm,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}  `json:\"-\"`\n\tXXX_unrecognized     []byte    `json:\"-\"`\n\tXXX_sizecache        int32     `json:\"-\"`\n}\n\nfunc (m *AlarmMember) Reset()         { *m = AlarmMember{} }\nfunc (m *AlarmMember) String() string { return proto.CompactTextString(m) }\nfunc (*AlarmMember) ProtoMessage()    {}\nfunc (*AlarmMember) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{55}\n}\nfunc (m *AlarmMember) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AlarmMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AlarmMember.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AlarmMember) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AlarmMember.Merge(m, src)\n}\nfunc (m *AlarmMember) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AlarmMember) XXX_DiscardUnknown() {\n\txxx_messageInfo_AlarmMember.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AlarmMember proto.InternalMessageInfo\n\nfunc (m *AlarmMember) GetMemberID() uint64 {\n\tif m != nil {\n\t\treturn m.MemberID\n\t}\n\treturn 0\n}\n\nfunc (m *AlarmMember) GetAlarm() AlarmType {\n\tif m != nil {\n\t\treturn m.Alarm\n\t}\n\treturn AlarmType_NONE\n}\n\ntype AlarmResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// alarms is a list of alarms associated with the alarm request.\n\tAlarms               []*AlarmMember `protobuf:\"bytes,2,rep,name=alarms,proto3\" json:\"alarms,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}       `json:\"-\"`\n\tXXX_unrecognized     []byte         `json:\"-\"`\n\tXXX_sizecache        int32          `json:\"-\"`\n}\n\nfunc (m *AlarmResponse) Reset()         { *m = AlarmResponse{} }\nfunc (m *AlarmResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AlarmResponse) ProtoMessage()    {}\nfunc (*AlarmResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{56}\n}\nfunc (m *AlarmResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AlarmResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AlarmResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AlarmResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AlarmResponse.Merge(m, src)\n}\nfunc (m *AlarmResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AlarmResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AlarmResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AlarmResponse proto.InternalMessageInfo\n\nfunc (m *AlarmResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *AlarmResponse) GetAlarms() []*AlarmMember {\n\tif m != nil {\n\t\treturn m.Alarms\n\t}\n\treturn nil\n}\n\ntype DowngradeRequest struct {\n\t// action is the kind of downgrade request to issue. The action may\n\t// VALIDATE the target version, DOWNGRADE the cluster version,\n\t// or CANCEL the current downgrading job.\n\tAction DowngradeRequest_DowngradeAction `protobuf:\"varint,1,opt,name=action,proto3,enum=etcdserverpb.DowngradeRequest_DowngradeAction\" json:\"action,omitempty\"`\n\t// version is the target version to downgrade.\n\tVersion              string   `protobuf:\"bytes,2,opt,name=version,proto3\" json:\"version,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *DowngradeRequest) Reset()         { *m = DowngradeRequest{} }\nfunc (m *DowngradeRequest) String() string { return proto.CompactTextString(m) }\nfunc (*DowngradeRequest) ProtoMessage()    {}\nfunc (*DowngradeRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{57}\n}\nfunc (m *DowngradeRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *DowngradeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_DowngradeRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *DowngradeRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DowngradeRequest.Merge(m, src)\n}\nfunc (m *DowngradeRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *DowngradeRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_DowngradeRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DowngradeRequest proto.InternalMessageInfo\n\nfunc (m *DowngradeRequest) GetAction() DowngradeRequest_DowngradeAction {\n\tif m != nil {\n\t\treturn m.Action\n\t}\n\treturn DowngradeRequest_VALIDATE\n}\n\nfunc (m *DowngradeRequest) GetVersion() string {\n\tif m != nil {\n\t\treturn m.Version\n\t}\n\treturn \"\"\n}\n\ntype DowngradeResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// version is the current cluster version.\n\tVersion              string   `protobuf:\"bytes,2,opt,name=version,proto3\" json:\"version,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *DowngradeResponse) Reset()         { *m = DowngradeResponse{} }\nfunc (m *DowngradeResponse) String() string { return proto.CompactTextString(m) }\nfunc (*DowngradeResponse) ProtoMessage()    {}\nfunc (*DowngradeResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{58}\n}\nfunc (m *DowngradeResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *DowngradeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_DowngradeResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *DowngradeResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DowngradeResponse.Merge(m, src)\n}\nfunc (m *DowngradeResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *DowngradeResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_DowngradeResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DowngradeResponse proto.InternalMessageInfo\n\nfunc (m *DowngradeResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *DowngradeResponse) GetVersion() string {\n\tif m != nil {\n\t\treturn m.Version\n\t}\n\treturn \"\"\n}\n\ntype StatusRequest struct {\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *StatusRequest) Reset()         { *m = StatusRequest{} }\nfunc (m *StatusRequest) String() string { return proto.CompactTextString(m) }\nfunc (*StatusRequest) ProtoMessage()    {}\nfunc (*StatusRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{59}\n}\nfunc (m *StatusRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *StatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_StatusRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *StatusRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_StatusRequest.Merge(m, src)\n}\nfunc (m *StatusRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *StatusRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_StatusRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_StatusRequest proto.InternalMessageInfo\n\ntype StatusResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// version is the cluster protocol version used by the responding member.\n\tVersion string `protobuf:\"bytes,2,opt,name=version,proto3\" json:\"version,omitempty\"`\n\t// dbSize is the size of the backend database physically allocated, in bytes, of the responding member.\n\tDbSize int64 `protobuf:\"varint,3,opt,name=dbSize,proto3\" json:\"dbSize,omitempty\"`\n\t// leader is the member ID which the responding member believes is the current leader.\n\tLeader uint64 `protobuf:\"varint,4,opt,name=leader,proto3\" json:\"leader,omitempty\"`\n\t// raftIndex is the current raft committed index of the responding member.\n\tRaftIndex uint64 `protobuf:\"varint,5,opt,name=raftIndex,proto3\" json:\"raftIndex,omitempty\"`\n\t// raftTerm is the current raft term of the responding member.\n\tRaftTerm uint64 `protobuf:\"varint,6,opt,name=raftTerm,proto3\" json:\"raftTerm,omitempty\"`\n\t// raftAppliedIndex is the current raft applied index of the responding member.\n\tRaftAppliedIndex uint64 `protobuf:\"varint,7,opt,name=raftAppliedIndex,proto3\" json:\"raftAppliedIndex,omitempty\"`\n\t// errors contains alarm/health information and status.\n\tErrors []string `protobuf:\"bytes,8,rep,name=errors,proto3\" json:\"errors,omitempty\"`\n\t// dbSizeInUse is the size of the backend database logically in use, in bytes, of the responding member.\n\tDbSizeInUse int64 `protobuf:\"varint,9,opt,name=dbSizeInUse,proto3\" json:\"dbSizeInUse,omitempty\"`\n\t// isLearner indicates if the member is raft learner.\n\tIsLearner            bool     `protobuf:\"varint,10,opt,name=isLearner,proto3\" json:\"isLearner,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *StatusResponse) Reset()         { *m = StatusResponse{} }\nfunc (m *StatusResponse) String() string { return proto.CompactTextString(m) }\nfunc (*StatusResponse) ProtoMessage()    {}\nfunc (*StatusResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{60}\n}\nfunc (m *StatusResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *StatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_StatusResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *StatusResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_StatusResponse.Merge(m, src)\n}\nfunc (m *StatusResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *StatusResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_StatusResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_StatusResponse proto.InternalMessageInfo\n\nfunc (m *StatusResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *StatusResponse) GetVersion() string {\n\tif m != nil {\n\t\treturn m.Version\n\t}\n\treturn \"\"\n}\n\nfunc (m *StatusResponse) GetDbSize() int64 {\n\tif m != nil {\n\t\treturn m.DbSize\n\t}\n\treturn 0\n}\n\nfunc (m *StatusResponse) GetLeader() uint64 {\n\tif m != nil {\n\t\treturn m.Leader\n\t}\n\treturn 0\n}\n\nfunc (m *StatusResponse) GetRaftIndex() uint64 {\n\tif m != nil {\n\t\treturn m.RaftIndex\n\t}\n\treturn 0\n}\n\nfunc (m *StatusResponse) GetRaftTerm() uint64 {\n\tif m != nil {\n\t\treturn m.RaftTerm\n\t}\n\treturn 0\n}\n\nfunc (m *StatusResponse) GetRaftAppliedIndex() uint64 {\n\tif m != nil {\n\t\treturn m.RaftAppliedIndex\n\t}\n\treturn 0\n}\n\nfunc (m *StatusResponse) GetErrors() []string {\n\tif m != nil {\n\t\treturn m.Errors\n\t}\n\treturn nil\n}\n\nfunc (m *StatusResponse) GetDbSizeInUse() int64 {\n\tif m != nil {\n\t\treturn m.DbSizeInUse\n\t}\n\treturn 0\n}\n\nfunc (m *StatusResponse) GetIsLearner() bool {\n\tif m != nil {\n\t\treturn m.IsLearner\n\t}\n\treturn false\n}\n\ntype AuthEnableRequest struct {\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthEnableRequest) Reset()         { *m = AuthEnableRequest{} }\nfunc (m *AuthEnableRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthEnableRequest) ProtoMessage()    {}\nfunc (*AuthEnableRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{61}\n}\nfunc (m *AuthEnableRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthEnableRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthEnableRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthEnableRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthEnableRequest.Merge(m, src)\n}\nfunc (m *AuthEnableRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthEnableRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthEnableRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthEnableRequest proto.InternalMessageInfo\n\ntype AuthDisableRequest struct {\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthDisableRequest) Reset()         { *m = AuthDisableRequest{} }\nfunc (m *AuthDisableRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthDisableRequest) ProtoMessage()    {}\nfunc (*AuthDisableRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{62}\n}\nfunc (m *AuthDisableRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthDisableRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthDisableRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthDisableRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthDisableRequest.Merge(m, src)\n}\nfunc (m *AuthDisableRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthDisableRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthDisableRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthDisableRequest proto.InternalMessageInfo\n\ntype AuthStatusRequest struct {\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthStatusRequest) Reset()         { *m = AuthStatusRequest{} }\nfunc (m *AuthStatusRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthStatusRequest) ProtoMessage()    {}\nfunc (*AuthStatusRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{63}\n}\nfunc (m *AuthStatusRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthStatusRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthStatusRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthStatusRequest.Merge(m, src)\n}\nfunc (m *AuthStatusRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthStatusRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthStatusRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthStatusRequest proto.InternalMessageInfo\n\ntype AuthenticateRequest struct {\n\tName                 string   `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tPassword             string   `protobuf:\"bytes,2,opt,name=password,proto3\" json:\"password,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthenticateRequest) Reset()         { *m = AuthenticateRequest{} }\nfunc (m *AuthenticateRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthenticateRequest) ProtoMessage()    {}\nfunc (*AuthenticateRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{64}\n}\nfunc (m *AuthenticateRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthenticateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthenticateRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthenticateRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthenticateRequest.Merge(m, src)\n}\nfunc (m *AuthenticateRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthenticateRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthenticateRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthenticateRequest proto.InternalMessageInfo\n\nfunc (m *AuthenticateRequest) GetName() string {\n\tif m != nil {\n\t\treturn m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *AuthenticateRequest) GetPassword() string {\n\tif m != nil {\n\t\treturn m.Password\n\t}\n\treturn \"\"\n}\n\ntype AuthUserAddRequest struct {\n\tName                 string                 `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tPassword             string                 `protobuf:\"bytes,2,opt,name=password,proto3\" json:\"password,omitempty\"`\n\tOptions              *authpb.UserAddOptions `protobuf:\"bytes,3,opt,name=options,proto3\" json:\"options,omitempty\"`\n\tHashedPassword       string                 `protobuf:\"bytes,4,opt,name=hashedPassword,proto3\" json:\"hashedPassword,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}               `json:\"-\"`\n\tXXX_unrecognized     []byte                 `json:\"-\"`\n\tXXX_sizecache        int32                  `json:\"-\"`\n}\n\nfunc (m *AuthUserAddRequest) Reset()         { *m = AuthUserAddRequest{} }\nfunc (m *AuthUserAddRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserAddRequest) ProtoMessage()    {}\nfunc (*AuthUserAddRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{65}\n}\nfunc (m *AuthUserAddRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserAddRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserAddRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserAddRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserAddRequest.Merge(m, src)\n}\nfunc (m *AuthUserAddRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserAddRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserAddRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserAddRequest proto.InternalMessageInfo\n\nfunc (m *AuthUserAddRequest) GetName() string {\n\tif m != nil {\n\t\treturn m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *AuthUserAddRequest) GetPassword() string {\n\tif m != nil {\n\t\treturn m.Password\n\t}\n\treturn \"\"\n}\n\nfunc (m *AuthUserAddRequest) GetOptions() *authpb.UserAddOptions {\n\tif m != nil {\n\t\treturn m.Options\n\t}\n\treturn nil\n}\n\nfunc (m *AuthUserAddRequest) GetHashedPassword() string {\n\tif m != nil {\n\t\treturn m.HashedPassword\n\t}\n\treturn \"\"\n}\n\ntype AuthUserGetRequest struct {\n\tName                 string   `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthUserGetRequest) Reset()         { *m = AuthUserGetRequest{} }\nfunc (m *AuthUserGetRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserGetRequest) ProtoMessage()    {}\nfunc (*AuthUserGetRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{66}\n}\nfunc (m *AuthUserGetRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserGetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserGetRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserGetRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserGetRequest.Merge(m, src)\n}\nfunc (m *AuthUserGetRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserGetRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserGetRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserGetRequest proto.InternalMessageInfo\n\nfunc (m *AuthUserGetRequest) GetName() string {\n\tif m != nil {\n\t\treturn m.Name\n\t}\n\treturn \"\"\n}\n\ntype AuthUserDeleteRequest struct {\n\t// name is the name of the user to delete.\n\tName                 string   `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthUserDeleteRequest) Reset()         { *m = AuthUserDeleteRequest{} }\nfunc (m *AuthUserDeleteRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserDeleteRequest) ProtoMessage()    {}\nfunc (*AuthUserDeleteRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{67}\n}\nfunc (m *AuthUserDeleteRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserDeleteRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserDeleteRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserDeleteRequest.Merge(m, src)\n}\nfunc (m *AuthUserDeleteRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserDeleteRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserDeleteRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserDeleteRequest proto.InternalMessageInfo\n\nfunc (m *AuthUserDeleteRequest) GetName() string {\n\tif m != nil {\n\t\treturn m.Name\n\t}\n\treturn \"\"\n}\n\ntype AuthUserChangePasswordRequest struct {\n\t// name is the name of the user whose password is being changed.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// password is the new password for the user. Note that this field will be removed in the API layer.\n\tPassword string `protobuf:\"bytes,2,opt,name=password,proto3\" json:\"password,omitempty\"`\n\t// hashedPassword is the new password for the user. Note that this field will be initialized in the API layer.\n\tHashedPassword       string   `protobuf:\"bytes,3,opt,name=hashedPassword,proto3\" json:\"hashedPassword,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthUserChangePasswordRequest) Reset()         { *m = AuthUserChangePasswordRequest{} }\nfunc (m *AuthUserChangePasswordRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserChangePasswordRequest) ProtoMessage()    {}\nfunc (*AuthUserChangePasswordRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{68}\n}\nfunc (m *AuthUserChangePasswordRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserChangePasswordRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserChangePasswordRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserChangePasswordRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserChangePasswordRequest.Merge(m, src)\n}\nfunc (m *AuthUserChangePasswordRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserChangePasswordRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserChangePasswordRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserChangePasswordRequest proto.InternalMessageInfo\n\nfunc (m *AuthUserChangePasswordRequest) GetName() string {\n\tif m != nil {\n\t\treturn m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *AuthUserChangePasswordRequest) GetPassword() string {\n\tif m != nil {\n\t\treturn m.Password\n\t}\n\treturn \"\"\n}\n\nfunc (m *AuthUserChangePasswordRequest) GetHashedPassword() string {\n\tif m != nil {\n\t\treturn m.HashedPassword\n\t}\n\treturn \"\"\n}\n\ntype AuthUserGrantRoleRequest struct {\n\t// user is the name of the user which should be granted a given role.\n\tUser string `protobuf:\"bytes,1,opt,name=user,proto3\" json:\"user,omitempty\"`\n\t// role is the name of the role to grant to the user.\n\tRole                 string   `protobuf:\"bytes,2,opt,name=role,proto3\" json:\"role,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthUserGrantRoleRequest) Reset()         { *m = AuthUserGrantRoleRequest{} }\nfunc (m *AuthUserGrantRoleRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserGrantRoleRequest) ProtoMessage()    {}\nfunc (*AuthUserGrantRoleRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{69}\n}\nfunc (m *AuthUserGrantRoleRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserGrantRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserGrantRoleRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserGrantRoleRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserGrantRoleRequest.Merge(m, src)\n}\nfunc (m *AuthUserGrantRoleRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserGrantRoleRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserGrantRoleRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserGrantRoleRequest proto.InternalMessageInfo\n\nfunc (m *AuthUserGrantRoleRequest) GetUser() string {\n\tif m != nil {\n\t\treturn m.User\n\t}\n\treturn \"\"\n}\n\nfunc (m *AuthUserGrantRoleRequest) GetRole() string {\n\tif m != nil {\n\t\treturn m.Role\n\t}\n\treturn \"\"\n}\n\ntype AuthUserRevokeRoleRequest struct {\n\tName                 string   `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tRole                 string   `protobuf:\"bytes,2,opt,name=role,proto3\" json:\"role,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthUserRevokeRoleRequest) Reset()         { *m = AuthUserRevokeRoleRequest{} }\nfunc (m *AuthUserRevokeRoleRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserRevokeRoleRequest) ProtoMessage()    {}\nfunc (*AuthUserRevokeRoleRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{70}\n}\nfunc (m *AuthUserRevokeRoleRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserRevokeRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserRevokeRoleRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserRevokeRoleRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserRevokeRoleRequest.Merge(m, src)\n}\nfunc (m *AuthUserRevokeRoleRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserRevokeRoleRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserRevokeRoleRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserRevokeRoleRequest proto.InternalMessageInfo\n\nfunc (m *AuthUserRevokeRoleRequest) GetName() string {\n\tif m != nil {\n\t\treturn m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *AuthUserRevokeRoleRequest) GetRole() string {\n\tif m != nil {\n\t\treturn m.Role\n\t}\n\treturn \"\"\n}\n\ntype AuthRoleAddRequest struct {\n\t// name is the name of the role to add to the authentication system.\n\tName                 string   `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthRoleAddRequest) Reset()         { *m = AuthRoleAddRequest{} }\nfunc (m *AuthRoleAddRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthRoleAddRequest) ProtoMessage()    {}\nfunc (*AuthRoleAddRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{71}\n}\nfunc (m *AuthRoleAddRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthRoleAddRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthRoleAddRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthRoleAddRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthRoleAddRequest.Merge(m, src)\n}\nfunc (m *AuthRoleAddRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthRoleAddRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthRoleAddRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthRoleAddRequest proto.InternalMessageInfo\n\nfunc (m *AuthRoleAddRequest) GetName() string {\n\tif m != nil {\n\t\treturn m.Name\n\t}\n\treturn \"\"\n}\n\ntype AuthRoleGetRequest struct {\n\tRole                 string   `protobuf:\"bytes,1,opt,name=role,proto3\" json:\"role,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthRoleGetRequest) Reset()         { *m = AuthRoleGetRequest{} }\nfunc (m *AuthRoleGetRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthRoleGetRequest) ProtoMessage()    {}\nfunc (*AuthRoleGetRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{72}\n}\nfunc (m *AuthRoleGetRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthRoleGetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthRoleGetRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthRoleGetRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthRoleGetRequest.Merge(m, src)\n}\nfunc (m *AuthRoleGetRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthRoleGetRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthRoleGetRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthRoleGetRequest proto.InternalMessageInfo\n\nfunc (m *AuthRoleGetRequest) GetRole() string {\n\tif m != nil {\n\t\treturn m.Role\n\t}\n\treturn \"\"\n}\n\ntype AuthUserListRequest struct {\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthUserListRequest) Reset()         { *m = AuthUserListRequest{} }\nfunc (m *AuthUserListRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserListRequest) ProtoMessage()    {}\nfunc (*AuthUserListRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{73}\n}\nfunc (m *AuthUserListRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserListRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserListRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserListRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserListRequest.Merge(m, src)\n}\nfunc (m *AuthUserListRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserListRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserListRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserListRequest proto.InternalMessageInfo\n\ntype AuthRoleListRequest struct {\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthRoleListRequest) Reset()         { *m = AuthRoleListRequest{} }\nfunc (m *AuthRoleListRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthRoleListRequest) ProtoMessage()    {}\nfunc (*AuthRoleListRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{74}\n}\nfunc (m *AuthRoleListRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthRoleListRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthRoleListRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthRoleListRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthRoleListRequest.Merge(m, src)\n}\nfunc (m *AuthRoleListRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthRoleListRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthRoleListRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthRoleListRequest proto.InternalMessageInfo\n\ntype AuthRoleDeleteRequest struct {\n\tRole                 string   `protobuf:\"bytes,1,opt,name=role,proto3\" json:\"role,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthRoleDeleteRequest) Reset()         { *m = AuthRoleDeleteRequest{} }\nfunc (m *AuthRoleDeleteRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthRoleDeleteRequest) ProtoMessage()    {}\nfunc (*AuthRoleDeleteRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{75}\n}\nfunc (m *AuthRoleDeleteRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthRoleDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthRoleDeleteRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthRoleDeleteRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthRoleDeleteRequest.Merge(m, src)\n}\nfunc (m *AuthRoleDeleteRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthRoleDeleteRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthRoleDeleteRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthRoleDeleteRequest proto.InternalMessageInfo\n\nfunc (m *AuthRoleDeleteRequest) GetRole() string {\n\tif m != nil {\n\t\treturn m.Role\n\t}\n\treturn \"\"\n}\n\ntype AuthRoleGrantPermissionRequest struct {\n\t// name is the name of the role which will be granted the permission.\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\t// perm is the permission to grant to the role.\n\tPerm                 *authpb.Permission `protobuf:\"bytes,2,opt,name=perm,proto3\" json:\"perm,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}           `json:\"-\"`\n\tXXX_unrecognized     []byte             `json:\"-\"`\n\tXXX_sizecache        int32              `json:\"-\"`\n}\n\nfunc (m *AuthRoleGrantPermissionRequest) Reset()         { *m = AuthRoleGrantPermissionRequest{} }\nfunc (m *AuthRoleGrantPermissionRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthRoleGrantPermissionRequest) ProtoMessage()    {}\nfunc (*AuthRoleGrantPermissionRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{76}\n}\nfunc (m *AuthRoleGrantPermissionRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthRoleGrantPermissionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthRoleGrantPermissionRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthRoleGrantPermissionRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthRoleGrantPermissionRequest.Merge(m, src)\n}\nfunc (m *AuthRoleGrantPermissionRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthRoleGrantPermissionRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthRoleGrantPermissionRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthRoleGrantPermissionRequest proto.InternalMessageInfo\n\nfunc (m *AuthRoleGrantPermissionRequest) GetName() string {\n\tif m != nil {\n\t\treturn m.Name\n\t}\n\treturn \"\"\n}\n\nfunc (m *AuthRoleGrantPermissionRequest) GetPerm() *authpb.Permission {\n\tif m != nil {\n\t\treturn m.Perm\n\t}\n\treturn nil\n}\n\ntype AuthRoleRevokePermissionRequest struct {\n\tRole                 string   `protobuf:\"bytes,1,opt,name=role,proto3\" json:\"role,omitempty\"`\n\tKey                  []byte   `protobuf:\"bytes,2,opt,name=key,proto3\" json:\"key,omitempty\"`\n\tRangeEnd             []byte   `protobuf:\"bytes,3,opt,name=range_end,json=rangeEnd,proto3\" json:\"range_end,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthRoleRevokePermissionRequest) Reset()         { *m = AuthRoleRevokePermissionRequest{} }\nfunc (m *AuthRoleRevokePermissionRequest) String() string { return proto.CompactTextString(m) }\nfunc (*AuthRoleRevokePermissionRequest) ProtoMessage()    {}\nfunc (*AuthRoleRevokePermissionRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{77}\n}\nfunc (m *AuthRoleRevokePermissionRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthRoleRevokePermissionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthRoleRevokePermissionRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthRoleRevokePermissionRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthRoleRevokePermissionRequest.Merge(m, src)\n}\nfunc (m *AuthRoleRevokePermissionRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthRoleRevokePermissionRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthRoleRevokePermissionRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthRoleRevokePermissionRequest proto.InternalMessageInfo\n\nfunc (m *AuthRoleRevokePermissionRequest) GetRole() string {\n\tif m != nil {\n\t\treturn m.Role\n\t}\n\treturn \"\"\n}\n\nfunc (m *AuthRoleRevokePermissionRequest) GetKey() []byte {\n\tif m != nil {\n\t\treturn m.Key\n\t}\n\treturn nil\n}\n\nfunc (m *AuthRoleRevokePermissionRequest) GetRangeEnd() []byte {\n\tif m != nil {\n\t\treturn m.RangeEnd\n\t}\n\treturn nil\n}\n\ntype AuthEnableResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthEnableResponse) Reset()         { *m = AuthEnableResponse{} }\nfunc (m *AuthEnableResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthEnableResponse) ProtoMessage()    {}\nfunc (*AuthEnableResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{78}\n}\nfunc (m *AuthEnableResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthEnableResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthEnableResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthEnableResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthEnableResponse.Merge(m, src)\n}\nfunc (m *AuthEnableResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthEnableResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthEnableResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthEnableResponse proto.InternalMessageInfo\n\nfunc (m *AuthEnableResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype AuthDisableResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthDisableResponse) Reset()         { *m = AuthDisableResponse{} }\nfunc (m *AuthDisableResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthDisableResponse) ProtoMessage()    {}\nfunc (*AuthDisableResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{79}\n}\nfunc (m *AuthDisableResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthDisableResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthDisableResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthDisableResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthDisableResponse.Merge(m, src)\n}\nfunc (m *AuthDisableResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthDisableResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthDisableResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthDisableResponse proto.InternalMessageInfo\n\nfunc (m *AuthDisableResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype AuthStatusResponse struct {\n\tHeader  *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tEnabled bool            `protobuf:\"varint,2,opt,name=enabled,proto3\" json:\"enabled,omitempty\"`\n\t// authRevision is the current revision of auth store\n\tAuthRevision         uint64   `protobuf:\"varint,3,opt,name=authRevision,proto3\" json:\"authRevision,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthStatusResponse) Reset()         { *m = AuthStatusResponse{} }\nfunc (m *AuthStatusResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthStatusResponse) ProtoMessage()    {}\nfunc (*AuthStatusResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{80}\n}\nfunc (m *AuthStatusResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthStatusResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthStatusResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthStatusResponse.Merge(m, src)\n}\nfunc (m *AuthStatusResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthStatusResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthStatusResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthStatusResponse proto.InternalMessageInfo\n\nfunc (m *AuthStatusResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *AuthStatusResponse) GetEnabled() bool {\n\tif m != nil {\n\t\treturn m.Enabled\n\t}\n\treturn false\n}\n\nfunc (m *AuthStatusResponse) GetAuthRevision() uint64 {\n\tif m != nil {\n\t\treturn m.AuthRevision\n\t}\n\treturn 0\n}\n\ntype AuthenticateResponse struct {\n\tHeader *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\t// token is an authorized token that can be used in succeeding RPCs\n\tToken                string   `protobuf:\"bytes,2,opt,name=token,proto3\" json:\"token,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *AuthenticateResponse) Reset()         { *m = AuthenticateResponse{} }\nfunc (m *AuthenticateResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthenticateResponse) ProtoMessage()    {}\nfunc (*AuthenticateResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{81}\n}\nfunc (m *AuthenticateResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthenticateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthenticateResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthenticateResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthenticateResponse.Merge(m, src)\n}\nfunc (m *AuthenticateResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthenticateResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthenticateResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthenticateResponse proto.InternalMessageInfo\n\nfunc (m *AuthenticateResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *AuthenticateResponse) GetToken() string {\n\tif m != nil {\n\t\treturn m.Token\n\t}\n\treturn \"\"\n}\n\ntype AuthUserAddResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthUserAddResponse) Reset()         { *m = AuthUserAddResponse{} }\nfunc (m *AuthUserAddResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserAddResponse) ProtoMessage()    {}\nfunc (*AuthUserAddResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{82}\n}\nfunc (m *AuthUserAddResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserAddResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserAddResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserAddResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserAddResponse.Merge(m, src)\n}\nfunc (m *AuthUserAddResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserAddResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserAddResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserAddResponse proto.InternalMessageInfo\n\nfunc (m *AuthUserAddResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype AuthUserGetResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tRoles                []string        `protobuf:\"bytes,2,rep,name=roles,proto3\" json:\"roles,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthUserGetResponse) Reset()         { *m = AuthUserGetResponse{} }\nfunc (m *AuthUserGetResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserGetResponse) ProtoMessage()    {}\nfunc (*AuthUserGetResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{83}\n}\nfunc (m *AuthUserGetResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserGetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserGetResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserGetResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserGetResponse.Merge(m, src)\n}\nfunc (m *AuthUserGetResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserGetResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserGetResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserGetResponse proto.InternalMessageInfo\n\nfunc (m *AuthUserGetResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *AuthUserGetResponse) GetRoles() []string {\n\tif m != nil {\n\t\treturn m.Roles\n\t}\n\treturn nil\n}\n\ntype AuthUserDeleteResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthUserDeleteResponse) Reset()         { *m = AuthUserDeleteResponse{} }\nfunc (m *AuthUserDeleteResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserDeleteResponse) ProtoMessage()    {}\nfunc (*AuthUserDeleteResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{84}\n}\nfunc (m *AuthUserDeleteResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserDeleteResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserDeleteResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserDeleteResponse.Merge(m, src)\n}\nfunc (m *AuthUserDeleteResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserDeleteResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserDeleteResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserDeleteResponse proto.InternalMessageInfo\n\nfunc (m *AuthUserDeleteResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype AuthUserChangePasswordResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthUserChangePasswordResponse) Reset()         { *m = AuthUserChangePasswordResponse{} }\nfunc (m *AuthUserChangePasswordResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserChangePasswordResponse) ProtoMessage()    {}\nfunc (*AuthUserChangePasswordResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{85}\n}\nfunc (m *AuthUserChangePasswordResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserChangePasswordResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserChangePasswordResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserChangePasswordResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserChangePasswordResponse.Merge(m, src)\n}\nfunc (m *AuthUserChangePasswordResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserChangePasswordResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserChangePasswordResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserChangePasswordResponse proto.InternalMessageInfo\n\nfunc (m *AuthUserChangePasswordResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype AuthUserGrantRoleResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthUserGrantRoleResponse) Reset()         { *m = AuthUserGrantRoleResponse{} }\nfunc (m *AuthUserGrantRoleResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserGrantRoleResponse) ProtoMessage()    {}\nfunc (*AuthUserGrantRoleResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{86}\n}\nfunc (m *AuthUserGrantRoleResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserGrantRoleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserGrantRoleResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserGrantRoleResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserGrantRoleResponse.Merge(m, src)\n}\nfunc (m *AuthUserGrantRoleResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserGrantRoleResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserGrantRoleResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserGrantRoleResponse proto.InternalMessageInfo\n\nfunc (m *AuthUserGrantRoleResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype AuthUserRevokeRoleResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthUserRevokeRoleResponse) Reset()         { *m = AuthUserRevokeRoleResponse{} }\nfunc (m *AuthUserRevokeRoleResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserRevokeRoleResponse) ProtoMessage()    {}\nfunc (*AuthUserRevokeRoleResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{87}\n}\nfunc (m *AuthUserRevokeRoleResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserRevokeRoleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserRevokeRoleResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserRevokeRoleResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserRevokeRoleResponse.Merge(m, src)\n}\nfunc (m *AuthUserRevokeRoleResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserRevokeRoleResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserRevokeRoleResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserRevokeRoleResponse proto.InternalMessageInfo\n\nfunc (m *AuthUserRevokeRoleResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype AuthRoleAddResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthRoleAddResponse) Reset()         { *m = AuthRoleAddResponse{} }\nfunc (m *AuthRoleAddResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthRoleAddResponse) ProtoMessage()    {}\nfunc (*AuthRoleAddResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{88}\n}\nfunc (m *AuthRoleAddResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthRoleAddResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthRoleAddResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthRoleAddResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthRoleAddResponse.Merge(m, src)\n}\nfunc (m *AuthRoleAddResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthRoleAddResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthRoleAddResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthRoleAddResponse proto.InternalMessageInfo\n\nfunc (m *AuthRoleAddResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype AuthRoleGetResponse struct {\n\tHeader               *ResponseHeader      `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tPerm                 []*authpb.Permission `protobuf:\"bytes,2,rep,name=perm,proto3\" json:\"perm,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}             `json:\"-\"`\n\tXXX_unrecognized     []byte               `json:\"-\"`\n\tXXX_sizecache        int32                `json:\"-\"`\n}\n\nfunc (m *AuthRoleGetResponse) Reset()         { *m = AuthRoleGetResponse{} }\nfunc (m *AuthRoleGetResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthRoleGetResponse) ProtoMessage()    {}\nfunc (*AuthRoleGetResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{89}\n}\nfunc (m *AuthRoleGetResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthRoleGetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthRoleGetResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthRoleGetResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthRoleGetResponse.Merge(m, src)\n}\nfunc (m *AuthRoleGetResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthRoleGetResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthRoleGetResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthRoleGetResponse proto.InternalMessageInfo\n\nfunc (m *AuthRoleGetResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *AuthRoleGetResponse) GetPerm() []*authpb.Permission {\n\tif m != nil {\n\t\treturn m.Perm\n\t}\n\treturn nil\n}\n\ntype AuthRoleListResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tRoles                []string        `protobuf:\"bytes,2,rep,name=roles,proto3\" json:\"roles,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthRoleListResponse) Reset()         { *m = AuthRoleListResponse{} }\nfunc (m *AuthRoleListResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthRoleListResponse) ProtoMessage()    {}\nfunc (*AuthRoleListResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{90}\n}\nfunc (m *AuthRoleListResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthRoleListResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthRoleListResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthRoleListResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthRoleListResponse.Merge(m, src)\n}\nfunc (m *AuthRoleListResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthRoleListResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthRoleListResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthRoleListResponse proto.InternalMessageInfo\n\nfunc (m *AuthRoleListResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *AuthRoleListResponse) GetRoles() []string {\n\tif m != nil {\n\t\treturn m.Roles\n\t}\n\treturn nil\n}\n\ntype AuthUserListResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tUsers                []string        `protobuf:\"bytes,2,rep,name=users,proto3\" json:\"users,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthUserListResponse) Reset()         { *m = AuthUserListResponse{} }\nfunc (m *AuthUserListResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthUserListResponse) ProtoMessage()    {}\nfunc (*AuthUserListResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{91}\n}\nfunc (m *AuthUserListResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthUserListResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthUserListResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthUserListResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthUserListResponse.Merge(m, src)\n}\nfunc (m *AuthUserListResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthUserListResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthUserListResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthUserListResponse proto.InternalMessageInfo\n\nfunc (m *AuthUserListResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc (m *AuthUserListResponse) GetUsers() []string {\n\tif m != nil {\n\t\treturn m.Users\n\t}\n\treturn nil\n}\n\ntype AuthRoleDeleteResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthRoleDeleteResponse) Reset()         { *m = AuthRoleDeleteResponse{} }\nfunc (m *AuthRoleDeleteResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthRoleDeleteResponse) ProtoMessage()    {}\nfunc (*AuthRoleDeleteResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{92}\n}\nfunc (m *AuthRoleDeleteResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthRoleDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthRoleDeleteResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthRoleDeleteResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthRoleDeleteResponse.Merge(m, src)\n}\nfunc (m *AuthRoleDeleteResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthRoleDeleteResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthRoleDeleteResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthRoleDeleteResponse proto.InternalMessageInfo\n\nfunc (m *AuthRoleDeleteResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype AuthRoleGrantPermissionResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthRoleGrantPermissionResponse) Reset()         { *m = AuthRoleGrantPermissionResponse{} }\nfunc (m *AuthRoleGrantPermissionResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthRoleGrantPermissionResponse) ProtoMessage()    {}\nfunc (*AuthRoleGrantPermissionResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{93}\n}\nfunc (m *AuthRoleGrantPermissionResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthRoleGrantPermissionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthRoleGrantPermissionResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthRoleGrantPermissionResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthRoleGrantPermissionResponse.Merge(m, src)\n}\nfunc (m *AuthRoleGrantPermissionResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthRoleGrantPermissionResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthRoleGrantPermissionResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthRoleGrantPermissionResponse proto.InternalMessageInfo\n\nfunc (m *AuthRoleGrantPermissionResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\ntype AuthRoleRevokePermissionResponse struct {\n\tHeader               *ResponseHeader `protobuf:\"bytes,1,opt,name=header,proto3\" json:\"header,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *AuthRoleRevokePermissionResponse) Reset()         { *m = AuthRoleRevokePermissionResponse{} }\nfunc (m *AuthRoleRevokePermissionResponse) String() string { return proto.CompactTextString(m) }\nfunc (*AuthRoleRevokePermissionResponse) ProtoMessage()    {}\nfunc (*AuthRoleRevokePermissionResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_77a6da22d6a3feb1, []int{94}\n}\nfunc (m *AuthRoleRevokePermissionResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AuthRoleRevokePermissionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AuthRoleRevokePermissionResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AuthRoleRevokePermissionResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AuthRoleRevokePermissionResponse.Merge(m, src)\n}\nfunc (m *AuthRoleRevokePermissionResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AuthRoleRevokePermissionResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_AuthRoleRevokePermissionResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AuthRoleRevokePermissionResponse proto.InternalMessageInfo\n\nfunc (m *AuthRoleRevokePermissionResponse) GetHeader() *ResponseHeader {\n\tif m != nil {\n\t\treturn m.Header\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterEnum(\"etcdserverpb.AlarmType\", AlarmType_name, AlarmType_value)\n\tproto.RegisterEnum(\"etcdserverpb.RangeRequest_SortOrder\", RangeRequest_SortOrder_name, RangeRequest_SortOrder_value)\n\tproto.RegisterEnum(\"etcdserverpb.RangeRequest_SortTarget\", RangeRequest_SortTarget_name, RangeRequest_SortTarget_value)\n\tproto.RegisterEnum(\"etcdserverpb.Compare_CompareResult\", Compare_CompareResult_name, Compare_CompareResult_value)\n\tproto.RegisterEnum(\"etcdserverpb.Compare_CompareTarget\", Compare_CompareTarget_name, Compare_CompareTarget_value)\n\tproto.RegisterEnum(\"etcdserverpb.WatchCreateRequest_FilterType\", WatchCreateRequest_FilterType_name, WatchCreateRequest_FilterType_value)\n\tproto.RegisterEnum(\"etcdserverpb.AlarmRequest_AlarmAction\", AlarmRequest_AlarmAction_name, AlarmRequest_AlarmAction_value)\n\tproto.RegisterEnum(\"etcdserverpb.DowngradeRequest_DowngradeAction\", DowngradeRequest_DowngradeAction_name, DowngradeRequest_DowngradeAction_value)\n\tproto.RegisterType((*ResponseHeader)(nil), \"etcdserverpb.ResponseHeader\")\n\tproto.RegisterType((*RangeRequest)(nil), \"etcdserverpb.RangeRequest\")\n\tproto.RegisterType((*RangeResponse)(nil), \"etcdserverpb.RangeResponse\")\n\tproto.RegisterType((*PutRequest)(nil), \"etcdserverpb.PutRequest\")\n\tproto.RegisterType((*PutResponse)(nil), \"etcdserverpb.PutResponse\")\n\tproto.RegisterType((*DeleteRangeRequest)(nil), \"etcdserverpb.DeleteRangeRequest\")\n\tproto.RegisterType((*DeleteRangeResponse)(nil), \"etcdserverpb.DeleteRangeResponse\")\n\tproto.RegisterType((*RequestOp)(nil), \"etcdserverpb.RequestOp\")\n\tproto.RegisterType((*ResponseOp)(nil), \"etcdserverpb.ResponseOp\")\n\tproto.RegisterType((*Compare)(nil), \"etcdserverpb.Compare\")\n\tproto.RegisterType((*TxnRequest)(nil), \"etcdserverpb.TxnRequest\")\n\tproto.RegisterType((*TxnResponse)(nil), \"etcdserverpb.TxnResponse\")\n\tproto.RegisterType((*CompactionRequest)(nil), \"etcdserverpb.CompactionRequest\")\n\tproto.RegisterType((*CompactionResponse)(nil), \"etcdserverpb.CompactionResponse\")\n\tproto.RegisterType((*HashRequest)(nil), \"etcdserverpb.HashRequest\")\n\tproto.RegisterType((*HashKVRequest)(nil), \"etcdserverpb.HashKVRequest\")\n\tproto.RegisterType((*HashKVResponse)(nil), \"etcdserverpb.HashKVResponse\")\n\tproto.RegisterType((*HashResponse)(nil), \"etcdserverpb.HashResponse\")\n\tproto.RegisterType((*SnapshotRequest)(nil), \"etcdserverpb.SnapshotRequest\")\n\tproto.RegisterType((*SnapshotResponse)(nil), \"etcdserverpb.SnapshotResponse\")\n\tproto.RegisterType((*WatchRequest)(nil), \"etcdserverpb.WatchRequest\")\n\tproto.RegisterType((*WatchCreateRequest)(nil), \"etcdserverpb.WatchCreateRequest\")\n\tproto.RegisterType((*WatchCancelRequest)(nil), \"etcdserverpb.WatchCancelRequest\")\n\tproto.RegisterType((*WatchProgressRequest)(nil), \"etcdserverpb.WatchProgressRequest\")\n\tproto.RegisterType((*WatchResponse)(nil), \"etcdserverpb.WatchResponse\")\n\tproto.RegisterType((*LeaseGrantRequest)(nil), \"etcdserverpb.LeaseGrantRequest\")\n\tproto.RegisterType((*LeaseGrantResponse)(nil), \"etcdserverpb.LeaseGrantResponse\")\n\tproto.RegisterType((*LeaseRevokeRequest)(nil), \"etcdserverpb.LeaseRevokeRequest\")\n\tproto.RegisterType((*LeaseRevokeResponse)(nil), \"etcdserverpb.LeaseRevokeResponse\")\n\tproto.RegisterType((*LeaseCheckpoint)(nil), \"etcdserverpb.LeaseCheckpoint\")\n\tproto.RegisterType((*LeaseCheckpointRequest)(nil), \"etcdserverpb.LeaseCheckpointRequest\")\n\tproto.RegisterType((*LeaseCheckpointResponse)(nil), \"etcdserverpb.LeaseCheckpointResponse\")\n\tproto.RegisterType((*LeaseKeepAliveRequest)(nil), \"etcdserverpb.LeaseKeepAliveRequest\")\n\tproto.RegisterType((*LeaseKeepAliveResponse)(nil), \"etcdserverpb.LeaseKeepAliveResponse\")\n\tproto.RegisterType((*LeaseTimeToLiveRequest)(nil), \"etcdserverpb.LeaseTimeToLiveRequest\")\n\tproto.RegisterType((*LeaseTimeToLiveResponse)(nil), \"etcdserverpb.LeaseTimeToLiveResponse\")\n\tproto.RegisterType((*LeaseLeasesRequest)(nil), \"etcdserverpb.LeaseLeasesRequest\")\n\tproto.RegisterType((*LeaseStatus)(nil), \"etcdserverpb.LeaseStatus\")\n\tproto.RegisterType((*LeaseLeasesResponse)(nil), \"etcdserverpb.LeaseLeasesResponse\")\n\tproto.RegisterType((*Member)(nil), \"etcdserverpb.Member\")\n\tproto.RegisterType((*MemberAddRequest)(nil), \"etcdserverpb.MemberAddRequest\")\n\tproto.RegisterType((*MemberAddResponse)(nil), \"etcdserverpb.MemberAddResponse\")\n\tproto.RegisterType((*MemberRemoveRequest)(nil), \"etcdserverpb.MemberRemoveRequest\")\n\tproto.RegisterType((*MemberRemoveResponse)(nil), \"etcdserverpb.MemberRemoveResponse\")\n\tproto.RegisterType((*MemberUpdateRequest)(nil), \"etcdserverpb.MemberUpdateRequest\")\n\tproto.RegisterType((*MemberUpdateResponse)(nil), \"etcdserverpb.MemberUpdateResponse\")\n\tproto.RegisterType((*MemberListRequest)(nil), \"etcdserverpb.MemberListRequest\")\n\tproto.RegisterType((*MemberListResponse)(nil), \"etcdserverpb.MemberListResponse\")\n\tproto.RegisterType((*MemberPromoteRequest)(nil), \"etcdserverpb.MemberPromoteRequest\")\n\tproto.RegisterType((*MemberPromoteResponse)(nil), \"etcdserverpb.MemberPromoteResponse\")\n\tproto.RegisterType((*DefragmentRequest)(nil), \"etcdserverpb.DefragmentRequest\")\n\tproto.RegisterType((*DefragmentResponse)(nil), \"etcdserverpb.DefragmentResponse\")\n\tproto.RegisterType((*MoveLeaderRequest)(nil), \"etcdserverpb.MoveLeaderRequest\")\n\tproto.RegisterType((*MoveLeaderResponse)(nil), \"etcdserverpb.MoveLeaderResponse\")\n\tproto.RegisterType((*AlarmRequest)(nil), \"etcdserverpb.AlarmRequest\")\n\tproto.RegisterType((*AlarmMember)(nil), \"etcdserverpb.AlarmMember\")\n\tproto.RegisterType((*AlarmResponse)(nil), \"etcdserverpb.AlarmResponse\")\n\tproto.RegisterType((*DowngradeRequest)(nil), \"etcdserverpb.DowngradeRequest\")\n\tproto.RegisterType((*DowngradeResponse)(nil), \"etcdserverpb.DowngradeResponse\")\n\tproto.RegisterType((*StatusRequest)(nil), \"etcdserverpb.StatusRequest\")\n\tproto.RegisterType((*StatusResponse)(nil), \"etcdserverpb.StatusResponse\")\n\tproto.RegisterType((*AuthEnableRequest)(nil), \"etcdserverpb.AuthEnableRequest\")\n\tproto.RegisterType((*AuthDisableRequest)(nil), \"etcdserverpb.AuthDisableRequest\")\n\tproto.RegisterType((*AuthStatusRequest)(nil), \"etcdserverpb.AuthStatusRequest\")\n\tproto.RegisterType((*AuthenticateRequest)(nil), \"etcdserverpb.AuthenticateRequest\")\n\tproto.RegisterType((*AuthUserAddRequest)(nil), \"etcdserverpb.AuthUserAddRequest\")\n\tproto.RegisterType((*AuthUserGetRequest)(nil), \"etcdserverpb.AuthUserGetRequest\")\n\tproto.RegisterType((*AuthUserDeleteRequest)(nil), \"etcdserverpb.AuthUserDeleteRequest\")\n\tproto.RegisterType((*AuthUserChangePasswordRequest)(nil), \"etcdserverpb.AuthUserChangePasswordRequest\")\n\tproto.RegisterType((*AuthUserGrantRoleRequest)(nil), \"etcdserverpb.AuthUserGrantRoleRequest\")\n\tproto.RegisterType((*AuthUserRevokeRoleRequest)(nil), \"etcdserverpb.AuthUserRevokeRoleRequest\")\n\tproto.RegisterType((*AuthRoleAddRequest)(nil), \"etcdserverpb.AuthRoleAddRequest\")\n\tproto.RegisterType((*AuthRoleGetRequest)(nil), \"etcdserverpb.AuthRoleGetRequest\")\n\tproto.RegisterType((*AuthUserListRequest)(nil), \"etcdserverpb.AuthUserListRequest\")\n\tproto.RegisterType((*AuthRoleListRequest)(nil), \"etcdserverpb.AuthRoleListRequest\")\n\tproto.RegisterType((*AuthRoleDeleteRequest)(nil), \"etcdserverpb.AuthRoleDeleteRequest\")\n\tproto.RegisterType((*AuthRoleGrantPermissionRequest)(nil), \"etcdserverpb.AuthRoleGrantPermissionRequest\")\n\tproto.RegisterType((*AuthRoleRevokePermissionRequest)(nil), \"etcdserverpb.AuthRoleRevokePermissionRequest\")\n\tproto.RegisterType((*AuthEnableResponse)(nil), \"etcdserverpb.AuthEnableResponse\")\n\tproto.RegisterType((*AuthDisableResponse)(nil), \"etcdserverpb.AuthDisableResponse\")\n\tproto.RegisterType((*AuthStatusResponse)(nil), \"etcdserverpb.AuthStatusResponse\")\n\tproto.RegisterType((*AuthenticateResponse)(nil), \"etcdserverpb.AuthenticateResponse\")\n\tproto.RegisterType((*AuthUserAddResponse)(nil), \"etcdserverpb.AuthUserAddResponse\")\n\tproto.RegisterType((*AuthUserGetResponse)(nil), \"etcdserverpb.AuthUserGetResponse\")\n\tproto.RegisterType((*AuthUserDeleteResponse)(nil), \"etcdserverpb.AuthUserDeleteResponse\")\n\tproto.RegisterType((*AuthUserChangePasswordResponse)(nil), \"etcdserverpb.AuthUserChangePasswordResponse\")\n\tproto.RegisterType((*AuthUserGrantRoleResponse)(nil), \"etcdserverpb.AuthUserGrantRoleResponse\")\n\tproto.RegisterType((*AuthUserRevokeRoleResponse)(nil), \"etcdserverpb.AuthUserRevokeRoleResponse\")\n\tproto.RegisterType((*AuthRoleAddResponse)(nil), \"etcdserverpb.AuthRoleAddResponse\")\n\tproto.RegisterType((*AuthRoleGetResponse)(nil), \"etcdserverpb.AuthRoleGetResponse\")\n\tproto.RegisterType((*AuthRoleListResponse)(nil), \"etcdserverpb.AuthRoleListResponse\")\n\tproto.RegisterType((*AuthUserListResponse)(nil), \"etcdserverpb.AuthUserListResponse\")\n\tproto.RegisterType((*AuthRoleDeleteResponse)(nil), \"etcdserverpb.AuthRoleDeleteResponse\")\n\tproto.RegisterType((*AuthRoleGrantPermissionResponse)(nil), \"etcdserverpb.AuthRoleGrantPermissionResponse\")\n\tproto.RegisterType((*AuthRoleRevokePermissionResponse)(nil), \"etcdserverpb.AuthRoleRevokePermissionResponse\")\n}\n\nfunc init() { proto.RegisterFile(\"rpc.proto\", fileDescriptor_77a6da22d6a3feb1) }\n\nvar fileDescriptor_77a6da22d6a3feb1 = []byte{\n\t// 4110 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5b, 0xdd, 0x73, 0x1b, 0xc9,\n\t0x71, 0xe7, 0x02, 0x24, 0x01, 0x34, 0x3e, 0x08, 0x0e, 0x29, 0x0a, 0xc2, 0x49, 0x14, 0x6f, 0x74,\n\t0xd2, 0xf1, 0xa4, 0x3b, 0xe2, 0x4c, 0xdb, 0xb9, 0x2a, 0x25, 0x71, 0x0c, 0x91, 0x38, 0x89, 0x47,\n\t0x8a, 0xe4, 0x2d, 0x21, 0xdd, 0x47, 0xb9, 0xc2, 0x5a, 0x02, 0x23, 0x72, 0x43, 0x60, 0x17, 0xde,\n\t0x5d, 0x40, 0xe4, 0xe5, 0xc3, 0x2e, 0x97, 0xe3, 0x4a, 0x5e, 0xed, 0xaa, 0x54, 0xf2, 0x90, 0xbc,\n\t0xa4, 0x52, 0x2e, 0x3f, 0xf8, 0x39, 0xff, 0x42, 0x9e, 0xf2, 0x51, 0xf9, 0x07, 0x52, 0x17, 0xbf,\n\t0x24, 0x7f, 0x85, 0x6b, 0xbe, 0x76, 0x67, 0xf6, 0x83, 0x92, 0x8d, 0xbb, 0x7b, 0x11, 0x31, 0x3d,\n\t0x3d, 0xfd, 0xeb, 0xe9, 0x99, 0xe9, 0xee, 0xe9, 0x59, 0x41, 0xc9, 0x1b, 0xf5, 0x36, 0x46, 0x9e,\n\t0x1b, 0xb8, 0xa8, 0x42, 0x82, 0x5e, 0xdf, 0x27, 0xde, 0x84, 0x78, 0xa3, 0x93, 0xe6, 0xf2, 0xa9,\n\t0x7b, 0xea, 0xb2, 0x8e, 0x16, 0xfd, 0xc5, 0x79, 0x9a, 0x0d, 0xca, 0xd3, 0xb2, 0x46, 0x76, 0x6b,\n\t0x38, 0xe9, 0xf5, 0x46, 0x27, 0xad, 0xf3, 0x89, 0xe8, 0x69, 0x86, 0x3d, 0xd6, 0x38, 0x38, 0x1b,\n\t0x9d, 0xb0, 0x3f, 0xa2, 0xef, 0xe6, 0xa9, 0xeb, 0x9e, 0x0e, 0x08, 0xef, 0x75, 0x1c, 0x37, 0xb0,\n\t0x02, 0xdb, 0x75, 0x7c, 0xde, 0x8b, 0xff, 0xda, 0x80, 0x9a, 0x49, 0xfc, 0x91, 0xeb, 0xf8, 0xe4,\n\t0x09, 0xb1, 0xfa, 0xc4, 0x43, 0xb7, 0x00, 0x7a, 0x83, 0xb1, 0x1f, 0x10, 0xef, 0xd8, 0xee, 0x37,\n\t0x8c, 0x35, 0x63, 0x7d, 0xd6, 0x2c, 0x09, 0xca, 0x4e, 0x1f, 0xbd, 0x01, 0xa5, 0x21, 0x19, 0x9e,\n\t0xf0, 0xde, 0x1c, 0xeb, 0x2d, 0x72, 0xc2, 0x4e, 0x1f, 0x35, 0xa1, 0xe8, 0x91, 0x89, 0xed, 0xdb,\n\t0xae, 0xd3, 0xc8, 0xaf, 0x19, 0xeb, 0x79, 0x33, 0x6c, 0xd3, 0x81, 0x9e, 0xf5, 0x22, 0x38, 0x0e,\n\t0x88, 0x37, 0x6c, 0xcc, 0xf2, 0x81, 0x94, 0xd0, 0x25, 0xde, 0x10, 0xff, 0x74, 0x0e, 0x2a, 0xa6,\n\t0xe5, 0x9c, 0x12, 0x93, 0xfc, 0x70, 0x4c, 0xfc, 0x00, 0xd5, 0x21, 0x7f, 0x4e, 0x2e, 0x19, 0x7c,\n\t0xc5, 0xa4, 0x3f, 0xf9, 0x78, 0xe7, 0x94, 0x1c, 0x13, 0x87, 0x03, 0x57, 0xe8, 0x78, 0xe7, 0x94,\n\t0x74, 0x9c, 0x3e, 0x5a, 0x86, 0xb9, 0x81, 0x3d, 0xb4, 0x03, 0x81, 0xca, 0x1b, 0x9a, 0x3a, 0xb3,\n\t0x31, 0x75, 0xb6, 0x00, 0x7c, 0xd7, 0x0b, 0x8e, 0x5d, 0xaf, 0x4f, 0xbc, 0xc6, 0xdc, 0x9a, 0xb1,\n\t0x5e, 0xdb, 0x7c, 0x6b, 0x43, 0x5d, 0x86, 0x0d, 0x55, 0xa1, 0x8d, 0x23, 0xd7, 0x0b, 0x0e, 0x28,\n\t0xaf, 0x59, 0xf2, 0xe5, 0x4f, 0xf4, 0x21, 0x94, 0x99, 0x90, 0xc0, 0xf2, 0x4e, 0x49, 0xd0, 0x98,\n\t0x67, 0x52, 0xee, 0xbe, 0x42, 0x4a, 0x97, 0x31, 0x9b, 0x0c, 0x9e, 0xff, 0x46, 0x18, 0x2a, 0x3e,\n\t0xf1, 0x6c, 0x6b, 0x60, 0x7f, 0x61, 0x9d, 0x0c, 0x48, 0xa3, 0xb0, 0x66, 0xac, 0x17, 0x4d, 0x8d,\n\t0x46, 0xe7, 0x7f, 0x4e, 0x2e, 0xfd, 0x63, 0xd7, 0x19, 0x5c, 0x36, 0x8a, 0x8c, 0xa1, 0x48, 0x09,\n\t0x07, 0xce, 0xe0, 0x92, 0x2d, 0x9a, 0x3b, 0x76, 0x02, 0xde, 0x5b, 0x62, 0xbd, 0x25, 0x46, 0x61,\n\t0xdd, 0xeb, 0x50, 0x1f, 0xda, 0xce, 0xf1, 0xd0, 0xed, 0x1f, 0x87, 0x06, 0x01, 0x66, 0x90, 0xda,\n\t0xd0, 0x76, 0x9e, 0xba, 0x7d, 0x53, 0x9a, 0x85, 0x72, 0x5a, 0x17, 0x3a, 0x67, 0x59, 0x70, 0x5a,\n\t0x17, 0x2a, 0xe7, 0x06, 0x2c, 0x51, 0x99, 0x3d, 0x8f, 0x58, 0x01, 0x89, 0x98, 0x2b, 0x8c, 0x79,\n\t0x71, 0x68, 0x3b, 0x5b, 0xac, 0x47, 0xe3, 0xb7, 0x2e, 0x12, 0xfc, 0x55, 0xc1, 0x6f, 0x5d, 0xe8,\n\t0xfc, 0x78, 0x03, 0x4a, 0xa1, 0xcd, 0x51, 0x11, 0x66, 0xf7, 0x0f, 0xf6, 0x3b, 0xf5, 0x19, 0x04,\n\t0x30, 0xdf, 0x3e, 0xda, 0xea, 0xec, 0x6f, 0xd7, 0x0d, 0x54, 0x86, 0xc2, 0x76, 0x87, 0x37, 0x72,\n\t0xf8, 0x11, 0x40, 0x64, 0x5d, 0x54, 0x80, 0xfc, 0x6e, 0xe7, 0xb3, 0xfa, 0x0c, 0xe5, 0x79, 0xde,\n\t0x31, 0x8f, 0x76, 0x0e, 0xf6, 0xeb, 0x06, 0x1d, 0xbc, 0x65, 0x76, 0xda, 0xdd, 0x4e, 0x3d, 0x47,\n\t0x39, 0x9e, 0x1e, 0x6c, 0xd7, 0xf3, 0xa8, 0x04, 0x73, 0xcf, 0xdb, 0x7b, 0xcf, 0x3a, 0xf5, 0x59,\n\t0xfc, 0x0b, 0x03, 0xaa, 0x62, 0xbd, 0xf8, 0x99, 0x40, 0xdf, 0x81, 0xf9, 0x33, 0x76, 0x2e, 0xd8,\n\t0x56, 0x2c, 0x6f, 0xde, 0x8c, 0x2d, 0xae, 0x76, 0x76, 0x4c, 0xc1, 0x8b, 0x30, 0xe4, 0xcf, 0x27,\n\t0x7e, 0x23, 0xb7, 0x96, 0x5f, 0x2f, 0x6f, 0xd6, 0x37, 0xf8, 0x79, 0xdd, 0xd8, 0x25, 0x97, 0xcf,\n\t0xad, 0xc1, 0x98, 0x98, 0xb4, 0x13, 0x21, 0x98, 0x1d, 0xba, 0x1e, 0x61, 0x3b, 0xb6, 0x68, 0xb2,\n\t0xdf, 0x74, 0x1b, 0xb3, 0x45, 0x13, 0xbb, 0x95, 0x37, 0xf0, 0xaf, 0x0c, 0x80, 0xc3, 0x71, 0x90,\n\t0x7d, 0x34, 0x96, 0x61, 0x6e, 0x42, 0x05, 0x8b, 0x63, 0xc1, 0x1b, 0xec, 0x4c, 0x10, 0xcb, 0x27,\n\t0xe1, 0x99, 0xa0, 0x0d, 0x74, 0x1d, 0x0a, 0x23, 0x8f, 0x4c, 0x8e, 0xcf, 0x27, 0x0c, 0xa4, 0x68,\n\t0xce, 0xd3, 0xe6, 0xee, 0x04, 0xbd, 0x09, 0x15, 0xfb, 0xd4, 0x71, 0x3d, 0x72, 0xcc, 0x65, 0xcd,\n\t0xb1, 0xde, 0x32, 0xa7, 0x31, 0xbd, 0x15, 0x16, 0x2e, 0x78, 0x5e, 0x65, 0xd9, 0xa3, 0x24, 0xec,\n\t0x40, 0x99, 0xa9, 0x3a, 0x95, 0xf9, 0xde, 0x89, 0x74, 0xcc, 0xb1, 0x61, 0x49, 0x13, 0x0a, 0xad,\n\t0xf1, 0x0f, 0x00, 0x6d, 0x93, 0x01, 0x09, 0xc8, 0x34, 0xde, 0x43, 0xb1, 0x49, 0x5e, 0xb5, 0x09,\n\t0xfe, 0xb9, 0x01, 0x4b, 0x9a, 0xf8, 0xa9, 0xa6, 0xd5, 0x80, 0x42, 0x9f, 0x09, 0xe3, 0x1a, 0xe4,\n\t0x4d, 0xd9, 0x44, 0x0f, 0xa0, 0x28, 0x14, 0xf0, 0x1b, 0xf9, 0x8c, 0x4d, 0x53, 0xe0, 0x3a, 0xf9,\n\t0xf8, 0x57, 0x39, 0x28, 0x89, 0x89, 0x1e, 0x8c, 0x50, 0x1b, 0xaa, 0x1e, 0x6f, 0x1c, 0xb3, 0xf9,\n\t0x08, 0x8d, 0x9a, 0xd9, 0x4e, 0xe8, 0xc9, 0x8c, 0x59, 0x11, 0x43, 0x18, 0x19, 0xfd, 0x21, 0x94,\n\t0xa5, 0x88, 0xd1, 0x38, 0x10, 0x26, 0x6f, 0xe8, 0x02, 0xa2, 0xfd, 0xf7, 0x64, 0xc6, 0x04, 0xc1,\n\t0x7e, 0x38, 0x0e, 0x50, 0x17, 0x96, 0xe5, 0x60, 0x3e, 0x1b, 0xa1, 0x46, 0x9e, 0x49, 0x59, 0xd3,\n\t0xa5, 0x24, 0x97, 0xea, 0xc9, 0x8c, 0x89, 0xc4, 0x78, 0xa5, 0x53, 0x55, 0x29, 0xb8, 0xe0, 0xce,\n\t0x3b, 0xa1, 0x52, 0xf7, 0xc2, 0x49, 0xaa, 0xd4, 0xbd, 0x70, 0x1e, 0x95, 0xa0, 0x20, 0x5a, 0xf8,\n\t0x5f, 0x73, 0x00, 0x72, 0x35, 0x0e, 0x46, 0x68, 0x1b, 0x6a, 0x9e, 0x68, 0x69, 0xd6, 0x7a, 0x23,\n\t0xd5, 0x5a, 0x62, 0x11, 0x67, 0xcc, 0xaa, 0x1c, 0xc4, 0x95, 0xfb, 0x1e, 0x54, 0x42, 0x29, 0x91,\n\t0xc1, 0x6e, 0xa4, 0x18, 0x2c, 0x94, 0x50, 0x96, 0x03, 0xa8, 0xc9, 0x3e, 0x81, 0x6b, 0xe1, 0xf8,\n\t0x14, 0x9b, 0xbd, 0x79, 0x85, 0xcd, 0x42, 0x81, 0x4b, 0x52, 0x82, 0x6a, 0x35, 0x55, 0xb1, 0xc8,\n\t0x6c, 0x37, 0x52, 0xcc, 0x96, 0x54, 0x8c, 0x1a, 0x0e, 0x68, 0xbc, 0xe4, 0x4d, 0xfc, 0x7f, 0x79,\n\t0x28, 0x6c, 0xb9, 0xc3, 0x91, 0xe5, 0xd1, 0xd5, 0x98, 0xf7, 0x88, 0x3f, 0x1e, 0x04, 0xcc, 0x5c,\n\t0xb5, 0xcd, 0x3b, 0xba, 0x44, 0xc1, 0x26, 0xff, 0x9a, 0x8c, 0xd5, 0x14, 0x43, 0xe8, 0x60, 0x11,\n\t0x1e, 0x73, 0xaf, 0x31, 0x58, 0x04, 0x47, 0x31, 0x44, 0x1e, 0xe4, 0x7c, 0x74, 0x90, 0x9b, 0x50,\n\t0x98, 0x10, 0x2f, 0x0a, 0xe9, 0x4f, 0x66, 0x4c, 0x49, 0x40, 0xef, 0xc0, 0x42, 0x3c, 0xbc, 0xcc,\n\t0x09, 0x9e, 0x5a, 0x4f, 0x8f, 0x46, 0x77, 0xa0, 0xa2, 0xc5, 0xb8, 0x79, 0xc1, 0x57, 0x1e, 0x2a,\n\t0x21, 0x6e, 0x45, 0xfa, 0x55, 0x1a, 0x8f, 0x2b, 0x4f, 0x66, 0xa4, 0x67, 0x5d, 0x91, 0x9e, 0xb5,\n\t0x28, 0x46, 0x09, 0xdf, 0xaa, 0x39, 0x99, 0xef, 0xeb, 0x4e, 0x06, 0x7f, 0x1f, 0xaa, 0x9a, 0x81,\n\t0x68, 0xdc, 0xe9, 0x7c, 0xfc, 0xac, 0xbd, 0xc7, 0x83, 0xd4, 0x63, 0x16, 0x97, 0xcc, 0xba, 0x41,\n\t0x63, 0xdd, 0x5e, 0xe7, 0xe8, 0xa8, 0x9e, 0x43, 0x55, 0x28, 0xed, 0x1f, 0x74, 0x8f, 0x39, 0x57,\n\t0x1e, 0x3f, 0x0e, 0x25, 0x88, 0x20, 0xa7, 0xc4, 0xb6, 0x19, 0x25, 0xb6, 0x19, 0x32, 0xb6, 0xe5,\n\t0xa2, 0xd8, 0xc6, 0xc2, 0xdc, 0x5e, 0xa7, 0x7d, 0xd4, 0xa9, 0xcf, 0x3e, 0xaa, 0x41, 0x85, 0xdb,\n\t0xf7, 0x78, 0xec, 0xd0, 0x50, 0xfb, 0xcf, 0x06, 0x40, 0x74, 0x9a, 0x50, 0x0b, 0x0a, 0x3d, 0x8e,\n\t0xd3, 0x30, 0x98, 0x33, 0xba, 0x96, 0xba, 0x64, 0xa6, 0xe4, 0x42, 0xdf, 0x82, 0x82, 0x3f, 0xee,\n\t0xf5, 0x88, 0x2f, 0x43, 0xde, 0xf5, 0xb8, 0x3f, 0x14, 0xde, 0xca, 0x94, 0x7c, 0x74, 0xc8, 0x0b,\n\t0xcb, 0x1e, 0x8c, 0x59, 0x00, 0xbc, 0x7a, 0x88, 0xe0, 0xc3, 0xff, 0x60, 0x40, 0x59, 0xd9, 0xbc,\n\t0xbf, 0xa7, 0x13, 0xbe, 0x09, 0x25, 0xa6, 0x03, 0xe9, 0x0b, 0x37, 0x5c, 0x34, 0x23, 0x02, 0xfa,\n\t0x03, 0x28, 0xc9, 0x13, 0x20, 0x3d, 0x71, 0x23, 0x5d, 0xec, 0xc1, 0xc8, 0x8c, 0x58, 0xf1, 0x2e,\n\t0x2c, 0x32, 0xab, 0xf4, 0x68, 0x72, 0x2d, 0xed, 0xa8, 0xa6, 0x9f, 0x46, 0x2c, 0xfd, 0x6c, 0x42,\n\t0x71, 0x74, 0x76, 0xe9, 0xdb, 0x3d, 0x6b, 0x20, 0xb4, 0x08, 0xdb, 0xf8, 0x23, 0x40, 0xaa, 0xb0,\n\t0x69, 0xa6, 0x8b, 0xab, 0x50, 0x7e, 0x62, 0xf9, 0x67, 0x42, 0x25, 0xfc, 0x00, 0xaa, 0xb4, 0xb9,\n\t0xfb, 0xfc, 0x35, 0x74, 0x64, 0x97, 0x03, 0xc9, 0x3d, 0x95, 0xcd, 0x11, 0xcc, 0x9e, 0x59, 0xfe,\n\t0x19, 0x9b, 0x68, 0xd5, 0x64, 0xbf, 0xd1, 0x3b, 0x50, 0xef, 0xf1, 0x49, 0x1e, 0xc7, 0xae, 0x0c,\n\t0x0b, 0x82, 0x1e, 0x66, 0x82, 0x9f, 0x42, 0x85, 0xcf, 0xe1, 0xab, 0x56, 0x02, 0x2f, 0xc2, 0xc2,\n\t0x91, 0x63, 0x8d, 0xfc, 0x33, 0x57, 0x46, 0x37, 0x3a, 0xe9, 0x7a, 0x44, 0x9b, 0x0a, 0xf1, 0x6d,\n\t0x58, 0xf0, 0xc8, 0xd0, 0xb2, 0x1d, 0xdb, 0x39, 0x3d, 0x3e, 0xb9, 0x0c, 0x88, 0x2f, 0x2e, 0x4c,\n\t0xb5, 0x90, 0xfc, 0x88, 0x52, 0xa9, 0x6a, 0x27, 0x03, 0xf7, 0x44, 0xb8, 0x39, 0xf6, 0x1b, 0xff,\n\t0x2c, 0x07, 0x95, 0x4f, 0xac, 0xa0, 0x27, 0x97, 0x0e, 0xed, 0x40, 0x2d, 0x74, 0x6e, 0x8c, 0x22,\n\t0x74, 0x89, 0x85, 0x58, 0x36, 0x46, 0xa6, 0xd2, 0x32, 0x3a, 0x56, 0x7b, 0x2a, 0x81, 0x89, 0xb2,\n\t0x9c, 0x1e, 0x19, 0x84, 0xa2, 0x72, 0xd9, 0xa2, 0x18, 0xa3, 0x2a, 0x4a, 0x25, 0xa0, 0x03, 0xa8,\n\t0x8f, 0x3c, 0xf7, 0xd4, 0x23, 0xbe, 0x1f, 0x0a, 0xe3, 0x61, 0x0c, 0xa7, 0x08, 0x3b, 0x14, 0xac,\n\t0x91, 0xb8, 0x85, 0x91, 0x4e, 0x7a, 0xb4, 0x10, 0xe5, 0x33, 0xdc, 0x39, 0xfd, 0x57, 0x0e, 0x50,\n\t0x72, 0x52, 0xbf, 0x6b, 0x8a, 0x77, 0x17, 0x6a, 0x7e, 0x60, 0x79, 0x89, 0xcd, 0x56, 0x65, 0xd4,\n\t0xd0, 0xe3, 0xbf, 0x0d, 0xa1, 0x42, 0xc7, 0x8e, 0x1b, 0xd8, 0x2f, 0x2e, 0x45, 0x96, 0x5c, 0x93,\n\t0xe4, 0x7d, 0x46, 0x45, 0x1d, 0x28, 0xbc, 0xb0, 0x07, 0x01, 0xf1, 0xfc, 0xc6, 0xdc, 0x5a, 0x7e,\n\t0xbd, 0xb6, 0xf9, 0xe0, 0x55, 0xcb, 0xb0, 0xf1, 0x21, 0xe3, 0xef, 0x5e, 0x8e, 0x88, 0x29, 0xc7,\n\t0xaa, 0x99, 0xe7, 0xbc, 0x96, 0x8d, 0xdf, 0x80, 0xe2, 0x4b, 0x2a, 0x82, 0xde, 0xb2, 0x0b, 0x3c,\n\t0x59, 0x64, 0x6d, 0x7e, 0xc9, 0x7e, 0xe1, 0x59, 0xa7, 0x43, 0xe2, 0x04, 0xf2, 0x1e, 0x28, 0xdb,\n\t0xf8, 0x2e, 0x40, 0x04, 0x43, 0x5d, 0xfe, 0xfe, 0xc1, 0xe1, 0xb3, 0x6e, 0x7d, 0x06, 0x55, 0xa0,\n\t0xb8, 0x7f, 0xb0, 0xdd, 0xd9, 0xeb, 0xd0, 0xf8, 0x80, 0x5b, 0xd2, 0xa4, 0xda, 0x5a, 0xaa, 0x98,\n\t0x86, 0x86, 0x89, 0x57, 0x60, 0x39, 0x6d, 0x01, 0x69, 0x2e, 0x5a, 0x15, 0xbb, 0x74, 0xaa, 0xa3,\n\t0xa2, 0x42, 0xe7, 0xf4, 0xe9, 0x36, 0xa0, 0xc0, 0x77, 0x6f, 0x5f, 0x24, 0xe7, 0xb2, 0x49, 0x0d,\n\t0xc1, 0x37, 0x23, 0xe9, 0x8b, 0x55, 0x0a, 0xdb, 0xa9, 0xee, 0x65, 0x2e, 0xd5, 0xbd, 0xa0, 0x3b,\n\t0x50, 0x0d, 0x4f, 0x83, 0xe5, 0x8b, 0x5c, 0xa0, 0x64, 0x56, 0xe4, 0x46, 0xa7, 0x34, 0xcd, 0xe8,\n\t0x05, 0xdd, 0xe8, 0xe8, 0x2e, 0xcc, 0x93, 0x09, 0x71, 0x02, 0xbf, 0x51, 0x66, 0x11, 0xa3, 0x2a,\n\t0x73, 0xf7, 0x0e, 0xa5, 0x9a, 0xa2, 0x13, 0x7f, 0x17, 0x16, 0xd9, 0x1d, 0xe9, 0xb1, 0x67, 0x39,\n\t0xea, 0x65, 0xae, 0xdb, 0xdd, 0x13, 0xe6, 0xa6, 0x3f, 0x51, 0x0d, 0x72, 0x3b, 0xdb, 0xc2, 0x08,\n\t0xb9, 0x9d, 0x6d, 0xfc, 0x13, 0x03, 0x90, 0x3a, 0x6e, 0x2a, 0x3b, 0xc7, 0x84, 0x4b, 0xf8, 0x7c,\n\t0x04, 0xbf, 0x0c, 0x73, 0xc4, 0xf3, 0x5c, 0x8f, 0x59, 0xb4, 0x64, 0xf2, 0x06, 0x7e, 0x4b, 0xe8,\n\t0x60, 0x92, 0x89, 0x7b, 0x1e, 0x9e, 0x41, 0x2e, 0xcd, 0x08, 0x55, 0xdd, 0x85, 0x25, 0x8d, 0x6b,\n\t0xaa, 0xc8, 0xf5, 0x21, 0x2c, 0x30, 0x61, 0x5b, 0x67, 0xa4, 0x77, 0x3e, 0x72, 0x6d, 0x27, 0x81,\n\t0x47, 0x57, 0x2e, 0x72, 0xb0, 0x74, 0x1e, 0x7c, 0x62, 0x95, 0x90, 0xd8, 0xed, 0xee, 0xe1, 0xcf,\n\t0x60, 0x25, 0x26, 0x47, 0xaa, 0xff, 0x27, 0x50, 0xee, 0x85, 0x44, 0x5f, 0xe4, 0x3a, 0xb7, 0x74,\n\t0xe5, 0xe2, 0x43, 0xd5, 0x11, 0xf8, 0x00, 0xae, 0x27, 0x44, 0x4f, 0x35, 0xe7, 0xb7, 0xe1, 0x1a,\n\t0x13, 0xb8, 0x4b, 0xc8, 0xa8, 0x3d, 0xb0, 0x27, 0x99, 0x96, 0x1e, 0x89, 0x49, 0x29, 0x8c, 0x5f,\n\t0xef, 0xbe, 0xc0, 0x7f, 0x24, 0x10, 0xbb, 0xf6, 0x90, 0x74, 0xdd, 0xbd, 0x6c, 0xdd, 0x68, 0x34,\n\t0x3b, 0x27, 0x97, 0xbe, 0x48, 0x6b, 0xd8, 0x6f, 0xfc, 0x2f, 0x86, 0x30, 0x95, 0x3a, 0xfc, 0x6b,\n\t0xde, 0xc9, 0xab, 0x00, 0xa7, 0xf4, 0xc8, 0x90, 0x3e, 0xed, 0xe0, 0x15, 0x15, 0x85, 0x12, 0xea,\n\t0x49, 0xfd, 0x77, 0x45, 0xe8, 0xb9, 0x2c, 0xf6, 0x39, 0xfb, 0x27, 0xf4, 0x72, 0xb7, 0xa0, 0xcc,\n\t0x08, 0x47, 0x81, 0x15, 0x8c, 0xfd, 0xc4, 0x62, 0xfc, 0x95, 0xd8, 0xf6, 0x72, 0xd0, 0x54, 0xf3,\n\t0xfa, 0x16, 0xcc, 0xb3, 0xcb, 0x84, 0x4c, 0xa5, 0x6f, 0xa4, 0xec, 0x47, 0xae, 0x87, 0x29, 0x18,\n\t0xf1, 0xcf, 0x0c, 0x98, 0x7f, 0xca, 0x4a, 0xb0, 0x8a, 0x6a, 0xb3, 0x72, 0x2d, 0x1c, 0x6b, 0xc8,\n\t0x0b, 0x43, 0x25, 0x93, 0xfd, 0x66, 0xa9, 0x27, 0x21, 0xde, 0x33, 0x73, 0x8f, 0xa7, 0xb8, 0x25,\n\t0x33, 0x6c, 0x53, 0x9b, 0xf5, 0x06, 0x36, 0x71, 0x02, 0xd6, 0x3b, 0xcb, 0x7a, 0x15, 0x0a, 0xcd,\n\t0x9e, 0x6d, 0x7f, 0x8f, 0x58, 0x9e, 0x23, 0x8a, 0xa6, 0x45, 0x33, 0x22, 0xe0, 0x3d, 0xa8, 0x73,\n\t0x3d, 0xda, 0xfd, 0xbe, 0x92, 0x60, 0x86, 0x68, 0x46, 0x0c, 0x4d, 0x93, 0x96, 0x8b, 0x4b, 0xfb,\n\t0xa5, 0x01, 0x8b, 0x8a, 0xb8, 0xa9, 0xac, 0xfa, 0x2e, 0xcc, 0xf3, 0x22, 0xb5, 0xc8, 0x74, 0x96,\n\t0xf5, 0x51, 0x1c, 0xc6, 0x14, 0x3c, 0x68, 0x03, 0x0a, 0xfc, 0x97, 0xbc, 0x03, 0xa4, 0xb3, 0x4b,\n\t0x26, 0x7c, 0x17, 0x96, 0x04, 0x89, 0x0c, 0xdd, 0xb4, 0x83, 0xc1, 0x16, 0x03, 0xff, 0x05, 0x2c,\n\t0xeb, 0x6c, 0x53, 0x4d, 0x49, 0x51, 0x32, 0xf7, 0x3a, 0x4a, 0xb6, 0xa5, 0x92, 0xcf, 0x46, 0x7d,\n\t0x25, 0x8f, 0x8a, 0xef, 0x18, 0x75, 0xbd, 0x72, 0xfa, 0x7a, 0x45, 0x13, 0x90, 0x22, 0xbe, 0xd1,\n\t0x09, 0x7c, 0x20, 0xb7, 0xc3, 0x9e, 0xed, 0x87, 0x3e, 0x1c, 0x43, 0x65, 0x60, 0x3b, 0xc4, 0xf2,\n\t0x44, 0xe5, 0xdc, 0xe0, 0x95, 0x73, 0x95, 0x86, 0xbf, 0x00, 0xa4, 0x0e, 0xfc, 0x46, 0x95, 0xbe,\n\t0x27, 0x4d, 0x76, 0xe8, 0xb9, 0x43, 0x37, 0xd3, 0xec, 0xf8, 0x2f, 0xe1, 0x5a, 0x8c, 0xef, 0x1b,\n\t0x55, 0x73, 0x09, 0x16, 0xb7, 0x89, 0x4c, 0x68, 0xa4, 0xdb, 0xfb, 0x08, 0x90, 0x4a, 0x9c, 0x2a,\n\t0xb2, 0xb5, 0x60, 0xf1, 0xa9, 0x3b, 0xa1, 0x2e, 0x92, 0x52, 0x23, 0xdf, 0xc0, 0xeb, 0x10, 0xa1,\n\t0x29, 0xc2, 0x36, 0x05, 0x57, 0x07, 0x4c, 0x05, 0xfe, 0x1f, 0x06, 0x54, 0xda, 0x03, 0xcb, 0x1b,\n\t0x4a, 0xe0, 0xef, 0xc1, 0x3c, 0xbf, 0x5d, 0x8b, 0x82, 0xd6, 0x3d, 0x5d, 0x8c, 0xca, 0xcb, 0x1b,\n\t0x6d, 0x7e, 0x17, 0x17, 0xa3, 0xa8, 0xe2, 0xe2, 0xcd, 0x6b, 0x3b, 0xf6, 0x06, 0xb6, 0x8d, 0xde,\n\t0x83, 0x39, 0x8b, 0x0e, 0x61, 0xa1, 0xa8, 0x16, 0xaf, 0x6b, 0x30, 0x69, 0xec, 0x0e, 0xc0, 0xb9,\n\t0xf0, 0x77, 0xa0, 0xac, 0x20, 0xa0, 0x02, 0xe4, 0x1f, 0x77, 0x44, 0xc2, 0xde, 0xde, 0xea, 0xee,\n\t0x3c, 0xe7, 0x05, 0x9d, 0x1a, 0xc0, 0x76, 0x27, 0x6c, 0xe7, 0xf0, 0xa7, 0x62, 0x94, 0x70, 0xfb,\n\t0xaa, 0x3e, 0x46, 0x96, 0x3e, 0xb9, 0xd7, 0xd2, 0xe7, 0x02, 0xaa, 0x62, 0xfa, 0xd3, 0x86, 0x31,\n\t0x26, 0x2f, 0x23, 0x8c, 0x29, 0xca, 0x9b, 0x82, 0x11, 0xff, 0xda, 0x80, 0xfa, 0xb6, 0xfb, 0xd2,\n\t0x39, 0xf5, 0xac, 0x7e, 0x78, 0x4e, 0x3e, 0x8c, 0xad, 0xd4, 0x46, 0xac, 0x38, 0x1a, 0xe3, 0x8f,\n\t0x08, 0xb1, 0x15, 0x6b, 0x44, 0x65, 0x43, 0x1e, 0x0b, 0x65, 0x13, 0x7f, 0x00, 0x0b, 0xb1, 0x41,\n\t0xd4, 0xf6, 0xcf, 0xdb, 0x7b, 0x3b, 0xdb, 0xd4, 0xd6, 0xac, 0xb0, 0xd6, 0xd9, 0x6f, 0x3f, 0xda,\n\t0xeb, 0x88, 0x07, 0xa4, 0xf6, 0xfe, 0x56, 0x67, 0xaf, 0x9e, 0xc3, 0x3d, 0x58, 0x54, 0xe0, 0xa7,\n\t0x7d, 0x19, 0xc8, 0xd0, 0x6e, 0x01, 0xaa, 0x22, 0xda, 0x8b, 0x43, 0xf9, 0xef, 0x39, 0xa8, 0x49,\n\t0xca, 0xd7, 0x83, 0x89, 0x56, 0x60, 0xbe, 0x7f, 0x72, 0x64, 0x7f, 0x21, 0x5f, 0x8e, 0x44, 0x8b,\n\t0xd2, 0x07, 0x1c, 0x87, 0x3f, 0xdf, 0x8a, 0x16, 0x0d, 0xe3, 0x9e, 0xf5, 0x22, 0xd8, 0x71, 0xfa,\n\t0xe4, 0x82, 0x25, 0x05, 0xb3, 0x66, 0x44, 0x60, 0x15, 0x26, 0xf1, 0xcc, 0xcb, 0x6e, 0x56, 0xca,\n\t0xb3, 0x2f, 0xba, 0x0f, 0x75, 0xfa, 0xbb, 0x3d, 0x1a, 0x0d, 0x6c, 0xd2, 0xe7, 0x02, 0x0a, 0x8c,\n\t0x27, 0x41, 0xa7, 0xe8, 0xec, 0x2e, 0xe2, 0x37, 0x8a, 0x2c, 0x2c, 0x89, 0x16, 0x5a, 0x83, 0x32,\n\t0xd7, 0x6f, 0xc7, 0x79, 0xe6, 0x13, 0xf6, 0xf6, 0x99, 0x37, 0x55, 0x92, 0x9e, 0x66, 0x40, 0x3c,\n\t0xcd, 0x58, 0x82, 0xc5, 0xf6, 0x38, 0x38, 0xeb, 0x38, 0x34, 0x56, 0x48, 0x2b, 0x2f, 0x03, 0xa2,\n\t0xc4, 0x6d, 0xdb, 0x57, 0xa9, 0x82, 0x55, 0x5f, 0x90, 0x0e, 0x2c, 0x51, 0x22, 0x71, 0x02, 0xbb,\n\t0xa7, 0xc4, 0x55, 0x99, 0x79, 0x19, 0xb1, 0xcc, 0xcb, 0xf2, 0xfd, 0x97, 0xae, 0xd7, 0x17, 0x36,\n\t0x0f, 0xdb, 0xf8, 0x9f, 0x0c, 0x0e, 0xf9, 0xcc, 0xd7, 0xd2, 0xa7, 0xdf, 0x51, 0x0c, 0x7a, 0x1f,\n\t0x0a, 0xee, 0x88, 0xbd, 0xf0, 0x8b, 0x32, 0xcc, 0xca, 0x06, 0xff, 0x26, 0x60, 0x43, 0x08, 0x3e,\n\t0xe0, 0xbd, 0xa6, 0x64, 0x43, 0xf7, 0xa0, 0x76, 0x66, 0xf9, 0x67, 0xa4, 0x7f, 0x28, 0x65, 0xf2,\n\t0x9b, 0x5f, 0x8c, 0x8a, 0xd7, 0x23, 0xfd, 0x1e, 0x93, 0xe0, 0x0a, 0xfd, 0xf0, 0x03, 0xb8, 0x26,\n\t0x39, 0xc5, 0xeb, 0xc4, 0x15, 0xcc, 0x2f, 0xe1, 0x96, 0x64, 0xde, 0x3a, 0xb3, 0x9c, 0x53, 0x22,\n\t0x01, 0x7f, 0x5f, 0x0b, 0x24, 0xe7, 0x93, 0x4f, 0x9d, 0xcf, 0x23, 0x68, 0x84, 0xf3, 0x61, 0x37,\n\t0x6b, 0x77, 0xa0, 0x2a, 0x3a, 0xf6, 0xc5, 0x79, 0x2a, 0x99, 0xec, 0x37, 0xa5, 0x79, 0xee, 0x20,\n\t0x4c, 0xa5, 0xe9, 0x6f, 0xbc, 0x05, 0x37, 0xa4, 0x0c, 0x71, 0xe7, 0xd5, 0x85, 0x24, 0x14, 0x4f,\n\t0x13, 0x22, 0x0c, 0x4b, 0x87, 0x5e, 0xbd, 0xf0, 0x2a, 0xa7, 0xbe, 0x04, 0x4c, 0xa6, 0xa1, 0xc8,\n\t0xbc, 0xc6, 0x37, 0x25, 0x55, 0x4c, 0xc9, 0x96, 0x24, 0x99, 0x0a, 0x50, 0xc9, 0x62, 0xc1, 0x28,\n\t0x39, 0xb1, 0x60, 0x09, 0xd1, 0x3f, 0x80, 0xd5, 0x50, 0x09, 0x6a, 0xb7, 0x43, 0xe2, 0x0d, 0x6d,\n\t0xdf, 0x57, 0xea, 0xde, 0x69, 0x13, 0xbf, 0x07, 0xb3, 0x23, 0x22, 0x82, 0x50, 0x79, 0x13, 0xc9,\n\t0x4d, 0xa9, 0x0c, 0x66, 0xfd, 0xb8, 0x0f, 0xb7, 0xa5, 0x74, 0x6e, 0xd1, 0x54, 0xf1, 0x71, 0xa5,\n\t0x64, 0x35, 0x30, 0x97, 0x51, 0x0d, 0xcc, 0xc7, 0xde, 0x62, 0x3e, 0xe2, 0x86, 0x94, 0x67, 0x7e,\n\t0xaa, 0xe4, 0x62, 0x97, 0xdb, 0x34, 0x74, 0x15, 0x53, 0x09, 0xfb, 0x1b, 0xe1, 0x05, 0xbe, 0x2a,\n\t0x0f, 0x4f, 0xd8, 0x0c, 0xe5, 0x43, 0x87, 0x6c, 0xd2, 0xac, 0x99, 0x2e, 0x80, 0xa9, 0xd6, 0x42,\n\t0x67, 0x4d, 0x8d, 0x86, 0x4f, 0x60, 0x59, 0xf7, 0x6b, 0x53, 0xe9, 0xb2, 0x0c, 0x73, 0x81, 0x7b,\n\t0x4e, 0x64, 0xac, 0xe1, 0x0d, 0x69, 0xbb, 0xd0, 0xe7, 0x4d, 0x65, 0x3b, 0x2b, 0x12, 0xc6, 0x4e,\n\t0xc7, 0xb4, 0xfa, 0xd2, 0x8d, 0x25, 0xef, 0x40, 0xbc, 0x81, 0xf7, 0x61, 0x25, 0xee, 0xd9, 0xa6,\n\t0x52, 0xf9, 0x39, 0x3f, 0x4b, 0x69, 0xce, 0x6f, 0x2a, 0xb9, 0x1f, 0x47, 0x7e, 0x49, 0xf1, 0x6d,\n\t0x53, 0x89, 0x34, 0xa1, 0x99, 0xe6, 0xea, 0xbe, 0x8a, 0xa3, 0x13, 0x7a, 0xbe, 0xa9, 0x84, 0xf9,\n\t0x91, 0xb0, 0xe9, 0x97, 0x3f, 0x72, 0x57, 0xf9, 0x2b, 0xdd, 0x95, 0x38, 0x24, 0x91, 0x43, 0xfd,\n\t0x1a, 0x36, 0x9d, 0xc0, 0x88, 0x7c, 0xf9, 0xb4, 0x18, 0x34, 0x9c, 0x85, 0x18, 0xac, 0x21, 0x37,\n\t0xb6, 0x1a, 0x01, 0xa6, 0x5a, 0x8c, 0x4f, 0x22, 0x37, 0x9e, 0x08, 0x12, 0x53, 0x09, 0xfe, 0x14,\n\t0xd6, 0xb2, 0xe3, 0xc3, 0x34, 0x92, 0xef, 0xb7, 0xa0, 0x14, 0x5e, 0x86, 0x94, 0xef, 0xcd, 0xca,\n\t0x50, 0xd8, 0x3f, 0x38, 0x3a, 0x6c, 0x6f, 0x75, 0xf8, 0x07, 0x67, 0x5b, 0x07, 0xa6, 0xf9, 0xec,\n\t0xb0, 0x5b, 0xcf, 0x6d, 0xfe, 0x26, 0x0f, 0xb9, 0xdd, 0xe7, 0xe8, 0x33, 0x98, 0xe3, 0x5f, 0x5f,\n\t0x5c, 0xf1, 0xc9, 0x4d, 0xf3, 0xaa, 0x0f, 0x4c, 0xf0, 0xf5, 0x9f, 0xfc, 0xf7, 0x6f, 0x7e, 0x91,\n\t0x5b, 0xc4, 0x95, 0xd6, 0xe4, 0xdb, 0xad, 0xf3, 0x49, 0x8b, 0x85, 0xa9, 0x87, 0xc6, 0x7d, 0xf4,\n\t0x31, 0xe4, 0x0f, 0xc7, 0x01, 0xca, 0xfc, 0x14, 0xa7, 0x99, 0xfd, 0xcd, 0x09, 0xbe, 0xc6, 0x84,\n\t0x2e, 0x60, 0x10, 0x42, 0x47, 0xe3, 0x80, 0x8a, 0xfc, 0x21, 0x94, 0xd5, 0x2f, 0x46, 0x5e, 0xf9,\n\t0x7d, 0x4e, 0xf3, 0xd5, 0x5f, 0xa3, 0xe0, 0x5b, 0x0c, 0xea, 0x3a, 0x46, 0x02, 0x8a, 0x7f, 0xd3,\n\t0xa2, 0xce, 0xa2, 0x7b, 0xe1, 0xa0, 0xcc, 0xaf, 0x77, 0x9a, 0xd9, 0x1f, 0xa8, 0x24, 0x66, 0x11,\n\t0x5c, 0x38, 0x54, 0xe4, 0x9f, 0x89, 0x6f, 0x53, 0x7a, 0x01, 0xba, 0x9d, 0xf2, 0x6d, 0x82, 0xfa,\n\t0x0a, 0xdf, 0x5c, 0xcb, 0x66, 0x10, 0x20, 0x37, 0x19, 0xc8, 0x0a, 0x5e, 0x14, 0x20, 0xbd, 0x90,\n\t0xe5, 0xa1, 0x71, 0x7f, 0xb3, 0x07, 0x73, 0xec, 0x85, 0x0b, 0x7d, 0x2e, 0x7f, 0x34, 0x53, 0x9e,\n\t0xfa, 0x32, 0x16, 0x5a, 0x7b, 0x1b, 0xc3, 0xcb, 0x0c, 0xa8, 0x86, 0x4b, 0x14, 0x88, 0xbd, 0x6f,\n\t0x3d, 0x34, 0xee, 0xaf, 0x1b, 0xef, 0x1b, 0x9b, 0xbf, 0x9e, 0x83, 0x39, 0x56, 0xda, 0x45, 0xe7,\n\t0x00, 0xd1, 0x6b, 0x4f, 0x7c, 0x76, 0x89, 0xf7, 0xa3, 0xf8, 0xec, 0x92, 0x0f, 0x45, 0xb8, 0xc9,\n\t0x40, 0x97, 0xf1, 0x02, 0x05, 0x65, 0x15, 0xe3, 0x16, 0x2b, 0x82, 0x53, 0x3b, 0xfe, 0xad, 0x21,\n\t0x2a, 0xdb, 0xfc, 0x2c, 0xa1, 0x34, 0x69, 0xda, 0x93, 0x4f, 0x7c, 0x3b, 0xa4, 0x3c, 0xf7, 0xe0,\n\t0xef, 0x32, 0xc0, 0x16, 0xae, 0x47, 0x80, 0x1e, 0xe3, 0x78, 0x68, 0xdc, 0xff, 0xbc, 0x81, 0x97,\n\t0x84, 0x95, 0x63, 0x3d, 0xe8, 0x47, 0x50, 0xd3, 0x9f, 0x34, 0xd0, 0x9d, 0x14, 0xac, 0xf8, 0xcb,\n\t0x48, 0xf3, 0xad, 0xab, 0x99, 0x84, 0x4e, 0xab, 0x4c, 0x27, 0x01, 0xce, 0x91, 0xcf, 0x09, 0x19,\n\t0x59, 0x94, 0x49, 0xac, 0x01, 0xfa, 0x47, 0x43, 0xbc, 0x38, 0x45, 0x6f, 0x14, 0x28, 0x4d, 0x7a,\n\t0xe2, 0x05, 0xa4, 0x79, 0xf7, 0x15, 0x5c, 0x42, 0x89, 0x3f, 0x66, 0x4a, 0x7c, 0x80, 0x97, 0x23,\n\t0x25, 0x02, 0x7b, 0x48, 0x02, 0x57, 0x68, 0xf1, 0xf9, 0x4d, 0x7c, 0x5d, 0x33, 0x8e, 0xd6, 0x1b,\n\t0x2d, 0x16, 0x7f, 0x67, 0x48, 0x5d, 0x2c, 0xed, 0xdd, 0x22, 0x75, 0xb1, 0xf4, 0x47, 0x8a, 0xb4,\n\t0xc5, 0xe2, 0xaf, 0x0a, 0x69, 0x8b, 0x15, 0xf6, 0x6c, 0xfe, 0xff, 0x2c, 0x14, 0xb6, 0xf8, 0x37,\n\t0xe1, 0xc8, 0x85, 0x52, 0x58, 0xa6, 0x47, 0xab, 0x69, 0x75, 0xc6, 0xe8, 0x5a, 0xd3, 0xbc, 0x9d,\n\t0xd9, 0x2f, 0x14, 0x7a, 0x93, 0x29, 0xf4, 0x06, 0x5e, 0xa1, 0xc8, 0xe2, 0xb3, 0xf3, 0x16, 0x2f,\n\t0x66, 0xb5, 0xac, 0x7e, 0x9f, 0x1a, 0xe2, 0xcf, 0xa1, 0xa2, 0xd6, 0xd1, 0xd1, 0x9b, 0xa9, 0xb5,\n\t0x4d, 0xb5, 0x14, 0xdf, 0xc4, 0x57, 0xb1, 0x08, 0xe4, 0xb7, 0x18, 0xf2, 0x2a, 0xbe, 0x91, 0x82,\n\t0xec, 0x31, 0x56, 0x0d, 0x9c, 0xd7, 0xc0, 0xd3, 0xc1, 0xb5, 0x12, 0x7b, 0x3a, 0xb8, 0x5e, 0x42,\n\t0xbf, 0x12, 0x7c, 0xcc, 0x58, 0x29, 0xb8, 0x0f, 0x10, 0x55, 0xb2, 0x51, 0xaa, 0x2d, 0x95, 0x7b,\n\t0x5d, 0xdc, 0x39, 0x24, 0x8b, 0xe0, 0x18, 0x33, 0x58, 0xb1, 0xef, 0x62, 0xb0, 0x03, 0xdb, 0x0f,\n\t0xf8, 0xc1, 0xac, 0x6a, 0xa5, 0x69, 0x94, 0x3a, 0x1f, 0xbd, 0xbe, 0xdd, 0xbc, 0x73, 0x25, 0x8f,\n\t0x40, 0xbf, 0xcb, 0xd0, 0x6f, 0xe3, 0x66, 0x0a, 0xfa, 0x88, 0xf3, 0xd2, 0xcd, 0xf6, 0xe3, 0x02,\n\t0x94, 0x9f, 0x5a, 0xb6, 0x13, 0x10, 0xc7, 0x72, 0x7a, 0x04, 0x9d, 0xc0, 0x1c, 0x8b, 0xd4, 0x71,\n\t0x47, 0xac, 0x96, 0x6d, 0xe3, 0x8e, 0x58, 0xab, 0x69, 0xe2, 0x35, 0x06, 0xdc, 0xc4, 0xd7, 0x28,\n\t0xf0, 0x30, 0x12, 0xdd, 0x62, 0xa5, 0x48, 0x3a, 0xe9, 0x17, 0x30, 0x2f, 0x5e, 0xfb, 0x62, 0x82,\n\t0xb4, 0xe2, 0x4f, 0xf3, 0x66, 0x7a, 0x67, 0xda, 0x5e, 0x56, 0x61, 0x7c, 0xc6, 0x47, 0x71, 0x26,\n\t0x00, 0x51, 0x8d, 0x3d, 0xbe, 0xa2, 0x89, 0x92, 0x7c, 0x73, 0x2d, 0x9b, 0x21, 0xcd, 0xa6, 0x2a,\n\t0x66, 0x3f, 0xe4, 0xa5, 0xb8, 0x7f, 0x0a, 0xb3, 0x4f, 0x2c, 0xff, 0x0c, 0xc5, 0x62, 0xaf, 0xf2,\n\t0xad, 0x58, 0xb3, 0x99, 0xd6, 0x25, 0x50, 0x6e, 0x33, 0x94, 0x1b, 0xdc, 0x95, 0xa9, 0x28, 0x67,\n\t0x96, 0x7f, 0x26, 0xec, 0xc7, 0x3f, 0x1d, 0x8b, 0xdb, 0x4f, 0xfb, 0xfc, 0x2c, 0x6e, 0x3f, 0xfd,\n\t0x6b, 0xb3, 0x6c, 0xfb, 0x51, 0x94, 0xf3, 0x09, 0xc5, 0x19, 0x41, 0x51, 0x7e, 0xad, 0x85, 0x62,\n\t0x4f, 0xf7, 0xb1, 0x2f, 0xbb, 0x9a, 0xab, 0x59, 0xdd, 0x02, 0xed, 0x0e, 0x43, 0xbb, 0x85, 0x1b,\n\t0x89, 0xd5, 0x12, 0x9c, 0x0f, 0x8d, 0xfb, 0xef, 0x1b, 0xe8, 0x47, 0x00, 0xd1, 0xc3, 0x44, 0xe2,\n\t0x0c, 0xc6, 0xdf, 0x38, 0x12, 0x67, 0x30, 0xf1, 0xa6, 0x81, 0x37, 0x18, 0xee, 0x3a, 0xbe, 0x13,\n\t0xc7, 0x0d, 0x3c, 0xcb, 0xf1, 0x5f, 0x10, 0xef, 0x3d, 0x5e, 0x67, 0xf5, 0xcf, 0xec, 0x11, 0x9d,\n\t0xb2, 0x07, 0xa5, 0xb0, 0xee, 0x1c, 0xf7, 0xb7, 0xf1, 0x7a, 0x78, 0xdc, 0xdf, 0x26, 0x0a, 0xd6,\n\t0xba, 0xe3, 0xd1, 0xf6, 0x8b, 0x64, 0xa5, 0x47, 0xf0, 0x97, 0x75, 0x98, 0xa5, 0x79, 0x37, 0x4d,\n\t0x4f, 0xa2, 0xca, 0x49, 0x7c, 0xf6, 0x89, 0x3a, 0x6a, 0x7c, 0xf6, 0xc9, 0xa2, 0x8b, 0x9e, 0x9e,\n\t0xd0, 0x6b, 0x56, 0x8b, 0x17, 0x29, 0xe8, 0x4c, 0x5d, 0x28, 0x2b, 0xa5, 0x15, 0x94, 0x22, 0x4c,\n\t0x2f, 0xd0, 0xc6, 0x03, 0x5e, 0x4a, 0x5d, 0x06, 0xbf, 0xc1, 0xf0, 0xae, 0xf1, 0x80, 0xc7, 0xf0,\n\t0xfa, 0x9c, 0x83, 0x02, 0x8a, 0xd9, 0x89, 0x93, 0x9f, 0x32, 0x3b, 0xfd, 0xf4, 0xaf, 0x65, 0x33,\n\t0x64, 0xce, 0x2e, 0x3a, 0xfa, 0x2f, 0xa1, 0xa2, 0x16, 0x58, 0x50, 0x8a, 0xf2, 0xb1, 0xa2, 0x72,\n\t0x3c, 0x92, 0xa4, 0xd5, 0x67, 0x74, 0xdf, 0xc6, 0x20, 0x2d, 0x85, 0x8d, 0x02, 0x0f, 0xa0, 0x20,\n\t0x2a, 0x2e, 0x69, 0x26, 0xd5, 0x0b, 0xd0, 0x69, 0x26, 0x8d, 0x95, 0x6b, 0xf4, 0xfc, 0x99, 0x21,\n\t0xd2, 0x4b, 0xa5, 0x8c, 0xd6, 0x02, 0xed, 0x31, 0x09, 0xb2, 0xd0, 0xa2, 0x5a, 0x66, 0x16, 0x9a,\n\t0x72, 0xa1, 0xcf, 0x42, 0x3b, 0x25, 0x81, 0xf0, 0x07, 0xf2, 0xa2, 0x8c, 0x32, 0x84, 0xa9, 0x11,\n\t0x12, 0x5f, 0xc5, 0x92, 0x76, 0xbd, 0x89, 0x00, 0x65, 0x78, 0xbc, 0x00, 0x88, 0xea, 0x41, 0xf1,\n\t0x9c, 0x35, 0xb5, 0x0e, 0x1e, 0xcf, 0x59, 0xd3, 0x4b, 0x4a, 0xba, 0x8f, 0x8d, 0x70, 0xf9, 0xed,\n\t0x8a, 0x22, 0xff, 0xdc, 0x00, 0x94, 0x2c, 0x1d, 0xa1, 0x07, 0xe9, 0xd2, 0x53, 0xab, 0xeb, 0xcd,\n\t0x77, 0x5f, 0x8f, 0x39, 0xcd, 0x21, 0x47, 0x2a, 0xf5, 0x18, 0xf7, 0xe8, 0x25, 0x55, 0xea, 0xc7,\n\t0x06, 0x54, 0xb5, 0xba, 0x13, 0xba, 0x97, 0xb1, 0xa6, 0xb1, 0xa2, 0x7b, 0xf3, 0xed, 0x57, 0xf2,\n\t0xa5, 0x25, 0xf3, 0xca, 0x0e, 0x90, 0xb7, 0x9a, 0x9f, 0x1a, 0x50, 0xd3, 0xeb, 0x54, 0x28, 0x43,\n\t0x76, 0xa2, 0x68, 0xdf, 0x5c, 0x7f, 0x35, 0xe3, 0xd5, 0xcb, 0x13, 0x5d, 0x68, 0x06, 0x50, 0x10,\n\t0x95, 0xad, 0xb4, 0x8d, 0xaf, 0x97, 0xfb, 0xd3, 0x36, 0x7e, 0xac, 0x2c, 0x96, 0xb2, 0xf1, 0x3d,\n\t0x77, 0x40, 0x94, 0x63, 0x26, 0x4a, 0x5f, 0x59, 0x68, 0x57, 0x1f, 0xb3, 0x58, 0xdd, 0x2c, 0x0b,\n\t0x2d, 0x3a, 0x66, 0xb2, 0xe6, 0x85, 0x32, 0x84, 0xbd, 0xe2, 0x98, 0xc5, 0x4b, 0x66, 0x29, 0xc7,\n\t0x8c, 0x01, 0x2a, 0xc7, 0x2c, 0xaa, 0x4e, 0xa5, 0x1d, 0xb3, 0xc4, 0xeb, 0x45, 0xda, 0x31, 0x4b,\n\t0x16, 0xb8, 0x52, 0xd6, 0x91, 0xe1, 0x6a, 0xc7, 0x6c, 0x29, 0xa5, 0x90, 0x85, 0xde, 0xcd, 0x30,\n\t0x62, 0xea, 0xa3, 0x48, 0xf3, 0xbd, 0xd7, 0xe4, 0xce, 0xdc, 0xe3, 0xdc, 0xfc, 0x72, 0x8f, 0xff,\n\t0x9d, 0x01, 0xcb, 0x69, 0x45, 0x30, 0x94, 0x81, 0x93, 0xf1, 0x98, 0xd2, 0xdc, 0x78, 0x5d, 0xf6,\n\t0xab, 0xad, 0x15, 0xee, 0xfa, 0x47, 0xf5, 0x7f, 0xfb, 0x72, 0xd5, 0xf8, 0xcf, 0x2f, 0x57, 0x8d,\n\t0xff, 0xf9, 0x72, 0xd5, 0xf8, 0xfb, 0xff, 0x5d, 0x9d, 0x39, 0x99, 0x67, 0xff, 0xd5, 0xf8, 0xdb,\n\t0xbf, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x54, 0x11, 0xdf, 0xef, 0x3c, 0x00, 0x00,\n}\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ context.Context\nvar _ grpc.ClientConn\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\nconst _ = grpc.SupportPackageIsVersion4\n\n// KVClient is the client API for KV service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype KVClient interface {\n\t// Range gets the keys in the range from the key-value store.\n\tRange(ctx context.Context, in *RangeRequest, opts ...grpc.CallOption) (*RangeResponse, error)\n\t// Put puts the given key into the key-value store.\n\t// A put request increments the revision of the key-value store\n\t// and generates one event in the event history.\n\tPut(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutResponse, error)\n\t// DeleteRange deletes the given range from the key-value store.\n\t// A delete request increments the revision of the key-value store\n\t// and generates a delete event in the event history for every deleted key.\n\tDeleteRange(ctx context.Context, in *DeleteRangeRequest, opts ...grpc.CallOption) (*DeleteRangeResponse, error)\n\t// Txn processes multiple requests in a single transaction.\n\t// A txn request increments the revision of the key-value store\n\t// and generates events with the same revision for every completed request.\n\t// It is not allowed to modify the same key several times within one txn.\n\tTxn(ctx context.Context, in *TxnRequest, opts ...grpc.CallOption) (*TxnResponse, error)\n\t// Compact compacts the event history in the etcd key-value store. The key-value\n\t// store should be periodically compacted or the event history will continue to grow\n\t// indefinitely.\n\tCompact(ctx context.Context, in *CompactionRequest, opts ...grpc.CallOption) (*CompactionResponse, error)\n}\n\ntype kVClient struct {\n\tcc *grpc.ClientConn\n}\n\nfunc NewKVClient(cc *grpc.ClientConn) KVClient {\n\treturn &kVClient{cc}\n}\n\nfunc (c *kVClient) Range(ctx context.Context, in *RangeRequest, opts ...grpc.CallOption) (*RangeResponse, error) {\n\tout := new(RangeResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.KV/Range\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *kVClient) Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutResponse, error) {\n\tout := new(PutResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.KV/Put\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *kVClient) DeleteRange(ctx context.Context, in *DeleteRangeRequest, opts ...grpc.CallOption) (*DeleteRangeResponse, error) {\n\tout := new(DeleteRangeResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.KV/DeleteRange\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *kVClient) Txn(ctx context.Context, in *TxnRequest, opts ...grpc.CallOption) (*TxnResponse, error) {\n\tout := new(TxnResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.KV/Txn\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *kVClient) Compact(ctx context.Context, in *CompactionRequest, opts ...grpc.CallOption) (*CompactionResponse, error) {\n\tout := new(CompactionResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.KV/Compact\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// KVServer is the server API for KV service.\ntype KVServer interface {\n\t// Range gets the keys in the range from the key-value store.\n\tRange(context.Context, *RangeRequest) (*RangeResponse, error)\n\t// Put puts the given key into the key-value store.\n\t// A put request increments the revision of the key-value store\n\t// and generates one event in the event history.\n\tPut(context.Context, *PutRequest) (*PutResponse, error)\n\t// DeleteRange deletes the given range from the key-value store.\n\t// A delete request increments the revision of the key-value store\n\t// and generates a delete event in the event history for every deleted key.\n\tDeleteRange(context.Context, *DeleteRangeRequest) (*DeleteRangeResponse, error)\n\t// Txn processes multiple requests in a single transaction.\n\t// A txn request increments the revision of the key-value store\n\t// and generates events with the same revision for every completed request.\n\t// It is not allowed to modify the same key several times within one txn.\n\tTxn(context.Context, *TxnRequest) (*TxnResponse, error)\n\t// Compact compacts the event history in the etcd key-value store. The key-value\n\t// store should be periodically compacted or the event history will continue to grow\n\t// indefinitely.\n\tCompact(context.Context, *CompactionRequest) (*CompactionResponse, error)\n}\n\n// UnimplementedKVServer can be embedded to have forward compatible implementations.\ntype UnimplementedKVServer struct {\n}\n\nfunc (*UnimplementedKVServer) Range(ctx context.Context, req *RangeRequest) (*RangeResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Range not implemented\")\n}\nfunc (*UnimplementedKVServer) Put(ctx context.Context, req *PutRequest) (*PutResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Put not implemented\")\n}\nfunc (*UnimplementedKVServer) DeleteRange(ctx context.Context, req *DeleteRangeRequest) (*DeleteRangeResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method DeleteRange not implemented\")\n}\nfunc (*UnimplementedKVServer) Txn(ctx context.Context, req *TxnRequest) (*TxnResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Txn not implemented\")\n}\nfunc (*UnimplementedKVServer) Compact(ctx context.Context, req *CompactionRequest) (*CompactionResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Compact not implemented\")\n}\n\nfunc RegisterKVServer(s *grpc.Server, srv KVServer) {\n\ts.RegisterService(&_KV_serviceDesc, srv)\n}\n\nfunc _KV_Range_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(RangeRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(KVServer).Range(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.KV/Range\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(KVServer).Range(ctx, req.(*RangeRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _KV_Put_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(PutRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(KVServer).Put(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.KV/Put\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(KVServer).Put(ctx, req.(*PutRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _KV_DeleteRange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(DeleteRangeRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(KVServer).DeleteRange(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.KV/DeleteRange\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(KVServer).DeleteRange(ctx, req.(*DeleteRangeRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _KV_Txn_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(TxnRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(KVServer).Txn(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.KV/Txn\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(KVServer).Txn(ctx, req.(*TxnRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _KV_Compact_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(CompactionRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(KVServer).Compact(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.KV/Compact\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(KVServer).Compact(ctx, req.(*CompactionRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar _KV_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"etcdserverpb.KV\",\n\tHandlerType: (*KVServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"Range\",\n\t\t\tHandler:    _KV_Range_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Put\",\n\t\t\tHandler:    _KV_Put_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"DeleteRange\",\n\t\t\tHandler:    _KV_DeleteRange_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Txn\",\n\t\t\tHandler:    _KV_Txn_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Compact\",\n\t\t\tHandler:    _KV_Compact_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"rpc.proto\",\n}\n\n// WatchClient is the client API for Watch service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype WatchClient interface {\n\t// Watch watches for events happening or that have happened. Both input and output\n\t// are streams; the input stream is for creating and canceling watchers and the output\n\t// stream sends events. One watch RPC can watch on multiple key ranges, streaming events\n\t// for several watches at once. The entire event history can be watched starting from the\n\t// last compaction revision.\n\tWatch(ctx context.Context, opts ...grpc.CallOption) (Watch_WatchClient, error)\n}\n\ntype watchClient struct {\n\tcc *grpc.ClientConn\n}\n\nfunc NewWatchClient(cc *grpc.ClientConn) WatchClient {\n\treturn &watchClient{cc}\n}\n\nfunc (c *watchClient) Watch(ctx context.Context, opts ...grpc.CallOption) (Watch_WatchClient, error) {\n\tstream, err := c.cc.NewStream(ctx, &_Watch_serviceDesc.Streams[0], \"/etcdserverpb.Watch/Watch\", opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tx := &watchWatchClient{stream}\n\treturn x, nil\n}\n\ntype Watch_WatchClient interface {\n\tSend(*WatchRequest) error\n\tRecv() (*WatchResponse, error)\n\tgrpc.ClientStream\n}\n\ntype watchWatchClient struct {\n\tgrpc.ClientStream\n}\n\nfunc (x *watchWatchClient) Send(m *WatchRequest) error {\n\treturn x.ClientStream.SendMsg(m)\n}\n\nfunc (x *watchWatchClient) Recv() (*WatchResponse, error) {\n\tm := new(WatchResponse)\n\tif err := x.ClientStream.RecvMsg(m); err != nil {\n\t\treturn nil, err\n\t}\n\treturn m, nil\n}\n\n// WatchServer is the server API for Watch service.\ntype WatchServer interface {\n\t// Watch watches for events happening or that have happened. Both input and output\n\t// are streams; the input stream is for creating and canceling watchers and the output\n\t// stream sends events. One watch RPC can watch on multiple key ranges, streaming events\n\t// for several watches at once. The entire event history can be watched starting from the\n\t// last compaction revision.\n\tWatch(Watch_WatchServer) error\n}\n\n// UnimplementedWatchServer can be embedded to have forward compatible implementations.\ntype UnimplementedWatchServer struct {\n}\n\nfunc (*UnimplementedWatchServer) Watch(srv Watch_WatchServer) error {\n\treturn status.Errorf(codes.Unimplemented, \"method Watch not implemented\")\n}\n\nfunc RegisterWatchServer(s *grpc.Server, srv WatchServer) {\n\ts.RegisterService(&_Watch_serviceDesc, srv)\n}\n\nfunc _Watch_Watch_Handler(srv interface{}, stream grpc.ServerStream) error {\n\treturn srv.(WatchServer).Watch(&watchWatchServer{stream})\n}\n\ntype Watch_WatchServer interface {\n\tSend(*WatchResponse) error\n\tRecv() (*WatchRequest, error)\n\tgrpc.ServerStream\n}\n\ntype watchWatchServer struct {\n\tgrpc.ServerStream\n}\n\nfunc (x *watchWatchServer) Send(m *WatchResponse) error {\n\treturn x.ServerStream.SendMsg(m)\n}\n\nfunc (x *watchWatchServer) Recv() (*WatchRequest, error) {\n\tm := new(WatchRequest)\n\tif err := x.ServerStream.RecvMsg(m); err != nil {\n\t\treturn nil, err\n\t}\n\treturn m, nil\n}\n\nvar _Watch_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"etcdserverpb.Watch\",\n\tHandlerType: (*WatchServer)(nil),\n\tMethods:     []grpc.MethodDesc{},\n\tStreams: []grpc.StreamDesc{\n\t\t{\n\t\t\tStreamName:    \"Watch\",\n\t\t\tHandler:       _Watch_Watch_Handler,\n\t\t\tServerStreams: true,\n\t\t\tClientStreams: true,\n\t\t},\n\t},\n\tMetadata: \"rpc.proto\",\n}\n\n// LeaseClient is the client API for Lease service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype LeaseClient interface {\n\t// LeaseGrant creates a lease which expires if the server does not receive a keepAlive\n\t// within a given time to live period. All keys attached to the lease will be expired and\n\t// deleted if the lease expires. Each expired key generates a delete event in the event history.\n\tLeaseGrant(ctx context.Context, in *LeaseGrantRequest, opts ...grpc.CallOption) (*LeaseGrantResponse, error)\n\t// LeaseRevoke revokes a lease. All keys attached to the lease will expire and be deleted.\n\tLeaseRevoke(ctx context.Context, in *LeaseRevokeRequest, opts ...grpc.CallOption) (*LeaseRevokeResponse, error)\n\t// LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client\n\t// to the server and streaming keep alive responses from the server to the client.\n\tLeaseKeepAlive(ctx context.Context, opts ...grpc.CallOption) (Lease_LeaseKeepAliveClient, error)\n\t// LeaseTimeToLive retrieves lease information.\n\tLeaseTimeToLive(ctx context.Context, in *LeaseTimeToLiveRequest, opts ...grpc.CallOption) (*LeaseTimeToLiveResponse, error)\n\t// LeaseLeases lists all existing leases.\n\tLeaseLeases(ctx context.Context, in *LeaseLeasesRequest, opts ...grpc.CallOption) (*LeaseLeasesResponse, error)\n}\n\ntype leaseClient struct {\n\tcc *grpc.ClientConn\n}\n\nfunc NewLeaseClient(cc *grpc.ClientConn) LeaseClient {\n\treturn &leaseClient{cc}\n}\n\nfunc (c *leaseClient) LeaseGrant(ctx context.Context, in *LeaseGrantRequest, opts ...grpc.CallOption) (*LeaseGrantResponse, error) {\n\tout := new(LeaseGrantResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Lease/LeaseGrant\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *leaseClient) LeaseRevoke(ctx context.Context, in *LeaseRevokeRequest, opts ...grpc.CallOption) (*LeaseRevokeResponse, error) {\n\tout := new(LeaseRevokeResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Lease/LeaseRevoke\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *leaseClient) LeaseKeepAlive(ctx context.Context, opts ...grpc.CallOption) (Lease_LeaseKeepAliveClient, error) {\n\tstream, err := c.cc.NewStream(ctx, &_Lease_serviceDesc.Streams[0], \"/etcdserverpb.Lease/LeaseKeepAlive\", opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tx := &leaseLeaseKeepAliveClient{stream}\n\treturn x, nil\n}\n\ntype Lease_LeaseKeepAliveClient interface {\n\tSend(*LeaseKeepAliveRequest) error\n\tRecv() (*LeaseKeepAliveResponse, error)\n\tgrpc.ClientStream\n}\n\ntype leaseLeaseKeepAliveClient struct {\n\tgrpc.ClientStream\n}\n\nfunc (x *leaseLeaseKeepAliveClient) Send(m *LeaseKeepAliveRequest) error {\n\treturn x.ClientStream.SendMsg(m)\n}\n\nfunc (x *leaseLeaseKeepAliveClient) Recv() (*LeaseKeepAliveResponse, error) {\n\tm := new(LeaseKeepAliveResponse)\n\tif err := x.ClientStream.RecvMsg(m); err != nil {\n\t\treturn nil, err\n\t}\n\treturn m, nil\n}\n\nfunc (c *leaseClient) LeaseTimeToLive(ctx context.Context, in *LeaseTimeToLiveRequest, opts ...grpc.CallOption) (*LeaseTimeToLiveResponse, error) {\n\tout := new(LeaseTimeToLiveResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Lease/LeaseTimeToLive\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *leaseClient) LeaseLeases(ctx context.Context, in *LeaseLeasesRequest, opts ...grpc.CallOption) (*LeaseLeasesResponse, error) {\n\tout := new(LeaseLeasesResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Lease/LeaseLeases\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// LeaseServer is the server API for Lease service.\ntype LeaseServer interface {\n\t// LeaseGrant creates a lease which expires if the server does not receive a keepAlive\n\t// within a given time to live period. All keys attached to the lease will be expired and\n\t// deleted if the lease expires. Each expired key generates a delete event in the event history.\n\tLeaseGrant(context.Context, *LeaseGrantRequest) (*LeaseGrantResponse, error)\n\t// LeaseRevoke revokes a lease. All keys attached to the lease will expire and be deleted.\n\tLeaseRevoke(context.Context, *LeaseRevokeRequest) (*LeaseRevokeResponse, error)\n\t// LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client\n\t// to the server and streaming keep alive responses from the server to the client.\n\tLeaseKeepAlive(Lease_LeaseKeepAliveServer) error\n\t// LeaseTimeToLive retrieves lease information.\n\tLeaseTimeToLive(context.Context, *LeaseTimeToLiveRequest) (*LeaseTimeToLiveResponse, error)\n\t// LeaseLeases lists all existing leases.\n\tLeaseLeases(context.Context, *LeaseLeasesRequest) (*LeaseLeasesResponse, error)\n}\n\n// UnimplementedLeaseServer can be embedded to have forward compatible implementations.\ntype UnimplementedLeaseServer struct {\n}\n\nfunc (*UnimplementedLeaseServer) LeaseGrant(ctx context.Context, req *LeaseGrantRequest) (*LeaseGrantResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method LeaseGrant not implemented\")\n}\nfunc (*UnimplementedLeaseServer) LeaseRevoke(ctx context.Context, req *LeaseRevokeRequest) (*LeaseRevokeResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method LeaseRevoke not implemented\")\n}\nfunc (*UnimplementedLeaseServer) LeaseKeepAlive(srv Lease_LeaseKeepAliveServer) error {\n\treturn status.Errorf(codes.Unimplemented, \"method LeaseKeepAlive not implemented\")\n}\nfunc (*UnimplementedLeaseServer) LeaseTimeToLive(ctx context.Context, req *LeaseTimeToLiveRequest) (*LeaseTimeToLiveResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method LeaseTimeToLive not implemented\")\n}\nfunc (*UnimplementedLeaseServer) LeaseLeases(ctx context.Context, req *LeaseLeasesRequest) (*LeaseLeasesResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method LeaseLeases not implemented\")\n}\n\nfunc RegisterLeaseServer(s *grpc.Server, srv LeaseServer) {\n\ts.RegisterService(&_Lease_serviceDesc, srv)\n}\n\nfunc _Lease_LeaseGrant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(LeaseGrantRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(LeaseServer).LeaseGrant(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Lease/LeaseGrant\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(LeaseServer).LeaseGrant(ctx, req.(*LeaseGrantRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Lease_LeaseRevoke_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(LeaseRevokeRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(LeaseServer).LeaseRevoke(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Lease/LeaseRevoke\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(LeaseServer).LeaseRevoke(ctx, req.(*LeaseRevokeRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Lease_LeaseKeepAlive_Handler(srv interface{}, stream grpc.ServerStream) error {\n\treturn srv.(LeaseServer).LeaseKeepAlive(&leaseLeaseKeepAliveServer{stream})\n}\n\ntype Lease_LeaseKeepAliveServer interface {\n\tSend(*LeaseKeepAliveResponse) error\n\tRecv() (*LeaseKeepAliveRequest, error)\n\tgrpc.ServerStream\n}\n\ntype leaseLeaseKeepAliveServer struct {\n\tgrpc.ServerStream\n}\n\nfunc (x *leaseLeaseKeepAliveServer) Send(m *LeaseKeepAliveResponse) error {\n\treturn x.ServerStream.SendMsg(m)\n}\n\nfunc (x *leaseLeaseKeepAliveServer) Recv() (*LeaseKeepAliveRequest, error) {\n\tm := new(LeaseKeepAliveRequest)\n\tif err := x.ServerStream.RecvMsg(m); err != nil {\n\t\treturn nil, err\n\t}\n\treturn m, nil\n}\n\nfunc _Lease_LeaseTimeToLive_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(LeaseTimeToLiveRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(LeaseServer).LeaseTimeToLive(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Lease/LeaseTimeToLive\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(LeaseServer).LeaseTimeToLive(ctx, req.(*LeaseTimeToLiveRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Lease_LeaseLeases_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(LeaseLeasesRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(LeaseServer).LeaseLeases(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Lease/LeaseLeases\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(LeaseServer).LeaseLeases(ctx, req.(*LeaseLeasesRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar _Lease_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"etcdserverpb.Lease\",\n\tHandlerType: (*LeaseServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"LeaseGrant\",\n\t\t\tHandler:    _Lease_LeaseGrant_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"LeaseRevoke\",\n\t\t\tHandler:    _Lease_LeaseRevoke_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"LeaseTimeToLive\",\n\t\t\tHandler:    _Lease_LeaseTimeToLive_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"LeaseLeases\",\n\t\t\tHandler:    _Lease_LeaseLeases_Handler,\n\t\t},\n\t},\n\tStreams: []grpc.StreamDesc{\n\t\t{\n\t\t\tStreamName:    \"LeaseKeepAlive\",\n\t\t\tHandler:       _Lease_LeaseKeepAlive_Handler,\n\t\t\tServerStreams: true,\n\t\t\tClientStreams: true,\n\t\t},\n\t},\n\tMetadata: \"rpc.proto\",\n}\n\n// ClusterClient is the client API for Cluster service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype ClusterClient interface {\n\t// MemberAdd adds a member into the cluster.\n\tMemberAdd(ctx context.Context, in *MemberAddRequest, opts ...grpc.CallOption) (*MemberAddResponse, error)\n\t// MemberRemove removes an existing member from the cluster.\n\tMemberRemove(ctx context.Context, in *MemberRemoveRequest, opts ...grpc.CallOption) (*MemberRemoveResponse, error)\n\t// MemberUpdate updates the member configuration.\n\tMemberUpdate(ctx context.Context, in *MemberUpdateRequest, opts ...grpc.CallOption) (*MemberUpdateResponse, error)\n\t// MemberList lists all the members in the cluster.\n\tMemberList(ctx context.Context, in *MemberListRequest, opts ...grpc.CallOption) (*MemberListResponse, error)\n\t// MemberPromote promotes a member from raft learner (non-voting) to raft voting member.\n\tMemberPromote(ctx context.Context, in *MemberPromoteRequest, opts ...grpc.CallOption) (*MemberPromoteResponse, error)\n}\n\ntype clusterClient struct {\n\tcc *grpc.ClientConn\n}\n\nfunc NewClusterClient(cc *grpc.ClientConn) ClusterClient {\n\treturn &clusterClient{cc}\n}\n\nfunc (c *clusterClient) MemberAdd(ctx context.Context, in *MemberAddRequest, opts ...grpc.CallOption) (*MemberAddResponse, error) {\n\tout := new(MemberAddResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Cluster/MemberAdd\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *clusterClient) MemberRemove(ctx context.Context, in *MemberRemoveRequest, opts ...grpc.CallOption) (*MemberRemoveResponse, error) {\n\tout := new(MemberRemoveResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Cluster/MemberRemove\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *clusterClient) MemberUpdate(ctx context.Context, in *MemberUpdateRequest, opts ...grpc.CallOption) (*MemberUpdateResponse, error) {\n\tout := new(MemberUpdateResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Cluster/MemberUpdate\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *clusterClient) MemberList(ctx context.Context, in *MemberListRequest, opts ...grpc.CallOption) (*MemberListResponse, error) {\n\tout := new(MemberListResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Cluster/MemberList\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *clusterClient) MemberPromote(ctx context.Context, in *MemberPromoteRequest, opts ...grpc.CallOption) (*MemberPromoteResponse, error) {\n\tout := new(MemberPromoteResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Cluster/MemberPromote\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// ClusterServer is the server API for Cluster service.\ntype ClusterServer interface {\n\t// MemberAdd adds a member into the cluster.\n\tMemberAdd(context.Context, *MemberAddRequest) (*MemberAddResponse, error)\n\t// MemberRemove removes an existing member from the cluster.\n\tMemberRemove(context.Context, *MemberRemoveRequest) (*MemberRemoveResponse, error)\n\t// MemberUpdate updates the member configuration.\n\tMemberUpdate(context.Context, *MemberUpdateRequest) (*MemberUpdateResponse, error)\n\t// MemberList lists all the members in the cluster.\n\tMemberList(context.Context, *MemberListRequest) (*MemberListResponse, error)\n\t// MemberPromote promotes a member from raft learner (non-voting) to raft voting member.\n\tMemberPromote(context.Context, *MemberPromoteRequest) (*MemberPromoteResponse, error)\n}\n\n// UnimplementedClusterServer can be embedded to have forward compatible implementations.\ntype UnimplementedClusterServer struct {\n}\n\nfunc (*UnimplementedClusterServer) MemberAdd(ctx context.Context, req *MemberAddRequest) (*MemberAddResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method MemberAdd not implemented\")\n}\nfunc (*UnimplementedClusterServer) MemberRemove(ctx context.Context, req *MemberRemoveRequest) (*MemberRemoveResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method MemberRemove not implemented\")\n}\nfunc (*UnimplementedClusterServer) MemberUpdate(ctx context.Context, req *MemberUpdateRequest) (*MemberUpdateResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method MemberUpdate not implemented\")\n}\nfunc (*UnimplementedClusterServer) MemberList(ctx context.Context, req *MemberListRequest) (*MemberListResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method MemberList not implemented\")\n}\nfunc (*UnimplementedClusterServer) MemberPromote(ctx context.Context, req *MemberPromoteRequest) (*MemberPromoteResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method MemberPromote not implemented\")\n}\n\nfunc RegisterClusterServer(s *grpc.Server, srv ClusterServer) {\n\ts.RegisterService(&_Cluster_serviceDesc, srv)\n}\n\nfunc _Cluster_MemberAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MemberAddRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ClusterServer).MemberAdd(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Cluster/MemberAdd\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ClusterServer).MemberAdd(ctx, req.(*MemberAddRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Cluster_MemberRemove_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MemberRemoveRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ClusterServer).MemberRemove(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Cluster/MemberRemove\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ClusterServer).MemberRemove(ctx, req.(*MemberRemoveRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Cluster_MemberUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MemberUpdateRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ClusterServer).MemberUpdate(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Cluster/MemberUpdate\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ClusterServer).MemberUpdate(ctx, req.(*MemberUpdateRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Cluster_MemberList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MemberListRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ClusterServer).MemberList(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Cluster/MemberList\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ClusterServer).MemberList(ctx, req.(*MemberListRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Cluster_MemberPromote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MemberPromoteRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ClusterServer).MemberPromote(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Cluster/MemberPromote\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ClusterServer).MemberPromote(ctx, req.(*MemberPromoteRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar _Cluster_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"etcdserverpb.Cluster\",\n\tHandlerType: (*ClusterServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"MemberAdd\",\n\t\t\tHandler:    _Cluster_MemberAdd_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"MemberRemove\",\n\t\t\tHandler:    _Cluster_MemberRemove_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"MemberUpdate\",\n\t\t\tHandler:    _Cluster_MemberUpdate_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"MemberList\",\n\t\t\tHandler:    _Cluster_MemberList_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"MemberPromote\",\n\t\t\tHandler:    _Cluster_MemberPromote_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"rpc.proto\",\n}\n\n// MaintenanceClient is the client API for Maintenance service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype MaintenanceClient interface {\n\t// Alarm activates, deactivates, and queries alarms regarding cluster health.\n\tAlarm(ctx context.Context, in *AlarmRequest, opts ...grpc.CallOption) (*AlarmResponse, error)\n\t// Status gets the status of the member.\n\tStatus(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error)\n\t// Defragment defragments a member's backend database to recover storage space.\n\tDefragment(ctx context.Context, in *DefragmentRequest, opts ...grpc.CallOption) (*DefragmentResponse, error)\n\t// Hash computes the hash of whole backend keyspace,\n\t// including key, lease, and other buckets in storage.\n\t// This is designed for testing ONLY!\n\t// Do not rely on this in production with ongoing transactions,\n\t// since Hash operation does not hold MVCC locks.\n\t// Use \"HashKV\" API instead for \"key\" bucket consistency checks.\n\tHash(ctx context.Context, in *HashRequest, opts ...grpc.CallOption) (*HashResponse, error)\n\t// HashKV computes the hash of all MVCC keys up to a given revision.\n\t// It only iterates \"key\" bucket in backend storage.\n\tHashKV(ctx context.Context, in *HashKVRequest, opts ...grpc.CallOption) (*HashKVResponse, error)\n\t// Snapshot sends a snapshot of the entire backend from a member over a stream to a client.\n\tSnapshot(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (Maintenance_SnapshotClient, error)\n\t// MoveLeader requests current leader node to transfer its leadership to transferee.\n\tMoveLeader(ctx context.Context, in *MoveLeaderRequest, opts ...grpc.CallOption) (*MoveLeaderResponse, error)\n\t// Downgrade requests downgrades, verifies feasibility or cancels downgrade\n\t// on the cluster version.\n\t// Supported since etcd 3.5.\n\tDowngrade(ctx context.Context, in *DowngradeRequest, opts ...grpc.CallOption) (*DowngradeResponse, error)\n}\n\ntype maintenanceClient struct {\n\tcc *grpc.ClientConn\n}\n\nfunc NewMaintenanceClient(cc *grpc.ClientConn) MaintenanceClient {\n\treturn &maintenanceClient{cc}\n}\n\nfunc (c *maintenanceClient) Alarm(ctx context.Context, in *AlarmRequest, opts ...grpc.CallOption) (*AlarmResponse, error) {\n\tout := new(AlarmResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Maintenance/Alarm\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *maintenanceClient) Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) {\n\tout := new(StatusResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Maintenance/Status\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *maintenanceClient) Defragment(ctx context.Context, in *DefragmentRequest, opts ...grpc.CallOption) (*DefragmentResponse, error) {\n\tout := new(DefragmentResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Maintenance/Defragment\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *maintenanceClient) Hash(ctx context.Context, in *HashRequest, opts ...grpc.CallOption) (*HashResponse, error) {\n\tout := new(HashResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Maintenance/Hash\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *maintenanceClient) HashKV(ctx context.Context, in *HashKVRequest, opts ...grpc.CallOption) (*HashKVResponse, error) {\n\tout := new(HashKVResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Maintenance/HashKV\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *maintenanceClient) Snapshot(ctx context.Context, in *SnapshotRequest, opts ...grpc.CallOption) (Maintenance_SnapshotClient, error) {\n\tstream, err := c.cc.NewStream(ctx, &_Maintenance_serviceDesc.Streams[0], \"/etcdserverpb.Maintenance/Snapshot\", opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tx := &maintenanceSnapshotClient{stream}\n\tif err := x.ClientStream.SendMsg(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := x.ClientStream.CloseSend(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn x, nil\n}\n\ntype Maintenance_SnapshotClient interface {\n\tRecv() (*SnapshotResponse, error)\n\tgrpc.ClientStream\n}\n\ntype maintenanceSnapshotClient struct {\n\tgrpc.ClientStream\n}\n\nfunc (x *maintenanceSnapshotClient) Recv() (*SnapshotResponse, error) {\n\tm := new(SnapshotResponse)\n\tif err := x.ClientStream.RecvMsg(m); err != nil {\n\t\treturn nil, err\n\t}\n\treturn m, nil\n}\n\nfunc (c *maintenanceClient) MoveLeader(ctx context.Context, in *MoveLeaderRequest, opts ...grpc.CallOption) (*MoveLeaderResponse, error) {\n\tout := new(MoveLeaderResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Maintenance/MoveLeader\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *maintenanceClient) Downgrade(ctx context.Context, in *DowngradeRequest, opts ...grpc.CallOption) (*DowngradeResponse, error) {\n\tout := new(DowngradeResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Maintenance/Downgrade\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// MaintenanceServer is the server API for Maintenance service.\ntype MaintenanceServer interface {\n\t// Alarm activates, deactivates, and queries alarms regarding cluster health.\n\tAlarm(context.Context, *AlarmRequest) (*AlarmResponse, error)\n\t// Status gets the status of the member.\n\tStatus(context.Context, *StatusRequest) (*StatusResponse, error)\n\t// Defragment defragments a member's backend database to recover storage space.\n\tDefragment(context.Context, *DefragmentRequest) (*DefragmentResponse, error)\n\t// Hash computes the hash of whole backend keyspace,\n\t// including key, lease, and other buckets in storage.\n\t// This is designed for testing ONLY!\n\t// Do not rely on this in production with ongoing transactions,\n\t// since Hash operation does not hold MVCC locks.\n\t// Use \"HashKV\" API instead for \"key\" bucket consistency checks.\n\tHash(context.Context, *HashRequest) (*HashResponse, error)\n\t// HashKV computes the hash of all MVCC keys up to a given revision.\n\t// It only iterates \"key\" bucket in backend storage.\n\tHashKV(context.Context, *HashKVRequest) (*HashKVResponse, error)\n\t// Snapshot sends a snapshot of the entire backend from a member over a stream to a client.\n\tSnapshot(*SnapshotRequest, Maintenance_SnapshotServer) error\n\t// MoveLeader requests current leader node to transfer its leadership to transferee.\n\tMoveLeader(context.Context, *MoveLeaderRequest) (*MoveLeaderResponse, error)\n\t// Downgrade requests downgrades, verifies feasibility or cancels downgrade\n\t// on the cluster version.\n\t// Supported since etcd 3.5.\n\tDowngrade(context.Context, *DowngradeRequest) (*DowngradeResponse, error)\n}\n\n// UnimplementedMaintenanceServer can be embedded to have forward compatible implementations.\ntype UnimplementedMaintenanceServer struct {\n}\n\nfunc (*UnimplementedMaintenanceServer) Alarm(ctx context.Context, req *AlarmRequest) (*AlarmResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Alarm not implemented\")\n}\nfunc (*UnimplementedMaintenanceServer) Status(ctx context.Context, req *StatusRequest) (*StatusResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Status not implemented\")\n}\nfunc (*UnimplementedMaintenanceServer) Defragment(ctx context.Context, req *DefragmentRequest) (*DefragmentResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Defragment not implemented\")\n}\nfunc (*UnimplementedMaintenanceServer) Hash(ctx context.Context, req *HashRequest) (*HashResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Hash not implemented\")\n}\nfunc (*UnimplementedMaintenanceServer) HashKV(ctx context.Context, req *HashKVRequest) (*HashKVResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method HashKV not implemented\")\n}\nfunc (*UnimplementedMaintenanceServer) Snapshot(req *SnapshotRequest, srv Maintenance_SnapshotServer) error {\n\treturn status.Errorf(codes.Unimplemented, \"method Snapshot not implemented\")\n}\nfunc (*UnimplementedMaintenanceServer) MoveLeader(ctx context.Context, req *MoveLeaderRequest) (*MoveLeaderResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method MoveLeader not implemented\")\n}\nfunc (*UnimplementedMaintenanceServer) Downgrade(ctx context.Context, req *DowngradeRequest) (*DowngradeResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Downgrade not implemented\")\n}\n\nfunc RegisterMaintenanceServer(s *grpc.Server, srv MaintenanceServer) {\n\ts.RegisterService(&_Maintenance_serviceDesc, srv)\n}\n\nfunc _Maintenance_Alarm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AlarmRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MaintenanceServer).Alarm(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Maintenance/Alarm\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MaintenanceServer).Alarm(ctx, req.(*AlarmRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Maintenance_Status_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(StatusRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MaintenanceServer).Status(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Maintenance/Status\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MaintenanceServer).Status(ctx, req.(*StatusRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Maintenance_Defragment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(DefragmentRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MaintenanceServer).Defragment(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Maintenance/Defragment\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MaintenanceServer).Defragment(ctx, req.(*DefragmentRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Maintenance_Hash_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(HashRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MaintenanceServer).Hash(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Maintenance/Hash\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MaintenanceServer).Hash(ctx, req.(*HashRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Maintenance_HashKV_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(HashKVRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MaintenanceServer).HashKV(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Maintenance/HashKV\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MaintenanceServer).HashKV(ctx, req.(*HashKVRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Maintenance_Snapshot_Handler(srv interface{}, stream grpc.ServerStream) error {\n\tm := new(SnapshotRequest)\n\tif err := stream.RecvMsg(m); err != nil {\n\t\treturn err\n\t}\n\treturn srv.(MaintenanceServer).Snapshot(m, &maintenanceSnapshotServer{stream})\n}\n\ntype Maintenance_SnapshotServer interface {\n\tSend(*SnapshotResponse) error\n\tgrpc.ServerStream\n}\n\ntype maintenanceSnapshotServer struct {\n\tgrpc.ServerStream\n}\n\nfunc (x *maintenanceSnapshotServer) Send(m *SnapshotResponse) error {\n\treturn x.ServerStream.SendMsg(m)\n}\n\nfunc _Maintenance_MoveLeader_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MoveLeaderRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MaintenanceServer).MoveLeader(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Maintenance/MoveLeader\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MaintenanceServer).MoveLeader(ctx, req.(*MoveLeaderRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Maintenance_Downgrade_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(DowngradeRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MaintenanceServer).Downgrade(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Maintenance/Downgrade\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MaintenanceServer).Downgrade(ctx, req.(*DowngradeRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar _Maintenance_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"etcdserverpb.Maintenance\",\n\tHandlerType: (*MaintenanceServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"Alarm\",\n\t\t\tHandler:    _Maintenance_Alarm_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Status\",\n\t\t\tHandler:    _Maintenance_Status_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Defragment\",\n\t\t\tHandler:    _Maintenance_Defragment_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Hash\",\n\t\t\tHandler:    _Maintenance_Hash_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"HashKV\",\n\t\t\tHandler:    _Maintenance_HashKV_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"MoveLeader\",\n\t\t\tHandler:    _Maintenance_MoveLeader_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Downgrade\",\n\t\t\tHandler:    _Maintenance_Downgrade_Handler,\n\t\t},\n\t},\n\tStreams: []grpc.StreamDesc{\n\t\t{\n\t\t\tStreamName:    \"Snapshot\",\n\t\t\tHandler:       _Maintenance_Snapshot_Handler,\n\t\t\tServerStreams: true,\n\t\t},\n\t},\n\tMetadata: \"rpc.proto\",\n}\n\n// AuthClient is the client API for Auth service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype AuthClient interface {\n\t// AuthEnable enables authentication.\n\tAuthEnable(ctx context.Context, in *AuthEnableRequest, opts ...grpc.CallOption) (*AuthEnableResponse, error)\n\t// AuthDisable disables authentication.\n\tAuthDisable(ctx context.Context, in *AuthDisableRequest, opts ...grpc.CallOption) (*AuthDisableResponse, error)\n\t// AuthStatus displays authentication status.\n\tAuthStatus(ctx context.Context, in *AuthStatusRequest, opts ...grpc.CallOption) (*AuthStatusResponse, error)\n\t// Authenticate processes an authenticate request.\n\tAuthenticate(ctx context.Context, in *AuthenticateRequest, opts ...grpc.CallOption) (*AuthenticateResponse, error)\n\t// UserAdd adds a new user. User name cannot be empty.\n\tUserAdd(ctx context.Context, in *AuthUserAddRequest, opts ...grpc.CallOption) (*AuthUserAddResponse, error)\n\t// UserGet gets detailed user information.\n\tUserGet(ctx context.Context, in *AuthUserGetRequest, opts ...grpc.CallOption) (*AuthUserGetResponse, error)\n\t// UserList gets a list of all users.\n\tUserList(ctx context.Context, in *AuthUserListRequest, opts ...grpc.CallOption) (*AuthUserListResponse, error)\n\t// UserDelete deletes a specified user.\n\tUserDelete(ctx context.Context, in *AuthUserDeleteRequest, opts ...grpc.CallOption) (*AuthUserDeleteResponse, error)\n\t// UserChangePassword changes the password of a specified user.\n\tUserChangePassword(ctx context.Context, in *AuthUserChangePasswordRequest, opts ...grpc.CallOption) (*AuthUserChangePasswordResponse, error)\n\t// UserGrant grants a role to a specified user.\n\tUserGrantRole(ctx context.Context, in *AuthUserGrantRoleRequest, opts ...grpc.CallOption) (*AuthUserGrantRoleResponse, error)\n\t// UserRevokeRole revokes a role of specified user.\n\tUserRevokeRole(ctx context.Context, in *AuthUserRevokeRoleRequest, opts ...grpc.CallOption) (*AuthUserRevokeRoleResponse, error)\n\t// RoleAdd adds a new role. Role name cannot be empty.\n\tRoleAdd(ctx context.Context, in *AuthRoleAddRequest, opts ...grpc.CallOption) (*AuthRoleAddResponse, error)\n\t// RoleGet gets detailed role information.\n\tRoleGet(ctx context.Context, in *AuthRoleGetRequest, opts ...grpc.CallOption) (*AuthRoleGetResponse, error)\n\t// RoleList gets lists of all roles.\n\tRoleList(ctx context.Context, in *AuthRoleListRequest, opts ...grpc.CallOption) (*AuthRoleListResponse, error)\n\t// RoleDelete deletes a specified role.\n\tRoleDelete(ctx context.Context, in *AuthRoleDeleteRequest, opts ...grpc.CallOption) (*AuthRoleDeleteResponse, error)\n\t// RoleGrantPermission grants a permission of a specified key or range to a specified role.\n\tRoleGrantPermission(ctx context.Context, in *AuthRoleGrantPermissionRequest, opts ...grpc.CallOption) (*AuthRoleGrantPermissionResponse, error)\n\t// RoleRevokePermission revokes a key or range permission of a specified role.\n\tRoleRevokePermission(ctx context.Context, in *AuthRoleRevokePermissionRequest, opts ...grpc.CallOption) (*AuthRoleRevokePermissionResponse, error)\n}\n\ntype authClient struct {\n\tcc *grpc.ClientConn\n}\n\nfunc NewAuthClient(cc *grpc.ClientConn) AuthClient {\n\treturn &authClient{cc}\n}\n\nfunc (c *authClient) AuthEnable(ctx context.Context, in *AuthEnableRequest, opts ...grpc.CallOption) (*AuthEnableResponse, error) {\n\tout := new(AuthEnableResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/AuthEnable\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) AuthDisable(ctx context.Context, in *AuthDisableRequest, opts ...grpc.CallOption) (*AuthDisableResponse, error) {\n\tout := new(AuthDisableResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/AuthDisable\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) AuthStatus(ctx context.Context, in *AuthStatusRequest, opts ...grpc.CallOption) (*AuthStatusResponse, error) {\n\tout := new(AuthStatusResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/AuthStatus\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) Authenticate(ctx context.Context, in *AuthenticateRequest, opts ...grpc.CallOption) (*AuthenticateResponse, error) {\n\tout := new(AuthenticateResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/Authenticate\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) UserAdd(ctx context.Context, in *AuthUserAddRequest, opts ...grpc.CallOption) (*AuthUserAddResponse, error) {\n\tout := new(AuthUserAddResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/UserAdd\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) UserGet(ctx context.Context, in *AuthUserGetRequest, opts ...grpc.CallOption) (*AuthUserGetResponse, error) {\n\tout := new(AuthUserGetResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/UserGet\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) UserList(ctx context.Context, in *AuthUserListRequest, opts ...grpc.CallOption) (*AuthUserListResponse, error) {\n\tout := new(AuthUserListResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/UserList\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) UserDelete(ctx context.Context, in *AuthUserDeleteRequest, opts ...grpc.CallOption) (*AuthUserDeleteResponse, error) {\n\tout := new(AuthUserDeleteResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/UserDelete\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) UserChangePassword(ctx context.Context, in *AuthUserChangePasswordRequest, opts ...grpc.CallOption) (*AuthUserChangePasswordResponse, error) {\n\tout := new(AuthUserChangePasswordResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/UserChangePassword\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) UserGrantRole(ctx context.Context, in *AuthUserGrantRoleRequest, opts ...grpc.CallOption) (*AuthUserGrantRoleResponse, error) {\n\tout := new(AuthUserGrantRoleResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/UserGrantRole\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) UserRevokeRole(ctx context.Context, in *AuthUserRevokeRoleRequest, opts ...grpc.CallOption) (*AuthUserRevokeRoleResponse, error) {\n\tout := new(AuthUserRevokeRoleResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/UserRevokeRole\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) RoleAdd(ctx context.Context, in *AuthRoleAddRequest, opts ...grpc.CallOption) (*AuthRoleAddResponse, error) {\n\tout := new(AuthRoleAddResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/RoleAdd\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) RoleGet(ctx context.Context, in *AuthRoleGetRequest, opts ...grpc.CallOption) (*AuthRoleGetResponse, error) {\n\tout := new(AuthRoleGetResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/RoleGet\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) RoleList(ctx context.Context, in *AuthRoleListRequest, opts ...grpc.CallOption) (*AuthRoleListResponse, error) {\n\tout := new(AuthRoleListResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/RoleList\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) RoleDelete(ctx context.Context, in *AuthRoleDeleteRequest, opts ...grpc.CallOption) (*AuthRoleDeleteResponse, error) {\n\tout := new(AuthRoleDeleteResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/RoleDelete\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) RoleGrantPermission(ctx context.Context, in *AuthRoleGrantPermissionRequest, opts ...grpc.CallOption) (*AuthRoleGrantPermissionResponse, error) {\n\tout := new(AuthRoleGrantPermissionResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/RoleGrantPermission\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *authClient) RoleRevokePermission(ctx context.Context, in *AuthRoleRevokePermissionRequest, opts ...grpc.CallOption) (*AuthRoleRevokePermissionResponse, error) {\n\tout := new(AuthRoleRevokePermissionResponse)\n\terr := c.cc.Invoke(ctx, \"/etcdserverpb.Auth/RoleRevokePermission\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// AuthServer is the server API for Auth service.\ntype AuthServer interface {\n\t// AuthEnable enables authentication.\n\tAuthEnable(context.Context, *AuthEnableRequest) (*AuthEnableResponse, error)\n\t// AuthDisable disables authentication.\n\tAuthDisable(context.Context, *AuthDisableRequest) (*AuthDisableResponse, error)\n\t// AuthStatus displays authentication status.\n\tAuthStatus(context.Context, *AuthStatusRequest) (*AuthStatusResponse, error)\n\t// Authenticate processes an authenticate request.\n\tAuthenticate(context.Context, *AuthenticateRequest) (*AuthenticateResponse, error)\n\t// UserAdd adds a new user. User name cannot be empty.\n\tUserAdd(context.Context, *AuthUserAddRequest) (*AuthUserAddResponse, error)\n\t// UserGet gets detailed user information.\n\tUserGet(context.Context, *AuthUserGetRequest) (*AuthUserGetResponse, error)\n\t// UserList gets a list of all users.\n\tUserList(context.Context, *AuthUserListRequest) (*AuthUserListResponse, error)\n\t// UserDelete deletes a specified user.\n\tUserDelete(context.Context, *AuthUserDeleteRequest) (*AuthUserDeleteResponse, error)\n\t// UserChangePassword changes the password of a specified user.\n\tUserChangePassword(context.Context, *AuthUserChangePasswordRequest) (*AuthUserChangePasswordResponse, error)\n\t// UserGrant grants a role to a specified user.\n\tUserGrantRole(context.Context, *AuthUserGrantRoleRequest) (*AuthUserGrantRoleResponse, error)\n\t// UserRevokeRole revokes a role of specified user.\n\tUserRevokeRole(context.Context, *AuthUserRevokeRoleRequest) (*AuthUserRevokeRoleResponse, error)\n\t// RoleAdd adds a new role. Role name cannot be empty.\n\tRoleAdd(context.Context, *AuthRoleAddRequest) (*AuthRoleAddResponse, error)\n\t// RoleGet gets detailed role information.\n\tRoleGet(context.Context, *AuthRoleGetRequest) (*AuthRoleGetResponse, error)\n\t// RoleList gets lists of all roles.\n\tRoleList(context.Context, *AuthRoleListRequest) (*AuthRoleListResponse, error)\n\t// RoleDelete deletes a specified role.\n\tRoleDelete(context.Context, *AuthRoleDeleteRequest) (*AuthRoleDeleteResponse, error)\n\t// RoleGrantPermission grants a permission of a specified key or range to a specified role.\n\tRoleGrantPermission(context.Context, *AuthRoleGrantPermissionRequest) (*AuthRoleGrantPermissionResponse, error)\n\t// RoleRevokePermission revokes a key or range permission of a specified role.\n\tRoleRevokePermission(context.Context, *AuthRoleRevokePermissionRequest) (*AuthRoleRevokePermissionResponse, error)\n}\n\n// UnimplementedAuthServer can be embedded to have forward compatible implementations.\ntype UnimplementedAuthServer struct {\n}\n\nfunc (*UnimplementedAuthServer) AuthEnable(ctx context.Context, req *AuthEnableRequest) (*AuthEnableResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method AuthEnable not implemented\")\n}\nfunc (*UnimplementedAuthServer) AuthDisable(ctx context.Context, req *AuthDisableRequest) (*AuthDisableResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method AuthDisable not implemented\")\n}\nfunc (*UnimplementedAuthServer) AuthStatus(ctx context.Context, req *AuthStatusRequest) (*AuthStatusResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method AuthStatus not implemented\")\n}\nfunc (*UnimplementedAuthServer) Authenticate(ctx context.Context, req *AuthenticateRequest) (*AuthenticateResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Authenticate not implemented\")\n}\nfunc (*UnimplementedAuthServer) UserAdd(ctx context.Context, req *AuthUserAddRequest) (*AuthUserAddResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UserAdd not implemented\")\n}\nfunc (*UnimplementedAuthServer) UserGet(ctx context.Context, req *AuthUserGetRequest) (*AuthUserGetResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UserGet not implemented\")\n}\nfunc (*UnimplementedAuthServer) UserList(ctx context.Context, req *AuthUserListRequest) (*AuthUserListResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UserList not implemented\")\n}\nfunc (*UnimplementedAuthServer) UserDelete(ctx context.Context, req *AuthUserDeleteRequest) (*AuthUserDeleteResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UserDelete not implemented\")\n}\nfunc (*UnimplementedAuthServer) UserChangePassword(ctx context.Context, req *AuthUserChangePasswordRequest) (*AuthUserChangePasswordResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UserChangePassword not implemented\")\n}\nfunc (*UnimplementedAuthServer) UserGrantRole(ctx context.Context, req *AuthUserGrantRoleRequest) (*AuthUserGrantRoleResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UserGrantRole not implemented\")\n}\nfunc (*UnimplementedAuthServer) UserRevokeRole(ctx context.Context, req *AuthUserRevokeRoleRequest) (*AuthUserRevokeRoleResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UserRevokeRole not implemented\")\n}\nfunc (*UnimplementedAuthServer) RoleAdd(ctx context.Context, req *AuthRoleAddRequest) (*AuthRoleAddResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RoleAdd not implemented\")\n}\nfunc (*UnimplementedAuthServer) RoleGet(ctx context.Context, req *AuthRoleGetRequest) (*AuthRoleGetResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RoleGet not implemented\")\n}\nfunc (*UnimplementedAuthServer) RoleList(ctx context.Context, req *AuthRoleListRequest) (*AuthRoleListResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RoleList not implemented\")\n}\nfunc (*UnimplementedAuthServer) RoleDelete(ctx context.Context, req *AuthRoleDeleteRequest) (*AuthRoleDeleteResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RoleDelete not implemented\")\n}\nfunc (*UnimplementedAuthServer) RoleGrantPermission(ctx context.Context, req *AuthRoleGrantPermissionRequest) (*AuthRoleGrantPermissionResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RoleGrantPermission not implemented\")\n}\nfunc (*UnimplementedAuthServer) RoleRevokePermission(ctx context.Context, req *AuthRoleRevokePermissionRequest) (*AuthRoleRevokePermissionResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RoleRevokePermission not implemented\")\n}\n\nfunc RegisterAuthServer(s *grpc.Server, srv AuthServer) {\n\ts.RegisterService(&_Auth_serviceDesc, srv)\n}\n\nfunc _Auth_AuthEnable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthEnableRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).AuthEnable(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/AuthEnable\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).AuthEnable(ctx, req.(*AuthEnableRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_AuthDisable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthDisableRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).AuthDisable(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/AuthDisable\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).AuthDisable(ctx, req.(*AuthDisableRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_AuthStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthStatusRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).AuthStatus(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/AuthStatus\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).AuthStatus(ctx, req.(*AuthStatusRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_Authenticate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthenticateRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).Authenticate(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/Authenticate\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).Authenticate(ctx, req.(*AuthenticateRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_UserAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthUserAddRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).UserAdd(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/UserAdd\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).UserAdd(ctx, req.(*AuthUserAddRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_UserGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthUserGetRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).UserGet(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/UserGet\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).UserGet(ctx, req.(*AuthUserGetRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_UserList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthUserListRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).UserList(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/UserList\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).UserList(ctx, req.(*AuthUserListRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_UserDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthUserDeleteRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).UserDelete(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/UserDelete\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).UserDelete(ctx, req.(*AuthUserDeleteRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_UserChangePassword_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthUserChangePasswordRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).UserChangePassword(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/UserChangePassword\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).UserChangePassword(ctx, req.(*AuthUserChangePasswordRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_UserGrantRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthUserGrantRoleRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).UserGrantRole(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/UserGrantRole\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).UserGrantRole(ctx, req.(*AuthUserGrantRoleRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_UserRevokeRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthUserRevokeRoleRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).UserRevokeRole(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/UserRevokeRole\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).UserRevokeRole(ctx, req.(*AuthUserRevokeRoleRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_RoleAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthRoleAddRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).RoleAdd(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/RoleAdd\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).RoleAdd(ctx, req.(*AuthRoleAddRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_RoleGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthRoleGetRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).RoleGet(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/RoleGet\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).RoleGet(ctx, req.(*AuthRoleGetRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_RoleList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthRoleListRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).RoleList(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/RoleList\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).RoleList(ctx, req.(*AuthRoleListRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_RoleDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthRoleDeleteRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).RoleDelete(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/RoleDelete\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).RoleDelete(ctx, req.(*AuthRoleDeleteRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_RoleGrantPermission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthRoleGrantPermissionRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).RoleGrantPermission(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/RoleGrantPermission\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).RoleGrantPermission(ctx, req.(*AuthRoleGrantPermissionRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Auth_RoleRevokePermission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(AuthRoleRevokePermissionRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(AuthServer).RoleRevokePermission(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/etcdserverpb.Auth/RoleRevokePermission\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(AuthServer).RoleRevokePermission(ctx, req.(*AuthRoleRevokePermissionRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar _Auth_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"etcdserverpb.Auth\",\n\tHandlerType: (*AuthServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"AuthEnable\",\n\t\t\tHandler:    _Auth_AuthEnable_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"AuthDisable\",\n\t\t\tHandler:    _Auth_AuthDisable_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"AuthStatus\",\n\t\t\tHandler:    _Auth_AuthStatus_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Authenticate\",\n\t\t\tHandler:    _Auth_Authenticate_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UserAdd\",\n\t\t\tHandler:    _Auth_UserAdd_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UserGet\",\n\t\t\tHandler:    _Auth_UserGet_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UserList\",\n\t\t\tHandler:    _Auth_UserList_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UserDelete\",\n\t\t\tHandler:    _Auth_UserDelete_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UserChangePassword\",\n\t\t\tHandler:    _Auth_UserChangePassword_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UserGrantRole\",\n\t\t\tHandler:    _Auth_UserGrantRole_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UserRevokeRole\",\n\t\t\tHandler:    _Auth_UserRevokeRole_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RoleAdd\",\n\t\t\tHandler:    _Auth_RoleAdd_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RoleGet\",\n\t\t\tHandler:    _Auth_RoleGet_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RoleList\",\n\t\t\tHandler:    _Auth_RoleList_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RoleDelete\",\n\t\t\tHandler:    _Auth_RoleDelete_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RoleGrantPermission\",\n\t\t\tHandler:    _Auth_RoleGrantPermission_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RoleRevokePermission\",\n\t\t\tHandler:    _Auth_RoleRevokePermission_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"rpc.proto\",\n}\n\nfunc (m *ResponseHeader) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ResponseHeader) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *ResponseHeader) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.RaftTerm != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.RaftTerm))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.Revision != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Revision))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.MemberId != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.MemberId))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.ClusterId != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ClusterId))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RangeRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RangeRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RangeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.MaxCreateRevision != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.MaxCreateRevision))\n\t\ti--\n\t\tdAtA[i] = 0x68\n\t}\n\tif m.MinCreateRevision != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.MinCreateRevision))\n\t\ti--\n\t\tdAtA[i] = 0x60\n\t}\n\tif m.MaxModRevision != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.MaxModRevision))\n\t\ti--\n\t\tdAtA[i] = 0x58\n\t}\n\tif m.MinModRevision != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.MinModRevision))\n\t\ti--\n\t\tdAtA[i] = 0x50\n\t}\n\tif m.CountOnly {\n\t\ti--\n\t\tif m.CountOnly {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x48\n\t}\n\tif m.KeysOnly {\n\t\ti--\n\t\tif m.KeysOnly {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x40\n\t}\n\tif m.Serializable {\n\t\ti--\n\t\tif m.Serializable {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x38\n\t}\n\tif m.SortTarget != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.SortTarget))\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif m.SortOrder != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.SortOrder))\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif m.Revision != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Revision))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.Limit != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Limit))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.RangeEnd) > 0 {\n\t\ti -= len(m.RangeEnd)\n\t\tcopy(dAtA[i:], m.RangeEnd)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.RangeEnd)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RangeResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RangeResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RangeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Count != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Count))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.More {\n\t\ti--\n\t\tif m.More {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.Kvs) > 0 {\n\t\tfor iNdEx := len(m.Kvs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Kvs[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *PutRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *PutRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PutRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.IgnoreLease {\n\t\ti--\n\t\tif m.IgnoreLease {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif m.IgnoreValue {\n\t\ti--\n\t\tif m.IgnoreValue {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif m.PrevKv {\n\t\ti--\n\t\tif m.PrevKv {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.Lease != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Lease))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *PutResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *PutResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PutResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.PrevKv != nil {\n\t\t{\n\t\t\tsize, err := m.PrevKv.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DeleteRangeRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DeleteRangeRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *DeleteRangeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.PrevKv {\n\t\ti--\n\t\tif m.PrevKv {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.RangeEnd) > 0 {\n\t\ti -= len(m.RangeEnd)\n\t\tcopy(dAtA[i:], m.RangeEnd)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.RangeEnd)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DeleteRangeResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DeleteRangeResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *DeleteRangeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.PrevKvs) > 0 {\n\t\tfor iNdEx := len(m.PrevKvs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.PrevKvs[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif m.Deleted != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Deleted))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RequestOp) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RequestOp) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RequestOp) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Request != nil {\n\t\t{\n\t\t\tsize := m.Request.Size()\n\t\t\ti -= size\n\t\t\tif _, err := m.Request.MarshalTo(dAtA[i:]); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RequestOp_RequestRange) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RequestOp_RequestRange) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RequestRange != nil {\n\t\t{\n\t\t\tsize, err := m.RequestRange.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RequestOp_RequestPut) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RequestOp_RequestPut) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RequestPut != nil {\n\t\t{\n\t\t\tsize, err := m.RequestPut.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RequestOp_RequestDeleteRange) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RequestOp_RequestDeleteRange) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RequestDeleteRange != nil {\n\t\t{\n\t\t\tsize, err := m.RequestDeleteRange.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *RequestOp_RequestTxn) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RequestOp_RequestTxn) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RequestTxn != nil {\n\t\t{\n\t\t\tsize, err := m.RequestTxn.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ResponseOp) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ResponseOp) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *ResponseOp) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Response != nil {\n\t\t{\n\t\t\tsize := m.Response.Size()\n\t\t\ti -= size\n\t\t\tif _, err := m.Response.MarshalTo(dAtA[i:]); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ResponseOp_ResponseRange) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *ResponseOp_ResponseRange) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ResponseRange != nil {\n\t\t{\n\t\t\tsize, err := m.ResponseRange.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ResponseOp_ResponsePut) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *ResponseOp_ResponsePut) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ResponsePut != nil {\n\t\t{\n\t\t\tsize, err := m.ResponsePut.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ResponseOp_ResponseDeleteRange) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *ResponseOp_ResponseDeleteRange) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ResponseDeleteRange != nil {\n\t\t{\n\t\t\tsize, err := m.ResponseDeleteRange.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *ResponseOp_ResponseTxn) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *ResponseOp_ResponseTxn) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ResponseTxn != nil {\n\t\t{\n\t\t\tsize, err := m.ResponseTxn.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Compare) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Compare) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Compare) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.RangeEnd) > 0 {\n\t\ti -= len(m.RangeEnd)\n\t\tcopy(dAtA[i:], m.RangeEnd)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.RangeEnd)))\n\t\ti--\n\t\tdAtA[i] = 0x4\n\t\ti--\n\t\tdAtA[i] = 0x82\n\t}\n\tif m.TargetUnion != nil {\n\t\t{\n\t\t\tsize := m.TargetUnion.Size()\n\t\t\ti -= size\n\t\t\tif _, err := m.TargetUnion.MarshalTo(dAtA[i:]); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t}\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Target != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Target))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Result != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Result))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Compare_Version) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Compare_Version) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti = encodeVarintRpc(dAtA, i, uint64(m.Version))\n\ti--\n\tdAtA[i] = 0x20\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Compare_CreateRevision) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Compare_CreateRevision) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti = encodeVarintRpc(dAtA, i, uint64(m.CreateRevision))\n\ti--\n\tdAtA[i] = 0x28\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Compare_ModRevision) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Compare_ModRevision) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti = encodeVarintRpc(dAtA, i, uint64(m.ModRevision))\n\ti--\n\tdAtA[i] = 0x30\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Compare_Value) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Compare_Value) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.Value != nil {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Compare_Lease) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Compare_Lease) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti = encodeVarintRpc(dAtA, i, uint64(m.Lease))\n\ti--\n\tdAtA[i] = 0x40\n\treturn len(dAtA) - i, nil\n}\nfunc (m *TxnRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *TxnRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *TxnRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Failure) > 0 {\n\t\tfor iNdEx := len(m.Failure) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Failure[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.Success) > 0 {\n\t\tfor iNdEx := len(m.Success) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Success[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Compare) > 0 {\n\t\tfor iNdEx := len(m.Compare) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Compare[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *TxnResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *TxnResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *TxnResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Responses) > 0 {\n\t\tfor iNdEx := len(m.Responses) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Responses[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif m.Succeeded {\n\t\ti--\n\t\tif m.Succeeded {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CompactionRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CompactionRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *CompactionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Physical {\n\t\ti--\n\t\tif m.Physical {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Revision != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Revision))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CompactionResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CompactionResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *CompactionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HashRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HashRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *HashRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HashKVRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HashKVRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *HashKVRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Revision != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Revision))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HashKVResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HashKVResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *HashKVResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.CompactRevision != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.CompactRevision))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.Hash != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Hash))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *HashResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *HashResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *HashResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Hash != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Hash))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SnapshotRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SnapshotRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *SnapshotRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SnapshotResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SnapshotResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *SnapshotResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Blob) > 0 {\n\t\ti -= len(m.Blob)\n\t\tcopy(dAtA[i:], m.Blob)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Blob)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.RemainingBytes != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.RemainingBytes))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *WatchRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *WatchRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *WatchRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.RequestUnion != nil {\n\t\t{\n\t\t\tsize := m.RequestUnion.Size()\n\t\t\ti -= size\n\t\t\tif _, err := m.RequestUnion.MarshalTo(dAtA[i:]); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *WatchRequest_CreateRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *WatchRequest_CreateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.CreateRequest != nil {\n\t\t{\n\t\t\tsize, err := m.CreateRequest.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *WatchRequest_CancelRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *WatchRequest_CancelRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.CancelRequest != nil {\n\t\t{\n\t\t\tsize, err := m.CancelRequest.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *WatchRequest_ProgressRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *WatchRequest_ProgressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ProgressRequest != nil {\n\t\t{\n\t\t\tsize, err := m.ProgressRequest.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *WatchCreateRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *WatchCreateRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *WatchCreateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Fragment {\n\t\ti--\n\t\tif m.Fragment {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x40\n\t}\n\tif m.WatchId != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.WatchId))\n\t\ti--\n\t\tdAtA[i] = 0x38\n\t}\n\tif m.PrevKv {\n\t\ti--\n\t\tif m.PrevKv {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif len(m.Filters) > 0 {\n\t\tdAtA22 := make([]byte, len(m.Filters)*10)\n\t\tvar j21 int\n\t\tfor _, num := range m.Filters {\n\t\t\tfor num >= 1<<7 {\n\t\t\t\tdAtA22[j21] = uint8(uint64(num)&0x7f | 0x80)\n\t\t\t\tnum >>= 7\n\t\t\t\tj21++\n\t\t\t}\n\t\t\tdAtA22[j21] = uint8(num)\n\t\t\tj21++\n\t\t}\n\t\ti -= j21\n\t\tcopy(dAtA[i:], dAtA22[:j21])\n\t\ti = encodeVarintRpc(dAtA, i, uint64(j21))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.ProgressNotify {\n\t\ti--\n\t\tif m.ProgressNotify {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.StartRevision != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.StartRevision))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.RangeEnd) > 0 {\n\t\ti -= len(m.RangeEnd)\n\t\tcopy(dAtA[i:], m.RangeEnd)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.RangeEnd)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *WatchCancelRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *WatchCancelRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *WatchCancelRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.WatchId != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.WatchId))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *WatchProgressRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *WatchProgressRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *WatchProgressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *WatchResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *WatchResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *WatchResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Events) > 0 {\n\t\tfor iNdEx := len(m.Events) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Events[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x5a\n\t\t}\n\t}\n\tif m.Fragment {\n\t\ti--\n\t\tif m.Fragment {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x38\n\t}\n\tif len(m.CancelReason) > 0 {\n\t\ti -= len(m.CancelReason)\n\t\tcopy(dAtA[i:], m.CancelReason)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.CancelReason)))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.CompactRevision != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.CompactRevision))\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif m.Canceled {\n\t\ti--\n\t\tif m.Canceled {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.Created {\n\t\ti--\n\t\tif m.Created {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.WatchId != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.WatchId))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseGrantRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseGrantRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseGrantRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.TTL != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.TTL))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseGrantResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseGrantResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseGrantResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Error) > 0 {\n\t\ti -= len(m.Error)\n\t\tcopy(dAtA[i:], m.Error)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Error)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.TTL != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.TTL))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseRevokeRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseRevokeRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseRevokeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseRevokeResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseRevokeResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseRevokeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseCheckpoint) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseCheckpoint) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseCheckpoint) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Remaining_TTL != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Remaining_TTL))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseCheckpointRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseCheckpointRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseCheckpointRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Checkpoints) > 0 {\n\t\tfor iNdEx := len(m.Checkpoints) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Checkpoints[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseCheckpointResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseCheckpointResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseCheckpointResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseKeepAliveRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseKeepAliveRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseKeepAliveRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseKeepAliveResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseKeepAliveResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseKeepAliveResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.TTL != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.TTL))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseTimeToLiveRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseTimeToLiveRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseTimeToLiveRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Keys {\n\t\ti--\n\t\tif m.Keys {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseTimeToLiveResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseTimeToLiveResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseTimeToLiveResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Keys) > 0 {\n\t\tfor iNdEx := len(m.Keys) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Keys[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Keys[iNdEx])\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Keys[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif m.GrantedTTL != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.GrantedTTL))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.TTL != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.TTL))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseLeasesRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseLeasesRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseLeasesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseStatus) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseStatus) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LeaseLeasesResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LeaseLeasesResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LeaseLeasesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Leases) > 0 {\n\t\tfor iNdEx := len(m.Leases) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Leases[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Member) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Member) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Member) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.IsLearner {\n\t\ti--\n\t\tif m.IsLearner {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif len(m.ClientURLs) > 0 {\n\t\tfor iNdEx := len(m.ClientURLs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.ClientURLs[iNdEx])\n\t\t\tcopy(dAtA[i:], m.ClientURLs[iNdEx])\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.ClientURLs[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.PeerURLs) > 0 {\n\t\tfor iNdEx := len(m.PeerURLs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.PeerURLs[iNdEx])\n\t\t\tcopy(dAtA[i:], m.PeerURLs[iNdEx])\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.PeerURLs[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MemberAddRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MemberAddRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MemberAddRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.IsLearner {\n\t\ti--\n\t\tif m.IsLearner {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.PeerURLs) > 0 {\n\t\tfor iNdEx := len(m.PeerURLs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.PeerURLs[iNdEx])\n\t\t\tcopy(dAtA[i:], m.PeerURLs[iNdEx])\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.PeerURLs[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MemberAddResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MemberAddResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MemberAddResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Members) > 0 {\n\t\tfor iNdEx := len(m.Members) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Members[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif m.Member != nil {\n\t\t{\n\t\t\tsize, err := m.Member.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MemberRemoveRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MemberRemoveRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MemberRemoveRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MemberRemoveResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MemberRemoveResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MemberRemoveResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Members) > 0 {\n\t\tfor iNdEx := len(m.Members) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Members[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MemberUpdateRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MemberUpdateRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MemberUpdateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.PeerURLs) > 0 {\n\t\tfor iNdEx := len(m.PeerURLs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.PeerURLs[iNdEx])\n\t\t\tcopy(dAtA[i:], m.PeerURLs[iNdEx])\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.PeerURLs[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MemberUpdateResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MemberUpdateResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MemberUpdateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Members) > 0 {\n\t\tfor iNdEx := len(m.Members) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Members[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MemberListRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MemberListRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MemberListRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Linearizable {\n\t\ti--\n\t\tif m.Linearizable {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MemberListResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MemberListResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MemberListResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Members) > 0 {\n\t\tfor iNdEx := len(m.Members) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Members[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MemberPromoteRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MemberPromoteRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MemberPromoteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MemberPromoteResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MemberPromoteResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MemberPromoteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Members) > 0 {\n\t\tfor iNdEx := len(m.Members) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Members[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DefragmentRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DefragmentRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *DefragmentRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DefragmentResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DefragmentResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *DefragmentResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MoveLeaderRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MoveLeaderRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MoveLeaderRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.TargetID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.TargetID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MoveLeaderResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MoveLeaderResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MoveLeaderResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AlarmRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AlarmRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AlarmRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Alarm != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Alarm))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.MemberID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.MemberID))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Action != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Action))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AlarmMember) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AlarmMember) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AlarmMember) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Alarm != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Alarm))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.MemberID != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.MemberID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AlarmResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AlarmResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AlarmResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Alarms) > 0 {\n\t\tfor iNdEx := len(m.Alarms) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Alarms[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DowngradeRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DowngradeRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *DowngradeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Version) > 0 {\n\t\ti -= len(m.Version)\n\t\tcopy(dAtA[i:], m.Version)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Version)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Action != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Action))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DowngradeResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DowngradeResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *DowngradeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Version) > 0 {\n\t\ti -= len(m.Version)\n\t\tcopy(dAtA[i:], m.Version)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Version)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *StatusRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *StatusRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *StatusRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *StatusResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *StatusResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *StatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.IsLearner {\n\t\ti--\n\t\tif m.IsLearner {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x50\n\t}\n\tif m.DbSizeInUse != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.DbSizeInUse))\n\t\ti--\n\t\tdAtA[i] = 0x48\n\t}\n\tif len(m.Errors) > 0 {\n\t\tfor iNdEx := len(m.Errors) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Errors[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Errors[iNdEx])\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Errors[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t}\n\tif m.RaftAppliedIndex != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.RaftAppliedIndex))\n\t\ti--\n\t\tdAtA[i] = 0x38\n\t}\n\tif m.RaftTerm != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.RaftTerm))\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif m.RaftIndex != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.RaftIndex))\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif m.Leader != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.Leader))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.DbSize != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.DbSize))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.Version) > 0 {\n\t\ti -= len(m.Version)\n\t\tcopy(dAtA[i:], m.Version)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Version)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthEnableRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthEnableRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthEnableRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthDisableRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthDisableRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthDisableRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthStatusRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthStatusRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthStatusRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthenticateRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthenticateRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthenticateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Password) > 0 {\n\t\ti -= len(m.Password)\n\t\tcopy(dAtA[i:], m.Password)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Password)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserAddRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserAddRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserAddRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.HashedPassword) > 0 {\n\t\ti -= len(m.HashedPassword)\n\t\tcopy(dAtA[i:], m.HashedPassword)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.HashedPassword)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Options != nil {\n\t\t{\n\t\t\tsize, err := m.Options.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Password) > 0 {\n\t\ti -= len(m.Password)\n\t\tcopy(dAtA[i:], m.Password)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Password)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserGetRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserGetRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserGetRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserDeleteRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserDeleteRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserDeleteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserChangePasswordRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserChangePasswordRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserChangePasswordRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.HashedPassword) > 0 {\n\t\ti -= len(m.HashedPassword)\n\t\tcopy(dAtA[i:], m.HashedPassword)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.HashedPassword)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Password) > 0 {\n\t\ti -= len(m.Password)\n\t\tcopy(dAtA[i:], m.Password)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Password)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserGrantRoleRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserGrantRoleRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserGrantRoleRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Role) > 0 {\n\t\ti -= len(m.Role)\n\t\tcopy(dAtA[i:], m.Role)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Role)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.User) > 0 {\n\t\ti -= len(m.User)\n\t\tcopy(dAtA[i:], m.User)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.User)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserRevokeRoleRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserRevokeRoleRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserRevokeRoleRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Role) > 0 {\n\t\ti -= len(m.Role)\n\t\tcopy(dAtA[i:], m.Role)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Role)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthRoleAddRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthRoleAddRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthRoleAddRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthRoleGetRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthRoleGetRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthRoleGetRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Role) > 0 {\n\t\ti -= len(m.Role)\n\t\tcopy(dAtA[i:], m.Role)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Role)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserListRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserListRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserListRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthRoleListRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthRoleListRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthRoleListRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthRoleDeleteRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthRoleDeleteRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthRoleDeleteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Role) > 0 {\n\t\ti -= len(m.Role)\n\t\tcopy(dAtA[i:], m.Role)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Role)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthRoleGrantPermissionRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthRoleGrantPermissionRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthRoleGrantPermissionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Perm != nil {\n\t\t{\n\t\t\tsize, err := m.Perm.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthRoleRevokePermissionRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthRoleRevokePermissionRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthRoleRevokePermissionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.RangeEnd) > 0 {\n\t\ti -= len(m.RangeEnd)\n\t\tcopy(dAtA[i:], m.RangeEnd)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.RangeEnd)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Role) > 0 {\n\t\ti -= len(m.Role)\n\t\tcopy(dAtA[i:], m.Role)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Role)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthEnableResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthEnableResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthEnableResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthDisableResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthDisableResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthDisableResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthStatusResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthStatusResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthStatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.AuthRevision != 0 {\n\t\ti = encodeVarintRpc(dAtA, i, uint64(m.AuthRevision))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.Enabled {\n\t\ti--\n\t\tif m.Enabled {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthenticateResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthenticateResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthenticateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Token) > 0 {\n\t\ti -= len(m.Token)\n\t\tcopy(dAtA[i:], m.Token)\n\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Token)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserAddResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserAddResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserAddResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserGetResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserGetResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserGetResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Roles) > 0 {\n\t\tfor iNdEx := len(m.Roles) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Roles[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Roles[iNdEx])\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Roles[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserDeleteResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserDeleteResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserDeleteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserChangePasswordResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserChangePasswordResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserChangePasswordResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserGrantRoleResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserGrantRoleResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserGrantRoleResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserRevokeRoleResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserRevokeRoleResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserRevokeRoleResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthRoleAddResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthRoleAddResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthRoleAddResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthRoleGetResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthRoleGetResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthRoleGetResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Perm) > 0 {\n\t\tfor iNdEx := len(m.Perm) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Perm[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthRoleListResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthRoleListResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthRoleListResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Roles) > 0 {\n\t\tfor iNdEx := len(m.Roles) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Roles[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Roles[iNdEx])\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Roles[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthUserListResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthUserListResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthUserListResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Users) > 0 {\n\t\tfor iNdEx := len(m.Users) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Users[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Users[iNdEx])\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(len(m.Users[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthRoleDeleteResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthRoleDeleteResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthRoleDeleteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthRoleGrantPermissionResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthRoleGrantPermissionResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthRoleGrantPermissionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AuthRoleRevokePermissionResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AuthRoleRevokePermissionResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AuthRoleRevokePermissionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Header != nil {\n\t\t{\n\t\t\tsize, err := m.Header.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRpc(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintRpc(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovRpc(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *ResponseHeader) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ClusterId != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ClusterId))\n\t}\n\tif m.MemberId != 0 {\n\t\tn += 1 + sovRpc(uint64(m.MemberId))\n\t}\n\tif m.Revision != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Revision))\n\t}\n\tif m.RaftTerm != 0 {\n\t\tn += 1 + sovRpc(uint64(m.RaftTerm))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *RangeRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.RangeEnd)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.Limit != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Limit))\n\t}\n\tif m.Revision != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Revision))\n\t}\n\tif m.SortOrder != 0 {\n\t\tn += 1 + sovRpc(uint64(m.SortOrder))\n\t}\n\tif m.SortTarget != 0 {\n\t\tn += 1 + sovRpc(uint64(m.SortTarget))\n\t}\n\tif m.Serializable {\n\t\tn += 2\n\t}\n\tif m.KeysOnly {\n\t\tn += 2\n\t}\n\tif m.CountOnly {\n\t\tn += 2\n\t}\n\tif m.MinModRevision != 0 {\n\t\tn += 1 + sovRpc(uint64(m.MinModRevision))\n\t}\n\tif m.MaxModRevision != 0 {\n\t\tn += 1 + sovRpc(uint64(m.MaxModRevision))\n\t}\n\tif m.MinCreateRevision != 0 {\n\t\tn += 1 + sovRpc(uint64(m.MinCreateRevision))\n\t}\n\tif m.MaxCreateRevision != 0 {\n\t\tn += 1 + sovRpc(uint64(m.MaxCreateRevision))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *RangeResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif len(m.Kvs) > 0 {\n\t\tfor _, e := range m.Kvs {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.More {\n\t\tn += 2\n\t}\n\tif m.Count != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Count))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *PutRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.Value)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.Lease != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Lease))\n\t}\n\tif m.PrevKv {\n\t\tn += 2\n\t}\n\tif m.IgnoreValue {\n\t\tn += 2\n\t}\n\tif m.IgnoreLease {\n\t\tn += 2\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *PutResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.PrevKv != nil {\n\t\tl = m.PrevKv.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *DeleteRangeRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.RangeEnd)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.PrevKv {\n\t\tn += 2\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *DeleteRangeResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.Deleted != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Deleted))\n\t}\n\tif len(m.PrevKvs) > 0 {\n\t\tfor _, e := range m.PrevKvs {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *RequestOp) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Request != nil {\n\t\tn += m.Request.Size()\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *RequestOp_RequestRange) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RequestRange != nil {\n\t\tl = m.RequestRange.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *RequestOp_RequestPut) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RequestPut != nil {\n\t\tl = m.RequestPut.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *RequestOp_RequestDeleteRange) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RequestDeleteRange != nil {\n\t\tl = m.RequestDeleteRange.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *RequestOp_RequestTxn) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RequestTxn != nil {\n\t\tl = m.RequestTxn.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *ResponseOp) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Response != nil {\n\t\tn += m.Response.Size()\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *ResponseOp_ResponseRange) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ResponseRange != nil {\n\t\tl = m.ResponseRange.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *ResponseOp_ResponsePut) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ResponsePut != nil {\n\t\tl = m.ResponsePut.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *ResponseOp_ResponseDeleteRange) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ResponseDeleteRange != nil {\n\t\tl = m.ResponseDeleteRange.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *ResponseOp_ResponseTxn) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ResponseTxn != nil {\n\t\tl = m.ResponseTxn.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *Compare) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Result != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Result))\n\t}\n\tif m.Target != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Target))\n\t}\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.TargetUnion != nil {\n\t\tn += m.TargetUnion.Size()\n\t}\n\tl = len(m.RangeEnd)\n\tif l > 0 {\n\t\tn += 2 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *Compare_Version) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 1 + sovRpc(uint64(m.Version))\n\treturn n\n}\nfunc (m *Compare_CreateRevision) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 1 + sovRpc(uint64(m.CreateRevision))\n\treturn n\n}\nfunc (m *Compare_ModRevision) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 1 + sovRpc(uint64(m.ModRevision))\n\treturn n\n}\nfunc (m *Compare_Value) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Value != nil {\n\t\tl = len(m.Value)\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *Compare_Lease) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 1 + sovRpc(uint64(m.Lease))\n\treturn n\n}\nfunc (m *TxnRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Compare) > 0 {\n\t\tfor _, e := range m.Compare {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif len(m.Success) > 0 {\n\t\tfor _, e := range m.Success {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif len(m.Failure) > 0 {\n\t\tfor _, e := range m.Failure {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *TxnResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.Succeeded {\n\t\tn += 2\n\t}\n\tif len(m.Responses) > 0 {\n\t\tfor _, e := range m.Responses {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *CompactionRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Revision != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Revision))\n\t}\n\tif m.Physical {\n\t\tn += 2\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *CompactionResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *HashRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *HashKVRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Revision != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Revision))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *HashKVResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.Hash != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Hash))\n\t}\n\tif m.CompactRevision != 0 {\n\t\tn += 1 + sovRpc(uint64(m.CompactRevision))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *HashResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.Hash != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Hash))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *SnapshotRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *SnapshotResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.RemainingBytes != 0 {\n\t\tn += 1 + sovRpc(uint64(m.RemainingBytes))\n\t}\n\tl = len(m.Blob)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *WatchRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RequestUnion != nil {\n\t\tn += m.RequestUnion.Size()\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *WatchRequest_CreateRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.CreateRequest != nil {\n\t\tl = m.CreateRequest.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *WatchRequest_CancelRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.CancelRequest != nil {\n\t\tl = m.CancelRequest.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *WatchRequest_ProgressRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ProgressRequest != nil {\n\t\tl = m.ProgressRequest.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *WatchCreateRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.RangeEnd)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.StartRevision != 0 {\n\t\tn += 1 + sovRpc(uint64(m.StartRevision))\n\t}\n\tif m.ProgressNotify {\n\t\tn += 2\n\t}\n\tif len(m.Filters) > 0 {\n\t\tl = 0\n\t\tfor _, e := range m.Filters {\n\t\t\tl += sovRpc(uint64(e))\n\t\t}\n\t\tn += 1 + sovRpc(uint64(l)) + l\n\t}\n\tif m.PrevKv {\n\t\tn += 2\n\t}\n\tif m.WatchId != 0 {\n\t\tn += 1 + sovRpc(uint64(m.WatchId))\n\t}\n\tif m.Fragment {\n\t\tn += 2\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *WatchCancelRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.WatchId != 0 {\n\t\tn += 1 + sovRpc(uint64(m.WatchId))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *WatchProgressRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *WatchResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.WatchId != 0 {\n\t\tn += 1 + sovRpc(uint64(m.WatchId))\n\t}\n\tif m.Created {\n\t\tn += 2\n\t}\n\tif m.Canceled {\n\t\tn += 2\n\t}\n\tif m.CompactRevision != 0 {\n\t\tn += 1 + sovRpc(uint64(m.CompactRevision))\n\t}\n\tl = len(m.CancelReason)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.Fragment {\n\t\tn += 2\n\t}\n\tif len(m.Events) > 0 {\n\t\tfor _, e := range m.Events {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseGrantRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.TTL != 0 {\n\t\tn += 1 + sovRpc(uint64(m.TTL))\n\t}\n\tif m.ID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ID))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseGrantResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.ID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ID))\n\t}\n\tif m.TTL != 0 {\n\t\tn += 1 + sovRpc(uint64(m.TTL))\n\t}\n\tl = len(m.Error)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseRevokeRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ID))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseRevokeResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseCheckpoint) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ID))\n\t}\n\tif m.Remaining_TTL != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Remaining_TTL))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseCheckpointRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Checkpoints) > 0 {\n\t\tfor _, e := range m.Checkpoints {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseCheckpointResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseKeepAliveRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ID))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseKeepAliveResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.ID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ID))\n\t}\n\tif m.TTL != 0 {\n\t\tn += 1 + sovRpc(uint64(m.TTL))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseTimeToLiveRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ID))\n\t}\n\tif m.Keys {\n\t\tn += 2\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseTimeToLiveResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.ID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ID))\n\t}\n\tif m.TTL != 0 {\n\t\tn += 1 + sovRpc(uint64(m.TTL))\n\t}\n\tif m.GrantedTTL != 0 {\n\t\tn += 1 + sovRpc(uint64(m.GrantedTTL))\n\t}\n\tif len(m.Keys) > 0 {\n\t\tfor _, b := range m.Keys {\n\t\t\tl = len(b)\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseLeasesRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseStatus) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ID))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *LeaseLeasesResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif len(m.Leases) > 0 {\n\t\tfor _, e := range m.Leases {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *Member) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ID))\n\t}\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif len(m.PeerURLs) > 0 {\n\t\tfor _, s := range m.PeerURLs {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif len(m.ClientURLs) > 0 {\n\t\tfor _, s := range m.ClientURLs {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.IsLearner {\n\t\tn += 2\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *MemberAddRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.PeerURLs) > 0 {\n\t\tfor _, s := range m.PeerURLs {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.IsLearner {\n\t\tn += 2\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *MemberAddResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.Member != nil {\n\t\tl = m.Member.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif len(m.Members) > 0 {\n\t\tfor _, e := range m.Members {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *MemberRemoveRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ID))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *MemberRemoveResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif len(m.Members) > 0 {\n\t\tfor _, e := range m.Members {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *MemberUpdateRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ID))\n\t}\n\tif len(m.PeerURLs) > 0 {\n\t\tfor _, s := range m.PeerURLs {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *MemberUpdateResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif len(m.Members) > 0 {\n\t\tfor _, e := range m.Members {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *MemberListRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Linearizable {\n\t\tn += 2\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *MemberListResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif len(m.Members) > 0 {\n\t\tfor _, e := range m.Members {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *MemberPromoteRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.ID))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *MemberPromoteResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif len(m.Members) > 0 {\n\t\tfor _, e := range m.Members {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *DefragmentRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *DefragmentResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *MoveLeaderRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.TargetID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.TargetID))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *MoveLeaderResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AlarmRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Action != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Action))\n\t}\n\tif m.MemberID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.MemberID))\n\t}\n\tif m.Alarm != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Alarm))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AlarmMember) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.MemberID != 0 {\n\t\tn += 1 + sovRpc(uint64(m.MemberID))\n\t}\n\tif m.Alarm != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Alarm))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AlarmResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif len(m.Alarms) > 0 {\n\t\tfor _, e := range m.Alarms {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *DowngradeRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Action != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Action))\n\t}\n\tl = len(m.Version)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *DowngradeResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.Version)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *StatusRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *StatusResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.Version)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.DbSize != 0 {\n\t\tn += 1 + sovRpc(uint64(m.DbSize))\n\t}\n\tif m.Leader != 0 {\n\t\tn += 1 + sovRpc(uint64(m.Leader))\n\t}\n\tif m.RaftIndex != 0 {\n\t\tn += 1 + sovRpc(uint64(m.RaftIndex))\n\t}\n\tif m.RaftTerm != 0 {\n\t\tn += 1 + sovRpc(uint64(m.RaftTerm))\n\t}\n\tif m.RaftAppliedIndex != 0 {\n\t\tn += 1 + sovRpc(uint64(m.RaftAppliedIndex))\n\t}\n\tif len(m.Errors) > 0 {\n\t\tfor _, s := range m.Errors {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.DbSizeInUse != 0 {\n\t\tn += 1 + sovRpc(uint64(m.DbSizeInUse))\n\t}\n\tif m.IsLearner {\n\t\tn += 2\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthEnableRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthDisableRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthStatusRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthenticateRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.Password)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserAddRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.Password)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.Options != nil {\n\t\tl = m.Options.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.HashedPassword)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserGetRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserDeleteRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserChangePasswordRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.Password)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.HashedPassword)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserGrantRoleRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.User)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.Role)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserRevokeRoleRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.Role)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthRoleAddRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthRoleGetRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Role)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserListRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthRoleListRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthRoleDeleteRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Role)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthRoleGrantPermissionRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.Perm != nil {\n\t\tl = m.Perm.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthRoleRevokePermissionRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Role)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.RangeEnd)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthEnableResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthDisableResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthStatusResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.Enabled {\n\t\tn += 2\n\t}\n\tif m.AuthRevision != 0 {\n\t\tn += 1 + sovRpc(uint64(m.AuthRevision))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthenticateResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tl = len(m.Token)\n\tif l > 0 {\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserAddResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserGetResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif len(m.Roles) > 0 {\n\t\tfor _, s := range m.Roles {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserDeleteResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserChangePasswordResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserGrantRoleResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserRevokeRoleResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthRoleAddResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthRoleGetResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif len(m.Perm) > 0 {\n\t\tfor _, e := range m.Perm {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthRoleListResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif len(m.Roles) > 0 {\n\t\tfor _, s := range m.Roles {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthUserListResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif len(m.Users) > 0 {\n\t\tfor _, s := range m.Users {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovRpc(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthRoleDeleteResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthRoleGrantPermissionResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *AuthRoleRevokePermissionResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Header != nil {\n\t\tl = m.Header.Size()\n\t\tn += 1 + l + sovRpc(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc sovRpc(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozRpc(x uint64) (n int) {\n\treturn sovRpc(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *ResponseHeader) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ResponseHeader: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ResponseHeader: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ClusterId\", wireType)\n\t\t\t}\n\t\t\tm.ClusterId = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ClusterId |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MemberId\", wireType)\n\t\t\t}\n\t\t\tm.MemberId = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.MemberId |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Revision\", wireType)\n\t\t\t}\n\t\t\tm.Revision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Revision |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RaftTerm\", wireType)\n\t\t\t}\n\t\t\tm.RaftTerm = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.RaftTerm |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *RangeRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RangeRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RangeRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Key\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Key == nil {\n\t\t\t\tm.Key = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RangeEnd\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RangeEnd = append(m.RangeEnd[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.RangeEnd == nil {\n\t\t\t\tm.RangeEnd = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Limit\", wireType)\n\t\t\t}\n\t\t\tm.Limit = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Limit |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Revision\", wireType)\n\t\t\t}\n\t\t\tm.Revision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Revision |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 5:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field SortOrder\", wireType)\n\t\t\t}\n\t\t\tm.SortOrder = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.SortOrder |= RangeRequest_SortOrder(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 6:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field SortTarget\", wireType)\n\t\t\t}\n\t\t\tm.SortTarget = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.SortTarget |= RangeRequest_SortTarget(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 7:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Serializable\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Serializable = bool(v != 0)\n\t\tcase 8:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field KeysOnly\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.KeysOnly = bool(v != 0)\n\t\tcase 9:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CountOnly\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.CountOnly = bool(v != 0)\n\t\tcase 10:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MinModRevision\", wireType)\n\t\t\t}\n\t\t\tm.MinModRevision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.MinModRevision |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 11:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MaxModRevision\", wireType)\n\t\t\t}\n\t\t\tm.MaxModRevision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.MaxModRevision |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 12:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MinCreateRevision\", wireType)\n\t\t\t}\n\t\t\tm.MinCreateRevision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.MinCreateRevision |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 13:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MaxCreateRevision\", wireType)\n\t\t\t}\n\t\t\tm.MaxCreateRevision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.MaxCreateRevision |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *RangeResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RangeResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RangeResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Kvs\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Kvs = append(m.Kvs, &mvccpb.KeyValue{})\n\t\t\tif err := m.Kvs[len(m.Kvs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field More\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.More = bool(v != 0)\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Count\", wireType)\n\t\t\t}\n\t\t\tm.Count = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Count |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *PutRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: PutRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: PutRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Key\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Key == nil {\n\t\t\t\tm.Key = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Value == nil {\n\t\t\t\tm.Value = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Lease\", wireType)\n\t\t\t}\n\t\t\tm.Lease = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Lease |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PrevKv\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.PrevKv = bool(v != 0)\n\t\tcase 5:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IgnoreValue\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.IgnoreValue = bool(v != 0)\n\t\tcase 6:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IgnoreLease\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.IgnoreLease = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *PutResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: PutResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: PutResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PrevKv\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.PrevKv == nil {\n\t\t\t\tm.PrevKv = &mvccpb.KeyValue{}\n\t\t\t}\n\t\t\tif err := m.PrevKv.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DeleteRangeRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DeleteRangeRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DeleteRangeRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Key\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Key == nil {\n\t\t\t\tm.Key = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RangeEnd\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RangeEnd = append(m.RangeEnd[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.RangeEnd == nil {\n\t\t\t\tm.RangeEnd = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PrevKv\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.PrevKv = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DeleteRangeResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DeleteRangeResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DeleteRangeResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Deleted\", wireType)\n\t\t\t}\n\t\t\tm.Deleted = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Deleted |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PrevKvs\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PrevKvs = append(m.PrevKvs, &mvccpb.KeyValue{})\n\t\t\tif err := m.PrevKvs[len(m.PrevKvs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *RequestOp) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RequestOp: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RequestOp: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RequestRange\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &RangeRequest{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Request = &RequestOp_RequestRange{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RequestPut\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &PutRequest{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Request = &RequestOp_RequestPut{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RequestDeleteRange\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &DeleteRangeRequest{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Request = &RequestOp_RequestDeleteRange{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RequestTxn\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &TxnRequest{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Request = &RequestOp_RequestTxn{v}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ResponseOp) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ResponseOp: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ResponseOp: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ResponseRange\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &RangeResponse{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Response = &ResponseOp_ResponseRange{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ResponsePut\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &PutResponse{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Response = &ResponseOp_ResponsePut{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ResponseDeleteRange\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &DeleteRangeResponse{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Response = &ResponseOp_ResponseDeleteRange{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ResponseTxn\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &TxnResponse{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Response = &ResponseOp_ResponseTxn{v}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Compare) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Compare: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Compare: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Result\", wireType)\n\t\t\t}\n\t\t\tm.Result = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Result |= Compare_CompareResult(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Target\", wireType)\n\t\t\t}\n\t\t\tm.Target = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Target |= Compare_CompareTarget(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Key\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Key == nil {\n\t\t\t\tm.Key = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Version\", wireType)\n\t\t\t}\n\t\t\tvar v int64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.TargetUnion = &Compare_Version{v}\n\t\tcase 5:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreateRevision\", wireType)\n\t\t\t}\n\t\t\tvar v int64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.TargetUnion = &Compare_CreateRevision{v}\n\t\tcase 6:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ModRevision\", wireType)\n\t\t\t}\n\t\t\tvar v int64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.TargetUnion = &Compare_ModRevision{v}\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := make([]byte, postIndex-iNdEx)\n\t\t\tcopy(v, dAtA[iNdEx:postIndex])\n\t\t\tm.TargetUnion = &Compare_Value{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Lease\", wireType)\n\t\t\t}\n\t\t\tvar v int64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.TargetUnion = &Compare_Lease{v}\n\t\tcase 64:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RangeEnd\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RangeEnd = append(m.RangeEnd[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.RangeEnd == nil {\n\t\t\t\tm.RangeEnd = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *TxnRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: TxnRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: TxnRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Compare\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Compare = append(m.Compare, &Compare{})\n\t\t\tif err := m.Compare[len(m.Compare)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Success\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Success = append(m.Success, &RequestOp{})\n\t\t\tif err := m.Success[len(m.Success)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Failure\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Failure = append(m.Failure, &RequestOp{})\n\t\t\tif err := m.Failure[len(m.Failure)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *TxnResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: TxnResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: TxnResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Succeeded\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Succeeded = bool(v != 0)\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Responses\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Responses = append(m.Responses, &ResponseOp{})\n\t\t\tif err := m.Responses[len(m.Responses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *CompactionRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: CompactionRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: CompactionRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Revision\", wireType)\n\t\t\t}\n\t\t\tm.Revision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Revision |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Physical\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Physical = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *CompactionResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: CompactionResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: CompactionResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *HashRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: HashRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: HashRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *HashKVRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: HashKVRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: HashKVRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Revision\", wireType)\n\t\t\t}\n\t\t\tm.Revision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Revision |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *HashKVResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: HashKVResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: HashKVResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Hash\", wireType)\n\t\t\t}\n\t\t\tm.Hash = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Hash |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CompactRevision\", wireType)\n\t\t\t}\n\t\t\tm.CompactRevision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CompactRevision |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *HashResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: HashResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: HashResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Hash\", wireType)\n\t\t\t}\n\t\t\tm.Hash = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Hash |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *SnapshotRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: SnapshotRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: SnapshotRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *SnapshotResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: SnapshotResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: SnapshotResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RemainingBytes\", wireType)\n\t\t\t}\n\t\t\tm.RemainingBytes = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.RemainingBytes |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Blob\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Blob = append(m.Blob[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Blob == nil {\n\t\t\t\tm.Blob = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *WatchRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: WatchRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: WatchRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreateRequest\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &WatchCreateRequest{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.RequestUnion = &WatchRequest_CreateRequest{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CancelRequest\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &WatchCancelRequest{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.RequestUnion = &WatchRequest_CancelRequest{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ProgressRequest\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &WatchProgressRequest{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.RequestUnion = &WatchRequest_ProgressRequest{v}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *WatchCreateRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: WatchCreateRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: WatchCreateRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Key\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Key == nil {\n\t\t\t\tm.Key = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RangeEnd\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RangeEnd = append(m.RangeEnd[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.RangeEnd == nil {\n\t\t\t\tm.RangeEnd = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field StartRevision\", wireType)\n\t\t\t}\n\t\t\tm.StartRevision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.StartRevision |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ProgressNotify\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.ProgressNotify = bool(v != 0)\n\t\tcase 5:\n\t\t\tif wireType == 0 {\n\t\t\t\tvar v WatchCreateRequest_FilterType\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= WatchCreateRequest_FilterType(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tm.Filters = append(m.Filters, v)\n\t\t\t} else if wireType == 2 {\n\t\t\t\tvar packedLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tpackedLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif packedLen < 0 {\n\t\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + packedLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tvar elementCount int\n\t\t\t\tif elementCount != 0 && len(m.Filters) == 0 {\n\t\t\t\t\tm.Filters = make([]WatchCreateRequest_FilterType, 0, elementCount)\n\t\t\t\t}\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tvar v WatchCreateRequest_FilterType\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\tv |= WatchCreateRequest_FilterType(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tm.Filters = append(m.Filters, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Filters\", wireType)\n\t\t\t}\n\t\tcase 6:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PrevKv\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.PrevKv = bool(v != 0)\n\t\tcase 7:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field WatchId\", wireType)\n\t\t\t}\n\t\t\tm.WatchId = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.WatchId |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 8:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Fragment\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Fragment = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *WatchCancelRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: WatchCancelRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: WatchCancelRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field WatchId\", wireType)\n\t\t\t}\n\t\t\tm.WatchId = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.WatchId |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *WatchProgressRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: WatchProgressRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: WatchProgressRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *WatchResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: WatchResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: WatchResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field WatchId\", wireType)\n\t\t\t}\n\t\t\tm.WatchId = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.WatchId |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Created\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Created = bool(v != 0)\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Canceled\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Canceled = bool(v != 0)\n\t\tcase 5:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CompactRevision\", wireType)\n\t\t\t}\n\t\t\tm.CompactRevision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CompactRevision |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CancelReason\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CancelReason = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Fragment\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Fragment = bool(v != 0)\n\t\tcase 11:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Events\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Events = append(m.Events, &mvccpb.Event{})\n\t\t\tif err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseGrantRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseGrantRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseGrantRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TTL\", wireType)\n\t\t\t}\n\t\t\tm.TTL = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.TTL |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseGrantResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseGrantResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseGrantResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TTL\", wireType)\n\t\t\t}\n\t\t\tm.TTL = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.TTL |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Error\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Error = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseRevokeRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseRevokeRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseRevokeRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseRevokeResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseRevokeResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseRevokeResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseCheckpoint) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseCheckpoint: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseCheckpoint: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Remaining_TTL\", wireType)\n\t\t\t}\n\t\t\tm.Remaining_TTL = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Remaining_TTL |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseCheckpointRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseCheckpointRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseCheckpointRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Checkpoints\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Checkpoints = append(m.Checkpoints, &LeaseCheckpoint{})\n\t\t\tif err := m.Checkpoints[len(m.Checkpoints)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseCheckpointResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseCheckpointResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseCheckpointResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseKeepAliveRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseKeepAliveRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseKeepAliveRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseKeepAliveResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseKeepAliveResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseKeepAliveResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TTL\", wireType)\n\t\t\t}\n\t\t\tm.TTL = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.TTL |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseTimeToLiveRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseTimeToLiveRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseTimeToLiveRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Keys\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Keys = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseTimeToLiveResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseTimeToLiveResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseTimeToLiveResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TTL\", wireType)\n\t\t\t}\n\t\t\tm.TTL = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.TTL |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field GrantedTTL\", wireType)\n\t\t\t}\n\t\t\tm.GrantedTTL = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.GrantedTTL |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Keys\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Keys = append(m.Keys, make([]byte, postIndex-iNdEx))\n\t\t\tcopy(m.Keys[len(m.Keys)-1], dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseLeasesRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseLeasesRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseLeasesRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseStatus) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseStatus: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseStatus: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LeaseLeasesResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseLeasesResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LeaseLeasesResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Leases\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Leases = append(m.Leases, &LeaseStatus{})\n\t\t\tif err := m.Leases[len(m.Leases)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Member) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Member: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Member: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PeerURLs\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PeerURLs = append(m.PeerURLs, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ClientURLs\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ClientURLs = append(m.ClientURLs, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IsLearner\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.IsLearner = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MemberAddRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MemberAddRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MemberAddRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PeerURLs\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PeerURLs = append(m.PeerURLs, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IsLearner\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.IsLearner = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MemberAddResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MemberAddResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MemberAddResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Member\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Member == nil {\n\t\t\t\tm.Member = &Member{}\n\t\t\t}\n\t\t\tif err := m.Member.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Members\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Members = append(m.Members, &Member{})\n\t\t\tif err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MemberRemoveRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MemberRemoveRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MemberRemoveRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MemberRemoveResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MemberRemoveResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MemberRemoveResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Members\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Members = append(m.Members, &Member{})\n\t\t\tif err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MemberUpdateRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MemberUpdateRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MemberUpdateRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PeerURLs\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PeerURLs = append(m.PeerURLs, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MemberUpdateResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MemberUpdateResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MemberUpdateResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Members\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Members = append(m.Members, &Member{})\n\t\t\tif err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MemberListRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MemberListRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MemberListRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Linearizable\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Linearizable = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MemberListResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MemberListResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MemberListResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Members\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Members = append(m.Members, &Member{})\n\t\t\tif err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MemberPromoteRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MemberPromoteRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MemberPromoteRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MemberPromoteResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MemberPromoteResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MemberPromoteResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Members\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Members = append(m.Members, &Member{})\n\t\t\tif err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DefragmentRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DefragmentRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DefragmentRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DefragmentResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DefragmentResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DefragmentResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MoveLeaderRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MoveLeaderRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MoveLeaderRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TargetID\", wireType)\n\t\t\t}\n\t\t\tm.TargetID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.TargetID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MoveLeaderResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MoveLeaderResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MoveLeaderResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AlarmRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AlarmRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AlarmRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Action\", wireType)\n\t\t\t}\n\t\t\tm.Action = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Action |= AlarmRequest_AlarmAction(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MemberID\", wireType)\n\t\t\t}\n\t\t\tm.MemberID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.MemberID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Alarm\", wireType)\n\t\t\t}\n\t\t\tm.Alarm = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Alarm |= AlarmType(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AlarmMember) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AlarmMember: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AlarmMember: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MemberID\", wireType)\n\t\t\t}\n\t\t\tm.MemberID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.MemberID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Alarm\", wireType)\n\t\t\t}\n\t\t\tm.Alarm = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Alarm |= AlarmType(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AlarmResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AlarmResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AlarmResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Alarms\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Alarms = append(m.Alarms, &AlarmMember{})\n\t\t\tif err := m.Alarms[len(m.Alarms)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DowngradeRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DowngradeRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DowngradeRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Action\", wireType)\n\t\t\t}\n\t\t\tm.Action = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Action |= DowngradeRequest_DowngradeAction(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Version\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Version = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DowngradeResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DowngradeResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DowngradeResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Version\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Version = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *StatusRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: StatusRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: StatusRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *StatusResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: StatusResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: StatusResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Version\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Version = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DbSize\", wireType)\n\t\t\t}\n\t\t\tm.DbSize = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.DbSize |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Leader\", wireType)\n\t\t\t}\n\t\t\tm.Leader = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Leader |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 5:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RaftIndex\", wireType)\n\t\t\t}\n\t\t\tm.RaftIndex = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.RaftIndex |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 6:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RaftTerm\", wireType)\n\t\t\t}\n\t\t\tm.RaftTerm = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.RaftTerm |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 7:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RaftAppliedIndex\", wireType)\n\t\t\t}\n\t\t\tm.RaftAppliedIndex = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.RaftAppliedIndex |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Errors\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Errors = append(m.Errors, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 9:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DbSizeInUse\", wireType)\n\t\t\t}\n\t\t\tm.DbSizeInUse = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.DbSizeInUse |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 10:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IsLearner\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.IsLearner = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthEnableRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthEnableRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthEnableRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthDisableRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthDisableRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthDisableRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthStatusRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthStatusRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthStatusRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthenticateRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthenticateRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthenticateRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Password\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Password = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserAddRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserAddRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserAddRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Password\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Password = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Options\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Options == nil {\n\t\t\t\tm.Options = &authpb.UserAddOptions{}\n\t\t\t}\n\t\t\tif err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field HashedPassword\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.HashedPassword = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserGetRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserGetRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserGetRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserDeleteRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserDeleteRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserDeleteRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserChangePasswordRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserChangePasswordRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserChangePasswordRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Password\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Password = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field HashedPassword\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.HashedPassword = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserGrantRoleRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserGrantRoleRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserGrantRoleRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field User\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.User = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Role\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Role = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserRevokeRoleRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserRevokeRoleRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserRevokeRoleRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Role\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Role = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthRoleAddRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleAddRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleAddRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthRoleGetRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleGetRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleGetRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Role\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Role = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserListRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserListRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserListRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthRoleListRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleListRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleListRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthRoleDeleteRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleDeleteRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleDeleteRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Role\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Role = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthRoleGrantPermissionRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleGrantPermissionRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleGrantPermissionRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Perm\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Perm == nil {\n\t\t\t\tm.Perm = &authpb.Permission{}\n\t\t\t}\n\t\t\tif err := m.Perm.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthRoleRevokePermissionRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleRevokePermissionRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleRevokePermissionRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Role\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Role = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Key\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Key == nil {\n\t\t\t\tm.Key = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RangeEnd\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RangeEnd = append(m.RangeEnd[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.RangeEnd == nil {\n\t\t\t\tm.RangeEnd = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthEnableResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthEnableResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthEnableResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthDisableResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthDisableResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthDisableResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthStatusResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthStatusResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthStatusResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Enabled\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Enabled = bool(v != 0)\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthRevision\", wireType)\n\t\t\t}\n\t\t\tm.AuthRevision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.AuthRevision |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthenticateResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthenticateResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthenticateResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Token\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Token = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserAddResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserAddResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserAddResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserGetResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserGetResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserGetResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Roles\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserDeleteResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserDeleteResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserDeleteResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserChangePasswordResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserChangePasswordResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserChangePasswordResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserGrantRoleResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserGrantRoleResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserGrantRoleResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserRevokeRoleResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserRevokeRoleResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserRevokeRoleResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthRoleAddResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleAddResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleAddResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthRoleGetResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleGetResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleGetResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Perm\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Perm = append(m.Perm, &authpb.Permission{})\n\t\t\tif err := m.Perm[len(m.Perm)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthRoleListResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleListResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleListResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Roles\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthUserListResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserListResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthUserListResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Users\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Users = append(m.Users, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthRoleDeleteResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleDeleteResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleDeleteResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthRoleGrantPermissionResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleGrantPermissionResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleGrantPermissionResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AuthRoleRevokePermissionResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleRevokePermissionResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AuthRoleRevokePermissionResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Header\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Header == nil {\n\t\t\t\tm.Header = &ResponseHeader{}\n\t\t\t}\n\t\t\tif err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRpc(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipRpc(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowRpc\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowRpc\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthRpc\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupRpc\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthRpc\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthRpc        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowRpc          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupRpc = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/etcdserverpb/rpc.proto",
    "content": "syntax = \"proto3\";\npackage etcdserverpb;\n\nimport \"gogoproto/gogo.proto\";\nimport \"etcd/api/mvccpb/kv.proto\";\nimport \"etcd/api/authpb/auth.proto\";\n\n// for grpc-gateway\nimport \"google/api/annotations.proto\";\n\noption (gogoproto.marshaler_all) = true;\noption (gogoproto.unmarshaler_all) = true;\n\nservice KV {\n  // Range gets the keys in the range from the key-value store.\n  rpc Range(RangeRequest) returns (RangeResponse) {\n      option (google.api.http) = {\n        post: \"/v3/kv/range\"\n        body: \"*\"\n    };\n  }\n\n  // Put puts the given key into the key-value store.\n  // A put request increments the revision of the key-value store\n  // and generates one event in the event history.\n  rpc Put(PutRequest) returns (PutResponse) {\n      option (google.api.http) = {\n        post: \"/v3/kv/put\"\n        body: \"*\"\n    };\n  }\n\n  // DeleteRange deletes the given range from the key-value store.\n  // A delete request increments the revision of the key-value store\n  // and generates a delete event in the event history for every deleted key.\n  rpc DeleteRange(DeleteRangeRequest) returns (DeleteRangeResponse) {\n      option (google.api.http) = {\n        post: \"/v3/kv/deleterange\"\n        body: \"*\"\n    };\n  }\n\n  // Txn processes multiple requests in a single transaction.\n  // A txn request increments the revision of the key-value store\n  // and generates events with the same revision for every completed request.\n  // It is not allowed to modify the same key several times within one txn.\n  rpc Txn(TxnRequest) returns (TxnResponse) {\n      option (google.api.http) = {\n        post: \"/v3/kv/txn\"\n        body: \"*\"\n    };\n  }\n\n  // Compact compacts the event history in the etcd key-value store. The key-value\n  // store should be periodically compacted or the event history will continue to grow\n  // indefinitely.\n  rpc Compact(CompactionRequest) returns (CompactionResponse) {\n      option (google.api.http) = {\n        post: \"/v3/kv/compaction\"\n        body: \"*\"\n    };\n  }\n}\n\nservice Watch {\n  // Watch watches for events happening or that have happened. Both input and output\n  // are streams; the input stream is for creating and canceling watchers and the output\n  // stream sends events. One watch RPC can watch on multiple key ranges, streaming events\n  // for several watches at once. The entire event history can be watched starting from the\n  // last compaction revision.\n  rpc Watch(stream WatchRequest) returns (stream WatchResponse) {\n      option (google.api.http) = {\n        post: \"/v3/watch\"\n        body: \"*\"\n    };\n  }\n}\n\nservice Lease {\n  // LeaseGrant creates a lease which expires if the server does not receive a keepAlive\n  // within a given time to live period. All keys attached to the lease will be expired and\n  // deleted if the lease expires. Each expired key generates a delete event in the event history.\n  rpc LeaseGrant(LeaseGrantRequest) returns (LeaseGrantResponse) {\n      option (google.api.http) = {\n        post: \"/v3/lease/grant\"\n        body: \"*\"\n    };\n  }\n\n  // LeaseRevoke revokes a lease. All keys attached to the lease will expire and be deleted.\n  rpc LeaseRevoke(LeaseRevokeRequest) returns (LeaseRevokeResponse) {\n      option (google.api.http) = {\n        post: \"/v3/lease/revoke\"\n        body: \"*\"\n        additional_bindings {\n            post: \"/v3/kv/lease/revoke\"\n            body: \"*\"\n        }\n    };\n  }\n\n  // LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client\n  // to the server and streaming keep alive responses from the server to the client.\n  rpc LeaseKeepAlive(stream LeaseKeepAliveRequest) returns (stream LeaseKeepAliveResponse) {\n      option (google.api.http) = {\n        post: \"/v3/lease/keepalive\"\n        body: \"*\"\n    };\n  }\n\n  // LeaseTimeToLive retrieves lease information.\n  rpc LeaseTimeToLive(LeaseTimeToLiveRequest) returns (LeaseTimeToLiveResponse) {\n      option (google.api.http) = {\n        post: \"/v3/lease/timetolive\"\n        body: \"*\"\n        additional_bindings {\n            post: \"/v3/kv/lease/timetolive\"\n            body: \"*\"\n        }\n    };\n  }\n\n  // LeaseLeases lists all existing leases.\n  rpc LeaseLeases(LeaseLeasesRequest) returns (LeaseLeasesResponse) {\n      option (google.api.http) = {\n        post: \"/v3/lease/leases\"\n        body: \"*\"\n        additional_bindings {\n            post: \"/v3/kv/lease/leases\"\n            body: \"*\"\n        }\n    };\n  }\n}\n\nservice Cluster {\n  // MemberAdd adds a member into the cluster.\n  rpc MemberAdd(MemberAddRequest) returns (MemberAddResponse) {\n      option (google.api.http) = {\n        post: \"/v3/cluster/member/add\"\n        body: \"*\"\n    };\n  }\n\n  // MemberRemove removes an existing member from the cluster.\n  rpc MemberRemove(MemberRemoveRequest) returns (MemberRemoveResponse) {\n      option (google.api.http) = {\n        post: \"/v3/cluster/member/remove\"\n        body: \"*\"\n    };\n  }\n\n  // MemberUpdate updates the member configuration.\n  rpc MemberUpdate(MemberUpdateRequest) returns (MemberUpdateResponse) {\n      option (google.api.http) = {\n        post: \"/v3/cluster/member/update\"\n        body: \"*\"\n    };\n  }\n\n  // MemberList lists all the members in the cluster.\n  rpc MemberList(MemberListRequest) returns (MemberListResponse) {\n      option (google.api.http) = {\n        post: \"/v3/cluster/member/list\"\n        body: \"*\"\n    };\n  }\n\n  // MemberPromote promotes a member from raft learner (non-voting) to raft voting member.\n  rpc MemberPromote(MemberPromoteRequest) returns (MemberPromoteResponse) {\n      option (google.api.http) = {\n        post: \"/v3/cluster/member/promote\"\n        body: \"*\"\n    };\n  }\n}\n\nservice Maintenance {\n  // Alarm activates, deactivates, and queries alarms regarding cluster health.\n  rpc Alarm(AlarmRequest) returns (AlarmResponse) {\n      option (google.api.http) = {\n        post: \"/v3/maintenance/alarm\"\n        body: \"*\"\n    };\n  }\n\n  // Status gets the status of the member.\n  rpc Status(StatusRequest) returns (StatusResponse) {\n      option (google.api.http) = {\n        post: \"/v3/maintenance/status\"\n        body: \"*\"\n    };\n  }\n\n  // Defragment defragments a member's backend database to recover storage space.\n  rpc Defragment(DefragmentRequest) returns (DefragmentResponse) {\n      option (google.api.http) = {\n        post: \"/v3/maintenance/defragment\"\n        body: \"*\"\n    };\n  }\n\n  // Hash computes the hash of whole backend keyspace,\n  // including key, lease, and other buckets in storage.\n  // This is designed for testing ONLY!\n  // Do not rely on this in production with ongoing transactions,\n  // since Hash operation does not hold MVCC locks.\n  // Use \"HashKV\" API instead for \"key\" bucket consistency checks.\n  rpc Hash(HashRequest) returns (HashResponse) {\n      option (google.api.http) = {\n        post: \"/v3/maintenance/hash\"\n        body: \"*\"\n    };\n  }\n\n  // HashKV computes the hash of all MVCC keys up to a given revision.\n  // It only iterates \"key\" bucket in backend storage.\n  rpc HashKV(HashKVRequest) returns (HashKVResponse) {\n      option (google.api.http) = {\n        post: \"/v3/maintenance/hashkv\"\n        body: \"*\"\n    };\n  }\n\n  // Snapshot sends a snapshot of the entire backend from a member over a stream to a client.\n  rpc Snapshot(SnapshotRequest) returns (stream SnapshotResponse) {\n      option (google.api.http) = {\n        post: \"/v3/maintenance/snapshot\"\n        body: \"*\"\n    };\n  }\n\n  // MoveLeader requests current leader node to transfer its leadership to transferee.\n  rpc MoveLeader(MoveLeaderRequest) returns (MoveLeaderResponse) {\n      option (google.api.http) = {\n        post: \"/v3/maintenance/transfer-leadership\"\n        body: \"*\"\n    };\n  }\n\n  // Downgrade requests downgrades, verifies feasibility or cancels downgrade\n  // on the cluster version.\n  // Supported since etcd 3.5.\n  rpc Downgrade(DowngradeRequest) returns (DowngradeResponse) {\n    option (google.api.http) = {\n      post: \"/v3/maintenance/downgrade\"\n      body: \"*\"\n    };\n  }\n}\n\nservice Auth {\n  // AuthEnable enables authentication.\n  rpc AuthEnable(AuthEnableRequest) returns (AuthEnableResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/enable\"\n        body: \"*\"\n    };\n  }\n\n  // AuthDisable disables authentication.\n  rpc AuthDisable(AuthDisableRequest) returns (AuthDisableResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/disable\"\n        body: \"*\"\n    };\n  }\n\n  // AuthStatus displays authentication status.\n  rpc AuthStatus(AuthStatusRequest) returns (AuthStatusResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/status\"\n        body: \"*\"\n    };\n  }\n\n  // Authenticate processes an authenticate request.\n  rpc Authenticate(AuthenticateRequest) returns (AuthenticateResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/authenticate\"\n        body: \"*\"\n    };\n  }\n\n  // UserAdd adds a new user. User name cannot be empty.\n  rpc UserAdd(AuthUserAddRequest) returns (AuthUserAddResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/user/add\"\n        body: \"*\"\n    };\n  }\n\n  // UserGet gets detailed user information.\n  rpc UserGet(AuthUserGetRequest) returns (AuthUserGetResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/user/get\"\n        body: \"*\"\n    };\n  }\n\n  // UserList gets a list of all users.\n  rpc UserList(AuthUserListRequest) returns (AuthUserListResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/user/list\"\n        body: \"*\"\n    };\n  }\n\n  // UserDelete deletes a specified user.\n  rpc UserDelete(AuthUserDeleteRequest) returns (AuthUserDeleteResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/user/delete\"\n        body: \"*\"\n    };\n  }\n\n  // UserChangePassword changes the password of a specified user.\n  rpc UserChangePassword(AuthUserChangePasswordRequest) returns (AuthUserChangePasswordResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/user/changepw\"\n        body: \"*\"\n    };\n  }\n\n  // UserGrant grants a role to a specified user.\n  rpc UserGrantRole(AuthUserGrantRoleRequest) returns (AuthUserGrantRoleResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/user/grant\"\n        body: \"*\"\n    };\n  }\n\n  // UserRevokeRole revokes a role of specified user.\n  rpc UserRevokeRole(AuthUserRevokeRoleRequest) returns (AuthUserRevokeRoleResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/user/revoke\"\n        body: \"*\"\n    };\n  }\n\n  // RoleAdd adds a new role. Role name cannot be empty.\n  rpc RoleAdd(AuthRoleAddRequest) returns (AuthRoleAddResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/role/add\"\n        body: \"*\"\n    };\n  }\n\n  // RoleGet gets detailed role information.\n  rpc RoleGet(AuthRoleGetRequest) returns (AuthRoleGetResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/role/get\"\n        body: \"*\"\n    };\n  }\n\n  // RoleList gets lists of all roles.\n  rpc RoleList(AuthRoleListRequest) returns (AuthRoleListResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/role/list\"\n        body: \"*\"\n    };\n  }\n\n  // RoleDelete deletes a specified role.\n  rpc RoleDelete(AuthRoleDeleteRequest) returns (AuthRoleDeleteResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/role/delete\"\n        body: \"*\"\n    };\n  }\n\n  // RoleGrantPermission grants a permission of a specified key or range to a specified role.\n  rpc RoleGrantPermission(AuthRoleGrantPermissionRequest) returns (AuthRoleGrantPermissionResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/role/grant\"\n        body: \"*\"\n    };\n  }\n\n  // RoleRevokePermission revokes a key or range permission of a specified role.\n  rpc RoleRevokePermission(AuthRoleRevokePermissionRequest) returns (AuthRoleRevokePermissionResponse) {\n      option (google.api.http) = {\n        post: \"/v3/auth/role/revoke\"\n        body: \"*\"\n    };\n  }\n}\n\nmessage ResponseHeader {\n  // cluster_id is the ID of the cluster which sent the response.\n  uint64 cluster_id = 1;\n  // member_id is the ID of the member which sent the response.\n  uint64 member_id = 2;\n  // revision is the key-value store revision when the request was applied.\n  // For watch progress responses, the header.revision indicates progress. All future events\n  // recieved in this stream are guaranteed to have a higher revision number than the\n  // header.revision number.\n  int64 revision = 3;\n  // raft_term is the raft term when the request was applied.\n  uint64 raft_term = 4;\n}\n\nmessage RangeRequest {\n  enum SortOrder {\n\tNONE = 0; // default, no sorting\n\tASCEND = 1; // lowest target value first\n\tDESCEND = 2; // highest target value first\n  }\n  enum SortTarget {\n\tKEY = 0;\n\tVERSION = 1;\n\tCREATE = 2;\n\tMOD = 3;\n\tVALUE = 4;\n  }\n\n  // key is the first key for the range. If range_end is not given, the request only looks up key.\n  bytes key = 1;\n  // range_end is the upper bound on the requested range [key, range_end).\n  // If range_end is '\\0', the range is all keys >= key.\n  // If range_end is key plus one (e.g., \"aa\"+1 == \"ab\", \"a\\xff\"+1 == \"b\"),\n  // then the range request gets all keys prefixed with key.\n  // If both key and range_end are '\\0', then the range request returns all keys.\n  bytes range_end = 2;\n  // limit is a limit on the number of keys returned for the request. When limit is set to 0,\n  // it is treated as no limit.\n  int64 limit = 3;\n  // revision is the point-in-time of the key-value store to use for the range.\n  // If revision is less or equal to zero, the range is over the newest key-value store.\n  // If the revision has been compacted, ErrCompacted is returned as a response.\n  int64 revision = 4;\n\n  // sort_order is the order for returned sorted results.\n  SortOrder sort_order = 5;\n\n  // sort_target is the key-value field to use for sorting.\n  SortTarget sort_target = 6;\n\n  // serializable sets the range request to use serializable member-local reads.\n  // Range requests are linearizable by default; linearizable requests have higher\n  // latency and lower throughput than serializable requests but reflect the current\n  // consensus of the cluster. For better performance, in exchange for possible stale reads,\n  // a serializable range request is served locally without needing to reach consensus\n  // with other nodes in the cluster.\n  bool serializable = 7;\n\n  // keys_only when set returns only the keys and not the values.\n  bool keys_only = 8;\n\n  // count_only when set returns only the count of the keys in the range.\n  bool count_only = 9;\n\n  // min_mod_revision is the lower bound for returned key mod revisions; all keys with\n  // lesser mod revisions will be filtered away.\n  int64 min_mod_revision = 10;\n\n  // max_mod_revision is the upper bound for returned key mod revisions; all keys with\n  // greater mod revisions will be filtered away.\n  int64 max_mod_revision = 11;\n\n  // min_create_revision is the lower bound for returned key create revisions; all keys with\n  // lesser create revisions will be filtered away.\n  int64 min_create_revision = 12;\n\n  // max_create_revision is the upper bound for returned key create revisions; all keys with\n  // greater create revisions will be filtered away.\n  int64 max_create_revision = 13;\n}\n\nmessage RangeResponse {\n  ResponseHeader header = 1;\n  // kvs is the list of key-value pairs matched by the range request.\n  // kvs is empty when count is requested.\n  repeated mvccpb.KeyValue kvs = 2;\n  // more indicates if there are more keys to return in the requested range.\n  bool more = 3;\n  // count is set to the number of keys within the range when requested.\n  int64 count = 4;\n}\n\nmessage PutRequest {\n  // key is the key, in bytes, to put into the key-value store.\n  bytes key = 1;\n  // value is the value, in bytes, to associate with the key in the key-value store.\n  bytes value = 2;\n  // lease is the lease ID to associate with the key in the key-value store. A lease\n  // value of 0 indicates no lease.\n  int64 lease = 3;\n\n  // If prev_kv is set, etcd gets the previous key-value pair before changing it.\n  // The previous key-value pair will be returned in the put response.\n  bool prev_kv = 4;\n\n  // If ignore_value is set, etcd updates the key using its current value.\n  // Returns an error if the key does not exist.\n  bool ignore_value = 5;\n\n  // If ignore_lease is set, etcd updates the key using its current lease.\n  // Returns an error if the key does not exist.\n  bool ignore_lease = 6;\n}\n\nmessage PutResponse {\n  ResponseHeader header = 1;\n  // if prev_kv is set in the request, the previous key-value pair will be returned.\n  mvccpb.KeyValue prev_kv = 2;\n}\n\nmessage DeleteRangeRequest {\n  // key is the first key to delete in the range.\n  bytes key = 1;\n  // range_end is the key following the last key to delete for the range [key, range_end).\n  // If range_end is not given, the range is defined to contain only the key argument.\n  // If range_end is one bit larger than the given key, then the range is all the keys\n  // with the prefix (the given key).\n  // If range_end is '\\0', the range is all keys greater than or equal to the key argument.\n  bytes range_end = 2;\n\n  // If prev_kv is set, etcd gets the previous key-value pairs before deleting it.\n  // The previous key-value pairs will be returned in the delete response.\n  bool prev_kv = 3;\n}\n\nmessage DeleteRangeResponse {\n  ResponseHeader header = 1;\n  // deleted is the number of keys deleted by the delete range request.\n  int64 deleted = 2;\n  // if prev_kv is set in the request, the previous key-value pairs will be returned.\n  repeated mvccpb.KeyValue prev_kvs = 3;\n}\n\nmessage RequestOp {\n  // request is a union of request types accepted by a transaction.\n  oneof request {\n    RangeRequest request_range = 1;\n    PutRequest request_put = 2;\n    DeleteRangeRequest request_delete_range = 3;\n    TxnRequest request_txn = 4;\n  }\n}\n\nmessage ResponseOp {\n  // response is a union of response types returned by a transaction.\n  oneof response {\n    RangeResponse response_range = 1;\n    PutResponse response_put = 2;\n    DeleteRangeResponse response_delete_range = 3;\n    TxnResponse response_txn = 4;\n  }\n}\n\nmessage Compare {\n  enum CompareResult {\n    EQUAL = 0;\n    GREATER = 1;\n    LESS = 2;\n    NOT_EQUAL = 3;\n  }\n  enum CompareTarget {\n    VERSION = 0;\n    CREATE = 1;\n    MOD = 2;\n    VALUE = 3;\n    LEASE = 4;\n  }\n  // result is logical comparison operation for this comparison.\n  CompareResult result = 1;\n  // target is the key-value field to inspect for the comparison.\n  CompareTarget target = 2;\n  // key is the subject key for the comparison operation.\n  bytes key = 3;\n  oneof target_union {\n    // version is the version of the given key\n    int64 version = 4;\n    // create_revision is the creation revision of the given key\n    int64 create_revision = 5;\n    // mod_revision is the last modified revision of the given key.\n    int64 mod_revision = 6;\n    // value is the value of the given key, in bytes.\n    bytes value = 7;\n    // lease is the lease id of the given key.\n    int64 lease = 8;\n    // leave room for more target_union field tags, jump to 64\n  }\n\n  // range_end compares the given target to all keys in the range [key, range_end).\n  // See RangeRequest for more details on key ranges.\n  bytes range_end = 64;\n  // TODO: fill out with most of the rest of RangeRequest fields when needed.\n}\n\n// From google paxosdb paper:\n// Our implementation hinges around a powerful primitive which we call MultiOp. All other database\n// operations except for iteration are implemented as a single call to MultiOp. A MultiOp is applied atomically\n// and consists of three components:\n// 1. A list of tests called guard. Each test in guard checks a single entry in the database. It may check\n// for the absence or presence of a value, or compare with a given value. Two different tests in the guard\n// may apply to the same or different entries in the database. All tests in the guard are applied and\n// MultiOp returns the results. If all tests are true, MultiOp executes t op (see item 2 below), otherwise\n// it executes f op (see item 3 below).\n// 2. A list of database operations called t op. Each operation in the list is either an insert, delete, or\n// lookup operation, and applies to a single database entry. Two different operations in the list may apply\n// to the same or different entries in the database. These operations are executed\n// if guard evaluates to\n// true.\n// 3. A list of database operations called f op. Like t op, but executed if guard evaluates to false.\nmessage TxnRequest {\n  // compare is a list of predicates representing a conjunction of terms.\n  // If the comparisons succeed, then the success requests will be processed in order,\n  // and the response will contain their respective responses in order.\n  // If the comparisons fail, then the failure requests will be processed in order,\n  // and the response will contain their respective responses in order.\n  repeated Compare compare = 1;\n  // success is a list of requests which will be applied when compare evaluates to true.\n  repeated RequestOp success = 2;\n  // failure is a list of requests which will be applied when compare evaluates to false.\n  repeated RequestOp failure = 3;\n}\n\nmessage TxnResponse {\n  ResponseHeader header = 1;\n  // succeeded is set to true if the compare evaluated to true or false otherwise.\n  bool succeeded = 2;\n  // responses is a list of responses corresponding to the results from applying\n  // success if succeeded is true or failure if succeeded is false.\n  repeated ResponseOp responses = 3;\n}\n\n// CompactionRequest compacts the key-value store up to a given revision. All superseded keys\n// with a revision less than the compaction revision will be removed.\nmessage CompactionRequest {\n  // revision is the key-value store revision for the compaction operation.\n  int64 revision = 1;\n  // physical is set so the RPC will wait until the compaction is physically\n  // applied to the local database such that compacted entries are totally\n  // removed from the backend database.\n  bool physical = 2;\n}\n\nmessage CompactionResponse {\n  ResponseHeader header = 1;\n}\n\nmessage HashRequest {\n}\n\nmessage HashKVRequest {\n  // revision is the key-value store revision for the hash operation.\n  int64 revision = 1;\n}\n\nmessage HashKVResponse {\n  ResponseHeader header = 1;\n  // hash is the hash value computed from the responding member's MVCC keys up to a given revision.\n  uint32 hash = 2;\n  // compact_revision is the compacted revision of key-value store when hash begins.\n  int64 compact_revision = 3;\n}\n\nmessage HashResponse {\n  ResponseHeader header = 1;\n  // hash is the hash value computed from the responding member's KV's backend.\n  uint32 hash = 2;\n}\n\nmessage SnapshotRequest {\n}\n\nmessage SnapshotResponse {\n  // header has the current key-value store information. The first header in the snapshot\n  // stream indicates the point in time of the snapshot.\n  ResponseHeader header = 1;\n\n  // remaining_bytes is the number of blob bytes to be sent after this message\n  uint64 remaining_bytes = 2;\n\n  // blob contains the next chunk of the snapshot in the snapshot stream.\n  bytes blob = 3;\n}\n\nmessage WatchRequest {\n  // request_union is a request to either create a new watcher or cancel an existing watcher.\n  oneof request_union {\n    WatchCreateRequest create_request = 1;\n    WatchCancelRequest cancel_request = 2;\n    WatchProgressRequest progress_request = 3;\n  }\n}\n\nmessage WatchCreateRequest {\n  // key is the key to register for watching.\n  bytes key = 1;\n\n  // range_end is the end of the range [key, range_end) to watch. If range_end is not given,\n  // only the key argument is watched. If range_end is equal to '\\0', all keys greater than\n  // or equal to the key argument are watched.\n  // If the range_end is one bit larger than the given key,\n  // then all keys with the prefix (the given key) will be watched.\n  bytes range_end = 2;\n\n  // start_revision is an optional revision to watch from (inclusive). No start_revision is \"now\".\n  int64 start_revision = 3;\n\n  // progress_notify is set so that the etcd server will periodically send a WatchResponse with\n  // no events to the new watcher if there are no recent events. It is useful when clients\n  // wish to recover a disconnected watcher starting from a recent known revision.\n  // The etcd server may decide how often it will send notifications based on current load.\n  bool progress_notify = 4;\n\n  enum FilterType {\n    // filter out put event.\n    NOPUT = 0;\n    // filter out delete event.\n    NODELETE = 1;\n  }\n\n  // filters filter the events at server side before it sends back to the watcher.\n  repeated FilterType filters = 5;\n\n  // If prev_kv is set, created watcher gets the previous KV before the event happens.\n  // If the previous KV is already compacted, nothing will be returned.\n  bool prev_kv = 6;\n\n  // If watch_id is provided and non-zero, it will be assigned to this watcher.\n  // Since creating a watcher in etcd is not a synchronous operation,\n  // this can be used ensure that ordering is correct when creating multiple\n  // watchers on the same stream. Creating a watcher with an ID already in\n  // use on the stream will cause an error to be returned.\n  int64 watch_id = 7;\n\n  // fragment enables splitting large revisions into multiple watch responses.\n  bool fragment = 8;\n}\n\nmessage WatchCancelRequest {\n  // watch_id is the watcher id to cancel so that no more events are transmitted.\n  int64 watch_id = 1;\n}\n\n// Requests the a watch stream progress status be sent in the watch response stream as soon as\n// possible.\nmessage WatchProgressRequest {\n}\n\nmessage WatchResponse {\n  ResponseHeader header = 1;\n  // watch_id is the ID of the watcher that corresponds to the response.\n  int64 watch_id = 2;\n\n  // created is set to true if the response is for a create watch request.\n  // The client should record the watch_id and expect to receive events for\n  // the created watcher from the same stream.\n  // All events sent to the created watcher will attach with the same watch_id.\n  bool created = 3;\n\n  // canceled is set to true if the response is for a cancel watch request.\n  // No further events will be sent to the canceled watcher.\n  bool canceled = 4;\n\n  // compact_revision is set to the minimum index if a watcher tries to watch\n  // at a compacted index.\n  //\n  // This happens when creating a watcher at a compacted revision or the watcher cannot\n  // catch up with the progress of the key-value store.\n  //\n  // The client should treat the watcher as canceled and should not try to create any\n  // watcher with the same start_revision again.\n  int64 compact_revision = 5;\n\n  // cancel_reason indicates the reason for canceling the watcher.\n  string cancel_reason = 6;\n\n  // framgment is true if large watch response was split over multiple responses.\n  bool fragment = 7;\n\n  repeated mvccpb.Event events = 11;\n}\n\nmessage LeaseGrantRequest {\n  // TTL is the advisory time-to-live in seconds. Expired lease will return -1.\n  int64 TTL = 1;\n  // ID is the requested ID for the lease. If ID is set to 0, the lessor chooses an ID.\n  int64 ID = 2;\n}\n\nmessage LeaseGrantResponse {\n  ResponseHeader header = 1;\n  // ID is the lease ID for the granted lease.\n  int64 ID = 2;\n  // TTL is the server chosen lease time-to-live in seconds.\n  int64 TTL = 3;\n  string error = 4;\n}\n\nmessage LeaseRevokeRequest {\n  // ID is the lease ID to revoke. When the ID is revoked, all associated keys will be deleted.\n  int64 ID = 1;\n}\n\nmessage LeaseRevokeResponse {\n  ResponseHeader header = 1;\n}\n\nmessage LeaseCheckpoint {\n    // ID is the lease ID to checkpoint.\n  int64 ID = 1;\n\n  // Remaining_TTL is the remaining time until expiry of the lease.\n  int64 remaining_TTL = 2;\n}\n\nmessage LeaseCheckpointRequest {\n  repeated LeaseCheckpoint checkpoints = 1;\n}\n\nmessage LeaseCheckpointResponse {\n  ResponseHeader header = 1;\n}\n\nmessage LeaseKeepAliveRequest {\n  // ID is the lease ID for the lease to keep alive.\n  int64 ID = 1;\n}\n\nmessage LeaseKeepAliveResponse {\n  ResponseHeader header = 1;\n  // ID is the lease ID from the keep alive request.\n  int64 ID = 2;\n  // TTL is the new time-to-live for the lease.\n  int64 TTL = 3;\n}\n\nmessage LeaseTimeToLiveRequest {\n  // ID is the lease ID for the lease.\n  int64 ID = 1;\n  // keys is true to query all the keys attached to this lease.\n  bool keys = 2;\n}\n\nmessage LeaseTimeToLiveResponse {\n  ResponseHeader header = 1;\n  // ID is the lease ID from the keep alive request.\n  int64 ID = 2;\n  // TTL is the remaining TTL in seconds for the lease; the lease will expire in under TTL+1 seconds.\n  int64 TTL = 3;\n  // GrantedTTL is the initial granted time in seconds upon lease creation/renewal.\n  int64 grantedTTL = 4;\n  // Keys is the list of keys attached to this lease.\n  repeated bytes keys = 5;\n}\n\nmessage LeaseLeasesRequest {\n}\n\nmessage LeaseStatus {\n  int64 ID = 1;\n  // TODO: int64 TTL = 2;\n}\n\nmessage LeaseLeasesResponse {\n  ResponseHeader header = 1;\n  repeated LeaseStatus leases = 2;\n}\n\nmessage Member {\n  // ID is the member ID for this member.\n  uint64 ID = 1;\n  // name is the human-readable name of the member. If the member is not started, the name will be an empty string.\n  string name = 2;\n  // peerURLs is the list of URLs the member exposes to the cluster for communication.\n  repeated string peerURLs = 3;\n  // clientURLs is the list of URLs the member exposes to clients for communication. If the member is not started, clientURLs will be empty.\n  repeated string clientURLs = 4;\n  // isLearner indicates if the member is raft learner.\n  bool isLearner = 5;\n}\n\nmessage MemberAddRequest {\n  // peerURLs is the list of URLs the added member will use to communicate with the cluster.\n  repeated string peerURLs = 1;\n  // isLearner indicates if the added member is raft learner.\n  bool isLearner = 2;\n}\n\nmessage MemberAddResponse {\n  ResponseHeader header = 1;\n  // member is the member information for the added member.\n  Member member = 2;\n  // members is a list of all members after adding the new member.\n  repeated Member members = 3;\n}\n\nmessage MemberRemoveRequest {\n  // ID is the member ID of the member to remove.\n  uint64 ID = 1;\n}\n\nmessage MemberRemoveResponse {\n  ResponseHeader header = 1;\n  // members is a list of all members after removing the member.\n  repeated Member members = 2;\n}\n\nmessage MemberUpdateRequest {\n  // ID is the member ID of the member to update.\n  uint64 ID = 1;\n  // peerURLs is the new list of URLs the member will use to communicate with the cluster.\n  repeated string peerURLs = 2;\n}\n\nmessage MemberUpdateResponse{\n  ResponseHeader header = 1;\n  // members is a list of all members after updating the member.\n  repeated Member members = 2;\n}\n\nmessage MemberListRequest {\n  bool linearizable = 1;\n}\n\nmessage MemberListResponse {\n  ResponseHeader header = 1;\n  // members is a list of all members associated with the cluster.\n  repeated Member members = 2;\n}\n\nmessage MemberPromoteRequest {\n  // ID is the member ID of the member to promote.\n  uint64 ID = 1;\n}\n\nmessage MemberPromoteResponse {\n  ResponseHeader header = 1;\n  // members is a list of all members after promoting the member.\n  repeated Member members = 2;\n}\n\nmessage DefragmentRequest {\n}\n\nmessage DefragmentResponse {\n  ResponseHeader header = 1;\n}\n\nmessage MoveLeaderRequest {\n  // targetID is the node ID for the new leader.\n  uint64 targetID = 1;\n}\n\nmessage MoveLeaderResponse {\n  ResponseHeader header = 1;\n}\n\nenum AlarmType {\n\tNONE = 0; // default, used to query if any alarm is active\n\tNOSPACE = 1; // space quota is exhausted\n\tCORRUPT = 2; // kv store corruption detected\n}\n\nmessage AlarmRequest {\n  enum AlarmAction {\n\tGET = 0;\n\tACTIVATE = 1;\n\tDEACTIVATE = 2;\n  }\n  // action is the kind of alarm request to issue. The action\n  // may GET alarm statuses, ACTIVATE an alarm, or DEACTIVATE a\n  // raised alarm.\n  AlarmAction action = 1;\n  // memberID is the ID of the member associated with the alarm. If memberID is 0, the\n  // alarm request covers all members.\n  uint64 memberID = 2;\n  // alarm is the type of alarm to consider for this request.\n  AlarmType alarm = 3;\n}\n\nmessage AlarmMember {\n  // memberID is the ID of the member associated with the raised alarm.\n  uint64 memberID = 1;\n  // alarm is the type of alarm which has been raised.\n  AlarmType alarm = 2;\n}\n\nmessage AlarmResponse {\n  ResponseHeader header = 1;\n  // alarms is a list of alarms associated with the alarm request.\n  repeated AlarmMember alarms = 2;\n}\n\nmessage DowngradeRequest {\n  enum DowngradeAction {\n    VALIDATE = 0;\n    ENABLE = 1;\n    CANCEL = 2;\n  }\n\n  // action is the kind of downgrade request to issue. The action may\n  // VALIDATE the target version, DOWNGRADE the cluster version,\n  // or CANCEL the current downgrading job.\n  DowngradeAction action = 1;\n  // version is the target version to downgrade.\n  string version = 2;\n}\n\nmessage DowngradeResponse {\n  ResponseHeader header = 1;\n  // version is the current cluster version.\n  string version = 2;\n}\n\nmessage StatusRequest {\n}\n\nmessage StatusResponse {\n  ResponseHeader header = 1;\n  // version is the cluster protocol version used by the responding member.\n  string version = 2;\n  // dbSize is the size of the backend database physically allocated, in bytes, of the responding member.\n  int64 dbSize = 3;\n  // leader is the member ID which the responding member believes is the current leader.\n  uint64 leader = 4;\n  // raftIndex is the current raft committed index of the responding member.\n  uint64 raftIndex = 5;\n  // raftTerm is the current raft term of the responding member.\n  uint64 raftTerm = 6;\n  // raftAppliedIndex is the current raft applied index of the responding member.\n  uint64 raftAppliedIndex = 7;\n  // errors contains alarm/health information and status.\n  repeated string errors = 8;\n  // dbSizeInUse is the size of the backend database logically in use, in bytes, of the responding member.\n  int64 dbSizeInUse = 9;\n  // isLearner indicates if the member is raft learner.\n  bool isLearner = 10;\n}\n\nmessage AuthEnableRequest {\n}\n\nmessage AuthDisableRequest {\n}\n\nmessage AuthStatusRequest {\n}\n\nmessage AuthenticateRequest {\n  string name = 1;\n  string password = 2;\n}\n\nmessage AuthUserAddRequest {\n  string name = 1;\n  string password = 2;\n  authpb.UserAddOptions options = 3;\n  string hashedPassword = 4;\n}\n\nmessage AuthUserGetRequest {\n  string name = 1;\n}\n\nmessage AuthUserDeleteRequest {\n  // name is the name of the user to delete.\n  string name = 1;\n}\n\nmessage AuthUserChangePasswordRequest {\n  // name is the name of the user whose password is being changed.\n  string name = 1;\n  // password is the new password for the user. Note that this field will be removed in the API layer.\n  string password = 2;\n  // hashedPassword is the new password for the user. Note that this field will be initialized in the API layer.\n  string hashedPassword = 3;\n}\n\nmessage AuthUserGrantRoleRequest {\n  // user is the name of the user which should be granted a given role.\n  string user = 1;\n  // role is the name of the role to grant to the user.\n  string role = 2;\n}\n\nmessage AuthUserRevokeRoleRequest {\n  string name = 1;\n  string role = 2;\n}\n\nmessage AuthRoleAddRequest {\n  // name is the name of the role to add to the authentication system.\n  string name = 1;\n}\n\nmessage AuthRoleGetRequest {\n  string role = 1;\n}\n\nmessage AuthUserListRequest {\n}\n\nmessage AuthRoleListRequest {\n}\n\nmessage AuthRoleDeleteRequest {\n  string role = 1;\n}\n\nmessage AuthRoleGrantPermissionRequest {\n  // name is the name of the role which will be granted the permission.\n  string name = 1;\n  // perm is the permission to grant to the role.\n  authpb.Permission perm = 2;\n}\n\nmessage AuthRoleRevokePermissionRequest {\n  string role = 1;\n  bytes key = 2;\n  bytes range_end = 3;\n}\n\nmessage AuthEnableResponse {\n  ResponseHeader header = 1;\n}\n\nmessage AuthDisableResponse {\n  ResponseHeader header = 1;\n}\n\nmessage AuthStatusResponse {\n  ResponseHeader header = 1;\n  bool enabled = 2;\n  // authRevision is the current revision of auth store\n  uint64 authRevision = 3;\n}\n\nmessage AuthenticateResponse {\n  ResponseHeader header = 1;\n  // token is an authorized token that can be used in succeeding RPCs\n  string token = 2;\n}\n\nmessage AuthUserAddResponse {\n  ResponseHeader header = 1;\n}\n\nmessage AuthUserGetResponse {\n  ResponseHeader header = 1;\n\n  repeated string roles = 2;\n}\n\nmessage AuthUserDeleteResponse {\n  ResponseHeader header = 1;\n}\n\nmessage AuthUserChangePasswordResponse {\n  ResponseHeader header = 1;\n}\n\nmessage AuthUserGrantRoleResponse {\n  ResponseHeader header = 1;\n}\n\nmessage AuthUserRevokeRoleResponse {\n  ResponseHeader header = 1;\n}\n\nmessage AuthRoleAddResponse {\n  ResponseHeader header = 1;\n}\n\nmessage AuthRoleGetResponse {\n  ResponseHeader header = 1;\n\n  repeated authpb.Permission perm = 2;\n}\n\nmessage AuthRoleListResponse {\n  ResponseHeader header = 1;\n\n  repeated string roles = 2;\n}\n\nmessage AuthUserListResponse {\n  ResponseHeader header = 1;\n\n  repeated string users = 2;\n}\n\nmessage AuthRoleDeleteResponse {\n  ResponseHeader header = 1;\n}\n\nmessage AuthRoleGrantPermissionResponse {\n  ResponseHeader header = 1;\n}\n\nmessage AuthRoleRevokePermissionResponse {\n  ResponseHeader header = 1;\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/membershippb/membership.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: membership.proto\n\npackage membershippb\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\n\t_ \"github.com/gogo/protobuf/gogoproto\"\n\tproto \"github.com/golang/protobuf/proto\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package\n\n// RaftAttributes represents the raft related attributes of an etcd member.\ntype RaftAttributes struct {\n\t// peerURLs is the list of peers in the raft cluster.\n\tPeerUrls []string `protobuf:\"bytes,1,rep,name=peer_urls,json=peerUrls,proto3\" json:\"peer_urls,omitempty\"`\n\t// isLearner indicates if the member is raft learner.\n\tIsLearner            bool     `protobuf:\"varint,2,opt,name=is_learner,json=isLearner,proto3\" json:\"is_learner,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *RaftAttributes) Reset()         { *m = RaftAttributes{} }\nfunc (m *RaftAttributes) String() string { return proto.CompactTextString(m) }\nfunc (*RaftAttributes) ProtoMessage()    {}\nfunc (*RaftAttributes) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_949fe0d019050ef5, []int{0}\n}\nfunc (m *RaftAttributes) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *RaftAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_RaftAttributes.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *RaftAttributes) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_RaftAttributes.Merge(m, src)\n}\nfunc (m *RaftAttributes) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *RaftAttributes) XXX_DiscardUnknown() {\n\txxx_messageInfo_RaftAttributes.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_RaftAttributes proto.InternalMessageInfo\n\n// Attributes represents all the non-raft related attributes of an etcd member.\ntype Attributes struct {\n\tName                 string   `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tClientUrls           []string `protobuf:\"bytes,2,rep,name=client_urls,json=clientUrls,proto3\" json:\"client_urls,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *Attributes) Reset()         { *m = Attributes{} }\nfunc (m *Attributes) String() string { return proto.CompactTextString(m) }\nfunc (*Attributes) ProtoMessage()    {}\nfunc (*Attributes) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_949fe0d019050ef5, []int{1}\n}\nfunc (m *Attributes) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Attributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Attributes.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Attributes) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Attributes.Merge(m, src)\n}\nfunc (m *Attributes) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Attributes) XXX_DiscardUnknown() {\n\txxx_messageInfo_Attributes.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Attributes proto.InternalMessageInfo\n\ntype Member struct {\n\tID                   uint64          `protobuf:\"varint,1,opt,name=ID,proto3\" json:\"ID,omitempty\"`\n\tRaftAttributes       *RaftAttributes `protobuf:\"bytes,2,opt,name=raft_attributes,json=raftAttributes,proto3\" json:\"raft_attributes,omitempty\"`\n\tMemberAttributes     *Attributes     `protobuf:\"bytes,3,opt,name=member_attributes,json=memberAttributes,proto3\" json:\"member_attributes,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}        `json:\"-\"`\n\tXXX_unrecognized     []byte          `json:\"-\"`\n\tXXX_sizecache        int32           `json:\"-\"`\n}\n\nfunc (m *Member) Reset()         { *m = Member{} }\nfunc (m *Member) String() string { return proto.CompactTextString(m) }\nfunc (*Member) ProtoMessage()    {}\nfunc (*Member) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_949fe0d019050ef5, []int{2}\n}\nfunc (m *Member) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Member) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Member.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Member) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Member.Merge(m, src)\n}\nfunc (m *Member) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Member) XXX_DiscardUnknown() {\n\txxx_messageInfo_Member.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Member proto.InternalMessageInfo\n\ntype ClusterVersionSetRequest struct {\n\tVer                  string   `protobuf:\"bytes,1,opt,name=ver,proto3\" json:\"ver,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *ClusterVersionSetRequest) Reset()         { *m = ClusterVersionSetRequest{} }\nfunc (m *ClusterVersionSetRequest) String() string { return proto.CompactTextString(m) }\nfunc (*ClusterVersionSetRequest) ProtoMessage()    {}\nfunc (*ClusterVersionSetRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_949fe0d019050ef5, []int{3}\n}\nfunc (m *ClusterVersionSetRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *ClusterVersionSetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_ClusterVersionSetRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *ClusterVersionSetRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_ClusterVersionSetRequest.Merge(m, src)\n}\nfunc (m *ClusterVersionSetRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *ClusterVersionSetRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_ClusterVersionSetRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_ClusterVersionSetRequest proto.InternalMessageInfo\n\ntype ClusterMemberAttrSetRequest struct {\n\tMember_ID            uint64      `protobuf:\"varint,1,opt,name=member_ID,json=memberID,proto3\" json:\"member_ID,omitempty\"`\n\tMemberAttributes     *Attributes `protobuf:\"bytes,2,opt,name=member_attributes,json=memberAttributes,proto3\" json:\"member_attributes,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}    `json:\"-\"`\n\tXXX_unrecognized     []byte      `json:\"-\"`\n\tXXX_sizecache        int32       `json:\"-\"`\n}\n\nfunc (m *ClusterMemberAttrSetRequest) Reset()         { *m = ClusterMemberAttrSetRequest{} }\nfunc (m *ClusterMemberAttrSetRequest) String() string { return proto.CompactTextString(m) }\nfunc (*ClusterMemberAttrSetRequest) ProtoMessage()    {}\nfunc (*ClusterMemberAttrSetRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_949fe0d019050ef5, []int{4}\n}\nfunc (m *ClusterMemberAttrSetRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *ClusterMemberAttrSetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_ClusterMemberAttrSetRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *ClusterMemberAttrSetRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_ClusterMemberAttrSetRequest.Merge(m, src)\n}\nfunc (m *ClusterMemberAttrSetRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *ClusterMemberAttrSetRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_ClusterMemberAttrSetRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_ClusterMemberAttrSetRequest proto.InternalMessageInfo\n\ntype DowngradeInfoSetRequest struct {\n\tEnabled              bool     `protobuf:\"varint,1,opt,name=enabled,proto3\" json:\"enabled,omitempty\"`\n\tVer                  string   `protobuf:\"bytes,2,opt,name=ver,proto3\" json:\"ver,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *DowngradeInfoSetRequest) Reset()         { *m = DowngradeInfoSetRequest{} }\nfunc (m *DowngradeInfoSetRequest) String() string { return proto.CompactTextString(m) }\nfunc (*DowngradeInfoSetRequest) ProtoMessage()    {}\nfunc (*DowngradeInfoSetRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_949fe0d019050ef5, []int{5}\n}\nfunc (m *DowngradeInfoSetRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *DowngradeInfoSetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_DowngradeInfoSetRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *DowngradeInfoSetRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DowngradeInfoSetRequest.Merge(m, src)\n}\nfunc (m *DowngradeInfoSetRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *DowngradeInfoSetRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_DowngradeInfoSetRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DowngradeInfoSetRequest proto.InternalMessageInfo\n\nfunc init() {\n\tproto.RegisterType((*RaftAttributes)(nil), \"membershippb.RaftAttributes\")\n\tproto.RegisterType((*Attributes)(nil), \"membershippb.Attributes\")\n\tproto.RegisterType((*Member)(nil), \"membershippb.Member\")\n\tproto.RegisterType((*ClusterVersionSetRequest)(nil), \"membershippb.ClusterVersionSetRequest\")\n\tproto.RegisterType((*ClusterMemberAttrSetRequest)(nil), \"membershippb.ClusterMemberAttrSetRequest\")\n\tproto.RegisterType((*DowngradeInfoSetRequest)(nil), \"membershippb.DowngradeInfoSetRequest\")\n}\n\nfunc init() { proto.RegisterFile(\"membership.proto\", fileDescriptor_949fe0d019050ef5) }\n\nvar fileDescriptor_949fe0d019050ef5 = []byte{\n\t// 367 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0xc1, 0x4e, 0xf2, 0x40,\n\t0x14, 0x85, 0x99, 0x42, 0xf8, 0xdb, 0xcb, 0x1f, 0xc4, 0x09, 0x89, 0x8d, 0x68, 0x25, 0x5d, 0xb1,\n\t0x30, 0x98, 0xe8, 0x13, 0xa0, 0xb0, 0x20, 0x81, 0xcd, 0x18, 0xdd, 0x92, 0x56, 0x2e, 0xd8, 0xa4,\n\t0x74, 0xea, 0xcc, 0x54, 0xd7, 0xbe, 0x85, 0x4f, 0xe0, 0xb3, 0xb0, 0xf4, 0x11, 0x14, 0x5f, 0xc4,\n\t0x74, 0x5a, 0x4a, 0x49, 0xdc, 0xb8, 0xbb, 0x3d, 0xbd, 0xf7, 0x9c, 0xf3, 0x35, 0x85, 0xd6, 0x0a,\n\t0x57, 0x3e, 0x0a, 0xf9, 0x18, 0xc4, 0xfd, 0x58, 0x70, 0xc5, 0xe9, 0xff, 0x9d, 0x12, 0xfb, 0xc7,\n\t0xed, 0x25, 0x5f, 0x72, 0xfd, 0xe2, 0x22, 0x9d, 0xb2, 0x1d, 0x77, 0x02, 0x4d, 0xe6, 0x2d, 0xd4,\n\t0x40, 0x29, 0x11, 0xf8, 0x89, 0x42, 0x49, 0x3b, 0x60, 0xc5, 0x88, 0x62, 0x96, 0x88, 0x50, 0xda,\n\t0xa4, 0x5b, 0xed, 0x59, 0xcc, 0x4c, 0x85, 0x3b, 0x11, 0x4a, 0x7a, 0x0a, 0x10, 0xc8, 0x59, 0x88,\n\t0x9e, 0x88, 0x50, 0xd8, 0x46, 0x97, 0xf4, 0x4c, 0x66, 0x05, 0x72, 0x92, 0x09, 0xee, 0x00, 0xa0,\n\t0xe4, 0x44, 0xa1, 0x16, 0x79, 0x2b, 0xb4, 0x49, 0x97, 0xf4, 0x2c, 0xa6, 0x67, 0x7a, 0x06, 0x8d,\n\t0x87, 0x30, 0xc0, 0x48, 0x65, 0xfe, 0x86, 0xf6, 0x87, 0x4c, 0x4a, 0x13, 0xdc, 0x77, 0x02, 0xf5,\n\t0xa9, 0xee, 0x4d, 0x9b, 0x60, 0x8c, 0x87, 0xfa, 0xba, 0xc6, 0x8c, 0xf1, 0x90, 0x8e, 0xe0, 0x40,\n\t0x78, 0x0b, 0x35, 0xf3, 0x8a, 0x08, 0xdd, 0xa0, 0x71, 0x79, 0xd2, 0x2f, 0x93, 0xf6, 0xf7, 0x81,\n\t0x58, 0x53, 0xec, 0x03, 0x8e, 0xe0, 0x30, 0x5b, 0x2f, 0x1b, 0x55, 0xb5, 0x91, 0xbd, 0x6f, 0x54,\n\t0x32, 0xc9, 0xbf, 0xee, 0x4e, 0x71, 0xcf, 0xc1, 0xbe, 0x09, 0x13, 0xa9, 0x50, 0xdc, 0xa3, 0x90,\n\t0x01, 0x8f, 0x6e, 0x51, 0x31, 0x7c, 0x4a, 0x50, 0x2a, 0xda, 0x82, 0xea, 0x33, 0x8a, 0x1c, 0x3c,\n\t0x1d, 0xdd, 0x57, 0x02, 0x9d, 0x7c, 0x7d, 0x5a, 0x38, 0x95, 0x2e, 0x3a, 0x60, 0xe5, 0xa5, 0x0a,\n\t0x64, 0x33, 0x13, 0x34, 0xf8, 0x2f, 0x8d, 0x8d, 0x3f, 0x37, 0x1e, 0xc1, 0xd1, 0x90, 0xbf, 0x44,\n\t0x4b, 0xe1, 0xcd, 0x71, 0x1c, 0x2d, 0x78, 0x29, 0xde, 0x86, 0x7f, 0x18, 0x79, 0x7e, 0x88, 0x73,\n\t0x1d, 0x6e, 0xb2, 0xed, 0xe3, 0x16, 0xc5, 0x28, 0x50, 0xae, 0xdb, 0xeb, 0x2f, 0xa7, 0xb2, 0xde,\n\t0x38, 0xe4, 0x63, 0xe3, 0x90, 0xcf, 0x8d, 0x43, 0xde, 0xbe, 0x9d, 0x8a, 0x5f, 0xd7, 0xff, 0xd3,\n\t0xd5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x93, 0x7d, 0x0b, 0x87, 0x02, 0x00, 0x00,\n}\n\nfunc (m *RaftAttributes) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RaftAttributes) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RaftAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.IsLearner {\n\t\ti--\n\t\tif m.IsLearner {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.PeerUrls) > 0 {\n\t\tfor iNdEx := len(m.PeerUrls) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.PeerUrls[iNdEx])\n\t\t\tcopy(dAtA[i:], m.PeerUrls[iNdEx])\n\t\t\ti = encodeVarintMembership(dAtA, i, uint64(len(m.PeerUrls[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Attributes) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Attributes) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Attributes) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.ClientUrls) > 0 {\n\t\tfor iNdEx := len(m.ClientUrls) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.ClientUrls[iNdEx])\n\t\t\tcopy(dAtA[i:], m.ClientUrls[iNdEx])\n\t\t\ti = encodeVarintMembership(dAtA, i, uint64(len(m.ClientUrls[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Name) > 0 {\n\t\ti -= len(m.Name)\n\t\tcopy(dAtA[i:], m.Name)\n\t\ti = encodeVarintMembership(dAtA, i, uint64(len(m.Name)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Member) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Member) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Member) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.MemberAttributes != nil {\n\t\t{\n\t\t\tsize, err := m.MemberAttributes.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintMembership(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.RaftAttributes != nil {\n\t\t{\n\t\t\tsize, err := m.RaftAttributes.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintMembership(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.ID != 0 {\n\t\ti = encodeVarintMembership(dAtA, i, uint64(m.ID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ClusterVersionSetRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ClusterVersionSetRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *ClusterVersionSetRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Ver) > 0 {\n\t\ti -= len(m.Ver)\n\t\tcopy(dAtA[i:], m.Ver)\n\t\ti = encodeVarintMembership(dAtA, i, uint64(len(m.Ver)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ClusterMemberAttrSetRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ClusterMemberAttrSetRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *ClusterMemberAttrSetRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.MemberAttributes != nil {\n\t\t{\n\t\t\tsize, err := m.MemberAttributes.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintMembership(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Member_ID != 0 {\n\t\ti = encodeVarintMembership(dAtA, i, uint64(m.Member_ID))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DowngradeInfoSetRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DowngradeInfoSetRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *DowngradeInfoSetRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif len(m.Ver) > 0 {\n\t\ti -= len(m.Ver)\n\t\tcopy(dAtA[i:], m.Ver)\n\t\ti = encodeVarintMembership(dAtA, i, uint64(len(m.Ver)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Enabled {\n\t\ti--\n\t\tif m.Enabled {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintMembership(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovMembership(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *RaftAttributes) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.PeerUrls) > 0 {\n\t\tfor _, s := range m.PeerUrls {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovMembership(uint64(l))\n\t\t}\n\t}\n\tif m.IsLearner {\n\t\tn += 2\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *Attributes) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Name)\n\tif l > 0 {\n\t\tn += 1 + l + sovMembership(uint64(l))\n\t}\n\tif len(m.ClientUrls) > 0 {\n\t\tfor _, s := range m.ClientUrls {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovMembership(uint64(l))\n\t\t}\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *Member) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ID != 0 {\n\t\tn += 1 + sovMembership(uint64(m.ID))\n\t}\n\tif m.RaftAttributes != nil {\n\t\tl = m.RaftAttributes.Size()\n\t\tn += 1 + l + sovMembership(uint64(l))\n\t}\n\tif m.MemberAttributes != nil {\n\t\tl = m.MemberAttributes.Size()\n\t\tn += 1 + l + sovMembership(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *ClusterVersionSetRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Ver)\n\tif l > 0 {\n\t\tn += 1 + l + sovMembership(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *ClusterMemberAttrSetRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Member_ID != 0 {\n\t\tn += 1 + sovMembership(uint64(m.Member_ID))\n\t}\n\tif m.MemberAttributes != nil {\n\t\tl = m.MemberAttributes.Size()\n\t\tn += 1 + l + sovMembership(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *DowngradeInfoSetRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Enabled {\n\t\tn += 2\n\t}\n\tl = len(m.Ver)\n\tif l > 0 {\n\t\tn += 1 + l + sovMembership(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc sovMembership(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozMembership(x uint64) (n int) {\n\treturn sovMembership(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *RaftAttributes) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RaftAttributes: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RaftAttributes: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PeerUrls\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PeerUrls = append(m.PeerUrls, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IsLearner\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.IsLearner = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipMembership(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Attributes) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Attributes: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Attributes: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Name = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ClientUrls\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ClientUrls = append(m.ClientUrls, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipMembership(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Member) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Member: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Member: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ID\", wireType)\n\t\t\t}\n\t\t\tm.ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RaftAttributes\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.RaftAttributes == nil {\n\t\t\t\tm.RaftAttributes = &RaftAttributes{}\n\t\t\t}\n\t\t\tif err := m.RaftAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MemberAttributes\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.MemberAttributes == nil {\n\t\t\t\tm.MemberAttributes = &Attributes{}\n\t\t\t}\n\t\t\tif err := m.MemberAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipMembership(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ClusterVersionSetRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ClusterVersionSetRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ClusterVersionSetRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Ver\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Ver = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipMembership(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ClusterMemberAttrSetRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ClusterMemberAttrSetRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ClusterMemberAttrSetRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Member_ID\", wireType)\n\t\t\t}\n\t\t\tm.Member_ID = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Member_ID |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MemberAttributes\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.MemberAttributes == nil {\n\t\t\t\tm.MemberAttributes = &Attributes{}\n\t\t\t}\n\t\t\tif err := m.MemberAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipMembership(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DowngradeInfoSetRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DowngradeInfoSetRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DowngradeInfoSetRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Enabled\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Enabled = bool(v != 0)\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Ver\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Ver = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipMembership(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipMembership(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowMembership\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowMembership\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthMembership\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupMembership\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthMembership\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthMembership        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowMembership          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupMembership = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/membershippb/membership.proto",
    "content": "syntax = \"proto3\";\npackage membershippb;\n\nimport \"gogoproto/gogo.proto\";\n\noption (gogoproto.marshaler_all) = true;\noption (gogoproto.sizer_all) = true;\noption (gogoproto.unmarshaler_all) = true;\noption (gogoproto.goproto_getters_all) = false;\n\n// RaftAttributes represents the raft related attributes of an etcd member.\nmessage RaftAttributes {\n  // peerURLs is the list of peers in the raft cluster.\n  repeated string peer_urls = 1;\n  // isLearner indicates if the member is raft learner.\n  bool is_learner = 2;\n}\n\n// Attributes represents all the non-raft related attributes of an etcd member.\nmessage Attributes {\n  string name = 1;\n  repeated string client_urls = 2;\n}\n\nmessage Member {\n  uint64 ID = 1;\n  RaftAttributes raft_attributes = 2;\n  Attributes member_attributes = 3;\n}\n\nmessage ClusterVersionSetRequest {\n  string ver = 1;\n}\n\nmessage ClusterMemberAttrSetRequest {\n  uint64 member_ID = 1;\n  Attributes member_attributes = 2;\n}\n\nmessage DowngradeInfoSetRequest {\n  bool enabled = 1;\n  string ver = 2;\n}"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/mvccpb/kv.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: kv.proto\n\npackage mvccpb\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\n\t_ \"github.com/gogo/protobuf/gogoproto\"\n\tproto \"github.com/golang/protobuf/proto\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package\n\ntype Event_EventType int32\n\nconst (\n\tPUT    Event_EventType = 0\n\tDELETE Event_EventType = 1\n)\n\nvar Event_EventType_name = map[int32]string{\n\t0: \"PUT\",\n\t1: \"DELETE\",\n}\n\nvar Event_EventType_value = map[string]int32{\n\t\"PUT\":    0,\n\t\"DELETE\": 1,\n}\n\nfunc (x Event_EventType) String() string {\n\treturn proto.EnumName(Event_EventType_name, int32(x))\n}\n\nfunc (Event_EventType) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_2216fe83c9c12408, []int{1, 0}\n}\n\ntype KeyValue struct {\n\t// key is the key in bytes. An empty key is not allowed.\n\tKey []byte `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\t// create_revision is the revision of last creation on this key.\n\tCreateRevision int64 `protobuf:\"varint,2,opt,name=create_revision,json=createRevision,proto3\" json:\"create_revision,omitempty\"`\n\t// mod_revision is the revision of last modification on this key.\n\tModRevision int64 `protobuf:\"varint,3,opt,name=mod_revision,json=modRevision,proto3\" json:\"mod_revision,omitempty\"`\n\t// version is the version of the key. A deletion resets\n\t// the version to zero and any modification of the key\n\t// increases its version.\n\tVersion int64 `protobuf:\"varint,4,opt,name=version,proto3\" json:\"version,omitempty\"`\n\t// value is the value held by the key, in bytes.\n\tValue []byte `protobuf:\"bytes,5,opt,name=value,proto3\" json:\"value,omitempty\"`\n\t// lease is the ID of the lease that attached to key.\n\t// When the attached lease expires, the key will be deleted.\n\t// If lease is 0, then no lease is attached to the key.\n\tLease                int64    `protobuf:\"varint,6,opt,name=lease,proto3\" json:\"lease,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{} `json:\"-\"`\n\tXXX_unrecognized     []byte   `json:\"-\"`\n\tXXX_sizecache        int32    `json:\"-\"`\n}\n\nfunc (m *KeyValue) Reset()         { *m = KeyValue{} }\nfunc (m *KeyValue) String() string { return proto.CompactTextString(m) }\nfunc (*KeyValue) ProtoMessage()    {}\nfunc (*KeyValue) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_2216fe83c9c12408, []int{0}\n}\nfunc (m *KeyValue) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *KeyValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_KeyValue.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *KeyValue) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_KeyValue.Merge(m, src)\n}\nfunc (m *KeyValue) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *KeyValue) XXX_DiscardUnknown() {\n\txxx_messageInfo_KeyValue.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_KeyValue proto.InternalMessageInfo\n\ntype Event struct {\n\t// type is the kind of event. If type is a PUT, it indicates\n\t// new data has been stored to the key. If type is a DELETE,\n\t// it indicates the key was deleted.\n\tType Event_EventType `protobuf:\"varint,1,opt,name=type,proto3,enum=mvccpb.Event_EventType\" json:\"type,omitempty\"`\n\t// kv holds the KeyValue for the event.\n\t// A PUT event contains current kv pair.\n\t// A PUT event with kv.Version=1 indicates the creation of a key.\n\t// A DELETE/EXPIRE event contains the deleted key with\n\t// its modification revision set to the revision of deletion.\n\tKv *KeyValue `protobuf:\"bytes,2,opt,name=kv,proto3\" json:\"kv,omitempty\"`\n\t// prev_kv holds the key-value pair before the event happens.\n\tPrevKv               *KeyValue `protobuf:\"bytes,3,opt,name=prev_kv,json=prevKv,proto3\" json:\"prev_kv,omitempty\"`\n\tXXX_NoUnkeyedLiteral struct{}  `json:\"-\"`\n\tXXX_unrecognized     []byte    `json:\"-\"`\n\tXXX_sizecache        int32     `json:\"-\"`\n}\n\nfunc (m *Event) Reset()         { *m = Event{} }\nfunc (m *Event) String() string { return proto.CompactTextString(m) }\nfunc (*Event) ProtoMessage()    {}\nfunc (*Event) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_2216fe83c9c12408, []int{1}\n}\nfunc (m *Event) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Event) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Event.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Event) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Event.Merge(m, src)\n}\nfunc (m *Event) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Event) XXX_DiscardUnknown() {\n\txxx_messageInfo_Event.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Event proto.InternalMessageInfo\n\nfunc init() {\n\tproto.RegisterEnum(\"mvccpb.Event_EventType\", Event_EventType_name, Event_EventType_value)\n\tproto.RegisterType((*KeyValue)(nil), \"mvccpb.KeyValue\")\n\tproto.RegisterType((*Event)(nil), \"mvccpb.Event\")\n}\n\nfunc init() { proto.RegisterFile(\"kv.proto\", fileDescriptor_2216fe83c9c12408) }\n\nvar fileDescriptor_2216fe83c9c12408 = []byte{\n\t// 303 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0x41, 0x4e, 0xc2, 0x40,\n\t0x14, 0x86, 0x3b, 0x14, 0x0a, 0x3e, 0x08, 0x36, 0x13, 0x12, 0x27, 0x2e, 0x26, 0x95, 0x8d, 0x18,\n\t0x13, 0x4c, 0xf0, 0x06, 0xc6, 0xae, 0x70, 0x61, 0x1a, 0x74, 0x4b, 0x4a, 0x79, 0x21, 0xa4, 0x94,\n\t0x69, 0x4a, 0x9d, 0xa4, 0x37, 0x71, 0xef, 0xde, 0x73, 0xb0, 0xe4, 0x08, 0x52, 0x2f, 0x62, 0xfa,\n\t0xc6, 0xe2, 0xc6, 0xcd, 0xe4, 0xfd, 0xff, 0xff, 0x65, 0xe6, 0x7f, 0x03, 0x9d, 0x58, 0x8f, 0xd3,\n\t0x4c, 0xe5, 0x8a, 0x3b, 0x89, 0x8e, 0xa2, 0x74, 0x71, 0x39, 0x58, 0xa9, 0x95, 0x22, 0xeb, 0xae,\n\t0x9a, 0x4c, 0x3a, 0xfc, 0x64, 0xd0, 0x99, 0x62, 0xf1, 0x1a, 0x6e, 0xde, 0x90, 0xbb, 0x60, 0xc7,\n\t0x58, 0x08, 0xe6, 0xb1, 0x51, 0x2f, 0xa8, 0x46, 0x7e, 0x0d, 0xe7, 0x51, 0x86, 0x61, 0x8e, 0xf3,\n\t0x0c, 0xf5, 0x7a, 0xb7, 0x56, 0x5b, 0xd1, 0xf0, 0xd8, 0xc8, 0x0e, 0xfa, 0xc6, 0x0e, 0x7e, 0x5d,\n\t0x7e, 0x05, 0xbd, 0x44, 0x2d, 0xff, 0x28, 0x9b, 0xa8, 0x6e, 0xa2, 0x96, 0x27, 0x44, 0x40, 0x5b,\n\t0x63, 0x46, 0x69, 0x93, 0xd2, 0x5a, 0xf2, 0x01, 0xb4, 0x74, 0x55, 0x40, 0xb4, 0xe8, 0x65, 0x23,\n\t0x2a, 0x77, 0x83, 0xe1, 0x0e, 0x85, 0x43, 0xb4, 0x11, 0xc3, 0x0f, 0x06, 0x2d, 0x5f, 0xe3, 0x36,\n\t0xe7, 0xb7, 0xd0, 0xcc, 0x8b, 0x14, 0xa9, 0x6e, 0x7f, 0x72, 0x31, 0x36, 0x7b, 0x8e, 0x29, 0x34,\n\t0xe7, 0xac, 0x48, 0x31, 0x20, 0x88, 0x7b, 0xd0, 0x88, 0x35, 0x75, 0xef, 0x4e, 0xdc, 0x1a, 0xad,\n\t0x17, 0x0f, 0x1a, 0xb1, 0xe6, 0x37, 0xd0, 0x4e, 0x33, 0xd4, 0xf3, 0x58, 0x53, 0xf9, 0xff, 0x30,\n\t0xa7, 0x02, 0xa6, 0x7a, 0xe8, 0xc1, 0xd9, 0xe9, 0x7e, 0xde, 0x06, 0xfb, 0xf9, 0x65, 0xe6, 0x5a,\n\t0x1c, 0xc0, 0x79, 0xf4, 0x9f, 0xfc, 0x99, 0xef, 0xb2, 0x07, 0xb1, 0x3f, 0x4a, 0xeb, 0x70, 0x94,\n\t0xd6, 0xbe, 0x94, 0xec, 0x50, 0x4a, 0xf6, 0x55, 0x4a, 0xf6, 0xfe, 0x2d, 0xad, 0x85, 0x43, 0xff,\n\t0x7e, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x45, 0x92, 0x5d, 0xa1, 0x01, 0x00, 0x00,\n}\n\nfunc (m *KeyValue) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *KeyValue) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *KeyValue) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.Lease != 0 {\n\t\ti = encodeVarintKv(dAtA, i, uint64(m.Lease))\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif len(m.Value) > 0 {\n\t\ti -= len(m.Value)\n\t\tcopy(dAtA[i:], m.Value)\n\t\ti = encodeVarintKv(dAtA, i, uint64(len(m.Value)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.Version != 0 {\n\t\ti = encodeVarintKv(dAtA, i, uint64(m.Version))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.ModRevision != 0 {\n\t\ti = encodeVarintKv(dAtA, i, uint64(m.ModRevision))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.CreateRevision != 0 {\n\t\ti = encodeVarintKv(dAtA, i, uint64(m.CreateRevision))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Key) > 0 {\n\t\ti -= len(m.Key)\n\t\tcopy(dAtA[i:], m.Key)\n\t\ti = encodeVarintKv(dAtA, i, uint64(len(m.Key)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Event) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Event) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Event) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.XXX_unrecognized != nil {\n\t\ti -= len(m.XXX_unrecognized)\n\t\tcopy(dAtA[i:], m.XXX_unrecognized)\n\t}\n\tif m.PrevKv != nil {\n\t\t{\n\t\t\tsize, err := m.PrevKv.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintKv(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Kv != nil {\n\t\t{\n\t\t\tsize, err := m.Kv.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintKv(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Type != 0 {\n\t\ti = encodeVarintKv(dAtA, i, uint64(m.Type))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintKv(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovKv(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *KeyValue) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Key)\n\tif l > 0 {\n\t\tn += 1 + l + sovKv(uint64(l))\n\t}\n\tif m.CreateRevision != 0 {\n\t\tn += 1 + sovKv(uint64(m.CreateRevision))\n\t}\n\tif m.ModRevision != 0 {\n\t\tn += 1 + sovKv(uint64(m.ModRevision))\n\t}\n\tif m.Version != 0 {\n\t\tn += 1 + sovKv(uint64(m.Version))\n\t}\n\tl = len(m.Value)\n\tif l > 0 {\n\t\tn += 1 + l + sovKv(uint64(l))\n\t}\n\tif m.Lease != 0 {\n\t\tn += 1 + sovKv(uint64(m.Lease))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc (m *Event) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Type != 0 {\n\t\tn += 1 + sovKv(uint64(m.Type))\n\t}\n\tif m.Kv != nil {\n\t\tl = m.Kv.Size()\n\t\tn += 1 + l + sovKv(uint64(l))\n\t}\n\tif m.PrevKv != nil {\n\t\tl = m.PrevKv.Size()\n\t\tn += 1 + l + sovKv(uint64(l))\n\t}\n\tif m.XXX_unrecognized != nil {\n\t\tn += len(m.XXX_unrecognized)\n\t}\n\treturn n\n}\n\nfunc sovKv(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozKv(x uint64) (n int) {\n\treturn sovKv(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *KeyValue) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowKv\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: KeyValue: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: KeyValue: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Key\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowKv\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthKv\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthKv\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Key == nil {\n\t\t\t\tm.Key = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreateRevision\", wireType)\n\t\t\t}\n\t\t\tm.CreateRevision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowKv\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CreateRevision |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ModRevision\", wireType)\n\t\t\t}\n\t\t\tm.ModRevision = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowKv\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ModRevision |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Version\", wireType)\n\t\t\t}\n\t\t\tm.Version = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowKv\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Version |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowKv\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthKv\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthKv\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Value == nil {\n\t\t\t\tm.Value = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Lease\", wireType)\n\t\t\t}\n\t\t\tm.Lease = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowKv\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Lease |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipKv(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthKv\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Event) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowKv\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Event: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Event: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Type\", wireType)\n\t\t\t}\n\t\t\tm.Type = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowKv\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Type |= Event_EventType(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Kv\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowKv\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthKv\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthKv\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Kv == nil {\n\t\t\t\tm.Kv = &KeyValue{}\n\t\t\t}\n\t\t\tif err := m.Kv.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PrevKv\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowKv\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthKv\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthKv\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.PrevKv == nil {\n\t\t\t\tm.PrevKv = &KeyValue{}\n\t\t\t}\n\t\t\tif err := m.PrevKv.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipKv(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthKv\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipKv(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowKv\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowKv\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowKv\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthKv\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupKv\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthKv\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthKv        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowKv          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupKv = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/mvccpb/kv.proto",
    "content": "syntax = \"proto3\";\npackage mvccpb;\n\nimport \"gogoproto/gogo.proto\";\n\noption (gogoproto.marshaler_all) = true;\noption (gogoproto.sizer_all) = true;\noption (gogoproto.unmarshaler_all) = true;\noption (gogoproto.goproto_getters_all) = false;\noption (gogoproto.goproto_enum_prefix_all) = false;\n\nmessage KeyValue {\n  // key is the key in bytes. An empty key is not allowed.\n  bytes key = 1;\n  // create_revision is the revision of last creation on this key.\n  int64 create_revision = 2;\n  // mod_revision is the revision of last modification on this key.\n  int64 mod_revision = 3;\n  // version is the version of the key. A deletion resets\n  // the version to zero and any modification of the key\n  // increases its version.\n  int64 version = 4;\n  // value is the value held by the key, in bytes.\n  bytes value = 5;\n  // lease is the ID of the lease that attached to key.\n  // When the attached lease expires, the key will be deleted.\n  // If lease is 0, then no lease is attached to the key.\n  int64 lease = 6;\n}\n\nmessage Event {\n  enum EventType {\n    PUT = 0;\n    DELETE = 1;\n  }\n  // type is the kind of event. If type is a PUT, it indicates\n  // new data has been stored to the key. If type is a DELETE,\n  // it indicates the key was deleted.\n  EventType type = 1;\n  // kv holds the KeyValue for the event.\n  // A PUT event contains current kv pair.\n  // A PUT event with kv.Version=1 indicates the creation of a key.\n  // A DELETE/EXPIRE event contains the deleted key with\n  // its modification revision set to the revision of deletion.\n  KeyValue kv = 2;\n\n  // prev_kv holds the key-value pair before the event happens.\n  KeyValue prev_kv = 3;\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/v3rpc/rpctypes/doc.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package rpctypes has types and values shared by the etcd server and client for v3 RPC interaction.\npackage rpctypes\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/v3rpc/rpctypes/error.go",
    "content": "// Copyright 2015 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage rpctypes\n\nimport (\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// server-side error\nvar (\n\tErrGRPCEmptyKey      = status.New(codes.InvalidArgument, \"etcdserver: key is not provided\").Err()\n\tErrGRPCKeyNotFound   = status.New(codes.InvalidArgument, \"etcdserver: key not found\").Err()\n\tErrGRPCValueProvided = status.New(codes.InvalidArgument, \"etcdserver: value is provided\").Err()\n\tErrGRPCLeaseProvided = status.New(codes.InvalidArgument, \"etcdserver: lease is provided\").Err()\n\tErrGRPCTooManyOps    = status.New(codes.InvalidArgument, \"etcdserver: too many operations in txn request\").Err()\n\tErrGRPCDuplicateKey  = status.New(codes.InvalidArgument, \"etcdserver: duplicate key given in txn request\").Err()\n\tErrGRPCCompacted     = status.New(codes.OutOfRange, \"etcdserver: mvcc: required revision has been compacted\").Err()\n\tErrGRPCFutureRev     = status.New(codes.OutOfRange, \"etcdserver: mvcc: required revision is a future revision\").Err()\n\tErrGRPCNoSpace       = status.New(codes.ResourceExhausted, \"etcdserver: mvcc: database space exceeded\").Err()\n\n\tErrGRPCLeaseNotFound    = status.New(codes.NotFound, \"etcdserver: requested lease not found\").Err()\n\tErrGRPCLeaseExist       = status.New(codes.FailedPrecondition, \"etcdserver: lease already exists\").Err()\n\tErrGRPCLeaseTTLTooLarge = status.New(codes.OutOfRange, \"etcdserver: too large lease TTL\").Err()\n\n\tErrGRPCWatchCanceled = status.New(codes.Canceled, \"etcdserver: watch canceled\").Err()\n\n\tErrGRPCMemberExist            = status.New(codes.FailedPrecondition, \"etcdserver: member ID already exist\").Err()\n\tErrGRPCPeerURLExist           = status.New(codes.FailedPrecondition, \"etcdserver: Peer URLs already exists\").Err()\n\tErrGRPCMemberNotEnoughStarted = status.New(codes.FailedPrecondition, \"etcdserver: re-configuration failed due to not enough started members\").Err()\n\tErrGRPCMemberBadURLs          = status.New(codes.InvalidArgument, \"etcdserver: given member URLs are invalid\").Err()\n\tErrGRPCMemberNotFound         = status.New(codes.NotFound, \"etcdserver: member not found\").Err()\n\tErrGRPCMemberNotLearner       = status.New(codes.FailedPrecondition, \"etcdserver: can only promote a learner member\").Err()\n\tErrGRPCLearnerNotReady        = status.New(codes.FailedPrecondition, \"etcdserver: can only promote a learner member which is in sync with leader\").Err()\n\tErrGRPCTooManyLearners        = status.New(codes.FailedPrecondition, \"etcdserver: too many learner members in cluster\").Err()\n\tErrGRPCClusterIdMismatch      = status.New(codes.FailedPrecondition, \"etcdserver: cluster ID mismatch\").Err()\n\n\tErrGRPCRequestTooLarge        = status.New(codes.InvalidArgument, \"etcdserver: request is too large\").Err()\n\tErrGRPCRequestTooManyRequests = status.New(codes.ResourceExhausted, \"etcdserver: too many requests\").Err()\n\n\tErrGRPCRootUserNotExist     = status.New(codes.FailedPrecondition, \"etcdserver: root user does not exist\").Err()\n\tErrGRPCRootRoleNotExist     = status.New(codes.FailedPrecondition, \"etcdserver: root user does not have root role\").Err()\n\tErrGRPCUserAlreadyExist     = status.New(codes.FailedPrecondition, \"etcdserver: user name already exists\").Err()\n\tErrGRPCUserEmpty            = status.New(codes.InvalidArgument, \"etcdserver: user name is empty\").Err()\n\tErrGRPCUserNotFound         = status.New(codes.FailedPrecondition, \"etcdserver: user name not found\").Err()\n\tErrGRPCRoleAlreadyExist     = status.New(codes.FailedPrecondition, \"etcdserver: role name already exists\").Err()\n\tErrGRPCRoleNotFound         = status.New(codes.FailedPrecondition, \"etcdserver: role name not found\").Err()\n\tErrGRPCRoleEmpty            = status.New(codes.InvalidArgument, \"etcdserver: role name is empty\").Err()\n\tErrGRPCAuthFailed           = status.New(codes.InvalidArgument, \"etcdserver: authentication failed, invalid user ID or password\").Err()\n\tErrGRPCPermissionNotGiven   = status.New(codes.InvalidArgument, \"etcdserver: permission not given\").Err()\n\tErrGRPCPermissionDenied     = status.New(codes.PermissionDenied, \"etcdserver: permission denied\").Err()\n\tErrGRPCRoleNotGranted       = status.New(codes.FailedPrecondition, \"etcdserver: role is not granted to the user\").Err()\n\tErrGRPCPermissionNotGranted = status.New(codes.FailedPrecondition, \"etcdserver: permission is not granted to the role\").Err()\n\tErrGRPCAuthNotEnabled       = status.New(codes.FailedPrecondition, \"etcdserver: authentication is not enabled\").Err()\n\tErrGRPCInvalidAuthToken     = status.New(codes.Unauthenticated, \"etcdserver: invalid auth token\").Err()\n\tErrGRPCInvalidAuthMgmt      = status.New(codes.InvalidArgument, \"etcdserver: invalid auth management\").Err()\n\tErrGRPCAuthOldRevision      = status.New(codes.InvalidArgument, \"etcdserver: revision of auth store is old\").Err()\n\n\tErrGRPCNoLeader                   = status.New(codes.Unavailable, \"etcdserver: no leader\").Err()\n\tErrGRPCNotLeader                  = status.New(codes.FailedPrecondition, \"etcdserver: not leader\").Err()\n\tErrGRPCLeaderChanged              = status.New(codes.Unavailable, \"etcdserver: leader changed\").Err()\n\tErrGRPCNotCapable                 = status.New(codes.Unavailable, \"etcdserver: not capable\").Err()\n\tErrGRPCStopped                    = status.New(codes.Unavailable, \"etcdserver: server stopped\").Err()\n\tErrGRPCTimeout                    = status.New(codes.Unavailable, \"etcdserver: request timed out\").Err()\n\tErrGRPCTimeoutDueToLeaderFail     = status.New(codes.Unavailable, \"etcdserver: request timed out, possibly due to previous leader failure\").Err()\n\tErrGRPCTimeoutDueToConnectionLost = status.New(codes.Unavailable, \"etcdserver: request timed out, possibly due to connection lost\").Err()\n\tErrGRPCTimeoutWaitAppliedIndex    = status.New(codes.Unavailable, \"etcdserver: request timed out, waiting for the applied index took too long\").Err()\n\tErrGRPCUnhealthy                  = status.New(codes.Unavailable, \"etcdserver: unhealthy cluster\").Err()\n\tErrGRPCCorrupt                    = status.New(codes.DataLoss, \"etcdserver: corrupt cluster\").Err()\n\tErrGPRCNotSupportedForLearner     = status.New(codes.Unavailable, \"etcdserver: rpc not supported for learner\").Err()\n\tErrGRPCBadLeaderTransferee        = status.New(codes.FailedPrecondition, \"etcdserver: bad leader transferee\").Err()\n\n\tErrGRPCClusterVersionUnavailable     = status.New(codes.Unavailable, \"etcdserver: cluster version not found during downgrade\").Err()\n\tErrGRPCWrongDowngradeVersionFormat   = status.New(codes.InvalidArgument, \"etcdserver: wrong downgrade target version format\").Err()\n\tErrGRPCInvalidDowngradeTargetVersion = status.New(codes.InvalidArgument, \"etcdserver: invalid downgrade target version\").Err()\n\tErrGRPCDowngradeInProcess            = status.New(codes.FailedPrecondition, \"etcdserver: cluster has a downgrade job in progress\").Err()\n\tErrGRPCNoInflightDowngrade           = status.New(codes.FailedPrecondition, \"etcdserver: no inflight downgrade job\").Err()\n\n\tErrGRPCCanceled         = status.New(codes.Canceled, \"etcdserver: request canceled\").Err()\n\tErrGRPCDeadlineExceeded = status.New(codes.DeadlineExceeded, \"etcdserver: context deadline exceeded\").Err()\n\n\terrStringToError = map[string]error{\n\t\tErrorDesc(ErrGRPCEmptyKey):      ErrGRPCEmptyKey,\n\t\tErrorDesc(ErrGRPCKeyNotFound):   ErrGRPCKeyNotFound,\n\t\tErrorDesc(ErrGRPCValueProvided): ErrGRPCValueProvided,\n\t\tErrorDesc(ErrGRPCLeaseProvided): ErrGRPCLeaseProvided,\n\n\t\tErrorDesc(ErrGRPCTooManyOps):   ErrGRPCTooManyOps,\n\t\tErrorDesc(ErrGRPCDuplicateKey): ErrGRPCDuplicateKey,\n\t\tErrorDesc(ErrGRPCCompacted):    ErrGRPCCompacted,\n\t\tErrorDesc(ErrGRPCFutureRev):    ErrGRPCFutureRev,\n\t\tErrorDesc(ErrGRPCNoSpace):      ErrGRPCNoSpace,\n\n\t\tErrorDesc(ErrGRPCLeaseNotFound):    ErrGRPCLeaseNotFound,\n\t\tErrorDesc(ErrGRPCLeaseExist):       ErrGRPCLeaseExist,\n\t\tErrorDesc(ErrGRPCLeaseTTLTooLarge): ErrGRPCLeaseTTLTooLarge,\n\n\t\tErrorDesc(ErrGRPCMemberExist):            ErrGRPCMemberExist,\n\t\tErrorDesc(ErrGRPCPeerURLExist):           ErrGRPCPeerURLExist,\n\t\tErrorDesc(ErrGRPCMemberNotEnoughStarted): ErrGRPCMemberNotEnoughStarted,\n\t\tErrorDesc(ErrGRPCMemberBadURLs):          ErrGRPCMemberBadURLs,\n\t\tErrorDesc(ErrGRPCMemberNotFound):         ErrGRPCMemberNotFound,\n\t\tErrorDesc(ErrGRPCMemberNotLearner):       ErrGRPCMemberNotLearner,\n\t\tErrorDesc(ErrGRPCLearnerNotReady):        ErrGRPCLearnerNotReady,\n\t\tErrorDesc(ErrGRPCTooManyLearners):        ErrGRPCTooManyLearners,\n\t\tErrorDesc(ErrGRPCClusterIdMismatch):      ErrGRPCClusterIdMismatch,\n\n\t\tErrorDesc(ErrGRPCRequestTooLarge):        ErrGRPCRequestTooLarge,\n\t\tErrorDesc(ErrGRPCRequestTooManyRequests): ErrGRPCRequestTooManyRequests,\n\n\t\tErrorDesc(ErrGRPCRootUserNotExist):     ErrGRPCRootUserNotExist,\n\t\tErrorDesc(ErrGRPCRootRoleNotExist):     ErrGRPCRootRoleNotExist,\n\t\tErrorDesc(ErrGRPCUserAlreadyExist):     ErrGRPCUserAlreadyExist,\n\t\tErrorDesc(ErrGRPCUserEmpty):            ErrGRPCUserEmpty,\n\t\tErrorDesc(ErrGRPCUserNotFound):         ErrGRPCUserNotFound,\n\t\tErrorDesc(ErrGRPCRoleAlreadyExist):     ErrGRPCRoleAlreadyExist,\n\t\tErrorDesc(ErrGRPCRoleNotFound):         ErrGRPCRoleNotFound,\n\t\tErrorDesc(ErrGRPCRoleEmpty):            ErrGRPCRoleEmpty,\n\t\tErrorDesc(ErrGRPCAuthFailed):           ErrGRPCAuthFailed,\n\t\tErrorDesc(ErrGRPCPermissionDenied):     ErrGRPCPermissionDenied,\n\t\tErrorDesc(ErrGRPCRoleNotGranted):       ErrGRPCRoleNotGranted,\n\t\tErrorDesc(ErrGRPCPermissionNotGranted): ErrGRPCPermissionNotGranted,\n\t\tErrorDesc(ErrGRPCAuthNotEnabled):       ErrGRPCAuthNotEnabled,\n\t\tErrorDesc(ErrGRPCInvalidAuthToken):     ErrGRPCInvalidAuthToken,\n\t\tErrorDesc(ErrGRPCInvalidAuthMgmt):      ErrGRPCInvalidAuthMgmt,\n\t\tErrorDesc(ErrGRPCAuthOldRevision):      ErrGRPCAuthOldRevision,\n\n\t\tErrorDesc(ErrGRPCNoLeader):                   ErrGRPCNoLeader,\n\t\tErrorDesc(ErrGRPCNotLeader):                  ErrGRPCNotLeader,\n\t\tErrorDesc(ErrGRPCLeaderChanged):              ErrGRPCLeaderChanged,\n\t\tErrorDesc(ErrGRPCNotCapable):                 ErrGRPCNotCapable,\n\t\tErrorDesc(ErrGRPCStopped):                    ErrGRPCStopped,\n\t\tErrorDesc(ErrGRPCTimeout):                    ErrGRPCTimeout,\n\t\tErrorDesc(ErrGRPCTimeoutDueToLeaderFail):     ErrGRPCTimeoutDueToLeaderFail,\n\t\tErrorDesc(ErrGRPCTimeoutDueToConnectionLost): ErrGRPCTimeoutDueToConnectionLost,\n\t\tErrorDesc(ErrGRPCUnhealthy):                  ErrGRPCUnhealthy,\n\t\tErrorDesc(ErrGRPCCorrupt):                    ErrGRPCCorrupt,\n\t\tErrorDesc(ErrGPRCNotSupportedForLearner):     ErrGPRCNotSupportedForLearner,\n\t\tErrorDesc(ErrGRPCBadLeaderTransferee):        ErrGRPCBadLeaderTransferee,\n\n\t\tErrorDesc(ErrGRPCClusterVersionUnavailable):     ErrGRPCClusterVersionUnavailable,\n\t\tErrorDesc(ErrGRPCWrongDowngradeVersionFormat):   ErrGRPCWrongDowngradeVersionFormat,\n\t\tErrorDesc(ErrGRPCInvalidDowngradeTargetVersion): ErrGRPCInvalidDowngradeTargetVersion,\n\t\tErrorDesc(ErrGRPCDowngradeInProcess):            ErrGRPCDowngradeInProcess,\n\t\tErrorDesc(ErrGRPCNoInflightDowngrade):           ErrGRPCNoInflightDowngrade,\n\t}\n)\n\n// client-side error\nvar (\n\tErrEmptyKey      = Error(ErrGRPCEmptyKey)\n\tErrKeyNotFound   = Error(ErrGRPCKeyNotFound)\n\tErrValueProvided = Error(ErrGRPCValueProvided)\n\tErrLeaseProvided = Error(ErrGRPCLeaseProvided)\n\tErrTooManyOps    = Error(ErrGRPCTooManyOps)\n\tErrDuplicateKey  = Error(ErrGRPCDuplicateKey)\n\tErrCompacted     = Error(ErrGRPCCompacted)\n\tErrFutureRev     = Error(ErrGRPCFutureRev)\n\tErrNoSpace       = Error(ErrGRPCNoSpace)\n\n\tErrLeaseNotFound    = Error(ErrGRPCLeaseNotFound)\n\tErrLeaseExist       = Error(ErrGRPCLeaseExist)\n\tErrLeaseTTLTooLarge = Error(ErrGRPCLeaseTTLTooLarge)\n\n\tErrMemberExist            = Error(ErrGRPCMemberExist)\n\tErrPeerURLExist           = Error(ErrGRPCPeerURLExist)\n\tErrMemberNotEnoughStarted = Error(ErrGRPCMemberNotEnoughStarted)\n\tErrMemberBadURLs          = Error(ErrGRPCMemberBadURLs)\n\tErrMemberNotFound         = Error(ErrGRPCMemberNotFound)\n\tErrMemberNotLearner       = Error(ErrGRPCMemberNotLearner)\n\tErrMemberLearnerNotReady  = Error(ErrGRPCLearnerNotReady)\n\tErrTooManyLearners        = Error(ErrGRPCTooManyLearners)\n\n\tErrRequestTooLarge = Error(ErrGRPCRequestTooLarge)\n\tErrTooManyRequests = Error(ErrGRPCRequestTooManyRequests)\n\n\tErrRootUserNotExist     = Error(ErrGRPCRootUserNotExist)\n\tErrRootRoleNotExist     = Error(ErrGRPCRootRoleNotExist)\n\tErrUserAlreadyExist     = Error(ErrGRPCUserAlreadyExist)\n\tErrUserEmpty            = Error(ErrGRPCUserEmpty)\n\tErrUserNotFound         = Error(ErrGRPCUserNotFound)\n\tErrRoleAlreadyExist     = Error(ErrGRPCRoleAlreadyExist)\n\tErrRoleNotFound         = Error(ErrGRPCRoleNotFound)\n\tErrRoleEmpty            = Error(ErrGRPCRoleEmpty)\n\tErrAuthFailed           = Error(ErrGRPCAuthFailed)\n\tErrPermissionDenied     = Error(ErrGRPCPermissionDenied)\n\tErrRoleNotGranted       = Error(ErrGRPCRoleNotGranted)\n\tErrPermissionNotGranted = Error(ErrGRPCPermissionNotGranted)\n\tErrAuthNotEnabled       = Error(ErrGRPCAuthNotEnabled)\n\tErrInvalidAuthToken     = Error(ErrGRPCInvalidAuthToken)\n\tErrAuthOldRevision      = Error(ErrGRPCAuthOldRevision)\n\tErrInvalidAuthMgmt      = Error(ErrGRPCInvalidAuthMgmt)\n\tErrClusterIdMismatch    = Error(ErrGRPCClusterIdMismatch)\n\n\tErrNoLeader                   = Error(ErrGRPCNoLeader)\n\tErrNotLeader                  = Error(ErrGRPCNotLeader)\n\tErrLeaderChanged              = Error(ErrGRPCLeaderChanged)\n\tErrNotCapable                 = Error(ErrGRPCNotCapable)\n\tErrStopped                    = Error(ErrGRPCStopped)\n\tErrTimeout                    = Error(ErrGRPCTimeout)\n\tErrTimeoutDueToLeaderFail     = Error(ErrGRPCTimeoutDueToLeaderFail)\n\tErrTimeoutDueToConnectionLost = Error(ErrGRPCTimeoutDueToConnectionLost)\n\tErrTimeoutWaitAppliedIndex    = Error(ErrGRPCTimeoutWaitAppliedIndex)\n\tErrUnhealthy                  = Error(ErrGRPCUnhealthy)\n\tErrCorrupt                    = Error(ErrGRPCCorrupt)\n\tErrBadLeaderTransferee        = Error(ErrGRPCBadLeaderTransferee)\n\n\tErrClusterVersionUnavailable     = Error(ErrGRPCClusterVersionUnavailable)\n\tErrWrongDowngradeVersionFormat   = Error(ErrGRPCWrongDowngradeVersionFormat)\n\tErrInvalidDowngradeTargetVersion = Error(ErrGRPCInvalidDowngradeTargetVersion)\n\tErrDowngradeInProcess            = Error(ErrGRPCDowngradeInProcess)\n\tErrNoInflightDowngrade           = Error(ErrGRPCNoInflightDowngrade)\n)\n\n// EtcdError defines gRPC server errors.\n// (https://github.com/grpc/grpc-go/blob/master/rpc_util.go#L319-L323)\ntype EtcdError struct {\n\tcode codes.Code\n\tdesc string\n}\n\n// Code returns grpc/codes.Code.\n// TODO: define clientv3/codes.Code.\nfunc (e EtcdError) Code() codes.Code {\n\treturn e.code\n}\n\nfunc (e EtcdError) Error() string {\n\treturn e.desc\n}\n\nfunc Error(err error) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\tverr, ok := errStringToError[ErrorDesc(err)]\n\tif !ok { // not gRPC error\n\t\treturn err\n\t}\n\tev, ok := status.FromError(verr)\n\tvar desc string\n\tif ok {\n\t\tdesc = ev.Message()\n\t} else {\n\t\tdesc = verr.Error()\n\t}\n\treturn EtcdError{code: ev.Code(), desc: desc}\n}\n\nfunc ErrorDesc(err error) string {\n\tif s, ok := status.FromError(err); ok {\n\t\treturn s.Message()\n\t}\n\treturn err.Error()\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/v3rpc/rpctypes/md.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage rpctypes\n\nvar (\n\tMetadataRequireLeaderKey = \"hasleader\"\n\tMetadataHasLeader        = \"true\"\n\n\tMetadataClientAPIVersionKey = \"client-api-version\"\n)\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/v3rpc/rpctypes/metadatafields.go",
    "content": "// Copyright 2018 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage rpctypes\n\nvar (\n\tTokenFieldNameGRPC    = \"token\"\n\tTokenFieldNameSwagger = \"authorization\"\n)\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/api/v3/version/version.go",
    "content": "// Copyright 2015 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package version implements etcd version parsing and contains latest version\n// information.\npackage version\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/coreos/go-semver/semver\"\n)\n\nvar (\n\t// MinClusterVersion is the min cluster version this etcd binary is compatible with.\n\tMinClusterVersion = \"3.0.0\"\n\tVersion           = \"3.5.11\"\n\tAPIVersion        = \"unknown\"\n\n\t// Git SHA Value will be set during build\n\tGitSHA = \"Not provided (use ./build instead of go build)\"\n)\n\nfunc init() {\n\tver, err := semver.NewVersion(Version)\n\tif err == nil {\n\t\tAPIVersion = fmt.Sprintf(\"%d.%d\", ver.Major, ver.Minor)\n\t}\n}\n\ntype Versions struct {\n\tServer  string `json:\"etcdserver\"`\n\tCluster string `json:\"etcdcluster\"`\n\t// TODO: raft state machine version\n}\n\n// Cluster only keeps the major.minor.\nfunc Cluster(v string) string {\n\tvs := strings.Split(v, \".\")\n\tif len(vs) <= 2 {\n\t\treturn v\n\t}\n\treturn fmt.Sprintf(\"%s.%s\", vs[0], vs[1])\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/pkg/v3/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/pkg/v3/logutil/doc.go",
    "content": "// Copyright 2018 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package logutil includes utilities to facilitate logging.\npackage logutil\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/pkg/v3/logutil/log_level.go",
    "content": "// Copyright 2019 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logutil\n\nimport (\n\t\"go.uber.org/zap/zapcore\"\n)\n\nvar DefaultLogLevel = \"info\"\n\n// ConvertToZapLevel converts log level string to zapcore.Level.\nfunc ConvertToZapLevel(lvl string) zapcore.Level {\n\tvar level zapcore.Level\n\tif err := level.Set(lvl); err != nil {\n\t\tpanic(err)\n\t}\n\treturn level\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/pkg/v3/logutil/zap.go",
    "content": "// Copyright 2019 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logutil\n\nimport (\n\t\"sort\"\n\t\"time\"\n\n\t\"go.uber.org/zap\"\n\t\"go.uber.org/zap/zapcore\"\n)\n\n// CreateDefaultZapLogger creates a logger with default zap configuration\nfunc CreateDefaultZapLogger(level zapcore.Level) (*zap.Logger, error) {\n\tlcfg := DefaultZapLoggerConfig\n\tlcfg.Level = zap.NewAtomicLevelAt(level)\n\tc, err := lcfg.Build()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn c, nil\n}\n\n// DefaultZapLoggerConfig defines default zap logger configuration.\nvar DefaultZapLoggerConfig = zap.Config{\n\tLevel: zap.NewAtomicLevelAt(ConvertToZapLevel(DefaultLogLevel)),\n\n\tDevelopment: false,\n\tSampling: &zap.SamplingConfig{\n\t\tInitial:    100,\n\t\tThereafter: 100,\n\t},\n\n\tEncoding: \"json\",\n\n\t// copied from \"zap.NewProductionEncoderConfig\" with some updates\n\tEncoderConfig: zapcore.EncoderConfig{\n\t\tTimeKey:       \"ts\",\n\t\tLevelKey:      \"level\",\n\t\tNameKey:       \"logger\",\n\t\tCallerKey:     \"caller\",\n\t\tMessageKey:    \"msg\",\n\t\tStacktraceKey: \"stacktrace\",\n\t\tLineEnding:    zapcore.DefaultLineEnding,\n\t\tEncodeLevel:   zapcore.LowercaseLevelEncoder,\n\n\t\t// Custom EncodeTime function to ensure we match format and precision of historic capnslog timestamps\n\t\tEncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {\n\t\t\tenc.AppendString(t.Format(\"2006-01-02T15:04:05.999999Z0700\"))\n\t\t},\n\n\t\tEncodeDuration: zapcore.StringDurationEncoder,\n\t\tEncodeCaller:   zapcore.ShortCallerEncoder,\n\t},\n\n\t// Use \"/dev/null\" to discard all\n\tOutputPaths:      []string{\"stderr\"},\n\tErrorOutputPaths: []string{\"stderr\"},\n}\n\n// MergeOutputPaths merges logging output paths, resolving conflicts.\nfunc MergeOutputPaths(cfg zap.Config) zap.Config {\n\toutputs := make(map[string]struct{})\n\tfor _, v := range cfg.OutputPaths {\n\t\toutputs[v] = struct{}{}\n\t}\n\toutputSlice := make([]string, 0)\n\tif _, ok := outputs[\"/dev/null\"]; ok {\n\t\t// \"/dev/null\" to discard all\n\t\toutputSlice = []string{\"/dev/null\"}\n\t} else {\n\t\tfor k := range outputs {\n\t\t\toutputSlice = append(outputSlice, k)\n\t\t}\n\t}\n\tcfg.OutputPaths = outputSlice\n\tsort.Strings(cfg.OutputPaths)\n\n\terrOutputs := make(map[string]struct{})\n\tfor _, v := range cfg.ErrorOutputPaths {\n\t\terrOutputs[v] = struct{}{}\n\t}\n\terrOutputSlice := make([]string, 0)\n\tif _, ok := errOutputs[\"/dev/null\"]; ok {\n\t\t// \"/dev/null\" to discard all\n\t\terrOutputSlice = []string{\"/dev/null\"}\n\t} else {\n\t\tfor k := range errOutputs {\n\t\t\terrOutputSlice = append(errOutputSlice, k)\n\t\t}\n\t}\n\tcfg.ErrorOutputPaths = errOutputSlice\n\tsort.Strings(cfg.ErrorOutputPaths)\n\n\treturn cfg\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/pkg/v3/logutil/zap_journal.go",
    "content": "// Copyright 2018 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build !windows\n// +build !windows\n\npackage logutil\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"go.etcd.io/etcd/client/pkg/v3/systemd\"\n\n\t\"github.com/coreos/go-systemd/v22/journal\"\n\t\"go.uber.org/zap/zapcore\"\n)\n\n// NewJournalWriter wraps \"io.Writer\" to redirect log output\n// to the local systemd journal. If journald send fails, it fails\n// back to writing to the original writer.\n// The decode overhead is only <30µs per write.\n// Reference: https://github.com/coreos/pkg/blob/master/capnslog/journald_formatter.go\nfunc NewJournalWriter(wr io.Writer) (io.Writer, error) {\n\treturn &journalWriter{Writer: wr}, systemd.DialJournal()\n}\n\ntype journalWriter struct {\n\tio.Writer\n}\n\n// WARN: assume that etcd uses default field names in zap encoder config\n// make sure to keep this up-to-date!\ntype logLine struct {\n\tLevel  string `json:\"level\"`\n\tCaller string `json:\"caller\"`\n}\n\nfunc (w *journalWriter) Write(p []byte) (int, error) {\n\tline := &logLine{}\n\tif err := json.NewDecoder(bytes.NewReader(p)).Decode(line); err != nil {\n\t\treturn 0, err\n\t}\n\n\tvar pri journal.Priority\n\tswitch line.Level {\n\tcase zapcore.DebugLevel.String():\n\t\tpri = journal.PriDebug\n\tcase zapcore.InfoLevel.String():\n\t\tpri = journal.PriInfo\n\n\tcase zapcore.WarnLevel.String():\n\t\tpri = journal.PriWarning\n\tcase zapcore.ErrorLevel.String():\n\t\tpri = journal.PriErr\n\n\tcase zapcore.DPanicLevel.String():\n\t\tpri = journal.PriCrit\n\tcase zapcore.PanicLevel.String():\n\t\tpri = journal.PriCrit\n\tcase zapcore.FatalLevel.String():\n\t\tpri = journal.PriCrit\n\n\tdefault:\n\t\tpanic(fmt.Errorf(\"unknown log level: %q\", line.Level))\n\t}\n\n\terr := journal.Send(string(p), pri, map[string]string{\n\t\t\"PACKAGE\":           filepath.Dir(line.Caller),\n\t\t\"SYSLOG_IDENTIFIER\": filepath.Base(os.Args[0]),\n\t})\n\tif err != nil {\n\t\t// \"journal\" also falls back to stderr\n\t\t// \"fmt.Fprintln(os.Stderr, s)\"\n\t\treturn w.Writer.Write(p)\n\t}\n\treturn 0, nil\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/pkg/v3/systemd/doc.go",
    "content": "// Copyright 2018 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package systemd provides utility functions for systemd.\npackage systemd\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/pkg/v3/systemd/journal.go",
    "content": "// Copyright 2018 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage systemd\n\nimport \"net\"\n\n// DialJournal returns no error if the process can dial journal socket.\n// Returns an error if dial failed, which indicates journald is not available\n// (e.g. run embedded etcd as docker daemon).\n// Reference: https://github.com/coreos/go-systemd/blob/master/journal/journal.go.\nfunc DialJournal() error {\n\tconn, err := net.Dial(\"unixgram\", \"/run/systemd/journal/socket\")\n\tif conn != nil {\n\t\tdefer conn.Close()\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/pkg/v3/types/doc.go",
    "content": "// Copyright 2015 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package types declares various data types and implements type-checking\n// functions.\npackage types\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/pkg/v3/types/id.go",
    "content": "// Copyright 2015 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage types\n\nimport \"strconv\"\n\n// ID represents a generic identifier which is canonically\n// stored as a uint64 but is typically represented as a\n// base-16 string for input/output\ntype ID uint64\n\nfunc (i ID) String() string {\n\treturn strconv.FormatUint(uint64(i), 16)\n}\n\n// IDFromString attempts to create an ID from a base-16 string.\nfunc IDFromString(s string) (ID, error) {\n\ti, err := strconv.ParseUint(s, 16, 64)\n\treturn ID(i), err\n}\n\n// IDSlice implements the sort interface\ntype IDSlice []ID\n\nfunc (p IDSlice) Len() int           { return len(p) }\nfunc (p IDSlice) Less(i, j int) bool { return uint64(p[i]) < uint64(p[j]) }\nfunc (p IDSlice) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/pkg/v3/types/set.go",
    "content": "// Copyright 2015 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage types\n\nimport (\n\t\"reflect\"\n\t\"sort\"\n\t\"sync\"\n)\n\ntype Set interface {\n\tAdd(string)\n\tRemove(string)\n\tContains(string) bool\n\tEquals(Set) bool\n\tLength() int\n\tValues() []string\n\tCopy() Set\n\tSub(Set) Set\n}\n\nfunc NewUnsafeSet(values ...string) *unsafeSet {\n\tset := &unsafeSet{make(map[string]struct{})}\n\tfor _, v := range values {\n\t\tset.Add(v)\n\t}\n\treturn set\n}\n\nfunc NewThreadsafeSet(values ...string) *tsafeSet {\n\tus := NewUnsafeSet(values...)\n\treturn &tsafeSet{us, sync.RWMutex{}}\n}\n\ntype unsafeSet struct {\n\td map[string]struct{}\n}\n\n// Add adds a new value to the set (no-op if the value is already present)\nfunc (us *unsafeSet) Add(value string) {\n\tus.d[value] = struct{}{}\n}\n\n// Remove removes the given value from the set\nfunc (us *unsafeSet) Remove(value string) {\n\tdelete(us.d, value)\n}\n\n// Contains returns whether the set contains the given value\nfunc (us *unsafeSet) Contains(value string) (exists bool) {\n\t_, exists = us.d[value]\n\treturn exists\n}\n\n// ContainsAll returns whether the set contains all given values\nfunc (us *unsafeSet) ContainsAll(values []string) bool {\n\tfor _, s := range values {\n\t\tif !us.Contains(s) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Equals returns whether the contents of two sets are identical\nfunc (us *unsafeSet) Equals(other Set) bool {\n\tv1 := sort.StringSlice(us.Values())\n\tv2 := sort.StringSlice(other.Values())\n\tv1.Sort()\n\tv2.Sort()\n\treturn reflect.DeepEqual(v1, v2)\n}\n\n// Length returns the number of elements in the set\nfunc (us *unsafeSet) Length() int {\n\treturn len(us.d)\n}\n\n// Values returns the values of the Set in an unspecified order.\nfunc (us *unsafeSet) Values() (values []string) {\n\tvalues = make([]string, 0)\n\tfor val := range us.d {\n\t\tvalues = append(values, val)\n\t}\n\treturn values\n}\n\n// Copy creates a new Set containing the values of the first\nfunc (us *unsafeSet) Copy() Set {\n\tcp := NewUnsafeSet()\n\tfor val := range us.d {\n\t\tcp.Add(val)\n\t}\n\n\treturn cp\n}\n\n// Sub removes all elements in other from the set\nfunc (us *unsafeSet) Sub(other Set) Set {\n\toValues := other.Values()\n\tresult := us.Copy().(*unsafeSet)\n\n\tfor _, val := range oValues {\n\t\tif _, ok := result.d[val]; !ok {\n\t\t\tcontinue\n\t\t}\n\t\tdelete(result.d, val)\n\t}\n\n\treturn result\n}\n\ntype tsafeSet struct {\n\tus *unsafeSet\n\tm  sync.RWMutex\n}\n\nfunc (ts *tsafeSet) Add(value string) {\n\tts.m.Lock()\n\tdefer ts.m.Unlock()\n\tts.us.Add(value)\n}\n\nfunc (ts *tsafeSet) Remove(value string) {\n\tts.m.Lock()\n\tdefer ts.m.Unlock()\n\tts.us.Remove(value)\n}\n\nfunc (ts *tsafeSet) Contains(value string) (exists bool) {\n\tts.m.RLock()\n\tdefer ts.m.RUnlock()\n\treturn ts.us.Contains(value)\n}\n\nfunc (ts *tsafeSet) Equals(other Set) bool {\n\tts.m.RLock()\n\tdefer ts.m.RUnlock()\n\n\t// If ts and other represent the same variable, avoid calling\n\t// ts.us.Equals(other), to avoid double RLock bug\n\tif _other, ok := other.(*tsafeSet); ok {\n\t\tif _other == ts {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn ts.us.Equals(other)\n}\n\nfunc (ts *tsafeSet) Length() int {\n\tts.m.RLock()\n\tdefer ts.m.RUnlock()\n\treturn ts.us.Length()\n}\n\nfunc (ts *tsafeSet) Values() (values []string) {\n\tts.m.RLock()\n\tdefer ts.m.RUnlock()\n\treturn ts.us.Values()\n}\n\nfunc (ts *tsafeSet) Copy() Set {\n\tts.m.RLock()\n\tdefer ts.m.RUnlock()\n\tusResult := ts.us.Copy().(*unsafeSet)\n\treturn &tsafeSet{usResult, sync.RWMutex{}}\n}\n\nfunc (ts *tsafeSet) Sub(other Set) Set {\n\tts.m.RLock()\n\tdefer ts.m.RUnlock()\n\n\t// If ts and other represent the same variable, avoid calling\n\t// ts.us.Sub(other), to avoid double RLock bug\n\tif _other, ok := other.(*tsafeSet); ok {\n\t\tif _other == ts {\n\t\t\tusResult := NewUnsafeSet()\n\t\t\treturn &tsafeSet{usResult, sync.RWMutex{}}\n\t\t}\n\t}\n\tusResult := ts.us.Sub(other).(*unsafeSet)\n\treturn &tsafeSet{usResult, sync.RWMutex{}}\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/pkg/v3/types/slice.go",
    "content": "// Copyright 2015 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage types\n\n// Uint64Slice implements sort interface\ntype Uint64Slice []uint64\n\nfunc (p Uint64Slice) Len() int           { return len(p) }\nfunc (p Uint64Slice) Less(i, j int) bool { return p[i] < p[j] }\nfunc (p Uint64Slice) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/pkg/v3/types/urls.go",
    "content": "// Copyright 2015 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage types\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strings\"\n)\n\ntype URLs []url.URL\n\nfunc NewURLs(strs []string) (URLs, error) {\n\tall := make([]url.URL, len(strs))\n\tif len(all) == 0 {\n\t\treturn nil, errors.New(\"no valid URLs given\")\n\t}\n\tfor i, in := range strs {\n\t\tin = strings.TrimSpace(in)\n\t\tu, err := url.Parse(in)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif u.Scheme != \"http\" && u.Scheme != \"https\" && u.Scheme != \"unix\" && u.Scheme != \"unixs\" {\n\t\t\treturn nil, fmt.Errorf(\"URL scheme must be http, https, unix, or unixs: %s\", in)\n\t\t}\n\t\tif _, _, err := net.SplitHostPort(u.Host); err != nil {\n\t\t\treturn nil, fmt.Errorf(`URL address does not have the form \"host:port\": %s`, in)\n\t\t}\n\t\tif u.Path != \"\" {\n\t\t\treturn nil, fmt.Errorf(\"URL must not contain a path: %s\", in)\n\t\t}\n\t\tall[i] = *u\n\t}\n\tus := URLs(all)\n\tus.Sort()\n\n\treturn us, nil\n}\n\nfunc MustNewURLs(strs []string) URLs {\n\turls, err := NewURLs(strs)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn urls\n}\n\nfunc (us URLs) String() string {\n\treturn strings.Join(us.StringSlice(), \",\")\n}\n\nfunc (us *URLs) Sort() {\n\tsort.Sort(us)\n}\nfunc (us URLs) Len() int           { return len(us) }\nfunc (us URLs) Less(i, j int) bool { return us[i].String() < us[j].String() }\nfunc (us URLs) Swap(i, j int)      { us[i], us[j] = us[j], us[i] }\n\nfunc (us URLs) StringSlice() []string {\n\tout := make([]string, len(us))\n\tfor i := range us {\n\t\tout[i] = us[i].String()\n\t}\n\n\treturn out\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/pkg/v3/types/urlsmap.go",
    "content": "// Copyright 2015 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage types\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// URLsMap is a map from a name to its URLs.\ntype URLsMap map[string]URLs\n\n// NewURLsMap returns a URLsMap instantiated from the given string,\n// which consists of discovery-formatted names-to-URLs, like:\n// mach0=http://1.1.1.1:2380,mach0=http://2.2.2.2::2380,mach1=http://3.3.3.3:2380,mach2=http://4.4.4.4:2380\nfunc NewURLsMap(s string) (URLsMap, error) {\n\tm := parse(s)\n\n\tcl := URLsMap{}\n\tfor name, urls := range m {\n\t\tus, err := NewURLs(urls)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tcl[name] = us\n\t}\n\treturn cl, nil\n}\n\n// NewURLsMapFromStringMap takes a map of strings and returns a URLsMap. The\n// string values in the map can be multiple values separated by the sep string.\nfunc NewURLsMapFromStringMap(m map[string]string, sep string) (URLsMap, error) {\n\tvar err error\n\tum := URLsMap{}\n\tfor k, v := range m {\n\t\tum[k], err = NewURLs(strings.Split(v, sep))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn um, nil\n}\n\n// String turns URLsMap into discovery-formatted name-to-URLs sorted by name.\nfunc (c URLsMap) String() string {\n\tvar pairs []string\n\tfor name, urls := range c {\n\t\tfor _, url := range urls {\n\t\t\tpairs = append(pairs, fmt.Sprintf(\"%s=%s\", name, url.String()))\n\t\t}\n\t}\n\tsort.Strings(pairs)\n\treturn strings.Join(pairs, \",\")\n}\n\n// URLs returns a list of all URLs.\n// The returned list is sorted in ascending lexicographical order.\nfunc (c URLsMap) URLs() []string {\n\tvar urls []string\n\tfor _, us := range c {\n\t\tfor _, u := range us {\n\t\t\turls = append(urls, u.String())\n\t\t}\n\t}\n\tsort.Strings(urls)\n\treturn urls\n}\n\n// Len returns the size of URLsMap.\nfunc (c URLsMap) Len() int {\n\treturn len(c)\n}\n\n// parse parses the given string and returns a map listing the values specified for each key.\nfunc parse(s string) map[string][]string {\n\tm := make(map[string][]string)\n\tfor s != \"\" {\n\t\tkey := s\n\t\tif i := strings.IndexAny(key, \",\"); i >= 0 {\n\t\t\tkey, s = key[:i], key[i+1:]\n\t\t} else {\n\t\t\ts = \"\"\n\t\t}\n\t\tif key == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tvalue := \"\"\n\t\tif i := strings.Index(key, \"=\"); i >= 0 {\n\t\t\tkey, value = key[:i], key[i+1:]\n\t\t}\n\t\tm[key] = append(m[key], value)\n\t}\n\treturn m\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/README.md",
    "content": "# etcd/clientv3\n\n[![Docs](https://img.shields.io/badge/docs-latest-green.svg)](https://etcd.io/docs)\n[![Godoc](https://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://godoc.org/go.etcd.io/etcd/clientv3)\n\n`etcd/clientv3` is the official Go etcd client for v3.\n\n## Install\n\n```bash\ngo get go.etcd.io/etcd/client/v3\n```\n\nWarning: As etcd 3.5.0 was not yet released, the command above does not work. \nAfter first pre-release of 3.5.0 [#12498](https://github.com/etcd-io/etcd/issues/12498), \netcd can be referenced using: \n```\ngo get go.etcd.io/etcd/client/v3@v3.5.0-pre\n```\n\n## Get started\n\nCreate client using `clientv3.New`:\n\n```go\ncli, err := clientv3.New(clientv3.Config{\n\tEndpoints:   []string{\"localhost:2379\", \"localhost:22379\", \"localhost:32379\"},\n\tDialTimeout: 5 * time.Second,\n})\nif err != nil {\n\t// handle error!\n}\ndefer cli.Close()\n```\n\netcd v3 uses [`gRPC`](https://www.grpc.io) for remote procedure calls. And `clientv3` uses\n[`grpc-go`](https://github.com/grpc/grpc-go) to connect to etcd. Make sure to close the client after using it.\nIf the client is not closed, the connection will have leaky goroutines. To specify client request timeout,\npass `context.WithTimeout` to APIs:\n\n```go\nctx, cancel := context.WithTimeout(context.Background(), timeout)\nresp, err := cli.Put(ctx, \"sample_key\", \"sample_value\")\ncancel()\nif err != nil {\n    // handle error!\n}\n// use the response\n```\n\nFor full compatibility, it is recommended to install released versions of clients using go modules.\n\n## Error Handling\n\netcd client returns 2 types of errors:\n\n1. context error: canceled or deadline exceeded.\n2. gRPC error: see [api/v3rpc/rpctypes](https://godoc.org/go.etcd.io/etcd/api/v3rpc/rpctypes).\n\nHere is the example code to handle client errors:\n\n```go\nresp, err := cli.Put(ctx, \"\", \"\")\nif err != nil {\n\tswitch err {\n\tcase context.Canceled:\n\t\tlog.Fatalf(\"ctx is canceled by another routine: %v\", err)\n\tcase context.DeadlineExceeded:\n\t\tlog.Fatalf(\"ctx is attached with a deadline is exceeded: %v\", err)\n\tcase rpctypes.ErrEmptyKey:\n\t\tlog.Fatalf(\"client-side error: %v\", err)\n\tdefault:\n\t\tlog.Fatalf(\"bad cluster endpoints, which are not etcd servers: %v\", err)\n\t}\n}\n```\n\n## Metrics\n\nThe etcd client optionally exposes RPC metrics through [go-grpc-prometheus](https://github.com/grpc-ecosystem/go-grpc-prometheus). See the [examples](https://github.com/etcd-io/etcd/blob/main/tests/integration/clientv3/examples/example_metrics_test.go).\n\n## Namespacing\n\nThe [namespace](https://godoc.org/go.etcd.io/etcd/client/v3/namespace) package provides `clientv3` interface wrappers to transparently isolate client requests to a user-defined prefix.\n\n## Request size limit\n\nClient request size limit is configurable via `clientv3.Config.MaxCallSendMsgSize` and `MaxCallRecvMsgSize` in bytes. If none given, client request send limit defaults to 2 MiB including gRPC overhead bytes. And receive limit defaults to `math.MaxInt32`.\n\n## Examples\n\nMore code [examples](https://github.com/etcd-io/etcd/tree/main/tests/integration/clientv3/examples) can be found at [GoDoc](https://pkg.go.dev/go.etcd.io/etcd/client/v3).\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/auth.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"go.etcd.io/etcd/api/v3/authpb\"\n\tpb \"go.etcd.io/etcd/api/v3/etcdserverpb\"\n\t\"google.golang.org/grpc\"\n)\n\ntype (\n\tAuthEnableResponse               pb.AuthEnableResponse\n\tAuthDisableResponse              pb.AuthDisableResponse\n\tAuthStatusResponse               pb.AuthStatusResponse\n\tAuthenticateResponse             pb.AuthenticateResponse\n\tAuthUserAddResponse              pb.AuthUserAddResponse\n\tAuthUserDeleteResponse           pb.AuthUserDeleteResponse\n\tAuthUserChangePasswordResponse   pb.AuthUserChangePasswordResponse\n\tAuthUserGrantRoleResponse        pb.AuthUserGrantRoleResponse\n\tAuthUserGetResponse              pb.AuthUserGetResponse\n\tAuthUserRevokeRoleResponse       pb.AuthUserRevokeRoleResponse\n\tAuthRoleAddResponse              pb.AuthRoleAddResponse\n\tAuthRoleGrantPermissionResponse  pb.AuthRoleGrantPermissionResponse\n\tAuthRoleGetResponse              pb.AuthRoleGetResponse\n\tAuthRoleRevokePermissionResponse pb.AuthRoleRevokePermissionResponse\n\tAuthRoleDeleteResponse           pb.AuthRoleDeleteResponse\n\tAuthUserListResponse             pb.AuthUserListResponse\n\tAuthRoleListResponse             pb.AuthRoleListResponse\n\n\tPermissionType authpb.Permission_Type\n\tPermission     authpb.Permission\n)\n\nconst (\n\tPermRead      = authpb.READ\n\tPermWrite     = authpb.WRITE\n\tPermReadWrite = authpb.READWRITE\n)\n\ntype UserAddOptions authpb.UserAddOptions\n\ntype Auth interface {\n\t// Authenticate login and get token\n\tAuthenticate(ctx context.Context, name string, password string) (*AuthenticateResponse, error)\n\n\t// AuthEnable enables auth of an etcd cluster.\n\tAuthEnable(ctx context.Context) (*AuthEnableResponse, error)\n\n\t// AuthDisable disables auth of an etcd cluster.\n\tAuthDisable(ctx context.Context) (*AuthDisableResponse, error)\n\n\t// AuthStatus returns the status of auth of an etcd cluster.\n\tAuthStatus(ctx context.Context) (*AuthStatusResponse, error)\n\n\t// UserAdd adds a new user to an etcd cluster.\n\tUserAdd(ctx context.Context, name string, password string) (*AuthUserAddResponse, error)\n\n\t// UserAddWithOptions adds a new user to an etcd cluster with some options.\n\tUserAddWithOptions(ctx context.Context, name string, password string, opt *UserAddOptions) (*AuthUserAddResponse, error)\n\n\t// UserDelete deletes a user from an etcd cluster.\n\tUserDelete(ctx context.Context, name string) (*AuthUserDeleteResponse, error)\n\n\t// UserChangePassword changes a password of a user.\n\tUserChangePassword(ctx context.Context, name string, password string) (*AuthUserChangePasswordResponse, error)\n\n\t// UserGrantRole grants a role to a user.\n\tUserGrantRole(ctx context.Context, user string, role string) (*AuthUserGrantRoleResponse, error)\n\n\t// UserGet gets a detailed information of a user.\n\tUserGet(ctx context.Context, name string) (*AuthUserGetResponse, error)\n\n\t// UserList gets a list of all users.\n\tUserList(ctx context.Context) (*AuthUserListResponse, error)\n\n\t// UserRevokeRole revokes a role of a user.\n\tUserRevokeRole(ctx context.Context, name string, role string) (*AuthUserRevokeRoleResponse, error)\n\n\t// RoleAdd adds a new role to an etcd cluster.\n\tRoleAdd(ctx context.Context, name string) (*AuthRoleAddResponse, error)\n\n\t// RoleGrantPermission grants a permission to a role.\n\tRoleGrantPermission(ctx context.Context, name string, key, rangeEnd string, permType PermissionType) (*AuthRoleGrantPermissionResponse, error)\n\n\t// RoleGet gets a detailed information of a role.\n\tRoleGet(ctx context.Context, role string) (*AuthRoleGetResponse, error)\n\n\t// RoleList gets a list of all roles.\n\tRoleList(ctx context.Context) (*AuthRoleListResponse, error)\n\n\t// RoleRevokePermission revokes a permission from a role.\n\tRoleRevokePermission(ctx context.Context, role string, key, rangeEnd string) (*AuthRoleRevokePermissionResponse, error)\n\n\t// RoleDelete deletes a role.\n\tRoleDelete(ctx context.Context, role string) (*AuthRoleDeleteResponse, error)\n}\n\ntype authClient struct {\n\tremote   pb.AuthClient\n\tcallOpts []grpc.CallOption\n}\n\nfunc NewAuth(c *Client) Auth {\n\tapi := &authClient{remote: RetryAuthClient(c)}\n\tif c != nil {\n\t\tapi.callOpts = c.callOpts\n\t}\n\treturn api\n}\n\nfunc NewAuthFromAuthClient(remote pb.AuthClient, c *Client) Auth {\n\tapi := &authClient{remote: remote}\n\tif c != nil {\n\t\tapi.callOpts = c.callOpts\n\t}\n\treturn api\n}\n\nfunc (auth *authClient) Authenticate(ctx context.Context, name string, password string) (*AuthenticateResponse, error) {\n\tresp, err := auth.remote.Authenticate(ctx, &pb.AuthenticateRequest{Name: name, Password: password}, auth.callOpts...)\n\treturn (*AuthenticateResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) AuthEnable(ctx context.Context) (*AuthEnableResponse, error) {\n\tresp, err := auth.remote.AuthEnable(ctx, &pb.AuthEnableRequest{}, auth.callOpts...)\n\treturn (*AuthEnableResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) AuthDisable(ctx context.Context) (*AuthDisableResponse, error) {\n\tresp, err := auth.remote.AuthDisable(ctx, &pb.AuthDisableRequest{}, auth.callOpts...)\n\treturn (*AuthDisableResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) AuthStatus(ctx context.Context) (*AuthStatusResponse, error) {\n\tresp, err := auth.remote.AuthStatus(ctx, &pb.AuthStatusRequest{}, auth.callOpts...)\n\treturn (*AuthStatusResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) UserAdd(ctx context.Context, name string, password string) (*AuthUserAddResponse, error) {\n\tresp, err := auth.remote.UserAdd(ctx, &pb.AuthUserAddRequest{Name: name, Password: password, Options: &authpb.UserAddOptions{NoPassword: false}}, auth.callOpts...)\n\treturn (*AuthUserAddResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) UserAddWithOptions(ctx context.Context, name string, password string, options *UserAddOptions) (*AuthUserAddResponse, error) {\n\tresp, err := auth.remote.UserAdd(ctx, &pb.AuthUserAddRequest{Name: name, Password: password, Options: (*authpb.UserAddOptions)(options)}, auth.callOpts...)\n\treturn (*AuthUserAddResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) UserDelete(ctx context.Context, name string) (*AuthUserDeleteResponse, error) {\n\tresp, err := auth.remote.UserDelete(ctx, &pb.AuthUserDeleteRequest{Name: name}, auth.callOpts...)\n\treturn (*AuthUserDeleteResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) UserChangePassword(ctx context.Context, name string, password string) (*AuthUserChangePasswordResponse, error) {\n\tresp, err := auth.remote.UserChangePassword(ctx, &pb.AuthUserChangePasswordRequest{Name: name, Password: password}, auth.callOpts...)\n\treturn (*AuthUserChangePasswordResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) UserGrantRole(ctx context.Context, user string, role string) (*AuthUserGrantRoleResponse, error) {\n\tresp, err := auth.remote.UserGrantRole(ctx, &pb.AuthUserGrantRoleRequest{User: user, Role: role}, auth.callOpts...)\n\treturn (*AuthUserGrantRoleResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) UserGet(ctx context.Context, name string) (*AuthUserGetResponse, error) {\n\tresp, err := auth.remote.UserGet(ctx, &pb.AuthUserGetRequest{Name: name}, auth.callOpts...)\n\treturn (*AuthUserGetResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) UserList(ctx context.Context) (*AuthUserListResponse, error) {\n\tresp, err := auth.remote.UserList(ctx, &pb.AuthUserListRequest{}, auth.callOpts...)\n\treturn (*AuthUserListResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) UserRevokeRole(ctx context.Context, name string, role string) (*AuthUserRevokeRoleResponse, error) {\n\tresp, err := auth.remote.UserRevokeRole(ctx, &pb.AuthUserRevokeRoleRequest{Name: name, Role: role}, auth.callOpts...)\n\treturn (*AuthUserRevokeRoleResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) RoleAdd(ctx context.Context, name string) (*AuthRoleAddResponse, error) {\n\tresp, err := auth.remote.RoleAdd(ctx, &pb.AuthRoleAddRequest{Name: name}, auth.callOpts...)\n\treturn (*AuthRoleAddResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) RoleGrantPermission(ctx context.Context, name string, key, rangeEnd string, permType PermissionType) (*AuthRoleGrantPermissionResponse, error) {\n\tperm := &authpb.Permission{\n\t\tKey:      []byte(key),\n\t\tRangeEnd: []byte(rangeEnd),\n\t\tPermType: authpb.Permission_Type(permType),\n\t}\n\tresp, err := auth.remote.RoleGrantPermission(ctx, &pb.AuthRoleGrantPermissionRequest{Name: name, Perm: perm}, auth.callOpts...)\n\treturn (*AuthRoleGrantPermissionResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) RoleGet(ctx context.Context, role string) (*AuthRoleGetResponse, error) {\n\tresp, err := auth.remote.RoleGet(ctx, &pb.AuthRoleGetRequest{Role: role}, auth.callOpts...)\n\treturn (*AuthRoleGetResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) RoleList(ctx context.Context) (*AuthRoleListResponse, error) {\n\tresp, err := auth.remote.RoleList(ctx, &pb.AuthRoleListRequest{}, auth.callOpts...)\n\treturn (*AuthRoleListResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) RoleRevokePermission(ctx context.Context, role string, key, rangeEnd string) (*AuthRoleRevokePermissionResponse, error) {\n\tresp, err := auth.remote.RoleRevokePermission(ctx, &pb.AuthRoleRevokePermissionRequest{Role: role, Key: []byte(key), RangeEnd: []byte(rangeEnd)}, auth.callOpts...)\n\treturn (*AuthRoleRevokePermissionResponse)(resp), toErr(ctx, err)\n}\n\nfunc (auth *authClient) RoleDelete(ctx context.Context, role string) (*AuthRoleDeleteResponse, error) {\n\tresp, err := auth.remote.RoleDelete(ctx, &pb.AuthRoleDeleteRequest{Role: role}, auth.callOpts...)\n\treturn (*AuthRoleDeleteResponse)(resp), toErr(ctx, err)\n}\n\nfunc StrToPermissionType(s string) (PermissionType, error) {\n\tval, ok := authpb.Permission_Type_value[strings.ToUpper(s)]\n\tif ok {\n\t\treturn PermissionType(val), nil\n\t}\n\treturn PermissionType(-1), fmt.Errorf(\"invalid permission type: %s\", s)\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/client.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"go.etcd.io/etcd/api/v3/v3rpc/rpctypes\"\n\t\"go.etcd.io/etcd/client/pkg/v3/logutil\"\n\t\"go.etcd.io/etcd/client/v3/credentials\"\n\t\"go.etcd.io/etcd/client/v3/internal/endpoint\"\n\t\"go.etcd.io/etcd/client/v3/internal/resolver\"\n\t\"go.uber.org/zap\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/codes\"\n\tgrpccredentials \"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/keepalive\"\n\t\"google.golang.org/grpc/status\"\n)\n\nvar (\n\tErrNoAvailableEndpoints = errors.New(\"etcdclient: no available endpoints\")\n\tErrOldCluster           = errors.New(\"etcdclient: old cluster version\")\n)\n\n// Client provides and manages an etcd v3 client session.\ntype Client struct {\n\tCluster\n\tKV\n\tLease\n\tWatcher\n\tAuth\n\tMaintenance\n\n\tconn *grpc.ClientConn\n\n\tcfg      Config\n\tcreds    grpccredentials.TransportCredentials\n\tresolver *resolver.EtcdManualResolver\n\tmu       *sync.RWMutex\n\n\tctx    context.Context\n\tcancel context.CancelFunc\n\n\t// Username is a user name for authentication.\n\tUsername string\n\t// Password is a password for authentication.\n\tPassword        string\n\tauthTokenBundle credentials.Bundle\n\n\tcallOpts []grpc.CallOption\n\n\tlgMu *sync.RWMutex\n\tlg   *zap.Logger\n}\n\n// New creates a new etcdv3 client from a given configuration.\nfunc New(cfg Config) (*Client, error) {\n\tif len(cfg.Endpoints) == 0 {\n\t\treturn nil, ErrNoAvailableEndpoints\n\t}\n\n\treturn newClient(&cfg)\n}\n\n// NewCtxClient creates a client with a context but no underlying grpc\n// connection. This is useful for embedded cases that override the\n// service interface implementations and do not need connection management.\nfunc NewCtxClient(ctx context.Context, opts ...Option) *Client {\n\tcctx, cancel := context.WithCancel(ctx)\n\tc := &Client{ctx: cctx, cancel: cancel, lgMu: new(sync.RWMutex)}\n\tfor _, opt := range opts {\n\t\topt(c)\n\t}\n\tif c.lg == nil {\n\t\tc.lg = zap.NewNop()\n\t}\n\treturn c\n}\n\n// Option is a function type that can be passed as argument to NewCtxClient to configure client\ntype Option func(*Client)\n\n// NewFromURL creates a new etcdv3 client from a URL.\nfunc NewFromURL(url string) (*Client, error) {\n\treturn New(Config{Endpoints: []string{url}})\n}\n\n// NewFromURLs creates a new etcdv3 client from URLs.\nfunc NewFromURLs(urls []string) (*Client, error) {\n\treturn New(Config{Endpoints: urls})\n}\n\n// WithZapLogger is a NewCtxClient option that overrides the logger\nfunc WithZapLogger(lg *zap.Logger) Option {\n\treturn func(c *Client) {\n\t\tc.lg = lg\n\t}\n}\n\n// WithLogger overrides the logger.\n//\n// Deprecated: Please use WithZapLogger or Logger field in clientv3.Config\n//\n// Does not changes grpcLogger, that can be explicitly configured\n// using grpc_zap.ReplaceGrpcLoggerV2(..) method.\nfunc (c *Client) WithLogger(lg *zap.Logger) *Client {\n\tc.lgMu.Lock()\n\tc.lg = lg\n\tc.lgMu.Unlock()\n\treturn c\n}\n\n// GetLogger gets the logger.\n// NOTE: This method is for internal use of etcd-client library and should not be used as general-purpose logger.\nfunc (c *Client) GetLogger() *zap.Logger {\n\tc.lgMu.RLock()\n\tl := c.lg\n\tc.lgMu.RUnlock()\n\treturn l\n}\n\n// Close shuts down the client's etcd connections.\nfunc (c *Client) Close() error {\n\tc.cancel()\n\tif c.Watcher != nil {\n\t\tc.Watcher.Close()\n\t}\n\tif c.Lease != nil {\n\t\tc.Lease.Close()\n\t}\n\tif c.conn != nil {\n\t\treturn toErr(c.ctx, c.conn.Close())\n\t}\n\treturn c.ctx.Err()\n}\n\n// Ctx is a context for \"out of band\" messages (e.g., for sending\n// \"clean up\" message when another context is canceled). It is\n// canceled on client Close().\nfunc (c *Client) Ctx() context.Context { return c.ctx }\n\n// Endpoints lists the registered endpoints for the client.\nfunc (c *Client) Endpoints() []string {\n\t// copy the slice; protect original endpoints from being changed\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\teps := make([]string, len(c.cfg.Endpoints))\n\tcopy(eps, c.cfg.Endpoints)\n\treturn eps\n}\n\n// SetEndpoints updates client's endpoints.\nfunc (c *Client) SetEndpoints(eps ...string) {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\tc.cfg.Endpoints = eps\n\n\tc.resolver.SetEndpoints(eps)\n}\n\n// Sync synchronizes client's endpoints with the known endpoints from the etcd membership.\nfunc (c *Client) Sync(ctx context.Context) error {\n\tmresp, err := c.MemberList(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\tvar eps []string\n\tfor _, m := range mresp.Members {\n\t\tif len(m.Name) != 0 && !m.IsLearner {\n\t\t\teps = append(eps, m.ClientURLs...)\n\t\t}\n\t}\n\tc.SetEndpoints(eps...)\n\treturn nil\n}\n\nfunc (c *Client) autoSync() {\n\tif c.cfg.AutoSyncInterval == time.Duration(0) {\n\t\treturn\n\t}\n\n\tfor {\n\t\tselect {\n\t\tcase <-c.ctx.Done():\n\t\t\treturn\n\t\tcase <-time.After(c.cfg.AutoSyncInterval):\n\t\t\tctx, cancel := context.WithTimeout(c.ctx, 5*time.Second)\n\t\t\terr := c.Sync(ctx)\n\t\t\tcancel()\n\t\t\tif err != nil && err != c.ctx.Err() {\n\t\t\t\tc.lg.Info(\"Auto sync endpoints failed.\", zap.Error(err))\n\t\t\t}\n\t\t}\n\t}\n}\n\n// dialSetupOpts gives the dial opts prior to any authentication.\nfunc (c *Client) dialSetupOpts(creds grpccredentials.TransportCredentials, dopts ...grpc.DialOption) (opts []grpc.DialOption, err error) {\n\tif c.cfg.DialKeepAliveTime > 0 {\n\t\tparams := keepalive.ClientParameters{\n\t\t\tTime:                c.cfg.DialKeepAliveTime,\n\t\t\tTimeout:             c.cfg.DialKeepAliveTimeout,\n\t\t\tPermitWithoutStream: c.cfg.PermitWithoutStream,\n\t\t}\n\t\topts = append(opts, grpc.WithKeepaliveParams(params))\n\t}\n\topts = append(opts, dopts...)\n\n\tif creds != nil {\n\t\topts = append(opts, grpc.WithTransportCredentials(creds))\n\t} else {\n\t\topts = append(opts, grpc.WithInsecure())\n\t}\n\n\t// Interceptor retry and backoff.\n\t// TODO: Replace all of clientv3/retry.go with RetryPolicy:\n\t// https://github.com/grpc/grpc-proto/blob/cdd9ed5c3d3f87aef62f373b93361cf7bddc620d/grpc/service_config/service_config.proto#L130\n\trrBackoff := withBackoff(c.roundRobinQuorumBackoff(defaultBackoffWaitBetween, defaultBackoffJitterFraction))\n\topts = append(opts,\n\t\t// Disable stream retry by default since go-grpc-middleware/retry does not support client streams.\n\t\t// Streams that are safe to retry are enabled individually.\n\t\tgrpc.WithStreamInterceptor(c.streamClientInterceptor(withMax(0), rrBackoff)),\n\t\tgrpc.WithUnaryInterceptor(c.unaryClientInterceptor(withMax(defaultUnaryMaxRetries), rrBackoff)),\n\t)\n\n\treturn opts, nil\n}\n\n// Dial connects to a single endpoint using the client's config.\nfunc (c *Client) Dial(ep string) (*grpc.ClientConn, error) {\n\tcreds := c.credentialsForEndpoint(ep)\n\n\t// Using ad-hoc created resolver, to guarantee only explicitly given\n\t// endpoint is used.\n\treturn c.dial(creds, grpc.WithResolvers(resolver.New(ep)))\n}\n\nfunc (c *Client) getToken(ctx context.Context) error {\n\tvar err error // return last error in a case of fail\n\n\tif c.Username == \"\" || c.Password == \"\" {\n\t\treturn nil\n\t}\n\n\tresp, err := c.Auth.Authenticate(ctx, c.Username, c.Password)\n\tif err != nil {\n\t\tif err == rpctypes.ErrAuthNotEnabled {\n\t\t\tc.authTokenBundle.UpdateAuthToken(\"\")\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n\tc.authTokenBundle.UpdateAuthToken(resp.Token)\n\treturn nil\n}\n\n// dialWithBalancer dials the client's current load balanced resolver group.  The scheme of the host\n// of the provided endpoint determines the scheme used for all endpoints of the client connection.\nfunc (c *Client) dialWithBalancer(dopts ...grpc.DialOption) (*grpc.ClientConn, error) {\n\tcreds := c.credentialsForEndpoint(c.Endpoints()[0])\n\topts := append(dopts, grpc.WithResolvers(c.resolver))\n\treturn c.dial(creds, opts...)\n}\n\n// dial configures and dials any grpc balancer target.\nfunc (c *Client) dial(creds grpccredentials.TransportCredentials, dopts ...grpc.DialOption) (*grpc.ClientConn, error) {\n\topts, err := c.dialSetupOpts(creds, dopts...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to configure dialer: %v\", err)\n\t}\n\tif c.authTokenBundle != nil {\n\t\topts = append(opts, grpc.WithPerRPCCredentials(c.authTokenBundle.PerRPCCredentials()))\n\t}\n\n\topts = append(opts, c.cfg.DialOptions...)\n\n\tdctx := c.ctx\n\tif c.cfg.DialTimeout > 0 {\n\t\tvar cancel context.CancelFunc\n\t\tdctx, cancel = context.WithTimeout(c.ctx, c.cfg.DialTimeout)\n\t\tdefer cancel() // TODO: Is this right for cases where grpc.WithBlock() is not set on the dial options?\n\t}\n\ttarget := fmt.Sprintf(\"%s://%p/%s\", resolver.Schema, c, authority(c.Endpoints()[0]))\n\tconn, err := grpc.DialContext(dctx, target, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn conn, nil\n}\n\nfunc authority(endpoint string) string {\n\tspl := strings.SplitN(endpoint, \"://\", 2)\n\tif len(spl) < 2 {\n\t\tif strings.HasPrefix(endpoint, \"unix:\") {\n\t\t\treturn endpoint[len(\"unix:\"):]\n\t\t}\n\t\tif strings.HasPrefix(endpoint, \"unixs:\") {\n\t\t\treturn endpoint[len(\"unixs:\"):]\n\t\t}\n\t\treturn endpoint\n\t}\n\treturn spl[1]\n}\n\nfunc (c *Client) credentialsForEndpoint(ep string) grpccredentials.TransportCredentials {\n\tr := endpoint.RequiresCredentials(ep)\n\tswitch r {\n\tcase endpoint.CREDS_DROP:\n\t\treturn nil\n\tcase endpoint.CREDS_OPTIONAL:\n\t\treturn c.creds\n\tcase endpoint.CREDS_REQUIRE:\n\t\tif c.creds != nil {\n\t\t\treturn c.creds\n\t\t}\n\t\treturn credentials.NewBundle(credentials.Config{}).TransportCredentials()\n\tdefault:\n\t\tpanic(fmt.Errorf(\"unsupported CredsRequirement: %v\", r))\n\t}\n}\n\nfunc newClient(cfg *Config) (*Client, error) {\n\tif cfg == nil {\n\t\tcfg = &Config{}\n\t}\n\tvar creds grpccredentials.TransportCredentials\n\tif cfg.TLS != nil {\n\t\tcreds = credentials.NewBundle(credentials.Config{TLSConfig: cfg.TLS}).TransportCredentials()\n\t}\n\n\t// use a temporary skeleton client to bootstrap first connection\n\tbaseCtx := context.TODO()\n\tif cfg.Context != nil {\n\t\tbaseCtx = cfg.Context\n\t}\n\n\tctx, cancel := context.WithCancel(baseCtx)\n\tclient := &Client{\n\t\tconn:     nil,\n\t\tcfg:      *cfg,\n\t\tcreds:    creds,\n\t\tctx:      ctx,\n\t\tcancel:   cancel,\n\t\tmu:       new(sync.RWMutex),\n\t\tcallOpts: defaultCallOpts,\n\t\tlgMu:     new(sync.RWMutex),\n\t}\n\n\tvar err error\n\tif cfg.Logger != nil {\n\t\tclient.lg = cfg.Logger\n\t} else if cfg.LogConfig != nil {\n\t\tclient.lg, err = cfg.LogConfig.Build()\n\t} else {\n\t\tclient.lg, err = logutil.CreateDefaultZapLogger(etcdClientDebugLevel())\n\t\tif client.lg != nil {\n\t\t\tclient.lg = client.lg.Named(\"etcd-client\")\n\t\t}\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif cfg.Username != \"\" && cfg.Password != \"\" {\n\t\tclient.Username = cfg.Username\n\t\tclient.Password = cfg.Password\n\t\tclient.authTokenBundle = credentials.NewBundle(credentials.Config{})\n\t}\n\tif cfg.MaxCallSendMsgSize > 0 || cfg.MaxCallRecvMsgSize > 0 {\n\t\tif cfg.MaxCallRecvMsgSize > 0 && cfg.MaxCallSendMsgSize > cfg.MaxCallRecvMsgSize {\n\t\t\treturn nil, fmt.Errorf(\"gRPC message recv limit (%d bytes) must be greater than send limit (%d bytes)\", cfg.MaxCallRecvMsgSize, cfg.MaxCallSendMsgSize)\n\t\t}\n\t\tcallOpts := []grpc.CallOption{\n\t\t\tdefaultWaitForReady,\n\t\t\tdefaultMaxCallSendMsgSize,\n\t\t\tdefaultMaxCallRecvMsgSize,\n\t\t}\n\t\tif cfg.MaxCallSendMsgSize > 0 {\n\t\t\tcallOpts[1] = grpc.MaxCallSendMsgSize(cfg.MaxCallSendMsgSize)\n\t\t}\n\t\tif cfg.MaxCallRecvMsgSize > 0 {\n\t\t\tcallOpts[2] = grpc.MaxCallRecvMsgSize(cfg.MaxCallRecvMsgSize)\n\t\t}\n\t\tclient.callOpts = callOpts\n\t}\n\n\tclient.resolver = resolver.New(cfg.Endpoints...)\n\n\tif len(cfg.Endpoints) < 1 {\n\t\tclient.cancel()\n\t\treturn nil, fmt.Errorf(\"at least one Endpoint is required in client config\")\n\t}\n\t// Use a provided endpoint target so that for https:// without any tls config given, then\n\t// grpc will assume the certificate server name is the endpoint host.\n\tconn, err := client.dialWithBalancer()\n\tif err != nil {\n\t\tclient.cancel()\n\t\tclient.resolver.Close()\n\t\t// TODO: Error like `fmt.Errorf(dialing [%s] failed: %v, strings.Join(cfg.Endpoints, \";\"), err)` would help with debugging a lot.\n\t\treturn nil, err\n\t}\n\tclient.conn = conn\n\n\tclient.Cluster = NewCluster(client)\n\tclient.KV = NewKV(client)\n\tclient.Lease = NewLease(client)\n\tclient.Watcher = NewWatcher(client)\n\tclient.Auth = NewAuth(client)\n\tclient.Maintenance = NewMaintenance(client)\n\n\t//get token with established connection\n\tctx, cancel = client.ctx, func() {}\n\tif client.cfg.DialTimeout > 0 {\n\t\tctx, cancel = context.WithTimeout(ctx, client.cfg.DialTimeout)\n\t}\n\terr = client.getToken(ctx)\n\tif err != nil {\n\t\tclient.Close()\n\t\tcancel()\n\t\t//TODO: Consider fmt.Errorf(\"communicating with [%s] failed: %v\", strings.Join(cfg.Endpoints, \";\"), err)\n\t\treturn nil, err\n\t}\n\tcancel()\n\n\tif cfg.RejectOldCluster {\n\t\tif err := client.checkVersion(); err != nil {\n\t\t\tclient.Close()\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tgo client.autoSync()\n\treturn client, nil\n}\n\n// roundRobinQuorumBackoff retries against quorum between each backoff.\n// This is intended for use with a round robin load balancer.\nfunc (c *Client) roundRobinQuorumBackoff(waitBetween time.Duration, jitterFraction float64) backoffFunc {\n\treturn func(attempt uint) time.Duration {\n\t\t// after each round robin across quorum, backoff for our wait between duration\n\t\tn := uint(len(c.Endpoints()))\n\t\tquorum := (n/2 + 1)\n\t\tif attempt%quorum == 0 {\n\t\t\tc.lg.Debug(\"backoff\", zap.Uint(\"attempt\", attempt), zap.Uint(\"quorum\", quorum), zap.Duration(\"waitBetween\", waitBetween), zap.Float64(\"jitterFraction\", jitterFraction))\n\t\t\treturn jitterUp(waitBetween, jitterFraction)\n\t\t}\n\t\tc.lg.Debug(\"backoff skipped\", zap.Uint(\"attempt\", attempt), zap.Uint(\"quorum\", quorum))\n\t\treturn 0\n\t}\n}\n\nfunc (c *Client) checkVersion() (err error) {\n\tvar wg sync.WaitGroup\n\n\teps := c.Endpoints()\n\terrc := make(chan error, len(eps))\n\tctx, cancel := context.WithCancel(c.ctx)\n\tif c.cfg.DialTimeout > 0 {\n\t\tcancel()\n\t\tctx, cancel = context.WithTimeout(c.ctx, c.cfg.DialTimeout)\n\t}\n\n\twg.Add(len(eps))\n\tfor _, ep := range eps {\n\t\t// if cluster is current, any endpoint gives a recent version\n\t\tgo func(e string) {\n\t\t\tdefer wg.Done()\n\t\t\tresp, rerr := c.Status(ctx, e)\n\t\t\tif rerr != nil {\n\t\t\t\terrc <- rerr\n\t\t\t\treturn\n\t\t\t}\n\t\t\tvs := strings.Split(resp.Version, \".\")\n\t\t\tmaj, min := 0, 0\n\t\t\tif len(vs) >= 2 {\n\t\t\t\tvar serr error\n\t\t\t\tif maj, serr = strconv.Atoi(vs[0]); serr != nil {\n\t\t\t\t\terrc <- serr\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif min, serr = strconv.Atoi(vs[1]); serr != nil {\n\t\t\t\t\terrc <- serr\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\tif maj < 3 || (maj == 3 && min < 4) {\n\t\t\t\trerr = ErrOldCluster\n\t\t\t}\n\t\t\terrc <- rerr\n\t\t}(ep)\n\t}\n\t// wait for success\n\tfor range eps {\n\t\tif err = <-errc; err != nil {\n\t\t\tbreak\n\t\t}\n\t}\n\tcancel()\n\twg.Wait()\n\treturn err\n}\n\n// ActiveConnection returns the current in-use connection\nfunc (c *Client) ActiveConnection() *grpc.ClientConn { return c.conn }\n\n// isHaltErr returns true if the given error and context indicate no forward\n// progress can be made, even after reconnecting.\nfunc isHaltErr(ctx context.Context, err error) bool {\n\tif ctx != nil && ctx.Err() != nil {\n\t\treturn true\n\t}\n\tif err == nil {\n\t\treturn false\n\t}\n\tev, _ := status.FromError(err)\n\t// Unavailable codes mean the system will be right back.\n\t// (e.g., can't connect, lost leader)\n\t// Treat Internal codes as if something failed, leaving the\n\t// system in an inconsistent state, but retrying could make progress.\n\t// (e.g., failed in middle of send, corrupted frame)\n\t// TODO: are permanent Internal errors possible from grpc?\n\treturn ev.Code() != codes.Unavailable && ev.Code() != codes.Internal\n}\n\n// isUnavailableErr returns true if the given error is an unavailable error\nfunc isUnavailableErr(ctx context.Context, err error) bool {\n\tif ctx != nil && ctx.Err() != nil {\n\t\treturn false\n\t}\n\tif err == nil {\n\t\treturn false\n\t}\n\tev, ok := status.FromError(err)\n\tif ok {\n\t\t// Unavailable codes mean the system will be right back.\n\t\t// (e.g., can't connect, lost leader)\n\t\treturn ev.Code() == codes.Unavailable\n\t}\n\treturn false\n}\n\nfunc toErr(ctx context.Context, err error) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\terr = rpctypes.Error(err)\n\tif _, ok := err.(rpctypes.EtcdError); ok {\n\t\treturn err\n\t}\n\tif ev, ok := status.FromError(err); ok {\n\t\tcode := ev.Code()\n\t\tswitch code {\n\t\tcase codes.DeadlineExceeded:\n\t\t\tfallthrough\n\t\tcase codes.Canceled:\n\t\t\tif ctx.Err() != nil {\n\t\t\t\terr = ctx.Err()\n\t\t\t}\n\t\t}\n\t}\n\treturn err\n}\n\nfunc canceledByCaller(stopCtx context.Context, err error) bool {\n\tif stopCtx.Err() == nil || err == nil {\n\t\treturn false\n\t}\n\n\treturn err == context.Canceled || err == context.DeadlineExceeded\n}\n\n// IsConnCanceled returns true, if error is from a closed gRPC connection.\n// ref. https://github.com/grpc/grpc-go/pull/1854\nfunc IsConnCanceled(err error) bool {\n\tif err == nil {\n\t\treturn false\n\t}\n\n\t// >= gRPC v1.23.x\n\ts, ok := status.FromError(err)\n\tif ok {\n\t\t// connection is canceled or server has already closed the connection\n\t\treturn s.Code() == codes.Canceled || s.Message() == \"transport is closing\"\n\t}\n\n\t// >= gRPC v1.10.x\n\tif err == context.Canceled {\n\t\treturn true\n\t}\n\n\t// <= gRPC v1.7.x returns 'errors.New(\"grpc: the client connection is closing\")'\n\treturn strings.Contains(err.Error(), \"grpc: the client connection is closing\")\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/cluster.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"context\"\n\n\tpb \"go.etcd.io/etcd/api/v3/etcdserverpb\"\n\t\"go.etcd.io/etcd/client/pkg/v3/types\"\n\n\t\"google.golang.org/grpc\"\n)\n\ntype (\n\tMember                pb.Member\n\tMemberListResponse    pb.MemberListResponse\n\tMemberAddResponse     pb.MemberAddResponse\n\tMemberRemoveResponse  pb.MemberRemoveResponse\n\tMemberUpdateResponse  pb.MemberUpdateResponse\n\tMemberPromoteResponse pb.MemberPromoteResponse\n)\n\ntype Cluster interface {\n\t// MemberList lists the current cluster membership.\n\tMemberList(ctx context.Context) (*MemberListResponse, error)\n\n\t// MemberAdd adds a new member into the cluster.\n\tMemberAdd(ctx context.Context, peerAddrs []string) (*MemberAddResponse, error)\n\n\t// MemberAddAsLearner adds a new learner member into the cluster.\n\tMemberAddAsLearner(ctx context.Context, peerAddrs []string) (*MemberAddResponse, error)\n\n\t// MemberRemove removes an existing member from the cluster.\n\tMemberRemove(ctx context.Context, id uint64) (*MemberRemoveResponse, error)\n\n\t// MemberUpdate updates the peer addresses of the member.\n\tMemberUpdate(ctx context.Context, id uint64, peerAddrs []string) (*MemberUpdateResponse, error)\n\n\t// MemberPromote promotes a member from raft learner (non-voting) to raft voting member.\n\tMemberPromote(ctx context.Context, id uint64) (*MemberPromoteResponse, error)\n}\n\ntype cluster struct {\n\tremote   pb.ClusterClient\n\tcallOpts []grpc.CallOption\n}\n\nfunc NewCluster(c *Client) Cluster {\n\tapi := &cluster{remote: RetryClusterClient(c)}\n\tif c != nil {\n\t\tapi.callOpts = c.callOpts\n\t}\n\treturn api\n}\n\nfunc NewClusterFromClusterClient(remote pb.ClusterClient, c *Client) Cluster {\n\tapi := &cluster{remote: remote}\n\tif c != nil {\n\t\tapi.callOpts = c.callOpts\n\t}\n\treturn api\n}\n\nfunc (c *cluster) MemberAdd(ctx context.Context, peerAddrs []string) (*MemberAddResponse, error) {\n\treturn c.memberAdd(ctx, peerAddrs, false)\n}\n\nfunc (c *cluster) MemberAddAsLearner(ctx context.Context, peerAddrs []string) (*MemberAddResponse, error) {\n\treturn c.memberAdd(ctx, peerAddrs, true)\n}\n\nfunc (c *cluster) memberAdd(ctx context.Context, peerAddrs []string, isLearner bool) (*MemberAddResponse, error) {\n\t// fail-fast before panic in rafthttp\n\tif _, err := types.NewURLs(peerAddrs); err != nil {\n\t\treturn nil, err\n\t}\n\n\tr := &pb.MemberAddRequest{\n\t\tPeerURLs:  peerAddrs,\n\t\tIsLearner: isLearner,\n\t}\n\tresp, err := c.remote.MemberAdd(ctx, r, c.callOpts...)\n\tif err != nil {\n\t\treturn nil, toErr(ctx, err)\n\t}\n\treturn (*MemberAddResponse)(resp), nil\n}\n\nfunc (c *cluster) MemberRemove(ctx context.Context, id uint64) (*MemberRemoveResponse, error) {\n\tr := &pb.MemberRemoveRequest{ID: id}\n\tresp, err := c.remote.MemberRemove(ctx, r, c.callOpts...)\n\tif err != nil {\n\t\treturn nil, toErr(ctx, err)\n\t}\n\treturn (*MemberRemoveResponse)(resp), nil\n}\n\nfunc (c *cluster) MemberUpdate(ctx context.Context, id uint64, peerAddrs []string) (*MemberUpdateResponse, error) {\n\t// fail-fast before panic in rafthttp\n\tif _, err := types.NewURLs(peerAddrs); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// it is safe to retry on update.\n\tr := &pb.MemberUpdateRequest{ID: id, PeerURLs: peerAddrs}\n\tresp, err := c.remote.MemberUpdate(ctx, r, c.callOpts...)\n\tif err == nil {\n\t\treturn (*MemberUpdateResponse)(resp), nil\n\t}\n\treturn nil, toErr(ctx, err)\n}\n\nfunc (c *cluster) MemberList(ctx context.Context) (*MemberListResponse, error) {\n\t// it is safe to retry on list.\n\tresp, err := c.remote.MemberList(ctx, &pb.MemberListRequest{Linearizable: true}, c.callOpts...)\n\tif err == nil {\n\t\treturn (*MemberListResponse)(resp), nil\n\t}\n\treturn nil, toErr(ctx, err)\n}\n\nfunc (c *cluster) MemberPromote(ctx context.Context, id uint64) (*MemberPromoteResponse, error) {\n\tr := &pb.MemberPromoteRequest{ID: id}\n\tresp, err := c.remote.MemberPromote(ctx, r, c.callOpts...)\n\tif err != nil {\n\t\treturn nil, toErr(ctx, err)\n\t}\n\treturn (*MemberPromoteResponse)(resp), nil\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/compact_op.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\tpb \"go.etcd.io/etcd/api/v3/etcdserverpb\"\n)\n\n// CompactOp represents a compact operation.\ntype CompactOp struct {\n\trevision int64\n\tphysical bool\n}\n\n// CompactOption configures compact operation.\ntype CompactOption func(*CompactOp)\n\nfunc (op *CompactOp) applyCompactOpts(opts []CompactOption) {\n\tfor _, opt := range opts {\n\t\topt(op)\n\t}\n}\n\n// OpCompact wraps slice CompactOption to create a CompactOp.\nfunc OpCompact(rev int64, opts ...CompactOption) CompactOp {\n\tret := CompactOp{revision: rev}\n\tret.applyCompactOpts(opts)\n\treturn ret\n}\n\nfunc (op CompactOp) toRequest() *pb.CompactionRequest {\n\treturn &pb.CompactionRequest{Revision: op.revision, Physical: op.physical}\n}\n\n// WithCompactPhysical makes Compact wait until all compacted entries are\n// removed from the etcd server's storage.\nfunc WithCompactPhysical() CompactOption {\n\treturn func(op *CompactOp) { op.physical = true }\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/compare.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\tpb \"go.etcd.io/etcd/api/v3/etcdserverpb\"\n)\n\ntype CompareTarget int\ntype CompareResult int\n\nconst (\n\tCompareVersion CompareTarget = iota\n\tCompareCreated\n\tCompareModified\n\tCompareValue\n)\n\ntype Cmp pb.Compare\n\nfunc Compare(cmp Cmp, result string, v interface{}) Cmp {\n\tvar r pb.Compare_CompareResult\n\n\tswitch result {\n\tcase \"=\":\n\t\tr = pb.Compare_EQUAL\n\tcase \"!=\":\n\t\tr = pb.Compare_NOT_EQUAL\n\tcase \">\":\n\t\tr = pb.Compare_GREATER\n\tcase \"<\":\n\t\tr = pb.Compare_LESS\n\tdefault:\n\t\tpanic(\"Unknown result op\")\n\t}\n\n\tcmp.Result = r\n\tswitch cmp.Target {\n\tcase pb.Compare_VALUE:\n\t\tval, ok := v.(string)\n\t\tif !ok {\n\t\t\tpanic(\"bad compare value\")\n\t\t}\n\t\tcmp.TargetUnion = &pb.Compare_Value{Value: []byte(val)}\n\tcase pb.Compare_VERSION:\n\t\tcmp.TargetUnion = &pb.Compare_Version{Version: mustInt64(v)}\n\tcase pb.Compare_CREATE:\n\t\tcmp.TargetUnion = &pb.Compare_CreateRevision{CreateRevision: mustInt64(v)}\n\tcase pb.Compare_MOD:\n\t\tcmp.TargetUnion = &pb.Compare_ModRevision{ModRevision: mustInt64(v)}\n\tcase pb.Compare_LEASE:\n\t\tcmp.TargetUnion = &pb.Compare_Lease{Lease: mustInt64orLeaseID(v)}\n\tdefault:\n\t\tpanic(\"Unknown compare type\")\n\t}\n\treturn cmp\n}\n\nfunc Value(key string) Cmp {\n\treturn Cmp{Key: []byte(key), Target: pb.Compare_VALUE}\n}\n\nfunc Version(key string) Cmp {\n\treturn Cmp{Key: []byte(key), Target: pb.Compare_VERSION}\n}\n\nfunc CreateRevision(key string) Cmp {\n\treturn Cmp{Key: []byte(key), Target: pb.Compare_CREATE}\n}\n\nfunc ModRevision(key string) Cmp {\n\treturn Cmp{Key: []byte(key), Target: pb.Compare_MOD}\n}\n\n// LeaseValue compares a key's LeaseID to a value of your choosing. The empty\n// LeaseID is 0, otherwise known as `NoLease`.\nfunc LeaseValue(key string) Cmp {\n\treturn Cmp{Key: []byte(key), Target: pb.Compare_LEASE}\n}\n\n// KeyBytes returns the byte slice holding with the comparison key.\nfunc (cmp *Cmp) KeyBytes() []byte { return cmp.Key }\n\n// WithKeyBytes sets the byte slice for the comparison key.\nfunc (cmp *Cmp) WithKeyBytes(key []byte) { cmp.Key = key }\n\n// ValueBytes returns the byte slice holding the comparison value, if any.\nfunc (cmp *Cmp) ValueBytes() []byte {\n\tif tu, ok := cmp.TargetUnion.(*pb.Compare_Value); ok {\n\t\treturn tu.Value\n\t}\n\treturn nil\n}\n\n// WithValueBytes sets the byte slice for the comparison's value.\nfunc (cmp *Cmp) WithValueBytes(v []byte) { cmp.TargetUnion.(*pb.Compare_Value).Value = v }\n\n// WithRange sets the comparison to scan the range [key, end).\nfunc (cmp Cmp) WithRange(end string) Cmp {\n\tcmp.RangeEnd = []byte(end)\n\treturn cmp\n}\n\n// WithPrefix sets the comparison to scan all keys prefixed by the key.\nfunc (cmp Cmp) WithPrefix() Cmp {\n\tcmp.RangeEnd = getPrefix(cmp.Key)\n\treturn cmp\n}\n\n// mustInt64 panics if val isn't an int or int64. It returns an int64 otherwise.\nfunc mustInt64(val interface{}) int64 {\n\tif v, ok := val.(int64); ok {\n\t\treturn v\n\t}\n\tif v, ok := val.(int); ok {\n\t\treturn int64(v)\n\t}\n\tpanic(\"bad value\")\n}\n\n// mustInt64orLeaseID panics if val isn't a LeaseID, int or int64. It returns an\n// int64 otherwise.\nfunc mustInt64orLeaseID(val interface{}) int64 {\n\tif v, ok := val.(LeaseID); ok {\n\t\treturn int64(v)\n\t}\n\treturn mustInt64(val)\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/config.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"time\"\n\n\t\"go.uber.org/zap\"\n\t\"google.golang.org/grpc\"\n)\n\ntype Config struct {\n\t// Endpoints is a list of URLs.\n\tEndpoints []string `json:\"endpoints\"`\n\n\t// AutoSyncInterval is the interval to update endpoints with its latest members.\n\t// 0 disables auto-sync. By default auto-sync is disabled.\n\tAutoSyncInterval time.Duration `json:\"auto-sync-interval\"`\n\n\t// DialTimeout is the timeout for failing to establish a connection.\n\tDialTimeout time.Duration `json:\"dial-timeout\"`\n\n\t// DialKeepAliveTime is the time after which client pings the server to see if\n\t// transport is alive.\n\tDialKeepAliveTime time.Duration `json:\"dial-keep-alive-time\"`\n\n\t// DialKeepAliveTimeout is the time that the client waits for a response for the\n\t// keep-alive probe. If the response is not received in this time, the connection is closed.\n\tDialKeepAliveTimeout time.Duration `json:\"dial-keep-alive-timeout\"`\n\n\t// MaxCallSendMsgSize is the client-side request send limit in bytes.\n\t// If 0, it defaults to 2.0 MiB (2 * 1024 * 1024).\n\t// Make sure that \"MaxCallSendMsgSize\" < server-side default send/recv limit.\n\t// (\"--max-request-bytes\" flag to etcd or \"embed.Config.MaxRequestBytes\").\n\tMaxCallSendMsgSize int\n\n\t// MaxCallRecvMsgSize is the client-side response receive limit.\n\t// If 0, it defaults to \"math.MaxInt32\", because range response can\n\t// easily exceed request send limits.\n\t// Make sure that \"MaxCallRecvMsgSize\" >= server-side default send/recv limit.\n\t// (\"--max-request-bytes\" flag to etcd or \"embed.Config.MaxRequestBytes\").\n\tMaxCallRecvMsgSize int\n\n\t// TLS holds the client secure credentials, if any.\n\tTLS *tls.Config\n\n\t// Username is a user name for authentication.\n\tUsername string `json:\"username\"`\n\n\t// Password is a password for authentication.\n\tPassword string `json:\"password\"`\n\n\t// RejectOldCluster when set will refuse to create a client against an outdated cluster.\n\tRejectOldCluster bool `json:\"reject-old-cluster\"`\n\n\t// DialOptions is a list of dial options for the grpc client (e.g., for interceptors).\n\t// For example, pass \"grpc.WithBlock()\" to block until the underlying connection is up.\n\t// Without this, Dial returns immediately and connecting the server happens in background.\n\tDialOptions []grpc.DialOption\n\n\t// Context is the default client context; it can be used to cancel grpc dial out and\n\t// other operations that do not have an explicit context.\n\tContext context.Context\n\n\t// Logger sets client-side logger.\n\t// If nil, fallback to building LogConfig.\n\tLogger *zap.Logger\n\n\t// LogConfig configures client-side logger.\n\t// If nil, use the default logger.\n\t// TODO: configure gRPC logger\n\tLogConfig *zap.Config\n\n\t// PermitWithoutStream when set will allow client to send keepalive pings to server without any active streams(RPCs).\n\tPermitWithoutStream bool `json:\"permit-without-stream\"`\n\n\t// TODO: support custom balancer picker\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/credentials/credentials.go",
    "content": "// Copyright 2019 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package credentials implements gRPC credential interface with etcd specific logic.\n// e.g., client handshake with custom authority parameter\npackage credentials\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"net\"\n\t\"sync\"\n\n\t\"go.etcd.io/etcd/api/v3/v3rpc/rpctypes\"\n\tgrpccredentials \"google.golang.org/grpc/credentials\"\n)\n\n// Config defines gRPC credential configuration.\ntype Config struct {\n\tTLSConfig *tls.Config\n}\n\n// Bundle defines gRPC credential interface.\ntype Bundle interface {\n\tgrpccredentials.Bundle\n\tUpdateAuthToken(token string)\n}\n\n// NewBundle constructs a new gRPC credential bundle.\nfunc NewBundle(cfg Config) Bundle {\n\treturn &bundle{\n\t\ttc: newTransportCredential(cfg.TLSConfig),\n\t\trc: newPerRPCCredential(),\n\t}\n}\n\n// bundle implements \"grpccredentials.Bundle\" interface.\ntype bundle struct {\n\ttc *transportCredential\n\trc *perRPCCredential\n}\n\nfunc (b *bundle) TransportCredentials() grpccredentials.TransportCredentials {\n\treturn b.tc\n}\n\nfunc (b *bundle) PerRPCCredentials() grpccredentials.PerRPCCredentials {\n\treturn b.rc\n}\n\nfunc (b *bundle) NewWithMode(mode string) (grpccredentials.Bundle, error) {\n\t// no-op\n\treturn nil, nil\n}\n\n// transportCredential implements \"grpccredentials.TransportCredentials\" interface.\ntype transportCredential struct {\n\tgtc grpccredentials.TransportCredentials\n}\n\nfunc newTransportCredential(cfg *tls.Config) *transportCredential {\n\treturn &transportCredential{\n\t\tgtc: grpccredentials.NewTLS(cfg),\n\t}\n}\n\nfunc (tc *transportCredential) ClientHandshake(ctx context.Context, authority string, rawConn net.Conn) (net.Conn, grpccredentials.AuthInfo, error) {\n\treturn tc.gtc.ClientHandshake(ctx, authority, rawConn)\n}\n\nfunc (tc *transportCredential) ServerHandshake(rawConn net.Conn) (net.Conn, grpccredentials.AuthInfo, error) {\n\treturn tc.gtc.ServerHandshake(rawConn)\n}\n\nfunc (tc *transportCredential) Info() grpccredentials.ProtocolInfo {\n\treturn tc.gtc.Info()\n}\n\nfunc (tc *transportCredential) Clone() grpccredentials.TransportCredentials {\n\treturn &transportCredential{\n\t\tgtc: tc.gtc.Clone(),\n\t}\n}\n\nfunc (tc *transportCredential) OverrideServerName(serverNameOverride string) error {\n\treturn tc.gtc.OverrideServerName(serverNameOverride)\n}\n\n// perRPCCredential implements \"grpccredentials.PerRPCCredentials\" interface.\ntype perRPCCredential struct {\n\tauthToken   string\n\tauthTokenMu sync.RWMutex\n}\n\nfunc newPerRPCCredential() *perRPCCredential { return &perRPCCredential{} }\n\nfunc (rc *perRPCCredential) RequireTransportSecurity() bool { return false }\n\nfunc (rc *perRPCCredential) GetRequestMetadata(ctx context.Context, s ...string) (map[string]string, error) {\n\trc.authTokenMu.RLock()\n\tauthToken := rc.authToken\n\trc.authTokenMu.RUnlock()\n\tif authToken == \"\" {\n\t\treturn nil, nil\n\t}\n\treturn map[string]string{rpctypes.TokenFieldNameGRPC: authToken}, nil\n}\n\nfunc (b *bundle) UpdateAuthToken(token string) {\n\tif b.rc == nil {\n\t\treturn\n\t}\n\tb.rc.UpdateAuthToken(token)\n}\n\nfunc (rc *perRPCCredential) UpdateAuthToken(token string) {\n\trc.authTokenMu.Lock()\n\trc.authToken = token\n\trc.authTokenMu.Unlock()\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/ctx.go",
    "content": "// Copyright 2020 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"context\"\n\n\t\"go.etcd.io/etcd/api/v3/v3rpc/rpctypes\"\n\t\"go.etcd.io/etcd/api/v3/version\"\n\t\"google.golang.org/grpc/metadata\"\n)\n\n// WithRequireLeader requires client requests to only succeed\n// when the cluster has a leader.\nfunc WithRequireLeader(ctx context.Context) context.Context {\n\tmd, ok := metadata.FromOutgoingContext(ctx)\n\tif !ok { // no outgoing metadata ctx key, create one\n\t\tmd = metadata.Pairs(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader)\n\t\treturn metadata.NewOutgoingContext(ctx, md)\n\t}\n\tcopied := md.Copy() // avoid racey updates\n\t// overwrite/add 'hasleader' key/value\n\tcopied.Set(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader)\n\treturn metadata.NewOutgoingContext(ctx, copied)\n}\n\n// embeds client version\nfunc withVersion(ctx context.Context) context.Context {\n\tmd, ok := metadata.FromOutgoingContext(ctx)\n\tif !ok { // no outgoing metadata ctx key, create one\n\t\tmd = metadata.Pairs(rpctypes.MetadataClientAPIVersionKey, version.APIVersion)\n\t\treturn metadata.NewOutgoingContext(ctx, md)\n\t}\n\tcopied := md.Copy() // avoid racey updates\n\t// overwrite/add version key/value\n\tcopied.Set(rpctypes.MetadataClientAPIVersionKey, version.APIVersion)\n\treturn metadata.NewOutgoingContext(ctx, copied)\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/doc.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package clientv3 implements the official Go etcd client for v3.\n//\n// Create client using `clientv3.New`:\n//\n//\t// expect dial time-out on ipv4 blackhole\n//\t_, err := clientv3.New(clientv3.Config{\n//\t\tEndpoints:   []string{\"http://254.0.0.1:12345\"},\n//\t\tDialTimeout: 2 * time.Second,\n//\t})\n//\n//\t// etcd clientv3 >= v3.2.10, grpc/grpc-go >= v1.7.3\n//\tif err == context.DeadlineExceeded {\n//\t\t// handle errors\n//\t}\n//\n//\t// etcd clientv3 <= v3.2.9, grpc/grpc-go <= v1.2.1\n//\tif err == grpc.ErrClientConnTimeout {\n//\t\t// handle errors\n//\t}\n//\n//\tcli, err := clientv3.New(clientv3.Config{\n//\t\tEndpoints:   []string{\"localhost:2379\", \"localhost:22379\", \"localhost:32379\"},\n//\t\tDialTimeout: 5 * time.Second,\n//\t})\n//\tif err != nil {\n//\t\t// handle error!\n//\t}\n//\tdefer cli.Close()\n//\n// Make sure to close the client after using it. If the client is not closed, the\n// connection will have leaky goroutines.\n//\n// To specify a client request timeout, wrap the context with context.WithTimeout:\n//\n//\tctx, cancel := context.WithTimeout(context.Background(), timeout)\n//\tresp, err := kvc.Put(ctx, \"sample_key\", \"sample_value\")\n//\tcancel()\n//\tif err != nil {\n//\t    // handle error!\n//\t}\n//\t// use the response\n//\n// The Client has internal state (watchers and leases), so Clients should be reused instead of created as needed.\n// Clients are safe for concurrent use by multiple goroutines.\n//\n// etcd client returns 2 types of errors:\n//\n//  1. context error: canceled or deadline exceeded.\n//  2. gRPC error: e.g. when clock drifts in server-side before client's context deadline exceeded.\n//\n// See https://github.com/etcd-io/etcd/blob/main/api/v3rpc/rpctypes/error.go\n//\n// Here is the example code to handle client errors:\n//\n//\tresp, err := kvc.Put(ctx, \"\", \"\")\n//\tif err != nil {\n//\t\tif err == context.Canceled {\n//\t\t\t// ctx is canceled by another routine\n//\t\t} else if err == context.DeadlineExceeded {\n//\t\t\t// ctx is attached with a deadline and it exceeded\n//\t\t} else if err == rpctypes.ErrEmptyKey {\n//\t\t\t// client-side error: key is not provided\n//\t\t} else if ev, ok := status.FromError(err); ok {\n//\t\t\tcode := ev.Code()\n//\t\t\tif code == codes.DeadlineExceeded {\n//\t\t\t\t// server-side context might have timed-out first (due to clock skew)\n//\t\t\t\t// while original client-side context is not timed-out yet\n//\t\t\t}\n//\t\t} else {\n//\t\t\t// bad cluster endpoints, which are not etcd servers\n//\t\t}\n//\t}\n//\n//\tgo func() { cli.Close() }()\n//\t_, err := kvc.Get(ctx, \"a\")\n//\tif err != nil {\n//\t\t// with etcd clientv3 <= v3.3\n//\t\tif err == context.Canceled {\n//\t\t\t// grpc balancer calls 'Get' with an inflight client.Close\n//\t\t} else if err == grpc.ErrClientConnClosing { // <= gRCP v1.7.x\n//\t\t\t// grpc balancer calls 'Get' after client.Close.\n//\t\t}\n//\t\t// with etcd clientv3 >= v3.4\n//\t\tif clientv3.IsConnCanceled(err) {\n//\t\t\t// gRPC client connection is closed\n//\t\t}\n//\t}\n//\n// The grpc load balancer is registered statically and is shared across etcd clients.\n// To enable detailed load balancer logging, set the ETCD_CLIENT_DEBUG environment\n// variable.  E.g. \"ETCD_CLIENT_DEBUG=1\".\npackage clientv3\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/internal/endpoint/endpoint.go",
    "content": "// Copyright 2021 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage endpoint\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"path\"\n\t\"strings\"\n)\n\ntype CredsRequirement int\n\nconst (\n\t// CREDS_REQUIRE - Credentials/certificate required for thi type of connection.\n\tCREDS_REQUIRE CredsRequirement = iota\n\t// CREDS_DROP - Credentials/certificate not needed and should get ignored.\n\tCREDS_DROP\n\t// CREDS_OPTIONAL - Credentials/certificate might be used if supplied\n\tCREDS_OPTIONAL\n)\n\nfunc extractHostFromHostPort(ep string) string {\n\thost, _, err := net.SplitHostPort(ep)\n\tif err != nil {\n\t\treturn ep\n\t}\n\treturn host\n}\n\n// mustSplit2 returns the values from strings.SplitN(s, sep, 2).\n// If sep is not found, it returns (\"\", \"\", false) instead.\nfunc mustSplit2(s, sep string) (string, string) {\n\tspl := strings.SplitN(s, sep, 2)\n\tif len(spl) < 2 {\n\t\tpanic(fmt.Errorf(\"token '%v' expected to have separator sep: `%v`\", s, sep))\n\t}\n\treturn spl[0], spl[1]\n}\n\nfunc schemeToCredsRequirement(schema string) CredsRequirement {\n\tswitch schema {\n\tcase \"https\", \"unixs\":\n\t\treturn CREDS_REQUIRE\n\tcase \"http\":\n\t\treturn CREDS_DROP\n\tcase \"unix\":\n\t\t// Preserving previous behavior from:\n\t\t// https://github.com/etcd-io/etcd/blob/dae29bb719dd69dc119146fc297a0628fcc1ccf8/client/v3/client.go#L212\n\t\t// that likely was a bug due to missing 'fallthrough'.\n\t\t// At the same time it seems legit to let the users decide whether they\n\t\t// want credential control or not (and 'unixs' schema is not a standard thing).\n\t\treturn CREDS_OPTIONAL\n\tcase \"\":\n\t\treturn CREDS_OPTIONAL\n\tdefault:\n\t\treturn CREDS_OPTIONAL\n\t}\n}\n\n// This function translates endpoints names supported by etcd server into\n// endpoints as supported by grpc with additional information\n// (server_name for cert validation, requireCreds - whether certs are needed).\n// The main differences:\n//   - etcd supports unixs & https names as opposed to unix & http to\n//     distinguish need to configure certificates.\n//   - etcd support http(s) names as opposed to tcp supported by grpc/dial method.\n//   - etcd supports unix(s)://local-file naming schema\n//     (as opposed to unix:local-file canonical name used by grpc for current dir files).\n//   - Within the unix(s) schemas, the last segment (filename) without 'port' (content after colon)\n//     is considered serverName - to allow local testing of cert-protected communication.\n//\n// See more:\n//   - https://github.com/grpc/grpc-go/blob/26c143bd5f59344a4b8a1e491e0f5e18aa97abc7/internal/grpcutil/target.go#L47\n//   - https://golang.org/pkg/net/#Dial\n//   - https://github.com/grpc/grpc/blob/master/doc/naming.md\nfunc translateEndpoint(ep string) (addr string, serverName string, requireCreds CredsRequirement) {\n\tif strings.HasPrefix(ep, \"unix:\") || strings.HasPrefix(ep, \"unixs:\") {\n\t\tif strings.HasPrefix(ep, \"unix:///\") || strings.HasPrefix(ep, \"unixs:///\") {\n\t\t\t// absolute path case\n\t\t\tschema, absolutePath := mustSplit2(ep, \"://\")\n\t\t\treturn \"unix://\" + absolutePath, path.Base(absolutePath), schemeToCredsRequirement(schema)\n\t\t}\n\t\tif strings.HasPrefix(ep, \"unix://\") || strings.HasPrefix(ep, \"unixs://\") {\n\t\t\t// legacy etcd local path\n\t\t\tschema, localPath := mustSplit2(ep, \"://\")\n\t\t\treturn \"unix:\" + localPath, path.Base(localPath), schemeToCredsRequirement(schema)\n\t\t}\n\t\tschema, localPath := mustSplit2(ep, \":\")\n\t\treturn \"unix:\" + localPath, path.Base(localPath), schemeToCredsRequirement(schema)\n\t}\n\n\tif strings.Contains(ep, \"://\") {\n\t\turl, err := url.Parse(ep)\n\t\tif err != nil {\n\t\t\treturn ep, ep, CREDS_OPTIONAL\n\t\t}\n\t\tif url.Scheme == \"http\" || url.Scheme == \"https\" {\n\t\t\treturn url.Host, url.Host, schemeToCredsRequirement(url.Scheme)\n\t\t}\n\t\treturn ep, url.Host, schemeToCredsRequirement(url.Scheme)\n\t}\n\t// Handles plain addresses like 10.0.0.44:437.\n\treturn ep, ep, CREDS_OPTIONAL\n}\n\n// RequiresCredentials returns whether given endpoint requires\n// credentials/certificates for connection.\nfunc RequiresCredentials(ep string) CredsRequirement {\n\t_, _, requireCreds := translateEndpoint(ep)\n\treturn requireCreds\n}\n\n// Interpret endpoint parses an endpoint of the form\n// (http|https)://<host>*|(unix|unixs)://<path>)\n// and returns low-level address (supported by 'net') to connect to,\n// and a server name used for x509 certificate matching.\nfunc Interpret(ep string) (address string, serverName string) {\n\taddr, serverName, _ := translateEndpoint(ep)\n\treturn addr, serverName\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/internal/resolver/resolver.go",
    "content": "// Copyright 2021 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage resolver\n\nimport (\n\t\"go.etcd.io/etcd/client/v3/internal/endpoint\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/resolver/manual\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nconst (\n\tSchema = \"etcd-endpoints\"\n)\n\n// EtcdManualResolver is a Resolver (and resolver.Builder) that can be updated\n// using SetEndpoints.\ntype EtcdManualResolver struct {\n\t*manual.Resolver\n\tendpoints     []string\n\tserviceConfig *serviceconfig.ParseResult\n}\n\nfunc New(endpoints ...string) *EtcdManualResolver {\n\tr := manual.NewBuilderWithScheme(Schema)\n\treturn &EtcdManualResolver{Resolver: r, endpoints: endpoints, serviceConfig: nil}\n}\n\n// Build returns itself for Resolver, because it's both a builder and a resolver.\nfunc (r *EtcdManualResolver) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) {\n\tr.serviceConfig = cc.ParseServiceConfig(`{\"loadBalancingPolicy\": \"round_robin\"}`)\n\tif r.serviceConfig.Err != nil {\n\t\treturn nil, r.serviceConfig.Err\n\t}\n\tres, err := r.Resolver.Build(target, cc, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// Populates endpoints stored in r into ClientConn (cc).\n\tr.updateState()\n\treturn res, nil\n}\n\nfunc (r *EtcdManualResolver) SetEndpoints(endpoints []string) {\n\tr.endpoints = endpoints\n\tr.updateState()\n}\n\nfunc (r EtcdManualResolver) updateState() {\n\tif r.CC != nil {\n\t\taddresses := make([]resolver.Address, len(r.endpoints))\n\t\tfor i, ep := range r.endpoints {\n\t\t\taddr, serverName := endpoint.Interpret(ep)\n\t\t\taddresses[i] = resolver.Address{Addr: addr, ServerName: serverName}\n\t\t}\n\t\tstate := resolver.State{\n\t\t\tAddresses:     addresses,\n\t\t\tServiceConfig: r.serviceConfig,\n\t\t}\n\t\tr.UpdateState(state)\n\t}\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/kv.go",
    "content": "// Copyright 2015 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"context\"\n\n\tpb \"go.etcd.io/etcd/api/v3/etcdserverpb\"\n\n\t\"google.golang.org/grpc\"\n)\n\ntype (\n\tCompactResponse pb.CompactionResponse\n\tPutResponse     pb.PutResponse\n\tGetResponse     pb.RangeResponse\n\tDeleteResponse  pb.DeleteRangeResponse\n\tTxnResponse     pb.TxnResponse\n)\n\ntype KV interface {\n\t// Put puts a key-value pair into etcd.\n\t// Note that key,value can be plain bytes array and string is\n\t// an immutable representation of that bytes array.\n\t// To get a string of bytes, do string([]byte{0x10, 0x20}).\n\tPut(ctx context.Context, key, val string, opts ...OpOption) (*PutResponse, error)\n\n\t// Get retrieves keys.\n\t// By default, Get will return the value for \"key\", if any.\n\t// When passed WithRange(end), Get will return the keys in the range [key, end).\n\t// When passed WithFromKey(), Get returns keys greater than or equal to key.\n\t// When passed WithRev(rev) with rev > 0, Get retrieves keys at the given revision;\n\t// if the required revision is compacted, the request will fail with ErrCompacted .\n\t// When passed WithLimit(limit), the number of returned keys is bounded by limit.\n\t// When passed WithSort(), the keys will be sorted.\n\tGet(ctx context.Context, key string, opts ...OpOption) (*GetResponse, error)\n\n\t// Delete deletes a key, or optionally using WithRange(end), [key, end).\n\tDelete(ctx context.Context, key string, opts ...OpOption) (*DeleteResponse, error)\n\n\t// Compact compacts etcd KV history before the given rev.\n\tCompact(ctx context.Context, rev int64, opts ...CompactOption) (*CompactResponse, error)\n\n\t// Do applies a single Op on KV without a transaction.\n\t// Do is useful when creating arbitrary operations to be issued at a\n\t// later time; the user can range over the operations, calling Do to\n\t// execute them. Get/Put/Delete, on the other hand, are best suited\n\t// for when the operation should be issued at the time of declaration.\n\tDo(ctx context.Context, op Op) (OpResponse, error)\n\n\t// Txn creates a transaction.\n\tTxn(ctx context.Context) Txn\n}\n\ntype OpResponse struct {\n\tput *PutResponse\n\tget *GetResponse\n\tdel *DeleteResponse\n\ttxn *TxnResponse\n}\n\nfunc (op OpResponse) Put() *PutResponse    { return op.put }\nfunc (op OpResponse) Get() *GetResponse    { return op.get }\nfunc (op OpResponse) Del() *DeleteResponse { return op.del }\nfunc (op OpResponse) Txn() *TxnResponse    { return op.txn }\n\nfunc (resp *PutResponse) OpResponse() OpResponse {\n\treturn OpResponse{put: resp}\n}\nfunc (resp *GetResponse) OpResponse() OpResponse {\n\treturn OpResponse{get: resp}\n}\nfunc (resp *DeleteResponse) OpResponse() OpResponse {\n\treturn OpResponse{del: resp}\n}\nfunc (resp *TxnResponse) OpResponse() OpResponse {\n\treturn OpResponse{txn: resp}\n}\n\ntype kv struct {\n\tremote   pb.KVClient\n\tcallOpts []grpc.CallOption\n}\n\nfunc NewKV(c *Client) KV {\n\tapi := &kv{remote: RetryKVClient(c)}\n\tif c != nil {\n\t\tapi.callOpts = c.callOpts\n\t}\n\treturn api\n}\n\nfunc NewKVFromKVClient(remote pb.KVClient, c *Client) KV {\n\tapi := &kv{remote: remote}\n\tif c != nil {\n\t\tapi.callOpts = c.callOpts\n\t}\n\treturn api\n}\n\nfunc (kv *kv) Put(ctx context.Context, key, val string, opts ...OpOption) (*PutResponse, error) {\n\tr, err := kv.Do(ctx, OpPut(key, val, opts...))\n\treturn r.put, toErr(ctx, err)\n}\n\nfunc (kv *kv) Get(ctx context.Context, key string, opts ...OpOption) (*GetResponse, error) {\n\tr, err := kv.Do(ctx, OpGet(key, opts...))\n\treturn r.get, toErr(ctx, err)\n}\n\nfunc (kv *kv) Delete(ctx context.Context, key string, opts ...OpOption) (*DeleteResponse, error) {\n\tr, err := kv.Do(ctx, OpDelete(key, opts...))\n\treturn r.del, toErr(ctx, err)\n}\n\nfunc (kv *kv) Compact(ctx context.Context, rev int64, opts ...CompactOption) (*CompactResponse, error) {\n\tresp, err := kv.remote.Compact(ctx, OpCompact(rev, opts...).toRequest(), kv.callOpts...)\n\tif err != nil {\n\t\treturn nil, toErr(ctx, err)\n\t}\n\treturn (*CompactResponse)(resp), err\n}\n\nfunc (kv *kv) Txn(ctx context.Context) Txn {\n\treturn &txn{\n\t\tkv:       kv,\n\t\tctx:      ctx,\n\t\tcallOpts: kv.callOpts,\n\t}\n}\n\nfunc (kv *kv) Do(ctx context.Context, op Op) (OpResponse, error) {\n\tvar err error\n\tswitch op.t {\n\tcase tRange:\n\t\tvar resp *pb.RangeResponse\n\t\tresp, err = kv.remote.Range(ctx, op.toRangeRequest(), kv.callOpts...)\n\t\tif err == nil {\n\t\t\treturn OpResponse{get: (*GetResponse)(resp)}, nil\n\t\t}\n\tcase tPut:\n\t\tvar resp *pb.PutResponse\n\t\tr := &pb.PutRequest{Key: op.key, Value: op.val, Lease: int64(op.leaseID), PrevKv: op.prevKV, IgnoreValue: op.ignoreValue, IgnoreLease: op.ignoreLease}\n\t\tresp, err = kv.remote.Put(ctx, r, kv.callOpts...)\n\t\tif err == nil {\n\t\t\treturn OpResponse{put: (*PutResponse)(resp)}, nil\n\t\t}\n\tcase tDeleteRange:\n\t\tvar resp *pb.DeleteRangeResponse\n\t\tr := &pb.DeleteRangeRequest{Key: op.key, RangeEnd: op.end, PrevKv: op.prevKV}\n\t\tresp, err = kv.remote.DeleteRange(ctx, r, kv.callOpts...)\n\t\tif err == nil {\n\t\t\treturn OpResponse{del: (*DeleteResponse)(resp)}, nil\n\t\t}\n\tcase tTxn:\n\t\tvar resp *pb.TxnResponse\n\t\tresp, err = kv.remote.Txn(ctx, op.toTxnRequest(), kv.callOpts...)\n\t\tif err == nil {\n\t\t\treturn OpResponse{txn: (*TxnResponse)(resp)}, nil\n\t\t}\n\tdefault:\n\t\tpanic(\"Unknown op\")\n\t}\n\treturn OpResponse{}, toErr(ctx, err)\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/lease.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"context\"\n\t\"sync\"\n\t\"time\"\n\n\tpb \"go.etcd.io/etcd/api/v3/etcdserverpb\"\n\t\"go.etcd.io/etcd/api/v3/v3rpc/rpctypes\"\n\n\t\"go.uber.org/zap\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/metadata\"\n)\n\ntype (\n\tLeaseRevokeResponse pb.LeaseRevokeResponse\n\tLeaseID             int64\n)\n\n// LeaseGrantResponse wraps the protobuf message LeaseGrantResponse.\ntype LeaseGrantResponse struct {\n\t*pb.ResponseHeader\n\tID    LeaseID\n\tTTL   int64\n\tError string\n}\n\n// LeaseKeepAliveResponse wraps the protobuf message LeaseKeepAliveResponse.\ntype LeaseKeepAliveResponse struct {\n\t*pb.ResponseHeader\n\tID  LeaseID\n\tTTL int64\n}\n\n// LeaseTimeToLiveResponse wraps the protobuf message LeaseTimeToLiveResponse.\ntype LeaseTimeToLiveResponse struct {\n\t*pb.ResponseHeader\n\tID LeaseID `json:\"id\"`\n\n\t// TTL is the remaining TTL in seconds for the lease; the lease will expire in under TTL+1 seconds. Expired lease will return -1.\n\tTTL int64 `json:\"ttl\"`\n\n\t// GrantedTTL is the initial granted time in seconds upon lease creation/renewal.\n\tGrantedTTL int64 `json:\"granted-ttl\"`\n\n\t// Keys is the list of keys attached to this lease.\n\tKeys [][]byte `json:\"keys\"`\n}\n\n// LeaseStatus represents a lease status.\ntype LeaseStatus struct {\n\tID LeaseID `json:\"id\"`\n\t// TODO: TTL int64\n}\n\n// LeaseLeasesResponse wraps the protobuf message LeaseLeasesResponse.\ntype LeaseLeasesResponse struct {\n\t*pb.ResponseHeader\n\tLeases []LeaseStatus `json:\"leases\"`\n}\n\nconst (\n\t// defaultTTL is the assumed lease TTL used for the first keepalive\n\t// deadline before the actual TTL is known to the client.\n\tdefaultTTL = 5 * time.Second\n\t// NoLease is a lease ID for the absence of a lease.\n\tNoLease LeaseID = 0\n\n\t// retryConnWait is how long to wait before retrying request due to an error\n\tretryConnWait = 500 * time.Millisecond\n)\n\n// LeaseResponseChSize is the size of buffer to store unsent lease responses.\n// WARNING: DO NOT UPDATE.\n// Only for testing purposes.\nvar LeaseResponseChSize = 16\n\n// ErrKeepAliveHalted is returned if client keep alive loop halts with an unexpected error.\n//\n// This usually means that automatic lease renewal via KeepAlive is broken, but KeepAliveOnce will still work as expected.\ntype ErrKeepAliveHalted struct {\n\tReason error\n}\n\nfunc (e ErrKeepAliveHalted) Error() string {\n\ts := \"etcdclient: leases keep alive halted\"\n\tif e.Reason != nil {\n\t\ts += \": \" + e.Reason.Error()\n\t}\n\treturn s\n}\n\ntype Lease interface {\n\t// Grant creates a new lease.\n\tGrant(ctx context.Context, ttl int64) (*LeaseGrantResponse, error)\n\n\t// Revoke revokes the given lease.\n\tRevoke(ctx context.Context, id LeaseID) (*LeaseRevokeResponse, error)\n\n\t// TimeToLive retrieves the lease information of the given lease ID.\n\tTimeToLive(ctx context.Context, id LeaseID, opts ...LeaseOption) (*LeaseTimeToLiveResponse, error)\n\n\t// Leases retrieves all leases.\n\tLeases(ctx context.Context) (*LeaseLeasesResponse, error)\n\n\t// KeepAlive attempts to keep the given lease alive forever. If the keepalive responses posted\n\t// to the channel are not consumed promptly the channel may become full. When full, the lease\n\t// client will continue sending keep alive requests to the etcd server, but will drop responses\n\t// until there is capacity on the channel to send more responses.\n\t//\n\t// If client keep alive loop halts with an unexpected error (e.g. \"etcdserver: no leader\") or\n\t// canceled by the caller (e.g. context.Canceled), KeepAlive returns a ErrKeepAliveHalted error\n\t// containing the error reason.\n\t//\n\t// The returned \"LeaseKeepAliveResponse\" channel closes if underlying keep\n\t// alive stream is interrupted in some way the client cannot handle itself;\n\t// given context \"ctx\" is canceled or timed out.\n\t//\n\t// TODO(v4.0): post errors to last keep alive message before closing\n\t// (see https://github.com/etcd-io/etcd/pull/7866)\n\tKeepAlive(ctx context.Context, id LeaseID) (<-chan *LeaseKeepAliveResponse, error)\n\n\t// KeepAliveOnce renews the lease once. The response corresponds to the\n\t// first message from calling KeepAlive. If the response has a recoverable\n\t// error, KeepAliveOnce will retry the RPC with a new keep alive message.\n\t//\n\t// In most of the cases, Keepalive should be used instead of KeepAliveOnce.\n\tKeepAliveOnce(ctx context.Context, id LeaseID) (*LeaseKeepAliveResponse, error)\n\n\t// Close releases all resources Lease keeps for efficient communication\n\t// with the etcd server.\n\tClose() error\n}\n\ntype lessor struct {\n\tmu sync.Mutex // guards all fields\n\n\t// donec is closed and loopErr is set when recvKeepAliveLoop stops\n\tdonec   chan struct{}\n\tloopErr error\n\n\tremote pb.LeaseClient\n\n\tstream       pb.Lease_LeaseKeepAliveClient\n\tstreamCancel context.CancelFunc\n\n\tstopCtx    context.Context\n\tstopCancel context.CancelFunc\n\n\tkeepAlives map[LeaseID]*keepAlive\n\n\t// firstKeepAliveTimeout is the timeout for the first keepalive request\n\t// before the actual TTL is known to the lease client\n\tfirstKeepAliveTimeout time.Duration\n\n\t// firstKeepAliveOnce ensures stream starts after first KeepAlive call.\n\tfirstKeepAliveOnce sync.Once\n\n\tcallOpts []grpc.CallOption\n\n\tlg *zap.Logger\n}\n\n// keepAlive multiplexes a keepalive for a lease over multiple channels\ntype keepAlive struct {\n\tchs  []chan<- *LeaseKeepAliveResponse\n\tctxs []context.Context\n\t// deadline is the time the keep alive channels close if no response\n\tdeadline time.Time\n\t// nextKeepAlive is when to send the next keep alive message\n\tnextKeepAlive time.Time\n\t// donec is closed on lease revoke, expiration, or cancel.\n\tdonec chan struct{}\n}\n\nfunc NewLease(c *Client) Lease {\n\treturn NewLeaseFromLeaseClient(RetryLeaseClient(c), c, c.cfg.DialTimeout+time.Second)\n}\n\nfunc NewLeaseFromLeaseClient(remote pb.LeaseClient, c *Client, keepAliveTimeout time.Duration) Lease {\n\tl := &lessor{\n\t\tdonec:                 make(chan struct{}),\n\t\tkeepAlives:            make(map[LeaseID]*keepAlive),\n\t\tremote:                remote,\n\t\tfirstKeepAliveTimeout: keepAliveTimeout,\n\t\tlg:                    c.lg,\n\t}\n\tif l.firstKeepAliveTimeout == time.Second {\n\t\tl.firstKeepAliveTimeout = defaultTTL\n\t}\n\tif c != nil {\n\t\tl.callOpts = c.callOpts\n\t}\n\treqLeaderCtx := WithRequireLeader(context.Background())\n\tl.stopCtx, l.stopCancel = context.WithCancel(reqLeaderCtx)\n\treturn l\n}\n\nfunc (l *lessor) Grant(ctx context.Context, ttl int64) (*LeaseGrantResponse, error) {\n\tr := &pb.LeaseGrantRequest{TTL: ttl}\n\tresp, err := l.remote.LeaseGrant(ctx, r, l.callOpts...)\n\tif err == nil {\n\t\tgresp := &LeaseGrantResponse{\n\t\t\tResponseHeader: resp.GetHeader(),\n\t\t\tID:             LeaseID(resp.ID),\n\t\t\tTTL:            resp.TTL,\n\t\t\tError:          resp.Error,\n\t\t}\n\t\treturn gresp, nil\n\t}\n\treturn nil, toErr(ctx, err)\n}\n\nfunc (l *lessor) Revoke(ctx context.Context, id LeaseID) (*LeaseRevokeResponse, error) {\n\tr := &pb.LeaseRevokeRequest{ID: int64(id)}\n\tresp, err := l.remote.LeaseRevoke(ctx, r, l.callOpts...)\n\tif err == nil {\n\t\treturn (*LeaseRevokeResponse)(resp), nil\n\t}\n\treturn nil, toErr(ctx, err)\n}\n\nfunc (l *lessor) TimeToLive(ctx context.Context, id LeaseID, opts ...LeaseOption) (*LeaseTimeToLiveResponse, error) {\n\tr := toLeaseTimeToLiveRequest(id, opts...)\n\tresp, err := l.remote.LeaseTimeToLive(ctx, r, l.callOpts...)\n\tif err != nil {\n\t\treturn nil, toErr(ctx, err)\n\t}\n\tgresp := &LeaseTimeToLiveResponse{\n\t\tResponseHeader: resp.GetHeader(),\n\t\tID:             LeaseID(resp.ID),\n\t\tTTL:            resp.TTL,\n\t\tGrantedTTL:     resp.GrantedTTL,\n\t\tKeys:           resp.Keys,\n\t}\n\treturn gresp, nil\n}\n\nfunc (l *lessor) Leases(ctx context.Context) (*LeaseLeasesResponse, error) {\n\tresp, err := l.remote.LeaseLeases(ctx, &pb.LeaseLeasesRequest{}, l.callOpts...)\n\tif err == nil {\n\t\tleases := make([]LeaseStatus, len(resp.Leases))\n\t\tfor i := range resp.Leases {\n\t\t\tleases[i] = LeaseStatus{ID: LeaseID(resp.Leases[i].ID)}\n\t\t}\n\t\treturn &LeaseLeasesResponse{ResponseHeader: resp.GetHeader(), Leases: leases}, nil\n\t}\n\treturn nil, toErr(ctx, err)\n}\n\nfunc (l *lessor) KeepAlive(ctx context.Context, id LeaseID) (<-chan *LeaseKeepAliveResponse, error) {\n\tch := make(chan *LeaseKeepAliveResponse, LeaseResponseChSize)\n\n\tl.mu.Lock()\n\t// ensure that recvKeepAliveLoop is still running\n\tselect {\n\tcase <-l.donec:\n\t\terr := l.loopErr\n\t\tl.mu.Unlock()\n\t\tclose(ch)\n\t\treturn ch, ErrKeepAliveHalted{Reason: err}\n\tdefault:\n\t}\n\tka, ok := l.keepAlives[id]\n\tif !ok {\n\t\t// create fresh keep alive\n\t\tka = &keepAlive{\n\t\t\tchs:           []chan<- *LeaseKeepAliveResponse{ch},\n\t\t\tctxs:          []context.Context{ctx},\n\t\t\tdeadline:      time.Now().Add(l.firstKeepAliveTimeout),\n\t\t\tnextKeepAlive: time.Now(),\n\t\t\tdonec:         make(chan struct{}),\n\t\t}\n\t\tl.keepAlives[id] = ka\n\t} else {\n\t\t// add channel and context to existing keep alive\n\t\tka.ctxs = append(ka.ctxs, ctx)\n\t\tka.chs = append(ka.chs, ch)\n\t}\n\tl.mu.Unlock()\n\n\tif ctx.Done() != nil {\n\t\tgo l.keepAliveCtxCloser(ctx, id, ka.donec)\n\t}\n\tl.firstKeepAliveOnce.Do(func() {\n\t\tgo l.recvKeepAliveLoop()\n\t\tgo l.deadlineLoop()\n\t})\n\n\treturn ch, nil\n}\n\nfunc (l *lessor) KeepAliveOnce(ctx context.Context, id LeaseID) (*LeaseKeepAliveResponse, error) {\n\tfor {\n\t\tresp, err := l.keepAliveOnce(ctx, id)\n\t\tif err == nil {\n\t\t\tif resp.TTL <= 0 {\n\t\t\t\terr = rpctypes.ErrLeaseNotFound\n\t\t\t}\n\t\t\treturn resp, err\n\t\t}\n\t\tif isHaltErr(ctx, err) {\n\t\t\treturn nil, toErr(ctx, err)\n\t\t}\n\t}\n}\n\nfunc (l *lessor) Close() error {\n\tl.stopCancel()\n\t// close for synchronous teardown if stream goroutines never launched\n\tl.firstKeepAliveOnce.Do(func() { close(l.donec) })\n\t<-l.donec\n\treturn nil\n}\n\nfunc (l *lessor) keepAliveCtxCloser(ctx context.Context, id LeaseID, donec <-chan struct{}) {\n\tselect {\n\tcase <-donec:\n\t\treturn\n\tcase <-l.donec:\n\t\treturn\n\tcase <-ctx.Done():\n\t}\n\n\tl.mu.Lock()\n\tdefer l.mu.Unlock()\n\n\tka, ok := l.keepAlives[id]\n\tif !ok {\n\t\treturn\n\t}\n\n\t// close channel and remove context if still associated with keep alive\n\tfor i, c := range ka.ctxs {\n\t\tif c == ctx {\n\t\t\tclose(ka.chs[i])\n\t\t\tka.ctxs = append(ka.ctxs[:i], ka.ctxs[i+1:]...)\n\t\t\tka.chs = append(ka.chs[:i], ka.chs[i+1:]...)\n\t\t\tbreak\n\t\t}\n\t}\n\t// remove if no one more listeners\n\tif len(ka.chs) == 0 {\n\t\tdelete(l.keepAlives, id)\n\t}\n}\n\n// closeRequireLeader scans keepAlives for ctxs that have require leader\n// and closes the associated channels.\nfunc (l *lessor) closeRequireLeader() {\n\tl.mu.Lock()\n\tdefer l.mu.Unlock()\n\tfor _, ka := range l.keepAlives {\n\t\treqIdxs := 0\n\t\t// find all required leader channels, close, mark as nil\n\t\tfor i, ctx := range ka.ctxs {\n\t\t\tmd, ok := metadata.FromOutgoingContext(ctx)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tks := md[rpctypes.MetadataRequireLeaderKey]\n\t\t\tif len(ks) < 1 || ks[0] != rpctypes.MetadataHasLeader {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tclose(ka.chs[i])\n\t\t\tka.chs[i] = nil\n\t\t\treqIdxs++\n\t\t}\n\t\tif reqIdxs == 0 {\n\t\t\tcontinue\n\t\t}\n\t\t// remove all channels that required a leader from keepalive\n\t\tnewChs := make([]chan<- *LeaseKeepAliveResponse, len(ka.chs)-reqIdxs)\n\t\tnewCtxs := make([]context.Context, len(newChs))\n\t\tnewIdx := 0\n\t\tfor i := range ka.chs {\n\t\t\tif ka.chs[i] == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tnewChs[newIdx], newCtxs[newIdx] = ka.chs[i], ka.ctxs[newIdx]\n\t\t\tnewIdx++\n\t\t}\n\t\tka.chs, ka.ctxs = newChs, newCtxs\n\t}\n}\n\nfunc (l *lessor) keepAliveOnce(ctx context.Context, id LeaseID) (karesp *LeaseKeepAliveResponse, ferr error) {\n\tcctx, cancel := context.WithCancel(ctx)\n\tdefer cancel()\n\n\tstream, err := l.remote.LeaseKeepAlive(cctx, l.callOpts...)\n\tif err != nil {\n\t\treturn nil, toErr(ctx, err)\n\t}\n\n\tdefer func() {\n\t\tif err := stream.CloseSend(); err != nil {\n\t\t\tif ferr == nil {\n\t\t\t\tferr = toErr(ctx, err)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}()\n\n\terr = stream.Send(&pb.LeaseKeepAliveRequest{ID: int64(id)})\n\tif err != nil {\n\t\treturn nil, toErr(ctx, err)\n\t}\n\n\tresp, rerr := stream.Recv()\n\tif rerr != nil {\n\t\treturn nil, toErr(ctx, rerr)\n\t}\n\n\tkaresp = &LeaseKeepAliveResponse{\n\t\tResponseHeader: resp.GetHeader(),\n\t\tID:             LeaseID(resp.ID),\n\t\tTTL:            resp.TTL,\n\t}\n\treturn karesp, nil\n}\n\nfunc (l *lessor) recvKeepAliveLoop() (gerr error) {\n\tdefer func() {\n\t\tl.mu.Lock()\n\t\tclose(l.donec)\n\t\tl.loopErr = gerr\n\t\tfor _, ka := range l.keepAlives {\n\t\t\tka.close()\n\t\t}\n\t\tl.keepAlives = make(map[LeaseID]*keepAlive)\n\t\tl.mu.Unlock()\n\t}()\n\n\tfor {\n\t\tstream, err := l.resetRecv()\n\t\tif err != nil {\n\t\t\tif canceledByCaller(l.stopCtx, err) {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\tfor {\n\t\t\t\tresp, err := stream.Recv()\n\t\t\t\tif err != nil {\n\t\t\t\t\tif canceledByCaller(l.stopCtx, err) {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\n\t\t\t\t\tif toErr(l.stopCtx, err) == rpctypes.ErrNoLeader {\n\t\t\t\t\t\tl.closeRequireLeader()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tl.recvKeepAlive(resp)\n\t\t\t}\n\t\t}\n\n\t\tselect {\n\t\tcase <-time.After(retryConnWait):\n\t\tcase <-l.stopCtx.Done():\n\t\t\treturn l.stopCtx.Err()\n\t\t}\n\t}\n}\n\n// resetRecv opens a new lease stream and starts sending keep alive requests.\nfunc (l *lessor) resetRecv() (pb.Lease_LeaseKeepAliveClient, error) {\n\tsctx, cancel := context.WithCancel(l.stopCtx)\n\tstream, err := l.remote.LeaseKeepAlive(sctx, append(l.callOpts, withMax(0))...)\n\tif err != nil {\n\t\tcancel()\n\t\treturn nil, err\n\t}\n\n\tl.mu.Lock()\n\tdefer l.mu.Unlock()\n\tif l.stream != nil && l.streamCancel != nil {\n\t\tl.streamCancel()\n\t}\n\n\tl.streamCancel = cancel\n\tl.stream = stream\n\n\tgo l.sendKeepAliveLoop(stream)\n\treturn stream, nil\n}\n\n// recvKeepAlive updates a lease based on its LeaseKeepAliveResponse\nfunc (l *lessor) recvKeepAlive(resp *pb.LeaseKeepAliveResponse) {\n\tkaresp := &LeaseKeepAliveResponse{\n\t\tResponseHeader: resp.GetHeader(),\n\t\tID:             LeaseID(resp.ID),\n\t\tTTL:            resp.TTL,\n\t}\n\n\tl.mu.Lock()\n\tdefer l.mu.Unlock()\n\n\tka, ok := l.keepAlives[karesp.ID]\n\tif !ok {\n\t\treturn\n\t}\n\n\tif karesp.TTL <= 0 {\n\t\t// lease expired; close all keep alive channels\n\t\tdelete(l.keepAlives, karesp.ID)\n\t\tka.close()\n\t\treturn\n\t}\n\n\t// send update to all channels\n\tnextKeepAlive := time.Now().Add((time.Duration(karesp.TTL) * time.Second) / 3.0)\n\tka.deadline = time.Now().Add(time.Duration(karesp.TTL) * time.Second)\n\tfor _, ch := range ka.chs {\n\t\tselect {\n\t\tcase ch <- karesp:\n\t\tdefault:\n\t\t\tif l.lg != nil {\n\t\t\t\tl.lg.Warn(\"lease keepalive response queue is full; dropping response send\",\n\t\t\t\t\tzap.Int(\"queue-size\", len(ch)),\n\t\t\t\t\tzap.Int(\"queue-capacity\", cap(ch)),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\t// still advance in order to rate-limit keep-alive sends\n\t\tka.nextKeepAlive = nextKeepAlive\n\t}\n}\n\n// deadlineLoop reaps any keep alive channels that have not received a response\n// within the lease TTL\nfunc (l *lessor) deadlineLoop() {\n\tfor {\n\t\tselect {\n\t\tcase <-time.After(time.Second):\n\t\tcase <-l.donec:\n\t\t\treturn\n\t\t}\n\t\tnow := time.Now()\n\t\tl.mu.Lock()\n\t\tfor id, ka := range l.keepAlives {\n\t\t\tif ka.deadline.Before(now) {\n\t\t\t\t// waited too long for response; lease may be expired\n\t\t\t\tka.close()\n\t\t\t\tdelete(l.keepAlives, id)\n\t\t\t}\n\t\t}\n\t\tl.mu.Unlock()\n\t}\n}\n\n// sendKeepAliveLoop sends keep alive requests for the lifetime of the given stream.\nfunc (l *lessor) sendKeepAliveLoop(stream pb.Lease_LeaseKeepAliveClient) {\n\tfor {\n\t\tvar tosend []LeaseID\n\n\t\tnow := time.Now()\n\t\tl.mu.Lock()\n\t\tfor id, ka := range l.keepAlives {\n\t\t\tif ka.nextKeepAlive.Before(now) {\n\t\t\t\ttosend = append(tosend, id)\n\t\t\t}\n\t\t}\n\t\tl.mu.Unlock()\n\n\t\tfor _, id := range tosend {\n\t\t\tr := &pb.LeaseKeepAliveRequest{ID: int64(id)}\n\t\t\tif err := stream.Send(r); err != nil {\n\t\t\t\t// TODO do something with this error?\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tselect {\n\t\tcase <-time.After(retryConnWait):\n\t\tcase <-stream.Context().Done():\n\t\t\treturn\n\t\tcase <-l.donec:\n\t\t\treturn\n\t\tcase <-l.stopCtx.Done():\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (ka *keepAlive) close() {\n\tclose(ka.donec)\n\tfor _, ch := range ka.chs {\n\t\tclose(ch)\n\t}\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/logger.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"log\"\n\t\"os\"\n\n\t\"go.etcd.io/etcd/client/pkg/v3/logutil\"\n\t\"go.uber.org/zap/zapcore\"\n\t\"go.uber.org/zap/zapgrpc\"\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nfunc init() {\n\t// We override grpc logger only when the environment variable is set\n\t// in order to not interfere by default with user's code or other libraries.\n\tif os.Getenv(\"ETCD_CLIENT_DEBUG\") != \"\" {\n\t\tlg, err := logutil.CreateDefaultZapLogger(etcdClientDebugLevel())\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tlg = lg.Named(\"etcd-client\")\n\t\tgrpclog.SetLoggerV2(zapgrpc.NewLogger(lg))\n\t}\n}\n\n// SetLogger sets grpc logger.\n//\n// Deprecated: use grpclog.SetLoggerV2 directly or grpc_zap.ReplaceGrpcLoggerV2.\nfunc SetLogger(l grpclog.LoggerV2) {\n\tgrpclog.SetLoggerV2(l)\n}\n\n// etcdClientDebugLevel translates ETCD_CLIENT_DEBUG into zap log level.\nfunc etcdClientDebugLevel() zapcore.Level {\n\tenvLevel := os.Getenv(\"ETCD_CLIENT_DEBUG\")\n\tif envLevel == \"\" || envLevel == \"true\" {\n\t\treturn zapcore.InfoLevel\n\t}\n\tvar l zapcore.Level\n\tif err := l.Set(envLevel); err != nil {\n\t\tlog.Printf(\"Invalid value for environment variable 'ETCD_CLIENT_DEBUG'. Using default level: 'info'\")\n\t\treturn zapcore.InfoLevel\n\t}\n\treturn l\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/maintenance.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\n\tpb \"go.etcd.io/etcd/api/v3/etcdserverpb\"\n\t\"go.uber.org/zap\"\n\t\"google.golang.org/grpc\"\n)\n\ntype (\n\tDefragmentResponse pb.DefragmentResponse\n\tAlarmResponse      pb.AlarmResponse\n\tAlarmMember        pb.AlarmMember\n\tStatusResponse     pb.StatusResponse\n\tHashKVResponse     pb.HashKVResponse\n\tMoveLeaderResponse pb.MoveLeaderResponse\n)\n\ntype Maintenance interface {\n\t// AlarmList gets all active alarms.\n\tAlarmList(ctx context.Context) (*AlarmResponse, error)\n\n\t// AlarmDisarm disarms a given alarm.\n\tAlarmDisarm(ctx context.Context, m *AlarmMember) (*AlarmResponse, error)\n\n\t// Defragment releases wasted space from internal fragmentation on a given etcd member.\n\t// Defragment is only needed when deleting a large number of keys and want to reclaim\n\t// the resources.\n\t// Defragment is an expensive operation. User should avoid defragmenting multiple members\n\t// at the same time.\n\t// To defragment multiple members in the cluster, user need to call defragment multiple\n\t// times with different endpoints.\n\tDefragment(ctx context.Context, endpoint string) (*DefragmentResponse, error)\n\n\t// Status gets the status of the endpoint.\n\tStatus(ctx context.Context, endpoint string) (*StatusResponse, error)\n\n\t// HashKV returns a hash of the KV state at the time of the RPC.\n\t// If revision is zero, the hash is computed on all keys. If the revision\n\t// is non-zero, the hash is computed on all keys at or below the given revision.\n\tHashKV(ctx context.Context, endpoint string, rev int64) (*HashKVResponse, error)\n\n\t// Snapshot provides a reader for a point-in-time snapshot of etcd.\n\t// If the context \"ctx\" is canceled or timed out, reading from returned\n\t// \"io.ReadCloser\" would error out (e.g. context.Canceled, context.DeadlineExceeded).\n\tSnapshot(ctx context.Context) (io.ReadCloser, error)\n\n\t// MoveLeader requests current leader to transfer its leadership to the transferee.\n\t// Request must be made to the leader.\n\tMoveLeader(ctx context.Context, transfereeID uint64) (*MoveLeaderResponse, error)\n}\n\ntype maintenance struct {\n\tlg       *zap.Logger\n\tdial     func(endpoint string) (pb.MaintenanceClient, func(), error)\n\tremote   pb.MaintenanceClient\n\tcallOpts []grpc.CallOption\n}\n\nfunc NewMaintenance(c *Client) Maintenance {\n\tapi := &maintenance{\n\t\tlg: c.lg,\n\t\tdial: func(endpoint string) (pb.MaintenanceClient, func(), error) {\n\t\t\tconn, err := c.Dial(endpoint)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, nil, fmt.Errorf(\"failed to dial endpoint %s with maintenance client: %v\", endpoint, err)\n\t\t\t}\n\n\t\t\t//get token with established connection\n\t\t\tdctx := c.ctx\n\t\t\tcancel := func() {}\n\t\t\tif c.cfg.DialTimeout > 0 {\n\t\t\t\tdctx, cancel = context.WithTimeout(c.ctx, c.cfg.DialTimeout)\n\t\t\t}\n\t\t\terr = c.getToken(dctx)\n\t\t\tcancel()\n\t\t\tif err != nil {\n\t\t\t\tconn.Close()\n\t\t\t\treturn nil, nil, fmt.Errorf(\"failed to getToken from endpoint %s with maintenance client: %v\", endpoint, err)\n\t\t\t}\n\t\t\tcancel = func() { conn.Close() }\n\t\t\treturn RetryMaintenanceClient(c, conn), cancel, nil\n\t\t},\n\t\tremote: RetryMaintenanceClient(c, c.conn),\n\t}\n\tif c != nil {\n\t\tapi.callOpts = c.callOpts\n\t}\n\treturn api\n}\n\nfunc NewMaintenanceFromMaintenanceClient(remote pb.MaintenanceClient, c *Client) Maintenance {\n\tapi := &maintenance{\n\t\tlg: c.lg,\n\t\tdial: func(string) (pb.MaintenanceClient, func(), error) {\n\t\t\treturn remote, func() {}, nil\n\t\t},\n\t\tremote: remote,\n\t}\n\tif c != nil {\n\t\tapi.callOpts = c.callOpts\n\t}\n\treturn api\n}\n\nfunc (m *maintenance) AlarmList(ctx context.Context) (*AlarmResponse, error) {\n\treq := &pb.AlarmRequest{\n\t\tAction:   pb.AlarmRequest_GET,\n\t\tMemberID: 0,                 // all\n\t\tAlarm:    pb.AlarmType_NONE, // all\n\t}\n\tresp, err := m.remote.Alarm(ctx, req, m.callOpts...)\n\tif err == nil {\n\t\treturn (*AlarmResponse)(resp), nil\n\t}\n\treturn nil, toErr(ctx, err)\n}\n\nfunc (m *maintenance) AlarmDisarm(ctx context.Context, am *AlarmMember) (*AlarmResponse, error) {\n\treq := &pb.AlarmRequest{\n\t\tAction:   pb.AlarmRequest_DEACTIVATE,\n\t\tMemberID: am.MemberID,\n\t\tAlarm:    am.Alarm,\n\t}\n\n\tif req.MemberID == 0 && req.Alarm == pb.AlarmType_NONE {\n\t\tar, err := m.AlarmList(ctx)\n\t\tif err != nil {\n\t\t\treturn nil, toErr(ctx, err)\n\t\t}\n\t\tret := AlarmResponse{}\n\t\tfor _, am := range ar.Alarms {\n\t\t\tdresp, derr := m.AlarmDisarm(ctx, (*AlarmMember)(am))\n\t\t\tif derr != nil {\n\t\t\t\treturn nil, toErr(ctx, derr)\n\t\t\t}\n\t\t\tret.Alarms = append(ret.Alarms, dresp.Alarms...)\n\t\t}\n\t\treturn &ret, nil\n\t}\n\n\tresp, err := m.remote.Alarm(ctx, req, m.callOpts...)\n\tif err == nil {\n\t\treturn (*AlarmResponse)(resp), nil\n\t}\n\treturn nil, toErr(ctx, err)\n}\n\nfunc (m *maintenance) Defragment(ctx context.Context, endpoint string) (*DefragmentResponse, error) {\n\tremote, cancel, err := m.dial(endpoint)\n\tif err != nil {\n\t\treturn nil, toErr(ctx, err)\n\t}\n\tdefer cancel()\n\tresp, err := remote.Defragment(ctx, &pb.DefragmentRequest{}, m.callOpts...)\n\tif err != nil {\n\t\treturn nil, toErr(ctx, err)\n\t}\n\treturn (*DefragmentResponse)(resp), nil\n}\n\nfunc (m *maintenance) Status(ctx context.Context, endpoint string) (*StatusResponse, error) {\n\tremote, cancel, err := m.dial(endpoint)\n\tif err != nil {\n\t\treturn nil, toErr(ctx, err)\n\t}\n\tdefer cancel()\n\tresp, err := remote.Status(ctx, &pb.StatusRequest{}, m.callOpts...)\n\tif err != nil {\n\t\treturn nil, toErr(ctx, err)\n\t}\n\treturn (*StatusResponse)(resp), nil\n}\n\nfunc (m *maintenance) HashKV(ctx context.Context, endpoint string, rev int64) (*HashKVResponse, error) {\n\tremote, cancel, err := m.dial(endpoint)\n\tif err != nil {\n\n\t\treturn nil, toErr(ctx, err)\n\t}\n\tdefer cancel()\n\tresp, err := remote.HashKV(ctx, &pb.HashKVRequest{Revision: rev}, m.callOpts...)\n\tif err != nil {\n\t\treturn nil, toErr(ctx, err)\n\t}\n\treturn (*HashKVResponse)(resp), nil\n}\n\nfunc (m *maintenance) Snapshot(ctx context.Context) (io.ReadCloser, error) {\n\tss, err := m.remote.Snapshot(ctx, &pb.SnapshotRequest{}, append(m.callOpts, withMax(defaultStreamMaxRetries))...)\n\tif err != nil {\n\t\treturn nil, toErr(ctx, err)\n\t}\n\n\tm.lg.Info(\"opened snapshot stream; downloading\")\n\tpr, pw := io.Pipe()\n\tgo func() {\n\t\tfor {\n\t\t\tresp, err := ss.Recv()\n\t\t\tif err != nil {\n\t\t\t\tswitch err {\n\t\t\t\tcase io.EOF:\n\t\t\t\t\tm.lg.Info(\"completed snapshot read; closing\")\n\t\t\t\tdefault:\n\t\t\t\t\tm.lg.Warn(\"failed to receive from snapshot stream; closing\", zap.Error(err))\n\t\t\t\t}\n\t\t\t\tpw.CloseWithError(err)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// can \"resp == nil && err == nil\"\n\t\t\t// before we receive snapshot SHA digest?\n\t\t\t// No, server sends EOF with an empty response\n\t\t\t// after it sends SHA digest at the end\n\n\t\t\tif _, werr := pw.Write(resp.Blob); werr != nil {\n\t\t\t\tpw.CloseWithError(werr)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}()\n\treturn &snapshotReadCloser{ctx: ctx, ReadCloser: pr}, nil\n}\n\ntype snapshotReadCloser struct {\n\tctx context.Context\n\tio.ReadCloser\n}\n\nfunc (rc *snapshotReadCloser) Read(p []byte) (n int, err error) {\n\tn, err = rc.ReadCloser.Read(p)\n\treturn n, toErr(rc.ctx, err)\n}\n\nfunc (m *maintenance) MoveLeader(ctx context.Context, transfereeID uint64) (*MoveLeaderResponse, error) {\n\tresp, err := m.remote.MoveLeader(ctx, &pb.MoveLeaderRequest{TargetID: transfereeID}, m.callOpts...)\n\treturn (*MoveLeaderResponse)(resp), toErr(ctx, err)\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/op.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport pb \"go.etcd.io/etcd/api/v3/etcdserverpb\"\n\ntype opType int\n\nconst (\n\t// A default Op has opType 0, which is invalid.\n\ttRange opType = iota + 1\n\ttPut\n\ttDeleteRange\n\ttTxn\n)\n\nvar noPrefixEnd = []byte{0}\n\n// Op represents an Operation that kv can execute.\ntype Op struct {\n\tt   opType\n\tkey []byte\n\tend []byte\n\n\t// for range\n\tlimit        int64\n\tsort         *SortOption\n\tserializable bool\n\tkeysOnly     bool\n\tcountOnly    bool\n\tminModRev    int64\n\tmaxModRev    int64\n\tminCreateRev int64\n\tmaxCreateRev int64\n\n\t// for range, watch\n\trev int64\n\n\t// for watch, put, delete\n\tprevKV bool\n\n\t// for watch\n\t// fragmentation should be disabled by default\n\t// if true, split watch events when total exceeds\n\t// \"--max-request-bytes\" flag value + 512-byte\n\tfragment bool\n\n\t// for put\n\tignoreValue bool\n\tignoreLease bool\n\n\t// progressNotify is for progress updates.\n\tprogressNotify bool\n\t// createdNotify is for created event\n\tcreatedNotify bool\n\t// filters for watchers\n\tfilterPut    bool\n\tfilterDelete bool\n\n\t// for put\n\tval     []byte\n\tleaseID LeaseID\n\n\t// txn\n\tcmps    []Cmp\n\tthenOps []Op\n\telseOps []Op\n\n\tisOptsWithFromKey bool\n\tisOptsWithPrefix  bool\n}\n\n// accessors / mutators\n\n// IsTxn returns true if the \"Op\" type is transaction.\nfunc (op Op) IsTxn() bool {\n\treturn op.t == tTxn\n}\n\n// Txn returns the comparison(if) operations, \"then\" operations, and \"else\" operations.\nfunc (op Op) Txn() ([]Cmp, []Op, []Op) {\n\treturn op.cmps, op.thenOps, op.elseOps\n}\n\n// KeyBytes returns the byte slice holding the Op's key.\nfunc (op Op) KeyBytes() []byte { return op.key }\n\n// WithKeyBytes sets the byte slice for the Op's key.\nfunc (op *Op) WithKeyBytes(key []byte) { op.key = key }\n\n// RangeBytes returns the byte slice holding with the Op's range end, if any.\nfunc (op Op) RangeBytes() []byte { return op.end }\n\n// Rev returns the requested revision, if any.\nfunc (op Op) Rev() int64 { return op.rev }\n\n// IsPut returns true iff the operation is a Put.\nfunc (op Op) IsPut() bool { return op.t == tPut }\n\n// IsGet returns true iff the operation is a Get.\nfunc (op Op) IsGet() bool { return op.t == tRange }\n\n// IsDelete returns true iff the operation is a Delete.\nfunc (op Op) IsDelete() bool { return op.t == tDeleteRange }\n\n// IsSerializable returns true if the serializable field is true.\nfunc (op Op) IsSerializable() bool { return op.serializable }\n\n// IsKeysOnly returns whether keysOnly is set.\nfunc (op Op) IsKeysOnly() bool { return op.keysOnly }\n\n// IsCountOnly returns whether countOnly is set.\nfunc (op Op) IsCountOnly() bool { return op.countOnly }\n\n// MinModRev returns the operation's minimum modify revision.\nfunc (op Op) MinModRev() int64 { return op.minModRev }\n\n// MaxModRev returns the operation's maximum modify revision.\nfunc (op Op) MaxModRev() int64 { return op.maxModRev }\n\n// MinCreateRev returns the operation's minimum create revision.\nfunc (op Op) MinCreateRev() int64 { return op.minCreateRev }\n\n// MaxCreateRev returns the operation's maximum create revision.\nfunc (op Op) MaxCreateRev() int64 { return op.maxCreateRev }\n\n// WithRangeBytes sets the byte slice for the Op's range end.\nfunc (op *Op) WithRangeBytes(end []byte) { op.end = end }\n\n// ValueBytes returns the byte slice holding the Op's value, if any.\nfunc (op Op) ValueBytes() []byte { return op.val }\n\n// WithValueBytes sets the byte slice for the Op's value.\nfunc (op *Op) WithValueBytes(v []byte) { op.val = v }\n\nfunc (op Op) toRangeRequest() *pb.RangeRequest {\n\tif op.t != tRange {\n\t\tpanic(\"op.t != tRange\")\n\t}\n\tr := &pb.RangeRequest{\n\t\tKey:               op.key,\n\t\tRangeEnd:          op.end,\n\t\tLimit:             op.limit,\n\t\tRevision:          op.rev,\n\t\tSerializable:      op.serializable,\n\t\tKeysOnly:          op.keysOnly,\n\t\tCountOnly:         op.countOnly,\n\t\tMinModRevision:    op.minModRev,\n\t\tMaxModRevision:    op.maxModRev,\n\t\tMinCreateRevision: op.minCreateRev,\n\t\tMaxCreateRevision: op.maxCreateRev,\n\t}\n\tif op.sort != nil {\n\t\tr.SortOrder = pb.RangeRequest_SortOrder(op.sort.Order)\n\t\tr.SortTarget = pb.RangeRequest_SortTarget(op.sort.Target)\n\t}\n\treturn r\n}\n\nfunc (op Op) toTxnRequest() *pb.TxnRequest {\n\tthenOps := make([]*pb.RequestOp, len(op.thenOps))\n\tfor i, tOp := range op.thenOps {\n\t\tthenOps[i] = tOp.toRequestOp()\n\t}\n\telseOps := make([]*pb.RequestOp, len(op.elseOps))\n\tfor i, eOp := range op.elseOps {\n\t\telseOps[i] = eOp.toRequestOp()\n\t}\n\tcmps := make([]*pb.Compare, len(op.cmps))\n\tfor i := range op.cmps {\n\t\tcmps[i] = (*pb.Compare)(&op.cmps[i])\n\t}\n\treturn &pb.TxnRequest{Compare: cmps, Success: thenOps, Failure: elseOps}\n}\n\nfunc (op Op) toRequestOp() *pb.RequestOp {\n\tswitch op.t {\n\tcase tRange:\n\t\treturn &pb.RequestOp{Request: &pb.RequestOp_RequestRange{RequestRange: op.toRangeRequest()}}\n\tcase tPut:\n\t\tr := &pb.PutRequest{Key: op.key, Value: op.val, Lease: int64(op.leaseID), PrevKv: op.prevKV, IgnoreValue: op.ignoreValue, IgnoreLease: op.ignoreLease}\n\t\treturn &pb.RequestOp{Request: &pb.RequestOp_RequestPut{RequestPut: r}}\n\tcase tDeleteRange:\n\t\tr := &pb.DeleteRangeRequest{Key: op.key, RangeEnd: op.end, PrevKv: op.prevKV}\n\t\treturn &pb.RequestOp{Request: &pb.RequestOp_RequestDeleteRange{RequestDeleteRange: r}}\n\tcase tTxn:\n\t\treturn &pb.RequestOp{Request: &pb.RequestOp_RequestTxn{RequestTxn: op.toTxnRequest()}}\n\tdefault:\n\t\tpanic(\"Unknown Op\")\n\t}\n}\n\nfunc (op Op) isWrite() bool {\n\tif op.t == tTxn {\n\t\tfor _, tOp := range op.thenOps {\n\t\t\tif tOp.isWrite() {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\tfor _, tOp := range op.elseOps {\n\t\t\tif tOp.isWrite() {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\treturn op.t != tRange\n}\n\nfunc NewOp() *Op {\n\treturn &Op{key: []byte(\"\")}\n}\n\n// OpGet returns \"get\" operation based on given key and operation options.\nfunc OpGet(key string, opts ...OpOption) Op {\n\t// WithPrefix and WithFromKey are not supported together\n\tif IsOptsWithPrefix(opts) && IsOptsWithFromKey(opts) {\n\t\tpanic(\"`WithPrefix` and `WithFromKey` cannot be set at the same time, choose one\")\n\t}\n\tret := Op{t: tRange, key: []byte(key)}\n\tret.applyOpts(opts)\n\treturn ret\n}\n\n// OpDelete returns \"delete\" operation based on given key and operation options.\nfunc OpDelete(key string, opts ...OpOption) Op {\n\t// WithPrefix and WithFromKey are not supported together\n\tif IsOptsWithPrefix(opts) && IsOptsWithFromKey(opts) {\n\t\tpanic(\"`WithPrefix` and `WithFromKey` cannot be set at the same time, choose one\")\n\t}\n\tret := Op{t: tDeleteRange, key: []byte(key)}\n\tret.applyOpts(opts)\n\tswitch {\n\tcase ret.leaseID != 0:\n\t\tpanic(\"unexpected lease in delete\")\n\tcase ret.limit != 0:\n\t\tpanic(\"unexpected limit in delete\")\n\tcase ret.rev != 0:\n\t\tpanic(\"unexpected revision in delete\")\n\tcase ret.sort != nil:\n\t\tpanic(\"unexpected sort in delete\")\n\tcase ret.serializable:\n\t\tpanic(\"unexpected serializable in delete\")\n\tcase ret.countOnly:\n\t\tpanic(\"unexpected countOnly in delete\")\n\tcase ret.minModRev != 0, ret.maxModRev != 0:\n\t\tpanic(\"unexpected mod revision filter in delete\")\n\tcase ret.minCreateRev != 0, ret.maxCreateRev != 0:\n\t\tpanic(\"unexpected create revision filter in delete\")\n\tcase ret.filterDelete, ret.filterPut:\n\t\tpanic(\"unexpected filter in delete\")\n\tcase ret.createdNotify:\n\t\tpanic(\"unexpected createdNotify in delete\")\n\t}\n\treturn ret\n}\n\n// OpPut returns \"put\" operation based on given key-value and operation options.\nfunc OpPut(key, val string, opts ...OpOption) Op {\n\tret := Op{t: tPut, key: []byte(key), val: []byte(val)}\n\tret.applyOpts(opts)\n\tswitch {\n\tcase ret.end != nil:\n\t\tpanic(\"unexpected range in put\")\n\tcase ret.limit != 0:\n\t\tpanic(\"unexpected limit in put\")\n\tcase ret.rev != 0:\n\t\tpanic(\"unexpected revision in put\")\n\tcase ret.sort != nil:\n\t\tpanic(\"unexpected sort in put\")\n\tcase ret.serializable:\n\t\tpanic(\"unexpected serializable in put\")\n\tcase ret.countOnly:\n\t\tpanic(\"unexpected countOnly in put\")\n\tcase ret.minModRev != 0, ret.maxModRev != 0:\n\t\tpanic(\"unexpected mod revision filter in put\")\n\tcase ret.minCreateRev != 0, ret.maxCreateRev != 0:\n\t\tpanic(\"unexpected create revision filter in put\")\n\tcase ret.filterDelete, ret.filterPut:\n\t\tpanic(\"unexpected filter in put\")\n\tcase ret.createdNotify:\n\t\tpanic(\"unexpected createdNotify in put\")\n\t}\n\treturn ret\n}\n\n// OpTxn returns \"txn\" operation based on given transaction conditions.\nfunc OpTxn(cmps []Cmp, thenOps []Op, elseOps []Op) Op {\n\treturn Op{t: tTxn, cmps: cmps, thenOps: thenOps, elseOps: elseOps}\n}\n\nfunc opWatch(key string, opts ...OpOption) Op {\n\tret := Op{t: tRange, key: []byte(key)}\n\tret.applyOpts(opts)\n\tswitch {\n\tcase ret.leaseID != 0:\n\t\tpanic(\"unexpected lease in watch\")\n\tcase ret.limit != 0:\n\t\tpanic(\"unexpected limit in watch\")\n\tcase ret.sort != nil:\n\t\tpanic(\"unexpected sort in watch\")\n\tcase ret.serializable:\n\t\tpanic(\"unexpected serializable in watch\")\n\tcase ret.countOnly:\n\t\tpanic(\"unexpected countOnly in watch\")\n\tcase ret.minModRev != 0, ret.maxModRev != 0:\n\t\tpanic(\"unexpected mod revision filter in watch\")\n\tcase ret.minCreateRev != 0, ret.maxCreateRev != 0:\n\t\tpanic(\"unexpected create revision filter in watch\")\n\t}\n\treturn ret\n}\n\nfunc (op *Op) applyOpts(opts []OpOption) {\n\tfor _, opt := range opts {\n\t\topt(op)\n\t}\n}\n\n// OpOption configures Operations like Get, Put, Delete.\ntype OpOption func(*Op)\n\n// WithLease attaches a lease ID to a key in 'Put' request.\nfunc WithLease(leaseID LeaseID) OpOption {\n\treturn func(op *Op) { op.leaseID = leaseID }\n}\n\n// WithLimit limits the number of results to return from 'Get' request.\n// If WithLimit is given a 0 limit, it is treated as no limit.\nfunc WithLimit(n int64) OpOption { return func(op *Op) { op.limit = n } }\n\n// WithRev specifies the store revision for 'Get' request.\n// Or the start revision of 'Watch' request.\nfunc WithRev(rev int64) OpOption { return func(op *Op) { op.rev = rev } }\n\n// WithSort specifies the ordering in 'Get' request. It requires\n// 'WithRange' and/or 'WithPrefix' to be specified too.\n// 'target' specifies the target to sort by: key, version, revisions, value.\n// 'order' can be either 'SortNone', 'SortAscend', 'SortDescend'.\nfunc WithSort(target SortTarget, order SortOrder) OpOption {\n\treturn func(op *Op) {\n\t\tif target == SortByKey && order == SortAscend {\n\t\t\t// If order != SortNone, server fetches the entire key-space,\n\t\t\t// and then applies the sort and limit, if provided.\n\t\t\t// Since by default the server returns results sorted by keys\n\t\t\t// in lexicographically ascending order, the client should ignore\n\t\t\t// SortOrder if the target is SortByKey.\n\t\t\torder = SortNone\n\t\t}\n\t\top.sort = &SortOption{target, order}\n\t}\n}\n\n// GetPrefixRangeEnd gets the range end of the prefix.\n// 'Get(foo, WithPrefix())' is equal to 'Get(foo, WithRange(GetPrefixRangeEnd(foo))'.\nfunc GetPrefixRangeEnd(prefix string) string {\n\treturn string(getPrefix([]byte(prefix)))\n}\n\nfunc getPrefix(key []byte) []byte {\n\tend := make([]byte, len(key))\n\tcopy(end, key)\n\tfor i := len(end) - 1; i >= 0; i-- {\n\t\tif end[i] < 0xff {\n\t\t\tend[i] = end[i] + 1\n\t\t\tend = end[:i+1]\n\t\t\treturn end\n\t\t}\n\t}\n\t// next prefix does not exist (e.g., 0xffff);\n\t// default to WithFromKey policy\n\treturn noPrefixEnd\n}\n\n// WithPrefix enables 'Get', 'Delete', or 'Watch' requests to operate\n// on the keys with matching prefix. For example, 'Get(foo, WithPrefix())'\n// can return 'foo1', 'foo2', and so on.\nfunc WithPrefix() OpOption {\n\treturn func(op *Op) {\n\t\top.isOptsWithPrefix = true\n\t\tif len(op.key) == 0 {\n\t\t\top.key, op.end = []byte{0}, []byte{0}\n\t\t\treturn\n\t\t}\n\t\top.end = getPrefix(op.key)\n\t}\n}\n\n// WithRange specifies the range of 'Get', 'Delete', 'Watch' requests.\n// For example, 'Get' requests with 'WithRange(end)' returns\n// the keys in the range [key, end).\n// endKey must be lexicographically greater than start key.\nfunc WithRange(endKey string) OpOption {\n\treturn func(op *Op) { op.end = []byte(endKey) }\n}\n\n// WithFromKey specifies the range of 'Get', 'Delete', 'Watch' requests\n// to be equal or greater than the key in the argument.\nfunc WithFromKey() OpOption {\n\treturn func(op *Op) {\n\t\tif len(op.key) == 0 {\n\t\t\top.key = []byte{0}\n\t\t}\n\t\top.end = []byte(\"\\x00\")\n\t\top.isOptsWithFromKey = true\n\t}\n}\n\n// WithSerializable makes 'Get' request serializable. By default,\n// it's linearizable. Serializable requests are better for lower latency\n// requirement.\nfunc WithSerializable() OpOption {\n\treturn func(op *Op) { op.serializable = true }\n}\n\n// WithKeysOnly makes the 'Get' request return only the keys and the corresponding\n// values will be omitted.\nfunc WithKeysOnly() OpOption {\n\treturn func(op *Op) { op.keysOnly = true }\n}\n\n// WithCountOnly makes the 'Get' request return only the count of keys.\nfunc WithCountOnly() OpOption {\n\treturn func(op *Op) { op.countOnly = true }\n}\n\n// WithMinModRev filters out keys for Get with modification revisions less than the given revision.\nfunc WithMinModRev(rev int64) OpOption { return func(op *Op) { op.minModRev = rev } }\n\n// WithMaxModRev filters out keys for Get with modification revisions greater than the given revision.\nfunc WithMaxModRev(rev int64) OpOption { return func(op *Op) { op.maxModRev = rev } }\n\n// WithMinCreateRev filters out keys for Get with creation revisions less than the given revision.\nfunc WithMinCreateRev(rev int64) OpOption { return func(op *Op) { op.minCreateRev = rev } }\n\n// WithMaxCreateRev filters out keys for Get with creation revisions greater than the given revision.\nfunc WithMaxCreateRev(rev int64) OpOption { return func(op *Op) { op.maxCreateRev = rev } }\n\n// WithFirstCreate gets the key with the oldest creation revision in the request range.\nfunc WithFirstCreate() []OpOption { return withTop(SortByCreateRevision, SortAscend) }\n\n// WithLastCreate gets the key with the latest creation revision in the request range.\nfunc WithLastCreate() []OpOption { return withTop(SortByCreateRevision, SortDescend) }\n\n// WithFirstKey gets the lexically first key in the request range.\nfunc WithFirstKey() []OpOption { return withTop(SortByKey, SortAscend) }\n\n// WithLastKey gets the lexically last key in the request range.\nfunc WithLastKey() []OpOption { return withTop(SortByKey, SortDescend) }\n\n// WithFirstRev gets the key with the oldest modification revision in the request range.\nfunc WithFirstRev() []OpOption { return withTop(SortByModRevision, SortAscend) }\n\n// WithLastRev gets the key with the latest modification revision in the request range.\nfunc WithLastRev() []OpOption { return withTop(SortByModRevision, SortDescend) }\n\n// withTop gets the first key over the get's prefix given a sort order\nfunc withTop(target SortTarget, order SortOrder) []OpOption {\n\treturn []OpOption{WithPrefix(), WithSort(target, order), WithLimit(1)}\n}\n\n// WithProgressNotify makes watch server send periodic progress updates\n// every 10 minutes when there is no incoming events.\n// Progress updates have zero events in WatchResponse.\nfunc WithProgressNotify() OpOption {\n\treturn func(op *Op) {\n\t\top.progressNotify = true\n\t}\n}\n\n// WithCreatedNotify makes watch server sends the created event.\nfunc WithCreatedNotify() OpOption {\n\treturn func(op *Op) {\n\t\top.createdNotify = true\n\t}\n}\n\n// WithFilterPut discards PUT events from the watcher.\nfunc WithFilterPut() OpOption {\n\treturn func(op *Op) { op.filterPut = true }\n}\n\n// WithFilterDelete discards DELETE events from the watcher.\nfunc WithFilterDelete() OpOption {\n\treturn func(op *Op) { op.filterDelete = true }\n}\n\n// WithPrevKV gets the previous key-value pair before the event happens. If the previous KV is already compacted,\n// nothing will be returned.\nfunc WithPrevKV() OpOption {\n\treturn func(op *Op) {\n\t\top.prevKV = true\n\t}\n}\n\n// WithFragment to receive raw watch response with fragmentation.\n// Fragmentation is disabled by default. If fragmentation is enabled,\n// etcd watch server will split watch response before sending to clients\n// when the total size of watch events exceed server-side request limit.\n// The default server-side request limit is 1.5 MiB, which can be configured\n// as \"--max-request-bytes\" flag value + gRPC-overhead 512 bytes.\n// See \"etcdserver/api/v3rpc/watch.go\" for more details.\nfunc WithFragment() OpOption {\n\treturn func(op *Op) { op.fragment = true }\n}\n\n// WithIgnoreValue updates the key using its current value.\n// This option can not be combined with non-empty values.\n// Returns an error if the key does not exist.\nfunc WithIgnoreValue() OpOption {\n\treturn func(op *Op) {\n\t\top.ignoreValue = true\n\t}\n}\n\n// WithIgnoreLease updates the key using its current lease.\n// This option can not be combined with WithLease.\n// Returns an error if the key does not exist.\nfunc WithIgnoreLease() OpOption {\n\treturn func(op *Op) {\n\t\top.ignoreLease = true\n\t}\n}\n\n// LeaseOp represents an Operation that lease can execute.\ntype LeaseOp struct {\n\tid LeaseID\n\n\t// for TimeToLive\n\tattachedKeys bool\n}\n\n// LeaseOption configures lease operations.\ntype LeaseOption func(*LeaseOp)\n\nfunc (op *LeaseOp) applyOpts(opts []LeaseOption) {\n\tfor _, opt := range opts {\n\t\topt(op)\n\t}\n}\n\n// WithAttachedKeys makes TimeToLive list the keys attached to the given lease ID.\nfunc WithAttachedKeys() LeaseOption {\n\treturn func(op *LeaseOp) { op.attachedKeys = true }\n}\n\nfunc toLeaseTimeToLiveRequest(id LeaseID, opts ...LeaseOption) *pb.LeaseTimeToLiveRequest {\n\tret := &LeaseOp{id: id}\n\tret.applyOpts(opts)\n\treturn &pb.LeaseTimeToLiveRequest{ID: int64(id), Keys: ret.attachedKeys}\n}\n\n// IsOptsWithPrefix returns true if WithPrefix option is called in the given opts.\nfunc IsOptsWithPrefix(opts []OpOption) bool {\n\tret := NewOp()\n\tfor _, opt := range opts {\n\t\topt(ret)\n\t}\n\n\treturn ret.isOptsWithPrefix\n}\n\n// IsOptsWithFromKey returns true if WithFromKey option is called in the given opts.\nfunc IsOptsWithFromKey(opts []OpOption) bool {\n\tret := NewOp()\n\tfor _, opt := range opts {\n\t\topt(ret)\n\t}\n\n\treturn ret.isOptsWithFromKey\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/options.go",
    "content": "// Copyright 2017 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"math\"\n\t\"time\"\n\n\t\"google.golang.org/grpc\"\n)\n\nvar (\n\t// client-side handling retrying of request failures where data was not written to the wire or\n\t// where server indicates it did not process the data. gRPC default is default is \"WaitForReady(false)\"\n\t// but for etcd we default to \"WaitForReady(true)\" to minimize client request error responses due to\n\t// transient failures.\n\tdefaultWaitForReady = grpc.WaitForReady(true)\n\n\t// client-side request send limit, gRPC default is math.MaxInt32\n\t// Make sure that \"client-side send limit < server-side default send/recv limit\"\n\t// Same value as \"embed.DefaultMaxRequestBytes\" plus gRPC overhead bytes\n\tdefaultMaxCallSendMsgSize = grpc.MaxCallSendMsgSize(2 * 1024 * 1024)\n\n\t// client-side response receive limit, gRPC default is 4MB\n\t// Make sure that \"client-side receive limit >= server-side default send/recv limit\"\n\t// because range response can easily exceed request send limits\n\t// Default to math.MaxInt32; writes exceeding server-side send limit fails anyway\n\tdefaultMaxCallRecvMsgSize = grpc.MaxCallRecvMsgSize(math.MaxInt32)\n\n\t// client-side non-streaming retry limit, only applied to requests where server responds with\n\t// a error code clearly indicating it was unable to process the request such as codes.Unavailable.\n\t// If set to 0, retry is disabled.\n\tdefaultUnaryMaxRetries uint = 100\n\n\t// client-side streaming retry limit, only applied to requests where server responds with\n\t// a error code clearly indicating it was unable to process the request such as codes.Unavailable.\n\t// If set to 0, retry is disabled.\n\tdefaultStreamMaxRetries = ^uint(0) // max uint\n\n\t// client-side retry backoff wait between requests.\n\tdefaultBackoffWaitBetween = 25 * time.Millisecond\n\n\t// client-side retry backoff default jitter fraction.\n\tdefaultBackoffJitterFraction = 0.10\n)\n\n// defaultCallOpts defines a list of default \"gRPC.CallOption\".\n// Some options are exposed to \"clientv3.Config\".\n// Defaults will be overridden by the settings in \"clientv3.Config\".\nvar defaultCallOpts = []grpc.CallOption{\n\tdefaultWaitForReady,\n\tdefaultMaxCallSendMsgSize,\n\tdefaultMaxCallRecvMsgSize,\n}\n\n// MaxLeaseTTL is the maximum lease TTL value\nconst MaxLeaseTTL = 9000000000\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/retry.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"context\"\n\n\tpb \"go.etcd.io/etcd/api/v3/etcdserverpb\"\n\t\"go.etcd.io/etcd/api/v3/v3rpc/rpctypes\"\n\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\ntype retryPolicy uint8\n\nconst (\n\trepeatable retryPolicy = iota\n\tnonRepeatable\n)\n\nfunc (rp retryPolicy) String() string {\n\tswitch rp {\n\tcase repeatable:\n\t\treturn \"repeatable\"\n\tcase nonRepeatable:\n\t\treturn \"nonRepeatable\"\n\tdefault:\n\t\treturn \"UNKNOWN\"\n\t}\n}\n\n// isSafeRetryImmutableRPC returns \"true\" when an immutable request is safe for retry.\n//\n// immutable requests (e.g. Get) should be retried unless it's\n// an obvious server-side error (e.g. rpctypes.ErrRequestTooLarge).\n//\n// Returning \"false\" means retry should stop, since client cannot\n// handle itself even with retries.\nfunc isSafeRetryImmutableRPC(err error) bool {\n\teErr := rpctypes.Error(err)\n\tif serverErr, ok := eErr.(rpctypes.EtcdError); ok && serverErr.Code() != codes.Unavailable {\n\t\t// interrupted by non-transient server-side or gRPC-side error\n\t\t// client cannot handle itself (e.g. rpctypes.ErrCompacted)\n\t\treturn false\n\t}\n\t// only retry if unavailable\n\tev, ok := status.FromError(err)\n\tif !ok {\n\t\t// all errors from RPC is typed \"grpc/status.(*statusError)\"\n\t\t// (ref. https://github.com/grpc/grpc-go/pull/1782)\n\t\t//\n\t\t// if the error type is not \"grpc/status.(*statusError)\",\n\t\t// it could be from \"Dial\"\n\t\t// TODO: do not retry for now\n\t\t// ref. https://github.com/grpc/grpc-go/issues/1581\n\t\treturn false\n\t}\n\treturn ev.Code() == codes.Unavailable\n}\n\n// isSafeRetryMutableRPC returns \"true\" when a mutable request is safe for retry.\n//\n// mutable requests (e.g. Put, Delete, Txn) should only be retried\n// when the status code is codes.Unavailable when initial connection\n// has not been established (no endpoint is up).\n//\n// Returning \"false\" means retry should stop, otherwise it violates\n// write-at-most-once semantics.\nfunc isSafeRetryMutableRPC(err error) bool {\n\tif ev, ok := status.FromError(err); ok && ev.Code() != codes.Unavailable {\n\t\t// not safe for mutable RPCs\n\t\t// e.g. interrupted by non-transient error that client cannot handle itself,\n\t\t// or transient error while the connection has already been established\n\t\treturn false\n\t}\n\tdesc := rpctypes.ErrorDesc(err)\n\treturn desc == \"there is no address available\" || desc == \"there is no connection available\"\n}\n\ntype retryKVClient struct {\n\tkc pb.KVClient\n}\n\n// RetryKVClient implements a KVClient.\nfunc RetryKVClient(c *Client) pb.KVClient {\n\treturn &retryKVClient{\n\t\tkc: pb.NewKVClient(c.conn),\n\t}\n}\nfunc (rkv *retryKVClient) Range(ctx context.Context, in *pb.RangeRequest, opts ...grpc.CallOption) (resp *pb.RangeResponse, err error) {\n\treturn rkv.kc.Range(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rkv *retryKVClient) Put(ctx context.Context, in *pb.PutRequest, opts ...grpc.CallOption) (resp *pb.PutResponse, err error) {\n\treturn rkv.kc.Put(ctx, in, opts...)\n}\n\nfunc (rkv *retryKVClient) DeleteRange(ctx context.Context, in *pb.DeleteRangeRequest, opts ...grpc.CallOption) (resp *pb.DeleteRangeResponse, err error) {\n\treturn rkv.kc.DeleteRange(ctx, in, opts...)\n}\n\nfunc (rkv *retryKVClient) Txn(ctx context.Context, in *pb.TxnRequest, opts ...grpc.CallOption) (resp *pb.TxnResponse, err error) {\n\treturn rkv.kc.Txn(ctx, in, opts...)\n}\n\nfunc (rkv *retryKVClient) Compact(ctx context.Context, in *pb.CompactionRequest, opts ...grpc.CallOption) (resp *pb.CompactionResponse, err error) {\n\treturn rkv.kc.Compact(ctx, in, opts...)\n}\n\ntype retryLeaseClient struct {\n\tlc pb.LeaseClient\n}\n\n// RetryLeaseClient implements a LeaseClient.\nfunc RetryLeaseClient(c *Client) pb.LeaseClient {\n\treturn &retryLeaseClient{\n\t\tlc: pb.NewLeaseClient(c.conn),\n\t}\n}\n\nfunc (rlc *retryLeaseClient) LeaseTimeToLive(ctx context.Context, in *pb.LeaseTimeToLiveRequest, opts ...grpc.CallOption) (resp *pb.LeaseTimeToLiveResponse, err error) {\n\treturn rlc.lc.LeaseTimeToLive(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rlc *retryLeaseClient) LeaseLeases(ctx context.Context, in *pb.LeaseLeasesRequest, opts ...grpc.CallOption) (resp *pb.LeaseLeasesResponse, err error) {\n\treturn rlc.lc.LeaseLeases(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rlc *retryLeaseClient) LeaseGrant(ctx context.Context, in *pb.LeaseGrantRequest, opts ...grpc.CallOption) (resp *pb.LeaseGrantResponse, err error) {\n\treturn rlc.lc.LeaseGrant(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rlc *retryLeaseClient) LeaseRevoke(ctx context.Context, in *pb.LeaseRevokeRequest, opts ...grpc.CallOption) (resp *pb.LeaseRevokeResponse, err error) {\n\treturn rlc.lc.LeaseRevoke(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rlc *retryLeaseClient) LeaseKeepAlive(ctx context.Context, opts ...grpc.CallOption) (stream pb.Lease_LeaseKeepAliveClient, err error) {\n\treturn rlc.lc.LeaseKeepAlive(ctx, append(opts, withRetryPolicy(repeatable))...)\n}\n\ntype retryClusterClient struct {\n\tcc pb.ClusterClient\n}\n\n// RetryClusterClient implements a ClusterClient.\nfunc RetryClusterClient(c *Client) pb.ClusterClient {\n\treturn &retryClusterClient{\n\t\tcc: pb.NewClusterClient(c.conn),\n\t}\n}\n\nfunc (rcc *retryClusterClient) MemberList(ctx context.Context, in *pb.MemberListRequest, opts ...grpc.CallOption) (resp *pb.MemberListResponse, err error) {\n\treturn rcc.cc.MemberList(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rcc *retryClusterClient) MemberAdd(ctx context.Context, in *pb.MemberAddRequest, opts ...grpc.CallOption) (resp *pb.MemberAddResponse, err error) {\n\treturn rcc.cc.MemberAdd(ctx, in, opts...)\n}\n\nfunc (rcc *retryClusterClient) MemberRemove(ctx context.Context, in *pb.MemberRemoveRequest, opts ...grpc.CallOption) (resp *pb.MemberRemoveResponse, err error) {\n\treturn rcc.cc.MemberRemove(ctx, in, opts...)\n}\n\nfunc (rcc *retryClusterClient) MemberUpdate(ctx context.Context, in *pb.MemberUpdateRequest, opts ...grpc.CallOption) (resp *pb.MemberUpdateResponse, err error) {\n\treturn rcc.cc.MemberUpdate(ctx, in, opts...)\n}\n\nfunc (rcc *retryClusterClient) MemberPromote(ctx context.Context, in *pb.MemberPromoteRequest, opts ...grpc.CallOption) (resp *pb.MemberPromoteResponse, err error) {\n\treturn rcc.cc.MemberPromote(ctx, in, opts...)\n}\n\ntype retryMaintenanceClient struct {\n\tmc pb.MaintenanceClient\n}\n\n// RetryMaintenanceClient implements a Maintenance.\nfunc RetryMaintenanceClient(c *Client, conn *grpc.ClientConn) pb.MaintenanceClient {\n\treturn &retryMaintenanceClient{\n\t\tmc: pb.NewMaintenanceClient(conn),\n\t}\n}\n\nfunc (rmc *retryMaintenanceClient) Alarm(ctx context.Context, in *pb.AlarmRequest, opts ...grpc.CallOption) (resp *pb.AlarmResponse, err error) {\n\treturn rmc.mc.Alarm(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rmc *retryMaintenanceClient) Status(ctx context.Context, in *pb.StatusRequest, opts ...grpc.CallOption) (resp *pb.StatusResponse, err error) {\n\treturn rmc.mc.Status(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rmc *retryMaintenanceClient) Hash(ctx context.Context, in *pb.HashRequest, opts ...grpc.CallOption) (resp *pb.HashResponse, err error) {\n\treturn rmc.mc.Hash(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rmc *retryMaintenanceClient) HashKV(ctx context.Context, in *pb.HashKVRequest, opts ...grpc.CallOption) (resp *pb.HashKVResponse, err error) {\n\treturn rmc.mc.HashKV(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rmc *retryMaintenanceClient) Snapshot(ctx context.Context, in *pb.SnapshotRequest, opts ...grpc.CallOption) (stream pb.Maintenance_SnapshotClient, err error) {\n\treturn rmc.mc.Snapshot(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rmc *retryMaintenanceClient) MoveLeader(ctx context.Context, in *pb.MoveLeaderRequest, opts ...grpc.CallOption) (resp *pb.MoveLeaderResponse, err error) {\n\treturn rmc.mc.MoveLeader(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rmc *retryMaintenanceClient) Defragment(ctx context.Context, in *pb.DefragmentRequest, opts ...grpc.CallOption) (resp *pb.DefragmentResponse, err error) {\n\treturn rmc.mc.Defragment(ctx, in, opts...)\n}\n\nfunc (rmc *retryMaintenanceClient) Downgrade(ctx context.Context, in *pb.DowngradeRequest, opts ...grpc.CallOption) (resp *pb.DowngradeResponse, err error) {\n\treturn rmc.mc.Downgrade(ctx, in, opts...)\n}\n\ntype retryAuthClient struct {\n\tac pb.AuthClient\n}\n\n// RetryAuthClient implements a AuthClient.\nfunc RetryAuthClient(c *Client) pb.AuthClient {\n\treturn &retryAuthClient{\n\t\tac: pb.NewAuthClient(c.conn),\n\t}\n}\n\nfunc (rac *retryAuthClient) UserList(ctx context.Context, in *pb.AuthUserListRequest, opts ...grpc.CallOption) (resp *pb.AuthUserListResponse, err error) {\n\treturn rac.ac.UserList(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rac *retryAuthClient) UserGet(ctx context.Context, in *pb.AuthUserGetRequest, opts ...grpc.CallOption) (resp *pb.AuthUserGetResponse, err error) {\n\treturn rac.ac.UserGet(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rac *retryAuthClient) RoleGet(ctx context.Context, in *pb.AuthRoleGetRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleGetResponse, err error) {\n\treturn rac.ac.RoleGet(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rac *retryAuthClient) RoleList(ctx context.Context, in *pb.AuthRoleListRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleListResponse, err error) {\n\treturn rac.ac.RoleList(ctx, in, append(opts, withRetryPolicy(repeatable))...)\n}\n\nfunc (rac *retryAuthClient) AuthEnable(ctx context.Context, in *pb.AuthEnableRequest, opts ...grpc.CallOption) (resp *pb.AuthEnableResponse, err error) {\n\treturn rac.ac.AuthEnable(ctx, in, opts...)\n}\n\nfunc (rac *retryAuthClient) AuthDisable(ctx context.Context, in *pb.AuthDisableRequest, opts ...grpc.CallOption) (resp *pb.AuthDisableResponse, err error) {\n\treturn rac.ac.AuthDisable(ctx, in, opts...)\n}\n\nfunc (rac *retryAuthClient) AuthStatus(ctx context.Context, in *pb.AuthStatusRequest, opts ...grpc.CallOption) (resp *pb.AuthStatusResponse, err error) {\n\treturn rac.ac.AuthStatus(ctx, in, opts...)\n}\n\nfunc (rac *retryAuthClient) UserAdd(ctx context.Context, in *pb.AuthUserAddRequest, opts ...grpc.CallOption) (resp *pb.AuthUserAddResponse, err error) {\n\treturn rac.ac.UserAdd(ctx, in, opts...)\n}\n\nfunc (rac *retryAuthClient) UserDelete(ctx context.Context, in *pb.AuthUserDeleteRequest, opts ...grpc.CallOption) (resp *pb.AuthUserDeleteResponse, err error) {\n\treturn rac.ac.UserDelete(ctx, in, opts...)\n}\n\nfunc (rac *retryAuthClient) UserChangePassword(ctx context.Context, in *pb.AuthUserChangePasswordRequest, opts ...grpc.CallOption) (resp *pb.AuthUserChangePasswordResponse, err error) {\n\treturn rac.ac.UserChangePassword(ctx, in, opts...)\n}\n\nfunc (rac *retryAuthClient) UserGrantRole(ctx context.Context, in *pb.AuthUserGrantRoleRequest, opts ...grpc.CallOption) (resp *pb.AuthUserGrantRoleResponse, err error) {\n\treturn rac.ac.UserGrantRole(ctx, in, opts...)\n}\n\nfunc (rac *retryAuthClient) UserRevokeRole(ctx context.Context, in *pb.AuthUserRevokeRoleRequest, opts ...grpc.CallOption) (resp *pb.AuthUserRevokeRoleResponse, err error) {\n\treturn rac.ac.UserRevokeRole(ctx, in, opts...)\n}\n\nfunc (rac *retryAuthClient) RoleAdd(ctx context.Context, in *pb.AuthRoleAddRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleAddResponse, err error) {\n\treturn rac.ac.RoleAdd(ctx, in, opts...)\n}\n\nfunc (rac *retryAuthClient) RoleDelete(ctx context.Context, in *pb.AuthRoleDeleteRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleDeleteResponse, err error) {\n\treturn rac.ac.RoleDelete(ctx, in, opts...)\n}\n\nfunc (rac *retryAuthClient) RoleGrantPermission(ctx context.Context, in *pb.AuthRoleGrantPermissionRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleGrantPermissionResponse, err error) {\n\treturn rac.ac.RoleGrantPermission(ctx, in, opts...)\n}\n\nfunc (rac *retryAuthClient) RoleRevokePermission(ctx context.Context, in *pb.AuthRoleRevokePermissionRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleRevokePermissionResponse, err error) {\n\treturn rac.ac.RoleRevokePermission(ctx, in, opts...)\n}\n\nfunc (rac *retryAuthClient) Authenticate(ctx context.Context, in *pb.AuthenticateRequest, opts ...grpc.CallOption) (resp *pb.AuthenticateResponse, err error) {\n\treturn rac.ac.Authenticate(ctx, in, opts...)\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/retry_interceptor.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Based on github.com/grpc-ecosystem/go-grpc-middleware/retry, but modified to support the more\n// fine grained error checking required by write-at-most-once retry semantics of etcd.\n\npackage clientv3\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"sync\"\n\t\"time\"\n\n\t\"go.etcd.io/etcd/api/v3/v3rpc/rpctypes\"\n\t\"go.uber.org/zap\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// unaryClientInterceptor returns a new retrying unary client interceptor.\n//\n// The default configuration of the interceptor is to not retry *at all*. This behaviour can be\n// changed through options (e.g. WithMax) on creation of the interceptor or on call (through grpc.CallOptions).\nfunc (c *Client) unaryClientInterceptor(optFuncs ...retryOption) grpc.UnaryClientInterceptor {\n\tintOpts := reuseOrNewWithCallOptions(defaultOptions, optFuncs)\n\treturn func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {\n\t\tctx = withVersion(ctx)\n\t\tgrpcOpts, retryOpts := filterCallOptions(opts)\n\t\tcallOpts := reuseOrNewWithCallOptions(intOpts, retryOpts)\n\t\t// short circuit for simplicity, and avoiding allocations.\n\t\tif callOpts.max == 0 {\n\t\t\treturn invoker(ctx, method, req, reply, cc, grpcOpts...)\n\t\t}\n\t\tvar lastErr error\n\t\tfor attempt := uint(0); attempt < callOpts.max; attempt++ {\n\t\t\tif err := waitRetryBackoff(ctx, attempt, callOpts); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tc.GetLogger().Debug(\n\t\t\t\t\"retrying of unary invoker\",\n\t\t\t\tzap.String(\"target\", cc.Target()),\n\t\t\t\tzap.Uint(\"attempt\", attempt),\n\t\t\t)\n\t\t\tlastErr = invoker(ctx, method, req, reply, cc, grpcOpts...)\n\t\t\tif lastErr == nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tc.GetLogger().Warn(\n\t\t\t\t\"retrying of unary invoker failed\",\n\t\t\t\tzap.String(\"target\", cc.Target()),\n\t\t\t\tzap.Uint(\"attempt\", attempt),\n\t\t\t\tzap.Error(lastErr),\n\t\t\t)\n\t\t\tif isContextError(lastErr) {\n\t\t\t\tif ctx.Err() != nil {\n\t\t\t\t\t// its the context deadline or cancellation.\n\t\t\t\t\treturn lastErr\n\t\t\t\t}\n\t\t\t\t// its the callCtx deadline or cancellation, in which case try again.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif c.shouldRefreshToken(lastErr, callOpts) {\n\t\t\t\tgterr := c.refreshToken(ctx)\n\t\t\t\tif gterr != nil {\n\t\t\t\t\tc.GetLogger().Warn(\n\t\t\t\t\t\t\"retrying of unary invoker failed to fetch new auth token\",\n\t\t\t\t\t\tzap.String(\"target\", cc.Target()),\n\t\t\t\t\t\tzap.Error(gterr),\n\t\t\t\t\t)\n\t\t\t\t\treturn gterr // lastErr must be invalid auth token\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !isSafeRetry(c.lg, lastErr, callOpts) {\n\t\t\t\treturn lastErr\n\t\t\t}\n\t\t}\n\t\treturn lastErr\n\t}\n}\n\n// streamClientInterceptor returns a new retrying stream client interceptor for server side streaming calls.\n//\n// The default configuration of the interceptor is to not retry *at all*. This behaviour can be\n// changed through options (e.g. WithMax) on creation of the interceptor or on call (through grpc.CallOptions).\n//\n// Retry logic is available *only for ServerStreams*, i.e. 1:n streams, as the internal logic needs\n// to buffer the messages sent by the client. If retry is enabled on any other streams (ClientStreams,\n// BidiStreams), the retry interceptor will fail the call.\nfunc (c *Client) streamClientInterceptor(optFuncs ...retryOption) grpc.StreamClientInterceptor {\n\tintOpts := reuseOrNewWithCallOptions(defaultOptions, optFuncs)\n\treturn func(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) {\n\t\tctx = withVersion(ctx)\n\t\t// getToken automatically\n\t\t// TODO(cfc4n): keep this code block, remove codes about getToken in client.go after pr #12165 merged.\n\t\tif c.authTokenBundle != nil {\n\t\t\t// equal to c.Username != \"\" && c.Password != \"\"\n\t\t\terr := c.getToken(ctx)\n\t\t\tif err != nil && rpctypes.Error(err) != rpctypes.ErrAuthNotEnabled {\n\t\t\t\tc.GetLogger().Error(\"clientv3/retry_interceptor: getToken failed\", zap.Error(err))\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\tgrpcOpts, retryOpts := filterCallOptions(opts)\n\t\tcallOpts := reuseOrNewWithCallOptions(intOpts, retryOpts)\n\t\t// short circuit for simplicity, and avoiding allocations.\n\t\tif callOpts.max == 0 {\n\t\t\treturn streamer(ctx, desc, cc, method, grpcOpts...)\n\t\t}\n\t\tif desc.ClientStreams {\n\t\t\treturn nil, status.Errorf(codes.Unimplemented, \"clientv3/retry_interceptor: cannot retry on ClientStreams, set Disable()\")\n\t\t}\n\t\tnewStreamer, err := streamer(ctx, desc, cc, method, grpcOpts...)\n\t\tif err != nil {\n\t\t\tc.GetLogger().Error(\"streamer failed to create ClientStream\", zap.Error(err))\n\t\t\treturn nil, err // TODO(mwitkow): Maybe dial and transport errors should be retriable?\n\t\t}\n\t\tretryingStreamer := &serverStreamingRetryingStream{\n\t\t\tclient:       c,\n\t\t\tClientStream: newStreamer,\n\t\t\tcallOpts:     callOpts,\n\t\t\tctx:          ctx,\n\t\t\tstreamerCall: func(ctx context.Context) (grpc.ClientStream, error) {\n\t\t\t\treturn streamer(ctx, desc, cc, method, grpcOpts...)\n\t\t\t},\n\t\t}\n\t\treturn retryingStreamer, nil\n\t}\n}\n\n// shouldRefreshToken checks whether there's a need to refresh the token based on the error and callOptions,\n// and returns a boolean value.\nfunc (c *Client) shouldRefreshToken(err error, callOpts *options) bool {\n\tif rpctypes.Error(err) == rpctypes.ErrUserEmpty {\n\t\t// refresh the token when username, password is present but the server returns ErrUserEmpty\n\t\t// which is possible when the client token is cleared somehow\n\t\treturn c.authTokenBundle != nil // equal to c.Username != \"\" && c.Password != \"\"\n\t}\n\n\treturn callOpts.retryAuth &&\n\t\t(rpctypes.Error(err) == rpctypes.ErrInvalidAuthToken || rpctypes.Error(err) == rpctypes.ErrAuthOldRevision)\n}\n\nfunc (c *Client) refreshToken(ctx context.Context) error {\n\tif c.authTokenBundle == nil {\n\t\t// c.authTokenBundle will be initialized only when\n\t\t// c.Username != \"\" && c.Password != \"\".\n\t\t//\n\t\t// When users use the TLS CommonName based authentication, the\n\t\t// authTokenBundle is always nil. But it's possible for the clients\n\t\t// to get `rpctypes.ErrAuthOldRevision` response when the clients\n\t\t// concurrently modify auth data (e.g, addUser, deleteUser etc.).\n\t\t// In this case, there is no need to refresh the token; instead the\n\t\t// clients just need to retry the operations (e.g. Put, Delete etc).\n\t\treturn nil\n\t}\n\t// clear auth token before refreshing it.\n\tc.authTokenBundle.UpdateAuthToken(\"\")\n\treturn c.getToken(ctx)\n}\n\n// type serverStreamingRetryingStream is the implementation of grpc.ClientStream that acts as a\n// proxy to the underlying call. If any of the RecvMsg() calls fail, it will try to reestablish\n// a new ClientStream according to the retry policy.\ntype serverStreamingRetryingStream struct {\n\tgrpc.ClientStream\n\tclient        *Client\n\tbufferedSends []interface{} // single message that the client can sen\n\treceivedGood  bool          // indicates whether any prior receives were successful\n\twasClosedSend bool          // indicates that CloseSend was closed\n\tctx           context.Context\n\tcallOpts      *options\n\tstreamerCall  func(ctx context.Context) (grpc.ClientStream, error)\n\tmu            sync.RWMutex\n}\n\nfunc (s *serverStreamingRetryingStream) setStream(clientStream grpc.ClientStream) {\n\ts.mu.Lock()\n\ts.ClientStream = clientStream\n\ts.mu.Unlock()\n}\n\nfunc (s *serverStreamingRetryingStream) getStream() grpc.ClientStream {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\treturn s.ClientStream\n}\n\nfunc (s *serverStreamingRetryingStream) SendMsg(m interface{}) error {\n\ts.mu.Lock()\n\ts.bufferedSends = append(s.bufferedSends, m)\n\ts.mu.Unlock()\n\treturn s.getStream().SendMsg(m)\n}\n\nfunc (s *serverStreamingRetryingStream) CloseSend() error {\n\ts.mu.Lock()\n\ts.wasClosedSend = true\n\ts.mu.Unlock()\n\treturn s.getStream().CloseSend()\n}\n\nfunc (s *serverStreamingRetryingStream) Header() (metadata.MD, error) {\n\treturn s.getStream().Header()\n}\n\nfunc (s *serverStreamingRetryingStream) Trailer() metadata.MD {\n\treturn s.getStream().Trailer()\n}\n\nfunc (s *serverStreamingRetryingStream) RecvMsg(m interface{}) error {\n\tattemptRetry, lastErr := s.receiveMsgAndIndicateRetry(m)\n\tif !attemptRetry {\n\t\treturn lastErr // success or hard failure\n\t}\n\n\t// We start off from attempt 1, because zeroth was already made on normal SendMsg().\n\tfor attempt := uint(1); attempt < s.callOpts.max; attempt++ {\n\t\tif err := waitRetryBackoff(s.ctx, attempt, s.callOpts); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnewStream, err := s.reestablishStreamAndResendBuffer(s.ctx)\n\t\tif err != nil {\n\t\t\ts.client.lg.Error(\"failed reestablishStreamAndResendBuffer\", zap.Error(err))\n\t\t\treturn err // TODO(mwitkow): Maybe dial and transport errors should be retriable?\n\t\t}\n\t\ts.setStream(newStream)\n\n\t\ts.client.lg.Warn(\"retrying RecvMsg\", zap.Error(lastErr))\n\t\tattemptRetry, lastErr = s.receiveMsgAndIndicateRetry(m)\n\t\tif !attemptRetry {\n\t\t\treturn lastErr\n\t\t}\n\t}\n\treturn lastErr\n}\n\nfunc (s *serverStreamingRetryingStream) receiveMsgAndIndicateRetry(m interface{}) (bool, error) {\n\ts.mu.RLock()\n\twasGood := s.receivedGood\n\ts.mu.RUnlock()\n\terr := s.getStream().RecvMsg(m)\n\tif err == nil || err == io.EOF {\n\t\ts.mu.Lock()\n\t\ts.receivedGood = true\n\t\ts.mu.Unlock()\n\t\treturn false, err\n\t} else if wasGood {\n\t\t// previous RecvMsg in the stream succeeded, no retry logic should interfere\n\t\treturn false, err\n\t}\n\tif isContextError(err) {\n\t\tif s.ctx.Err() != nil {\n\t\t\treturn false, err\n\t\t}\n\t\t// its the callCtx deadline or cancellation, in which case try again.\n\t\treturn true, err\n\t}\n\tif s.client.shouldRefreshToken(err, s.callOpts) {\n\t\tgterr := s.client.refreshToken(s.ctx)\n\t\tif gterr != nil {\n\t\t\ts.client.lg.Warn(\"retry failed to fetch new auth token\", zap.Error(gterr))\n\t\t\treturn false, err // return the original error for simplicity\n\t\t}\n\t\treturn true, err\n\n\t}\n\treturn isSafeRetry(s.client.lg, err, s.callOpts), err\n}\n\nfunc (s *serverStreamingRetryingStream) reestablishStreamAndResendBuffer(callCtx context.Context) (grpc.ClientStream, error) {\n\ts.mu.RLock()\n\tbufferedSends := s.bufferedSends\n\ts.mu.RUnlock()\n\tnewStream, err := s.streamerCall(callCtx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, msg := range bufferedSends {\n\t\tif err := newStream.SendMsg(msg); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif err := newStream.CloseSend(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn newStream, nil\n}\n\nfunc waitRetryBackoff(ctx context.Context, attempt uint, callOpts *options) error {\n\twaitTime := time.Duration(0)\n\tif attempt > 0 {\n\t\twaitTime = callOpts.backoffFunc(attempt)\n\t}\n\tif waitTime > 0 {\n\t\ttimer := time.NewTimer(waitTime)\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\ttimer.Stop()\n\t\t\treturn contextErrToGrpcErr(ctx.Err())\n\t\tcase <-timer.C:\n\t\t}\n\t}\n\treturn nil\n}\n\n// isSafeRetry returns \"true\", if request is safe for retry with the given error.\nfunc isSafeRetry(lg *zap.Logger, err error, callOpts *options) bool {\n\tif isContextError(err) {\n\t\treturn false\n\t}\n\tswitch callOpts.retryPolicy {\n\tcase repeatable:\n\t\treturn isSafeRetryImmutableRPC(err)\n\tcase nonRepeatable:\n\t\treturn isSafeRetryMutableRPC(err)\n\tdefault:\n\t\tlg.Warn(\"unrecognized retry policy\", zap.String(\"retryPolicy\", callOpts.retryPolicy.String()))\n\t\treturn false\n\t}\n}\n\nfunc isContextError(err error) bool {\n\treturn status.Code(err) == codes.DeadlineExceeded || status.Code(err) == codes.Canceled\n}\n\nfunc contextErrToGrpcErr(err error) error {\n\tswitch err {\n\tcase context.DeadlineExceeded:\n\t\treturn status.Errorf(codes.DeadlineExceeded, err.Error())\n\tcase context.Canceled:\n\t\treturn status.Errorf(codes.Canceled, err.Error())\n\tdefault:\n\t\treturn status.Errorf(codes.Unknown, err.Error())\n\t}\n}\n\nvar (\n\tdefaultOptions = &options{\n\t\tretryPolicy: nonRepeatable,\n\t\tmax:         0, // disable\n\t\tbackoffFunc: backoffLinearWithJitter(50*time.Millisecond /*jitter*/, 0.10),\n\t\tretryAuth:   true,\n\t}\n)\n\n// backoffFunc denotes a family of functions that control the backoff duration between call retries.\n//\n// They are called with an identifier of the attempt, and should return a time the system client should\n// hold off for. If the time returned is longer than the `context.Context.Deadline` of the request\n// the deadline of the request takes precedence and the wait will be interrupted before proceeding\n// with the next iteration.\ntype backoffFunc func(attempt uint) time.Duration\n\n// withRetryPolicy sets the retry policy of this call.\nfunc withRetryPolicy(rp retryPolicy) retryOption {\n\treturn retryOption{applyFunc: func(o *options) {\n\t\to.retryPolicy = rp\n\t}}\n}\n\n// withMax sets the maximum number of retries on this call, or this interceptor.\nfunc withMax(maxRetries uint) retryOption {\n\treturn retryOption{applyFunc: func(o *options) {\n\t\to.max = maxRetries\n\t}}\n}\n\n// WithBackoff sets the `BackoffFunc `used to control time between retries.\nfunc withBackoff(bf backoffFunc) retryOption {\n\treturn retryOption{applyFunc: func(o *options) {\n\t\to.backoffFunc = bf\n\t}}\n}\n\ntype options struct {\n\tretryPolicy retryPolicy\n\tmax         uint\n\tbackoffFunc backoffFunc\n\tretryAuth   bool\n}\n\n// retryOption is a grpc.CallOption that is local to clientv3's retry interceptor.\ntype retryOption struct {\n\tgrpc.EmptyCallOption // make sure we implement private after() and before() fields so we don't panic.\n\tapplyFunc            func(opt *options)\n}\n\nfunc reuseOrNewWithCallOptions(opt *options, retryOptions []retryOption) *options {\n\tif len(retryOptions) == 0 {\n\t\treturn opt\n\t}\n\toptCopy := &options{}\n\t*optCopy = *opt\n\tfor _, f := range retryOptions {\n\t\tf.applyFunc(optCopy)\n\t}\n\treturn optCopy\n}\n\nfunc filterCallOptions(callOptions []grpc.CallOption) (grpcOptions []grpc.CallOption, retryOptions []retryOption) {\n\tfor _, opt := range callOptions {\n\t\tif co, ok := opt.(retryOption); ok {\n\t\t\tretryOptions = append(retryOptions, co)\n\t\t} else {\n\t\t\tgrpcOptions = append(grpcOptions, opt)\n\t\t}\n\t}\n\treturn grpcOptions, retryOptions\n}\n\n// BackoffLinearWithJitter waits a set period of time, allowing for jitter (fractional adjustment).\n//\n// For example waitBetween=1s and jitter=0.10 can generate waits between 900ms and 1100ms.\nfunc backoffLinearWithJitter(waitBetween time.Duration, jitterFraction float64) backoffFunc {\n\treturn func(attempt uint) time.Duration {\n\t\treturn jitterUp(waitBetween, jitterFraction)\n\t}\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/sort.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\ntype SortTarget int\ntype SortOrder int\n\nconst (\n\tSortNone SortOrder = iota\n\tSortAscend\n\tSortDescend\n)\n\nconst (\n\tSortByKey SortTarget = iota\n\tSortByVersion\n\tSortByCreateRevision\n\tSortByModRevision\n\tSortByValue\n)\n\ntype SortOption struct {\n\tTarget SortTarget\n\tOrder  SortOrder\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/txn.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"context\"\n\t\"sync\"\n\n\tpb \"go.etcd.io/etcd/api/v3/etcdserverpb\"\n\n\t\"google.golang.org/grpc\"\n)\n\n// Txn is the interface that wraps mini-transactions.\n//\n//\tTxn(context.TODO()).If(\n//\t Compare(Value(k1), \">\", v1),\n//\t Compare(Version(k1), \"=\", 2)\n//\t).Then(\n//\t OpPut(k2,v2), OpPut(k3,v3)\n//\t).Else(\n//\t OpPut(k4,v4), OpPut(k5,v5)\n//\t).Commit()\ntype Txn interface {\n\t// If takes a list of comparison. If all comparisons passed in succeed,\n\t// the operations passed into Then() will be executed. Or the operations\n\t// passed into Else() will be executed.\n\tIf(cs ...Cmp) Txn\n\n\t// Then takes a list of operations. The Ops list will be executed, if the\n\t// comparisons passed in If() succeed.\n\tThen(ops ...Op) Txn\n\n\t// Else takes a list of operations. The Ops list will be executed, if the\n\t// comparisons passed in If() fail.\n\tElse(ops ...Op) Txn\n\n\t// Commit tries to commit the transaction.\n\tCommit() (*TxnResponse, error)\n}\n\ntype txn struct {\n\tkv  *kv\n\tctx context.Context\n\n\tmu    sync.Mutex\n\tcif   bool\n\tcthen bool\n\tcelse bool\n\n\tisWrite bool\n\n\tcmps []*pb.Compare\n\n\tsus []*pb.RequestOp\n\tfas []*pb.RequestOp\n\n\tcallOpts []grpc.CallOption\n}\n\nfunc (txn *txn) If(cs ...Cmp) Txn {\n\ttxn.mu.Lock()\n\tdefer txn.mu.Unlock()\n\n\tif txn.cif {\n\t\tpanic(\"cannot call If twice!\")\n\t}\n\n\tif txn.cthen {\n\t\tpanic(\"cannot call If after Then!\")\n\t}\n\n\tif txn.celse {\n\t\tpanic(\"cannot call If after Else!\")\n\t}\n\n\ttxn.cif = true\n\n\tfor i := range cs {\n\t\ttxn.cmps = append(txn.cmps, (*pb.Compare)(&cs[i]))\n\t}\n\n\treturn txn\n}\n\nfunc (txn *txn) Then(ops ...Op) Txn {\n\ttxn.mu.Lock()\n\tdefer txn.mu.Unlock()\n\n\tif txn.cthen {\n\t\tpanic(\"cannot call Then twice!\")\n\t}\n\tif txn.celse {\n\t\tpanic(\"cannot call Then after Else!\")\n\t}\n\n\ttxn.cthen = true\n\n\tfor _, op := range ops {\n\t\ttxn.isWrite = txn.isWrite || op.isWrite()\n\t\ttxn.sus = append(txn.sus, op.toRequestOp())\n\t}\n\n\treturn txn\n}\n\nfunc (txn *txn) Else(ops ...Op) Txn {\n\ttxn.mu.Lock()\n\tdefer txn.mu.Unlock()\n\n\tif txn.celse {\n\t\tpanic(\"cannot call Else twice!\")\n\t}\n\n\ttxn.celse = true\n\n\tfor _, op := range ops {\n\t\ttxn.isWrite = txn.isWrite || op.isWrite()\n\t\ttxn.fas = append(txn.fas, op.toRequestOp())\n\t}\n\n\treturn txn\n}\n\nfunc (txn *txn) Commit() (*TxnResponse, error) {\n\ttxn.mu.Lock()\n\tdefer txn.mu.Unlock()\n\n\tr := &pb.TxnRequest{Compare: txn.cmps, Success: txn.sus, Failure: txn.fas}\n\n\tvar resp *pb.TxnResponse\n\tvar err error\n\tresp, err = txn.kv.remote.Txn(txn.ctx, r, txn.callOpts...)\n\tif err != nil {\n\t\treturn nil, toErr(txn.ctx, err)\n\t}\n\treturn (*TxnResponse)(resp), nil\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/utils.go",
    "content": "// Copyright 2018 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"math/rand\"\n\t\"time\"\n)\n\n// jitterUp adds random jitter to the duration.\n//\n// This adds or subtracts time from the duration within a given jitter fraction.\n// For example for 10s and jitter 0.1, it will return a time within [9s, 11s])\n//\n// Reference: https://godoc.org/github.com/grpc-ecosystem/go-grpc-middleware/util/backoffutils\nfunc jitterUp(duration time.Duration, jitter float64) time.Duration {\n\tmultiplier := jitter * (rand.Float64()*2 - 1)\n\treturn time.Duration(float64(duration) * (1 + multiplier))\n}\n"
  },
  {
    "path": "vendor/go.etcd.io/etcd/client/v3/watch.go",
    "content": "// Copyright 2016 The etcd Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage clientv3\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n\t\"time\"\n\n\tpb \"go.etcd.io/etcd/api/v3/etcdserverpb\"\n\t\"go.etcd.io/etcd/api/v3/mvccpb\"\n\tv3rpc \"go.etcd.io/etcd/api/v3/v3rpc/rpctypes\"\n\n\t\"go.uber.org/zap\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/status\"\n)\n\nconst (\n\tEventTypeDelete = mvccpb.DELETE\n\tEventTypePut    = mvccpb.PUT\n\n\tcloseSendErrTimeout = 250 * time.Millisecond\n\n\t// AutoWatchID is the watcher ID passed in WatchStream.Watch when no\n\t// user-provided ID is available. If pass, an ID will automatically be assigned.\n\tAutoWatchID = 0\n\n\t// InvalidWatchID represents an invalid watch ID and prevents duplication with an existing watch.\n\tInvalidWatchID = -1\n)\n\ntype Event mvccpb.Event\n\ntype WatchChan <-chan WatchResponse\n\ntype Watcher interface {\n\t// Watch watches on a key or prefix. The watched events will be returned\n\t// through the returned channel. If revisions waiting to be sent over the\n\t// watch are compacted, then the watch will be canceled by the server, the\n\t// client will post a compacted error watch response, and the channel will close.\n\t// If the requested revision is 0 or unspecified, the returned channel will\n\t// return watch events that happen after the server receives the watch request.\n\t// If the context \"ctx\" is canceled or timed out, returned \"WatchChan\" is closed,\n\t// and \"WatchResponse\" from this closed channel has zero events and nil \"Err()\".\n\t// The context \"ctx\" MUST be canceled, as soon as watcher is no longer being used,\n\t// to release the associated resources.\n\t//\n\t// If the context is \"context.Background/TODO\", returned \"WatchChan\" will\n\t// not be closed and block until event is triggered, except when server\n\t// returns a non-recoverable error (e.g. ErrCompacted).\n\t// For example, when context passed with \"WithRequireLeader\" and the\n\t// connected server has no leader (e.g. due to network partition),\n\t// error \"etcdserver: no leader\" (ErrNoLeader) will be returned,\n\t// and then \"WatchChan\" is closed with non-nil \"Err()\".\n\t// In order to prevent a watch stream being stuck in a partitioned node,\n\t// make sure to wrap context with \"WithRequireLeader\".\n\t//\n\t// Otherwise, as long as the context has not been canceled or timed out,\n\t// watch will retry on other recoverable errors forever until reconnected.\n\t//\n\t// TODO: explicitly set context error in the last \"WatchResponse\" message and close channel?\n\t// Currently, client contexts are overwritten with \"valCtx\" that never closes.\n\t// TODO(v3.4): configure watch retry policy, limit maximum retry number\n\t// (see https://github.com/etcd-io/etcd/issues/8980)\n\tWatch(ctx context.Context, key string, opts ...OpOption) WatchChan\n\n\t// RequestProgress requests a progress notify response be sent in all watch channels.\n\tRequestProgress(ctx context.Context) error\n\n\t// Close closes the watcher and cancels all watch requests.\n\tClose() error\n}\n\ntype WatchResponse struct {\n\tHeader pb.ResponseHeader\n\tEvents []*Event\n\n\t// CompactRevision is the minimum revision the watcher may receive.\n\tCompactRevision int64\n\n\t// Canceled is used to indicate watch failure.\n\t// If the watch failed and the stream was about to close, before the channel is closed,\n\t// the channel sends a final response that has Canceled set to true with a non-nil Err().\n\tCanceled bool\n\n\t// Created is used to indicate the creation of the watcher.\n\tCreated bool\n\n\tcloseErr error\n\n\t// cancelReason is a reason of canceling watch\n\tcancelReason string\n}\n\n// IsCreate returns true if the event tells that the key is newly created.\nfunc (e *Event) IsCreate() bool {\n\treturn e.Type == EventTypePut && e.Kv.CreateRevision == e.Kv.ModRevision\n}\n\n// IsModify returns true if the event tells that a new value is put on existing key.\nfunc (e *Event) IsModify() bool {\n\treturn e.Type == EventTypePut && e.Kv.CreateRevision != e.Kv.ModRevision\n}\n\n// Err is the error value if this WatchResponse holds an error.\nfunc (wr *WatchResponse) Err() error {\n\tswitch {\n\tcase wr.closeErr != nil:\n\t\treturn v3rpc.Error(wr.closeErr)\n\tcase wr.CompactRevision != 0:\n\t\treturn v3rpc.ErrCompacted\n\tcase wr.Canceled:\n\t\tif len(wr.cancelReason) != 0 {\n\t\t\treturn v3rpc.Error(status.Error(codes.FailedPrecondition, wr.cancelReason))\n\t\t}\n\t\treturn v3rpc.ErrFutureRev\n\t}\n\treturn nil\n}\n\n// IsProgressNotify returns true if the WatchResponse is progress notification.\nfunc (wr *WatchResponse) IsProgressNotify() bool {\n\treturn len(wr.Events) == 0 && !wr.Canceled && !wr.Created && wr.CompactRevision == 0 && wr.Header.Revision != 0\n}\n\n// watcher implements the Watcher interface\ntype watcher struct {\n\tremote   pb.WatchClient\n\tcallOpts []grpc.CallOption\n\n\t// mu protects the grpc streams map\n\tmu sync.Mutex\n\n\t// streams holds all the active grpc streams keyed by ctx value.\n\tstreams map[string]*watchGrpcStream\n\tlg      *zap.Logger\n}\n\n// watchGrpcStream tracks all watch resources attached to a single grpc stream.\ntype watchGrpcStream struct {\n\towner    *watcher\n\tremote   pb.WatchClient\n\tcallOpts []grpc.CallOption\n\n\t// ctx controls internal remote.Watch requests\n\tctx context.Context\n\t// ctxKey is the key used when looking up this stream's context\n\tctxKey string\n\tcancel context.CancelFunc\n\n\t// substreams holds all active watchers on this grpc stream\n\tsubstreams map[int64]*watcherStream\n\t// resuming holds all resuming watchers on this grpc stream\n\tresuming []*watcherStream\n\n\t// reqc sends a watch request from Watch() to the main goroutine\n\treqc chan watchStreamRequest\n\t// respc receives data from the watch client\n\trespc chan *pb.WatchResponse\n\t// donec closes to broadcast shutdown\n\tdonec chan struct{}\n\t// errc transmits errors from grpc Recv to the watch stream reconnect logic\n\terrc chan error\n\t// closingc gets the watcherStream of closing watchers\n\tclosingc chan *watcherStream\n\t// wg is Done when all substream goroutines have exited\n\twg sync.WaitGroup\n\n\t// resumec closes to signal that all substreams should begin resuming\n\tresumec chan struct{}\n\t// closeErr is the error that closed the watch stream\n\tcloseErr error\n\n\tlg *zap.Logger\n}\n\n// watchStreamRequest is a union of the supported watch request operation types\ntype watchStreamRequest interface {\n\ttoPB() *pb.WatchRequest\n}\n\n// watchRequest is issued by the subscriber to start a new watcher\ntype watchRequest struct {\n\tctx context.Context\n\tkey string\n\tend string\n\trev int64\n\n\t// send created notification event if this field is true\n\tcreatedNotify bool\n\t// progressNotify is for progress updates\n\tprogressNotify bool\n\t// fragmentation should be disabled by default\n\t// if true, split watch events when total exceeds\n\t// \"--max-request-bytes\" flag value + 512-byte\n\tfragment bool\n\n\t// filters is the list of events to filter out\n\tfilters []pb.WatchCreateRequest_FilterType\n\t// get the previous key-value pair before the event happens\n\tprevKV bool\n\t// retc receives a chan WatchResponse once the watcher is established\n\tretc chan chan WatchResponse\n}\n\n// progressRequest is issued by the subscriber to request watch progress\ntype progressRequest struct {\n}\n\n// watcherStream represents a registered watcher\ntype watcherStream struct {\n\t// initReq is the request that initiated this request\n\tinitReq watchRequest\n\n\t// outc publishes watch responses to subscriber\n\toutc chan WatchResponse\n\t// recvc buffers watch responses before publishing\n\trecvc chan *WatchResponse\n\t// donec closes when the watcherStream goroutine stops.\n\tdonec chan struct{}\n\t// closing is set to true when stream should be scheduled to shutdown.\n\tclosing bool\n\t// id is the registered watch id on the grpc stream\n\tid int64\n\n\t// buf holds all events received from etcd but not yet consumed by the client\n\tbuf []*WatchResponse\n}\n\nfunc NewWatcher(c *Client) Watcher {\n\treturn NewWatchFromWatchClient(pb.NewWatchClient(c.conn), c)\n}\n\nfunc NewWatchFromWatchClient(wc pb.WatchClient, c *Client) Watcher {\n\tw := &watcher{\n\t\tremote:  wc,\n\t\tstreams: make(map[string]*watchGrpcStream),\n\t}\n\tif c != nil {\n\t\tw.callOpts = c.callOpts\n\t\tw.lg = c.lg\n\t}\n\treturn w\n}\n\n// never closes\nvar valCtxCh = make(chan struct{})\nvar zeroTime = time.Unix(0, 0)\n\n// ctx with only the values; never Done\ntype valCtx struct{ context.Context }\n\nfunc (vc *valCtx) Deadline() (time.Time, bool) { return zeroTime, false }\nfunc (vc *valCtx) Done() <-chan struct{}       { return valCtxCh }\nfunc (vc *valCtx) Err() error                  { return nil }\n\nfunc (w *watcher) newWatcherGrpcStream(inctx context.Context) *watchGrpcStream {\n\tctx, cancel := context.WithCancel(&valCtx{inctx})\n\twgs := &watchGrpcStream{\n\t\towner:      w,\n\t\tremote:     w.remote,\n\t\tcallOpts:   w.callOpts,\n\t\tctx:        ctx,\n\t\tctxKey:     streamKeyFromCtx(inctx),\n\t\tcancel:     cancel,\n\t\tsubstreams: make(map[int64]*watcherStream),\n\t\trespc:      make(chan *pb.WatchResponse),\n\t\treqc:       make(chan watchStreamRequest),\n\t\tdonec:      make(chan struct{}),\n\t\terrc:       make(chan error, 1),\n\t\tclosingc:   make(chan *watcherStream),\n\t\tresumec:    make(chan struct{}),\n\t\tlg:         w.lg,\n\t}\n\tgo wgs.run()\n\treturn wgs\n}\n\n// Watch posts a watch request to run() and waits for a new watcher channel\nfunc (w *watcher) Watch(ctx context.Context, key string, opts ...OpOption) WatchChan {\n\tow := opWatch(key, opts...)\n\n\tvar filters []pb.WatchCreateRequest_FilterType\n\tif ow.filterPut {\n\t\tfilters = append(filters, pb.WatchCreateRequest_NOPUT)\n\t}\n\tif ow.filterDelete {\n\t\tfilters = append(filters, pb.WatchCreateRequest_NODELETE)\n\t}\n\n\twr := &watchRequest{\n\t\tctx:            ctx,\n\t\tcreatedNotify:  ow.createdNotify,\n\t\tkey:            string(ow.key),\n\t\tend:            string(ow.end),\n\t\trev:            ow.rev,\n\t\tprogressNotify: ow.progressNotify,\n\t\tfragment:       ow.fragment,\n\t\tfilters:        filters,\n\t\tprevKV:         ow.prevKV,\n\t\tretc:           make(chan chan WatchResponse, 1),\n\t}\n\n\tok := false\n\tctxKey := streamKeyFromCtx(ctx)\n\n\tvar closeCh chan WatchResponse\n\tfor {\n\t\t// find or allocate appropriate grpc watch stream\n\t\tw.mu.Lock()\n\t\tif w.streams == nil {\n\t\t\t// closed\n\t\t\tw.mu.Unlock()\n\t\t\tch := make(chan WatchResponse)\n\t\t\tclose(ch)\n\t\t\treturn ch\n\t\t}\n\t\twgs := w.streams[ctxKey]\n\t\tif wgs == nil {\n\t\t\twgs = w.newWatcherGrpcStream(ctx)\n\t\t\tw.streams[ctxKey] = wgs\n\t\t}\n\t\tdonec := wgs.donec\n\t\treqc := wgs.reqc\n\t\tw.mu.Unlock()\n\n\t\t// couldn't create channel; return closed channel\n\t\tif closeCh == nil {\n\t\t\tcloseCh = make(chan WatchResponse, 1)\n\t\t}\n\n\t\t// submit request\n\t\tselect {\n\t\tcase reqc <- wr:\n\t\t\tok = true\n\t\tcase <-wr.ctx.Done():\n\t\t\tok = false\n\t\tcase <-donec:\n\t\t\tok = false\n\t\t\tif wgs.closeErr != nil {\n\t\t\t\tcloseCh <- WatchResponse{Canceled: true, closeErr: wgs.closeErr}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// retry; may have dropped stream from no ctxs\n\t\t\tcontinue\n\t\t}\n\n\t\t// receive channel\n\t\tif ok {\n\t\t\tselect {\n\t\t\tcase ret := <-wr.retc:\n\t\t\t\treturn ret\n\t\t\tcase <-ctx.Done():\n\t\t\tcase <-donec:\n\t\t\t\tif wgs.closeErr != nil {\n\t\t\t\t\tcloseCh <- WatchResponse{Canceled: true, closeErr: wgs.closeErr}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// retry; may have dropped stream from no ctxs\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tbreak\n\t}\n\n\tclose(closeCh)\n\treturn closeCh\n}\n\nfunc (w *watcher) Close() (err error) {\n\tw.mu.Lock()\n\tstreams := w.streams\n\tw.streams = nil\n\tw.mu.Unlock()\n\tfor _, wgs := range streams {\n\t\tif werr := wgs.close(); werr != nil {\n\t\t\terr = werr\n\t\t}\n\t}\n\t// Consider context.Canceled as a successful close\n\tif err == context.Canceled {\n\t\terr = nil\n\t}\n\treturn err\n}\n\n// RequestProgress requests a progress notify response be sent in all watch channels.\nfunc (w *watcher) RequestProgress(ctx context.Context) (err error) {\n\tctxKey := streamKeyFromCtx(ctx)\n\n\tw.mu.Lock()\n\tif w.streams == nil {\n\t\tw.mu.Unlock()\n\t\treturn fmt.Errorf(\"no stream found for context\")\n\t}\n\twgs := w.streams[ctxKey]\n\tif wgs == nil {\n\t\twgs = w.newWatcherGrpcStream(ctx)\n\t\tw.streams[ctxKey] = wgs\n\t}\n\tdonec := wgs.donec\n\treqc := wgs.reqc\n\tw.mu.Unlock()\n\n\tpr := &progressRequest{}\n\n\tselect {\n\tcase reqc <- pr:\n\t\treturn nil\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\tcase <-donec:\n\t\tif wgs.closeErr != nil {\n\t\t\treturn wgs.closeErr\n\t\t}\n\t\t// retry; may have dropped stream from no ctxs\n\t\treturn w.RequestProgress(ctx)\n\t}\n}\n\nfunc (w *watchGrpcStream) close() (err error) {\n\tw.cancel()\n\t<-w.donec\n\tselect {\n\tcase err = <-w.errc:\n\tdefault:\n\t}\n\treturn toErr(w.ctx, err)\n}\n\nfunc (w *watcher) closeStream(wgs *watchGrpcStream) {\n\tw.mu.Lock()\n\tclose(wgs.donec)\n\twgs.cancel()\n\tif w.streams != nil {\n\t\tdelete(w.streams, wgs.ctxKey)\n\t}\n\tw.mu.Unlock()\n}\n\nfunc (w *watchGrpcStream) addSubstream(resp *pb.WatchResponse, ws *watcherStream) {\n\t// check watch ID for backward compatibility (<= v3.3)\n\tif resp.WatchId == InvalidWatchID || (resp.Canceled && resp.CancelReason != \"\") {\n\t\tw.closeErr = v3rpc.Error(errors.New(resp.CancelReason))\n\t\t// failed; no channel\n\t\tclose(ws.recvc)\n\t\treturn\n\t}\n\tws.id = resp.WatchId\n\tw.substreams[ws.id] = ws\n}\n\nfunc (w *watchGrpcStream) sendCloseSubstream(ws *watcherStream, resp *WatchResponse) {\n\tselect {\n\tcase ws.outc <- *resp:\n\tcase <-ws.initReq.ctx.Done():\n\tcase <-time.After(closeSendErrTimeout):\n\t}\n\tclose(ws.outc)\n}\n\nfunc (w *watchGrpcStream) closeSubstream(ws *watcherStream) {\n\t// send channel response in case stream was never established\n\tselect {\n\tcase ws.initReq.retc <- ws.outc:\n\tdefault:\n\t}\n\t// close subscriber's channel\n\tif closeErr := w.closeErr; closeErr != nil && ws.initReq.ctx.Err() == nil {\n\t\tgo w.sendCloseSubstream(ws, &WatchResponse{Canceled: true, closeErr: w.closeErr})\n\t} else if ws.outc != nil {\n\t\tclose(ws.outc)\n\t}\n\tif ws.id != InvalidWatchID {\n\t\tdelete(w.substreams, ws.id)\n\t\treturn\n\t}\n\tfor i := range w.resuming {\n\t\tif w.resuming[i] == ws {\n\t\t\tw.resuming[i] = nil\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// run is the root of the goroutines for managing a watcher client\nfunc (w *watchGrpcStream) run() {\n\tvar wc pb.Watch_WatchClient\n\tvar closeErr error\n\n\t// substreams marked to close but goroutine still running; needed for\n\t// avoiding double-closing recvc on grpc stream teardown\n\tclosing := make(map[*watcherStream]struct{})\n\n\tdefer func() {\n\t\tw.closeErr = closeErr\n\t\t// shutdown substreams and resuming substreams\n\t\tfor _, ws := range w.substreams {\n\t\t\tif _, ok := closing[ws]; !ok {\n\t\t\t\tclose(ws.recvc)\n\t\t\t\tclosing[ws] = struct{}{}\n\t\t\t}\n\t\t}\n\t\tfor _, ws := range w.resuming {\n\t\t\tif _, ok := closing[ws]; ws != nil && !ok {\n\t\t\t\tclose(ws.recvc)\n\t\t\t\tclosing[ws] = struct{}{}\n\t\t\t}\n\t\t}\n\t\tw.joinSubstreams()\n\t\tfor range closing {\n\t\t\tw.closeSubstream(<-w.closingc)\n\t\t}\n\t\tw.wg.Wait()\n\t\tw.owner.closeStream(w)\n\t}()\n\n\t// start a stream with the etcd grpc server\n\tif wc, closeErr = w.newWatchClient(); closeErr != nil {\n\t\treturn\n\t}\n\n\tcancelSet := make(map[int64]struct{})\n\n\tvar cur *pb.WatchResponse\n\tbackoff := time.Millisecond\n\tfor {\n\t\tselect {\n\t\t// Watch() requested\n\t\tcase req := <-w.reqc:\n\t\t\tswitch wreq := req.(type) {\n\t\t\tcase *watchRequest:\n\t\t\t\toutc := make(chan WatchResponse, 1)\n\t\t\t\t// TODO: pass custom watch ID?\n\t\t\t\tws := &watcherStream{\n\t\t\t\t\tinitReq: *wreq,\n\t\t\t\t\tid:      InvalidWatchID,\n\t\t\t\t\toutc:    outc,\n\t\t\t\t\t// unbuffered so resumes won't cause repeat events\n\t\t\t\t\trecvc: make(chan *WatchResponse),\n\t\t\t\t}\n\n\t\t\t\tws.donec = make(chan struct{})\n\t\t\t\tw.wg.Add(1)\n\t\t\t\tgo w.serveSubstream(ws, w.resumec)\n\n\t\t\t\t// queue up for watcher creation/resume\n\t\t\t\tw.resuming = append(w.resuming, ws)\n\t\t\t\tif len(w.resuming) == 1 {\n\t\t\t\t\t// head of resume queue, can register a new watcher\n\t\t\t\t\tif err := wc.Send(ws.initReq.toPB()); err != nil {\n\t\t\t\t\t\tw.lg.Debug(\"error when sending request\", zap.Error(err))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase *progressRequest:\n\t\t\t\tif err := wc.Send(wreq.toPB()); err != nil {\n\t\t\t\t\tw.lg.Debug(\"error when sending request\", zap.Error(err))\n\t\t\t\t}\n\t\t\t}\n\n\t\t// new events from the watch client\n\t\tcase pbresp := <-w.respc:\n\t\t\tif cur == nil || pbresp.Created || pbresp.Canceled {\n\t\t\t\tcur = pbresp\n\t\t\t} else if cur != nil && cur.WatchId == pbresp.WatchId {\n\t\t\t\t// merge new events\n\t\t\t\tcur.Events = append(cur.Events, pbresp.Events...)\n\t\t\t\t// update \"Fragment\" field; last response with \"Fragment\" == false\n\t\t\t\tcur.Fragment = pbresp.Fragment\n\t\t\t}\n\n\t\t\tswitch {\n\t\t\tcase pbresp.Created:\n\t\t\t\t// response to head of queue creation\n\t\t\t\tif len(w.resuming) != 0 {\n\t\t\t\t\tif ws := w.resuming[0]; ws != nil {\n\t\t\t\t\t\tw.addSubstream(pbresp, ws)\n\t\t\t\t\t\tw.dispatchEvent(pbresp)\n\t\t\t\t\t\tw.resuming[0] = nil\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ws := w.nextResume(); ws != nil {\n\t\t\t\t\tif err := wc.Send(ws.initReq.toPB()); err != nil {\n\t\t\t\t\t\tw.lg.Debug(\"error when sending request\", zap.Error(err))\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// reset for next iteration\n\t\t\t\tcur = nil\n\n\t\t\tcase pbresp.Canceled && pbresp.CompactRevision == 0:\n\t\t\t\tdelete(cancelSet, pbresp.WatchId)\n\t\t\t\tif ws, ok := w.substreams[pbresp.WatchId]; ok {\n\t\t\t\t\t// signal to stream goroutine to update closingc\n\t\t\t\t\tclose(ws.recvc)\n\t\t\t\t\tclosing[ws] = struct{}{}\n\t\t\t\t}\n\n\t\t\t\t// reset for next iteration\n\t\t\t\tcur = nil\n\n\t\t\tcase cur.Fragment:\n\t\t\t\t// watch response events are still fragmented\n\t\t\t\t// continue to fetch next fragmented event arrival\n\t\t\t\tcontinue\n\n\t\t\tdefault:\n\t\t\t\t// dispatch to appropriate watch stream\n\t\t\t\tok := w.dispatchEvent(cur)\n\n\t\t\t\t// reset for next iteration\n\t\t\t\tcur = nil\n\n\t\t\t\tif ok {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\t// watch response on unexpected watch id; cancel id\n\t\t\t\tif _, ok := cancelSet[pbresp.WatchId]; ok {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcancelSet[pbresp.WatchId] = struct{}{}\n\t\t\t\tcr := &pb.WatchRequest_CancelRequest{\n\t\t\t\t\tCancelRequest: &pb.WatchCancelRequest{\n\t\t\t\t\t\tWatchId: pbresp.WatchId,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\treq := &pb.WatchRequest{RequestUnion: cr}\n\t\t\t\tw.lg.Debug(\"sending watch cancel request for failed dispatch\", zap.Int64(\"watch-id\", pbresp.WatchId))\n\t\t\t\tif err := wc.Send(req); err != nil {\n\t\t\t\t\tw.lg.Debug(\"failed to send watch cancel request\", zap.Int64(\"watch-id\", pbresp.WatchId), zap.Error(err))\n\t\t\t\t}\n\t\t\t}\n\n\t\t// watch client failed on Recv; spawn another if possible\n\t\tcase err := <-w.errc:\n\t\t\tif isHaltErr(w.ctx, err) || toErr(w.ctx, err) == v3rpc.ErrNoLeader {\n\t\t\t\tcloseErr = err\n\t\t\t\treturn\n\t\t\t}\n\t\t\tbackoff = w.backoffIfUnavailable(backoff, err)\n\t\t\tif wc, closeErr = w.newWatchClient(); closeErr != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ws := w.nextResume(); ws != nil {\n\t\t\t\tif err := wc.Send(ws.initReq.toPB()); err != nil {\n\t\t\t\t\tw.lg.Debug(\"error when sending request\", zap.Error(err))\n\t\t\t\t}\n\t\t\t}\n\t\t\tcancelSet = make(map[int64]struct{})\n\n\t\tcase <-w.ctx.Done():\n\t\t\treturn\n\n\t\tcase ws := <-w.closingc:\n\t\t\tw.closeSubstream(ws)\n\t\t\tdelete(closing, ws)\n\t\t\t// no more watchers on this stream, shutdown, skip cancellation\n\t\t\tif len(w.substreams)+len(w.resuming) == 0 {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ws.id != InvalidWatchID {\n\t\t\t\t// client is closing an established watch; close it on the server proactively instead of waiting\n\t\t\t\t// to close when the next message arrives\n\t\t\t\tcancelSet[ws.id] = struct{}{}\n\t\t\t\tcr := &pb.WatchRequest_CancelRequest{\n\t\t\t\t\tCancelRequest: &pb.WatchCancelRequest{\n\t\t\t\t\t\tWatchId: ws.id,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\treq := &pb.WatchRequest{RequestUnion: cr}\n\t\t\t\tw.lg.Debug(\"sending watch cancel request for closed watcher\", zap.Int64(\"watch-id\", ws.id))\n\t\t\t\tif err := wc.Send(req); err != nil {\n\t\t\t\t\tw.lg.Debug(\"failed to send watch cancel request\", zap.Int64(\"watch-id\", ws.id), zap.Error(err))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// nextResume chooses the next resuming to register with the grpc stream. Abandoned\n// streams are marked as nil in the queue since the head must wait for its inflight registration.\nfunc (w *watchGrpcStream) nextResume() *watcherStream {\n\tfor len(w.resuming) != 0 {\n\t\tif w.resuming[0] != nil {\n\t\t\treturn w.resuming[0]\n\t\t}\n\t\tw.resuming = w.resuming[1:len(w.resuming)]\n\t}\n\treturn nil\n}\n\n// dispatchEvent sends a WatchResponse to the appropriate watcher stream\nfunc (w *watchGrpcStream) dispatchEvent(pbresp *pb.WatchResponse) bool {\n\tevents := make([]*Event, len(pbresp.Events))\n\tfor i, ev := range pbresp.Events {\n\t\tevents[i] = (*Event)(ev)\n\t}\n\t// TODO: return watch ID?\n\twr := &WatchResponse{\n\t\tHeader:          *pbresp.Header,\n\t\tEvents:          events,\n\t\tCompactRevision: pbresp.CompactRevision,\n\t\tCreated:         pbresp.Created,\n\t\tCanceled:        pbresp.Canceled,\n\t\tcancelReason:    pbresp.CancelReason,\n\t}\n\n\t// watch IDs are zero indexed, so request notify watch responses are assigned a watch ID of InvalidWatchID to\n\t// indicate they should be broadcast.\n\tif wr.IsProgressNotify() && pbresp.WatchId == InvalidWatchID {\n\t\treturn w.broadcastResponse(wr)\n\t}\n\n\treturn w.unicastResponse(wr, pbresp.WatchId)\n\n}\n\n// broadcastResponse send a watch response to all watch substreams.\nfunc (w *watchGrpcStream) broadcastResponse(wr *WatchResponse) bool {\n\tfor _, ws := range w.substreams {\n\t\tselect {\n\t\tcase ws.recvc <- wr:\n\t\tcase <-ws.donec:\n\t\t}\n\t}\n\treturn true\n}\n\n// unicastResponse sends a watch response to a specific watch substream.\nfunc (w *watchGrpcStream) unicastResponse(wr *WatchResponse, watchId int64) bool {\n\tws, ok := w.substreams[watchId]\n\tif !ok {\n\t\treturn false\n\t}\n\tselect {\n\tcase ws.recvc <- wr:\n\tcase <-ws.donec:\n\t\treturn false\n\t}\n\treturn true\n}\n\n// serveWatchClient forwards messages from the grpc stream to run()\nfunc (w *watchGrpcStream) serveWatchClient(wc pb.Watch_WatchClient) {\n\tfor {\n\t\tresp, err := wc.Recv()\n\t\tif err != nil {\n\t\t\tselect {\n\t\t\tcase w.errc <- err:\n\t\t\tcase <-w.donec:\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\tselect {\n\t\tcase w.respc <- resp:\n\t\tcase <-w.donec:\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// serveSubstream forwards watch responses from run() to the subscriber\nfunc (w *watchGrpcStream) serveSubstream(ws *watcherStream, resumec chan struct{}) {\n\tif ws.closing {\n\t\tpanic(\"created substream goroutine but substream is closing\")\n\t}\n\n\t// nextRev is the minimum expected next revision\n\tnextRev := ws.initReq.rev\n\tresuming := false\n\tdefer func() {\n\t\tif !resuming {\n\t\t\tws.closing = true\n\t\t}\n\t\tclose(ws.donec)\n\t\tif !resuming {\n\t\t\tw.closingc <- ws\n\t\t}\n\t\tw.wg.Done()\n\t}()\n\n\temptyWr := &WatchResponse{}\n\tfor {\n\t\tcurWr := emptyWr\n\t\toutc := ws.outc\n\n\t\tif len(ws.buf) > 0 {\n\t\t\tcurWr = ws.buf[0]\n\t\t} else {\n\t\t\toutc = nil\n\t\t}\n\t\tselect {\n\t\tcase outc <- *curWr:\n\t\t\tif ws.buf[0].Err() != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tws.buf[0] = nil\n\t\t\tws.buf = ws.buf[1:]\n\t\tcase wr, ok := <-ws.recvc:\n\t\t\tif !ok {\n\t\t\t\t// shutdown from closeSubstream\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif wr.Created {\n\t\t\t\tif ws.initReq.retc != nil {\n\t\t\t\t\tws.initReq.retc <- ws.outc\n\t\t\t\t\t// to prevent next write from taking the slot in buffered channel\n\t\t\t\t\t// and posting duplicate create events\n\t\t\t\t\tws.initReq.retc = nil\n\n\t\t\t\t\t// send first creation event only if requested\n\t\t\t\t\tif ws.initReq.createdNotify {\n\t\t\t\t\t\tws.outc <- *wr\n\t\t\t\t\t}\n\t\t\t\t\t// once the watch channel is returned, a current revision\n\t\t\t\t\t// watch must resume at the store revision. This is necessary\n\t\t\t\t\t// for the following case to work as expected:\n\t\t\t\t\t//\twch := m1.Watch(\"a\")\n\t\t\t\t\t//\tm2.Put(\"a\", \"b\")\n\t\t\t\t\t//\t<-wch\n\t\t\t\t\t// If the revision is only bound on the first observed event,\n\t\t\t\t\t// if wch is disconnected before the Put is issued, then reconnects\n\t\t\t\t\t// after it is committed, it'll miss the Put.\n\t\t\t\t\tif ws.initReq.rev == 0 {\n\t\t\t\t\t\tnextRev = wr.Header.Revision\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// current progress of watch; <= store revision\n\t\t\t\tnextRev = wr.Header.Revision + 1\n\t\t\t}\n\n\t\t\tif len(wr.Events) > 0 {\n\t\t\t\tnextRev = wr.Events[len(wr.Events)-1].Kv.ModRevision + 1\n\t\t\t}\n\t\t\tws.initReq.rev = nextRev\n\n\t\t\t// created event is already sent above,\n\t\t\t// watcher should not post duplicate events\n\t\t\tif wr.Created {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// TODO pause channel if buffer gets too large\n\t\t\tws.buf = append(ws.buf, wr)\n\t\tcase <-w.ctx.Done():\n\t\t\treturn\n\t\tcase <-ws.initReq.ctx.Done():\n\t\t\treturn\n\t\tcase <-resumec:\n\t\t\tresuming = true\n\t\t\treturn\n\t\t}\n\t}\n\t// lazily send cancel message if events on missing id\n}\n\nfunc (w *watchGrpcStream) newWatchClient() (pb.Watch_WatchClient, error) {\n\t// mark all substreams as resuming\n\tclose(w.resumec)\n\tw.resumec = make(chan struct{})\n\tw.joinSubstreams()\n\tfor _, ws := range w.substreams {\n\t\tws.id = InvalidWatchID\n\t\tw.resuming = append(w.resuming, ws)\n\t}\n\t// strip out nils, if any\n\tvar resuming []*watcherStream\n\tfor _, ws := range w.resuming {\n\t\tif ws != nil {\n\t\t\tresuming = append(resuming, ws)\n\t\t}\n\t}\n\tw.resuming = resuming\n\tw.substreams = make(map[int64]*watcherStream)\n\n\t// connect to grpc stream while accepting watcher cancelation\n\tstopc := make(chan struct{})\n\tdonec := w.waitCancelSubstreams(stopc)\n\twc, err := w.openWatchClient()\n\tclose(stopc)\n\t<-donec\n\n\t// serve all non-closing streams, even if there's a client error\n\t// so that the teardown path can shutdown the streams as expected.\n\tfor _, ws := range w.resuming {\n\t\tif ws.closing {\n\t\t\tcontinue\n\t\t}\n\t\tws.donec = make(chan struct{})\n\t\tw.wg.Add(1)\n\t\tgo w.serveSubstream(ws, w.resumec)\n\t}\n\n\tif err != nil {\n\t\treturn nil, v3rpc.Error(err)\n\t}\n\n\t// receive data from new grpc stream\n\tgo w.serveWatchClient(wc)\n\treturn wc, nil\n}\n\nfunc (w *watchGrpcStream) waitCancelSubstreams(stopc <-chan struct{}) <-chan struct{} {\n\tvar wg sync.WaitGroup\n\twg.Add(len(w.resuming))\n\tdonec := make(chan struct{})\n\tfor i := range w.resuming {\n\t\tgo func(ws *watcherStream) {\n\t\t\tdefer wg.Done()\n\t\t\tif ws.closing {\n\t\t\t\tif ws.initReq.ctx.Err() != nil && ws.outc != nil {\n\t\t\t\t\tclose(ws.outc)\n\t\t\t\t\tws.outc = nil\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tselect {\n\t\t\tcase <-ws.initReq.ctx.Done():\n\t\t\t\t// closed ws will be removed from resuming\n\t\t\t\tws.closing = true\n\t\t\t\tclose(ws.outc)\n\t\t\t\tws.outc = nil\n\t\t\t\tw.wg.Add(1)\n\t\t\t\tgo func() {\n\t\t\t\t\tdefer w.wg.Done()\n\t\t\t\t\tw.closingc <- ws\n\t\t\t\t}()\n\t\t\tcase <-stopc:\n\t\t\t}\n\t\t}(w.resuming[i])\n\t}\n\tgo func() {\n\t\tdefer close(donec)\n\t\twg.Wait()\n\t}()\n\treturn donec\n}\n\n// joinSubstreams waits for all substream goroutines to complete.\nfunc (w *watchGrpcStream) joinSubstreams() {\n\tfor _, ws := range w.substreams {\n\t\t<-ws.donec\n\t}\n\tfor _, ws := range w.resuming {\n\t\tif ws != nil {\n\t\t\t<-ws.donec\n\t\t}\n\t}\n}\n\nvar maxBackoff = 100 * time.Millisecond\n\nfunc (w *watchGrpcStream) backoffIfUnavailable(backoff time.Duration, err error) time.Duration {\n\tif isUnavailableErr(w.ctx, err) {\n\t\t// retry, but backoff\n\t\tif backoff < maxBackoff {\n\t\t\t// 25% backoff factor\n\t\t\tbackoff = backoff + backoff/4\n\t\t\tif backoff > maxBackoff {\n\t\t\t\tbackoff = maxBackoff\n\t\t\t}\n\t\t}\n\t\ttime.Sleep(backoff)\n\t}\n\treturn backoff\n}\n\n// openWatchClient retries opening a watch client until success or halt.\n// manually retry in case \"ws==nil && err==nil\"\n// TODO: remove FailFast=false\nfunc (w *watchGrpcStream) openWatchClient() (ws pb.Watch_WatchClient, err error) {\n\tbackoff := time.Millisecond\n\tfor {\n\t\tselect {\n\t\tcase <-w.ctx.Done():\n\t\t\tif err == nil {\n\t\t\t\treturn nil, w.ctx.Err()\n\t\t\t}\n\t\t\treturn nil, err\n\t\tdefault:\n\t\t}\n\t\tif ws, err = w.remote.Watch(w.ctx, w.callOpts...); ws != nil && err == nil {\n\t\t\tbreak\n\t\t}\n\t\tif isHaltErr(w.ctx, err) {\n\t\t\treturn nil, v3rpc.Error(err)\n\t\t}\n\t\tbackoff = w.backoffIfUnavailable(backoff, err)\n\t}\n\treturn ws, nil\n}\n\n// toPB converts an internal watch request structure to its protobuf WatchRequest structure.\nfunc (wr *watchRequest) toPB() *pb.WatchRequest {\n\treq := &pb.WatchCreateRequest{\n\t\tStartRevision:  wr.rev,\n\t\tKey:            []byte(wr.key),\n\t\tRangeEnd:       []byte(wr.end),\n\t\tProgressNotify: wr.progressNotify,\n\t\tFilters:        wr.filters,\n\t\tPrevKv:         wr.prevKV,\n\t\tFragment:       wr.fragment,\n\t}\n\tcr := &pb.WatchRequest_CreateRequest{CreateRequest: req}\n\treturn &pb.WatchRequest{RequestUnion: cr}\n}\n\n// toPB converts an internal progress request structure to its protobuf WatchRequest structure.\nfunc (pr *progressRequest) toPB() *pb.WatchRequest {\n\treq := &pb.WatchProgressRequest{}\n\tcr := &pb.WatchRequest_ProgressRequest{ProgressRequest: req}\n\treturn &pb.WatchRequest{RequestUnion: cr}\n}\n\nfunc streamKeyFromCtx(ctx context.Context) string {\n\tif md, ok := metadata.FromOutgoingContext(ctx); ok {\n\t\treturn fmt.Sprintf(\"%+v\", md)\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/LICENSE",
    "content": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/pbkdf2/pbkdf2.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/*\nPackage pbkdf2 implements the key derivation function PBKDF2 as defined in RFC\n2898 / PKCS #5 v2.0.\n\nA key derivation function is useful when encrypting data based on a password\nor any other not-fully-random data. It uses a pseudorandom function to derive\na secure encryption key based on the password.\n\nWhile v2.0 of the standard defines only one pseudorandom function to use,\nHMAC-SHA1, the drafted v2.1 specification allows use of all five FIPS Approved\nHash Functions SHA-1, SHA-224, SHA-256, SHA-384 and SHA-512 for HMAC. To\nchoose, you can pass the `New` functions from the different SHA packages to\npbkdf2.Key.\n*/\npackage pbkdf2 // import \"golang.org/x/crypto/pbkdf2\"\n\nimport (\n\t\"crypto/hmac\"\n\t\"hash\"\n)\n\n// Key derives a key from the password, salt and iteration count, returning a\n// []byte of length keylen that can be used as cryptographic key. The key is\n// derived based on the method described as PBKDF2 with the HMAC variant using\n// the supplied hash function.\n//\n// For example, to use a HMAC-SHA-1 based PBKDF2 key derivation function, you\n// can get a derived key for e.g. AES-256 (which needs a 32-byte key) by\n// doing:\n//\n//\tdk := pbkdf2.Key([]byte(\"some password\"), salt, 4096, 32, sha1.New)\n//\n// Remember to get a good random salt. At least 8 bytes is recommended by the\n// RFC.\n//\n// Using a higher iteration count will increase the cost of an exhaustive\n// search but will also make derivation proportionally slower.\nfunc Key(password, salt []byte, iter, keyLen int, h func() hash.Hash) []byte {\n\tprf := hmac.New(h, password)\n\thashLen := prf.Size()\n\tnumBlocks := (keyLen + hashLen - 1) / hashLen\n\n\tvar buf [4]byte\n\tdk := make([]byte, 0, numBlocks*hashLen)\n\tU := make([]byte, hashLen)\n\tfor block := 1; block <= numBlocks; block++ {\n\t\t// N.B.: || means concatenation, ^ means XOR\n\t\t// for each block T_i = U_1 ^ U_2 ^ ... ^ U_iter\n\t\t// U_1 = PRF(password, salt || uint(i))\n\t\tprf.Reset()\n\t\tprf.Write(salt)\n\t\tbuf[0] = byte(block >> 24)\n\t\tbuf[1] = byte(block >> 16)\n\t\tbuf[2] = byte(block >> 8)\n\t\tbuf[3] = byte(block)\n\t\tprf.Write(buf[:4])\n\t\tdk = prf.Sum(dk)\n\t\tT := dk[len(dk)-hashLen:]\n\t\tcopy(U, T)\n\n\t\t// U_n = PRF(password, U_(n-1))\n\t\tfor n := 2; n <= iter; n++ {\n\t\t\tprf.Reset()\n\t\t\tprf.Write(U)\n\t\t\tU = U[:0]\n\t\t\tU = prf.Sum(U)\n\t\t\tfor x := range U {\n\t\t\t\tT[x] ^= U[x]\n\t\t\t}\n\t\t}\n\t}\n\treturn dk[:keyLen]\n}\n"
  },
  {
    "path": "vendor/golang.org/x/exp/LICENSE",
    "content": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/exp/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/exp/constraints/constraints.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// Package constraints defines a set of useful constraints to be used\n// with type parameters.\npackage constraints\n\n// Signed is a constraint that permits any signed integer type.\n// If future releases of Go add new predeclared signed integer types,\n// this constraint will be modified to include them.\ntype Signed interface {\n\t~int | ~int8 | ~int16 | ~int32 | ~int64\n}\n\n// Unsigned is a constraint that permits any unsigned integer type.\n// If future releases of Go add new predeclared unsigned integer types,\n// this constraint will be modified to include them.\ntype Unsigned interface {\n\t~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr\n}\n\n// Integer is a constraint that permits any integer type.\n// If future releases of Go add new predeclared integer types,\n// this constraint will be modified to include them.\ntype Integer interface {\n\tSigned | Unsigned\n}\n\n// Float is a constraint that permits any floating-point type.\n// If future releases of Go add new predeclared floating-point types,\n// this constraint will be modified to include them.\ntype Float interface {\n\t~float32 | ~float64\n}\n\n// Complex is a constraint that permits any complex numeric type.\n// If future releases of Go add new predeclared complex numeric types,\n// this constraint will be modified to include them.\ntype Complex interface {\n\t~complex64 | ~complex128\n}\n\n// Ordered is a constraint that permits any ordered type: any type\n// that supports the operators < <= >= >.\n// If future releases of Go add new ordered types,\n// this constraint will be modified to include them.\ntype Ordered interface {\n\tInteger | Float | ~string\n}\n"
  },
  {
    "path": "vendor/golang.org/x/exp/slices/cmp.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 slices\n\nimport \"golang.org/x/exp/constraints\"\n\n// min is a version of the predeclared function from the Go 1.21 release.\nfunc min[T constraints.Ordered](a, b T) T {\n\tif a < b || isNaN(a) {\n\t\treturn a\n\t}\n\treturn b\n}\n\n// max is a version of the predeclared function from the Go 1.21 release.\nfunc max[T constraints.Ordered](a, b T) T {\n\tif a > b || isNaN(a) {\n\t\treturn a\n\t}\n\treturn b\n}\n\n// cmpLess is a copy of cmp.Less from the Go 1.21 release.\nfunc cmpLess[T constraints.Ordered](x, y T) bool {\n\treturn (isNaN(x) && !isNaN(y)) || x < y\n}\n\n// cmpCompare is a copy of cmp.Compare from the Go 1.21 release.\nfunc cmpCompare[T constraints.Ordered](x, y T) int {\n\txNaN := isNaN(x)\n\tyNaN := isNaN(y)\n\tif xNaN && yNaN {\n\t\treturn 0\n\t}\n\tif xNaN || x < y {\n\t\treturn -1\n\t}\n\tif yNaN || x > y {\n\t\treturn +1\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/golang.org/x/exp/slices/slices.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// Package slices defines various functions useful with slices of any type.\npackage slices\n\nimport (\n\t\"unsafe\"\n\n\t\"golang.org/x/exp/constraints\"\n)\n\n// Equal reports whether two slices are equal: the same length and all\n// elements equal. If the lengths are different, Equal returns false.\n// Otherwise, the elements are compared in increasing index order, and the\n// comparison stops at the first unequal pair.\n// Floating point NaNs are not considered equal.\nfunc Equal[S ~[]E, E comparable](s1, s2 S) bool {\n\tif len(s1) != len(s2) {\n\t\treturn false\n\t}\n\tfor i := range s1 {\n\t\tif s1[i] != s2[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// EqualFunc reports whether two slices are equal using an equality\n// function on each pair of elements. If the lengths are different,\n// EqualFunc returns false. Otherwise, the elements are compared in\n// increasing index order, and the comparison stops at the first index\n// for which eq returns false.\nfunc EqualFunc[S1 ~[]E1, S2 ~[]E2, E1, E2 any](s1 S1, s2 S2, eq func(E1, E2) bool) bool {\n\tif len(s1) != len(s2) {\n\t\treturn false\n\t}\n\tfor i, v1 := range s1 {\n\t\tv2 := s2[i]\n\t\tif !eq(v1, v2) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Compare compares the elements of s1 and s2, using [cmp.Compare] on each pair\n// of elements. The elements are compared sequentially, starting at index 0,\n// until one element is not equal to the other.\n// The result of comparing the first non-matching elements is returned.\n// If both slices are equal until one of them ends, the shorter slice is\n// considered less than the longer one.\n// The result is 0 if s1 == s2, -1 if s1 < s2, and +1 if s1 > s2.\nfunc Compare[S ~[]E, E constraints.Ordered](s1, s2 S) int {\n\tfor i, v1 := range s1 {\n\t\tif i >= len(s2) {\n\t\t\treturn +1\n\t\t}\n\t\tv2 := s2[i]\n\t\tif c := cmpCompare(v1, v2); c != 0 {\n\t\t\treturn c\n\t\t}\n\t}\n\tif len(s1) < len(s2) {\n\t\treturn -1\n\t}\n\treturn 0\n}\n\n// CompareFunc is like [Compare] but uses a custom comparison function on each\n// pair of elements.\n// The result is the first non-zero result of cmp; if cmp always\n// returns 0 the result is 0 if len(s1) == len(s2), -1 if len(s1) < len(s2),\n// and +1 if len(s1) > len(s2).\nfunc CompareFunc[S1 ~[]E1, S2 ~[]E2, E1, E2 any](s1 S1, s2 S2, cmp func(E1, E2) int) int {\n\tfor i, v1 := range s1 {\n\t\tif i >= len(s2) {\n\t\t\treturn +1\n\t\t}\n\t\tv2 := s2[i]\n\t\tif c := cmp(v1, v2); c != 0 {\n\t\t\treturn c\n\t\t}\n\t}\n\tif len(s1) < len(s2) {\n\t\treturn -1\n\t}\n\treturn 0\n}\n\n// Index returns the index of the first occurrence of v in s,\n// or -1 if not present.\nfunc Index[S ~[]E, E comparable](s S, v E) int {\n\tfor i := range s {\n\t\tif v == s[i] {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// IndexFunc returns the first index i satisfying f(s[i]),\n// or -1 if none do.\nfunc IndexFunc[S ~[]E, E any](s S, f func(E) bool) int {\n\tfor i := range s {\n\t\tif f(s[i]) {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// Contains reports whether v is present in s.\nfunc Contains[S ~[]E, E comparable](s S, v E) bool {\n\treturn Index(s, v) >= 0\n}\n\n// ContainsFunc reports whether at least one\n// element e of s satisfies f(e).\nfunc ContainsFunc[S ~[]E, E any](s S, f func(E) bool) bool {\n\treturn IndexFunc(s, f) >= 0\n}\n\n// Insert inserts the values v... into s at index i,\n// returning the modified slice.\n// The elements at s[i:] are shifted up to make room.\n// In the returned slice r, r[i] == v[0],\n// and r[i+len(v)] == value originally at r[i].\n// Insert panics if i is out of range.\n// This function is O(len(s) + len(v)).\nfunc Insert[S ~[]E, E any](s S, i int, v ...E) S {\n\tm := len(v)\n\tif m == 0 {\n\t\treturn s\n\t}\n\tn := len(s)\n\tif i == n {\n\t\treturn append(s, v...)\n\t}\n\tif n+m > cap(s) {\n\t\t// Use append rather than make so that we bump the size of\n\t\t// the slice up to the next storage class.\n\t\t// This is what Grow does but we don't call Grow because\n\t\t// that might copy the values twice.\n\t\ts2 := append(s[:i], make(S, n+m-i)...)\n\t\tcopy(s2[i:], v)\n\t\tcopy(s2[i+m:], s[i:])\n\t\treturn s2\n\t}\n\ts = s[:n+m]\n\n\t// before:\n\t// s: aaaaaaaabbbbccccccccdddd\n\t//            ^   ^       ^   ^\n\t//            i  i+m      n  n+m\n\t// after:\n\t// s: aaaaaaaavvvvbbbbcccccccc\n\t//            ^   ^       ^   ^\n\t//            i  i+m      n  n+m\n\t//\n\t// a are the values that don't move in s.\n\t// v are the values copied in from v.\n\t// b and c are the values from s that are shifted up in index.\n\t// d are the values that get overwritten, never to be seen again.\n\n\tif !overlaps(v, s[i+m:]) {\n\t\t// Easy case - v does not overlap either the c or d regions.\n\t\t// (It might be in some of a or b, or elsewhere entirely.)\n\t\t// The data we copy up doesn't write to v at all, so just do it.\n\n\t\tcopy(s[i+m:], s[i:])\n\n\t\t// Now we have\n\t\t// s: aaaaaaaabbbbbbbbcccccccc\n\t\t//            ^   ^       ^   ^\n\t\t//            i  i+m      n  n+m\n\t\t// Note the b values are duplicated.\n\n\t\tcopy(s[i:], v)\n\n\t\t// Now we have\n\t\t// s: aaaaaaaavvvvbbbbcccccccc\n\t\t//            ^   ^       ^   ^\n\t\t//            i  i+m      n  n+m\n\t\t// That's the result we want.\n\t\treturn s\n\t}\n\n\t// The hard case - v overlaps c or d. We can't just shift up\n\t// the data because we'd move or clobber the values we're trying\n\t// to insert.\n\t// So instead, write v on top of d, then rotate.\n\tcopy(s[n:], v)\n\n\t// Now we have\n\t// s: aaaaaaaabbbbccccccccvvvv\n\t//            ^   ^       ^   ^\n\t//            i  i+m      n  n+m\n\n\trotateRight(s[i:], m)\n\n\t// Now we have\n\t// s: aaaaaaaavvvvbbbbcccccccc\n\t//            ^   ^       ^   ^\n\t//            i  i+m      n  n+m\n\t// That's the result we want.\n\treturn s\n}\n\n// Delete removes the elements s[i:j] from s, returning the modified slice.\n// Delete panics if s[i:j] is not a valid slice of s.\n// Delete is O(len(s)-j), so if many items must be deleted, it is better to\n// make a single call deleting them all together than to delete one at a time.\n// Delete might not modify the elements s[len(s)-(j-i):len(s)]. If those\n// elements contain pointers you might consider zeroing those elements so that\n// objects they reference can be garbage collected.\nfunc Delete[S ~[]E, E any](s S, i, j int) S {\n\t_ = s[i:j] // bounds check\n\n\treturn append(s[:i], s[j:]...)\n}\n\n// DeleteFunc removes any elements from s for which del returns true,\n// returning the modified slice.\n// When DeleteFunc removes m elements, it might not modify the elements\n// s[len(s)-m:len(s)]. If those elements contain pointers you might consider\n// zeroing those elements so that objects they reference can be garbage\n// collected.\nfunc DeleteFunc[S ~[]E, E any](s S, del func(E) bool) S {\n\ti := IndexFunc(s, del)\n\tif i == -1 {\n\t\treturn s\n\t}\n\t// Don't start copying elements until we find one to delete.\n\tfor j := i + 1; j < len(s); j++ {\n\t\tif v := s[j]; !del(v) {\n\t\t\ts[i] = v\n\t\t\ti++\n\t\t}\n\t}\n\treturn s[:i]\n}\n\n// Replace replaces the elements s[i:j] by the given v, and returns the\n// modified slice. Replace panics if s[i:j] is not a valid slice of s.\nfunc Replace[S ~[]E, E any](s S, i, j int, v ...E) S {\n\t_ = s[i:j] // verify that i:j is a valid subslice\n\n\tif i == j {\n\t\treturn Insert(s, i, v...)\n\t}\n\tif j == len(s) {\n\t\treturn append(s[:i], v...)\n\t}\n\n\ttot := len(s[:i]) + len(v) + len(s[j:])\n\tif tot > cap(s) {\n\t\t// Too big to fit, allocate and copy over.\n\t\ts2 := append(s[:i], make(S, tot-i)...) // See Insert\n\t\tcopy(s2[i:], v)\n\t\tcopy(s2[i+len(v):], s[j:])\n\t\treturn s2\n\t}\n\n\tr := s[:tot]\n\n\tif i+len(v) <= j {\n\t\t// Easy, as v fits in the deleted portion.\n\t\tcopy(r[i:], v)\n\t\tif i+len(v) != j {\n\t\t\tcopy(r[i+len(v):], s[j:])\n\t\t}\n\t\treturn r\n\t}\n\n\t// We are expanding (v is bigger than j-i).\n\t// The situation is something like this:\n\t// (example has i=4,j=8,len(s)=16,len(v)=6)\n\t// s: aaaaxxxxbbbbbbbbyy\n\t//        ^   ^       ^ ^\n\t//        i   j  len(s) tot\n\t// a: prefix of s\n\t// x: deleted range\n\t// b: more of s\n\t// y: area to expand into\n\n\tif !overlaps(r[i+len(v):], v) {\n\t\t// Easy, as v is not clobbered by the first copy.\n\t\tcopy(r[i+len(v):], s[j:])\n\t\tcopy(r[i:], v)\n\t\treturn r\n\t}\n\n\t// This is a situation where we don't have a single place to which\n\t// we can copy v. Parts of it need to go to two different places.\n\t// We want to copy the prefix of v into y and the suffix into x, then\n\t// rotate |y| spots to the right.\n\t//\n\t//        v[2:]      v[:2]\n\t//         |           |\n\t// s: aaaavvvvbbbbbbbbvv\n\t//        ^   ^       ^ ^\n\t//        i   j  len(s) tot\n\t//\n\t// If either of those two destinations don't alias v, then we're good.\n\ty := len(v) - (j - i) // length of y portion\n\n\tif !overlaps(r[i:j], v) {\n\t\tcopy(r[i:j], v[y:])\n\t\tcopy(r[len(s):], v[:y])\n\t\trotateRight(r[i:], y)\n\t\treturn r\n\t}\n\tif !overlaps(r[len(s):], v) {\n\t\tcopy(r[len(s):], v[:y])\n\t\tcopy(r[i:j], v[y:])\n\t\trotateRight(r[i:], y)\n\t\treturn r\n\t}\n\n\t// Now we know that v overlaps both x and y.\n\t// That means that the entirety of b is *inside* v.\n\t// So we don't need to preserve b at all; instead we\n\t// can copy v first, then copy the b part of v out of\n\t// v to the right destination.\n\tk := startIdx(v, s[j:])\n\tcopy(r[i:], v)\n\tcopy(r[i+len(v):], r[i+k:])\n\treturn r\n}\n\n// Clone returns a copy of the slice.\n// The elements are copied using assignment, so this is a shallow clone.\nfunc Clone[S ~[]E, E any](s S) S {\n\t// Preserve nil in case it matters.\n\tif s == nil {\n\t\treturn nil\n\t}\n\treturn append(S([]E{}), s...)\n}\n\n// Compact replaces consecutive runs of equal elements with a single copy.\n// This is like the uniq command found on Unix.\n// Compact modifies the contents of the slice s and returns the modified slice,\n// which may have a smaller length.\n// When Compact discards m elements in total, it might not modify the elements\n// s[len(s)-m:len(s)]. If those elements contain pointers you might consider\n// zeroing those elements so that objects they reference can be garbage collected.\nfunc Compact[S ~[]E, E comparable](s S) S {\n\tif len(s) < 2 {\n\t\treturn s\n\t}\n\ti := 1\n\tfor k := 1; k < len(s); k++ {\n\t\tif s[k] != s[k-1] {\n\t\t\tif i != k {\n\t\t\t\ts[i] = s[k]\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t}\n\treturn s[:i]\n}\n\n// CompactFunc is like [Compact] but uses an equality function to compare elements.\n// For runs of elements that compare equal, CompactFunc keeps the first one.\nfunc CompactFunc[S ~[]E, E any](s S, eq func(E, E) bool) S {\n\tif len(s) < 2 {\n\t\treturn s\n\t}\n\ti := 1\n\tfor k := 1; k < len(s); k++ {\n\t\tif !eq(s[k], s[k-1]) {\n\t\t\tif i != k {\n\t\t\t\ts[i] = s[k]\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t}\n\treturn s[:i]\n}\n\n// Grow increases the slice's capacity, if necessary, to guarantee space for\n// another n elements. After Grow(n), at least n elements can be appended\n// to the slice without another allocation. If n is negative or too large to\n// allocate the memory, Grow panics.\nfunc Grow[S ~[]E, E any](s S, n int) S {\n\tif n < 0 {\n\t\tpanic(\"cannot be negative\")\n\t}\n\tif n -= cap(s) - len(s); n > 0 {\n\t\t// TODO(https://go.dev/issue/53888): Make using []E instead of S\n\t\t// to workaround a compiler bug where the runtime.growslice optimization\n\t\t// does not take effect. Revert when the compiler is fixed.\n\t\ts = append([]E(s)[:cap(s)], make([]E, n)...)[:len(s)]\n\t}\n\treturn s\n}\n\n// Clip removes unused capacity from the slice, returning s[:len(s):len(s)].\nfunc Clip[S ~[]E, E any](s S) S {\n\treturn s[:len(s):len(s)]\n}\n\n// Rotation algorithm explanation:\n//\n// rotate left by 2\n// start with\n//   0123456789\n// split up like this\n//   01 234567 89\n// swap first 2 and last 2\n//   89 234567 01\n// join first parts\n//   89234567 01\n// recursively rotate first left part by 2\n//   23456789 01\n// join at the end\n//   2345678901\n//\n// rotate left by 8\n// start with\n//   0123456789\n// split up like this\n//   01 234567 89\n// swap first 2 and last 2\n//   89 234567 01\n// join last parts\n//   89 23456701\n// recursively rotate second part left by 6\n//   89 01234567\n// join at the end\n//   8901234567\n\n// TODO: There are other rotate algorithms.\n// This algorithm has the desirable property that it moves each element exactly twice.\n// The triple-reverse algorithm is simpler and more cache friendly, but takes more writes.\n// The follow-cycles algorithm can be 1-write but it is not very cache friendly.\n\n// rotateLeft rotates b left by n spaces.\n// s_final[i] = s_orig[i+r], wrapping around.\nfunc rotateLeft[E any](s []E, r int) {\n\tfor r != 0 && r != len(s) {\n\t\tif r*2 <= len(s) {\n\t\t\tswap(s[:r], s[len(s)-r:])\n\t\t\ts = s[:len(s)-r]\n\t\t} else {\n\t\t\tswap(s[:len(s)-r], s[r:])\n\t\t\ts, r = s[len(s)-r:], r*2-len(s)\n\t\t}\n\t}\n}\nfunc rotateRight[E any](s []E, r int) {\n\trotateLeft(s, len(s)-r)\n}\n\n// swap swaps the contents of x and y. x and y must be equal length and disjoint.\nfunc swap[E any](x, y []E) {\n\tfor i := 0; i < len(x); i++ {\n\t\tx[i], y[i] = y[i], x[i]\n\t}\n}\n\n// overlaps reports whether the memory ranges a[0:len(a)] and b[0:len(b)] overlap.\nfunc overlaps[E any](a, b []E) bool {\n\tif len(a) == 0 || len(b) == 0 {\n\t\treturn false\n\t}\n\telemSize := unsafe.Sizeof(a[0])\n\tif elemSize == 0 {\n\t\treturn false\n\t}\n\t// TODO: use a runtime/unsafe facility once one becomes available. See issue 12445.\n\t// Also see crypto/internal/alias/alias.go:AnyOverlap\n\treturn uintptr(unsafe.Pointer(&a[0])) <= uintptr(unsafe.Pointer(&b[len(b)-1]))+(elemSize-1) &&\n\t\tuintptr(unsafe.Pointer(&b[0])) <= uintptr(unsafe.Pointer(&a[len(a)-1]))+(elemSize-1)\n}\n\n// startIdx returns the index in haystack where the needle starts.\n// prerequisite: the needle must be aliased entirely inside the haystack.\nfunc startIdx[E any](haystack, needle []E) int {\n\tp := &needle[0]\n\tfor i := range haystack {\n\t\tif p == &haystack[i] {\n\t\t\treturn i\n\t\t}\n\t}\n\t// TODO: what if the overlap is by a non-integral number of Es?\n\tpanic(\"needle not found\")\n}\n\n// Reverse reverses the elements of the slice in place.\nfunc Reverse[S ~[]E, E any](s S) {\n\tfor i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {\n\t\ts[i], s[j] = s[j], s[i]\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/exp/slices/sort.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run $GOROOT/src/sort/gen_sort_variants.go -exp\n\npackage slices\n\nimport (\n\t\"math/bits\"\n\n\t\"golang.org/x/exp/constraints\"\n)\n\n// Sort sorts a slice of any ordered type in ascending order.\n// When sorting floating-point numbers, NaNs are ordered before other values.\nfunc Sort[S ~[]E, E constraints.Ordered](x S) {\n\tn := len(x)\n\tpdqsortOrdered(x, 0, n, bits.Len(uint(n)))\n}\n\n// SortFunc sorts the slice x in ascending order as determined by the cmp\n// function. This sort is not guaranteed to be stable.\n// cmp(a, b) should return a negative number when a < b, a positive number when\n// a > b and zero when a == b.\n//\n// SortFunc requires that cmp is a strict weak ordering.\n// See https://en.wikipedia.org/wiki/Weak_ordering#Strict_weak_orderings.\nfunc SortFunc[S ~[]E, E any](x S, cmp func(a, b E) int) {\n\tn := len(x)\n\tpdqsortCmpFunc(x, 0, n, bits.Len(uint(n)), cmp)\n}\n\n// SortStableFunc sorts the slice x while keeping the original order of equal\n// elements, using cmp to compare elements in the same way as [SortFunc].\nfunc SortStableFunc[S ~[]E, E any](x S, cmp func(a, b E) int) {\n\tstableCmpFunc(x, len(x), cmp)\n}\n\n// IsSorted reports whether x is sorted in ascending order.\nfunc IsSorted[S ~[]E, E constraints.Ordered](x S) bool {\n\tfor i := len(x) - 1; i > 0; i-- {\n\t\tif cmpLess(x[i], x[i-1]) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// IsSortedFunc reports whether x is sorted in ascending order, with cmp as the\n// comparison function as defined by [SortFunc].\nfunc IsSortedFunc[S ~[]E, E any](x S, cmp func(a, b E) int) bool {\n\tfor i := len(x) - 1; i > 0; i-- {\n\t\tif cmp(x[i], x[i-1]) < 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Min returns the minimal value in x. It panics if x is empty.\n// For floating-point numbers, Min propagates NaNs (any NaN value in x\n// forces the output to be NaN).\nfunc Min[S ~[]E, E constraints.Ordered](x S) E {\n\tif len(x) < 1 {\n\t\tpanic(\"slices.Min: empty list\")\n\t}\n\tm := x[0]\n\tfor i := 1; i < len(x); i++ {\n\t\tm = min(m, x[i])\n\t}\n\treturn m\n}\n\n// MinFunc returns the minimal value in x, using cmp to compare elements.\n// It panics if x is empty. If there is more than one minimal element\n// according to the cmp function, MinFunc returns the first one.\nfunc MinFunc[S ~[]E, E any](x S, cmp func(a, b E) int) E {\n\tif len(x) < 1 {\n\t\tpanic(\"slices.MinFunc: empty list\")\n\t}\n\tm := x[0]\n\tfor i := 1; i < len(x); i++ {\n\t\tif cmp(x[i], m) < 0 {\n\t\t\tm = x[i]\n\t\t}\n\t}\n\treturn m\n}\n\n// Max returns the maximal value in x. It panics if x is empty.\n// For floating-point E, Max propagates NaNs (any NaN value in x\n// forces the output to be NaN).\nfunc Max[S ~[]E, E constraints.Ordered](x S) E {\n\tif len(x) < 1 {\n\t\tpanic(\"slices.Max: empty list\")\n\t}\n\tm := x[0]\n\tfor i := 1; i < len(x); i++ {\n\t\tm = max(m, x[i])\n\t}\n\treturn m\n}\n\n// MaxFunc returns the maximal value in x, using cmp to compare elements.\n// It panics if x is empty. If there is more than one maximal element\n// according to the cmp function, MaxFunc returns the first one.\nfunc MaxFunc[S ~[]E, E any](x S, cmp func(a, b E) int) E {\n\tif len(x) < 1 {\n\t\tpanic(\"slices.MaxFunc: empty list\")\n\t}\n\tm := x[0]\n\tfor i := 1; i < len(x); i++ {\n\t\tif cmp(x[i], m) > 0 {\n\t\t\tm = x[i]\n\t\t}\n\t}\n\treturn m\n}\n\n// BinarySearch searches for target in a sorted slice and returns the position\n// where target is found, or the position where target would appear in the\n// sort order; it also returns a bool saying whether the target is really found\n// in the slice. The slice must be sorted in increasing order.\nfunc BinarySearch[S ~[]E, E constraints.Ordered](x S, target E) (int, bool) {\n\t// Inlining is faster than calling BinarySearchFunc with a lambda.\n\tn := len(x)\n\t// Define x[-1] < target and x[n] >= target.\n\t// Invariant: x[i-1] < target, x[j] >= target.\n\ti, j := 0, n\n\tfor i < j {\n\t\th := int(uint(i+j) >> 1) // avoid overflow when computing h\n\t\t// i ≤ h < j\n\t\tif cmpLess(x[h], target) {\n\t\t\ti = h + 1 // preserves x[i-1] < target\n\t\t} else {\n\t\t\tj = h // preserves x[j] >= target\n\t\t}\n\t}\n\t// i == j, x[i-1] < target, and x[j] (= x[i]) >= target  =>  answer is i.\n\treturn i, i < n && (x[i] == target || (isNaN(x[i]) && isNaN(target)))\n}\n\n// BinarySearchFunc works like [BinarySearch], but uses a custom comparison\n// function. The slice must be sorted in increasing order, where \"increasing\"\n// is defined by cmp. cmp should return 0 if the slice element matches\n// the target, a negative number if the slice element precedes the target,\n// or a positive number if the slice element follows the target.\n// cmp must implement the same ordering as the slice, such that if\n// cmp(a, t) < 0 and cmp(b, t) >= 0, then a must precede b in the slice.\nfunc BinarySearchFunc[S ~[]E, E, T any](x S, target T, cmp func(E, T) int) (int, bool) {\n\tn := len(x)\n\t// Define cmp(x[-1], target) < 0 and cmp(x[n], target) >= 0 .\n\t// Invariant: cmp(x[i - 1], target) < 0, cmp(x[j], target) >= 0.\n\ti, j := 0, n\n\tfor i < j {\n\t\th := int(uint(i+j) >> 1) // avoid overflow when computing h\n\t\t// i ≤ h < j\n\t\tif cmp(x[h], target) < 0 {\n\t\t\ti = h + 1 // preserves cmp(x[i - 1], target) < 0\n\t\t} else {\n\t\t\tj = h // preserves cmp(x[j], target) >= 0\n\t\t}\n\t}\n\t// i == j, cmp(x[i-1], target) < 0, and cmp(x[j], target) (= cmp(x[i], target)) >= 0  =>  answer is i.\n\treturn i, i < n && cmp(x[i], target) == 0\n}\n\ntype sortedHint int // hint for pdqsort when choosing the pivot\n\nconst (\n\tunknownHint sortedHint = iota\n\tincreasingHint\n\tdecreasingHint\n)\n\n// xorshift paper: https://www.jstatsoft.org/article/view/v008i14/xorshift.pdf\ntype xorshift uint64\n\nfunc (r *xorshift) Next() uint64 {\n\t*r ^= *r << 13\n\t*r ^= *r >> 17\n\t*r ^= *r << 5\n\treturn uint64(*r)\n}\n\nfunc nextPowerOfTwo(length int) uint {\n\treturn 1 << bits.Len(uint(length))\n}\n\n// isNaN reports whether x is a NaN without requiring the math package.\n// This will always return false if T is not floating-point.\nfunc isNaN[T constraints.Ordered](x T) bool {\n\treturn x != x\n}\n"
  },
  {
    "path": "vendor/golang.org/x/exp/slices/zsortanyfunc.go",
    "content": "// Code generated by gen_sort_variants.go; DO NOT EDIT.\n\n// 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 slices\n\n// insertionSortCmpFunc sorts data[a:b] using insertion sort.\nfunc insertionSortCmpFunc[E any](data []E, a, b int, cmp func(a, b E) int) {\n\tfor i := a + 1; i < b; i++ {\n\t\tfor j := i; j > a && (cmp(data[j], data[j-1]) < 0); j-- {\n\t\t\tdata[j], data[j-1] = data[j-1], data[j]\n\t\t}\n\t}\n}\n\n// siftDownCmpFunc implements the heap property on data[lo:hi].\n// first is an offset into the array where the root of the heap lies.\nfunc siftDownCmpFunc[E any](data []E, lo, hi, first int, cmp func(a, b E) int) {\n\troot := lo\n\tfor {\n\t\tchild := 2*root + 1\n\t\tif child >= hi {\n\t\t\tbreak\n\t\t}\n\t\tif child+1 < hi && (cmp(data[first+child], data[first+child+1]) < 0) {\n\t\t\tchild++\n\t\t}\n\t\tif !(cmp(data[first+root], data[first+child]) < 0) {\n\t\t\treturn\n\t\t}\n\t\tdata[first+root], data[first+child] = data[first+child], data[first+root]\n\t\troot = child\n\t}\n}\n\nfunc heapSortCmpFunc[E any](data []E, a, b int, cmp func(a, b E) int) {\n\tfirst := a\n\tlo := 0\n\thi := b - a\n\n\t// Build heap with greatest element at top.\n\tfor i := (hi - 1) / 2; i >= 0; i-- {\n\t\tsiftDownCmpFunc(data, i, hi, first, cmp)\n\t}\n\n\t// Pop elements, largest first, into end of data.\n\tfor i := hi - 1; i >= 0; i-- {\n\t\tdata[first], data[first+i] = data[first+i], data[first]\n\t\tsiftDownCmpFunc(data, lo, i, first, cmp)\n\t}\n}\n\n// pdqsortCmpFunc sorts data[a:b].\n// The algorithm based on pattern-defeating quicksort(pdqsort), but without the optimizations from BlockQuicksort.\n// pdqsort paper: https://arxiv.org/pdf/2106.05123.pdf\n// C++ implementation: https://github.com/orlp/pdqsort\n// Rust implementation: https://docs.rs/pdqsort/latest/pdqsort/\n// limit is the number of allowed bad (very unbalanced) pivots before falling back to heapsort.\nfunc pdqsortCmpFunc[E any](data []E, a, b, limit int, cmp func(a, b E) int) {\n\tconst maxInsertion = 12\n\n\tvar (\n\t\twasBalanced    = true // whether the last partitioning was reasonably balanced\n\t\twasPartitioned = true // whether the slice was already partitioned\n\t)\n\n\tfor {\n\t\tlength := b - a\n\n\t\tif length <= maxInsertion {\n\t\t\tinsertionSortCmpFunc(data, a, b, cmp)\n\t\t\treturn\n\t\t}\n\n\t\t// Fall back to heapsort if too many bad choices were made.\n\t\tif limit == 0 {\n\t\t\theapSortCmpFunc(data, a, b, cmp)\n\t\t\treturn\n\t\t}\n\n\t\t// If the last partitioning was imbalanced, we need to breaking patterns.\n\t\tif !wasBalanced {\n\t\t\tbreakPatternsCmpFunc(data, a, b, cmp)\n\t\t\tlimit--\n\t\t}\n\n\t\tpivot, hint := choosePivotCmpFunc(data, a, b, cmp)\n\t\tif hint == decreasingHint {\n\t\t\treverseRangeCmpFunc(data, a, b, cmp)\n\t\t\t// The chosen pivot was pivot-a elements after the start of the array.\n\t\t\t// After reversing it is pivot-a elements before the end of the array.\n\t\t\t// The idea came from Rust's implementation.\n\t\t\tpivot = (b - 1) - (pivot - a)\n\t\t\thint = increasingHint\n\t\t}\n\n\t\t// The slice is likely already sorted.\n\t\tif wasBalanced && wasPartitioned && hint == increasingHint {\n\t\t\tif partialInsertionSortCmpFunc(data, a, b, cmp) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\t// Probably the slice contains many duplicate elements, partition the slice into\n\t\t// elements equal to and elements greater than the pivot.\n\t\tif a > 0 && !(cmp(data[a-1], data[pivot]) < 0) {\n\t\t\tmid := partitionEqualCmpFunc(data, a, b, pivot, cmp)\n\t\t\ta = mid\n\t\t\tcontinue\n\t\t}\n\n\t\tmid, alreadyPartitioned := partitionCmpFunc(data, a, b, pivot, cmp)\n\t\twasPartitioned = alreadyPartitioned\n\n\t\tleftLen, rightLen := mid-a, b-mid\n\t\tbalanceThreshold := length / 8\n\t\tif leftLen < rightLen {\n\t\t\twasBalanced = leftLen >= balanceThreshold\n\t\t\tpdqsortCmpFunc(data, a, mid, limit, cmp)\n\t\t\ta = mid + 1\n\t\t} else {\n\t\t\twasBalanced = rightLen >= balanceThreshold\n\t\t\tpdqsortCmpFunc(data, mid+1, b, limit, cmp)\n\t\t\tb = mid\n\t\t}\n\t}\n}\n\n// partitionCmpFunc does one quicksort partition.\n// Let p = data[pivot]\n// Moves elements in data[a:b] around, so that data[i]<p and data[j]>=p for i<newpivot and j>newpivot.\n// On return, data[newpivot] = p\nfunc partitionCmpFunc[E any](data []E, a, b, pivot int, cmp func(a, b E) int) (newpivot int, alreadyPartitioned bool) {\n\tdata[a], data[pivot] = data[pivot], data[a]\n\ti, j := a+1, b-1 // i and j are inclusive of the elements remaining to be partitioned\n\n\tfor i <= j && (cmp(data[i], data[a]) < 0) {\n\t\ti++\n\t}\n\tfor i <= j && !(cmp(data[j], data[a]) < 0) {\n\t\tj--\n\t}\n\tif i > j {\n\t\tdata[j], data[a] = data[a], data[j]\n\t\treturn j, true\n\t}\n\tdata[i], data[j] = data[j], data[i]\n\ti++\n\tj--\n\n\tfor {\n\t\tfor i <= j && (cmp(data[i], data[a]) < 0) {\n\t\t\ti++\n\t\t}\n\t\tfor i <= j && !(cmp(data[j], data[a]) < 0) {\n\t\t\tj--\n\t\t}\n\t\tif i > j {\n\t\t\tbreak\n\t\t}\n\t\tdata[i], data[j] = data[j], data[i]\n\t\ti++\n\t\tj--\n\t}\n\tdata[j], data[a] = data[a], data[j]\n\treturn j, false\n}\n\n// partitionEqualCmpFunc partitions data[a:b] into elements equal to data[pivot] followed by elements greater than data[pivot].\n// It assumed that data[a:b] does not contain elements smaller than the data[pivot].\nfunc partitionEqualCmpFunc[E any](data []E, a, b, pivot int, cmp func(a, b E) int) (newpivot int) {\n\tdata[a], data[pivot] = data[pivot], data[a]\n\ti, j := a+1, b-1 // i and j are inclusive of the elements remaining to be partitioned\n\n\tfor {\n\t\tfor i <= j && !(cmp(data[a], data[i]) < 0) {\n\t\t\ti++\n\t\t}\n\t\tfor i <= j && (cmp(data[a], data[j]) < 0) {\n\t\t\tj--\n\t\t}\n\t\tif i > j {\n\t\t\tbreak\n\t\t}\n\t\tdata[i], data[j] = data[j], data[i]\n\t\ti++\n\t\tj--\n\t}\n\treturn i\n}\n\n// partialInsertionSortCmpFunc partially sorts a slice, returns true if the slice is sorted at the end.\nfunc partialInsertionSortCmpFunc[E any](data []E, a, b int, cmp func(a, b E) int) bool {\n\tconst (\n\t\tmaxSteps         = 5  // maximum number of adjacent out-of-order pairs that will get shifted\n\t\tshortestShifting = 50 // don't shift any elements on short arrays\n\t)\n\ti := a + 1\n\tfor j := 0; j < maxSteps; j++ {\n\t\tfor i < b && !(cmp(data[i], data[i-1]) < 0) {\n\t\t\ti++\n\t\t}\n\n\t\tif i == b {\n\t\t\treturn true\n\t\t}\n\n\t\tif b-a < shortestShifting {\n\t\t\treturn false\n\t\t}\n\n\t\tdata[i], data[i-1] = data[i-1], data[i]\n\n\t\t// Shift the smaller one to the left.\n\t\tif i-a >= 2 {\n\t\t\tfor j := i - 1; j >= 1; j-- {\n\t\t\t\tif !(cmp(data[j], data[j-1]) < 0) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdata[j], data[j-1] = data[j-1], data[j]\n\t\t\t}\n\t\t}\n\t\t// Shift the greater one to the right.\n\t\tif b-i >= 2 {\n\t\t\tfor j := i + 1; j < b; j++ {\n\t\t\t\tif !(cmp(data[j], data[j-1]) < 0) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdata[j], data[j-1] = data[j-1], data[j]\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\n// breakPatternsCmpFunc scatters some elements around in an attempt to break some patterns\n// that might cause imbalanced partitions in quicksort.\nfunc breakPatternsCmpFunc[E any](data []E, a, b int, cmp func(a, b E) int) {\n\tlength := b - a\n\tif length >= 8 {\n\t\trandom := xorshift(length)\n\t\tmodulus := nextPowerOfTwo(length)\n\n\t\tfor idx := a + (length/4)*2 - 1; idx <= a+(length/4)*2+1; idx++ {\n\t\t\tother := int(uint(random.Next()) & (modulus - 1))\n\t\t\tif other >= length {\n\t\t\t\tother -= length\n\t\t\t}\n\t\t\tdata[idx], data[a+other] = data[a+other], data[idx]\n\t\t}\n\t}\n}\n\n// choosePivotCmpFunc chooses a pivot in data[a:b].\n//\n// [0,8): chooses a static pivot.\n// [8,shortestNinther): uses the simple median-of-three method.\n// [shortestNinther,∞): uses the Tukey ninther method.\nfunc choosePivotCmpFunc[E any](data []E, a, b int, cmp func(a, b E) int) (pivot int, hint sortedHint) {\n\tconst (\n\t\tshortestNinther = 50\n\t\tmaxSwaps        = 4 * 3\n\t)\n\n\tl := b - a\n\n\tvar (\n\t\tswaps int\n\t\ti     = a + l/4*1\n\t\tj     = a + l/4*2\n\t\tk     = a + l/4*3\n\t)\n\n\tif l >= 8 {\n\t\tif l >= shortestNinther {\n\t\t\t// Tukey ninther method, the idea came from Rust's implementation.\n\t\t\ti = medianAdjacentCmpFunc(data, i, &swaps, cmp)\n\t\t\tj = medianAdjacentCmpFunc(data, j, &swaps, cmp)\n\t\t\tk = medianAdjacentCmpFunc(data, k, &swaps, cmp)\n\t\t}\n\t\t// Find the median among i, j, k and stores it into j.\n\t\tj = medianCmpFunc(data, i, j, k, &swaps, cmp)\n\t}\n\n\tswitch swaps {\n\tcase 0:\n\t\treturn j, increasingHint\n\tcase maxSwaps:\n\t\treturn j, decreasingHint\n\tdefault:\n\t\treturn j, unknownHint\n\t}\n}\n\n// order2CmpFunc returns x,y where data[x] <= data[y], where x,y=a,b or x,y=b,a.\nfunc order2CmpFunc[E any](data []E, a, b int, swaps *int, cmp func(a, b E) int) (int, int) {\n\tif cmp(data[b], data[a]) < 0 {\n\t\t*swaps++\n\t\treturn b, a\n\t}\n\treturn a, b\n}\n\n// medianCmpFunc returns x where data[x] is the median of data[a],data[b],data[c], where x is a, b, or c.\nfunc medianCmpFunc[E any](data []E, a, b, c int, swaps *int, cmp func(a, b E) int) int {\n\ta, b = order2CmpFunc(data, a, b, swaps, cmp)\n\tb, c = order2CmpFunc(data, b, c, swaps, cmp)\n\ta, b = order2CmpFunc(data, a, b, swaps, cmp)\n\treturn b\n}\n\n// medianAdjacentCmpFunc finds the median of data[a - 1], data[a], data[a + 1] and stores the index into a.\nfunc medianAdjacentCmpFunc[E any](data []E, a int, swaps *int, cmp func(a, b E) int) int {\n\treturn medianCmpFunc(data, a-1, a, a+1, swaps, cmp)\n}\n\nfunc reverseRangeCmpFunc[E any](data []E, a, b int, cmp func(a, b E) int) {\n\ti := a\n\tj := b - 1\n\tfor i < j {\n\t\tdata[i], data[j] = data[j], data[i]\n\t\ti++\n\t\tj--\n\t}\n}\n\nfunc swapRangeCmpFunc[E any](data []E, a, b, n int, cmp func(a, b E) int) {\n\tfor i := 0; i < n; i++ {\n\t\tdata[a+i], data[b+i] = data[b+i], data[a+i]\n\t}\n}\n\nfunc stableCmpFunc[E any](data []E, n int, cmp func(a, b E) int) {\n\tblockSize := 20 // must be > 0\n\ta, b := 0, blockSize\n\tfor b <= n {\n\t\tinsertionSortCmpFunc(data, a, b, cmp)\n\t\ta = b\n\t\tb += blockSize\n\t}\n\tinsertionSortCmpFunc(data, a, n, cmp)\n\n\tfor blockSize < n {\n\t\ta, b = 0, 2*blockSize\n\t\tfor b <= n {\n\t\t\tsymMergeCmpFunc(data, a, a+blockSize, b, cmp)\n\t\t\ta = b\n\t\t\tb += 2 * blockSize\n\t\t}\n\t\tif m := a + blockSize; m < n {\n\t\t\tsymMergeCmpFunc(data, a, m, n, cmp)\n\t\t}\n\t\tblockSize *= 2\n\t}\n}\n\n// symMergeCmpFunc merges the two sorted subsequences data[a:m] and data[m:b] using\n// the SymMerge algorithm from Pok-Son Kim and Arne Kutzner, \"Stable Minimum\n// Storage Merging by Symmetric Comparisons\", in Susanne Albers and Tomasz\n// Radzik, editors, Algorithms - ESA 2004, volume 3221 of Lecture Notes in\n// Computer Science, pages 714-723. Springer, 2004.\n//\n// Let M = m-a and N = b-n. Wolog M < N.\n// The recursion depth is bound by ceil(log(N+M)).\n// The algorithm needs O(M*log(N/M + 1)) calls to data.Less.\n// The algorithm needs O((M+N)*log(M)) calls to data.Swap.\n//\n// The paper gives O((M+N)*log(M)) as the number of assignments assuming a\n// rotation algorithm which uses O(M+N+gcd(M+N)) assignments. The argumentation\n// in the paper carries through for Swap operations, especially as the block\n// swapping rotate uses only O(M+N) Swaps.\n//\n// symMerge assumes non-degenerate arguments: a < m && m < b.\n// Having the caller check this condition eliminates many leaf recursion calls,\n// which improves performance.\nfunc symMergeCmpFunc[E any](data []E, a, m, b int, cmp func(a, b E) int) {\n\t// Avoid unnecessary recursions of symMerge\n\t// by direct insertion of data[a] into data[m:b]\n\t// if data[a:m] only contains one element.\n\tif m-a == 1 {\n\t\t// Use binary search to find the lowest index i\n\t\t// such that data[i] >= data[a] for m <= i < b.\n\t\t// Exit the search loop with i == b in case no such index exists.\n\t\ti := m\n\t\tj := b\n\t\tfor i < j {\n\t\t\th := int(uint(i+j) >> 1)\n\t\t\tif cmp(data[h], data[a]) < 0 {\n\t\t\t\ti = h + 1\n\t\t\t} else {\n\t\t\t\tj = h\n\t\t\t}\n\t\t}\n\t\t// Swap values until data[a] reaches the position before i.\n\t\tfor k := a; k < i-1; k++ {\n\t\t\tdata[k], data[k+1] = data[k+1], data[k]\n\t\t}\n\t\treturn\n\t}\n\n\t// Avoid unnecessary recursions of symMerge\n\t// by direct insertion of data[m] into data[a:m]\n\t// if data[m:b] only contains one element.\n\tif b-m == 1 {\n\t\t// Use binary search to find the lowest index i\n\t\t// such that data[i] > data[m] for a <= i < m.\n\t\t// Exit the search loop with i == m in case no such index exists.\n\t\ti := a\n\t\tj := m\n\t\tfor i < j {\n\t\t\th := int(uint(i+j) >> 1)\n\t\t\tif !(cmp(data[m], data[h]) < 0) {\n\t\t\t\ti = h + 1\n\t\t\t} else {\n\t\t\t\tj = h\n\t\t\t}\n\t\t}\n\t\t// Swap values until data[m] reaches the position i.\n\t\tfor k := m; k > i; k-- {\n\t\t\tdata[k], data[k-1] = data[k-1], data[k]\n\t\t}\n\t\treturn\n\t}\n\n\tmid := int(uint(a+b) >> 1)\n\tn := mid + m\n\tvar start, r int\n\tif m > mid {\n\t\tstart = n - b\n\t\tr = mid\n\t} else {\n\t\tstart = a\n\t\tr = m\n\t}\n\tp := n - 1\n\n\tfor start < r {\n\t\tc := int(uint(start+r) >> 1)\n\t\tif !(cmp(data[p-c], data[c]) < 0) {\n\t\t\tstart = c + 1\n\t\t} else {\n\t\t\tr = c\n\t\t}\n\t}\n\n\tend := n - start\n\tif start < m && m < end {\n\t\trotateCmpFunc(data, start, m, end, cmp)\n\t}\n\tif a < start && start < mid {\n\t\tsymMergeCmpFunc(data, a, start, mid, cmp)\n\t}\n\tif mid < end && end < b {\n\t\tsymMergeCmpFunc(data, mid, end, b, cmp)\n\t}\n}\n\n// rotateCmpFunc rotates two consecutive blocks u = data[a:m] and v = data[m:b] in data:\n// Data of the form 'x u v y' is changed to 'x v u y'.\n// rotate performs at most b-a many calls to data.Swap,\n// and it assumes non-degenerate arguments: a < m && m < b.\nfunc rotateCmpFunc[E any](data []E, a, m, b int, cmp func(a, b E) int) {\n\ti := m - a\n\tj := b - m\n\n\tfor i != j {\n\t\tif i > j {\n\t\t\tswapRangeCmpFunc(data, m-i, m, j, cmp)\n\t\t\ti -= j\n\t\t} else {\n\t\t\tswapRangeCmpFunc(data, m-i, m+j-i, i, cmp)\n\t\t\tj -= i\n\t\t}\n\t}\n\t// i == j\n\tswapRangeCmpFunc(data, m-i, m, i, cmp)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/exp/slices/zsortordered.go",
    "content": "// Code generated by gen_sort_variants.go; DO NOT EDIT.\n\n// 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 slices\n\nimport \"golang.org/x/exp/constraints\"\n\n// insertionSortOrdered sorts data[a:b] using insertion sort.\nfunc insertionSortOrdered[E constraints.Ordered](data []E, a, b int) {\n\tfor i := a + 1; i < b; i++ {\n\t\tfor j := i; j > a && cmpLess(data[j], data[j-1]); j-- {\n\t\t\tdata[j], data[j-1] = data[j-1], data[j]\n\t\t}\n\t}\n}\n\n// siftDownOrdered implements the heap property on data[lo:hi].\n// first is an offset into the array where the root of the heap lies.\nfunc siftDownOrdered[E constraints.Ordered](data []E, lo, hi, first int) {\n\troot := lo\n\tfor {\n\t\tchild := 2*root + 1\n\t\tif child >= hi {\n\t\t\tbreak\n\t\t}\n\t\tif child+1 < hi && cmpLess(data[first+child], data[first+child+1]) {\n\t\t\tchild++\n\t\t}\n\t\tif !cmpLess(data[first+root], data[first+child]) {\n\t\t\treturn\n\t\t}\n\t\tdata[first+root], data[first+child] = data[first+child], data[first+root]\n\t\troot = child\n\t}\n}\n\nfunc heapSortOrdered[E constraints.Ordered](data []E, a, b int) {\n\tfirst := a\n\tlo := 0\n\thi := b - a\n\n\t// Build heap with greatest element at top.\n\tfor i := (hi - 1) / 2; i >= 0; i-- {\n\t\tsiftDownOrdered(data, i, hi, first)\n\t}\n\n\t// Pop elements, largest first, into end of data.\n\tfor i := hi - 1; i >= 0; i-- {\n\t\tdata[first], data[first+i] = data[first+i], data[first]\n\t\tsiftDownOrdered(data, lo, i, first)\n\t}\n}\n\n// pdqsortOrdered sorts data[a:b].\n// The algorithm based on pattern-defeating quicksort(pdqsort), but without the optimizations from BlockQuicksort.\n// pdqsort paper: https://arxiv.org/pdf/2106.05123.pdf\n// C++ implementation: https://github.com/orlp/pdqsort\n// Rust implementation: https://docs.rs/pdqsort/latest/pdqsort/\n// limit is the number of allowed bad (very unbalanced) pivots before falling back to heapsort.\nfunc pdqsortOrdered[E constraints.Ordered](data []E, a, b, limit int) {\n\tconst maxInsertion = 12\n\n\tvar (\n\t\twasBalanced    = true // whether the last partitioning was reasonably balanced\n\t\twasPartitioned = true // whether the slice was already partitioned\n\t)\n\n\tfor {\n\t\tlength := b - a\n\n\t\tif length <= maxInsertion {\n\t\t\tinsertionSortOrdered(data, a, b)\n\t\t\treturn\n\t\t}\n\n\t\t// Fall back to heapsort if too many bad choices were made.\n\t\tif limit == 0 {\n\t\t\theapSortOrdered(data, a, b)\n\t\t\treturn\n\t\t}\n\n\t\t// If the last partitioning was imbalanced, we need to breaking patterns.\n\t\tif !wasBalanced {\n\t\t\tbreakPatternsOrdered(data, a, b)\n\t\t\tlimit--\n\t\t}\n\n\t\tpivot, hint := choosePivotOrdered(data, a, b)\n\t\tif hint == decreasingHint {\n\t\t\treverseRangeOrdered(data, a, b)\n\t\t\t// The chosen pivot was pivot-a elements after the start of the array.\n\t\t\t// After reversing it is pivot-a elements before the end of the array.\n\t\t\t// The idea came from Rust's implementation.\n\t\t\tpivot = (b - 1) - (pivot - a)\n\t\t\thint = increasingHint\n\t\t}\n\n\t\t// The slice is likely already sorted.\n\t\tif wasBalanced && wasPartitioned && hint == increasingHint {\n\t\t\tif partialInsertionSortOrdered(data, a, b) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\t// Probably the slice contains many duplicate elements, partition the slice into\n\t\t// elements equal to and elements greater than the pivot.\n\t\tif a > 0 && !cmpLess(data[a-1], data[pivot]) {\n\t\t\tmid := partitionEqualOrdered(data, a, b, pivot)\n\t\t\ta = mid\n\t\t\tcontinue\n\t\t}\n\n\t\tmid, alreadyPartitioned := partitionOrdered(data, a, b, pivot)\n\t\twasPartitioned = alreadyPartitioned\n\n\t\tleftLen, rightLen := mid-a, b-mid\n\t\tbalanceThreshold := length / 8\n\t\tif leftLen < rightLen {\n\t\t\twasBalanced = leftLen >= balanceThreshold\n\t\t\tpdqsortOrdered(data, a, mid, limit)\n\t\t\ta = mid + 1\n\t\t} else {\n\t\t\twasBalanced = rightLen >= balanceThreshold\n\t\t\tpdqsortOrdered(data, mid+1, b, limit)\n\t\t\tb = mid\n\t\t}\n\t}\n}\n\n// partitionOrdered does one quicksort partition.\n// Let p = data[pivot]\n// Moves elements in data[a:b] around, so that data[i]<p and data[j]>=p for i<newpivot and j>newpivot.\n// On return, data[newpivot] = p\nfunc partitionOrdered[E constraints.Ordered](data []E, a, b, pivot int) (newpivot int, alreadyPartitioned bool) {\n\tdata[a], data[pivot] = data[pivot], data[a]\n\ti, j := a+1, b-1 // i and j are inclusive of the elements remaining to be partitioned\n\n\tfor i <= j && cmpLess(data[i], data[a]) {\n\t\ti++\n\t}\n\tfor i <= j && !cmpLess(data[j], data[a]) {\n\t\tj--\n\t}\n\tif i > j {\n\t\tdata[j], data[a] = data[a], data[j]\n\t\treturn j, true\n\t}\n\tdata[i], data[j] = data[j], data[i]\n\ti++\n\tj--\n\n\tfor {\n\t\tfor i <= j && cmpLess(data[i], data[a]) {\n\t\t\ti++\n\t\t}\n\t\tfor i <= j && !cmpLess(data[j], data[a]) {\n\t\t\tj--\n\t\t}\n\t\tif i > j {\n\t\t\tbreak\n\t\t}\n\t\tdata[i], data[j] = data[j], data[i]\n\t\ti++\n\t\tj--\n\t}\n\tdata[j], data[a] = data[a], data[j]\n\treturn j, false\n}\n\n// partitionEqualOrdered partitions data[a:b] into elements equal to data[pivot] followed by elements greater than data[pivot].\n// It assumed that data[a:b] does not contain elements smaller than the data[pivot].\nfunc partitionEqualOrdered[E constraints.Ordered](data []E, a, b, pivot int) (newpivot int) {\n\tdata[a], data[pivot] = data[pivot], data[a]\n\ti, j := a+1, b-1 // i and j are inclusive of the elements remaining to be partitioned\n\n\tfor {\n\t\tfor i <= j && !cmpLess(data[a], data[i]) {\n\t\t\ti++\n\t\t}\n\t\tfor i <= j && cmpLess(data[a], data[j]) {\n\t\t\tj--\n\t\t}\n\t\tif i > j {\n\t\t\tbreak\n\t\t}\n\t\tdata[i], data[j] = data[j], data[i]\n\t\ti++\n\t\tj--\n\t}\n\treturn i\n}\n\n// partialInsertionSortOrdered partially sorts a slice, returns true if the slice is sorted at the end.\nfunc partialInsertionSortOrdered[E constraints.Ordered](data []E, a, b int) bool {\n\tconst (\n\t\tmaxSteps         = 5  // maximum number of adjacent out-of-order pairs that will get shifted\n\t\tshortestShifting = 50 // don't shift any elements on short arrays\n\t)\n\ti := a + 1\n\tfor j := 0; j < maxSteps; j++ {\n\t\tfor i < b && !cmpLess(data[i], data[i-1]) {\n\t\t\ti++\n\t\t}\n\n\t\tif i == b {\n\t\t\treturn true\n\t\t}\n\n\t\tif b-a < shortestShifting {\n\t\t\treturn false\n\t\t}\n\n\t\tdata[i], data[i-1] = data[i-1], data[i]\n\n\t\t// Shift the smaller one to the left.\n\t\tif i-a >= 2 {\n\t\t\tfor j := i - 1; j >= 1; j-- {\n\t\t\t\tif !cmpLess(data[j], data[j-1]) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdata[j], data[j-1] = data[j-1], data[j]\n\t\t\t}\n\t\t}\n\t\t// Shift the greater one to the right.\n\t\tif b-i >= 2 {\n\t\t\tfor j := i + 1; j < b; j++ {\n\t\t\t\tif !cmpLess(data[j], data[j-1]) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdata[j], data[j-1] = data[j-1], data[j]\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\n// breakPatternsOrdered scatters some elements around in an attempt to break some patterns\n// that might cause imbalanced partitions in quicksort.\nfunc breakPatternsOrdered[E constraints.Ordered](data []E, a, b int) {\n\tlength := b - a\n\tif length >= 8 {\n\t\trandom := xorshift(length)\n\t\tmodulus := nextPowerOfTwo(length)\n\n\t\tfor idx := a + (length/4)*2 - 1; idx <= a+(length/4)*2+1; idx++ {\n\t\t\tother := int(uint(random.Next()) & (modulus - 1))\n\t\t\tif other >= length {\n\t\t\t\tother -= length\n\t\t\t}\n\t\t\tdata[idx], data[a+other] = data[a+other], data[idx]\n\t\t}\n\t}\n}\n\n// choosePivotOrdered chooses a pivot in data[a:b].\n//\n// [0,8): chooses a static pivot.\n// [8,shortestNinther): uses the simple median-of-three method.\n// [shortestNinther,∞): uses the Tukey ninther method.\nfunc choosePivotOrdered[E constraints.Ordered](data []E, a, b int) (pivot int, hint sortedHint) {\n\tconst (\n\t\tshortestNinther = 50\n\t\tmaxSwaps        = 4 * 3\n\t)\n\n\tl := b - a\n\n\tvar (\n\t\tswaps int\n\t\ti     = a + l/4*1\n\t\tj     = a + l/4*2\n\t\tk     = a + l/4*3\n\t)\n\n\tif l >= 8 {\n\t\tif l >= shortestNinther {\n\t\t\t// Tukey ninther method, the idea came from Rust's implementation.\n\t\t\ti = medianAdjacentOrdered(data, i, &swaps)\n\t\t\tj = medianAdjacentOrdered(data, j, &swaps)\n\t\t\tk = medianAdjacentOrdered(data, k, &swaps)\n\t\t}\n\t\t// Find the median among i, j, k and stores it into j.\n\t\tj = medianOrdered(data, i, j, k, &swaps)\n\t}\n\n\tswitch swaps {\n\tcase 0:\n\t\treturn j, increasingHint\n\tcase maxSwaps:\n\t\treturn j, decreasingHint\n\tdefault:\n\t\treturn j, unknownHint\n\t}\n}\n\n// order2Ordered returns x,y where data[x] <= data[y], where x,y=a,b or x,y=b,a.\nfunc order2Ordered[E constraints.Ordered](data []E, a, b int, swaps *int) (int, int) {\n\tif cmpLess(data[b], data[a]) {\n\t\t*swaps++\n\t\treturn b, a\n\t}\n\treturn a, b\n}\n\n// medianOrdered returns x where data[x] is the median of data[a],data[b],data[c], where x is a, b, or c.\nfunc medianOrdered[E constraints.Ordered](data []E, a, b, c int, swaps *int) int {\n\ta, b = order2Ordered(data, a, b, swaps)\n\tb, c = order2Ordered(data, b, c, swaps)\n\ta, b = order2Ordered(data, a, b, swaps)\n\treturn b\n}\n\n// medianAdjacentOrdered finds the median of data[a - 1], data[a], data[a + 1] and stores the index into a.\nfunc medianAdjacentOrdered[E constraints.Ordered](data []E, a int, swaps *int) int {\n\treturn medianOrdered(data, a-1, a, a+1, swaps)\n}\n\nfunc reverseRangeOrdered[E constraints.Ordered](data []E, a, b int) {\n\ti := a\n\tj := b - 1\n\tfor i < j {\n\t\tdata[i], data[j] = data[j], data[i]\n\t\ti++\n\t\tj--\n\t}\n}\n\nfunc swapRangeOrdered[E constraints.Ordered](data []E, a, b, n int) {\n\tfor i := 0; i < n; i++ {\n\t\tdata[a+i], data[b+i] = data[b+i], data[a+i]\n\t}\n}\n\nfunc stableOrdered[E constraints.Ordered](data []E, n int) {\n\tblockSize := 20 // must be > 0\n\ta, b := 0, blockSize\n\tfor b <= n {\n\t\tinsertionSortOrdered(data, a, b)\n\t\ta = b\n\t\tb += blockSize\n\t}\n\tinsertionSortOrdered(data, a, n)\n\n\tfor blockSize < n {\n\t\ta, b = 0, 2*blockSize\n\t\tfor b <= n {\n\t\t\tsymMergeOrdered(data, a, a+blockSize, b)\n\t\t\ta = b\n\t\t\tb += 2 * blockSize\n\t\t}\n\t\tif m := a + blockSize; m < n {\n\t\t\tsymMergeOrdered(data, a, m, n)\n\t\t}\n\t\tblockSize *= 2\n\t}\n}\n\n// symMergeOrdered merges the two sorted subsequences data[a:m] and data[m:b] using\n// the SymMerge algorithm from Pok-Son Kim and Arne Kutzner, \"Stable Minimum\n// Storage Merging by Symmetric Comparisons\", in Susanne Albers and Tomasz\n// Radzik, editors, Algorithms - ESA 2004, volume 3221 of Lecture Notes in\n// Computer Science, pages 714-723. Springer, 2004.\n//\n// Let M = m-a and N = b-n. Wolog M < N.\n// The recursion depth is bound by ceil(log(N+M)).\n// The algorithm needs O(M*log(N/M + 1)) calls to data.Less.\n// The algorithm needs O((M+N)*log(M)) calls to data.Swap.\n//\n// The paper gives O((M+N)*log(M)) as the number of assignments assuming a\n// rotation algorithm which uses O(M+N+gcd(M+N)) assignments. The argumentation\n// in the paper carries through for Swap operations, especially as the block\n// swapping rotate uses only O(M+N) Swaps.\n//\n// symMerge assumes non-degenerate arguments: a < m && m < b.\n// Having the caller check this condition eliminates many leaf recursion calls,\n// which improves performance.\nfunc symMergeOrdered[E constraints.Ordered](data []E, a, m, b int) {\n\t// Avoid unnecessary recursions of symMerge\n\t// by direct insertion of data[a] into data[m:b]\n\t// if data[a:m] only contains one element.\n\tif m-a == 1 {\n\t\t// Use binary search to find the lowest index i\n\t\t// such that data[i] >= data[a] for m <= i < b.\n\t\t// Exit the search loop with i == b in case no such index exists.\n\t\ti := m\n\t\tj := b\n\t\tfor i < j {\n\t\t\th := int(uint(i+j) >> 1)\n\t\t\tif cmpLess(data[h], data[a]) {\n\t\t\t\ti = h + 1\n\t\t\t} else {\n\t\t\t\tj = h\n\t\t\t}\n\t\t}\n\t\t// Swap values until data[a] reaches the position before i.\n\t\tfor k := a; k < i-1; k++ {\n\t\t\tdata[k], data[k+1] = data[k+1], data[k]\n\t\t}\n\t\treturn\n\t}\n\n\t// Avoid unnecessary recursions of symMerge\n\t// by direct insertion of data[m] into data[a:m]\n\t// if data[m:b] only contains one element.\n\tif b-m == 1 {\n\t\t// Use binary search to find the lowest index i\n\t\t// such that data[i] > data[m] for a <= i < m.\n\t\t// Exit the search loop with i == m in case no such index exists.\n\t\ti := a\n\t\tj := m\n\t\tfor i < j {\n\t\t\th := int(uint(i+j) >> 1)\n\t\t\tif !cmpLess(data[m], data[h]) {\n\t\t\t\ti = h + 1\n\t\t\t} else {\n\t\t\t\tj = h\n\t\t\t}\n\t\t}\n\t\t// Swap values until data[m] reaches the position i.\n\t\tfor k := m; k > i; k-- {\n\t\t\tdata[k], data[k-1] = data[k-1], data[k]\n\t\t}\n\t\treturn\n\t}\n\n\tmid := int(uint(a+b) >> 1)\n\tn := mid + m\n\tvar start, r int\n\tif m > mid {\n\t\tstart = n - b\n\t\tr = mid\n\t} else {\n\t\tstart = a\n\t\tr = m\n\t}\n\tp := n - 1\n\n\tfor start < r {\n\t\tc := int(uint(start+r) >> 1)\n\t\tif !cmpLess(data[p-c], data[c]) {\n\t\t\tstart = c + 1\n\t\t} else {\n\t\t\tr = c\n\t\t}\n\t}\n\n\tend := n - start\n\tif start < m && m < end {\n\t\trotateOrdered(data, start, m, end)\n\t}\n\tif a < start && start < mid {\n\t\tsymMergeOrdered(data, a, start, mid)\n\t}\n\tif mid < end && end < b {\n\t\tsymMergeOrdered(data, mid, end, b)\n\t}\n}\n\n// rotateOrdered rotates two consecutive blocks u = data[a:m] and v = data[m:b] in data:\n// Data of the form 'x u v y' is changed to 'x v u y'.\n// rotate performs at most b-a many calls to data.Swap,\n// and it assumes non-degenerate arguments: a < m && m < b.\nfunc rotateOrdered[E constraints.Ordered](data []E, a, m, b int) {\n\ti := m - a\n\tj := b - m\n\n\tfor i != j {\n\t\tif i > j {\n\t\t\tswapRangeOrdered(data, m-i, m, j)\n\t\t\ti -= j\n\t\t} else {\n\t\t\tswapRangeOrdered(data, m-i, m+j-i, i)\n\t\t\tj -= i\n\t\t}\n\t}\n\t// i == j\n\tswapRangeOrdered(data, m-i, m, i)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/LICENSE",
    "content": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/net/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/net/http/httpguts/guts.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package httpguts provides functions implementing various details\n// of the HTTP specification.\n//\n// This package is shared by the standard library (which vendors it)\n// and x/net/http2. It comes with no API stability promise.\npackage httpguts\n\nimport (\n\t\"net/textproto\"\n\t\"strings\"\n)\n\n// ValidTrailerHeader reports whether name is a valid header field name to appear\n// in trailers.\n// See RFC 7230, Section 4.1.2\nfunc ValidTrailerHeader(name string) bool {\n\tname = textproto.CanonicalMIMEHeaderKey(name)\n\tif strings.HasPrefix(name, \"If-\") || badTrailer[name] {\n\t\treturn false\n\t}\n\treturn true\n}\n\nvar badTrailer = map[string]bool{\n\t\"Authorization\":       true,\n\t\"Cache-Control\":       true,\n\t\"Connection\":          true,\n\t\"Content-Encoding\":    true,\n\t\"Content-Length\":      true,\n\t\"Content-Range\":       true,\n\t\"Content-Type\":        true,\n\t\"Expect\":              true,\n\t\"Host\":                true,\n\t\"Keep-Alive\":          true,\n\t\"Max-Forwards\":        true,\n\t\"Pragma\":              true,\n\t\"Proxy-Authenticate\":  true,\n\t\"Proxy-Authorization\": true,\n\t\"Proxy-Connection\":    true,\n\t\"Range\":               true,\n\t\"Realm\":               true,\n\t\"Te\":                  true,\n\t\"Trailer\":             true,\n\t\"Transfer-Encoding\":   true,\n\t\"Www-Authenticate\":    true,\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http/httpguts/httplex.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage httpguts\n\nimport (\n\t\"net\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/net/idna\"\n)\n\nvar isTokenTable = [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 IsTokenRune(r rune) bool {\n\ti := int(r)\n\treturn i < len(isTokenTable) && isTokenTable[i]\n}\n\nfunc isNotToken(r rune) bool {\n\treturn !IsTokenRune(r)\n}\n\n// HeaderValuesContainsToken reports whether any string in values\n// contains the provided token, ASCII case-insensitively.\nfunc HeaderValuesContainsToken(values []string, token string) bool {\n\tfor _, v := range values {\n\t\tif headerValueContainsToken(v, token) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// isOWS reports whether b is an optional whitespace byte, as defined\n// by RFC 7230 section 3.2.3.\nfunc isOWS(b byte) bool { return b == ' ' || b == '\\t' }\n\n// trimOWS returns x with all optional whitespace removes from the\n// beginning and end.\nfunc trimOWS(x string) string {\n\t// TODO: consider using strings.Trim(x, \" \\t\") instead,\n\t// if and when it's fast enough. See issue 10292.\n\t// But this ASCII-only code will probably always beat UTF-8\n\t// aware code.\n\tfor len(x) > 0 && isOWS(x[0]) {\n\t\tx = x[1:]\n\t}\n\tfor len(x) > 0 && isOWS(x[len(x)-1]) {\n\t\tx = x[:len(x)-1]\n\t}\n\treturn x\n}\n\n// headerValueContainsToken reports whether v (assumed to be a\n// 0#element, in the ABNF extension described in RFC 7230 section 7)\n// contains token amongst its comma-separated tokens, ASCII\n// case-insensitively.\nfunc headerValueContainsToken(v string, token string) bool {\n\tfor comma := strings.IndexByte(v, ','); comma != -1; comma = strings.IndexByte(v, ',') {\n\t\tif tokenEqual(trimOWS(v[:comma]), token) {\n\t\t\treturn true\n\t\t}\n\t\tv = v[comma+1:]\n\t}\n\treturn tokenEqual(trimOWS(v), token)\n}\n\n// lowerASCII returns the ASCII lowercase version of b.\nfunc lowerASCII(b byte) byte {\n\tif 'A' <= b && b <= 'Z' {\n\t\treturn b + ('a' - 'A')\n\t}\n\treturn b\n}\n\n// tokenEqual reports whether t1 and t2 are equal, ASCII case-insensitively.\nfunc tokenEqual(t1, t2 string) bool {\n\tif len(t1) != len(t2) {\n\t\treturn false\n\t}\n\tfor i, b := range t1 {\n\t\tif b >= utf8.RuneSelf {\n\t\t\t// No UTF-8 or non-ASCII allowed in tokens.\n\t\t\treturn false\n\t\t}\n\t\tif lowerASCII(byte(b)) != lowerASCII(t2[i]) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// isLWS reports whether b is linear white space, according\n// to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2\n//\n//\tLWS            = [CRLF] 1*( SP | HT )\nfunc isLWS(b byte) bool { return b == ' ' || b == '\\t' }\n\n// isCTL reports whether b is a control byte, according\n// to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2\n//\n//\tCTL            = <any US-ASCII control character\n//\t                 (octets 0 - 31) and DEL (127)>\nfunc isCTL(b byte) bool {\n\tconst del = 0x7f // a CTL\n\treturn b < ' ' || b == del\n}\n\n// ValidHeaderFieldName reports whether v is a valid HTTP/1.x header name.\n// HTTP/2 imposes the additional restriction that uppercase ASCII\n// letters are not allowed.\n//\n// RFC 7230 says:\n//\n//\theader-field   = field-name \":\" OWS field-value OWS\n//\tfield-name     = token\n//\ttoken          = 1*tchar\n//\ttchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\" / \"+\" / \"-\" / \".\" /\n//\t        \"^\" / \"_\" / \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\nfunc ValidHeaderFieldName(v string) bool {\n\tif len(v) == 0 {\n\t\treturn false\n\t}\n\tfor _, r := range v {\n\t\tif !IsTokenRune(r) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// ValidHostHeader reports whether h is a valid host header.\nfunc ValidHostHeader(h string) bool {\n\t// The latest spec is actually this:\n\t//\n\t// http://tools.ietf.org/html/rfc7230#section-5.4\n\t//     Host = uri-host [ \":\" port ]\n\t//\n\t// Where uri-host is:\n\t//     http://tools.ietf.org/html/rfc3986#section-3.2.2\n\t//\n\t// But we're going to be much more lenient for now and just\n\t// search for any byte that's not a valid byte in any of those\n\t// expressions.\n\tfor i := 0; i < len(h); i++ {\n\t\tif !validHostByte[h[i]] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// See the validHostHeader comment.\nvar validHostByte = [256]bool{\n\t'0': true, '1': true, '2': true, '3': true, '4': true, '5': true, '6': true, '7': true,\n\t'8': true, '9': true,\n\n\t'a': true, 'b': true, 'c': true, 'd': true, 'e': true, 'f': true, 'g': true, 'h': true,\n\t'i': true, 'j': true, 'k': true, 'l': true, 'm': true, 'n': true, 'o': true, 'p': true,\n\t'q': true, 'r': true, 's': true, 't': true, 'u': true, 'v': true, 'w': true, 'x': true,\n\t'y': true, 'z': true,\n\n\t'A': true, 'B': true, 'C': true, 'D': true, 'E': true, 'F': true, 'G': true, 'H': true,\n\t'I': true, 'J': true, 'K': true, 'L': true, 'M': true, 'N': true, 'O': true, 'P': true,\n\t'Q': true, 'R': true, 'S': true, 'T': true, 'U': true, 'V': true, 'W': true, 'X': true,\n\t'Y': true, 'Z': true,\n\n\t'!':  true, // sub-delims\n\t'$':  true, // sub-delims\n\t'%':  true, // pct-encoded (and used in IPv6 zones)\n\t'&':  true, // sub-delims\n\t'(':  true, // sub-delims\n\t')':  true, // sub-delims\n\t'*':  true, // sub-delims\n\t'+':  true, // sub-delims\n\t',':  true, // sub-delims\n\t'-':  true, // unreserved\n\t'.':  true, // unreserved\n\t':':  true, // IPv6address + Host expression's optional port\n\t';':  true, // sub-delims\n\t'=':  true, // sub-delims\n\t'[':  true,\n\t'\\'': true, // sub-delims\n\t']':  true,\n\t'_':  true, // unreserved\n\t'~':  true, // unreserved\n}\n\n// ValidHeaderFieldValue reports whether v is a valid \"field-value\" according to\n// http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 :\n//\n//\tmessage-header = field-name \":\" [ field-value ]\n//\tfield-value    = *( field-content | LWS )\n//\tfield-content  = <the OCTETs making up the field-value\n//\t                 and consisting of either *TEXT or combinations\n//\t                 of token, separators, and quoted-string>\n//\n// http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 :\n//\n//\tTEXT           = <any OCTET except CTLs,\n//\t                  but including LWS>\n//\tLWS            = [CRLF] 1*( SP | HT )\n//\tCTL            = <any US-ASCII control character\n//\t                 (octets 0 - 31) and DEL (127)>\n//\n// RFC 7230 says:\n//\n//\tfield-value    = *( field-content / obs-fold )\n//\tobj-fold       =  N/A to http2, and deprecated\n//\tfield-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n//\tfield-vchar    = VCHAR / obs-text\n//\tobs-text       = %x80-FF\n//\tVCHAR          = \"any visible [USASCII] character\"\n//\n// http2 further says: \"Similarly, HTTP/2 allows header field values\n// that are not valid. While most of the values that can be encoded\n// will not alter header field parsing, carriage return (CR, ASCII\n// 0xd), line feed (LF, ASCII 0xa), and the zero character (NUL, ASCII\n// 0x0) might be exploited by an attacker if they are translated\n// verbatim. Any request or response that contains a character not\n// permitted in a header field value MUST be treated as malformed\n// (Section 8.1.2.6). Valid characters are defined by the\n// field-content ABNF rule in Section 3.2 of [RFC7230].\"\n//\n// This function does not (yet?) properly handle the rejection of\n// strings that begin or end with SP or HTAB.\nfunc ValidHeaderFieldValue(v string) bool {\n\tfor i := 0; i < len(v); i++ {\n\t\tb := v[i]\n\t\tif isCTL(b) && !isLWS(b) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc isASCII(s string) bool {\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] >= utf8.RuneSelf {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// PunycodeHostPort returns the IDNA Punycode version\n// of the provided \"host\" or \"host:port\" string.\nfunc PunycodeHostPort(v string) (string, error) {\n\tif isASCII(v) {\n\t\treturn v, nil\n\t}\n\n\thost, port, err := net.SplitHostPort(v)\n\tif err != nil {\n\t\t// The input 'v' argument was just a \"host\" argument,\n\t\t// without a port. This error should not be returned\n\t\t// to the caller.\n\t\thost = v\n\t\tport = \"\"\n\t}\n\thost, err = idna.ToASCII(host)\n\tif err != nil {\n\t\t// Non-UTF-8? Not representable in Punycode, in any\n\t\t// case.\n\t\treturn \"\", err\n\t}\n\tif port == \"\" {\n\t\treturn host, nil\n\t}\n\treturn net.JoinHostPort(host, port), nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/.gitignore",
    "content": "*~\nh2i/h2i\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/ascii.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport \"strings\"\n\n// The HTTP protocols are defined in terms of ASCII, not Unicode. This file\n// contains helper functions which may use Unicode-aware functions which would\n// otherwise be unsafe and could introduce vulnerabilities if used improperly.\n\n// asciiEqualFold is strings.EqualFold, ASCII only. It reports whether s and t\n// are equal, ASCII-case-insensitively.\nfunc asciiEqualFold(s, t string) bool {\n\tif len(s) != len(t) {\n\t\treturn false\n\t}\n\tfor i := 0; i < len(s); i++ {\n\t\tif lower(s[i]) != lower(t[i]) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// lower returns the ASCII lowercase version of b.\nfunc lower(b byte) byte {\n\tif 'A' <= b && b <= 'Z' {\n\t\treturn b + ('a' - 'A')\n\t}\n\treturn b\n}\n\n// isASCIIPrint returns whether s is ASCII and printable according to\n// https://tools.ietf.org/html/rfc20#section-4.2.\nfunc isASCIIPrint(s string) bool {\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] < ' ' || s[i] > '~' {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// asciiToLower returns the lowercase version of s if s is ASCII and printable,\n// and whether or not it was.\nfunc asciiToLower(s string) (lower string, ok bool) {\n\tif !isASCIIPrint(s) {\n\t\treturn \"\", false\n\t}\n\treturn strings.ToLower(s), true\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/ciphers.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\n// A list of the possible cipher suite ids. Taken from\n// https://www.iana.org/assignments/tls-parameters/tls-parameters.txt\n\nconst (\n\tcipher_TLS_NULL_WITH_NULL_NULL               uint16 = 0x0000\n\tcipher_TLS_RSA_WITH_NULL_MD5                 uint16 = 0x0001\n\tcipher_TLS_RSA_WITH_NULL_SHA                 uint16 = 0x0002\n\tcipher_TLS_RSA_EXPORT_WITH_RC4_40_MD5        uint16 = 0x0003\n\tcipher_TLS_RSA_WITH_RC4_128_MD5              uint16 = 0x0004\n\tcipher_TLS_RSA_WITH_RC4_128_SHA              uint16 = 0x0005\n\tcipher_TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5    uint16 = 0x0006\n\tcipher_TLS_RSA_WITH_IDEA_CBC_SHA             uint16 = 0x0007\n\tcipher_TLS_RSA_EXPORT_WITH_DES40_CBC_SHA     uint16 = 0x0008\n\tcipher_TLS_RSA_WITH_DES_CBC_SHA              uint16 = 0x0009\n\tcipher_TLS_RSA_WITH_3DES_EDE_CBC_SHA         uint16 = 0x000A\n\tcipher_TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA  uint16 = 0x000B\n\tcipher_TLS_DH_DSS_WITH_DES_CBC_SHA           uint16 = 0x000C\n\tcipher_TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA      uint16 = 0x000D\n\tcipher_TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA  uint16 = 0x000E\n\tcipher_TLS_DH_RSA_WITH_DES_CBC_SHA           uint16 = 0x000F\n\tcipher_TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA      uint16 = 0x0010\n\tcipher_TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA uint16 = 0x0011\n\tcipher_TLS_DHE_DSS_WITH_DES_CBC_SHA          uint16 = 0x0012\n\tcipher_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA     uint16 = 0x0013\n\tcipher_TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA uint16 = 0x0014\n\tcipher_TLS_DHE_RSA_WITH_DES_CBC_SHA          uint16 = 0x0015\n\tcipher_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA     uint16 = 0x0016\n\tcipher_TLS_DH_anon_EXPORT_WITH_RC4_40_MD5    uint16 = 0x0017\n\tcipher_TLS_DH_anon_WITH_RC4_128_MD5          uint16 = 0x0018\n\tcipher_TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA uint16 = 0x0019\n\tcipher_TLS_DH_anon_WITH_DES_CBC_SHA          uint16 = 0x001A\n\tcipher_TLS_DH_anon_WITH_3DES_EDE_CBC_SHA     uint16 = 0x001B\n\t// Reserved uint16 =  0x001C-1D\n\tcipher_TLS_KRB5_WITH_DES_CBC_SHA             uint16 = 0x001E\n\tcipher_TLS_KRB5_WITH_3DES_EDE_CBC_SHA        uint16 = 0x001F\n\tcipher_TLS_KRB5_WITH_RC4_128_SHA             uint16 = 0x0020\n\tcipher_TLS_KRB5_WITH_IDEA_CBC_SHA            uint16 = 0x0021\n\tcipher_TLS_KRB5_WITH_DES_CBC_MD5             uint16 = 0x0022\n\tcipher_TLS_KRB5_WITH_3DES_EDE_CBC_MD5        uint16 = 0x0023\n\tcipher_TLS_KRB5_WITH_RC4_128_MD5             uint16 = 0x0024\n\tcipher_TLS_KRB5_WITH_IDEA_CBC_MD5            uint16 = 0x0025\n\tcipher_TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA   uint16 = 0x0026\n\tcipher_TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA   uint16 = 0x0027\n\tcipher_TLS_KRB5_EXPORT_WITH_RC4_40_SHA       uint16 = 0x0028\n\tcipher_TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5   uint16 = 0x0029\n\tcipher_TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5   uint16 = 0x002A\n\tcipher_TLS_KRB5_EXPORT_WITH_RC4_40_MD5       uint16 = 0x002B\n\tcipher_TLS_PSK_WITH_NULL_SHA                 uint16 = 0x002C\n\tcipher_TLS_DHE_PSK_WITH_NULL_SHA             uint16 = 0x002D\n\tcipher_TLS_RSA_PSK_WITH_NULL_SHA             uint16 = 0x002E\n\tcipher_TLS_RSA_WITH_AES_128_CBC_SHA          uint16 = 0x002F\n\tcipher_TLS_DH_DSS_WITH_AES_128_CBC_SHA       uint16 = 0x0030\n\tcipher_TLS_DH_RSA_WITH_AES_128_CBC_SHA       uint16 = 0x0031\n\tcipher_TLS_DHE_DSS_WITH_AES_128_CBC_SHA      uint16 = 0x0032\n\tcipher_TLS_DHE_RSA_WITH_AES_128_CBC_SHA      uint16 = 0x0033\n\tcipher_TLS_DH_anon_WITH_AES_128_CBC_SHA      uint16 = 0x0034\n\tcipher_TLS_RSA_WITH_AES_256_CBC_SHA          uint16 = 0x0035\n\tcipher_TLS_DH_DSS_WITH_AES_256_CBC_SHA       uint16 = 0x0036\n\tcipher_TLS_DH_RSA_WITH_AES_256_CBC_SHA       uint16 = 0x0037\n\tcipher_TLS_DHE_DSS_WITH_AES_256_CBC_SHA      uint16 = 0x0038\n\tcipher_TLS_DHE_RSA_WITH_AES_256_CBC_SHA      uint16 = 0x0039\n\tcipher_TLS_DH_anon_WITH_AES_256_CBC_SHA      uint16 = 0x003A\n\tcipher_TLS_RSA_WITH_NULL_SHA256              uint16 = 0x003B\n\tcipher_TLS_RSA_WITH_AES_128_CBC_SHA256       uint16 = 0x003C\n\tcipher_TLS_RSA_WITH_AES_256_CBC_SHA256       uint16 = 0x003D\n\tcipher_TLS_DH_DSS_WITH_AES_128_CBC_SHA256    uint16 = 0x003E\n\tcipher_TLS_DH_RSA_WITH_AES_128_CBC_SHA256    uint16 = 0x003F\n\tcipher_TLS_DHE_DSS_WITH_AES_128_CBC_SHA256   uint16 = 0x0040\n\tcipher_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA     uint16 = 0x0041\n\tcipher_TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA  uint16 = 0x0042\n\tcipher_TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA  uint16 = 0x0043\n\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA uint16 = 0x0044\n\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA uint16 = 0x0045\n\tcipher_TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA uint16 = 0x0046\n\t// Reserved uint16 =  0x0047-4F\n\t// Reserved uint16 =  0x0050-58\n\t// Reserved uint16 =  0x0059-5C\n\t// Unassigned uint16 =  0x005D-5F\n\t// Reserved uint16 =  0x0060-66\n\tcipher_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 uint16 = 0x0067\n\tcipher_TLS_DH_DSS_WITH_AES_256_CBC_SHA256  uint16 = 0x0068\n\tcipher_TLS_DH_RSA_WITH_AES_256_CBC_SHA256  uint16 = 0x0069\n\tcipher_TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 uint16 = 0x006A\n\tcipher_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 uint16 = 0x006B\n\tcipher_TLS_DH_anon_WITH_AES_128_CBC_SHA256 uint16 = 0x006C\n\tcipher_TLS_DH_anon_WITH_AES_256_CBC_SHA256 uint16 = 0x006D\n\t// Unassigned uint16 =  0x006E-83\n\tcipher_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA        uint16 = 0x0084\n\tcipher_TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA     uint16 = 0x0085\n\tcipher_TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA     uint16 = 0x0086\n\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA    uint16 = 0x0087\n\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA    uint16 = 0x0088\n\tcipher_TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA    uint16 = 0x0089\n\tcipher_TLS_PSK_WITH_RC4_128_SHA                 uint16 = 0x008A\n\tcipher_TLS_PSK_WITH_3DES_EDE_CBC_SHA            uint16 = 0x008B\n\tcipher_TLS_PSK_WITH_AES_128_CBC_SHA             uint16 = 0x008C\n\tcipher_TLS_PSK_WITH_AES_256_CBC_SHA             uint16 = 0x008D\n\tcipher_TLS_DHE_PSK_WITH_RC4_128_SHA             uint16 = 0x008E\n\tcipher_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA        uint16 = 0x008F\n\tcipher_TLS_DHE_PSK_WITH_AES_128_CBC_SHA         uint16 = 0x0090\n\tcipher_TLS_DHE_PSK_WITH_AES_256_CBC_SHA         uint16 = 0x0091\n\tcipher_TLS_RSA_PSK_WITH_RC4_128_SHA             uint16 = 0x0092\n\tcipher_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA        uint16 = 0x0093\n\tcipher_TLS_RSA_PSK_WITH_AES_128_CBC_SHA         uint16 = 0x0094\n\tcipher_TLS_RSA_PSK_WITH_AES_256_CBC_SHA         uint16 = 0x0095\n\tcipher_TLS_RSA_WITH_SEED_CBC_SHA                uint16 = 0x0096\n\tcipher_TLS_DH_DSS_WITH_SEED_CBC_SHA             uint16 = 0x0097\n\tcipher_TLS_DH_RSA_WITH_SEED_CBC_SHA             uint16 = 0x0098\n\tcipher_TLS_DHE_DSS_WITH_SEED_CBC_SHA            uint16 = 0x0099\n\tcipher_TLS_DHE_RSA_WITH_SEED_CBC_SHA            uint16 = 0x009A\n\tcipher_TLS_DH_anon_WITH_SEED_CBC_SHA            uint16 = 0x009B\n\tcipher_TLS_RSA_WITH_AES_128_GCM_SHA256          uint16 = 0x009C\n\tcipher_TLS_RSA_WITH_AES_256_GCM_SHA384          uint16 = 0x009D\n\tcipher_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256      uint16 = 0x009E\n\tcipher_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384      uint16 = 0x009F\n\tcipher_TLS_DH_RSA_WITH_AES_128_GCM_SHA256       uint16 = 0x00A0\n\tcipher_TLS_DH_RSA_WITH_AES_256_GCM_SHA384       uint16 = 0x00A1\n\tcipher_TLS_DHE_DSS_WITH_AES_128_GCM_SHA256      uint16 = 0x00A2\n\tcipher_TLS_DHE_DSS_WITH_AES_256_GCM_SHA384      uint16 = 0x00A3\n\tcipher_TLS_DH_DSS_WITH_AES_128_GCM_SHA256       uint16 = 0x00A4\n\tcipher_TLS_DH_DSS_WITH_AES_256_GCM_SHA384       uint16 = 0x00A5\n\tcipher_TLS_DH_anon_WITH_AES_128_GCM_SHA256      uint16 = 0x00A6\n\tcipher_TLS_DH_anon_WITH_AES_256_GCM_SHA384      uint16 = 0x00A7\n\tcipher_TLS_PSK_WITH_AES_128_GCM_SHA256          uint16 = 0x00A8\n\tcipher_TLS_PSK_WITH_AES_256_GCM_SHA384          uint16 = 0x00A9\n\tcipher_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256      uint16 = 0x00AA\n\tcipher_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384      uint16 = 0x00AB\n\tcipher_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256      uint16 = 0x00AC\n\tcipher_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384      uint16 = 0x00AD\n\tcipher_TLS_PSK_WITH_AES_128_CBC_SHA256          uint16 = 0x00AE\n\tcipher_TLS_PSK_WITH_AES_256_CBC_SHA384          uint16 = 0x00AF\n\tcipher_TLS_PSK_WITH_NULL_SHA256                 uint16 = 0x00B0\n\tcipher_TLS_PSK_WITH_NULL_SHA384                 uint16 = 0x00B1\n\tcipher_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256      uint16 = 0x00B2\n\tcipher_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384      uint16 = 0x00B3\n\tcipher_TLS_DHE_PSK_WITH_NULL_SHA256             uint16 = 0x00B4\n\tcipher_TLS_DHE_PSK_WITH_NULL_SHA384             uint16 = 0x00B5\n\tcipher_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256      uint16 = 0x00B6\n\tcipher_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384      uint16 = 0x00B7\n\tcipher_TLS_RSA_PSK_WITH_NULL_SHA256             uint16 = 0x00B8\n\tcipher_TLS_RSA_PSK_WITH_NULL_SHA384             uint16 = 0x00B9\n\tcipher_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256     uint16 = 0x00BA\n\tcipher_TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256  uint16 = 0x00BB\n\tcipher_TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256  uint16 = 0x00BC\n\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0x00BD\n\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0x00BE\n\tcipher_TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0x00BF\n\tcipher_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256     uint16 = 0x00C0\n\tcipher_TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256  uint16 = 0x00C1\n\tcipher_TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256  uint16 = 0x00C2\n\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 uint16 = 0x00C3\n\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 uint16 = 0x00C4\n\tcipher_TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256 uint16 = 0x00C5\n\t// Unassigned uint16 =  0x00C6-FE\n\tcipher_TLS_EMPTY_RENEGOTIATION_INFO_SCSV uint16 = 0x00FF\n\t// Unassigned uint16 =  0x01-55,*\n\tcipher_TLS_FALLBACK_SCSV uint16 = 0x5600\n\t// Unassigned                                   uint16 = 0x5601 - 0xC000\n\tcipher_TLS_ECDH_ECDSA_WITH_NULL_SHA                 uint16 = 0xC001\n\tcipher_TLS_ECDH_ECDSA_WITH_RC4_128_SHA              uint16 = 0xC002\n\tcipher_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA         uint16 = 0xC003\n\tcipher_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA          uint16 = 0xC004\n\tcipher_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA          uint16 = 0xC005\n\tcipher_TLS_ECDHE_ECDSA_WITH_NULL_SHA                uint16 = 0xC006\n\tcipher_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA             uint16 = 0xC007\n\tcipher_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA        uint16 = 0xC008\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA         uint16 = 0xC009\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA         uint16 = 0xC00A\n\tcipher_TLS_ECDH_RSA_WITH_NULL_SHA                   uint16 = 0xC00B\n\tcipher_TLS_ECDH_RSA_WITH_RC4_128_SHA                uint16 = 0xC00C\n\tcipher_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA           uint16 = 0xC00D\n\tcipher_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA            uint16 = 0xC00E\n\tcipher_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA            uint16 = 0xC00F\n\tcipher_TLS_ECDHE_RSA_WITH_NULL_SHA                  uint16 = 0xC010\n\tcipher_TLS_ECDHE_RSA_WITH_RC4_128_SHA               uint16 = 0xC011\n\tcipher_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA          uint16 = 0xC012\n\tcipher_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA           uint16 = 0xC013\n\tcipher_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA           uint16 = 0xC014\n\tcipher_TLS_ECDH_anon_WITH_NULL_SHA                  uint16 = 0xC015\n\tcipher_TLS_ECDH_anon_WITH_RC4_128_SHA               uint16 = 0xC016\n\tcipher_TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA          uint16 = 0xC017\n\tcipher_TLS_ECDH_anon_WITH_AES_128_CBC_SHA           uint16 = 0xC018\n\tcipher_TLS_ECDH_anon_WITH_AES_256_CBC_SHA           uint16 = 0xC019\n\tcipher_TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA            uint16 = 0xC01A\n\tcipher_TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA        uint16 = 0xC01B\n\tcipher_TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA        uint16 = 0xC01C\n\tcipher_TLS_SRP_SHA_WITH_AES_128_CBC_SHA             uint16 = 0xC01D\n\tcipher_TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA         uint16 = 0xC01E\n\tcipher_TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA         uint16 = 0xC01F\n\tcipher_TLS_SRP_SHA_WITH_AES_256_CBC_SHA             uint16 = 0xC020\n\tcipher_TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA         uint16 = 0xC021\n\tcipher_TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA         uint16 = 0xC022\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256      uint16 = 0xC023\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384      uint16 = 0xC024\n\tcipher_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256       uint16 = 0xC025\n\tcipher_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384       uint16 = 0xC026\n\tcipher_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256        uint16 = 0xC027\n\tcipher_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384        uint16 = 0xC028\n\tcipher_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256         uint16 = 0xC029\n\tcipher_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384         uint16 = 0xC02A\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256      uint16 = 0xC02B\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384      uint16 = 0xC02C\n\tcipher_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256       uint16 = 0xC02D\n\tcipher_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384       uint16 = 0xC02E\n\tcipher_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256        uint16 = 0xC02F\n\tcipher_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384        uint16 = 0xC030\n\tcipher_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256         uint16 = 0xC031\n\tcipher_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384         uint16 = 0xC032\n\tcipher_TLS_ECDHE_PSK_WITH_RC4_128_SHA               uint16 = 0xC033\n\tcipher_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA          uint16 = 0xC034\n\tcipher_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA           uint16 = 0xC035\n\tcipher_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA           uint16 = 0xC036\n\tcipher_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256        uint16 = 0xC037\n\tcipher_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384        uint16 = 0xC038\n\tcipher_TLS_ECDHE_PSK_WITH_NULL_SHA                  uint16 = 0xC039\n\tcipher_TLS_ECDHE_PSK_WITH_NULL_SHA256               uint16 = 0xC03A\n\tcipher_TLS_ECDHE_PSK_WITH_NULL_SHA384               uint16 = 0xC03B\n\tcipher_TLS_RSA_WITH_ARIA_128_CBC_SHA256             uint16 = 0xC03C\n\tcipher_TLS_RSA_WITH_ARIA_256_CBC_SHA384             uint16 = 0xC03D\n\tcipher_TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256          uint16 = 0xC03E\n\tcipher_TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384          uint16 = 0xC03F\n\tcipher_TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256          uint16 = 0xC040\n\tcipher_TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384          uint16 = 0xC041\n\tcipher_TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256         uint16 = 0xC042\n\tcipher_TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384         uint16 = 0xC043\n\tcipher_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256         uint16 = 0xC044\n\tcipher_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384         uint16 = 0xC045\n\tcipher_TLS_DH_anon_WITH_ARIA_128_CBC_SHA256         uint16 = 0xC046\n\tcipher_TLS_DH_anon_WITH_ARIA_256_CBC_SHA384         uint16 = 0xC047\n\tcipher_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256     uint16 = 0xC048\n\tcipher_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384     uint16 = 0xC049\n\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256      uint16 = 0xC04A\n\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384      uint16 = 0xC04B\n\tcipher_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256       uint16 = 0xC04C\n\tcipher_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384       uint16 = 0xC04D\n\tcipher_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256        uint16 = 0xC04E\n\tcipher_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384        uint16 = 0xC04F\n\tcipher_TLS_RSA_WITH_ARIA_128_GCM_SHA256             uint16 = 0xC050\n\tcipher_TLS_RSA_WITH_ARIA_256_GCM_SHA384             uint16 = 0xC051\n\tcipher_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256         uint16 = 0xC052\n\tcipher_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384         uint16 = 0xC053\n\tcipher_TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256          uint16 = 0xC054\n\tcipher_TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384          uint16 = 0xC055\n\tcipher_TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256         uint16 = 0xC056\n\tcipher_TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384         uint16 = 0xC057\n\tcipher_TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256          uint16 = 0xC058\n\tcipher_TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384          uint16 = 0xC059\n\tcipher_TLS_DH_anon_WITH_ARIA_128_GCM_SHA256         uint16 = 0xC05A\n\tcipher_TLS_DH_anon_WITH_ARIA_256_GCM_SHA384         uint16 = 0xC05B\n\tcipher_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256     uint16 = 0xC05C\n\tcipher_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384     uint16 = 0xC05D\n\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256      uint16 = 0xC05E\n\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384      uint16 = 0xC05F\n\tcipher_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256       uint16 = 0xC060\n\tcipher_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384       uint16 = 0xC061\n\tcipher_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256        uint16 = 0xC062\n\tcipher_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384        uint16 = 0xC063\n\tcipher_TLS_PSK_WITH_ARIA_128_CBC_SHA256             uint16 = 0xC064\n\tcipher_TLS_PSK_WITH_ARIA_256_CBC_SHA384             uint16 = 0xC065\n\tcipher_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256         uint16 = 0xC066\n\tcipher_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384         uint16 = 0xC067\n\tcipher_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256         uint16 = 0xC068\n\tcipher_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384         uint16 = 0xC069\n\tcipher_TLS_PSK_WITH_ARIA_128_GCM_SHA256             uint16 = 0xC06A\n\tcipher_TLS_PSK_WITH_ARIA_256_GCM_SHA384             uint16 = 0xC06B\n\tcipher_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256         uint16 = 0xC06C\n\tcipher_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384         uint16 = 0xC06D\n\tcipher_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256         uint16 = 0xC06E\n\tcipher_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384         uint16 = 0xC06F\n\tcipher_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256       uint16 = 0xC070\n\tcipher_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384       uint16 = 0xC071\n\tcipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 uint16 = 0xC072\n\tcipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 uint16 = 0xC073\n\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256  uint16 = 0xC074\n\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384  uint16 = 0xC075\n\tcipher_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256   uint16 = 0xC076\n\tcipher_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384   uint16 = 0xC077\n\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256    uint16 = 0xC078\n\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384    uint16 = 0xC079\n\tcipher_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256         uint16 = 0xC07A\n\tcipher_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384         uint16 = 0xC07B\n\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256     uint16 = 0xC07C\n\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384     uint16 = 0xC07D\n\tcipher_TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256      uint16 = 0xC07E\n\tcipher_TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384      uint16 = 0xC07F\n\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256     uint16 = 0xC080\n\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384     uint16 = 0xC081\n\tcipher_TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256      uint16 = 0xC082\n\tcipher_TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384      uint16 = 0xC083\n\tcipher_TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256     uint16 = 0xC084\n\tcipher_TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384     uint16 = 0xC085\n\tcipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 uint16 = 0xC086\n\tcipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 uint16 = 0xC087\n\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256  uint16 = 0xC088\n\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384  uint16 = 0xC089\n\tcipher_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256   uint16 = 0xC08A\n\tcipher_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384   uint16 = 0xC08B\n\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256    uint16 = 0xC08C\n\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384    uint16 = 0xC08D\n\tcipher_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256         uint16 = 0xC08E\n\tcipher_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384         uint16 = 0xC08F\n\tcipher_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256     uint16 = 0xC090\n\tcipher_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384     uint16 = 0xC091\n\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256     uint16 = 0xC092\n\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384     uint16 = 0xC093\n\tcipher_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256         uint16 = 0xC094\n\tcipher_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384         uint16 = 0xC095\n\tcipher_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256     uint16 = 0xC096\n\tcipher_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384     uint16 = 0xC097\n\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256     uint16 = 0xC098\n\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384     uint16 = 0xC099\n\tcipher_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256   uint16 = 0xC09A\n\tcipher_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384   uint16 = 0xC09B\n\tcipher_TLS_RSA_WITH_AES_128_CCM                     uint16 = 0xC09C\n\tcipher_TLS_RSA_WITH_AES_256_CCM                     uint16 = 0xC09D\n\tcipher_TLS_DHE_RSA_WITH_AES_128_CCM                 uint16 = 0xC09E\n\tcipher_TLS_DHE_RSA_WITH_AES_256_CCM                 uint16 = 0xC09F\n\tcipher_TLS_RSA_WITH_AES_128_CCM_8                   uint16 = 0xC0A0\n\tcipher_TLS_RSA_WITH_AES_256_CCM_8                   uint16 = 0xC0A1\n\tcipher_TLS_DHE_RSA_WITH_AES_128_CCM_8               uint16 = 0xC0A2\n\tcipher_TLS_DHE_RSA_WITH_AES_256_CCM_8               uint16 = 0xC0A3\n\tcipher_TLS_PSK_WITH_AES_128_CCM                     uint16 = 0xC0A4\n\tcipher_TLS_PSK_WITH_AES_256_CCM                     uint16 = 0xC0A5\n\tcipher_TLS_DHE_PSK_WITH_AES_128_CCM                 uint16 = 0xC0A6\n\tcipher_TLS_DHE_PSK_WITH_AES_256_CCM                 uint16 = 0xC0A7\n\tcipher_TLS_PSK_WITH_AES_128_CCM_8                   uint16 = 0xC0A8\n\tcipher_TLS_PSK_WITH_AES_256_CCM_8                   uint16 = 0xC0A9\n\tcipher_TLS_PSK_DHE_WITH_AES_128_CCM_8               uint16 = 0xC0AA\n\tcipher_TLS_PSK_DHE_WITH_AES_256_CCM_8               uint16 = 0xC0AB\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_CCM             uint16 = 0xC0AC\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_CCM             uint16 = 0xC0AD\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8           uint16 = 0xC0AE\n\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8           uint16 = 0xC0AF\n\t// Unassigned uint16 =  0xC0B0-FF\n\t// Unassigned uint16 =  0xC1-CB,*\n\t// Unassigned uint16 =  0xCC00-A7\n\tcipher_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256   uint16 = 0xCCA8\n\tcipher_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 uint16 = 0xCCA9\n\tcipher_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256     uint16 = 0xCCAA\n\tcipher_TLS_PSK_WITH_CHACHA20_POLY1305_SHA256         uint16 = 0xCCAB\n\tcipher_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256   uint16 = 0xCCAC\n\tcipher_TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256     uint16 = 0xCCAD\n\tcipher_TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256     uint16 = 0xCCAE\n)\n\n// isBadCipher reports whether the cipher is blacklisted by the HTTP/2 spec.\n// References:\n// https://tools.ietf.org/html/rfc7540#appendix-A\n// Reject cipher suites from Appendix A.\n// \"This list includes those cipher suites that do not\n// offer an ephemeral key exchange and those that are\n// based on the TLS null, stream or block cipher type\"\nfunc isBadCipher(cipher uint16) bool {\n\tswitch cipher {\n\tcase cipher_TLS_NULL_WITH_NULL_NULL,\n\t\tcipher_TLS_RSA_WITH_NULL_MD5,\n\t\tcipher_TLS_RSA_WITH_NULL_SHA,\n\t\tcipher_TLS_RSA_EXPORT_WITH_RC4_40_MD5,\n\t\tcipher_TLS_RSA_WITH_RC4_128_MD5,\n\t\tcipher_TLS_RSA_WITH_RC4_128_SHA,\n\t\tcipher_TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5,\n\t\tcipher_TLS_RSA_WITH_IDEA_CBC_SHA,\n\t\tcipher_TLS_RSA_EXPORT_WITH_DES40_CBC_SHA,\n\t\tcipher_TLS_RSA_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_RSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_DH_anon_EXPORT_WITH_RC4_40_MD5,\n\t\tcipher_TLS_DH_anon_WITH_RC4_128_MD5,\n\t\tcipher_TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_KRB5_WITH_DES_CBC_SHA,\n\t\tcipher_TLS_KRB5_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_KRB5_WITH_RC4_128_SHA,\n\t\tcipher_TLS_KRB5_WITH_IDEA_CBC_SHA,\n\t\tcipher_TLS_KRB5_WITH_DES_CBC_MD5,\n\t\tcipher_TLS_KRB5_WITH_3DES_EDE_CBC_MD5,\n\t\tcipher_TLS_KRB5_WITH_RC4_128_MD5,\n\t\tcipher_TLS_KRB5_WITH_IDEA_CBC_MD5,\n\t\tcipher_TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA,\n\t\tcipher_TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA,\n\t\tcipher_TLS_KRB5_EXPORT_WITH_RC4_40_SHA,\n\t\tcipher_TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5,\n\t\tcipher_TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5,\n\t\tcipher_TLS_KRB5_EXPORT_WITH_RC4_40_MD5,\n\t\tcipher_TLS_PSK_WITH_NULL_SHA,\n\t\tcipher_TLS_DHE_PSK_WITH_NULL_SHA,\n\t\tcipher_TLS_RSA_PSK_WITH_NULL_SHA,\n\t\tcipher_TLS_RSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_RSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_RSA_WITH_NULL_SHA256,\n\t\tcipher_TLS_RSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_WITH_AES_256_CBC_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_AES_256_CBC_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_AES_256_CBC_SHA256,\n\t\tcipher_TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,\n\t\tcipher_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_AES_256_CBC_SHA256,\n\t\tcipher_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA,\n\t\tcipher_TLS_PSK_WITH_RC4_128_SHA,\n\t\tcipher_TLS_PSK_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_PSK_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_PSK_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_DHE_PSK_WITH_RC4_128_SHA,\n\t\tcipher_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_DHE_PSK_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_DHE_PSK_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_RSA_PSK_WITH_RC4_128_SHA,\n\t\tcipher_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_RSA_PSK_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_RSA_PSK_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_RSA_WITH_SEED_CBC_SHA,\n\t\tcipher_TLS_DH_DSS_WITH_SEED_CBC_SHA,\n\t\tcipher_TLS_DH_RSA_WITH_SEED_CBC_SHA,\n\t\tcipher_TLS_DHE_DSS_WITH_SEED_CBC_SHA,\n\t\tcipher_TLS_DHE_RSA_WITH_SEED_CBC_SHA,\n\t\tcipher_TLS_DH_anon_WITH_SEED_CBC_SHA,\n\t\tcipher_TLS_RSA_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_RSA_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_DH_RSA_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_DH_DSS_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_DH_anon_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_PSK_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_PSK_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_PSK_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_PSK_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_PSK_WITH_NULL_SHA256,\n\t\tcipher_TLS_PSK_WITH_NULL_SHA384,\n\t\tcipher_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_DHE_PSK_WITH_NULL_SHA256,\n\t\tcipher_TLS_DHE_PSK_WITH_NULL_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_NULL_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_NULL_SHA384,\n\t\tcipher_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256,\n\t\tcipher_TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256,\n\t\tcipher_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256,\n\t\tcipher_TLS_EMPTY_RENEGOTIATION_INFO_SCSV,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_NULL_SHA,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_RC4_128_SHA,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_NULL_SHA,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_ECDH_RSA_WITH_NULL_SHA,\n\t\tcipher_TLS_ECDH_RSA_WITH_RC4_128_SHA,\n\t\tcipher_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_ECDHE_RSA_WITH_NULL_SHA,\n\t\tcipher_TLS_ECDHE_RSA_WITH_RC4_128_SHA,\n\t\tcipher_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_ECDH_anon_WITH_NULL_SHA,\n\t\tcipher_TLS_ECDH_anon_WITH_RC4_128_SHA,\n\t\tcipher_TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_ECDH_anon_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_ECDH_anon_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,\n\t\tcipher_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,\n\t\tcipher_TLS_ECDHE_PSK_WITH_RC4_128_SHA,\n\t\tcipher_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,\n\t\tcipher_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,\n\t\tcipher_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,\n\t\tcipher_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_PSK_WITH_NULL_SHA,\n\t\tcipher_TLS_ECDHE_PSK_WITH_NULL_SHA256,\n\t\tcipher_TLS_ECDHE_PSK_WITH_NULL_SHA384,\n\t\tcipher_TLS_RSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_DH_anon_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_RSA_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_RSA_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_DH_anon_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_PSK_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_PSK_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_PSK_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_PSK_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384,\n\t\tcipher_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384,\n\t\tcipher_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,\n\t\tcipher_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,\n\t\tcipher_TLS_RSA_WITH_AES_128_CCM,\n\t\tcipher_TLS_RSA_WITH_AES_256_CCM,\n\t\tcipher_TLS_RSA_WITH_AES_128_CCM_8,\n\t\tcipher_TLS_RSA_WITH_AES_256_CCM_8,\n\t\tcipher_TLS_PSK_WITH_AES_128_CCM,\n\t\tcipher_TLS_PSK_WITH_AES_256_CCM,\n\t\tcipher_TLS_PSK_WITH_AES_128_CCM_8,\n\t\tcipher_TLS_PSK_WITH_AES_256_CCM_8:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/client_conn_pool.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Transport code's client connection pooling.\n\npackage http2\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"errors\"\n\t\"net/http\"\n\t\"sync\"\n)\n\n// ClientConnPool manages a pool of HTTP/2 client connections.\ntype ClientConnPool interface {\n\t// GetClientConn returns a specific HTTP/2 connection (usually\n\t// a TLS-TCP connection) to an HTTP/2 server. On success, the\n\t// returned ClientConn accounts for the upcoming RoundTrip\n\t// call, so the caller should not omit it. If the caller needs\n\t// to, ClientConn.RoundTrip can be called with a bogus\n\t// new(http.Request) to release the stream reservation.\n\tGetClientConn(req *http.Request, addr string) (*ClientConn, error)\n\tMarkDead(*ClientConn)\n}\n\n// clientConnPoolIdleCloser is the interface implemented by ClientConnPool\n// implementations which can close their idle connections.\ntype clientConnPoolIdleCloser interface {\n\tClientConnPool\n\tcloseIdleConnections()\n}\n\nvar (\n\t_ clientConnPoolIdleCloser = (*clientConnPool)(nil)\n\t_ clientConnPoolIdleCloser = noDialClientConnPool{}\n)\n\n// TODO: use singleflight for dialing and addConnCalls?\ntype clientConnPool struct {\n\tt *Transport\n\n\tmu sync.Mutex // TODO: maybe switch to RWMutex\n\t// TODO: add support for sharing conns based on cert names\n\t// (e.g. share conn for googleapis.com and appspot.com)\n\tconns        map[string][]*ClientConn // key is host:port\n\tdialing      map[string]*dialCall     // currently in-flight dials\n\tkeys         map[*ClientConn][]string\n\taddConnCalls map[string]*addConnCall // in-flight addConnIfNeeded calls\n}\n\nfunc (p *clientConnPool) GetClientConn(req *http.Request, addr string) (*ClientConn, error) {\n\treturn p.getClientConn(req, addr, dialOnMiss)\n}\n\nconst (\n\tdialOnMiss   = true\n\tnoDialOnMiss = false\n)\n\nfunc (p *clientConnPool) getClientConn(req *http.Request, addr string, dialOnMiss bool) (*ClientConn, error) {\n\t// TODO(dneil): Dial a new connection when t.DisableKeepAlives is set?\n\tif isConnectionCloseRequest(req) && dialOnMiss {\n\t\t// It gets its own connection.\n\t\ttraceGetConn(req, addr)\n\t\tconst singleUse = true\n\t\tcc, err := p.t.dialClientConn(req.Context(), addr, singleUse)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn cc, nil\n\t}\n\tfor {\n\t\tp.mu.Lock()\n\t\tfor _, cc := range p.conns[addr] {\n\t\t\tif cc.ReserveNewRequest() {\n\t\t\t\t// When a connection is presented to us by the net/http package,\n\t\t\t\t// the GetConn hook has already been called.\n\t\t\t\t// Don't call it a second time here.\n\t\t\t\tif !cc.getConnCalled {\n\t\t\t\t\ttraceGetConn(req, addr)\n\t\t\t\t}\n\t\t\t\tcc.getConnCalled = false\n\t\t\t\tp.mu.Unlock()\n\t\t\t\treturn cc, nil\n\t\t\t}\n\t\t}\n\t\tif !dialOnMiss {\n\t\t\tp.mu.Unlock()\n\t\t\treturn nil, ErrNoCachedConn\n\t\t}\n\t\ttraceGetConn(req, addr)\n\t\tcall := p.getStartDialLocked(req.Context(), addr)\n\t\tp.mu.Unlock()\n\t\t<-call.done\n\t\tif shouldRetryDial(call, req) {\n\t\t\tcontinue\n\t\t}\n\t\tcc, err := call.res, call.err\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif cc.ReserveNewRequest() {\n\t\t\treturn cc, nil\n\t\t}\n\t}\n}\n\n// dialCall is an in-flight Transport dial call to a host.\ntype dialCall struct {\n\t_ incomparable\n\tp *clientConnPool\n\t// the context associated with the request\n\t// that created this dialCall\n\tctx  context.Context\n\tdone chan struct{} // closed when done\n\tres  *ClientConn   // valid after done is closed\n\terr  error         // valid after done is closed\n}\n\n// requires p.mu is held.\nfunc (p *clientConnPool) getStartDialLocked(ctx context.Context, addr string) *dialCall {\n\tif call, ok := p.dialing[addr]; ok {\n\t\t// A dial is already in-flight. Don't start another.\n\t\treturn call\n\t}\n\tcall := &dialCall{p: p, done: make(chan struct{}), ctx: ctx}\n\tif p.dialing == nil {\n\t\tp.dialing = make(map[string]*dialCall)\n\t}\n\tp.dialing[addr] = call\n\tgo call.dial(call.ctx, addr)\n\treturn call\n}\n\n// run in its own goroutine.\nfunc (c *dialCall) dial(ctx context.Context, addr string) {\n\tconst singleUse = false // shared conn\n\tc.res, c.err = c.p.t.dialClientConn(ctx, addr, singleUse)\n\n\tc.p.mu.Lock()\n\tdelete(c.p.dialing, addr)\n\tif c.err == nil {\n\t\tc.p.addConnLocked(addr, c.res)\n\t}\n\tc.p.mu.Unlock()\n\n\tclose(c.done)\n}\n\n// addConnIfNeeded makes a NewClientConn out of c if a connection for key doesn't\n// already exist. It coalesces concurrent calls with the same key.\n// This is used by the http1 Transport code when it creates a new connection. Because\n// the http1 Transport doesn't de-dup TCP dials to outbound hosts (because it doesn't know\n// the protocol), it can get into a situation where it has multiple TLS connections.\n// This code decides which ones live or die.\n// The return value used is whether c was used.\n// c is never closed.\nfunc (p *clientConnPool) addConnIfNeeded(key string, t *Transport, c *tls.Conn) (used bool, err error) {\n\tp.mu.Lock()\n\tfor _, cc := range p.conns[key] {\n\t\tif cc.CanTakeNewRequest() {\n\t\t\tp.mu.Unlock()\n\t\t\treturn false, nil\n\t\t}\n\t}\n\tcall, dup := p.addConnCalls[key]\n\tif !dup {\n\t\tif p.addConnCalls == nil {\n\t\t\tp.addConnCalls = make(map[string]*addConnCall)\n\t\t}\n\t\tcall = &addConnCall{\n\t\t\tp:    p,\n\t\t\tdone: make(chan struct{}),\n\t\t}\n\t\tp.addConnCalls[key] = call\n\t\tgo call.run(t, key, c)\n\t}\n\tp.mu.Unlock()\n\n\t<-call.done\n\tif call.err != nil {\n\t\treturn false, call.err\n\t}\n\treturn !dup, nil\n}\n\ntype addConnCall struct {\n\t_    incomparable\n\tp    *clientConnPool\n\tdone chan struct{} // closed when done\n\terr  error\n}\n\nfunc (c *addConnCall) run(t *Transport, key string, tc *tls.Conn) {\n\tcc, err := t.NewClientConn(tc)\n\n\tp := c.p\n\tp.mu.Lock()\n\tif err != nil {\n\t\tc.err = err\n\t} else {\n\t\tcc.getConnCalled = true // already called by the net/http package\n\t\tp.addConnLocked(key, cc)\n\t}\n\tdelete(p.addConnCalls, key)\n\tp.mu.Unlock()\n\tclose(c.done)\n}\n\n// p.mu must be held\nfunc (p *clientConnPool) addConnLocked(key string, cc *ClientConn) {\n\tfor _, v := range p.conns[key] {\n\t\tif v == cc {\n\t\t\treturn\n\t\t}\n\t}\n\tif p.conns == nil {\n\t\tp.conns = make(map[string][]*ClientConn)\n\t}\n\tif p.keys == nil {\n\t\tp.keys = make(map[*ClientConn][]string)\n\t}\n\tp.conns[key] = append(p.conns[key], cc)\n\tp.keys[cc] = append(p.keys[cc], key)\n}\n\nfunc (p *clientConnPool) MarkDead(cc *ClientConn) {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tfor _, key := range p.keys[cc] {\n\t\tvv, ok := p.conns[key]\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\tnewList := filterOutClientConn(vv, cc)\n\t\tif len(newList) > 0 {\n\t\t\tp.conns[key] = newList\n\t\t} else {\n\t\t\tdelete(p.conns, key)\n\t\t}\n\t}\n\tdelete(p.keys, cc)\n}\n\nfunc (p *clientConnPool) closeIdleConnections() {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\t// TODO: don't close a cc if it was just added to the pool\n\t// milliseconds ago and has never been used. There's currently\n\t// a small race window with the HTTP/1 Transport's integration\n\t// where it can add an idle conn just before using it, and\n\t// somebody else can concurrently call CloseIdleConns and\n\t// break some caller's RoundTrip.\n\tfor _, vv := range p.conns {\n\t\tfor _, cc := range vv {\n\t\t\tcc.closeIfIdle()\n\t\t}\n\t}\n}\n\nfunc filterOutClientConn(in []*ClientConn, exclude *ClientConn) []*ClientConn {\n\tout := in[:0]\n\tfor _, v := range in {\n\t\tif v != exclude {\n\t\t\tout = append(out, v)\n\t\t}\n\t}\n\t// If we filtered it out, zero out the last item to prevent\n\t// the GC from seeing it.\n\tif len(in) != len(out) {\n\t\tin[len(in)-1] = nil\n\t}\n\treturn out\n}\n\n// noDialClientConnPool is an implementation of http2.ClientConnPool\n// which never dials. We let the HTTP/1.1 client dial and use its TLS\n// connection instead.\ntype noDialClientConnPool struct{ *clientConnPool }\n\nfunc (p noDialClientConnPool) GetClientConn(req *http.Request, addr string) (*ClientConn, error) {\n\treturn p.getClientConn(req, addr, noDialOnMiss)\n}\n\n// shouldRetryDial reports whether the current request should\n// retry dialing after the call finished unsuccessfully, for example\n// if the dial was canceled because of a context cancellation or\n// deadline expiry.\nfunc shouldRetryDial(call *dialCall, req *http.Request) bool {\n\tif call.err == nil {\n\t\t// No error, no need to retry\n\t\treturn false\n\t}\n\tif call.ctx == req.Context() {\n\t\t// If the call has the same context as the request, the dial\n\t\t// should not be retried, since any cancellation will have come\n\t\t// from this request.\n\t\treturn false\n\t}\n\tif !errors.Is(call.err, context.Canceled) && !errors.Is(call.err, context.DeadlineExceeded) {\n\t\t// If the call error is not because of a context cancellation or a deadline expiry,\n\t\t// the dial should not be retried.\n\t\treturn false\n\t}\n\t// Only retry if the error is a context cancellation error or deadline expiry\n\t// and the context associated with the call was canceled or expired.\n\treturn call.ctx.Err() != nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/databuffer.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n)\n\n// Buffer chunks are allocated from a pool to reduce pressure on GC.\n// The maximum wasted space per dataBuffer is 2x the largest size class,\n// which happens when the dataBuffer has multiple chunks and there is\n// one unread byte in both the first and last chunks. We use a few size\n// classes to minimize overheads for servers that typically receive very\n// small request bodies.\n//\n// TODO: Benchmark to determine if the pools are necessary. The GC may have\n// improved enough that we can instead allocate chunks like this:\n// make([]byte, max(16<<10, expectedBytesRemaining))\nvar dataChunkPools = [...]sync.Pool{\n\t{New: func() interface{} { return new([1 << 10]byte) }},\n\t{New: func() interface{} { return new([2 << 10]byte) }},\n\t{New: func() interface{} { return new([4 << 10]byte) }},\n\t{New: func() interface{} { return new([8 << 10]byte) }},\n\t{New: func() interface{} { return new([16 << 10]byte) }},\n}\n\nfunc getDataBufferChunk(size int64) []byte {\n\tswitch {\n\tcase size <= 1<<10:\n\t\treturn dataChunkPools[0].Get().(*[1 << 10]byte)[:]\n\tcase size <= 2<<10:\n\t\treturn dataChunkPools[1].Get().(*[2 << 10]byte)[:]\n\tcase size <= 4<<10:\n\t\treturn dataChunkPools[2].Get().(*[4 << 10]byte)[:]\n\tcase size <= 8<<10:\n\t\treturn dataChunkPools[3].Get().(*[8 << 10]byte)[:]\n\tdefault:\n\t\treturn dataChunkPools[4].Get().(*[16 << 10]byte)[:]\n\t}\n}\n\nfunc putDataBufferChunk(p []byte) {\n\tswitch len(p) {\n\tcase 1 << 10:\n\t\tdataChunkPools[0].Put((*[1 << 10]byte)(p))\n\tcase 2 << 10:\n\t\tdataChunkPools[1].Put((*[2 << 10]byte)(p))\n\tcase 4 << 10:\n\t\tdataChunkPools[2].Put((*[4 << 10]byte)(p))\n\tcase 8 << 10:\n\t\tdataChunkPools[3].Put((*[8 << 10]byte)(p))\n\tcase 16 << 10:\n\t\tdataChunkPools[4].Put((*[16 << 10]byte)(p))\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unexpected buffer len=%v\", len(p)))\n\t}\n}\n\n// dataBuffer is an io.ReadWriter backed by a list of data chunks.\n// Each dataBuffer is used to read DATA frames on a single stream.\n// The buffer is divided into chunks so the server can limit the\n// total memory used by a single connection without limiting the\n// request body size on any single stream.\ntype dataBuffer struct {\n\tchunks   [][]byte\n\tr        int   // next byte to read is chunks[0][r]\n\tw        int   // next byte to write is chunks[len(chunks)-1][w]\n\tsize     int   // total buffered bytes\n\texpected int64 // we expect at least this many bytes in future Write calls (ignored if <= 0)\n}\n\nvar errReadEmpty = errors.New(\"read from empty dataBuffer\")\n\n// Read copies bytes from the buffer into p.\n// It is an error to read when no data is available.\nfunc (b *dataBuffer) Read(p []byte) (int, error) {\n\tif b.size == 0 {\n\t\treturn 0, errReadEmpty\n\t}\n\tvar ntotal int\n\tfor len(p) > 0 && b.size > 0 {\n\t\treadFrom := b.bytesFromFirstChunk()\n\t\tn := copy(p, readFrom)\n\t\tp = p[n:]\n\t\tntotal += n\n\t\tb.r += n\n\t\tb.size -= n\n\t\t// If the first chunk has been consumed, advance to the next chunk.\n\t\tif b.r == len(b.chunks[0]) {\n\t\t\tputDataBufferChunk(b.chunks[0])\n\t\t\tend := len(b.chunks) - 1\n\t\t\tcopy(b.chunks[:end], b.chunks[1:])\n\t\t\tb.chunks[end] = nil\n\t\t\tb.chunks = b.chunks[:end]\n\t\t\tb.r = 0\n\t\t}\n\t}\n\treturn ntotal, nil\n}\n\nfunc (b *dataBuffer) bytesFromFirstChunk() []byte {\n\tif len(b.chunks) == 1 {\n\t\treturn b.chunks[0][b.r:b.w]\n\t}\n\treturn b.chunks[0][b.r:]\n}\n\n// Len returns the number of bytes of the unread portion of the buffer.\nfunc (b *dataBuffer) Len() int {\n\treturn b.size\n}\n\n// Write appends p to the buffer.\nfunc (b *dataBuffer) Write(p []byte) (int, error) {\n\tntotal := len(p)\n\tfor len(p) > 0 {\n\t\t// If the last chunk is empty, allocate a new chunk. Try to allocate\n\t\t// enough to fully copy p plus any additional bytes we expect to\n\t\t// receive. However, this may allocate less than len(p).\n\t\twant := int64(len(p))\n\t\tif b.expected > want {\n\t\t\twant = b.expected\n\t\t}\n\t\tchunk := b.lastChunkOrAlloc(want)\n\t\tn := copy(chunk[b.w:], p)\n\t\tp = p[n:]\n\t\tb.w += n\n\t\tb.size += n\n\t\tb.expected -= int64(n)\n\t}\n\treturn ntotal, nil\n}\n\nfunc (b *dataBuffer) lastChunkOrAlloc(want int64) []byte {\n\tif len(b.chunks) != 0 {\n\t\tlast := b.chunks[len(b.chunks)-1]\n\t\tif b.w < len(last) {\n\t\t\treturn last\n\t\t}\n\t}\n\tchunk := getDataBufferChunk(want)\n\tb.chunks = append(b.chunks, chunk)\n\tb.w = 0\n\treturn chunk\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/errors.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// An ErrCode is an unsigned 32-bit error code as defined in the HTTP/2 spec.\ntype ErrCode uint32\n\nconst (\n\tErrCodeNo                 ErrCode = 0x0\n\tErrCodeProtocol           ErrCode = 0x1\n\tErrCodeInternal           ErrCode = 0x2\n\tErrCodeFlowControl        ErrCode = 0x3\n\tErrCodeSettingsTimeout    ErrCode = 0x4\n\tErrCodeStreamClosed       ErrCode = 0x5\n\tErrCodeFrameSize          ErrCode = 0x6\n\tErrCodeRefusedStream      ErrCode = 0x7\n\tErrCodeCancel             ErrCode = 0x8\n\tErrCodeCompression        ErrCode = 0x9\n\tErrCodeConnect            ErrCode = 0xa\n\tErrCodeEnhanceYourCalm    ErrCode = 0xb\n\tErrCodeInadequateSecurity ErrCode = 0xc\n\tErrCodeHTTP11Required     ErrCode = 0xd\n)\n\nvar errCodeName = map[ErrCode]string{\n\tErrCodeNo:                 \"NO_ERROR\",\n\tErrCodeProtocol:           \"PROTOCOL_ERROR\",\n\tErrCodeInternal:           \"INTERNAL_ERROR\",\n\tErrCodeFlowControl:        \"FLOW_CONTROL_ERROR\",\n\tErrCodeSettingsTimeout:    \"SETTINGS_TIMEOUT\",\n\tErrCodeStreamClosed:       \"STREAM_CLOSED\",\n\tErrCodeFrameSize:          \"FRAME_SIZE_ERROR\",\n\tErrCodeRefusedStream:      \"REFUSED_STREAM\",\n\tErrCodeCancel:             \"CANCEL\",\n\tErrCodeCompression:        \"COMPRESSION_ERROR\",\n\tErrCodeConnect:            \"CONNECT_ERROR\",\n\tErrCodeEnhanceYourCalm:    \"ENHANCE_YOUR_CALM\",\n\tErrCodeInadequateSecurity: \"INADEQUATE_SECURITY\",\n\tErrCodeHTTP11Required:     \"HTTP_1_1_REQUIRED\",\n}\n\nfunc (e ErrCode) String() string {\n\tif s, ok := errCodeName[e]; ok {\n\t\treturn s\n\t}\n\treturn fmt.Sprintf(\"unknown error code 0x%x\", uint32(e))\n}\n\nfunc (e ErrCode) stringToken() string {\n\tif s, ok := errCodeName[e]; ok {\n\t\treturn s\n\t}\n\treturn fmt.Sprintf(\"ERR_UNKNOWN_%d\", uint32(e))\n}\n\n// ConnectionError is an error that results in the termination of the\n// entire connection.\ntype ConnectionError ErrCode\n\nfunc (e ConnectionError) Error() string { return fmt.Sprintf(\"connection error: %s\", ErrCode(e)) }\n\n// StreamError is an error that only affects one stream within an\n// HTTP/2 connection.\ntype StreamError struct {\n\tStreamID uint32\n\tCode     ErrCode\n\tCause    error // optional additional detail\n}\n\n// errFromPeer is a sentinel error value for StreamError.Cause to\n// indicate that the StreamError was sent from the peer over the wire\n// and wasn't locally generated in the Transport.\nvar errFromPeer = errors.New(\"received from peer\")\n\nfunc streamError(id uint32, code ErrCode) StreamError {\n\treturn StreamError{StreamID: id, Code: code}\n}\n\nfunc (e StreamError) Error() string {\n\tif e.Cause != nil {\n\t\treturn fmt.Sprintf(\"stream error: stream ID %d; %v; %v\", e.StreamID, e.Code, e.Cause)\n\t}\n\treturn fmt.Sprintf(\"stream error: stream ID %d; %v\", e.StreamID, e.Code)\n}\n\n// 6.9.1 The Flow Control Window\n// \"If a sender receives a WINDOW_UPDATE that causes a flow control\n// window to exceed this maximum it MUST terminate either the stream\n// or the connection, as appropriate. For streams, [...]; for the\n// connection, a GOAWAY frame with a FLOW_CONTROL_ERROR code.\"\ntype goAwayFlowError struct{}\n\nfunc (goAwayFlowError) Error() string { return \"connection exceeded flow control window size\" }\n\n// connError represents an HTTP/2 ConnectionError error code, along\n// with a string (for debugging) explaining why.\n//\n// Errors of this type are only returned by the frame parser functions\n// and converted into ConnectionError(Code), after stashing away\n// the Reason into the Framer's errDetail field, accessible via\n// the (*Framer).ErrorDetail method.\ntype connError struct {\n\tCode   ErrCode // the ConnectionError error code\n\tReason string  // additional reason\n}\n\nfunc (e connError) Error() string {\n\treturn fmt.Sprintf(\"http2: connection error: %v: %v\", e.Code, e.Reason)\n}\n\ntype pseudoHeaderError string\n\nfunc (e pseudoHeaderError) Error() string {\n\treturn fmt.Sprintf(\"invalid pseudo-header %q\", string(e))\n}\n\ntype duplicatePseudoHeaderError string\n\nfunc (e duplicatePseudoHeaderError) Error() string {\n\treturn fmt.Sprintf(\"duplicate pseudo-header %q\", string(e))\n}\n\ntype headerFieldNameError string\n\nfunc (e headerFieldNameError) Error() string {\n\treturn fmt.Sprintf(\"invalid header field name %q\", string(e))\n}\n\ntype headerFieldValueError string\n\nfunc (e headerFieldValueError) Error() string {\n\treturn fmt.Sprintf(\"invalid header field value for %q\", string(e))\n}\n\nvar (\n\terrMixPseudoHeaderTypes = errors.New(\"mix of request and response pseudo headers\")\n\terrPseudoAfterRegular   = errors.New(\"pseudo header field after regular\")\n)\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/flow.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Flow control\n\npackage http2\n\n// inflowMinRefresh is the minimum number of bytes we'll send for a\n// flow control window update.\nconst inflowMinRefresh = 4 << 10\n\n// inflow accounts for an inbound flow control window.\n// It tracks both the latest window sent to the peer (used for enforcement)\n// and the accumulated unsent window.\ntype inflow struct {\n\tavail  int32\n\tunsent int32\n}\n\n// init sets the initial window.\nfunc (f *inflow) init(n int32) {\n\tf.avail = n\n}\n\n// add adds n bytes to the window, with a maximum window size of max,\n// indicating that the peer can now send us more data.\n// For example, the user read from a {Request,Response} body and consumed\n// some of the buffered data, so the peer can now send more.\n// It returns the number of bytes to send in a WINDOW_UPDATE frame to the peer.\n// Window updates are accumulated and sent when the unsent capacity\n// is at least inflowMinRefresh or will at least double the peer's available window.\nfunc (f *inflow) add(n int) (connAdd int32) {\n\tif n < 0 {\n\t\tpanic(\"negative update\")\n\t}\n\tunsent := int64(f.unsent) + int64(n)\n\t// \"A sender MUST NOT allow a flow-control window to exceed 2^31-1 octets.\"\n\t// RFC 7540 Section 6.9.1.\n\tconst maxWindow = 1<<31 - 1\n\tif unsent+int64(f.avail) > maxWindow {\n\t\tpanic(\"flow control update exceeds maximum window size\")\n\t}\n\tf.unsent = int32(unsent)\n\tif f.unsent < inflowMinRefresh && f.unsent < f.avail {\n\t\t// If there aren't at least inflowMinRefresh bytes of window to send,\n\t\t// and this update won't at least double the window, buffer the update for later.\n\t\treturn 0\n\t}\n\tf.avail += f.unsent\n\tf.unsent = 0\n\treturn int32(unsent)\n}\n\n// take attempts to take n bytes from the peer's flow control window.\n// It reports whether the window has available capacity.\nfunc (f *inflow) take(n uint32) bool {\n\tif n > uint32(f.avail) {\n\t\treturn false\n\t}\n\tf.avail -= int32(n)\n\treturn true\n}\n\n// takeInflows attempts to take n bytes from two inflows,\n// typically connection-level and stream-level flows.\n// It reports whether both windows have available capacity.\nfunc takeInflows(f1, f2 *inflow, n uint32) bool {\n\tif n > uint32(f1.avail) || n > uint32(f2.avail) {\n\t\treturn false\n\t}\n\tf1.avail -= int32(n)\n\tf2.avail -= int32(n)\n\treturn true\n}\n\n// outflow is the outbound flow control window's size.\ntype outflow struct {\n\t_ incomparable\n\n\t// n is the number of DATA bytes we're allowed to send.\n\t// An outflow is kept both on a conn and a per-stream.\n\tn int32\n\n\t// conn points to the shared connection-level outflow that is\n\t// shared by all streams on that conn. It is nil for the outflow\n\t// that's on the conn directly.\n\tconn *outflow\n}\n\nfunc (f *outflow) setConnFlow(cf *outflow) { f.conn = cf }\n\nfunc (f *outflow) available() int32 {\n\tn := f.n\n\tif f.conn != nil && f.conn.n < n {\n\t\tn = f.conn.n\n\t}\n\treturn n\n}\n\nfunc (f *outflow) take(n int32) {\n\tif n > f.available() {\n\t\tpanic(\"internal error: took too much\")\n\t}\n\tf.n -= n\n\tif f.conn != nil {\n\t\tf.conn.n -= n\n\t}\n}\n\n// add adds n bytes (positive or negative) to the flow control window.\n// It returns false if the sum would exceed 2^31-1.\nfunc (f *outflow) add(n int32) bool {\n\tsum := f.n + n\n\tif (sum > n) == (f.n > 0) {\n\t\tf.n = sum\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/frame.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"golang.org/x/net/http/httpguts\"\n\t\"golang.org/x/net/http2/hpack\"\n)\n\nconst frameHeaderLen = 9\n\nvar padZeros = make([]byte, 255) // zeros for padding\n\n// A FrameType is a registered frame type as defined in\n// https://httpwg.org/specs/rfc7540.html#rfc.section.11.2\ntype FrameType uint8\n\nconst (\n\tFrameData         FrameType = 0x0\n\tFrameHeaders      FrameType = 0x1\n\tFramePriority     FrameType = 0x2\n\tFrameRSTStream    FrameType = 0x3\n\tFrameSettings     FrameType = 0x4\n\tFramePushPromise  FrameType = 0x5\n\tFramePing         FrameType = 0x6\n\tFrameGoAway       FrameType = 0x7\n\tFrameWindowUpdate FrameType = 0x8\n\tFrameContinuation FrameType = 0x9\n)\n\nvar frameName = map[FrameType]string{\n\tFrameData:         \"DATA\",\n\tFrameHeaders:      \"HEADERS\",\n\tFramePriority:     \"PRIORITY\",\n\tFrameRSTStream:    \"RST_STREAM\",\n\tFrameSettings:     \"SETTINGS\",\n\tFramePushPromise:  \"PUSH_PROMISE\",\n\tFramePing:         \"PING\",\n\tFrameGoAway:       \"GOAWAY\",\n\tFrameWindowUpdate: \"WINDOW_UPDATE\",\n\tFrameContinuation: \"CONTINUATION\",\n}\n\nfunc (t FrameType) String() string {\n\tif s, ok := frameName[t]; ok {\n\t\treturn s\n\t}\n\treturn fmt.Sprintf(\"UNKNOWN_FRAME_TYPE_%d\", uint8(t))\n}\n\n// Flags is a bitmask of HTTP/2 flags.\n// The meaning of flags varies depending on the frame type.\ntype Flags uint8\n\n// Has reports whether f contains all (0 or more) flags in v.\nfunc (f Flags) Has(v Flags) bool {\n\treturn (f & v) == v\n}\n\n// Frame-specific FrameHeader flag bits.\nconst (\n\t// Data Frame\n\tFlagDataEndStream Flags = 0x1\n\tFlagDataPadded    Flags = 0x8\n\n\t// Headers Frame\n\tFlagHeadersEndStream  Flags = 0x1\n\tFlagHeadersEndHeaders Flags = 0x4\n\tFlagHeadersPadded     Flags = 0x8\n\tFlagHeadersPriority   Flags = 0x20\n\n\t// Settings Frame\n\tFlagSettingsAck Flags = 0x1\n\n\t// Ping Frame\n\tFlagPingAck Flags = 0x1\n\n\t// Continuation Frame\n\tFlagContinuationEndHeaders Flags = 0x4\n\n\tFlagPushPromiseEndHeaders Flags = 0x4\n\tFlagPushPromisePadded     Flags = 0x8\n)\n\nvar flagName = map[FrameType]map[Flags]string{\n\tFrameData: {\n\t\tFlagDataEndStream: \"END_STREAM\",\n\t\tFlagDataPadded:    \"PADDED\",\n\t},\n\tFrameHeaders: {\n\t\tFlagHeadersEndStream:  \"END_STREAM\",\n\t\tFlagHeadersEndHeaders: \"END_HEADERS\",\n\t\tFlagHeadersPadded:     \"PADDED\",\n\t\tFlagHeadersPriority:   \"PRIORITY\",\n\t},\n\tFrameSettings: {\n\t\tFlagSettingsAck: \"ACK\",\n\t},\n\tFramePing: {\n\t\tFlagPingAck: \"ACK\",\n\t},\n\tFrameContinuation: {\n\t\tFlagContinuationEndHeaders: \"END_HEADERS\",\n\t},\n\tFramePushPromise: {\n\t\tFlagPushPromiseEndHeaders: \"END_HEADERS\",\n\t\tFlagPushPromisePadded:     \"PADDED\",\n\t},\n}\n\n// a frameParser parses a frame given its FrameHeader and payload\n// bytes. The length of payload will always equal fh.Length (which\n// might be 0).\ntype frameParser func(fc *frameCache, fh FrameHeader, countError func(string), payload []byte) (Frame, error)\n\nvar frameParsers = map[FrameType]frameParser{\n\tFrameData:         parseDataFrame,\n\tFrameHeaders:      parseHeadersFrame,\n\tFramePriority:     parsePriorityFrame,\n\tFrameRSTStream:    parseRSTStreamFrame,\n\tFrameSettings:     parseSettingsFrame,\n\tFramePushPromise:  parsePushPromise,\n\tFramePing:         parsePingFrame,\n\tFrameGoAway:       parseGoAwayFrame,\n\tFrameWindowUpdate: parseWindowUpdateFrame,\n\tFrameContinuation: parseContinuationFrame,\n}\n\nfunc typeFrameParser(t FrameType) frameParser {\n\tif f := frameParsers[t]; f != nil {\n\t\treturn f\n\t}\n\treturn parseUnknownFrame\n}\n\n// A FrameHeader is the 9 byte header of all HTTP/2 frames.\n//\n// See https://httpwg.org/specs/rfc7540.html#FrameHeader\ntype FrameHeader struct {\n\tvalid bool // caller can access []byte fields in the Frame\n\n\t// Type is the 1 byte frame type. There are ten standard frame\n\t// types, but extension frame types may be written by WriteRawFrame\n\t// and will be returned by ReadFrame (as UnknownFrame).\n\tType FrameType\n\n\t// Flags are the 1 byte of 8 potential bit flags per frame.\n\t// They are specific to the frame type.\n\tFlags Flags\n\n\t// Length is the length of the frame, not including the 9 byte header.\n\t// The maximum size is one byte less than 16MB (uint24), but only\n\t// frames up to 16KB are allowed without peer agreement.\n\tLength uint32\n\n\t// StreamID is which stream this frame is for. Certain frames\n\t// are not stream-specific, in which case this field is 0.\n\tStreamID uint32\n}\n\n// Header returns h. It exists so FrameHeaders can be embedded in other\n// specific frame types and implement the Frame interface.\nfunc (h FrameHeader) Header() FrameHeader { return h }\n\nfunc (h FrameHeader) String() string {\n\tvar buf bytes.Buffer\n\tbuf.WriteString(\"[FrameHeader \")\n\th.writeDebug(&buf)\n\tbuf.WriteByte(']')\n\treturn buf.String()\n}\n\nfunc (h FrameHeader) writeDebug(buf *bytes.Buffer) {\n\tbuf.WriteString(h.Type.String())\n\tif h.Flags != 0 {\n\t\tbuf.WriteString(\" flags=\")\n\t\tset := 0\n\t\tfor i := uint8(0); i < 8; i++ {\n\t\t\tif h.Flags&(1<<i) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tset++\n\t\t\tif set > 1 {\n\t\t\t\tbuf.WriteByte('|')\n\t\t\t}\n\t\t\tname := flagName[h.Type][Flags(1<<i)]\n\t\t\tif name != \"\" {\n\t\t\t\tbuf.WriteString(name)\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(buf, \"0x%x\", 1<<i)\n\t\t\t}\n\t\t}\n\t}\n\tif h.StreamID != 0 {\n\t\tfmt.Fprintf(buf, \" stream=%d\", h.StreamID)\n\t}\n\tfmt.Fprintf(buf, \" len=%d\", h.Length)\n}\n\nfunc (h *FrameHeader) checkValid() {\n\tif !h.valid {\n\t\tpanic(\"Frame accessor called on non-owned Frame\")\n\t}\n}\n\nfunc (h *FrameHeader) invalidate() { h.valid = false }\n\n// frame header bytes.\n// Used only by ReadFrameHeader.\nvar fhBytes = sync.Pool{\n\tNew: func() interface{} {\n\t\tbuf := make([]byte, frameHeaderLen)\n\t\treturn &buf\n\t},\n}\n\n// ReadFrameHeader reads 9 bytes from r and returns a FrameHeader.\n// Most users should use Framer.ReadFrame instead.\nfunc ReadFrameHeader(r io.Reader) (FrameHeader, error) {\n\tbufp := fhBytes.Get().(*[]byte)\n\tdefer fhBytes.Put(bufp)\n\treturn readFrameHeader(*bufp, r)\n}\n\nfunc readFrameHeader(buf []byte, r io.Reader) (FrameHeader, error) {\n\t_, err := io.ReadFull(r, buf[:frameHeaderLen])\n\tif err != nil {\n\t\treturn FrameHeader{}, err\n\t}\n\treturn FrameHeader{\n\t\tLength:   (uint32(buf[0])<<16 | uint32(buf[1])<<8 | uint32(buf[2])),\n\t\tType:     FrameType(buf[3]),\n\t\tFlags:    Flags(buf[4]),\n\t\tStreamID: binary.BigEndian.Uint32(buf[5:]) & (1<<31 - 1),\n\t\tvalid:    true,\n\t}, nil\n}\n\n// A Frame is the base interface implemented by all frame types.\n// Callers will generally type-assert the specific frame type:\n// *HeadersFrame, *SettingsFrame, *WindowUpdateFrame, etc.\n//\n// Frames are only valid until the next call to Framer.ReadFrame.\ntype Frame interface {\n\tHeader() FrameHeader\n\n\t// invalidate is called by Framer.ReadFrame to make this\n\t// frame's buffers as being invalid, since the subsequent\n\t// frame will reuse them.\n\tinvalidate()\n}\n\n// A Framer reads and writes Frames.\ntype Framer struct {\n\tr         io.Reader\n\tlastFrame Frame\n\terrDetail error\n\n\t// countError is a non-nil func that's called on a frame parse\n\t// error with some unique error path token. It's initialized\n\t// from Transport.CountError or Server.CountError.\n\tcountError func(errToken string)\n\n\t// lastHeaderStream is non-zero if the last frame was an\n\t// unfinished HEADERS/CONTINUATION.\n\tlastHeaderStream uint32\n\n\tmaxReadSize uint32\n\theaderBuf   [frameHeaderLen]byte\n\n\t// TODO: let getReadBuf be configurable, and use a less memory-pinning\n\t// allocator in server.go to minimize memory pinned for many idle conns.\n\t// Will probably also need to make frame invalidation have a hook too.\n\tgetReadBuf func(size uint32) []byte\n\treadBuf    []byte // cache for default getReadBuf\n\n\tmaxWriteSize uint32 // zero means unlimited; TODO: implement\n\n\tw    io.Writer\n\twbuf []byte\n\n\t// AllowIllegalWrites permits the Framer's Write methods to\n\t// write frames that do not conform to the HTTP/2 spec. This\n\t// permits using the Framer to test other HTTP/2\n\t// implementations' conformance to the spec.\n\t// If false, the Write methods will prefer to return an error\n\t// rather than comply.\n\tAllowIllegalWrites bool\n\n\t// AllowIllegalReads permits the Framer's ReadFrame method\n\t// to return non-compliant frames or frame orders.\n\t// This is for testing and permits using the Framer to test\n\t// other HTTP/2 implementations' conformance to the spec.\n\t// It is not compatible with ReadMetaHeaders.\n\tAllowIllegalReads bool\n\n\t// ReadMetaHeaders if non-nil causes ReadFrame to merge\n\t// HEADERS and CONTINUATION frames together and return\n\t// MetaHeadersFrame instead.\n\tReadMetaHeaders *hpack.Decoder\n\n\t// MaxHeaderListSize is the http2 MAX_HEADER_LIST_SIZE.\n\t// It's used only if ReadMetaHeaders is set; 0 means a sane default\n\t// (currently 16MB)\n\t// If the limit is hit, MetaHeadersFrame.Truncated is set true.\n\tMaxHeaderListSize uint32\n\n\t// TODO: track which type of frame & with which flags was sent\n\t// last. Then return an error (unless AllowIllegalWrites) if\n\t// we're in the middle of a header block and a\n\t// non-Continuation or Continuation on a different stream is\n\t// attempted to be written.\n\n\tlogReads, logWrites bool\n\n\tdebugFramer       *Framer // only use for logging written writes\n\tdebugFramerBuf    *bytes.Buffer\n\tdebugReadLoggerf  func(string, ...interface{})\n\tdebugWriteLoggerf func(string, ...interface{})\n\n\tframeCache *frameCache // nil if frames aren't reused (default)\n}\n\nfunc (fr *Framer) maxHeaderListSize() uint32 {\n\tif fr.MaxHeaderListSize == 0 {\n\t\treturn 16 << 20 // sane default, per docs\n\t}\n\treturn fr.MaxHeaderListSize\n}\n\nfunc (f *Framer) startWrite(ftype FrameType, flags Flags, streamID uint32) {\n\t// Write the FrameHeader.\n\tf.wbuf = append(f.wbuf[:0],\n\t\t0, // 3 bytes of length, filled in in endWrite\n\t\t0,\n\t\t0,\n\t\tbyte(ftype),\n\t\tbyte(flags),\n\t\tbyte(streamID>>24),\n\t\tbyte(streamID>>16),\n\t\tbyte(streamID>>8),\n\t\tbyte(streamID))\n}\n\nfunc (f *Framer) endWrite() error {\n\t// Now that we know the final size, fill in the FrameHeader in\n\t// the space previously reserved for it. Abuse append.\n\tlength := len(f.wbuf) - frameHeaderLen\n\tif length >= (1 << 24) {\n\t\treturn ErrFrameTooLarge\n\t}\n\t_ = append(f.wbuf[:0],\n\t\tbyte(length>>16),\n\t\tbyte(length>>8),\n\t\tbyte(length))\n\tif f.logWrites {\n\t\tf.logWrite()\n\t}\n\n\tn, err := f.w.Write(f.wbuf)\n\tif err == nil && n != len(f.wbuf) {\n\t\terr = io.ErrShortWrite\n\t}\n\treturn err\n}\n\nfunc (f *Framer) logWrite() {\n\tif f.debugFramer == nil {\n\t\tf.debugFramerBuf = new(bytes.Buffer)\n\t\tf.debugFramer = NewFramer(nil, f.debugFramerBuf)\n\t\tf.debugFramer.logReads = false // we log it ourselves, saying \"wrote\" below\n\t\t// Let us read anything, even if we accidentally wrote it\n\t\t// in the wrong order:\n\t\tf.debugFramer.AllowIllegalReads = true\n\t}\n\tf.debugFramerBuf.Write(f.wbuf)\n\tfr, err := f.debugFramer.ReadFrame()\n\tif err != nil {\n\t\tf.debugWriteLoggerf(\"http2: Framer %p: failed to decode just-written frame\", f)\n\t\treturn\n\t}\n\tf.debugWriteLoggerf(\"http2: Framer %p: wrote %v\", f, summarizeFrame(fr))\n}\n\nfunc (f *Framer) writeByte(v byte)     { f.wbuf = append(f.wbuf, v) }\nfunc (f *Framer) writeBytes(v []byte)  { f.wbuf = append(f.wbuf, v...) }\nfunc (f *Framer) writeUint16(v uint16) { f.wbuf = append(f.wbuf, byte(v>>8), byte(v)) }\nfunc (f *Framer) writeUint32(v uint32) {\n\tf.wbuf = append(f.wbuf, byte(v>>24), byte(v>>16), byte(v>>8), byte(v))\n}\n\nconst (\n\tminMaxFrameSize = 1 << 14\n\tmaxFrameSize    = 1<<24 - 1\n)\n\n// SetReuseFrames allows the Framer to reuse Frames.\n// If called on a Framer, Frames returned by calls to ReadFrame are only\n// valid until the next call to ReadFrame.\nfunc (fr *Framer) SetReuseFrames() {\n\tif fr.frameCache != nil {\n\t\treturn\n\t}\n\tfr.frameCache = &frameCache{}\n}\n\ntype frameCache struct {\n\tdataFrame DataFrame\n}\n\nfunc (fc *frameCache) getDataFrame() *DataFrame {\n\tif fc == nil {\n\t\treturn &DataFrame{}\n\t}\n\treturn &fc.dataFrame\n}\n\n// NewFramer returns a Framer that writes frames to w and reads them from r.\nfunc NewFramer(w io.Writer, r io.Reader) *Framer {\n\tfr := &Framer{\n\t\tw:                 w,\n\t\tr:                 r,\n\t\tcountError:        func(string) {},\n\t\tlogReads:          logFrameReads,\n\t\tlogWrites:         logFrameWrites,\n\t\tdebugReadLoggerf:  log.Printf,\n\t\tdebugWriteLoggerf: log.Printf,\n\t}\n\tfr.getReadBuf = func(size uint32) []byte {\n\t\tif cap(fr.readBuf) >= int(size) {\n\t\t\treturn fr.readBuf[:size]\n\t\t}\n\t\tfr.readBuf = make([]byte, size)\n\t\treturn fr.readBuf\n\t}\n\tfr.SetMaxReadFrameSize(maxFrameSize)\n\treturn fr\n}\n\n// SetMaxReadFrameSize sets the maximum size of a frame\n// that will be read by a subsequent call to ReadFrame.\n// It is the caller's responsibility to advertise this\n// limit with a SETTINGS frame.\nfunc (fr *Framer) SetMaxReadFrameSize(v uint32) {\n\tif v > maxFrameSize {\n\t\tv = maxFrameSize\n\t}\n\tfr.maxReadSize = v\n}\n\n// ErrorDetail returns a more detailed error of the last error\n// returned by Framer.ReadFrame. For instance, if ReadFrame\n// returns a StreamError with code PROTOCOL_ERROR, ErrorDetail\n// will say exactly what was invalid. ErrorDetail is not guaranteed\n// to return a non-nil value and like the rest of the http2 package,\n// its return value is not protected by an API compatibility promise.\n// ErrorDetail is reset after the next call to ReadFrame.\nfunc (fr *Framer) ErrorDetail() error {\n\treturn fr.errDetail\n}\n\n// ErrFrameTooLarge is returned from Framer.ReadFrame when the peer\n// sends a frame that is larger than declared with SetMaxReadFrameSize.\nvar ErrFrameTooLarge = errors.New(\"http2: frame too large\")\n\n// terminalReadFrameError reports whether err is an unrecoverable\n// error from ReadFrame and no other frames should be read.\nfunc terminalReadFrameError(err error) bool {\n\tif _, ok := err.(StreamError); ok {\n\t\treturn false\n\t}\n\treturn err != nil\n}\n\n// ReadFrame reads a single frame. The returned Frame is only valid\n// until the next call to ReadFrame.\n//\n// If the frame is larger than previously set with SetMaxReadFrameSize, the\n// returned error is ErrFrameTooLarge. Other errors may be of type\n// ConnectionError, StreamError, or anything else from the underlying\n// reader.\nfunc (fr *Framer) ReadFrame() (Frame, error) {\n\tfr.errDetail = nil\n\tif fr.lastFrame != nil {\n\t\tfr.lastFrame.invalidate()\n\t}\n\tfh, err := readFrameHeader(fr.headerBuf[:], fr.r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif fh.Length > fr.maxReadSize {\n\t\treturn nil, ErrFrameTooLarge\n\t}\n\tpayload := fr.getReadBuf(fh.Length)\n\tif _, err := io.ReadFull(fr.r, payload); err != nil {\n\t\treturn nil, err\n\t}\n\tf, err := typeFrameParser(fh.Type)(fr.frameCache, fh, fr.countError, payload)\n\tif err != nil {\n\t\tif ce, ok := err.(connError); ok {\n\t\t\treturn nil, fr.connError(ce.Code, ce.Reason)\n\t\t}\n\t\treturn nil, err\n\t}\n\tif err := fr.checkFrameOrder(f); err != nil {\n\t\treturn nil, err\n\t}\n\tif fr.logReads {\n\t\tfr.debugReadLoggerf(\"http2: Framer %p: read %v\", fr, summarizeFrame(f))\n\t}\n\tif fh.Type == FrameHeaders && fr.ReadMetaHeaders != nil {\n\t\treturn fr.readMetaFrame(f.(*HeadersFrame))\n\t}\n\treturn f, nil\n}\n\n// connError returns ConnectionError(code) but first\n// stashes away a public reason to the caller can optionally relay it\n// to the peer before hanging up on them. This might help others debug\n// their implementations.\nfunc (fr *Framer) connError(code ErrCode, reason string) error {\n\tfr.errDetail = errors.New(reason)\n\treturn ConnectionError(code)\n}\n\n// checkFrameOrder reports an error if f is an invalid frame to return\n// next from ReadFrame. Mostly it checks whether HEADERS and\n// CONTINUATION frames are contiguous.\nfunc (fr *Framer) checkFrameOrder(f Frame) error {\n\tlast := fr.lastFrame\n\tfr.lastFrame = f\n\tif fr.AllowIllegalReads {\n\t\treturn nil\n\t}\n\n\tfh := f.Header()\n\tif fr.lastHeaderStream != 0 {\n\t\tif fh.Type != FrameContinuation {\n\t\t\treturn fr.connError(ErrCodeProtocol,\n\t\t\t\tfmt.Sprintf(\"got %s for stream %d; expected CONTINUATION following %s for stream %d\",\n\t\t\t\t\tfh.Type, fh.StreamID,\n\t\t\t\t\tlast.Header().Type, fr.lastHeaderStream))\n\t\t}\n\t\tif fh.StreamID != fr.lastHeaderStream {\n\t\t\treturn fr.connError(ErrCodeProtocol,\n\t\t\t\tfmt.Sprintf(\"got CONTINUATION for stream %d; expected stream %d\",\n\t\t\t\t\tfh.StreamID, fr.lastHeaderStream))\n\t\t}\n\t} else if fh.Type == FrameContinuation {\n\t\treturn fr.connError(ErrCodeProtocol, fmt.Sprintf(\"unexpected CONTINUATION for stream %d\", fh.StreamID))\n\t}\n\n\tswitch fh.Type {\n\tcase FrameHeaders, FrameContinuation:\n\t\tif fh.Flags.Has(FlagHeadersEndHeaders) {\n\t\t\tfr.lastHeaderStream = 0\n\t\t} else {\n\t\t\tfr.lastHeaderStream = fh.StreamID\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// A DataFrame conveys arbitrary, variable-length sequences of octets\n// associated with a stream.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.1\ntype DataFrame struct {\n\tFrameHeader\n\tdata []byte\n}\n\nfunc (f *DataFrame) StreamEnded() bool {\n\treturn f.FrameHeader.Flags.Has(FlagDataEndStream)\n}\n\n// Data returns the frame's data octets, not including any padding\n// size byte or padding suffix bytes.\n// The caller must not retain the returned memory past the next\n// call to ReadFrame.\nfunc (f *DataFrame) Data() []byte {\n\tf.checkValid()\n\treturn f.data\n}\n\nfunc parseDataFrame(fc *frameCache, fh FrameHeader, countError func(string), payload []byte) (Frame, error) {\n\tif fh.StreamID == 0 {\n\t\t// DATA frames MUST be associated with a stream. If a\n\t\t// DATA frame is received whose stream identifier\n\t\t// field is 0x0, the recipient MUST respond with a\n\t\t// connection error (Section 5.4.1) of type\n\t\t// PROTOCOL_ERROR.\n\t\tcountError(\"frame_data_stream_0\")\n\t\treturn nil, connError{ErrCodeProtocol, \"DATA frame with stream ID 0\"}\n\t}\n\tf := fc.getDataFrame()\n\tf.FrameHeader = fh\n\n\tvar padSize byte\n\tif fh.Flags.Has(FlagDataPadded) {\n\t\tvar err error\n\t\tpayload, padSize, err = readByte(payload)\n\t\tif err != nil {\n\t\t\tcountError(\"frame_data_pad_byte_short\")\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif int(padSize) > len(payload) {\n\t\t// If the length of the padding is greater than the\n\t\t// length of the frame payload, the recipient MUST\n\t\t// treat this as a connection error.\n\t\t// Filed: https://github.com/http2/http2-spec/issues/610\n\t\tcountError(\"frame_data_pad_too_big\")\n\t\treturn nil, connError{ErrCodeProtocol, \"pad size larger than data payload\"}\n\t}\n\tf.data = payload[:len(payload)-int(padSize)]\n\treturn f, nil\n}\n\nvar (\n\terrStreamID    = errors.New(\"invalid stream ID\")\n\terrDepStreamID = errors.New(\"invalid dependent stream ID\")\n\terrPadLength   = errors.New(\"pad length too large\")\n\terrPadBytes    = errors.New(\"padding bytes must all be zeros unless AllowIllegalWrites is enabled\")\n)\n\nfunc validStreamIDOrZero(streamID uint32) bool {\n\treturn streamID&(1<<31) == 0\n}\n\nfunc validStreamID(streamID uint32) bool {\n\treturn streamID != 0 && streamID&(1<<31) == 0\n}\n\n// WriteData writes a DATA frame.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility not to violate the maximum frame size\n// and to not call other Write methods concurrently.\nfunc (f *Framer) WriteData(streamID uint32, endStream bool, data []byte) error {\n\treturn f.WriteDataPadded(streamID, endStream, data, nil)\n}\n\n// WriteDataPadded writes a DATA frame with optional padding.\n//\n// If pad is nil, the padding bit is not sent.\n// The length of pad must not exceed 255 bytes.\n// The bytes of pad must all be zero, unless f.AllowIllegalWrites is set.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility not to violate the maximum frame size\n// and to not call other Write methods concurrently.\nfunc (f *Framer) WriteDataPadded(streamID uint32, endStream bool, data, pad []byte) error {\n\tif err := f.startWriteDataPadded(streamID, endStream, data, pad); err != nil {\n\t\treturn err\n\t}\n\treturn f.endWrite()\n}\n\n// startWriteDataPadded is WriteDataPadded, but only writes the frame to the Framer's internal buffer.\n// The caller should call endWrite to flush the frame to the underlying writer.\nfunc (f *Framer) startWriteDataPadded(streamID uint32, endStream bool, data, pad []byte) error {\n\tif !validStreamID(streamID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tif len(pad) > 0 {\n\t\tif len(pad) > 255 {\n\t\t\treturn errPadLength\n\t\t}\n\t\tif !f.AllowIllegalWrites {\n\t\t\tfor _, b := range pad {\n\t\t\t\tif b != 0 {\n\t\t\t\t\t// \"Padding octets MUST be set to zero when sending.\"\n\t\t\t\t\treturn errPadBytes\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar flags Flags\n\tif endStream {\n\t\tflags |= FlagDataEndStream\n\t}\n\tif pad != nil {\n\t\tflags |= FlagDataPadded\n\t}\n\tf.startWrite(FrameData, flags, streamID)\n\tif pad != nil {\n\t\tf.wbuf = append(f.wbuf, byte(len(pad)))\n\t}\n\tf.wbuf = append(f.wbuf, data...)\n\tf.wbuf = append(f.wbuf, pad...)\n\treturn nil\n}\n\n// A SettingsFrame conveys configuration parameters that affect how\n// endpoints communicate, such as preferences and constraints on peer\n// behavior.\n//\n// See https://httpwg.org/specs/rfc7540.html#SETTINGS\ntype SettingsFrame struct {\n\tFrameHeader\n\tp []byte\n}\n\nfunc parseSettingsFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) {\n\tif fh.Flags.Has(FlagSettingsAck) && fh.Length > 0 {\n\t\t// When this (ACK 0x1) bit is set, the payload of the\n\t\t// SETTINGS frame MUST be empty. Receipt of a\n\t\t// SETTINGS frame with the ACK flag set and a length\n\t\t// field value other than 0 MUST be treated as a\n\t\t// connection error (Section 5.4.1) of type\n\t\t// FRAME_SIZE_ERROR.\n\t\tcountError(\"frame_settings_ack_with_length\")\n\t\treturn nil, ConnectionError(ErrCodeFrameSize)\n\t}\n\tif fh.StreamID != 0 {\n\t\t// SETTINGS frames always apply to a connection,\n\t\t// never a single stream. The stream identifier for a\n\t\t// SETTINGS frame MUST be zero (0x0).  If an endpoint\n\t\t// receives a SETTINGS frame whose stream identifier\n\t\t// field is anything other than 0x0, the endpoint MUST\n\t\t// respond with a connection error (Section 5.4.1) of\n\t\t// type PROTOCOL_ERROR.\n\t\tcountError(\"frame_settings_has_stream\")\n\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t}\n\tif len(p)%6 != 0 {\n\t\tcountError(\"frame_settings_mod_6\")\n\t\t// Expecting even number of 6 byte settings.\n\t\treturn nil, ConnectionError(ErrCodeFrameSize)\n\t}\n\tf := &SettingsFrame{FrameHeader: fh, p: p}\n\tif v, ok := f.Value(SettingInitialWindowSize); ok && v > (1<<31)-1 {\n\t\tcountError(\"frame_settings_window_size_too_big\")\n\t\t// Values above the maximum flow control window size of 2^31 - 1 MUST\n\t\t// be treated as a connection error (Section 5.4.1) of type\n\t\t// FLOW_CONTROL_ERROR.\n\t\treturn nil, ConnectionError(ErrCodeFlowControl)\n\t}\n\treturn f, nil\n}\n\nfunc (f *SettingsFrame) IsAck() bool {\n\treturn f.FrameHeader.Flags.Has(FlagSettingsAck)\n}\n\nfunc (f *SettingsFrame) Value(id SettingID) (v uint32, ok bool) {\n\tf.checkValid()\n\tfor i := 0; i < f.NumSettings(); i++ {\n\t\tif s := f.Setting(i); s.ID == id {\n\t\t\treturn s.Val, true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// Setting returns the setting from the frame at the given 0-based index.\n// The index must be >= 0 and less than f.NumSettings().\nfunc (f *SettingsFrame) Setting(i int) Setting {\n\tbuf := f.p\n\treturn Setting{\n\t\tID:  SettingID(binary.BigEndian.Uint16(buf[i*6 : i*6+2])),\n\t\tVal: binary.BigEndian.Uint32(buf[i*6+2 : i*6+6]),\n\t}\n}\n\nfunc (f *SettingsFrame) NumSettings() int { return len(f.p) / 6 }\n\n// HasDuplicates reports whether f contains any duplicate setting IDs.\nfunc (f *SettingsFrame) HasDuplicates() bool {\n\tnum := f.NumSettings()\n\tif num == 0 {\n\t\treturn false\n\t}\n\t// If it's small enough (the common case), just do the n^2\n\t// thing and avoid a map allocation.\n\tif num < 10 {\n\t\tfor i := 0; i < num; i++ {\n\t\t\tidi := f.Setting(i).ID\n\t\t\tfor j := i + 1; j < num; j++ {\n\t\t\t\tidj := f.Setting(j).ID\n\t\t\t\tif idi == idj {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\tseen := map[SettingID]bool{}\n\tfor i := 0; i < num; i++ {\n\t\tid := f.Setting(i).ID\n\t\tif seen[id] {\n\t\t\treturn true\n\t\t}\n\t\tseen[id] = true\n\t}\n\treturn false\n}\n\n// ForeachSetting runs fn for each setting.\n// It stops and returns the first error.\nfunc (f *SettingsFrame) ForeachSetting(fn func(Setting) error) error {\n\tf.checkValid()\n\tfor i := 0; i < f.NumSettings(); i++ {\n\t\tif err := fn(f.Setting(i)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// WriteSettings writes a SETTINGS frame with zero or more settings\n// specified and the ACK bit not set.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WriteSettings(settings ...Setting) error {\n\tf.startWrite(FrameSettings, 0, 0)\n\tfor _, s := range settings {\n\t\tf.writeUint16(uint16(s.ID))\n\t\tf.writeUint32(s.Val)\n\t}\n\treturn f.endWrite()\n}\n\n// WriteSettingsAck writes an empty SETTINGS frame with the ACK bit set.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WriteSettingsAck() error {\n\tf.startWrite(FrameSettings, FlagSettingsAck, 0)\n\treturn f.endWrite()\n}\n\n// A PingFrame is a mechanism for measuring a minimal round trip time\n// from the sender, as well as determining whether an idle connection\n// is still functional.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.7\ntype PingFrame struct {\n\tFrameHeader\n\tData [8]byte\n}\n\nfunc (f *PingFrame) IsAck() bool { return f.Flags.Has(FlagPingAck) }\n\nfunc parsePingFrame(_ *frameCache, fh FrameHeader, countError func(string), payload []byte) (Frame, error) {\n\tif len(payload) != 8 {\n\t\tcountError(\"frame_ping_length\")\n\t\treturn nil, ConnectionError(ErrCodeFrameSize)\n\t}\n\tif fh.StreamID != 0 {\n\t\tcountError(\"frame_ping_has_stream\")\n\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t}\n\tf := &PingFrame{FrameHeader: fh}\n\tcopy(f.Data[:], payload)\n\treturn f, nil\n}\n\nfunc (f *Framer) WritePing(ack bool, data [8]byte) error {\n\tvar flags Flags\n\tif ack {\n\t\tflags = FlagPingAck\n\t}\n\tf.startWrite(FramePing, flags, 0)\n\tf.writeBytes(data[:])\n\treturn f.endWrite()\n}\n\n// A GoAwayFrame informs the remote peer to stop creating streams on this connection.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.8\ntype GoAwayFrame struct {\n\tFrameHeader\n\tLastStreamID uint32\n\tErrCode      ErrCode\n\tdebugData    []byte\n}\n\n// DebugData returns any debug data in the GOAWAY frame. Its contents\n// are not defined.\n// The caller must not retain the returned memory past the next\n// call to ReadFrame.\nfunc (f *GoAwayFrame) DebugData() []byte {\n\tf.checkValid()\n\treturn f.debugData\n}\n\nfunc parseGoAwayFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) {\n\tif fh.StreamID != 0 {\n\t\tcountError(\"frame_goaway_has_stream\")\n\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t}\n\tif len(p) < 8 {\n\t\tcountError(\"frame_goaway_short\")\n\t\treturn nil, ConnectionError(ErrCodeFrameSize)\n\t}\n\treturn &GoAwayFrame{\n\t\tFrameHeader:  fh,\n\t\tLastStreamID: binary.BigEndian.Uint32(p[:4]) & (1<<31 - 1),\n\t\tErrCode:      ErrCode(binary.BigEndian.Uint32(p[4:8])),\n\t\tdebugData:    p[8:],\n\t}, nil\n}\n\nfunc (f *Framer) WriteGoAway(maxStreamID uint32, code ErrCode, debugData []byte) error {\n\tf.startWrite(FrameGoAway, 0, 0)\n\tf.writeUint32(maxStreamID & (1<<31 - 1))\n\tf.writeUint32(uint32(code))\n\tf.writeBytes(debugData)\n\treturn f.endWrite()\n}\n\n// An UnknownFrame is the frame type returned when the frame type is unknown\n// or no specific frame type parser exists.\ntype UnknownFrame struct {\n\tFrameHeader\n\tp []byte\n}\n\n// Payload returns the frame's payload (after the header).  It is not\n// valid to call this method after a subsequent call to\n// Framer.ReadFrame, nor is it valid to retain the returned slice.\n// The memory is owned by the Framer and is invalidated when the next\n// frame is read.\nfunc (f *UnknownFrame) Payload() []byte {\n\tf.checkValid()\n\treturn f.p\n}\n\nfunc parseUnknownFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) {\n\treturn &UnknownFrame{fh, p}, nil\n}\n\n// A WindowUpdateFrame is used to implement flow control.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.9\ntype WindowUpdateFrame struct {\n\tFrameHeader\n\tIncrement uint32 // never read with high bit set\n}\n\nfunc parseWindowUpdateFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) {\n\tif len(p) != 4 {\n\t\tcountError(\"frame_windowupdate_bad_len\")\n\t\treturn nil, ConnectionError(ErrCodeFrameSize)\n\t}\n\tinc := binary.BigEndian.Uint32(p[:4]) & 0x7fffffff // mask off high reserved bit\n\tif inc == 0 {\n\t\t// A receiver MUST treat the receipt of a\n\t\t// WINDOW_UPDATE frame with an flow control window\n\t\t// increment of 0 as a stream error (Section 5.4.2) of\n\t\t// type PROTOCOL_ERROR; errors on the connection flow\n\t\t// control window MUST be treated as a connection\n\t\t// error (Section 5.4.1).\n\t\tif fh.StreamID == 0 {\n\t\t\tcountError(\"frame_windowupdate_zero_inc_conn\")\n\t\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t\t}\n\t\tcountError(\"frame_windowupdate_zero_inc_stream\")\n\t\treturn nil, streamError(fh.StreamID, ErrCodeProtocol)\n\t}\n\treturn &WindowUpdateFrame{\n\t\tFrameHeader: fh,\n\t\tIncrement:   inc,\n\t}, nil\n}\n\n// WriteWindowUpdate writes a WINDOW_UPDATE frame.\n// The increment value must be between 1 and 2,147,483,647, inclusive.\n// If the Stream ID is zero, the window update applies to the\n// connection as a whole.\nfunc (f *Framer) WriteWindowUpdate(streamID, incr uint32) error {\n\t// \"The legal range for the increment to the flow control window is 1 to 2^31-1 (2,147,483,647) octets.\"\n\tif (incr < 1 || incr > 2147483647) && !f.AllowIllegalWrites {\n\t\treturn errors.New(\"illegal window increment value\")\n\t}\n\tf.startWrite(FrameWindowUpdate, 0, streamID)\n\tf.writeUint32(incr)\n\treturn f.endWrite()\n}\n\n// A HeadersFrame is used to open a stream and additionally carries a\n// header block fragment.\ntype HeadersFrame struct {\n\tFrameHeader\n\n\t// Priority is set if FlagHeadersPriority is set in the FrameHeader.\n\tPriority PriorityParam\n\n\theaderFragBuf []byte // not owned\n}\n\nfunc (f *HeadersFrame) HeaderBlockFragment() []byte {\n\tf.checkValid()\n\treturn f.headerFragBuf\n}\n\nfunc (f *HeadersFrame) HeadersEnded() bool {\n\treturn f.FrameHeader.Flags.Has(FlagHeadersEndHeaders)\n}\n\nfunc (f *HeadersFrame) StreamEnded() bool {\n\treturn f.FrameHeader.Flags.Has(FlagHeadersEndStream)\n}\n\nfunc (f *HeadersFrame) HasPriority() bool {\n\treturn f.FrameHeader.Flags.Has(FlagHeadersPriority)\n}\n\nfunc parseHeadersFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (_ Frame, err error) {\n\thf := &HeadersFrame{\n\t\tFrameHeader: fh,\n\t}\n\tif fh.StreamID == 0 {\n\t\t// HEADERS frames MUST be associated with a stream. If a HEADERS frame\n\t\t// is received whose stream identifier field is 0x0, the recipient MUST\n\t\t// respond with a connection error (Section 5.4.1) of type\n\t\t// PROTOCOL_ERROR.\n\t\tcountError(\"frame_headers_zero_stream\")\n\t\treturn nil, connError{ErrCodeProtocol, \"HEADERS frame with stream ID 0\"}\n\t}\n\tvar padLength uint8\n\tif fh.Flags.Has(FlagHeadersPadded) {\n\t\tif p, padLength, err = readByte(p); err != nil {\n\t\t\tcountError(\"frame_headers_pad_short\")\n\t\t\treturn\n\t\t}\n\t}\n\tif fh.Flags.Has(FlagHeadersPriority) {\n\t\tvar v uint32\n\t\tp, v, err = readUint32(p)\n\t\tif err != nil {\n\t\t\tcountError(\"frame_headers_prio_short\")\n\t\t\treturn nil, err\n\t\t}\n\t\thf.Priority.StreamDep = v & 0x7fffffff\n\t\thf.Priority.Exclusive = (v != hf.Priority.StreamDep) // high bit was set\n\t\tp, hf.Priority.Weight, err = readByte(p)\n\t\tif err != nil {\n\t\t\tcountError(\"frame_headers_prio_weight_short\")\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif len(p)-int(padLength) < 0 {\n\t\tcountError(\"frame_headers_pad_too_big\")\n\t\treturn nil, streamError(fh.StreamID, ErrCodeProtocol)\n\t}\n\thf.headerFragBuf = p[:len(p)-int(padLength)]\n\treturn hf, nil\n}\n\n// HeadersFrameParam are the parameters for writing a HEADERS frame.\ntype HeadersFrameParam struct {\n\t// StreamID is the required Stream ID to initiate.\n\tStreamID uint32\n\t// BlockFragment is part (or all) of a Header Block.\n\tBlockFragment []byte\n\n\t// EndStream indicates that the header block is the last that\n\t// the endpoint will send for the identified stream. Setting\n\t// this flag causes the stream to enter one of \"half closed\"\n\t// states.\n\tEndStream bool\n\n\t// EndHeaders indicates that this frame contains an entire\n\t// header block and is not followed by any\n\t// CONTINUATION frames.\n\tEndHeaders bool\n\n\t// PadLength is the optional number of bytes of zeros to add\n\t// to this frame.\n\tPadLength uint8\n\n\t// Priority, if non-zero, includes stream priority information\n\t// in the HEADER frame.\n\tPriority PriorityParam\n}\n\n// WriteHeaders writes a single HEADERS frame.\n//\n// This is a low-level header writing method. Encoding headers and\n// splitting them into any necessary CONTINUATION frames is handled\n// elsewhere.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WriteHeaders(p HeadersFrameParam) error {\n\tif !validStreamID(p.StreamID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tvar flags Flags\n\tif p.PadLength != 0 {\n\t\tflags |= FlagHeadersPadded\n\t}\n\tif p.EndStream {\n\t\tflags |= FlagHeadersEndStream\n\t}\n\tif p.EndHeaders {\n\t\tflags |= FlagHeadersEndHeaders\n\t}\n\tif !p.Priority.IsZero() {\n\t\tflags |= FlagHeadersPriority\n\t}\n\tf.startWrite(FrameHeaders, flags, p.StreamID)\n\tif p.PadLength != 0 {\n\t\tf.writeByte(p.PadLength)\n\t}\n\tif !p.Priority.IsZero() {\n\t\tv := p.Priority.StreamDep\n\t\tif !validStreamIDOrZero(v) && !f.AllowIllegalWrites {\n\t\t\treturn errDepStreamID\n\t\t}\n\t\tif p.Priority.Exclusive {\n\t\t\tv |= 1 << 31\n\t\t}\n\t\tf.writeUint32(v)\n\t\tf.writeByte(p.Priority.Weight)\n\t}\n\tf.wbuf = append(f.wbuf, p.BlockFragment...)\n\tf.wbuf = append(f.wbuf, padZeros[:p.PadLength]...)\n\treturn f.endWrite()\n}\n\n// A PriorityFrame specifies the sender-advised priority of a stream.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.3\ntype PriorityFrame struct {\n\tFrameHeader\n\tPriorityParam\n}\n\n// PriorityParam are the stream prioritzation parameters.\ntype PriorityParam struct {\n\t// StreamDep is a 31-bit stream identifier for the\n\t// stream that this stream depends on. Zero means no\n\t// dependency.\n\tStreamDep uint32\n\n\t// Exclusive is whether the dependency is exclusive.\n\tExclusive bool\n\n\t// Weight is the stream's zero-indexed weight. It should be\n\t// set together with StreamDep, or neither should be set. Per\n\t// the spec, \"Add one to the value to obtain a weight between\n\t// 1 and 256.\"\n\tWeight uint8\n}\n\nfunc (p PriorityParam) IsZero() bool {\n\treturn p == PriorityParam{}\n}\n\nfunc parsePriorityFrame(_ *frameCache, fh FrameHeader, countError func(string), payload []byte) (Frame, error) {\n\tif fh.StreamID == 0 {\n\t\tcountError(\"frame_priority_zero_stream\")\n\t\treturn nil, connError{ErrCodeProtocol, \"PRIORITY frame with stream ID 0\"}\n\t}\n\tif len(payload) != 5 {\n\t\tcountError(\"frame_priority_bad_length\")\n\t\treturn nil, connError{ErrCodeFrameSize, fmt.Sprintf(\"PRIORITY frame payload size was %d; want 5\", len(payload))}\n\t}\n\tv := binary.BigEndian.Uint32(payload[:4])\n\tstreamID := v & 0x7fffffff // mask off high bit\n\treturn &PriorityFrame{\n\t\tFrameHeader: fh,\n\t\tPriorityParam: PriorityParam{\n\t\t\tWeight:    payload[4],\n\t\t\tStreamDep: streamID,\n\t\t\tExclusive: streamID != v, // was high bit set?\n\t\t},\n\t}, nil\n}\n\n// WritePriority writes a PRIORITY frame.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WritePriority(streamID uint32, p PriorityParam) error {\n\tif !validStreamID(streamID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tif !validStreamIDOrZero(p.StreamDep) {\n\t\treturn errDepStreamID\n\t}\n\tf.startWrite(FramePriority, 0, streamID)\n\tv := p.StreamDep\n\tif p.Exclusive {\n\t\tv |= 1 << 31\n\t}\n\tf.writeUint32(v)\n\tf.writeByte(p.Weight)\n\treturn f.endWrite()\n}\n\n// A RSTStreamFrame allows for abnormal termination of a stream.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.4\ntype RSTStreamFrame struct {\n\tFrameHeader\n\tErrCode ErrCode\n}\n\nfunc parseRSTStreamFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) {\n\tif len(p) != 4 {\n\t\tcountError(\"frame_rststream_bad_len\")\n\t\treturn nil, ConnectionError(ErrCodeFrameSize)\n\t}\n\tif fh.StreamID == 0 {\n\t\tcountError(\"frame_rststream_zero_stream\")\n\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t}\n\treturn &RSTStreamFrame{fh, ErrCode(binary.BigEndian.Uint32(p[:4]))}, nil\n}\n\n// WriteRSTStream writes a RST_STREAM frame.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WriteRSTStream(streamID uint32, code ErrCode) error {\n\tif !validStreamID(streamID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tf.startWrite(FrameRSTStream, 0, streamID)\n\tf.writeUint32(uint32(code))\n\treturn f.endWrite()\n}\n\n// A ContinuationFrame is used to continue a sequence of header block fragments.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.10\ntype ContinuationFrame struct {\n\tFrameHeader\n\theaderFragBuf []byte\n}\n\nfunc parseContinuationFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) {\n\tif fh.StreamID == 0 {\n\t\tcountError(\"frame_continuation_zero_stream\")\n\t\treturn nil, connError{ErrCodeProtocol, \"CONTINUATION frame with stream ID 0\"}\n\t}\n\treturn &ContinuationFrame{fh, p}, nil\n}\n\nfunc (f *ContinuationFrame) HeaderBlockFragment() []byte {\n\tf.checkValid()\n\treturn f.headerFragBuf\n}\n\nfunc (f *ContinuationFrame) HeadersEnded() bool {\n\treturn f.FrameHeader.Flags.Has(FlagContinuationEndHeaders)\n}\n\n// WriteContinuation writes a CONTINUATION frame.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WriteContinuation(streamID uint32, endHeaders bool, headerBlockFragment []byte) error {\n\tif !validStreamID(streamID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tvar flags Flags\n\tif endHeaders {\n\t\tflags |= FlagContinuationEndHeaders\n\t}\n\tf.startWrite(FrameContinuation, flags, streamID)\n\tf.wbuf = append(f.wbuf, headerBlockFragment...)\n\treturn f.endWrite()\n}\n\n// A PushPromiseFrame is used to initiate a server stream.\n// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.6\ntype PushPromiseFrame struct {\n\tFrameHeader\n\tPromiseID     uint32\n\theaderFragBuf []byte // not owned\n}\n\nfunc (f *PushPromiseFrame) HeaderBlockFragment() []byte {\n\tf.checkValid()\n\treturn f.headerFragBuf\n}\n\nfunc (f *PushPromiseFrame) HeadersEnded() bool {\n\treturn f.FrameHeader.Flags.Has(FlagPushPromiseEndHeaders)\n}\n\nfunc parsePushPromise(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (_ Frame, err error) {\n\tpp := &PushPromiseFrame{\n\t\tFrameHeader: fh,\n\t}\n\tif pp.StreamID == 0 {\n\t\t// PUSH_PROMISE frames MUST be associated with an existing,\n\t\t// peer-initiated stream. The stream identifier of a\n\t\t// PUSH_PROMISE frame indicates the stream it is associated\n\t\t// with. If the stream identifier field specifies the value\n\t\t// 0x0, a recipient MUST respond with a connection error\n\t\t// (Section 5.4.1) of type PROTOCOL_ERROR.\n\t\tcountError(\"frame_pushpromise_zero_stream\")\n\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t}\n\t// The PUSH_PROMISE frame includes optional padding.\n\t// Padding fields and flags are identical to those defined for DATA frames\n\tvar padLength uint8\n\tif fh.Flags.Has(FlagPushPromisePadded) {\n\t\tif p, padLength, err = readByte(p); err != nil {\n\t\t\tcountError(\"frame_pushpromise_pad_short\")\n\t\t\treturn\n\t\t}\n\t}\n\n\tp, pp.PromiseID, err = readUint32(p)\n\tif err != nil {\n\t\tcountError(\"frame_pushpromise_promiseid_short\")\n\t\treturn\n\t}\n\tpp.PromiseID = pp.PromiseID & (1<<31 - 1)\n\n\tif int(padLength) > len(p) {\n\t\t// like the DATA frame, error out if padding is longer than the body.\n\t\tcountError(\"frame_pushpromise_pad_too_big\")\n\t\treturn nil, ConnectionError(ErrCodeProtocol)\n\t}\n\tpp.headerFragBuf = p[:len(p)-int(padLength)]\n\treturn pp, nil\n}\n\n// PushPromiseParam are the parameters for writing a PUSH_PROMISE frame.\ntype PushPromiseParam struct {\n\t// StreamID is the required Stream ID to initiate.\n\tStreamID uint32\n\n\t// PromiseID is the required Stream ID which this\n\t// Push Promises\n\tPromiseID uint32\n\n\t// BlockFragment is part (or all) of a Header Block.\n\tBlockFragment []byte\n\n\t// EndHeaders indicates that this frame contains an entire\n\t// header block and is not followed by any\n\t// CONTINUATION frames.\n\tEndHeaders bool\n\n\t// PadLength is the optional number of bytes of zeros to add\n\t// to this frame.\n\tPadLength uint8\n}\n\n// WritePushPromise writes a single PushPromise Frame.\n//\n// As with Header Frames, This is the low level call for writing\n// individual frames. Continuation frames are handled elsewhere.\n//\n// It will perform exactly one Write to the underlying Writer.\n// It is the caller's responsibility to not call other Write methods concurrently.\nfunc (f *Framer) WritePushPromise(p PushPromiseParam) error {\n\tif !validStreamID(p.StreamID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tvar flags Flags\n\tif p.PadLength != 0 {\n\t\tflags |= FlagPushPromisePadded\n\t}\n\tif p.EndHeaders {\n\t\tflags |= FlagPushPromiseEndHeaders\n\t}\n\tf.startWrite(FramePushPromise, flags, p.StreamID)\n\tif p.PadLength != 0 {\n\t\tf.writeByte(p.PadLength)\n\t}\n\tif !validStreamID(p.PromiseID) && !f.AllowIllegalWrites {\n\t\treturn errStreamID\n\t}\n\tf.writeUint32(p.PromiseID)\n\tf.wbuf = append(f.wbuf, p.BlockFragment...)\n\tf.wbuf = append(f.wbuf, padZeros[:p.PadLength]...)\n\treturn f.endWrite()\n}\n\n// WriteRawFrame writes a raw frame. This can be used to write\n// extension frames unknown to this package.\nfunc (f *Framer) WriteRawFrame(t FrameType, flags Flags, streamID uint32, payload []byte) error {\n\tf.startWrite(t, flags, streamID)\n\tf.writeBytes(payload)\n\treturn f.endWrite()\n}\n\nfunc readByte(p []byte) (remain []byte, b byte, err error) {\n\tif len(p) == 0 {\n\t\treturn nil, 0, io.ErrUnexpectedEOF\n\t}\n\treturn p[1:], p[0], nil\n}\n\nfunc readUint32(p []byte) (remain []byte, v uint32, err error) {\n\tif len(p) < 4 {\n\t\treturn nil, 0, io.ErrUnexpectedEOF\n\t}\n\treturn p[4:], binary.BigEndian.Uint32(p[:4]), nil\n}\n\ntype streamEnder interface {\n\tStreamEnded() bool\n}\n\ntype headersEnder interface {\n\tHeadersEnded() bool\n}\n\ntype headersOrContinuation interface {\n\theadersEnder\n\tHeaderBlockFragment() []byte\n}\n\n// A MetaHeadersFrame is the representation of one HEADERS frame and\n// zero or more contiguous CONTINUATION frames and the decoding of\n// their HPACK-encoded contents.\n//\n// This type of frame does not appear on the wire and is only returned\n// by the Framer when Framer.ReadMetaHeaders is set.\ntype MetaHeadersFrame struct {\n\t*HeadersFrame\n\n\t// Fields are the fields contained in the HEADERS and\n\t// CONTINUATION frames. The underlying slice is owned by the\n\t// Framer and must not be retained after the next call to\n\t// ReadFrame.\n\t//\n\t// Fields are guaranteed to be in the correct http2 order and\n\t// not have unknown pseudo header fields or invalid header\n\t// field names or values. Required pseudo header fields may be\n\t// missing, however. Use the MetaHeadersFrame.Pseudo accessor\n\t// method access pseudo headers.\n\tFields []hpack.HeaderField\n\n\t// Truncated is whether the max header list size limit was hit\n\t// and Fields is incomplete. The hpack decoder state is still\n\t// valid, however.\n\tTruncated bool\n}\n\n// PseudoValue returns the given pseudo header field's value.\n// The provided pseudo field should not contain the leading colon.\nfunc (mh *MetaHeadersFrame) PseudoValue(pseudo string) string {\n\tfor _, hf := range mh.Fields {\n\t\tif !hf.IsPseudo() {\n\t\t\treturn \"\"\n\t\t}\n\t\tif hf.Name[1:] == pseudo {\n\t\t\treturn hf.Value\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// RegularFields returns the regular (non-pseudo) header fields of mh.\n// The caller does not own the returned slice.\nfunc (mh *MetaHeadersFrame) RegularFields() []hpack.HeaderField {\n\tfor i, hf := range mh.Fields {\n\t\tif !hf.IsPseudo() {\n\t\t\treturn mh.Fields[i:]\n\t\t}\n\t}\n\treturn nil\n}\n\n// PseudoFields returns the pseudo header fields of mh.\n// The caller does not own the returned slice.\nfunc (mh *MetaHeadersFrame) PseudoFields() []hpack.HeaderField {\n\tfor i, hf := range mh.Fields {\n\t\tif !hf.IsPseudo() {\n\t\t\treturn mh.Fields[:i]\n\t\t}\n\t}\n\treturn mh.Fields\n}\n\nfunc (mh *MetaHeadersFrame) checkPseudos() error {\n\tvar isRequest, isResponse bool\n\tpf := mh.PseudoFields()\n\tfor i, hf := range pf {\n\t\tswitch hf.Name {\n\t\tcase \":method\", \":path\", \":scheme\", \":authority\":\n\t\t\tisRequest = true\n\t\tcase \":status\":\n\t\t\tisResponse = true\n\t\tdefault:\n\t\t\treturn pseudoHeaderError(hf.Name)\n\t\t}\n\t\t// Check for duplicates.\n\t\t// This would be a bad algorithm, but N is 4.\n\t\t// And this doesn't allocate.\n\t\tfor _, hf2 := range pf[:i] {\n\t\t\tif hf.Name == hf2.Name {\n\t\t\t\treturn duplicatePseudoHeaderError(hf.Name)\n\t\t\t}\n\t\t}\n\t}\n\tif isRequest && isResponse {\n\t\treturn errMixPseudoHeaderTypes\n\t}\n\treturn nil\n}\n\nfunc (fr *Framer) maxHeaderStringLen() int {\n\tv := fr.maxHeaderListSize()\n\tif uint32(int(v)) == v {\n\t\treturn int(v)\n\t}\n\t// They had a crazy big number for MaxHeaderBytes anyway,\n\t// so give them unlimited header lengths:\n\treturn 0\n}\n\n// readMetaFrame returns 0 or more CONTINUATION frames from fr and\n// merge them into the provided hf and returns a MetaHeadersFrame\n// with the decoded hpack values.\nfunc (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) {\n\tif fr.AllowIllegalReads {\n\t\treturn nil, errors.New(\"illegal use of AllowIllegalReads with ReadMetaHeaders\")\n\t}\n\tmh := &MetaHeadersFrame{\n\t\tHeadersFrame: hf,\n\t}\n\tvar remainSize = fr.maxHeaderListSize()\n\tvar sawRegular bool\n\n\tvar invalid error // pseudo header field errors\n\thdec := fr.ReadMetaHeaders\n\thdec.SetEmitEnabled(true)\n\thdec.SetMaxStringLength(fr.maxHeaderStringLen())\n\thdec.SetEmitFunc(func(hf hpack.HeaderField) {\n\t\tif VerboseLogs && fr.logReads {\n\t\t\tfr.debugReadLoggerf(\"http2: decoded hpack field %+v\", hf)\n\t\t}\n\t\tif !httpguts.ValidHeaderFieldValue(hf.Value) {\n\t\t\t// Don't include the value in the error, because it may be sensitive.\n\t\t\tinvalid = headerFieldValueError(hf.Name)\n\t\t}\n\t\tisPseudo := strings.HasPrefix(hf.Name, \":\")\n\t\tif isPseudo {\n\t\t\tif sawRegular {\n\t\t\t\tinvalid = errPseudoAfterRegular\n\t\t\t}\n\t\t} else {\n\t\t\tsawRegular = true\n\t\t\tif !validWireHeaderFieldName(hf.Name) {\n\t\t\t\tinvalid = headerFieldNameError(hf.Name)\n\t\t\t}\n\t\t}\n\n\t\tif invalid != nil {\n\t\t\thdec.SetEmitEnabled(false)\n\t\t\treturn\n\t\t}\n\n\t\tsize := hf.Size()\n\t\tif size > remainSize {\n\t\t\thdec.SetEmitEnabled(false)\n\t\t\tmh.Truncated = true\n\t\t\treturn\n\t\t}\n\t\tremainSize -= size\n\n\t\tmh.Fields = append(mh.Fields, hf)\n\t})\n\t// Lose reference to MetaHeadersFrame:\n\tdefer hdec.SetEmitFunc(func(hf hpack.HeaderField) {})\n\n\tvar hc headersOrContinuation = hf\n\tfor {\n\t\tfrag := hc.HeaderBlockFragment()\n\t\tif _, err := hdec.Write(frag); err != nil {\n\t\t\treturn nil, ConnectionError(ErrCodeCompression)\n\t\t}\n\n\t\tif hc.HeadersEnded() {\n\t\t\tbreak\n\t\t}\n\t\tif f, err := fr.ReadFrame(); err != nil {\n\t\t\treturn nil, err\n\t\t} else {\n\t\t\thc = f.(*ContinuationFrame) // guaranteed by checkFrameOrder\n\t\t}\n\t}\n\n\tmh.HeadersFrame.headerFragBuf = nil\n\tmh.HeadersFrame.invalidate()\n\n\tif err := hdec.Close(); err != nil {\n\t\treturn nil, ConnectionError(ErrCodeCompression)\n\t}\n\tif invalid != nil {\n\t\tfr.errDetail = invalid\n\t\tif VerboseLogs {\n\t\t\tlog.Printf(\"http2: invalid header: %v\", invalid)\n\t\t}\n\t\treturn nil, StreamError{mh.StreamID, ErrCodeProtocol, invalid}\n\t}\n\tif err := mh.checkPseudos(); err != nil {\n\t\tfr.errDetail = err\n\t\tif VerboseLogs {\n\t\t\tlog.Printf(\"http2: invalid pseudo headers: %v\", err)\n\t\t}\n\t\treturn nil, StreamError{mh.StreamID, ErrCodeProtocol, err}\n\t}\n\treturn mh, nil\n}\n\nfunc summarizeFrame(f Frame) string {\n\tvar buf bytes.Buffer\n\tf.Header().writeDebug(&buf)\n\tswitch f := f.(type) {\n\tcase *SettingsFrame:\n\t\tn := 0\n\t\tf.ForeachSetting(func(s Setting) error {\n\t\t\tn++\n\t\t\tif n == 1 {\n\t\t\t\tbuf.WriteString(\", settings:\")\n\t\t\t}\n\t\t\tfmt.Fprintf(&buf, \" %v=%v,\", s.ID, s.Val)\n\t\t\treturn nil\n\t\t})\n\t\tif n > 0 {\n\t\t\tbuf.Truncate(buf.Len() - 1) // remove trailing comma\n\t\t}\n\tcase *DataFrame:\n\t\tdata := f.Data()\n\t\tconst max = 256\n\t\tif len(data) > max {\n\t\t\tdata = data[:max]\n\t\t}\n\t\tfmt.Fprintf(&buf, \" data=%q\", data)\n\t\tif len(f.Data()) > max {\n\t\t\tfmt.Fprintf(&buf, \" (%d bytes omitted)\", len(f.Data())-max)\n\t\t}\n\tcase *WindowUpdateFrame:\n\t\tif f.StreamID == 0 {\n\t\t\tbuf.WriteString(\" (conn)\")\n\t\t}\n\t\tfmt.Fprintf(&buf, \" incr=%v\", f.Increment)\n\tcase *PingFrame:\n\t\tfmt.Fprintf(&buf, \" ping=%q\", f.Data[:])\n\tcase *GoAwayFrame:\n\t\tfmt.Fprintf(&buf, \" LastStreamID=%v ErrCode=%v Debug=%q\",\n\t\t\tf.LastStreamID, f.ErrCode, f.debugData)\n\tcase *RSTStreamFrame:\n\t\tfmt.Fprintf(&buf, \" ErrCode=%v\", f.ErrCode)\n\t}\n\treturn buf.String()\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/gotrack.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Defensive debug-only utility to track that functions run on the\n// goroutine that they're supposed to.\n\npackage http2\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"sync\"\n)\n\nvar DebugGoroutines = os.Getenv(\"DEBUG_HTTP2_GOROUTINES\") == \"1\"\n\ntype goroutineLock uint64\n\nfunc newGoroutineLock() goroutineLock {\n\tif !DebugGoroutines {\n\t\treturn 0\n\t}\n\treturn goroutineLock(curGoroutineID())\n}\n\nfunc (g goroutineLock) check() {\n\tif !DebugGoroutines {\n\t\treturn\n\t}\n\tif curGoroutineID() != uint64(g) {\n\t\tpanic(\"running on the wrong goroutine\")\n\t}\n}\n\nfunc (g goroutineLock) checkNotOn() {\n\tif !DebugGoroutines {\n\t\treturn\n\t}\n\tif curGoroutineID() == uint64(g) {\n\t\tpanic(\"running on the wrong goroutine\")\n\t}\n}\n\nvar goroutineSpace = []byte(\"goroutine \")\n\nfunc curGoroutineID() uint64 {\n\tbp := littleBuf.Get().(*[]byte)\n\tdefer littleBuf.Put(bp)\n\tb := *bp\n\tb = b[:runtime.Stack(b, false)]\n\t// Parse the 4707 out of \"goroutine 4707 [\"\n\tb = bytes.TrimPrefix(b, goroutineSpace)\n\ti := bytes.IndexByte(b, ' ')\n\tif i < 0 {\n\t\tpanic(fmt.Sprintf(\"No space found in %q\", b))\n\t}\n\tb = b[:i]\n\tn, err := parseUintBytes(b, 10, 64)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"Failed to parse goroutine ID out of %q: %v\", b, err))\n\t}\n\treturn n\n}\n\nvar littleBuf = sync.Pool{\n\tNew: func() interface{} {\n\t\tbuf := make([]byte, 64)\n\t\treturn &buf\n\t},\n}\n\n// parseUintBytes is like strconv.ParseUint, but using a []byte.\nfunc parseUintBytes(s []byte, base int, bitSize int) (n uint64, err error) {\n\tvar cutoff, maxVal uint64\n\n\tif bitSize == 0 {\n\t\tbitSize = int(strconv.IntSize)\n\t}\n\n\ts0 := s\n\tswitch {\n\tcase len(s) < 1:\n\t\terr = strconv.ErrSyntax\n\t\tgoto Error\n\n\tcase 2 <= base && base <= 36:\n\t\t// valid base; nothing to do\n\n\tcase base == 0:\n\t\t// Look for octal, hex prefix.\n\t\tswitch {\n\t\tcase s[0] == '0' && len(s) > 1 && (s[1] == 'x' || s[1] == 'X'):\n\t\t\tbase = 16\n\t\t\ts = s[2:]\n\t\t\tif len(s) < 1 {\n\t\t\t\terr = strconv.ErrSyntax\n\t\t\t\tgoto Error\n\t\t\t}\n\t\tcase s[0] == '0':\n\t\t\tbase = 8\n\t\tdefault:\n\t\t\tbase = 10\n\t\t}\n\n\tdefault:\n\t\terr = errors.New(\"invalid base \" + strconv.Itoa(base))\n\t\tgoto Error\n\t}\n\n\tn = 0\n\tcutoff = cutoff64(base)\n\tmaxVal = 1<<uint(bitSize) - 1\n\n\tfor i := 0; i < len(s); i++ {\n\t\tvar v byte\n\t\td := s[i]\n\t\tswitch {\n\t\tcase '0' <= d && d <= '9':\n\t\t\tv = d - '0'\n\t\tcase 'a' <= d && d <= 'z':\n\t\t\tv = d - 'a' + 10\n\t\tcase 'A' <= d && d <= 'Z':\n\t\t\tv = d - 'A' + 10\n\t\tdefault:\n\t\t\tn = 0\n\t\t\terr = strconv.ErrSyntax\n\t\t\tgoto Error\n\t\t}\n\t\tif int(v) >= base {\n\t\t\tn = 0\n\t\t\terr = strconv.ErrSyntax\n\t\t\tgoto Error\n\t\t}\n\n\t\tif n >= cutoff {\n\t\t\t// n*base overflows\n\t\t\tn = 1<<64 - 1\n\t\t\terr = strconv.ErrRange\n\t\t\tgoto Error\n\t\t}\n\t\tn *= uint64(base)\n\n\t\tn1 := n + uint64(v)\n\t\tif n1 < n || n1 > maxVal {\n\t\t\t// n+v overflows\n\t\t\tn = 1<<64 - 1\n\t\t\terr = strconv.ErrRange\n\t\t\tgoto Error\n\t\t}\n\t\tn = n1\n\t}\n\n\treturn n, nil\n\nError:\n\treturn n, &strconv.NumError{Func: \"ParseUint\", Num: string(s0), Err: err}\n}\n\n// Return the first number n such that n*base >= 1<<64.\nfunc cutoff64(base int) uint64 {\n\tif base < 2 {\n\t\treturn 0\n\t}\n\treturn (1<<64-1)/uint64(base) + 1\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/headermap.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"net/http\"\n\t\"sync\"\n)\n\nvar (\n\tcommonBuildOnce   sync.Once\n\tcommonLowerHeader map[string]string // Go-Canonical-Case -> lower-case\n\tcommonCanonHeader map[string]string // lower-case -> Go-Canonical-Case\n)\n\nfunc buildCommonHeaderMapsOnce() {\n\tcommonBuildOnce.Do(buildCommonHeaderMaps)\n}\n\nfunc buildCommonHeaderMaps() {\n\tcommon := []string{\n\t\t\"accept\",\n\t\t\"accept-charset\",\n\t\t\"accept-encoding\",\n\t\t\"accept-language\",\n\t\t\"accept-ranges\",\n\t\t\"age\",\n\t\t\"access-control-allow-credentials\",\n\t\t\"access-control-allow-headers\",\n\t\t\"access-control-allow-methods\",\n\t\t\"access-control-allow-origin\",\n\t\t\"access-control-expose-headers\",\n\t\t\"access-control-max-age\",\n\t\t\"access-control-request-headers\",\n\t\t\"access-control-request-method\",\n\t\t\"allow\",\n\t\t\"authorization\",\n\t\t\"cache-control\",\n\t\t\"content-disposition\",\n\t\t\"content-encoding\",\n\t\t\"content-language\",\n\t\t\"content-length\",\n\t\t\"content-location\",\n\t\t\"content-range\",\n\t\t\"content-type\",\n\t\t\"cookie\",\n\t\t\"date\",\n\t\t\"etag\",\n\t\t\"expect\",\n\t\t\"expires\",\n\t\t\"from\",\n\t\t\"host\",\n\t\t\"if-match\",\n\t\t\"if-modified-since\",\n\t\t\"if-none-match\",\n\t\t\"if-unmodified-since\",\n\t\t\"last-modified\",\n\t\t\"link\",\n\t\t\"location\",\n\t\t\"max-forwards\",\n\t\t\"origin\",\n\t\t\"proxy-authenticate\",\n\t\t\"proxy-authorization\",\n\t\t\"range\",\n\t\t\"referer\",\n\t\t\"refresh\",\n\t\t\"retry-after\",\n\t\t\"server\",\n\t\t\"set-cookie\",\n\t\t\"strict-transport-security\",\n\t\t\"trailer\",\n\t\t\"transfer-encoding\",\n\t\t\"user-agent\",\n\t\t\"vary\",\n\t\t\"via\",\n\t\t\"www-authenticate\",\n\t\t\"x-forwarded-for\",\n\t\t\"x-forwarded-proto\",\n\t}\n\tcommonLowerHeader = make(map[string]string, len(common))\n\tcommonCanonHeader = make(map[string]string, len(common))\n\tfor _, v := range common {\n\t\tchk := http.CanonicalHeaderKey(v)\n\t\tcommonLowerHeader[chk] = v\n\t\tcommonCanonHeader[v] = chk\n\t}\n}\n\nfunc lowerHeader(v string) (lower string, ascii bool) {\n\tbuildCommonHeaderMapsOnce()\n\tif s, ok := commonLowerHeader[v]; ok {\n\t\treturn s, true\n\t}\n\treturn asciiToLower(v)\n}\n\nfunc canonicalHeader(v string) string {\n\tbuildCommonHeaderMapsOnce()\n\tif s, ok := commonCanonHeader[v]; ok {\n\t\treturn s\n\t}\n\treturn http.CanonicalHeaderKey(v)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/hpack/encode.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage hpack\n\nimport (\n\t\"io\"\n)\n\nconst (\n\tuint32Max              = ^uint32(0)\n\tinitialHeaderTableSize = 4096\n)\n\ntype Encoder struct {\n\tdynTab dynamicTable\n\t// minSize is the minimum table size set by\n\t// SetMaxDynamicTableSize after the previous Header Table Size\n\t// Update.\n\tminSize uint32\n\t// maxSizeLimit is the maximum table size this encoder\n\t// supports. This will protect the encoder from too large\n\t// size.\n\tmaxSizeLimit uint32\n\t// tableSizeUpdate indicates whether \"Header Table Size\n\t// Update\" is required.\n\ttableSizeUpdate bool\n\tw               io.Writer\n\tbuf             []byte\n}\n\n// NewEncoder returns a new Encoder which performs HPACK encoding. An\n// encoded data is written to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\te := &Encoder{\n\t\tminSize:         uint32Max,\n\t\tmaxSizeLimit:    initialHeaderTableSize,\n\t\ttableSizeUpdate: false,\n\t\tw:               w,\n\t}\n\te.dynTab.table.init()\n\te.dynTab.setMaxSize(initialHeaderTableSize)\n\treturn e\n}\n\n// WriteField encodes f into a single Write to e's underlying Writer.\n// This function may also produce bytes for \"Header Table Size Update\"\n// if necessary. If produced, it is done before encoding f.\nfunc (e *Encoder) WriteField(f HeaderField) error {\n\te.buf = e.buf[:0]\n\n\tif e.tableSizeUpdate {\n\t\te.tableSizeUpdate = false\n\t\tif e.minSize < e.dynTab.maxSize {\n\t\t\te.buf = appendTableSize(e.buf, e.minSize)\n\t\t}\n\t\te.minSize = uint32Max\n\t\te.buf = appendTableSize(e.buf, e.dynTab.maxSize)\n\t}\n\n\tidx, nameValueMatch := e.searchTable(f)\n\tif nameValueMatch {\n\t\te.buf = appendIndexed(e.buf, idx)\n\t} else {\n\t\tindexing := e.shouldIndex(f)\n\t\tif indexing {\n\t\t\te.dynTab.add(f)\n\t\t}\n\n\t\tif idx == 0 {\n\t\t\te.buf = appendNewName(e.buf, f, indexing)\n\t\t} else {\n\t\t\te.buf = appendIndexedName(e.buf, f, idx, indexing)\n\t\t}\n\t}\n\tn, err := e.w.Write(e.buf)\n\tif err == nil && n != len(e.buf) {\n\t\terr = io.ErrShortWrite\n\t}\n\treturn err\n}\n\n// searchTable searches f in both stable and dynamic header tables.\n// The static header table is searched first. Only when there is no\n// exact match for both name and value, the dynamic header table is\n// then searched. If there is no match, i is 0. If both name and value\n// match, i is the matched index and nameValueMatch becomes true. If\n// only name matches, i points to that index and nameValueMatch\n// becomes false.\nfunc (e *Encoder) searchTable(f HeaderField) (i uint64, nameValueMatch bool) {\n\ti, nameValueMatch = staticTable.search(f)\n\tif nameValueMatch {\n\t\treturn i, true\n\t}\n\n\tj, nameValueMatch := e.dynTab.table.search(f)\n\tif nameValueMatch || (i == 0 && j != 0) {\n\t\treturn j + uint64(staticTable.len()), nameValueMatch\n\t}\n\n\treturn i, false\n}\n\n// SetMaxDynamicTableSize changes the dynamic header table size to v.\n// The actual size is bounded by the value passed to\n// SetMaxDynamicTableSizeLimit.\nfunc (e *Encoder) SetMaxDynamicTableSize(v uint32) {\n\tif v > e.maxSizeLimit {\n\t\tv = e.maxSizeLimit\n\t}\n\tif v < e.minSize {\n\t\te.minSize = v\n\t}\n\te.tableSizeUpdate = true\n\te.dynTab.setMaxSize(v)\n}\n\n// MaxDynamicTableSize returns the current dynamic header table size.\nfunc (e *Encoder) MaxDynamicTableSize() (v uint32) {\n\treturn e.dynTab.maxSize\n}\n\n// SetMaxDynamicTableSizeLimit changes the maximum value that can be\n// specified in SetMaxDynamicTableSize to v. By default, it is set to\n// 4096, which is the same size of the default dynamic header table\n// size described in HPACK specification. If the current maximum\n// dynamic header table size is strictly greater than v, \"Header Table\n// Size Update\" will be done in the next WriteField call and the\n// maximum dynamic header table size is truncated to v.\nfunc (e *Encoder) SetMaxDynamicTableSizeLimit(v uint32) {\n\te.maxSizeLimit = v\n\tif e.dynTab.maxSize > v {\n\t\te.tableSizeUpdate = true\n\t\te.dynTab.setMaxSize(v)\n\t}\n}\n\n// shouldIndex reports whether f should be indexed.\nfunc (e *Encoder) shouldIndex(f HeaderField) bool {\n\treturn !f.Sensitive && f.Size() <= e.dynTab.maxSize\n}\n\n// appendIndexed appends index i, as encoded in \"Indexed Header Field\"\n// representation, to dst and returns the extended buffer.\nfunc appendIndexed(dst []byte, i uint64) []byte {\n\tfirst := len(dst)\n\tdst = appendVarInt(dst, 7, i)\n\tdst[first] |= 0x80\n\treturn dst\n}\n\n// appendNewName appends f, as encoded in one of \"Literal Header field\n// - New Name\" representation variants, to dst and returns the\n// extended buffer.\n//\n// If f.Sensitive is true, \"Never Indexed\" representation is used. If\n// f.Sensitive is false and indexing is true, \"Incremental Indexing\"\n// representation is used.\nfunc appendNewName(dst []byte, f HeaderField, indexing bool) []byte {\n\tdst = append(dst, encodeTypeByte(indexing, f.Sensitive))\n\tdst = appendHpackString(dst, f.Name)\n\treturn appendHpackString(dst, f.Value)\n}\n\n// appendIndexedName appends f and index i referring indexed name\n// entry, as encoded in one of \"Literal Header field - Indexed Name\"\n// representation variants, to dst and returns the extended buffer.\n//\n// If f.Sensitive is true, \"Never Indexed\" representation is used. If\n// f.Sensitive is false and indexing is true, \"Incremental Indexing\"\n// representation is used.\nfunc appendIndexedName(dst []byte, f HeaderField, i uint64, indexing bool) []byte {\n\tfirst := len(dst)\n\tvar n byte\n\tif indexing {\n\t\tn = 6\n\t} else {\n\t\tn = 4\n\t}\n\tdst = appendVarInt(dst, n, i)\n\tdst[first] |= encodeTypeByte(indexing, f.Sensitive)\n\treturn appendHpackString(dst, f.Value)\n}\n\n// appendTableSize appends v, as encoded in \"Header Table Size Update\"\n// representation, to dst and returns the extended buffer.\nfunc appendTableSize(dst []byte, v uint32) []byte {\n\tfirst := len(dst)\n\tdst = appendVarInt(dst, 5, uint64(v))\n\tdst[first] |= 0x20\n\treturn dst\n}\n\n// appendVarInt appends i, as encoded in variable integer form using n\n// bit prefix, to dst and returns the extended buffer.\n//\n// See\n// https://httpwg.org/specs/rfc7541.html#integer.representation\nfunc appendVarInt(dst []byte, n byte, i uint64) []byte {\n\tk := uint64((1 << n) - 1)\n\tif i < k {\n\t\treturn append(dst, byte(i))\n\t}\n\tdst = append(dst, byte(k))\n\ti -= k\n\tfor ; i >= 128; i >>= 7 {\n\t\tdst = append(dst, byte(0x80|(i&0x7f)))\n\t}\n\treturn append(dst, byte(i))\n}\n\n// appendHpackString appends s, as encoded in \"String Literal\"\n// representation, to dst and returns the extended buffer.\n//\n// s will be encoded in Huffman codes only when it produces strictly\n// shorter byte string.\nfunc appendHpackString(dst []byte, s string) []byte {\n\thuffmanLength := HuffmanEncodeLength(s)\n\tif huffmanLength < uint64(len(s)) {\n\t\tfirst := len(dst)\n\t\tdst = appendVarInt(dst, 7, huffmanLength)\n\t\tdst = AppendHuffmanString(dst, s)\n\t\tdst[first] |= 0x80\n\t} else {\n\t\tdst = appendVarInt(dst, 7, uint64(len(s)))\n\t\tdst = append(dst, s...)\n\t}\n\treturn dst\n}\n\n// encodeTypeByte returns type byte. If sensitive is true, type byte\n// for \"Never Indexed\" representation is returned. If sensitive is\n// false and indexing is true, type byte for \"Incremental Indexing\"\n// representation is returned. Otherwise, type byte for \"Without\n// Indexing\" is returned.\nfunc encodeTypeByte(indexing, sensitive bool) byte {\n\tif sensitive {\n\t\treturn 0x10\n\t}\n\tif indexing {\n\t\treturn 0x40\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/hpack/hpack.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package hpack implements HPACK, a compression format for\n// efficiently representing HTTP header fields in the context of HTTP/2.\n//\n// See http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-09\npackage hpack\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n)\n\n// A DecodingError is something the spec defines as a decoding error.\ntype DecodingError struct {\n\tErr error\n}\n\nfunc (de DecodingError) Error() string {\n\treturn fmt.Sprintf(\"decoding error: %v\", de.Err)\n}\n\n// An InvalidIndexError is returned when an encoder references a table\n// entry before the static table or after the end of the dynamic table.\ntype InvalidIndexError int\n\nfunc (e InvalidIndexError) Error() string {\n\treturn fmt.Sprintf(\"invalid indexed representation index %d\", int(e))\n}\n\n// A HeaderField is a name-value pair. Both the name and value are\n// treated as opaque sequences of octets.\ntype HeaderField struct {\n\tName, Value string\n\n\t// Sensitive means that this header field should never be\n\t// indexed.\n\tSensitive bool\n}\n\n// IsPseudo reports whether the header field is an http2 pseudo header.\n// That is, it reports whether it starts with a colon.\n// It is not otherwise guaranteed to be a valid pseudo header field,\n// though.\nfunc (hf HeaderField) IsPseudo() bool {\n\treturn len(hf.Name) != 0 && hf.Name[0] == ':'\n}\n\nfunc (hf HeaderField) String() string {\n\tvar suffix string\n\tif hf.Sensitive {\n\t\tsuffix = \" (sensitive)\"\n\t}\n\treturn fmt.Sprintf(\"header field %q = %q%s\", hf.Name, hf.Value, suffix)\n}\n\n// Size returns the size of an entry per RFC 7541 section 4.1.\nfunc (hf HeaderField) Size() uint32 {\n\t// https://httpwg.org/specs/rfc7541.html#rfc.section.4.1\n\t// \"The size of the dynamic table is the sum of the size of\n\t// its entries. The size of an entry is the sum of its name's\n\t// length in octets (as defined in Section 5.2), its value's\n\t// length in octets (see Section 5.2), plus 32.  The size of\n\t// an entry is calculated using the length of the name and\n\t// value without any Huffman encoding applied.\"\n\n\t// This can overflow if somebody makes a large HeaderField\n\t// Name and/or Value by hand, but we don't care, because that\n\t// won't happen on the wire because the encoding doesn't allow\n\t// it.\n\treturn uint32(len(hf.Name) + len(hf.Value) + 32)\n}\n\n// A Decoder is the decoding context for incremental processing of\n// header blocks.\ntype Decoder struct {\n\tdynTab dynamicTable\n\temit   func(f HeaderField)\n\n\temitEnabled bool // whether calls to emit are enabled\n\tmaxStrLen   int  // 0 means unlimited\n\n\t// buf is the unparsed buffer. It's only written to\n\t// saveBuf if it was truncated in the middle of a header\n\t// block. Because it's usually not owned, we can only\n\t// process it under Write.\n\tbuf []byte // not owned; only valid during Write\n\n\t// saveBuf is previous data passed to Write which we weren't able\n\t// to fully parse before. Unlike buf, we own this data.\n\tsaveBuf bytes.Buffer\n\n\tfirstField bool // processing the first field of the header block\n}\n\n// NewDecoder returns a new decoder with the provided maximum dynamic\n// table size. The emitFunc will be called for each valid field\n// parsed, in the same goroutine as calls to Write, before Write returns.\nfunc NewDecoder(maxDynamicTableSize uint32, emitFunc func(f HeaderField)) *Decoder {\n\td := &Decoder{\n\t\temit:        emitFunc,\n\t\temitEnabled: true,\n\t\tfirstField:  true,\n\t}\n\td.dynTab.table.init()\n\td.dynTab.allowedMaxSize = maxDynamicTableSize\n\td.dynTab.setMaxSize(maxDynamicTableSize)\n\treturn d\n}\n\n// ErrStringLength is returned by Decoder.Write when the max string length\n// (as configured by Decoder.SetMaxStringLength) would be violated.\nvar ErrStringLength = errors.New(\"hpack: string too long\")\n\n// SetMaxStringLength sets the maximum size of a HeaderField name or\n// value string. If a string exceeds this length (even after any\n// decompression), Write will return ErrStringLength.\n// A value of 0 means unlimited and is the default from NewDecoder.\nfunc (d *Decoder) SetMaxStringLength(n int) {\n\td.maxStrLen = n\n}\n\n// SetEmitFunc changes the callback used when new header fields\n// are decoded.\n// It must be non-nil. It does not affect EmitEnabled.\nfunc (d *Decoder) SetEmitFunc(emitFunc func(f HeaderField)) {\n\td.emit = emitFunc\n}\n\n// SetEmitEnabled controls whether the emitFunc provided to NewDecoder\n// should be called. The default is true.\n//\n// This facility exists to let servers enforce MAX_HEADER_LIST_SIZE\n// while still decoding and keeping in-sync with decoder state, but\n// without doing unnecessary decompression or generating unnecessary\n// garbage for header fields past the limit.\nfunc (d *Decoder) SetEmitEnabled(v bool) { d.emitEnabled = v }\n\n// EmitEnabled reports whether calls to the emitFunc provided to NewDecoder\n// are currently enabled. The default is true.\nfunc (d *Decoder) EmitEnabled() bool { return d.emitEnabled }\n\n// TODO: add method *Decoder.Reset(maxSize, emitFunc) to let callers re-use Decoders and their\n// underlying buffers for garbage reasons.\n\nfunc (d *Decoder) SetMaxDynamicTableSize(v uint32) {\n\td.dynTab.setMaxSize(v)\n}\n\n// SetAllowedMaxDynamicTableSize sets the upper bound that the encoded\n// stream (via dynamic table size updates) may set the maximum size\n// to.\nfunc (d *Decoder) SetAllowedMaxDynamicTableSize(v uint32) {\n\td.dynTab.allowedMaxSize = v\n}\n\ntype dynamicTable struct {\n\t// https://httpwg.org/specs/rfc7541.html#rfc.section.2.3.2\n\ttable          headerFieldTable\n\tsize           uint32 // in bytes\n\tmaxSize        uint32 // current maxSize\n\tallowedMaxSize uint32 // maxSize may go up to this, inclusive\n}\n\nfunc (dt *dynamicTable) setMaxSize(v uint32) {\n\tdt.maxSize = v\n\tdt.evict()\n}\n\nfunc (dt *dynamicTable) add(f HeaderField) {\n\tdt.table.addEntry(f)\n\tdt.size += f.Size()\n\tdt.evict()\n}\n\n// If we're too big, evict old stuff.\nfunc (dt *dynamicTable) evict() {\n\tvar n int\n\tfor dt.size > dt.maxSize && n < dt.table.len() {\n\t\tdt.size -= dt.table.ents[n].Size()\n\t\tn++\n\t}\n\tdt.table.evictOldest(n)\n}\n\nfunc (d *Decoder) maxTableIndex() int {\n\t// This should never overflow. RFC 7540 Section 6.5.2 limits the size of\n\t// the dynamic table to 2^32 bytes, where each entry will occupy more than\n\t// one byte. Further, the staticTable has a fixed, small length.\n\treturn d.dynTab.table.len() + staticTable.len()\n}\n\nfunc (d *Decoder) at(i uint64) (hf HeaderField, ok bool) {\n\t// See Section 2.3.3.\n\tif i == 0 {\n\t\treturn\n\t}\n\tif i <= uint64(staticTable.len()) {\n\t\treturn staticTable.ents[i-1], true\n\t}\n\tif i > uint64(d.maxTableIndex()) {\n\t\treturn\n\t}\n\t// In the dynamic table, newer entries have lower indices.\n\t// However, dt.ents[0] is the oldest entry. Hence, dt.ents is\n\t// the reversed dynamic table.\n\tdt := d.dynTab.table\n\treturn dt.ents[dt.len()-(int(i)-staticTable.len())], true\n}\n\n// DecodeFull decodes an entire block.\n//\n// TODO: remove this method and make it incremental later? This is\n// easier for debugging now.\nfunc (d *Decoder) DecodeFull(p []byte) ([]HeaderField, error) {\n\tvar hf []HeaderField\n\tsaveFunc := d.emit\n\tdefer func() { d.emit = saveFunc }()\n\td.emit = func(f HeaderField) { hf = append(hf, f) }\n\tif _, err := d.Write(p); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := d.Close(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn hf, nil\n}\n\n// Close declares that the decoding is complete and resets the Decoder\n// to be reused again for a new header block. If there is any remaining\n// data in the decoder's buffer, Close returns an error.\nfunc (d *Decoder) Close() error {\n\tif d.saveBuf.Len() > 0 {\n\t\td.saveBuf.Reset()\n\t\treturn DecodingError{errors.New(\"truncated headers\")}\n\t}\n\td.firstField = true\n\treturn nil\n}\n\nfunc (d *Decoder) Write(p []byte) (n int, err error) {\n\tif len(p) == 0 {\n\t\t// Prevent state machine CPU attacks (making us redo\n\t\t// work up to the point of finding out we don't have\n\t\t// enough data)\n\t\treturn\n\t}\n\t// Only copy the data if we have to. Optimistically assume\n\t// that p will contain a complete header block.\n\tif d.saveBuf.Len() == 0 {\n\t\td.buf = p\n\t} else {\n\t\td.saveBuf.Write(p)\n\t\td.buf = d.saveBuf.Bytes()\n\t\td.saveBuf.Reset()\n\t}\n\n\tfor len(d.buf) > 0 {\n\t\terr = d.parseHeaderFieldRepr()\n\t\tif err == errNeedMore {\n\t\t\t// Extra paranoia, making sure saveBuf won't\n\t\t\t// get too large. All the varint and string\n\t\t\t// reading code earlier should already catch\n\t\t\t// overlong things and return ErrStringLength,\n\t\t\t// but keep this as a last resort.\n\t\t\tconst varIntOverhead = 8 // conservative\n\t\t\tif d.maxStrLen != 0 && int64(len(d.buf)) > 2*(int64(d.maxStrLen)+varIntOverhead) {\n\t\t\t\treturn 0, ErrStringLength\n\t\t\t}\n\t\t\td.saveBuf.Write(d.buf)\n\t\t\treturn len(p), nil\n\t\t}\n\t\td.firstField = false\n\t\tif err != nil {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn len(p), err\n}\n\n// errNeedMore is an internal sentinel error value that means the\n// buffer is truncated and we need to read more data before we can\n// continue parsing.\nvar errNeedMore = errors.New(\"need more data\")\n\ntype indexType int\n\nconst (\n\tindexedTrue indexType = iota\n\tindexedFalse\n\tindexedNever\n)\n\nfunc (v indexType) indexed() bool   { return v == indexedTrue }\nfunc (v indexType) sensitive() bool { return v == indexedNever }\n\n// returns errNeedMore if there isn't enough data available.\n// any other error is fatal.\n// consumes d.buf iff it returns nil.\n// precondition: must be called with len(d.buf) > 0\nfunc (d *Decoder) parseHeaderFieldRepr() error {\n\tb := d.buf[0]\n\tswitch {\n\tcase b&128 != 0:\n\t\t// Indexed representation.\n\t\t// High bit set?\n\t\t// https://httpwg.org/specs/rfc7541.html#rfc.section.6.1\n\t\treturn d.parseFieldIndexed()\n\tcase b&192 == 64:\n\t\t// 6.2.1 Literal Header Field with Incremental Indexing\n\t\t// 0b10xxxxxx: top two bits are 10\n\t\t// https://httpwg.org/specs/rfc7541.html#rfc.section.6.2.1\n\t\treturn d.parseFieldLiteral(6, indexedTrue)\n\tcase b&240 == 0:\n\t\t// 6.2.2 Literal Header Field without Indexing\n\t\t// 0b0000xxxx: top four bits are 0000\n\t\t// https://httpwg.org/specs/rfc7541.html#rfc.section.6.2.2\n\t\treturn d.parseFieldLiteral(4, indexedFalse)\n\tcase b&240 == 16:\n\t\t// 6.2.3 Literal Header Field never Indexed\n\t\t// 0b0001xxxx: top four bits are 0001\n\t\t// https://httpwg.org/specs/rfc7541.html#rfc.section.6.2.3\n\t\treturn d.parseFieldLiteral(4, indexedNever)\n\tcase b&224 == 32:\n\t\t// 6.3 Dynamic Table Size Update\n\t\t// Top three bits are '001'.\n\t\t// https://httpwg.org/specs/rfc7541.html#rfc.section.6.3\n\t\treturn d.parseDynamicTableSizeUpdate()\n\t}\n\n\treturn DecodingError{errors.New(\"invalid encoding\")}\n}\n\n// (same invariants and behavior as parseHeaderFieldRepr)\nfunc (d *Decoder) parseFieldIndexed() error {\n\tbuf := d.buf\n\tidx, buf, err := readVarInt(7, buf)\n\tif err != nil {\n\t\treturn err\n\t}\n\thf, ok := d.at(idx)\n\tif !ok {\n\t\treturn DecodingError{InvalidIndexError(idx)}\n\t}\n\td.buf = buf\n\treturn d.callEmit(HeaderField{Name: hf.Name, Value: hf.Value})\n}\n\n// (same invariants and behavior as parseHeaderFieldRepr)\nfunc (d *Decoder) parseFieldLiteral(n uint8, it indexType) error {\n\tbuf := d.buf\n\tnameIdx, buf, err := readVarInt(n, buf)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar hf HeaderField\n\twantStr := d.emitEnabled || it.indexed()\n\tvar undecodedName undecodedString\n\tif nameIdx > 0 {\n\t\tihf, ok := d.at(nameIdx)\n\t\tif !ok {\n\t\t\treturn DecodingError{InvalidIndexError(nameIdx)}\n\t\t}\n\t\thf.Name = ihf.Name\n\t} else {\n\t\tundecodedName, buf, err = d.readString(buf)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tundecodedValue, buf, err := d.readString(buf)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif wantStr {\n\t\tif nameIdx <= 0 {\n\t\t\thf.Name, err = d.decodeString(undecodedName)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\thf.Value, err = d.decodeString(undecodedValue)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\td.buf = buf\n\tif it.indexed() {\n\t\td.dynTab.add(hf)\n\t}\n\thf.Sensitive = it.sensitive()\n\treturn d.callEmit(hf)\n}\n\nfunc (d *Decoder) callEmit(hf HeaderField) error {\n\tif d.maxStrLen != 0 {\n\t\tif len(hf.Name) > d.maxStrLen || len(hf.Value) > d.maxStrLen {\n\t\t\treturn ErrStringLength\n\t\t}\n\t}\n\tif d.emitEnabled {\n\t\td.emit(hf)\n\t}\n\treturn nil\n}\n\n// (same invariants and behavior as parseHeaderFieldRepr)\nfunc (d *Decoder) parseDynamicTableSizeUpdate() error {\n\t// RFC 7541, sec 4.2: This dynamic table size update MUST occur at the\n\t// beginning of the first header block following the change to the dynamic table size.\n\tif !d.firstField && d.dynTab.size > 0 {\n\t\treturn DecodingError{errors.New(\"dynamic table size update MUST occur at the beginning of a header block\")}\n\t}\n\n\tbuf := d.buf\n\tsize, buf, err := readVarInt(5, buf)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif size > uint64(d.dynTab.allowedMaxSize) {\n\t\treturn DecodingError{errors.New(\"dynamic table size update too large\")}\n\t}\n\td.dynTab.setMaxSize(uint32(size))\n\td.buf = buf\n\treturn nil\n}\n\nvar errVarintOverflow = DecodingError{errors.New(\"varint integer overflow\")}\n\n// readVarInt reads an unsigned variable length integer off the\n// beginning of p. n is the parameter as described in\n// https://httpwg.org/specs/rfc7541.html#rfc.section.5.1.\n//\n// n must always be between 1 and 8.\n//\n// The returned remain buffer is either a smaller suffix of p, or err != nil.\n// The error is errNeedMore if p doesn't contain a complete integer.\nfunc readVarInt(n byte, p []byte) (i uint64, remain []byte, err error) {\n\tif n < 1 || n > 8 {\n\t\tpanic(\"bad n\")\n\t}\n\tif len(p) == 0 {\n\t\treturn 0, p, errNeedMore\n\t}\n\ti = uint64(p[0])\n\tif n < 8 {\n\t\ti &= (1 << uint64(n)) - 1\n\t}\n\tif i < (1<<uint64(n))-1 {\n\t\treturn i, p[1:], nil\n\t}\n\n\torigP := p\n\tp = p[1:]\n\tvar m uint64\n\tfor len(p) > 0 {\n\t\tb := p[0]\n\t\tp = p[1:]\n\t\ti += uint64(b&127) << m\n\t\tif b&128 == 0 {\n\t\t\treturn i, p, nil\n\t\t}\n\t\tm += 7\n\t\tif m >= 63 { // TODO: proper overflow check. making this up.\n\t\t\treturn 0, origP, errVarintOverflow\n\t\t}\n\t}\n\treturn 0, origP, errNeedMore\n}\n\n// readString reads an hpack string from p.\n//\n// It returns a reference to the encoded string data to permit deferring decode costs\n// until after the caller verifies all data is present.\nfunc (d *Decoder) readString(p []byte) (u undecodedString, remain []byte, err error) {\n\tif len(p) == 0 {\n\t\treturn u, p, errNeedMore\n\t}\n\tisHuff := p[0]&128 != 0\n\tstrLen, p, err := readVarInt(7, p)\n\tif err != nil {\n\t\treturn u, p, err\n\t}\n\tif d.maxStrLen != 0 && strLen > uint64(d.maxStrLen) {\n\t\t// Returning an error here means Huffman decoding errors\n\t\t// for non-indexed strings past the maximum string length\n\t\t// are ignored, but the server is returning an error anyway\n\t\t// and because the string is not indexed the error will not\n\t\t// affect the decoding state.\n\t\treturn u, nil, ErrStringLength\n\t}\n\tif uint64(len(p)) < strLen {\n\t\treturn u, p, errNeedMore\n\t}\n\tu.isHuff = isHuff\n\tu.b = p[:strLen]\n\treturn u, p[strLen:], nil\n}\n\ntype undecodedString struct {\n\tisHuff bool\n\tb      []byte\n}\n\nfunc (d *Decoder) decodeString(u undecodedString) (string, error) {\n\tif !u.isHuff {\n\t\treturn string(u.b), nil\n\t}\n\tbuf := bufPool.Get().(*bytes.Buffer)\n\tbuf.Reset() // don't trust others\n\tvar s string\n\terr := huffmanDecode(buf, d.maxStrLen, u.b)\n\tif err == nil {\n\t\ts = buf.String()\n\t}\n\tbuf.Reset() // be nice to GC\n\tbufPool.Put(buf)\n\treturn s, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/hpack/huffman.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage hpack\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"sync\"\n)\n\nvar bufPool = sync.Pool{\n\tNew: func() interface{} { return new(bytes.Buffer) },\n}\n\n// HuffmanDecode decodes the string in v and writes the expanded\n// result to w, returning the number of bytes written to w and the\n// Write call's return value. At most one Write call is made.\nfunc HuffmanDecode(w io.Writer, v []byte) (int, error) {\n\tbuf := bufPool.Get().(*bytes.Buffer)\n\tbuf.Reset()\n\tdefer bufPool.Put(buf)\n\tif err := huffmanDecode(buf, 0, v); err != nil {\n\t\treturn 0, err\n\t}\n\treturn w.Write(buf.Bytes())\n}\n\n// HuffmanDecodeToString decodes the string in v.\nfunc HuffmanDecodeToString(v []byte) (string, error) {\n\tbuf := bufPool.Get().(*bytes.Buffer)\n\tbuf.Reset()\n\tdefer bufPool.Put(buf)\n\tif err := huffmanDecode(buf, 0, v); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn buf.String(), nil\n}\n\n// ErrInvalidHuffman is returned for errors found decoding\n// Huffman-encoded strings.\nvar ErrInvalidHuffman = errors.New(\"hpack: invalid Huffman-encoded data\")\n\n// huffmanDecode decodes v to buf.\n// If maxLen is greater than 0, attempts to write more to buf than\n// maxLen bytes will return ErrStringLength.\nfunc huffmanDecode(buf *bytes.Buffer, maxLen int, v []byte) error {\n\trootHuffmanNode := getRootHuffmanNode()\n\tn := rootHuffmanNode\n\t// cur is the bit buffer that has not been fed into n.\n\t// cbits is the number of low order bits in cur that are valid.\n\t// sbits is the number of bits of the symbol prefix being decoded.\n\tcur, cbits, sbits := uint(0), uint8(0), uint8(0)\n\tfor _, b := range v {\n\t\tcur = cur<<8 | uint(b)\n\t\tcbits += 8\n\t\tsbits += 8\n\t\tfor cbits >= 8 {\n\t\t\tidx := byte(cur >> (cbits - 8))\n\t\t\tn = n.children[idx]\n\t\t\tif n == nil {\n\t\t\t\treturn ErrInvalidHuffman\n\t\t\t}\n\t\t\tif n.children == nil {\n\t\t\t\tif maxLen != 0 && buf.Len() == maxLen {\n\t\t\t\t\treturn ErrStringLength\n\t\t\t\t}\n\t\t\t\tbuf.WriteByte(n.sym)\n\t\t\t\tcbits -= n.codeLen\n\t\t\t\tn = rootHuffmanNode\n\t\t\t\tsbits = cbits\n\t\t\t} else {\n\t\t\t\tcbits -= 8\n\t\t\t}\n\t\t}\n\t}\n\tfor cbits > 0 {\n\t\tn = n.children[byte(cur<<(8-cbits))]\n\t\tif n == nil {\n\t\t\treturn ErrInvalidHuffman\n\t\t}\n\t\tif n.children != nil || n.codeLen > cbits {\n\t\t\tbreak\n\t\t}\n\t\tif maxLen != 0 && buf.Len() == maxLen {\n\t\t\treturn ErrStringLength\n\t\t}\n\t\tbuf.WriteByte(n.sym)\n\t\tcbits -= n.codeLen\n\t\tn = rootHuffmanNode\n\t\tsbits = cbits\n\t}\n\tif sbits > 7 {\n\t\t// Either there was an incomplete symbol, or overlong padding.\n\t\t// Both are decoding errors per RFC 7541 section 5.2.\n\t\treturn ErrInvalidHuffman\n\t}\n\tif mask := uint(1<<cbits - 1); cur&mask != mask {\n\t\t// Trailing bits must be a prefix of EOS per RFC 7541 section 5.2.\n\t\treturn ErrInvalidHuffman\n\t}\n\n\treturn nil\n}\n\n// incomparable is a zero-width, non-comparable type. Adding it to a struct\n// makes that struct also non-comparable, and generally doesn't add\n// any size (as long as it's first).\ntype incomparable [0]func()\n\ntype node struct {\n\t_ incomparable\n\n\t// children is non-nil for internal nodes\n\tchildren *[256]*node\n\n\t// The following are only valid if children is nil:\n\tcodeLen uint8 // number of bits that led to the output of sym\n\tsym     byte  // output symbol\n}\n\nfunc newInternalNode() *node {\n\treturn &node{children: new([256]*node)}\n}\n\nvar (\n\tbuildRootOnce       sync.Once\n\tlazyRootHuffmanNode *node\n)\n\nfunc getRootHuffmanNode() *node {\n\tbuildRootOnce.Do(buildRootHuffmanNode)\n\treturn lazyRootHuffmanNode\n}\n\nfunc buildRootHuffmanNode() {\n\tif len(huffmanCodes) != 256 {\n\t\tpanic(\"unexpected size\")\n\t}\n\tlazyRootHuffmanNode = newInternalNode()\n\t// allocate a leaf node for each of the 256 symbols\n\tleaves := new([256]node)\n\n\tfor sym, code := range huffmanCodes {\n\t\tcodeLen := huffmanCodeLen[sym]\n\n\t\tcur := lazyRootHuffmanNode\n\t\tfor codeLen > 8 {\n\t\t\tcodeLen -= 8\n\t\t\ti := uint8(code >> codeLen)\n\t\t\tif cur.children[i] == nil {\n\t\t\t\tcur.children[i] = newInternalNode()\n\t\t\t}\n\t\t\tcur = cur.children[i]\n\t\t}\n\t\tshift := 8 - codeLen\n\t\tstart, end := int(uint8(code<<shift)), int(1<<shift)\n\n\t\tleaves[sym].sym = byte(sym)\n\t\tleaves[sym].codeLen = codeLen\n\t\tfor i := start; i < start+end; i++ {\n\t\t\tcur.children[i] = &leaves[sym]\n\t\t}\n\t}\n}\n\n// AppendHuffmanString appends s, as encoded in Huffman codes, to dst\n// and returns the extended buffer.\nfunc AppendHuffmanString(dst []byte, s string) []byte {\n\t// This relies on the maximum huffman code length being 30 (See tables.go huffmanCodeLen array)\n\t// So if a uint64 buffer has less than 32 valid bits can always accommodate another huffmanCode.\n\tvar (\n\t\tx uint64 // buffer\n\t\tn uint   // number valid of bits present in x\n\t)\n\tfor i := 0; i < len(s); i++ {\n\t\tc := s[i]\n\t\tn += uint(huffmanCodeLen[c])\n\t\tx <<= huffmanCodeLen[c] % 64\n\t\tx |= uint64(huffmanCodes[c])\n\t\tif n >= 32 {\n\t\t\tn %= 32             // Normally would be -= 32 but %= 32 informs compiler 0 <= n <= 31 for upcoming shift\n\t\t\ty := uint32(x >> n) // Compiler doesn't combine memory writes if y isn't uint32\n\t\t\tdst = append(dst, byte(y>>24), byte(y>>16), byte(y>>8), byte(y))\n\t\t}\n\t}\n\t// Add padding bits if necessary\n\tif over := n % 8; over > 0 {\n\t\tconst (\n\t\t\teosCode    = 0x3fffffff\n\t\t\teosNBits   = 30\n\t\t\teosPadByte = eosCode >> (eosNBits - 8)\n\t\t)\n\t\tpad := 8 - over\n\t\tx = (x << pad) | (eosPadByte >> over)\n\t\tn += pad // 8 now divides into n exactly\n\t}\n\t// n in (0, 8, 16, 24, 32)\n\tswitch n / 8 {\n\tcase 0:\n\t\treturn dst\n\tcase 1:\n\t\treturn append(dst, byte(x))\n\tcase 2:\n\t\ty := uint16(x)\n\t\treturn append(dst, byte(y>>8), byte(y))\n\tcase 3:\n\t\ty := uint16(x >> 8)\n\t\treturn append(dst, byte(y>>8), byte(y), byte(x))\n\t}\n\t//\tcase 4:\n\ty := uint32(x)\n\treturn append(dst, byte(y>>24), byte(y>>16), byte(y>>8), byte(y))\n}\n\n// HuffmanEncodeLength returns the number of bytes required to encode\n// s in Huffman codes. The result is round up to byte boundary.\nfunc HuffmanEncodeLength(s string) uint64 {\n\tn := uint64(0)\n\tfor i := 0; i < len(s); i++ {\n\t\tn += uint64(huffmanCodeLen[s[i]])\n\t}\n\treturn (n + 7) / 8\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/hpack/static_table.go",
    "content": "// go generate gen.go\n// Code generated by the command above; DO NOT EDIT.\n\npackage hpack\n\nvar staticTable = &headerFieldTable{\n\tevictCount: 0,\n\tbyName: map[string]uint64{\n\t\t\":authority\":                  1,\n\t\t\":method\":                     3,\n\t\t\":path\":                       5,\n\t\t\":scheme\":                     7,\n\t\t\":status\":                     14,\n\t\t\"accept-charset\":              15,\n\t\t\"accept-encoding\":             16,\n\t\t\"accept-language\":             17,\n\t\t\"accept-ranges\":               18,\n\t\t\"accept\":                      19,\n\t\t\"access-control-allow-origin\": 20,\n\t\t\"age\":                         21,\n\t\t\"allow\":                       22,\n\t\t\"authorization\":               23,\n\t\t\"cache-control\":               24,\n\t\t\"content-disposition\":         25,\n\t\t\"content-encoding\":            26,\n\t\t\"content-language\":            27,\n\t\t\"content-length\":              28,\n\t\t\"content-location\":            29,\n\t\t\"content-range\":               30,\n\t\t\"content-type\":                31,\n\t\t\"cookie\":                      32,\n\t\t\"date\":                        33,\n\t\t\"etag\":                        34,\n\t\t\"expect\":                      35,\n\t\t\"expires\":                     36,\n\t\t\"from\":                        37,\n\t\t\"host\":                        38,\n\t\t\"if-match\":                    39,\n\t\t\"if-modified-since\":           40,\n\t\t\"if-none-match\":               41,\n\t\t\"if-range\":                    42,\n\t\t\"if-unmodified-since\":         43,\n\t\t\"last-modified\":               44,\n\t\t\"link\":                        45,\n\t\t\"location\":                    46,\n\t\t\"max-forwards\":                47,\n\t\t\"proxy-authenticate\":          48,\n\t\t\"proxy-authorization\":         49,\n\t\t\"range\":                       50,\n\t\t\"referer\":                     51,\n\t\t\"refresh\":                     52,\n\t\t\"retry-after\":                 53,\n\t\t\"server\":                      54,\n\t\t\"set-cookie\":                  55,\n\t\t\"strict-transport-security\":   56,\n\t\t\"transfer-encoding\":           57,\n\t\t\"user-agent\":                  58,\n\t\t\"vary\":                        59,\n\t\t\"via\":                         60,\n\t\t\"www-authenticate\":            61,\n\t},\n\tbyNameValue: map[pairNameValue]uint64{\n\t\t{name: \":authority\", value: \"\"}:                   1,\n\t\t{name: \":method\", value: \"GET\"}:                   2,\n\t\t{name: \":method\", value: \"POST\"}:                  3,\n\t\t{name: \":path\", value: \"/\"}:                       4,\n\t\t{name: \":path\", value: \"/index.html\"}:             5,\n\t\t{name: \":scheme\", value: \"http\"}:                  6,\n\t\t{name: \":scheme\", value: \"https\"}:                 7,\n\t\t{name: \":status\", value: \"200\"}:                   8,\n\t\t{name: \":status\", value: \"204\"}:                   9,\n\t\t{name: \":status\", value: \"206\"}:                   10,\n\t\t{name: \":status\", value: \"304\"}:                   11,\n\t\t{name: \":status\", value: \"400\"}:                   12,\n\t\t{name: \":status\", value: \"404\"}:                   13,\n\t\t{name: \":status\", value: \"500\"}:                   14,\n\t\t{name: \"accept-charset\", value: \"\"}:               15,\n\t\t{name: \"accept-encoding\", value: \"gzip, deflate\"}: 16,\n\t\t{name: \"accept-language\", value: \"\"}:              17,\n\t\t{name: \"accept-ranges\", value: \"\"}:                18,\n\t\t{name: \"accept\", value: \"\"}:                       19,\n\t\t{name: \"access-control-allow-origin\", value: \"\"}:  20,\n\t\t{name: \"age\", value: \"\"}:                          21,\n\t\t{name: \"allow\", value: \"\"}:                        22,\n\t\t{name: \"authorization\", value: \"\"}:                23,\n\t\t{name: \"cache-control\", value: \"\"}:                24,\n\t\t{name: \"content-disposition\", value: \"\"}:          25,\n\t\t{name: \"content-encoding\", value: \"\"}:             26,\n\t\t{name: \"content-language\", value: \"\"}:             27,\n\t\t{name: \"content-length\", value: \"\"}:               28,\n\t\t{name: \"content-location\", value: \"\"}:             29,\n\t\t{name: \"content-range\", value: \"\"}:                30,\n\t\t{name: \"content-type\", value: \"\"}:                 31,\n\t\t{name: \"cookie\", value: \"\"}:                       32,\n\t\t{name: \"date\", value: \"\"}:                         33,\n\t\t{name: \"etag\", value: \"\"}:                         34,\n\t\t{name: \"expect\", value: \"\"}:                       35,\n\t\t{name: \"expires\", value: \"\"}:                      36,\n\t\t{name: \"from\", value: \"\"}:                         37,\n\t\t{name: \"host\", value: \"\"}:                         38,\n\t\t{name: \"if-match\", value: \"\"}:                     39,\n\t\t{name: \"if-modified-since\", value: \"\"}:            40,\n\t\t{name: \"if-none-match\", value: \"\"}:                41,\n\t\t{name: \"if-range\", value: \"\"}:                     42,\n\t\t{name: \"if-unmodified-since\", value: \"\"}:          43,\n\t\t{name: \"last-modified\", value: \"\"}:                44,\n\t\t{name: \"link\", value: \"\"}:                         45,\n\t\t{name: \"location\", value: \"\"}:                     46,\n\t\t{name: \"max-forwards\", value: \"\"}:                 47,\n\t\t{name: \"proxy-authenticate\", value: \"\"}:           48,\n\t\t{name: \"proxy-authorization\", value: \"\"}:          49,\n\t\t{name: \"range\", value: \"\"}:                        50,\n\t\t{name: \"referer\", value: \"\"}:                      51,\n\t\t{name: \"refresh\", value: \"\"}:                      52,\n\t\t{name: \"retry-after\", value: \"\"}:                  53,\n\t\t{name: \"server\", value: \"\"}:                       54,\n\t\t{name: \"set-cookie\", value: \"\"}:                   55,\n\t\t{name: \"strict-transport-security\", value: \"\"}:    56,\n\t\t{name: \"transfer-encoding\", value: \"\"}:            57,\n\t\t{name: \"user-agent\", value: \"\"}:                   58,\n\t\t{name: \"vary\", value: \"\"}:                         59,\n\t\t{name: \"via\", value: \"\"}:                          60,\n\t\t{name: \"www-authenticate\", value: \"\"}:             61,\n\t},\n\tents: []HeaderField{\n\t\t{Name: \":authority\", Value: \"\", Sensitive: false},\n\t\t{Name: \":method\", Value: \"GET\", Sensitive: false},\n\t\t{Name: \":method\", Value: \"POST\", Sensitive: false},\n\t\t{Name: \":path\", Value: \"/\", Sensitive: false},\n\t\t{Name: \":path\", Value: \"/index.html\", Sensitive: false},\n\t\t{Name: \":scheme\", Value: \"http\", Sensitive: false},\n\t\t{Name: \":scheme\", Value: \"https\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"200\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"204\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"206\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"304\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"400\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"404\", Sensitive: false},\n\t\t{Name: \":status\", Value: \"500\", Sensitive: false},\n\t\t{Name: \"accept-charset\", Value: \"\", Sensitive: false},\n\t\t{Name: \"accept-encoding\", Value: \"gzip, deflate\", Sensitive: false},\n\t\t{Name: \"accept-language\", Value: \"\", Sensitive: false},\n\t\t{Name: \"accept-ranges\", Value: \"\", Sensitive: false},\n\t\t{Name: \"accept\", Value: \"\", Sensitive: false},\n\t\t{Name: \"access-control-allow-origin\", Value: \"\", Sensitive: false},\n\t\t{Name: \"age\", Value: \"\", Sensitive: false},\n\t\t{Name: \"allow\", Value: \"\", Sensitive: false},\n\t\t{Name: \"authorization\", Value: \"\", Sensitive: false},\n\t\t{Name: \"cache-control\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-disposition\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-encoding\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-language\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-length\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-location\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-range\", Value: \"\", Sensitive: false},\n\t\t{Name: \"content-type\", Value: \"\", Sensitive: false},\n\t\t{Name: \"cookie\", Value: \"\", Sensitive: false},\n\t\t{Name: \"date\", Value: \"\", Sensitive: false},\n\t\t{Name: \"etag\", Value: \"\", Sensitive: false},\n\t\t{Name: \"expect\", Value: \"\", Sensitive: false},\n\t\t{Name: \"expires\", Value: \"\", Sensitive: false},\n\t\t{Name: \"from\", Value: \"\", Sensitive: false},\n\t\t{Name: \"host\", Value: \"\", Sensitive: false},\n\t\t{Name: \"if-match\", Value: \"\", Sensitive: false},\n\t\t{Name: \"if-modified-since\", Value: \"\", Sensitive: false},\n\t\t{Name: \"if-none-match\", Value: \"\", Sensitive: false},\n\t\t{Name: \"if-range\", Value: \"\", Sensitive: false},\n\t\t{Name: \"if-unmodified-since\", Value: \"\", Sensitive: false},\n\t\t{Name: \"last-modified\", Value: \"\", Sensitive: false},\n\t\t{Name: \"link\", Value: \"\", Sensitive: false},\n\t\t{Name: \"location\", Value: \"\", Sensitive: false},\n\t\t{Name: \"max-forwards\", Value: \"\", Sensitive: false},\n\t\t{Name: \"proxy-authenticate\", Value: \"\", Sensitive: false},\n\t\t{Name: \"proxy-authorization\", Value: \"\", Sensitive: false},\n\t\t{Name: \"range\", Value: \"\", Sensitive: false},\n\t\t{Name: \"referer\", Value: \"\", Sensitive: false},\n\t\t{Name: \"refresh\", Value: \"\", Sensitive: false},\n\t\t{Name: \"retry-after\", Value: \"\", Sensitive: false},\n\t\t{Name: \"server\", Value: \"\", Sensitive: false},\n\t\t{Name: \"set-cookie\", Value: \"\", Sensitive: false},\n\t\t{Name: \"strict-transport-security\", Value: \"\", Sensitive: false},\n\t\t{Name: \"transfer-encoding\", Value: \"\", Sensitive: false},\n\t\t{Name: \"user-agent\", Value: \"\", Sensitive: false},\n\t\t{Name: \"vary\", Value: \"\", Sensitive: false},\n\t\t{Name: \"via\", Value: \"\", Sensitive: false},\n\t\t{Name: \"www-authenticate\", Value: \"\", Sensitive: false},\n\t},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/hpack/tables.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage hpack\n\nimport (\n\t\"fmt\"\n)\n\n// headerFieldTable implements a list of HeaderFields.\n// This is used to implement the static and dynamic tables.\ntype headerFieldTable struct {\n\t// For static tables, entries are never evicted.\n\t//\n\t// For dynamic tables, entries are evicted from ents[0] and added to the end.\n\t// Each entry has a unique id that starts at one and increments for each\n\t// entry that is added. This unique id is stable across evictions, meaning\n\t// it can be used as a pointer to a specific entry. As in hpack, unique ids\n\t// are 1-based. The unique id for ents[k] is k + evictCount + 1.\n\t//\n\t// Zero is not a valid unique id.\n\t//\n\t// evictCount should not overflow in any remotely practical situation. In\n\t// practice, we will have one dynamic table per HTTP/2 connection. If we\n\t// assume a very powerful server that handles 1M QPS per connection and each\n\t// request adds (then evicts) 100 entries from the table, it would still take\n\t// 2M years for evictCount to overflow.\n\tents       []HeaderField\n\tevictCount uint64\n\n\t// byName maps a HeaderField name to the unique id of the newest entry with\n\t// the same name. See above for a definition of \"unique id\".\n\tbyName map[string]uint64\n\n\t// byNameValue maps a HeaderField name/value pair to the unique id of the newest\n\t// entry with the same name and value. See above for a definition of \"unique id\".\n\tbyNameValue map[pairNameValue]uint64\n}\n\ntype pairNameValue struct {\n\tname, value string\n}\n\nfunc (t *headerFieldTable) init() {\n\tt.byName = make(map[string]uint64)\n\tt.byNameValue = make(map[pairNameValue]uint64)\n}\n\n// len reports the number of entries in the table.\nfunc (t *headerFieldTable) len() int {\n\treturn len(t.ents)\n}\n\n// addEntry adds a new entry.\nfunc (t *headerFieldTable) addEntry(f HeaderField) {\n\tid := uint64(t.len()) + t.evictCount + 1\n\tt.byName[f.Name] = id\n\tt.byNameValue[pairNameValue{f.Name, f.Value}] = id\n\tt.ents = append(t.ents, f)\n}\n\n// evictOldest evicts the n oldest entries in the table.\nfunc (t *headerFieldTable) evictOldest(n int) {\n\tif n > t.len() {\n\t\tpanic(fmt.Sprintf(\"evictOldest(%v) on table with %v entries\", n, t.len()))\n\t}\n\tfor k := 0; k < n; k++ {\n\t\tf := t.ents[k]\n\t\tid := t.evictCount + uint64(k) + 1\n\t\tif t.byName[f.Name] == id {\n\t\t\tdelete(t.byName, f.Name)\n\t\t}\n\t\tif p := (pairNameValue{f.Name, f.Value}); t.byNameValue[p] == id {\n\t\t\tdelete(t.byNameValue, p)\n\t\t}\n\t}\n\tcopy(t.ents, t.ents[n:])\n\tfor k := t.len() - n; k < t.len(); k++ {\n\t\tt.ents[k] = HeaderField{} // so strings can be garbage collected\n\t}\n\tt.ents = t.ents[:t.len()-n]\n\tif t.evictCount+uint64(n) < t.evictCount {\n\t\tpanic(\"evictCount overflow\")\n\t}\n\tt.evictCount += uint64(n)\n}\n\n// search finds f in the table. If there is no match, i is 0.\n// If both name and value match, i is the matched index and nameValueMatch\n// becomes true. If only name matches, i points to that index and\n// nameValueMatch becomes false.\n//\n// The returned index is a 1-based HPACK index. For dynamic tables, HPACK says\n// that index 1 should be the newest entry, but t.ents[0] is the oldest entry,\n// meaning t.ents is reversed for dynamic tables. Hence, when t is a dynamic\n// table, the return value i actually refers to the entry t.ents[t.len()-i].\n//\n// All tables are assumed to be a dynamic tables except for the global staticTable.\n//\n// See Section 2.3.3.\nfunc (t *headerFieldTable) search(f HeaderField) (i uint64, nameValueMatch bool) {\n\tif !f.Sensitive {\n\t\tif id := t.byNameValue[pairNameValue{f.Name, f.Value}]; id != 0 {\n\t\t\treturn t.idToIndex(id), true\n\t\t}\n\t}\n\tif id := t.byName[f.Name]; id != 0 {\n\t\treturn t.idToIndex(id), false\n\t}\n\treturn 0, false\n}\n\n// idToIndex converts a unique id to an HPACK index.\n// See Section 2.3.3.\nfunc (t *headerFieldTable) idToIndex(id uint64) uint64 {\n\tif id <= t.evictCount {\n\t\tpanic(fmt.Sprintf(\"id (%v) <= evictCount (%v)\", id, t.evictCount))\n\t}\n\tk := id - t.evictCount - 1 // convert id to an index t.ents[k]\n\tif t != staticTable {\n\t\treturn uint64(t.len()) - k // dynamic table\n\t}\n\treturn k + 1\n}\n\nvar huffmanCodes = [256]uint32{\n\t0x1ff8,\n\t0x7fffd8,\n\t0xfffffe2,\n\t0xfffffe3,\n\t0xfffffe4,\n\t0xfffffe5,\n\t0xfffffe6,\n\t0xfffffe7,\n\t0xfffffe8,\n\t0xffffea,\n\t0x3ffffffc,\n\t0xfffffe9,\n\t0xfffffea,\n\t0x3ffffffd,\n\t0xfffffeb,\n\t0xfffffec,\n\t0xfffffed,\n\t0xfffffee,\n\t0xfffffef,\n\t0xffffff0,\n\t0xffffff1,\n\t0xffffff2,\n\t0x3ffffffe,\n\t0xffffff3,\n\t0xffffff4,\n\t0xffffff5,\n\t0xffffff6,\n\t0xffffff7,\n\t0xffffff8,\n\t0xffffff9,\n\t0xffffffa,\n\t0xffffffb,\n\t0x14,\n\t0x3f8,\n\t0x3f9,\n\t0xffa,\n\t0x1ff9,\n\t0x15,\n\t0xf8,\n\t0x7fa,\n\t0x3fa,\n\t0x3fb,\n\t0xf9,\n\t0x7fb,\n\t0xfa,\n\t0x16,\n\t0x17,\n\t0x18,\n\t0x0,\n\t0x1,\n\t0x2,\n\t0x19,\n\t0x1a,\n\t0x1b,\n\t0x1c,\n\t0x1d,\n\t0x1e,\n\t0x1f,\n\t0x5c,\n\t0xfb,\n\t0x7ffc,\n\t0x20,\n\t0xffb,\n\t0x3fc,\n\t0x1ffa,\n\t0x21,\n\t0x5d,\n\t0x5e,\n\t0x5f,\n\t0x60,\n\t0x61,\n\t0x62,\n\t0x63,\n\t0x64,\n\t0x65,\n\t0x66,\n\t0x67,\n\t0x68,\n\t0x69,\n\t0x6a,\n\t0x6b,\n\t0x6c,\n\t0x6d,\n\t0x6e,\n\t0x6f,\n\t0x70,\n\t0x71,\n\t0x72,\n\t0xfc,\n\t0x73,\n\t0xfd,\n\t0x1ffb,\n\t0x7fff0,\n\t0x1ffc,\n\t0x3ffc,\n\t0x22,\n\t0x7ffd,\n\t0x3,\n\t0x23,\n\t0x4,\n\t0x24,\n\t0x5,\n\t0x25,\n\t0x26,\n\t0x27,\n\t0x6,\n\t0x74,\n\t0x75,\n\t0x28,\n\t0x29,\n\t0x2a,\n\t0x7,\n\t0x2b,\n\t0x76,\n\t0x2c,\n\t0x8,\n\t0x9,\n\t0x2d,\n\t0x77,\n\t0x78,\n\t0x79,\n\t0x7a,\n\t0x7b,\n\t0x7ffe,\n\t0x7fc,\n\t0x3ffd,\n\t0x1ffd,\n\t0xffffffc,\n\t0xfffe6,\n\t0x3fffd2,\n\t0xfffe7,\n\t0xfffe8,\n\t0x3fffd3,\n\t0x3fffd4,\n\t0x3fffd5,\n\t0x7fffd9,\n\t0x3fffd6,\n\t0x7fffda,\n\t0x7fffdb,\n\t0x7fffdc,\n\t0x7fffdd,\n\t0x7fffde,\n\t0xffffeb,\n\t0x7fffdf,\n\t0xffffec,\n\t0xffffed,\n\t0x3fffd7,\n\t0x7fffe0,\n\t0xffffee,\n\t0x7fffe1,\n\t0x7fffe2,\n\t0x7fffe3,\n\t0x7fffe4,\n\t0x1fffdc,\n\t0x3fffd8,\n\t0x7fffe5,\n\t0x3fffd9,\n\t0x7fffe6,\n\t0x7fffe7,\n\t0xffffef,\n\t0x3fffda,\n\t0x1fffdd,\n\t0xfffe9,\n\t0x3fffdb,\n\t0x3fffdc,\n\t0x7fffe8,\n\t0x7fffe9,\n\t0x1fffde,\n\t0x7fffea,\n\t0x3fffdd,\n\t0x3fffde,\n\t0xfffff0,\n\t0x1fffdf,\n\t0x3fffdf,\n\t0x7fffeb,\n\t0x7fffec,\n\t0x1fffe0,\n\t0x1fffe1,\n\t0x3fffe0,\n\t0x1fffe2,\n\t0x7fffed,\n\t0x3fffe1,\n\t0x7fffee,\n\t0x7fffef,\n\t0xfffea,\n\t0x3fffe2,\n\t0x3fffe3,\n\t0x3fffe4,\n\t0x7ffff0,\n\t0x3fffe5,\n\t0x3fffe6,\n\t0x7ffff1,\n\t0x3ffffe0,\n\t0x3ffffe1,\n\t0xfffeb,\n\t0x7fff1,\n\t0x3fffe7,\n\t0x7ffff2,\n\t0x3fffe8,\n\t0x1ffffec,\n\t0x3ffffe2,\n\t0x3ffffe3,\n\t0x3ffffe4,\n\t0x7ffffde,\n\t0x7ffffdf,\n\t0x3ffffe5,\n\t0xfffff1,\n\t0x1ffffed,\n\t0x7fff2,\n\t0x1fffe3,\n\t0x3ffffe6,\n\t0x7ffffe0,\n\t0x7ffffe1,\n\t0x3ffffe7,\n\t0x7ffffe2,\n\t0xfffff2,\n\t0x1fffe4,\n\t0x1fffe5,\n\t0x3ffffe8,\n\t0x3ffffe9,\n\t0xffffffd,\n\t0x7ffffe3,\n\t0x7ffffe4,\n\t0x7ffffe5,\n\t0xfffec,\n\t0xfffff3,\n\t0xfffed,\n\t0x1fffe6,\n\t0x3fffe9,\n\t0x1fffe7,\n\t0x1fffe8,\n\t0x7ffff3,\n\t0x3fffea,\n\t0x3fffeb,\n\t0x1ffffee,\n\t0x1ffffef,\n\t0xfffff4,\n\t0xfffff5,\n\t0x3ffffea,\n\t0x7ffff4,\n\t0x3ffffeb,\n\t0x7ffffe6,\n\t0x3ffffec,\n\t0x3ffffed,\n\t0x7ffffe7,\n\t0x7ffffe8,\n\t0x7ffffe9,\n\t0x7ffffea,\n\t0x7ffffeb,\n\t0xffffffe,\n\t0x7ffffec,\n\t0x7ffffed,\n\t0x7ffffee,\n\t0x7ffffef,\n\t0x7fffff0,\n\t0x3ffffee,\n}\n\nvar huffmanCodeLen = [256]uint8{\n\t13, 23, 28, 28, 28, 28, 28, 28, 28, 24, 30, 28, 28, 30, 28, 28,\n\t28, 28, 28, 28, 28, 28, 30, 28, 28, 28, 28, 28, 28, 28, 28, 28,\n\t6, 10, 10, 12, 13, 6, 8, 11, 10, 10, 8, 11, 8, 6, 6, 6,\n\t5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 8, 15, 6, 12, 10,\n\t13, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n\t7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 13, 19, 13, 14, 6,\n\t15, 5, 6, 5, 6, 5, 6, 6, 6, 5, 7, 7, 6, 6, 6, 5,\n\t6, 7, 6, 5, 5, 6, 7, 7, 7, 7, 7, 15, 11, 14, 13, 28,\n\t20, 22, 20, 20, 22, 22, 22, 23, 22, 23, 23, 23, 23, 23, 24, 23,\n\t24, 24, 22, 23, 24, 23, 23, 23, 23, 21, 22, 23, 22, 23, 23, 24,\n\t22, 21, 20, 22, 22, 23, 23, 21, 23, 22, 22, 24, 21, 22, 23, 23,\n\t21, 21, 22, 21, 23, 22, 23, 23, 20, 22, 22, 22, 23, 22, 22, 23,\n\t26, 26, 20, 19, 22, 23, 22, 25, 26, 26, 26, 27, 27, 26, 24, 25,\n\t19, 21, 26, 27, 27, 26, 27, 24, 21, 21, 26, 26, 28, 27, 27, 27,\n\t20, 24, 20, 21, 22, 21, 21, 23, 22, 22, 25, 25, 24, 24, 26, 23,\n\t26, 27, 26, 26, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 26,\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/http2.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package http2 implements the HTTP/2 protocol.\n//\n// This package is low-level and intended to be used directly by very\n// few people. Most users will use it indirectly through the automatic\n// use by the net/http package (from Go 1.6 and later).\n// For use in earlier Go versions see ConfigureServer. (Transport support\n// requires Go 1.6 or later)\n//\n// See https://http2.github.io/ for more information on HTTP/2.\n//\n// See https://http2.golang.org/ for a test server running this code.\npackage http2 // import \"golang.org/x/net/http2\"\n\nimport (\n\t\"bufio\"\n\t\"crypto/tls\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"golang.org/x/net/http/httpguts\"\n)\n\nvar (\n\tVerboseLogs    bool\n\tlogFrameWrites bool\n\tlogFrameReads  bool\n\tinTests        bool\n)\n\nfunc init() {\n\te := os.Getenv(\"GODEBUG\")\n\tif strings.Contains(e, \"http2debug=1\") {\n\t\tVerboseLogs = true\n\t}\n\tif strings.Contains(e, \"http2debug=2\") {\n\t\tVerboseLogs = true\n\t\tlogFrameWrites = true\n\t\tlogFrameReads = true\n\t}\n}\n\nconst (\n\t// ClientPreface is the string that must be sent by new\n\t// connections from clients.\n\tClientPreface = \"PRI * HTTP/2.0\\r\\n\\r\\nSM\\r\\n\\r\\n\"\n\n\t// SETTINGS_MAX_FRAME_SIZE default\n\t// https://httpwg.org/specs/rfc7540.html#rfc.section.6.5.2\n\tinitialMaxFrameSize = 16384\n\n\t// NextProtoTLS is the NPN/ALPN protocol negotiated during\n\t// HTTP/2's TLS setup.\n\tNextProtoTLS = \"h2\"\n\n\t// https://httpwg.org/specs/rfc7540.html#SettingValues\n\tinitialHeaderTableSize = 4096\n\n\tinitialWindowSize = 65535 // 6.9.2 Initial Flow Control Window Size\n\n\tdefaultMaxReadFrameSize = 1 << 20\n)\n\nvar (\n\tclientPreface = []byte(ClientPreface)\n)\n\ntype streamState int\n\n// HTTP/2 stream states.\n//\n// See http://tools.ietf.org/html/rfc7540#section-5.1.\n//\n// For simplicity, the server code merges \"reserved (local)\" into\n// \"half-closed (remote)\". This is one less state transition to track.\n// The only downside is that we send PUSH_PROMISEs slightly less\n// liberally than allowable. More discussion here:\n// https://lists.w3.org/Archives/Public/ietf-http-wg/2016JulSep/0599.html\n//\n// \"reserved (remote)\" is omitted since the client code does not\n// support server push.\nconst (\n\tstateIdle streamState = iota\n\tstateOpen\n\tstateHalfClosedLocal\n\tstateHalfClosedRemote\n\tstateClosed\n)\n\nvar stateName = [...]string{\n\tstateIdle:             \"Idle\",\n\tstateOpen:             \"Open\",\n\tstateHalfClosedLocal:  \"HalfClosedLocal\",\n\tstateHalfClosedRemote: \"HalfClosedRemote\",\n\tstateClosed:           \"Closed\",\n}\n\nfunc (st streamState) String() string {\n\treturn stateName[st]\n}\n\n// Setting is a setting parameter: which setting it is, and its value.\ntype Setting struct {\n\t// ID is which setting is being set.\n\t// See https://httpwg.org/specs/rfc7540.html#SettingFormat\n\tID SettingID\n\n\t// Val is the value.\n\tVal uint32\n}\n\nfunc (s Setting) String() string {\n\treturn fmt.Sprintf(\"[%v = %d]\", s.ID, s.Val)\n}\n\n// Valid reports whether the setting is valid.\nfunc (s Setting) Valid() error {\n\t// Limits and error codes from 6.5.2 Defined SETTINGS Parameters\n\tswitch s.ID {\n\tcase SettingEnablePush:\n\t\tif s.Val != 1 && s.Val != 0 {\n\t\t\treturn ConnectionError(ErrCodeProtocol)\n\t\t}\n\tcase SettingInitialWindowSize:\n\t\tif s.Val > 1<<31-1 {\n\t\t\treturn ConnectionError(ErrCodeFlowControl)\n\t\t}\n\tcase SettingMaxFrameSize:\n\t\tif s.Val < 16384 || s.Val > 1<<24-1 {\n\t\t\treturn ConnectionError(ErrCodeProtocol)\n\t\t}\n\t}\n\treturn nil\n}\n\n// A SettingID is an HTTP/2 setting as defined in\n// https://httpwg.org/specs/rfc7540.html#iana-settings\ntype SettingID uint16\n\nconst (\n\tSettingHeaderTableSize      SettingID = 0x1\n\tSettingEnablePush           SettingID = 0x2\n\tSettingMaxConcurrentStreams SettingID = 0x3\n\tSettingInitialWindowSize    SettingID = 0x4\n\tSettingMaxFrameSize         SettingID = 0x5\n\tSettingMaxHeaderListSize    SettingID = 0x6\n)\n\nvar settingName = map[SettingID]string{\n\tSettingHeaderTableSize:      \"HEADER_TABLE_SIZE\",\n\tSettingEnablePush:           \"ENABLE_PUSH\",\n\tSettingMaxConcurrentStreams: \"MAX_CONCURRENT_STREAMS\",\n\tSettingInitialWindowSize:    \"INITIAL_WINDOW_SIZE\",\n\tSettingMaxFrameSize:         \"MAX_FRAME_SIZE\",\n\tSettingMaxHeaderListSize:    \"MAX_HEADER_LIST_SIZE\",\n}\n\nfunc (s SettingID) String() string {\n\tif v, ok := settingName[s]; ok {\n\t\treturn v\n\t}\n\treturn fmt.Sprintf(\"UNKNOWN_SETTING_%d\", uint16(s))\n}\n\n// validWireHeaderFieldName reports whether v is a valid header field\n// name (key). See httpguts.ValidHeaderName for the base rules.\n//\n// Further, http2 says:\n//\n//\t\"Just as in HTTP/1.x, header field names are strings of ASCII\n//\tcharacters that are compared in a case-insensitive\n//\tfashion. However, header field names MUST be converted to\n//\tlowercase prior to their encoding in HTTP/2. \"\nfunc validWireHeaderFieldName(v string) bool {\n\tif len(v) == 0 {\n\t\treturn false\n\t}\n\tfor _, r := range v {\n\t\tif !httpguts.IsTokenRune(r) {\n\t\t\treturn false\n\t\t}\n\t\tif 'A' <= r && r <= 'Z' {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc httpCodeString(code int) string {\n\tswitch code {\n\tcase 200:\n\t\treturn \"200\"\n\tcase 404:\n\t\treturn \"404\"\n\t}\n\treturn strconv.Itoa(code)\n}\n\n// from pkg io\ntype stringWriter interface {\n\tWriteString(s string) (n int, err error)\n}\n\n// A gate lets two goroutines coordinate their activities.\ntype gate chan struct{}\n\nfunc (g gate) Done() { g <- struct{}{} }\nfunc (g gate) Wait() { <-g }\n\n// A closeWaiter is like a sync.WaitGroup but only goes 1 to 0 (open to closed).\ntype closeWaiter chan struct{}\n\n// Init makes a closeWaiter usable.\n// It exists because so a closeWaiter value can be placed inside a\n// larger struct and have the Mutex and Cond's memory in the same\n// allocation.\nfunc (cw *closeWaiter) Init() {\n\t*cw = make(chan struct{})\n}\n\n// Close marks the closeWaiter as closed and unblocks any waiters.\nfunc (cw closeWaiter) Close() {\n\tclose(cw)\n}\n\n// Wait waits for the closeWaiter to become closed.\nfunc (cw closeWaiter) Wait() {\n\t<-cw\n}\n\n// bufferedWriter is a buffered writer that writes to w.\n// Its buffered writer is lazily allocated as needed, to minimize\n// idle memory usage with many connections.\ntype bufferedWriter struct {\n\t_  incomparable\n\tw  io.Writer     // immutable\n\tbw *bufio.Writer // non-nil when data is buffered\n}\n\nfunc newBufferedWriter(w io.Writer) *bufferedWriter {\n\treturn &bufferedWriter{w: w}\n}\n\n// bufWriterPoolBufferSize is the size of bufio.Writer's\n// buffers created using bufWriterPool.\n//\n// TODO: pick a less arbitrary value? this is a bit under\n// (3 x typical 1500 byte MTU) at least. Other than that,\n// not much thought went into it.\nconst bufWriterPoolBufferSize = 4 << 10\n\nvar bufWriterPool = sync.Pool{\n\tNew: func() interface{} {\n\t\treturn bufio.NewWriterSize(nil, bufWriterPoolBufferSize)\n\t},\n}\n\nfunc (w *bufferedWriter) Available() int {\n\tif w.bw == nil {\n\t\treturn bufWriterPoolBufferSize\n\t}\n\treturn w.bw.Available()\n}\n\nfunc (w *bufferedWriter) Write(p []byte) (n int, err error) {\n\tif w.bw == nil {\n\t\tbw := bufWriterPool.Get().(*bufio.Writer)\n\t\tbw.Reset(w.w)\n\t\tw.bw = bw\n\t}\n\treturn w.bw.Write(p)\n}\n\nfunc (w *bufferedWriter) Flush() error {\n\tbw := w.bw\n\tif bw == nil {\n\t\treturn nil\n\t}\n\terr := bw.Flush()\n\tbw.Reset(nil)\n\tbufWriterPool.Put(bw)\n\tw.bw = nil\n\treturn err\n}\n\nfunc mustUint31(v int32) uint32 {\n\tif v < 0 || v > 2147483647 {\n\t\tpanic(\"out of range\")\n\t}\n\treturn uint32(v)\n}\n\n// bodyAllowedForStatus reports whether a given response status code\n// permits a body. See RFC 7230, section 3.3.\nfunc bodyAllowedForStatus(status int) bool {\n\tswitch {\n\tcase status >= 100 && status <= 199:\n\t\treturn false\n\tcase status == 204:\n\t\treturn false\n\tcase status == 304:\n\t\treturn false\n\t}\n\treturn true\n}\n\ntype httpError struct {\n\t_       incomparable\n\tmsg     string\n\ttimeout bool\n}\n\nfunc (e *httpError) Error() string   { return e.msg }\nfunc (e *httpError) Timeout() bool   { return e.timeout }\nfunc (e *httpError) Temporary() bool { return true }\n\nvar errTimeout error = &httpError{msg: \"http2: timeout awaiting response headers\", timeout: true}\n\ntype connectionStater interface {\n\tConnectionState() tls.ConnectionState\n}\n\nvar sorterPool = sync.Pool{New: func() interface{} { return new(sorter) }}\n\ntype sorter struct {\n\tv []string // owned by sorter\n}\n\nfunc (s *sorter) Len() int           { return len(s.v) }\nfunc (s *sorter) Swap(i, j int)      { s.v[i], s.v[j] = s.v[j], s.v[i] }\nfunc (s *sorter) Less(i, j int) bool { return s.v[i] < s.v[j] }\n\n// Keys returns the sorted keys of h.\n//\n// The returned slice is only valid until s used again or returned to\n// its pool.\nfunc (s *sorter) Keys(h http.Header) []string {\n\tkeys := s.v[:0]\n\tfor k := range h {\n\t\tkeys = append(keys, k)\n\t}\n\ts.v = keys\n\tsort.Sort(s)\n\treturn keys\n}\n\nfunc (s *sorter) SortStrings(ss []string) {\n\t// Our sorter works on s.v, which sorter owns, so\n\t// stash it away while we sort the user's buffer.\n\tsave := s.v\n\ts.v = ss\n\tsort.Sort(s)\n\ts.v = save\n}\n\n// validPseudoPath reports whether v is a valid :path pseudo-header\n// value. It must be either:\n//\n//   - a non-empty string starting with '/'\n//   - the string '*', for OPTIONS requests.\n//\n// For now this is only used a quick check for deciding when to clean\n// up Opaque URLs before sending requests from the Transport.\n// See golang.org/issue/16847\n//\n// We used to enforce that the path also didn't start with \"//\", but\n// Google's GFE accepts such paths and Chrome sends them, so ignore\n// that part of the spec. See golang.org/issue/19103.\nfunc validPseudoPath(v string) bool {\n\treturn (len(v) > 0 && v[0] == '/') || v == \"*\"\n}\n\n// incomparable is a zero-width, non-comparable type. Adding it to a struct\n// makes that struct also non-comparable, and generally doesn't add\n// any size (as long as it's first).\ntype incomparable [0]func()\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/pipe.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"sync\"\n)\n\n// pipe is a goroutine-safe io.Reader/io.Writer pair. It's like\n// io.Pipe except there are no PipeReader/PipeWriter halves, and the\n// underlying buffer is an interface. (io.Pipe is always unbuffered)\ntype pipe struct {\n\tmu       sync.Mutex\n\tc        sync.Cond     // c.L lazily initialized to &p.mu\n\tb        pipeBuffer    // nil when done reading\n\tunread   int           // bytes unread when done\n\terr      error         // read error once empty. non-nil means closed.\n\tbreakErr error         // immediate read error (caller doesn't see rest of b)\n\tdonec    chan struct{} // closed on error\n\treadFn   func()        // optional code to run in Read before error\n}\n\ntype pipeBuffer interface {\n\tLen() int\n\tio.Writer\n\tio.Reader\n}\n\n// setBuffer initializes the pipe buffer.\n// It has no effect if the pipe is already closed.\nfunc (p *pipe) setBuffer(b pipeBuffer) {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.err != nil || p.breakErr != nil {\n\t\treturn\n\t}\n\tp.b = b\n}\n\nfunc (p *pipe) Len() int {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.b == nil {\n\t\treturn p.unread\n\t}\n\treturn p.b.Len()\n}\n\n// Read waits until data is available and copies bytes\n// from the buffer into p.\nfunc (p *pipe) Read(d []byte) (n int, err error) {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.c.L == nil {\n\t\tp.c.L = &p.mu\n\t}\n\tfor {\n\t\tif p.breakErr != nil {\n\t\t\treturn 0, p.breakErr\n\t\t}\n\t\tif p.b != nil && p.b.Len() > 0 {\n\t\t\treturn p.b.Read(d)\n\t\t}\n\t\tif p.err != nil {\n\t\t\tif p.readFn != nil {\n\t\t\t\tp.readFn()     // e.g. copy trailers\n\t\t\t\tp.readFn = nil // not sticky like p.err\n\t\t\t}\n\t\t\tp.b = nil\n\t\t\treturn 0, p.err\n\t\t}\n\t\tp.c.Wait()\n\t}\n}\n\nvar errClosedPipeWrite = errors.New(\"write on closed buffer\")\n\n// Write copies bytes from p into the buffer and wakes a reader.\n// It is an error to write more data than the buffer can hold.\nfunc (p *pipe) Write(d []byte) (n int, err error) {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.c.L == nil {\n\t\tp.c.L = &p.mu\n\t}\n\tdefer p.c.Signal()\n\tif p.err != nil || p.breakErr != nil {\n\t\treturn 0, errClosedPipeWrite\n\t}\n\treturn p.b.Write(d)\n}\n\n// CloseWithError causes the next Read (waking up a current blocked\n// Read if needed) to return the provided err after all data has been\n// read.\n//\n// The error must be non-nil.\nfunc (p *pipe) CloseWithError(err error) { p.closeWithError(&p.err, err, nil) }\n\n// BreakWithError causes the next Read (waking up a current blocked\n// Read if needed) to return the provided err immediately, without\n// waiting for unread data.\nfunc (p *pipe) BreakWithError(err error) { p.closeWithError(&p.breakErr, err, nil) }\n\n// closeWithErrorAndCode is like CloseWithError but also sets some code to run\n// in the caller's goroutine before returning the error.\nfunc (p *pipe) closeWithErrorAndCode(err error, fn func()) { p.closeWithError(&p.err, err, fn) }\n\nfunc (p *pipe) closeWithError(dst *error, err error, fn func()) {\n\tif err == nil {\n\t\tpanic(\"err must be non-nil\")\n\t}\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.c.L == nil {\n\t\tp.c.L = &p.mu\n\t}\n\tdefer p.c.Signal()\n\tif *dst != nil {\n\t\t// Already been done.\n\t\treturn\n\t}\n\tp.readFn = fn\n\tif dst == &p.breakErr {\n\t\tif p.b != nil {\n\t\t\tp.unread += p.b.Len()\n\t\t}\n\t\tp.b = nil\n\t}\n\t*dst = err\n\tp.closeDoneLocked()\n}\n\n// requires p.mu be held.\nfunc (p *pipe) closeDoneLocked() {\n\tif p.donec == nil {\n\t\treturn\n\t}\n\t// Close if unclosed. This isn't racy since we always\n\t// hold p.mu while closing.\n\tselect {\n\tcase <-p.donec:\n\tdefault:\n\t\tclose(p.donec)\n\t}\n}\n\n// Err returns the error (if any) first set by BreakWithError or CloseWithError.\nfunc (p *pipe) Err() error {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.breakErr != nil {\n\t\treturn p.breakErr\n\t}\n\treturn p.err\n}\n\n// Done returns a channel which is closed if and when this pipe is closed\n// with CloseWithError.\nfunc (p *pipe) Done() <-chan struct{} {\n\tp.mu.Lock()\n\tdefer p.mu.Unlock()\n\tif p.donec == nil {\n\t\tp.donec = make(chan struct{})\n\t\tif p.err != nil || p.breakErr != nil {\n\t\t\t// Already hit an error.\n\t\t\tp.closeDoneLocked()\n\t\t}\n\t}\n\treturn p.donec\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/server.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// TODO: turn off the serve goroutine when idle, so\n// an idle conn only has the readFrames goroutine active. (which could\n// also be optimized probably to pin less memory in crypto/tls). This\n// would involve tracking when the serve goroutine is active (atomic\n// int32 read/CAS probably?) and starting it up when frames arrive,\n// and shutting it down when all handlers exit. the occasional PING\n// packets could use time.AfterFunc to call sc.wakeStartServeLoop()\n// (which is a no-op if already running) and then queue the PING write\n// as normal. The serve loop would then exit in most cases (if no\n// Handlers running) and not be woken up again until the PING packet\n// returns.\n\n// TODO (maybe): add a mechanism for Handlers to going into\n// half-closed-local mode (rw.(io.Closer) test?) but not exit their\n// handler, and continue to be able to read from the\n// Request.Body. This would be a somewhat semantic change from HTTP/1\n// (or at least what we expose in net/http), so I'd probably want to\n// add it there too. For now, this package says that returning from\n// the Handler ServeHTTP function means you're both done reading and\n// done writing, without a way to stop just one or the other.\n\npackage http2\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/tls\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"math\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/textproto\"\n\t\"net/url\"\n\t\"os\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"golang.org/x/net/http/httpguts\"\n\t\"golang.org/x/net/http2/hpack\"\n)\n\nconst (\n\tprefaceTimeout         = 10 * time.Second\n\tfirstSettingsTimeout   = 2 * time.Second // should be in-flight with preface anyway\n\thandlerChunkWriteSize  = 4 << 10\n\tdefaultMaxStreams      = 250 // TODO: make this 100 as the GFE seems to?\n\tmaxQueuedControlFrames = 10000\n)\n\nvar (\n\terrClientDisconnected = errors.New(\"client disconnected\")\n\terrClosedBody         = errors.New(\"body closed by handler\")\n\terrHandlerComplete    = errors.New(\"http2: request body closed due to handler exiting\")\n\terrStreamClosed       = errors.New(\"http2: stream closed\")\n)\n\nvar responseWriterStatePool = sync.Pool{\n\tNew: func() interface{} {\n\t\trws := &responseWriterState{}\n\t\trws.bw = bufio.NewWriterSize(chunkWriter{rws}, handlerChunkWriteSize)\n\t\treturn rws\n\t},\n}\n\n// Test hooks.\nvar (\n\ttestHookOnConn        func()\n\ttestHookGetServerConn func(*serverConn)\n\ttestHookOnPanicMu     *sync.Mutex // nil except in tests\n\ttestHookOnPanic       func(sc *serverConn, panicVal interface{}) (rePanic bool)\n)\n\n// Server is an HTTP/2 server.\ntype Server struct {\n\t// MaxHandlers limits the number of http.Handler ServeHTTP goroutines\n\t// which may run at a time over all connections.\n\t// Negative or zero no limit.\n\t// TODO: implement\n\tMaxHandlers int\n\n\t// MaxConcurrentStreams optionally specifies the number of\n\t// concurrent streams that each client may have open at a\n\t// time. This is unrelated to the number of http.Handler goroutines\n\t// which may be active globally, which is MaxHandlers.\n\t// If zero, MaxConcurrentStreams defaults to at least 100, per\n\t// the HTTP/2 spec's recommendations.\n\tMaxConcurrentStreams uint32\n\n\t// MaxDecoderHeaderTableSize optionally specifies the http2\n\t// SETTINGS_HEADER_TABLE_SIZE to send in the initial settings frame. It\n\t// informs the remote endpoint of the maximum size of the header compression\n\t// table used to decode header blocks, in octets. If zero, the default value\n\t// of 4096 is used.\n\tMaxDecoderHeaderTableSize uint32\n\n\t// MaxEncoderHeaderTableSize optionally specifies an upper limit for the\n\t// header compression table used for encoding request headers. Received\n\t// SETTINGS_HEADER_TABLE_SIZE settings are capped at this limit. If zero,\n\t// the default value of 4096 is used.\n\tMaxEncoderHeaderTableSize uint32\n\n\t// MaxReadFrameSize optionally specifies the largest frame\n\t// this server is willing to read. A valid value is between\n\t// 16k and 16M, inclusive. If zero or otherwise invalid, a\n\t// default value is used.\n\tMaxReadFrameSize uint32\n\n\t// PermitProhibitedCipherSuites, if true, permits the use of\n\t// cipher suites prohibited by the HTTP/2 spec.\n\tPermitProhibitedCipherSuites bool\n\n\t// IdleTimeout specifies how long until idle clients should be\n\t// closed with a GOAWAY frame. PING frames are not considered\n\t// activity for the purposes of IdleTimeout.\n\tIdleTimeout time.Duration\n\n\t// MaxUploadBufferPerConnection is the size of the initial flow\n\t// control window for each connections. The HTTP/2 spec does not\n\t// allow this to be smaller than 65535 or larger than 2^32-1.\n\t// If the value is outside this range, a default value will be\n\t// used instead.\n\tMaxUploadBufferPerConnection int32\n\n\t// MaxUploadBufferPerStream is the size of the initial flow control\n\t// window for each stream. The HTTP/2 spec does not allow this to\n\t// be larger than 2^32-1. If the value is zero or larger than the\n\t// maximum, a default value will be used instead.\n\tMaxUploadBufferPerStream int32\n\n\t// NewWriteScheduler constructs a write scheduler for a connection.\n\t// If nil, a default scheduler is chosen.\n\tNewWriteScheduler func() WriteScheduler\n\n\t// CountError, if non-nil, is called on HTTP/2 server errors.\n\t// It's intended to increment a metric for monitoring, such\n\t// as an expvar or Prometheus metric.\n\t// The errType consists of only ASCII word characters.\n\tCountError func(errType string)\n\n\t// Internal state. This is a pointer (rather than embedded directly)\n\t// so that we don't embed a Mutex in this struct, which will make the\n\t// struct non-copyable, which might break some callers.\n\tstate *serverInternalState\n}\n\nfunc (s *Server) initialConnRecvWindowSize() int32 {\n\tif s.MaxUploadBufferPerConnection >= initialWindowSize {\n\t\treturn s.MaxUploadBufferPerConnection\n\t}\n\treturn 1 << 20\n}\n\nfunc (s *Server) initialStreamRecvWindowSize() int32 {\n\tif s.MaxUploadBufferPerStream > 0 {\n\t\treturn s.MaxUploadBufferPerStream\n\t}\n\treturn 1 << 20\n}\n\nfunc (s *Server) maxReadFrameSize() uint32 {\n\tif v := s.MaxReadFrameSize; v >= minMaxFrameSize && v <= maxFrameSize {\n\t\treturn v\n\t}\n\treturn defaultMaxReadFrameSize\n}\n\nfunc (s *Server) maxConcurrentStreams() uint32 {\n\tif v := s.MaxConcurrentStreams; v > 0 {\n\t\treturn v\n\t}\n\treturn defaultMaxStreams\n}\n\nfunc (s *Server) maxDecoderHeaderTableSize() uint32 {\n\tif v := s.MaxDecoderHeaderTableSize; v > 0 {\n\t\treturn v\n\t}\n\treturn initialHeaderTableSize\n}\n\nfunc (s *Server) maxEncoderHeaderTableSize() uint32 {\n\tif v := s.MaxEncoderHeaderTableSize; v > 0 {\n\t\treturn v\n\t}\n\treturn initialHeaderTableSize\n}\n\n// maxQueuedControlFrames is the maximum number of control frames like\n// SETTINGS, PING and RST_STREAM that will be queued for writing before\n// the connection is closed to prevent memory exhaustion attacks.\nfunc (s *Server) maxQueuedControlFrames() int {\n\t// TODO: if anybody asks, add a Server field, and remember to define the\n\t// behavior of negative values.\n\treturn maxQueuedControlFrames\n}\n\ntype serverInternalState struct {\n\tmu          sync.Mutex\n\tactiveConns map[*serverConn]struct{}\n}\n\nfunc (s *serverInternalState) registerConn(sc *serverConn) {\n\tif s == nil {\n\t\treturn // if the Server was used without calling ConfigureServer\n\t}\n\ts.mu.Lock()\n\ts.activeConns[sc] = struct{}{}\n\ts.mu.Unlock()\n}\n\nfunc (s *serverInternalState) unregisterConn(sc *serverConn) {\n\tif s == nil {\n\t\treturn // if the Server was used without calling ConfigureServer\n\t}\n\ts.mu.Lock()\n\tdelete(s.activeConns, sc)\n\ts.mu.Unlock()\n}\n\nfunc (s *serverInternalState) startGracefulShutdown() {\n\tif s == nil {\n\t\treturn // if the Server was used without calling ConfigureServer\n\t}\n\ts.mu.Lock()\n\tfor sc := range s.activeConns {\n\t\tsc.startGracefulShutdown()\n\t}\n\ts.mu.Unlock()\n}\n\n// ConfigureServer adds HTTP/2 support to a net/http Server.\n//\n// The configuration conf may be nil.\n//\n// ConfigureServer must be called before s begins serving.\nfunc ConfigureServer(s *http.Server, conf *Server) error {\n\tif s == nil {\n\t\tpanic(\"nil *http.Server\")\n\t}\n\tif conf == nil {\n\t\tconf = new(Server)\n\t}\n\tconf.state = &serverInternalState{activeConns: make(map[*serverConn]struct{})}\n\tif h1, h2 := s, conf; h2.IdleTimeout == 0 {\n\t\tif h1.IdleTimeout != 0 {\n\t\t\th2.IdleTimeout = h1.IdleTimeout\n\t\t} else {\n\t\t\th2.IdleTimeout = h1.ReadTimeout\n\t\t}\n\t}\n\ts.RegisterOnShutdown(conf.state.startGracefulShutdown)\n\n\tif s.TLSConfig == nil {\n\t\ts.TLSConfig = new(tls.Config)\n\t} else if s.TLSConfig.CipherSuites != nil && s.TLSConfig.MinVersion < tls.VersionTLS13 {\n\t\t// If they already provided a TLS 1.0–1.2 CipherSuite list, return an\n\t\t// error if it is missing ECDHE_RSA_WITH_AES_128_GCM_SHA256 or\n\t\t// ECDHE_ECDSA_WITH_AES_128_GCM_SHA256.\n\t\thaveRequired := false\n\t\tfor _, cs := range s.TLSConfig.CipherSuites {\n\t\t\tswitch cs {\n\t\t\tcase tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,\n\t\t\t\t// Alternative MTI cipher to not discourage ECDSA-only servers.\n\t\t\t\t// See http://golang.org/cl/30721 for further information.\n\t\t\t\ttls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:\n\t\t\t\thaveRequired = true\n\t\t\t}\n\t\t}\n\t\tif !haveRequired {\n\t\t\treturn fmt.Errorf(\"http2: TLSConfig.CipherSuites is missing an HTTP/2-required AES_128_GCM_SHA256 cipher (need at least one of TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 or TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256)\")\n\t\t}\n\t}\n\n\t// Note: not setting MinVersion to tls.VersionTLS12,\n\t// as we don't want to interfere with HTTP/1.1 traffic\n\t// on the user's server. We enforce TLS 1.2 later once\n\t// we accept a connection. Ideally this should be done\n\t// during next-proto selection, but using TLS <1.2 with\n\t// HTTP/2 is still the client's bug.\n\n\ts.TLSConfig.PreferServerCipherSuites = true\n\n\tif !strSliceContains(s.TLSConfig.NextProtos, NextProtoTLS) {\n\t\ts.TLSConfig.NextProtos = append(s.TLSConfig.NextProtos, NextProtoTLS)\n\t}\n\tif !strSliceContains(s.TLSConfig.NextProtos, \"http/1.1\") {\n\t\ts.TLSConfig.NextProtos = append(s.TLSConfig.NextProtos, \"http/1.1\")\n\t}\n\n\tif s.TLSNextProto == nil {\n\t\ts.TLSNextProto = map[string]func(*http.Server, *tls.Conn, http.Handler){}\n\t}\n\tprotoHandler := func(hs *http.Server, c *tls.Conn, h http.Handler) {\n\t\tif testHookOnConn != nil {\n\t\t\ttestHookOnConn()\n\t\t}\n\t\t// The TLSNextProto interface predates contexts, so\n\t\t// the net/http package passes down its per-connection\n\t\t// base context via an exported but unadvertised\n\t\t// method on the Handler. This is for internal\n\t\t// net/http<=>http2 use only.\n\t\tvar ctx context.Context\n\t\ttype baseContexter interface {\n\t\t\tBaseContext() context.Context\n\t\t}\n\t\tif bc, ok := h.(baseContexter); ok {\n\t\t\tctx = bc.BaseContext()\n\t\t}\n\t\tconf.ServeConn(c, &ServeConnOpts{\n\t\t\tContext:    ctx,\n\t\t\tHandler:    h,\n\t\t\tBaseConfig: hs,\n\t\t})\n\t}\n\ts.TLSNextProto[NextProtoTLS] = protoHandler\n\treturn nil\n}\n\n// ServeConnOpts are options for the Server.ServeConn method.\ntype ServeConnOpts struct {\n\t// Context is the base context to use.\n\t// If nil, context.Background is used.\n\tContext context.Context\n\n\t// BaseConfig optionally sets the base configuration\n\t// for values. If nil, defaults are used.\n\tBaseConfig *http.Server\n\n\t// Handler specifies which handler to use for processing\n\t// requests. If nil, BaseConfig.Handler is used. If BaseConfig\n\t// or BaseConfig.Handler is nil, http.DefaultServeMux is used.\n\tHandler http.Handler\n\n\t// UpgradeRequest is an initial request received on a connection\n\t// undergoing an h2c upgrade. The request body must have been\n\t// completely read from the connection before calling ServeConn,\n\t// and the 101 Switching Protocols response written.\n\tUpgradeRequest *http.Request\n\n\t// Settings is the decoded contents of the HTTP2-Settings header\n\t// in an h2c upgrade request.\n\tSettings []byte\n\n\t// SawClientPreface is set if the HTTP/2 connection preface\n\t// has already been read from the connection.\n\tSawClientPreface bool\n}\n\nfunc (o *ServeConnOpts) context() context.Context {\n\tif o != nil && o.Context != nil {\n\t\treturn o.Context\n\t}\n\treturn context.Background()\n}\n\nfunc (o *ServeConnOpts) baseConfig() *http.Server {\n\tif o != nil && o.BaseConfig != nil {\n\t\treturn o.BaseConfig\n\t}\n\treturn new(http.Server)\n}\n\nfunc (o *ServeConnOpts) handler() http.Handler {\n\tif o != nil {\n\t\tif o.Handler != nil {\n\t\t\treturn o.Handler\n\t\t}\n\t\tif o.BaseConfig != nil && o.BaseConfig.Handler != nil {\n\t\t\treturn o.BaseConfig.Handler\n\t\t}\n\t}\n\treturn http.DefaultServeMux\n}\n\n// ServeConn serves HTTP/2 requests on the provided connection and\n// blocks until the connection is no longer readable.\n//\n// ServeConn starts speaking HTTP/2 assuming that c has not had any\n// reads or writes. It writes its initial settings frame and expects\n// to be able to read the preface and settings frame from the\n// client. If c has a ConnectionState method like a *tls.Conn, the\n// ConnectionState is used to verify the TLS ciphersuite and to set\n// the Request.TLS field in Handlers.\n//\n// ServeConn does not support h2c by itself. Any h2c support must be\n// implemented in terms of providing a suitably-behaving net.Conn.\n//\n// The opts parameter is optional. If nil, default values are used.\nfunc (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) {\n\tbaseCtx, cancel := serverConnBaseContext(c, opts)\n\tdefer cancel()\n\n\tsc := &serverConn{\n\t\tsrv:                         s,\n\t\ths:                          opts.baseConfig(),\n\t\tconn:                        c,\n\t\tbaseCtx:                     baseCtx,\n\t\tremoteAddrStr:               c.RemoteAddr().String(),\n\t\tbw:                          newBufferedWriter(c),\n\t\thandler:                     opts.handler(),\n\t\tstreams:                     make(map[uint32]*stream),\n\t\treadFrameCh:                 make(chan readFrameResult),\n\t\twantWriteFrameCh:            make(chan FrameWriteRequest, 8),\n\t\tserveMsgCh:                  make(chan interface{}, 8),\n\t\twroteFrameCh:                make(chan frameWriteResult, 1), // buffered; one send in writeFrameAsync\n\t\tbodyReadCh:                  make(chan bodyReadMsg),         // buffering doesn't matter either way\n\t\tdoneServing:                 make(chan struct{}),\n\t\tclientMaxStreams:            math.MaxUint32, // Section 6.5.2: \"Initially, there is no limit to this value\"\n\t\tadvMaxStreams:               s.maxConcurrentStreams(),\n\t\tinitialStreamSendWindowSize: initialWindowSize,\n\t\tmaxFrameSize:                initialMaxFrameSize,\n\t\tserveG:                      newGoroutineLock(),\n\t\tpushEnabled:                 true,\n\t\tsawClientPreface:            opts.SawClientPreface,\n\t}\n\n\ts.state.registerConn(sc)\n\tdefer s.state.unregisterConn(sc)\n\n\t// The net/http package sets the write deadline from the\n\t// http.Server.WriteTimeout during the TLS handshake, but then\n\t// passes the connection off to us with the deadline already set.\n\t// Write deadlines are set per stream in serverConn.newStream.\n\t// Disarm the net.Conn write deadline here.\n\tif sc.hs.WriteTimeout != 0 {\n\t\tsc.conn.SetWriteDeadline(time.Time{})\n\t}\n\n\tif s.NewWriteScheduler != nil {\n\t\tsc.writeSched = s.NewWriteScheduler()\n\t} else {\n\t\tsc.writeSched = newRoundRobinWriteScheduler()\n\t}\n\n\t// These start at the RFC-specified defaults. If there is a higher\n\t// configured value for inflow, that will be updated when we send a\n\t// WINDOW_UPDATE shortly after sending SETTINGS.\n\tsc.flow.add(initialWindowSize)\n\tsc.inflow.init(initialWindowSize)\n\tsc.hpackEncoder = hpack.NewEncoder(&sc.headerWriteBuf)\n\tsc.hpackEncoder.SetMaxDynamicTableSizeLimit(s.maxEncoderHeaderTableSize())\n\n\tfr := NewFramer(sc.bw, c)\n\tif s.CountError != nil {\n\t\tfr.countError = s.CountError\n\t}\n\tfr.ReadMetaHeaders = hpack.NewDecoder(s.maxDecoderHeaderTableSize(), nil)\n\tfr.MaxHeaderListSize = sc.maxHeaderListSize()\n\tfr.SetMaxReadFrameSize(s.maxReadFrameSize())\n\tsc.framer = fr\n\n\tif tc, ok := c.(connectionStater); ok {\n\t\tsc.tlsState = new(tls.ConnectionState)\n\t\t*sc.tlsState = tc.ConnectionState()\n\t\t// 9.2 Use of TLS Features\n\t\t// An implementation of HTTP/2 over TLS MUST use TLS\n\t\t// 1.2 or higher with the restrictions on feature set\n\t\t// and cipher suite described in this section. Due to\n\t\t// implementation limitations, it might not be\n\t\t// possible to fail TLS negotiation. An endpoint MUST\n\t\t// immediately terminate an HTTP/2 connection that\n\t\t// does not meet the TLS requirements described in\n\t\t// this section with a connection error (Section\n\t\t// 5.4.1) of type INADEQUATE_SECURITY.\n\t\tif sc.tlsState.Version < tls.VersionTLS12 {\n\t\t\tsc.rejectConn(ErrCodeInadequateSecurity, \"TLS version too low\")\n\t\t\treturn\n\t\t}\n\n\t\tif sc.tlsState.ServerName == \"\" {\n\t\t\t// Client must use SNI, but we don't enforce that anymore,\n\t\t\t// since it was causing problems when connecting to bare IP\n\t\t\t// addresses during development.\n\t\t\t//\n\t\t\t// TODO: optionally enforce? Or enforce at the time we receive\n\t\t\t// a new request, and verify the ServerName matches the :authority?\n\t\t\t// But that precludes proxy situations, perhaps.\n\t\t\t//\n\t\t\t// So for now, do nothing here again.\n\t\t}\n\n\t\tif !s.PermitProhibitedCipherSuites && isBadCipher(sc.tlsState.CipherSuite) {\n\t\t\t// \"Endpoints MAY choose to generate a connection error\n\t\t\t// (Section 5.4.1) of type INADEQUATE_SECURITY if one of\n\t\t\t// the prohibited cipher suites are negotiated.\"\n\t\t\t//\n\t\t\t// We choose that. In my opinion, the spec is weak\n\t\t\t// here. It also says both parties must support at least\n\t\t\t// TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 so there's no\n\t\t\t// excuses here. If we really must, we could allow an\n\t\t\t// \"AllowInsecureWeakCiphers\" option on the server later.\n\t\t\t// Let's see how it plays out first.\n\t\t\tsc.rejectConn(ErrCodeInadequateSecurity, fmt.Sprintf(\"Prohibited TLS 1.2 Cipher Suite: %x\", sc.tlsState.CipherSuite))\n\t\t\treturn\n\t\t}\n\t}\n\n\tif opts.Settings != nil {\n\t\tfr := &SettingsFrame{\n\t\t\tFrameHeader: FrameHeader{valid: true},\n\t\t\tp:           opts.Settings,\n\t\t}\n\t\tif err := fr.ForeachSetting(sc.processSetting); err != nil {\n\t\t\tsc.rejectConn(ErrCodeProtocol, \"invalid settings\")\n\t\t\treturn\n\t\t}\n\t\topts.Settings = nil\n\t}\n\n\tif hook := testHookGetServerConn; hook != nil {\n\t\thook(sc)\n\t}\n\n\tif opts.UpgradeRequest != nil {\n\t\tsc.upgradeRequest(opts.UpgradeRequest)\n\t\topts.UpgradeRequest = nil\n\t}\n\n\tsc.serve()\n}\n\nfunc serverConnBaseContext(c net.Conn, opts *ServeConnOpts) (ctx context.Context, cancel func()) {\n\tctx, cancel = context.WithCancel(opts.context())\n\tctx = context.WithValue(ctx, http.LocalAddrContextKey, c.LocalAddr())\n\tif hs := opts.baseConfig(); hs != nil {\n\t\tctx = context.WithValue(ctx, http.ServerContextKey, hs)\n\t}\n\treturn\n}\n\nfunc (sc *serverConn) rejectConn(err ErrCode, debug string) {\n\tsc.vlogf(\"http2: server rejecting conn: %v, %s\", err, debug)\n\t// ignoring errors. hanging up anyway.\n\tsc.framer.WriteGoAway(0, err, []byte(debug))\n\tsc.bw.Flush()\n\tsc.conn.Close()\n}\n\ntype serverConn struct {\n\t// Immutable:\n\tsrv              *Server\n\ths               *http.Server\n\tconn             net.Conn\n\tbw               *bufferedWriter // writing to conn\n\thandler          http.Handler\n\tbaseCtx          context.Context\n\tframer           *Framer\n\tdoneServing      chan struct{}          // closed when serverConn.serve ends\n\treadFrameCh      chan readFrameResult   // written by serverConn.readFrames\n\twantWriteFrameCh chan FrameWriteRequest // from handlers -> serve\n\twroteFrameCh     chan frameWriteResult  // from writeFrameAsync -> serve, tickles more frame writes\n\tbodyReadCh       chan bodyReadMsg       // from handlers -> serve\n\tserveMsgCh       chan interface{}       // misc messages & code to send to / run on the serve loop\n\tflow             outflow                // conn-wide (not stream-specific) outbound flow control\n\tinflow           inflow                 // conn-wide inbound flow control\n\ttlsState         *tls.ConnectionState   // shared by all handlers, like net/http\n\tremoteAddrStr    string\n\twriteSched       WriteScheduler\n\n\t// Everything following is owned by the serve loop; use serveG.check():\n\tserveG                      goroutineLock // used to verify funcs are on serve()\n\tpushEnabled                 bool\n\tsawClientPreface            bool // preface has already been read, used in h2c upgrade\n\tsawFirstSettings            bool // got the initial SETTINGS frame after the preface\n\tneedToSendSettingsAck       bool\n\tunackedSettings             int    // how many SETTINGS have we sent without ACKs?\n\tqueuedControlFrames         int    // control frames in the writeSched queue\n\tclientMaxStreams            uint32 // SETTINGS_MAX_CONCURRENT_STREAMS from client (our PUSH_PROMISE limit)\n\tadvMaxStreams               uint32 // our SETTINGS_MAX_CONCURRENT_STREAMS advertised the client\n\tcurClientStreams            uint32 // number of open streams initiated by the client\n\tcurPushedStreams            uint32 // number of open streams initiated by server push\n\tcurHandlers                 uint32 // number of running handler goroutines\n\tmaxClientStreamID           uint32 // max ever seen from client (odd), or 0 if there have been no client requests\n\tmaxPushPromiseID            uint32 // ID of the last push promise (even), or 0 if there have been no pushes\n\tstreams                     map[uint32]*stream\n\tunstartedHandlers           []unstartedHandler\n\tinitialStreamSendWindowSize int32\n\tmaxFrameSize                int32\n\tpeerMaxHeaderListSize       uint32            // zero means unknown (default)\n\tcanonHeader                 map[string]string // http2-lower-case -> Go-Canonical-Case\n\tcanonHeaderKeysSize         int               // canonHeader keys size in bytes\n\twritingFrame                bool              // started writing a frame (on serve goroutine or separate)\n\twritingFrameAsync           bool              // started a frame on its own goroutine but haven't heard back on wroteFrameCh\n\tneedsFrameFlush             bool              // last frame write wasn't a flush\n\tinGoAway                    bool              // we've started to or sent GOAWAY\n\tinFrameScheduleLoop         bool              // whether we're in the scheduleFrameWrite loop\n\tneedToSendGoAway            bool              // we need to schedule a GOAWAY frame write\n\tgoAwayCode                  ErrCode\n\tshutdownTimer               *time.Timer // nil until used\n\tidleTimer                   *time.Timer // nil if unused\n\n\t// Owned by the writeFrameAsync goroutine:\n\theaderWriteBuf bytes.Buffer\n\thpackEncoder   *hpack.Encoder\n\n\t// Used by startGracefulShutdown.\n\tshutdownOnce sync.Once\n}\n\nfunc (sc *serverConn) maxHeaderListSize() uint32 {\n\tn := sc.hs.MaxHeaderBytes\n\tif n <= 0 {\n\t\tn = http.DefaultMaxHeaderBytes\n\t}\n\t// http2's count is in a slightly different unit and includes 32 bytes per pair.\n\t// So, take the net/http.Server value and pad it up a bit, assuming 10 headers.\n\tconst perFieldOverhead = 32 // per http2 spec\n\tconst typicalHeaders = 10   // conservative\n\treturn uint32(n + typicalHeaders*perFieldOverhead)\n}\n\nfunc (sc *serverConn) curOpenStreams() uint32 {\n\tsc.serveG.check()\n\treturn sc.curClientStreams + sc.curPushedStreams\n}\n\n// stream represents a stream. This is the minimal metadata needed by\n// the serve goroutine. Most of the actual stream state is owned by\n// the http.Handler's goroutine in the responseWriter. Because the\n// responseWriter's responseWriterState is recycled at the end of a\n// handler, this struct intentionally has no pointer to the\n// *responseWriter{,State} itself, as the Handler ending nils out the\n// responseWriter's state field.\ntype stream struct {\n\t// immutable:\n\tsc        *serverConn\n\tid        uint32\n\tbody      *pipe       // non-nil if expecting DATA frames\n\tcw        closeWaiter // closed wait stream transitions to closed state\n\tctx       context.Context\n\tcancelCtx func()\n\n\t// owned by serverConn's serve loop:\n\tbodyBytes        int64   // body bytes seen so far\n\tdeclBodyBytes    int64   // or -1 if undeclared\n\tflow             outflow // limits writing from Handler to client\n\tinflow           inflow  // what the client is allowed to POST/etc to us\n\tstate            streamState\n\tresetQueued      bool        // RST_STREAM queued for write; set by sc.resetStream\n\tgotTrailerHeader bool        // HEADER frame for trailers was seen\n\twroteHeaders     bool        // whether we wrote headers (not status 100)\n\treadDeadline     *time.Timer // nil if unused\n\twriteDeadline    *time.Timer // nil if unused\n\tcloseErr         error       // set before cw is closed\n\n\ttrailer    http.Header // accumulated trailers\n\treqTrailer http.Header // handler's Request.Trailer\n}\n\nfunc (sc *serverConn) Framer() *Framer  { return sc.framer }\nfunc (sc *serverConn) CloseConn() error { return sc.conn.Close() }\nfunc (sc *serverConn) Flush() error     { return sc.bw.Flush() }\nfunc (sc *serverConn) HeaderEncoder() (*hpack.Encoder, *bytes.Buffer) {\n\treturn sc.hpackEncoder, &sc.headerWriteBuf\n}\n\nfunc (sc *serverConn) state(streamID uint32) (streamState, *stream) {\n\tsc.serveG.check()\n\t// http://tools.ietf.org/html/rfc7540#section-5.1\n\tif st, ok := sc.streams[streamID]; ok {\n\t\treturn st.state, st\n\t}\n\t// \"The first use of a new stream identifier implicitly closes all\n\t// streams in the \"idle\" state that might have been initiated by\n\t// that peer with a lower-valued stream identifier. For example, if\n\t// a client sends a HEADERS frame on stream 7 without ever sending a\n\t// frame on stream 5, then stream 5 transitions to the \"closed\"\n\t// state when the first frame for stream 7 is sent or received.\"\n\tif streamID%2 == 1 {\n\t\tif streamID <= sc.maxClientStreamID {\n\t\t\treturn stateClosed, nil\n\t\t}\n\t} else {\n\t\tif streamID <= sc.maxPushPromiseID {\n\t\t\treturn stateClosed, nil\n\t\t}\n\t}\n\treturn stateIdle, nil\n}\n\n// setConnState calls the net/http ConnState hook for this connection, if configured.\n// Note that the net/http package does StateNew and StateClosed for us.\n// There is currently no plan for StateHijacked or hijacking HTTP/2 connections.\nfunc (sc *serverConn) setConnState(state http.ConnState) {\n\tif sc.hs.ConnState != nil {\n\t\tsc.hs.ConnState(sc.conn, state)\n\t}\n}\n\nfunc (sc *serverConn) vlogf(format string, args ...interface{}) {\n\tif VerboseLogs {\n\t\tsc.logf(format, args...)\n\t}\n}\n\nfunc (sc *serverConn) logf(format string, args ...interface{}) {\n\tif lg := sc.hs.ErrorLog; lg != nil {\n\t\tlg.Printf(format, args...)\n\t} else {\n\t\tlog.Printf(format, args...)\n\t}\n}\n\n// errno returns v's underlying uintptr, else 0.\n//\n// TODO: remove this helper function once http2 can use build\n// tags. See comment in isClosedConnError.\nfunc errno(v error) uintptr {\n\tif rv := reflect.ValueOf(v); rv.Kind() == reflect.Uintptr {\n\t\treturn uintptr(rv.Uint())\n\t}\n\treturn 0\n}\n\n// isClosedConnError reports whether err is an error from use of a closed\n// network connection.\nfunc isClosedConnError(err error) bool {\n\tif err == nil {\n\t\treturn false\n\t}\n\n\t// TODO: remove this string search and be more like the Windows\n\t// case below. That might involve modifying the standard library\n\t// to return better error types.\n\tstr := err.Error()\n\tif strings.Contains(str, \"use of closed network connection\") {\n\t\treturn true\n\t}\n\n\t// TODO(bradfitz): x/tools/cmd/bundle doesn't really support\n\t// build tags, so I can't make an http2_windows.go file with\n\t// Windows-specific stuff. Fix that and move this, once we\n\t// have a way to bundle this into std's net/http somehow.\n\tif runtime.GOOS == \"windows\" {\n\t\tif oe, ok := err.(*net.OpError); ok && oe.Op == \"read\" {\n\t\t\tif se, ok := oe.Err.(*os.SyscallError); ok && se.Syscall == \"wsarecv\" {\n\t\t\t\tconst WSAECONNABORTED = 10053\n\t\t\t\tconst WSAECONNRESET = 10054\n\t\t\t\tif n := errno(se.Err); n == WSAECONNRESET || n == WSAECONNABORTED {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (sc *serverConn) condlogf(err error, format string, args ...interface{}) {\n\tif err == nil {\n\t\treturn\n\t}\n\tif err == io.EOF || err == io.ErrUnexpectedEOF || isClosedConnError(err) || err == errPrefaceTimeout {\n\t\t// Boring, expected errors.\n\t\tsc.vlogf(format, args...)\n\t} else {\n\t\tsc.logf(format, args...)\n\t}\n}\n\n// maxCachedCanonicalHeadersKeysSize is an arbitrarily-chosen limit on the size\n// of the entries in the canonHeader cache.\n// This should be larger than the size of unique, uncommon header keys likely to\n// be sent by the peer, while not so high as to permit unreasonable memory usage\n// if the peer sends an unbounded number of unique header keys.\nconst maxCachedCanonicalHeadersKeysSize = 2048\n\nfunc (sc *serverConn) canonicalHeader(v string) string {\n\tsc.serveG.check()\n\tbuildCommonHeaderMapsOnce()\n\tcv, ok := commonCanonHeader[v]\n\tif ok {\n\t\treturn cv\n\t}\n\tcv, ok = sc.canonHeader[v]\n\tif ok {\n\t\treturn cv\n\t}\n\tif sc.canonHeader == nil {\n\t\tsc.canonHeader = make(map[string]string)\n\t}\n\tcv = http.CanonicalHeaderKey(v)\n\tsize := 100 + len(v)*2 // 100 bytes of map overhead + key + value\n\tif sc.canonHeaderKeysSize+size <= maxCachedCanonicalHeadersKeysSize {\n\t\tsc.canonHeader[v] = cv\n\t\tsc.canonHeaderKeysSize += size\n\t}\n\treturn cv\n}\n\ntype readFrameResult struct {\n\tf   Frame // valid until readMore is called\n\terr error\n\n\t// readMore should be called once the consumer no longer needs or\n\t// retains f. After readMore, f is invalid and more frames can be\n\t// read.\n\treadMore func()\n}\n\n// readFrames is the loop that reads incoming frames.\n// It takes care to only read one frame at a time, blocking until the\n// consumer is done with the frame.\n// It's run on its own goroutine.\nfunc (sc *serverConn) readFrames() {\n\tgate := make(gate)\n\tgateDone := gate.Done\n\tfor {\n\t\tf, err := sc.framer.ReadFrame()\n\t\tselect {\n\t\tcase sc.readFrameCh <- readFrameResult{f, err, gateDone}:\n\t\tcase <-sc.doneServing:\n\t\t\treturn\n\t\t}\n\t\tselect {\n\t\tcase <-gate:\n\t\tcase <-sc.doneServing:\n\t\t\treturn\n\t\t}\n\t\tif terminalReadFrameError(err) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// frameWriteResult is the message passed from writeFrameAsync to the serve goroutine.\ntype frameWriteResult struct {\n\t_   incomparable\n\twr  FrameWriteRequest // what was written (or attempted)\n\terr error             // result of the writeFrame call\n}\n\n// writeFrameAsync runs in its own goroutine and writes a single frame\n// and then reports when it's done.\n// At most one goroutine can be running writeFrameAsync at a time per\n// serverConn.\nfunc (sc *serverConn) writeFrameAsync(wr FrameWriteRequest, wd *writeData) {\n\tvar err error\n\tif wd == nil {\n\t\terr = wr.write.writeFrame(sc)\n\t} else {\n\t\terr = sc.framer.endWrite()\n\t}\n\tsc.wroteFrameCh <- frameWriteResult{wr: wr, err: err}\n}\n\nfunc (sc *serverConn) closeAllStreamsOnConnClose() {\n\tsc.serveG.check()\n\tfor _, st := range sc.streams {\n\t\tsc.closeStream(st, errClientDisconnected)\n\t}\n}\n\nfunc (sc *serverConn) stopShutdownTimer() {\n\tsc.serveG.check()\n\tif t := sc.shutdownTimer; t != nil {\n\t\tt.Stop()\n\t}\n}\n\nfunc (sc *serverConn) notePanic() {\n\t// Note: this is for serverConn.serve panicking, not http.Handler code.\n\tif testHookOnPanicMu != nil {\n\t\ttestHookOnPanicMu.Lock()\n\t\tdefer testHookOnPanicMu.Unlock()\n\t}\n\tif testHookOnPanic != nil {\n\t\tif e := recover(); e != nil {\n\t\t\tif testHookOnPanic(sc, e) {\n\t\t\t\tpanic(e)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (sc *serverConn) serve() {\n\tsc.serveG.check()\n\tdefer sc.notePanic()\n\tdefer sc.conn.Close()\n\tdefer sc.closeAllStreamsOnConnClose()\n\tdefer sc.stopShutdownTimer()\n\tdefer close(sc.doneServing) // unblocks handlers trying to send\n\n\tif VerboseLogs {\n\t\tsc.vlogf(\"http2: server connection from %v on %p\", sc.conn.RemoteAddr(), sc.hs)\n\t}\n\n\tsc.writeFrame(FrameWriteRequest{\n\t\twrite: writeSettings{\n\t\t\t{SettingMaxFrameSize, sc.srv.maxReadFrameSize()},\n\t\t\t{SettingMaxConcurrentStreams, sc.advMaxStreams},\n\t\t\t{SettingMaxHeaderListSize, sc.maxHeaderListSize()},\n\t\t\t{SettingHeaderTableSize, sc.srv.maxDecoderHeaderTableSize()},\n\t\t\t{SettingInitialWindowSize, uint32(sc.srv.initialStreamRecvWindowSize())},\n\t\t},\n\t})\n\tsc.unackedSettings++\n\n\t// Each connection starts with initialWindowSize inflow tokens.\n\t// If a higher value is configured, we add more tokens.\n\tif diff := sc.srv.initialConnRecvWindowSize() - initialWindowSize; diff > 0 {\n\t\tsc.sendWindowUpdate(nil, int(diff))\n\t}\n\n\tif err := sc.readPreface(); err != nil {\n\t\tsc.condlogf(err, \"http2: server: error reading preface from client %v: %v\", sc.conn.RemoteAddr(), err)\n\t\treturn\n\t}\n\t// Now that we've got the preface, get us out of the\n\t// \"StateNew\" state. We can't go directly to idle, though.\n\t// Active means we read some data and anticipate a request. We'll\n\t// do another Active when we get a HEADERS frame.\n\tsc.setConnState(http.StateActive)\n\tsc.setConnState(http.StateIdle)\n\n\tif sc.srv.IdleTimeout != 0 {\n\t\tsc.idleTimer = time.AfterFunc(sc.srv.IdleTimeout, sc.onIdleTimer)\n\t\tdefer sc.idleTimer.Stop()\n\t}\n\n\tgo sc.readFrames() // closed by defer sc.conn.Close above\n\n\tsettingsTimer := time.AfterFunc(firstSettingsTimeout, sc.onSettingsTimer)\n\tdefer settingsTimer.Stop()\n\n\tloopNum := 0\n\tfor {\n\t\tloopNum++\n\t\tselect {\n\t\tcase wr := <-sc.wantWriteFrameCh:\n\t\t\tif se, ok := wr.write.(StreamError); ok {\n\t\t\t\tsc.resetStream(se)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tsc.writeFrame(wr)\n\t\tcase res := <-sc.wroteFrameCh:\n\t\t\tsc.wroteFrame(res)\n\t\tcase res := <-sc.readFrameCh:\n\t\t\t// Process any written frames before reading new frames from the client since a\n\t\t\t// written frame could have triggered a new stream to be started.\n\t\t\tif sc.writingFrameAsync {\n\t\t\t\tselect {\n\t\t\t\tcase wroteRes := <-sc.wroteFrameCh:\n\t\t\t\t\tsc.wroteFrame(wroteRes)\n\t\t\t\tdefault:\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !sc.processFrameFromReader(res) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tres.readMore()\n\t\t\tif settingsTimer != nil {\n\t\t\t\tsettingsTimer.Stop()\n\t\t\t\tsettingsTimer = nil\n\t\t\t}\n\t\tcase m := <-sc.bodyReadCh:\n\t\t\tsc.noteBodyRead(m.st, m.n)\n\t\tcase msg := <-sc.serveMsgCh:\n\t\t\tswitch v := msg.(type) {\n\t\t\tcase func(int):\n\t\t\t\tv(loopNum) // for testing\n\t\t\tcase *serverMessage:\n\t\t\t\tswitch v {\n\t\t\t\tcase settingsTimerMsg:\n\t\t\t\t\tsc.logf(\"timeout waiting for SETTINGS frames from %v\", sc.conn.RemoteAddr())\n\t\t\t\t\treturn\n\t\t\t\tcase idleTimerMsg:\n\t\t\t\t\tsc.vlogf(\"connection is idle\")\n\t\t\t\t\tsc.goAway(ErrCodeNo)\n\t\t\t\tcase shutdownTimerMsg:\n\t\t\t\t\tsc.vlogf(\"GOAWAY close timer fired; closing conn from %v\", sc.conn.RemoteAddr())\n\t\t\t\t\treturn\n\t\t\t\tcase gracefulShutdownMsg:\n\t\t\t\t\tsc.startGracefulShutdownInternal()\n\t\t\t\tcase handlerDoneMsg:\n\t\t\t\t\tsc.handlerDone()\n\t\t\t\tdefault:\n\t\t\t\t\tpanic(\"unknown timer\")\n\t\t\t\t}\n\t\t\tcase *startPushRequest:\n\t\t\t\tsc.startPush(v)\n\t\t\tcase func(*serverConn):\n\t\t\t\tv(sc)\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"unexpected type %T\", v))\n\t\t\t}\n\t\t}\n\n\t\t// If the peer is causing us to generate a lot of control frames,\n\t\t// but not reading them from us, assume they are trying to make us\n\t\t// run out of memory.\n\t\tif sc.queuedControlFrames > sc.srv.maxQueuedControlFrames() {\n\t\t\tsc.vlogf(\"http2: too many control frames in send queue, closing connection\")\n\t\t\treturn\n\t\t}\n\n\t\t// Start the shutdown timer after sending a GOAWAY. When sending GOAWAY\n\t\t// with no error code (graceful shutdown), don't start the timer until\n\t\t// all open streams have been completed.\n\t\tsentGoAway := sc.inGoAway && !sc.needToSendGoAway && !sc.writingFrame\n\t\tgracefulShutdownComplete := sc.goAwayCode == ErrCodeNo && sc.curOpenStreams() == 0\n\t\tif sentGoAway && sc.shutdownTimer == nil && (sc.goAwayCode != ErrCodeNo || gracefulShutdownComplete) {\n\t\t\tsc.shutDownIn(goAwayTimeout)\n\t\t}\n\t}\n}\n\ntype serverMessage int\n\n// Message values sent to serveMsgCh.\nvar (\n\tsettingsTimerMsg    = new(serverMessage)\n\tidleTimerMsg        = new(serverMessage)\n\tshutdownTimerMsg    = new(serverMessage)\n\tgracefulShutdownMsg = new(serverMessage)\n\thandlerDoneMsg      = new(serverMessage)\n)\n\nfunc (sc *serverConn) onSettingsTimer() { sc.sendServeMsg(settingsTimerMsg) }\nfunc (sc *serverConn) onIdleTimer()     { sc.sendServeMsg(idleTimerMsg) }\nfunc (sc *serverConn) onShutdownTimer() { sc.sendServeMsg(shutdownTimerMsg) }\n\nfunc (sc *serverConn) sendServeMsg(msg interface{}) {\n\tsc.serveG.checkNotOn() // NOT\n\tselect {\n\tcase sc.serveMsgCh <- msg:\n\tcase <-sc.doneServing:\n\t}\n}\n\nvar errPrefaceTimeout = errors.New(\"timeout waiting for client preface\")\n\n// readPreface reads the ClientPreface greeting from the peer or\n// returns errPrefaceTimeout on timeout, or an error if the greeting\n// is invalid.\nfunc (sc *serverConn) readPreface() error {\n\tif sc.sawClientPreface {\n\t\treturn nil\n\t}\n\terrc := make(chan error, 1)\n\tgo func() {\n\t\t// Read the client preface\n\t\tbuf := make([]byte, len(ClientPreface))\n\t\tif _, err := io.ReadFull(sc.conn, buf); err != nil {\n\t\t\terrc <- err\n\t\t} else if !bytes.Equal(buf, clientPreface) {\n\t\t\terrc <- fmt.Errorf(\"bogus greeting %q\", buf)\n\t\t} else {\n\t\t\terrc <- nil\n\t\t}\n\t}()\n\ttimer := time.NewTimer(prefaceTimeout) // TODO: configurable on *Server?\n\tdefer timer.Stop()\n\tselect {\n\tcase <-timer.C:\n\t\treturn errPrefaceTimeout\n\tcase err := <-errc:\n\t\tif err == nil {\n\t\t\tif VerboseLogs {\n\t\t\t\tsc.vlogf(\"http2: server: client %v said hello\", sc.conn.RemoteAddr())\n\t\t\t}\n\t\t}\n\t\treturn err\n\t}\n}\n\nvar errChanPool = sync.Pool{\n\tNew: func() interface{} { return make(chan error, 1) },\n}\n\nvar writeDataPool = sync.Pool{\n\tNew: func() interface{} { return new(writeData) },\n}\n\n// writeDataFromHandler writes DATA response frames from a handler on\n// the given stream.\nfunc (sc *serverConn) writeDataFromHandler(stream *stream, data []byte, endStream bool) error {\n\tch := errChanPool.Get().(chan error)\n\twriteArg := writeDataPool.Get().(*writeData)\n\t*writeArg = writeData{stream.id, data, endStream}\n\terr := sc.writeFrameFromHandler(FrameWriteRequest{\n\t\twrite:  writeArg,\n\t\tstream: stream,\n\t\tdone:   ch,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tvar frameWriteDone bool // the frame write is done (successfully or not)\n\tselect {\n\tcase err = <-ch:\n\t\tframeWriteDone = true\n\tcase <-sc.doneServing:\n\t\treturn errClientDisconnected\n\tcase <-stream.cw:\n\t\t// If both ch and stream.cw were ready (as might\n\t\t// happen on the final Write after an http.Handler\n\t\t// ends), prefer the write result. Otherwise this\n\t\t// might just be us successfully closing the stream.\n\t\t// The writeFrameAsync and serve goroutines guarantee\n\t\t// that the ch send will happen before the stream.cw\n\t\t// close.\n\t\tselect {\n\t\tcase err = <-ch:\n\t\t\tframeWriteDone = true\n\t\tdefault:\n\t\t\treturn errStreamClosed\n\t\t}\n\t}\n\terrChanPool.Put(ch)\n\tif frameWriteDone {\n\t\twriteDataPool.Put(writeArg)\n\t}\n\treturn err\n}\n\n// writeFrameFromHandler sends wr to sc.wantWriteFrameCh, but aborts\n// if the connection has gone away.\n//\n// This must not be run from the serve goroutine itself, else it might\n// deadlock writing to sc.wantWriteFrameCh (which is only mildly\n// buffered and is read by serve itself). If you're on the serve\n// goroutine, call writeFrame instead.\nfunc (sc *serverConn) writeFrameFromHandler(wr FrameWriteRequest) error {\n\tsc.serveG.checkNotOn() // NOT\n\tselect {\n\tcase sc.wantWriteFrameCh <- wr:\n\t\treturn nil\n\tcase <-sc.doneServing:\n\t\t// Serve loop is gone.\n\t\t// Client has closed their connection to the server.\n\t\treturn errClientDisconnected\n\t}\n}\n\n// writeFrame schedules a frame to write and sends it if there's nothing\n// already being written.\n//\n// There is no pushback here (the serve goroutine never blocks). It's\n// the http.Handlers that block, waiting for their previous frames to\n// make it onto the wire\n//\n// If you're not on the serve goroutine, use writeFrameFromHandler instead.\nfunc (sc *serverConn) writeFrame(wr FrameWriteRequest) {\n\tsc.serveG.check()\n\n\t// If true, wr will not be written and wr.done will not be signaled.\n\tvar ignoreWrite bool\n\n\t// We are not allowed to write frames on closed streams. RFC 7540 Section\n\t// 5.1.1 says: \"An endpoint MUST NOT send frames other than PRIORITY on\n\t// a closed stream.\" Our server never sends PRIORITY, so that exception\n\t// does not apply.\n\t//\n\t// The serverConn might close an open stream while the stream's handler\n\t// is still running. For example, the server might close a stream when it\n\t// receives bad data from the client. If this happens, the handler might\n\t// attempt to write a frame after the stream has been closed (since the\n\t// handler hasn't yet been notified of the close). In this case, we simply\n\t// ignore the frame. The handler will notice that the stream is closed when\n\t// it waits for the frame to be written.\n\t//\n\t// As an exception to this rule, we allow sending RST_STREAM after close.\n\t// This allows us to immediately reject new streams without tracking any\n\t// state for those streams (except for the queued RST_STREAM frame). This\n\t// may result in duplicate RST_STREAMs in some cases, but the client should\n\t// ignore those.\n\tif wr.StreamID() != 0 {\n\t\t_, isReset := wr.write.(StreamError)\n\t\tif state, _ := sc.state(wr.StreamID()); state == stateClosed && !isReset {\n\t\t\tignoreWrite = true\n\t\t}\n\t}\n\n\t// Don't send a 100-continue response if we've already sent headers.\n\t// See golang.org/issue/14030.\n\tswitch wr.write.(type) {\n\tcase *writeResHeaders:\n\t\twr.stream.wroteHeaders = true\n\tcase write100ContinueHeadersFrame:\n\t\tif wr.stream.wroteHeaders {\n\t\t\t// We do not need to notify wr.done because this frame is\n\t\t\t// never written with wr.done != nil.\n\t\t\tif wr.done != nil {\n\t\t\t\tpanic(\"wr.done != nil for write100ContinueHeadersFrame\")\n\t\t\t}\n\t\t\tignoreWrite = true\n\t\t}\n\t}\n\n\tif !ignoreWrite {\n\t\tif wr.isControl() {\n\t\t\tsc.queuedControlFrames++\n\t\t\t// For extra safety, detect wraparounds, which should not happen,\n\t\t\t// and pull the plug.\n\t\t\tif sc.queuedControlFrames < 0 {\n\t\t\t\tsc.conn.Close()\n\t\t\t}\n\t\t}\n\t\tsc.writeSched.Push(wr)\n\t}\n\tsc.scheduleFrameWrite()\n}\n\n// startFrameWrite starts a goroutine to write wr (in a separate\n// goroutine since that might block on the network), and updates the\n// serve goroutine's state about the world, updated from info in wr.\nfunc (sc *serverConn) startFrameWrite(wr FrameWriteRequest) {\n\tsc.serveG.check()\n\tif sc.writingFrame {\n\t\tpanic(\"internal error: can only be writing one frame at a time\")\n\t}\n\n\tst := wr.stream\n\tif st != nil {\n\t\tswitch st.state {\n\t\tcase stateHalfClosedLocal:\n\t\t\tswitch wr.write.(type) {\n\t\t\tcase StreamError, handlerPanicRST, writeWindowUpdate:\n\t\t\t\t// RFC 7540 Section 5.1 allows sending RST_STREAM, PRIORITY, and WINDOW_UPDATE\n\t\t\t\t// in this state. (We never send PRIORITY from the server, so that is not checked.)\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"internal error: attempt to send frame on a half-closed-local stream: %v\", wr))\n\t\t\t}\n\t\tcase stateClosed:\n\t\t\tpanic(fmt.Sprintf(\"internal error: attempt to send frame on a closed stream: %v\", wr))\n\t\t}\n\t}\n\tif wpp, ok := wr.write.(*writePushPromise); ok {\n\t\tvar err error\n\t\twpp.promisedID, err = wpp.allocatePromisedID()\n\t\tif err != nil {\n\t\t\tsc.writingFrameAsync = false\n\t\t\twr.replyToWriter(err)\n\t\t\treturn\n\t\t}\n\t}\n\n\tsc.writingFrame = true\n\tsc.needsFrameFlush = true\n\tif wr.write.staysWithinBuffer(sc.bw.Available()) {\n\t\tsc.writingFrameAsync = false\n\t\terr := wr.write.writeFrame(sc)\n\t\tsc.wroteFrame(frameWriteResult{wr: wr, err: err})\n\t} else if wd, ok := wr.write.(*writeData); ok {\n\t\t// Encode the frame in the serve goroutine, to ensure we don't have\n\t\t// any lingering asynchronous references to data passed to Write.\n\t\t// See https://go.dev/issue/58446.\n\t\tsc.framer.startWriteDataPadded(wd.streamID, wd.endStream, wd.p, nil)\n\t\tsc.writingFrameAsync = true\n\t\tgo sc.writeFrameAsync(wr, wd)\n\t} else {\n\t\tsc.writingFrameAsync = true\n\t\tgo sc.writeFrameAsync(wr, nil)\n\t}\n}\n\n// errHandlerPanicked is the error given to any callers blocked in a read from\n// Request.Body when the main goroutine panics. Since most handlers read in the\n// main ServeHTTP goroutine, this will show up rarely.\nvar errHandlerPanicked = errors.New(\"http2: handler panicked\")\n\n// wroteFrame is called on the serve goroutine with the result of\n// whatever happened on writeFrameAsync.\nfunc (sc *serverConn) wroteFrame(res frameWriteResult) {\n\tsc.serveG.check()\n\tif !sc.writingFrame {\n\t\tpanic(\"internal error: expected to be already writing a frame\")\n\t}\n\tsc.writingFrame = false\n\tsc.writingFrameAsync = false\n\n\twr := res.wr\n\n\tif writeEndsStream(wr.write) {\n\t\tst := wr.stream\n\t\tif st == nil {\n\t\t\tpanic(\"internal error: expecting non-nil stream\")\n\t\t}\n\t\tswitch st.state {\n\t\tcase stateOpen:\n\t\t\t// Here we would go to stateHalfClosedLocal in\n\t\t\t// theory, but since our handler is done and\n\t\t\t// the net/http package provides no mechanism\n\t\t\t// for closing a ResponseWriter while still\n\t\t\t// reading data (see possible TODO at top of\n\t\t\t// this file), we go into closed state here\n\t\t\t// anyway, after telling the peer we're\n\t\t\t// hanging up on them. We'll transition to\n\t\t\t// stateClosed after the RST_STREAM frame is\n\t\t\t// written.\n\t\t\tst.state = stateHalfClosedLocal\n\t\t\t// Section 8.1: a server MAY request that the client abort\n\t\t\t// transmission of a request without error by sending a\n\t\t\t// RST_STREAM with an error code of NO_ERROR after sending\n\t\t\t// a complete response.\n\t\t\tsc.resetStream(streamError(st.id, ErrCodeNo))\n\t\tcase stateHalfClosedRemote:\n\t\t\tsc.closeStream(st, errHandlerComplete)\n\t\t}\n\t} else {\n\t\tswitch v := wr.write.(type) {\n\t\tcase StreamError:\n\t\t\t// st may be unknown if the RST_STREAM was generated to reject bad input.\n\t\t\tif st, ok := sc.streams[v.StreamID]; ok {\n\t\t\t\tsc.closeStream(st, v)\n\t\t\t}\n\t\tcase handlerPanicRST:\n\t\t\tsc.closeStream(wr.stream, errHandlerPanicked)\n\t\t}\n\t}\n\n\t// Reply (if requested) to unblock the ServeHTTP goroutine.\n\twr.replyToWriter(res.err)\n\n\tsc.scheduleFrameWrite()\n}\n\n// scheduleFrameWrite tickles the frame writing scheduler.\n//\n// If a frame is already being written, nothing happens. This will be called again\n// when the frame is done being written.\n//\n// If a frame isn't being written and we need to send one, the best frame\n// to send is selected by writeSched.\n//\n// If a frame isn't being written and there's nothing else to send, we\n// flush the write buffer.\nfunc (sc *serverConn) scheduleFrameWrite() {\n\tsc.serveG.check()\n\tif sc.writingFrame || sc.inFrameScheduleLoop {\n\t\treturn\n\t}\n\tsc.inFrameScheduleLoop = true\n\tfor !sc.writingFrameAsync {\n\t\tif sc.needToSendGoAway {\n\t\t\tsc.needToSendGoAway = false\n\t\t\tsc.startFrameWrite(FrameWriteRequest{\n\t\t\t\twrite: &writeGoAway{\n\t\t\t\t\tmaxStreamID: sc.maxClientStreamID,\n\t\t\t\t\tcode:        sc.goAwayCode,\n\t\t\t\t},\n\t\t\t})\n\t\t\tcontinue\n\t\t}\n\t\tif sc.needToSendSettingsAck {\n\t\t\tsc.needToSendSettingsAck = false\n\t\t\tsc.startFrameWrite(FrameWriteRequest{write: writeSettingsAck{}})\n\t\t\tcontinue\n\t\t}\n\t\tif !sc.inGoAway || sc.goAwayCode == ErrCodeNo {\n\t\t\tif wr, ok := sc.writeSched.Pop(); ok {\n\t\t\t\tif wr.isControl() {\n\t\t\t\t\tsc.queuedControlFrames--\n\t\t\t\t}\n\t\t\t\tsc.startFrameWrite(wr)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tif sc.needsFrameFlush {\n\t\t\tsc.startFrameWrite(FrameWriteRequest{write: flushFrameWriter{}})\n\t\t\tsc.needsFrameFlush = false // after startFrameWrite, since it sets this true\n\t\t\tcontinue\n\t\t}\n\t\tbreak\n\t}\n\tsc.inFrameScheduleLoop = false\n}\n\n// startGracefulShutdown gracefully shuts down a connection. This\n// sends GOAWAY with ErrCodeNo to tell the client we're gracefully\n// shutting down. The connection isn't closed until all current\n// streams are done.\n//\n// startGracefulShutdown returns immediately; it does not wait until\n// the connection has shut down.\nfunc (sc *serverConn) startGracefulShutdown() {\n\tsc.serveG.checkNotOn() // NOT\n\tsc.shutdownOnce.Do(func() { sc.sendServeMsg(gracefulShutdownMsg) })\n}\n\n// After sending GOAWAY with an error code (non-graceful shutdown), the\n// connection will close after goAwayTimeout.\n//\n// If we close the connection immediately after sending GOAWAY, there may\n// be unsent data in our kernel receive buffer, which will cause the kernel\n// to send a TCP RST on close() instead of a FIN. This RST will abort the\n// connection immediately, whether or not the client had received the GOAWAY.\n//\n// Ideally we should delay for at least 1 RTT + epsilon so the client has\n// a chance to read the GOAWAY and stop sending messages. Measuring RTT\n// is hard, so we approximate with 1 second. See golang.org/issue/18701.\n//\n// This is a var so it can be shorter in tests, where all requests uses the\n// loopback interface making the expected RTT very small.\n//\n// TODO: configurable?\nvar goAwayTimeout = 1 * time.Second\n\nfunc (sc *serverConn) startGracefulShutdownInternal() {\n\tsc.goAway(ErrCodeNo)\n}\n\nfunc (sc *serverConn) goAway(code ErrCode) {\n\tsc.serveG.check()\n\tif sc.inGoAway {\n\t\tif sc.goAwayCode == ErrCodeNo {\n\t\t\tsc.goAwayCode = code\n\t\t}\n\t\treturn\n\t}\n\tsc.inGoAway = true\n\tsc.needToSendGoAway = true\n\tsc.goAwayCode = code\n\tsc.scheduleFrameWrite()\n}\n\nfunc (sc *serverConn) shutDownIn(d time.Duration) {\n\tsc.serveG.check()\n\tsc.shutdownTimer = time.AfterFunc(d, sc.onShutdownTimer)\n}\n\nfunc (sc *serverConn) resetStream(se StreamError) {\n\tsc.serveG.check()\n\tsc.writeFrame(FrameWriteRequest{write: se})\n\tif st, ok := sc.streams[se.StreamID]; ok {\n\t\tst.resetQueued = true\n\t}\n}\n\n// processFrameFromReader processes the serve loop's read from readFrameCh from the\n// frame-reading goroutine.\n// processFrameFromReader returns whether the connection should be kept open.\nfunc (sc *serverConn) processFrameFromReader(res readFrameResult) bool {\n\tsc.serveG.check()\n\terr := res.err\n\tif err != nil {\n\t\tif err == ErrFrameTooLarge {\n\t\t\tsc.goAway(ErrCodeFrameSize)\n\t\t\treturn true // goAway will close the loop\n\t\t}\n\t\tclientGone := err == io.EOF || err == io.ErrUnexpectedEOF || isClosedConnError(err)\n\t\tif clientGone {\n\t\t\t// TODO: could we also get into this state if\n\t\t\t// the peer does a half close\n\t\t\t// (e.g. CloseWrite) because they're done\n\t\t\t// sending frames but they're still wanting\n\t\t\t// our open replies?  Investigate.\n\t\t\t// TODO: add CloseWrite to crypto/tls.Conn first\n\t\t\t// so we have a way to test this? I suppose\n\t\t\t// just for testing we could have a non-TLS mode.\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tf := res.f\n\t\tif VerboseLogs {\n\t\t\tsc.vlogf(\"http2: server read frame %v\", summarizeFrame(f))\n\t\t}\n\t\terr = sc.processFrame(f)\n\t\tif err == nil {\n\t\t\treturn true\n\t\t}\n\t}\n\n\tswitch ev := err.(type) {\n\tcase StreamError:\n\t\tsc.resetStream(ev)\n\t\treturn true\n\tcase goAwayFlowError:\n\t\tsc.goAway(ErrCodeFlowControl)\n\t\treturn true\n\tcase ConnectionError:\n\t\tsc.logf(\"http2: server connection error from %v: %v\", sc.conn.RemoteAddr(), ev)\n\t\tsc.goAway(ErrCode(ev))\n\t\treturn true // goAway will handle shutdown\n\tdefault:\n\t\tif res.err != nil {\n\t\t\tsc.vlogf(\"http2: server closing client connection; error reading frame from client %s: %v\", sc.conn.RemoteAddr(), err)\n\t\t} else {\n\t\t\tsc.logf(\"http2: server closing client connection: %v\", err)\n\t\t}\n\t\treturn false\n\t}\n}\n\nfunc (sc *serverConn) processFrame(f Frame) error {\n\tsc.serveG.check()\n\n\t// First frame received must be SETTINGS.\n\tif !sc.sawFirstSettings {\n\t\tif _, ok := f.(*SettingsFrame); !ok {\n\t\t\treturn sc.countError(\"first_settings\", ConnectionError(ErrCodeProtocol))\n\t\t}\n\t\tsc.sawFirstSettings = true\n\t}\n\n\t// Discard frames for streams initiated after the identified last\n\t// stream sent in a GOAWAY, or all frames after sending an error.\n\t// We still need to return connection-level flow control for DATA frames.\n\t// RFC 9113 Section 6.8.\n\tif sc.inGoAway && (sc.goAwayCode != ErrCodeNo || f.Header().StreamID > sc.maxClientStreamID) {\n\n\t\tif f, ok := f.(*DataFrame); ok {\n\t\t\tif !sc.inflow.take(f.Length) {\n\t\t\t\treturn sc.countError(\"data_flow\", streamError(f.Header().StreamID, ErrCodeFlowControl))\n\t\t\t}\n\t\t\tsc.sendWindowUpdate(nil, int(f.Length)) // conn-level\n\t\t}\n\t\treturn nil\n\t}\n\n\tswitch f := f.(type) {\n\tcase *SettingsFrame:\n\t\treturn sc.processSettings(f)\n\tcase *MetaHeadersFrame:\n\t\treturn sc.processHeaders(f)\n\tcase *WindowUpdateFrame:\n\t\treturn sc.processWindowUpdate(f)\n\tcase *PingFrame:\n\t\treturn sc.processPing(f)\n\tcase *DataFrame:\n\t\treturn sc.processData(f)\n\tcase *RSTStreamFrame:\n\t\treturn sc.processResetStream(f)\n\tcase *PriorityFrame:\n\t\treturn sc.processPriority(f)\n\tcase *GoAwayFrame:\n\t\treturn sc.processGoAway(f)\n\tcase *PushPromiseFrame:\n\t\t// A client cannot push. Thus, servers MUST treat the receipt of a PUSH_PROMISE\n\t\t// frame as a connection error (Section 5.4.1) of type PROTOCOL_ERROR.\n\t\treturn sc.countError(\"push_promise\", ConnectionError(ErrCodeProtocol))\n\tdefault:\n\t\tsc.vlogf(\"http2: server ignoring frame: %v\", f.Header())\n\t\treturn nil\n\t}\n}\n\nfunc (sc *serverConn) processPing(f *PingFrame) error {\n\tsc.serveG.check()\n\tif f.IsAck() {\n\t\t// 6.7 PING: \" An endpoint MUST NOT respond to PING frames\n\t\t// containing this flag.\"\n\t\treturn nil\n\t}\n\tif f.StreamID != 0 {\n\t\t// \"PING frames are not associated with any individual\n\t\t// stream. If a PING frame is received with a stream\n\t\t// identifier field value other than 0x0, the recipient MUST\n\t\t// respond with a connection error (Section 5.4.1) of type\n\t\t// PROTOCOL_ERROR.\"\n\t\treturn sc.countError(\"ping_on_stream\", ConnectionError(ErrCodeProtocol))\n\t}\n\tsc.writeFrame(FrameWriteRequest{write: writePingAck{f}})\n\treturn nil\n}\n\nfunc (sc *serverConn) processWindowUpdate(f *WindowUpdateFrame) error {\n\tsc.serveG.check()\n\tswitch {\n\tcase f.StreamID != 0: // stream-level flow control\n\t\tstate, st := sc.state(f.StreamID)\n\t\tif state == stateIdle {\n\t\t\t// Section 5.1: \"Receiving any frame other than HEADERS\n\t\t\t// or PRIORITY on a stream in this state MUST be\n\t\t\t// treated as a connection error (Section 5.4.1) of\n\t\t\t// type PROTOCOL_ERROR.\"\n\t\t\treturn sc.countError(\"stream_idle\", ConnectionError(ErrCodeProtocol))\n\t\t}\n\t\tif st == nil {\n\t\t\t// \"WINDOW_UPDATE can be sent by a peer that has sent a\n\t\t\t// frame bearing the END_STREAM flag. This means that a\n\t\t\t// receiver could receive a WINDOW_UPDATE frame on a \"half\n\t\t\t// closed (remote)\" or \"closed\" stream. A receiver MUST\n\t\t\t// NOT treat this as an error, see Section 5.1.\"\n\t\t\treturn nil\n\t\t}\n\t\tif !st.flow.add(int32(f.Increment)) {\n\t\t\treturn sc.countError(\"bad_flow\", streamError(f.StreamID, ErrCodeFlowControl))\n\t\t}\n\tdefault: // connection-level flow control\n\t\tif !sc.flow.add(int32(f.Increment)) {\n\t\t\treturn goAwayFlowError{}\n\t\t}\n\t}\n\tsc.scheduleFrameWrite()\n\treturn nil\n}\n\nfunc (sc *serverConn) processResetStream(f *RSTStreamFrame) error {\n\tsc.serveG.check()\n\n\tstate, st := sc.state(f.StreamID)\n\tif state == stateIdle {\n\t\t// 6.4 \"RST_STREAM frames MUST NOT be sent for a\n\t\t// stream in the \"idle\" state. If a RST_STREAM frame\n\t\t// identifying an idle stream is received, the\n\t\t// recipient MUST treat this as a connection error\n\t\t// (Section 5.4.1) of type PROTOCOL_ERROR.\n\t\treturn sc.countError(\"reset_idle_stream\", ConnectionError(ErrCodeProtocol))\n\t}\n\tif st != nil {\n\t\tst.cancelCtx()\n\t\tsc.closeStream(st, streamError(f.StreamID, f.ErrCode))\n\t}\n\treturn nil\n}\n\nfunc (sc *serverConn) closeStream(st *stream, err error) {\n\tsc.serveG.check()\n\tif st.state == stateIdle || st.state == stateClosed {\n\t\tpanic(fmt.Sprintf(\"invariant; can't close stream in state %v\", st.state))\n\t}\n\tst.state = stateClosed\n\tif st.readDeadline != nil {\n\t\tst.readDeadline.Stop()\n\t}\n\tif st.writeDeadline != nil {\n\t\tst.writeDeadline.Stop()\n\t}\n\tif st.isPushed() {\n\t\tsc.curPushedStreams--\n\t} else {\n\t\tsc.curClientStreams--\n\t}\n\tdelete(sc.streams, st.id)\n\tif len(sc.streams) == 0 {\n\t\tsc.setConnState(http.StateIdle)\n\t\tif sc.srv.IdleTimeout != 0 {\n\t\t\tsc.idleTimer.Reset(sc.srv.IdleTimeout)\n\t\t}\n\t\tif h1ServerKeepAlivesDisabled(sc.hs) {\n\t\t\tsc.startGracefulShutdownInternal()\n\t\t}\n\t}\n\tif p := st.body; p != nil {\n\t\t// Return any buffered unread bytes worth of conn-level flow control.\n\t\t// See golang.org/issue/16481\n\t\tsc.sendWindowUpdate(nil, p.Len())\n\n\t\tp.CloseWithError(err)\n\t}\n\tif e, ok := err.(StreamError); ok {\n\t\tif e.Cause != nil {\n\t\t\terr = e.Cause\n\t\t} else {\n\t\t\terr = errStreamClosed\n\t\t}\n\t}\n\tst.closeErr = err\n\tst.cw.Close() // signals Handler's CloseNotifier, unblocks writes, etc\n\tsc.writeSched.CloseStream(st.id)\n}\n\nfunc (sc *serverConn) processSettings(f *SettingsFrame) error {\n\tsc.serveG.check()\n\tif f.IsAck() {\n\t\tsc.unackedSettings--\n\t\tif sc.unackedSettings < 0 {\n\t\t\t// Why is the peer ACKing settings we never sent?\n\t\t\t// The spec doesn't mention this case, but\n\t\t\t// hang up on them anyway.\n\t\t\treturn sc.countError(\"ack_mystery\", ConnectionError(ErrCodeProtocol))\n\t\t}\n\t\treturn nil\n\t}\n\tif f.NumSettings() > 100 || f.HasDuplicates() {\n\t\t// This isn't actually in the spec, but hang up on\n\t\t// suspiciously large settings frames or those with\n\t\t// duplicate entries.\n\t\treturn sc.countError(\"settings_big_or_dups\", ConnectionError(ErrCodeProtocol))\n\t}\n\tif err := f.ForeachSetting(sc.processSetting); err != nil {\n\t\treturn err\n\t}\n\t// TODO: judging by RFC 7540, Section 6.5.3 each SETTINGS frame should be\n\t// acknowledged individually, even if multiple are received before the ACK.\n\tsc.needToSendSettingsAck = true\n\tsc.scheduleFrameWrite()\n\treturn nil\n}\n\nfunc (sc *serverConn) processSetting(s Setting) error {\n\tsc.serveG.check()\n\tif err := s.Valid(); err != nil {\n\t\treturn err\n\t}\n\tif VerboseLogs {\n\t\tsc.vlogf(\"http2: server processing setting %v\", s)\n\t}\n\tswitch s.ID {\n\tcase SettingHeaderTableSize:\n\t\tsc.hpackEncoder.SetMaxDynamicTableSize(s.Val)\n\tcase SettingEnablePush:\n\t\tsc.pushEnabled = s.Val != 0\n\tcase SettingMaxConcurrentStreams:\n\t\tsc.clientMaxStreams = s.Val\n\tcase SettingInitialWindowSize:\n\t\treturn sc.processSettingInitialWindowSize(s.Val)\n\tcase SettingMaxFrameSize:\n\t\tsc.maxFrameSize = int32(s.Val) // the maximum valid s.Val is < 2^31\n\tcase SettingMaxHeaderListSize:\n\t\tsc.peerMaxHeaderListSize = s.Val\n\tdefault:\n\t\t// Unknown setting: \"An endpoint that receives a SETTINGS\n\t\t// frame with any unknown or unsupported identifier MUST\n\t\t// ignore that setting.\"\n\t\tif VerboseLogs {\n\t\t\tsc.vlogf(\"http2: server ignoring unknown setting %v\", s)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (sc *serverConn) processSettingInitialWindowSize(val uint32) error {\n\tsc.serveG.check()\n\t// Note: val already validated to be within range by\n\t// processSetting's Valid call.\n\n\t// \"A SETTINGS frame can alter the initial flow control window\n\t// size for all current streams. When the value of\n\t// SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST\n\t// adjust the size of all stream flow control windows that it\n\t// maintains by the difference between the new value and the\n\t// old value.\"\n\told := sc.initialStreamSendWindowSize\n\tsc.initialStreamSendWindowSize = int32(val)\n\tgrowth := int32(val) - old // may be negative\n\tfor _, st := range sc.streams {\n\t\tif !st.flow.add(growth) {\n\t\t\t// 6.9.2 Initial Flow Control Window Size\n\t\t\t// \"An endpoint MUST treat a change to\n\t\t\t// SETTINGS_INITIAL_WINDOW_SIZE that causes any flow\n\t\t\t// control window to exceed the maximum size as a\n\t\t\t// connection error (Section 5.4.1) of type\n\t\t\t// FLOW_CONTROL_ERROR.\"\n\t\t\treturn sc.countError(\"setting_win_size\", ConnectionError(ErrCodeFlowControl))\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (sc *serverConn) processData(f *DataFrame) error {\n\tsc.serveG.check()\n\tid := f.Header().StreamID\n\n\tdata := f.Data()\n\tstate, st := sc.state(id)\n\tif id == 0 || state == stateIdle {\n\t\t// Section 6.1: \"DATA frames MUST be associated with a\n\t\t// stream. If a DATA frame is received whose stream\n\t\t// identifier field is 0x0, the recipient MUST respond\n\t\t// with a connection error (Section 5.4.1) of type\n\t\t// PROTOCOL_ERROR.\"\n\t\t//\n\t\t// Section 5.1: \"Receiving any frame other than HEADERS\n\t\t// or PRIORITY on a stream in this state MUST be\n\t\t// treated as a connection error (Section 5.4.1) of\n\t\t// type PROTOCOL_ERROR.\"\n\t\treturn sc.countError(\"data_on_idle\", ConnectionError(ErrCodeProtocol))\n\t}\n\n\t// \"If a DATA frame is received whose stream is not in \"open\"\n\t// or \"half closed (local)\" state, the recipient MUST respond\n\t// with a stream error (Section 5.4.2) of type STREAM_CLOSED.\"\n\tif st == nil || state != stateOpen || st.gotTrailerHeader || st.resetQueued {\n\t\t// This includes sending a RST_STREAM if the stream is\n\t\t// in stateHalfClosedLocal (which currently means that\n\t\t// the http.Handler returned, so it's done reading &\n\t\t// done writing). Try to stop the client from sending\n\t\t// more DATA.\n\n\t\t// But still enforce their connection-level flow control,\n\t\t// and return any flow control bytes since we're not going\n\t\t// to consume them.\n\t\tif !sc.inflow.take(f.Length) {\n\t\t\treturn sc.countError(\"data_flow\", streamError(id, ErrCodeFlowControl))\n\t\t}\n\t\tsc.sendWindowUpdate(nil, int(f.Length)) // conn-level\n\n\t\tif st != nil && st.resetQueued {\n\t\t\t// Already have a stream error in flight. Don't send another.\n\t\t\treturn nil\n\t\t}\n\t\treturn sc.countError(\"closed\", streamError(id, ErrCodeStreamClosed))\n\t}\n\tif st.body == nil {\n\t\tpanic(\"internal error: should have a body in this state\")\n\t}\n\n\t// Sender sending more than they'd declared?\n\tif st.declBodyBytes != -1 && st.bodyBytes+int64(len(data)) > st.declBodyBytes {\n\t\tif !sc.inflow.take(f.Length) {\n\t\t\treturn sc.countError(\"data_flow\", streamError(id, ErrCodeFlowControl))\n\t\t}\n\t\tsc.sendWindowUpdate(nil, int(f.Length)) // conn-level\n\n\t\tst.body.CloseWithError(fmt.Errorf(\"sender tried to send more than declared Content-Length of %d bytes\", st.declBodyBytes))\n\t\t// RFC 7540, sec 8.1.2.6: A request or response is also malformed if the\n\t\t// value of a content-length header field does not equal the sum of the\n\t\t// DATA frame payload lengths that form the body.\n\t\treturn sc.countError(\"send_too_much\", streamError(id, ErrCodeProtocol))\n\t}\n\tif f.Length > 0 {\n\t\t// Check whether the client has flow control quota.\n\t\tif !takeInflows(&sc.inflow, &st.inflow, f.Length) {\n\t\t\treturn sc.countError(\"flow_on_data_length\", streamError(id, ErrCodeFlowControl))\n\t\t}\n\n\t\tif len(data) > 0 {\n\t\t\tst.bodyBytes += int64(len(data))\n\t\t\twrote, err := st.body.Write(data)\n\t\t\tif err != nil {\n\t\t\t\t// The handler has closed the request body.\n\t\t\t\t// Return the connection-level flow control for the discarded data,\n\t\t\t\t// but not the stream-level flow control.\n\t\t\t\tsc.sendWindowUpdate(nil, int(f.Length)-wrote)\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tif wrote != len(data) {\n\t\t\t\tpanic(\"internal error: bad Writer\")\n\t\t\t}\n\t\t}\n\n\t\t// Return any padded flow control now, since we won't\n\t\t// refund it later on body reads.\n\t\t// Call sendWindowUpdate even if there is no padding,\n\t\t// to return buffered flow control credit if the sent\n\t\t// window has shrunk.\n\t\tpad := int32(f.Length) - int32(len(data))\n\t\tsc.sendWindowUpdate32(nil, pad)\n\t\tsc.sendWindowUpdate32(st, pad)\n\t}\n\tif f.StreamEnded() {\n\t\tst.endStream()\n\t}\n\treturn nil\n}\n\nfunc (sc *serverConn) processGoAway(f *GoAwayFrame) error {\n\tsc.serveG.check()\n\tif f.ErrCode != ErrCodeNo {\n\t\tsc.logf(\"http2: received GOAWAY %+v, starting graceful shutdown\", f)\n\t} else {\n\t\tsc.vlogf(\"http2: received GOAWAY %+v, starting graceful shutdown\", f)\n\t}\n\tsc.startGracefulShutdownInternal()\n\t// http://tools.ietf.org/html/rfc7540#section-6.8\n\t// We should not create any new streams, which means we should disable push.\n\tsc.pushEnabled = false\n\treturn nil\n}\n\n// isPushed reports whether the stream is server-initiated.\nfunc (st *stream) isPushed() bool {\n\treturn st.id%2 == 0\n}\n\n// endStream closes a Request.Body's pipe. It is called when a DATA\n// frame says a request body is over (or after trailers).\nfunc (st *stream) endStream() {\n\tsc := st.sc\n\tsc.serveG.check()\n\n\tif st.declBodyBytes != -1 && st.declBodyBytes != st.bodyBytes {\n\t\tst.body.CloseWithError(fmt.Errorf(\"request declared a Content-Length of %d but only wrote %d bytes\",\n\t\t\tst.declBodyBytes, st.bodyBytes))\n\t} else {\n\t\tst.body.closeWithErrorAndCode(io.EOF, st.copyTrailersToHandlerRequest)\n\t\tst.body.CloseWithError(io.EOF)\n\t}\n\tst.state = stateHalfClosedRemote\n}\n\n// copyTrailersToHandlerRequest is run in the Handler's goroutine in\n// its Request.Body.Read just before it gets io.EOF.\nfunc (st *stream) copyTrailersToHandlerRequest() {\n\tfor k, vv := range st.trailer {\n\t\tif _, ok := st.reqTrailer[k]; ok {\n\t\t\t// Only copy it over it was pre-declared.\n\t\t\tst.reqTrailer[k] = vv\n\t\t}\n\t}\n}\n\n// onReadTimeout is run on its own goroutine (from time.AfterFunc)\n// when the stream's ReadTimeout has fired.\nfunc (st *stream) onReadTimeout() {\n\tif st.body != nil {\n\t\t// Wrap the ErrDeadlineExceeded to avoid callers depending on us\n\t\t// returning the bare error.\n\t\tst.body.CloseWithError(fmt.Errorf(\"%w\", os.ErrDeadlineExceeded))\n\t}\n}\n\n// onWriteTimeout is run on its own goroutine (from time.AfterFunc)\n// when the stream's WriteTimeout has fired.\nfunc (st *stream) onWriteTimeout() {\n\tst.sc.writeFrameFromHandler(FrameWriteRequest{write: StreamError{\n\t\tStreamID: st.id,\n\t\tCode:     ErrCodeInternal,\n\t\tCause:    os.ErrDeadlineExceeded,\n\t}})\n}\n\nfunc (sc *serverConn) processHeaders(f *MetaHeadersFrame) error {\n\tsc.serveG.check()\n\tid := f.StreamID\n\t// http://tools.ietf.org/html/rfc7540#section-5.1.1\n\t// Streams initiated by a client MUST use odd-numbered stream\n\t// identifiers. [...] An endpoint that receives an unexpected\n\t// stream identifier MUST respond with a connection error\n\t// (Section 5.4.1) of type PROTOCOL_ERROR.\n\tif id%2 != 1 {\n\t\treturn sc.countError(\"headers_even\", ConnectionError(ErrCodeProtocol))\n\t}\n\t// A HEADERS frame can be used to create a new stream or\n\t// send a trailer for an open one. If we already have a stream\n\t// open, let it process its own HEADERS frame (trailers at this\n\t// point, if it's valid).\n\tif st := sc.streams[f.StreamID]; st != nil {\n\t\tif st.resetQueued {\n\t\t\t// We're sending RST_STREAM to close the stream, so don't bother\n\t\t\t// processing this frame.\n\t\t\treturn nil\n\t\t}\n\t\t// RFC 7540, sec 5.1: If an endpoint receives additional frames, other than\n\t\t// WINDOW_UPDATE, PRIORITY, or RST_STREAM, for a stream that is in\n\t\t// this state, it MUST respond with a stream error (Section 5.4.2) of\n\t\t// type STREAM_CLOSED.\n\t\tif st.state == stateHalfClosedRemote {\n\t\t\treturn sc.countError(\"headers_half_closed\", streamError(id, ErrCodeStreamClosed))\n\t\t}\n\t\treturn st.processTrailerHeaders(f)\n\t}\n\n\t// [...] The identifier of a newly established stream MUST be\n\t// numerically greater than all streams that the initiating\n\t// endpoint has opened or reserved. [...]  An endpoint that\n\t// receives an unexpected stream identifier MUST respond with\n\t// a connection error (Section 5.4.1) of type PROTOCOL_ERROR.\n\tif id <= sc.maxClientStreamID {\n\t\treturn sc.countError(\"stream_went_down\", ConnectionError(ErrCodeProtocol))\n\t}\n\tsc.maxClientStreamID = id\n\n\tif sc.idleTimer != nil {\n\t\tsc.idleTimer.Stop()\n\t}\n\n\t// http://tools.ietf.org/html/rfc7540#section-5.1.2\n\t// [...] Endpoints MUST NOT exceed the limit set by their peer. An\n\t// endpoint that receives a HEADERS frame that causes their\n\t// advertised concurrent stream limit to be exceeded MUST treat\n\t// this as a stream error (Section 5.4.2) of type PROTOCOL_ERROR\n\t// or REFUSED_STREAM.\n\tif sc.curClientStreams+1 > sc.advMaxStreams {\n\t\tif sc.unackedSettings == 0 {\n\t\t\t// They should know better.\n\t\t\treturn sc.countError(\"over_max_streams\", streamError(id, ErrCodeProtocol))\n\t\t}\n\t\t// Assume it's a network race, where they just haven't\n\t\t// received our last SETTINGS update. But actually\n\t\t// this can't happen yet, because we don't yet provide\n\t\t// a way for users to adjust server parameters at\n\t\t// runtime.\n\t\treturn sc.countError(\"over_max_streams_race\", streamError(id, ErrCodeRefusedStream))\n\t}\n\n\tinitialState := stateOpen\n\tif f.StreamEnded() {\n\t\tinitialState = stateHalfClosedRemote\n\t}\n\tst := sc.newStream(id, 0, initialState)\n\n\tif f.HasPriority() {\n\t\tif err := sc.checkPriority(f.StreamID, f.Priority); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsc.writeSched.AdjustStream(st.id, f.Priority)\n\t}\n\n\trw, req, err := sc.newWriterAndRequest(st, f)\n\tif err != nil {\n\t\treturn err\n\t}\n\tst.reqTrailer = req.Trailer\n\tif st.reqTrailer != nil {\n\t\tst.trailer = make(http.Header)\n\t}\n\tst.body = req.Body.(*requestBody).pipe // may be nil\n\tst.declBodyBytes = req.ContentLength\n\n\thandler := sc.handler.ServeHTTP\n\tif f.Truncated {\n\t\t// Their header list was too long. Send a 431 error.\n\t\thandler = handleHeaderListTooLong\n\t} else if err := checkValidHTTP2RequestHeaders(req.Header); err != nil {\n\t\thandler = new400Handler(err)\n\t}\n\n\t// The net/http package sets the read deadline from the\n\t// http.Server.ReadTimeout during the TLS handshake, but then\n\t// passes the connection off to us with the deadline already\n\t// set. Disarm it here after the request headers are read,\n\t// similar to how the http1 server works. Here it's\n\t// technically more like the http1 Server's ReadHeaderTimeout\n\t// (in Go 1.8), though. That's a more sane option anyway.\n\tif sc.hs.ReadTimeout != 0 {\n\t\tsc.conn.SetReadDeadline(time.Time{})\n\t\tst.readDeadline = time.AfterFunc(sc.hs.ReadTimeout, st.onReadTimeout)\n\t}\n\n\treturn sc.scheduleHandler(id, rw, req, handler)\n}\n\nfunc (sc *serverConn) upgradeRequest(req *http.Request) {\n\tsc.serveG.check()\n\tid := uint32(1)\n\tsc.maxClientStreamID = id\n\tst := sc.newStream(id, 0, stateHalfClosedRemote)\n\tst.reqTrailer = req.Trailer\n\tif st.reqTrailer != nil {\n\t\tst.trailer = make(http.Header)\n\t}\n\trw := sc.newResponseWriter(st, req)\n\n\t// Disable any read deadline set by the net/http package\n\t// prior to the upgrade.\n\tif sc.hs.ReadTimeout != 0 {\n\t\tsc.conn.SetReadDeadline(time.Time{})\n\t}\n\n\t// This is the first request on the connection,\n\t// so start the handler directly rather than going\n\t// through scheduleHandler.\n\tsc.curHandlers++\n\tgo sc.runHandler(rw, req, sc.handler.ServeHTTP)\n}\n\nfunc (st *stream) processTrailerHeaders(f *MetaHeadersFrame) error {\n\tsc := st.sc\n\tsc.serveG.check()\n\tif st.gotTrailerHeader {\n\t\treturn sc.countError(\"dup_trailers\", ConnectionError(ErrCodeProtocol))\n\t}\n\tst.gotTrailerHeader = true\n\tif !f.StreamEnded() {\n\t\treturn sc.countError(\"trailers_not_ended\", streamError(st.id, ErrCodeProtocol))\n\t}\n\n\tif len(f.PseudoFields()) > 0 {\n\t\treturn sc.countError(\"trailers_pseudo\", streamError(st.id, ErrCodeProtocol))\n\t}\n\tif st.trailer != nil {\n\t\tfor _, hf := range f.RegularFields() {\n\t\t\tkey := sc.canonicalHeader(hf.Name)\n\t\t\tif !httpguts.ValidTrailerHeader(key) {\n\t\t\t\t// TODO: send more details to the peer somehow. But http2 has\n\t\t\t\t// no way to send debug data at a stream level. Discuss with\n\t\t\t\t// HTTP folk.\n\t\t\t\treturn sc.countError(\"trailers_bogus\", streamError(st.id, ErrCodeProtocol))\n\t\t\t}\n\t\t\tst.trailer[key] = append(st.trailer[key], hf.Value)\n\t\t}\n\t}\n\tst.endStream()\n\treturn nil\n}\n\nfunc (sc *serverConn) checkPriority(streamID uint32, p PriorityParam) error {\n\tif streamID == p.StreamDep {\n\t\t// Section 5.3.1: \"A stream cannot depend on itself. An endpoint MUST treat\n\t\t// this as a stream error (Section 5.4.2) of type PROTOCOL_ERROR.\"\n\t\t// Section 5.3.3 says that a stream can depend on one of its dependencies,\n\t\t// so it's only self-dependencies that are forbidden.\n\t\treturn sc.countError(\"priority\", streamError(streamID, ErrCodeProtocol))\n\t}\n\treturn nil\n}\n\nfunc (sc *serverConn) processPriority(f *PriorityFrame) error {\n\tif err := sc.checkPriority(f.StreamID, f.PriorityParam); err != nil {\n\t\treturn err\n\t}\n\tsc.writeSched.AdjustStream(f.StreamID, f.PriorityParam)\n\treturn nil\n}\n\nfunc (sc *serverConn) newStream(id, pusherID uint32, state streamState) *stream {\n\tsc.serveG.check()\n\tif id == 0 {\n\t\tpanic(\"internal error: cannot create stream with id 0\")\n\t}\n\n\tctx, cancelCtx := context.WithCancel(sc.baseCtx)\n\tst := &stream{\n\t\tsc:        sc,\n\t\tid:        id,\n\t\tstate:     state,\n\t\tctx:       ctx,\n\t\tcancelCtx: cancelCtx,\n\t}\n\tst.cw.Init()\n\tst.flow.conn = &sc.flow // link to conn-level counter\n\tst.flow.add(sc.initialStreamSendWindowSize)\n\tst.inflow.init(sc.srv.initialStreamRecvWindowSize())\n\tif sc.hs.WriteTimeout != 0 {\n\t\tst.writeDeadline = time.AfterFunc(sc.hs.WriteTimeout, st.onWriteTimeout)\n\t}\n\n\tsc.streams[id] = st\n\tsc.writeSched.OpenStream(st.id, OpenStreamOptions{PusherID: pusherID})\n\tif st.isPushed() {\n\t\tsc.curPushedStreams++\n\t} else {\n\t\tsc.curClientStreams++\n\t}\n\tif sc.curOpenStreams() == 1 {\n\t\tsc.setConnState(http.StateActive)\n\t}\n\n\treturn st\n}\n\nfunc (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*responseWriter, *http.Request, error) {\n\tsc.serveG.check()\n\n\trp := requestParam{\n\t\tmethod:    f.PseudoValue(\"method\"),\n\t\tscheme:    f.PseudoValue(\"scheme\"),\n\t\tauthority: f.PseudoValue(\"authority\"),\n\t\tpath:      f.PseudoValue(\"path\"),\n\t}\n\n\tisConnect := rp.method == \"CONNECT\"\n\tif isConnect {\n\t\tif rp.path != \"\" || rp.scheme != \"\" || rp.authority == \"\" {\n\t\t\treturn nil, nil, sc.countError(\"bad_connect\", streamError(f.StreamID, ErrCodeProtocol))\n\t\t}\n\t} else if rp.method == \"\" || rp.path == \"\" || (rp.scheme != \"https\" && rp.scheme != \"http\") {\n\t\t// See 8.1.2.6 Malformed Requests and Responses:\n\t\t//\n\t\t// Malformed requests or responses that are detected\n\t\t// MUST be treated as a stream error (Section 5.4.2)\n\t\t// of type PROTOCOL_ERROR.\"\n\t\t//\n\t\t// 8.1.2.3 Request Pseudo-Header Fields\n\t\t// \"All HTTP/2 requests MUST include exactly one valid\n\t\t// value for the :method, :scheme, and :path\n\t\t// pseudo-header fields\"\n\t\treturn nil, nil, sc.countError(\"bad_path_method\", streamError(f.StreamID, ErrCodeProtocol))\n\t}\n\n\trp.header = make(http.Header)\n\tfor _, hf := range f.RegularFields() {\n\t\trp.header.Add(sc.canonicalHeader(hf.Name), hf.Value)\n\t}\n\tif rp.authority == \"\" {\n\t\trp.authority = rp.header.Get(\"Host\")\n\t}\n\n\trw, req, err := sc.newWriterAndRequestNoBody(st, rp)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tbodyOpen := !f.StreamEnded()\n\tif bodyOpen {\n\t\tif vv, ok := rp.header[\"Content-Length\"]; ok {\n\t\t\tif cl, err := strconv.ParseUint(vv[0], 10, 63); err == nil {\n\t\t\t\treq.ContentLength = int64(cl)\n\t\t\t} else {\n\t\t\t\treq.ContentLength = 0\n\t\t\t}\n\t\t} else {\n\t\t\treq.ContentLength = -1\n\t\t}\n\t\treq.Body.(*requestBody).pipe = &pipe{\n\t\t\tb: &dataBuffer{expected: req.ContentLength},\n\t\t}\n\t}\n\treturn rw, req, nil\n}\n\ntype requestParam struct {\n\tmethod                  string\n\tscheme, authority, path string\n\theader                  http.Header\n}\n\nfunc (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*responseWriter, *http.Request, error) {\n\tsc.serveG.check()\n\n\tvar tlsState *tls.ConnectionState // nil if not scheme https\n\tif rp.scheme == \"https\" {\n\t\ttlsState = sc.tlsState\n\t}\n\n\tneedsContinue := httpguts.HeaderValuesContainsToken(rp.header[\"Expect\"], \"100-continue\")\n\tif needsContinue {\n\t\trp.header.Del(\"Expect\")\n\t}\n\t// Merge Cookie headers into one \"; \"-delimited value.\n\tif cookies := rp.header[\"Cookie\"]; len(cookies) > 1 {\n\t\trp.header.Set(\"Cookie\", strings.Join(cookies, \"; \"))\n\t}\n\n\t// Setup Trailers\n\tvar trailer http.Header\n\tfor _, v := range rp.header[\"Trailer\"] {\n\t\tfor _, key := range strings.Split(v, \",\") {\n\t\t\tkey = http.CanonicalHeaderKey(textproto.TrimString(key))\n\t\t\tswitch key {\n\t\t\tcase \"Transfer-Encoding\", \"Trailer\", \"Content-Length\":\n\t\t\t\t// Bogus. (copy of http1 rules)\n\t\t\t\t// Ignore.\n\t\t\tdefault:\n\t\t\t\tif trailer == nil {\n\t\t\t\t\ttrailer = make(http.Header)\n\t\t\t\t}\n\t\t\t\ttrailer[key] = nil\n\t\t\t}\n\t\t}\n\t}\n\tdelete(rp.header, \"Trailer\")\n\n\tvar url_ *url.URL\n\tvar requestURI string\n\tif rp.method == \"CONNECT\" {\n\t\turl_ = &url.URL{Host: rp.authority}\n\t\trequestURI = rp.authority // mimic HTTP/1 server behavior\n\t} else {\n\t\tvar err error\n\t\turl_, err = url.ParseRequestURI(rp.path)\n\t\tif err != nil {\n\t\t\treturn nil, nil, sc.countError(\"bad_path\", streamError(st.id, ErrCodeProtocol))\n\t\t}\n\t\trequestURI = rp.path\n\t}\n\n\tbody := &requestBody{\n\t\tconn:          sc,\n\t\tstream:        st,\n\t\tneedsContinue: needsContinue,\n\t}\n\treq := &http.Request{\n\t\tMethod:     rp.method,\n\t\tURL:        url_,\n\t\tRemoteAddr: sc.remoteAddrStr,\n\t\tHeader:     rp.header,\n\t\tRequestURI: requestURI,\n\t\tProto:      \"HTTP/2.0\",\n\t\tProtoMajor: 2,\n\t\tProtoMinor: 0,\n\t\tTLS:        tlsState,\n\t\tHost:       rp.authority,\n\t\tBody:       body,\n\t\tTrailer:    trailer,\n\t}\n\treq = req.WithContext(st.ctx)\n\n\trw := sc.newResponseWriter(st, req)\n\treturn rw, req, nil\n}\n\nfunc (sc *serverConn) newResponseWriter(st *stream, req *http.Request) *responseWriter {\n\trws := responseWriterStatePool.Get().(*responseWriterState)\n\tbwSave := rws.bw\n\t*rws = responseWriterState{} // zero all the fields\n\trws.conn = sc\n\trws.bw = bwSave\n\trws.bw.Reset(chunkWriter{rws})\n\trws.stream = st\n\trws.req = req\n\treturn &responseWriter{rws: rws}\n}\n\ntype unstartedHandler struct {\n\tstreamID uint32\n\trw       *responseWriter\n\treq      *http.Request\n\thandler  func(http.ResponseWriter, *http.Request)\n}\n\n// scheduleHandler starts a handler goroutine,\n// or schedules one to start as soon as an existing handler finishes.\nfunc (sc *serverConn) scheduleHandler(streamID uint32, rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) error {\n\tsc.serveG.check()\n\tmaxHandlers := sc.advMaxStreams\n\tif sc.curHandlers < maxHandlers {\n\t\tsc.curHandlers++\n\t\tgo sc.runHandler(rw, req, handler)\n\t\treturn nil\n\t}\n\tif len(sc.unstartedHandlers) > int(4*sc.advMaxStreams) {\n\t\treturn sc.countError(\"too_many_early_resets\", ConnectionError(ErrCodeEnhanceYourCalm))\n\t}\n\tsc.unstartedHandlers = append(sc.unstartedHandlers, unstartedHandler{\n\t\tstreamID: streamID,\n\t\trw:       rw,\n\t\treq:      req,\n\t\thandler:  handler,\n\t})\n\treturn nil\n}\n\nfunc (sc *serverConn) handlerDone() {\n\tsc.serveG.check()\n\tsc.curHandlers--\n\ti := 0\n\tmaxHandlers := sc.advMaxStreams\n\tfor ; i < len(sc.unstartedHandlers); i++ {\n\t\tu := sc.unstartedHandlers[i]\n\t\tif sc.streams[u.streamID] == nil {\n\t\t\t// This stream was reset before its goroutine had a chance to start.\n\t\t\tcontinue\n\t\t}\n\t\tif sc.curHandlers >= maxHandlers {\n\t\t\tbreak\n\t\t}\n\t\tsc.curHandlers++\n\t\tgo sc.runHandler(u.rw, u.req, u.handler)\n\t\tsc.unstartedHandlers[i] = unstartedHandler{} // don't retain references\n\t}\n\tsc.unstartedHandlers = sc.unstartedHandlers[i:]\n\tif len(sc.unstartedHandlers) == 0 {\n\t\tsc.unstartedHandlers = nil\n\t}\n}\n\n// Run on its own goroutine.\nfunc (sc *serverConn) runHandler(rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) {\n\tdefer sc.sendServeMsg(handlerDoneMsg)\n\tdidPanic := true\n\tdefer func() {\n\t\trw.rws.stream.cancelCtx()\n\t\tif req.MultipartForm != nil {\n\t\t\treq.MultipartForm.RemoveAll()\n\t\t}\n\t\tif didPanic {\n\t\t\te := recover()\n\t\t\tsc.writeFrameFromHandler(FrameWriteRequest{\n\t\t\t\twrite:  handlerPanicRST{rw.rws.stream.id},\n\t\t\t\tstream: rw.rws.stream,\n\t\t\t})\n\t\t\t// Same as net/http:\n\t\t\tif e != nil && e != http.ErrAbortHandler {\n\t\t\t\tconst size = 64 << 10\n\t\t\t\tbuf := make([]byte, size)\n\t\t\t\tbuf = buf[:runtime.Stack(buf, false)]\n\t\t\t\tsc.logf(\"http2: panic serving %v: %v\\n%s\", sc.conn.RemoteAddr(), e, buf)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\trw.handlerDone()\n\t}()\n\thandler(rw, req)\n\tdidPanic = false\n}\n\nfunc handleHeaderListTooLong(w http.ResponseWriter, r *http.Request) {\n\t// 10.5.1 Limits on Header Block Size:\n\t// .. \"A server that receives a larger header block than it is\n\t// willing to handle can send an HTTP 431 (Request Header Fields Too\n\t// Large) status code\"\n\tconst statusRequestHeaderFieldsTooLarge = 431 // only in Go 1.6+\n\tw.WriteHeader(statusRequestHeaderFieldsTooLarge)\n\tio.WriteString(w, \"<h1>HTTP Error 431</h1><p>Request Header Field(s) Too Large</p>\")\n}\n\n// called from handler goroutines.\n// h may be nil.\nfunc (sc *serverConn) writeHeaders(st *stream, headerData *writeResHeaders) error {\n\tsc.serveG.checkNotOn() // NOT on\n\tvar errc chan error\n\tif headerData.h != nil {\n\t\t// If there's a header map (which we don't own), so we have to block on\n\t\t// waiting for this frame to be written, so an http.Flush mid-handler\n\t\t// writes out the correct value of keys, before a handler later potentially\n\t\t// mutates it.\n\t\terrc = errChanPool.Get().(chan error)\n\t}\n\tif err := sc.writeFrameFromHandler(FrameWriteRequest{\n\t\twrite:  headerData,\n\t\tstream: st,\n\t\tdone:   errc,\n\t}); err != nil {\n\t\treturn err\n\t}\n\tif errc != nil {\n\t\tselect {\n\t\tcase err := <-errc:\n\t\t\terrChanPool.Put(errc)\n\t\t\treturn err\n\t\tcase <-sc.doneServing:\n\t\t\treturn errClientDisconnected\n\t\tcase <-st.cw:\n\t\t\treturn errStreamClosed\n\t\t}\n\t}\n\treturn nil\n}\n\n// called from handler goroutines.\nfunc (sc *serverConn) write100ContinueHeaders(st *stream) {\n\tsc.writeFrameFromHandler(FrameWriteRequest{\n\t\twrite:  write100ContinueHeadersFrame{st.id},\n\t\tstream: st,\n\t})\n}\n\n// A bodyReadMsg tells the server loop that the http.Handler read n\n// bytes of the DATA from the client on the given stream.\ntype bodyReadMsg struct {\n\tst *stream\n\tn  int\n}\n\n// called from handler goroutines.\n// Notes that the handler for the given stream ID read n bytes of its body\n// and schedules flow control tokens to be sent.\nfunc (sc *serverConn) noteBodyReadFromHandler(st *stream, n int, err error) {\n\tsc.serveG.checkNotOn() // NOT on\n\tif n > 0 {\n\t\tselect {\n\t\tcase sc.bodyReadCh <- bodyReadMsg{st, n}:\n\t\tcase <-sc.doneServing:\n\t\t}\n\t}\n}\n\nfunc (sc *serverConn) noteBodyRead(st *stream, n int) {\n\tsc.serveG.check()\n\tsc.sendWindowUpdate(nil, n) // conn-level\n\tif st.state != stateHalfClosedRemote && st.state != stateClosed {\n\t\t// Don't send this WINDOW_UPDATE if the stream is closed\n\t\t// remotely.\n\t\tsc.sendWindowUpdate(st, n)\n\t}\n}\n\n// st may be nil for conn-level\nfunc (sc *serverConn) sendWindowUpdate32(st *stream, n int32) {\n\tsc.sendWindowUpdate(st, int(n))\n}\n\n// st may be nil for conn-level\nfunc (sc *serverConn) sendWindowUpdate(st *stream, n int) {\n\tsc.serveG.check()\n\tvar streamID uint32\n\tvar send int32\n\tif st == nil {\n\t\tsend = sc.inflow.add(n)\n\t} else {\n\t\tstreamID = st.id\n\t\tsend = st.inflow.add(n)\n\t}\n\tif send == 0 {\n\t\treturn\n\t}\n\tsc.writeFrame(FrameWriteRequest{\n\t\twrite:  writeWindowUpdate{streamID: streamID, n: uint32(send)},\n\t\tstream: st,\n\t})\n}\n\n// requestBody is the Handler's Request.Body type.\n// Read and Close may be called concurrently.\ntype requestBody struct {\n\t_             incomparable\n\tstream        *stream\n\tconn          *serverConn\n\tcloseOnce     sync.Once // for use by Close only\n\tsawEOF        bool      // for use by Read only\n\tpipe          *pipe     // non-nil if we have an HTTP entity message body\n\tneedsContinue bool      // need to send a 100-continue\n}\n\nfunc (b *requestBody) Close() error {\n\tb.closeOnce.Do(func() {\n\t\tif b.pipe != nil {\n\t\t\tb.pipe.BreakWithError(errClosedBody)\n\t\t}\n\t})\n\treturn nil\n}\n\nfunc (b *requestBody) Read(p []byte) (n int, err error) {\n\tif b.needsContinue {\n\t\tb.needsContinue = false\n\t\tb.conn.write100ContinueHeaders(b.stream)\n\t}\n\tif b.pipe == nil || b.sawEOF {\n\t\treturn 0, io.EOF\n\t}\n\tn, err = b.pipe.Read(p)\n\tif err == io.EOF {\n\t\tb.sawEOF = true\n\t}\n\tif b.conn == nil && inTests {\n\t\treturn\n\t}\n\tb.conn.noteBodyReadFromHandler(b.stream, n, err)\n\treturn\n}\n\n// responseWriter is the http.ResponseWriter implementation. It's\n// intentionally small (1 pointer wide) to minimize garbage. The\n// responseWriterState pointer inside is zeroed at the end of a\n// request (in handlerDone) and calls on the responseWriter thereafter\n// simply crash (caller's mistake), but the much larger responseWriterState\n// and buffers are reused between multiple requests.\ntype responseWriter struct {\n\trws *responseWriterState\n}\n\n// Optional http.ResponseWriter interfaces implemented.\nvar (\n\t_ http.CloseNotifier = (*responseWriter)(nil)\n\t_ http.Flusher       = (*responseWriter)(nil)\n\t_ stringWriter       = (*responseWriter)(nil)\n)\n\ntype responseWriterState struct {\n\t// immutable within a request:\n\tstream *stream\n\treq    *http.Request\n\tconn   *serverConn\n\n\t// TODO: adjust buffer writing sizes based on server config, frame size updates from peer, etc\n\tbw *bufio.Writer // writing to a chunkWriter{this *responseWriterState}\n\n\t// mutated by http.Handler goroutine:\n\thandlerHeader http.Header // nil until called\n\tsnapHeader    http.Header // snapshot of handlerHeader at WriteHeader time\n\ttrailers      []string    // set in writeChunk\n\tstatus        int         // status code passed to WriteHeader\n\twroteHeader   bool        // WriteHeader called (explicitly or implicitly). Not necessarily sent to user yet.\n\tsentHeader    bool        // have we sent the header frame?\n\thandlerDone   bool        // handler has finished\n\n\tsentContentLen int64 // non-zero if handler set a Content-Length header\n\twroteBytes     int64\n\n\tcloseNotifierMu sync.Mutex // guards closeNotifierCh\n\tcloseNotifierCh chan bool  // nil until first used\n}\n\ntype chunkWriter struct{ rws *responseWriterState }\n\nfunc (cw chunkWriter) Write(p []byte) (n int, err error) {\n\tn, err = cw.rws.writeChunk(p)\n\tif err == errStreamClosed {\n\t\t// If writing failed because the stream has been closed,\n\t\t// return the reason it was closed.\n\t\terr = cw.rws.stream.closeErr\n\t}\n\treturn n, err\n}\n\nfunc (rws *responseWriterState) hasTrailers() bool { return len(rws.trailers) > 0 }\n\nfunc (rws *responseWriterState) hasNonemptyTrailers() bool {\n\tfor _, trailer := range rws.trailers {\n\t\tif _, ok := rws.handlerHeader[trailer]; ok {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// declareTrailer is called for each Trailer header when the\n// response header is written. It notes that a header will need to be\n// written in the trailers at the end of the response.\nfunc (rws *responseWriterState) declareTrailer(k string) {\n\tk = http.CanonicalHeaderKey(k)\n\tif !httpguts.ValidTrailerHeader(k) {\n\t\t// Forbidden by RFC 7230, section 4.1.2.\n\t\trws.conn.logf(\"ignoring invalid trailer %q\", k)\n\t\treturn\n\t}\n\tif !strSliceContains(rws.trailers, k) {\n\t\trws.trailers = append(rws.trailers, k)\n\t}\n}\n\n// writeChunk writes chunks from the bufio.Writer. But because\n// bufio.Writer may bypass its chunking, sometimes p may be\n// arbitrarily large.\n//\n// writeChunk is also responsible (on the first chunk) for sending the\n// HEADER response.\nfunc (rws *responseWriterState) writeChunk(p []byte) (n int, err error) {\n\tif !rws.wroteHeader {\n\t\trws.writeHeader(200)\n\t}\n\n\tif rws.handlerDone {\n\t\trws.promoteUndeclaredTrailers()\n\t}\n\n\tisHeadResp := rws.req.Method == \"HEAD\"\n\tif !rws.sentHeader {\n\t\trws.sentHeader = true\n\t\tvar ctype, clen string\n\t\tif clen = rws.snapHeader.Get(\"Content-Length\"); clen != \"\" {\n\t\t\trws.snapHeader.Del(\"Content-Length\")\n\t\t\tif cl, err := strconv.ParseUint(clen, 10, 63); err == nil {\n\t\t\t\trws.sentContentLen = int64(cl)\n\t\t\t} else {\n\t\t\t\tclen = \"\"\n\t\t\t}\n\t\t}\n\t\t_, hasContentLength := rws.snapHeader[\"Content-Length\"]\n\t\tif !hasContentLength && clen == \"\" && rws.handlerDone && bodyAllowedForStatus(rws.status) && (len(p) > 0 || !isHeadResp) {\n\t\t\tclen = strconv.Itoa(len(p))\n\t\t}\n\t\t_, hasContentType := rws.snapHeader[\"Content-Type\"]\n\t\t// If the Content-Encoding is non-blank, we shouldn't\n\t\t// sniff the body. See Issue golang.org/issue/31753.\n\t\tce := rws.snapHeader.Get(\"Content-Encoding\")\n\t\thasCE := len(ce) > 0\n\t\tif !hasCE && !hasContentType && bodyAllowedForStatus(rws.status) && len(p) > 0 {\n\t\t\tctype = http.DetectContentType(p)\n\t\t}\n\t\tvar date string\n\t\tif _, ok := rws.snapHeader[\"Date\"]; !ok {\n\t\t\t// TODO(bradfitz): be faster here, like net/http? measure.\n\t\t\tdate = time.Now().UTC().Format(http.TimeFormat)\n\t\t}\n\n\t\tfor _, v := range rws.snapHeader[\"Trailer\"] {\n\t\t\tforeachHeaderElement(v, rws.declareTrailer)\n\t\t}\n\n\t\t// \"Connection\" headers aren't allowed in HTTP/2 (RFC 7540, 8.1.2.2),\n\t\t// but respect \"Connection\" == \"close\" to mean sending a GOAWAY and tearing\n\t\t// down the TCP connection when idle, like we do for HTTP/1.\n\t\t// TODO: remove more Connection-specific header fields here, in addition\n\t\t// to \"Connection\".\n\t\tif _, ok := rws.snapHeader[\"Connection\"]; ok {\n\t\t\tv := rws.snapHeader.Get(\"Connection\")\n\t\t\tdelete(rws.snapHeader, \"Connection\")\n\t\t\tif v == \"close\" {\n\t\t\t\trws.conn.startGracefulShutdown()\n\t\t\t}\n\t\t}\n\n\t\tendStream := (rws.handlerDone && !rws.hasTrailers() && len(p) == 0) || isHeadResp\n\t\terr = rws.conn.writeHeaders(rws.stream, &writeResHeaders{\n\t\t\tstreamID:      rws.stream.id,\n\t\t\thttpResCode:   rws.status,\n\t\t\th:             rws.snapHeader,\n\t\t\tendStream:     endStream,\n\t\t\tcontentType:   ctype,\n\t\t\tcontentLength: clen,\n\t\t\tdate:          date,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tif endStream {\n\t\t\treturn 0, nil\n\t\t}\n\t}\n\tif isHeadResp {\n\t\treturn len(p), nil\n\t}\n\tif len(p) == 0 && !rws.handlerDone {\n\t\treturn 0, nil\n\t}\n\n\t// only send trailers if they have actually been defined by the\n\t// server handler.\n\thasNonemptyTrailers := rws.hasNonemptyTrailers()\n\tendStream := rws.handlerDone && !hasNonemptyTrailers\n\tif len(p) > 0 || endStream {\n\t\t// only send a 0 byte DATA frame if we're ending the stream.\n\t\tif err := rws.conn.writeDataFromHandler(rws.stream, p, endStream); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\n\tif rws.handlerDone && hasNonemptyTrailers {\n\t\terr = rws.conn.writeHeaders(rws.stream, &writeResHeaders{\n\t\t\tstreamID:  rws.stream.id,\n\t\t\th:         rws.handlerHeader,\n\t\t\ttrailers:  rws.trailers,\n\t\t\tendStream: true,\n\t\t})\n\t\treturn len(p), err\n\t}\n\treturn len(p), nil\n}\n\n// TrailerPrefix is a magic prefix for ResponseWriter.Header map keys\n// that, if present, signals that the map entry is actually for\n// the response trailers, and not the response headers. The prefix\n// is stripped after the ServeHTTP call finishes and the values are\n// sent in the trailers.\n//\n// This mechanism is intended only for trailers that are not known\n// prior to the headers being written. If the set of trailers is fixed\n// or known before the header is written, the normal Go trailers mechanism\n// is preferred:\n//\n//\thttps://golang.org/pkg/net/http/#ResponseWriter\n//\thttps://golang.org/pkg/net/http/#example_ResponseWriter_trailers\nconst TrailerPrefix = \"Trailer:\"\n\n// promoteUndeclaredTrailers permits http.Handlers to set trailers\n// after the header has already been flushed. Because the Go\n// ResponseWriter interface has no way to set Trailers (only the\n// Header), and because we didn't want to expand the ResponseWriter\n// interface, and because nobody used trailers, and because RFC 7230\n// says you SHOULD (but not must) predeclare any trailers in the\n// header, the official ResponseWriter rules said trailers in Go must\n// be predeclared, and then we reuse the same ResponseWriter.Header()\n// map to mean both Headers and Trailers. When it's time to write the\n// Trailers, we pick out the fields of Headers that were declared as\n// trailers. That worked for a while, until we found the first major\n// user of Trailers in the wild: gRPC (using them only over http2),\n// and gRPC libraries permit setting trailers mid-stream without\n// predeclaring them. So: change of plans. We still permit the old\n// way, but we also permit this hack: if a Header() key begins with\n// \"Trailer:\", the suffix of that key is a Trailer. Because ':' is an\n// invalid token byte anyway, there is no ambiguity. (And it's already\n// filtered out) It's mildly hacky, but not terrible.\n//\n// This method runs after the Handler is done and promotes any Header\n// fields to be trailers.\nfunc (rws *responseWriterState) promoteUndeclaredTrailers() {\n\tfor k, vv := range rws.handlerHeader {\n\t\tif !strings.HasPrefix(k, TrailerPrefix) {\n\t\t\tcontinue\n\t\t}\n\t\ttrailerKey := strings.TrimPrefix(k, TrailerPrefix)\n\t\trws.declareTrailer(trailerKey)\n\t\trws.handlerHeader[http.CanonicalHeaderKey(trailerKey)] = vv\n\t}\n\n\tif len(rws.trailers) > 1 {\n\t\tsorter := sorterPool.Get().(*sorter)\n\t\tsorter.SortStrings(rws.trailers)\n\t\tsorterPool.Put(sorter)\n\t}\n}\n\nfunc (w *responseWriter) SetReadDeadline(deadline time.Time) error {\n\tst := w.rws.stream\n\tif !deadline.IsZero() && deadline.Before(time.Now()) {\n\t\t// If we're setting a deadline in the past, reset the stream immediately\n\t\t// so writes after SetWriteDeadline returns will fail.\n\t\tst.onReadTimeout()\n\t\treturn nil\n\t}\n\tw.rws.conn.sendServeMsg(func(sc *serverConn) {\n\t\tif st.readDeadline != nil {\n\t\t\tif !st.readDeadline.Stop() {\n\t\t\t\t// Deadline already exceeded, or stream has been closed.\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tif deadline.IsZero() {\n\t\t\tst.readDeadline = nil\n\t\t} else if st.readDeadline == nil {\n\t\t\tst.readDeadline = time.AfterFunc(deadline.Sub(time.Now()), st.onReadTimeout)\n\t\t} else {\n\t\t\tst.readDeadline.Reset(deadline.Sub(time.Now()))\n\t\t}\n\t})\n\treturn nil\n}\n\nfunc (w *responseWriter) SetWriteDeadline(deadline time.Time) error {\n\tst := w.rws.stream\n\tif !deadline.IsZero() && deadline.Before(time.Now()) {\n\t\t// If we're setting a deadline in the past, reset the stream immediately\n\t\t// so writes after SetWriteDeadline returns will fail.\n\t\tst.onWriteTimeout()\n\t\treturn nil\n\t}\n\tw.rws.conn.sendServeMsg(func(sc *serverConn) {\n\t\tif st.writeDeadline != nil {\n\t\t\tif !st.writeDeadline.Stop() {\n\t\t\t\t// Deadline already exceeded, or stream has been closed.\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tif deadline.IsZero() {\n\t\t\tst.writeDeadline = nil\n\t\t} else if st.writeDeadline == nil {\n\t\t\tst.writeDeadline = time.AfterFunc(deadline.Sub(time.Now()), st.onWriteTimeout)\n\t\t} else {\n\t\t\tst.writeDeadline.Reset(deadline.Sub(time.Now()))\n\t\t}\n\t})\n\treturn nil\n}\n\nfunc (w *responseWriter) Flush() {\n\tw.FlushError()\n}\n\nfunc (w *responseWriter) FlushError() error {\n\trws := w.rws\n\tif rws == nil {\n\t\tpanic(\"Header called after Handler finished\")\n\t}\n\tvar err error\n\tif rws.bw.Buffered() > 0 {\n\t\terr = rws.bw.Flush()\n\t} else {\n\t\t// The bufio.Writer won't call chunkWriter.Write\n\t\t// (writeChunk with zero bytes), so we have to do it\n\t\t// ourselves to force the HTTP response header and/or\n\t\t// final DATA frame (with END_STREAM) to be sent.\n\t\t_, err = chunkWriter{rws}.Write(nil)\n\t\tif err == nil {\n\t\t\tselect {\n\t\t\tcase <-rws.stream.cw:\n\t\t\t\terr = rws.stream.closeErr\n\t\t\tdefault:\n\t\t\t}\n\t\t}\n\t}\n\treturn err\n}\n\nfunc (w *responseWriter) CloseNotify() <-chan bool {\n\trws := w.rws\n\tif rws == nil {\n\t\tpanic(\"CloseNotify called after Handler finished\")\n\t}\n\trws.closeNotifierMu.Lock()\n\tch := rws.closeNotifierCh\n\tif ch == nil {\n\t\tch = make(chan bool, 1)\n\t\trws.closeNotifierCh = ch\n\t\tcw := rws.stream.cw\n\t\tgo func() {\n\t\t\tcw.Wait() // wait for close\n\t\t\tch <- true\n\t\t}()\n\t}\n\trws.closeNotifierMu.Unlock()\n\treturn ch\n}\n\nfunc (w *responseWriter) Header() http.Header {\n\trws := w.rws\n\tif rws == nil {\n\t\tpanic(\"Header called after Handler finished\")\n\t}\n\tif rws.handlerHeader == nil {\n\t\trws.handlerHeader = make(http.Header)\n\t}\n\treturn rws.handlerHeader\n}\n\n// checkWriteHeaderCode is a copy of net/http's checkWriteHeaderCode.\nfunc checkWriteHeaderCode(code int) {\n\t// Issue 22880: require valid WriteHeader status codes.\n\t// For now we only enforce that it's three digits.\n\t// In the future we might block things over 599 (600 and above aren't defined\n\t// at http://httpwg.org/specs/rfc7231.html#status.codes).\n\t// But for now any three digits.\n\t//\n\t// We used to send \"HTTP/1.1 000 0\" on the wire in responses but there's\n\t// no equivalent bogus thing we can realistically send in HTTP/2,\n\t// so we'll consistently panic instead and help people find their bugs\n\t// early. (We can't return an error from WriteHeader even if we wanted to.)\n\tif code < 100 || code > 999 {\n\t\tpanic(fmt.Sprintf(\"invalid WriteHeader code %v\", code))\n\t}\n}\n\nfunc (w *responseWriter) WriteHeader(code int) {\n\trws := w.rws\n\tif rws == nil {\n\t\tpanic(\"WriteHeader called after Handler finished\")\n\t}\n\trws.writeHeader(code)\n}\n\nfunc (rws *responseWriterState) writeHeader(code int) {\n\tif rws.wroteHeader {\n\t\treturn\n\t}\n\n\tcheckWriteHeaderCode(code)\n\n\t// Handle informational headers\n\tif code >= 100 && code <= 199 {\n\t\t// Per RFC 8297 we must not clear the current header map\n\t\th := rws.handlerHeader\n\n\t\t_, cl := h[\"Content-Length\"]\n\t\t_, te := h[\"Transfer-Encoding\"]\n\t\tif cl || te {\n\t\t\th = h.Clone()\n\t\t\th.Del(\"Content-Length\")\n\t\t\th.Del(\"Transfer-Encoding\")\n\t\t}\n\n\t\trws.conn.writeHeaders(rws.stream, &writeResHeaders{\n\t\t\tstreamID:    rws.stream.id,\n\t\t\thttpResCode: code,\n\t\t\th:           h,\n\t\t\tendStream:   rws.handlerDone && !rws.hasTrailers(),\n\t\t})\n\n\t\treturn\n\t}\n\n\trws.wroteHeader = true\n\trws.status = code\n\tif len(rws.handlerHeader) > 0 {\n\t\trws.snapHeader = cloneHeader(rws.handlerHeader)\n\t}\n}\n\nfunc cloneHeader(h http.Header) http.Header {\n\th2 := make(http.Header, len(h))\n\tfor k, vv := range h {\n\t\tvv2 := make([]string, len(vv))\n\t\tcopy(vv2, vv)\n\t\th2[k] = vv2\n\t}\n\treturn h2\n}\n\n// The Life Of A Write is like this:\n//\n// * Handler calls w.Write or w.WriteString ->\n// * -> rws.bw (*bufio.Writer) ->\n// * (Handler might call Flush)\n// * -> chunkWriter{rws}\n// * -> responseWriterState.writeChunk(p []byte)\n// * -> responseWriterState.writeChunk (most of the magic; see comment there)\nfunc (w *responseWriter) Write(p []byte) (n int, err error) {\n\treturn w.write(len(p), p, \"\")\n}\n\nfunc (w *responseWriter) WriteString(s string) (n int, err error) {\n\treturn w.write(len(s), nil, s)\n}\n\n// either dataB or dataS is non-zero.\nfunc (w *responseWriter) write(lenData int, dataB []byte, dataS string) (n int, err error) {\n\trws := w.rws\n\tif rws == nil {\n\t\tpanic(\"Write called after Handler finished\")\n\t}\n\tif !rws.wroteHeader {\n\t\tw.WriteHeader(200)\n\t}\n\tif !bodyAllowedForStatus(rws.status) {\n\t\treturn 0, http.ErrBodyNotAllowed\n\t}\n\trws.wroteBytes += int64(len(dataB)) + int64(len(dataS)) // only one can be set\n\tif rws.sentContentLen != 0 && rws.wroteBytes > rws.sentContentLen {\n\t\t// TODO: send a RST_STREAM\n\t\treturn 0, errors.New(\"http2: handler wrote more than declared Content-Length\")\n\t}\n\n\tif dataB != nil {\n\t\treturn rws.bw.Write(dataB)\n\t} else {\n\t\treturn rws.bw.WriteString(dataS)\n\t}\n}\n\nfunc (w *responseWriter) handlerDone() {\n\trws := w.rws\n\trws.handlerDone = true\n\tw.Flush()\n\tw.rws = nil\n\tresponseWriterStatePool.Put(rws)\n}\n\n// Push errors.\nvar (\n\tErrRecursivePush    = errors.New(\"http2: recursive push not allowed\")\n\tErrPushLimitReached = errors.New(\"http2: push would exceed peer's SETTINGS_MAX_CONCURRENT_STREAMS\")\n)\n\nvar _ http.Pusher = (*responseWriter)(nil)\n\nfunc (w *responseWriter) Push(target string, opts *http.PushOptions) error {\n\tst := w.rws.stream\n\tsc := st.sc\n\tsc.serveG.checkNotOn()\n\n\t// No recursive pushes: \"PUSH_PROMISE frames MUST only be sent on a peer-initiated stream.\"\n\t// http://tools.ietf.org/html/rfc7540#section-6.6\n\tif st.isPushed() {\n\t\treturn ErrRecursivePush\n\t}\n\n\tif opts == nil {\n\t\topts = new(http.PushOptions)\n\t}\n\n\t// Default options.\n\tif opts.Method == \"\" {\n\t\topts.Method = \"GET\"\n\t}\n\tif opts.Header == nil {\n\t\topts.Header = http.Header{}\n\t}\n\twantScheme := \"http\"\n\tif w.rws.req.TLS != nil {\n\t\twantScheme = \"https\"\n\t}\n\n\t// Validate the request.\n\tu, err := url.Parse(target)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif u.Scheme == \"\" {\n\t\tif !strings.HasPrefix(target, \"/\") {\n\t\t\treturn fmt.Errorf(\"target must be an absolute URL or an absolute path: %q\", target)\n\t\t}\n\t\tu.Scheme = wantScheme\n\t\tu.Host = w.rws.req.Host\n\t} else {\n\t\tif u.Scheme != wantScheme {\n\t\t\treturn fmt.Errorf(\"cannot push URL with scheme %q from request with scheme %q\", u.Scheme, wantScheme)\n\t\t}\n\t\tif u.Host == \"\" {\n\t\t\treturn errors.New(\"URL must have a host\")\n\t\t}\n\t}\n\tfor k := range opts.Header {\n\t\tif strings.HasPrefix(k, \":\") {\n\t\t\treturn fmt.Errorf(\"promised request headers cannot include pseudo header %q\", k)\n\t\t}\n\t\t// These headers are meaningful only if the request has a body,\n\t\t// but PUSH_PROMISE requests cannot have a body.\n\t\t// http://tools.ietf.org/html/rfc7540#section-8.2\n\t\t// Also disallow Host, since the promised URL must be absolute.\n\t\tif asciiEqualFold(k, \"content-length\") ||\n\t\t\tasciiEqualFold(k, \"content-encoding\") ||\n\t\t\tasciiEqualFold(k, \"trailer\") ||\n\t\t\tasciiEqualFold(k, \"te\") ||\n\t\t\tasciiEqualFold(k, \"expect\") ||\n\t\t\tasciiEqualFold(k, \"host\") {\n\t\t\treturn fmt.Errorf(\"promised request headers cannot include %q\", k)\n\t\t}\n\t}\n\tif err := checkValidHTTP2RequestHeaders(opts.Header); err != nil {\n\t\treturn err\n\t}\n\n\t// The RFC effectively limits promised requests to GET and HEAD:\n\t// \"Promised requests MUST be cacheable [GET, HEAD, or POST], and MUST be safe [GET or HEAD]\"\n\t// http://tools.ietf.org/html/rfc7540#section-8.2\n\tif opts.Method != \"GET\" && opts.Method != \"HEAD\" {\n\t\treturn fmt.Errorf(\"method %q must be GET or HEAD\", opts.Method)\n\t}\n\n\tmsg := &startPushRequest{\n\t\tparent: st,\n\t\tmethod: opts.Method,\n\t\turl:    u,\n\t\theader: cloneHeader(opts.Header),\n\t\tdone:   errChanPool.Get().(chan error),\n\t}\n\n\tselect {\n\tcase <-sc.doneServing:\n\t\treturn errClientDisconnected\n\tcase <-st.cw:\n\t\treturn errStreamClosed\n\tcase sc.serveMsgCh <- msg:\n\t}\n\n\tselect {\n\tcase <-sc.doneServing:\n\t\treturn errClientDisconnected\n\tcase <-st.cw:\n\t\treturn errStreamClosed\n\tcase err := <-msg.done:\n\t\terrChanPool.Put(msg.done)\n\t\treturn err\n\t}\n}\n\ntype startPushRequest struct {\n\tparent *stream\n\tmethod string\n\turl    *url.URL\n\theader http.Header\n\tdone   chan error\n}\n\nfunc (sc *serverConn) startPush(msg *startPushRequest) {\n\tsc.serveG.check()\n\n\t// http://tools.ietf.org/html/rfc7540#section-6.6.\n\t// PUSH_PROMISE frames MUST only be sent on a peer-initiated stream that\n\t// is in either the \"open\" or \"half-closed (remote)\" state.\n\tif msg.parent.state != stateOpen && msg.parent.state != stateHalfClosedRemote {\n\t\t// responseWriter.Push checks that the stream is peer-initiated.\n\t\tmsg.done <- errStreamClosed\n\t\treturn\n\t}\n\n\t// http://tools.ietf.org/html/rfc7540#section-6.6.\n\tif !sc.pushEnabled {\n\t\tmsg.done <- http.ErrNotSupported\n\t\treturn\n\t}\n\n\t// PUSH_PROMISE frames must be sent in increasing order by stream ID, so\n\t// we allocate an ID for the promised stream lazily, when the PUSH_PROMISE\n\t// is written. Once the ID is allocated, we start the request handler.\n\tallocatePromisedID := func() (uint32, error) {\n\t\tsc.serveG.check()\n\n\t\t// Check this again, just in case. Technically, we might have received\n\t\t// an updated SETTINGS by the time we got around to writing this frame.\n\t\tif !sc.pushEnabled {\n\t\t\treturn 0, http.ErrNotSupported\n\t\t}\n\t\t// http://tools.ietf.org/html/rfc7540#section-6.5.2.\n\t\tif sc.curPushedStreams+1 > sc.clientMaxStreams {\n\t\t\treturn 0, ErrPushLimitReached\n\t\t}\n\n\t\t// http://tools.ietf.org/html/rfc7540#section-5.1.1.\n\t\t// Streams initiated by the server MUST use even-numbered identifiers.\n\t\t// A server that is unable to establish a new stream identifier can send a GOAWAY\n\t\t// frame so that the client is forced to open a new connection for new streams.\n\t\tif sc.maxPushPromiseID+2 >= 1<<31 {\n\t\t\tsc.startGracefulShutdownInternal()\n\t\t\treturn 0, ErrPushLimitReached\n\t\t}\n\t\tsc.maxPushPromiseID += 2\n\t\tpromisedID := sc.maxPushPromiseID\n\n\t\t// http://tools.ietf.org/html/rfc7540#section-8.2.\n\t\t// Strictly speaking, the new stream should start in \"reserved (local)\", then\n\t\t// transition to \"half closed (remote)\" after sending the initial HEADERS, but\n\t\t// we start in \"half closed (remote)\" for simplicity.\n\t\t// See further comments at the definition of stateHalfClosedRemote.\n\t\tpromised := sc.newStream(promisedID, msg.parent.id, stateHalfClosedRemote)\n\t\trw, req, err := sc.newWriterAndRequestNoBody(promised, requestParam{\n\t\t\tmethod:    msg.method,\n\t\t\tscheme:    msg.url.Scheme,\n\t\t\tauthority: msg.url.Host,\n\t\t\tpath:      msg.url.RequestURI(),\n\t\t\theader:    cloneHeader(msg.header), // clone since handler runs concurrently with writing the PUSH_PROMISE\n\t\t})\n\t\tif err != nil {\n\t\t\t// Should not happen, since we've already validated msg.url.\n\t\t\tpanic(fmt.Sprintf(\"newWriterAndRequestNoBody(%+v): %v\", msg.url, err))\n\t\t}\n\n\t\tsc.curHandlers++\n\t\tgo sc.runHandler(rw, req, sc.handler.ServeHTTP)\n\t\treturn promisedID, nil\n\t}\n\n\tsc.writeFrame(FrameWriteRequest{\n\t\twrite: &writePushPromise{\n\t\t\tstreamID:           msg.parent.id,\n\t\t\tmethod:             msg.method,\n\t\t\turl:                msg.url,\n\t\t\th:                  msg.header,\n\t\t\tallocatePromisedID: allocatePromisedID,\n\t\t},\n\t\tstream: msg.parent,\n\t\tdone:   msg.done,\n\t})\n}\n\n// foreachHeaderElement splits v according to the \"#rule\" construction\n// in RFC 7230 section 7 and calls fn for each non-empty element.\nfunc foreachHeaderElement(v string, fn func(string)) {\n\tv = textproto.TrimString(v)\n\tif v == \"\" {\n\t\treturn\n\t}\n\tif !strings.Contains(v, \",\") {\n\t\tfn(v)\n\t\treturn\n\t}\n\tfor _, f := range strings.Split(v, \",\") {\n\t\tif f = textproto.TrimString(f); f != \"\" {\n\t\t\tfn(f)\n\t\t}\n\t}\n}\n\n// From http://httpwg.org/specs/rfc7540.html#rfc.section.8.1.2.2\nvar connHeaders = []string{\n\t\"Connection\",\n\t\"Keep-Alive\",\n\t\"Proxy-Connection\",\n\t\"Transfer-Encoding\",\n\t\"Upgrade\",\n}\n\n// checkValidHTTP2RequestHeaders checks whether h is a valid HTTP/2 request,\n// per RFC 7540 Section 8.1.2.2.\n// The returned error is reported to users.\nfunc checkValidHTTP2RequestHeaders(h http.Header) error {\n\tfor _, k := range connHeaders {\n\t\tif _, ok := h[k]; ok {\n\t\t\treturn fmt.Errorf(\"request header %q is not valid in HTTP/2\", k)\n\t\t}\n\t}\n\tte := h[\"Te\"]\n\tif len(te) > 0 && (len(te) > 1 || (te[0] != \"trailers\" && te[0] != \"\")) {\n\t\treturn errors.New(`request header \"TE\" may only be \"trailers\" in HTTP/2`)\n\t}\n\treturn nil\n}\n\nfunc new400Handler(err error) http.HandlerFunc {\n\treturn func(w http.ResponseWriter, r *http.Request) {\n\t\thttp.Error(w, err.Error(), http.StatusBadRequest)\n\t}\n}\n\n// h1ServerKeepAlivesDisabled reports whether hs has its keep-alives\n// disabled. See comments on h1ServerShutdownChan above for why\n// the code is written this way.\nfunc h1ServerKeepAlivesDisabled(hs *http.Server) bool {\n\tvar x interface{} = hs\n\ttype I interface {\n\t\tdoKeepAlives() bool\n\t}\n\tif hs, ok := x.(I); ok {\n\t\treturn !hs.doKeepAlives()\n\t}\n\treturn false\n}\n\nfunc (sc *serverConn) countError(name string, err error) error {\n\tif sc == nil || sc.srv == nil {\n\t\treturn err\n\t}\n\tf := sc.srv.CountError\n\tif f == nil {\n\t\treturn err\n\t}\n\tvar typ string\n\tvar code ErrCode\n\tswitch e := err.(type) {\n\tcase ConnectionError:\n\t\ttyp = \"conn\"\n\t\tcode = ErrCode(e)\n\tcase StreamError:\n\t\ttyp = \"stream\"\n\t\tcode = ErrCode(e.Code)\n\tdefault:\n\t\treturn err\n\t}\n\tcodeStr := errCodeName[code]\n\tif codeStr == \"\" {\n\t\tcodeStr = strconv.Itoa(int(code))\n\t}\n\tf(fmt.Sprintf(\"%s_%s_%s\", typ, codeStr, name))\n\treturn err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/transport.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Transport code.\n\npackage http2\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"context\"\n\t\"crypto/rand\"\n\t\"crypto/tls\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/fs\"\n\t\"log\"\n\t\"math\"\n\t\"math/bits\"\n\tmathrand \"math/rand\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/http/httptrace\"\n\t\"net/textproto\"\n\t\"os\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"golang.org/x/net/http/httpguts\"\n\t\"golang.org/x/net/http2/hpack\"\n\t\"golang.org/x/net/idna\"\n)\n\nconst (\n\t// transportDefaultConnFlow is how many connection-level flow control\n\t// tokens we give the server at start-up, past the default 64k.\n\ttransportDefaultConnFlow = 1 << 30\n\n\t// transportDefaultStreamFlow is how many stream-level flow\n\t// control tokens we announce to the peer, and how many bytes\n\t// we buffer per stream.\n\ttransportDefaultStreamFlow = 4 << 20\n\n\tdefaultUserAgent = \"Go-http-client/2.0\"\n\n\t// initialMaxConcurrentStreams is a connections maxConcurrentStreams until\n\t// it's received servers initial SETTINGS frame, which corresponds with the\n\t// spec's minimum recommended value.\n\tinitialMaxConcurrentStreams = 100\n\n\t// defaultMaxConcurrentStreams is a connections default maxConcurrentStreams\n\t// if the server doesn't include one in its initial SETTINGS frame.\n\tdefaultMaxConcurrentStreams = 1000\n)\n\n// Transport is an HTTP/2 Transport.\n//\n// A Transport internally caches connections to servers. It is safe\n// for concurrent use by multiple goroutines.\ntype Transport struct {\n\t// DialTLSContext specifies an optional dial function with context for\n\t// creating TLS connections for requests.\n\t//\n\t// If DialTLSContext and DialTLS is nil, tls.Dial is used.\n\t//\n\t// If the returned net.Conn has a ConnectionState method like tls.Conn,\n\t// it will be used to set http.Response.TLS.\n\tDialTLSContext func(ctx context.Context, network, addr string, cfg *tls.Config) (net.Conn, error)\n\n\t// DialTLS specifies an optional dial function for creating\n\t// TLS connections for requests.\n\t//\n\t// If DialTLSContext and DialTLS is nil, tls.Dial is used.\n\t//\n\t// Deprecated: Use DialTLSContext instead, which allows the transport\n\t// to cancel dials as soon as they are no longer needed.\n\t// If both are set, DialTLSContext takes priority.\n\tDialTLS func(network, addr string, cfg *tls.Config) (net.Conn, error)\n\n\t// TLSClientConfig specifies the TLS configuration to use with\n\t// tls.Client. If nil, the default configuration is used.\n\tTLSClientConfig *tls.Config\n\n\t// ConnPool optionally specifies an alternate connection pool to use.\n\t// If nil, the default is used.\n\tConnPool ClientConnPool\n\n\t// DisableCompression, if true, prevents the Transport from\n\t// requesting compression with an \"Accept-Encoding: gzip\"\n\t// request header when the Request contains no existing\n\t// Accept-Encoding value. If the Transport requests gzip on\n\t// its own and gets a gzipped response, it's transparently\n\t// decoded in the Response.Body. However, if the user\n\t// explicitly requested gzip it is not automatically\n\t// uncompressed.\n\tDisableCompression bool\n\n\t// AllowHTTP, if true, permits HTTP/2 requests using the insecure,\n\t// plain-text \"http\" scheme. Note that this does not enable h2c support.\n\tAllowHTTP bool\n\n\t// MaxHeaderListSize is the http2 SETTINGS_MAX_HEADER_LIST_SIZE to\n\t// send in the initial settings frame. It is how many bytes\n\t// of response headers are allowed. Unlike the http2 spec, zero here\n\t// means to use a default limit (currently 10MB). If you actually\n\t// want to advertise an unlimited value to the peer, Transport\n\t// interprets the highest possible value here (0xffffffff or 1<<32-1)\n\t// to mean no limit.\n\tMaxHeaderListSize uint32\n\n\t// MaxReadFrameSize is the http2 SETTINGS_MAX_FRAME_SIZE to send in the\n\t// initial settings frame. It is the size in bytes of the largest frame\n\t// payload that the sender is willing to receive. If 0, no setting is\n\t// sent, and the value is provided by the peer, which should be 16384\n\t// according to the spec:\n\t// https://datatracker.ietf.org/doc/html/rfc7540#section-6.5.2.\n\t// Values are bounded in the range 16k to 16M.\n\tMaxReadFrameSize uint32\n\n\t// MaxDecoderHeaderTableSize optionally specifies the http2\n\t// SETTINGS_HEADER_TABLE_SIZE to send in the initial settings frame. It\n\t// informs the remote endpoint of the maximum size of the header compression\n\t// table used to decode header blocks, in octets. If zero, the default value\n\t// of 4096 is used.\n\tMaxDecoderHeaderTableSize uint32\n\n\t// MaxEncoderHeaderTableSize optionally specifies an upper limit for the\n\t// header compression table used for encoding request headers. Received\n\t// SETTINGS_HEADER_TABLE_SIZE settings are capped at this limit. If zero,\n\t// the default value of 4096 is used.\n\tMaxEncoderHeaderTableSize uint32\n\n\t// StrictMaxConcurrentStreams controls whether the server's\n\t// SETTINGS_MAX_CONCURRENT_STREAMS should be respected\n\t// globally. If false, new TCP connections are created to the\n\t// server as needed to keep each under the per-connection\n\t// SETTINGS_MAX_CONCURRENT_STREAMS limit. If true, the\n\t// server's SETTINGS_MAX_CONCURRENT_STREAMS is interpreted as\n\t// a global limit and callers of RoundTrip block when needed,\n\t// waiting for their turn.\n\tStrictMaxConcurrentStreams bool\n\n\t// ReadIdleTimeout is the timeout after which a health check using ping\n\t// frame will be carried out if no frame is received on the connection.\n\t// Note that a ping response will is considered a received frame, so if\n\t// there is no other traffic on the connection, the health check will\n\t// be performed every ReadIdleTimeout interval.\n\t// If zero, no health check is performed.\n\tReadIdleTimeout time.Duration\n\n\t// PingTimeout is the timeout after which the connection will be closed\n\t// if a response to Ping is not received.\n\t// Defaults to 15s.\n\tPingTimeout time.Duration\n\n\t// WriteByteTimeout is the timeout after which the connection will be\n\t// closed no data can be written to it. The timeout begins when data is\n\t// available to write, and is extended whenever any bytes are written.\n\tWriteByteTimeout time.Duration\n\n\t// CountError, if non-nil, is called on HTTP/2 transport errors.\n\t// It's intended to increment a metric for monitoring, such\n\t// as an expvar or Prometheus metric.\n\t// The errType consists of only ASCII word characters.\n\tCountError func(errType string)\n\n\t// t1, if non-nil, is the standard library Transport using\n\t// this transport. Its settings are used (but not its\n\t// RoundTrip method, etc).\n\tt1 *http.Transport\n\n\tconnPoolOnce  sync.Once\n\tconnPoolOrDef ClientConnPool // non-nil version of ConnPool\n}\n\nfunc (t *Transport) maxHeaderListSize() uint32 {\n\tif t.MaxHeaderListSize == 0 {\n\t\treturn 10 << 20\n\t}\n\tif t.MaxHeaderListSize == 0xffffffff {\n\t\treturn 0\n\t}\n\treturn t.MaxHeaderListSize\n}\n\nfunc (t *Transport) maxFrameReadSize() uint32 {\n\tif t.MaxReadFrameSize == 0 {\n\t\treturn 0 // use the default provided by the peer\n\t}\n\tif t.MaxReadFrameSize < minMaxFrameSize {\n\t\treturn minMaxFrameSize\n\t}\n\tif t.MaxReadFrameSize > maxFrameSize {\n\t\treturn maxFrameSize\n\t}\n\treturn t.MaxReadFrameSize\n}\n\nfunc (t *Transport) disableCompression() bool {\n\treturn t.DisableCompression || (t.t1 != nil && t.t1.DisableCompression)\n}\n\nfunc (t *Transport) pingTimeout() time.Duration {\n\tif t.PingTimeout == 0 {\n\t\treturn 15 * time.Second\n\t}\n\treturn t.PingTimeout\n\n}\n\n// ConfigureTransport configures a net/http HTTP/1 Transport to use HTTP/2.\n// It returns an error if t1 has already been HTTP/2-enabled.\n//\n// Use ConfigureTransports instead to configure the HTTP/2 Transport.\nfunc ConfigureTransport(t1 *http.Transport) error {\n\t_, err := ConfigureTransports(t1)\n\treturn err\n}\n\n// ConfigureTransports configures a net/http HTTP/1 Transport to use HTTP/2.\n// It returns a new HTTP/2 Transport for further configuration.\n// It returns an error if t1 has already been HTTP/2-enabled.\nfunc ConfigureTransports(t1 *http.Transport) (*Transport, error) {\n\treturn configureTransports(t1)\n}\n\nfunc configureTransports(t1 *http.Transport) (*Transport, error) {\n\tconnPool := new(clientConnPool)\n\tt2 := &Transport{\n\t\tConnPool: noDialClientConnPool{connPool},\n\t\tt1:       t1,\n\t}\n\tconnPool.t = t2\n\tif err := registerHTTPSProtocol(t1, noDialH2RoundTripper{t2}); err != nil {\n\t\treturn nil, err\n\t}\n\tif t1.TLSClientConfig == nil {\n\t\tt1.TLSClientConfig = new(tls.Config)\n\t}\n\tif !strSliceContains(t1.TLSClientConfig.NextProtos, \"h2\") {\n\t\tt1.TLSClientConfig.NextProtos = append([]string{\"h2\"}, t1.TLSClientConfig.NextProtos...)\n\t}\n\tif !strSliceContains(t1.TLSClientConfig.NextProtos, \"http/1.1\") {\n\t\tt1.TLSClientConfig.NextProtos = append(t1.TLSClientConfig.NextProtos, \"http/1.1\")\n\t}\n\tupgradeFn := func(authority string, c *tls.Conn) http.RoundTripper {\n\t\taddr := authorityAddr(\"https\", authority)\n\t\tif used, err := connPool.addConnIfNeeded(addr, t2, c); err != nil {\n\t\t\tgo c.Close()\n\t\t\treturn erringRoundTripper{err}\n\t\t} else if !used {\n\t\t\t// Turns out we don't need this c.\n\t\t\t// For example, two goroutines made requests to the same host\n\t\t\t// at the same time, both kicking off TCP dials. (since protocol\n\t\t\t// was unknown)\n\t\t\tgo c.Close()\n\t\t}\n\t\treturn t2\n\t}\n\tif m := t1.TLSNextProto; len(m) == 0 {\n\t\tt1.TLSNextProto = map[string]func(string, *tls.Conn) http.RoundTripper{\n\t\t\t\"h2\": upgradeFn,\n\t\t}\n\t} else {\n\t\tm[\"h2\"] = upgradeFn\n\t}\n\treturn t2, nil\n}\n\nfunc (t *Transport) connPool() ClientConnPool {\n\tt.connPoolOnce.Do(t.initConnPool)\n\treturn t.connPoolOrDef\n}\n\nfunc (t *Transport) initConnPool() {\n\tif t.ConnPool != nil {\n\t\tt.connPoolOrDef = t.ConnPool\n\t} else {\n\t\tt.connPoolOrDef = &clientConnPool{t: t}\n\t}\n}\n\n// ClientConn is the state of a single HTTP/2 client connection to an\n// HTTP/2 server.\ntype ClientConn struct {\n\tt             *Transport\n\ttconn         net.Conn             // usually *tls.Conn, except specialized impls\n\ttlsState      *tls.ConnectionState // nil only for specialized impls\n\treused        uint32               // whether conn is being reused; atomic\n\tsingleUse     bool                 // whether being used for a single http.Request\n\tgetConnCalled bool                 // used by clientConnPool\n\n\t// readLoop goroutine fields:\n\treaderDone chan struct{} // closed on error\n\treaderErr  error         // set before readerDone is closed\n\n\tidleTimeout time.Duration // or 0 for never\n\tidleTimer   *time.Timer\n\n\tmu              sync.Mutex // guards following\n\tcond            *sync.Cond // hold mu; broadcast on flow/closed changes\n\tflow            outflow    // our conn-level flow control quota (cs.outflow is per stream)\n\tinflow          inflow     // peer's conn-level flow control\n\tdoNotReuse      bool       // whether conn is marked to not be reused for any future requests\n\tclosing         bool\n\tclosed          bool\n\tseenSettings    bool                     // true if we've seen a settings frame, false otherwise\n\twantSettingsAck bool                     // we sent a SETTINGS frame and haven't heard back\n\tgoAway          *GoAwayFrame             // if non-nil, the GoAwayFrame we received\n\tgoAwayDebug     string                   // goAway frame's debug data, retained as a string\n\tstreams         map[uint32]*clientStream // client-initiated\n\tstreamsReserved int                      // incr by ReserveNewRequest; decr on RoundTrip\n\tnextStreamID    uint32\n\tpendingRequests int                       // requests blocked and waiting to be sent because len(streams) == maxConcurrentStreams\n\tpings           map[[8]byte]chan struct{} // in flight ping data to notification channel\n\tbr              *bufio.Reader\n\tlastActive      time.Time\n\tlastIdle        time.Time // time last idle\n\t// Settings from peer: (also guarded by wmu)\n\tmaxFrameSize           uint32\n\tmaxConcurrentStreams   uint32\n\tpeerMaxHeaderListSize  uint64\n\tpeerMaxHeaderTableSize uint32\n\tinitialWindowSize      uint32\n\n\t// reqHeaderMu is a 1-element semaphore channel controlling access to sending new requests.\n\t// Write to reqHeaderMu to lock it, read from it to unlock.\n\t// Lock reqmu BEFORE mu or wmu.\n\treqHeaderMu chan struct{}\n\n\t// wmu is held while writing.\n\t// Acquire BEFORE mu when holding both, to avoid blocking mu on network writes.\n\t// Only acquire both at the same time when changing peer settings.\n\twmu  sync.Mutex\n\tbw   *bufio.Writer\n\tfr   *Framer\n\twerr error        // first write error that has occurred\n\thbuf bytes.Buffer // HPACK encoder writes into this\n\thenc *hpack.Encoder\n}\n\n// clientStream is the state for a single HTTP/2 stream. One of these\n// is created for each Transport.RoundTrip call.\ntype clientStream struct {\n\tcc *ClientConn\n\n\t// Fields of Request that we may access even after the response body is closed.\n\tctx       context.Context\n\treqCancel <-chan struct{}\n\n\ttrace         *httptrace.ClientTrace // or nil\n\tID            uint32\n\tbufPipe       pipe // buffered pipe with the flow-controlled response payload\n\trequestedGzip bool\n\tisHead        bool\n\n\tabortOnce sync.Once\n\tabort     chan struct{} // closed to signal stream should end immediately\n\tabortErr  error         // set if abort is closed\n\n\tpeerClosed chan struct{} // closed when the peer sends an END_STREAM flag\n\tdonec      chan struct{} // closed after the stream is in the closed state\n\ton100      chan struct{} // buffered; written to if a 100 is received\n\n\trespHeaderRecv chan struct{}  // closed when headers are received\n\tres            *http.Response // set if respHeaderRecv is closed\n\n\tflow        outflow // guarded by cc.mu\n\tinflow      inflow  // guarded by cc.mu\n\tbytesRemain int64   // -1 means unknown; owned by transportResponseBody.Read\n\treadErr     error   // sticky read error; owned by transportResponseBody.Read\n\n\treqBody              io.ReadCloser\n\treqBodyContentLength int64         // -1 means unknown\n\treqBodyClosed        chan struct{} // guarded by cc.mu; non-nil on Close, closed when done\n\n\t// owned by writeRequest:\n\tsentEndStream bool // sent an END_STREAM flag to the peer\n\tsentHeaders   bool\n\n\t// owned by clientConnReadLoop:\n\tfirstByte    bool  // got the first response byte\n\tpastHeaders  bool  // got first MetaHeadersFrame (actual headers)\n\tpastTrailers bool  // got optional second MetaHeadersFrame (trailers)\n\tnum1xx       uint8 // number of 1xx responses seen\n\treadClosed   bool  // peer sent an END_STREAM flag\n\treadAborted  bool  // read loop reset the stream\n\n\ttrailer    http.Header  // accumulated trailers\n\tresTrailer *http.Header // client's Response.Trailer\n}\n\nvar got1xxFuncForTests func(int, textproto.MIMEHeader) error\n\n// get1xxTraceFunc returns the value of request's httptrace.ClientTrace.Got1xxResponse func,\n// if any. It returns nil if not set or if the Go version is too old.\nfunc (cs *clientStream) get1xxTraceFunc() func(int, textproto.MIMEHeader) error {\n\tif fn := got1xxFuncForTests; fn != nil {\n\t\treturn fn\n\t}\n\treturn traceGot1xxResponseFunc(cs.trace)\n}\n\nfunc (cs *clientStream) abortStream(err error) {\n\tcs.cc.mu.Lock()\n\tdefer cs.cc.mu.Unlock()\n\tcs.abortStreamLocked(err)\n}\n\nfunc (cs *clientStream) abortStreamLocked(err error) {\n\tcs.abortOnce.Do(func() {\n\t\tcs.abortErr = err\n\t\tclose(cs.abort)\n\t})\n\tif cs.reqBody != nil {\n\t\tcs.closeReqBodyLocked()\n\t}\n\t// TODO(dneil): Clean up tests where cs.cc.cond is nil.\n\tif cs.cc.cond != nil {\n\t\t// Wake up writeRequestBody if it is waiting on flow control.\n\t\tcs.cc.cond.Broadcast()\n\t}\n}\n\nfunc (cs *clientStream) abortRequestBodyWrite() {\n\tcc := cs.cc\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\tif cs.reqBody != nil && cs.reqBodyClosed == nil {\n\t\tcs.closeReqBodyLocked()\n\t\tcc.cond.Broadcast()\n\t}\n}\n\nfunc (cs *clientStream) closeReqBodyLocked() {\n\tif cs.reqBodyClosed != nil {\n\t\treturn\n\t}\n\tcs.reqBodyClosed = make(chan struct{})\n\treqBodyClosed := cs.reqBodyClosed\n\tgo func() {\n\t\tcs.reqBody.Close()\n\t\tclose(reqBodyClosed)\n\t}()\n}\n\ntype stickyErrWriter struct {\n\tconn    net.Conn\n\ttimeout time.Duration\n\terr     *error\n}\n\nfunc (sew stickyErrWriter) Write(p []byte) (n int, err error) {\n\tif *sew.err != nil {\n\t\treturn 0, *sew.err\n\t}\n\tfor {\n\t\tif sew.timeout != 0 {\n\t\t\tsew.conn.SetWriteDeadline(time.Now().Add(sew.timeout))\n\t\t}\n\t\tnn, err := sew.conn.Write(p[n:])\n\t\tn += nn\n\t\tif n < len(p) && nn > 0 && errors.Is(err, os.ErrDeadlineExceeded) {\n\t\t\t// Keep extending the deadline so long as we're making progress.\n\t\t\tcontinue\n\t\t}\n\t\tif sew.timeout != 0 {\n\t\t\tsew.conn.SetWriteDeadline(time.Time{})\n\t\t}\n\t\t*sew.err = err\n\t\treturn n, err\n\t}\n}\n\n// noCachedConnError is the concrete type of ErrNoCachedConn, which\n// needs to be detected by net/http regardless of whether it's its\n// bundled version (in h2_bundle.go with a rewritten type name) or\n// from a user's x/net/http2. As such, as it has a unique method name\n// (IsHTTP2NoCachedConnError) that net/http sniffs for via func\n// isNoCachedConnError.\ntype noCachedConnError struct{}\n\nfunc (noCachedConnError) IsHTTP2NoCachedConnError() {}\nfunc (noCachedConnError) Error() string             { return \"http2: no cached connection was available\" }\n\n// isNoCachedConnError reports whether err is of type noCachedConnError\n// or its equivalent renamed type in net/http2's h2_bundle.go. Both types\n// may coexist in the same running program.\nfunc isNoCachedConnError(err error) bool {\n\t_, ok := err.(interface{ IsHTTP2NoCachedConnError() })\n\treturn ok\n}\n\nvar ErrNoCachedConn error = noCachedConnError{}\n\n// RoundTripOpt are options for the Transport.RoundTripOpt method.\ntype RoundTripOpt struct {\n\t// OnlyCachedConn controls whether RoundTripOpt may\n\t// create a new TCP connection. If set true and\n\t// no cached connection is available, RoundTripOpt\n\t// will return ErrNoCachedConn.\n\tOnlyCachedConn bool\n}\n\nfunc (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) {\n\treturn t.RoundTripOpt(req, RoundTripOpt{})\n}\n\n// authorityAddr returns a given authority (a host/IP, or host:port / ip:port)\n// and returns a host:port. The port 443 is added if needed.\nfunc authorityAddr(scheme string, authority string) (addr string) {\n\thost, port, err := net.SplitHostPort(authority)\n\tif err != nil { // authority didn't have a port\n\t\thost = authority\n\t\tport = \"\"\n\t}\n\tif port == \"\" { // authority's port was empty\n\t\tport = \"443\"\n\t\tif scheme == \"http\" {\n\t\t\tport = \"80\"\n\t\t}\n\t}\n\tif a, err := idna.ToASCII(host); err == nil {\n\t\thost = a\n\t}\n\t// IPv6 address literal, without a port:\n\tif strings.HasPrefix(host, \"[\") && strings.HasSuffix(host, \"]\") {\n\t\treturn host + \":\" + port\n\t}\n\treturn net.JoinHostPort(host, port)\n}\n\nvar retryBackoffHook func(time.Duration) *time.Timer\n\nfunc backoffNewTimer(d time.Duration) *time.Timer {\n\tif retryBackoffHook != nil {\n\t\treturn retryBackoffHook(d)\n\t}\n\treturn time.NewTimer(d)\n}\n\n// RoundTripOpt is like RoundTrip, but takes options.\nfunc (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Response, error) {\n\tif !(req.URL.Scheme == \"https\" || (req.URL.Scheme == \"http\" && t.AllowHTTP)) {\n\t\treturn nil, errors.New(\"http2: unsupported scheme\")\n\t}\n\n\taddr := authorityAddr(req.URL.Scheme, req.URL.Host)\n\tfor retry := 0; ; retry++ {\n\t\tcc, err := t.connPool().GetClientConn(req, addr)\n\t\tif err != nil {\n\t\t\tt.vlogf(\"http2: Transport failed to get client conn for %s: %v\", addr, err)\n\t\t\treturn nil, err\n\t\t}\n\t\treused := !atomic.CompareAndSwapUint32(&cc.reused, 0, 1)\n\t\ttraceGotConn(req, cc, reused)\n\t\tres, err := cc.RoundTrip(req)\n\t\tif err != nil && retry <= 6 {\n\t\t\troundTripErr := err\n\t\t\tif req, err = shouldRetryRequest(req, err); err == nil {\n\t\t\t\t// After the first retry, do exponential backoff with 10% jitter.\n\t\t\t\tif retry == 0 {\n\t\t\t\t\tt.vlogf(\"RoundTrip retrying after failure: %v\", roundTripErr)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tbackoff := float64(uint(1) << (uint(retry) - 1))\n\t\t\t\tbackoff += backoff * (0.1 * mathrand.Float64())\n\t\t\t\td := time.Second * time.Duration(backoff)\n\t\t\t\ttimer := backoffNewTimer(d)\n\t\t\t\tselect {\n\t\t\t\tcase <-timer.C:\n\t\t\t\t\tt.vlogf(\"RoundTrip retrying after failure: %v\", roundTripErr)\n\t\t\t\t\tcontinue\n\t\t\t\tcase <-req.Context().Done():\n\t\t\t\t\ttimer.Stop()\n\t\t\t\t\terr = req.Context().Err()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\tt.vlogf(\"RoundTrip failure: %v\", err)\n\t\t\treturn nil, err\n\t\t}\n\t\treturn res, nil\n\t}\n}\n\n// CloseIdleConnections closes any connections which were previously\n// connected from previous requests but are now sitting idle.\n// It does not interrupt any connections currently in use.\nfunc (t *Transport) CloseIdleConnections() {\n\tif cp, ok := t.connPool().(clientConnPoolIdleCloser); ok {\n\t\tcp.closeIdleConnections()\n\t}\n}\n\nvar (\n\terrClientConnClosed    = errors.New(\"http2: client conn is closed\")\n\terrClientConnUnusable  = errors.New(\"http2: client conn not usable\")\n\terrClientConnGotGoAway = errors.New(\"http2: Transport received Server's graceful shutdown GOAWAY\")\n)\n\n// shouldRetryRequest is called by RoundTrip when a request fails to get\n// response headers. It is always called with a non-nil error.\n// It returns either a request to retry (either the same request, or a\n// modified clone), or an error if the request can't be replayed.\nfunc shouldRetryRequest(req *http.Request, err error) (*http.Request, error) {\n\tif !canRetryError(err) {\n\t\treturn nil, err\n\t}\n\t// If the Body is nil (or http.NoBody), it's safe to reuse\n\t// this request and its Body.\n\tif req.Body == nil || req.Body == http.NoBody {\n\t\treturn req, nil\n\t}\n\n\t// If the request body can be reset back to its original\n\t// state via the optional req.GetBody, do that.\n\tif req.GetBody != nil {\n\t\tbody, err := req.GetBody()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tnewReq := *req\n\t\tnewReq.Body = body\n\t\treturn &newReq, nil\n\t}\n\n\t// The Request.Body can't reset back to the beginning, but we\n\t// don't seem to have started to read from it yet, so reuse\n\t// the request directly.\n\tif err == errClientConnUnusable {\n\t\treturn req, nil\n\t}\n\n\treturn nil, fmt.Errorf(\"http2: Transport: cannot retry err [%v] after Request.Body was written; define Request.GetBody to avoid this error\", err)\n}\n\nfunc canRetryError(err error) bool {\n\tif err == errClientConnUnusable || err == errClientConnGotGoAway {\n\t\treturn true\n\t}\n\tif se, ok := err.(StreamError); ok {\n\t\tif se.Code == ErrCodeProtocol && se.Cause == errFromPeer {\n\t\t\t// See golang/go#47635, golang/go#42777\n\t\t\treturn true\n\t\t}\n\t\treturn se.Code == ErrCodeRefusedStream\n\t}\n\treturn false\n}\n\nfunc (t *Transport) dialClientConn(ctx context.Context, addr string, singleUse bool) (*ClientConn, error) {\n\thost, _, err := net.SplitHostPort(addr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ttconn, err := t.dialTLS(ctx, \"tcp\", addr, t.newTLSConfig(host))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn t.newClientConn(tconn, singleUse)\n}\n\nfunc (t *Transport) newTLSConfig(host string) *tls.Config {\n\tcfg := new(tls.Config)\n\tif t.TLSClientConfig != nil {\n\t\t*cfg = *t.TLSClientConfig.Clone()\n\t}\n\tif !strSliceContains(cfg.NextProtos, NextProtoTLS) {\n\t\tcfg.NextProtos = append([]string{NextProtoTLS}, cfg.NextProtos...)\n\t}\n\tif cfg.ServerName == \"\" {\n\t\tcfg.ServerName = host\n\t}\n\treturn cfg\n}\n\nfunc (t *Transport) dialTLS(ctx context.Context, network, addr string, tlsCfg *tls.Config) (net.Conn, error) {\n\tif t.DialTLSContext != nil {\n\t\treturn t.DialTLSContext(ctx, network, addr, tlsCfg)\n\t} else if t.DialTLS != nil {\n\t\treturn t.DialTLS(network, addr, tlsCfg)\n\t}\n\n\ttlsCn, err := t.dialTLSWithContext(ctx, network, addr, tlsCfg)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tstate := tlsCn.ConnectionState()\n\tif p := state.NegotiatedProtocol; p != NextProtoTLS {\n\t\treturn nil, fmt.Errorf(\"http2: unexpected ALPN protocol %q; want %q\", p, NextProtoTLS)\n\t}\n\tif !state.NegotiatedProtocolIsMutual {\n\t\treturn nil, errors.New(\"http2: could not negotiate protocol mutually\")\n\t}\n\treturn tlsCn, nil\n}\n\n// disableKeepAlives reports whether connections should be closed as\n// soon as possible after handling the first request.\nfunc (t *Transport) disableKeepAlives() bool {\n\treturn t.t1 != nil && t.t1.DisableKeepAlives\n}\n\nfunc (t *Transport) expectContinueTimeout() time.Duration {\n\tif t.t1 == nil {\n\t\treturn 0\n\t}\n\treturn t.t1.ExpectContinueTimeout\n}\n\nfunc (t *Transport) maxDecoderHeaderTableSize() uint32 {\n\tif v := t.MaxDecoderHeaderTableSize; v > 0 {\n\t\treturn v\n\t}\n\treturn initialHeaderTableSize\n}\n\nfunc (t *Transport) maxEncoderHeaderTableSize() uint32 {\n\tif v := t.MaxEncoderHeaderTableSize; v > 0 {\n\t\treturn v\n\t}\n\treturn initialHeaderTableSize\n}\n\nfunc (t *Transport) NewClientConn(c net.Conn) (*ClientConn, error) {\n\treturn t.newClientConn(c, t.disableKeepAlives())\n}\n\nfunc (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, error) {\n\tcc := &ClientConn{\n\t\tt:                     t,\n\t\ttconn:                 c,\n\t\treaderDone:            make(chan struct{}),\n\t\tnextStreamID:          1,\n\t\tmaxFrameSize:          16 << 10,                    // spec default\n\t\tinitialWindowSize:     65535,                       // spec default\n\t\tmaxConcurrentStreams:  initialMaxConcurrentStreams, // \"infinite\", per spec. Use a smaller value until we have received server settings.\n\t\tpeerMaxHeaderListSize: 0xffffffffffffffff,          // \"infinite\", per spec. Use 2^64-1 instead.\n\t\tstreams:               make(map[uint32]*clientStream),\n\t\tsingleUse:             singleUse,\n\t\twantSettingsAck:       true,\n\t\tpings:                 make(map[[8]byte]chan struct{}),\n\t\treqHeaderMu:           make(chan struct{}, 1),\n\t}\n\tif d := t.idleConnTimeout(); d != 0 {\n\t\tcc.idleTimeout = d\n\t\tcc.idleTimer = time.AfterFunc(d, cc.onIdleTimeout)\n\t}\n\tif VerboseLogs {\n\t\tt.vlogf(\"http2: Transport creating client conn %p to %v\", cc, c.RemoteAddr())\n\t}\n\n\tcc.cond = sync.NewCond(&cc.mu)\n\tcc.flow.add(int32(initialWindowSize))\n\n\t// TODO: adjust this writer size to account for frame size +\n\t// MTU + crypto/tls record padding.\n\tcc.bw = bufio.NewWriter(stickyErrWriter{\n\t\tconn:    c,\n\t\ttimeout: t.WriteByteTimeout,\n\t\terr:     &cc.werr,\n\t})\n\tcc.br = bufio.NewReader(c)\n\tcc.fr = NewFramer(cc.bw, cc.br)\n\tif t.maxFrameReadSize() != 0 {\n\t\tcc.fr.SetMaxReadFrameSize(t.maxFrameReadSize())\n\t}\n\tif t.CountError != nil {\n\t\tcc.fr.countError = t.CountError\n\t}\n\tmaxHeaderTableSize := t.maxDecoderHeaderTableSize()\n\tcc.fr.ReadMetaHeaders = hpack.NewDecoder(maxHeaderTableSize, nil)\n\tcc.fr.MaxHeaderListSize = t.maxHeaderListSize()\n\n\tcc.henc = hpack.NewEncoder(&cc.hbuf)\n\tcc.henc.SetMaxDynamicTableSizeLimit(t.maxEncoderHeaderTableSize())\n\tcc.peerMaxHeaderTableSize = initialHeaderTableSize\n\n\tif t.AllowHTTP {\n\t\tcc.nextStreamID = 3\n\t}\n\n\tif cs, ok := c.(connectionStater); ok {\n\t\tstate := cs.ConnectionState()\n\t\tcc.tlsState = &state\n\t}\n\n\tinitialSettings := []Setting{\n\t\t{ID: SettingEnablePush, Val: 0},\n\t\t{ID: SettingInitialWindowSize, Val: transportDefaultStreamFlow},\n\t}\n\tif max := t.maxFrameReadSize(); max != 0 {\n\t\tinitialSettings = append(initialSettings, Setting{ID: SettingMaxFrameSize, Val: max})\n\t}\n\tif max := t.maxHeaderListSize(); max != 0 {\n\t\tinitialSettings = append(initialSettings, Setting{ID: SettingMaxHeaderListSize, Val: max})\n\t}\n\tif maxHeaderTableSize != initialHeaderTableSize {\n\t\tinitialSettings = append(initialSettings, Setting{ID: SettingHeaderTableSize, Val: maxHeaderTableSize})\n\t}\n\n\tcc.bw.Write(clientPreface)\n\tcc.fr.WriteSettings(initialSettings...)\n\tcc.fr.WriteWindowUpdate(0, transportDefaultConnFlow)\n\tcc.inflow.init(transportDefaultConnFlow + initialWindowSize)\n\tcc.bw.Flush()\n\tif cc.werr != nil {\n\t\tcc.Close()\n\t\treturn nil, cc.werr\n\t}\n\n\tgo cc.readLoop()\n\treturn cc, nil\n}\n\nfunc (cc *ClientConn) healthCheck() {\n\tpingTimeout := cc.t.pingTimeout()\n\t// We don't need to periodically ping in the health check, because the readLoop of ClientConn will\n\t// trigger the healthCheck again if there is no frame received.\n\tctx, cancel := context.WithTimeout(context.Background(), pingTimeout)\n\tdefer cancel()\n\tcc.vlogf(\"http2: Transport sending health check\")\n\terr := cc.Ping(ctx)\n\tif err != nil {\n\t\tcc.vlogf(\"http2: Transport health check failure: %v\", err)\n\t\tcc.closeForLostPing()\n\t} else {\n\t\tcc.vlogf(\"http2: Transport health check success\")\n\t}\n}\n\n// SetDoNotReuse marks cc as not reusable for future HTTP requests.\nfunc (cc *ClientConn) SetDoNotReuse() {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\tcc.doNotReuse = true\n}\n\nfunc (cc *ClientConn) setGoAway(f *GoAwayFrame) {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\n\told := cc.goAway\n\tcc.goAway = f\n\n\t// Merge the previous and current GoAway error frames.\n\tif cc.goAwayDebug == \"\" {\n\t\tcc.goAwayDebug = string(f.DebugData())\n\t}\n\tif old != nil && old.ErrCode != ErrCodeNo {\n\t\tcc.goAway.ErrCode = old.ErrCode\n\t}\n\tlast := f.LastStreamID\n\tfor streamID, cs := range cc.streams {\n\t\tif streamID > last {\n\t\t\tcs.abortStreamLocked(errClientConnGotGoAway)\n\t\t}\n\t}\n}\n\n// CanTakeNewRequest reports whether the connection can take a new request,\n// meaning it has not been closed or received or sent a GOAWAY.\n//\n// If the caller is going to immediately make a new request on this\n// connection, use ReserveNewRequest instead.\nfunc (cc *ClientConn) CanTakeNewRequest() bool {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\treturn cc.canTakeNewRequestLocked()\n}\n\n// ReserveNewRequest is like CanTakeNewRequest but also reserves a\n// concurrent stream in cc. The reservation is decremented on the\n// next call to RoundTrip.\nfunc (cc *ClientConn) ReserveNewRequest() bool {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\tif st := cc.idleStateLocked(); !st.canTakeNewRequest {\n\t\treturn false\n\t}\n\tcc.streamsReserved++\n\treturn true\n}\n\n// ClientConnState describes the state of a ClientConn.\ntype ClientConnState struct {\n\t// Closed is whether the connection is closed.\n\tClosed bool\n\n\t// Closing is whether the connection is in the process of\n\t// closing. It may be closing due to shutdown, being a\n\t// single-use connection, being marked as DoNotReuse, or\n\t// having received a GOAWAY frame.\n\tClosing bool\n\n\t// StreamsActive is how many streams are active.\n\tStreamsActive int\n\n\t// StreamsReserved is how many streams have been reserved via\n\t// ClientConn.ReserveNewRequest.\n\tStreamsReserved int\n\n\t// StreamsPending is how many requests have been sent in excess\n\t// of the peer's advertised MaxConcurrentStreams setting and\n\t// are waiting for other streams to complete.\n\tStreamsPending int\n\n\t// MaxConcurrentStreams is how many concurrent streams the\n\t// peer advertised as acceptable. Zero means no SETTINGS\n\t// frame has been received yet.\n\tMaxConcurrentStreams uint32\n\n\t// LastIdle, if non-zero, is when the connection last\n\t// transitioned to idle state.\n\tLastIdle time.Time\n}\n\n// State returns a snapshot of cc's state.\nfunc (cc *ClientConn) State() ClientConnState {\n\tcc.wmu.Lock()\n\tmaxConcurrent := cc.maxConcurrentStreams\n\tif !cc.seenSettings {\n\t\tmaxConcurrent = 0\n\t}\n\tcc.wmu.Unlock()\n\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\treturn ClientConnState{\n\t\tClosed:               cc.closed,\n\t\tClosing:              cc.closing || cc.singleUse || cc.doNotReuse || cc.goAway != nil,\n\t\tStreamsActive:        len(cc.streams),\n\t\tStreamsReserved:      cc.streamsReserved,\n\t\tStreamsPending:       cc.pendingRequests,\n\t\tLastIdle:             cc.lastIdle,\n\t\tMaxConcurrentStreams: maxConcurrent,\n\t}\n}\n\n// clientConnIdleState describes the suitability of a client\n// connection to initiate a new RoundTrip request.\ntype clientConnIdleState struct {\n\tcanTakeNewRequest bool\n}\n\nfunc (cc *ClientConn) idleState() clientConnIdleState {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\treturn cc.idleStateLocked()\n}\n\nfunc (cc *ClientConn) idleStateLocked() (st clientConnIdleState) {\n\tif cc.singleUse && cc.nextStreamID > 1 {\n\t\treturn\n\t}\n\tvar maxConcurrentOkay bool\n\tif cc.t.StrictMaxConcurrentStreams {\n\t\t// We'll tell the caller we can take a new request to\n\t\t// prevent the caller from dialing a new TCP\n\t\t// connection, but then we'll block later before\n\t\t// writing it.\n\t\tmaxConcurrentOkay = true\n\t} else {\n\t\tmaxConcurrentOkay = int64(len(cc.streams)+cc.streamsReserved+1) <= int64(cc.maxConcurrentStreams)\n\t}\n\n\tst.canTakeNewRequest = cc.goAway == nil && !cc.closed && !cc.closing && maxConcurrentOkay &&\n\t\t!cc.doNotReuse &&\n\t\tint64(cc.nextStreamID)+2*int64(cc.pendingRequests) < math.MaxInt32 &&\n\t\t!cc.tooIdleLocked()\n\treturn\n}\n\nfunc (cc *ClientConn) canTakeNewRequestLocked() bool {\n\tst := cc.idleStateLocked()\n\treturn st.canTakeNewRequest\n}\n\n// tooIdleLocked reports whether this connection has been been sitting idle\n// for too much wall time.\nfunc (cc *ClientConn) tooIdleLocked() bool {\n\t// The Round(0) strips the monontonic clock reading so the\n\t// times are compared based on their wall time. We don't want\n\t// to reuse a connection that's been sitting idle during\n\t// VM/laptop suspend if monotonic time was also frozen.\n\treturn cc.idleTimeout != 0 && !cc.lastIdle.IsZero() && time.Since(cc.lastIdle.Round(0)) > cc.idleTimeout\n}\n\n// onIdleTimeout is called from a time.AfterFunc goroutine. It will\n// only be called when we're idle, but because we're coming from a new\n// goroutine, there could be a new request coming in at the same time,\n// so this simply calls the synchronized closeIfIdle to shut down this\n// connection. The timer could just call closeIfIdle, but this is more\n// clear.\nfunc (cc *ClientConn) onIdleTimeout() {\n\tcc.closeIfIdle()\n}\n\nfunc (cc *ClientConn) closeConn() {\n\tt := time.AfterFunc(250*time.Millisecond, cc.forceCloseConn)\n\tdefer t.Stop()\n\tcc.tconn.Close()\n}\n\n// A tls.Conn.Close can hang for a long time if the peer is unresponsive.\n// Try to shut it down more aggressively.\nfunc (cc *ClientConn) forceCloseConn() {\n\ttc, ok := cc.tconn.(*tls.Conn)\n\tif !ok {\n\t\treturn\n\t}\n\tif nc := tc.NetConn(); nc != nil {\n\t\tnc.Close()\n\t}\n}\n\nfunc (cc *ClientConn) closeIfIdle() {\n\tcc.mu.Lock()\n\tif len(cc.streams) > 0 || cc.streamsReserved > 0 {\n\t\tcc.mu.Unlock()\n\t\treturn\n\t}\n\tcc.closed = true\n\tnextID := cc.nextStreamID\n\t// TODO: do clients send GOAWAY too? maybe? Just Close:\n\tcc.mu.Unlock()\n\n\tif VerboseLogs {\n\t\tcc.vlogf(\"http2: Transport closing idle conn %p (forSingleUse=%v, maxStream=%v)\", cc, cc.singleUse, nextID-2)\n\t}\n\tcc.closeConn()\n}\n\nfunc (cc *ClientConn) isDoNotReuseAndIdle() bool {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\treturn cc.doNotReuse && len(cc.streams) == 0\n}\n\nvar shutdownEnterWaitStateHook = func() {}\n\n// Shutdown gracefully closes the client connection, waiting for running streams to complete.\nfunc (cc *ClientConn) Shutdown(ctx context.Context) error {\n\tif err := cc.sendGoAway(); err != nil {\n\t\treturn err\n\t}\n\t// Wait for all in-flight streams to complete or connection to close\n\tdone := make(chan struct{})\n\tcancelled := false // guarded by cc.mu\n\tgo func() {\n\t\tcc.mu.Lock()\n\t\tdefer cc.mu.Unlock()\n\t\tfor {\n\t\t\tif len(cc.streams) == 0 || cc.closed {\n\t\t\t\tcc.closed = true\n\t\t\t\tclose(done)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif cancelled {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcc.cond.Wait()\n\t\t}\n\t}()\n\tshutdownEnterWaitStateHook()\n\tselect {\n\tcase <-done:\n\t\tcc.closeConn()\n\t\treturn nil\n\tcase <-ctx.Done():\n\t\tcc.mu.Lock()\n\t\t// Free the goroutine above\n\t\tcancelled = true\n\t\tcc.cond.Broadcast()\n\t\tcc.mu.Unlock()\n\t\treturn ctx.Err()\n\t}\n}\n\nfunc (cc *ClientConn) sendGoAway() error {\n\tcc.mu.Lock()\n\tclosing := cc.closing\n\tcc.closing = true\n\tmaxStreamID := cc.nextStreamID\n\tcc.mu.Unlock()\n\tif closing {\n\t\t// GOAWAY sent already\n\t\treturn nil\n\t}\n\n\tcc.wmu.Lock()\n\tdefer cc.wmu.Unlock()\n\t// Send a graceful shutdown frame to server\n\tif err := cc.fr.WriteGoAway(maxStreamID, ErrCodeNo, nil); err != nil {\n\t\treturn err\n\t}\n\tif err := cc.bw.Flush(); err != nil {\n\t\treturn err\n\t}\n\t// Prevent new requests\n\treturn nil\n}\n\n// closes the client connection immediately. In-flight requests are interrupted.\n// err is sent to streams.\nfunc (cc *ClientConn) closeForError(err error) {\n\tcc.mu.Lock()\n\tcc.closed = true\n\tfor _, cs := range cc.streams {\n\t\tcs.abortStreamLocked(err)\n\t}\n\tcc.cond.Broadcast()\n\tcc.mu.Unlock()\n\tcc.closeConn()\n}\n\n// Close closes the client connection immediately.\n//\n// In-flight requests are interrupted. For a graceful shutdown, use Shutdown instead.\nfunc (cc *ClientConn) Close() error {\n\terr := errors.New(\"http2: client connection force closed via ClientConn.Close\")\n\tcc.closeForError(err)\n\treturn nil\n}\n\n// closes the client connection immediately. In-flight requests are interrupted.\nfunc (cc *ClientConn) closeForLostPing() {\n\terr := errors.New(\"http2: client connection lost\")\n\tif f := cc.t.CountError; f != nil {\n\t\tf(\"conn_close_lost_ping\")\n\t}\n\tcc.closeForError(err)\n}\n\n// errRequestCanceled is a copy of net/http's errRequestCanceled because it's not\n// exported. At least they'll be DeepEqual for h1-vs-h2 comparisons tests.\nvar errRequestCanceled = errors.New(\"net/http: request canceled\")\n\nfunc commaSeparatedTrailers(req *http.Request) (string, error) {\n\tkeys := make([]string, 0, len(req.Trailer))\n\tfor k := range req.Trailer {\n\t\tk = canonicalHeader(k)\n\t\tswitch k {\n\t\tcase \"Transfer-Encoding\", \"Trailer\", \"Content-Length\":\n\t\t\treturn \"\", fmt.Errorf(\"invalid Trailer key %q\", k)\n\t\t}\n\t\tkeys = append(keys, k)\n\t}\n\tif len(keys) > 0 {\n\t\tsort.Strings(keys)\n\t\treturn strings.Join(keys, \",\"), nil\n\t}\n\treturn \"\", nil\n}\n\nfunc (cc *ClientConn) responseHeaderTimeout() time.Duration {\n\tif cc.t.t1 != nil {\n\t\treturn cc.t.t1.ResponseHeaderTimeout\n\t}\n\t// No way to do this (yet?) with just an http2.Transport. Probably\n\t// no need. Request.Cancel this is the new way. We only need to support\n\t// this for compatibility with the old http.Transport fields when\n\t// we're doing transparent http2.\n\treturn 0\n}\n\n// checkConnHeaders checks whether req has any invalid connection-level headers.\n// per RFC 7540 section 8.1.2.2: Connection-Specific Header Fields.\n// Certain headers are special-cased as okay but not transmitted later.\nfunc checkConnHeaders(req *http.Request) error {\n\tif v := req.Header.Get(\"Upgrade\"); v != \"\" {\n\t\treturn fmt.Errorf(\"http2: invalid Upgrade request header: %q\", req.Header[\"Upgrade\"])\n\t}\n\tif vv := req.Header[\"Transfer-Encoding\"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != \"\" && vv[0] != \"chunked\") {\n\t\treturn fmt.Errorf(\"http2: invalid Transfer-Encoding request header: %q\", vv)\n\t}\n\tif vv := req.Header[\"Connection\"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != \"\" && !asciiEqualFold(vv[0], \"close\") && !asciiEqualFold(vv[0], \"keep-alive\")) {\n\t\treturn fmt.Errorf(\"http2: invalid Connection request header: %q\", vv)\n\t}\n\treturn nil\n}\n\n// actualContentLength returns a sanitized version of\n// req.ContentLength, where 0 actually means zero (not unknown) and -1\n// means unknown.\nfunc actualContentLength(req *http.Request) int64 {\n\tif req.Body == nil || req.Body == http.NoBody {\n\t\treturn 0\n\t}\n\tif req.ContentLength != 0 {\n\t\treturn req.ContentLength\n\t}\n\treturn -1\n}\n\nfunc (cc *ClientConn) decrStreamReservations() {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\tcc.decrStreamReservationsLocked()\n}\n\nfunc (cc *ClientConn) decrStreamReservationsLocked() {\n\tif cc.streamsReserved > 0 {\n\t\tcc.streamsReserved--\n\t}\n}\n\nfunc (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) {\n\tctx := req.Context()\n\tcs := &clientStream{\n\t\tcc:                   cc,\n\t\tctx:                  ctx,\n\t\treqCancel:            req.Cancel,\n\t\tisHead:               req.Method == \"HEAD\",\n\t\treqBody:              req.Body,\n\t\treqBodyContentLength: actualContentLength(req),\n\t\ttrace:                httptrace.ContextClientTrace(ctx),\n\t\tpeerClosed:           make(chan struct{}),\n\t\tabort:                make(chan struct{}),\n\t\trespHeaderRecv:       make(chan struct{}),\n\t\tdonec:                make(chan struct{}),\n\t}\n\tgo cs.doRequest(req)\n\n\twaitDone := func() error {\n\t\tselect {\n\t\tcase <-cs.donec:\n\t\t\treturn nil\n\t\tcase <-ctx.Done():\n\t\t\treturn ctx.Err()\n\t\tcase <-cs.reqCancel:\n\t\t\treturn errRequestCanceled\n\t\t}\n\t}\n\n\thandleResponseHeaders := func() (*http.Response, error) {\n\t\tres := cs.res\n\t\tif res.StatusCode > 299 {\n\t\t\t// On error or status code 3xx, 4xx, 5xx, etc abort any\n\t\t\t// ongoing write, assuming that the server doesn't care\n\t\t\t// about our request body. If the server replied with 1xx or\n\t\t\t// 2xx, however, then assume the server DOES potentially\n\t\t\t// want our body (e.g. full-duplex streaming:\n\t\t\t// golang.org/issue/13444). If it turns out the server\n\t\t\t// doesn't, they'll RST_STREAM us soon enough. This is a\n\t\t\t// heuristic to avoid adding knobs to Transport. Hopefully\n\t\t\t// we can keep it.\n\t\t\tcs.abortRequestBodyWrite()\n\t\t}\n\t\tres.Request = req\n\t\tres.TLS = cc.tlsState\n\t\tif res.Body == noBody && actualContentLength(req) == 0 {\n\t\t\t// If there isn't a request or response body still being\n\t\t\t// written, then wait for the stream to be closed before\n\t\t\t// RoundTrip returns.\n\t\t\tif err := waitDone(); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn res, nil\n\t}\n\n\tcancelRequest := func(cs *clientStream, err error) error {\n\t\tcs.cc.mu.Lock()\n\t\tbodyClosed := cs.reqBodyClosed\n\t\tcs.cc.mu.Unlock()\n\t\t// Wait for the request body to be closed.\n\t\t//\n\t\t// If nothing closed the body before now, abortStreamLocked\n\t\t// will have started a goroutine to close it.\n\t\t//\n\t\t// Closing the body before returning avoids a race condition\n\t\t// with net/http checking its readTrackingBody to see if the\n\t\t// body was read from or closed. See golang/go#60041.\n\t\t//\n\t\t// The body is closed in a separate goroutine without the\n\t\t// connection mutex held, but dropping the mutex before waiting\n\t\t// will keep us from holding it indefinitely if the body\n\t\t// close is slow for some reason.\n\t\tif bodyClosed != nil {\n\t\t\t<-bodyClosed\n\t\t}\n\t\treturn err\n\t}\n\n\tfor {\n\t\tselect {\n\t\tcase <-cs.respHeaderRecv:\n\t\t\treturn handleResponseHeaders()\n\t\tcase <-cs.abort:\n\t\t\tselect {\n\t\t\tcase <-cs.respHeaderRecv:\n\t\t\t\t// If both cs.respHeaderRecv and cs.abort are signaling,\n\t\t\t\t// pick respHeaderRecv. The server probably wrote the\n\t\t\t\t// response and immediately reset the stream.\n\t\t\t\t// golang.org/issue/49645\n\t\t\t\treturn handleResponseHeaders()\n\t\t\tdefault:\n\t\t\t\twaitDone()\n\t\t\t\treturn nil, cs.abortErr\n\t\t\t}\n\t\tcase <-ctx.Done():\n\t\t\terr := ctx.Err()\n\t\t\tcs.abortStream(err)\n\t\t\treturn nil, cancelRequest(cs, err)\n\t\tcase <-cs.reqCancel:\n\t\t\tcs.abortStream(errRequestCanceled)\n\t\t\treturn nil, cancelRequest(cs, errRequestCanceled)\n\t\t}\n\t}\n}\n\n// doRequest runs for the duration of the request lifetime.\n//\n// It sends the request and performs post-request cleanup (closing Request.Body, etc.).\nfunc (cs *clientStream) doRequest(req *http.Request) {\n\terr := cs.writeRequest(req)\n\tcs.cleanupWriteRequest(err)\n}\n\n// writeRequest sends a request.\n//\n// It returns nil after the request is written, the response read,\n// and the request stream is half-closed by the peer.\n//\n// It returns non-nil if the request ends otherwise.\n// If the returned error is StreamError, the error Code may be used in resetting the stream.\nfunc (cs *clientStream) writeRequest(req *http.Request) (err error) {\n\tcc := cs.cc\n\tctx := cs.ctx\n\n\tif err := checkConnHeaders(req); err != nil {\n\t\treturn err\n\t}\n\n\t// Acquire the new-request lock by writing to reqHeaderMu.\n\t// This lock guards the critical section covering allocating a new stream ID\n\t// (requires mu) and creating the stream (requires wmu).\n\tif cc.reqHeaderMu == nil {\n\t\tpanic(\"RoundTrip on uninitialized ClientConn\") // for tests\n\t}\n\tselect {\n\tcase cc.reqHeaderMu <- struct{}{}:\n\tcase <-cs.reqCancel:\n\t\treturn errRequestCanceled\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\t}\n\n\tcc.mu.Lock()\n\tif cc.idleTimer != nil {\n\t\tcc.idleTimer.Stop()\n\t}\n\tcc.decrStreamReservationsLocked()\n\tif err := cc.awaitOpenSlotForStreamLocked(cs); err != nil {\n\t\tcc.mu.Unlock()\n\t\t<-cc.reqHeaderMu\n\t\treturn err\n\t}\n\tcc.addStreamLocked(cs) // assigns stream ID\n\tif isConnectionCloseRequest(req) {\n\t\tcc.doNotReuse = true\n\t}\n\tcc.mu.Unlock()\n\n\t// TODO(bradfitz): this is a copy of the logic in net/http. Unify somewhere?\n\tif !cc.t.disableCompression() &&\n\t\treq.Header.Get(\"Accept-Encoding\") == \"\" &&\n\t\treq.Header.Get(\"Range\") == \"\" &&\n\t\t!cs.isHead {\n\t\t// Request gzip only, not deflate. Deflate is ambiguous and\n\t\t// not as universally supported anyway.\n\t\t// See: https://zlib.net/zlib_faq.html#faq39\n\t\t//\n\t\t// Note that we don't request this for HEAD requests,\n\t\t// due to a bug in nginx:\n\t\t//   http://trac.nginx.org/nginx/ticket/358\n\t\t//   https://golang.org/issue/5522\n\t\t//\n\t\t// We don't request gzip if the request is for a range, since\n\t\t// auto-decoding a portion of a gzipped document will just fail\n\t\t// anyway. See https://golang.org/issue/8923\n\t\tcs.requestedGzip = true\n\t}\n\n\tcontinueTimeout := cc.t.expectContinueTimeout()\n\tif continueTimeout != 0 {\n\t\tif !httpguts.HeaderValuesContainsToken(req.Header[\"Expect\"], \"100-continue\") {\n\t\t\tcontinueTimeout = 0\n\t\t} else {\n\t\t\tcs.on100 = make(chan struct{}, 1)\n\t\t}\n\t}\n\n\t// Past this point (where we send request headers), it is possible for\n\t// RoundTrip to return successfully. Since the RoundTrip contract permits\n\t// the caller to \"mutate or reuse\" the Request after closing the Response's Body,\n\t// we must take care when referencing the Request from here on.\n\terr = cs.encodeAndWriteHeaders(req)\n\t<-cc.reqHeaderMu\n\tif err != nil {\n\t\treturn err\n\t}\n\n\thasBody := cs.reqBodyContentLength != 0\n\tif !hasBody {\n\t\tcs.sentEndStream = true\n\t} else {\n\t\tif continueTimeout != 0 {\n\t\t\ttraceWait100Continue(cs.trace)\n\t\t\ttimer := time.NewTimer(continueTimeout)\n\t\t\tselect {\n\t\t\tcase <-timer.C:\n\t\t\t\terr = nil\n\t\t\tcase <-cs.on100:\n\t\t\t\terr = nil\n\t\t\tcase <-cs.abort:\n\t\t\t\terr = cs.abortErr\n\t\t\tcase <-ctx.Done():\n\t\t\t\terr = ctx.Err()\n\t\t\tcase <-cs.reqCancel:\n\t\t\t\terr = errRequestCanceled\n\t\t\t}\n\t\t\ttimer.Stop()\n\t\t\tif err != nil {\n\t\t\t\ttraceWroteRequest(cs.trace, err)\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tif err = cs.writeRequestBody(req); err != nil {\n\t\t\tif err != errStopReqBodyWrite {\n\t\t\t\ttraceWroteRequest(cs.trace, err)\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\tcs.sentEndStream = true\n\t\t}\n\t}\n\n\ttraceWroteRequest(cs.trace, err)\n\n\tvar respHeaderTimer <-chan time.Time\n\tvar respHeaderRecv chan struct{}\n\tif d := cc.responseHeaderTimeout(); d != 0 {\n\t\ttimer := time.NewTimer(d)\n\t\tdefer timer.Stop()\n\t\trespHeaderTimer = timer.C\n\t\trespHeaderRecv = cs.respHeaderRecv\n\t}\n\t// Wait until the peer half-closes its end of the stream,\n\t// or until the request is aborted (via context, error, or otherwise),\n\t// whichever comes first.\n\tfor {\n\t\tselect {\n\t\tcase <-cs.peerClosed:\n\t\t\treturn nil\n\t\tcase <-respHeaderTimer:\n\t\t\treturn errTimeout\n\t\tcase <-respHeaderRecv:\n\t\t\trespHeaderRecv = nil\n\t\t\trespHeaderTimer = nil // keep waiting for END_STREAM\n\t\tcase <-cs.abort:\n\t\t\treturn cs.abortErr\n\t\tcase <-ctx.Done():\n\t\t\treturn ctx.Err()\n\t\tcase <-cs.reqCancel:\n\t\t\treturn errRequestCanceled\n\t\t}\n\t}\n}\n\nfunc (cs *clientStream) encodeAndWriteHeaders(req *http.Request) error {\n\tcc := cs.cc\n\tctx := cs.ctx\n\n\tcc.wmu.Lock()\n\tdefer cc.wmu.Unlock()\n\n\t// If the request was canceled while waiting for cc.mu, just quit.\n\tselect {\n\tcase <-cs.abort:\n\t\treturn cs.abortErr\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\tcase <-cs.reqCancel:\n\t\treturn errRequestCanceled\n\tdefault:\n\t}\n\n\t// Encode headers.\n\t//\n\t// we send: HEADERS{1}, CONTINUATION{0,} + DATA{0,} (DATA is\n\t// sent by writeRequestBody below, along with any Trailers,\n\t// again in form HEADERS{1}, CONTINUATION{0,})\n\ttrailers, err := commaSeparatedTrailers(req)\n\tif err != nil {\n\t\treturn err\n\t}\n\thasTrailers := trailers != \"\"\n\tcontentLen := actualContentLength(req)\n\thasBody := contentLen != 0\n\thdrs, err := cc.encodeHeaders(req, cs.requestedGzip, trailers, contentLen)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Write the request.\n\tendStream := !hasBody && !hasTrailers\n\tcs.sentHeaders = true\n\terr = cc.writeHeaders(cs.ID, endStream, int(cc.maxFrameSize), hdrs)\n\ttraceWroteHeaders(cs.trace)\n\treturn err\n}\n\n// cleanupWriteRequest performs post-request tasks.\n//\n// If err (the result of writeRequest) is non-nil and the stream is not closed,\n// cleanupWriteRequest will send a reset to the peer.\nfunc (cs *clientStream) cleanupWriteRequest(err error) {\n\tcc := cs.cc\n\n\tif cs.ID == 0 {\n\t\t// We were canceled before creating the stream, so return our reservation.\n\t\tcc.decrStreamReservations()\n\t}\n\n\t// TODO: write h12Compare test showing whether\n\t// Request.Body is closed by the Transport,\n\t// and in multiple cases: server replies <=299 and >299\n\t// while still writing request body\n\tcc.mu.Lock()\n\tmustCloseBody := false\n\tif cs.reqBody != nil && cs.reqBodyClosed == nil {\n\t\tmustCloseBody = true\n\t\tcs.reqBodyClosed = make(chan struct{})\n\t}\n\tbodyClosed := cs.reqBodyClosed\n\tcc.mu.Unlock()\n\tif mustCloseBody {\n\t\tcs.reqBody.Close()\n\t\tclose(bodyClosed)\n\t}\n\tif bodyClosed != nil {\n\t\t<-bodyClosed\n\t}\n\n\tif err != nil && cs.sentEndStream {\n\t\t// If the connection is closed immediately after the response is read,\n\t\t// we may be aborted before finishing up here. If the stream was closed\n\t\t// cleanly on both sides, there is no error.\n\t\tselect {\n\t\tcase <-cs.peerClosed:\n\t\t\terr = nil\n\t\tdefault:\n\t\t}\n\t}\n\tif err != nil {\n\t\tcs.abortStream(err) // possibly redundant, but harmless\n\t\tif cs.sentHeaders {\n\t\t\tif se, ok := err.(StreamError); ok {\n\t\t\t\tif se.Cause != errFromPeer {\n\t\t\t\t\tcc.writeStreamReset(cs.ID, se.Code, err)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcc.writeStreamReset(cs.ID, ErrCodeCancel, err)\n\t\t\t}\n\t\t}\n\t\tcs.bufPipe.CloseWithError(err) // no-op if already closed\n\t} else {\n\t\tif cs.sentHeaders && !cs.sentEndStream {\n\t\t\tcc.writeStreamReset(cs.ID, ErrCodeNo, nil)\n\t\t}\n\t\tcs.bufPipe.CloseWithError(errRequestCanceled)\n\t}\n\tif cs.ID != 0 {\n\t\tcc.forgetStreamID(cs.ID)\n\t}\n\n\tcc.wmu.Lock()\n\twerr := cc.werr\n\tcc.wmu.Unlock()\n\tif werr != nil {\n\t\tcc.Close()\n\t}\n\n\tclose(cs.donec)\n}\n\n// awaitOpenSlotForStreamLocked waits until len(streams) < maxConcurrentStreams.\n// Must hold cc.mu.\nfunc (cc *ClientConn) awaitOpenSlotForStreamLocked(cs *clientStream) error {\n\tfor {\n\t\tcc.lastActive = time.Now()\n\t\tif cc.closed || !cc.canTakeNewRequestLocked() {\n\t\t\treturn errClientConnUnusable\n\t\t}\n\t\tcc.lastIdle = time.Time{}\n\t\tif int64(len(cc.streams)) < int64(cc.maxConcurrentStreams) {\n\t\t\treturn nil\n\t\t}\n\t\tcc.pendingRequests++\n\t\tcc.cond.Wait()\n\t\tcc.pendingRequests--\n\t\tselect {\n\t\tcase <-cs.abort:\n\t\t\treturn cs.abortErr\n\t\tdefault:\n\t\t}\n\t}\n}\n\n// requires cc.wmu be held\nfunc (cc *ClientConn) writeHeaders(streamID uint32, endStream bool, maxFrameSize int, hdrs []byte) error {\n\tfirst := true // first frame written (HEADERS is first, then CONTINUATION)\n\tfor len(hdrs) > 0 && cc.werr == nil {\n\t\tchunk := hdrs\n\t\tif len(chunk) > maxFrameSize {\n\t\t\tchunk = chunk[:maxFrameSize]\n\t\t}\n\t\thdrs = hdrs[len(chunk):]\n\t\tendHeaders := len(hdrs) == 0\n\t\tif first {\n\t\t\tcc.fr.WriteHeaders(HeadersFrameParam{\n\t\t\t\tStreamID:      streamID,\n\t\t\t\tBlockFragment: chunk,\n\t\t\t\tEndStream:     endStream,\n\t\t\t\tEndHeaders:    endHeaders,\n\t\t\t})\n\t\t\tfirst = false\n\t\t} else {\n\t\t\tcc.fr.WriteContinuation(streamID, endHeaders, chunk)\n\t\t}\n\t}\n\tcc.bw.Flush()\n\treturn cc.werr\n}\n\n// internal error values; they don't escape to callers\nvar (\n\t// abort request body write; don't send cancel\n\terrStopReqBodyWrite = errors.New(\"http2: aborting request body write\")\n\n\t// abort request body write, but send stream reset of cancel.\n\terrStopReqBodyWriteAndCancel = errors.New(\"http2: canceling request\")\n\n\terrReqBodyTooLong = errors.New(\"http2: request body larger than specified content length\")\n)\n\n// frameScratchBufferLen returns the length of a buffer to use for\n// outgoing request bodies to read/write to/from.\n//\n// It returns max(1, min(peer's advertised max frame size,\n// Request.ContentLength+1, 512KB)).\nfunc (cs *clientStream) frameScratchBufferLen(maxFrameSize int) int {\n\tconst max = 512 << 10\n\tn := int64(maxFrameSize)\n\tif n > max {\n\t\tn = max\n\t}\n\tif cl := cs.reqBodyContentLength; cl != -1 && cl+1 < n {\n\t\t// Add an extra byte past the declared content-length to\n\t\t// give the caller's Request.Body io.Reader a chance to\n\t\t// give us more bytes than they declared, so we can catch it\n\t\t// early.\n\t\tn = cl + 1\n\t}\n\tif n < 1 {\n\t\treturn 1\n\t}\n\treturn int(n) // doesn't truncate; max is 512K\n}\n\n// Seven bufPools manage different frame sizes. This helps to avoid scenarios where long-running\n// streaming requests using small frame sizes occupy large buffers initially allocated for prior\n// requests needing big buffers. The size ranges are as follows:\n// {0 KB, 16 KB], {16 KB, 32 KB], {32 KB, 64 KB], {64 KB, 128 KB], {128 KB, 256 KB],\n// {256 KB, 512 KB], {512 KB, infinity}\n// In practice, the maximum scratch buffer size should not exceed 512 KB due to\n// frameScratchBufferLen(maxFrameSize), thus the \"infinity pool\" should never be used.\n// It exists mainly as a safety measure, for potential future increases in max buffer size.\nvar bufPools [7]sync.Pool // of *[]byte\nfunc bufPoolIndex(size int) int {\n\tif size <= 16384 {\n\t\treturn 0\n\t}\n\tsize -= 1\n\tbits := bits.Len(uint(size))\n\tindex := bits - 14\n\tif index >= len(bufPools) {\n\t\treturn len(bufPools) - 1\n\t}\n\treturn index\n}\n\nfunc (cs *clientStream) writeRequestBody(req *http.Request) (err error) {\n\tcc := cs.cc\n\tbody := cs.reqBody\n\tsentEnd := false // whether we sent the final DATA frame w/ END_STREAM\n\n\thasTrailers := req.Trailer != nil\n\tremainLen := cs.reqBodyContentLength\n\thasContentLen := remainLen != -1\n\n\tcc.mu.Lock()\n\tmaxFrameSize := int(cc.maxFrameSize)\n\tcc.mu.Unlock()\n\n\t// Scratch buffer for reading into & writing from.\n\tscratchLen := cs.frameScratchBufferLen(maxFrameSize)\n\tvar buf []byte\n\tindex := bufPoolIndex(scratchLen)\n\tif bp, ok := bufPools[index].Get().(*[]byte); ok && len(*bp) >= scratchLen {\n\t\tdefer bufPools[index].Put(bp)\n\t\tbuf = *bp\n\t} else {\n\t\tbuf = make([]byte, scratchLen)\n\t\tdefer bufPools[index].Put(&buf)\n\t}\n\n\tvar sawEOF bool\n\tfor !sawEOF {\n\t\tn, err := body.Read(buf)\n\t\tif hasContentLen {\n\t\t\tremainLen -= int64(n)\n\t\t\tif remainLen == 0 && err == nil {\n\t\t\t\t// The request body's Content-Length was predeclared and\n\t\t\t\t// we just finished reading it all, but the underlying io.Reader\n\t\t\t\t// returned the final chunk with a nil error (which is one of\n\t\t\t\t// the two valid things a Reader can do at EOF). Because we'd prefer\n\t\t\t\t// to send the END_STREAM bit early, double-check that we're actually\n\t\t\t\t// at EOF. Subsequent reads should return (0, EOF) at this point.\n\t\t\t\t// If either value is different, we return an error in one of two ways below.\n\t\t\t\tvar scratch [1]byte\n\t\t\t\tvar n1 int\n\t\t\t\tn1, err = body.Read(scratch[:])\n\t\t\t\tremainLen -= int64(n1)\n\t\t\t}\n\t\t\tif remainLen < 0 {\n\t\t\t\terr = errReqBodyTooLong\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\tcc.mu.Lock()\n\t\t\tbodyClosed := cs.reqBodyClosed != nil\n\t\t\tcc.mu.Unlock()\n\t\t\tswitch {\n\t\t\tcase bodyClosed:\n\t\t\t\treturn errStopReqBodyWrite\n\t\t\tcase err == io.EOF:\n\t\t\t\tsawEOF = true\n\t\t\t\terr = nil\n\t\t\tdefault:\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tremain := buf[:n]\n\t\tfor len(remain) > 0 && err == nil {\n\t\t\tvar allowed int32\n\t\t\tallowed, err = cs.awaitFlowControl(len(remain))\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcc.wmu.Lock()\n\t\t\tdata := remain[:allowed]\n\t\t\tremain = remain[allowed:]\n\t\t\tsentEnd = sawEOF && len(remain) == 0 && !hasTrailers\n\t\t\terr = cc.fr.WriteData(cs.ID, sentEnd, data)\n\t\t\tif err == nil {\n\t\t\t\t// TODO(bradfitz): this flush is for latency, not bandwidth.\n\t\t\t\t// Most requests won't need this. Make this opt-in or\n\t\t\t\t// opt-out?  Use some heuristic on the body type? Nagel-like\n\t\t\t\t// timers?  Based on 'n'? Only last chunk of this for loop,\n\t\t\t\t// unless flow control tokens are low? For now, always.\n\t\t\t\t// If we change this, see comment below.\n\t\t\t\terr = cc.bw.Flush()\n\t\t\t}\n\t\t\tcc.wmu.Unlock()\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif sentEnd {\n\t\t// Already sent END_STREAM (which implies we have no\n\t\t// trailers) and flushed, because currently all\n\t\t// WriteData frames above get a flush. So we're done.\n\t\treturn nil\n\t}\n\n\t// Since the RoundTrip contract permits the caller to \"mutate or reuse\"\n\t// a request after the Response's Body is closed, verify that this hasn't\n\t// happened before accessing the trailers.\n\tcc.mu.Lock()\n\ttrailer := req.Trailer\n\terr = cs.abortErr\n\tcc.mu.Unlock()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcc.wmu.Lock()\n\tdefer cc.wmu.Unlock()\n\tvar trls []byte\n\tif len(trailer) > 0 {\n\t\ttrls, err = cc.encodeTrailers(trailer)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Two ways to send END_STREAM: either with trailers, or\n\t// with an empty DATA frame.\n\tif len(trls) > 0 {\n\t\terr = cc.writeHeaders(cs.ID, true, maxFrameSize, trls)\n\t} else {\n\t\terr = cc.fr.WriteData(cs.ID, true, nil)\n\t}\n\tif ferr := cc.bw.Flush(); ferr != nil && err == nil {\n\t\terr = ferr\n\t}\n\treturn err\n}\n\n// awaitFlowControl waits for [1, min(maxBytes, cc.cs.maxFrameSize)] flow\n// control tokens from the server.\n// It returns either the non-zero number of tokens taken or an error\n// if the stream is dead.\nfunc (cs *clientStream) awaitFlowControl(maxBytes int) (taken int32, err error) {\n\tcc := cs.cc\n\tctx := cs.ctx\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\tfor {\n\t\tif cc.closed {\n\t\t\treturn 0, errClientConnClosed\n\t\t}\n\t\tif cs.reqBodyClosed != nil {\n\t\t\treturn 0, errStopReqBodyWrite\n\t\t}\n\t\tselect {\n\t\tcase <-cs.abort:\n\t\t\treturn 0, cs.abortErr\n\t\tcase <-ctx.Done():\n\t\t\treturn 0, ctx.Err()\n\t\tcase <-cs.reqCancel:\n\t\t\treturn 0, errRequestCanceled\n\t\tdefault:\n\t\t}\n\t\tif a := cs.flow.available(); a > 0 {\n\t\t\ttake := a\n\t\t\tif int(take) > maxBytes {\n\n\t\t\t\ttake = int32(maxBytes) // can't truncate int; take is int32\n\t\t\t}\n\t\t\tif take > int32(cc.maxFrameSize) {\n\t\t\t\ttake = int32(cc.maxFrameSize)\n\t\t\t}\n\t\t\tcs.flow.take(take)\n\t\t\treturn take, nil\n\t\t}\n\t\tcc.cond.Wait()\n\t}\n}\n\nvar errNilRequestURL = errors.New(\"http2: Request.URI is nil\")\n\n// requires cc.wmu be held.\nfunc (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trailers string, contentLength int64) ([]byte, error) {\n\tcc.hbuf.Reset()\n\tif req.URL == nil {\n\t\treturn nil, errNilRequestURL\n\t}\n\n\thost := req.Host\n\tif host == \"\" {\n\t\thost = req.URL.Host\n\t}\n\thost, err := httpguts.PunycodeHostPort(host)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !httpguts.ValidHostHeader(host) {\n\t\treturn nil, errors.New(\"http2: invalid Host header\")\n\t}\n\n\tvar path string\n\tif req.Method != \"CONNECT\" {\n\t\tpath = req.URL.RequestURI()\n\t\tif !validPseudoPath(path) {\n\t\t\torig := path\n\t\t\tpath = strings.TrimPrefix(path, req.URL.Scheme+\"://\"+host)\n\t\t\tif !validPseudoPath(path) {\n\t\t\t\tif req.URL.Opaque != \"\" {\n\t\t\t\t\treturn nil, fmt.Errorf(\"invalid request :path %q from URL.Opaque = %q\", orig, req.URL.Opaque)\n\t\t\t\t} else {\n\t\t\t\t\treturn nil, fmt.Errorf(\"invalid request :path %q\", orig)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check for any invalid headers and return an error before we\n\t// potentially pollute our hpack state. (We want to be able to\n\t// continue to reuse the hpack encoder for future requests)\n\tfor k, vv := range req.Header {\n\t\tif !httpguts.ValidHeaderFieldName(k) {\n\t\t\treturn nil, fmt.Errorf(\"invalid HTTP header name %q\", k)\n\t\t}\n\t\tfor _, v := range vv {\n\t\t\tif !httpguts.ValidHeaderFieldValue(v) {\n\t\t\t\t// Don't include the value in the error, because it may be sensitive.\n\t\t\t\treturn nil, fmt.Errorf(\"invalid HTTP header value for header %q\", k)\n\t\t\t}\n\t\t}\n\t}\n\n\tenumerateHeaders := func(f func(name, value string)) {\n\t\t// 8.1.2.3 Request Pseudo-Header Fields\n\t\t// The :path pseudo-header field includes the path and query parts of the\n\t\t// target URI (the path-absolute production and optionally a '?' character\n\t\t// followed by the query production, see Sections 3.3 and 3.4 of\n\t\t// [RFC3986]).\n\t\tf(\":authority\", host)\n\t\tm := req.Method\n\t\tif m == \"\" {\n\t\t\tm = http.MethodGet\n\t\t}\n\t\tf(\":method\", m)\n\t\tif req.Method != \"CONNECT\" {\n\t\t\tf(\":path\", path)\n\t\t\tf(\":scheme\", req.URL.Scheme)\n\t\t}\n\t\tif trailers != \"\" {\n\t\t\tf(\"trailer\", trailers)\n\t\t}\n\n\t\tvar didUA bool\n\t\tfor k, vv := range req.Header {\n\t\t\tif asciiEqualFold(k, \"host\") || asciiEqualFold(k, \"content-length\") {\n\t\t\t\t// Host is :authority, already sent.\n\t\t\t\t// Content-Length is automatic, set below.\n\t\t\t\tcontinue\n\t\t\t} else if asciiEqualFold(k, \"connection\") ||\n\t\t\t\tasciiEqualFold(k, \"proxy-connection\") ||\n\t\t\t\tasciiEqualFold(k, \"transfer-encoding\") ||\n\t\t\t\tasciiEqualFold(k, \"upgrade\") ||\n\t\t\t\tasciiEqualFold(k, \"keep-alive\") {\n\t\t\t\t// Per 8.1.2.2 Connection-Specific Header\n\t\t\t\t// Fields, don't send connection-specific\n\t\t\t\t// fields. We have already checked if any\n\t\t\t\t// are error-worthy so just ignore the rest.\n\t\t\t\tcontinue\n\t\t\t} else if asciiEqualFold(k, \"user-agent\") {\n\t\t\t\t// Match Go's http1 behavior: at most one\n\t\t\t\t// User-Agent. If set to nil or empty string,\n\t\t\t\t// then omit it. Otherwise if not mentioned,\n\t\t\t\t// include the default (below).\n\t\t\t\tdidUA = true\n\t\t\t\tif len(vv) < 1 {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tvv = vv[:1]\n\t\t\t\tif vv[0] == \"\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else if asciiEqualFold(k, \"cookie\") {\n\t\t\t\t// Per 8.1.2.5 To allow for better compression efficiency, the\n\t\t\t\t// Cookie header field MAY be split into separate header fields,\n\t\t\t\t// each with one or more cookie-pairs.\n\t\t\t\tfor _, v := range vv {\n\t\t\t\t\tfor {\n\t\t\t\t\t\tp := strings.IndexByte(v, ';')\n\t\t\t\t\t\tif p < 0 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tf(\"cookie\", v[:p])\n\t\t\t\t\t\tp++\n\t\t\t\t\t\t// strip space after semicolon if any.\n\t\t\t\t\t\tfor p+1 <= len(v) && v[p] == ' ' {\n\t\t\t\t\t\t\tp++\n\t\t\t\t\t\t}\n\t\t\t\t\t\tv = v[p:]\n\t\t\t\t\t}\n\t\t\t\t\tif len(v) > 0 {\n\t\t\t\t\t\tf(\"cookie\", v)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfor _, v := range vv {\n\t\t\t\tf(k, v)\n\t\t\t}\n\t\t}\n\t\tif shouldSendReqContentLength(req.Method, contentLength) {\n\t\t\tf(\"content-length\", strconv.FormatInt(contentLength, 10))\n\t\t}\n\t\tif addGzipHeader {\n\t\t\tf(\"accept-encoding\", \"gzip\")\n\t\t}\n\t\tif !didUA {\n\t\t\tf(\"user-agent\", defaultUserAgent)\n\t\t}\n\t}\n\n\t// Do a first pass over the headers counting bytes to ensure\n\t// we don't exceed cc.peerMaxHeaderListSize. This is done as a\n\t// separate pass before encoding the headers to prevent\n\t// modifying the hpack state.\n\thlSize := uint64(0)\n\tenumerateHeaders(func(name, value string) {\n\t\thf := hpack.HeaderField{Name: name, Value: value}\n\t\thlSize += uint64(hf.Size())\n\t})\n\n\tif hlSize > cc.peerMaxHeaderListSize {\n\t\treturn nil, errRequestHeaderListSize\n\t}\n\n\ttrace := httptrace.ContextClientTrace(req.Context())\n\ttraceHeaders := traceHasWroteHeaderField(trace)\n\n\t// Header list size is ok. Write the headers.\n\tenumerateHeaders(func(name, value string) {\n\t\tname, ascii := lowerHeader(name)\n\t\tif !ascii {\n\t\t\t// Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header\n\t\t\t// field names have to be ASCII characters (just as in HTTP/1.x).\n\t\t\treturn\n\t\t}\n\t\tcc.writeHeader(name, value)\n\t\tif traceHeaders {\n\t\t\ttraceWroteHeaderField(trace, name, value)\n\t\t}\n\t})\n\n\treturn cc.hbuf.Bytes(), nil\n}\n\n// shouldSendReqContentLength reports whether the http2.Transport should send\n// a \"content-length\" request header. This logic is basically a copy of the net/http\n// transferWriter.shouldSendContentLength.\n// The contentLength is the corrected contentLength (so 0 means actually 0, not unknown).\n// -1 means unknown.\nfunc shouldSendReqContentLength(method string, contentLength int64) bool {\n\tif contentLength > 0 {\n\t\treturn true\n\t}\n\tif contentLength < 0 {\n\t\treturn false\n\t}\n\t// For zero bodies, whether we send a content-length depends on the method.\n\t// It also kinda doesn't matter for http2 either way, with END_STREAM.\n\tswitch method {\n\tcase \"POST\", \"PUT\", \"PATCH\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// requires cc.wmu be held.\nfunc (cc *ClientConn) encodeTrailers(trailer http.Header) ([]byte, error) {\n\tcc.hbuf.Reset()\n\n\thlSize := uint64(0)\n\tfor k, vv := range trailer {\n\t\tfor _, v := range vv {\n\t\t\thf := hpack.HeaderField{Name: k, Value: v}\n\t\t\thlSize += uint64(hf.Size())\n\t\t}\n\t}\n\tif hlSize > cc.peerMaxHeaderListSize {\n\t\treturn nil, errRequestHeaderListSize\n\t}\n\n\tfor k, vv := range trailer {\n\t\tlowKey, ascii := lowerHeader(k)\n\t\tif !ascii {\n\t\t\t// Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header\n\t\t\t// field names have to be ASCII characters (just as in HTTP/1.x).\n\t\t\tcontinue\n\t\t}\n\t\t// Transfer-Encoding, etc.. have already been filtered at the\n\t\t// start of RoundTrip\n\t\tfor _, v := range vv {\n\t\t\tcc.writeHeader(lowKey, v)\n\t\t}\n\t}\n\treturn cc.hbuf.Bytes(), nil\n}\n\nfunc (cc *ClientConn) writeHeader(name, value string) {\n\tif VerboseLogs {\n\t\tlog.Printf(\"http2: Transport encoding header %q = %q\", name, value)\n\t}\n\tcc.henc.WriteField(hpack.HeaderField{Name: name, Value: value})\n}\n\ntype resAndError struct {\n\t_   incomparable\n\tres *http.Response\n\terr error\n}\n\n// requires cc.mu be held.\nfunc (cc *ClientConn) addStreamLocked(cs *clientStream) {\n\tcs.flow.add(int32(cc.initialWindowSize))\n\tcs.flow.setConnFlow(&cc.flow)\n\tcs.inflow.init(transportDefaultStreamFlow)\n\tcs.ID = cc.nextStreamID\n\tcc.nextStreamID += 2\n\tcc.streams[cs.ID] = cs\n\tif cs.ID == 0 {\n\t\tpanic(\"assigned stream ID 0\")\n\t}\n}\n\nfunc (cc *ClientConn) forgetStreamID(id uint32) {\n\tcc.mu.Lock()\n\tslen := len(cc.streams)\n\tdelete(cc.streams, id)\n\tif len(cc.streams) != slen-1 {\n\t\tpanic(\"forgetting unknown stream id\")\n\t}\n\tcc.lastActive = time.Now()\n\tif len(cc.streams) == 0 && cc.idleTimer != nil {\n\t\tcc.idleTimer.Reset(cc.idleTimeout)\n\t\tcc.lastIdle = time.Now()\n\t}\n\t// Wake up writeRequestBody via clientStream.awaitFlowControl and\n\t// wake up RoundTrip if there is a pending request.\n\tcc.cond.Broadcast()\n\n\tcloseOnIdle := cc.singleUse || cc.doNotReuse || cc.t.disableKeepAlives() || cc.goAway != nil\n\tif closeOnIdle && cc.streamsReserved == 0 && len(cc.streams) == 0 {\n\t\tif VerboseLogs {\n\t\t\tcc.vlogf(\"http2: Transport closing idle conn %p (forSingleUse=%v, maxStream=%v)\", cc, cc.singleUse, cc.nextStreamID-2)\n\t\t}\n\t\tcc.closed = true\n\t\tdefer cc.closeConn()\n\t}\n\n\tcc.mu.Unlock()\n}\n\n// clientConnReadLoop is the state owned by the clientConn's frame-reading readLoop.\ntype clientConnReadLoop struct {\n\t_  incomparable\n\tcc *ClientConn\n}\n\n// readLoop runs in its own goroutine and reads and dispatches frames.\nfunc (cc *ClientConn) readLoop() {\n\trl := &clientConnReadLoop{cc: cc}\n\tdefer rl.cleanup()\n\tcc.readerErr = rl.run()\n\tif ce, ok := cc.readerErr.(ConnectionError); ok {\n\t\tcc.wmu.Lock()\n\t\tcc.fr.WriteGoAway(0, ErrCode(ce), nil)\n\t\tcc.wmu.Unlock()\n\t}\n}\n\n// GoAwayError is returned by the Transport when the server closes the\n// TCP connection after sending a GOAWAY frame.\ntype GoAwayError struct {\n\tLastStreamID uint32\n\tErrCode      ErrCode\n\tDebugData    string\n}\n\nfunc (e GoAwayError) Error() string {\n\treturn fmt.Sprintf(\"http2: server sent GOAWAY and closed the connection; LastStreamID=%v, ErrCode=%v, debug=%q\",\n\t\te.LastStreamID, e.ErrCode, e.DebugData)\n}\n\nfunc isEOFOrNetReadError(err error) bool {\n\tif err == io.EOF {\n\t\treturn true\n\t}\n\tne, ok := err.(*net.OpError)\n\treturn ok && ne.Op == \"read\"\n}\n\nfunc (rl *clientConnReadLoop) cleanup() {\n\tcc := rl.cc\n\tcc.t.connPool().MarkDead(cc)\n\tdefer cc.closeConn()\n\tdefer close(cc.readerDone)\n\n\tif cc.idleTimer != nil {\n\t\tcc.idleTimer.Stop()\n\t}\n\n\t// Close any response bodies if the server closes prematurely.\n\t// TODO: also do this if we've written the headers but not\n\t// gotten a response yet.\n\terr := cc.readerErr\n\tcc.mu.Lock()\n\tif cc.goAway != nil && isEOFOrNetReadError(err) {\n\t\terr = GoAwayError{\n\t\t\tLastStreamID: cc.goAway.LastStreamID,\n\t\t\tErrCode:      cc.goAway.ErrCode,\n\t\t\tDebugData:    cc.goAwayDebug,\n\t\t}\n\t} else if err == io.EOF {\n\t\terr = io.ErrUnexpectedEOF\n\t}\n\tcc.closed = true\n\n\tfor _, cs := range cc.streams {\n\t\tselect {\n\t\tcase <-cs.peerClosed:\n\t\t\t// The server closed the stream before closing the conn,\n\t\t\t// so no need to interrupt it.\n\t\tdefault:\n\t\t\tcs.abortStreamLocked(err)\n\t\t}\n\t}\n\tcc.cond.Broadcast()\n\tcc.mu.Unlock()\n}\n\n// countReadFrameError calls Transport.CountError with a string\n// representing err.\nfunc (cc *ClientConn) countReadFrameError(err error) {\n\tf := cc.t.CountError\n\tif f == nil || err == nil {\n\t\treturn\n\t}\n\tif ce, ok := err.(ConnectionError); ok {\n\t\terrCode := ErrCode(ce)\n\t\tf(fmt.Sprintf(\"read_frame_conn_error_%s\", errCode.stringToken()))\n\t\treturn\n\t}\n\tif errors.Is(err, io.EOF) {\n\t\tf(\"read_frame_eof\")\n\t\treturn\n\t}\n\tif errors.Is(err, io.ErrUnexpectedEOF) {\n\t\tf(\"read_frame_unexpected_eof\")\n\t\treturn\n\t}\n\tif errors.Is(err, ErrFrameTooLarge) {\n\t\tf(\"read_frame_too_large\")\n\t\treturn\n\t}\n\tf(\"read_frame_other\")\n}\n\nfunc (rl *clientConnReadLoop) run() error {\n\tcc := rl.cc\n\tgotSettings := false\n\treadIdleTimeout := cc.t.ReadIdleTimeout\n\tvar t *time.Timer\n\tif readIdleTimeout != 0 {\n\t\tt = time.AfterFunc(readIdleTimeout, cc.healthCheck)\n\t\tdefer t.Stop()\n\t}\n\tfor {\n\t\tf, err := cc.fr.ReadFrame()\n\t\tif t != nil {\n\t\t\tt.Reset(readIdleTimeout)\n\t\t}\n\t\tif err != nil {\n\t\t\tcc.vlogf(\"http2: Transport readFrame error on conn %p: (%T) %v\", cc, err, err)\n\t\t}\n\t\tif se, ok := err.(StreamError); ok {\n\t\t\tif cs := rl.streamByID(se.StreamID); cs != nil {\n\t\t\t\tif se.Cause == nil {\n\t\t\t\t\tse.Cause = cc.fr.errDetail\n\t\t\t\t}\n\t\t\t\trl.endStreamError(cs, se)\n\t\t\t}\n\t\t\tcontinue\n\t\t} else if err != nil {\n\t\t\tcc.countReadFrameError(err)\n\t\t\treturn err\n\t\t}\n\t\tif VerboseLogs {\n\t\t\tcc.vlogf(\"http2: Transport received %s\", summarizeFrame(f))\n\t\t}\n\t\tif !gotSettings {\n\t\t\tif _, ok := f.(*SettingsFrame); !ok {\n\t\t\t\tcc.logf(\"protocol error: received %T before a SETTINGS frame\", f)\n\t\t\t\treturn ConnectionError(ErrCodeProtocol)\n\t\t\t}\n\t\t\tgotSettings = true\n\t\t}\n\n\t\tswitch f := f.(type) {\n\t\tcase *MetaHeadersFrame:\n\t\t\terr = rl.processHeaders(f)\n\t\tcase *DataFrame:\n\t\t\terr = rl.processData(f)\n\t\tcase *GoAwayFrame:\n\t\t\terr = rl.processGoAway(f)\n\t\tcase *RSTStreamFrame:\n\t\t\terr = rl.processResetStream(f)\n\t\tcase *SettingsFrame:\n\t\t\terr = rl.processSettings(f)\n\t\tcase *PushPromiseFrame:\n\t\t\terr = rl.processPushPromise(f)\n\t\tcase *WindowUpdateFrame:\n\t\t\terr = rl.processWindowUpdate(f)\n\t\tcase *PingFrame:\n\t\t\terr = rl.processPing(f)\n\t\tdefault:\n\t\t\tcc.logf(\"Transport: unhandled response frame type %T\", f)\n\t\t}\n\t\tif err != nil {\n\t\t\tif VerboseLogs {\n\t\t\t\tcc.vlogf(\"http2: Transport conn %p received error from processing frame %v: %v\", cc, summarizeFrame(f), err)\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t}\n}\n\nfunc (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error {\n\tcs := rl.streamByID(f.StreamID)\n\tif cs == nil {\n\t\t// We'd get here if we canceled a request while the\n\t\t// server had its response still in flight. So if this\n\t\t// was just something we canceled, ignore it.\n\t\treturn nil\n\t}\n\tif cs.readClosed {\n\t\trl.endStreamError(cs, StreamError{\n\t\t\tStreamID: f.StreamID,\n\t\t\tCode:     ErrCodeProtocol,\n\t\t\tCause:    errors.New(\"protocol error: headers after END_STREAM\"),\n\t\t})\n\t\treturn nil\n\t}\n\tif !cs.firstByte {\n\t\tif cs.trace != nil {\n\t\t\t// TODO(bradfitz): move first response byte earlier,\n\t\t\t// when we first read the 9 byte header, not waiting\n\t\t\t// until all the HEADERS+CONTINUATION frames have been\n\t\t\t// merged. This works for now.\n\t\t\ttraceFirstResponseByte(cs.trace)\n\t\t}\n\t\tcs.firstByte = true\n\t}\n\tif !cs.pastHeaders {\n\t\tcs.pastHeaders = true\n\t} else {\n\t\treturn rl.processTrailers(cs, f)\n\t}\n\n\tres, err := rl.handleResponse(cs, f)\n\tif err != nil {\n\t\tif _, ok := err.(ConnectionError); ok {\n\t\t\treturn err\n\t\t}\n\t\t// Any other error type is a stream error.\n\t\trl.endStreamError(cs, StreamError{\n\t\t\tStreamID: f.StreamID,\n\t\t\tCode:     ErrCodeProtocol,\n\t\t\tCause:    err,\n\t\t})\n\t\treturn nil // return nil from process* funcs to keep conn alive\n\t}\n\tif res == nil {\n\t\t// (nil, nil) special case. See handleResponse docs.\n\t\treturn nil\n\t}\n\tcs.resTrailer = &res.Trailer\n\tcs.res = res\n\tclose(cs.respHeaderRecv)\n\tif f.StreamEnded() {\n\t\trl.endStream(cs)\n\t}\n\treturn nil\n}\n\n// may return error types nil, or ConnectionError. Any other error value\n// is a StreamError of type ErrCodeProtocol. The returned error in that case\n// is the detail.\n//\n// As a special case, handleResponse may return (nil, nil) to skip the\n// frame (currently only used for 1xx responses).\nfunc (rl *clientConnReadLoop) handleResponse(cs *clientStream, f *MetaHeadersFrame) (*http.Response, error) {\n\tif f.Truncated {\n\t\treturn nil, errResponseHeaderListSize\n\t}\n\n\tstatus := f.PseudoValue(\"status\")\n\tif status == \"\" {\n\t\treturn nil, errors.New(\"malformed response from server: missing status pseudo header\")\n\t}\n\tstatusCode, err := strconv.Atoi(status)\n\tif err != nil {\n\t\treturn nil, errors.New(\"malformed response from server: malformed non-numeric status pseudo header\")\n\t}\n\n\tregularFields := f.RegularFields()\n\tstrs := make([]string, len(regularFields))\n\theader := make(http.Header, len(regularFields))\n\tres := &http.Response{\n\t\tProto:      \"HTTP/2.0\",\n\t\tProtoMajor: 2,\n\t\tHeader:     header,\n\t\tStatusCode: statusCode,\n\t\tStatus:     status + \" \" + http.StatusText(statusCode),\n\t}\n\tfor _, hf := range regularFields {\n\t\tkey := canonicalHeader(hf.Name)\n\t\tif key == \"Trailer\" {\n\t\t\tt := res.Trailer\n\t\t\tif t == nil {\n\t\t\t\tt = make(http.Header)\n\t\t\t\tres.Trailer = t\n\t\t\t}\n\t\t\tforeachHeaderElement(hf.Value, func(v string) {\n\t\t\t\tt[canonicalHeader(v)] = nil\n\t\t\t})\n\t\t} else {\n\t\t\tvv := header[key]\n\t\t\tif vv == nil && len(strs) > 0 {\n\t\t\t\t// More than likely this will be a single-element key.\n\t\t\t\t// Most headers aren't multi-valued.\n\t\t\t\t// Set the capacity on strs[0] to 1, so any future append\n\t\t\t\t// won't extend the slice into the other strings.\n\t\t\t\tvv, strs = strs[:1:1], strs[1:]\n\t\t\t\tvv[0] = hf.Value\n\t\t\t\theader[key] = vv\n\t\t\t} else {\n\t\t\t\theader[key] = append(vv, hf.Value)\n\t\t\t}\n\t\t}\n\t}\n\n\tif statusCode >= 100 && statusCode <= 199 {\n\t\tif f.StreamEnded() {\n\t\t\treturn nil, errors.New(\"1xx informational response with END_STREAM flag\")\n\t\t}\n\t\tcs.num1xx++\n\t\tconst max1xxResponses = 5 // arbitrary bound on number of informational responses, same as net/http\n\t\tif cs.num1xx > max1xxResponses {\n\t\t\treturn nil, errors.New(\"http2: too many 1xx informational responses\")\n\t\t}\n\t\tif fn := cs.get1xxTraceFunc(); fn != nil {\n\t\t\tif err := fn(statusCode, textproto.MIMEHeader(header)); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\tif statusCode == 100 {\n\t\t\ttraceGot100Continue(cs.trace)\n\t\t\tselect {\n\t\t\tcase cs.on100 <- struct{}{}:\n\t\t\tdefault:\n\t\t\t}\n\t\t}\n\t\tcs.pastHeaders = false // do it all again\n\t\treturn nil, nil\n\t}\n\n\tres.ContentLength = -1\n\tif clens := res.Header[\"Content-Length\"]; len(clens) == 1 {\n\t\tif cl, err := strconv.ParseUint(clens[0], 10, 63); err == nil {\n\t\t\tres.ContentLength = int64(cl)\n\t\t} else {\n\t\t\t// TODO: care? unlike http/1, it won't mess up our framing, so it's\n\t\t\t// more safe smuggling-wise to ignore.\n\t\t}\n\t} else if len(clens) > 1 {\n\t\t// TODO: care? unlike http/1, it won't mess up our framing, so it's\n\t\t// more safe smuggling-wise to ignore.\n\t} else if f.StreamEnded() && !cs.isHead {\n\t\tres.ContentLength = 0\n\t}\n\n\tif cs.isHead {\n\t\tres.Body = noBody\n\t\treturn res, nil\n\t}\n\n\tif f.StreamEnded() {\n\t\tif res.ContentLength > 0 {\n\t\t\tres.Body = missingBody{}\n\t\t} else {\n\t\t\tres.Body = noBody\n\t\t}\n\t\treturn res, nil\n\t}\n\n\tcs.bufPipe.setBuffer(&dataBuffer{expected: res.ContentLength})\n\tcs.bytesRemain = res.ContentLength\n\tres.Body = transportResponseBody{cs}\n\n\tif cs.requestedGzip && asciiEqualFold(res.Header.Get(\"Content-Encoding\"), \"gzip\") {\n\t\tres.Header.Del(\"Content-Encoding\")\n\t\tres.Header.Del(\"Content-Length\")\n\t\tres.ContentLength = -1\n\t\tres.Body = &gzipReader{body: res.Body}\n\t\tres.Uncompressed = true\n\t}\n\treturn res, nil\n}\n\nfunc (rl *clientConnReadLoop) processTrailers(cs *clientStream, f *MetaHeadersFrame) error {\n\tif cs.pastTrailers {\n\t\t// Too many HEADERS frames for this stream.\n\t\treturn ConnectionError(ErrCodeProtocol)\n\t}\n\tcs.pastTrailers = true\n\tif !f.StreamEnded() {\n\t\t// We expect that any headers for trailers also\n\t\t// has END_STREAM.\n\t\treturn ConnectionError(ErrCodeProtocol)\n\t}\n\tif len(f.PseudoFields()) > 0 {\n\t\t// No pseudo header fields are defined for trailers.\n\t\t// TODO: ConnectionError might be overly harsh? Check.\n\t\treturn ConnectionError(ErrCodeProtocol)\n\t}\n\n\ttrailer := make(http.Header)\n\tfor _, hf := range f.RegularFields() {\n\t\tkey := canonicalHeader(hf.Name)\n\t\ttrailer[key] = append(trailer[key], hf.Value)\n\t}\n\tcs.trailer = trailer\n\n\trl.endStream(cs)\n\treturn nil\n}\n\n// transportResponseBody is the concrete type of Transport.RoundTrip's\n// Response.Body. It is an io.ReadCloser.\ntype transportResponseBody struct {\n\tcs *clientStream\n}\n\nfunc (b transportResponseBody) Read(p []byte) (n int, err error) {\n\tcs := b.cs\n\tcc := cs.cc\n\n\tif cs.readErr != nil {\n\t\treturn 0, cs.readErr\n\t}\n\tn, err = b.cs.bufPipe.Read(p)\n\tif cs.bytesRemain != -1 {\n\t\tif int64(n) > cs.bytesRemain {\n\t\t\tn = int(cs.bytesRemain)\n\t\t\tif err == nil {\n\t\t\t\terr = errors.New(\"net/http: server replied with more than declared Content-Length; truncated\")\n\t\t\t\tcs.abortStream(err)\n\t\t\t}\n\t\t\tcs.readErr = err\n\t\t\treturn int(cs.bytesRemain), err\n\t\t}\n\t\tcs.bytesRemain -= int64(n)\n\t\tif err == io.EOF && cs.bytesRemain > 0 {\n\t\t\terr = io.ErrUnexpectedEOF\n\t\t\tcs.readErr = err\n\t\t\treturn n, err\n\t\t}\n\t}\n\tif n == 0 {\n\t\t// No flow control tokens to send back.\n\t\treturn\n\t}\n\n\tcc.mu.Lock()\n\tconnAdd := cc.inflow.add(n)\n\tvar streamAdd int32\n\tif err == nil { // No need to refresh if the stream is over or failed.\n\t\tstreamAdd = cs.inflow.add(n)\n\t}\n\tcc.mu.Unlock()\n\n\tif connAdd != 0 || streamAdd != 0 {\n\t\tcc.wmu.Lock()\n\t\tdefer cc.wmu.Unlock()\n\t\tif connAdd != 0 {\n\t\t\tcc.fr.WriteWindowUpdate(0, mustUint31(connAdd))\n\t\t}\n\t\tif streamAdd != 0 {\n\t\t\tcc.fr.WriteWindowUpdate(cs.ID, mustUint31(streamAdd))\n\t\t}\n\t\tcc.bw.Flush()\n\t}\n\treturn\n}\n\nvar errClosedResponseBody = errors.New(\"http2: response body closed\")\n\nfunc (b transportResponseBody) Close() error {\n\tcs := b.cs\n\tcc := cs.cc\n\n\tcs.bufPipe.BreakWithError(errClosedResponseBody)\n\tcs.abortStream(errClosedResponseBody)\n\n\tunread := cs.bufPipe.Len()\n\tif unread > 0 {\n\t\tcc.mu.Lock()\n\t\t// Return connection-level flow control.\n\t\tconnAdd := cc.inflow.add(unread)\n\t\tcc.mu.Unlock()\n\n\t\t// TODO(dneil): Acquiring this mutex can block indefinitely.\n\t\t// Move flow control return to a goroutine?\n\t\tcc.wmu.Lock()\n\t\t// Return connection-level flow control.\n\t\tif connAdd > 0 {\n\t\t\tcc.fr.WriteWindowUpdate(0, uint32(connAdd))\n\t\t}\n\t\tcc.bw.Flush()\n\t\tcc.wmu.Unlock()\n\t}\n\n\tselect {\n\tcase <-cs.donec:\n\tcase <-cs.ctx.Done():\n\t\t// See golang/go#49366: The net/http package can cancel the\n\t\t// request context after the response body is fully read.\n\t\t// Don't treat this as an error.\n\t\treturn nil\n\tcase <-cs.reqCancel:\n\t\treturn errRequestCanceled\n\t}\n\treturn nil\n}\n\nfunc (rl *clientConnReadLoop) processData(f *DataFrame) error {\n\tcc := rl.cc\n\tcs := rl.streamByID(f.StreamID)\n\tdata := f.Data()\n\tif cs == nil {\n\t\tcc.mu.Lock()\n\t\tneverSent := cc.nextStreamID\n\t\tcc.mu.Unlock()\n\t\tif f.StreamID >= neverSent {\n\t\t\t// We never asked for this.\n\t\t\tcc.logf(\"http2: Transport received unsolicited DATA frame; closing connection\")\n\t\t\treturn ConnectionError(ErrCodeProtocol)\n\t\t}\n\t\t// We probably did ask for this, but canceled. Just ignore it.\n\t\t// TODO: be stricter here? only silently ignore things which\n\t\t// we canceled, but not things which were closed normally\n\t\t// by the peer? Tough without accumulating too much state.\n\n\t\t// But at least return their flow control:\n\t\tif f.Length > 0 {\n\t\t\tcc.mu.Lock()\n\t\t\tok := cc.inflow.take(f.Length)\n\t\t\tconnAdd := cc.inflow.add(int(f.Length))\n\t\t\tcc.mu.Unlock()\n\t\t\tif !ok {\n\t\t\t\treturn ConnectionError(ErrCodeFlowControl)\n\t\t\t}\n\t\t\tif connAdd > 0 {\n\t\t\t\tcc.wmu.Lock()\n\t\t\t\tcc.fr.WriteWindowUpdate(0, uint32(connAdd))\n\t\t\t\tcc.bw.Flush()\n\t\t\t\tcc.wmu.Unlock()\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\tif cs.readClosed {\n\t\tcc.logf(\"protocol error: received DATA after END_STREAM\")\n\t\trl.endStreamError(cs, StreamError{\n\t\t\tStreamID: f.StreamID,\n\t\t\tCode:     ErrCodeProtocol,\n\t\t})\n\t\treturn nil\n\t}\n\tif !cs.firstByte {\n\t\tcc.logf(\"protocol error: received DATA before a HEADERS frame\")\n\t\trl.endStreamError(cs, StreamError{\n\t\t\tStreamID: f.StreamID,\n\t\t\tCode:     ErrCodeProtocol,\n\t\t})\n\t\treturn nil\n\t}\n\tif f.Length > 0 {\n\t\tif cs.isHead && len(data) > 0 {\n\t\t\tcc.logf(\"protocol error: received DATA on a HEAD request\")\n\t\t\trl.endStreamError(cs, StreamError{\n\t\t\t\tStreamID: f.StreamID,\n\t\t\t\tCode:     ErrCodeProtocol,\n\t\t\t})\n\t\t\treturn nil\n\t\t}\n\t\t// Check connection-level flow control.\n\t\tcc.mu.Lock()\n\t\tif !takeInflows(&cc.inflow, &cs.inflow, f.Length) {\n\t\t\tcc.mu.Unlock()\n\t\t\treturn ConnectionError(ErrCodeFlowControl)\n\t\t}\n\t\t// Return any padded flow control now, since we won't\n\t\t// refund it later on body reads.\n\t\tvar refund int\n\t\tif pad := int(f.Length) - len(data); pad > 0 {\n\t\t\trefund += pad\n\t\t}\n\n\t\tdidReset := false\n\t\tvar err error\n\t\tif len(data) > 0 {\n\t\t\tif _, err = cs.bufPipe.Write(data); err != nil {\n\t\t\t\t// Return len(data) now if the stream is already closed,\n\t\t\t\t// since data will never be read.\n\t\t\t\tdidReset = true\n\t\t\t\trefund += len(data)\n\t\t\t}\n\t\t}\n\n\t\tsendConn := cc.inflow.add(refund)\n\t\tvar sendStream int32\n\t\tif !didReset {\n\t\t\tsendStream = cs.inflow.add(refund)\n\t\t}\n\t\tcc.mu.Unlock()\n\n\t\tif sendConn > 0 || sendStream > 0 {\n\t\t\tcc.wmu.Lock()\n\t\t\tif sendConn > 0 {\n\t\t\t\tcc.fr.WriteWindowUpdate(0, uint32(sendConn))\n\t\t\t}\n\t\t\tif sendStream > 0 {\n\t\t\t\tcc.fr.WriteWindowUpdate(cs.ID, uint32(sendStream))\n\t\t\t}\n\t\t\tcc.bw.Flush()\n\t\t\tcc.wmu.Unlock()\n\t\t}\n\n\t\tif err != nil {\n\t\t\trl.endStreamError(cs, err)\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tif f.StreamEnded() {\n\t\trl.endStream(cs)\n\t}\n\treturn nil\n}\n\nfunc (rl *clientConnReadLoop) endStream(cs *clientStream) {\n\t// TODO: check that any declared content-length matches, like\n\t// server.go's (*stream).endStream method.\n\tif !cs.readClosed {\n\t\tcs.readClosed = true\n\t\t// Close cs.bufPipe and cs.peerClosed with cc.mu held to avoid a\n\t\t// race condition: The caller can read io.EOF from Response.Body\n\t\t// and close the body before we close cs.peerClosed, causing\n\t\t// cleanupWriteRequest to send a RST_STREAM.\n\t\trl.cc.mu.Lock()\n\t\tdefer rl.cc.mu.Unlock()\n\t\tcs.bufPipe.closeWithErrorAndCode(io.EOF, cs.copyTrailers)\n\t\tclose(cs.peerClosed)\n\t}\n}\n\nfunc (rl *clientConnReadLoop) endStreamError(cs *clientStream, err error) {\n\tcs.readAborted = true\n\tcs.abortStream(err)\n}\n\nfunc (rl *clientConnReadLoop) streamByID(id uint32) *clientStream {\n\trl.cc.mu.Lock()\n\tdefer rl.cc.mu.Unlock()\n\tcs := rl.cc.streams[id]\n\tif cs != nil && !cs.readAborted {\n\t\treturn cs\n\t}\n\treturn nil\n}\n\nfunc (cs *clientStream) copyTrailers() {\n\tfor k, vv := range cs.trailer {\n\t\tt := cs.resTrailer\n\t\tif *t == nil {\n\t\t\t*t = make(http.Header)\n\t\t}\n\t\t(*t)[k] = vv\n\t}\n}\n\nfunc (rl *clientConnReadLoop) processGoAway(f *GoAwayFrame) error {\n\tcc := rl.cc\n\tcc.t.connPool().MarkDead(cc)\n\tif f.ErrCode != 0 {\n\t\t// TODO: deal with GOAWAY more. particularly the error code\n\t\tcc.vlogf(\"transport got GOAWAY with error code = %v\", f.ErrCode)\n\t\tif fn := cc.t.CountError; fn != nil {\n\t\t\tfn(\"recv_goaway_\" + f.ErrCode.stringToken())\n\t\t}\n\t}\n\tcc.setGoAway(f)\n\treturn nil\n}\n\nfunc (rl *clientConnReadLoop) processSettings(f *SettingsFrame) error {\n\tcc := rl.cc\n\t// Locking both mu and wmu here allows frame encoding to read settings with only wmu held.\n\t// Acquiring wmu when f.IsAck() is unnecessary, but convenient and mostly harmless.\n\tcc.wmu.Lock()\n\tdefer cc.wmu.Unlock()\n\n\tif err := rl.processSettingsNoWrite(f); err != nil {\n\t\treturn err\n\t}\n\tif !f.IsAck() {\n\t\tcc.fr.WriteSettingsAck()\n\t\tcc.bw.Flush()\n\t}\n\treturn nil\n}\n\nfunc (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error {\n\tcc := rl.cc\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\n\tif f.IsAck() {\n\t\tif cc.wantSettingsAck {\n\t\t\tcc.wantSettingsAck = false\n\t\t\treturn nil\n\t\t}\n\t\treturn ConnectionError(ErrCodeProtocol)\n\t}\n\n\tvar seenMaxConcurrentStreams bool\n\terr := f.ForeachSetting(func(s Setting) error {\n\t\tswitch s.ID {\n\t\tcase SettingMaxFrameSize:\n\t\t\tcc.maxFrameSize = s.Val\n\t\tcase SettingMaxConcurrentStreams:\n\t\t\tcc.maxConcurrentStreams = s.Val\n\t\t\tseenMaxConcurrentStreams = true\n\t\tcase SettingMaxHeaderListSize:\n\t\t\tcc.peerMaxHeaderListSize = uint64(s.Val)\n\t\tcase SettingInitialWindowSize:\n\t\t\t// Values above the maximum flow-control\n\t\t\t// window size of 2^31-1 MUST be treated as a\n\t\t\t// connection error (Section 5.4.1) of type\n\t\t\t// FLOW_CONTROL_ERROR.\n\t\t\tif s.Val > math.MaxInt32 {\n\t\t\t\treturn ConnectionError(ErrCodeFlowControl)\n\t\t\t}\n\n\t\t\t// Adjust flow control of currently-open\n\t\t\t// frames by the difference of the old initial\n\t\t\t// window size and this one.\n\t\t\tdelta := int32(s.Val) - int32(cc.initialWindowSize)\n\t\t\tfor _, cs := range cc.streams {\n\t\t\t\tcs.flow.add(delta)\n\t\t\t}\n\t\t\tcc.cond.Broadcast()\n\n\t\t\tcc.initialWindowSize = s.Val\n\t\tcase SettingHeaderTableSize:\n\t\t\tcc.henc.SetMaxDynamicTableSize(s.Val)\n\t\t\tcc.peerMaxHeaderTableSize = s.Val\n\t\tdefault:\n\t\t\tcc.vlogf(\"Unhandled Setting: %v\", s)\n\t\t}\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !cc.seenSettings {\n\t\tif !seenMaxConcurrentStreams {\n\t\t\t// This was the servers initial SETTINGS frame and it\n\t\t\t// didn't contain a MAX_CONCURRENT_STREAMS field so\n\t\t\t// increase the number of concurrent streams this\n\t\t\t// connection can establish to our default.\n\t\t\tcc.maxConcurrentStreams = defaultMaxConcurrentStreams\n\t\t}\n\t\tcc.seenSettings = true\n\t}\n\n\treturn nil\n}\n\nfunc (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error {\n\tcc := rl.cc\n\tcs := rl.streamByID(f.StreamID)\n\tif f.StreamID != 0 && cs == nil {\n\t\treturn nil\n\t}\n\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\n\tfl := &cc.flow\n\tif cs != nil {\n\t\tfl = &cs.flow\n\t}\n\tif !fl.add(int32(f.Increment)) {\n\t\treturn ConnectionError(ErrCodeFlowControl)\n\t}\n\tcc.cond.Broadcast()\n\treturn nil\n}\n\nfunc (rl *clientConnReadLoop) processResetStream(f *RSTStreamFrame) error {\n\tcs := rl.streamByID(f.StreamID)\n\tif cs == nil {\n\t\t// TODO: return error if server tries to RST_STREAM an idle stream\n\t\treturn nil\n\t}\n\tserr := streamError(cs.ID, f.ErrCode)\n\tserr.Cause = errFromPeer\n\tif f.ErrCode == ErrCodeProtocol {\n\t\trl.cc.SetDoNotReuse()\n\t}\n\tif fn := cs.cc.t.CountError; fn != nil {\n\t\tfn(\"recv_rststream_\" + f.ErrCode.stringToken())\n\t}\n\tcs.abortStream(serr)\n\n\tcs.bufPipe.CloseWithError(serr)\n\treturn nil\n}\n\n// Ping sends a PING frame to the server and waits for the ack.\nfunc (cc *ClientConn) Ping(ctx context.Context) error {\n\tc := make(chan struct{})\n\t// Generate a random payload\n\tvar p [8]byte\n\tfor {\n\t\tif _, err := rand.Read(p[:]); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcc.mu.Lock()\n\t\t// check for dup before insert\n\t\tif _, found := cc.pings[p]; !found {\n\t\t\tcc.pings[p] = c\n\t\t\tcc.mu.Unlock()\n\t\t\tbreak\n\t\t}\n\t\tcc.mu.Unlock()\n\t}\n\terrc := make(chan error, 1)\n\tgo func() {\n\t\tcc.wmu.Lock()\n\t\tdefer cc.wmu.Unlock()\n\t\tif err := cc.fr.WritePing(false, p); err != nil {\n\t\t\terrc <- err\n\t\t\treturn\n\t\t}\n\t\tif err := cc.bw.Flush(); err != nil {\n\t\t\terrc <- err\n\t\t\treturn\n\t\t}\n\t}()\n\tselect {\n\tcase <-c:\n\t\treturn nil\n\tcase err := <-errc:\n\t\treturn err\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\tcase <-cc.readerDone:\n\t\t// connection closed\n\t\treturn cc.readerErr\n\t}\n}\n\nfunc (rl *clientConnReadLoop) processPing(f *PingFrame) error {\n\tif f.IsAck() {\n\t\tcc := rl.cc\n\t\tcc.mu.Lock()\n\t\tdefer cc.mu.Unlock()\n\t\t// If ack, notify listener if any\n\t\tif c, ok := cc.pings[f.Data]; ok {\n\t\t\tclose(c)\n\t\t\tdelete(cc.pings, f.Data)\n\t\t}\n\t\treturn nil\n\t}\n\tcc := rl.cc\n\tcc.wmu.Lock()\n\tdefer cc.wmu.Unlock()\n\tif err := cc.fr.WritePing(true, f.Data); err != nil {\n\t\treturn err\n\t}\n\treturn cc.bw.Flush()\n}\n\nfunc (rl *clientConnReadLoop) processPushPromise(f *PushPromiseFrame) error {\n\t// We told the peer we don't want them.\n\t// Spec says:\n\t// \"PUSH_PROMISE MUST NOT be sent if the SETTINGS_ENABLE_PUSH\n\t// setting of the peer endpoint is set to 0. An endpoint that\n\t// has set this setting and has received acknowledgement MUST\n\t// treat the receipt of a PUSH_PROMISE frame as a connection\n\t// error (Section 5.4.1) of type PROTOCOL_ERROR.\"\n\treturn ConnectionError(ErrCodeProtocol)\n}\n\nfunc (cc *ClientConn) writeStreamReset(streamID uint32, code ErrCode, err error) {\n\t// TODO: map err to more interesting error codes, once the\n\t// HTTP community comes up with some. But currently for\n\t// RST_STREAM there's no equivalent to GOAWAY frame's debug\n\t// data, and the error codes are all pretty vague (\"cancel\").\n\tcc.wmu.Lock()\n\tcc.fr.WriteRSTStream(streamID, code)\n\tcc.bw.Flush()\n\tcc.wmu.Unlock()\n}\n\nvar (\n\terrResponseHeaderListSize = errors.New(\"http2: response header list larger than advertised limit\")\n\terrRequestHeaderListSize  = errors.New(\"http2: request header list larger than peer's advertised limit\")\n)\n\nfunc (cc *ClientConn) logf(format string, args ...interface{}) {\n\tcc.t.logf(format, args...)\n}\n\nfunc (cc *ClientConn) vlogf(format string, args ...interface{}) {\n\tcc.t.vlogf(format, args...)\n}\n\nfunc (t *Transport) vlogf(format string, args ...interface{}) {\n\tif VerboseLogs {\n\t\tt.logf(format, args...)\n\t}\n}\n\nfunc (t *Transport) logf(format string, args ...interface{}) {\n\tlog.Printf(format, args...)\n}\n\nvar noBody io.ReadCloser = noBodyReader{}\n\ntype noBodyReader struct{}\n\nfunc (noBodyReader) Close() error             { return nil }\nfunc (noBodyReader) Read([]byte) (int, error) { return 0, io.EOF }\n\ntype missingBody struct{}\n\nfunc (missingBody) Close() error             { return nil }\nfunc (missingBody) Read([]byte) (int, error) { return 0, io.ErrUnexpectedEOF }\n\nfunc strSliceContains(ss []string, s string) bool {\n\tfor _, v := range ss {\n\t\tif v == s {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\ntype erringRoundTripper struct{ err error }\n\nfunc (rt erringRoundTripper) RoundTripErr() error                             { return rt.err }\nfunc (rt erringRoundTripper) RoundTrip(*http.Request) (*http.Response, error) { return nil, rt.err }\n\n// gzipReader wraps a response body so it can lazily\n// call gzip.NewReader on the first call to Read\ntype gzipReader struct {\n\t_    incomparable\n\tbody io.ReadCloser // underlying Response.Body\n\tzr   *gzip.Reader  // lazily-initialized gzip reader\n\tzerr error         // sticky error\n}\n\nfunc (gz *gzipReader) Read(p []byte) (n int, err error) {\n\tif gz.zerr != nil {\n\t\treturn 0, gz.zerr\n\t}\n\tif gz.zr == nil {\n\t\tgz.zr, err = gzip.NewReader(gz.body)\n\t\tif err != nil {\n\t\t\tgz.zerr = err\n\t\t\treturn 0, err\n\t\t}\n\t}\n\treturn gz.zr.Read(p)\n}\n\nfunc (gz *gzipReader) Close() error {\n\tif err := gz.body.Close(); err != nil {\n\t\treturn err\n\t}\n\tgz.zerr = fs.ErrClosed\n\treturn nil\n}\n\ntype errorReader struct{ err error }\n\nfunc (r errorReader) Read(p []byte) (int, error) { return 0, r.err }\n\n// isConnectionCloseRequest reports whether req should use its own\n// connection for a single request and then close the connection.\nfunc isConnectionCloseRequest(req *http.Request) bool {\n\treturn req.Close || httpguts.HeaderValuesContainsToken(req.Header[\"Connection\"], \"close\")\n}\n\n// registerHTTPSProtocol calls Transport.RegisterProtocol but\n// converting panics into errors.\nfunc registerHTTPSProtocol(t *http.Transport, rt noDialH2RoundTripper) (err error) {\n\tdefer func() {\n\t\tif e := recover(); e != nil {\n\t\t\terr = fmt.Errorf(\"%v\", e)\n\t\t}\n\t}()\n\tt.RegisterProtocol(\"https\", rt)\n\treturn nil\n}\n\n// noDialH2RoundTripper is a RoundTripper which only tries to complete the request\n// if there's already has a cached connection to the host.\n// (The field is exported so it can be accessed via reflect from net/http; tested\n// by TestNoDialH2RoundTripperType)\ntype noDialH2RoundTripper struct{ *Transport }\n\nfunc (rt noDialH2RoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {\n\tres, err := rt.Transport.RoundTrip(req)\n\tif isNoCachedConnError(err) {\n\t\treturn nil, http.ErrSkipAltProtocol\n\t}\n\treturn res, err\n}\n\nfunc (t *Transport) idleConnTimeout() time.Duration {\n\tif t.t1 != nil {\n\t\treturn t.t1.IdleConnTimeout\n\t}\n\treturn 0\n}\n\nfunc traceGetConn(req *http.Request, hostPort string) {\n\ttrace := httptrace.ContextClientTrace(req.Context())\n\tif trace == nil || trace.GetConn == nil {\n\t\treturn\n\t}\n\ttrace.GetConn(hostPort)\n}\n\nfunc traceGotConn(req *http.Request, cc *ClientConn, reused bool) {\n\ttrace := httptrace.ContextClientTrace(req.Context())\n\tif trace == nil || trace.GotConn == nil {\n\t\treturn\n\t}\n\tci := httptrace.GotConnInfo{Conn: cc.tconn}\n\tci.Reused = reused\n\tcc.mu.Lock()\n\tci.WasIdle = len(cc.streams) == 0 && reused\n\tif ci.WasIdle && !cc.lastActive.IsZero() {\n\t\tci.IdleTime = time.Since(cc.lastActive)\n\t}\n\tcc.mu.Unlock()\n\n\ttrace.GotConn(ci)\n}\n\nfunc traceWroteHeaders(trace *httptrace.ClientTrace) {\n\tif trace != nil && trace.WroteHeaders != nil {\n\t\ttrace.WroteHeaders()\n\t}\n}\n\nfunc traceGot100Continue(trace *httptrace.ClientTrace) {\n\tif trace != nil && trace.Got100Continue != nil {\n\t\ttrace.Got100Continue()\n\t}\n}\n\nfunc traceWait100Continue(trace *httptrace.ClientTrace) {\n\tif trace != nil && trace.Wait100Continue != nil {\n\t\ttrace.Wait100Continue()\n\t}\n}\n\nfunc traceWroteRequest(trace *httptrace.ClientTrace, err error) {\n\tif trace != nil && trace.WroteRequest != nil {\n\t\ttrace.WroteRequest(httptrace.WroteRequestInfo{Err: err})\n\t}\n}\n\nfunc traceFirstResponseByte(trace *httptrace.ClientTrace) {\n\tif trace != nil && trace.GotFirstResponseByte != nil {\n\t\ttrace.GotFirstResponseByte()\n\t}\n}\n\nfunc traceHasWroteHeaderField(trace *httptrace.ClientTrace) bool {\n\treturn trace != nil && trace.WroteHeaderField != nil\n}\n\nfunc traceWroteHeaderField(trace *httptrace.ClientTrace, k, v string) {\n\tif trace != nil && trace.WroteHeaderField != nil {\n\t\ttrace.WroteHeaderField(k, []string{v})\n\t}\n}\n\nfunc traceGot1xxResponseFunc(trace *httptrace.ClientTrace) func(int, textproto.MIMEHeader) error {\n\tif trace != nil {\n\t\treturn trace.Got1xxResponse\n\t}\n\treturn nil\n}\n\n// dialTLSWithContext uses tls.Dialer, added in Go 1.15, to open a TLS\n// connection.\nfunc (t *Transport) dialTLSWithContext(ctx context.Context, network, addr string, cfg *tls.Config) (*tls.Conn, error) {\n\tdialer := &tls.Dialer{\n\t\tConfig: cfg,\n\t}\n\tcn, err := dialer.DialContext(ctx, network, addr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ttlsCn := cn.(*tls.Conn) // DialContext comment promises this will always succeed\n\treturn tlsCn, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/write.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"log\"\n\t\"net/http\"\n\t\"net/url\"\n\n\t\"golang.org/x/net/http/httpguts\"\n\t\"golang.org/x/net/http2/hpack\"\n)\n\n// writeFramer is implemented by any type that is used to write frames.\ntype writeFramer interface {\n\twriteFrame(writeContext) error\n\n\t// staysWithinBuffer reports whether this writer promises that\n\t// it will only write less than or equal to size bytes, and it\n\t// won't Flush the write context.\n\tstaysWithinBuffer(size int) bool\n}\n\n// writeContext is the interface needed by the various frame writer\n// types below. All the writeFrame methods below are scheduled via the\n// frame writing scheduler (see writeScheduler in writesched.go).\n//\n// This interface is implemented by *serverConn.\n//\n// TODO: decide whether to a) use this in the client code (which didn't\n// end up using this yet, because it has a simpler design, not\n// currently implementing priorities), or b) delete this and\n// make the server code a bit more concrete.\ntype writeContext interface {\n\tFramer() *Framer\n\tFlush() error\n\tCloseConn() error\n\t// HeaderEncoder returns an HPACK encoder that writes to the\n\t// returned buffer.\n\tHeaderEncoder() (*hpack.Encoder, *bytes.Buffer)\n}\n\n// writeEndsStream reports whether w writes a frame that will transition\n// the stream to a half-closed local state. This returns false for RST_STREAM,\n// which closes the entire stream (not just the local half).\nfunc writeEndsStream(w writeFramer) bool {\n\tswitch v := w.(type) {\n\tcase *writeData:\n\t\treturn v.endStream\n\tcase *writeResHeaders:\n\t\treturn v.endStream\n\tcase nil:\n\t\t// This can only happen if the caller reuses w after it's\n\t\t// been intentionally nil'ed out to prevent use. Keep this\n\t\t// here to catch future refactoring breaking it.\n\t\tpanic(\"writeEndsStream called on nil writeFramer\")\n\t}\n\treturn false\n}\n\ntype flushFrameWriter struct{}\n\nfunc (flushFrameWriter) writeFrame(ctx writeContext) error {\n\treturn ctx.Flush()\n}\n\nfunc (flushFrameWriter) staysWithinBuffer(max int) bool { return false }\n\ntype writeSettings []Setting\n\nfunc (s writeSettings) staysWithinBuffer(max int) bool {\n\tconst settingSize = 6 // uint16 + uint32\n\treturn frameHeaderLen+settingSize*len(s) <= max\n\n}\n\nfunc (s writeSettings) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WriteSettings([]Setting(s)...)\n}\n\ntype writeGoAway struct {\n\tmaxStreamID uint32\n\tcode        ErrCode\n}\n\nfunc (p *writeGoAway) writeFrame(ctx writeContext) error {\n\terr := ctx.Framer().WriteGoAway(p.maxStreamID, p.code, nil)\n\tctx.Flush() // ignore error: we're hanging up on them anyway\n\treturn err\n}\n\nfunc (*writeGoAway) staysWithinBuffer(max int) bool { return false } // flushes\n\ntype writeData struct {\n\tstreamID  uint32\n\tp         []byte\n\tendStream bool\n}\n\nfunc (w *writeData) String() string {\n\treturn fmt.Sprintf(\"writeData(stream=%d, p=%d, endStream=%v)\", w.streamID, len(w.p), w.endStream)\n}\n\nfunc (w *writeData) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WriteData(w.streamID, w.endStream, w.p)\n}\n\nfunc (w *writeData) staysWithinBuffer(max int) bool {\n\treturn frameHeaderLen+len(w.p) <= max\n}\n\n// handlerPanicRST is the message sent from handler goroutines when\n// the handler panics.\ntype handlerPanicRST struct {\n\tStreamID uint32\n}\n\nfunc (hp handlerPanicRST) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WriteRSTStream(hp.StreamID, ErrCodeInternal)\n}\n\nfunc (hp handlerPanicRST) staysWithinBuffer(max int) bool { return frameHeaderLen+4 <= max }\n\nfunc (se StreamError) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WriteRSTStream(se.StreamID, se.Code)\n}\n\nfunc (se StreamError) staysWithinBuffer(max int) bool { return frameHeaderLen+4 <= max }\n\ntype writePingAck struct{ pf *PingFrame }\n\nfunc (w writePingAck) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WritePing(true, w.pf.Data)\n}\n\nfunc (w writePingAck) staysWithinBuffer(max int) bool { return frameHeaderLen+len(w.pf.Data) <= max }\n\ntype writeSettingsAck struct{}\n\nfunc (writeSettingsAck) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WriteSettingsAck()\n}\n\nfunc (writeSettingsAck) staysWithinBuffer(max int) bool { return frameHeaderLen <= max }\n\n// splitHeaderBlock splits headerBlock into fragments so that each fragment fits\n// in a single frame, then calls fn for each fragment. firstFrag/lastFrag are true\n// for the first/last fragment, respectively.\nfunc splitHeaderBlock(ctx writeContext, headerBlock []byte, fn func(ctx writeContext, frag []byte, firstFrag, lastFrag bool) error) error {\n\t// For now we're lazy and just pick the minimum MAX_FRAME_SIZE\n\t// that all peers must support (16KB). Later we could care\n\t// more and send larger frames if the peer advertised it, but\n\t// there's little point. Most headers are small anyway (so we\n\t// generally won't have CONTINUATION frames), and extra frames\n\t// only waste 9 bytes anyway.\n\tconst maxFrameSize = 16384\n\n\tfirst := true\n\tfor len(headerBlock) > 0 {\n\t\tfrag := headerBlock\n\t\tif len(frag) > maxFrameSize {\n\t\t\tfrag = frag[:maxFrameSize]\n\t\t}\n\t\theaderBlock = headerBlock[len(frag):]\n\t\tif err := fn(ctx, frag, first, len(headerBlock) == 0); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirst = false\n\t}\n\treturn nil\n}\n\n// writeResHeaders is a request to write a HEADERS and 0+ CONTINUATION frames\n// for HTTP response headers or trailers from a server handler.\ntype writeResHeaders struct {\n\tstreamID    uint32\n\thttpResCode int         // 0 means no \":status\" line\n\th           http.Header // may be nil\n\ttrailers    []string    // if non-nil, which keys of h to write. nil means all.\n\tendStream   bool\n\n\tdate          string\n\tcontentType   string\n\tcontentLength string\n}\n\nfunc encKV(enc *hpack.Encoder, k, v string) {\n\tif VerboseLogs {\n\t\tlog.Printf(\"http2: server encoding header %q = %q\", k, v)\n\t}\n\tenc.WriteField(hpack.HeaderField{Name: k, Value: v})\n}\n\nfunc (w *writeResHeaders) staysWithinBuffer(max int) bool {\n\t// TODO: this is a common one. It'd be nice to return true\n\t// here and get into the fast path if we could be clever and\n\t// calculate the size fast enough, or at least a conservative\n\t// upper bound that usually fires. (Maybe if w.h and\n\t// w.trailers are nil, so we don't need to enumerate it.)\n\t// Otherwise I'm afraid that just calculating the length to\n\t// answer this question would be slower than the ~2µs benefit.\n\treturn false\n}\n\nfunc (w *writeResHeaders) writeFrame(ctx writeContext) error {\n\tenc, buf := ctx.HeaderEncoder()\n\tbuf.Reset()\n\n\tif w.httpResCode != 0 {\n\t\tencKV(enc, \":status\", httpCodeString(w.httpResCode))\n\t}\n\n\tencodeHeaders(enc, w.h, w.trailers)\n\n\tif w.contentType != \"\" {\n\t\tencKV(enc, \"content-type\", w.contentType)\n\t}\n\tif w.contentLength != \"\" {\n\t\tencKV(enc, \"content-length\", w.contentLength)\n\t}\n\tif w.date != \"\" {\n\t\tencKV(enc, \"date\", w.date)\n\t}\n\n\theaderBlock := buf.Bytes()\n\tif len(headerBlock) == 0 && w.trailers == nil {\n\t\tpanic(\"unexpected empty hpack\")\n\t}\n\n\treturn splitHeaderBlock(ctx, headerBlock, w.writeHeaderBlock)\n}\n\nfunc (w *writeResHeaders) writeHeaderBlock(ctx writeContext, frag []byte, firstFrag, lastFrag bool) error {\n\tif firstFrag {\n\t\treturn ctx.Framer().WriteHeaders(HeadersFrameParam{\n\t\t\tStreamID:      w.streamID,\n\t\t\tBlockFragment: frag,\n\t\t\tEndStream:     w.endStream,\n\t\t\tEndHeaders:    lastFrag,\n\t\t})\n\t} else {\n\t\treturn ctx.Framer().WriteContinuation(w.streamID, lastFrag, frag)\n\t}\n}\n\n// writePushPromise is a request to write a PUSH_PROMISE and 0+ CONTINUATION frames.\ntype writePushPromise struct {\n\tstreamID uint32   // pusher stream\n\tmethod   string   // for :method\n\turl      *url.URL // for :scheme, :authority, :path\n\th        http.Header\n\n\t// Creates an ID for a pushed stream. This runs on serveG just before\n\t// the frame is written. The returned ID is copied to promisedID.\n\tallocatePromisedID func() (uint32, error)\n\tpromisedID         uint32\n}\n\nfunc (w *writePushPromise) staysWithinBuffer(max int) bool {\n\t// TODO: see writeResHeaders.staysWithinBuffer\n\treturn false\n}\n\nfunc (w *writePushPromise) writeFrame(ctx writeContext) error {\n\tenc, buf := ctx.HeaderEncoder()\n\tbuf.Reset()\n\n\tencKV(enc, \":method\", w.method)\n\tencKV(enc, \":scheme\", w.url.Scheme)\n\tencKV(enc, \":authority\", w.url.Host)\n\tencKV(enc, \":path\", w.url.RequestURI())\n\tencodeHeaders(enc, w.h, nil)\n\n\theaderBlock := buf.Bytes()\n\tif len(headerBlock) == 0 {\n\t\tpanic(\"unexpected empty hpack\")\n\t}\n\n\treturn splitHeaderBlock(ctx, headerBlock, w.writeHeaderBlock)\n}\n\nfunc (w *writePushPromise) writeHeaderBlock(ctx writeContext, frag []byte, firstFrag, lastFrag bool) error {\n\tif firstFrag {\n\t\treturn ctx.Framer().WritePushPromise(PushPromiseParam{\n\t\t\tStreamID:      w.streamID,\n\t\t\tPromiseID:     w.promisedID,\n\t\t\tBlockFragment: frag,\n\t\t\tEndHeaders:    lastFrag,\n\t\t})\n\t} else {\n\t\treturn ctx.Framer().WriteContinuation(w.streamID, lastFrag, frag)\n\t}\n}\n\ntype write100ContinueHeadersFrame struct {\n\tstreamID uint32\n}\n\nfunc (w write100ContinueHeadersFrame) writeFrame(ctx writeContext) error {\n\tenc, buf := ctx.HeaderEncoder()\n\tbuf.Reset()\n\tencKV(enc, \":status\", \"100\")\n\treturn ctx.Framer().WriteHeaders(HeadersFrameParam{\n\t\tStreamID:      w.streamID,\n\t\tBlockFragment: buf.Bytes(),\n\t\tEndStream:     false,\n\t\tEndHeaders:    true,\n\t})\n}\n\nfunc (w write100ContinueHeadersFrame) staysWithinBuffer(max int) bool {\n\t// Sloppy but conservative:\n\treturn 9+2*(len(\":status\")+len(\"100\")) <= max\n}\n\ntype writeWindowUpdate struct {\n\tstreamID uint32 // or 0 for conn-level\n\tn        uint32\n}\n\nfunc (wu writeWindowUpdate) staysWithinBuffer(max int) bool { return frameHeaderLen+4 <= max }\n\nfunc (wu writeWindowUpdate) writeFrame(ctx writeContext) error {\n\treturn ctx.Framer().WriteWindowUpdate(wu.streamID, wu.n)\n}\n\n// encodeHeaders encodes an http.Header. If keys is not nil, then (k, h[k])\n// is encoded only if k is in keys.\nfunc encodeHeaders(enc *hpack.Encoder, h http.Header, keys []string) {\n\tif keys == nil {\n\t\tsorter := sorterPool.Get().(*sorter)\n\t\t// Using defer here, since the returned keys from the\n\t\t// sorter.Keys method is only valid until the sorter\n\t\t// is returned:\n\t\tdefer sorterPool.Put(sorter)\n\t\tkeys = sorter.Keys(h)\n\t}\n\tfor _, k := range keys {\n\t\tvv := h[k]\n\t\tk, ascii := lowerHeader(k)\n\t\tif !ascii {\n\t\t\t// Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header\n\t\t\t// field names have to be ASCII characters (just as in HTTP/1.x).\n\t\t\tcontinue\n\t\t}\n\t\tif !validWireHeaderFieldName(k) {\n\t\t\t// Skip it as backup paranoia. Per\n\t\t\t// golang.org/issue/14048, these should\n\t\t\t// already be rejected at a higher level.\n\t\t\tcontinue\n\t\t}\n\t\tisTE := k == \"transfer-encoding\"\n\t\tfor _, v := range vv {\n\t\t\tif !httpguts.ValidHeaderFieldValue(v) {\n\t\t\t\t// TODO: return an error? golang.org/issue/14048\n\t\t\t\t// For now just omit it.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// TODO: more of \"8.1.2.2 Connection-Specific Header Fields\"\n\t\t\tif isTE && v != \"trailers\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tencKV(enc, k, v)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/writesched.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport \"fmt\"\n\n// WriteScheduler is the interface implemented by HTTP/2 write schedulers.\n// Methods are never called concurrently.\ntype WriteScheduler interface {\n\t// OpenStream opens a new stream in the write scheduler.\n\t// It is illegal to call this with streamID=0 or with a streamID that is\n\t// already open -- the call may panic.\n\tOpenStream(streamID uint32, options OpenStreamOptions)\n\n\t// CloseStream closes a stream in the write scheduler. Any frames queued on\n\t// this stream should be discarded. It is illegal to call this on a stream\n\t// that is not open -- the call may panic.\n\tCloseStream(streamID uint32)\n\n\t// AdjustStream adjusts the priority of the given stream. This may be called\n\t// on a stream that has not yet been opened or has been closed. Note that\n\t// RFC 7540 allows PRIORITY frames to be sent on streams in any state. See:\n\t// https://tools.ietf.org/html/rfc7540#section-5.1\n\tAdjustStream(streamID uint32, priority PriorityParam)\n\n\t// Push queues a frame in the scheduler. In most cases, this will not be\n\t// called with wr.StreamID()!=0 unless that stream is currently open. The one\n\t// exception is RST_STREAM frames, which may be sent on idle or closed streams.\n\tPush(wr FrameWriteRequest)\n\n\t// Pop dequeues the next frame to write. Returns false if no frames can\n\t// be written. Frames with a given wr.StreamID() are Pop'd in the same\n\t// order they are Push'd, except RST_STREAM frames. No frames should be\n\t// discarded except by CloseStream.\n\tPop() (wr FrameWriteRequest, ok bool)\n}\n\n// OpenStreamOptions specifies extra options for WriteScheduler.OpenStream.\ntype OpenStreamOptions struct {\n\t// PusherID is zero if the stream was initiated by the client. Otherwise,\n\t// PusherID names the stream that pushed the newly opened stream.\n\tPusherID uint32\n}\n\n// FrameWriteRequest is a request to write a frame.\ntype FrameWriteRequest struct {\n\t// write is the interface value that does the writing, once the\n\t// WriteScheduler has selected this frame to write. The write\n\t// functions are all defined in write.go.\n\twrite writeFramer\n\n\t// stream is the stream on which this frame will be written.\n\t// nil for non-stream frames like PING and SETTINGS.\n\t// nil for RST_STREAM streams, which use the StreamError.StreamID field instead.\n\tstream *stream\n\n\t// done, if non-nil, must be a buffered channel with space for\n\t// 1 message and is sent the return value from write (or an\n\t// earlier error) when the frame has been written.\n\tdone chan error\n}\n\n// StreamID returns the id of the stream this frame will be written to.\n// 0 is used for non-stream frames such as PING and SETTINGS.\nfunc (wr FrameWriteRequest) StreamID() uint32 {\n\tif wr.stream == nil {\n\t\tif se, ok := wr.write.(StreamError); ok {\n\t\t\t// (*serverConn).resetStream doesn't set\n\t\t\t// stream because it doesn't necessarily have\n\t\t\t// one. So special case this type of write\n\t\t\t// message.\n\t\t\treturn se.StreamID\n\t\t}\n\t\treturn 0\n\t}\n\treturn wr.stream.id\n}\n\n// isControl reports whether wr is a control frame for MaxQueuedControlFrames\n// purposes. That includes non-stream frames and RST_STREAM frames.\nfunc (wr FrameWriteRequest) isControl() bool {\n\treturn wr.stream == nil\n}\n\n// DataSize returns the number of flow control bytes that must be consumed\n// to write this entire frame. This is 0 for non-DATA frames.\nfunc (wr FrameWriteRequest) DataSize() int {\n\tif wd, ok := wr.write.(*writeData); ok {\n\t\treturn len(wd.p)\n\t}\n\treturn 0\n}\n\n// Consume consumes min(n, available) bytes from this frame, where available\n// is the number of flow control bytes available on the stream. Consume returns\n// 0, 1, or 2 frames, where the integer return value gives the number of frames\n// returned.\n//\n// If flow control prevents consuming any bytes, this returns (_, _, 0). If\n// the entire frame was consumed, this returns (wr, _, 1). Otherwise, this\n// returns (consumed, rest, 2), where 'consumed' contains the consumed bytes and\n// 'rest' contains the remaining bytes. The consumed bytes are deducted from the\n// underlying stream's flow control budget.\nfunc (wr FrameWriteRequest) Consume(n int32) (FrameWriteRequest, FrameWriteRequest, int) {\n\tvar empty FrameWriteRequest\n\n\t// Non-DATA frames are always consumed whole.\n\twd, ok := wr.write.(*writeData)\n\tif !ok || len(wd.p) == 0 {\n\t\treturn wr, empty, 1\n\t}\n\n\t// Might need to split after applying limits.\n\tallowed := wr.stream.flow.available()\n\tif n < allowed {\n\t\tallowed = n\n\t}\n\tif wr.stream.sc.maxFrameSize < allowed {\n\t\tallowed = wr.stream.sc.maxFrameSize\n\t}\n\tif allowed <= 0 {\n\t\treturn empty, empty, 0\n\t}\n\tif len(wd.p) > int(allowed) {\n\t\twr.stream.flow.take(allowed)\n\t\tconsumed := FrameWriteRequest{\n\t\t\tstream: wr.stream,\n\t\t\twrite: &writeData{\n\t\t\t\tstreamID: wd.streamID,\n\t\t\t\tp:        wd.p[:allowed],\n\t\t\t\t// Even if the original had endStream set, there\n\t\t\t\t// are bytes remaining because len(wd.p) > allowed,\n\t\t\t\t// so we know endStream is false.\n\t\t\t\tendStream: false,\n\t\t\t},\n\t\t\t// Our caller is blocking on the final DATA frame, not\n\t\t\t// this intermediate frame, so no need to wait.\n\t\t\tdone: nil,\n\t\t}\n\t\trest := FrameWriteRequest{\n\t\t\tstream: wr.stream,\n\t\t\twrite: &writeData{\n\t\t\t\tstreamID:  wd.streamID,\n\t\t\t\tp:         wd.p[allowed:],\n\t\t\t\tendStream: wd.endStream,\n\t\t\t},\n\t\t\tdone: wr.done,\n\t\t}\n\t\treturn consumed, rest, 2\n\t}\n\n\t// The frame is consumed whole.\n\t// NB: This cast cannot overflow because allowed is <= math.MaxInt32.\n\twr.stream.flow.take(int32(len(wd.p)))\n\treturn wr, empty, 1\n}\n\n// String is for debugging only.\nfunc (wr FrameWriteRequest) String() string {\n\tvar des string\n\tif s, ok := wr.write.(fmt.Stringer); ok {\n\t\tdes = s.String()\n\t} else {\n\t\tdes = fmt.Sprintf(\"%T\", wr.write)\n\t}\n\treturn fmt.Sprintf(\"[FrameWriteRequest stream=%d, ch=%v, writer=%v]\", wr.StreamID(), wr.done != nil, des)\n}\n\n// replyToWriter sends err to wr.done and panics if the send must block\n// This does nothing if wr.done is nil.\nfunc (wr *FrameWriteRequest) replyToWriter(err error) {\n\tif wr.done == nil {\n\t\treturn\n\t}\n\tselect {\n\tcase wr.done <- err:\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unbuffered done channel passed in for type %T\", wr.write))\n\t}\n\twr.write = nil // prevent use (assume it's tainted after wr.done send)\n}\n\n// writeQueue is used by implementations of WriteScheduler.\ntype writeQueue struct {\n\ts          []FrameWriteRequest\n\tprev, next *writeQueue\n}\n\nfunc (q *writeQueue) empty() bool { return len(q.s) == 0 }\n\nfunc (q *writeQueue) push(wr FrameWriteRequest) {\n\tq.s = append(q.s, wr)\n}\n\nfunc (q *writeQueue) shift() FrameWriteRequest {\n\tif len(q.s) == 0 {\n\t\tpanic(\"invalid use of queue\")\n\t}\n\twr := q.s[0]\n\t// TODO: less copy-happy queue.\n\tcopy(q.s, q.s[1:])\n\tq.s[len(q.s)-1] = FrameWriteRequest{}\n\tq.s = q.s[:len(q.s)-1]\n\treturn wr\n}\n\n// consume consumes up to n bytes from q.s[0]. If the frame is\n// entirely consumed, it is removed from the queue. If the frame\n// is partially consumed, the frame is kept with the consumed\n// bytes removed. Returns true iff any bytes were consumed.\nfunc (q *writeQueue) consume(n int32) (FrameWriteRequest, bool) {\n\tif len(q.s) == 0 {\n\t\treturn FrameWriteRequest{}, false\n\t}\n\tconsumed, rest, numresult := q.s[0].Consume(n)\n\tswitch numresult {\n\tcase 0:\n\t\treturn FrameWriteRequest{}, false\n\tcase 1:\n\t\tq.shift()\n\tcase 2:\n\t\tq.s[0] = rest\n\t}\n\treturn consumed, true\n}\n\ntype writeQueuePool []*writeQueue\n\n// put inserts an unused writeQueue into the pool.\nfunc (p *writeQueuePool) put(q *writeQueue) {\n\tfor i := range q.s {\n\t\tq.s[i] = FrameWriteRequest{}\n\t}\n\tq.s = q.s[:0]\n\t*p = append(*p, q)\n}\n\n// get returns an empty writeQueue.\nfunc (p *writeQueuePool) get() *writeQueue {\n\tln := len(*p)\n\tif ln == 0 {\n\t\treturn new(writeQueue)\n\t}\n\tx := ln - 1\n\tq := (*p)[x]\n\t(*p)[x] = nil\n\t*p = (*p)[:x]\n\treturn q\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/writesched_priority.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"sort\"\n)\n\n// RFC 7540, Section 5.3.5: the default weight is 16.\nconst priorityDefaultWeight = 15 // 16 = 15 + 1\n\n// PriorityWriteSchedulerConfig configures a priorityWriteScheduler.\ntype PriorityWriteSchedulerConfig struct {\n\t// MaxClosedNodesInTree controls the maximum number of closed streams to\n\t// retain in the priority tree. Setting this to zero saves a small amount\n\t// of memory at the cost of performance.\n\t//\n\t// See RFC 7540, Section 5.3.4:\n\t//   \"It is possible for a stream to become closed while prioritization\n\t//   information ... is in transit. ... This potentially creates suboptimal\n\t//   prioritization, since the stream could be given a priority that is\n\t//   different from what is intended. To avoid these problems, an endpoint\n\t//   SHOULD retain stream prioritization state for a period after streams\n\t//   become closed. The longer state is retained, the lower the chance that\n\t//   streams are assigned incorrect or default priority values.\"\n\tMaxClosedNodesInTree int\n\n\t// MaxIdleNodesInTree controls the maximum number of idle streams to\n\t// retain in the priority tree. Setting this to zero saves a small amount\n\t// of memory at the cost of performance.\n\t//\n\t// See RFC 7540, Section 5.3.4:\n\t//   Similarly, streams that are in the \"idle\" state can be assigned\n\t//   priority or become a parent of other streams. This allows for the\n\t//   creation of a grouping node in the dependency tree, which enables\n\t//   more flexible expressions of priority. Idle streams begin with a\n\t//   default priority (Section 5.3.5).\n\tMaxIdleNodesInTree int\n\n\t// ThrottleOutOfOrderWrites enables write throttling to help ensure that\n\t// data is delivered in priority order. This works around a race where\n\t// stream B depends on stream A and both streams are about to call Write\n\t// to queue DATA frames. If B wins the race, a naive scheduler would eagerly\n\t// write as much data from B as possible, but this is suboptimal because A\n\t// is a higher-priority stream. With throttling enabled, we write a small\n\t// amount of data from B to minimize the amount of bandwidth that B can\n\t// steal from A.\n\tThrottleOutOfOrderWrites bool\n}\n\n// NewPriorityWriteScheduler constructs a WriteScheduler that schedules\n// frames by following HTTP/2 priorities as described in RFC 7540 Section 5.3.\n// If cfg is nil, default options are used.\nfunc NewPriorityWriteScheduler(cfg *PriorityWriteSchedulerConfig) WriteScheduler {\n\tif cfg == nil {\n\t\t// For justification of these defaults, see:\n\t\t// https://docs.google.com/document/d/1oLhNg1skaWD4_DtaoCxdSRN5erEXrH-KnLrMwEpOtFY\n\t\tcfg = &PriorityWriteSchedulerConfig{\n\t\t\tMaxClosedNodesInTree:     10,\n\t\t\tMaxIdleNodesInTree:       10,\n\t\t\tThrottleOutOfOrderWrites: false,\n\t\t}\n\t}\n\n\tws := &priorityWriteScheduler{\n\t\tnodes:                make(map[uint32]*priorityNode),\n\t\tmaxClosedNodesInTree: cfg.MaxClosedNodesInTree,\n\t\tmaxIdleNodesInTree:   cfg.MaxIdleNodesInTree,\n\t\tenableWriteThrottle:  cfg.ThrottleOutOfOrderWrites,\n\t}\n\tws.nodes[0] = &ws.root\n\tif cfg.ThrottleOutOfOrderWrites {\n\t\tws.writeThrottleLimit = 1024\n\t} else {\n\t\tws.writeThrottleLimit = math.MaxInt32\n\t}\n\treturn ws\n}\n\ntype priorityNodeState int\n\nconst (\n\tpriorityNodeOpen priorityNodeState = iota\n\tpriorityNodeClosed\n\tpriorityNodeIdle\n)\n\n// priorityNode is a node in an HTTP/2 priority tree.\n// Each node is associated with a single stream ID.\n// See RFC 7540, Section 5.3.\ntype priorityNode struct {\n\tq            writeQueue        // queue of pending frames to write\n\tid           uint32            // id of the stream, or 0 for the root of the tree\n\tweight       uint8             // the actual weight is weight+1, so the value is in [1,256]\n\tstate        priorityNodeState // open | closed | idle\n\tbytes        int64             // number of bytes written by this node, or 0 if closed\n\tsubtreeBytes int64             // sum(node.bytes) of all nodes in this subtree\n\n\t// These links form the priority tree.\n\tparent     *priorityNode\n\tkids       *priorityNode // start of the kids list\n\tprev, next *priorityNode // doubly-linked list of siblings\n}\n\nfunc (n *priorityNode) setParent(parent *priorityNode) {\n\tif n == parent {\n\t\tpanic(\"setParent to self\")\n\t}\n\tif n.parent == parent {\n\t\treturn\n\t}\n\t// Unlink from current parent.\n\tif parent := n.parent; parent != nil {\n\t\tif n.prev == nil {\n\t\t\tparent.kids = n.next\n\t\t} else {\n\t\t\tn.prev.next = n.next\n\t\t}\n\t\tif n.next != nil {\n\t\t\tn.next.prev = n.prev\n\t\t}\n\t}\n\t// Link to new parent.\n\t// If parent=nil, remove n from the tree.\n\t// Always insert at the head of parent.kids (this is assumed by walkReadyInOrder).\n\tn.parent = parent\n\tif parent == nil {\n\t\tn.next = nil\n\t\tn.prev = nil\n\t} else {\n\t\tn.next = parent.kids\n\t\tn.prev = nil\n\t\tif n.next != nil {\n\t\t\tn.next.prev = n\n\t\t}\n\t\tparent.kids = n\n\t}\n}\n\nfunc (n *priorityNode) addBytes(b int64) {\n\tn.bytes += b\n\tfor ; n != nil; n = n.parent {\n\t\tn.subtreeBytes += b\n\t}\n}\n\n// walkReadyInOrder iterates over the tree in priority order, calling f for each node\n// with a non-empty write queue. When f returns true, this function returns true and the\n// walk halts. tmp is used as scratch space for sorting.\n//\n// f(n, openParent) takes two arguments: the node to visit, n, and a bool that is true\n// if any ancestor p of n is still open (ignoring the root node).\nfunc (n *priorityNode) walkReadyInOrder(openParent bool, tmp *[]*priorityNode, f func(*priorityNode, bool) bool) bool {\n\tif !n.q.empty() && f(n, openParent) {\n\t\treturn true\n\t}\n\tif n.kids == nil {\n\t\treturn false\n\t}\n\n\t// Don't consider the root \"open\" when updating openParent since\n\t// we can't send data frames on the root stream (only control frames).\n\tif n.id != 0 {\n\t\topenParent = openParent || (n.state == priorityNodeOpen)\n\t}\n\n\t// Common case: only one kid or all kids have the same weight.\n\t// Some clients don't use weights; other clients (like web browsers)\n\t// use mostly-linear priority trees.\n\tw := n.kids.weight\n\tneedSort := false\n\tfor k := n.kids.next; k != nil; k = k.next {\n\t\tif k.weight != w {\n\t\t\tneedSort = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !needSort {\n\t\tfor k := n.kids; k != nil; k = k.next {\n\t\t\tif k.walkReadyInOrder(openParent, tmp, f) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\n\t// Uncommon case: sort the child nodes. We remove the kids from the parent,\n\t// then re-insert after sorting so we can reuse tmp for future sort calls.\n\t*tmp = (*tmp)[:0]\n\tfor n.kids != nil {\n\t\t*tmp = append(*tmp, n.kids)\n\t\tn.kids.setParent(nil)\n\t}\n\tsort.Sort(sortPriorityNodeSiblings(*tmp))\n\tfor i := len(*tmp) - 1; i >= 0; i-- {\n\t\t(*tmp)[i].setParent(n) // setParent inserts at the head of n.kids\n\t}\n\tfor k := n.kids; k != nil; k = k.next {\n\t\tif k.walkReadyInOrder(openParent, tmp, f) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\ntype sortPriorityNodeSiblings []*priorityNode\n\nfunc (z sortPriorityNodeSiblings) Len() int      { return len(z) }\nfunc (z sortPriorityNodeSiblings) Swap(i, k int) { z[i], z[k] = z[k], z[i] }\nfunc (z sortPriorityNodeSiblings) Less(i, k int) bool {\n\t// Prefer the subtree that has sent fewer bytes relative to its weight.\n\t// See sections 5.3.2 and 5.3.4.\n\twi, bi := float64(z[i].weight+1), float64(z[i].subtreeBytes)\n\twk, bk := float64(z[k].weight+1), float64(z[k].subtreeBytes)\n\tif bi == 0 && bk == 0 {\n\t\treturn wi >= wk\n\t}\n\tif bk == 0 {\n\t\treturn false\n\t}\n\treturn bi/bk <= wi/wk\n}\n\ntype priorityWriteScheduler struct {\n\t// root is the root of the priority tree, where root.id = 0.\n\t// The root queues control frames that are not associated with any stream.\n\troot priorityNode\n\n\t// nodes maps stream ids to priority tree nodes.\n\tnodes map[uint32]*priorityNode\n\n\t// maxID is the maximum stream id in nodes.\n\tmaxID uint32\n\n\t// lists of nodes that have been closed or are idle, but are kept in\n\t// the tree for improved prioritization. When the lengths exceed either\n\t// maxClosedNodesInTree or maxIdleNodesInTree, old nodes are discarded.\n\tclosedNodes, idleNodes []*priorityNode\n\n\t// From the config.\n\tmaxClosedNodesInTree int\n\tmaxIdleNodesInTree   int\n\twriteThrottleLimit   int32\n\tenableWriteThrottle  bool\n\n\t// tmp is scratch space for priorityNode.walkReadyInOrder to reduce allocations.\n\ttmp []*priorityNode\n\n\t// pool of empty queues for reuse.\n\tqueuePool writeQueuePool\n}\n\nfunc (ws *priorityWriteScheduler) OpenStream(streamID uint32, options OpenStreamOptions) {\n\t// The stream may be currently idle but cannot be opened or closed.\n\tif curr := ws.nodes[streamID]; curr != nil {\n\t\tif curr.state != priorityNodeIdle {\n\t\t\tpanic(fmt.Sprintf(\"stream %d already opened\", streamID))\n\t\t}\n\t\tcurr.state = priorityNodeOpen\n\t\treturn\n\t}\n\n\t// RFC 7540, Section 5.3.5:\n\t//  \"All streams are initially assigned a non-exclusive dependency on stream 0x0.\n\t//  Pushed streams initially depend on their associated stream. In both cases,\n\t//  streams are assigned a default weight of 16.\"\n\tparent := ws.nodes[options.PusherID]\n\tif parent == nil {\n\t\tparent = &ws.root\n\t}\n\tn := &priorityNode{\n\t\tq:      *ws.queuePool.get(),\n\t\tid:     streamID,\n\t\tweight: priorityDefaultWeight,\n\t\tstate:  priorityNodeOpen,\n\t}\n\tn.setParent(parent)\n\tws.nodes[streamID] = n\n\tif streamID > ws.maxID {\n\t\tws.maxID = streamID\n\t}\n}\n\nfunc (ws *priorityWriteScheduler) CloseStream(streamID uint32) {\n\tif streamID == 0 {\n\t\tpanic(\"violation of WriteScheduler interface: cannot close stream 0\")\n\t}\n\tif ws.nodes[streamID] == nil {\n\t\tpanic(fmt.Sprintf(\"violation of WriteScheduler interface: unknown stream %d\", streamID))\n\t}\n\tif ws.nodes[streamID].state != priorityNodeOpen {\n\t\tpanic(fmt.Sprintf(\"violation of WriteScheduler interface: stream %d already closed\", streamID))\n\t}\n\n\tn := ws.nodes[streamID]\n\tn.state = priorityNodeClosed\n\tn.addBytes(-n.bytes)\n\n\tq := n.q\n\tws.queuePool.put(&q)\n\tn.q.s = nil\n\tif ws.maxClosedNodesInTree > 0 {\n\t\tws.addClosedOrIdleNode(&ws.closedNodes, ws.maxClosedNodesInTree, n)\n\t} else {\n\t\tws.removeNode(n)\n\t}\n}\n\nfunc (ws *priorityWriteScheduler) AdjustStream(streamID uint32, priority PriorityParam) {\n\tif streamID == 0 {\n\t\tpanic(\"adjustPriority on root\")\n\t}\n\n\t// If streamID does not exist, there are two cases:\n\t// - A closed stream that has been removed (this will have ID <= maxID)\n\t// - An idle stream that is being used for \"grouping\" (this will have ID > maxID)\n\tn := ws.nodes[streamID]\n\tif n == nil {\n\t\tif streamID <= ws.maxID || ws.maxIdleNodesInTree == 0 {\n\t\t\treturn\n\t\t}\n\t\tws.maxID = streamID\n\t\tn = &priorityNode{\n\t\t\tq:      *ws.queuePool.get(),\n\t\t\tid:     streamID,\n\t\t\tweight: priorityDefaultWeight,\n\t\t\tstate:  priorityNodeIdle,\n\t\t}\n\t\tn.setParent(&ws.root)\n\t\tws.nodes[streamID] = n\n\t\tws.addClosedOrIdleNode(&ws.idleNodes, ws.maxIdleNodesInTree, n)\n\t}\n\n\t// Section 5.3.1: A dependency on a stream that is not currently in the tree\n\t// results in that stream being given a default priority (Section 5.3.5).\n\tparent := ws.nodes[priority.StreamDep]\n\tif parent == nil {\n\t\tn.setParent(&ws.root)\n\t\tn.weight = priorityDefaultWeight\n\t\treturn\n\t}\n\n\t// Ignore if the client tries to make a node its own parent.\n\tif n == parent {\n\t\treturn\n\t}\n\n\t// Section 5.3.3:\n\t//   \"If a stream is made dependent on one of its own dependencies, the\n\t//   formerly dependent stream is first moved to be dependent on the\n\t//   reprioritized stream's previous parent. The moved dependency retains\n\t//   its weight.\"\n\t//\n\t// That is: if parent depends on n, move parent to depend on n.parent.\n\tfor x := parent.parent; x != nil; x = x.parent {\n\t\tif x == n {\n\t\t\tparent.setParent(n.parent)\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Section 5.3.3: The exclusive flag causes the stream to become the sole\n\t// dependency of its parent stream, causing other dependencies to become\n\t// dependent on the exclusive stream.\n\tif priority.Exclusive {\n\t\tk := parent.kids\n\t\tfor k != nil {\n\t\t\tnext := k.next\n\t\t\tif k != n {\n\t\t\t\tk.setParent(n)\n\t\t\t}\n\t\t\tk = next\n\t\t}\n\t}\n\n\tn.setParent(parent)\n\tn.weight = priority.Weight\n}\n\nfunc (ws *priorityWriteScheduler) Push(wr FrameWriteRequest) {\n\tvar n *priorityNode\n\tif wr.isControl() {\n\t\tn = &ws.root\n\t} else {\n\t\tid := wr.StreamID()\n\t\tn = ws.nodes[id]\n\t\tif n == nil {\n\t\t\t// id is an idle or closed stream. wr should not be a HEADERS or\n\t\t\t// DATA frame. In other case, we push wr onto the root, rather\n\t\t\t// than creating a new priorityNode.\n\t\t\tif wr.DataSize() > 0 {\n\t\t\t\tpanic(\"add DATA on non-open stream\")\n\t\t\t}\n\t\t\tn = &ws.root\n\t\t}\n\t}\n\tn.q.push(wr)\n}\n\nfunc (ws *priorityWriteScheduler) Pop() (wr FrameWriteRequest, ok bool) {\n\tws.root.walkReadyInOrder(false, &ws.tmp, func(n *priorityNode, openParent bool) bool {\n\t\tlimit := int32(math.MaxInt32)\n\t\tif openParent {\n\t\t\tlimit = ws.writeThrottleLimit\n\t\t}\n\t\twr, ok = n.q.consume(limit)\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\t\tn.addBytes(int64(wr.DataSize()))\n\t\t// If B depends on A and B continuously has data available but A\n\t\t// does not, gradually increase the throttling limit to allow B to\n\t\t// steal more and more bandwidth from A.\n\t\tif openParent {\n\t\t\tws.writeThrottleLimit += 1024\n\t\t\tif ws.writeThrottleLimit < 0 {\n\t\t\t\tws.writeThrottleLimit = math.MaxInt32\n\t\t\t}\n\t\t} else if ws.enableWriteThrottle {\n\t\t\tws.writeThrottleLimit = 1024\n\t\t}\n\t\treturn true\n\t})\n\treturn wr, ok\n}\n\nfunc (ws *priorityWriteScheduler) addClosedOrIdleNode(list *[]*priorityNode, maxSize int, n *priorityNode) {\n\tif maxSize == 0 {\n\t\treturn\n\t}\n\tif len(*list) == maxSize {\n\t\t// Remove the oldest node, then shift left.\n\t\tws.removeNode((*list)[0])\n\t\tx := (*list)[1:]\n\t\tcopy(*list, x)\n\t\t*list = (*list)[:len(x)]\n\t}\n\t*list = append(*list, n)\n}\n\nfunc (ws *priorityWriteScheduler) removeNode(n *priorityNode) {\n\tfor k := n.kids; k != nil; k = k.next {\n\t\tk.setParent(n.parent)\n\t}\n\tn.setParent(nil)\n\tdelete(ws.nodes, n.id)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/writesched_random.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport \"math\"\n\n// NewRandomWriteScheduler constructs a WriteScheduler that ignores HTTP/2\n// priorities. Control frames like SETTINGS and PING are written before DATA\n// frames, but if no control frames are queued and multiple streams have queued\n// HEADERS or DATA frames, Pop selects a ready stream arbitrarily.\nfunc NewRandomWriteScheduler() WriteScheduler {\n\treturn &randomWriteScheduler{sq: make(map[uint32]*writeQueue)}\n}\n\ntype randomWriteScheduler struct {\n\t// zero are frames not associated with a specific stream.\n\tzero writeQueue\n\n\t// sq contains the stream-specific queues, keyed by stream ID.\n\t// When a stream is idle, closed, or emptied, it's deleted\n\t// from the map.\n\tsq map[uint32]*writeQueue\n\n\t// pool of empty queues for reuse.\n\tqueuePool writeQueuePool\n}\n\nfunc (ws *randomWriteScheduler) OpenStream(streamID uint32, options OpenStreamOptions) {\n\t// no-op: idle streams are not tracked\n}\n\nfunc (ws *randomWriteScheduler) CloseStream(streamID uint32) {\n\tq, ok := ws.sq[streamID]\n\tif !ok {\n\t\treturn\n\t}\n\tdelete(ws.sq, streamID)\n\tws.queuePool.put(q)\n}\n\nfunc (ws *randomWriteScheduler) AdjustStream(streamID uint32, priority PriorityParam) {\n\t// no-op: priorities are ignored\n}\n\nfunc (ws *randomWriteScheduler) Push(wr FrameWriteRequest) {\n\tif wr.isControl() {\n\t\tws.zero.push(wr)\n\t\treturn\n\t}\n\tid := wr.StreamID()\n\tq, ok := ws.sq[id]\n\tif !ok {\n\t\tq = ws.queuePool.get()\n\t\tws.sq[id] = q\n\t}\n\tq.push(wr)\n}\n\nfunc (ws *randomWriteScheduler) Pop() (FrameWriteRequest, bool) {\n\t// Control and RST_STREAM frames first.\n\tif !ws.zero.empty() {\n\t\treturn ws.zero.shift(), true\n\t}\n\t// Iterate over all non-idle streams until finding one that can be consumed.\n\tfor streamID, q := range ws.sq {\n\t\tif wr, ok := q.consume(math.MaxInt32); ok {\n\t\t\tif q.empty() {\n\t\t\t\tdelete(ws.sq, streamID)\n\t\t\t\tws.queuePool.put(q)\n\t\t\t}\n\t\t\treturn wr, true\n\t\t}\n\t}\n\treturn FrameWriteRequest{}, false\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/http2/writesched_roundrobin.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage http2\n\nimport (\n\t\"fmt\"\n\t\"math\"\n)\n\ntype roundRobinWriteScheduler struct {\n\t// control contains control frames (SETTINGS, PING, etc.).\n\tcontrol writeQueue\n\n\t// streams maps stream ID to a queue.\n\tstreams map[uint32]*writeQueue\n\n\t// stream queues are stored in a circular linked list.\n\t// head is the next stream to write, or nil if there are no streams open.\n\thead *writeQueue\n\n\t// pool of empty queues for reuse.\n\tqueuePool writeQueuePool\n}\n\n// newRoundRobinWriteScheduler constructs a new write scheduler.\n// The round robin scheduler priorizes control frames\n// like SETTINGS and PING over DATA frames.\n// When there are no control frames to send, it performs a round-robin\n// selection from the ready streams.\nfunc newRoundRobinWriteScheduler() WriteScheduler {\n\tws := &roundRobinWriteScheduler{\n\t\tstreams: make(map[uint32]*writeQueue),\n\t}\n\treturn ws\n}\n\nfunc (ws *roundRobinWriteScheduler) OpenStream(streamID uint32, options OpenStreamOptions) {\n\tif ws.streams[streamID] != nil {\n\t\tpanic(fmt.Errorf(\"stream %d already opened\", streamID))\n\t}\n\tq := ws.queuePool.get()\n\tws.streams[streamID] = q\n\tif ws.head == nil {\n\t\tws.head = q\n\t\tq.next = q\n\t\tq.prev = q\n\t} else {\n\t\t// Queues are stored in a ring.\n\t\t// Insert the new stream before ws.head, putting it at the end of the list.\n\t\tq.prev = ws.head.prev\n\t\tq.next = ws.head\n\t\tq.prev.next = q\n\t\tq.next.prev = q\n\t}\n}\n\nfunc (ws *roundRobinWriteScheduler) CloseStream(streamID uint32) {\n\tq := ws.streams[streamID]\n\tif q == nil {\n\t\treturn\n\t}\n\tif q.next == q {\n\t\t// This was the only open stream.\n\t\tws.head = nil\n\t} else {\n\t\tq.prev.next = q.next\n\t\tq.next.prev = q.prev\n\t\tif ws.head == q {\n\t\t\tws.head = q.next\n\t\t}\n\t}\n\tdelete(ws.streams, streamID)\n\tws.queuePool.put(q)\n}\n\nfunc (ws *roundRobinWriteScheduler) AdjustStream(streamID uint32, priority PriorityParam) {}\n\nfunc (ws *roundRobinWriteScheduler) Push(wr FrameWriteRequest) {\n\tif wr.isControl() {\n\t\tws.control.push(wr)\n\t\treturn\n\t}\n\tq := ws.streams[wr.StreamID()]\n\tif q == nil {\n\t\t// This is a closed stream.\n\t\t// wr should not be a HEADERS or DATA frame.\n\t\t// We push the request onto the control queue.\n\t\tif wr.DataSize() > 0 {\n\t\t\tpanic(\"add DATA on non-open stream\")\n\t\t}\n\t\tws.control.push(wr)\n\t\treturn\n\t}\n\tq.push(wr)\n}\n\nfunc (ws *roundRobinWriteScheduler) Pop() (FrameWriteRequest, bool) {\n\t// Control and RST_STREAM frames first.\n\tif !ws.control.empty() {\n\t\treturn ws.control.shift(), true\n\t}\n\tif ws.head == nil {\n\t\treturn FrameWriteRequest{}, false\n\t}\n\tq := ws.head\n\tfor {\n\t\tif wr, ok := q.consume(math.MaxInt32); ok {\n\t\t\tws.head = q.next\n\t\t\treturn wr, true\n\t\t}\n\t\tq = q.next\n\t\tif q == ws.head {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn FrameWriteRequest{}, false\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/go118.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.18\n\npackage idna\n\n// Transitional processing is disabled by default in Go 1.18.\n// https://golang.org/issue/47510\nconst transitionalLookup = false\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/idna10.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.10\n\n// Package idna implements IDNA2008 using the compatibility processing\n// defined by UTS (Unicode Technical Standard) #46, which defines a standard to\n// deal with the transition from IDNA2003.\n//\n// IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC\n// 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894.\n// UTS #46 is defined in https://www.unicode.org/reports/tr46.\n// See https://unicode.org/cldr/utility/idna.jsp for a visualization of the\n// differences between these two standards.\npackage idna // import \"golang.org/x/net/idna\"\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/secure/bidirule\"\n\t\"golang.org/x/text/unicode/bidi\"\n\t\"golang.org/x/text/unicode/norm\"\n)\n\n// NOTE: Unlike common practice in Go APIs, the functions will return a\n// sanitized domain name in case of errors. Browsers sometimes use a partially\n// evaluated string as lookup.\n// TODO: the current error handling is, in my opinion, the least opinionated.\n// Other strategies are also viable, though:\n// Option 1) Return an empty string in case of error, but allow the user to\n//    specify explicitly which errors to ignore.\n// Option 2) Return the partially evaluated string if it is itself a valid\n//    string, otherwise return the empty string in case of error.\n// Option 3) Option 1 and 2.\n// Option 4) Always return an empty string for now and implement Option 1 as\n//    needed, and document that the return string may not be empty in case of\n//    error in the future.\n// I think Option 1 is best, but it is quite opinionated.\n\n// ToASCII is a wrapper for Punycode.ToASCII.\nfunc ToASCII(s string) (string, error) {\n\treturn Punycode.process(s, true)\n}\n\n// ToUnicode is a wrapper for Punycode.ToUnicode.\nfunc ToUnicode(s string) (string, error) {\n\treturn Punycode.process(s, false)\n}\n\n// An Option configures a Profile at creation time.\ntype Option func(*options)\n\n// Transitional sets a Profile to use the Transitional mapping as defined in UTS\n// #46. This will cause, for example, \"ß\" to be mapped to \"ss\". Using the\n// transitional mapping provides a compromise between IDNA2003 and IDNA2008\n// compatibility. It is used by some browsers when resolving domain names. This\n// option is only meaningful if combined with MapForLookup.\nfunc Transitional(transitional bool) Option {\n\treturn func(o *options) { o.transitional = transitional }\n}\n\n// VerifyDNSLength sets whether a Profile should fail if any of the IDN parts\n// are longer than allowed by the RFC.\n//\n// This option corresponds to the VerifyDnsLength flag in UTS #46.\nfunc VerifyDNSLength(verify bool) Option {\n\treturn func(o *options) { o.verifyDNSLength = verify }\n}\n\n// RemoveLeadingDots removes leading label separators. Leading runes that map to\n// dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well.\nfunc RemoveLeadingDots(remove bool) Option {\n\treturn func(o *options) { o.removeLeadingDots = remove }\n}\n\n// ValidateLabels sets whether to check the mandatory label validation criteria\n// as defined in Section 5.4 of RFC 5891. This includes testing for correct use\n// of hyphens ('-'), normalization, validity of runes, and the context rules.\n// In particular, ValidateLabels also sets the CheckHyphens and CheckJoiners flags\n// in UTS #46.\nfunc ValidateLabels(enable bool) Option {\n\treturn func(o *options) {\n\t\t// Don't override existing mappings, but set one that at least checks\n\t\t// normalization if it is not set.\n\t\tif o.mapping == nil && enable {\n\t\t\to.mapping = normalize\n\t\t}\n\t\to.trie = trie\n\t\to.checkJoiners = enable\n\t\to.checkHyphens = enable\n\t\tif enable {\n\t\t\to.fromPuny = validateFromPunycode\n\t\t} else {\n\t\t\to.fromPuny = nil\n\t\t}\n\t}\n}\n\n// CheckHyphens sets whether to check for correct use of hyphens ('-') in\n// labels. Most web browsers do not have this option set, since labels such as\n// \"r3---sn-apo3qvuoxuxbt-j5pe\" are in common use.\n//\n// This option corresponds to the CheckHyphens flag in UTS #46.\nfunc CheckHyphens(enable bool) Option {\n\treturn func(o *options) { o.checkHyphens = enable }\n}\n\n// CheckJoiners sets whether to check the ContextJ rules as defined in Appendix\n// A of RFC 5892, concerning the use of joiner runes.\n//\n// This option corresponds to the CheckJoiners flag in UTS #46.\nfunc CheckJoiners(enable bool) Option {\n\treturn func(o *options) {\n\t\to.trie = trie\n\t\to.checkJoiners = enable\n\t}\n}\n\n// StrictDomainName limits the set of permissible ASCII characters to those\n// allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the\n// hyphen). This is set by default for MapForLookup and ValidateForRegistration,\n// but is only useful if ValidateLabels is set.\n//\n// This option is useful, for instance, for browsers that allow characters\n// outside this range, for example a '_' (U+005F LOW LINE). See\n// http://www.rfc-editor.org/std/std3.txt for more details.\n//\n// This option corresponds to the UseSTD3ASCIIRules flag in UTS #46.\nfunc StrictDomainName(use bool) Option {\n\treturn func(o *options) { o.useSTD3Rules = use }\n}\n\n// NOTE: the following options pull in tables. The tables should not be linked\n// in as long as the options are not used.\n\n// BidiRule enables the Bidi rule as defined in RFC 5893. Any application\n// that relies on proper validation of labels should include this rule.\n//\n// This option corresponds to the CheckBidi flag in UTS #46.\nfunc BidiRule() Option {\n\treturn func(o *options) { o.bidirule = bidirule.ValidString }\n}\n\n// ValidateForRegistration sets validation options to verify that a given IDN is\n// properly formatted for registration as defined by Section 4 of RFC 5891.\nfunc ValidateForRegistration() Option {\n\treturn func(o *options) {\n\t\to.mapping = validateRegistration\n\t\tStrictDomainName(true)(o)\n\t\tValidateLabels(true)(o)\n\t\tVerifyDNSLength(true)(o)\n\t\tBidiRule()(o)\n\t}\n}\n\n// MapForLookup sets validation and mapping options such that a given IDN is\n// transformed for domain name lookup according to the requirements set out in\n// Section 5 of RFC 5891. The mappings follow the recommendations of RFC 5894,\n// RFC 5895 and UTS 46. It does not add the Bidi Rule. Use the BidiRule option\n// to add this check.\n//\n// The mappings include normalization and mapping case, width and other\n// compatibility mappings.\nfunc MapForLookup() Option {\n\treturn func(o *options) {\n\t\to.mapping = validateAndMap\n\t\tStrictDomainName(true)(o)\n\t\tValidateLabels(true)(o)\n\t}\n}\n\ntype options struct {\n\ttransitional      bool\n\tuseSTD3Rules      bool\n\tcheckHyphens      bool\n\tcheckJoiners      bool\n\tverifyDNSLength   bool\n\tremoveLeadingDots bool\n\n\ttrie *idnaTrie\n\n\t// fromPuny calls validation rules when converting A-labels to U-labels.\n\tfromPuny func(p *Profile, s string) error\n\n\t// mapping implements a validation and mapping step as defined in RFC 5895\n\t// or UTS 46, tailored to, for example, domain registration or lookup.\n\tmapping func(p *Profile, s string) (mapped string, isBidi bool, err error)\n\n\t// bidirule, if specified, checks whether s conforms to the Bidi Rule\n\t// defined in RFC 5893.\n\tbidirule func(s string) bool\n}\n\n// A Profile defines the configuration of an IDNA mapper.\ntype Profile struct {\n\toptions\n}\n\nfunc apply(o *options, opts []Option) {\n\tfor _, f := range opts {\n\t\tf(o)\n\t}\n}\n\n// New creates a new Profile.\n//\n// With no options, the returned Profile is the most permissive and equals the\n// Punycode Profile. Options can be passed to further restrict the Profile. The\n// MapForLookup and ValidateForRegistration options set a collection of options,\n// for lookup and registration purposes respectively, which can be tailored by\n// adding more fine-grained options, where later options override earlier\n// options.\nfunc New(o ...Option) *Profile {\n\tp := &Profile{}\n\tapply(&p.options, o)\n\treturn p\n}\n\n// ToASCII converts a domain or domain label to its ASCII form. For example,\n// ToASCII(\"bücher.example.com\") is \"xn--bcher-kva.example.com\", and\n// ToASCII(\"golang\") is \"golang\". If an error is encountered it will return\n// an error and a (partially) processed result.\nfunc (p *Profile) ToASCII(s string) (string, error) {\n\treturn p.process(s, true)\n}\n\n// ToUnicode converts a domain or domain label to its Unicode form. For example,\n// ToUnicode(\"xn--bcher-kva.example.com\") is \"bücher.example.com\", and\n// ToUnicode(\"golang\") is \"golang\". If an error is encountered it will return\n// an error and a (partially) processed result.\nfunc (p *Profile) ToUnicode(s string) (string, error) {\n\tpp := *p\n\tpp.transitional = false\n\treturn pp.process(s, false)\n}\n\n// String reports a string with a description of the profile for debugging\n// purposes. The string format may change with different versions.\nfunc (p *Profile) String() string {\n\ts := \"\"\n\tif p.transitional {\n\t\ts = \"Transitional\"\n\t} else {\n\t\ts = \"NonTransitional\"\n\t}\n\tif p.useSTD3Rules {\n\t\ts += \":UseSTD3Rules\"\n\t}\n\tif p.checkHyphens {\n\t\ts += \":CheckHyphens\"\n\t}\n\tif p.checkJoiners {\n\t\ts += \":CheckJoiners\"\n\t}\n\tif p.verifyDNSLength {\n\t\ts += \":VerifyDNSLength\"\n\t}\n\treturn s\n}\n\nvar (\n\t// Punycode is a Profile that does raw punycode processing with a minimum\n\t// of validation.\n\tPunycode *Profile = punycode\n\n\t// Lookup is the recommended profile for looking up domain names, according\n\t// to Section 5 of RFC 5891. The exact configuration of this profile may\n\t// change over time.\n\tLookup *Profile = lookup\n\n\t// Display is the recommended profile for displaying domain names.\n\t// The configuration of this profile may change over time.\n\tDisplay *Profile = display\n\n\t// Registration is the recommended profile for checking whether a given\n\t// IDN is valid for registration, according to Section 4 of RFC 5891.\n\tRegistration *Profile = registration\n\n\tpunycode = &Profile{}\n\tlookup   = &Profile{options{\n\t\ttransitional: transitionalLookup,\n\t\tuseSTD3Rules: true,\n\t\tcheckHyphens: true,\n\t\tcheckJoiners: true,\n\t\ttrie:         trie,\n\t\tfromPuny:     validateFromPunycode,\n\t\tmapping:      validateAndMap,\n\t\tbidirule:     bidirule.ValidString,\n\t}}\n\tdisplay = &Profile{options{\n\t\tuseSTD3Rules: true,\n\t\tcheckHyphens: true,\n\t\tcheckJoiners: true,\n\t\ttrie:         trie,\n\t\tfromPuny:     validateFromPunycode,\n\t\tmapping:      validateAndMap,\n\t\tbidirule:     bidirule.ValidString,\n\t}}\n\tregistration = &Profile{options{\n\t\tuseSTD3Rules:    true,\n\t\tverifyDNSLength: true,\n\t\tcheckHyphens:    true,\n\t\tcheckJoiners:    true,\n\t\ttrie:            trie,\n\t\tfromPuny:        validateFromPunycode,\n\t\tmapping:         validateRegistration,\n\t\tbidirule:        bidirule.ValidString,\n\t}}\n\n\t// TODO: profiles\n\t// Register: recommended for approving domain names: don't do any mappings\n\t// but rather reject on invalid input. Bundle or block deviation characters.\n)\n\ntype labelError struct{ label, code_ string }\n\nfunc (e labelError) code() string { return e.code_ }\nfunc (e labelError) Error() string {\n\treturn fmt.Sprintf(\"idna: invalid label %q\", e.label)\n}\n\ntype runeError rune\n\nfunc (e runeError) code() string { return \"P1\" }\nfunc (e runeError) Error() string {\n\treturn fmt.Sprintf(\"idna: disallowed rune %U\", e)\n}\n\n// process implements the algorithm described in section 4 of UTS #46,\n// see https://www.unicode.org/reports/tr46.\nfunc (p *Profile) process(s string, toASCII bool) (string, error) {\n\tvar err error\n\tvar isBidi bool\n\tif p.mapping != nil {\n\t\ts, isBidi, err = p.mapping(p, s)\n\t}\n\t// Remove leading empty labels.\n\tif p.removeLeadingDots {\n\t\tfor ; len(s) > 0 && s[0] == '.'; s = s[1:] {\n\t\t}\n\t}\n\t// TODO: allow for a quick check of the tables data.\n\t// It seems like we should only create this error on ToASCII, but the\n\t// UTS 46 conformance tests suggests we should always check this.\n\tif err == nil && p.verifyDNSLength && s == \"\" {\n\t\terr = &labelError{s, \"A4\"}\n\t}\n\tlabels := labelIter{orig: s}\n\tfor ; !labels.done(); labels.next() {\n\t\tlabel := labels.label()\n\t\tif label == \"\" {\n\t\t\t// Empty labels are not okay. The label iterator skips the last\n\t\t\t// label if it is empty.\n\t\t\tif err == nil && p.verifyDNSLength {\n\t\t\t\terr = &labelError{s, \"A4\"}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(label, acePrefix) {\n\t\t\tu, err2 := decode(label[len(acePrefix):])\n\t\t\tif err2 != nil {\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = err2\n\t\t\t\t}\n\t\t\t\t// Spec says keep the old label.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tisBidi = isBidi || bidirule.DirectionString(u) != bidi.LeftToRight\n\t\t\tlabels.set(u)\n\t\t\tif err == nil && p.fromPuny != nil {\n\t\t\t\terr = p.fromPuny(p, u)\n\t\t\t}\n\t\t\tif err == nil {\n\t\t\t\t// This should be called on NonTransitional, according to the\n\t\t\t\t// spec, but that currently does not have any effect. Use the\n\t\t\t\t// original profile to preserve options.\n\t\t\t\terr = p.validateLabel(u)\n\t\t\t}\n\t\t} else if err == nil {\n\t\t\terr = p.validateLabel(label)\n\t\t}\n\t}\n\tif isBidi && p.bidirule != nil && err == nil {\n\t\tfor labels.reset(); !labels.done(); labels.next() {\n\t\t\tif !p.bidirule(labels.label()) {\n\t\t\t\terr = &labelError{s, \"B\"}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tif toASCII {\n\t\tfor labels.reset(); !labels.done(); labels.next() {\n\t\t\tlabel := labels.label()\n\t\t\tif !ascii(label) {\n\t\t\t\ta, err2 := encode(acePrefix, label)\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = err2\n\t\t\t\t}\n\t\t\t\tlabel = a\n\t\t\t\tlabels.set(a)\n\t\t\t}\n\t\t\tn := len(label)\n\t\t\tif p.verifyDNSLength && err == nil && (n == 0 || n > 63) {\n\t\t\t\terr = &labelError{label, \"A4\"}\n\t\t\t}\n\t\t}\n\t}\n\ts = labels.result()\n\tif toASCII && p.verifyDNSLength && err == nil {\n\t\t// Compute the length of the domain name minus the root label and its dot.\n\t\tn := len(s)\n\t\tif n > 0 && s[n-1] == '.' {\n\t\t\tn--\n\t\t}\n\t\tif len(s) < 1 || n > 253 {\n\t\t\terr = &labelError{s, \"A4\"}\n\t\t}\n\t}\n\treturn s, err\n}\n\nfunc normalize(p *Profile, s string) (mapped string, isBidi bool, err error) {\n\t// TODO: consider first doing a quick check to see if any of these checks\n\t// need to be done. This will make it slower in the general case, but\n\t// faster in the common case.\n\tmapped = norm.NFC.String(s)\n\tisBidi = bidirule.DirectionString(mapped) == bidi.RightToLeft\n\treturn mapped, isBidi, nil\n}\n\nfunc validateRegistration(p *Profile, s string) (idem string, bidi bool, err error) {\n\t// TODO: filter need for normalization in loop below.\n\tif !norm.NFC.IsNormalString(s) {\n\t\treturn s, false, &labelError{s, \"V1\"}\n\t}\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\tif sz == 0 {\n\t\t\treturn s, bidi, runeError(utf8.RuneError)\n\t\t}\n\t\tbidi = bidi || info(v).isBidi(s[i:])\n\t\t// Copy bytes not copied so far.\n\t\tswitch p.simplify(info(v).category()) {\n\t\t// TODO: handle the NV8 defined in the Unicode idna data set to allow\n\t\t// for strict conformance to IDNA2008.\n\t\tcase valid, deviation:\n\t\tcase disallowed, mapped, unknown, ignored:\n\t\t\tr, _ := utf8.DecodeRuneInString(s[i:])\n\t\t\treturn s, bidi, runeError(r)\n\t\t}\n\t\ti += sz\n\t}\n\treturn s, bidi, nil\n}\n\nfunc (c info) isBidi(s string) bool {\n\tif !c.isMapped() {\n\t\treturn c&attributesMask == rtl\n\t}\n\t// TODO: also store bidi info for mapped data. This is possible, but a bit\n\t// cumbersome and not for the common case.\n\tp, _ := bidi.LookupString(s)\n\tswitch p.Class() {\n\tcase bidi.R, bidi.AL, bidi.AN:\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc validateAndMap(p *Profile, s string) (vm string, bidi bool, err error) {\n\tvar (\n\t\tb []byte\n\t\tk int\n\t)\n\t// combinedInfoBits contains the or-ed bits of all runes. We use this\n\t// to derive the mayNeedNorm bit later. This may trigger normalization\n\t// overeagerly, but it will not do so in the common case. The end result\n\t// is another 10% saving on BenchmarkProfile for the common case.\n\tvar combinedInfoBits info\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\tif sz == 0 {\n\t\t\tb = append(b, s[k:i]...)\n\t\t\tb = append(b, \"\\ufffd\"...)\n\t\t\tk = len(s)\n\t\t\tif err == nil {\n\t\t\t\terr = runeError(utf8.RuneError)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tcombinedInfoBits |= info(v)\n\t\tbidi = bidi || info(v).isBidi(s[i:])\n\t\tstart := i\n\t\ti += sz\n\t\t// Copy bytes not copied so far.\n\t\tswitch p.simplify(info(v).category()) {\n\t\tcase valid:\n\t\t\tcontinue\n\t\tcase disallowed:\n\t\t\tif err == nil {\n\t\t\t\tr, _ := utf8.DecodeRuneInString(s[start:])\n\t\t\t\terr = runeError(r)\n\t\t\t}\n\t\t\tcontinue\n\t\tcase mapped, deviation:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\tb = info(v).appendMapping(b, s[start:i])\n\t\tcase ignored:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\t// drop the rune\n\t\tcase unknown:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\tb = append(b, \"\\ufffd\"...)\n\t\t}\n\t\tk = i\n\t}\n\tif k == 0 {\n\t\t// No changes so far.\n\t\tif combinedInfoBits&mayNeedNorm != 0 {\n\t\t\ts = norm.NFC.String(s)\n\t\t}\n\t} else {\n\t\tb = append(b, s[k:]...)\n\t\tif norm.NFC.QuickSpan(b) != len(b) {\n\t\t\tb = norm.NFC.Bytes(b)\n\t\t}\n\t\t// TODO: the punycode converters require strings as input.\n\t\ts = string(b)\n\t}\n\treturn s, bidi, err\n}\n\n// A labelIter allows iterating over domain name labels.\ntype labelIter struct {\n\torig     string\n\tslice    []string\n\tcurStart int\n\tcurEnd   int\n\ti        int\n}\n\nfunc (l *labelIter) reset() {\n\tl.curStart = 0\n\tl.curEnd = 0\n\tl.i = 0\n}\n\nfunc (l *labelIter) done() bool {\n\treturn l.curStart >= len(l.orig)\n}\n\nfunc (l *labelIter) result() string {\n\tif l.slice != nil {\n\t\treturn strings.Join(l.slice, \".\")\n\t}\n\treturn l.orig\n}\n\nfunc (l *labelIter) label() string {\n\tif l.slice != nil {\n\t\treturn l.slice[l.i]\n\t}\n\tp := strings.IndexByte(l.orig[l.curStart:], '.')\n\tl.curEnd = l.curStart + p\n\tif p == -1 {\n\t\tl.curEnd = len(l.orig)\n\t}\n\treturn l.orig[l.curStart:l.curEnd]\n}\n\n// next sets the value to the next label. It skips the last label if it is empty.\nfunc (l *labelIter) next() {\n\tl.i++\n\tif l.slice != nil {\n\t\tif l.i >= len(l.slice) || l.i == len(l.slice)-1 && l.slice[l.i] == \"\" {\n\t\t\tl.curStart = len(l.orig)\n\t\t}\n\t} else {\n\t\tl.curStart = l.curEnd + 1\n\t\tif l.curStart == len(l.orig)-1 && l.orig[l.curStart] == '.' {\n\t\t\tl.curStart = len(l.orig)\n\t\t}\n\t}\n}\n\nfunc (l *labelIter) set(s string) {\n\tif l.slice == nil {\n\t\tl.slice = strings.Split(l.orig, \".\")\n\t}\n\tl.slice[l.i] = s\n}\n\n// acePrefix is the ASCII Compatible Encoding prefix.\nconst acePrefix = \"xn--\"\n\nfunc (p *Profile) simplify(cat category) category {\n\tswitch cat {\n\tcase disallowedSTD3Mapped:\n\t\tif p.useSTD3Rules {\n\t\t\tcat = disallowed\n\t\t} else {\n\t\t\tcat = mapped\n\t\t}\n\tcase disallowedSTD3Valid:\n\t\tif p.useSTD3Rules {\n\t\t\tcat = disallowed\n\t\t} else {\n\t\t\tcat = valid\n\t\t}\n\tcase deviation:\n\t\tif !p.transitional {\n\t\t\tcat = valid\n\t\t}\n\tcase validNV8, validXV8:\n\t\t// TODO: handle V2008\n\t\tcat = valid\n\t}\n\treturn cat\n}\n\nfunc validateFromPunycode(p *Profile, s string) error {\n\tif !norm.NFC.IsNormalString(s) {\n\t\treturn &labelError{s, \"V1\"}\n\t}\n\t// TODO: detect whether string may have to be normalized in the following\n\t// loop.\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\tif sz == 0 {\n\t\t\treturn runeError(utf8.RuneError)\n\t\t}\n\t\tif c := p.simplify(info(v).category()); c != valid && c != deviation {\n\t\t\treturn &labelError{s, \"V6\"}\n\t\t}\n\t\ti += sz\n\t}\n\treturn nil\n}\n\nconst (\n\tzwnj = \"\\u200c\"\n\tzwj  = \"\\u200d\"\n)\n\ntype joinState int8\n\nconst (\n\tstateStart joinState = iota\n\tstateVirama\n\tstateBefore\n\tstateBeforeVirama\n\tstateAfter\n\tstateFAIL\n)\n\nvar joinStates = [][numJoinTypes]joinState{\n\tstateStart: {\n\t\tjoiningL:   stateBefore,\n\t\tjoiningD:   stateBefore,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateVirama,\n\t},\n\tstateVirama: {\n\t\tjoiningL: stateBefore,\n\t\tjoiningD: stateBefore,\n\t},\n\tstateBefore: {\n\t\tjoiningL:   stateBefore,\n\t\tjoiningD:   stateBefore,\n\t\tjoiningT:   stateBefore,\n\t\tjoinZWNJ:   stateAfter,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateBeforeVirama,\n\t},\n\tstateBeforeVirama: {\n\t\tjoiningL: stateBefore,\n\t\tjoiningD: stateBefore,\n\t\tjoiningT: stateBefore,\n\t},\n\tstateAfter: {\n\t\tjoiningL:   stateFAIL,\n\t\tjoiningD:   stateBefore,\n\t\tjoiningT:   stateAfter,\n\t\tjoiningR:   stateStart,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateAfter, // no-op as we can't accept joiners here\n\t},\n\tstateFAIL: {\n\t\t0:          stateFAIL,\n\t\tjoiningL:   stateFAIL,\n\t\tjoiningD:   stateFAIL,\n\t\tjoiningT:   stateFAIL,\n\t\tjoiningR:   stateFAIL,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateFAIL,\n\t},\n}\n\n// validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are\n// already implicitly satisfied by the overall implementation.\nfunc (p *Profile) validateLabel(s string) (err error) {\n\tif s == \"\" {\n\t\tif p.verifyDNSLength {\n\t\t\treturn &labelError{s, \"A4\"}\n\t\t}\n\t\treturn nil\n\t}\n\tif p.checkHyphens {\n\t\tif len(s) > 4 && s[2] == '-' && s[3] == '-' {\n\t\t\treturn &labelError{s, \"V2\"}\n\t\t}\n\t\tif s[0] == '-' || s[len(s)-1] == '-' {\n\t\t\treturn &labelError{s, \"V3\"}\n\t\t}\n\t}\n\tif !p.checkJoiners {\n\t\treturn nil\n\t}\n\ttrie := p.trie // p.checkJoiners is only set if trie is set.\n\t// TODO: merge the use of this in the trie.\n\tv, sz := trie.lookupString(s)\n\tx := info(v)\n\tif x.isModifier() {\n\t\treturn &labelError{s, \"V5\"}\n\t}\n\t// Quickly return in the absence of zero-width (non) joiners.\n\tif strings.Index(s, zwj) == -1 && strings.Index(s, zwnj) == -1 {\n\t\treturn nil\n\t}\n\tst := stateStart\n\tfor i := 0; ; {\n\t\tjt := x.joinType()\n\t\tif s[i:i+sz] == zwj {\n\t\t\tjt = joinZWJ\n\t\t} else if s[i:i+sz] == zwnj {\n\t\t\tjt = joinZWNJ\n\t\t}\n\t\tst = joinStates[st][jt]\n\t\tif x.isViramaModifier() {\n\t\t\tst = joinStates[st][joinVirama]\n\t\t}\n\t\tif i += sz; i == len(s) {\n\t\t\tbreak\n\t\t}\n\t\tv, sz = trie.lookupString(s[i:])\n\t\tx = info(v)\n\t}\n\tif st == stateFAIL || st == stateAfter {\n\t\treturn &labelError{s, \"C\"}\n\t}\n\treturn nil\n}\n\nfunc ascii(s string) bool {\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] >= utf8.RuneSelf {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/idna9.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.10\n\n// Package idna implements IDNA2008 using the compatibility processing\n// defined by UTS (Unicode Technical Standard) #46, which defines a standard to\n// deal with the transition from IDNA2003.\n//\n// IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC\n// 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894.\n// UTS #46 is defined in https://www.unicode.org/reports/tr46.\n// See https://unicode.org/cldr/utility/idna.jsp for a visualization of the\n// differences between these two standards.\npackage idna // import \"golang.org/x/net/idna\"\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/secure/bidirule\"\n\t\"golang.org/x/text/unicode/norm\"\n)\n\n// NOTE: Unlike common practice in Go APIs, the functions will return a\n// sanitized domain name in case of errors. Browsers sometimes use a partially\n// evaluated string as lookup.\n// TODO: the current error handling is, in my opinion, the least opinionated.\n// Other strategies are also viable, though:\n// Option 1) Return an empty string in case of error, but allow the user to\n//    specify explicitly which errors to ignore.\n// Option 2) Return the partially evaluated string if it is itself a valid\n//    string, otherwise return the empty string in case of error.\n// Option 3) Option 1 and 2.\n// Option 4) Always return an empty string for now and implement Option 1 as\n//    needed, and document that the return string may not be empty in case of\n//    error in the future.\n// I think Option 1 is best, but it is quite opinionated.\n\n// ToASCII is a wrapper for Punycode.ToASCII.\nfunc ToASCII(s string) (string, error) {\n\treturn Punycode.process(s, true)\n}\n\n// ToUnicode is a wrapper for Punycode.ToUnicode.\nfunc ToUnicode(s string) (string, error) {\n\treturn Punycode.process(s, false)\n}\n\n// An Option configures a Profile at creation time.\ntype Option func(*options)\n\n// Transitional sets a Profile to use the Transitional mapping as defined in UTS\n// #46. This will cause, for example, \"ß\" to be mapped to \"ss\". Using the\n// transitional mapping provides a compromise between IDNA2003 and IDNA2008\n// compatibility. It is used by some browsers when resolving domain names. This\n// option is only meaningful if combined with MapForLookup.\nfunc Transitional(transitional bool) Option {\n\treturn func(o *options) { o.transitional = transitional }\n}\n\n// VerifyDNSLength sets whether a Profile should fail if any of the IDN parts\n// are longer than allowed by the RFC.\n//\n// This option corresponds to the VerifyDnsLength flag in UTS #46.\nfunc VerifyDNSLength(verify bool) Option {\n\treturn func(o *options) { o.verifyDNSLength = verify }\n}\n\n// RemoveLeadingDots removes leading label separators. Leading runes that map to\n// dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well.\nfunc RemoveLeadingDots(remove bool) Option {\n\treturn func(o *options) { o.removeLeadingDots = remove }\n}\n\n// ValidateLabels sets whether to check the mandatory label validation criteria\n// as defined in Section 5.4 of RFC 5891. This includes testing for correct use\n// of hyphens ('-'), normalization, validity of runes, and the context rules.\n// In particular, ValidateLabels also sets the CheckHyphens and CheckJoiners flags\n// in UTS #46.\nfunc ValidateLabels(enable bool) Option {\n\treturn func(o *options) {\n\t\t// Don't override existing mappings, but set one that at least checks\n\t\t// normalization if it is not set.\n\t\tif o.mapping == nil && enable {\n\t\t\to.mapping = normalize\n\t\t}\n\t\to.trie = trie\n\t\to.checkJoiners = enable\n\t\to.checkHyphens = enable\n\t\tif enable {\n\t\t\to.fromPuny = validateFromPunycode\n\t\t} else {\n\t\t\to.fromPuny = nil\n\t\t}\n\t}\n}\n\n// CheckHyphens sets whether to check for correct use of hyphens ('-') in\n// labels. Most web browsers do not have this option set, since labels such as\n// \"r3---sn-apo3qvuoxuxbt-j5pe\" are in common use.\n//\n// This option corresponds to the CheckHyphens flag in UTS #46.\nfunc CheckHyphens(enable bool) Option {\n\treturn func(o *options) { o.checkHyphens = enable }\n}\n\n// CheckJoiners sets whether to check the ContextJ rules as defined in Appendix\n// A of RFC 5892, concerning the use of joiner runes.\n//\n// This option corresponds to the CheckJoiners flag in UTS #46.\nfunc CheckJoiners(enable bool) Option {\n\treturn func(o *options) {\n\t\to.trie = trie\n\t\to.checkJoiners = enable\n\t}\n}\n\n// StrictDomainName limits the set of permissible ASCII characters to those\n// allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the\n// hyphen). This is set by default for MapForLookup and ValidateForRegistration,\n// but is only useful if ValidateLabels is set.\n//\n// This option is useful, for instance, for browsers that allow characters\n// outside this range, for example a '_' (U+005F LOW LINE). See\n// http://www.rfc-editor.org/std/std3.txt for more details.\n//\n// This option corresponds to the UseSTD3ASCIIRules flag in UTS #46.\nfunc StrictDomainName(use bool) Option {\n\treturn func(o *options) { o.useSTD3Rules = use }\n}\n\n// NOTE: the following options pull in tables. The tables should not be linked\n// in as long as the options are not used.\n\n// BidiRule enables the Bidi rule as defined in RFC 5893. Any application\n// that relies on proper validation of labels should include this rule.\n//\n// This option corresponds to the CheckBidi flag in UTS #46.\nfunc BidiRule() Option {\n\treturn func(o *options) { o.bidirule = bidirule.ValidString }\n}\n\n// ValidateForRegistration sets validation options to verify that a given IDN is\n// properly formatted for registration as defined by Section 4 of RFC 5891.\nfunc ValidateForRegistration() Option {\n\treturn func(o *options) {\n\t\to.mapping = validateRegistration\n\t\tStrictDomainName(true)(o)\n\t\tValidateLabels(true)(o)\n\t\tVerifyDNSLength(true)(o)\n\t\tBidiRule()(o)\n\t}\n}\n\n// MapForLookup sets validation and mapping options such that a given IDN is\n// transformed for domain name lookup according to the requirements set out in\n// Section 5 of RFC 5891. The mappings follow the recommendations of RFC 5894,\n// RFC 5895 and UTS 46. It does not add the Bidi Rule. Use the BidiRule option\n// to add this check.\n//\n// The mappings include normalization and mapping case, width and other\n// compatibility mappings.\nfunc MapForLookup() Option {\n\treturn func(o *options) {\n\t\to.mapping = validateAndMap\n\t\tStrictDomainName(true)(o)\n\t\tValidateLabels(true)(o)\n\t\tRemoveLeadingDots(true)(o)\n\t}\n}\n\ntype options struct {\n\ttransitional      bool\n\tuseSTD3Rules      bool\n\tcheckHyphens      bool\n\tcheckJoiners      bool\n\tverifyDNSLength   bool\n\tremoveLeadingDots bool\n\n\ttrie *idnaTrie\n\n\t// fromPuny calls validation rules when converting A-labels to U-labels.\n\tfromPuny func(p *Profile, s string) error\n\n\t// mapping implements a validation and mapping step as defined in RFC 5895\n\t// or UTS 46, tailored to, for example, domain registration or lookup.\n\tmapping func(p *Profile, s string) (string, error)\n\n\t// bidirule, if specified, checks whether s conforms to the Bidi Rule\n\t// defined in RFC 5893.\n\tbidirule func(s string) bool\n}\n\n// A Profile defines the configuration of a IDNA mapper.\ntype Profile struct {\n\toptions\n}\n\nfunc apply(o *options, opts []Option) {\n\tfor _, f := range opts {\n\t\tf(o)\n\t}\n}\n\n// New creates a new Profile.\n//\n// With no options, the returned Profile is the most permissive and equals the\n// Punycode Profile. Options can be passed to further restrict the Profile. The\n// MapForLookup and ValidateForRegistration options set a collection of options,\n// for lookup and registration purposes respectively, which can be tailored by\n// adding more fine-grained options, where later options override earlier\n// options.\nfunc New(o ...Option) *Profile {\n\tp := &Profile{}\n\tapply(&p.options, o)\n\treturn p\n}\n\n// ToASCII converts a domain or domain label to its ASCII form. For example,\n// ToASCII(\"bücher.example.com\") is \"xn--bcher-kva.example.com\", and\n// ToASCII(\"golang\") is \"golang\". If an error is encountered it will return\n// an error and a (partially) processed result.\nfunc (p *Profile) ToASCII(s string) (string, error) {\n\treturn p.process(s, true)\n}\n\n// ToUnicode converts a domain or domain label to its Unicode form. For example,\n// ToUnicode(\"xn--bcher-kva.example.com\") is \"bücher.example.com\", and\n// ToUnicode(\"golang\") is \"golang\". If an error is encountered it will return\n// an error and a (partially) processed result.\nfunc (p *Profile) ToUnicode(s string) (string, error) {\n\tpp := *p\n\tpp.transitional = false\n\treturn pp.process(s, false)\n}\n\n// String reports a string with a description of the profile for debugging\n// purposes. The string format may change with different versions.\nfunc (p *Profile) String() string {\n\ts := \"\"\n\tif p.transitional {\n\t\ts = \"Transitional\"\n\t} else {\n\t\ts = \"NonTransitional\"\n\t}\n\tif p.useSTD3Rules {\n\t\ts += \":UseSTD3Rules\"\n\t}\n\tif p.checkHyphens {\n\t\ts += \":CheckHyphens\"\n\t}\n\tif p.checkJoiners {\n\t\ts += \":CheckJoiners\"\n\t}\n\tif p.verifyDNSLength {\n\t\ts += \":VerifyDNSLength\"\n\t}\n\treturn s\n}\n\nvar (\n\t// Punycode is a Profile that does raw punycode processing with a minimum\n\t// of validation.\n\tPunycode *Profile = punycode\n\n\t// Lookup is the recommended profile for looking up domain names, according\n\t// to Section 5 of RFC 5891. The exact configuration of this profile may\n\t// change over time.\n\tLookup *Profile = lookup\n\n\t// Display is the recommended profile for displaying domain names.\n\t// The configuration of this profile may change over time.\n\tDisplay *Profile = display\n\n\t// Registration is the recommended profile for checking whether a given\n\t// IDN is valid for registration, according to Section 4 of RFC 5891.\n\tRegistration *Profile = registration\n\n\tpunycode = &Profile{}\n\tlookup   = &Profile{options{\n\t\ttransitional:      true,\n\t\tremoveLeadingDots: true,\n\t\tuseSTD3Rules:      true,\n\t\tcheckHyphens:      true,\n\t\tcheckJoiners:      true,\n\t\ttrie:              trie,\n\t\tfromPuny:          validateFromPunycode,\n\t\tmapping:           validateAndMap,\n\t\tbidirule:          bidirule.ValidString,\n\t}}\n\tdisplay = &Profile{options{\n\t\tuseSTD3Rules:      true,\n\t\tremoveLeadingDots: true,\n\t\tcheckHyphens:      true,\n\t\tcheckJoiners:      true,\n\t\ttrie:              trie,\n\t\tfromPuny:          validateFromPunycode,\n\t\tmapping:           validateAndMap,\n\t\tbidirule:          bidirule.ValidString,\n\t}}\n\tregistration = &Profile{options{\n\t\tuseSTD3Rules:    true,\n\t\tverifyDNSLength: true,\n\t\tcheckHyphens:    true,\n\t\tcheckJoiners:    true,\n\t\ttrie:            trie,\n\t\tfromPuny:        validateFromPunycode,\n\t\tmapping:         validateRegistration,\n\t\tbidirule:        bidirule.ValidString,\n\t}}\n\n\t// TODO: profiles\n\t// Register: recommended for approving domain names: don't do any mappings\n\t// but rather reject on invalid input. Bundle or block deviation characters.\n)\n\ntype labelError struct{ label, code_ string }\n\nfunc (e labelError) code() string { return e.code_ }\nfunc (e labelError) Error() string {\n\treturn fmt.Sprintf(\"idna: invalid label %q\", e.label)\n}\n\ntype runeError rune\n\nfunc (e runeError) code() string { return \"P1\" }\nfunc (e runeError) Error() string {\n\treturn fmt.Sprintf(\"idna: disallowed rune %U\", e)\n}\n\n// process implements the algorithm described in section 4 of UTS #46,\n// see https://www.unicode.org/reports/tr46.\nfunc (p *Profile) process(s string, toASCII bool) (string, error) {\n\tvar err error\n\tif p.mapping != nil {\n\t\ts, err = p.mapping(p, s)\n\t}\n\t// Remove leading empty labels.\n\tif p.removeLeadingDots {\n\t\tfor ; len(s) > 0 && s[0] == '.'; s = s[1:] {\n\t\t}\n\t}\n\t// It seems like we should only create this error on ToASCII, but the\n\t// UTS 46 conformance tests suggests we should always check this.\n\tif err == nil && p.verifyDNSLength && s == \"\" {\n\t\terr = &labelError{s, \"A4\"}\n\t}\n\tlabels := labelIter{orig: s}\n\tfor ; !labels.done(); labels.next() {\n\t\tlabel := labels.label()\n\t\tif label == \"\" {\n\t\t\t// Empty labels are not okay. The label iterator skips the last\n\t\t\t// label if it is empty.\n\t\t\tif err == nil && p.verifyDNSLength {\n\t\t\t\terr = &labelError{s, \"A4\"}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(label, acePrefix) {\n\t\t\tu, err2 := decode(label[len(acePrefix):])\n\t\t\tif err2 != nil {\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = err2\n\t\t\t\t}\n\t\t\t\t// Spec says keep the old label.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tlabels.set(u)\n\t\t\tif err == nil && p.fromPuny != nil {\n\t\t\t\terr = p.fromPuny(p, u)\n\t\t\t}\n\t\t\tif err == nil {\n\t\t\t\t// This should be called on NonTransitional, according to the\n\t\t\t\t// spec, but that currently does not have any effect. Use the\n\t\t\t\t// original profile to preserve options.\n\t\t\t\terr = p.validateLabel(u)\n\t\t\t}\n\t\t} else if err == nil {\n\t\t\terr = p.validateLabel(label)\n\t\t}\n\t}\n\tif toASCII {\n\t\tfor labels.reset(); !labels.done(); labels.next() {\n\t\t\tlabel := labels.label()\n\t\t\tif !ascii(label) {\n\t\t\t\ta, err2 := encode(acePrefix, label)\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = err2\n\t\t\t\t}\n\t\t\t\tlabel = a\n\t\t\t\tlabels.set(a)\n\t\t\t}\n\t\t\tn := len(label)\n\t\t\tif p.verifyDNSLength && err == nil && (n == 0 || n > 63) {\n\t\t\t\terr = &labelError{label, \"A4\"}\n\t\t\t}\n\t\t}\n\t}\n\ts = labels.result()\n\tif toASCII && p.verifyDNSLength && err == nil {\n\t\t// Compute the length of the domain name minus the root label and its dot.\n\t\tn := len(s)\n\t\tif n > 0 && s[n-1] == '.' {\n\t\t\tn--\n\t\t}\n\t\tif len(s) < 1 || n > 253 {\n\t\t\terr = &labelError{s, \"A4\"}\n\t\t}\n\t}\n\treturn s, err\n}\n\nfunc normalize(p *Profile, s string) (string, error) {\n\treturn norm.NFC.String(s), nil\n}\n\nfunc validateRegistration(p *Profile, s string) (string, error) {\n\tif !norm.NFC.IsNormalString(s) {\n\t\treturn s, &labelError{s, \"V1\"}\n\t}\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\t// Copy bytes not copied so far.\n\t\tswitch p.simplify(info(v).category()) {\n\t\t// TODO: handle the NV8 defined in the Unicode idna data set to allow\n\t\t// for strict conformance to IDNA2008.\n\t\tcase valid, deviation:\n\t\tcase disallowed, mapped, unknown, ignored:\n\t\t\tr, _ := utf8.DecodeRuneInString(s[i:])\n\t\t\treturn s, runeError(r)\n\t\t}\n\t\ti += sz\n\t}\n\treturn s, nil\n}\n\nfunc validateAndMap(p *Profile, s string) (string, error) {\n\tvar (\n\t\terr error\n\t\tb   []byte\n\t\tk   int\n\t)\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\tstart := i\n\t\ti += sz\n\t\t// Copy bytes not copied so far.\n\t\tswitch p.simplify(info(v).category()) {\n\t\tcase valid:\n\t\t\tcontinue\n\t\tcase disallowed:\n\t\t\tif err == nil {\n\t\t\t\tr, _ := utf8.DecodeRuneInString(s[start:])\n\t\t\t\terr = runeError(r)\n\t\t\t}\n\t\t\tcontinue\n\t\tcase mapped, deviation:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\tb = info(v).appendMapping(b, s[start:i])\n\t\tcase ignored:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\t// drop the rune\n\t\tcase unknown:\n\t\t\tb = append(b, s[k:start]...)\n\t\t\tb = append(b, \"\\ufffd\"...)\n\t\t}\n\t\tk = i\n\t}\n\tif k == 0 {\n\t\t// No changes so far.\n\t\ts = norm.NFC.String(s)\n\t} else {\n\t\tb = append(b, s[k:]...)\n\t\tif norm.NFC.QuickSpan(b) != len(b) {\n\t\t\tb = norm.NFC.Bytes(b)\n\t\t}\n\t\t// TODO: the punycode converters require strings as input.\n\t\ts = string(b)\n\t}\n\treturn s, err\n}\n\n// A labelIter allows iterating over domain name labels.\ntype labelIter struct {\n\torig     string\n\tslice    []string\n\tcurStart int\n\tcurEnd   int\n\ti        int\n}\n\nfunc (l *labelIter) reset() {\n\tl.curStart = 0\n\tl.curEnd = 0\n\tl.i = 0\n}\n\nfunc (l *labelIter) done() bool {\n\treturn l.curStart >= len(l.orig)\n}\n\nfunc (l *labelIter) result() string {\n\tif l.slice != nil {\n\t\treturn strings.Join(l.slice, \".\")\n\t}\n\treturn l.orig\n}\n\nfunc (l *labelIter) label() string {\n\tif l.slice != nil {\n\t\treturn l.slice[l.i]\n\t}\n\tp := strings.IndexByte(l.orig[l.curStart:], '.')\n\tl.curEnd = l.curStart + p\n\tif p == -1 {\n\t\tl.curEnd = len(l.orig)\n\t}\n\treturn l.orig[l.curStart:l.curEnd]\n}\n\n// next sets the value to the next label. It skips the last label if it is empty.\nfunc (l *labelIter) next() {\n\tl.i++\n\tif l.slice != nil {\n\t\tif l.i >= len(l.slice) || l.i == len(l.slice)-1 && l.slice[l.i] == \"\" {\n\t\t\tl.curStart = len(l.orig)\n\t\t}\n\t} else {\n\t\tl.curStart = l.curEnd + 1\n\t\tif l.curStart == len(l.orig)-1 && l.orig[l.curStart] == '.' {\n\t\t\tl.curStart = len(l.orig)\n\t\t}\n\t}\n}\n\nfunc (l *labelIter) set(s string) {\n\tif l.slice == nil {\n\t\tl.slice = strings.Split(l.orig, \".\")\n\t}\n\tl.slice[l.i] = s\n}\n\n// acePrefix is the ASCII Compatible Encoding prefix.\nconst acePrefix = \"xn--\"\n\nfunc (p *Profile) simplify(cat category) category {\n\tswitch cat {\n\tcase disallowedSTD3Mapped:\n\t\tif p.useSTD3Rules {\n\t\t\tcat = disallowed\n\t\t} else {\n\t\t\tcat = mapped\n\t\t}\n\tcase disallowedSTD3Valid:\n\t\tif p.useSTD3Rules {\n\t\t\tcat = disallowed\n\t\t} else {\n\t\t\tcat = valid\n\t\t}\n\tcase deviation:\n\t\tif !p.transitional {\n\t\t\tcat = valid\n\t\t}\n\tcase validNV8, validXV8:\n\t\t// TODO: handle V2008\n\t\tcat = valid\n\t}\n\treturn cat\n}\n\nfunc validateFromPunycode(p *Profile, s string) error {\n\tif !norm.NFC.IsNormalString(s) {\n\t\treturn &labelError{s, \"V1\"}\n\t}\n\tfor i := 0; i < len(s); {\n\t\tv, sz := trie.lookupString(s[i:])\n\t\tif c := p.simplify(info(v).category()); c != valid && c != deviation {\n\t\t\treturn &labelError{s, \"V6\"}\n\t\t}\n\t\ti += sz\n\t}\n\treturn nil\n}\n\nconst (\n\tzwnj = \"\\u200c\"\n\tzwj  = \"\\u200d\"\n)\n\ntype joinState int8\n\nconst (\n\tstateStart joinState = iota\n\tstateVirama\n\tstateBefore\n\tstateBeforeVirama\n\tstateAfter\n\tstateFAIL\n)\n\nvar joinStates = [][numJoinTypes]joinState{\n\tstateStart: {\n\t\tjoiningL:   stateBefore,\n\t\tjoiningD:   stateBefore,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateVirama,\n\t},\n\tstateVirama: {\n\t\tjoiningL: stateBefore,\n\t\tjoiningD: stateBefore,\n\t},\n\tstateBefore: {\n\t\tjoiningL:   stateBefore,\n\t\tjoiningD:   stateBefore,\n\t\tjoiningT:   stateBefore,\n\t\tjoinZWNJ:   stateAfter,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateBeforeVirama,\n\t},\n\tstateBeforeVirama: {\n\t\tjoiningL: stateBefore,\n\t\tjoiningD: stateBefore,\n\t\tjoiningT: stateBefore,\n\t},\n\tstateAfter: {\n\t\tjoiningL:   stateFAIL,\n\t\tjoiningD:   stateBefore,\n\t\tjoiningT:   stateAfter,\n\t\tjoiningR:   stateStart,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateAfter, // no-op as we can't accept joiners here\n\t},\n\tstateFAIL: {\n\t\t0:          stateFAIL,\n\t\tjoiningL:   stateFAIL,\n\t\tjoiningD:   stateFAIL,\n\t\tjoiningT:   stateFAIL,\n\t\tjoiningR:   stateFAIL,\n\t\tjoinZWNJ:   stateFAIL,\n\t\tjoinZWJ:    stateFAIL,\n\t\tjoinVirama: stateFAIL,\n\t},\n}\n\n// validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are\n// already implicitly satisfied by the overall implementation.\nfunc (p *Profile) validateLabel(s string) error {\n\tif s == \"\" {\n\t\tif p.verifyDNSLength {\n\t\t\treturn &labelError{s, \"A4\"}\n\t\t}\n\t\treturn nil\n\t}\n\tif p.bidirule != nil && !p.bidirule(s) {\n\t\treturn &labelError{s, \"B\"}\n\t}\n\tif p.checkHyphens {\n\t\tif len(s) > 4 && s[2] == '-' && s[3] == '-' {\n\t\t\treturn &labelError{s, \"V2\"}\n\t\t}\n\t\tif s[0] == '-' || s[len(s)-1] == '-' {\n\t\t\treturn &labelError{s, \"V3\"}\n\t\t}\n\t}\n\tif !p.checkJoiners {\n\t\treturn nil\n\t}\n\ttrie := p.trie // p.checkJoiners is only set if trie is set.\n\t// TODO: merge the use of this in the trie.\n\tv, sz := trie.lookupString(s)\n\tx := info(v)\n\tif x.isModifier() {\n\t\treturn &labelError{s, \"V5\"}\n\t}\n\t// Quickly return in the absence of zero-width (non) joiners.\n\tif strings.Index(s, zwj) == -1 && strings.Index(s, zwnj) == -1 {\n\t\treturn nil\n\t}\n\tst := stateStart\n\tfor i := 0; ; {\n\t\tjt := x.joinType()\n\t\tif s[i:i+sz] == zwj {\n\t\t\tjt = joinZWJ\n\t\t} else if s[i:i+sz] == zwnj {\n\t\t\tjt = joinZWNJ\n\t\t}\n\t\tst = joinStates[st][jt]\n\t\tif x.isViramaModifier() {\n\t\t\tst = joinStates[st][joinVirama]\n\t\t}\n\t\tif i += sz; i == len(s) {\n\t\t\tbreak\n\t\t}\n\t\tv, sz = trie.lookupString(s[i:])\n\t\tx = info(v)\n\t}\n\tif st == stateFAIL || st == stateAfter {\n\t\treturn &labelError{s, \"C\"}\n\t}\n\treturn nil\n}\n\nfunc ascii(s string) bool {\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] >= utf8.RuneSelf {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/pre_go118.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.18\n\npackage idna\n\nconst transitionalLookup = true\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/punycode.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage idna\n\n// This file implements the Punycode algorithm from RFC 3492.\n\nimport (\n\t\"math\"\n\t\"strings\"\n\t\"unicode/utf8\"\n)\n\n// These parameter values are specified in section 5.\n//\n// All computation is done with int32s, so that overflow behavior is identical\n// regardless of whether int is 32-bit or 64-bit.\nconst (\n\tbase        int32 = 36\n\tdamp        int32 = 700\n\tinitialBias int32 = 72\n\tinitialN    int32 = 128\n\tskew        int32 = 38\n\ttmax        int32 = 26\n\ttmin        int32 = 1\n)\n\nfunc punyError(s string) error { return &labelError{s, \"A3\"} }\n\n// decode decodes a string as specified in section 6.2.\nfunc decode(encoded string) (string, error) {\n\tif encoded == \"\" {\n\t\treturn \"\", nil\n\t}\n\tpos := 1 + strings.LastIndex(encoded, \"-\")\n\tif pos == 1 {\n\t\treturn \"\", punyError(encoded)\n\t}\n\tif pos == len(encoded) {\n\t\treturn encoded[:len(encoded)-1], nil\n\t}\n\toutput := make([]rune, 0, len(encoded))\n\tif pos != 0 {\n\t\tfor _, r := range encoded[:pos-1] {\n\t\t\toutput = append(output, r)\n\t\t}\n\t}\n\ti, n, bias := int32(0), initialN, initialBias\n\toverflow := false\n\tfor pos < len(encoded) {\n\t\toldI, w := i, int32(1)\n\t\tfor k := base; ; k += base {\n\t\t\tif pos == len(encoded) {\n\t\t\t\treturn \"\", punyError(encoded)\n\t\t\t}\n\t\t\tdigit, ok := decodeDigit(encoded[pos])\n\t\t\tif !ok {\n\t\t\t\treturn \"\", punyError(encoded)\n\t\t\t}\n\t\t\tpos++\n\t\t\ti, overflow = madd(i, digit, w)\n\t\t\tif overflow {\n\t\t\t\treturn \"\", punyError(encoded)\n\t\t\t}\n\t\t\tt := k - bias\n\t\t\tif k <= bias {\n\t\t\t\tt = tmin\n\t\t\t} else if k >= bias+tmax {\n\t\t\t\tt = tmax\n\t\t\t}\n\t\t\tif digit < t {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tw, overflow = madd(0, w, base-t)\n\t\t\tif overflow {\n\t\t\t\treturn \"\", punyError(encoded)\n\t\t\t}\n\t\t}\n\t\tif len(output) >= 1024 {\n\t\t\treturn \"\", punyError(encoded)\n\t\t}\n\t\tx := int32(len(output) + 1)\n\t\tbias = adapt(i-oldI, x, oldI == 0)\n\t\tn += i / x\n\t\ti %= x\n\t\tif n < 0 || n > utf8.MaxRune {\n\t\t\treturn \"\", punyError(encoded)\n\t\t}\n\t\toutput = append(output, 0)\n\t\tcopy(output[i+1:], output[i:])\n\t\toutput[i] = n\n\t\ti++\n\t}\n\treturn string(output), nil\n}\n\n// encode encodes a string as specified in section 6.3 and prepends prefix to\n// the result.\n//\n// The \"while h < length(input)\" line in the specification becomes \"for\n// remaining != 0\" in the Go code, because len(s) in Go is in bytes, not runes.\nfunc encode(prefix, s string) (string, error) {\n\toutput := make([]byte, len(prefix), len(prefix)+1+2*len(s))\n\tcopy(output, prefix)\n\tdelta, n, bias := int32(0), initialN, initialBias\n\tb, remaining := int32(0), int32(0)\n\tfor _, r := range s {\n\t\tif r < 0x80 {\n\t\t\tb++\n\t\t\toutput = append(output, byte(r))\n\t\t} else {\n\t\t\tremaining++\n\t\t}\n\t}\n\th := b\n\tif b > 0 {\n\t\toutput = append(output, '-')\n\t}\n\toverflow := false\n\tfor remaining != 0 {\n\t\tm := int32(0x7fffffff)\n\t\tfor _, r := range s {\n\t\t\tif m > r && r >= n {\n\t\t\t\tm = r\n\t\t\t}\n\t\t}\n\t\tdelta, overflow = madd(delta, m-n, h+1)\n\t\tif overflow {\n\t\t\treturn \"\", punyError(s)\n\t\t}\n\t\tn = m\n\t\tfor _, r := range s {\n\t\t\tif r < n {\n\t\t\t\tdelta++\n\t\t\t\tif delta < 0 {\n\t\t\t\t\treturn \"\", punyError(s)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif r > n {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tq := delta\n\t\t\tfor k := base; ; k += base {\n\t\t\t\tt := k - bias\n\t\t\t\tif k <= bias {\n\t\t\t\t\tt = tmin\n\t\t\t\t} else if k >= bias+tmax {\n\t\t\t\t\tt = tmax\n\t\t\t\t}\n\t\t\t\tif q < t {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\toutput = append(output, encodeDigit(t+(q-t)%(base-t)))\n\t\t\t\tq = (q - t) / (base - t)\n\t\t\t}\n\t\t\toutput = append(output, encodeDigit(q))\n\t\t\tbias = adapt(delta, h+1, h == b)\n\t\t\tdelta = 0\n\t\t\th++\n\t\t\tremaining--\n\t\t}\n\t\tdelta++\n\t\tn++\n\t}\n\treturn string(output), nil\n}\n\n// madd computes a + (b * c), detecting overflow.\nfunc madd(a, b, c int32) (next int32, overflow bool) {\n\tp := int64(b) * int64(c)\n\tif p > math.MaxInt32-int64(a) {\n\t\treturn 0, true\n\t}\n\treturn a + int32(p), false\n}\n\nfunc decodeDigit(x byte) (digit int32, ok bool) {\n\tswitch {\n\tcase '0' <= x && x <= '9':\n\t\treturn int32(x - ('0' - 26)), true\n\tcase 'A' <= x && x <= 'Z':\n\t\treturn int32(x - 'A'), true\n\tcase 'a' <= x && x <= 'z':\n\t\treturn int32(x - 'a'), true\n\t}\n\treturn 0, false\n}\n\nfunc encodeDigit(digit int32) byte {\n\tswitch {\n\tcase 0 <= digit && digit < 26:\n\t\treturn byte(digit + 'a')\n\tcase 26 <= digit && digit < 36:\n\t\treturn byte(digit + ('0' - 26))\n\t}\n\tpanic(\"idna: internal error in punycode encoding\")\n}\n\n// adapt is the bias adaptation function specified in section 6.1.\nfunc adapt(delta, numPoints int32, firstTime bool) int32 {\n\tif firstTime {\n\t\tdelta /= damp\n\t} else {\n\t\tdelta /= 2\n\t}\n\tdelta += delta / numPoints\n\tk := int32(0)\n\tfor delta > ((base-tmin)*tmax)/2 {\n\t\tdelta /= base - tmin\n\t\tk += base\n\t}\n\treturn k + (base-tmin+1)*delta/(delta+skew)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/tables10.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.10 && !go1.13\n\npackage idna\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"10.0.0\"\n\nvar mappings string = \"\" + // Size: 8175 bytes\n\t\"\\x00\\x01 \\x03 ̈\\x01a\\x03 ̄\\x012\\x013\\x03 ́\\x03 ̧\\x011\\x01o\\x051⁄4\\x051⁄2\" +\n\t\"\\x053⁄4\\x03i̇\\x03l·\\x03ʼn\\x01s\\x03dž\\x03ⱥ\\x03ⱦ\\x01h\\x01j\\x01r\\x01w\\x01y\" +\n\t\"\\x03 ̆\\x03 ̇\\x03 ̊\\x03 ̨\\x03 ̃\\x03 ̋\\x01l\\x01x\\x04̈́\\x03 ι\\x01;\\x05 ̈́\" +\n\t\"\\x04եւ\\x04اٴ\\x04وٴ\\x04ۇٴ\\x04يٴ\\x06क़\\x06ख़\\x06ग़\\x06ज़\\x06ड़\\x06ढ़\\x06फ़\" +\n\t\"\\x06य़\\x06ড়\\x06ঢ়\\x06য়\\x06ਲ਼\\x06ਸ਼\\x06ਖ਼\\x06ਗ਼\\x06ਜ਼\\x06ਫ਼\\x06ଡ଼\\x06ଢ଼\" +\n\t\"\\x06ํา\\x06ໍາ\\x06ຫນ\\x06ຫມ\\x06གྷ\\x06ཌྷ\\x06དྷ\\x06བྷ\\x06ཛྷ\\x06ཀྵ\\x06ཱི\\x06ཱུ\" +\n\t\"\\x06ྲྀ\\x09ྲཱྀ\\x06ླྀ\\x09ླཱྀ\\x06ཱྀ\\x06ྒྷ\\x06ྜྷ\\x06ྡྷ\\x06ྦྷ\\x06ྫྷ\\x06ྐྵ\\x02\" +\n\t\"в\\x02д\\x02о\\x02с\\x02т\\x02ъ\\x02ѣ\\x02æ\\x01b\\x01d\\x01e\\x02ǝ\\x01g\\x01i\\x01k\" +\n\t\"\\x01m\\x01n\\x02ȣ\\x01p\\x01t\\x01u\\x02ɐ\\x02ɑ\\x02ə\\x02ɛ\\x02ɜ\\x02ŋ\\x02ɔ\\x02ɯ\" +\n\t\"\\x01v\\x02β\\x02γ\\x02δ\\x02φ\\x02χ\\x02ρ\\x02н\\x02ɒ\\x01c\\x02ɕ\\x02ð\\x01f\\x02ɟ\" +\n\t\"\\x02ɡ\\x02ɥ\\x02ɨ\\x02ɩ\\x02ɪ\\x02ʝ\\x02ɭ\\x02ʟ\\x02ɱ\\x02ɰ\\x02ɲ\\x02ɳ\\x02ɴ\\x02ɵ\" +\n\t\"\\x02ɸ\\x02ʂ\\x02ʃ\\x02ƫ\\x02ʉ\\x02ʊ\\x02ʋ\\x02ʌ\\x01z\\x02ʐ\\x02ʑ\\x02ʒ\\x02θ\\x02ss\" +\n\t\"\\x02ά\\x02έ\\x02ή\\x02ί\\x02ό\\x02ύ\\x02ώ\\x05ἀι\\x05ἁι\\x05ἂι\\x05ἃι\\x05ἄι\\x05ἅι\" +\n\t\"\\x05ἆι\\x05ἇι\\x05ἠι\\x05ἡι\\x05ἢι\\x05ἣι\\x05ἤι\\x05ἥι\\x05ἦι\\x05ἧι\\x05ὠι\\x05ὡι\" +\n\t\"\\x05ὢι\\x05ὣι\\x05ὤι\\x05ὥι\\x05ὦι\\x05ὧι\\x05ὰι\\x04αι\\x04άι\\x05ᾶι\\x02ι\\x05 ̈͂\" +\n\t\"\\x05ὴι\\x04ηι\\x04ήι\\x05ῆι\\x05 ̓̀\\x05 ̓́\\x05 ̓͂\\x02ΐ\\x05 ̔̀\\x05 ̔́\\x05 ̔͂\" +\n\t\"\\x02ΰ\\x05 ̈̀\\x01`\\x05ὼι\\x04ωι\\x04ώι\\x05ῶι\\x06′′\\x09′′′\\x06‵‵\\x09‵‵‵\\x02!\" +\n\t\"!\\x02??\\x02?!\\x02!?\\x0c′′′′\\x010\\x014\\x015\\x016\\x017\\x018\\x019\\x01+\\x01=\" +\n\t\"\\x01(\\x01)\\x02rs\\x02ħ\\x02no\\x01q\\x02sm\\x02tm\\x02ω\\x02å\\x02א\\x02ב\\x02ג\" +\n\t\"\\x02ד\\x02π\\x051⁄7\\x051⁄9\\x061⁄10\\x051⁄3\\x052⁄3\\x051⁄5\\x052⁄5\\x053⁄5\\x054\" +\n\t\"⁄5\\x051⁄6\\x055⁄6\\x051⁄8\\x053⁄8\\x055⁄8\\x057⁄8\\x041⁄\\x02ii\\x02iv\\x02vi\" +\n\t\"\\x04viii\\x02ix\\x02xi\\x050⁄3\\x06∫∫\\x09∫∫∫\\x06∮∮\\x09∮∮∮\\x0210\\x0211\\x0212\" +\n\t\"\\x0213\\x0214\\x0215\\x0216\\x0217\\x0218\\x0219\\x0220\\x04(10)\\x04(11)\\x04(12)\" +\n\t\"\\x04(13)\\x04(14)\\x04(15)\\x04(16)\\x04(17)\\x04(18)\\x04(19)\\x04(20)\\x0c∫∫∫∫\" +\n\t\"\\x02==\\x05⫝̸\\x02ɫ\\x02ɽ\\x02ȿ\\x02ɀ\\x01.\\x04 ゙\\x04 ゚\\x06より\\x06コト\\x05(ᄀ)\\x05\" +\n\t\"(ᄂ)\\x05(ᄃ)\\x05(ᄅ)\\x05(ᄆ)\\x05(ᄇ)\\x05(ᄉ)\\x05(ᄋ)\\x05(ᄌ)\\x05(ᄎ)\\x05(ᄏ)\\x05(ᄐ\" +\n\t\")\\x05(ᄑ)\\x05(ᄒ)\\x05(가)\\x05(나)\\x05(다)\\x05(라)\\x05(마)\\x05(바)\\x05(사)\\x05(아)\" +\n\t\"\\x05(자)\\x05(차)\\x05(카)\\x05(타)\\x05(파)\\x05(하)\\x05(주)\\x08(오전)\\x08(오후)\\x05(一)\" +\n\t\"\\x05(二)\\x05(三)\\x05(四)\\x05(五)\\x05(六)\\x05(七)\\x05(八)\\x05(九)\\x05(十)\\x05(月)\" +\n\t\"\\x05(火)\\x05(水)\\x05(木)\\x05(金)\\x05(土)\\x05(日)\\x05(株)\\x05(有)\\x05(社)\\x05(名)\" +\n\t\"\\x05(特)\\x05(財)\\x05(祝)\\x05(労)\\x05(代)\\x05(呼)\\x05(学)\\x05(監)\\x05(企)\\x05(資)\" +\n\t\"\\x05(協)\\x05(祭)\\x05(休)\\x05(自)\\x05(至)\\x0221\\x0222\\x0223\\x0224\\x0225\\x0226\" +\n\t\"\\x0227\\x0228\\x0229\\x0230\\x0231\\x0232\\x0233\\x0234\\x0235\\x06참고\\x06주의\\x0236\" +\n\t\"\\x0237\\x0238\\x0239\\x0240\\x0241\\x0242\\x0243\\x0244\\x0245\\x0246\\x0247\\x0248\" +\n\t\"\\x0249\\x0250\\x041月\\x042月\\x043月\\x044月\\x045月\\x046月\\x047月\\x048月\\x049月\\x0510\" +\n\t\"月\\x0511月\\x0512月\\x02hg\\x02ev\\x0cアパート\\x0cアルファ\\x0cアンペア\\x09アール\\x0cイニング\\x09\" +\n\t\"インチ\\x09ウォン\\x0fエスクード\\x0cエーカー\\x09オンス\\x09オーム\\x09カイリ\\x0cカラット\\x0cカロリー\\x09ガロ\" +\n\t\"ン\\x09ガンマ\\x06ギガ\\x09ギニー\\x0cキュリー\\x0cギルダー\\x06キロ\\x0fキログラム\\x12キロメートル\\x0fキロワッ\" +\n\t\"ト\\x09グラム\\x0fグラムトン\\x0fクルゼイロ\\x0cクローネ\\x09ケース\\x09コルナ\\x09コーポ\\x0cサイクル\\x0fサンチ\" +\n\t\"ーム\\x0cシリング\\x09センチ\\x09セント\\x09ダース\\x06デシ\\x06ドル\\x06トン\\x06ナノ\\x09ノット\\x09ハイツ\" +\n\t\"\\x0fパーセント\\x09パーツ\\x0cバーレル\\x0fピアストル\\x09ピクル\\x06ピコ\\x06ビル\\x0fファラッド\\x0cフィート\" +\n\t\"\\x0fブッシェル\\x09フラン\\x0fヘクタール\\x06ペソ\\x09ペニヒ\\x09ヘルツ\\x09ペンス\\x09ページ\\x09ベータ\\x0cポイ\" +\n\t\"ント\\x09ボルト\\x06ホン\\x09ポンド\\x09ホール\\x09ホーン\\x0cマイクロ\\x09マイル\\x09マッハ\\x09マルク\\x0fマ\" +\n\t\"ンション\\x0cミクロン\\x06ミリ\\x0fミリバール\\x06メガ\\x0cメガトン\\x0cメートル\\x09ヤード\\x09ヤール\\x09ユアン\" +\n\t\"\\x0cリットル\\x06リラ\\x09ルピー\\x0cルーブル\\x06レム\\x0fレントゲン\\x09ワット\\x040点\\x041点\\x042点\" +\n\t\"\\x043点\\x044点\\x045点\\x046点\\x047点\\x048点\\x049点\\x0510点\\x0511点\\x0512点\\x0513点\" +\n\t\"\\x0514点\\x0515点\\x0516点\\x0517点\\x0518点\\x0519点\\x0520点\\x0521点\\x0522点\\x0523点\" +\n\t\"\\x0524点\\x02da\\x02au\\x02ov\\x02pc\\x02dm\\x02iu\\x06平成\\x06昭和\\x06大正\\x06明治\\x0c株\" +\n\t\"式会社\\x02pa\\x02na\\x02ma\\x02ka\\x02kb\\x02mb\\x02gb\\x04kcal\\x02pf\\x02nf\\x02m\" +\n\t\"g\\x02kg\\x02hz\\x02ml\\x02dl\\x02kl\\x02fm\\x02nm\\x02mm\\x02cm\\x02km\\x02m2\\x02m\" +\n\t\"3\\x05m∕s\\x06m∕s2\\x07rad∕s\\x08rad∕s2\\x02ps\\x02ns\\x02ms\\x02pv\\x02nv\\x02mv\" +\n\t\"\\x02kv\\x02pw\\x02nw\\x02mw\\x02kw\\x02bq\\x02cc\\x02cd\\x06c∕kg\\x02db\\x02gy\\x02\" +\n\t\"ha\\x02hp\\x02in\\x02kk\\x02kt\\x02lm\\x02ln\\x02lx\\x02ph\\x02pr\\x02sr\\x02sv\\x02\" +\n\t\"wb\\x05v∕m\\x05a∕m\\x041日\\x042日\\x043日\\x044日\\x045日\\x046日\\x047日\\x048日\\x049日\" +\n\t\"\\x0510日\\x0511日\\x0512日\\x0513日\\x0514日\\x0515日\\x0516日\\x0517日\\x0518日\\x0519日\" +\n\t\"\\x0520日\\x0521日\\x0522日\\x0523日\\x0524日\\x0525日\\x0526日\\x0527日\\x0528日\\x0529日\" +\n\t\"\\x0530日\\x0531日\\x02ь\\x02ɦ\\x02ɬ\\x02ʞ\\x02ʇ\\x02œ\\x04𤋮\\x04𢡊\\x04𢡄\\x04𣏕\\x04𥉉\" +\n\t\"\\x04𥳐\\x04𧻓\\x02ff\\x02fi\\x02fl\\x02st\\x04մն\\x04մե\\x04մի\\x04վն\\x04մխ\\x04יִ\" +\n\t\"\\x04ײַ\\x02ע\\x02ה\\x02כ\\x02ל\\x02ם\\x02ר\\x02ת\\x04שׁ\\x04שׂ\\x06שּׁ\\x06שּׂ\\x04א\" +\n\t\"ַ\\x04אָ\\x04אּ\\x04בּ\\x04גּ\\x04דּ\\x04הּ\\x04וּ\\x04זּ\\x04טּ\\x04יּ\\x04ךּ\\x04\" +\n\t\"כּ\\x04לּ\\x04מּ\\x04נּ\\x04סּ\\x04ףּ\\x04פּ\\x04צּ\\x04קּ\\x04רּ\\x04שּ\\x04תּ\" +\n\t\"\\x04וֹ\\x04בֿ\\x04כֿ\\x04פֿ\\x04אל\\x02ٱ\\x02ٻ\\x02پ\\x02ڀ\\x02ٺ\\x02ٿ\\x02ٹ\\x02ڤ\" +\n\t\"\\x02ڦ\\x02ڄ\\x02ڃ\\x02چ\\x02ڇ\\x02ڍ\\x02ڌ\\x02ڎ\\x02ڈ\\x02ژ\\x02ڑ\\x02ک\\x02گ\\x02ڳ\" +\n\t\"\\x02ڱ\\x02ں\\x02ڻ\\x02ۀ\\x02ہ\\x02ھ\\x02ے\\x02ۓ\\x02ڭ\\x02ۇ\\x02ۆ\\x02ۈ\\x02ۋ\\x02ۅ\" +\n\t\"\\x02ۉ\\x02ې\\x02ى\\x04ئا\\x04ئە\\x04ئو\\x04ئۇ\\x04ئۆ\\x04ئۈ\\x04ئې\\x04ئى\\x02ی\\x04\" +\n\t\"ئج\\x04ئح\\x04ئم\\x04ئي\\x04بج\\x04بح\\x04بخ\\x04بم\\x04بى\\x04بي\\x04تج\\x04تح\" +\n\t\"\\x04تخ\\x04تم\\x04تى\\x04تي\\x04ثج\\x04ثم\\x04ثى\\x04ثي\\x04جح\\x04جم\\x04حج\\x04حم\" +\n\t\"\\x04خج\\x04خح\\x04خم\\x04سج\\x04سح\\x04سخ\\x04سم\\x04صح\\x04صم\\x04ضج\\x04ضح\\x04ضخ\" +\n\t\"\\x04ضم\\x04طح\\x04طم\\x04ظم\\x04عج\\x04عم\\x04غج\\x04غم\\x04فج\\x04فح\\x04فخ\\x04فم\" +\n\t\"\\x04فى\\x04في\\x04قح\\x04قم\\x04قى\\x04قي\\x04كا\\x04كج\\x04كح\\x04كخ\\x04كل\\x04كم\" +\n\t\"\\x04كى\\x04كي\\x04لج\\x04لح\\x04لخ\\x04لم\\x04لى\\x04لي\\x04مج\\x04مح\\x04مخ\\x04مم\" +\n\t\"\\x04مى\\x04مي\\x04نج\\x04نح\\x04نخ\\x04نم\\x04نى\\x04ني\\x04هج\\x04هم\\x04هى\\x04هي\" +\n\t\"\\x04يج\\x04يح\\x04يخ\\x04يم\\x04يى\\x04يي\\x04ذٰ\\x04رٰ\\x04ىٰ\\x05 ٌّ\\x05 ٍّ\\x05\" +\n\t\" َّ\\x05 ُّ\\x05 ِّ\\x05 ّٰ\\x04ئر\\x04ئز\\x04ئن\\x04بر\\x04بز\\x04بن\\x04تر\\x04تز\" +\n\t\"\\x04تن\\x04ثر\\x04ثز\\x04ثن\\x04ما\\x04نر\\x04نز\\x04نن\\x04ير\\x04يز\\x04ين\\x04ئخ\" +\n\t\"\\x04ئه\\x04به\\x04ته\\x04صخ\\x04له\\x04نه\\x04هٰ\\x04يه\\x04ثه\\x04سه\\x04شم\\x04شه\" +\n\t\"\\x06ـَّ\\x06ـُّ\\x06ـِّ\\x04طى\\x04طي\\x04عى\\x04عي\\x04غى\\x04غي\\x04سى\\x04سي\" +\n\t\"\\x04شى\\x04شي\\x04حى\\x04حي\\x04جى\\x04جي\\x04خى\\x04خي\\x04صى\\x04صي\\x04ضى\\x04ضي\" +\n\t\"\\x04شج\\x04شح\\x04شخ\\x04شر\\x04سر\\x04صر\\x04ضر\\x04اً\\x06تجم\\x06تحج\\x06تحم\" +\n\t\"\\x06تخم\\x06تمج\\x06تمح\\x06تمخ\\x06جمح\\x06حمي\\x06حمى\\x06سحج\\x06سجح\\x06سجى\" +\n\t\"\\x06سمح\\x06سمج\\x06سمم\\x06صحح\\x06صمم\\x06شحم\\x06شجي\\x06شمخ\\x06شمم\\x06ضحى\" +\n\t\"\\x06ضخم\\x06طمح\\x06طمم\\x06طمي\\x06عجم\\x06عمم\\x06عمى\\x06غمم\\x06غمي\\x06غمى\" +\n\t\"\\x06فخم\\x06قمح\\x06قمم\\x06لحم\\x06لحي\\x06لحى\\x06لجج\\x06لخم\\x06لمح\\x06محج\" +\n\t\"\\x06محم\\x06محي\\x06مجح\\x06مجم\\x06مخج\\x06مخم\\x06مجخ\\x06همج\\x06همم\\x06نحم\" +\n\t\"\\x06نحى\\x06نجم\\x06نجى\\x06نمي\\x06نمى\\x06يمم\\x06بخي\\x06تجي\\x06تجى\\x06تخي\" +\n\t\"\\x06تخى\\x06تمي\\x06تمى\\x06جمي\\x06جحى\\x06جمى\\x06سخى\\x06صحي\\x06شحي\\x06ضحي\" +\n\t\"\\x06لجي\\x06لمي\\x06يحي\\x06يجي\\x06يمي\\x06ممي\\x06قمي\\x06نحي\\x06عمي\\x06كمي\" +\n\t\"\\x06نجح\\x06مخي\\x06لجم\\x06كمم\\x06جحي\\x06حجي\\x06مجي\\x06فمي\\x06بحي\\x06سخي\" +\n\t\"\\x06نجي\\x06صلے\\x06قلے\\x08الله\\x08اكبر\\x08محمد\\x08صلعم\\x08رسول\\x08عليه\" +\n\t\"\\x08وسلم\\x06صلى!صلى الله عليه وسلم\\x0fجل جلاله\\x08ریال\\x01,\\x01:\\x01!\" +\n\t\"\\x01?\\x01_\\x01{\\x01}\\x01[\\x01]\\x01#\\x01&\\x01*\\x01-\\x01<\\x01>\\x01\\\\\\x01$\" +\n\t\"\\x01%\\x01@\\x04ـً\\x04ـَ\\x04ـُ\\x04ـِ\\x04ـّ\\x04ـْ\\x02ء\\x02آ\\x02أ\\x02ؤ\\x02إ\" +\n\t\"\\x02ئ\\x02ا\\x02ب\\x02ة\\x02ت\\x02ث\\x02ج\\x02ح\\x02خ\\x02د\\x02ذ\\x02ر\\x02ز\\x02س\" +\n\t\"\\x02ش\\x02ص\\x02ض\\x02ط\\x02ظ\\x02ع\\x02غ\\x02ف\\x02ق\\x02ك\\x02ل\\x02م\\x02ن\\x02ه\" +\n\t\"\\x02و\\x02ي\\x04لآ\\x04لأ\\x04لإ\\x04لا\\x01\\x22\\x01'\\x01/\\x01^\\x01|\\x01~\\x02¢\" +\n\t\"\\x02£\\x02¬\\x02¦\\x02¥\\x08𝅗𝅥\\x08𝅘𝅥\\x0c𝅘𝅥𝅮\\x0c𝅘𝅥𝅯\\x0c𝅘𝅥𝅰\\x0c𝅘𝅥𝅱\\x0c𝅘𝅥𝅲\\x08𝆹\" +\n\t\"𝅥\\x08𝆺𝅥\\x0c𝆹𝅥𝅮\\x0c𝆺𝅥𝅮\\x0c𝆹𝅥𝅯\\x0c𝆺𝅥𝅯\\x02ı\\x02ȷ\\x02α\\x02ε\\x02ζ\\x02η\\x02\" +\n\t\"κ\\x02λ\\x02μ\\x02ν\\x02ξ\\x02ο\\x02σ\\x02τ\\x02υ\\x02ψ\\x03∇\\x03∂\\x02ϝ\\x02ٮ\\x02ڡ\" +\n\t\"\\x02ٯ\\x020,\\x021,\\x022,\\x023,\\x024,\\x025,\\x026,\\x027,\\x028,\\x029,\\x03(a)\" +\n\t\"\\x03(b)\\x03(c)\\x03(d)\\x03(e)\\x03(f)\\x03(g)\\x03(h)\\x03(i)\\x03(j)\\x03(k)\" +\n\t\"\\x03(l)\\x03(m)\\x03(n)\\x03(o)\\x03(p)\\x03(q)\\x03(r)\\x03(s)\\x03(t)\\x03(u)\" +\n\t\"\\x03(v)\\x03(w)\\x03(x)\\x03(y)\\x03(z)\\x07〔s〕\\x02wz\\x02hv\\x02sd\\x03ppv\\x02w\" +\n\t\"c\\x02mc\\x02md\\x02dj\\x06ほか\\x06ココ\\x03サ\\x03手\\x03字\\x03双\\x03デ\\x03二\\x03多\\x03解\" +\n\t\"\\x03天\\x03交\\x03映\\x03無\\x03料\\x03前\\x03後\\x03再\\x03新\\x03初\\x03終\\x03生\\x03販\\x03声\" +\n\t\"\\x03吹\\x03演\\x03投\\x03捕\\x03一\\x03三\\x03遊\\x03左\\x03中\\x03右\\x03指\\x03走\\x03打\\x03禁\" +\n\t\"\\x03空\\x03合\\x03満\\x03有\\x03月\\x03申\\x03割\\x03営\\x03配\\x09〔本〕\\x09〔三〕\\x09〔二〕\\x09〔安\" +\n\t\"〕\\x09〔点〕\\x09〔打〕\\x09〔盗〕\\x09〔勝〕\\x09〔敗〕\\x03得\\x03可\\x03丽\\x03丸\\x03乁\\x03你\\x03\" +\n\t\"侮\\x03侻\\x03倂\\x03偺\\x03備\\x03僧\\x03像\\x03㒞\\x03免\\x03兔\\x03兤\\x03具\\x03㒹\\x03內\\x03\" +\n\t\"冗\\x03冤\\x03仌\\x03冬\\x03况\\x03凵\\x03刃\\x03㓟\\x03刻\\x03剆\\x03剷\\x03㔕\\x03勇\\x03勉\\x03\" +\n\t\"勤\\x03勺\\x03包\\x03匆\\x03北\\x03卉\\x03卑\\x03博\\x03即\\x03卽\\x03卿\\x03灰\\x03及\\x03叟\\x03\" +\n\t\"叫\\x03叱\\x03吆\\x03咞\\x03吸\\x03呈\\x03周\\x03咢\\x03哶\\x03唐\\x03啓\\x03啣\\x03善\\x03喙\\x03\" +\n\t\"喫\\x03喳\\x03嗂\\x03圖\\x03嘆\\x03圗\\x03噑\\x03噴\\x03切\\x03壮\\x03城\\x03埴\\x03堍\\x03型\\x03\" +\n\t\"堲\\x03報\\x03墬\\x03売\\x03壷\\x03夆\\x03夢\\x03奢\\x03姬\\x03娛\\x03娧\\x03姘\\x03婦\\x03㛮\\x03\" +\n\t\"嬈\\x03嬾\\x03寃\\x03寘\\x03寧\\x03寳\\x03寿\\x03将\\x03尢\\x03㞁\\x03屠\\x03屮\\x03峀\\x03岍\\x03\" +\n\t\"嵃\\x03嵮\\x03嵫\\x03嵼\\x03巡\\x03巢\\x03㠯\\x03巽\\x03帨\\x03帽\\x03幩\\x03㡢\\x03㡼\\x03庰\\x03\" +\n\t\"庳\\x03庶\\x03廊\\x03廾\\x03舁\\x03弢\\x03㣇\\x03形\\x03彫\\x03㣣\\x03徚\\x03忍\\x03志\\x03忹\\x03\" +\n\t\"悁\\x03㤺\\x03㤜\\x03悔\\x03惇\\x03慈\\x03慌\\x03慎\\x03慺\\x03憎\\x03憲\\x03憤\\x03憯\\x03懞\\x03\" +\n\t\"懲\\x03懶\\x03成\\x03戛\\x03扝\\x03抱\\x03拔\\x03捐\\x03挽\\x03拼\\x03捨\\x03掃\\x03揤\\x03搢\\x03\" +\n\t\"揅\\x03掩\\x03㨮\\x03摩\\x03摾\\x03撝\\x03摷\\x03㩬\\x03敏\\x03敬\\x03旣\\x03書\\x03晉\\x03㬙\\x03\" +\n\t\"暑\\x03㬈\\x03㫤\\x03冒\\x03冕\\x03最\\x03暜\\x03肭\\x03䏙\\x03朗\\x03望\\x03朡\\x03杞\\x03杓\\x03\" +\n\t\"㭉\\x03柺\\x03枅\\x03桒\\x03梅\\x03梎\\x03栟\\x03椔\\x03㮝\\x03楂\\x03榣\\x03槪\\x03檨\\x03櫛\\x03\" +\n\t\"㰘\\x03次\\x03歔\\x03㱎\\x03歲\\x03殟\\x03殺\\x03殻\\x03汎\\x03沿\\x03泍\\x03汧\\x03洖\\x03派\\x03\" +\n\t\"海\\x03流\\x03浩\\x03浸\\x03涅\\x03洴\\x03港\\x03湮\\x03㴳\\x03滋\\x03滇\\x03淹\\x03潮\\x03濆\\x03\" +\n\t\"瀹\\x03瀞\\x03瀛\\x03㶖\\x03灊\\x03災\\x03灷\\x03炭\\x03煅\\x03熜\\x03爨\\x03爵\\x03牐\\x03犀\\x03\" +\n\t\"犕\\x03獺\\x03王\\x03㺬\\x03玥\\x03㺸\\x03瑇\\x03瑜\\x03瑱\\x03璅\\x03瓊\\x03㼛\\x03甤\\x03甾\\x03\" +\n\t\"異\\x03瘐\\x03㿼\\x03䀈\\x03直\\x03眞\\x03真\\x03睊\\x03䀹\\x03瞋\\x03䁆\\x03䂖\\x03硎\\x03碌\\x03\" +\n\t\"磌\\x03䃣\\x03祖\\x03福\\x03秫\\x03䄯\\x03穀\\x03穊\\x03穏\\x03䈂\\x03篆\\x03築\\x03䈧\\x03糒\\x03\" +\n\t\"䊠\\x03糨\\x03糣\\x03紀\\x03絣\\x03䌁\\x03緇\\x03縂\\x03繅\\x03䌴\\x03䍙\\x03罺\\x03羕\\x03翺\\x03\" +\n\t\"者\\x03聠\\x03聰\\x03䏕\\x03育\\x03脃\\x03䐋\\x03脾\\x03媵\\x03舄\\x03辞\\x03䑫\\x03芑\\x03芋\\x03\" +\n\t\"芝\\x03劳\\x03花\\x03芳\\x03芽\\x03苦\\x03若\\x03茝\\x03荣\\x03莭\\x03茣\\x03莽\\x03菧\\x03著\\x03\" +\n\t\"荓\\x03菊\\x03菌\\x03菜\\x03䔫\\x03蓱\\x03蓳\\x03蔖\\x03蕤\\x03䕝\\x03䕡\\x03䕫\\x03虐\\x03虜\\x03\" +\n\t\"虧\\x03虩\\x03蚩\\x03蚈\\x03蜎\\x03蛢\\x03蝹\\x03蜨\\x03蝫\\x03螆\\x03蟡\\x03蠁\\x03䗹\\x03衠\\x03\" +\n\t\"衣\\x03裗\\x03裞\\x03䘵\\x03裺\\x03㒻\\x03䚾\\x03䛇\\x03誠\\x03諭\\x03變\\x03豕\\x03貫\\x03賁\\x03\" +\n\t\"贛\\x03起\\x03跋\\x03趼\\x03跰\\x03軔\\x03輸\\x03邔\\x03郱\\x03鄑\\x03鄛\\x03鈸\\x03鋗\\x03鋘\\x03\" +\n\t\"鉼\\x03鏹\\x03鐕\\x03開\\x03䦕\\x03閷\\x03䧦\\x03雃\\x03嶲\\x03霣\\x03䩮\\x03䩶\\x03韠\\x03䪲\\x03\" +\n\t\"頋\\x03頩\\x03飢\\x03䬳\\x03餩\\x03馧\\x03駂\\x03駾\\x03䯎\\x03鬒\\x03鱀\\x03鳽\\x03䳎\\x03䳭\\x03\" +\n\t\"鵧\\x03䳸\\x03麻\\x03䵖\\x03黹\\x03黾\\x03鼅\\x03鼏\\x03鼖\\x03鼻\"\n\nvar xorData string = \"\" + // Size: 4855 bytes\n\t\"\\x02\\x0c\\x09\\x02\\xb0\\xec\\x02\\xad\\xd8\\x02\\xad\\xd9\\x02\\x06\\x07\\x02\\x0f\\x12\" +\n\t\"\\x02\\x0f\\x1f\\x02\\x0f\\x1d\\x02\\x01\\x13\\x02\\x0f\\x16\\x02\\x0f\\x0b\\x02\\x0f3\" +\n\t\"\\x02\\x0f7\\x02\\x0f?\\x02\\x0f/\\x02\\x0f*\\x02\\x0c&\\x02\\x0c*\\x02\\x0c;\\x02\\x0c9\" +\n\t\"\\x02\\x0c%\\x02\\xab\\xed\\x02\\xab\\xe2\\x02\\xab\\xe3\\x02\\xa9\\xe0\\x02\\xa9\\xe1\" +\n\t\"\\x02\\xa9\\xe6\\x02\\xa3\\xcb\\x02\\xa3\\xc8\\x02\\xa3\\xc9\\x02\\x01#\\x02\\x01\\x08\" +\n\t\"\\x02\\x0e>\\x02\\x0e'\\x02\\x0f\\x03\\x02\\x03\\x0d\\x02\\x03\\x09\\x02\\x03\\x17\\x02\" +\n\t\"\\x03\\x0e\\x02\\x02\\x03\\x02\\x011\\x02\\x01\\x00\\x02\\x01\\x10\\x02\\x03<\\x02\\x07\" +\n\t\"\\x0d\\x02\\x02\\x0c\\x02\\x0c0\\x02\\x01\\x03\\x02\\x01\\x01\\x02\\x01 \\x02\\x01\\x22\" +\n\t\"\\x02\\x01)\\x02\\x01\\x0a\\x02\\x01\\x0c\\x02\\x02\\x06\\x02\\x02\\x02\\x02\\x03\\x10\" +\n\t\"\\x03\\x037 \\x03\\x0b+\\x03\\x02\\x01\\x04\\x02\\x01\\x02\\x02\\x019\\x02\\x03\\x1c\\x02\" +\n\t\"\\x02$\\x03\\x80p$\\x02\\x03:\\x02\\x03\\x0a\\x03\\xc1r.\\x03\\xc1r,\\x03\\xc1r\\x02\" +\n\t\"\\x02\\x02:\\x02\\x02>\\x02\\x02,\\x02\\x02\\x10\\x02\\x02\\x00\\x03\\xc1s<\\x03\\xc1s*\" +\n\t\"\\x03\\xc2L$\\x03\\xc2L;\\x02\\x09)\\x02\\x0a\\x19\\x03\\x83\\xab\\xe3\\x03\\x83\\xab\" +\n\t\"\\xf2\\x03 4\\xe0\\x03\\x81\\xab\\xea\\x03\\x81\\xab\\xf3\\x03 4\\xef\\x03\\x96\\xe1\\xcd\" +\n\t\"\\x03\\x84\\xe5\\xc3\\x02\\x0d\\x11\\x03\\x8b\\xec\\xcb\\x03\\x94\\xec\\xcf\\x03\\x9a\\xec\" +\n\t\"\\xc2\\x03\\x8b\\xec\\xdb\\x03\\x94\\xec\\xdf\\x03\\x9a\\xec\\xd2\\x03\\x01\\x0c!\\x03\" +\n\t\"\\x01\\x0c#\\x03ʠ\\x9d\\x03ʣ\\x9c\\x03ʢ\\x9f\\x03ʥ\\x9e\\x03ʤ\\x91\\x03ʧ\\x90\\x03ʦ\\x93\" +\n\t\"\\x03ʩ\\x92\\x03ʨ\\x95\\x03\\xca\\xf3\\xb5\\x03\\xca\\xf0\\xb4\\x03\\xca\\xf1\\xb7\\x03\" +\n\t\"\\xca\\xf6\\xb6\\x03\\xca\\xf7\\x89\\x03\\xca\\xf4\\x88\\x03\\xca\\xf5\\x8b\\x03\\xca\\xfa\" +\n\t\"\\x8a\\x03\\xca\\xfb\\x8d\\x03\\xca\\xf8\\x8c\\x03\\xca\\xf9\\x8f\\x03\\xca\\xfe\\x8e\\x03\" +\n\t\"\\xca\\xff\\x81\\x03\\xca\\xfc\\x80\\x03\\xca\\xfd\\x83\\x03\\xca\\xe2\\x82\\x03\\xca\\xe3\" +\n\t\"\\x85\\x03\\xca\\xe0\\x84\\x03\\xca\\xe1\\x87\\x03\\xca\\xe6\\x86\\x03\\xca\\xe7\\x99\\x03\" +\n\t\"\\xca\\xe4\\x98\\x03\\xca\\xe5\\x9b\\x03\\xca\\xea\\x9a\\x03\\xca\\xeb\\x9d\\x03\\xca\\xe8\" +\n\t\"\\x9c\\x03ؓ\\x89\\x03ߔ\\x8b\\x02\\x010\\x03\\x03\\x04\\x1e\\x03\\x04\\x15\\x12\\x03\\x0b\" +\n\t\"\\x05,\\x03\\x06\\x04\\x00\\x03\\x06\\x04)\\x03\\x06\\x044\\x03\\x06\\x04<\\x03\\x06\\x05\" +\n\t\"\\x1d\\x03\\x06\\x06\\x00\\x03\\x06\\x06\\x0a\\x03\\x06\\x06'\\x03\\x06\\x062\\x03\\x0786\" +\n\t\"\\x03\\x079/\\x03\\x079 \\x03\\x07:\\x0e\\x03\\x07:\\x1b\\x03\\x07:%\\x03\\x07;/\\x03\" +\n\t\"\\x07;%\\x03\\x074\\x11\\x03\\x076\\x09\\x03\\x077*\\x03\\x070\\x01\\x03\\x070\\x0f\\x03\" +\n\t\"\\x070.\\x03\\x071\\x16\\x03\\x071\\x04\\x03\\x0710\\x03\\x072\\x18\\x03\\x072-\\x03\" +\n\t\"\\x073\\x14\\x03\\x073>\\x03\\x07'\\x09\\x03\\x07 \\x00\\x03\\x07\\x1f\\x0b\\x03\\x07\" +\n\t\"\\x18#\\x03\\x07\\x18(\\x03\\x07\\x186\\x03\\x07\\x18\\x03\\x03\\x07\\x19\\x16\\x03\\x07\" +\n\t\"\\x116\\x03\\x07\\x12'\\x03\\x07\\x13\\x10\\x03\\x07\\x0c&\\x03\\x07\\x0c\\x08\\x03\\x07\" +\n\t\"\\x0c\\x13\\x03\\x07\\x0d\\x02\\x03\\x07\\x0d\\x1c\\x03\\x07\\x0b5\\x03\\x07\\x0b\\x0a\" +\n\t\"\\x03\\x07\\x0b\\x01\\x03\\x07\\x0b\\x0f\\x03\\x07\\x05\\x00\\x03\\x07\\x05\\x09\\x03\\x07\" +\n\t\"\\x05\\x0b\\x03\\x07\\x07\\x01\\x03\\x07\\x07\\x08\\x03\\x07\\x00<\\x03\\x07\\x00+\\x03\" +\n\t\"\\x07\\x01)\\x03\\x07\\x01\\x1b\\x03\\x07\\x01\\x08\\x03\\x07\\x03?\\x03\\x0445\\x03\\x04\" +\n\t\"4\\x08\\x03\\x0454\\x03\\x04)/\\x03\\x04)5\\x03\\x04+\\x05\\x03\\x04+\\x14\\x03\\x04+ \" +\n\t\"\\x03\\x04+<\\x03\\x04*&\\x03\\x04*\\x22\\x03\\x04&8\\x03\\x04!\\x01\\x03\\x04!\\x22\" +\n\t\"\\x03\\x04\\x11+\\x03\\x04\\x10.\\x03\\x04\\x104\\x03\\x04\\x13=\\x03\\x04\\x12\\x04\\x03\" +\n\t\"\\x04\\x12\\x0a\\x03\\x04\\x0d\\x1d\\x03\\x04\\x0d\\x07\\x03\\x04\\x0d \\x03\\x05<>\\x03\" +\n\t\"\\x055<\\x03\\x055!\\x03\\x055#\\x03\\x055&\\x03\\x054\\x1d\\x03\\x054\\x02\\x03\\x054\" +\n\t\"\\x07\\x03\\x0571\\x03\\x053\\x1a\\x03\\x053\\x16\\x03\\x05.<\\x03\\x05.\\x07\\x03\\x05)\" +\n\t\":\\x03\\x05)<\\x03\\x05)\\x0c\\x03\\x05)\\x15\\x03\\x05+-\\x03\\x05+5\\x03\\x05$\\x1e\" +\n\t\"\\x03\\x05$\\x14\\x03\\x05'\\x04\\x03\\x05'\\x14\\x03\\x05&\\x02\\x03\\x05\\x226\\x03\" +\n\t\"\\x05\\x22\\x0c\\x03\\x05\\x22\\x1c\\x03\\x05\\x19\\x0a\\x03\\x05\\x1b\\x09\\x03\\x05\\x1b\" +\n\t\"\\x0c\\x03\\x05\\x14\\x07\\x03\\x05\\x16?\\x03\\x05\\x16\\x0c\\x03\\x05\\x0c\\x05\\x03\" +\n\t\"\\x05\\x0e\\x0f\\x03\\x05\\x01\\x0e\\x03\\x05\\x00(\\x03\\x05\\x030\\x03\\x05\\x03\\x06\" +\n\t\"\\x03\\x0a==\\x03\\x0a=1\\x03\\x0a=,\\x03\\x0a=\\x0c\\x03\\x0a??\\x03\\x0a<\\x08\\x03\" +\n\t\"\\x0a9!\\x03\\x0a9)\\x03\\x0a97\\x03\\x0a99\\x03\\x0a6\\x0a\\x03\\x0a6\\x1c\\x03\\x0a6\" +\n\t\"\\x17\\x03\\x0a7'\\x03\\x0a78\\x03\\x0a73\\x03\\x0a'\\x01\\x03\\x0a'&\\x03\\x0a\\x1f\" +\n\t\"\\x0e\\x03\\x0a\\x1f\\x03\\x03\\x0a\\x1f3\\x03\\x0a\\x1b/\\x03\\x0a\\x18\\x19\\x03\\x0a\" +\n\t\"\\x19\\x01\\x03\\x0a\\x16\\x14\\x03\\x0a\\x0e\\x22\\x03\\x0a\\x0f\\x10\\x03\\x0a\\x0f\\x02\" +\n\t\"\\x03\\x0a\\x0f \\x03\\x0a\\x0c\\x04\\x03\\x0a\\x0b>\\x03\\x0a\\x0b+\\x03\\x0a\\x08/\\x03\" +\n\t\"\\x0a\\x046\\x03\\x0a\\x05\\x14\\x03\\x0a\\x00\\x04\\x03\\x0a\\x00\\x10\\x03\\x0a\\x00\" +\n\t\"\\x14\\x03\\x0b<3\\x03\\x0b;*\\x03\\x0b9\\x22\\x03\\x0b9)\\x03\\x0b97\\x03\\x0b+\\x10\" +\n\t\"\\x03\\x0b((\\x03\\x0b&5\\x03\\x0b$\\x1c\\x03\\x0b$\\x12\\x03\\x0b%\\x04\\x03\\x0b#<\" +\n\t\"\\x03\\x0b#0\\x03\\x0b#\\x0d\\x03\\x0b#\\x19\\x03\\x0b!:\\x03\\x0b!\\x1f\\x03\\x0b!\\x00\" +\n\t\"\\x03\\x0b\\x1e5\\x03\\x0b\\x1c\\x1d\\x03\\x0b\\x1d-\\x03\\x0b\\x1d(\\x03\\x0b\\x18.\\x03\" +\n\t\"\\x0b\\x18 \\x03\\x0b\\x18\\x16\\x03\\x0b\\x14\\x13\\x03\\x0b\\x15$\\x03\\x0b\\x15\\x22\" +\n\t\"\\x03\\x0b\\x12\\x1b\\x03\\x0b\\x12\\x10\\x03\\x0b\\x132\\x03\\x0b\\x13=\\x03\\x0b\\x12\" +\n\t\"\\x18\\x03\\x0b\\x0c&\\x03\\x0b\\x061\\x03\\x0b\\x06:\\x03\\x0b\\x05#\\x03\\x0b\\x05<\" +\n\t\"\\x03\\x0b\\x04\\x0b\\x03\\x0b\\x04\\x04\\x03\\x0b\\x04\\x1b\\x03\\x0b\\x042\\x03\\x0b\" +\n\t\"\\x041\\x03\\x0b\\x03\\x03\\x03\\x0b\\x03\\x1d\\x03\\x0b\\x03/\\x03\\x0b\\x03+\\x03\\x0b\" +\n\t\"\\x02\\x1b\\x03\\x0b\\x02\\x00\\x03\\x0b\\x01\\x1e\\x03\\x0b\\x01\\x08\\x03\\x0b\\x015\" +\n\t\"\\x03\\x06\\x0d9\\x03\\x06\\x0d=\\x03\\x06\\x0d?\\x03\\x02\\x001\\x03\\x02\\x003\\x03\" +\n\t\"\\x02\\x02\\x19\\x03\\x02\\x006\\x03\\x02\\x02\\x1b\\x03\\x02\\x004\\x03\\x02\\x00<\\x03\" +\n\t\"\\x02\\x02\\x0a\\x03\\x02\\x02\\x0e\\x03\\x02\\x01\\x1a\\x03\\x02\\x01\\x07\\x03\\x02\\x01\" +\n\t\"\\x05\\x03\\x02\\x01\\x0b\\x03\\x02\\x01%\\x03\\x02\\x01\\x0c\\x03\\x02\\x01\\x04\\x03\" +\n\t\"\\x02\\x01\\x1c\\x03\\x02\\x00.\\x03\\x02\\x002\\x03\\x02\\x00>\\x03\\x02\\x00\\x12\\x03\" +\n\t\"\\x02\\x00\\x16\\x03\\x02\\x011\\x03\\x02\\x013\\x03\\x02\\x02 \\x03\\x02\\x02%\\x03\\x02\" +\n\t\"\\x02$\\x03\\x02\\x028\\x03\\x02\\x02;\\x03\\x02\\x024\\x03\\x02\\x012\\x03\\x02\\x022\" +\n\t\"\\x03\\x02\\x02/\\x03\\x02\\x01,\\x03\\x02\\x01\\x13\\x03\\x02\\x01\\x16\\x03\\x02\\x01\" +\n\t\"\\x11\\x03\\x02\\x01\\x1e\\x03\\x02\\x01\\x15\\x03\\x02\\x01\\x17\\x03\\x02\\x01\\x0f\\x03\" +\n\t\"\\x02\\x01\\x08\\x03\\x02\\x00?\\x03\\x02\\x03\\x07\\x03\\x02\\x03\\x0d\\x03\\x02\\x03\" +\n\t\"\\x13\\x03\\x02\\x03\\x1d\\x03\\x02\\x03\\x1f\\x03\\x02\\x00\\x03\\x03\\x02\\x00\\x0d\\x03\" +\n\t\"\\x02\\x00\\x01\\x03\\x02\\x00\\x1b\\x03\\x02\\x00\\x19\\x03\\x02\\x00\\x18\\x03\\x02\\x00\" +\n\t\"\\x13\\x03\\x02\\x00/\\x03\\x07>\\x12\\x03\\x07<\\x1f\\x03\\x07>\\x1d\\x03\\x06\\x1d\\x0e\" +\n\t\"\\x03\\x07>\\x1c\\x03\\x07>:\\x03\\x07>\\x13\\x03\\x04\\x12+\\x03\\x07?\\x03\\x03\\x07>\" +\n\t\"\\x02\\x03\\x06\\x224\\x03\\x06\\x1a.\\x03\\x07<%\\x03\\x06\\x1c\\x0b\\x03\\x0609\\x03\" +\n\t\"\\x05\\x1f\\x01\\x03\\x04'\\x08\\x03\\x93\\xfd\\xf5\\x03\\x02\\x0d \\x03\\x02\\x0d#\\x03\" +\n\t\"\\x02\\x0d!\\x03\\x02\\x0d&\\x03\\x02\\x0d\\x22\\x03\\x02\\x0d/\\x03\\x02\\x0d,\\x03\\x02\" +\n\t\"\\x0d$\\x03\\x02\\x0d'\\x03\\x02\\x0d%\\x03\\x02\\x0d;\\x03\\x02\\x0d=\\x03\\x02\\x0d?\" +\n\t\"\\x03\\x099.\\x03\\x08\\x0b7\\x03\\x08\\x02\\x14\\x03\\x08\\x14\\x0d\\x03\\x08.:\\x03\" +\n\t\"\\x089'\\x03\\x0f\\x0b\\x18\\x03\\x0f\\x1c1\\x03\\x0f\\x17&\\x03\\x0f9\\x1f\\x03\\x0f0\" +\n\t\"\\x0c\\x03\\x0e\\x0a9\\x03\\x0e\\x056\\x03\\x0e\\x1c#\\x03\\x0f\\x13\\x0e\\x03\\x072\\x00\" +\n\t\"\\x03\\x070\\x0d\\x03\\x072\\x0b\\x03\\x06\\x11\\x18\\x03\\x070\\x10\\x03\\x06\\x0f(\\x03\" +\n\t\"\\x072\\x05\\x03\\x06\\x0f,\\x03\\x073\\x15\\x03\\x06\\x07\\x08\\x03\\x05\\x16\\x02\\x03\" +\n\t\"\\x04\\x0b \\x03\\x05:8\\x03\\x05\\x16%\\x03\\x0a\\x0d\\x1f\\x03\\x06\\x16\\x10\\x03\\x05\" +\n\t\"\\x1d5\\x03\\x05*;\\x03\\x05\\x16\\x1b\\x03\\x04.-\\x03\\x06\\x1a\\x19\\x03\\x04\\x03,\" +\n\t\"\\x03\\x0b87\\x03\\x04/\\x0a\\x03\\x06\\x00,\\x03\\x04-\\x01\\x03\\x04\\x1e-\\x03\\x06/(\" +\n\t\"\\x03\\x0a\\x0b5\\x03\\x06\\x0e7\\x03\\x06\\x07.\\x03\\x0597\\x03\\x0a*%\\x03\\x0760\" +\n\t\"\\x03\\x06\\x0c;\\x03\\x05'\\x00\\x03\\x072.\\x03\\x072\\x08\\x03\\x06=\\x01\\x03\\x06\" +\n\t\"\\x05\\x1b\\x03\\x06\\x06\\x12\\x03\\x06$=\\x03\\x06'\\x0d\\x03\\x04\\x11\\x0f\\x03\\x076\" +\n\t\",\\x03\\x06\\x07;\\x03\\x06.,\\x03\\x86\\xf9\\xea\\x03\\x8f\\xff\\xeb\\x02\\x092\\x02\" +\n\t\"\\x095\\x02\\x094\\x02\\x09;\\x02\\x09>\\x02\\x098\\x02\\x09*\\x02\\x09/\\x02\\x09,\\x02\" +\n\t\"\\x09%\\x02\\x09&\\x02\\x09#\\x02\\x09 \\x02\\x08!\\x02\\x08%\\x02\\x08$\\x02\\x08+\\x02\" +\n\t\"\\x08.\\x02\\x08*\\x02\\x08&\\x02\\x088\\x02\\x08>\\x02\\x084\\x02\\x086\\x02\\x080\\x02\" +\n\t\"\\x08\\x10\\x02\\x08\\x17\\x02\\x08\\x12\\x02\\x08\\x1d\\x02\\x08\\x1f\\x02\\x08\\x13\\x02\" +\n\t\"\\x08\\x15\\x02\\x08\\x14\\x02\\x08\\x0c\\x03\\x8b\\xfd\\xd0\\x03\\x81\\xec\\xc6\\x03\\x87\" +\n\t\"\\xe0\\x8a\\x03-2\\xe3\\x03\\x80\\xef\\xe4\\x03-2\\xea\\x03\\x88\\xe6\\xeb\\x03\\x8e\\xe6\" +\n\t\"\\xe8\\x03\\x84\\xe6\\xe9\\x03\\x97\\xe6\\xee\\x03-2\\xf9\\x03-2\\xf6\\x03\\x8e\\xe3\\xad\" +\n\t\"\\x03\\x80\\xe3\\x92\\x03\\x88\\xe3\\x90\\x03\\x8e\\xe3\\x90\\x03\\x80\\xe3\\x97\\x03\\x88\" +\n\t\"\\xe3\\x95\\x03\\x88\\xfe\\xcb\\x03\\x8e\\xfe\\xca\\x03\\x84\\xfe\\xcd\\x03\\x91\\xef\\xc9\" +\n\t\"\\x03-2\\xc1\\x03-2\\xc0\\x03-2\\xcb\\x03\\x88@\\x09\\x03\\x8e@\\x08\\x03\\x8f\\xe0\\xf5\" +\n\t\"\\x03\\x8e\\xe6\\xf9\\x03\\x8e\\xe0\\xfa\\x03\\x93\\xff\\xf4\\x03\\x84\\xee\\xd3\\x03\\x0b\" +\n\t\"(\\x04\\x023 \\x021;\\x02\\x01*\\x03\\x0b#\\x10\\x03\\x0b 0\\x03\\x0b!\\x10\\x03\\x0b!0\" +\n\t\"\\x03\\x07\\x15\\x08\\x03\\x09?5\\x03\\x07\\x1f\\x08\\x03\\x07\\x17\\x0b\\x03\\x09\\x1f\" +\n\t\"\\x15\\x03\\x0b\\x1c7\\x03\\x0a+#\\x03\\x06\\x1a\\x1b\\x03\\x06\\x1a\\x14\\x03\\x0a\\x01\" +\n\t\"\\x18\\x03\\x06#\\x1b\\x03\\x0a2\\x0c\\x03\\x0a\\x01\\x04\\x03\\x09#;\\x03\\x08='\\x03\" +\n\t\"\\x08\\x1a\\x0a\\x03\\x07</\\x03\\x07:+\\x03\\x07\\x07*\\x03\\x06&\\x1c\\x03\\x09\\x0c\" +\n\t\"\\x16\\x03\\x09\\x10\\x0e\\x03\\x08'\\x0f\\x03\\x08+\\x09\\x03\\x074%\\x03\\x06!3\\x03\" +\n\t\"\\x06\\x03+\\x03\\x0b\\x1e\\x19\\x03\\x0a))\\x03\\x09\\x08\\x19\\x03\\x08,\\x05\\x03\\x07\" +\n\t\"<2\\x03\\x06\\x1c>\\x03\\x0a\\x111\\x03\\x09\\x1b\\x09\\x03\\x073.\\x03\\x07\\x01\\x00\" +\n\t\"\\x03\\x09/,\\x03\\x07#>\\x03\\x07\\x048\\x03\\x0a\\x1f\\x22\\x03\\x098>\\x03\\x09\\x11\" +\n\t\"\\x00\\x03\\x08/\\x17\\x03\\x06'\\x22\\x03\\x0b\\x1a+\\x03\\x0a\\x22\\x19\\x03\\x0a/1\" +\n\t\"\\x03\\x0974\\x03\\x09\\x0f\\x22\\x03\\x08,\\x22\\x03\\x08?\\x14\\x03\\x07$5\\x03\\x07<3\" +\n\t\"\\x03\\x07=*\\x03\\x07\\x13\\x18\\x03\\x068\\x0a\\x03\\x06\\x09\\x16\\x03\\x06\\x13\\x00\" +\n\t\"\\x03\\x08\\x067\\x03\\x08\\x01\\x03\\x03\\x08\\x12\\x1d\\x03\\x07+7\\x03\\x06(;\\x03\" +\n\t\"\\x06\\x1c?\\x03\\x07\\x0e\\x17\\x03\\x0a\\x06\\x1d\\x03\\x0a\\x19\\x07\\x03\\x08\\x14$\" +\n\t\"\\x03\\x07$;\\x03\\x08,$\\x03\\x08\\x06\\x0d\\x03\\x07\\x16\\x0a\\x03\\x06>>\\x03\\x0a\" +\n\t\"\\x06\\x12\\x03\\x0a\\x14)\\x03\\x09\\x0d\\x1f\\x03\\x09\\x12\\x17\\x03\\x09\\x19\\x01\" +\n\t\"\\x03\\x08\\x11 \\x03\\x08\\x1d'\\x03\\x06<\\x1a\\x03\\x0a.\\x00\\x03\\x07'\\x18\\x03\" +\n\t\"\\x0a\\x22\\x08\\x03\\x08\\x0d\\x0a\\x03\\x08\\x13)\\x03\\x07*)\\x03\\x06<,\\x03\\x07\" +\n\t\"\\x0b\\x1a\\x03\\x09.\\x14\\x03\\x09\\x0d\\x1e\\x03\\x07\\x0e#\\x03\\x0b\\x1d'\\x03\\x0a\" +\n\t\"\\x0a8\\x03\\x09%2\\x03\\x08+&\\x03\\x080\\x12\\x03\\x0a)4\\x03\\x08\\x06\\x1f\\x03\\x0b\" +\n\t\"\\x1b\\x1a\\x03\\x0a\\x1b\\x0f\\x03\\x0b\\x1d*\\x03\\x09\\x16$\\x03\\x090\\x11\\x03\\x08\" +\n\t\"\\x11\\x08\\x03\\x0a*(\\x03\\x0a\\x042\\x03\\x089,\\x03\\x074'\\x03\\x07\\x0f\\x05\\x03\" +\n\t\"\\x09\\x0b\\x0a\\x03\\x07\\x1b\\x01\\x03\\x09\\x17:\\x03\\x09.\\x0d\\x03\\x07.\\x11\\x03\" +\n\t\"\\x09+\\x15\\x03\\x080\\x13\\x03\\x0b\\x1f\\x19\\x03\\x0a \\x11\\x03\\x0a\\x220\\x03\\x09\" +\n\t\"\\x07;\\x03\\x08\\x16\\x1c\\x03\\x07,\\x13\\x03\\x07\\x0e/\\x03\\x06\\x221\\x03\\x0a.\" +\n\t\"\\x0a\\x03\\x0a7\\x02\\x03\\x0a\\x032\\x03\\x0a\\x1d.\\x03\\x091\\x06\\x03\\x09\\x19:\" +\n\t\"\\x03\\x08\\x02/\\x03\\x060+\\x03\\x06\\x0f-\\x03\\x06\\x1c\\x1f\\x03\\x06\\x1d\\x07\\x03\" +\n\t\"\\x0a,\\x11\\x03\\x09=\\x0d\\x03\\x09\\x0b;\\x03\\x07\\x1b/\\x03\\x0a\\x1f:\\x03\\x09 \" +\n\t\"\\x1f\\x03\\x09.\\x10\\x03\\x094\\x0b\\x03\\x09\\x1a1\\x03\\x08#\\x1a\\x03\\x084\\x1d\" +\n\t\"\\x03\\x08\\x01\\x1f\\x03\\x08\\x11\\x22\\x03\\x07'8\\x03\\x07\\x1a>\\x03\\x0757\\x03\" +\n\t\"\\x06&9\\x03\\x06+\\x11\\x03\\x0a.\\x0b\\x03\\x0a,>\\x03\\x0a4#\\x03\\x08%\\x17\\x03\" +\n\t\"\\x07\\x05\\x22\\x03\\x07\\x0c\\x0b\\x03\\x0a\\x1d+\\x03\\x0a\\x19\\x16\\x03\\x09+\\x1f\" +\n\t\"\\x03\\x09\\x08\\x0b\\x03\\x08\\x16\\x18\\x03\\x08+\\x12\\x03\\x0b\\x1d\\x0c\\x03\\x0a=\" +\n\t\"\\x10\\x03\\x0a\\x09\\x0d\\x03\\x0a\\x10\\x11\\x03\\x09&0\\x03\\x08(\\x1f\\x03\\x087\\x07\" +\n\t\"\\x03\\x08\\x185\\x03\\x07'6\\x03\\x06.\\x05\\x03\\x06=\\x04\\x03\\x06;;\\x03\\x06\\x06,\" +\n\t\"\\x03\\x0b\\x18>\\x03\\x08\\x00\\x18\\x03\\x06 \\x03\\x03\\x06<\\x00\\x03\\x09%\\x18\\x03\" +\n\t\"\\x0b\\x1c<\\x03\\x0a%!\\x03\\x0a\\x09\\x12\\x03\\x0a\\x16\\x02\\x03\\x090'\\x03\\x09\" +\n\t\"\\x0e=\\x03\\x08 \\x0e\\x03\\x08>\\x03\\x03\\x074>\\x03\\x06&?\\x03\\x06\\x19\\x09\\x03\" +\n\t\"\\x06?(\\x03\\x0a-\\x0e\\x03\\x09:3\\x03\\x098:\\x03\\x09\\x12\\x0b\\x03\\x09\\x1d\\x17\" +\n\t\"\\x03\\x087\\x05\\x03\\x082\\x14\\x03\\x08\\x06%\\x03\\x08\\x13\\x1f\\x03\\x06\\x06\\x0e\" +\n\t\"\\x03\\x0a\\x22<\\x03\\x09/<\\x03\\x06>+\\x03\\x0a'?\\x03\\x0a\\x13\\x0c\\x03\\x09\\x10<\" +\n\t\"\\x03\\x07\\x1b=\\x03\\x0a\\x19\\x13\\x03\\x09\\x22\\x1d\\x03\\x09\\x07\\x0d\\x03\\x08)\" +\n\t\"\\x1c\\x03\\x06=\\x1a\\x03\\x0a/4\\x03\\x0a7\\x11\\x03\\x0a\\x16:\\x03\\x09?3\\x03\\x09:\" +\n\t\"/\\x03\\x09\\x05\\x0a\\x03\\x09\\x14\\x06\\x03\\x087\\x22\\x03\\x080\\x07\\x03\\x08\\x1a\" +\n\t\"\\x1f\\x03\\x07\\x04(\\x03\\x07\\x04\\x09\\x03\\x06 %\\x03\\x06<\\x08\\x03\\x0a+\\x14\" +\n\t\"\\x03\\x09\\x1d\\x16\\x03\\x0a70\\x03\\x08 >\\x03\\x0857\\x03\\x070\\x0a\\x03\\x06=\\x12\" +\n\t\"\\x03\\x06\\x16%\\x03\\x06\\x1d,\\x03\\x099#\\x03\\x09\\x10>\\x03\\x07 \\x1e\\x03\\x08\" +\n\t\"\\x0c<\\x03\\x08\\x0b\\x18\\x03\\x08\\x15+\\x03\\x08,:\\x03\\x08%\\x22\\x03\\x07\\x0a$\" +\n\t\"\\x03\\x0b\\x1c=\\x03\\x07+\\x08\\x03\\x0a/\\x05\\x03\\x0a \\x07\\x03\\x0a\\x12'\\x03\" +\n\t\"\\x09#\\x11\\x03\\x08\\x1b\\x15\\x03\\x0a\\x06\\x01\\x03\\x09\\x1c\\x1b\\x03\\x0922\\x03\" +\n\t\"\\x07\\x14<\\x03\\x07\\x09\\x04\\x03\\x061\\x04\\x03\\x07\\x0e\\x01\\x03\\x0a\\x13\\x18\" +\n\t\"\\x03\\x0a-\\x0c\\x03\\x0a?\\x0d\\x03\\x0a\\x09\\x0a\\x03\\x091&\\x03\\x0a/\\x0b\\x03\" +\n\t\"\\x08$<\\x03\\x083\\x1d\\x03\\x08\\x0c$\\x03\\x08\\x0d\\x07\\x03\\x08\\x0d?\\x03\\x08\" +\n\t\"\\x0e\\x14\\x03\\x065\\x0a\\x03\\x08\\x1a#\\x03\\x08\\x16#\\x03\\x0702\\x03\\x07\\x03\" +\n\t\"\\x1a\\x03\\x06(\\x1d\\x03\\x06+\\x1b\\x03\\x06\\x0b\\x05\\x03\\x06\\x0b\\x17\\x03\\x06\" +\n\t\"\\x0c\\x04\\x03\\x06\\x1e\\x19\\x03\\x06+0\\x03\\x062\\x18\\x03\\x0b\\x16\\x1e\\x03\\x0a+\" +\n\t\"\\x16\\x03\\x0a-?\\x03\\x0a#:\\x03\\x0a#\\x10\\x03\\x0a%$\\x03\\x0a>+\\x03\\x0a01\\x03\" +\n\t\"\\x0a1\\x10\\x03\\x0a\\x099\\x03\\x0a\\x0a\\x12\\x03\\x0a\\x19\\x1f\\x03\\x0a\\x19\\x12\" +\n\t\"\\x03\\x09*)\\x03\\x09-\\x16\\x03\\x09.1\\x03\\x09.2\\x03\\x09<\\x0e\\x03\\x09> \\x03\" +\n\t\"\\x093\\x12\\x03\\x09\\x0b\\x01\\x03\\x09\\x1c2\\x03\\x09\\x11\\x1c\\x03\\x09\\x15%\\x03\" +\n\t\"\\x08,&\\x03\\x08!\\x22\\x03\\x089(\\x03\\x08\\x0b\\x1a\\x03\\x08\\x0d2\\x03\\x08\\x0c\" +\n\t\"\\x04\\x03\\x08\\x0c\\x06\\x03\\x08\\x0c\\x1f\\x03\\x08\\x0c\\x0c\\x03\\x08\\x0f\\x1f\\x03\" +\n\t\"\\x08\\x0f\\x1d\\x03\\x08\\x00\\x14\\x03\\x08\\x03\\x14\\x03\\x08\\x06\\x16\\x03\\x08\\x1e\" +\n\t\"#\\x03\\x08\\x11\\x11\\x03\\x08\\x10\\x18\\x03\\x08\\x14(\\x03\\x07)\\x1e\\x03\\x07.1\" +\n\t\"\\x03\\x07 $\\x03\\x07 '\\x03\\x078\\x08\\x03\\x07\\x0d0\\x03\\x07\\x0f7\\x03\\x07\\x05#\" +\n\t\"\\x03\\x07\\x05\\x1a\\x03\\x07\\x1a7\\x03\\x07\\x1d-\\x03\\x07\\x17\\x10\\x03\\x06)\\x1f\" +\n\t\"\\x03\\x062\\x0b\\x03\\x066\\x16\\x03\\x06\\x09\\x11\\x03\\x09(\\x1e\\x03\\x07!5\\x03\" +\n\t\"\\x0b\\x11\\x16\\x03\\x0a/\\x04\\x03\\x0a,\\x1a\\x03\\x0b\\x173\\x03\\x0a,1\\x03\\x0a/5\" +\n\t\"\\x03\\x0a\\x221\\x03\\x0a\\x22\\x0d\\x03\\x0a?%\\x03\\x0a<,\\x03\\x0a?#\\x03\\x0a>\\x19\" +\n\t\"\\x03\\x0a\\x08&\\x03\\x0a\\x0b\\x0e\\x03\\x0a\\x0c:\\x03\\x0a\\x0c+\\x03\\x0a\\x03\\x22\" +\n\t\"\\x03\\x0a\\x06)\\x03\\x0a\\x11\\x10\\x03\\x0a\\x11\\x1a\\x03\\x0a\\x17-\\x03\\x0a\\x14(\" +\n\t\"\\x03\\x09)\\x1e\\x03\\x09/\\x09\\x03\\x09.\\x00\\x03\\x09,\\x07\\x03\\x09/*\\x03\\x09-9\" +\n\t\"\\x03\\x09\\x228\\x03\\x09%\\x09\\x03\\x09:\\x12\\x03\\x09;\\x1d\\x03\\x09?\\x06\\x03\" +\n\t\"\\x093%\\x03\\x096\\x05\\x03\\x096\\x08\\x03\\x097\\x02\\x03\\x09\\x07,\\x03\\x09\\x04,\" +\n\t\"\\x03\\x09\\x1f\\x16\\x03\\x09\\x11\\x03\\x03\\x09\\x11\\x12\\x03\\x09\\x168\\x03\\x08*\" +\n\t\"\\x05\\x03\\x08/2\\x03\\x084:\\x03\\x08\\x22+\\x03\\x08 0\\x03\\x08&\\x0a\\x03\\x08;\" +\n\t\"\\x10\\x03\\x08>$\\x03\\x08>\\x18\\x03\\x0829\\x03\\x082:\\x03\\x081,\\x03\\x081<\\x03\" +\n\t\"\\x081\\x1c\\x03\\x087#\\x03\\x087*\\x03\\x08\\x09'\\x03\\x08\\x00\\x1d\\x03\\x08\\x05-\" +\n\t\"\\x03\\x08\\x1f4\\x03\\x08\\x1d\\x04\\x03\\x08\\x16\\x0f\\x03\\x07*7\\x03\\x07'!\\x03\" +\n\t\"\\x07%\\x1b\\x03\\x077\\x0c\\x03\\x07\\x0c1\\x03\\x07\\x0c.\\x03\\x07\\x00\\x06\\x03\\x07\" +\n\t\"\\x01\\x02\\x03\\x07\\x010\\x03\\x07\\x06=\\x03\\x07\\x01\\x03\\x03\\x07\\x01\\x13\\x03\" +\n\t\"\\x07\\x06\\x06\\x03\\x07\\x05\\x0a\\x03\\x07\\x1f\\x09\\x03\\x07\\x17:\\x03\\x06*1\\x03\" +\n\t\"\\x06-\\x1d\\x03\\x06\\x223\\x03\\x062:\\x03\\x060$\\x03\\x066\\x1e\\x03\\x064\\x12\\x03\" +\n\t\"\\x0645\\x03\\x06\\x0b\\x00\\x03\\x06\\x0b7\\x03\\x06\\x07\\x1f\\x03\\x06\\x15\\x12\\x03\" +\n\t\"\\x0c\\x05\\x0f\\x03\\x0b+\\x0b\\x03\\x0b+-\\x03\\x06\\x16\\x1b\\x03\\x06\\x15\\x17\\x03\" +\n\t\"\\x89\\xca\\xea\\x03\\x89\\xca\\xe8\\x03\\x0c8\\x10\\x03\\x0c8\\x01\\x03\\x0c8\\x0f\\x03\" +\n\t\"\\x0d8%\\x03\\x0d8!\\x03\\x0c8-\\x03\\x0c8/\\x03\\x0c8+\\x03\\x0c87\\x03\\x0c85\\x03\" +\n\t\"\\x0c9\\x09\\x03\\x0c9\\x0d\\x03\\x0c9\\x0f\\x03\\x0c9\\x0b\\x03\\xcfu\\x0c\\x03\\xcfu\" +\n\t\"\\x0f\\x03\\xcfu\\x0e\\x03\\xcfu\\x09\\x03\\x0c9\\x10\\x03\\x0d9\\x0c\\x03\\xcf`;\\x03\" +\n\t\"\\xcf`>\\x03\\xcf`9\\x03\\xcf`8\\x03\\xcf`7\\x03\\xcf`*\\x03\\xcf`-\\x03\\xcf`,\\x03\" +\n\t\"\\x0d\\x1b\\x1a\\x03\\x0d\\x1b&\\x03\\x0c=.\\x03\\x0c=%\\x03\\x0c>\\x1e\\x03\\x0c>\\x14\" +\n\t\"\\x03\\x0c?\\x06\\x03\\x0c?\\x0b\\x03\\x0c?\\x0c\\x03\\x0c?\\x0d\\x03\\x0c?\\x02\\x03\" +\n\t\"\\x0c>\\x0f\\x03\\x0c>\\x08\\x03\\x0c>\\x09\\x03\\x0c>,\\x03\\x0c>\\x0c\\x03\\x0c?\\x13\" +\n\t\"\\x03\\x0c?\\x16\\x03\\x0c?\\x15\\x03\\x0c?\\x1c\\x03\\x0c?\\x1f\\x03\\x0c?\\x1d\\x03\" +\n\t\"\\x0c?\\x1a\\x03\\x0c?\\x17\\x03\\x0c?\\x08\\x03\\x0c?\\x09\\x03\\x0c?\\x0e\\x03\\x0c?\" +\n\t\"\\x04\\x03\\x0c?\\x05\\x03\\x0c<?\\x03\\x0c=\\x00\\x03\\x0c=\\x06\\x03\\x0c=\\x05\\x03\" +\n\t\"\\x0c=\\x0c\\x03\\x0c=\\x0f\\x03\\x0c=\\x0d\\x03\\x0c=\\x0b\\x03\\x0c=\\x07\\x03\\x0c=\" +\n\t\"\\x19\\x03\\x0c=\\x15\\x03\\x0c=\\x11\\x03\\x0c=1\\x03\\x0c=3\\x03\\x0c=0\\x03\\x0c=>\" +\n\t\"\\x03\\x0c=2\\x03\\x0c=6\\x03\\x0c<\\x07\\x03\\x0c<\\x05\\x03\\x0e:!\\x03\\x0e:#\\x03\" +\n\t\"\\x0e8\\x09\\x03\\x0e:&\\x03\\x0e8\\x0b\\x03\\x0e:$\\x03\\x0e:,\\x03\\x0e8\\x1a\\x03\" +\n\t\"\\x0e8\\x1e\\x03\\x0e:*\\x03\\x0e:7\\x03\\x0e:5\\x03\\x0e:;\\x03\\x0e:\\x15\\x03\\x0e:<\" +\n\t\"\\x03\\x0e:4\\x03\\x0e:'\\x03\\x0e:-\\x03\\x0e:%\\x03\\x0e:?\\x03\\x0e:=\\x03\\x0e:)\" +\n\t\"\\x03\\x0e:/\\x03\\xcfs'\\x03\\x0d=\\x0f\\x03\\x0d+*\\x03\\x0d99\\x03\\x0d9;\\x03\\x0d9\" +\n\t\"?\\x03\\x0d)\\x0d\\x03\\x0d(%\\x02\\x01\\x18\\x02\\x01(\\x02\\x01\\x1e\\x03\\x0f$!\\x03\" +\n\t\"\\x0f87\\x03\\x0f4\\x0e\\x03\\x0f5\\x1d\\x03\\x06'\\x03\\x03\\x0f\\x08\\x18\\x03\\x0f\" +\n\t\"\\x0d\\x1b\\x03\\x0e2=\\x03\\x0e;\\x08\\x03\\x0e:\\x0b\\x03\\x0e\\x06$\\x03\\x0e\\x0d)\" +\n\t\"\\x03\\x0e\\x16\\x1f\\x03\\x0e\\x16\\x1b\\x03\\x0d$\\x0a\\x03\\x05,\\x1d\\x03\\x0d. \\x03\" +\n\t\"\\x0d.#\\x03\\x0c(/\\x03\\x09%\\x02\\x03\\x0d90\\x03\\x0d\\x0e4\\x03\\x0d\\x0d\\x0f\\x03\" +\n\t\"\\x0c#\\x00\\x03\\x0c,\\x1e\\x03\\x0c2\\x0e\\x03\\x0c\\x01\\x17\\x03\\x0c\\x09:\\x03\\x0e\" +\n\t\"\\x173\\x03\\x0c\\x08\\x03\\x03\\x0c\\x11\\x07\\x03\\x0c\\x10\\x18\\x03\\x0c\\x1f\\x1c\" +\n\t\"\\x03\\x0c\\x19\\x0e\\x03\\x0c\\x1a\\x1f\\x03\\x0f0>\\x03\\x0b->\\x03\\x0b<+\\x03\\x0b8\" +\n\t\"\\x13\\x03\\x0b\\x043\\x03\\x0b\\x14\\x03\\x03\\x0b\\x16%\\x03\\x0d\\x22&\\x03\\x0b\\x1a\" +\n\t\"\\x1a\\x03\\x0b\\x1a\\x04\\x03\\x0a%9\\x03\\x0a&2\\x03\\x0a&0\\x03\\x0a!\\x1a\\x03\\x0a!\" +\n\t\"7\\x03\\x0a5\\x10\\x03\\x0a=4\\x03\\x0a?\\x0e\\x03\\x0a>\\x10\\x03\\x0a\\x00 \\x03\\x0a\" +\n\t\"\\x0f:\\x03\\x0a\\x0f9\\x03\\x0a\\x0b\\x0a\\x03\\x0a\\x17%\\x03\\x0a\\x1b-\\x03\\x09-\" +\n\t\"\\x1a\\x03\\x09,4\\x03\\x09.,\\x03\\x09)\\x09\\x03\\x096!\\x03\\x091\\x1f\\x03\\x093\" +\n\t\"\\x16\\x03\\x0c+\\x1f\\x03\\x098 \\x03\\x098=\\x03\\x0c(\\x1a\\x03\\x0c(\\x16\\x03\\x09\" +\n\t\"\\x0a+\\x03\\x09\\x16\\x12\\x03\\x09\\x13\\x0e\\x03\\x09\\x153\\x03\\x08)!\\x03\\x09\\x1a\" +\n\t\"\\x01\\x03\\x09\\x18\\x01\\x03\\x08%#\\x03\\x08>\\x22\\x03\\x08\\x05%\\x03\\x08\\x02*\" +\n\t\"\\x03\\x08\\x15;\\x03\\x08\\x1b7\\x03\\x0f\\x07\\x1d\\x03\\x0f\\x04\\x03\\x03\\x070\\x0c\" +\n\t\"\\x03\\x07;\\x0b\\x03\\x07\\x08\\x17\\x03\\x07\\x12\\x06\\x03\\x06/-\\x03\\x0671\\x03\" +\n\t\"\\x065+\\x03\\x06>7\\x03\\x06\\x049\\x03\\x05+\\x1e\\x03\\x05,\\x17\\x03\\x05 \\x1d\\x03\" +\n\t\"\\x05\\x22\\x05\\x03\\x050\\x1d\"\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// idnaTrie. Total size: 29052 bytes (28.37 KiB). Checksum: ef06e7ecc26f36dd.\ntype idnaTrie struct{}\n\nfunc newIdnaTrie(i int) *idnaTrie {\n\treturn &idnaTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 125:\n\t\treturn uint16(idnaValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 125\n\t\treturn uint16(idnaSparse.lookup(n, b))\n\t}\n}\n\n// idnaValues: 127 blocks, 8128 entries, 16256 bytes\n// The third block is the zero block.\nvar idnaValues = [8128]uint16{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,\n\t0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,\n\t0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,\n\t0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,\n\t0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,\n\t0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,\n\t0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,\n\t0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,\n\t0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,\n\t0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,\n\t0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,\n\t0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,\n\t0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,\n\t0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,\n\t0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,\n\t0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,\n\t0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,\n\t0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,\n\t0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,\n\t0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,\n\t0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,\n\t0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,\n\t0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,\n\t0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,\n\t0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,\n\t0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,\n\t0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018,\n\t0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a,\n\t0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005,\n\t0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018,\n\t0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018,\n\t// Block 0x4, offset 0x100\n\t0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,\n\t0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,\n\t0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,\n\t0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,\n\t0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,\n\t0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,\n\t0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,\n\t0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,\n\t0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,\n\t0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,\n\t0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,\n\t0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008,\n\t0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,\n\t0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,\n\t0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,\n\t0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,\n\t0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,\n\t0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,\n\t0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,\n\t0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,\n\t0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,\n\t0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,\n\t0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,\n\t0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,\n\t0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,\n\t0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,\n\t0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,\n\t0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,\n\t0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,\n\t0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,\n\t0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9,\n\t0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,\n\t0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,\n\t0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,\n\t0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,\n\t0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,\n\t0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,\n\t0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,\n\t0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,\n\t0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,\n\t0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,\n\t0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,\n\t0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,\n\t0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,\n\t0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,\n\t0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,\n\t0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,\n\t0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,\n\t0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,\n\t0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d,\n\t0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,\n\t0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,\n\t0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,\n\t0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,\n\t0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a,\n\t0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369,\n\t0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,\n\t0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,\n\t0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,\n\t0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,\n\t0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d,\n\t0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,\n\t0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,\n\t0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,\n\t0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,\n\t0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,\n\t0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,\n\t0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,\n\t0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,\n\t0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008,\n\t0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2,\n\t0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,\n\t0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,\n\t0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,\n\t0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,\n\t0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,\n\t0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,\n\t0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,\n\t0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,\n\t0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,\n\t0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,\n\t0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,\n\t0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,\n\t0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,\n\t0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,\n\t0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,\n\t0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,\n\t0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,\n\t0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,\n\t0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,\n\t0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,\n\t0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,\n\t0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,\n\t0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,\n\t0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,\n\t0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,\n\t0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,\n\t0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,\n\t0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,\n\t0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,\n\t0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,\n\t0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,\n\t0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,\n\t0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,\n\t0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,\n\t0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,\n\t0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,\n\t0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,\n\t0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,\n\t0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,\n\t0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,\n\t0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,\n\t0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,\n\t0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,\n\t0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,\n\t0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,\n\t0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,\n\t0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,\n\t0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,\n\t0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,\n\t0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,\n\t0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,\n\t0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,\n\t0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,\n\t0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,\n\t0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,\n\t0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,\n\t0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,\n\t0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,\n\t0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,\n\t0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,\n\t0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,\n\t0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,\n\t0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,\n\t0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040,\n\t0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,\n\t0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,\n\t0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,\n\t0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,\n\t0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,\n\t0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,\n\t0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,\n\t0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,\n\t0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,\n\t0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,\n\t0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,\n\t0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,\n\t0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,\n\t0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429,\n\t0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,\n\t0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,\n\t0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,\n\t0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,\n\t0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,\n\t0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,\n\t0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,\n\t0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,\n\t0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,\n\t0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,\n\t0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,\n\t0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,\n\t0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,\n\t0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,\n\t0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,\n\t0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,\n\t0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,\n\t0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,\n\t0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,\n\t0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,\n\t0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,\n\t0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08,\n\t0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08,\n\t0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08,\n\t0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0808, 0x557: 0x0808,\n\t0x558: 0x0808, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040,\n\t0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08,\n\t0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08,\n\t0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040,\n\t0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040,\n\t0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040,\n\t0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308,\n\t0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008,\n\t0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308,\n\t0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308,\n\t0x598: 0x04c9, 0x599: 0x0501, 0x59a: 0x0539, 0x59b: 0x0571, 0x59c: 0x05a9, 0x59d: 0x05e1,\n\t0x59e: 0x0619, 0x59f: 0x0651, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308,\n\t0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008,\n\t0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008,\n\t0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008,\n\t0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008,\n\t0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008,\n\t0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008,\n\t0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040,\n\t0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008,\n\t0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008,\n\t0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008,\n\t0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040,\n\t0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,\n\t0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040,\n\t0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040,\n\t0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040,\n\t0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008,\n\t0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040,\n\t0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008,\n\t0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0689, 0x61d: 0x06c1,\n\t0x61e: 0x0040, 0x61f: 0x06f9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308,\n\t0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008,\n\t0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,\n\t0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018,\n\t0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018,\n\t0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x0040, 0x63f: 0x0040,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008,\n\t0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040,\n\t0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040,\n\t0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008,\n\t0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008,\n\t0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008,\n\t0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040,\n\t0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,\n\t0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0731, 0x674: 0x0040, 0x675: 0x0008,\n\t0x676: 0x0769, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040,\n\t0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040,\n\t0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308,\n\t0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308,\n\t0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040,\n\t0x698: 0x0040, 0x699: 0x07a1, 0x69a: 0x07d9, 0x69b: 0x0811, 0x69c: 0x0008, 0x69d: 0x0040,\n\t0x69e: 0x0849, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040,\n\t0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008,\n\t0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,\n\t0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308,\n\t0x6b6: 0x0040, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040,\n\t0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008,\n\t0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008,\n\t0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008,\n\t0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008,\n\t0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008,\n\t0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008,\n\t0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040,\n\t0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,\n\t0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008,\n\t0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040,\n\t0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308,\n\t0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008,\n\t0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040,\n\t0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040,\n\t0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040,\n\t0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308,\n\t0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008,\n\t0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,\n\t0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040,\n\t0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308,\n\t0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008,\n\t0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008,\n\t0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040,\n\t0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008,\n\t0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008,\n\t0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008,\n\t0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040,\n\t0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,\n\t0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008,\n\t0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040,\n\t0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040,\n\t0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008,\n\t0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040,\n\t0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x0040, 0x796: 0x3308, 0x797: 0x3008,\n\t0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9,\n\t0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308,\n\t0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008,\n\t0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008,\n\t0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018,\n\t0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040,\n\t0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008,\n\t0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040,\n\t0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040,\n\t0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040,\n\t0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040,\n\t0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008,\n\t0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008,\n\t0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008,\n\t0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008,\n\t0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040,\n\t0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040,\n\t0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308,\n\t0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040,\n\t0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040,\n\t0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040,\n\t0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308,\n\t0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008,\n\t0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008,\n\t0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040,\n\t0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018,\n\t0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0040, 0x845: 0x0008,\n\t0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008,\n\t0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040,\n\t0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008,\n\t0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008,\n\t0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008,\n\t0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040,\n\t0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,\n\t0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008,\n\t0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040,\n\t0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040,\n\t0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008,\n\t0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040,\n\t0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040,\n\t0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040,\n\t0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308,\n\t0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008,\n\t0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,\n\t0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040,\n\t0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040,\n\t0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040,\n\t0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008,\n\t0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040,\n\t0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008,\n\t0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018,\n\t0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308,\n\t0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008,\n\t0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,\n\t0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018,\n\t0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008,\n\t0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040,\n\t0x906: 0x0040, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0040, 0x90a: 0x0008, 0x90b: 0x0040,\n\t0x90c: 0x0040, 0x90d: 0x0008, 0x90e: 0x0040, 0x90f: 0x0040, 0x910: 0x0040, 0x911: 0x0040,\n\t0x912: 0x0040, 0x913: 0x0040, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008,\n\t0x918: 0x0040, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008,\n\t0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0040, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008,\n\t0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0040, 0x929: 0x0040,\n\t0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0040, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008,\n\t0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308,\n\t0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x0040, 0x93b: 0x3308,\n\t0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x09d1, 0x944: 0x0008, 0x945: 0x0008,\n\t0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008,\n\t0x94c: 0x0008, 0x94d: 0x0a09, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008,\n\t0x952: 0x0a41, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0a79,\n\t0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0ab1, 0x95d: 0x0008,\n\t0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008,\n\t0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0ae9,\n\t0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040,\n\t0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0b21, 0x974: 0x3308, 0x975: 0x0b59,\n\t0x976: 0x0b91, 0x977: 0x0bc9, 0x978: 0x0c19, 0x979: 0x0c51, 0x97a: 0x3308, 0x97b: 0x3308,\n\t0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x3308, 0x981: 0x0ca1, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018,\n\t0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,\n\t0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308,\n\t0x992: 0x3308, 0x993: 0x0cd9, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308,\n\t0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0d11,\n\t0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0d49, 0x9a3: 0x3308,\n\t0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0d81, 0x9a8: 0x3308, 0x9a9: 0x3308,\n\t0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0db9, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308,\n\t0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308,\n\t0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x0df1, 0x9ba: 0x3308, 0x9bb: 0x3308,\n\t0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008,\n\t0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008,\n\t0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008,\n\t0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008,\n\t0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008,\n\t0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008,\n\t0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008,\n\t0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0039, 0x9ed: 0x0ed1, 0x9ee: 0x0ee9, 0x9ef: 0x0008,\n\t0x9f0: 0x0ef9, 0x9f1: 0x0f09, 0x9f2: 0x0f19, 0x9f3: 0x0f31, 0x9f4: 0x0249, 0x9f5: 0x0f41,\n\t0x9f6: 0x0259, 0x9f7: 0x0f51, 0x9f8: 0x0359, 0x9f9: 0x0f61, 0x9fa: 0x0f71, 0x9fb: 0x0008,\n\t0x9fc: 0x00d9, 0x9fd: 0x0f81, 0x9fe: 0x0f99, 0x9ff: 0x0269,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1,\n\t0xa06: 0x059d, 0xa07: 0x0ee9, 0xa08: 0x0ef9, 0xa09: 0x0f09, 0xa0a: 0x0ff9, 0xa0b: 0x1011,\n\t0xa0c: 0x1029, 0xa0d: 0x0f31, 0xa0e: 0x0008, 0xa0f: 0x0f51, 0xa10: 0x0f61, 0xa11: 0x1041,\n\t0xa12: 0x00d9, 0xa13: 0x1059, 0xa14: 0x05b5, 0xa15: 0x05b5, 0xa16: 0x0f99, 0xa17: 0x0fa9,\n\t0xa18: 0x0fb9, 0xa19: 0x059d, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05cd, 0xa1d: 0x1099,\n\t0xa1e: 0x10b1, 0xa1f: 0x10c9, 0xa20: 0x10e1, 0xa21: 0x10f9, 0xa22: 0x0f41, 0xa23: 0x0269,\n\t0xa24: 0x0fb9, 0xa25: 0x1089, 0xa26: 0x1099, 0xa27: 0x10b1, 0xa28: 0x1111, 0xa29: 0x10e1,\n\t0xa2a: 0x10f9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008,\n\t0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008,\n\t0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x1129, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008,\n\t0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008,\n\t0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008,\n\t0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008,\n\t0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008,\n\t0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x1141, 0xa5c: 0x1159, 0xa5d: 0x1169,\n\t0xa5e: 0x1181, 0xa5f: 0x1029, 0xa60: 0x1199, 0xa61: 0x11a9, 0xa62: 0x11c1, 0xa63: 0x11d9,\n\t0xa64: 0x11f1, 0xa65: 0x1209, 0xa66: 0x1221, 0xa67: 0x05e5, 0xa68: 0x1239, 0xa69: 0x1251,\n\t0xa6a: 0xe17d, 0xa6b: 0x1269, 0xa6c: 0x1281, 0xa6d: 0x1299, 0xa6e: 0x12b1, 0xa6f: 0x12c9,\n\t0xa70: 0x12e1, 0xa71: 0x12f9, 0xa72: 0x1311, 0xa73: 0x1329, 0xa74: 0x1341, 0xa75: 0x1359,\n\t0xa76: 0x1371, 0xa77: 0x1389, 0xa78: 0x05fd, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1,\n\t0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008,\n\t0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008,\n\t0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008,\n\t0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008,\n\t0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008,\n\t0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008,\n\t0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008,\n\t0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008,\n\t0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008,\n\t0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008,\n\t0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008,\n\t0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008,\n\t0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008,\n\t0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008,\n\t0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x0615, 0xadb: 0x0635, 0xadc: 0x0008, 0xadd: 0x0008,\n\t0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008,\n\t0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008,\n\t0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008,\n\t0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008,\n\t0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008,\n\t0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008,\n\t0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045,\n\t0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008,\n\t0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008,\n\t0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045,\n\t0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008,\n\t0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045,\n\t0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045,\n\t0xb30: 0x0008, 0xb31: 0x1459, 0xb32: 0x0008, 0xb33: 0x1471, 0xb34: 0x0008, 0xb35: 0x1489,\n\t0xb36: 0x0008, 0xb37: 0x14a1, 0xb38: 0x0008, 0xb39: 0x14b9, 0xb3a: 0x0008, 0xb3b: 0x14d1,\n\t0xb3c: 0x0008, 0xb3d: 0x14e9, 0xb3e: 0x0040, 0xb3f: 0x0040,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x1501, 0xb41: 0x1531, 0xb42: 0x1561, 0xb43: 0x1591, 0xb44: 0x15c1, 0xb45: 0x15f1,\n\t0xb46: 0x1621, 0xb47: 0x1651, 0xb48: 0x1501, 0xb49: 0x1531, 0xb4a: 0x1561, 0xb4b: 0x1591,\n\t0xb4c: 0x15c1, 0xb4d: 0x15f1, 0xb4e: 0x1621, 0xb4f: 0x1651, 0xb50: 0x1681, 0xb51: 0x16b1,\n\t0xb52: 0x16e1, 0xb53: 0x1711, 0xb54: 0x1741, 0xb55: 0x1771, 0xb56: 0x17a1, 0xb57: 0x17d1,\n\t0xb58: 0x1681, 0xb59: 0x16b1, 0xb5a: 0x16e1, 0xb5b: 0x1711, 0xb5c: 0x1741, 0xb5d: 0x1771,\n\t0xb5e: 0x17a1, 0xb5f: 0x17d1, 0xb60: 0x1801, 0xb61: 0x1831, 0xb62: 0x1861, 0xb63: 0x1891,\n\t0xb64: 0x18c1, 0xb65: 0x18f1, 0xb66: 0x1921, 0xb67: 0x1951, 0xb68: 0x1801, 0xb69: 0x1831,\n\t0xb6a: 0x1861, 0xb6b: 0x1891, 0xb6c: 0x18c1, 0xb6d: 0x18f1, 0xb6e: 0x1921, 0xb6f: 0x1951,\n\t0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x1981, 0xb73: 0x19b1, 0xb74: 0x19d9, 0xb75: 0x0040,\n\t0xb76: 0x0008, 0xb77: 0x1a01, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x064d, 0xb7b: 0x1459,\n\t0xb7c: 0x19b1, 0xb7d: 0x0666, 0xb7e: 0x1a31, 0xb7f: 0x0686,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x06a6, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040,\n\t0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06c5, 0xb89: 0x1471, 0xb8a: 0x06dd, 0xb8b: 0x1489,\n\t0xb8c: 0x1aa9, 0xb8d: 0x1b2a, 0xb8e: 0x1b5a, 0xb8f: 0x1b8a, 0xb90: 0x0008, 0xb91: 0x0008,\n\t0xb92: 0x0008, 0xb93: 0x1bb9, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008,\n\t0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x06f5, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2,\n\t0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61,\n\t0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045,\n\t0xbaa: 0x070d, 0xbab: 0x14d1, 0xbac: 0xe04d, 0xbad: 0x1c7a, 0xbae: 0x03d2, 0xbaf: 0x1caa,\n\t0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x1cb9, 0xbb3: 0x1ce9, 0xbb4: 0x1d11, 0xbb5: 0x0040,\n\t0xbb6: 0x0008, 0xbb7: 0x1d39, 0xbb8: 0x0725, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9,\n\t0xbbc: 0x1ce9, 0xbbd: 0x073e, 0xbbe: 0x075e, 0xbbf: 0x0040,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a,\n\t0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0,\n\t0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d,\n\t0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x077e,\n\t0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018,\n\t0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018,\n\t0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040,\n\t0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a,\n\t0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x1d69, 0xbf4: 0x1da1, 0xbf5: 0x0018,\n\t0xbf6: 0x1df1, 0xbf7: 0x1e29, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018,\n\t0xbfc: 0x1e7a, 0xbfd: 0x0018, 0xbfe: 0x079e, 0xbff: 0x0018,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018,\n\t0xc06: 0x0018, 0xc07: 0x1e92, 0xc08: 0x1eaa, 0xc09: 0x1ec2, 0xc0a: 0x0018, 0xc0b: 0x0018,\n\t0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018,\n\t0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x1ed9,\n\t0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018,\n\t0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340,\n\t0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040,\n\t0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340,\n\t0xc30: 0x1f41, 0xc31: 0x0f41, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x1f51, 0xc35: 0x1f61,\n\t0xc36: 0x1f71, 0xc37: 0x1f81, 0xc38: 0x1f91, 0xc39: 0x1fa1, 0xc3a: 0x1fb2, 0xc3b: 0x07bd,\n\t0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1f41, 0xc41: 0x00c9, 0xc42: 0x0069, 0xc43: 0x0079, 0xc44: 0x1f51, 0xc45: 0x1f61,\n\t0xc46: 0x1f71, 0xc47: 0x1f81, 0xc48: 0x1f91, 0xc49: 0x1fa1, 0xc4a: 0x1fb2, 0xc4b: 0x07d5,\n\t0xc4c: 0x1fc2, 0xc4d: 0x1fd2, 0xc4e: 0x1fe2, 0xc4f: 0x0040, 0xc50: 0x0039, 0xc51: 0x0f09,\n\t0xc52: 0x00d9, 0xc53: 0x0369, 0xc54: 0x0ff9, 0xc55: 0x0249, 0xc56: 0x0f51, 0xc57: 0x0359,\n\t0xc58: 0x0f61, 0xc59: 0x0f71, 0xc5a: 0x0f99, 0xc5b: 0x01d9, 0xc5c: 0x0fa9, 0xc5d: 0x0040,\n\t0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018,\n\t0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x1ff1, 0xc69: 0x0018,\n\t0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018,\n\t0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018,\n\t0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018,\n\t0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x07ee, 0xc81: 0x080e, 0xc82: 0x1159, 0xc83: 0x082d, 0xc84: 0x0018, 0xc85: 0x084e,\n\t0xc86: 0x086e, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x088d, 0xc8a: 0x0f31, 0xc8b: 0x0249,\n\t0xc8c: 0x0249, 0xc8d: 0x0249, 0xc8e: 0x0249, 0xc8f: 0x2009, 0xc90: 0x0f41, 0xc91: 0x0f41,\n\t0xc92: 0x0359, 0xc93: 0x0359, 0xc94: 0x0018, 0xc95: 0x0f71, 0xc96: 0x2021, 0xc97: 0x0018,\n\t0xc98: 0x0018, 0xc99: 0x0f99, 0xc9a: 0x2039, 0xc9b: 0x0269, 0xc9c: 0x0269, 0xc9d: 0x0269,\n\t0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x2049, 0xca1: 0x08ad, 0xca2: 0x2061, 0xca3: 0x0018,\n\t0xca4: 0x13d1, 0xca5: 0x0018, 0xca6: 0x2079, 0xca7: 0x0018, 0xca8: 0x13d1, 0xca9: 0x0018,\n\t0xcaa: 0x0f51, 0xcab: 0x2091, 0xcac: 0x0ee9, 0xcad: 0x1159, 0xcae: 0x0018, 0xcaf: 0x0f09,\n\t0xcb0: 0x0f09, 0xcb1: 0x1199, 0xcb2: 0x0040, 0xcb3: 0x0f61, 0xcb4: 0x00d9, 0xcb5: 0x20a9,\n\t0xcb6: 0x20c1, 0xcb7: 0x20d9, 0xcb8: 0x20f1, 0xcb9: 0x0f41, 0xcba: 0x0018, 0xcbb: 0x08cd,\n\t0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x08ed, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0ef9,\n\t0xcc6: 0x0ef9, 0xcc7: 0x0f09, 0xcc8: 0x0f41, 0xcc9: 0x0259, 0xcca: 0x0018, 0xccb: 0x0018,\n\t0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x2121, 0xcd1: 0x2151,\n\t0xcd2: 0x2181, 0xcd3: 0x21b9, 0xcd4: 0x21e9, 0xcd5: 0x2219, 0xcd6: 0x2249, 0xcd7: 0x2279,\n\t0xcd8: 0x22a9, 0xcd9: 0x22d9, 0xcda: 0x2309, 0xcdb: 0x2339, 0xcdc: 0x2369, 0xcdd: 0x2399,\n\t0xcde: 0x23c9, 0xcdf: 0x23f9, 0xce0: 0x0f41, 0xce1: 0x2421, 0xce2: 0x0905, 0xce3: 0x2439,\n\t0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x0925, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369,\n\t0xcea: 0x24a9, 0xceb: 0x0945, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61,\n\t0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x0965, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451,\n\t0xcf6: 0x0985, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09a5,\n\t0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018,\n\t0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040,\n\t0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040,\n\t0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040,\n\t0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040,\n\t0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x00c9, 0xd21: 0x0069, 0xd22: 0x0079, 0xd23: 0x1f51,\n\t0xd24: 0x1f61, 0xd25: 0x1f71, 0xd26: 0x1f81, 0xd27: 0x1f91, 0xd28: 0x1fa1, 0xd29: 0x2601,\n\t0xd2a: 0x2619, 0xd2b: 0x2631, 0xd2c: 0x2649, 0xd2d: 0x2661, 0xd2e: 0x2679, 0xd2f: 0x2691,\n\t0xd30: 0x26a9, 0xd31: 0x26c1, 0xd32: 0x26d9, 0xd33: 0x26f1, 0xd34: 0x0a06, 0xd35: 0x0a26,\n\t0xd36: 0x0a46, 0xd37: 0x0a66, 0xd38: 0x0a86, 0xd39: 0x0aa6, 0xd3a: 0x0ac6, 0xd3b: 0x0ae6,\n\t0xd3c: 0x0b06, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x2782, 0xd41: 0x27aa, 0xd42: 0x27d2, 0xd43: 0x27fa, 0xd44: 0x2822, 0xd45: 0x284a,\n\t0xd46: 0x2872, 0xd47: 0x289a, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040,\n\t0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040,\n\t0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040,\n\t0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b26, 0xd5d: 0x0b46,\n\t0xd5e: 0x0b66, 0xd5f: 0x0b86, 0xd60: 0x0ba6, 0xd61: 0x0bc6, 0xd62: 0x0be6, 0xd63: 0x0c06,\n\t0xd64: 0x0c26, 0xd65: 0x0c46, 0xd66: 0x0c66, 0xd67: 0x0c86, 0xd68: 0x0ca6, 0xd69: 0x0cc6,\n\t0xd6a: 0x0ce6, 0xd6b: 0x0d06, 0xd6c: 0x0d26, 0xd6d: 0x0d46, 0xd6e: 0x0d66, 0xd6f: 0x0d86,\n\t0xd70: 0x0da6, 0xd71: 0x0dc6, 0xd72: 0x0de6, 0xd73: 0x0e06, 0xd74: 0x0e26, 0xd75: 0x0e46,\n\t0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199,\n\t0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0f51, 0xd81: 0x0359, 0xd82: 0x0f61, 0xd83: 0x0f71, 0xd84: 0x00d9, 0xd85: 0x0f99,\n\t0xd86: 0x2039, 0xd87: 0x0269, 0xd88: 0x01d9, 0xd89: 0x0fa9, 0xd8a: 0x0fb9, 0xd8b: 0x1089,\n\t0xd8c: 0x0279, 0xd8d: 0x0369, 0xd8e: 0x0289, 0xd8f: 0x13d1, 0xd90: 0x0039, 0xd91: 0x0ee9,\n\t0xd92: 0x1159, 0xd93: 0x0ef9, 0xd94: 0x0f09, 0xd95: 0x1199, 0xd96: 0x0f31, 0xd97: 0x0249,\n\t0xd98: 0x0f41, 0xd99: 0x0259, 0xd9a: 0x0f51, 0xd9b: 0x0359, 0xd9c: 0x0f61, 0xd9d: 0x0f71,\n\t0xd9e: 0x00d9, 0xd9f: 0x0f99, 0xda0: 0x2039, 0xda1: 0x0269, 0xda2: 0x01d9, 0xda3: 0x0fa9,\n\t0xda4: 0x0fb9, 0xda5: 0x1089, 0xda6: 0x0279, 0xda7: 0x0369, 0xda8: 0x0289, 0xda9: 0x13d1,\n\t0xdaa: 0x1f41, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018,\n\t0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018,\n\t0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018,\n\t0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008,\n\t0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008,\n\t0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008,\n\t0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008,\n\t0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008,\n\t0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x2971, 0xde3: 0x0ebd,\n\t0xde4: 0x2989, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d,\n\t0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0fe1, 0xdee: 0x1281, 0xdef: 0x0fc9,\n\t0xdf0: 0x1141, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d,\n\t0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008,\n\t0xdfc: 0x0259, 0xdfd: 0x1089, 0xdfe: 0x29a1, 0xdff: 0x29b9,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008,\n\t0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008,\n\t0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008,\n\t0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008,\n\t0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008,\n\t0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008,\n\t0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018,\n\t0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308,\n\t0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040,\n\t0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018,\n\t0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x26fd, 0xe41: 0x271d, 0xe42: 0x273d, 0xe43: 0x275d, 0xe44: 0x277d, 0xe45: 0x279d,\n\t0xe46: 0x27bd, 0xe47: 0x27dd, 0xe48: 0x27fd, 0xe49: 0x281d, 0xe4a: 0x283d, 0xe4b: 0x285d,\n\t0xe4c: 0x287d, 0xe4d: 0x289d, 0xe4e: 0x28bd, 0xe4f: 0x28dd, 0xe50: 0x28fd, 0xe51: 0x291d,\n\t0xe52: 0x293d, 0xe53: 0x295d, 0xe54: 0x297d, 0xe55: 0x299d, 0xe56: 0x0040, 0xe57: 0x0040,\n\t0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040,\n\t0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040,\n\t0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040,\n\t0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040,\n\t0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040,\n\t0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040,\n\t0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x29d1, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008,\n\t0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018,\n\t0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018,\n\t0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018,\n\t0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018,\n\t0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018,\n\t0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018,\n\t0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018,\n\t0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018,\n\t0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29bd, 0xeb9: 0x29dd, 0xeba: 0x29fd, 0xebb: 0x0018,\n\t0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x2b3d, 0xec1: 0x2b5d, 0xec2: 0x2b7d, 0xec3: 0x2b9d, 0xec4: 0x2bbd, 0xec5: 0x2bdd,\n\t0xec6: 0x2bdd, 0xec7: 0x2bdd, 0xec8: 0x2bfd, 0xec9: 0x2bfd, 0xeca: 0x2bfd, 0xecb: 0x2bfd,\n\t0xecc: 0x2c1d, 0xecd: 0x2c1d, 0xece: 0x2c1d, 0xecf: 0x2c3d, 0xed0: 0x2c5d, 0xed1: 0x2c5d,\n\t0xed2: 0x2a7d, 0xed3: 0x2a7d, 0xed4: 0x2c5d, 0xed5: 0x2c5d, 0xed6: 0x2c7d, 0xed7: 0x2c7d,\n\t0xed8: 0x2c5d, 0xed9: 0x2c5d, 0xeda: 0x2a7d, 0xedb: 0x2a7d, 0xedc: 0x2c5d, 0xedd: 0x2c5d,\n\t0xede: 0x2c3d, 0xedf: 0x2c3d, 0xee0: 0x2c9d, 0xee1: 0x2c9d, 0xee2: 0x2cbd, 0xee3: 0x2cbd,\n\t0xee4: 0x0040, 0xee5: 0x2cdd, 0xee6: 0x2cfd, 0xee7: 0x2d1d, 0xee8: 0x2d1d, 0xee9: 0x2d3d,\n\t0xeea: 0x2d5d, 0xeeb: 0x2d7d, 0xeec: 0x2d9d, 0xeed: 0x2dbd, 0xeee: 0x2ddd, 0xeef: 0x2dfd,\n\t0xef0: 0x2e1d, 0xef1: 0x2e3d, 0xef2: 0x2e3d, 0xef3: 0x2e5d, 0xef4: 0x2e7d, 0xef5: 0x2e7d,\n\t0xef6: 0x2e9d, 0xef7: 0x2ebd, 0xef8: 0x2e5d, 0xef9: 0x2edd, 0xefa: 0x2efd, 0xefb: 0x2edd,\n\t0xefc: 0x2e5d, 0xefd: 0x2f1d, 0xefe: 0x2f3d, 0xeff: 0x2f5d,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x2f7d, 0xf01: 0x2f9d, 0xf02: 0x2cfd, 0xf03: 0x2cdd, 0xf04: 0x2fbd, 0xf05: 0x2fdd,\n\t0xf06: 0x2ffd, 0xf07: 0x301d, 0xf08: 0x303d, 0xf09: 0x305d, 0xf0a: 0x307d, 0xf0b: 0x309d,\n\t0xf0c: 0x30bd, 0xf0d: 0x30dd, 0xf0e: 0x30fd, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018,\n\t0xf12: 0x311d, 0xf13: 0x313d, 0xf14: 0x315d, 0xf15: 0x317d, 0xf16: 0x319d, 0xf17: 0x31bd,\n\t0xf18: 0x31dd, 0xf19: 0x31fd, 0xf1a: 0x321d, 0xf1b: 0x323d, 0xf1c: 0x315d, 0xf1d: 0x325d,\n\t0xf1e: 0x327d, 0xf1f: 0x329d, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008,\n\t0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008,\n\t0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008,\n\t0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008,\n\t0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0040,\n\t0xf3c: 0x0040, 0xf3d: 0x0040, 0xf3e: 0x0040, 0xf3f: 0x0040,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32bd, 0xf45: 0x32dd,\n\t0xf46: 0x32fd, 0xf47: 0x331d, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018,\n\t0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x333d, 0xf51: 0x3761,\n\t0xf52: 0x3779, 0xf53: 0x3791, 0xf54: 0x37a9, 0xf55: 0x37c1, 0xf56: 0x37d9, 0xf57: 0x37f1,\n\t0xf58: 0x3809, 0xf59: 0x3821, 0xf5a: 0x3839, 0xf5b: 0x3851, 0xf5c: 0x3869, 0xf5d: 0x3881,\n\t0xf5e: 0x3899, 0xf5f: 0x38b1, 0xf60: 0x335d, 0xf61: 0x337d, 0xf62: 0x339d, 0xf63: 0x33bd,\n\t0xf64: 0x33dd, 0xf65: 0x33dd, 0xf66: 0x33fd, 0xf67: 0x341d, 0xf68: 0x343d, 0xf69: 0x345d,\n\t0xf6a: 0x347d, 0xf6b: 0x349d, 0xf6c: 0x34bd, 0xf6d: 0x34dd, 0xf6e: 0x34fd, 0xf6f: 0x351d,\n\t0xf70: 0x353d, 0xf71: 0x355d, 0xf72: 0x357d, 0xf73: 0x359d, 0xf74: 0x35bd, 0xf75: 0x35dd,\n\t0xf76: 0x35fd, 0xf77: 0x361d, 0xf78: 0x363d, 0xf79: 0x365d, 0xf7a: 0x367d, 0xf7b: 0x369d,\n\t0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36bd, 0xf7f: 0x0018,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x36dd, 0xf81: 0x36fd, 0xf82: 0x371d, 0xf83: 0x373d, 0xf84: 0x375d, 0xf85: 0x377d,\n\t0xf86: 0x379d, 0xf87: 0x37bd, 0xf88: 0x37dd, 0xf89: 0x37fd, 0xf8a: 0x381d, 0xf8b: 0x383d,\n\t0xf8c: 0x385d, 0xf8d: 0x387d, 0xf8e: 0x389d, 0xf8f: 0x38bd, 0xf90: 0x38dd, 0xf91: 0x38fd,\n\t0xf92: 0x391d, 0xf93: 0x393d, 0xf94: 0x395d, 0xf95: 0x397d, 0xf96: 0x399d, 0xf97: 0x39bd,\n\t0xf98: 0x39dd, 0xf99: 0x39fd, 0xf9a: 0x3a1d, 0xf9b: 0x3a3d, 0xf9c: 0x3a5d, 0xf9d: 0x3a7d,\n\t0xf9e: 0x3a9d, 0xf9f: 0x3abd, 0xfa0: 0x3add, 0xfa1: 0x3afd, 0xfa2: 0x3b1d, 0xfa3: 0x3b3d,\n\t0xfa4: 0x3b5d, 0xfa5: 0x3b7d, 0xfa6: 0x127d, 0xfa7: 0x3b9d, 0xfa8: 0x3bbd, 0xfa9: 0x3bdd,\n\t0xfaa: 0x3bfd, 0xfab: 0x3c1d, 0xfac: 0x3c3d, 0xfad: 0x3c5d, 0xfae: 0x239d, 0xfaf: 0x3c7d,\n\t0xfb0: 0x3c9d, 0xfb1: 0x3939, 0xfb2: 0x3951, 0xfb3: 0x3969, 0xfb4: 0x3981, 0xfb5: 0x3999,\n\t0xfb6: 0x39b1, 0xfb7: 0x39c9, 0xfb8: 0x39e1, 0xfb9: 0x39f9, 0xfba: 0x3a11, 0xfbb: 0x3a29,\n\t0xfbc: 0x3a41, 0xfbd: 0x3a59, 0xfbe: 0x3a71, 0xfbf: 0x3a89,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x3aa1, 0xfc1: 0x3ac9, 0xfc2: 0x3af1, 0xfc3: 0x3b19, 0xfc4: 0x3b41, 0xfc5: 0x3b69,\n\t0xfc6: 0x3b91, 0xfc7: 0x3bb9, 0xfc8: 0x3be1, 0xfc9: 0x3c09, 0xfca: 0x3c39, 0xfcb: 0x3c69,\n\t0xfcc: 0x3c99, 0xfcd: 0x3cbd, 0xfce: 0x3cb1, 0xfcf: 0x3cdd, 0xfd0: 0x3cfd, 0xfd1: 0x3d15,\n\t0xfd2: 0x3d2d, 0xfd3: 0x3d45, 0xfd4: 0x3d5d, 0xfd5: 0x3d5d, 0xfd6: 0x3d45, 0xfd7: 0x3d75,\n\t0xfd8: 0x07bd, 0xfd9: 0x3d8d, 0xfda: 0x3da5, 0xfdb: 0x3dbd, 0xfdc: 0x3dd5, 0xfdd: 0x3ded,\n\t0xfde: 0x3e05, 0xfdf: 0x3e1d, 0xfe0: 0x3e35, 0xfe1: 0x3e4d, 0xfe2: 0x3e65, 0xfe3: 0x3e7d,\n\t0xfe4: 0x3e95, 0xfe5: 0x3e95, 0xfe6: 0x3ead, 0xfe7: 0x3ead, 0xfe8: 0x3ec5, 0xfe9: 0x3ec5,\n\t0xfea: 0x3edd, 0xfeb: 0x3ef5, 0xfec: 0x3f0d, 0xfed: 0x3f25, 0xfee: 0x3f3d, 0xfef: 0x3f3d,\n\t0xff0: 0x3f55, 0xff1: 0x3f55, 0xff2: 0x3f55, 0xff3: 0x3f6d, 0xff4: 0x3f85, 0xff5: 0x3f9d,\n\t0xff6: 0x3fb5, 0xff7: 0x3f9d, 0xff8: 0x3fcd, 0xff9: 0x3fe5, 0xffa: 0x3f6d, 0xffb: 0x3ffd,\n\t0xffc: 0x4015, 0xffd: 0x4015, 0xffe: 0x4015, 0xfff: 0x0040,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x3cc9, 0x1001: 0x3d31, 0x1002: 0x3d99, 0x1003: 0x3e01, 0x1004: 0x3e51, 0x1005: 0x3eb9,\n\t0x1006: 0x3f09, 0x1007: 0x3f59, 0x1008: 0x3fd9, 0x1009: 0x4041, 0x100a: 0x4091, 0x100b: 0x40e1,\n\t0x100c: 0x4131, 0x100d: 0x4199, 0x100e: 0x4201, 0x100f: 0x4251, 0x1010: 0x42a1, 0x1011: 0x42d9,\n\t0x1012: 0x4329, 0x1013: 0x4391, 0x1014: 0x43f9, 0x1015: 0x4431, 0x1016: 0x44b1, 0x1017: 0x4549,\n\t0x1018: 0x45c9, 0x1019: 0x4619, 0x101a: 0x4699, 0x101b: 0x4719, 0x101c: 0x4781, 0x101d: 0x47d1,\n\t0x101e: 0x4821, 0x101f: 0x4871, 0x1020: 0x48d9, 0x1021: 0x4959, 0x1022: 0x49c1, 0x1023: 0x4a11,\n\t0x1024: 0x4a61, 0x1025: 0x4ab1, 0x1026: 0x4ae9, 0x1027: 0x4b21, 0x1028: 0x4b59, 0x1029: 0x4b91,\n\t0x102a: 0x4be1, 0x102b: 0x4c31, 0x102c: 0x4cb1, 0x102d: 0x4d01, 0x102e: 0x4d69, 0x102f: 0x4de9,\n\t0x1030: 0x4e39, 0x1031: 0x4e71, 0x1032: 0x4ea9, 0x1033: 0x4f29, 0x1034: 0x4f91, 0x1035: 0x5011,\n\t0x1036: 0x5061, 0x1037: 0x50e1, 0x1038: 0x5119, 0x1039: 0x5169, 0x103a: 0x51b9, 0x103b: 0x5209,\n\t0x103c: 0x5259, 0x103d: 0x52a9, 0x103e: 0x5311, 0x103f: 0x5361,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x5399, 0x1041: 0x53e9, 0x1042: 0x5439, 0x1043: 0x5489, 0x1044: 0x54f1, 0x1045: 0x5541,\n\t0x1046: 0x5591, 0x1047: 0x55e1, 0x1048: 0x5661, 0x1049: 0x56c9, 0x104a: 0x5701, 0x104b: 0x5781,\n\t0x104c: 0x57b9, 0x104d: 0x5821, 0x104e: 0x5889, 0x104f: 0x58d9, 0x1050: 0x5929, 0x1051: 0x5979,\n\t0x1052: 0x59e1, 0x1053: 0x5a19, 0x1054: 0x5a69, 0x1055: 0x5ad1, 0x1056: 0x5b09, 0x1057: 0x5b89,\n\t0x1058: 0x5bd9, 0x1059: 0x5c01, 0x105a: 0x5c29, 0x105b: 0x5c51, 0x105c: 0x5c79, 0x105d: 0x5ca1,\n\t0x105e: 0x5cc9, 0x105f: 0x5cf1, 0x1060: 0x5d19, 0x1061: 0x5d41, 0x1062: 0x5d69, 0x1063: 0x5d99,\n\t0x1064: 0x5dc9, 0x1065: 0x5df9, 0x1066: 0x5e29, 0x1067: 0x5e59, 0x1068: 0x5e89, 0x1069: 0x5eb9,\n\t0x106a: 0x5ee9, 0x106b: 0x5f19, 0x106c: 0x5f49, 0x106d: 0x5f79, 0x106e: 0x5fa9, 0x106f: 0x5fd9,\n\t0x1070: 0x6009, 0x1071: 0x402d, 0x1072: 0x6039, 0x1073: 0x6051, 0x1074: 0x404d, 0x1075: 0x6069,\n\t0x1076: 0x6081, 0x1077: 0x6099, 0x1078: 0x406d, 0x1079: 0x406d, 0x107a: 0x60b1, 0x107b: 0x60c9,\n\t0x107c: 0x6101, 0x107d: 0x6139, 0x107e: 0x6171, 0x107f: 0x61a9,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x6211, 0x1081: 0x6229, 0x1082: 0x408d, 0x1083: 0x6241, 0x1084: 0x6259, 0x1085: 0x6271,\n\t0x1086: 0x6289, 0x1087: 0x62a1, 0x1088: 0x40ad, 0x1089: 0x62b9, 0x108a: 0x62e1, 0x108b: 0x62f9,\n\t0x108c: 0x40cd, 0x108d: 0x40cd, 0x108e: 0x6311, 0x108f: 0x6329, 0x1090: 0x6341, 0x1091: 0x40ed,\n\t0x1092: 0x410d, 0x1093: 0x412d, 0x1094: 0x414d, 0x1095: 0x416d, 0x1096: 0x6359, 0x1097: 0x6371,\n\t0x1098: 0x6389, 0x1099: 0x63a1, 0x109a: 0x63b9, 0x109b: 0x418d, 0x109c: 0x63d1, 0x109d: 0x63e9,\n\t0x109e: 0x6401, 0x109f: 0x41ad, 0x10a0: 0x41cd, 0x10a1: 0x6419, 0x10a2: 0x41ed, 0x10a3: 0x420d,\n\t0x10a4: 0x422d, 0x10a5: 0x6431, 0x10a6: 0x424d, 0x10a7: 0x6449, 0x10a8: 0x6479, 0x10a9: 0x6211,\n\t0x10aa: 0x426d, 0x10ab: 0x428d, 0x10ac: 0x42ad, 0x10ad: 0x42cd, 0x10ae: 0x64b1, 0x10af: 0x64f1,\n\t0x10b0: 0x6539, 0x10b1: 0x6551, 0x10b2: 0x42ed, 0x10b3: 0x6569, 0x10b4: 0x6581, 0x10b5: 0x6599,\n\t0x10b6: 0x430d, 0x10b7: 0x65b1, 0x10b8: 0x65c9, 0x10b9: 0x65b1, 0x10ba: 0x65e1, 0x10bb: 0x65f9,\n\t0x10bc: 0x432d, 0x10bd: 0x6611, 0x10be: 0x6629, 0x10bf: 0x6611,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x434d, 0x10c1: 0x436d, 0x10c2: 0x0040, 0x10c3: 0x6641, 0x10c4: 0x6659, 0x10c5: 0x6671,\n\t0x10c6: 0x6689, 0x10c7: 0x0040, 0x10c8: 0x66c1, 0x10c9: 0x66d9, 0x10ca: 0x66f1, 0x10cb: 0x6709,\n\t0x10cc: 0x6721, 0x10cd: 0x6739, 0x10ce: 0x6401, 0x10cf: 0x6751, 0x10d0: 0x6769, 0x10d1: 0x6781,\n\t0x10d2: 0x438d, 0x10d3: 0x6799, 0x10d4: 0x6289, 0x10d5: 0x43ad, 0x10d6: 0x43cd, 0x10d7: 0x67b1,\n\t0x10d8: 0x0040, 0x10d9: 0x43ed, 0x10da: 0x67c9, 0x10db: 0x67e1, 0x10dc: 0x67f9, 0x10dd: 0x6811,\n\t0x10de: 0x6829, 0x10df: 0x6859, 0x10e0: 0x6889, 0x10e1: 0x68b1, 0x10e2: 0x68d9, 0x10e3: 0x6901,\n\t0x10e4: 0x6929, 0x10e5: 0x6951, 0x10e6: 0x6979, 0x10e7: 0x69a1, 0x10e8: 0x69c9, 0x10e9: 0x69f1,\n\t0x10ea: 0x6a21, 0x10eb: 0x6a51, 0x10ec: 0x6a81, 0x10ed: 0x6ab1, 0x10ee: 0x6ae1, 0x10ef: 0x6b11,\n\t0x10f0: 0x6b41, 0x10f1: 0x6b71, 0x10f2: 0x6ba1, 0x10f3: 0x6bd1, 0x10f4: 0x6c01, 0x10f5: 0x6c31,\n\t0x10f6: 0x6c61, 0x10f7: 0x6c91, 0x10f8: 0x6cc1, 0x10f9: 0x6cf1, 0x10fa: 0x6d21, 0x10fb: 0x6d51,\n\t0x10fc: 0x6d81, 0x10fd: 0x6db1, 0x10fe: 0x6de1, 0x10ff: 0x440d,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008,\n\t0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008,\n\t0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008,\n\t0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008,\n\t0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0xe00d, 0x111d: 0x0008,\n\t0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008,\n\t0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008,\n\t0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x3308,\n\t0x1130: 0x3318, 0x1131: 0x3318, 0x1132: 0x3318, 0x1133: 0x0018, 0x1134: 0x3308, 0x1135: 0x3308,\n\t0x1136: 0x3308, 0x1137: 0x3308, 0x1138: 0x3308, 0x1139: 0x3308, 0x113a: 0x3308, 0x113b: 0x3308,\n\t0x113c: 0x3308, 0x113d: 0x3308, 0x113e: 0x0018, 0x113f: 0x0008,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008,\n\t0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008,\n\t0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008,\n\t0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008,\n\t0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0x0ea1, 0x115d: 0x6e11,\n\t0x115e: 0x3308, 0x115f: 0x3308, 0x1160: 0x0008, 0x1161: 0x0008, 0x1162: 0x0008, 0x1163: 0x0008,\n\t0x1164: 0x0008, 0x1165: 0x0008, 0x1166: 0x0008, 0x1167: 0x0008, 0x1168: 0x0008, 0x1169: 0x0008,\n\t0x116a: 0x0008, 0x116b: 0x0008, 0x116c: 0x0008, 0x116d: 0x0008, 0x116e: 0x0008, 0x116f: 0x0008,\n\t0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008,\n\t0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0x0008, 0x117a: 0x0008, 0x117b: 0x0008,\n\t0x117c: 0x0008, 0x117d: 0x0008, 0x117e: 0x0008, 0x117f: 0x0008,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x0018, 0x1181: 0x0018, 0x1182: 0x0018, 0x1183: 0x0018, 0x1184: 0x0018, 0x1185: 0x0018,\n\t0x1186: 0x0018, 0x1187: 0x0018, 0x1188: 0x0018, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0x0018,\n\t0x118c: 0x0018, 0x118d: 0x0018, 0x118e: 0x0018, 0x118f: 0x0018, 0x1190: 0x0018, 0x1191: 0x0018,\n\t0x1192: 0x0018, 0x1193: 0x0018, 0x1194: 0x0018, 0x1195: 0x0018, 0x1196: 0x0018, 0x1197: 0x0008,\n\t0x1198: 0x0008, 0x1199: 0x0008, 0x119a: 0x0008, 0x119b: 0x0008, 0x119c: 0x0008, 0x119d: 0x0008,\n\t0x119e: 0x0008, 0x119f: 0x0008, 0x11a0: 0x0018, 0x11a1: 0x0018, 0x11a2: 0xe00d, 0x11a3: 0x0008,\n\t0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,\n\t0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008,\n\t0x11b0: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008,\n\t0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008,\n\t0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008,\n\t0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0xe00d, 0x11c9: 0x0008, 0x11ca: 0xe00d, 0x11cb: 0x0008,\n\t0x11cc: 0xe00d, 0x11cd: 0x0008, 0x11ce: 0xe00d, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008,\n\t0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0xe00d, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008,\n\t0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008,\n\t0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008,\n\t0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008,\n\t0x11ea: 0xe00d, 0x11eb: 0x0008, 0x11ec: 0xe00d, 0x11ed: 0x0008, 0x11ee: 0xe00d, 0x11ef: 0x0008,\n\t0x11f0: 0xe0fd, 0x11f1: 0x0008, 0x11f2: 0x0008, 0x11f3: 0x0008, 0x11f4: 0x0008, 0x11f5: 0x0008,\n\t0x11f6: 0x0008, 0x11f7: 0x0008, 0x11f8: 0x0008, 0x11f9: 0xe01d, 0x11fa: 0x0008, 0x11fb: 0xe03d,\n\t0x11fc: 0x0008, 0x11fd: 0x442d, 0x11fe: 0xe00d, 0x11ff: 0x0008,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0xe00d, 0x1205: 0x0008,\n\t0x1206: 0xe00d, 0x1207: 0x0008, 0x1208: 0x0008, 0x1209: 0x0018, 0x120a: 0x0018, 0x120b: 0xe03d,\n\t0x120c: 0x0008, 0x120d: 0x11d9, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0xe00d, 0x1211: 0x0008,\n\t0x1212: 0xe00d, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008,\n\t0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0xe00d, 0x121b: 0x0008, 0x121c: 0xe00d, 0x121d: 0x0008,\n\t0x121e: 0xe00d, 0x121f: 0x0008, 0x1220: 0xe00d, 0x1221: 0x0008, 0x1222: 0xe00d, 0x1223: 0x0008,\n\t0x1224: 0xe00d, 0x1225: 0x0008, 0x1226: 0xe00d, 0x1227: 0x0008, 0x1228: 0xe00d, 0x1229: 0x0008,\n\t0x122a: 0x6e29, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e41, 0x122e: 0x1221, 0x122f: 0x0040,\n\t0x1230: 0x6e59, 0x1231: 0x6e71, 0x1232: 0x1239, 0x1233: 0x444d, 0x1234: 0xe00d, 0x1235: 0x0008,\n\t0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0x0040, 0x1239: 0x0040, 0x123a: 0x0040, 0x123b: 0x0040,\n\t0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x64d5, 0x1241: 0x64f5, 0x1242: 0x6515, 0x1243: 0x6535, 0x1244: 0x6555, 0x1245: 0x6575,\n\t0x1246: 0x6595, 0x1247: 0x65b5, 0x1248: 0x65d5, 0x1249: 0x65f5, 0x124a: 0x6615, 0x124b: 0x6635,\n\t0x124c: 0x6655, 0x124d: 0x6675, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x6695, 0x1251: 0x0008,\n\t0x1252: 0x66b5, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x66d5, 0x1256: 0x66f5, 0x1257: 0x6715,\n\t0x1258: 0x6735, 0x1259: 0x6755, 0x125a: 0x6775, 0x125b: 0x6795, 0x125c: 0x67b5, 0x125d: 0x67d5,\n\t0x125e: 0x67f5, 0x125f: 0x0008, 0x1260: 0x6815, 0x1261: 0x0008, 0x1262: 0x6835, 0x1263: 0x0008,\n\t0x1264: 0x0008, 0x1265: 0x6855, 0x1266: 0x6875, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008,\n\t0x126a: 0x6895, 0x126b: 0x68b5, 0x126c: 0x68d5, 0x126d: 0x68f5, 0x126e: 0x6915, 0x126f: 0x6935,\n\t0x1270: 0x6955, 0x1271: 0x6975, 0x1272: 0x6995, 0x1273: 0x69b5, 0x1274: 0x69d5, 0x1275: 0x69f5,\n\t0x1276: 0x6a15, 0x1277: 0x6a35, 0x1278: 0x6a55, 0x1279: 0x6a75, 0x127a: 0x6a95, 0x127b: 0x6ab5,\n\t0x127c: 0x6ad5, 0x127d: 0x6af5, 0x127e: 0x6b15, 0x127f: 0x6b35,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x7a95, 0x1281: 0x7ab5, 0x1282: 0x7ad5, 0x1283: 0x7af5, 0x1284: 0x7b15, 0x1285: 0x7b35,\n\t0x1286: 0x7b55, 0x1287: 0x7b75, 0x1288: 0x7b95, 0x1289: 0x7bb5, 0x128a: 0x7bd5, 0x128b: 0x7bf5,\n\t0x128c: 0x7c15, 0x128d: 0x7c35, 0x128e: 0x7c55, 0x128f: 0x6ec9, 0x1290: 0x6ef1, 0x1291: 0x6f19,\n\t0x1292: 0x7c75, 0x1293: 0x7c95, 0x1294: 0x7cb5, 0x1295: 0x6f41, 0x1296: 0x6f69, 0x1297: 0x6f91,\n\t0x1298: 0x7cd5, 0x1299: 0x7cf5, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040,\n\t0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040,\n\t0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040,\n\t0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040,\n\t0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040,\n\t0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040,\n\t0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x6fb9, 0x12c1: 0x6fd1, 0x12c2: 0x6fe9, 0x12c3: 0x7d15, 0x12c4: 0x7d35, 0x12c5: 0x7001,\n\t0x12c6: 0x7001, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040,\n\t0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040,\n\t0x12d2: 0x0040, 0x12d3: 0x7019, 0x12d4: 0x7041, 0x12d5: 0x7069, 0x12d6: 0x7091, 0x12d7: 0x70b9,\n\t0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x70e1,\n\t0x12de: 0x3308, 0x12df: 0x7109, 0x12e0: 0x7131, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7149,\n\t0x12e4: 0x7161, 0x12e5: 0x7179, 0x12e6: 0x7191, 0x12e7: 0x71a9, 0x12e8: 0x71c1, 0x12e9: 0x1fb2,\n\t0x12ea: 0x71d9, 0x12eb: 0x7201, 0x12ec: 0x7229, 0x12ed: 0x7261, 0x12ee: 0x7299, 0x12ef: 0x72c1,\n\t0x12f0: 0x72e9, 0x12f1: 0x7311, 0x12f2: 0x7339, 0x12f3: 0x7361, 0x12f4: 0x7389, 0x12f5: 0x73b1,\n\t0x12f6: 0x73d9, 0x12f7: 0x0040, 0x12f8: 0x7401, 0x12f9: 0x7429, 0x12fa: 0x7451, 0x12fb: 0x7479,\n\t0x12fc: 0x74a1, 0x12fd: 0x0040, 0x12fe: 0x74c9, 0x12ff: 0x0040,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x74f1, 0x1301: 0x7519, 0x1302: 0x0040, 0x1303: 0x7541, 0x1304: 0x7569, 0x1305: 0x0040,\n\t0x1306: 0x7591, 0x1307: 0x75b9, 0x1308: 0x75e1, 0x1309: 0x7609, 0x130a: 0x7631, 0x130b: 0x7659,\n\t0x130c: 0x7681, 0x130d: 0x76a9, 0x130e: 0x76d1, 0x130f: 0x76f9, 0x1310: 0x7721, 0x1311: 0x7721,\n\t0x1312: 0x7739, 0x1313: 0x7739, 0x1314: 0x7739, 0x1315: 0x7739, 0x1316: 0x7751, 0x1317: 0x7751,\n\t0x1318: 0x7751, 0x1319: 0x7751, 0x131a: 0x7769, 0x131b: 0x7769, 0x131c: 0x7769, 0x131d: 0x7769,\n\t0x131e: 0x7781, 0x131f: 0x7781, 0x1320: 0x7781, 0x1321: 0x7781, 0x1322: 0x7799, 0x1323: 0x7799,\n\t0x1324: 0x7799, 0x1325: 0x7799, 0x1326: 0x77b1, 0x1327: 0x77b1, 0x1328: 0x77b1, 0x1329: 0x77b1,\n\t0x132a: 0x77c9, 0x132b: 0x77c9, 0x132c: 0x77c9, 0x132d: 0x77c9, 0x132e: 0x77e1, 0x132f: 0x77e1,\n\t0x1330: 0x77e1, 0x1331: 0x77e1, 0x1332: 0x77f9, 0x1333: 0x77f9, 0x1334: 0x77f9, 0x1335: 0x77f9,\n\t0x1336: 0x7811, 0x1337: 0x7811, 0x1338: 0x7811, 0x1339: 0x7811, 0x133a: 0x7829, 0x133b: 0x7829,\n\t0x133c: 0x7829, 0x133d: 0x7829, 0x133e: 0x7841, 0x133f: 0x7841,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x7841, 0x1341: 0x7841, 0x1342: 0x7859, 0x1343: 0x7859, 0x1344: 0x7871, 0x1345: 0x7871,\n\t0x1346: 0x7889, 0x1347: 0x7889, 0x1348: 0x78a1, 0x1349: 0x78a1, 0x134a: 0x78b9, 0x134b: 0x78b9,\n\t0x134c: 0x78d1, 0x134d: 0x78d1, 0x134e: 0x78e9, 0x134f: 0x78e9, 0x1350: 0x78e9, 0x1351: 0x78e9,\n\t0x1352: 0x7901, 0x1353: 0x7901, 0x1354: 0x7901, 0x1355: 0x7901, 0x1356: 0x7919, 0x1357: 0x7919,\n\t0x1358: 0x7919, 0x1359: 0x7919, 0x135a: 0x7931, 0x135b: 0x7931, 0x135c: 0x7931, 0x135d: 0x7931,\n\t0x135e: 0x7949, 0x135f: 0x7949, 0x1360: 0x7961, 0x1361: 0x7961, 0x1362: 0x7961, 0x1363: 0x7961,\n\t0x1364: 0x7979, 0x1365: 0x7979, 0x1366: 0x7991, 0x1367: 0x7991, 0x1368: 0x7991, 0x1369: 0x7991,\n\t0x136a: 0x79a9, 0x136b: 0x79a9, 0x136c: 0x79a9, 0x136d: 0x79a9, 0x136e: 0x79c1, 0x136f: 0x79c1,\n\t0x1370: 0x79d9, 0x1371: 0x79d9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818,\n\t0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818,\n\t0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0040, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040,\n\t0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040,\n\t0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040,\n\t0x1392: 0x0040, 0x1393: 0x79f1, 0x1394: 0x79f1, 0x1395: 0x79f1, 0x1396: 0x79f1, 0x1397: 0x7a09,\n\t0x1398: 0x7a09, 0x1399: 0x7a21, 0x139a: 0x7a21, 0x139b: 0x7a39, 0x139c: 0x7a39, 0x139d: 0x0479,\n\t0x139e: 0x7a51, 0x139f: 0x7a51, 0x13a0: 0x7a69, 0x13a1: 0x7a69, 0x13a2: 0x7a81, 0x13a3: 0x7a81,\n\t0x13a4: 0x7a99, 0x13a5: 0x7a99, 0x13a6: 0x7a99, 0x13a7: 0x7a99, 0x13a8: 0x7ab1, 0x13a9: 0x7ab1,\n\t0x13aa: 0x7ac9, 0x13ab: 0x7ac9, 0x13ac: 0x7af1, 0x13ad: 0x7af1, 0x13ae: 0x7b19, 0x13af: 0x7b19,\n\t0x13b0: 0x7b41, 0x13b1: 0x7b41, 0x13b2: 0x7b69, 0x13b3: 0x7b69, 0x13b4: 0x7b91, 0x13b5: 0x7b91,\n\t0x13b6: 0x7bb9, 0x13b7: 0x7bb9, 0x13b8: 0x7bb9, 0x13b9: 0x7be1, 0x13ba: 0x7be1, 0x13bb: 0x7be1,\n\t0x13bc: 0x7c09, 0x13bd: 0x7c09, 0x13be: 0x7c09, 0x13bf: 0x7c09,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x85f9, 0x13c1: 0x8621, 0x13c2: 0x8649, 0x13c3: 0x8671, 0x13c4: 0x8699, 0x13c5: 0x86c1,\n\t0x13c6: 0x86e9, 0x13c7: 0x8711, 0x13c8: 0x8739, 0x13c9: 0x8761, 0x13ca: 0x8789, 0x13cb: 0x87b1,\n\t0x13cc: 0x87d9, 0x13cd: 0x8801, 0x13ce: 0x8829, 0x13cf: 0x8851, 0x13d0: 0x8879, 0x13d1: 0x88a1,\n\t0x13d2: 0x88c9, 0x13d3: 0x88f1, 0x13d4: 0x8919, 0x13d5: 0x8941, 0x13d6: 0x8969, 0x13d7: 0x8991,\n\t0x13d8: 0x89b9, 0x13d9: 0x89e1, 0x13da: 0x8a09, 0x13db: 0x8a31, 0x13dc: 0x8a59, 0x13dd: 0x8a81,\n\t0x13de: 0x8aaa, 0x13df: 0x8ada, 0x13e0: 0x8b0a, 0x13e1: 0x8b3a, 0x13e2: 0x8b6a, 0x13e3: 0x8b9a,\n\t0x13e4: 0x8bc9, 0x13e5: 0x8bf1, 0x13e6: 0x7c71, 0x13e7: 0x8c19, 0x13e8: 0x7be1, 0x13e9: 0x7c99,\n\t0x13ea: 0x8c41, 0x13eb: 0x8c69, 0x13ec: 0x7d39, 0x13ed: 0x8c91, 0x13ee: 0x7d61, 0x13ef: 0x7d89,\n\t0x13f0: 0x8cb9, 0x13f1: 0x8ce1, 0x13f2: 0x7e29, 0x13f3: 0x8d09, 0x13f4: 0x7e51, 0x13f5: 0x7e79,\n\t0x13f6: 0x8d31, 0x13f7: 0x8d59, 0x13f8: 0x7ec9, 0x13f9: 0x8d81, 0x13fa: 0x7ef1, 0x13fb: 0x7f19,\n\t0x13fc: 0x83a1, 0x13fd: 0x83c9, 0x13fe: 0x8441, 0x13ff: 0x8469,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x8491, 0x1401: 0x8531, 0x1402: 0x8559, 0x1403: 0x8581, 0x1404: 0x85a9, 0x1405: 0x8649,\n\t0x1406: 0x8671, 0x1407: 0x8699, 0x1408: 0x8da9, 0x1409: 0x8739, 0x140a: 0x8dd1, 0x140b: 0x8df9,\n\t0x140c: 0x8829, 0x140d: 0x8e21, 0x140e: 0x8851, 0x140f: 0x8879, 0x1410: 0x8a81, 0x1411: 0x8e49,\n\t0x1412: 0x8e71, 0x1413: 0x89b9, 0x1414: 0x8e99, 0x1415: 0x89e1, 0x1416: 0x8a09, 0x1417: 0x7c21,\n\t0x1418: 0x7c49, 0x1419: 0x8ec1, 0x141a: 0x7c71, 0x141b: 0x8ee9, 0x141c: 0x7cc1, 0x141d: 0x7ce9,\n\t0x141e: 0x7d11, 0x141f: 0x7d39, 0x1420: 0x8f11, 0x1421: 0x7db1, 0x1422: 0x7dd9, 0x1423: 0x7e01,\n\t0x1424: 0x7e29, 0x1425: 0x8f39, 0x1426: 0x7ec9, 0x1427: 0x7f41, 0x1428: 0x7f69, 0x1429: 0x7f91,\n\t0x142a: 0x7fb9, 0x142b: 0x7fe1, 0x142c: 0x8031, 0x142d: 0x8059, 0x142e: 0x8081, 0x142f: 0x80a9,\n\t0x1430: 0x80d1, 0x1431: 0x80f9, 0x1432: 0x8f61, 0x1433: 0x8121, 0x1434: 0x8149, 0x1435: 0x8171,\n\t0x1436: 0x8199, 0x1437: 0x81c1, 0x1438: 0x81e9, 0x1439: 0x8239, 0x143a: 0x8261, 0x143b: 0x8289,\n\t0x143c: 0x82b1, 0x143d: 0x82d9, 0x143e: 0x8301, 0x143f: 0x8329,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x8351, 0x1441: 0x8379, 0x1442: 0x83f1, 0x1443: 0x8419, 0x1444: 0x84b9, 0x1445: 0x84e1,\n\t0x1446: 0x8509, 0x1447: 0x8531, 0x1448: 0x8559, 0x1449: 0x85d1, 0x144a: 0x85f9, 0x144b: 0x8621,\n\t0x144c: 0x8649, 0x144d: 0x8f89, 0x144e: 0x86c1, 0x144f: 0x86e9, 0x1450: 0x8711, 0x1451: 0x8739,\n\t0x1452: 0x87b1, 0x1453: 0x87d9, 0x1454: 0x8801, 0x1455: 0x8829, 0x1456: 0x8fb1, 0x1457: 0x88a1,\n\t0x1458: 0x88c9, 0x1459: 0x8fd9, 0x145a: 0x8941, 0x145b: 0x8969, 0x145c: 0x8991, 0x145d: 0x89b9,\n\t0x145e: 0x9001, 0x145f: 0x7c71, 0x1460: 0x8ee9, 0x1461: 0x7d39, 0x1462: 0x8f11, 0x1463: 0x7e29,\n\t0x1464: 0x8f39, 0x1465: 0x7ec9, 0x1466: 0x9029, 0x1467: 0x80d1, 0x1468: 0x9051, 0x1469: 0x9079,\n\t0x146a: 0x90a1, 0x146b: 0x8531, 0x146c: 0x8559, 0x146d: 0x8649, 0x146e: 0x8829, 0x146f: 0x8fb1,\n\t0x1470: 0x89b9, 0x1471: 0x9001, 0x1472: 0x90c9, 0x1473: 0x9101, 0x1474: 0x9139, 0x1475: 0x9171,\n\t0x1476: 0x9199, 0x1477: 0x91c1, 0x1478: 0x91e9, 0x1479: 0x9211, 0x147a: 0x9239, 0x147b: 0x9261,\n\t0x147c: 0x9289, 0x147d: 0x92b1, 0x147e: 0x92d9, 0x147f: 0x9301,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x9329, 0x1481: 0x9351, 0x1482: 0x9379, 0x1483: 0x93a1, 0x1484: 0x93c9, 0x1485: 0x93f1,\n\t0x1486: 0x9419, 0x1487: 0x9441, 0x1488: 0x9469, 0x1489: 0x9491, 0x148a: 0x94b9, 0x148b: 0x94e1,\n\t0x148c: 0x9079, 0x148d: 0x9509, 0x148e: 0x9531, 0x148f: 0x9559, 0x1490: 0x9581, 0x1491: 0x9171,\n\t0x1492: 0x9199, 0x1493: 0x91c1, 0x1494: 0x91e9, 0x1495: 0x9211, 0x1496: 0x9239, 0x1497: 0x9261,\n\t0x1498: 0x9289, 0x1499: 0x92b1, 0x149a: 0x92d9, 0x149b: 0x9301, 0x149c: 0x9329, 0x149d: 0x9351,\n\t0x149e: 0x9379, 0x149f: 0x93a1, 0x14a0: 0x93c9, 0x14a1: 0x93f1, 0x14a2: 0x9419, 0x14a3: 0x9441,\n\t0x14a4: 0x9469, 0x14a5: 0x9491, 0x14a6: 0x94b9, 0x14a7: 0x94e1, 0x14a8: 0x9079, 0x14a9: 0x9509,\n\t0x14aa: 0x9531, 0x14ab: 0x9559, 0x14ac: 0x9581, 0x14ad: 0x9491, 0x14ae: 0x94b9, 0x14af: 0x94e1,\n\t0x14b0: 0x9079, 0x14b1: 0x9051, 0x14b2: 0x90a1, 0x14b3: 0x8211, 0x14b4: 0x8059, 0x14b5: 0x8081,\n\t0x14b6: 0x80a9, 0x14b7: 0x9491, 0x14b8: 0x94b9, 0x14b9: 0x94e1, 0x14ba: 0x8211, 0x14bb: 0x8239,\n\t0x14bc: 0x95a9, 0x14bd: 0x95a9, 0x14be: 0x0018, 0x14bf: 0x0018,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x0040, 0x14c1: 0x0040, 0x14c2: 0x0040, 0x14c3: 0x0040, 0x14c4: 0x0040, 0x14c5: 0x0040,\n\t0x14c6: 0x0040, 0x14c7: 0x0040, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040,\n\t0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x95d1, 0x14d1: 0x9609,\n\t0x14d2: 0x9609, 0x14d3: 0x9641, 0x14d4: 0x9679, 0x14d5: 0x96b1, 0x14d6: 0x96e9, 0x14d7: 0x9721,\n\t0x14d8: 0x9759, 0x14d9: 0x9759, 0x14da: 0x9791, 0x14db: 0x97c9, 0x14dc: 0x9801, 0x14dd: 0x9839,\n\t0x14de: 0x9871, 0x14df: 0x98a9, 0x14e0: 0x98a9, 0x14e1: 0x98e1, 0x14e2: 0x9919, 0x14e3: 0x9919,\n\t0x14e4: 0x9951, 0x14e5: 0x9951, 0x14e6: 0x9989, 0x14e7: 0x99c1, 0x14e8: 0x99c1, 0x14e9: 0x99f9,\n\t0x14ea: 0x9a31, 0x14eb: 0x9a31, 0x14ec: 0x9a69, 0x14ed: 0x9a69, 0x14ee: 0x9aa1, 0x14ef: 0x9ad9,\n\t0x14f0: 0x9ad9, 0x14f1: 0x9b11, 0x14f2: 0x9b11, 0x14f3: 0x9b49, 0x14f4: 0x9b81, 0x14f5: 0x9bb9,\n\t0x14f6: 0x9bf1, 0x14f7: 0x9bf1, 0x14f8: 0x9c29, 0x14f9: 0x9c61, 0x14fa: 0x9c99, 0x14fb: 0x9cd1,\n\t0x14fc: 0x9d09, 0x14fd: 0x9d09, 0x14fe: 0x9d41, 0x14ff: 0x9d79,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0xa949, 0x1501: 0xa981, 0x1502: 0xa9b9, 0x1503: 0xa8a1, 0x1504: 0x9bb9, 0x1505: 0x9989,\n\t0x1506: 0xa9f1, 0x1507: 0xaa29, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040,\n\t0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0040, 0x1510: 0x0040, 0x1511: 0x0040,\n\t0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040,\n\t0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040,\n\t0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040,\n\t0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040,\n\t0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040,\n\t0x1530: 0xaa61, 0x1531: 0xaa99, 0x1532: 0xaad1, 0x1533: 0xab19, 0x1534: 0xab61, 0x1535: 0xaba9,\n\t0x1536: 0xabf1, 0x1537: 0xac39, 0x1538: 0xac81, 0x1539: 0xacc9, 0x153a: 0xad02, 0x153b: 0xae12,\n\t0x153c: 0xae91, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0,\n\t0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0,\n\t0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0xaeda, 0x1551: 0x7d55,\n\t0x1552: 0x0040, 0x1553: 0xaeea, 0x1554: 0x03c2, 0x1555: 0xaefa, 0x1556: 0xaf0a, 0x1557: 0x7d75,\n\t0x1558: 0x7d95, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040,\n\t0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308,\n\t0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308,\n\t0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308,\n\t0x1570: 0x0040, 0x1571: 0x7db5, 0x1572: 0x7dd5, 0x1573: 0xaf1a, 0x1574: 0xaf1a, 0x1575: 0x1fd2,\n\t0x1576: 0x1fe2, 0x1577: 0xaf2a, 0x1578: 0xaf3a, 0x1579: 0x7df5, 0x157a: 0x7e15, 0x157b: 0x7e35,\n\t0x157c: 0x7df5, 0x157d: 0x7e55, 0x157e: 0x7e75, 0x157f: 0x7e55,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x7e95, 0x1581: 0x7eb5, 0x1582: 0x7ed5, 0x1583: 0x7eb5, 0x1584: 0x7ef5, 0x1585: 0x0018,\n\t0x1586: 0x0018, 0x1587: 0xaf4a, 0x1588: 0xaf5a, 0x1589: 0x7f16, 0x158a: 0x7f36, 0x158b: 0x7f56,\n\t0x158c: 0x7f76, 0x158d: 0xaf1a, 0x158e: 0xaf1a, 0x158f: 0xaf1a, 0x1590: 0xaeda, 0x1591: 0x7f95,\n\t0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaeea, 0x1596: 0xaf0a, 0x1597: 0xaefa,\n\t0x1598: 0x7fb5, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf2a, 0x159c: 0xaf3a, 0x159d: 0x7e95,\n\t0x159e: 0x7ef5, 0x159f: 0xaf6a, 0x15a0: 0xaf7a, 0x15a1: 0xaf8a, 0x15a2: 0x1fb2, 0x15a3: 0xaf99,\n\t0x15a4: 0xafaa, 0x15a5: 0xafba, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xafca, 0x15a9: 0xafda,\n\t0x15aa: 0xafea, 0x15ab: 0xaffa, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040,\n\t0x15b0: 0x7fd6, 0x15b1: 0xb009, 0x15b2: 0x7ff6, 0x15b3: 0x0808, 0x15b4: 0x8016, 0x15b5: 0x0040,\n\t0x15b6: 0x8036, 0x15b7: 0xb031, 0x15b8: 0x8056, 0x15b9: 0xb059, 0x15ba: 0x8076, 0x15bb: 0xb081,\n\t0x15bc: 0x8096, 0x15bd: 0xb0a9, 0x15be: 0x80b6, 0x15bf: 0xb0d1,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0xb0f9, 0x15c1: 0xb111, 0x15c2: 0xb111, 0x15c3: 0xb129, 0x15c4: 0xb129, 0x15c5: 0xb141,\n\t0x15c6: 0xb141, 0x15c7: 0xb159, 0x15c8: 0xb159, 0x15c9: 0xb171, 0x15ca: 0xb171, 0x15cb: 0xb171,\n\t0x15cc: 0xb171, 0x15cd: 0xb189, 0x15ce: 0xb189, 0x15cf: 0xb1a1, 0x15d0: 0xb1a1, 0x15d1: 0xb1a1,\n\t0x15d2: 0xb1a1, 0x15d3: 0xb1b9, 0x15d4: 0xb1b9, 0x15d5: 0xb1d1, 0x15d6: 0xb1d1, 0x15d7: 0xb1d1,\n\t0x15d8: 0xb1d1, 0x15d9: 0xb1e9, 0x15da: 0xb1e9, 0x15db: 0xb1e9, 0x15dc: 0xb1e9, 0x15dd: 0xb201,\n\t0x15de: 0xb201, 0x15df: 0xb201, 0x15e0: 0xb201, 0x15e1: 0xb219, 0x15e2: 0xb219, 0x15e3: 0xb219,\n\t0x15e4: 0xb219, 0x15e5: 0xb231, 0x15e6: 0xb231, 0x15e7: 0xb231, 0x15e8: 0xb231, 0x15e9: 0xb249,\n\t0x15ea: 0xb249, 0x15eb: 0xb261, 0x15ec: 0xb261, 0x15ed: 0xb279, 0x15ee: 0xb279, 0x15ef: 0xb291,\n\t0x15f0: 0xb291, 0x15f1: 0xb2a9, 0x15f2: 0xb2a9, 0x15f3: 0xb2a9, 0x15f4: 0xb2a9, 0x15f5: 0xb2c1,\n\t0x15f6: 0xb2c1, 0x15f7: 0xb2c1, 0x15f8: 0xb2c1, 0x15f9: 0xb2d9, 0x15fa: 0xb2d9, 0x15fb: 0xb2d9,\n\t0x15fc: 0xb2d9, 0x15fd: 0xb2f1, 0x15fe: 0xb2f1, 0x15ff: 0xb2f1,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0xb2f1, 0x1601: 0xb309, 0x1602: 0xb309, 0x1603: 0xb309, 0x1604: 0xb309, 0x1605: 0xb321,\n\t0x1606: 0xb321, 0x1607: 0xb321, 0x1608: 0xb321, 0x1609: 0xb339, 0x160a: 0xb339, 0x160b: 0xb339,\n\t0x160c: 0xb339, 0x160d: 0xb351, 0x160e: 0xb351, 0x160f: 0xb351, 0x1610: 0xb351, 0x1611: 0xb369,\n\t0x1612: 0xb369, 0x1613: 0xb369, 0x1614: 0xb369, 0x1615: 0xb381, 0x1616: 0xb381, 0x1617: 0xb381,\n\t0x1618: 0xb381, 0x1619: 0xb399, 0x161a: 0xb399, 0x161b: 0xb399, 0x161c: 0xb399, 0x161d: 0xb3b1,\n\t0x161e: 0xb3b1, 0x161f: 0xb3b1, 0x1620: 0xb3b1, 0x1621: 0xb3c9, 0x1622: 0xb3c9, 0x1623: 0xb3c9,\n\t0x1624: 0xb3c9, 0x1625: 0xb3e1, 0x1626: 0xb3e1, 0x1627: 0xb3e1, 0x1628: 0xb3e1, 0x1629: 0xb3f9,\n\t0x162a: 0xb3f9, 0x162b: 0xb3f9, 0x162c: 0xb3f9, 0x162d: 0xb411, 0x162e: 0xb411, 0x162f: 0x7ab1,\n\t0x1630: 0x7ab1, 0x1631: 0xb429, 0x1632: 0xb429, 0x1633: 0xb429, 0x1634: 0xb429, 0x1635: 0xb441,\n\t0x1636: 0xb441, 0x1637: 0xb469, 0x1638: 0xb469, 0x1639: 0xb491, 0x163a: 0xb491, 0x163b: 0xb4b9,\n\t0x163c: 0xb4b9, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0040, 0x1641: 0xaefa, 0x1642: 0xb4e2, 0x1643: 0xaf6a, 0x1644: 0xafda, 0x1645: 0xafea,\n\t0x1646: 0xaf7a, 0x1647: 0xb4f2, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xaf8a, 0x164b: 0x1fb2,\n\t0x164c: 0xaeda, 0x164d: 0xaf99, 0x164e: 0x29d1, 0x164f: 0xb502, 0x1650: 0x1f41, 0x1651: 0x00c9,\n\t0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81,\n\t0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaeea, 0x165b: 0x03c2, 0x165c: 0xafaa, 0x165d: 0x1fc2,\n\t0x165e: 0xafba, 0x165f: 0xaf0a, 0x1660: 0xaffa, 0x1661: 0x0039, 0x1662: 0x0ee9, 0x1663: 0x1159,\n\t0x1664: 0x0ef9, 0x1665: 0x0f09, 0x1666: 0x1199, 0x1667: 0x0f31, 0x1668: 0x0249, 0x1669: 0x0f41,\n\t0x166a: 0x0259, 0x166b: 0x0f51, 0x166c: 0x0359, 0x166d: 0x0f61, 0x166e: 0x0f71, 0x166f: 0x00d9,\n\t0x1670: 0x0f99, 0x1671: 0x2039, 0x1672: 0x0269, 0x1673: 0x01d9, 0x1674: 0x0fa9, 0x1675: 0x0fb9,\n\t0x1676: 0x1089, 0x1677: 0x0279, 0x1678: 0x0369, 0x1679: 0x0289, 0x167a: 0x13d1, 0x167b: 0xaf4a,\n\t0x167c: 0xafca, 0x167d: 0xaf5a, 0x167e: 0xb512, 0x167f: 0xaf1a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x1caa, 0x1681: 0x0039, 0x1682: 0x0ee9, 0x1683: 0x1159, 0x1684: 0x0ef9, 0x1685: 0x0f09,\n\t0x1686: 0x1199, 0x1687: 0x0f31, 0x1688: 0x0249, 0x1689: 0x0f41, 0x168a: 0x0259, 0x168b: 0x0f51,\n\t0x168c: 0x0359, 0x168d: 0x0f61, 0x168e: 0x0f71, 0x168f: 0x00d9, 0x1690: 0x0f99, 0x1691: 0x2039,\n\t0x1692: 0x0269, 0x1693: 0x01d9, 0x1694: 0x0fa9, 0x1695: 0x0fb9, 0x1696: 0x1089, 0x1697: 0x0279,\n\t0x1698: 0x0369, 0x1699: 0x0289, 0x169a: 0x13d1, 0x169b: 0xaf2a, 0x169c: 0xb522, 0x169d: 0xaf3a,\n\t0x169e: 0xb532, 0x169f: 0x80d5, 0x16a0: 0x80f5, 0x16a1: 0x29d1, 0x16a2: 0x8115, 0x16a3: 0x8115,\n\t0x16a4: 0x8135, 0x16a5: 0x8155, 0x16a6: 0x8175, 0x16a7: 0x8195, 0x16a8: 0x81b5, 0x16a9: 0x81d5,\n\t0x16aa: 0x81f5, 0x16ab: 0x8215, 0x16ac: 0x8235, 0x16ad: 0x8255, 0x16ae: 0x8275, 0x16af: 0x8295,\n\t0x16b0: 0x82b5, 0x16b1: 0x82d5, 0x16b2: 0x82f5, 0x16b3: 0x8315, 0x16b4: 0x8335, 0x16b5: 0x8355,\n\t0x16b6: 0x8375, 0x16b7: 0x8395, 0x16b8: 0x83b5, 0x16b9: 0x83d5, 0x16ba: 0x83f5, 0x16bb: 0x8415,\n\t0x16bc: 0x81b5, 0x16bd: 0x8435, 0x16be: 0x8455, 0x16bf: 0x8215,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x8475, 0x16c1: 0x8495, 0x16c2: 0x84b5, 0x16c3: 0x84d5, 0x16c4: 0x84f5, 0x16c5: 0x8515,\n\t0x16c6: 0x8535, 0x16c7: 0x8555, 0x16c8: 0x84d5, 0x16c9: 0x8575, 0x16ca: 0x84d5, 0x16cb: 0x8595,\n\t0x16cc: 0x8595, 0x16cd: 0x85b5, 0x16ce: 0x85b5, 0x16cf: 0x85d5, 0x16d0: 0x8515, 0x16d1: 0x85f5,\n\t0x16d2: 0x8615, 0x16d3: 0x85f5, 0x16d4: 0x8635, 0x16d5: 0x8615, 0x16d6: 0x8655, 0x16d7: 0x8655,\n\t0x16d8: 0x8675, 0x16d9: 0x8675, 0x16da: 0x8695, 0x16db: 0x8695, 0x16dc: 0x8615, 0x16dd: 0x8115,\n\t0x16de: 0x86b5, 0x16df: 0x86d5, 0x16e0: 0x0040, 0x16e1: 0x86f5, 0x16e2: 0x8715, 0x16e3: 0x8735,\n\t0x16e4: 0x8755, 0x16e5: 0x8735, 0x16e6: 0x8775, 0x16e7: 0x8795, 0x16e8: 0x87b5, 0x16e9: 0x87b5,\n\t0x16ea: 0x87d5, 0x16eb: 0x87d5, 0x16ec: 0x87f5, 0x16ed: 0x87f5, 0x16ee: 0x87d5, 0x16ef: 0x87d5,\n\t0x16f0: 0x8815, 0x16f1: 0x8835, 0x16f2: 0x8855, 0x16f3: 0x8875, 0x16f4: 0x8895, 0x16f5: 0x88b5,\n\t0x16f6: 0x88b5, 0x16f7: 0x88b5, 0x16f8: 0x88d5, 0x16f9: 0x88d5, 0x16fa: 0x88d5, 0x16fb: 0x88d5,\n\t0x16fc: 0x87b5, 0x16fd: 0x87b5, 0x16fe: 0x87b5, 0x16ff: 0x0040,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x8715, 0x1703: 0x86f5, 0x1704: 0x88f5, 0x1705: 0x86f5,\n\t0x1706: 0x8715, 0x1707: 0x86f5, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x8915, 0x170b: 0x8715,\n\t0x170c: 0x8935, 0x170d: 0x88f5, 0x170e: 0x8935, 0x170f: 0x8715, 0x1710: 0x0040, 0x1711: 0x0040,\n\t0x1712: 0x8955, 0x1713: 0x8975, 0x1714: 0x8875, 0x1715: 0x8935, 0x1716: 0x88f5, 0x1717: 0x8935,\n\t0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x8995, 0x171b: 0x89b5, 0x171c: 0x8995, 0x171d: 0x0040,\n\t0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb541, 0x1721: 0xb559, 0x1722: 0xb571, 0x1723: 0x89d6,\n\t0x1724: 0xb589, 0x1725: 0xb5a1, 0x1726: 0x89f5, 0x1727: 0x0040, 0x1728: 0x8a15, 0x1729: 0x8a35,\n\t0x172a: 0x8a55, 0x172b: 0x8a35, 0x172c: 0x8a75, 0x172d: 0x8a95, 0x172e: 0x8ab5, 0x172f: 0x0040,\n\t0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040,\n\t0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340,\n\t0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x0a08, 0x1741: 0x0a08, 0x1742: 0x0a08, 0x1743: 0x0a08, 0x1744: 0x0a08, 0x1745: 0x0c08,\n\t0x1746: 0x0808, 0x1747: 0x0c08, 0x1748: 0x0818, 0x1749: 0x0c08, 0x174a: 0x0c08, 0x174b: 0x0808,\n\t0x174c: 0x0808, 0x174d: 0x0908, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0c08, 0x1751: 0x0c08,\n\t0x1752: 0x0c08, 0x1753: 0x0a08, 0x1754: 0x0a08, 0x1755: 0x0a08, 0x1756: 0x0a08, 0x1757: 0x0908,\n\t0x1758: 0x0a08, 0x1759: 0x0a08, 0x175a: 0x0a08, 0x175b: 0x0a08, 0x175c: 0x0a08, 0x175d: 0x0c08,\n\t0x175e: 0x0a08, 0x175f: 0x0a08, 0x1760: 0x0a08, 0x1761: 0x0c08, 0x1762: 0x0808, 0x1763: 0x0808,\n\t0x1764: 0x0c08, 0x1765: 0x3308, 0x1766: 0x3308, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040,\n\t0x176a: 0x0040, 0x176b: 0x0a18, 0x176c: 0x0a18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0c18,\n\t0x1770: 0x0818, 0x1771: 0x0818, 0x1772: 0x0818, 0x1773: 0x0818, 0x1774: 0x0818, 0x1775: 0x0818,\n\t0x1776: 0x0818, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040,\n\t0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x0a08, 0x1781: 0x0c08, 0x1782: 0x0a08, 0x1783: 0x0c08, 0x1784: 0x0c08, 0x1785: 0x0c08,\n\t0x1786: 0x0a08, 0x1787: 0x0a08, 0x1788: 0x0a08, 0x1789: 0x0c08, 0x178a: 0x0a08, 0x178b: 0x0a08,\n\t0x178c: 0x0c08, 0x178d: 0x0a08, 0x178e: 0x0c08, 0x178f: 0x0c08, 0x1790: 0x0a08, 0x1791: 0x0c08,\n\t0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x0040,\n\t0x1798: 0x0040, 0x1799: 0x0818, 0x179a: 0x0818, 0x179b: 0x0818, 0x179c: 0x0818, 0x179d: 0x0040,\n\t0x179e: 0x0040, 0x179f: 0x0040, 0x17a0: 0x0040, 0x17a1: 0x0040, 0x17a2: 0x0040, 0x17a3: 0x0040,\n\t0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x0040, 0x17a7: 0x0040, 0x17a8: 0x0040, 0x17a9: 0x0c18,\n\t0x17aa: 0x0c18, 0x17ab: 0x0c18, 0x17ac: 0x0c18, 0x17ad: 0x0a18, 0x17ae: 0x0a18, 0x17af: 0x0818,\n\t0x17b0: 0x0040, 0x17b1: 0x0040, 0x17b2: 0x0040, 0x17b3: 0x0040, 0x17b4: 0x0040, 0x17b5: 0x0040,\n\t0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040,\n\t0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x3308, 0x17c1: 0x3308, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x0040, 0x17c5: 0x0008,\n\t0x17c6: 0x0008, 0x17c7: 0x0008, 0x17c8: 0x0008, 0x17c9: 0x0008, 0x17ca: 0x0008, 0x17cb: 0x0008,\n\t0x17cc: 0x0008, 0x17cd: 0x0040, 0x17ce: 0x0040, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0040,\n\t0x17d2: 0x0040, 0x17d3: 0x0008, 0x17d4: 0x0008, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0008,\n\t0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008,\n\t0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008,\n\t0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0040,\n\t0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008,\n\t0x17f0: 0x0008, 0x17f1: 0x0040, 0x17f2: 0x0008, 0x17f3: 0x0008, 0x17f4: 0x0040, 0x17f5: 0x0008,\n\t0x17f6: 0x0008, 0x17f7: 0x0008, 0x17f8: 0x0008, 0x17f9: 0x0008, 0x17fa: 0x0040, 0x17fb: 0x0040,\n\t0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x3308, 0x1801: 0x3008, 0x1802: 0x3008, 0x1803: 0x3008, 0x1804: 0x3008, 0x1805: 0x0040,\n\t0x1806: 0x0040, 0x1807: 0x3008, 0x1808: 0x3008, 0x1809: 0x0040, 0x180a: 0x0040, 0x180b: 0x3008,\n\t0x180c: 0x3008, 0x180d: 0x3808, 0x180e: 0x0040, 0x180f: 0x0040, 0x1810: 0x0008, 0x1811: 0x0040,\n\t0x1812: 0x0040, 0x1813: 0x0040, 0x1814: 0x0040, 0x1815: 0x0040, 0x1816: 0x0040, 0x1817: 0x3008,\n\t0x1818: 0x0040, 0x1819: 0x0040, 0x181a: 0x0040, 0x181b: 0x0040, 0x181c: 0x0040, 0x181d: 0x0008,\n\t0x181e: 0x0008, 0x181f: 0x0008, 0x1820: 0x0008, 0x1821: 0x0008, 0x1822: 0x3008, 0x1823: 0x3008,\n\t0x1824: 0x0040, 0x1825: 0x0040, 0x1826: 0x3308, 0x1827: 0x3308, 0x1828: 0x3308, 0x1829: 0x3308,\n\t0x182a: 0x3308, 0x182b: 0x3308, 0x182c: 0x3308, 0x182d: 0x0040, 0x182e: 0x0040, 0x182f: 0x0040,\n\t0x1830: 0x3308, 0x1831: 0x3308, 0x1832: 0x3308, 0x1833: 0x3308, 0x1834: 0x3308, 0x1835: 0x0040,\n\t0x1836: 0x0040, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040,\n\t0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x0039, 0x1841: 0x0ee9, 0x1842: 0x1159, 0x1843: 0x0ef9, 0x1844: 0x0f09, 0x1845: 0x1199,\n\t0x1846: 0x0f31, 0x1847: 0x0249, 0x1848: 0x0f41, 0x1849: 0x0259, 0x184a: 0x0f51, 0x184b: 0x0359,\n\t0x184c: 0x0f61, 0x184d: 0x0f71, 0x184e: 0x00d9, 0x184f: 0x0f99, 0x1850: 0x2039, 0x1851: 0x0269,\n\t0x1852: 0x01d9, 0x1853: 0x0fa9, 0x1854: 0x0fb9, 0x1855: 0x1089, 0x1856: 0x0279, 0x1857: 0x0369,\n\t0x1858: 0x0289, 0x1859: 0x13d1, 0x185a: 0x0039, 0x185b: 0x0ee9, 0x185c: 0x1159, 0x185d: 0x0ef9,\n\t0x185e: 0x0f09, 0x185f: 0x1199, 0x1860: 0x0f31, 0x1861: 0x0249, 0x1862: 0x0f41, 0x1863: 0x0259,\n\t0x1864: 0x0f51, 0x1865: 0x0359, 0x1866: 0x0f61, 0x1867: 0x0f71, 0x1868: 0x00d9, 0x1869: 0x0f99,\n\t0x186a: 0x2039, 0x186b: 0x0269, 0x186c: 0x01d9, 0x186d: 0x0fa9, 0x186e: 0x0fb9, 0x186f: 0x1089,\n\t0x1870: 0x0279, 0x1871: 0x0369, 0x1872: 0x0289, 0x1873: 0x13d1, 0x1874: 0x0039, 0x1875: 0x0ee9,\n\t0x1876: 0x1159, 0x1877: 0x0ef9, 0x1878: 0x0f09, 0x1879: 0x1199, 0x187a: 0x0f31, 0x187b: 0x0249,\n\t0x187c: 0x0f41, 0x187d: 0x0259, 0x187e: 0x0f51, 0x187f: 0x0359,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x0f61, 0x1881: 0x0f71, 0x1882: 0x00d9, 0x1883: 0x0f99, 0x1884: 0x2039, 0x1885: 0x0269,\n\t0x1886: 0x01d9, 0x1887: 0x0fa9, 0x1888: 0x0fb9, 0x1889: 0x1089, 0x188a: 0x0279, 0x188b: 0x0369,\n\t0x188c: 0x0289, 0x188d: 0x13d1, 0x188e: 0x0039, 0x188f: 0x0ee9, 0x1890: 0x1159, 0x1891: 0x0ef9,\n\t0x1892: 0x0f09, 0x1893: 0x1199, 0x1894: 0x0f31, 0x1895: 0x0040, 0x1896: 0x0f41, 0x1897: 0x0259,\n\t0x1898: 0x0f51, 0x1899: 0x0359, 0x189a: 0x0f61, 0x189b: 0x0f71, 0x189c: 0x00d9, 0x189d: 0x0f99,\n\t0x189e: 0x2039, 0x189f: 0x0269, 0x18a0: 0x01d9, 0x18a1: 0x0fa9, 0x18a2: 0x0fb9, 0x18a3: 0x1089,\n\t0x18a4: 0x0279, 0x18a5: 0x0369, 0x18a6: 0x0289, 0x18a7: 0x13d1, 0x18a8: 0x0039, 0x18a9: 0x0ee9,\n\t0x18aa: 0x1159, 0x18ab: 0x0ef9, 0x18ac: 0x0f09, 0x18ad: 0x1199, 0x18ae: 0x0f31, 0x18af: 0x0249,\n\t0x18b0: 0x0f41, 0x18b1: 0x0259, 0x18b2: 0x0f51, 0x18b3: 0x0359, 0x18b4: 0x0f61, 0x18b5: 0x0f71,\n\t0x18b6: 0x00d9, 0x18b7: 0x0f99, 0x18b8: 0x2039, 0x18b9: 0x0269, 0x18ba: 0x01d9, 0x18bb: 0x0fa9,\n\t0x18bc: 0x0fb9, 0x18bd: 0x1089, 0x18be: 0x0279, 0x18bf: 0x0369,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x0289, 0x18c1: 0x13d1, 0x18c2: 0x0039, 0x18c3: 0x0ee9, 0x18c4: 0x1159, 0x18c5: 0x0ef9,\n\t0x18c6: 0x0f09, 0x18c7: 0x1199, 0x18c8: 0x0f31, 0x18c9: 0x0249, 0x18ca: 0x0f41, 0x18cb: 0x0259,\n\t0x18cc: 0x0f51, 0x18cd: 0x0359, 0x18ce: 0x0f61, 0x18cf: 0x0f71, 0x18d0: 0x00d9, 0x18d1: 0x0f99,\n\t0x18d2: 0x2039, 0x18d3: 0x0269, 0x18d4: 0x01d9, 0x18d5: 0x0fa9, 0x18d6: 0x0fb9, 0x18d7: 0x1089,\n\t0x18d8: 0x0279, 0x18d9: 0x0369, 0x18da: 0x0289, 0x18db: 0x13d1, 0x18dc: 0x0039, 0x18dd: 0x0040,\n\t0x18de: 0x1159, 0x18df: 0x0ef9, 0x18e0: 0x0040, 0x18e1: 0x0040, 0x18e2: 0x0f31, 0x18e3: 0x0040,\n\t0x18e4: 0x0040, 0x18e5: 0x0259, 0x18e6: 0x0f51, 0x18e7: 0x0040, 0x18e8: 0x0040, 0x18e9: 0x0f71,\n\t0x18ea: 0x00d9, 0x18eb: 0x0f99, 0x18ec: 0x2039, 0x18ed: 0x0040, 0x18ee: 0x01d9, 0x18ef: 0x0fa9,\n\t0x18f0: 0x0fb9, 0x18f1: 0x1089, 0x18f2: 0x0279, 0x18f3: 0x0369, 0x18f4: 0x0289, 0x18f5: 0x13d1,\n\t0x18f6: 0x0039, 0x18f7: 0x0ee9, 0x18f8: 0x1159, 0x18f9: 0x0ef9, 0x18fa: 0x0040, 0x18fb: 0x1199,\n\t0x18fc: 0x0040, 0x18fd: 0x0249, 0x18fe: 0x0f41, 0x18ff: 0x0259,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x0f51, 0x1901: 0x0359, 0x1902: 0x0f61, 0x1903: 0x0f71, 0x1904: 0x0040, 0x1905: 0x0f99,\n\t0x1906: 0x2039, 0x1907: 0x0269, 0x1908: 0x01d9, 0x1909: 0x0fa9, 0x190a: 0x0fb9, 0x190b: 0x1089,\n\t0x190c: 0x0279, 0x190d: 0x0369, 0x190e: 0x0289, 0x190f: 0x13d1, 0x1910: 0x0039, 0x1911: 0x0ee9,\n\t0x1912: 0x1159, 0x1913: 0x0ef9, 0x1914: 0x0f09, 0x1915: 0x1199, 0x1916: 0x0f31, 0x1917: 0x0249,\n\t0x1918: 0x0f41, 0x1919: 0x0259, 0x191a: 0x0f51, 0x191b: 0x0359, 0x191c: 0x0f61, 0x191d: 0x0f71,\n\t0x191e: 0x00d9, 0x191f: 0x0f99, 0x1920: 0x2039, 0x1921: 0x0269, 0x1922: 0x01d9, 0x1923: 0x0fa9,\n\t0x1924: 0x0fb9, 0x1925: 0x1089, 0x1926: 0x0279, 0x1927: 0x0369, 0x1928: 0x0289, 0x1929: 0x13d1,\n\t0x192a: 0x0039, 0x192b: 0x0ee9, 0x192c: 0x1159, 0x192d: 0x0ef9, 0x192e: 0x0f09, 0x192f: 0x1199,\n\t0x1930: 0x0f31, 0x1931: 0x0249, 0x1932: 0x0f41, 0x1933: 0x0259, 0x1934: 0x0f51, 0x1935: 0x0359,\n\t0x1936: 0x0f61, 0x1937: 0x0f71, 0x1938: 0x00d9, 0x1939: 0x0f99, 0x193a: 0x2039, 0x193b: 0x0269,\n\t0x193c: 0x01d9, 0x193d: 0x0fa9, 0x193e: 0x0fb9, 0x193f: 0x1089,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x0279, 0x1941: 0x0369, 0x1942: 0x0289, 0x1943: 0x13d1, 0x1944: 0x0039, 0x1945: 0x0ee9,\n\t0x1946: 0x0040, 0x1947: 0x0ef9, 0x1948: 0x0f09, 0x1949: 0x1199, 0x194a: 0x0f31, 0x194b: 0x0040,\n\t0x194c: 0x0040, 0x194d: 0x0259, 0x194e: 0x0f51, 0x194f: 0x0359, 0x1950: 0x0f61, 0x1951: 0x0f71,\n\t0x1952: 0x00d9, 0x1953: 0x0f99, 0x1954: 0x2039, 0x1955: 0x0040, 0x1956: 0x01d9, 0x1957: 0x0fa9,\n\t0x1958: 0x0fb9, 0x1959: 0x1089, 0x195a: 0x0279, 0x195b: 0x0369, 0x195c: 0x0289, 0x195d: 0x0040,\n\t0x195e: 0x0039, 0x195f: 0x0ee9, 0x1960: 0x1159, 0x1961: 0x0ef9, 0x1962: 0x0f09, 0x1963: 0x1199,\n\t0x1964: 0x0f31, 0x1965: 0x0249, 0x1966: 0x0f41, 0x1967: 0x0259, 0x1968: 0x0f51, 0x1969: 0x0359,\n\t0x196a: 0x0f61, 0x196b: 0x0f71, 0x196c: 0x00d9, 0x196d: 0x0f99, 0x196e: 0x2039, 0x196f: 0x0269,\n\t0x1970: 0x01d9, 0x1971: 0x0fa9, 0x1972: 0x0fb9, 0x1973: 0x1089, 0x1974: 0x0279, 0x1975: 0x0369,\n\t0x1976: 0x0289, 0x1977: 0x13d1, 0x1978: 0x0039, 0x1979: 0x0ee9, 0x197a: 0x0040, 0x197b: 0x0ef9,\n\t0x197c: 0x0f09, 0x197d: 0x1199, 0x197e: 0x0f31, 0x197f: 0x0040,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x0f41, 0x1981: 0x0259, 0x1982: 0x0f51, 0x1983: 0x0359, 0x1984: 0x0f61, 0x1985: 0x0040,\n\t0x1986: 0x00d9, 0x1987: 0x0040, 0x1988: 0x0040, 0x1989: 0x0040, 0x198a: 0x01d9, 0x198b: 0x0fa9,\n\t0x198c: 0x0fb9, 0x198d: 0x1089, 0x198e: 0x0279, 0x198f: 0x0369, 0x1990: 0x0289, 0x1991: 0x0040,\n\t0x1992: 0x0039, 0x1993: 0x0ee9, 0x1994: 0x1159, 0x1995: 0x0ef9, 0x1996: 0x0f09, 0x1997: 0x1199,\n\t0x1998: 0x0f31, 0x1999: 0x0249, 0x199a: 0x0f41, 0x199b: 0x0259, 0x199c: 0x0f51, 0x199d: 0x0359,\n\t0x199e: 0x0f61, 0x199f: 0x0f71, 0x19a0: 0x00d9, 0x19a1: 0x0f99, 0x19a2: 0x2039, 0x19a3: 0x0269,\n\t0x19a4: 0x01d9, 0x19a5: 0x0fa9, 0x19a6: 0x0fb9, 0x19a7: 0x1089, 0x19a8: 0x0279, 0x19a9: 0x0369,\n\t0x19aa: 0x0289, 0x19ab: 0x13d1, 0x19ac: 0x0039, 0x19ad: 0x0ee9, 0x19ae: 0x1159, 0x19af: 0x0ef9,\n\t0x19b0: 0x0f09, 0x19b1: 0x1199, 0x19b2: 0x0f31, 0x19b3: 0x0249, 0x19b4: 0x0f41, 0x19b5: 0x0259,\n\t0x19b6: 0x0f51, 0x19b7: 0x0359, 0x19b8: 0x0f61, 0x19b9: 0x0f71, 0x19ba: 0x00d9, 0x19bb: 0x0f99,\n\t0x19bc: 0x2039, 0x19bd: 0x0269, 0x19be: 0x01d9, 0x19bf: 0x0fa9,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x0fb9, 0x19c1: 0x1089, 0x19c2: 0x0279, 0x19c3: 0x0369, 0x19c4: 0x0289, 0x19c5: 0x13d1,\n\t0x19c6: 0x0039, 0x19c7: 0x0ee9, 0x19c8: 0x1159, 0x19c9: 0x0ef9, 0x19ca: 0x0f09, 0x19cb: 0x1199,\n\t0x19cc: 0x0f31, 0x19cd: 0x0249, 0x19ce: 0x0f41, 0x19cf: 0x0259, 0x19d0: 0x0f51, 0x19d1: 0x0359,\n\t0x19d2: 0x0f61, 0x19d3: 0x0f71, 0x19d4: 0x00d9, 0x19d5: 0x0f99, 0x19d6: 0x2039, 0x19d7: 0x0269,\n\t0x19d8: 0x01d9, 0x19d9: 0x0fa9, 0x19da: 0x0fb9, 0x19db: 0x1089, 0x19dc: 0x0279, 0x19dd: 0x0369,\n\t0x19de: 0x0289, 0x19df: 0x13d1, 0x19e0: 0x0039, 0x19e1: 0x0ee9, 0x19e2: 0x1159, 0x19e3: 0x0ef9,\n\t0x19e4: 0x0f09, 0x19e5: 0x1199, 0x19e6: 0x0f31, 0x19e7: 0x0249, 0x19e8: 0x0f41, 0x19e9: 0x0259,\n\t0x19ea: 0x0f51, 0x19eb: 0x0359, 0x19ec: 0x0f61, 0x19ed: 0x0f71, 0x19ee: 0x00d9, 0x19ef: 0x0f99,\n\t0x19f0: 0x2039, 0x19f1: 0x0269, 0x19f2: 0x01d9, 0x19f3: 0x0fa9, 0x19f4: 0x0fb9, 0x19f5: 0x1089,\n\t0x19f6: 0x0279, 0x19f7: 0x0369, 0x19f8: 0x0289, 0x19f9: 0x13d1, 0x19fa: 0x0039, 0x19fb: 0x0ee9,\n\t0x19fc: 0x1159, 0x19fd: 0x0ef9, 0x19fe: 0x0f09, 0x19ff: 0x1199,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x0f31, 0x1a01: 0x0249, 0x1a02: 0x0f41, 0x1a03: 0x0259, 0x1a04: 0x0f51, 0x1a05: 0x0359,\n\t0x1a06: 0x0f61, 0x1a07: 0x0f71, 0x1a08: 0x00d9, 0x1a09: 0x0f99, 0x1a0a: 0x2039, 0x1a0b: 0x0269,\n\t0x1a0c: 0x01d9, 0x1a0d: 0x0fa9, 0x1a0e: 0x0fb9, 0x1a0f: 0x1089, 0x1a10: 0x0279, 0x1a11: 0x0369,\n\t0x1a12: 0x0289, 0x1a13: 0x13d1, 0x1a14: 0x0039, 0x1a15: 0x0ee9, 0x1a16: 0x1159, 0x1a17: 0x0ef9,\n\t0x1a18: 0x0f09, 0x1a19: 0x1199, 0x1a1a: 0x0f31, 0x1a1b: 0x0249, 0x1a1c: 0x0f41, 0x1a1d: 0x0259,\n\t0x1a1e: 0x0f51, 0x1a1f: 0x0359, 0x1a20: 0x0f61, 0x1a21: 0x0f71, 0x1a22: 0x00d9, 0x1a23: 0x0f99,\n\t0x1a24: 0x2039, 0x1a25: 0x0269, 0x1a26: 0x01d9, 0x1a27: 0x0fa9, 0x1a28: 0x0fb9, 0x1a29: 0x1089,\n\t0x1a2a: 0x0279, 0x1a2b: 0x0369, 0x1a2c: 0x0289, 0x1a2d: 0x13d1, 0x1a2e: 0x0039, 0x1a2f: 0x0ee9,\n\t0x1a30: 0x1159, 0x1a31: 0x0ef9, 0x1a32: 0x0f09, 0x1a33: 0x1199, 0x1a34: 0x0f31, 0x1a35: 0x0249,\n\t0x1a36: 0x0f41, 0x1a37: 0x0259, 0x1a38: 0x0f51, 0x1a39: 0x0359, 0x1a3a: 0x0f61, 0x1a3b: 0x0f71,\n\t0x1a3c: 0x00d9, 0x1a3d: 0x0f99, 0x1a3e: 0x2039, 0x1a3f: 0x0269,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x01d9, 0x1a41: 0x0fa9, 0x1a42: 0x0fb9, 0x1a43: 0x1089, 0x1a44: 0x0279, 0x1a45: 0x0369,\n\t0x1a46: 0x0289, 0x1a47: 0x13d1, 0x1a48: 0x0039, 0x1a49: 0x0ee9, 0x1a4a: 0x1159, 0x1a4b: 0x0ef9,\n\t0x1a4c: 0x0f09, 0x1a4d: 0x1199, 0x1a4e: 0x0f31, 0x1a4f: 0x0249, 0x1a50: 0x0f41, 0x1a51: 0x0259,\n\t0x1a52: 0x0f51, 0x1a53: 0x0359, 0x1a54: 0x0f61, 0x1a55: 0x0f71, 0x1a56: 0x00d9, 0x1a57: 0x0f99,\n\t0x1a58: 0x2039, 0x1a59: 0x0269, 0x1a5a: 0x01d9, 0x1a5b: 0x0fa9, 0x1a5c: 0x0fb9, 0x1a5d: 0x1089,\n\t0x1a5e: 0x0279, 0x1a5f: 0x0369, 0x1a60: 0x0289, 0x1a61: 0x13d1, 0x1a62: 0x0039, 0x1a63: 0x0ee9,\n\t0x1a64: 0x1159, 0x1a65: 0x0ef9, 0x1a66: 0x0f09, 0x1a67: 0x1199, 0x1a68: 0x0f31, 0x1a69: 0x0249,\n\t0x1a6a: 0x0f41, 0x1a6b: 0x0259, 0x1a6c: 0x0f51, 0x1a6d: 0x0359, 0x1a6e: 0x0f61, 0x1a6f: 0x0f71,\n\t0x1a70: 0x00d9, 0x1a71: 0x0f99, 0x1a72: 0x2039, 0x1a73: 0x0269, 0x1a74: 0x01d9, 0x1a75: 0x0fa9,\n\t0x1a76: 0x0fb9, 0x1a77: 0x1089, 0x1a78: 0x0279, 0x1a79: 0x0369, 0x1a7a: 0x0289, 0x1a7b: 0x13d1,\n\t0x1a7c: 0x0039, 0x1a7d: 0x0ee9, 0x1a7e: 0x1159, 0x1a7f: 0x0ef9,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x0f09, 0x1a81: 0x1199, 0x1a82: 0x0f31, 0x1a83: 0x0249, 0x1a84: 0x0f41, 0x1a85: 0x0259,\n\t0x1a86: 0x0f51, 0x1a87: 0x0359, 0x1a88: 0x0f61, 0x1a89: 0x0f71, 0x1a8a: 0x00d9, 0x1a8b: 0x0f99,\n\t0x1a8c: 0x2039, 0x1a8d: 0x0269, 0x1a8e: 0x01d9, 0x1a8f: 0x0fa9, 0x1a90: 0x0fb9, 0x1a91: 0x1089,\n\t0x1a92: 0x0279, 0x1a93: 0x0369, 0x1a94: 0x0289, 0x1a95: 0x13d1, 0x1a96: 0x0039, 0x1a97: 0x0ee9,\n\t0x1a98: 0x1159, 0x1a99: 0x0ef9, 0x1a9a: 0x0f09, 0x1a9b: 0x1199, 0x1a9c: 0x0f31, 0x1a9d: 0x0249,\n\t0x1a9e: 0x0f41, 0x1a9f: 0x0259, 0x1aa0: 0x0f51, 0x1aa1: 0x0359, 0x1aa2: 0x0f61, 0x1aa3: 0x0f71,\n\t0x1aa4: 0x00d9, 0x1aa5: 0x0f99, 0x1aa6: 0x2039, 0x1aa7: 0x0269, 0x1aa8: 0x01d9, 0x1aa9: 0x0fa9,\n\t0x1aaa: 0x0fb9, 0x1aab: 0x1089, 0x1aac: 0x0279, 0x1aad: 0x0369, 0x1aae: 0x0289, 0x1aaf: 0x13d1,\n\t0x1ab0: 0x0039, 0x1ab1: 0x0ee9, 0x1ab2: 0x1159, 0x1ab3: 0x0ef9, 0x1ab4: 0x0f09, 0x1ab5: 0x1199,\n\t0x1ab6: 0x0f31, 0x1ab7: 0x0249, 0x1ab8: 0x0f41, 0x1ab9: 0x0259, 0x1aba: 0x0f51, 0x1abb: 0x0359,\n\t0x1abc: 0x0f61, 0x1abd: 0x0f71, 0x1abe: 0x00d9, 0x1abf: 0x0f99,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x2039, 0x1ac1: 0x0269, 0x1ac2: 0x01d9, 0x1ac3: 0x0fa9, 0x1ac4: 0x0fb9, 0x1ac5: 0x1089,\n\t0x1ac6: 0x0279, 0x1ac7: 0x0369, 0x1ac8: 0x0289, 0x1ac9: 0x13d1, 0x1aca: 0x0039, 0x1acb: 0x0ee9,\n\t0x1acc: 0x1159, 0x1acd: 0x0ef9, 0x1ace: 0x0f09, 0x1acf: 0x1199, 0x1ad0: 0x0f31, 0x1ad1: 0x0249,\n\t0x1ad2: 0x0f41, 0x1ad3: 0x0259, 0x1ad4: 0x0f51, 0x1ad5: 0x0359, 0x1ad6: 0x0f61, 0x1ad7: 0x0f71,\n\t0x1ad8: 0x00d9, 0x1ad9: 0x0f99, 0x1ada: 0x2039, 0x1adb: 0x0269, 0x1adc: 0x01d9, 0x1add: 0x0fa9,\n\t0x1ade: 0x0fb9, 0x1adf: 0x1089, 0x1ae0: 0x0279, 0x1ae1: 0x0369, 0x1ae2: 0x0289, 0x1ae3: 0x13d1,\n\t0x1ae4: 0xba81, 0x1ae5: 0xba99, 0x1ae6: 0x0040, 0x1ae7: 0x0040, 0x1ae8: 0xbab1, 0x1ae9: 0x1099,\n\t0x1aea: 0x10b1, 0x1aeb: 0x10c9, 0x1aec: 0xbac9, 0x1aed: 0xbae1, 0x1aee: 0xbaf9, 0x1aef: 0x1429,\n\t0x1af0: 0x1a31, 0x1af1: 0xbb11, 0x1af2: 0xbb29, 0x1af3: 0xbb41, 0x1af4: 0xbb59, 0x1af5: 0xbb71,\n\t0x1af6: 0xbb89, 0x1af7: 0x2109, 0x1af8: 0x1111, 0x1af9: 0x1429, 0x1afa: 0xbba1, 0x1afb: 0xbbb9,\n\t0x1afc: 0xbbd1, 0x1afd: 0x10e1, 0x1afe: 0x10f9, 0x1aff: 0xbbe9,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x2079, 0x1b01: 0xbc01, 0x1b02: 0xbab1, 0x1b03: 0x1099, 0x1b04: 0x10b1, 0x1b05: 0x10c9,\n\t0x1b06: 0xbac9, 0x1b07: 0xbae1, 0x1b08: 0xbaf9, 0x1b09: 0x1429, 0x1b0a: 0x1a31, 0x1b0b: 0xbb11,\n\t0x1b0c: 0xbb29, 0x1b0d: 0xbb41, 0x1b0e: 0xbb59, 0x1b0f: 0xbb71, 0x1b10: 0xbb89, 0x1b11: 0x2109,\n\t0x1b12: 0x1111, 0x1b13: 0xbba1, 0x1b14: 0xbba1, 0x1b15: 0xbbb9, 0x1b16: 0xbbd1, 0x1b17: 0x10e1,\n\t0x1b18: 0x10f9, 0x1b19: 0xbbe9, 0x1b1a: 0x2079, 0x1b1b: 0xbc21, 0x1b1c: 0xbac9, 0x1b1d: 0x1429,\n\t0x1b1e: 0xbb11, 0x1b1f: 0x10e1, 0x1b20: 0x1111, 0x1b21: 0x2109, 0x1b22: 0xbab1, 0x1b23: 0x1099,\n\t0x1b24: 0x10b1, 0x1b25: 0x10c9, 0x1b26: 0xbac9, 0x1b27: 0xbae1, 0x1b28: 0xbaf9, 0x1b29: 0x1429,\n\t0x1b2a: 0x1a31, 0x1b2b: 0xbb11, 0x1b2c: 0xbb29, 0x1b2d: 0xbb41, 0x1b2e: 0xbb59, 0x1b2f: 0xbb71,\n\t0x1b30: 0xbb89, 0x1b31: 0x2109, 0x1b32: 0x1111, 0x1b33: 0x1429, 0x1b34: 0xbba1, 0x1b35: 0xbbb9,\n\t0x1b36: 0xbbd1, 0x1b37: 0x10e1, 0x1b38: 0x10f9, 0x1b39: 0xbbe9, 0x1b3a: 0x2079, 0x1b3b: 0xbc01,\n\t0x1b3c: 0xbab1, 0x1b3d: 0x1099, 0x1b3e: 0x10b1, 0x1b3f: 0x10c9,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0xbac9, 0x1b41: 0xbae1, 0x1b42: 0xbaf9, 0x1b43: 0x1429, 0x1b44: 0x1a31, 0x1b45: 0xbb11,\n\t0x1b46: 0xbb29, 0x1b47: 0xbb41, 0x1b48: 0xbb59, 0x1b49: 0xbb71, 0x1b4a: 0xbb89, 0x1b4b: 0x2109,\n\t0x1b4c: 0x1111, 0x1b4d: 0xbba1, 0x1b4e: 0xbba1, 0x1b4f: 0xbbb9, 0x1b50: 0xbbd1, 0x1b51: 0x10e1,\n\t0x1b52: 0x10f9, 0x1b53: 0xbbe9, 0x1b54: 0x2079, 0x1b55: 0xbc21, 0x1b56: 0xbac9, 0x1b57: 0x1429,\n\t0x1b58: 0xbb11, 0x1b59: 0x10e1, 0x1b5a: 0x1111, 0x1b5b: 0x2109, 0x1b5c: 0xbab1, 0x1b5d: 0x1099,\n\t0x1b5e: 0x10b1, 0x1b5f: 0x10c9, 0x1b60: 0xbac9, 0x1b61: 0xbae1, 0x1b62: 0xbaf9, 0x1b63: 0x1429,\n\t0x1b64: 0x1a31, 0x1b65: 0xbb11, 0x1b66: 0xbb29, 0x1b67: 0xbb41, 0x1b68: 0xbb59, 0x1b69: 0xbb71,\n\t0x1b6a: 0xbb89, 0x1b6b: 0x2109, 0x1b6c: 0x1111, 0x1b6d: 0x1429, 0x1b6e: 0xbba1, 0x1b6f: 0xbbb9,\n\t0x1b70: 0xbbd1, 0x1b71: 0x10e1, 0x1b72: 0x10f9, 0x1b73: 0xbbe9, 0x1b74: 0x2079, 0x1b75: 0xbc01,\n\t0x1b76: 0xbab1, 0x1b77: 0x1099, 0x1b78: 0x10b1, 0x1b79: 0x10c9, 0x1b7a: 0xbac9, 0x1b7b: 0xbae1,\n\t0x1b7c: 0xbaf9, 0x1b7d: 0x1429, 0x1b7e: 0x1a31, 0x1b7f: 0xbb11,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0xbb29, 0x1b81: 0xbb41, 0x1b82: 0xbb59, 0x1b83: 0xbb71, 0x1b84: 0xbb89, 0x1b85: 0x2109,\n\t0x1b86: 0x1111, 0x1b87: 0xbba1, 0x1b88: 0xbba1, 0x1b89: 0xbbb9, 0x1b8a: 0xbbd1, 0x1b8b: 0x10e1,\n\t0x1b8c: 0x10f9, 0x1b8d: 0xbbe9, 0x1b8e: 0x2079, 0x1b8f: 0xbc21, 0x1b90: 0xbac9, 0x1b91: 0x1429,\n\t0x1b92: 0xbb11, 0x1b93: 0x10e1, 0x1b94: 0x1111, 0x1b95: 0x2109, 0x1b96: 0xbab1, 0x1b97: 0x1099,\n\t0x1b98: 0x10b1, 0x1b99: 0x10c9, 0x1b9a: 0xbac9, 0x1b9b: 0xbae1, 0x1b9c: 0xbaf9, 0x1b9d: 0x1429,\n\t0x1b9e: 0x1a31, 0x1b9f: 0xbb11, 0x1ba0: 0xbb29, 0x1ba1: 0xbb41, 0x1ba2: 0xbb59, 0x1ba3: 0xbb71,\n\t0x1ba4: 0xbb89, 0x1ba5: 0x2109, 0x1ba6: 0x1111, 0x1ba7: 0x1429, 0x1ba8: 0xbba1, 0x1ba9: 0xbbb9,\n\t0x1baa: 0xbbd1, 0x1bab: 0x10e1, 0x1bac: 0x10f9, 0x1bad: 0xbbe9, 0x1bae: 0x2079, 0x1baf: 0xbc01,\n\t0x1bb0: 0xbab1, 0x1bb1: 0x1099, 0x1bb2: 0x10b1, 0x1bb3: 0x10c9, 0x1bb4: 0xbac9, 0x1bb5: 0xbae1,\n\t0x1bb6: 0xbaf9, 0x1bb7: 0x1429, 0x1bb8: 0x1a31, 0x1bb9: 0xbb11, 0x1bba: 0xbb29, 0x1bbb: 0xbb41,\n\t0x1bbc: 0xbb59, 0x1bbd: 0xbb71, 0x1bbe: 0xbb89, 0x1bbf: 0x2109,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x1111, 0x1bc1: 0xbba1, 0x1bc2: 0xbba1, 0x1bc3: 0xbbb9, 0x1bc4: 0xbbd1, 0x1bc5: 0x10e1,\n\t0x1bc6: 0x10f9, 0x1bc7: 0xbbe9, 0x1bc8: 0x2079, 0x1bc9: 0xbc21, 0x1bca: 0xbac9, 0x1bcb: 0x1429,\n\t0x1bcc: 0xbb11, 0x1bcd: 0x10e1, 0x1bce: 0x1111, 0x1bcf: 0x2109, 0x1bd0: 0xbab1, 0x1bd1: 0x1099,\n\t0x1bd2: 0x10b1, 0x1bd3: 0x10c9, 0x1bd4: 0xbac9, 0x1bd5: 0xbae1, 0x1bd6: 0xbaf9, 0x1bd7: 0x1429,\n\t0x1bd8: 0x1a31, 0x1bd9: 0xbb11, 0x1bda: 0xbb29, 0x1bdb: 0xbb41, 0x1bdc: 0xbb59, 0x1bdd: 0xbb71,\n\t0x1bde: 0xbb89, 0x1bdf: 0x2109, 0x1be0: 0x1111, 0x1be1: 0x1429, 0x1be2: 0xbba1, 0x1be3: 0xbbb9,\n\t0x1be4: 0xbbd1, 0x1be5: 0x10e1, 0x1be6: 0x10f9, 0x1be7: 0xbbe9, 0x1be8: 0x2079, 0x1be9: 0xbc01,\n\t0x1bea: 0xbab1, 0x1beb: 0x1099, 0x1bec: 0x10b1, 0x1bed: 0x10c9, 0x1bee: 0xbac9, 0x1bef: 0xbae1,\n\t0x1bf0: 0xbaf9, 0x1bf1: 0x1429, 0x1bf2: 0x1a31, 0x1bf3: 0xbb11, 0x1bf4: 0xbb29, 0x1bf5: 0xbb41,\n\t0x1bf6: 0xbb59, 0x1bf7: 0xbb71, 0x1bf8: 0xbb89, 0x1bf9: 0x2109, 0x1bfa: 0x1111, 0x1bfb: 0xbba1,\n\t0x1bfc: 0xbba1, 0x1bfd: 0xbbb9, 0x1bfe: 0xbbd1, 0x1bff: 0x10e1,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x10f9, 0x1c01: 0xbbe9, 0x1c02: 0x2079, 0x1c03: 0xbc21, 0x1c04: 0xbac9, 0x1c05: 0x1429,\n\t0x1c06: 0xbb11, 0x1c07: 0x10e1, 0x1c08: 0x1111, 0x1c09: 0x2109, 0x1c0a: 0xbc41, 0x1c0b: 0xbc41,\n\t0x1c0c: 0x0040, 0x1c0d: 0x0040, 0x1c0e: 0x1f41, 0x1c0f: 0x00c9, 0x1c10: 0x0069, 0x1c11: 0x0079,\n\t0x1c12: 0x1f51, 0x1c13: 0x1f61, 0x1c14: 0x1f71, 0x1c15: 0x1f81, 0x1c16: 0x1f91, 0x1c17: 0x1fa1,\n\t0x1c18: 0x1f41, 0x1c19: 0x00c9, 0x1c1a: 0x0069, 0x1c1b: 0x0079, 0x1c1c: 0x1f51, 0x1c1d: 0x1f61,\n\t0x1c1e: 0x1f71, 0x1c1f: 0x1f81, 0x1c20: 0x1f91, 0x1c21: 0x1fa1, 0x1c22: 0x1f41, 0x1c23: 0x00c9,\n\t0x1c24: 0x0069, 0x1c25: 0x0079, 0x1c26: 0x1f51, 0x1c27: 0x1f61, 0x1c28: 0x1f71, 0x1c29: 0x1f81,\n\t0x1c2a: 0x1f91, 0x1c2b: 0x1fa1, 0x1c2c: 0x1f41, 0x1c2d: 0x00c9, 0x1c2e: 0x0069, 0x1c2f: 0x0079,\n\t0x1c30: 0x1f51, 0x1c31: 0x1f61, 0x1c32: 0x1f71, 0x1c33: 0x1f81, 0x1c34: 0x1f91, 0x1c35: 0x1fa1,\n\t0x1c36: 0x1f41, 0x1c37: 0x00c9, 0x1c38: 0x0069, 0x1c39: 0x0079, 0x1c3a: 0x1f51, 0x1c3b: 0x1f61,\n\t0x1c3c: 0x1f71, 0x1c3d: 0x1f81, 0x1c3e: 0x1f91, 0x1c3f: 0x1fa1,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0xe115, 0x1c41: 0xe115, 0x1c42: 0xe135, 0x1c43: 0xe135, 0x1c44: 0xe115, 0x1c45: 0xe115,\n\t0x1c46: 0xe175, 0x1c47: 0xe175, 0x1c48: 0xe115, 0x1c49: 0xe115, 0x1c4a: 0xe135, 0x1c4b: 0xe135,\n\t0x1c4c: 0xe115, 0x1c4d: 0xe115, 0x1c4e: 0xe1f5, 0x1c4f: 0xe1f5, 0x1c50: 0xe115, 0x1c51: 0xe115,\n\t0x1c52: 0xe135, 0x1c53: 0xe135, 0x1c54: 0xe115, 0x1c55: 0xe115, 0x1c56: 0xe175, 0x1c57: 0xe175,\n\t0x1c58: 0xe115, 0x1c59: 0xe115, 0x1c5a: 0xe135, 0x1c5b: 0xe135, 0x1c5c: 0xe115, 0x1c5d: 0xe115,\n\t0x1c5e: 0x8b05, 0x1c5f: 0x8b05, 0x1c60: 0x04b5, 0x1c61: 0x04b5, 0x1c62: 0x0a08, 0x1c63: 0x0a08,\n\t0x1c64: 0x0a08, 0x1c65: 0x0a08, 0x1c66: 0x0a08, 0x1c67: 0x0a08, 0x1c68: 0x0a08, 0x1c69: 0x0a08,\n\t0x1c6a: 0x0a08, 0x1c6b: 0x0a08, 0x1c6c: 0x0a08, 0x1c6d: 0x0a08, 0x1c6e: 0x0a08, 0x1c6f: 0x0a08,\n\t0x1c70: 0x0a08, 0x1c71: 0x0a08, 0x1c72: 0x0a08, 0x1c73: 0x0a08, 0x1c74: 0x0a08, 0x1c75: 0x0a08,\n\t0x1c76: 0x0a08, 0x1c77: 0x0a08, 0x1c78: 0x0a08, 0x1c79: 0x0a08, 0x1c7a: 0x0a08, 0x1c7b: 0x0a08,\n\t0x1c7c: 0x0a08, 0x1c7d: 0x0a08, 0x1c7e: 0x0a08, 0x1c7f: 0x0a08,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0x0040, 0x1c85: 0xb411,\n\t0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0xb399, 0x1c8b: 0xb3b1,\n\t0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9,\n\t0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231,\n\t0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0xbc59, 0x1c9d: 0x7949,\n\t0x1c9e: 0xbc71, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040,\n\t0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0x0040, 0x1ca9: 0xb429,\n\t0x1caa: 0xb399, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339,\n\t0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1,\n\t0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0x0040, 0x1cbb: 0xb351,\n\t0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x0040, 0x1cc1: 0x0040, 0x1cc2: 0xb201, 0x1cc3: 0x0040, 0x1cc4: 0x0040, 0x1cc5: 0x0040,\n\t0x1cc6: 0x0040, 0x1cc7: 0xb219, 0x1cc8: 0x0040, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1,\n\t0x1ccc: 0x0040, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0x0040, 0x1cd1: 0xb2d9,\n\t0x1cd2: 0xb381, 0x1cd3: 0x0040, 0x1cd4: 0xb2c1, 0x1cd5: 0x0040, 0x1cd6: 0x0040, 0x1cd7: 0xb231,\n\t0x1cd8: 0x0040, 0x1cd9: 0xb2f1, 0x1cda: 0x0040, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x7949,\n\t0x1cde: 0x0040, 0x1cdf: 0xbc89, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0x0040,\n\t0x1ce4: 0xb3f9, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429,\n\t0x1cea: 0xb399, 0x1ceb: 0x0040, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339,\n\t0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0x0040, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1,\n\t0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0x0040, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351,\n\t0x1cfc: 0xbc59, 0x1cfd: 0x0040, 0x1cfe: 0xbc71, 0x1cff: 0x0040,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0xb189, 0x1d01: 0xb1a1, 0x1d02: 0xb201, 0x1d03: 0xb249, 0x1d04: 0xb3f9, 0x1d05: 0xb411,\n\t0x1d06: 0xb291, 0x1d07: 0xb219, 0x1d08: 0xb309, 0x1d09: 0xb429, 0x1d0a: 0x0040, 0x1d0b: 0xb3b1,\n\t0x1d0c: 0xb3c9, 0x1d0d: 0xb3e1, 0x1d0e: 0xb2a9, 0x1d0f: 0xb339, 0x1d10: 0xb369, 0x1d11: 0xb2d9,\n\t0x1d12: 0xb381, 0x1d13: 0xb279, 0x1d14: 0xb2c1, 0x1d15: 0xb1d1, 0x1d16: 0xb1e9, 0x1d17: 0xb231,\n\t0x1d18: 0xb261, 0x1d19: 0xb2f1, 0x1d1a: 0xb321, 0x1d1b: 0xb351, 0x1d1c: 0x0040, 0x1d1d: 0x0040,\n\t0x1d1e: 0x0040, 0x1d1f: 0x0040, 0x1d20: 0x0040, 0x1d21: 0xb1a1, 0x1d22: 0xb201, 0x1d23: 0xb249,\n\t0x1d24: 0x0040, 0x1d25: 0xb411, 0x1d26: 0xb291, 0x1d27: 0xb219, 0x1d28: 0xb309, 0x1d29: 0xb429,\n\t0x1d2a: 0x0040, 0x1d2b: 0xb3b1, 0x1d2c: 0xb3c9, 0x1d2d: 0xb3e1, 0x1d2e: 0xb2a9, 0x1d2f: 0xb339,\n\t0x1d30: 0xb369, 0x1d31: 0xb2d9, 0x1d32: 0xb381, 0x1d33: 0xb279, 0x1d34: 0xb2c1, 0x1d35: 0xb1d1,\n\t0x1d36: 0xb1e9, 0x1d37: 0xb231, 0x1d38: 0xb261, 0x1d39: 0xb2f1, 0x1d3a: 0xb321, 0x1d3b: 0xb351,\n\t0x1d3c: 0x0040, 0x1d3d: 0x0040, 0x1d3e: 0x0040, 0x1d3f: 0x0040,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x0040, 0x1d41: 0xbca2, 0x1d42: 0xbcba, 0x1d43: 0xbcd2, 0x1d44: 0xbcea, 0x1d45: 0xbd02,\n\t0x1d46: 0xbd1a, 0x1d47: 0xbd32, 0x1d48: 0xbd4a, 0x1d49: 0xbd62, 0x1d4a: 0xbd7a, 0x1d4b: 0x0018,\n\t0x1d4c: 0x0018, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xbd92, 0x1d51: 0xbdb2,\n\t0x1d52: 0xbdd2, 0x1d53: 0xbdf2, 0x1d54: 0xbe12, 0x1d55: 0xbe32, 0x1d56: 0xbe52, 0x1d57: 0xbe72,\n\t0x1d58: 0xbe92, 0x1d59: 0xbeb2, 0x1d5a: 0xbed2, 0x1d5b: 0xbef2, 0x1d5c: 0xbf12, 0x1d5d: 0xbf32,\n\t0x1d5e: 0xbf52, 0x1d5f: 0xbf72, 0x1d60: 0xbf92, 0x1d61: 0xbfb2, 0x1d62: 0xbfd2, 0x1d63: 0xbff2,\n\t0x1d64: 0xc012, 0x1d65: 0xc032, 0x1d66: 0xc052, 0x1d67: 0xc072, 0x1d68: 0xc092, 0x1d69: 0xc0b2,\n\t0x1d6a: 0xc0d1, 0x1d6b: 0x1159, 0x1d6c: 0x0269, 0x1d6d: 0x6671, 0x1d6e: 0xc111, 0x1d6f: 0x0040,\n\t0x1d70: 0x0039, 0x1d71: 0x0ee9, 0x1d72: 0x1159, 0x1d73: 0x0ef9, 0x1d74: 0x0f09, 0x1d75: 0x1199,\n\t0x1d76: 0x0f31, 0x1d77: 0x0249, 0x1d78: 0x0f41, 0x1d79: 0x0259, 0x1d7a: 0x0f51, 0x1d7b: 0x0359,\n\t0x1d7c: 0x0f61, 0x1d7d: 0x0f71, 0x1d7e: 0x00d9, 0x1d7f: 0x0f99,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0x2039, 0x1d81: 0x0269, 0x1d82: 0x01d9, 0x1d83: 0x0fa9, 0x1d84: 0x0fb9, 0x1d85: 0x1089,\n\t0x1d86: 0x0279, 0x1d87: 0x0369, 0x1d88: 0x0289, 0x1d89: 0x13d1, 0x1d8a: 0xc129, 0x1d8b: 0x65b1,\n\t0x1d8c: 0xc141, 0x1d8d: 0x1441, 0x1d8e: 0xc159, 0x1d8f: 0xc179, 0x1d90: 0x0018, 0x1d91: 0x0018,\n\t0x1d92: 0x0018, 0x1d93: 0x0018, 0x1d94: 0x0018, 0x1d95: 0x0018, 0x1d96: 0x0018, 0x1d97: 0x0018,\n\t0x1d98: 0x0018, 0x1d99: 0x0018, 0x1d9a: 0x0018, 0x1d9b: 0x0018, 0x1d9c: 0x0018, 0x1d9d: 0x0018,\n\t0x1d9e: 0x0018, 0x1d9f: 0x0018, 0x1da0: 0x0018, 0x1da1: 0x0018, 0x1da2: 0x0018, 0x1da3: 0x0018,\n\t0x1da4: 0x0018, 0x1da5: 0x0018, 0x1da6: 0x0018, 0x1da7: 0x0018, 0x1da8: 0x0018, 0x1da9: 0x0018,\n\t0x1daa: 0xc191, 0x1dab: 0xc1a9, 0x1dac: 0x0040, 0x1dad: 0x0040, 0x1dae: 0x0040, 0x1daf: 0x0040,\n\t0x1db0: 0x0018, 0x1db1: 0x0018, 0x1db2: 0x0018, 0x1db3: 0x0018, 0x1db4: 0x0018, 0x1db5: 0x0018,\n\t0x1db6: 0x0018, 0x1db7: 0x0018, 0x1db8: 0x0018, 0x1db9: 0x0018, 0x1dba: 0x0018, 0x1dbb: 0x0018,\n\t0x1dbc: 0x0018, 0x1dbd: 0x0018, 0x1dbe: 0x0018, 0x1dbf: 0x0018,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0xc1d9, 0x1dc1: 0xc211, 0x1dc2: 0xc249, 0x1dc3: 0x0040, 0x1dc4: 0x0040, 0x1dc5: 0x0040,\n\t0x1dc6: 0x0040, 0x1dc7: 0x0040, 0x1dc8: 0x0040, 0x1dc9: 0x0040, 0x1dca: 0x0040, 0x1dcb: 0x0040,\n\t0x1dcc: 0x0040, 0x1dcd: 0x0040, 0x1dce: 0x0040, 0x1dcf: 0x0040, 0x1dd0: 0xc269, 0x1dd1: 0xc289,\n\t0x1dd2: 0xc2a9, 0x1dd3: 0xc2c9, 0x1dd4: 0xc2e9, 0x1dd5: 0xc309, 0x1dd6: 0xc329, 0x1dd7: 0xc349,\n\t0x1dd8: 0xc369, 0x1dd9: 0xc389, 0x1dda: 0xc3a9, 0x1ddb: 0xc3c9, 0x1ddc: 0xc3e9, 0x1ddd: 0xc409,\n\t0x1dde: 0xc429, 0x1ddf: 0xc449, 0x1de0: 0xc469, 0x1de1: 0xc489, 0x1de2: 0xc4a9, 0x1de3: 0xc4c9,\n\t0x1de4: 0xc4e9, 0x1de5: 0xc509, 0x1de6: 0xc529, 0x1de7: 0xc549, 0x1de8: 0xc569, 0x1de9: 0xc589,\n\t0x1dea: 0xc5a9, 0x1deb: 0xc5c9, 0x1dec: 0xc5e9, 0x1ded: 0xc609, 0x1dee: 0xc629, 0x1def: 0xc649,\n\t0x1df0: 0xc669, 0x1df1: 0xc689, 0x1df2: 0xc6a9, 0x1df3: 0xc6c9, 0x1df4: 0xc6e9, 0x1df5: 0xc709,\n\t0x1df6: 0xc729, 0x1df7: 0xc749, 0x1df8: 0xc769, 0x1df9: 0xc789, 0x1dfa: 0xc7a9, 0x1dfb: 0xc7c9,\n\t0x1dfc: 0x0040, 0x1dfd: 0x0040, 0x1dfe: 0x0040, 0x1dff: 0x0040,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0xcaf9, 0x1e01: 0xcb19, 0x1e02: 0xcb39, 0x1e03: 0x8b1d, 0x1e04: 0xcb59, 0x1e05: 0xcb79,\n\t0x1e06: 0xcb99, 0x1e07: 0xcbb9, 0x1e08: 0xcbd9, 0x1e09: 0xcbf9, 0x1e0a: 0xcc19, 0x1e0b: 0xcc39,\n\t0x1e0c: 0xcc59, 0x1e0d: 0x8b3d, 0x1e0e: 0xcc79, 0x1e0f: 0xcc99, 0x1e10: 0xccb9, 0x1e11: 0xccd9,\n\t0x1e12: 0x8b5d, 0x1e13: 0xccf9, 0x1e14: 0xcd19, 0x1e15: 0xc429, 0x1e16: 0x8b7d, 0x1e17: 0xcd39,\n\t0x1e18: 0xcd59, 0x1e19: 0xcd79, 0x1e1a: 0xcd99, 0x1e1b: 0xcdb9, 0x1e1c: 0x8b9d, 0x1e1d: 0xcdd9,\n\t0x1e1e: 0xcdf9, 0x1e1f: 0xce19, 0x1e20: 0xce39, 0x1e21: 0xce59, 0x1e22: 0xc789, 0x1e23: 0xce79,\n\t0x1e24: 0xce99, 0x1e25: 0xceb9, 0x1e26: 0xced9, 0x1e27: 0xcef9, 0x1e28: 0xcf19, 0x1e29: 0xcf39,\n\t0x1e2a: 0xcf59, 0x1e2b: 0xcf79, 0x1e2c: 0xcf99, 0x1e2d: 0xcfb9, 0x1e2e: 0xcfd9, 0x1e2f: 0xcff9,\n\t0x1e30: 0xd019, 0x1e31: 0xd039, 0x1e32: 0xd039, 0x1e33: 0xd039, 0x1e34: 0x8bbd, 0x1e35: 0xd059,\n\t0x1e36: 0xd079, 0x1e37: 0xd099, 0x1e38: 0x8bdd, 0x1e39: 0xd0b9, 0x1e3a: 0xd0d9, 0x1e3b: 0xd0f9,\n\t0x1e3c: 0xd119, 0x1e3d: 0xd139, 0x1e3e: 0xd159, 0x1e3f: 0xd179,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0xd199, 0x1e41: 0xd1b9, 0x1e42: 0xd1d9, 0x1e43: 0xd1f9, 0x1e44: 0xd219, 0x1e45: 0xd239,\n\t0x1e46: 0xd239, 0x1e47: 0xd259, 0x1e48: 0xd279, 0x1e49: 0xd299, 0x1e4a: 0xd2b9, 0x1e4b: 0xd2d9,\n\t0x1e4c: 0xd2f9, 0x1e4d: 0xd319, 0x1e4e: 0xd339, 0x1e4f: 0xd359, 0x1e50: 0xd379, 0x1e51: 0xd399,\n\t0x1e52: 0xd3b9, 0x1e53: 0xd3d9, 0x1e54: 0xd3f9, 0x1e55: 0xd419, 0x1e56: 0xd439, 0x1e57: 0xd459,\n\t0x1e58: 0xd479, 0x1e59: 0x8bfd, 0x1e5a: 0xd499, 0x1e5b: 0xd4b9, 0x1e5c: 0xd4d9, 0x1e5d: 0xc309,\n\t0x1e5e: 0xd4f9, 0x1e5f: 0xd519, 0x1e60: 0x8c1d, 0x1e61: 0x8c3d, 0x1e62: 0xd539, 0x1e63: 0xd559,\n\t0x1e64: 0xd579, 0x1e65: 0xd599, 0x1e66: 0xd5b9, 0x1e67: 0xd5d9, 0x1e68: 0x2040, 0x1e69: 0xd5f9,\n\t0x1e6a: 0xd619, 0x1e6b: 0xd619, 0x1e6c: 0x8c5d, 0x1e6d: 0xd639, 0x1e6e: 0xd659, 0x1e6f: 0xd679,\n\t0x1e70: 0xd699, 0x1e71: 0x8c7d, 0x1e72: 0xd6b9, 0x1e73: 0xd6d9, 0x1e74: 0x2040, 0x1e75: 0xd6f9,\n\t0x1e76: 0xd719, 0x1e77: 0xd739, 0x1e78: 0xd759, 0x1e79: 0xd779, 0x1e7a: 0xd799, 0x1e7b: 0x8c9d,\n\t0x1e7c: 0xd7b9, 0x1e7d: 0x8cbd, 0x1e7e: 0xd7d9, 0x1e7f: 0xd7f9,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0xd819, 0x1e81: 0xd839, 0x1e82: 0xd859, 0x1e83: 0xd879, 0x1e84: 0xd899, 0x1e85: 0xd8b9,\n\t0x1e86: 0xd8d9, 0x1e87: 0xd8f9, 0x1e88: 0xd919, 0x1e89: 0x8cdd, 0x1e8a: 0xd939, 0x1e8b: 0xd959,\n\t0x1e8c: 0xd979, 0x1e8d: 0xd999, 0x1e8e: 0xd9b9, 0x1e8f: 0x8cfd, 0x1e90: 0xd9d9, 0x1e91: 0x8d1d,\n\t0x1e92: 0x8d3d, 0x1e93: 0xd9f9, 0x1e94: 0xda19, 0x1e95: 0xda19, 0x1e96: 0xda39, 0x1e97: 0x8d5d,\n\t0x1e98: 0x8d7d, 0x1e99: 0xda59, 0x1e9a: 0xda79, 0x1e9b: 0xda99, 0x1e9c: 0xdab9, 0x1e9d: 0xdad9,\n\t0x1e9e: 0xdaf9, 0x1e9f: 0xdb19, 0x1ea0: 0xdb39, 0x1ea1: 0xdb59, 0x1ea2: 0xdb79, 0x1ea3: 0xdb99,\n\t0x1ea4: 0x8d9d, 0x1ea5: 0xdbb9, 0x1ea6: 0xdbd9, 0x1ea7: 0xdbf9, 0x1ea8: 0xdc19, 0x1ea9: 0xdbf9,\n\t0x1eaa: 0xdc39, 0x1eab: 0xdc59, 0x1eac: 0xdc79, 0x1ead: 0xdc99, 0x1eae: 0xdcb9, 0x1eaf: 0xdcd9,\n\t0x1eb0: 0xdcf9, 0x1eb1: 0xdd19, 0x1eb2: 0xdd39, 0x1eb3: 0xdd59, 0x1eb4: 0xdd79, 0x1eb5: 0xdd99,\n\t0x1eb6: 0xddb9, 0x1eb7: 0xddd9, 0x1eb8: 0x8dbd, 0x1eb9: 0xddf9, 0x1eba: 0xde19, 0x1ebb: 0xde39,\n\t0x1ebc: 0xde59, 0x1ebd: 0xde79, 0x1ebe: 0x8ddd, 0x1ebf: 0xde99,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0xe599, 0x1ec1: 0xe5b9, 0x1ec2: 0xe5d9, 0x1ec3: 0xe5f9, 0x1ec4: 0xe619, 0x1ec5: 0xe639,\n\t0x1ec6: 0x8efd, 0x1ec7: 0xe659, 0x1ec8: 0xe679, 0x1ec9: 0xe699, 0x1eca: 0xe6b9, 0x1ecb: 0xe6d9,\n\t0x1ecc: 0xe6f9, 0x1ecd: 0x8f1d, 0x1ece: 0xe719, 0x1ecf: 0xe739, 0x1ed0: 0x8f3d, 0x1ed1: 0x8f5d,\n\t0x1ed2: 0xe759, 0x1ed3: 0xe779, 0x1ed4: 0xe799, 0x1ed5: 0xe7b9, 0x1ed6: 0xe7d9, 0x1ed7: 0xe7f9,\n\t0x1ed8: 0xe819, 0x1ed9: 0xe839, 0x1eda: 0xe859, 0x1edb: 0x8f7d, 0x1edc: 0xe879, 0x1edd: 0x8f9d,\n\t0x1ede: 0xe899, 0x1edf: 0x2040, 0x1ee0: 0xe8b9, 0x1ee1: 0xe8d9, 0x1ee2: 0xe8f9, 0x1ee3: 0x8fbd,\n\t0x1ee4: 0xe919, 0x1ee5: 0xe939, 0x1ee6: 0x8fdd, 0x1ee7: 0x8ffd, 0x1ee8: 0xe959, 0x1ee9: 0xe979,\n\t0x1eea: 0xe999, 0x1eeb: 0xe9b9, 0x1eec: 0xe9d9, 0x1eed: 0xe9d9, 0x1eee: 0xe9f9, 0x1eef: 0xea19,\n\t0x1ef0: 0xea39, 0x1ef1: 0xea59, 0x1ef2: 0xea79, 0x1ef3: 0xea99, 0x1ef4: 0xeab9, 0x1ef5: 0x901d,\n\t0x1ef6: 0xead9, 0x1ef7: 0x903d, 0x1ef8: 0xeaf9, 0x1ef9: 0x905d, 0x1efa: 0xeb19, 0x1efb: 0x907d,\n\t0x1efc: 0x909d, 0x1efd: 0x90bd, 0x1efe: 0xeb39, 0x1eff: 0xeb59,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0xeb79, 0x1f01: 0x90dd, 0x1f02: 0x90fd, 0x1f03: 0x911d, 0x1f04: 0x913d, 0x1f05: 0xeb99,\n\t0x1f06: 0xebb9, 0x1f07: 0xebb9, 0x1f08: 0xebd9, 0x1f09: 0xebf9, 0x1f0a: 0xec19, 0x1f0b: 0xec39,\n\t0x1f0c: 0xec59, 0x1f0d: 0x915d, 0x1f0e: 0xec79, 0x1f0f: 0xec99, 0x1f10: 0xecb9, 0x1f11: 0xecd9,\n\t0x1f12: 0x917d, 0x1f13: 0xecf9, 0x1f14: 0x919d, 0x1f15: 0x91bd, 0x1f16: 0xed19, 0x1f17: 0xed39,\n\t0x1f18: 0xed59, 0x1f19: 0xed79, 0x1f1a: 0xed99, 0x1f1b: 0xedb9, 0x1f1c: 0x91dd, 0x1f1d: 0x91fd,\n\t0x1f1e: 0x921d, 0x1f1f: 0x2040, 0x1f20: 0xedd9, 0x1f21: 0x923d, 0x1f22: 0xedf9, 0x1f23: 0xee19,\n\t0x1f24: 0xee39, 0x1f25: 0x925d, 0x1f26: 0xee59, 0x1f27: 0xee79, 0x1f28: 0xee99, 0x1f29: 0xeeb9,\n\t0x1f2a: 0xeed9, 0x1f2b: 0x927d, 0x1f2c: 0xeef9, 0x1f2d: 0xef19, 0x1f2e: 0xef39, 0x1f2f: 0xef59,\n\t0x1f30: 0xef79, 0x1f31: 0xef99, 0x1f32: 0x929d, 0x1f33: 0x92bd, 0x1f34: 0xefb9, 0x1f35: 0x92dd,\n\t0x1f36: 0xefd9, 0x1f37: 0x92fd, 0x1f38: 0xeff9, 0x1f39: 0xf019, 0x1f3a: 0xf039, 0x1f3b: 0x931d,\n\t0x1f3c: 0x933d, 0x1f3d: 0xf059, 0x1f3e: 0x935d, 0x1f3f: 0xf079,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0xf6b9, 0x1f41: 0xf6d9, 0x1f42: 0xf6f9, 0x1f43: 0xf719, 0x1f44: 0xf739, 0x1f45: 0x951d,\n\t0x1f46: 0xf759, 0x1f47: 0xf779, 0x1f48: 0xf799, 0x1f49: 0xf7b9, 0x1f4a: 0xf7d9, 0x1f4b: 0x953d,\n\t0x1f4c: 0x955d, 0x1f4d: 0xf7f9, 0x1f4e: 0xf819, 0x1f4f: 0xf839, 0x1f50: 0xf859, 0x1f51: 0xf879,\n\t0x1f52: 0xf899, 0x1f53: 0x957d, 0x1f54: 0xf8b9, 0x1f55: 0xf8d9, 0x1f56: 0xf8f9, 0x1f57: 0xf919,\n\t0x1f58: 0x959d, 0x1f59: 0x95bd, 0x1f5a: 0xf939, 0x1f5b: 0xf959, 0x1f5c: 0xf979, 0x1f5d: 0x95dd,\n\t0x1f5e: 0xf999, 0x1f5f: 0xf9b9, 0x1f60: 0x6815, 0x1f61: 0x95fd, 0x1f62: 0xf9d9, 0x1f63: 0xf9f9,\n\t0x1f64: 0xfa19, 0x1f65: 0x961d, 0x1f66: 0xfa39, 0x1f67: 0xfa59, 0x1f68: 0xfa79, 0x1f69: 0xfa99,\n\t0x1f6a: 0xfab9, 0x1f6b: 0xfad9, 0x1f6c: 0xfaf9, 0x1f6d: 0x963d, 0x1f6e: 0xfb19, 0x1f6f: 0xfb39,\n\t0x1f70: 0xfb59, 0x1f71: 0x965d, 0x1f72: 0xfb79, 0x1f73: 0xfb99, 0x1f74: 0xfbb9, 0x1f75: 0xfbd9,\n\t0x1f76: 0x7b35, 0x1f77: 0x967d, 0x1f78: 0xfbf9, 0x1f79: 0xfc19, 0x1f7a: 0xfc39, 0x1f7b: 0x969d,\n\t0x1f7c: 0xfc59, 0x1f7d: 0x96bd, 0x1f7e: 0xfc79, 0x1f7f: 0xfc79,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0xfc99, 0x1f81: 0x96dd, 0x1f82: 0xfcb9, 0x1f83: 0xfcd9, 0x1f84: 0xfcf9, 0x1f85: 0xfd19,\n\t0x1f86: 0xfd39, 0x1f87: 0xfd59, 0x1f88: 0xfd79, 0x1f89: 0x96fd, 0x1f8a: 0xfd99, 0x1f8b: 0xfdb9,\n\t0x1f8c: 0xfdd9, 0x1f8d: 0xfdf9, 0x1f8e: 0xfe19, 0x1f8f: 0xfe39, 0x1f90: 0x971d, 0x1f91: 0xfe59,\n\t0x1f92: 0x973d, 0x1f93: 0x975d, 0x1f94: 0x977d, 0x1f95: 0xfe79, 0x1f96: 0xfe99, 0x1f97: 0xfeb9,\n\t0x1f98: 0xfed9, 0x1f99: 0xfef9, 0x1f9a: 0xff19, 0x1f9b: 0xff39, 0x1f9c: 0xff59, 0x1f9d: 0x979d,\n\t0x1f9e: 0x0040, 0x1f9f: 0x0040, 0x1fa0: 0x0040, 0x1fa1: 0x0040, 0x1fa2: 0x0040, 0x1fa3: 0x0040,\n\t0x1fa4: 0x0040, 0x1fa5: 0x0040, 0x1fa6: 0x0040, 0x1fa7: 0x0040, 0x1fa8: 0x0040, 0x1fa9: 0x0040,\n\t0x1faa: 0x0040, 0x1fab: 0x0040, 0x1fac: 0x0040, 0x1fad: 0x0040, 0x1fae: 0x0040, 0x1faf: 0x0040,\n\t0x1fb0: 0x0040, 0x1fb1: 0x0040, 0x1fb2: 0x0040, 0x1fb3: 0x0040, 0x1fb4: 0x0040, 0x1fb5: 0x0040,\n\t0x1fb6: 0x0040, 0x1fb7: 0x0040, 0x1fb8: 0x0040, 0x1fb9: 0x0040, 0x1fba: 0x0040, 0x1fbb: 0x0040,\n\t0x1fbc: 0x0040, 0x1fbd: 0x0040, 0x1fbe: 0x0040, 0x1fbf: 0x0040,\n}\n\n// idnaIndex: 36 blocks, 2304 entries, 4608 bytes\n// Block 0 is the zero block.\nvar idnaIndex = [2304]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x7d, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,\n\t0xc8: 0x06, 0xc9: 0x7e, 0xca: 0x7f, 0xcb: 0x07, 0xcc: 0x80, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,\n\t0xd0: 0x81, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x82, 0xd6: 0x83, 0xd7: 0x84,\n\t0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x85, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x86, 0xde: 0x87, 0xdf: 0x88,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,\n\t0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c,\n\t0xf0: 0x1d, 0xf1: 0x1e, 0xf2: 0x1e, 0xf3: 0x20, 0xf4: 0x21,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x89, 0x121: 0x13, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16,\n\t0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8d,\n\t0x130: 0x8e, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x8f, 0x135: 0x21, 0x136: 0x90, 0x137: 0x91,\n\t0x138: 0x92, 0x139: 0x93, 0x13a: 0x22, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x96,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e,\n\t0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6,\n\t0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f,\n\t0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae,\n\t0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6,\n\t0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe,\n\t0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc3,\n\t0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc4, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc5, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc6, 0x187: 0x9b,\n\t0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0x9b,\n\t0x190: 0xca, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b,\n\t0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b,\n\t0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b,\n\t0x1a8: 0xcb, 0x1a9: 0xcc, 0x1aa: 0x9b, 0x1ab: 0xcd, 0x1ac: 0x9b, 0x1ad: 0xce, 0x1ae: 0xcf, 0x1af: 0xd0,\n\t0x1b0: 0xd1, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd2, 0x1b5: 0xd3, 0x1b6: 0xd4, 0x1b7: 0xd5,\n\t0x1b8: 0xd6, 0x1b9: 0xd7, 0x1ba: 0xd8, 0x1bb: 0xd9, 0x1bc: 0xda, 0x1bd: 0xdb, 0x1be: 0xdc, 0x1bf: 0x37,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x38, 0x1c1: 0xdd, 0x1c2: 0xde, 0x1c3: 0xdf, 0x1c4: 0xe0, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe1,\n\t0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0x3e, 0x1cd: 0x3f, 0x1ce: 0x40, 0x1cf: 0x41,\n\t0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f,\n\t0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f,\n\t0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f,\n\t0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f,\n\t0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f,\n\t0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f,\n\t0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f,\n\t0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f,\n\t0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f,\n\t0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f,\n\t0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f,\n\t0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b,\n\t0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f,\n\t0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f,\n\t0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f,\n\t0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f,\n\t0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f,\n\t0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f,\n\t0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f,\n\t0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f,\n\t0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f,\n\t0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f,\n\t0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f,\n\t0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f,\n\t0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f,\n\t0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f,\n\t0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe3,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f,\n\t0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f,\n\t0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe4, 0x2d3: 0xe5, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f,\n\t0x2d8: 0xe6, 0x2d9: 0x42, 0x2da: 0x43, 0x2db: 0xe7, 0x2dc: 0x44, 0x2dd: 0x45, 0x2de: 0x46, 0x2df: 0xe8,\n\t0x2e0: 0xe9, 0x2e1: 0xea, 0x2e2: 0xeb, 0x2e3: 0xec, 0x2e4: 0xed, 0x2e5: 0xee, 0x2e6: 0xef, 0x2e7: 0xf0,\n\t0x2e8: 0xf1, 0x2e9: 0xf2, 0x2ea: 0xf3, 0x2eb: 0xf4, 0x2ec: 0xf5, 0x2ed: 0xf6, 0x2ee: 0xf7, 0x2ef: 0xf8,\n\t0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f,\n\t0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f,\n\t0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f,\n\t0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f,\n\t0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xf9, 0x31f: 0xfa,\n\t// Block 0xd, offset 0x340\n\t0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba,\n\t0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba,\n\t0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba,\n\t0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba,\n\t0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba,\n\t0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba,\n\t0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba,\n\t0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba,\n\t0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba,\n\t0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba,\n\t0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba,\n\t0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfb, 0x3a5: 0xfc, 0x3a6: 0xfd, 0x3a7: 0xfe,\n\t0x3a8: 0x47, 0x3a9: 0xff, 0x3aa: 0x100, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c,\n\t0x3b0: 0x101, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x102, 0x3b7: 0x52,\n\t0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x103, 0x3c1: 0x104, 0x3c2: 0x9f, 0x3c3: 0x105, 0x3c4: 0x106, 0x3c5: 0x9b, 0x3c6: 0x107, 0x3c7: 0x108,\n\t0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x109, 0x3cb: 0x10a, 0x3cc: 0x10b, 0x3cd: 0x10c, 0x3ce: 0x10d, 0x3cf: 0x10e,\n\t0x3d0: 0x10f, 0x3d1: 0x9f, 0x3d2: 0x110, 0x3d3: 0x111, 0x3d4: 0x112, 0x3d5: 0x113, 0x3d6: 0xba, 0x3d7: 0xba,\n\t0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x114, 0x3dd: 0x115, 0x3de: 0xba, 0x3df: 0xba,\n\t0x3e0: 0x116, 0x3e1: 0x117, 0x3e2: 0x118, 0x3e3: 0x119, 0x3e4: 0x11a, 0x3e5: 0xba, 0x3e6: 0x11b, 0x3e7: 0x11c,\n\t0x3e8: 0x11d, 0x3e9: 0x11e, 0x3ea: 0x11f, 0x3eb: 0x5b, 0x3ec: 0x120, 0x3ed: 0x121, 0x3ee: 0x5c, 0x3ef: 0xba,\n\t0x3f0: 0x122, 0x3f1: 0x123, 0x3f2: 0x124, 0x3f3: 0x125, 0x3f4: 0xba, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba,\n\t0x3f8: 0xba, 0x3f9: 0x126, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0xba, 0x3fd: 0xba, 0x3fe: 0xba, 0x3ff: 0xba,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x127, 0x401: 0x128, 0x402: 0x129, 0x403: 0x12a, 0x404: 0x12b, 0x405: 0x12c, 0x406: 0x12d, 0x407: 0x12e,\n\t0x408: 0x12f, 0x409: 0xba, 0x40a: 0x130, 0x40b: 0x131, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xba, 0x40f: 0xba,\n\t0x410: 0x132, 0x411: 0x133, 0x412: 0x134, 0x413: 0x135, 0x414: 0xba, 0x415: 0xba, 0x416: 0x136, 0x417: 0x137,\n\t0x418: 0x138, 0x419: 0x139, 0x41a: 0x13a, 0x41b: 0x13b, 0x41c: 0x13c, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba,\n\t0x420: 0xba, 0x421: 0xba, 0x422: 0x13d, 0x423: 0x13e, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba,\n\t0x428: 0x13f, 0x429: 0x140, 0x42a: 0x141, 0x42b: 0x142, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba,\n\t0x430: 0x143, 0x431: 0x144, 0x432: 0x145, 0x433: 0xba, 0x434: 0x146, 0x435: 0x147, 0x436: 0xba, 0x437: 0xba,\n\t0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0xba, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f,\n\t0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x148, 0x44f: 0xba,\n\t0x450: 0x9b, 0x451: 0x149, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x14a, 0x456: 0xba, 0x457: 0xba,\n\t0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba,\n\t0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba,\n\t0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba,\n\t0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba,\n\t0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f,\n\t0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f,\n\t0x490: 0x14b, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba,\n\t0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba,\n\t0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba,\n\t0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba,\n\t0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba,\n\t0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba,\n\t0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba,\n\t0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f,\n\t0x4d8: 0x9f, 0x4d9: 0x14c, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba,\n\t0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba,\n\t0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba,\n\t0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba,\n\t0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba,\n\t// Block 0x14, offset 0x500\n\t0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba,\n\t0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba,\n\t0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba,\n\t0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba,\n\t0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f,\n\t0x528: 0x142, 0x529: 0x14d, 0x52a: 0xba, 0x52b: 0x14e, 0x52c: 0x14f, 0x52d: 0x150, 0x52e: 0x151, 0x52f: 0xba,\n\t0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba,\n\t0x538: 0xba, 0x539: 0xba, 0x53a: 0xba, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x152, 0x53e: 0x153, 0x53f: 0x154,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f,\n\t0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f,\n\t0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f,\n\t0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x155,\n\t0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f,\n\t0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x156, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba,\n\t0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba,\n\t0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x9f, 0x581: 0x9f, 0x582: 0x9f, 0x583: 0x9f, 0x584: 0x157, 0x585: 0x158, 0x586: 0x9f, 0x587: 0x9f,\n\t0x588: 0x9f, 0x589: 0x9f, 0x58a: 0x9f, 0x58b: 0x159, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba,\n\t0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba,\n\t0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba,\n\t0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba,\n\t0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba,\n\t0x5b0: 0x9f, 0x5b1: 0x15a, 0x5b2: 0x15b, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba,\n\t0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x15c, 0x5c4: 0x15d, 0x5c5: 0x15e, 0x5c6: 0x15f, 0x5c7: 0x160,\n\t0x5c8: 0x9b, 0x5c9: 0x161, 0x5ca: 0xba, 0x5cb: 0xba, 0x5cc: 0x9b, 0x5cd: 0x162, 0x5ce: 0xba, 0x5cf: 0xba,\n\t0x5d0: 0x5f, 0x5d1: 0x60, 0x5d2: 0x61, 0x5d3: 0x62, 0x5d4: 0x63, 0x5d5: 0x64, 0x5d6: 0x65, 0x5d7: 0x66,\n\t0x5d8: 0x67, 0x5d9: 0x68, 0x5da: 0x69, 0x5db: 0x6a, 0x5dc: 0x6b, 0x5dd: 0x6c, 0x5de: 0x6d, 0x5df: 0x6e,\n\t0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b,\n\t0x5e8: 0x163, 0x5e9: 0x164, 0x5ea: 0x165, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba,\n\t0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba,\n\t0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x166, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba,\n\t0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba,\n\t0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba,\n\t0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba,\n\t0x620: 0x122, 0x621: 0x122, 0x622: 0x122, 0x623: 0x167, 0x624: 0x6f, 0x625: 0x168, 0x626: 0xba, 0x627: 0xba,\n\t0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba,\n\t0x630: 0xba, 0x631: 0xba, 0x632: 0xba, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba,\n\t0x638: 0x70, 0x639: 0x71, 0x63a: 0x72, 0x63b: 0x169, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x16a, 0x641: 0x9b, 0x642: 0x16b, 0x643: 0x16c, 0x644: 0x73, 0x645: 0x74, 0x646: 0x16d, 0x647: 0x16e,\n\t0x648: 0x75, 0x649: 0x16f, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b,\n\t0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b,\n\t0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x170, 0x65c: 0x9b, 0x65d: 0x171, 0x65e: 0x9b, 0x65f: 0x172,\n\t0x660: 0x173, 0x661: 0x174, 0x662: 0x175, 0x663: 0xba, 0x664: 0x176, 0x665: 0x177, 0x666: 0x178, 0x667: 0x179,\n\t0x668: 0xba, 0x669: 0xba, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba,\n\t0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba,\n\t0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f,\n\t0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f,\n\t0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f,\n\t0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x17a, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f,\n\t0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f,\n\t0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f,\n\t0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f,\n\t0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f,\n\t0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f,\n\t0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f,\n\t0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x17b, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f,\n\t0x6e0: 0x17c, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f,\n\t0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f,\n\t0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f,\n\t0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f,\n\t0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f,\n\t0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f,\n\t0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f,\n\t0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f,\n\t0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f,\n\t0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f,\n\t0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x17d, 0x73b: 0x9f, 0x73c: 0x9f, 0x73d: 0x9f, 0x73e: 0x9f, 0x73f: 0x9f,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x9f, 0x741: 0x9f, 0x742: 0x9f, 0x743: 0x9f, 0x744: 0x9f, 0x745: 0x9f, 0x746: 0x9f, 0x747: 0x9f,\n\t0x748: 0x9f, 0x749: 0x9f, 0x74a: 0x9f, 0x74b: 0x9f, 0x74c: 0x9f, 0x74d: 0x9f, 0x74e: 0x9f, 0x74f: 0x9f,\n\t0x750: 0x9f, 0x751: 0x9f, 0x752: 0x9f, 0x753: 0x9f, 0x754: 0x9f, 0x755: 0x9f, 0x756: 0x9f, 0x757: 0x9f,\n\t0x758: 0x9f, 0x759: 0x9f, 0x75a: 0x9f, 0x75b: 0x9f, 0x75c: 0x9f, 0x75d: 0x9f, 0x75e: 0x9f, 0x75f: 0x9f,\n\t0x760: 0x9f, 0x761: 0x9f, 0x762: 0x9f, 0x763: 0x9f, 0x764: 0x9f, 0x765: 0x9f, 0x766: 0x9f, 0x767: 0x9f,\n\t0x768: 0x9f, 0x769: 0x9f, 0x76a: 0x9f, 0x76b: 0x9f, 0x76c: 0x9f, 0x76d: 0x9f, 0x76e: 0x9f, 0x76f: 0x17e,\n\t0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba,\n\t0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0xba, 0x781: 0xba, 0x782: 0xba, 0x783: 0xba, 0x784: 0xba, 0x785: 0xba, 0x786: 0xba, 0x787: 0xba,\n\t0x788: 0xba, 0x789: 0xba, 0x78a: 0xba, 0x78b: 0xba, 0x78c: 0xba, 0x78d: 0xba, 0x78e: 0xba, 0x78f: 0xba,\n\t0x790: 0xba, 0x791: 0xba, 0x792: 0xba, 0x793: 0xba, 0x794: 0xba, 0x795: 0xba, 0x796: 0xba, 0x797: 0xba,\n\t0x798: 0xba, 0x799: 0xba, 0x79a: 0xba, 0x79b: 0xba, 0x79c: 0xba, 0x79d: 0xba, 0x79e: 0xba, 0x79f: 0xba,\n\t0x7a0: 0x76, 0x7a1: 0x77, 0x7a2: 0x78, 0x7a3: 0x17f, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x180, 0x7a7: 0x7b,\n\t0x7a8: 0x7c, 0x7a9: 0xba, 0x7aa: 0xba, 0x7ab: 0xba, 0x7ac: 0xba, 0x7ad: 0xba, 0x7ae: 0xba, 0x7af: 0xba,\n\t0x7b0: 0xba, 0x7b1: 0xba, 0x7b2: 0xba, 0x7b3: 0xba, 0x7b4: 0xba, 0x7b5: 0xba, 0x7b6: 0xba, 0x7b7: 0xba,\n\t0x7b8: 0xba, 0x7b9: 0xba, 0x7ba: 0xba, 0x7bb: 0xba, 0x7bc: 0xba, 0x7bd: 0xba, 0x7be: 0xba, 0x7bf: 0xba,\n\t// Block 0x1f, offset 0x7c0\n\t0x7d0: 0x0d, 0x7d1: 0x0e, 0x7d2: 0x0f, 0x7d3: 0x10, 0x7d4: 0x11, 0x7d5: 0x0b, 0x7d6: 0x12, 0x7d7: 0x07,\n\t0x7d8: 0x13, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x14, 0x7dc: 0x0b, 0x7dd: 0x15, 0x7de: 0x16, 0x7df: 0x17,\n\t0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07,\n\t0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x18, 0x7eb: 0x19, 0x7ec: 0x1a, 0x7ed: 0x07, 0x7ee: 0x1b, 0x7ef: 0x1c,\n\t0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b,\n\t0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x0b, 0x801: 0x0b, 0x802: 0x0b, 0x803: 0x0b, 0x804: 0x0b, 0x805: 0x0b, 0x806: 0x0b, 0x807: 0x0b,\n\t0x808: 0x0b, 0x809: 0x0b, 0x80a: 0x0b, 0x80b: 0x0b, 0x80c: 0x0b, 0x80d: 0x0b, 0x80e: 0x0b, 0x80f: 0x0b,\n\t0x810: 0x0b, 0x811: 0x0b, 0x812: 0x0b, 0x813: 0x0b, 0x814: 0x0b, 0x815: 0x0b, 0x816: 0x0b, 0x817: 0x0b,\n\t0x818: 0x0b, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x0b, 0x81c: 0x0b, 0x81d: 0x0b, 0x81e: 0x0b, 0x81f: 0x0b,\n\t0x820: 0x0b, 0x821: 0x0b, 0x822: 0x0b, 0x823: 0x0b, 0x824: 0x0b, 0x825: 0x0b, 0x826: 0x0b, 0x827: 0x0b,\n\t0x828: 0x0b, 0x829: 0x0b, 0x82a: 0x0b, 0x82b: 0x0b, 0x82c: 0x0b, 0x82d: 0x0b, 0x82e: 0x0b, 0x82f: 0x0b,\n\t0x830: 0x0b, 0x831: 0x0b, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b,\n\t0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x181, 0x841: 0x182, 0x842: 0xba, 0x843: 0xba, 0x844: 0x183, 0x845: 0x183, 0x846: 0x183, 0x847: 0x184,\n\t0x848: 0xba, 0x849: 0xba, 0x84a: 0xba, 0x84b: 0xba, 0x84c: 0xba, 0x84d: 0xba, 0x84e: 0xba, 0x84f: 0xba,\n\t0x850: 0xba, 0x851: 0xba, 0x852: 0xba, 0x853: 0xba, 0x854: 0xba, 0x855: 0xba, 0x856: 0xba, 0x857: 0xba,\n\t0x858: 0xba, 0x859: 0xba, 0x85a: 0xba, 0x85b: 0xba, 0x85c: 0xba, 0x85d: 0xba, 0x85e: 0xba, 0x85f: 0xba,\n\t0x860: 0xba, 0x861: 0xba, 0x862: 0xba, 0x863: 0xba, 0x864: 0xba, 0x865: 0xba, 0x866: 0xba, 0x867: 0xba,\n\t0x868: 0xba, 0x869: 0xba, 0x86a: 0xba, 0x86b: 0xba, 0x86c: 0xba, 0x86d: 0xba, 0x86e: 0xba, 0x86f: 0xba,\n\t0x870: 0xba, 0x871: 0xba, 0x872: 0xba, 0x873: 0xba, 0x874: 0xba, 0x875: 0xba, 0x876: 0xba, 0x877: 0xba,\n\t0x878: 0xba, 0x879: 0xba, 0x87a: 0xba, 0x87b: 0xba, 0x87c: 0xba, 0x87d: 0xba, 0x87e: 0xba, 0x87f: 0xba,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b,\n\t0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b,\n\t0x890: 0x0b, 0x891: 0x0b, 0x892: 0x0b, 0x893: 0x0b, 0x894: 0x0b, 0x895: 0x0b, 0x896: 0x0b, 0x897: 0x0b,\n\t0x898: 0x0b, 0x899: 0x0b, 0x89a: 0x0b, 0x89b: 0x0b, 0x89c: 0x0b, 0x89d: 0x0b, 0x89e: 0x0b, 0x89f: 0x0b,\n\t0x8a0: 0x1f, 0x8a1: 0x0b, 0x8a2: 0x0b, 0x8a3: 0x0b, 0x8a4: 0x0b, 0x8a5: 0x0b, 0x8a6: 0x0b, 0x8a7: 0x0b,\n\t0x8a8: 0x0b, 0x8a9: 0x0b, 0x8aa: 0x0b, 0x8ab: 0x0b, 0x8ac: 0x0b, 0x8ad: 0x0b, 0x8ae: 0x0b, 0x8af: 0x0b,\n\t0x8b0: 0x0b, 0x8b1: 0x0b, 0x8b2: 0x0b, 0x8b3: 0x0b, 0x8b4: 0x0b, 0x8b5: 0x0b, 0x8b6: 0x0b, 0x8b7: 0x0b,\n\t0x8b8: 0x0b, 0x8b9: 0x0b, 0x8ba: 0x0b, 0x8bb: 0x0b, 0x8bc: 0x0b, 0x8bd: 0x0b, 0x8be: 0x0b, 0x8bf: 0x0b,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b,\n\t0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b,\n}\n\n// idnaSparseOffset: 264 entries, 528 bytes\nvar idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x4f, 0x5e, 0x63, 0x6b, 0x77, 0x85, 0x8a, 0x93, 0xa3, 0xb1, 0xbd, 0xc9, 0xda, 0xe4, 0xeb, 0xf8, 0x109, 0x110, 0x11b, 0x12a, 0x138, 0x142, 0x144, 0x149, 0x14c, 0x14f, 0x151, 0x15d, 0x168, 0x170, 0x176, 0x17c, 0x181, 0x186, 0x189, 0x18d, 0x193, 0x198, 0x1a4, 0x1ae, 0x1b4, 0x1c5, 0x1cf, 0x1d2, 0x1da, 0x1dd, 0x1ea, 0x1f2, 0x1f6, 0x1fd, 0x205, 0x215, 0x221, 0x223, 0x22d, 0x239, 0x245, 0x251, 0x259, 0x25e, 0x268, 0x279, 0x27d, 0x288, 0x28c, 0x295, 0x29d, 0x2a3, 0x2a8, 0x2ab, 0x2af, 0x2b5, 0x2b9, 0x2bd, 0x2c3, 0x2ca, 0x2d0, 0x2d8, 0x2df, 0x2ea, 0x2f4, 0x2f8, 0x2fb, 0x301, 0x305, 0x307, 0x30a, 0x30c, 0x30f, 0x319, 0x31c, 0x32b, 0x32f, 0x334, 0x337, 0x33b, 0x340, 0x345, 0x34b, 0x351, 0x360, 0x366, 0x36a, 0x379, 0x37e, 0x386, 0x390, 0x39b, 0x3a3, 0x3b4, 0x3bd, 0x3cd, 0x3da, 0x3e4, 0x3e9, 0x3f6, 0x3fa, 0x3ff, 0x401, 0x405, 0x407, 0x40b, 0x414, 0x41a, 0x41e, 0x42e, 0x438, 0x43d, 0x440, 0x446, 0x44d, 0x452, 0x456, 0x45c, 0x461, 0x46a, 0x46f, 0x475, 0x47c, 0x483, 0x48a, 0x48e, 0x493, 0x496, 0x49b, 0x4a7, 0x4ad, 0x4b2, 0x4b9, 0x4c1, 0x4c6, 0x4ca, 0x4da, 0x4e1, 0x4e5, 0x4e9, 0x4f0, 0x4f2, 0x4f5, 0x4f8, 0x4fc, 0x500, 0x506, 0x50f, 0x51b, 0x522, 0x52b, 0x533, 0x53a, 0x548, 0x555, 0x562, 0x56b, 0x56f, 0x57d, 0x585, 0x590, 0x599, 0x59f, 0x5a7, 0x5b0, 0x5ba, 0x5bd, 0x5c9, 0x5cc, 0x5d1, 0x5de, 0x5e7, 0x5f3, 0x5f6, 0x600, 0x609, 0x615, 0x622, 0x62a, 0x62d, 0x632, 0x635, 0x638, 0x63b, 0x642, 0x649, 0x64d, 0x658, 0x65b, 0x661, 0x666, 0x66a, 0x66d, 0x670, 0x673, 0x676, 0x679, 0x67e, 0x688, 0x68b, 0x68f, 0x69e, 0x6aa, 0x6ae, 0x6b3, 0x6b8, 0x6bc, 0x6c1, 0x6ca, 0x6d5, 0x6db, 0x6e3, 0x6e7, 0x6eb, 0x6f1, 0x6f7, 0x6fc, 0x6ff, 0x70f, 0x716, 0x719, 0x71c, 0x720, 0x726, 0x72b, 0x730, 0x735, 0x738, 0x73d, 0x740, 0x743, 0x747, 0x74b, 0x74e, 0x75e, 0x76f, 0x774, 0x776, 0x778}\n\n// idnaSparseValues: 1915 entries, 7660 bytes\nvar idnaSparseValues = [1915]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe105, lo: 0x80, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0x97},\n\t{value: 0xe105, lo: 0x98, hi: 0x9e},\n\t{value: 0x001f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbf},\n\t// Block 0x1, offset 0x8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0xe01d, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0335, lo: 0x83, hi: 0x83},\n\t{value: 0x034d, lo: 0x84, hi: 0x84},\n\t{value: 0x0365, lo: 0x85, hi: 0x85},\n\t{value: 0xe00d, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0xe00d, lo: 0x88, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x89},\n\t{value: 0xe00d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe00d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0x8d},\n\t{value: 0xe00d, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0xbf},\n\t// Block 0x2, offset 0x19\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0249, lo: 0xb0, hi: 0xb0},\n\t{value: 0x037d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0259, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0269, lo: 0xb3, hi: 0xb3},\n\t{value: 0x034d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0395, lo: 0xb5, hi: 0xb5},\n\t{value: 0xe1bd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0279, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0289, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbf},\n\t// Block 0x3, offset 0x25\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x3308, lo: 0x80, hi: 0xbf},\n\t// Block 0x4, offset 0x27\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x03f5, lo: 0x80, hi: 0x8f},\n\t{value: 0xe105, lo: 0x90, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5, offset 0x2c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x0545, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x0008, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x6, offset 0x34\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0401, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x88},\n\t{value: 0x0018, lo: 0x89, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7, offset 0x3f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0818, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x82},\n\t{value: 0x0818, lo: 0x83, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x8, offset 0x4b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0c08, lo: 0x88, hi: 0x99},\n\t{value: 0x0a08, lo: 0x9a, hi: 0xbf},\n\t// Block 0x9, offset 0x4f\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0c08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0a08, lo: 0x8e, hi: 0x98},\n\t{value: 0x0c08, lo: 0x99, hi: 0x9b},\n\t{value: 0x0a08, lo: 0x9c, hi: 0xaa},\n\t{value: 0x0c08, lo: 0xab, hi: 0xac},\n\t{value: 0x0a08, lo: 0xad, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0a08, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0c08, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xa, offset 0x5e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xb, offset 0x63\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0xc, offset 0x6b\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x99},\n\t{value: 0x0808, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa3},\n\t{value: 0x0808, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa7},\n\t{value: 0x0808, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0818, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd, offset 0x77\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0a08, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0c08, lo: 0xaa, hi: 0xac},\n\t{value: 0x0808, lo: 0xad, hi: 0xad},\n\t{value: 0x0c08, lo: 0xae, hi: 0xae},\n\t{value: 0x0a08, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0a08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0a08, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xe, offset 0x85\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa1},\n\t{value: 0x0840, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xbf},\n\t// Block 0xf, offset 0x8a\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x10, offset 0x93\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x85},\n\t{value: 0x3008, lo: 0x86, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8c},\n\t{value: 0x3b08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x11, offset 0xa3\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x12, offset 0xb1\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xba},\n\t{value: 0x3b08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x13, offset 0xbd\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0040, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x14, offset 0xc9\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x89},\n\t{value: 0x3b08, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x3008, lo: 0x98, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x15, offset 0xda\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x08f1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb9},\n\t{value: 0x3b08, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x16, offset 0xe4\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0xbf},\n\t// Block 0x17, offset 0xeb\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0961, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0999, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0008, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x18, offset 0xf8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe03d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x19, offset 0x109\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0x1a, offset 0x110\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1b, offset 0x11b\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3008, lo: 0xa2, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbf},\n\t// Block 0x1c, offset 0x12a\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x8c},\n\t{value: 0x3308, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x3008, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x1d, offset 0x138\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x86},\n\t{value: 0x055d, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8c},\n\t{value: 0x055d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe105, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x1e, offset 0x142\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0018, lo: 0x80, hi: 0xbf},\n\t// Block 0x1f, offset 0x144\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa0},\n\t{value: 0x2018, lo: 0xa1, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x20, offset 0x149\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa7},\n\t{value: 0x2018, lo: 0xa8, hi: 0xbf},\n\t// Block 0x21, offset 0x14c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2018, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0xbf},\n\t// Block 0x22, offset 0x14f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0008, lo: 0x80, hi: 0xbf},\n\t// Block 0x23, offset 0x151\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x24, offset 0x15d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x25, offset 0x168\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x26, offset 0x170\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x27, offset 0x176\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x28, offset 0x17c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x29, offset 0x181\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x2a, offset 0x186\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x2b, offset 0x189\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xbf},\n\t// Block 0x2c, offset 0x18d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2d, offset 0x193\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x2e, offset 0x198\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x3b08, lo: 0x94, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x2f, offset 0x1a4\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x30, offset 0x1ae\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xb3},\n\t{value: 0x3340, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x31, offset 0x1b4\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x3008, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x91},\n\t{value: 0x3b08, lo: 0x92, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0x96},\n\t{value: 0x0008, lo: 0x97, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x32, offset 0x1c5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x86},\n\t{value: 0x0218, lo: 0x87, hi: 0x87},\n\t{value: 0x0018, lo: 0x88, hi: 0x8a},\n\t{value: 0x33c0, lo: 0x8b, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0208, lo: 0xa0, hi: 0xbf},\n\t// Block 0x33, offset 0x1cf\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0208, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x34, offset 0x1d2\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0208, lo: 0x87, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0208, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x35, offset 0x1da\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x36, offset 0x1dd\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x37, offset 0x1ea\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x38, offset 0x1f2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x39, offset 0x1f6\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0028, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xbf},\n\t// Block 0x3a, offset 0x1fd\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x3308, lo: 0x97, hi: 0x98},\n\t{value: 0x3008, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x3b, offset 0x205\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x94},\n\t{value: 0x3008, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xac},\n\t{value: 0x3008, lo: 0xad, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3c, offset 0x215\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbd},\n\t{value: 0x3318, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x221\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0040, lo: 0x80, hi: 0xbf},\n\t// Block 0x3e, offset 0x223\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3008, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x3f, offset 0x22d\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x3808, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x40, offset 0x239\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3808, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xbf},\n\t// Block 0x41, offset 0x245\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3008, lo: 0xaa, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3808, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x42, offset 0x251\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x43, offset 0x259\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x44, offset 0x25e\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0e29, lo: 0x80, hi: 0x80},\n\t{value: 0x0e41, lo: 0x81, hi: 0x81},\n\t{value: 0x0e59, lo: 0x82, hi: 0x82},\n\t{value: 0x0e71, lo: 0x83, hi: 0x83},\n\t{value: 0x0e89, lo: 0x84, hi: 0x85},\n\t{value: 0x0ea1, lo: 0x86, hi: 0x86},\n\t{value: 0x0eb9, lo: 0x87, hi: 0x87},\n\t{value: 0x057d, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0x45, offset 0x268\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x92},\n\t{value: 0x0018, lo: 0x93, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0008, lo: 0xa9, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x46, offset 0x279\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0x47, offset 0x27d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x87},\n\t{value: 0xe045, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0xe045, lo: 0x98, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0xe045, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbf},\n\t// Block 0x48, offset 0x288\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x3318, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x49, offset 0x28c\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x24c1, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x4a, offset 0x295\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x24f1, lo: 0xac, hi: 0xac},\n\t{value: 0x2529, lo: 0xad, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xae},\n\t{value: 0x2579, lo: 0xaf, hi: 0xaf},\n\t{value: 0x25b1, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x4b, offset 0x29d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x9f},\n\t{value: 0x0080, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xad},\n\t{value: 0x0080, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x4c, offset 0x2a3\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa8},\n\t{value: 0x09c5, lo: 0xa9, hi: 0xa9},\n\t{value: 0x09e5, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xbf},\n\t// Block 0x4d, offset 0x2a8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0x4e, offset 0x2ab\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x28c1, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x4f, offset 0x2af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0e66, lo: 0xb4, hi: 0xb4},\n\t{value: 0x292a, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0e86, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x50, offset 0x2b5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x9b},\n\t{value: 0x2941, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0xbf},\n\t// Block 0x51, offset 0x2b9\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x52, offset 0x2bd\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0018, lo: 0xbd, hi: 0xbf},\n\t// Block 0x53, offset 0x2c3\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0xab},\n\t{value: 0x0018, lo: 0xac, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x54, offset 0x2ca\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x03f5, lo: 0x90, hi: 0x9f},\n\t{value: 0x0ea5, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x55, offset 0x2d0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x56, offset 0x2d8\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xae},\n\t{value: 0xe075, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x57, offset 0x2df\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x58, offset 0x2ea\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xbf},\n\t// Block 0x59, offset 0x2f4\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5a, offset 0x2f8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0x5b, offset 0x2fb\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9e},\n\t{value: 0x0edd, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x5c, offset 0x301\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb2},\n\t{value: 0x0efd, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x5d, offset 0x305\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x0f1d, lo: 0x80, hi: 0xbf},\n\t// Block 0x5e, offset 0x307\n\t{value: 0x0020, lo: 0x02},\n\t{value: 0x171d, lo: 0x80, hi: 0x8f},\n\t{value: 0x18fd, lo: 0x90, hi: 0xbf},\n\t// Block 0x5f, offset 0x30a\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x1efd, lo: 0x80, hi: 0xbf},\n\t// Block 0x60, offset 0x30c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x61, offset 0x30f\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9a},\n\t{value: 0x29e2, lo: 0x9b, hi: 0x9b},\n\t{value: 0x2a0a, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9e},\n\t{value: 0x2a31, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x62, offset 0x319\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x2a69, lo: 0xbf, hi: 0xbf},\n\t// Block 0x63, offset 0x31c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0040, lo: 0x80, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x2a1d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x2a3d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x2a5d, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2a7d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2a5d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2a9d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2abd, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2add, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2afd, lo: 0xba, hi: 0xbb},\n\t{value: 0x2b1d, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2afd, lo: 0xbe, hi: 0xbf},\n\t// Block 0x64, offset 0x32b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x65, offset 0x32f\n\t{value: 0x0030, lo: 0x04},\n\t{value: 0x2aa2, lo: 0x80, hi: 0x9d},\n\t{value: 0x305a, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x30a2, lo: 0xa0, hi: 0xbf},\n\t// Block 0x66, offset 0x334\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0x67, offset 0x337\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x68, offset 0x33b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x69, offset 0x340\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x6a, offset 0x345\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0018, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6b, offset 0x34b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2009, lo: 0xb8, hi: 0xb8},\n\t{value: 0x6e89, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xbf},\n\t// Block 0x6c, offset 0x351\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x3308, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0008, lo: 0x8c, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x6d, offset 0x360\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0208, lo: 0x80, hi: 0xb1},\n\t{value: 0x0108, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6e, offset 0x366\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xbf},\n\t// Block 0x6f, offset 0x36a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x70, offset 0x379\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x71, offset 0x37e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x91},\n\t{value: 0x3008, lo: 0x92, hi: 0x92},\n\t{value: 0x3808, lo: 0x93, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x72, offset 0x386\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb9},\n\t{value: 0x3008, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x73, offset 0x390\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x74, offset 0x39b\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x75, offset 0x3a3\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3008, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x76, offset 0x3b4\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x77, offset 0x3bd\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x9a},\n\t{value: 0x0008, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3b08, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x78, offset 0x3cd\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x90},\n\t{value: 0x0008, lo: 0x91, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x79, offset 0x3da\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4465, lo: 0x9c, hi: 0x9c},\n\t{value: 0x447d, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2971, lo: 0x9e, hi: 0x9e},\n\t{value: 0xe06d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xaf},\n\t{value: 0x4495, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7a, offset 0x3e4\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x44b5, lo: 0x80, hi: 0x8f},\n\t{value: 0x44d5, lo: 0x90, hi: 0x9f},\n\t{value: 0x44f5, lo: 0xa0, hi: 0xaf},\n\t{value: 0x44d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7b, offset 0x3e9\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3b08, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x7c, offset 0x3f6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7d, offset 0x3fa\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x7e, offset 0x3ff\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x4515, lo: 0x80, hi: 0xbf},\n\t// Block 0x7f, offset 0x401\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x4d15, lo: 0x80, hi: 0x94},\n\t{value: 0x4ad5, lo: 0x95, hi: 0x95},\n\t{value: 0x4fb5, lo: 0x96, hi: 0xbf},\n\t// Block 0x80, offset 0x405\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x54f5, lo: 0x80, hi: 0xbf},\n\t// Block 0x81, offset 0x407\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x5cf5, lo: 0x80, hi: 0x84},\n\t{value: 0x5655, lo: 0x85, hi: 0x85},\n\t{value: 0x5d95, lo: 0x86, hi: 0xbf},\n\t// Block 0x82, offset 0x40b\n\t{value: 0x0020, lo: 0x08},\n\t{value: 0x6b55, lo: 0x80, hi: 0x8f},\n\t{value: 0x6d15, lo: 0x90, hi: 0x90},\n\t{value: 0x6d55, lo: 0x91, hi: 0xab},\n\t{value: 0x6ea1, lo: 0xac, hi: 0xac},\n\t{value: 0x70b5, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x70d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x83, offset 0x414\n\t{value: 0x0020, lo: 0x05},\n\t{value: 0x72d5, lo: 0x80, hi: 0xad},\n\t{value: 0x6535, lo: 0xae, hi: 0xae},\n\t{value: 0x7895, lo: 0xaf, hi: 0xb5},\n\t{value: 0x6f55, lo: 0xb6, hi: 0xb6},\n\t{value: 0x7975, lo: 0xb7, hi: 0xbf},\n\t// Block 0x84, offset 0x41a\n\t{value: 0x0028, lo: 0x03},\n\t{value: 0x7c21, lo: 0x80, hi: 0x82},\n\t{value: 0x7be1, lo: 0x83, hi: 0x83},\n\t{value: 0x7c99, lo: 0x84, hi: 0xbf},\n\t// Block 0x85, offset 0x41e\n\t{value: 0x0038, lo: 0x0f},\n\t{value: 0x9db1, lo: 0x80, hi: 0x83},\n\t{value: 0x9e59, lo: 0x84, hi: 0x85},\n\t{value: 0x9e91, lo: 0x86, hi: 0x87},\n\t{value: 0x9ec9, lo: 0x88, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0xa089, lo: 0x92, hi: 0x97},\n\t{value: 0xa1a1, lo: 0x98, hi: 0x9c},\n\t{value: 0xa281, lo: 0x9d, hi: 0xb3},\n\t{value: 0x9d41, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9db1, lo: 0xb5, hi: 0xb5},\n\t{value: 0xa789, lo: 0xb6, hi: 0xbb},\n\t{value: 0xa869, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa7f9, lo: 0xbd, hi: 0xbd},\n\t{value: 0xa8d9, lo: 0xbe, hi: 0xbf},\n\t// Block 0x86, offset 0x42e\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0008, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x87, offset 0x438\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x88, offset 0x43d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x89, offset 0x440\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x8a, offset 0x446\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x8b, offset 0x44d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x8c, offset 0x452\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8d, offset 0x456\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x8e, offset 0x45c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xbf},\n\t// Block 0x8f, offset 0x461\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x90, offset 0x46a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x91, offset 0x46f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x92, offset 0x475\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x97},\n\t{value: 0x8ad5, lo: 0x98, hi: 0x9f},\n\t{value: 0x8aed, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xbf},\n\t// Block 0x93, offset 0x47c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x8aed, lo: 0xb0, hi: 0xb7},\n\t{value: 0x8ad5, lo: 0xb8, hi: 0xbf},\n\t// Block 0x94, offset 0x483\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x95, offset 0x48a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x96, offset 0x48e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xae},\n\t{value: 0x0018, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x97, offset 0x493\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x98, offset 0x496\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xbf},\n\t// Block 0x99, offset 0x49b\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0808, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0808, lo: 0x8a, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0808, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0808, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9a, offset 0x4a7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0818, lo: 0x97, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0818, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9b, offset 0x4ad\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa6},\n\t{value: 0x0818, lo: 0xa7, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9c, offset 0x4b2\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x0818, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9d, offset 0x4b9\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0818, lo: 0x96, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0818, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9e, offset 0x4c1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbb},\n\t{value: 0x0818, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0808, lo: 0xbe, hi: 0xbf},\n\t// Block 0x9f, offset 0x4c6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0818, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x0818, lo: 0x92, hi: 0xbf},\n\t// Block 0xa0, offset 0x4ca\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x94},\n\t{value: 0x0808, lo: 0x95, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x98},\n\t{value: 0x0808, lo: 0x99, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa1, offset 0x4da\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0818, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0818, lo: 0x90, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0818, lo: 0xbd, hi: 0xbf},\n\t// Block 0xa2, offset 0x4e1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xa3, offset 0x4e5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xbf},\n\t// Block 0xa4, offset 0x4e9\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0818, lo: 0x98, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb7},\n\t{value: 0x0818, lo: 0xb8, hi: 0xbf},\n\t// Block 0xa5, offset 0x4f0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0808, lo: 0x80, hi: 0xbf},\n\t// Block 0xa6, offset 0x4f2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0808, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xa7, offset 0x4f5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x03dd, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xa8, offset 0x4f8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xbf},\n\t// Block 0xa9, offset 0x4fc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0818, lo: 0xa0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xaa, offset 0x500\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xab, offset 0x506\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x91},\n\t{value: 0x0018, lo: 0x92, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xac, offset 0x50f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0340, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0xad, offset 0x51b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xae, offset 0x522\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb2},\n\t{value: 0x3b08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xbf},\n\t// Block 0xaf, offset 0x52b\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb0, offset 0x533\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb1, offset 0x53a\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xb2, offset 0x548\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3808, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb3, offset 0x555\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xb4, offset 0x562\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x3308, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa9},\n\t{value: 0x3b08, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb5, offset 0x56b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xb6, offset 0x56f\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xb7, offset 0x57d\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb8, offset 0x585\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x85},\n\t{value: 0x0018, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xb9, offset 0x590\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xba, offset 0x599\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9b},\n\t{value: 0x3308, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xbb, offset 0x59f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbc, offset 0x5a7\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xbd, offset 0x5b0\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb5},\n\t{value: 0x3808, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0xbe, offset 0x5ba\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xbf, offset 0x5bd\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0xc0, offset 0x5c9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xbf},\n\t// Block 0xc1, offset 0x5cc\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc2, offset 0x5d1\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc3, offset 0x5de\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x3b08, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0xbf},\n\t// Block 0xc4, offset 0x5e7\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x98},\n\t{value: 0x3b08, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xbf},\n\t// Block 0xc5, offset 0x5f3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xc6, offset 0x5f6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc7, offset 0x600\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xbf},\n\t// Block 0xc8, offset 0x609\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xa9},\n\t{value: 0x3308, lo: 0xaa, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xc9, offset 0x615\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xca, offset 0x622\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xcb, offset 0x62a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xcc, offset 0x62d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xcd, offset 0x632\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xce, offset 0x635\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xbf},\n\t// Block 0xcf, offset 0x638\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xbf},\n\t// Block 0xd0, offset 0x63b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xd1, offset 0x642\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xd2, offset 0x649\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0xd3, offset 0x64d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0xd4, offset 0x658\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xd5, offset 0x65b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd6, offset 0x661\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xd7, offset 0x666\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xbf},\n\t// Block 0xd8, offset 0x66a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xd9, offset 0x66d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xda, offset 0x670\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xdb, offset 0x673\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xdc, offset 0x676\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xdd, offset 0x679\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0xde, offset 0x67e\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x03c0, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xdf, offset 0x688\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe0, offset 0x68b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xbf},\n\t// Block 0xe1, offset 0x68f\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0xb5b9, lo: 0x9e, hi: 0x9e},\n\t{value: 0xb601, lo: 0x9f, hi: 0x9f},\n\t{value: 0xb649, lo: 0xa0, hi: 0xa0},\n\t{value: 0xb6b1, lo: 0xa1, hi: 0xa1},\n\t{value: 0xb719, lo: 0xa2, hi: 0xa2},\n\t{value: 0xb781, lo: 0xa3, hi: 0xa3},\n\t{value: 0xb7e9, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3018, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3318, lo: 0xa7, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xac},\n\t{value: 0x3018, lo: 0xad, hi: 0xb2},\n\t{value: 0x0340, lo: 0xb3, hi: 0xba},\n\t{value: 0x3318, lo: 0xbb, hi: 0xbf},\n\t// Block 0xe2, offset 0x69e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3318, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x84},\n\t{value: 0x3318, lo: 0x85, hi: 0x8b},\n\t{value: 0x0018, lo: 0x8c, hi: 0xa9},\n\t{value: 0x3318, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xba},\n\t{value: 0xb851, lo: 0xbb, hi: 0xbb},\n\t{value: 0xb899, lo: 0xbc, hi: 0xbc},\n\t{value: 0xb8e1, lo: 0xbd, hi: 0xbd},\n\t{value: 0xb949, lo: 0xbe, hi: 0xbe},\n\t{value: 0xb9b1, lo: 0xbf, hi: 0xbf},\n\t// Block 0xe3, offset 0x6aa\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xba19, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xbf},\n\t// Block 0xe4, offset 0x6ae\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3318, lo: 0x82, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0xbf},\n\t// Block 0xe5, offset 0x6b3\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xe6, offset 0x6b8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0xe7, offset 0x6bc\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe8, offset 0x6c1\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3308, lo: 0xa1, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe9, offset 0x6ca\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0xea, offset 0x6d5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x86},\n\t{value: 0x0818, lo: 0x87, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xeb, offset 0x6db\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0a08, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xec, offset 0x6e3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xed, offset 0x6e7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0xee, offset 0x6eb\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0xef, offset 0x6f1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xf0, offset 0x6f7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0xc1c1, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xf1, offset 0x6fc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xbf},\n\t// Block 0xf2, offset 0x6ff\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xc7e9, lo: 0x80, hi: 0x80},\n\t{value: 0xc839, lo: 0x81, hi: 0x81},\n\t{value: 0xc889, lo: 0x82, hi: 0x82},\n\t{value: 0xc8d9, lo: 0x83, hi: 0x83},\n\t{value: 0xc929, lo: 0x84, hi: 0x84},\n\t{value: 0xc979, lo: 0x85, hi: 0x85},\n\t{value: 0xc9c9, lo: 0x86, hi: 0x86},\n\t{value: 0xca19, lo: 0x87, hi: 0x87},\n\t{value: 0xca69, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0xcab9, lo: 0x90, hi: 0x90},\n\t{value: 0xcad9, lo: 0x91, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xbf},\n\t// Block 0xf3, offset 0x70f\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xf4, offset 0x716\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0xf5, offset 0x719\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0xbf},\n\t// Block 0xf6, offset 0x71c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0xf7, offset 0x720\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0xf8, offset 0x726\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0xf9, offset 0x72b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xfa, offset 0x730\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0xfb, offset 0x735\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xbf},\n\t// Block 0xfc, offset 0x738\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0xfd, offset 0x73d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xfe, offset 0x740\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xff, offset 0x743\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x100, offset 0x747\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x101, offset 0x74b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x102, offset 0x74e\n\t{value: 0x0020, lo: 0x0f},\n\t{value: 0xdeb9, lo: 0x80, hi: 0x89},\n\t{value: 0x8dfd, lo: 0x8a, hi: 0x8a},\n\t{value: 0xdff9, lo: 0x8b, hi: 0x9c},\n\t{value: 0x8e1d, lo: 0x9d, hi: 0x9d},\n\t{value: 0xe239, lo: 0x9e, hi: 0xa2},\n\t{value: 0x8e3d, lo: 0xa3, hi: 0xa3},\n\t{value: 0xe2d9, lo: 0xa4, hi: 0xab},\n\t{value: 0x7ed5, lo: 0xac, hi: 0xac},\n\t{value: 0xe3d9, lo: 0xad, hi: 0xaf},\n\t{value: 0x8e5d, lo: 0xb0, hi: 0xb0},\n\t{value: 0xe439, lo: 0xb1, hi: 0xb6},\n\t{value: 0x8e7d, lo: 0xb7, hi: 0xb9},\n\t{value: 0xe4f9, lo: 0xba, hi: 0xba},\n\t{value: 0x8edd, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe519, lo: 0xbc, hi: 0xbf},\n\t// Block 0x103, offset 0x75e\n\t{value: 0x0020, lo: 0x10},\n\t{value: 0x937d, lo: 0x80, hi: 0x80},\n\t{value: 0xf099, lo: 0x81, hi: 0x86},\n\t{value: 0x939d, lo: 0x87, hi: 0x8a},\n\t{value: 0xd9f9, lo: 0x8b, hi: 0x8b},\n\t{value: 0xf159, lo: 0x8c, hi: 0x96},\n\t{value: 0x941d, lo: 0x97, hi: 0x97},\n\t{value: 0xf2b9, lo: 0x98, hi: 0xa3},\n\t{value: 0x943d, lo: 0xa4, hi: 0xa6},\n\t{value: 0xf439, lo: 0xa7, hi: 0xaa},\n\t{value: 0x949d, lo: 0xab, hi: 0xab},\n\t{value: 0xf4b9, lo: 0xac, hi: 0xac},\n\t{value: 0x94bd, lo: 0xad, hi: 0xad},\n\t{value: 0xf4d9, lo: 0xae, hi: 0xaf},\n\t{value: 0x94dd, lo: 0xb0, hi: 0xb1},\n\t{value: 0xf519, lo: 0xb2, hi: 0xbe},\n\t{value: 0x2040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x104, offset 0x76f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0340, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x9f},\n\t{value: 0x0340, lo: 0xa0, hi: 0xbf},\n\t// Block 0x105, offset 0x774\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0340, lo: 0x80, hi: 0xbf},\n\t// Block 0x106, offset 0x776\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x33c0, lo: 0x80, hi: 0xbf},\n\t// Block 0x107, offset 0x778\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x33c0, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n}\n\n// Total table size 42114 bytes (41KiB); checksum: 355A58A4\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/tables11.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.13 && !go1.14\n\npackage idna\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"11.0.0\"\n\nvar mappings string = \"\" + // Size: 8175 bytes\n\t\"\\x00\\x01 \\x03 ̈\\x01a\\x03 ̄\\x012\\x013\\x03 ́\\x03 ̧\\x011\\x01o\\x051⁄4\\x051⁄2\" +\n\t\"\\x053⁄4\\x03i̇\\x03l·\\x03ʼn\\x01s\\x03dž\\x03ⱥ\\x03ⱦ\\x01h\\x01j\\x01r\\x01w\\x01y\" +\n\t\"\\x03 ̆\\x03 ̇\\x03 ̊\\x03 ̨\\x03 ̃\\x03 ̋\\x01l\\x01x\\x04̈́\\x03 ι\\x01;\\x05 ̈́\" +\n\t\"\\x04եւ\\x04اٴ\\x04وٴ\\x04ۇٴ\\x04يٴ\\x06क़\\x06ख़\\x06ग़\\x06ज़\\x06ड़\\x06ढ़\\x06फ़\" +\n\t\"\\x06य़\\x06ড়\\x06ঢ়\\x06য়\\x06ਲ਼\\x06ਸ਼\\x06ਖ਼\\x06ਗ਼\\x06ਜ਼\\x06ਫ਼\\x06ଡ଼\\x06ଢ଼\" +\n\t\"\\x06ํา\\x06ໍາ\\x06ຫນ\\x06ຫມ\\x06གྷ\\x06ཌྷ\\x06དྷ\\x06བྷ\\x06ཛྷ\\x06ཀྵ\\x06ཱི\\x06ཱུ\" +\n\t\"\\x06ྲྀ\\x09ྲཱྀ\\x06ླྀ\\x09ླཱྀ\\x06ཱྀ\\x06ྒྷ\\x06ྜྷ\\x06ྡྷ\\x06ྦྷ\\x06ྫྷ\\x06ྐྵ\\x02\" +\n\t\"в\\x02д\\x02о\\x02с\\x02т\\x02ъ\\x02ѣ\\x02æ\\x01b\\x01d\\x01e\\x02ǝ\\x01g\\x01i\\x01k\" +\n\t\"\\x01m\\x01n\\x02ȣ\\x01p\\x01t\\x01u\\x02ɐ\\x02ɑ\\x02ə\\x02ɛ\\x02ɜ\\x02ŋ\\x02ɔ\\x02ɯ\" +\n\t\"\\x01v\\x02β\\x02γ\\x02δ\\x02φ\\x02χ\\x02ρ\\x02н\\x02ɒ\\x01c\\x02ɕ\\x02ð\\x01f\\x02ɟ\" +\n\t\"\\x02ɡ\\x02ɥ\\x02ɨ\\x02ɩ\\x02ɪ\\x02ʝ\\x02ɭ\\x02ʟ\\x02ɱ\\x02ɰ\\x02ɲ\\x02ɳ\\x02ɴ\\x02ɵ\" +\n\t\"\\x02ɸ\\x02ʂ\\x02ʃ\\x02ƫ\\x02ʉ\\x02ʊ\\x02ʋ\\x02ʌ\\x01z\\x02ʐ\\x02ʑ\\x02ʒ\\x02θ\\x02ss\" +\n\t\"\\x02ά\\x02έ\\x02ή\\x02ί\\x02ό\\x02ύ\\x02ώ\\x05ἀι\\x05ἁι\\x05ἂι\\x05ἃι\\x05ἄι\\x05ἅι\" +\n\t\"\\x05ἆι\\x05ἇι\\x05ἠι\\x05ἡι\\x05ἢι\\x05ἣι\\x05ἤι\\x05ἥι\\x05ἦι\\x05ἧι\\x05ὠι\\x05ὡι\" +\n\t\"\\x05ὢι\\x05ὣι\\x05ὤι\\x05ὥι\\x05ὦι\\x05ὧι\\x05ὰι\\x04αι\\x04άι\\x05ᾶι\\x02ι\\x05 ̈͂\" +\n\t\"\\x05ὴι\\x04ηι\\x04ήι\\x05ῆι\\x05 ̓̀\\x05 ̓́\\x05 ̓͂\\x02ΐ\\x05 ̔̀\\x05 ̔́\\x05 ̔͂\" +\n\t\"\\x02ΰ\\x05 ̈̀\\x01`\\x05ὼι\\x04ωι\\x04ώι\\x05ῶι\\x06′′\\x09′′′\\x06‵‵\\x09‵‵‵\\x02!\" +\n\t\"!\\x02??\\x02?!\\x02!?\\x0c′′′′\\x010\\x014\\x015\\x016\\x017\\x018\\x019\\x01+\\x01=\" +\n\t\"\\x01(\\x01)\\x02rs\\x02ħ\\x02no\\x01q\\x02sm\\x02tm\\x02ω\\x02å\\x02א\\x02ב\\x02ג\" +\n\t\"\\x02ד\\x02π\\x051⁄7\\x051⁄9\\x061⁄10\\x051⁄3\\x052⁄3\\x051⁄5\\x052⁄5\\x053⁄5\\x054\" +\n\t\"⁄5\\x051⁄6\\x055⁄6\\x051⁄8\\x053⁄8\\x055⁄8\\x057⁄8\\x041⁄\\x02ii\\x02iv\\x02vi\" +\n\t\"\\x04viii\\x02ix\\x02xi\\x050⁄3\\x06∫∫\\x09∫∫∫\\x06∮∮\\x09∮∮∮\\x0210\\x0211\\x0212\" +\n\t\"\\x0213\\x0214\\x0215\\x0216\\x0217\\x0218\\x0219\\x0220\\x04(10)\\x04(11)\\x04(12)\" +\n\t\"\\x04(13)\\x04(14)\\x04(15)\\x04(16)\\x04(17)\\x04(18)\\x04(19)\\x04(20)\\x0c∫∫∫∫\" +\n\t\"\\x02==\\x05⫝̸\\x02ɫ\\x02ɽ\\x02ȿ\\x02ɀ\\x01.\\x04 ゙\\x04 ゚\\x06より\\x06コト\\x05(ᄀ)\\x05\" +\n\t\"(ᄂ)\\x05(ᄃ)\\x05(ᄅ)\\x05(ᄆ)\\x05(ᄇ)\\x05(ᄉ)\\x05(ᄋ)\\x05(ᄌ)\\x05(ᄎ)\\x05(ᄏ)\\x05(ᄐ\" +\n\t\")\\x05(ᄑ)\\x05(ᄒ)\\x05(가)\\x05(나)\\x05(다)\\x05(라)\\x05(마)\\x05(바)\\x05(사)\\x05(아)\" +\n\t\"\\x05(자)\\x05(차)\\x05(카)\\x05(타)\\x05(파)\\x05(하)\\x05(주)\\x08(오전)\\x08(오후)\\x05(一)\" +\n\t\"\\x05(二)\\x05(三)\\x05(四)\\x05(五)\\x05(六)\\x05(七)\\x05(八)\\x05(九)\\x05(十)\\x05(月)\" +\n\t\"\\x05(火)\\x05(水)\\x05(木)\\x05(金)\\x05(土)\\x05(日)\\x05(株)\\x05(有)\\x05(社)\\x05(名)\" +\n\t\"\\x05(特)\\x05(財)\\x05(祝)\\x05(労)\\x05(代)\\x05(呼)\\x05(学)\\x05(監)\\x05(企)\\x05(資)\" +\n\t\"\\x05(協)\\x05(祭)\\x05(休)\\x05(自)\\x05(至)\\x0221\\x0222\\x0223\\x0224\\x0225\\x0226\" +\n\t\"\\x0227\\x0228\\x0229\\x0230\\x0231\\x0232\\x0233\\x0234\\x0235\\x06참고\\x06주의\\x0236\" +\n\t\"\\x0237\\x0238\\x0239\\x0240\\x0241\\x0242\\x0243\\x0244\\x0245\\x0246\\x0247\\x0248\" +\n\t\"\\x0249\\x0250\\x041月\\x042月\\x043月\\x044月\\x045月\\x046月\\x047月\\x048月\\x049月\\x0510\" +\n\t\"月\\x0511月\\x0512月\\x02hg\\x02ev\\x0cアパート\\x0cアルファ\\x0cアンペア\\x09アール\\x0cイニング\\x09\" +\n\t\"インチ\\x09ウォン\\x0fエスクード\\x0cエーカー\\x09オンス\\x09オーム\\x09カイリ\\x0cカラット\\x0cカロリー\\x09ガロ\" +\n\t\"ン\\x09ガンマ\\x06ギガ\\x09ギニー\\x0cキュリー\\x0cギルダー\\x06キロ\\x0fキログラム\\x12キロメートル\\x0fキロワッ\" +\n\t\"ト\\x09グラム\\x0fグラムトン\\x0fクルゼイロ\\x0cクローネ\\x09ケース\\x09コルナ\\x09コーポ\\x0cサイクル\\x0fサンチ\" +\n\t\"ーム\\x0cシリング\\x09センチ\\x09セント\\x09ダース\\x06デシ\\x06ドル\\x06トン\\x06ナノ\\x09ノット\\x09ハイツ\" +\n\t\"\\x0fパーセント\\x09パーツ\\x0cバーレル\\x0fピアストル\\x09ピクル\\x06ピコ\\x06ビル\\x0fファラッド\\x0cフィート\" +\n\t\"\\x0fブッシェル\\x09フラン\\x0fヘクタール\\x06ペソ\\x09ペニヒ\\x09ヘルツ\\x09ペンス\\x09ページ\\x09ベータ\\x0cポイ\" +\n\t\"ント\\x09ボルト\\x06ホン\\x09ポンド\\x09ホール\\x09ホーン\\x0cマイクロ\\x09マイル\\x09マッハ\\x09マルク\\x0fマ\" +\n\t\"ンション\\x0cミクロン\\x06ミリ\\x0fミリバール\\x06メガ\\x0cメガトン\\x0cメートル\\x09ヤード\\x09ヤール\\x09ユアン\" +\n\t\"\\x0cリットル\\x06リラ\\x09ルピー\\x0cルーブル\\x06レム\\x0fレントゲン\\x09ワット\\x040点\\x041点\\x042点\" +\n\t\"\\x043点\\x044点\\x045点\\x046点\\x047点\\x048点\\x049点\\x0510点\\x0511点\\x0512点\\x0513点\" +\n\t\"\\x0514点\\x0515点\\x0516点\\x0517点\\x0518点\\x0519点\\x0520点\\x0521点\\x0522点\\x0523点\" +\n\t\"\\x0524点\\x02da\\x02au\\x02ov\\x02pc\\x02dm\\x02iu\\x06平成\\x06昭和\\x06大正\\x06明治\\x0c株\" +\n\t\"式会社\\x02pa\\x02na\\x02ma\\x02ka\\x02kb\\x02mb\\x02gb\\x04kcal\\x02pf\\x02nf\\x02m\" +\n\t\"g\\x02kg\\x02hz\\x02ml\\x02dl\\x02kl\\x02fm\\x02nm\\x02mm\\x02cm\\x02km\\x02m2\\x02m\" +\n\t\"3\\x05m∕s\\x06m∕s2\\x07rad∕s\\x08rad∕s2\\x02ps\\x02ns\\x02ms\\x02pv\\x02nv\\x02mv\" +\n\t\"\\x02kv\\x02pw\\x02nw\\x02mw\\x02kw\\x02bq\\x02cc\\x02cd\\x06c∕kg\\x02db\\x02gy\\x02\" +\n\t\"ha\\x02hp\\x02in\\x02kk\\x02kt\\x02lm\\x02ln\\x02lx\\x02ph\\x02pr\\x02sr\\x02sv\\x02\" +\n\t\"wb\\x05v∕m\\x05a∕m\\x041日\\x042日\\x043日\\x044日\\x045日\\x046日\\x047日\\x048日\\x049日\" +\n\t\"\\x0510日\\x0511日\\x0512日\\x0513日\\x0514日\\x0515日\\x0516日\\x0517日\\x0518日\\x0519日\" +\n\t\"\\x0520日\\x0521日\\x0522日\\x0523日\\x0524日\\x0525日\\x0526日\\x0527日\\x0528日\\x0529日\" +\n\t\"\\x0530日\\x0531日\\x02ь\\x02ɦ\\x02ɬ\\x02ʞ\\x02ʇ\\x02œ\\x04𤋮\\x04𢡊\\x04𢡄\\x04𣏕\\x04𥉉\" +\n\t\"\\x04𥳐\\x04𧻓\\x02ff\\x02fi\\x02fl\\x02st\\x04մն\\x04մե\\x04մի\\x04վն\\x04մխ\\x04יִ\" +\n\t\"\\x04ײַ\\x02ע\\x02ה\\x02כ\\x02ל\\x02ם\\x02ר\\x02ת\\x04שׁ\\x04שׂ\\x06שּׁ\\x06שּׂ\\x04א\" +\n\t\"ַ\\x04אָ\\x04אּ\\x04בּ\\x04גּ\\x04דּ\\x04הּ\\x04וּ\\x04זּ\\x04טּ\\x04יּ\\x04ךּ\\x04\" +\n\t\"כּ\\x04לּ\\x04מּ\\x04נּ\\x04סּ\\x04ףּ\\x04פּ\\x04צּ\\x04קּ\\x04רּ\\x04שּ\\x04תּ\" +\n\t\"\\x04וֹ\\x04בֿ\\x04כֿ\\x04פֿ\\x04אל\\x02ٱ\\x02ٻ\\x02پ\\x02ڀ\\x02ٺ\\x02ٿ\\x02ٹ\\x02ڤ\" +\n\t\"\\x02ڦ\\x02ڄ\\x02ڃ\\x02چ\\x02ڇ\\x02ڍ\\x02ڌ\\x02ڎ\\x02ڈ\\x02ژ\\x02ڑ\\x02ک\\x02گ\\x02ڳ\" +\n\t\"\\x02ڱ\\x02ں\\x02ڻ\\x02ۀ\\x02ہ\\x02ھ\\x02ے\\x02ۓ\\x02ڭ\\x02ۇ\\x02ۆ\\x02ۈ\\x02ۋ\\x02ۅ\" +\n\t\"\\x02ۉ\\x02ې\\x02ى\\x04ئا\\x04ئە\\x04ئو\\x04ئۇ\\x04ئۆ\\x04ئۈ\\x04ئې\\x04ئى\\x02ی\\x04\" +\n\t\"ئج\\x04ئح\\x04ئم\\x04ئي\\x04بج\\x04بح\\x04بخ\\x04بم\\x04بى\\x04بي\\x04تج\\x04تح\" +\n\t\"\\x04تخ\\x04تم\\x04تى\\x04تي\\x04ثج\\x04ثم\\x04ثى\\x04ثي\\x04جح\\x04جم\\x04حج\\x04حم\" +\n\t\"\\x04خج\\x04خح\\x04خم\\x04سج\\x04سح\\x04سخ\\x04سم\\x04صح\\x04صم\\x04ضج\\x04ضح\\x04ضخ\" +\n\t\"\\x04ضم\\x04طح\\x04طم\\x04ظم\\x04عج\\x04عم\\x04غج\\x04غم\\x04فج\\x04فح\\x04فخ\\x04فم\" +\n\t\"\\x04فى\\x04في\\x04قح\\x04قم\\x04قى\\x04قي\\x04كا\\x04كج\\x04كح\\x04كخ\\x04كل\\x04كم\" +\n\t\"\\x04كى\\x04كي\\x04لج\\x04لح\\x04لخ\\x04لم\\x04لى\\x04لي\\x04مج\\x04مح\\x04مخ\\x04مم\" +\n\t\"\\x04مى\\x04مي\\x04نج\\x04نح\\x04نخ\\x04نم\\x04نى\\x04ني\\x04هج\\x04هم\\x04هى\\x04هي\" +\n\t\"\\x04يج\\x04يح\\x04يخ\\x04يم\\x04يى\\x04يي\\x04ذٰ\\x04رٰ\\x04ىٰ\\x05 ٌّ\\x05 ٍّ\\x05\" +\n\t\" َّ\\x05 ُّ\\x05 ِّ\\x05 ّٰ\\x04ئر\\x04ئز\\x04ئن\\x04بر\\x04بز\\x04بن\\x04تر\\x04تز\" +\n\t\"\\x04تن\\x04ثر\\x04ثز\\x04ثن\\x04ما\\x04نر\\x04نز\\x04نن\\x04ير\\x04يز\\x04ين\\x04ئخ\" +\n\t\"\\x04ئه\\x04به\\x04ته\\x04صخ\\x04له\\x04نه\\x04هٰ\\x04يه\\x04ثه\\x04سه\\x04شم\\x04شه\" +\n\t\"\\x06ـَّ\\x06ـُّ\\x06ـِّ\\x04طى\\x04طي\\x04عى\\x04عي\\x04غى\\x04غي\\x04سى\\x04سي\" +\n\t\"\\x04شى\\x04شي\\x04حى\\x04حي\\x04جى\\x04جي\\x04خى\\x04خي\\x04صى\\x04صي\\x04ضى\\x04ضي\" +\n\t\"\\x04شج\\x04شح\\x04شخ\\x04شر\\x04سر\\x04صر\\x04ضر\\x04اً\\x06تجم\\x06تحج\\x06تحم\" +\n\t\"\\x06تخم\\x06تمج\\x06تمح\\x06تمخ\\x06جمح\\x06حمي\\x06حمى\\x06سحج\\x06سجح\\x06سجى\" +\n\t\"\\x06سمح\\x06سمج\\x06سمم\\x06صحح\\x06صمم\\x06شحم\\x06شجي\\x06شمخ\\x06شمم\\x06ضحى\" +\n\t\"\\x06ضخم\\x06طمح\\x06طمم\\x06طمي\\x06عجم\\x06عمم\\x06عمى\\x06غمم\\x06غمي\\x06غمى\" +\n\t\"\\x06فخم\\x06قمح\\x06قمم\\x06لحم\\x06لحي\\x06لحى\\x06لجج\\x06لخم\\x06لمح\\x06محج\" +\n\t\"\\x06محم\\x06محي\\x06مجح\\x06مجم\\x06مخج\\x06مخم\\x06مجخ\\x06همج\\x06همم\\x06نحم\" +\n\t\"\\x06نحى\\x06نجم\\x06نجى\\x06نمي\\x06نمى\\x06يمم\\x06بخي\\x06تجي\\x06تجى\\x06تخي\" +\n\t\"\\x06تخى\\x06تمي\\x06تمى\\x06جمي\\x06جحى\\x06جمى\\x06سخى\\x06صحي\\x06شحي\\x06ضحي\" +\n\t\"\\x06لجي\\x06لمي\\x06يحي\\x06يجي\\x06يمي\\x06ممي\\x06قمي\\x06نحي\\x06عمي\\x06كمي\" +\n\t\"\\x06نجح\\x06مخي\\x06لجم\\x06كمم\\x06جحي\\x06حجي\\x06مجي\\x06فمي\\x06بحي\\x06سخي\" +\n\t\"\\x06نجي\\x06صلے\\x06قلے\\x08الله\\x08اكبر\\x08محمد\\x08صلعم\\x08رسول\\x08عليه\" +\n\t\"\\x08وسلم\\x06صلى!صلى الله عليه وسلم\\x0fجل جلاله\\x08ریال\\x01,\\x01:\\x01!\" +\n\t\"\\x01?\\x01_\\x01{\\x01}\\x01[\\x01]\\x01#\\x01&\\x01*\\x01-\\x01<\\x01>\\x01\\\\\\x01$\" +\n\t\"\\x01%\\x01@\\x04ـً\\x04ـَ\\x04ـُ\\x04ـِ\\x04ـّ\\x04ـْ\\x02ء\\x02آ\\x02أ\\x02ؤ\\x02إ\" +\n\t\"\\x02ئ\\x02ا\\x02ب\\x02ة\\x02ت\\x02ث\\x02ج\\x02ح\\x02خ\\x02د\\x02ذ\\x02ر\\x02ز\\x02س\" +\n\t\"\\x02ش\\x02ص\\x02ض\\x02ط\\x02ظ\\x02ع\\x02غ\\x02ف\\x02ق\\x02ك\\x02ل\\x02م\\x02ن\\x02ه\" +\n\t\"\\x02و\\x02ي\\x04لآ\\x04لأ\\x04لإ\\x04لا\\x01\\x22\\x01'\\x01/\\x01^\\x01|\\x01~\\x02¢\" +\n\t\"\\x02£\\x02¬\\x02¦\\x02¥\\x08𝅗𝅥\\x08𝅘𝅥\\x0c𝅘𝅥𝅮\\x0c𝅘𝅥𝅯\\x0c𝅘𝅥𝅰\\x0c𝅘𝅥𝅱\\x0c𝅘𝅥𝅲\\x08𝆹\" +\n\t\"𝅥\\x08𝆺𝅥\\x0c𝆹𝅥𝅮\\x0c𝆺𝅥𝅮\\x0c𝆹𝅥𝅯\\x0c𝆺𝅥𝅯\\x02ı\\x02ȷ\\x02α\\x02ε\\x02ζ\\x02η\\x02\" +\n\t\"κ\\x02λ\\x02μ\\x02ν\\x02ξ\\x02ο\\x02σ\\x02τ\\x02υ\\x02ψ\\x03∇\\x03∂\\x02ϝ\\x02ٮ\\x02ڡ\" +\n\t\"\\x02ٯ\\x020,\\x021,\\x022,\\x023,\\x024,\\x025,\\x026,\\x027,\\x028,\\x029,\\x03(a)\" +\n\t\"\\x03(b)\\x03(c)\\x03(d)\\x03(e)\\x03(f)\\x03(g)\\x03(h)\\x03(i)\\x03(j)\\x03(k)\" +\n\t\"\\x03(l)\\x03(m)\\x03(n)\\x03(o)\\x03(p)\\x03(q)\\x03(r)\\x03(s)\\x03(t)\\x03(u)\" +\n\t\"\\x03(v)\\x03(w)\\x03(x)\\x03(y)\\x03(z)\\x07〔s〕\\x02wz\\x02hv\\x02sd\\x03ppv\\x02w\" +\n\t\"c\\x02mc\\x02md\\x02dj\\x06ほか\\x06ココ\\x03サ\\x03手\\x03字\\x03双\\x03デ\\x03二\\x03多\\x03解\" +\n\t\"\\x03天\\x03交\\x03映\\x03無\\x03料\\x03前\\x03後\\x03再\\x03新\\x03初\\x03終\\x03生\\x03販\\x03声\" +\n\t\"\\x03吹\\x03演\\x03投\\x03捕\\x03一\\x03三\\x03遊\\x03左\\x03中\\x03右\\x03指\\x03走\\x03打\\x03禁\" +\n\t\"\\x03空\\x03合\\x03満\\x03有\\x03月\\x03申\\x03割\\x03営\\x03配\\x09〔本〕\\x09〔三〕\\x09〔二〕\\x09〔安\" +\n\t\"〕\\x09〔点〕\\x09〔打〕\\x09〔盗〕\\x09〔勝〕\\x09〔敗〕\\x03得\\x03可\\x03丽\\x03丸\\x03乁\\x03你\\x03\" +\n\t\"侮\\x03侻\\x03倂\\x03偺\\x03備\\x03僧\\x03像\\x03㒞\\x03免\\x03兔\\x03兤\\x03具\\x03㒹\\x03內\\x03\" +\n\t\"冗\\x03冤\\x03仌\\x03冬\\x03况\\x03凵\\x03刃\\x03㓟\\x03刻\\x03剆\\x03剷\\x03㔕\\x03勇\\x03勉\\x03\" +\n\t\"勤\\x03勺\\x03包\\x03匆\\x03北\\x03卉\\x03卑\\x03博\\x03即\\x03卽\\x03卿\\x03灰\\x03及\\x03叟\\x03\" +\n\t\"叫\\x03叱\\x03吆\\x03咞\\x03吸\\x03呈\\x03周\\x03咢\\x03哶\\x03唐\\x03啓\\x03啣\\x03善\\x03喙\\x03\" +\n\t\"喫\\x03喳\\x03嗂\\x03圖\\x03嘆\\x03圗\\x03噑\\x03噴\\x03切\\x03壮\\x03城\\x03埴\\x03堍\\x03型\\x03\" +\n\t\"堲\\x03報\\x03墬\\x03売\\x03壷\\x03夆\\x03夢\\x03奢\\x03姬\\x03娛\\x03娧\\x03姘\\x03婦\\x03㛮\\x03\" +\n\t\"嬈\\x03嬾\\x03寃\\x03寘\\x03寧\\x03寳\\x03寿\\x03将\\x03尢\\x03㞁\\x03屠\\x03屮\\x03峀\\x03岍\\x03\" +\n\t\"嵃\\x03嵮\\x03嵫\\x03嵼\\x03巡\\x03巢\\x03㠯\\x03巽\\x03帨\\x03帽\\x03幩\\x03㡢\\x03㡼\\x03庰\\x03\" +\n\t\"庳\\x03庶\\x03廊\\x03廾\\x03舁\\x03弢\\x03㣇\\x03形\\x03彫\\x03㣣\\x03徚\\x03忍\\x03志\\x03忹\\x03\" +\n\t\"悁\\x03㤺\\x03㤜\\x03悔\\x03惇\\x03慈\\x03慌\\x03慎\\x03慺\\x03憎\\x03憲\\x03憤\\x03憯\\x03懞\\x03\" +\n\t\"懲\\x03懶\\x03成\\x03戛\\x03扝\\x03抱\\x03拔\\x03捐\\x03挽\\x03拼\\x03捨\\x03掃\\x03揤\\x03搢\\x03\" +\n\t\"揅\\x03掩\\x03㨮\\x03摩\\x03摾\\x03撝\\x03摷\\x03㩬\\x03敏\\x03敬\\x03旣\\x03書\\x03晉\\x03㬙\\x03\" +\n\t\"暑\\x03㬈\\x03㫤\\x03冒\\x03冕\\x03最\\x03暜\\x03肭\\x03䏙\\x03朗\\x03望\\x03朡\\x03杞\\x03杓\\x03\" +\n\t\"㭉\\x03柺\\x03枅\\x03桒\\x03梅\\x03梎\\x03栟\\x03椔\\x03㮝\\x03楂\\x03榣\\x03槪\\x03檨\\x03櫛\\x03\" +\n\t\"㰘\\x03次\\x03歔\\x03㱎\\x03歲\\x03殟\\x03殺\\x03殻\\x03汎\\x03沿\\x03泍\\x03汧\\x03洖\\x03派\\x03\" +\n\t\"海\\x03流\\x03浩\\x03浸\\x03涅\\x03洴\\x03港\\x03湮\\x03㴳\\x03滋\\x03滇\\x03淹\\x03潮\\x03濆\\x03\" +\n\t\"瀹\\x03瀞\\x03瀛\\x03㶖\\x03灊\\x03災\\x03灷\\x03炭\\x03煅\\x03熜\\x03爨\\x03爵\\x03牐\\x03犀\\x03\" +\n\t\"犕\\x03獺\\x03王\\x03㺬\\x03玥\\x03㺸\\x03瑇\\x03瑜\\x03瑱\\x03璅\\x03瓊\\x03㼛\\x03甤\\x03甾\\x03\" +\n\t\"異\\x03瘐\\x03㿼\\x03䀈\\x03直\\x03眞\\x03真\\x03睊\\x03䀹\\x03瞋\\x03䁆\\x03䂖\\x03硎\\x03碌\\x03\" +\n\t\"磌\\x03䃣\\x03祖\\x03福\\x03秫\\x03䄯\\x03穀\\x03穊\\x03穏\\x03䈂\\x03篆\\x03築\\x03䈧\\x03糒\\x03\" +\n\t\"䊠\\x03糨\\x03糣\\x03紀\\x03絣\\x03䌁\\x03緇\\x03縂\\x03繅\\x03䌴\\x03䍙\\x03罺\\x03羕\\x03翺\\x03\" +\n\t\"者\\x03聠\\x03聰\\x03䏕\\x03育\\x03脃\\x03䐋\\x03脾\\x03媵\\x03舄\\x03辞\\x03䑫\\x03芑\\x03芋\\x03\" +\n\t\"芝\\x03劳\\x03花\\x03芳\\x03芽\\x03苦\\x03若\\x03茝\\x03荣\\x03莭\\x03茣\\x03莽\\x03菧\\x03著\\x03\" +\n\t\"荓\\x03菊\\x03菌\\x03菜\\x03䔫\\x03蓱\\x03蓳\\x03蔖\\x03蕤\\x03䕝\\x03䕡\\x03䕫\\x03虐\\x03虜\\x03\" +\n\t\"虧\\x03虩\\x03蚩\\x03蚈\\x03蜎\\x03蛢\\x03蝹\\x03蜨\\x03蝫\\x03螆\\x03蟡\\x03蠁\\x03䗹\\x03衠\\x03\" +\n\t\"衣\\x03裗\\x03裞\\x03䘵\\x03裺\\x03㒻\\x03䚾\\x03䛇\\x03誠\\x03諭\\x03變\\x03豕\\x03貫\\x03賁\\x03\" +\n\t\"贛\\x03起\\x03跋\\x03趼\\x03跰\\x03軔\\x03輸\\x03邔\\x03郱\\x03鄑\\x03鄛\\x03鈸\\x03鋗\\x03鋘\\x03\" +\n\t\"鉼\\x03鏹\\x03鐕\\x03開\\x03䦕\\x03閷\\x03䧦\\x03雃\\x03嶲\\x03霣\\x03䩮\\x03䩶\\x03韠\\x03䪲\\x03\" +\n\t\"頋\\x03頩\\x03飢\\x03䬳\\x03餩\\x03馧\\x03駂\\x03駾\\x03䯎\\x03鬒\\x03鱀\\x03鳽\\x03䳎\\x03䳭\\x03\" +\n\t\"鵧\\x03䳸\\x03麻\\x03䵖\\x03黹\\x03黾\\x03鼅\\x03鼏\\x03鼖\\x03鼻\"\n\nvar xorData string = \"\" + // Size: 4855 bytes\n\t\"\\x02\\x0c\\x09\\x02\\xb0\\xec\\x02\\xad\\xd8\\x02\\xad\\xd9\\x02\\x06\\x07\\x02\\x0f\\x12\" +\n\t\"\\x02\\x0f\\x1f\\x02\\x0f\\x1d\\x02\\x01\\x13\\x02\\x0f\\x16\\x02\\x0f\\x0b\\x02\\x0f3\" +\n\t\"\\x02\\x0f7\\x02\\x0f?\\x02\\x0f/\\x02\\x0f*\\x02\\x0c&\\x02\\x0c*\\x02\\x0c;\\x02\\x0c9\" +\n\t\"\\x02\\x0c%\\x02\\xab\\xed\\x02\\xab\\xe2\\x02\\xab\\xe3\\x02\\xa9\\xe0\\x02\\xa9\\xe1\" +\n\t\"\\x02\\xa9\\xe6\\x02\\xa3\\xcb\\x02\\xa3\\xc8\\x02\\xa3\\xc9\\x02\\x01#\\x02\\x01\\x08\" +\n\t\"\\x02\\x0e>\\x02\\x0e'\\x02\\x0f\\x03\\x02\\x03\\x0d\\x02\\x03\\x09\\x02\\x03\\x17\\x02\" +\n\t\"\\x03\\x0e\\x02\\x02\\x03\\x02\\x011\\x02\\x01\\x00\\x02\\x01\\x10\\x02\\x03<\\x02\\x07\" +\n\t\"\\x0d\\x02\\x02\\x0c\\x02\\x0c0\\x02\\x01\\x03\\x02\\x01\\x01\\x02\\x01 \\x02\\x01\\x22\" +\n\t\"\\x02\\x01)\\x02\\x01\\x0a\\x02\\x01\\x0c\\x02\\x02\\x06\\x02\\x02\\x02\\x02\\x03\\x10\" +\n\t\"\\x03\\x037 \\x03\\x0b+\\x03\\x02\\x01\\x04\\x02\\x01\\x02\\x02\\x019\\x02\\x03\\x1c\\x02\" +\n\t\"\\x02$\\x03\\x80p$\\x02\\x03:\\x02\\x03\\x0a\\x03\\xc1r.\\x03\\xc1r,\\x03\\xc1r\\x02\" +\n\t\"\\x02\\x02:\\x02\\x02>\\x02\\x02,\\x02\\x02\\x10\\x02\\x02\\x00\\x03\\xc1s<\\x03\\xc1s*\" +\n\t\"\\x03\\xc2L$\\x03\\xc2L;\\x02\\x09)\\x02\\x0a\\x19\\x03\\x83\\xab\\xe3\\x03\\x83\\xab\" +\n\t\"\\xf2\\x03 4\\xe0\\x03\\x81\\xab\\xea\\x03\\x81\\xab\\xf3\\x03 4\\xef\\x03\\x96\\xe1\\xcd\" +\n\t\"\\x03\\x84\\xe5\\xc3\\x02\\x0d\\x11\\x03\\x8b\\xec\\xcb\\x03\\x94\\xec\\xcf\\x03\\x9a\\xec\" +\n\t\"\\xc2\\x03\\x8b\\xec\\xdb\\x03\\x94\\xec\\xdf\\x03\\x9a\\xec\\xd2\\x03\\x01\\x0c!\\x03\" +\n\t\"\\x01\\x0c#\\x03ʠ\\x9d\\x03ʣ\\x9c\\x03ʢ\\x9f\\x03ʥ\\x9e\\x03ʤ\\x91\\x03ʧ\\x90\\x03ʦ\\x93\" +\n\t\"\\x03ʩ\\x92\\x03ʨ\\x95\\x03\\xca\\xf3\\xb5\\x03\\xca\\xf0\\xb4\\x03\\xca\\xf1\\xb7\\x03\" +\n\t\"\\xca\\xf6\\xb6\\x03\\xca\\xf7\\x89\\x03\\xca\\xf4\\x88\\x03\\xca\\xf5\\x8b\\x03\\xca\\xfa\" +\n\t\"\\x8a\\x03\\xca\\xfb\\x8d\\x03\\xca\\xf8\\x8c\\x03\\xca\\xf9\\x8f\\x03\\xca\\xfe\\x8e\\x03\" +\n\t\"\\xca\\xff\\x81\\x03\\xca\\xfc\\x80\\x03\\xca\\xfd\\x83\\x03\\xca\\xe2\\x82\\x03\\xca\\xe3\" +\n\t\"\\x85\\x03\\xca\\xe0\\x84\\x03\\xca\\xe1\\x87\\x03\\xca\\xe6\\x86\\x03\\xca\\xe7\\x99\\x03\" +\n\t\"\\xca\\xe4\\x98\\x03\\xca\\xe5\\x9b\\x03\\xca\\xea\\x9a\\x03\\xca\\xeb\\x9d\\x03\\xca\\xe8\" +\n\t\"\\x9c\\x03ؓ\\x89\\x03ߔ\\x8b\\x02\\x010\\x03\\x03\\x04\\x1e\\x03\\x04\\x15\\x12\\x03\\x0b\" +\n\t\"\\x05,\\x03\\x06\\x04\\x00\\x03\\x06\\x04)\\x03\\x06\\x044\\x03\\x06\\x04<\\x03\\x06\\x05\" +\n\t\"\\x1d\\x03\\x06\\x06\\x00\\x03\\x06\\x06\\x0a\\x03\\x06\\x06'\\x03\\x06\\x062\\x03\\x0786\" +\n\t\"\\x03\\x079/\\x03\\x079 \\x03\\x07:\\x0e\\x03\\x07:\\x1b\\x03\\x07:%\\x03\\x07;/\\x03\" +\n\t\"\\x07;%\\x03\\x074\\x11\\x03\\x076\\x09\\x03\\x077*\\x03\\x070\\x01\\x03\\x070\\x0f\\x03\" +\n\t\"\\x070.\\x03\\x071\\x16\\x03\\x071\\x04\\x03\\x0710\\x03\\x072\\x18\\x03\\x072-\\x03\" +\n\t\"\\x073\\x14\\x03\\x073>\\x03\\x07'\\x09\\x03\\x07 \\x00\\x03\\x07\\x1f\\x0b\\x03\\x07\" +\n\t\"\\x18#\\x03\\x07\\x18(\\x03\\x07\\x186\\x03\\x07\\x18\\x03\\x03\\x07\\x19\\x16\\x03\\x07\" +\n\t\"\\x116\\x03\\x07\\x12'\\x03\\x07\\x13\\x10\\x03\\x07\\x0c&\\x03\\x07\\x0c\\x08\\x03\\x07\" +\n\t\"\\x0c\\x13\\x03\\x07\\x0d\\x02\\x03\\x07\\x0d\\x1c\\x03\\x07\\x0b5\\x03\\x07\\x0b\\x0a\" +\n\t\"\\x03\\x07\\x0b\\x01\\x03\\x07\\x0b\\x0f\\x03\\x07\\x05\\x00\\x03\\x07\\x05\\x09\\x03\\x07\" +\n\t\"\\x05\\x0b\\x03\\x07\\x07\\x01\\x03\\x07\\x07\\x08\\x03\\x07\\x00<\\x03\\x07\\x00+\\x03\" +\n\t\"\\x07\\x01)\\x03\\x07\\x01\\x1b\\x03\\x07\\x01\\x08\\x03\\x07\\x03?\\x03\\x0445\\x03\\x04\" +\n\t\"4\\x08\\x03\\x0454\\x03\\x04)/\\x03\\x04)5\\x03\\x04+\\x05\\x03\\x04+\\x14\\x03\\x04+ \" +\n\t\"\\x03\\x04+<\\x03\\x04*&\\x03\\x04*\\x22\\x03\\x04&8\\x03\\x04!\\x01\\x03\\x04!\\x22\" +\n\t\"\\x03\\x04\\x11+\\x03\\x04\\x10.\\x03\\x04\\x104\\x03\\x04\\x13=\\x03\\x04\\x12\\x04\\x03\" +\n\t\"\\x04\\x12\\x0a\\x03\\x04\\x0d\\x1d\\x03\\x04\\x0d\\x07\\x03\\x04\\x0d \\x03\\x05<>\\x03\" +\n\t\"\\x055<\\x03\\x055!\\x03\\x055#\\x03\\x055&\\x03\\x054\\x1d\\x03\\x054\\x02\\x03\\x054\" +\n\t\"\\x07\\x03\\x0571\\x03\\x053\\x1a\\x03\\x053\\x16\\x03\\x05.<\\x03\\x05.\\x07\\x03\\x05)\" +\n\t\":\\x03\\x05)<\\x03\\x05)\\x0c\\x03\\x05)\\x15\\x03\\x05+-\\x03\\x05+5\\x03\\x05$\\x1e\" +\n\t\"\\x03\\x05$\\x14\\x03\\x05'\\x04\\x03\\x05'\\x14\\x03\\x05&\\x02\\x03\\x05\\x226\\x03\" +\n\t\"\\x05\\x22\\x0c\\x03\\x05\\x22\\x1c\\x03\\x05\\x19\\x0a\\x03\\x05\\x1b\\x09\\x03\\x05\\x1b\" +\n\t\"\\x0c\\x03\\x05\\x14\\x07\\x03\\x05\\x16?\\x03\\x05\\x16\\x0c\\x03\\x05\\x0c\\x05\\x03\" +\n\t\"\\x05\\x0e\\x0f\\x03\\x05\\x01\\x0e\\x03\\x05\\x00(\\x03\\x05\\x030\\x03\\x05\\x03\\x06\" +\n\t\"\\x03\\x0a==\\x03\\x0a=1\\x03\\x0a=,\\x03\\x0a=\\x0c\\x03\\x0a??\\x03\\x0a<\\x08\\x03\" +\n\t\"\\x0a9!\\x03\\x0a9)\\x03\\x0a97\\x03\\x0a99\\x03\\x0a6\\x0a\\x03\\x0a6\\x1c\\x03\\x0a6\" +\n\t\"\\x17\\x03\\x0a7'\\x03\\x0a78\\x03\\x0a73\\x03\\x0a'\\x01\\x03\\x0a'&\\x03\\x0a\\x1f\" +\n\t\"\\x0e\\x03\\x0a\\x1f\\x03\\x03\\x0a\\x1f3\\x03\\x0a\\x1b/\\x03\\x0a\\x18\\x19\\x03\\x0a\" +\n\t\"\\x19\\x01\\x03\\x0a\\x16\\x14\\x03\\x0a\\x0e\\x22\\x03\\x0a\\x0f\\x10\\x03\\x0a\\x0f\\x02\" +\n\t\"\\x03\\x0a\\x0f \\x03\\x0a\\x0c\\x04\\x03\\x0a\\x0b>\\x03\\x0a\\x0b+\\x03\\x0a\\x08/\\x03\" +\n\t\"\\x0a\\x046\\x03\\x0a\\x05\\x14\\x03\\x0a\\x00\\x04\\x03\\x0a\\x00\\x10\\x03\\x0a\\x00\" +\n\t\"\\x14\\x03\\x0b<3\\x03\\x0b;*\\x03\\x0b9\\x22\\x03\\x0b9)\\x03\\x0b97\\x03\\x0b+\\x10\" +\n\t\"\\x03\\x0b((\\x03\\x0b&5\\x03\\x0b$\\x1c\\x03\\x0b$\\x12\\x03\\x0b%\\x04\\x03\\x0b#<\" +\n\t\"\\x03\\x0b#0\\x03\\x0b#\\x0d\\x03\\x0b#\\x19\\x03\\x0b!:\\x03\\x0b!\\x1f\\x03\\x0b!\\x00\" +\n\t\"\\x03\\x0b\\x1e5\\x03\\x0b\\x1c\\x1d\\x03\\x0b\\x1d-\\x03\\x0b\\x1d(\\x03\\x0b\\x18.\\x03\" +\n\t\"\\x0b\\x18 \\x03\\x0b\\x18\\x16\\x03\\x0b\\x14\\x13\\x03\\x0b\\x15$\\x03\\x0b\\x15\\x22\" +\n\t\"\\x03\\x0b\\x12\\x1b\\x03\\x0b\\x12\\x10\\x03\\x0b\\x132\\x03\\x0b\\x13=\\x03\\x0b\\x12\" +\n\t\"\\x18\\x03\\x0b\\x0c&\\x03\\x0b\\x061\\x03\\x0b\\x06:\\x03\\x0b\\x05#\\x03\\x0b\\x05<\" +\n\t\"\\x03\\x0b\\x04\\x0b\\x03\\x0b\\x04\\x04\\x03\\x0b\\x04\\x1b\\x03\\x0b\\x042\\x03\\x0b\" +\n\t\"\\x041\\x03\\x0b\\x03\\x03\\x03\\x0b\\x03\\x1d\\x03\\x0b\\x03/\\x03\\x0b\\x03+\\x03\\x0b\" +\n\t\"\\x02\\x1b\\x03\\x0b\\x02\\x00\\x03\\x0b\\x01\\x1e\\x03\\x0b\\x01\\x08\\x03\\x0b\\x015\" +\n\t\"\\x03\\x06\\x0d9\\x03\\x06\\x0d=\\x03\\x06\\x0d?\\x03\\x02\\x001\\x03\\x02\\x003\\x03\" +\n\t\"\\x02\\x02\\x19\\x03\\x02\\x006\\x03\\x02\\x02\\x1b\\x03\\x02\\x004\\x03\\x02\\x00<\\x03\" +\n\t\"\\x02\\x02\\x0a\\x03\\x02\\x02\\x0e\\x03\\x02\\x01\\x1a\\x03\\x02\\x01\\x07\\x03\\x02\\x01\" +\n\t\"\\x05\\x03\\x02\\x01\\x0b\\x03\\x02\\x01%\\x03\\x02\\x01\\x0c\\x03\\x02\\x01\\x04\\x03\" +\n\t\"\\x02\\x01\\x1c\\x03\\x02\\x00.\\x03\\x02\\x002\\x03\\x02\\x00>\\x03\\x02\\x00\\x12\\x03\" +\n\t\"\\x02\\x00\\x16\\x03\\x02\\x011\\x03\\x02\\x013\\x03\\x02\\x02 \\x03\\x02\\x02%\\x03\\x02\" +\n\t\"\\x02$\\x03\\x02\\x028\\x03\\x02\\x02;\\x03\\x02\\x024\\x03\\x02\\x012\\x03\\x02\\x022\" +\n\t\"\\x03\\x02\\x02/\\x03\\x02\\x01,\\x03\\x02\\x01\\x13\\x03\\x02\\x01\\x16\\x03\\x02\\x01\" +\n\t\"\\x11\\x03\\x02\\x01\\x1e\\x03\\x02\\x01\\x15\\x03\\x02\\x01\\x17\\x03\\x02\\x01\\x0f\\x03\" +\n\t\"\\x02\\x01\\x08\\x03\\x02\\x00?\\x03\\x02\\x03\\x07\\x03\\x02\\x03\\x0d\\x03\\x02\\x03\" +\n\t\"\\x13\\x03\\x02\\x03\\x1d\\x03\\x02\\x03\\x1f\\x03\\x02\\x00\\x03\\x03\\x02\\x00\\x0d\\x03\" +\n\t\"\\x02\\x00\\x01\\x03\\x02\\x00\\x1b\\x03\\x02\\x00\\x19\\x03\\x02\\x00\\x18\\x03\\x02\\x00\" +\n\t\"\\x13\\x03\\x02\\x00/\\x03\\x07>\\x12\\x03\\x07<\\x1f\\x03\\x07>\\x1d\\x03\\x06\\x1d\\x0e\" +\n\t\"\\x03\\x07>\\x1c\\x03\\x07>:\\x03\\x07>\\x13\\x03\\x04\\x12+\\x03\\x07?\\x03\\x03\\x07>\" +\n\t\"\\x02\\x03\\x06\\x224\\x03\\x06\\x1a.\\x03\\x07<%\\x03\\x06\\x1c\\x0b\\x03\\x0609\\x03\" +\n\t\"\\x05\\x1f\\x01\\x03\\x04'\\x08\\x03\\x93\\xfd\\xf5\\x03\\x02\\x0d \\x03\\x02\\x0d#\\x03\" +\n\t\"\\x02\\x0d!\\x03\\x02\\x0d&\\x03\\x02\\x0d\\x22\\x03\\x02\\x0d/\\x03\\x02\\x0d,\\x03\\x02\" +\n\t\"\\x0d$\\x03\\x02\\x0d'\\x03\\x02\\x0d%\\x03\\x02\\x0d;\\x03\\x02\\x0d=\\x03\\x02\\x0d?\" +\n\t\"\\x03\\x099.\\x03\\x08\\x0b7\\x03\\x08\\x02\\x14\\x03\\x08\\x14\\x0d\\x03\\x08.:\\x03\" +\n\t\"\\x089'\\x03\\x0f\\x0b\\x18\\x03\\x0f\\x1c1\\x03\\x0f\\x17&\\x03\\x0f9\\x1f\\x03\\x0f0\" +\n\t\"\\x0c\\x03\\x0e\\x0a9\\x03\\x0e\\x056\\x03\\x0e\\x1c#\\x03\\x0f\\x13\\x0e\\x03\\x072\\x00\" +\n\t\"\\x03\\x070\\x0d\\x03\\x072\\x0b\\x03\\x06\\x11\\x18\\x03\\x070\\x10\\x03\\x06\\x0f(\\x03\" +\n\t\"\\x072\\x05\\x03\\x06\\x0f,\\x03\\x073\\x15\\x03\\x06\\x07\\x08\\x03\\x05\\x16\\x02\\x03\" +\n\t\"\\x04\\x0b \\x03\\x05:8\\x03\\x05\\x16%\\x03\\x0a\\x0d\\x1f\\x03\\x06\\x16\\x10\\x03\\x05\" +\n\t\"\\x1d5\\x03\\x05*;\\x03\\x05\\x16\\x1b\\x03\\x04.-\\x03\\x06\\x1a\\x19\\x03\\x04\\x03,\" +\n\t\"\\x03\\x0b87\\x03\\x04/\\x0a\\x03\\x06\\x00,\\x03\\x04-\\x01\\x03\\x04\\x1e-\\x03\\x06/(\" +\n\t\"\\x03\\x0a\\x0b5\\x03\\x06\\x0e7\\x03\\x06\\x07.\\x03\\x0597\\x03\\x0a*%\\x03\\x0760\" +\n\t\"\\x03\\x06\\x0c;\\x03\\x05'\\x00\\x03\\x072.\\x03\\x072\\x08\\x03\\x06=\\x01\\x03\\x06\" +\n\t\"\\x05\\x1b\\x03\\x06\\x06\\x12\\x03\\x06$=\\x03\\x06'\\x0d\\x03\\x04\\x11\\x0f\\x03\\x076\" +\n\t\",\\x03\\x06\\x07;\\x03\\x06.,\\x03\\x86\\xf9\\xea\\x03\\x8f\\xff\\xeb\\x02\\x092\\x02\" +\n\t\"\\x095\\x02\\x094\\x02\\x09;\\x02\\x09>\\x02\\x098\\x02\\x09*\\x02\\x09/\\x02\\x09,\\x02\" +\n\t\"\\x09%\\x02\\x09&\\x02\\x09#\\x02\\x09 \\x02\\x08!\\x02\\x08%\\x02\\x08$\\x02\\x08+\\x02\" +\n\t\"\\x08.\\x02\\x08*\\x02\\x08&\\x02\\x088\\x02\\x08>\\x02\\x084\\x02\\x086\\x02\\x080\\x02\" +\n\t\"\\x08\\x10\\x02\\x08\\x17\\x02\\x08\\x12\\x02\\x08\\x1d\\x02\\x08\\x1f\\x02\\x08\\x13\\x02\" +\n\t\"\\x08\\x15\\x02\\x08\\x14\\x02\\x08\\x0c\\x03\\x8b\\xfd\\xd0\\x03\\x81\\xec\\xc6\\x03\\x87\" +\n\t\"\\xe0\\x8a\\x03-2\\xe3\\x03\\x80\\xef\\xe4\\x03-2\\xea\\x03\\x88\\xe6\\xeb\\x03\\x8e\\xe6\" +\n\t\"\\xe8\\x03\\x84\\xe6\\xe9\\x03\\x97\\xe6\\xee\\x03-2\\xf9\\x03-2\\xf6\\x03\\x8e\\xe3\\xad\" +\n\t\"\\x03\\x80\\xe3\\x92\\x03\\x88\\xe3\\x90\\x03\\x8e\\xe3\\x90\\x03\\x80\\xe3\\x97\\x03\\x88\" +\n\t\"\\xe3\\x95\\x03\\x88\\xfe\\xcb\\x03\\x8e\\xfe\\xca\\x03\\x84\\xfe\\xcd\\x03\\x91\\xef\\xc9\" +\n\t\"\\x03-2\\xc1\\x03-2\\xc0\\x03-2\\xcb\\x03\\x88@\\x09\\x03\\x8e@\\x08\\x03\\x8f\\xe0\\xf5\" +\n\t\"\\x03\\x8e\\xe6\\xf9\\x03\\x8e\\xe0\\xfa\\x03\\x93\\xff\\xf4\\x03\\x84\\xee\\xd3\\x03\\x0b\" +\n\t\"(\\x04\\x023 \\x021;\\x02\\x01*\\x03\\x0b#\\x10\\x03\\x0b 0\\x03\\x0b!\\x10\\x03\\x0b!0\" +\n\t\"\\x03\\x07\\x15\\x08\\x03\\x09?5\\x03\\x07\\x1f\\x08\\x03\\x07\\x17\\x0b\\x03\\x09\\x1f\" +\n\t\"\\x15\\x03\\x0b\\x1c7\\x03\\x0a+#\\x03\\x06\\x1a\\x1b\\x03\\x06\\x1a\\x14\\x03\\x0a\\x01\" +\n\t\"\\x18\\x03\\x06#\\x1b\\x03\\x0a2\\x0c\\x03\\x0a\\x01\\x04\\x03\\x09#;\\x03\\x08='\\x03\" +\n\t\"\\x08\\x1a\\x0a\\x03\\x07</\\x03\\x07:+\\x03\\x07\\x07*\\x03\\x06&\\x1c\\x03\\x09\\x0c\" +\n\t\"\\x16\\x03\\x09\\x10\\x0e\\x03\\x08'\\x0f\\x03\\x08+\\x09\\x03\\x074%\\x03\\x06!3\\x03\" +\n\t\"\\x06\\x03+\\x03\\x0b\\x1e\\x19\\x03\\x0a))\\x03\\x09\\x08\\x19\\x03\\x08,\\x05\\x03\\x07\" +\n\t\"<2\\x03\\x06\\x1c>\\x03\\x0a\\x111\\x03\\x09\\x1b\\x09\\x03\\x073.\\x03\\x07\\x01\\x00\" +\n\t\"\\x03\\x09/,\\x03\\x07#>\\x03\\x07\\x048\\x03\\x0a\\x1f\\x22\\x03\\x098>\\x03\\x09\\x11\" +\n\t\"\\x00\\x03\\x08/\\x17\\x03\\x06'\\x22\\x03\\x0b\\x1a+\\x03\\x0a\\x22\\x19\\x03\\x0a/1\" +\n\t\"\\x03\\x0974\\x03\\x09\\x0f\\x22\\x03\\x08,\\x22\\x03\\x08?\\x14\\x03\\x07$5\\x03\\x07<3\" +\n\t\"\\x03\\x07=*\\x03\\x07\\x13\\x18\\x03\\x068\\x0a\\x03\\x06\\x09\\x16\\x03\\x06\\x13\\x00\" +\n\t\"\\x03\\x08\\x067\\x03\\x08\\x01\\x03\\x03\\x08\\x12\\x1d\\x03\\x07+7\\x03\\x06(;\\x03\" +\n\t\"\\x06\\x1c?\\x03\\x07\\x0e\\x17\\x03\\x0a\\x06\\x1d\\x03\\x0a\\x19\\x07\\x03\\x08\\x14$\" +\n\t\"\\x03\\x07$;\\x03\\x08,$\\x03\\x08\\x06\\x0d\\x03\\x07\\x16\\x0a\\x03\\x06>>\\x03\\x0a\" +\n\t\"\\x06\\x12\\x03\\x0a\\x14)\\x03\\x09\\x0d\\x1f\\x03\\x09\\x12\\x17\\x03\\x09\\x19\\x01\" +\n\t\"\\x03\\x08\\x11 \\x03\\x08\\x1d'\\x03\\x06<\\x1a\\x03\\x0a.\\x00\\x03\\x07'\\x18\\x03\" +\n\t\"\\x0a\\x22\\x08\\x03\\x08\\x0d\\x0a\\x03\\x08\\x13)\\x03\\x07*)\\x03\\x06<,\\x03\\x07\" +\n\t\"\\x0b\\x1a\\x03\\x09.\\x14\\x03\\x09\\x0d\\x1e\\x03\\x07\\x0e#\\x03\\x0b\\x1d'\\x03\\x0a\" +\n\t\"\\x0a8\\x03\\x09%2\\x03\\x08+&\\x03\\x080\\x12\\x03\\x0a)4\\x03\\x08\\x06\\x1f\\x03\\x0b\" +\n\t\"\\x1b\\x1a\\x03\\x0a\\x1b\\x0f\\x03\\x0b\\x1d*\\x03\\x09\\x16$\\x03\\x090\\x11\\x03\\x08\" +\n\t\"\\x11\\x08\\x03\\x0a*(\\x03\\x0a\\x042\\x03\\x089,\\x03\\x074'\\x03\\x07\\x0f\\x05\\x03\" +\n\t\"\\x09\\x0b\\x0a\\x03\\x07\\x1b\\x01\\x03\\x09\\x17:\\x03\\x09.\\x0d\\x03\\x07.\\x11\\x03\" +\n\t\"\\x09+\\x15\\x03\\x080\\x13\\x03\\x0b\\x1f\\x19\\x03\\x0a \\x11\\x03\\x0a\\x220\\x03\\x09\" +\n\t\"\\x07;\\x03\\x08\\x16\\x1c\\x03\\x07,\\x13\\x03\\x07\\x0e/\\x03\\x06\\x221\\x03\\x0a.\" +\n\t\"\\x0a\\x03\\x0a7\\x02\\x03\\x0a\\x032\\x03\\x0a\\x1d.\\x03\\x091\\x06\\x03\\x09\\x19:\" +\n\t\"\\x03\\x08\\x02/\\x03\\x060+\\x03\\x06\\x0f-\\x03\\x06\\x1c\\x1f\\x03\\x06\\x1d\\x07\\x03\" +\n\t\"\\x0a,\\x11\\x03\\x09=\\x0d\\x03\\x09\\x0b;\\x03\\x07\\x1b/\\x03\\x0a\\x1f:\\x03\\x09 \" +\n\t\"\\x1f\\x03\\x09.\\x10\\x03\\x094\\x0b\\x03\\x09\\x1a1\\x03\\x08#\\x1a\\x03\\x084\\x1d\" +\n\t\"\\x03\\x08\\x01\\x1f\\x03\\x08\\x11\\x22\\x03\\x07'8\\x03\\x07\\x1a>\\x03\\x0757\\x03\" +\n\t\"\\x06&9\\x03\\x06+\\x11\\x03\\x0a.\\x0b\\x03\\x0a,>\\x03\\x0a4#\\x03\\x08%\\x17\\x03\" +\n\t\"\\x07\\x05\\x22\\x03\\x07\\x0c\\x0b\\x03\\x0a\\x1d+\\x03\\x0a\\x19\\x16\\x03\\x09+\\x1f\" +\n\t\"\\x03\\x09\\x08\\x0b\\x03\\x08\\x16\\x18\\x03\\x08+\\x12\\x03\\x0b\\x1d\\x0c\\x03\\x0a=\" +\n\t\"\\x10\\x03\\x0a\\x09\\x0d\\x03\\x0a\\x10\\x11\\x03\\x09&0\\x03\\x08(\\x1f\\x03\\x087\\x07\" +\n\t\"\\x03\\x08\\x185\\x03\\x07'6\\x03\\x06.\\x05\\x03\\x06=\\x04\\x03\\x06;;\\x03\\x06\\x06,\" +\n\t\"\\x03\\x0b\\x18>\\x03\\x08\\x00\\x18\\x03\\x06 \\x03\\x03\\x06<\\x00\\x03\\x09%\\x18\\x03\" +\n\t\"\\x0b\\x1c<\\x03\\x0a%!\\x03\\x0a\\x09\\x12\\x03\\x0a\\x16\\x02\\x03\\x090'\\x03\\x09\" +\n\t\"\\x0e=\\x03\\x08 \\x0e\\x03\\x08>\\x03\\x03\\x074>\\x03\\x06&?\\x03\\x06\\x19\\x09\\x03\" +\n\t\"\\x06?(\\x03\\x0a-\\x0e\\x03\\x09:3\\x03\\x098:\\x03\\x09\\x12\\x0b\\x03\\x09\\x1d\\x17\" +\n\t\"\\x03\\x087\\x05\\x03\\x082\\x14\\x03\\x08\\x06%\\x03\\x08\\x13\\x1f\\x03\\x06\\x06\\x0e\" +\n\t\"\\x03\\x0a\\x22<\\x03\\x09/<\\x03\\x06>+\\x03\\x0a'?\\x03\\x0a\\x13\\x0c\\x03\\x09\\x10<\" +\n\t\"\\x03\\x07\\x1b=\\x03\\x0a\\x19\\x13\\x03\\x09\\x22\\x1d\\x03\\x09\\x07\\x0d\\x03\\x08)\" +\n\t\"\\x1c\\x03\\x06=\\x1a\\x03\\x0a/4\\x03\\x0a7\\x11\\x03\\x0a\\x16:\\x03\\x09?3\\x03\\x09:\" +\n\t\"/\\x03\\x09\\x05\\x0a\\x03\\x09\\x14\\x06\\x03\\x087\\x22\\x03\\x080\\x07\\x03\\x08\\x1a\" +\n\t\"\\x1f\\x03\\x07\\x04(\\x03\\x07\\x04\\x09\\x03\\x06 %\\x03\\x06<\\x08\\x03\\x0a+\\x14\" +\n\t\"\\x03\\x09\\x1d\\x16\\x03\\x0a70\\x03\\x08 >\\x03\\x0857\\x03\\x070\\x0a\\x03\\x06=\\x12\" +\n\t\"\\x03\\x06\\x16%\\x03\\x06\\x1d,\\x03\\x099#\\x03\\x09\\x10>\\x03\\x07 \\x1e\\x03\\x08\" +\n\t\"\\x0c<\\x03\\x08\\x0b\\x18\\x03\\x08\\x15+\\x03\\x08,:\\x03\\x08%\\x22\\x03\\x07\\x0a$\" +\n\t\"\\x03\\x0b\\x1c=\\x03\\x07+\\x08\\x03\\x0a/\\x05\\x03\\x0a \\x07\\x03\\x0a\\x12'\\x03\" +\n\t\"\\x09#\\x11\\x03\\x08\\x1b\\x15\\x03\\x0a\\x06\\x01\\x03\\x09\\x1c\\x1b\\x03\\x0922\\x03\" +\n\t\"\\x07\\x14<\\x03\\x07\\x09\\x04\\x03\\x061\\x04\\x03\\x07\\x0e\\x01\\x03\\x0a\\x13\\x18\" +\n\t\"\\x03\\x0a-\\x0c\\x03\\x0a?\\x0d\\x03\\x0a\\x09\\x0a\\x03\\x091&\\x03\\x0a/\\x0b\\x03\" +\n\t\"\\x08$<\\x03\\x083\\x1d\\x03\\x08\\x0c$\\x03\\x08\\x0d\\x07\\x03\\x08\\x0d?\\x03\\x08\" +\n\t\"\\x0e\\x14\\x03\\x065\\x0a\\x03\\x08\\x1a#\\x03\\x08\\x16#\\x03\\x0702\\x03\\x07\\x03\" +\n\t\"\\x1a\\x03\\x06(\\x1d\\x03\\x06+\\x1b\\x03\\x06\\x0b\\x05\\x03\\x06\\x0b\\x17\\x03\\x06\" +\n\t\"\\x0c\\x04\\x03\\x06\\x1e\\x19\\x03\\x06+0\\x03\\x062\\x18\\x03\\x0b\\x16\\x1e\\x03\\x0a+\" +\n\t\"\\x16\\x03\\x0a-?\\x03\\x0a#:\\x03\\x0a#\\x10\\x03\\x0a%$\\x03\\x0a>+\\x03\\x0a01\\x03\" +\n\t\"\\x0a1\\x10\\x03\\x0a\\x099\\x03\\x0a\\x0a\\x12\\x03\\x0a\\x19\\x1f\\x03\\x0a\\x19\\x12\" +\n\t\"\\x03\\x09*)\\x03\\x09-\\x16\\x03\\x09.1\\x03\\x09.2\\x03\\x09<\\x0e\\x03\\x09> \\x03\" +\n\t\"\\x093\\x12\\x03\\x09\\x0b\\x01\\x03\\x09\\x1c2\\x03\\x09\\x11\\x1c\\x03\\x09\\x15%\\x03\" +\n\t\"\\x08,&\\x03\\x08!\\x22\\x03\\x089(\\x03\\x08\\x0b\\x1a\\x03\\x08\\x0d2\\x03\\x08\\x0c\" +\n\t\"\\x04\\x03\\x08\\x0c\\x06\\x03\\x08\\x0c\\x1f\\x03\\x08\\x0c\\x0c\\x03\\x08\\x0f\\x1f\\x03\" +\n\t\"\\x08\\x0f\\x1d\\x03\\x08\\x00\\x14\\x03\\x08\\x03\\x14\\x03\\x08\\x06\\x16\\x03\\x08\\x1e\" +\n\t\"#\\x03\\x08\\x11\\x11\\x03\\x08\\x10\\x18\\x03\\x08\\x14(\\x03\\x07)\\x1e\\x03\\x07.1\" +\n\t\"\\x03\\x07 $\\x03\\x07 '\\x03\\x078\\x08\\x03\\x07\\x0d0\\x03\\x07\\x0f7\\x03\\x07\\x05#\" +\n\t\"\\x03\\x07\\x05\\x1a\\x03\\x07\\x1a7\\x03\\x07\\x1d-\\x03\\x07\\x17\\x10\\x03\\x06)\\x1f\" +\n\t\"\\x03\\x062\\x0b\\x03\\x066\\x16\\x03\\x06\\x09\\x11\\x03\\x09(\\x1e\\x03\\x07!5\\x03\" +\n\t\"\\x0b\\x11\\x16\\x03\\x0a/\\x04\\x03\\x0a,\\x1a\\x03\\x0b\\x173\\x03\\x0a,1\\x03\\x0a/5\" +\n\t\"\\x03\\x0a\\x221\\x03\\x0a\\x22\\x0d\\x03\\x0a?%\\x03\\x0a<,\\x03\\x0a?#\\x03\\x0a>\\x19\" +\n\t\"\\x03\\x0a\\x08&\\x03\\x0a\\x0b\\x0e\\x03\\x0a\\x0c:\\x03\\x0a\\x0c+\\x03\\x0a\\x03\\x22\" +\n\t\"\\x03\\x0a\\x06)\\x03\\x0a\\x11\\x10\\x03\\x0a\\x11\\x1a\\x03\\x0a\\x17-\\x03\\x0a\\x14(\" +\n\t\"\\x03\\x09)\\x1e\\x03\\x09/\\x09\\x03\\x09.\\x00\\x03\\x09,\\x07\\x03\\x09/*\\x03\\x09-9\" +\n\t\"\\x03\\x09\\x228\\x03\\x09%\\x09\\x03\\x09:\\x12\\x03\\x09;\\x1d\\x03\\x09?\\x06\\x03\" +\n\t\"\\x093%\\x03\\x096\\x05\\x03\\x096\\x08\\x03\\x097\\x02\\x03\\x09\\x07,\\x03\\x09\\x04,\" +\n\t\"\\x03\\x09\\x1f\\x16\\x03\\x09\\x11\\x03\\x03\\x09\\x11\\x12\\x03\\x09\\x168\\x03\\x08*\" +\n\t\"\\x05\\x03\\x08/2\\x03\\x084:\\x03\\x08\\x22+\\x03\\x08 0\\x03\\x08&\\x0a\\x03\\x08;\" +\n\t\"\\x10\\x03\\x08>$\\x03\\x08>\\x18\\x03\\x0829\\x03\\x082:\\x03\\x081,\\x03\\x081<\\x03\" +\n\t\"\\x081\\x1c\\x03\\x087#\\x03\\x087*\\x03\\x08\\x09'\\x03\\x08\\x00\\x1d\\x03\\x08\\x05-\" +\n\t\"\\x03\\x08\\x1f4\\x03\\x08\\x1d\\x04\\x03\\x08\\x16\\x0f\\x03\\x07*7\\x03\\x07'!\\x03\" +\n\t\"\\x07%\\x1b\\x03\\x077\\x0c\\x03\\x07\\x0c1\\x03\\x07\\x0c.\\x03\\x07\\x00\\x06\\x03\\x07\" +\n\t\"\\x01\\x02\\x03\\x07\\x010\\x03\\x07\\x06=\\x03\\x07\\x01\\x03\\x03\\x07\\x01\\x13\\x03\" +\n\t\"\\x07\\x06\\x06\\x03\\x07\\x05\\x0a\\x03\\x07\\x1f\\x09\\x03\\x07\\x17:\\x03\\x06*1\\x03\" +\n\t\"\\x06-\\x1d\\x03\\x06\\x223\\x03\\x062:\\x03\\x060$\\x03\\x066\\x1e\\x03\\x064\\x12\\x03\" +\n\t\"\\x0645\\x03\\x06\\x0b\\x00\\x03\\x06\\x0b7\\x03\\x06\\x07\\x1f\\x03\\x06\\x15\\x12\\x03\" +\n\t\"\\x0c\\x05\\x0f\\x03\\x0b+\\x0b\\x03\\x0b+-\\x03\\x06\\x16\\x1b\\x03\\x06\\x15\\x17\\x03\" +\n\t\"\\x89\\xca\\xea\\x03\\x89\\xca\\xe8\\x03\\x0c8\\x10\\x03\\x0c8\\x01\\x03\\x0c8\\x0f\\x03\" +\n\t\"\\x0d8%\\x03\\x0d8!\\x03\\x0c8-\\x03\\x0c8/\\x03\\x0c8+\\x03\\x0c87\\x03\\x0c85\\x03\" +\n\t\"\\x0c9\\x09\\x03\\x0c9\\x0d\\x03\\x0c9\\x0f\\x03\\x0c9\\x0b\\x03\\xcfu\\x0c\\x03\\xcfu\" +\n\t\"\\x0f\\x03\\xcfu\\x0e\\x03\\xcfu\\x09\\x03\\x0c9\\x10\\x03\\x0d9\\x0c\\x03\\xcf`;\\x03\" +\n\t\"\\xcf`>\\x03\\xcf`9\\x03\\xcf`8\\x03\\xcf`7\\x03\\xcf`*\\x03\\xcf`-\\x03\\xcf`,\\x03\" +\n\t\"\\x0d\\x1b\\x1a\\x03\\x0d\\x1b&\\x03\\x0c=.\\x03\\x0c=%\\x03\\x0c>\\x1e\\x03\\x0c>\\x14\" +\n\t\"\\x03\\x0c?\\x06\\x03\\x0c?\\x0b\\x03\\x0c?\\x0c\\x03\\x0c?\\x0d\\x03\\x0c?\\x02\\x03\" +\n\t\"\\x0c>\\x0f\\x03\\x0c>\\x08\\x03\\x0c>\\x09\\x03\\x0c>,\\x03\\x0c>\\x0c\\x03\\x0c?\\x13\" +\n\t\"\\x03\\x0c?\\x16\\x03\\x0c?\\x15\\x03\\x0c?\\x1c\\x03\\x0c?\\x1f\\x03\\x0c?\\x1d\\x03\" +\n\t\"\\x0c?\\x1a\\x03\\x0c?\\x17\\x03\\x0c?\\x08\\x03\\x0c?\\x09\\x03\\x0c?\\x0e\\x03\\x0c?\" +\n\t\"\\x04\\x03\\x0c?\\x05\\x03\\x0c<?\\x03\\x0c=\\x00\\x03\\x0c=\\x06\\x03\\x0c=\\x05\\x03\" +\n\t\"\\x0c=\\x0c\\x03\\x0c=\\x0f\\x03\\x0c=\\x0d\\x03\\x0c=\\x0b\\x03\\x0c=\\x07\\x03\\x0c=\" +\n\t\"\\x19\\x03\\x0c=\\x15\\x03\\x0c=\\x11\\x03\\x0c=1\\x03\\x0c=3\\x03\\x0c=0\\x03\\x0c=>\" +\n\t\"\\x03\\x0c=2\\x03\\x0c=6\\x03\\x0c<\\x07\\x03\\x0c<\\x05\\x03\\x0e:!\\x03\\x0e:#\\x03\" +\n\t\"\\x0e8\\x09\\x03\\x0e:&\\x03\\x0e8\\x0b\\x03\\x0e:$\\x03\\x0e:,\\x03\\x0e8\\x1a\\x03\" +\n\t\"\\x0e8\\x1e\\x03\\x0e:*\\x03\\x0e:7\\x03\\x0e:5\\x03\\x0e:;\\x03\\x0e:\\x15\\x03\\x0e:<\" +\n\t\"\\x03\\x0e:4\\x03\\x0e:'\\x03\\x0e:-\\x03\\x0e:%\\x03\\x0e:?\\x03\\x0e:=\\x03\\x0e:)\" +\n\t\"\\x03\\x0e:/\\x03\\xcfs'\\x03\\x0d=\\x0f\\x03\\x0d+*\\x03\\x0d99\\x03\\x0d9;\\x03\\x0d9\" +\n\t\"?\\x03\\x0d)\\x0d\\x03\\x0d(%\\x02\\x01\\x18\\x02\\x01(\\x02\\x01\\x1e\\x03\\x0f$!\\x03\" +\n\t\"\\x0f87\\x03\\x0f4\\x0e\\x03\\x0f5\\x1d\\x03\\x06'\\x03\\x03\\x0f\\x08\\x18\\x03\\x0f\" +\n\t\"\\x0d\\x1b\\x03\\x0e2=\\x03\\x0e;\\x08\\x03\\x0e:\\x0b\\x03\\x0e\\x06$\\x03\\x0e\\x0d)\" +\n\t\"\\x03\\x0e\\x16\\x1f\\x03\\x0e\\x16\\x1b\\x03\\x0d$\\x0a\\x03\\x05,\\x1d\\x03\\x0d. \\x03\" +\n\t\"\\x0d.#\\x03\\x0c(/\\x03\\x09%\\x02\\x03\\x0d90\\x03\\x0d\\x0e4\\x03\\x0d\\x0d\\x0f\\x03\" +\n\t\"\\x0c#\\x00\\x03\\x0c,\\x1e\\x03\\x0c2\\x0e\\x03\\x0c\\x01\\x17\\x03\\x0c\\x09:\\x03\\x0e\" +\n\t\"\\x173\\x03\\x0c\\x08\\x03\\x03\\x0c\\x11\\x07\\x03\\x0c\\x10\\x18\\x03\\x0c\\x1f\\x1c\" +\n\t\"\\x03\\x0c\\x19\\x0e\\x03\\x0c\\x1a\\x1f\\x03\\x0f0>\\x03\\x0b->\\x03\\x0b<+\\x03\\x0b8\" +\n\t\"\\x13\\x03\\x0b\\x043\\x03\\x0b\\x14\\x03\\x03\\x0b\\x16%\\x03\\x0d\\x22&\\x03\\x0b\\x1a\" +\n\t\"\\x1a\\x03\\x0b\\x1a\\x04\\x03\\x0a%9\\x03\\x0a&2\\x03\\x0a&0\\x03\\x0a!\\x1a\\x03\\x0a!\" +\n\t\"7\\x03\\x0a5\\x10\\x03\\x0a=4\\x03\\x0a?\\x0e\\x03\\x0a>\\x10\\x03\\x0a\\x00 \\x03\\x0a\" +\n\t\"\\x0f:\\x03\\x0a\\x0f9\\x03\\x0a\\x0b\\x0a\\x03\\x0a\\x17%\\x03\\x0a\\x1b-\\x03\\x09-\" +\n\t\"\\x1a\\x03\\x09,4\\x03\\x09.,\\x03\\x09)\\x09\\x03\\x096!\\x03\\x091\\x1f\\x03\\x093\" +\n\t\"\\x16\\x03\\x0c+\\x1f\\x03\\x098 \\x03\\x098=\\x03\\x0c(\\x1a\\x03\\x0c(\\x16\\x03\\x09\" +\n\t\"\\x0a+\\x03\\x09\\x16\\x12\\x03\\x09\\x13\\x0e\\x03\\x09\\x153\\x03\\x08)!\\x03\\x09\\x1a\" +\n\t\"\\x01\\x03\\x09\\x18\\x01\\x03\\x08%#\\x03\\x08>\\x22\\x03\\x08\\x05%\\x03\\x08\\x02*\" +\n\t\"\\x03\\x08\\x15;\\x03\\x08\\x1b7\\x03\\x0f\\x07\\x1d\\x03\\x0f\\x04\\x03\\x03\\x070\\x0c\" +\n\t\"\\x03\\x07;\\x0b\\x03\\x07\\x08\\x17\\x03\\x07\\x12\\x06\\x03\\x06/-\\x03\\x0671\\x03\" +\n\t\"\\x065+\\x03\\x06>7\\x03\\x06\\x049\\x03\\x05+\\x1e\\x03\\x05,\\x17\\x03\\x05 \\x1d\\x03\" +\n\t\"\\x05\\x22\\x05\\x03\\x050\\x1d\"\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// idnaTrie. Total size: 29404 bytes (28.71 KiB). Checksum: 848c45acb5f7991c.\ntype idnaTrie struct{}\n\nfunc newIdnaTrie(i int) *idnaTrie {\n\treturn &idnaTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 125:\n\t\treturn uint16(idnaValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 125\n\t\treturn uint16(idnaSparse.lookup(n, b))\n\t}\n}\n\n// idnaValues: 127 blocks, 8128 entries, 16256 bytes\n// The third block is the zero block.\nvar idnaValues = [8128]uint16{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,\n\t0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,\n\t0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,\n\t0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,\n\t0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,\n\t0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,\n\t0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,\n\t0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,\n\t0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,\n\t0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,\n\t0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,\n\t0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,\n\t0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,\n\t0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,\n\t0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,\n\t0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,\n\t0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,\n\t0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,\n\t0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,\n\t0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,\n\t0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,\n\t0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,\n\t0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,\n\t0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,\n\t0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,\n\t0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,\n\t0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018,\n\t0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a,\n\t0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005,\n\t0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018,\n\t0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018,\n\t// Block 0x4, offset 0x100\n\t0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,\n\t0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,\n\t0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,\n\t0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,\n\t0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,\n\t0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,\n\t0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,\n\t0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,\n\t0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,\n\t0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,\n\t0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,\n\t0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008,\n\t0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,\n\t0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,\n\t0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,\n\t0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,\n\t0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,\n\t0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,\n\t0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,\n\t0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,\n\t0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,\n\t0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,\n\t0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,\n\t0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,\n\t0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,\n\t0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,\n\t0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,\n\t0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,\n\t0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,\n\t0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,\n\t0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9,\n\t0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,\n\t0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,\n\t0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,\n\t0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,\n\t0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,\n\t0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,\n\t0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,\n\t0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,\n\t0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,\n\t0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,\n\t0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,\n\t0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,\n\t0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,\n\t0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,\n\t0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,\n\t0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,\n\t0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,\n\t0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,\n\t0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d,\n\t0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,\n\t0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,\n\t0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,\n\t0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,\n\t0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a,\n\t0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369,\n\t0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,\n\t0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,\n\t0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,\n\t0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,\n\t0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d,\n\t0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,\n\t0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,\n\t0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,\n\t0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,\n\t0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,\n\t0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,\n\t0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,\n\t0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,\n\t0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008,\n\t0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2,\n\t0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,\n\t0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,\n\t0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,\n\t0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,\n\t0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,\n\t0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,\n\t0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,\n\t0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,\n\t0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,\n\t0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,\n\t0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,\n\t0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,\n\t0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,\n\t0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,\n\t0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,\n\t0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,\n\t0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,\n\t0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,\n\t0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,\n\t0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,\n\t0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,\n\t0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,\n\t0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,\n\t0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,\n\t0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,\n\t0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,\n\t0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,\n\t0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,\n\t0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,\n\t0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,\n\t0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,\n\t0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,\n\t0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,\n\t0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,\n\t0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,\n\t0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,\n\t0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,\n\t0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,\n\t0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,\n\t0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,\n\t0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,\n\t0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,\n\t0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,\n\t0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,\n\t0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,\n\t0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,\n\t0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,\n\t0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,\n\t0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,\n\t0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,\n\t0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,\n\t0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,\n\t0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,\n\t0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,\n\t0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,\n\t0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,\n\t0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,\n\t0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,\n\t0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,\n\t0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,\n\t0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,\n\t0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,\n\t0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,\n\t0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040,\n\t0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,\n\t0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,\n\t0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,\n\t0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,\n\t0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,\n\t0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,\n\t0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,\n\t0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,\n\t0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,\n\t0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,\n\t0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,\n\t0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,\n\t0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,\n\t0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429,\n\t0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,\n\t0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,\n\t0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,\n\t0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,\n\t0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,\n\t0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,\n\t0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,\n\t0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,\n\t0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,\n\t0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,\n\t0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,\n\t0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,\n\t0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,\n\t0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,\n\t0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,\n\t0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,\n\t0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,\n\t0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,\n\t0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,\n\t0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,\n\t0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,\n\t0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08,\n\t0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08,\n\t0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08,\n\t0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0808, 0x557: 0x0808,\n\t0x558: 0x0808, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040,\n\t0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08,\n\t0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08,\n\t0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040,\n\t0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040,\n\t0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040,\n\t0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308,\n\t0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008,\n\t0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308,\n\t0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308,\n\t0x598: 0x04c9, 0x599: 0x0501, 0x59a: 0x0539, 0x59b: 0x0571, 0x59c: 0x05a9, 0x59d: 0x05e1,\n\t0x59e: 0x0619, 0x59f: 0x0651, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308,\n\t0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008,\n\t0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008,\n\t0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008,\n\t0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008,\n\t0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008,\n\t0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008,\n\t0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040,\n\t0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008,\n\t0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008,\n\t0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008,\n\t0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040,\n\t0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,\n\t0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040,\n\t0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040,\n\t0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040,\n\t0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008,\n\t0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040,\n\t0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008,\n\t0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0689, 0x61d: 0x06c1,\n\t0x61e: 0x0040, 0x61f: 0x06f9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308,\n\t0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008,\n\t0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,\n\t0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018,\n\t0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018,\n\t0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x3308, 0x63f: 0x0040,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008,\n\t0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040,\n\t0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040,\n\t0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008,\n\t0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008,\n\t0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008,\n\t0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040,\n\t0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,\n\t0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0731, 0x674: 0x0040, 0x675: 0x0008,\n\t0x676: 0x0769, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040,\n\t0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040,\n\t0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308,\n\t0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308,\n\t0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040,\n\t0x698: 0x0040, 0x699: 0x07a1, 0x69a: 0x07d9, 0x69b: 0x0811, 0x69c: 0x0008, 0x69d: 0x0040,\n\t0x69e: 0x0849, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040,\n\t0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008,\n\t0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,\n\t0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308,\n\t0x6b6: 0x0018, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040,\n\t0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008,\n\t0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008,\n\t0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008,\n\t0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008,\n\t0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008,\n\t0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008,\n\t0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040,\n\t0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,\n\t0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008,\n\t0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040,\n\t0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308,\n\t0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008,\n\t0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040,\n\t0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040,\n\t0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040,\n\t0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308,\n\t0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008,\n\t0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,\n\t0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040,\n\t0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308,\n\t0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008,\n\t0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008,\n\t0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040,\n\t0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008,\n\t0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008,\n\t0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008,\n\t0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040,\n\t0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,\n\t0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008,\n\t0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040,\n\t0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040,\n\t0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008,\n\t0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040,\n\t0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x0040, 0x796: 0x3308, 0x797: 0x3008,\n\t0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9,\n\t0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308,\n\t0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008,\n\t0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008,\n\t0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018,\n\t0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040,\n\t0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008,\n\t0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040,\n\t0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040,\n\t0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040,\n\t0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040,\n\t0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008,\n\t0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008,\n\t0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008,\n\t0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008,\n\t0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040,\n\t0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040,\n\t0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308,\n\t0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040,\n\t0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040,\n\t0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040,\n\t0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308,\n\t0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008,\n\t0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008,\n\t0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040,\n\t0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018,\n\t0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0018, 0x845: 0x0008,\n\t0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008,\n\t0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040,\n\t0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008,\n\t0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008,\n\t0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008,\n\t0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040,\n\t0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,\n\t0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008,\n\t0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040,\n\t0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040,\n\t0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008,\n\t0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040,\n\t0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040,\n\t0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040,\n\t0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308,\n\t0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008,\n\t0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,\n\t0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040,\n\t0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040,\n\t0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040,\n\t0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008,\n\t0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040,\n\t0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008,\n\t0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018,\n\t0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308,\n\t0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008,\n\t0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,\n\t0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018,\n\t0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008,\n\t0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040,\n\t0x906: 0x0040, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0040, 0x90a: 0x0008, 0x90b: 0x0040,\n\t0x90c: 0x0040, 0x90d: 0x0008, 0x90e: 0x0040, 0x90f: 0x0040, 0x910: 0x0040, 0x911: 0x0040,\n\t0x912: 0x0040, 0x913: 0x0040, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008,\n\t0x918: 0x0040, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008,\n\t0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0040, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008,\n\t0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0040, 0x929: 0x0040,\n\t0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0040, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008,\n\t0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308,\n\t0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x0040, 0x93b: 0x3308,\n\t0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x09d1, 0x944: 0x0008, 0x945: 0x0008,\n\t0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008,\n\t0x94c: 0x0008, 0x94d: 0x0a09, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008,\n\t0x952: 0x0a41, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0a79,\n\t0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0ab1, 0x95d: 0x0008,\n\t0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008,\n\t0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0ae9,\n\t0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040,\n\t0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0b21, 0x974: 0x3308, 0x975: 0x0b59,\n\t0x976: 0x0b91, 0x977: 0x0bc9, 0x978: 0x0c19, 0x979: 0x0c51, 0x97a: 0x3308, 0x97b: 0x3308,\n\t0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x3308, 0x981: 0x0ca1, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018,\n\t0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,\n\t0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308,\n\t0x992: 0x3308, 0x993: 0x0cd9, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308,\n\t0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0d11,\n\t0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0d49, 0x9a3: 0x3308,\n\t0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0d81, 0x9a8: 0x3308, 0x9a9: 0x3308,\n\t0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0db9, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308,\n\t0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308,\n\t0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x0df1, 0x9ba: 0x3308, 0x9bb: 0x3308,\n\t0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008,\n\t0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008,\n\t0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008,\n\t0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008,\n\t0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008,\n\t0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008,\n\t0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008,\n\t0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0039, 0x9ed: 0x0ed1, 0x9ee: 0x0ee9, 0x9ef: 0x0008,\n\t0x9f0: 0x0ef9, 0x9f1: 0x0f09, 0x9f2: 0x0f19, 0x9f3: 0x0f31, 0x9f4: 0x0249, 0x9f5: 0x0f41,\n\t0x9f6: 0x0259, 0x9f7: 0x0f51, 0x9f8: 0x0359, 0x9f9: 0x0f61, 0x9fa: 0x0f71, 0x9fb: 0x0008,\n\t0x9fc: 0x00d9, 0x9fd: 0x0f81, 0x9fe: 0x0f99, 0x9ff: 0x0269,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1,\n\t0xa06: 0x059d, 0xa07: 0x0ee9, 0xa08: 0x0ef9, 0xa09: 0x0f09, 0xa0a: 0x0ff9, 0xa0b: 0x1011,\n\t0xa0c: 0x1029, 0xa0d: 0x0f31, 0xa0e: 0x0008, 0xa0f: 0x0f51, 0xa10: 0x0f61, 0xa11: 0x1041,\n\t0xa12: 0x00d9, 0xa13: 0x1059, 0xa14: 0x05b5, 0xa15: 0x05b5, 0xa16: 0x0f99, 0xa17: 0x0fa9,\n\t0xa18: 0x0fb9, 0xa19: 0x059d, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05cd, 0xa1d: 0x1099,\n\t0xa1e: 0x10b1, 0xa1f: 0x10c9, 0xa20: 0x10e1, 0xa21: 0x10f9, 0xa22: 0x0f41, 0xa23: 0x0269,\n\t0xa24: 0x0fb9, 0xa25: 0x1089, 0xa26: 0x1099, 0xa27: 0x10b1, 0xa28: 0x1111, 0xa29: 0x10e1,\n\t0xa2a: 0x10f9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008,\n\t0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008,\n\t0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x1129, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008,\n\t0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008,\n\t0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008,\n\t0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008,\n\t0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008,\n\t0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x1141, 0xa5c: 0x1159, 0xa5d: 0x1169,\n\t0xa5e: 0x1181, 0xa5f: 0x1029, 0xa60: 0x1199, 0xa61: 0x11a9, 0xa62: 0x11c1, 0xa63: 0x11d9,\n\t0xa64: 0x11f1, 0xa65: 0x1209, 0xa66: 0x1221, 0xa67: 0x05e5, 0xa68: 0x1239, 0xa69: 0x1251,\n\t0xa6a: 0xe17d, 0xa6b: 0x1269, 0xa6c: 0x1281, 0xa6d: 0x1299, 0xa6e: 0x12b1, 0xa6f: 0x12c9,\n\t0xa70: 0x12e1, 0xa71: 0x12f9, 0xa72: 0x1311, 0xa73: 0x1329, 0xa74: 0x1341, 0xa75: 0x1359,\n\t0xa76: 0x1371, 0xa77: 0x1389, 0xa78: 0x05fd, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1,\n\t0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008,\n\t0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008,\n\t0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008,\n\t0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008,\n\t0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008,\n\t0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008,\n\t0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008,\n\t0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008,\n\t0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008,\n\t0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008,\n\t0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008,\n\t0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008,\n\t0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008,\n\t0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008,\n\t0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x0615, 0xadb: 0x0635, 0xadc: 0x0008, 0xadd: 0x0008,\n\t0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008,\n\t0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008,\n\t0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008,\n\t0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008,\n\t0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008,\n\t0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008,\n\t0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045,\n\t0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008,\n\t0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008,\n\t0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045,\n\t0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008,\n\t0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045,\n\t0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045,\n\t0xb30: 0x0008, 0xb31: 0x1459, 0xb32: 0x0008, 0xb33: 0x1471, 0xb34: 0x0008, 0xb35: 0x1489,\n\t0xb36: 0x0008, 0xb37: 0x14a1, 0xb38: 0x0008, 0xb39: 0x14b9, 0xb3a: 0x0008, 0xb3b: 0x14d1,\n\t0xb3c: 0x0008, 0xb3d: 0x14e9, 0xb3e: 0x0040, 0xb3f: 0x0040,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x1501, 0xb41: 0x1531, 0xb42: 0x1561, 0xb43: 0x1591, 0xb44: 0x15c1, 0xb45: 0x15f1,\n\t0xb46: 0x1621, 0xb47: 0x1651, 0xb48: 0x1501, 0xb49: 0x1531, 0xb4a: 0x1561, 0xb4b: 0x1591,\n\t0xb4c: 0x15c1, 0xb4d: 0x15f1, 0xb4e: 0x1621, 0xb4f: 0x1651, 0xb50: 0x1681, 0xb51: 0x16b1,\n\t0xb52: 0x16e1, 0xb53: 0x1711, 0xb54: 0x1741, 0xb55: 0x1771, 0xb56: 0x17a1, 0xb57: 0x17d1,\n\t0xb58: 0x1681, 0xb59: 0x16b1, 0xb5a: 0x16e1, 0xb5b: 0x1711, 0xb5c: 0x1741, 0xb5d: 0x1771,\n\t0xb5e: 0x17a1, 0xb5f: 0x17d1, 0xb60: 0x1801, 0xb61: 0x1831, 0xb62: 0x1861, 0xb63: 0x1891,\n\t0xb64: 0x18c1, 0xb65: 0x18f1, 0xb66: 0x1921, 0xb67: 0x1951, 0xb68: 0x1801, 0xb69: 0x1831,\n\t0xb6a: 0x1861, 0xb6b: 0x1891, 0xb6c: 0x18c1, 0xb6d: 0x18f1, 0xb6e: 0x1921, 0xb6f: 0x1951,\n\t0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x1981, 0xb73: 0x19b1, 0xb74: 0x19d9, 0xb75: 0x0040,\n\t0xb76: 0x0008, 0xb77: 0x1a01, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x064d, 0xb7b: 0x1459,\n\t0xb7c: 0x19b1, 0xb7d: 0x0666, 0xb7e: 0x1a31, 0xb7f: 0x0686,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x06a6, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040,\n\t0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06c5, 0xb89: 0x1471, 0xb8a: 0x06dd, 0xb8b: 0x1489,\n\t0xb8c: 0x1aa9, 0xb8d: 0x1b2a, 0xb8e: 0x1b5a, 0xb8f: 0x1b8a, 0xb90: 0x0008, 0xb91: 0x0008,\n\t0xb92: 0x0008, 0xb93: 0x1bb9, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008,\n\t0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x06f5, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2,\n\t0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61,\n\t0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045,\n\t0xbaa: 0x070d, 0xbab: 0x14d1, 0xbac: 0xe04d, 0xbad: 0x1c7a, 0xbae: 0x03d2, 0xbaf: 0x1caa,\n\t0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x1cb9, 0xbb3: 0x1ce9, 0xbb4: 0x1d11, 0xbb5: 0x0040,\n\t0xbb6: 0x0008, 0xbb7: 0x1d39, 0xbb8: 0x0725, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9,\n\t0xbbc: 0x1ce9, 0xbbd: 0x073e, 0xbbe: 0x075e, 0xbbf: 0x0040,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a,\n\t0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0,\n\t0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d,\n\t0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x077e,\n\t0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018,\n\t0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018,\n\t0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040,\n\t0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a,\n\t0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x1d69, 0xbf4: 0x1da1, 0xbf5: 0x0018,\n\t0xbf6: 0x1df1, 0xbf7: 0x1e29, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018,\n\t0xbfc: 0x1e7a, 0xbfd: 0x0018, 0xbfe: 0x079e, 0xbff: 0x0018,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018,\n\t0xc06: 0x0018, 0xc07: 0x1e92, 0xc08: 0x1eaa, 0xc09: 0x1ec2, 0xc0a: 0x0018, 0xc0b: 0x0018,\n\t0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018,\n\t0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x1ed9,\n\t0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018,\n\t0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340,\n\t0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040,\n\t0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340,\n\t0xc30: 0x1f41, 0xc31: 0x0f41, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x1f51, 0xc35: 0x1f61,\n\t0xc36: 0x1f71, 0xc37: 0x1f81, 0xc38: 0x1f91, 0xc39: 0x1fa1, 0xc3a: 0x1fb2, 0xc3b: 0x07bd,\n\t0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1f41, 0xc41: 0x00c9, 0xc42: 0x0069, 0xc43: 0x0079, 0xc44: 0x1f51, 0xc45: 0x1f61,\n\t0xc46: 0x1f71, 0xc47: 0x1f81, 0xc48: 0x1f91, 0xc49: 0x1fa1, 0xc4a: 0x1fb2, 0xc4b: 0x07d5,\n\t0xc4c: 0x1fc2, 0xc4d: 0x1fd2, 0xc4e: 0x1fe2, 0xc4f: 0x0040, 0xc50: 0x0039, 0xc51: 0x0f09,\n\t0xc52: 0x00d9, 0xc53: 0x0369, 0xc54: 0x0ff9, 0xc55: 0x0249, 0xc56: 0x0f51, 0xc57: 0x0359,\n\t0xc58: 0x0f61, 0xc59: 0x0f71, 0xc5a: 0x0f99, 0xc5b: 0x01d9, 0xc5c: 0x0fa9, 0xc5d: 0x0040,\n\t0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018,\n\t0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x1ff1, 0xc69: 0x0018,\n\t0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018,\n\t0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018,\n\t0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018,\n\t0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x07ee, 0xc81: 0x080e, 0xc82: 0x1159, 0xc83: 0x082d, 0xc84: 0x0018, 0xc85: 0x084e,\n\t0xc86: 0x086e, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x088d, 0xc8a: 0x0f31, 0xc8b: 0x0249,\n\t0xc8c: 0x0249, 0xc8d: 0x0249, 0xc8e: 0x0249, 0xc8f: 0x2009, 0xc90: 0x0f41, 0xc91: 0x0f41,\n\t0xc92: 0x0359, 0xc93: 0x0359, 0xc94: 0x0018, 0xc95: 0x0f71, 0xc96: 0x2021, 0xc97: 0x0018,\n\t0xc98: 0x0018, 0xc99: 0x0f99, 0xc9a: 0x2039, 0xc9b: 0x0269, 0xc9c: 0x0269, 0xc9d: 0x0269,\n\t0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x2049, 0xca1: 0x08ad, 0xca2: 0x2061, 0xca3: 0x0018,\n\t0xca4: 0x13d1, 0xca5: 0x0018, 0xca6: 0x2079, 0xca7: 0x0018, 0xca8: 0x13d1, 0xca9: 0x0018,\n\t0xcaa: 0x0f51, 0xcab: 0x2091, 0xcac: 0x0ee9, 0xcad: 0x1159, 0xcae: 0x0018, 0xcaf: 0x0f09,\n\t0xcb0: 0x0f09, 0xcb1: 0x1199, 0xcb2: 0x0040, 0xcb3: 0x0f61, 0xcb4: 0x00d9, 0xcb5: 0x20a9,\n\t0xcb6: 0x20c1, 0xcb7: 0x20d9, 0xcb8: 0x20f1, 0xcb9: 0x0f41, 0xcba: 0x0018, 0xcbb: 0x08cd,\n\t0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x08ed, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0ef9,\n\t0xcc6: 0x0ef9, 0xcc7: 0x0f09, 0xcc8: 0x0f41, 0xcc9: 0x0259, 0xcca: 0x0018, 0xccb: 0x0018,\n\t0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x2121, 0xcd1: 0x2151,\n\t0xcd2: 0x2181, 0xcd3: 0x21b9, 0xcd4: 0x21e9, 0xcd5: 0x2219, 0xcd6: 0x2249, 0xcd7: 0x2279,\n\t0xcd8: 0x22a9, 0xcd9: 0x22d9, 0xcda: 0x2309, 0xcdb: 0x2339, 0xcdc: 0x2369, 0xcdd: 0x2399,\n\t0xcde: 0x23c9, 0xcdf: 0x23f9, 0xce0: 0x0f41, 0xce1: 0x2421, 0xce2: 0x0905, 0xce3: 0x2439,\n\t0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x0925, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369,\n\t0xcea: 0x24a9, 0xceb: 0x0945, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61,\n\t0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x0965, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451,\n\t0xcf6: 0x0985, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09a5,\n\t0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018,\n\t0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040,\n\t0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040,\n\t0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040,\n\t0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040,\n\t0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x00c9, 0xd21: 0x0069, 0xd22: 0x0079, 0xd23: 0x1f51,\n\t0xd24: 0x1f61, 0xd25: 0x1f71, 0xd26: 0x1f81, 0xd27: 0x1f91, 0xd28: 0x1fa1, 0xd29: 0x2601,\n\t0xd2a: 0x2619, 0xd2b: 0x2631, 0xd2c: 0x2649, 0xd2d: 0x2661, 0xd2e: 0x2679, 0xd2f: 0x2691,\n\t0xd30: 0x26a9, 0xd31: 0x26c1, 0xd32: 0x26d9, 0xd33: 0x26f1, 0xd34: 0x0a06, 0xd35: 0x0a26,\n\t0xd36: 0x0a46, 0xd37: 0x0a66, 0xd38: 0x0a86, 0xd39: 0x0aa6, 0xd3a: 0x0ac6, 0xd3b: 0x0ae6,\n\t0xd3c: 0x0b06, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x2782, 0xd41: 0x27aa, 0xd42: 0x27d2, 0xd43: 0x27fa, 0xd44: 0x2822, 0xd45: 0x284a,\n\t0xd46: 0x2872, 0xd47: 0x289a, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040,\n\t0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040,\n\t0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040,\n\t0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b26, 0xd5d: 0x0b46,\n\t0xd5e: 0x0b66, 0xd5f: 0x0b86, 0xd60: 0x0ba6, 0xd61: 0x0bc6, 0xd62: 0x0be6, 0xd63: 0x0c06,\n\t0xd64: 0x0c26, 0xd65: 0x0c46, 0xd66: 0x0c66, 0xd67: 0x0c86, 0xd68: 0x0ca6, 0xd69: 0x0cc6,\n\t0xd6a: 0x0ce6, 0xd6b: 0x0d06, 0xd6c: 0x0d26, 0xd6d: 0x0d46, 0xd6e: 0x0d66, 0xd6f: 0x0d86,\n\t0xd70: 0x0da6, 0xd71: 0x0dc6, 0xd72: 0x0de6, 0xd73: 0x0e06, 0xd74: 0x0e26, 0xd75: 0x0e46,\n\t0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199,\n\t0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0f51, 0xd81: 0x0359, 0xd82: 0x0f61, 0xd83: 0x0f71, 0xd84: 0x00d9, 0xd85: 0x0f99,\n\t0xd86: 0x2039, 0xd87: 0x0269, 0xd88: 0x01d9, 0xd89: 0x0fa9, 0xd8a: 0x0fb9, 0xd8b: 0x1089,\n\t0xd8c: 0x0279, 0xd8d: 0x0369, 0xd8e: 0x0289, 0xd8f: 0x13d1, 0xd90: 0x0039, 0xd91: 0x0ee9,\n\t0xd92: 0x1159, 0xd93: 0x0ef9, 0xd94: 0x0f09, 0xd95: 0x1199, 0xd96: 0x0f31, 0xd97: 0x0249,\n\t0xd98: 0x0f41, 0xd99: 0x0259, 0xd9a: 0x0f51, 0xd9b: 0x0359, 0xd9c: 0x0f61, 0xd9d: 0x0f71,\n\t0xd9e: 0x00d9, 0xd9f: 0x0f99, 0xda0: 0x2039, 0xda1: 0x0269, 0xda2: 0x01d9, 0xda3: 0x0fa9,\n\t0xda4: 0x0fb9, 0xda5: 0x1089, 0xda6: 0x0279, 0xda7: 0x0369, 0xda8: 0x0289, 0xda9: 0x13d1,\n\t0xdaa: 0x1f41, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018,\n\t0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018,\n\t0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018,\n\t0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008,\n\t0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008,\n\t0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008,\n\t0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008,\n\t0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008,\n\t0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x2971, 0xde3: 0x0ebd,\n\t0xde4: 0x2989, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d,\n\t0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0fe1, 0xdee: 0x1281, 0xdef: 0x0fc9,\n\t0xdf0: 0x1141, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d,\n\t0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008,\n\t0xdfc: 0x0259, 0xdfd: 0x1089, 0xdfe: 0x29a1, 0xdff: 0x29b9,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008,\n\t0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008,\n\t0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008,\n\t0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008,\n\t0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008,\n\t0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008,\n\t0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018,\n\t0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308,\n\t0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040,\n\t0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018,\n\t0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x26fd, 0xe41: 0x271d, 0xe42: 0x273d, 0xe43: 0x275d, 0xe44: 0x277d, 0xe45: 0x279d,\n\t0xe46: 0x27bd, 0xe47: 0x27dd, 0xe48: 0x27fd, 0xe49: 0x281d, 0xe4a: 0x283d, 0xe4b: 0x285d,\n\t0xe4c: 0x287d, 0xe4d: 0x289d, 0xe4e: 0x28bd, 0xe4f: 0x28dd, 0xe50: 0x28fd, 0xe51: 0x291d,\n\t0xe52: 0x293d, 0xe53: 0x295d, 0xe54: 0x297d, 0xe55: 0x299d, 0xe56: 0x0040, 0xe57: 0x0040,\n\t0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040,\n\t0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040,\n\t0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040,\n\t0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040,\n\t0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040,\n\t0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040,\n\t0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x29d1, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008,\n\t0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018,\n\t0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018,\n\t0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018,\n\t0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018,\n\t0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018,\n\t0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018,\n\t0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018,\n\t0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018,\n\t0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29bd, 0xeb9: 0x29dd, 0xeba: 0x29fd, 0xebb: 0x0018,\n\t0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x2b3d, 0xec1: 0x2b5d, 0xec2: 0x2b7d, 0xec3: 0x2b9d, 0xec4: 0x2bbd, 0xec5: 0x2bdd,\n\t0xec6: 0x2bdd, 0xec7: 0x2bdd, 0xec8: 0x2bfd, 0xec9: 0x2bfd, 0xeca: 0x2bfd, 0xecb: 0x2bfd,\n\t0xecc: 0x2c1d, 0xecd: 0x2c1d, 0xece: 0x2c1d, 0xecf: 0x2c3d, 0xed0: 0x2c5d, 0xed1: 0x2c5d,\n\t0xed2: 0x2a7d, 0xed3: 0x2a7d, 0xed4: 0x2c5d, 0xed5: 0x2c5d, 0xed6: 0x2c7d, 0xed7: 0x2c7d,\n\t0xed8: 0x2c5d, 0xed9: 0x2c5d, 0xeda: 0x2a7d, 0xedb: 0x2a7d, 0xedc: 0x2c5d, 0xedd: 0x2c5d,\n\t0xede: 0x2c3d, 0xedf: 0x2c3d, 0xee0: 0x2c9d, 0xee1: 0x2c9d, 0xee2: 0x2cbd, 0xee3: 0x2cbd,\n\t0xee4: 0x0040, 0xee5: 0x2cdd, 0xee6: 0x2cfd, 0xee7: 0x2d1d, 0xee8: 0x2d1d, 0xee9: 0x2d3d,\n\t0xeea: 0x2d5d, 0xeeb: 0x2d7d, 0xeec: 0x2d9d, 0xeed: 0x2dbd, 0xeee: 0x2ddd, 0xeef: 0x2dfd,\n\t0xef0: 0x2e1d, 0xef1: 0x2e3d, 0xef2: 0x2e3d, 0xef3: 0x2e5d, 0xef4: 0x2e7d, 0xef5: 0x2e7d,\n\t0xef6: 0x2e9d, 0xef7: 0x2ebd, 0xef8: 0x2e5d, 0xef9: 0x2edd, 0xefa: 0x2efd, 0xefb: 0x2edd,\n\t0xefc: 0x2e5d, 0xefd: 0x2f1d, 0xefe: 0x2f3d, 0xeff: 0x2f5d,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x2f7d, 0xf01: 0x2f9d, 0xf02: 0x2cfd, 0xf03: 0x2cdd, 0xf04: 0x2fbd, 0xf05: 0x2fdd,\n\t0xf06: 0x2ffd, 0xf07: 0x301d, 0xf08: 0x303d, 0xf09: 0x305d, 0xf0a: 0x307d, 0xf0b: 0x309d,\n\t0xf0c: 0x30bd, 0xf0d: 0x30dd, 0xf0e: 0x30fd, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018,\n\t0xf12: 0x311d, 0xf13: 0x313d, 0xf14: 0x315d, 0xf15: 0x317d, 0xf16: 0x319d, 0xf17: 0x31bd,\n\t0xf18: 0x31dd, 0xf19: 0x31fd, 0xf1a: 0x321d, 0xf1b: 0x323d, 0xf1c: 0x315d, 0xf1d: 0x325d,\n\t0xf1e: 0x327d, 0xf1f: 0x329d, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008,\n\t0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008,\n\t0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008,\n\t0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008,\n\t0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0040,\n\t0xf3c: 0x0040, 0xf3d: 0x0040, 0xf3e: 0x0040, 0xf3f: 0x0040,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32bd, 0xf45: 0x32dd,\n\t0xf46: 0x32fd, 0xf47: 0x331d, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018,\n\t0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x333d, 0xf51: 0x3761,\n\t0xf52: 0x3779, 0xf53: 0x3791, 0xf54: 0x37a9, 0xf55: 0x37c1, 0xf56: 0x37d9, 0xf57: 0x37f1,\n\t0xf58: 0x3809, 0xf59: 0x3821, 0xf5a: 0x3839, 0xf5b: 0x3851, 0xf5c: 0x3869, 0xf5d: 0x3881,\n\t0xf5e: 0x3899, 0xf5f: 0x38b1, 0xf60: 0x335d, 0xf61: 0x337d, 0xf62: 0x339d, 0xf63: 0x33bd,\n\t0xf64: 0x33dd, 0xf65: 0x33dd, 0xf66: 0x33fd, 0xf67: 0x341d, 0xf68: 0x343d, 0xf69: 0x345d,\n\t0xf6a: 0x347d, 0xf6b: 0x349d, 0xf6c: 0x34bd, 0xf6d: 0x34dd, 0xf6e: 0x34fd, 0xf6f: 0x351d,\n\t0xf70: 0x353d, 0xf71: 0x355d, 0xf72: 0x357d, 0xf73: 0x359d, 0xf74: 0x35bd, 0xf75: 0x35dd,\n\t0xf76: 0x35fd, 0xf77: 0x361d, 0xf78: 0x363d, 0xf79: 0x365d, 0xf7a: 0x367d, 0xf7b: 0x369d,\n\t0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36bd, 0xf7f: 0x0018,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x36dd, 0xf81: 0x36fd, 0xf82: 0x371d, 0xf83: 0x373d, 0xf84: 0x375d, 0xf85: 0x377d,\n\t0xf86: 0x379d, 0xf87: 0x37bd, 0xf88: 0x37dd, 0xf89: 0x37fd, 0xf8a: 0x381d, 0xf8b: 0x383d,\n\t0xf8c: 0x385d, 0xf8d: 0x387d, 0xf8e: 0x389d, 0xf8f: 0x38bd, 0xf90: 0x38dd, 0xf91: 0x38fd,\n\t0xf92: 0x391d, 0xf93: 0x393d, 0xf94: 0x395d, 0xf95: 0x397d, 0xf96: 0x399d, 0xf97: 0x39bd,\n\t0xf98: 0x39dd, 0xf99: 0x39fd, 0xf9a: 0x3a1d, 0xf9b: 0x3a3d, 0xf9c: 0x3a5d, 0xf9d: 0x3a7d,\n\t0xf9e: 0x3a9d, 0xf9f: 0x3abd, 0xfa0: 0x3add, 0xfa1: 0x3afd, 0xfa2: 0x3b1d, 0xfa3: 0x3b3d,\n\t0xfa4: 0x3b5d, 0xfa5: 0x3b7d, 0xfa6: 0x127d, 0xfa7: 0x3b9d, 0xfa8: 0x3bbd, 0xfa9: 0x3bdd,\n\t0xfaa: 0x3bfd, 0xfab: 0x3c1d, 0xfac: 0x3c3d, 0xfad: 0x3c5d, 0xfae: 0x239d, 0xfaf: 0x3c7d,\n\t0xfb0: 0x3c9d, 0xfb1: 0x3939, 0xfb2: 0x3951, 0xfb3: 0x3969, 0xfb4: 0x3981, 0xfb5: 0x3999,\n\t0xfb6: 0x39b1, 0xfb7: 0x39c9, 0xfb8: 0x39e1, 0xfb9: 0x39f9, 0xfba: 0x3a11, 0xfbb: 0x3a29,\n\t0xfbc: 0x3a41, 0xfbd: 0x3a59, 0xfbe: 0x3a71, 0xfbf: 0x3a89,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x3aa1, 0xfc1: 0x3ac9, 0xfc2: 0x3af1, 0xfc3: 0x3b19, 0xfc4: 0x3b41, 0xfc5: 0x3b69,\n\t0xfc6: 0x3b91, 0xfc7: 0x3bb9, 0xfc8: 0x3be1, 0xfc9: 0x3c09, 0xfca: 0x3c39, 0xfcb: 0x3c69,\n\t0xfcc: 0x3c99, 0xfcd: 0x3cbd, 0xfce: 0x3cb1, 0xfcf: 0x3cdd, 0xfd0: 0x3cfd, 0xfd1: 0x3d15,\n\t0xfd2: 0x3d2d, 0xfd3: 0x3d45, 0xfd4: 0x3d5d, 0xfd5: 0x3d5d, 0xfd6: 0x3d45, 0xfd7: 0x3d75,\n\t0xfd8: 0x07bd, 0xfd9: 0x3d8d, 0xfda: 0x3da5, 0xfdb: 0x3dbd, 0xfdc: 0x3dd5, 0xfdd: 0x3ded,\n\t0xfde: 0x3e05, 0xfdf: 0x3e1d, 0xfe0: 0x3e35, 0xfe1: 0x3e4d, 0xfe2: 0x3e65, 0xfe3: 0x3e7d,\n\t0xfe4: 0x3e95, 0xfe5: 0x3e95, 0xfe6: 0x3ead, 0xfe7: 0x3ead, 0xfe8: 0x3ec5, 0xfe9: 0x3ec5,\n\t0xfea: 0x3edd, 0xfeb: 0x3ef5, 0xfec: 0x3f0d, 0xfed: 0x3f25, 0xfee: 0x3f3d, 0xfef: 0x3f3d,\n\t0xff0: 0x3f55, 0xff1: 0x3f55, 0xff2: 0x3f55, 0xff3: 0x3f6d, 0xff4: 0x3f85, 0xff5: 0x3f9d,\n\t0xff6: 0x3fb5, 0xff7: 0x3f9d, 0xff8: 0x3fcd, 0xff9: 0x3fe5, 0xffa: 0x3f6d, 0xffb: 0x3ffd,\n\t0xffc: 0x4015, 0xffd: 0x4015, 0xffe: 0x4015, 0xfff: 0x0040,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x3cc9, 0x1001: 0x3d31, 0x1002: 0x3d99, 0x1003: 0x3e01, 0x1004: 0x3e51, 0x1005: 0x3eb9,\n\t0x1006: 0x3f09, 0x1007: 0x3f59, 0x1008: 0x3fd9, 0x1009: 0x4041, 0x100a: 0x4091, 0x100b: 0x40e1,\n\t0x100c: 0x4131, 0x100d: 0x4199, 0x100e: 0x4201, 0x100f: 0x4251, 0x1010: 0x42a1, 0x1011: 0x42d9,\n\t0x1012: 0x4329, 0x1013: 0x4391, 0x1014: 0x43f9, 0x1015: 0x4431, 0x1016: 0x44b1, 0x1017: 0x4549,\n\t0x1018: 0x45c9, 0x1019: 0x4619, 0x101a: 0x4699, 0x101b: 0x4719, 0x101c: 0x4781, 0x101d: 0x47d1,\n\t0x101e: 0x4821, 0x101f: 0x4871, 0x1020: 0x48d9, 0x1021: 0x4959, 0x1022: 0x49c1, 0x1023: 0x4a11,\n\t0x1024: 0x4a61, 0x1025: 0x4ab1, 0x1026: 0x4ae9, 0x1027: 0x4b21, 0x1028: 0x4b59, 0x1029: 0x4b91,\n\t0x102a: 0x4be1, 0x102b: 0x4c31, 0x102c: 0x4cb1, 0x102d: 0x4d01, 0x102e: 0x4d69, 0x102f: 0x4de9,\n\t0x1030: 0x4e39, 0x1031: 0x4e71, 0x1032: 0x4ea9, 0x1033: 0x4f29, 0x1034: 0x4f91, 0x1035: 0x5011,\n\t0x1036: 0x5061, 0x1037: 0x50e1, 0x1038: 0x5119, 0x1039: 0x5169, 0x103a: 0x51b9, 0x103b: 0x5209,\n\t0x103c: 0x5259, 0x103d: 0x52a9, 0x103e: 0x5311, 0x103f: 0x5361,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x5399, 0x1041: 0x53e9, 0x1042: 0x5439, 0x1043: 0x5489, 0x1044: 0x54f1, 0x1045: 0x5541,\n\t0x1046: 0x5591, 0x1047: 0x55e1, 0x1048: 0x5661, 0x1049: 0x56c9, 0x104a: 0x5701, 0x104b: 0x5781,\n\t0x104c: 0x57b9, 0x104d: 0x5821, 0x104e: 0x5889, 0x104f: 0x58d9, 0x1050: 0x5929, 0x1051: 0x5979,\n\t0x1052: 0x59e1, 0x1053: 0x5a19, 0x1054: 0x5a69, 0x1055: 0x5ad1, 0x1056: 0x5b09, 0x1057: 0x5b89,\n\t0x1058: 0x5bd9, 0x1059: 0x5c01, 0x105a: 0x5c29, 0x105b: 0x5c51, 0x105c: 0x5c79, 0x105d: 0x5ca1,\n\t0x105e: 0x5cc9, 0x105f: 0x5cf1, 0x1060: 0x5d19, 0x1061: 0x5d41, 0x1062: 0x5d69, 0x1063: 0x5d99,\n\t0x1064: 0x5dc9, 0x1065: 0x5df9, 0x1066: 0x5e29, 0x1067: 0x5e59, 0x1068: 0x5e89, 0x1069: 0x5eb9,\n\t0x106a: 0x5ee9, 0x106b: 0x5f19, 0x106c: 0x5f49, 0x106d: 0x5f79, 0x106e: 0x5fa9, 0x106f: 0x5fd9,\n\t0x1070: 0x6009, 0x1071: 0x402d, 0x1072: 0x6039, 0x1073: 0x6051, 0x1074: 0x404d, 0x1075: 0x6069,\n\t0x1076: 0x6081, 0x1077: 0x6099, 0x1078: 0x406d, 0x1079: 0x406d, 0x107a: 0x60b1, 0x107b: 0x60c9,\n\t0x107c: 0x6101, 0x107d: 0x6139, 0x107e: 0x6171, 0x107f: 0x61a9,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x6211, 0x1081: 0x6229, 0x1082: 0x408d, 0x1083: 0x6241, 0x1084: 0x6259, 0x1085: 0x6271,\n\t0x1086: 0x6289, 0x1087: 0x62a1, 0x1088: 0x40ad, 0x1089: 0x62b9, 0x108a: 0x62e1, 0x108b: 0x62f9,\n\t0x108c: 0x40cd, 0x108d: 0x40cd, 0x108e: 0x6311, 0x108f: 0x6329, 0x1090: 0x6341, 0x1091: 0x40ed,\n\t0x1092: 0x410d, 0x1093: 0x412d, 0x1094: 0x414d, 0x1095: 0x416d, 0x1096: 0x6359, 0x1097: 0x6371,\n\t0x1098: 0x6389, 0x1099: 0x63a1, 0x109a: 0x63b9, 0x109b: 0x418d, 0x109c: 0x63d1, 0x109d: 0x63e9,\n\t0x109e: 0x6401, 0x109f: 0x41ad, 0x10a0: 0x41cd, 0x10a1: 0x6419, 0x10a2: 0x41ed, 0x10a3: 0x420d,\n\t0x10a4: 0x422d, 0x10a5: 0x6431, 0x10a6: 0x424d, 0x10a7: 0x6449, 0x10a8: 0x6479, 0x10a9: 0x6211,\n\t0x10aa: 0x426d, 0x10ab: 0x428d, 0x10ac: 0x42ad, 0x10ad: 0x42cd, 0x10ae: 0x64b1, 0x10af: 0x64f1,\n\t0x10b0: 0x6539, 0x10b1: 0x6551, 0x10b2: 0x42ed, 0x10b3: 0x6569, 0x10b4: 0x6581, 0x10b5: 0x6599,\n\t0x10b6: 0x430d, 0x10b7: 0x65b1, 0x10b8: 0x65c9, 0x10b9: 0x65b1, 0x10ba: 0x65e1, 0x10bb: 0x65f9,\n\t0x10bc: 0x432d, 0x10bd: 0x6611, 0x10be: 0x6629, 0x10bf: 0x6611,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x434d, 0x10c1: 0x436d, 0x10c2: 0x0040, 0x10c3: 0x6641, 0x10c4: 0x6659, 0x10c5: 0x6671,\n\t0x10c6: 0x6689, 0x10c7: 0x0040, 0x10c8: 0x66c1, 0x10c9: 0x66d9, 0x10ca: 0x66f1, 0x10cb: 0x6709,\n\t0x10cc: 0x6721, 0x10cd: 0x6739, 0x10ce: 0x6401, 0x10cf: 0x6751, 0x10d0: 0x6769, 0x10d1: 0x6781,\n\t0x10d2: 0x438d, 0x10d3: 0x6799, 0x10d4: 0x6289, 0x10d5: 0x43ad, 0x10d6: 0x43cd, 0x10d7: 0x67b1,\n\t0x10d8: 0x0040, 0x10d9: 0x43ed, 0x10da: 0x67c9, 0x10db: 0x67e1, 0x10dc: 0x67f9, 0x10dd: 0x6811,\n\t0x10de: 0x6829, 0x10df: 0x6859, 0x10e0: 0x6889, 0x10e1: 0x68b1, 0x10e2: 0x68d9, 0x10e3: 0x6901,\n\t0x10e4: 0x6929, 0x10e5: 0x6951, 0x10e6: 0x6979, 0x10e7: 0x69a1, 0x10e8: 0x69c9, 0x10e9: 0x69f1,\n\t0x10ea: 0x6a21, 0x10eb: 0x6a51, 0x10ec: 0x6a81, 0x10ed: 0x6ab1, 0x10ee: 0x6ae1, 0x10ef: 0x6b11,\n\t0x10f0: 0x6b41, 0x10f1: 0x6b71, 0x10f2: 0x6ba1, 0x10f3: 0x6bd1, 0x10f4: 0x6c01, 0x10f5: 0x6c31,\n\t0x10f6: 0x6c61, 0x10f7: 0x6c91, 0x10f8: 0x6cc1, 0x10f9: 0x6cf1, 0x10fa: 0x6d21, 0x10fb: 0x6d51,\n\t0x10fc: 0x6d81, 0x10fd: 0x6db1, 0x10fe: 0x6de1, 0x10ff: 0x440d,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008,\n\t0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008,\n\t0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008,\n\t0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008,\n\t0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0xe00d, 0x111d: 0x0008,\n\t0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008,\n\t0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008,\n\t0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x3308,\n\t0x1130: 0x3318, 0x1131: 0x3318, 0x1132: 0x3318, 0x1133: 0x0018, 0x1134: 0x3308, 0x1135: 0x3308,\n\t0x1136: 0x3308, 0x1137: 0x3308, 0x1138: 0x3308, 0x1139: 0x3308, 0x113a: 0x3308, 0x113b: 0x3308,\n\t0x113c: 0x3308, 0x113d: 0x3308, 0x113e: 0x0018, 0x113f: 0x0008,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008,\n\t0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008,\n\t0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008,\n\t0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008,\n\t0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0x0ea1, 0x115d: 0x6e11,\n\t0x115e: 0x3308, 0x115f: 0x3308, 0x1160: 0x0008, 0x1161: 0x0008, 0x1162: 0x0008, 0x1163: 0x0008,\n\t0x1164: 0x0008, 0x1165: 0x0008, 0x1166: 0x0008, 0x1167: 0x0008, 0x1168: 0x0008, 0x1169: 0x0008,\n\t0x116a: 0x0008, 0x116b: 0x0008, 0x116c: 0x0008, 0x116d: 0x0008, 0x116e: 0x0008, 0x116f: 0x0008,\n\t0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008,\n\t0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0x0008, 0x117a: 0x0008, 0x117b: 0x0008,\n\t0x117c: 0x0008, 0x117d: 0x0008, 0x117e: 0x0008, 0x117f: 0x0008,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x0018, 0x1181: 0x0018, 0x1182: 0x0018, 0x1183: 0x0018, 0x1184: 0x0018, 0x1185: 0x0018,\n\t0x1186: 0x0018, 0x1187: 0x0018, 0x1188: 0x0018, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0x0018,\n\t0x118c: 0x0018, 0x118d: 0x0018, 0x118e: 0x0018, 0x118f: 0x0018, 0x1190: 0x0018, 0x1191: 0x0018,\n\t0x1192: 0x0018, 0x1193: 0x0018, 0x1194: 0x0018, 0x1195: 0x0018, 0x1196: 0x0018, 0x1197: 0x0008,\n\t0x1198: 0x0008, 0x1199: 0x0008, 0x119a: 0x0008, 0x119b: 0x0008, 0x119c: 0x0008, 0x119d: 0x0008,\n\t0x119e: 0x0008, 0x119f: 0x0008, 0x11a0: 0x0018, 0x11a1: 0x0018, 0x11a2: 0xe00d, 0x11a3: 0x0008,\n\t0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,\n\t0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008,\n\t0x11b0: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008,\n\t0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008,\n\t0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008,\n\t0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0xe00d, 0x11c9: 0x0008, 0x11ca: 0xe00d, 0x11cb: 0x0008,\n\t0x11cc: 0xe00d, 0x11cd: 0x0008, 0x11ce: 0xe00d, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008,\n\t0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0xe00d, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008,\n\t0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008,\n\t0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008,\n\t0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008,\n\t0x11ea: 0xe00d, 0x11eb: 0x0008, 0x11ec: 0xe00d, 0x11ed: 0x0008, 0x11ee: 0xe00d, 0x11ef: 0x0008,\n\t0x11f0: 0xe0fd, 0x11f1: 0x0008, 0x11f2: 0x0008, 0x11f3: 0x0008, 0x11f4: 0x0008, 0x11f5: 0x0008,\n\t0x11f6: 0x0008, 0x11f7: 0x0008, 0x11f8: 0x0008, 0x11f9: 0xe01d, 0x11fa: 0x0008, 0x11fb: 0xe03d,\n\t0x11fc: 0x0008, 0x11fd: 0x442d, 0x11fe: 0xe00d, 0x11ff: 0x0008,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0xe00d, 0x1205: 0x0008,\n\t0x1206: 0xe00d, 0x1207: 0x0008, 0x1208: 0x0008, 0x1209: 0x0018, 0x120a: 0x0018, 0x120b: 0xe03d,\n\t0x120c: 0x0008, 0x120d: 0x11d9, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0xe00d, 0x1211: 0x0008,\n\t0x1212: 0xe00d, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008,\n\t0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0xe00d, 0x121b: 0x0008, 0x121c: 0xe00d, 0x121d: 0x0008,\n\t0x121e: 0xe00d, 0x121f: 0x0008, 0x1220: 0xe00d, 0x1221: 0x0008, 0x1222: 0xe00d, 0x1223: 0x0008,\n\t0x1224: 0xe00d, 0x1225: 0x0008, 0x1226: 0xe00d, 0x1227: 0x0008, 0x1228: 0xe00d, 0x1229: 0x0008,\n\t0x122a: 0x6e29, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e41, 0x122e: 0x1221, 0x122f: 0x0008,\n\t0x1230: 0x6e59, 0x1231: 0x6e71, 0x1232: 0x1239, 0x1233: 0x444d, 0x1234: 0xe00d, 0x1235: 0x0008,\n\t0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0x0040, 0x1239: 0x0008, 0x123a: 0x0040, 0x123b: 0x0040,\n\t0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x64d5, 0x1241: 0x64f5, 0x1242: 0x6515, 0x1243: 0x6535, 0x1244: 0x6555, 0x1245: 0x6575,\n\t0x1246: 0x6595, 0x1247: 0x65b5, 0x1248: 0x65d5, 0x1249: 0x65f5, 0x124a: 0x6615, 0x124b: 0x6635,\n\t0x124c: 0x6655, 0x124d: 0x6675, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x6695, 0x1251: 0x0008,\n\t0x1252: 0x66b5, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x66d5, 0x1256: 0x66f5, 0x1257: 0x6715,\n\t0x1258: 0x6735, 0x1259: 0x6755, 0x125a: 0x6775, 0x125b: 0x6795, 0x125c: 0x67b5, 0x125d: 0x67d5,\n\t0x125e: 0x67f5, 0x125f: 0x0008, 0x1260: 0x6815, 0x1261: 0x0008, 0x1262: 0x6835, 0x1263: 0x0008,\n\t0x1264: 0x0008, 0x1265: 0x6855, 0x1266: 0x6875, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008,\n\t0x126a: 0x6895, 0x126b: 0x68b5, 0x126c: 0x68d5, 0x126d: 0x68f5, 0x126e: 0x6915, 0x126f: 0x6935,\n\t0x1270: 0x6955, 0x1271: 0x6975, 0x1272: 0x6995, 0x1273: 0x69b5, 0x1274: 0x69d5, 0x1275: 0x69f5,\n\t0x1276: 0x6a15, 0x1277: 0x6a35, 0x1278: 0x6a55, 0x1279: 0x6a75, 0x127a: 0x6a95, 0x127b: 0x6ab5,\n\t0x127c: 0x6ad5, 0x127d: 0x6af5, 0x127e: 0x6b15, 0x127f: 0x6b35,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x7a95, 0x1281: 0x7ab5, 0x1282: 0x7ad5, 0x1283: 0x7af5, 0x1284: 0x7b15, 0x1285: 0x7b35,\n\t0x1286: 0x7b55, 0x1287: 0x7b75, 0x1288: 0x7b95, 0x1289: 0x7bb5, 0x128a: 0x7bd5, 0x128b: 0x7bf5,\n\t0x128c: 0x7c15, 0x128d: 0x7c35, 0x128e: 0x7c55, 0x128f: 0x6ec9, 0x1290: 0x6ef1, 0x1291: 0x6f19,\n\t0x1292: 0x7c75, 0x1293: 0x7c95, 0x1294: 0x7cb5, 0x1295: 0x6f41, 0x1296: 0x6f69, 0x1297: 0x6f91,\n\t0x1298: 0x7cd5, 0x1299: 0x7cf5, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040,\n\t0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040,\n\t0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040,\n\t0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040,\n\t0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040,\n\t0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040,\n\t0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x6fb9, 0x12c1: 0x6fd1, 0x12c2: 0x6fe9, 0x12c3: 0x7d15, 0x12c4: 0x7d35, 0x12c5: 0x7001,\n\t0x12c6: 0x7001, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040,\n\t0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040,\n\t0x12d2: 0x0040, 0x12d3: 0x7019, 0x12d4: 0x7041, 0x12d5: 0x7069, 0x12d6: 0x7091, 0x12d7: 0x70b9,\n\t0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x70e1,\n\t0x12de: 0x3308, 0x12df: 0x7109, 0x12e0: 0x7131, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7149,\n\t0x12e4: 0x7161, 0x12e5: 0x7179, 0x12e6: 0x7191, 0x12e7: 0x71a9, 0x12e8: 0x71c1, 0x12e9: 0x1fb2,\n\t0x12ea: 0x71d9, 0x12eb: 0x7201, 0x12ec: 0x7229, 0x12ed: 0x7261, 0x12ee: 0x7299, 0x12ef: 0x72c1,\n\t0x12f0: 0x72e9, 0x12f1: 0x7311, 0x12f2: 0x7339, 0x12f3: 0x7361, 0x12f4: 0x7389, 0x12f5: 0x73b1,\n\t0x12f6: 0x73d9, 0x12f7: 0x0040, 0x12f8: 0x7401, 0x12f9: 0x7429, 0x12fa: 0x7451, 0x12fb: 0x7479,\n\t0x12fc: 0x74a1, 0x12fd: 0x0040, 0x12fe: 0x74c9, 0x12ff: 0x0040,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x74f1, 0x1301: 0x7519, 0x1302: 0x0040, 0x1303: 0x7541, 0x1304: 0x7569, 0x1305: 0x0040,\n\t0x1306: 0x7591, 0x1307: 0x75b9, 0x1308: 0x75e1, 0x1309: 0x7609, 0x130a: 0x7631, 0x130b: 0x7659,\n\t0x130c: 0x7681, 0x130d: 0x76a9, 0x130e: 0x76d1, 0x130f: 0x76f9, 0x1310: 0x7721, 0x1311: 0x7721,\n\t0x1312: 0x7739, 0x1313: 0x7739, 0x1314: 0x7739, 0x1315: 0x7739, 0x1316: 0x7751, 0x1317: 0x7751,\n\t0x1318: 0x7751, 0x1319: 0x7751, 0x131a: 0x7769, 0x131b: 0x7769, 0x131c: 0x7769, 0x131d: 0x7769,\n\t0x131e: 0x7781, 0x131f: 0x7781, 0x1320: 0x7781, 0x1321: 0x7781, 0x1322: 0x7799, 0x1323: 0x7799,\n\t0x1324: 0x7799, 0x1325: 0x7799, 0x1326: 0x77b1, 0x1327: 0x77b1, 0x1328: 0x77b1, 0x1329: 0x77b1,\n\t0x132a: 0x77c9, 0x132b: 0x77c9, 0x132c: 0x77c9, 0x132d: 0x77c9, 0x132e: 0x77e1, 0x132f: 0x77e1,\n\t0x1330: 0x77e1, 0x1331: 0x77e1, 0x1332: 0x77f9, 0x1333: 0x77f9, 0x1334: 0x77f9, 0x1335: 0x77f9,\n\t0x1336: 0x7811, 0x1337: 0x7811, 0x1338: 0x7811, 0x1339: 0x7811, 0x133a: 0x7829, 0x133b: 0x7829,\n\t0x133c: 0x7829, 0x133d: 0x7829, 0x133e: 0x7841, 0x133f: 0x7841,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x7841, 0x1341: 0x7841, 0x1342: 0x7859, 0x1343: 0x7859, 0x1344: 0x7871, 0x1345: 0x7871,\n\t0x1346: 0x7889, 0x1347: 0x7889, 0x1348: 0x78a1, 0x1349: 0x78a1, 0x134a: 0x78b9, 0x134b: 0x78b9,\n\t0x134c: 0x78d1, 0x134d: 0x78d1, 0x134e: 0x78e9, 0x134f: 0x78e9, 0x1350: 0x78e9, 0x1351: 0x78e9,\n\t0x1352: 0x7901, 0x1353: 0x7901, 0x1354: 0x7901, 0x1355: 0x7901, 0x1356: 0x7919, 0x1357: 0x7919,\n\t0x1358: 0x7919, 0x1359: 0x7919, 0x135a: 0x7931, 0x135b: 0x7931, 0x135c: 0x7931, 0x135d: 0x7931,\n\t0x135e: 0x7949, 0x135f: 0x7949, 0x1360: 0x7961, 0x1361: 0x7961, 0x1362: 0x7961, 0x1363: 0x7961,\n\t0x1364: 0x7979, 0x1365: 0x7979, 0x1366: 0x7991, 0x1367: 0x7991, 0x1368: 0x7991, 0x1369: 0x7991,\n\t0x136a: 0x79a9, 0x136b: 0x79a9, 0x136c: 0x79a9, 0x136d: 0x79a9, 0x136e: 0x79c1, 0x136f: 0x79c1,\n\t0x1370: 0x79d9, 0x1371: 0x79d9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818,\n\t0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818,\n\t0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0040, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040,\n\t0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040,\n\t0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040,\n\t0x1392: 0x0040, 0x1393: 0x79f1, 0x1394: 0x79f1, 0x1395: 0x79f1, 0x1396: 0x79f1, 0x1397: 0x7a09,\n\t0x1398: 0x7a09, 0x1399: 0x7a21, 0x139a: 0x7a21, 0x139b: 0x7a39, 0x139c: 0x7a39, 0x139d: 0x0479,\n\t0x139e: 0x7a51, 0x139f: 0x7a51, 0x13a0: 0x7a69, 0x13a1: 0x7a69, 0x13a2: 0x7a81, 0x13a3: 0x7a81,\n\t0x13a4: 0x7a99, 0x13a5: 0x7a99, 0x13a6: 0x7a99, 0x13a7: 0x7a99, 0x13a8: 0x7ab1, 0x13a9: 0x7ab1,\n\t0x13aa: 0x7ac9, 0x13ab: 0x7ac9, 0x13ac: 0x7af1, 0x13ad: 0x7af1, 0x13ae: 0x7b19, 0x13af: 0x7b19,\n\t0x13b0: 0x7b41, 0x13b1: 0x7b41, 0x13b2: 0x7b69, 0x13b3: 0x7b69, 0x13b4: 0x7b91, 0x13b5: 0x7b91,\n\t0x13b6: 0x7bb9, 0x13b7: 0x7bb9, 0x13b8: 0x7bb9, 0x13b9: 0x7be1, 0x13ba: 0x7be1, 0x13bb: 0x7be1,\n\t0x13bc: 0x7c09, 0x13bd: 0x7c09, 0x13be: 0x7c09, 0x13bf: 0x7c09,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x85f9, 0x13c1: 0x8621, 0x13c2: 0x8649, 0x13c3: 0x8671, 0x13c4: 0x8699, 0x13c5: 0x86c1,\n\t0x13c6: 0x86e9, 0x13c7: 0x8711, 0x13c8: 0x8739, 0x13c9: 0x8761, 0x13ca: 0x8789, 0x13cb: 0x87b1,\n\t0x13cc: 0x87d9, 0x13cd: 0x8801, 0x13ce: 0x8829, 0x13cf: 0x8851, 0x13d0: 0x8879, 0x13d1: 0x88a1,\n\t0x13d2: 0x88c9, 0x13d3: 0x88f1, 0x13d4: 0x8919, 0x13d5: 0x8941, 0x13d6: 0x8969, 0x13d7: 0x8991,\n\t0x13d8: 0x89b9, 0x13d9: 0x89e1, 0x13da: 0x8a09, 0x13db: 0x8a31, 0x13dc: 0x8a59, 0x13dd: 0x8a81,\n\t0x13de: 0x8aaa, 0x13df: 0x8ada, 0x13e0: 0x8b0a, 0x13e1: 0x8b3a, 0x13e2: 0x8b6a, 0x13e3: 0x8b9a,\n\t0x13e4: 0x8bc9, 0x13e5: 0x8bf1, 0x13e6: 0x7c71, 0x13e7: 0x8c19, 0x13e8: 0x7be1, 0x13e9: 0x7c99,\n\t0x13ea: 0x8c41, 0x13eb: 0x8c69, 0x13ec: 0x7d39, 0x13ed: 0x8c91, 0x13ee: 0x7d61, 0x13ef: 0x7d89,\n\t0x13f0: 0x8cb9, 0x13f1: 0x8ce1, 0x13f2: 0x7e29, 0x13f3: 0x8d09, 0x13f4: 0x7e51, 0x13f5: 0x7e79,\n\t0x13f6: 0x8d31, 0x13f7: 0x8d59, 0x13f8: 0x7ec9, 0x13f9: 0x8d81, 0x13fa: 0x7ef1, 0x13fb: 0x7f19,\n\t0x13fc: 0x83a1, 0x13fd: 0x83c9, 0x13fe: 0x8441, 0x13ff: 0x8469,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x8491, 0x1401: 0x8531, 0x1402: 0x8559, 0x1403: 0x8581, 0x1404: 0x85a9, 0x1405: 0x8649,\n\t0x1406: 0x8671, 0x1407: 0x8699, 0x1408: 0x8da9, 0x1409: 0x8739, 0x140a: 0x8dd1, 0x140b: 0x8df9,\n\t0x140c: 0x8829, 0x140d: 0x8e21, 0x140e: 0x8851, 0x140f: 0x8879, 0x1410: 0x8a81, 0x1411: 0x8e49,\n\t0x1412: 0x8e71, 0x1413: 0x89b9, 0x1414: 0x8e99, 0x1415: 0x89e1, 0x1416: 0x8a09, 0x1417: 0x7c21,\n\t0x1418: 0x7c49, 0x1419: 0x8ec1, 0x141a: 0x7c71, 0x141b: 0x8ee9, 0x141c: 0x7cc1, 0x141d: 0x7ce9,\n\t0x141e: 0x7d11, 0x141f: 0x7d39, 0x1420: 0x8f11, 0x1421: 0x7db1, 0x1422: 0x7dd9, 0x1423: 0x7e01,\n\t0x1424: 0x7e29, 0x1425: 0x8f39, 0x1426: 0x7ec9, 0x1427: 0x7f41, 0x1428: 0x7f69, 0x1429: 0x7f91,\n\t0x142a: 0x7fb9, 0x142b: 0x7fe1, 0x142c: 0x8031, 0x142d: 0x8059, 0x142e: 0x8081, 0x142f: 0x80a9,\n\t0x1430: 0x80d1, 0x1431: 0x80f9, 0x1432: 0x8f61, 0x1433: 0x8121, 0x1434: 0x8149, 0x1435: 0x8171,\n\t0x1436: 0x8199, 0x1437: 0x81c1, 0x1438: 0x81e9, 0x1439: 0x8239, 0x143a: 0x8261, 0x143b: 0x8289,\n\t0x143c: 0x82b1, 0x143d: 0x82d9, 0x143e: 0x8301, 0x143f: 0x8329,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x8351, 0x1441: 0x8379, 0x1442: 0x83f1, 0x1443: 0x8419, 0x1444: 0x84b9, 0x1445: 0x84e1,\n\t0x1446: 0x8509, 0x1447: 0x8531, 0x1448: 0x8559, 0x1449: 0x85d1, 0x144a: 0x85f9, 0x144b: 0x8621,\n\t0x144c: 0x8649, 0x144d: 0x8f89, 0x144e: 0x86c1, 0x144f: 0x86e9, 0x1450: 0x8711, 0x1451: 0x8739,\n\t0x1452: 0x87b1, 0x1453: 0x87d9, 0x1454: 0x8801, 0x1455: 0x8829, 0x1456: 0x8fb1, 0x1457: 0x88a1,\n\t0x1458: 0x88c9, 0x1459: 0x8fd9, 0x145a: 0x8941, 0x145b: 0x8969, 0x145c: 0x8991, 0x145d: 0x89b9,\n\t0x145e: 0x9001, 0x145f: 0x7c71, 0x1460: 0x8ee9, 0x1461: 0x7d39, 0x1462: 0x8f11, 0x1463: 0x7e29,\n\t0x1464: 0x8f39, 0x1465: 0x7ec9, 0x1466: 0x9029, 0x1467: 0x80d1, 0x1468: 0x9051, 0x1469: 0x9079,\n\t0x146a: 0x90a1, 0x146b: 0x8531, 0x146c: 0x8559, 0x146d: 0x8649, 0x146e: 0x8829, 0x146f: 0x8fb1,\n\t0x1470: 0x89b9, 0x1471: 0x9001, 0x1472: 0x90c9, 0x1473: 0x9101, 0x1474: 0x9139, 0x1475: 0x9171,\n\t0x1476: 0x9199, 0x1477: 0x91c1, 0x1478: 0x91e9, 0x1479: 0x9211, 0x147a: 0x9239, 0x147b: 0x9261,\n\t0x147c: 0x9289, 0x147d: 0x92b1, 0x147e: 0x92d9, 0x147f: 0x9301,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x9329, 0x1481: 0x9351, 0x1482: 0x9379, 0x1483: 0x93a1, 0x1484: 0x93c9, 0x1485: 0x93f1,\n\t0x1486: 0x9419, 0x1487: 0x9441, 0x1488: 0x9469, 0x1489: 0x9491, 0x148a: 0x94b9, 0x148b: 0x94e1,\n\t0x148c: 0x9079, 0x148d: 0x9509, 0x148e: 0x9531, 0x148f: 0x9559, 0x1490: 0x9581, 0x1491: 0x9171,\n\t0x1492: 0x9199, 0x1493: 0x91c1, 0x1494: 0x91e9, 0x1495: 0x9211, 0x1496: 0x9239, 0x1497: 0x9261,\n\t0x1498: 0x9289, 0x1499: 0x92b1, 0x149a: 0x92d9, 0x149b: 0x9301, 0x149c: 0x9329, 0x149d: 0x9351,\n\t0x149e: 0x9379, 0x149f: 0x93a1, 0x14a0: 0x93c9, 0x14a1: 0x93f1, 0x14a2: 0x9419, 0x14a3: 0x9441,\n\t0x14a4: 0x9469, 0x14a5: 0x9491, 0x14a6: 0x94b9, 0x14a7: 0x94e1, 0x14a8: 0x9079, 0x14a9: 0x9509,\n\t0x14aa: 0x9531, 0x14ab: 0x9559, 0x14ac: 0x9581, 0x14ad: 0x9491, 0x14ae: 0x94b9, 0x14af: 0x94e1,\n\t0x14b0: 0x9079, 0x14b1: 0x9051, 0x14b2: 0x90a1, 0x14b3: 0x8211, 0x14b4: 0x8059, 0x14b5: 0x8081,\n\t0x14b6: 0x80a9, 0x14b7: 0x9491, 0x14b8: 0x94b9, 0x14b9: 0x94e1, 0x14ba: 0x8211, 0x14bb: 0x8239,\n\t0x14bc: 0x95a9, 0x14bd: 0x95a9, 0x14be: 0x0018, 0x14bf: 0x0018,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x0040, 0x14c1: 0x0040, 0x14c2: 0x0040, 0x14c3: 0x0040, 0x14c4: 0x0040, 0x14c5: 0x0040,\n\t0x14c6: 0x0040, 0x14c7: 0x0040, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040,\n\t0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x95d1, 0x14d1: 0x9609,\n\t0x14d2: 0x9609, 0x14d3: 0x9641, 0x14d4: 0x9679, 0x14d5: 0x96b1, 0x14d6: 0x96e9, 0x14d7: 0x9721,\n\t0x14d8: 0x9759, 0x14d9: 0x9759, 0x14da: 0x9791, 0x14db: 0x97c9, 0x14dc: 0x9801, 0x14dd: 0x9839,\n\t0x14de: 0x9871, 0x14df: 0x98a9, 0x14e0: 0x98a9, 0x14e1: 0x98e1, 0x14e2: 0x9919, 0x14e3: 0x9919,\n\t0x14e4: 0x9951, 0x14e5: 0x9951, 0x14e6: 0x9989, 0x14e7: 0x99c1, 0x14e8: 0x99c1, 0x14e9: 0x99f9,\n\t0x14ea: 0x9a31, 0x14eb: 0x9a31, 0x14ec: 0x9a69, 0x14ed: 0x9a69, 0x14ee: 0x9aa1, 0x14ef: 0x9ad9,\n\t0x14f0: 0x9ad9, 0x14f1: 0x9b11, 0x14f2: 0x9b11, 0x14f3: 0x9b49, 0x14f4: 0x9b81, 0x14f5: 0x9bb9,\n\t0x14f6: 0x9bf1, 0x14f7: 0x9bf1, 0x14f8: 0x9c29, 0x14f9: 0x9c61, 0x14fa: 0x9c99, 0x14fb: 0x9cd1,\n\t0x14fc: 0x9d09, 0x14fd: 0x9d09, 0x14fe: 0x9d41, 0x14ff: 0x9d79,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0xa949, 0x1501: 0xa981, 0x1502: 0xa9b9, 0x1503: 0xa8a1, 0x1504: 0x9bb9, 0x1505: 0x9989,\n\t0x1506: 0xa9f1, 0x1507: 0xaa29, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040,\n\t0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0040, 0x1510: 0x0040, 0x1511: 0x0040,\n\t0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040,\n\t0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040,\n\t0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040,\n\t0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040,\n\t0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040,\n\t0x1530: 0xaa61, 0x1531: 0xaa99, 0x1532: 0xaad1, 0x1533: 0xab19, 0x1534: 0xab61, 0x1535: 0xaba9,\n\t0x1536: 0xabf1, 0x1537: 0xac39, 0x1538: 0xac81, 0x1539: 0xacc9, 0x153a: 0xad02, 0x153b: 0xae12,\n\t0x153c: 0xae91, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0,\n\t0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0,\n\t0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0xaeda, 0x1551: 0x7d55,\n\t0x1552: 0x0040, 0x1553: 0xaeea, 0x1554: 0x03c2, 0x1555: 0xaefa, 0x1556: 0xaf0a, 0x1557: 0x7d75,\n\t0x1558: 0x7d95, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040,\n\t0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308,\n\t0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308,\n\t0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308,\n\t0x1570: 0x0040, 0x1571: 0x7db5, 0x1572: 0x7dd5, 0x1573: 0xaf1a, 0x1574: 0xaf1a, 0x1575: 0x1fd2,\n\t0x1576: 0x1fe2, 0x1577: 0xaf2a, 0x1578: 0xaf3a, 0x1579: 0x7df5, 0x157a: 0x7e15, 0x157b: 0x7e35,\n\t0x157c: 0x7df5, 0x157d: 0x7e55, 0x157e: 0x7e75, 0x157f: 0x7e55,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x7e95, 0x1581: 0x7eb5, 0x1582: 0x7ed5, 0x1583: 0x7eb5, 0x1584: 0x7ef5, 0x1585: 0x0018,\n\t0x1586: 0x0018, 0x1587: 0xaf4a, 0x1588: 0xaf5a, 0x1589: 0x7f16, 0x158a: 0x7f36, 0x158b: 0x7f56,\n\t0x158c: 0x7f76, 0x158d: 0xaf1a, 0x158e: 0xaf1a, 0x158f: 0xaf1a, 0x1590: 0xaeda, 0x1591: 0x7f95,\n\t0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaeea, 0x1596: 0xaf0a, 0x1597: 0xaefa,\n\t0x1598: 0x7fb5, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf2a, 0x159c: 0xaf3a, 0x159d: 0x7e95,\n\t0x159e: 0x7ef5, 0x159f: 0xaf6a, 0x15a0: 0xaf7a, 0x15a1: 0xaf8a, 0x15a2: 0x1fb2, 0x15a3: 0xaf99,\n\t0x15a4: 0xafaa, 0x15a5: 0xafba, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xafca, 0x15a9: 0xafda,\n\t0x15aa: 0xafea, 0x15ab: 0xaffa, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040,\n\t0x15b0: 0x7fd6, 0x15b1: 0xb009, 0x15b2: 0x7ff6, 0x15b3: 0x0808, 0x15b4: 0x8016, 0x15b5: 0x0040,\n\t0x15b6: 0x8036, 0x15b7: 0xb031, 0x15b8: 0x8056, 0x15b9: 0xb059, 0x15ba: 0x8076, 0x15bb: 0xb081,\n\t0x15bc: 0x8096, 0x15bd: 0xb0a9, 0x15be: 0x80b6, 0x15bf: 0xb0d1,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0xb0f9, 0x15c1: 0xb111, 0x15c2: 0xb111, 0x15c3: 0xb129, 0x15c4: 0xb129, 0x15c5: 0xb141,\n\t0x15c6: 0xb141, 0x15c7: 0xb159, 0x15c8: 0xb159, 0x15c9: 0xb171, 0x15ca: 0xb171, 0x15cb: 0xb171,\n\t0x15cc: 0xb171, 0x15cd: 0xb189, 0x15ce: 0xb189, 0x15cf: 0xb1a1, 0x15d0: 0xb1a1, 0x15d1: 0xb1a1,\n\t0x15d2: 0xb1a1, 0x15d3: 0xb1b9, 0x15d4: 0xb1b9, 0x15d5: 0xb1d1, 0x15d6: 0xb1d1, 0x15d7: 0xb1d1,\n\t0x15d8: 0xb1d1, 0x15d9: 0xb1e9, 0x15da: 0xb1e9, 0x15db: 0xb1e9, 0x15dc: 0xb1e9, 0x15dd: 0xb201,\n\t0x15de: 0xb201, 0x15df: 0xb201, 0x15e0: 0xb201, 0x15e1: 0xb219, 0x15e2: 0xb219, 0x15e3: 0xb219,\n\t0x15e4: 0xb219, 0x15e5: 0xb231, 0x15e6: 0xb231, 0x15e7: 0xb231, 0x15e8: 0xb231, 0x15e9: 0xb249,\n\t0x15ea: 0xb249, 0x15eb: 0xb261, 0x15ec: 0xb261, 0x15ed: 0xb279, 0x15ee: 0xb279, 0x15ef: 0xb291,\n\t0x15f0: 0xb291, 0x15f1: 0xb2a9, 0x15f2: 0xb2a9, 0x15f3: 0xb2a9, 0x15f4: 0xb2a9, 0x15f5: 0xb2c1,\n\t0x15f6: 0xb2c1, 0x15f7: 0xb2c1, 0x15f8: 0xb2c1, 0x15f9: 0xb2d9, 0x15fa: 0xb2d9, 0x15fb: 0xb2d9,\n\t0x15fc: 0xb2d9, 0x15fd: 0xb2f1, 0x15fe: 0xb2f1, 0x15ff: 0xb2f1,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0xb2f1, 0x1601: 0xb309, 0x1602: 0xb309, 0x1603: 0xb309, 0x1604: 0xb309, 0x1605: 0xb321,\n\t0x1606: 0xb321, 0x1607: 0xb321, 0x1608: 0xb321, 0x1609: 0xb339, 0x160a: 0xb339, 0x160b: 0xb339,\n\t0x160c: 0xb339, 0x160d: 0xb351, 0x160e: 0xb351, 0x160f: 0xb351, 0x1610: 0xb351, 0x1611: 0xb369,\n\t0x1612: 0xb369, 0x1613: 0xb369, 0x1614: 0xb369, 0x1615: 0xb381, 0x1616: 0xb381, 0x1617: 0xb381,\n\t0x1618: 0xb381, 0x1619: 0xb399, 0x161a: 0xb399, 0x161b: 0xb399, 0x161c: 0xb399, 0x161d: 0xb3b1,\n\t0x161e: 0xb3b1, 0x161f: 0xb3b1, 0x1620: 0xb3b1, 0x1621: 0xb3c9, 0x1622: 0xb3c9, 0x1623: 0xb3c9,\n\t0x1624: 0xb3c9, 0x1625: 0xb3e1, 0x1626: 0xb3e1, 0x1627: 0xb3e1, 0x1628: 0xb3e1, 0x1629: 0xb3f9,\n\t0x162a: 0xb3f9, 0x162b: 0xb3f9, 0x162c: 0xb3f9, 0x162d: 0xb411, 0x162e: 0xb411, 0x162f: 0x7ab1,\n\t0x1630: 0x7ab1, 0x1631: 0xb429, 0x1632: 0xb429, 0x1633: 0xb429, 0x1634: 0xb429, 0x1635: 0xb441,\n\t0x1636: 0xb441, 0x1637: 0xb469, 0x1638: 0xb469, 0x1639: 0xb491, 0x163a: 0xb491, 0x163b: 0xb4b9,\n\t0x163c: 0xb4b9, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0040, 0x1641: 0xaefa, 0x1642: 0xb4e2, 0x1643: 0xaf6a, 0x1644: 0xafda, 0x1645: 0xafea,\n\t0x1646: 0xaf7a, 0x1647: 0xb4f2, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xaf8a, 0x164b: 0x1fb2,\n\t0x164c: 0xaeda, 0x164d: 0xaf99, 0x164e: 0x29d1, 0x164f: 0xb502, 0x1650: 0x1f41, 0x1651: 0x00c9,\n\t0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81,\n\t0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaeea, 0x165b: 0x03c2, 0x165c: 0xafaa, 0x165d: 0x1fc2,\n\t0x165e: 0xafba, 0x165f: 0xaf0a, 0x1660: 0xaffa, 0x1661: 0x0039, 0x1662: 0x0ee9, 0x1663: 0x1159,\n\t0x1664: 0x0ef9, 0x1665: 0x0f09, 0x1666: 0x1199, 0x1667: 0x0f31, 0x1668: 0x0249, 0x1669: 0x0f41,\n\t0x166a: 0x0259, 0x166b: 0x0f51, 0x166c: 0x0359, 0x166d: 0x0f61, 0x166e: 0x0f71, 0x166f: 0x00d9,\n\t0x1670: 0x0f99, 0x1671: 0x2039, 0x1672: 0x0269, 0x1673: 0x01d9, 0x1674: 0x0fa9, 0x1675: 0x0fb9,\n\t0x1676: 0x1089, 0x1677: 0x0279, 0x1678: 0x0369, 0x1679: 0x0289, 0x167a: 0x13d1, 0x167b: 0xaf4a,\n\t0x167c: 0xafca, 0x167d: 0xaf5a, 0x167e: 0xb512, 0x167f: 0xaf1a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x1caa, 0x1681: 0x0039, 0x1682: 0x0ee9, 0x1683: 0x1159, 0x1684: 0x0ef9, 0x1685: 0x0f09,\n\t0x1686: 0x1199, 0x1687: 0x0f31, 0x1688: 0x0249, 0x1689: 0x0f41, 0x168a: 0x0259, 0x168b: 0x0f51,\n\t0x168c: 0x0359, 0x168d: 0x0f61, 0x168e: 0x0f71, 0x168f: 0x00d9, 0x1690: 0x0f99, 0x1691: 0x2039,\n\t0x1692: 0x0269, 0x1693: 0x01d9, 0x1694: 0x0fa9, 0x1695: 0x0fb9, 0x1696: 0x1089, 0x1697: 0x0279,\n\t0x1698: 0x0369, 0x1699: 0x0289, 0x169a: 0x13d1, 0x169b: 0xaf2a, 0x169c: 0xb522, 0x169d: 0xaf3a,\n\t0x169e: 0xb532, 0x169f: 0x80d5, 0x16a0: 0x80f5, 0x16a1: 0x29d1, 0x16a2: 0x8115, 0x16a3: 0x8115,\n\t0x16a4: 0x8135, 0x16a5: 0x8155, 0x16a6: 0x8175, 0x16a7: 0x8195, 0x16a8: 0x81b5, 0x16a9: 0x81d5,\n\t0x16aa: 0x81f5, 0x16ab: 0x8215, 0x16ac: 0x8235, 0x16ad: 0x8255, 0x16ae: 0x8275, 0x16af: 0x8295,\n\t0x16b0: 0x82b5, 0x16b1: 0x82d5, 0x16b2: 0x82f5, 0x16b3: 0x8315, 0x16b4: 0x8335, 0x16b5: 0x8355,\n\t0x16b6: 0x8375, 0x16b7: 0x8395, 0x16b8: 0x83b5, 0x16b9: 0x83d5, 0x16ba: 0x83f5, 0x16bb: 0x8415,\n\t0x16bc: 0x81b5, 0x16bd: 0x8435, 0x16be: 0x8455, 0x16bf: 0x8215,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x8475, 0x16c1: 0x8495, 0x16c2: 0x84b5, 0x16c3: 0x84d5, 0x16c4: 0x84f5, 0x16c5: 0x8515,\n\t0x16c6: 0x8535, 0x16c7: 0x8555, 0x16c8: 0x84d5, 0x16c9: 0x8575, 0x16ca: 0x84d5, 0x16cb: 0x8595,\n\t0x16cc: 0x8595, 0x16cd: 0x85b5, 0x16ce: 0x85b5, 0x16cf: 0x85d5, 0x16d0: 0x8515, 0x16d1: 0x85f5,\n\t0x16d2: 0x8615, 0x16d3: 0x85f5, 0x16d4: 0x8635, 0x16d5: 0x8615, 0x16d6: 0x8655, 0x16d7: 0x8655,\n\t0x16d8: 0x8675, 0x16d9: 0x8675, 0x16da: 0x8695, 0x16db: 0x8695, 0x16dc: 0x8615, 0x16dd: 0x8115,\n\t0x16de: 0x86b5, 0x16df: 0x86d5, 0x16e0: 0x0040, 0x16e1: 0x86f5, 0x16e2: 0x8715, 0x16e3: 0x8735,\n\t0x16e4: 0x8755, 0x16e5: 0x8735, 0x16e6: 0x8775, 0x16e7: 0x8795, 0x16e8: 0x87b5, 0x16e9: 0x87b5,\n\t0x16ea: 0x87d5, 0x16eb: 0x87d5, 0x16ec: 0x87f5, 0x16ed: 0x87f5, 0x16ee: 0x87d5, 0x16ef: 0x87d5,\n\t0x16f0: 0x8815, 0x16f1: 0x8835, 0x16f2: 0x8855, 0x16f3: 0x8875, 0x16f4: 0x8895, 0x16f5: 0x88b5,\n\t0x16f6: 0x88b5, 0x16f7: 0x88b5, 0x16f8: 0x88d5, 0x16f9: 0x88d5, 0x16fa: 0x88d5, 0x16fb: 0x88d5,\n\t0x16fc: 0x87b5, 0x16fd: 0x87b5, 0x16fe: 0x87b5, 0x16ff: 0x0040,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x8715, 0x1703: 0x86f5, 0x1704: 0x88f5, 0x1705: 0x86f5,\n\t0x1706: 0x8715, 0x1707: 0x86f5, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x8915, 0x170b: 0x8715,\n\t0x170c: 0x8935, 0x170d: 0x88f5, 0x170e: 0x8935, 0x170f: 0x8715, 0x1710: 0x0040, 0x1711: 0x0040,\n\t0x1712: 0x8955, 0x1713: 0x8975, 0x1714: 0x8875, 0x1715: 0x8935, 0x1716: 0x88f5, 0x1717: 0x8935,\n\t0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x8995, 0x171b: 0x89b5, 0x171c: 0x8995, 0x171d: 0x0040,\n\t0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb541, 0x1721: 0xb559, 0x1722: 0xb571, 0x1723: 0x89d6,\n\t0x1724: 0xb589, 0x1725: 0xb5a1, 0x1726: 0x89f5, 0x1727: 0x0040, 0x1728: 0x8a15, 0x1729: 0x8a35,\n\t0x172a: 0x8a55, 0x172b: 0x8a35, 0x172c: 0x8a75, 0x172d: 0x8a95, 0x172e: 0x8ab5, 0x172f: 0x0040,\n\t0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040,\n\t0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340,\n\t0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x0a08, 0x1741: 0x0a08, 0x1742: 0x0a08, 0x1743: 0x0a08, 0x1744: 0x0a08, 0x1745: 0x0c08,\n\t0x1746: 0x0808, 0x1747: 0x0c08, 0x1748: 0x0818, 0x1749: 0x0c08, 0x174a: 0x0c08, 0x174b: 0x0808,\n\t0x174c: 0x0808, 0x174d: 0x0908, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0c08, 0x1751: 0x0c08,\n\t0x1752: 0x0c08, 0x1753: 0x0a08, 0x1754: 0x0a08, 0x1755: 0x0a08, 0x1756: 0x0a08, 0x1757: 0x0908,\n\t0x1758: 0x0a08, 0x1759: 0x0a08, 0x175a: 0x0a08, 0x175b: 0x0a08, 0x175c: 0x0a08, 0x175d: 0x0c08,\n\t0x175e: 0x0a08, 0x175f: 0x0a08, 0x1760: 0x0a08, 0x1761: 0x0c08, 0x1762: 0x0808, 0x1763: 0x0808,\n\t0x1764: 0x0c08, 0x1765: 0x3308, 0x1766: 0x3308, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040,\n\t0x176a: 0x0040, 0x176b: 0x0a18, 0x176c: 0x0a18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0c18,\n\t0x1770: 0x0818, 0x1771: 0x0818, 0x1772: 0x0818, 0x1773: 0x0818, 0x1774: 0x0818, 0x1775: 0x0818,\n\t0x1776: 0x0818, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040,\n\t0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x0a08, 0x1781: 0x0c08, 0x1782: 0x0a08, 0x1783: 0x0c08, 0x1784: 0x0c08, 0x1785: 0x0c08,\n\t0x1786: 0x0a08, 0x1787: 0x0a08, 0x1788: 0x0a08, 0x1789: 0x0c08, 0x178a: 0x0a08, 0x178b: 0x0a08,\n\t0x178c: 0x0c08, 0x178d: 0x0a08, 0x178e: 0x0c08, 0x178f: 0x0c08, 0x1790: 0x0a08, 0x1791: 0x0c08,\n\t0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x0040,\n\t0x1798: 0x0040, 0x1799: 0x0818, 0x179a: 0x0818, 0x179b: 0x0818, 0x179c: 0x0818, 0x179d: 0x0040,\n\t0x179e: 0x0040, 0x179f: 0x0040, 0x17a0: 0x0040, 0x17a1: 0x0040, 0x17a2: 0x0040, 0x17a3: 0x0040,\n\t0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x0040, 0x17a7: 0x0040, 0x17a8: 0x0040, 0x17a9: 0x0c18,\n\t0x17aa: 0x0c18, 0x17ab: 0x0c18, 0x17ac: 0x0c18, 0x17ad: 0x0a18, 0x17ae: 0x0a18, 0x17af: 0x0818,\n\t0x17b0: 0x0040, 0x17b1: 0x0040, 0x17b2: 0x0040, 0x17b3: 0x0040, 0x17b4: 0x0040, 0x17b5: 0x0040,\n\t0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040,\n\t0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x3308, 0x17c1: 0x3308, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x0040, 0x17c5: 0x0008,\n\t0x17c6: 0x0008, 0x17c7: 0x0008, 0x17c8: 0x0008, 0x17c9: 0x0008, 0x17ca: 0x0008, 0x17cb: 0x0008,\n\t0x17cc: 0x0008, 0x17cd: 0x0040, 0x17ce: 0x0040, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0040,\n\t0x17d2: 0x0040, 0x17d3: 0x0008, 0x17d4: 0x0008, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0008,\n\t0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008,\n\t0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008,\n\t0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0040,\n\t0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008,\n\t0x17f0: 0x0008, 0x17f1: 0x0040, 0x17f2: 0x0008, 0x17f3: 0x0008, 0x17f4: 0x0040, 0x17f5: 0x0008,\n\t0x17f6: 0x0008, 0x17f7: 0x0008, 0x17f8: 0x0008, 0x17f9: 0x0008, 0x17fa: 0x0040, 0x17fb: 0x3308,\n\t0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x3308, 0x1801: 0x3008, 0x1802: 0x3008, 0x1803: 0x3008, 0x1804: 0x3008, 0x1805: 0x0040,\n\t0x1806: 0x0040, 0x1807: 0x3008, 0x1808: 0x3008, 0x1809: 0x0040, 0x180a: 0x0040, 0x180b: 0x3008,\n\t0x180c: 0x3008, 0x180d: 0x3808, 0x180e: 0x0040, 0x180f: 0x0040, 0x1810: 0x0008, 0x1811: 0x0040,\n\t0x1812: 0x0040, 0x1813: 0x0040, 0x1814: 0x0040, 0x1815: 0x0040, 0x1816: 0x0040, 0x1817: 0x3008,\n\t0x1818: 0x0040, 0x1819: 0x0040, 0x181a: 0x0040, 0x181b: 0x0040, 0x181c: 0x0040, 0x181d: 0x0008,\n\t0x181e: 0x0008, 0x181f: 0x0008, 0x1820: 0x0008, 0x1821: 0x0008, 0x1822: 0x3008, 0x1823: 0x3008,\n\t0x1824: 0x0040, 0x1825: 0x0040, 0x1826: 0x3308, 0x1827: 0x3308, 0x1828: 0x3308, 0x1829: 0x3308,\n\t0x182a: 0x3308, 0x182b: 0x3308, 0x182c: 0x3308, 0x182d: 0x0040, 0x182e: 0x0040, 0x182f: 0x0040,\n\t0x1830: 0x3308, 0x1831: 0x3308, 0x1832: 0x3308, 0x1833: 0x3308, 0x1834: 0x3308, 0x1835: 0x0040,\n\t0x1836: 0x0040, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040,\n\t0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x0039, 0x1841: 0x0ee9, 0x1842: 0x1159, 0x1843: 0x0ef9, 0x1844: 0x0f09, 0x1845: 0x1199,\n\t0x1846: 0x0f31, 0x1847: 0x0249, 0x1848: 0x0f41, 0x1849: 0x0259, 0x184a: 0x0f51, 0x184b: 0x0359,\n\t0x184c: 0x0f61, 0x184d: 0x0f71, 0x184e: 0x00d9, 0x184f: 0x0f99, 0x1850: 0x2039, 0x1851: 0x0269,\n\t0x1852: 0x01d9, 0x1853: 0x0fa9, 0x1854: 0x0fb9, 0x1855: 0x1089, 0x1856: 0x0279, 0x1857: 0x0369,\n\t0x1858: 0x0289, 0x1859: 0x13d1, 0x185a: 0x0039, 0x185b: 0x0ee9, 0x185c: 0x1159, 0x185d: 0x0ef9,\n\t0x185e: 0x0f09, 0x185f: 0x1199, 0x1860: 0x0f31, 0x1861: 0x0249, 0x1862: 0x0f41, 0x1863: 0x0259,\n\t0x1864: 0x0f51, 0x1865: 0x0359, 0x1866: 0x0f61, 0x1867: 0x0f71, 0x1868: 0x00d9, 0x1869: 0x0f99,\n\t0x186a: 0x2039, 0x186b: 0x0269, 0x186c: 0x01d9, 0x186d: 0x0fa9, 0x186e: 0x0fb9, 0x186f: 0x1089,\n\t0x1870: 0x0279, 0x1871: 0x0369, 0x1872: 0x0289, 0x1873: 0x13d1, 0x1874: 0x0039, 0x1875: 0x0ee9,\n\t0x1876: 0x1159, 0x1877: 0x0ef9, 0x1878: 0x0f09, 0x1879: 0x1199, 0x187a: 0x0f31, 0x187b: 0x0249,\n\t0x187c: 0x0f41, 0x187d: 0x0259, 0x187e: 0x0f51, 0x187f: 0x0359,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x0f61, 0x1881: 0x0f71, 0x1882: 0x00d9, 0x1883: 0x0f99, 0x1884: 0x2039, 0x1885: 0x0269,\n\t0x1886: 0x01d9, 0x1887: 0x0fa9, 0x1888: 0x0fb9, 0x1889: 0x1089, 0x188a: 0x0279, 0x188b: 0x0369,\n\t0x188c: 0x0289, 0x188d: 0x13d1, 0x188e: 0x0039, 0x188f: 0x0ee9, 0x1890: 0x1159, 0x1891: 0x0ef9,\n\t0x1892: 0x0f09, 0x1893: 0x1199, 0x1894: 0x0f31, 0x1895: 0x0040, 0x1896: 0x0f41, 0x1897: 0x0259,\n\t0x1898: 0x0f51, 0x1899: 0x0359, 0x189a: 0x0f61, 0x189b: 0x0f71, 0x189c: 0x00d9, 0x189d: 0x0f99,\n\t0x189e: 0x2039, 0x189f: 0x0269, 0x18a0: 0x01d9, 0x18a1: 0x0fa9, 0x18a2: 0x0fb9, 0x18a3: 0x1089,\n\t0x18a4: 0x0279, 0x18a5: 0x0369, 0x18a6: 0x0289, 0x18a7: 0x13d1, 0x18a8: 0x0039, 0x18a9: 0x0ee9,\n\t0x18aa: 0x1159, 0x18ab: 0x0ef9, 0x18ac: 0x0f09, 0x18ad: 0x1199, 0x18ae: 0x0f31, 0x18af: 0x0249,\n\t0x18b0: 0x0f41, 0x18b1: 0x0259, 0x18b2: 0x0f51, 0x18b3: 0x0359, 0x18b4: 0x0f61, 0x18b5: 0x0f71,\n\t0x18b6: 0x00d9, 0x18b7: 0x0f99, 0x18b8: 0x2039, 0x18b9: 0x0269, 0x18ba: 0x01d9, 0x18bb: 0x0fa9,\n\t0x18bc: 0x0fb9, 0x18bd: 0x1089, 0x18be: 0x0279, 0x18bf: 0x0369,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x0289, 0x18c1: 0x13d1, 0x18c2: 0x0039, 0x18c3: 0x0ee9, 0x18c4: 0x1159, 0x18c5: 0x0ef9,\n\t0x18c6: 0x0f09, 0x18c7: 0x1199, 0x18c8: 0x0f31, 0x18c9: 0x0249, 0x18ca: 0x0f41, 0x18cb: 0x0259,\n\t0x18cc: 0x0f51, 0x18cd: 0x0359, 0x18ce: 0x0f61, 0x18cf: 0x0f71, 0x18d0: 0x00d9, 0x18d1: 0x0f99,\n\t0x18d2: 0x2039, 0x18d3: 0x0269, 0x18d4: 0x01d9, 0x18d5: 0x0fa9, 0x18d6: 0x0fb9, 0x18d7: 0x1089,\n\t0x18d8: 0x0279, 0x18d9: 0x0369, 0x18da: 0x0289, 0x18db: 0x13d1, 0x18dc: 0x0039, 0x18dd: 0x0040,\n\t0x18de: 0x1159, 0x18df: 0x0ef9, 0x18e0: 0x0040, 0x18e1: 0x0040, 0x18e2: 0x0f31, 0x18e3: 0x0040,\n\t0x18e4: 0x0040, 0x18e5: 0x0259, 0x18e6: 0x0f51, 0x18e7: 0x0040, 0x18e8: 0x0040, 0x18e9: 0x0f71,\n\t0x18ea: 0x00d9, 0x18eb: 0x0f99, 0x18ec: 0x2039, 0x18ed: 0x0040, 0x18ee: 0x01d9, 0x18ef: 0x0fa9,\n\t0x18f0: 0x0fb9, 0x18f1: 0x1089, 0x18f2: 0x0279, 0x18f3: 0x0369, 0x18f4: 0x0289, 0x18f5: 0x13d1,\n\t0x18f6: 0x0039, 0x18f7: 0x0ee9, 0x18f8: 0x1159, 0x18f9: 0x0ef9, 0x18fa: 0x0040, 0x18fb: 0x1199,\n\t0x18fc: 0x0040, 0x18fd: 0x0249, 0x18fe: 0x0f41, 0x18ff: 0x0259,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x0f51, 0x1901: 0x0359, 0x1902: 0x0f61, 0x1903: 0x0f71, 0x1904: 0x0040, 0x1905: 0x0f99,\n\t0x1906: 0x2039, 0x1907: 0x0269, 0x1908: 0x01d9, 0x1909: 0x0fa9, 0x190a: 0x0fb9, 0x190b: 0x1089,\n\t0x190c: 0x0279, 0x190d: 0x0369, 0x190e: 0x0289, 0x190f: 0x13d1, 0x1910: 0x0039, 0x1911: 0x0ee9,\n\t0x1912: 0x1159, 0x1913: 0x0ef9, 0x1914: 0x0f09, 0x1915: 0x1199, 0x1916: 0x0f31, 0x1917: 0x0249,\n\t0x1918: 0x0f41, 0x1919: 0x0259, 0x191a: 0x0f51, 0x191b: 0x0359, 0x191c: 0x0f61, 0x191d: 0x0f71,\n\t0x191e: 0x00d9, 0x191f: 0x0f99, 0x1920: 0x2039, 0x1921: 0x0269, 0x1922: 0x01d9, 0x1923: 0x0fa9,\n\t0x1924: 0x0fb9, 0x1925: 0x1089, 0x1926: 0x0279, 0x1927: 0x0369, 0x1928: 0x0289, 0x1929: 0x13d1,\n\t0x192a: 0x0039, 0x192b: 0x0ee9, 0x192c: 0x1159, 0x192d: 0x0ef9, 0x192e: 0x0f09, 0x192f: 0x1199,\n\t0x1930: 0x0f31, 0x1931: 0x0249, 0x1932: 0x0f41, 0x1933: 0x0259, 0x1934: 0x0f51, 0x1935: 0x0359,\n\t0x1936: 0x0f61, 0x1937: 0x0f71, 0x1938: 0x00d9, 0x1939: 0x0f99, 0x193a: 0x2039, 0x193b: 0x0269,\n\t0x193c: 0x01d9, 0x193d: 0x0fa9, 0x193e: 0x0fb9, 0x193f: 0x1089,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x0279, 0x1941: 0x0369, 0x1942: 0x0289, 0x1943: 0x13d1, 0x1944: 0x0039, 0x1945: 0x0ee9,\n\t0x1946: 0x0040, 0x1947: 0x0ef9, 0x1948: 0x0f09, 0x1949: 0x1199, 0x194a: 0x0f31, 0x194b: 0x0040,\n\t0x194c: 0x0040, 0x194d: 0x0259, 0x194e: 0x0f51, 0x194f: 0x0359, 0x1950: 0x0f61, 0x1951: 0x0f71,\n\t0x1952: 0x00d9, 0x1953: 0x0f99, 0x1954: 0x2039, 0x1955: 0x0040, 0x1956: 0x01d9, 0x1957: 0x0fa9,\n\t0x1958: 0x0fb9, 0x1959: 0x1089, 0x195a: 0x0279, 0x195b: 0x0369, 0x195c: 0x0289, 0x195d: 0x0040,\n\t0x195e: 0x0039, 0x195f: 0x0ee9, 0x1960: 0x1159, 0x1961: 0x0ef9, 0x1962: 0x0f09, 0x1963: 0x1199,\n\t0x1964: 0x0f31, 0x1965: 0x0249, 0x1966: 0x0f41, 0x1967: 0x0259, 0x1968: 0x0f51, 0x1969: 0x0359,\n\t0x196a: 0x0f61, 0x196b: 0x0f71, 0x196c: 0x00d9, 0x196d: 0x0f99, 0x196e: 0x2039, 0x196f: 0x0269,\n\t0x1970: 0x01d9, 0x1971: 0x0fa9, 0x1972: 0x0fb9, 0x1973: 0x1089, 0x1974: 0x0279, 0x1975: 0x0369,\n\t0x1976: 0x0289, 0x1977: 0x13d1, 0x1978: 0x0039, 0x1979: 0x0ee9, 0x197a: 0x0040, 0x197b: 0x0ef9,\n\t0x197c: 0x0f09, 0x197d: 0x1199, 0x197e: 0x0f31, 0x197f: 0x0040,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x0f41, 0x1981: 0x0259, 0x1982: 0x0f51, 0x1983: 0x0359, 0x1984: 0x0f61, 0x1985: 0x0040,\n\t0x1986: 0x00d9, 0x1987: 0x0040, 0x1988: 0x0040, 0x1989: 0x0040, 0x198a: 0x01d9, 0x198b: 0x0fa9,\n\t0x198c: 0x0fb9, 0x198d: 0x1089, 0x198e: 0x0279, 0x198f: 0x0369, 0x1990: 0x0289, 0x1991: 0x0040,\n\t0x1992: 0x0039, 0x1993: 0x0ee9, 0x1994: 0x1159, 0x1995: 0x0ef9, 0x1996: 0x0f09, 0x1997: 0x1199,\n\t0x1998: 0x0f31, 0x1999: 0x0249, 0x199a: 0x0f41, 0x199b: 0x0259, 0x199c: 0x0f51, 0x199d: 0x0359,\n\t0x199e: 0x0f61, 0x199f: 0x0f71, 0x19a0: 0x00d9, 0x19a1: 0x0f99, 0x19a2: 0x2039, 0x19a3: 0x0269,\n\t0x19a4: 0x01d9, 0x19a5: 0x0fa9, 0x19a6: 0x0fb9, 0x19a7: 0x1089, 0x19a8: 0x0279, 0x19a9: 0x0369,\n\t0x19aa: 0x0289, 0x19ab: 0x13d1, 0x19ac: 0x0039, 0x19ad: 0x0ee9, 0x19ae: 0x1159, 0x19af: 0x0ef9,\n\t0x19b0: 0x0f09, 0x19b1: 0x1199, 0x19b2: 0x0f31, 0x19b3: 0x0249, 0x19b4: 0x0f41, 0x19b5: 0x0259,\n\t0x19b6: 0x0f51, 0x19b7: 0x0359, 0x19b8: 0x0f61, 0x19b9: 0x0f71, 0x19ba: 0x00d9, 0x19bb: 0x0f99,\n\t0x19bc: 0x2039, 0x19bd: 0x0269, 0x19be: 0x01d9, 0x19bf: 0x0fa9,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x0fb9, 0x19c1: 0x1089, 0x19c2: 0x0279, 0x19c3: 0x0369, 0x19c4: 0x0289, 0x19c5: 0x13d1,\n\t0x19c6: 0x0039, 0x19c7: 0x0ee9, 0x19c8: 0x1159, 0x19c9: 0x0ef9, 0x19ca: 0x0f09, 0x19cb: 0x1199,\n\t0x19cc: 0x0f31, 0x19cd: 0x0249, 0x19ce: 0x0f41, 0x19cf: 0x0259, 0x19d0: 0x0f51, 0x19d1: 0x0359,\n\t0x19d2: 0x0f61, 0x19d3: 0x0f71, 0x19d4: 0x00d9, 0x19d5: 0x0f99, 0x19d6: 0x2039, 0x19d7: 0x0269,\n\t0x19d8: 0x01d9, 0x19d9: 0x0fa9, 0x19da: 0x0fb9, 0x19db: 0x1089, 0x19dc: 0x0279, 0x19dd: 0x0369,\n\t0x19de: 0x0289, 0x19df: 0x13d1, 0x19e0: 0x0039, 0x19e1: 0x0ee9, 0x19e2: 0x1159, 0x19e3: 0x0ef9,\n\t0x19e4: 0x0f09, 0x19e5: 0x1199, 0x19e6: 0x0f31, 0x19e7: 0x0249, 0x19e8: 0x0f41, 0x19e9: 0x0259,\n\t0x19ea: 0x0f51, 0x19eb: 0x0359, 0x19ec: 0x0f61, 0x19ed: 0x0f71, 0x19ee: 0x00d9, 0x19ef: 0x0f99,\n\t0x19f0: 0x2039, 0x19f1: 0x0269, 0x19f2: 0x01d9, 0x19f3: 0x0fa9, 0x19f4: 0x0fb9, 0x19f5: 0x1089,\n\t0x19f6: 0x0279, 0x19f7: 0x0369, 0x19f8: 0x0289, 0x19f9: 0x13d1, 0x19fa: 0x0039, 0x19fb: 0x0ee9,\n\t0x19fc: 0x1159, 0x19fd: 0x0ef9, 0x19fe: 0x0f09, 0x19ff: 0x1199,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x0f31, 0x1a01: 0x0249, 0x1a02: 0x0f41, 0x1a03: 0x0259, 0x1a04: 0x0f51, 0x1a05: 0x0359,\n\t0x1a06: 0x0f61, 0x1a07: 0x0f71, 0x1a08: 0x00d9, 0x1a09: 0x0f99, 0x1a0a: 0x2039, 0x1a0b: 0x0269,\n\t0x1a0c: 0x01d9, 0x1a0d: 0x0fa9, 0x1a0e: 0x0fb9, 0x1a0f: 0x1089, 0x1a10: 0x0279, 0x1a11: 0x0369,\n\t0x1a12: 0x0289, 0x1a13: 0x13d1, 0x1a14: 0x0039, 0x1a15: 0x0ee9, 0x1a16: 0x1159, 0x1a17: 0x0ef9,\n\t0x1a18: 0x0f09, 0x1a19: 0x1199, 0x1a1a: 0x0f31, 0x1a1b: 0x0249, 0x1a1c: 0x0f41, 0x1a1d: 0x0259,\n\t0x1a1e: 0x0f51, 0x1a1f: 0x0359, 0x1a20: 0x0f61, 0x1a21: 0x0f71, 0x1a22: 0x00d9, 0x1a23: 0x0f99,\n\t0x1a24: 0x2039, 0x1a25: 0x0269, 0x1a26: 0x01d9, 0x1a27: 0x0fa9, 0x1a28: 0x0fb9, 0x1a29: 0x1089,\n\t0x1a2a: 0x0279, 0x1a2b: 0x0369, 0x1a2c: 0x0289, 0x1a2d: 0x13d1, 0x1a2e: 0x0039, 0x1a2f: 0x0ee9,\n\t0x1a30: 0x1159, 0x1a31: 0x0ef9, 0x1a32: 0x0f09, 0x1a33: 0x1199, 0x1a34: 0x0f31, 0x1a35: 0x0249,\n\t0x1a36: 0x0f41, 0x1a37: 0x0259, 0x1a38: 0x0f51, 0x1a39: 0x0359, 0x1a3a: 0x0f61, 0x1a3b: 0x0f71,\n\t0x1a3c: 0x00d9, 0x1a3d: 0x0f99, 0x1a3e: 0x2039, 0x1a3f: 0x0269,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x01d9, 0x1a41: 0x0fa9, 0x1a42: 0x0fb9, 0x1a43: 0x1089, 0x1a44: 0x0279, 0x1a45: 0x0369,\n\t0x1a46: 0x0289, 0x1a47: 0x13d1, 0x1a48: 0x0039, 0x1a49: 0x0ee9, 0x1a4a: 0x1159, 0x1a4b: 0x0ef9,\n\t0x1a4c: 0x0f09, 0x1a4d: 0x1199, 0x1a4e: 0x0f31, 0x1a4f: 0x0249, 0x1a50: 0x0f41, 0x1a51: 0x0259,\n\t0x1a52: 0x0f51, 0x1a53: 0x0359, 0x1a54: 0x0f61, 0x1a55: 0x0f71, 0x1a56: 0x00d9, 0x1a57: 0x0f99,\n\t0x1a58: 0x2039, 0x1a59: 0x0269, 0x1a5a: 0x01d9, 0x1a5b: 0x0fa9, 0x1a5c: 0x0fb9, 0x1a5d: 0x1089,\n\t0x1a5e: 0x0279, 0x1a5f: 0x0369, 0x1a60: 0x0289, 0x1a61: 0x13d1, 0x1a62: 0x0039, 0x1a63: 0x0ee9,\n\t0x1a64: 0x1159, 0x1a65: 0x0ef9, 0x1a66: 0x0f09, 0x1a67: 0x1199, 0x1a68: 0x0f31, 0x1a69: 0x0249,\n\t0x1a6a: 0x0f41, 0x1a6b: 0x0259, 0x1a6c: 0x0f51, 0x1a6d: 0x0359, 0x1a6e: 0x0f61, 0x1a6f: 0x0f71,\n\t0x1a70: 0x00d9, 0x1a71: 0x0f99, 0x1a72: 0x2039, 0x1a73: 0x0269, 0x1a74: 0x01d9, 0x1a75: 0x0fa9,\n\t0x1a76: 0x0fb9, 0x1a77: 0x1089, 0x1a78: 0x0279, 0x1a79: 0x0369, 0x1a7a: 0x0289, 0x1a7b: 0x13d1,\n\t0x1a7c: 0x0039, 0x1a7d: 0x0ee9, 0x1a7e: 0x1159, 0x1a7f: 0x0ef9,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x0f09, 0x1a81: 0x1199, 0x1a82: 0x0f31, 0x1a83: 0x0249, 0x1a84: 0x0f41, 0x1a85: 0x0259,\n\t0x1a86: 0x0f51, 0x1a87: 0x0359, 0x1a88: 0x0f61, 0x1a89: 0x0f71, 0x1a8a: 0x00d9, 0x1a8b: 0x0f99,\n\t0x1a8c: 0x2039, 0x1a8d: 0x0269, 0x1a8e: 0x01d9, 0x1a8f: 0x0fa9, 0x1a90: 0x0fb9, 0x1a91: 0x1089,\n\t0x1a92: 0x0279, 0x1a93: 0x0369, 0x1a94: 0x0289, 0x1a95: 0x13d1, 0x1a96: 0x0039, 0x1a97: 0x0ee9,\n\t0x1a98: 0x1159, 0x1a99: 0x0ef9, 0x1a9a: 0x0f09, 0x1a9b: 0x1199, 0x1a9c: 0x0f31, 0x1a9d: 0x0249,\n\t0x1a9e: 0x0f41, 0x1a9f: 0x0259, 0x1aa0: 0x0f51, 0x1aa1: 0x0359, 0x1aa2: 0x0f61, 0x1aa3: 0x0f71,\n\t0x1aa4: 0x00d9, 0x1aa5: 0x0f99, 0x1aa6: 0x2039, 0x1aa7: 0x0269, 0x1aa8: 0x01d9, 0x1aa9: 0x0fa9,\n\t0x1aaa: 0x0fb9, 0x1aab: 0x1089, 0x1aac: 0x0279, 0x1aad: 0x0369, 0x1aae: 0x0289, 0x1aaf: 0x13d1,\n\t0x1ab0: 0x0039, 0x1ab1: 0x0ee9, 0x1ab2: 0x1159, 0x1ab3: 0x0ef9, 0x1ab4: 0x0f09, 0x1ab5: 0x1199,\n\t0x1ab6: 0x0f31, 0x1ab7: 0x0249, 0x1ab8: 0x0f41, 0x1ab9: 0x0259, 0x1aba: 0x0f51, 0x1abb: 0x0359,\n\t0x1abc: 0x0f61, 0x1abd: 0x0f71, 0x1abe: 0x00d9, 0x1abf: 0x0f99,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x2039, 0x1ac1: 0x0269, 0x1ac2: 0x01d9, 0x1ac3: 0x0fa9, 0x1ac4: 0x0fb9, 0x1ac5: 0x1089,\n\t0x1ac6: 0x0279, 0x1ac7: 0x0369, 0x1ac8: 0x0289, 0x1ac9: 0x13d1, 0x1aca: 0x0039, 0x1acb: 0x0ee9,\n\t0x1acc: 0x1159, 0x1acd: 0x0ef9, 0x1ace: 0x0f09, 0x1acf: 0x1199, 0x1ad0: 0x0f31, 0x1ad1: 0x0249,\n\t0x1ad2: 0x0f41, 0x1ad3: 0x0259, 0x1ad4: 0x0f51, 0x1ad5: 0x0359, 0x1ad6: 0x0f61, 0x1ad7: 0x0f71,\n\t0x1ad8: 0x00d9, 0x1ad9: 0x0f99, 0x1ada: 0x2039, 0x1adb: 0x0269, 0x1adc: 0x01d9, 0x1add: 0x0fa9,\n\t0x1ade: 0x0fb9, 0x1adf: 0x1089, 0x1ae0: 0x0279, 0x1ae1: 0x0369, 0x1ae2: 0x0289, 0x1ae3: 0x13d1,\n\t0x1ae4: 0xba81, 0x1ae5: 0xba99, 0x1ae6: 0x0040, 0x1ae7: 0x0040, 0x1ae8: 0xbab1, 0x1ae9: 0x1099,\n\t0x1aea: 0x10b1, 0x1aeb: 0x10c9, 0x1aec: 0xbac9, 0x1aed: 0xbae1, 0x1aee: 0xbaf9, 0x1aef: 0x1429,\n\t0x1af0: 0x1a31, 0x1af1: 0xbb11, 0x1af2: 0xbb29, 0x1af3: 0xbb41, 0x1af4: 0xbb59, 0x1af5: 0xbb71,\n\t0x1af6: 0xbb89, 0x1af7: 0x2109, 0x1af8: 0x1111, 0x1af9: 0x1429, 0x1afa: 0xbba1, 0x1afb: 0xbbb9,\n\t0x1afc: 0xbbd1, 0x1afd: 0x10e1, 0x1afe: 0x10f9, 0x1aff: 0xbbe9,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x2079, 0x1b01: 0xbc01, 0x1b02: 0xbab1, 0x1b03: 0x1099, 0x1b04: 0x10b1, 0x1b05: 0x10c9,\n\t0x1b06: 0xbac9, 0x1b07: 0xbae1, 0x1b08: 0xbaf9, 0x1b09: 0x1429, 0x1b0a: 0x1a31, 0x1b0b: 0xbb11,\n\t0x1b0c: 0xbb29, 0x1b0d: 0xbb41, 0x1b0e: 0xbb59, 0x1b0f: 0xbb71, 0x1b10: 0xbb89, 0x1b11: 0x2109,\n\t0x1b12: 0x1111, 0x1b13: 0xbba1, 0x1b14: 0xbba1, 0x1b15: 0xbbb9, 0x1b16: 0xbbd1, 0x1b17: 0x10e1,\n\t0x1b18: 0x10f9, 0x1b19: 0xbbe9, 0x1b1a: 0x2079, 0x1b1b: 0xbc21, 0x1b1c: 0xbac9, 0x1b1d: 0x1429,\n\t0x1b1e: 0xbb11, 0x1b1f: 0x10e1, 0x1b20: 0x1111, 0x1b21: 0x2109, 0x1b22: 0xbab1, 0x1b23: 0x1099,\n\t0x1b24: 0x10b1, 0x1b25: 0x10c9, 0x1b26: 0xbac9, 0x1b27: 0xbae1, 0x1b28: 0xbaf9, 0x1b29: 0x1429,\n\t0x1b2a: 0x1a31, 0x1b2b: 0xbb11, 0x1b2c: 0xbb29, 0x1b2d: 0xbb41, 0x1b2e: 0xbb59, 0x1b2f: 0xbb71,\n\t0x1b30: 0xbb89, 0x1b31: 0x2109, 0x1b32: 0x1111, 0x1b33: 0x1429, 0x1b34: 0xbba1, 0x1b35: 0xbbb9,\n\t0x1b36: 0xbbd1, 0x1b37: 0x10e1, 0x1b38: 0x10f9, 0x1b39: 0xbbe9, 0x1b3a: 0x2079, 0x1b3b: 0xbc01,\n\t0x1b3c: 0xbab1, 0x1b3d: 0x1099, 0x1b3e: 0x10b1, 0x1b3f: 0x10c9,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0xbac9, 0x1b41: 0xbae1, 0x1b42: 0xbaf9, 0x1b43: 0x1429, 0x1b44: 0x1a31, 0x1b45: 0xbb11,\n\t0x1b46: 0xbb29, 0x1b47: 0xbb41, 0x1b48: 0xbb59, 0x1b49: 0xbb71, 0x1b4a: 0xbb89, 0x1b4b: 0x2109,\n\t0x1b4c: 0x1111, 0x1b4d: 0xbba1, 0x1b4e: 0xbba1, 0x1b4f: 0xbbb9, 0x1b50: 0xbbd1, 0x1b51: 0x10e1,\n\t0x1b52: 0x10f9, 0x1b53: 0xbbe9, 0x1b54: 0x2079, 0x1b55: 0xbc21, 0x1b56: 0xbac9, 0x1b57: 0x1429,\n\t0x1b58: 0xbb11, 0x1b59: 0x10e1, 0x1b5a: 0x1111, 0x1b5b: 0x2109, 0x1b5c: 0xbab1, 0x1b5d: 0x1099,\n\t0x1b5e: 0x10b1, 0x1b5f: 0x10c9, 0x1b60: 0xbac9, 0x1b61: 0xbae1, 0x1b62: 0xbaf9, 0x1b63: 0x1429,\n\t0x1b64: 0x1a31, 0x1b65: 0xbb11, 0x1b66: 0xbb29, 0x1b67: 0xbb41, 0x1b68: 0xbb59, 0x1b69: 0xbb71,\n\t0x1b6a: 0xbb89, 0x1b6b: 0x2109, 0x1b6c: 0x1111, 0x1b6d: 0x1429, 0x1b6e: 0xbba1, 0x1b6f: 0xbbb9,\n\t0x1b70: 0xbbd1, 0x1b71: 0x10e1, 0x1b72: 0x10f9, 0x1b73: 0xbbe9, 0x1b74: 0x2079, 0x1b75: 0xbc01,\n\t0x1b76: 0xbab1, 0x1b77: 0x1099, 0x1b78: 0x10b1, 0x1b79: 0x10c9, 0x1b7a: 0xbac9, 0x1b7b: 0xbae1,\n\t0x1b7c: 0xbaf9, 0x1b7d: 0x1429, 0x1b7e: 0x1a31, 0x1b7f: 0xbb11,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0xbb29, 0x1b81: 0xbb41, 0x1b82: 0xbb59, 0x1b83: 0xbb71, 0x1b84: 0xbb89, 0x1b85: 0x2109,\n\t0x1b86: 0x1111, 0x1b87: 0xbba1, 0x1b88: 0xbba1, 0x1b89: 0xbbb9, 0x1b8a: 0xbbd1, 0x1b8b: 0x10e1,\n\t0x1b8c: 0x10f9, 0x1b8d: 0xbbe9, 0x1b8e: 0x2079, 0x1b8f: 0xbc21, 0x1b90: 0xbac9, 0x1b91: 0x1429,\n\t0x1b92: 0xbb11, 0x1b93: 0x10e1, 0x1b94: 0x1111, 0x1b95: 0x2109, 0x1b96: 0xbab1, 0x1b97: 0x1099,\n\t0x1b98: 0x10b1, 0x1b99: 0x10c9, 0x1b9a: 0xbac9, 0x1b9b: 0xbae1, 0x1b9c: 0xbaf9, 0x1b9d: 0x1429,\n\t0x1b9e: 0x1a31, 0x1b9f: 0xbb11, 0x1ba0: 0xbb29, 0x1ba1: 0xbb41, 0x1ba2: 0xbb59, 0x1ba3: 0xbb71,\n\t0x1ba4: 0xbb89, 0x1ba5: 0x2109, 0x1ba6: 0x1111, 0x1ba7: 0x1429, 0x1ba8: 0xbba1, 0x1ba9: 0xbbb9,\n\t0x1baa: 0xbbd1, 0x1bab: 0x10e1, 0x1bac: 0x10f9, 0x1bad: 0xbbe9, 0x1bae: 0x2079, 0x1baf: 0xbc01,\n\t0x1bb0: 0xbab1, 0x1bb1: 0x1099, 0x1bb2: 0x10b1, 0x1bb3: 0x10c9, 0x1bb4: 0xbac9, 0x1bb5: 0xbae1,\n\t0x1bb6: 0xbaf9, 0x1bb7: 0x1429, 0x1bb8: 0x1a31, 0x1bb9: 0xbb11, 0x1bba: 0xbb29, 0x1bbb: 0xbb41,\n\t0x1bbc: 0xbb59, 0x1bbd: 0xbb71, 0x1bbe: 0xbb89, 0x1bbf: 0x2109,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x1111, 0x1bc1: 0xbba1, 0x1bc2: 0xbba1, 0x1bc3: 0xbbb9, 0x1bc4: 0xbbd1, 0x1bc5: 0x10e1,\n\t0x1bc6: 0x10f9, 0x1bc7: 0xbbe9, 0x1bc8: 0x2079, 0x1bc9: 0xbc21, 0x1bca: 0xbac9, 0x1bcb: 0x1429,\n\t0x1bcc: 0xbb11, 0x1bcd: 0x10e1, 0x1bce: 0x1111, 0x1bcf: 0x2109, 0x1bd0: 0xbab1, 0x1bd1: 0x1099,\n\t0x1bd2: 0x10b1, 0x1bd3: 0x10c9, 0x1bd4: 0xbac9, 0x1bd5: 0xbae1, 0x1bd6: 0xbaf9, 0x1bd7: 0x1429,\n\t0x1bd8: 0x1a31, 0x1bd9: 0xbb11, 0x1bda: 0xbb29, 0x1bdb: 0xbb41, 0x1bdc: 0xbb59, 0x1bdd: 0xbb71,\n\t0x1bde: 0xbb89, 0x1bdf: 0x2109, 0x1be0: 0x1111, 0x1be1: 0x1429, 0x1be2: 0xbba1, 0x1be3: 0xbbb9,\n\t0x1be4: 0xbbd1, 0x1be5: 0x10e1, 0x1be6: 0x10f9, 0x1be7: 0xbbe9, 0x1be8: 0x2079, 0x1be9: 0xbc01,\n\t0x1bea: 0xbab1, 0x1beb: 0x1099, 0x1bec: 0x10b1, 0x1bed: 0x10c9, 0x1bee: 0xbac9, 0x1bef: 0xbae1,\n\t0x1bf0: 0xbaf9, 0x1bf1: 0x1429, 0x1bf2: 0x1a31, 0x1bf3: 0xbb11, 0x1bf4: 0xbb29, 0x1bf5: 0xbb41,\n\t0x1bf6: 0xbb59, 0x1bf7: 0xbb71, 0x1bf8: 0xbb89, 0x1bf9: 0x2109, 0x1bfa: 0x1111, 0x1bfb: 0xbba1,\n\t0x1bfc: 0xbba1, 0x1bfd: 0xbbb9, 0x1bfe: 0xbbd1, 0x1bff: 0x10e1,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x10f9, 0x1c01: 0xbbe9, 0x1c02: 0x2079, 0x1c03: 0xbc21, 0x1c04: 0xbac9, 0x1c05: 0x1429,\n\t0x1c06: 0xbb11, 0x1c07: 0x10e1, 0x1c08: 0x1111, 0x1c09: 0x2109, 0x1c0a: 0xbc41, 0x1c0b: 0xbc41,\n\t0x1c0c: 0x0040, 0x1c0d: 0x0040, 0x1c0e: 0x1f41, 0x1c0f: 0x00c9, 0x1c10: 0x0069, 0x1c11: 0x0079,\n\t0x1c12: 0x1f51, 0x1c13: 0x1f61, 0x1c14: 0x1f71, 0x1c15: 0x1f81, 0x1c16: 0x1f91, 0x1c17: 0x1fa1,\n\t0x1c18: 0x1f41, 0x1c19: 0x00c9, 0x1c1a: 0x0069, 0x1c1b: 0x0079, 0x1c1c: 0x1f51, 0x1c1d: 0x1f61,\n\t0x1c1e: 0x1f71, 0x1c1f: 0x1f81, 0x1c20: 0x1f91, 0x1c21: 0x1fa1, 0x1c22: 0x1f41, 0x1c23: 0x00c9,\n\t0x1c24: 0x0069, 0x1c25: 0x0079, 0x1c26: 0x1f51, 0x1c27: 0x1f61, 0x1c28: 0x1f71, 0x1c29: 0x1f81,\n\t0x1c2a: 0x1f91, 0x1c2b: 0x1fa1, 0x1c2c: 0x1f41, 0x1c2d: 0x00c9, 0x1c2e: 0x0069, 0x1c2f: 0x0079,\n\t0x1c30: 0x1f51, 0x1c31: 0x1f61, 0x1c32: 0x1f71, 0x1c33: 0x1f81, 0x1c34: 0x1f91, 0x1c35: 0x1fa1,\n\t0x1c36: 0x1f41, 0x1c37: 0x00c9, 0x1c38: 0x0069, 0x1c39: 0x0079, 0x1c3a: 0x1f51, 0x1c3b: 0x1f61,\n\t0x1c3c: 0x1f71, 0x1c3d: 0x1f81, 0x1c3e: 0x1f91, 0x1c3f: 0x1fa1,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0xe115, 0x1c41: 0xe115, 0x1c42: 0xe135, 0x1c43: 0xe135, 0x1c44: 0xe115, 0x1c45: 0xe115,\n\t0x1c46: 0xe175, 0x1c47: 0xe175, 0x1c48: 0xe115, 0x1c49: 0xe115, 0x1c4a: 0xe135, 0x1c4b: 0xe135,\n\t0x1c4c: 0xe115, 0x1c4d: 0xe115, 0x1c4e: 0xe1f5, 0x1c4f: 0xe1f5, 0x1c50: 0xe115, 0x1c51: 0xe115,\n\t0x1c52: 0xe135, 0x1c53: 0xe135, 0x1c54: 0xe115, 0x1c55: 0xe115, 0x1c56: 0xe175, 0x1c57: 0xe175,\n\t0x1c58: 0xe115, 0x1c59: 0xe115, 0x1c5a: 0xe135, 0x1c5b: 0xe135, 0x1c5c: 0xe115, 0x1c5d: 0xe115,\n\t0x1c5e: 0x8b05, 0x1c5f: 0x8b05, 0x1c60: 0x04b5, 0x1c61: 0x04b5, 0x1c62: 0x0a08, 0x1c63: 0x0a08,\n\t0x1c64: 0x0a08, 0x1c65: 0x0a08, 0x1c66: 0x0a08, 0x1c67: 0x0a08, 0x1c68: 0x0a08, 0x1c69: 0x0a08,\n\t0x1c6a: 0x0a08, 0x1c6b: 0x0a08, 0x1c6c: 0x0a08, 0x1c6d: 0x0a08, 0x1c6e: 0x0a08, 0x1c6f: 0x0a08,\n\t0x1c70: 0x0a08, 0x1c71: 0x0a08, 0x1c72: 0x0a08, 0x1c73: 0x0a08, 0x1c74: 0x0a08, 0x1c75: 0x0a08,\n\t0x1c76: 0x0a08, 0x1c77: 0x0a08, 0x1c78: 0x0a08, 0x1c79: 0x0a08, 0x1c7a: 0x0a08, 0x1c7b: 0x0a08,\n\t0x1c7c: 0x0a08, 0x1c7d: 0x0a08, 0x1c7e: 0x0a08, 0x1c7f: 0x0a08,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0x0040, 0x1c85: 0xb411,\n\t0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0xb399, 0x1c8b: 0xb3b1,\n\t0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9,\n\t0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231,\n\t0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0xbc59, 0x1c9d: 0x7949,\n\t0x1c9e: 0xbc71, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040,\n\t0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0x0040, 0x1ca9: 0xb429,\n\t0x1caa: 0xb399, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339,\n\t0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1,\n\t0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0x0040, 0x1cbb: 0xb351,\n\t0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x0040, 0x1cc1: 0x0040, 0x1cc2: 0xb201, 0x1cc3: 0x0040, 0x1cc4: 0x0040, 0x1cc5: 0x0040,\n\t0x1cc6: 0x0040, 0x1cc7: 0xb219, 0x1cc8: 0x0040, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1,\n\t0x1ccc: 0x0040, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0x0040, 0x1cd1: 0xb2d9,\n\t0x1cd2: 0xb381, 0x1cd3: 0x0040, 0x1cd4: 0xb2c1, 0x1cd5: 0x0040, 0x1cd6: 0x0040, 0x1cd7: 0xb231,\n\t0x1cd8: 0x0040, 0x1cd9: 0xb2f1, 0x1cda: 0x0040, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x7949,\n\t0x1cde: 0x0040, 0x1cdf: 0xbc89, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0x0040,\n\t0x1ce4: 0xb3f9, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429,\n\t0x1cea: 0xb399, 0x1ceb: 0x0040, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339,\n\t0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0x0040, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1,\n\t0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0x0040, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351,\n\t0x1cfc: 0xbc59, 0x1cfd: 0x0040, 0x1cfe: 0xbc71, 0x1cff: 0x0040,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0xb189, 0x1d01: 0xb1a1, 0x1d02: 0xb201, 0x1d03: 0xb249, 0x1d04: 0xb3f9, 0x1d05: 0xb411,\n\t0x1d06: 0xb291, 0x1d07: 0xb219, 0x1d08: 0xb309, 0x1d09: 0xb429, 0x1d0a: 0x0040, 0x1d0b: 0xb3b1,\n\t0x1d0c: 0xb3c9, 0x1d0d: 0xb3e1, 0x1d0e: 0xb2a9, 0x1d0f: 0xb339, 0x1d10: 0xb369, 0x1d11: 0xb2d9,\n\t0x1d12: 0xb381, 0x1d13: 0xb279, 0x1d14: 0xb2c1, 0x1d15: 0xb1d1, 0x1d16: 0xb1e9, 0x1d17: 0xb231,\n\t0x1d18: 0xb261, 0x1d19: 0xb2f1, 0x1d1a: 0xb321, 0x1d1b: 0xb351, 0x1d1c: 0x0040, 0x1d1d: 0x0040,\n\t0x1d1e: 0x0040, 0x1d1f: 0x0040, 0x1d20: 0x0040, 0x1d21: 0xb1a1, 0x1d22: 0xb201, 0x1d23: 0xb249,\n\t0x1d24: 0x0040, 0x1d25: 0xb411, 0x1d26: 0xb291, 0x1d27: 0xb219, 0x1d28: 0xb309, 0x1d29: 0xb429,\n\t0x1d2a: 0x0040, 0x1d2b: 0xb3b1, 0x1d2c: 0xb3c9, 0x1d2d: 0xb3e1, 0x1d2e: 0xb2a9, 0x1d2f: 0xb339,\n\t0x1d30: 0xb369, 0x1d31: 0xb2d9, 0x1d32: 0xb381, 0x1d33: 0xb279, 0x1d34: 0xb2c1, 0x1d35: 0xb1d1,\n\t0x1d36: 0xb1e9, 0x1d37: 0xb231, 0x1d38: 0xb261, 0x1d39: 0xb2f1, 0x1d3a: 0xb321, 0x1d3b: 0xb351,\n\t0x1d3c: 0x0040, 0x1d3d: 0x0040, 0x1d3e: 0x0040, 0x1d3f: 0x0040,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x0040, 0x1d41: 0xbca2, 0x1d42: 0xbcba, 0x1d43: 0xbcd2, 0x1d44: 0xbcea, 0x1d45: 0xbd02,\n\t0x1d46: 0xbd1a, 0x1d47: 0xbd32, 0x1d48: 0xbd4a, 0x1d49: 0xbd62, 0x1d4a: 0xbd7a, 0x1d4b: 0x0018,\n\t0x1d4c: 0x0018, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xbd92, 0x1d51: 0xbdb2,\n\t0x1d52: 0xbdd2, 0x1d53: 0xbdf2, 0x1d54: 0xbe12, 0x1d55: 0xbe32, 0x1d56: 0xbe52, 0x1d57: 0xbe72,\n\t0x1d58: 0xbe92, 0x1d59: 0xbeb2, 0x1d5a: 0xbed2, 0x1d5b: 0xbef2, 0x1d5c: 0xbf12, 0x1d5d: 0xbf32,\n\t0x1d5e: 0xbf52, 0x1d5f: 0xbf72, 0x1d60: 0xbf92, 0x1d61: 0xbfb2, 0x1d62: 0xbfd2, 0x1d63: 0xbff2,\n\t0x1d64: 0xc012, 0x1d65: 0xc032, 0x1d66: 0xc052, 0x1d67: 0xc072, 0x1d68: 0xc092, 0x1d69: 0xc0b2,\n\t0x1d6a: 0xc0d1, 0x1d6b: 0x1159, 0x1d6c: 0x0269, 0x1d6d: 0x6671, 0x1d6e: 0xc111, 0x1d6f: 0x0018,\n\t0x1d70: 0x0039, 0x1d71: 0x0ee9, 0x1d72: 0x1159, 0x1d73: 0x0ef9, 0x1d74: 0x0f09, 0x1d75: 0x1199,\n\t0x1d76: 0x0f31, 0x1d77: 0x0249, 0x1d78: 0x0f41, 0x1d79: 0x0259, 0x1d7a: 0x0f51, 0x1d7b: 0x0359,\n\t0x1d7c: 0x0f61, 0x1d7d: 0x0f71, 0x1d7e: 0x00d9, 0x1d7f: 0x0f99,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0x2039, 0x1d81: 0x0269, 0x1d82: 0x01d9, 0x1d83: 0x0fa9, 0x1d84: 0x0fb9, 0x1d85: 0x1089,\n\t0x1d86: 0x0279, 0x1d87: 0x0369, 0x1d88: 0x0289, 0x1d89: 0x13d1, 0x1d8a: 0xc129, 0x1d8b: 0x65b1,\n\t0x1d8c: 0xc141, 0x1d8d: 0x1441, 0x1d8e: 0xc159, 0x1d8f: 0xc179, 0x1d90: 0x0018, 0x1d91: 0x0018,\n\t0x1d92: 0x0018, 0x1d93: 0x0018, 0x1d94: 0x0018, 0x1d95: 0x0018, 0x1d96: 0x0018, 0x1d97: 0x0018,\n\t0x1d98: 0x0018, 0x1d99: 0x0018, 0x1d9a: 0x0018, 0x1d9b: 0x0018, 0x1d9c: 0x0018, 0x1d9d: 0x0018,\n\t0x1d9e: 0x0018, 0x1d9f: 0x0018, 0x1da0: 0x0018, 0x1da1: 0x0018, 0x1da2: 0x0018, 0x1da3: 0x0018,\n\t0x1da4: 0x0018, 0x1da5: 0x0018, 0x1da6: 0x0018, 0x1da7: 0x0018, 0x1da8: 0x0018, 0x1da9: 0x0018,\n\t0x1daa: 0xc191, 0x1dab: 0xc1a9, 0x1dac: 0x0040, 0x1dad: 0x0040, 0x1dae: 0x0040, 0x1daf: 0x0040,\n\t0x1db0: 0x0018, 0x1db1: 0x0018, 0x1db2: 0x0018, 0x1db3: 0x0018, 0x1db4: 0x0018, 0x1db5: 0x0018,\n\t0x1db6: 0x0018, 0x1db7: 0x0018, 0x1db8: 0x0018, 0x1db9: 0x0018, 0x1dba: 0x0018, 0x1dbb: 0x0018,\n\t0x1dbc: 0x0018, 0x1dbd: 0x0018, 0x1dbe: 0x0018, 0x1dbf: 0x0018,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0xc1d9, 0x1dc1: 0xc211, 0x1dc2: 0xc249, 0x1dc3: 0x0040, 0x1dc4: 0x0040, 0x1dc5: 0x0040,\n\t0x1dc6: 0x0040, 0x1dc7: 0x0040, 0x1dc8: 0x0040, 0x1dc9: 0x0040, 0x1dca: 0x0040, 0x1dcb: 0x0040,\n\t0x1dcc: 0x0040, 0x1dcd: 0x0040, 0x1dce: 0x0040, 0x1dcf: 0x0040, 0x1dd0: 0xc269, 0x1dd1: 0xc289,\n\t0x1dd2: 0xc2a9, 0x1dd3: 0xc2c9, 0x1dd4: 0xc2e9, 0x1dd5: 0xc309, 0x1dd6: 0xc329, 0x1dd7: 0xc349,\n\t0x1dd8: 0xc369, 0x1dd9: 0xc389, 0x1dda: 0xc3a9, 0x1ddb: 0xc3c9, 0x1ddc: 0xc3e9, 0x1ddd: 0xc409,\n\t0x1dde: 0xc429, 0x1ddf: 0xc449, 0x1de0: 0xc469, 0x1de1: 0xc489, 0x1de2: 0xc4a9, 0x1de3: 0xc4c9,\n\t0x1de4: 0xc4e9, 0x1de5: 0xc509, 0x1de6: 0xc529, 0x1de7: 0xc549, 0x1de8: 0xc569, 0x1de9: 0xc589,\n\t0x1dea: 0xc5a9, 0x1deb: 0xc5c9, 0x1dec: 0xc5e9, 0x1ded: 0xc609, 0x1dee: 0xc629, 0x1def: 0xc649,\n\t0x1df0: 0xc669, 0x1df1: 0xc689, 0x1df2: 0xc6a9, 0x1df3: 0xc6c9, 0x1df4: 0xc6e9, 0x1df5: 0xc709,\n\t0x1df6: 0xc729, 0x1df7: 0xc749, 0x1df8: 0xc769, 0x1df9: 0xc789, 0x1dfa: 0xc7a9, 0x1dfb: 0xc7c9,\n\t0x1dfc: 0x0040, 0x1dfd: 0x0040, 0x1dfe: 0x0040, 0x1dff: 0x0040,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0xcaf9, 0x1e01: 0xcb19, 0x1e02: 0xcb39, 0x1e03: 0x8b1d, 0x1e04: 0xcb59, 0x1e05: 0xcb79,\n\t0x1e06: 0xcb99, 0x1e07: 0xcbb9, 0x1e08: 0xcbd9, 0x1e09: 0xcbf9, 0x1e0a: 0xcc19, 0x1e0b: 0xcc39,\n\t0x1e0c: 0xcc59, 0x1e0d: 0x8b3d, 0x1e0e: 0xcc79, 0x1e0f: 0xcc99, 0x1e10: 0xccb9, 0x1e11: 0xccd9,\n\t0x1e12: 0x8b5d, 0x1e13: 0xccf9, 0x1e14: 0xcd19, 0x1e15: 0xc429, 0x1e16: 0x8b7d, 0x1e17: 0xcd39,\n\t0x1e18: 0xcd59, 0x1e19: 0xcd79, 0x1e1a: 0xcd99, 0x1e1b: 0xcdb9, 0x1e1c: 0x8b9d, 0x1e1d: 0xcdd9,\n\t0x1e1e: 0xcdf9, 0x1e1f: 0xce19, 0x1e20: 0xce39, 0x1e21: 0xce59, 0x1e22: 0xc789, 0x1e23: 0xce79,\n\t0x1e24: 0xce99, 0x1e25: 0xceb9, 0x1e26: 0xced9, 0x1e27: 0xcef9, 0x1e28: 0xcf19, 0x1e29: 0xcf39,\n\t0x1e2a: 0xcf59, 0x1e2b: 0xcf79, 0x1e2c: 0xcf99, 0x1e2d: 0xcfb9, 0x1e2e: 0xcfd9, 0x1e2f: 0xcff9,\n\t0x1e30: 0xd019, 0x1e31: 0xd039, 0x1e32: 0xd039, 0x1e33: 0xd039, 0x1e34: 0x8bbd, 0x1e35: 0xd059,\n\t0x1e36: 0xd079, 0x1e37: 0xd099, 0x1e38: 0x8bdd, 0x1e39: 0xd0b9, 0x1e3a: 0xd0d9, 0x1e3b: 0xd0f9,\n\t0x1e3c: 0xd119, 0x1e3d: 0xd139, 0x1e3e: 0xd159, 0x1e3f: 0xd179,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0xd199, 0x1e41: 0xd1b9, 0x1e42: 0xd1d9, 0x1e43: 0xd1f9, 0x1e44: 0xd219, 0x1e45: 0xd239,\n\t0x1e46: 0xd239, 0x1e47: 0xd259, 0x1e48: 0xd279, 0x1e49: 0xd299, 0x1e4a: 0xd2b9, 0x1e4b: 0xd2d9,\n\t0x1e4c: 0xd2f9, 0x1e4d: 0xd319, 0x1e4e: 0xd339, 0x1e4f: 0xd359, 0x1e50: 0xd379, 0x1e51: 0xd399,\n\t0x1e52: 0xd3b9, 0x1e53: 0xd3d9, 0x1e54: 0xd3f9, 0x1e55: 0xd419, 0x1e56: 0xd439, 0x1e57: 0xd459,\n\t0x1e58: 0xd479, 0x1e59: 0x8bfd, 0x1e5a: 0xd499, 0x1e5b: 0xd4b9, 0x1e5c: 0xd4d9, 0x1e5d: 0xc309,\n\t0x1e5e: 0xd4f9, 0x1e5f: 0xd519, 0x1e60: 0x8c1d, 0x1e61: 0x8c3d, 0x1e62: 0xd539, 0x1e63: 0xd559,\n\t0x1e64: 0xd579, 0x1e65: 0xd599, 0x1e66: 0xd5b9, 0x1e67: 0xd5d9, 0x1e68: 0x2040, 0x1e69: 0xd5f9,\n\t0x1e6a: 0xd619, 0x1e6b: 0xd619, 0x1e6c: 0x8c5d, 0x1e6d: 0xd639, 0x1e6e: 0xd659, 0x1e6f: 0xd679,\n\t0x1e70: 0xd699, 0x1e71: 0x8c7d, 0x1e72: 0xd6b9, 0x1e73: 0xd6d9, 0x1e74: 0x2040, 0x1e75: 0xd6f9,\n\t0x1e76: 0xd719, 0x1e77: 0xd739, 0x1e78: 0xd759, 0x1e79: 0xd779, 0x1e7a: 0xd799, 0x1e7b: 0x8c9d,\n\t0x1e7c: 0xd7b9, 0x1e7d: 0x8cbd, 0x1e7e: 0xd7d9, 0x1e7f: 0xd7f9,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0xd819, 0x1e81: 0xd839, 0x1e82: 0xd859, 0x1e83: 0xd879, 0x1e84: 0xd899, 0x1e85: 0xd8b9,\n\t0x1e86: 0xd8d9, 0x1e87: 0xd8f9, 0x1e88: 0xd919, 0x1e89: 0x8cdd, 0x1e8a: 0xd939, 0x1e8b: 0xd959,\n\t0x1e8c: 0xd979, 0x1e8d: 0xd999, 0x1e8e: 0xd9b9, 0x1e8f: 0x8cfd, 0x1e90: 0xd9d9, 0x1e91: 0x8d1d,\n\t0x1e92: 0x8d3d, 0x1e93: 0xd9f9, 0x1e94: 0xda19, 0x1e95: 0xda19, 0x1e96: 0xda39, 0x1e97: 0x8d5d,\n\t0x1e98: 0x8d7d, 0x1e99: 0xda59, 0x1e9a: 0xda79, 0x1e9b: 0xda99, 0x1e9c: 0xdab9, 0x1e9d: 0xdad9,\n\t0x1e9e: 0xdaf9, 0x1e9f: 0xdb19, 0x1ea0: 0xdb39, 0x1ea1: 0xdb59, 0x1ea2: 0xdb79, 0x1ea3: 0xdb99,\n\t0x1ea4: 0x8d9d, 0x1ea5: 0xdbb9, 0x1ea6: 0xdbd9, 0x1ea7: 0xdbf9, 0x1ea8: 0xdc19, 0x1ea9: 0xdbf9,\n\t0x1eaa: 0xdc39, 0x1eab: 0xdc59, 0x1eac: 0xdc79, 0x1ead: 0xdc99, 0x1eae: 0xdcb9, 0x1eaf: 0xdcd9,\n\t0x1eb0: 0xdcf9, 0x1eb1: 0xdd19, 0x1eb2: 0xdd39, 0x1eb3: 0xdd59, 0x1eb4: 0xdd79, 0x1eb5: 0xdd99,\n\t0x1eb6: 0xddb9, 0x1eb7: 0xddd9, 0x1eb8: 0x8dbd, 0x1eb9: 0xddf9, 0x1eba: 0xde19, 0x1ebb: 0xde39,\n\t0x1ebc: 0xde59, 0x1ebd: 0xde79, 0x1ebe: 0x8ddd, 0x1ebf: 0xde99,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0xe599, 0x1ec1: 0xe5b9, 0x1ec2: 0xe5d9, 0x1ec3: 0xe5f9, 0x1ec4: 0xe619, 0x1ec5: 0xe639,\n\t0x1ec6: 0x8efd, 0x1ec7: 0xe659, 0x1ec8: 0xe679, 0x1ec9: 0xe699, 0x1eca: 0xe6b9, 0x1ecb: 0xe6d9,\n\t0x1ecc: 0xe6f9, 0x1ecd: 0x8f1d, 0x1ece: 0xe719, 0x1ecf: 0xe739, 0x1ed0: 0x8f3d, 0x1ed1: 0x8f5d,\n\t0x1ed2: 0xe759, 0x1ed3: 0xe779, 0x1ed4: 0xe799, 0x1ed5: 0xe7b9, 0x1ed6: 0xe7d9, 0x1ed7: 0xe7f9,\n\t0x1ed8: 0xe819, 0x1ed9: 0xe839, 0x1eda: 0xe859, 0x1edb: 0x8f7d, 0x1edc: 0xe879, 0x1edd: 0x8f9d,\n\t0x1ede: 0xe899, 0x1edf: 0x2040, 0x1ee0: 0xe8b9, 0x1ee1: 0xe8d9, 0x1ee2: 0xe8f9, 0x1ee3: 0x8fbd,\n\t0x1ee4: 0xe919, 0x1ee5: 0xe939, 0x1ee6: 0x8fdd, 0x1ee7: 0x8ffd, 0x1ee8: 0xe959, 0x1ee9: 0xe979,\n\t0x1eea: 0xe999, 0x1eeb: 0xe9b9, 0x1eec: 0xe9d9, 0x1eed: 0xe9d9, 0x1eee: 0xe9f9, 0x1eef: 0xea19,\n\t0x1ef0: 0xea39, 0x1ef1: 0xea59, 0x1ef2: 0xea79, 0x1ef3: 0xea99, 0x1ef4: 0xeab9, 0x1ef5: 0x901d,\n\t0x1ef6: 0xead9, 0x1ef7: 0x903d, 0x1ef8: 0xeaf9, 0x1ef9: 0x905d, 0x1efa: 0xeb19, 0x1efb: 0x907d,\n\t0x1efc: 0x909d, 0x1efd: 0x90bd, 0x1efe: 0xeb39, 0x1eff: 0xeb59,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0xeb79, 0x1f01: 0x90dd, 0x1f02: 0x90fd, 0x1f03: 0x911d, 0x1f04: 0x913d, 0x1f05: 0xeb99,\n\t0x1f06: 0xebb9, 0x1f07: 0xebb9, 0x1f08: 0xebd9, 0x1f09: 0xebf9, 0x1f0a: 0xec19, 0x1f0b: 0xec39,\n\t0x1f0c: 0xec59, 0x1f0d: 0x915d, 0x1f0e: 0xec79, 0x1f0f: 0xec99, 0x1f10: 0xecb9, 0x1f11: 0xecd9,\n\t0x1f12: 0x917d, 0x1f13: 0xecf9, 0x1f14: 0x919d, 0x1f15: 0x91bd, 0x1f16: 0xed19, 0x1f17: 0xed39,\n\t0x1f18: 0xed59, 0x1f19: 0xed79, 0x1f1a: 0xed99, 0x1f1b: 0xedb9, 0x1f1c: 0x91dd, 0x1f1d: 0x91fd,\n\t0x1f1e: 0x921d, 0x1f1f: 0x2040, 0x1f20: 0xedd9, 0x1f21: 0x923d, 0x1f22: 0xedf9, 0x1f23: 0xee19,\n\t0x1f24: 0xee39, 0x1f25: 0x925d, 0x1f26: 0xee59, 0x1f27: 0xee79, 0x1f28: 0xee99, 0x1f29: 0xeeb9,\n\t0x1f2a: 0xeed9, 0x1f2b: 0x927d, 0x1f2c: 0xeef9, 0x1f2d: 0xef19, 0x1f2e: 0xef39, 0x1f2f: 0xef59,\n\t0x1f30: 0xef79, 0x1f31: 0xef99, 0x1f32: 0x929d, 0x1f33: 0x92bd, 0x1f34: 0xefb9, 0x1f35: 0x92dd,\n\t0x1f36: 0xefd9, 0x1f37: 0x92fd, 0x1f38: 0xeff9, 0x1f39: 0xf019, 0x1f3a: 0xf039, 0x1f3b: 0x931d,\n\t0x1f3c: 0x933d, 0x1f3d: 0xf059, 0x1f3e: 0x935d, 0x1f3f: 0xf079,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0xf6b9, 0x1f41: 0xf6d9, 0x1f42: 0xf6f9, 0x1f43: 0xf719, 0x1f44: 0xf739, 0x1f45: 0x951d,\n\t0x1f46: 0xf759, 0x1f47: 0xf779, 0x1f48: 0xf799, 0x1f49: 0xf7b9, 0x1f4a: 0xf7d9, 0x1f4b: 0x953d,\n\t0x1f4c: 0x955d, 0x1f4d: 0xf7f9, 0x1f4e: 0xf819, 0x1f4f: 0xf839, 0x1f50: 0xf859, 0x1f51: 0xf879,\n\t0x1f52: 0xf899, 0x1f53: 0x957d, 0x1f54: 0xf8b9, 0x1f55: 0xf8d9, 0x1f56: 0xf8f9, 0x1f57: 0xf919,\n\t0x1f58: 0x959d, 0x1f59: 0x95bd, 0x1f5a: 0xf939, 0x1f5b: 0xf959, 0x1f5c: 0xf979, 0x1f5d: 0x95dd,\n\t0x1f5e: 0xf999, 0x1f5f: 0xf9b9, 0x1f60: 0x6815, 0x1f61: 0x95fd, 0x1f62: 0xf9d9, 0x1f63: 0xf9f9,\n\t0x1f64: 0xfa19, 0x1f65: 0x961d, 0x1f66: 0xfa39, 0x1f67: 0xfa59, 0x1f68: 0xfa79, 0x1f69: 0xfa99,\n\t0x1f6a: 0xfab9, 0x1f6b: 0xfad9, 0x1f6c: 0xfaf9, 0x1f6d: 0x963d, 0x1f6e: 0xfb19, 0x1f6f: 0xfb39,\n\t0x1f70: 0xfb59, 0x1f71: 0x965d, 0x1f72: 0xfb79, 0x1f73: 0xfb99, 0x1f74: 0xfbb9, 0x1f75: 0xfbd9,\n\t0x1f76: 0x7b35, 0x1f77: 0x967d, 0x1f78: 0xfbf9, 0x1f79: 0xfc19, 0x1f7a: 0xfc39, 0x1f7b: 0x969d,\n\t0x1f7c: 0xfc59, 0x1f7d: 0x96bd, 0x1f7e: 0xfc79, 0x1f7f: 0xfc79,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0xfc99, 0x1f81: 0x96dd, 0x1f82: 0xfcb9, 0x1f83: 0xfcd9, 0x1f84: 0xfcf9, 0x1f85: 0xfd19,\n\t0x1f86: 0xfd39, 0x1f87: 0xfd59, 0x1f88: 0xfd79, 0x1f89: 0x96fd, 0x1f8a: 0xfd99, 0x1f8b: 0xfdb9,\n\t0x1f8c: 0xfdd9, 0x1f8d: 0xfdf9, 0x1f8e: 0xfe19, 0x1f8f: 0xfe39, 0x1f90: 0x971d, 0x1f91: 0xfe59,\n\t0x1f92: 0x973d, 0x1f93: 0x975d, 0x1f94: 0x977d, 0x1f95: 0xfe79, 0x1f96: 0xfe99, 0x1f97: 0xfeb9,\n\t0x1f98: 0xfed9, 0x1f99: 0xfef9, 0x1f9a: 0xff19, 0x1f9b: 0xff39, 0x1f9c: 0xff59, 0x1f9d: 0x979d,\n\t0x1f9e: 0x0040, 0x1f9f: 0x0040, 0x1fa0: 0x0040, 0x1fa1: 0x0040, 0x1fa2: 0x0040, 0x1fa3: 0x0040,\n\t0x1fa4: 0x0040, 0x1fa5: 0x0040, 0x1fa6: 0x0040, 0x1fa7: 0x0040, 0x1fa8: 0x0040, 0x1fa9: 0x0040,\n\t0x1faa: 0x0040, 0x1fab: 0x0040, 0x1fac: 0x0040, 0x1fad: 0x0040, 0x1fae: 0x0040, 0x1faf: 0x0040,\n\t0x1fb0: 0x0040, 0x1fb1: 0x0040, 0x1fb2: 0x0040, 0x1fb3: 0x0040, 0x1fb4: 0x0040, 0x1fb5: 0x0040,\n\t0x1fb6: 0x0040, 0x1fb7: 0x0040, 0x1fb8: 0x0040, 0x1fb9: 0x0040, 0x1fba: 0x0040, 0x1fbb: 0x0040,\n\t0x1fbc: 0x0040, 0x1fbd: 0x0040, 0x1fbe: 0x0040, 0x1fbf: 0x0040,\n}\n\n// idnaIndex: 36 blocks, 2304 entries, 4608 bytes\n// Block 0 is the zero block.\nvar idnaIndex = [2304]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x7d, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,\n\t0xc8: 0x06, 0xc9: 0x7e, 0xca: 0x7f, 0xcb: 0x07, 0xcc: 0x80, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,\n\t0xd0: 0x81, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x82, 0xd6: 0x83, 0xd7: 0x84,\n\t0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x85, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x86, 0xde: 0x87, 0xdf: 0x88,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,\n\t0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c,\n\t0xf0: 0x1d, 0xf1: 0x1e, 0xf2: 0x1e, 0xf3: 0x20, 0xf4: 0x21,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x89, 0x121: 0x13, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16,\n\t0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8d,\n\t0x130: 0x8e, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x8f, 0x135: 0x21, 0x136: 0x90, 0x137: 0x91,\n\t0x138: 0x92, 0x139: 0x93, 0x13a: 0x22, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x96,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e,\n\t0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6,\n\t0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f,\n\t0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae,\n\t0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6,\n\t0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe,\n\t0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc3,\n\t0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc4, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc5, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc6, 0x187: 0x9b,\n\t0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0x9b,\n\t0x190: 0xca, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b,\n\t0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b,\n\t0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b,\n\t0x1a8: 0xcb, 0x1a9: 0xcc, 0x1aa: 0x9b, 0x1ab: 0xcd, 0x1ac: 0x9b, 0x1ad: 0xce, 0x1ae: 0xcf, 0x1af: 0xd0,\n\t0x1b0: 0xd1, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd2, 0x1b5: 0xd3, 0x1b6: 0xd4, 0x1b7: 0xd5,\n\t0x1b8: 0xd6, 0x1b9: 0xd7, 0x1ba: 0xd8, 0x1bb: 0xd9, 0x1bc: 0xda, 0x1bd: 0xdb, 0x1be: 0xdc, 0x1bf: 0x37,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x38, 0x1c1: 0xdd, 0x1c2: 0xde, 0x1c3: 0xdf, 0x1c4: 0xe0, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe1,\n\t0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0x3e, 0x1cd: 0x3f, 0x1ce: 0x40, 0x1cf: 0x41,\n\t0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f,\n\t0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f,\n\t0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f,\n\t0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f,\n\t0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f,\n\t0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f,\n\t0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f,\n\t0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f,\n\t0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f,\n\t0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f,\n\t0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f,\n\t0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b,\n\t0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f,\n\t0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f,\n\t0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f,\n\t0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f,\n\t0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f,\n\t0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f,\n\t0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f,\n\t0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f,\n\t0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f,\n\t0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f,\n\t0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f,\n\t0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f,\n\t0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f,\n\t0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f,\n\t0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe3,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f,\n\t0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f,\n\t0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe4, 0x2d3: 0xe5, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f,\n\t0x2d8: 0xe6, 0x2d9: 0x42, 0x2da: 0x43, 0x2db: 0xe7, 0x2dc: 0x44, 0x2dd: 0x45, 0x2de: 0x46, 0x2df: 0xe8,\n\t0x2e0: 0xe9, 0x2e1: 0xea, 0x2e2: 0xeb, 0x2e3: 0xec, 0x2e4: 0xed, 0x2e5: 0xee, 0x2e6: 0xef, 0x2e7: 0xf0,\n\t0x2e8: 0xf1, 0x2e9: 0xf2, 0x2ea: 0xf3, 0x2eb: 0xf4, 0x2ec: 0xf5, 0x2ed: 0xf6, 0x2ee: 0xf7, 0x2ef: 0xf8,\n\t0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f,\n\t0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f,\n\t0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f,\n\t0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f,\n\t0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xf9, 0x31f: 0xfa,\n\t// Block 0xd, offset 0x340\n\t0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba,\n\t0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba,\n\t0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba,\n\t0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba,\n\t0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba,\n\t0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba,\n\t0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba,\n\t0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba,\n\t0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba,\n\t0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba,\n\t0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba,\n\t0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfb, 0x3a5: 0xfc, 0x3a6: 0xfd, 0x3a7: 0xfe,\n\t0x3a8: 0x47, 0x3a9: 0xff, 0x3aa: 0x100, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c,\n\t0x3b0: 0x101, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x102, 0x3b7: 0x52,\n\t0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x103, 0x3c1: 0x104, 0x3c2: 0x9f, 0x3c3: 0x105, 0x3c4: 0x106, 0x3c5: 0x9b, 0x3c6: 0x107, 0x3c7: 0x108,\n\t0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x109, 0x3cb: 0x10a, 0x3cc: 0x10b, 0x3cd: 0x10c, 0x3ce: 0x10d, 0x3cf: 0x10e,\n\t0x3d0: 0x10f, 0x3d1: 0x9f, 0x3d2: 0x110, 0x3d3: 0x111, 0x3d4: 0x112, 0x3d5: 0x113, 0x3d6: 0xba, 0x3d7: 0xba,\n\t0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x114, 0x3dd: 0x115, 0x3de: 0xba, 0x3df: 0xba,\n\t0x3e0: 0x116, 0x3e1: 0x117, 0x3e2: 0x118, 0x3e3: 0x119, 0x3e4: 0x11a, 0x3e5: 0xba, 0x3e6: 0x11b, 0x3e7: 0x11c,\n\t0x3e8: 0x11d, 0x3e9: 0x11e, 0x3ea: 0x11f, 0x3eb: 0x5b, 0x3ec: 0x120, 0x3ed: 0x121, 0x3ee: 0x5c, 0x3ef: 0xba,\n\t0x3f0: 0x122, 0x3f1: 0x123, 0x3f2: 0x124, 0x3f3: 0x125, 0x3f4: 0x126, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba,\n\t0x3f8: 0xba, 0x3f9: 0x127, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0x128, 0x3fd: 0x129, 0x3fe: 0xba, 0x3ff: 0xba,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x12a, 0x401: 0x12b, 0x402: 0x12c, 0x403: 0x12d, 0x404: 0x12e, 0x405: 0x12f, 0x406: 0x130, 0x407: 0x131,\n\t0x408: 0x132, 0x409: 0xba, 0x40a: 0x133, 0x40b: 0x134, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xba, 0x40f: 0xba,\n\t0x410: 0x135, 0x411: 0x136, 0x412: 0x137, 0x413: 0x138, 0x414: 0xba, 0x415: 0xba, 0x416: 0x139, 0x417: 0x13a,\n\t0x418: 0x13b, 0x419: 0x13c, 0x41a: 0x13d, 0x41b: 0x13e, 0x41c: 0x13f, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba,\n\t0x420: 0x140, 0x421: 0xba, 0x422: 0x141, 0x423: 0x142, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba,\n\t0x428: 0x143, 0x429: 0x144, 0x42a: 0x145, 0x42b: 0x146, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba,\n\t0x430: 0x147, 0x431: 0x148, 0x432: 0x149, 0x433: 0xba, 0x434: 0x14a, 0x435: 0x14b, 0x436: 0x14c, 0x437: 0xba,\n\t0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0x14d, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f,\n\t0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x14e, 0x44f: 0xba,\n\t0x450: 0x9b, 0x451: 0x14f, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x150, 0x456: 0xba, 0x457: 0xba,\n\t0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba,\n\t0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba,\n\t0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba,\n\t0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba,\n\t0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f,\n\t0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f,\n\t0x490: 0x151, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba,\n\t0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba,\n\t0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba,\n\t0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba,\n\t0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba,\n\t0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba,\n\t0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba,\n\t0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f,\n\t0x4d8: 0x9f, 0x4d9: 0x152, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba,\n\t0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba,\n\t0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba,\n\t0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba,\n\t0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba,\n\t// Block 0x14, offset 0x500\n\t0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba,\n\t0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba,\n\t0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba,\n\t0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba,\n\t0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f,\n\t0x528: 0x146, 0x529: 0x153, 0x52a: 0xba, 0x52b: 0x154, 0x52c: 0x155, 0x52d: 0x156, 0x52e: 0x157, 0x52f: 0xba,\n\t0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba,\n\t0x538: 0xba, 0x539: 0x158, 0x53a: 0x159, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x15a, 0x53e: 0x15b, 0x53f: 0x15c,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f,\n\t0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f,\n\t0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f,\n\t0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x15d,\n\t0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f,\n\t0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x15e, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba,\n\t0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba,\n\t0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x9f, 0x581: 0x9f, 0x582: 0x9f, 0x583: 0x9f, 0x584: 0x15f, 0x585: 0x160, 0x586: 0x9f, 0x587: 0x9f,\n\t0x588: 0x9f, 0x589: 0x9f, 0x58a: 0x9f, 0x58b: 0x161, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba,\n\t0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba,\n\t0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba,\n\t0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba,\n\t0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba,\n\t0x5b0: 0x9f, 0x5b1: 0x162, 0x5b2: 0x163, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba,\n\t0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x164, 0x5c4: 0x165, 0x5c5: 0x166, 0x5c6: 0x167, 0x5c7: 0x168,\n\t0x5c8: 0x9b, 0x5c9: 0x169, 0x5ca: 0xba, 0x5cb: 0x16a, 0x5cc: 0x9b, 0x5cd: 0x16b, 0x5ce: 0xba, 0x5cf: 0xba,\n\t0x5d0: 0x5f, 0x5d1: 0x60, 0x5d2: 0x61, 0x5d3: 0x62, 0x5d4: 0x63, 0x5d5: 0x64, 0x5d6: 0x65, 0x5d7: 0x66,\n\t0x5d8: 0x67, 0x5d9: 0x68, 0x5da: 0x69, 0x5db: 0x6a, 0x5dc: 0x6b, 0x5dd: 0x6c, 0x5de: 0x6d, 0x5df: 0x6e,\n\t0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b,\n\t0x5e8: 0x16c, 0x5e9: 0x16d, 0x5ea: 0x16e, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba,\n\t0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba,\n\t0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x16f, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba,\n\t0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba,\n\t0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba,\n\t0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba,\n\t0x620: 0x122, 0x621: 0x122, 0x622: 0x122, 0x623: 0x170, 0x624: 0x6f, 0x625: 0x171, 0x626: 0xba, 0x627: 0xba,\n\t0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba,\n\t0x630: 0xba, 0x631: 0x172, 0x632: 0x173, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba,\n\t0x638: 0x70, 0x639: 0x71, 0x63a: 0x72, 0x63b: 0x174, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x175, 0x641: 0x9b, 0x642: 0x176, 0x643: 0x177, 0x644: 0x73, 0x645: 0x74, 0x646: 0x178, 0x647: 0x179,\n\t0x648: 0x75, 0x649: 0x17a, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b,\n\t0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b,\n\t0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x17b, 0x65c: 0x9b, 0x65d: 0x17c, 0x65e: 0x9b, 0x65f: 0x17d,\n\t0x660: 0x17e, 0x661: 0x17f, 0x662: 0x180, 0x663: 0xba, 0x664: 0x181, 0x665: 0x182, 0x666: 0x183, 0x667: 0x184,\n\t0x668: 0xba, 0x669: 0x185, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba,\n\t0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba,\n\t0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f,\n\t0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f,\n\t0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f,\n\t0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x186, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f,\n\t0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f,\n\t0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f,\n\t0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f,\n\t0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f,\n\t0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f,\n\t0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f,\n\t0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x187, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f,\n\t0x6e0: 0x188, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f,\n\t0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f,\n\t0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f,\n\t0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f,\n\t0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f,\n\t0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f,\n\t0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f,\n\t0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f,\n\t0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f,\n\t0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f,\n\t0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x189, 0x73b: 0x9f, 0x73c: 0x9f, 0x73d: 0x9f, 0x73e: 0x9f, 0x73f: 0x9f,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x9f, 0x741: 0x9f, 0x742: 0x9f, 0x743: 0x9f, 0x744: 0x9f, 0x745: 0x9f, 0x746: 0x9f, 0x747: 0x9f,\n\t0x748: 0x9f, 0x749: 0x9f, 0x74a: 0x9f, 0x74b: 0x9f, 0x74c: 0x9f, 0x74d: 0x9f, 0x74e: 0x9f, 0x74f: 0x9f,\n\t0x750: 0x9f, 0x751: 0x9f, 0x752: 0x9f, 0x753: 0x9f, 0x754: 0x9f, 0x755: 0x9f, 0x756: 0x9f, 0x757: 0x9f,\n\t0x758: 0x9f, 0x759: 0x9f, 0x75a: 0x9f, 0x75b: 0x9f, 0x75c: 0x9f, 0x75d: 0x9f, 0x75e: 0x9f, 0x75f: 0x9f,\n\t0x760: 0x9f, 0x761: 0x9f, 0x762: 0x9f, 0x763: 0x9f, 0x764: 0x9f, 0x765: 0x9f, 0x766: 0x9f, 0x767: 0x9f,\n\t0x768: 0x9f, 0x769: 0x9f, 0x76a: 0x9f, 0x76b: 0x9f, 0x76c: 0x9f, 0x76d: 0x9f, 0x76e: 0x9f, 0x76f: 0x18a,\n\t0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba,\n\t0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0xba, 0x781: 0xba, 0x782: 0xba, 0x783: 0xba, 0x784: 0xba, 0x785: 0xba, 0x786: 0xba, 0x787: 0xba,\n\t0x788: 0xba, 0x789: 0xba, 0x78a: 0xba, 0x78b: 0xba, 0x78c: 0xba, 0x78d: 0xba, 0x78e: 0xba, 0x78f: 0xba,\n\t0x790: 0xba, 0x791: 0xba, 0x792: 0xba, 0x793: 0xba, 0x794: 0xba, 0x795: 0xba, 0x796: 0xba, 0x797: 0xba,\n\t0x798: 0xba, 0x799: 0xba, 0x79a: 0xba, 0x79b: 0xba, 0x79c: 0xba, 0x79d: 0xba, 0x79e: 0xba, 0x79f: 0xba,\n\t0x7a0: 0x76, 0x7a1: 0x77, 0x7a2: 0x78, 0x7a3: 0x18b, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x18c, 0x7a7: 0x7b,\n\t0x7a8: 0x7c, 0x7a9: 0xba, 0x7aa: 0xba, 0x7ab: 0xba, 0x7ac: 0xba, 0x7ad: 0xba, 0x7ae: 0xba, 0x7af: 0xba,\n\t0x7b0: 0xba, 0x7b1: 0xba, 0x7b2: 0xba, 0x7b3: 0xba, 0x7b4: 0xba, 0x7b5: 0xba, 0x7b6: 0xba, 0x7b7: 0xba,\n\t0x7b8: 0xba, 0x7b9: 0xba, 0x7ba: 0xba, 0x7bb: 0xba, 0x7bc: 0xba, 0x7bd: 0xba, 0x7be: 0xba, 0x7bf: 0xba,\n\t// Block 0x1f, offset 0x7c0\n\t0x7d0: 0x0d, 0x7d1: 0x0e, 0x7d2: 0x0f, 0x7d3: 0x10, 0x7d4: 0x11, 0x7d5: 0x0b, 0x7d6: 0x12, 0x7d7: 0x07,\n\t0x7d8: 0x13, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x14, 0x7dc: 0x0b, 0x7dd: 0x15, 0x7de: 0x16, 0x7df: 0x17,\n\t0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07,\n\t0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x18, 0x7eb: 0x19, 0x7ec: 0x1a, 0x7ed: 0x07, 0x7ee: 0x1b, 0x7ef: 0x1c,\n\t0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b,\n\t0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x0b, 0x801: 0x0b, 0x802: 0x0b, 0x803: 0x0b, 0x804: 0x0b, 0x805: 0x0b, 0x806: 0x0b, 0x807: 0x0b,\n\t0x808: 0x0b, 0x809: 0x0b, 0x80a: 0x0b, 0x80b: 0x0b, 0x80c: 0x0b, 0x80d: 0x0b, 0x80e: 0x0b, 0x80f: 0x0b,\n\t0x810: 0x0b, 0x811: 0x0b, 0x812: 0x0b, 0x813: 0x0b, 0x814: 0x0b, 0x815: 0x0b, 0x816: 0x0b, 0x817: 0x0b,\n\t0x818: 0x0b, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x0b, 0x81c: 0x0b, 0x81d: 0x0b, 0x81e: 0x0b, 0x81f: 0x0b,\n\t0x820: 0x0b, 0x821: 0x0b, 0x822: 0x0b, 0x823: 0x0b, 0x824: 0x0b, 0x825: 0x0b, 0x826: 0x0b, 0x827: 0x0b,\n\t0x828: 0x0b, 0x829: 0x0b, 0x82a: 0x0b, 0x82b: 0x0b, 0x82c: 0x0b, 0x82d: 0x0b, 0x82e: 0x0b, 0x82f: 0x0b,\n\t0x830: 0x0b, 0x831: 0x0b, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b,\n\t0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x18d, 0x841: 0x18e, 0x842: 0xba, 0x843: 0xba, 0x844: 0x18f, 0x845: 0x18f, 0x846: 0x18f, 0x847: 0x190,\n\t0x848: 0xba, 0x849: 0xba, 0x84a: 0xba, 0x84b: 0xba, 0x84c: 0xba, 0x84d: 0xba, 0x84e: 0xba, 0x84f: 0xba,\n\t0x850: 0xba, 0x851: 0xba, 0x852: 0xba, 0x853: 0xba, 0x854: 0xba, 0x855: 0xba, 0x856: 0xba, 0x857: 0xba,\n\t0x858: 0xba, 0x859: 0xba, 0x85a: 0xba, 0x85b: 0xba, 0x85c: 0xba, 0x85d: 0xba, 0x85e: 0xba, 0x85f: 0xba,\n\t0x860: 0xba, 0x861: 0xba, 0x862: 0xba, 0x863: 0xba, 0x864: 0xba, 0x865: 0xba, 0x866: 0xba, 0x867: 0xba,\n\t0x868: 0xba, 0x869: 0xba, 0x86a: 0xba, 0x86b: 0xba, 0x86c: 0xba, 0x86d: 0xba, 0x86e: 0xba, 0x86f: 0xba,\n\t0x870: 0xba, 0x871: 0xba, 0x872: 0xba, 0x873: 0xba, 0x874: 0xba, 0x875: 0xba, 0x876: 0xba, 0x877: 0xba,\n\t0x878: 0xba, 0x879: 0xba, 0x87a: 0xba, 0x87b: 0xba, 0x87c: 0xba, 0x87d: 0xba, 0x87e: 0xba, 0x87f: 0xba,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b,\n\t0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b,\n\t0x890: 0x0b, 0x891: 0x0b, 0x892: 0x0b, 0x893: 0x0b, 0x894: 0x0b, 0x895: 0x0b, 0x896: 0x0b, 0x897: 0x0b,\n\t0x898: 0x0b, 0x899: 0x0b, 0x89a: 0x0b, 0x89b: 0x0b, 0x89c: 0x0b, 0x89d: 0x0b, 0x89e: 0x0b, 0x89f: 0x0b,\n\t0x8a0: 0x1f, 0x8a1: 0x0b, 0x8a2: 0x0b, 0x8a3: 0x0b, 0x8a4: 0x0b, 0x8a5: 0x0b, 0x8a6: 0x0b, 0x8a7: 0x0b,\n\t0x8a8: 0x0b, 0x8a9: 0x0b, 0x8aa: 0x0b, 0x8ab: 0x0b, 0x8ac: 0x0b, 0x8ad: 0x0b, 0x8ae: 0x0b, 0x8af: 0x0b,\n\t0x8b0: 0x0b, 0x8b1: 0x0b, 0x8b2: 0x0b, 0x8b3: 0x0b, 0x8b4: 0x0b, 0x8b5: 0x0b, 0x8b6: 0x0b, 0x8b7: 0x0b,\n\t0x8b8: 0x0b, 0x8b9: 0x0b, 0x8ba: 0x0b, 0x8bb: 0x0b, 0x8bc: 0x0b, 0x8bd: 0x0b, 0x8be: 0x0b, 0x8bf: 0x0b,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b,\n\t0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b,\n}\n\n// idnaSparseOffset: 276 entries, 552 bytes\nvar idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x86, 0x8b, 0x94, 0xa4, 0xb2, 0xbe, 0xca, 0xdb, 0xe5, 0xec, 0xf9, 0x10a, 0x111, 0x11c, 0x12b, 0x139, 0x143, 0x145, 0x14a, 0x14d, 0x150, 0x152, 0x15e, 0x169, 0x171, 0x177, 0x17d, 0x182, 0x187, 0x18a, 0x18e, 0x194, 0x199, 0x1a5, 0x1af, 0x1b5, 0x1c6, 0x1d0, 0x1d3, 0x1db, 0x1de, 0x1eb, 0x1f3, 0x1f7, 0x1fe, 0x206, 0x216, 0x222, 0x224, 0x22e, 0x23a, 0x246, 0x252, 0x25a, 0x25f, 0x269, 0x27a, 0x27e, 0x289, 0x28d, 0x296, 0x29e, 0x2a4, 0x2a9, 0x2ac, 0x2b0, 0x2b6, 0x2ba, 0x2be, 0x2c2, 0x2c7, 0x2cd, 0x2d5, 0x2dc, 0x2e7, 0x2f1, 0x2f5, 0x2f8, 0x2fe, 0x302, 0x304, 0x307, 0x309, 0x30c, 0x316, 0x319, 0x328, 0x32c, 0x331, 0x334, 0x338, 0x33d, 0x342, 0x348, 0x34e, 0x35d, 0x363, 0x367, 0x376, 0x37b, 0x383, 0x38d, 0x398, 0x3a0, 0x3b1, 0x3ba, 0x3ca, 0x3d7, 0x3e1, 0x3e6, 0x3f3, 0x3f7, 0x3fc, 0x3fe, 0x402, 0x404, 0x408, 0x411, 0x417, 0x41b, 0x42b, 0x435, 0x43a, 0x43d, 0x443, 0x44a, 0x44f, 0x453, 0x459, 0x45e, 0x467, 0x46c, 0x472, 0x479, 0x480, 0x487, 0x48b, 0x490, 0x493, 0x498, 0x4a4, 0x4aa, 0x4af, 0x4b6, 0x4be, 0x4c3, 0x4c7, 0x4d7, 0x4de, 0x4e2, 0x4e6, 0x4ed, 0x4ef, 0x4f2, 0x4f5, 0x4f9, 0x502, 0x506, 0x50e, 0x516, 0x51c, 0x525, 0x531, 0x538, 0x541, 0x54b, 0x552, 0x560, 0x56d, 0x57a, 0x583, 0x587, 0x596, 0x59e, 0x5a9, 0x5b2, 0x5b8, 0x5c0, 0x5c9, 0x5d3, 0x5d6, 0x5e2, 0x5eb, 0x5ee, 0x5f3, 0x5fe, 0x607, 0x613, 0x616, 0x620, 0x629, 0x635, 0x642, 0x64f, 0x65d, 0x664, 0x667, 0x66c, 0x66f, 0x672, 0x675, 0x67c, 0x683, 0x687, 0x692, 0x695, 0x698, 0x69b, 0x6a1, 0x6a6, 0x6aa, 0x6ad, 0x6b0, 0x6b3, 0x6b6, 0x6b9, 0x6be, 0x6c8, 0x6cb, 0x6cf, 0x6de, 0x6ea, 0x6ee, 0x6f3, 0x6f7, 0x6fc, 0x700, 0x705, 0x70e, 0x719, 0x71f, 0x727, 0x72a, 0x72d, 0x731, 0x735, 0x73b, 0x741, 0x746, 0x749, 0x759, 0x760, 0x763, 0x766, 0x76a, 0x770, 0x775, 0x77a, 0x782, 0x787, 0x78b, 0x78f, 0x792, 0x795, 0x799, 0x79d, 0x7a0, 0x7b0, 0x7c1, 0x7c6, 0x7c8, 0x7ca}\n\n// idnaSparseValues: 1997 entries, 7988 bytes\nvar idnaSparseValues = [1997]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe105, lo: 0x80, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0x97},\n\t{value: 0xe105, lo: 0x98, hi: 0x9e},\n\t{value: 0x001f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbf},\n\t// Block 0x1, offset 0x8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0xe01d, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0335, lo: 0x83, hi: 0x83},\n\t{value: 0x034d, lo: 0x84, hi: 0x84},\n\t{value: 0x0365, lo: 0x85, hi: 0x85},\n\t{value: 0xe00d, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0xe00d, lo: 0x88, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x89},\n\t{value: 0xe00d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe00d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0x8d},\n\t{value: 0xe00d, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0xbf},\n\t// Block 0x2, offset 0x19\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0249, lo: 0xb0, hi: 0xb0},\n\t{value: 0x037d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0259, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0269, lo: 0xb3, hi: 0xb3},\n\t{value: 0x034d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0395, lo: 0xb5, hi: 0xb5},\n\t{value: 0xe1bd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0279, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0289, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbf},\n\t// Block 0x3, offset 0x25\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x3308, lo: 0x80, hi: 0xbf},\n\t// Block 0x4, offset 0x27\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x03f5, lo: 0x80, hi: 0x8f},\n\t{value: 0xe105, lo: 0x90, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5, offset 0x2c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x0545, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x0008, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x6, offset 0x33\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0401, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0018, lo: 0x89, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7, offset 0x3e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0818, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x82},\n\t{value: 0x0818, lo: 0x83, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xae},\n\t{value: 0x0808, lo: 0xaf, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x8, offset 0x4a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0c08, lo: 0x88, hi: 0x99},\n\t{value: 0x0a08, lo: 0x9a, hi: 0xbf},\n\t// Block 0x9, offset 0x4e\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0c08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0a08, lo: 0x8e, hi: 0x98},\n\t{value: 0x0c08, lo: 0x99, hi: 0x9b},\n\t{value: 0x0a08, lo: 0x9c, hi: 0xaa},\n\t{value: 0x0c08, lo: 0xab, hi: 0xac},\n\t{value: 0x0a08, lo: 0xad, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0a08, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0c08, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xa, offset 0x5d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xb, offset 0x62\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0808, lo: 0x80, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbf},\n\t// Block 0xc, offset 0x6c\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x99},\n\t{value: 0x0808, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa3},\n\t{value: 0x0808, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa7},\n\t{value: 0x0808, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0818, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd, offset 0x78\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0a08, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0c08, lo: 0xaa, hi: 0xac},\n\t{value: 0x0808, lo: 0xad, hi: 0xad},\n\t{value: 0x0c08, lo: 0xae, hi: 0xae},\n\t{value: 0x0a08, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0a08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0a08, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xe, offset 0x86\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0xa1},\n\t{value: 0x0840, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xbf},\n\t// Block 0xf, offset 0x8b\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x10, offset 0x94\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x85},\n\t{value: 0x3008, lo: 0x86, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8c},\n\t{value: 0x3b08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x11, offset 0xa4\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x12, offset 0xb2\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xba},\n\t{value: 0x3b08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x13, offset 0xbe\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0040, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x14, offset 0xca\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x89},\n\t{value: 0x3b08, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x3008, lo: 0x98, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x15, offset 0xdb\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x08f1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb9},\n\t{value: 0x3b08, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x16, offset 0xe5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0xbf},\n\t// Block 0x17, offset 0xec\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0961, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0999, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0008, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x18, offset 0xf9\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe03d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x19, offset 0x10a\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0x1a, offset 0x111\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1b, offset 0x11c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3008, lo: 0xa2, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbf},\n\t// Block 0x1c, offset 0x12b\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x8c},\n\t{value: 0x3308, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x3008, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x1d, offset 0x139\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x86},\n\t{value: 0x055d, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8c},\n\t{value: 0x055d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe105, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x1e, offset 0x143\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0018, lo: 0x80, hi: 0xbf},\n\t// Block 0x1f, offset 0x145\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa0},\n\t{value: 0x2018, lo: 0xa1, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x20, offset 0x14a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa7},\n\t{value: 0x2018, lo: 0xa8, hi: 0xbf},\n\t// Block 0x21, offset 0x14d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2018, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0xbf},\n\t// Block 0x22, offset 0x150\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0008, lo: 0x80, hi: 0xbf},\n\t// Block 0x23, offset 0x152\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x24, offset 0x15e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x25, offset 0x169\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x26, offset 0x171\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x27, offset 0x177\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x28, offset 0x17d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x29, offset 0x182\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x2a, offset 0x187\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x2b, offset 0x18a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xbf},\n\t// Block 0x2c, offset 0x18e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2d, offset 0x194\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x2e, offset 0x199\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x3b08, lo: 0x94, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x2f, offset 0x1a5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x30, offset 0x1af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xb3},\n\t{value: 0x3340, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x31, offset 0x1b5\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x3008, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x91},\n\t{value: 0x3b08, lo: 0x92, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0x96},\n\t{value: 0x0008, lo: 0x97, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x32, offset 0x1c6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x86},\n\t{value: 0x0218, lo: 0x87, hi: 0x87},\n\t{value: 0x0018, lo: 0x88, hi: 0x8a},\n\t{value: 0x33c0, lo: 0x8b, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0208, lo: 0xa0, hi: 0xbf},\n\t// Block 0x33, offset 0x1d0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0208, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x34, offset 0x1d3\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0208, lo: 0x87, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0208, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x35, offset 0x1db\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x36, offset 0x1de\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x37, offset 0x1eb\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x38, offset 0x1f3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x39, offset 0x1f7\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0028, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xbf},\n\t// Block 0x3a, offset 0x1fe\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x3308, lo: 0x97, hi: 0x98},\n\t{value: 0x3008, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x3b, offset 0x206\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x94},\n\t{value: 0x3008, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xac},\n\t{value: 0x3008, lo: 0xad, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3c, offset 0x216\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbd},\n\t{value: 0x3318, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x222\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0040, lo: 0x80, hi: 0xbf},\n\t// Block 0x3e, offset 0x224\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3008, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x3f, offset 0x22e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x3808, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x40, offset 0x23a\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3808, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xbf},\n\t// Block 0x41, offset 0x246\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3008, lo: 0xaa, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3808, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x42, offset 0x252\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x43, offset 0x25a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x44, offset 0x25f\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0e29, lo: 0x80, hi: 0x80},\n\t{value: 0x0e41, lo: 0x81, hi: 0x81},\n\t{value: 0x0e59, lo: 0x82, hi: 0x82},\n\t{value: 0x0e71, lo: 0x83, hi: 0x83},\n\t{value: 0x0e89, lo: 0x84, hi: 0x85},\n\t{value: 0x0ea1, lo: 0x86, hi: 0x86},\n\t{value: 0x0eb9, lo: 0x87, hi: 0x87},\n\t{value: 0x057d, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0x45, offset 0x269\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x92},\n\t{value: 0x0018, lo: 0x93, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0008, lo: 0xa9, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x46, offset 0x27a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0x47, offset 0x27e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x87},\n\t{value: 0xe045, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0xe045, lo: 0x98, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0xe045, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbf},\n\t// Block 0x48, offset 0x289\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x3318, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x49, offset 0x28d\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x24c1, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x4a, offset 0x296\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x24f1, lo: 0xac, hi: 0xac},\n\t{value: 0x2529, lo: 0xad, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xae},\n\t{value: 0x2579, lo: 0xaf, hi: 0xaf},\n\t{value: 0x25b1, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x4b, offset 0x29e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x9f},\n\t{value: 0x0080, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xad},\n\t{value: 0x0080, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x4c, offset 0x2a4\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa8},\n\t{value: 0x09c5, lo: 0xa9, hi: 0xa9},\n\t{value: 0x09e5, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xbf},\n\t// Block 0x4d, offset 0x2a9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0x4e, offset 0x2ac\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x28c1, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x4f, offset 0x2b0\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0e66, lo: 0xb4, hi: 0xb4},\n\t{value: 0x292a, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0e86, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x50, offset 0x2b6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x9b},\n\t{value: 0x2941, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0xbf},\n\t// Block 0x51, offset 0x2ba\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x52, offset 0x2be\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0xbf},\n\t// Block 0x53, offset 0x2c2\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x54, offset 0x2c7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x03f5, lo: 0x90, hi: 0x9f},\n\t{value: 0x0ea5, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x55, offset 0x2cd\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x56, offset 0x2d5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xae},\n\t{value: 0xe075, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x57, offset 0x2dc\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x58, offset 0x2e7\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xbf},\n\t// Block 0x59, offset 0x2f1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5a, offset 0x2f5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0xbf},\n\t// Block 0x5b, offset 0x2f8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9e},\n\t{value: 0x0edd, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x5c, offset 0x2fe\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb2},\n\t{value: 0x0efd, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x5d, offset 0x302\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x0f1d, lo: 0x80, hi: 0xbf},\n\t// Block 0x5e, offset 0x304\n\t{value: 0x0020, lo: 0x02},\n\t{value: 0x171d, lo: 0x80, hi: 0x8f},\n\t{value: 0x18fd, lo: 0x90, hi: 0xbf},\n\t// Block 0x5f, offset 0x307\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x1efd, lo: 0x80, hi: 0xbf},\n\t// Block 0x60, offset 0x309\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x61, offset 0x30c\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9a},\n\t{value: 0x29e2, lo: 0x9b, hi: 0x9b},\n\t{value: 0x2a0a, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9e},\n\t{value: 0x2a31, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x62, offset 0x316\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x2a69, lo: 0xbf, hi: 0xbf},\n\t// Block 0x63, offset 0x319\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0040, lo: 0x80, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb0},\n\t{value: 0x2a1d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x2a3d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x2a5d, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2a7d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2a5d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2a9d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2abd, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2add, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2afd, lo: 0xba, hi: 0xbb},\n\t{value: 0x2b1d, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2afd, lo: 0xbe, hi: 0xbf},\n\t// Block 0x64, offset 0x328\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x65, offset 0x32c\n\t{value: 0x0030, lo: 0x04},\n\t{value: 0x2aa2, lo: 0x80, hi: 0x9d},\n\t{value: 0x305a, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x30a2, lo: 0xa0, hi: 0xbf},\n\t// Block 0x66, offset 0x331\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x67, offset 0x334\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x68, offset 0x338\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x69, offset 0x33d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x6a, offset 0x342\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0018, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6b, offset 0x348\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2009, lo: 0xb8, hi: 0xb8},\n\t{value: 0x6e89, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xbf},\n\t// Block 0x6c, offset 0x34e\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x3308, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0008, lo: 0x8c, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x6d, offset 0x35d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0208, lo: 0x80, hi: 0xb1},\n\t{value: 0x0108, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6e, offset 0x363\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xbf},\n\t// Block 0x6f, offset 0x367\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x70, offset 0x376\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x71, offset 0x37b\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x91},\n\t{value: 0x3008, lo: 0x92, hi: 0x92},\n\t{value: 0x3808, lo: 0x93, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x72, offset 0x383\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb9},\n\t{value: 0x3008, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x73, offset 0x38d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x74, offset 0x398\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x75, offset 0x3a0\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3008, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x76, offset 0x3b1\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x77, offset 0x3ba\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x9a},\n\t{value: 0x0008, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3b08, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x78, offset 0x3ca\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x90},\n\t{value: 0x0008, lo: 0x91, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x79, offset 0x3d7\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4465, lo: 0x9c, hi: 0x9c},\n\t{value: 0x447d, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2971, lo: 0x9e, hi: 0x9e},\n\t{value: 0xe06d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xaf},\n\t{value: 0x4495, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7a, offset 0x3e1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x44b5, lo: 0x80, hi: 0x8f},\n\t{value: 0x44d5, lo: 0x90, hi: 0x9f},\n\t{value: 0x44f5, lo: 0xa0, hi: 0xaf},\n\t{value: 0x44d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7b, offset 0x3e6\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3b08, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x7c, offset 0x3f3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7d, offset 0x3f7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x7e, offset 0x3fc\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x4515, lo: 0x80, hi: 0xbf},\n\t// Block 0x7f, offset 0x3fe\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x4d15, lo: 0x80, hi: 0x94},\n\t{value: 0x4ad5, lo: 0x95, hi: 0x95},\n\t{value: 0x4fb5, lo: 0x96, hi: 0xbf},\n\t// Block 0x80, offset 0x402\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x54f5, lo: 0x80, hi: 0xbf},\n\t// Block 0x81, offset 0x404\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x5cf5, lo: 0x80, hi: 0x84},\n\t{value: 0x5655, lo: 0x85, hi: 0x85},\n\t{value: 0x5d95, lo: 0x86, hi: 0xbf},\n\t// Block 0x82, offset 0x408\n\t{value: 0x0020, lo: 0x08},\n\t{value: 0x6b55, lo: 0x80, hi: 0x8f},\n\t{value: 0x6d15, lo: 0x90, hi: 0x90},\n\t{value: 0x6d55, lo: 0x91, hi: 0xab},\n\t{value: 0x6ea1, lo: 0xac, hi: 0xac},\n\t{value: 0x70b5, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x70d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x83, offset 0x411\n\t{value: 0x0020, lo: 0x05},\n\t{value: 0x72d5, lo: 0x80, hi: 0xad},\n\t{value: 0x6535, lo: 0xae, hi: 0xae},\n\t{value: 0x7895, lo: 0xaf, hi: 0xb5},\n\t{value: 0x6f55, lo: 0xb6, hi: 0xb6},\n\t{value: 0x7975, lo: 0xb7, hi: 0xbf},\n\t// Block 0x84, offset 0x417\n\t{value: 0x0028, lo: 0x03},\n\t{value: 0x7c21, lo: 0x80, hi: 0x82},\n\t{value: 0x7be1, lo: 0x83, hi: 0x83},\n\t{value: 0x7c99, lo: 0x84, hi: 0xbf},\n\t// Block 0x85, offset 0x41b\n\t{value: 0x0038, lo: 0x0f},\n\t{value: 0x9db1, lo: 0x80, hi: 0x83},\n\t{value: 0x9e59, lo: 0x84, hi: 0x85},\n\t{value: 0x9e91, lo: 0x86, hi: 0x87},\n\t{value: 0x9ec9, lo: 0x88, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0xa089, lo: 0x92, hi: 0x97},\n\t{value: 0xa1a1, lo: 0x98, hi: 0x9c},\n\t{value: 0xa281, lo: 0x9d, hi: 0xb3},\n\t{value: 0x9d41, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9db1, lo: 0xb5, hi: 0xb5},\n\t{value: 0xa789, lo: 0xb6, hi: 0xbb},\n\t{value: 0xa869, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa7f9, lo: 0xbd, hi: 0xbd},\n\t{value: 0xa8d9, lo: 0xbe, hi: 0xbf},\n\t// Block 0x86, offset 0x42b\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0008, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x87, offset 0x435\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x88, offset 0x43a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x89, offset 0x43d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x8a, offset 0x443\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x8b, offset 0x44a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x8c, offset 0x44f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8d, offset 0x453\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x8e, offset 0x459\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xbf},\n\t// Block 0x8f, offset 0x45e\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x90, offset 0x467\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x91, offset 0x46c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x92, offset 0x472\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x97},\n\t{value: 0x8ad5, lo: 0x98, hi: 0x9f},\n\t{value: 0x8aed, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xbf},\n\t// Block 0x93, offset 0x479\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x8aed, lo: 0xb0, hi: 0xb7},\n\t{value: 0x8ad5, lo: 0xb8, hi: 0xbf},\n\t// Block 0x94, offset 0x480\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x95, offset 0x487\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x96, offset 0x48b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xae},\n\t{value: 0x0018, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x97, offset 0x490\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x98, offset 0x493\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xbf},\n\t// Block 0x99, offset 0x498\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0808, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0808, lo: 0x8a, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0808, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0808, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9a, offset 0x4a4\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0818, lo: 0x97, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0818, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9b, offset 0x4aa\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa6},\n\t{value: 0x0818, lo: 0xa7, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9c, offset 0x4af\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x0818, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9d, offset 0x4b6\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0818, lo: 0x96, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0818, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9e, offset 0x4be\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbb},\n\t{value: 0x0818, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0808, lo: 0xbe, hi: 0xbf},\n\t// Block 0x9f, offset 0x4c3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0818, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x0818, lo: 0x92, hi: 0xbf},\n\t// Block 0xa0, offset 0x4c7\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x94},\n\t{value: 0x0808, lo: 0x95, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x98},\n\t{value: 0x0808, lo: 0x99, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa1, offset 0x4d7\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0818, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0818, lo: 0x90, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0818, lo: 0xbd, hi: 0xbf},\n\t// Block 0xa2, offset 0x4de\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xa3, offset 0x4e2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xbf},\n\t// Block 0xa4, offset 0x4e6\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0818, lo: 0x98, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb7},\n\t{value: 0x0818, lo: 0xb8, hi: 0xbf},\n\t// Block 0xa5, offset 0x4ed\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0808, lo: 0x80, hi: 0xbf},\n\t// Block 0xa6, offset 0x4ef\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0808, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xa7, offset 0x4f2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x03dd, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xa8, offset 0x4f5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xbf},\n\t// Block 0xa9, offset 0x4f9\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0908, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0xa1},\n\t{value: 0x0c08, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0a08, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3308, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xaa, offset 0x502\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0818, lo: 0xa0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xab, offset 0x506\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0xa6},\n\t{value: 0x0808, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0a08, lo: 0xb4, hi: 0xbf},\n\t// Block 0xac, offset 0x50e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0a08, lo: 0x80, hi: 0x84},\n\t{value: 0x0808, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x90},\n\t{value: 0x0a18, lo: 0x91, hi: 0x93},\n\t{value: 0x0c18, lo: 0x94, hi: 0x94},\n\t{value: 0x0818, lo: 0x95, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xad, offset 0x516\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xae, offset 0x51c\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x91},\n\t{value: 0x0018, lo: 0x92, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xaf, offset 0x525\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0xb0, offset 0x531\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb1, offset 0x538\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb2},\n\t{value: 0x3b08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xbf},\n\t// Block 0xb2, offset 0x541\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb3, offset 0x54b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb4, offset 0x552\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xb5, offset 0x560\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3808, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb6, offset 0x56d\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xb7, offset 0x57a\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x3308, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa9},\n\t{value: 0x3b08, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb8, offset 0x583\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xb9, offset 0x587\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xba, offset 0x596\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbb, offset 0x59e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x85},\n\t{value: 0x0018, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xbc, offset 0x5a9\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbd, offset 0x5b2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9b},\n\t{value: 0x3308, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xbe, offset 0x5b8\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbf, offset 0x5c0\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xc0, offset 0x5c9\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb5},\n\t{value: 0x3808, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0xc1, offset 0x5d3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xc2, offset 0x5d6\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0xc3, offset 0x5e2\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xc4, offset 0x5eb\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xbf},\n\t// Block 0xc5, offset 0x5ee\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc6, offset 0x5f3\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc7, offset 0x5fe\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x3b08, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0xbf},\n\t// Block 0xc8, offset 0x607\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x98},\n\t{value: 0x3b08, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xbf},\n\t// Block 0xc9, offset 0x613\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xca, offset 0x616\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xcb, offset 0x620\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xbf},\n\t// Block 0xcc, offset 0x629\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xa9},\n\t{value: 0x3308, lo: 0xaa, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xcd, offset 0x635\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xce, offset 0x642\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xcf, offset 0x64f\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x3008, lo: 0x93, hi: 0x94},\n\t{value: 0x3308, lo: 0x95, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x96},\n\t{value: 0x3b08, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd0, offset 0x65d\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd1, offset 0x664\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xd2, offset 0x667\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xd3, offset 0x66c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xd4, offset 0x66f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xbf},\n\t// Block 0xd5, offset 0x672\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xbf},\n\t// Block 0xd6, offset 0x675\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xd7, offset 0x67c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xd8, offset 0x683\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0xd9, offset 0x687\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0xda, offset 0x692\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xdb, offset 0x695\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0xdc, offset 0x698\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0xdd, offset 0x69b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xde, offset 0x6a1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xdf, offset 0x6a6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xbf},\n\t// Block 0xe0, offset 0x6aa\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xe1, offset 0x6ad\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xe2, offset 0x6b0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xe3, offset 0x6b3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe4, offset 0x6b6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xe5, offset 0x6b9\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0xe6, offset 0x6be\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x03c0, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xe7, offset 0x6c8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe8, offset 0x6cb\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xbf},\n\t// Block 0xe9, offset 0x6cf\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0xb5b9, lo: 0x9e, hi: 0x9e},\n\t{value: 0xb601, lo: 0x9f, hi: 0x9f},\n\t{value: 0xb649, lo: 0xa0, hi: 0xa0},\n\t{value: 0xb6b1, lo: 0xa1, hi: 0xa1},\n\t{value: 0xb719, lo: 0xa2, hi: 0xa2},\n\t{value: 0xb781, lo: 0xa3, hi: 0xa3},\n\t{value: 0xb7e9, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3018, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3318, lo: 0xa7, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xac},\n\t{value: 0x3018, lo: 0xad, hi: 0xb2},\n\t{value: 0x0340, lo: 0xb3, hi: 0xba},\n\t{value: 0x3318, lo: 0xbb, hi: 0xbf},\n\t// Block 0xea, offset 0x6de\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3318, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x84},\n\t{value: 0x3318, lo: 0x85, hi: 0x8b},\n\t{value: 0x0018, lo: 0x8c, hi: 0xa9},\n\t{value: 0x3318, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xba},\n\t{value: 0xb851, lo: 0xbb, hi: 0xbb},\n\t{value: 0xb899, lo: 0xbc, hi: 0xbc},\n\t{value: 0xb8e1, lo: 0xbd, hi: 0xbd},\n\t{value: 0xb949, lo: 0xbe, hi: 0xbe},\n\t{value: 0xb9b1, lo: 0xbf, hi: 0xbf},\n\t// Block 0xeb, offset 0x6ea\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xba19, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xbf},\n\t// Block 0xec, offset 0x6ee\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3318, lo: 0x82, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0xbf},\n\t// Block 0xed, offset 0x6f3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0xee, offset 0x6f7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xef, offset 0x6fc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0xf0, offset 0x700\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0xf1, offset 0x705\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3308, lo: 0xa1, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xf2, offset 0x70e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0xf3, offset 0x719\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x86},\n\t{value: 0x0818, lo: 0x87, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xf4, offset 0x71f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0a08, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xf5, offset 0x727\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xb0},\n\t{value: 0x0818, lo: 0xb1, hi: 0xbf},\n\t// Block 0xf6, offset 0x72a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0818, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xf7, offset 0x72d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xf8, offset 0x731\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0xf9, offset 0x735\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0xfa, offset 0x73b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xfb, offset 0x741\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0xc1c1, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xfc, offset 0x746\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xbf},\n\t// Block 0xfd, offset 0x749\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xc7e9, lo: 0x80, hi: 0x80},\n\t{value: 0xc839, lo: 0x81, hi: 0x81},\n\t{value: 0xc889, lo: 0x82, hi: 0x82},\n\t{value: 0xc8d9, lo: 0x83, hi: 0x83},\n\t{value: 0xc929, lo: 0x84, hi: 0x84},\n\t{value: 0xc979, lo: 0x85, hi: 0x85},\n\t{value: 0xc9c9, lo: 0x86, hi: 0x86},\n\t{value: 0xca19, lo: 0x87, hi: 0x87},\n\t{value: 0xca69, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0xcab9, lo: 0x90, hi: 0x90},\n\t{value: 0xcad9, lo: 0x91, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xbf},\n\t// Block 0xfe, offset 0x759\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xff, offset 0x760\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x100, offset 0x763\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0xbf},\n\t// Block 0x101, offset 0x766\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x102, offset 0x76a\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x103, offset 0x770\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0x104, offset 0x775\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x105, offset 0x77a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0018, lo: 0xb3, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x106, offset 0x782\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x107, offset 0x787\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x108, offset 0x78b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0x109, offset 0x78f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0x10a, offset 0x792\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x10b, offset 0x795\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x10c, offset 0x799\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x10d, offset 0x79d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x10e, offset 0x7a0\n\t{value: 0x0020, lo: 0x0f},\n\t{value: 0xdeb9, lo: 0x80, hi: 0x89},\n\t{value: 0x8dfd, lo: 0x8a, hi: 0x8a},\n\t{value: 0xdff9, lo: 0x8b, hi: 0x9c},\n\t{value: 0x8e1d, lo: 0x9d, hi: 0x9d},\n\t{value: 0xe239, lo: 0x9e, hi: 0xa2},\n\t{value: 0x8e3d, lo: 0xa3, hi: 0xa3},\n\t{value: 0xe2d9, lo: 0xa4, hi: 0xab},\n\t{value: 0x7ed5, lo: 0xac, hi: 0xac},\n\t{value: 0xe3d9, lo: 0xad, hi: 0xaf},\n\t{value: 0x8e5d, lo: 0xb0, hi: 0xb0},\n\t{value: 0xe439, lo: 0xb1, hi: 0xb6},\n\t{value: 0x8e7d, lo: 0xb7, hi: 0xb9},\n\t{value: 0xe4f9, lo: 0xba, hi: 0xba},\n\t{value: 0x8edd, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe519, lo: 0xbc, hi: 0xbf},\n\t// Block 0x10f, offset 0x7b0\n\t{value: 0x0020, lo: 0x10},\n\t{value: 0x937d, lo: 0x80, hi: 0x80},\n\t{value: 0xf099, lo: 0x81, hi: 0x86},\n\t{value: 0x939d, lo: 0x87, hi: 0x8a},\n\t{value: 0xd9f9, lo: 0x8b, hi: 0x8b},\n\t{value: 0xf159, lo: 0x8c, hi: 0x96},\n\t{value: 0x941d, lo: 0x97, hi: 0x97},\n\t{value: 0xf2b9, lo: 0x98, hi: 0xa3},\n\t{value: 0x943d, lo: 0xa4, hi: 0xa6},\n\t{value: 0xf439, lo: 0xa7, hi: 0xaa},\n\t{value: 0x949d, lo: 0xab, hi: 0xab},\n\t{value: 0xf4b9, lo: 0xac, hi: 0xac},\n\t{value: 0x94bd, lo: 0xad, hi: 0xad},\n\t{value: 0xf4d9, lo: 0xae, hi: 0xaf},\n\t{value: 0x94dd, lo: 0xb0, hi: 0xb1},\n\t{value: 0xf519, lo: 0xb2, hi: 0xbe},\n\t{value: 0x2040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x110, offset 0x7c1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0340, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x9f},\n\t{value: 0x0340, lo: 0xa0, hi: 0xbf},\n\t// Block 0x111, offset 0x7c6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0340, lo: 0x80, hi: 0xbf},\n\t// Block 0x112, offset 0x7c8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x33c0, lo: 0x80, hi: 0xbf},\n\t// Block 0x113, offset 0x7ca\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x33c0, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n}\n\n// Total table size 42466 bytes (41KiB); checksum: 355A58A4\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/tables12.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.14 && !go1.16\n\npackage idna\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"12.0.0\"\n\nvar mappings string = \"\" + // Size: 8178 bytes\n\t\"\\x00\\x01 \\x03 ̈\\x01a\\x03 ̄\\x012\\x013\\x03 ́\\x03 ̧\\x011\\x01o\\x051⁄4\\x051⁄2\" +\n\t\"\\x053⁄4\\x03i̇\\x03l·\\x03ʼn\\x01s\\x03dž\\x03ⱥ\\x03ⱦ\\x01h\\x01j\\x01r\\x01w\\x01y\" +\n\t\"\\x03 ̆\\x03 ̇\\x03 ̊\\x03 ̨\\x03 ̃\\x03 ̋\\x01l\\x01x\\x04̈́\\x03 ι\\x01;\\x05 ̈́\" +\n\t\"\\x04եւ\\x04اٴ\\x04وٴ\\x04ۇٴ\\x04يٴ\\x06क़\\x06ख़\\x06ग़\\x06ज़\\x06ड़\\x06ढ़\\x06फ़\" +\n\t\"\\x06य़\\x06ড়\\x06ঢ়\\x06য়\\x06ਲ਼\\x06ਸ਼\\x06ਖ਼\\x06ਗ਼\\x06ਜ਼\\x06ਫ਼\\x06ଡ଼\\x06ଢ଼\" +\n\t\"\\x06ํา\\x06ໍາ\\x06ຫນ\\x06ຫມ\\x06གྷ\\x06ཌྷ\\x06དྷ\\x06བྷ\\x06ཛྷ\\x06ཀྵ\\x06ཱི\\x06ཱུ\" +\n\t\"\\x06ྲྀ\\x09ྲཱྀ\\x06ླྀ\\x09ླཱྀ\\x06ཱྀ\\x06ྒྷ\\x06ྜྷ\\x06ྡྷ\\x06ྦྷ\\x06ྫྷ\\x06ྐྵ\\x02\" +\n\t\"в\\x02д\\x02о\\x02с\\x02т\\x02ъ\\x02ѣ\\x02æ\\x01b\\x01d\\x01e\\x02ǝ\\x01g\\x01i\\x01k\" +\n\t\"\\x01m\\x01n\\x02ȣ\\x01p\\x01t\\x01u\\x02ɐ\\x02ɑ\\x02ə\\x02ɛ\\x02ɜ\\x02ŋ\\x02ɔ\\x02ɯ\" +\n\t\"\\x01v\\x02β\\x02γ\\x02δ\\x02φ\\x02χ\\x02ρ\\x02н\\x02ɒ\\x01c\\x02ɕ\\x02ð\\x01f\\x02ɟ\" +\n\t\"\\x02ɡ\\x02ɥ\\x02ɨ\\x02ɩ\\x02ɪ\\x02ʝ\\x02ɭ\\x02ʟ\\x02ɱ\\x02ɰ\\x02ɲ\\x02ɳ\\x02ɴ\\x02ɵ\" +\n\t\"\\x02ɸ\\x02ʂ\\x02ʃ\\x02ƫ\\x02ʉ\\x02ʊ\\x02ʋ\\x02ʌ\\x01z\\x02ʐ\\x02ʑ\\x02ʒ\\x02θ\\x02ss\" +\n\t\"\\x02ά\\x02έ\\x02ή\\x02ί\\x02ό\\x02ύ\\x02ώ\\x05ἀι\\x05ἁι\\x05ἂι\\x05ἃι\\x05ἄι\\x05ἅι\" +\n\t\"\\x05ἆι\\x05ἇι\\x05ἠι\\x05ἡι\\x05ἢι\\x05ἣι\\x05ἤι\\x05ἥι\\x05ἦι\\x05ἧι\\x05ὠι\\x05ὡι\" +\n\t\"\\x05ὢι\\x05ὣι\\x05ὤι\\x05ὥι\\x05ὦι\\x05ὧι\\x05ὰι\\x04αι\\x04άι\\x05ᾶι\\x02ι\\x05 ̈͂\" +\n\t\"\\x05ὴι\\x04ηι\\x04ήι\\x05ῆι\\x05 ̓̀\\x05 ̓́\\x05 ̓͂\\x02ΐ\\x05 ̔̀\\x05 ̔́\\x05 ̔͂\" +\n\t\"\\x02ΰ\\x05 ̈̀\\x01`\\x05ὼι\\x04ωι\\x04ώι\\x05ῶι\\x06′′\\x09′′′\\x06‵‵\\x09‵‵‵\\x02!\" +\n\t\"!\\x02??\\x02?!\\x02!?\\x0c′′′′\\x010\\x014\\x015\\x016\\x017\\x018\\x019\\x01+\\x01=\" +\n\t\"\\x01(\\x01)\\x02rs\\x02ħ\\x02no\\x01q\\x02sm\\x02tm\\x02ω\\x02å\\x02א\\x02ב\\x02ג\" +\n\t\"\\x02ד\\x02π\\x051⁄7\\x051⁄9\\x061⁄10\\x051⁄3\\x052⁄3\\x051⁄5\\x052⁄5\\x053⁄5\\x054\" +\n\t\"⁄5\\x051⁄6\\x055⁄6\\x051⁄8\\x053⁄8\\x055⁄8\\x057⁄8\\x041⁄\\x02ii\\x02iv\\x02vi\" +\n\t\"\\x04viii\\x02ix\\x02xi\\x050⁄3\\x06∫∫\\x09∫∫∫\\x06∮∮\\x09∮∮∮\\x0210\\x0211\\x0212\" +\n\t\"\\x0213\\x0214\\x0215\\x0216\\x0217\\x0218\\x0219\\x0220\\x04(10)\\x04(11)\\x04(12)\" +\n\t\"\\x04(13)\\x04(14)\\x04(15)\\x04(16)\\x04(17)\\x04(18)\\x04(19)\\x04(20)\\x0c∫∫∫∫\" +\n\t\"\\x02==\\x05⫝̸\\x02ɫ\\x02ɽ\\x02ȿ\\x02ɀ\\x01.\\x04 ゙\\x04 ゚\\x06より\\x06コト\\x05(ᄀ)\\x05\" +\n\t\"(ᄂ)\\x05(ᄃ)\\x05(ᄅ)\\x05(ᄆ)\\x05(ᄇ)\\x05(ᄉ)\\x05(ᄋ)\\x05(ᄌ)\\x05(ᄎ)\\x05(ᄏ)\\x05(ᄐ\" +\n\t\")\\x05(ᄑ)\\x05(ᄒ)\\x05(가)\\x05(나)\\x05(다)\\x05(라)\\x05(마)\\x05(바)\\x05(사)\\x05(아)\" +\n\t\"\\x05(자)\\x05(차)\\x05(카)\\x05(타)\\x05(파)\\x05(하)\\x05(주)\\x08(오전)\\x08(오후)\\x05(一)\" +\n\t\"\\x05(二)\\x05(三)\\x05(四)\\x05(五)\\x05(六)\\x05(七)\\x05(八)\\x05(九)\\x05(十)\\x05(月)\" +\n\t\"\\x05(火)\\x05(水)\\x05(木)\\x05(金)\\x05(土)\\x05(日)\\x05(株)\\x05(有)\\x05(社)\\x05(名)\" +\n\t\"\\x05(特)\\x05(財)\\x05(祝)\\x05(労)\\x05(代)\\x05(呼)\\x05(学)\\x05(監)\\x05(企)\\x05(資)\" +\n\t\"\\x05(協)\\x05(祭)\\x05(休)\\x05(自)\\x05(至)\\x0221\\x0222\\x0223\\x0224\\x0225\\x0226\" +\n\t\"\\x0227\\x0228\\x0229\\x0230\\x0231\\x0232\\x0233\\x0234\\x0235\\x06참고\\x06주의\\x0236\" +\n\t\"\\x0237\\x0238\\x0239\\x0240\\x0241\\x0242\\x0243\\x0244\\x0245\\x0246\\x0247\\x0248\" +\n\t\"\\x0249\\x0250\\x041月\\x042月\\x043月\\x044月\\x045月\\x046月\\x047月\\x048月\\x049月\\x0510\" +\n\t\"月\\x0511月\\x0512月\\x02hg\\x02ev\\x0cアパート\\x0cアルファ\\x0cアンペア\\x09アール\\x0cイニング\\x09\" +\n\t\"インチ\\x09ウォン\\x0fエスクード\\x0cエーカー\\x09オンス\\x09オーム\\x09カイリ\\x0cカラット\\x0cカロリー\\x09ガロ\" +\n\t\"ン\\x09ガンマ\\x06ギガ\\x09ギニー\\x0cキュリー\\x0cギルダー\\x06キロ\\x0fキログラム\\x12キロメートル\\x0fキロワッ\" +\n\t\"ト\\x09グラム\\x0fグラムトン\\x0fクルゼイロ\\x0cクローネ\\x09ケース\\x09コルナ\\x09コーポ\\x0cサイクル\\x0fサンチ\" +\n\t\"ーム\\x0cシリング\\x09センチ\\x09セント\\x09ダース\\x06デシ\\x06ドル\\x06トン\\x06ナノ\\x09ノット\\x09ハイツ\" +\n\t\"\\x0fパーセント\\x09パーツ\\x0cバーレル\\x0fピアストル\\x09ピクル\\x06ピコ\\x06ビル\\x0fファラッド\\x0cフィート\" +\n\t\"\\x0fブッシェル\\x09フラン\\x0fヘクタール\\x06ペソ\\x09ペニヒ\\x09ヘルツ\\x09ペンス\\x09ページ\\x09ベータ\\x0cポイ\" +\n\t\"ント\\x09ボルト\\x06ホン\\x09ポンド\\x09ホール\\x09ホーン\\x0cマイクロ\\x09マイル\\x09マッハ\\x09マルク\\x0fマ\" +\n\t\"ンション\\x0cミクロン\\x06ミリ\\x0fミリバール\\x06メガ\\x0cメガトン\\x0cメートル\\x09ヤード\\x09ヤール\\x09ユアン\" +\n\t\"\\x0cリットル\\x06リラ\\x09ルピー\\x0cルーブル\\x06レム\\x0fレントゲン\\x09ワット\\x040点\\x041点\\x042点\" +\n\t\"\\x043点\\x044点\\x045点\\x046点\\x047点\\x048点\\x049点\\x0510点\\x0511点\\x0512点\\x0513点\" +\n\t\"\\x0514点\\x0515点\\x0516点\\x0517点\\x0518点\\x0519点\\x0520点\\x0521点\\x0522点\\x0523点\" +\n\t\"\\x0524点\\x02da\\x02au\\x02ov\\x02pc\\x02dm\\x02iu\\x06平成\\x06昭和\\x06大正\\x06明治\\x0c株\" +\n\t\"式会社\\x02pa\\x02na\\x02ma\\x02ka\\x02kb\\x02mb\\x02gb\\x04kcal\\x02pf\\x02nf\\x02m\" +\n\t\"g\\x02kg\\x02hz\\x02ml\\x02dl\\x02kl\\x02fm\\x02nm\\x02mm\\x02cm\\x02km\\x02m2\\x02m\" +\n\t\"3\\x05m∕s\\x06m∕s2\\x07rad∕s\\x08rad∕s2\\x02ps\\x02ns\\x02ms\\x02pv\\x02nv\\x02mv\" +\n\t\"\\x02kv\\x02pw\\x02nw\\x02mw\\x02kw\\x02bq\\x02cc\\x02cd\\x06c∕kg\\x02db\\x02gy\\x02\" +\n\t\"ha\\x02hp\\x02in\\x02kk\\x02kt\\x02lm\\x02ln\\x02lx\\x02ph\\x02pr\\x02sr\\x02sv\\x02\" +\n\t\"wb\\x05v∕m\\x05a∕m\\x041日\\x042日\\x043日\\x044日\\x045日\\x046日\\x047日\\x048日\\x049日\" +\n\t\"\\x0510日\\x0511日\\x0512日\\x0513日\\x0514日\\x0515日\\x0516日\\x0517日\\x0518日\\x0519日\" +\n\t\"\\x0520日\\x0521日\\x0522日\\x0523日\\x0524日\\x0525日\\x0526日\\x0527日\\x0528日\\x0529日\" +\n\t\"\\x0530日\\x0531日\\x02ь\\x02ɦ\\x02ɬ\\x02ʞ\\x02ʇ\\x02œ\\x04𤋮\\x04𢡊\\x04𢡄\\x04𣏕\\x04𥉉\" +\n\t\"\\x04𥳐\\x04𧻓\\x02ff\\x02fi\\x02fl\\x02st\\x04մն\\x04մե\\x04մի\\x04վն\\x04մխ\\x04יִ\" +\n\t\"\\x04ײַ\\x02ע\\x02ה\\x02כ\\x02ל\\x02ם\\x02ר\\x02ת\\x04שׁ\\x04שׂ\\x06שּׁ\\x06שּׂ\\x04א\" +\n\t\"ַ\\x04אָ\\x04אּ\\x04בּ\\x04גּ\\x04דּ\\x04הּ\\x04וּ\\x04זּ\\x04טּ\\x04יּ\\x04ךּ\\x04\" +\n\t\"כּ\\x04לּ\\x04מּ\\x04נּ\\x04סּ\\x04ףּ\\x04פּ\\x04צּ\\x04קּ\\x04רּ\\x04שּ\\x04תּ\" +\n\t\"\\x04וֹ\\x04בֿ\\x04כֿ\\x04פֿ\\x04אל\\x02ٱ\\x02ٻ\\x02پ\\x02ڀ\\x02ٺ\\x02ٿ\\x02ٹ\\x02ڤ\" +\n\t\"\\x02ڦ\\x02ڄ\\x02ڃ\\x02چ\\x02ڇ\\x02ڍ\\x02ڌ\\x02ڎ\\x02ڈ\\x02ژ\\x02ڑ\\x02ک\\x02گ\\x02ڳ\" +\n\t\"\\x02ڱ\\x02ں\\x02ڻ\\x02ۀ\\x02ہ\\x02ھ\\x02ے\\x02ۓ\\x02ڭ\\x02ۇ\\x02ۆ\\x02ۈ\\x02ۋ\\x02ۅ\" +\n\t\"\\x02ۉ\\x02ې\\x02ى\\x04ئا\\x04ئە\\x04ئو\\x04ئۇ\\x04ئۆ\\x04ئۈ\\x04ئې\\x04ئى\\x02ی\\x04\" +\n\t\"ئج\\x04ئح\\x04ئم\\x04ئي\\x04بج\\x04بح\\x04بخ\\x04بم\\x04بى\\x04بي\\x04تج\\x04تح\" +\n\t\"\\x04تخ\\x04تم\\x04تى\\x04تي\\x04ثج\\x04ثم\\x04ثى\\x04ثي\\x04جح\\x04جم\\x04حج\\x04حم\" +\n\t\"\\x04خج\\x04خح\\x04خم\\x04سج\\x04سح\\x04سخ\\x04سم\\x04صح\\x04صم\\x04ضج\\x04ضح\\x04ضخ\" +\n\t\"\\x04ضم\\x04طح\\x04طم\\x04ظم\\x04عج\\x04عم\\x04غج\\x04غم\\x04فج\\x04فح\\x04فخ\\x04فم\" +\n\t\"\\x04فى\\x04في\\x04قح\\x04قم\\x04قى\\x04قي\\x04كا\\x04كج\\x04كح\\x04كخ\\x04كل\\x04كم\" +\n\t\"\\x04كى\\x04كي\\x04لج\\x04لح\\x04لخ\\x04لم\\x04لى\\x04لي\\x04مج\\x04مح\\x04مخ\\x04مم\" +\n\t\"\\x04مى\\x04مي\\x04نج\\x04نح\\x04نخ\\x04نم\\x04نى\\x04ني\\x04هج\\x04هم\\x04هى\\x04هي\" +\n\t\"\\x04يج\\x04يح\\x04يخ\\x04يم\\x04يى\\x04يي\\x04ذٰ\\x04رٰ\\x04ىٰ\\x05 ٌّ\\x05 ٍّ\\x05\" +\n\t\" َّ\\x05 ُّ\\x05 ِّ\\x05 ّٰ\\x04ئر\\x04ئز\\x04ئن\\x04بر\\x04بز\\x04بن\\x04تر\\x04تز\" +\n\t\"\\x04تن\\x04ثر\\x04ثز\\x04ثن\\x04ما\\x04نر\\x04نز\\x04نن\\x04ير\\x04يز\\x04ين\\x04ئخ\" +\n\t\"\\x04ئه\\x04به\\x04ته\\x04صخ\\x04له\\x04نه\\x04هٰ\\x04يه\\x04ثه\\x04سه\\x04شم\\x04شه\" +\n\t\"\\x06ـَّ\\x06ـُّ\\x06ـِّ\\x04طى\\x04طي\\x04عى\\x04عي\\x04غى\\x04غي\\x04سى\\x04سي\" +\n\t\"\\x04شى\\x04شي\\x04حى\\x04حي\\x04جى\\x04جي\\x04خى\\x04خي\\x04صى\\x04صي\\x04ضى\\x04ضي\" +\n\t\"\\x04شج\\x04شح\\x04شخ\\x04شر\\x04سر\\x04صر\\x04ضر\\x04اً\\x06تجم\\x06تحج\\x06تحم\" +\n\t\"\\x06تخم\\x06تمج\\x06تمح\\x06تمخ\\x06جمح\\x06حمي\\x06حمى\\x06سحج\\x06سجح\\x06سجى\" +\n\t\"\\x06سمح\\x06سمج\\x06سمم\\x06صحح\\x06صمم\\x06شحم\\x06شجي\\x06شمخ\\x06شمم\\x06ضحى\" +\n\t\"\\x06ضخم\\x06طمح\\x06طمم\\x06طمي\\x06عجم\\x06عمم\\x06عمى\\x06غمم\\x06غمي\\x06غمى\" +\n\t\"\\x06فخم\\x06قمح\\x06قمم\\x06لحم\\x06لحي\\x06لحى\\x06لجج\\x06لخم\\x06لمح\\x06محج\" +\n\t\"\\x06محم\\x06محي\\x06مجح\\x06مجم\\x06مخج\\x06مخم\\x06مجخ\\x06همج\\x06همم\\x06نحم\" +\n\t\"\\x06نحى\\x06نجم\\x06نجى\\x06نمي\\x06نمى\\x06يمم\\x06بخي\\x06تجي\\x06تجى\\x06تخي\" +\n\t\"\\x06تخى\\x06تمي\\x06تمى\\x06جمي\\x06جحى\\x06جمى\\x06سخى\\x06صحي\\x06شحي\\x06ضحي\" +\n\t\"\\x06لجي\\x06لمي\\x06يحي\\x06يجي\\x06يمي\\x06ممي\\x06قمي\\x06نحي\\x06عمي\\x06كمي\" +\n\t\"\\x06نجح\\x06مخي\\x06لجم\\x06كمم\\x06جحي\\x06حجي\\x06مجي\\x06فمي\\x06بحي\\x06سخي\" +\n\t\"\\x06نجي\\x06صلے\\x06قلے\\x08الله\\x08اكبر\\x08محمد\\x08صلعم\\x08رسول\\x08عليه\" +\n\t\"\\x08وسلم\\x06صلى!صلى الله عليه وسلم\\x0fجل جلاله\\x08ریال\\x01,\\x01:\\x01!\" +\n\t\"\\x01?\\x01_\\x01{\\x01}\\x01[\\x01]\\x01#\\x01&\\x01*\\x01-\\x01<\\x01>\\x01\\\\\\x01$\" +\n\t\"\\x01%\\x01@\\x04ـً\\x04ـَ\\x04ـُ\\x04ـِ\\x04ـّ\\x04ـْ\\x02ء\\x02آ\\x02أ\\x02ؤ\\x02إ\" +\n\t\"\\x02ئ\\x02ا\\x02ب\\x02ة\\x02ت\\x02ث\\x02ج\\x02ح\\x02خ\\x02د\\x02ذ\\x02ر\\x02ز\\x02س\" +\n\t\"\\x02ش\\x02ص\\x02ض\\x02ط\\x02ظ\\x02ع\\x02غ\\x02ف\\x02ق\\x02ك\\x02ل\\x02م\\x02ن\\x02ه\" +\n\t\"\\x02و\\x02ي\\x04لآ\\x04لأ\\x04لإ\\x04لا\\x01\\x22\\x01'\\x01/\\x01^\\x01|\\x01~\\x02¢\" +\n\t\"\\x02£\\x02¬\\x02¦\\x02¥\\x08𝅗𝅥\\x08𝅘𝅥\\x0c𝅘𝅥𝅮\\x0c𝅘𝅥𝅯\\x0c𝅘𝅥𝅰\\x0c𝅘𝅥𝅱\\x0c𝅘𝅥𝅲\\x08𝆹\" +\n\t\"𝅥\\x08𝆺𝅥\\x0c𝆹𝅥𝅮\\x0c𝆺𝅥𝅮\\x0c𝆹𝅥𝅯\\x0c𝆺𝅥𝅯\\x02ı\\x02ȷ\\x02α\\x02ε\\x02ζ\\x02η\\x02\" +\n\t\"κ\\x02λ\\x02μ\\x02ν\\x02ξ\\x02ο\\x02σ\\x02τ\\x02υ\\x02ψ\\x03∇\\x03∂\\x02ϝ\\x02ٮ\\x02ڡ\" +\n\t\"\\x02ٯ\\x020,\\x021,\\x022,\\x023,\\x024,\\x025,\\x026,\\x027,\\x028,\\x029,\\x03(a)\" +\n\t\"\\x03(b)\\x03(c)\\x03(d)\\x03(e)\\x03(f)\\x03(g)\\x03(h)\\x03(i)\\x03(j)\\x03(k)\" +\n\t\"\\x03(l)\\x03(m)\\x03(n)\\x03(o)\\x03(p)\\x03(q)\\x03(r)\\x03(s)\\x03(t)\\x03(u)\" +\n\t\"\\x03(v)\\x03(w)\\x03(x)\\x03(y)\\x03(z)\\x07〔s〕\\x02wz\\x02hv\\x02sd\\x03ppv\\x02w\" +\n\t\"c\\x02mc\\x02md\\x02mr\\x02dj\\x06ほか\\x06ココ\\x03サ\\x03手\\x03字\\x03双\\x03デ\\x03二\\x03多\" +\n\t\"\\x03解\\x03天\\x03交\\x03映\\x03無\\x03料\\x03前\\x03後\\x03再\\x03新\\x03初\\x03終\\x03生\\x03販\" +\n\t\"\\x03声\\x03吹\\x03演\\x03投\\x03捕\\x03一\\x03三\\x03遊\\x03左\\x03中\\x03右\\x03指\\x03走\\x03打\" +\n\t\"\\x03禁\\x03空\\x03合\\x03満\\x03有\\x03月\\x03申\\x03割\\x03営\\x03配\\x09〔本〕\\x09〔三〕\\x09〔二〕\" +\n\t\"\\x09〔安〕\\x09〔点〕\\x09〔打〕\\x09〔盗〕\\x09〔勝〕\\x09〔敗〕\\x03得\\x03可\\x03丽\\x03丸\\x03乁\\x03你\" +\n\t\"\\x03侮\\x03侻\\x03倂\\x03偺\\x03備\\x03僧\\x03像\\x03㒞\\x03免\\x03兔\\x03兤\\x03具\\x03㒹\\x03內\" +\n\t\"\\x03冗\\x03冤\\x03仌\\x03冬\\x03况\\x03凵\\x03刃\\x03㓟\\x03刻\\x03剆\\x03剷\\x03㔕\\x03勇\\x03勉\" +\n\t\"\\x03勤\\x03勺\\x03包\\x03匆\\x03北\\x03卉\\x03卑\\x03博\\x03即\\x03卽\\x03卿\\x03灰\\x03及\\x03叟\" +\n\t\"\\x03叫\\x03叱\\x03吆\\x03咞\\x03吸\\x03呈\\x03周\\x03咢\\x03哶\\x03唐\\x03啓\\x03啣\\x03善\\x03喙\" +\n\t\"\\x03喫\\x03喳\\x03嗂\\x03圖\\x03嘆\\x03圗\\x03噑\\x03噴\\x03切\\x03壮\\x03城\\x03埴\\x03堍\\x03型\" +\n\t\"\\x03堲\\x03報\\x03墬\\x03売\\x03壷\\x03夆\\x03夢\\x03奢\\x03姬\\x03娛\\x03娧\\x03姘\\x03婦\\x03㛮\" +\n\t\"\\x03嬈\\x03嬾\\x03寃\\x03寘\\x03寧\\x03寳\\x03寿\\x03将\\x03尢\\x03㞁\\x03屠\\x03屮\\x03峀\\x03岍\" +\n\t\"\\x03嵃\\x03嵮\\x03嵫\\x03嵼\\x03巡\\x03巢\\x03㠯\\x03巽\\x03帨\\x03帽\\x03幩\\x03㡢\\x03㡼\\x03庰\" +\n\t\"\\x03庳\\x03庶\\x03廊\\x03廾\\x03舁\\x03弢\\x03㣇\\x03形\\x03彫\\x03㣣\\x03徚\\x03忍\\x03志\\x03忹\" +\n\t\"\\x03悁\\x03㤺\\x03㤜\\x03悔\\x03惇\\x03慈\\x03慌\\x03慎\\x03慺\\x03憎\\x03憲\\x03憤\\x03憯\\x03懞\" +\n\t\"\\x03懲\\x03懶\\x03成\\x03戛\\x03扝\\x03抱\\x03拔\\x03捐\\x03挽\\x03拼\\x03捨\\x03掃\\x03揤\\x03搢\" +\n\t\"\\x03揅\\x03掩\\x03㨮\\x03摩\\x03摾\\x03撝\\x03摷\\x03㩬\\x03敏\\x03敬\\x03旣\\x03書\\x03晉\\x03㬙\" +\n\t\"\\x03暑\\x03㬈\\x03㫤\\x03冒\\x03冕\\x03最\\x03暜\\x03肭\\x03䏙\\x03朗\\x03望\\x03朡\\x03杞\\x03杓\" +\n\t\"\\x03㭉\\x03柺\\x03枅\\x03桒\\x03梅\\x03梎\\x03栟\\x03椔\\x03㮝\\x03楂\\x03榣\\x03槪\\x03檨\\x03櫛\" +\n\t\"\\x03㰘\\x03次\\x03歔\\x03㱎\\x03歲\\x03殟\\x03殺\\x03殻\\x03汎\\x03沿\\x03泍\\x03汧\\x03洖\\x03派\" +\n\t\"\\x03海\\x03流\\x03浩\\x03浸\\x03涅\\x03洴\\x03港\\x03湮\\x03㴳\\x03滋\\x03滇\\x03淹\\x03潮\\x03濆\" +\n\t\"\\x03瀹\\x03瀞\\x03瀛\\x03㶖\\x03灊\\x03災\\x03灷\\x03炭\\x03煅\\x03熜\\x03爨\\x03爵\\x03牐\\x03犀\" +\n\t\"\\x03犕\\x03獺\\x03王\\x03㺬\\x03玥\\x03㺸\\x03瑇\\x03瑜\\x03瑱\\x03璅\\x03瓊\\x03㼛\\x03甤\\x03甾\" +\n\t\"\\x03異\\x03瘐\\x03㿼\\x03䀈\\x03直\\x03眞\\x03真\\x03睊\\x03䀹\\x03瞋\\x03䁆\\x03䂖\\x03硎\\x03碌\" +\n\t\"\\x03磌\\x03䃣\\x03祖\\x03福\\x03秫\\x03䄯\\x03穀\\x03穊\\x03穏\\x03䈂\\x03篆\\x03築\\x03䈧\\x03糒\" +\n\t\"\\x03䊠\\x03糨\\x03糣\\x03紀\\x03絣\\x03䌁\\x03緇\\x03縂\\x03繅\\x03䌴\\x03䍙\\x03罺\\x03羕\\x03翺\" +\n\t\"\\x03者\\x03聠\\x03聰\\x03䏕\\x03育\\x03脃\\x03䐋\\x03脾\\x03媵\\x03舄\\x03辞\\x03䑫\\x03芑\\x03芋\" +\n\t\"\\x03芝\\x03劳\\x03花\\x03芳\\x03芽\\x03苦\\x03若\\x03茝\\x03荣\\x03莭\\x03茣\\x03莽\\x03菧\\x03著\" +\n\t\"\\x03荓\\x03菊\\x03菌\\x03菜\\x03䔫\\x03蓱\\x03蓳\\x03蔖\\x03蕤\\x03䕝\\x03䕡\\x03䕫\\x03虐\\x03虜\" +\n\t\"\\x03虧\\x03虩\\x03蚩\\x03蚈\\x03蜎\\x03蛢\\x03蝹\\x03蜨\\x03蝫\\x03螆\\x03蟡\\x03蠁\\x03䗹\\x03衠\" +\n\t\"\\x03衣\\x03裗\\x03裞\\x03䘵\\x03裺\\x03㒻\\x03䚾\\x03䛇\\x03誠\\x03諭\\x03變\\x03豕\\x03貫\\x03賁\" +\n\t\"\\x03贛\\x03起\\x03跋\\x03趼\\x03跰\\x03軔\\x03輸\\x03邔\\x03郱\\x03鄑\\x03鄛\\x03鈸\\x03鋗\\x03鋘\" +\n\t\"\\x03鉼\\x03鏹\\x03鐕\\x03開\\x03䦕\\x03閷\\x03䧦\\x03雃\\x03嶲\\x03霣\\x03䩮\\x03䩶\\x03韠\\x03䪲\" +\n\t\"\\x03頋\\x03頩\\x03飢\\x03䬳\\x03餩\\x03馧\\x03駂\\x03駾\\x03䯎\\x03鬒\\x03鱀\\x03鳽\\x03䳎\\x03䳭\" +\n\t\"\\x03鵧\\x03䳸\\x03麻\\x03䵖\\x03黹\\x03黾\\x03鼅\\x03鼏\\x03鼖\\x03鼻\"\n\nvar xorData string = \"\" + // Size: 4862 bytes\n\t\"\\x02\\x0c\\x09\\x02\\xb0\\xec\\x02\\xad\\xd8\\x02\\xad\\xd9\\x02\\x06\\x07\\x02\\x0f\\x12\" +\n\t\"\\x02\\x0f\\x1f\\x02\\x0f\\x1d\\x02\\x01\\x13\\x02\\x0f\\x16\\x02\\x0f\\x0b\\x02\\x0f3\" +\n\t\"\\x02\\x0f7\\x02\\x0f?\\x02\\x0f/\\x02\\x0f*\\x02\\x0c&\\x02\\x0c*\\x02\\x0c;\\x02\\x0c9\" +\n\t\"\\x02\\x0c%\\x02\\xab\\xed\\x02\\xab\\xe2\\x02\\xab\\xe3\\x02\\xa9\\xe0\\x02\\xa9\\xe1\" +\n\t\"\\x02\\xa9\\xe6\\x02\\xa3\\xcb\\x02\\xa3\\xc8\\x02\\xa3\\xc9\\x02\\x01#\\x02\\x01\\x08\" +\n\t\"\\x02\\x0e>\\x02\\x0e'\\x02\\x0f\\x03\\x02\\x03\\x0d\\x02\\x03\\x09\\x02\\x03\\x17\\x02\" +\n\t\"\\x03\\x0e\\x02\\x02\\x03\\x02\\x011\\x02\\x01\\x00\\x02\\x01\\x10\\x02\\x03<\\x02\\x07\" +\n\t\"\\x0d\\x02\\x02\\x0c\\x02\\x0c0\\x02\\x01\\x03\\x02\\x01\\x01\\x02\\x01 \\x02\\x01\\x22\" +\n\t\"\\x02\\x01)\\x02\\x01\\x0a\\x02\\x01\\x0c\\x02\\x02\\x06\\x02\\x02\\x02\\x02\\x03\\x10\" +\n\t\"\\x03\\x037 \\x03\\x0b+\\x03\\x021\\x00\\x02\\x01\\x04\\x02\\x01\\x02\\x02\\x019\\x02\" +\n\t\"\\x03\\x1c\\x02\\x02$\\x03\\x80p$\\x02\\x03:\\x02\\x03\\x0a\\x03\\xc1r.\\x03\\xc1r,\\x03\" +\n\t\"\\xc1r\\x02\\x02\\x02:\\x02\\x02>\\x02\\x02,\\x02\\x02\\x10\\x02\\x02\\x00\\x03\\xc1s<\" +\n\t\"\\x03\\xc1s*\\x03\\xc2L$\\x03\\xc2L;\\x02\\x09)\\x02\\x0a\\x19\\x03\\x83\\xab\\xe3\\x03\" +\n\t\"\\x83\\xab\\xf2\\x03 4\\xe0\\x03\\x81\\xab\\xea\\x03\\x81\\xab\\xf3\\x03 4\\xef\\x03\\x96\" +\n\t\"\\xe1\\xcd\\x03\\x84\\xe5\\xc3\\x02\\x0d\\x11\\x03\\x8b\\xec\\xcb\\x03\\x94\\xec\\xcf\\x03\" +\n\t\"\\x9a\\xec\\xc2\\x03\\x8b\\xec\\xdb\\x03\\x94\\xec\\xdf\\x03\\x9a\\xec\\xd2\\x03\\x01\\x0c\" +\n\t\"!\\x03\\x01\\x0c#\\x03ʠ\\x9d\\x03ʣ\\x9c\\x03ʢ\\x9f\\x03ʥ\\x9e\\x03ʤ\\x91\\x03ʧ\\x90\\x03\" +\n\t\"ʦ\\x93\\x03ʩ\\x92\\x03ʨ\\x95\\x03\\xca\\xf3\\xb5\\x03\\xca\\xf0\\xb4\\x03\\xca\\xf1\\xb7\" +\n\t\"\\x03\\xca\\xf6\\xb6\\x03\\xca\\xf7\\x89\\x03\\xca\\xf4\\x88\\x03\\xca\\xf5\\x8b\\x03\\xca\" +\n\t\"\\xfa\\x8a\\x03\\xca\\xfb\\x8d\\x03\\xca\\xf8\\x8c\\x03\\xca\\xf9\\x8f\\x03\\xca\\xfe\\x8e\" +\n\t\"\\x03\\xca\\xff\\x81\\x03\\xca\\xfc\\x80\\x03\\xca\\xfd\\x83\\x03\\xca\\xe2\\x82\\x03\\xca\" +\n\t\"\\xe3\\x85\\x03\\xca\\xe0\\x84\\x03\\xca\\xe1\\x87\\x03\\xca\\xe6\\x86\\x03\\xca\\xe7\\x99\" +\n\t\"\\x03\\xca\\xe4\\x98\\x03\\xca\\xe5\\x9b\\x03\\xca\\xea\\x9a\\x03\\xca\\xeb\\x9d\\x03\\xca\" +\n\t\"\\xe8\\x9c\\x03ؓ\\x89\\x03ߔ\\x8b\\x02\\x010\\x03\\x03\\x04\\x1e\\x03\\x04\\x15\\x12\\x03\" +\n\t\"\\x0b\\x05,\\x03\\x06\\x04\\x00\\x03\\x06\\x04)\\x03\\x06\\x044\\x03\\x06\\x04<\\x03\\x06\" +\n\t\"\\x05\\x1d\\x03\\x06\\x06\\x00\\x03\\x06\\x06\\x0a\\x03\\x06\\x06'\\x03\\x06\\x062\\x03\" +\n\t\"\\x0786\\x03\\x079/\\x03\\x079 \\x03\\x07:\\x0e\\x03\\x07:\\x1b\\x03\\x07:%\\x03\\x07;/\" +\n\t\"\\x03\\x07;%\\x03\\x074\\x11\\x03\\x076\\x09\\x03\\x077*\\x03\\x070\\x01\\x03\\x070\\x0f\" +\n\t\"\\x03\\x070.\\x03\\x071\\x16\\x03\\x071\\x04\\x03\\x0710\\x03\\x072\\x18\\x03\\x072-\" +\n\t\"\\x03\\x073\\x14\\x03\\x073>\\x03\\x07'\\x09\\x03\\x07 \\x00\\x03\\x07\\x1f\\x0b\\x03\" +\n\t\"\\x07\\x18#\\x03\\x07\\x18(\\x03\\x07\\x186\\x03\\x07\\x18\\x03\\x03\\x07\\x19\\x16\\x03\" +\n\t\"\\x07\\x116\\x03\\x07\\x12'\\x03\\x07\\x13\\x10\\x03\\x07\\x0c&\\x03\\x07\\x0c\\x08\\x03\" +\n\t\"\\x07\\x0c\\x13\\x03\\x07\\x0d\\x02\\x03\\x07\\x0d\\x1c\\x03\\x07\\x0b5\\x03\\x07\\x0b\" +\n\t\"\\x0a\\x03\\x07\\x0b\\x01\\x03\\x07\\x0b\\x0f\\x03\\x07\\x05\\x00\\x03\\x07\\x05\\x09\\x03\" +\n\t\"\\x07\\x05\\x0b\\x03\\x07\\x07\\x01\\x03\\x07\\x07\\x08\\x03\\x07\\x00<\\x03\\x07\\x00+\" +\n\t\"\\x03\\x07\\x01)\\x03\\x07\\x01\\x1b\\x03\\x07\\x01\\x08\\x03\\x07\\x03?\\x03\\x0445\\x03\" +\n\t\"\\x044\\x08\\x03\\x0454\\x03\\x04)/\\x03\\x04)5\\x03\\x04+\\x05\\x03\\x04+\\x14\\x03\" +\n\t\"\\x04+ \\x03\\x04+<\\x03\\x04*&\\x03\\x04*\\x22\\x03\\x04&8\\x03\\x04!\\x01\\x03\\x04!\" +\n\t\"\\x22\\x03\\x04\\x11+\\x03\\x04\\x10.\\x03\\x04\\x104\\x03\\x04\\x13=\\x03\\x04\\x12\\x04\" +\n\t\"\\x03\\x04\\x12\\x0a\\x03\\x04\\x0d\\x1d\\x03\\x04\\x0d\\x07\\x03\\x04\\x0d \\x03\\x05<>\" +\n\t\"\\x03\\x055<\\x03\\x055!\\x03\\x055#\\x03\\x055&\\x03\\x054\\x1d\\x03\\x054\\x02\\x03\" +\n\t\"\\x054\\x07\\x03\\x0571\\x03\\x053\\x1a\\x03\\x053\\x16\\x03\\x05.<\\x03\\x05.\\x07\\x03\" +\n\t\"\\x05):\\x03\\x05)<\\x03\\x05)\\x0c\\x03\\x05)\\x15\\x03\\x05+-\\x03\\x05+5\\x03\\x05$\" +\n\t\"\\x1e\\x03\\x05$\\x14\\x03\\x05'\\x04\\x03\\x05'\\x14\\x03\\x05&\\x02\\x03\\x05\\x226\" +\n\t\"\\x03\\x05\\x22\\x0c\\x03\\x05\\x22\\x1c\\x03\\x05\\x19\\x0a\\x03\\x05\\x1b\\x09\\x03\\x05\" +\n\t\"\\x1b\\x0c\\x03\\x05\\x14\\x07\\x03\\x05\\x16?\\x03\\x05\\x16\\x0c\\x03\\x05\\x0c\\x05\" +\n\t\"\\x03\\x05\\x0e\\x0f\\x03\\x05\\x01\\x0e\\x03\\x05\\x00(\\x03\\x05\\x030\\x03\\x05\\x03\" +\n\t\"\\x06\\x03\\x0a==\\x03\\x0a=1\\x03\\x0a=,\\x03\\x0a=\\x0c\\x03\\x0a??\\x03\\x0a<\\x08\" +\n\t\"\\x03\\x0a9!\\x03\\x0a9)\\x03\\x0a97\\x03\\x0a99\\x03\\x0a6\\x0a\\x03\\x0a6\\x1c\\x03\" +\n\t\"\\x0a6\\x17\\x03\\x0a7'\\x03\\x0a78\\x03\\x0a73\\x03\\x0a'\\x01\\x03\\x0a'&\\x03\\x0a\" +\n\t\"\\x1f\\x0e\\x03\\x0a\\x1f\\x03\\x03\\x0a\\x1f3\\x03\\x0a\\x1b/\\x03\\x0a\\x18\\x19\\x03\" +\n\t\"\\x0a\\x19\\x01\\x03\\x0a\\x16\\x14\\x03\\x0a\\x0e\\x22\\x03\\x0a\\x0f\\x10\\x03\\x0a\\x0f\" +\n\t\"\\x02\\x03\\x0a\\x0f \\x03\\x0a\\x0c\\x04\\x03\\x0a\\x0b>\\x03\\x0a\\x0b+\\x03\\x0a\\x08/\" +\n\t\"\\x03\\x0a\\x046\\x03\\x0a\\x05\\x14\\x03\\x0a\\x00\\x04\\x03\\x0a\\x00\\x10\\x03\\x0a\" +\n\t\"\\x00\\x14\\x03\\x0b<3\\x03\\x0b;*\\x03\\x0b9\\x22\\x03\\x0b9)\\x03\\x0b97\\x03\\x0b+\" +\n\t\"\\x10\\x03\\x0b((\\x03\\x0b&5\\x03\\x0b$\\x1c\\x03\\x0b$\\x12\\x03\\x0b%\\x04\\x03\\x0b#\" +\n\t\"<\\x03\\x0b#0\\x03\\x0b#\\x0d\\x03\\x0b#\\x19\\x03\\x0b!:\\x03\\x0b!\\x1f\\x03\\x0b!\" +\n\t\"\\x00\\x03\\x0b\\x1e5\\x03\\x0b\\x1c\\x1d\\x03\\x0b\\x1d-\\x03\\x0b\\x1d(\\x03\\x0b\\x18.\" +\n\t\"\\x03\\x0b\\x18 \\x03\\x0b\\x18\\x16\\x03\\x0b\\x14\\x13\\x03\\x0b\\x15$\\x03\\x0b\\x15\" +\n\t\"\\x22\\x03\\x0b\\x12\\x1b\\x03\\x0b\\x12\\x10\\x03\\x0b\\x132\\x03\\x0b\\x13=\\x03\\x0b\" +\n\t\"\\x12\\x18\\x03\\x0b\\x0c&\\x03\\x0b\\x061\\x03\\x0b\\x06:\\x03\\x0b\\x05#\\x03\\x0b\\x05\" +\n\t\"<\\x03\\x0b\\x04\\x0b\\x03\\x0b\\x04\\x04\\x03\\x0b\\x04\\x1b\\x03\\x0b\\x042\\x03\\x0b\" +\n\t\"\\x041\\x03\\x0b\\x03\\x03\\x03\\x0b\\x03\\x1d\\x03\\x0b\\x03/\\x03\\x0b\\x03+\\x03\\x0b\" +\n\t\"\\x02\\x1b\\x03\\x0b\\x02\\x00\\x03\\x0b\\x01\\x1e\\x03\\x0b\\x01\\x08\\x03\\x0b\\x015\" +\n\t\"\\x03\\x06\\x0d9\\x03\\x06\\x0d=\\x03\\x06\\x0d?\\x03\\x02\\x001\\x03\\x02\\x003\\x03\" +\n\t\"\\x02\\x02\\x19\\x03\\x02\\x006\\x03\\x02\\x02\\x1b\\x03\\x02\\x004\\x03\\x02\\x00<\\x03\" +\n\t\"\\x02\\x02\\x0a\\x03\\x02\\x02\\x0e\\x03\\x02\\x01\\x1a\\x03\\x02\\x01\\x07\\x03\\x02\\x01\" +\n\t\"\\x05\\x03\\x02\\x01\\x0b\\x03\\x02\\x01%\\x03\\x02\\x01\\x0c\\x03\\x02\\x01\\x04\\x03\" +\n\t\"\\x02\\x01\\x1c\\x03\\x02\\x00.\\x03\\x02\\x002\\x03\\x02\\x00>\\x03\\x02\\x00\\x12\\x03\" +\n\t\"\\x02\\x00\\x16\\x03\\x02\\x011\\x03\\x02\\x013\\x03\\x02\\x02 \\x03\\x02\\x02%\\x03\\x02\" +\n\t\"\\x02$\\x03\\x02\\x028\\x03\\x02\\x02;\\x03\\x02\\x024\\x03\\x02\\x012\\x03\\x02\\x022\" +\n\t\"\\x03\\x02\\x02/\\x03\\x02\\x01,\\x03\\x02\\x01\\x13\\x03\\x02\\x01\\x16\\x03\\x02\\x01\" +\n\t\"\\x11\\x03\\x02\\x01\\x1e\\x03\\x02\\x01\\x15\\x03\\x02\\x01\\x17\\x03\\x02\\x01\\x0f\\x03\" +\n\t\"\\x02\\x01\\x08\\x03\\x02\\x00?\\x03\\x02\\x03\\x07\\x03\\x02\\x03\\x0d\\x03\\x02\\x03\" +\n\t\"\\x13\\x03\\x02\\x03\\x1d\\x03\\x02\\x03\\x1f\\x03\\x02\\x00\\x03\\x03\\x02\\x00\\x0d\\x03\" +\n\t\"\\x02\\x00\\x01\\x03\\x02\\x00\\x1b\\x03\\x02\\x00\\x19\\x03\\x02\\x00\\x18\\x03\\x02\\x00\" +\n\t\"\\x13\\x03\\x02\\x00/\\x03\\x07>\\x12\\x03\\x07<\\x1f\\x03\\x07>\\x1d\\x03\\x06\\x1d\\x0e\" +\n\t\"\\x03\\x07>\\x1c\\x03\\x07>:\\x03\\x07>\\x13\\x03\\x04\\x12+\\x03\\x07?\\x03\\x03\\x07>\" +\n\t\"\\x02\\x03\\x06\\x224\\x03\\x06\\x1a.\\x03\\x07<%\\x03\\x06\\x1c\\x0b\\x03\\x0609\\x03\" +\n\t\"\\x05\\x1f\\x01\\x03\\x04'\\x08\\x03\\x93\\xfd\\xf5\\x03\\x02\\x0d \\x03\\x02\\x0d#\\x03\" +\n\t\"\\x02\\x0d!\\x03\\x02\\x0d&\\x03\\x02\\x0d\\x22\\x03\\x02\\x0d/\\x03\\x02\\x0d,\\x03\\x02\" +\n\t\"\\x0d$\\x03\\x02\\x0d'\\x03\\x02\\x0d%\\x03\\x02\\x0d;\\x03\\x02\\x0d=\\x03\\x02\\x0d?\" +\n\t\"\\x03\\x099.\\x03\\x08\\x0b7\\x03\\x08\\x02\\x14\\x03\\x08\\x14\\x0d\\x03\\x08.:\\x03\" +\n\t\"\\x089'\\x03\\x0f\\x0b\\x18\\x03\\x0f\\x1c1\\x03\\x0f\\x17&\\x03\\x0f9\\x1f\\x03\\x0f0\" +\n\t\"\\x0c\\x03\\x0e\\x0a9\\x03\\x0e\\x056\\x03\\x0e\\x1c#\\x03\\x0f\\x13\\x0e\\x03\\x072\\x00\" +\n\t\"\\x03\\x070\\x0d\\x03\\x072\\x0b\\x03\\x06\\x11\\x18\\x03\\x070\\x10\\x03\\x06\\x0f(\\x03\" +\n\t\"\\x072\\x05\\x03\\x06\\x0f,\\x03\\x073\\x15\\x03\\x06\\x07\\x08\\x03\\x05\\x16\\x02\\x03\" +\n\t\"\\x04\\x0b \\x03\\x05:8\\x03\\x05\\x16%\\x03\\x0a\\x0d\\x1f\\x03\\x06\\x16\\x10\\x03\\x05\" +\n\t\"\\x1d5\\x03\\x05*;\\x03\\x05\\x16\\x1b\\x03\\x04.-\\x03\\x06\\x1a\\x19\\x03\\x04\\x03,\" +\n\t\"\\x03\\x0b87\\x03\\x04/\\x0a\\x03\\x06\\x00,\\x03\\x04-\\x01\\x03\\x04\\x1e-\\x03\\x06/(\" +\n\t\"\\x03\\x0a\\x0b5\\x03\\x06\\x0e7\\x03\\x06\\x07.\\x03\\x0597\\x03\\x0a*%\\x03\\x0760\" +\n\t\"\\x03\\x06\\x0c;\\x03\\x05'\\x00\\x03\\x072.\\x03\\x072\\x08\\x03\\x06=\\x01\\x03\\x06\" +\n\t\"\\x05\\x1b\\x03\\x06\\x06\\x12\\x03\\x06$=\\x03\\x06'\\x0d\\x03\\x04\\x11\\x0f\\x03\\x076\" +\n\t\",\\x03\\x06\\x07;\\x03\\x06.,\\x03\\x86\\xf9\\xea\\x03\\x8f\\xff\\xeb\\x02\\x092\\x02\" +\n\t\"\\x095\\x02\\x094\\x02\\x09;\\x02\\x09>\\x02\\x098\\x02\\x09*\\x02\\x09/\\x02\\x09,\\x02\" +\n\t\"\\x09%\\x02\\x09&\\x02\\x09#\\x02\\x09 \\x02\\x08!\\x02\\x08%\\x02\\x08$\\x02\\x08+\\x02\" +\n\t\"\\x08.\\x02\\x08*\\x02\\x08&\\x02\\x088\\x02\\x08>\\x02\\x084\\x02\\x086\\x02\\x080\\x02\" +\n\t\"\\x08\\x10\\x02\\x08\\x17\\x02\\x08\\x12\\x02\\x08\\x1d\\x02\\x08\\x1f\\x02\\x08\\x13\\x02\" +\n\t\"\\x08\\x15\\x02\\x08\\x14\\x02\\x08\\x0c\\x03\\x8b\\xfd\\xd0\\x03\\x81\\xec\\xc6\\x03\\x87\" +\n\t\"\\xe0\\x8a\\x03-2\\xe3\\x03\\x80\\xef\\xe4\\x03-2\\xea\\x03\\x88\\xe6\\xeb\\x03\\x8e\\xe6\" +\n\t\"\\xe8\\x03\\x84\\xe6\\xe9\\x03\\x97\\xe6\\xee\\x03-2\\xf9\\x03-2\\xf6\\x03\\x8e\\xe3\\xad\" +\n\t\"\\x03\\x80\\xe3\\x92\\x03\\x88\\xe3\\x90\\x03\\x8e\\xe3\\x90\\x03\\x80\\xe3\\x97\\x03\\x88\" +\n\t\"\\xe3\\x95\\x03\\x88\\xfe\\xcb\\x03\\x8e\\xfe\\xca\\x03\\x84\\xfe\\xcd\\x03\\x91\\xef\\xc9\" +\n\t\"\\x03-2\\xc1\\x03-2\\xc0\\x03-2\\xcb\\x03\\x88@\\x09\\x03\\x8e@\\x08\\x03\\x8f\\xe0\\xf5\" +\n\t\"\\x03\\x8e\\xe6\\xf9\\x03\\x8e\\xe0\\xfa\\x03\\x93\\xff\\xf4\\x03\\x84\\xee\\xd3\\x03\\x0b\" +\n\t\"(\\x04\\x023 \\x03\\x0b)\\x08\\x021;\\x02\\x01*\\x03\\x0b#\\x10\\x03\\x0b 0\\x03\\x0b!\" +\n\t\"\\x10\\x03\\x0b!0\\x03\\x07\\x15\\x08\\x03\\x09?5\\x03\\x07\\x1f\\x08\\x03\\x07\\x17\\x0b\" +\n\t\"\\x03\\x09\\x1f\\x15\\x03\\x0b\\x1c7\\x03\\x0a+#\\x03\\x06\\x1a\\x1b\\x03\\x06\\x1a\\x14\" +\n\t\"\\x03\\x0a\\x01\\x18\\x03\\x06#\\x1b\\x03\\x0a2\\x0c\\x03\\x0a\\x01\\x04\\x03\\x09#;\\x03\" +\n\t\"\\x08='\\x03\\x08\\x1a\\x0a\\x03\\x07</\\x03\\x07:+\\x03\\x07\\x07*\\x03\\x06&\\x1c\\x03\" +\n\t\"\\x09\\x0c\\x16\\x03\\x09\\x10\\x0e\\x03\\x08'\\x0f\\x03\\x08+\\x09\\x03\\x074%\\x03\\x06\" +\n\t\"!3\\x03\\x06\\x03+\\x03\\x0b\\x1e\\x19\\x03\\x0a))\\x03\\x09\\x08\\x19\\x03\\x08,\\x05\" +\n\t\"\\x03\\x07<2\\x03\\x06\\x1c>\\x03\\x0a\\x111\\x03\\x09\\x1b\\x09\\x03\\x073.\\x03\\x07\" +\n\t\"\\x01\\x00\\x03\\x09/,\\x03\\x07#>\\x03\\x07\\x048\\x03\\x0a\\x1f\\x22\\x03\\x098>\\x03\" +\n\t\"\\x09\\x11\\x00\\x03\\x08/\\x17\\x03\\x06'\\x22\\x03\\x0b\\x1a+\\x03\\x0a\\x22\\x19\\x03\" +\n\t\"\\x0a/1\\x03\\x0974\\x03\\x09\\x0f\\x22\\x03\\x08,\\x22\\x03\\x08?\\x14\\x03\\x07$5\\x03\" +\n\t\"\\x07<3\\x03\\x07=*\\x03\\x07\\x13\\x18\\x03\\x068\\x0a\\x03\\x06\\x09\\x16\\x03\\x06\" +\n\t\"\\x13\\x00\\x03\\x08\\x067\\x03\\x08\\x01\\x03\\x03\\x08\\x12\\x1d\\x03\\x07+7\\x03\\x06(\" +\n\t\";\\x03\\x06\\x1c?\\x03\\x07\\x0e\\x17\\x03\\x0a\\x06\\x1d\\x03\\x0a\\x19\\x07\\x03\\x08\" +\n\t\"\\x14$\\x03\\x07$;\\x03\\x08,$\\x03\\x08\\x06\\x0d\\x03\\x07\\x16\\x0a\\x03\\x06>>\\x03\" +\n\t\"\\x0a\\x06\\x12\\x03\\x0a\\x14)\\x03\\x09\\x0d\\x1f\\x03\\x09\\x12\\x17\\x03\\x09\\x19\" +\n\t\"\\x01\\x03\\x08\\x11 \\x03\\x08\\x1d'\\x03\\x06<\\x1a\\x03\\x0a.\\x00\\x03\\x07'\\x18\" +\n\t\"\\x03\\x0a\\x22\\x08\\x03\\x08\\x0d\\x0a\\x03\\x08\\x13)\\x03\\x07*)\\x03\\x06<,\\x03\" +\n\t\"\\x07\\x0b\\x1a\\x03\\x09.\\x14\\x03\\x09\\x0d\\x1e\\x03\\x07\\x0e#\\x03\\x0b\\x1d'\\x03\" +\n\t\"\\x0a\\x0a8\\x03\\x09%2\\x03\\x08+&\\x03\\x080\\x12\\x03\\x0a)4\\x03\\x08\\x06\\x1f\\x03\" +\n\t\"\\x0b\\x1b\\x1a\\x03\\x0a\\x1b\\x0f\\x03\\x0b\\x1d*\\x03\\x09\\x16$\\x03\\x090\\x11\\x03\" +\n\t\"\\x08\\x11\\x08\\x03\\x0a*(\\x03\\x0a\\x042\\x03\\x089,\\x03\\x074'\\x03\\x07\\x0f\\x05\" +\n\t\"\\x03\\x09\\x0b\\x0a\\x03\\x07\\x1b\\x01\\x03\\x09\\x17:\\x03\\x09.\\x0d\\x03\\x07.\\x11\" +\n\t\"\\x03\\x09+\\x15\\x03\\x080\\x13\\x03\\x0b\\x1f\\x19\\x03\\x0a \\x11\\x03\\x0a\\x220\\x03\" +\n\t\"\\x09\\x07;\\x03\\x08\\x16\\x1c\\x03\\x07,\\x13\\x03\\x07\\x0e/\\x03\\x06\\x221\\x03\\x0a\" +\n\t\".\\x0a\\x03\\x0a7\\x02\\x03\\x0a\\x032\\x03\\x0a\\x1d.\\x03\\x091\\x06\\x03\\x09\\x19:\" +\n\t\"\\x03\\x08\\x02/\\x03\\x060+\\x03\\x06\\x0f-\\x03\\x06\\x1c\\x1f\\x03\\x06\\x1d\\x07\\x03\" +\n\t\"\\x0a,\\x11\\x03\\x09=\\x0d\\x03\\x09\\x0b;\\x03\\x07\\x1b/\\x03\\x0a\\x1f:\\x03\\x09 \" +\n\t\"\\x1f\\x03\\x09.\\x10\\x03\\x094\\x0b\\x03\\x09\\x1a1\\x03\\x08#\\x1a\\x03\\x084\\x1d\" +\n\t\"\\x03\\x08\\x01\\x1f\\x03\\x08\\x11\\x22\\x03\\x07'8\\x03\\x07\\x1a>\\x03\\x0757\\x03\" +\n\t\"\\x06&9\\x03\\x06+\\x11\\x03\\x0a.\\x0b\\x03\\x0a,>\\x03\\x0a4#\\x03\\x08%\\x17\\x03\" +\n\t\"\\x07\\x05\\x22\\x03\\x07\\x0c\\x0b\\x03\\x0a\\x1d+\\x03\\x0a\\x19\\x16\\x03\\x09+\\x1f\" +\n\t\"\\x03\\x09\\x08\\x0b\\x03\\x08\\x16\\x18\\x03\\x08+\\x12\\x03\\x0b\\x1d\\x0c\\x03\\x0a=\" +\n\t\"\\x10\\x03\\x0a\\x09\\x0d\\x03\\x0a\\x10\\x11\\x03\\x09&0\\x03\\x08(\\x1f\\x03\\x087\\x07\" +\n\t\"\\x03\\x08\\x185\\x03\\x07'6\\x03\\x06.\\x05\\x03\\x06=\\x04\\x03\\x06;;\\x03\\x06\\x06,\" +\n\t\"\\x03\\x0b\\x18>\\x03\\x08\\x00\\x18\\x03\\x06 \\x03\\x03\\x06<\\x00\\x03\\x09%\\x18\\x03\" +\n\t\"\\x0b\\x1c<\\x03\\x0a%!\\x03\\x0a\\x09\\x12\\x03\\x0a\\x16\\x02\\x03\\x090'\\x03\\x09\" +\n\t\"\\x0e=\\x03\\x08 \\x0e\\x03\\x08>\\x03\\x03\\x074>\\x03\\x06&?\\x03\\x06\\x19\\x09\\x03\" +\n\t\"\\x06?(\\x03\\x0a-\\x0e\\x03\\x09:3\\x03\\x098:\\x03\\x09\\x12\\x0b\\x03\\x09\\x1d\\x17\" +\n\t\"\\x03\\x087\\x05\\x03\\x082\\x14\\x03\\x08\\x06%\\x03\\x08\\x13\\x1f\\x03\\x06\\x06\\x0e\" +\n\t\"\\x03\\x0a\\x22<\\x03\\x09/<\\x03\\x06>+\\x03\\x0a'?\\x03\\x0a\\x13\\x0c\\x03\\x09\\x10<\" +\n\t\"\\x03\\x07\\x1b=\\x03\\x0a\\x19\\x13\\x03\\x09\\x22\\x1d\\x03\\x09\\x07\\x0d\\x03\\x08)\" +\n\t\"\\x1c\\x03\\x06=\\x1a\\x03\\x0a/4\\x03\\x0a7\\x11\\x03\\x0a\\x16:\\x03\\x09?3\\x03\\x09:\" +\n\t\"/\\x03\\x09\\x05\\x0a\\x03\\x09\\x14\\x06\\x03\\x087\\x22\\x03\\x080\\x07\\x03\\x08\\x1a\" +\n\t\"\\x1f\\x03\\x07\\x04(\\x03\\x07\\x04\\x09\\x03\\x06 %\\x03\\x06<\\x08\\x03\\x0a+\\x14\" +\n\t\"\\x03\\x09\\x1d\\x16\\x03\\x0a70\\x03\\x08 >\\x03\\x0857\\x03\\x070\\x0a\\x03\\x06=\\x12\" +\n\t\"\\x03\\x06\\x16%\\x03\\x06\\x1d,\\x03\\x099#\\x03\\x09\\x10>\\x03\\x07 \\x1e\\x03\\x08\" +\n\t\"\\x0c<\\x03\\x08\\x0b\\x18\\x03\\x08\\x15+\\x03\\x08,:\\x03\\x08%\\x22\\x03\\x07\\x0a$\" +\n\t\"\\x03\\x0b\\x1c=\\x03\\x07+\\x08\\x03\\x0a/\\x05\\x03\\x0a \\x07\\x03\\x0a\\x12'\\x03\" +\n\t\"\\x09#\\x11\\x03\\x08\\x1b\\x15\\x03\\x0a\\x06\\x01\\x03\\x09\\x1c\\x1b\\x03\\x0922\\x03\" +\n\t\"\\x07\\x14<\\x03\\x07\\x09\\x04\\x03\\x061\\x04\\x03\\x07\\x0e\\x01\\x03\\x0a\\x13\\x18\" +\n\t\"\\x03\\x0a-\\x0c\\x03\\x0a?\\x0d\\x03\\x0a\\x09\\x0a\\x03\\x091&\\x03\\x0a/\\x0b\\x03\" +\n\t\"\\x08$<\\x03\\x083\\x1d\\x03\\x08\\x0c$\\x03\\x08\\x0d\\x07\\x03\\x08\\x0d?\\x03\\x08\" +\n\t\"\\x0e\\x14\\x03\\x065\\x0a\\x03\\x08\\x1a#\\x03\\x08\\x16#\\x03\\x0702\\x03\\x07\\x03\" +\n\t\"\\x1a\\x03\\x06(\\x1d\\x03\\x06+\\x1b\\x03\\x06\\x0b\\x05\\x03\\x06\\x0b\\x17\\x03\\x06\" +\n\t\"\\x0c\\x04\\x03\\x06\\x1e\\x19\\x03\\x06+0\\x03\\x062\\x18\\x03\\x0b\\x16\\x1e\\x03\\x0a+\" +\n\t\"\\x16\\x03\\x0a-?\\x03\\x0a#:\\x03\\x0a#\\x10\\x03\\x0a%$\\x03\\x0a>+\\x03\\x0a01\\x03\" +\n\t\"\\x0a1\\x10\\x03\\x0a\\x099\\x03\\x0a\\x0a\\x12\\x03\\x0a\\x19\\x1f\\x03\\x0a\\x19\\x12\" +\n\t\"\\x03\\x09*)\\x03\\x09-\\x16\\x03\\x09.1\\x03\\x09.2\\x03\\x09<\\x0e\\x03\\x09> \\x03\" +\n\t\"\\x093\\x12\\x03\\x09\\x0b\\x01\\x03\\x09\\x1c2\\x03\\x09\\x11\\x1c\\x03\\x09\\x15%\\x03\" +\n\t\"\\x08,&\\x03\\x08!\\x22\\x03\\x089(\\x03\\x08\\x0b\\x1a\\x03\\x08\\x0d2\\x03\\x08\\x0c\" +\n\t\"\\x04\\x03\\x08\\x0c\\x06\\x03\\x08\\x0c\\x1f\\x03\\x08\\x0c\\x0c\\x03\\x08\\x0f\\x1f\\x03\" +\n\t\"\\x08\\x0f\\x1d\\x03\\x08\\x00\\x14\\x03\\x08\\x03\\x14\\x03\\x08\\x06\\x16\\x03\\x08\\x1e\" +\n\t\"#\\x03\\x08\\x11\\x11\\x03\\x08\\x10\\x18\\x03\\x08\\x14(\\x03\\x07)\\x1e\\x03\\x07.1\" +\n\t\"\\x03\\x07 $\\x03\\x07 '\\x03\\x078\\x08\\x03\\x07\\x0d0\\x03\\x07\\x0f7\\x03\\x07\\x05#\" +\n\t\"\\x03\\x07\\x05\\x1a\\x03\\x07\\x1a7\\x03\\x07\\x1d-\\x03\\x07\\x17\\x10\\x03\\x06)\\x1f\" +\n\t\"\\x03\\x062\\x0b\\x03\\x066\\x16\\x03\\x06\\x09\\x11\\x03\\x09(\\x1e\\x03\\x07!5\\x03\" +\n\t\"\\x0b\\x11\\x16\\x03\\x0a/\\x04\\x03\\x0a,\\x1a\\x03\\x0b\\x173\\x03\\x0a,1\\x03\\x0a/5\" +\n\t\"\\x03\\x0a\\x221\\x03\\x0a\\x22\\x0d\\x03\\x0a?%\\x03\\x0a<,\\x03\\x0a?#\\x03\\x0a>\\x19\" +\n\t\"\\x03\\x0a\\x08&\\x03\\x0a\\x0b\\x0e\\x03\\x0a\\x0c:\\x03\\x0a\\x0c+\\x03\\x0a\\x03\\x22\" +\n\t\"\\x03\\x0a\\x06)\\x03\\x0a\\x11\\x10\\x03\\x0a\\x11\\x1a\\x03\\x0a\\x17-\\x03\\x0a\\x14(\" +\n\t\"\\x03\\x09)\\x1e\\x03\\x09/\\x09\\x03\\x09.\\x00\\x03\\x09,\\x07\\x03\\x09/*\\x03\\x09-9\" +\n\t\"\\x03\\x09\\x228\\x03\\x09%\\x09\\x03\\x09:\\x12\\x03\\x09;\\x1d\\x03\\x09?\\x06\\x03\" +\n\t\"\\x093%\\x03\\x096\\x05\\x03\\x096\\x08\\x03\\x097\\x02\\x03\\x09\\x07,\\x03\\x09\\x04,\" +\n\t\"\\x03\\x09\\x1f\\x16\\x03\\x09\\x11\\x03\\x03\\x09\\x11\\x12\\x03\\x09\\x168\\x03\\x08*\" +\n\t\"\\x05\\x03\\x08/2\\x03\\x084:\\x03\\x08\\x22+\\x03\\x08 0\\x03\\x08&\\x0a\\x03\\x08;\" +\n\t\"\\x10\\x03\\x08>$\\x03\\x08>\\x18\\x03\\x0829\\x03\\x082:\\x03\\x081,\\x03\\x081<\\x03\" +\n\t\"\\x081\\x1c\\x03\\x087#\\x03\\x087*\\x03\\x08\\x09'\\x03\\x08\\x00\\x1d\\x03\\x08\\x05-\" +\n\t\"\\x03\\x08\\x1f4\\x03\\x08\\x1d\\x04\\x03\\x08\\x16\\x0f\\x03\\x07*7\\x03\\x07'!\\x03\" +\n\t\"\\x07%\\x1b\\x03\\x077\\x0c\\x03\\x07\\x0c1\\x03\\x07\\x0c.\\x03\\x07\\x00\\x06\\x03\\x07\" +\n\t\"\\x01\\x02\\x03\\x07\\x010\\x03\\x07\\x06=\\x03\\x07\\x01\\x03\\x03\\x07\\x01\\x13\\x03\" +\n\t\"\\x07\\x06\\x06\\x03\\x07\\x05\\x0a\\x03\\x07\\x1f\\x09\\x03\\x07\\x17:\\x03\\x06*1\\x03\" +\n\t\"\\x06-\\x1d\\x03\\x06\\x223\\x03\\x062:\\x03\\x060$\\x03\\x066\\x1e\\x03\\x064\\x12\\x03\" +\n\t\"\\x0645\\x03\\x06\\x0b\\x00\\x03\\x06\\x0b7\\x03\\x06\\x07\\x1f\\x03\\x06\\x15\\x12\\x03\" +\n\t\"\\x0c\\x05\\x0f\\x03\\x0b+\\x0b\\x03\\x0b+-\\x03\\x06\\x16\\x1b\\x03\\x06\\x15\\x17\\x03\" +\n\t\"\\x89\\xca\\xea\\x03\\x89\\xca\\xe8\\x03\\x0c8\\x10\\x03\\x0c8\\x01\\x03\\x0c8\\x0f\\x03\" +\n\t\"\\x0d8%\\x03\\x0d8!\\x03\\x0c8-\\x03\\x0c8/\\x03\\x0c8+\\x03\\x0c87\\x03\\x0c85\\x03\" +\n\t\"\\x0c9\\x09\\x03\\x0c9\\x0d\\x03\\x0c9\\x0f\\x03\\x0c9\\x0b\\x03\\xcfu\\x0c\\x03\\xcfu\" +\n\t\"\\x0f\\x03\\xcfu\\x0e\\x03\\xcfu\\x09\\x03\\x0c9\\x10\\x03\\x0d9\\x0c\\x03\\xcf`;\\x03\" +\n\t\"\\xcf`>\\x03\\xcf`9\\x03\\xcf`8\\x03\\xcf`7\\x03\\xcf`*\\x03\\xcf`-\\x03\\xcf`,\\x03\" +\n\t\"\\x0d\\x1b\\x1a\\x03\\x0d\\x1b&\\x03\\x0c=.\\x03\\x0c=%\\x03\\x0c>\\x1e\\x03\\x0c>\\x14\" +\n\t\"\\x03\\x0c?\\x06\\x03\\x0c?\\x0b\\x03\\x0c?\\x0c\\x03\\x0c?\\x0d\\x03\\x0c?\\x02\\x03\" +\n\t\"\\x0c>\\x0f\\x03\\x0c>\\x08\\x03\\x0c>\\x09\\x03\\x0c>,\\x03\\x0c>\\x0c\\x03\\x0c?\\x13\" +\n\t\"\\x03\\x0c?\\x16\\x03\\x0c?\\x15\\x03\\x0c?\\x1c\\x03\\x0c?\\x1f\\x03\\x0c?\\x1d\\x03\" +\n\t\"\\x0c?\\x1a\\x03\\x0c?\\x17\\x03\\x0c?\\x08\\x03\\x0c?\\x09\\x03\\x0c?\\x0e\\x03\\x0c?\" +\n\t\"\\x04\\x03\\x0c?\\x05\\x03\\x0c<?\\x03\\x0c=\\x00\\x03\\x0c=\\x06\\x03\\x0c=\\x05\\x03\" +\n\t\"\\x0c=\\x0c\\x03\\x0c=\\x0f\\x03\\x0c=\\x0d\\x03\\x0c=\\x0b\\x03\\x0c=\\x07\\x03\\x0c=\" +\n\t\"\\x19\\x03\\x0c=\\x15\\x03\\x0c=\\x11\\x03\\x0c=1\\x03\\x0c=3\\x03\\x0c=0\\x03\\x0c=>\" +\n\t\"\\x03\\x0c=2\\x03\\x0c=6\\x03\\x0c<\\x07\\x03\\x0c<\\x05\\x03\\x0e:!\\x03\\x0e:#\\x03\" +\n\t\"\\x0e8\\x09\\x03\\x0e:&\\x03\\x0e8\\x0b\\x03\\x0e:$\\x03\\x0e:,\\x03\\x0e8\\x1a\\x03\" +\n\t\"\\x0e8\\x1e\\x03\\x0e:*\\x03\\x0e:7\\x03\\x0e:5\\x03\\x0e:;\\x03\\x0e:\\x15\\x03\\x0e:<\" +\n\t\"\\x03\\x0e:4\\x03\\x0e:'\\x03\\x0e:-\\x03\\x0e:%\\x03\\x0e:?\\x03\\x0e:=\\x03\\x0e:)\" +\n\t\"\\x03\\x0e:/\\x03\\xcfs'\\x03\\x0d=\\x0f\\x03\\x0d+*\\x03\\x0d99\\x03\\x0d9;\\x03\\x0d9\" +\n\t\"?\\x03\\x0d)\\x0d\\x03\\x0d(%\\x02\\x01\\x18\\x02\\x01(\\x02\\x01\\x1e\\x03\\x0f$!\\x03\" +\n\t\"\\x0f87\\x03\\x0f4\\x0e\\x03\\x0f5\\x1d\\x03\\x06'\\x03\\x03\\x0f\\x08\\x18\\x03\\x0f\" +\n\t\"\\x0d\\x1b\\x03\\x0e2=\\x03\\x0e;\\x08\\x03\\x0e:\\x0b\\x03\\x0e\\x06$\\x03\\x0e\\x0d)\" +\n\t\"\\x03\\x0e\\x16\\x1f\\x03\\x0e\\x16\\x1b\\x03\\x0d$\\x0a\\x03\\x05,\\x1d\\x03\\x0d. \\x03\" +\n\t\"\\x0d.#\\x03\\x0c(/\\x03\\x09%\\x02\\x03\\x0d90\\x03\\x0d\\x0e4\\x03\\x0d\\x0d\\x0f\\x03\" +\n\t\"\\x0c#\\x00\\x03\\x0c,\\x1e\\x03\\x0c2\\x0e\\x03\\x0c\\x01\\x17\\x03\\x0c\\x09:\\x03\\x0e\" +\n\t\"\\x173\\x03\\x0c\\x08\\x03\\x03\\x0c\\x11\\x07\\x03\\x0c\\x10\\x18\\x03\\x0c\\x1f\\x1c\" +\n\t\"\\x03\\x0c\\x19\\x0e\\x03\\x0c\\x1a\\x1f\\x03\\x0f0>\\x03\\x0b->\\x03\\x0b<+\\x03\\x0b8\" +\n\t\"\\x13\\x03\\x0b\\x043\\x03\\x0b\\x14\\x03\\x03\\x0b\\x16%\\x03\\x0d\\x22&\\x03\\x0b\\x1a\" +\n\t\"\\x1a\\x03\\x0b\\x1a\\x04\\x03\\x0a%9\\x03\\x0a&2\\x03\\x0a&0\\x03\\x0a!\\x1a\\x03\\x0a!\" +\n\t\"7\\x03\\x0a5\\x10\\x03\\x0a=4\\x03\\x0a?\\x0e\\x03\\x0a>\\x10\\x03\\x0a\\x00 \\x03\\x0a\" +\n\t\"\\x0f:\\x03\\x0a\\x0f9\\x03\\x0a\\x0b\\x0a\\x03\\x0a\\x17%\\x03\\x0a\\x1b-\\x03\\x09-\" +\n\t\"\\x1a\\x03\\x09,4\\x03\\x09.,\\x03\\x09)\\x09\\x03\\x096!\\x03\\x091\\x1f\\x03\\x093\" +\n\t\"\\x16\\x03\\x0c+\\x1f\\x03\\x098 \\x03\\x098=\\x03\\x0c(\\x1a\\x03\\x0c(\\x16\\x03\\x09\" +\n\t\"\\x0a+\\x03\\x09\\x16\\x12\\x03\\x09\\x13\\x0e\\x03\\x09\\x153\\x03\\x08)!\\x03\\x09\\x1a\" +\n\t\"\\x01\\x03\\x09\\x18\\x01\\x03\\x08%#\\x03\\x08>\\x22\\x03\\x08\\x05%\\x03\\x08\\x02*\" +\n\t\"\\x03\\x08\\x15;\\x03\\x08\\x1b7\\x03\\x0f\\x07\\x1d\\x03\\x0f\\x04\\x03\\x03\\x070\\x0c\" +\n\t\"\\x03\\x07;\\x0b\\x03\\x07\\x08\\x17\\x03\\x07\\x12\\x06\\x03\\x06/-\\x03\\x0671\\x03\" +\n\t\"\\x065+\\x03\\x06>7\\x03\\x06\\x049\\x03\\x05+\\x1e\\x03\\x05,\\x17\\x03\\x05 \\x1d\\x03\" +\n\t\"\\x05\\x22\\x05\\x03\\x050\\x1d\"\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// idnaTrie. Total size: 29708 bytes (29.01 KiB). Checksum: c3ecc76d8fffa6e6.\ntype idnaTrie struct{}\n\nfunc newIdnaTrie(i int) *idnaTrie {\n\treturn &idnaTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 125:\n\t\treturn uint16(idnaValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 125\n\t\treturn uint16(idnaSparse.lookup(n, b))\n\t}\n}\n\n// idnaValues: 127 blocks, 8128 entries, 16256 bytes\n// The third block is the zero block.\nvar idnaValues = [8128]uint16{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,\n\t0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,\n\t0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,\n\t0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,\n\t0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,\n\t0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,\n\t0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,\n\t0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,\n\t0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,\n\t0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,\n\t0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,\n\t0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,\n\t0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,\n\t0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,\n\t0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,\n\t0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,\n\t0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,\n\t0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,\n\t0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,\n\t0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,\n\t0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,\n\t0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,\n\t0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,\n\t0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,\n\t0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,\n\t0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,\n\t0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018,\n\t0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a,\n\t0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005,\n\t0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018,\n\t0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018,\n\t// Block 0x4, offset 0x100\n\t0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,\n\t0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,\n\t0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,\n\t0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,\n\t0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,\n\t0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,\n\t0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,\n\t0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,\n\t0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,\n\t0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,\n\t0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,\n\t0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008,\n\t0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,\n\t0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,\n\t0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,\n\t0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,\n\t0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,\n\t0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,\n\t0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,\n\t0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,\n\t0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,\n\t0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,\n\t0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,\n\t0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,\n\t0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,\n\t0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,\n\t0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,\n\t0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,\n\t0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,\n\t0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,\n\t0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9,\n\t0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,\n\t0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,\n\t0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,\n\t0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,\n\t0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,\n\t0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,\n\t0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,\n\t0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,\n\t0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,\n\t0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,\n\t0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,\n\t0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,\n\t0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,\n\t0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,\n\t0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,\n\t0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,\n\t0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,\n\t0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,\n\t0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d,\n\t0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,\n\t0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,\n\t0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,\n\t0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,\n\t0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a,\n\t0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369,\n\t0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,\n\t0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,\n\t0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,\n\t0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,\n\t0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d,\n\t0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,\n\t0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,\n\t0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,\n\t0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,\n\t0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,\n\t0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,\n\t0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,\n\t0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,\n\t0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008,\n\t0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2,\n\t0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,\n\t0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,\n\t0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,\n\t0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,\n\t0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,\n\t0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,\n\t0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,\n\t0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,\n\t0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,\n\t0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,\n\t0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,\n\t0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,\n\t0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,\n\t0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,\n\t0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,\n\t0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,\n\t0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,\n\t0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,\n\t0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,\n\t0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,\n\t0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,\n\t0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,\n\t0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,\n\t0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,\n\t0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,\n\t0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,\n\t0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,\n\t0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,\n\t0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,\n\t0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,\n\t0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,\n\t0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,\n\t0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,\n\t0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,\n\t0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,\n\t0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,\n\t0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,\n\t0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,\n\t0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,\n\t0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,\n\t0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,\n\t0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,\n\t0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,\n\t0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,\n\t0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,\n\t0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,\n\t0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,\n\t0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,\n\t0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,\n\t0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,\n\t0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,\n\t0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,\n\t0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,\n\t0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,\n\t0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,\n\t0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,\n\t0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,\n\t0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,\n\t0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,\n\t0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,\n\t0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,\n\t0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,\n\t0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,\n\t0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040,\n\t0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,\n\t0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,\n\t0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,\n\t0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,\n\t0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,\n\t0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,\n\t0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,\n\t0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,\n\t0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,\n\t0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,\n\t0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,\n\t0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,\n\t0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,\n\t0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429,\n\t0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,\n\t0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,\n\t0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,\n\t0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,\n\t0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,\n\t0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,\n\t0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,\n\t0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,\n\t0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,\n\t0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,\n\t0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,\n\t0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,\n\t0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,\n\t0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,\n\t0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,\n\t0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,\n\t0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,\n\t0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,\n\t0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,\n\t0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,\n\t0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,\n\t0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08,\n\t0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08,\n\t0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08,\n\t0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0808, 0x557: 0x0808,\n\t0x558: 0x0808, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040,\n\t0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08,\n\t0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08,\n\t0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040,\n\t0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040,\n\t0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040,\n\t0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308,\n\t0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008,\n\t0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308,\n\t0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308,\n\t0x598: 0x04c9, 0x599: 0x0501, 0x59a: 0x0539, 0x59b: 0x0571, 0x59c: 0x05a9, 0x59d: 0x05e1,\n\t0x59e: 0x0619, 0x59f: 0x0651, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308,\n\t0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008,\n\t0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008,\n\t0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008,\n\t0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008,\n\t0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008,\n\t0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008,\n\t0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040,\n\t0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008,\n\t0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008,\n\t0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008,\n\t0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040,\n\t0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,\n\t0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040,\n\t0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040,\n\t0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040,\n\t0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008,\n\t0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040,\n\t0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008,\n\t0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0689, 0x61d: 0x06c1,\n\t0x61e: 0x0040, 0x61f: 0x06f9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308,\n\t0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008,\n\t0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,\n\t0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018,\n\t0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018,\n\t0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x3308, 0x63f: 0x0040,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008,\n\t0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040,\n\t0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040,\n\t0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008,\n\t0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008,\n\t0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008,\n\t0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040,\n\t0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,\n\t0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0731, 0x674: 0x0040, 0x675: 0x0008,\n\t0x676: 0x0769, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040,\n\t0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040,\n\t0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308,\n\t0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308,\n\t0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040,\n\t0x698: 0x0040, 0x699: 0x07a1, 0x69a: 0x07d9, 0x69b: 0x0811, 0x69c: 0x0008, 0x69d: 0x0040,\n\t0x69e: 0x0849, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040,\n\t0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008,\n\t0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,\n\t0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308,\n\t0x6b6: 0x0018, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040,\n\t0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008,\n\t0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008,\n\t0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008,\n\t0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008,\n\t0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008,\n\t0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008,\n\t0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040,\n\t0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,\n\t0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008,\n\t0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040,\n\t0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308,\n\t0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008,\n\t0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040,\n\t0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040,\n\t0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040,\n\t0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308,\n\t0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008,\n\t0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,\n\t0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040,\n\t0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308,\n\t0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008,\n\t0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008,\n\t0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040,\n\t0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008,\n\t0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008,\n\t0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008,\n\t0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040,\n\t0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,\n\t0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008,\n\t0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040,\n\t0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040,\n\t0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008,\n\t0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040,\n\t0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x0040, 0x796: 0x3308, 0x797: 0x3008,\n\t0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9,\n\t0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308,\n\t0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008,\n\t0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008,\n\t0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018,\n\t0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040,\n\t0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008,\n\t0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040,\n\t0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040,\n\t0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040,\n\t0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040,\n\t0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008,\n\t0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008,\n\t0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008,\n\t0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008,\n\t0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040,\n\t0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040,\n\t0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308,\n\t0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040,\n\t0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040,\n\t0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040,\n\t0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308,\n\t0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008,\n\t0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008,\n\t0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040,\n\t0x836: 0x0040, 0x837: 0x0018, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018,\n\t0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0018, 0x845: 0x0008,\n\t0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008,\n\t0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040,\n\t0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008,\n\t0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008,\n\t0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008,\n\t0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040,\n\t0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,\n\t0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008,\n\t0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040,\n\t0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040,\n\t0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008,\n\t0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040,\n\t0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040,\n\t0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040,\n\t0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308,\n\t0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008,\n\t0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,\n\t0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040,\n\t0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040,\n\t0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040,\n\t0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008,\n\t0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040,\n\t0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008,\n\t0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018,\n\t0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308,\n\t0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008,\n\t0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,\n\t0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018,\n\t0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008,\n\t0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040,\n\t0x906: 0x0008, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0040,\n\t0x90c: 0x0008, 0x90d: 0x0008, 0x90e: 0x0008, 0x90f: 0x0008, 0x910: 0x0008, 0x911: 0x0008,\n\t0x912: 0x0008, 0x913: 0x0008, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008,\n\t0x918: 0x0008, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008,\n\t0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008,\n\t0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0008,\n\t0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008,\n\t0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308,\n\t0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x3b08, 0x93b: 0x3308,\n\t0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x09d1, 0x944: 0x0008, 0x945: 0x0008,\n\t0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008,\n\t0x94c: 0x0008, 0x94d: 0x0a09, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008,\n\t0x952: 0x0a41, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0a79,\n\t0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0ab1, 0x95d: 0x0008,\n\t0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008,\n\t0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0ae9,\n\t0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040,\n\t0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0b21, 0x974: 0x3308, 0x975: 0x0b59,\n\t0x976: 0x0b91, 0x977: 0x0bc9, 0x978: 0x0c19, 0x979: 0x0c51, 0x97a: 0x3308, 0x97b: 0x3308,\n\t0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x3308, 0x981: 0x0ca1, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018,\n\t0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,\n\t0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308,\n\t0x992: 0x3308, 0x993: 0x0cd9, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308,\n\t0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0d11,\n\t0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0d49, 0x9a3: 0x3308,\n\t0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0d81, 0x9a8: 0x3308, 0x9a9: 0x3308,\n\t0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0db9, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308,\n\t0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308,\n\t0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x0df1, 0x9ba: 0x3308, 0x9bb: 0x3308,\n\t0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008,\n\t0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008,\n\t0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008,\n\t0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008,\n\t0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008,\n\t0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008,\n\t0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008,\n\t0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0039, 0x9ed: 0x0ed1, 0x9ee: 0x0ee9, 0x9ef: 0x0008,\n\t0x9f0: 0x0ef9, 0x9f1: 0x0f09, 0x9f2: 0x0f19, 0x9f3: 0x0f31, 0x9f4: 0x0249, 0x9f5: 0x0f41,\n\t0x9f6: 0x0259, 0x9f7: 0x0f51, 0x9f8: 0x0359, 0x9f9: 0x0f61, 0x9fa: 0x0f71, 0x9fb: 0x0008,\n\t0x9fc: 0x00d9, 0x9fd: 0x0f81, 0x9fe: 0x0f99, 0x9ff: 0x0269,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1,\n\t0xa06: 0x05b5, 0xa07: 0x0ee9, 0xa08: 0x0ef9, 0xa09: 0x0f09, 0xa0a: 0x0ff9, 0xa0b: 0x1011,\n\t0xa0c: 0x1029, 0xa0d: 0x0f31, 0xa0e: 0x0008, 0xa0f: 0x0f51, 0xa10: 0x0f61, 0xa11: 0x1041,\n\t0xa12: 0x00d9, 0xa13: 0x1059, 0xa14: 0x05cd, 0xa15: 0x05cd, 0xa16: 0x0f99, 0xa17: 0x0fa9,\n\t0xa18: 0x0fb9, 0xa19: 0x05b5, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05e5, 0xa1d: 0x1099,\n\t0xa1e: 0x10b1, 0xa1f: 0x10c9, 0xa20: 0x10e1, 0xa21: 0x10f9, 0xa22: 0x0f41, 0xa23: 0x0269,\n\t0xa24: 0x0fb9, 0xa25: 0x1089, 0xa26: 0x1099, 0xa27: 0x10b1, 0xa28: 0x1111, 0xa29: 0x10e1,\n\t0xa2a: 0x10f9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008,\n\t0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008,\n\t0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x1129, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008,\n\t0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008,\n\t0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008,\n\t0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008,\n\t0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008,\n\t0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x1141, 0xa5c: 0x1159, 0xa5d: 0x1169,\n\t0xa5e: 0x1181, 0xa5f: 0x1029, 0xa60: 0x1199, 0xa61: 0x11a9, 0xa62: 0x11c1, 0xa63: 0x11d9,\n\t0xa64: 0x11f1, 0xa65: 0x1209, 0xa66: 0x1221, 0xa67: 0x05fd, 0xa68: 0x1239, 0xa69: 0x1251,\n\t0xa6a: 0xe17d, 0xa6b: 0x1269, 0xa6c: 0x1281, 0xa6d: 0x1299, 0xa6e: 0x12b1, 0xa6f: 0x12c9,\n\t0xa70: 0x12e1, 0xa71: 0x12f9, 0xa72: 0x1311, 0xa73: 0x1329, 0xa74: 0x1341, 0xa75: 0x1359,\n\t0xa76: 0x1371, 0xa77: 0x1389, 0xa78: 0x0615, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1,\n\t0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008,\n\t0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008,\n\t0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008,\n\t0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008,\n\t0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008,\n\t0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008,\n\t0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008,\n\t0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008,\n\t0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008,\n\t0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008,\n\t0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008,\n\t0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008,\n\t0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008,\n\t0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008,\n\t0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x062d, 0xadb: 0x064d, 0xadc: 0x0008, 0xadd: 0x0008,\n\t0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008,\n\t0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008,\n\t0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008,\n\t0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008,\n\t0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008,\n\t0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008,\n\t0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045,\n\t0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008,\n\t0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008,\n\t0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045,\n\t0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008,\n\t0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045,\n\t0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045,\n\t0xb30: 0x0008, 0xb31: 0x1459, 0xb32: 0x0008, 0xb33: 0x1471, 0xb34: 0x0008, 0xb35: 0x1489,\n\t0xb36: 0x0008, 0xb37: 0x14a1, 0xb38: 0x0008, 0xb39: 0x14b9, 0xb3a: 0x0008, 0xb3b: 0x14d1,\n\t0xb3c: 0x0008, 0xb3d: 0x14e9, 0xb3e: 0x0040, 0xb3f: 0x0040,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x1501, 0xb41: 0x1531, 0xb42: 0x1561, 0xb43: 0x1591, 0xb44: 0x15c1, 0xb45: 0x15f1,\n\t0xb46: 0x1621, 0xb47: 0x1651, 0xb48: 0x1501, 0xb49: 0x1531, 0xb4a: 0x1561, 0xb4b: 0x1591,\n\t0xb4c: 0x15c1, 0xb4d: 0x15f1, 0xb4e: 0x1621, 0xb4f: 0x1651, 0xb50: 0x1681, 0xb51: 0x16b1,\n\t0xb52: 0x16e1, 0xb53: 0x1711, 0xb54: 0x1741, 0xb55: 0x1771, 0xb56: 0x17a1, 0xb57: 0x17d1,\n\t0xb58: 0x1681, 0xb59: 0x16b1, 0xb5a: 0x16e1, 0xb5b: 0x1711, 0xb5c: 0x1741, 0xb5d: 0x1771,\n\t0xb5e: 0x17a1, 0xb5f: 0x17d1, 0xb60: 0x1801, 0xb61: 0x1831, 0xb62: 0x1861, 0xb63: 0x1891,\n\t0xb64: 0x18c1, 0xb65: 0x18f1, 0xb66: 0x1921, 0xb67: 0x1951, 0xb68: 0x1801, 0xb69: 0x1831,\n\t0xb6a: 0x1861, 0xb6b: 0x1891, 0xb6c: 0x18c1, 0xb6d: 0x18f1, 0xb6e: 0x1921, 0xb6f: 0x1951,\n\t0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x1981, 0xb73: 0x19b1, 0xb74: 0x19d9, 0xb75: 0x0040,\n\t0xb76: 0x0008, 0xb77: 0x1a01, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x0665, 0xb7b: 0x1459,\n\t0xb7c: 0x19b1, 0xb7d: 0x067e, 0xb7e: 0x1a31, 0xb7f: 0x069e,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x06be, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040,\n\t0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06dd, 0xb89: 0x1471, 0xb8a: 0x06f5, 0xb8b: 0x1489,\n\t0xb8c: 0x1aa9, 0xb8d: 0x1b2a, 0xb8e: 0x1b5a, 0xb8f: 0x1b8a, 0xb90: 0x0008, 0xb91: 0x0008,\n\t0xb92: 0x0008, 0xb93: 0x1bb9, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008,\n\t0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x070d, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2,\n\t0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61,\n\t0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045,\n\t0xbaa: 0x0725, 0xbab: 0x14d1, 0xbac: 0xe04d, 0xbad: 0x1c7a, 0xbae: 0x03d2, 0xbaf: 0x1caa,\n\t0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x1cb9, 0xbb3: 0x1ce9, 0xbb4: 0x1d11, 0xbb5: 0x0040,\n\t0xbb6: 0x0008, 0xbb7: 0x1d39, 0xbb8: 0x073d, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9,\n\t0xbbc: 0x1ce9, 0xbbd: 0x0756, 0xbbe: 0x0776, 0xbbf: 0x0040,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a,\n\t0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0,\n\t0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d,\n\t0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x0796,\n\t0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018,\n\t0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018,\n\t0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040,\n\t0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a,\n\t0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x1d69, 0xbf4: 0x1da1, 0xbf5: 0x0018,\n\t0xbf6: 0x1df1, 0xbf7: 0x1e29, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018,\n\t0xbfc: 0x1e7a, 0xbfd: 0x0018, 0xbfe: 0x07b6, 0xbff: 0x0018,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018,\n\t0xc06: 0x0018, 0xc07: 0x1e92, 0xc08: 0x1eaa, 0xc09: 0x1ec2, 0xc0a: 0x0018, 0xc0b: 0x0018,\n\t0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018,\n\t0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x1ed9,\n\t0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018,\n\t0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340,\n\t0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040,\n\t0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340,\n\t0xc30: 0x1f41, 0xc31: 0x0f41, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x1f51, 0xc35: 0x1f61,\n\t0xc36: 0x1f71, 0xc37: 0x1f81, 0xc38: 0x1f91, 0xc39: 0x1fa1, 0xc3a: 0x1fb2, 0xc3b: 0x07d5,\n\t0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1f41, 0xc41: 0x00c9, 0xc42: 0x0069, 0xc43: 0x0079, 0xc44: 0x1f51, 0xc45: 0x1f61,\n\t0xc46: 0x1f71, 0xc47: 0x1f81, 0xc48: 0x1f91, 0xc49: 0x1fa1, 0xc4a: 0x1fb2, 0xc4b: 0x07ed,\n\t0xc4c: 0x1fc2, 0xc4d: 0x1fd2, 0xc4e: 0x1fe2, 0xc4f: 0x0040, 0xc50: 0x0039, 0xc51: 0x0f09,\n\t0xc52: 0x00d9, 0xc53: 0x0369, 0xc54: 0x0ff9, 0xc55: 0x0249, 0xc56: 0x0f51, 0xc57: 0x0359,\n\t0xc58: 0x0f61, 0xc59: 0x0f71, 0xc5a: 0x0f99, 0xc5b: 0x01d9, 0xc5c: 0x0fa9, 0xc5d: 0x0040,\n\t0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018,\n\t0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x1ff1, 0xc69: 0x0018,\n\t0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018,\n\t0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018,\n\t0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018,\n\t0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x0806, 0xc81: 0x0826, 0xc82: 0x1159, 0xc83: 0x0845, 0xc84: 0x0018, 0xc85: 0x0866,\n\t0xc86: 0x0886, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x08a5, 0xc8a: 0x0f31, 0xc8b: 0x0249,\n\t0xc8c: 0x0249, 0xc8d: 0x0249, 0xc8e: 0x0249, 0xc8f: 0x2009, 0xc90: 0x0f41, 0xc91: 0x0f41,\n\t0xc92: 0x0359, 0xc93: 0x0359, 0xc94: 0x0018, 0xc95: 0x0f71, 0xc96: 0x2021, 0xc97: 0x0018,\n\t0xc98: 0x0018, 0xc99: 0x0f99, 0xc9a: 0x2039, 0xc9b: 0x0269, 0xc9c: 0x0269, 0xc9d: 0x0269,\n\t0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x2049, 0xca1: 0x08c5, 0xca2: 0x2061, 0xca3: 0x0018,\n\t0xca4: 0x13d1, 0xca5: 0x0018, 0xca6: 0x2079, 0xca7: 0x0018, 0xca8: 0x13d1, 0xca9: 0x0018,\n\t0xcaa: 0x0f51, 0xcab: 0x2091, 0xcac: 0x0ee9, 0xcad: 0x1159, 0xcae: 0x0018, 0xcaf: 0x0f09,\n\t0xcb0: 0x0f09, 0xcb1: 0x1199, 0xcb2: 0x0040, 0xcb3: 0x0f61, 0xcb4: 0x00d9, 0xcb5: 0x20a9,\n\t0xcb6: 0x20c1, 0xcb7: 0x20d9, 0xcb8: 0x20f1, 0xcb9: 0x0f41, 0xcba: 0x0018, 0xcbb: 0x08e5,\n\t0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x0905, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0ef9,\n\t0xcc6: 0x0ef9, 0xcc7: 0x0f09, 0xcc8: 0x0f41, 0xcc9: 0x0259, 0xcca: 0x0018, 0xccb: 0x0018,\n\t0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x2121, 0xcd1: 0x2151,\n\t0xcd2: 0x2181, 0xcd3: 0x21b9, 0xcd4: 0x21e9, 0xcd5: 0x2219, 0xcd6: 0x2249, 0xcd7: 0x2279,\n\t0xcd8: 0x22a9, 0xcd9: 0x22d9, 0xcda: 0x2309, 0xcdb: 0x2339, 0xcdc: 0x2369, 0xcdd: 0x2399,\n\t0xcde: 0x23c9, 0xcdf: 0x23f9, 0xce0: 0x0f41, 0xce1: 0x2421, 0xce2: 0x091d, 0xce3: 0x2439,\n\t0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x093d, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369,\n\t0xcea: 0x24a9, 0xceb: 0x095d, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61,\n\t0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x097d, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451,\n\t0xcf6: 0x099d, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09bd,\n\t0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018,\n\t0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040,\n\t0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040,\n\t0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040,\n\t0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040,\n\t0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x00c9, 0xd21: 0x0069, 0xd22: 0x0079, 0xd23: 0x1f51,\n\t0xd24: 0x1f61, 0xd25: 0x1f71, 0xd26: 0x1f81, 0xd27: 0x1f91, 0xd28: 0x1fa1, 0xd29: 0x2601,\n\t0xd2a: 0x2619, 0xd2b: 0x2631, 0xd2c: 0x2649, 0xd2d: 0x2661, 0xd2e: 0x2679, 0xd2f: 0x2691,\n\t0xd30: 0x26a9, 0xd31: 0x26c1, 0xd32: 0x26d9, 0xd33: 0x26f1, 0xd34: 0x0a1e, 0xd35: 0x0a3e,\n\t0xd36: 0x0a5e, 0xd37: 0x0a7e, 0xd38: 0x0a9e, 0xd39: 0x0abe, 0xd3a: 0x0ade, 0xd3b: 0x0afe,\n\t0xd3c: 0x0b1e, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x2782, 0xd41: 0x27aa, 0xd42: 0x27d2, 0xd43: 0x27fa, 0xd44: 0x2822, 0xd45: 0x284a,\n\t0xd46: 0x2872, 0xd47: 0x289a, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040,\n\t0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040,\n\t0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040,\n\t0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b3e, 0xd5d: 0x0b5e,\n\t0xd5e: 0x0b7e, 0xd5f: 0x0b9e, 0xd60: 0x0bbe, 0xd61: 0x0bde, 0xd62: 0x0bfe, 0xd63: 0x0c1e,\n\t0xd64: 0x0c3e, 0xd65: 0x0c5e, 0xd66: 0x0c7e, 0xd67: 0x0c9e, 0xd68: 0x0cbe, 0xd69: 0x0cde,\n\t0xd6a: 0x0cfe, 0xd6b: 0x0d1e, 0xd6c: 0x0d3e, 0xd6d: 0x0d5e, 0xd6e: 0x0d7e, 0xd6f: 0x0d9e,\n\t0xd70: 0x0dbe, 0xd71: 0x0dde, 0xd72: 0x0dfe, 0xd73: 0x0e1e, 0xd74: 0x0e3e, 0xd75: 0x0e5e,\n\t0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199,\n\t0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0f51, 0xd81: 0x0359, 0xd82: 0x0f61, 0xd83: 0x0f71, 0xd84: 0x00d9, 0xd85: 0x0f99,\n\t0xd86: 0x2039, 0xd87: 0x0269, 0xd88: 0x01d9, 0xd89: 0x0fa9, 0xd8a: 0x0fb9, 0xd8b: 0x1089,\n\t0xd8c: 0x0279, 0xd8d: 0x0369, 0xd8e: 0x0289, 0xd8f: 0x13d1, 0xd90: 0x0039, 0xd91: 0x0ee9,\n\t0xd92: 0x1159, 0xd93: 0x0ef9, 0xd94: 0x0f09, 0xd95: 0x1199, 0xd96: 0x0f31, 0xd97: 0x0249,\n\t0xd98: 0x0f41, 0xd99: 0x0259, 0xd9a: 0x0f51, 0xd9b: 0x0359, 0xd9c: 0x0f61, 0xd9d: 0x0f71,\n\t0xd9e: 0x00d9, 0xd9f: 0x0f99, 0xda0: 0x2039, 0xda1: 0x0269, 0xda2: 0x01d9, 0xda3: 0x0fa9,\n\t0xda4: 0x0fb9, 0xda5: 0x1089, 0xda6: 0x0279, 0xda7: 0x0369, 0xda8: 0x0289, 0xda9: 0x13d1,\n\t0xdaa: 0x1f41, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018,\n\t0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018,\n\t0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018,\n\t0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008,\n\t0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008,\n\t0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008,\n\t0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008,\n\t0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008,\n\t0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x2971, 0xde3: 0x0ed5,\n\t0xde4: 0x2989, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d,\n\t0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0fe1, 0xdee: 0x1281, 0xdef: 0x0fc9,\n\t0xdf0: 0x1141, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d,\n\t0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008,\n\t0xdfc: 0x0259, 0xdfd: 0x1089, 0xdfe: 0x29a1, 0xdff: 0x29b9,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008,\n\t0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008,\n\t0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008,\n\t0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008,\n\t0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008,\n\t0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008,\n\t0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018,\n\t0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308,\n\t0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040,\n\t0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018,\n\t0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x2715, 0xe41: 0x2735, 0xe42: 0x2755, 0xe43: 0x2775, 0xe44: 0x2795, 0xe45: 0x27b5,\n\t0xe46: 0x27d5, 0xe47: 0x27f5, 0xe48: 0x2815, 0xe49: 0x2835, 0xe4a: 0x2855, 0xe4b: 0x2875,\n\t0xe4c: 0x2895, 0xe4d: 0x28b5, 0xe4e: 0x28d5, 0xe4f: 0x28f5, 0xe50: 0x2915, 0xe51: 0x2935,\n\t0xe52: 0x2955, 0xe53: 0x2975, 0xe54: 0x2995, 0xe55: 0x29b5, 0xe56: 0x0040, 0xe57: 0x0040,\n\t0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040,\n\t0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040,\n\t0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040,\n\t0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040,\n\t0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040,\n\t0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040,\n\t0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x29d1, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008,\n\t0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018,\n\t0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018,\n\t0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018,\n\t0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018,\n\t0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018,\n\t0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018,\n\t0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018,\n\t0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018,\n\t0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29d5, 0xeb9: 0x29f5, 0xeba: 0x2a15, 0xebb: 0x0018,\n\t0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x2b55, 0xec1: 0x2b75, 0xec2: 0x2b95, 0xec3: 0x2bb5, 0xec4: 0x2bd5, 0xec5: 0x2bf5,\n\t0xec6: 0x2bf5, 0xec7: 0x2bf5, 0xec8: 0x2c15, 0xec9: 0x2c15, 0xeca: 0x2c15, 0xecb: 0x2c15,\n\t0xecc: 0x2c35, 0xecd: 0x2c35, 0xece: 0x2c35, 0xecf: 0x2c55, 0xed0: 0x2c75, 0xed1: 0x2c75,\n\t0xed2: 0x2a95, 0xed3: 0x2a95, 0xed4: 0x2c75, 0xed5: 0x2c75, 0xed6: 0x2c95, 0xed7: 0x2c95,\n\t0xed8: 0x2c75, 0xed9: 0x2c75, 0xeda: 0x2a95, 0xedb: 0x2a95, 0xedc: 0x2c75, 0xedd: 0x2c75,\n\t0xede: 0x2c55, 0xedf: 0x2c55, 0xee0: 0x2cb5, 0xee1: 0x2cb5, 0xee2: 0x2cd5, 0xee3: 0x2cd5,\n\t0xee4: 0x0040, 0xee5: 0x2cf5, 0xee6: 0x2d15, 0xee7: 0x2d35, 0xee8: 0x2d35, 0xee9: 0x2d55,\n\t0xeea: 0x2d75, 0xeeb: 0x2d95, 0xeec: 0x2db5, 0xeed: 0x2dd5, 0xeee: 0x2df5, 0xeef: 0x2e15,\n\t0xef0: 0x2e35, 0xef1: 0x2e55, 0xef2: 0x2e55, 0xef3: 0x2e75, 0xef4: 0x2e95, 0xef5: 0x2e95,\n\t0xef6: 0x2eb5, 0xef7: 0x2ed5, 0xef8: 0x2e75, 0xef9: 0x2ef5, 0xefa: 0x2f15, 0xefb: 0x2ef5,\n\t0xefc: 0x2e75, 0xefd: 0x2f35, 0xefe: 0x2f55, 0xeff: 0x2f75,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x2f95, 0xf01: 0x2fb5, 0xf02: 0x2d15, 0xf03: 0x2cf5, 0xf04: 0x2fd5, 0xf05: 0x2ff5,\n\t0xf06: 0x3015, 0xf07: 0x3035, 0xf08: 0x3055, 0xf09: 0x3075, 0xf0a: 0x3095, 0xf0b: 0x30b5,\n\t0xf0c: 0x30d5, 0xf0d: 0x30f5, 0xf0e: 0x3115, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018,\n\t0xf12: 0x3135, 0xf13: 0x3155, 0xf14: 0x3175, 0xf15: 0x3195, 0xf16: 0x31b5, 0xf17: 0x31d5,\n\t0xf18: 0x31f5, 0xf19: 0x3215, 0xf1a: 0x3235, 0xf1b: 0x3255, 0xf1c: 0x3175, 0xf1d: 0x3275,\n\t0xf1e: 0x3295, 0xf1f: 0x32b5, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008,\n\t0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008,\n\t0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008,\n\t0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008,\n\t0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0040,\n\t0xf3c: 0x0040, 0xf3d: 0x0040, 0xf3e: 0x0040, 0xf3f: 0x0040,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32d5, 0xf45: 0x32f5,\n\t0xf46: 0x3315, 0xf47: 0x3335, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018,\n\t0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x3355, 0xf51: 0x3761,\n\t0xf52: 0x3779, 0xf53: 0x3791, 0xf54: 0x37a9, 0xf55: 0x37c1, 0xf56: 0x37d9, 0xf57: 0x37f1,\n\t0xf58: 0x3809, 0xf59: 0x3821, 0xf5a: 0x3839, 0xf5b: 0x3851, 0xf5c: 0x3869, 0xf5d: 0x3881,\n\t0xf5e: 0x3899, 0xf5f: 0x38b1, 0xf60: 0x3375, 0xf61: 0x3395, 0xf62: 0x33b5, 0xf63: 0x33d5,\n\t0xf64: 0x33f5, 0xf65: 0x33f5, 0xf66: 0x3415, 0xf67: 0x3435, 0xf68: 0x3455, 0xf69: 0x3475,\n\t0xf6a: 0x3495, 0xf6b: 0x34b5, 0xf6c: 0x34d5, 0xf6d: 0x34f5, 0xf6e: 0x3515, 0xf6f: 0x3535,\n\t0xf70: 0x3555, 0xf71: 0x3575, 0xf72: 0x3595, 0xf73: 0x35b5, 0xf74: 0x35d5, 0xf75: 0x35f5,\n\t0xf76: 0x3615, 0xf77: 0x3635, 0xf78: 0x3655, 0xf79: 0x3675, 0xf7a: 0x3695, 0xf7b: 0x36b5,\n\t0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36d5, 0xf7f: 0x0018,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x36f5, 0xf81: 0x3715, 0xf82: 0x3735, 0xf83: 0x3755, 0xf84: 0x3775, 0xf85: 0x3795,\n\t0xf86: 0x37b5, 0xf87: 0x37d5, 0xf88: 0x37f5, 0xf89: 0x3815, 0xf8a: 0x3835, 0xf8b: 0x3855,\n\t0xf8c: 0x3875, 0xf8d: 0x3895, 0xf8e: 0x38b5, 0xf8f: 0x38d5, 0xf90: 0x38f5, 0xf91: 0x3915,\n\t0xf92: 0x3935, 0xf93: 0x3955, 0xf94: 0x3975, 0xf95: 0x3995, 0xf96: 0x39b5, 0xf97: 0x39d5,\n\t0xf98: 0x39f5, 0xf99: 0x3a15, 0xf9a: 0x3a35, 0xf9b: 0x3a55, 0xf9c: 0x3a75, 0xf9d: 0x3a95,\n\t0xf9e: 0x3ab5, 0xf9f: 0x3ad5, 0xfa0: 0x3af5, 0xfa1: 0x3b15, 0xfa2: 0x3b35, 0xfa3: 0x3b55,\n\t0xfa4: 0x3b75, 0xfa5: 0x3b95, 0xfa6: 0x1295, 0xfa7: 0x3bb5, 0xfa8: 0x3bd5, 0xfa9: 0x3bf5,\n\t0xfaa: 0x3c15, 0xfab: 0x3c35, 0xfac: 0x3c55, 0xfad: 0x3c75, 0xfae: 0x23b5, 0xfaf: 0x3c95,\n\t0xfb0: 0x3cb5, 0xfb1: 0x3939, 0xfb2: 0x3951, 0xfb3: 0x3969, 0xfb4: 0x3981, 0xfb5: 0x3999,\n\t0xfb6: 0x39b1, 0xfb7: 0x39c9, 0xfb8: 0x39e1, 0xfb9: 0x39f9, 0xfba: 0x3a11, 0xfbb: 0x3a29,\n\t0xfbc: 0x3a41, 0xfbd: 0x3a59, 0xfbe: 0x3a71, 0xfbf: 0x3a89,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x3aa1, 0xfc1: 0x3ac9, 0xfc2: 0x3af1, 0xfc3: 0x3b19, 0xfc4: 0x3b41, 0xfc5: 0x3b69,\n\t0xfc6: 0x3b91, 0xfc7: 0x3bb9, 0xfc8: 0x3be1, 0xfc9: 0x3c09, 0xfca: 0x3c39, 0xfcb: 0x3c69,\n\t0xfcc: 0x3c99, 0xfcd: 0x3cd5, 0xfce: 0x3cb1, 0xfcf: 0x3cf5, 0xfd0: 0x3d15, 0xfd1: 0x3d2d,\n\t0xfd2: 0x3d45, 0xfd3: 0x3d5d, 0xfd4: 0x3d75, 0xfd5: 0x3d75, 0xfd6: 0x3d5d, 0xfd7: 0x3d8d,\n\t0xfd8: 0x07d5, 0xfd9: 0x3da5, 0xfda: 0x3dbd, 0xfdb: 0x3dd5, 0xfdc: 0x3ded, 0xfdd: 0x3e05,\n\t0xfde: 0x3e1d, 0xfdf: 0x3e35, 0xfe0: 0x3e4d, 0xfe1: 0x3e65, 0xfe2: 0x3e7d, 0xfe3: 0x3e95,\n\t0xfe4: 0x3ead, 0xfe5: 0x3ead, 0xfe6: 0x3ec5, 0xfe7: 0x3ec5, 0xfe8: 0x3edd, 0xfe9: 0x3edd,\n\t0xfea: 0x3ef5, 0xfeb: 0x3f0d, 0xfec: 0x3f25, 0xfed: 0x3f3d, 0xfee: 0x3f55, 0xfef: 0x3f55,\n\t0xff0: 0x3f6d, 0xff1: 0x3f6d, 0xff2: 0x3f6d, 0xff3: 0x3f85, 0xff4: 0x3f9d, 0xff5: 0x3fb5,\n\t0xff6: 0x3fcd, 0xff7: 0x3fb5, 0xff8: 0x3fe5, 0xff9: 0x3ffd, 0xffa: 0x3f85, 0xffb: 0x4015,\n\t0xffc: 0x402d, 0xffd: 0x402d, 0xffe: 0x402d, 0xfff: 0x0040,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x3cc9, 0x1001: 0x3d31, 0x1002: 0x3d99, 0x1003: 0x3e01, 0x1004: 0x3e51, 0x1005: 0x3eb9,\n\t0x1006: 0x3f09, 0x1007: 0x3f59, 0x1008: 0x3fd9, 0x1009: 0x4041, 0x100a: 0x4091, 0x100b: 0x40e1,\n\t0x100c: 0x4131, 0x100d: 0x4199, 0x100e: 0x4201, 0x100f: 0x4251, 0x1010: 0x42a1, 0x1011: 0x42d9,\n\t0x1012: 0x4329, 0x1013: 0x4391, 0x1014: 0x43f9, 0x1015: 0x4431, 0x1016: 0x44b1, 0x1017: 0x4549,\n\t0x1018: 0x45c9, 0x1019: 0x4619, 0x101a: 0x4699, 0x101b: 0x4719, 0x101c: 0x4781, 0x101d: 0x47d1,\n\t0x101e: 0x4821, 0x101f: 0x4871, 0x1020: 0x48d9, 0x1021: 0x4959, 0x1022: 0x49c1, 0x1023: 0x4a11,\n\t0x1024: 0x4a61, 0x1025: 0x4ab1, 0x1026: 0x4ae9, 0x1027: 0x4b21, 0x1028: 0x4b59, 0x1029: 0x4b91,\n\t0x102a: 0x4be1, 0x102b: 0x4c31, 0x102c: 0x4cb1, 0x102d: 0x4d01, 0x102e: 0x4d69, 0x102f: 0x4de9,\n\t0x1030: 0x4e39, 0x1031: 0x4e71, 0x1032: 0x4ea9, 0x1033: 0x4f29, 0x1034: 0x4f91, 0x1035: 0x5011,\n\t0x1036: 0x5061, 0x1037: 0x50e1, 0x1038: 0x5119, 0x1039: 0x5169, 0x103a: 0x51b9, 0x103b: 0x5209,\n\t0x103c: 0x5259, 0x103d: 0x52a9, 0x103e: 0x5311, 0x103f: 0x5361,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x5399, 0x1041: 0x53e9, 0x1042: 0x5439, 0x1043: 0x5489, 0x1044: 0x54f1, 0x1045: 0x5541,\n\t0x1046: 0x5591, 0x1047: 0x55e1, 0x1048: 0x5661, 0x1049: 0x56c9, 0x104a: 0x5701, 0x104b: 0x5781,\n\t0x104c: 0x57b9, 0x104d: 0x5821, 0x104e: 0x5889, 0x104f: 0x58d9, 0x1050: 0x5929, 0x1051: 0x5979,\n\t0x1052: 0x59e1, 0x1053: 0x5a19, 0x1054: 0x5a69, 0x1055: 0x5ad1, 0x1056: 0x5b09, 0x1057: 0x5b89,\n\t0x1058: 0x5bd9, 0x1059: 0x5c01, 0x105a: 0x5c29, 0x105b: 0x5c51, 0x105c: 0x5c79, 0x105d: 0x5ca1,\n\t0x105e: 0x5cc9, 0x105f: 0x5cf1, 0x1060: 0x5d19, 0x1061: 0x5d41, 0x1062: 0x5d69, 0x1063: 0x5d99,\n\t0x1064: 0x5dc9, 0x1065: 0x5df9, 0x1066: 0x5e29, 0x1067: 0x5e59, 0x1068: 0x5e89, 0x1069: 0x5eb9,\n\t0x106a: 0x5ee9, 0x106b: 0x5f19, 0x106c: 0x5f49, 0x106d: 0x5f79, 0x106e: 0x5fa9, 0x106f: 0x5fd9,\n\t0x1070: 0x6009, 0x1071: 0x4045, 0x1072: 0x6039, 0x1073: 0x6051, 0x1074: 0x4065, 0x1075: 0x6069,\n\t0x1076: 0x6081, 0x1077: 0x6099, 0x1078: 0x4085, 0x1079: 0x4085, 0x107a: 0x60b1, 0x107b: 0x60c9,\n\t0x107c: 0x6101, 0x107d: 0x6139, 0x107e: 0x6171, 0x107f: 0x61a9,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x6211, 0x1081: 0x6229, 0x1082: 0x40a5, 0x1083: 0x6241, 0x1084: 0x6259, 0x1085: 0x6271,\n\t0x1086: 0x6289, 0x1087: 0x62a1, 0x1088: 0x40c5, 0x1089: 0x62b9, 0x108a: 0x62e1, 0x108b: 0x62f9,\n\t0x108c: 0x40e5, 0x108d: 0x40e5, 0x108e: 0x6311, 0x108f: 0x6329, 0x1090: 0x6341, 0x1091: 0x4105,\n\t0x1092: 0x4125, 0x1093: 0x4145, 0x1094: 0x4165, 0x1095: 0x4185, 0x1096: 0x6359, 0x1097: 0x6371,\n\t0x1098: 0x6389, 0x1099: 0x63a1, 0x109a: 0x63b9, 0x109b: 0x41a5, 0x109c: 0x63d1, 0x109d: 0x63e9,\n\t0x109e: 0x6401, 0x109f: 0x41c5, 0x10a0: 0x41e5, 0x10a1: 0x6419, 0x10a2: 0x4205, 0x10a3: 0x4225,\n\t0x10a4: 0x4245, 0x10a5: 0x6431, 0x10a6: 0x4265, 0x10a7: 0x6449, 0x10a8: 0x6479, 0x10a9: 0x6211,\n\t0x10aa: 0x4285, 0x10ab: 0x42a5, 0x10ac: 0x42c5, 0x10ad: 0x42e5, 0x10ae: 0x64b1, 0x10af: 0x64f1,\n\t0x10b0: 0x6539, 0x10b1: 0x6551, 0x10b2: 0x4305, 0x10b3: 0x6569, 0x10b4: 0x6581, 0x10b5: 0x6599,\n\t0x10b6: 0x4325, 0x10b7: 0x65b1, 0x10b8: 0x65c9, 0x10b9: 0x65b1, 0x10ba: 0x65e1, 0x10bb: 0x65f9,\n\t0x10bc: 0x4345, 0x10bd: 0x6611, 0x10be: 0x6629, 0x10bf: 0x6611,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x4365, 0x10c1: 0x4385, 0x10c2: 0x0040, 0x10c3: 0x6641, 0x10c4: 0x6659, 0x10c5: 0x6671,\n\t0x10c6: 0x6689, 0x10c7: 0x0040, 0x10c8: 0x66c1, 0x10c9: 0x66d9, 0x10ca: 0x66f1, 0x10cb: 0x6709,\n\t0x10cc: 0x6721, 0x10cd: 0x6739, 0x10ce: 0x6401, 0x10cf: 0x6751, 0x10d0: 0x6769, 0x10d1: 0x6781,\n\t0x10d2: 0x43a5, 0x10d3: 0x6799, 0x10d4: 0x6289, 0x10d5: 0x43c5, 0x10d6: 0x43e5, 0x10d7: 0x67b1,\n\t0x10d8: 0x0040, 0x10d9: 0x4405, 0x10da: 0x67c9, 0x10db: 0x67e1, 0x10dc: 0x67f9, 0x10dd: 0x6811,\n\t0x10de: 0x6829, 0x10df: 0x6859, 0x10e0: 0x6889, 0x10e1: 0x68b1, 0x10e2: 0x68d9, 0x10e3: 0x6901,\n\t0x10e4: 0x6929, 0x10e5: 0x6951, 0x10e6: 0x6979, 0x10e7: 0x69a1, 0x10e8: 0x69c9, 0x10e9: 0x69f1,\n\t0x10ea: 0x6a21, 0x10eb: 0x6a51, 0x10ec: 0x6a81, 0x10ed: 0x6ab1, 0x10ee: 0x6ae1, 0x10ef: 0x6b11,\n\t0x10f0: 0x6b41, 0x10f1: 0x6b71, 0x10f2: 0x6ba1, 0x10f3: 0x6bd1, 0x10f4: 0x6c01, 0x10f5: 0x6c31,\n\t0x10f6: 0x6c61, 0x10f7: 0x6c91, 0x10f8: 0x6cc1, 0x10f9: 0x6cf1, 0x10fa: 0x6d21, 0x10fb: 0x6d51,\n\t0x10fc: 0x6d81, 0x10fd: 0x6db1, 0x10fe: 0x6de1, 0x10ff: 0x4425,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008,\n\t0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008,\n\t0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008,\n\t0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008,\n\t0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0xe00d, 0x111d: 0x0008,\n\t0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008,\n\t0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008,\n\t0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x3308,\n\t0x1130: 0x3318, 0x1131: 0x3318, 0x1132: 0x3318, 0x1133: 0x0018, 0x1134: 0x3308, 0x1135: 0x3308,\n\t0x1136: 0x3308, 0x1137: 0x3308, 0x1138: 0x3308, 0x1139: 0x3308, 0x113a: 0x3308, 0x113b: 0x3308,\n\t0x113c: 0x3308, 0x113d: 0x3308, 0x113e: 0x0018, 0x113f: 0x0008,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008,\n\t0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008,\n\t0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008,\n\t0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008,\n\t0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0x0ea1, 0x115d: 0x6e11,\n\t0x115e: 0x3308, 0x115f: 0x3308, 0x1160: 0x0008, 0x1161: 0x0008, 0x1162: 0x0008, 0x1163: 0x0008,\n\t0x1164: 0x0008, 0x1165: 0x0008, 0x1166: 0x0008, 0x1167: 0x0008, 0x1168: 0x0008, 0x1169: 0x0008,\n\t0x116a: 0x0008, 0x116b: 0x0008, 0x116c: 0x0008, 0x116d: 0x0008, 0x116e: 0x0008, 0x116f: 0x0008,\n\t0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008,\n\t0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0x0008, 0x117a: 0x0008, 0x117b: 0x0008,\n\t0x117c: 0x0008, 0x117d: 0x0008, 0x117e: 0x0008, 0x117f: 0x0008,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x0018, 0x1181: 0x0018, 0x1182: 0x0018, 0x1183: 0x0018, 0x1184: 0x0018, 0x1185: 0x0018,\n\t0x1186: 0x0018, 0x1187: 0x0018, 0x1188: 0x0018, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0x0018,\n\t0x118c: 0x0018, 0x118d: 0x0018, 0x118e: 0x0018, 0x118f: 0x0018, 0x1190: 0x0018, 0x1191: 0x0018,\n\t0x1192: 0x0018, 0x1193: 0x0018, 0x1194: 0x0018, 0x1195: 0x0018, 0x1196: 0x0018, 0x1197: 0x0008,\n\t0x1198: 0x0008, 0x1199: 0x0008, 0x119a: 0x0008, 0x119b: 0x0008, 0x119c: 0x0008, 0x119d: 0x0008,\n\t0x119e: 0x0008, 0x119f: 0x0008, 0x11a0: 0x0018, 0x11a1: 0x0018, 0x11a2: 0xe00d, 0x11a3: 0x0008,\n\t0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,\n\t0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008,\n\t0x11b0: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008,\n\t0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008,\n\t0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008,\n\t0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0xe00d, 0x11c9: 0x0008, 0x11ca: 0xe00d, 0x11cb: 0x0008,\n\t0x11cc: 0xe00d, 0x11cd: 0x0008, 0x11ce: 0xe00d, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008,\n\t0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0xe00d, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008,\n\t0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008,\n\t0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008,\n\t0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008,\n\t0x11ea: 0xe00d, 0x11eb: 0x0008, 0x11ec: 0xe00d, 0x11ed: 0x0008, 0x11ee: 0xe00d, 0x11ef: 0x0008,\n\t0x11f0: 0xe0fd, 0x11f1: 0x0008, 0x11f2: 0x0008, 0x11f3: 0x0008, 0x11f4: 0x0008, 0x11f5: 0x0008,\n\t0x11f6: 0x0008, 0x11f7: 0x0008, 0x11f8: 0x0008, 0x11f9: 0xe01d, 0x11fa: 0x0008, 0x11fb: 0xe03d,\n\t0x11fc: 0x0008, 0x11fd: 0x4445, 0x11fe: 0xe00d, 0x11ff: 0x0008,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0xe00d, 0x1205: 0x0008,\n\t0x1206: 0xe00d, 0x1207: 0x0008, 0x1208: 0x0008, 0x1209: 0x0018, 0x120a: 0x0018, 0x120b: 0xe03d,\n\t0x120c: 0x0008, 0x120d: 0x11d9, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0xe00d, 0x1211: 0x0008,\n\t0x1212: 0xe00d, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008,\n\t0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0xe00d, 0x121b: 0x0008, 0x121c: 0xe00d, 0x121d: 0x0008,\n\t0x121e: 0xe00d, 0x121f: 0x0008, 0x1220: 0xe00d, 0x1221: 0x0008, 0x1222: 0xe00d, 0x1223: 0x0008,\n\t0x1224: 0xe00d, 0x1225: 0x0008, 0x1226: 0xe00d, 0x1227: 0x0008, 0x1228: 0xe00d, 0x1229: 0x0008,\n\t0x122a: 0x6e29, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e41, 0x122e: 0x1221, 0x122f: 0x0008,\n\t0x1230: 0x6e59, 0x1231: 0x6e71, 0x1232: 0x1239, 0x1233: 0x4465, 0x1234: 0xe00d, 0x1235: 0x0008,\n\t0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0xe00d, 0x1239: 0x0008, 0x123a: 0xe00d, 0x123b: 0x0008,\n\t0x123c: 0xe00d, 0x123d: 0x0008, 0x123e: 0xe00d, 0x123f: 0x0008,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x650d, 0x1241: 0x652d, 0x1242: 0x654d, 0x1243: 0x656d, 0x1244: 0x658d, 0x1245: 0x65ad,\n\t0x1246: 0x65cd, 0x1247: 0x65ed, 0x1248: 0x660d, 0x1249: 0x662d, 0x124a: 0x664d, 0x124b: 0x666d,\n\t0x124c: 0x668d, 0x124d: 0x66ad, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x66cd, 0x1251: 0x0008,\n\t0x1252: 0x66ed, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x670d, 0x1256: 0x672d, 0x1257: 0x674d,\n\t0x1258: 0x676d, 0x1259: 0x678d, 0x125a: 0x67ad, 0x125b: 0x67cd, 0x125c: 0x67ed, 0x125d: 0x680d,\n\t0x125e: 0x682d, 0x125f: 0x0008, 0x1260: 0x684d, 0x1261: 0x0008, 0x1262: 0x686d, 0x1263: 0x0008,\n\t0x1264: 0x0008, 0x1265: 0x688d, 0x1266: 0x68ad, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008,\n\t0x126a: 0x68cd, 0x126b: 0x68ed, 0x126c: 0x690d, 0x126d: 0x692d, 0x126e: 0x694d, 0x126f: 0x696d,\n\t0x1270: 0x698d, 0x1271: 0x69ad, 0x1272: 0x69cd, 0x1273: 0x69ed, 0x1274: 0x6a0d, 0x1275: 0x6a2d,\n\t0x1276: 0x6a4d, 0x1277: 0x6a6d, 0x1278: 0x6a8d, 0x1279: 0x6aad, 0x127a: 0x6acd, 0x127b: 0x6aed,\n\t0x127c: 0x6b0d, 0x127d: 0x6b2d, 0x127e: 0x6b4d, 0x127f: 0x6b6d,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x7acd, 0x1281: 0x7aed, 0x1282: 0x7b0d, 0x1283: 0x7b2d, 0x1284: 0x7b4d, 0x1285: 0x7b6d,\n\t0x1286: 0x7b8d, 0x1287: 0x7bad, 0x1288: 0x7bcd, 0x1289: 0x7bed, 0x128a: 0x7c0d, 0x128b: 0x7c2d,\n\t0x128c: 0x7c4d, 0x128d: 0x7c6d, 0x128e: 0x7c8d, 0x128f: 0x6ec9, 0x1290: 0x6ef1, 0x1291: 0x6f19,\n\t0x1292: 0x7cad, 0x1293: 0x7ccd, 0x1294: 0x7ced, 0x1295: 0x6f41, 0x1296: 0x6f69, 0x1297: 0x6f91,\n\t0x1298: 0x7d0d, 0x1299: 0x7d2d, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040,\n\t0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040,\n\t0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040,\n\t0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040,\n\t0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040,\n\t0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040,\n\t0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x6fb9, 0x12c1: 0x6fd1, 0x12c2: 0x6fe9, 0x12c3: 0x7d4d, 0x12c4: 0x7d6d, 0x12c5: 0x7001,\n\t0x12c6: 0x7001, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040,\n\t0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040,\n\t0x12d2: 0x0040, 0x12d3: 0x7019, 0x12d4: 0x7041, 0x12d5: 0x7069, 0x12d6: 0x7091, 0x12d7: 0x70b9,\n\t0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x70e1,\n\t0x12de: 0x3308, 0x12df: 0x7109, 0x12e0: 0x7131, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7149,\n\t0x12e4: 0x7161, 0x12e5: 0x7179, 0x12e6: 0x7191, 0x12e7: 0x71a9, 0x12e8: 0x71c1, 0x12e9: 0x1fb2,\n\t0x12ea: 0x71d9, 0x12eb: 0x7201, 0x12ec: 0x7229, 0x12ed: 0x7261, 0x12ee: 0x7299, 0x12ef: 0x72c1,\n\t0x12f0: 0x72e9, 0x12f1: 0x7311, 0x12f2: 0x7339, 0x12f3: 0x7361, 0x12f4: 0x7389, 0x12f5: 0x73b1,\n\t0x12f6: 0x73d9, 0x12f7: 0x0040, 0x12f8: 0x7401, 0x12f9: 0x7429, 0x12fa: 0x7451, 0x12fb: 0x7479,\n\t0x12fc: 0x74a1, 0x12fd: 0x0040, 0x12fe: 0x74c9, 0x12ff: 0x0040,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x74f1, 0x1301: 0x7519, 0x1302: 0x0040, 0x1303: 0x7541, 0x1304: 0x7569, 0x1305: 0x0040,\n\t0x1306: 0x7591, 0x1307: 0x75b9, 0x1308: 0x75e1, 0x1309: 0x7609, 0x130a: 0x7631, 0x130b: 0x7659,\n\t0x130c: 0x7681, 0x130d: 0x76a9, 0x130e: 0x76d1, 0x130f: 0x76f9, 0x1310: 0x7721, 0x1311: 0x7721,\n\t0x1312: 0x7739, 0x1313: 0x7739, 0x1314: 0x7739, 0x1315: 0x7739, 0x1316: 0x7751, 0x1317: 0x7751,\n\t0x1318: 0x7751, 0x1319: 0x7751, 0x131a: 0x7769, 0x131b: 0x7769, 0x131c: 0x7769, 0x131d: 0x7769,\n\t0x131e: 0x7781, 0x131f: 0x7781, 0x1320: 0x7781, 0x1321: 0x7781, 0x1322: 0x7799, 0x1323: 0x7799,\n\t0x1324: 0x7799, 0x1325: 0x7799, 0x1326: 0x77b1, 0x1327: 0x77b1, 0x1328: 0x77b1, 0x1329: 0x77b1,\n\t0x132a: 0x77c9, 0x132b: 0x77c9, 0x132c: 0x77c9, 0x132d: 0x77c9, 0x132e: 0x77e1, 0x132f: 0x77e1,\n\t0x1330: 0x77e1, 0x1331: 0x77e1, 0x1332: 0x77f9, 0x1333: 0x77f9, 0x1334: 0x77f9, 0x1335: 0x77f9,\n\t0x1336: 0x7811, 0x1337: 0x7811, 0x1338: 0x7811, 0x1339: 0x7811, 0x133a: 0x7829, 0x133b: 0x7829,\n\t0x133c: 0x7829, 0x133d: 0x7829, 0x133e: 0x7841, 0x133f: 0x7841,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x7841, 0x1341: 0x7841, 0x1342: 0x7859, 0x1343: 0x7859, 0x1344: 0x7871, 0x1345: 0x7871,\n\t0x1346: 0x7889, 0x1347: 0x7889, 0x1348: 0x78a1, 0x1349: 0x78a1, 0x134a: 0x78b9, 0x134b: 0x78b9,\n\t0x134c: 0x78d1, 0x134d: 0x78d1, 0x134e: 0x78e9, 0x134f: 0x78e9, 0x1350: 0x78e9, 0x1351: 0x78e9,\n\t0x1352: 0x7901, 0x1353: 0x7901, 0x1354: 0x7901, 0x1355: 0x7901, 0x1356: 0x7919, 0x1357: 0x7919,\n\t0x1358: 0x7919, 0x1359: 0x7919, 0x135a: 0x7931, 0x135b: 0x7931, 0x135c: 0x7931, 0x135d: 0x7931,\n\t0x135e: 0x7949, 0x135f: 0x7949, 0x1360: 0x7961, 0x1361: 0x7961, 0x1362: 0x7961, 0x1363: 0x7961,\n\t0x1364: 0x7979, 0x1365: 0x7979, 0x1366: 0x7991, 0x1367: 0x7991, 0x1368: 0x7991, 0x1369: 0x7991,\n\t0x136a: 0x79a9, 0x136b: 0x79a9, 0x136c: 0x79a9, 0x136d: 0x79a9, 0x136e: 0x79c1, 0x136f: 0x79c1,\n\t0x1370: 0x79d9, 0x1371: 0x79d9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818,\n\t0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818,\n\t0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0040, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040,\n\t0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040,\n\t0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040,\n\t0x1392: 0x0040, 0x1393: 0x79f1, 0x1394: 0x79f1, 0x1395: 0x79f1, 0x1396: 0x79f1, 0x1397: 0x7a09,\n\t0x1398: 0x7a09, 0x1399: 0x7a21, 0x139a: 0x7a21, 0x139b: 0x7a39, 0x139c: 0x7a39, 0x139d: 0x0479,\n\t0x139e: 0x7a51, 0x139f: 0x7a51, 0x13a0: 0x7a69, 0x13a1: 0x7a69, 0x13a2: 0x7a81, 0x13a3: 0x7a81,\n\t0x13a4: 0x7a99, 0x13a5: 0x7a99, 0x13a6: 0x7a99, 0x13a7: 0x7a99, 0x13a8: 0x7ab1, 0x13a9: 0x7ab1,\n\t0x13aa: 0x7ac9, 0x13ab: 0x7ac9, 0x13ac: 0x7af1, 0x13ad: 0x7af1, 0x13ae: 0x7b19, 0x13af: 0x7b19,\n\t0x13b0: 0x7b41, 0x13b1: 0x7b41, 0x13b2: 0x7b69, 0x13b3: 0x7b69, 0x13b4: 0x7b91, 0x13b5: 0x7b91,\n\t0x13b6: 0x7bb9, 0x13b7: 0x7bb9, 0x13b8: 0x7bb9, 0x13b9: 0x7be1, 0x13ba: 0x7be1, 0x13bb: 0x7be1,\n\t0x13bc: 0x7c09, 0x13bd: 0x7c09, 0x13be: 0x7c09, 0x13bf: 0x7c09,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x85f9, 0x13c1: 0x8621, 0x13c2: 0x8649, 0x13c3: 0x8671, 0x13c4: 0x8699, 0x13c5: 0x86c1,\n\t0x13c6: 0x86e9, 0x13c7: 0x8711, 0x13c8: 0x8739, 0x13c9: 0x8761, 0x13ca: 0x8789, 0x13cb: 0x87b1,\n\t0x13cc: 0x87d9, 0x13cd: 0x8801, 0x13ce: 0x8829, 0x13cf: 0x8851, 0x13d0: 0x8879, 0x13d1: 0x88a1,\n\t0x13d2: 0x88c9, 0x13d3: 0x88f1, 0x13d4: 0x8919, 0x13d5: 0x8941, 0x13d6: 0x8969, 0x13d7: 0x8991,\n\t0x13d8: 0x89b9, 0x13d9: 0x89e1, 0x13da: 0x8a09, 0x13db: 0x8a31, 0x13dc: 0x8a59, 0x13dd: 0x8a81,\n\t0x13de: 0x8aaa, 0x13df: 0x8ada, 0x13e0: 0x8b0a, 0x13e1: 0x8b3a, 0x13e2: 0x8b6a, 0x13e3: 0x8b9a,\n\t0x13e4: 0x8bc9, 0x13e5: 0x8bf1, 0x13e6: 0x7c71, 0x13e7: 0x8c19, 0x13e8: 0x7be1, 0x13e9: 0x7c99,\n\t0x13ea: 0x8c41, 0x13eb: 0x8c69, 0x13ec: 0x7d39, 0x13ed: 0x8c91, 0x13ee: 0x7d61, 0x13ef: 0x7d89,\n\t0x13f0: 0x8cb9, 0x13f1: 0x8ce1, 0x13f2: 0x7e29, 0x13f3: 0x8d09, 0x13f4: 0x7e51, 0x13f5: 0x7e79,\n\t0x13f6: 0x8d31, 0x13f7: 0x8d59, 0x13f8: 0x7ec9, 0x13f9: 0x8d81, 0x13fa: 0x7ef1, 0x13fb: 0x7f19,\n\t0x13fc: 0x83a1, 0x13fd: 0x83c9, 0x13fe: 0x8441, 0x13ff: 0x8469,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x8491, 0x1401: 0x8531, 0x1402: 0x8559, 0x1403: 0x8581, 0x1404: 0x85a9, 0x1405: 0x8649,\n\t0x1406: 0x8671, 0x1407: 0x8699, 0x1408: 0x8da9, 0x1409: 0x8739, 0x140a: 0x8dd1, 0x140b: 0x8df9,\n\t0x140c: 0x8829, 0x140d: 0x8e21, 0x140e: 0x8851, 0x140f: 0x8879, 0x1410: 0x8a81, 0x1411: 0x8e49,\n\t0x1412: 0x8e71, 0x1413: 0x89b9, 0x1414: 0x8e99, 0x1415: 0x89e1, 0x1416: 0x8a09, 0x1417: 0x7c21,\n\t0x1418: 0x7c49, 0x1419: 0x8ec1, 0x141a: 0x7c71, 0x141b: 0x8ee9, 0x141c: 0x7cc1, 0x141d: 0x7ce9,\n\t0x141e: 0x7d11, 0x141f: 0x7d39, 0x1420: 0x8f11, 0x1421: 0x7db1, 0x1422: 0x7dd9, 0x1423: 0x7e01,\n\t0x1424: 0x7e29, 0x1425: 0x8f39, 0x1426: 0x7ec9, 0x1427: 0x7f41, 0x1428: 0x7f69, 0x1429: 0x7f91,\n\t0x142a: 0x7fb9, 0x142b: 0x7fe1, 0x142c: 0x8031, 0x142d: 0x8059, 0x142e: 0x8081, 0x142f: 0x80a9,\n\t0x1430: 0x80d1, 0x1431: 0x80f9, 0x1432: 0x8f61, 0x1433: 0x8121, 0x1434: 0x8149, 0x1435: 0x8171,\n\t0x1436: 0x8199, 0x1437: 0x81c1, 0x1438: 0x81e9, 0x1439: 0x8239, 0x143a: 0x8261, 0x143b: 0x8289,\n\t0x143c: 0x82b1, 0x143d: 0x82d9, 0x143e: 0x8301, 0x143f: 0x8329,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x8351, 0x1441: 0x8379, 0x1442: 0x83f1, 0x1443: 0x8419, 0x1444: 0x84b9, 0x1445: 0x84e1,\n\t0x1446: 0x8509, 0x1447: 0x8531, 0x1448: 0x8559, 0x1449: 0x85d1, 0x144a: 0x85f9, 0x144b: 0x8621,\n\t0x144c: 0x8649, 0x144d: 0x8f89, 0x144e: 0x86c1, 0x144f: 0x86e9, 0x1450: 0x8711, 0x1451: 0x8739,\n\t0x1452: 0x87b1, 0x1453: 0x87d9, 0x1454: 0x8801, 0x1455: 0x8829, 0x1456: 0x8fb1, 0x1457: 0x88a1,\n\t0x1458: 0x88c9, 0x1459: 0x8fd9, 0x145a: 0x8941, 0x145b: 0x8969, 0x145c: 0x8991, 0x145d: 0x89b9,\n\t0x145e: 0x9001, 0x145f: 0x7c71, 0x1460: 0x8ee9, 0x1461: 0x7d39, 0x1462: 0x8f11, 0x1463: 0x7e29,\n\t0x1464: 0x8f39, 0x1465: 0x7ec9, 0x1466: 0x9029, 0x1467: 0x80d1, 0x1468: 0x9051, 0x1469: 0x9079,\n\t0x146a: 0x90a1, 0x146b: 0x8531, 0x146c: 0x8559, 0x146d: 0x8649, 0x146e: 0x8829, 0x146f: 0x8fb1,\n\t0x1470: 0x89b9, 0x1471: 0x9001, 0x1472: 0x90c9, 0x1473: 0x9101, 0x1474: 0x9139, 0x1475: 0x9171,\n\t0x1476: 0x9199, 0x1477: 0x91c1, 0x1478: 0x91e9, 0x1479: 0x9211, 0x147a: 0x9239, 0x147b: 0x9261,\n\t0x147c: 0x9289, 0x147d: 0x92b1, 0x147e: 0x92d9, 0x147f: 0x9301,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x9329, 0x1481: 0x9351, 0x1482: 0x9379, 0x1483: 0x93a1, 0x1484: 0x93c9, 0x1485: 0x93f1,\n\t0x1486: 0x9419, 0x1487: 0x9441, 0x1488: 0x9469, 0x1489: 0x9491, 0x148a: 0x94b9, 0x148b: 0x94e1,\n\t0x148c: 0x9079, 0x148d: 0x9509, 0x148e: 0x9531, 0x148f: 0x9559, 0x1490: 0x9581, 0x1491: 0x9171,\n\t0x1492: 0x9199, 0x1493: 0x91c1, 0x1494: 0x91e9, 0x1495: 0x9211, 0x1496: 0x9239, 0x1497: 0x9261,\n\t0x1498: 0x9289, 0x1499: 0x92b1, 0x149a: 0x92d9, 0x149b: 0x9301, 0x149c: 0x9329, 0x149d: 0x9351,\n\t0x149e: 0x9379, 0x149f: 0x93a1, 0x14a0: 0x93c9, 0x14a1: 0x93f1, 0x14a2: 0x9419, 0x14a3: 0x9441,\n\t0x14a4: 0x9469, 0x14a5: 0x9491, 0x14a6: 0x94b9, 0x14a7: 0x94e1, 0x14a8: 0x9079, 0x14a9: 0x9509,\n\t0x14aa: 0x9531, 0x14ab: 0x9559, 0x14ac: 0x9581, 0x14ad: 0x9491, 0x14ae: 0x94b9, 0x14af: 0x94e1,\n\t0x14b0: 0x9079, 0x14b1: 0x9051, 0x14b2: 0x90a1, 0x14b3: 0x8211, 0x14b4: 0x8059, 0x14b5: 0x8081,\n\t0x14b6: 0x80a9, 0x14b7: 0x9491, 0x14b8: 0x94b9, 0x14b9: 0x94e1, 0x14ba: 0x8211, 0x14bb: 0x8239,\n\t0x14bc: 0x95a9, 0x14bd: 0x95a9, 0x14be: 0x0018, 0x14bf: 0x0018,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x0040, 0x14c1: 0x0040, 0x14c2: 0x0040, 0x14c3: 0x0040, 0x14c4: 0x0040, 0x14c5: 0x0040,\n\t0x14c6: 0x0040, 0x14c7: 0x0040, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040,\n\t0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x95d1, 0x14d1: 0x9609,\n\t0x14d2: 0x9609, 0x14d3: 0x9641, 0x14d4: 0x9679, 0x14d5: 0x96b1, 0x14d6: 0x96e9, 0x14d7: 0x9721,\n\t0x14d8: 0x9759, 0x14d9: 0x9759, 0x14da: 0x9791, 0x14db: 0x97c9, 0x14dc: 0x9801, 0x14dd: 0x9839,\n\t0x14de: 0x9871, 0x14df: 0x98a9, 0x14e0: 0x98a9, 0x14e1: 0x98e1, 0x14e2: 0x9919, 0x14e3: 0x9919,\n\t0x14e4: 0x9951, 0x14e5: 0x9951, 0x14e6: 0x9989, 0x14e7: 0x99c1, 0x14e8: 0x99c1, 0x14e9: 0x99f9,\n\t0x14ea: 0x9a31, 0x14eb: 0x9a31, 0x14ec: 0x9a69, 0x14ed: 0x9a69, 0x14ee: 0x9aa1, 0x14ef: 0x9ad9,\n\t0x14f0: 0x9ad9, 0x14f1: 0x9b11, 0x14f2: 0x9b11, 0x14f3: 0x9b49, 0x14f4: 0x9b81, 0x14f5: 0x9bb9,\n\t0x14f6: 0x9bf1, 0x14f7: 0x9bf1, 0x14f8: 0x9c29, 0x14f9: 0x9c61, 0x14fa: 0x9c99, 0x14fb: 0x9cd1,\n\t0x14fc: 0x9d09, 0x14fd: 0x9d09, 0x14fe: 0x9d41, 0x14ff: 0x9d79,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0xa949, 0x1501: 0xa981, 0x1502: 0xa9b9, 0x1503: 0xa8a1, 0x1504: 0x9bb9, 0x1505: 0x9989,\n\t0x1506: 0xa9f1, 0x1507: 0xaa29, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040,\n\t0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0040, 0x1510: 0x0040, 0x1511: 0x0040,\n\t0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040,\n\t0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040,\n\t0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040,\n\t0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040,\n\t0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040,\n\t0x1530: 0xaa61, 0x1531: 0xaa99, 0x1532: 0xaad1, 0x1533: 0xab19, 0x1534: 0xab61, 0x1535: 0xaba9,\n\t0x1536: 0xabf1, 0x1537: 0xac39, 0x1538: 0xac81, 0x1539: 0xacc9, 0x153a: 0xad02, 0x153b: 0xae12,\n\t0x153c: 0xae91, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0,\n\t0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0,\n\t0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0xaeda, 0x1551: 0x7d8d,\n\t0x1552: 0x0040, 0x1553: 0xaeea, 0x1554: 0x03c2, 0x1555: 0xaefa, 0x1556: 0xaf0a, 0x1557: 0x7dad,\n\t0x1558: 0x7dcd, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040,\n\t0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308,\n\t0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308,\n\t0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308,\n\t0x1570: 0x0040, 0x1571: 0x7ded, 0x1572: 0x7e0d, 0x1573: 0xaf1a, 0x1574: 0xaf1a, 0x1575: 0x1fd2,\n\t0x1576: 0x1fe2, 0x1577: 0xaf2a, 0x1578: 0xaf3a, 0x1579: 0x7e2d, 0x157a: 0x7e4d, 0x157b: 0x7e6d,\n\t0x157c: 0x7e2d, 0x157d: 0x7e8d, 0x157e: 0x7ead, 0x157f: 0x7e8d,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x7ecd, 0x1581: 0x7eed, 0x1582: 0x7f0d, 0x1583: 0x7eed, 0x1584: 0x7f2d, 0x1585: 0x0018,\n\t0x1586: 0x0018, 0x1587: 0xaf4a, 0x1588: 0xaf5a, 0x1589: 0x7f4e, 0x158a: 0x7f6e, 0x158b: 0x7f8e,\n\t0x158c: 0x7fae, 0x158d: 0xaf1a, 0x158e: 0xaf1a, 0x158f: 0xaf1a, 0x1590: 0xaeda, 0x1591: 0x7fcd,\n\t0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaeea, 0x1596: 0xaf0a, 0x1597: 0xaefa,\n\t0x1598: 0x7fed, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf2a, 0x159c: 0xaf3a, 0x159d: 0x7ecd,\n\t0x159e: 0x7f2d, 0x159f: 0xaf6a, 0x15a0: 0xaf7a, 0x15a1: 0xaf8a, 0x15a2: 0x1fb2, 0x15a3: 0xaf99,\n\t0x15a4: 0xafaa, 0x15a5: 0xafba, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xafca, 0x15a9: 0xafda,\n\t0x15aa: 0xafea, 0x15ab: 0xaffa, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040,\n\t0x15b0: 0x800e, 0x15b1: 0xb009, 0x15b2: 0x802e, 0x15b3: 0x0808, 0x15b4: 0x804e, 0x15b5: 0x0040,\n\t0x15b6: 0x806e, 0x15b7: 0xb031, 0x15b8: 0x808e, 0x15b9: 0xb059, 0x15ba: 0x80ae, 0x15bb: 0xb081,\n\t0x15bc: 0x80ce, 0x15bd: 0xb0a9, 0x15be: 0x80ee, 0x15bf: 0xb0d1,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0xb0f9, 0x15c1: 0xb111, 0x15c2: 0xb111, 0x15c3: 0xb129, 0x15c4: 0xb129, 0x15c5: 0xb141,\n\t0x15c6: 0xb141, 0x15c7: 0xb159, 0x15c8: 0xb159, 0x15c9: 0xb171, 0x15ca: 0xb171, 0x15cb: 0xb171,\n\t0x15cc: 0xb171, 0x15cd: 0xb189, 0x15ce: 0xb189, 0x15cf: 0xb1a1, 0x15d0: 0xb1a1, 0x15d1: 0xb1a1,\n\t0x15d2: 0xb1a1, 0x15d3: 0xb1b9, 0x15d4: 0xb1b9, 0x15d5: 0xb1d1, 0x15d6: 0xb1d1, 0x15d7: 0xb1d1,\n\t0x15d8: 0xb1d1, 0x15d9: 0xb1e9, 0x15da: 0xb1e9, 0x15db: 0xb1e9, 0x15dc: 0xb1e9, 0x15dd: 0xb201,\n\t0x15de: 0xb201, 0x15df: 0xb201, 0x15e0: 0xb201, 0x15e1: 0xb219, 0x15e2: 0xb219, 0x15e3: 0xb219,\n\t0x15e4: 0xb219, 0x15e5: 0xb231, 0x15e6: 0xb231, 0x15e7: 0xb231, 0x15e8: 0xb231, 0x15e9: 0xb249,\n\t0x15ea: 0xb249, 0x15eb: 0xb261, 0x15ec: 0xb261, 0x15ed: 0xb279, 0x15ee: 0xb279, 0x15ef: 0xb291,\n\t0x15f0: 0xb291, 0x15f1: 0xb2a9, 0x15f2: 0xb2a9, 0x15f3: 0xb2a9, 0x15f4: 0xb2a9, 0x15f5: 0xb2c1,\n\t0x15f6: 0xb2c1, 0x15f7: 0xb2c1, 0x15f8: 0xb2c1, 0x15f9: 0xb2d9, 0x15fa: 0xb2d9, 0x15fb: 0xb2d9,\n\t0x15fc: 0xb2d9, 0x15fd: 0xb2f1, 0x15fe: 0xb2f1, 0x15ff: 0xb2f1,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0xb2f1, 0x1601: 0xb309, 0x1602: 0xb309, 0x1603: 0xb309, 0x1604: 0xb309, 0x1605: 0xb321,\n\t0x1606: 0xb321, 0x1607: 0xb321, 0x1608: 0xb321, 0x1609: 0xb339, 0x160a: 0xb339, 0x160b: 0xb339,\n\t0x160c: 0xb339, 0x160d: 0xb351, 0x160e: 0xb351, 0x160f: 0xb351, 0x1610: 0xb351, 0x1611: 0xb369,\n\t0x1612: 0xb369, 0x1613: 0xb369, 0x1614: 0xb369, 0x1615: 0xb381, 0x1616: 0xb381, 0x1617: 0xb381,\n\t0x1618: 0xb381, 0x1619: 0xb399, 0x161a: 0xb399, 0x161b: 0xb399, 0x161c: 0xb399, 0x161d: 0xb3b1,\n\t0x161e: 0xb3b1, 0x161f: 0xb3b1, 0x1620: 0xb3b1, 0x1621: 0xb3c9, 0x1622: 0xb3c9, 0x1623: 0xb3c9,\n\t0x1624: 0xb3c9, 0x1625: 0xb3e1, 0x1626: 0xb3e1, 0x1627: 0xb3e1, 0x1628: 0xb3e1, 0x1629: 0xb3f9,\n\t0x162a: 0xb3f9, 0x162b: 0xb3f9, 0x162c: 0xb3f9, 0x162d: 0xb411, 0x162e: 0xb411, 0x162f: 0x7ab1,\n\t0x1630: 0x7ab1, 0x1631: 0xb429, 0x1632: 0xb429, 0x1633: 0xb429, 0x1634: 0xb429, 0x1635: 0xb441,\n\t0x1636: 0xb441, 0x1637: 0xb469, 0x1638: 0xb469, 0x1639: 0xb491, 0x163a: 0xb491, 0x163b: 0xb4b9,\n\t0x163c: 0xb4b9, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0040, 0x1641: 0xaefa, 0x1642: 0xb4e2, 0x1643: 0xaf6a, 0x1644: 0xafda, 0x1645: 0xafea,\n\t0x1646: 0xaf7a, 0x1647: 0xb4f2, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xaf8a, 0x164b: 0x1fb2,\n\t0x164c: 0xaeda, 0x164d: 0xaf99, 0x164e: 0x29d1, 0x164f: 0xb502, 0x1650: 0x1f41, 0x1651: 0x00c9,\n\t0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81,\n\t0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaeea, 0x165b: 0x03c2, 0x165c: 0xafaa, 0x165d: 0x1fc2,\n\t0x165e: 0xafba, 0x165f: 0xaf0a, 0x1660: 0xaffa, 0x1661: 0x0039, 0x1662: 0x0ee9, 0x1663: 0x1159,\n\t0x1664: 0x0ef9, 0x1665: 0x0f09, 0x1666: 0x1199, 0x1667: 0x0f31, 0x1668: 0x0249, 0x1669: 0x0f41,\n\t0x166a: 0x0259, 0x166b: 0x0f51, 0x166c: 0x0359, 0x166d: 0x0f61, 0x166e: 0x0f71, 0x166f: 0x00d9,\n\t0x1670: 0x0f99, 0x1671: 0x2039, 0x1672: 0x0269, 0x1673: 0x01d9, 0x1674: 0x0fa9, 0x1675: 0x0fb9,\n\t0x1676: 0x1089, 0x1677: 0x0279, 0x1678: 0x0369, 0x1679: 0x0289, 0x167a: 0x13d1, 0x167b: 0xaf4a,\n\t0x167c: 0xafca, 0x167d: 0xaf5a, 0x167e: 0xb512, 0x167f: 0xaf1a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x1caa, 0x1681: 0x0039, 0x1682: 0x0ee9, 0x1683: 0x1159, 0x1684: 0x0ef9, 0x1685: 0x0f09,\n\t0x1686: 0x1199, 0x1687: 0x0f31, 0x1688: 0x0249, 0x1689: 0x0f41, 0x168a: 0x0259, 0x168b: 0x0f51,\n\t0x168c: 0x0359, 0x168d: 0x0f61, 0x168e: 0x0f71, 0x168f: 0x00d9, 0x1690: 0x0f99, 0x1691: 0x2039,\n\t0x1692: 0x0269, 0x1693: 0x01d9, 0x1694: 0x0fa9, 0x1695: 0x0fb9, 0x1696: 0x1089, 0x1697: 0x0279,\n\t0x1698: 0x0369, 0x1699: 0x0289, 0x169a: 0x13d1, 0x169b: 0xaf2a, 0x169c: 0xb522, 0x169d: 0xaf3a,\n\t0x169e: 0xb532, 0x169f: 0x810d, 0x16a0: 0x812d, 0x16a1: 0x29d1, 0x16a2: 0x814d, 0x16a3: 0x814d,\n\t0x16a4: 0x816d, 0x16a5: 0x818d, 0x16a6: 0x81ad, 0x16a7: 0x81cd, 0x16a8: 0x81ed, 0x16a9: 0x820d,\n\t0x16aa: 0x822d, 0x16ab: 0x824d, 0x16ac: 0x826d, 0x16ad: 0x828d, 0x16ae: 0x82ad, 0x16af: 0x82cd,\n\t0x16b0: 0x82ed, 0x16b1: 0x830d, 0x16b2: 0x832d, 0x16b3: 0x834d, 0x16b4: 0x836d, 0x16b5: 0x838d,\n\t0x16b6: 0x83ad, 0x16b7: 0x83cd, 0x16b8: 0x83ed, 0x16b9: 0x840d, 0x16ba: 0x842d, 0x16bb: 0x844d,\n\t0x16bc: 0x81ed, 0x16bd: 0x846d, 0x16be: 0x848d, 0x16bf: 0x824d,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x84ad, 0x16c1: 0x84cd, 0x16c2: 0x84ed, 0x16c3: 0x850d, 0x16c4: 0x852d, 0x16c5: 0x854d,\n\t0x16c6: 0x856d, 0x16c7: 0x858d, 0x16c8: 0x850d, 0x16c9: 0x85ad, 0x16ca: 0x850d, 0x16cb: 0x85cd,\n\t0x16cc: 0x85cd, 0x16cd: 0x85ed, 0x16ce: 0x85ed, 0x16cf: 0x860d, 0x16d0: 0x854d, 0x16d1: 0x862d,\n\t0x16d2: 0x864d, 0x16d3: 0x862d, 0x16d4: 0x866d, 0x16d5: 0x864d, 0x16d6: 0x868d, 0x16d7: 0x868d,\n\t0x16d8: 0x86ad, 0x16d9: 0x86ad, 0x16da: 0x86cd, 0x16db: 0x86cd, 0x16dc: 0x864d, 0x16dd: 0x814d,\n\t0x16de: 0x86ed, 0x16df: 0x870d, 0x16e0: 0x0040, 0x16e1: 0x872d, 0x16e2: 0x874d, 0x16e3: 0x876d,\n\t0x16e4: 0x878d, 0x16e5: 0x876d, 0x16e6: 0x87ad, 0x16e7: 0x87cd, 0x16e8: 0x87ed, 0x16e9: 0x87ed,\n\t0x16ea: 0x880d, 0x16eb: 0x880d, 0x16ec: 0x882d, 0x16ed: 0x882d, 0x16ee: 0x880d, 0x16ef: 0x880d,\n\t0x16f0: 0x884d, 0x16f1: 0x886d, 0x16f2: 0x888d, 0x16f3: 0x88ad, 0x16f4: 0x88cd, 0x16f5: 0x88ed,\n\t0x16f6: 0x88ed, 0x16f7: 0x88ed, 0x16f8: 0x890d, 0x16f9: 0x890d, 0x16fa: 0x890d, 0x16fb: 0x890d,\n\t0x16fc: 0x87ed, 0x16fd: 0x87ed, 0x16fe: 0x87ed, 0x16ff: 0x0040,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x874d, 0x1703: 0x872d, 0x1704: 0x892d, 0x1705: 0x872d,\n\t0x1706: 0x874d, 0x1707: 0x872d, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x894d, 0x170b: 0x874d,\n\t0x170c: 0x896d, 0x170d: 0x892d, 0x170e: 0x896d, 0x170f: 0x874d, 0x1710: 0x0040, 0x1711: 0x0040,\n\t0x1712: 0x898d, 0x1713: 0x89ad, 0x1714: 0x88ad, 0x1715: 0x896d, 0x1716: 0x892d, 0x1717: 0x896d,\n\t0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x89cd, 0x171b: 0x89ed, 0x171c: 0x89cd, 0x171d: 0x0040,\n\t0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb541, 0x1721: 0xb559, 0x1722: 0xb571, 0x1723: 0x8a0e,\n\t0x1724: 0xb589, 0x1725: 0xb5a1, 0x1726: 0x8a2d, 0x1727: 0x0040, 0x1728: 0x8a4d, 0x1729: 0x8a6d,\n\t0x172a: 0x8a8d, 0x172b: 0x8a6d, 0x172c: 0x8aad, 0x172d: 0x8acd, 0x172e: 0x8aed, 0x172f: 0x0040,\n\t0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040,\n\t0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340,\n\t0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x0a08, 0x1741: 0x0a08, 0x1742: 0x0a08, 0x1743: 0x0a08, 0x1744: 0x0a08, 0x1745: 0x0c08,\n\t0x1746: 0x0808, 0x1747: 0x0c08, 0x1748: 0x0818, 0x1749: 0x0c08, 0x174a: 0x0c08, 0x174b: 0x0808,\n\t0x174c: 0x0808, 0x174d: 0x0908, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0c08, 0x1751: 0x0c08,\n\t0x1752: 0x0c08, 0x1753: 0x0a08, 0x1754: 0x0a08, 0x1755: 0x0a08, 0x1756: 0x0a08, 0x1757: 0x0908,\n\t0x1758: 0x0a08, 0x1759: 0x0a08, 0x175a: 0x0a08, 0x175b: 0x0a08, 0x175c: 0x0a08, 0x175d: 0x0c08,\n\t0x175e: 0x0a08, 0x175f: 0x0a08, 0x1760: 0x0a08, 0x1761: 0x0c08, 0x1762: 0x0808, 0x1763: 0x0808,\n\t0x1764: 0x0c08, 0x1765: 0x3308, 0x1766: 0x3308, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040,\n\t0x176a: 0x0040, 0x176b: 0x0a18, 0x176c: 0x0a18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0c18,\n\t0x1770: 0x0818, 0x1771: 0x0818, 0x1772: 0x0818, 0x1773: 0x0818, 0x1774: 0x0818, 0x1775: 0x0818,\n\t0x1776: 0x0818, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040,\n\t0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x0a08, 0x1781: 0x0c08, 0x1782: 0x0a08, 0x1783: 0x0c08, 0x1784: 0x0c08, 0x1785: 0x0c08,\n\t0x1786: 0x0a08, 0x1787: 0x0a08, 0x1788: 0x0a08, 0x1789: 0x0c08, 0x178a: 0x0a08, 0x178b: 0x0a08,\n\t0x178c: 0x0c08, 0x178d: 0x0a08, 0x178e: 0x0c08, 0x178f: 0x0c08, 0x1790: 0x0a08, 0x1791: 0x0c08,\n\t0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x0040,\n\t0x1798: 0x0040, 0x1799: 0x0818, 0x179a: 0x0818, 0x179b: 0x0818, 0x179c: 0x0818, 0x179d: 0x0040,\n\t0x179e: 0x0040, 0x179f: 0x0040, 0x17a0: 0x0040, 0x17a1: 0x0040, 0x17a2: 0x0040, 0x17a3: 0x0040,\n\t0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x0040, 0x17a7: 0x0040, 0x17a8: 0x0040, 0x17a9: 0x0c18,\n\t0x17aa: 0x0c18, 0x17ab: 0x0c18, 0x17ac: 0x0c18, 0x17ad: 0x0a18, 0x17ae: 0x0a18, 0x17af: 0x0818,\n\t0x17b0: 0x0040, 0x17b1: 0x0040, 0x17b2: 0x0040, 0x17b3: 0x0040, 0x17b4: 0x0040, 0x17b5: 0x0040,\n\t0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040,\n\t0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x3308, 0x17c1: 0x3308, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x0040, 0x17c5: 0x0008,\n\t0x17c6: 0x0008, 0x17c7: 0x0008, 0x17c8: 0x0008, 0x17c9: 0x0008, 0x17ca: 0x0008, 0x17cb: 0x0008,\n\t0x17cc: 0x0008, 0x17cd: 0x0040, 0x17ce: 0x0040, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0040,\n\t0x17d2: 0x0040, 0x17d3: 0x0008, 0x17d4: 0x0008, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0008,\n\t0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008,\n\t0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008,\n\t0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0040,\n\t0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008,\n\t0x17f0: 0x0008, 0x17f1: 0x0040, 0x17f2: 0x0008, 0x17f3: 0x0008, 0x17f4: 0x0040, 0x17f5: 0x0008,\n\t0x17f6: 0x0008, 0x17f7: 0x0008, 0x17f8: 0x0008, 0x17f9: 0x0008, 0x17fa: 0x0040, 0x17fb: 0x3308,\n\t0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x3308, 0x1801: 0x3008, 0x1802: 0x3008, 0x1803: 0x3008, 0x1804: 0x3008, 0x1805: 0x0040,\n\t0x1806: 0x0040, 0x1807: 0x3008, 0x1808: 0x3008, 0x1809: 0x0040, 0x180a: 0x0040, 0x180b: 0x3008,\n\t0x180c: 0x3008, 0x180d: 0x3808, 0x180e: 0x0040, 0x180f: 0x0040, 0x1810: 0x0008, 0x1811: 0x0040,\n\t0x1812: 0x0040, 0x1813: 0x0040, 0x1814: 0x0040, 0x1815: 0x0040, 0x1816: 0x0040, 0x1817: 0x3008,\n\t0x1818: 0x0040, 0x1819: 0x0040, 0x181a: 0x0040, 0x181b: 0x0040, 0x181c: 0x0040, 0x181d: 0x0008,\n\t0x181e: 0x0008, 0x181f: 0x0008, 0x1820: 0x0008, 0x1821: 0x0008, 0x1822: 0x3008, 0x1823: 0x3008,\n\t0x1824: 0x0040, 0x1825: 0x0040, 0x1826: 0x3308, 0x1827: 0x3308, 0x1828: 0x3308, 0x1829: 0x3308,\n\t0x182a: 0x3308, 0x182b: 0x3308, 0x182c: 0x3308, 0x182d: 0x0040, 0x182e: 0x0040, 0x182f: 0x0040,\n\t0x1830: 0x3308, 0x1831: 0x3308, 0x1832: 0x3308, 0x1833: 0x3308, 0x1834: 0x3308, 0x1835: 0x0040,\n\t0x1836: 0x0040, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040,\n\t0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x0039, 0x1841: 0x0ee9, 0x1842: 0x1159, 0x1843: 0x0ef9, 0x1844: 0x0f09, 0x1845: 0x1199,\n\t0x1846: 0x0f31, 0x1847: 0x0249, 0x1848: 0x0f41, 0x1849: 0x0259, 0x184a: 0x0f51, 0x184b: 0x0359,\n\t0x184c: 0x0f61, 0x184d: 0x0f71, 0x184e: 0x00d9, 0x184f: 0x0f99, 0x1850: 0x2039, 0x1851: 0x0269,\n\t0x1852: 0x01d9, 0x1853: 0x0fa9, 0x1854: 0x0fb9, 0x1855: 0x1089, 0x1856: 0x0279, 0x1857: 0x0369,\n\t0x1858: 0x0289, 0x1859: 0x13d1, 0x185a: 0x0039, 0x185b: 0x0ee9, 0x185c: 0x1159, 0x185d: 0x0ef9,\n\t0x185e: 0x0f09, 0x185f: 0x1199, 0x1860: 0x0f31, 0x1861: 0x0249, 0x1862: 0x0f41, 0x1863: 0x0259,\n\t0x1864: 0x0f51, 0x1865: 0x0359, 0x1866: 0x0f61, 0x1867: 0x0f71, 0x1868: 0x00d9, 0x1869: 0x0f99,\n\t0x186a: 0x2039, 0x186b: 0x0269, 0x186c: 0x01d9, 0x186d: 0x0fa9, 0x186e: 0x0fb9, 0x186f: 0x1089,\n\t0x1870: 0x0279, 0x1871: 0x0369, 0x1872: 0x0289, 0x1873: 0x13d1, 0x1874: 0x0039, 0x1875: 0x0ee9,\n\t0x1876: 0x1159, 0x1877: 0x0ef9, 0x1878: 0x0f09, 0x1879: 0x1199, 0x187a: 0x0f31, 0x187b: 0x0249,\n\t0x187c: 0x0f41, 0x187d: 0x0259, 0x187e: 0x0f51, 0x187f: 0x0359,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x0f61, 0x1881: 0x0f71, 0x1882: 0x00d9, 0x1883: 0x0f99, 0x1884: 0x2039, 0x1885: 0x0269,\n\t0x1886: 0x01d9, 0x1887: 0x0fa9, 0x1888: 0x0fb9, 0x1889: 0x1089, 0x188a: 0x0279, 0x188b: 0x0369,\n\t0x188c: 0x0289, 0x188d: 0x13d1, 0x188e: 0x0039, 0x188f: 0x0ee9, 0x1890: 0x1159, 0x1891: 0x0ef9,\n\t0x1892: 0x0f09, 0x1893: 0x1199, 0x1894: 0x0f31, 0x1895: 0x0040, 0x1896: 0x0f41, 0x1897: 0x0259,\n\t0x1898: 0x0f51, 0x1899: 0x0359, 0x189a: 0x0f61, 0x189b: 0x0f71, 0x189c: 0x00d9, 0x189d: 0x0f99,\n\t0x189e: 0x2039, 0x189f: 0x0269, 0x18a0: 0x01d9, 0x18a1: 0x0fa9, 0x18a2: 0x0fb9, 0x18a3: 0x1089,\n\t0x18a4: 0x0279, 0x18a5: 0x0369, 0x18a6: 0x0289, 0x18a7: 0x13d1, 0x18a8: 0x0039, 0x18a9: 0x0ee9,\n\t0x18aa: 0x1159, 0x18ab: 0x0ef9, 0x18ac: 0x0f09, 0x18ad: 0x1199, 0x18ae: 0x0f31, 0x18af: 0x0249,\n\t0x18b0: 0x0f41, 0x18b1: 0x0259, 0x18b2: 0x0f51, 0x18b3: 0x0359, 0x18b4: 0x0f61, 0x18b5: 0x0f71,\n\t0x18b6: 0x00d9, 0x18b7: 0x0f99, 0x18b8: 0x2039, 0x18b9: 0x0269, 0x18ba: 0x01d9, 0x18bb: 0x0fa9,\n\t0x18bc: 0x0fb9, 0x18bd: 0x1089, 0x18be: 0x0279, 0x18bf: 0x0369,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x0289, 0x18c1: 0x13d1, 0x18c2: 0x0039, 0x18c3: 0x0ee9, 0x18c4: 0x1159, 0x18c5: 0x0ef9,\n\t0x18c6: 0x0f09, 0x18c7: 0x1199, 0x18c8: 0x0f31, 0x18c9: 0x0249, 0x18ca: 0x0f41, 0x18cb: 0x0259,\n\t0x18cc: 0x0f51, 0x18cd: 0x0359, 0x18ce: 0x0f61, 0x18cf: 0x0f71, 0x18d0: 0x00d9, 0x18d1: 0x0f99,\n\t0x18d2: 0x2039, 0x18d3: 0x0269, 0x18d4: 0x01d9, 0x18d5: 0x0fa9, 0x18d6: 0x0fb9, 0x18d7: 0x1089,\n\t0x18d8: 0x0279, 0x18d9: 0x0369, 0x18da: 0x0289, 0x18db: 0x13d1, 0x18dc: 0x0039, 0x18dd: 0x0040,\n\t0x18de: 0x1159, 0x18df: 0x0ef9, 0x18e0: 0x0040, 0x18e1: 0x0040, 0x18e2: 0x0f31, 0x18e3: 0x0040,\n\t0x18e4: 0x0040, 0x18e5: 0x0259, 0x18e6: 0x0f51, 0x18e7: 0x0040, 0x18e8: 0x0040, 0x18e9: 0x0f71,\n\t0x18ea: 0x00d9, 0x18eb: 0x0f99, 0x18ec: 0x2039, 0x18ed: 0x0040, 0x18ee: 0x01d9, 0x18ef: 0x0fa9,\n\t0x18f0: 0x0fb9, 0x18f1: 0x1089, 0x18f2: 0x0279, 0x18f3: 0x0369, 0x18f4: 0x0289, 0x18f5: 0x13d1,\n\t0x18f6: 0x0039, 0x18f7: 0x0ee9, 0x18f8: 0x1159, 0x18f9: 0x0ef9, 0x18fa: 0x0040, 0x18fb: 0x1199,\n\t0x18fc: 0x0040, 0x18fd: 0x0249, 0x18fe: 0x0f41, 0x18ff: 0x0259,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x0f51, 0x1901: 0x0359, 0x1902: 0x0f61, 0x1903: 0x0f71, 0x1904: 0x0040, 0x1905: 0x0f99,\n\t0x1906: 0x2039, 0x1907: 0x0269, 0x1908: 0x01d9, 0x1909: 0x0fa9, 0x190a: 0x0fb9, 0x190b: 0x1089,\n\t0x190c: 0x0279, 0x190d: 0x0369, 0x190e: 0x0289, 0x190f: 0x13d1, 0x1910: 0x0039, 0x1911: 0x0ee9,\n\t0x1912: 0x1159, 0x1913: 0x0ef9, 0x1914: 0x0f09, 0x1915: 0x1199, 0x1916: 0x0f31, 0x1917: 0x0249,\n\t0x1918: 0x0f41, 0x1919: 0x0259, 0x191a: 0x0f51, 0x191b: 0x0359, 0x191c: 0x0f61, 0x191d: 0x0f71,\n\t0x191e: 0x00d9, 0x191f: 0x0f99, 0x1920: 0x2039, 0x1921: 0x0269, 0x1922: 0x01d9, 0x1923: 0x0fa9,\n\t0x1924: 0x0fb9, 0x1925: 0x1089, 0x1926: 0x0279, 0x1927: 0x0369, 0x1928: 0x0289, 0x1929: 0x13d1,\n\t0x192a: 0x0039, 0x192b: 0x0ee9, 0x192c: 0x1159, 0x192d: 0x0ef9, 0x192e: 0x0f09, 0x192f: 0x1199,\n\t0x1930: 0x0f31, 0x1931: 0x0249, 0x1932: 0x0f41, 0x1933: 0x0259, 0x1934: 0x0f51, 0x1935: 0x0359,\n\t0x1936: 0x0f61, 0x1937: 0x0f71, 0x1938: 0x00d9, 0x1939: 0x0f99, 0x193a: 0x2039, 0x193b: 0x0269,\n\t0x193c: 0x01d9, 0x193d: 0x0fa9, 0x193e: 0x0fb9, 0x193f: 0x1089,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x0279, 0x1941: 0x0369, 0x1942: 0x0289, 0x1943: 0x13d1, 0x1944: 0x0039, 0x1945: 0x0ee9,\n\t0x1946: 0x0040, 0x1947: 0x0ef9, 0x1948: 0x0f09, 0x1949: 0x1199, 0x194a: 0x0f31, 0x194b: 0x0040,\n\t0x194c: 0x0040, 0x194d: 0x0259, 0x194e: 0x0f51, 0x194f: 0x0359, 0x1950: 0x0f61, 0x1951: 0x0f71,\n\t0x1952: 0x00d9, 0x1953: 0x0f99, 0x1954: 0x2039, 0x1955: 0x0040, 0x1956: 0x01d9, 0x1957: 0x0fa9,\n\t0x1958: 0x0fb9, 0x1959: 0x1089, 0x195a: 0x0279, 0x195b: 0x0369, 0x195c: 0x0289, 0x195d: 0x0040,\n\t0x195e: 0x0039, 0x195f: 0x0ee9, 0x1960: 0x1159, 0x1961: 0x0ef9, 0x1962: 0x0f09, 0x1963: 0x1199,\n\t0x1964: 0x0f31, 0x1965: 0x0249, 0x1966: 0x0f41, 0x1967: 0x0259, 0x1968: 0x0f51, 0x1969: 0x0359,\n\t0x196a: 0x0f61, 0x196b: 0x0f71, 0x196c: 0x00d9, 0x196d: 0x0f99, 0x196e: 0x2039, 0x196f: 0x0269,\n\t0x1970: 0x01d9, 0x1971: 0x0fa9, 0x1972: 0x0fb9, 0x1973: 0x1089, 0x1974: 0x0279, 0x1975: 0x0369,\n\t0x1976: 0x0289, 0x1977: 0x13d1, 0x1978: 0x0039, 0x1979: 0x0ee9, 0x197a: 0x0040, 0x197b: 0x0ef9,\n\t0x197c: 0x0f09, 0x197d: 0x1199, 0x197e: 0x0f31, 0x197f: 0x0040,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x0f41, 0x1981: 0x0259, 0x1982: 0x0f51, 0x1983: 0x0359, 0x1984: 0x0f61, 0x1985: 0x0040,\n\t0x1986: 0x00d9, 0x1987: 0x0040, 0x1988: 0x0040, 0x1989: 0x0040, 0x198a: 0x01d9, 0x198b: 0x0fa9,\n\t0x198c: 0x0fb9, 0x198d: 0x1089, 0x198e: 0x0279, 0x198f: 0x0369, 0x1990: 0x0289, 0x1991: 0x0040,\n\t0x1992: 0x0039, 0x1993: 0x0ee9, 0x1994: 0x1159, 0x1995: 0x0ef9, 0x1996: 0x0f09, 0x1997: 0x1199,\n\t0x1998: 0x0f31, 0x1999: 0x0249, 0x199a: 0x0f41, 0x199b: 0x0259, 0x199c: 0x0f51, 0x199d: 0x0359,\n\t0x199e: 0x0f61, 0x199f: 0x0f71, 0x19a0: 0x00d9, 0x19a1: 0x0f99, 0x19a2: 0x2039, 0x19a3: 0x0269,\n\t0x19a4: 0x01d9, 0x19a5: 0x0fa9, 0x19a6: 0x0fb9, 0x19a7: 0x1089, 0x19a8: 0x0279, 0x19a9: 0x0369,\n\t0x19aa: 0x0289, 0x19ab: 0x13d1, 0x19ac: 0x0039, 0x19ad: 0x0ee9, 0x19ae: 0x1159, 0x19af: 0x0ef9,\n\t0x19b0: 0x0f09, 0x19b1: 0x1199, 0x19b2: 0x0f31, 0x19b3: 0x0249, 0x19b4: 0x0f41, 0x19b5: 0x0259,\n\t0x19b6: 0x0f51, 0x19b7: 0x0359, 0x19b8: 0x0f61, 0x19b9: 0x0f71, 0x19ba: 0x00d9, 0x19bb: 0x0f99,\n\t0x19bc: 0x2039, 0x19bd: 0x0269, 0x19be: 0x01d9, 0x19bf: 0x0fa9,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x0fb9, 0x19c1: 0x1089, 0x19c2: 0x0279, 0x19c3: 0x0369, 0x19c4: 0x0289, 0x19c5: 0x13d1,\n\t0x19c6: 0x0039, 0x19c7: 0x0ee9, 0x19c8: 0x1159, 0x19c9: 0x0ef9, 0x19ca: 0x0f09, 0x19cb: 0x1199,\n\t0x19cc: 0x0f31, 0x19cd: 0x0249, 0x19ce: 0x0f41, 0x19cf: 0x0259, 0x19d0: 0x0f51, 0x19d1: 0x0359,\n\t0x19d2: 0x0f61, 0x19d3: 0x0f71, 0x19d4: 0x00d9, 0x19d5: 0x0f99, 0x19d6: 0x2039, 0x19d7: 0x0269,\n\t0x19d8: 0x01d9, 0x19d9: 0x0fa9, 0x19da: 0x0fb9, 0x19db: 0x1089, 0x19dc: 0x0279, 0x19dd: 0x0369,\n\t0x19de: 0x0289, 0x19df: 0x13d1, 0x19e0: 0x0039, 0x19e1: 0x0ee9, 0x19e2: 0x1159, 0x19e3: 0x0ef9,\n\t0x19e4: 0x0f09, 0x19e5: 0x1199, 0x19e6: 0x0f31, 0x19e7: 0x0249, 0x19e8: 0x0f41, 0x19e9: 0x0259,\n\t0x19ea: 0x0f51, 0x19eb: 0x0359, 0x19ec: 0x0f61, 0x19ed: 0x0f71, 0x19ee: 0x00d9, 0x19ef: 0x0f99,\n\t0x19f0: 0x2039, 0x19f1: 0x0269, 0x19f2: 0x01d9, 0x19f3: 0x0fa9, 0x19f4: 0x0fb9, 0x19f5: 0x1089,\n\t0x19f6: 0x0279, 0x19f7: 0x0369, 0x19f8: 0x0289, 0x19f9: 0x13d1, 0x19fa: 0x0039, 0x19fb: 0x0ee9,\n\t0x19fc: 0x1159, 0x19fd: 0x0ef9, 0x19fe: 0x0f09, 0x19ff: 0x1199,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x0f31, 0x1a01: 0x0249, 0x1a02: 0x0f41, 0x1a03: 0x0259, 0x1a04: 0x0f51, 0x1a05: 0x0359,\n\t0x1a06: 0x0f61, 0x1a07: 0x0f71, 0x1a08: 0x00d9, 0x1a09: 0x0f99, 0x1a0a: 0x2039, 0x1a0b: 0x0269,\n\t0x1a0c: 0x01d9, 0x1a0d: 0x0fa9, 0x1a0e: 0x0fb9, 0x1a0f: 0x1089, 0x1a10: 0x0279, 0x1a11: 0x0369,\n\t0x1a12: 0x0289, 0x1a13: 0x13d1, 0x1a14: 0x0039, 0x1a15: 0x0ee9, 0x1a16: 0x1159, 0x1a17: 0x0ef9,\n\t0x1a18: 0x0f09, 0x1a19: 0x1199, 0x1a1a: 0x0f31, 0x1a1b: 0x0249, 0x1a1c: 0x0f41, 0x1a1d: 0x0259,\n\t0x1a1e: 0x0f51, 0x1a1f: 0x0359, 0x1a20: 0x0f61, 0x1a21: 0x0f71, 0x1a22: 0x00d9, 0x1a23: 0x0f99,\n\t0x1a24: 0x2039, 0x1a25: 0x0269, 0x1a26: 0x01d9, 0x1a27: 0x0fa9, 0x1a28: 0x0fb9, 0x1a29: 0x1089,\n\t0x1a2a: 0x0279, 0x1a2b: 0x0369, 0x1a2c: 0x0289, 0x1a2d: 0x13d1, 0x1a2e: 0x0039, 0x1a2f: 0x0ee9,\n\t0x1a30: 0x1159, 0x1a31: 0x0ef9, 0x1a32: 0x0f09, 0x1a33: 0x1199, 0x1a34: 0x0f31, 0x1a35: 0x0249,\n\t0x1a36: 0x0f41, 0x1a37: 0x0259, 0x1a38: 0x0f51, 0x1a39: 0x0359, 0x1a3a: 0x0f61, 0x1a3b: 0x0f71,\n\t0x1a3c: 0x00d9, 0x1a3d: 0x0f99, 0x1a3e: 0x2039, 0x1a3f: 0x0269,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x01d9, 0x1a41: 0x0fa9, 0x1a42: 0x0fb9, 0x1a43: 0x1089, 0x1a44: 0x0279, 0x1a45: 0x0369,\n\t0x1a46: 0x0289, 0x1a47: 0x13d1, 0x1a48: 0x0039, 0x1a49: 0x0ee9, 0x1a4a: 0x1159, 0x1a4b: 0x0ef9,\n\t0x1a4c: 0x0f09, 0x1a4d: 0x1199, 0x1a4e: 0x0f31, 0x1a4f: 0x0249, 0x1a50: 0x0f41, 0x1a51: 0x0259,\n\t0x1a52: 0x0f51, 0x1a53: 0x0359, 0x1a54: 0x0f61, 0x1a55: 0x0f71, 0x1a56: 0x00d9, 0x1a57: 0x0f99,\n\t0x1a58: 0x2039, 0x1a59: 0x0269, 0x1a5a: 0x01d9, 0x1a5b: 0x0fa9, 0x1a5c: 0x0fb9, 0x1a5d: 0x1089,\n\t0x1a5e: 0x0279, 0x1a5f: 0x0369, 0x1a60: 0x0289, 0x1a61: 0x13d1, 0x1a62: 0x0039, 0x1a63: 0x0ee9,\n\t0x1a64: 0x1159, 0x1a65: 0x0ef9, 0x1a66: 0x0f09, 0x1a67: 0x1199, 0x1a68: 0x0f31, 0x1a69: 0x0249,\n\t0x1a6a: 0x0f41, 0x1a6b: 0x0259, 0x1a6c: 0x0f51, 0x1a6d: 0x0359, 0x1a6e: 0x0f61, 0x1a6f: 0x0f71,\n\t0x1a70: 0x00d9, 0x1a71: 0x0f99, 0x1a72: 0x2039, 0x1a73: 0x0269, 0x1a74: 0x01d9, 0x1a75: 0x0fa9,\n\t0x1a76: 0x0fb9, 0x1a77: 0x1089, 0x1a78: 0x0279, 0x1a79: 0x0369, 0x1a7a: 0x0289, 0x1a7b: 0x13d1,\n\t0x1a7c: 0x0039, 0x1a7d: 0x0ee9, 0x1a7e: 0x1159, 0x1a7f: 0x0ef9,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x0f09, 0x1a81: 0x1199, 0x1a82: 0x0f31, 0x1a83: 0x0249, 0x1a84: 0x0f41, 0x1a85: 0x0259,\n\t0x1a86: 0x0f51, 0x1a87: 0x0359, 0x1a88: 0x0f61, 0x1a89: 0x0f71, 0x1a8a: 0x00d9, 0x1a8b: 0x0f99,\n\t0x1a8c: 0x2039, 0x1a8d: 0x0269, 0x1a8e: 0x01d9, 0x1a8f: 0x0fa9, 0x1a90: 0x0fb9, 0x1a91: 0x1089,\n\t0x1a92: 0x0279, 0x1a93: 0x0369, 0x1a94: 0x0289, 0x1a95: 0x13d1, 0x1a96: 0x0039, 0x1a97: 0x0ee9,\n\t0x1a98: 0x1159, 0x1a99: 0x0ef9, 0x1a9a: 0x0f09, 0x1a9b: 0x1199, 0x1a9c: 0x0f31, 0x1a9d: 0x0249,\n\t0x1a9e: 0x0f41, 0x1a9f: 0x0259, 0x1aa0: 0x0f51, 0x1aa1: 0x0359, 0x1aa2: 0x0f61, 0x1aa3: 0x0f71,\n\t0x1aa4: 0x00d9, 0x1aa5: 0x0f99, 0x1aa6: 0x2039, 0x1aa7: 0x0269, 0x1aa8: 0x01d9, 0x1aa9: 0x0fa9,\n\t0x1aaa: 0x0fb9, 0x1aab: 0x1089, 0x1aac: 0x0279, 0x1aad: 0x0369, 0x1aae: 0x0289, 0x1aaf: 0x13d1,\n\t0x1ab0: 0x0039, 0x1ab1: 0x0ee9, 0x1ab2: 0x1159, 0x1ab3: 0x0ef9, 0x1ab4: 0x0f09, 0x1ab5: 0x1199,\n\t0x1ab6: 0x0f31, 0x1ab7: 0x0249, 0x1ab8: 0x0f41, 0x1ab9: 0x0259, 0x1aba: 0x0f51, 0x1abb: 0x0359,\n\t0x1abc: 0x0f61, 0x1abd: 0x0f71, 0x1abe: 0x00d9, 0x1abf: 0x0f99,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x2039, 0x1ac1: 0x0269, 0x1ac2: 0x01d9, 0x1ac3: 0x0fa9, 0x1ac4: 0x0fb9, 0x1ac5: 0x1089,\n\t0x1ac6: 0x0279, 0x1ac7: 0x0369, 0x1ac8: 0x0289, 0x1ac9: 0x13d1, 0x1aca: 0x0039, 0x1acb: 0x0ee9,\n\t0x1acc: 0x1159, 0x1acd: 0x0ef9, 0x1ace: 0x0f09, 0x1acf: 0x1199, 0x1ad0: 0x0f31, 0x1ad1: 0x0249,\n\t0x1ad2: 0x0f41, 0x1ad3: 0x0259, 0x1ad4: 0x0f51, 0x1ad5: 0x0359, 0x1ad6: 0x0f61, 0x1ad7: 0x0f71,\n\t0x1ad8: 0x00d9, 0x1ad9: 0x0f99, 0x1ada: 0x2039, 0x1adb: 0x0269, 0x1adc: 0x01d9, 0x1add: 0x0fa9,\n\t0x1ade: 0x0fb9, 0x1adf: 0x1089, 0x1ae0: 0x0279, 0x1ae1: 0x0369, 0x1ae2: 0x0289, 0x1ae3: 0x13d1,\n\t0x1ae4: 0xba81, 0x1ae5: 0xba99, 0x1ae6: 0x0040, 0x1ae7: 0x0040, 0x1ae8: 0xbab1, 0x1ae9: 0x1099,\n\t0x1aea: 0x10b1, 0x1aeb: 0x10c9, 0x1aec: 0xbac9, 0x1aed: 0xbae1, 0x1aee: 0xbaf9, 0x1aef: 0x1429,\n\t0x1af0: 0x1a31, 0x1af1: 0xbb11, 0x1af2: 0xbb29, 0x1af3: 0xbb41, 0x1af4: 0xbb59, 0x1af5: 0xbb71,\n\t0x1af6: 0xbb89, 0x1af7: 0x2109, 0x1af8: 0x1111, 0x1af9: 0x1429, 0x1afa: 0xbba1, 0x1afb: 0xbbb9,\n\t0x1afc: 0xbbd1, 0x1afd: 0x10e1, 0x1afe: 0x10f9, 0x1aff: 0xbbe9,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x2079, 0x1b01: 0xbc01, 0x1b02: 0xbab1, 0x1b03: 0x1099, 0x1b04: 0x10b1, 0x1b05: 0x10c9,\n\t0x1b06: 0xbac9, 0x1b07: 0xbae1, 0x1b08: 0xbaf9, 0x1b09: 0x1429, 0x1b0a: 0x1a31, 0x1b0b: 0xbb11,\n\t0x1b0c: 0xbb29, 0x1b0d: 0xbb41, 0x1b0e: 0xbb59, 0x1b0f: 0xbb71, 0x1b10: 0xbb89, 0x1b11: 0x2109,\n\t0x1b12: 0x1111, 0x1b13: 0xbba1, 0x1b14: 0xbba1, 0x1b15: 0xbbb9, 0x1b16: 0xbbd1, 0x1b17: 0x10e1,\n\t0x1b18: 0x10f9, 0x1b19: 0xbbe9, 0x1b1a: 0x2079, 0x1b1b: 0xbc21, 0x1b1c: 0xbac9, 0x1b1d: 0x1429,\n\t0x1b1e: 0xbb11, 0x1b1f: 0x10e1, 0x1b20: 0x1111, 0x1b21: 0x2109, 0x1b22: 0xbab1, 0x1b23: 0x1099,\n\t0x1b24: 0x10b1, 0x1b25: 0x10c9, 0x1b26: 0xbac9, 0x1b27: 0xbae1, 0x1b28: 0xbaf9, 0x1b29: 0x1429,\n\t0x1b2a: 0x1a31, 0x1b2b: 0xbb11, 0x1b2c: 0xbb29, 0x1b2d: 0xbb41, 0x1b2e: 0xbb59, 0x1b2f: 0xbb71,\n\t0x1b30: 0xbb89, 0x1b31: 0x2109, 0x1b32: 0x1111, 0x1b33: 0x1429, 0x1b34: 0xbba1, 0x1b35: 0xbbb9,\n\t0x1b36: 0xbbd1, 0x1b37: 0x10e1, 0x1b38: 0x10f9, 0x1b39: 0xbbe9, 0x1b3a: 0x2079, 0x1b3b: 0xbc01,\n\t0x1b3c: 0xbab1, 0x1b3d: 0x1099, 0x1b3e: 0x10b1, 0x1b3f: 0x10c9,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0xbac9, 0x1b41: 0xbae1, 0x1b42: 0xbaf9, 0x1b43: 0x1429, 0x1b44: 0x1a31, 0x1b45: 0xbb11,\n\t0x1b46: 0xbb29, 0x1b47: 0xbb41, 0x1b48: 0xbb59, 0x1b49: 0xbb71, 0x1b4a: 0xbb89, 0x1b4b: 0x2109,\n\t0x1b4c: 0x1111, 0x1b4d: 0xbba1, 0x1b4e: 0xbba1, 0x1b4f: 0xbbb9, 0x1b50: 0xbbd1, 0x1b51: 0x10e1,\n\t0x1b52: 0x10f9, 0x1b53: 0xbbe9, 0x1b54: 0x2079, 0x1b55: 0xbc21, 0x1b56: 0xbac9, 0x1b57: 0x1429,\n\t0x1b58: 0xbb11, 0x1b59: 0x10e1, 0x1b5a: 0x1111, 0x1b5b: 0x2109, 0x1b5c: 0xbab1, 0x1b5d: 0x1099,\n\t0x1b5e: 0x10b1, 0x1b5f: 0x10c9, 0x1b60: 0xbac9, 0x1b61: 0xbae1, 0x1b62: 0xbaf9, 0x1b63: 0x1429,\n\t0x1b64: 0x1a31, 0x1b65: 0xbb11, 0x1b66: 0xbb29, 0x1b67: 0xbb41, 0x1b68: 0xbb59, 0x1b69: 0xbb71,\n\t0x1b6a: 0xbb89, 0x1b6b: 0x2109, 0x1b6c: 0x1111, 0x1b6d: 0x1429, 0x1b6e: 0xbba1, 0x1b6f: 0xbbb9,\n\t0x1b70: 0xbbd1, 0x1b71: 0x10e1, 0x1b72: 0x10f9, 0x1b73: 0xbbe9, 0x1b74: 0x2079, 0x1b75: 0xbc01,\n\t0x1b76: 0xbab1, 0x1b77: 0x1099, 0x1b78: 0x10b1, 0x1b79: 0x10c9, 0x1b7a: 0xbac9, 0x1b7b: 0xbae1,\n\t0x1b7c: 0xbaf9, 0x1b7d: 0x1429, 0x1b7e: 0x1a31, 0x1b7f: 0xbb11,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0xbb29, 0x1b81: 0xbb41, 0x1b82: 0xbb59, 0x1b83: 0xbb71, 0x1b84: 0xbb89, 0x1b85: 0x2109,\n\t0x1b86: 0x1111, 0x1b87: 0xbba1, 0x1b88: 0xbba1, 0x1b89: 0xbbb9, 0x1b8a: 0xbbd1, 0x1b8b: 0x10e1,\n\t0x1b8c: 0x10f9, 0x1b8d: 0xbbe9, 0x1b8e: 0x2079, 0x1b8f: 0xbc21, 0x1b90: 0xbac9, 0x1b91: 0x1429,\n\t0x1b92: 0xbb11, 0x1b93: 0x10e1, 0x1b94: 0x1111, 0x1b95: 0x2109, 0x1b96: 0xbab1, 0x1b97: 0x1099,\n\t0x1b98: 0x10b1, 0x1b99: 0x10c9, 0x1b9a: 0xbac9, 0x1b9b: 0xbae1, 0x1b9c: 0xbaf9, 0x1b9d: 0x1429,\n\t0x1b9e: 0x1a31, 0x1b9f: 0xbb11, 0x1ba0: 0xbb29, 0x1ba1: 0xbb41, 0x1ba2: 0xbb59, 0x1ba3: 0xbb71,\n\t0x1ba4: 0xbb89, 0x1ba5: 0x2109, 0x1ba6: 0x1111, 0x1ba7: 0x1429, 0x1ba8: 0xbba1, 0x1ba9: 0xbbb9,\n\t0x1baa: 0xbbd1, 0x1bab: 0x10e1, 0x1bac: 0x10f9, 0x1bad: 0xbbe9, 0x1bae: 0x2079, 0x1baf: 0xbc01,\n\t0x1bb0: 0xbab1, 0x1bb1: 0x1099, 0x1bb2: 0x10b1, 0x1bb3: 0x10c9, 0x1bb4: 0xbac9, 0x1bb5: 0xbae1,\n\t0x1bb6: 0xbaf9, 0x1bb7: 0x1429, 0x1bb8: 0x1a31, 0x1bb9: 0xbb11, 0x1bba: 0xbb29, 0x1bbb: 0xbb41,\n\t0x1bbc: 0xbb59, 0x1bbd: 0xbb71, 0x1bbe: 0xbb89, 0x1bbf: 0x2109,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x1111, 0x1bc1: 0xbba1, 0x1bc2: 0xbba1, 0x1bc3: 0xbbb9, 0x1bc4: 0xbbd1, 0x1bc5: 0x10e1,\n\t0x1bc6: 0x10f9, 0x1bc7: 0xbbe9, 0x1bc8: 0x2079, 0x1bc9: 0xbc21, 0x1bca: 0xbac9, 0x1bcb: 0x1429,\n\t0x1bcc: 0xbb11, 0x1bcd: 0x10e1, 0x1bce: 0x1111, 0x1bcf: 0x2109, 0x1bd0: 0xbab1, 0x1bd1: 0x1099,\n\t0x1bd2: 0x10b1, 0x1bd3: 0x10c9, 0x1bd4: 0xbac9, 0x1bd5: 0xbae1, 0x1bd6: 0xbaf9, 0x1bd7: 0x1429,\n\t0x1bd8: 0x1a31, 0x1bd9: 0xbb11, 0x1bda: 0xbb29, 0x1bdb: 0xbb41, 0x1bdc: 0xbb59, 0x1bdd: 0xbb71,\n\t0x1bde: 0xbb89, 0x1bdf: 0x2109, 0x1be0: 0x1111, 0x1be1: 0x1429, 0x1be2: 0xbba1, 0x1be3: 0xbbb9,\n\t0x1be4: 0xbbd1, 0x1be5: 0x10e1, 0x1be6: 0x10f9, 0x1be7: 0xbbe9, 0x1be8: 0x2079, 0x1be9: 0xbc01,\n\t0x1bea: 0xbab1, 0x1beb: 0x1099, 0x1bec: 0x10b1, 0x1bed: 0x10c9, 0x1bee: 0xbac9, 0x1bef: 0xbae1,\n\t0x1bf0: 0xbaf9, 0x1bf1: 0x1429, 0x1bf2: 0x1a31, 0x1bf3: 0xbb11, 0x1bf4: 0xbb29, 0x1bf5: 0xbb41,\n\t0x1bf6: 0xbb59, 0x1bf7: 0xbb71, 0x1bf8: 0xbb89, 0x1bf9: 0x2109, 0x1bfa: 0x1111, 0x1bfb: 0xbba1,\n\t0x1bfc: 0xbba1, 0x1bfd: 0xbbb9, 0x1bfe: 0xbbd1, 0x1bff: 0x10e1,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x10f9, 0x1c01: 0xbbe9, 0x1c02: 0x2079, 0x1c03: 0xbc21, 0x1c04: 0xbac9, 0x1c05: 0x1429,\n\t0x1c06: 0xbb11, 0x1c07: 0x10e1, 0x1c08: 0x1111, 0x1c09: 0x2109, 0x1c0a: 0xbc41, 0x1c0b: 0xbc41,\n\t0x1c0c: 0x0040, 0x1c0d: 0x0040, 0x1c0e: 0x1f41, 0x1c0f: 0x00c9, 0x1c10: 0x0069, 0x1c11: 0x0079,\n\t0x1c12: 0x1f51, 0x1c13: 0x1f61, 0x1c14: 0x1f71, 0x1c15: 0x1f81, 0x1c16: 0x1f91, 0x1c17: 0x1fa1,\n\t0x1c18: 0x1f41, 0x1c19: 0x00c9, 0x1c1a: 0x0069, 0x1c1b: 0x0079, 0x1c1c: 0x1f51, 0x1c1d: 0x1f61,\n\t0x1c1e: 0x1f71, 0x1c1f: 0x1f81, 0x1c20: 0x1f91, 0x1c21: 0x1fa1, 0x1c22: 0x1f41, 0x1c23: 0x00c9,\n\t0x1c24: 0x0069, 0x1c25: 0x0079, 0x1c26: 0x1f51, 0x1c27: 0x1f61, 0x1c28: 0x1f71, 0x1c29: 0x1f81,\n\t0x1c2a: 0x1f91, 0x1c2b: 0x1fa1, 0x1c2c: 0x1f41, 0x1c2d: 0x00c9, 0x1c2e: 0x0069, 0x1c2f: 0x0079,\n\t0x1c30: 0x1f51, 0x1c31: 0x1f61, 0x1c32: 0x1f71, 0x1c33: 0x1f81, 0x1c34: 0x1f91, 0x1c35: 0x1fa1,\n\t0x1c36: 0x1f41, 0x1c37: 0x00c9, 0x1c38: 0x0069, 0x1c39: 0x0079, 0x1c3a: 0x1f51, 0x1c3b: 0x1f61,\n\t0x1c3c: 0x1f71, 0x1c3d: 0x1f81, 0x1c3e: 0x1f91, 0x1c3f: 0x1fa1,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0xe115, 0x1c41: 0xe115, 0x1c42: 0xe135, 0x1c43: 0xe135, 0x1c44: 0xe115, 0x1c45: 0xe115,\n\t0x1c46: 0xe175, 0x1c47: 0xe175, 0x1c48: 0xe115, 0x1c49: 0xe115, 0x1c4a: 0xe135, 0x1c4b: 0xe135,\n\t0x1c4c: 0xe115, 0x1c4d: 0xe115, 0x1c4e: 0xe1f5, 0x1c4f: 0xe1f5, 0x1c50: 0xe115, 0x1c51: 0xe115,\n\t0x1c52: 0xe135, 0x1c53: 0xe135, 0x1c54: 0xe115, 0x1c55: 0xe115, 0x1c56: 0xe175, 0x1c57: 0xe175,\n\t0x1c58: 0xe115, 0x1c59: 0xe115, 0x1c5a: 0xe135, 0x1c5b: 0xe135, 0x1c5c: 0xe115, 0x1c5d: 0xe115,\n\t0x1c5e: 0x8b3d, 0x1c5f: 0x8b3d, 0x1c60: 0x04b5, 0x1c61: 0x04b5, 0x1c62: 0x0a08, 0x1c63: 0x0a08,\n\t0x1c64: 0x0a08, 0x1c65: 0x0a08, 0x1c66: 0x0a08, 0x1c67: 0x0a08, 0x1c68: 0x0a08, 0x1c69: 0x0a08,\n\t0x1c6a: 0x0a08, 0x1c6b: 0x0a08, 0x1c6c: 0x0a08, 0x1c6d: 0x0a08, 0x1c6e: 0x0a08, 0x1c6f: 0x0a08,\n\t0x1c70: 0x0a08, 0x1c71: 0x0a08, 0x1c72: 0x0a08, 0x1c73: 0x0a08, 0x1c74: 0x0a08, 0x1c75: 0x0a08,\n\t0x1c76: 0x0a08, 0x1c77: 0x0a08, 0x1c78: 0x0a08, 0x1c79: 0x0a08, 0x1c7a: 0x0a08, 0x1c7b: 0x0a08,\n\t0x1c7c: 0x0a08, 0x1c7d: 0x0a08, 0x1c7e: 0x0a08, 0x1c7f: 0x0a08,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0x0040, 0x1c85: 0xb411,\n\t0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0xb399, 0x1c8b: 0xb3b1,\n\t0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9,\n\t0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231,\n\t0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0xbc59, 0x1c9d: 0x7949,\n\t0x1c9e: 0xbc71, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040,\n\t0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0x0040, 0x1ca9: 0xb429,\n\t0x1caa: 0xb399, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339,\n\t0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1,\n\t0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0x0040, 0x1cbb: 0xb351,\n\t0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x0040, 0x1cc1: 0x0040, 0x1cc2: 0xb201, 0x1cc3: 0x0040, 0x1cc4: 0x0040, 0x1cc5: 0x0040,\n\t0x1cc6: 0x0040, 0x1cc7: 0xb219, 0x1cc8: 0x0040, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1,\n\t0x1ccc: 0x0040, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0x0040, 0x1cd1: 0xb2d9,\n\t0x1cd2: 0xb381, 0x1cd3: 0x0040, 0x1cd4: 0xb2c1, 0x1cd5: 0x0040, 0x1cd6: 0x0040, 0x1cd7: 0xb231,\n\t0x1cd8: 0x0040, 0x1cd9: 0xb2f1, 0x1cda: 0x0040, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x7949,\n\t0x1cde: 0x0040, 0x1cdf: 0xbc89, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0x0040,\n\t0x1ce4: 0xb3f9, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429,\n\t0x1cea: 0xb399, 0x1ceb: 0x0040, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339,\n\t0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0x0040, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1,\n\t0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0x0040, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351,\n\t0x1cfc: 0xbc59, 0x1cfd: 0x0040, 0x1cfe: 0xbc71, 0x1cff: 0x0040,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0xb189, 0x1d01: 0xb1a1, 0x1d02: 0xb201, 0x1d03: 0xb249, 0x1d04: 0xb3f9, 0x1d05: 0xb411,\n\t0x1d06: 0xb291, 0x1d07: 0xb219, 0x1d08: 0xb309, 0x1d09: 0xb429, 0x1d0a: 0x0040, 0x1d0b: 0xb3b1,\n\t0x1d0c: 0xb3c9, 0x1d0d: 0xb3e1, 0x1d0e: 0xb2a9, 0x1d0f: 0xb339, 0x1d10: 0xb369, 0x1d11: 0xb2d9,\n\t0x1d12: 0xb381, 0x1d13: 0xb279, 0x1d14: 0xb2c1, 0x1d15: 0xb1d1, 0x1d16: 0xb1e9, 0x1d17: 0xb231,\n\t0x1d18: 0xb261, 0x1d19: 0xb2f1, 0x1d1a: 0xb321, 0x1d1b: 0xb351, 0x1d1c: 0x0040, 0x1d1d: 0x0040,\n\t0x1d1e: 0x0040, 0x1d1f: 0x0040, 0x1d20: 0x0040, 0x1d21: 0xb1a1, 0x1d22: 0xb201, 0x1d23: 0xb249,\n\t0x1d24: 0x0040, 0x1d25: 0xb411, 0x1d26: 0xb291, 0x1d27: 0xb219, 0x1d28: 0xb309, 0x1d29: 0xb429,\n\t0x1d2a: 0x0040, 0x1d2b: 0xb3b1, 0x1d2c: 0xb3c9, 0x1d2d: 0xb3e1, 0x1d2e: 0xb2a9, 0x1d2f: 0xb339,\n\t0x1d30: 0xb369, 0x1d31: 0xb2d9, 0x1d32: 0xb381, 0x1d33: 0xb279, 0x1d34: 0xb2c1, 0x1d35: 0xb1d1,\n\t0x1d36: 0xb1e9, 0x1d37: 0xb231, 0x1d38: 0xb261, 0x1d39: 0xb2f1, 0x1d3a: 0xb321, 0x1d3b: 0xb351,\n\t0x1d3c: 0x0040, 0x1d3d: 0x0040, 0x1d3e: 0x0040, 0x1d3f: 0x0040,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x0040, 0x1d41: 0xbca2, 0x1d42: 0xbcba, 0x1d43: 0xbcd2, 0x1d44: 0xbcea, 0x1d45: 0xbd02,\n\t0x1d46: 0xbd1a, 0x1d47: 0xbd32, 0x1d48: 0xbd4a, 0x1d49: 0xbd62, 0x1d4a: 0xbd7a, 0x1d4b: 0x0018,\n\t0x1d4c: 0x0018, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xbd92, 0x1d51: 0xbdb2,\n\t0x1d52: 0xbdd2, 0x1d53: 0xbdf2, 0x1d54: 0xbe12, 0x1d55: 0xbe32, 0x1d56: 0xbe52, 0x1d57: 0xbe72,\n\t0x1d58: 0xbe92, 0x1d59: 0xbeb2, 0x1d5a: 0xbed2, 0x1d5b: 0xbef2, 0x1d5c: 0xbf12, 0x1d5d: 0xbf32,\n\t0x1d5e: 0xbf52, 0x1d5f: 0xbf72, 0x1d60: 0xbf92, 0x1d61: 0xbfb2, 0x1d62: 0xbfd2, 0x1d63: 0xbff2,\n\t0x1d64: 0xc012, 0x1d65: 0xc032, 0x1d66: 0xc052, 0x1d67: 0xc072, 0x1d68: 0xc092, 0x1d69: 0xc0b2,\n\t0x1d6a: 0xc0d1, 0x1d6b: 0x1159, 0x1d6c: 0x0269, 0x1d6d: 0x6671, 0x1d6e: 0xc111, 0x1d6f: 0x0018,\n\t0x1d70: 0x0039, 0x1d71: 0x0ee9, 0x1d72: 0x1159, 0x1d73: 0x0ef9, 0x1d74: 0x0f09, 0x1d75: 0x1199,\n\t0x1d76: 0x0f31, 0x1d77: 0x0249, 0x1d78: 0x0f41, 0x1d79: 0x0259, 0x1d7a: 0x0f51, 0x1d7b: 0x0359,\n\t0x1d7c: 0x0f61, 0x1d7d: 0x0f71, 0x1d7e: 0x00d9, 0x1d7f: 0x0f99,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0x2039, 0x1d81: 0x0269, 0x1d82: 0x01d9, 0x1d83: 0x0fa9, 0x1d84: 0x0fb9, 0x1d85: 0x1089,\n\t0x1d86: 0x0279, 0x1d87: 0x0369, 0x1d88: 0x0289, 0x1d89: 0x13d1, 0x1d8a: 0xc129, 0x1d8b: 0x65b1,\n\t0x1d8c: 0xc141, 0x1d8d: 0x1441, 0x1d8e: 0xc159, 0x1d8f: 0xc179, 0x1d90: 0x0018, 0x1d91: 0x0018,\n\t0x1d92: 0x0018, 0x1d93: 0x0018, 0x1d94: 0x0018, 0x1d95: 0x0018, 0x1d96: 0x0018, 0x1d97: 0x0018,\n\t0x1d98: 0x0018, 0x1d99: 0x0018, 0x1d9a: 0x0018, 0x1d9b: 0x0018, 0x1d9c: 0x0018, 0x1d9d: 0x0018,\n\t0x1d9e: 0x0018, 0x1d9f: 0x0018, 0x1da0: 0x0018, 0x1da1: 0x0018, 0x1da2: 0x0018, 0x1da3: 0x0018,\n\t0x1da4: 0x0018, 0x1da5: 0x0018, 0x1da6: 0x0018, 0x1da7: 0x0018, 0x1da8: 0x0018, 0x1da9: 0x0018,\n\t0x1daa: 0xc191, 0x1dab: 0xc1a9, 0x1dac: 0xc1c1, 0x1dad: 0x0040, 0x1dae: 0x0040, 0x1daf: 0x0040,\n\t0x1db0: 0x0018, 0x1db1: 0x0018, 0x1db2: 0x0018, 0x1db3: 0x0018, 0x1db4: 0x0018, 0x1db5: 0x0018,\n\t0x1db6: 0x0018, 0x1db7: 0x0018, 0x1db8: 0x0018, 0x1db9: 0x0018, 0x1dba: 0x0018, 0x1dbb: 0x0018,\n\t0x1dbc: 0x0018, 0x1dbd: 0x0018, 0x1dbe: 0x0018, 0x1dbf: 0x0018,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0xc1f1, 0x1dc1: 0xc229, 0x1dc2: 0xc261, 0x1dc3: 0x0040, 0x1dc4: 0x0040, 0x1dc5: 0x0040,\n\t0x1dc6: 0x0040, 0x1dc7: 0x0040, 0x1dc8: 0x0040, 0x1dc9: 0x0040, 0x1dca: 0x0040, 0x1dcb: 0x0040,\n\t0x1dcc: 0x0040, 0x1dcd: 0x0040, 0x1dce: 0x0040, 0x1dcf: 0x0040, 0x1dd0: 0xc281, 0x1dd1: 0xc2a1,\n\t0x1dd2: 0xc2c1, 0x1dd3: 0xc2e1, 0x1dd4: 0xc301, 0x1dd5: 0xc321, 0x1dd6: 0xc341, 0x1dd7: 0xc361,\n\t0x1dd8: 0xc381, 0x1dd9: 0xc3a1, 0x1dda: 0xc3c1, 0x1ddb: 0xc3e1, 0x1ddc: 0xc401, 0x1ddd: 0xc421,\n\t0x1dde: 0xc441, 0x1ddf: 0xc461, 0x1de0: 0xc481, 0x1de1: 0xc4a1, 0x1de2: 0xc4c1, 0x1de3: 0xc4e1,\n\t0x1de4: 0xc501, 0x1de5: 0xc521, 0x1de6: 0xc541, 0x1de7: 0xc561, 0x1de8: 0xc581, 0x1de9: 0xc5a1,\n\t0x1dea: 0xc5c1, 0x1deb: 0xc5e1, 0x1dec: 0xc601, 0x1ded: 0xc621, 0x1dee: 0xc641, 0x1def: 0xc661,\n\t0x1df0: 0xc681, 0x1df1: 0xc6a1, 0x1df2: 0xc6c1, 0x1df3: 0xc6e1, 0x1df4: 0xc701, 0x1df5: 0xc721,\n\t0x1df6: 0xc741, 0x1df7: 0xc761, 0x1df8: 0xc781, 0x1df9: 0xc7a1, 0x1dfa: 0xc7c1, 0x1dfb: 0xc7e1,\n\t0x1dfc: 0x0040, 0x1dfd: 0x0040, 0x1dfe: 0x0040, 0x1dff: 0x0040,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0xcb11, 0x1e01: 0xcb31, 0x1e02: 0xcb51, 0x1e03: 0x8b55, 0x1e04: 0xcb71, 0x1e05: 0xcb91,\n\t0x1e06: 0xcbb1, 0x1e07: 0xcbd1, 0x1e08: 0xcbf1, 0x1e09: 0xcc11, 0x1e0a: 0xcc31, 0x1e0b: 0xcc51,\n\t0x1e0c: 0xcc71, 0x1e0d: 0x8b75, 0x1e0e: 0xcc91, 0x1e0f: 0xccb1, 0x1e10: 0xccd1, 0x1e11: 0xccf1,\n\t0x1e12: 0x8b95, 0x1e13: 0xcd11, 0x1e14: 0xcd31, 0x1e15: 0xc441, 0x1e16: 0x8bb5, 0x1e17: 0xcd51,\n\t0x1e18: 0xcd71, 0x1e19: 0xcd91, 0x1e1a: 0xcdb1, 0x1e1b: 0xcdd1, 0x1e1c: 0x8bd5, 0x1e1d: 0xcdf1,\n\t0x1e1e: 0xce11, 0x1e1f: 0xce31, 0x1e20: 0xce51, 0x1e21: 0xce71, 0x1e22: 0xc7a1, 0x1e23: 0xce91,\n\t0x1e24: 0xceb1, 0x1e25: 0xced1, 0x1e26: 0xcef1, 0x1e27: 0xcf11, 0x1e28: 0xcf31, 0x1e29: 0xcf51,\n\t0x1e2a: 0xcf71, 0x1e2b: 0xcf91, 0x1e2c: 0xcfb1, 0x1e2d: 0xcfd1, 0x1e2e: 0xcff1, 0x1e2f: 0xd011,\n\t0x1e30: 0xd031, 0x1e31: 0xd051, 0x1e32: 0xd051, 0x1e33: 0xd051, 0x1e34: 0x8bf5, 0x1e35: 0xd071,\n\t0x1e36: 0xd091, 0x1e37: 0xd0b1, 0x1e38: 0x8c15, 0x1e39: 0xd0d1, 0x1e3a: 0xd0f1, 0x1e3b: 0xd111,\n\t0x1e3c: 0xd131, 0x1e3d: 0xd151, 0x1e3e: 0xd171, 0x1e3f: 0xd191,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0xd1b1, 0x1e41: 0xd1d1, 0x1e42: 0xd1f1, 0x1e43: 0xd211, 0x1e44: 0xd231, 0x1e45: 0xd251,\n\t0x1e46: 0xd251, 0x1e47: 0xd271, 0x1e48: 0xd291, 0x1e49: 0xd2b1, 0x1e4a: 0xd2d1, 0x1e4b: 0xd2f1,\n\t0x1e4c: 0xd311, 0x1e4d: 0xd331, 0x1e4e: 0xd351, 0x1e4f: 0xd371, 0x1e50: 0xd391, 0x1e51: 0xd3b1,\n\t0x1e52: 0xd3d1, 0x1e53: 0xd3f1, 0x1e54: 0xd411, 0x1e55: 0xd431, 0x1e56: 0xd451, 0x1e57: 0xd471,\n\t0x1e58: 0xd491, 0x1e59: 0x8c35, 0x1e5a: 0xd4b1, 0x1e5b: 0xd4d1, 0x1e5c: 0xd4f1, 0x1e5d: 0xc321,\n\t0x1e5e: 0xd511, 0x1e5f: 0xd531, 0x1e60: 0x8c55, 0x1e61: 0x8c75, 0x1e62: 0xd551, 0x1e63: 0xd571,\n\t0x1e64: 0xd591, 0x1e65: 0xd5b1, 0x1e66: 0xd5d1, 0x1e67: 0xd5f1, 0x1e68: 0x2040, 0x1e69: 0xd611,\n\t0x1e6a: 0xd631, 0x1e6b: 0xd631, 0x1e6c: 0x8c95, 0x1e6d: 0xd651, 0x1e6e: 0xd671, 0x1e6f: 0xd691,\n\t0x1e70: 0xd6b1, 0x1e71: 0x8cb5, 0x1e72: 0xd6d1, 0x1e73: 0xd6f1, 0x1e74: 0x2040, 0x1e75: 0xd711,\n\t0x1e76: 0xd731, 0x1e77: 0xd751, 0x1e78: 0xd771, 0x1e79: 0xd791, 0x1e7a: 0xd7b1, 0x1e7b: 0x8cd5,\n\t0x1e7c: 0xd7d1, 0x1e7d: 0x8cf5, 0x1e7e: 0xd7f1, 0x1e7f: 0xd811,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0xd831, 0x1e81: 0xd851, 0x1e82: 0xd871, 0x1e83: 0xd891, 0x1e84: 0xd8b1, 0x1e85: 0xd8d1,\n\t0x1e86: 0xd8f1, 0x1e87: 0xd911, 0x1e88: 0xd931, 0x1e89: 0x8d15, 0x1e8a: 0xd951, 0x1e8b: 0xd971,\n\t0x1e8c: 0xd991, 0x1e8d: 0xd9b1, 0x1e8e: 0xd9d1, 0x1e8f: 0x8d35, 0x1e90: 0xd9f1, 0x1e91: 0x8d55,\n\t0x1e92: 0x8d75, 0x1e93: 0xda11, 0x1e94: 0xda31, 0x1e95: 0xda31, 0x1e96: 0xda51, 0x1e97: 0x8d95,\n\t0x1e98: 0x8db5, 0x1e99: 0xda71, 0x1e9a: 0xda91, 0x1e9b: 0xdab1, 0x1e9c: 0xdad1, 0x1e9d: 0xdaf1,\n\t0x1e9e: 0xdb11, 0x1e9f: 0xdb31, 0x1ea0: 0xdb51, 0x1ea1: 0xdb71, 0x1ea2: 0xdb91, 0x1ea3: 0xdbb1,\n\t0x1ea4: 0x8dd5, 0x1ea5: 0xdbd1, 0x1ea6: 0xdbf1, 0x1ea7: 0xdc11, 0x1ea8: 0xdc31, 0x1ea9: 0xdc11,\n\t0x1eaa: 0xdc51, 0x1eab: 0xdc71, 0x1eac: 0xdc91, 0x1ead: 0xdcb1, 0x1eae: 0xdcd1, 0x1eaf: 0xdcf1,\n\t0x1eb0: 0xdd11, 0x1eb1: 0xdd31, 0x1eb2: 0xdd51, 0x1eb3: 0xdd71, 0x1eb4: 0xdd91, 0x1eb5: 0xddb1,\n\t0x1eb6: 0xddd1, 0x1eb7: 0xddf1, 0x1eb8: 0x8df5, 0x1eb9: 0xde11, 0x1eba: 0xde31, 0x1ebb: 0xde51,\n\t0x1ebc: 0xde71, 0x1ebd: 0xde91, 0x1ebe: 0x8e15, 0x1ebf: 0xdeb1,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0xe5b1, 0x1ec1: 0xe5d1, 0x1ec2: 0xe5f1, 0x1ec3: 0xe611, 0x1ec4: 0xe631, 0x1ec5: 0xe651,\n\t0x1ec6: 0x8f35, 0x1ec7: 0xe671, 0x1ec8: 0xe691, 0x1ec9: 0xe6b1, 0x1eca: 0xe6d1, 0x1ecb: 0xe6f1,\n\t0x1ecc: 0xe711, 0x1ecd: 0x8f55, 0x1ece: 0xe731, 0x1ecf: 0xe751, 0x1ed0: 0x8f75, 0x1ed1: 0x8f95,\n\t0x1ed2: 0xe771, 0x1ed3: 0xe791, 0x1ed4: 0xe7b1, 0x1ed5: 0xe7d1, 0x1ed6: 0xe7f1, 0x1ed7: 0xe811,\n\t0x1ed8: 0xe831, 0x1ed9: 0xe851, 0x1eda: 0xe871, 0x1edb: 0x8fb5, 0x1edc: 0xe891, 0x1edd: 0x8fd5,\n\t0x1ede: 0xe8b1, 0x1edf: 0x2040, 0x1ee0: 0xe8d1, 0x1ee1: 0xe8f1, 0x1ee2: 0xe911, 0x1ee3: 0x8ff5,\n\t0x1ee4: 0xe931, 0x1ee5: 0xe951, 0x1ee6: 0x9015, 0x1ee7: 0x9035, 0x1ee8: 0xe971, 0x1ee9: 0xe991,\n\t0x1eea: 0xe9b1, 0x1eeb: 0xe9d1, 0x1eec: 0xe9f1, 0x1eed: 0xe9f1, 0x1eee: 0xea11, 0x1eef: 0xea31,\n\t0x1ef0: 0xea51, 0x1ef1: 0xea71, 0x1ef2: 0xea91, 0x1ef3: 0xeab1, 0x1ef4: 0xead1, 0x1ef5: 0x9055,\n\t0x1ef6: 0xeaf1, 0x1ef7: 0x9075, 0x1ef8: 0xeb11, 0x1ef9: 0x9095, 0x1efa: 0xeb31, 0x1efb: 0x90b5,\n\t0x1efc: 0x90d5, 0x1efd: 0x90f5, 0x1efe: 0xeb51, 0x1eff: 0xeb71,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0xeb91, 0x1f01: 0x9115, 0x1f02: 0x9135, 0x1f03: 0x9155, 0x1f04: 0x9175, 0x1f05: 0xebb1,\n\t0x1f06: 0xebd1, 0x1f07: 0xebd1, 0x1f08: 0xebf1, 0x1f09: 0xec11, 0x1f0a: 0xec31, 0x1f0b: 0xec51,\n\t0x1f0c: 0xec71, 0x1f0d: 0x9195, 0x1f0e: 0xec91, 0x1f0f: 0xecb1, 0x1f10: 0xecd1, 0x1f11: 0xecf1,\n\t0x1f12: 0x91b5, 0x1f13: 0xed11, 0x1f14: 0x91d5, 0x1f15: 0x91f5, 0x1f16: 0xed31, 0x1f17: 0xed51,\n\t0x1f18: 0xed71, 0x1f19: 0xed91, 0x1f1a: 0xedb1, 0x1f1b: 0xedd1, 0x1f1c: 0x9215, 0x1f1d: 0x9235,\n\t0x1f1e: 0x9255, 0x1f1f: 0x2040, 0x1f20: 0xedf1, 0x1f21: 0x9275, 0x1f22: 0xee11, 0x1f23: 0xee31,\n\t0x1f24: 0xee51, 0x1f25: 0x9295, 0x1f26: 0xee71, 0x1f27: 0xee91, 0x1f28: 0xeeb1, 0x1f29: 0xeed1,\n\t0x1f2a: 0xeef1, 0x1f2b: 0x92b5, 0x1f2c: 0xef11, 0x1f2d: 0xef31, 0x1f2e: 0xef51, 0x1f2f: 0xef71,\n\t0x1f30: 0xef91, 0x1f31: 0xefb1, 0x1f32: 0x92d5, 0x1f33: 0x92f5, 0x1f34: 0xefd1, 0x1f35: 0x9315,\n\t0x1f36: 0xeff1, 0x1f37: 0x9335, 0x1f38: 0xf011, 0x1f39: 0xf031, 0x1f3a: 0xf051, 0x1f3b: 0x9355,\n\t0x1f3c: 0x9375, 0x1f3d: 0xf071, 0x1f3e: 0x9395, 0x1f3f: 0xf091,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0xf6d1, 0x1f41: 0xf6f1, 0x1f42: 0xf711, 0x1f43: 0xf731, 0x1f44: 0xf751, 0x1f45: 0x9555,\n\t0x1f46: 0xf771, 0x1f47: 0xf791, 0x1f48: 0xf7b1, 0x1f49: 0xf7d1, 0x1f4a: 0xf7f1, 0x1f4b: 0x9575,\n\t0x1f4c: 0x9595, 0x1f4d: 0xf811, 0x1f4e: 0xf831, 0x1f4f: 0xf851, 0x1f50: 0xf871, 0x1f51: 0xf891,\n\t0x1f52: 0xf8b1, 0x1f53: 0x95b5, 0x1f54: 0xf8d1, 0x1f55: 0xf8f1, 0x1f56: 0xf911, 0x1f57: 0xf931,\n\t0x1f58: 0x95d5, 0x1f59: 0x95f5, 0x1f5a: 0xf951, 0x1f5b: 0xf971, 0x1f5c: 0xf991, 0x1f5d: 0x9615,\n\t0x1f5e: 0xf9b1, 0x1f5f: 0xf9d1, 0x1f60: 0x684d, 0x1f61: 0x9635, 0x1f62: 0xf9f1, 0x1f63: 0xfa11,\n\t0x1f64: 0xfa31, 0x1f65: 0x9655, 0x1f66: 0xfa51, 0x1f67: 0xfa71, 0x1f68: 0xfa91, 0x1f69: 0xfab1,\n\t0x1f6a: 0xfad1, 0x1f6b: 0xfaf1, 0x1f6c: 0xfb11, 0x1f6d: 0x9675, 0x1f6e: 0xfb31, 0x1f6f: 0xfb51,\n\t0x1f70: 0xfb71, 0x1f71: 0x9695, 0x1f72: 0xfb91, 0x1f73: 0xfbb1, 0x1f74: 0xfbd1, 0x1f75: 0xfbf1,\n\t0x1f76: 0x7b6d, 0x1f77: 0x96b5, 0x1f78: 0xfc11, 0x1f79: 0xfc31, 0x1f7a: 0xfc51, 0x1f7b: 0x96d5,\n\t0x1f7c: 0xfc71, 0x1f7d: 0x96f5, 0x1f7e: 0xfc91, 0x1f7f: 0xfc91,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0xfcb1, 0x1f81: 0x9715, 0x1f82: 0xfcd1, 0x1f83: 0xfcf1, 0x1f84: 0xfd11, 0x1f85: 0xfd31,\n\t0x1f86: 0xfd51, 0x1f87: 0xfd71, 0x1f88: 0xfd91, 0x1f89: 0x9735, 0x1f8a: 0xfdb1, 0x1f8b: 0xfdd1,\n\t0x1f8c: 0xfdf1, 0x1f8d: 0xfe11, 0x1f8e: 0xfe31, 0x1f8f: 0xfe51, 0x1f90: 0x9755, 0x1f91: 0xfe71,\n\t0x1f92: 0x9775, 0x1f93: 0x9795, 0x1f94: 0x97b5, 0x1f95: 0xfe91, 0x1f96: 0xfeb1, 0x1f97: 0xfed1,\n\t0x1f98: 0xfef1, 0x1f99: 0xff11, 0x1f9a: 0xff31, 0x1f9b: 0xff51, 0x1f9c: 0xff71, 0x1f9d: 0x97d5,\n\t0x1f9e: 0x0040, 0x1f9f: 0x0040, 0x1fa0: 0x0040, 0x1fa1: 0x0040, 0x1fa2: 0x0040, 0x1fa3: 0x0040,\n\t0x1fa4: 0x0040, 0x1fa5: 0x0040, 0x1fa6: 0x0040, 0x1fa7: 0x0040, 0x1fa8: 0x0040, 0x1fa9: 0x0040,\n\t0x1faa: 0x0040, 0x1fab: 0x0040, 0x1fac: 0x0040, 0x1fad: 0x0040, 0x1fae: 0x0040, 0x1faf: 0x0040,\n\t0x1fb0: 0x0040, 0x1fb1: 0x0040, 0x1fb2: 0x0040, 0x1fb3: 0x0040, 0x1fb4: 0x0040, 0x1fb5: 0x0040,\n\t0x1fb6: 0x0040, 0x1fb7: 0x0040, 0x1fb8: 0x0040, 0x1fb9: 0x0040, 0x1fba: 0x0040, 0x1fbb: 0x0040,\n\t0x1fbc: 0x0040, 0x1fbd: 0x0040, 0x1fbe: 0x0040, 0x1fbf: 0x0040,\n}\n\n// idnaIndex: 36 blocks, 2304 entries, 4608 bytes\n// Block 0 is the zero block.\nvar idnaIndex = [2304]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x7d, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,\n\t0xc8: 0x06, 0xc9: 0x7e, 0xca: 0x7f, 0xcb: 0x07, 0xcc: 0x80, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,\n\t0xd0: 0x81, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x82, 0xd6: 0x83, 0xd7: 0x84,\n\t0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x85, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x86, 0xde: 0x87, 0xdf: 0x88,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,\n\t0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c,\n\t0xf0: 0x1d, 0xf1: 0x1e, 0xf2: 0x1e, 0xf3: 0x20, 0xf4: 0x21,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x89, 0x121: 0x13, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16,\n\t0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8d,\n\t0x130: 0x8e, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x8f, 0x135: 0x21, 0x136: 0x90, 0x137: 0x91,\n\t0x138: 0x92, 0x139: 0x93, 0x13a: 0x22, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x96,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e,\n\t0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6,\n\t0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f,\n\t0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae,\n\t0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6,\n\t0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe,\n\t0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc3,\n\t0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc4, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc5, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc6, 0x187: 0x9b,\n\t0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0x9b,\n\t0x190: 0xca, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b,\n\t0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b,\n\t0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b,\n\t0x1a8: 0xcb, 0x1a9: 0xcc, 0x1aa: 0x9b, 0x1ab: 0xcd, 0x1ac: 0x9b, 0x1ad: 0xce, 0x1ae: 0xcf, 0x1af: 0x9b,\n\t0x1b0: 0xd0, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd1, 0x1b5: 0xd2, 0x1b6: 0xd3, 0x1b7: 0xd4,\n\t0x1b8: 0xd5, 0x1b9: 0xd6, 0x1ba: 0xd7, 0x1bb: 0xd8, 0x1bc: 0xd9, 0x1bd: 0xda, 0x1be: 0xdb, 0x1bf: 0x37,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x38, 0x1c1: 0xdc, 0x1c2: 0xdd, 0x1c3: 0xde, 0x1c4: 0xdf, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe0,\n\t0x1c8: 0xe1, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0x3e, 0x1cd: 0x3f, 0x1ce: 0x40, 0x1cf: 0x41,\n\t0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f,\n\t0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f,\n\t0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f,\n\t0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f,\n\t0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f,\n\t0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f,\n\t0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f,\n\t0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f,\n\t0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f,\n\t0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f,\n\t0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f,\n\t0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b,\n\t0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f,\n\t0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f,\n\t0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f,\n\t0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f,\n\t0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f,\n\t0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f,\n\t0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f,\n\t0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f,\n\t0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f,\n\t0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f,\n\t0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f,\n\t0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f,\n\t0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f,\n\t0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f,\n\t0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe2,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f,\n\t0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f,\n\t0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe3, 0x2d3: 0xe4, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f,\n\t0x2d8: 0xe5, 0x2d9: 0x42, 0x2da: 0x43, 0x2db: 0xe6, 0x2dc: 0x44, 0x2dd: 0x45, 0x2de: 0x46, 0x2df: 0xe7,\n\t0x2e0: 0xe8, 0x2e1: 0xe9, 0x2e2: 0xea, 0x2e3: 0xeb, 0x2e4: 0xec, 0x2e5: 0xed, 0x2e6: 0xee, 0x2e7: 0xef,\n\t0x2e8: 0xf0, 0x2e9: 0xf1, 0x2ea: 0xf2, 0x2eb: 0xf3, 0x2ec: 0xf4, 0x2ed: 0xf5, 0x2ee: 0xf6, 0x2ef: 0xf7,\n\t0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f,\n\t0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f,\n\t0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f,\n\t0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f,\n\t0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xf8, 0x31f: 0xf9,\n\t// Block 0xd, offset 0x340\n\t0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba,\n\t0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba,\n\t0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba,\n\t0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba,\n\t0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba,\n\t0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba,\n\t0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba,\n\t0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba,\n\t0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba,\n\t0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba,\n\t0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba,\n\t0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfa, 0x3a5: 0xfb, 0x3a6: 0xfc, 0x3a7: 0xfd,\n\t0x3a8: 0x47, 0x3a9: 0xfe, 0x3aa: 0xff, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c,\n\t0x3b0: 0x100, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x101, 0x3b7: 0x52,\n\t0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x102, 0x3c1: 0x103, 0x3c2: 0x9f, 0x3c3: 0x104, 0x3c4: 0x105, 0x3c5: 0x9b, 0x3c6: 0x106, 0x3c7: 0x107,\n\t0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x108, 0x3cb: 0x109, 0x3cc: 0x10a, 0x3cd: 0x10b, 0x3ce: 0x10c, 0x3cf: 0x10d,\n\t0x3d0: 0x10e, 0x3d1: 0x9f, 0x3d2: 0x10f, 0x3d3: 0x110, 0x3d4: 0x111, 0x3d5: 0x112, 0x3d6: 0xba, 0x3d7: 0xba,\n\t0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x113, 0x3dd: 0x114, 0x3de: 0xba, 0x3df: 0xba,\n\t0x3e0: 0x115, 0x3e1: 0x116, 0x3e2: 0x117, 0x3e3: 0x118, 0x3e4: 0x119, 0x3e5: 0xba, 0x3e6: 0x11a, 0x3e7: 0x11b,\n\t0x3e8: 0x11c, 0x3e9: 0x11d, 0x3ea: 0x11e, 0x3eb: 0x5b, 0x3ec: 0x11f, 0x3ed: 0x120, 0x3ee: 0x5c, 0x3ef: 0xba,\n\t0x3f0: 0x121, 0x3f1: 0x122, 0x3f2: 0x123, 0x3f3: 0x124, 0x3f4: 0x125, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba,\n\t0x3f8: 0xba, 0x3f9: 0x126, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0x127, 0x3fd: 0x128, 0x3fe: 0xba, 0x3ff: 0x129,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x12a, 0x401: 0x12b, 0x402: 0x12c, 0x403: 0x12d, 0x404: 0x12e, 0x405: 0x12f, 0x406: 0x130, 0x407: 0x131,\n\t0x408: 0x132, 0x409: 0xba, 0x40a: 0x133, 0x40b: 0x134, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xba, 0x40f: 0xba,\n\t0x410: 0x135, 0x411: 0x136, 0x412: 0x137, 0x413: 0x138, 0x414: 0xba, 0x415: 0xba, 0x416: 0x139, 0x417: 0x13a,\n\t0x418: 0x13b, 0x419: 0x13c, 0x41a: 0x13d, 0x41b: 0x13e, 0x41c: 0x13f, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba,\n\t0x420: 0x140, 0x421: 0xba, 0x422: 0x141, 0x423: 0x142, 0x424: 0xba, 0x425: 0xba, 0x426: 0x143, 0x427: 0x144,\n\t0x428: 0x145, 0x429: 0x146, 0x42a: 0x147, 0x42b: 0x148, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba,\n\t0x430: 0x149, 0x431: 0x14a, 0x432: 0x14b, 0x433: 0xba, 0x434: 0x14c, 0x435: 0x14d, 0x436: 0x14e, 0x437: 0xba,\n\t0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0x14f, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0x150,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f,\n\t0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x151, 0x44f: 0xba,\n\t0x450: 0x9b, 0x451: 0x152, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x153, 0x456: 0xba, 0x457: 0xba,\n\t0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba,\n\t0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba,\n\t0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba,\n\t0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba,\n\t0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f,\n\t0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f,\n\t0x490: 0x154, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba,\n\t0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba,\n\t0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba,\n\t0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba,\n\t0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba,\n\t0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba,\n\t0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba,\n\t0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f,\n\t0x4d8: 0x9f, 0x4d9: 0x155, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba,\n\t0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba,\n\t0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba,\n\t0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba,\n\t0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba,\n\t// Block 0x14, offset 0x500\n\t0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba,\n\t0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba,\n\t0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba,\n\t0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba,\n\t0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f,\n\t0x528: 0x148, 0x529: 0x156, 0x52a: 0xba, 0x52b: 0x157, 0x52c: 0x158, 0x52d: 0x159, 0x52e: 0x15a, 0x52f: 0xba,\n\t0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba,\n\t0x538: 0xba, 0x539: 0x15b, 0x53a: 0x15c, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x15d, 0x53e: 0x15e, 0x53f: 0x15f,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f,\n\t0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f,\n\t0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f,\n\t0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x160,\n\t0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f,\n\t0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x161, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba,\n\t0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba,\n\t0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x9f, 0x581: 0x9f, 0x582: 0x9f, 0x583: 0x9f, 0x584: 0x162, 0x585: 0x163, 0x586: 0x9f, 0x587: 0x9f,\n\t0x588: 0x9f, 0x589: 0x9f, 0x58a: 0x9f, 0x58b: 0x164, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba,\n\t0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba,\n\t0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba,\n\t0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba,\n\t0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba,\n\t0x5b0: 0x9f, 0x5b1: 0x165, 0x5b2: 0x166, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba,\n\t0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x167, 0x5c4: 0x168, 0x5c5: 0x169, 0x5c6: 0x16a, 0x5c7: 0x16b,\n\t0x5c8: 0x9b, 0x5c9: 0x16c, 0x5ca: 0xba, 0x5cb: 0x16d, 0x5cc: 0x9b, 0x5cd: 0x16e, 0x5ce: 0xba, 0x5cf: 0xba,\n\t0x5d0: 0x5f, 0x5d1: 0x60, 0x5d2: 0x61, 0x5d3: 0x62, 0x5d4: 0x63, 0x5d5: 0x64, 0x5d6: 0x65, 0x5d7: 0x66,\n\t0x5d8: 0x67, 0x5d9: 0x68, 0x5da: 0x69, 0x5db: 0x6a, 0x5dc: 0x6b, 0x5dd: 0x6c, 0x5de: 0x6d, 0x5df: 0x6e,\n\t0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b,\n\t0x5e8: 0x16f, 0x5e9: 0x170, 0x5ea: 0x171, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba,\n\t0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba,\n\t0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x172, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0x173, 0x605: 0x174, 0x606: 0xba, 0x607: 0xba,\n\t0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0x175, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba,\n\t0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba,\n\t0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba,\n\t0x620: 0x121, 0x621: 0x121, 0x622: 0x121, 0x623: 0x176, 0x624: 0x6f, 0x625: 0x177, 0x626: 0xba, 0x627: 0xba,\n\t0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba,\n\t0x630: 0xba, 0x631: 0x178, 0x632: 0x179, 0x633: 0xba, 0x634: 0x17a, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba,\n\t0x638: 0x70, 0x639: 0x71, 0x63a: 0x72, 0x63b: 0x17b, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x17c, 0x641: 0x9b, 0x642: 0x17d, 0x643: 0x17e, 0x644: 0x73, 0x645: 0x74, 0x646: 0x17f, 0x647: 0x180,\n\t0x648: 0x75, 0x649: 0x181, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b,\n\t0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b,\n\t0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x182, 0x65c: 0x9b, 0x65d: 0x183, 0x65e: 0x9b, 0x65f: 0x184,\n\t0x660: 0x185, 0x661: 0x186, 0x662: 0x187, 0x663: 0xba, 0x664: 0x188, 0x665: 0x189, 0x666: 0x18a, 0x667: 0x18b,\n\t0x668: 0x9b, 0x669: 0x18c, 0x66a: 0x18d, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba,\n\t0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba,\n\t0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f,\n\t0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f,\n\t0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f,\n\t0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x18e, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f,\n\t0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f,\n\t0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f,\n\t0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f,\n\t0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f,\n\t0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f,\n\t0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f,\n\t0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x18f, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f,\n\t0x6e0: 0x190, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f,\n\t0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f,\n\t0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f,\n\t0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f,\n\t0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f,\n\t0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f,\n\t0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f,\n\t0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f,\n\t0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f,\n\t0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f,\n\t0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x191, 0x73b: 0x9f, 0x73c: 0x9f, 0x73d: 0x9f, 0x73e: 0x9f, 0x73f: 0x9f,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x9f, 0x741: 0x9f, 0x742: 0x9f, 0x743: 0x9f, 0x744: 0x9f, 0x745: 0x9f, 0x746: 0x9f, 0x747: 0x9f,\n\t0x748: 0x9f, 0x749: 0x9f, 0x74a: 0x9f, 0x74b: 0x9f, 0x74c: 0x9f, 0x74d: 0x9f, 0x74e: 0x9f, 0x74f: 0x9f,\n\t0x750: 0x9f, 0x751: 0x9f, 0x752: 0x9f, 0x753: 0x9f, 0x754: 0x9f, 0x755: 0x9f, 0x756: 0x9f, 0x757: 0x9f,\n\t0x758: 0x9f, 0x759: 0x9f, 0x75a: 0x9f, 0x75b: 0x9f, 0x75c: 0x9f, 0x75d: 0x9f, 0x75e: 0x9f, 0x75f: 0x9f,\n\t0x760: 0x9f, 0x761: 0x9f, 0x762: 0x9f, 0x763: 0x9f, 0x764: 0x9f, 0x765: 0x9f, 0x766: 0x9f, 0x767: 0x9f,\n\t0x768: 0x9f, 0x769: 0x9f, 0x76a: 0x9f, 0x76b: 0x9f, 0x76c: 0x9f, 0x76d: 0x9f, 0x76e: 0x9f, 0x76f: 0x192,\n\t0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba,\n\t0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0xba, 0x781: 0xba, 0x782: 0xba, 0x783: 0xba, 0x784: 0xba, 0x785: 0xba, 0x786: 0xba, 0x787: 0xba,\n\t0x788: 0xba, 0x789: 0xba, 0x78a: 0xba, 0x78b: 0xba, 0x78c: 0xba, 0x78d: 0xba, 0x78e: 0xba, 0x78f: 0xba,\n\t0x790: 0xba, 0x791: 0xba, 0x792: 0xba, 0x793: 0xba, 0x794: 0xba, 0x795: 0xba, 0x796: 0xba, 0x797: 0xba,\n\t0x798: 0xba, 0x799: 0xba, 0x79a: 0xba, 0x79b: 0xba, 0x79c: 0xba, 0x79d: 0xba, 0x79e: 0xba, 0x79f: 0xba,\n\t0x7a0: 0x76, 0x7a1: 0x77, 0x7a2: 0x78, 0x7a3: 0x193, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x194, 0x7a7: 0x7b,\n\t0x7a8: 0x7c, 0x7a9: 0xba, 0x7aa: 0xba, 0x7ab: 0xba, 0x7ac: 0xba, 0x7ad: 0xba, 0x7ae: 0xba, 0x7af: 0xba,\n\t0x7b0: 0xba, 0x7b1: 0xba, 0x7b2: 0xba, 0x7b3: 0xba, 0x7b4: 0xba, 0x7b5: 0xba, 0x7b6: 0xba, 0x7b7: 0xba,\n\t0x7b8: 0xba, 0x7b9: 0xba, 0x7ba: 0xba, 0x7bb: 0xba, 0x7bc: 0xba, 0x7bd: 0xba, 0x7be: 0xba, 0x7bf: 0xba,\n\t// Block 0x1f, offset 0x7c0\n\t0x7d0: 0x0d, 0x7d1: 0x0e, 0x7d2: 0x0f, 0x7d3: 0x10, 0x7d4: 0x11, 0x7d5: 0x0b, 0x7d6: 0x12, 0x7d7: 0x07,\n\t0x7d8: 0x13, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x14, 0x7dc: 0x0b, 0x7dd: 0x15, 0x7de: 0x16, 0x7df: 0x17,\n\t0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07,\n\t0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x18, 0x7eb: 0x19, 0x7ec: 0x1a, 0x7ed: 0x07, 0x7ee: 0x1b, 0x7ef: 0x1c,\n\t0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b,\n\t0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x0b, 0x801: 0x0b, 0x802: 0x0b, 0x803: 0x0b, 0x804: 0x0b, 0x805: 0x0b, 0x806: 0x0b, 0x807: 0x0b,\n\t0x808: 0x0b, 0x809: 0x0b, 0x80a: 0x0b, 0x80b: 0x0b, 0x80c: 0x0b, 0x80d: 0x0b, 0x80e: 0x0b, 0x80f: 0x0b,\n\t0x810: 0x0b, 0x811: 0x0b, 0x812: 0x0b, 0x813: 0x0b, 0x814: 0x0b, 0x815: 0x0b, 0x816: 0x0b, 0x817: 0x0b,\n\t0x818: 0x0b, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x0b, 0x81c: 0x0b, 0x81d: 0x0b, 0x81e: 0x0b, 0x81f: 0x0b,\n\t0x820: 0x0b, 0x821: 0x0b, 0x822: 0x0b, 0x823: 0x0b, 0x824: 0x0b, 0x825: 0x0b, 0x826: 0x0b, 0x827: 0x0b,\n\t0x828: 0x0b, 0x829: 0x0b, 0x82a: 0x0b, 0x82b: 0x0b, 0x82c: 0x0b, 0x82d: 0x0b, 0x82e: 0x0b, 0x82f: 0x0b,\n\t0x830: 0x0b, 0x831: 0x0b, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b,\n\t0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x195, 0x841: 0x196, 0x842: 0xba, 0x843: 0xba, 0x844: 0x197, 0x845: 0x197, 0x846: 0x197, 0x847: 0x198,\n\t0x848: 0xba, 0x849: 0xba, 0x84a: 0xba, 0x84b: 0xba, 0x84c: 0xba, 0x84d: 0xba, 0x84e: 0xba, 0x84f: 0xba,\n\t0x850: 0xba, 0x851: 0xba, 0x852: 0xba, 0x853: 0xba, 0x854: 0xba, 0x855: 0xba, 0x856: 0xba, 0x857: 0xba,\n\t0x858: 0xba, 0x859: 0xba, 0x85a: 0xba, 0x85b: 0xba, 0x85c: 0xba, 0x85d: 0xba, 0x85e: 0xba, 0x85f: 0xba,\n\t0x860: 0xba, 0x861: 0xba, 0x862: 0xba, 0x863: 0xba, 0x864: 0xba, 0x865: 0xba, 0x866: 0xba, 0x867: 0xba,\n\t0x868: 0xba, 0x869: 0xba, 0x86a: 0xba, 0x86b: 0xba, 0x86c: 0xba, 0x86d: 0xba, 0x86e: 0xba, 0x86f: 0xba,\n\t0x870: 0xba, 0x871: 0xba, 0x872: 0xba, 0x873: 0xba, 0x874: 0xba, 0x875: 0xba, 0x876: 0xba, 0x877: 0xba,\n\t0x878: 0xba, 0x879: 0xba, 0x87a: 0xba, 0x87b: 0xba, 0x87c: 0xba, 0x87d: 0xba, 0x87e: 0xba, 0x87f: 0xba,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b,\n\t0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b,\n\t0x890: 0x0b, 0x891: 0x0b, 0x892: 0x0b, 0x893: 0x0b, 0x894: 0x0b, 0x895: 0x0b, 0x896: 0x0b, 0x897: 0x0b,\n\t0x898: 0x0b, 0x899: 0x0b, 0x89a: 0x0b, 0x89b: 0x0b, 0x89c: 0x0b, 0x89d: 0x0b, 0x89e: 0x0b, 0x89f: 0x0b,\n\t0x8a0: 0x1f, 0x8a1: 0x0b, 0x8a2: 0x0b, 0x8a3: 0x0b, 0x8a4: 0x0b, 0x8a5: 0x0b, 0x8a6: 0x0b, 0x8a7: 0x0b,\n\t0x8a8: 0x0b, 0x8a9: 0x0b, 0x8aa: 0x0b, 0x8ab: 0x0b, 0x8ac: 0x0b, 0x8ad: 0x0b, 0x8ae: 0x0b, 0x8af: 0x0b,\n\t0x8b0: 0x0b, 0x8b1: 0x0b, 0x8b2: 0x0b, 0x8b3: 0x0b, 0x8b4: 0x0b, 0x8b5: 0x0b, 0x8b6: 0x0b, 0x8b7: 0x0b,\n\t0x8b8: 0x0b, 0x8b9: 0x0b, 0x8ba: 0x0b, 0x8bb: 0x0b, 0x8bc: 0x0b, 0x8bd: 0x0b, 0x8be: 0x0b, 0x8bf: 0x0b,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b,\n\t0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b,\n}\n\n// idnaSparseOffset: 284 entries, 568 bytes\nvar idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x86, 0x8b, 0x94, 0xa4, 0xb2, 0xbe, 0xca, 0xdb, 0xe5, 0xec, 0xf9, 0x10a, 0x111, 0x11c, 0x12b, 0x139, 0x143, 0x145, 0x14a, 0x14d, 0x150, 0x152, 0x15e, 0x169, 0x171, 0x177, 0x17d, 0x182, 0x187, 0x18a, 0x18e, 0x194, 0x199, 0x1a5, 0x1af, 0x1b5, 0x1c6, 0x1d0, 0x1d3, 0x1db, 0x1de, 0x1eb, 0x1f3, 0x1f7, 0x1fe, 0x206, 0x216, 0x222, 0x224, 0x22e, 0x23a, 0x246, 0x252, 0x25a, 0x25f, 0x26c, 0x27d, 0x281, 0x28c, 0x290, 0x299, 0x2a1, 0x2a7, 0x2ac, 0x2af, 0x2b3, 0x2b9, 0x2bd, 0x2c1, 0x2c5, 0x2cb, 0x2d3, 0x2da, 0x2e5, 0x2ef, 0x2f3, 0x2f6, 0x2fc, 0x300, 0x302, 0x305, 0x307, 0x30a, 0x314, 0x317, 0x326, 0x32a, 0x32f, 0x332, 0x336, 0x33b, 0x340, 0x346, 0x352, 0x361, 0x367, 0x36b, 0x37a, 0x37f, 0x387, 0x391, 0x39c, 0x3a4, 0x3b5, 0x3be, 0x3ce, 0x3db, 0x3e5, 0x3ea, 0x3f7, 0x3fb, 0x400, 0x402, 0x406, 0x408, 0x40c, 0x415, 0x41b, 0x41f, 0x42f, 0x439, 0x43e, 0x441, 0x447, 0x44e, 0x453, 0x457, 0x45d, 0x462, 0x46b, 0x470, 0x476, 0x47d, 0x484, 0x48b, 0x48f, 0x494, 0x497, 0x49c, 0x4a8, 0x4ae, 0x4b3, 0x4ba, 0x4c2, 0x4c7, 0x4cb, 0x4db, 0x4e2, 0x4e6, 0x4ea, 0x4f1, 0x4f3, 0x4f6, 0x4f9, 0x4fd, 0x506, 0x50a, 0x512, 0x51a, 0x51e, 0x524, 0x52d, 0x539, 0x540, 0x549, 0x553, 0x55a, 0x568, 0x575, 0x582, 0x58b, 0x58f, 0x59f, 0x5a7, 0x5b2, 0x5bb, 0x5c1, 0x5c9, 0x5d2, 0x5dd, 0x5e0, 0x5ec, 0x5f5, 0x5f8, 0x5fd, 0x602, 0x60f, 0x61a, 0x623, 0x62d, 0x630, 0x63a, 0x643, 0x64f, 0x65c, 0x669, 0x677, 0x67e, 0x682, 0x685, 0x68a, 0x68d, 0x692, 0x695, 0x69c, 0x6a3, 0x6a7, 0x6b2, 0x6b5, 0x6b8, 0x6bb, 0x6c1, 0x6c7, 0x6cd, 0x6d0, 0x6d3, 0x6d6, 0x6dd, 0x6e0, 0x6e5, 0x6ef, 0x6f2, 0x6f6, 0x705, 0x711, 0x715, 0x71a, 0x71e, 0x723, 0x727, 0x72c, 0x735, 0x740, 0x746, 0x74c, 0x752, 0x758, 0x761, 0x764, 0x767, 0x76b, 0x76f, 0x773, 0x779, 0x77f, 0x784, 0x787, 0x797, 0x79e, 0x7a1, 0x7a6, 0x7aa, 0x7b0, 0x7b5, 0x7b9, 0x7bf, 0x7c5, 0x7c9, 0x7d2, 0x7d7, 0x7da, 0x7dd, 0x7e1, 0x7e5, 0x7e8, 0x7f8, 0x809, 0x80e, 0x810, 0x812}\n\n// idnaSparseValues: 2069 entries, 8276 bytes\nvar idnaSparseValues = [2069]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe105, lo: 0x80, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0x97},\n\t{value: 0xe105, lo: 0x98, hi: 0x9e},\n\t{value: 0x001f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbf},\n\t// Block 0x1, offset 0x8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0xe01d, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0335, lo: 0x83, hi: 0x83},\n\t{value: 0x034d, lo: 0x84, hi: 0x84},\n\t{value: 0x0365, lo: 0x85, hi: 0x85},\n\t{value: 0xe00d, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0xe00d, lo: 0x88, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x89},\n\t{value: 0xe00d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe00d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0x8d},\n\t{value: 0xe00d, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0xbf},\n\t// Block 0x2, offset 0x19\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0249, lo: 0xb0, hi: 0xb0},\n\t{value: 0x037d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0259, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0269, lo: 0xb3, hi: 0xb3},\n\t{value: 0x034d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0395, lo: 0xb5, hi: 0xb5},\n\t{value: 0xe1bd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0279, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0289, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbf},\n\t// Block 0x3, offset 0x25\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x3308, lo: 0x80, hi: 0xbf},\n\t// Block 0x4, offset 0x27\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x03f5, lo: 0x80, hi: 0x8f},\n\t{value: 0xe105, lo: 0x90, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5, offset 0x2c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x0545, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x0008, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x6, offset 0x33\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0401, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0018, lo: 0x89, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7, offset 0x3e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0818, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x82},\n\t{value: 0x0818, lo: 0x83, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xae},\n\t{value: 0x0808, lo: 0xaf, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x8, offset 0x4a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0c08, lo: 0x88, hi: 0x99},\n\t{value: 0x0a08, lo: 0x9a, hi: 0xbf},\n\t// Block 0x9, offset 0x4e\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0c08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0a08, lo: 0x8e, hi: 0x98},\n\t{value: 0x0c08, lo: 0x99, hi: 0x9b},\n\t{value: 0x0a08, lo: 0x9c, hi: 0xaa},\n\t{value: 0x0c08, lo: 0xab, hi: 0xac},\n\t{value: 0x0a08, lo: 0xad, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0a08, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0c08, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xa, offset 0x5d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xb, offset 0x62\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0808, lo: 0x80, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbf},\n\t// Block 0xc, offset 0x6c\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x99},\n\t{value: 0x0808, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa3},\n\t{value: 0x0808, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa7},\n\t{value: 0x0808, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0818, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd, offset 0x78\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0a08, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0c08, lo: 0xaa, hi: 0xac},\n\t{value: 0x0808, lo: 0xad, hi: 0xad},\n\t{value: 0x0c08, lo: 0xae, hi: 0xae},\n\t{value: 0x0a08, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0a08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0a08, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xe, offset 0x86\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0xa1},\n\t{value: 0x0840, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xbf},\n\t// Block 0xf, offset 0x8b\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x10, offset 0x94\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x85},\n\t{value: 0x3008, lo: 0x86, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8c},\n\t{value: 0x3b08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x11, offset 0xa4\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x12, offset 0xb2\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xba},\n\t{value: 0x3b08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x13, offset 0xbe\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0040, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x14, offset 0xca\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x89},\n\t{value: 0x3b08, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x3008, lo: 0x98, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x15, offset 0xdb\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x08f1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb9},\n\t{value: 0x3b08, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x16, offset 0xe5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0xbf},\n\t// Block 0x17, offset 0xec\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0961, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0999, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0008, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x18, offset 0xf9\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe03d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x19, offset 0x10a\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0x1a, offset 0x111\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1b, offset 0x11c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3008, lo: 0xa2, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbf},\n\t// Block 0x1c, offset 0x12b\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x8c},\n\t{value: 0x3308, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x3008, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x1d, offset 0x139\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x86},\n\t{value: 0x055d, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8c},\n\t{value: 0x055d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe105, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x1e, offset 0x143\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0018, lo: 0x80, hi: 0xbf},\n\t// Block 0x1f, offset 0x145\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa0},\n\t{value: 0x2018, lo: 0xa1, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x20, offset 0x14a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa7},\n\t{value: 0x2018, lo: 0xa8, hi: 0xbf},\n\t// Block 0x21, offset 0x14d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2018, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0xbf},\n\t// Block 0x22, offset 0x150\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0008, lo: 0x80, hi: 0xbf},\n\t// Block 0x23, offset 0x152\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x24, offset 0x15e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x25, offset 0x169\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x26, offset 0x171\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x27, offset 0x177\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x28, offset 0x17d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x29, offset 0x182\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x2a, offset 0x187\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x2b, offset 0x18a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xbf},\n\t// Block 0x2c, offset 0x18e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2d, offset 0x194\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x2e, offset 0x199\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x3b08, lo: 0x94, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x2f, offset 0x1a5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x30, offset 0x1af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xb3},\n\t{value: 0x3340, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x31, offset 0x1b5\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x3008, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x91},\n\t{value: 0x3b08, lo: 0x92, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0x96},\n\t{value: 0x0008, lo: 0x97, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x32, offset 0x1c6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x86},\n\t{value: 0x0218, lo: 0x87, hi: 0x87},\n\t{value: 0x0018, lo: 0x88, hi: 0x8a},\n\t{value: 0x33c0, lo: 0x8b, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0208, lo: 0xa0, hi: 0xbf},\n\t// Block 0x33, offset 0x1d0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0208, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x34, offset 0x1d3\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0208, lo: 0x87, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0208, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x35, offset 0x1db\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x36, offset 0x1de\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x37, offset 0x1eb\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x38, offset 0x1f3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x39, offset 0x1f7\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0028, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xbf},\n\t// Block 0x3a, offset 0x1fe\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x3308, lo: 0x97, hi: 0x98},\n\t{value: 0x3008, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x3b, offset 0x206\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x94},\n\t{value: 0x3008, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xac},\n\t{value: 0x3008, lo: 0xad, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3c, offset 0x216\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbd},\n\t{value: 0x3318, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x222\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0040, lo: 0x80, hi: 0xbf},\n\t// Block 0x3e, offset 0x224\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3008, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x3f, offset 0x22e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x3808, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x40, offset 0x23a\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3808, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xbf},\n\t// Block 0x41, offset 0x246\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3008, lo: 0xaa, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3808, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x42, offset 0x252\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x43, offset 0x25a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x44, offset 0x25f\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0e29, lo: 0x80, hi: 0x80},\n\t{value: 0x0e41, lo: 0x81, hi: 0x81},\n\t{value: 0x0e59, lo: 0x82, hi: 0x82},\n\t{value: 0x0e71, lo: 0x83, hi: 0x83},\n\t{value: 0x0e89, lo: 0x84, hi: 0x85},\n\t{value: 0x0ea1, lo: 0x86, hi: 0x86},\n\t{value: 0x0eb9, lo: 0x87, hi: 0x87},\n\t{value: 0x057d, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x059d, lo: 0x90, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x059d, lo: 0xbd, hi: 0xbf},\n\t// Block 0x45, offset 0x26c\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x92},\n\t{value: 0x0018, lo: 0x93, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0008, lo: 0xa9, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x46, offset 0x27d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0x47, offset 0x281\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x87},\n\t{value: 0xe045, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0xe045, lo: 0x98, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0xe045, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbf},\n\t// Block 0x48, offset 0x28c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x3318, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x49, offset 0x290\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x24c1, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x4a, offset 0x299\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x24f1, lo: 0xac, hi: 0xac},\n\t{value: 0x2529, lo: 0xad, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xae},\n\t{value: 0x2579, lo: 0xaf, hi: 0xaf},\n\t{value: 0x25b1, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x4b, offset 0x2a1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x9f},\n\t{value: 0x0080, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xad},\n\t{value: 0x0080, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x4c, offset 0x2a7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa8},\n\t{value: 0x09dd, lo: 0xa9, hi: 0xa9},\n\t{value: 0x09fd, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xbf},\n\t// Block 0x4d, offset 0x2ac\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0x4e, offset 0x2af\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x28c1, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x4f, offset 0x2b3\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0e7e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x292a, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0e9e, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x50, offset 0x2b9\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x9b},\n\t{value: 0x2941, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0xbf},\n\t// Block 0x51, offset 0x2bd\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x52, offset 0x2c1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0xbf},\n\t// Block 0x53, offset 0x2c5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x03f5, lo: 0x90, hi: 0x9f},\n\t{value: 0x0ebd, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x54, offset 0x2cb\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x55, offset 0x2d3\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xae},\n\t{value: 0xe075, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x56, offset 0x2da\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x57, offset 0x2e5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xbf},\n\t// Block 0x58, offset 0x2ef\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x59, offset 0x2f3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0x5a, offset 0x2f6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9e},\n\t{value: 0x0ef5, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x5b, offset 0x2fc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb2},\n\t{value: 0x0f15, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x5c, offset 0x300\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x0f35, lo: 0x80, hi: 0xbf},\n\t// Block 0x5d, offset 0x302\n\t{value: 0x0020, lo: 0x02},\n\t{value: 0x1735, lo: 0x80, hi: 0x8f},\n\t{value: 0x1915, lo: 0x90, hi: 0xbf},\n\t// Block 0x5e, offset 0x305\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x1f15, lo: 0x80, hi: 0xbf},\n\t// Block 0x5f, offset 0x307\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x60, offset 0x30a\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9a},\n\t{value: 0x29e2, lo: 0x9b, hi: 0x9b},\n\t{value: 0x2a0a, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9e},\n\t{value: 0x2a31, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x61, offset 0x314\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x2a69, lo: 0xbf, hi: 0xbf},\n\t// Block 0x62, offset 0x317\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0040, lo: 0x80, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb0},\n\t{value: 0x2a35, lo: 0xb1, hi: 0xb1},\n\t{value: 0x2a55, lo: 0xb2, hi: 0xb2},\n\t{value: 0x2a75, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2a95, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2a75, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2ab5, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2ad5, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2af5, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2b15, lo: 0xba, hi: 0xbb},\n\t{value: 0x2b35, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2b15, lo: 0xbe, hi: 0xbf},\n\t// Block 0x63, offset 0x326\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x64, offset 0x32a\n\t{value: 0x0030, lo: 0x04},\n\t{value: 0x2aa2, lo: 0x80, hi: 0x9d},\n\t{value: 0x305a, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x30a2, lo: 0xa0, hi: 0xbf},\n\t// Block 0x65, offset 0x32f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x66, offset 0x332\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x67, offset 0x336\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x68, offset 0x33b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x69, offset 0x340\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0018, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6a, offset 0x346\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0040, lo: 0x80, hi: 0x81},\n\t{value: 0xe00d, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x83},\n\t{value: 0x03f5, lo: 0x84, hi: 0x84},\n\t{value: 0x1329, lo: 0x85, hi: 0x85},\n\t{value: 0x447d, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2009, lo: 0xb8, hi: 0xb8},\n\t{value: 0x6e89, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xbf},\n\t// Block 0x6b, offset 0x352\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x3308, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0008, lo: 0x8c, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x6c, offset 0x361\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0208, lo: 0x80, hi: 0xb1},\n\t{value: 0x0108, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6d, offset 0x367\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xbf},\n\t// Block 0x6e, offset 0x36b\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x6f, offset 0x37a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x70, offset 0x37f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x91},\n\t{value: 0x3008, lo: 0x92, hi: 0x92},\n\t{value: 0x3808, lo: 0x93, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x71, offset 0x387\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb9},\n\t{value: 0x3008, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x72, offset 0x391\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x73, offset 0x39c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x74, offset 0x3a4\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3008, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x75, offset 0x3b5\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x76, offset 0x3be\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x9a},\n\t{value: 0x0008, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3b08, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x77, offset 0x3ce\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x90},\n\t{value: 0x0008, lo: 0x91, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x78, offset 0x3db\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x449d, lo: 0x9c, hi: 0x9c},\n\t{value: 0x44b5, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2971, lo: 0x9e, hi: 0x9e},\n\t{value: 0xe06d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x44cd, lo: 0xb0, hi: 0xbf},\n\t// Block 0x79, offset 0x3e5\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x44ed, lo: 0x80, hi: 0x8f},\n\t{value: 0x450d, lo: 0x90, hi: 0x9f},\n\t{value: 0x452d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x450d, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7a, offset 0x3ea\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3b08, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x7b, offset 0x3f7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7c, offset 0x3fb\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x7d, offset 0x400\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x454d, lo: 0x80, hi: 0xbf},\n\t// Block 0x7e, offset 0x402\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x4d4d, lo: 0x80, hi: 0x94},\n\t{value: 0x4b0d, lo: 0x95, hi: 0x95},\n\t{value: 0x4fed, lo: 0x96, hi: 0xbf},\n\t// Block 0x7f, offset 0x406\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x552d, lo: 0x80, hi: 0xbf},\n\t// Block 0x80, offset 0x408\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x5d2d, lo: 0x80, hi: 0x84},\n\t{value: 0x568d, lo: 0x85, hi: 0x85},\n\t{value: 0x5dcd, lo: 0x86, hi: 0xbf},\n\t// Block 0x81, offset 0x40c\n\t{value: 0x0020, lo: 0x08},\n\t{value: 0x6b8d, lo: 0x80, hi: 0x8f},\n\t{value: 0x6d4d, lo: 0x90, hi: 0x90},\n\t{value: 0x6d8d, lo: 0x91, hi: 0xab},\n\t{value: 0x6ea1, lo: 0xac, hi: 0xac},\n\t{value: 0x70ed, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x710d, lo: 0xb0, hi: 0xbf},\n\t// Block 0x82, offset 0x415\n\t{value: 0x0020, lo: 0x05},\n\t{value: 0x730d, lo: 0x80, hi: 0xad},\n\t{value: 0x656d, lo: 0xae, hi: 0xae},\n\t{value: 0x78cd, lo: 0xaf, hi: 0xb5},\n\t{value: 0x6f8d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x79ad, lo: 0xb7, hi: 0xbf},\n\t// Block 0x83, offset 0x41b\n\t{value: 0x0028, lo: 0x03},\n\t{value: 0x7c21, lo: 0x80, hi: 0x82},\n\t{value: 0x7be1, lo: 0x83, hi: 0x83},\n\t{value: 0x7c99, lo: 0x84, hi: 0xbf},\n\t// Block 0x84, offset 0x41f\n\t{value: 0x0038, lo: 0x0f},\n\t{value: 0x9db1, lo: 0x80, hi: 0x83},\n\t{value: 0x9e59, lo: 0x84, hi: 0x85},\n\t{value: 0x9e91, lo: 0x86, hi: 0x87},\n\t{value: 0x9ec9, lo: 0x88, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0xa089, lo: 0x92, hi: 0x97},\n\t{value: 0xa1a1, lo: 0x98, hi: 0x9c},\n\t{value: 0xa281, lo: 0x9d, hi: 0xb3},\n\t{value: 0x9d41, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9db1, lo: 0xb5, hi: 0xb5},\n\t{value: 0xa789, lo: 0xb6, hi: 0xbb},\n\t{value: 0xa869, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa7f9, lo: 0xbd, hi: 0xbd},\n\t{value: 0xa8d9, lo: 0xbe, hi: 0xbf},\n\t// Block 0x85, offset 0x42f\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0008, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x86, offset 0x439\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x87, offset 0x43e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x88, offset 0x441\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x89, offset 0x447\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x8a, offset 0x44e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x8b, offset 0x453\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8c, offset 0x457\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x8d, offset 0x45d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xbf},\n\t// Block 0x8e, offset 0x462\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8f, offset 0x46b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x90, offset 0x470\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x91, offset 0x476\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x97},\n\t{value: 0x8b0d, lo: 0x98, hi: 0x9f},\n\t{value: 0x8b25, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xbf},\n\t// Block 0x92, offset 0x47d\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x8b25, lo: 0xb0, hi: 0xb7},\n\t{value: 0x8b0d, lo: 0xb8, hi: 0xbf},\n\t// Block 0x93, offset 0x484\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x94, offset 0x48b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x95, offset 0x48f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xae},\n\t{value: 0x0018, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x96, offset 0x494\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x97, offset 0x497\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xbf},\n\t// Block 0x98, offset 0x49c\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0808, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0808, lo: 0x8a, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0808, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0808, lo: 0xbf, hi: 0xbf},\n\t// Block 0x99, offset 0x4a8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0818, lo: 0x97, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0818, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9a, offset 0x4ae\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa6},\n\t{value: 0x0818, lo: 0xa7, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9b, offset 0x4b3\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x0818, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9c, offset 0x4ba\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0818, lo: 0x96, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0818, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9d, offset 0x4c2\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbb},\n\t{value: 0x0818, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0808, lo: 0xbe, hi: 0xbf},\n\t// Block 0x9e, offset 0x4c7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0818, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x0818, lo: 0x92, hi: 0xbf},\n\t// Block 0x9f, offset 0x4cb\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x94},\n\t{value: 0x0808, lo: 0x95, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x98},\n\t{value: 0x0808, lo: 0x99, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa0, offset 0x4db\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0818, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0818, lo: 0x90, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0818, lo: 0xbd, hi: 0xbf},\n\t// Block 0xa1, offset 0x4e2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xa2, offset 0x4e6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xbf},\n\t// Block 0xa3, offset 0x4ea\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0818, lo: 0x98, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb7},\n\t{value: 0x0818, lo: 0xb8, hi: 0xbf},\n\t// Block 0xa4, offset 0x4f1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0808, lo: 0x80, hi: 0xbf},\n\t// Block 0xa5, offset 0x4f3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0808, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xa6, offset 0x4f6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x03dd, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xa7, offset 0x4f9\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xbf},\n\t// Block 0xa8, offset 0x4fd\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0908, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0xa1},\n\t{value: 0x0c08, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0a08, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3308, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xa9, offset 0x506\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0818, lo: 0xa0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xaa, offset 0x50a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0xa6},\n\t{value: 0x0808, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0a08, lo: 0xb4, hi: 0xbf},\n\t// Block 0xab, offset 0x512\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0a08, lo: 0x80, hi: 0x84},\n\t{value: 0x0808, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x90},\n\t{value: 0x0a18, lo: 0x91, hi: 0x93},\n\t{value: 0x0c18, lo: 0x94, hi: 0x94},\n\t{value: 0x0818, lo: 0x95, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xac, offset 0x51a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xad, offset 0x51e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xae, offset 0x524\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x91},\n\t{value: 0x0018, lo: 0x92, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xaf, offset 0x52d\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0xb0, offset 0x539\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb1, offset 0x540\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb2},\n\t{value: 0x3b08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xbf},\n\t// Block 0xb2, offset 0x549\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb3, offset 0x553\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb4, offset 0x55a\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xb5, offset 0x568\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3808, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb6, offset 0x575\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xb7, offset 0x582\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x3308, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa9},\n\t{value: 0x3b08, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb8, offset 0x58b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xb9, offset 0x58f\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xba, offset 0x59f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbb, offset 0x5a7\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x85},\n\t{value: 0x0018, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xbc, offset 0x5b2\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbd, offset 0x5bb\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9b},\n\t{value: 0x3308, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xbe, offset 0x5c1\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbf, offset 0x5c9\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xc0, offset 0x5d2\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb5},\n\t{value: 0x3808, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xc1, offset 0x5dd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xc2, offset 0x5e0\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0xc3, offset 0x5ec\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xc4, offset 0x5f5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xbf},\n\t// Block 0xc5, offset 0x5f8\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc6, offset 0x5fd\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xc7, offset 0x602\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x99},\n\t{value: 0x3308, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3008, lo: 0x9c, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x0018, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xbf},\n\t// Block 0xc8, offset 0x60f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc9, offset 0x61a\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x3b08, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0xbf},\n\t// Block 0xca, offset 0x623\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x98},\n\t{value: 0x3b08, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xbf},\n\t// Block 0xcb, offset 0x62d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xcc, offset 0x630\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xcd, offset 0x63a\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xbf},\n\t// Block 0xce, offset 0x643\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xa9},\n\t{value: 0x3308, lo: 0xaa, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xcf, offset 0x64f\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd0, offset 0x65c\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd1, offset 0x669\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x3008, lo: 0x93, hi: 0x94},\n\t{value: 0x3308, lo: 0x95, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x96},\n\t{value: 0x3b08, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd2, offset 0x677\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd3, offset 0x67e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd4, offset 0x682\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xd5, offset 0x685\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xd6, offset 0x68a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xd7, offset 0x68d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0340, lo: 0xb0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd8, offset 0x692\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xbf},\n\t// Block 0xd9, offset 0x695\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xda, offset 0x69c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xdb, offset 0x6a3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0xdc, offset 0x6a7\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0xdd, offset 0x6b2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xde, offset 0x6b5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0xe105, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0xdf, offset 0x6b8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0xe0, offset 0x6bb\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0xbf},\n\t// Block 0xe1, offset 0x6c1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xe2, offset 0x6c7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x0018, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xe3, offset 0x6cd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0xe4, offset 0x6d0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xe5, offset 0x6d3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xe6, offset 0x6d6\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0xa3},\n\t{value: 0x0008, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe7, offset 0x6dd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xe8, offset 0x6e0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0xe9, offset 0x6e5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x03c0, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xea, offset 0x6ef\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xeb, offset 0x6f2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xbf},\n\t// Block 0xec, offset 0x6f6\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0xb5b9, lo: 0x9e, hi: 0x9e},\n\t{value: 0xb601, lo: 0x9f, hi: 0x9f},\n\t{value: 0xb649, lo: 0xa0, hi: 0xa0},\n\t{value: 0xb6b1, lo: 0xa1, hi: 0xa1},\n\t{value: 0xb719, lo: 0xa2, hi: 0xa2},\n\t{value: 0xb781, lo: 0xa3, hi: 0xa3},\n\t{value: 0xb7e9, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3018, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3318, lo: 0xa7, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xac},\n\t{value: 0x3018, lo: 0xad, hi: 0xb2},\n\t{value: 0x0340, lo: 0xb3, hi: 0xba},\n\t{value: 0x3318, lo: 0xbb, hi: 0xbf},\n\t// Block 0xed, offset 0x705\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3318, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x84},\n\t{value: 0x3318, lo: 0x85, hi: 0x8b},\n\t{value: 0x0018, lo: 0x8c, hi: 0xa9},\n\t{value: 0x3318, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xba},\n\t{value: 0xb851, lo: 0xbb, hi: 0xbb},\n\t{value: 0xb899, lo: 0xbc, hi: 0xbc},\n\t{value: 0xb8e1, lo: 0xbd, hi: 0xbd},\n\t{value: 0xb949, lo: 0xbe, hi: 0xbe},\n\t{value: 0xb9b1, lo: 0xbf, hi: 0xbf},\n\t// Block 0xee, offset 0x711\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xba19, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xbf},\n\t// Block 0xef, offset 0x715\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3318, lo: 0x82, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0xbf},\n\t// Block 0xf0, offset 0x71a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0xf1, offset 0x71e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xf2, offset 0x723\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0xf3, offset 0x727\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0xf4, offset 0x72c\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3308, lo: 0xa1, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xf5, offset 0x735\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0xf6, offset 0x740\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xf7, offset 0x746\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xf8, offset 0x74c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xf9, offset 0x752\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x86},\n\t{value: 0x0818, lo: 0x87, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xfa, offset 0x758\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0a08, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x8a},\n\t{value: 0x0b08, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xfb, offset 0x761\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xb0},\n\t{value: 0x0818, lo: 0xb1, hi: 0xbf},\n\t// Block 0xfc, offset 0x764\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0818, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xfd, offset 0x767\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0818, lo: 0x81, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xfe, offset 0x76b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xff, offset 0x76f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x100, offset 0x773\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x101, offset 0x779\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x102, offset 0x77f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0xc1d9, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0x103, offset 0x784\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xbf},\n\t// Block 0x104, offset 0x787\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xc801, lo: 0x80, hi: 0x80},\n\t{value: 0xc851, lo: 0x81, hi: 0x81},\n\t{value: 0xc8a1, lo: 0x82, hi: 0x82},\n\t{value: 0xc8f1, lo: 0x83, hi: 0x83},\n\t{value: 0xc941, lo: 0x84, hi: 0x84},\n\t{value: 0xc991, lo: 0x85, hi: 0x85},\n\t{value: 0xc9e1, lo: 0x86, hi: 0x86},\n\t{value: 0xca31, lo: 0x87, hi: 0x87},\n\t{value: 0xca81, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0xcad1, lo: 0x90, hi: 0x90},\n\t{value: 0xcaf1, lo: 0x91, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xbf},\n\t// Block 0x105, offset 0x797\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x106, offset 0x79e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x107, offset 0x7a1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x108, offset 0x7a6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x109, offset 0x7aa\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x10a, offset 0x7b0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0x10b, offset 0x7b5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x10c, offset 0x7b9\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0018, lo: 0xb3, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0x10d, offset 0x7bf\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xa4},\n\t{value: 0x0018, lo: 0xa5, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xbf},\n\t// Block 0x10e, offset 0x7c5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x10f, offset 0x7c9\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x110, offset 0x7d2\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x111, offset 0x7d7\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0x112, offset 0x7da\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x113, offset 0x7dd\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x114, offset 0x7e1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x115, offset 0x7e5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x116, offset 0x7e8\n\t{value: 0x0020, lo: 0x0f},\n\t{value: 0xded1, lo: 0x80, hi: 0x89},\n\t{value: 0x8e35, lo: 0x8a, hi: 0x8a},\n\t{value: 0xe011, lo: 0x8b, hi: 0x9c},\n\t{value: 0x8e55, lo: 0x9d, hi: 0x9d},\n\t{value: 0xe251, lo: 0x9e, hi: 0xa2},\n\t{value: 0x8e75, lo: 0xa3, hi: 0xa3},\n\t{value: 0xe2f1, lo: 0xa4, hi: 0xab},\n\t{value: 0x7f0d, lo: 0xac, hi: 0xac},\n\t{value: 0xe3f1, lo: 0xad, hi: 0xaf},\n\t{value: 0x8e95, lo: 0xb0, hi: 0xb0},\n\t{value: 0xe451, lo: 0xb1, hi: 0xb6},\n\t{value: 0x8eb5, lo: 0xb7, hi: 0xb9},\n\t{value: 0xe511, lo: 0xba, hi: 0xba},\n\t{value: 0x8f15, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe531, lo: 0xbc, hi: 0xbf},\n\t// Block 0x117, offset 0x7f8\n\t{value: 0x0020, lo: 0x10},\n\t{value: 0x93b5, lo: 0x80, hi: 0x80},\n\t{value: 0xf0b1, lo: 0x81, hi: 0x86},\n\t{value: 0x93d5, lo: 0x87, hi: 0x8a},\n\t{value: 0xda11, lo: 0x8b, hi: 0x8b},\n\t{value: 0xf171, lo: 0x8c, hi: 0x96},\n\t{value: 0x9455, lo: 0x97, hi: 0x97},\n\t{value: 0xf2d1, lo: 0x98, hi: 0xa3},\n\t{value: 0x9475, lo: 0xa4, hi: 0xa6},\n\t{value: 0xf451, lo: 0xa7, hi: 0xaa},\n\t{value: 0x94d5, lo: 0xab, hi: 0xab},\n\t{value: 0xf4d1, lo: 0xac, hi: 0xac},\n\t{value: 0x94f5, lo: 0xad, hi: 0xad},\n\t{value: 0xf4f1, lo: 0xae, hi: 0xaf},\n\t{value: 0x9515, lo: 0xb0, hi: 0xb1},\n\t{value: 0xf531, lo: 0xb2, hi: 0xbe},\n\t{value: 0x2040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x118, offset 0x809\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0340, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x9f},\n\t{value: 0x0340, lo: 0xa0, hi: 0xbf},\n\t// Block 0x119, offset 0x80e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0340, lo: 0x80, hi: 0xbf},\n\t// Block 0x11a, offset 0x810\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x33c0, lo: 0x80, hi: 0xbf},\n\t// Block 0x11b, offset 0x812\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x33c0, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n}\n\n// Total table size 42780 bytes (41KiB); checksum: 29936AB9\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/tables13.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.16 && !go1.21\n\npackage idna\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"13.0.0\"\n\nvar mappings string = \"\" + // Size: 6539 bytes\n\t\"  ̈a ̄23 ́ ̧1o1⁄41⁄23⁄4i̇l·ʼnsdžⱥⱦhjrwy ̆ ̇ ̊ ̨ ̃ ̋lẍ́ ι; ̈́եւاٴوٴۇٴيٴक\" +\n\t\"़ख़ग़ज़ड़ढ़फ़य़ড়ঢ়য়ਲ਼ਸ਼ਖ਼ਗ਼ਜ਼ਫ਼ଡ଼ଢ଼ําໍາຫນຫມགྷཌྷདྷབྷཛྷཀྵཱཱིུྲྀྲཱྀླྀླཱ\" +\n\t\"ཱྀྀྒྷྜྷྡྷྦྷྫྷྐྵвдостъѣæbdeǝgikmnȣptuɐɑəɛɜŋɔɯvβγδφχρнɒcɕðfɟɡɥɨɩɪʝɭʟɱɰɲɳ\" +\n\t\"ɴɵɸʂʃƫʉʊʋʌzʐʑʒθssάέήίόύώἀιἁιἂιἃιἄιἅιἆιἇιἠιἡιἢιἣιἤιἥιἦιἧιὠιὡιὢιὣιὤιὥιὦιὧ\" +\n\t\"ιὰιαιάιᾶιι ̈͂ὴιηιήιῆι ̓̀ ̓́ ̓͂ΐ ̔̀ ̔́ ̔͂ΰ ̈̀`ὼιωιώιῶι′′′′′‵‵‵‵‵!!???!!?\" +\n\t\"′′′′0456789+=()rsħnoqsmtmωåאבגדπ1⁄71⁄91⁄101⁄32⁄31⁄52⁄53⁄54⁄51⁄65⁄61⁄83\" +\n\t\"⁄85⁄87⁄81⁄iiivviviiiixxi0⁄3∫∫∫∫∫∮∮∮∮∮1011121314151617181920(10)(11)(12\" +\n\t\")(13)(14)(15)(16)(17)(18)(19)(20)∫∫∫∫==⫝̸ɫɽȿɀ. ゙ ゚よりコト(ᄀ)(ᄂ)(ᄃ)(ᄅ)(ᄆ)(ᄇ)\" +\n\t\"(ᄉ)(ᄋ)(ᄌ)(ᄎ)(ᄏ)(ᄐ)(ᄑ)(ᄒ)(가)(나)(다)(라)(마)(바)(사)(아)(자)(차)(카)(타)(파)(하)(주)(오전\" +\n\t\")(오후)(一)(二)(三)(四)(五)(六)(七)(八)(九)(十)(月)(火)(水)(木)(金)(土)(日)(株)(有)(社)(名)(特)(\" +\n\t\"財)(祝)(労)(代)(呼)(学)(監)(企)(資)(協)(祭)(休)(自)(至)21222324252627282930313233343\" +\n\t\"5참고주의3637383940414243444546474849501月2月3月4月5月6月7月8月9月10月11月12月hgev令和アパート\" +\n\t\"アルファアンペアアールイニングインチウォンエスクードエーカーオンスオームカイリカラットカロリーガロンガンマギガギニーキュリーギルダーキロキロ\" +\n\t\"グラムキロメートルキロワットグラムグラムトンクルゼイロクローネケースコルナコーポサイクルサンチームシリングセンチセントダースデシドルトンナノ\" +\n\t\"ノットハイツパーセントパーツバーレルピアストルピクルピコビルファラッドフィートブッシェルフランヘクタールペソペニヒヘルツペンスページベータポ\" +\n\t\"イントボルトホンポンドホールホーンマイクロマイルマッハマルクマンションミクロンミリミリバールメガメガトンメートルヤードヤールユアンリットルリ\" +\n\t\"ラルピールーブルレムレントゲンワット0点1点2点3点4点5点6点7点8点9点10点11点12点13点14点15点16点17点18点19点20\" +\n\t\"点21点22点23点24点daauovpcdmiu平成昭和大正明治株式会社panamakakbmbgbkcalpfnfmgkghzmldlk\" +\n\t\"lfmnmmmcmkmm2m3m∕sm∕s2rad∕srad∕s2psnsmspvnvmvkvpwnwmwkwbqcccdc∕kgdbgyhah\" +\n\t\"pinkkktlmlnlxphprsrsvwbv∕ma∕m1日2日3日4日5日6日7日8日9日10日11日12日13日14日15日16日17日1\" +\n\t\"8日19日20日21日22日23日24日25日26日27日28日29日30日31日ьɦɬʞʇœʍ𤋮𢡊𢡄𣏕𥉉𥳐𧻓fffiflstմնմեմիվնմ\" +\n\t\"խיִײַעהכלםרתשׁשׂשּׁשּׂאַאָאּבּגּדּהּוּזּטּיּךּכּלּמּנּסּףּפּצּקּרּשּתּו\" +\n\t\"ֹבֿכֿפֿאלٱٻپڀٺٿٹڤڦڄڃچڇڍڌڎڈژڑکگڳڱںڻۀہھےۓڭۇۆۈۋۅۉېىئائەئوئۇئۆئۈئېئىیئجئحئم\" +\n\t\"ئيبجبحبخبمبىبيتجتحتختمتىتيثجثمثىثيجحجمحجحمخجخحخمسجسحسخسمصحصمضجضحضخضمطحط\" +\n\t\"مظمعجعمغجغمفجفحفخفمفىفيقحقمقىقيكاكجكحكخكلكمكىكيلجلحلخلملىليمجمحمخمممىمي\" +\n\t\"نجنحنخنمنىنيهجهمهىهييجيحيخيميىييذٰرٰىٰ ٌّ ٍّ َّ ُّ ِّ ّٰئرئزئنبربزبنترت\" +\n\t\"زتنثرثزثنمانرنزننيريزينئخئهبهتهصخلهنههٰيهثهسهشمشهـَّـُّـِّطىطيعىعيغىغيس\" +\n\t\"ىسيشىشيحىحيجىجيخىخيصىصيضىضيشجشحشخشرسرصرضراًتجمتحجتحمتخمتمجتمحتمخجمححميح\" +\n\t\"مىسحجسجحسجىسمحسمجسممصححصممشحمشجيشمخشممضحىضخمطمحطممطميعجمعممعمىغممغميغمى\" +\n\t\"فخمقمحقمملحملحيلحىلججلخملمحمحجمحممحيمجحمجممخجمخممجخهمجهممنحمنحىنجمنجىنم\" +\n\t\"ينمىيممبخيتجيتجىتخيتخىتميتمىجميجحىجمىسخىصحيشحيضحيلجيلمييحييجييميمميقمين\" +\n\t\"حيعميكمينجحمخيلجمكممجحيحجيمجيفميبحيسخينجيصلےقلےاللهاكبرمحمدصلعمرسولعليه\" +\n\t\"وسلمصلىصلى الله عليه وسلمجل جلالهریال,:!?_{}[]#&*-<>\\\\$%@ـًـَـُـِـّـْءآ\" +\n\t\"أؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهويلآلألإلا\\x22'/^|~¢£¬¦¥𝅗𝅥𝅘𝅥𝅘𝅥𝅮𝅘𝅥𝅯𝅘𝅥𝅰𝅘𝅥𝅱\" +\n\t\"𝅘𝅥𝅲𝆹𝅥𝆺𝅥𝆹𝅥𝅮𝆺𝅥𝅮𝆹𝅥𝅯𝆺𝅥𝅯ıȷαεζηκλμνξοστυψ∇∂ϝٮڡٯ0,1,2,3,4,5,6,7,8,9,(a)(b)(c\" +\n\t\")(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)(w)(x)(y)(z)〔s\" +\n\t\"〕wzhvsdppvwcmcmdmrdjほかココサ手字双デ二多解天交映無料前後再新初終生販声吹演投捕一三遊左中右指走打禁空合満有月申割営配〔\" +\n\t\"本〕〔三〕〔二〕〔安〕〔点〕〔打〕〔盗〕〔勝〕〔敗〕得可丽丸乁你侮侻倂偺備僧像㒞免兔兤具㒹內冗冤仌冬况凵刃㓟刻剆剷㔕勇勉勤勺包匆北卉卑博即卽\" +\n\t\"卿灰及叟叫叱吆咞吸呈周咢哶唐啓啣善喙喫喳嗂圖嘆圗噑噴切壮城埴堍型堲報墬売壷夆夢奢姬娛娧姘婦㛮嬈嬾寃寘寧寳寿将尢㞁屠屮峀岍嵃嵮嵫嵼巡巢㠯巽帨帽\" +\n\t\"幩㡢㡼庰庳庶廊廾舁弢㣇形彫㣣徚忍志忹悁㤺㤜悔惇慈慌慎慺憎憲憤憯懞懲懶成戛扝抱拔捐挽拼捨掃揤搢揅掩㨮摩摾撝摷㩬敏敬旣書晉㬙暑㬈㫤冒冕最暜肭䏙朗\" +\n\t\"望朡杞杓㭉柺枅桒梅梎栟椔㮝楂榣槪檨櫛㰘次歔㱎歲殟殺殻汎沿泍汧洖派海流浩浸涅洴港湮㴳滋滇淹潮濆瀹瀞瀛㶖灊災灷炭煅熜爨爵牐犀犕獺王㺬玥㺸瑇瑜瑱璅\" +\n\t\"瓊㼛甤甾異瘐㿼䀈直眞真睊䀹瞋䁆䂖硎碌磌䃣祖福秫䄯穀穊穏䈂篆築䈧糒䊠糨糣紀絣䌁緇縂繅䌴䍙罺羕翺者聠聰䏕育脃䐋脾媵舄辞䑫芑芋芝劳花芳芽苦若茝荣莭\" +\n\t\"茣莽菧著荓菊菌菜䔫蓱蓳蔖蕤䕝䕡䕫虐虜虧虩蚩蚈蜎蛢蝹蜨蝫螆蟡蠁䗹衠衣裗裞䘵裺㒻䚾䛇誠諭變豕貫賁贛起跋趼跰軔輸邔郱鄑鄛鈸鋗鋘鉼鏹鐕開䦕閷䧦雃嶲霣\" +\n\t\"䩮䩶韠䪲頋頩飢䬳餩馧駂駾䯎鬒鱀鳽䳎䳭鵧䳸麻䵖黹黾鼅鼏鼖鼻\"\n\nvar mappingIndex = []uint16{ // 1650 elements\n\t// Entry 0 - 3F\n\t0x0000, 0x0000, 0x0001, 0x0004, 0x0005, 0x0008, 0x0009, 0x000a,\n\t0x000d, 0x0010, 0x0011, 0x0012, 0x0017, 0x001c, 0x0021, 0x0024,\n\t0x0027, 0x002a, 0x002b, 0x002e, 0x0031, 0x0034, 0x0035, 0x0036,\n\t0x0037, 0x0038, 0x0039, 0x003c, 0x003f, 0x0042, 0x0045, 0x0048,\n\t0x004b, 0x004c, 0x004d, 0x0051, 0x0054, 0x0055, 0x005a, 0x005e,\n\t0x0062, 0x0066, 0x006a, 0x006e, 0x0074, 0x007a, 0x0080, 0x0086,\n\t0x008c, 0x0092, 0x0098, 0x009e, 0x00a4, 0x00aa, 0x00b0, 0x00b6,\n\t0x00bc, 0x00c2, 0x00c8, 0x00ce, 0x00d4, 0x00da, 0x00e0, 0x00e6,\n\t// Entry 40 - 7F\n\t0x00ec, 0x00f2, 0x00f8, 0x00fe, 0x0104, 0x010a, 0x0110, 0x0116,\n\t0x011c, 0x0122, 0x0128, 0x012e, 0x0137, 0x013d, 0x0146, 0x014c,\n\t0x0152, 0x0158, 0x015e, 0x0164, 0x016a, 0x0170, 0x0172, 0x0174,\n\t0x0176, 0x0178, 0x017a, 0x017c, 0x017e, 0x0180, 0x0181, 0x0182,\n\t0x0183, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, 0x018a, 0x018c,\n\t0x018d, 0x018e, 0x018f, 0x0191, 0x0193, 0x0195, 0x0197, 0x0199,\n\t0x019b, 0x019d, 0x019f, 0x01a0, 0x01a2, 0x01a4, 0x01a6, 0x01a8,\n\t0x01aa, 0x01ac, 0x01ae, 0x01b0, 0x01b1, 0x01b3, 0x01b5, 0x01b6,\n\t// Entry 80 - BF\n\t0x01b8, 0x01ba, 0x01bc, 0x01be, 0x01c0, 0x01c2, 0x01c4, 0x01c6,\n\t0x01c8, 0x01ca, 0x01cc, 0x01ce, 0x01d0, 0x01d2, 0x01d4, 0x01d6,\n\t0x01d8, 0x01da, 0x01dc, 0x01de, 0x01e0, 0x01e2, 0x01e4, 0x01e5,\n\t0x01e7, 0x01e9, 0x01eb, 0x01ed, 0x01ef, 0x01f1, 0x01f3, 0x01f5,\n\t0x01f7, 0x01f9, 0x01fb, 0x01fd, 0x0202, 0x0207, 0x020c, 0x0211,\n\t0x0216, 0x021b, 0x0220, 0x0225, 0x022a, 0x022f, 0x0234, 0x0239,\n\t0x023e, 0x0243, 0x0248, 0x024d, 0x0252, 0x0257, 0x025c, 0x0261,\n\t0x0266, 0x026b, 0x0270, 0x0275, 0x027a, 0x027e, 0x0282, 0x0287,\n\t// Entry C0 - FF\n\t0x0289, 0x028e, 0x0293, 0x0297, 0x029b, 0x02a0, 0x02a5, 0x02aa,\n\t0x02af, 0x02b1, 0x02b6, 0x02bb, 0x02c0, 0x02c2, 0x02c7, 0x02c8,\n\t0x02cd, 0x02d1, 0x02d5, 0x02da, 0x02e0, 0x02e9, 0x02ef, 0x02f8,\n\t0x02fa, 0x02fc, 0x02fe, 0x0300, 0x030c, 0x030d, 0x030e, 0x030f,\n\t0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317,\n\t0x0319, 0x031b, 0x031d, 0x031e, 0x0320, 0x0322, 0x0324, 0x0326,\n\t0x0328, 0x032a, 0x032c, 0x032e, 0x0330, 0x0335, 0x033a, 0x0340,\n\t0x0345, 0x034a, 0x034f, 0x0354, 0x0359, 0x035e, 0x0363, 0x0368,\n\t// Entry 100 - 13F\n\t0x036d, 0x0372, 0x0377, 0x037c, 0x0380, 0x0382, 0x0384, 0x0386,\n\t0x038a, 0x038c, 0x038e, 0x0393, 0x0399, 0x03a2, 0x03a8, 0x03b1,\n\t0x03b3, 0x03b5, 0x03b7, 0x03b9, 0x03bb, 0x03bd, 0x03bf, 0x03c1,\n\t0x03c3, 0x03c5, 0x03c7, 0x03cb, 0x03cf, 0x03d3, 0x03d7, 0x03db,\n\t0x03df, 0x03e3, 0x03e7, 0x03eb, 0x03ef, 0x03f3, 0x03ff, 0x0401,\n\t0x0406, 0x0408, 0x040a, 0x040c, 0x040e, 0x040f, 0x0413, 0x0417,\n\t0x041d, 0x0423, 0x0428, 0x042d, 0x0432, 0x0437, 0x043c, 0x0441,\n\t0x0446, 0x044b, 0x0450, 0x0455, 0x045a, 0x045f, 0x0464, 0x0469,\n\t// Entry 140 - 17F\n\t0x046e, 0x0473, 0x0478, 0x047d, 0x0482, 0x0487, 0x048c, 0x0491,\n\t0x0496, 0x049b, 0x04a0, 0x04a5, 0x04aa, 0x04af, 0x04b4, 0x04bc,\n\t0x04c4, 0x04c9, 0x04ce, 0x04d3, 0x04d8, 0x04dd, 0x04e2, 0x04e7,\n\t0x04ec, 0x04f1, 0x04f6, 0x04fb, 0x0500, 0x0505, 0x050a, 0x050f,\n\t0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537,\n\t0x053c, 0x0541, 0x0546, 0x054b, 0x0550, 0x0555, 0x055a, 0x055f,\n\t0x0564, 0x0569, 0x056e, 0x0573, 0x0578, 0x057a, 0x057c, 0x057e,\n\t0x0580, 0x0582, 0x0584, 0x0586, 0x0588, 0x058a, 0x058c, 0x058e,\n\t// Entry 180 - 1BF\n\t0x0590, 0x0592, 0x0594, 0x0596, 0x059c, 0x05a2, 0x05a4, 0x05a6,\n\t0x05a8, 0x05aa, 0x05ac, 0x05ae, 0x05b0, 0x05b2, 0x05b4, 0x05b6,\n\t0x05b8, 0x05ba, 0x05bc, 0x05be, 0x05c0, 0x05c4, 0x05c8, 0x05cc,\n\t0x05d0, 0x05d4, 0x05d8, 0x05dc, 0x05e0, 0x05e4, 0x05e9, 0x05ee,\n\t0x05f3, 0x05f5, 0x05f7, 0x05fd, 0x0609, 0x0615, 0x0621, 0x062a,\n\t0x0636, 0x063f, 0x0648, 0x0657, 0x0663, 0x066c, 0x0675, 0x067e,\n\t0x068a, 0x0696, 0x069f, 0x06a8, 0x06ae, 0x06b7, 0x06c3, 0x06cf,\n\t0x06d5, 0x06e4, 0x06f6, 0x0705, 0x070e, 0x071d, 0x072c, 0x0738,\n\t// Entry 1C0 - 1FF\n\t0x0741, 0x074a, 0x0753, 0x075f, 0x076e, 0x077a, 0x0783, 0x078c,\n\t0x0795, 0x079b, 0x07a1, 0x07a7, 0x07ad, 0x07b6, 0x07bf, 0x07ce,\n\t0x07d7, 0x07e3, 0x07f2, 0x07fb, 0x0801, 0x0807, 0x0816, 0x0822,\n\t0x0831, 0x083a, 0x0849, 0x084f, 0x0858, 0x0861, 0x086a, 0x0873,\n\t0x087c, 0x0888, 0x0891, 0x0897, 0x08a0, 0x08a9, 0x08b2, 0x08be,\n\t0x08c7, 0x08d0, 0x08d9, 0x08e8, 0x08f4, 0x08fa, 0x0909, 0x090f,\n\t0x091b, 0x0927, 0x0930, 0x0939, 0x0942, 0x094e, 0x0954, 0x095d,\n\t0x0969, 0x096f, 0x097e, 0x0987, 0x098b, 0x098f, 0x0993, 0x0997,\n\t// Entry 200 - 23F\n\t0x099b, 0x099f, 0x09a3, 0x09a7, 0x09ab, 0x09af, 0x09b4, 0x09b9,\n\t0x09be, 0x09c3, 0x09c8, 0x09cd, 0x09d2, 0x09d7, 0x09dc, 0x09e1,\n\t0x09e6, 0x09eb, 0x09f0, 0x09f5, 0x09fa, 0x09fc, 0x09fe, 0x0a00,\n\t0x0a02, 0x0a04, 0x0a06, 0x0a0c, 0x0a12, 0x0a18, 0x0a1e, 0x0a2a,\n\t0x0a2c, 0x0a2e, 0x0a30, 0x0a32, 0x0a34, 0x0a36, 0x0a38, 0x0a3c,\n\t0x0a3e, 0x0a40, 0x0a42, 0x0a44, 0x0a46, 0x0a48, 0x0a4a, 0x0a4c,\n\t0x0a4e, 0x0a50, 0x0a52, 0x0a54, 0x0a56, 0x0a58, 0x0a5a, 0x0a5f,\n\t0x0a65, 0x0a6c, 0x0a74, 0x0a76, 0x0a78, 0x0a7a, 0x0a7c, 0x0a7e,\n\t// Entry 240 - 27F\n\t0x0a80, 0x0a82, 0x0a84, 0x0a86, 0x0a88, 0x0a8a, 0x0a8c, 0x0a8e,\n\t0x0a90, 0x0a96, 0x0a98, 0x0a9a, 0x0a9c, 0x0a9e, 0x0aa0, 0x0aa2,\n\t0x0aa4, 0x0aa6, 0x0aa8, 0x0aaa, 0x0aac, 0x0aae, 0x0ab0, 0x0ab2,\n\t0x0ab4, 0x0ab9, 0x0abe, 0x0ac2, 0x0ac6, 0x0aca, 0x0ace, 0x0ad2,\n\t0x0ad6, 0x0ada, 0x0ade, 0x0ae2, 0x0ae7, 0x0aec, 0x0af1, 0x0af6,\n\t0x0afb, 0x0b00, 0x0b05, 0x0b0a, 0x0b0f, 0x0b14, 0x0b19, 0x0b1e,\n\t0x0b23, 0x0b28, 0x0b2d, 0x0b32, 0x0b37, 0x0b3c, 0x0b41, 0x0b46,\n\t0x0b4b, 0x0b50, 0x0b52, 0x0b54, 0x0b56, 0x0b58, 0x0b5a, 0x0b5c,\n\t// Entry 280 - 2BF\n\t0x0b5e, 0x0b62, 0x0b66, 0x0b6a, 0x0b6e, 0x0b72, 0x0b76, 0x0b7a,\n\t0x0b7c, 0x0b7e, 0x0b80, 0x0b82, 0x0b86, 0x0b8a, 0x0b8e, 0x0b92,\n\t0x0b96, 0x0b9a, 0x0b9e, 0x0ba0, 0x0ba2, 0x0ba4, 0x0ba6, 0x0ba8,\n\t0x0baa, 0x0bac, 0x0bb0, 0x0bb4, 0x0bba, 0x0bc0, 0x0bc4, 0x0bc8,\n\t0x0bcc, 0x0bd0, 0x0bd4, 0x0bd8, 0x0bdc, 0x0be0, 0x0be4, 0x0be8,\n\t0x0bec, 0x0bf0, 0x0bf4, 0x0bf8, 0x0bfc, 0x0c00, 0x0c04, 0x0c08,\n\t0x0c0c, 0x0c10, 0x0c14, 0x0c18, 0x0c1c, 0x0c20, 0x0c24, 0x0c28,\n\t0x0c2c, 0x0c30, 0x0c34, 0x0c36, 0x0c38, 0x0c3a, 0x0c3c, 0x0c3e,\n\t// Entry 2C0 - 2FF\n\t0x0c40, 0x0c42, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c4e,\n\t0x0c50, 0x0c52, 0x0c54, 0x0c56, 0x0c58, 0x0c5a, 0x0c5c, 0x0c5e,\n\t0x0c60, 0x0c62, 0x0c64, 0x0c66, 0x0c68, 0x0c6a, 0x0c6c, 0x0c6e,\n\t0x0c70, 0x0c72, 0x0c74, 0x0c76, 0x0c78, 0x0c7a, 0x0c7c, 0x0c7e,\n\t0x0c80, 0x0c82, 0x0c86, 0x0c8a, 0x0c8e, 0x0c92, 0x0c96, 0x0c9a,\n\t0x0c9e, 0x0ca2, 0x0ca4, 0x0ca8, 0x0cac, 0x0cb0, 0x0cb4, 0x0cb8,\n\t0x0cbc, 0x0cc0, 0x0cc4, 0x0cc8, 0x0ccc, 0x0cd0, 0x0cd4, 0x0cd8,\n\t0x0cdc, 0x0ce0, 0x0ce4, 0x0ce8, 0x0cec, 0x0cf0, 0x0cf4, 0x0cf8,\n\t// Entry 300 - 33F\n\t0x0cfc, 0x0d00, 0x0d04, 0x0d08, 0x0d0c, 0x0d10, 0x0d14, 0x0d18,\n\t0x0d1c, 0x0d20, 0x0d24, 0x0d28, 0x0d2c, 0x0d30, 0x0d34, 0x0d38,\n\t0x0d3c, 0x0d40, 0x0d44, 0x0d48, 0x0d4c, 0x0d50, 0x0d54, 0x0d58,\n\t0x0d5c, 0x0d60, 0x0d64, 0x0d68, 0x0d6c, 0x0d70, 0x0d74, 0x0d78,\n\t0x0d7c, 0x0d80, 0x0d84, 0x0d88, 0x0d8c, 0x0d90, 0x0d94, 0x0d98,\n\t0x0d9c, 0x0da0, 0x0da4, 0x0da8, 0x0dac, 0x0db0, 0x0db4, 0x0db8,\n\t0x0dbc, 0x0dc0, 0x0dc4, 0x0dc8, 0x0dcc, 0x0dd0, 0x0dd4, 0x0dd8,\n\t0x0ddc, 0x0de0, 0x0de4, 0x0de8, 0x0dec, 0x0df0, 0x0df4, 0x0df8,\n\t// Entry 340 - 37F\n\t0x0dfc, 0x0e00, 0x0e04, 0x0e08, 0x0e0c, 0x0e10, 0x0e14, 0x0e18,\n\t0x0e1d, 0x0e22, 0x0e27, 0x0e2c, 0x0e31, 0x0e36, 0x0e3a, 0x0e3e,\n\t0x0e42, 0x0e46, 0x0e4a, 0x0e4e, 0x0e52, 0x0e56, 0x0e5a, 0x0e5e,\n\t0x0e62, 0x0e66, 0x0e6a, 0x0e6e, 0x0e72, 0x0e76, 0x0e7a, 0x0e7e,\n\t0x0e82, 0x0e86, 0x0e8a, 0x0e8e, 0x0e92, 0x0e96, 0x0e9a, 0x0e9e,\n\t0x0ea2, 0x0ea6, 0x0eaa, 0x0eae, 0x0eb2, 0x0eb6, 0x0ebc, 0x0ec2,\n\t0x0ec8, 0x0ecc, 0x0ed0, 0x0ed4, 0x0ed8, 0x0edc, 0x0ee0, 0x0ee4,\n\t0x0ee8, 0x0eec, 0x0ef0, 0x0ef4, 0x0ef8, 0x0efc, 0x0f00, 0x0f04,\n\t// Entry 380 - 3BF\n\t0x0f08, 0x0f0c, 0x0f10, 0x0f14, 0x0f18, 0x0f1c, 0x0f20, 0x0f24,\n\t0x0f28, 0x0f2c, 0x0f30, 0x0f34, 0x0f38, 0x0f3e, 0x0f44, 0x0f4a,\n\t0x0f50, 0x0f56, 0x0f5c, 0x0f62, 0x0f68, 0x0f6e, 0x0f74, 0x0f7a,\n\t0x0f80, 0x0f86, 0x0f8c, 0x0f92, 0x0f98, 0x0f9e, 0x0fa4, 0x0faa,\n\t0x0fb0, 0x0fb6, 0x0fbc, 0x0fc2, 0x0fc8, 0x0fce, 0x0fd4, 0x0fda,\n\t0x0fe0, 0x0fe6, 0x0fec, 0x0ff2, 0x0ff8, 0x0ffe, 0x1004, 0x100a,\n\t0x1010, 0x1016, 0x101c, 0x1022, 0x1028, 0x102e, 0x1034, 0x103a,\n\t0x1040, 0x1046, 0x104c, 0x1052, 0x1058, 0x105e, 0x1064, 0x106a,\n\t// Entry 3C0 - 3FF\n\t0x1070, 0x1076, 0x107c, 0x1082, 0x1088, 0x108e, 0x1094, 0x109a,\n\t0x10a0, 0x10a6, 0x10ac, 0x10b2, 0x10b8, 0x10be, 0x10c4, 0x10ca,\n\t0x10d0, 0x10d6, 0x10dc, 0x10e2, 0x10e8, 0x10ee, 0x10f4, 0x10fa,\n\t0x1100, 0x1106, 0x110c, 0x1112, 0x1118, 0x111e, 0x1124, 0x112a,\n\t0x1130, 0x1136, 0x113c, 0x1142, 0x1148, 0x114e, 0x1154, 0x115a,\n\t0x1160, 0x1166, 0x116c, 0x1172, 0x1178, 0x1180, 0x1188, 0x1190,\n\t0x1198, 0x11a0, 0x11a8, 0x11b0, 0x11b6, 0x11d7, 0x11e6, 0x11ee,\n\t0x11ef, 0x11f0, 0x11f1, 0x11f2, 0x11f3, 0x11f4, 0x11f5, 0x11f6,\n\t// Entry 400 - 43F\n\t0x11f7, 0x11f8, 0x11f9, 0x11fa, 0x11fb, 0x11fc, 0x11fd, 0x11fe,\n\t0x11ff, 0x1200, 0x1201, 0x1205, 0x1209, 0x120d, 0x1211, 0x1215,\n\t0x1219, 0x121b, 0x121d, 0x121f, 0x1221, 0x1223, 0x1225, 0x1227,\n\t0x1229, 0x122b, 0x122d, 0x122f, 0x1231, 0x1233, 0x1235, 0x1237,\n\t0x1239, 0x123b, 0x123d, 0x123f, 0x1241, 0x1243, 0x1245, 0x1247,\n\t0x1249, 0x124b, 0x124d, 0x124f, 0x1251, 0x1253, 0x1255, 0x1257,\n\t0x1259, 0x125b, 0x125d, 0x125f, 0x1263, 0x1267, 0x126b, 0x126f,\n\t0x1270, 0x1271, 0x1272, 0x1273, 0x1274, 0x1275, 0x1277, 0x1279,\n\t// Entry 440 - 47F\n\t0x127b, 0x127d, 0x127f, 0x1287, 0x128f, 0x129b, 0x12a7, 0x12b3,\n\t0x12bf, 0x12cb, 0x12d3, 0x12db, 0x12e7, 0x12f3, 0x12ff, 0x130b,\n\t0x130d, 0x130f, 0x1311, 0x1313, 0x1315, 0x1317, 0x1319, 0x131b,\n\t0x131d, 0x131f, 0x1321, 0x1323, 0x1325, 0x1327, 0x1329, 0x132b,\n\t0x132e, 0x1331, 0x1333, 0x1335, 0x1337, 0x1339, 0x133b, 0x133d,\n\t0x133f, 0x1341, 0x1343, 0x1345, 0x1347, 0x1349, 0x134b, 0x134d,\n\t0x1350, 0x1353, 0x1356, 0x1359, 0x135c, 0x135f, 0x1362, 0x1365,\n\t0x1368, 0x136b, 0x136e, 0x1371, 0x1374, 0x1377, 0x137a, 0x137d,\n\t// Entry 480 - 4BF\n\t0x1380, 0x1383, 0x1386, 0x1389, 0x138c, 0x138f, 0x1392, 0x1395,\n\t0x1398, 0x139b, 0x13a2, 0x13a4, 0x13a6, 0x13a8, 0x13ab, 0x13ad,\n\t0x13af, 0x13b1, 0x13b3, 0x13b5, 0x13bb, 0x13c1, 0x13c4, 0x13c7,\n\t0x13ca, 0x13cd, 0x13d0, 0x13d3, 0x13d6, 0x13d9, 0x13dc, 0x13df,\n\t0x13e2, 0x13e5, 0x13e8, 0x13eb, 0x13ee, 0x13f1, 0x13f4, 0x13f7,\n\t0x13fa, 0x13fd, 0x1400, 0x1403, 0x1406, 0x1409, 0x140c, 0x140f,\n\t0x1412, 0x1415, 0x1418, 0x141b, 0x141e, 0x1421, 0x1424, 0x1427,\n\t0x142a, 0x142d, 0x1430, 0x1433, 0x1436, 0x1439, 0x143c, 0x143f,\n\t// Entry 4C0 - 4FF\n\t0x1442, 0x1445, 0x1448, 0x1451, 0x145a, 0x1463, 0x146c, 0x1475,\n\t0x147e, 0x1487, 0x1490, 0x1499, 0x149c, 0x149f, 0x14a2, 0x14a5,\n\t0x14a8, 0x14ab, 0x14ae, 0x14b1, 0x14b4, 0x14b7, 0x14ba, 0x14bd,\n\t0x14c0, 0x14c3, 0x14c6, 0x14c9, 0x14cc, 0x14cf, 0x14d2, 0x14d5,\n\t0x14d8, 0x14db, 0x14de, 0x14e1, 0x14e4, 0x14e7, 0x14ea, 0x14ed,\n\t0x14f0, 0x14f3, 0x14f6, 0x14f9, 0x14fc, 0x14ff, 0x1502, 0x1505,\n\t0x1508, 0x150b, 0x150e, 0x1511, 0x1514, 0x1517, 0x151a, 0x151d,\n\t0x1520, 0x1523, 0x1526, 0x1529, 0x152c, 0x152f, 0x1532, 0x1535,\n\t// Entry 500 - 53F\n\t0x1538, 0x153b, 0x153e, 0x1541, 0x1544, 0x1547, 0x154a, 0x154d,\n\t0x1550, 0x1553, 0x1556, 0x1559, 0x155c, 0x155f, 0x1562, 0x1565,\n\t0x1568, 0x156b, 0x156e, 0x1571, 0x1574, 0x1577, 0x157a, 0x157d,\n\t0x1580, 0x1583, 0x1586, 0x1589, 0x158c, 0x158f, 0x1592, 0x1595,\n\t0x1598, 0x159b, 0x159e, 0x15a1, 0x15a4, 0x15a7, 0x15aa, 0x15ad,\n\t0x15b0, 0x15b3, 0x15b6, 0x15b9, 0x15bc, 0x15bf, 0x15c2, 0x15c5,\n\t0x15c8, 0x15cb, 0x15ce, 0x15d1, 0x15d4, 0x15d7, 0x15da, 0x15dd,\n\t0x15e0, 0x15e3, 0x15e6, 0x15e9, 0x15ec, 0x15ef, 0x15f2, 0x15f5,\n\t// Entry 540 - 57F\n\t0x15f8, 0x15fb, 0x15fe, 0x1601, 0x1604, 0x1607, 0x160a, 0x160d,\n\t0x1610, 0x1613, 0x1616, 0x1619, 0x161c, 0x161f, 0x1622, 0x1625,\n\t0x1628, 0x162b, 0x162e, 0x1631, 0x1634, 0x1637, 0x163a, 0x163d,\n\t0x1640, 0x1643, 0x1646, 0x1649, 0x164c, 0x164f, 0x1652, 0x1655,\n\t0x1658, 0x165b, 0x165e, 0x1661, 0x1664, 0x1667, 0x166a, 0x166d,\n\t0x1670, 0x1673, 0x1676, 0x1679, 0x167c, 0x167f, 0x1682, 0x1685,\n\t0x1688, 0x168b, 0x168e, 0x1691, 0x1694, 0x1697, 0x169a, 0x169d,\n\t0x16a0, 0x16a3, 0x16a6, 0x16a9, 0x16ac, 0x16af, 0x16b2, 0x16b5,\n\t// Entry 580 - 5BF\n\t0x16b8, 0x16bb, 0x16be, 0x16c1, 0x16c4, 0x16c7, 0x16ca, 0x16cd,\n\t0x16d0, 0x16d3, 0x16d6, 0x16d9, 0x16dc, 0x16df, 0x16e2, 0x16e5,\n\t0x16e8, 0x16eb, 0x16ee, 0x16f1, 0x16f4, 0x16f7, 0x16fa, 0x16fd,\n\t0x1700, 0x1703, 0x1706, 0x1709, 0x170c, 0x170f, 0x1712, 0x1715,\n\t0x1718, 0x171b, 0x171e, 0x1721, 0x1724, 0x1727, 0x172a, 0x172d,\n\t0x1730, 0x1733, 0x1736, 0x1739, 0x173c, 0x173f, 0x1742, 0x1745,\n\t0x1748, 0x174b, 0x174e, 0x1751, 0x1754, 0x1757, 0x175a, 0x175d,\n\t0x1760, 0x1763, 0x1766, 0x1769, 0x176c, 0x176f, 0x1772, 0x1775,\n\t// Entry 5C0 - 5FF\n\t0x1778, 0x177b, 0x177e, 0x1781, 0x1784, 0x1787, 0x178a, 0x178d,\n\t0x1790, 0x1793, 0x1796, 0x1799, 0x179c, 0x179f, 0x17a2, 0x17a5,\n\t0x17a8, 0x17ab, 0x17ae, 0x17b1, 0x17b4, 0x17b7, 0x17ba, 0x17bd,\n\t0x17c0, 0x17c3, 0x17c6, 0x17c9, 0x17cc, 0x17cf, 0x17d2, 0x17d5,\n\t0x17d8, 0x17db, 0x17de, 0x17e1, 0x17e4, 0x17e7, 0x17ea, 0x17ed,\n\t0x17f0, 0x17f3, 0x17f6, 0x17f9, 0x17fc, 0x17ff, 0x1802, 0x1805,\n\t0x1808, 0x180b, 0x180e, 0x1811, 0x1814, 0x1817, 0x181a, 0x181d,\n\t0x1820, 0x1823, 0x1826, 0x1829, 0x182c, 0x182f, 0x1832, 0x1835,\n\t// Entry 600 - 63F\n\t0x1838, 0x183b, 0x183e, 0x1841, 0x1844, 0x1847, 0x184a, 0x184d,\n\t0x1850, 0x1853, 0x1856, 0x1859, 0x185c, 0x185f, 0x1862, 0x1865,\n\t0x1868, 0x186b, 0x186e, 0x1871, 0x1874, 0x1877, 0x187a, 0x187d,\n\t0x1880, 0x1883, 0x1886, 0x1889, 0x188c, 0x188f, 0x1892, 0x1895,\n\t0x1898, 0x189b, 0x189e, 0x18a1, 0x18a4, 0x18a7, 0x18aa, 0x18ad,\n\t0x18b0, 0x18b3, 0x18b6, 0x18b9, 0x18bc, 0x18bf, 0x18c2, 0x18c5,\n\t0x18c8, 0x18cb, 0x18ce, 0x18d1, 0x18d4, 0x18d7, 0x18da, 0x18dd,\n\t0x18e0, 0x18e3, 0x18e6, 0x18e9, 0x18ec, 0x18ef, 0x18f2, 0x18f5,\n\t// Entry 640 - 67F\n\t0x18f8, 0x18fb, 0x18fe, 0x1901, 0x1904, 0x1907, 0x190a, 0x190d,\n\t0x1910, 0x1913, 0x1916, 0x1919, 0x191c, 0x191f, 0x1922, 0x1925,\n\t0x1928, 0x192b, 0x192e, 0x1931, 0x1934, 0x1937, 0x193a, 0x193d,\n\t0x1940, 0x1943, 0x1946, 0x1949, 0x194c, 0x194f, 0x1952, 0x1955,\n\t0x1958, 0x195b, 0x195e, 0x1961, 0x1964, 0x1967, 0x196a, 0x196d,\n\t0x1970, 0x1973, 0x1976, 0x1979, 0x197c, 0x197f, 0x1982, 0x1985,\n\t0x1988, 0x198b,\n} // Size: 3324 bytes\n\nvar xorData string = \"\" + // Size: 4862 bytes\n\t\"\\x02\\x0c\\x09\\x02\\xb0\\xec\\x02\\xad\\xd8\\x02\\xad\\xd9\\x02\\x06\\x07\\x02\\x0f\\x12\" +\n\t\"\\x02\\x0f\\x1f\\x02\\x0f\\x1d\\x02\\x01\\x13\\x02\\x0f\\x16\\x02\\x0f\\x0b\\x02\\x0f3\" +\n\t\"\\x02\\x0f7\\x02\\x0f?\\x02\\x0f/\\x02\\x0f*\\x02\\x0c&\\x02\\x0c*\\x02\\x0c;\\x02\\x0c9\" +\n\t\"\\x02\\x0c%\\x02\\xab\\xed\\x02\\xab\\xe2\\x02\\xab\\xe3\\x02\\xa9\\xe0\\x02\\xa9\\xe1\" +\n\t\"\\x02\\xa9\\xe6\\x02\\xa3\\xcb\\x02\\xa3\\xc8\\x02\\xa3\\xc9\\x02\\x01#\\x02\\x01\\x08\" +\n\t\"\\x02\\x0e>\\x02\\x0e'\\x02\\x0f\\x03\\x02\\x03\\x0d\\x02\\x03\\x09\\x02\\x03\\x17\\x02\" +\n\t\"\\x03\\x0e\\x02\\x02\\x03\\x02\\x011\\x02\\x01\\x00\\x02\\x01\\x10\\x02\\x03<\\x02\\x07\" +\n\t\"\\x0d\\x02\\x02\\x0c\\x02\\x0c0\\x02\\x01\\x03\\x02\\x01\\x01\\x02\\x01 \\x02\\x01\\x22\" +\n\t\"\\x02\\x01)\\x02\\x01\\x0a\\x02\\x01\\x0c\\x02\\x02\\x06\\x02\\x02\\x02\\x02\\x03\\x10\" +\n\t\"\\x03\\x037 \\x03\\x0b+\\x03\\x021\\x00\\x02\\x01\\x04\\x02\\x01\\x02\\x02\\x019\\x02\" +\n\t\"\\x03\\x1c\\x02\\x02$\\x03\\x80p$\\x02\\x03:\\x02\\x03\\x0a\\x03\\xc1r.\\x03\\xc1r,\\x03\" +\n\t\"\\xc1r\\x02\\x02\\x02:\\x02\\x02>\\x02\\x02,\\x02\\x02\\x10\\x02\\x02\\x00\\x03\\xc1s<\" +\n\t\"\\x03\\xc1s*\\x03\\xc2L$\\x03\\xc2L;\\x02\\x09)\\x02\\x0a\\x19\\x03\\x83\\xab\\xe3\\x03\" +\n\t\"\\x83\\xab\\xf2\\x03 4\\xe0\\x03\\x81\\xab\\xea\\x03\\x81\\xab\\xf3\\x03 4\\xef\\x03\\x96\" +\n\t\"\\xe1\\xcd\\x03\\x84\\xe5\\xc3\\x02\\x0d\\x11\\x03\\x8b\\xec\\xcb\\x03\\x94\\xec\\xcf\\x03\" +\n\t\"\\x9a\\xec\\xc2\\x03\\x8b\\xec\\xdb\\x03\\x94\\xec\\xdf\\x03\\x9a\\xec\\xd2\\x03\\x01\\x0c\" +\n\t\"!\\x03\\x01\\x0c#\\x03ʠ\\x9d\\x03ʣ\\x9c\\x03ʢ\\x9f\\x03ʥ\\x9e\\x03ʤ\\x91\\x03ʧ\\x90\\x03\" +\n\t\"ʦ\\x93\\x03ʩ\\x92\\x03ʨ\\x95\\x03\\xca\\xf3\\xb5\\x03\\xca\\xf0\\xb4\\x03\\xca\\xf1\\xb7\" +\n\t\"\\x03\\xca\\xf6\\xb6\\x03\\xca\\xf7\\x89\\x03\\xca\\xf4\\x88\\x03\\xca\\xf5\\x8b\\x03\\xca\" +\n\t\"\\xfa\\x8a\\x03\\xca\\xfb\\x8d\\x03\\xca\\xf8\\x8c\\x03\\xca\\xf9\\x8f\\x03\\xca\\xfe\\x8e\" +\n\t\"\\x03\\xca\\xff\\x81\\x03\\xca\\xfc\\x80\\x03\\xca\\xfd\\x83\\x03\\xca\\xe2\\x82\\x03\\xca\" +\n\t\"\\xe3\\x85\\x03\\xca\\xe0\\x84\\x03\\xca\\xe1\\x87\\x03\\xca\\xe6\\x86\\x03\\xca\\xe7\\x99\" +\n\t\"\\x03\\xca\\xe4\\x98\\x03\\xca\\xe5\\x9b\\x03\\xca\\xea\\x9a\\x03\\xca\\xeb\\x9d\\x03\\xca\" +\n\t\"\\xe8\\x9c\\x03ؓ\\x89\\x03ߔ\\x8b\\x02\\x010\\x03\\x03\\x04\\x1e\\x03\\x04\\x15\\x12\\x03\" +\n\t\"\\x0b\\x05,\\x03\\x06\\x04\\x00\\x03\\x06\\x04)\\x03\\x06\\x044\\x03\\x06\\x04<\\x03\\x06\" +\n\t\"\\x05\\x1d\\x03\\x06\\x06\\x00\\x03\\x06\\x06\\x0a\\x03\\x06\\x06'\\x03\\x06\\x062\\x03\" +\n\t\"\\x0786\\x03\\x079/\\x03\\x079 \\x03\\x07:\\x0e\\x03\\x07:\\x1b\\x03\\x07:%\\x03\\x07;/\" +\n\t\"\\x03\\x07;%\\x03\\x074\\x11\\x03\\x076\\x09\\x03\\x077*\\x03\\x070\\x01\\x03\\x070\\x0f\" +\n\t\"\\x03\\x070.\\x03\\x071\\x16\\x03\\x071\\x04\\x03\\x0710\\x03\\x072\\x18\\x03\\x072-\" +\n\t\"\\x03\\x073\\x14\\x03\\x073>\\x03\\x07'\\x09\\x03\\x07 \\x00\\x03\\x07\\x1f\\x0b\\x03\" +\n\t\"\\x07\\x18#\\x03\\x07\\x18(\\x03\\x07\\x186\\x03\\x07\\x18\\x03\\x03\\x07\\x19\\x16\\x03\" +\n\t\"\\x07\\x116\\x03\\x07\\x12'\\x03\\x07\\x13\\x10\\x03\\x07\\x0c&\\x03\\x07\\x0c\\x08\\x03\" +\n\t\"\\x07\\x0c\\x13\\x03\\x07\\x0d\\x02\\x03\\x07\\x0d\\x1c\\x03\\x07\\x0b5\\x03\\x07\\x0b\" +\n\t\"\\x0a\\x03\\x07\\x0b\\x01\\x03\\x07\\x0b\\x0f\\x03\\x07\\x05\\x00\\x03\\x07\\x05\\x09\\x03\" +\n\t\"\\x07\\x05\\x0b\\x03\\x07\\x07\\x01\\x03\\x07\\x07\\x08\\x03\\x07\\x00<\\x03\\x07\\x00+\" +\n\t\"\\x03\\x07\\x01)\\x03\\x07\\x01\\x1b\\x03\\x07\\x01\\x08\\x03\\x07\\x03?\\x03\\x0445\\x03\" +\n\t\"\\x044\\x08\\x03\\x0454\\x03\\x04)/\\x03\\x04)5\\x03\\x04+\\x05\\x03\\x04+\\x14\\x03\" +\n\t\"\\x04+ \\x03\\x04+<\\x03\\x04*&\\x03\\x04*\\x22\\x03\\x04&8\\x03\\x04!\\x01\\x03\\x04!\" +\n\t\"\\x22\\x03\\x04\\x11+\\x03\\x04\\x10.\\x03\\x04\\x104\\x03\\x04\\x13=\\x03\\x04\\x12\\x04\" +\n\t\"\\x03\\x04\\x12\\x0a\\x03\\x04\\x0d\\x1d\\x03\\x04\\x0d\\x07\\x03\\x04\\x0d \\x03\\x05<>\" +\n\t\"\\x03\\x055<\\x03\\x055!\\x03\\x055#\\x03\\x055&\\x03\\x054\\x1d\\x03\\x054\\x02\\x03\" +\n\t\"\\x054\\x07\\x03\\x0571\\x03\\x053\\x1a\\x03\\x053\\x16\\x03\\x05.<\\x03\\x05.\\x07\\x03\" +\n\t\"\\x05):\\x03\\x05)<\\x03\\x05)\\x0c\\x03\\x05)\\x15\\x03\\x05+-\\x03\\x05+5\\x03\\x05$\" +\n\t\"\\x1e\\x03\\x05$\\x14\\x03\\x05'\\x04\\x03\\x05'\\x14\\x03\\x05&\\x02\\x03\\x05\\x226\" +\n\t\"\\x03\\x05\\x22\\x0c\\x03\\x05\\x22\\x1c\\x03\\x05\\x19\\x0a\\x03\\x05\\x1b\\x09\\x03\\x05\" +\n\t\"\\x1b\\x0c\\x03\\x05\\x14\\x07\\x03\\x05\\x16?\\x03\\x05\\x16\\x0c\\x03\\x05\\x0c\\x05\" +\n\t\"\\x03\\x05\\x0e\\x0f\\x03\\x05\\x01\\x0e\\x03\\x05\\x00(\\x03\\x05\\x030\\x03\\x05\\x03\" +\n\t\"\\x06\\x03\\x0a==\\x03\\x0a=1\\x03\\x0a=,\\x03\\x0a=\\x0c\\x03\\x0a??\\x03\\x0a<\\x08\" +\n\t\"\\x03\\x0a9!\\x03\\x0a9)\\x03\\x0a97\\x03\\x0a99\\x03\\x0a6\\x0a\\x03\\x0a6\\x1c\\x03\" +\n\t\"\\x0a6\\x17\\x03\\x0a7'\\x03\\x0a78\\x03\\x0a73\\x03\\x0a'\\x01\\x03\\x0a'&\\x03\\x0a\" +\n\t\"\\x1f\\x0e\\x03\\x0a\\x1f\\x03\\x03\\x0a\\x1f3\\x03\\x0a\\x1b/\\x03\\x0a\\x18\\x19\\x03\" +\n\t\"\\x0a\\x19\\x01\\x03\\x0a\\x16\\x14\\x03\\x0a\\x0e\\x22\\x03\\x0a\\x0f\\x10\\x03\\x0a\\x0f\" +\n\t\"\\x02\\x03\\x0a\\x0f \\x03\\x0a\\x0c\\x04\\x03\\x0a\\x0b>\\x03\\x0a\\x0b+\\x03\\x0a\\x08/\" +\n\t\"\\x03\\x0a\\x046\\x03\\x0a\\x05\\x14\\x03\\x0a\\x00\\x04\\x03\\x0a\\x00\\x10\\x03\\x0a\" +\n\t\"\\x00\\x14\\x03\\x0b<3\\x03\\x0b;*\\x03\\x0b9\\x22\\x03\\x0b9)\\x03\\x0b97\\x03\\x0b+\" +\n\t\"\\x10\\x03\\x0b((\\x03\\x0b&5\\x03\\x0b$\\x1c\\x03\\x0b$\\x12\\x03\\x0b%\\x04\\x03\\x0b#\" +\n\t\"<\\x03\\x0b#0\\x03\\x0b#\\x0d\\x03\\x0b#\\x19\\x03\\x0b!:\\x03\\x0b!\\x1f\\x03\\x0b!\" +\n\t\"\\x00\\x03\\x0b\\x1e5\\x03\\x0b\\x1c\\x1d\\x03\\x0b\\x1d-\\x03\\x0b\\x1d(\\x03\\x0b\\x18.\" +\n\t\"\\x03\\x0b\\x18 \\x03\\x0b\\x18\\x16\\x03\\x0b\\x14\\x13\\x03\\x0b\\x15$\\x03\\x0b\\x15\" +\n\t\"\\x22\\x03\\x0b\\x12\\x1b\\x03\\x0b\\x12\\x10\\x03\\x0b\\x132\\x03\\x0b\\x13=\\x03\\x0b\" +\n\t\"\\x12\\x18\\x03\\x0b\\x0c&\\x03\\x0b\\x061\\x03\\x0b\\x06:\\x03\\x0b\\x05#\\x03\\x0b\\x05\" +\n\t\"<\\x03\\x0b\\x04\\x0b\\x03\\x0b\\x04\\x04\\x03\\x0b\\x04\\x1b\\x03\\x0b\\x042\\x03\\x0b\" +\n\t\"\\x041\\x03\\x0b\\x03\\x03\\x03\\x0b\\x03\\x1d\\x03\\x0b\\x03/\\x03\\x0b\\x03+\\x03\\x0b\" +\n\t\"\\x02\\x1b\\x03\\x0b\\x02\\x00\\x03\\x0b\\x01\\x1e\\x03\\x0b\\x01\\x08\\x03\\x0b\\x015\" +\n\t\"\\x03\\x06\\x0d9\\x03\\x06\\x0d=\\x03\\x06\\x0d?\\x03\\x02\\x001\\x03\\x02\\x003\\x03\" +\n\t\"\\x02\\x02\\x19\\x03\\x02\\x006\\x03\\x02\\x02\\x1b\\x03\\x02\\x004\\x03\\x02\\x00<\\x03\" +\n\t\"\\x02\\x02\\x0a\\x03\\x02\\x02\\x0e\\x03\\x02\\x01\\x1a\\x03\\x02\\x01\\x07\\x03\\x02\\x01\" +\n\t\"\\x05\\x03\\x02\\x01\\x0b\\x03\\x02\\x01%\\x03\\x02\\x01\\x0c\\x03\\x02\\x01\\x04\\x03\" +\n\t\"\\x02\\x01\\x1c\\x03\\x02\\x00.\\x03\\x02\\x002\\x03\\x02\\x00>\\x03\\x02\\x00\\x12\\x03\" +\n\t\"\\x02\\x00\\x16\\x03\\x02\\x011\\x03\\x02\\x013\\x03\\x02\\x02 \\x03\\x02\\x02%\\x03\\x02\" +\n\t\"\\x02$\\x03\\x02\\x028\\x03\\x02\\x02;\\x03\\x02\\x024\\x03\\x02\\x012\\x03\\x02\\x022\" +\n\t\"\\x03\\x02\\x02/\\x03\\x02\\x01,\\x03\\x02\\x01\\x13\\x03\\x02\\x01\\x16\\x03\\x02\\x01\" +\n\t\"\\x11\\x03\\x02\\x01\\x1e\\x03\\x02\\x01\\x15\\x03\\x02\\x01\\x17\\x03\\x02\\x01\\x0f\\x03\" +\n\t\"\\x02\\x01\\x08\\x03\\x02\\x00?\\x03\\x02\\x03\\x07\\x03\\x02\\x03\\x0d\\x03\\x02\\x03\" +\n\t\"\\x13\\x03\\x02\\x03\\x1d\\x03\\x02\\x03\\x1f\\x03\\x02\\x00\\x03\\x03\\x02\\x00\\x0d\\x03\" +\n\t\"\\x02\\x00\\x01\\x03\\x02\\x00\\x1b\\x03\\x02\\x00\\x19\\x03\\x02\\x00\\x18\\x03\\x02\\x00\" +\n\t\"\\x13\\x03\\x02\\x00/\\x03\\x07>\\x12\\x03\\x07<\\x1f\\x03\\x07>\\x1d\\x03\\x06\\x1d\\x0e\" +\n\t\"\\x03\\x07>\\x1c\\x03\\x07>:\\x03\\x07>\\x13\\x03\\x04\\x12+\\x03\\x07?\\x03\\x03\\x07>\" +\n\t\"\\x02\\x03\\x06\\x224\\x03\\x06\\x1a.\\x03\\x07<%\\x03\\x06\\x1c\\x0b\\x03\\x0609\\x03\" +\n\t\"\\x05\\x1f\\x01\\x03\\x04'\\x08\\x03\\x93\\xfd\\xf5\\x03\\x02\\x0d \\x03\\x02\\x0d#\\x03\" +\n\t\"\\x02\\x0d!\\x03\\x02\\x0d&\\x03\\x02\\x0d\\x22\\x03\\x02\\x0d/\\x03\\x02\\x0d,\\x03\\x02\" +\n\t\"\\x0d$\\x03\\x02\\x0d'\\x03\\x02\\x0d%\\x03\\x02\\x0d;\\x03\\x02\\x0d=\\x03\\x02\\x0d?\" +\n\t\"\\x03\\x099.\\x03\\x08\\x0b7\\x03\\x08\\x02\\x14\\x03\\x08\\x14\\x0d\\x03\\x08.:\\x03\" +\n\t\"\\x089'\\x03\\x0f\\x0b\\x18\\x03\\x0f\\x1c1\\x03\\x0f\\x17&\\x03\\x0f9\\x1f\\x03\\x0f0\" +\n\t\"\\x0c\\x03\\x0e\\x0a9\\x03\\x0e\\x056\\x03\\x0e\\x1c#\\x03\\x0f\\x13\\x0e\\x03\\x072\\x00\" +\n\t\"\\x03\\x070\\x0d\\x03\\x072\\x0b\\x03\\x06\\x11\\x18\\x03\\x070\\x10\\x03\\x06\\x0f(\\x03\" +\n\t\"\\x072\\x05\\x03\\x06\\x0f,\\x03\\x073\\x15\\x03\\x06\\x07\\x08\\x03\\x05\\x16\\x02\\x03\" +\n\t\"\\x04\\x0b \\x03\\x05:8\\x03\\x05\\x16%\\x03\\x0a\\x0d\\x1f\\x03\\x06\\x16\\x10\\x03\\x05\" +\n\t\"\\x1d5\\x03\\x05*;\\x03\\x05\\x16\\x1b\\x03\\x04.-\\x03\\x06\\x1a\\x19\\x03\\x04\\x03,\" +\n\t\"\\x03\\x0b87\\x03\\x04/\\x0a\\x03\\x06\\x00,\\x03\\x04-\\x01\\x03\\x04\\x1e-\\x03\\x06/(\" +\n\t\"\\x03\\x0a\\x0b5\\x03\\x06\\x0e7\\x03\\x06\\x07.\\x03\\x0597\\x03\\x0a*%\\x03\\x0760\" +\n\t\"\\x03\\x06\\x0c;\\x03\\x05'\\x00\\x03\\x072.\\x03\\x072\\x08\\x03\\x06=\\x01\\x03\\x06\" +\n\t\"\\x05\\x1b\\x03\\x06\\x06\\x12\\x03\\x06$=\\x03\\x06'\\x0d\\x03\\x04\\x11\\x0f\\x03\\x076\" +\n\t\",\\x03\\x06\\x07;\\x03\\x06.,\\x03\\x86\\xf9\\xea\\x03\\x8f\\xff\\xeb\\x02\\x092\\x02\" +\n\t\"\\x095\\x02\\x094\\x02\\x09;\\x02\\x09>\\x02\\x098\\x02\\x09*\\x02\\x09/\\x02\\x09,\\x02\" +\n\t\"\\x09%\\x02\\x09&\\x02\\x09#\\x02\\x09 \\x02\\x08!\\x02\\x08%\\x02\\x08$\\x02\\x08+\\x02\" +\n\t\"\\x08.\\x02\\x08*\\x02\\x08&\\x02\\x088\\x02\\x08>\\x02\\x084\\x02\\x086\\x02\\x080\\x02\" +\n\t\"\\x08\\x10\\x02\\x08\\x17\\x02\\x08\\x12\\x02\\x08\\x1d\\x02\\x08\\x1f\\x02\\x08\\x13\\x02\" +\n\t\"\\x08\\x15\\x02\\x08\\x14\\x02\\x08\\x0c\\x03\\x8b\\xfd\\xd0\\x03\\x81\\xec\\xc6\\x03\\x87\" +\n\t\"\\xe0\\x8a\\x03-2\\xe3\\x03\\x80\\xef\\xe4\\x03-2\\xea\\x03\\x88\\xe6\\xeb\\x03\\x8e\\xe6\" +\n\t\"\\xe8\\x03\\x84\\xe6\\xe9\\x03\\x97\\xe6\\xee\\x03-2\\xf9\\x03-2\\xf6\\x03\\x8e\\xe3\\xad\" +\n\t\"\\x03\\x80\\xe3\\x92\\x03\\x88\\xe3\\x90\\x03\\x8e\\xe3\\x90\\x03\\x80\\xe3\\x97\\x03\\x88\" +\n\t\"\\xe3\\x95\\x03\\x88\\xfe\\xcb\\x03\\x8e\\xfe\\xca\\x03\\x84\\xfe\\xcd\\x03\\x91\\xef\\xc9\" +\n\t\"\\x03-2\\xc1\\x03-2\\xc0\\x03-2\\xcb\\x03\\x88@\\x09\\x03\\x8e@\\x08\\x03\\x8f\\xe0\\xf5\" +\n\t\"\\x03\\x8e\\xe6\\xf9\\x03\\x8e\\xe0\\xfa\\x03\\x93\\xff\\xf4\\x03\\x84\\xee\\xd3\\x03\\x0b\" +\n\t\"(\\x04\\x023 \\x03\\x0b)\\x08\\x021;\\x02\\x01*\\x03\\x0b#\\x10\\x03\\x0b 0\\x03\\x0b!\" +\n\t\"\\x10\\x03\\x0b!0\\x03\\x07\\x15\\x08\\x03\\x09?5\\x03\\x07\\x1f\\x08\\x03\\x07\\x17\\x0b\" +\n\t\"\\x03\\x09\\x1f\\x15\\x03\\x0b\\x1c7\\x03\\x0a+#\\x03\\x06\\x1a\\x1b\\x03\\x06\\x1a\\x14\" +\n\t\"\\x03\\x0a\\x01\\x18\\x03\\x06#\\x1b\\x03\\x0a2\\x0c\\x03\\x0a\\x01\\x04\\x03\\x09#;\\x03\" +\n\t\"\\x08='\\x03\\x08\\x1a\\x0a\\x03\\x07</\\x03\\x07:+\\x03\\x07\\x07*\\x03\\x06&\\x1c\\x03\" +\n\t\"\\x09\\x0c\\x16\\x03\\x09\\x10\\x0e\\x03\\x08'\\x0f\\x03\\x08+\\x09\\x03\\x074%\\x03\\x06\" +\n\t\"!3\\x03\\x06\\x03+\\x03\\x0b\\x1e\\x19\\x03\\x0a))\\x03\\x09\\x08\\x19\\x03\\x08,\\x05\" +\n\t\"\\x03\\x07<2\\x03\\x06\\x1c>\\x03\\x0a\\x111\\x03\\x09\\x1b\\x09\\x03\\x073.\\x03\\x07\" +\n\t\"\\x01\\x00\\x03\\x09/,\\x03\\x07#>\\x03\\x07\\x048\\x03\\x0a\\x1f\\x22\\x03\\x098>\\x03\" +\n\t\"\\x09\\x11\\x00\\x03\\x08/\\x17\\x03\\x06'\\x22\\x03\\x0b\\x1a+\\x03\\x0a\\x22\\x19\\x03\" +\n\t\"\\x0a/1\\x03\\x0974\\x03\\x09\\x0f\\x22\\x03\\x08,\\x22\\x03\\x08?\\x14\\x03\\x07$5\\x03\" +\n\t\"\\x07<3\\x03\\x07=*\\x03\\x07\\x13\\x18\\x03\\x068\\x0a\\x03\\x06\\x09\\x16\\x03\\x06\" +\n\t\"\\x13\\x00\\x03\\x08\\x067\\x03\\x08\\x01\\x03\\x03\\x08\\x12\\x1d\\x03\\x07+7\\x03\\x06(\" +\n\t\";\\x03\\x06\\x1c?\\x03\\x07\\x0e\\x17\\x03\\x0a\\x06\\x1d\\x03\\x0a\\x19\\x07\\x03\\x08\" +\n\t\"\\x14$\\x03\\x07$;\\x03\\x08,$\\x03\\x08\\x06\\x0d\\x03\\x07\\x16\\x0a\\x03\\x06>>\\x03\" +\n\t\"\\x0a\\x06\\x12\\x03\\x0a\\x14)\\x03\\x09\\x0d\\x1f\\x03\\x09\\x12\\x17\\x03\\x09\\x19\" +\n\t\"\\x01\\x03\\x08\\x11 \\x03\\x08\\x1d'\\x03\\x06<\\x1a\\x03\\x0a.\\x00\\x03\\x07'\\x18\" +\n\t\"\\x03\\x0a\\x22\\x08\\x03\\x08\\x0d\\x0a\\x03\\x08\\x13)\\x03\\x07*)\\x03\\x06<,\\x03\" +\n\t\"\\x07\\x0b\\x1a\\x03\\x09.\\x14\\x03\\x09\\x0d\\x1e\\x03\\x07\\x0e#\\x03\\x0b\\x1d'\\x03\" +\n\t\"\\x0a\\x0a8\\x03\\x09%2\\x03\\x08+&\\x03\\x080\\x12\\x03\\x0a)4\\x03\\x08\\x06\\x1f\\x03\" +\n\t\"\\x0b\\x1b\\x1a\\x03\\x0a\\x1b\\x0f\\x03\\x0b\\x1d*\\x03\\x09\\x16$\\x03\\x090\\x11\\x03\" +\n\t\"\\x08\\x11\\x08\\x03\\x0a*(\\x03\\x0a\\x042\\x03\\x089,\\x03\\x074'\\x03\\x07\\x0f\\x05\" +\n\t\"\\x03\\x09\\x0b\\x0a\\x03\\x07\\x1b\\x01\\x03\\x09\\x17:\\x03\\x09.\\x0d\\x03\\x07.\\x11\" +\n\t\"\\x03\\x09+\\x15\\x03\\x080\\x13\\x03\\x0b\\x1f\\x19\\x03\\x0a \\x11\\x03\\x0a\\x220\\x03\" +\n\t\"\\x09\\x07;\\x03\\x08\\x16\\x1c\\x03\\x07,\\x13\\x03\\x07\\x0e/\\x03\\x06\\x221\\x03\\x0a\" +\n\t\".\\x0a\\x03\\x0a7\\x02\\x03\\x0a\\x032\\x03\\x0a\\x1d.\\x03\\x091\\x06\\x03\\x09\\x19:\" +\n\t\"\\x03\\x08\\x02/\\x03\\x060+\\x03\\x06\\x0f-\\x03\\x06\\x1c\\x1f\\x03\\x06\\x1d\\x07\\x03\" +\n\t\"\\x0a,\\x11\\x03\\x09=\\x0d\\x03\\x09\\x0b;\\x03\\x07\\x1b/\\x03\\x0a\\x1f:\\x03\\x09 \" +\n\t\"\\x1f\\x03\\x09.\\x10\\x03\\x094\\x0b\\x03\\x09\\x1a1\\x03\\x08#\\x1a\\x03\\x084\\x1d\" +\n\t\"\\x03\\x08\\x01\\x1f\\x03\\x08\\x11\\x22\\x03\\x07'8\\x03\\x07\\x1a>\\x03\\x0757\\x03\" +\n\t\"\\x06&9\\x03\\x06+\\x11\\x03\\x0a.\\x0b\\x03\\x0a,>\\x03\\x0a4#\\x03\\x08%\\x17\\x03\" +\n\t\"\\x07\\x05\\x22\\x03\\x07\\x0c\\x0b\\x03\\x0a\\x1d+\\x03\\x0a\\x19\\x16\\x03\\x09+\\x1f\" +\n\t\"\\x03\\x09\\x08\\x0b\\x03\\x08\\x16\\x18\\x03\\x08+\\x12\\x03\\x0b\\x1d\\x0c\\x03\\x0a=\" +\n\t\"\\x10\\x03\\x0a\\x09\\x0d\\x03\\x0a\\x10\\x11\\x03\\x09&0\\x03\\x08(\\x1f\\x03\\x087\\x07\" +\n\t\"\\x03\\x08\\x185\\x03\\x07'6\\x03\\x06.\\x05\\x03\\x06=\\x04\\x03\\x06;;\\x03\\x06\\x06,\" +\n\t\"\\x03\\x0b\\x18>\\x03\\x08\\x00\\x18\\x03\\x06 \\x03\\x03\\x06<\\x00\\x03\\x09%\\x18\\x03\" +\n\t\"\\x0b\\x1c<\\x03\\x0a%!\\x03\\x0a\\x09\\x12\\x03\\x0a\\x16\\x02\\x03\\x090'\\x03\\x09\" +\n\t\"\\x0e=\\x03\\x08 \\x0e\\x03\\x08>\\x03\\x03\\x074>\\x03\\x06&?\\x03\\x06\\x19\\x09\\x03\" +\n\t\"\\x06?(\\x03\\x0a-\\x0e\\x03\\x09:3\\x03\\x098:\\x03\\x09\\x12\\x0b\\x03\\x09\\x1d\\x17\" +\n\t\"\\x03\\x087\\x05\\x03\\x082\\x14\\x03\\x08\\x06%\\x03\\x08\\x13\\x1f\\x03\\x06\\x06\\x0e\" +\n\t\"\\x03\\x0a\\x22<\\x03\\x09/<\\x03\\x06>+\\x03\\x0a'?\\x03\\x0a\\x13\\x0c\\x03\\x09\\x10<\" +\n\t\"\\x03\\x07\\x1b=\\x03\\x0a\\x19\\x13\\x03\\x09\\x22\\x1d\\x03\\x09\\x07\\x0d\\x03\\x08)\" +\n\t\"\\x1c\\x03\\x06=\\x1a\\x03\\x0a/4\\x03\\x0a7\\x11\\x03\\x0a\\x16:\\x03\\x09?3\\x03\\x09:\" +\n\t\"/\\x03\\x09\\x05\\x0a\\x03\\x09\\x14\\x06\\x03\\x087\\x22\\x03\\x080\\x07\\x03\\x08\\x1a\" +\n\t\"\\x1f\\x03\\x07\\x04(\\x03\\x07\\x04\\x09\\x03\\x06 %\\x03\\x06<\\x08\\x03\\x0a+\\x14\" +\n\t\"\\x03\\x09\\x1d\\x16\\x03\\x0a70\\x03\\x08 >\\x03\\x0857\\x03\\x070\\x0a\\x03\\x06=\\x12\" +\n\t\"\\x03\\x06\\x16%\\x03\\x06\\x1d,\\x03\\x099#\\x03\\x09\\x10>\\x03\\x07 \\x1e\\x03\\x08\" +\n\t\"\\x0c<\\x03\\x08\\x0b\\x18\\x03\\x08\\x15+\\x03\\x08,:\\x03\\x08%\\x22\\x03\\x07\\x0a$\" +\n\t\"\\x03\\x0b\\x1c=\\x03\\x07+\\x08\\x03\\x0a/\\x05\\x03\\x0a \\x07\\x03\\x0a\\x12'\\x03\" +\n\t\"\\x09#\\x11\\x03\\x08\\x1b\\x15\\x03\\x0a\\x06\\x01\\x03\\x09\\x1c\\x1b\\x03\\x0922\\x03\" +\n\t\"\\x07\\x14<\\x03\\x07\\x09\\x04\\x03\\x061\\x04\\x03\\x07\\x0e\\x01\\x03\\x0a\\x13\\x18\" +\n\t\"\\x03\\x0a-\\x0c\\x03\\x0a?\\x0d\\x03\\x0a\\x09\\x0a\\x03\\x091&\\x03\\x0a/\\x0b\\x03\" +\n\t\"\\x08$<\\x03\\x083\\x1d\\x03\\x08\\x0c$\\x03\\x08\\x0d\\x07\\x03\\x08\\x0d?\\x03\\x08\" +\n\t\"\\x0e\\x14\\x03\\x065\\x0a\\x03\\x08\\x1a#\\x03\\x08\\x16#\\x03\\x0702\\x03\\x07\\x03\" +\n\t\"\\x1a\\x03\\x06(\\x1d\\x03\\x06+\\x1b\\x03\\x06\\x0b\\x05\\x03\\x06\\x0b\\x17\\x03\\x06\" +\n\t\"\\x0c\\x04\\x03\\x06\\x1e\\x19\\x03\\x06+0\\x03\\x062\\x18\\x03\\x0b\\x16\\x1e\\x03\\x0a+\" +\n\t\"\\x16\\x03\\x0a-?\\x03\\x0a#:\\x03\\x0a#\\x10\\x03\\x0a%$\\x03\\x0a>+\\x03\\x0a01\\x03\" +\n\t\"\\x0a1\\x10\\x03\\x0a\\x099\\x03\\x0a\\x0a\\x12\\x03\\x0a\\x19\\x1f\\x03\\x0a\\x19\\x12\" +\n\t\"\\x03\\x09*)\\x03\\x09-\\x16\\x03\\x09.1\\x03\\x09.2\\x03\\x09<\\x0e\\x03\\x09> \\x03\" +\n\t\"\\x093\\x12\\x03\\x09\\x0b\\x01\\x03\\x09\\x1c2\\x03\\x09\\x11\\x1c\\x03\\x09\\x15%\\x03\" +\n\t\"\\x08,&\\x03\\x08!\\x22\\x03\\x089(\\x03\\x08\\x0b\\x1a\\x03\\x08\\x0d2\\x03\\x08\\x0c\" +\n\t\"\\x04\\x03\\x08\\x0c\\x06\\x03\\x08\\x0c\\x1f\\x03\\x08\\x0c\\x0c\\x03\\x08\\x0f\\x1f\\x03\" +\n\t\"\\x08\\x0f\\x1d\\x03\\x08\\x00\\x14\\x03\\x08\\x03\\x14\\x03\\x08\\x06\\x16\\x03\\x08\\x1e\" +\n\t\"#\\x03\\x08\\x11\\x11\\x03\\x08\\x10\\x18\\x03\\x08\\x14(\\x03\\x07)\\x1e\\x03\\x07.1\" +\n\t\"\\x03\\x07 $\\x03\\x07 '\\x03\\x078\\x08\\x03\\x07\\x0d0\\x03\\x07\\x0f7\\x03\\x07\\x05#\" +\n\t\"\\x03\\x07\\x05\\x1a\\x03\\x07\\x1a7\\x03\\x07\\x1d-\\x03\\x07\\x17\\x10\\x03\\x06)\\x1f\" +\n\t\"\\x03\\x062\\x0b\\x03\\x066\\x16\\x03\\x06\\x09\\x11\\x03\\x09(\\x1e\\x03\\x07!5\\x03\" +\n\t\"\\x0b\\x11\\x16\\x03\\x0a/\\x04\\x03\\x0a,\\x1a\\x03\\x0b\\x173\\x03\\x0a,1\\x03\\x0a/5\" +\n\t\"\\x03\\x0a\\x221\\x03\\x0a\\x22\\x0d\\x03\\x0a?%\\x03\\x0a<,\\x03\\x0a?#\\x03\\x0a>\\x19\" +\n\t\"\\x03\\x0a\\x08&\\x03\\x0a\\x0b\\x0e\\x03\\x0a\\x0c:\\x03\\x0a\\x0c+\\x03\\x0a\\x03\\x22\" +\n\t\"\\x03\\x0a\\x06)\\x03\\x0a\\x11\\x10\\x03\\x0a\\x11\\x1a\\x03\\x0a\\x17-\\x03\\x0a\\x14(\" +\n\t\"\\x03\\x09)\\x1e\\x03\\x09/\\x09\\x03\\x09.\\x00\\x03\\x09,\\x07\\x03\\x09/*\\x03\\x09-9\" +\n\t\"\\x03\\x09\\x228\\x03\\x09%\\x09\\x03\\x09:\\x12\\x03\\x09;\\x1d\\x03\\x09?\\x06\\x03\" +\n\t\"\\x093%\\x03\\x096\\x05\\x03\\x096\\x08\\x03\\x097\\x02\\x03\\x09\\x07,\\x03\\x09\\x04,\" +\n\t\"\\x03\\x09\\x1f\\x16\\x03\\x09\\x11\\x03\\x03\\x09\\x11\\x12\\x03\\x09\\x168\\x03\\x08*\" +\n\t\"\\x05\\x03\\x08/2\\x03\\x084:\\x03\\x08\\x22+\\x03\\x08 0\\x03\\x08&\\x0a\\x03\\x08;\" +\n\t\"\\x10\\x03\\x08>$\\x03\\x08>\\x18\\x03\\x0829\\x03\\x082:\\x03\\x081,\\x03\\x081<\\x03\" +\n\t\"\\x081\\x1c\\x03\\x087#\\x03\\x087*\\x03\\x08\\x09'\\x03\\x08\\x00\\x1d\\x03\\x08\\x05-\" +\n\t\"\\x03\\x08\\x1f4\\x03\\x08\\x1d\\x04\\x03\\x08\\x16\\x0f\\x03\\x07*7\\x03\\x07'!\\x03\" +\n\t\"\\x07%\\x1b\\x03\\x077\\x0c\\x03\\x07\\x0c1\\x03\\x07\\x0c.\\x03\\x07\\x00\\x06\\x03\\x07\" +\n\t\"\\x01\\x02\\x03\\x07\\x010\\x03\\x07\\x06=\\x03\\x07\\x01\\x03\\x03\\x07\\x01\\x13\\x03\" +\n\t\"\\x07\\x06\\x06\\x03\\x07\\x05\\x0a\\x03\\x07\\x1f\\x09\\x03\\x07\\x17:\\x03\\x06*1\\x03\" +\n\t\"\\x06-\\x1d\\x03\\x06\\x223\\x03\\x062:\\x03\\x060$\\x03\\x066\\x1e\\x03\\x064\\x12\\x03\" +\n\t\"\\x0645\\x03\\x06\\x0b\\x00\\x03\\x06\\x0b7\\x03\\x06\\x07\\x1f\\x03\\x06\\x15\\x12\\x03\" +\n\t\"\\x0c\\x05\\x0f\\x03\\x0b+\\x0b\\x03\\x0b+-\\x03\\x06\\x16\\x1b\\x03\\x06\\x15\\x17\\x03\" +\n\t\"\\x89\\xca\\xea\\x03\\x89\\xca\\xe8\\x03\\x0c8\\x10\\x03\\x0c8\\x01\\x03\\x0c8\\x0f\\x03\" +\n\t\"\\x0d8%\\x03\\x0d8!\\x03\\x0c8-\\x03\\x0c8/\\x03\\x0c8+\\x03\\x0c87\\x03\\x0c85\\x03\" +\n\t\"\\x0c9\\x09\\x03\\x0c9\\x0d\\x03\\x0c9\\x0f\\x03\\x0c9\\x0b\\x03\\xcfu\\x0c\\x03\\xcfu\" +\n\t\"\\x0f\\x03\\xcfu\\x0e\\x03\\xcfu\\x09\\x03\\x0c9\\x10\\x03\\x0d9\\x0c\\x03\\xcf`;\\x03\" +\n\t\"\\xcf`>\\x03\\xcf`9\\x03\\xcf`8\\x03\\xcf`7\\x03\\xcf`*\\x03\\xcf`-\\x03\\xcf`,\\x03\" +\n\t\"\\x0d\\x1b\\x1a\\x03\\x0d\\x1b&\\x03\\x0c=.\\x03\\x0c=%\\x03\\x0c>\\x1e\\x03\\x0c>\\x14\" +\n\t\"\\x03\\x0c?\\x06\\x03\\x0c?\\x0b\\x03\\x0c?\\x0c\\x03\\x0c?\\x0d\\x03\\x0c?\\x02\\x03\" +\n\t\"\\x0c>\\x0f\\x03\\x0c>\\x08\\x03\\x0c>\\x09\\x03\\x0c>,\\x03\\x0c>\\x0c\\x03\\x0c?\\x13\" +\n\t\"\\x03\\x0c?\\x16\\x03\\x0c?\\x15\\x03\\x0c?\\x1c\\x03\\x0c?\\x1f\\x03\\x0c?\\x1d\\x03\" +\n\t\"\\x0c?\\x1a\\x03\\x0c?\\x17\\x03\\x0c?\\x08\\x03\\x0c?\\x09\\x03\\x0c?\\x0e\\x03\\x0c?\" +\n\t\"\\x04\\x03\\x0c?\\x05\\x03\\x0c<?\\x03\\x0c=\\x00\\x03\\x0c=\\x06\\x03\\x0c=\\x05\\x03\" +\n\t\"\\x0c=\\x0c\\x03\\x0c=\\x0f\\x03\\x0c=\\x0d\\x03\\x0c=\\x0b\\x03\\x0c=\\x07\\x03\\x0c=\" +\n\t\"\\x19\\x03\\x0c=\\x15\\x03\\x0c=\\x11\\x03\\x0c=1\\x03\\x0c=3\\x03\\x0c=0\\x03\\x0c=>\" +\n\t\"\\x03\\x0c=2\\x03\\x0c=6\\x03\\x0c<\\x07\\x03\\x0c<\\x05\\x03\\x0e:!\\x03\\x0e:#\\x03\" +\n\t\"\\x0e8\\x09\\x03\\x0e:&\\x03\\x0e8\\x0b\\x03\\x0e:$\\x03\\x0e:,\\x03\\x0e8\\x1a\\x03\" +\n\t\"\\x0e8\\x1e\\x03\\x0e:*\\x03\\x0e:7\\x03\\x0e:5\\x03\\x0e:;\\x03\\x0e:\\x15\\x03\\x0e:<\" +\n\t\"\\x03\\x0e:4\\x03\\x0e:'\\x03\\x0e:-\\x03\\x0e:%\\x03\\x0e:?\\x03\\x0e:=\\x03\\x0e:)\" +\n\t\"\\x03\\x0e:/\\x03\\xcfs'\\x03\\x0d=\\x0f\\x03\\x0d+*\\x03\\x0d99\\x03\\x0d9;\\x03\\x0d9\" +\n\t\"?\\x03\\x0d)\\x0d\\x03\\x0d(%\\x02\\x01\\x18\\x02\\x01(\\x02\\x01\\x1e\\x03\\x0f$!\\x03\" +\n\t\"\\x0f87\\x03\\x0f4\\x0e\\x03\\x0f5\\x1d\\x03\\x06'\\x03\\x03\\x0f\\x08\\x18\\x03\\x0f\" +\n\t\"\\x0d\\x1b\\x03\\x0e2=\\x03\\x0e;\\x08\\x03\\x0e:\\x0b\\x03\\x0e\\x06$\\x03\\x0e\\x0d)\" +\n\t\"\\x03\\x0e\\x16\\x1f\\x03\\x0e\\x16\\x1b\\x03\\x0d$\\x0a\\x03\\x05,\\x1d\\x03\\x0d. \\x03\" +\n\t\"\\x0d.#\\x03\\x0c(/\\x03\\x09%\\x02\\x03\\x0d90\\x03\\x0d\\x0e4\\x03\\x0d\\x0d\\x0f\\x03\" +\n\t\"\\x0c#\\x00\\x03\\x0c,\\x1e\\x03\\x0c2\\x0e\\x03\\x0c\\x01\\x17\\x03\\x0c\\x09:\\x03\\x0e\" +\n\t\"\\x173\\x03\\x0c\\x08\\x03\\x03\\x0c\\x11\\x07\\x03\\x0c\\x10\\x18\\x03\\x0c\\x1f\\x1c\" +\n\t\"\\x03\\x0c\\x19\\x0e\\x03\\x0c\\x1a\\x1f\\x03\\x0f0>\\x03\\x0b->\\x03\\x0b<+\\x03\\x0b8\" +\n\t\"\\x13\\x03\\x0b\\x043\\x03\\x0b\\x14\\x03\\x03\\x0b\\x16%\\x03\\x0d\\x22&\\x03\\x0b\\x1a\" +\n\t\"\\x1a\\x03\\x0b\\x1a\\x04\\x03\\x0a%9\\x03\\x0a&2\\x03\\x0a&0\\x03\\x0a!\\x1a\\x03\\x0a!\" +\n\t\"7\\x03\\x0a5\\x10\\x03\\x0a=4\\x03\\x0a?\\x0e\\x03\\x0a>\\x10\\x03\\x0a\\x00 \\x03\\x0a\" +\n\t\"\\x0f:\\x03\\x0a\\x0f9\\x03\\x0a\\x0b\\x0a\\x03\\x0a\\x17%\\x03\\x0a\\x1b-\\x03\\x09-\" +\n\t\"\\x1a\\x03\\x09,4\\x03\\x09.,\\x03\\x09)\\x09\\x03\\x096!\\x03\\x091\\x1f\\x03\\x093\" +\n\t\"\\x16\\x03\\x0c+\\x1f\\x03\\x098 \\x03\\x098=\\x03\\x0c(\\x1a\\x03\\x0c(\\x16\\x03\\x09\" +\n\t\"\\x0a+\\x03\\x09\\x16\\x12\\x03\\x09\\x13\\x0e\\x03\\x09\\x153\\x03\\x08)!\\x03\\x09\\x1a\" +\n\t\"\\x01\\x03\\x09\\x18\\x01\\x03\\x08%#\\x03\\x08>\\x22\\x03\\x08\\x05%\\x03\\x08\\x02*\" +\n\t\"\\x03\\x08\\x15;\\x03\\x08\\x1b7\\x03\\x0f\\x07\\x1d\\x03\\x0f\\x04\\x03\\x03\\x070\\x0c\" +\n\t\"\\x03\\x07;\\x0b\\x03\\x07\\x08\\x17\\x03\\x07\\x12\\x06\\x03\\x06/-\\x03\\x0671\\x03\" +\n\t\"\\x065+\\x03\\x06>7\\x03\\x06\\x049\\x03\\x05+\\x1e\\x03\\x05,\\x17\\x03\\x05 \\x1d\\x03\" +\n\t\"\\x05\\x22\\x05\\x03\\x050\\x1d\"\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// idnaTrie. Total size: 30196 bytes (29.49 KiB). Checksum: e2ae95a945f04016.\ntype idnaTrie struct{}\n\nfunc newIdnaTrie(i int) *idnaTrie {\n\treturn &idnaTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 126:\n\t\treturn uint16(idnaValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 126\n\t\treturn uint16(idnaSparse.lookup(n, b))\n\t}\n}\n\n// idnaValues: 128 blocks, 8192 entries, 16384 bytes\n// The third block is the zero block.\nvar idnaValues = [8192]uint16{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,\n\t0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,\n\t0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,\n\t0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,\n\t0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,\n\t0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,\n\t0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,\n\t0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,\n\t0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,\n\t0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,\n\t0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,\n\t0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,\n\t0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,\n\t0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,\n\t0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,\n\t0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,\n\t0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,\n\t0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,\n\t0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,\n\t0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,\n\t0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,\n\t0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,\n\t0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,\n\t0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,\n\t0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,\n\t0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,\n\t0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x0012, 0xe9: 0x0018,\n\t0xea: 0x0019, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x0022,\n\t0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0029, 0xf3: 0x0031, 0xf4: 0x003a, 0xf5: 0x0005,\n\t0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x0042, 0xf9: 0x0049, 0xfa: 0x0051, 0xfb: 0x0018,\n\t0xfc: 0x0059, 0xfd: 0x0061, 0xfe: 0x0069, 0xff: 0x0018,\n\t// Block 0x4, offset 0x100\n\t0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,\n\t0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,\n\t0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,\n\t0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,\n\t0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,\n\t0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,\n\t0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,\n\t0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,\n\t0x130: 0x0071, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,\n\t0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,\n\t0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0079,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x0079, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,\n\t0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x0081, 0x14a: 0xe00d, 0x14b: 0x0008,\n\t0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,\n\t0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,\n\t0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,\n\t0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,\n\t0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,\n\t0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,\n\t0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,\n\t0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,\n\t0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x0089,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,\n\t0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,\n\t0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,\n\t0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,\n\t0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,\n\t0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,\n\t0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,\n\t0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,\n\t0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,\n\t0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,\n\t0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x0091, 0x1c5: 0x0091,\n\t0x1c6: 0x0091, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,\n\t0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,\n\t0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,\n\t0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,\n\t0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,\n\t0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,\n\t0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,\n\t0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,\n\t0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,\n\t0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,\n\t0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,\n\t0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,\n\t0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,\n\t0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,\n\t0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,\n\t0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,\n\t0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,\n\t0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,\n\t0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0099, 0x23b: 0xe03d,\n\t0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x00a1, 0x23f: 0x0008,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,\n\t0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,\n\t0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,\n\t0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,\n\t0x258: 0x00d2, 0x259: 0x00da, 0x25a: 0x00e2, 0x25b: 0x00ea, 0x25c: 0x00f2, 0x25d: 0x00fa,\n\t0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0101, 0x262: 0x0089, 0x263: 0x0109,\n\t0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,\n\t0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,\n\t0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,\n\t0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,\n\t0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0111, 0x285: 0x040d,\n\t0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,\n\t0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,\n\t0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,\n\t0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,\n\t0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,\n\t0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,\n\t0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,\n\t0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,\n\t0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x011a, 0x2bb: 0x0008,\n\t0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x0122, 0x2bf: 0x043d,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x003a, 0x2c5: 0x012a,\n\t0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,\n\t0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,\n\t0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,\n\t0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,\n\t0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,\n\t0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,\n\t0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,\n\t0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,\n\t0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,\n\t0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,\n\t0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,\n\t0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,\n\t0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,\n\t0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,\n\t0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,\n\t0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,\n\t0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,\n\t0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,\n\t0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,\n\t0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,\n\t0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,\n\t0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,\n\t0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,\n\t0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,\n\t0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,\n\t0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,\n\t0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,\n\t0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,\n\t0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,\n\t0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,\n\t0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,\n\t0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,\n\t0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,\n\t0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,\n\t0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,\n\t0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,\n\t0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,\n\t0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,\n\t0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,\n\t0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,\n\t0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,\n\t0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,\n\t0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,\n\t0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,\n\t0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,\n\t0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,\n\t0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,\n\t0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,\n\t0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,\n\t0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,\n\t0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,\n\t0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,\n\t0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,\n\t0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,\n\t0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,\n\t0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,\n\t0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,\n\t0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,\n\t0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,\n\t0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,\n\t0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,\n\t0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,\n\t0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,\n\t0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040,\n\t0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,\n\t0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,\n\t0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,\n\t0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,\n\t0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,\n\t0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,\n\t0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,\n\t0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,\n\t0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,\n\t0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,\n\t0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,\n\t0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,\n\t0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,\n\t0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0139,\n\t0x4b6: 0x0141, 0x4b7: 0x0149, 0x4b8: 0x0151, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,\n\t0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,\n\t0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,\n\t0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,\n\t0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,\n\t0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,\n\t0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,\n\t0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,\n\t0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,\n\t0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,\n\t0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,\n\t0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,\n\t0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,\n\t0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,\n\t0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,\n\t0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,\n\t0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,\n\t0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,\n\t0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,\n\t0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,\n\t0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,\n\t0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08,\n\t0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08,\n\t0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08,\n\t0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0c08, 0x557: 0x0c08,\n\t0x558: 0x0c08, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040,\n\t0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08,\n\t0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08,\n\t0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040,\n\t0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040,\n\t0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040,\n\t0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308,\n\t0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008,\n\t0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308,\n\t0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308,\n\t0x598: 0x0159, 0x599: 0x0161, 0x59a: 0x0169, 0x59b: 0x0171, 0x59c: 0x0179, 0x59d: 0x0181,\n\t0x59e: 0x0189, 0x59f: 0x0191, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308,\n\t0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008,\n\t0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008,\n\t0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008,\n\t0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008,\n\t0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008,\n\t0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008,\n\t0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040,\n\t0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008,\n\t0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008,\n\t0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008,\n\t0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040,\n\t0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,\n\t0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040,\n\t0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040,\n\t0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040,\n\t0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008,\n\t0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040,\n\t0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008,\n\t0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0199, 0x61d: 0x01a1,\n\t0x61e: 0x0040, 0x61f: 0x01a9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308,\n\t0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008,\n\t0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,\n\t0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018,\n\t0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018,\n\t0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x3308, 0x63f: 0x0040,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008,\n\t0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040,\n\t0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040,\n\t0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008,\n\t0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008,\n\t0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008,\n\t0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040,\n\t0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,\n\t0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x01b1, 0x674: 0x0040, 0x675: 0x0008,\n\t0x676: 0x01b9, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040,\n\t0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040,\n\t0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308,\n\t0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308,\n\t0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040,\n\t0x698: 0x0040, 0x699: 0x01c1, 0x69a: 0x01c9, 0x69b: 0x01d1, 0x69c: 0x0008, 0x69d: 0x0040,\n\t0x69e: 0x01d9, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040,\n\t0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008,\n\t0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,\n\t0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308,\n\t0x6b6: 0x0018, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040,\n\t0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008,\n\t0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008,\n\t0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008,\n\t0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008,\n\t0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008,\n\t0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008,\n\t0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040,\n\t0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,\n\t0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008,\n\t0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040,\n\t0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308,\n\t0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008,\n\t0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040,\n\t0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040,\n\t0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040,\n\t0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308,\n\t0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008,\n\t0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,\n\t0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040,\n\t0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308,\n\t0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008,\n\t0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008,\n\t0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040,\n\t0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008,\n\t0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008,\n\t0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008,\n\t0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040,\n\t0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,\n\t0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008,\n\t0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040,\n\t0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040,\n\t0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008,\n\t0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040,\n\t0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x3308, 0x796: 0x3308, 0x797: 0x3008,\n\t0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x01e1, 0x79d: 0x01e9,\n\t0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308,\n\t0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008,\n\t0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008,\n\t0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018,\n\t0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040,\n\t0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008,\n\t0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040,\n\t0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040,\n\t0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040,\n\t0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040,\n\t0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008,\n\t0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008,\n\t0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008,\n\t0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008,\n\t0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040,\n\t0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040,\n\t0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308,\n\t0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040,\n\t0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040,\n\t0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040,\n\t0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308,\n\t0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008,\n\t0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008,\n\t0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040,\n\t0x836: 0x0040, 0x837: 0x0018, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018,\n\t0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0018, 0x845: 0x0008,\n\t0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008,\n\t0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040,\n\t0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008,\n\t0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008,\n\t0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008,\n\t0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040,\n\t0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,\n\t0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008,\n\t0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040,\n\t0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040,\n\t0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008,\n\t0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040,\n\t0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040,\n\t0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040,\n\t0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308,\n\t0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008,\n\t0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,\n\t0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040,\n\t0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040,\n\t0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040,\n\t0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008,\n\t0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040,\n\t0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008,\n\t0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018,\n\t0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308,\n\t0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008,\n\t0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,\n\t0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018,\n\t0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008,\n\t0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040,\n\t0x906: 0x0008, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0040,\n\t0x90c: 0x0008, 0x90d: 0x0008, 0x90e: 0x0008, 0x90f: 0x0008, 0x910: 0x0008, 0x911: 0x0008,\n\t0x912: 0x0008, 0x913: 0x0008, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008,\n\t0x918: 0x0008, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008,\n\t0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008,\n\t0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0008,\n\t0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008,\n\t0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x01f9, 0x934: 0x3308, 0x935: 0x3308,\n\t0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x3b08, 0x93b: 0x3308,\n\t0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x0211, 0x944: 0x0008, 0x945: 0x0008,\n\t0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008,\n\t0x94c: 0x0008, 0x94d: 0x0219, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008,\n\t0x952: 0x0221, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0229,\n\t0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0231, 0x95d: 0x0008,\n\t0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008,\n\t0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0239,\n\t0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040,\n\t0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0241, 0x974: 0x3308, 0x975: 0x0249,\n\t0x976: 0x0251, 0x977: 0x0259, 0x978: 0x0261, 0x979: 0x0269, 0x97a: 0x3308, 0x97b: 0x3308,\n\t0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x3308, 0x981: 0x0271, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018,\n\t0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,\n\t0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308,\n\t0x992: 0x3308, 0x993: 0x0279, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308,\n\t0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0281,\n\t0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0289, 0x9a3: 0x3308,\n\t0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0291, 0x9a8: 0x3308, 0x9a9: 0x3308,\n\t0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0299, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308,\n\t0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308,\n\t0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x02a1, 0x9ba: 0x3308, 0x9bb: 0x3308,\n\t0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008,\n\t0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008,\n\t0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008,\n\t0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008,\n\t0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008,\n\t0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008,\n\t0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008,\n\t0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0019, 0x9ed: 0x02e1, 0x9ee: 0x02e9, 0x9ef: 0x0008,\n\t0x9f0: 0x02f1, 0x9f1: 0x02f9, 0x9f2: 0x0301, 0x9f3: 0x0309, 0x9f4: 0x00a9, 0x9f5: 0x0311,\n\t0x9f6: 0x00b1, 0x9f7: 0x0319, 0x9f8: 0x0101, 0x9f9: 0x0321, 0x9fa: 0x0329, 0x9fb: 0x0008,\n\t0x9fc: 0x0051, 0x9fd: 0x0331, 0x9fe: 0x0339, 0x9ff: 0x00b9,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0341, 0xa01: 0x0349, 0xa02: 0x00c1, 0xa03: 0x0019, 0xa04: 0x0351, 0xa05: 0x0359,\n\t0xa06: 0x05b5, 0xa07: 0x02e9, 0xa08: 0x02f1, 0xa09: 0x02f9, 0xa0a: 0x0361, 0xa0b: 0x0369,\n\t0xa0c: 0x0371, 0xa0d: 0x0309, 0xa0e: 0x0008, 0xa0f: 0x0319, 0xa10: 0x0321, 0xa11: 0x0379,\n\t0xa12: 0x0051, 0xa13: 0x0381, 0xa14: 0x05cd, 0xa15: 0x05cd, 0xa16: 0x0339, 0xa17: 0x0341,\n\t0xa18: 0x0349, 0xa19: 0x05b5, 0xa1a: 0x0389, 0xa1b: 0x0391, 0xa1c: 0x05e5, 0xa1d: 0x0399,\n\t0xa1e: 0x03a1, 0xa1f: 0x03a9, 0xa20: 0x03b1, 0xa21: 0x03b9, 0xa22: 0x0311, 0xa23: 0x00b9,\n\t0xa24: 0x0349, 0xa25: 0x0391, 0xa26: 0x0399, 0xa27: 0x03a1, 0xa28: 0x03c1, 0xa29: 0x03b1,\n\t0xa2a: 0x03b9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008,\n\t0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008,\n\t0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x03c9, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008,\n\t0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008,\n\t0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008,\n\t0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008,\n\t0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008,\n\t0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x03d1, 0xa5c: 0x03d9, 0xa5d: 0x03e1,\n\t0xa5e: 0x03e9, 0xa5f: 0x0371, 0xa60: 0x03f1, 0xa61: 0x03f9, 0xa62: 0x0401, 0xa63: 0x0409,\n\t0xa64: 0x0411, 0xa65: 0x0419, 0xa66: 0x0421, 0xa67: 0x05fd, 0xa68: 0x0429, 0xa69: 0x0431,\n\t0xa6a: 0xe17d, 0xa6b: 0x0439, 0xa6c: 0x0441, 0xa6d: 0x0449, 0xa6e: 0x0451, 0xa6f: 0x0459,\n\t0xa70: 0x0461, 0xa71: 0x0469, 0xa72: 0x0471, 0xa73: 0x0479, 0xa74: 0x0481, 0xa75: 0x0489,\n\t0xa76: 0x0491, 0xa77: 0x0499, 0xa78: 0x0615, 0xa79: 0x04a1, 0xa7a: 0x04a9, 0xa7b: 0x04b1,\n\t0xa7c: 0x04b9, 0xa7d: 0x04c1, 0xa7e: 0x04c9, 0xa7f: 0x04d1,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008,\n\t0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008,\n\t0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008,\n\t0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008,\n\t0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008,\n\t0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008,\n\t0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008,\n\t0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008,\n\t0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008,\n\t0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008,\n\t0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008,\n\t0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008,\n\t0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008,\n\t0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008,\n\t0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x062d, 0xadb: 0x064d, 0xadc: 0x0008, 0xadd: 0x0008,\n\t0xade: 0x04d9, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008,\n\t0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008,\n\t0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008,\n\t0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008,\n\t0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008,\n\t0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008,\n\t0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045,\n\t0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008,\n\t0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008,\n\t0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045,\n\t0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008,\n\t0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045,\n\t0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045,\n\t0xb30: 0x0008, 0xb31: 0x04e1, 0xb32: 0x0008, 0xb33: 0x04e9, 0xb34: 0x0008, 0xb35: 0x04f1,\n\t0xb36: 0x0008, 0xb37: 0x04f9, 0xb38: 0x0008, 0xb39: 0x0501, 0xb3a: 0x0008, 0xb3b: 0x0509,\n\t0xb3c: 0x0008, 0xb3d: 0x0511, 0xb3e: 0x0040, 0xb3f: 0x0040,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x0519, 0xb41: 0x0521, 0xb42: 0x0529, 0xb43: 0x0531, 0xb44: 0x0539, 0xb45: 0x0541,\n\t0xb46: 0x0549, 0xb47: 0x0551, 0xb48: 0x0519, 0xb49: 0x0521, 0xb4a: 0x0529, 0xb4b: 0x0531,\n\t0xb4c: 0x0539, 0xb4d: 0x0541, 0xb4e: 0x0549, 0xb4f: 0x0551, 0xb50: 0x0559, 0xb51: 0x0561,\n\t0xb52: 0x0569, 0xb53: 0x0571, 0xb54: 0x0579, 0xb55: 0x0581, 0xb56: 0x0589, 0xb57: 0x0591,\n\t0xb58: 0x0559, 0xb59: 0x0561, 0xb5a: 0x0569, 0xb5b: 0x0571, 0xb5c: 0x0579, 0xb5d: 0x0581,\n\t0xb5e: 0x0589, 0xb5f: 0x0591, 0xb60: 0x0599, 0xb61: 0x05a1, 0xb62: 0x05a9, 0xb63: 0x05b1,\n\t0xb64: 0x05b9, 0xb65: 0x05c1, 0xb66: 0x05c9, 0xb67: 0x05d1, 0xb68: 0x0599, 0xb69: 0x05a1,\n\t0xb6a: 0x05a9, 0xb6b: 0x05b1, 0xb6c: 0x05b9, 0xb6d: 0x05c1, 0xb6e: 0x05c9, 0xb6f: 0x05d1,\n\t0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x05d9, 0xb73: 0x05e1, 0xb74: 0x05e9, 0xb75: 0x0040,\n\t0xb76: 0x0008, 0xb77: 0x05f1, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x0665, 0xb7b: 0x04e1,\n\t0xb7c: 0x05e1, 0xb7d: 0x067e, 0xb7e: 0x05f9, 0xb7f: 0x069e,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x06be, 0xb81: 0x0602, 0xb82: 0x0609, 0xb83: 0x0611, 0xb84: 0x0619, 0xb85: 0x0040,\n\t0xb86: 0x0008, 0xb87: 0x0621, 0xb88: 0x06dd, 0xb89: 0x04e9, 0xb8a: 0x06f5, 0xb8b: 0x04f1,\n\t0xb8c: 0x0611, 0xb8d: 0x062a, 0xb8e: 0x0632, 0xb8f: 0x063a, 0xb90: 0x0008, 0xb91: 0x0008,\n\t0xb92: 0x0008, 0xb93: 0x0641, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008,\n\t0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x070d, 0xb9b: 0x04f9, 0xb9c: 0x0040, 0xb9d: 0x064a,\n\t0xb9e: 0x0652, 0xb9f: 0x065a, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x0661,\n\t0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045,\n\t0xbaa: 0x0725, 0xbab: 0x0509, 0xbac: 0xe04d, 0xbad: 0x066a, 0xbae: 0x012a, 0xbaf: 0x0672,\n\t0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x0679, 0xbb3: 0x0681, 0xbb4: 0x0689, 0xbb5: 0x0040,\n\t0xbb6: 0x0008, 0xbb7: 0x0691, 0xbb8: 0x073d, 0xbb9: 0x0501, 0xbba: 0x0515, 0xbbb: 0x0511,\n\t0xbbc: 0x0681, 0xbbd: 0x0756, 0xbbe: 0x0776, 0xbbf: 0x0040,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a,\n\t0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0,\n\t0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d,\n\t0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x0796,\n\t0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018,\n\t0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018,\n\t0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040,\n\t0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a,\n\t0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x0699, 0xbf4: 0x06a1, 0xbf5: 0x0018,\n\t0xbf6: 0x06a9, 0xbf7: 0x06b1, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018,\n\t0xbfc: 0x06ba, 0xbfd: 0x0018, 0xbfe: 0x07b6, 0xbff: 0x0018,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018,\n\t0xc06: 0x0018, 0xc07: 0x06c2, 0xc08: 0x06ca, 0xc09: 0x06d2, 0xc0a: 0x0018, 0xc0b: 0x0018,\n\t0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018,\n\t0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x06d9,\n\t0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018,\n\t0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340,\n\t0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040,\n\t0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340,\n\t0xc30: 0x06e1, 0xc31: 0x0311, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x06e9, 0xc35: 0x06f1,\n\t0xc36: 0x06f9, 0xc37: 0x0701, 0xc38: 0x0709, 0xc39: 0x0711, 0xc3a: 0x071a, 0xc3b: 0x07d5,\n\t0xc3c: 0x0722, 0xc3d: 0x072a, 0xc3e: 0x0732, 0xc3f: 0x0329,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x06e1, 0xc41: 0x0049, 0xc42: 0x0029, 0xc43: 0x0031, 0xc44: 0x06e9, 0xc45: 0x06f1,\n\t0xc46: 0x06f9, 0xc47: 0x0701, 0xc48: 0x0709, 0xc49: 0x0711, 0xc4a: 0x071a, 0xc4b: 0x07ed,\n\t0xc4c: 0x0722, 0xc4d: 0x072a, 0xc4e: 0x0732, 0xc4f: 0x0040, 0xc50: 0x0019, 0xc51: 0x02f9,\n\t0xc52: 0x0051, 0xc53: 0x0109, 0xc54: 0x0361, 0xc55: 0x00a9, 0xc56: 0x0319, 0xc57: 0x0101,\n\t0xc58: 0x0321, 0xc59: 0x0329, 0xc5a: 0x0339, 0xc5b: 0x0089, 0xc5c: 0x0341, 0xc5d: 0x0040,\n\t0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018,\n\t0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x0739, 0xc69: 0x0018,\n\t0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018,\n\t0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018,\n\t0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018,\n\t0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x0806, 0xc81: 0x0826, 0xc82: 0x03d9, 0xc83: 0x0845, 0xc84: 0x0018, 0xc85: 0x0866,\n\t0xc86: 0x0886, 0xc87: 0x0369, 0xc88: 0x0018, 0xc89: 0x08a5, 0xc8a: 0x0309, 0xc8b: 0x00a9,\n\t0xc8c: 0x00a9, 0xc8d: 0x00a9, 0xc8e: 0x00a9, 0xc8f: 0x0741, 0xc90: 0x0311, 0xc91: 0x0311,\n\t0xc92: 0x0101, 0xc93: 0x0101, 0xc94: 0x0018, 0xc95: 0x0329, 0xc96: 0x0749, 0xc97: 0x0018,\n\t0xc98: 0x0018, 0xc99: 0x0339, 0xc9a: 0x0751, 0xc9b: 0x00b9, 0xc9c: 0x00b9, 0xc9d: 0x00b9,\n\t0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x0759, 0xca1: 0x08c5, 0xca2: 0x0761, 0xca3: 0x0018,\n\t0xca4: 0x04b1, 0xca5: 0x0018, 0xca6: 0x0769, 0xca7: 0x0018, 0xca8: 0x04b1, 0xca9: 0x0018,\n\t0xcaa: 0x0319, 0xcab: 0x0771, 0xcac: 0x02e9, 0xcad: 0x03d9, 0xcae: 0x0018, 0xcaf: 0x02f9,\n\t0xcb0: 0x02f9, 0xcb1: 0x03f1, 0xcb2: 0x0040, 0xcb3: 0x0321, 0xcb4: 0x0051, 0xcb5: 0x0779,\n\t0xcb6: 0x0781, 0xcb7: 0x0789, 0xcb8: 0x0791, 0xcb9: 0x0311, 0xcba: 0x0018, 0xcbb: 0x08e5,\n\t0xcbc: 0x0799, 0xcbd: 0x03a1, 0xcbe: 0x03a1, 0xcbf: 0x0799,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x0905, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x02f1,\n\t0xcc6: 0x02f1, 0xcc7: 0x02f9, 0xcc8: 0x0311, 0xcc9: 0x00b1, 0xcca: 0x0018, 0xccb: 0x0018,\n\t0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x07a1, 0xcd1: 0x07a9,\n\t0xcd2: 0x07b1, 0xcd3: 0x07b9, 0xcd4: 0x07c1, 0xcd5: 0x07c9, 0xcd6: 0x07d1, 0xcd7: 0x07d9,\n\t0xcd8: 0x07e1, 0xcd9: 0x07e9, 0xcda: 0x07f1, 0xcdb: 0x07f9, 0xcdc: 0x0801, 0xcdd: 0x0809,\n\t0xcde: 0x0811, 0xcdf: 0x0819, 0xce0: 0x0311, 0xce1: 0x0821, 0xce2: 0x091d, 0xce3: 0x0829,\n\t0xce4: 0x0391, 0xce5: 0x0831, 0xce6: 0x093d, 0xce7: 0x0839, 0xce8: 0x0841, 0xce9: 0x0109,\n\t0xcea: 0x0849, 0xceb: 0x095d, 0xcec: 0x0101, 0xced: 0x03d9, 0xcee: 0x02f1, 0xcef: 0x0321,\n\t0xcf0: 0x0311, 0xcf1: 0x0821, 0xcf2: 0x097d, 0xcf3: 0x0829, 0xcf4: 0x0391, 0xcf5: 0x0831,\n\t0xcf6: 0x099d, 0xcf7: 0x0839, 0xcf8: 0x0841, 0xcf9: 0x0109, 0xcfa: 0x0849, 0xcfb: 0x09bd,\n\t0xcfc: 0x0101, 0xcfd: 0x03d9, 0xcfe: 0x02f1, 0xcff: 0x0321,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018,\n\t0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040,\n\t0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040,\n\t0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040,\n\t0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040,\n\t0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x0049, 0xd21: 0x0029, 0xd22: 0x0031, 0xd23: 0x06e9,\n\t0xd24: 0x06f1, 0xd25: 0x06f9, 0xd26: 0x0701, 0xd27: 0x0709, 0xd28: 0x0711, 0xd29: 0x0879,\n\t0xd2a: 0x0881, 0xd2b: 0x0889, 0xd2c: 0x0891, 0xd2d: 0x0899, 0xd2e: 0x08a1, 0xd2f: 0x08a9,\n\t0xd30: 0x08b1, 0xd31: 0x08b9, 0xd32: 0x08c1, 0xd33: 0x08c9, 0xd34: 0x0a1e, 0xd35: 0x0a3e,\n\t0xd36: 0x0a5e, 0xd37: 0x0a7e, 0xd38: 0x0a9e, 0xd39: 0x0abe, 0xd3a: 0x0ade, 0xd3b: 0x0afe,\n\t0xd3c: 0x0b1e, 0xd3d: 0x08d2, 0xd3e: 0x08da, 0xd3f: 0x08e2,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x08ea, 0xd41: 0x08f2, 0xd42: 0x08fa, 0xd43: 0x0902, 0xd44: 0x090a, 0xd45: 0x0912,\n\t0xd46: 0x091a, 0xd47: 0x0922, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040,\n\t0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040,\n\t0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040,\n\t0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b3e, 0xd5d: 0x0b5e,\n\t0xd5e: 0x0b7e, 0xd5f: 0x0b9e, 0xd60: 0x0bbe, 0xd61: 0x0bde, 0xd62: 0x0bfe, 0xd63: 0x0c1e,\n\t0xd64: 0x0c3e, 0xd65: 0x0c5e, 0xd66: 0x0c7e, 0xd67: 0x0c9e, 0xd68: 0x0cbe, 0xd69: 0x0cde,\n\t0xd6a: 0x0cfe, 0xd6b: 0x0d1e, 0xd6c: 0x0d3e, 0xd6d: 0x0d5e, 0xd6e: 0x0d7e, 0xd6f: 0x0d9e,\n\t0xd70: 0x0dbe, 0xd71: 0x0dde, 0xd72: 0x0dfe, 0xd73: 0x0e1e, 0xd74: 0x0e3e, 0xd75: 0x0e5e,\n\t0xd76: 0x0019, 0xd77: 0x02e9, 0xd78: 0x03d9, 0xd79: 0x02f1, 0xd7a: 0x02f9, 0xd7b: 0x03f1,\n\t0xd7c: 0x0309, 0xd7d: 0x00a9, 0xd7e: 0x0311, 0xd7f: 0x00b1,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0319, 0xd81: 0x0101, 0xd82: 0x0321, 0xd83: 0x0329, 0xd84: 0x0051, 0xd85: 0x0339,\n\t0xd86: 0x0751, 0xd87: 0x00b9, 0xd88: 0x0089, 0xd89: 0x0341, 0xd8a: 0x0349, 0xd8b: 0x0391,\n\t0xd8c: 0x00c1, 0xd8d: 0x0109, 0xd8e: 0x00c9, 0xd8f: 0x04b1, 0xd90: 0x0019, 0xd91: 0x02e9,\n\t0xd92: 0x03d9, 0xd93: 0x02f1, 0xd94: 0x02f9, 0xd95: 0x03f1, 0xd96: 0x0309, 0xd97: 0x00a9,\n\t0xd98: 0x0311, 0xd99: 0x00b1, 0xd9a: 0x0319, 0xd9b: 0x0101, 0xd9c: 0x0321, 0xd9d: 0x0329,\n\t0xd9e: 0x0051, 0xd9f: 0x0339, 0xda0: 0x0751, 0xda1: 0x00b9, 0xda2: 0x0089, 0xda3: 0x0341,\n\t0xda4: 0x0349, 0xda5: 0x0391, 0xda6: 0x00c1, 0xda7: 0x0109, 0xda8: 0x00c9, 0xda9: 0x04b1,\n\t0xdaa: 0x06e1, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018,\n\t0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018,\n\t0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018,\n\t0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008,\n\t0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008,\n\t0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008,\n\t0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008,\n\t0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008,\n\t0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x0941, 0xde3: 0x0ed5,\n\t0xde4: 0x0949, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d,\n\t0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0359, 0xdee: 0x0441, 0xdef: 0x0351,\n\t0xdf0: 0x03d1, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d,\n\t0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008,\n\t0xdfc: 0x00b1, 0xdfd: 0x0391, 0xdfe: 0x0951, 0xdff: 0x0959,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008,\n\t0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008,\n\t0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008,\n\t0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008,\n\t0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008,\n\t0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008,\n\t0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018,\n\t0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308,\n\t0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040,\n\t0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018,\n\t0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x2715, 0xe41: 0x2735, 0xe42: 0x2755, 0xe43: 0x2775, 0xe44: 0x2795, 0xe45: 0x27b5,\n\t0xe46: 0x27d5, 0xe47: 0x27f5, 0xe48: 0x2815, 0xe49: 0x2835, 0xe4a: 0x2855, 0xe4b: 0x2875,\n\t0xe4c: 0x2895, 0xe4d: 0x28b5, 0xe4e: 0x28d5, 0xe4f: 0x28f5, 0xe50: 0x2915, 0xe51: 0x2935,\n\t0xe52: 0x2955, 0xe53: 0x2975, 0xe54: 0x2995, 0xe55: 0x29b5, 0xe56: 0x0040, 0xe57: 0x0040,\n\t0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040,\n\t0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040,\n\t0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040,\n\t0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040,\n\t0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040,\n\t0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040,\n\t0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x0961, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008,\n\t0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018,\n\t0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018,\n\t0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018,\n\t0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018,\n\t0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018,\n\t0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018,\n\t0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018,\n\t0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018,\n\t0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29d5, 0xeb9: 0x29f5, 0xeba: 0x2a15, 0xebb: 0x0018,\n\t0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x2b55, 0xec1: 0x2b75, 0xec2: 0x2b95, 0xec3: 0x2bb5, 0xec4: 0x2bd5, 0xec5: 0x2bf5,\n\t0xec6: 0x2bf5, 0xec7: 0x2bf5, 0xec8: 0x2c15, 0xec9: 0x2c15, 0xeca: 0x2c15, 0xecb: 0x2c15,\n\t0xecc: 0x2c35, 0xecd: 0x2c35, 0xece: 0x2c35, 0xecf: 0x2c55, 0xed0: 0x2c75, 0xed1: 0x2c75,\n\t0xed2: 0x2a95, 0xed3: 0x2a95, 0xed4: 0x2c75, 0xed5: 0x2c75, 0xed6: 0x2c95, 0xed7: 0x2c95,\n\t0xed8: 0x2c75, 0xed9: 0x2c75, 0xeda: 0x2a95, 0xedb: 0x2a95, 0xedc: 0x2c75, 0xedd: 0x2c75,\n\t0xede: 0x2c55, 0xedf: 0x2c55, 0xee0: 0x2cb5, 0xee1: 0x2cb5, 0xee2: 0x2cd5, 0xee3: 0x2cd5,\n\t0xee4: 0x0040, 0xee5: 0x2cf5, 0xee6: 0x2d15, 0xee7: 0x2d35, 0xee8: 0x2d35, 0xee9: 0x2d55,\n\t0xeea: 0x2d75, 0xeeb: 0x2d95, 0xeec: 0x2db5, 0xeed: 0x2dd5, 0xeee: 0x2df5, 0xeef: 0x2e15,\n\t0xef0: 0x2e35, 0xef1: 0x2e55, 0xef2: 0x2e55, 0xef3: 0x2e75, 0xef4: 0x2e95, 0xef5: 0x2e95,\n\t0xef6: 0x2eb5, 0xef7: 0x2ed5, 0xef8: 0x2e75, 0xef9: 0x2ef5, 0xefa: 0x2f15, 0xefb: 0x2ef5,\n\t0xefc: 0x2e75, 0xefd: 0x2f35, 0xefe: 0x2f55, 0xeff: 0x2f75,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x2f95, 0xf01: 0x2fb5, 0xf02: 0x2d15, 0xf03: 0x2cf5, 0xf04: 0x2fd5, 0xf05: 0x2ff5,\n\t0xf06: 0x3015, 0xf07: 0x3035, 0xf08: 0x3055, 0xf09: 0x3075, 0xf0a: 0x3095, 0xf0b: 0x30b5,\n\t0xf0c: 0x30d5, 0xf0d: 0x30f5, 0xf0e: 0x3115, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018,\n\t0xf12: 0x3135, 0xf13: 0x3155, 0xf14: 0x3175, 0xf15: 0x3195, 0xf16: 0x31b5, 0xf17: 0x31d5,\n\t0xf18: 0x31f5, 0xf19: 0x3215, 0xf1a: 0x3235, 0xf1b: 0x3255, 0xf1c: 0x3175, 0xf1d: 0x3275,\n\t0xf1e: 0x3295, 0xf1f: 0x32b5, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008,\n\t0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008,\n\t0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008,\n\t0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008,\n\t0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0008,\n\t0xf3c: 0x0008, 0xf3d: 0x0008, 0xf3e: 0x0008, 0xf3f: 0x0008,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x0b82, 0xf41: 0x0b8a, 0xf42: 0x0b92, 0xf43: 0x0b9a, 0xf44: 0x32d5, 0xf45: 0x32f5,\n\t0xf46: 0x3315, 0xf47: 0x3335, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018,\n\t0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x3355, 0xf51: 0x0ba1,\n\t0xf52: 0x0ba9, 0xf53: 0x0bb1, 0xf54: 0x0bb9, 0xf55: 0x0bc1, 0xf56: 0x0bc9, 0xf57: 0x0bd1,\n\t0xf58: 0x0bd9, 0xf59: 0x0be1, 0xf5a: 0x0be9, 0xf5b: 0x0bf1, 0xf5c: 0x0bf9, 0xf5d: 0x0c01,\n\t0xf5e: 0x0c09, 0xf5f: 0x0c11, 0xf60: 0x3375, 0xf61: 0x3395, 0xf62: 0x33b5, 0xf63: 0x33d5,\n\t0xf64: 0x33f5, 0xf65: 0x33f5, 0xf66: 0x3415, 0xf67: 0x3435, 0xf68: 0x3455, 0xf69: 0x3475,\n\t0xf6a: 0x3495, 0xf6b: 0x34b5, 0xf6c: 0x34d5, 0xf6d: 0x34f5, 0xf6e: 0x3515, 0xf6f: 0x3535,\n\t0xf70: 0x3555, 0xf71: 0x3575, 0xf72: 0x3595, 0xf73: 0x35b5, 0xf74: 0x35d5, 0xf75: 0x35f5,\n\t0xf76: 0x3615, 0xf77: 0x3635, 0xf78: 0x3655, 0xf79: 0x3675, 0xf7a: 0x3695, 0xf7b: 0x36b5,\n\t0xf7c: 0x0c19, 0xf7d: 0x0c21, 0xf7e: 0x36d5, 0xf7f: 0x0018,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x36f5, 0xf81: 0x3715, 0xf82: 0x3735, 0xf83: 0x3755, 0xf84: 0x3775, 0xf85: 0x3795,\n\t0xf86: 0x37b5, 0xf87: 0x37d5, 0xf88: 0x37f5, 0xf89: 0x3815, 0xf8a: 0x3835, 0xf8b: 0x3855,\n\t0xf8c: 0x3875, 0xf8d: 0x3895, 0xf8e: 0x38b5, 0xf8f: 0x38d5, 0xf90: 0x38f5, 0xf91: 0x3915,\n\t0xf92: 0x3935, 0xf93: 0x3955, 0xf94: 0x3975, 0xf95: 0x3995, 0xf96: 0x39b5, 0xf97: 0x39d5,\n\t0xf98: 0x39f5, 0xf99: 0x3a15, 0xf9a: 0x3a35, 0xf9b: 0x3a55, 0xf9c: 0x3a75, 0xf9d: 0x3a95,\n\t0xf9e: 0x3ab5, 0xf9f: 0x3ad5, 0xfa0: 0x3af5, 0xfa1: 0x3b15, 0xfa2: 0x3b35, 0xfa3: 0x3b55,\n\t0xfa4: 0x3b75, 0xfa5: 0x3b95, 0xfa6: 0x1295, 0xfa7: 0x3bb5, 0xfa8: 0x3bd5, 0xfa9: 0x3bf5,\n\t0xfaa: 0x3c15, 0xfab: 0x3c35, 0xfac: 0x3c55, 0xfad: 0x3c75, 0xfae: 0x23b5, 0xfaf: 0x3c95,\n\t0xfb0: 0x3cb5, 0xfb1: 0x0c29, 0xfb2: 0x0c31, 0xfb3: 0x0c39, 0xfb4: 0x0c41, 0xfb5: 0x0c49,\n\t0xfb6: 0x0c51, 0xfb7: 0x0c59, 0xfb8: 0x0c61, 0xfb9: 0x0c69, 0xfba: 0x0c71, 0xfbb: 0x0c79,\n\t0xfbc: 0x0c81, 0xfbd: 0x0c89, 0xfbe: 0x0c91, 0xfbf: 0x0c99,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x0ca1, 0xfc1: 0x0ca9, 0xfc2: 0x0cb1, 0xfc3: 0x0cb9, 0xfc4: 0x0cc1, 0xfc5: 0x0cc9,\n\t0xfc6: 0x0cd1, 0xfc7: 0x0cd9, 0xfc8: 0x0ce1, 0xfc9: 0x0ce9, 0xfca: 0x0cf1, 0xfcb: 0x0cf9,\n\t0xfcc: 0x0d01, 0xfcd: 0x3cd5, 0xfce: 0x0d09, 0xfcf: 0x3cf5, 0xfd0: 0x3d15, 0xfd1: 0x3d2d,\n\t0xfd2: 0x3d45, 0xfd3: 0x3d5d, 0xfd4: 0x3d75, 0xfd5: 0x3d75, 0xfd6: 0x3d5d, 0xfd7: 0x3d8d,\n\t0xfd8: 0x07d5, 0xfd9: 0x3da5, 0xfda: 0x3dbd, 0xfdb: 0x3dd5, 0xfdc: 0x3ded, 0xfdd: 0x3e05,\n\t0xfde: 0x3e1d, 0xfdf: 0x3e35, 0xfe0: 0x3e4d, 0xfe1: 0x3e65, 0xfe2: 0x3e7d, 0xfe3: 0x3e95,\n\t0xfe4: 0x3ead, 0xfe5: 0x3ead, 0xfe6: 0x3ec5, 0xfe7: 0x3ec5, 0xfe8: 0x3edd, 0xfe9: 0x3edd,\n\t0xfea: 0x3ef5, 0xfeb: 0x3f0d, 0xfec: 0x3f25, 0xfed: 0x3f3d, 0xfee: 0x3f55, 0xfef: 0x3f55,\n\t0xff0: 0x3f6d, 0xff1: 0x3f6d, 0xff2: 0x3f6d, 0xff3: 0x3f85, 0xff4: 0x3f9d, 0xff5: 0x3fb5,\n\t0xff6: 0x3fcd, 0xff7: 0x3fb5, 0xff8: 0x3fe5, 0xff9: 0x3ffd, 0xffa: 0x3f85, 0xffb: 0x4015,\n\t0xffc: 0x402d, 0xffd: 0x402d, 0xffe: 0x402d, 0xfff: 0x0d11,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x10f9, 0x1001: 0x1101, 0x1002: 0x40a5, 0x1003: 0x1109, 0x1004: 0x1111, 0x1005: 0x1119,\n\t0x1006: 0x1121, 0x1007: 0x1129, 0x1008: 0x40c5, 0x1009: 0x1131, 0x100a: 0x1139, 0x100b: 0x1141,\n\t0x100c: 0x40e5, 0x100d: 0x40e5, 0x100e: 0x1149, 0x100f: 0x1151, 0x1010: 0x1159, 0x1011: 0x4105,\n\t0x1012: 0x4125, 0x1013: 0x4145, 0x1014: 0x4165, 0x1015: 0x4185, 0x1016: 0x1161, 0x1017: 0x1169,\n\t0x1018: 0x1171, 0x1019: 0x1179, 0x101a: 0x1181, 0x101b: 0x41a5, 0x101c: 0x1189, 0x101d: 0x1191,\n\t0x101e: 0x1199, 0x101f: 0x41c5, 0x1020: 0x41e5, 0x1021: 0x11a1, 0x1022: 0x4205, 0x1023: 0x4225,\n\t0x1024: 0x4245, 0x1025: 0x11a9, 0x1026: 0x4265, 0x1027: 0x11b1, 0x1028: 0x11b9, 0x1029: 0x10f9,\n\t0x102a: 0x4285, 0x102b: 0x42a5, 0x102c: 0x42c5, 0x102d: 0x42e5, 0x102e: 0x11c1, 0x102f: 0x11c9,\n\t0x1030: 0x11d1, 0x1031: 0x11d9, 0x1032: 0x4305, 0x1033: 0x11e1, 0x1034: 0x11e9, 0x1035: 0x11f1,\n\t0x1036: 0x4325, 0x1037: 0x11f9, 0x1038: 0x1201, 0x1039: 0x11f9, 0x103a: 0x1209, 0x103b: 0x1211,\n\t0x103c: 0x4345, 0x103d: 0x1219, 0x103e: 0x1221, 0x103f: 0x1219,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x4365, 0x1041: 0x4385, 0x1042: 0x0040, 0x1043: 0x1229, 0x1044: 0x1231, 0x1045: 0x1239,\n\t0x1046: 0x1241, 0x1047: 0x0040, 0x1048: 0x1249, 0x1049: 0x1251, 0x104a: 0x1259, 0x104b: 0x1261,\n\t0x104c: 0x1269, 0x104d: 0x1271, 0x104e: 0x1199, 0x104f: 0x1279, 0x1050: 0x1281, 0x1051: 0x1289,\n\t0x1052: 0x43a5, 0x1053: 0x1291, 0x1054: 0x1121, 0x1055: 0x43c5, 0x1056: 0x43e5, 0x1057: 0x1299,\n\t0x1058: 0x0040, 0x1059: 0x4405, 0x105a: 0x12a1, 0x105b: 0x12a9, 0x105c: 0x12b1, 0x105d: 0x12b9,\n\t0x105e: 0x12c1, 0x105f: 0x12c9, 0x1060: 0x12d1, 0x1061: 0x12d9, 0x1062: 0x12e1, 0x1063: 0x12e9,\n\t0x1064: 0x12f1, 0x1065: 0x12f9, 0x1066: 0x1301, 0x1067: 0x1309, 0x1068: 0x1311, 0x1069: 0x1319,\n\t0x106a: 0x1321, 0x106b: 0x1329, 0x106c: 0x1331, 0x106d: 0x1339, 0x106e: 0x1341, 0x106f: 0x1349,\n\t0x1070: 0x1351, 0x1071: 0x1359, 0x1072: 0x1361, 0x1073: 0x1369, 0x1074: 0x1371, 0x1075: 0x1379,\n\t0x1076: 0x1381, 0x1077: 0x1389, 0x1078: 0x1391, 0x1079: 0x1399, 0x107a: 0x13a1, 0x107b: 0x13a9,\n\t0x107c: 0x13b1, 0x107d: 0x13b9, 0x107e: 0x13c1, 0x107f: 0x4425,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0xe00d, 0x1081: 0x0008, 0x1082: 0xe00d, 0x1083: 0x0008, 0x1084: 0xe00d, 0x1085: 0x0008,\n\t0x1086: 0xe00d, 0x1087: 0x0008, 0x1088: 0xe00d, 0x1089: 0x0008, 0x108a: 0xe00d, 0x108b: 0x0008,\n\t0x108c: 0xe00d, 0x108d: 0x0008, 0x108e: 0xe00d, 0x108f: 0x0008, 0x1090: 0xe00d, 0x1091: 0x0008,\n\t0x1092: 0xe00d, 0x1093: 0x0008, 0x1094: 0xe00d, 0x1095: 0x0008, 0x1096: 0xe00d, 0x1097: 0x0008,\n\t0x1098: 0xe00d, 0x1099: 0x0008, 0x109a: 0xe00d, 0x109b: 0x0008, 0x109c: 0xe00d, 0x109d: 0x0008,\n\t0x109e: 0xe00d, 0x109f: 0x0008, 0x10a0: 0xe00d, 0x10a1: 0x0008, 0x10a2: 0xe00d, 0x10a3: 0x0008,\n\t0x10a4: 0xe00d, 0x10a5: 0x0008, 0x10a6: 0xe00d, 0x10a7: 0x0008, 0x10a8: 0xe00d, 0x10a9: 0x0008,\n\t0x10aa: 0xe00d, 0x10ab: 0x0008, 0x10ac: 0xe00d, 0x10ad: 0x0008, 0x10ae: 0x0008, 0x10af: 0x3308,\n\t0x10b0: 0x3318, 0x10b1: 0x3318, 0x10b2: 0x3318, 0x10b3: 0x0018, 0x10b4: 0x3308, 0x10b5: 0x3308,\n\t0x10b6: 0x3308, 0x10b7: 0x3308, 0x10b8: 0x3308, 0x10b9: 0x3308, 0x10ba: 0x3308, 0x10bb: 0x3308,\n\t0x10bc: 0x3308, 0x10bd: 0x3308, 0x10be: 0x0018, 0x10bf: 0x0008,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0xe00d, 0x10c1: 0x0008, 0x10c2: 0xe00d, 0x10c3: 0x0008, 0x10c4: 0xe00d, 0x10c5: 0x0008,\n\t0x10c6: 0xe00d, 0x10c7: 0x0008, 0x10c8: 0xe00d, 0x10c9: 0x0008, 0x10ca: 0xe00d, 0x10cb: 0x0008,\n\t0x10cc: 0xe00d, 0x10cd: 0x0008, 0x10ce: 0xe00d, 0x10cf: 0x0008, 0x10d0: 0xe00d, 0x10d1: 0x0008,\n\t0x10d2: 0xe00d, 0x10d3: 0x0008, 0x10d4: 0xe00d, 0x10d5: 0x0008, 0x10d6: 0xe00d, 0x10d7: 0x0008,\n\t0x10d8: 0xe00d, 0x10d9: 0x0008, 0x10da: 0xe00d, 0x10db: 0x0008, 0x10dc: 0x02d1, 0x10dd: 0x13c9,\n\t0x10de: 0x3308, 0x10df: 0x3308, 0x10e0: 0x0008, 0x10e1: 0x0008, 0x10e2: 0x0008, 0x10e3: 0x0008,\n\t0x10e4: 0x0008, 0x10e5: 0x0008, 0x10e6: 0x0008, 0x10e7: 0x0008, 0x10e8: 0x0008, 0x10e9: 0x0008,\n\t0x10ea: 0x0008, 0x10eb: 0x0008, 0x10ec: 0x0008, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x0008,\n\t0x10f0: 0x0008, 0x10f1: 0x0008, 0x10f2: 0x0008, 0x10f3: 0x0008, 0x10f4: 0x0008, 0x10f5: 0x0008,\n\t0x10f6: 0x0008, 0x10f7: 0x0008, 0x10f8: 0x0008, 0x10f9: 0x0008, 0x10fa: 0x0008, 0x10fb: 0x0008,\n\t0x10fc: 0x0008, 0x10fd: 0x0008, 0x10fe: 0x0008, 0x10ff: 0x0008,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0x0018, 0x1101: 0x0018, 0x1102: 0x0018, 0x1103: 0x0018, 0x1104: 0x0018, 0x1105: 0x0018,\n\t0x1106: 0x0018, 0x1107: 0x0018, 0x1108: 0x0018, 0x1109: 0x0018, 0x110a: 0x0018, 0x110b: 0x0018,\n\t0x110c: 0x0018, 0x110d: 0x0018, 0x110e: 0x0018, 0x110f: 0x0018, 0x1110: 0x0018, 0x1111: 0x0018,\n\t0x1112: 0x0018, 0x1113: 0x0018, 0x1114: 0x0018, 0x1115: 0x0018, 0x1116: 0x0018, 0x1117: 0x0008,\n\t0x1118: 0x0008, 0x1119: 0x0008, 0x111a: 0x0008, 0x111b: 0x0008, 0x111c: 0x0008, 0x111d: 0x0008,\n\t0x111e: 0x0008, 0x111f: 0x0008, 0x1120: 0x0018, 0x1121: 0x0018, 0x1122: 0xe00d, 0x1123: 0x0008,\n\t0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008,\n\t0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0xe00d, 0x112f: 0x0008,\n\t0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0xe00d, 0x1133: 0x0008, 0x1134: 0xe00d, 0x1135: 0x0008,\n\t0x1136: 0xe00d, 0x1137: 0x0008, 0x1138: 0xe00d, 0x1139: 0x0008, 0x113a: 0xe00d, 0x113b: 0x0008,\n\t0x113c: 0xe00d, 0x113d: 0x0008, 0x113e: 0xe00d, 0x113f: 0x0008,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008,\n\t0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008,\n\t0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008,\n\t0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008,\n\t0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0xe00d, 0x115d: 0x0008,\n\t0x115e: 0xe00d, 0x115f: 0x0008, 0x1160: 0xe00d, 0x1161: 0x0008, 0x1162: 0xe00d, 0x1163: 0x0008,\n\t0x1164: 0xe00d, 0x1165: 0x0008, 0x1166: 0xe00d, 0x1167: 0x0008, 0x1168: 0xe00d, 0x1169: 0x0008,\n\t0x116a: 0xe00d, 0x116b: 0x0008, 0x116c: 0xe00d, 0x116d: 0x0008, 0x116e: 0xe00d, 0x116f: 0x0008,\n\t0x1170: 0xe0fd, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008,\n\t0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0xe01d, 0x117a: 0x0008, 0x117b: 0xe03d,\n\t0x117c: 0x0008, 0x117d: 0x4445, 0x117e: 0xe00d, 0x117f: 0x0008,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008,\n\t0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0x0008, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0xe03d,\n\t0x118c: 0x0008, 0x118d: 0x0409, 0x118e: 0x0008, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008,\n\t0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0x0008, 0x1195: 0x0008, 0x1196: 0xe00d, 0x1197: 0x0008,\n\t0x1198: 0xe00d, 0x1199: 0x0008, 0x119a: 0xe00d, 0x119b: 0x0008, 0x119c: 0xe00d, 0x119d: 0x0008,\n\t0x119e: 0xe00d, 0x119f: 0x0008, 0x11a0: 0xe00d, 0x11a1: 0x0008, 0x11a2: 0xe00d, 0x11a3: 0x0008,\n\t0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,\n\t0x11aa: 0x13d1, 0x11ab: 0x0371, 0x11ac: 0x0401, 0x11ad: 0x13d9, 0x11ae: 0x0421, 0x11af: 0x0008,\n\t0x11b0: 0x13e1, 0x11b1: 0x13e9, 0x11b2: 0x0429, 0x11b3: 0x4465, 0x11b4: 0xe00d, 0x11b5: 0x0008,\n\t0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008,\n\t0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0x650d, 0x11c1: 0x652d, 0x11c2: 0x654d, 0x11c3: 0x656d, 0x11c4: 0x658d, 0x11c5: 0x65ad,\n\t0x11c6: 0x65cd, 0x11c7: 0x65ed, 0x11c8: 0x660d, 0x11c9: 0x662d, 0x11ca: 0x664d, 0x11cb: 0x666d,\n\t0x11cc: 0x668d, 0x11cd: 0x66ad, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0x66cd, 0x11d1: 0x0008,\n\t0x11d2: 0x66ed, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x670d, 0x11d6: 0x672d, 0x11d7: 0x674d,\n\t0x11d8: 0x676d, 0x11d9: 0x678d, 0x11da: 0x67ad, 0x11db: 0x67cd, 0x11dc: 0x67ed, 0x11dd: 0x680d,\n\t0x11de: 0x682d, 0x11df: 0x0008, 0x11e0: 0x684d, 0x11e1: 0x0008, 0x11e2: 0x686d, 0x11e3: 0x0008,\n\t0x11e4: 0x0008, 0x11e5: 0x688d, 0x11e6: 0x68ad, 0x11e7: 0x0008, 0x11e8: 0x0008, 0x11e9: 0x0008,\n\t0x11ea: 0x68cd, 0x11eb: 0x68ed, 0x11ec: 0x690d, 0x11ed: 0x692d, 0x11ee: 0x694d, 0x11ef: 0x696d,\n\t0x11f0: 0x698d, 0x11f1: 0x69ad, 0x11f2: 0x69cd, 0x11f3: 0x69ed, 0x11f4: 0x6a0d, 0x11f5: 0x6a2d,\n\t0x11f6: 0x6a4d, 0x11f7: 0x6a6d, 0x11f8: 0x6a8d, 0x11f9: 0x6aad, 0x11fa: 0x6acd, 0x11fb: 0x6aed,\n\t0x11fc: 0x6b0d, 0x11fd: 0x6b2d, 0x11fe: 0x6b4d, 0x11ff: 0x6b6d,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x7acd, 0x1201: 0x7aed, 0x1202: 0x7b0d, 0x1203: 0x7b2d, 0x1204: 0x7b4d, 0x1205: 0x7b6d,\n\t0x1206: 0x7b8d, 0x1207: 0x7bad, 0x1208: 0x7bcd, 0x1209: 0x7bed, 0x120a: 0x7c0d, 0x120b: 0x7c2d,\n\t0x120c: 0x7c4d, 0x120d: 0x7c6d, 0x120e: 0x7c8d, 0x120f: 0x1409, 0x1210: 0x1411, 0x1211: 0x1419,\n\t0x1212: 0x7cad, 0x1213: 0x7ccd, 0x1214: 0x7ced, 0x1215: 0x1421, 0x1216: 0x1429, 0x1217: 0x1431,\n\t0x1218: 0x7d0d, 0x1219: 0x7d2d, 0x121a: 0x0040, 0x121b: 0x0040, 0x121c: 0x0040, 0x121d: 0x0040,\n\t0x121e: 0x0040, 0x121f: 0x0040, 0x1220: 0x0040, 0x1221: 0x0040, 0x1222: 0x0040, 0x1223: 0x0040,\n\t0x1224: 0x0040, 0x1225: 0x0040, 0x1226: 0x0040, 0x1227: 0x0040, 0x1228: 0x0040, 0x1229: 0x0040,\n\t0x122a: 0x0040, 0x122b: 0x0040, 0x122c: 0x0040, 0x122d: 0x0040, 0x122e: 0x0040, 0x122f: 0x0040,\n\t0x1230: 0x0040, 0x1231: 0x0040, 0x1232: 0x0040, 0x1233: 0x0040, 0x1234: 0x0040, 0x1235: 0x0040,\n\t0x1236: 0x0040, 0x1237: 0x0040, 0x1238: 0x0040, 0x1239: 0x0040, 0x123a: 0x0040, 0x123b: 0x0040,\n\t0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x1439, 0x1241: 0x1441, 0x1242: 0x1449, 0x1243: 0x7d4d, 0x1244: 0x7d6d, 0x1245: 0x1451,\n\t0x1246: 0x1451, 0x1247: 0x0040, 0x1248: 0x0040, 0x1249: 0x0040, 0x124a: 0x0040, 0x124b: 0x0040,\n\t0x124c: 0x0040, 0x124d: 0x0040, 0x124e: 0x0040, 0x124f: 0x0040, 0x1250: 0x0040, 0x1251: 0x0040,\n\t0x1252: 0x0040, 0x1253: 0x1459, 0x1254: 0x1461, 0x1255: 0x1469, 0x1256: 0x1471, 0x1257: 0x1479,\n\t0x1258: 0x0040, 0x1259: 0x0040, 0x125a: 0x0040, 0x125b: 0x0040, 0x125c: 0x0040, 0x125d: 0x1481,\n\t0x125e: 0x3308, 0x125f: 0x1489, 0x1260: 0x1491, 0x1261: 0x0779, 0x1262: 0x0791, 0x1263: 0x1499,\n\t0x1264: 0x14a1, 0x1265: 0x14a9, 0x1266: 0x14b1, 0x1267: 0x14b9, 0x1268: 0x14c1, 0x1269: 0x071a,\n\t0x126a: 0x14c9, 0x126b: 0x14d1, 0x126c: 0x14d9, 0x126d: 0x14e1, 0x126e: 0x14e9, 0x126f: 0x14f1,\n\t0x1270: 0x14f9, 0x1271: 0x1501, 0x1272: 0x1509, 0x1273: 0x1511, 0x1274: 0x1519, 0x1275: 0x1521,\n\t0x1276: 0x1529, 0x1277: 0x0040, 0x1278: 0x1531, 0x1279: 0x1539, 0x127a: 0x1541, 0x127b: 0x1549,\n\t0x127c: 0x1551, 0x127d: 0x0040, 0x127e: 0x1559, 0x127f: 0x0040,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x1561, 0x1281: 0x1569, 0x1282: 0x0040, 0x1283: 0x1571, 0x1284: 0x1579, 0x1285: 0x0040,\n\t0x1286: 0x1581, 0x1287: 0x1589, 0x1288: 0x1591, 0x1289: 0x1599, 0x128a: 0x15a1, 0x128b: 0x15a9,\n\t0x128c: 0x15b1, 0x128d: 0x15b9, 0x128e: 0x15c1, 0x128f: 0x15c9, 0x1290: 0x15d1, 0x1291: 0x15d1,\n\t0x1292: 0x15d9, 0x1293: 0x15d9, 0x1294: 0x15d9, 0x1295: 0x15d9, 0x1296: 0x15e1, 0x1297: 0x15e1,\n\t0x1298: 0x15e1, 0x1299: 0x15e1, 0x129a: 0x15e9, 0x129b: 0x15e9, 0x129c: 0x15e9, 0x129d: 0x15e9,\n\t0x129e: 0x15f1, 0x129f: 0x15f1, 0x12a0: 0x15f1, 0x12a1: 0x15f1, 0x12a2: 0x15f9, 0x12a3: 0x15f9,\n\t0x12a4: 0x15f9, 0x12a5: 0x15f9, 0x12a6: 0x1601, 0x12a7: 0x1601, 0x12a8: 0x1601, 0x12a9: 0x1601,\n\t0x12aa: 0x1609, 0x12ab: 0x1609, 0x12ac: 0x1609, 0x12ad: 0x1609, 0x12ae: 0x1611, 0x12af: 0x1611,\n\t0x12b0: 0x1611, 0x12b1: 0x1611, 0x12b2: 0x1619, 0x12b3: 0x1619, 0x12b4: 0x1619, 0x12b5: 0x1619,\n\t0x12b6: 0x1621, 0x12b7: 0x1621, 0x12b8: 0x1621, 0x12b9: 0x1621, 0x12ba: 0x1629, 0x12bb: 0x1629,\n\t0x12bc: 0x1629, 0x12bd: 0x1629, 0x12be: 0x1631, 0x12bf: 0x1631,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x1631, 0x12c1: 0x1631, 0x12c2: 0x1639, 0x12c3: 0x1639, 0x12c4: 0x1641, 0x12c5: 0x1641,\n\t0x12c6: 0x1649, 0x12c7: 0x1649, 0x12c8: 0x1651, 0x12c9: 0x1651, 0x12ca: 0x1659, 0x12cb: 0x1659,\n\t0x12cc: 0x1661, 0x12cd: 0x1661, 0x12ce: 0x1669, 0x12cf: 0x1669, 0x12d0: 0x1669, 0x12d1: 0x1669,\n\t0x12d2: 0x1671, 0x12d3: 0x1671, 0x12d4: 0x1671, 0x12d5: 0x1671, 0x12d6: 0x1679, 0x12d7: 0x1679,\n\t0x12d8: 0x1679, 0x12d9: 0x1679, 0x12da: 0x1681, 0x12db: 0x1681, 0x12dc: 0x1681, 0x12dd: 0x1681,\n\t0x12de: 0x1689, 0x12df: 0x1689, 0x12e0: 0x1691, 0x12e1: 0x1691, 0x12e2: 0x1691, 0x12e3: 0x1691,\n\t0x12e4: 0x1699, 0x12e5: 0x1699, 0x12e6: 0x16a1, 0x12e7: 0x16a1, 0x12e8: 0x16a1, 0x12e9: 0x16a1,\n\t0x12ea: 0x16a9, 0x12eb: 0x16a9, 0x12ec: 0x16a9, 0x12ed: 0x16a9, 0x12ee: 0x16b1, 0x12ef: 0x16b1,\n\t0x12f0: 0x16b9, 0x12f1: 0x16b9, 0x12f2: 0x0818, 0x12f3: 0x0818, 0x12f4: 0x0818, 0x12f5: 0x0818,\n\t0x12f6: 0x0818, 0x12f7: 0x0818, 0x12f8: 0x0818, 0x12f9: 0x0818, 0x12fa: 0x0818, 0x12fb: 0x0818,\n\t0x12fc: 0x0818, 0x12fd: 0x0818, 0x12fe: 0x0818, 0x12ff: 0x0818,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x0818, 0x1301: 0x0818, 0x1302: 0x0040, 0x1303: 0x0040, 0x1304: 0x0040, 0x1305: 0x0040,\n\t0x1306: 0x0040, 0x1307: 0x0040, 0x1308: 0x0040, 0x1309: 0x0040, 0x130a: 0x0040, 0x130b: 0x0040,\n\t0x130c: 0x0040, 0x130d: 0x0040, 0x130e: 0x0040, 0x130f: 0x0040, 0x1310: 0x0040, 0x1311: 0x0040,\n\t0x1312: 0x0040, 0x1313: 0x16c1, 0x1314: 0x16c1, 0x1315: 0x16c1, 0x1316: 0x16c1, 0x1317: 0x16c9,\n\t0x1318: 0x16c9, 0x1319: 0x16d1, 0x131a: 0x16d1, 0x131b: 0x16d9, 0x131c: 0x16d9, 0x131d: 0x0149,\n\t0x131e: 0x16e1, 0x131f: 0x16e1, 0x1320: 0x16e9, 0x1321: 0x16e9, 0x1322: 0x16f1, 0x1323: 0x16f1,\n\t0x1324: 0x16f9, 0x1325: 0x16f9, 0x1326: 0x16f9, 0x1327: 0x16f9, 0x1328: 0x1701, 0x1329: 0x1701,\n\t0x132a: 0x1709, 0x132b: 0x1709, 0x132c: 0x1711, 0x132d: 0x1711, 0x132e: 0x1719, 0x132f: 0x1719,\n\t0x1330: 0x1721, 0x1331: 0x1721, 0x1332: 0x1729, 0x1333: 0x1729, 0x1334: 0x1731, 0x1335: 0x1731,\n\t0x1336: 0x1739, 0x1337: 0x1739, 0x1338: 0x1739, 0x1339: 0x1741, 0x133a: 0x1741, 0x133b: 0x1741,\n\t0x133c: 0x1749, 0x133d: 0x1749, 0x133e: 0x1749, 0x133f: 0x1749,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x1949, 0x1341: 0x1951, 0x1342: 0x1959, 0x1343: 0x1961, 0x1344: 0x1969, 0x1345: 0x1971,\n\t0x1346: 0x1979, 0x1347: 0x1981, 0x1348: 0x1989, 0x1349: 0x1991, 0x134a: 0x1999, 0x134b: 0x19a1,\n\t0x134c: 0x19a9, 0x134d: 0x19b1, 0x134e: 0x19b9, 0x134f: 0x19c1, 0x1350: 0x19c9, 0x1351: 0x19d1,\n\t0x1352: 0x19d9, 0x1353: 0x19e1, 0x1354: 0x19e9, 0x1355: 0x19f1, 0x1356: 0x19f9, 0x1357: 0x1a01,\n\t0x1358: 0x1a09, 0x1359: 0x1a11, 0x135a: 0x1a19, 0x135b: 0x1a21, 0x135c: 0x1a29, 0x135d: 0x1a31,\n\t0x135e: 0x1a3a, 0x135f: 0x1a42, 0x1360: 0x1a4a, 0x1361: 0x1a52, 0x1362: 0x1a5a, 0x1363: 0x1a62,\n\t0x1364: 0x1a69, 0x1365: 0x1a71, 0x1366: 0x1761, 0x1367: 0x1a79, 0x1368: 0x1741, 0x1369: 0x1769,\n\t0x136a: 0x1a81, 0x136b: 0x1a89, 0x136c: 0x1789, 0x136d: 0x1a91, 0x136e: 0x1791, 0x136f: 0x1799,\n\t0x1370: 0x1a99, 0x1371: 0x1aa1, 0x1372: 0x17b9, 0x1373: 0x1aa9, 0x1374: 0x17c1, 0x1375: 0x17c9,\n\t0x1376: 0x1ab1, 0x1377: 0x1ab9, 0x1378: 0x17d9, 0x1379: 0x1ac1, 0x137a: 0x17e1, 0x137b: 0x17e9,\n\t0x137c: 0x18d1, 0x137d: 0x18d9, 0x137e: 0x18f1, 0x137f: 0x18f9,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x1901, 0x1381: 0x1921, 0x1382: 0x1929, 0x1383: 0x1931, 0x1384: 0x1939, 0x1385: 0x1959,\n\t0x1386: 0x1961, 0x1387: 0x1969, 0x1388: 0x1ac9, 0x1389: 0x1989, 0x138a: 0x1ad1, 0x138b: 0x1ad9,\n\t0x138c: 0x19b9, 0x138d: 0x1ae1, 0x138e: 0x19c1, 0x138f: 0x19c9, 0x1390: 0x1a31, 0x1391: 0x1ae9,\n\t0x1392: 0x1af1, 0x1393: 0x1a09, 0x1394: 0x1af9, 0x1395: 0x1a11, 0x1396: 0x1a19, 0x1397: 0x1751,\n\t0x1398: 0x1759, 0x1399: 0x1b01, 0x139a: 0x1761, 0x139b: 0x1b09, 0x139c: 0x1771, 0x139d: 0x1779,\n\t0x139e: 0x1781, 0x139f: 0x1789, 0x13a0: 0x1b11, 0x13a1: 0x17a1, 0x13a2: 0x17a9, 0x13a3: 0x17b1,\n\t0x13a4: 0x17b9, 0x13a5: 0x1b19, 0x13a6: 0x17d9, 0x13a7: 0x17f1, 0x13a8: 0x17f9, 0x13a9: 0x1801,\n\t0x13aa: 0x1809, 0x13ab: 0x1811, 0x13ac: 0x1821, 0x13ad: 0x1829, 0x13ae: 0x1831, 0x13af: 0x1839,\n\t0x13b0: 0x1841, 0x13b1: 0x1849, 0x13b2: 0x1b21, 0x13b3: 0x1851, 0x13b4: 0x1859, 0x13b5: 0x1861,\n\t0x13b6: 0x1869, 0x13b7: 0x1871, 0x13b8: 0x1879, 0x13b9: 0x1889, 0x13ba: 0x1891, 0x13bb: 0x1899,\n\t0x13bc: 0x18a1, 0x13bd: 0x18a9, 0x13be: 0x18b1, 0x13bf: 0x18b9,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x18c1, 0x13c1: 0x18c9, 0x13c2: 0x18e1, 0x13c3: 0x18e9, 0x13c4: 0x1909, 0x13c5: 0x1911,\n\t0x13c6: 0x1919, 0x13c7: 0x1921, 0x13c8: 0x1929, 0x13c9: 0x1941, 0x13ca: 0x1949, 0x13cb: 0x1951,\n\t0x13cc: 0x1959, 0x13cd: 0x1b29, 0x13ce: 0x1971, 0x13cf: 0x1979, 0x13d0: 0x1981, 0x13d1: 0x1989,\n\t0x13d2: 0x19a1, 0x13d3: 0x19a9, 0x13d4: 0x19b1, 0x13d5: 0x19b9, 0x13d6: 0x1b31, 0x13d7: 0x19d1,\n\t0x13d8: 0x19d9, 0x13d9: 0x1b39, 0x13da: 0x19f1, 0x13db: 0x19f9, 0x13dc: 0x1a01, 0x13dd: 0x1a09,\n\t0x13de: 0x1b41, 0x13df: 0x1761, 0x13e0: 0x1b09, 0x13e1: 0x1789, 0x13e2: 0x1b11, 0x13e3: 0x17b9,\n\t0x13e4: 0x1b19, 0x13e5: 0x17d9, 0x13e6: 0x1b49, 0x13e7: 0x1841, 0x13e8: 0x1b51, 0x13e9: 0x1b59,\n\t0x13ea: 0x1b61, 0x13eb: 0x1921, 0x13ec: 0x1929, 0x13ed: 0x1959, 0x13ee: 0x19b9, 0x13ef: 0x1b31,\n\t0x13f0: 0x1a09, 0x13f1: 0x1b41, 0x13f2: 0x1b69, 0x13f3: 0x1b71, 0x13f4: 0x1b79, 0x13f5: 0x1b81,\n\t0x13f6: 0x1b89, 0x13f7: 0x1b91, 0x13f8: 0x1b99, 0x13f9: 0x1ba1, 0x13fa: 0x1ba9, 0x13fb: 0x1bb1,\n\t0x13fc: 0x1bb9, 0x13fd: 0x1bc1, 0x13fe: 0x1bc9, 0x13ff: 0x1bd1,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x1bd9, 0x1401: 0x1be1, 0x1402: 0x1be9, 0x1403: 0x1bf1, 0x1404: 0x1bf9, 0x1405: 0x1c01,\n\t0x1406: 0x1c09, 0x1407: 0x1c11, 0x1408: 0x1c19, 0x1409: 0x1c21, 0x140a: 0x1c29, 0x140b: 0x1c31,\n\t0x140c: 0x1b59, 0x140d: 0x1c39, 0x140e: 0x1c41, 0x140f: 0x1c49, 0x1410: 0x1c51, 0x1411: 0x1b81,\n\t0x1412: 0x1b89, 0x1413: 0x1b91, 0x1414: 0x1b99, 0x1415: 0x1ba1, 0x1416: 0x1ba9, 0x1417: 0x1bb1,\n\t0x1418: 0x1bb9, 0x1419: 0x1bc1, 0x141a: 0x1bc9, 0x141b: 0x1bd1, 0x141c: 0x1bd9, 0x141d: 0x1be1,\n\t0x141e: 0x1be9, 0x141f: 0x1bf1, 0x1420: 0x1bf9, 0x1421: 0x1c01, 0x1422: 0x1c09, 0x1423: 0x1c11,\n\t0x1424: 0x1c19, 0x1425: 0x1c21, 0x1426: 0x1c29, 0x1427: 0x1c31, 0x1428: 0x1b59, 0x1429: 0x1c39,\n\t0x142a: 0x1c41, 0x142b: 0x1c49, 0x142c: 0x1c51, 0x142d: 0x1c21, 0x142e: 0x1c29, 0x142f: 0x1c31,\n\t0x1430: 0x1b59, 0x1431: 0x1b51, 0x1432: 0x1b61, 0x1433: 0x1881, 0x1434: 0x1829, 0x1435: 0x1831,\n\t0x1436: 0x1839, 0x1437: 0x1c21, 0x1438: 0x1c29, 0x1439: 0x1c31, 0x143a: 0x1881, 0x143b: 0x1889,\n\t0x143c: 0x1c59, 0x143d: 0x1c59, 0x143e: 0x0018, 0x143f: 0x0018,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x0040, 0x1441: 0x0040, 0x1442: 0x0040, 0x1443: 0x0040, 0x1444: 0x0040, 0x1445: 0x0040,\n\t0x1446: 0x0040, 0x1447: 0x0040, 0x1448: 0x0040, 0x1449: 0x0040, 0x144a: 0x0040, 0x144b: 0x0040,\n\t0x144c: 0x0040, 0x144d: 0x0040, 0x144e: 0x0040, 0x144f: 0x0040, 0x1450: 0x1c61, 0x1451: 0x1c69,\n\t0x1452: 0x1c69, 0x1453: 0x1c71, 0x1454: 0x1c79, 0x1455: 0x1c81, 0x1456: 0x1c89, 0x1457: 0x1c91,\n\t0x1458: 0x1c99, 0x1459: 0x1c99, 0x145a: 0x1ca1, 0x145b: 0x1ca9, 0x145c: 0x1cb1, 0x145d: 0x1cb9,\n\t0x145e: 0x1cc1, 0x145f: 0x1cc9, 0x1460: 0x1cc9, 0x1461: 0x1cd1, 0x1462: 0x1cd9, 0x1463: 0x1cd9,\n\t0x1464: 0x1ce1, 0x1465: 0x1ce1, 0x1466: 0x1ce9, 0x1467: 0x1cf1, 0x1468: 0x1cf1, 0x1469: 0x1cf9,\n\t0x146a: 0x1d01, 0x146b: 0x1d01, 0x146c: 0x1d09, 0x146d: 0x1d09, 0x146e: 0x1d11, 0x146f: 0x1d19,\n\t0x1470: 0x1d19, 0x1471: 0x1d21, 0x1472: 0x1d21, 0x1473: 0x1d29, 0x1474: 0x1d31, 0x1475: 0x1d39,\n\t0x1476: 0x1d41, 0x1477: 0x1d41, 0x1478: 0x1d49, 0x1479: 0x1d51, 0x147a: 0x1d59, 0x147b: 0x1d61,\n\t0x147c: 0x1d69, 0x147d: 0x1d69, 0x147e: 0x1d71, 0x147f: 0x1d79,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x1f29, 0x1481: 0x1f31, 0x1482: 0x1f39, 0x1483: 0x1f11, 0x1484: 0x1d39, 0x1485: 0x1ce9,\n\t0x1486: 0x1f41, 0x1487: 0x1f49, 0x1488: 0x0040, 0x1489: 0x0040, 0x148a: 0x0040, 0x148b: 0x0040,\n\t0x148c: 0x0040, 0x148d: 0x0040, 0x148e: 0x0040, 0x148f: 0x0040, 0x1490: 0x0040, 0x1491: 0x0040,\n\t0x1492: 0x0040, 0x1493: 0x0040, 0x1494: 0x0040, 0x1495: 0x0040, 0x1496: 0x0040, 0x1497: 0x0040,\n\t0x1498: 0x0040, 0x1499: 0x0040, 0x149a: 0x0040, 0x149b: 0x0040, 0x149c: 0x0040, 0x149d: 0x0040,\n\t0x149e: 0x0040, 0x149f: 0x0040, 0x14a0: 0x0040, 0x14a1: 0x0040, 0x14a2: 0x0040, 0x14a3: 0x0040,\n\t0x14a4: 0x0040, 0x14a5: 0x0040, 0x14a6: 0x0040, 0x14a7: 0x0040, 0x14a8: 0x0040, 0x14a9: 0x0040,\n\t0x14aa: 0x0040, 0x14ab: 0x0040, 0x14ac: 0x0040, 0x14ad: 0x0040, 0x14ae: 0x0040, 0x14af: 0x0040,\n\t0x14b0: 0x1f51, 0x14b1: 0x1f59, 0x14b2: 0x1f61, 0x14b3: 0x1f69, 0x14b4: 0x1f71, 0x14b5: 0x1f79,\n\t0x14b6: 0x1f81, 0x14b7: 0x1f89, 0x14b8: 0x1f91, 0x14b9: 0x1f99, 0x14ba: 0x1fa2, 0x14bb: 0x1faa,\n\t0x14bc: 0x1fb1, 0x14bd: 0x0018, 0x14be: 0x0040, 0x14bf: 0x0040,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x33c0, 0x14c1: 0x33c0, 0x14c2: 0x33c0, 0x14c3: 0x33c0, 0x14c4: 0x33c0, 0x14c5: 0x33c0,\n\t0x14c6: 0x33c0, 0x14c7: 0x33c0, 0x14c8: 0x33c0, 0x14c9: 0x33c0, 0x14ca: 0x33c0, 0x14cb: 0x33c0,\n\t0x14cc: 0x33c0, 0x14cd: 0x33c0, 0x14ce: 0x33c0, 0x14cf: 0x33c0, 0x14d0: 0x1fba, 0x14d1: 0x7d8d,\n\t0x14d2: 0x0040, 0x14d3: 0x1fc2, 0x14d4: 0x0122, 0x14d5: 0x1fca, 0x14d6: 0x1fd2, 0x14d7: 0x7dad,\n\t0x14d8: 0x7dcd, 0x14d9: 0x0040, 0x14da: 0x0040, 0x14db: 0x0040, 0x14dc: 0x0040, 0x14dd: 0x0040,\n\t0x14de: 0x0040, 0x14df: 0x0040, 0x14e0: 0x3308, 0x14e1: 0x3308, 0x14e2: 0x3308, 0x14e3: 0x3308,\n\t0x14e4: 0x3308, 0x14e5: 0x3308, 0x14e6: 0x3308, 0x14e7: 0x3308, 0x14e8: 0x3308, 0x14e9: 0x3308,\n\t0x14ea: 0x3308, 0x14eb: 0x3308, 0x14ec: 0x3308, 0x14ed: 0x3308, 0x14ee: 0x3308, 0x14ef: 0x3308,\n\t0x14f0: 0x0040, 0x14f1: 0x7ded, 0x14f2: 0x7e0d, 0x14f3: 0x1fda, 0x14f4: 0x1fda, 0x14f5: 0x072a,\n\t0x14f6: 0x0732, 0x14f7: 0x1fe2, 0x14f8: 0x1fea, 0x14f9: 0x7e2d, 0x14fa: 0x7e4d, 0x14fb: 0x7e6d,\n\t0x14fc: 0x7e2d, 0x14fd: 0x7e8d, 0x14fe: 0x7ead, 0x14ff: 0x7e8d,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x7ecd, 0x1501: 0x7eed, 0x1502: 0x7f0d, 0x1503: 0x7eed, 0x1504: 0x7f2d, 0x1505: 0x0018,\n\t0x1506: 0x0018, 0x1507: 0x1ff2, 0x1508: 0x1ffa, 0x1509: 0x7f4e, 0x150a: 0x7f6e, 0x150b: 0x7f8e,\n\t0x150c: 0x7fae, 0x150d: 0x1fda, 0x150e: 0x1fda, 0x150f: 0x1fda, 0x1510: 0x1fba, 0x1511: 0x7fcd,\n\t0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0122, 0x1515: 0x1fc2, 0x1516: 0x1fd2, 0x1517: 0x1fca,\n\t0x1518: 0x7fed, 0x1519: 0x072a, 0x151a: 0x0732, 0x151b: 0x1fe2, 0x151c: 0x1fea, 0x151d: 0x7ecd,\n\t0x151e: 0x7f2d, 0x151f: 0x2002, 0x1520: 0x200a, 0x1521: 0x2012, 0x1522: 0x071a, 0x1523: 0x2019,\n\t0x1524: 0x2022, 0x1525: 0x202a, 0x1526: 0x0722, 0x1527: 0x0040, 0x1528: 0x2032, 0x1529: 0x203a,\n\t0x152a: 0x2042, 0x152b: 0x204a, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040,\n\t0x1530: 0x800e, 0x1531: 0x2051, 0x1532: 0x802e, 0x1533: 0x0808, 0x1534: 0x804e, 0x1535: 0x0040,\n\t0x1536: 0x806e, 0x1537: 0x2059, 0x1538: 0x808e, 0x1539: 0x2061, 0x153a: 0x80ae, 0x153b: 0x2069,\n\t0x153c: 0x80ce, 0x153d: 0x2071, 0x153e: 0x80ee, 0x153f: 0x2079,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x2081, 0x1541: 0x2089, 0x1542: 0x2089, 0x1543: 0x2091, 0x1544: 0x2091, 0x1545: 0x2099,\n\t0x1546: 0x2099, 0x1547: 0x20a1, 0x1548: 0x20a1, 0x1549: 0x20a9, 0x154a: 0x20a9, 0x154b: 0x20a9,\n\t0x154c: 0x20a9, 0x154d: 0x20b1, 0x154e: 0x20b1, 0x154f: 0x20b9, 0x1550: 0x20b9, 0x1551: 0x20b9,\n\t0x1552: 0x20b9, 0x1553: 0x20c1, 0x1554: 0x20c1, 0x1555: 0x20c9, 0x1556: 0x20c9, 0x1557: 0x20c9,\n\t0x1558: 0x20c9, 0x1559: 0x20d1, 0x155a: 0x20d1, 0x155b: 0x20d1, 0x155c: 0x20d1, 0x155d: 0x20d9,\n\t0x155e: 0x20d9, 0x155f: 0x20d9, 0x1560: 0x20d9, 0x1561: 0x20e1, 0x1562: 0x20e1, 0x1563: 0x20e1,\n\t0x1564: 0x20e1, 0x1565: 0x20e9, 0x1566: 0x20e9, 0x1567: 0x20e9, 0x1568: 0x20e9, 0x1569: 0x20f1,\n\t0x156a: 0x20f1, 0x156b: 0x20f9, 0x156c: 0x20f9, 0x156d: 0x2101, 0x156e: 0x2101, 0x156f: 0x2109,\n\t0x1570: 0x2109, 0x1571: 0x2111, 0x1572: 0x2111, 0x1573: 0x2111, 0x1574: 0x2111, 0x1575: 0x2119,\n\t0x1576: 0x2119, 0x1577: 0x2119, 0x1578: 0x2119, 0x1579: 0x2121, 0x157a: 0x2121, 0x157b: 0x2121,\n\t0x157c: 0x2121, 0x157d: 0x2129, 0x157e: 0x2129, 0x157f: 0x2129,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x2129, 0x1581: 0x2131, 0x1582: 0x2131, 0x1583: 0x2131, 0x1584: 0x2131, 0x1585: 0x2139,\n\t0x1586: 0x2139, 0x1587: 0x2139, 0x1588: 0x2139, 0x1589: 0x2141, 0x158a: 0x2141, 0x158b: 0x2141,\n\t0x158c: 0x2141, 0x158d: 0x2149, 0x158e: 0x2149, 0x158f: 0x2149, 0x1590: 0x2149, 0x1591: 0x2151,\n\t0x1592: 0x2151, 0x1593: 0x2151, 0x1594: 0x2151, 0x1595: 0x2159, 0x1596: 0x2159, 0x1597: 0x2159,\n\t0x1598: 0x2159, 0x1599: 0x2161, 0x159a: 0x2161, 0x159b: 0x2161, 0x159c: 0x2161, 0x159d: 0x2169,\n\t0x159e: 0x2169, 0x159f: 0x2169, 0x15a0: 0x2169, 0x15a1: 0x2171, 0x15a2: 0x2171, 0x15a3: 0x2171,\n\t0x15a4: 0x2171, 0x15a5: 0x2179, 0x15a6: 0x2179, 0x15a7: 0x2179, 0x15a8: 0x2179, 0x15a9: 0x2181,\n\t0x15aa: 0x2181, 0x15ab: 0x2181, 0x15ac: 0x2181, 0x15ad: 0x2189, 0x15ae: 0x2189, 0x15af: 0x1701,\n\t0x15b0: 0x1701, 0x15b1: 0x2191, 0x15b2: 0x2191, 0x15b3: 0x2191, 0x15b4: 0x2191, 0x15b5: 0x2199,\n\t0x15b6: 0x2199, 0x15b7: 0x21a1, 0x15b8: 0x21a1, 0x15b9: 0x21a9, 0x15ba: 0x21a9, 0x15bb: 0x21b1,\n\t0x15bc: 0x21b1, 0x15bd: 0x0040, 0x15be: 0x0040, 0x15bf: 0x03c0,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x0040, 0x15c1: 0x1fca, 0x15c2: 0x21ba, 0x15c3: 0x2002, 0x15c4: 0x203a, 0x15c5: 0x2042,\n\t0x15c6: 0x200a, 0x15c7: 0x21c2, 0x15c8: 0x072a, 0x15c9: 0x0732, 0x15ca: 0x2012, 0x15cb: 0x071a,\n\t0x15cc: 0x1fba, 0x15cd: 0x2019, 0x15ce: 0x0961, 0x15cf: 0x21ca, 0x15d0: 0x06e1, 0x15d1: 0x0049,\n\t0x15d2: 0x0029, 0x15d3: 0x0031, 0x15d4: 0x06e9, 0x15d5: 0x06f1, 0x15d6: 0x06f9, 0x15d7: 0x0701,\n\t0x15d8: 0x0709, 0x15d9: 0x0711, 0x15da: 0x1fc2, 0x15db: 0x0122, 0x15dc: 0x2022, 0x15dd: 0x0722,\n\t0x15de: 0x202a, 0x15df: 0x1fd2, 0x15e0: 0x204a, 0x15e1: 0x0019, 0x15e2: 0x02e9, 0x15e3: 0x03d9,\n\t0x15e4: 0x02f1, 0x15e5: 0x02f9, 0x15e6: 0x03f1, 0x15e7: 0x0309, 0x15e8: 0x00a9, 0x15e9: 0x0311,\n\t0x15ea: 0x00b1, 0x15eb: 0x0319, 0x15ec: 0x0101, 0x15ed: 0x0321, 0x15ee: 0x0329, 0x15ef: 0x0051,\n\t0x15f0: 0x0339, 0x15f1: 0x0751, 0x15f2: 0x00b9, 0x15f3: 0x0089, 0x15f4: 0x0341, 0x15f5: 0x0349,\n\t0x15f6: 0x0391, 0x15f7: 0x00c1, 0x15f8: 0x0109, 0x15f9: 0x00c9, 0x15fa: 0x04b1, 0x15fb: 0x1ff2,\n\t0x15fc: 0x2032, 0x15fd: 0x1ffa, 0x15fe: 0x21d2, 0x15ff: 0x1fda,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x0672, 0x1601: 0x0019, 0x1602: 0x02e9, 0x1603: 0x03d9, 0x1604: 0x02f1, 0x1605: 0x02f9,\n\t0x1606: 0x03f1, 0x1607: 0x0309, 0x1608: 0x00a9, 0x1609: 0x0311, 0x160a: 0x00b1, 0x160b: 0x0319,\n\t0x160c: 0x0101, 0x160d: 0x0321, 0x160e: 0x0329, 0x160f: 0x0051, 0x1610: 0x0339, 0x1611: 0x0751,\n\t0x1612: 0x00b9, 0x1613: 0x0089, 0x1614: 0x0341, 0x1615: 0x0349, 0x1616: 0x0391, 0x1617: 0x00c1,\n\t0x1618: 0x0109, 0x1619: 0x00c9, 0x161a: 0x04b1, 0x161b: 0x1fe2, 0x161c: 0x21da, 0x161d: 0x1fea,\n\t0x161e: 0x21e2, 0x161f: 0x810d, 0x1620: 0x812d, 0x1621: 0x0961, 0x1622: 0x814d, 0x1623: 0x814d,\n\t0x1624: 0x816d, 0x1625: 0x818d, 0x1626: 0x81ad, 0x1627: 0x81cd, 0x1628: 0x81ed, 0x1629: 0x820d,\n\t0x162a: 0x822d, 0x162b: 0x824d, 0x162c: 0x826d, 0x162d: 0x828d, 0x162e: 0x82ad, 0x162f: 0x82cd,\n\t0x1630: 0x82ed, 0x1631: 0x830d, 0x1632: 0x832d, 0x1633: 0x834d, 0x1634: 0x836d, 0x1635: 0x838d,\n\t0x1636: 0x83ad, 0x1637: 0x83cd, 0x1638: 0x83ed, 0x1639: 0x840d, 0x163a: 0x842d, 0x163b: 0x844d,\n\t0x163c: 0x81ed, 0x163d: 0x846d, 0x163e: 0x848d, 0x163f: 0x824d,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x84ad, 0x1641: 0x84cd, 0x1642: 0x84ed, 0x1643: 0x850d, 0x1644: 0x852d, 0x1645: 0x854d,\n\t0x1646: 0x856d, 0x1647: 0x858d, 0x1648: 0x850d, 0x1649: 0x85ad, 0x164a: 0x850d, 0x164b: 0x85cd,\n\t0x164c: 0x85cd, 0x164d: 0x85ed, 0x164e: 0x85ed, 0x164f: 0x860d, 0x1650: 0x854d, 0x1651: 0x862d,\n\t0x1652: 0x864d, 0x1653: 0x862d, 0x1654: 0x866d, 0x1655: 0x864d, 0x1656: 0x868d, 0x1657: 0x868d,\n\t0x1658: 0x86ad, 0x1659: 0x86ad, 0x165a: 0x86cd, 0x165b: 0x86cd, 0x165c: 0x864d, 0x165d: 0x814d,\n\t0x165e: 0x86ed, 0x165f: 0x870d, 0x1660: 0x0040, 0x1661: 0x872d, 0x1662: 0x874d, 0x1663: 0x876d,\n\t0x1664: 0x878d, 0x1665: 0x876d, 0x1666: 0x87ad, 0x1667: 0x87cd, 0x1668: 0x87ed, 0x1669: 0x87ed,\n\t0x166a: 0x880d, 0x166b: 0x880d, 0x166c: 0x882d, 0x166d: 0x882d, 0x166e: 0x880d, 0x166f: 0x880d,\n\t0x1670: 0x884d, 0x1671: 0x886d, 0x1672: 0x888d, 0x1673: 0x88ad, 0x1674: 0x88cd, 0x1675: 0x88ed,\n\t0x1676: 0x88ed, 0x1677: 0x88ed, 0x1678: 0x890d, 0x1679: 0x890d, 0x167a: 0x890d, 0x167b: 0x890d,\n\t0x167c: 0x87ed, 0x167d: 0x87ed, 0x167e: 0x87ed, 0x167f: 0x0040,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x0040, 0x1681: 0x0040, 0x1682: 0x874d, 0x1683: 0x872d, 0x1684: 0x892d, 0x1685: 0x872d,\n\t0x1686: 0x874d, 0x1687: 0x872d, 0x1688: 0x0040, 0x1689: 0x0040, 0x168a: 0x894d, 0x168b: 0x874d,\n\t0x168c: 0x896d, 0x168d: 0x892d, 0x168e: 0x896d, 0x168f: 0x874d, 0x1690: 0x0040, 0x1691: 0x0040,\n\t0x1692: 0x898d, 0x1693: 0x89ad, 0x1694: 0x88ad, 0x1695: 0x896d, 0x1696: 0x892d, 0x1697: 0x896d,\n\t0x1698: 0x0040, 0x1699: 0x0040, 0x169a: 0x89cd, 0x169b: 0x89ed, 0x169c: 0x89cd, 0x169d: 0x0040,\n\t0x169e: 0x0040, 0x169f: 0x0040, 0x16a0: 0x21e9, 0x16a1: 0x21f1, 0x16a2: 0x21f9, 0x16a3: 0x8a0e,\n\t0x16a4: 0x2201, 0x16a5: 0x2209, 0x16a6: 0x8a2d, 0x16a7: 0x0040, 0x16a8: 0x8a4d, 0x16a9: 0x8a6d,\n\t0x16aa: 0x8a8d, 0x16ab: 0x8a6d, 0x16ac: 0x8aad, 0x16ad: 0x8acd, 0x16ae: 0x8aed, 0x16af: 0x0040,\n\t0x16b0: 0x0040, 0x16b1: 0x0040, 0x16b2: 0x0040, 0x16b3: 0x0040, 0x16b4: 0x0040, 0x16b5: 0x0040,\n\t0x16b6: 0x0040, 0x16b7: 0x0040, 0x16b8: 0x0040, 0x16b9: 0x0340, 0x16ba: 0x0340, 0x16bb: 0x0340,\n\t0x16bc: 0x0040, 0x16bd: 0x0040, 0x16be: 0x0040, 0x16bf: 0x0040,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x0a08, 0x16c1: 0x0a08, 0x16c2: 0x0a08, 0x16c3: 0x0a08, 0x16c4: 0x0a08, 0x16c5: 0x0c08,\n\t0x16c6: 0x0808, 0x16c7: 0x0c08, 0x16c8: 0x0818, 0x16c9: 0x0c08, 0x16ca: 0x0c08, 0x16cb: 0x0808,\n\t0x16cc: 0x0808, 0x16cd: 0x0908, 0x16ce: 0x0c08, 0x16cf: 0x0c08, 0x16d0: 0x0c08, 0x16d1: 0x0c08,\n\t0x16d2: 0x0c08, 0x16d3: 0x0a08, 0x16d4: 0x0a08, 0x16d5: 0x0a08, 0x16d6: 0x0a08, 0x16d7: 0x0908,\n\t0x16d8: 0x0a08, 0x16d9: 0x0a08, 0x16da: 0x0a08, 0x16db: 0x0a08, 0x16dc: 0x0a08, 0x16dd: 0x0c08,\n\t0x16de: 0x0a08, 0x16df: 0x0a08, 0x16e0: 0x0a08, 0x16e1: 0x0c08, 0x16e2: 0x0808, 0x16e3: 0x0808,\n\t0x16e4: 0x0c08, 0x16e5: 0x3308, 0x16e6: 0x3308, 0x16e7: 0x0040, 0x16e8: 0x0040, 0x16e9: 0x0040,\n\t0x16ea: 0x0040, 0x16eb: 0x0a18, 0x16ec: 0x0a18, 0x16ed: 0x0a18, 0x16ee: 0x0a18, 0x16ef: 0x0c18,\n\t0x16f0: 0x0818, 0x16f1: 0x0818, 0x16f2: 0x0818, 0x16f3: 0x0818, 0x16f4: 0x0818, 0x16f5: 0x0818,\n\t0x16f6: 0x0818, 0x16f7: 0x0040, 0x16f8: 0x0040, 0x16f9: 0x0040, 0x16fa: 0x0040, 0x16fb: 0x0040,\n\t0x16fc: 0x0040, 0x16fd: 0x0040, 0x16fe: 0x0040, 0x16ff: 0x0040,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0a08, 0x1701: 0x0c08, 0x1702: 0x0a08, 0x1703: 0x0c08, 0x1704: 0x0c08, 0x1705: 0x0c08,\n\t0x1706: 0x0a08, 0x1707: 0x0a08, 0x1708: 0x0a08, 0x1709: 0x0c08, 0x170a: 0x0a08, 0x170b: 0x0a08,\n\t0x170c: 0x0c08, 0x170d: 0x0a08, 0x170e: 0x0c08, 0x170f: 0x0c08, 0x1710: 0x0a08, 0x1711: 0x0c08,\n\t0x1712: 0x0040, 0x1713: 0x0040, 0x1714: 0x0040, 0x1715: 0x0040, 0x1716: 0x0040, 0x1717: 0x0040,\n\t0x1718: 0x0040, 0x1719: 0x0818, 0x171a: 0x0818, 0x171b: 0x0818, 0x171c: 0x0818, 0x171d: 0x0040,\n\t0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0x0040, 0x1721: 0x0040, 0x1722: 0x0040, 0x1723: 0x0040,\n\t0x1724: 0x0040, 0x1725: 0x0040, 0x1726: 0x0040, 0x1727: 0x0040, 0x1728: 0x0040, 0x1729: 0x0c18,\n\t0x172a: 0x0c18, 0x172b: 0x0c18, 0x172c: 0x0c18, 0x172d: 0x0a18, 0x172e: 0x0a18, 0x172f: 0x0818,\n\t0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040,\n\t0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0040, 0x173a: 0x0040, 0x173b: 0x0040,\n\t0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x3308, 0x1741: 0x3308, 0x1742: 0x3008, 0x1743: 0x3008, 0x1744: 0x0040, 0x1745: 0x0008,\n\t0x1746: 0x0008, 0x1747: 0x0008, 0x1748: 0x0008, 0x1749: 0x0008, 0x174a: 0x0008, 0x174b: 0x0008,\n\t0x174c: 0x0008, 0x174d: 0x0040, 0x174e: 0x0040, 0x174f: 0x0008, 0x1750: 0x0008, 0x1751: 0x0040,\n\t0x1752: 0x0040, 0x1753: 0x0008, 0x1754: 0x0008, 0x1755: 0x0008, 0x1756: 0x0008, 0x1757: 0x0008,\n\t0x1758: 0x0008, 0x1759: 0x0008, 0x175a: 0x0008, 0x175b: 0x0008, 0x175c: 0x0008, 0x175d: 0x0008,\n\t0x175e: 0x0008, 0x175f: 0x0008, 0x1760: 0x0008, 0x1761: 0x0008, 0x1762: 0x0008, 0x1763: 0x0008,\n\t0x1764: 0x0008, 0x1765: 0x0008, 0x1766: 0x0008, 0x1767: 0x0008, 0x1768: 0x0008, 0x1769: 0x0040,\n\t0x176a: 0x0008, 0x176b: 0x0008, 0x176c: 0x0008, 0x176d: 0x0008, 0x176e: 0x0008, 0x176f: 0x0008,\n\t0x1770: 0x0008, 0x1771: 0x0040, 0x1772: 0x0008, 0x1773: 0x0008, 0x1774: 0x0040, 0x1775: 0x0008,\n\t0x1776: 0x0008, 0x1777: 0x0008, 0x1778: 0x0008, 0x1779: 0x0008, 0x177a: 0x0040, 0x177b: 0x3308,\n\t0x177c: 0x3308, 0x177d: 0x0008, 0x177e: 0x3008, 0x177f: 0x3008,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x3308, 0x1781: 0x3008, 0x1782: 0x3008, 0x1783: 0x3008, 0x1784: 0x3008, 0x1785: 0x0040,\n\t0x1786: 0x0040, 0x1787: 0x3008, 0x1788: 0x3008, 0x1789: 0x0040, 0x178a: 0x0040, 0x178b: 0x3008,\n\t0x178c: 0x3008, 0x178d: 0x3808, 0x178e: 0x0040, 0x178f: 0x0040, 0x1790: 0x0008, 0x1791: 0x0040,\n\t0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x3008,\n\t0x1798: 0x0040, 0x1799: 0x0040, 0x179a: 0x0040, 0x179b: 0x0040, 0x179c: 0x0040, 0x179d: 0x0008,\n\t0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x3008, 0x17a3: 0x3008,\n\t0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x3308, 0x17a7: 0x3308, 0x17a8: 0x3308, 0x17a9: 0x3308,\n\t0x17aa: 0x3308, 0x17ab: 0x3308, 0x17ac: 0x3308, 0x17ad: 0x0040, 0x17ae: 0x0040, 0x17af: 0x0040,\n\t0x17b0: 0x3308, 0x17b1: 0x3308, 0x17b2: 0x3308, 0x17b3: 0x3308, 0x17b4: 0x3308, 0x17b5: 0x0040,\n\t0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040,\n\t0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x0008, 0x17c1: 0x0008, 0x17c2: 0x0008, 0x17c3: 0x0008, 0x17c4: 0x0008, 0x17c5: 0x0008,\n\t0x17c6: 0x0008, 0x17c7: 0x0040, 0x17c8: 0x0040, 0x17c9: 0x0008, 0x17ca: 0x0040, 0x17cb: 0x0040,\n\t0x17cc: 0x0008, 0x17cd: 0x0008, 0x17ce: 0x0008, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0008,\n\t0x17d2: 0x0008, 0x17d3: 0x0008, 0x17d4: 0x0040, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0040,\n\t0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008,\n\t0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008,\n\t0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0008,\n\t0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008,\n\t0x17f0: 0x3008, 0x17f1: 0x3008, 0x17f2: 0x3008, 0x17f3: 0x3008, 0x17f4: 0x3008, 0x17f5: 0x3008,\n\t0x17f6: 0x0040, 0x17f7: 0x3008, 0x17f8: 0x3008, 0x17f9: 0x0040, 0x17fa: 0x0040, 0x17fb: 0x3308,\n\t0x17fc: 0x3308, 0x17fd: 0x3808, 0x17fe: 0x3b08, 0x17ff: 0x0008,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x0019, 0x1801: 0x02e9, 0x1802: 0x03d9, 0x1803: 0x02f1, 0x1804: 0x02f9, 0x1805: 0x03f1,\n\t0x1806: 0x0309, 0x1807: 0x00a9, 0x1808: 0x0311, 0x1809: 0x00b1, 0x180a: 0x0319, 0x180b: 0x0101,\n\t0x180c: 0x0321, 0x180d: 0x0329, 0x180e: 0x0051, 0x180f: 0x0339, 0x1810: 0x0751, 0x1811: 0x00b9,\n\t0x1812: 0x0089, 0x1813: 0x0341, 0x1814: 0x0349, 0x1815: 0x0391, 0x1816: 0x00c1, 0x1817: 0x0109,\n\t0x1818: 0x00c9, 0x1819: 0x04b1, 0x181a: 0x0019, 0x181b: 0x02e9, 0x181c: 0x03d9, 0x181d: 0x02f1,\n\t0x181e: 0x02f9, 0x181f: 0x03f1, 0x1820: 0x0309, 0x1821: 0x00a9, 0x1822: 0x0311, 0x1823: 0x00b1,\n\t0x1824: 0x0319, 0x1825: 0x0101, 0x1826: 0x0321, 0x1827: 0x0329, 0x1828: 0x0051, 0x1829: 0x0339,\n\t0x182a: 0x0751, 0x182b: 0x00b9, 0x182c: 0x0089, 0x182d: 0x0341, 0x182e: 0x0349, 0x182f: 0x0391,\n\t0x1830: 0x00c1, 0x1831: 0x0109, 0x1832: 0x00c9, 0x1833: 0x04b1, 0x1834: 0x0019, 0x1835: 0x02e9,\n\t0x1836: 0x03d9, 0x1837: 0x02f1, 0x1838: 0x02f9, 0x1839: 0x03f1, 0x183a: 0x0309, 0x183b: 0x00a9,\n\t0x183c: 0x0311, 0x183d: 0x00b1, 0x183e: 0x0319, 0x183f: 0x0101,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x0321, 0x1841: 0x0329, 0x1842: 0x0051, 0x1843: 0x0339, 0x1844: 0x0751, 0x1845: 0x00b9,\n\t0x1846: 0x0089, 0x1847: 0x0341, 0x1848: 0x0349, 0x1849: 0x0391, 0x184a: 0x00c1, 0x184b: 0x0109,\n\t0x184c: 0x00c9, 0x184d: 0x04b1, 0x184e: 0x0019, 0x184f: 0x02e9, 0x1850: 0x03d9, 0x1851: 0x02f1,\n\t0x1852: 0x02f9, 0x1853: 0x03f1, 0x1854: 0x0309, 0x1855: 0x0040, 0x1856: 0x0311, 0x1857: 0x00b1,\n\t0x1858: 0x0319, 0x1859: 0x0101, 0x185a: 0x0321, 0x185b: 0x0329, 0x185c: 0x0051, 0x185d: 0x0339,\n\t0x185e: 0x0751, 0x185f: 0x00b9, 0x1860: 0x0089, 0x1861: 0x0341, 0x1862: 0x0349, 0x1863: 0x0391,\n\t0x1864: 0x00c1, 0x1865: 0x0109, 0x1866: 0x00c9, 0x1867: 0x04b1, 0x1868: 0x0019, 0x1869: 0x02e9,\n\t0x186a: 0x03d9, 0x186b: 0x02f1, 0x186c: 0x02f9, 0x186d: 0x03f1, 0x186e: 0x0309, 0x186f: 0x00a9,\n\t0x1870: 0x0311, 0x1871: 0x00b1, 0x1872: 0x0319, 0x1873: 0x0101, 0x1874: 0x0321, 0x1875: 0x0329,\n\t0x1876: 0x0051, 0x1877: 0x0339, 0x1878: 0x0751, 0x1879: 0x00b9, 0x187a: 0x0089, 0x187b: 0x0341,\n\t0x187c: 0x0349, 0x187d: 0x0391, 0x187e: 0x00c1, 0x187f: 0x0109,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x00c9, 0x1881: 0x04b1, 0x1882: 0x0019, 0x1883: 0x02e9, 0x1884: 0x03d9, 0x1885: 0x02f1,\n\t0x1886: 0x02f9, 0x1887: 0x03f1, 0x1888: 0x0309, 0x1889: 0x00a9, 0x188a: 0x0311, 0x188b: 0x00b1,\n\t0x188c: 0x0319, 0x188d: 0x0101, 0x188e: 0x0321, 0x188f: 0x0329, 0x1890: 0x0051, 0x1891: 0x0339,\n\t0x1892: 0x0751, 0x1893: 0x00b9, 0x1894: 0x0089, 0x1895: 0x0341, 0x1896: 0x0349, 0x1897: 0x0391,\n\t0x1898: 0x00c1, 0x1899: 0x0109, 0x189a: 0x00c9, 0x189b: 0x04b1, 0x189c: 0x0019, 0x189d: 0x0040,\n\t0x189e: 0x03d9, 0x189f: 0x02f1, 0x18a0: 0x0040, 0x18a1: 0x0040, 0x18a2: 0x0309, 0x18a3: 0x0040,\n\t0x18a4: 0x0040, 0x18a5: 0x00b1, 0x18a6: 0x0319, 0x18a7: 0x0040, 0x18a8: 0x0040, 0x18a9: 0x0329,\n\t0x18aa: 0x0051, 0x18ab: 0x0339, 0x18ac: 0x0751, 0x18ad: 0x0040, 0x18ae: 0x0089, 0x18af: 0x0341,\n\t0x18b0: 0x0349, 0x18b1: 0x0391, 0x18b2: 0x00c1, 0x18b3: 0x0109, 0x18b4: 0x00c9, 0x18b5: 0x04b1,\n\t0x18b6: 0x0019, 0x18b7: 0x02e9, 0x18b8: 0x03d9, 0x18b9: 0x02f1, 0x18ba: 0x0040, 0x18bb: 0x03f1,\n\t0x18bc: 0x0040, 0x18bd: 0x00a9, 0x18be: 0x0311, 0x18bf: 0x00b1,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x0319, 0x18c1: 0x0101, 0x18c2: 0x0321, 0x18c3: 0x0329, 0x18c4: 0x0040, 0x18c5: 0x0339,\n\t0x18c6: 0x0751, 0x18c7: 0x00b9, 0x18c8: 0x0089, 0x18c9: 0x0341, 0x18ca: 0x0349, 0x18cb: 0x0391,\n\t0x18cc: 0x00c1, 0x18cd: 0x0109, 0x18ce: 0x00c9, 0x18cf: 0x04b1, 0x18d0: 0x0019, 0x18d1: 0x02e9,\n\t0x18d2: 0x03d9, 0x18d3: 0x02f1, 0x18d4: 0x02f9, 0x18d5: 0x03f1, 0x18d6: 0x0309, 0x18d7: 0x00a9,\n\t0x18d8: 0x0311, 0x18d9: 0x00b1, 0x18da: 0x0319, 0x18db: 0x0101, 0x18dc: 0x0321, 0x18dd: 0x0329,\n\t0x18de: 0x0051, 0x18df: 0x0339, 0x18e0: 0x0751, 0x18e1: 0x00b9, 0x18e2: 0x0089, 0x18e3: 0x0341,\n\t0x18e4: 0x0349, 0x18e5: 0x0391, 0x18e6: 0x00c1, 0x18e7: 0x0109, 0x18e8: 0x00c9, 0x18e9: 0x04b1,\n\t0x18ea: 0x0019, 0x18eb: 0x02e9, 0x18ec: 0x03d9, 0x18ed: 0x02f1, 0x18ee: 0x02f9, 0x18ef: 0x03f1,\n\t0x18f0: 0x0309, 0x18f1: 0x00a9, 0x18f2: 0x0311, 0x18f3: 0x00b1, 0x18f4: 0x0319, 0x18f5: 0x0101,\n\t0x18f6: 0x0321, 0x18f7: 0x0329, 0x18f8: 0x0051, 0x18f9: 0x0339, 0x18fa: 0x0751, 0x18fb: 0x00b9,\n\t0x18fc: 0x0089, 0x18fd: 0x0341, 0x18fe: 0x0349, 0x18ff: 0x0391,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x00c1, 0x1901: 0x0109, 0x1902: 0x00c9, 0x1903: 0x04b1, 0x1904: 0x0019, 0x1905: 0x02e9,\n\t0x1906: 0x0040, 0x1907: 0x02f1, 0x1908: 0x02f9, 0x1909: 0x03f1, 0x190a: 0x0309, 0x190b: 0x0040,\n\t0x190c: 0x0040, 0x190d: 0x00b1, 0x190e: 0x0319, 0x190f: 0x0101, 0x1910: 0x0321, 0x1911: 0x0329,\n\t0x1912: 0x0051, 0x1913: 0x0339, 0x1914: 0x0751, 0x1915: 0x0040, 0x1916: 0x0089, 0x1917: 0x0341,\n\t0x1918: 0x0349, 0x1919: 0x0391, 0x191a: 0x00c1, 0x191b: 0x0109, 0x191c: 0x00c9, 0x191d: 0x0040,\n\t0x191e: 0x0019, 0x191f: 0x02e9, 0x1920: 0x03d9, 0x1921: 0x02f1, 0x1922: 0x02f9, 0x1923: 0x03f1,\n\t0x1924: 0x0309, 0x1925: 0x00a9, 0x1926: 0x0311, 0x1927: 0x00b1, 0x1928: 0x0319, 0x1929: 0x0101,\n\t0x192a: 0x0321, 0x192b: 0x0329, 0x192c: 0x0051, 0x192d: 0x0339, 0x192e: 0x0751, 0x192f: 0x00b9,\n\t0x1930: 0x0089, 0x1931: 0x0341, 0x1932: 0x0349, 0x1933: 0x0391, 0x1934: 0x00c1, 0x1935: 0x0109,\n\t0x1936: 0x00c9, 0x1937: 0x04b1, 0x1938: 0x0019, 0x1939: 0x02e9, 0x193a: 0x0040, 0x193b: 0x02f1,\n\t0x193c: 0x02f9, 0x193d: 0x03f1, 0x193e: 0x0309, 0x193f: 0x0040,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x0311, 0x1941: 0x00b1, 0x1942: 0x0319, 0x1943: 0x0101, 0x1944: 0x0321, 0x1945: 0x0040,\n\t0x1946: 0x0051, 0x1947: 0x0040, 0x1948: 0x0040, 0x1949: 0x0040, 0x194a: 0x0089, 0x194b: 0x0341,\n\t0x194c: 0x0349, 0x194d: 0x0391, 0x194e: 0x00c1, 0x194f: 0x0109, 0x1950: 0x00c9, 0x1951: 0x0040,\n\t0x1952: 0x0019, 0x1953: 0x02e9, 0x1954: 0x03d9, 0x1955: 0x02f1, 0x1956: 0x02f9, 0x1957: 0x03f1,\n\t0x1958: 0x0309, 0x1959: 0x00a9, 0x195a: 0x0311, 0x195b: 0x00b1, 0x195c: 0x0319, 0x195d: 0x0101,\n\t0x195e: 0x0321, 0x195f: 0x0329, 0x1960: 0x0051, 0x1961: 0x0339, 0x1962: 0x0751, 0x1963: 0x00b9,\n\t0x1964: 0x0089, 0x1965: 0x0341, 0x1966: 0x0349, 0x1967: 0x0391, 0x1968: 0x00c1, 0x1969: 0x0109,\n\t0x196a: 0x00c9, 0x196b: 0x04b1, 0x196c: 0x0019, 0x196d: 0x02e9, 0x196e: 0x03d9, 0x196f: 0x02f1,\n\t0x1970: 0x02f9, 0x1971: 0x03f1, 0x1972: 0x0309, 0x1973: 0x00a9, 0x1974: 0x0311, 0x1975: 0x00b1,\n\t0x1976: 0x0319, 0x1977: 0x0101, 0x1978: 0x0321, 0x1979: 0x0329, 0x197a: 0x0051, 0x197b: 0x0339,\n\t0x197c: 0x0751, 0x197d: 0x00b9, 0x197e: 0x0089, 0x197f: 0x0341,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x0349, 0x1981: 0x0391, 0x1982: 0x00c1, 0x1983: 0x0109, 0x1984: 0x00c9, 0x1985: 0x04b1,\n\t0x1986: 0x0019, 0x1987: 0x02e9, 0x1988: 0x03d9, 0x1989: 0x02f1, 0x198a: 0x02f9, 0x198b: 0x03f1,\n\t0x198c: 0x0309, 0x198d: 0x00a9, 0x198e: 0x0311, 0x198f: 0x00b1, 0x1990: 0x0319, 0x1991: 0x0101,\n\t0x1992: 0x0321, 0x1993: 0x0329, 0x1994: 0x0051, 0x1995: 0x0339, 0x1996: 0x0751, 0x1997: 0x00b9,\n\t0x1998: 0x0089, 0x1999: 0x0341, 0x199a: 0x0349, 0x199b: 0x0391, 0x199c: 0x00c1, 0x199d: 0x0109,\n\t0x199e: 0x00c9, 0x199f: 0x04b1, 0x19a0: 0x0019, 0x19a1: 0x02e9, 0x19a2: 0x03d9, 0x19a3: 0x02f1,\n\t0x19a4: 0x02f9, 0x19a5: 0x03f1, 0x19a6: 0x0309, 0x19a7: 0x00a9, 0x19a8: 0x0311, 0x19a9: 0x00b1,\n\t0x19aa: 0x0319, 0x19ab: 0x0101, 0x19ac: 0x0321, 0x19ad: 0x0329, 0x19ae: 0x0051, 0x19af: 0x0339,\n\t0x19b0: 0x0751, 0x19b1: 0x00b9, 0x19b2: 0x0089, 0x19b3: 0x0341, 0x19b4: 0x0349, 0x19b5: 0x0391,\n\t0x19b6: 0x00c1, 0x19b7: 0x0109, 0x19b8: 0x00c9, 0x19b9: 0x04b1, 0x19ba: 0x0019, 0x19bb: 0x02e9,\n\t0x19bc: 0x03d9, 0x19bd: 0x02f1, 0x19be: 0x02f9, 0x19bf: 0x03f1,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x0309, 0x19c1: 0x00a9, 0x19c2: 0x0311, 0x19c3: 0x00b1, 0x19c4: 0x0319, 0x19c5: 0x0101,\n\t0x19c6: 0x0321, 0x19c7: 0x0329, 0x19c8: 0x0051, 0x19c9: 0x0339, 0x19ca: 0x0751, 0x19cb: 0x00b9,\n\t0x19cc: 0x0089, 0x19cd: 0x0341, 0x19ce: 0x0349, 0x19cf: 0x0391, 0x19d0: 0x00c1, 0x19d1: 0x0109,\n\t0x19d2: 0x00c9, 0x19d3: 0x04b1, 0x19d4: 0x0019, 0x19d5: 0x02e9, 0x19d6: 0x03d9, 0x19d7: 0x02f1,\n\t0x19d8: 0x02f9, 0x19d9: 0x03f1, 0x19da: 0x0309, 0x19db: 0x00a9, 0x19dc: 0x0311, 0x19dd: 0x00b1,\n\t0x19de: 0x0319, 0x19df: 0x0101, 0x19e0: 0x0321, 0x19e1: 0x0329, 0x19e2: 0x0051, 0x19e3: 0x0339,\n\t0x19e4: 0x0751, 0x19e5: 0x00b9, 0x19e6: 0x0089, 0x19e7: 0x0341, 0x19e8: 0x0349, 0x19e9: 0x0391,\n\t0x19ea: 0x00c1, 0x19eb: 0x0109, 0x19ec: 0x00c9, 0x19ed: 0x04b1, 0x19ee: 0x0019, 0x19ef: 0x02e9,\n\t0x19f0: 0x03d9, 0x19f1: 0x02f1, 0x19f2: 0x02f9, 0x19f3: 0x03f1, 0x19f4: 0x0309, 0x19f5: 0x00a9,\n\t0x19f6: 0x0311, 0x19f7: 0x00b1, 0x19f8: 0x0319, 0x19f9: 0x0101, 0x19fa: 0x0321, 0x19fb: 0x0329,\n\t0x19fc: 0x0051, 0x19fd: 0x0339, 0x19fe: 0x0751, 0x19ff: 0x00b9,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x0089, 0x1a01: 0x0341, 0x1a02: 0x0349, 0x1a03: 0x0391, 0x1a04: 0x00c1, 0x1a05: 0x0109,\n\t0x1a06: 0x00c9, 0x1a07: 0x04b1, 0x1a08: 0x0019, 0x1a09: 0x02e9, 0x1a0a: 0x03d9, 0x1a0b: 0x02f1,\n\t0x1a0c: 0x02f9, 0x1a0d: 0x03f1, 0x1a0e: 0x0309, 0x1a0f: 0x00a9, 0x1a10: 0x0311, 0x1a11: 0x00b1,\n\t0x1a12: 0x0319, 0x1a13: 0x0101, 0x1a14: 0x0321, 0x1a15: 0x0329, 0x1a16: 0x0051, 0x1a17: 0x0339,\n\t0x1a18: 0x0751, 0x1a19: 0x00b9, 0x1a1a: 0x0089, 0x1a1b: 0x0341, 0x1a1c: 0x0349, 0x1a1d: 0x0391,\n\t0x1a1e: 0x00c1, 0x1a1f: 0x0109, 0x1a20: 0x00c9, 0x1a21: 0x04b1, 0x1a22: 0x0019, 0x1a23: 0x02e9,\n\t0x1a24: 0x03d9, 0x1a25: 0x02f1, 0x1a26: 0x02f9, 0x1a27: 0x03f1, 0x1a28: 0x0309, 0x1a29: 0x00a9,\n\t0x1a2a: 0x0311, 0x1a2b: 0x00b1, 0x1a2c: 0x0319, 0x1a2d: 0x0101, 0x1a2e: 0x0321, 0x1a2f: 0x0329,\n\t0x1a30: 0x0051, 0x1a31: 0x0339, 0x1a32: 0x0751, 0x1a33: 0x00b9, 0x1a34: 0x0089, 0x1a35: 0x0341,\n\t0x1a36: 0x0349, 0x1a37: 0x0391, 0x1a38: 0x00c1, 0x1a39: 0x0109, 0x1a3a: 0x00c9, 0x1a3b: 0x04b1,\n\t0x1a3c: 0x0019, 0x1a3d: 0x02e9, 0x1a3e: 0x03d9, 0x1a3f: 0x02f1,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x02f9, 0x1a41: 0x03f1, 0x1a42: 0x0309, 0x1a43: 0x00a9, 0x1a44: 0x0311, 0x1a45: 0x00b1,\n\t0x1a46: 0x0319, 0x1a47: 0x0101, 0x1a48: 0x0321, 0x1a49: 0x0329, 0x1a4a: 0x0051, 0x1a4b: 0x0339,\n\t0x1a4c: 0x0751, 0x1a4d: 0x00b9, 0x1a4e: 0x0089, 0x1a4f: 0x0341, 0x1a50: 0x0349, 0x1a51: 0x0391,\n\t0x1a52: 0x00c1, 0x1a53: 0x0109, 0x1a54: 0x00c9, 0x1a55: 0x04b1, 0x1a56: 0x0019, 0x1a57: 0x02e9,\n\t0x1a58: 0x03d9, 0x1a59: 0x02f1, 0x1a5a: 0x02f9, 0x1a5b: 0x03f1, 0x1a5c: 0x0309, 0x1a5d: 0x00a9,\n\t0x1a5e: 0x0311, 0x1a5f: 0x00b1, 0x1a60: 0x0319, 0x1a61: 0x0101, 0x1a62: 0x0321, 0x1a63: 0x0329,\n\t0x1a64: 0x0051, 0x1a65: 0x0339, 0x1a66: 0x0751, 0x1a67: 0x00b9, 0x1a68: 0x0089, 0x1a69: 0x0341,\n\t0x1a6a: 0x0349, 0x1a6b: 0x0391, 0x1a6c: 0x00c1, 0x1a6d: 0x0109, 0x1a6e: 0x00c9, 0x1a6f: 0x04b1,\n\t0x1a70: 0x0019, 0x1a71: 0x02e9, 0x1a72: 0x03d9, 0x1a73: 0x02f1, 0x1a74: 0x02f9, 0x1a75: 0x03f1,\n\t0x1a76: 0x0309, 0x1a77: 0x00a9, 0x1a78: 0x0311, 0x1a79: 0x00b1, 0x1a7a: 0x0319, 0x1a7b: 0x0101,\n\t0x1a7c: 0x0321, 0x1a7d: 0x0329, 0x1a7e: 0x0051, 0x1a7f: 0x0339,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x0751, 0x1a81: 0x00b9, 0x1a82: 0x0089, 0x1a83: 0x0341, 0x1a84: 0x0349, 0x1a85: 0x0391,\n\t0x1a86: 0x00c1, 0x1a87: 0x0109, 0x1a88: 0x00c9, 0x1a89: 0x04b1, 0x1a8a: 0x0019, 0x1a8b: 0x02e9,\n\t0x1a8c: 0x03d9, 0x1a8d: 0x02f1, 0x1a8e: 0x02f9, 0x1a8f: 0x03f1, 0x1a90: 0x0309, 0x1a91: 0x00a9,\n\t0x1a92: 0x0311, 0x1a93: 0x00b1, 0x1a94: 0x0319, 0x1a95: 0x0101, 0x1a96: 0x0321, 0x1a97: 0x0329,\n\t0x1a98: 0x0051, 0x1a99: 0x0339, 0x1a9a: 0x0751, 0x1a9b: 0x00b9, 0x1a9c: 0x0089, 0x1a9d: 0x0341,\n\t0x1a9e: 0x0349, 0x1a9f: 0x0391, 0x1aa0: 0x00c1, 0x1aa1: 0x0109, 0x1aa2: 0x00c9, 0x1aa3: 0x04b1,\n\t0x1aa4: 0x2279, 0x1aa5: 0x2281, 0x1aa6: 0x0040, 0x1aa7: 0x0040, 0x1aa8: 0x2289, 0x1aa9: 0x0399,\n\t0x1aaa: 0x03a1, 0x1aab: 0x03a9, 0x1aac: 0x2291, 0x1aad: 0x2299, 0x1aae: 0x22a1, 0x1aaf: 0x04d1,\n\t0x1ab0: 0x05f9, 0x1ab1: 0x22a9, 0x1ab2: 0x22b1, 0x1ab3: 0x22b9, 0x1ab4: 0x22c1, 0x1ab5: 0x22c9,\n\t0x1ab6: 0x22d1, 0x1ab7: 0x0799, 0x1ab8: 0x03c1, 0x1ab9: 0x04d1, 0x1aba: 0x22d9, 0x1abb: 0x22e1,\n\t0x1abc: 0x22e9, 0x1abd: 0x03b1, 0x1abe: 0x03b9, 0x1abf: 0x22f1,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x0769, 0x1ac1: 0x22f9, 0x1ac2: 0x2289, 0x1ac3: 0x0399, 0x1ac4: 0x03a1, 0x1ac5: 0x03a9,\n\t0x1ac6: 0x2291, 0x1ac7: 0x2299, 0x1ac8: 0x22a1, 0x1ac9: 0x04d1, 0x1aca: 0x05f9, 0x1acb: 0x22a9,\n\t0x1acc: 0x22b1, 0x1acd: 0x22b9, 0x1ace: 0x22c1, 0x1acf: 0x22c9, 0x1ad0: 0x22d1, 0x1ad1: 0x0799,\n\t0x1ad2: 0x03c1, 0x1ad3: 0x22d9, 0x1ad4: 0x22d9, 0x1ad5: 0x22e1, 0x1ad6: 0x22e9, 0x1ad7: 0x03b1,\n\t0x1ad8: 0x03b9, 0x1ad9: 0x22f1, 0x1ada: 0x0769, 0x1adb: 0x2301, 0x1adc: 0x2291, 0x1add: 0x04d1,\n\t0x1ade: 0x22a9, 0x1adf: 0x03b1, 0x1ae0: 0x03c1, 0x1ae1: 0x0799, 0x1ae2: 0x2289, 0x1ae3: 0x0399,\n\t0x1ae4: 0x03a1, 0x1ae5: 0x03a9, 0x1ae6: 0x2291, 0x1ae7: 0x2299, 0x1ae8: 0x22a1, 0x1ae9: 0x04d1,\n\t0x1aea: 0x05f9, 0x1aeb: 0x22a9, 0x1aec: 0x22b1, 0x1aed: 0x22b9, 0x1aee: 0x22c1, 0x1aef: 0x22c9,\n\t0x1af0: 0x22d1, 0x1af1: 0x0799, 0x1af2: 0x03c1, 0x1af3: 0x04d1, 0x1af4: 0x22d9, 0x1af5: 0x22e1,\n\t0x1af6: 0x22e9, 0x1af7: 0x03b1, 0x1af8: 0x03b9, 0x1af9: 0x22f1, 0x1afa: 0x0769, 0x1afb: 0x22f9,\n\t0x1afc: 0x2289, 0x1afd: 0x0399, 0x1afe: 0x03a1, 0x1aff: 0x03a9,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x2291, 0x1b01: 0x2299, 0x1b02: 0x22a1, 0x1b03: 0x04d1, 0x1b04: 0x05f9, 0x1b05: 0x22a9,\n\t0x1b06: 0x22b1, 0x1b07: 0x22b9, 0x1b08: 0x22c1, 0x1b09: 0x22c9, 0x1b0a: 0x22d1, 0x1b0b: 0x0799,\n\t0x1b0c: 0x03c1, 0x1b0d: 0x22d9, 0x1b0e: 0x22d9, 0x1b0f: 0x22e1, 0x1b10: 0x22e9, 0x1b11: 0x03b1,\n\t0x1b12: 0x03b9, 0x1b13: 0x22f1, 0x1b14: 0x0769, 0x1b15: 0x2301, 0x1b16: 0x2291, 0x1b17: 0x04d1,\n\t0x1b18: 0x22a9, 0x1b19: 0x03b1, 0x1b1a: 0x03c1, 0x1b1b: 0x0799, 0x1b1c: 0x2289, 0x1b1d: 0x0399,\n\t0x1b1e: 0x03a1, 0x1b1f: 0x03a9, 0x1b20: 0x2291, 0x1b21: 0x2299, 0x1b22: 0x22a1, 0x1b23: 0x04d1,\n\t0x1b24: 0x05f9, 0x1b25: 0x22a9, 0x1b26: 0x22b1, 0x1b27: 0x22b9, 0x1b28: 0x22c1, 0x1b29: 0x22c9,\n\t0x1b2a: 0x22d1, 0x1b2b: 0x0799, 0x1b2c: 0x03c1, 0x1b2d: 0x04d1, 0x1b2e: 0x22d9, 0x1b2f: 0x22e1,\n\t0x1b30: 0x22e9, 0x1b31: 0x03b1, 0x1b32: 0x03b9, 0x1b33: 0x22f1, 0x1b34: 0x0769, 0x1b35: 0x22f9,\n\t0x1b36: 0x2289, 0x1b37: 0x0399, 0x1b38: 0x03a1, 0x1b39: 0x03a9, 0x1b3a: 0x2291, 0x1b3b: 0x2299,\n\t0x1b3c: 0x22a1, 0x1b3d: 0x04d1, 0x1b3e: 0x05f9, 0x1b3f: 0x22a9,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x22b1, 0x1b41: 0x22b9, 0x1b42: 0x22c1, 0x1b43: 0x22c9, 0x1b44: 0x22d1, 0x1b45: 0x0799,\n\t0x1b46: 0x03c1, 0x1b47: 0x22d9, 0x1b48: 0x22d9, 0x1b49: 0x22e1, 0x1b4a: 0x22e9, 0x1b4b: 0x03b1,\n\t0x1b4c: 0x03b9, 0x1b4d: 0x22f1, 0x1b4e: 0x0769, 0x1b4f: 0x2301, 0x1b50: 0x2291, 0x1b51: 0x04d1,\n\t0x1b52: 0x22a9, 0x1b53: 0x03b1, 0x1b54: 0x03c1, 0x1b55: 0x0799, 0x1b56: 0x2289, 0x1b57: 0x0399,\n\t0x1b58: 0x03a1, 0x1b59: 0x03a9, 0x1b5a: 0x2291, 0x1b5b: 0x2299, 0x1b5c: 0x22a1, 0x1b5d: 0x04d1,\n\t0x1b5e: 0x05f9, 0x1b5f: 0x22a9, 0x1b60: 0x22b1, 0x1b61: 0x22b9, 0x1b62: 0x22c1, 0x1b63: 0x22c9,\n\t0x1b64: 0x22d1, 0x1b65: 0x0799, 0x1b66: 0x03c1, 0x1b67: 0x04d1, 0x1b68: 0x22d9, 0x1b69: 0x22e1,\n\t0x1b6a: 0x22e9, 0x1b6b: 0x03b1, 0x1b6c: 0x03b9, 0x1b6d: 0x22f1, 0x1b6e: 0x0769, 0x1b6f: 0x22f9,\n\t0x1b70: 0x2289, 0x1b71: 0x0399, 0x1b72: 0x03a1, 0x1b73: 0x03a9, 0x1b74: 0x2291, 0x1b75: 0x2299,\n\t0x1b76: 0x22a1, 0x1b77: 0x04d1, 0x1b78: 0x05f9, 0x1b79: 0x22a9, 0x1b7a: 0x22b1, 0x1b7b: 0x22b9,\n\t0x1b7c: 0x22c1, 0x1b7d: 0x22c9, 0x1b7e: 0x22d1, 0x1b7f: 0x0799,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x03c1, 0x1b81: 0x22d9, 0x1b82: 0x22d9, 0x1b83: 0x22e1, 0x1b84: 0x22e9, 0x1b85: 0x03b1,\n\t0x1b86: 0x03b9, 0x1b87: 0x22f1, 0x1b88: 0x0769, 0x1b89: 0x2301, 0x1b8a: 0x2291, 0x1b8b: 0x04d1,\n\t0x1b8c: 0x22a9, 0x1b8d: 0x03b1, 0x1b8e: 0x03c1, 0x1b8f: 0x0799, 0x1b90: 0x2289, 0x1b91: 0x0399,\n\t0x1b92: 0x03a1, 0x1b93: 0x03a9, 0x1b94: 0x2291, 0x1b95: 0x2299, 0x1b96: 0x22a1, 0x1b97: 0x04d1,\n\t0x1b98: 0x05f9, 0x1b99: 0x22a9, 0x1b9a: 0x22b1, 0x1b9b: 0x22b9, 0x1b9c: 0x22c1, 0x1b9d: 0x22c9,\n\t0x1b9e: 0x22d1, 0x1b9f: 0x0799, 0x1ba0: 0x03c1, 0x1ba1: 0x04d1, 0x1ba2: 0x22d9, 0x1ba3: 0x22e1,\n\t0x1ba4: 0x22e9, 0x1ba5: 0x03b1, 0x1ba6: 0x03b9, 0x1ba7: 0x22f1, 0x1ba8: 0x0769, 0x1ba9: 0x22f9,\n\t0x1baa: 0x2289, 0x1bab: 0x0399, 0x1bac: 0x03a1, 0x1bad: 0x03a9, 0x1bae: 0x2291, 0x1baf: 0x2299,\n\t0x1bb0: 0x22a1, 0x1bb1: 0x04d1, 0x1bb2: 0x05f9, 0x1bb3: 0x22a9, 0x1bb4: 0x22b1, 0x1bb5: 0x22b9,\n\t0x1bb6: 0x22c1, 0x1bb7: 0x22c9, 0x1bb8: 0x22d1, 0x1bb9: 0x0799, 0x1bba: 0x03c1, 0x1bbb: 0x22d9,\n\t0x1bbc: 0x22d9, 0x1bbd: 0x22e1, 0x1bbe: 0x22e9, 0x1bbf: 0x03b1,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x03b9, 0x1bc1: 0x22f1, 0x1bc2: 0x0769, 0x1bc3: 0x2301, 0x1bc4: 0x2291, 0x1bc5: 0x04d1,\n\t0x1bc6: 0x22a9, 0x1bc7: 0x03b1, 0x1bc8: 0x03c1, 0x1bc9: 0x0799, 0x1bca: 0x2309, 0x1bcb: 0x2309,\n\t0x1bcc: 0x0040, 0x1bcd: 0x0040, 0x1bce: 0x06e1, 0x1bcf: 0x0049, 0x1bd0: 0x0029, 0x1bd1: 0x0031,\n\t0x1bd2: 0x06e9, 0x1bd3: 0x06f1, 0x1bd4: 0x06f9, 0x1bd5: 0x0701, 0x1bd6: 0x0709, 0x1bd7: 0x0711,\n\t0x1bd8: 0x06e1, 0x1bd9: 0x0049, 0x1bda: 0x0029, 0x1bdb: 0x0031, 0x1bdc: 0x06e9, 0x1bdd: 0x06f1,\n\t0x1bde: 0x06f9, 0x1bdf: 0x0701, 0x1be0: 0x0709, 0x1be1: 0x0711, 0x1be2: 0x06e1, 0x1be3: 0x0049,\n\t0x1be4: 0x0029, 0x1be5: 0x0031, 0x1be6: 0x06e9, 0x1be7: 0x06f1, 0x1be8: 0x06f9, 0x1be9: 0x0701,\n\t0x1bea: 0x0709, 0x1beb: 0x0711, 0x1bec: 0x06e1, 0x1bed: 0x0049, 0x1bee: 0x0029, 0x1bef: 0x0031,\n\t0x1bf0: 0x06e9, 0x1bf1: 0x06f1, 0x1bf2: 0x06f9, 0x1bf3: 0x0701, 0x1bf4: 0x0709, 0x1bf5: 0x0711,\n\t0x1bf6: 0x06e1, 0x1bf7: 0x0049, 0x1bf8: 0x0029, 0x1bf9: 0x0031, 0x1bfa: 0x06e9, 0x1bfb: 0x06f1,\n\t0x1bfc: 0x06f9, 0x1bfd: 0x0701, 0x1bfe: 0x0709, 0x1bff: 0x0711,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0xe115, 0x1c01: 0xe115, 0x1c02: 0xe135, 0x1c03: 0xe135, 0x1c04: 0xe115, 0x1c05: 0xe115,\n\t0x1c06: 0xe175, 0x1c07: 0xe175, 0x1c08: 0xe115, 0x1c09: 0xe115, 0x1c0a: 0xe135, 0x1c0b: 0xe135,\n\t0x1c0c: 0xe115, 0x1c0d: 0xe115, 0x1c0e: 0xe1f5, 0x1c0f: 0xe1f5, 0x1c10: 0xe115, 0x1c11: 0xe115,\n\t0x1c12: 0xe135, 0x1c13: 0xe135, 0x1c14: 0xe115, 0x1c15: 0xe115, 0x1c16: 0xe175, 0x1c17: 0xe175,\n\t0x1c18: 0xe115, 0x1c19: 0xe115, 0x1c1a: 0xe135, 0x1c1b: 0xe135, 0x1c1c: 0xe115, 0x1c1d: 0xe115,\n\t0x1c1e: 0x8b3d, 0x1c1f: 0x8b3d, 0x1c20: 0x04b5, 0x1c21: 0x04b5, 0x1c22: 0x0a08, 0x1c23: 0x0a08,\n\t0x1c24: 0x0a08, 0x1c25: 0x0a08, 0x1c26: 0x0a08, 0x1c27: 0x0a08, 0x1c28: 0x0a08, 0x1c29: 0x0a08,\n\t0x1c2a: 0x0a08, 0x1c2b: 0x0a08, 0x1c2c: 0x0a08, 0x1c2d: 0x0a08, 0x1c2e: 0x0a08, 0x1c2f: 0x0a08,\n\t0x1c30: 0x0a08, 0x1c31: 0x0a08, 0x1c32: 0x0a08, 0x1c33: 0x0a08, 0x1c34: 0x0a08, 0x1c35: 0x0a08,\n\t0x1c36: 0x0a08, 0x1c37: 0x0a08, 0x1c38: 0x0a08, 0x1c39: 0x0a08, 0x1c3a: 0x0a08, 0x1c3b: 0x0a08,\n\t0x1c3c: 0x0a08, 0x1c3d: 0x0a08, 0x1c3e: 0x0a08, 0x1c3f: 0x0a08,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0x20b1, 0x1c41: 0x20b9, 0x1c42: 0x20d9, 0x1c43: 0x20f1, 0x1c44: 0x0040, 0x1c45: 0x2189,\n\t0x1c46: 0x2109, 0x1c47: 0x20e1, 0x1c48: 0x2131, 0x1c49: 0x2191, 0x1c4a: 0x2161, 0x1c4b: 0x2169,\n\t0x1c4c: 0x2171, 0x1c4d: 0x2179, 0x1c4e: 0x2111, 0x1c4f: 0x2141, 0x1c50: 0x2151, 0x1c51: 0x2121,\n\t0x1c52: 0x2159, 0x1c53: 0x2101, 0x1c54: 0x2119, 0x1c55: 0x20c9, 0x1c56: 0x20d1, 0x1c57: 0x20e9,\n\t0x1c58: 0x20f9, 0x1c59: 0x2129, 0x1c5a: 0x2139, 0x1c5b: 0x2149, 0x1c5c: 0x2311, 0x1c5d: 0x1689,\n\t0x1c5e: 0x2319, 0x1c5f: 0x2321, 0x1c60: 0x0040, 0x1c61: 0x20b9, 0x1c62: 0x20d9, 0x1c63: 0x0040,\n\t0x1c64: 0x2181, 0x1c65: 0x0040, 0x1c66: 0x0040, 0x1c67: 0x20e1, 0x1c68: 0x0040, 0x1c69: 0x2191,\n\t0x1c6a: 0x2161, 0x1c6b: 0x2169, 0x1c6c: 0x2171, 0x1c6d: 0x2179, 0x1c6e: 0x2111, 0x1c6f: 0x2141,\n\t0x1c70: 0x2151, 0x1c71: 0x2121, 0x1c72: 0x2159, 0x1c73: 0x0040, 0x1c74: 0x2119, 0x1c75: 0x20c9,\n\t0x1c76: 0x20d1, 0x1c77: 0x20e9, 0x1c78: 0x0040, 0x1c79: 0x2129, 0x1c7a: 0x0040, 0x1c7b: 0x2149,\n\t0x1c7c: 0x0040, 0x1c7d: 0x0040, 0x1c7e: 0x0040, 0x1c7f: 0x0040,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0x0040, 0x1c81: 0x0040, 0x1c82: 0x20d9, 0x1c83: 0x0040, 0x1c84: 0x0040, 0x1c85: 0x0040,\n\t0x1c86: 0x0040, 0x1c87: 0x20e1, 0x1c88: 0x0040, 0x1c89: 0x2191, 0x1c8a: 0x0040, 0x1c8b: 0x2169,\n\t0x1c8c: 0x0040, 0x1c8d: 0x2179, 0x1c8e: 0x2111, 0x1c8f: 0x2141, 0x1c90: 0x0040, 0x1c91: 0x2121,\n\t0x1c92: 0x2159, 0x1c93: 0x0040, 0x1c94: 0x2119, 0x1c95: 0x0040, 0x1c96: 0x0040, 0x1c97: 0x20e9,\n\t0x1c98: 0x0040, 0x1c99: 0x2129, 0x1c9a: 0x0040, 0x1c9b: 0x2149, 0x1c9c: 0x0040, 0x1c9d: 0x1689,\n\t0x1c9e: 0x0040, 0x1c9f: 0x2321, 0x1ca0: 0x0040, 0x1ca1: 0x20b9, 0x1ca2: 0x20d9, 0x1ca3: 0x0040,\n\t0x1ca4: 0x2181, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0x20e1, 0x1ca8: 0x2131, 0x1ca9: 0x2191,\n\t0x1caa: 0x2161, 0x1cab: 0x0040, 0x1cac: 0x2171, 0x1cad: 0x2179, 0x1cae: 0x2111, 0x1caf: 0x2141,\n\t0x1cb0: 0x2151, 0x1cb1: 0x2121, 0x1cb2: 0x2159, 0x1cb3: 0x0040, 0x1cb4: 0x2119, 0x1cb5: 0x20c9,\n\t0x1cb6: 0x20d1, 0x1cb7: 0x20e9, 0x1cb8: 0x0040, 0x1cb9: 0x2129, 0x1cba: 0x2139, 0x1cbb: 0x2149,\n\t0x1cbc: 0x2311, 0x1cbd: 0x0040, 0x1cbe: 0x2319, 0x1cbf: 0x0040,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x20b1, 0x1cc1: 0x20b9, 0x1cc2: 0x20d9, 0x1cc3: 0x20f1, 0x1cc4: 0x2181, 0x1cc5: 0x2189,\n\t0x1cc6: 0x2109, 0x1cc7: 0x20e1, 0x1cc8: 0x2131, 0x1cc9: 0x2191, 0x1cca: 0x0040, 0x1ccb: 0x2169,\n\t0x1ccc: 0x2171, 0x1ccd: 0x2179, 0x1cce: 0x2111, 0x1ccf: 0x2141, 0x1cd0: 0x2151, 0x1cd1: 0x2121,\n\t0x1cd2: 0x2159, 0x1cd3: 0x2101, 0x1cd4: 0x2119, 0x1cd5: 0x20c9, 0x1cd6: 0x20d1, 0x1cd7: 0x20e9,\n\t0x1cd8: 0x20f9, 0x1cd9: 0x2129, 0x1cda: 0x2139, 0x1cdb: 0x2149, 0x1cdc: 0x0040, 0x1cdd: 0x0040,\n\t0x1cde: 0x0040, 0x1cdf: 0x0040, 0x1ce0: 0x0040, 0x1ce1: 0x20b9, 0x1ce2: 0x20d9, 0x1ce3: 0x20f1,\n\t0x1ce4: 0x0040, 0x1ce5: 0x2189, 0x1ce6: 0x2109, 0x1ce7: 0x20e1, 0x1ce8: 0x2131, 0x1ce9: 0x2191,\n\t0x1cea: 0x0040, 0x1ceb: 0x2169, 0x1cec: 0x2171, 0x1ced: 0x2179, 0x1cee: 0x2111, 0x1cef: 0x2141,\n\t0x1cf0: 0x2151, 0x1cf1: 0x2121, 0x1cf2: 0x2159, 0x1cf3: 0x2101, 0x1cf4: 0x2119, 0x1cf5: 0x20c9,\n\t0x1cf6: 0x20d1, 0x1cf7: 0x20e9, 0x1cf8: 0x20f9, 0x1cf9: 0x2129, 0x1cfa: 0x2139, 0x1cfb: 0x2149,\n\t0x1cfc: 0x0040, 0x1cfd: 0x0040, 0x1cfe: 0x0040, 0x1cff: 0x0040,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0x0040, 0x1d01: 0x232a, 0x1d02: 0x2332, 0x1d03: 0x233a, 0x1d04: 0x2342, 0x1d05: 0x234a,\n\t0x1d06: 0x2352, 0x1d07: 0x235a, 0x1d08: 0x2362, 0x1d09: 0x236a, 0x1d0a: 0x2372, 0x1d0b: 0x0018,\n\t0x1d0c: 0x0018, 0x1d0d: 0x0018, 0x1d0e: 0x0018, 0x1d0f: 0x0018, 0x1d10: 0x237a, 0x1d11: 0x2382,\n\t0x1d12: 0x238a, 0x1d13: 0x2392, 0x1d14: 0x239a, 0x1d15: 0x23a2, 0x1d16: 0x23aa, 0x1d17: 0x23b2,\n\t0x1d18: 0x23ba, 0x1d19: 0x23c2, 0x1d1a: 0x23ca, 0x1d1b: 0x23d2, 0x1d1c: 0x23da, 0x1d1d: 0x23e2,\n\t0x1d1e: 0x23ea, 0x1d1f: 0x23f2, 0x1d20: 0x23fa, 0x1d21: 0x2402, 0x1d22: 0x240a, 0x1d23: 0x2412,\n\t0x1d24: 0x241a, 0x1d25: 0x2422, 0x1d26: 0x242a, 0x1d27: 0x2432, 0x1d28: 0x243a, 0x1d29: 0x2442,\n\t0x1d2a: 0x2449, 0x1d2b: 0x03d9, 0x1d2c: 0x00b9, 0x1d2d: 0x1239, 0x1d2e: 0x2451, 0x1d2f: 0x0018,\n\t0x1d30: 0x0019, 0x1d31: 0x02e9, 0x1d32: 0x03d9, 0x1d33: 0x02f1, 0x1d34: 0x02f9, 0x1d35: 0x03f1,\n\t0x1d36: 0x0309, 0x1d37: 0x00a9, 0x1d38: 0x0311, 0x1d39: 0x00b1, 0x1d3a: 0x0319, 0x1d3b: 0x0101,\n\t0x1d3c: 0x0321, 0x1d3d: 0x0329, 0x1d3e: 0x0051, 0x1d3f: 0x0339,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x0751, 0x1d41: 0x00b9, 0x1d42: 0x0089, 0x1d43: 0x0341, 0x1d44: 0x0349, 0x1d45: 0x0391,\n\t0x1d46: 0x00c1, 0x1d47: 0x0109, 0x1d48: 0x00c9, 0x1d49: 0x04b1, 0x1d4a: 0x2459, 0x1d4b: 0x11f9,\n\t0x1d4c: 0x2461, 0x1d4d: 0x04d9, 0x1d4e: 0x2469, 0x1d4f: 0x2471, 0x1d50: 0x0018, 0x1d51: 0x0018,\n\t0x1d52: 0x0018, 0x1d53: 0x0018, 0x1d54: 0x0018, 0x1d55: 0x0018, 0x1d56: 0x0018, 0x1d57: 0x0018,\n\t0x1d58: 0x0018, 0x1d59: 0x0018, 0x1d5a: 0x0018, 0x1d5b: 0x0018, 0x1d5c: 0x0018, 0x1d5d: 0x0018,\n\t0x1d5e: 0x0018, 0x1d5f: 0x0018, 0x1d60: 0x0018, 0x1d61: 0x0018, 0x1d62: 0x0018, 0x1d63: 0x0018,\n\t0x1d64: 0x0018, 0x1d65: 0x0018, 0x1d66: 0x0018, 0x1d67: 0x0018, 0x1d68: 0x0018, 0x1d69: 0x0018,\n\t0x1d6a: 0x2479, 0x1d6b: 0x2481, 0x1d6c: 0x2489, 0x1d6d: 0x0018, 0x1d6e: 0x0018, 0x1d6f: 0x0018,\n\t0x1d70: 0x0018, 0x1d71: 0x0018, 0x1d72: 0x0018, 0x1d73: 0x0018, 0x1d74: 0x0018, 0x1d75: 0x0018,\n\t0x1d76: 0x0018, 0x1d77: 0x0018, 0x1d78: 0x0018, 0x1d79: 0x0018, 0x1d7a: 0x0018, 0x1d7b: 0x0018,\n\t0x1d7c: 0x0018, 0x1d7d: 0x0018, 0x1d7e: 0x0018, 0x1d7f: 0x0018,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0x2499, 0x1d81: 0x24a1, 0x1d82: 0x24a9, 0x1d83: 0x0040, 0x1d84: 0x0040, 0x1d85: 0x0040,\n\t0x1d86: 0x0040, 0x1d87: 0x0040, 0x1d88: 0x0040, 0x1d89: 0x0040, 0x1d8a: 0x0040, 0x1d8b: 0x0040,\n\t0x1d8c: 0x0040, 0x1d8d: 0x0040, 0x1d8e: 0x0040, 0x1d8f: 0x0040, 0x1d90: 0x24b1, 0x1d91: 0x24b9,\n\t0x1d92: 0x24c1, 0x1d93: 0x24c9, 0x1d94: 0x24d1, 0x1d95: 0x24d9, 0x1d96: 0x24e1, 0x1d97: 0x24e9,\n\t0x1d98: 0x24f1, 0x1d99: 0x24f9, 0x1d9a: 0x2501, 0x1d9b: 0x2509, 0x1d9c: 0x2511, 0x1d9d: 0x2519,\n\t0x1d9e: 0x2521, 0x1d9f: 0x2529, 0x1da0: 0x2531, 0x1da1: 0x2539, 0x1da2: 0x2541, 0x1da3: 0x2549,\n\t0x1da4: 0x2551, 0x1da5: 0x2559, 0x1da6: 0x2561, 0x1da7: 0x2569, 0x1da8: 0x2571, 0x1da9: 0x2579,\n\t0x1daa: 0x2581, 0x1dab: 0x2589, 0x1dac: 0x2591, 0x1dad: 0x2599, 0x1dae: 0x25a1, 0x1daf: 0x25a9,\n\t0x1db0: 0x25b1, 0x1db1: 0x25b9, 0x1db2: 0x25c1, 0x1db3: 0x25c9, 0x1db4: 0x25d1, 0x1db5: 0x25d9,\n\t0x1db6: 0x25e1, 0x1db7: 0x25e9, 0x1db8: 0x25f1, 0x1db9: 0x25f9, 0x1dba: 0x2601, 0x1dbb: 0x2609,\n\t0x1dbc: 0x0040, 0x1dbd: 0x0040, 0x1dbe: 0x0040, 0x1dbf: 0x0040,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0x2669, 0x1dc1: 0x2671, 0x1dc2: 0x2679, 0x1dc3: 0x8b55, 0x1dc4: 0x2681, 0x1dc5: 0x2689,\n\t0x1dc6: 0x2691, 0x1dc7: 0x2699, 0x1dc8: 0x26a1, 0x1dc9: 0x26a9, 0x1dca: 0x26b1, 0x1dcb: 0x26b9,\n\t0x1dcc: 0x26c1, 0x1dcd: 0x8b75, 0x1dce: 0x26c9, 0x1dcf: 0x26d1, 0x1dd0: 0x26d9, 0x1dd1: 0x26e1,\n\t0x1dd2: 0x8b95, 0x1dd3: 0x26e9, 0x1dd4: 0x26f1, 0x1dd5: 0x2521, 0x1dd6: 0x8bb5, 0x1dd7: 0x26f9,\n\t0x1dd8: 0x2701, 0x1dd9: 0x2709, 0x1dda: 0x2711, 0x1ddb: 0x2719, 0x1ddc: 0x8bd5, 0x1ddd: 0x2721,\n\t0x1dde: 0x2729, 0x1ddf: 0x2731, 0x1de0: 0x2739, 0x1de1: 0x2741, 0x1de2: 0x25f9, 0x1de3: 0x2749,\n\t0x1de4: 0x2751, 0x1de5: 0x2759, 0x1de6: 0x2761, 0x1de7: 0x2769, 0x1de8: 0x2771, 0x1de9: 0x2779,\n\t0x1dea: 0x2781, 0x1deb: 0x2789, 0x1dec: 0x2791, 0x1ded: 0x2799, 0x1dee: 0x27a1, 0x1def: 0x27a9,\n\t0x1df0: 0x27b1, 0x1df1: 0x27b9, 0x1df2: 0x27b9, 0x1df3: 0x27b9, 0x1df4: 0x8bf5, 0x1df5: 0x27c1,\n\t0x1df6: 0x27c9, 0x1df7: 0x27d1, 0x1df8: 0x8c15, 0x1df9: 0x27d9, 0x1dfa: 0x27e1, 0x1dfb: 0x27e9,\n\t0x1dfc: 0x27f1, 0x1dfd: 0x27f9, 0x1dfe: 0x2801, 0x1dff: 0x2809,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0x2811, 0x1e01: 0x2819, 0x1e02: 0x2821, 0x1e03: 0x2829, 0x1e04: 0x2831, 0x1e05: 0x2839,\n\t0x1e06: 0x2839, 0x1e07: 0x2841, 0x1e08: 0x2849, 0x1e09: 0x2851, 0x1e0a: 0x2859, 0x1e0b: 0x2861,\n\t0x1e0c: 0x2869, 0x1e0d: 0x2871, 0x1e0e: 0x2879, 0x1e0f: 0x2881, 0x1e10: 0x2889, 0x1e11: 0x2891,\n\t0x1e12: 0x2899, 0x1e13: 0x28a1, 0x1e14: 0x28a9, 0x1e15: 0x28b1, 0x1e16: 0x28b9, 0x1e17: 0x28c1,\n\t0x1e18: 0x28c9, 0x1e19: 0x8c35, 0x1e1a: 0x28d1, 0x1e1b: 0x28d9, 0x1e1c: 0x28e1, 0x1e1d: 0x24d9,\n\t0x1e1e: 0x28e9, 0x1e1f: 0x28f1, 0x1e20: 0x8c55, 0x1e21: 0x8c75, 0x1e22: 0x28f9, 0x1e23: 0x2901,\n\t0x1e24: 0x2909, 0x1e25: 0x2911, 0x1e26: 0x2919, 0x1e27: 0x2921, 0x1e28: 0x2040, 0x1e29: 0x2929,\n\t0x1e2a: 0x2931, 0x1e2b: 0x2931, 0x1e2c: 0x8c95, 0x1e2d: 0x2939, 0x1e2e: 0x2941, 0x1e2f: 0x2949,\n\t0x1e30: 0x2951, 0x1e31: 0x8cb5, 0x1e32: 0x2959, 0x1e33: 0x2961, 0x1e34: 0x2040, 0x1e35: 0x2969,\n\t0x1e36: 0x2971, 0x1e37: 0x2979, 0x1e38: 0x2981, 0x1e39: 0x2989, 0x1e3a: 0x2991, 0x1e3b: 0x8cd5,\n\t0x1e3c: 0x2999, 0x1e3d: 0x8cf5, 0x1e3e: 0x29a1, 0x1e3f: 0x29a9,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0x29b1, 0x1e41: 0x29b9, 0x1e42: 0x29c1, 0x1e43: 0x29c9, 0x1e44: 0x29d1, 0x1e45: 0x29d9,\n\t0x1e46: 0x29e1, 0x1e47: 0x29e9, 0x1e48: 0x29f1, 0x1e49: 0x8d15, 0x1e4a: 0x29f9, 0x1e4b: 0x2a01,\n\t0x1e4c: 0x2a09, 0x1e4d: 0x2a11, 0x1e4e: 0x2a19, 0x1e4f: 0x8d35, 0x1e50: 0x2a21, 0x1e51: 0x8d55,\n\t0x1e52: 0x8d75, 0x1e53: 0x2a29, 0x1e54: 0x2a31, 0x1e55: 0x2a31, 0x1e56: 0x2a39, 0x1e57: 0x8d95,\n\t0x1e58: 0x8db5, 0x1e59: 0x2a41, 0x1e5a: 0x2a49, 0x1e5b: 0x2a51, 0x1e5c: 0x2a59, 0x1e5d: 0x2a61,\n\t0x1e5e: 0x2a69, 0x1e5f: 0x2a71, 0x1e60: 0x2a79, 0x1e61: 0x2a81, 0x1e62: 0x2a89, 0x1e63: 0x2a91,\n\t0x1e64: 0x8dd5, 0x1e65: 0x2a99, 0x1e66: 0x2aa1, 0x1e67: 0x2aa9, 0x1e68: 0x2ab1, 0x1e69: 0x2aa9,\n\t0x1e6a: 0x2ab9, 0x1e6b: 0x2ac1, 0x1e6c: 0x2ac9, 0x1e6d: 0x2ad1, 0x1e6e: 0x2ad9, 0x1e6f: 0x2ae1,\n\t0x1e70: 0x2ae9, 0x1e71: 0x2af1, 0x1e72: 0x2af9, 0x1e73: 0x2b01, 0x1e74: 0x2b09, 0x1e75: 0x2b11,\n\t0x1e76: 0x2b19, 0x1e77: 0x2b21, 0x1e78: 0x8df5, 0x1e79: 0x2b29, 0x1e7a: 0x2b31, 0x1e7b: 0x2b39,\n\t0x1e7c: 0x2b41, 0x1e7d: 0x2b49, 0x1e7e: 0x8e15, 0x1e7f: 0x2b51,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0x2b59, 0x1e81: 0x2b61, 0x1e82: 0x2b69, 0x1e83: 0x2b71, 0x1e84: 0x2b79, 0x1e85: 0x2b81,\n\t0x1e86: 0x2b89, 0x1e87: 0x2b91, 0x1e88: 0x2b99, 0x1e89: 0x2ba1, 0x1e8a: 0x8e35, 0x1e8b: 0x2ba9,\n\t0x1e8c: 0x2bb1, 0x1e8d: 0x2bb9, 0x1e8e: 0x2bc1, 0x1e8f: 0x2bc9, 0x1e90: 0x2bd1, 0x1e91: 0x2bd9,\n\t0x1e92: 0x2be1, 0x1e93: 0x2be9, 0x1e94: 0x2bf1, 0x1e95: 0x2bf9, 0x1e96: 0x2c01, 0x1e97: 0x2c09,\n\t0x1e98: 0x2c11, 0x1e99: 0x2c19, 0x1e9a: 0x2c21, 0x1e9b: 0x2c29, 0x1e9c: 0x2c31, 0x1e9d: 0x8e55,\n\t0x1e9e: 0x2c39, 0x1e9f: 0x2c41, 0x1ea0: 0x2c49, 0x1ea1: 0x2c51, 0x1ea2: 0x2c59, 0x1ea3: 0x8e75,\n\t0x1ea4: 0x2c61, 0x1ea5: 0x2c69, 0x1ea6: 0x2c71, 0x1ea7: 0x2c79, 0x1ea8: 0x2c81, 0x1ea9: 0x2c89,\n\t0x1eaa: 0x2c91, 0x1eab: 0x2c99, 0x1eac: 0x7f0d, 0x1ead: 0x2ca1, 0x1eae: 0x2ca9, 0x1eaf: 0x2cb1,\n\t0x1eb0: 0x8e95, 0x1eb1: 0x2cb9, 0x1eb2: 0x2cc1, 0x1eb3: 0x2cc9, 0x1eb4: 0x2cd1, 0x1eb5: 0x2cd9,\n\t0x1eb6: 0x2ce1, 0x1eb7: 0x8eb5, 0x1eb8: 0x8ed5, 0x1eb9: 0x8ef5, 0x1eba: 0x2ce9, 0x1ebb: 0x8f15,\n\t0x1ebc: 0x2cf1, 0x1ebd: 0x2cf9, 0x1ebe: 0x2d01, 0x1ebf: 0x2d09,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0x2d11, 0x1ec1: 0x2d19, 0x1ec2: 0x2d21, 0x1ec3: 0x2d29, 0x1ec4: 0x2d31, 0x1ec5: 0x2d39,\n\t0x1ec6: 0x8f35, 0x1ec7: 0x2d41, 0x1ec8: 0x2d49, 0x1ec9: 0x2d51, 0x1eca: 0x2d59, 0x1ecb: 0x2d61,\n\t0x1ecc: 0x2d69, 0x1ecd: 0x8f55, 0x1ece: 0x2d71, 0x1ecf: 0x2d79, 0x1ed0: 0x8f75, 0x1ed1: 0x8f95,\n\t0x1ed2: 0x2d81, 0x1ed3: 0x2d89, 0x1ed4: 0x2d91, 0x1ed5: 0x2d99, 0x1ed6: 0x2da1, 0x1ed7: 0x2da9,\n\t0x1ed8: 0x2db1, 0x1ed9: 0x2db9, 0x1eda: 0x2dc1, 0x1edb: 0x8fb5, 0x1edc: 0x2dc9, 0x1edd: 0x8fd5,\n\t0x1ede: 0x2dd1, 0x1edf: 0x2040, 0x1ee0: 0x2dd9, 0x1ee1: 0x2de1, 0x1ee2: 0x2de9, 0x1ee3: 0x8ff5,\n\t0x1ee4: 0x2df1, 0x1ee5: 0x2df9, 0x1ee6: 0x9015, 0x1ee7: 0x9035, 0x1ee8: 0x2e01, 0x1ee9: 0x2e09,\n\t0x1eea: 0x2e11, 0x1eeb: 0x2e19, 0x1eec: 0x2e21, 0x1eed: 0x2e21, 0x1eee: 0x2e29, 0x1eef: 0x2e31,\n\t0x1ef0: 0x2e39, 0x1ef1: 0x2e41, 0x1ef2: 0x2e49, 0x1ef3: 0x2e51, 0x1ef4: 0x2e59, 0x1ef5: 0x9055,\n\t0x1ef6: 0x2e61, 0x1ef7: 0x9075, 0x1ef8: 0x2e69, 0x1ef9: 0x9095, 0x1efa: 0x2e71, 0x1efb: 0x90b5,\n\t0x1efc: 0x90d5, 0x1efd: 0x90f5, 0x1efe: 0x2e79, 0x1eff: 0x2e81,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0x2e89, 0x1f01: 0x9115, 0x1f02: 0x9135, 0x1f03: 0x9155, 0x1f04: 0x9175, 0x1f05: 0x2e91,\n\t0x1f06: 0x2e99, 0x1f07: 0x2e99, 0x1f08: 0x2ea1, 0x1f09: 0x2ea9, 0x1f0a: 0x2eb1, 0x1f0b: 0x2eb9,\n\t0x1f0c: 0x2ec1, 0x1f0d: 0x9195, 0x1f0e: 0x2ec9, 0x1f0f: 0x2ed1, 0x1f10: 0x2ed9, 0x1f11: 0x2ee1,\n\t0x1f12: 0x91b5, 0x1f13: 0x2ee9, 0x1f14: 0x91d5, 0x1f15: 0x91f5, 0x1f16: 0x2ef1, 0x1f17: 0x2ef9,\n\t0x1f18: 0x2f01, 0x1f19: 0x2f09, 0x1f1a: 0x2f11, 0x1f1b: 0x2f19, 0x1f1c: 0x9215, 0x1f1d: 0x9235,\n\t0x1f1e: 0x9255, 0x1f1f: 0x2040, 0x1f20: 0x2f21, 0x1f21: 0x9275, 0x1f22: 0x2f29, 0x1f23: 0x2f31,\n\t0x1f24: 0x2f39, 0x1f25: 0x9295, 0x1f26: 0x2f41, 0x1f27: 0x2f49, 0x1f28: 0x2f51, 0x1f29: 0x2f59,\n\t0x1f2a: 0x2f61, 0x1f2b: 0x92b5, 0x1f2c: 0x2f69, 0x1f2d: 0x2f71, 0x1f2e: 0x2f79, 0x1f2f: 0x2f81,\n\t0x1f30: 0x2f89, 0x1f31: 0x2f91, 0x1f32: 0x92d5, 0x1f33: 0x92f5, 0x1f34: 0x2f99, 0x1f35: 0x9315,\n\t0x1f36: 0x2fa1, 0x1f37: 0x9335, 0x1f38: 0x2fa9, 0x1f39: 0x2fb1, 0x1f3a: 0x2fb9, 0x1f3b: 0x9355,\n\t0x1f3c: 0x9375, 0x1f3d: 0x2fc1, 0x1f3e: 0x9395, 0x1f3f: 0x2fc9,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0x93b5, 0x1f41: 0x2fd1, 0x1f42: 0x2fd9, 0x1f43: 0x2fe1, 0x1f44: 0x2fe9, 0x1f45: 0x2ff1,\n\t0x1f46: 0x2ff9, 0x1f47: 0x93d5, 0x1f48: 0x93f5, 0x1f49: 0x9415, 0x1f4a: 0x9435, 0x1f4b: 0x2a29,\n\t0x1f4c: 0x3001, 0x1f4d: 0x3009, 0x1f4e: 0x3011, 0x1f4f: 0x3019, 0x1f50: 0x3021, 0x1f51: 0x3029,\n\t0x1f52: 0x3031, 0x1f53: 0x3039, 0x1f54: 0x3041, 0x1f55: 0x3049, 0x1f56: 0x3051, 0x1f57: 0x9455,\n\t0x1f58: 0x3059, 0x1f59: 0x3061, 0x1f5a: 0x3069, 0x1f5b: 0x3071, 0x1f5c: 0x3079, 0x1f5d: 0x3081,\n\t0x1f5e: 0x3089, 0x1f5f: 0x3091, 0x1f60: 0x3099, 0x1f61: 0x30a1, 0x1f62: 0x30a9, 0x1f63: 0x30b1,\n\t0x1f64: 0x9475, 0x1f65: 0x9495, 0x1f66: 0x94b5, 0x1f67: 0x30b9, 0x1f68: 0x30c1, 0x1f69: 0x30c9,\n\t0x1f6a: 0x30d1, 0x1f6b: 0x94d5, 0x1f6c: 0x30d9, 0x1f6d: 0x94f5, 0x1f6e: 0x30e1, 0x1f6f: 0x30e9,\n\t0x1f70: 0x9515, 0x1f71: 0x9535, 0x1f72: 0x30f1, 0x1f73: 0x30f9, 0x1f74: 0x3101, 0x1f75: 0x3109,\n\t0x1f76: 0x3111, 0x1f77: 0x3119, 0x1f78: 0x3121, 0x1f79: 0x3129, 0x1f7a: 0x3131, 0x1f7b: 0x3139,\n\t0x1f7c: 0x3141, 0x1f7d: 0x3149, 0x1f7e: 0x3151, 0x1f7f: 0x2040,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0x3159, 0x1f81: 0x3161, 0x1f82: 0x3169, 0x1f83: 0x3171, 0x1f84: 0x3179, 0x1f85: 0x9555,\n\t0x1f86: 0x3181, 0x1f87: 0x3189, 0x1f88: 0x3191, 0x1f89: 0x3199, 0x1f8a: 0x31a1, 0x1f8b: 0x9575,\n\t0x1f8c: 0x9595, 0x1f8d: 0x31a9, 0x1f8e: 0x31b1, 0x1f8f: 0x31b9, 0x1f90: 0x31c1, 0x1f91: 0x31c9,\n\t0x1f92: 0x31d1, 0x1f93: 0x95b5, 0x1f94: 0x31d9, 0x1f95: 0x31e1, 0x1f96: 0x31e9, 0x1f97: 0x31f1,\n\t0x1f98: 0x95d5, 0x1f99: 0x95f5, 0x1f9a: 0x31f9, 0x1f9b: 0x3201, 0x1f9c: 0x3209, 0x1f9d: 0x9615,\n\t0x1f9e: 0x3211, 0x1f9f: 0x3219, 0x1fa0: 0x684d, 0x1fa1: 0x9635, 0x1fa2: 0x3221, 0x1fa3: 0x3229,\n\t0x1fa4: 0x3231, 0x1fa5: 0x9655, 0x1fa6: 0x3239, 0x1fa7: 0x3241, 0x1fa8: 0x3249, 0x1fa9: 0x3251,\n\t0x1faa: 0x3259, 0x1fab: 0x3261, 0x1fac: 0x3269, 0x1fad: 0x9675, 0x1fae: 0x3271, 0x1faf: 0x3279,\n\t0x1fb0: 0x3281, 0x1fb1: 0x9695, 0x1fb2: 0x3289, 0x1fb3: 0x3291, 0x1fb4: 0x3299, 0x1fb5: 0x32a1,\n\t0x1fb6: 0x7b6d, 0x1fb7: 0x96b5, 0x1fb8: 0x32a9, 0x1fb9: 0x32b1, 0x1fba: 0x32b9, 0x1fbb: 0x96d5,\n\t0x1fbc: 0x32c1, 0x1fbd: 0x96f5, 0x1fbe: 0x32c9, 0x1fbf: 0x32c9,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1fc0: 0x32d1, 0x1fc1: 0x9715, 0x1fc2: 0x32d9, 0x1fc3: 0x32e1, 0x1fc4: 0x32e9, 0x1fc5: 0x32f1,\n\t0x1fc6: 0x32f9, 0x1fc7: 0x3301, 0x1fc8: 0x3309, 0x1fc9: 0x9735, 0x1fca: 0x3311, 0x1fcb: 0x3319,\n\t0x1fcc: 0x3321, 0x1fcd: 0x3329, 0x1fce: 0x3331, 0x1fcf: 0x3339, 0x1fd0: 0x9755, 0x1fd1: 0x3341,\n\t0x1fd2: 0x9775, 0x1fd3: 0x9795, 0x1fd4: 0x97b5, 0x1fd5: 0x3349, 0x1fd6: 0x3351, 0x1fd7: 0x3359,\n\t0x1fd8: 0x3361, 0x1fd9: 0x3369, 0x1fda: 0x3371, 0x1fdb: 0x3379, 0x1fdc: 0x3381, 0x1fdd: 0x97d5,\n\t0x1fde: 0x0040, 0x1fdf: 0x0040, 0x1fe0: 0x0040, 0x1fe1: 0x0040, 0x1fe2: 0x0040, 0x1fe3: 0x0040,\n\t0x1fe4: 0x0040, 0x1fe5: 0x0040, 0x1fe6: 0x0040, 0x1fe7: 0x0040, 0x1fe8: 0x0040, 0x1fe9: 0x0040,\n\t0x1fea: 0x0040, 0x1feb: 0x0040, 0x1fec: 0x0040, 0x1fed: 0x0040, 0x1fee: 0x0040, 0x1fef: 0x0040,\n\t0x1ff0: 0x0040, 0x1ff1: 0x0040, 0x1ff2: 0x0040, 0x1ff3: 0x0040, 0x1ff4: 0x0040, 0x1ff5: 0x0040,\n\t0x1ff6: 0x0040, 0x1ff7: 0x0040, 0x1ff8: 0x0040, 0x1ff9: 0x0040, 0x1ffa: 0x0040, 0x1ffb: 0x0040,\n\t0x1ffc: 0x0040, 0x1ffd: 0x0040, 0x1ffe: 0x0040, 0x1fff: 0x0040,\n}\n\n// idnaIndex: 37 blocks, 2368 entries, 4736 bytes\n// Block 0 is the zero block.\nvar idnaIndex = [2368]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x7e, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,\n\t0xc8: 0x06, 0xc9: 0x7f, 0xca: 0x80, 0xcb: 0x07, 0xcc: 0x81, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,\n\t0xd0: 0x82, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x83, 0xd6: 0x84, 0xd7: 0x85,\n\t0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x86, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x87, 0xde: 0x88, 0xdf: 0x89,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,\n\t0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c,\n\t0xf0: 0x1e, 0xf1: 0x1f, 0xf2: 0x1f, 0xf3: 0x21, 0xf4: 0x22,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x8a, 0x121: 0x13, 0x122: 0x8b, 0x123: 0x8c, 0x124: 0x8d, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16,\n\t0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8e,\n\t0x130: 0x8f, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x90, 0x135: 0x21, 0x136: 0x91, 0x137: 0x92,\n\t0x138: 0x93, 0x139: 0x94, 0x13a: 0x22, 0x13b: 0x95, 0x13c: 0x96, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x97,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x98, 0x141: 0x99, 0x142: 0x9a, 0x143: 0x9b, 0x144: 0x9c, 0x145: 0x9d, 0x146: 0x9e, 0x147: 0x9f,\n\t0x148: 0xa0, 0x149: 0xa1, 0x14a: 0xa2, 0x14b: 0xa3, 0x14c: 0xa4, 0x14d: 0xa5, 0x14e: 0xa6, 0x14f: 0xa7,\n\t0x150: 0xa8, 0x151: 0xa0, 0x152: 0xa0, 0x153: 0xa0, 0x154: 0xa0, 0x155: 0xa0, 0x156: 0xa0, 0x157: 0xa0,\n\t0x158: 0xa0, 0x159: 0xa9, 0x15a: 0xaa, 0x15b: 0xab, 0x15c: 0xac, 0x15d: 0xad, 0x15e: 0xae, 0x15f: 0xaf,\n\t0x160: 0xb0, 0x161: 0xb1, 0x162: 0xb2, 0x163: 0xb3, 0x164: 0xb4, 0x165: 0xb5, 0x166: 0xb6, 0x167: 0xb7,\n\t0x168: 0xb8, 0x169: 0xb9, 0x16a: 0xba, 0x16b: 0xbb, 0x16c: 0xbc, 0x16d: 0xbd, 0x16e: 0xbe, 0x16f: 0xbf,\n\t0x170: 0xc0, 0x171: 0xc1, 0x172: 0xc2, 0x173: 0xc3, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc4,\n\t0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc5, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc6, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc7, 0x187: 0x9c,\n\t0x188: 0xc8, 0x189: 0xc9, 0x18a: 0x9c, 0x18b: 0x9c, 0x18c: 0xca, 0x18d: 0x9c, 0x18e: 0x9c, 0x18f: 0x9c,\n\t0x190: 0xcb, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9c, 0x195: 0x9c, 0x196: 0x9c, 0x197: 0x9c,\n\t0x198: 0x9c, 0x199: 0x9c, 0x19a: 0x9c, 0x19b: 0x9c, 0x19c: 0x9c, 0x19d: 0x9c, 0x19e: 0x9c, 0x19f: 0x9c,\n\t0x1a0: 0x9c, 0x1a1: 0x9c, 0x1a2: 0x9c, 0x1a3: 0x9c, 0x1a4: 0x9c, 0x1a5: 0x9c, 0x1a6: 0x9c, 0x1a7: 0x9c,\n\t0x1a8: 0xcc, 0x1a9: 0xcd, 0x1aa: 0x9c, 0x1ab: 0xce, 0x1ac: 0x9c, 0x1ad: 0xcf, 0x1ae: 0xd0, 0x1af: 0x9c,\n\t0x1b0: 0xd1, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd2, 0x1b5: 0xd3, 0x1b6: 0xd4, 0x1b7: 0xd5,\n\t0x1b8: 0xd6, 0x1b9: 0xd7, 0x1ba: 0xd8, 0x1bb: 0xd9, 0x1bc: 0xda, 0x1bd: 0xdb, 0x1be: 0xdc, 0x1bf: 0x37,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x38, 0x1c1: 0xdd, 0x1c2: 0xde, 0x1c3: 0xdf, 0x1c4: 0xe0, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe1,\n\t0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0xe3, 0x1cd: 0xe4, 0x1ce: 0x3e, 0x1cf: 0x3f,\n\t0x1d0: 0xa0, 0x1d1: 0xa0, 0x1d2: 0xa0, 0x1d3: 0xa0, 0x1d4: 0xa0, 0x1d5: 0xa0, 0x1d6: 0xa0, 0x1d7: 0xa0,\n\t0x1d8: 0xa0, 0x1d9: 0xa0, 0x1da: 0xa0, 0x1db: 0xa0, 0x1dc: 0xa0, 0x1dd: 0xa0, 0x1de: 0xa0, 0x1df: 0xa0,\n\t0x1e0: 0xa0, 0x1e1: 0xa0, 0x1e2: 0xa0, 0x1e3: 0xa0, 0x1e4: 0xa0, 0x1e5: 0xa0, 0x1e6: 0xa0, 0x1e7: 0xa0,\n\t0x1e8: 0xa0, 0x1e9: 0xa0, 0x1ea: 0xa0, 0x1eb: 0xa0, 0x1ec: 0xa0, 0x1ed: 0xa0, 0x1ee: 0xa0, 0x1ef: 0xa0,\n\t0x1f0: 0xa0, 0x1f1: 0xa0, 0x1f2: 0xa0, 0x1f3: 0xa0, 0x1f4: 0xa0, 0x1f5: 0xa0, 0x1f6: 0xa0, 0x1f7: 0xa0,\n\t0x1f8: 0xa0, 0x1f9: 0xa0, 0x1fa: 0xa0, 0x1fb: 0xa0, 0x1fc: 0xa0, 0x1fd: 0xa0, 0x1fe: 0xa0, 0x1ff: 0xa0,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xa0, 0x201: 0xa0, 0x202: 0xa0, 0x203: 0xa0, 0x204: 0xa0, 0x205: 0xa0, 0x206: 0xa0, 0x207: 0xa0,\n\t0x208: 0xa0, 0x209: 0xa0, 0x20a: 0xa0, 0x20b: 0xa0, 0x20c: 0xa0, 0x20d: 0xa0, 0x20e: 0xa0, 0x20f: 0xa0,\n\t0x210: 0xa0, 0x211: 0xa0, 0x212: 0xa0, 0x213: 0xa0, 0x214: 0xa0, 0x215: 0xa0, 0x216: 0xa0, 0x217: 0xa0,\n\t0x218: 0xa0, 0x219: 0xa0, 0x21a: 0xa0, 0x21b: 0xa0, 0x21c: 0xa0, 0x21d: 0xa0, 0x21e: 0xa0, 0x21f: 0xa0,\n\t0x220: 0xa0, 0x221: 0xa0, 0x222: 0xa0, 0x223: 0xa0, 0x224: 0xa0, 0x225: 0xa0, 0x226: 0xa0, 0x227: 0xa0,\n\t0x228: 0xa0, 0x229: 0xa0, 0x22a: 0xa0, 0x22b: 0xa0, 0x22c: 0xa0, 0x22d: 0xa0, 0x22e: 0xa0, 0x22f: 0xa0,\n\t0x230: 0xa0, 0x231: 0xa0, 0x232: 0xa0, 0x233: 0xa0, 0x234: 0xa0, 0x235: 0xa0, 0x236: 0xa0, 0x237: 0x9c,\n\t0x238: 0xa0, 0x239: 0xa0, 0x23a: 0xa0, 0x23b: 0xa0, 0x23c: 0xa0, 0x23d: 0xa0, 0x23e: 0xa0, 0x23f: 0xa0,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xa0, 0x241: 0xa0, 0x242: 0xa0, 0x243: 0xa0, 0x244: 0xa0, 0x245: 0xa0, 0x246: 0xa0, 0x247: 0xa0,\n\t0x248: 0xa0, 0x249: 0xa0, 0x24a: 0xa0, 0x24b: 0xa0, 0x24c: 0xa0, 0x24d: 0xa0, 0x24e: 0xa0, 0x24f: 0xa0,\n\t0x250: 0xa0, 0x251: 0xa0, 0x252: 0xa0, 0x253: 0xa0, 0x254: 0xa0, 0x255: 0xa0, 0x256: 0xa0, 0x257: 0xa0,\n\t0x258: 0xa0, 0x259: 0xa0, 0x25a: 0xa0, 0x25b: 0xa0, 0x25c: 0xa0, 0x25d: 0xa0, 0x25e: 0xa0, 0x25f: 0xa0,\n\t0x260: 0xa0, 0x261: 0xa0, 0x262: 0xa0, 0x263: 0xa0, 0x264: 0xa0, 0x265: 0xa0, 0x266: 0xa0, 0x267: 0xa0,\n\t0x268: 0xa0, 0x269: 0xa0, 0x26a: 0xa0, 0x26b: 0xa0, 0x26c: 0xa0, 0x26d: 0xa0, 0x26e: 0xa0, 0x26f: 0xa0,\n\t0x270: 0xa0, 0x271: 0xa0, 0x272: 0xa0, 0x273: 0xa0, 0x274: 0xa0, 0x275: 0xa0, 0x276: 0xa0, 0x277: 0xa0,\n\t0x278: 0xa0, 0x279: 0xa0, 0x27a: 0xa0, 0x27b: 0xa0, 0x27c: 0xa0, 0x27d: 0xa0, 0x27e: 0xa0, 0x27f: 0xa0,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xa0, 0x281: 0xa0, 0x282: 0xa0, 0x283: 0xa0, 0x284: 0xa0, 0x285: 0xa0, 0x286: 0xa0, 0x287: 0xa0,\n\t0x288: 0xa0, 0x289: 0xa0, 0x28a: 0xa0, 0x28b: 0xa0, 0x28c: 0xa0, 0x28d: 0xa0, 0x28e: 0xa0, 0x28f: 0xa0,\n\t0x290: 0xa0, 0x291: 0xa0, 0x292: 0xa0, 0x293: 0xa0, 0x294: 0xa0, 0x295: 0xa0, 0x296: 0xa0, 0x297: 0xa0,\n\t0x298: 0xa0, 0x299: 0xa0, 0x29a: 0xa0, 0x29b: 0xa0, 0x29c: 0xa0, 0x29d: 0xa0, 0x29e: 0xa0, 0x29f: 0xa0,\n\t0x2a0: 0xa0, 0x2a1: 0xa0, 0x2a2: 0xa0, 0x2a3: 0xa0, 0x2a4: 0xa0, 0x2a5: 0xa0, 0x2a6: 0xa0, 0x2a7: 0xa0,\n\t0x2a8: 0xa0, 0x2a9: 0xa0, 0x2aa: 0xa0, 0x2ab: 0xa0, 0x2ac: 0xa0, 0x2ad: 0xa0, 0x2ae: 0xa0, 0x2af: 0xa0,\n\t0x2b0: 0xa0, 0x2b1: 0xa0, 0x2b2: 0xa0, 0x2b3: 0xa0, 0x2b4: 0xa0, 0x2b5: 0xa0, 0x2b6: 0xa0, 0x2b7: 0xa0,\n\t0x2b8: 0xa0, 0x2b9: 0xa0, 0x2ba: 0xa0, 0x2bb: 0xa0, 0x2bc: 0xa0, 0x2bd: 0xa0, 0x2be: 0xa0, 0x2bf: 0xe5,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xa0, 0x2c1: 0xa0, 0x2c2: 0xa0, 0x2c3: 0xa0, 0x2c4: 0xa0, 0x2c5: 0xa0, 0x2c6: 0xa0, 0x2c7: 0xa0,\n\t0x2c8: 0xa0, 0x2c9: 0xa0, 0x2ca: 0xa0, 0x2cb: 0xa0, 0x2cc: 0xa0, 0x2cd: 0xa0, 0x2ce: 0xa0, 0x2cf: 0xa0,\n\t0x2d0: 0xa0, 0x2d1: 0xa0, 0x2d2: 0xe6, 0x2d3: 0xe7, 0x2d4: 0xa0, 0x2d5: 0xa0, 0x2d6: 0xa0, 0x2d7: 0xa0,\n\t0x2d8: 0xe8, 0x2d9: 0x40, 0x2da: 0x41, 0x2db: 0xe9, 0x2dc: 0x42, 0x2dd: 0x43, 0x2de: 0x44, 0x2df: 0xea,\n\t0x2e0: 0xeb, 0x2e1: 0xec, 0x2e2: 0xed, 0x2e3: 0xee, 0x2e4: 0xef, 0x2e5: 0xf0, 0x2e6: 0xf1, 0x2e7: 0xf2,\n\t0x2e8: 0xf3, 0x2e9: 0xf4, 0x2ea: 0xf5, 0x2eb: 0xf6, 0x2ec: 0xf7, 0x2ed: 0xf8, 0x2ee: 0xf9, 0x2ef: 0xfa,\n\t0x2f0: 0xa0, 0x2f1: 0xa0, 0x2f2: 0xa0, 0x2f3: 0xa0, 0x2f4: 0xa0, 0x2f5: 0xa0, 0x2f6: 0xa0, 0x2f7: 0xa0,\n\t0x2f8: 0xa0, 0x2f9: 0xa0, 0x2fa: 0xa0, 0x2fb: 0xa0, 0x2fc: 0xa0, 0x2fd: 0xa0, 0x2fe: 0xa0, 0x2ff: 0xa0,\n\t// Block 0xc, offset 0x300\n\t0x300: 0xa0, 0x301: 0xa0, 0x302: 0xa0, 0x303: 0xa0, 0x304: 0xa0, 0x305: 0xa0, 0x306: 0xa0, 0x307: 0xa0,\n\t0x308: 0xa0, 0x309: 0xa0, 0x30a: 0xa0, 0x30b: 0xa0, 0x30c: 0xa0, 0x30d: 0xa0, 0x30e: 0xa0, 0x30f: 0xa0,\n\t0x310: 0xa0, 0x311: 0xa0, 0x312: 0xa0, 0x313: 0xa0, 0x314: 0xa0, 0x315: 0xa0, 0x316: 0xa0, 0x317: 0xa0,\n\t0x318: 0xa0, 0x319: 0xa0, 0x31a: 0xa0, 0x31b: 0xa0, 0x31c: 0xa0, 0x31d: 0xa0, 0x31e: 0xfb, 0x31f: 0xfc,\n\t// Block 0xd, offset 0x340\n\t0x340: 0xfd, 0x341: 0xfd, 0x342: 0xfd, 0x343: 0xfd, 0x344: 0xfd, 0x345: 0xfd, 0x346: 0xfd, 0x347: 0xfd,\n\t0x348: 0xfd, 0x349: 0xfd, 0x34a: 0xfd, 0x34b: 0xfd, 0x34c: 0xfd, 0x34d: 0xfd, 0x34e: 0xfd, 0x34f: 0xfd,\n\t0x350: 0xfd, 0x351: 0xfd, 0x352: 0xfd, 0x353: 0xfd, 0x354: 0xfd, 0x355: 0xfd, 0x356: 0xfd, 0x357: 0xfd,\n\t0x358: 0xfd, 0x359: 0xfd, 0x35a: 0xfd, 0x35b: 0xfd, 0x35c: 0xfd, 0x35d: 0xfd, 0x35e: 0xfd, 0x35f: 0xfd,\n\t0x360: 0xfd, 0x361: 0xfd, 0x362: 0xfd, 0x363: 0xfd, 0x364: 0xfd, 0x365: 0xfd, 0x366: 0xfd, 0x367: 0xfd,\n\t0x368: 0xfd, 0x369: 0xfd, 0x36a: 0xfd, 0x36b: 0xfd, 0x36c: 0xfd, 0x36d: 0xfd, 0x36e: 0xfd, 0x36f: 0xfd,\n\t0x370: 0xfd, 0x371: 0xfd, 0x372: 0xfd, 0x373: 0xfd, 0x374: 0xfd, 0x375: 0xfd, 0x376: 0xfd, 0x377: 0xfd,\n\t0x378: 0xfd, 0x379: 0xfd, 0x37a: 0xfd, 0x37b: 0xfd, 0x37c: 0xfd, 0x37d: 0xfd, 0x37e: 0xfd, 0x37f: 0xfd,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xfd, 0x381: 0xfd, 0x382: 0xfd, 0x383: 0xfd, 0x384: 0xfd, 0x385: 0xfd, 0x386: 0xfd, 0x387: 0xfd,\n\t0x388: 0xfd, 0x389: 0xfd, 0x38a: 0xfd, 0x38b: 0xfd, 0x38c: 0xfd, 0x38d: 0xfd, 0x38e: 0xfd, 0x38f: 0xfd,\n\t0x390: 0xfd, 0x391: 0xfd, 0x392: 0xfd, 0x393: 0xfd, 0x394: 0xfd, 0x395: 0xfd, 0x396: 0xfd, 0x397: 0xfd,\n\t0x398: 0xfd, 0x399: 0xfd, 0x39a: 0xfd, 0x39b: 0xfd, 0x39c: 0xfd, 0x39d: 0xfd, 0x39e: 0xfd, 0x39f: 0xfd,\n\t0x3a0: 0xfd, 0x3a1: 0xfd, 0x3a2: 0xfd, 0x3a3: 0xfd, 0x3a4: 0xfe, 0x3a5: 0xff, 0x3a6: 0x100, 0x3a7: 0x101,\n\t0x3a8: 0x45, 0x3a9: 0x102, 0x3aa: 0x103, 0x3ab: 0x46, 0x3ac: 0x47, 0x3ad: 0x48, 0x3ae: 0x49, 0x3af: 0x4a,\n\t0x3b0: 0x104, 0x3b1: 0x4b, 0x3b2: 0x4c, 0x3b3: 0x4d, 0x3b4: 0x4e, 0x3b5: 0x4f, 0x3b6: 0x105, 0x3b7: 0x50,\n\t0x3b8: 0x51, 0x3b9: 0x52, 0x3ba: 0x53, 0x3bb: 0x54, 0x3bc: 0x55, 0x3bd: 0x56, 0x3be: 0x57, 0x3bf: 0x58,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x106, 0x3c1: 0x107, 0x3c2: 0xa0, 0x3c3: 0x108, 0x3c4: 0x109, 0x3c5: 0x9c, 0x3c6: 0x10a, 0x3c7: 0x10b,\n\t0x3c8: 0xfd, 0x3c9: 0xfd, 0x3ca: 0x10c, 0x3cb: 0x10d, 0x3cc: 0x10e, 0x3cd: 0x10f, 0x3ce: 0x110, 0x3cf: 0x111,\n\t0x3d0: 0x112, 0x3d1: 0xa0, 0x3d2: 0x113, 0x3d3: 0x114, 0x3d4: 0x115, 0x3d5: 0x116, 0x3d6: 0xfd, 0x3d7: 0xfd,\n\t0x3d8: 0xa0, 0x3d9: 0xa0, 0x3da: 0xa0, 0x3db: 0xa0, 0x3dc: 0x117, 0x3dd: 0x118, 0x3de: 0xfd, 0x3df: 0xfd,\n\t0x3e0: 0x119, 0x3e1: 0x11a, 0x3e2: 0x11b, 0x3e3: 0x11c, 0x3e4: 0x11d, 0x3e5: 0xfd, 0x3e6: 0x11e, 0x3e7: 0x11f,\n\t0x3e8: 0x120, 0x3e9: 0x121, 0x3ea: 0x122, 0x3eb: 0x59, 0x3ec: 0x123, 0x3ed: 0x124, 0x3ee: 0x5a, 0x3ef: 0xfd,\n\t0x3f0: 0x125, 0x3f1: 0x126, 0x3f2: 0x127, 0x3f3: 0x128, 0x3f4: 0x129, 0x3f5: 0xfd, 0x3f6: 0xfd, 0x3f7: 0xfd,\n\t0x3f8: 0xfd, 0x3f9: 0x12a, 0x3fa: 0x12b, 0x3fb: 0xfd, 0x3fc: 0x12c, 0x3fd: 0x12d, 0x3fe: 0x12e, 0x3ff: 0x12f,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x130, 0x401: 0x131, 0x402: 0x132, 0x403: 0x133, 0x404: 0x134, 0x405: 0x135, 0x406: 0x136, 0x407: 0x137,\n\t0x408: 0x138, 0x409: 0xfd, 0x40a: 0x139, 0x40b: 0x13a, 0x40c: 0x5b, 0x40d: 0x5c, 0x40e: 0xfd, 0x40f: 0xfd,\n\t0x410: 0x13b, 0x411: 0x13c, 0x412: 0x13d, 0x413: 0x13e, 0x414: 0xfd, 0x415: 0xfd, 0x416: 0x13f, 0x417: 0x140,\n\t0x418: 0x141, 0x419: 0x142, 0x41a: 0x143, 0x41b: 0x144, 0x41c: 0x145, 0x41d: 0xfd, 0x41e: 0xfd, 0x41f: 0xfd,\n\t0x420: 0x146, 0x421: 0xfd, 0x422: 0x147, 0x423: 0x148, 0x424: 0x5d, 0x425: 0x149, 0x426: 0x14a, 0x427: 0x14b,\n\t0x428: 0x14c, 0x429: 0x14d, 0x42a: 0x14e, 0x42b: 0x14f, 0x42c: 0xfd, 0x42d: 0xfd, 0x42e: 0xfd, 0x42f: 0xfd,\n\t0x430: 0x150, 0x431: 0x151, 0x432: 0x152, 0x433: 0xfd, 0x434: 0x153, 0x435: 0x154, 0x436: 0x155, 0x437: 0xfd,\n\t0x438: 0xfd, 0x439: 0xfd, 0x43a: 0xfd, 0x43b: 0x156, 0x43c: 0xfd, 0x43d: 0xfd, 0x43e: 0x157, 0x43f: 0x158,\n\t// Block 0x11, offset 0x440\n\t0x440: 0xa0, 0x441: 0xa0, 0x442: 0xa0, 0x443: 0xa0, 0x444: 0xa0, 0x445: 0xa0, 0x446: 0xa0, 0x447: 0xa0,\n\t0x448: 0xa0, 0x449: 0xa0, 0x44a: 0xa0, 0x44b: 0xa0, 0x44c: 0xa0, 0x44d: 0xa0, 0x44e: 0x159, 0x44f: 0xfd,\n\t0x450: 0x9c, 0x451: 0x15a, 0x452: 0xa0, 0x453: 0xa0, 0x454: 0xa0, 0x455: 0x15b, 0x456: 0xfd, 0x457: 0xfd,\n\t0x458: 0xfd, 0x459: 0xfd, 0x45a: 0xfd, 0x45b: 0xfd, 0x45c: 0xfd, 0x45d: 0xfd, 0x45e: 0xfd, 0x45f: 0xfd,\n\t0x460: 0xfd, 0x461: 0xfd, 0x462: 0xfd, 0x463: 0xfd, 0x464: 0xfd, 0x465: 0xfd, 0x466: 0xfd, 0x467: 0xfd,\n\t0x468: 0xfd, 0x469: 0xfd, 0x46a: 0xfd, 0x46b: 0xfd, 0x46c: 0xfd, 0x46d: 0xfd, 0x46e: 0xfd, 0x46f: 0xfd,\n\t0x470: 0xfd, 0x471: 0xfd, 0x472: 0xfd, 0x473: 0xfd, 0x474: 0xfd, 0x475: 0xfd, 0x476: 0xfd, 0x477: 0xfd,\n\t0x478: 0xfd, 0x479: 0xfd, 0x47a: 0xfd, 0x47b: 0xfd, 0x47c: 0xfd, 0x47d: 0xfd, 0x47e: 0xfd, 0x47f: 0xfd,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xa0, 0x481: 0xa0, 0x482: 0xa0, 0x483: 0xa0, 0x484: 0xa0, 0x485: 0xa0, 0x486: 0xa0, 0x487: 0xa0,\n\t0x488: 0xa0, 0x489: 0xa0, 0x48a: 0xa0, 0x48b: 0xa0, 0x48c: 0xa0, 0x48d: 0xa0, 0x48e: 0xa0, 0x48f: 0xa0,\n\t0x490: 0x15c, 0x491: 0xfd, 0x492: 0xfd, 0x493: 0xfd, 0x494: 0xfd, 0x495: 0xfd, 0x496: 0xfd, 0x497: 0xfd,\n\t0x498: 0xfd, 0x499: 0xfd, 0x49a: 0xfd, 0x49b: 0xfd, 0x49c: 0xfd, 0x49d: 0xfd, 0x49e: 0xfd, 0x49f: 0xfd,\n\t0x4a0: 0xfd, 0x4a1: 0xfd, 0x4a2: 0xfd, 0x4a3: 0xfd, 0x4a4: 0xfd, 0x4a5: 0xfd, 0x4a6: 0xfd, 0x4a7: 0xfd,\n\t0x4a8: 0xfd, 0x4a9: 0xfd, 0x4aa: 0xfd, 0x4ab: 0xfd, 0x4ac: 0xfd, 0x4ad: 0xfd, 0x4ae: 0xfd, 0x4af: 0xfd,\n\t0x4b0: 0xfd, 0x4b1: 0xfd, 0x4b2: 0xfd, 0x4b3: 0xfd, 0x4b4: 0xfd, 0x4b5: 0xfd, 0x4b6: 0xfd, 0x4b7: 0xfd,\n\t0x4b8: 0xfd, 0x4b9: 0xfd, 0x4ba: 0xfd, 0x4bb: 0xfd, 0x4bc: 0xfd, 0x4bd: 0xfd, 0x4be: 0xfd, 0x4bf: 0xfd,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xfd, 0x4c1: 0xfd, 0x4c2: 0xfd, 0x4c3: 0xfd, 0x4c4: 0xfd, 0x4c5: 0xfd, 0x4c6: 0xfd, 0x4c7: 0xfd,\n\t0x4c8: 0xfd, 0x4c9: 0xfd, 0x4ca: 0xfd, 0x4cb: 0xfd, 0x4cc: 0xfd, 0x4cd: 0xfd, 0x4ce: 0xfd, 0x4cf: 0xfd,\n\t0x4d0: 0xa0, 0x4d1: 0xa0, 0x4d2: 0xa0, 0x4d3: 0xa0, 0x4d4: 0xa0, 0x4d5: 0xa0, 0x4d6: 0xa0, 0x4d7: 0xa0,\n\t0x4d8: 0xa0, 0x4d9: 0x15d, 0x4da: 0xfd, 0x4db: 0xfd, 0x4dc: 0xfd, 0x4dd: 0xfd, 0x4de: 0xfd, 0x4df: 0xfd,\n\t0x4e0: 0xfd, 0x4e1: 0xfd, 0x4e2: 0xfd, 0x4e3: 0xfd, 0x4e4: 0xfd, 0x4e5: 0xfd, 0x4e6: 0xfd, 0x4e7: 0xfd,\n\t0x4e8: 0xfd, 0x4e9: 0xfd, 0x4ea: 0xfd, 0x4eb: 0xfd, 0x4ec: 0xfd, 0x4ed: 0xfd, 0x4ee: 0xfd, 0x4ef: 0xfd,\n\t0x4f0: 0xfd, 0x4f1: 0xfd, 0x4f2: 0xfd, 0x4f3: 0xfd, 0x4f4: 0xfd, 0x4f5: 0xfd, 0x4f6: 0xfd, 0x4f7: 0xfd,\n\t0x4f8: 0xfd, 0x4f9: 0xfd, 0x4fa: 0xfd, 0x4fb: 0xfd, 0x4fc: 0xfd, 0x4fd: 0xfd, 0x4fe: 0xfd, 0x4ff: 0xfd,\n\t// Block 0x14, offset 0x500\n\t0x500: 0xfd, 0x501: 0xfd, 0x502: 0xfd, 0x503: 0xfd, 0x504: 0xfd, 0x505: 0xfd, 0x506: 0xfd, 0x507: 0xfd,\n\t0x508: 0xfd, 0x509: 0xfd, 0x50a: 0xfd, 0x50b: 0xfd, 0x50c: 0xfd, 0x50d: 0xfd, 0x50e: 0xfd, 0x50f: 0xfd,\n\t0x510: 0xfd, 0x511: 0xfd, 0x512: 0xfd, 0x513: 0xfd, 0x514: 0xfd, 0x515: 0xfd, 0x516: 0xfd, 0x517: 0xfd,\n\t0x518: 0xfd, 0x519: 0xfd, 0x51a: 0xfd, 0x51b: 0xfd, 0x51c: 0xfd, 0x51d: 0xfd, 0x51e: 0xfd, 0x51f: 0xfd,\n\t0x520: 0xa0, 0x521: 0xa0, 0x522: 0xa0, 0x523: 0xa0, 0x524: 0xa0, 0x525: 0xa0, 0x526: 0xa0, 0x527: 0xa0,\n\t0x528: 0x14f, 0x529: 0x15e, 0x52a: 0xfd, 0x52b: 0x15f, 0x52c: 0x160, 0x52d: 0x161, 0x52e: 0x162, 0x52f: 0xfd,\n\t0x530: 0xfd, 0x531: 0xfd, 0x532: 0xfd, 0x533: 0xfd, 0x534: 0xfd, 0x535: 0xfd, 0x536: 0xfd, 0x537: 0xfd,\n\t0x538: 0xfd, 0x539: 0x163, 0x53a: 0x164, 0x53b: 0xfd, 0x53c: 0xa0, 0x53d: 0x165, 0x53e: 0x166, 0x53f: 0x167,\n\t// Block 0x15, offset 0x540\n\t0x540: 0xa0, 0x541: 0xa0, 0x542: 0xa0, 0x543: 0xa0, 0x544: 0xa0, 0x545: 0xa0, 0x546: 0xa0, 0x547: 0xa0,\n\t0x548: 0xa0, 0x549: 0xa0, 0x54a: 0xa0, 0x54b: 0xa0, 0x54c: 0xa0, 0x54d: 0xa0, 0x54e: 0xa0, 0x54f: 0xa0,\n\t0x550: 0xa0, 0x551: 0xa0, 0x552: 0xa0, 0x553: 0xa0, 0x554: 0xa0, 0x555: 0xa0, 0x556: 0xa0, 0x557: 0xa0,\n\t0x558: 0xa0, 0x559: 0xa0, 0x55a: 0xa0, 0x55b: 0xa0, 0x55c: 0xa0, 0x55d: 0xa0, 0x55e: 0xa0, 0x55f: 0x168,\n\t0x560: 0xa0, 0x561: 0xa0, 0x562: 0xa0, 0x563: 0xa0, 0x564: 0xa0, 0x565: 0xa0, 0x566: 0xa0, 0x567: 0xa0,\n\t0x568: 0xa0, 0x569: 0xa0, 0x56a: 0xa0, 0x56b: 0xa0, 0x56c: 0xa0, 0x56d: 0xa0, 0x56e: 0xa0, 0x56f: 0xa0,\n\t0x570: 0xa0, 0x571: 0xa0, 0x572: 0xa0, 0x573: 0x169, 0x574: 0x16a, 0x575: 0xfd, 0x576: 0xfd, 0x577: 0xfd,\n\t0x578: 0xfd, 0x579: 0xfd, 0x57a: 0xfd, 0x57b: 0xfd, 0x57c: 0xfd, 0x57d: 0xfd, 0x57e: 0xfd, 0x57f: 0xfd,\n\t// Block 0x16, offset 0x580\n\t0x580: 0xa0, 0x581: 0xa0, 0x582: 0xa0, 0x583: 0xa0, 0x584: 0x16b, 0x585: 0x16c, 0x586: 0xa0, 0x587: 0xa0,\n\t0x588: 0xa0, 0x589: 0xa0, 0x58a: 0xa0, 0x58b: 0x16d, 0x58c: 0xfd, 0x58d: 0xfd, 0x58e: 0xfd, 0x58f: 0xfd,\n\t0x590: 0xfd, 0x591: 0xfd, 0x592: 0xfd, 0x593: 0xfd, 0x594: 0xfd, 0x595: 0xfd, 0x596: 0xfd, 0x597: 0xfd,\n\t0x598: 0xfd, 0x599: 0xfd, 0x59a: 0xfd, 0x59b: 0xfd, 0x59c: 0xfd, 0x59d: 0xfd, 0x59e: 0xfd, 0x59f: 0xfd,\n\t0x5a0: 0xfd, 0x5a1: 0xfd, 0x5a2: 0xfd, 0x5a3: 0xfd, 0x5a4: 0xfd, 0x5a5: 0xfd, 0x5a6: 0xfd, 0x5a7: 0xfd,\n\t0x5a8: 0xfd, 0x5a9: 0xfd, 0x5aa: 0xfd, 0x5ab: 0xfd, 0x5ac: 0xfd, 0x5ad: 0xfd, 0x5ae: 0xfd, 0x5af: 0xfd,\n\t0x5b0: 0xa0, 0x5b1: 0x16e, 0x5b2: 0x16f, 0x5b3: 0xfd, 0x5b4: 0xfd, 0x5b5: 0xfd, 0x5b6: 0xfd, 0x5b7: 0xfd,\n\t0x5b8: 0xfd, 0x5b9: 0xfd, 0x5ba: 0xfd, 0x5bb: 0xfd, 0x5bc: 0xfd, 0x5bd: 0xfd, 0x5be: 0xfd, 0x5bf: 0xfd,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x9c, 0x5c1: 0x9c, 0x5c2: 0x9c, 0x5c3: 0x170, 0x5c4: 0x171, 0x5c5: 0x172, 0x5c6: 0x173, 0x5c7: 0x174,\n\t0x5c8: 0x9c, 0x5c9: 0x175, 0x5ca: 0xfd, 0x5cb: 0x176, 0x5cc: 0x9c, 0x5cd: 0x177, 0x5ce: 0xfd, 0x5cf: 0xfd,\n\t0x5d0: 0x5e, 0x5d1: 0x5f, 0x5d2: 0x60, 0x5d3: 0x61, 0x5d4: 0x62, 0x5d5: 0x63, 0x5d6: 0x64, 0x5d7: 0x65,\n\t0x5d8: 0x66, 0x5d9: 0x67, 0x5da: 0x68, 0x5db: 0x69, 0x5dc: 0x6a, 0x5dd: 0x6b, 0x5de: 0x6c, 0x5df: 0x6d,\n\t0x5e0: 0x9c, 0x5e1: 0x9c, 0x5e2: 0x9c, 0x5e3: 0x9c, 0x5e4: 0x9c, 0x5e5: 0x9c, 0x5e6: 0x9c, 0x5e7: 0x9c,\n\t0x5e8: 0x178, 0x5e9: 0x179, 0x5ea: 0x17a, 0x5eb: 0xfd, 0x5ec: 0xfd, 0x5ed: 0xfd, 0x5ee: 0xfd, 0x5ef: 0xfd,\n\t0x5f0: 0xfd, 0x5f1: 0xfd, 0x5f2: 0xfd, 0x5f3: 0xfd, 0x5f4: 0xfd, 0x5f5: 0xfd, 0x5f6: 0xfd, 0x5f7: 0xfd,\n\t0x5f8: 0xfd, 0x5f9: 0xfd, 0x5fa: 0xfd, 0x5fb: 0xfd, 0x5fc: 0xfd, 0x5fd: 0xfd, 0x5fe: 0xfd, 0x5ff: 0xfd,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x17b, 0x601: 0xfd, 0x602: 0xfd, 0x603: 0xfd, 0x604: 0x17c, 0x605: 0x17d, 0x606: 0xfd, 0x607: 0xfd,\n\t0x608: 0xfd, 0x609: 0xfd, 0x60a: 0xfd, 0x60b: 0x17e, 0x60c: 0xfd, 0x60d: 0xfd, 0x60e: 0xfd, 0x60f: 0xfd,\n\t0x610: 0xfd, 0x611: 0xfd, 0x612: 0xfd, 0x613: 0xfd, 0x614: 0xfd, 0x615: 0xfd, 0x616: 0xfd, 0x617: 0xfd,\n\t0x618: 0xfd, 0x619: 0xfd, 0x61a: 0xfd, 0x61b: 0xfd, 0x61c: 0xfd, 0x61d: 0xfd, 0x61e: 0xfd, 0x61f: 0xfd,\n\t0x620: 0x125, 0x621: 0x125, 0x622: 0x125, 0x623: 0x17f, 0x624: 0x6e, 0x625: 0x180, 0x626: 0xfd, 0x627: 0xfd,\n\t0x628: 0xfd, 0x629: 0xfd, 0x62a: 0xfd, 0x62b: 0xfd, 0x62c: 0xfd, 0x62d: 0xfd, 0x62e: 0xfd, 0x62f: 0xfd,\n\t0x630: 0xfd, 0x631: 0x181, 0x632: 0x182, 0x633: 0xfd, 0x634: 0x183, 0x635: 0xfd, 0x636: 0xfd, 0x637: 0xfd,\n\t0x638: 0x6f, 0x639: 0x70, 0x63a: 0x71, 0x63b: 0x184, 0x63c: 0xfd, 0x63d: 0xfd, 0x63e: 0xfd, 0x63f: 0xfd,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x185, 0x641: 0x9c, 0x642: 0x186, 0x643: 0x187, 0x644: 0x72, 0x645: 0x73, 0x646: 0x188, 0x647: 0x189,\n\t0x648: 0x74, 0x649: 0x18a, 0x64a: 0xfd, 0x64b: 0xfd, 0x64c: 0x9c, 0x64d: 0x9c, 0x64e: 0x9c, 0x64f: 0x9c,\n\t0x650: 0x9c, 0x651: 0x9c, 0x652: 0x9c, 0x653: 0x9c, 0x654: 0x9c, 0x655: 0x9c, 0x656: 0x9c, 0x657: 0x9c,\n\t0x658: 0x9c, 0x659: 0x9c, 0x65a: 0x9c, 0x65b: 0x18b, 0x65c: 0x9c, 0x65d: 0x18c, 0x65e: 0x9c, 0x65f: 0x18d,\n\t0x660: 0x18e, 0x661: 0x18f, 0x662: 0x190, 0x663: 0xfd, 0x664: 0x9c, 0x665: 0x191, 0x666: 0x9c, 0x667: 0x192,\n\t0x668: 0x9c, 0x669: 0x193, 0x66a: 0x194, 0x66b: 0x195, 0x66c: 0x9c, 0x66d: 0x9c, 0x66e: 0x196, 0x66f: 0x197,\n\t0x670: 0xfd, 0x671: 0xfd, 0x672: 0xfd, 0x673: 0xfd, 0x674: 0xfd, 0x675: 0xfd, 0x676: 0xfd, 0x677: 0xfd,\n\t0x678: 0xfd, 0x679: 0xfd, 0x67a: 0xfd, 0x67b: 0xfd, 0x67c: 0xfd, 0x67d: 0xfd, 0x67e: 0xfd, 0x67f: 0xfd,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0xa0, 0x681: 0xa0, 0x682: 0xa0, 0x683: 0xa0, 0x684: 0xa0, 0x685: 0xa0, 0x686: 0xa0, 0x687: 0xa0,\n\t0x688: 0xa0, 0x689: 0xa0, 0x68a: 0xa0, 0x68b: 0xa0, 0x68c: 0xa0, 0x68d: 0xa0, 0x68e: 0xa0, 0x68f: 0xa0,\n\t0x690: 0xa0, 0x691: 0xa0, 0x692: 0xa0, 0x693: 0xa0, 0x694: 0xa0, 0x695: 0xa0, 0x696: 0xa0, 0x697: 0xa0,\n\t0x698: 0xa0, 0x699: 0xa0, 0x69a: 0xa0, 0x69b: 0x198, 0x69c: 0xa0, 0x69d: 0xa0, 0x69e: 0xa0, 0x69f: 0xa0,\n\t0x6a0: 0xa0, 0x6a1: 0xa0, 0x6a2: 0xa0, 0x6a3: 0xa0, 0x6a4: 0xa0, 0x6a5: 0xa0, 0x6a6: 0xa0, 0x6a7: 0xa0,\n\t0x6a8: 0xa0, 0x6a9: 0xa0, 0x6aa: 0xa0, 0x6ab: 0xa0, 0x6ac: 0xa0, 0x6ad: 0xa0, 0x6ae: 0xa0, 0x6af: 0xa0,\n\t0x6b0: 0xa0, 0x6b1: 0xa0, 0x6b2: 0xa0, 0x6b3: 0xa0, 0x6b4: 0xa0, 0x6b5: 0xa0, 0x6b6: 0xa0, 0x6b7: 0xa0,\n\t0x6b8: 0xa0, 0x6b9: 0xa0, 0x6ba: 0xa0, 0x6bb: 0xa0, 0x6bc: 0xa0, 0x6bd: 0xa0, 0x6be: 0xa0, 0x6bf: 0xa0,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0xa0, 0x6c1: 0xa0, 0x6c2: 0xa0, 0x6c3: 0xa0, 0x6c4: 0xa0, 0x6c5: 0xa0, 0x6c6: 0xa0, 0x6c7: 0xa0,\n\t0x6c8: 0xa0, 0x6c9: 0xa0, 0x6ca: 0xa0, 0x6cb: 0xa0, 0x6cc: 0xa0, 0x6cd: 0xa0, 0x6ce: 0xa0, 0x6cf: 0xa0,\n\t0x6d0: 0xa0, 0x6d1: 0xa0, 0x6d2: 0xa0, 0x6d3: 0xa0, 0x6d4: 0xa0, 0x6d5: 0xa0, 0x6d6: 0xa0, 0x6d7: 0xa0,\n\t0x6d8: 0xa0, 0x6d9: 0xa0, 0x6da: 0xa0, 0x6db: 0xa0, 0x6dc: 0x199, 0x6dd: 0xa0, 0x6de: 0xa0, 0x6df: 0xa0,\n\t0x6e0: 0x19a, 0x6e1: 0xa0, 0x6e2: 0xa0, 0x6e3: 0xa0, 0x6e4: 0xa0, 0x6e5: 0xa0, 0x6e6: 0xa0, 0x6e7: 0xa0,\n\t0x6e8: 0xa0, 0x6e9: 0xa0, 0x6ea: 0xa0, 0x6eb: 0xa0, 0x6ec: 0xa0, 0x6ed: 0xa0, 0x6ee: 0xa0, 0x6ef: 0xa0,\n\t0x6f0: 0xa0, 0x6f1: 0xa0, 0x6f2: 0xa0, 0x6f3: 0xa0, 0x6f4: 0xa0, 0x6f5: 0xa0, 0x6f6: 0xa0, 0x6f7: 0xa0,\n\t0x6f8: 0xa0, 0x6f9: 0xa0, 0x6fa: 0xa0, 0x6fb: 0xa0, 0x6fc: 0xa0, 0x6fd: 0xa0, 0x6fe: 0xa0, 0x6ff: 0xa0,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0xa0, 0x701: 0xa0, 0x702: 0xa0, 0x703: 0xa0, 0x704: 0xa0, 0x705: 0xa0, 0x706: 0xa0, 0x707: 0xa0,\n\t0x708: 0xa0, 0x709: 0xa0, 0x70a: 0xa0, 0x70b: 0xa0, 0x70c: 0xa0, 0x70d: 0xa0, 0x70e: 0xa0, 0x70f: 0xa0,\n\t0x710: 0xa0, 0x711: 0xa0, 0x712: 0xa0, 0x713: 0xa0, 0x714: 0xa0, 0x715: 0xa0, 0x716: 0xa0, 0x717: 0xa0,\n\t0x718: 0xa0, 0x719: 0xa0, 0x71a: 0xa0, 0x71b: 0xa0, 0x71c: 0xa0, 0x71d: 0xa0, 0x71e: 0xa0, 0x71f: 0xa0,\n\t0x720: 0xa0, 0x721: 0xa0, 0x722: 0xa0, 0x723: 0xa0, 0x724: 0xa0, 0x725: 0xa0, 0x726: 0xa0, 0x727: 0xa0,\n\t0x728: 0xa0, 0x729: 0xa0, 0x72a: 0xa0, 0x72b: 0xa0, 0x72c: 0xa0, 0x72d: 0xa0, 0x72e: 0xa0, 0x72f: 0xa0,\n\t0x730: 0xa0, 0x731: 0xa0, 0x732: 0xa0, 0x733: 0xa0, 0x734: 0xa0, 0x735: 0xa0, 0x736: 0xa0, 0x737: 0xa0,\n\t0x738: 0xa0, 0x739: 0xa0, 0x73a: 0x19b, 0x73b: 0xa0, 0x73c: 0xa0, 0x73d: 0xa0, 0x73e: 0xa0, 0x73f: 0xa0,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0xa0, 0x741: 0xa0, 0x742: 0xa0, 0x743: 0xa0, 0x744: 0xa0, 0x745: 0xa0, 0x746: 0xa0, 0x747: 0xa0,\n\t0x748: 0xa0, 0x749: 0xa0, 0x74a: 0xa0, 0x74b: 0xa0, 0x74c: 0xa0, 0x74d: 0xa0, 0x74e: 0xa0, 0x74f: 0xa0,\n\t0x750: 0xa0, 0x751: 0xa0, 0x752: 0xa0, 0x753: 0xa0, 0x754: 0xa0, 0x755: 0xa0, 0x756: 0xa0, 0x757: 0xa0,\n\t0x758: 0xa0, 0x759: 0xa0, 0x75a: 0xa0, 0x75b: 0xa0, 0x75c: 0xa0, 0x75d: 0xa0, 0x75e: 0xa0, 0x75f: 0xa0,\n\t0x760: 0xa0, 0x761: 0xa0, 0x762: 0xa0, 0x763: 0xa0, 0x764: 0xa0, 0x765: 0xa0, 0x766: 0xa0, 0x767: 0xa0,\n\t0x768: 0xa0, 0x769: 0xa0, 0x76a: 0xa0, 0x76b: 0xa0, 0x76c: 0xa0, 0x76d: 0xa0, 0x76e: 0xa0, 0x76f: 0x19c,\n\t0x770: 0xfd, 0x771: 0xfd, 0x772: 0xfd, 0x773: 0xfd, 0x774: 0xfd, 0x775: 0xfd, 0x776: 0xfd, 0x777: 0xfd,\n\t0x778: 0xfd, 0x779: 0xfd, 0x77a: 0xfd, 0x77b: 0xfd, 0x77c: 0xfd, 0x77d: 0xfd, 0x77e: 0xfd, 0x77f: 0xfd,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0xfd, 0x781: 0xfd, 0x782: 0xfd, 0x783: 0xfd, 0x784: 0xfd, 0x785: 0xfd, 0x786: 0xfd, 0x787: 0xfd,\n\t0x788: 0xfd, 0x789: 0xfd, 0x78a: 0xfd, 0x78b: 0xfd, 0x78c: 0xfd, 0x78d: 0xfd, 0x78e: 0xfd, 0x78f: 0xfd,\n\t0x790: 0xfd, 0x791: 0xfd, 0x792: 0xfd, 0x793: 0xfd, 0x794: 0xfd, 0x795: 0xfd, 0x796: 0xfd, 0x797: 0xfd,\n\t0x798: 0xfd, 0x799: 0xfd, 0x79a: 0xfd, 0x79b: 0xfd, 0x79c: 0xfd, 0x79d: 0xfd, 0x79e: 0xfd, 0x79f: 0xfd,\n\t0x7a0: 0x75, 0x7a1: 0x76, 0x7a2: 0x77, 0x7a3: 0x78, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x7b, 0x7a7: 0x7c,\n\t0x7a8: 0x7d, 0x7a9: 0xfd, 0x7aa: 0xfd, 0x7ab: 0xfd, 0x7ac: 0xfd, 0x7ad: 0xfd, 0x7ae: 0xfd, 0x7af: 0xfd,\n\t0x7b0: 0xfd, 0x7b1: 0xfd, 0x7b2: 0xfd, 0x7b3: 0xfd, 0x7b4: 0xfd, 0x7b5: 0xfd, 0x7b6: 0xfd, 0x7b7: 0xfd,\n\t0x7b8: 0xfd, 0x7b9: 0xfd, 0x7ba: 0xfd, 0x7bb: 0xfd, 0x7bc: 0xfd, 0x7bd: 0xfd, 0x7be: 0xfd, 0x7bf: 0xfd,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0xa0, 0x7c1: 0xa0, 0x7c2: 0xa0, 0x7c3: 0xa0, 0x7c4: 0xa0, 0x7c5: 0xa0, 0x7c6: 0xa0, 0x7c7: 0xa0,\n\t0x7c8: 0xa0, 0x7c9: 0xa0, 0x7ca: 0xa0, 0x7cb: 0xa0, 0x7cc: 0xa0, 0x7cd: 0x19d, 0x7ce: 0xfd, 0x7cf: 0xfd,\n\t0x7d0: 0xfd, 0x7d1: 0xfd, 0x7d2: 0xfd, 0x7d3: 0xfd, 0x7d4: 0xfd, 0x7d5: 0xfd, 0x7d6: 0xfd, 0x7d7: 0xfd,\n\t0x7d8: 0xfd, 0x7d9: 0xfd, 0x7da: 0xfd, 0x7db: 0xfd, 0x7dc: 0xfd, 0x7dd: 0xfd, 0x7de: 0xfd, 0x7df: 0xfd,\n\t0x7e0: 0xfd, 0x7e1: 0xfd, 0x7e2: 0xfd, 0x7e3: 0xfd, 0x7e4: 0xfd, 0x7e5: 0xfd, 0x7e6: 0xfd, 0x7e7: 0xfd,\n\t0x7e8: 0xfd, 0x7e9: 0xfd, 0x7ea: 0xfd, 0x7eb: 0xfd, 0x7ec: 0xfd, 0x7ed: 0xfd, 0x7ee: 0xfd, 0x7ef: 0xfd,\n\t0x7f0: 0xfd, 0x7f1: 0xfd, 0x7f2: 0xfd, 0x7f3: 0xfd, 0x7f4: 0xfd, 0x7f5: 0xfd, 0x7f6: 0xfd, 0x7f7: 0xfd,\n\t0x7f8: 0xfd, 0x7f9: 0xfd, 0x7fa: 0xfd, 0x7fb: 0xfd, 0x7fc: 0xfd, 0x7fd: 0xfd, 0x7fe: 0xfd, 0x7ff: 0xfd,\n\t// Block 0x20, offset 0x800\n\t0x810: 0x0d, 0x811: 0x0e, 0x812: 0x0f, 0x813: 0x10, 0x814: 0x11, 0x815: 0x0b, 0x816: 0x12, 0x817: 0x07,\n\t0x818: 0x13, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x14, 0x81c: 0x0b, 0x81d: 0x15, 0x81e: 0x16, 0x81f: 0x17,\n\t0x820: 0x07, 0x821: 0x07, 0x822: 0x07, 0x823: 0x07, 0x824: 0x07, 0x825: 0x07, 0x826: 0x07, 0x827: 0x07,\n\t0x828: 0x07, 0x829: 0x07, 0x82a: 0x18, 0x82b: 0x19, 0x82c: 0x1a, 0x82d: 0x07, 0x82e: 0x1b, 0x82f: 0x1c,\n\t0x830: 0x07, 0x831: 0x1d, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b,\n\t0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0b, 0x841: 0x0b, 0x842: 0x0b, 0x843: 0x0b, 0x844: 0x0b, 0x845: 0x0b, 0x846: 0x0b, 0x847: 0x0b,\n\t0x848: 0x0b, 0x849: 0x0b, 0x84a: 0x0b, 0x84b: 0x0b, 0x84c: 0x0b, 0x84d: 0x0b, 0x84e: 0x0b, 0x84f: 0x0b,\n\t0x850: 0x0b, 0x851: 0x0b, 0x852: 0x0b, 0x853: 0x0b, 0x854: 0x0b, 0x855: 0x0b, 0x856: 0x0b, 0x857: 0x0b,\n\t0x858: 0x0b, 0x859: 0x0b, 0x85a: 0x0b, 0x85b: 0x0b, 0x85c: 0x0b, 0x85d: 0x0b, 0x85e: 0x0b, 0x85f: 0x0b,\n\t0x860: 0x0b, 0x861: 0x0b, 0x862: 0x0b, 0x863: 0x0b, 0x864: 0x0b, 0x865: 0x0b, 0x866: 0x0b, 0x867: 0x0b,\n\t0x868: 0x0b, 0x869: 0x0b, 0x86a: 0x0b, 0x86b: 0x0b, 0x86c: 0x0b, 0x86d: 0x0b, 0x86e: 0x0b, 0x86f: 0x0b,\n\t0x870: 0x0b, 0x871: 0x0b, 0x872: 0x0b, 0x873: 0x0b, 0x874: 0x0b, 0x875: 0x0b, 0x876: 0x0b, 0x877: 0x0b,\n\t0x878: 0x0b, 0x879: 0x0b, 0x87a: 0x0b, 0x87b: 0x0b, 0x87c: 0x0b, 0x87d: 0x0b, 0x87e: 0x0b, 0x87f: 0x0b,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x19e, 0x881: 0x19f, 0x882: 0xfd, 0x883: 0xfd, 0x884: 0x1a0, 0x885: 0x1a0, 0x886: 0x1a0, 0x887: 0x1a1,\n\t0x888: 0xfd, 0x889: 0xfd, 0x88a: 0xfd, 0x88b: 0xfd, 0x88c: 0xfd, 0x88d: 0xfd, 0x88e: 0xfd, 0x88f: 0xfd,\n\t0x890: 0xfd, 0x891: 0xfd, 0x892: 0xfd, 0x893: 0xfd, 0x894: 0xfd, 0x895: 0xfd, 0x896: 0xfd, 0x897: 0xfd,\n\t0x898: 0xfd, 0x899: 0xfd, 0x89a: 0xfd, 0x89b: 0xfd, 0x89c: 0xfd, 0x89d: 0xfd, 0x89e: 0xfd, 0x89f: 0xfd,\n\t0x8a0: 0xfd, 0x8a1: 0xfd, 0x8a2: 0xfd, 0x8a3: 0xfd, 0x8a4: 0xfd, 0x8a5: 0xfd, 0x8a6: 0xfd, 0x8a7: 0xfd,\n\t0x8a8: 0xfd, 0x8a9: 0xfd, 0x8aa: 0xfd, 0x8ab: 0xfd, 0x8ac: 0xfd, 0x8ad: 0xfd, 0x8ae: 0xfd, 0x8af: 0xfd,\n\t0x8b0: 0xfd, 0x8b1: 0xfd, 0x8b2: 0xfd, 0x8b3: 0xfd, 0x8b4: 0xfd, 0x8b5: 0xfd, 0x8b6: 0xfd, 0x8b7: 0xfd,\n\t0x8b8: 0xfd, 0x8b9: 0xfd, 0x8ba: 0xfd, 0x8bb: 0xfd, 0x8bc: 0xfd, 0x8bd: 0xfd, 0x8be: 0xfd, 0x8bf: 0xfd,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b,\n\t0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b,\n\t0x8d0: 0x0b, 0x8d1: 0x0b, 0x8d2: 0x0b, 0x8d3: 0x0b, 0x8d4: 0x0b, 0x8d5: 0x0b, 0x8d6: 0x0b, 0x8d7: 0x0b,\n\t0x8d8: 0x0b, 0x8d9: 0x0b, 0x8da: 0x0b, 0x8db: 0x0b, 0x8dc: 0x0b, 0x8dd: 0x0b, 0x8de: 0x0b, 0x8df: 0x0b,\n\t0x8e0: 0x20, 0x8e1: 0x0b, 0x8e2: 0x0b, 0x8e3: 0x0b, 0x8e4: 0x0b, 0x8e5: 0x0b, 0x8e6: 0x0b, 0x8e7: 0x0b,\n\t0x8e8: 0x0b, 0x8e9: 0x0b, 0x8ea: 0x0b, 0x8eb: 0x0b, 0x8ec: 0x0b, 0x8ed: 0x0b, 0x8ee: 0x0b, 0x8ef: 0x0b,\n\t0x8f0: 0x0b, 0x8f1: 0x0b, 0x8f2: 0x0b, 0x8f3: 0x0b, 0x8f4: 0x0b, 0x8f5: 0x0b, 0x8f6: 0x0b, 0x8f7: 0x0b,\n\t0x8f8: 0x0b, 0x8f9: 0x0b, 0x8fa: 0x0b, 0x8fb: 0x0b, 0x8fc: 0x0b, 0x8fd: 0x0b, 0x8fe: 0x0b, 0x8ff: 0x0b,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0b, 0x901: 0x0b, 0x902: 0x0b, 0x903: 0x0b, 0x904: 0x0b, 0x905: 0x0b, 0x906: 0x0b, 0x907: 0x0b,\n\t0x908: 0x0b, 0x909: 0x0b, 0x90a: 0x0b, 0x90b: 0x0b, 0x90c: 0x0b, 0x90d: 0x0b, 0x90e: 0x0b, 0x90f: 0x0b,\n}\n\n// idnaSparseOffset: 292 entries, 584 bytes\nvar idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x85, 0x8b, 0x94, 0xa4, 0xb2, 0xbd, 0xca, 0xdb, 0xe5, 0xec, 0xf9, 0x10a, 0x111, 0x11c, 0x12b, 0x139, 0x143, 0x145, 0x14a, 0x14d, 0x150, 0x152, 0x15e, 0x169, 0x171, 0x177, 0x17d, 0x182, 0x187, 0x18a, 0x18e, 0x194, 0x199, 0x1a5, 0x1af, 0x1b5, 0x1c6, 0x1d0, 0x1d3, 0x1db, 0x1de, 0x1eb, 0x1f3, 0x1f7, 0x1fe, 0x206, 0x216, 0x222, 0x225, 0x22f, 0x23b, 0x247, 0x253, 0x25b, 0x260, 0x26d, 0x27e, 0x282, 0x28d, 0x291, 0x29a, 0x2a2, 0x2a8, 0x2ad, 0x2b0, 0x2b4, 0x2ba, 0x2be, 0x2c2, 0x2c6, 0x2cc, 0x2d4, 0x2db, 0x2e6, 0x2f0, 0x2f4, 0x2f7, 0x2fd, 0x301, 0x303, 0x306, 0x308, 0x30b, 0x315, 0x318, 0x327, 0x32b, 0x32f, 0x331, 0x33a, 0x33d, 0x341, 0x346, 0x34b, 0x351, 0x362, 0x372, 0x378, 0x37c, 0x38b, 0x390, 0x398, 0x3a2, 0x3ad, 0x3b5, 0x3c6, 0x3cf, 0x3df, 0x3ec, 0x3f8, 0x3fd, 0x40a, 0x40e, 0x413, 0x415, 0x417, 0x41b, 0x41d, 0x421, 0x42a, 0x430, 0x434, 0x444, 0x44e, 0x453, 0x456, 0x45c, 0x463, 0x468, 0x46c, 0x472, 0x477, 0x480, 0x485, 0x48b, 0x492, 0x499, 0x4a0, 0x4a4, 0x4a9, 0x4ac, 0x4b1, 0x4bd, 0x4c3, 0x4c8, 0x4cf, 0x4d7, 0x4dc, 0x4e0, 0x4f0, 0x4f7, 0x4fb, 0x4ff, 0x506, 0x508, 0x50b, 0x50e, 0x512, 0x51b, 0x51f, 0x527, 0x52f, 0x537, 0x543, 0x54f, 0x555, 0x55e, 0x56a, 0x571, 0x57a, 0x585, 0x58c, 0x59b, 0x5a8, 0x5b5, 0x5be, 0x5c2, 0x5d1, 0x5d9, 0x5e4, 0x5ed, 0x5f3, 0x5fb, 0x604, 0x60f, 0x612, 0x61e, 0x627, 0x62a, 0x62f, 0x638, 0x63d, 0x64a, 0x655, 0x65e, 0x668, 0x66b, 0x675, 0x67e, 0x68a, 0x697, 0x6a4, 0x6b2, 0x6b9, 0x6bd, 0x6c1, 0x6c4, 0x6c9, 0x6cc, 0x6d1, 0x6d4, 0x6db, 0x6e2, 0x6e6, 0x6f1, 0x6f4, 0x6f7, 0x6fa, 0x700, 0x706, 0x70f, 0x712, 0x715, 0x718, 0x71b, 0x722, 0x725, 0x72a, 0x734, 0x737, 0x73b, 0x74a, 0x756, 0x75a, 0x75f, 0x763, 0x768, 0x76c, 0x771, 0x77a, 0x785, 0x78b, 0x791, 0x797, 0x79d, 0x7a6, 0x7a9, 0x7ac, 0x7b0, 0x7b4, 0x7b8, 0x7be, 0x7c4, 0x7c9, 0x7cc, 0x7dc, 0x7e3, 0x7e6, 0x7eb, 0x7ef, 0x7f5, 0x7fc, 0x800, 0x804, 0x80d, 0x814, 0x819, 0x81d, 0x82b, 0x82e, 0x831, 0x835, 0x839, 0x83c, 0x83f, 0x844, 0x846, 0x848}\n\n// idnaSparseValues: 2123 entries, 8492 bytes\nvar idnaSparseValues = [2123]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe105, lo: 0x80, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0x97},\n\t{value: 0xe105, lo: 0x98, hi: 0x9e},\n\t{value: 0x001f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbf},\n\t// Block 0x1, offset 0x8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0xe01d, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0335, lo: 0x83, hi: 0x83},\n\t{value: 0x034d, lo: 0x84, hi: 0x84},\n\t{value: 0x0365, lo: 0x85, hi: 0x85},\n\t{value: 0xe00d, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0xe00d, lo: 0x88, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x89},\n\t{value: 0xe00d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe00d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0x8d},\n\t{value: 0xe00d, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0xbf},\n\t// Block 0x2, offset 0x19\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x00a9, lo: 0xb0, hi: 0xb0},\n\t{value: 0x037d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x00b1, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00b9, lo: 0xb3, hi: 0xb3},\n\t{value: 0x034d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0395, lo: 0xb5, hi: 0xb5},\n\t{value: 0xe1bd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x00c1, lo: 0xb7, hi: 0xb7},\n\t{value: 0x00c9, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbf},\n\t// Block 0x3, offset 0x25\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x3308, lo: 0x80, hi: 0xbf},\n\t// Block 0x4, offset 0x27\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x03f5, lo: 0x80, hi: 0x8f},\n\t{value: 0xe105, lo: 0x90, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5, offset 0x2c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x0545, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x0008, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x6, offset 0x33\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0131, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0018, lo: 0x89, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7, offset 0x3e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0818, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x82},\n\t{value: 0x0818, lo: 0x83, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xae},\n\t{value: 0x0808, lo: 0xaf, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x8, offset 0x4a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0c08, lo: 0x88, hi: 0x99},\n\t{value: 0x0a08, lo: 0x9a, hi: 0xbf},\n\t// Block 0x9, offset 0x4e\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0c08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0a08, lo: 0x8e, hi: 0x98},\n\t{value: 0x0c08, lo: 0x99, hi: 0x9b},\n\t{value: 0x0a08, lo: 0x9c, hi: 0xaa},\n\t{value: 0x0c08, lo: 0xab, hi: 0xac},\n\t{value: 0x0a08, lo: 0xad, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0a08, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0c08, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xa, offset 0x5d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xb, offset 0x62\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0808, lo: 0x80, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbf},\n\t// Block 0xc, offset 0x6c\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x99},\n\t{value: 0x0808, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa3},\n\t{value: 0x0808, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa7},\n\t{value: 0x0808, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0818, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd, offset 0x78\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0a08, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0c08, lo: 0xaa, hi: 0xac},\n\t{value: 0x0808, lo: 0xad, hi: 0xad},\n\t{value: 0x0c08, lo: 0xae, hi: 0xae},\n\t{value: 0x0a08, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0a08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0a08, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xe, offset 0x85\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0xa1},\n\t{value: 0x0840, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xbf},\n\t// Block 0xf, offset 0x8b\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x10, offset 0x94\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x85},\n\t{value: 0x3008, lo: 0x86, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8c},\n\t{value: 0x3b08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x11, offset 0xa4\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x12, offset 0xb2\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xba},\n\t{value: 0x3b08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x13, offset 0xbd\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x14, offset 0xca\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x89},\n\t{value: 0x3b08, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x3008, lo: 0x98, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x15, offset 0xdb\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x01f1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb9},\n\t{value: 0x3b08, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x16, offset 0xe5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0xbf},\n\t// Block 0x17, offset 0xec\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0201, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0209, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0008, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x18, offset 0xf9\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe03d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x19, offset 0x10a\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0x1a, offset 0x111\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1b, offset 0x11c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3008, lo: 0xa2, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbf},\n\t// Block 0x1c, offset 0x12b\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x8c},\n\t{value: 0x3308, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x3008, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x1d, offset 0x139\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x86},\n\t{value: 0x055d, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8c},\n\t{value: 0x055d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe105, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x1e, offset 0x143\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0018, lo: 0x80, hi: 0xbf},\n\t// Block 0x1f, offset 0x145\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa0},\n\t{value: 0x2018, lo: 0xa1, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x20, offset 0x14a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa7},\n\t{value: 0x2018, lo: 0xa8, hi: 0xbf},\n\t// Block 0x21, offset 0x14d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2018, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0xbf},\n\t// Block 0x22, offset 0x150\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0008, lo: 0x80, hi: 0xbf},\n\t// Block 0x23, offset 0x152\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x24, offset 0x15e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x25, offset 0x169\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x26, offset 0x171\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x27, offset 0x177\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x28, offset 0x17d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x29, offset 0x182\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x2a, offset 0x187\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x2b, offset 0x18a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xbf},\n\t// Block 0x2c, offset 0x18e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2d, offset 0x194\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x2e, offset 0x199\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x3b08, lo: 0x94, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x2f, offset 0x1a5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x30, offset 0x1af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xb3},\n\t{value: 0x3340, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x31, offset 0x1b5\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x3008, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x91},\n\t{value: 0x3b08, lo: 0x92, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0x96},\n\t{value: 0x0008, lo: 0x97, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x32, offset 0x1c6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x86},\n\t{value: 0x0218, lo: 0x87, hi: 0x87},\n\t{value: 0x0018, lo: 0x88, hi: 0x8a},\n\t{value: 0x33c0, lo: 0x8b, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0208, lo: 0xa0, hi: 0xbf},\n\t// Block 0x33, offset 0x1d0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0208, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x34, offset 0x1d3\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0208, lo: 0x87, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0208, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x35, offset 0x1db\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x36, offset 0x1de\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x37, offset 0x1eb\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x38, offset 0x1f3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x39, offset 0x1f7\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0028, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xbf},\n\t// Block 0x3a, offset 0x1fe\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x3308, lo: 0x97, hi: 0x98},\n\t{value: 0x3008, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x3b, offset 0x206\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x94},\n\t{value: 0x3008, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xac},\n\t{value: 0x3008, lo: 0xad, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3c, offset 0x216\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbd},\n\t{value: 0x3318, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x222\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0xbf},\n\t// Block 0x3e, offset 0x225\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3008, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x3f, offset 0x22f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x3808, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x40, offset 0x23b\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3808, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xbf},\n\t// Block 0x41, offset 0x247\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3008, lo: 0xaa, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3808, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x42, offset 0x253\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x43, offset 0x25b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x44, offset 0x260\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x02a9, lo: 0x80, hi: 0x80},\n\t{value: 0x02b1, lo: 0x81, hi: 0x81},\n\t{value: 0x02b9, lo: 0x82, hi: 0x82},\n\t{value: 0x02c1, lo: 0x83, hi: 0x83},\n\t{value: 0x02c9, lo: 0x84, hi: 0x85},\n\t{value: 0x02d1, lo: 0x86, hi: 0x86},\n\t{value: 0x02d9, lo: 0x87, hi: 0x87},\n\t{value: 0x057d, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x059d, lo: 0x90, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x059d, lo: 0xbd, hi: 0xbf},\n\t// Block 0x45, offset 0x26d\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x92},\n\t{value: 0x0018, lo: 0x93, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0008, lo: 0xa9, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x46, offset 0x27e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0x47, offset 0x282\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x87},\n\t{value: 0xe045, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0xe045, lo: 0x98, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0xe045, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbf},\n\t// Block 0x48, offset 0x28d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x3318, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x49, offset 0x291\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x0851, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x4a, offset 0x29a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0859, lo: 0xac, hi: 0xac},\n\t{value: 0x0861, lo: 0xad, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xae},\n\t{value: 0x0869, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0871, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x4b, offset 0x2a2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x9f},\n\t{value: 0x0080, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xad},\n\t{value: 0x0080, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x4c, offset 0x2a8\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa8},\n\t{value: 0x09dd, lo: 0xa9, hi: 0xa9},\n\t{value: 0x09fd, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xbf},\n\t// Block 0x4d, offset 0x2ad\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0x4e, offset 0x2b0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0929, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x4f, offset 0x2b4\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0e7e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0932, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0e9e, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x50, offset 0x2ba\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x9b},\n\t{value: 0x0939, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0xbf},\n\t// Block 0x51, offset 0x2be\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x52, offset 0x2c2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0xbf},\n\t// Block 0x53, offset 0x2c6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x03f5, lo: 0x90, hi: 0x9f},\n\t{value: 0x0ebd, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x54, offset 0x2cc\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x55, offset 0x2d4\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xae},\n\t{value: 0xe075, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x56, offset 0x2db\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x57, offset 0x2e6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xbf},\n\t// Block 0x58, offset 0x2f0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x59, offset 0x2f4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0xbf},\n\t// Block 0x5a, offset 0x2f7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9e},\n\t{value: 0x0ef5, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x5b, offset 0x2fd\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb2},\n\t{value: 0x0f15, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x5c, offset 0x301\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x0f35, lo: 0x80, hi: 0xbf},\n\t// Block 0x5d, offset 0x303\n\t{value: 0x0020, lo: 0x02},\n\t{value: 0x1735, lo: 0x80, hi: 0x8f},\n\t{value: 0x1915, lo: 0x90, hi: 0xbf},\n\t// Block 0x5e, offset 0x306\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x1f15, lo: 0x80, hi: 0xbf},\n\t// Block 0x5f, offset 0x308\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x60, offset 0x30b\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9a},\n\t{value: 0x096a, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0972, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0979, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x61, offset 0x315\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x0981, lo: 0xbf, hi: 0xbf},\n\t// Block 0x62, offset 0x318\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0040, lo: 0x80, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb0},\n\t{value: 0x2a35, lo: 0xb1, hi: 0xb1},\n\t{value: 0x2a55, lo: 0xb2, hi: 0xb2},\n\t{value: 0x2a75, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2a95, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2a75, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2ab5, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2ad5, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2af5, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2b15, lo: 0xba, hi: 0xbb},\n\t{value: 0x2b35, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2b15, lo: 0xbe, hi: 0xbf},\n\t// Block 0x63, offset 0x327\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x64, offset 0x32b\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x098a, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0a82, lo: 0xa0, hi: 0xbf},\n\t// Block 0x65, offset 0x32f\n\t{value: 0x0008, lo: 0x01},\n\t{value: 0x0d19, lo: 0x80, hi: 0xbf},\n\t// Block 0x66, offset 0x331\n\t{value: 0x0008, lo: 0x08},\n\t{value: 0x0f19, lo: 0x80, hi: 0xb0},\n\t{value: 0x4045, lo: 0xb1, hi: 0xb1},\n\t{value: 0x10a1, lo: 0xb2, hi: 0xb3},\n\t{value: 0x4065, lo: 0xb4, hi: 0xb4},\n\t{value: 0x10b1, lo: 0xb5, hi: 0xb7},\n\t{value: 0x4085, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4085, lo: 0xb9, hi: 0xb9},\n\t{value: 0x10c9, lo: 0xba, hi: 0xbf},\n\t// Block 0x67, offset 0x33a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x68, offset 0x33d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x69, offset 0x341\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x6a, offset 0x346\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x6b, offset 0x34b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0018, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6c, offset 0x351\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0040, lo: 0x80, hi: 0x81},\n\t{value: 0xe00d, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x83},\n\t{value: 0x03f5, lo: 0x84, hi: 0x84},\n\t{value: 0x0479, lo: 0x85, hi: 0x85},\n\t{value: 0x447d, lo: 0x86, hi: 0x86},\n\t{value: 0xe07d, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0xe01d, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0xb4},\n\t{value: 0xe01d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0741, lo: 0xb8, hi: 0xb8},\n\t{value: 0x13f1, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xbf},\n\t// Block 0x6d, offset 0x362\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x3308, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0008, lo: 0x8c, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xab},\n\t{value: 0x3b08, lo: 0xac, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x6e, offset 0x372\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0208, lo: 0x80, hi: 0xb1},\n\t{value: 0x0108, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6f, offset 0x378\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xbf},\n\t// Block 0x70, offset 0x37c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x71, offset 0x38b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x72, offset 0x390\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x91},\n\t{value: 0x3008, lo: 0x92, hi: 0x92},\n\t{value: 0x3808, lo: 0x93, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x73, offset 0x398\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb9},\n\t{value: 0x3008, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x74, offset 0x3a2\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x75, offset 0x3ad\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x76, offset 0x3b5\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3008, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x77, offset 0x3c6\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x78, offset 0x3cf\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x9a},\n\t{value: 0x0008, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3b08, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x79, offset 0x3df\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x90},\n\t{value: 0x0008, lo: 0x91, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7a, offset 0x3ec\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x449d, lo: 0x9c, hi: 0x9c},\n\t{value: 0x44b5, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0941, lo: 0x9e, hi: 0x9e},\n\t{value: 0xe06d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa8},\n\t{value: 0x13f9, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x44cd, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7b, offset 0x3f8\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x44ed, lo: 0x80, hi: 0x8f},\n\t{value: 0x450d, lo: 0x90, hi: 0x9f},\n\t{value: 0x452d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x450d, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7c, offset 0x3fd\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3b08, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x7d, offset 0x40a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7e, offset 0x40e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x7f, offset 0x413\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0040, lo: 0x80, hi: 0xbf},\n\t// Block 0x80, offset 0x415\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x454d, lo: 0x80, hi: 0xbf},\n\t// Block 0x81, offset 0x417\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x4d4d, lo: 0x80, hi: 0x94},\n\t{value: 0x4b0d, lo: 0x95, hi: 0x95},\n\t{value: 0x4fed, lo: 0x96, hi: 0xbf},\n\t// Block 0x82, offset 0x41b\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x552d, lo: 0x80, hi: 0xbf},\n\t// Block 0x83, offset 0x41d\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x5d2d, lo: 0x80, hi: 0x84},\n\t{value: 0x568d, lo: 0x85, hi: 0x85},\n\t{value: 0x5dcd, lo: 0x86, hi: 0xbf},\n\t// Block 0x84, offset 0x421\n\t{value: 0x0020, lo: 0x08},\n\t{value: 0x6b8d, lo: 0x80, hi: 0x8f},\n\t{value: 0x6d4d, lo: 0x90, hi: 0x90},\n\t{value: 0x6d8d, lo: 0x91, hi: 0xab},\n\t{value: 0x1401, lo: 0xac, hi: 0xac},\n\t{value: 0x70ed, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x710d, lo: 0xb0, hi: 0xbf},\n\t// Block 0x85, offset 0x42a\n\t{value: 0x0020, lo: 0x05},\n\t{value: 0x730d, lo: 0x80, hi: 0xad},\n\t{value: 0x656d, lo: 0xae, hi: 0xae},\n\t{value: 0x78cd, lo: 0xaf, hi: 0xb5},\n\t{value: 0x6f8d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x79ad, lo: 0xb7, hi: 0xbf},\n\t// Block 0x86, offset 0x430\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x1751, lo: 0x80, hi: 0x82},\n\t{value: 0x1741, lo: 0x83, hi: 0x83},\n\t{value: 0x1769, lo: 0x84, hi: 0xbf},\n\t// Block 0x87, offset 0x434\n\t{value: 0x0008, lo: 0x0f},\n\t{value: 0x1d81, lo: 0x80, hi: 0x83},\n\t{value: 0x1d99, lo: 0x84, hi: 0x85},\n\t{value: 0x1da1, lo: 0x86, hi: 0x87},\n\t{value: 0x1da9, lo: 0x88, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x1de9, lo: 0x92, hi: 0x97},\n\t{value: 0x1e11, lo: 0x98, hi: 0x9c},\n\t{value: 0x1e31, lo: 0x9d, hi: 0xb3},\n\t{value: 0x1d71, lo: 0xb4, hi: 0xb4},\n\t{value: 0x1d81, lo: 0xb5, hi: 0xb5},\n\t{value: 0x1ee9, lo: 0xb6, hi: 0xbb},\n\t{value: 0x1f09, lo: 0xbc, hi: 0xbc},\n\t{value: 0x1ef9, lo: 0xbd, hi: 0xbd},\n\t{value: 0x1f19, lo: 0xbe, hi: 0xbf},\n\t// Block 0x88, offset 0x444\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0008, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x89, offset 0x44e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x8a, offset 0x453\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8b, offset 0x456\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x8c, offset 0x45c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x8d, offset 0x463\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x8e, offset 0x468\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8f, offset 0x46c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x90, offset 0x472\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xbf},\n\t// Block 0x91, offset 0x477\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x92, offset 0x480\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x93, offset 0x485\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x94, offset 0x48b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x97},\n\t{value: 0x8b0d, lo: 0x98, hi: 0x9f},\n\t{value: 0x8b25, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xbf},\n\t// Block 0x95, offset 0x492\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x8b25, lo: 0xb0, hi: 0xb7},\n\t{value: 0x8b0d, lo: 0xb8, hi: 0xbf},\n\t// Block 0x96, offset 0x499\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x97, offset 0x4a0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x98, offset 0x4a4\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xae},\n\t{value: 0x0018, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x99, offset 0x4a9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9a, offset 0x4ac\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xbf},\n\t// Block 0x9b, offset 0x4b1\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0808, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0808, lo: 0x8a, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0808, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0808, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9c, offset 0x4bd\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0818, lo: 0x97, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0818, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9d, offset 0x4c3\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa6},\n\t{value: 0x0818, lo: 0xa7, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9e, offset 0x4c8\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x0818, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9f, offset 0x4cf\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0818, lo: 0x96, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0818, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa0, offset 0x4d7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbb},\n\t{value: 0x0818, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0808, lo: 0xbe, hi: 0xbf},\n\t// Block 0xa1, offset 0x4dc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0818, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x0818, lo: 0x92, hi: 0xbf},\n\t// Block 0xa2, offset 0x4e0\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x94},\n\t{value: 0x0808, lo: 0x95, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x98},\n\t{value: 0x0808, lo: 0x99, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa3, offset 0x4f0\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0818, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0818, lo: 0x90, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0818, lo: 0xbd, hi: 0xbf},\n\t// Block 0xa4, offset 0x4f7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xa5, offset 0x4fb\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xbf},\n\t// Block 0xa6, offset 0x4ff\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0818, lo: 0x98, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb7},\n\t{value: 0x0818, lo: 0xb8, hi: 0xbf},\n\t// Block 0xa7, offset 0x506\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0808, lo: 0x80, hi: 0xbf},\n\t// Block 0xa8, offset 0x508\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0808, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xa9, offset 0x50b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x03dd, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xaa, offset 0x50e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xbf},\n\t// Block 0xab, offset 0x512\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0908, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0xa1},\n\t{value: 0x0c08, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0a08, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3308, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xac, offset 0x51b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0818, lo: 0xa0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xad, offset 0x51f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xac},\n\t{value: 0x0818, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xae, offset 0x527\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0xa6},\n\t{value: 0x0808, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0a08, lo: 0xb4, hi: 0xbf},\n\t// Block 0xaf, offset 0x52f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0a08, lo: 0x80, hi: 0x84},\n\t{value: 0x0808, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x90},\n\t{value: 0x0a18, lo: 0x91, hi: 0x93},\n\t{value: 0x0c18, lo: 0x94, hi: 0x94},\n\t{value: 0x0818, lo: 0x95, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xb0, offset 0x537\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0c08, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0a08, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xba},\n\t{value: 0x0a08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0c08, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0a08, lo: 0xbe, hi: 0xbf},\n\t// Block 0xb1, offset 0x543\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0x81},\n\t{value: 0x0c08, lo: 0x82, hi: 0x83},\n\t{value: 0x0a08, lo: 0x84, hi: 0x84},\n\t{value: 0x0818, lo: 0x85, hi: 0x88},\n\t{value: 0x0c18, lo: 0x89, hi: 0x89},\n\t{value: 0x0a18, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0918, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb2, offset 0x54f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xb3, offset 0x555\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x91},\n\t{value: 0x0018, lo: 0x92, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb4, offset 0x55e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0xb5, offset 0x56a\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb6, offset 0x571\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb2},\n\t{value: 0x3b08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xbf},\n\t// Block 0xb7, offset 0x57a\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb8, offset 0x585\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb9, offset 0x58c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8d},\n\t{value: 0x3008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xba, offset 0x59b\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3808, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbb, offset 0x5a8\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xbc, offset 0x5b5\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x3308, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa9},\n\t{value: 0x3b08, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xbd, offset 0x5be\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xbe, offset 0x5c2\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xbf},\n\t// Block 0xbf, offset 0x5d1\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc0, offset 0x5d9\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x85},\n\t{value: 0x0018, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xc1, offset 0x5e4\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc2, offset 0x5ed\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9b},\n\t{value: 0x3308, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xc3, offset 0x5f3\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc4, offset 0x5fb\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xc5, offset 0x604\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb5},\n\t{value: 0x3808, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xc6, offset 0x60f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xc7, offset 0x612\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0xc8, offset 0x61e\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xc9, offset 0x627\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xbf},\n\t// Block 0xca, offset 0x62a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xcb, offset 0x62f\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xcc, offset 0x638\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xcd, offset 0x63d\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x99},\n\t{value: 0x3308, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3008, lo: 0x9c, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x0018, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xbf},\n\t// Block 0xce, offset 0x64a\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xcf, offset 0x655\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x3b08, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0xbf},\n\t// Block 0xd0, offset 0x65e\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x98},\n\t{value: 0x3b08, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xbf},\n\t// Block 0xd1, offset 0x668\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd2, offset 0x66b\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd3, offset 0x675\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xbf},\n\t// Block 0xd4, offset 0x67e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xa9},\n\t{value: 0x3308, lo: 0xaa, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xd5, offset 0x68a\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd6, offset 0x697\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd7, offset 0x6a4\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x3008, lo: 0x93, hi: 0x94},\n\t{value: 0x3308, lo: 0x95, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x96},\n\t{value: 0x3b08, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd8, offset 0x6b2\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd9, offset 0x6b9\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0xda, offset 0x6bd\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xdb, offset 0x6c1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xdc, offset 0x6c4\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xdd, offset 0x6c9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xde, offset 0x6cc\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0340, lo: 0xb0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xdf, offset 0x6d1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xbf},\n\t// Block 0xe0, offset 0x6d4\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe1, offset 0x6db\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe2, offset 0x6e2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0xe3, offset 0x6e6\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0xe4, offset 0x6f1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xe5, offset 0x6f4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0xe105, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0xe6, offset 0x6f7\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0xe7, offset 0x6fa\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0xbf},\n\t// Block 0xe8, offset 0x700\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xe9, offset 0x706\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x0018, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3308, lo: 0xa4, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xea, offset 0x70f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0xeb, offset 0x712\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0xec, offset 0x715\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xed, offset 0x718\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xee, offset 0x71b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0xa3},\n\t{value: 0x0008, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xef, offset 0x722\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xf0, offset 0x725\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0xf1, offset 0x72a\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x03c0, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xf2, offset 0x734\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xf3, offset 0x737\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xbf},\n\t// Block 0xf4, offset 0x73b\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0x2211, lo: 0x9e, hi: 0x9e},\n\t{value: 0x2219, lo: 0x9f, hi: 0x9f},\n\t{value: 0x2221, lo: 0xa0, hi: 0xa0},\n\t{value: 0x2229, lo: 0xa1, hi: 0xa1},\n\t{value: 0x2231, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2239, lo: 0xa3, hi: 0xa3},\n\t{value: 0x2241, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3018, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3318, lo: 0xa7, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xac},\n\t{value: 0x3018, lo: 0xad, hi: 0xb2},\n\t{value: 0x0340, lo: 0xb3, hi: 0xba},\n\t{value: 0x3318, lo: 0xbb, hi: 0xbf},\n\t// Block 0xf5, offset 0x74a\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3318, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x84},\n\t{value: 0x3318, lo: 0x85, hi: 0x8b},\n\t{value: 0x0018, lo: 0x8c, hi: 0xa9},\n\t{value: 0x3318, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xba},\n\t{value: 0x2249, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2251, lo: 0xbc, hi: 0xbc},\n\t{value: 0x2259, lo: 0xbd, hi: 0xbd},\n\t{value: 0x2261, lo: 0xbe, hi: 0xbe},\n\t{value: 0x2269, lo: 0xbf, hi: 0xbf},\n\t// Block 0xf6, offset 0x756\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2271, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xbf},\n\t// Block 0xf7, offset 0x75a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3318, lo: 0x82, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0xbf},\n\t// Block 0xf8, offset 0x75f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0xf9, offset 0x763\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xfa, offset 0x768\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0xfb, offset 0x76c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0xfc, offset 0x771\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3308, lo: 0xa1, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xfd, offset 0x77a\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0xfe, offset 0x785\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xff, offset 0x78b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0x100, offset 0x791\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x101, offset 0x797\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x86},\n\t{value: 0x0818, lo: 0x87, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0x102, offset 0x79d\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0a08, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x8a},\n\t{value: 0x0b08, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x103, offset 0x7a6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xb0},\n\t{value: 0x0818, lo: 0xb1, hi: 0xbf},\n\t// Block 0x104, offset 0x7a9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0818, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x105, offset 0x7ac\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0818, lo: 0x81, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x106, offset 0x7b0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0x107, offset 0x7b4\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x108, offset 0x7b8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x109, offset 0x7be\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x10a, offset 0x7c4\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0x2491, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0x10b, offset 0x7c9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xbf},\n\t// Block 0x10c, offset 0x7cc\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x2611, lo: 0x80, hi: 0x80},\n\t{value: 0x2619, lo: 0x81, hi: 0x81},\n\t{value: 0x2621, lo: 0x82, hi: 0x82},\n\t{value: 0x2629, lo: 0x83, hi: 0x83},\n\t{value: 0x2631, lo: 0x84, hi: 0x84},\n\t{value: 0x2639, lo: 0x85, hi: 0x85},\n\t{value: 0x2641, lo: 0x86, hi: 0x86},\n\t{value: 0x2649, lo: 0x87, hi: 0x87},\n\t{value: 0x2651, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x2659, lo: 0x90, hi: 0x90},\n\t{value: 0x2661, lo: 0x91, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xbf},\n\t// Block 0x10d, offset 0x7dc\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x10e, offset 0x7e3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x10f, offset 0x7e6\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x110, offset 0x7eb\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x111, offset 0x7ef\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x112, offset 0x7f5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0x113, offset 0x7fc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0x114, offset 0x800\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x115, offset 0x804\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x116, offset 0x80d\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x117, offset 0x814\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0x118, offset 0x819\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0xbf},\n\t// Block 0x119, offset 0x81d\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0018, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0xaf},\n\t{value: 0x06e1, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0049, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0031, lo: 0xb3, hi: 0xb3},\n\t{value: 0x06e9, lo: 0xb4, hi: 0xb4},\n\t{value: 0x06f1, lo: 0xb5, hi: 0xb5},\n\t{value: 0x06f9, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0701, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0709, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0711, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x11a, offset 0x82b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x11b, offset 0x82e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x11c, offset 0x831\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x11d, offset 0x835\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x11e, offset 0x839\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x11f, offset 0x83c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0xbf},\n\t// Block 0x120, offset 0x83f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0340, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x9f},\n\t{value: 0x0340, lo: 0xa0, hi: 0xbf},\n\t// Block 0x121, offset 0x844\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0340, lo: 0x80, hi: 0xbf},\n\t// Block 0x122, offset 0x846\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x33c0, lo: 0x80, hi: 0xbf},\n\t// Block 0x123, offset 0x848\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x33c0, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n}\n\n// Total table size 44953 bytes (43KiB); checksum: D51909DD\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/tables15.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.21\n\npackage idna\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"15.0.0\"\n\nvar mappings string = \"\" + // Size: 6704 bytes\n\t\"  ̈a ̄23 ́ ̧1o1⁄41⁄23⁄4i̇l·ʼnsdžⱥⱦhjrwy ̆ ̇ ̊ ̨ ̃ ̋lẍ́ ι; ̈́եւاٴوٴۇٴيٴक\" +\n\t\"़ख़ग़ज़ड़ढ़फ़य़ড়ঢ়য়ਲ਼ਸ਼ਖ਼ਗ਼ਜ਼ਫ਼ଡ଼ଢ଼ําໍາຫນຫມགྷཌྷདྷབྷཛྷཀྵཱཱིུྲྀྲཱྀླྀླཱ\" +\n\t\"ཱྀྀྒྷྜྷྡྷྦྷྫྷྐྵвдостъѣæbdeǝgikmnȣptuɐɑəɛɜŋɔɯvβγδφχρнɒcɕðfɟɡɥɨɩɪʝɭʟɱɰɲɳ\" +\n\t\"ɴɵɸʂʃƫʉʊʋʌzʐʑʒθssάέήίόύώἀιἁιἂιἃιἄιἅιἆιἇιἠιἡιἢιἣιἤιἥιἦιἧιὠιὡιὢιὣιὤιὥιὦιὧ\" +\n\t\"ιὰιαιάιᾶιι ̈͂ὴιηιήιῆι ̓̀ ̓́ ̓͂ΐ ̔̀ ̔́ ̔͂ΰ ̈̀`ὼιωιώιῶι′′′′′‵‵‵‵‵!!???!!?\" +\n\t\"′′′′0456789+=()rsħnoqsmtmωåאבגדπ1⁄71⁄91⁄101⁄32⁄31⁄52⁄53⁄54⁄51⁄65⁄61⁄83\" +\n\t\"⁄85⁄87⁄81⁄iiivviviiiixxi0⁄3∫∫∫∫∫∮∮∮∮∮1011121314151617181920(10)(11)(12\" +\n\t\")(13)(14)(15)(16)(17)(18)(19)(20)∫∫∫∫==⫝̸ɫɽȿɀ. ゙ ゚よりコト(ᄀ)(ᄂ)(ᄃ)(ᄅ)(ᄆ)(ᄇ)\" +\n\t\"(ᄉ)(ᄋ)(ᄌ)(ᄎ)(ᄏ)(ᄐ)(ᄑ)(ᄒ)(가)(나)(다)(라)(마)(바)(사)(아)(자)(차)(카)(타)(파)(하)(주)(오전\" +\n\t\")(오후)(一)(二)(三)(四)(五)(六)(七)(八)(九)(十)(月)(火)(水)(木)(金)(土)(日)(株)(有)(社)(名)(特)(\" +\n\t\"財)(祝)(労)(代)(呼)(学)(監)(企)(資)(協)(祭)(休)(自)(至)21222324252627282930313233343\" +\n\t\"5참고주의3637383940414243444546474849501月2月3月4月5月6月7月8月9月10月11月12月hgev令和アパート\" +\n\t\"アルファアンペアアールイニングインチウォンエスクードエーカーオンスオームカイリカラットカロリーガロンガンマギガギニーキュリーギルダーキロキロ\" +\n\t\"グラムキロメートルキロワットグラムグラムトンクルゼイロクローネケースコルナコーポサイクルサンチームシリングセンチセントダースデシドルトンナノ\" +\n\t\"ノットハイツパーセントパーツバーレルピアストルピクルピコビルファラッドフィートブッシェルフランヘクタールペソペニヒヘルツペンスページベータポ\" +\n\t\"イントボルトホンポンドホールホーンマイクロマイルマッハマルクマンションミクロンミリミリバールメガメガトンメートルヤードヤールユアンリットルリ\" +\n\t\"ラルピールーブルレムレントゲンワット0点1点2点3点4点5点6点7点8点9点10点11点12点13点14点15点16点17点18点19点20\" +\n\t\"点21点22点23点24点daauovpcdmiu平成昭和大正明治株式会社panamakakbmbgbkcalpfnfmgkghzmldlk\" +\n\t\"lfmnmmmcmkmm2m3m∕sm∕s2rad∕srad∕s2psnsmspvnvmvkvpwnwmwkwbqcccdc∕kgdbgyhah\" +\n\t\"pinkkktlmlnlxphprsrsvwbv∕ma∕m1日2日3日4日5日6日7日8日9日10日11日12日13日14日15日16日17日1\" +\n\t\"8日19日20日21日22日23日24日25日26日27日28日29日30日31日ьɦɬʞʇœʍ𤋮𢡊𢡄𣏕𥉉𥳐𧻓fffiflstմնմեմիվնմ\" +\n\t\"խיִײַעהכלםרתשׁשׂשּׁשּׂאַאָאּבּגּדּהּוּזּטּיּךּכּלּמּנּסּףּפּצּקּרּשּתּו\" +\n\t\"ֹבֿכֿפֿאלٱٻپڀٺٿٹڤڦڄڃچڇڍڌڎڈژڑکگڳڱںڻۀہھےۓڭۇۆۈۋۅۉېىئائەئوئۇئۆئۈئېئىیئجئحئم\" +\n\t\"ئيبجبحبخبمبىبيتجتحتختمتىتيثجثمثىثيجحجمحجحمخجخحخمسجسحسخسمصحصمضجضحضخضمطحط\" +\n\t\"مظمعجعمغجغمفجفحفخفمفىفيقحقمقىقيكاكجكحكخكلكمكىكيلجلحلخلملىليمجمحمخمممىمي\" +\n\t\"نجنحنخنمنىنيهجهمهىهييجيحيخيميىييذٰرٰىٰ ٌّ ٍّ َّ ُّ ِّ ّٰئرئزئنبربزبنترت\" +\n\t\"زتنثرثزثنمانرنزننيريزينئخئهبهتهصخلهنههٰيهثهسهشمشهـَّـُّـِّطىطيعىعيغىغيس\" +\n\t\"ىسيشىشيحىحيجىجيخىخيصىصيضىضيشجشحشخشرسرصرضراًتجمتحجتحمتخمتمجتمحتمخجمححميح\" +\n\t\"مىسحجسجحسجىسمحسمجسممصححصممشحمشجيشمخشممضحىضخمطمحطممطميعجمعممعمىغممغميغمى\" +\n\t\"فخمقمحقمملحملحيلحىلججلخملمحمحجمحممحيمجحمجممخجمخممجخهمجهممنحمنحىنجمنجىنم\" +\n\t\"ينمىيممبخيتجيتجىتخيتخىتميتمىجميجحىجمىسخىصحيشحيضحيلجيلمييحييجييميمميقمين\" +\n\t\"حيعميكمينجحمخيلجمكممجحيحجيمجيفميبحيسخينجيصلےقلےاللهاكبرمحمدصلعمرسولعليه\" +\n\t\"وسلمصلىصلى الله عليه وسلمجل جلالهریال,:!?_{}[]#&*-<>\\\\$%@ـًـَـُـِـّـْءآ\" +\n\t\"أؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهويلآلألإلا\\x22'/^|~¢£¬¦¥ːˑʙɓʣꭦʥʤɖɗᶑɘɞʩɤɢ\" +\n\t\"ɠʛʜɧʄʪʫꞎɮʎøɶɷɺɾʀʨʦꭧʧʈⱱʏʡʢʘǀǁǂ𝅗𝅥𝅘𝅥𝅘𝅥𝅮𝅘𝅥𝅯𝅘𝅥𝅰𝅘𝅥𝅱𝅘𝅥𝅲𝆹𝅥𝆺𝅥𝆹𝅥𝅮𝆺𝅥𝅮𝆹𝅥𝅯𝆺𝅥𝅯ıȷαεζηκ\" +\n\t\"λμνξοστυψ∇∂ϝабгежзиклмпруфхцчшыэюꚉәіјөүӏґѕџҫꙑұٮڡٯ0,1,2,3,4,5,6,7,8,9,(a\" +\n\t\")(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)(w)(x)(y\" +\n\t\")(z)〔s〕wzhvsdppvwcmcmdmrdjほかココサ手字双デ二多解天交映無料前後再新初終生販声吹演投捕一三遊左中右指走打禁空合満有月申\" +\n\t\"割営配〔本〕〔三〕〔二〕〔安〕〔点〕〔打〕〔盗〕〔勝〕〔敗〕得可丽丸乁你侮侻倂偺備僧像㒞免兔兤具㒹內冗冤仌冬况凵刃㓟刻剆剷㔕勇勉勤勺包匆北卉\" +\n\t\"卑博即卽卿灰及叟叫叱吆咞吸呈周咢哶唐啓啣善喙喫喳嗂圖嘆圗噑噴切壮城埴堍型堲報墬売壷夆夢奢姬娛娧姘婦㛮嬈嬾寃寘寧寳寿将尢㞁屠屮峀岍嵃嵮嵫嵼巡巢\" +\n\t\"㠯巽帨帽幩㡢㡼庰庳庶廊廾舁弢㣇形彫㣣徚忍志忹悁㤺㤜悔惇慈慌慎慺憎憲憤憯懞懲懶成戛扝抱拔捐挽拼捨掃揤搢揅掩㨮摩摾撝摷㩬敏敬旣書晉㬙暑㬈㫤冒冕最\" +\n\t\"暜肭䏙朗望朡杞杓㭉柺枅桒梅梎栟椔㮝楂榣槪檨櫛㰘次歔㱎歲殟殺殻汎沿泍汧洖派海流浩浸涅洴港湮㴳滋滇淹潮濆瀹瀞瀛㶖灊災灷炭煅熜爨爵牐犀犕獺王㺬玥㺸\" +\n\t\"瑇瑜瑱璅瓊㼛甤甾異瘐㿼䀈直眞真睊䀹瞋䁆䂖硎碌磌䃣祖福秫䄯穀穊穏䈂篆築䈧糒䊠糨糣紀絣䌁緇縂繅䌴䍙罺羕翺者聠聰䏕育脃䐋脾媵舄辞䑫芑芋芝劳花芳芽苦\" +\n\t\"若茝荣莭茣莽菧著荓菊菌菜䔫蓱蓳蔖蕤䕝䕡䕫虐虜虧虩蚩蚈蜎蛢蝹蜨蝫螆蟡蠁䗹衠衣裗裞䘵裺㒻䚾䛇誠諭變豕貫賁贛起跋趼跰軔輸邔郱鄑鄛鈸鋗鋘鉼鏹鐕開䦕閷\" +\n\t\"䧦雃嶲霣䩮䩶韠䪲頋頩飢䬳餩馧駂駾䯎鬒鱀鳽䳎䳭鵧䳸麻䵖黹黾鼅鼏鼖鼻\"\n\nvar mappingIndex = []uint16{ // 1729 elements\n\t// Entry 0 - 3F\n\t0x0000, 0x0000, 0x0001, 0x0004, 0x0005, 0x0008, 0x0009, 0x000a,\n\t0x000d, 0x0010, 0x0011, 0x0012, 0x0017, 0x001c, 0x0021, 0x0024,\n\t0x0027, 0x002a, 0x002b, 0x002e, 0x0031, 0x0034, 0x0035, 0x0036,\n\t0x0037, 0x0038, 0x0039, 0x003c, 0x003f, 0x0042, 0x0045, 0x0048,\n\t0x004b, 0x004c, 0x004d, 0x0051, 0x0054, 0x0055, 0x005a, 0x005e,\n\t0x0062, 0x0066, 0x006a, 0x006e, 0x0074, 0x007a, 0x0080, 0x0086,\n\t0x008c, 0x0092, 0x0098, 0x009e, 0x00a4, 0x00aa, 0x00b0, 0x00b6,\n\t0x00bc, 0x00c2, 0x00c8, 0x00ce, 0x00d4, 0x00da, 0x00e0, 0x00e6,\n\t// Entry 40 - 7F\n\t0x00ec, 0x00f2, 0x00f8, 0x00fe, 0x0104, 0x010a, 0x0110, 0x0116,\n\t0x011c, 0x0122, 0x0128, 0x012e, 0x0137, 0x013d, 0x0146, 0x014c,\n\t0x0152, 0x0158, 0x015e, 0x0164, 0x016a, 0x0170, 0x0172, 0x0174,\n\t0x0176, 0x0178, 0x017a, 0x017c, 0x017e, 0x0180, 0x0181, 0x0182,\n\t0x0183, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, 0x018a, 0x018c,\n\t0x018d, 0x018e, 0x018f, 0x0191, 0x0193, 0x0195, 0x0197, 0x0199,\n\t0x019b, 0x019d, 0x019f, 0x01a0, 0x01a2, 0x01a4, 0x01a6, 0x01a8,\n\t0x01aa, 0x01ac, 0x01ae, 0x01b0, 0x01b1, 0x01b3, 0x01b5, 0x01b6,\n\t// Entry 80 - BF\n\t0x01b8, 0x01ba, 0x01bc, 0x01be, 0x01c0, 0x01c2, 0x01c4, 0x01c6,\n\t0x01c8, 0x01ca, 0x01cc, 0x01ce, 0x01d0, 0x01d2, 0x01d4, 0x01d6,\n\t0x01d8, 0x01da, 0x01dc, 0x01de, 0x01e0, 0x01e2, 0x01e4, 0x01e5,\n\t0x01e7, 0x01e9, 0x01eb, 0x01ed, 0x01ef, 0x01f1, 0x01f3, 0x01f5,\n\t0x01f7, 0x01f9, 0x01fb, 0x01fd, 0x0202, 0x0207, 0x020c, 0x0211,\n\t0x0216, 0x021b, 0x0220, 0x0225, 0x022a, 0x022f, 0x0234, 0x0239,\n\t0x023e, 0x0243, 0x0248, 0x024d, 0x0252, 0x0257, 0x025c, 0x0261,\n\t0x0266, 0x026b, 0x0270, 0x0275, 0x027a, 0x027e, 0x0282, 0x0287,\n\t// Entry C0 - FF\n\t0x0289, 0x028e, 0x0293, 0x0297, 0x029b, 0x02a0, 0x02a5, 0x02aa,\n\t0x02af, 0x02b1, 0x02b6, 0x02bb, 0x02c0, 0x02c2, 0x02c7, 0x02c8,\n\t0x02cd, 0x02d1, 0x02d5, 0x02da, 0x02e0, 0x02e9, 0x02ef, 0x02f8,\n\t0x02fa, 0x02fc, 0x02fe, 0x0300, 0x030c, 0x030d, 0x030e, 0x030f,\n\t0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317,\n\t0x0319, 0x031b, 0x031d, 0x031e, 0x0320, 0x0322, 0x0324, 0x0326,\n\t0x0328, 0x032a, 0x032c, 0x032e, 0x0330, 0x0335, 0x033a, 0x0340,\n\t0x0345, 0x034a, 0x034f, 0x0354, 0x0359, 0x035e, 0x0363, 0x0368,\n\t// Entry 100 - 13F\n\t0x036d, 0x0372, 0x0377, 0x037c, 0x0380, 0x0382, 0x0384, 0x0386,\n\t0x038a, 0x038c, 0x038e, 0x0393, 0x0399, 0x03a2, 0x03a8, 0x03b1,\n\t0x03b3, 0x03b5, 0x03b7, 0x03b9, 0x03bb, 0x03bd, 0x03bf, 0x03c1,\n\t0x03c3, 0x03c5, 0x03c7, 0x03cb, 0x03cf, 0x03d3, 0x03d7, 0x03db,\n\t0x03df, 0x03e3, 0x03e7, 0x03eb, 0x03ef, 0x03f3, 0x03ff, 0x0401,\n\t0x0406, 0x0408, 0x040a, 0x040c, 0x040e, 0x040f, 0x0413, 0x0417,\n\t0x041d, 0x0423, 0x0428, 0x042d, 0x0432, 0x0437, 0x043c, 0x0441,\n\t0x0446, 0x044b, 0x0450, 0x0455, 0x045a, 0x045f, 0x0464, 0x0469,\n\t// Entry 140 - 17F\n\t0x046e, 0x0473, 0x0478, 0x047d, 0x0482, 0x0487, 0x048c, 0x0491,\n\t0x0496, 0x049b, 0x04a0, 0x04a5, 0x04aa, 0x04af, 0x04b4, 0x04bc,\n\t0x04c4, 0x04c9, 0x04ce, 0x04d3, 0x04d8, 0x04dd, 0x04e2, 0x04e7,\n\t0x04ec, 0x04f1, 0x04f6, 0x04fb, 0x0500, 0x0505, 0x050a, 0x050f,\n\t0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537,\n\t0x053c, 0x0541, 0x0546, 0x054b, 0x0550, 0x0555, 0x055a, 0x055f,\n\t0x0564, 0x0569, 0x056e, 0x0573, 0x0578, 0x057a, 0x057c, 0x057e,\n\t0x0580, 0x0582, 0x0584, 0x0586, 0x0588, 0x058a, 0x058c, 0x058e,\n\t// Entry 180 - 1BF\n\t0x0590, 0x0592, 0x0594, 0x0596, 0x059c, 0x05a2, 0x05a4, 0x05a6,\n\t0x05a8, 0x05aa, 0x05ac, 0x05ae, 0x05b0, 0x05b2, 0x05b4, 0x05b6,\n\t0x05b8, 0x05ba, 0x05bc, 0x05be, 0x05c0, 0x05c4, 0x05c8, 0x05cc,\n\t0x05d0, 0x05d4, 0x05d8, 0x05dc, 0x05e0, 0x05e4, 0x05e9, 0x05ee,\n\t0x05f3, 0x05f5, 0x05f7, 0x05fd, 0x0609, 0x0615, 0x0621, 0x062a,\n\t0x0636, 0x063f, 0x0648, 0x0657, 0x0663, 0x066c, 0x0675, 0x067e,\n\t0x068a, 0x0696, 0x069f, 0x06a8, 0x06ae, 0x06b7, 0x06c3, 0x06cf,\n\t0x06d5, 0x06e4, 0x06f6, 0x0705, 0x070e, 0x071d, 0x072c, 0x0738,\n\t// Entry 1C0 - 1FF\n\t0x0741, 0x074a, 0x0753, 0x075f, 0x076e, 0x077a, 0x0783, 0x078c,\n\t0x0795, 0x079b, 0x07a1, 0x07a7, 0x07ad, 0x07b6, 0x07bf, 0x07ce,\n\t0x07d7, 0x07e3, 0x07f2, 0x07fb, 0x0801, 0x0807, 0x0816, 0x0822,\n\t0x0831, 0x083a, 0x0849, 0x084f, 0x0858, 0x0861, 0x086a, 0x0873,\n\t0x087c, 0x0888, 0x0891, 0x0897, 0x08a0, 0x08a9, 0x08b2, 0x08be,\n\t0x08c7, 0x08d0, 0x08d9, 0x08e8, 0x08f4, 0x08fa, 0x0909, 0x090f,\n\t0x091b, 0x0927, 0x0930, 0x0939, 0x0942, 0x094e, 0x0954, 0x095d,\n\t0x0969, 0x096f, 0x097e, 0x0987, 0x098b, 0x098f, 0x0993, 0x0997,\n\t// Entry 200 - 23F\n\t0x099b, 0x099f, 0x09a3, 0x09a7, 0x09ab, 0x09af, 0x09b4, 0x09b9,\n\t0x09be, 0x09c3, 0x09c8, 0x09cd, 0x09d2, 0x09d7, 0x09dc, 0x09e1,\n\t0x09e6, 0x09eb, 0x09f0, 0x09f5, 0x09fa, 0x09fc, 0x09fe, 0x0a00,\n\t0x0a02, 0x0a04, 0x0a06, 0x0a0c, 0x0a12, 0x0a18, 0x0a1e, 0x0a2a,\n\t0x0a2c, 0x0a2e, 0x0a30, 0x0a32, 0x0a34, 0x0a36, 0x0a38, 0x0a3c,\n\t0x0a3e, 0x0a40, 0x0a42, 0x0a44, 0x0a46, 0x0a48, 0x0a4a, 0x0a4c,\n\t0x0a4e, 0x0a50, 0x0a52, 0x0a54, 0x0a56, 0x0a58, 0x0a5a, 0x0a5f,\n\t0x0a65, 0x0a6c, 0x0a74, 0x0a76, 0x0a78, 0x0a7a, 0x0a7c, 0x0a7e,\n\t// Entry 240 - 27F\n\t0x0a80, 0x0a82, 0x0a84, 0x0a86, 0x0a88, 0x0a8a, 0x0a8c, 0x0a8e,\n\t0x0a90, 0x0a96, 0x0a98, 0x0a9a, 0x0a9c, 0x0a9e, 0x0aa0, 0x0aa2,\n\t0x0aa4, 0x0aa6, 0x0aa8, 0x0aaa, 0x0aac, 0x0aae, 0x0ab0, 0x0ab2,\n\t0x0ab4, 0x0ab9, 0x0abe, 0x0ac2, 0x0ac6, 0x0aca, 0x0ace, 0x0ad2,\n\t0x0ad6, 0x0ada, 0x0ade, 0x0ae2, 0x0ae7, 0x0aec, 0x0af1, 0x0af6,\n\t0x0afb, 0x0b00, 0x0b05, 0x0b0a, 0x0b0f, 0x0b14, 0x0b19, 0x0b1e,\n\t0x0b23, 0x0b28, 0x0b2d, 0x0b32, 0x0b37, 0x0b3c, 0x0b41, 0x0b46,\n\t0x0b4b, 0x0b50, 0x0b52, 0x0b54, 0x0b56, 0x0b58, 0x0b5a, 0x0b5c,\n\t// Entry 280 - 2BF\n\t0x0b5e, 0x0b62, 0x0b66, 0x0b6a, 0x0b6e, 0x0b72, 0x0b76, 0x0b7a,\n\t0x0b7c, 0x0b7e, 0x0b80, 0x0b82, 0x0b86, 0x0b8a, 0x0b8e, 0x0b92,\n\t0x0b96, 0x0b9a, 0x0b9e, 0x0ba0, 0x0ba2, 0x0ba4, 0x0ba6, 0x0ba8,\n\t0x0baa, 0x0bac, 0x0bb0, 0x0bb4, 0x0bba, 0x0bc0, 0x0bc4, 0x0bc8,\n\t0x0bcc, 0x0bd0, 0x0bd4, 0x0bd8, 0x0bdc, 0x0be0, 0x0be4, 0x0be8,\n\t0x0bec, 0x0bf0, 0x0bf4, 0x0bf8, 0x0bfc, 0x0c00, 0x0c04, 0x0c08,\n\t0x0c0c, 0x0c10, 0x0c14, 0x0c18, 0x0c1c, 0x0c20, 0x0c24, 0x0c28,\n\t0x0c2c, 0x0c30, 0x0c34, 0x0c36, 0x0c38, 0x0c3a, 0x0c3c, 0x0c3e,\n\t// Entry 2C0 - 2FF\n\t0x0c40, 0x0c42, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c4e,\n\t0x0c50, 0x0c52, 0x0c54, 0x0c56, 0x0c58, 0x0c5a, 0x0c5c, 0x0c5e,\n\t0x0c60, 0x0c62, 0x0c64, 0x0c66, 0x0c68, 0x0c6a, 0x0c6c, 0x0c6e,\n\t0x0c70, 0x0c72, 0x0c74, 0x0c76, 0x0c78, 0x0c7a, 0x0c7c, 0x0c7e,\n\t0x0c80, 0x0c82, 0x0c86, 0x0c8a, 0x0c8e, 0x0c92, 0x0c96, 0x0c9a,\n\t0x0c9e, 0x0ca2, 0x0ca4, 0x0ca8, 0x0cac, 0x0cb0, 0x0cb4, 0x0cb8,\n\t0x0cbc, 0x0cc0, 0x0cc4, 0x0cc8, 0x0ccc, 0x0cd0, 0x0cd4, 0x0cd8,\n\t0x0cdc, 0x0ce0, 0x0ce4, 0x0ce8, 0x0cec, 0x0cf0, 0x0cf4, 0x0cf8,\n\t// Entry 300 - 33F\n\t0x0cfc, 0x0d00, 0x0d04, 0x0d08, 0x0d0c, 0x0d10, 0x0d14, 0x0d18,\n\t0x0d1c, 0x0d20, 0x0d24, 0x0d28, 0x0d2c, 0x0d30, 0x0d34, 0x0d38,\n\t0x0d3c, 0x0d40, 0x0d44, 0x0d48, 0x0d4c, 0x0d50, 0x0d54, 0x0d58,\n\t0x0d5c, 0x0d60, 0x0d64, 0x0d68, 0x0d6c, 0x0d70, 0x0d74, 0x0d78,\n\t0x0d7c, 0x0d80, 0x0d84, 0x0d88, 0x0d8c, 0x0d90, 0x0d94, 0x0d98,\n\t0x0d9c, 0x0da0, 0x0da4, 0x0da8, 0x0dac, 0x0db0, 0x0db4, 0x0db8,\n\t0x0dbc, 0x0dc0, 0x0dc4, 0x0dc8, 0x0dcc, 0x0dd0, 0x0dd4, 0x0dd8,\n\t0x0ddc, 0x0de0, 0x0de4, 0x0de8, 0x0dec, 0x0df0, 0x0df4, 0x0df8,\n\t// Entry 340 - 37F\n\t0x0dfc, 0x0e00, 0x0e04, 0x0e08, 0x0e0c, 0x0e10, 0x0e14, 0x0e18,\n\t0x0e1d, 0x0e22, 0x0e27, 0x0e2c, 0x0e31, 0x0e36, 0x0e3a, 0x0e3e,\n\t0x0e42, 0x0e46, 0x0e4a, 0x0e4e, 0x0e52, 0x0e56, 0x0e5a, 0x0e5e,\n\t0x0e62, 0x0e66, 0x0e6a, 0x0e6e, 0x0e72, 0x0e76, 0x0e7a, 0x0e7e,\n\t0x0e82, 0x0e86, 0x0e8a, 0x0e8e, 0x0e92, 0x0e96, 0x0e9a, 0x0e9e,\n\t0x0ea2, 0x0ea6, 0x0eaa, 0x0eae, 0x0eb2, 0x0eb6, 0x0ebc, 0x0ec2,\n\t0x0ec8, 0x0ecc, 0x0ed0, 0x0ed4, 0x0ed8, 0x0edc, 0x0ee0, 0x0ee4,\n\t0x0ee8, 0x0eec, 0x0ef0, 0x0ef4, 0x0ef8, 0x0efc, 0x0f00, 0x0f04,\n\t// Entry 380 - 3BF\n\t0x0f08, 0x0f0c, 0x0f10, 0x0f14, 0x0f18, 0x0f1c, 0x0f20, 0x0f24,\n\t0x0f28, 0x0f2c, 0x0f30, 0x0f34, 0x0f38, 0x0f3e, 0x0f44, 0x0f4a,\n\t0x0f50, 0x0f56, 0x0f5c, 0x0f62, 0x0f68, 0x0f6e, 0x0f74, 0x0f7a,\n\t0x0f80, 0x0f86, 0x0f8c, 0x0f92, 0x0f98, 0x0f9e, 0x0fa4, 0x0faa,\n\t0x0fb0, 0x0fb6, 0x0fbc, 0x0fc2, 0x0fc8, 0x0fce, 0x0fd4, 0x0fda,\n\t0x0fe0, 0x0fe6, 0x0fec, 0x0ff2, 0x0ff8, 0x0ffe, 0x1004, 0x100a,\n\t0x1010, 0x1016, 0x101c, 0x1022, 0x1028, 0x102e, 0x1034, 0x103a,\n\t0x1040, 0x1046, 0x104c, 0x1052, 0x1058, 0x105e, 0x1064, 0x106a,\n\t// Entry 3C0 - 3FF\n\t0x1070, 0x1076, 0x107c, 0x1082, 0x1088, 0x108e, 0x1094, 0x109a,\n\t0x10a0, 0x10a6, 0x10ac, 0x10b2, 0x10b8, 0x10be, 0x10c4, 0x10ca,\n\t0x10d0, 0x10d6, 0x10dc, 0x10e2, 0x10e8, 0x10ee, 0x10f4, 0x10fa,\n\t0x1100, 0x1106, 0x110c, 0x1112, 0x1118, 0x111e, 0x1124, 0x112a,\n\t0x1130, 0x1136, 0x113c, 0x1142, 0x1148, 0x114e, 0x1154, 0x115a,\n\t0x1160, 0x1166, 0x116c, 0x1172, 0x1178, 0x1180, 0x1188, 0x1190,\n\t0x1198, 0x11a0, 0x11a8, 0x11b0, 0x11b6, 0x11d7, 0x11e6, 0x11ee,\n\t0x11ef, 0x11f0, 0x11f1, 0x11f2, 0x11f3, 0x11f4, 0x11f5, 0x11f6,\n\t// Entry 400 - 43F\n\t0x11f7, 0x11f8, 0x11f9, 0x11fa, 0x11fb, 0x11fc, 0x11fd, 0x11fe,\n\t0x11ff, 0x1200, 0x1201, 0x1205, 0x1209, 0x120d, 0x1211, 0x1215,\n\t0x1219, 0x121b, 0x121d, 0x121f, 0x1221, 0x1223, 0x1225, 0x1227,\n\t0x1229, 0x122b, 0x122d, 0x122f, 0x1231, 0x1233, 0x1235, 0x1237,\n\t0x1239, 0x123b, 0x123d, 0x123f, 0x1241, 0x1243, 0x1245, 0x1247,\n\t0x1249, 0x124b, 0x124d, 0x124f, 0x1251, 0x1253, 0x1255, 0x1257,\n\t0x1259, 0x125b, 0x125d, 0x125f, 0x1263, 0x1267, 0x126b, 0x126f,\n\t0x1270, 0x1271, 0x1272, 0x1273, 0x1274, 0x1275, 0x1277, 0x1279,\n\t// Entry 440 - 47F\n\t0x127b, 0x127d, 0x127f, 0x1281, 0x1283, 0x1285, 0x1287, 0x1289,\n\t0x128c, 0x128e, 0x1290, 0x1292, 0x1294, 0x1297, 0x1299, 0x129b,\n\t0x129d, 0x129f, 0x12a1, 0x12a3, 0x12a5, 0x12a7, 0x12a9, 0x12ab,\n\t0x12ad, 0x12af, 0x12b2, 0x12b4, 0x12b6, 0x12b8, 0x12ba, 0x12bc,\n\t0x12be, 0x12c0, 0x12c2, 0x12c4, 0x12c6, 0x12c9, 0x12cb, 0x12cd,\n\t0x12d0, 0x12d2, 0x12d4, 0x12d6, 0x12d8, 0x12da, 0x12dc, 0x12de,\n\t0x12e6, 0x12ee, 0x12fa, 0x1306, 0x1312, 0x131e, 0x132a, 0x1332,\n\t0x133a, 0x1346, 0x1352, 0x135e, 0x136a, 0x136c, 0x136e, 0x1370,\n\t// Entry 480 - 4BF\n\t0x1372, 0x1374, 0x1376, 0x1378, 0x137a, 0x137c, 0x137e, 0x1380,\n\t0x1382, 0x1384, 0x1386, 0x1388, 0x138a, 0x138d, 0x1390, 0x1392,\n\t0x1394, 0x1396, 0x1398, 0x139a, 0x139c, 0x139e, 0x13a0, 0x13a2,\n\t0x13a4, 0x13a6, 0x13a8, 0x13aa, 0x13ac, 0x13ae, 0x13b0, 0x13b2,\n\t0x13b4, 0x13b6, 0x13b8, 0x13ba, 0x13bc, 0x13bf, 0x13c1, 0x13c3,\n\t0x13c5, 0x13c7, 0x13c9, 0x13cb, 0x13cd, 0x13cf, 0x13d1, 0x13d3,\n\t0x13d6, 0x13d8, 0x13da, 0x13dc, 0x13de, 0x13e0, 0x13e2, 0x13e4,\n\t0x13e6, 0x13e8, 0x13ea, 0x13ec, 0x13ee, 0x13f0, 0x13f2, 0x13f5,\n\t// Entry 4C0 - 4FF\n\t0x13f8, 0x13fb, 0x13fe, 0x1401, 0x1404, 0x1407, 0x140a, 0x140d,\n\t0x1410, 0x1413, 0x1416, 0x1419, 0x141c, 0x141f, 0x1422, 0x1425,\n\t0x1428, 0x142b, 0x142e, 0x1431, 0x1434, 0x1437, 0x143a, 0x143d,\n\t0x1440, 0x1447, 0x1449, 0x144b, 0x144d, 0x1450, 0x1452, 0x1454,\n\t0x1456, 0x1458, 0x145a, 0x1460, 0x1466, 0x1469, 0x146c, 0x146f,\n\t0x1472, 0x1475, 0x1478, 0x147b, 0x147e, 0x1481, 0x1484, 0x1487,\n\t0x148a, 0x148d, 0x1490, 0x1493, 0x1496, 0x1499, 0x149c, 0x149f,\n\t0x14a2, 0x14a5, 0x14a8, 0x14ab, 0x14ae, 0x14b1, 0x14b4, 0x14b7,\n\t// Entry 500 - 53F\n\t0x14ba, 0x14bd, 0x14c0, 0x14c3, 0x14c6, 0x14c9, 0x14cc, 0x14cf,\n\t0x14d2, 0x14d5, 0x14d8, 0x14db, 0x14de, 0x14e1, 0x14e4, 0x14e7,\n\t0x14ea, 0x14ed, 0x14f6, 0x14ff, 0x1508, 0x1511, 0x151a, 0x1523,\n\t0x152c, 0x1535, 0x153e, 0x1541, 0x1544, 0x1547, 0x154a, 0x154d,\n\t0x1550, 0x1553, 0x1556, 0x1559, 0x155c, 0x155f, 0x1562, 0x1565,\n\t0x1568, 0x156b, 0x156e, 0x1571, 0x1574, 0x1577, 0x157a, 0x157d,\n\t0x1580, 0x1583, 0x1586, 0x1589, 0x158c, 0x158f, 0x1592, 0x1595,\n\t0x1598, 0x159b, 0x159e, 0x15a1, 0x15a4, 0x15a7, 0x15aa, 0x15ad,\n\t// Entry 540 - 57F\n\t0x15b0, 0x15b3, 0x15b6, 0x15b9, 0x15bc, 0x15bf, 0x15c2, 0x15c5,\n\t0x15c8, 0x15cb, 0x15ce, 0x15d1, 0x15d4, 0x15d7, 0x15da, 0x15dd,\n\t0x15e0, 0x15e3, 0x15e6, 0x15e9, 0x15ec, 0x15ef, 0x15f2, 0x15f5,\n\t0x15f8, 0x15fb, 0x15fe, 0x1601, 0x1604, 0x1607, 0x160a, 0x160d,\n\t0x1610, 0x1613, 0x1616, 0x1619, 0x161c, 0x161f, 0x1622, 0x1625,\n\t0x1628, 0x162b, 0x162e, 0x1631, 0x1634, 0x1637, 0x163a, 0x163d,\n\t0x1640, 0x1643, 0x1646, 0x1649, 0x164c, 0x164f, 0x1652, 0x1655,\n\t0x1658, 0x165b, 0x165e, 0x1661, 0x1664, 0x1667, 0x166a, 0x166d,\n\t// Entry 580 - 5BF\n\t0x1670, 0x1673, 0x1676, 0x1679, 0x167c, 0x167f, 0x1682, 0x1685,\n\t0x1688, 0x168b, 0x168e, 0x1691, 0x1694, 0x1697, 0x169a, 0x169d,\n\t0x16a0, 0x16a3, 0x16a6, 0x16a9, 0x16ac, 0x16af, 0x16b2, 0x16b5,\n\t0x16b8, 0x16bb, 0x16be, 0x16c1, 0x16c4, 0x16c7, 0x16ca, 0x16cd,\n\t0x16d0, 0x16d3, 0x16d6, 0x16d9, 0x16dc, 0x16df, 0x16e2, 0x16e5,\n\t0x16e8, 0x16eb, 0x16ee, 0x16f1, 0x16f4, 0x16f7, 0x16fa, 0x16fd,\n\t0x1700, 0x1703, 0x1706, 0x1709, 0x170c, 0x170f, 0x1712, 0x1715,\n\t0x1718, 0x171b, 0x171e, 0x1721, 0x1724, 0x1727, 0x172a, 0x172d,\n\t// Entry 5C0 - 5FF\n\t0x1730, 0x1733, 0x1736, 0x1739, 0x173c, 0x173f, 0x1742, 0x1745,\n\t0x1748, 0x174b, 0x174e, 0x1751, 0x1754, 0x1757, 0x175a, 0x175d,\n\t0x1760, 0x1763, 0x1766, 0x1769, 0x176c, 0x176f, 0x1772, 0x1775,\n\t0x1778, 0x177b, 0x177e, 0x1781, 0x1784, 0x1787, 0x178a, 0x178d,\n\t0x1790, 0x1793, 0x1796, 0x1799, 0x179c, 0x179f, 0x17a2, 0x17a5,\n\t0x17a8, 0x17ab, 0x17ae, 0x17b1, 0x17b4, 0x17b7, 0x17ba, 0x17bd,\n\t0x17c0, 0x17c3, 0x17c6, 0x17c9, 0x17cc, 0x17cf, 0x17d2, 0x17d5,\n\t0x17d8, 0x17db, 0x17de, 0x17e1, 0x17e4, 0x17e7, 0x17ea, 0x17ed,\n\t// Entry 600 - 63F\n\t0x17f0, 0x17f3, 0x17f6, 0x17f9, 0x17fc, 0x17ff, 0x1802, 0x1805,\n\t0x1808, 0x180b, 0x180e, 0x1811, 0x1814, 0x1817, 0x181a, 0x181d,\n\t0x1820, 0x1823, 0x1826, 0x1829, 0x182c, 0x182f, 0x1832, 0x1835,\n\t0x1838, 0x183b, 0x183e, 0x1841, 0x1844, 0x1847, 0x184a, 0x184d,\n\t0x1850, 0x1853, 0x1856, 0x1859, 0x185c, 0x185f, 0x1862, 0x1865,\n\t0x1868, 0x186b, 0x186e, 0x1871, 0x1874, 0x1877, 0x187a, 0x187d,\n\t0x1880, 0x1883, 0x1886, 0x1889, 0x188c, 0x188f, 0x1892, 0x1895,\n\t0x1898, 0x189b, 0x189e, 0x18a1, 0x18a4, 0x18a7, 0x18aa, 0x18ad,\n\t// Entry 640 - 67F\n\t0x18b0, 0x18b3, 0x18b6, 0x18b9, 0x18bc, 0x18bf, 0x18c2, 0x18c5,\n\t0x18c8, 0x18cb, 0x18ce, 0x18d1, 0x18d4, 0x18d7, 0x18da, 0x18dd,\n\t0x18e0, 0x18e3, 0x18e6, 0x18e9, 0x18ec, 0x18ef, 0x18f2, 0x18f5,\n\t0x18f8, 0x18fb, 0x18fe, 0x1901, 0x1904, 0x1907, 0x190a, 0x190d,\n\t0x1910, 0x1913, 0x1916, 0x1919, 0x191c, 0x191f, 0x1922, 0x1925,\n\t0x1928, 0x192b, 0x192e, 0x1931, 0x1934, 0x1937, 0x193a, 0x193d,\n\t0x1940, 0x1943, 0x1946, 0x1949, 0x194c, 0x194f, 0x1952, 0x1955,\n\t0x1958, 0x195b, 0x195e, 0x1961, 0x1964, 0x1967, 0x196a, 0x196d,\n\t// Entry 680 - 6BF\n\t0x1970, 0x1973, 0x1976, 0x1979, 0x197c, 0x197f, 0x1982, 0x1985,\n\t0x1988, 0x198b, 0x198e, 0x1991, 0x1994, 0x1997, 0x199a, 0x199d,\n\t0x19a0, 0x19a3, 0x19a6, 0x19a9, 0x19ac, 0x19af, 0x19b2, 0x19b5,\n\t0x19b8, 0x19bb, 0x19be, 0x19c1, 0x19c4, 0x19c7, 0x19ca, 0x19cd,\n\t0x19d0, 0x19d3, 0x19d6, 0x19d9, 0x19dc, 0x19df, 0x19e2, 0x19e5,\n\t0x19e8, 0x19eb, 0x19ee, 0x19f1, 0x19f4, 0x19f7, 0x19fa, 0x19fd,\n\t0x1a00, 0x1a03, 0x1a06, 0x1a09, 0x1a0c, 0x1a0f, 0x1a12, 0x1a15,\n\t0x1a18, 0x1a1b, 0x1a1e, 0x1a21, 0x1a24, 0x1a27, 0x1a2a, 0x1a2d,\n\t// Entry 6C0 - 6FF\n\t0x1a30,\n} // Size: 3482 bytes\n\nvar xorData string = \"\" + // Size: 4907 bytes\n\t\"\\x02\\x0c\\x09\\x02\\xb0\\xec\\x02\\xad\\xd8\\x02\\xad\\xd9\\x02\\x06\\x07\\x02\\x0f\\x12\" +\n\t\"\\x02\\x0f\\x1f\\x02\\x0f\\x1d\\x02\\x01\\x13\\x02\\x0f\\x16\\x02\\x0f\\x0b\\x02\\x0f3\" +\n\t\"\\x02\\x0f7\\x02\\x0f?\\x02\\x0f/\\x02\\x0f*\\x02\\x0c&\\x02\\x0c*\\x02\\x0c;\\x02\\x0c9\" +\n\t\"\\x02\\x0c%\\x02\\xab\\xed\\x02\\xab\\xe2\\x02\\xab\\xe3\\x02\\xa9\\xe0\\x02\\xa9\\xe1\" +\n\t\"\\x02\\xa9\\xe6\\x02\\xa3\\xcb\\x02\\xa3\\xc8\\x02\\xa3\\xc9\\x02\\x01#\\x02\\x01\\x08\" +\n\t\"\\x02\\x0e>\\x02\\x0e'\\x02\\x0f\\x03\\x02\\x03\\x0d\\x02\\x03\\x09\\x02\\x03\\x17\\x02\" +\n\t\"\\x03\\x0e\\x02\\x02\\x03\\x02\\x011\\x02\\x01\\x00\\x02\\x01\\x10\\x02\\x03<\\x02\\x07\" +\n\t\"\\x0d\\x02\\x02\\x0c\\x02\\x0c0\\x02\\x01\\x03\\x02\\x01\\x01\\x02\\x01 \\x02\\x01\\x22\" +\n\t\"\\x02\\x01)\\x02\\x01\\x0a\\x02\\x01\\x0c\\x02\\x02\\x06\\x02\\x02\\x02\\x02\\x03\\x10\" +\n\t\"\\x03\\x037 \\x03\\x0b+\\x03\\x021\\x00\\x02\\x01\\x04\\x02\\x01\\x02\\x02\\x019\\x02\" +\n\t\"\\x03\\x1c\\x02\\x02$\\x03\\x80p$\\x02\\x03:\\x02\\x03\\x0a\\x03\\xc1r.\\x03\\xc1r,\\x03\" +\n\t\"\\xc1r\\x02\\x02\\x02:\\x02\\x02>\\x02\\x02,\\x02\\x02\\x10\\x02\\x02\\x00\\x03\\xc1s<\" +\n\t\"\\x03\\xc1s*\\x03\\xc2L$\\x03\\xc2L;\\x02\\x09)\\x02\\x0a\\x19\\x03\\x83\\xab\\xe3\\x03\" +\n\t\"\\x83\\xab\\xf2\\x03 4\\xe0\\x03\\x81\\xab\\xea\\x03\\x81\\xab\\xf3\\x03 4\\xef\\x03\\x96\" +\n\t\"\\xe1\\xcd\\x03\\x84\\xe5\\xc3\\x02\\x0d\\x11\\x03\\x8b\\xec\\xcb\\x03\\x94\\xec\\xcf\\x03\" +\n\t\"\\x9a\\xec\\xc2\\x03\\x8b\\xec\\xdb\\x03\\x94\\xec\\xdf\\x03\\x9a\\xec\\xd2\\x03\\x01\\x0c\" +\n\t\"!\\x03\\x01\\x0c#\\x03ʠ\\x9d\\x03ʣ\\x9c\\x03ʢ\\x9f\\x03ʥ\\x9e\\x03ʤ\\x91\\x03ʧ\\x90\\x03\" +\n\t\"ʦ\\x93\\x03ʩ\\x92\\x03ʨ\\x95\\x03\\xca\\xf3\\xb5\\x03\\xca\\xf0\\xb4\\x03\\xca\\xf1\\xb7\" +\n\t\"\\x03\\xca\\xf6\\xb6\\x03\\xca\\xf7\\x89\\x03\\xca\\xf4\\x88\\x03\\xca\\xf5\\x8b\\x03\\xca\" +\n\t\"\\xfa\\x8a\\x03\\xca\\xfb\\x8d\\x03\\xca\\xf8\\x8c\\x03\\xca\\xf9\\x8f\\x03\\xca\\xfe\\x8e\" +\n\t\"\\x03\\xca\\xff\\x81\\x03\\xca\\xfc\\x80\\x03\\xca\\xfd\\x83\\x03\\xca\\xe2\\x82\\x03\\xca\" +\n\t\"\\xe3\\x85\\x03\\xca\\xe0\\x84\\x03\\xca\\xe1\\x87\\x03\\xca\\xe6\\x86\\x03\\xca\\xe7\\x99\" +\n\t\"\\x03\\xca\\xe4\\x98\\x03\\xca\\xe5\\x9b\\x03\\xca\\xea\\x9a\\x03\\xca\\xeb\\x9d\\x03\\xca\" +\n\t\"\\xe8\\x9c\\x03ؓ\\x89\\x03ߔ\\x8b\\x02\\x010\\x03\\x03\\x04\\x1e\\x03\\x04\\x15\\x12\\x03\" +\n\t\"\\x0b\\x05,\\x03\\x06\\x04\\x00\\x03\\x06\\x04)\\x03\\x06\\x044\\x03\\x06\\x04<\\x03\\x06\" +\n\t\"\\x05\\x1d\\x03\\x06\\x06\\x00\\x03\\x06\\x06\\x0a\\x03\\x06\\x06'\\x03\\x06\\x062\\x03\" +\n\t\"\\x0786\\x03\\x079/\\x03\\x079 \\x03\\x07:\\x0e\\x03\\x07:\\x1b\\x03\\x07:%\\x03\\x07;/\" +\n\t\"\\x03\\x07;%\\x03\\x074\\x11\\x03\\x076\\x09\\x03\\x077*\\x03\\x070\\x01\\x03\\x070\\x0f\" +\n\t\"\\x03\\x070.\\x03\\x071\\x16\\x03\\x071\\x04\\x03\\x0710\\x03\\x072\\x18\\x03\\x072-\" +\n\t\"\\x03\\x073\\x14\\x03\\x073>\\x03\\x07'\\x09\\x03\\x07 \\x00\\x03\\x07\\x1f\\x0b\\x03\" +\n\t\"\\x07\\x18#\\x03\\x07\\x18(\\x03\\x07\\x186\\x03\\x07\\x18\\x03\\x03\\x07\\x19\\x16\\x03\" +\n\t\"\\x07\\x116\\x03\\x07\\x12'\\x03\\x07\\x13\\x10\\x03\\x07\\x0c&\\x03\\x07\\x0c\\x08\\x03\" +\n\t\"\\x07\\x0c\\x13\\x03\\x07\\x0d\\x02\\x03\\x07\\x0d\\x1c\\x03\\x07\\x0b5\\x03\\x07\\x0b\" +\n\t\"\\x0a\\x03\\x07\\x0b\\x01\\x03\\x07\\x0b\\x0f\\x03\\x07\\x05\\x00\\x03\\x07\\x05\\x09\\x03\" +\n\t\"\\x07\\x05\\x0b\\x03\\x07\\x07\\x01\\x03\\x07\\x07\\x08\\x03\\x07\\x00<\\x03\\x07\\x00+\" +\n\t\"\\x03\\x07\\x01)\\x03\\x07\\x01\\x1b\\x03\\x07\\x01\\x08\\x03\\x07\\x03?\\x03\\x0445\\x03\" +\n\t\"\\x044\\x08\\x03\\x0454\\x03\\x04)/\\x03\\x04)5\\x03\\x04+\\x05\\x03\\x04+\\x14\\x03\" +\n\t\"\\x04+ \\x03\\x04+<\\x03\\x04*&\\x03\\x04*\\x22\\x03\\x04&8\\x03\\x04!\\x01\\x03\\x04!\" +\n\t\"\\x22\\x03\\x04\\x11+\\x03\\x04\\x10.\\x03\\x04\\x104\\x03\\x04\\x13=\\x03\\x04\\x12\\x04\" +\n\t\"\\x03\\x04\\x12\\x0a\\x03\\x04\\x0d\\x1d\\x03\\x04\\x0d\\x07\\x03\\x04\\x0d \\x03\\x05<>\" +\n\t\"\\x03\\x055<\\x03\\x055!\\x03\\x055#\\x03\\x055&\\x03\\x054\\x1d\\x03\\x054\\x02\\x03\" +\n\t\"\\x054\\x07\\x03\\x0571\\x03\\x053\\x1a\\x03\\x053\\x16\\x03\\x05.<\\x03\\x05.\\x07\\x03\" +\n\t\"\\x05):\\x03\\x05)<\\x03\\x05)\\x0c\\x03\\x05)\\x15\\x03\\x05+-\\x03\\x05+5\\x03\\x05$\" +\n\t\"\\x1e\\x03\\x05$\\x14\\x03\\x05'\\x04\\x03\\x05'\\x14\\x03\\x05&\\x02\\x03\\x05\\x226\" +\n\t\"\\x03\\x05\\x22\\x0c\\x03\\x05\\x22\\x1c\\x03\\x05\\x19\\x0a\\x03\\x05\\x1b\\x09\\x03\\x05\" +\n\t\"\\x1b\\x0c\\x03\\x05\\x14\\x07\\x03\\x05\\x16?\\x03\\x05\\x16\\x0c\\x03\\x05\\x0c\\x05\" +\n\t\"\\x03\\x05\\x0e\\x0f\\x03\\x05\\x01\\x0e\\x03\\x05\\x00(\\x03\\x05\\x030\\x03\\x05\\x03\" +\n\t\"\\x06\\x03\\x0a==\\x03\\x0a=1\\x03\\x0a=,\\x03\\x0a=\\x0c\\x03\\x0a??\\x03\\x0a<\\x08\" +\n\t\"\\x03\\x0a9!\\x03\\x0a9)\\x03\\x0a97\\x03\\x0a99\\x03\\x0a6\\x0a\\x03\\x0a6\\x1c\\x03\" +\n\t\"\\x0a6\\x17\\x03\\x0a7'\\x03\\x0a78\\x03\\x0a73\\x03\\x0a'\\x01\\x03\\x0a'&\\x03\\x0a\" +\n\t\"\\x1f\\x0e\\x03\\x0a\\x1f\\x03\\x03\\x0a\\x1f3\\x03\\x0a\\x1b/\\x03\\x0a\\x18\\x19\\x03\" +\n\t\"\\x0a\\x19\\x01\\x03\\x0a\\x16\\x14\\x03\\x0a\\x0e\\x22\\x03\\x0a\\x0f\\x10\\x03\\x0a\\x0f\" +\n\t\"\\x02\\x03\\x0a\\x0f \\x03\\x0a\\x0c\\x04\\x03\\x0a\\x0b>\\x03\\x0a\\x0b+\\x03\\x0a\\x08/\" +\n\t\"\\x03\\x0a\\x046\\x03\\x0a\\x05\\x14\\x03\\x0a\\x00\\x04\\x03\\x0a\\x00\\x10\\x03\\x0a\" +\n\t\"\\x00\\x14\\x03\\x0b<3\\x03\\x0b;*\\x03\\x0b9\\x22\\x03\\x0b9)\\x03\\x0b97\\x03\\x0b+\" +\n\t\"\\x10\\x03\\x0b((\\x03\\x0b&5\\x03\\x0b$\\x1c\\x03\\x0b$\\x12\\x03\\x0b%\\x04\\x03\\x0b#\" +\n\t\"<\\x03\\x0b#0\\x03\\x0b#\\x0d\\x03\\x0b#\\x19\\x03\\x0b!:\\x03\\x0b!\\x1f\\x03\\x0b!\" +\n\t\"\\x00\\x03\\x0b\\x1e5\\x03\\x0b\\x1c\\x1d\\x03\\x0b\\x1d-\\x03\\x0b\\x1d(\\x03\\x0b\\x18.\" +\n\t\"\\x03\\x0b\\x18 \\x03\\x0b\\x18\\x16\\x03\\x0b\\x14\\x13\\x03\\x0b\\x15$\\x03\\x0b\\x15\" +\n\t\"\\x22\\x03\\x0b\\x12\\x1b\\x03\\x0b\\x12\\x10\\x03\\x0b\\x132\\x03\\x0b\\x13=\\x03\\x0b\" +\n\t\"\\x12\\x18\\x03\\x0b\\x0c&\\x03\\x0b\\x061\\x03\\x0b\\x06:\\x03\\x0b\\x05#\\x03\\x0b\\x05\" +\n\t\"<\\x03\\x0b\\x04\\x0b\\x03\\x0b\\x04\\x04\\x03\\x0b\\x04\\x1b\\x03\\x0b\\x042\\x03\\x0b\" +\n\t\"\\x041\\x03\\x0b\\x03\\x03\\x03\\x0b\\x03\\x1d\\x03\\x0b\\x03/\\x03\\x0b\\x03+\\x03\\x0b\" +\n\t\"\\x02\\x1b\\x03\\x0b\\x02\\x00\\x03\\x0b\\x01\\x1e\\x03\\x0b\\x01\\x08\\x03\\x0b\\x015\" +\n\t\"\\x03\\x06\\x0d9\\x03\\x06\\x0d=\\x03\\x06\\x0d?\\x03\\x02\\x001\\x03\\x02\\x003\\x03\" +\n\t\"\\x02\\x02\\x19\\x03\\x02\\x006\\x03\\x02\\x02\\x1b\\x03\\x02\\x004\\x03\\x02\\x00<\\x03\" +\n\t\"\\x02\\x02\\x0a\\x03\\x02\\x02\\x0e\\x03\\x02\\x01\\x1a\\x03\\x02\\x01\\x07\\x03\\x02\\x01\" +\n\t\"\\x05\\x03\\x02\\x01\\x0b\\x03\\x02\\x01%\\x03\\x02\\x01\\x0c\\x03\\x02\\x01\\x04\\x03\" +\n\t\"\\x02\\x01\\x1c\\x03\\x02\\x00.\\x03\\x02\\x002\\x03\\x02\\x00>\\x03\\x02\\x00\\x12\\x03\" +\n\t\"\\x02\\x00\\x16\\x03\\x02\\x011\\x03\\x02\\x013\\x03\\x02\\x02 \\x03\\x02\\x02%\\x03\\x02\" +\n\t\"\\x02$\\x03\\x02\\x028\\x03\\x02\\x02;\\x03\\x02\\x024\\x03\\x02\\x012\\x03\\x02\\x022\" +\n\t\"\\x03\\x02\\x02/\\x03\\x02\\x01,\\x03\\x02\\x01\\x13\\x03\\x02\\x01\\x16\\x03\\x02\\x01\" +\n\t\"\\x11\\x03\\x02\\x01\\x1e\\x03\\x02\\x01\\x15\\x03\\x02\\x01\\x17\\x03\\x02\\x01\\x0f\\x03\" +\n\t\"\\x02\\x01\\x08\\x03\\x02\\x00?\\x03\\x02\\x03\\x07\\x03\\x02\\x03\\x0d\\x03\\x02\\x03\" +\n\t\"\\x13\\x03\\x02\\x03\\x1d\\x03\\x02\\x03\\x1f\\x03\\x02\\x00\\x03\\x03\\x02\\x00\\x0d\\x03\" +\n\t\"\\x02\\x00\\x01\\x03\\x02\\x00\\x1b\\x03\\x02\\x00\\x19\\x03\\x02\\x00\\x18\\x03\\x02\\x00\" +\n\t\"\\x13\\x03\\x02\\x00/\\x03\\x07>\\x12\\x03\\x07<\\x1f\\x03\\x07>\\x1d\\x03\\x06\\x1d\\x0e\" +\n\t\"\\x03\\x07>\\x1c\\x03\\x07>:\\x03\\x07>\\x13\\x03\\x04\\x12+\\x03\\x07?\\x03\\x03\\x07>\" +\n\t\"\\x02\\x03\\x06\\x224\\x03\\x06\\x1a.\\x03\\x07<%\\x03\\x06\\x1c\\x0b\\x03\\x0609\\x03\" +\n\t\"\\x05\\x1f\\x01\\x03\\x04'\\x08\\x03\\x93\\xfd\\xf5\\x03\\x02\\x0d \\x03\\x02\\x0d#\\x03\" +\n\t\"\\x02\\x0d!\\x03\\x02\\x0d&\\x03\\x02\\x0d\\x22\\x03\\x02\\x0d/\\x03\\x02\\x0d,\\x03\\x02\" +\n\t\"\\x0d$\\x03\\x02\\x0d'\\x03\\x02\\x0d%\\x03\\x02\\x0d;\\x03\\x02\\x0d=\\x03\\x02\\x0d?\" +\n\t\"\\x03\\x099.\\x03\\x08\\x0b7\\x03\\x08\\x02\\x14\\x03\\x08\\x14\\x0d\\x03\\x08.:\\x03\" +\n\t\"\\x089'\\x03\\x0f\\x0b\\x18\\x03\\x0f\\x1c1\\x03\\x0f\\x17&\\x03\\x0f9\\x1f\\x03\\x0f0\" +\n\t\"\\x0c\\x03\\x0e\\x0a9\\x03\\x0e\\x056\\x03\\x0e\\x1c#\\x03\\x0f\\x13\\x0e\\x03\\x072\\x00\" +\n\t\"\\x03\\x070\\x0d\\x03\\x072\\x0b\\x03\\x06\\x11\\x18\\x03\\x070\\x10\\x03\\x06\\x0f(\\x03\" +\n\t\"\\x072\\x05\\x03\\x06\\x0f,\\x03\\x073\\x15\\x03\\x06\\x07\\x08\\x03\\x05\\x16\\x02\\x03\" +\n\t\"\\x04\\x0b \\x03\\x05:8\\x03\\x05\\x16%\\x03\\x0a\\x0d\\x1f\\x03\\x06\\x16\\x10\\x03\\x05\" +\n\t\"\\x1d5\\x03\\x05*;\\x03\\x05\\x16\\x1b\\x03\\x04.-\\x03\\x06\\x1a\\x19\\x03\\x04\\x03,\" +\n\t\"\\x03\\x0b87\\x03\\x04/\\x0a\\x03\\x06\\x00,\\x03\\x04-\\x01\\x03\\x04\\x1e-\\x03\\x06/(\" +\n\t\"\\x03\\x0a\\x0b5\\x03\\x06\\x0e7\\x03\\x06\\x07.\\x03\\x0597\\x03\\x0a*%\\x03\\x0760\" +\n\t\"\\x03\\x06\\x0c;\\x03\\x05'\\x00\\x03\\x072.\\x03\\x072\\x08\\x03\\x06=\\x01\\x03\\x06\" +\n\t\"\\x05\\x1b\\x03\\x06\\x06\\x12\\x03\\x06$=\\x03\\x06'\\x0d\\x03\\x04\\x11\\x0f\\x03\\x076\" +\n\t\",\\x03\\x06\\x07;\\x03\\x06.,\\x03\\x86\\xf9\\xea\\x03\\x8f\\xff\\xeb\\x02\\x092\\x02\" +\n\t\"\\x095\\x02\\x094\\x02\\x09;\\x02\\x09>\\x02\\x098\\x02\\x09*\\x02\\x09/\\x02\\x09,\\x02\" +\n\t\"\\x09%\\x02\\x09&\\x02\\x09#\\x02\\x09 \\x02\\x08!\\x02\\x08%\\x02\\x08$\\x02\\x08+\\x02\" +\n\t\"\\x08.\\x02\\x08*\\x02\\x08&\\x02\\x088\\x02\\x08>\\x02\\x084\\x02\\x086\\x02\\x080\\x02\" +\n\t\"\\x08\\x10\\x02\\x08\\x17\\x02\\x08\\x12\\x02\\x08\\x1d\\x02\\x08\\x1f\\x02\\x08\\x13\\x02\" +\n\t\"\\x08\\x15\\x02\\x08\\x14\\x02\\x08\\x0c\\x03\\x8b\\xfd\\xd0\\x03\\x81\\xec\\xc6\\x03\\x87\" +\n\t\"\\xe0\\x8a\\x03-2\\xe3\\x03\\x80\\xef\\xe4\\x03-2\\xea\\x03\\x88\\xe6\\xeb\\x03\\x8e\\xe6\" +\n\t\"\\xe8\\x03\\x84\\xe6\\xe9\\x03\\x97\\xe6\\xee\\x03-2\\xf9\\x03-2\\xf6\\x03\\x8e\\xe3\\xad\" +\n\t\"\\x03\\x80\\xe3\\x92\\x03\\x88\\xe3\\x90\\x03\\x8e\\xe3\\x90\\x03\\x80\\xe3\\x97\\x03\\x88\" +\n\t\"\\xe3\\x95\\x03\\x88\\xfe\\xcb\\x03\\x8e\\xfe\\xca\\x03\\x84\\xfe\\xcd\\x03\\x91\\xef\\xc9\" +\n\t\"\\x03-2\\xc1\\x03-2\\xc0\\x03-2\\xcb\\x03\\x88@\\x09\\x03\\x8e@\\x08\\x03\\x8f\\xe0\\xf5\" +\n\t\"\\x03\\x8e\\xe6\\xf9\\x03\\x8e\\xe0\\xfa\\x03\\x93\\xff\\xf4\\x03\\x84\\xee\\xd3\\x03\\x0b\" +\n\t\"(\\x04\\x023 \\x03\\x0b)\\x08\\x021;\\x02\\x01*\\x03\\x0b#\\x10\\x03\\x0b 0\\x03\\x0b!\" +\n\t\"\\x10\\x03\\x0b!0\\x03\\x07\\x15\\x08\\x03\\x09?5\\x03\\x07\\x1f\\x08\\x03\\x07\\x17\\x0b\" +\n\t\"\\x03\\x09\\x1f\\x15\\x03\\x0b\\x1c7\\x03\\x0a+#\\x03\\x06\\x1a\\x1b\\x03\\x06\\x1a\\x14\" +\n\t\"\\x03\\x0a\\x01\\x18\\x03\\x06#\\x1b\\x03\\x0a2\\x0c\\x03\\x0a\\x01\\x04\\x03\\x09#;\\x03\" +\n\t\"\\x08='\\x03\\x08\\x1a\\x0a\\x03\\x07</\\x03\\x07:+\\x03\\x07\\x07*\\x03\\x06&\\x1c\\x03\" +\n\t\"\\x09\\x0c\\x16\\x03\\x09\\x10\\x0e\\x03\\x08'\\x0f\\x03\\x08+\\x09\\x03\\x074%\\x03\\x06\" +\n\t\"!3\\x03\\x06\\x03+\\x03\\x0b\\x1e\\x19\\x03\\x0a))\\x03\\x09\\x08\\x19\\x03\\x08,\\x05\" +\n\t\"\\x03\\x07<2\\x03\\x06\\x1c>\\x03\\x0a\\x111\\x03\\x09\\x1b\\x09\\x03\\x073.\\x03\\x07\" +\n\t\"\\x01\\x00\\x03\\x09/,\\x03\\x07#>\\x03\\x07\\x048\\x03\\x0a\\x1f\\x22\\x03\\x098>\\x03\" +\n\t\"\\x09\\x11\\x00\\x03\\x08/\\x17\\x03\\x06'\\x22\\x03\\x0b\\x1a+\\x03\\x0a\\x22\\x19\\x03\" +\n\t\"\\x0a/1\\x03\\x0974\\x03\\x09\\x0f\\x22\\x03\\x08,\\x22\\x03\\x08?\\x14\\x03\\x07$5\\x03\" +\n\t\"\\x07<3\\x03\\x07=*\\x03\\x07\\x13\\x18\\x03\\x068\\x0a\\x03\\x06\\x09\\x16\\x03\\x06\" +\n\t\"\\x13\\x00\\x03\\x08\\x067\\x03\\x08\\x01\\x03\\x03\\x08\\x12\\x1d\\x03\\x07+7\\x03\\x06(\" +\n\t\";\\x03\\x06\\x1c?\\x03\\x07\\x0e\\x17\\x03\\x0a\\x06\\x1d\\x03\\x0a\\x19\\x07\\x03\\x08\" +\n\t\"\\x14$\\x03\\x07$;\\x03\\x08,$\\x03\\x08\\x06\\x0d\\x03\\x07\\x16\\x0a\\x03\\x06>>\\x03\" +\n\t\"\\x0a\\x06\\x12\\x03\\x0a\\x14)\\x03\\x09\\x0d\\x1f\\x03\\x09\\x12\\x17\\x03\\x09\\x19\" +\n\t\"\\x01\\x03\\x08\\x11 \\x03\\x08\\x1d'\\x03\\x06<\\x1a\\x03\\x0a.\\x00\\x03\\x07'\\x18\" +\n\t\"\\x03\\x0a\\x22\\x08\\x03\\x08\\x0d\\x0a\\x03\\x08\\x13)\\x03\\x07*)\\x03\\x06<,\\x03\" +\n\t\"\\x07\\x0b\\x1a\\x03\\x09.\\x14\\x03\\x09\\x0d\\x1e\\x03\\x07\\x0e#\\x03\\x0b\\x1d'\\x03\" +\n\t\"\\x0a\\x0a8\\x03\\x09%2\\x03\\x08+&\\x03\\x080\\x12\\x03\\x0a)4\\x03\\x08\\x06\\x1f\\x03\" +\n\t\"\\x0b\\x1b\\x1a\\x03\\x0a\\x1b\\x0f\\x03\\x0b\\x1d*\\x03\\x09\\x16$\\x03\\x090\\x11\\x03\" +\n\t\"\\x08\\x11\\x08\\x03\\x0a*(\\x03\\x0a\\x042\\x03\\x089,\\x03\\x074'\\x03\\x07\\x0f\\x05\" +\n\t\"\\x03\\x09\\x0b\\x0a\\x03\\x07\\x1b\\x01\\x03\\x09\\x17:\\x03\\x09.\\x0d\\x03\\x07.\\x11\" +\n\t\"\\x03\\x09+\\x15\\x03\\x080\\x13\\x03\\x0b\\x1f\\x19\\x03\\x0a \\x11\\x03\\x0a\\x220\\x03\" +\n\t\"\\x09\\x07;\\x03\\x08\\x16\\x1c\\x03\\x07,\\x13\\x03\\x07\\x0e/\\x03\\x06\\x221\\x03\\x0a\" +\n\t\".\\x0a\\x03\\x0a7\\x02\\x03\\x0a\\x032\\x03\\x0a\\x1d.\\x03\\x091\\x06\\x03\\x09\\x19:\" +\n\t\"\\x03\\x08\\x02/\\x03\\x060+\\x03\\x06\\x0f-\\x03\\x06\\x1c\\x1f\\x03\\x06\\x1d\\x07\\x03\" +\n\t\"\\x0a,\\x11\\x03\\x09=\\x0d\\x03\\x09\\x0b;\\x03\\x07\\x1b/\\x03\\x0a\\x1f:\\x03\\x09 \" +\n\t\"\\x1f\\x03\\x09.\\x10\\x03\\x094\\x0b\\x03\\x09\\x1a1\\x03\\x08#\\x1a\\x03\\x084\\x1d\" +\n\t\"\\x03\\x08\\x01\\x1f\\x03\\x08\\x11\\x22\\x03\\x07'8\\x03\\x07\\x1a>\\x03\\x0757\\x03\" +\n\t\"\\x06&9\\x03\\x06+\\x11\\x03\\x0a.\\x0b\\x03\\x0a,>\\x03\\x0a4#\\x03\\x08%\\x17\\x03\" +\n\t\"\\x07\\x05\\x22\\x03\\x07\\x0c\\x0b\\x03\\x0a\\x1d+\\x03\\x0a\\x19\\x16\\x03\\x09+\\x1f\" +\n\t\"\\x03\\x09\\x08\\x0b\\x03\\x08\\x16\\x18\\x03\\x08+\\x12\\x03\\x0b\\x1d\\x0c\\x03\\x0a=\" +\n\t\"\\x10\\x03\\x0a\\x09\\x0d\\x03\\x0a\\x10\\x11\\x03\\x09&0\\x03\\x08(\\x1f\\x03\\x087\\x07\" +\n\t\"\\x03\\x08\\x185\\x03\\x07'6\\x03\\x06.\\x05\\x03\\x06=\\x04\\x03\\x06;;\\x03\\x06\\x06,\" +\n\t\"\\x03\\x0b\\x18>\\x03\\x08\\x00\\x18\\x03\\x06 \\x03\\x03\\x06<\\x00\\x03\\x09%\\x18\\x03\" +\n\t\"\\x0b\\x1c<\\x03\\x0a%!\\x03\\x0a\\x09\\x12\\x03\\x0a\\x16\\x02\\x03\\x090'\\x03\\x09\" +\n\t\"\\x0e=\\x03\\x08 \\x0e\\x03\\x08>\\x03\\x03\\x074>\\x03\\x06&?\\x03\\x06\\x19\\x09\\x03\" +\n\t\"\\x06?(\\x03\\x0a-\\x0e\\x03\\x09:3\\x03\\x098:\\x03\\x09\\x12\\x0b\\x03\\x09\\x1d\\x17\" +\n\t\"\\x03\\x087\\x05\\x03\\x082\\x14\\x03\\x08\\x06%\\x03\\x08\\x13\\x1f\\x03\\x06\\x06\\x0e\" +\n\t\"\\x03\\x0a\\x22<\\x03\\x09/<\\x03\\x06>+\\x03\\x0a'?\\x03\\x0a\\x13\\x0c\\x03\\x09\\x10<\" +\n\t\"\\x03\\x07\\x1b=\\x03\\x0a\\x19\\x13\\x03\\x09\\x22\\x1d\\x03\\x09\\x07\\x0d\\x03\\x08)\" +\n\t\"\\x1c\\x03\\x06=\\x1a\\x03\\x0a/4\\x03\\x0a7\\x11\\x03\\x0a\\x16:\\x03\\x09?3\\x03\\x09:\" +\n\t\"/\\x03\\x09\\x05\\x0a\\x03\\x09\\x14\\x06\\x03\\x087\\x22\\x03\\x080\\x07\\x03\\x08\\x1a\" +\n\t\"\\x1f\\x03\\x07\\x04(\\x03\\x07\\x04\\x09\\x03\\x06 %\\x03\\x06<\\x08\\x03\\x0a+\\x14\" +\n\t\"\\x03\\x09\\x1d\\x16\\x03\\x0a70\\x03\\x08 >\\x03\\x0857\\x03\\x070\\x0a\\x03\\x06=\\x12\" +\n\t\"\\x03\\x06\\x16%\\x03\\x06\\x1d,\\x03\\x099#\\x03\\x09\\x10>\\x03\\x07 \\x1e\\x03\\x08\" +\n\t\"\\x0c<\\x03\\x08\\x0b\\x18\\x03\\x08\\x15+\\x03\\x08,:\\x03\\x08%\\x22\\x03\\x07\\x0a$\" +\n\t\"\\x03\\x0b\\x1c=\\x03\\x07+\\x08\\x03\\x0a/\\x05\\x03\\x0a \\x07\\x03\\x0a\\x12'\\x03\" +\n\t\"\\x09#\\x11\\x03\\x08\\x1b\\x15\\x03\\x0a\\x06\\x01\\x03\\x09\\x1c\\x1b\\x03\\x0922\\x03\" +\n\t\"\\x07\\x14<\\x03\\x07\\x09\\x04\\x03\\x061\\x04\\x03\\x07\\x0e\\x01\\x03\\x0a\\x13\\x18\" +\n\t\"\\x03\\x0a-\\x0c\\x03\\x0a?\\x0d\\x03\\x0a\\x09\\x0a\\x03\\x091&\\x03\\x0a/\\x0b\\x03\" +\n\t\"\\x08$<\\x03\\x083\\x1d\\x03\\x08\\x0c$\\x03\\x08\\x0d\\x07\\x03\\x08\\x0d?\\x03\\x08\" +\n\t\"\\x0e\\x14\\x03\\x065\\x0a\\x03\\x08\\x1a#\\x03\\x08\\x16#\\x03\\x0702\\x03\\x07\\x03\" +\n\t\"\\x1a\\x03\\x06(\\x1d\\x03\\x06+\\x1b\\x03\\x06\\x0b\\x05\\x03\\x06\\x0b\\x17\\x03\\x06\" +\n\t\"\\x0c\\x04\\x03\\x06\\x1e\\x19\\x03\\x06+0\\x03\\x062\\x18\\x03\\x0b\\x16\\x1e\\x03\\x0a+\" +\n\t\"\\x16\\x03\\x0a-?\\x03\\x0a#:\\x03\\x0a#\\x10\\x03\\x0a%$\\x03\\x0a>+\\x03\\x0a01\\x03\" +\n\t\"\\x0a1\\x10\\x03\\x0a\\x099\\x03\\x0a\\x0a\\x12\\x03\\x0a\\x19\\x1f\\x03\\x0a\\x19\\x12\" +\n\t\"\\x03\\x09*)\\x03\\x09-\\x16\\x03\\x09.1\\x03\\x09.2\\x03\\x09<\\x0e\\x03\\x09> \\x03\" +\n\t\"\\x093\\x12\\x03\\x09\\x0b\\x01\\x03\\x09\\x1c2\\x03\\x09\\x11\\x1c\\x03\\x09\\x15%\\x03\" +\n\t\"\\x08,&\\x03\\x08!\\x22\\x03\\x089(\\x03\\x08\\x0b\\x1a\\x03\\x08\\x0d2\\x03\\x08\\x0c\" +\n\t\"\\x04\\x03\\x08\\x0c\\x06\\x03\\x08\\x0c\\x1f\\x03\\x08\\x0c\\x0c\\x03\\x08\\x0f\\x1f\\x03\" +\n\t\"\\x08\\x0f\\x1d\\x03\\x08\\x00\\x14\\x03\\x08\\x03\\x14\\x03\\x08\\x06\\x16\\x03\\x08\\x1e\" +\n\t\"#\\x03\\x08\\x11\\x11\\x03\\x08\\x10\\x18\\x03\\x08\\x14(\\x03\\x07)\\x1e\\x03\\x07.1\" +\n\t\"\\x03\\x07 $\\x03\\x07 '\\x03\\x078\\x08\\x03\\x07\\x0d0\\x03\\x07\\x0f7\\x03\\x07\\x05#\" +\n\t\"\\x03\\x07\\x05\\x1a\\x03\\x07\\x1a7\\x03\\x07\\x1d-\\x03\\x07\\x17\\x10\\x03\\x06)\\x1f\" +\n\t\"\\x03\\x062\\x0b\\x03\\x066\\x16\\x03\\x06\\x09\\x11\\x03\\x09(\\x1e\\x03\\x07!5\\x03\" +\n\t\"\\x0b\\x11\\x16\\x03\\x0a/\\x04\\x03\\x0a,\\x1a\\x03\\x0b\\x173\\x03\\x0a,1\\x03\\x0a/5\" +\n\t\"\\x03\\x0a\\x221\\x03\\x0a\\x22\\x0d\\x03\\x0a?%\\x03\\x0a<,\\x03\\x0a?#\\x03\\x0a>\\x19\" +\n\t\"\\x03\\x0a\\x08&\\x03\\x0a\\x0b\\x0e\\x03\\x0a\\x0c:\\x03\\x0a\\x0c+\\x03\\x0a\\x03\\x22\" +\n\t\"\\x03\\x0a\\x06)\\x03\\x0a\\x11\\x10\\x03\\x0a\\x11\\x1a\\x03\\x0a\\x17-\\x03\\x0a\\x14(\" +\n\t\"\\x03\\x09)\\x1e\\x03\\x09/\\x09\\x03\\x09.\\x00\\x03\\x09,\\x07\\x03\\x09/*\\x03\\x09-9\" +\n\t\"\\x03\\x09\\x228\\x03\\x09%\\x09\\x03\\x09:\\x12\\x03\\x09;\\x1d\\x03\\x09?\\x06\\x03\" +\n\t\"\\x093%\\x03\\x096\\x05\\x03\\x096\\x08\\x03\\x097\\x02\\x03\\x09\\x07,\\x03\\x09\\x04,\" +\n\t\"\\x03\\x09\\x1f\\x16\\x03\\x09\\x11\\x03\\x03\\x09\\x11\\x12\\x03\\x09\\x168\\x03\\x08*\" +\n\t\"\\x05\\x03\\x08/2\\x03\\x084:\\x03\\x08\\x22+\\x03\\x08 0\\x03\\x08&\\x0a\\x03\\x08;\" +\n\t\"\\x10\\x03\\x08>$\\x03\\x08>\\x18\\x03\\x0829\\x03\\x082:\\x03\\x081,\\x03\\x081<\\x03\" +\n\t\"\\x081\\x1c\\x03\\x087#\\x03\\x087*\\x03\\x08\\x09'\\x03\\x08\\x00\\x1d\\x03\\x08\\x05-\" +\n\t\"\\x03\\x08\\x1f4\\x03\\x08\\x1d\\x04\\x03\\x08\\x16\\x0f\\x03\\x07*7\\x03\\x07'!\\x03\" +\n\t\"\\x07%\\x1b\\x03\\x077\\x0c\\x03\\x07\\x0c1\\x03\\x07\\x0c.\\x03\\x07\\x00\\x06\\x03\\x07\" +\n\t\"\\x01\\x02\\x03\\x07\\x010\\x03\\x07\\x06=\\x03\\x07\\x01\\x03\\x03\\x07\\x01\\x13\\x03\" +\n\t\"\\x07\\x06\\x06\\x03\\x07\\x05\\x0a\\x03\\x07\\x1f\\x09\\x03\\x07\\x17:\\x03\\x06*1\\x03\" +\n\t\"\\x06-\\x1d\\x03\\x06\\x223\\x03\\x062:\\x03\\x060$\\x03\\x066\\x1e\\x03\\x064\\x12\\x03\" +\n\t\"\\x0645\\x03\\x06\\x0b\\x00\\x03\\x06\\x0b7\\x03\\x06\\x07\\x1f\\x03\\x06\\x15\\x12\\x03\" +\n\t\"\\x0c\\x05\\x0f\\x03\\x0b+\\x0b\\x03\\x0b+-\\x03\\x06\\x16\\x1b\\x03\\x06\\x15\\x17\\x03\" +\n\t\"\\x89\\xca\\xea\\x03\\x89\\xca\\xe8\\x03\\x0c8\\x10\\x03\\x0c8\\x01\\x03\\x0c8\\x0f\\x03\" +\n\t\"\\x0d8%\\x03\\x0d8!\\x03\\x0c8-\\x03\\x0c8/\\x03\\x0c8+\\x03\\x0c87\\x03\\x0c85\\x03\" +\n\t\"\\x0c9\\x09\\x03\\x0c9\\x0d\\x03\\x0c9\\x0f\\x03\\x0c9\\x0b\\x03\\xcfu\\x0c\\x03\\xcfu\" +\n\t\"\\x0f\\x03\\xcfu\\x0e\\x03\\xcfu\\x09\\x03\\x0c9\\x10\\x03\\x0d9\\x0c\\x03\\xcf`;\\x03\" +\n\t\"\\xcf`>\\x03\\xcf`9\\x03\\xcf`8\\x03\\xcf`7\\x03\\xcf`*\\x03\\xcf`-\\x03\\xcf`,\\x03\" +\n\t\"\\x0d\\x1b\\x1a\\x03\\x0d\\x1b&\\x03\\x0c=.\\x03\\x0c=%\\x03\\x0c>\\x1e\\x03\\x0c>\\x14\" +\n\t\"\\x03\\x0c?\\x06\\x03\\x0c?\\x0b\\x03\\x0c?\\x0c\\x03\\x0c?\\x0d\\x03\\x0c?\\x02\\x03\" +\n\t\"\\x0c>\\x0f\\x03\\x0c>\\x08\\x03\\x0c>\\x09\\x03\\x0c>,\\x03\\x0c>\\x0c\\x03\\x0c?\\x13\" +\n\t\"\\x03\\x0c?\\x16\\x03\\x0c?\\x15\\x03\\x0c?\\x1c\\x03\\x0c?\\x1f\\x03\\x0c?\\x1d\\x03\" +\n\t\"\\x0c?\\x1a\\x03\\x0c?\\x17\\x03\\x0c?\\x08\\x03\\x0c?\\x09\\x03\\x0c?\\x0e\\x03\\x0c?\" +\n\t\"\\x04\\x03\\x0c?\\x05\\x03\\x0c<?\\x03\\x0c=\\x00\\x03\\x0c=\\x06\\x03\\x0c=\\x05\\x03\" +\n\t\"\\x0c=\\x0c\\x03\\x0c=\\x0f\\x03\\x0c=\\x0d\\x03\\x0c=\\x0b\\x03\\x0c=\\x07\\x03\\x0c=\" +\n\t\"\\x19\\x03\\x0c=\\x15\\x03\\x0c=\\x11\\x03\\x0c=1\\x03\\x0c=3\\x03\\x0c=0\\x03\\x0c=>\" +\n\t\"\\x03\\x0c=2\\x03\\x0c=6\\x03\\x0c<\\x07\\x03\\x0c<\\x05\\x03\\x0e:!\\x03\\x0e:#\\x03\" +\n\t\"\\x0e8\\x09\\x03\\x0e:&\\x03\\x0e8\\x0b\\x03\\x0e:$\\x03\\x0e:,\\x03\\x0e8\\x1a\\x03\" +\n\t\"\\x0e8\\x1e\\x03\\x0e:*\\x03\\x0e:7\\x03\\x0e:5\\x03\\x0e:;\\x03\\x0e:\\x15\\x03\\x0e:<\" +\n\t\"\\x03\\x0e:4\\x03\\x0e:'\\x03\\x0e:-\\x03\\x0e:%\\x03\\x0e:?\\x03\\x0e:=\\x03\\x0e:)\" +\n\t\"\\x03\\x0e:/\\x03\\xcfs'\\x03\\x0d=\\x0f\\x03\\x0d+*\\x03\\x0d99\\x03\\x0d9;\\x03\\x0d9\" +\n\t\"?\\x03\\x0d)\\x0d\\x03\\x0d(%\\x02\\x01\\x18\\x02\\x01(\\x02\\x03'\\x02\\x03)\\x02\\x03+\" +\n\t\"\\x02\\x03/\\x02\\x03\\x19\\x02\\x03\\x1b\\x02\\x03\\x1f\\x03\\x0d\\x22\\x18\\x03\\x0d\" +\n\t\"\\x22\\x1a\\x03\\x0d\\x22'\\x03\\x0d\\x22/\\x03\\x0d\\x223\\x03\\x0d\\x22$\\x02\\x01\\x1e\" +\n\t\"\\x03\\x0f$!\\x03\\x0f87\\x03\\x0f4\\x0e\\x03\\x0f5\\x1d\\x03\\x06'\\x03\\x03\\x0f\\x08\" +\n\t\"\\x18\\x03\\x0f\\x0d\\x1b\\x03\\x0e2=\\x03\\x0e;\\x08\\x03\\x0e:\\x0b\\x03\\x0e\\x06$\" +\n\t\"\\x03\\x0e\\x0d)\\x03\\x0e\\x16\\x1f\\x03\\x0e\\x16\\x1b\\x03\\x0d$\\x0a\\x03\\x05,\\x1d\" +\n\t\"\\x03\\x0d. \\x03\\x0d.#\\x03\\x0c(/\\x03\\x09%\\x02\\x03\\x0d90\\x03\\x0d\\x0e4\\x03\" +\n\t\"\\x0d\\x0d\\x0f\\x03\\x0c#\\x00\\x03\\x0c,\\x1e\\x03\\x0c2\\x0e\\x03\\x0c\\x01\\x17\\x03\" +\n\t\"\\x0c\\x09:\\x03\\x0e\\x173\\x03\\x0c\\x08\\x03\\x03\\x0c\\x11\\x07\\x03\\x0c\\x10\\x18\" +\n\t\"\\x03\\x0c\\x1f\\x1c\\x03\\x0c\\x19\\x0e\\x03\\x0c\\x1a\\x1f\\x03\\x0f0>\\x03\\x0b->\\x03\" +\n\t\"\\x0b<+\\x03\\x0b8\\x13\\x03\\x0b\\x043\\x03\\x0b\\x14\\x03\\x03\\x0b\\x16%\\x03\\x0d\" +\n\t\"\\x22&\\x03\\x0b\\x1a\\x1a\\x03\\x0b\\x1a\\x04\\x03\\x0a%9\\x03\\x0a&2\\x03\\x0a&0\\x03\" +\n\t\"\\x0a!\\x1a\\x03\\x0a!7\\x03\\x0a5\\x10\\x03\\x0a=4\\x03\\x0a?\\x0e\\x03\\x0a>\\x10\\x03\" +\n\t\"\\x0a\\x00 \\x03\\x0a\\x0f:\\x03\\x0a\\x0f9\\x03\\x0a\\x0b\\x0a\\x03\\x0a\\x17%\\x03\\x0a\" +\n\t\"\\x1b-\\x03\\x09-\\x1a\\x03\\x09,4\\x03\\x09.,\\x03\\x09)\\x09\\x03\\x096!\\x03\\x091\" +\n\t\"\\x1f\\x03\\x093\\x16\\x03\\x0c+\\x1f\\x03\\x098 \\x03\\x098=\\x03\\x0c(\\x1a\\x03\\x0c(\" +\n\t\"\\x16\\x03\\x09\\x0a+\\x03\\x09\\x16\\x12\\x03\\x09\\x13\\x0e\\x03\\x09\\x153\\x03\\x08)!\" +\n\t\"\\x03\\x09\\x1a\\x01\\x03\\x09\\x18\\x01\\x03\\x08%#\\x03\\x08>\\x22\\x03\\x08\\x05%\\x03\" +\n\t\"\\x08\\x02*\\x03\\x08\\x15;\\x03\\x08\\x1b7\\x03\\x0f\\x07\\x1d\\x03\\x0f\\x04\\x03\\x03\" +\n\t\"\\x070\\x0c\\x03\\x07;\\x0b\\x03\\x07\\x08\\x17\\x03\\x07\\x12\\x06\\x03\\x06/-\\x03\\x06\" +\n\t\"71\\x03\\x065+\\x03\\x06>7\\x03\\x06\\x049\\x03\\x05+\\x1e\\x03\\x05,\\x17\\x03\\x05 \" +\n\t\"\\x1d\\x03\\x05\\x22\\x05\\x03\\x050\\x1d\"\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// idnaTrie. Total size: 31598 bytes (30.86 KiB). Checksum: d3118eda0d6b5360.\ntype idnaTrie struct{}\n\nfunc newIdnaTrie(i int) *idnaTrie {\n\treturn &idnaTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 133:\n\t\treturn uint16(idnaValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 133\n\t\treturn uint16(idnaSparse.lookup(n, b))\n\t}\n}\n\n// idnaValues: 135 blocks, 8640 entries, 17280 bytes\n// The third block is the zero block.\nvar idnaValues = [8640]uint16{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,\n\t0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,\n\t0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,\n\t0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,\n\t0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,\n\t0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,\n\t0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,\n\t0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,\n\t0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,\n\t0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,\n\t0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,\n\t0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,\n\t0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,\n\t0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,\n\t0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,\n\t0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,\n\t0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,\n\t0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,\n\t0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,\n\t0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,\n\t0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,\n\t0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,\n\t0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,\n\t0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,\n\t0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,\n\t0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,\n\t0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x0012, 0xe9: 0x0018,\n\t0xea: 0x0019, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x0022,\n\t0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0029, 0xf3: 0x0031, 0xf4: 0x003a, 0xf5: 0x0005,\n\t0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x0042, 0xf9: 0x0049, 0xfa: 0x0051, 0xfb: 0x0018,\n\t0xfc: 0x0059, 0xfd: 0x0061, 0xfe: 0x0069, 0xff: 0x0018,\n\t// Block 0x4, offset 0x100\n\t0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,\n\t0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,\n\t0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,\n\t0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,\n\t0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,\n\t0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,\n\t0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,\n\t0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,\n\t0x130: 0x0071, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,\n\t0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,\n\t0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0079,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x0079, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,\n\t0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x0081, 0x14a: 0xe00d, 0x14b: 0x0008,\n\t0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,\n\t0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,\n\t0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,\n\t0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,\n\t0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,\n\t0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,\n\t0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,\n\t0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,\n\t0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x0089,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,\n\t0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,\n\t0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,\n\t0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,\n\t0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,\n\t0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,\n\t0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,\n\t0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,\n\t0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,\n\t0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,\n\t0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x0091, 0x1c5: 0x0091,\n\t0x1c6: 0x0091, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,\n\t0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,\n\t0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,\n\t0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,\n\t0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,\n\t0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,\n\t0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,\n\t0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,\n\t0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,\n\t0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,\n\t0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,\n\t0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,\n\t0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,\n\t0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,\n\t0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,\n\t0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,\n\t0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,\n\t0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,\n\t0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0099, 0x23b: 0xe03d,\n\t0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x00a1, 0x23f: 0x0008,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,\n\t0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,\n\t0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,\n\t0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,\n\t0x258: 0x00d2, 0x259: 0x00da, 0x25a: 0x00e2, 0x25b: 0x00ea, 0x25c: 0x00f2, 0x25d: 0x00fa,\n\t0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0101, 0x262: 0x0089, 0x263: 0x0109,\n\t0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,\n\t0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,\n\t0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,\n\t0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,\n\t0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0111, 0x285: 0x040d,\n\t0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,\n\t0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,\n\t0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,\n\t0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,\n\t0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,\n\t0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,\n\t0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,\n\t0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,\n\t0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x011a, 0x2bb: 0x0008,\n\t0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x0122, 0x2bf: 0x043d,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x003a, 0x2c5: 0x012a,\n\t0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,\n\t0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,\n\t0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,\n\t0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,\n\t0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,\n\t0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,\n\t0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,\n\t0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,\n\t0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,\n\t0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,\n\t0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,\n\t0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,\n\t0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,\n\t0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,\n\t0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,\n\t0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,\n\t0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,\n\t0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,\n\t0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,\n\t0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,\n\t0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,\n\t0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,\n\t0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,\n\t0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,\n\t0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,\n\t0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,\n\t0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,\n\t0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,\n\t0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,\n\t0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,\n\t0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,\n\t0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,\n\t0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,\n\t0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,\n\t0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,\n\t0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,\n\t0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,\n\t0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,\n\t0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,\n\t0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,\n\t0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,\n\t0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,\n\t0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,\n\t0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,\n\t0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,\n\t0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,\n\t0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,\n\t0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,\n\t0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,\n\t0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,\n\t0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,\n\t0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,\n\t0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,\n\t0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,\n\t0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,\n\t0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,\n\t0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,\n\t0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,\n\t0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,\n\t0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,\n\t0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,\n\t0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,\n\t0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,\n\t0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0818,\n\t0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,\n\t0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,\n\t0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,\n\t0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,\n\t0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,\n\t0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,\n\t0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,\n\t0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,\n\t0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,\n\t0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,\n\t0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,\n\t0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,\n\t0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,\n\t0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0139,\n\t0x4b6: 0x0141, 0x4b7: 0x0149, 0x4b8: 0x0151, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,\n\t0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,\n\t0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,\n\t0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,\n\t0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,\n\t0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,\n\t0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,\n\t0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,\n\t0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,\n\t0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,\n\t0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,\n\t0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,\n\t0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,\n\t0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,\n\t0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,\n\t0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,\n\t0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,\n\t0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,\n\t0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,\n\t0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,\n\t0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,\n\t0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08,\n\t0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08,\n\t0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08,\n\t0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0c08, 0x557: 0x0c08,\n\t0x558: 0x0c08, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040,\n\t0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08,\n\t0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08,\n\t0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040,\n\t0x570: 0x0c08, 0x571: 0x0c08, 0x572: 0x0c08, 0x573: 0x0c08, 0x574: 0x0c08, 0x575: 0x0c08,\n\t0x576: 0x0c08, 0x577: 0x0c08, 0x578: 0x0c08, 0x579: 0x0c08, 0x57a: 0x0c08, 0x57b: 0x0c08,\n\t0x57c: 0x0c08, 0x57d: 0x0c08, 0x57e: 0x0c08, 0x57f: 0x0c08,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0c08, 0x581: 0x0c08, 0x582: 0x0c08, 0x583: 0x0808, 0x584: 0x0808, 0x585: 0x0808,\n\t0x586: 0x0a08, 0x587: 0x0808, 0x588: 0x0818, 0x589: 0x0a08, 0x58a: 0x0a08, 0x58b: 0x0a08,\n\t0x58c: 0x0a08, 0x58d: 0x0a08, 0x58e: 0x0c08, 0x58f: 0x0040, 0x590: 0x0840, 0x591: 0x0840,\n\t0x592: 0x0040, 0x593: 0x0040, 0x594: 0x0040, 0x595: 0x0040, 0x596: 0x0040, 0x597: 0x0040,\n\t0x598: 0x3308, 0x599: 0x3308, 0x59a: 0x3308, 0x59b: 0x3308, 0x59c: 0x3308, 0x59d: 0x3308,\n\t0x59e: 0x3308, 0x59f: 0x3308, 0x5a0: 0x0a08, 0x5a1: 0x0a08, 0x5a2: 0x0a08, 0x5a3: 0x0a08,\n\t0x5a4: 0x0a08, 0x5a5: 0x0a08, 0x5a6: 0x0a08, 0x5a7: 0x0a08, 0x5a8: 0x0a08, 0x5a9: 0x0a08,\n\t0x5aa: 0x0c08, 0x5ab: 0x0c08, 0x5ac: 0x0c08, 0x5ad: 0x0808, 0x5ae: 0x0c08, 0x5af: 0x0a08,\n\t0x5b0: 0x0a08, 0x5b1: 0x0c08, 0x5b2: 0x0c08, 0x5b3: 0x0a08, 0x5b4: 0x0a08, 0x5b5: 0x0a08,\n\t0x5b6: 0x0a08, 0x5b7: 0x0a08, 0x5b8: 0x0a08, 0x5b9: 0x0c08, 0x5ba: 0x0a08, 0x5bb: 0x0a08,\n\t0x5bc: 0x0a08, 0x5bd: 0x0a08, 0x5be: 0x0a08, 0x5bf: 0x0a08,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x3008, 0x5c1: 0x3308, 0x5c2: 0x3308, 0x5c3: 0x3308, 0x5c4: 0x3308, 0x5c5: 0x3308,\n\t0x5c6: 0x3308, 0x5c7: 0x3308, 0x5c8: 0x3308, 0x5c9: 0x3008, 0x5ca: 0x3008, 0x5cb: 0x3008,\n\t0x5cc: 0x3008, 0x5cd: 0x3b08, 0x5ce: 0x3008, 0x5cf: 0x3008, 0x5d0: 0x0008, 0x5d1: 0x3308,\n\t0x5d2: 0x3308, 0x5d3: 0x3308, 0x5d4: 0x3308, 0x5d5: 0x3308, 0x5d6: 0x3308, 0x5d7: 0x3308,\n\t0x5d8: 0x0159, 0x5d9: 0x0161, 0x5da: 0x0169, 0x5db: 0x0171, 0x5dc: 0x0179, 0x5dd: 0x0181,\n\t0x5de: 0x0189, 0x5df: 0x0191, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x3308, 0x5e3: 0x3308,\n\t0x5e4: 0x0018, 0x5e5: 0x0018, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0008,\n\t0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,\n\t0x5f0: 0x0018, 0x5f1: 0x0008, 0x5f2: 0x0008, 0x5f3: 0x0008, 0x5f4: 0x0008, 0x5f5: 0x0008,\n\t0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0008, 0x5fb: 0x0008,\n\t0x5fc: 0x0008, 0x5fd: 0x0008, 0x5fe: 0x0008, 0x5ff: 0x0008,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x0008, 0x601: 0x3308, 0x602: 0x3008, 0x603: 0x3008, 0x604: 0x0040, 0x605: 0x0008,\n\t0x606: 0x0008, 0x607: 0x0008, 0x608: 0x0008, 0x609: 0x0008, 0x60a: 0x0008, 0x60b: 0x0008,\n\t0x60c: 0x0008, 0x60d: 0x0040, 0x60e: 0x0040, 0x60f: 0x0008, 0x610: 0x0008, 0x611: 0x0040,\n\t0x612: 0x0040, 0x613: 0x0008, 0x614: 0x0008, 0x615: 0x0008, 0x616: 0x0008, 0x617: 0x0008,\n\t0x618: 0x0008, 0x619: 0x0008, 0x61a: 0x0008, 0x61b: 0x0008, 0x61c: 0x0008, 0x61d: 0x0008,\n\t0x61e: 0x0008, 0x61f: 0x0008, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x0008, 0x623: 0x0008,\n\t0x624: 0x0008, 0x625: 0x0008, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0040,\n\t0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,\n\t0x630: 0x0008, 0x631: 0x0040, 0x632: 0x0008, 0x633: 0x0040, 0x634: 0x0040, 0x635: 0x0040,\n\t0x636: 0x0008, 0x637: 0x0008, 0x638: 0x0008, 0x639: 0x0008, 0x63a: 0x0040, 0x63b: 0x0040,\n\t0x63c: 0x3308, 0x63d: 0x0008, 0x63e: 0x3008, 0x63f: 0x3008,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x3008, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3308, 0x644: 0x3308, 0x645: 0x0040,\n\t0x646: 0x0040, 0x647: 0x3008, 0x648: 0x3008, 0x649: 0x0040, 0x64a: 0x0040, 0x64b: 0x3008,\n\t0x64c: 0x3008, 0x64d: 0x3b08, 0x64e: 0x0008, 0x64f: 0x0040, 0x650: 0x0040, 0x651: 0x0040,\n\t0x652: 0x0040, 0x653: 0x0040, 0x654: 0x0040, 0x655: 0x0040, 0x656: 0x0040, 0x657: 0x3008,\n\t0x658: 0x0040, 0x659: 0x0040, 0x65a: 0x0040, 0x65b: 0x0040, 0x65c: 0x0199, 0x65d: 0x01a1,\n\t0x65e: 0x0040, 0x65f: 0x01a9, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x3308, 0x663: 0x3308,\n\t0x664: 0x0040, 0x665: 0x0040, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0008,\n\t0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,\n\t0x670: 0x0008, 0x671: 0x0008, 0x672: 0x0018, 0x673: 0x0018, 0x674: 0x0018, 0x675: 0x0018,\n\t0x676: 0x0018, 0x677: 0x0018, 0x678: 0x0018, 0x679: 0x0018, 0x67a: 0x0018, 0x67b: 0x0018,\n\t0x67c: 0x0008, 0x67d: 0x0018, 0x67e: 0x3308, 0x67f: 0x0040,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x0040, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x3008, 0x684: 0x0040, 0x685: 0x0008,\n\t0x686: 0x0008, 0x687: 0x0008, 0x688: 0x0008, 0x689: 0x0008, 0x68a: 0x0008, 0x68b: 0x0040,\n\t0x68c: 0x0040, 0x68d: 0x0040, 0x68e: 0x0040, 0x68f: 0x0008, 0x690: 0x0008, 0x691: 0x0040,\n\t0x692: 0x0040, 0x693: 0x0008, 0x694: 0x0008, 0x695: 0x0008, 0x696: 0x0008, 0x697: 0x0008,\n\t0x698: 0x0008, 0x699: 0x0008, 0x69a: 0x0008, 0x69b: 0x0008, 0x69c: 0x0008, 0x69d: 0x0008,\n\t0x69e: 0x0008, 0x69f: 0x0008, 0x6a0: 0x0008, 0x6a1: 0x0008, 0x6a2: 0x0008, 0x6a3: 0x0008,\n\t0x6a4: 0x0008, 0x6a5: 0x0008, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0040,\n\t0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,\n\t0x6b0: 0x0008, 0x6b1: 0x0040, 0x6b2: 0x0008, 0x6b3: 0x01b1, 0x6b4: 0x0040, 0x6b5: 0x0008,\n\t0x6b6: 0x01b9, 0x6b7: 0x0040, 0x6b8: 0x0008, 0x6b9: 0x0008, 0x6ba: 0x0040, 0x6bb: 0x0040,\n\t0x6bc: 0x3308, 0x6bd: 0x0040, 0x6be: 0x3008, 0x6bf: 0x3008,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3008, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x0040, 0x6c4: 0x0040, 0x6c5: 0x0040,\n\t0x6c6: 0x0040, 0x6c7: 0x3308, 0x6c8: 0x3308, 0x6c9: 0x0040, 0x6ca: 0x0040, 0x6cb: 0x3308,\n\t0x6cc: 0x3308, 0x6cd: 0x3b08, 0x6ce: 0x0040, 0x6cf: 0x0040, 0x6d0: 0x0040, 0x6d1: 0x3308,\n\t0x6d2: 0x0040, 0x6d3: 0x0040, 0x6d4: 0x0040, 0x6d5: 0x0040, 0x6d6: 0x0040, 0x6d7: 0x0040,\n\t0x6d8: 0x0040, 0x6d9: 0x01c1, 0x6da: 0x01c9, 0x6db: 0x01d1, 0x6dc: 0x0008, 0x6dd: 0x0040,\n\t0x6de: 0x01d9, 0x6df: 0x0040, 0x6e0: 0x0040, 0x6e1: 0x0040, 0x6e2: 0x0040, 0x6e3: 0x0040,\n\t0x6e4: 0x0040, 0x6e5: 0x0040, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0008,\n\t0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,\n\t0x6f0: 0x3308, 0x6f1: 0x3308, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0008, 0x6f5: 0x3308,\n\t0x6f6: 0x0018, 0x6f7: 0x0040, 0x6f8: 0x0040, 0x6f9: 0x0040, 0x6fa: 0x0040, 0x6fb: 0x0040,\n\t0x6fc: 0x0040, 0x6fd: 0x0040, 0x6fe: 0x0040, 0x6ff: 0x0040,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x0040, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3008, 0x704: 0x0040, 0x705: 0x0008,\n\t0x706: 0x0008, 0x707: 0x0008, 0x708: 0x0008, 0x709: 0x0008, 0x70a: 0x0008, 0x70b: 0x0008,\n\t0x70c: 0x0008, 0x70d: 0x0008, 0x70e: 0x0040, 0x70f: 0x0008, 0x710: 0x0008, 0x711: 0x0008,\n\t0x712: 0x0040, 0x713: 0x0008, 0x714: 0x0008, 0x715: 0x0008, 0x716: 0x0008, 0x717: 0x0008,\n\t0x718: 0x0008, 0x719: 0x0008, 0x71a: 0x0008, 0x71b: 0x0008, 0x71c: 0x0008, 0x71d: 0x0008,\n\t0x71e: 0x0008, 0x71f: 0x0008, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x0008, 0x723: 0x0008,\n\t0x724: 0x0008, 0x725: 0x0008, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0040,\n\t0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,\n\t0x730: 0x0008, 0x731: 0x0040, 0x732: 0x0008, 0x733: 0x0008, 0x734: 0x0040, 0x735: 0x0008,\n\t0x736: 0x0008, 0x737: 0x0008, 0x738: 0x0008, 0x739: 0x0008, 0x73a: 0x0040, 0x73b: 0x0040,\n\t0x73c: 0x3308, 0x73d: 0x0008, 0x73e: 0x3008, 0x73f: 0x3008,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x3008, 0x741: 0x3308, 0x742: 0x3308, 0x743: 0x3308, 0x744: 0x3308, 0x745: 0x3308,\n\t0x746: 0x0040, 0x747: 0x3308, 0x748: 0x3308, 0x749: 0x3008, 0x74a: 0x0040, 0x74b: 0x3008,\n\t0x74c: 0x3008, 0x74d: 0x3b08, 0x74e: 0x0040, 0x74f: 0x0040, 0x750: 0x0008, 0x751: 0x0040,\n\t0x752: 0x0040, 0x753: 0x0040, 0x754: 0x0040, 0x755: 0x0040, 0x756: 0x0040, 0x757: 0x0040,\n\t0x758: 0x0040, 0x759: 0x0040, 0x75a: 0x0040, 0x75b: 0x0040, 0x75c: 0x0040, 0x75d: 0x0040,\n\t0x75e: 0x0040, 0x75f: 0x0040, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x3308, 0x763: 0x3308,\n\t0x764: 0x0040, 0x765: 0x0040, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0008,\n\t0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,\n\t0x770: 0x0018, 0x771: 0x0018, 0x772: 0x0040, 0x773: 0x0040, 0x774: 0x0040, 0x775: 0x0040,\n\t0x776: 0x0040, 0x777: 0x0040, 0x778: 0x0040, 0x779: 0x0008, 0x77a: 0x3308, 0x77b: 0x3308,\n\t0x77c: 0x3308, 0x77d: 0x3308, 0x77e: 0x3308, 0x77f: 0x3308,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x0040, 0x781: 0x3308, 0x782: 0x3008, 0x783: 0x3008, 0x784: 0x0040, 0x785: 0x0008,\n\t0x786: 0x0008, 0x787: 0x0008, 0x788: 0x0008, 0x789: 0x0008, 0x78a: 0x0008, 0x78b: 0x0008,\n\t0x78c: 0x0008, 0x78d: 0x0040, 0x78e: 0x0040, 0x78f: 0x0008, 0x790: 0x0008, 0x791: 0x0040,\n\t0x792: 0x0040, 0x793: 0x0008, 0x794: 0x0008, 0x795: 0x0008, 0x796: 0x0008, 0x797: 0x0008,\n\t0x798: 0x0008, 0x799: 0x0008, 0x79a: 0x0008, 0x79b: 0x0008, 0x79c: 0x0008, 0x79d: 0x0008,\n\t0x79e: 0x0008, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x0008, 0x7a3: 0x0008,\n\t0x7a4: 0x0008, 0x7a5: 0x0008, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0040,\n\t0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008,\n\t0x7b0: 0x0008, 0x7b1: 0x0040, 0x7b2: 0x0008, 0x7b3: 0x0008, 0x7b4: 0x0040, 0x7b5: 0x0008,\n\t0x7b6: 0x0008, 0x7b7: 0x0008, 0x7b8: 0x0008, 0x7b9: 0x0008, 0x7ba: 0x0040, 0x7bb: 0x0040,\n\t0x7bc: 0x3308, 0x7bd: 0x0008, 0x7be: 0x3008, 0x7bf: 0x3308,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x3008, 0x7c1: 0x3308, 0x7c2: 0x3308, 0x7c3: 0x3308, 0x7c4: 0x3308, 0x7c5: 0x0040,\n\t0x7c6: 0x0040, 0x7c7: 0x3008, 0x7c8: 0x3008, 0x7c9: 0x0040, 0x7ca: 0x0040, 0x7cb: 0x3008,\n\t0x7cc: 0x3008, 0x7cd: 0x3b08, 0x7ce: 0x0040, 0x7cf: 0x0040, 0x7d0: 0x0040, 0x7d1: 0x0040,\n\t0x7d2: 0x0040, 0x7d3: 0x0040, 0x7d4: 0x0040, 0x7d5: 0x3308, 0x7d6: 0x3308, 0x7d7: 0x3008,\n\t0x7d8: 0x0040, 0x7d9: 0x0040, 0x7da: 0x0040, 0x7db: 0x0040, 0x7dc: 0x01e1, 0x7dd: 0x01e9,\n\t0x7de: 0x0040, 0x7df: 0x0008, 0x7e0: 0x0008, 0x7e1: 0x0008, 0x7e2: 0x3308, 0x7e3: 0x3308,\n\t0x7e4: 0x0040, 0x7e5: 0x0040, 0x7e6: 0x0008, 0x7e7: 0x0008, 0x7e8: 0x0008, 0x7e9: 0x0008,\n\t0x7ea: 0x0008, 0x7eb: 0x0008, 0x7ec: 0x0008, 0x7ed: 0x0008, 0x7ee: 0x0008, 0x7ef: 0x0008,\n\t0x7f0: 0x0018, 0x7f1: 0x0008, 0x7f2: 0x0018, 0x7f3: 0x0018, 0x7f4: 0x0018, 0x7f5: 0x0018,\n\t0x7f6: 0x0018, 0x7f7: 0x0018, 0x7f8: 0x0040, 0x7f9: 0x0040, 0x7fa: 0x0040, 0x7fb: 0x0040,\n\t0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x0040, 0x7ff: 0x0040,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x0040, 0x801: 0x0040, 0x802: 0x3308, 0x803: 0x0008, 0x804: 0x0040, 0x805: 0x0008,\n\t0x806: 0x0008, 0x807: 0x0008, 0x808: 0x0008, 0x809: 0x0008, 0x80a: 0x0008, 0x80b: 0x0040,\n\t0x80c: 0x0040, 0x80d: 0x0040, 0x80e: 0x0008, 0x80f: 0x0008, 0x810: 0x0008, 0x811: 0x0040,\n\t0x812: 0x0008, 0x813: 0x0008, 0x814: 0x0008, 0x815: 0x0008, 0x816: 0x0040, 0x817: 0x0040,\n\t0x818: 0x0040, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0008, 0x81d: 0x0040,\n\t0x81e: 0x0008, 0x81f: 0x0008, 0x820: 0x0040, 0x821: 0x0040, 0x822: 0x0040, 0x823: 0x0008,\n\t0x824: 0x0008, 0x825: 0x0040, 0x826: 0x0040, 0x827: 0x0040, 0x828: 0x0008, 0x829: 0x0008,\n\t0x82a: 0x0008, 0x82b: 0x0040, 0x82c: 0x0040, 0x82d: 0x0040, 0x82e: 0x0008, 0x82f: 0x0008,\n\t0x830: 0x0008, 0x831: 0x0008, 0x832: 0x0008, 0x833: 0x0008, 0x834: 0x0008, 0x835: 0x0008,\n\t0x836: 0x0008, 0x837: 0x0008, 0x838: 0x0008, 0x839: 0x0008, 0x83a: 0x0040, 0x83b: 0x0040,\n\t0x83c: 0x0040, 0x83d: 0x0040, 0x83e: 0x3008, 0x83f: 0x3008,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x3308, 0x841: 0x3008, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x3008, 0x845: 0x0040,\n\t0x846: 0x3308, 0x847: 0x3308, 0x848: 0x3308, 0x849: 0x0040, 0x84a: 0x3308, 0x84b: 0x3308,\n\t0x84c: 0x3308, 0x84d: 0x3b08, 0x84e: 0x0040, 0x84f: 0x0040, 0x850: 0x0040, 0x851: 0x0040,\n\t0x852: 0x0040, 0x853: 0x0040, 0x854: 0x0040, 0x855: 0x3308, 0x856: 0x3308, 0x857: 0x0040,\n\t0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0040, 0x85c: 0x0040, 0x85d: 0x0008,\n\t0x85e: 0x0040, 0x85f: 0x0040, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x3308, 0x863: 0x3308,\n\t0x864: 0x0040, 0x865: 0x0040, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0008,\n\t0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,\n\t0x870: 0x0040, 0x871: 0x0040, 0x872: 0x0040, 0x873: 0x0040, 0x874: 0x0040, 0x875: 0x0040,\n\t0x876: 0x0040, 0x877: 0x0018, 0x878: 0x0018, 0x879: 0x0018, 0x87a: 0x0018, 0x87b: 0x0018,\n\t0x87c: 0x0018, 0x87d: 0x0018, 0x87e: 0x0018, 0x87f: 0x0018,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0008, 0x881: 0x3308, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x0018, 0x885: 0x0008,\n\t0x886: 0x0008, 0x887: 0x0008, 0x888: 0x0008, 0x889: 0x0008, 0x88a: 0x0008, 0x88b: 0x0008,\n\t0x88c: 0x0008, 0x88d: 0x0040, 0x88e: 0x0008, 0x88f: 0x0008, 0x890: 0x0008, 0x891: 0x0040,\n\t0x892: 0x0008, 0x893: 0x0008, 0x894: 0x0008, 0x895: 0x0008, 0x896: 0x0008, 0x897: 0x0008,\n\t0x898: 0x0008, 0x899: 0x0008, 0x89a: 0x0008, 0x89b: 0x0008, 0x89c: 0x0008, 0x89d: 0x0008,\n\t0x89e: 0x0008, 0x89f: 0x0008, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x0008, 0x8a3: 0x0008,\n\t0x8a4: 0x0008, 0x8a5: 0x0008, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0040,\n\t0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,\n\t0x8b0: 0x0008, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0008, 0x8b4: 0x0040, 0x8b5: 0x0008,\n\t0x8b6: 0x0008, 0x8b7: 0x0008, 0x8b8: 0x0008, 0x8b9: 0x0008, 0x8ba: 0x0040, 0x8bb: 0x0040,\n\t0x8bc: 0x3308, 0x8bd: 0x0008, 0x8be: 0x3008, 0x8bf: 0x3308,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x3008, 0x8c1: 0x3008, 0x8c2: 0x3008, 0x8c3: 0x3008, 0x8c4: 0x3008, 0x8c5: 0x0040,\n\t0x8c6: 0x3308, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008,\n\t0x8cc: 0x3308, 0x8cd: 0x3b08, 0x8ce: 0x0040, 0x8cf: 0x0040, 0x8d0: 0x0040, 0x8d1: 0x0040,\n\t0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0040, 0x8d5: 0x3008, 0x8d6: 0x3008, 0x8d7: 0x0040,\n\t0x8d8: 0x0040, 0x8d9: 0x0040, 0x8da: 0x0040, 0x8db: 0x0040, 0x8dc: 0x0040, 0x8dd: 0x0008,\n\t0x8de: 0x0008, 0x8df: 0x0040, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308,\n\t0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008,\n\t0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,\n\t0x8f0: 0x0040, 0x8f1: 0x0008, 0x8f2: 0x0008, 0x8f3: 0x3008, 0x8f4: 0x0040, 0x8f5: 0x0040,\n\t0x8f6: 0x0040, 0x8f7: 0x0040, 0x8f8: 0x0040, 0x8f9: 0x0040, 0x8fa: 0x0040, 0x8fb: 0x0040,\n\t0x8fc: 0x0040, 0x8fd: 0x0040, 0x8fe: 0x0040, 0x8ff: 0x0040,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x3008, 0x901: 0x3308, 0x902: 0x3308, 0x903: 0x3308, 0x904: 0x3308, 0x905: 0x0040,\n\t0x906: 0x3008, 0x907: 0x3008, 0x908: 0x3008, 0x909: 0x0040, 0x90a: 0x3008, 0x90b: 0x3008,\n\t0x90c: 0x3008, 0x90d: 0x3b08, 0x90e: 0x0008, 0x90f: 0x0018, 0x910: 0x0040, 0x911: 0x0040,\n\t0x912: 0x0040, 0x913: 0x0040, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x3008,\n\t0x918: 0x0018, 0x919: 0x0018, 0x91a: 0x0018, 0x91b: 0x0018, 0x91c: 0x0018, 0x91d: 0x0018,\n\t0x91e: 0x0018, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x3308, 0x923: 0x3308,\n\t0x924: 0x0040, 0x925: 0x0040, 0x926: 0x0008, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0008,\n\t0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008,\n\t0x930: 0x0018, 0x931: 0x0018, 0x932: 0x0018, 0x933: 0x0018, 0x934: 0x0018, 0x935: 0x0018,\n\t0x936: 0x0018, 0x937: 0x0018, 0x938: 0x0018, 0x939: 0x0018, 0x93a: 0x0008, 0x93b: 0x0008,\n\t0x93c: 0x0008, 0x93d: 0x0008, 0x93e: 0x0008, 0x93f: 0x0008,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0040, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x0040, 0x944: 0x0008, 0x945: 0x0040,\n\t0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0008, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0040,\n\t0x94c: 0x0008, 0x94d: 0x0008, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008,\n\t0x952: 0x0008, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0008,\n\t0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0008, 0x95d: 0x0008,\n\t0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008,\n\t0x964: 0x0040, 0x965: 0x0008, 0x966: 0x0040, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0008,\n\t0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0008, 0x96e: 0x0008, 0x96f: 0x0008,\n\t0x970: 0x0008, 0x971: 0x3308, 0x972: 0x0008, 0x973: 0x01f9, 0x974: 0x3308, 0x975: 0x3308,\n\t0x976: 0x3308, 0x977: 0x3308, 0x978: 0x3308, 0x979: 0x3308, 0x97a: 0x3b08, 0x97b: 0x3308,\n\t0x97c: 0x3308, 0x97d: 0x0008, 0x97e: 0x0040, 0x97f: 0x0040,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x0008, 0x981: 0x0008, 0x982: 0x0008, 0x983: 0x0211, 0x984: 0x0008, 0x985: 0x0008,\n\t0x986: 0x0008, 0x987: 0x0008, 0x988: 0x0040, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,\n\t0x98c: 0x0008, 0x98d: 0x0219, 0x98e: 0x0008, 0x98f: 0x0008, 0x990: 0x0008, 0x991: 0x0008,\n\t0x992: 0x0221, 0x993: 0x0008, 0x994: 0x0008, 0x995: 0x0008, 0x996: 0x0008, 0x997: 0x0229,\n\t0x998: 0x0008, 0x999: 0x0008, 0x99a: 0x0008, 0x99b: 0x0008, 0x99c: 0x0231, 0x99d: 0x0008,\n\t0x99e: 0x0008, 0x99f: 0x0008, 0x9a0: 0x0008, 0x9a1: 0x0008, 0x9a2: 0x0008, 0x9a3: 0x0008,\n\t0x9a4: 0x0008, 0x9a5: 0x0008, 0x9a6: 0x0008, 0x9a7: 0x0008, 0x9a8: 0x0008, 0x9a9: 0x0239,\n\t0x9aa: 0x0008, 0x9ab: 0x0008, 0x9ac: 0x0008, 0x9ad: 0x0040, 0x9ae: 0x0040, 0x9af: 0x0040,\n\t0x9b0: 0x0040, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x0241, 0x9b4: 0x3308, 0x9b5: 0x0249,\n\t0x9b6: 0x0251, 0x9b7: 0x0259, 0x9b8: 0x0261, 0x9b9: 0x0269, 0x9ba: 0x3308, 0x9bb: 0x3308,\n\t0x9bc: 0x3308, 0x9bd: 0x3308, 0x9be: 0x3308, 0x9bf: 0x3008,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x3308, 0x9c1: 0x0271, 0x9c2: 0x3308, 0x9c3: 0x3308, 0x9c4: 0x3b08, 0x9c5: 0x0018,\n\t0x9c6: 0x3308, 0x9c7: 0x3308, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008,\n\t0x9cc: 0x0008, 0x9cd: 0x3308, 0x9ce: 0x3308, 0x9cf: 0x3308, 0x9d0: 0x3308, 0x9d1: 0x3308,\n\t0x9d2: 0x3308, 0x9d3: 0x0279, 0x9d4: 0x3308, 0x9d5: 0x3308, 0x9d6: 0x3308, 0x9d7: 0x3308,\n\t0x9d8: 0x0040, 0x9d9: 0x3308, 0x9da: 0x3308, 0x9db: 0x3308, 0x9dc: 0x3308, 0x9dd: 0x0281,\n\t0x9de: 0x3308, 0x9df: 0x3308, 0x9e0: 0x3308, 0x9e1: 0x3308, 0x9e2: 0x0289, 0x9e3: 0x3308,\n\t0x9e4: 0x3308, 0x9e5: 0x3308, 0x9e6: 0x3308, 0x9e7: 0x0291, 0x9e8: 0x3308, 0x9e9: 0x3308,\n\t0x9ea: 0x3308, 0x9eb: 0x3308, 0x9ec: 0x0299, 0x9ed: 0x3308, 0x9ee: 0x3308, 0x9ef: 0x3308,\n\t0x9f0: 0x3308, 0x9f1: 0x3308, 0x9f2: 0x3308, 0x9f3: 0x3308, 0x9f4: 0x3308, 0x9f5: 0x3308,\n\t0x9f6: 0x3308, 0x9f7: 0x3308, 0x9f8: 0x3308, 0x9f9: 0x02a1, 0x9fa: 0x3308, 0x9fb: 0x3308,\n\t0x9fc: 0x3308, 0x9fd: 0x0040, 0x9fe: 0x0018, 0x9ff: 0x0018,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0008, 0xa01: 0x0008, 0xa02: 0x0008, 0xa03: 0x0008, 0xa04: 0x0008, 0xa05: 0x0008,\n\t0xa06: 0x0008, 0xa07: 0x0008, 0xa08: 0x0008, 0xa09: 0x0008, 0xa0a: 0x0008, 0xa0b: 0x0008,\n\t0xa0c: 0x0008, 0xa0d: 0x0008, 0xa0e: 0x0008, 0xa0f: 0x0008, 0xa10: 0x0008, 0xa11: 0x0008,\n\t0xa12: 0x0008, 0xa13: 0x0008, 0xa14: 0x0008, 0xa15: 0x0008, 0xa16: 0x0008, 0xa17: 0x0008,\n\t0xa18: 0x0008, 0xa19: 0x0008, 0xa1a: 0x0008, 0xa1b: 0x0008, 0xa1c: 0x0008, 0xa1d: 0x0008,\n\t0xa1e: 0x0008, 0xa1f: 0x0008, 0xa20: 0x0008, 0xa21: 0x0008, 0xa22: 0x0008, 0xa23: 0x0008,\n\t0xa24: 0x0008, 0xa25: 0x0008, 0xa26: 0x0008, 0xa27: 0x0008, 0xa28: 0x0008, 0xa29: 0x0008,\n\t0xa2a: 0x0008, 0xa2b: 0x0008, 0xa2c: 0x0019, 0xa2d: 0x02e1, 0xa2e: 0x02e9, 0xa2f: 0x0008,\n\t0xa30: 0x02f1, 0xa31: 0x02f9, 0xa32: 0x0301, 0xa33: 0x0309, 0xa34: 0x00a9, 0xa35: 0x0311,\n\t0xa36: 0x00b1, 0xa37: 0x0319, 0xa38: 0x0101, 0xa39: 0x0321, 0xa3a: 0x0329, 0xa3b: 0x0008,\n\t0xa3c: 0x0051, 0xa3d: 0x0331, 0xa3e: 0x0339, 0xa3f: 0x00b9,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0341, 0xa41: 0x0349, 0xa42: 0x00c1, 0xa43: 0x0019, 0xa44: 0x0351, 0xa45: 0x0359,\n\t0xa46: 0x05b5, 0xa47: 0x02e9, 0xa48: 0x02f1, 0xa49: 0x02f9, 0xa4a: 0x0361, 0xa4b: 0x0369,\n\t0xa4c: 0x0371, 0xa4d: 0x0309, 0xa4e: 0x0008, 0xa4f: 0x0319, 0xa50: 0x0321, 0xa51: 0x0379,\n\t0xa52: 0x0051, 0xa53: 0x0381, 0xa54: 0x05cd, 0xa55: 0x05cd, 0xa56: 0x0339, 0xa57: 0x0341,\n\t0xa58: 0x0349, 0xa59: 0x05b5, 0xa5a: 0x0389, 0xa5b: 0x0391, 0xa5c: 0x05e5, 0xa5d: 0x0399,\n\t0xa5e: 0x03a1, 0xa5f: 0x03a9, 0xa60: 0x03b1, 0xa61: 0x03b9, 0xa62: 0x0311, 0xa63: 0x00b9,\n\t0xa64: 0x0349, 0xa65: 0x0391, 0xa66: 0x0399, 0xa67: 0x03a1, 0xa68: 0x03c1, 0xa69: 0x03b1,\n\t0xa6a: 0x03b9, 0xa6b: 0x0008, 0xa6c: 0x0008, 0xa6d: 0x0008, 0xa6e: 0x0008, 0xa6f: 0x0008,\n\t0xa70: 0x0008, 0xa71: 0x0008, 0xa72: 0x0008, 0xa73: 0x0008, 0xa74: 0x0008, 0xa75: 0x0008,\n\t0xa76: 0x0008, 0xa77: 0x0008, 0xa78: 0x03c9, 0xa79: 0x0008, 0xa7a: 0x0008, 0xa7b: 0x0008,\n\t0xa7c: 0x0008, 0xa7d: 0x0008, 0xa7e: 0x0008, 0xa7f: 0x0008,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x0008, 0xa81: 0x0008, 0xa82: 0x0008, 0xa83: 0x0008, 0xa84: 0x0008, 0xa85: 0x0008,\n\t0xa86: 0x0008, 0xa87: 0x0008, 0xa88: 0x0008, 0xa89: 0x0008, 0xa8a: 0x0008, 0xa8b: 0x0008,\n\t0xa8c: 0x0008, 0xa8d: 0x0008, 0xa8e: 0x0008, 0xa8f: 0x0008, 0xa90: 0x0008, 0xa91: 0x0008,\n\t0xa92: 0x0008, 0xa93: 0x0008, 0xa94: 0x0008, 0xa95: 0x0008, 0xa96: 0x0008, 0xa97: 0x0008,\n\t0xa98: 0x0008, 0xa99: 0x0008, 0xa9a: 0x0008, 0xa9b: 0x03d1, 0xa9c: 0x03d9, 0xa9d: 0x03e1,\n\t0xa9e: 0x03e9, 0xa9f: 0x0371, 0xaa0: 0x03f1, 0xaa1: 0x03f9, 0xaa2: 0x0401, 0xaa3: 0x0409,\n\t0xaa4: 0x0411, 0xaa5: 0x0419, 0xaa6: 0x0421, 0xaa7: 0x05fd, 0xaa8: 0x0429, 0xaa9: 0x0431,\n\t0xaaa: 0xe17d, 0xaab: 0x0439, 0xaac: 0x0441, 0xaad: 0x0449, 0xaae: 0x0451, 0xaaf: 0x0459,\n\t0xab0: 0x0461, 0xab1: 0x0469, 0xab2: 0x0471, 0xab3: 0x0479, 0xab4: 0x0481, 0xab5: 0x0489,\n\t0xab6: 0x0491, 0xab7: 0x0499, 0xab8: 0x0615, 0xab9: 0x04a1, 0xaba: 0x04a9, 0xabb: 0x04b1,\n\t0xabc: 0x04b9, 0xabd: 0x04c1, 0xabe: 0x04c9, 0xabf: 0x04d1,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008,\n\t0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008,\n\t0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008,\n\t0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0xe00d, 0xad7: 0x0008,\n\t0xad8: 0xe00d, 0xad9: 0x0008, 0xada: 0xe00d, 0xadb: 0x0008, 0xadc: 0xe00d, 0xadd: 0x0008,\n\t0xade: 0xe00d, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008,\n\t0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008,\n\t0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008,\n\t0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008,\n\t0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008,\n\t0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0xe00d, 0xb01: 0x0008, 0xb02: 0xe00d, 0xb03: 0x0008, 0xb04: 0xe00d, 0xb05: 0x0008,\n\t0xb06: 0xe00d, 0xb07: 0x0008, 0xb08: 0xe00d, 0xb09: 0x0008, 0xb0a: 0xe00d, 0xb0b: 0x0008,\n\t0xb0c: 0xe00d, 0xb0d: 0x0008, 0xb0e: 0xe00d, 0xb0f: 0x0008, 0xb10: 0xe00d, 0xb11: 0x0008,\n\t0xb12: 0xe00d, 0xb13: 0x0008, 0xb14: 0xe00d, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008,\n\t0xb18: 0x0008, 0xb19: 0x0008, 0xb1a: 0x062d, 0xb1b: 0x064d, 0xb1c: 0x0008, 0xb1d: 0x0008,\n\t0xb1e: 0x04d9, 0xb1f: 0x0008, 0xb20: 0xe00d, 0xb21: 0x0008, 0xb22: 0xe00d, 0xb23: 0x0008,\n\t0xb24: 0xe00d, 0xb25: 0x0008, 0xb26: 0xe00d, 0xb27: 0x0008, 0xb28: 0xe00d, 0xb29: 0x0008,\n\t0xb2a: 0xe00d, 0xb2b: 0x0008, 0xb2c: 0xe00d, 0xb2d: 0x0008, 0xb2e: 0xe00d, 0xb2f: 0x0008,\n\t0xb30: 0xe00d, 0xb31: 0x0008, 0xb32: 0xe00d, 0xb33: 0x0008, 0xb34: 0xe00d, 0xb35: 0x0008,\n\t0xb36: 0xe00d, 0xb37: 0x0008, 0xb38: 0xe00d, 0xb39: 0x0008, 0xb3a: 0xe00d, 0xb3b: 0x0008,\n\t0xb3c: 0xe00d, 0xb3d: 0x0008, 0xb3e: 0xe00d, 0xb3f: 0x0008,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x0008, 0xb41: 0x0008, 0xb42: 0x0008, 0xb43: 0x0008, 0xb44: 0x0008, 0xb45: 0x0008,\n\t0xb46: 0x0040, 0xb47: 0x0040, 0xb48: 0xe045, 0xb49: 0xe045, 0xb4a: 0xe045, 0xb4b: 0xe045,\n\t0xb4c: 0xe045, 0xb4d: 0xe045, 0xb4e: 0x0040, 0xb4f: 0x0040, 0xb50: 0x0008, 0xb51: 0x0008,\n\t0xb52: 0x0008, 0xb53: 0x0008, 0xb54: 0x0008, 0xb55: 0x0008, 0xb56: 0x0008, 0xb57: 0x0008,\n\t0xb58: 0x0040, 0xb59: 0xe045, 0xb5a: 0x0040, 0xb5b: 0xe045, 0xb5c: 0x0040, 0xb5d: 0xe045,\n\t0xb5e: 0x0040, 0xb5f: 0xe045, 0xb60: 0x0008, 0xb61: 0x0008, 0xb62: 0x0008, 0xb63: 0x0008,\n\t0xb64: 0x0008, 0xb65: 0x0008, 0xb66: 0x0008, 0xb67: 0x0008, 0xb68: 0xe045, 0xb69: 0xe045,\n\t0xb6a: 0xe045, 0xb6b: 0xe045, 0xb6c: 0xe045, 0xb6d: 0xe045, 0xb6e: 0xe045, 0xb6f: 0xe045,\n\t0xb70: 0x0008, 0xb71: 0x04e1, 0xb72: 0x0008, 0xb73: 0x04e9, 0xb74: 0x0008, 0xb75: 0x04f1,\n\t0xb76: 0x0008, 0xb77: 0x04f9, 0xb78: 0x0008, 0xb79: 0x0501, 0xb7a: 0x0008, 0xb7b: 0x0509,\n\t0xb7c: 0x0008, 0xb7d: 0x0511, 0xb7e: 0x0040, 0xb7f: 0x0040,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x0519, 0xb81: 0x0521, 0xb82: 0x0529, 0xb83: 0x0531, 0xb84: 0x0539, 0xb85: 0x0541,\n\t0xb86: 0x0549, 0xb87: 0x0551, 0xb88: 0x0519, 0xb89: 0x0521, 0xb8a: 0x0529, 0xb8b: 0x0531,\n\t0xb8c: 0x0539, 0xb8d: 0x0541, 0xb8e: 0x0549, 0xb8f: 0x0551, 0xb90: 0x0559, 0xb91: 0x0561,\n\t0xb92: 0x0569, 0xb93: 0x0571, 0xb94: 0x0579, 0xb95: 0x0581, 0xb96: 0x0589, 0xb97: 0x0591,\n\t0xb98: 0x0559, 0xb99: 0x0561, 0xb9a: 0x0569, 0xb9b: 0x0571, 0xb9c: 0x0579, 0xb9d: 0x0581,\n\t0xb9e: 0x0589, 0xb9f: 0x0591, 0xba0: 0x0599, 0xba1: 0x05a1, 0xba2: 0x05a9, 0xba3: 0x05b1,\n\t0xba4: 0x05b9, 0xba5: 0x05c1, 0xba6: 0x05c9, 0xba7: 0x05d1, 0xba8: 0x0599, 0xba9: 0x05a1,\n\t0xbaa: 0x05a9, 0xbab: 0x05b1, 0xbac: 0x05b9, 0xbad: 0x05c1, 0xbae: 0x05c9, 0xbaf: 0x05d1,\n\t0xbb0: 0x0008, 0xbb1: 0x0008, 0xbb2: 0x05d9, 0xbb3: 0x05e1, 0xbb4: 0x05e9, 0xbb5: 0x0040,\n\t0xbb6: 0x0008, 0xbb7: 0x05f1, 0xbb8: 0xe045, 0xbb9: 0xe045, 0xbba: 0x0665, 0xbbb: 0x04e1,\n\t0xbbc: 0x05e1, 0xbbd: 0x067e, 0xbbe: 0x05f9, 0xbbf: 0x069e,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x06be, 0xbc1: 0x0602, 0xbc2: 0x0609, 0xbc3: 0x0611, 0xbc4: 0x0619, 0xbc5: 0x0040,\n\t0xbc6: 0x0008, 0xbc7: 0x0621, 0xbc8: 0x06dd, 0xbc9: 0x04e9, 0xbca: 0x06f5, 0xbcb: 0x04f1,\n\t0xbcc: 0x0611, 0xbcd: 0x062a, 0xbce: 0x0632, 0xbcf: 0x063a, 0xbd0: 0x0008, 0xbd1: 0x0008,\n\t0xbd2: 0x0008, 0xbd3: 0x0641, 0xbd4: 0x0040, 0xbd5: 0x0040, 0xbd6: 0x0008, 0xbd7: 0x0008,\n\t0xbd8: 0xe045, 0xbd9: 0xe045, 0xbda: 0x070d, 0xbdb: 0x04f9, 0xbdc: 0x0040, 0xbdd: 0x064a,\n\t0xbde: 0x0652, 0xbdf: 0x065a, 0xbe0: 0x0008, 0xbe1: 0x0008, 0xbe2: 0x0008, 0xbe3: 0x0661,\n\t0xbe4: 0x0008, 0xbe5: 0x0008, 0xbe6: 0x0008, 0xbe7: 0x0008, 0xbe8: 0xe045, 0xbe9: 0xe045,\n\t0xbea: 0x0725, 0xbeb: 0x0509, 0xbec: 0xe04d, 0xbed: 0x066a, 0xbee: 0x012a, 0xbef: 0x0672,\n\t0xbf0: 0x0040, 0xbf1: 0x0040, 0xbf2: 0x0679, 0xbf3: 0x0681, 0xbf4: 0x0689, 0xbf5: 0x0040,\n\t0xbf6: 0x0008, 0xbf7: 0x0691, 0xbf8: 0x073d, 0xbf9: 0x0501, 0xbfa: 0x0515, 0xbfb: 0x0511,\n\t0xbfc: 0x0681, 0xbfd: 0x0756, 0xbfe: 0x0776, 0xbff: 0x0040,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x000a, 0xc01: 0x000a, 0xc02: 0x000a, 0xc03: 0x000a, 0xc04: 0x000a, 0xc05: 0x000a,\n\t0xc06: 0x000a, 0xc07: 0x000a, 0xc08: 0x000a, 0xc09: 0x000a, 0xc0a: 0x000a, 0xc0b: 0x03c0,\n\t0xc0c: 0x0003, 0xc0d: 0x0003, 0xc0e: 0x0340, 0xc0f: 0x0b40, 0xc10: 0x0018, 0xc11: 0xe00d,\n\t0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x0796,\n\t0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018,\n\t0xc1e: 0x0018, 0xc1f: 0x0018, 0xc20: 0x0018, 0xc21: 0x0018, 0xc22: 0x0018, 0xc23: 0x0018,\n\t0xc24: 0x0040, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0018, 0xc28: 0x0040, 0xc29: 0x0040,\n\t0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x000a,\n\t0xc30: 0x0018, 0xc31: 0x0018, 0xc32: 0x0018, 0xc33: 0x0699, 0xc34: 0x06a1, 0xc35: 0x0018,\n\t0xc36: 0x06a9, 0xc37: 0x06b1, 0xc38: 0x0018, 0xc39: 0x0018, 0xc3a: 0x0018, 0xc3b: 0x0018,\n\t0xc3c: 0x06ba, 0xc3d: 0x0018, 0xc3e: 0x07b6, 0xc3f: 0x0018,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x0018, 0xc41: 0x0018, 0xc42: 0x0018, 0xc43: 0x0018, 0xc44: 0x0018, 0xc45: 0x0018,\n\t0xc46: 0x0018, 0xc47: 0x06c2, 0xc48: 0x06ca, 0xc49: 0x06d2, 0xc4a: 0x0018, 0xc4b: 0x0018,\n\t0xc4c: 0x0018, 0xc4d: 0x0018, 0xc4e: 0x0018, 0xc4f: 0x0018, 0xc50: 0x0018, 0xc51: 0x0018,\n\t0xc52: 0x0018, 0xc53: 0x0018, 0xc54: 0x0018, 0xc55: 0x0018, 0xc56: 0x0018, 0xc57: 0x06d9,\n\t0xc58: 0x0018, 0xc59: 0x0018, 0xc5a: 0x0018, 0xc5b: 0x0018, 0xc5c: 0x0018, 0xc5d: 0x0018,\n\t0xc5e: 0x0018, 0xc5f: 0x000a, 0xc60: 0x03c0, 0xc61: 0x0340, 0xc62: 0x0340, 0xc63: 0x0340,\n\t0xc64: 0x03c0, 0xc65: 0x0040, 0xc66: 0x0040, 0xc67: 0x0040, 0xc68: 0x0040, 0xc69: 0x0040,\n\t0xc6a: 0x0340, 0xc6b: 0x0340, 0xc6c: 0x0340, 0xc6d: 0x0340, 0xc6e: 0x0340, 0xc6f: 0x0340,\n\t0xc70: 0x06e1, 0xc71: 0x0311, 0xc72: 0x0040, 0xc73: 0x0040, 0xc74: 0x06e9, 0xc75: 0x06f1,\n\t0xc76: 0x06f9, 0xc77: 0x0701, 0xc78: 0x0709, 0xc79: 0x0711, 0xc7a: 0x071a, 0xc7b: 0x07d5,\n\t0xc7c: 0x0722, 0xc7d: 0x072a, 0xc7e: 0x0732, 0xc7f: 0x0329,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x06e1, 0xc81: 0x0049, 0xc82: 0x0029, 0xc83: 0x0031, 0xc84: 0x06e9, 0xc85: 0x06f1,\n\t0xc86: 0x06f9, 0xc87: 0x0701, 0xc88: 0x0709, 0xc89: 0x0711, 0xc8a: 0x071a, 0xc8b: 0x07ed,\n\t0xc8c: 0x0722, 0xc8d: 0x072a, 0xc8e: 0x0732, 0xc8f: 0x0040, 0xc90: 0x0019, 0xc91: 0x02f9,\n\t0xc92: 0x0051, 0xc93: 0x0109, 0xc94: 0x0361, 0xc95: 0x00a9, 0xc96: 0x0319, 0xc97: 0x0101,\n\t0xc98: 0x0321, 0xc99: 0x0329, 0xc9a: 0x0339, 0xc9b: 0x0089, 0xc9c: 0x0341, 0xc9d: 0x0040,\n\t0xc9e: 0x0040, 0xc9f: 0x0040, 0xca0: 0x0018, 0xca1: 0x0018, 0xca2: 0x0018, 0xca3: 0x0018,\n\t0xca4: 0x0018, 0xca5: 0x0018, 0xca6: 0x0018, 0xca7: 0x0018, 0xca8: 0x0739, 0xca9: 0x0018,\n\t0xcaa: 0x0018, 0xcab: 0x0018, 0xcac: 0x0018, 0xcad: 0x0018, 0xcae: 0x0018, 0xcaf: 0x0018,\n\t0xcb0: 0x0018, 0xcb1: 0x0018, 0xcb2: 0x0018, 0xcb3: 0x0018, 0xcb4: 0x0018, 0xcb5: 0x0018,\n\t0xcb6: 0x0018, 0xcb7: 0x0018, 0xcb8: 0x0018, 0xcb9: 0x0018, 0xcba: 0x0018, 0xcbb: 0x0018,\n\t0xcbc: 0x0018, 0xcbd: 0x0018, 0xcbe: 0x0018, 0xcbf: 0x0018,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x0806, 0xcc1: 0x0826, 0xcc2: 0x03d9, 0xcc3: 0x0845, 0xcc4: 0x0018, 0xcc5: 0x0866,\n\t0xcc6: 0x0886, 0xcc7: 0x0369, 0xcc8: 0x0018, 0xcc9: 0x08a5, 0xcca: 0x0309, 0xccb: 0x00a9,\n\t0xccc: 0x00a9, 0xccd: 0x00a9, 0xcce: 0x00a9, 0xccf: 0x0741, 0xcd0: 0x0311, 0xcd1: 0x0311,\n\t0xcd2: 0x0101, 0xcd3: 0x0101, 0xcd4: 0x0018, 0xcd5: 0x0329, 0xcd6: 0x0749, 0xcd7: 0x0018,\n\t0xcd8: 0x0018, 0xcd9: 0x0339, 0xcda: 0x0751, 0xcdb: 0x00b9, 0xcdc: 0x00b9, 0xcdd: 0x00b9,\n\t0xcde: 0x0018, 0xcdf: 0x0018, 0xce0: 0x0759, 0xce1: 0x08c5, 0xce2: 0x0761, 0xce3: 0x0018,\n\t0xce4: 0x04b1, 0xce5: 0x0018, 0xce6: 0x0769, 0xce7: 0x0018, 0xce8: 0x04b1, 0xce9: 0x0018,\n\t0xcea: 0x0319, 0xceb: 0x0771, 0xcec: 0x02e9, 0xced: 0x03d9, 0xcee: 0x0018, 0xcef: 0x02f9,\n\t0xcf0: 0x02f9, 0xcf1: 0x03f1, 0xcf2: 0x0040, 0xcf3: 0x0321, 0xcf4: 0x0051, 0xcf5: 0x0779,\n\t0xcf6: 0x0781, 0xcf7: 0x0789, 0xcf8: 0x0791, 0xcf9: 0x0311, 0xcfa: 0x0018, 0xcfb: 0x08e5,\n\t0xcfc: 0x0799, 0xcfd: 0x03a1, 0xcfe: 0x03a1, 0xcff: 0x0799,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x0905, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x02f1,\n\t0xd06: 0x02f1, 0xd07: 0x02f9, 0xd08: 0x0311, 0xd09: 0x00b1, 0xd0a: 0x0018, 0xd0b: 0x0018,\n\t0xd0c: 0x0018, 0xd0d: 0x0018, 0xd0e: 0x0008, 0xd0f: 0x0018, 0xd10: 0x07a1, 0xd11: 0x07a9,\n\t0xd12: 0x07b1, 0xd13: 0x07b9, 0xd14: 0x07c1, 0xd15: 0x07c9, 0xd16: 0x07d1, 0xd17: 0x07d9,\n\t0xd18: 0x07e1, 0xd19: 0x07e9, 0xd1a: 0x07f1, 0xd1b: 0x07f9, 0xd1c: 0x0801, 0xd1d: 0x0809,\n\t0xd1e: 0x0811, 0xd1f: 0x0819, 0xd20: 0x0311, 0xd21: 0x0821, 0xd22: 0x091d, 0xd23: 0x0829,\n\t0xd24: 0x0391, 0xd25: 0x0831, 0xd26: 0x093d, 0xd27: 0x0839, 0xd28: 0x0841, 0xd29: 0x0109,\n\t0xd2a: 0x0849, 0xd2b: 0x095d, 0xd2c: 0x0101, 0xd2d: 0x03d9, 0xd2e: 0x02f1, 0xd2f: 0x0321,\n\t0xd30: 0x0311, 0xd31: 0x0821, 0xd32: 0x097d, 0xd33: 0x0829, 0xd34: 0x0391, 0xd35: 0x0831,\n\t0xd36: 0x099d, 0xd37: 0x0839, 0xd38: 0x0841, 0xd39: 0x0109, 0xd3a: 0x0849, 0xd3b: 0x09bd,\n\t0xd3c: 0x0101, 0xd3d: 0x03d9, 0xd3e: 0x02f1, 0xd3f: 0x0321,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x0018, 0xd41: 0x0018, 0xd42: 0x0018, 0xd43: 0x0018, 0xd44: 0x0018, 0xd45: 0x0018,\n\t0xd46: 0x0018, 0xd47: 0x0018, 0xd48: 0x0018, 0xd49: 0x0018, 0xd4a: 0x0018, 0xd4b: 0x0040,\n\t0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040,\n\t0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040,\n\t0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0040, 0xd5d: 0x0040,\n\t0xd5e: 0x0040, 0xd5f: 0x0040, 0xd60: 0x0049, 0xd61: 0x0029, 0xd62: 0x0031, 0xd63: 0x06e9,\n\t0xd64: 0x06f1, 0xd65: 0x06f9, 0xd66: 0x0701, 0xd67: 0x0709, 0xd68: 0x0711, 0xd69: 0x0879,\n\t0xd6a: 0x0881, 0xd6b: 0x0889, 0xd6c: 0x0891, 0xd6d: 0x0899, 0xd6e: 0x08a1, 0xd6f: 0x08a9,\n\t0xd70: 0x08b1, 0xd71: 0x08b9, 0xd72: 0x08c1, 0xd73: 0x08c9, 0xd74: 0x0a1e, 0xd75: 0x0a3e,\n\t0xd76: 0x0a5e, 0xd77: 0x0a7e, 0xd78: 0x0a9e, 0xd79: 0x0abe, 0xd7a: 0x0ade, 0xd7b: 0x0afe,\n\t0xd7c: 0x0b1e, 0xd7d: 0x08d2, 0xd7e: 0x08da, 0xd7f: 0x08e2,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x08ea, 0xd81: 0x08f2, 0xd82: 0x08fa, 0xd83: 0x0902, 0xd84: 0x090a, 0xd85: 0x0912,\n\t0xd86: 0x091a, 0xd87: 0x0922, 0xd88: 0x0040, 0xd89: 0x0040, 0xd8a: 0x0040, 0xd8b: 0x0040,\n\t0xd8c: 0x0040, 0xd8d: 0x0040, 0xd8e: 0x0040, 0xd8f: 0x0040, 0xd90: 0x0040, 0xd91: 0x0040,\n\t0xd92: 0x0040, 0xd93: 0x0040, 0xd94: 0x0040, 0xd95: 0x0040, 0xd96: 0x0040, 0xd97: 0x0040,\n\t0xd98: 0x0040, 0xd99: 0x0040, 0xd9a: 0x0040, 0xd9b: 0x0040, 0xd9c: 0x0b3e, 0xd9d: 0x0b5e,\n\t0xd9e: 0x0b7e, 0xd9f: 0x0b9e, 0xda0: 0x0bbe, 0xda1: 0x0bde, 0xda2: 0x0bfe, 0xda3: 0x0c1e,\n\t0xda4: 0x0c3e, 0xda5: 0x0c5e, 0xda6: 0x0c7e, 0xda7: 0x0c9e, 0xda8: 0x0cbe, 0xda9: 0x0cde,\n\t0xdaa: 0x0cfe, 0xdab: 0x0d1e, 0xdac: 0x0d3e, 0xdad: 0x0d5e, 0xdae: 0x0d7e, 0xdaf: 0x0d9e,\n\t0xdb0: 0x0dbe, 0xdb1: 0x0dde, 0xdb2: 0x0dfe, 0xdb3: 0x0e1e, 0xdb4: 0x0e3e, 0xdb5: 0x0e5e,\n\t0xdb6: 0x0019, 0xdb7: 0x02e9, 0xdb8: 0x03d9, 0xdb9: 0x02f1, 0xdba: 0x02f9, 0xdbb: 0x03f1,\n\t0xdbc: 0x0309, 0xdbd: 0x00a9, 0xdbe: 0x0311, 0xdbf: 0x00b1,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0319, 0xdc1: 0x0101, 0xdc2: 0x0321, 0xdc3: 0x0329, 0xdc4: 0x0051, 0xdc5: 0x0339,\n\t0xdc6: 0x0751, 0xdc7: 0x00b9, 0xdc8: 0x0089, 0xdc9: 0x0341, 0xdca: 0x0349, 0xdcb: 0x0391,\n\t0xdcc: 0x00c1, 0xdcd: 0x0109, 0xdce: 0x00c9, 0xdcf: 0x04b1, 0xdd0: 0x0019, 0xdd1: 0x02e9,\n\t0xdd2: 0x03d9, 0xdd3: 0x02f1, 0xdd4: 0x02f9, 0xdd5: 0x03f1, 0xdd6: 0x0309, 0xdd7: 0x00a9,\n\t0xdd8: 0x0311, 0xdd9: 0x00b1, 0xdda: 0x0319, 0xddb: 0x0101, 0xddc: 0x0321, 0xddd: 0x0329,\n\t0xdde: 0x0051, 0xddf: 0x0339, 0xde0: 0x0751, 0xde1: 0x00b9, 0xde2: 0x0089, 0xde3: 0x0341,\n\t0xde4: 0x0349, 0xde5: 0x0391, 0xde6: 0x00c1, 0xde7: 0x0109, 0xde8: 0x00c9, 0xde9: 0x04b1,\n\t0xdea: 0x06e1, 0xdeb: 0x0018, 0xdec: 0x0018, 0xded: 0x0018, 0xdee: 0x0018, 0xdef: 0x0018,\n\t0xdf0: 0x0018, 0xdf1: 0x0018, 0xdf2: 0x0018, 0xdf3: 0x0018, 0xdf4: 0x0018, 0xdf5: 0x0018,\n\t0xdf6: 0x0018, 0xdf7: 0x0018, 0xdf8: 0x0018, 0xdf9: 0x0018, 0xdfa: 0x0018, 0xdfb: 0x0018,\n\t0xdfc: 0x0018, 0xdfd: 0x0018, 0xdfe: 0x0018, 0xdff: 0x0018,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x0008, 0xe01: 0x0008, 0xe02: 0x0008, 0xe03: 0x0008, 0xe04: 0x0008, 0xe05: 0x0008,\n\t0xe06: 0x0008, 0xe07: 0x0008, 0xe08: 0x0008, 0xe09: 0x0008, 0xe0a: 0x0008, 0xe0b: 0x0008,\n\t0xe0c: 0x0008, 0xe0d: 0x0008, 0xe0e: 0x0008, 0xe0f: 0x0008, 0xe10: 0x0008, 0xe11: 0x0008,\n\t0xe12: 0x0008, 0xe13: 0x0008, 0xe14: 0x0008, 0xe15: 0x0008, 0xe16: 0x0008, 0xe17: 0x0008,\n\t0xe18: 0x0008, 0xe19: 0x0008, 0xe1a: 0x0008, 0xe1b: 0x0008, 0xe1c: 0x0008, 0xe1d: 0x0008,\n\t0xe1e: 0x0008, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0x0941, 0xe23: 0x0ed5,\n\t0xe24: 0x0949, 0xe25: 0x0008, 0xe26: 0x0008, 0xe27: 0xe07d, 0xe28: 0x0008, 0xe29: 0xe01d,\n\t0xe2a: 0x0008, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0x0359, 0xe2e: 0x0441, 0xe2f: 0x0351,\n\t0xe30: 0x03d1, 0xe31: 0x0008, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0008, 0xe35: 0xe01d,\n\t0xe36: 0x0008, 0xe37: 0x0008, 0xe38: 0x0008, 0xe39: 0x0008, 0xe3a: 0x0008, 0xe3b: 0x0008,\n\t0xe3c: 0x00b1, 0xe3d: 0x0391, 0xe3e: 0x0951, 0xe3f: 0x0959,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0xe00d, 0xe41: 0x0008, 0xe42: 0xe00d, 0xe43: 0x0008, 0xe44: 0xe00d, 0xe45: 0x0008,\n\t0xe46: 0xe00d, 0xe47: 0x0008, 0xe48: 0xe00d, 0xe49: 0x0008, 0xe4a: 0xe00d, 0xe4b: 0x0008,\n\t0xe4c: 0xe00d, 0xe4d: 0x0008, 0xe4e: 0xe00d, 0xe4f: 0x0008, 0xe50: 0xe00d, 0xe51: 0x0008,\n\t0xe52: 0xe00d, 0xe53: 0x0008, 0xe54: 0xe00d, 0xe55: 0x0008, 0xe56: 0xe00d, 0xe57: 0x0008,\n\t0xe58: 0xe00d, 0xe59: 0x0008, 0xe5a: 0xe00d, 0xe5b: 0x0008, 0xe5c: 0xe00d, 0xe5d: 0x0008,\n\t0xe5e: 0xe00d, 0xe5f: 0x0008, 0xe60: 0xe00d, 0xe61: 0x0008, 0xe62: 0xe00d, 0xe63: 0x0008,\n\t0xe64: 0x0008, 0xe65: 0x0018, 0xe66: 0x0018, 0xe67: 0x0018, 0xe68: 0x0018, 0xe69: 0x0018,\n\t0xe6a: 0x0018, 0xe6b: 0xe03d, 0xe6c: 0x0008, 0xe6d: 0xe01d, 0xe6e: 0x0008, 0xe6f: 0x3308,\n\t0xe70: 0x3308, 0xe71: 0x3308, 0xe72: 0xe00d, 0xe73: 0x0008, 0xe74: 0x0040, 0xe75: 0x0040,\n\t0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0018, 0xe7a: 0x0018, 0xe7b: 0x0018,\n\t0xe7c: 0x0018, 0xe7d: 0x0018, 0xe7e: 0x0018, 0xe7f: 0x0018,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x2715, 0xe81: 0x2735, 0xe82: 0x2755, 0xe83: 0x2775, 0xe84: 0x2795, 0xe85: 0x27b5,\n\t0xe86: 0x27d5, 0xe87: 0x27f5, 0xe88: 0x2815, 0xe89: 0x2835, 0xe8a: 0x2855, 0xe8b: 0x2875,\n\t0xe8c: 0x2895, 0xe8d: 0x28b5, 0xe8e: 0x28d5, 0xe8f: 0x28f5, 0xe90: 0x2915, 0xe91: 0x2935,\n\t0xe92: 0x2955, 0xe93: 0x2975, 0xe94: 0x2995, 0xe95: 0x29b5, 0xe96: 0x0040, 0xe97: 0x0040,\n\t0xe98: 0x0040, 0xe99: 0x0040, 0xe9a: 0x0040, 0xe9b: 0x0040, 0xe9c: 0x0040, 0xe9d: 0x0040,\n\t0xe9e: 0x0040, 0xe9f: 0x0040, 0xea0: 0x0040, 0xea1: 0x0040, 0xea2: 0x0040, 0xea3: 0x0040,\n\t0xea4: 0x0040, 0xea5: 0x0040, 0xea6: 0x0040, 0xea7: 0x0040, 0xea8: 0x0040, 0xea9: 0x0040,\n\t0xeaa: 0x0040, 0xeab: 0x0040, 0xeac: 0x0040, 0xead: 0x0040, 0xeae: 0x0040, 0xeaf: 0x0040,\n\t0xeb0: 0x0040, 0xeb1: 0x0040, 0xeb2: 0x0040, 0xeb3: 0x0040, 0xeb4: 0x0040, 0xeb5: 0x0040,\n\t0xeb6: 0x0040, 0xeb7: 0x0040, 0xeb8: 0x0040, 0xeb9: 0x0040, 0xeba: 0x0040, 0xebb: 0x0040,\n\t0xebc: 0x0040, 0xebd: 0x0040, 0xebe: 0x0040, 0xebf: 0x0040,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x000a, 0xec1: 0x0018, 0xec2: 0x0961, 0xec3: 0x0018, 0xec4: 0x0018, 0xec5: 0x0008,\n\t0xec6: 0x0008, 0xec7: 0x0008, 0xec8: 0x0018, 0xec9: 0x0018, 0xeca: 0x0018, 0xecb: 0x0018,\n\t0xecc: 0x0018, 0xecd: 0x0018, 0xece: 0x0018, 0xecf: 0x0018, 0xed0: 0x0018, 0xed1: 0x0018,\n\t0xed2: 0x0018, 0xed3: 0x0018, 0xed4: 0x0018, 0xed5: 0x0018, 0xed6: 0x0018, 0xed7: 0x0018,\n\t0xed8: 0x0018, 0xed9: 0x0018, 0xeda: 0x0018, 0xedb: 0x0018, 0xedc: 0x0018, 0xedd: 0x0018,\n\t0xede: 0x0018, 0xedf: 0x0018, 0xee0: 0x0018, 0xee1: 0x0018, 0xee2: 0x0018, 0xee3: 0x0018,\n\t0xee4: 0x0018, 0xee5: 0x0018, 0xee6: 0x0018, 0xee7: 0x0018, 0xee8: 0x0018, 0xee9: 0x0018,\n\t0xeea: 0x3308, 0xeeb: 0x3308, 0xeec: 0x3308, 0xeed: 0x3308, 0xeee: 0x3018, 0xeef: 0x3018,\n\t0xef0: 0x0018, 0xef1: 0x0018, 0xef2: 0x0018, 0xef3: 0x0018, 0xef4: 0x0018, 0xef5: 0x0018,\n\t0xef6: 0xe125, 0xef7: 0x0018, 0xef8: 0x29d5, 0xef9: 0x29f5, 0xefa: 0x2a15, 0xefb: 0x0018,\n\t0xefc: 0x0008, 0xefd: 0x0018, 0xefe: 0x0018, 0xeff: 0x0018,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x2b55, 0xf01: 0x2b75, 0xf02: 0x2b95, 0xf03: 0x2bb5, 0xf04: 0x2bd5, 0xf05: 0x2bf5,\n\t0xf06: 0x2bf5, 0xf07: 0x2bf5, 0xf08: 0x2c15, 0xf09: 0x2c15, 0xf0a: 0x2c15, 0xf0b: 0x2c15,\n\t0xf0c: 0x2c35, 0xf0d: 0x2c35, 0xf0e: 0x2c35, 0xf0f: 0x2c55, 0xf10: 0x2c75, 0xf11: 0x2c75,\n\t0xf12: 0x2a95, 0xf13: 0x2a95, 0xf14: 0x2c75, 0xf15: 0x2c75, 0xf16: 0x2c95, 0xf17: 0x2c95,\n\t0xf18: 0x2c75, 0xf19: 0x2c75, 0xf1a: 0x2a95, 0xf1b: 0x2a95, 0xf1c: 0x2c75, 0xf1d: 0x2c75,\n\t0xf1e: 0x2c55, 0xf1f: 0x2c55, 0xf20: 0x2cb5, 0xf21: 0x2cb5, 0xf22: 0x2cd5, 0xf23: 0x2cd5,\n\t0xf24: 0x0040, 0xf25: 0x2cf5, 0xf26: 0x2d15, 0xf27: 0x2d35, 0xf28: 0x2d35, 0xf29: 0x2d55,\n\t0xf2a: 0x2d75, 0xf2b: 0x2d95, 0xf2c: 0x2db5, 0xf2d: 0x2dd5, 0xf2e: 0x2df5, 0xf2f: 0x2e15,\n\t0xf30: 0x2e35, 0xf31: 0x2e55, 0xf32: 0x2e55, 0xf33: 0x2e75, 0xf34: 0x2e95, 0xf35: 0x2e95,\n\t0xf36: 0x2eb5, 0xf37: 0x2ed5, 0xf38: 0x2e75, 0xf39: 0x2ef5, 0xf3a: 0x2f15, 0xf3b: 0x2ef5,\n\t0xf3c: 0x2e75, 0xf3d: 0x2f35, 0xf3e: 0x2f55, 0xf3f: 0x2f75,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x2f95, 0xf41: 0x2fb5, 0xf42: 0x2d15, 0xf43: 0x2cf5, 0xf44: 0x2fd5, 0xf45: 0x2ff5,\n\t0xf46: 0x3015, 0xf47: 0x3035, 0xf48: 0x3055, 0xf49: 0x3075, 0xf4a: 0x3095, 0xf4b: 0x30b5,\n\t0xf4c: 0x30d5, 0xf4d: 0x30f5, 0xf4e: 0x3115, 0xf4f: 0x0040, 0xf50: 0x0018, 0xf51: 0x0018,\n\t0xf52: 0x3135, 0xf53: 0x3155, 0xf54: 0x3175, 0xf55: 0x3195, 0xf56: 0x31b5, 0xf57: 0x31d5,\n\t0xf58: 0x31f5, 0xf59: 0x3215, 0xf5a: 0x3235, 0xf5b: 0x3255, 0xf5c: 0x3175, 0xf5d: 0x3275,\n\t0xf5e: 0x3295, 0xf5f: 0x32b5, 0xf60: 0x0008, 0xf61: 0x0008, 0xf62: 0x0008, 0xf63: 0x0008,\n\t0xf64: 0x0008, 0xf65: 0x0008, 0xf66: 0x0008, 0xf67: 0x0008, 0xf68: 0x0008, 0xf69: 0x0008,\n\t0xf6a: 0x0008, 0xf6b: 0x0008, 0xf6c: 0x0008, 0xf6d: 0x0008, 0xf6e: 0x0008, 0xf6f: 0x0008,\n\t0xf70: 0x0008, 0xf71: 0x0008, 0xf72: 0x0008, 0xf73: 0x0008, 0xf74: 0x0008, 0xf75: 0x0008,\n\t0xf76: 0x0008, 0xf77: 0x0008, 0xf78: 0x0008, 0xf79: 0x0008, 0xf7a: 0x0008, 0xf7b: 0x0008,\n\t0xf7c: 0x0008, 0xf7d: 0x0008, 0xf7e: 0x0008, 0xf7f: 0x0008,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x0b82, 0xf81: 0x0b8a, 0xf82: 0x0b92, 0xf83: 0x0b9a, 0xf84: 0x32d5, 0xf85: 0x32f5,\n\t0xf86: 0x3315, 0xf87: 0x3335, 0xf88: 0x0018, 0xf89: 0x0018, 0xf8a: 0x0018, 0xf8b: 0x0018,\n\t0xf8c: 0x0018, 0xf8d: 0x0018, 0xf8e: 0x0018, 0xf8f: 0x0018, 0xf90: 0x3355, 0xf91: 0x0ba1,\n\t0xf92: 0x0ba9, 0xf93: 0x0bb1, 0xf94: 0x0bb9, 0xf95: 0x0bc1, 0xf96: 0x0bc9, 0xf97: 0x0bd1,\n\t0xf98: 0x0bd9, 0xf99: 0x0be1, 0xf9a: 0x0be9, 0xf9b: 0x0bf1, 0xf9c: 0x0bf9, 0xf9d: 0x0c01,\n\t0xf9e: 0x0c09, 0xf9f: 0x0c11, 0xfa0: 0x3375, 0xfa1: 0x3395, 0xfa2: 0x33b5, 0xfa3: 0x33d5,\n\t0xfa4: 0x33f5, 0xfa5: 0x33f5, 0xfa6: 0x3415, 0xfa7: 0x3435, 0xfa8: 0x3455, 0xfa9: 0x3475,\n\t0xfaa: 0x3495, 0xfab: 0x34b5, 0xfac: 0x34d5, 0xfad: 0x34f5, 0xfae: 0x3515, 0xfaf: 0x3535,\n\t0xfb0: 0x3555, 0xfb1: 0x3575, 0xfb2: 0x3595, 0xfb3: 0x35b5, 0xfb4: 0x35d5, 0xfb5: 0x35f5,\n\t0xfb6: 0x3615, 0xfb7: 0x3635, 0xfb8: 0x3655, 0xfb9: 0x3675, 0xfba: 0x3695, 0xfbb: 0x36b5,\n\t0xfbc: 0x0c19, 0xfbd: 0x0c21, 0xfbe: 0x36d5, 0xfbf: 0x0018,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x36f5, 0xfc1: 0x3715, 0xfc2: 0x3735, 0xfc3: 0x3755, 0xfc4: 0x3775, 0xfc5: 0x3795,\n\t0xfc6: 0x37b5, 0xfc7: 0x37d5, 0xfc8: 0x37f5, 0xfc9: 0x3815, 0xfca: 0x3835, 0xfcb: 0x3855,\n\t0xfcc: 0x3875, 0xfcd: 0x3895, 0xfce: 0x38b5, 0xfcf: 0x38d5, 0xfd0: 0x38f5, 0xfd1: 0x3915,\n\t0xfd2: 0x3935, 0xfd3: 0x3955, 0xfd4: 0x3975, 0xfd5: 0x3995, 0xfd6: 0x39b5, 0xfd7: 0x39d5,\n\t0xfd8: 0x39f5, 0xfd9: 0x3a15, 0xfda: 0x3a35, 0xfdb: 0x3a55, 0xfdc: 0x3a75, 0xfdd: 0x3a95,\n\t0xfde: 0x3ab5, 0xfdf: 0x3ad5, 0xfe0: 0x3af5, 0xfe1: 0x3b15, 0xfe2: 0x3b35, 0xfe3: 0x3b55,\n\t0xfe4: 0x3b75, 0xfe5: 0x3b95, 0xfe6: 0x1295, 0xfe7: 0x3bb5, 0xfe8: 0x3bd5, 0xfe9: 0x3bf5,\n\t0xfea: 0x3c15, 0xfeb: 0x3c35, 0xfec: 0x3c55, 0xfed: 0x3c75, 0xfee: 0x23b5, 0xfef: 0x3c95,\n\t0xff0: 0x3cb5, 0xff1: 0x0c29, 0xff2: 0x0c31, 0xff3: 0x0c39, 0xff4: 0x0c41, 0xff5: 0x0c49,\n\t0xff6: 0x0c51, 0xff7: 0x0c59, 0xff8: 0x0c61, 0xff9: 0x0c69, 0xffa: 0x0c71, 0xffb: 0x0c79,\n\t0xffc: 0x0c81, 0xffd: 0x0c89, 0xffe: 0x0c91, 0xfff: 0x0c99,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x0ca1, 0x1001: 0x0ca9, 0x1002: 0x0cb1, 0x1003: 0x0cb9, 0x1004: 0x0cc1, 0x1005: 0x0cc9,\n\t0x1006: 0x0cd1, 0x1007: 0x0cd9, 0x1008: 0x0ce1, 0x1009: 0x0ce9, 0x100a: 0x0cf1, 0x100b: 0x0cf9,\n\t0x100c: 0x0d01, 0x100d: 0x3cd5, 0x100e: 0x0d09, 0x100f: 0x3cf5, 0x1010: 0x3d15, 0x1011: 0x3d2d,\n\t0x1012: 0x3d45, 0x1013: 0x3d5d, 0x1014: 0x3d75, 0x1015: 0x3d75, 0x1016: 0x3d5d, 0x1017: 0x3d8d,\n\t0x1018: 0x07d5, 0x1019: 0x3da5, 0x101a: 0x3dbd, 0x101b: 0x3dd5, 0x101c: 0x3ded, 0x101d: 0x3e05,\n\t0x101e: 0x3e1d, 0x101f: 0x3e35, 0x1020: 0x3e4d, 0x1021: 0x3e65, 0x1022: 0x3e7d, 0x1023: 0x3e95,\n\t0x1024: 0x3ead, 0x1025: 0x3ead, 0x1026: 0x3ec5, 0x1027: 0x3ec5, 0x1028: 0x3edd, 0x1029: 0x3edd,\n\t0x102a: 0x3ef5, 0x102b: 0x3f0d, 0x102c: 0x3f25, 0x102d: 0x3f3d, 0x102e: 0x3f55, 0x102f: 0x3f55,\n\t0x1030: 0x3f6d, 0x1031: 0x3f6d, 0x1032: 0x3f6d, 0x1033: 0x3f85, 0x1034: 0x3f9d, 0x1035: 0x3fb5,\n\t0x1036: 0x3fcd, 0x1037: 0x3fb5, 0x1038: 0x3fe5, 0x1039: 0x3ffd, 0x103a: 0x3f85, 0x103b: 0x4015,\n\t0x103c: 0x402d, 0x103d: 0x402d, 0x103e: 0x402d, 0x103f: 0x0d11,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x10f9, 0x1041: 0x1101, 0x1042: 0x40a5, 0x1043: 0x1109, 0x1044: 0x1111, 0x1045: 0x1119,\n\t0x1046: 0x1121, 0x1047: 0x1129, 0x1048: 0x40c5, 0x1049: 0x1131, 0x104a: 0x1139, 0x104b: 0x1141,\n\t0x104c: 0x40e5, 0x104d: 0x40e5, 0x104e: 0x1149, 0x104f: 0x1151, 0x1050: 0x1159, 0x1051: 0x4105,\n\t0x1052: 0x4125, 0x1053: 0x4145, 0x1054: 0x4165, 0x1055: 0x4185, 0x1056: 0x1161, 0x1057: 0x1169,\n\t0x1058: 0x1171, 0x1059: 0x1179, 0x105a: 0x1181, 0x105b: 0x41a5, 0x105c: 0x1189, 0x105d: 0x1191,\n\t0x105e: 0x1199, 0x105f: 0x41c5, 0x1060: 0x41e5, 0x1061: 0x11a1, 0x1062: 0x4205, 0x1063: 0x4225,\n\t0x1064: 0x4245, 0x1065: 0x11a9, 0x1066: 0x4265, 0x1067: 0x11b1, 0x1068: 0x11b9, 0x1069: 0x10f9,\n\t0x106a: 0x4285, 0x106b: 0x42a5, 0x106c: 0x42c5, 0x106d: 0x42e5, 0x106e: 0x11c1, 0x106f: 0x11c9,\n\t0x1070: 0x11d1, 0x1071: 0x11d9, 0x1072: 0x4305, 0x1073: 0x11e1, 0x1074: 0x11e9, 0x1075: 0x11f1,\n\t0x1076: 0x4325, 0x1077: 0x11f9, 0x1078: 0x1201, 0x1079: 0x11f9, 0x107a: 0x1209, 0x107b: 0x1211,\n\t0x107c: 0x4345, 0x107d: 0x1219, 0x107e: 0x1221, 0x107f: 0x1219,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x4365, 0x1081: 0x4385, 0x1082: 0x0040, 0x1083: 0x1229, 0x1084: 0x1231, 0x1085: 0x1239,\n\t0x1086: 0x1241, 0x1087: 0x0040, 0x1088: 0x1249, 0x1089: 0x1251, 0x108a: 0x1259, 0x108b: 0x1261,\n\t0x108c: 0x1269, 0x108d: 0x1271, 0x108e: 0x1199, 0x108f: 0x1279, 0x1090: 0x1281, 0x1091: 0x1289,\n\t0x1092: 0x43a5, 0x1093: 0x1291, 0x1094: 0x1121, 0x1095: 0x43c5, 0x1096: 0x43e5, 0x1097: 0x1299,\n\t0x1098: 0x0040, 0x1099: 0x4405, 0x109a: 0x12a1, 0x109b: 0x12a9, 0x109c: 0x12b1, 0x109d: 0x12b9,\n\t0x109e: 0x12c1, 0x109f: 0x12c9, 0x10a0: 0x12d1, 0x10a1: 0x12d9, 0x10a2: 0x12e1, 0x10a3: 0x12e9,\n\t0x10a4: 0x12f1, 0x10a5: 0x12f9, 0x10a6: 0x1301, 0x10a7: 0x1309, 0x10a8: 0x1311, 0x10a9: 0x1319,\n\t0x10aa: 0x1321, 0x10ab: 0x1329, 0x10ac: 0x1331, 0x10ad: 0x1339, 0x10ae: 0x1341, 0x10af: 0x1349,\n\t0x10b0: 0x1351, 0x10b1: 0x1359, 0x10b2: 0x1361, 0x10b3: 0x1369, 0x10b4: 0x1371, 0x10b5: 0x1379,\n\t0x10b6: 0x1381, 0x10b7: 0x1389, 0x10b8: 0x1391, 0x10b9: 0x1399, 0x10ba: 0x13a1, 0x10bb: 0x13a9,\n\t0x10bc: 0x13b1, 0x10bd: 0x13b9, 0x10be: 0x13c1, 0x10bf: 0x4425,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0xe00d, 0x10c1: 0x0008, 0x10c2: 0xe00d, 0x10c3: 0x0008, 0x10c4: 0xe00d, 0x10c5: 0x0008,\n\t0x10c6: 0xe00d, 0x10c7: 0x0008, 0x10c8: 0xe00d, 0x10c9: 0x0008, 0x10ca: 0xe00d, 0x10cb: 0x0008,\n\t0x10cc: 0xe00d, 0x10cd: 0x0008, 0x10ce: 0xe00d, 0x10cf: 0x0008, 0x10d0: 0xe00d, 0x10d1: 0x0008,\n\t0x10d2: 0xe00d, 0x10d3: 0x0008, 0x10d4: 0xe00d, 0x10d5: 0x0008, 0x10d6: 0xe00d, 0x10d7: 0x0008,\n\t0x10d8: 0xe00d, 0x10d9: 0x0008, 0x10da: 0xe00d, 0x10db: 0x0008, 0x10dc: 0xe00d, 0x10dd: 0x0008,\n\t0x10de: 0xe00d, 0x10df: 0x0008, 0x10e0: 0xe00d, 0x10e1: 0x0008, 0x10e2: 0xe00d, 0x10e3: 0x0008,\n\t0x10e4: 0xe00d, 0x10e5: 0x0008, 0x10e6: 0xe00d, 0x10e7: 0x0008, 0x10e8: 0xe00d, 0x10e9: 0x0008,\n\t0x10ea: 0xe00d, 0x10eb: 0x0008, 0x10ec: 0xe00d, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x3308,\n\t0x10f0: 0x3318, 0x10f1: 0x3318, 0x10f2: 0x3318, 0x10f3: 0x0018, 0x10f4: 0x3308, 0x10f5: 0x3308,\n\t0x10f6: 0x3308, 0x10f7: 0x3308, 0x10f8: 0x3308, 0x10f9: 0x3308, 0x10fa: 0x3308, 0x10fb: 0x3308,\n\t0x10fc: 0x3308, 0x10fd: 0x3308, 0x10fe: 0x0018, 0x10ff: 0x0008,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008,\n\t0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008,\n\t0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008,\n\t0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008,\n\t0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0x02d1, 0x111d: 0x13c9,\n\t0x111e: 0x3308, 0x111f: 0x3308, 0x1120: 0x0008, 0x1121: 0x0008, 0x1122: 0x0008, 0x1123: 0x0008,\n\t0x1124: 0x0008, 0x1125: 0x0008, 0x1126: 0x0008, 0x1127: 0x0008, 0x1128: 0x0008, 0x1129: 0x0008,\n\t0x112a: 0x0008, 0x112b: 0x0008, 0x112c: 0x0008, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x0008,\n\t0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0x0008, 0x1133: 0x0008, 0x1134: 0x0008, 0x1135: 0x0008,\n\t0x1136: 0x0008, 0x1137: 0x0008, 0x1138: 0x0008, 0x1139: 0x0008, 0x113a: 0x0008, 0x113b: 0x0008,\n\t0x113c: 0x0008, 0x113d: 0x0008, 0x113e: 0x0008, 0x113f: 0x0008,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0x0018, 0x1141: 0x0018, 0x1142: 0x0018, 0x1143: 0x0018, 0x1144: 0x0018, 0x1145: 0x0018,\n\t0x1146: 0x0018, 0x1147: 0x0018, 0x1148: 0x0018, 0x1149: 0x0018, 0x114a: 0x0018, 0x114b: 0x0018,\n\t0x114c: 0x0018, 0x114d: 0x0018, 0x114e: 0x0018, 0x114f: 0x0018, 0x1150: 0x0018, 0x1151: 0x0018,\n\t0x1152: 0x0018, 0x1153: 0x0018, 0x1154: 0x0018, 0x1155: 0x0018, 0x1156: 0x0018, 0x1157: 0x0008,\n\t0x1158: 0x0008, 0x1159: 0x0008, 0x115a: 0x0008, 0x115b: 0x0008, 0x115c: 0x0008, 0x115d: 0x0008,\n\t0x115e: 0x0008, 0x115f: 0x0008, 0x1160: 0x0018, 0x1161: 0x0018, 0x1162: 0xe00d, 0x1163: 0x0008,\n\t0x1164: 0xe00d, 0x1165: 0x0008, 0x1166: 0xe00d, 0x1167: 0x0008, 0x1168: 0xe00d, 0x1169: 0x0008,\n\t0x116a: 0xe00d, 0x116b: 0x0008, 0x116c: 0xe00d, 0x116d: 0x0008, 0x116e: 0xe00d, 0x116f: 0x0008,\n\t0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0xe00d, 0x1173: 0x0008, 0x1174: 0xe00d, 0x1175: 0x0008,\n\t0x1176: 0xe00d, 0x1177: 0x0008, 0x1178: 0xe00d, 0x1179: 0x0008, 0x117a: 0xe00d, 0x117b: 0x0008,\n\t0x117c: 0xe00d, 0x117d: 0x0008, 0x117e: 0xe00d, 0x117f: 0x0008,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008,\n\t0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0xe00d, 0x1189: 0x0008, 0x118a: 0xe00d, 0x118b: 0x0008,\n\t0x118c: 0xe00d, 0x118d: 0x0008, 0x118e: 0xe00d, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008,\n\t0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0xe00d, 0x1195: 0x0008, 0x1196: 0xe00d, 0x1197: 0x0008,\n\t0x1198: 0xe00d, 0x1199: 0x0008, 0x119a: 0xe00d, 0x119b: 0x0008, 0x119c: 0xe00d, 0x119d: 0x0008,\n\t0x119e: 0xe00d, 0x119f: 0x0008, 0x11a0: 0xe00d, 0x11a1: 0x0008, 0x11a2: 0xe00d, 0x11a3: 0x0008,\n\t0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,\n\t0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008,\n\t0x11b0: 0xe0fd, 0x11b1: 0x0008, 0x11b2: 0x0008, 0x11b3: 0x0008, 0x11b4: 0x0008, 0x11b5: 0x0008,\n\t0x11b6: 0x0008, 0x11b7: 0x0008, 0x11b8: 0x0008, 0x11b9: 0xe01d, 0x11ba: 0x0008, 0x11bb: 0xe03d,\n\t0x11bc: 0x0008, 0x11bd: 0x4445, 0x11be: 0xe00d, 0x11bf: 0x0008,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008,\n\t0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0x0008, 0x11c9: 0x0018, 0x11ca: 0x0018, 0x11cb: 0xe03d,\n\t0x11cc: 0x0008, 0x11cd: 0x0409, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008,\n\t0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008,\n\t0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008,\n\t0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008,\n\t0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008,\n\t0x11ea: 0x13d1, 0x11eb: 0x0371, 0x11ec: 0x0401, 0x11ed: 0x13d9, 0x11ee: 0x0421, 0x11ef: 0x0008,\n\t0x11f0: 0x13e1, 0x11f1: 0x13e9, 0x11f2: 0x0429, 0x11f3: 0x4465, 0x11f4: 0xe00d, 0x11f5: 0x0008,\n\t0x11f6: 0xe00d, 0x11f7: 0x0008, 0x11f8: 0xe00d, 0x11f9: 0x0008, 0x11fa: 0xe00d, 0x11fb: 0x0008,\n\t0x11fc: 0xe00d, 0x11fd: 0x0008, 0x11fe: 0xe00d, 0x11ff: 0x0008,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0x03f5, 0x1205: 0x0479,\n\t0x1206: 0x447d, 0x1207: 0xe07d, 0x1208: 0x0008, 0x1209: 0xe01d, 0x120a: 0x0008, 0x120b: 0x0040,\n\t0x120c: 0x0040, 0x120d: 0x0040, 0x120e: 0x0040, 0x120f: 0x0040, 0x1210: 0xe00d, 0x1211: 0x0008,\n\t0x1212: 0x0040, 0x1213: 0x0008, 0x1214: 0x0040, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008,\n\t0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0x0040, 0x121b: 0x0040, 0x121c: 0x0040, 0x121d: 0x0040,\n\t0x121e: 0x0040, 0x121f: 0x0040, 0x1220: 0x0040, 0x1221: 0x0040, 0x1222: 0x0040, 0x1223: 0x0040,\n\t0x1224: 0x0040, 0x1225: 0x0040, 0x1226: 0x0040, 0x1227: 0x0040, 0x1228: 0x0040, 0x1229: 0x0040,\n\t0x122a: 0x0040, 0x122b: 0x0040, 0x122c: 0x0040, 0x122d: 0x0040, 0x122e: 0x0040, 0x122f: 0x0040,\n\t0x1230: 0x0040, 0x1231: 0x0040, 0x1232: 0x03d9, 0x1233: 0x03f1, 0x1234: 0x0751, 0x1235: 0xe01d,\n\t0x1236: 0x0008, 0x1237: 0x0008, 0x1238: 0x0741, 0x1239: 0x13f1, 0x123a: 0x0008, 0x123b: 0x0008,\n\t0x123c: 0x0008, 0x123d: 0x0008, 0x123e: 0x0008, 0x123f: 0x0008,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x650d, 0x1241: 0x652d, 0x1242: 0x654d, 0x1243: 0x656d, 0x1244: 0x658d, 0x1245: 0x65ad,\n\t0x1246: 0x65cd, 0x1247: 0x65ed, 0x1248: 0x660d, 0x1249: 0x662d, 0x124a: 0x664d, 0x124b: 0x666d,\n\t0x124c: 0x668d, 0x124d: 0x66ad, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x66cd, 0x1251: 0x0008,\n\t0x1252: 0x66ed, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x670d, 0x1256: 0x672d, 0x1257: 0x674d,\n\t0x1258: 0x676d, 0x1259: 0x678d, 0x125a: 0x67ad, 0x125b: 0x67cd, 0x125c: 0x67ed, 0x125d: 0x680d,\n\t0x125e: 0x682d, 0x125f: 0x0008, 0x1260: 0x684d, 0x1261: 0x0008, 0x1262: 0x686d, 0x1263: 0x0008,\n\t0x1264: 0x0008, 0x1265: 0x688d, 0x1266: 0x68ad, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008,\n\t0x126a: 0x68cd, 0x126b: 0x68ed, 0x126c: 0x690d, 0x126d: 0x692d, 0x126e: 0x694d, 0x126f: 0x696d,\n\t0x1270: 0x698d, 0x1271: 0x69ad, 0x1272: 0x69cd, 0x1273: 0x69ed, 0x1274: 0x6a0d, 0x1275: 0x6a2d,\n\t0x1276: 0x6a4d, 0x1277: 0x6a6d, 0x1278: 0x6a8d, 0x1279: 0x6aad, 0x127a: 0x6acd, 0x127b: 0x6aed,\n\t0x127c: 0x6b0d, 0x127d: 0x6b2d, 0x127e: 0x6b4d, 0x127f: 0x6b6d,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x7acd, 0x1281: 0x7aed, 0x1282: 0x7b0d, 0x1283: 0x7b2d, 0x1284: 0x7b4d, 0x1285: 0x7b6d,\n\t0x1286: 0x7b8d, 0x1287: 0x7bad, 0x1288: 0x7bcd, 0x1289: 0x7bed, 0x128a: 0x7c0d, 0x128b: 0x7c2d,\n\t0x128c: 0x7c4d, 0x128d: 0x7c6d, 0x128e: 0x7c8d, 0x128f: 0x1409, 0x1290: 0x1411, 0x1291: 0x1419,\n\t0x1292: 0x7cad, 0x1293: 0x7ccd, 0x1294: 0x7ced, 0x1295: 0x1421, 0x1296: 0x1429, 0x1297: 0x1431,\n\t0x1298: 0x7d0d, 0x1299: 0x7d2d, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040,\n\t0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040,\n\t0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040,\n\t0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040,\n\t0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040,\n\t0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040,\n\t0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x1439, 0x12c1: 0x1441, 0x12c2: 0x1449, 0x12c3: 0x7d4d, 0x12c4: 0x7d6d, 0x12c5: 0x1451,\n\t0x12c6: 0x1451, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040,\n\t0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040,\n\t0x12d2: 0x0040, 0x12d3: 0x1459, 0x12d4: 0x1461, 0x12d5: 0x1469, 0x12d6: 0x1471, 0x12d7: 0x1479,\n\t0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x1481,\n\t0x12de: 0x3308, 0x12df: 0x1489, 0x12e0: 0x1491, 0x12e1: 0x0779, 0x12e2: 0x0791, 0x12e3: 0x1499,\n\t0x12e4: 0x14a1, 0x12e5: 0x14a9, 0x12e6: 0x14b1, 0x12e7: 0x14b9, 0x12e8: 0x14c1, 0x12e9: 0x071a,\n\t0x12ea: 0x14c9, 0x12eb: 0x14d1, 0x12ec: 0x14d9, 0x12ed: 0x14e1, 0x12ee: 0x14e9, 0x12ef: 0x14f1,\n\t0x12f0: 0x14f9, 0x12f1: 0x1501, 0x12f2: 0x1509, 0x12f3: 0x1511, 0x12f4: 0x1519, 0x12f5: 0x1521,\n\t0x12f6: 0x1529, 0x12f7: 0x0040, 0x12f8: 0x1531, 0x12f9: 0x1539, 0x12fa: 0x1541, 0x12fb: 0x1549,\n\t0x12fc: 0x1551, 0x12fd: 0x0040, 0x12fe: 0x1559, 0x12ff: 0x0040,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x1561, 0x1301: 0x1569, 0x1302: 0x0040, 0x1303: 0x1571, 0x1304: 0x1579, 0x1305: 0x0040,\n\t0x1306: 0x1581, 0x1307: 0x1589, 0x1308: 0x1591, 0x1309: 0x1599, 0x130a: 0x15a1, 0x130b: 0x15a9,\n\t0x130c: 0x15b1, 0x130d: 0x15b9, 0x130e: 0x15c1, 0x130f: 0x15c9, 0x1310: 0x15d1, 0x1311: 0x15d1,\n\t0x1312: 0x15d9, 0x1313: 0x15d9, 0x1314: 0x15d9, 0x1315: 0x15d9, 0x1316: 0x15e1, 0x1317: 0x15e1,\n\t0x1318: 0x15e1, 0x1319: 0x15e1, 0x131a: 0x15e9, 0x131b: 0x15e9, 0x131c: 0x15e9, 0x131d: 0x15e9,\n\t0x131e: 0x15f1, 0x131f: 0x15f1, 0x1320: 0x15f1, 0x1321: 0x15f1, 0x1322: 0x15f9, 0x1323: 0x15f9,\n\t0x1324: 0x15f9, 0x1325: 0x15f9, 0x1326: 0x1601, 0x1327: 0x1601, 0x1328: 0x1601, 0x1329: 0x1601,\n\t0x132a: 0x1609, 0x132b: 0x1609, 0x132c: 0x1609, 0x132d: 0x1609, 0x132e: 0x1611, 0x132f: 0x1611,\n\t0x1330: 0x1611, 0x1331: 0x1611, 0x1332: 0x1619, 0x1333: 0x1619, 0x1334: 0x1619, 0x1335: 0x1619,\n\t0x1336: 0x1621, 0x1337: 0x1621, 0x1338: 0x1621, 0x1339: 0x1621, 0x133a: 0x1629, 0x133b: 0x1629,\n\t0x133c: 0x1629, 0x133d: 0x1629, 0x133e: 0x1631, 0x133f: 0x1631,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x1631, 0x1341: 0x1631, 0x1342: 0x1639, 0x1343: 0x1639, 0x1344: 0x1641, 0x1345: 0x1641,\n\t0x1346: 0x1649, 0x1347: 0x1649, 0x1348: 0x1651, 0x1349: 0x1651, 0x134a: 0x1659, 0x134b: 0x1659,\n\t0x134c: 0x1661, 0x134d: 0x1661, 0x134e: 0x1669, 0x134f: 0x1669, 0x1350: 0x1669, 0x1351: 0x1669,\n\t0x1352: 0x1671, 0x1353: 0x1671, 0x1354: 0x1671, 0x1355: 0x1671, 0x1356: 0x1679, 0x1357: 0x1679,\n\t0x1358: 0x1679, 0x1359: 0x1679, 0x135a: 0x1681, 0x135b: 0x1681, 0x135c: 0x1681, 0x135d: 0x1681,\n\t0x135e: 0x1689, 0x135f: 0x1689, 0x1360: 0x1691, 0x1361: 0x1691, 0x1362: 0x1691, 0x1363: 0x1691,\n\t0x1364: 0x1699, 0x1365: 0x1699, 0x1366: 0x16a1, 0x1367: 0x16a1, 0x1368: 0x16a1, 0x1369: 0x16a1,\n\t0x136a: 0x16a9, 0x136b: 0x16a9, 0x136c: 0x16a9, 0x136d: 0x16a9, 0x136e: 0x16b1, 0x136f: 0x16b1,\n\t0x1370: 0x16b9, 0x1371: 0x16b9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818,\n\t0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818,\n\t0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0818, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040,\n\t0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040,\n\t0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040,\n\t0x1392: 0x0040, 0x1393: 0x16c1, 0x1394: 0x16c1, 0x1395: 0x16c1, 0x1396: 0x16c1, 0x1397: 0x16c9,\n\t0x1398: 0x16c9, 0x1399: 0x16d1, 0x139a: 0x16d1, 0x139b: 0x16d9, 0x139c: 0x16d9, 0x139d: 0x0149,\n\t0x139e: 0x16e1, 0x139f: 0x16e1, 0x13a0: 0x16e9, 0x13a1: 0x16e9, 0x13a2: 0x16f1, 0x13a3: 0x16f1,\n\t0x13a4: 0x16f9, 0x13a5: 0x16f9, 0x13a6: 0x16f9, 0x13a7: 0x16f9, 0x13a8: 0x1701, 0x13a9: 0x1701,\n\t0x13aa: 0x1709, 0x13ab: 0x1709, 0x13ac: 0x1711, 0x13ad: 0x1711, 0x13ae: 0x1719, 0x13af: 0x1719,\n\t0x13b0: 0x1721, 0x13b1: 0x1721, 0x13b2: 0x1729, 0x13b3: 0x1729, 0x13b4: 0x1731, 0x13b5: 0x1731,\n\t0x13b6: 0x1739, 0x13b7: 0x1739, 0x13b8: 0x1739, 0x13b9: 0x1741, 0x13ba: 0x1741, 0x13bb: 0x1741,\n\t0x13bc: 0x1749, 0x13bd: 0x1749, 0x13be: 0x1749, 0x13bf: 0x1749,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x1949, 0x13c1: 0x1951, 0x13c2: 0x1959, 0x13c3: 0x1961, 0x13c4: 0x1969, 0x13c5: 0x1971,\n\t0x13c6: 0x1979, 0x13c7: 0x1981, 0x13c8: 0x1989, 0x13c9: 0x1991, 0x13ca: 0x1999, 0x13cb: 0x19a1,\n\t0x13cc: 0x19a9, 0x13cd: 0x19b1, 0x13ce: 0x19b9, 0x13cf: 0x19c1, 0x13d0: 0x19c9, 0x13d1: 0x19d1,\n\t0x13d2: 0x19d9, 0x13d3: 0x19e1, 0x13d4: 0x19e9, 0x13d5: 0x19f1, 0x13d6: 0x19f9, 0x13d7: 0x1a01,\n\t0x13d8: 0x1a09, 0x13d9: 0x1a11, 0x13da: 0x1a19, 0x13db: 0x1a21, 0x13dc: 0x1a29, 0x13dd: 0x1a31,\n\t0x13de: 0x1a3a, 0x13df: 0x1a42, 0x13e0: 0x1a4a, 0x13e1: 0x1a52, 0x13e2: 0x1a5a, 0x13e3: 0x1a62,\n\t0x13e4: 0x1a69, 0x13e5: 0x1a71, 0x13e6: 0x1761, 0x13e7: 0x1a79, 0x13e8: 0x1741, 0x13e9: 0x1769,\n\t0x13ea: 0x1a81, 0x13eb: 0x1a89, 0x13ec: 0x1789, 0x13ed: 0x1a91, 0x13ee: 0x1791, 0x13ef: 0x1799,\n\t0x13f0: 0x1a99, 0x13f1: 0x1aa1, 0x13f2: 0x17b9, 0x13f3: 0x1aa9, 0x13f4: 0x17c1, 0x13f5: 0x17c9,\n\t0x13f6: 0x1ab1, 0x13f7: 0x1ab9, 0x13f8: 0x17d9, 0x13f9: 0x1ac1, 0x13fa: 0x17e1, 0x13fb: 0x17e9,\n\t0x13fc: 0x18d1, 0x13fd: 0x18d9, 0x13fe: 0x18f1, 0x13ff: 0x18f9,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x1901, 0x1401: 0x1921, 0x1402: 0x1929, 0x1403: 0x1931, 0x1404: 0x1939, 0x1405: 0x1959,\n\t0x1406: 0x1961, 0x1407: 0x1969, 0x1408: 0x1ac9, 0x1409: 0x1989, 0x140a: 0x1ad1, 0x140b: 0x1ad9,\n\t0x140c: 0x19b9, 0x140d: 0x1ae1, 0x140e: 0x19c1, 0x140f: 0x19c9, 0x1410: 0x1a31, 0x1411: 0x1ae9,\n\t0x1412: 0x1af1, 0x1413: 0x1a09, 0x1414: 0x1af9, 0x1415: 0x1a11, 0x1416: 0x1a19, 0x1417: 0x1751,\n\t0x1418: 0x1759, 0x1419: 0x1b01, 0x141a: 0x1761, 0x141b: 0x1b09, 0x141c: 0x1771, 0x141d: 0x1779,\n\t0x141e: 0x1781, 0x141f: 0x1789, 0x1420: 0x1b11, 0x1421: 0x17a1, 0x1422: 0x17a9, 0x1423: 0x17b1,\n\t0x1424: 0x17b9, 0x1425: 0x1b19, 0x1426: 0x17d9, 0x1427: 0x17f1, 0x1428: 0x17f9, 0x1429: 0x1801,\n\t0x142a: 0x1809, 0x142b: 0x1811, 0x142c: 0x1821, 0x142d: 0x1829, 0x142e: 0x1831, 0x142f: 0x1839,\n\t0x1430: 0x1841, 0x1431: 0x1849, 0x1432: 0x1b21, 0x1433: 0x1851, 0x1434: 0x1859, 0x1435: 0x1861,\n\t0x1436: 0x1869, 0x1437: 0x1871, 0x1438: 0x1879, 0x1439: 0x1889, 0x143a: 0x1891, 0x143b: 0x1899,\n\t0x143c: 0x18a1, 0x143d: 0x18a9, 0x143e: 0x18b1, 0x143f: 0x18b9,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x18c1, 0x1441: 0x18c9, 0x1442: 0x18e1, 0x1443: 0x18e9, 0x1444: 0x1909, 0x1445: 0x1911,\n\t0x1446: 0x1919, 0x1447: 0x1921, 0x1448: 0x1929, 0x1449: 0x1941, 0x144a: 0x1949, 0x144b: 0x1951,\n\t0x144c: 0x1959, 0x144d: 0x1b29, 0x144e: 0x1971, 0x144f: 0x1979, 0x1450: 0x1981, 0x1451: 0x1989,\n\t0x1452: 0x19a1, 0x1453: 0x19a9, 0x1454: 0x19b1, 0x1455: 0x19b9, 0x1456: 0x1b31, 0x1457: 0x19d1,\n\t0x1458: 0x19d9, 0x1459: 0x1b39, 0x145a: 0x19f1, 0x145b: 0x19f9, 0x145c: 0x1a01, 0x145d: 0x1a09,\n\t0x145e: 0x1b41, 0x145f: 0x1761, 0x1460: 0x1b09, 0x1461: 0x1789, 0x1462: 0x1b11, 0x1463: 0x17b9,\n\t0x1464: 0x1b19, 0x1465: 0x17d9, 0x1466: 0x1b49, 0x1467: 0x1841, 0x1468: 0x1b51, 0x1469: 0x1b59,\n\t0x146a: 0x1b61, 0x146b: 0x1921, 0x146c: 0x1929, 0x146d: 0x1959, 0x146e: 0x19b9, 0x146f: 0x1b31,\n\t0x1470: 0x1a09, 0x1471: 0x1b41, 0x1472: 0x1b69, 0x1473: 0x1b71, 0x1474: 0x1b79, 0x1475: 0x1b81,\n\t0x1476: 0x1b89, 0x1477: 0x1b91, 0x1478: 0x1b99, 0x1479: 0x1ba1, 0x147a: 0x1ba9, 0x147b: 0x1bb1,\n\t0x147c: 0x1bb9, 0x147d: 0x1bc1, 0x147e: 0x1bc9, 0x147f: 0x1bd1,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x1bd9, 0x1481: 0x1be1, 0x1482: 0x1be9, 0x1483: 0x1bf1, 0x1484: 0x1bf9, 0x1485: 0x1c01,\n\t0x1486: 0x1c09, 0x1487: 0x1c11, 0x1488: 0x1c19, 0x1489: 0x1c21, 0x148a: 0x1c29, 0x148b: 0x1c31,\n\t0x148c: 0x1b59, 0x148d: 0x1c39, 0x148e: 0x1c41, 0x148f: 0x1c49, 0x1490: 0x1c51, 0x1491: 0x1b81,\n\t0x1492: 0x1b89, 0x1493: 0x1b91, 0x1494: 0x1b99, 0x1495: 0x1ba1, 0x1496: 0x1ba9, 0x1497: 0x1bb1,\n\t0x1498: 0x1bb9, 0x1499: 0x1bc1, 0x149a: 0x1bc9, 0x149b: 0x1bd1, 0x149c: 0x1bd9, 0x149d: 0x1be1,\n\t0x149e: 0x1be9, 0x149f: 0x1bf1, 0x14a0: 0x1bf9, 0x14a1: 0x1c01, 0x14a2: 0x1c09, 0x14a3: 0x1c11,\n\t0x14a4: 0x1c19, 0x14a5: 0x1c21, 0x14a6: 0x1c29, 0x14a7: 0x1c31, 0x14a8: 0x1b59, 0x14a9: 0x1c39,\n\t0x14aa: 0x1c41, 0x14ab: 0x1c49, 0x14ac: 0x1c51, 0x14ad: 0x1c21, 0x14ae: 0x1c29, 0x14af: 0x1c31,\n\t0x14b0: 0x1b59, 0x14b1: 0x1b51, 0x14b2: 0x1b61, 0x14b3: 0x1881, 0x14b4: 0x1829, 0x14b5: 0x1831,\n\t0x14b6: 0x1839, 0x14b7: 0x1c21, 0x14b8: 0x1c29, 0x14b9: 0x1c31, 0x14ba: 0x1881, 0x14bb: 0x1889,\n\t0x14bc: 0x1c59, 0x14bd: 0x1c59, 0x14be: 0x0018, 0x14bf: 0x0018,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x0018, 0x14c1: 0x0018, 0x14c2: 0x0018, 0x14c3: 0x0018, 0x14c4: 0x0018, 0x14c5: 0x0018,\n\t0x14c6: 0x0018, 0x14c7: 0x0018, 0x14c8: 0x0018, 0x14c9: 0x0018, 0x14ca: 0x0018, 0x14cb: 0x0018,\n\t0x14cc: 0x0018, 0x14cd: 0x0018, 0x14ce: 0x0018, 0x14cf: 0x0018, 0x14d0: 0x1c61, 0x14d1: 0x1c69,\n\t0x14d2: 0x1c69, 0x14d3: 0x1c71, 0x14d4: 0x1c79, 0x14d5: 0x1c81, 0x14d6: 0x1c89, 0x14d7: 0x1c91,\n\t0x14d8: 0x1c99, 0x14d9: 0x1c99, 0x14da: 0x1ca1, 0x14db: 0x1ca9, 0x14dc: 0x1cb1, 0x14dd: 0x1cb9,\n\t0x14de: 0x1cc1, 0x14df: 0x1cc9, 0x14e0: 0x1cc9, 0x14e1: 0x1cd1, 0x14e2: 0x1cd9, 0x14e3: 0x1cd9,\n\t0x14e4: 0x1ce1, 0x14e5: 0x1ce1, 0x14e6: 0x1ce9, 0x14e7: 0x1cf1, 0x14e8: 0x1cf1, 0x14e9: 0x1cf9,\n\t0x14ea: 0x1d01, 0x14eb: 0x1d01, 0x14ec: 0x1d09, 0x14ed: 0x1d09, 0x14ee: 0x1d11, 0x14ef: 0x1d19,\n\t0x14f0: 0x1d19, 0x14f1: 0x1d21, 0x14f2: 0x1d21, 0x14f3: 0x1d29, 0x14f4: 0x1d31, 0x14f5: 0x1d39,\n\t0x14f6: 0x1d41, 0x14f7: 0x1d41, 0x14f8: 0x1d49, 0x14f9: 0x1d51, 0x14fa: 0x1d59, 0x14fb: 0x1d61,\n\t0x14fc: 0x1d69, 0x14fd: 0x1d69, 0x14fe: 0x1d71, 0x14ff: 0x1d79,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x1f29, 0x1501: 0x1f31, 0x1502: 0x1f39, 0x1503: 0x1f11, 0x1504: 0x1d39, 0x1505: 0x1ce9,\n\t0x1506: 0x1f41, 0x1507: 0x1f49, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040,\n\t0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0018, 0x1510: 0x0040, 0x1511: 0x0040,\n\t0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040,\n\t0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040,\n\t0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040,\n\t0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040,\n\t0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040,\n\t0x1530: 0x1f51, 0x1531: 0x1f59, 0x1532: 0x1f61, 0x1533: 0x1f69, 0x1534: 0x1f71, 0x1535: 0x1f79,\n\t0x1536: 0x1f81, 0x1537: 0x1f89, 0x1538: 0x1f91, 0x1539: 0x1f99, 0x153a: 0x1fa2, 0x153b: 0x1faa,\n\t0x153c: 0x1fb1, 0x153d: 0x0018, 0x153e: 0x0018, 0x153f: 0x0018,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0,\n\t0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0,\n\t0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0x1fba, 0x1551: 0x7d8d,\n\t0x1552: 0x0040, 0x1553: 0x1fc2, 0x1554: 0x0122, 0x1555: 0x1fca, 0x1556: 0x1fd2, 0x1557: 0x7dad,\n\t0x1558: 0x7dcd, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040,\n\t0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308,\n\t0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308,\n\t0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308,\n\t0x1570: 0x0040, 0x1571: 0x7ded, 0x1572: 0x7e0d, 0x1573: 0x1fda, 0x1574: 0x1fda, 0x1575: 0x072a,\n\t0x1576: 0x0732, 0x1577: 0x1fe2, 0x1578: 0x1fea, 0x1579: 0x7e2d, 0x157a: 0x7e4d, 0x157b: 0x7e6d,\n\t0x157c: 0x7e2d, 0x157d: 0x7e8d, 0x157e: 0x7ead, 0x157f: 0x7e8d,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x7ecd, 0x1581: 0x7eed, 0x1582: 0x7f0d, 0x1583: 0x7eed, 0x1584: 0x7f2d, 0x1585: 0x0018,\n\t0x1586: 0x0018, 0x1587: 0x1ff2, 0x1588: 0x1ffa, 0x1589: 0x7f4e, 0x158a: 0x7f6e, 0x158b: 0x7f8e,\n\t0x158c: 0x7fae, 0x158d: 0x1fda, 0x158e: 0x1fda, 0x158f: 0x1fda, 0x1590: 0x1fba, 0x1591: 0x7fcd,\n\t0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x0122, 0x1595: 0x1fc2, 0x1596: 0x1fd2, 0x1597: 0x1fca,\n\t0x1598: 0x7fed, 0x1599: 0x072a, 0x159a: 0x0732, 0x159b: 0x1fe2, 0x159c: 0x1fea, 0x159d: 0x7ecd,\n\t0x159e: 0x7f2d, 0x159f: 0x2002, 0x15a0: 0x200a, 0x15a1: 0x2012, 0x15a2: 0x071a, 0x15a3: 0x2019,\n\t0x15a4: 0x2022, 0x15a5: 0x202a, 0x15a6: 0x0722, 0x15a7: 0x0040, 0x15a8: 0x2032, 0x15a9: 0x203a,\n\t0x15aa: 0x2042, 0x15ab: 0x204a, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040,\n\t0x15b0: 0x800e, 0x15b1: 0x2051, 0x15b2: 0x802e, 0x15b3: 0x0808, 0x15b4: 0x804e, 0x15b5: 0x0040,\n\t0x15b6: 0x806e, 0x15b7: 0x2059, 0x15b8: 0x808e, 0x15b9: 0x2061, 0x15ba: 0x80ae, 0x15bb: 0x2069,\n\t0x15bc: 0x80ce, 0x15bd: 0x2071, 0x15be: 0x80ee, 0x15bf: 0x2079,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x2081, 0x15c1: 0x2089, 0x15c2: 0x2089, 0x15c3: 0x2091, 0x15c4: 0x2091, 0x15c5: 0x2099,\n\t0x15c6: 0x2099, 0x15c7: 0x20a1, 0x15c8: 0x20a1, 0x15c9: 0x20a9, 0x15ca: 0x20a9, 0x15cb: 0x20a9,\n\t0x15cc: 0x20a9, 0x15cd: 0x20b1, 0x15ce: 0x20b1, 0x15cf: 0x20b9, 0x15d0: 0x20b9, 0x15d1: 0x20b9,\n\t0x15d2: 0x20b9, 0x15d3: 0x20c1, 0x15d4: 0x20c1, 0x15d5: 0x20c9, 0x15d6: 0x20c9, 0x15d7: 0x20c9,\n\t0x15d8: 0x20c9, 0x15d9: 0x20d1, 0x15da: 0x20d1, 0x15db: 0x20d1, 0x15dc: 0x20d1, 0x15dd: 0x20d9,\n\t0x15de: 0x20d9, 0x15df: 0x20d9, 0x15e0: 0x20d9, 0x15e1: 0x20e1, 0x15e2: 0x20e1, 0x15e3: 0x20e1,\n\t0x15e4: 0x20e1, 0x15e5: 0x20e9, 0x15e6: 0x20e9, 0x15e7: 0x20e9, 0x15e8: 0x20e9, 0x15e9: 0x20f1,\n\t0x15ea: 0x20f1, 0x15eb: 0x20f9, 0x15ec: 0x20f9, 0x15ed: 0x2101, 0x15ee: 0x2101, 0x15ef: 0x2109,\n\t0x15f0: 0x2109, 0x15f1: 0x2111, 0x15f2: 0x2111, 0x15f3: 0x2111, 0x15f4: 0x2111, 0x15f5: 0x2119,\n\t0x15f6: 0x2119, 0x15f7: 0x2119, 0x15f8: 0x2119, 0x15f9: 0x2121, 0x15fa: 0x2121, 0x15fb: 0x2121,\n\t0x15fc: 0x2121, 0x15fd: 0x2129, 0x15fe: 0x2129, 0x15ff: 0x2129,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x2129, 0x1601: 0x2131, 0x1602: 0x2131, 0x1603: 0x2131, 0x1604: 0x2131, 0x1605: 0x2139,\n\t0x1606: 0x2139, 0x1607: 0x2139, 0x1608: 0x2139, 0x1609: 0x2141, 0x160a: 0x2141, 0x160b: 0x2141,\n\t0x160c: 0x2141, 0x160d: 0x2149, 0x160e: 0x2149, 0x160f: 0x2149, 0x1610: 0x2149, 0x1611: 0x2151,\n\t0x1612: 0x2151, 0x1613: 0x2151, 0x1614: 0x2151, 0x1615: 0x2159, 0x1616: 0x2159, 0x1617: 0x2159,\n\t0x1618: 0x2159, 0x1619: 0x2161, 0x161a: 0x2161, 0x161b: 0x2161, 0x161c: 0x2161, 0x161d: 0x2169,\n\t0x161e: 0x2169, 0x161f: 0x2169, 0x1620: 0x2169, 0x1621: 0x2171, 0x1622: 0x2171, 0x1623: 0x2171,\n\t0x1624: 0x2171, 0x1625: 0x2179, 0x1626: 0x2179, 0x1627: 0x2179, 0x1628: 0x2179, 0x1629: 0x2181,\n\t0x162a: 0x2181, 0x162b: 0x2181, 0x162c: 0x2181, 0x162d: 0x2189, 0x162e: 0x2189, 0x162f: 0x1701,\n\t0x1630: 0x1701, 0x1631: 0x2191, 0x1632: 0x2191, 0x1633: 0x2191, 0x1634: 0x2191, 0x1635: 0x2199,\n\t0x1636: 0x2199, 0x1637: 0x21a1, 0x1638: 0x21a1, 0x1639: 0x21a9, 0x163a: 0x21a9, 0x163b: 0x21b1,\n\t0x163c: 0x21b1, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0040, 0x1641: 0x1fca, 0x1642: 0x21ba, 0x1643: 0x2002, 0x1644: 0x203a, 0x1645: 0x2042,\n\t0x1646: 0x200a, 0x1647: 0x21c2, 0x1648: 0x072a, 0x1649: 0x0732, 0x164a: 0x2012, 0x164b: 0x071a,\n\t0x164c: 0x1fba, 0x164d: 0x2019, 0x164e: 0x0961, 0x164f: 0x21ca, 0x1650: 0x06e1, 0x1651: 0x0049,\n\t0x1652: 0x0029, 0x1653: 0x0031, 0x1654: 0x06e9, 0x1655: 0x06f1, 0x1656: 0x06f9, 0x1657: 0x0701,\n\t0x1658: 0x0709, 0x1659: 0x0711, 0x165a: 0x1fc2, 0x165b: 0x0122, 0x165c: 0x2022, 0x165d: 0x0722,\n\t0x165e: 0x202a, 0x165f: 0x1fd2, 0x1660: 0x204a, 0x1661: 0x0019, 0x1662: 0x02e9, 0x1663: 0x03d9,\n\t0x1664: 0x02f1, 0x1665: 0x02f9, 0x1666: 0x03f1, 0x1667: 0x0309, 0x1668: 0x00a9, 0x1669: 0x0311,\n\t0x166a: 0x00b1, 0x166b: 0x0319, 0x166c: 0x0101, 0x166d: 0x0321, 0x166e: 0x0329, 0x166f: 0x0051,\n\t0x1670: 0x0339, 0x1671: 0x0751, 0x1672: 0x00b9, 0x1673: 0x0089, 0x1674: 0x0341, 0x1675: 0x0349,\n\t0x1676: 0x0391, 0x1677: 0x00c1, 0x1678: 0x0109, 0x1679: 0x00c9, 0x167a: 0x04b1, 0x167b: 0x1ff2,\n\t0x167c: 0x2032, 0x167d: 0x1ffa, 0x167e: 0x21d2, 0x167f: 0x1fda,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x0672, 0x1681: 0x0019, 0x1682: 0x02e9, 0x1683: 0x03d9, 0x1684: 0x02f1, 0x1685: 0x02f9,\n\t0x1686: 0x03f1, 0x1687: 0x0309, 0x1688: 0x00a9, 0x1689: 0x0311, 0x168a: 0x00b1, 0x168b: 0x0319,\n\t0x168c: 0x0101, 0x168d: 0x0321, 0x168e: 0x0329, 0x168f: 0x0051, 0x1690: 0x0339, 0x1691: 0x0751,\n\t0x1692: 0x00b9, 0x1693: 0x0089, 0x1694: 0x0341, 0x1695: 0x0349, 0x1696: 0x0391, 0x1697: 0x00c1,\n\t0x1698: 0x0109, 0x1699: 0x00c9, 0x169a: 0x04b1, 0x169b: 0x1fe2, 0x169c: 0x21da, 0x169d: 0x1fea,\n\t0x169e: 0x21e2, 0x169f: 0x810d, 0x16a0: 0x812d, 0x16a1: 0x0961, 0x16a2: 0x814d, 0x16a3: 0x814d,\n\t0x16a4: 0x816d, 0x16a5: 0x818d, 0x16a6: 0x81ad, 0x16a7: 0x81cd, 0x16a8: 0x81ed, 0x16a9: 0x820d,\n\t0x16aa: 0x822d, 0x16ab: 0x824d, 0x16ac: 0x826d, 0x16ad: 0x828d, 0x16ae: 0x82ad, 0x16af: 0x82cd,\n\t0x16b0: 0x82ed, 0x16b1: 0x830d, 0x16b2: 0x832d, 0x16b3: 0x834d, 0x16b4: 0x836d, 0x16b5: 0x838d,\n\t0x16b6: 0x83ad, 0x16b7: 0x83cd, 0x16b8: 0x83ed, 0x16b9: 0x840d, 0x16ba: 0x842d, 0x16bb: 0x844d,\n\t0x16bc: 0x81ed, 0x16bd: 0x846d, 0x16be: 0x848d, 0x16bf: 0x824d,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x84ad, 0x16c1: 0x84cd, 0x16c2: 0x84ed, 0x16c3: 0x850d, 0x16c4: 0x852d, 0x16c5: 0x854d,\n\t0x16c6: 0x856d, 0x16c7: 0x858d, 0x16c8: 0x850d, 0x16c9: 0x85ad, 0x16ca: 0x850d, 0x16cb: 0x85cd,\n\t0x16cc: 0x85cd, 0x16cd: 0x85ed, 0x16ce: 0x85ed, 0x16cf: 0x860d, 0x16d0: 0x854d, 0x16d1: 0x862d,\n\t0x16d2: 0x864d, 0x16d3: 0x862d, 0x16d4: 0x866d, 0x16d5: 0x864d, 0x16d6: 0x868d, 0x16d7: 0x868d,\n\t0x16d8: 0x86ad, 0x16d9: 0x86ad, 0x16da: 0x86cd, 0x16db: 0x86cd, 0x16dc: 0x864d, 0x16dd: 0x814d,\n\t0x16de: 0x86ed, 0x16df: 0x870d, 0x16e0: 0x0040, 0x16e1: 0x872d, 0x16e2: 0x874d, 0x16e3: 0x876d,\n\t0x16e4: 0x878d, 0x16e5: 0x876d, 0x16e6: 0x87ad, 0x16e7: 0x87cd, 0x16e8: 0x87ed, 0x16e9: 0x87ed,\n\t0x16ea: 0x880d, 0x16eb: 0x880d, 0x16ec: 0x882d, 0x16ed: 0x882d, 0x16ee: 0x880d, 0x16ef: 0x880d,\n\t0x16f0: 0x884d, 0x16f1: 0x886d, 0x16f2: 0x888d, 0x16f3: 0x88ad, 0x16f4: 0x88cd, 0x16f5: 0x88ed,\n\t0x16f6: 0x88ed, 0x16f7: 0x88ed, 0x16f8: 0x890d, 0x16f9: 0x890d, 0x16fa: 0x890d, 0x16fb: 0x890d,\n\t0x16fc: 0x87ed, 0x16fd: 0x87ed, 0x16fe: 0x87ed, 0x16ff: 0x0040,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x874d, 0x1703: 0x872d, 0x1704: 0x892d, 0x1705: 0x872d,\n\t0x1706: 0x874d, 0x1707: 0x872d, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x894d, 0x170b: 0x874d,\n\t0x170c: 0x896d, 0x170d: 0x892d, 0x170e: 0x896d, 0x170f: 0x874d, 0x1710: 0x0040, 0x1711: 0x0040,\n\t0x1712: 0x898d, 0x1713: 0x89ad, 0x1714: 0x88ad, 0x1715: 0x896d, 0x1716: 0x892d, 0x1717: 0x896d,\n\t0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x89cd, 0x171b: 0x89ed, 0x171c: 0x89cd, 0x171d: 0x0040,\n\t0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0x21e9, 0x1721: 0x21f1, 0x1722: 0x21f9, 0x1723: 0x8a0e,\n\t0x1724: 0x2201, 0x1725: 0x2209, 0x1726: 0x8a2d, 0x1727: 0x0040, 0x1728: 0x8a4d, 0x1729: 0x8a6d,\n\t0x172a: 0x8a8d, 0x172b: 0x8a6d, 0x172c: 0x8aad, 0x172d: 0x8acd, 0x172e: 0x8aed, 0x172f: 0x0040,\n\t0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040,\n\t0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340,\n\t0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x0008, 0x1741: 0x0008, 0x1742: 0x0008, 0x1743: 0x0008, 0x1744: 0x0008, 0x1745: 0x0008,\n\t0x1746: 0x0008, 0x1747: 0x0008, 0x1748: 0x0008, 0x1749: 0x0008, 0x174a: 0x0008, 0x174b: 0x0008,\n\t0x174c: 0x0008, 0x174d: 0x0008, 0x174e: 0x0008, 0x174f: 0x0008, 0x1750: 0x0008, 0x1751: 0x0008,\n\t0x1752: 0x0008, 0x1753: 0x0008, 0x1754: 0x0008, 0x1755: 0x0008, 0x1756: 0x0008, 0x1757: 0x0008,\n\t0x1758: 0x0008, 0x1759: 0x0008, 0x175a: 0x0008, 0x175b: 0x0008, 0x175c: 0x0008, 0x175d: 0x0008,\n\t0x175e: 0x0008, 0x175f: 0x0008, 0x1760: 0x0008, 0x1761: 0x0008, 0x1762: 0x0008, 0x1763: 0x0008,\n\t0x1764: 0x0040, 0x1765: 0x0040, 0x1766: 0x0040, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040,\n\t0x176a: 0x0040, 0x176b: 0x0040, 0x176c: 0x0040, 0x176d: 0x0040, 0x176e: 0x0040, 0x176f: 0x0018,\n\t0x1770: 0x8b3d, 0x1771: 0x8b55, 0x1772: 0x8b6d, 0x1773: 0x8b55, 0x1774: 0x8b85, 0x1775: 0x8b55,\n\t0x1776: 0x8b6d, 0x1777: 0x8b55, 0x1778: 0x8b3d, 0x1779: 0x8b9d, 0x177a: 0x8bb5, 0x177b: 0x0040,\n\t0x177c: 0x8bcd, 0x177d: 0x8b9d, 0x177e: 0x8bb5, 0x177f: 0x8b9d,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0xe13d, 0x1781: 0xe14d, 0x1782: 0xe15d, 0x1783: 0xe14d, 0x1784: 0xe17d, 0x1785: 0xe14d,\n\t0x1786: 0xe15d, 0x1787: 0xe14d, 0x1788: 0xe13d, 0x1789: 0xe1cd, 0x178a: 0xe1dd, 0x178b: 0x0040,\n\t0x178c: 0xe1fd, 0x178d: 0xe1cd, 0x178e: 0xe1dd, 0x178f: 0xe1cd, 0x1790: 0xe13d, 0x1791: 0xe14d,\n\t0x1792: 0xe15d, 0x1793: 0x0040, 0x1794: 0xe17d, 0x1795: 0xe14d, 0x1796: 0x0040, 0x1797: 0x0008,\n\t0x1798: 0x0008, 0x1799: 0x0008, 0x179a: 0x0008, 0x179b: 0x0008, 0x179c: 0x0008, 0x179d: 0x0008,\n\t0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x0040, 0x17a3: 0x0008,\n\t0x17a4: 0x0008, 0x17a5: 0x0008, 0x17a6: 0x0008, 0x17a7: 0x0008, 0x17a8: 0x0008, 0x17a9: 0x0008,\n\t0x17aa: 0x0008, 0x17ab: 0x0008, 0x17ac: 0x0008, 0x17ad: 0x0008, 0x17ae: 0x0008, 0x17af: 0x0008,\n\t0x17b0: 0x0008, 0x17b1: 0x0008, 0x17b2: 0x0040, 0x17b3: 0x0008, 0x17b4: 0x0008, 0x17b5: 0x0008,\n\t0x17b6: 0x0008, 0x17b7: 0x0008, 0x17b8: 0x0008, 0x17b9: 0x0008, 0x17ba: 0x0040, 0x17bb: 0x0008,\n\t0x17bc: 0x0008, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x0008, 0x17c1: 0x2211, 0x17c2: 0x2219, 0x17c3: 0x02e1, 0x17c4: 0x2221, 0x17c5: 0x2229,\n\t0x17c6: 0x0040, 0x17c7: 0x2231, 0x17c8: 0x2239, 0x17c9: 0x2241, 0x17ca: 0x2249, 0x17cb: 0x2251,\n\t0x17cc: 0x2259, 0x17cd: 0x2261, 0x17ce: 0x2269, 0x17cf: 0x2271, 0x17d0: 0x2279, 0x17d1: 0x2281,\n\t0x17d2: 0x2289, 0x17d3: 0x2291, 0x17d4: 0x2299, 0x17d5: 0x0741, 0x17d6: 0x22a1, 0x17d7: 0x22a9,\n\t0x17d8: 0x22b1, 0x17d9: 0x22b9, 0x17da: 0x22c1, 0x17db: 0x13d9, 0x17dc: 0x8be5, 0x17dd: 0x22c9,\n\t0x17de: 0x22d1, 0x17df: 0x8c05, 0x17e0: 0x22d9, 0x17e1: 0x8c25, 0x17e2: 0x22e1, 0x17e3: 0x22e9,\n\t0x17e4: 0x22f1, 0x17e5: 0x0751, 0x17e6: 0x22f9, 0x17e7: 0x8c45, 0x17e8: 0x0949, 0x17e9: 0x2301,\n\t0x17ea: 0x2309, 0x17eb: 0x2311, 0x17ec: 0x2319, 0x17ed: 0x2321, 0x17ee: 0x2329, 0x17ef: 0x2331,\n\t0x17f0: 0x2339, 0x17f1: 0x0040, 0x17f2: 0x2341, 0x17f3: 0x2349, 0x17f4: 0x2351, 0x17f5: 0x2359,\n\t0x17f6: 0x2361, 0x17f7: 0x2369, 0x17f8: 0x2371, 0x17f9: 0x8c65, 0x17fa: 0x8c85, 0x17fb: 0x0040,\n\t0x17fc: 0x0040, 0x17fd: 0x0040, 0x17fe: 0x0040, 0x17ff: 0x0040,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x0a08, 0x1801: 0x0a08, 0x1802: 0x0a08, 0x1803: 0x0a08, 0x1804: 0x0a08, 0x1805: 0x0c08,\n\t0x1806: 0x0808, 0x1807: 0x0c08, 0x1808: 0x0818, 0x1809: 0x0c08, 0x180a: 0x0c08, 0x180b: 0x0808,\n\t0x180c: 0x0808, 0x180d: 0x0908, 0x180e: 0x0c08, 0x180f: 0x0c08, 0x1810: 0x0c08, 0x1811: 0x0c08,\n\t0x1812: 0x0c08, 0x1813: 0x0a08, 0x1814: 0x0a08, 0x1815: 0x0a08, 0x1816: 0x0a08, 0x1817: 0x0908,\n\t0x1818: 0x0a08, 0x1819: 0x0a08, 0x181a: 0x0a08, 0x181b: 0x0a08, 0x181c: 0x0a08, 0x181d: 0x0c08,\n\t0x181e: 0x0a08, 0x181f: 0x0a08, 0x1820: 0x0a08, 0x1821: 0x0c08, 0x1822: 0x0808, 0x1823: 0x0808,\n\t0x1824: 0x0c08, 0x1825: 0x3308, 0x1826: 0x3308, 0x1827: 0x0040, 0x1828: 0x0040, 0x1829: 0x0040,\n\t0x182a: 0x0040, 0x182b: 0x0a18, 0x182c: 0x0a18, 0x182d: 0x0a18, 0x182e: 0x0a18, 0x182f: 0x0c18,\n\t0x1830: 0x0818, 0x1831: 0x0818, 0x1832: 0x0818, 0x1833: 0x0818, 0x1834: 0x0818, 0x1835: 0x0818,\n\t0x1836: 0x0818, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040,\n\t0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x0a08, 0x1841: 0x0c08, 0x1842: 0x0a08, 0x1843: 0x0c08, 0x1844: 0x0c08, 0x1845: 0x0c08,\n\t0x1846: 0x0a08, 0x1847: 0x0a08, 0x1848: 0x0a08, 0x1849: 0x0c08, 0x184a: 0x0a08, 0x184b: 0x0a08,\n\t0x184c: 0x0c08, 0x184d: 0x0a08, 0x184e: 0x0c08, 0x184f: 0x0c08, 0x1850: 0x0a08, 0x1851: 0x0c08,\n\t0x1852: 0x0040, 0x1853: 0x0040, 0x1854: 0x0040, 0x1855: 0x0040, 0x1856: 0x0040, 0x1857: 0x0040,\n\t0x1858: 0x0040, 0x1859: 0x0818, 0x185a: 0x0818, 0x185b: 0x0818, 0x185c: 0x0818, 0x185d: 0x0040,\n\t0x185e: 0x0040, 0x185f: 0x0040, 0x1860: 0x0040, 0x1861: 0x0040, 0x1862: 0x0040, 0x1863: 0x0040,\n\t0x1864: 0x0040, 0x1865: 0x0040, 0x1866: 0x0040, 0x1867: 0x0040, 0x1868: 0x0040, 0x1869: 0x0c18,\n\t0x186a: 0x0c18, 0x186b: 0x0c18, 0x186c: 0x0c18, 0x186d: 0x0a18, 0x186e: 0x0a18, 0x186f: 0x0818,\n\t0x1870: 0x0040, 0x1871: 0x0040, 0x1872: 0x0040, 0x1873: 0x0040, 0x1874: 0x0040, 0x1875: 0x0040,\n\t0x1876: 0x0040, 0x1877: 0x0040, 0x1878: 0x0040, 0x1879: 0x0040, 0x187a: 0x0040, 0x187b: 0x0040,\n\t0x187c: 0x0040, 0x187d: 0x0040, 0x187e: 0x0040, 0x187f: 0x0040,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x3308, 0x1881: 0x3308, 0x1882: 0x3008, 0x1883: 0x3008, 0x1884: 0x0040, 0x1885: 0x0008,\n\t0x1886: 0x0008, 0x1887: 0x0008, 0x1888: 0x0008, 0x1889: 0x0008, 0x188a: 0x0008, 0x188b: 0x0008,\n\t0x188c: 0x0008, 0x188d: 0x0040, 0x188e: 0x0040, 0x188f: 0x0008, 0x1890: 0x0008, 0x1891: 0x0040,\n\t0x1892: 0x0040, 0x1893: 0x0008, 0x1894: 0x0008, 0x1895: 0x0008, 0x1896: 0x0008, 0x1897: 0x0008,\n\t0x1898: 0x0008, 0x1899: 0x0008, 0x189a: 0x0008, 0x189b: 0x0008, 0x189c: 0x0008, 0x189d: 0x0008,\n\t0x189e: 0x0008, 0x189f: 0x0008, 0x18a0: 0x0008, 0x18a1: 0x0008, 0x18a2: 0x0008, 0x18a3: 0x0008,\n\t0x18a4: 0x0008, 0x18a5: 0x0008, 0x18a6: 0x0008, 0x18a7: 0x0008, 0x18a8: 0x0008, 0x18a9: 0x0040,\n\t0x18aa: 0x0008, 0x18ab: 0x0008, 0x18ac: 0x0008, 0x18ad: 0x0008, 0x18ae: 0x0008, 0x18af: 0x0008,\n\t0x18b0: 0x0008, 0x18b1: 0x0040, 0x18b2: 0x0008, 0x18b3: 0x0008, 0x18b4: 0x0040, 0x18b5: 0x0008,\n\t0x18b6: 0x0008, 0x18b7: 0x0008, 0x18b8: 0x0008, 0x18b9: 0x0008, 0x18ba: 0x0040, 0x18bb: 0x3308,\n\t0x18bc: 0x3308, 0x18bd: 0x0008, 0x18be: 0x3008, 0x18bf: 0x3008,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x3308, 0x18c1: 0x3008, 0x18c2: 0x3008, 0x18c3: 0x3008, 0x18c4: 0x3008, 0x18c5: 0x0040,\n\t0x18c6: 0x0040, 0x18c7: 0x3008, 0x18c8: 0x3008, 0x18c9: 0x0040, 0x18ca: 0x0040, 0x18cb: 0x3008,\n\t0x18cc: 0x3008, 0x18cd: 0x3808, 0x18ce: 0x0040, 0x18cf: 0x0040, 0x18d0: 0x0008, 0x18d1: 0x0040,\n\t0x18d2: 0x0040, 0x18d3: 0x0040, 0x18d4: 0x0040, 0x18d5: 0x0040, 0x18d6: 0x0040, 0x18d7: 0x3008,\n\t0x18d8: 0x0040, 0x18d9: 0x0040, 0x18da: 0x0040, 0x18db: 0x0040, 0x18dc: 0x0040, 0x18dd: 0x0008,\n\t0x18de: 0x0008, 0x18df: 0x0008, 0x18e0: 0x0008, 0x18e1: 0x0008, 0x18e2: 0x3008, 0x18e3: 0x3008,\n\t0x18e4: 0x0040, 0x18e5: 0x0040, 0x18e6: 0x3308, 0x18e7: 0x3308, 0x18e8: 0x3308, 0x18e9: 0x3308,\n\t0x18ea: 0x3308, 0x18eb: 0x3308, 0x18ec: 0x3308, 0x18ed: 0x0040, 0x18ee: 0x0040, 0x18ef: 0x0040,\n\t0x18f0: 0x3308, 0x18f1: 0x3308, 0x18f2: 0x3308, 0x18f3: 0x3308, 0x18f4: 0x3308, 0x18f5: 0x0040,\n\t0x18f6: 0x0040, 0x18f7: 0x0040, 0x18f8: 0x0040, 0x18f9: 0x0040, 0x18fa: 0x0040, 0x18fb: 0x0040,\n\t0x18fc: 0x0040, 0x18fd: 0x0040, 0x18fe: 0x0040, 0x18ff: 0x0040,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x0008, 0x1901: 0x0008, 0x1902: 0x0008, 0x1903: 0x0008, 0x1904: 0x0008, 0x1905: 0x0008,\n\t0x1906: 0x0008, 0x1907: 0x0040, 0x1908: 0x0040, 0x1909: 0x0008, 0x190a: 0x0040, 0x190b: 0x0040,\n\t0x190c: 0x0008, 0x190d: 0x0008, 0x190e: 0x0008, 0x190f: 0x0008, 0x1910: 0x0008, 0x1911: 0x0008,\n\t0x1912: 0x0008, 0x1913: 0x0008, 0x1914: 0x0040, 0x1915: 0x0008, 0x1916: 0x0008, 0x1917: 0x0040,\n\t0x1918: 0x0008, 0x1919: 0x0008, 0x191a: 0x0008, 0x191b: 0x0008, 0x191c: 0x0008, 0x191d: 0x0008,\n\t0x191e: 0x0008, 0x191f: 0x0008, 0x1920: 0x0008, 0x1921: 0x0008, 0x1922: 0x0008, 0x1923: 0x0008,\n\t0x1924: 0x0008, 0x1925: 0x0008, 0x1926: 0x0008, 0x1927: 0x0008, 0x1928: 0x0008, 0x1929: 0x0008,\n\t0x192a: 0x0008, 0x192b: 0x0008, 0x192c: 0x0008, 0x192d: 0x0008, 0x192e: 0x0008, 0x192f: 0x0008,\n\t0x1930: 0x3008, 0x1931: 0x3008, 0x1932: 0x3008, 0x1933: 0x3008, 0x1934: 0x3008, 0x1935: 0x3008,\n\t0x1936: 0x0040, 0x1937: 0x3008, 0x1938: 0x3008, 0x1939: 0x0040, 0x193a: 0x0040, 0x193b: 0x3308,\n\t0x193c: 0x3308, 0x193d: 0x3808, 0x193e: 0x3b08, 0x193f: 0x0008,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x0019, 0x1941: 0x02e9, 0x1942: 0x03d9, 0x1943: 0x02f1, 0x1944: 0x02f9, 0x1945: 0x03f1,\n\t0x1946: 0x0309, 0x1947: 0x00a9, 0x1948: 0x0311, 0x1949: 0x00b1, 0x194a: 0x0319, 0x194b: 0x0101,\n\t0x194c: 0x0321, 0x194d: 0x0329, 0x194e: 0x0051, 0x194f: 0x0339, 0x1950: 0x0751, 0x1951: 0x00b9,\n\t0x1952: 0x0089, 0x1953: 0x0341, 0x1954: 0x0349, 0x1955: 0x0391, 0x1956: 0x00c1, 0x1957: 0x0109,\n\t0x1958: 0x00c9, 0x1959: 0x04b1, 0x195a: 0x0019, 0x195b: 0x02e9, 0x195c: 0x03d9, 0x195d: 0x02f1,\n\t0x195e: 0x02f9, 0x195f: 0x03f1, 0x1960: 0x0309, 0x1961: 0x00a9, 0x1962: 0x0311, 0x1963: 0x00b1,\n\t0x1964: 0x0319, 0x1965: 0x0101, 0x1966: 0x0321, 0x1967: 0x0329, 0x1968: 0x0051, 0x1969: 0x0339,\n\t0x196a: 0x0751, 0x196b: 0x00b9, 0x196c: 0x0089, 0x196d: 0x0341, 0x196e: 0x0349, 0x196f: 0x0391,\n\t0x1970: 0x00c1, 0x1971: 0x0109, 0x1972: 0x00c9, 0x1973: 0x04b1, 0x1974: 0x0019, 0x1975: 0x02e9,\n\t0x1976: 0x03d9, 0x1977: 0x02f1, 0x1978: 0x02f9, 0x1979: 0x03f1, 0x197a: 0x0309, 0x197b: 0x00a9,\n\t0x197c: 0x0311, 0x197d: 0x00b1, 0x197e: 0x0319, 0x197f: 0x0101,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x0321, 0x1981: 0x0329, 0x1982: 0x0051, 0x1983: 0x0339, 0x1984: 0x0751, 0x1985: 0x00b9,\n\t0x1986: 0x0089, 0x1987: 0x0341, 0x1988: 0x0349, 0x1989: 0x0391, 0x198a: 0x00c1, 0x198b: 0x0109,\n\t0x198c: 0x00c9, 0x198d: 0x04b1, 0x198e: 0x0019, 0x198f: 0x02e9, 0x1990: 0x03d9, 0x1991: 0x02f1,\n\t0x1992: 0x02f9, 0x1993: 0x03f1, 0x1994: 0x0309, 0x1995: 0x0040, 0x1996: 0x0311, 0x1997: 0x00b1,\n\t0x1998: 0x0319, 0x1999: 0x0101, 0x199a: 0x0321, 0x199b: 0x0329, 0x199c: 0x0051, 0x199d: 0x0339,\n\t0x199e: 0x0751, 0x199f: 0x00b9, 0x19a0: 0x0089, 0x19a1: 0x0341, 0x19a2: 0x0349, 0x19a3: 0x0391,\n\t0x19a4: 0x00c1, 0x19a5: 0x0109, 0x19a6: 0x00c9, 0x19a7: 0x04b1, 0x19a8: 0x0019, 0x19a9: 0x02e9,\n\t0x19aa: 0x03d9, 0x19ab: 0x02f1, 0x19ac: 0x02f9, 0x19ad: 0x03f1, 0x19ae: 0x0309, 0x19af: 0x00a9,\n\t0x19b0: 0x0311, 0x19b1: 0x00b1, 0x19b2: 0x0319, 0x19b3: 0x0101, 0x19b4: 0x0321, 0x19b5: 0x0329,\n\t0x19b6: 0x0051, 0x19b7: 0x0339, 0x19b8: 0x0751, 0x19b9: 0x00b9, 0x19ba: 0x0089, 0x19bb: 0x0341,\n\t0x19bc: 0x0349, 0x19bd: 0x0391, 0x19be: 0x00c1, 0x19bf: 0x0109,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x00c9, 0x19c1: 0x04b1, 0x19c2: 0x0019, 0x19c3: 0x02e9, 0x19c4: 0x03d9, 0x19c5: 0x02f1,\n\t0x19c6: 0x02f9, 0x19c7: 0x03f1, 0x19c8: 0x0309, 0x19c9: 0x00a9, 0x19ca: 0x0311, 0x19cb: 0x00b1,\n\t0x19cc: 0x0319, 0x19cd: 0x0101, 0x19ce: 0x0321, 0x19cf: 0x0329, 0x19d0: 0x0051, 0x19d1: 0x0339,\n\t0x19d2: 0x0751, 0x19d3: 0x00b9, 0x19d4: 0x0089, 0x19d5: 0x0341, 0x19d6: 0x0349, 0x19d7: 0x0391,\n\t0x19d8: 0x00c1, 0x19d9: 0x0109, 0x19da: 0x00c9, 0x19db: 0x04b1, 0x19dc: 0x0019, 0x19dd: 0x0040,\n\t0x19de: 0x03d9, 0x19df: 0x02f1, 0x19e0: 0x0040, 0x19e1: 0x0040, 0x19e2: 0x0309, 0x19e3: 0x0040,\n\t0x19e4: 0x0040, 0x19e5: 0x00b1, 0x19e6: 0x0319, 0x19e7: 0x0040, 0x19e8: 0x0040, 0x19e9: 0x0329,\n\t0x19ea: 0x0051, 0x19eb: 0x0339, 0x19ec: 0x0751, 0x19ed: 0x0040, 0x19ee: 0x0089, 0x19ef: 0x0341,\n\t0x19f0: 0x0349, 0x19f1: 0x0391, 0x19f2: 0x00c1, 0x19f3: 0x0109, 0x19f4: 0x00c9, 0x19f5: 0x04b1,\n\t0x19f6: 0x0019, 0x19f7: 0x02e9, 0x19f8: 0x03d9, 0x19f9: 0x02f1, 0x19fa: 0x0040, 0x19fb: 0x03f1,\n\t0x19fc: 0x0040, 0x19fd: 0x00a9, 0x19fe: 0x0311, 0x19ff: 0x00b1,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x0319, 0x1a01: 0x0101, 0x1a02: 0x0321, 0x1a03: 0x0329, 0x1a04: 0x0040, 0x1a05: 0x0339,\n\t0x1a06: 0x0751, 0x1a07: 0x00b9, 0x1a08: 0x0089, 0x1a09: 0x0341, 0x1a0a: 0x0349, 0x1a0b: 0x0391,\n\t0x1a0c: 0x00c1, 0x1a0d: 0x0109, 0x1a0e: 0x00c9, 0x1a0f: 0x04b1, 0x1a10: 0x0019, 0x1a11: 0x02e9,\n\t0x1a12: 0x03d9, 0x1a13: 0x02f1, 0x1a14: 0x02f9, 0x1a15: 0x03f1, 0x1a16: 0x0309, 0x1a17: 0x00a9,\n\t0x1a18: 0x0311, 0x1a19: 0x00b1, 0x1a1a: 0x0319, 0x1a1b: 0x0101, 0x1a1c: 0x0321, 0x1a1d: 0x0329,\n\t0x1a1e: 0x0051, 0x1a1f: 0x0339, 0x1a20: 0x0751, 0x1a21: 0x00b9, 0x1a22: 0x0089, 0x1a23: 0x0341,\n\t0x1a24: 0x0349, 0x1a25: 0x0391, 0x1a26: 0x00c1, 0x1a27: 0x0109, 0x1a28: 0x00c9, 0x1a29: 0x04b1,\n\t0x1a2a: 0x0019, 0x1a2b: 0x02e9, 0x1a2c: 0x03d9, 0x1a2d: 0x02f1, 0x1a2e: 0x02f9, 0x1a2f: 0x03f1,\n\t0x1a30: 0x0309, 0x1a31: 0x00a9, 0x1a32: 0x0311, 0x1a33: 0x00b1, 0x1a34: 0x0319, 0x1a35: 0x0101,\n\t0x1a36: 0x0321, 0x1a37: 0x0329, 0x1a38: 0x0051, 0x1a39: 0x0339, 0x1a3a: 0x0751, 0x1a3b: 0x00b9,\n\t0x1a3c: 0x0089, 0x1a3d: 0x0341, 0x1a3e: 0x0349, 0x1a3f: 0x0391,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x00c1, 0x1a41: 0x0109, 0x1a42: 0x00c9, 0x1a43: 0x04b1, 0x1a44: 0x0019, 0x1a45: 0x02e9,\n\t0x1a46: 0x0040, 0x1a47: 0x02f1, 0x1a48: 0x02f9, 0x1a49: 0x03f1, 0x1a4a: 0x0309, 0x1a4b: 0x0040,\n\t0x1a4c: 0x0040, 0x1a4d: 0x00b1, 0x1a4e: 0x0319, 0x1a4f: 0x0101, 0x1a50: 0x0321, 0x1a51: 0x0329,\n\t0x1a52: 0x0051, 0x1a53: 0x0339, 0x1a54: 0x0751, 0x1a55: 0x0040, 0x1a56: 0x0089, 0x1a57: 0x0341,\n\t0x1a58: 0x0349, 0x1a59: 0x0391, 0x1a5a: 0x00c1, 0x1a5b: 0x0109, 0x1a5c: 0x00c9, 0x1a5d: 0x0040,\n\t0x1a5e: 0x0019, 0x1a5f: 0x02e9, 0x1a60: 0x03d9, 0x1a61: 0x02f1, 0x1a62: 0x02f9, 0x1a63: 0x03f1,\n\t0x1a64: 0x0309, 0x1a65: 0x00a9, 0x1a66: 0x0311, 0x1a67: 0x00b1, 0x1a68: 0x0319, 0x1a69: 0x0101,\n\t0x1a6a: 0x0321, 0x1a6b: 0x0329, 0x1a6c: 0x0051, 0x1a6d: 0x0339, 0x1a6e: 0x0751, 0x1a6f: 0x00b9,\n\t0x1a70: 0x0089, 0x1a71: 0x0341, 0x1a72: 0x0349, 0x1a73: 0x0391, 0x1a74: 0x00c1, 0x1a75: 0x0109,\n\t0x1a76: 0x00c9, 0x1a77: 0x04b1, 0x1a78: 0x0019, 0x1a79: 0x02e9, 0x1a7a: 0x0040, 0x1a7b: 0x02f1,\n\t0x1a7c: 0x02f9, 0x1a7d: 0x03f1, 0x1a7e: 0x0309, 0x1a7f: 0x0040,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x0311, 0x1a81: 0x00b1, 0x1a82: 0x0319, 0x1a83: 0x0101, 0x1a84: 0x0321, 0x1a85: 0x0040,\n\t0x1a86: 0x0051, 0x1a87: 0x0040, 0x1a88: 0x0040, 0x1a89: 0x0040, 0x1a8a: 0x0089, 0x1a8b: 0x0341,\n\t0x1a8c: 0x0349, 0x1a8d: 0x0391, 0x1a8e: 0x00c1, 0x1a8f: 0x0109, 0x1a90: 0x00c9, 0x1a91: 0x0040,\n\t0x1a92: 0x0019, 0x1a93: 0x02e9, 0x1a94: 0x03d9, 0x1a95: 0x02f1, 0x1a96: 0x02f9, 0x1a97: 0x03f1,\n\t0x1a98: 0x0309, 0x1a99: 0x00a9, 0x1a9a: 0x0311, 0x1a9b: 0x00b1, 0x1a9c: 0x0319, 0x1a9d: 0x0101,\n\t0x1a9e: 0x0321, 0x1a9f: 0x0329, 0x1aa0: 0x0051, 0x1aa1: 0x0339, 0x1aa2: 0x0751, 0x1aa3: 0x00b9,\n\t0x1aa4: 0x0089, 0x1aa5: 0x0341, 0x1aa6: 0x0349, 0x1aa7: 0x0391, 0x1aa8: 0x00c1, 0x1aa9: 0x0109,\n\t0x1aaa: 0x00c9, 0x1aab: 0x04b1, 0x1aac: 0x0019, 0x1aad: 0x02e9, 0x1aae: 0x03d9, 0x1aaf: 0x02f1,\n\t0x1ab0: 0x02f9, 0x1ab1: 0x03f1, 0x1ab2: 0x0309, 0x1ab3: 0x00a9, 0x1ab4: 0x0311, 0x1ab5: 0x00b1,\n\t0x1ab6: 0x0319, 0x1ab7: 0x0101, 0x1ab8: 0x0321, 0x1ab9: 0x0329, 0x1aba: 0x0051, 0x1abb: 0x0339,\n\t0x1abc: 0x0751, 0x1abd: 0x00b9, 0x1abe: 0x0089, 0x1abf: 0x0341,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x0349, 0x1ac1: 0x0391, 0x1ac2: 0x00c1, 0x1ac3: 0x0109, 0x1ac4: 0x00c9, 0x1ac5: 0x04b1,\n\t0x1ac6: 0x0019, 0x1ac7: 0x02e9, 0x1ac8: 0x03d9, 0x1ac9: 0x02f1, 0x1aca: 0x02f9, 0x1acb: 0x03f1,\n\t0x1acc: 0x0309, 0x1acd: 0x00a9, 0x1ace: 0x0311, 0x1acf: 0x00b1, 0x1ad0: 0x0319, 0x1ad1: 0x0101,\n\t0x1ad2: 0x0321, 0x1ad3: 0x0329, 0x1ad4: 0x0051, 0x1ad5: 0x0339, 0x1ad6: 0x0751, 0x1ad7: 0x00b9,\n\t0x1ad8: 0x0089, 0x1ad9: 0x0341, 0x1ada: 0x0349, 0x1adb: 0x0391, 0x1adc: 0x00c1, 0x1add: 0x0109,\n\t0x1ade: 0x00c9, 0x1adf: 0x04b1, 0x1ae0: 0x0019, 0x1ae1: 0x02e9, 0x1ae2: 0x03d9, 0x1ae3: 0x02f1,\n\t0x1ae4: 0x02f9, 0x1ae5: 0x03f1, 0x1ae6: 0x0309, 0x1ae7: 0x00a9, 0x1ae8: 0x0311, 0x1ae9: 0x00b1,\n\t0x1aea: 0x0319, 0x1aeb: 0x0101, 0x1aec: 0x0321, 0x1aed: 0x0329, 0x1aee: 0x0051, 0x1aef: 0x0339,\n\t0x1af0: 0x0751, 0x1af1: 0x00b9, 0x1af2: 0x0089, 0x1af3: 0x0341, 0x1af4: 0x0349, 0x1af5: 0x0391,\n\t0x1af6: 0x00c1, 0x1af7: 0x0109, 0x1af8: 0x00c9, 0x1af9: 0x04b1, 0x1afa: 0x0019, 0x1afb: 0x02e9,\n\t0x1afc: 0x03d9, 0x1afd: 0x02f1, 0x1afe: 0x02f9, 0x1aff: 0x03f1,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x0309, 0x1b01: 0x00a9, 0x1b02: 0x0311, 0x1b03: 0x00b1, 0x1b04: 0x0319, 0x1b05: 0x0101,\n\t0x1b06: 0x0321, 0x1b07: 0x0329, 0x1b08: 0x0051, 0x1b09: 0x0339, 0x1b0a: 0x0751, 0x1b0b: 0x00b9,\n\t0x1b0c: 0x0089, 0x1b0d: 0x0341, 0x1b0e: 0x0349, 0x1b0f: 0x0391, 0x1b10: 0x00c1, 0x1b11: 0x0109,\n\t0x1b12: 0x00c9, 0x1b13: 0x04b1, 0x1b14: 0x0019, 0x1b15: 0x02e9, 0x1b16: 0x03d9, 0x1b17: 0x02f1,\n\t0x1b18: 0x02f9, 0x1b19: 0x03f1, 0x1b1a: 0x0309, 0x1b1b: 0x00a9, 0x1b1c: 0x0311, 0x1b1d: 0x00b1,\n\t0x1b1e: 0x0319, 0x1b1f: 0x0101, 0x1b20: 0x0321, 0x1b21: 0x0329, 0x1b22: 0x0051, 0x1b23: 0x0339,\n\t0x1b24: 0x0751, 0x1b25: 0x00b9, 0x1b26: 0x0089, 0x1b27: 0x0341, 0x1b28: 0x0349, 0x1b29: 0x0391,\n\t0x1b2a: 0x00c1, 0x1b2b: 0x0109, 0x1b2c: 0x00c9, 0x1b2d: 0x04b1, 0x1b2e: 0x0019, 0x1b2f: 0x02e9,\n\t0x1b30: 0x03d9, 0x1b31: 0x02f1, 0x1b32: 0x02f9, 0x1b33: 0x03f1, 0x1b34: 0x0309, 0x1b35: 0x00a9,\n\t0x1b36: 0x0311, 0x1b37: 0x00b1, 0x1b38: 0x0319, 0x1b39: 0x0101, 0x1b3a: 0x0321, 0x1b3b: 0x0329,\n\t0x1b3c: 0x0051, 0x1b3d: 0x0339, 0x1b3e: 0x0751, 0x1b3f: 0x00b9,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x0089, 0x1b41: 0x0341, 0x1b42: 0x0349, 0x1b43: 0x0391, 0x1b44: 0x00c1, 0x1b45: 0x0109,\n\t0x1b46: 0x00c9, 0x1b47: 0x04b1, 0x1b48: 0x0019, 0x1b49: 0x02e9, 0x1b4a: 0x03d9, 0x1b4b: 0x02f1,\n\t0x1b4c: 0x02f9, 0x1b4d: 0x03f1, 0x1b4e: 0x0309, 0x1b4f: 0x00a9, 0x1b50: 0x0311, 0x1b51: 0x00b1,\n\t0x1b52: 0x0319, 0x1b53: 0x0101, 0x1b54: 0x0321, 0x1b55: 0x0329, 0x1b56: 0x0051, 0x1b57: 0x0339,\n\t0x1b58: 0x0751, 0x1b59: 0x00b9, 0x1b5a: 0x0089, 0x1b5b: 0x0341, 0x1b5c: 0x0349, 0x1b5d: 0x0391,\n\t0x1b5e: 0x00c1, 0x1b5f: 0x0109, 0x1b60: 0x00c9, 0x1b61: 0x04b1, 0x1b62: 0x0019, 0x1b63: 0x02e9,\n\t0x1b64: 0x03d9, 0x1b65: 0x02f1, 0x1b66: 0x02f9, 0x1b67: 0x03f1, 0x1b68: 0x0309, 0x1b69: 0x00a9,\n\t0x1b6a: 0x0311, 0x1b6b: 0x00b1, 0x1b6c: 0x0319, 0x1b6d: 0x0101, 0x1b6e: 0x0321, 0x1b6f: 0x0329,\n\t0x1b70: 0x0051, 0x1b71: 0x0339, 0x1b72: 0x0751, 0x1b73: 0x00b9, 0x1b74: 0x0089, 0x1b75: 0x0341,\n\t0x1b76: 0x0349, 0x1b77: 0x0391, 0x1b78: 0x00c1, 0x1b79: 0x0109, 0x1b7a: 0x00c9, 0x1b7b: 0x04b1,\n\t0x1b7c: 0x0019, 0x1b7d: 0x02e9, 0x1b7e: 0x03d9, 0x1b7f: 0x02f1,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x02f9, 0x1b81: 0x03f1, 0x1b82: 0x0309, 0x1b83: 0x00a9, 0x1b84: 0x0311, 0x1b85: 0x00b1,\n\t0x1b86: 0x0319, 0x1b87: 0x0101, 0x1b88: 0x0321, 0x1b89: 0x0329, 0x1b8a: 0x0051, 0x1b8b: 0x0339,\n\t0x1b8c: 0x0751, 0x1b8d: 0x00b9, 0x1b8e: 0x0089, 0x1b8f: 0x0341, 0x1b90: 0x0349, 0x1b91: 0x0391,\n\t0x1b92: 0x00c1, 0x1b93: 0x0109, 0x1b94: 0x00c9, 0x1b95: 0x04b1, 0x1b96: 0x0019, 0x1b97: 0x02e9,\n\t0x1b98: 0x03d9, 0x1b99: 0x02f1, 0x1b9a: 0x02f9, 0x1b9b: 0x03f1, 0x1b9c: 0x0309, 0x1b9d: 0x00a9,\n\t0x1b9e: 0x0311, 0x1b9f: 0x00b1, 0x1ba0: 0x0319, 0x1ba1: 0x0101, 0x1ba2: 0x0321, 0x1ba3: 0x0329,\n\t0x1ba4: 0x0051, 0x1ba5: 0x0339, 0x1ba6: 0x0751, 0x1ba7: 0x00b9, 0x1ba8: 0x0089, 0x1ba9: 0x0341,\n\t0x1baa: 0x0349, 0x1bab: 0x0391, 0x1bac: 0x00c1, 0x1bad: 0x0109, 0x1bae: 0x00c9, 0x1baf: 0x04b1,\n\t0x1bb0: 0x0019, 0x1bb1: 0x02e9, 0x1bb2: 0x03d9, 0x1bb3: 0x02f1, 0x1bb4: 0x02f9, 0x1bb5: 0x03f1,\n\t0x1bb6: 0x0309, 0x1bb7: 0x00a9, 0x1bb8: 0x0311, 0x1bb9: 0x00b1, 0x1bba: 0x0319, 0x1bbb: 0x0101,\n\t0x1bbc: 0x0321, 0x1bbd: 0x0329, 0x1bbe: 0x0051, 0x1bbf: 0x0339,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x0751, 0x1bc1: 0x00b9, 0x1bc2: 0x0089, 0x1bc3: 0x0341, 0x1bc4: 0x0349, 0x1bc5: 0x0391,\n\t0x1bc6: 0x00c1, 0x1bc7: 0x0109, 0x1bc8: 0x00c9, 0x1bc9: 0x04b1, 0x1bca: 0x0019, 0x1bcb: 0x02e9,\n\t0x1bcc: 0x03d9, 0x1bcd: 0x02f1, 0x1bce: 0x02f9, 0x1bcf: 0x03f1, 0x1bd0: 0x0309, 0x1bd1: 0x00a9,\n\t0x1bd2: 0x0311, 0x1bd3: 0x00b1, 0x1bd4: 0x0319, 0x1bd5: 0x0101, 0x1bd6: 0x0321, 0x1bd7: 0x0329,\n\t0x1bd8: 0x0051, 0x1bd9: 0x0339, 0x1bda: 0x0751, 0x1bdb: 0x00b9, 0x1bdc: 0x0089, 0x1bdd: 0x0341,\n\t0x1bde: 0x0349, 0x1bdf: 0x0391, 0x1be0: 0x00c1, 0x1be1: 0x0109, 0x1be2: 0x00c9, 0x1be3: 0x04b1,\n\t0x1be4: 0x23e1, 0x1be5: 0x23e9, 0x1be6: 0x0040, 0x1be7: 0x0040, 0x1be8: 0x23f1, 0x1be9: 0x0399,\n\t0x1bea: 0x03a1, 0x1beb: 0x03a9, 0x1bec: 0x23f9, 0x1bed: 0x2401, 0x1bee: 0x2409, 0x1bef: 0x04d1,\n\t0x1bf0: 0x05f9, 0x1bf1: 0x2411, 0x1bf2: 0x2419, 0x1bf3: 0x2421, 0x1bf4: 0x2429, 0x1bf5: 0x2431,\n\t0x1bf6: 0x2439, 0x1bf7: 0x0799, 0x1bf8: 0x03c1, 0x1bf9: 0x04d1, 0x1bfa: 0x2441, 0x1bfb: 0x2449,\n\t0x1bfc: 0x2451, 0x1bfd: 0x03b1, 0x1bfe: 0x03b9, 0x1bff: 0x2459,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x0769, 0x1c01: 0x2461, 0x1c02: 0x23f1, 0x1c03: 0x0399, 0x1c04: 0x03a1, 0x1c05: 0x03a9,\n\t0x1c06: 0x23f9, 0x1c07: 0x2401, 0x1c08: 0x2409, 0x1c09: 0x04d1, 0x1c0a: 0x05f9, 0x1c0b: 0x2411,\n\t0x1c0c: 0x2419, 0x1c0d: 0x2421, 0x1c0e: 0x2429, 0x1c0f: 0x2431, 0x1c10: 0x2439, 0x1c11: 0x0799,\n\t0x1c12: 0x03c1, 0x1c13: 0x2441, 0x1c14: 0x2441, 0x1c15: 0x2449, 0x1c16: 0x2451, 0x1c17: 0x03b1,\n\t0x1c18: 0x03b9, 0x1c19: 0x2459, 0x1c1a: 0x0769, 0x1c1b: 0x2469, 0x1c1c: 0x23f9, 0x1c1d: 0x04d1,\n\t0x1c1e: 0x2411, 0x1c1f: 0x03b1, 0x1c20: 0x03c1, 0x1c21: 0x0799, 0x1c22: 0x23f1, 0x1c23: 0x0399,\n\t0x1c24: 0x03a1, 0x1c25: 0x03a9, 0x1c26: 0x23f9, 0x1c27: 0x2401, 0x1c28: 0x2409, 0x1c29: 0x04d1,\n\t0x1c2a: 0x05f9, 0x1c2b: 0x2411, 0x1c2c: 0x2419, 0x1c2d: 0x2421, 0x1c2e: 0x2429, 0x1c2f: 0x2431,\n\t0x1c30: 0x2439, 0x1c31: 0x0799, 0x1c32: 0x03c1, 0x1c33: 0x04d1, 0x1c34: 0x2441, 0x1c35: 0x2449,\n\t0x1c36: 0x2451, 0x1c37: 0x03b1, 0x1c38: 0x03b9, 0x1c39: 0x2459, 0x1c3a: 0x0769, 0x1c3b: 0x2461,\n\t0x1c3c: 0x23f1, 0x1c3d: 0x0399, 0x1c3e: 0x03a1, 0x1c3f: 0x03a9,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0x23f9, 0x1c41: 0x2401, 0x1c42: 0x2409, 0x1c43: 0x04d1, 0x1c44: 0x05f9, 0x1c45: 0x2411,\n\t0x1c46: 0x2419, 0x1c47: 0x2421, 0x1c48: 0x2429, 0x1c49: 0x2431, 0x1c4a: 0x2439, 0x1c4b: 0x0799,\n\t0x1c4c: 0x03c1, 0x1c4d: 0x2441, 0x1c4e: 0x2441, 0x1c4f: 0x2449, 0x1c50: 0x2451, 0x1c51: 0x03b1,\n\t0x1c52: 0x03b9, 0x1c53: 0x2459, 0x1c54: 0x0769, 0x1c55: 0x2469, 0x1c56: 0x23f9, 0x1c57: 0x04d1,\n\t0x1c58: 0x2411, 0x1c59: 0x03b1, 0x1c5a: 0x03c1, 0x1c5b: 0x0799, 0x1c5c: 0x23f1, 0x1c5d: 0x0399,\n\t0x1c5e: 0x03a1, 0x1c5f: 0x03a9, 0x1c60: 0x23f9, 0x1c61: 0x2401, 0x1c62: 0x2409, 0x1c63: 0x04d1,\n\t0x1c64: 0x05f9, 0x1c65: 0x2411, 0x1c66: 0x2419, 0x1c67: 0x2421, 0x1c68: 0x2429, 0x1c69: 0x2431,\n\t0x1c6a: 0x2439, 0x1c6b: 0x0799, 0x1c6c: 0x03c1, 0x1c6d: 0x04d1, 0x1c6e: 0x2441, 0x1c6f: 0x2449,\n\t0x1c70: 0x2451, 0x1c71: 0x03b1, 0x1c72: 0x03b9, 0x1c73: 0x2459, 0x1c74: 0x0769, 0x1c75: 0x2461,\n\t0x1c76: 0x23f1, 0x1c77: 0x0399, 0x1c78: 0x03a1, 0x1c79: 0x03a9, 0x1c7a: 0x23f9, 0x1c7b: 0x2401,\n\t0x1c7c: 0x2409, 0x1c7d: 0x04d1, 0x1c7e: 0x05f9, 0x1c7f: 0x2411,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0x2419, 0x1c81: 0x2421, 0x1c82: 0x2429, 0x1c83: 0x2431, 0x1c84: 0x2439, 0x1c85: 0x0799,\n\t0x1c86: 0x03c1, 0x1c87: 0x2441, 0x1c88: 0x2441, 0x1c89: 0x2449, 0x1c8a: 0x2451, 0x1c8b: 0x03b1,\n\t0x1c8c: 0x03b9, 0x1c8d: 0x2459, 0x1c8e: 0x0769, 0x1c8f: 0x2469, 0x1c90: 0x23f9, 0x1c91: 0x04d1,\n\t0x1c92: 0x2411, 0x1c93: 0x03b1, 0x1c94: 0x03c1, 0x1c95: 0x0799, 0x1c96: 0x23f1, 0x1c97: 0x0399,\n\t0x1c98: 0x03a1, 0x1c99: 0x03a9, 0x1c9a: 0x23f9, 0x1c9b: 0x2401, 0x1c9c: 0x2409, 0x1c9d: 0x04d1,\n\t0x1c9e: 0x05f9, 0x1c9f: 0x2411, 0x1ca0: 0x2419, 0x1ca1: 0x2421, 0x1ca2: 0x2429, 0x1ca3: 0x2431,\n\t0x1ca4: 0x2439, 0x1ca5: 0x0799, 0x1ca6: 0x03c1, 0x1ca7: 0x04d1, 0x1ca8: 0x2441, 0x1ca9: 0x2449,\n\t0x1caa: 0x2451, 0x1cab: 0x03b1, 0x1cac: 0x03b9, 0x1cad: 0x2459, 0x1cae: 0x0769, 0x1caf: 0x2461,\n\t0x1cb0: 0x23f1, 0x1cb1: 0x0399, 0x1cb2: 0x03a1, 0x1cb3: 0x03a9, 0x1cb4: 0x23f9, 0x1cb5: 0x2401,\n\t0x1cb6: 0x2409, 0x1cb7: 0x04d1, 0x1cb8: 0x05f9, 0x1cb9: 0x2411, 0x1cba: 0x2419, 0x1cbb: 0x2421,\n\t0x1cbc: 0x2429, 0x1cbd: 0x2431, 0x1cbe: 0x2439, 0x1cbf: 0x0799,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x03c1, 0x1cc1: 0x2441, 0x1cc2: 0x2441, 0x1cc3: 0x2449, 0x1cc4: 0x2451, 0x1cc5: 0x03b1,\n\t0x1cc6: 0x03b9, 0x1cc7: 0x2459, 0x1cc8: 0x0769, 0x1cc9: 0x2469, 0x1cca: 0x23f9, 0x1ccb: 0x04d1,\n\t0x1ccc: 0x2411, 0x1ccd: 0x03b1, 0x1cce: 0x03c1, 0x1ccf: 0x0799, 0x1cd0: 0x23f1, 0x1cd1: 0x0399,\n\t0x1cd2: 0x03a1, 0x1cd3: 0x03a9, 0x1cd4: 0x23f9, 0x1cd5: 0x2401, 0x1cd6: 0x2409, 0x1cd7: 0x04d1,\n\t0x1cd8: 0x05f9, 0x1cd9: 0x2411, 0x1cda: 0x2419, 0x1cdb: 0x2421, 0x1cdc: 0x2429, 0x1cdd: 0x2431,\n\t0x1cde: 0x2439, 0x1cdf: 0x0799, 0x1ce0: 0x03c1, 0x1ce1: 0x04d1, 0x1ce2: 0x2441, 0x1ce3: 0x2449,\n\t0x1ce4: 0x2451, 0x1ce5: 0x03b1, 0x1ce6: 0x03b9, 0x1ce7: 0x2459, 0x1ce8: 0x0769, 0x1ce9: 0x2461,\n\t0x1cea: 0x23f1, 0x1ceb: 0x0399, 0x1cec: 0x03a1, 0x1ced: 0x03a9, 0x1cee: 0x23f9, 0x1cef: 0x2401,\n\t0x1cf0: 0x2409, 0x1cf1: 0x04d1, 0x1cf2: 0x05f9, 0x1cf3: 0x2411, 0x1cf4: 0x2419, 0x1cf5: 0x2421,\n\t0x1cf6: 0x2429, 0x1cf7: 0x2431, 0x1cf8: 0x2439, 0x1cf9: 0x0799, 0x1cfa: 0x03c1, 0x1cfb: 0x2441,\n\t0x1cfc: 0x2441, 0x1cfd: 0x2449, 0x1cfe: 0x2451, 0x1cff: 0x03b1,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0x03b9, 0x1d01: 0x2459, 0x1d02: 0x0769, 0x1d03: 0x2469, 0x1d04: 0x23f9, 0x1d05: 0x04d1,\n\t0x1d06: 0x2411, 0x1d07: 0x03b1, 0x1d08: 0x03c1, 0x1d09: 0x0799, 0x1d0a: 0x2471, 0x1d0b: 0x2471,\n\t0x1d0c: 0x0040, 0x1d0d: 0x0040, 0x1d0e: 0x06e1, 0x1d0f: 0x0049, 0x1d10: 0x0029, 0x1d11: 0x0031,\n\t0x1d12: 0x06e9, 0x1d13: 0x06f1, 0x1d14: 0x06f9, 0x1d15: 0x0701, 0x1d16: 0x0709, 0x1d17: 0x0711,\n\t0x1d18: 0x06e1, 0x1d19: 0x0049, 0x1d1a: 0x0029, 0x1d1b: 0x0031, 0x1d1c: 0x06e9, 0x1d1d: 0x06f1,\n\t0x1d1e: 0x06f9, 0x1d1f: 0x0701, 0x1d20: 0x0709, 0x1d21: 0x0711, 0x1d22: 0x06e1, 0x1d23: 0x0049,\n\t0x1d24: 0x0029, 0x1d25: 0x0031, 0x1d26: 0x06e9, 0x1d27: 0x06f1, 0x1d28: 0x06f9, 0x1d29: 0x0701,\n\t0x1d2a: 0x0709, 0x1d2b: 0x0711, 0x1d2c: 0x06e1, 0x1d2d: 0x0049, 0x1d2e: 0x0029, 0x1d2f: 0x0031,\n\t0x1d30: 0x06e9, 0x1d31: 0x06f1, 0x1d32: 0x06f9, 0x1d33: 0x0701, 0x1d34: 0x0709, 0x1d35: 0x0711,\n\t0x1d36: 0x06e1, 0x1d37: 0x0049, 0x1d38: 0x0029, 0x1d39: 0x0031, 0x1d3a: 0x06e9, 0x1d3b: 0x06f1,\n\t0x1d3c: 0x06f9, 0x1d3d: 0x0701, 0x1d3e: 0x0709, 0x1d3f: 0x0711,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x3308, 0x1d41: 0x3308, 0x1d42: 0x3308, 0x1d43: 0x3308, 0x1d44: 0x3308, 0x1d45: 0x3308,\n\t0x1d46: 0x3308, 0x1d47: 0x0040, 0x1d48: 0x3308, 0x1d49: 0x3308, 0x1d4a: 0x3308, 0x1d4b: 0x3308,\n\t0x1d4c: 0x3308, 0x1d4d: 0x3308, 0x1d4e: 0x3308, 0x1d4f: 0x3308, 0x1d50: 0x3308, 0x1d51: 0x3308,\n\t0x1d52: 0x3308, 0x1d53: 0x3308, 0x1d54: 0x3308, 0x1d55: 0x3308, 0x1d56: 0x3308, 0x1d57: 0x3308,\n\t0x1d58: 0x3308, 0x1d59: 0x0040, 0x1d5a: 0x0040, 0x1d5b: 0x3308, 0x1d5c: 0x3308, 0x1d5d: 0x3308,\n\t0x1d5e: 0x3308, 0x1d5f: 0x3308, 0x1d60: 0x3308, 0x1d61: 0x3308, 0x1d62: 0x0040, 0x1d63: 0x3308,\n\t0x1d64: 0x3308, 0x1d65: 0x0040, 0x1d66: 0x3308, 0x1d67: 0x3308, 0x1d68: 0x3308, 0x1d69: 0x3308,\n\t0x1d6a: 0x3308, 0x1d6b: 0x0040, 0x1d6c: 0x0040, 0x1d6d: 0x0040, 0x1d6e: 0x0040, 0x1d6f: 0x0040,\n\t0x1d70: 0x2479, 0x1d71: 0x2481, 0x1d72: 0x02a9, 0x1d73: 0x2489, 0x1d74: 0x02b1, 0x1d75: 0x2491,\n\t0x1d76: 0x2499, 0x1d77: 0x24a1, 0x1d78: 0x24a9, 0x1d79: 0x24b1, 0x1d7a: 0x24b9, 0x1d7b: 0x24c1,\n\t0x1d7c: 0x02b9, 0x1d7d: 0x24c9, 0x1d7e: 0x24d1, 0x1d7f: 0x02c1,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0x02c9, 0x1d81: 0x24d9, 0x1d82: 0x24e1, 0x1d83: 0x24e9, 0x1d84: 0x24f1, 0x1d85: 0x24f9,\n\t0x1d86: 0x2501, 0x1d87: 0x2509, 0x1d88: 0x2511, 0x1d89: 0x2519, 0x1d8a: 0x2521, 0x1d8b: 0x2529,\n\t0x1d8c: 0x2531, 0x1d8d: 0x2539, 0x1d8e: 0x2541, 0x1d8f: 0x2549, 0x1d90: 0x2551, 0x1d91: 0x2479,\n\t0x1d92: 0x2481, 0x1d93: 0x02a9, 0x1d94: 0x2489, 0x1d95: 0x02b1, 0x1d96: 0x2491, 0x1d97: 0x2499,\n\t0x1d98: 0x24a1, 0x1d99: 0x24a9, 0x1d9a: 0x24b1, 0x1d9b: 0x24b9, 0x1d9c: 0x02b9, 0x1d9d: 0x24c9,\n\t0x1d9e: 0x02c1, 0x1d9f: 0x24d9, 0x1da0: 0x24e1, 0x1da1: 0x24e9, 0x1da2: 0x24f1, 0x1da3: 0x24f9,\n\t0x1da4: 0x2501, 0x1da5: 0x02d1, 0x1da6: 0x2509, 0x1da7: 0x2559, 0x1da8: 0x2531, 0x1da9: 0x2561,\n\t0x1daa: 0x2569, 0x1dab: 0x2571, 0x1dac: 0x2579, 0x1dad: 0x2581, 0x1dae: 0x0040, 0x1daf: 0x0040,\n\t0x1db0: 0x0040, 0x1db1: 0x0040, 0x1db2: 0x0040, 0x1db3: 0x0040, 0x1db4: 0x0040, 0x1db5: 0x0040,\n\t0x1db6: 0x0040, 0x1db7: 0x0040, 0x1db8: 0x0040, 0x1db9: 0x0040, 0x1dba: 0x0040, 0x1dbb: 0x0040,\n\t0x1dbc: 0x0040, 0x1dbd: 0x0040, 0x1dbe: 0x0040, 0x1dbf: 0x0040,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0xe115, 0x1dc1: 0xe115, 0x1dc2: 0xe135, 0x1dc3: 0xe135, 0x1dc4: 0xe115, 0x1dc5: 0xe115,\n\t0x1dc6: 0xe175, 0x1dc7: 0xe175, 0x1dc8: 0xe115, 0x1dc9: 0xe115, 0x1dca: 0xe135, 0x1dcb: 0xe135,\n\t0x1dcc: 0xe115, 0x1dcd: 0xe115, 0x1dce: 0xe1f5, 0x1dcf: 0xe1f5, 0x1dd0: 0xe115, 0x1dd1: 0xe115,\n\t0x1dd2: 0xe135, 0x1dd3: 0xe135, 0x1dd4: 0xe115, 0x1dd5: 0xe115, 0x1dd6: 0xe175, 0x1dd7: 0xe175,\n\t0x1dd8: 0xe115, 0x1dd9: 0xe115, 0x1dda: 0xe135, 0x1ddb: 0xe135, 0x1ddc: 0xe115, 0x1ddd: 0xe115,\n\t0x1dde: 0x8ca5, 0x1ddf: 0x8ca5, 0x1de0: 0x04b5, 0x1de1: 0x04b5, 0x1de2: 0x0a08, 0x1de3: 0x0a08,\n\t0x1de4: 0x0a08, 0x1de5: 0x0a08, 0x1de6: 0x0a08, 0x1de7: 0x0a08, 0x1de8: 0x0a08, 0x1de9: 0x0a08,\n\t0x1dea: 0x0a08, 0x1deb: 0x0a08, 0x1dec: 0x0a08, 0x1ded: 0x0a08, 0x1dee: 0x0a08, 0x1def: 0x0a08,\n\t0x1df0: 0x0a08, 0x1df1: 0x0a08, 0x1df2: 0x0a08, 0x1df3: 0x0a08, 0x1df4: 0x0a08, 0x1df5: 0x0a08,\n\t0x1df6: 0x0a08, 0x1df7: 0x0a08, 0x1df8: 0x0a08, 0x1df9: 0x0a08, 0x1dfa: 0x0a08, 0x1dfb: 0x0a08,\n\t0x1dfc: 0x0a08, 0x1dfd: 0x0a08, 0x1dfe: 0x0a08, 0x1dff: 0x0a08,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0x20b1, 0x1e01: 0x20b9, 0x1e02: 0x20d9, 0x1e03: 0x20f1, 0x1e04: 0x0040, 0x1e05: 0x2189,\n\t0x1e06: 0x2109, 0x1e07: 0x20e1, 0x1e08: 0x2131, 0x1e09: 0x2191, 0x1e0a: 0x2161, 0x1e0b: 0x2169,\n\t0x1e0c: 0x2171, 0x1e0d: 0x2179, 0x1e0e: 0x2111, 0x1e0f: 0x2141, 0x1e10: 0x2151, 0x1e11: 0x2121,\n\t0x1e12: 0x2159, 0x1e13: 0x2101, 0x1e14: 0x2119, 0x1e15: 0x20c9, 0x1e16: 0x20d1, 0x1e17: 0x20e9,\n\t0x1e18: 0x20f9, 0x1e19: 0x2129, 0x1e1a: 0x2139, 0x1e1b: 0x2149, 0x1e1c: 0x2589, 0x1e1d: 0x1689,\n\t0x1e1e: 0x2591, 0x1e1f: 0x2599, 0x1e20: 0x0040, 0x1e21: 0x20b9, 0x1e22: 0x20d9, 0x1e23: 0x0040,\n\t0x1e24: 0x2181, 0x1e25: 0x0040, 0x1e26: 0x0040, 0x1e27: 0x20e1, 0x1e28: 0x0040, 0x1e29: 0x2191,\n\t0x1e2a: 0x2161, 0x1e2b: 0x2169, 0x1e2c: 0x2171, 0x1e2d: 0x2179, 0x1e2e: 0x2111, 0x1e2f: 0x2141,\n\t0x1e30: 0x2151, 0x1e31: 0x2121, 0x1e32: 0x2159, 0x1e33: 0x0040, 0x1e34: 0x2119, 0x1e35: 0x20c9,\n\t0x1e36: 0x20d1, 0x1e37: 0x20e9, 0x1e38: 0x0040, 0x1e39: 0x2129, 0x1e3a: 0x0040, 0x1e3b: 0x2149,\n\t0x1e3c: 0x0040, 0x1e3d: 0x0040, 0x1e3e: 0x0040, 0x1e3f: 0x0040,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0x0040, 0x1e41: 0x0040, 0x1e42: 0x20d9, 0x1e43: 0x0040, 0x1e44: 0x0040, 0x1e45: 0x0040,\n\t0x1e46: 0x0040, 0x1e47: 0x20e1, 0x1e48: 0x0040, 0x1e49: 0x2191, 0x1e4a: 0x0040, 0x1e4b: 0x2169,\n\t0x1e4c: 0x0040, 0x1e4d: 0x2179, 0x1e4e: 0x2111, 0x1e4f: 0x2141, 0x1e50: 0x0040, 0x1e51: 0x2121,\n\t0x1e52: 0x2159, 0x1e53: 0x0040, 0x1e54: 0x2119, 0x1e55: 0x0040, 0x1e56: 0x0040, 0x1e57: 0x20e9,\n\t0x1e58: 0x0040, 0x1e59: 0x2129, 0x1e5a: 0x0040, 0x1e5b: 0x2149, 0x1e5c: 0x0040, 0x1e5d: 0x1689,\n\t0x1e5e: 0x0040, 0x1e5f: 0x2599, 0x1e60: 0x0040, 0x1e61: 0x20b9, 0x1e62: 0x20d9, 0x1e63: 0x0040,\n\t0x1e64: 0x2181, 0x1e65: 0x0040, 0x1e66: 0x0040, 0x1e67: 0x20e1, 0x1e68: 0x2131, 0x1e69: 0x2191,\n\t0x1e6a: 0x2161, 0x1e6b: 0x0040, 0x1e6c: 0x2171, 0x1e6d: 0x2179, 0x1e6e: 0x2111, 0x1e6f: 0x2141,\n\t0x1e70: 0x2151, 0x1e71: 0x2121, 0x1e72: 0x2159, 0x1e73: 0x0040, 0x1e74: 0x2119, 0x1e75: 0x20c9,\n\t0x1e76: 0x20d1, 0x1e77: 0x20e9, 0x1e78: 0x0040, 0x1e79: 0x2129, 0x1e7a: 0x2139, 0x1e7b: 0x2149,\n\t0x1e7c: 0x2589, 0x1e7d: 0x0040, 0x1e7e: 0x2591, 0x1e7f: 0x0040,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0x20b1, 0x1e81: 0x20b9, 0x1e82: 0x20d9, 0x1e83: 0x20f1, 0x1e84: 0x2181, 0x1e85: 0x2189,\n\t0x1e86: 0x2109, 0x1e87: 0x20e1, 0x1e88: 0x2131, 0x1e89: 0x2191, 0x1e8a: 0x0040, 0x1e8b: 0x2169,\n\t0x1e8c: 0x2171, 0x1e8d: 0x2179, 0x1e8e: 0x2111, 0x1e8f: 0x2141, 0x1e90: 0x2151, 0x1e91: 0x2121,\n\t0x1e92: 0x2159, 0x1e93: 0x2101, 0x1e94: 0x2119, 0x1e95: 0x20c9, 0x1e96: 0x20d1, 0x1e97: 0x20e9,\n\t0x1e98: 0x20f9, 0x1e99: 0x2129, 0x1e9a: 0x2139, 0x1e9b: 0x2149, 0x1e9c: 0x0040, 0x1e9d: 0x0040,\n\t0x1e9e: 0x0040, 0x1e9f: 0x0040, 0x1ea0: 0x0040, 0x1ea1: 0x20b9, 0x1ea2: 0x20d9, 0x1ea3: 0x20f1,\n\t0x1ea4: 0x0040, 0x1ea5: 0x2189, 0x1ea6: 0x2109, 0x1ea7: 0x20e1, 0x1ea8: 0x2131, 0x1ea9: 0x2191,\n\t0x1eaa: 0x0040, 0x1eab: 0x2169, 0x1eac: 0x2171, 0x1ead: 0x2179, 0x1eae: 0x2111, 0x1eaf: 0x2141,\n\t0x1eb0: 0x2151, 0x1eb1: 0x2121, 0x1eb2: 0x2159, 0x1eb3: 0x2101, 0x1eb4: 0x2119, 0x1eb5: 0x20c9,\n\t0x1eb6: 0x20d1, 0x1eb7: 0x20e9, 0x1eb8: 0x20f9, 0x1eb9: 0x2129, 0x1eba: 0x2139, 0x1ebb: 0x2149,\n\t0x1ebc: 0x0040, 0x1ebd: 0x0040, 0x1ebe: 0x0040, 0x1ebf: 0x0040,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0x0040, 0x1ec1: 0x25a2, 0x1ec2: 0x25aa, 0x1ec3: 0x25b2, 0x1ec4: 0x25ba, 0x1ec5: 0x25c2,\n\t0x1ec6: 0x25ca, 0x1ec7: 0x25d2, 0x1ec8: 0x25da, 0x1ec9: 0x25e2, 0x1eca: 0x25ea, 0x1ecb: 0x0018,\n\t0x1ecc: 0x0018, 0x1ecd: 0x0018, 0x1ece: 0x0018, 0x1ecf: 0x0018, 0x1ed0: 0x25f2, 0x1ed1: 0x25fa,\n\t0x1ed2: 0x2602, 0x1ed3: 0x260a, 0x1ed4: 0x2612, 0x1ed5: 0x261a, 0x1ed6: 0x2622, 0x1ed7: 0x262a,\n\t0x1ed8: 0x2632, 0x1ed9: 0x263a, 0x1eda: 0x2642, 0x1edb: 0x264a, 0x1edc: 0x2652, 0x1edd: 0x265a,\n\t0x1ede: 0x2662, 0x1edf: 0x266a, 0x1ee0: 0x2672, 0x1ee1: 0x267a, 0x1ee2: 0x2682, 0x1ee3: 0x268a,\n\t0x1ee4: 0x2692, 0x1ee5: 0x269a, 0x1ee6: 0x26a2, 0x1ee7: 0x26aa, 0x1ee8: 0x26b2, 0x1ee9: 0x26ba,\n\t0x1eea: 0x26c1, 0x1eeb: 0x03d9, 0x1eec: 0x00b9, 0x1eed: 0x1239, 0x1eee: 0x26c9, 0x1eef: 0x0018,\n\t0x1ef0: 0x0019, 0x1ef1: 0x02e9, 0x1ef2: 0x03d9, 0x1ef3: 0x02f1, 0x1ef4: 0x02f9, 0x1ef5: 0x03f1,\n\t0x1ef6: 0x0309, 0x1ef7: 0x00a9, 0x1ef8: 0x0311, 0x1ef9: 0x00b1, 0x1efa: 0x0319, 0x1efb: 0x0101,\n\t0x1efc: 0x0321, 0x1efd: 0x0329, 0x1efe: 0x0051, 0x1eff: 0x0339,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0x0751, 0x1f01: 0x00b9, 0x1f02: 0x0089, 0x1f03: 0x0341, 0x1f04: 0x0349, 0x1f05: 0x0391,\n\t0x1f06: 0x00c1, 0x1f07: 0x0109, 0x1f08: 0x00c9, 0x1f09: 0x04b1, 0x1f0a: 0x26d1, 0x1f0b: 0x11f9,\n\t0x1f0c: 0x26d9, 0x1f0d: 0x04d9, 0x1f0e: 0x26e1, 0x1f0f: 0x26e9, 0x1f10: 0x0018, 0x1f11: 0x0018,\n\t0x1f12: 0x0018, 0x1f13: 0x0018, 0x1f14: 0x0018, 0x1f15: 0x0018, 0x1f16: 0x0018, 0x1f17: 0x0018,\n\t0x1f18: 0x0018, 0x1f19: 0x0018, 0x1f1a: 0x0018, 0x1f1b: 0x0018, 0x1f1c: 0x0018, 0x1f1d: 0x0018,\n\t0x1f1e: 0x0018, 0x1f1f: 0x0018, 0x1f20: 0x0018, 0x1f21: 0x0018, 0x1f22: 0x0018, 0x1f23: 0x0018,\n\t0x1f24: 0x0018, 0x1f25: 0x0018, 0x1f26: 0x0018, 0x1f27: 0x0018, 0x1f28: 0x0018, 0x1f29: 0x0018,\n\t0x1f2a: 0x26f1, 0x1f2b: 0x26f9, 0x1f2c: 0x2701, 0x1f2d: 0x0018, 0x1f2e: 0x0018, 0x1f2f: 0x0018,\n\t0x1f30: 0x0018, 0x1f31: 0x0018, 0x1f32: 0x0018, 0x1f33: 0x0018, 0x1f34: 0x0018, 0x1f35: 0x0018,\n\t0x1f36: 0x0018, 0x1f37: 0x0018, 0x1f38: 0x0018, 0x1f39: 0x0018, 0x1f3a: 0x0018, 0x1f3b: 0x0018,\n\t0x1f3c: 0x0018, 0x1f3d: 0x0018, 0x1f3e: 0x0018, 0x1f3f: 0x0018,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0x2711, 0x1f41: 0x2719, 0x1f42: 0x2721, 0x1f43: 0x0040, 0x1f44: 0x0040, 0x1f45: 0x0040,\n\t0x1f46: 0x0040, 0x1f47: 0x0040, 0x1f48: 0x0040, 0x1f49: 0x0040, 0x1f4a: 0x0040, 0x1f4b: 0x0040,\n\t0x1f4c: 0x0040, 0x1f4d: 0x0040, 0x1f4e: 0x0040, 0x1f4f: 0x0040, 0x1f50: 0x2729, 0x1f51: 0x2731,\n\t0x1f52: 0x2739, 0x1f53: 0x2741, 0x1f54: 0x2749, 0x1f55: 0x2751, 0x1f56: 0x2759, 0x1f57: 0x2761,\n\t0x1f58: 0x2769, 0x1f59: 0x2771, 0x1f5a: 0x2779, 0x1f5b: 0x2781, 0x1f5c: 0x2789, 0x1f5d: 0x2791,\n\t0x1f5e: 0x2799, 0x1f5f: 0x27a1, 0x1f60: 0x27a9, 0x1f61: 0x27b1, 0x1f62: 0x27b9, 0x1f63: 0x27c1,\n\t0x1f64: 0x27c9, 0x1f65: 0x27d1, 0x1f66: 0x27d9, 0x1f67: 0x27e1, 0x1f68: 0x27e9, 0x1f69: 0x27f1,\n\t0x1f6a: 0x27f9, 0x1f6b: 0x2801, 0x1f6c: 0x2809, 0x1f6d: 0x2811, 0x1f6e: 0x2819, 0x1f6f: 0x2821,\n\t0x1f70: 0x2829, 0x1f71: 0x2831, 0x1f72: 0x2839, 0x1f73: 0x2841, 0x1f74: 0x2849, 0x1f75: 0x2851,\n\t0x1f76: 0x2859, 0x1f77: 0x2861, 0x1f78: 0x2869, 0x1f79: 0x2871, 0x1f7a: 0x2879, 0x1f7b: 0x2881,\n\t0x1f7c: 0x0040, 0x1f7d: 0x0040, 0x1f7e: 0x0040, 0x1f7f: 0x0040,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0x28e1, 0x1f81: 0x28e9, 0x1f82: 0x28f1, 0x1f83: 0x8cbd, 0x1f84: 0x28f9, 0x1f85: 0x2901,\n\t0x1f86: 0x2909, 0x1f87: 0x2911, 0x1f88: 0x2919, 0x1f89: 0x2921, 0x1f8a: 0x2929, 0x1f8b: 0x2931,\n\t0x1f8c: 0x2939, 0x1f8d: 0x8cdd, 0x1f8e: 0x2941, 0x1f8f: 0x2949, 0x1f90: 0x2951, 0x1f91: 0x2959,\n\t0x1f92: 0x8cfd, 0x1f93: 0x2961, 0x1f94: 0x2969, 0x1f95: 0x2799, 0x1f96: 0x8d1d, 0x1f97: 0x2971,\n\t0x1f98: 0x2979, 0x1f99: 0x2981, 0x1f9a: 0x2989, 0x1f9b: 0x2991, 0x1f9c: 0x8d3d, 0x1f9d: 0x2999,\n\t0x1f9e: 0x29a1, 0x1f9f: 0x29a9, 0x1fa0: 0x29b1, 0x1fa1: 0x29b9, 0x1fa2: 0x2871, 0x1fa3: 0x29c1,\n\t0x1fa4: 0x29c9, 0x1fa5: 0x29d1, 0x1fa6: 0x29d9, 0x1fa7: 0x29e1, 0x1fa8: 0x29e9, 0x1fa9: 0x29f1,\n\t0x1faa: 0x29f9, 0x1fab: 0x2a01, 0x1fac: 0x2a09, 0x1fad: 0x2a11, 0x1fae: 0x2a19, 0x1faf: 0x2a21,\n\t0x1fb0: 0x2a29, 0x1fb1: 0x2a31, 0x1fb2: 0x2a31, 0x1fb3: 0x2a31, 0x1fb4: 0x8d5d, 0x1fb5: 0x2a39,\n\t0x1fb6: 0x2a41, 0x1fb7: 0x2a49, 0x1fb8: 0x8d7d, 0x1fb9: 0x2a51, 0x1fba: 0x2a59, 0x1fbb: 0x2a61,\n\t0x1fbc: 0x2a69, 0x1fbd: 0x2a71, 0x1fbe: 0x2a79, 0x1fbf: 0x2a81,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1fc0: 0x2a89, 0x1fc1: 0x2a91, 0x1fc2: 0x2a99, 0x1fc3: 0x2aa1, 0x1fc4: 0x2aa9, 0x1fc5: 0x2ab1,\n\t0x1fc6: 0x2ab1, 0x1fc7: 0x2ab9, 0x1fc8: 0x2ac1, 0x1fc9: 0x2ac9, 0x1fca: 0x2ad1, 0x1fcb: 0x2ad9,\n\t0x1fcc: 0x2ae1, 0x1fcd: 0x2ae9, 0x1fce: 0x2af1, 0x1fcf: 0x2af9, 0x1fd0: 0x2b01, 0x1fd1: 0x2b09,\n\t0x1fd2: 0x2b11, 0x1fd3: 0x2b19, 0x1fd4: 0x2b21, 0x1fd5: 0x2b29, 0x1fd6: 0x2b31, 0x1fd7: 0x2b39,\n\t0x1fd8: 0x2b41, 0x1fd9: 0x8d9d, 0x1fda: 0x2b49, 0x1fdb: 0x2b51, 0x1fdc: 0x2b59, 0x1fdd: 0x2751,\n\t0x1fde: 0x2b61, 0x1fdf: 0x2b69, 0x1fe0: 0x8dbd, 0x1fe1: 0x8ddd, 0x1fe2: 0x2b71, 0x1fe3: 0x2b79,\n\t0x1fe4: 0x2b81, 0x1fe5: 0x2b89, 0x1fe6: 0x2b91, 0x1fe7: 0x2b99, 0x1fe8: 0x2040, 0x1fe9: 0x2ba1,\n\t0x1fea: 0x2ba9, 0x1feb: 0x2ba9, 0x1fec: 0x8dfd, 0x1fed: 0x2bb1, 0x1fee: 0x2bb9, 0x1fef: 0x2bc1,\n\t0x1ff0: 0x2bc9, 0x1ff1: 0x8e1d, 0x1ff2: 0x2bd1, 0x1ff3: 0x2bd9, 0x1ff4: 0x2040, 0x1ff5: 0x2be1,\n\t0x1ff6: 0x2be9, 0x1ff7: 0x2bf1, 0x1ff8: 0x2bf9, 0x1ff9: 0x2c01, 0x1ffa: 0x2c09, 0x1ffb: 0x8e3d,\n\t0x1ffc: 0x2c11, 0x1ffd: 0x8e5d, 0x1ffe: 0x2c19, 0x1fff: 0x2c21,\n\t// Block 0x80, offset 0x2000\n\t0x2000: 0x2c29, 0x2001: 0x2c31, 0x2002: 0x2c39, 0x2003: 0x2c41, 0x2004: 0x2c49, 0x2005: 0x2c51,\n\t0x2006: 0x2c59, 0x2007: 0x2c61, 0x2008: 0x2c69, 0x2009: 0x8e7d, 0x200a: 0x2c71, 0x200b: 0x2c79,\n\t0x200c: 0x2c81, 0x200d: 0x2c89, 0x200e: 0x2c91, 0x200f: 0x8e9d, 0x2010: 0x2c99, 0x2011: 0x8ebd,\n\t0x2012: 0x8edd, 0x2013: 0x2ca1, 0x2014: 0x2ca9, 0x2015: 0x2ca9, 0x2016: 0x2cb1, 0x2017: 0x8efd,\n\t0x2018: 0x8f1d, 0x2019: 0x2cb9, 0x201a: 0x2cc1, 0x201b: 0x2cc9, 0x201c: 0x2cd1, 0x201d: 0x2cd9,\n\t0x201e: 0x2ce1, 0x201f: 0x2ce9, 0x2020: 0x2cf1, 0x2021: 0x2cf9, 0x2022: 0x2d01, 0x2023: 0x2d09,\n\t0x2024: 0x8f3d, 0x2025: 0x2d11, 0x2026: 0x2d19, 0x2027: 0x2d21, 0x2028: 0x2d29, 0x2029: 0x2d21,\n\t0x202a: 0x2d31, 0x202b: 0x2d39, 0x202c: 0x2d41, 0x202d: 0x2d49, 0x202e: 0x2d51, 0x202f: 0x2d59,\n\t0x2030: 0x2d61, 0x2031: 0x2d69, 0x2032: 0x2d71, 0x2033: 0x2d79, 0x2034: 0x2d81, 0x2035: 0x2d89,\n\t0x2036: 0x2d91, 0x2037: 0x2d99, 0x2038: 0x8f5d, 0x2039: 0x2da1, 0x203a: 0x2da9, 0x203b: 0x2db1,\n\t0x203c: 0x2db9, 0x203d: 0x2dc1, 0x203e: 0x8f7d, 0x203f: 0x2dc9,\n\t// Block 0x81, offset 0x2040\n\t0x2040: 0x2dd1, 0x2041: 0x2dd9, 0x2042: 0x2de1, 0x2043: 0x2de9, 0x2044: 0x2df1, 0x2045: 0x2df9,\n\t0x2046: 0x2e01, 0x2047: 0x2e09, 0x2048: 0x2e11, 0x2049: 0x2e19, 0x204a: 0x8f9d, 0x204b: 0x2e21,\n\t0x204c: 0x2e29, 0x204d: 0x2e31, 0x204e: 0x2e39, 0x204f: 0x2e41, 0x2050: 0x2e49, 0x2051: 0x2e51,\n\t0x2052: 0x2e59, 0x2053: 0x2e61, 0x2054: 0x2e69, 0x2055: 0x2e71, 0x2056: 0x2e79, 0x2057: 0x2e81,\n\t0x2058: 0x2e89, 0x2059: 0x2e91, 0x205a: 0x2e99, 0x205b: 0x2ea1, 0x205c: 0x2ea9, 0x205d: 0x8fbd,\n\t0x205e: 0x2eb1, 0x205f: 0x2eb9, 0x2060: 0x2ec1, 0x2061: 0x2ec9, 0x2062: 0x2ed1, 0x2063: 0x8fdd,\n\t0x2064: 0x2ed9, 0x2065: 0x2ee1, 0x2066: 0x2ee9, 0x2067: 0x2ef1, 0x2068: 0x2ef9, 0x2069: 0x2f01,\n\t0x206a: 0x2f09, 0x206b: 0x2f11, 0x206c: 0x7f0d, 0x206d: 0x2f19, 0x206e: 0x2f21, 0x206f: 0x2f29,\n\t0x2070: 0x8ffd, 0x2071: 0x2f31, 0x2072: 0x2f39, 0x2073: 0x2f41, 0x2074: 0x2f49, 0x2075: 0x2f51,\n\t0x2076: 0x2f59, 0x2077: 0x901d, 0x2078: 0x903d, 0x2079: 0x905d, 0x207a: 0x2f61, 0x207b: 0x907d,\n\t0x207c: 0x2f69, 0x207d: 0x2f71, 0x207e: 0x2f79, 0x207f: 0x2f81,\n\t// Block 0x82, offset 0x2080\n\t0x2080: 0x2f89, 0x2081: 0x2f91, 0x2082: 0x2f99, 0x2083: 0x2fa1, 0x2084: 0x2fa9, 0x2085: 0x2fb1,\n\t0x2086: 0x909d, 0x2087: 0x2fb9, 0x2088: 0x2fc1, 0x2089: 0x2fc9, 0x208a: 0x2fd1, 0x208b: 0x2fd9,\n\t0x208c: 0x2fe1, 0x208d: 0x90bd, 0x208e: 0x2fe9, 0x208f: 0x2ff1, 0x2090: 0x90dd, 0x2091: 0x90fd,\n\t0x2092: 0x2ff9, 0x2093: 0x3001, 0x2094: 0x3009, 0x2095: 0x3011, 0x2096: 0x3019, 0x2097: 0x3021,\n\t0x2098: 0x3029, 0x2099: 0x3031, 0x209a: 0x3039, 0x209b: 0x911d, 0x209c: 0x3041, 0x209d: 0x913d,\n\t0x209e: 0x3049, 0x209f: 0x2040, 0x20a0: 0x3051, 0x20a1: 0x3059, 0x20a2: 0x3061, 0x20a3: 0x915d,\n\t0x20a4: 0x3069, 0x20a5: 0x3071, 0x20a6: 0x917d, 0x20a7: 0x919d, 0x20a8: 0x3079, 0x20a9: 0x3081,\n\t0x20aa: 0x3089, 0x20ab: 0x3091, 0x20ac: 0x3099, 0x20ad: 0x3099, 0x20ae: 0x30a1, 0x20af: 0x30a9,\n\t0x20b0: 0x30b1, 0x20b1: 0x30b9, 0x20b2: 0x30c1, 0x20b3: 0x30c9, 0x20b4: 0x30d1, 0x20b5: 0x91bd,\n\t0x20b6: 0x30d9, 0x20b7: 0x91dd, 0x20b8: 0x30e1, 0x20b9: 0x91fd, 0x20ba: 0x30e9, 0x20bb: 0x921d,\n\t0x20bc: 0x923d, 0x20bd: 0x925d, 0x20be: 0x30f1, 0x20bf: 0x30f9,\n\t// Block 0x83, offset 0x20c0\n\t0x20c0: 0x3101, 0x20c1: 0x927d, 0x20c2: 0x929d, 0x20c3: 0x92bd, 0x20c4: 0x92dd, 0x20c5: 0x3109,\n\t0x20c6: 0x3111, 0x20c7: 0x3111, 0x20c8: 0x3119, 0x20c9: 0x3121, 0x20ca: 0x3129, 0x20cb: 0x3131,\n\t0x20cc: 0x3139, 0x20cd: 0x92fd, 0x20ce: 0x3141, 0x20cf: 0x3149, 0x20d0: 0x3151, 0x20d1: 0x3159,\n\t0x20d2: 0x931d, 0x20d3: 0x3161, 0x20d4: 0x933d, 0x20d5: 0x935d, 0x20d6: 0x3169, 0x20d7: 0x3171,\n\t0x20d8: 0x3179, 0x20d9: 0x3181, 0x20da: 0x3189, 0x20db: 0x3191, 0x20dc: 0x937d, 0x20dd: 0x939d,\n\t0x20de: 0x93bd, 0x20df: 0x2040, 0x20e0: 0x3199, 0x20e1: 0x93dd, 0x20e2: 0x31a1, 0x20e3: 0x31a9,\n\t0x20e4: 0x31b1, 0x20e5: 0x93fd, 0x20e6: 0x31b9, 0x20e7: 0x31c1, 0x20e8: 0x31c9, 0x20e9: 0x31d1,\n\t0x20ea: 0x31d9, 0x20eb: 0x941d, 0x20ec: 0x31e1, 0x20ed: 0x31e9, 0x20ee: 0x31f1, 0x20ef: 0x31f9,\n\t0x20f0: 0x3201, 0x20f1: 0x3209, 0x20f2: 0x943d, 0x20f3: 0x945d, 0x20f4: 0x3211, 0x20f5: 0x947d,\n\t0x20f6: 0x3219, 0x20f7: 0x949d, 0x20f8: 0x3221, 0x20f9: 0x3229, 0x20fa: 0x3231, 0x20fb: 0x94bd,\n\t0x20fc: 0x94dd, 0x20fd: 0x3239, 0x20fe: 0x94fd, 0x20ff: 0x3241,\n\t// Block 0x84, offset 0x2100\n\t0x2100: 0x951d, 0x2101: 0x3249, 0x2102: 0x3251, 0x2103: 0x3259, 0x2104: 0x3261, 0x2105: 0x3269,\n\t0x2106: 0x3271, 0x2107: 0x953d, 0x2108: 0x955d, 0x2109: 0x957d, 0x210a: 0x959d, 0x210b: 0x2ca1,\n\t0x210c: 0x3279, 0x210d: 0x3281, 0x210e: 0x3289, 0x210f: 0x3291, 0x2110: 0x3299, 0x2111: 0x32a1,\n\t0x2112: 0x32a9, 0x2113: 0x32b1, 0x2114: 0x32b9, 0x2115: 0x32c1, 0x2116: 0x32c9, 0x2117: 0x95bd,\n\t0x2118: 0x32d1, 0x2119: 0x32d9, 0x211a: 0x32e1, 0x211b: 0x32e9, 0x211c: 0x32f1, 0x211d: 0x32f9,\n\t0x211e: 0x3301, 0x211f: 0x3309, 0x2120: 0x3311, 0x2121: 0x3319, 0x2122: 0x3321, 0x2123: 0x3329,\n\t0x2124: 0x95dd, 0x2125: 0x95fd, 0x2126: 0x961d, 0x2127: 0x3331, 0x2128: 0x3339, 0x2129: 0x3341,\n\t0x212a: 0x3349, 0x212b: 0x963d, 0x212c: 0x3351, 0x212d: 0x965d, 0x212e: 0x3359, 0x212f: 0x3361,\n\t0x2130: 0x967d, 0x2131: 0x969d, 0x2132: 0x3369, 0x2133: 0x3371, 0x2134: 0x3379, 0x2135: 0x3381,\n\t0x2136: 0x3389, 0x2137: 0x3391, 0x2138: 0x3399, 0x2139: 0x33a1, 0x213a: 0x33a9, 0x213b: 0x33b1,\n\t0x213c: 0x33b9, 0x213d: 0x33c1, 0x213e: 0x33c9, 0x213f: 0x2040,\n\t// Block 0x85, offset 0x2140\n\t0x2140: 0x33d1, 0x2141: 0x33d9, 0x2142: 0x33e1, 0x2143: 0x33e9, 0x2144: 0x33f1, 0x2145: 0x96bd,\n\t0x2146: 0x33f9, 0x2147: 0x3401, 0x2148: 0x3409, 0x2149: 0x3411, 0x214a: 0x3419, 0x214b: 0x96dd,\n\t0x214c: 0x96fd, 0x214d: 0x3421, 0x214e: 0x3429, 0x214f: 0x3431, 0x2150: 0x3439, 0x2151: 0x3441,\n\t0x2152: 0x3449, 0x2153: 0x971d, 0x2154: 0x3451, 0x2155: 0x3459, 0x2156: 0x3461, 0x2157: 0x3469,\n\t0x2158: 0x973d, 0x2159: 0x975d, 0x215a: 0x3471, 0x215b: 0x3479, 0x215c: 0x3481, 0x215d: 0x977d,\n\t0x215e: 0x3489, 0x215f: 0x3491, 0x2160: 0x684d, 0x2161: 0x979d, 0x2162: 0x3499, 0x2163: 0x34a1,\n\t0x2164: 0x34a9, 0x2165: 0x97bd, 0x2166: 0x34b1, 0x2167: 0x34b9, 0x2168: 0x34c1, 0x2169: 0x34c9,\n\t0x216a: 0x34d1, 0x216b: 0x34d9, 0x216c: 0x34e1, 0x216d: 0x97dd, 0x216e: 0x34e9, 0x216f: 0x34f1,\n\t0x2170: 0x34f9, 0x2171: 0x97fd, 0x2172: 0x3501, 0x2173: 0x3509, 0x2174: 0x3511, 0x2175: 0x3519,\n\t0x2176: 0x7b6d, 0x2177: 0x981d, 0x2178: 0x3521, 0x2179: 0x3529, 0x217a: 0x3531, 0x217b: 0x983d,\n\t0x217c: 0x3539, 0x217d: 0x985d, 0x217e: 0x3541, 0x217f: 0x3541,\n\t// Block 0x86, offset 0x2180\n\t0x2180: 0x3549, 0x2181: 0x987d, 0x2182: 0x3551, 0x2183: 0x3559, 0x2184: 0x3561, 0x2185: 0x3569,\n\t0x2186: 0x3571, 0x2187: 0x3579, 0x2188: 0x3581, 0x2189: 0x989d, 0x218a: 0x3589, 0x218b: 0x3591,\n\t0x218c: 0x3599, 0x218d: 0x35a1, 0x218e: 0x35a9, 0x218f: 0x35b1, 0x2190: 0x98bd, 0x2191: 0x35b9,\n\t0x2192: 0x98dd, 0x2193: 0x98fd, 0x2194: 0x991d, 0x2195: 0x35c1, 0x2196: 0x35c9, 0x2197: 0x35d1,\n\t0x2198: 0x35d9, 0x2199: 0x35e1, 0x219a: 0x35e9, 0x219b: 0x35f1, 0x219c: 0x35f9, 0x219d: 0x993d,\n\t0x219e: 0x0040, 0x219f: 0x0040, 0x21a0: 0x0040, 0x21a1: 0x0040, 0x21a2: 0x0040, 0x21a3: 0x0040,\n\t0x21a4: 0x0040, 0x21a5: 0x0040, 0x21a6: 0x0040, 0x21a7: 0x0040, 0x21a8: 0x0040, 0x21a9: 0x0040,\n\t0x21aa: 0x0040, 0x21ab: 0x0040, 0x21ac: 0x0040, 0x21ad: 0x0040, 0x21ae: 0x0040, 0x21af: 0x0040,\n\t0x21b0: 0x0040, 0x21b1: 0x0040, 0x21b2: 0x0040, 0x21b3: 0x0040, 0x21b4: 0x0040, 0x21b5: 0x0040,\n\t0x21b6: 0x0040, 0x21b7: 0x0040, 0x21b8: 0x0040, 0x21b9: 0x0040, 0x21ba: 0x0040, 0x21bb: 0x0040,\n\t0x21bc: 0x0040, 0x21bd: 0x0040, 0x21be: 0x0040, 0x21bf: 0x0040,\n}\n\n// idnaIndex: 39 blocks, 2496 entries, 4992 bytes\n// Block 0 is the zero block.\nvar idnaIndex = [2496]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x85, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,\n\t0xc8: 0x06, 0xc9: 0x86, 0xca: 0x87, 0xcb: 0x07, 0xcc: 0x88, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,\n\t0xd0: 0x89, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x8a, 0xd6: 0x8b, 0xd7: 0x8c,\n\t0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x8d, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x8e, 0xde: 0x8f, 0xdf: 0x90,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,\n\t0xe8: 0x07, 0xe9: 0x07, 0xea: 0x08, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x09, 0xee: 0x0a, 0xef: 0x0b,\n\t0xf0: 0x20, 0xf1: 0x21, 0xf2: 0x21, 0xf3: 0x23, 0xf4: 0x24,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x91, 0x121: 0x13, 0x122: 0x14, 0x123: 0x92, 0x124: 0x93, 0x125: 0x15, 0x126: 0x16, 0x127: 0x17,\n\t0x128: 0x18, 0x129: 0x19, 0x12a: 0x1a, 0x12b: 0x1b, 0x12c: 0x1c, 0x12d: 0x1d, 0x12e: 0x1e, 0x12f: 0x94,\n\t0x130: 0x95, 0x131: 0x1f, 0x132: 0x20, 0x133: 0x21, 0x134: 0x96, 0x135: 0x22, 0x136: 0x97, 0x137: 0x98,\n\t0x138: 0x99, 0x139: 0x9a, 0x13a: 0x23, 0x13b: 0x9b, 0x13c: 0x9c, 0x13d: 0x24, 0x13e: 0x25, 0x13f: 0x9d,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x9e, 0x141: 0x9f, 0x142: 0xa0, 0x143: 0xa1, 0x144: 0xa2, 0x145: 0xa3, 0x146: 0xa4, 0x147: 0xa5,\n\t0x148: 0xa6, 0x149: 0xa7, 0x14a: 0xa8, 0x14b: 0xa9, 0x14c: 0xaa, 0x14d: 0xab, 0x14e: 0xac, 0x14f: 0xad,\n\t0x150: 0xae, 0x151: 0xa6, 0x152: 0xa6, 0x153: 0xa6, 0x154: 0xa6, 0x155: 0xa6, 0x156: 0xa6, 0x157: 0xa6,\n\t0x158: 0xa6, 0x159: 0xaf, 0x15a: 0xb0, 0x15b: 0xb1, 0x15c: 0xb2, 0x15d: 0xb3, 0x15e: 0xb4, 0x15f: 0xb5,\n\t0x160: 0xb6, 0x161: 0xb7, 0x162: 0xb8, 0x163: 0xb9, 0x164: 0xba, 0x165: 0xbb, 0x166: 0xbc, 0x167: 0xbd,\n\t0x168: 0xbe, 0x169: 0xbf, 0x16a: 0xc0, 0x16b: 0xc1, 0x16c: 0xc2, 0x16d: 0xc3, 0x16e: 0xc4, 0x16f: 0xc5,\n\t0x170: 0xc6, 0x171: 0xc7, 0x172: 0xc8, 0x173: 0xc9, 0x174: 0x26, 0x175: 0x27, 0x176: 0x28, 0x177: 0x88,\n\t0x178: 0x29, 0x179: 0x29, 0x17a: 0x2a, 0x17b: 0x29, 0x17c: 0xca, 0x17d: 0x2b, 0x17e: 0x2c, 0x17f: 0x2d,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x2e, 0x181: 0x2f, 0x182: 0x30, 0x183: 0xcb, 0x184: 0x31, 0x185: 0x32, 0x186: 0xcc, 0x187: 0xa2,\n\t0x188: 0xcd, 0x189: 0xce, 0x18a: 0xa2, 0x18b: 0xa2, 0x18c: 0xcf, 0x18d: 0xa2, 0x18e: 0xa2, 0x18f: 0xa2,\n\t0x190: 0xd0, 0x191: 0x33, 0x192: 0x34, 0x193: 0x35, 0x194: 0xa2, 0x195: 0xa2, 0x196: 0xa2, 0x197: 0xa2,\n\t0x198: 0xa2, 0x199: 0xa2, 0x19a: 0xa2, 0x19b: 0xa2, 0x19c: 0xa2, 0x19d: 0xa2, 0x19e: 0xa2, 0x19f: 0xa2,\n\t0x1a0: 0xa2, 0x1a1: 0xa2, 0x1a2: 0xa2, 0x1a3: 0xa2, 0x1a4: 0xa2, 0x1a5: 0xa2, 0x1a6: 0xa2, 0x1a7: 0xa2,\n\t0x1a8: 0xd1, 0x1a9: 0xd2, 0x1aa: 0xa2, 0x1ab: 0xd3, 0x1ac: 0xa2, 0x1ad: 0xd4, 0x1ae: 0xd5, 0x1af: 0xa2,\n\t0x1b0: 0xd6, 0x1b1: 0x36, 0x1b2: 0x29, 0x1b3: 0x37, 0x1b4: 0xd7, 0x1b5: 0xd8, 0x1b6: 0xd9, 0x1b7: 0xda,\n\t0x1b8: 0xdb, 0x1b9: 0xdc, 0x1ba: 0xdd, 0x1bb: 0xde, 0x1bc: 0xdf, 0x1bd: 0xe0, 0x1be: 0xe1, 0x1bf: 0x38,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x39, 0x1c1: 0xe2, 0x1c2: 0xe3, 0x1c3: 0xe4, 0x1c4: 0xe5, 0x1c5: 0x3a, 0x1c6: 0x3b, 0x1c7: 0xe6,\n\t0x1c8: 0xe7, 0x1c9: 0x3c, 0x1ca: 0x3d, 0x1cb: 0x3e, 0x1cc: 0xe8, 0x1cd: 0xe9, 0x1ce: 0x3f, 0x1cf: 0x40,\n\t0x1d0: 0xa6, 0x1d1: 0xa6, 0x1d2: 0xa6, 0x1d3: 0xa6, 0x1d4: 0xa6, 0x1d5: 0xa6, 0x1d6: 0xa6, 0x1d7: 0xa6,\n\t0x1d8: 0xa6, 0x1d9: 0xa6, 0x1da: 0xa6, 0x1db: 0xa6, 0x1dc: 0xa6, 0x1dd: 0xa6, 0x1de: 0xa6, 0x1df: 0xa6,\n\t0x1e0: 0xa6, 0x1e1: 0xa6, 0x1e2: 0xa6, 0x1e3: 0xa6, 0x1e4: 0xa6, 0x1e5: 0xa6, 0x1e6: 0xa6, 0x1e7: 0xa6,\n\t0x1e8: 0xa6, 0x1e9: 0xa6, 0x1ea: 0xa6, 0x1eb: 0xa6, 0x1ec: 0xa6, 0x1ed: 0xa6, 0x1ee: 0xa6, 0x1ef: 0xa6,\n\t0x1f0: 0xa6, 0x1f1: 0xa6, 0x1f2: 0xa6, 0x1f3: 0xa6, 0x1f4: 0xa6, 0x1f5: 0xa6, 0x1f6: 0xa6, 0x1f7: 0xa6,\n\t0x1f8: 0xa6, 0x1f9: 0xa6, 0x1fa: 0xa6, 0x1fb: 0xa6, 0x1fc: 0xa6, 0x1fd: 0xa6, 0x1fe: 0xa6, 0x1ff: 0xa6,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xa6, 0x201: 0xa6, 0x202: 0xa6, 0x203: 0xa6, 0x204: 0xa6, 0x205: 0xa6, 0x206: 0xa6, 0x207: 0xa6,\n\t0x208: 0xa6, 0x209: 0xa6, 0x20a: 0xa6, 0x20b: 0xa6, 0x20c: 0xa6, 0x20d: 0xa6, 0x20e: 0xa6, 0x20f: 0xa6,\n\t0x210: 0xa6, 0x211: 0xa6, 0x212: 0xa6, 0x213: 0xa6, 0x214: 0xa6, 0x215: 0xa6, 0x216: 0xa6, 0x217: 0xa6,\n\t0x218: 0xa6, 0x219: 0xa6, 0x21a: 0xa6, 0x21b: 0xa6, 0x21c: 0xa6, 0x21d: 0xa6, 0x21e: 0xa6, 0x21f: 0xa6,\n\t0x220: 0xa6, 0x221: 0xa6, 0x222: 0xa6, 0x223: 0xa6, 0x224: 0xa6, 0x225: 0xa6, 0x226: 0xa6, 0x227: 0xa6,\n\t0x228: 0xa6, 0x229: 0xa6, 0x22a: 0xa6, 0x22b: 0xa6, 0x22c: 0xa6, 0x22d: 0xa6, 0x22e: 0xa6, 0x22f: 0xa6,\n\t0x230: 0xa6, 0x231: 0xa6, 0x232: 0xa6, 0x233: 0xa6, 0x234: 0xa6, 0x235: 0xa6, 0x236: 0xa6, 0x237: 0xa2,\n\t0x238: 0xa6, 0x239: 0xa6, 0x23a: 0xa6, 0x23b: 0xa6, 0x23c: 0xa6, 0x23d: 0xa6, 0x23e: 0xa6, 0x23f: 0xa6,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xa6, 0x241: 0xa6, 0x242: 0xa6, 0x243: 0xa6, 0x244: 0xa6, 0x245: 0xa6, 0x246: 0xa6, 0x247: 0xa6,\n\t0x248: 0xa6, 0x249: 0xa6, 0x24a: 0xa6, 0x24b: 0xa6, 0x24c: 0xa6, 0x24d: 0xa6, 0x24e: 0xa6, 0x24f: 0xa6,\n\t0x250: 0xa6, 0x251: 0xa6, 0x252: 0xa6, 0x253: 0xa6, 0x254: 0xa6, 0x255: 0xa6, 0x256: 0xa6, 0x257: 0xa6,\n\t0x258: 0xa6, 0x259: 0xa6, 0x25a: 0xa6, 0x25b: 0xa6, 0x25c: 0xa6, 0x25d: 0xa6, 0x25e: 0xa6, 0x25f: 0xa6,\n\t0x260: 0xa6, 0x261: 0xa6, 0x262: 0xa6, 0x263: 0xa6, 0x264: 0xa6, 0x265: 0xa6, 0x266: 0xa6, 0x267: 0xa6,\n\t0x268: 0xa6, 0x269: 0xa6, 0x26a: 0xa6, 0x26b: 0xa6, 0x26c: 0xa6, 0x26d: 0xa6, 0x26e: 0xa6, 0x26f: 0xa6,\n\t0x270: 0xa6, 0x271: 0xa6, 0x272: 0xa6, 0x273: 0xa6, 0x274: 0xa6, 0x275: 0xa6, 0x276: 0xa6, 0x277: 0xa6,\n\t0x278: 0xa6, 0x279: 0xa6, 0x27a: 0xa6, 0x27b: 0xa6, 0x27c: 0xa6, 0x27d: 0xa6, 0x27e: 0xa6, 0x27f: 0xa6,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xa6, 0x281: 0xa6, 0x282: 0xa6, 0x283: 0xa6, 0x284: 0xa6, 0x285: 0xa6, 0x286: 0xa6, 0x287: 0xa6,\n\t0x288: 0xa6, 0x289: 0xa6, 0x28a: 0xa6, 0x28b: 0xa6, 0x28c: 0xa6, 0x28d: 0xa6, 0x28e: 0xa6, 0x28f: 0xa6,\n\t0x290: 0xa6, 0x291: 0xa6, 0x292: 0xea, 0x293: 0xeb, 0x294: 0xa6, 0x295: 0xa6, 0x296: 0xa6, 0x297: 0xa6,\n\t0x298: 0xec, 0x299: 0x41, 0x29a: 0x42, 0x29b: 0xed, 0x29c: 0x43, 0x29d: 0x44, 0x29e: 0x45, 0x29f: 0x46,\n\t0x2a0: 0xee, 0x2a1: 0xef, 0x2a2: 0xf0, 0x2a3: 0xf1, 0x2a4: 0xf2, 0x2a5: 0xf3, 0x2a6: 0xf4, 0x2a7: 0xf5,\n\t0x2a8: 0xf6, 0x2a9: 0xf7, 0x2aa: 0xf8, 0x2ab: 0xf9, 0x2ac: 0xfa, 0x2ad: 0xfb, 0x2ae: 0xfc, 0x2af: 0xfd,\n\t0x2b0: 0xa6, 0x2b1: 0xa6, 0x2b2: 0xa6, 0x2b3: 0xa6, 0x2b4: 0xa6, 0x2b5: 0xa6, 0x2b6: 0xa6, 0x2b7: 0xa6,\n\t0x2b8: 0xa6, 0x2b9: 0xa6, 0x2ba: 0xa6, 0x2bb: 0xa6, 0x2bc: 0xa6, 0x2bd: 0xa6, 0x2be: 0xa6, 0x2bf: 0xa6,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xa6, 0x2c1: 0xa6, 0x2c2: 0xa6, 0x2c3: 0xa6, 0x2c4: 0xa6, 0x2c5: 0xa6, 0x2c6: 0xa6, 0x2c7: 0xa6,\n\t0x2c8: 0xa6, 0x2c9: 0xa6, 0x2ca: 0xa6, 0x2cb: 0xa6, 0x2cc: 0xa6, 0x2cd: 0xa6, 0x2ce: 0xa6, 0x2cf: 0xa6,\n\t0x2d0: 0xa6, 0x2d1: 0xa6, 0x2d2: 0xa6, 0x2d3: 0xa6, 0x2d4: 0xa6, 0x2d5: 0xa6, 0x2d6: 0xa6, 0x2d7: 0xa6,\n\t0x2d8: 0xa6, 0x2d9: 0xa6, 0x2da: 0xa6, 0x2db: 0xa6, 0x2dc: 0xa6, 0x2dd: 0xa6, 0x2de: 0xfe, 0x2df: 0xff,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x100, 0x301: 0x100, 0x302: 0x100, 0x303: 0x100, 0x304: 0x100, 0x305: 0x100, 0x306: 0x100, 0x307: 0x100,\n\t0x308: 0x100, 0x309: 0x100, 0x30a: 0x100, 0x30b: 0x100, 0x30c: 0x100, 0x30d: 0x100, 0x30e: 0x100, 0x30f: 0x100,\n\t0x310: 0x100, 0x311: 0x100, 0x312: 0x100, 0x313: 0x100, 0x314: 0x100, 0x315: 0x100, 0x316: 0x100, 0x317: 0x100,\n\t0x318: 0x100, 0x319: 0x100, 0x31a: 0x100, 0x31b: 0x100, 0x31c: 0x100, 0x31d: 0x100, 0x31e: 0x100, 0x31f: 0x100,\n\t0x320: 0x100, 0x321: 0x100, 0x322: 0x100, 0x323: 0x100, 0x324: 0x100, 0x325: 0x100, 0x326: 0x100, 0x327: 0x100,\n\t0x328: 0x100, 0x329: 0x100, 0x32a: 0x100, 0x32b: 0x100, 0x32c: 0x100, 0x32d: 0x100, 0x32e: 0x100, 0x32f: 0x100,\n\t0x330: 0x100, 0x331: 0x100, 0x332: 0x100, 0x333: 0x100, 0x334: 0x100, 0x335: 0x100, 0x336: 0x100, 0x337: 0x100,\n\t0x338: 0x100, 0x339: 0x100, 0x33a: 0x100, 0x33b: 0x100, 0x33c: 0x100, 0x33d: 0x100, 0x33e: 0x100, 0x33f: 0x100,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x100, 0x341: 0x100, 0x342: 0x100, 0x343: 0x100, 0x344: 0x100, 0x345: 0x100, 0x346: 0x100, 0x347: 0x100,\n\t0x348: 0x100, 0x349: 0x100, 0x34a: 0x100, 0x34b: 0x100, 0x34c: 0x100, 0x34d: 0x100, 0x34e: 0x100, 0x34f: 0x100,\n\t0x350: 0x100, 0x351: 0x100, 0x352: 0x100, 0x353: 0x100, 0x354: 0x100, 0x355: 0x100, 0x356: 0x100, 0x357: 0x100,\n\t0x358: 0x100, 0x359: 0x100, 0x35a: 0x100, 0x35b: 0x100, 0x35c: 0x100, 0x35d: 0x100, 0x35e: 0x100, 0x35f: 0x100,\n\t0x360: 0x100, 0x361: 0x100, 0x362: 0x100, 0x363: 0x100, 0x364: 0x101, 0x365: 0x102, 0x366: 0x103, 0x367: 0x104,\n\t0x368: 0x47, 0x369: 0x105, 0x36a: 0x106, 0x36b: 0x48, 0x36c: 0x49, 0x36d: 0x4a, 0x36e: 0x4b, 0x36f: 0x4c,\n\t0x370: 0x107, 0x371: 0x4d, 0x372: 0x4e, 0x373: 0x4f, 0x374: 0x50, 0x375: 0x51, 0x376: 0x108, 0x377: 0x52,\n\t0x378: 0x53, 0x379: 0x54, 0x37a: 0x55, 0x37b: 0x56, 0x37c: 0x57, 0x37d: 0x58, 0x37e: 0x59, 0x37f: 0x5a,\n\t// Block 0xe, offset 0x380\n\t0x380: 0x109, 0x381: 0x10a, 0x382: 0xa6, 0x383: 0x10b, 0x384: 0x10c, 0x385: 0xa2, 0x386: 0x10d, 0x387: 0x10e,\n\t0x388: 0x100, 0x389: 0x100, 0x38a: 0x10f, 0x38b: 0x110, 0x38c: 0x111, 0x38d: 0x112, 0x38e: 0x113, 0x38f: 0x114,\n\t0x390: 0x115, 0x391: 0xa6, 0x392: 0x116, 0x393: 0x117, 0x394: 0x118, 0x395: 0x5b, 0x396: 0x5c, 0x397: 0x100,\n\t0x398: 0xa6, 0x399: 0xa6, 0x39a: 0xa6, 0x39b: 0xa6, 0x39c: 0x119, 0x39d: 0x11a, 0x39e: 0x5d, 0x39f: 0x100,\n\t0x3a0: 0x11b, 0x3a1: 0x11c, 0x3a2: 0x11d, 0x3a3: 0x11e, 0x3a4: 0x11f, 0x3a5: 0x100, 0x3a6: 0x120, 0x3a7: 0x121,\n\t0x3a8: 0x122, 0x3a9: 0x123, 0x3aa: 0x124, 0x3ab: 0x5e, 0x3ac: 0x125, 0x3ad: 0x126, 0x3ae: 0x5f, 0x3af: 0x100,\n\t0x3b0: 0x127, 0x3b1: 0x128, 0x3b2: 0x129, 0x3b3: 0x12a, 0x3b4: 0x12b, 0x3b5: 0x100, 0x3b6: 0x100, 0x3b7: 0x100,\n\t0x3b8: 0x100, 0x3b9: 0x12c, 0x3ba: 0x12d, 0x3bb: 0x12e, 0x3bc: 0x12f, 0x3bd: 0x130, 0x3be: 0x131, 0x3bf: 0x132,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x133, 0x3c1: 0x134, 0x3c2: 0x135, 0x3c3: 0x136, 0x3c4: 0x137, 0x3c5: 0x138, 0x3c6: 0x139, 0x3c7: 0x13a,\n\t0x3c8: 0x13b, 0x3c9: 0x13c, 0x3ca: 0x13d, 0x3cb: 0x13e, 0x3cc: 0x60, 0x3cd: 0x61, 0x3ce: 0x100, 0x3cf: 0x100,\n\t0x3d0: 0x13f, 0x3d1: 0x140, 0x3d2: 0x141, 0x3d3: 0x142, 0x3d4: 0x100, 0x3d5: 0x100, 0x3d6: 0x143, 0x3d7: 0x144,\n\t0x3d8: 0x145, 0x3d9: 0x146, 0x3da: 0x147, 0x3db: 0x148, 0x3dc: 0x149, 0x3dd: 0x14a, 0x3de: 0x100, 0x3df: 0x100,\n\t0x3e0: 0x14b, 0x3e1: 0x100, 0x3e2: 0x14c, 0x3e3: 0x14d, 0x3e4: 0x62, 0x3e5: 0x14e, 0x3e6: 0x14f, 0x3e7: 0x150,\n\t0x3e8: 0x151, 0x3e9: 0x152, 0x3ea: 0x153, 0x3eb: 0x154, 0x3ec: 0x155, 0x3ed: 0x100, 0x3ee: 0x100, 0x3ef: 0x100,\n\t0x3f0: 0x156, 0x3f1: 0x157, 0x3f2: 0x158, 0x3f3: 0x100, 0x3f4: 0x159, 0x3f5: 0x15a, 0x3f6: 0x15b, 0x3f7: 0x100,\n\t0x3f8: 0x100, 0x3f9: 0x100, 0x3fa: 0x100, 0x3fb: 0x15c, 0x3fc: 0x15d, 0x3fd: 0x15e, 0x3fe: 0x15f, 0x3ff: 0x160,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xa6, 0x401: 0xa6, 0x402: 0xa6, 0x403: 0xa6, 0x404: 0xa6, 0x405: 0xa6, 0x406: 0xa6, 0x407: 0xa6,\n\t0x408: 0xa6, 0x409: 0xa6, 0x40a: 0xa6, 0x40b: 0xa6, 0x40c: 0xa6, 0x40d: 0xa6, 0x40e: 0x161, 0x40f: 0x100,\n\t0x410: 0xa2, 0x411: 0x162, 0x412: 0xa6, 0x413: 0xa6, 0x414: 0xa6, 0x415: 0x163, 0x416: 0x100, 0x417: 0x100,\n\t0x418: 0x100, 0x419: 0x100, 0x41a: 0x100, 0x41b: 0x100, 0x41c: 0x100, 0x41d: 0x100, 0x41e: 0x100, 0x41f: 0x100,\n\t0x420: 0x100, 0x421: 0x100, 0x422: 0x100, 0x423: 0x100, 0x424: 0x100, 0x425: 0x100, 0x426: 0x100, 0x427: 0x100,\n\t0x428: 0x100, 0x429: 0x100, 0x42a: 0x100, 0x42b: 0x100, 0x42c: 0x100, 0x42d: 0x100, 0x42e: 0x100, 0x42f: 0x100,\n\t0x430: 0x100, 0x431: 0x100, 0x432: 0x100, 0x433: 0x100, 0x434: 0x100, 0x435: 0x100, 0x436: 0x100, 0x437: 0x100,\n\t0x438: 0x100, 0x439: 0x100, 0x43a: 0x100, 0x43b: 0x100, 0x43c: 0x100, 0x43d: 0x100, 0x43e: 0x164, 0x43f: 0x165,\n\t// Block 0x11, offset 0x440\n\t0x440: 0xa6, 0x441: 0xa6, 0x442: 0xa6, 0x443: 0xa6, 0x444: 0xa6, 0x445: 0xa6, 0x446: 0xa6, 0x447: 0xa6,\n\t0x448: 0xa6, 0x449: 0xa6, 0x44a: 0xa6, 0x44b: 0xa6, 0x44c: 0xa6, 0x44d: 0xa6, 0x44e: 0xa6, 0x44f: 0xa6,\n\t0x450: 0x166, 0x451: 0x167, 0x452: 0x100, 0x453: 0x100, 0x454: 0x100, 0x455: 0x100, 0x456: 0x100, 0x457: 0x100,\n\t0x458: 0x100, 0x459: 0x100, 0x45a: 0x100, 0x45b: 0x100, 0x45c: 0x100, 0x45d: 0x100, 0x45e: 0x100, 0x45f: 0x100,\n\t0x460: 0x100, 0x461: 0x100, 0x462: 0x100, 0x463: 0x100, 0x464: 0x100, 0x465: 0x100, 0x466: 0x100, 0x467: 0x100,\n\t0x468: 0x100, 0x469: 0x100, 0x46a: 0x100, 0x46b: 0x100, 0x46c: 0x100, 0x46d: 0x100, 0x46e: 0x100, 0x46f: 0x100,\n\t0x470: 0x100, 0x471: 0x100, 0x472: 0x100, 0x473: 0x100, 0x474: 0x100, 0x475: 0x100, 0x476: 0x100, 0x477: 0x100,\n\t0x478: 0x100, 0x479: 0x100, 0x47a: 0x100, 0x47b: 0x100, 0x47c: 0x100, 0x47d: 0x100, 0x47e: 0x100, 0x47f: 0x100,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x100, 0x481: 0x100, 0x482: 0x100, 0x483: 0x100, 0x484: 0x100, 0x485: 0x100, 0x486: 0x100, 0x487: 0x100,\n\t0x488: 0x100, 0x489: 0x100, 0x48a: 0x100, 0x48b: 0x100, 0x48c: 0x100, 0x48d: 0x100, 0x48e: 0x100, 0x48f: 0x100,\n\t0x490: 0xa6, 0x491: 0xa6, 0x492: 0xa6, 0x493: 0xa6, 0x494: 0xa6, 0x495: 0xa6, 0x496: 0xa6, 0x497: 0xa6,\n\t0x498: 0xa6, 0x499: 0x14a, 0x49a: 0x100, 0x49b: 0x100, 0x49c: 0x100, 0x49d: 0x100, 0x49e: 0x100, 0x49f: 0x100,\n\t0x4a0: 0x100, 0x4a1: 0x100, 0x4a2: 0x100, 0x4a3: 0x100, 0x4a4: 0x100, 0x4a5: 0x100, 0x4a6: 0x100, 0x4a7: 0x100,\n\t0x4a8: 0x100, 0x4a9: 0x100, 0x4aa: 0x100, 0x4ab: 0x100, 0x4ac: 0x100, 0x4ad: 0x100, 0x4ae: 0x100, 0x4af: 0x100,\n\t0x4b0: 0x100, 0x4b1: 0x100, 0x4b2: 0x100, 0x4b3: 0x100, 0x4b4: 0x100, 0x4b5: 0x100, 0x4b6: 0x100, 0x4b7: 0x100,\n\t0x4b8: 0x100, 0x4b9: 0x100, 0x4ba: 0x100, 0x4bb: 0x100, 0x4bc: 0x100, 0x4bd: 0x100, 0x4be: 0x100, 0x4bf: 0x100,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x100, 0x4c1: 0x100, 0x4c2: 0x100, 0x4c3: 0x100, 0x4c4: 0x100, 0x4c5: 0x100, 0x4c6: 0x100, 0x4c7: 0x100,\n\t0x4c8: 0x100, 0x4c9: 0x100, 0x4ca: 0x100, 0x4cb: 0x100, 0x4cc: 0x100, 0x4cd: 0x100, 0x4ce: 0x100, 0x4cf: 0x100,\n\t0x4d0: 0x100, 0x4d1: 0x100, 0x4d2: 0x100, 0x4d3: 0x100, 0x4d4: 0x100, 0x4d5: 0x100, 0x4d6: 0x100, 0x4d7: 0x100,\n\t0x4d8: 0x100, 0x4d9: 0x100, 0x4da: 0x100, 0x4db: 0x100, 0x4dc: 0x100, 0x4dd: 0x100, 0x4de: 0x100, 0x4df: 0x100,\n\t0x4e0: 0xa6, 0x4e1: 0xa6, 0x4e2: 0xa6, 0x4e3: 0xa6, 0x4e4: 0xa6, 0x4e5: 0xa6, 0x4e6: 0xa6, 0x4e7: 0xa6,\n\t0x4e8: 0x154, 0x4e9: 0x168, 0x4ea: 0x169, 0x4eb: 0x16a, 0x4ec: 0x16b, 0x4ed: 0x16c, 0x4ee: 0x16d, 0x4ef: 0x100,\n\t0x4f0: 0x100, 0x4f1: 0x100, 0x4f2: 0x100, 0x4f3: 0x100, 0x4f4: 0x100, 0x4f5: 0x100, 0x4f6: 0x100, 0x4f7: 0x100,\n\t0x4f8: 0x100, 0x4f9: 0x16e, 0x4fa: 0x16f, 0x4fb: 0x100, 0x4fc: 0xa6, 0x4fd: 0x170, 0x4fe: 0x171, 0x4ff: 0x172,\n\t// Block 0x14, offset 0x500\n\t0x500: 0xa6, 0x501: 0xa6, 0x502: 0xa6, 0x503: 0xa6, 0x504: 0xa6, 0x505: 0xa6, 0x506: 0xa6, 0x507: 0xa6,\n\t0x508: 0xa6, 0x509: 0xa6, 0x50a: 0xa6, 0x50b: 0xa6, 0x50c: 0xa6, 0x50d: 0xa6, 0x50e: 0xa6, 0x50f: 0xa6,\n\t0x510: 0xa6, 0x511: 0xa6, 0x512: 0xa6, 0x513: 0xa6, 0x514: 0xa6, 0x515: 0xa6, 0x516: 0xa6, 0x517: 0xa6,\n\t0x518: 0xa6, 0x519: 0xa6, 0x51a: 0xa6, 0x51b: 0xa6, 0x51c: 0xa6, 0x51d: 0xa6, 0x51e: 0xa6, 0x51f: 0x173,\n\t0x520: 0xa6, 0x521: 0xa6, 0x522: 0xa6, 0x523: 0xa6, 0x524: 0xa6, 0x525: 0xa6, 0x526: 0xa6, 0x527: 0xa6,\n\t0x528: 0xa6, 0x529: 0xa6, 0x52a: 0xa6, 0x52b: 0xa6, 0x52c: 0xa6, 0x52d: 0xa6, 0x52e: 0xa6, 0x52f: 0xa6,\n\t0x530: 0xa6, 0x531: 0xa6, 0x532: 0xa6, 0x533: 0x174, 0x534: 0x175, 0x535: 0x100, 0x536: 0x100, 0x537: 0x100,\n\t0x538: 0x100, 0x539: 0x100, 0x53a: 0x100, 0x53b: 0x100, 0x53c: 0x100, 0x53d: 0x100, 0x53e: 0x100, 0x53f: 0x100,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x100, 0x541: 0x100, 0x542: 0x100, 0x543: 0x100, 0x544: 0x100, 0x545: 0x100, 0x546: 0x100, 0x547: 0x100,\n\t0x548: 0x100, 0x549: 0x100, 0x54a: 0x100, 0x54b: 0x100, 0x54c: 0x100, 0x54d: 0x100, 0x54e: 0x100, 0x54f: 0x100,\n\t0x550: 0x100, 0x551: 0x100, 0x552: 0x100, 0x553: 0x100, 0x554: 0x100, 0x555: 0x100, 0x556: 0x100, 0x557: 0x100,\n\t0x558: 0x100, 0x559: 0x100, 0x55a: 0x100, 0x55b: 0x100, 0x55c: 0x100, 0x55d: 0x100, 0x55e: 0x100, 0x55f: 0x100,\n\t0x560: 0x100, 0x561: 0x100, 0x562: 0x100, 0x563: 0x100, 0x564: 0x100, 0x565: 0x100, 0x566: 0x100, 0x567: 0x100,\n\t0x568: 0x100, 0x569: 0x100, 0x56a: 0x100, 0x56b: 0x100, 0x56c: 0x100, 0x56d: 0x100, 0x56e: 0x100, 0x56f: 0x100,\n\t0x570: 0x100, 0x571: 0x100, 0x572: 0x100, 0x573: 0x100, 0x574: 0x100, 0x575: 0x100, 0x576: 0x100, 0x577: 0x100,\n\t0x578: 0x100, 0x579: 0x100, 0x57a: 0x100, 0x57b: 0x100, 0x57c: 0x100, 0x57d: 0x100, 0x57e: 0x100, 0x57f: 0x176,\n\t// Block 0x16, offset 0x580\n\t0x580: 0xa6, 0x581: 0xa6, 0x582: 0xa6, 0x583: 0xa6, 0x584: 0x177, 0x585: 0x178, 0x586: 0xa6, 0x587: 0xa6,\n\t0x588: 0xa6, 0x589: 0xa6, 0x58a: 0xa6, 0x58b: 0x179, 0x58c: 0x100, 0x58d: 0x100, 0x58e: 0x100, 0x58f: 0x100,\n\t0x590: 0x100, 0x591: 0x100, 0x592: 0x100, 0x593: 0x100, 0x594: 0x100, 0x595: 0x100, 0x596: 0x100, 0x597: 0x100,\n\t0x598: 0x100, 0x599: 0x100, 0x59a: 0x100, 0x59b: 0x100, 0x59c: 0x100, 0x59d: 0x100, 0x59e: 0x100, 0x59f: 0x100,\n\t0x5a0: 0x100, 0x5a1: 0x100, 0x5a2: 0x100, 0x5a3: 0x100, 0x5a4: 0x100, 0x5a5: 0x100, 0x5a6: 0x100, 0x5a7: 0x100,\n\t0x5a8: 0x100, 0x5a9: 0x100, 0x5aa: 0x100, 0x5ab: 0x100, 0x5ac: 0x100, 0x5ad: 0x100, 0x5ae: 0x100, 0x5af: 0x100,\n\t0x5b0: 0xa6, 0x5b1: 0x17a, 0x5b2: 0x17b, 0x5b3: 0x100, 0x5b4: 0x100, 0x5b5: 0x100, 0x5b6: 0x100, 0x5b7: 0x100,\n\t0x5b8: 0x100, 0x5b9: 0x100, 0x5ba: 0x100, 0x5bb: 0x100, 0x5bc: 0x100, 0x5bd: 0x100, 0x5be: 0x100, 0x5bf: 0x100,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x100, 0x5c1: 0x100, 0x5c2: 0x100, 0x5c3: 0x100, 0x5c4: 0x100, 0x5c5: 0x100, 0x5c6: 0x100, 0x5c7: 0x100,\n\t0x5c8: 0x100, 0x5c9: 0x100, 0x5ca: 0x100, 0x5cb: 0x100, 0x5cc: 0x100, 0x5cd: 0x100, 0x5ce: 0x100, 0x5cf: 0x100,\n\t0x5d0: 0x100, 0x5d1: 0x100, 0x5d2: 0x100, 0x5d3: 0x100, 0x5d4: 0x100, 0x5d5: 0x100, 0x5d6: 0x100, 0x5d7: 0x100,\n\t0x5d8: 0x100, 0x5d9: 0x100, 0x5da: 0x100, 0x5db: 0x100, 0x5dc: 0x100, 0x5dd: 0x100, 0x5de: 0x100, 0x5df: 0x100,\n\t0x5e0: 0x100, 0x5e1: 0x100, 0x5e2: 0x100, 0x5e3: 0x100, 0x5e4: 0x100, 0x5e5: 0x100, 0x5e6: 0x100, 0x5e7: 0x100,\n\t0x5e8: 0x100, 0x5e9: 0x100, 0x5ea: 0x100, 0x5eb: 0x100, 0x5ec: 0x100, 0x5ed: 0x100, 0x5ee: 0x100, 0x5ef: 0x100,\n\t0x5f0: 0x100, 0x5f1: 0x100, 0x5f2: 0x100, 0x5f3: 0x100, 0x5f4: 0x100, 0x5f5: 0x100, 0x5f6: 0x100, 0x5f7: 0x100,\n\t0x5f8: 0x100, 0x5f9: 0x100, 0x5fa: 0x100, 0x5fb: 0x100, 0x5fc: 0x17c, 0x5fd: 0x17d, 0x5fe: 0xa2, 0x5ff: 0x17e,\n\t// Block 0x18, offset 0x600\n\t0x600: 0xa2, 0x601: 0xa2, 0x602: 0xa2, 0x603: 0x17f, 0x604: 0x180, 0x605: 0x181, 0x606: 0x182, 0x607: 0x183,\n\t0x608: 0xa2, 0x609: 0x184, 0x60a: 0x100, 0x60b: 0x185, 0x60c: 0xa2, 0x60d: 0x186, 0x60e: 0x100, 0x60f: 0x100,\n\t0x610: 0x63, 0x611: 0x64, 0x612: 0x65, 0x613: 0x66, 0x614: 0x67, 0x615: 0x68, 0x616: 0x69, 0x617: 0x6a,\n\t0x618: 0x6b, 0x619: 0x6c, 0x61a: 0x6d, 0x61b: 0x6e, 0x61c: 0x6f, 0x61d: 0x70, 0x61e: 0x71, 0x61f: 0x72,\n\t0x620: 0xa2, 0x621: 0xa2, 0x622: 0xa2, 0x623: 0xa2, 0x624: 0xa2, 0x625: 0xa2, 0x626: 0xa2, 0x627: 0xa2,\n\t0x628: 0x187, 0x629: 0x188, 0x62a: 0x189, 0x62b: 0x100, 0x62c: 0x100, 0x62d: 0x100, 0x62e: 0x100, 0x62f: 0x100,\n\t0x630: 0x100, 0x631: 0x100, 0x632: 0x100, 0x633: 0x100, 0x634: 0x100, 0x635: 0x100, 0x636: 0x100, 0x637: 0x100,\n\t0x638: 0x100, 0x639: 0x100, 0x63a: 0x100, 0x63b: 0x100, 0x63c: 0x18a, 0x63d: 0x100, 0x63e: 0x100, 0x63f: 0x100,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x73, 0x641: 0x74, 0x642: 0x18b, 0x643: 0x100, 0x644: 0x18c, 0x645: 0x18d, 0x646: 0x100, 0x647: 0x100,\n\t0x648: 0x100, 0x649: 0x100, 0x64a: 0x18e, 0x64b: 0x18f, 0x64c: 0x100, 0x64d: 0x100, 0x64e: 0x100, 0x64f: 0x100,\n\t0x650: 0x100, 0x651: 0x100, 0x652: 0x100, 0x653: 0x190, 0x654: 0x100, 0x655: 0x100, 0x656: 0x100, 0x657: 0x100,\n\t0x658: 0x100, 0x659: 0x100, 0x65a: 0x100, 0x65b: 0x100, 0x65c: 0x100, 0x65d: 0x100, 0x65e: 0x100, 0x65f: 0x191,\n\t0x660: 0x127, 0x661: 0x127, 0x662: 0x127, 0x663: 0x192, 0x664: 0x75, 0x665: 0x193, 0x666: 0x100, 0x667: 0x100,\n\t0x668: 0x100, 0x669: 0x100, 0x66a: 0x100, 0x66b: 0x100, 0x66c: 0x100, 0x66d: 0x100, 0x66e: 0x100, 0x66f: 0x100,\n\t0x670: 0x100, 0x671: 0x194, 0x672: 0x195, 0x673: 0x100, 0x674: 0x196, 0x675: 0x100, 0x676: 0x100, 0x677: 0x100,\n\t0x678: 0x76, 0x679: 0x77, 0x67a: 0x78, 0x67b: 0x197, 0x67c: 0x100, 0x67d: 0x100, 0x67e: 0x100, 0x67f: 0x100,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x198, 0x681: 0xa2, 0x682: 0x199, 0x683: 0x19a, 0x684: 0x79, 0x685: 0x7a, 0x686: 0x19b, 0x687: 0x19c,\n\t0x688: 0x7b, 0x689: 0x19d, 0x68a: 0x100, 0x68b: 0x100, 0x68c: 0xa2, 0x68d: 0xa2, 0x68e: 0xa2, 0x68f: 0xa2,\n\t0x690: 0xa2, 0x691: 0xa2, 0x692: 0xa2, 0x693: 0xa2, 0x694: 0xa2, 0x695: 0xa2, 0x696: 0xa2, 0x697: 0xa2,\n\t0x698: 0xa2, 0x699: 0xa2, 0x69a: 0xa2, 0x69b: 0x19e, 0x69c: 0xa2, 0x69d: 0x19f, 0x69e: 0xa2, 0x69f: 0x1a0,\n\t0x6a0: 0x1a1, 0x6a1: 0x1a2, 0x6a2: 0x1a3, 0x6a3: 0x100, 0x6a4: 0xa2, 0x6a5: 0xa2, 0x6a6: 0xa2, 0x6a7: 0xa2,\n\t0x6a8: 0xa2, 0x6a9: 0x1a4, 0x6aa: 0x1a5, 0x6ab: 0x1a6, 0x6ac: 0xa2, 0x6ad: 0xa2, 0x6ae: 0x1a7, 0x6af: 0x1a8,\n\t0x6b0: 0x100, 0x6b1: 0x100, 0x6b2: 0x100, 0x6b3: 0x100, 0x6b4: 0x100, 0x6b5: 0x100, 0x6b6: 0x100, 0x6b7: 0x100,\n\t0x6b8: 0x100, 0x6b9: 0x100, 0x6ba: 0x100, 0x6bb: 0x100, 0x6bc: 0x100, 0x6bd: 0x100, 0x6be: 0x100, 0x6bf: 0x100,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0xa6, 0x6c1: 0xa6, 0x6c2: 0xa6, 0x6c3: 0xa6, 0x6c4: 0xa6, 0x6c5: 0xa6, 0x6c6: 0xa6, 0x6c7: 0xa6,\n\t0x6c8: 0xa6, 0x6c9: 0xa6, 0x6ca: 0xa6, 0x6cb: 0xa6, 0x6cc: 0xa6, 0x6cd: 0xa6, 0x6ce: 0xa6, 0x6cf: 0xa6,\n\t0x6d0: 0xa6, 0x6d1: 0xa6, 0x6d2: 0xa6, 0x6d3: 0xa6, 0x6d4: 0xa6, 0x6d5: 0xa6, 0x6d6: 0xa6, 0x6d7: 0xa6,\n\t0x6d8: 0xa6, 0x6d9: 0xa6, 0x6da: 0xa6, 0x6db: 0x1a9, 0x6dc: 0xa6, 0x6dd: 0xa6, 0x6de: 0xa6, 0x6df: 0xa6,\n\t0x6e0: 0xa6, 0x6e1: 0xa6, 0x6e2: 0xa6, 0x6e3: 0xa6, 0x6e4: 0xa6, 0x6e5: 0xa6, 0x6e6: 0xa6, 0x6e7: 0xa6,\n\t0x6e8: 0xa6, 0x6e9: 0xa6, 0x6ea: 0xa6, 0x6eb: 0xa6, 0x6ec: 0xa6, 0x6ed: 0xa6, 0x6ee: 0xa6, 0x6ef: 0xa6,\n\t0x6f0: 0xa6, 0x6f1: 0xa6, 0x6f2: 0xa6, 0x6f3: 0xa6, 0x6f4: 0xa6, 0x6f5: 0xa6, 0x6f6: 0xa6, 0x6f7: 0xa6,\n\t0x6f8: 0xa6, 0x6f9: 0xa6, 0x6fa: 0xa6, 0x6fb: 0xa6, 0x6fc: 0xa6, 0x6fd: 0xa6, 0x6fe: 0xa6, 0x6ff: 0xa6,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0xa6, 0x701: 0xa6, 0x702: 0xa6, 0x703: 0xa6, 0x704: 0xa6, 0x705: 0xa6, 0x706: 0xa6, 0x707: 0xa6,\n\t0x708: 0xa6, 0x709: 0xa6, 0x70a: 0xa6, 0x70b: 0xa6, 0x70c: 0xa6, 0x70d: 0xa6, 0x70e: 0xa6, 0x70f: 0xa6,\n\t0x710: 0xa6, 0x711: 0xa6, 0x712: 0xa6, 0x713: 0xa6, 0x714: 0xa6, 0x715: 0xa6, 0x716: 0xa6, 0x717: 0xa6,\n\t0x718: 0xa6, 0x719: 0xa6, 0x71a: 0xa6, 0x71b: 0xa6, 0x71c: 0x1aa, 0x71d: 0xa6, 0x71e: 0xa6, 0x71f: 0xa6,\n\t0x720: 0x1ab, 0x721: 0xa6, 0x722: 0xa6, 0x723: 0xa6, 0x724: 0xa6, 0x725: 0xa6, 0x726: 0xa6, 0x727: 0xa6,\n\t0x728: 0xa6, 0x729: 0xa6, 0x72a: 0xa6, 0x72b: 0xa6, 0x72c: 0xa6, 0x72d: 0xa6, 0x72e: 0xa6, 0x72f: 0xa6,\n\t0x730: 0xa6, 0x731: 0xa6, 0x732: 0xa6, 0x733: 0xa6, 0x734: 0xa6, 0x735: 0xa6, 0x736: 0xa6, 0x737: 0xa6,\n\t0x738: 0xa6, 0x739: 0xa6, 0x73a: 0xa6, 0x73b: 0xa6, 0x73c: 0xa6, 0x73d: 0xa6, 0x73e: 0xa6, 0x73f: 0xa6,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0xa6, 0x741: 0xa6, 0x742: 0xa6, 0x743: 0xa6, 0x744: 0xa6, 0x745: 0xa6, 0x746: 0xa6, 0x747: 0xa6,\n\t0x748: 0xa6, 0x749: 0xa6, 0x74a: 0xa6, 0x74b: 0xa6, 0x74c: 0xa6, 0x74d: 0xa6, 0x74e: 0xa6, 0x74f: 0xa6,\n\t0x750: 0xa6, 0x751: 0xa6, 0x752: 0xa6, 0x753: 0xa6, 0x754: 0xa6, 0x755: 0xa6, 0x756: 0xa6, 0x757: 0xa6,\n\t0x758: 0xa6, 0x759: 0xa6, 0x75a: 0xa6, 0x75b: 0xa6, 0x75c: 0xa6, 0x75d: 0xa6, 0x75e: 0xa6, 0x75f: 0xa6,\n\t0x760: 0xa6, 0x761: 0xa6, 0x762: 0xa6, 0x763: 0xa6, 0x764: 0xa6, 0x765: 0xa6, 0x766: 0xa6, 0x767: 0xa6,\n\t0x768: 0xa6, 0x769: 0xa6, 0x76a: 0xa6, 0x76b: 0xa6, 0x76c: 0xa6, 0x76d: 0xa6, 0x76e: 0xa6, 0x76f: 0xa6,\n\t0x770: 0xa6, 0x771: 0xa6, 0x772: 0xa6, 0x773: 0xa6, 0x774: 0xa6, 0x775: 0xa6, 0x776: 0xa6, 0x777: 0xa6,\n\t0x778: 0xa6, 0x779: 0xa6, 0x77a: 0x1ac, 0x77b: 0xa6, 0x77c: 0xa6, 0x77d: 0xa6, 0x77e: 0xa6, 0x77f: 0xa6,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0xa6, 0x781: 0xa6, 0x782: 0xa6, 0x783: 0xa6, 0x784: 0xa6, 0x785: 0xa6, 0x786: 0xa6, 0x787: 0xa6,\n\t0x788: 0xa6, 0x789: 0xa6, 0x78a: 0xa6, 0x78b: 0xa6, 0x78c: 0xa6, 0x78d: 0xa6, 0x78e: 0xa6, 0x78f: 0xa6,\n\t0x790: 0xa6, 0x791: 0xa6, 0x792: 0xa6, 0x793: 0xa6, 0x794: 0xa6, 0x795: 0xa6, 0x796: 0xa6, 0x797: 0xa6,\n\t0x798: 0xa6, 0x799: 0xa6, 0x79a: 0xa6, 0x79b: 0xa6, 0x79c: 0xa6, 0x79d: 0xa6, 0x79e: 0xa6, 0x79f: 0xa6,\n\t0x7a0: 0xa6, 0x7a1: 0xa6, 0x7a2: 0xa6, 0x7a3: 0xa6, 0x7a4: 0xa6, 0x7a5: 0xa6, 0x7a6: 0xa6, 0x7a7: 0xa6,\n\t0x7a8: 0xa6, 0x7a9: 0xa6, 0x7aa: 0xa6, 0x7ab: 0xa6, 0x7ac: 0xa6, 0x7ad: 0xa6, 0x7ae: 0xa6, 0x7af: 0x1ad,\n\t0x7b0: 0x100, 0x7b1: 0x100, 0x7b2: 0x100, 0x7b3: 0x100, 0x7b4: 0x100, 0x7b5: 0x100, 0x7b6: 0x100, 0x7b7: 0x100,\n\t0x7b8: 0x100, 0x7b9: 0x100, 0x7ba: 0x100, 0x7bb: 0x100, 0x7bc: 0x100, 0x7bd: 0x100, 0x7be: 0x100, 0x7bf: 0x100,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x100, 0x7c1: 0x100, 0x7c2: 0x100, 0x7c3: 0x100, 0x7c4: 0x100, 0x7c5: 0x100, 0x7c6: 0x100, 0x7c7: 0x100,\n\t0x7c8: 0x100, 0x7c9: 0x100, 0x7ca: 0x100, 0x7cb: 0x100, 0x7cc: 0x100, 0x7cd: 0x100, 0x7ce: 0x100, 0x7cf: 0x100,\n\t0x7d0: 0x100, 0x7d1: 0x100, 0x7d2: 0x100, 0x7d3: 0x100, 0x7d4: 0x100, 0x7d5: 0x100, 0x7d6: 0x100, 0x7d7: 0x100,\n\t0x7d8: 0x100, 0x7d9: 0x100, 0x7da: 0x100, 0x7db: 0x100, 0x7dc: 0x100, 0x7dd: 0x100, 0x7de: 0x100, 0x7df: 0x100,\n\t0x7e0: 0x7c, 0x7e1: 0x7d, 0x7e2: 0x7e, 0x7e3: 0x7f, 0x7e4: 0x80, 0x7e5: 0x81, 0x7e6: 0x82, 0x7e7: 0x83,\n\t0x7e8: 0x84, 0x7e9: 0x100, 0x7ea: 0x100, 0x7eb: 0x100, 0x7ec: 0x100, 0x7ed: 0x100, 0x7ee: 0x100, 0x7ef: 0x100,\n\t0x7f0: 0x100, 0x7f1: 0x100, 0x7f2: 0x100, 0x7f3: 0x100, 0x7f4: 0x100, 0x7f5: 0x100, 0x7f6: 0x100, 0x7f7: 0x100,\n\t0x7f8: 0x100, 0x7f9: 0x100, 0x7fa: 0x100, 0x7fb: 0x100, 0x7fc: 0x100, 0x7fd: 0x100, 0x7fe: 0x100, 0x7ff: 0x100,\n\t// Block 0x20, offset 0x800\n\t0x800: 0xa6, 0x801: 0xa6, 0x802: 0xa6, 0x803: 0xa6, 0x804: 0xa6, 0x805: 0xa6, 0x806: 0xa6, 0x807: 0xa6,\n\t0x808: 0xa6, 0x809: 0xa6, 0x80a: 0xa6, 0x80b: 0xa6, 0x80c: 0xa6, 0x80d: 0x1ae, 0x80e: 0xa6, 0x80f: 0xa6,\n\t0x810: 0xa6, 0x811: 0xa6, 0x812: 0xa6, 0x813: 0xa6, 0x814: 0xa6, 0x815: 0xa6, 0x816: 0xa6, 0x817: 0xa6,\n\t0x818: 0xa6, 0x819: 0xa6, 0x81a: 0xa6, 0x81b: 0xa6, 0x81c: 0xa6, 0x81d: 0xa6, 0x81e: 0xa6, 0x81f: 0xa6,\n\t0x820: 0xa6, 0x821: 0xa6, 0x822: 0xa6, 0x823: 0xa6, 0x824: 0xa6, 0x825: 0xa6, 0x826: 0xa6, 0x827: 0xa6,\n\t0x828: 0xa6, 0x829: 0xa6, 0x82a: 0xa6, 0x82b: 0xa6, 0x82c: 0xa6, 0x82d: 0xa6, 0x82e: 0xa6, 0x82f: 0xa6,\n\t0x830: 0xa6, 0x831: 0xa6, 0x832: 0xa6, 0x833: 0xa6, 0x834: 0xa6, 0x835: 0xa6, 0x836: 0xa6, 0x837: 0xa6,\n\t0x838: 0xa6, 0x839: 0xa6, 0x83a: 0xa6, 0x83b: 0xa6, 0x83c: 0xa6, 0x83d: 0xa6, 0x83e: 0xa6, 0x83f: 0xa6,\n\t// Block 0x21, offset 0x840\n\t0x840: 0xa6, 0x841: 0xa6, 0x842: 0xa6, 0x843: 0xa6, 0x844: 0xa6, 0x845: 0xa6, 0x846: 0xa6, 0x847: 0xa6,\n\t0x848: 0xa6, 0x849: 0xa6, 0x84a: 0xa6, 0x84b: 0xa6, 0x84c: 0xa6, 0x84d: 0xa6, 0x84e: 0x1af, 0x84f: 0x100,\n\t0x850: 0x100, 0x851: 0x100, 0x852: 0x100, 0x853: 0x100, 0x854: 0x100, 0x855: 0x100, 0x856: 0x100, 0x857: 0x100,\n\t0x858: 0x100, 0x859: 0x100, 0x85a: 0x100, 0x85b: 0x100, 0x85c: 0x100, 0x85d: 0x100, 0x85e: 0x100, 0x85f: 0x100,\n\t0x860: 0x100, 0x861: 0x100, 0x862: 0x100, 0x863: 0x100, 0x864: 0x100, 0x865: 0x100, 0x866: 0x100, 0x867: 0x100,\n\t0x868: 0x100, 0x869: 0x100, 0x86a: 0x100, 0x86b: 0x100, 0x86c: 0x100, 0x86d: 0x100, 0x86e: 0x100, 0x86f: 0x100,\n\t0x870: 0x100, 0x871: 0x100, 0x872: 0x100, 0x873: 0x100, 0x874: 0x100, 0x875: 0x100, 0x876: 0x100, 0x877: 0x100,\n\t0x878: 0x100, 0x879: 0x100, 0x87a: 0x100, 0x87b: 0x100, 0x87c: 0x100, 0x87d: 0x100, 0x87e: 0x100, 0x87f: 0x100,\n\t// Block 0x22, offset 0x880\n\t0x890: 0x0c, 0x891: 0x0d, 0x892: 0x0e, 0x893: 0x0f, 0x894: 0x10, 0x895: 0x0a, 0x896: 0x11, 0x897: 0x07,\n\t0x898: 0x12, 0x899: 0x0a, 0x89a: 0x13, 0x89b: 0x14, 0x89c: 0x15, 0x89d: 0x16, 0x89e: 0x17, 0x89f: 0x18,\n\t0x8a0: 0x07, 0x8a1: 0x07, 0x8a2: 0x07, 0x8a3: 0x07, 0x8a4: 0x07, 0x8a5: 0x07, 0x8a6: 0x07, 0x8a7: 0x07,\n\t0x8a8: 0x07, 0x8a9: 0x07, 0x8aa: 0x19, 0x8ab: 0x1a, 0x8ac: 0x1b, 0x8ad: 0x07, 0x8ae: 0x1c, 0x8af: 0x1d,\n\t0x8b0: 0x07, 0x8b1: 0x1e, 0x8b2: 0x1f, 0x8b3: 0x0a, 0x8b4: 0x0a, 0x8b5: 0x0a, 0x8b6: 0x0a, 0x8b7: 0x0a,\n\t0x8b8: 0x0a, 0x8b9: 0x0a, 0x8ba: 0x0a, 0x8bb: 0x0a, 0x8bc: 0x0a, 0x8bd: 0x0a, 0x8be: 0x0a, 0x8bf: 0x0a,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0a, 0x8c1: 0x0a, 0x8c2: 0x0a, 0x8c3: 0x0a, 0x8c4: 0x0a, 0x8c5: 0x0a, 0x8c6: 0x0a, 0x8c7: 0x0a,\n\t0x8c8: 0x0a, 0x8c9: 0x0a, 0x8ca: 0x0a, 0x8cb: 0x0a, 0x8cc: 0x0a, 0x8cd: 0x0a, 0x8ce: 0x0a, 0x8cf: 0x0a,\n\t0x8d0: 0x0a, 0x8d1: 0x0a, 0x8d2: 0x0a, 0x8d3: 0x0a, 0x8d4: 0x0a, 0x8d5: 0x0a, 0x8d6: 0x0a, 0x8d7: 0x0a,\n\t0x8d8: 0x0a, 0x8d9: 0x0a, 0x8da: 0x0a, 0x8db: 0x0a, 0x8dc: 0x0a, 0x8dd: 0x0a, 0x8de: 0x0a, 0x8df: 0x0a,\n\t0x8e0: 0x0a, 0x8e1: 0x0a, 0x8e2: 0x0a, 0x8e3: 0x0a, 0x8e4: 0x0a, 0x8e5: 0x0a, 0x8e6: 0x0a, 0x8e7: 0x0a,\n\t0x8e8: 0x0a, 0x8e9: 0x0a, 0x8ea: 0x0a, 0x8eb: 0x0a, 0x8ec: 0x0a, 0x8ed: 0x0a, 0x8ee: 0x0a, 0x8ef: 0x0a,\n\t0x8f0: 0x0a, 0x8f1: 0x0a, 0x8f2: 0x0a, 0x8f3: 0x0a, 0x8f4: 0x0a, 0x8f5: 0x0a, 0x8f6: 0x0a, 0x8f7: 0x0a,\n\t0x8f8: 0x0a, 0x8f9: 0x0a, 0x8fa: 0x0a, 0x8fb: 0x0a, 0x8fc: 0x0a, 0x8fd: 0x0a, 0x8fe: 0x0a, 0x8ff: 0x0a,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x1b0, 0x901: 0x1b1, 0x902: 0x100, 0x903: 0x100, 0x904: 0x1b2, 0x905: 0x1b2, 0x906: 0x1b2, 0x907: 0x1b3,\n\t0x908: 0x100, 0x909: 0x100, 0x90a: 0x100, 0x90b: 0x100, 0x90c: 0x100, 0x90d: 0x100, 0x90e: 0x100, 0x90f: 0x100,\n\t0x910: 0x100, 0x911: 0x100, 0x912: 0x100, 0x913: 0x100, 0x914: 0x100, 0x915: 0x100, 0x916: 0x100, 0x917: 0x100,\n\t0x918: 0x100, 0x919: 0x100, 0x91a: 0x100, 0x91b: 0x100, 0x91c: 0x100, 0x91d: 0x100, 0x91e: 0x100, 0x91f: 0x100,\n\t0x920: 0x100, 0x921: 0x100, 0x922: 0x100, 0x923: 0x100, 0x924: 0x100, 0x925: 0x100, 0x926: 0x100, 0x927: 0x100,\n\t0x928: 0x100, 0x929: 0x100, 0x92a: 0x100, 0x92b: 0x100, 0x92c: 0x100, 0x92d: 0x100, 0x92e: 0x100, 0x92f: 0x100,\n\t0x930: 0x100, 0x931: 0x100, 0x932: 0x100, 0x933: 0x100, 0x934: 0x100, 0x935: 0x100, 0x936: 0x100, 0x937: 0x100,\n\t0x938: 0x100, 0x939: 0x100, 0x93a: 0x100, 0x93b: 0x100, 0x93c: 0x100, 0x93d: 0x100, 0x93e: 0x100, 0x93f: 0x100,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0a, 0x941: 0x0a, 0x942: 0x0a, 0x943: 0x0a, 0x944: 0x0a, 0x945: 0x0a, 0x946: 0x0a, 0x947: 0x0a,\n\t0x948: 0x0a, 0x949: 0x0a, 0x94a: 0x0a, 0x94b: 0x0a, 0x94c: 0x0a, 0x94d: 0x0a, 0x94e: 0x0a, 0x94f: 0x0a,\n\t0x950: 0x0a, 0x951: 0x0a, 0x952: 0x0a, 0x953: 0x0a, 0x954: 0x0a, 0x955: 0x0a, 0x956: 0x0a, 0x957: 0x0a,\n\t0x958: 0x0a, 0x959: 0x0a, 0x95a: 0x0a, 0x95b: 0x0a, 0x95c: 0x0a, 0x95d: 0x0a, 0x95e: 0x0a, 0x95f: 0x0a,\n\t0x960: 0x22, 0x961: 0x0a, 0x962: 0x0a, 0x963: 0x0a, 0x964: 0x0a, 0x965: 0x0a, 0x966: 0x0a, 0x967: 0x0a,\n\t0x968: 0x0a, 0x969: 0x0a, 0x96a: 0x0a, 0x96b: 0x0a, 0x96c: 0x0a, 0x96d: 0x0a, 0x96e: 0x0a, 0x96f: 0x0a,\n\t0x970: 0x0a, 0x971: 0x0a, 0x972: 0x0a, 0x973: 0x0a, 0x974: 0x0a, 0x975: 0x0a, 0x976: 0x0a, 0x977: 0x0a,\n\t0x978: 0x0a, 0x979: 0x0a, 0x97a: 0x0a, 0x97b: 0x0a, 0x97c: 0x0a, 0x97d: 0x0a, 0x97e: 0x0a, 0x97f: 0x0a,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x0a, 0x981: 0x0a, 0x982: 0x0a, 0x983: 0x0a, 0x984: 0x0a, 0x985: 0x0a, 0x986: 0x0a, 0x987: 0x0a,\n\t0x988: 0x0a, 0x989: 0x0a, 0x98a: 0x0a, 0x98b: 0x0a, 0x98c: 0x0a, 0x98d: 0x0a, 0x98e: 0x0a, 0x98f: 0x0a,\n}\n\n// idnaSparseOffset: 303 entries, 606 bytes\nvar idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x7e, 0x87, 0x97, 0xa6, 0xb1, 0xbe, 0xcf, 0xd9, 0xe0, 0xed, 0xfe, 0x105, 0x110, 0x11f, 0x12d, 0x137, 0x139, 0x13e, 0x141, 0x144, 0x146, 0x152, 0x15d, 0x165, 0x16b, 0x171, 0x176, 0x17b, 0x17e, 0x182, 0x188, 0x18d, 0x198, 0x1a2, 0x1a8, 0x1b9, 0x1c4, 0x1c7, 0x1cf, 0x1d2, 0x1df, 0x1e7, 0x1eb, 0x1f2, 0x1fa, 0x20a, 0x216, 0x219, 0x223, 0x22f, 0x23b, 0x247, 0x24f, 0x254, 0x261, 0x272, 0x27d, 0x282, 0x28b, 0x293, 0x299, 0x29e, 0x2a1, 0x2a5, 0x2ab, 0x2af, 0x2b3, 0x2b7, 0x2bc, 0x2c4, 0x2cb, 0x2d6, 0x2e0, 0x2e4, 0x2e7, 0x2ed, 0x2f1, 0x2f3, 0x2f6, 0x2f8, 0x2fb, 0x305, 0x308, 0x317, 0x31b, 0x31f, 0x321, 0x32a, 0x32e, 0x333, 0x338, 0x33e, 0x34e, 0x354, 0x358, 0x367, 0x36c, 0x374, 0x37e, 0x389, 0x391, 0x3a2, 0x3ab, 0x3bb, 0x3c8, 0x3d4, 0x3d9, 0x3e6, 0x3ea, 0x3ef, 0x3f1, 0x3f3, 0x3f7, 0x3f9, 0x3fd, 0x406, 0x40c, 0x410, 0x420, 0x42a, 0x42f, 0x432, 0x438, 0x43f, 0x444, 0x448, 0x44e, 0x453, 0x45c, 0x461, 0x467, 0x46e, 0x475, 0x47c, 0x480, 0x483, 0x488, 0x494, 0x49a, 0x49f, 0x4a6, 0x4ae, 0x4b3, 0x4b7, 0x4c7, 0x4ce, 0x4d2, 0x4d6, 0x4dd, 0x4df, 0x4e2, 0x4e5, 0x4e9, 0x4f2, 0x4f6, 0x4fe, 0x501, 0x509, 0x514, 0x523, 0x52f, 0x535, 0x542, 0x54e, 0x556, 0x55f, 0x56a, 0x571, 0x580, 0x58d, 0x591, 0x59e, 0x5a7, 0x5ab, 0x5ba, 0x5c2, 0x5cd, 0x5d6, 0x5dc, 0x5e4, 0x5ed, 0x5f9, 0x5fc, 0x608, 0x60b, 0x614, 0x617, 0x61c, 0x625, 0x62a, 0x637, 0x642, 0x64b, 0x656, 0x659, 0x65c, 0x666, 0x66f, 0x67b, 0x688, 0x695, 0x6a3, 0x6aa, 0x6b5, 0x6bc, 0x6c0, 0x6c4, 0x6c7, 0x6cc, 0x6cf, 0x6d2, 0x6d6, 0x6d9, 0x6de, 0x6e5, 0x6e8, 0x6f0, 0x6f4, 0x6ff, 0x702, 0x705, 0x708, 0x70e, 0x714, 0x71d, 0x720, 0x723, 0x726, 0x72e, 0x733, 0x73c, 0x73f, 0x744, 0x74e, 0x752, 0x756, 0x759, 0x75c, 0x760, 0x76f, 0x77b, 0x77f, 0x784, 0x789, 0x78e, 0x792, 0x797, 0x7a0, 0x7a5, 0x7a9, 0x7af, 0x7b5, 0x7ba, 0x7c0, 0x7c6, 0x7d0, 0x7d6, 0x7df, 0x7e2, 0x7e5, 0x7e9, 0x7ed, 0x7f1, 0x7f7, 0x7fd, 0x802, 0x805, 0x815, 0x81c, 0x820, 0x827, 0x82b, 0x831, 0x838, 0x83f, 0x845, 0x84e, 0x852, 0x860, 0x863, 0x866, 0x86a, 0x86e, 0x871, 0x875, 0x878, 0x87d, 0x87f, 0x881}\n\n// idnaSparseValues: 2180 entries, 8720 bytes\nvar idnaSparseValues = [2180]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe105, lo: 0x80, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0x97},\n\t{value: 0xe105, lo: 0x98, hi: 0x9e},\n\t{value: 0x001f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbf},\n\t// Block 0x1, offset 0x8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0xe01d, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0335, lo: 0x83, hi: 0x83},\n\t{value: 0x034d, lo: 0x84, hi: 0x84},\n\t{value: 0x0365, lo: 0x85, hi: 0x85},\n\t{value: 0xe00d, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0xe00d, lo: 0x88, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x89},\n\t{value: 0xe00d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe00d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0x8d},\n\t{value: 0xe00d, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0xbf},\n\t// Block 0x2, offset 0x19\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x00a9, lo: 0xb0, hi: 0xb0},\n\t{value: 0x037d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x00b1, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00b9, lo: 0xb3, hi: 0xb3},\n\t{value: 0x034d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0395, lo: 0xb5, hi: 0xb5},\n\t{value: 0xe1bd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x00c1, lo: 0xb7, hi: 0xb7},\n\t{value: 0x00c9, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbf},\n\t// Block 0x3, offset 0x25\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x3308, lo: 0x80, hi: 0xbf},\n\t// Block 0x4, offset 0x27\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x03f5, lo: 0x80, hi: 0x8f},\n\t{value: 0xe105, lo: 0x90, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5, offset 0x2c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x0545, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x0008, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x6, offset 0x33\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0131, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0018, lo: 0x89, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7, offset 0x3e\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0818, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x82},\n\t{value: 0x0818, lo: 0x83, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xae},\n\t{value: 0x0808, lo: 0xaf, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x8, offset 0x4a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0c08, lo: 0x88, hi: 0x99},\n\t{value: 0x0a08, lo: 0x9a, hi: 0xbf},\n\t// Block 0x9, offset 0x4e\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0c08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0a08, lo: 0x8e, hi: 0x98},\n\t{value: 0x0c08, lo: 0x99, hi: 0x9b},\n\t{value: 0x0a08, lo: 0x9c, hi: 0xaa},\n\t{value: 0x0c08, lo: 0xab, hi: 0xac},\n\t{value: 0x0a08, lo: 0xad, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0a08, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0c08, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xa, offset 0x5d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xb, offset 0x62\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0808, lo: 0x80, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbf},\n\t// Block 0xc, offset 0x6c\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x99},\n\t{value: 0x0808, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa3},\n\t{value: 0x0808, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa7},\n\t{value: 0x0808, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0818, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd, offset 0x78\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0a08, lo: 0x80, hi: 0x88},\n\t{value: 0x0808, lo: 0x89, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0xa1},\n\t{value: 0x0840, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xbf},\n\t// Block 0xe, offset 0x7e\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0xf, offset 0x87\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x85},\n\t{value: 0x3008, lo: 0x86, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8c},\n\t{value: 0x3b08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x10, offset 0x97\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x11, offset 0xa6\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xba},\n\t{value: 0x3b08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x12, offset 0xb1\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x13, offset 0xbe\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x89},\n\t{value: 0x3b08, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x3008, lo: 0x98, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x14, offset 0xcf\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x01f1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb9},\n\t{value: 0x3b08, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x15, offset 0xd9\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0xbf},\n\t// Block 0x16, offset 0xe0\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0201, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0209, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0008, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x17, offset 0xed\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe03d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x18, offset 0xfe\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0x19, offset 0x105\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1a, offset 0x110\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3008, lo: 0xa2, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbf},\n\t// Block 0x1b, offset 0x11f\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x8c},\n\t{value: 0x3308, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x3008, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x1c, offset 0x12d\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x86},\n\t{value: 0x055d, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8c},\n\t{value: 0x055d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe105, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x1d, offset 0x137\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0018, lo: 0x80, hi: 0xbf},\n\t// Block 0x1e, offset 0x139\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa0},\n\t{value: 0x2018, lo: 0xa1, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x1f, offset 0x13e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa7},\n\t{value: 0x2018, lo: 0xa8, hi: 0xbf},\n\t// Block 0x20, offset 0x141\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2018, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0xbf},\n\t// Block 0x21, offset 0x144\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0008, lo: 0x80, hi: 0xbf},\n\t// Block 0x22, offset 0x146\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x23, offset 0x152\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x24, offset 0x15d\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x25, offset 0x165\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x26, offset 0x16b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x27, offset 0x171\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x28, offset 0x176\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x29, offset 0x17b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x2a, offset 0x17e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xbf},\n\t// Block 0x2b, offset 0x182\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2c, offset 0x188\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x2d, offset 0x18d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x3b08, lo: 0x94, hi: 0x94},\n\t{value: 0x3808, lo: 0x95, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3808, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x2e, offset 0x198\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x2f, offset 0x1a2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xb3},\n\t{value: 0x3340, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x30, offset 0x1a8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x3008, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x91},\n\t{value: 0x3b08, lo: 0x92, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0x96},\n\t{value: 0x0008, lo: 0x97, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x31, offset 0x1b9\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x86},\n\t{value: 0x0218, lo: 0x87, hi: 0x87},\n\t{value: 0x0018, lo: 0x88, hi: 0x8a},\n\t{value: 0x33c0, lo: 0x8b, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x33c0, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0208, lo: 0xa0, hi: 0xbf},\n\t// Block 0x32, offset 0x1c4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0208, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x33, offset 0x1c7\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0208, lo: 0x87, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0208, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x34, offset 0x1cf\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x35, offset 0x1d2\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x36, offset 0x1df\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x37, offset 0x1e7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x38, offset 0x1eb\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0028, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xbf},\n\t// Block 0x39, offset 0x1f2\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x3308, lo: 0x97, hi: 0x98},\n\t{value: 0x3008, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x3a, offset 0x1fa\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x94},\n\t{value: 0x3008, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xac},\n\t{value: 0x3008, lo: 0xad, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3b, offset 0x20a\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbd},\n\t{value: 0x3318, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3c, offset 0x216\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x3308, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0xbf},\n\t// Block 0x3d, offset 0x219\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3008, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x3e, offset 0x223\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x3808, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3f, offset 0x22f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3808, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xbf},\n\t// Block 0x40, offset 0x23b\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3008, lo: 0xaa, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3808, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x41, offset 0x247\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x42, offset 0x24f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x43, offset 0x254\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x02a9, lo: 0x80, hi: 0x80},\n\t{value: 0x02b1, lo: 0x81, hi: 0x81},\n\t{value: 0x02b9, lo: 0x82, hi: 0x82},\n\t{value: 0x02c1, lo: 0x83, hi: 0x83},\n\t{value: 0x02c9, lo: 0x84, hi: 0x85},\n\t{value: 0x02d1, lo: 0x86, hi: 0x86},\n\t{value: 0x02d9, lo: 0x87, hi: 0x87},\n\t{value: 0x057d, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x059d, lo: 0x90, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x059d, lo: 0xbd, hi: 0xbf},\n\t// Block 0x44, offset 0x261\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x92},\n\t{value: 0x0018, lo: 0x93, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0008, lo: 0xa9, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x45, offset 0x272\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x87},\n\t{value: 0xe045, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0xe045, lo: 0x98, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0xe045, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbf},\n\t// Block 0x46, offset 0x27d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x8f},\n\t{value: 0x3318, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x47, offset 0x282\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x0851, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x48, offset 0x28b\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0859, lo: 0xac, hi: 0xac},\n\t{value: 0x0861, lo: 0xad, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xae},\n\t{value: 0x0869, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0871, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x49, offset 0x293\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x9f},\n\t{value: 0x0080, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xad},\n\t{value: 0x0080, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x4a, offset 0x299\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa8},\n\t{value: 0x09dd, lo: 0xa9, hi: 0xa9},\n\t{value: 0x09fd, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xbf},\n\t// Block 0x4b, offset 0x29e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0x4c, offset 0x2a1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0929, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x4d, offset 0x2a5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0e7e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0932, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0e9e, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x4e, offset 0x2ab\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x9b},\n\t{value: 0x0939, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0xbf},\n\t// Block 0x4f, offset 0x2af\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x50, offset 0x2b3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0xbf},\n\t// Block 0x51, offset 0x2b7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x03f5, lo: 0x90, hi: 0x9f},\n\t{value: 0x0ebd, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x52, offset 0x2bc\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x53, offset 0x2c4\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xae},\n\t{value: 0xe075, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x54, offset 0x2cb\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x55, offset 0x2d6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xbf},\n\t// Block 0x56, offset 0x2e0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x57, offset 0x2e4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x58, offset 0x2e7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9e},\n\t{value: 0x0ef5, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x59, offset 0x2ed\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb2},\n\t{value: 0x0f15, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x5a, offset 0x2f1\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x0f35, lo: 0x80, hi: 0xbf},\n\t// Block 0x5b, offset 0x2f3\n\t{value: 0x0020, lo: 0x02},\n\t{value: 0x1735, lo: 0x80, hi: 0x8f},\n\t{value: 0x1915, lo: 0x90, hi: 0xbf},\n\t// Block 0x5c, offset 0x2f6\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x1f15, lo: 0x80, hi: 0xbf},\n\t// Block 0x5d, offset 0x2f8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x5e, offset 0x2fb\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9a},\n\t{value: 0x096a, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0972, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0979, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x5f, offset 0x305\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x0981, lo: 0xbf, hi: 0xbf},\n\t// Block 0x60, offset 0x308\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0040, lo: 0x80, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb0},\n\t{value: 0x2a35, lo: 0xb1, hi: 0xb1},\n\t{value: 0x2a55, lo: 0xb2, hi: 0xb2},\n\t{value: 0x2a75, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2a95, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2a75, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2ab5, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2ad5, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2af5, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2b15, lo: 0xba, hi: 0xbb},\n\t{value: 0x2b35, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2b15, lo: 0xbe, hi: 0xbf},\n\t// Block 0x61, offset 0x317\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x62, offset 0x31b\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x098a, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0a82, lo: 0xa0, hi: 0xbf},\n\t// Block 0x63, offset 0x31f\n\t{value: 0x0008, lo: 0x01},\n\t{value: 0x0d19, lo: 0x80, hi: 0xbf},\n\t// Block 0x64, offset 0x321\n\t{value: 0x0008, lo: 0x08},\n\t{value: 0x0f19, lo: 0x80, hi: 0xb0},\n\t{value: 0x4045, lo: 0xb1, hi: 0xb1},\n\t{value: 0x10a1, lo: 0xb2, hi: 0xb3},\n\t{value: 0x4065, lo: 0xb4, hi: 0xb4},\n\t{value: 0x10b1, lo: 0xb5, hi: 0xb7},\n\t{value: 0x4085, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4085, lo: 0xb9, hi: 0xb9},\n\t{value: 0x10c9, lo: 0xba, hi: 0xbf},\n\t// Block 0x65, offset 0x32a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x66, offset 0x32e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x67, offset 0x333\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x68, offset 0x338\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0018, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x69, offset 0x33e\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x3308, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0008, lo: 0x8c, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xab},\n\t{value: 0x3b08, lo: 0xac, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x6a, offset 0x34e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0208, lo: 0x80, hi: 0xb1},\n\t{value: 0x0108, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6b, offset 0x354\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xbf},\n\t// Block 0x6c, offset 0x358\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x6d, offset 0x367\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x6e, offset 0x36c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x91},\n\t{value: 0x3008, lo: 0x92, hi: 0x92},\n\t{value: 0x3808, lo: 0x93, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x6f, offset 0x374\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb9},\n\t{value: 0x3008, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x70, offset 0x37e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x71, offset 0x389\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x72, offset 0x391\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3008, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x73, offset 0x3a2\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x74, offset 0x3ab\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x9a},\n\t{value: 0x0008, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3b08, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x75, offset 0x3bb\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x90},\n\t{value: 0x0008, lo: 0x91, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x76, offset 0x3c8\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x449d, lo: 0x9c, hi: 0x9c},\n\t{value: 0x44b5, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0941, lo: 0x9e, hi: 0x9e},\n\t{value: 0xe06d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa8},\n\t{value: 0x13f9, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x44cd, lo: 0xb0, hi: 0xbf},\n\t// Block 0x77, offset 0x3d4\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x44ed, lo: 0x80, hi: 0x8f},\n\t{value: 0x450d, lo: 0x90, hi: 0x9f},\n\t{value: 0x452d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x450d, lo: 0xb0, hi: 0xbf},\n\t// Block 0x78, offset 0x3d9\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3b08, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x79, offset 0x3e6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7a, offset 0x3ea\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x7b, offset 0x3ef\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0040, lo: 0x80, hi: 0xbf},\n\t// Block 0x7c, offset 0x3f1\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x454d, lo: 0x80, hi: 0xbf},\n\t// Block 0x7d, offset 0x3f3\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x4d4d, lo: 0x80, hi: 0x94},\n\t{value: 0x4b0d, lo: 0x95, hi: 0x95},\n\t{value: 0x4fed, lo: 0x96, hi: 0xbf},\n\t// Block 0x7e, offset 0x3f7\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x552d, lo: 0x80, hi: 0xbf},\n\t// Block 0x7f, offset 0x3f9\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x5d2d, lo: 0x80, hi: 0x84},\n\t{value: 0x568d, lo: 0x85, hi: 0x85},\n\t{value: 0x5dcd, lo: 0x86, hi: 0xbf},\n\t// Block 0x80, offset 0x3fd\n\t{value: 0x0020, lo: 0x08},\n\t{value: 0x6b8d, lo: 0x80, hi: 0x8f},\n\t{value: 0x6d4d, lo: 0x90, hi: 0x90},\n\t{value: 0x6d8d, lo: 0x91, hi: 0xab},\n\t{value: 0x1401, lo: 0xac, hi: 0xac},\n\t{value: 0x70ed, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x710d, lo: 0xb0, hi: 0xbf},\n\t// Block 0x81, offset 0x406\n\t{value: 0x0020, lo: 0x05},\n\t{value: 0x730d, lo: 0x80, hi: 0xad},\n\t{value: 0x656d, lo: 0xae, hi: 0xae},\n\t{value: 0x78cd, lo: 0xaf, hi: 0xb5},\n\t{value: 0x6f8d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x79ad, lo: 0xb7, hi: 0xbf},\n\t// Block 0x82, offset 0x40c\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x1751, lo: 0x80, hi: 0x82},\n\t{value: 0x1741, lo: 0x83, hi: 0x83},\n\t{value: 0x1769, lo: 0x84, hi: 0xbf},\n\t// Block 0x83, offset 0x410\n\t{value: 0x0008, lo: 0x0f},\n\t{value: 0x1d81, lo: 0x80, hi: 0x83},\n\t{value: 0x1d99, lo: 0x84, hi: 0x85},\n\t{value: 0x1da1, lo: 0x86, hi: 0x87},\n\t{value: 0x1da9, lo: 0x88, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x1de9, lo: 0x92, hi: 0x97},\n\t{value: 0x1e11, lo: 0x98, hi: 0x9c},\n\t{value: 0x1e31, lo: 0x9d, hi: 0xb3},\n\t{value: 0x1d71, lo: 0xb4, hi: 0xb4},\n\t{value: 0x1d81, lo: 0xb5, hi: 0xb5},\n\t{value: 0x1ee9, lo: 0xb6, hi: 0xbb},\n\t{value: 0x1f09, lo: 0xbc, hi: 0xbc},\n\t{value: 0x1ef9, lo: 0xbd, hi: 0xbd},\n\t{value: 0x1f19, lo: 0xbe, hi: 0xbf},\n\t// Block 0x84, offset 0x420\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0008, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x85, offset 0x42a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x86, offset 0x42f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x87, offset 0x432\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x88, offset 0x438\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x89, offset 0x43f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x8a, offset 0x444\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8b, offset 0x448\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x8c, offset 0x44e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xbf},\n\t// Block 0x8d, offset 0x453\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8e, offset 0x45c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8f, offset 0x461\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x90, offset 0x467\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x97},\n\t{value: 0x8b0d, lo: 0x98, hi: 0x9f},\n\t{value: 0x8b25, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xbf},\n\t// Block 0x91, offset 0x46e\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x8b25, lo: 0xb0, hi: 0xb7},\n\t{value: 0x8b0d, lo: 0xb8, hi: 0xbf},\n\t// Block 0x92, offset 0x475\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x93, offset 0x47c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x94, offset 0x480\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x95, offset 0x483\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xbf},\n\t// Block 0x96, offset 0x488\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0808, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0808, lo: 0x8a, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0808, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0808, lo: 0xbf, hi: 0xbf},\n\t// Block 0x97, offset 0x494\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0818, lo: 0x97, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0818, lo: 0xb7, hi: 0xbf},\n\t// Block 0x98, offset 0x49a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa6},\n\t{value: 0x0818, lo: 0xa7, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x99, offset 0x49f\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x0818, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9a, offset 0x4a6\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0818, lo: 0x96, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0818, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9b, offset 0x4ae\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbb},\n\t{value: 0x0818, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0808, lo: 0xbe, hi: 0xbf},\n\t// Block 0x9c, offset 0x4b3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0818, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x0818, lo: 0x92, hi: 0xbf},\n\t// Block 0x9d, offset 0x4b7\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x94},\n\t{value: 0x0808, lo: 0x95, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x98},\n\t{value: 0x0808, lo: 0x99, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9e, offset 0x4c7\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0818, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0818, lo: 0x90, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0818, lo: 0xbd, hi: 0xbf},\n\t// Block 0x9f, offset 0x4ce\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xa0, offset 0x4d2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xbf},\n\t// Block 0xa1, offset 0x4d6\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0818, lo: 0x98, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb7},\n\t{value: 0x0818, lo: 0xb8, hi: 0xbf},\n\t// Block 0xa2, offset 0x4dd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0808, lo: 0x80, hi: 0xbf},\n\t// Block 0xa3, offset 0x4df\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0808, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xa4, offset 0x4e2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x03dd, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xa5, offset 0x4e5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xbf},\n\t// Block 0xa6, offset 0x4e9\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0908, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0xa1},\n\t{value: 0x0c08, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0a08, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3308, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xa7, offset 0x4f2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0818, lo: 0xa0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa8, offset 0x4f6\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xac},\n\t{value: 0x0818, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xa9, offset 0x4fe\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbf},\n\t// Block 0xaa, offset 0x501\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0xa6},\n\t{value: 0x0808, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0a08, lo: 0xb4, hi: 0xbf},\n\t// Block 0xab, offset 0x509\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0a08, lo: 0x80, hi: 0x84},\n\t{value: 0x0808, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x90},\n\t{value: 0x0a18, lo: 0x91, hi: 0x93},\n\t{value: 0x0c18, lo: 0x94, hi: 0x94},\n\t{value: 0x0818, lo: 0x95, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb3},\n\t{value: 0x0c08, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0a08, lo: 0xb6, hi: 0xbf},\n\t// Block 0xac, offset 0x514\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0a08, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xaf},\n\t{value: 0x0a08, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0c08, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0a08, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xba},\n\t{value: 0x0a08, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0c08, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0a08, lo: 0xbe, hi: 0xbf},\n\t// Block 0xad, offset 0x523\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0x81},\n\t{value: 0x0c08, lo: 0x82, hi: 0x83},\n\t{value: 0x0a08, lo: 0x84, hi: 0x84},\n\t{value: 0x0818, lo: 0x85, hi: 0x88},\n\t{value: 0x0c18, lo: 0x89, hi: 0x89},\n\t{value: 0x0a18, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0918, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xae, offset 0x52f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xaf, offset 0x535\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x3308, lo: 0x80, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x91},\n\t{value: 0x0018, lo: 0x92, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3b08, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb0, offset 0x542\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0xb1, offset 0x54e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb2, offset 0x556\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb2},\n\t{value: 0x3b08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xbf},\n\t// Block 0xb3, offset 0x55f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb4, offset 0x56a\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb5, offset 0x571\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8d},\n\t{value: 0x3008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xb6, offset 0x580\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3808, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb7, offset 0x58d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0xbf},\n\t// Block 0xb8, offset 0x591\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xb9, offset 0x59e\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x3308, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa9},\n\t{value: 0x3b08, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xba, offset 0x5a7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xbb, offset 0x5ab\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xbf},\n\t// Block 0xbc, offset 0x5ba\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbd, offset 0x5c2\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x85},\n\t{value: 0x0018, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xbe, offset 0x5cd\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbf, offset 0x5d6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9b},\n\t{value: 0x3308, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xc0, offset 0x5dc\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc1, offset 0x5e4\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xc2, offset 0x5ed\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb5},\n\t{value: 0x3808, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xc3, offset 0x5f9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xc4, offset 0x5fc\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0xc5, offset 0x608\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xbf},\n\t// Block 0xc6, offset 0x60b\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xc7, offset 0x614\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xbf},\n\t// Block 0xc8, offset 0x617\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc9, offset 0x61c\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xca, offset 0x625\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xcb, offset 0x62a\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x99},\n\t{value: 0x3308, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3008, lo: 0x9c, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x0018, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xbf},\n\t// Block 0xcc, offset 0x637\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xcd, offset 0x642\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x3b08, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0xbf},\n\t// Block 0xce, offset 0x64b\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x98},\n\t{value: 0x3b08, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xcf, offset 0x656\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd0, offset 0x659\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xd1, offset 0x65c\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd2, offset 0x666\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xbf},\n\t// Block 0xd3, offset 0x66f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xa9},\n\t{value: 0x3308, lo: 0xaa, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xd4, offset 0x67b\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd5, offset 0x688\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd6, offset 0x695\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x3008, lo: 0x93, hi: 0x94},\n\t{value: 0x3308, lo: 0x95, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x96},\n\t{value: 0x3b08, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xbf},\n\t// Block 0xd7, offset 0x6a3\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xd8, offset 0x6aa\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0xd9, offset 0x6b5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3808, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xda, offset 0x6bc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0xdb, offset 0x6c0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0xdc, offset 0x6c4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xdd, offset 0x6c7\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xde, offset 0x6cc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xdf, offset 0x6cf\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbf},\n\t// Block 0xe0, offset 0x6d2\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xe1, offset 0x6d6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0340, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe2, offset 0x6d9\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0xe3, offset 0x6de\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe4, offset 0x6e5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xe5, offset 0x6e8\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe6, offset 0x6f0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0xe7, offset 0x6f4\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0xe8, offset 0x6ff\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xe9, offset 0x702\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0xe105, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0xea, offset 0x705\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0xeb, offset 0x708\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0xbf},\n\t// Block 0xec, offset 0x70e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xed, offset 0x714\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x0018, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3308, lo: 0xa4, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xee, offset 0x71d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0xef, offset 0x720\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0xf0, offset 0x723\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xf1, offset 0x726\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xf2, offset 0x72e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x0040, lo: 0xa3, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xf3, offset 0x733\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0x94},\n\t{value: 0x0008, lo: 0x95, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xa3},\n\t{value: 0x0008, lo: 0xa4, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xf4, offset 0x73c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0xf5, offset 0x73f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0xf6, offset 0x744\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x03c0, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xf7, offset 0x74e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbf},\n\t// Block 0xf8, offset 0x752\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0xf9, offset 0x756\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xfa, offset 0x759\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xfb, offset 0x75c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xbf},\n\t// Block 0xfc, offset 0x760\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0x2379, lo: 0x9e, hi: 0x9e},\n\t{value: 0x2381, lo: 0x9f, hi: 0x9f},\n\t{value: 0x2389, lo: 0xa0, hi: 0xa0},\n\t{value: 0x2391, lo: 0xa1, hi: 0xa1},\n\t{value: 0x2399, lo: 0xa2, hi: 0xa2},\n\t{value: 0x23a1, lo: 0xa3, hi: 0xa3},\n\t{value: 0x23a9, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3018, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3318, lo: 0xa7, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xac},\n\t{value: 0x3018, lo: 0xad, hi: 0xb2},\n\t{value: 0x0340, lo: 0xb3, hi: 0xba},\n\t{value: 0x3318, lo: 0xbb, hi: 0xbf},\n\t// Block 0xfd, offset 0x76f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3318, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x84},\n\t{value: 0x3318, lo: 0x85, hi: 0x8b},\n\t{value: 0x0018, lo: 0x8c, hi: 0xa9},\n\t{value: 0x3318, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xba},\n\t{value: 0x23b1, lo: 0xbb, hi: 0xbb},\n\t{value: 0x23b9, lo: 0xbc, hi: 0xbc},\n\t{value: 0x23c1, lo: 0xbd, hi: 0xbd},\n\t{value: 0x23c9, lo: 0xbe, hi: 0xbe},\n\t{value: 0x23d1, lo: 0xbf, hi: 0xbf},\n\t// Block 0xfe, offset 0x77b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x23d9, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0xff, offset 0x77f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3318, lo: 0x82, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0xbf},\n\t// Block 0x100, offset 0x784\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x101, offset 0x789\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x102, offset 0x78e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0x103, offset 0x792\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x104, offset 0x797\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3308, lo: 0xa1, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x105, offset 0x7a0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0x106, offset 0x7a5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0x107, offset 0x7a9\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x108, offset 0x7af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0x109, offset 0x7b5\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x3308, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xbf},\n\t// Block 0x10a, offset 0x7ba\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x10b, offset 0x7c0\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x10c, offset 0x7c6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x10d, offset 0x7d0\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x86},\n\t{value: 0x0818, lo: 0x87, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0x10e, offset 0x7d6\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0a08, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x8a},\n\t{value: 0x0b08, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x10f, offset 0x7df\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xb0},\n\t{value: 0x0818, lo: 0xb1, hi: 0xbf},\n\t// Block 0x110, offset 0x7e2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0818, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x111, offset 0x7e5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0818, lo: 0x81, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x112, offset 0x7e9\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0x113, offset 0x7ed\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x114, offset 0x7f1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x115, offset 0x7f7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x116, offset 0x7fd\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0x2709, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0x117, offset 0x802\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xbf},\n\t// Block 0x118, offset 0x805\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x2889, lo: 0x80, hi: 0x80},\n\t{value: 0x2891, lo: 0x81, hi: 0x81},\n\t{value: 0x2899, lo: 0x82, hi: 0x82},\n\t{value: 0x28a1, lo: 0x83, hi: 0x83},\n\t{value: 0x28a9, lo: 0x84, hi: 0x84},\n\t{value: 0x28b1, lo: 0x85, hi: 0x85},\n\t{value: 0x28b9, lo: 0x86, hi: 0x86},\n\t{value: 0x28c1, lo: 0x87, hi: 0x87},\n\t{value: 0x28c9, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x28d1, lo: 0x90, hi: 0x90},\n\t{value: 0x28d9, lo: 0x91, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xbf},\n\t// Block 0x119, offset 0x815\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x11a, offset 0x81c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x11b, offset 0x820\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x11c, offset 0x827\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x11d, offset 0x82b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x11e, offset 0x831\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0x11f, offset 0x838\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x120, offset 0x83f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x121, offset 0x845\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x122, offset 0x84e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0xbf},\n\t// Block 0x123, offset 0x852\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0018, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0xaf},\n\t{value: 0x06e1, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0049, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0031, lo: 0xb3, hi: 0xb3},\n\t{value: 0x06e9, lo: 0xb4, hi: 0xb4},\n\t{value: 0x06f1, lo: 0xb5, hi: 0xb5},\n\t{value: 0x06f9, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0701, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0709, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0711, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x124, offset 0x860\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x125, offset 0x863\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x126, offset 0x866\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x127, offset 0x86a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x128, offset 0x86e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x129, offset 0x871\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbf},\n\t// Block 0x12a, offset 0x875\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x12b, offset 0x878\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0340, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x9f},\n\t{value: 0x0340, lo: 0xa0, hi: 0xbf},\n\t// Block 0x12c, offset 0x87d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0340, lo: 0x80, hi: 0xbf},\n\t// Block 0x12d, offset 0x87f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x33c0, lo: 0x80, hi: 0xbf},\n\t// Block 0x12e, offset 0x881\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x33c0, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n}\n\n// Total table size 46723 bytes (45KiB); checksum: 4CF3143A\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/tables9.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build !go1.10\n\npackage idna\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"9.0.0\"\n\nvar mappings string = \"\" + // Size: 8175 bytes\n\t\"\\x00\\x01 \\x03 ̈\\x01a\\x03 ̄\\x012\\x013\\x03 ́\\x03 ̧\\x011\\x01o\\x051⁄4\\x051⁄2\" +\n\t\"\\x053⁄4\\x03i̇\\x03l·\\x03ʼn\\x01s\\x03dž\\x03ⱥ\\x03ⱦ\\x01h\\x01j\\x01r\\x01w\\x01y\" +\n\t\"\\x03 ̆\\x03 ̇\\x03 ̊\\x03 ̨\\x03 ̃\\x03 ̋\\x01l\\x01x\\x04̈́\\x03 ι\\x01;\\x05 ̈́\" +\n\t\"\\x04եւ\\x04اٴ\\x04وٴ\\x04ۇٴ\\x04يٴ\\x06क़\\x06ख़\\x06ग़\\x06ज़\\x06ड़\\x06ढ़\\x06फ़\" +\n\t\"\\x06य़\\x06ড়\\x06ঢ়\\x06য়\\x06ਲ਼\\x06ਸ਼\\x06ਖ਼\\x06ਗ਼\\x06ਜ਼\\x06ਫ਼\\x06ଡ଼\\x06ଢ଼\" +\n\t\"\\x06ํา\\x06ໍາ\\x06ຫນ\\x06ຫມ\\x06གྷ\\x06ཌྷ\\x06དྷ\\x06བྷ\\x06ཛྷ\\x06ཀྵ\\x06ཱི\\x06ཱུ\" +\n\t\"\\x06ྲྀ\\x09ྲཱྀ\\x06ླྀ\\x09ླཱྀ\\x06ཱྀ\\x06ྒྷ\\x06ྜྷ\\x06ྡྷ\\x06ྦྷ\\x06ྫྷ\\x06ྐྵ\\x02\" +\n\t\"в\\x02д\\x02о\\x02с\\x02т\\x02ъ\\x02ѣ\\x02æ\\x01b\\x01d\\x01e\\x02ǝ\\x01g\\x01i\\x01k\" +\n\t\"\\x01m\\x01n\\x02ȣ\\x01p\\x01t\\x01u\\x02ɐ\\x02ɑ\\x02ə\\x02ɛ\\x02ɜ\\x02ŋ\\x02ɔ\\x02ɯ\" +\n\t\"\\x01v\\x02β\\x02γ\\x02δ\\x02φ\\x02χ\\x02ρ\\x02н\\x02ɒ\\x01c\\x02ɕ\\x02ð\\x01f\\x02ɟ\" +\n\t\"\\x02ɡ\\x02ɥ\\x02ɨ\\x02ɩ\\x02ɪ\\x02ʝ\\x02ɭ\\x02ʟ\\x02ɱ\\x02ɰ\\x02ɲ\\x02ɳ\\x02ɴ\\x02ɵ\" +\n\t\"\\x02ɸ\\x02ʂ\\x02ʃ\\x02ƫ\\x02ʉ\\x02ʊ\\x02ʋ\\x02ʌ\\x01z\\x02ʐ\\x02ʑ\\x02ʒ\\x02θ\\x02ss\" +\n\t\"\\x02ά\\x02έ\\x02ή\\x02ί\\x02ό\\x02ύ\\x02ώ\\x05ἀι\\x05ἁι\\x05ἂι\\x05ἃι\\x05ἄι\\x05ἅι\" +\n\t\"\\x05ἆι\\x05ἇι\\x05ἠι\\x05ἡι\\x05ἢι\\x05ἣι\\x05ἤι\\x05ἥι\\x05ἦι\\x05ἧι\\x05ὠι\\x05ὡι\" +\n\t\"\\x05ὢι\\x05ὣι\\x05ὤι\\x05ὥι\\x05ὦι\\x05ὧι\\x05ὰι\\x04αι\\x04άι\\x05ᾶι\\x02ι\\x05 ̈͂\" +\n\t\"\\x05ὴι\\x04ηι\\x04ήι\\x05ῆι\\x05 ̓̀\\x05 ̓́\\x05 ̓͂\\x02ΐ\\x05 ̔̀\\x05 ̔́\\x05 ̔͂\" +\n\t\"\\x02ΰ\\x05 ̈̀\\x01`\\x05ὼι\\x04ωι\\x04ώι\\x05ῶι\\x06′′\\x09′′′\\x06‵‵\\x09‵‵‵\\x02!\" +\n\t\"!\\x02??\\x02?!\\x02!?\\x0c′′′′\\x010\\x014\\x015\\x016\\x017\\x018\\x019\\x01+\\x01=\" +\n\t\"\\x01(\\x01)\\x02rs\\x02ħ\\x02no\\x01q\\x02sm\\x02tm\\x02ω\\x02å\\x02א\\x02ב\\x02ג\" +\n\t\"\\x02ד\\x02π\\x051⁄7\\x051⁄9\\x061⁄10\\x051⁄3\\x052⁄3\\x051⁄5\\x052⁄5\\x053⁄5\\x054\" +\n\t\"⁄5\\x051⁄6\\x055⁄6\\x051⁄8\\x053⁄8\\x055⁄8\\x057⁄8\\x041⁄\\x02ii\\x02iv\\x02vi\" +\n\t\"\\x04viii\\x02ix\\x02xi\\x050⁄3\\x06∫∫\\x09∫∫∫\\x06∮∮\\x09∮∮∮\\x0210\\x0211\\x0212\" +\n\t\"\\x0213\\x0214\\x0215\\x0216\\x0217\\x0218\\x0219\\x0220\\x04(10)\\x04(11)\\x04(12)\" +\n\t\"\\x04(13)\\x04(14)\\x04(15)\\x04(16)\\x04(17)\\x04(18)\\x04(19)\\x04(20)\\x0c∫∫∫∫\" +\n\t\"\\x02==\\x05⫝̸\\x02ɫ\\x02ɽ\\x02ȿ\\x02ɀ\\x01.\\x04 ゙\\x04 ゚\\x06より\\x06コト\\x05(ᄀ)\\x05\" +\n\t\"(ᄂ)\\x05(ᄃ)\\x05(ᄅ)\\x05(ᄆ)\\x05(ᄇ)\\x05(ᄉ)\\x05(ᄋ)\\x05(ᄌ)\\x05(ᄎ)\\x05(ᄏ)\\x05(ᄐ\" +\n\t\")\\x05(ᄑ)\\x05(ᄒ)\\x05(가)\\x05(나)\\x05(다)\\x05(라)\\x05(마)\\x05(바)\\x05(사)\\x05(아)\" +\n\t\"\\x05(자)\\x05(차)\\x05(카)\\x05(타)\\x05(파)\\x05(하)\\x05(주)\\x08(오전)\\x08(오후)\\x05(一)\" +\n\t\"\\x05(二)\\x05(三)\\x05(四)\\x05(五)\\x05(六)\\x05(七)\\x05(八)\\x05(九)\\x05(十)\\x05(月)\" +\n\t\"\\x05(火)\\x05(水)\\x05(木)\\x05(金)\\x05(土)\\x05(日)\\x05(株)\\x05(有)\\x05(社)\\x05(名)\" +\n\t\"\\x05(特)\\x05(財)\\x05(祝)\\x05(労)\\x05(代)\\x05(呼)\\x05(学)\\x05(監)\\x05(企)\\x05(資)\" +\n\t\"\\x05(協)\\x05(祭)\\x05(休)\\x05(自)\\x05(至)\\x0221\\x0222\\x0223\\x0224\\x0225\\x0226\" +\n\t\"\\x0227\\x0228\\x0229\\x0230\\x0231\\x0232\\x0233\\x0234\\x0235\\x06참고\\x06주의\\x0236\" +\n\t\"\\x0237\\x0238\\x0239\\x0240\\x0241\\x0242\\x0243\\x0244\\x0245\\x0246\\x0247\\x0248\" +\n\t\"\\x0249\\x0250\\x041月\\x042月\\x043月\\x044月\\x045月\\x046月\\x047月\\x048月\\x049月\\x0510\" +\n\t\"月\\x0511月\\x0512月\\x02hg\\x02ev\\x0cアパート\\x0cアルファ\\x0cアンペア\\x09アール\\x0cイニング\\x09\" +\n\t\"インチ\\x09ウォン\\x0fエスクード\\x0cエーカー\\x09オンス\\x09オーム\\x09カイリ\\x0cカラット\\x0cカロリー\\x09ガロ\" +\n\t\"ン\\x09ガンマ\\x06ギガ\\x09ギニー\\x0cキュリー\\x0cギルダー\\x06キロ\\x0fキログラム\\x12キロメートル\\x0fキロワッ\" +\n\t\"ト\\x09グラム\\x0fグラムトン\\x0fクルゼイロ\\x0cクローネ\\x09ケース\\x09コルナ\\x09コーポ\\x0cサイクル\\x0fサンチ\" +\n\t\"ーム\\x0cシリング\\x09センチ\\x09セント\\x09ダース\\x06デシ\\x06ドル\\x06トン\\x06ナノ\\x09ノット\\x09ハイツ\" +\n\t\"\\x0fパーセント\\x09パーツ\\x0cバーレル\\x0fピアストル\\x09ピクル\\x06ピコ\\x06ビル\\x0fファラッド\\x0cフィート\" +\n\t\"\\x0fブッシェル\\x09フラン\\x0fヘクタール\\x06ペソ\\x09ペニヒ\\x09ヘルツ\\x09ペンス\\x09ページ\\x09ベータ\\x0cポイ\" +\n\t\"ント\\x09ボルト\\x06ホン\\x09ポンド\\x09ホール\\x09ホーン\\x0cマイクロ\\x09マイル\\x09マッハ\\x09マルク\\x0fマ\" +\n\t\"ンション\\x0cミクロン\\x06ミリ\\x0fミリバール\\x06メガ\\x0cメガトン\\x0cメートル\\x09ヤード\\x09ヤール\\x09ユアン\" +\n\t\"\\x0cリットル\\x06リラ\\x09ルピー\\x0cルーブル\\x06レム\\x0fレントゲン\\x09ワット\\x040点\\x041点\\x042点\" +\n\t\"\\x043点\\x044点\\x045点\\x046点\\x047点\\x048点\\x049点\\x0510点\\x0511点\\x0512点\\x0513点\" +\n\t\"\\x0514点\\x0515点\\x0516点\\x0517点\\x0518点\\x0519点\\x0520点\\x0521点\\x0522点\\x0523点\" +\n\t\"\\x0524点\\x02da\\x02au\\x02ov\\x02pc\\x02dm\\x02iu\\x06平成\\x06昭和\\x06大正\\x06明治\\x0c株\" +\n\t\"式会社\\x02pa\\x02na\\x02ma\\x02ka\\x02kb\\x02mb\\x02gb\\x04kcal\\x02pf\\x02nf\\x02m\" +\n\t\"g\\x02kg\\x02hz\\x02ml\\x02dl\\x02kl\\x02fm\\x02nm\\x02mm\\x02cm\\x02km\\x02m2\\x02m\" +\n\t\"3\\x05m∕s\\x06m∕s2\\x07rad∕s\\x08rad∕s2\\x02ps\\x02ns\\x02ms\\x02pv\\x02nv\\x02mv\" +\n\t\"\\x02kv\\x02pw\\x02nw\\x02mw\\x02kw\\x02bq\\x02cc\\x02cd\\x06c∕kg\\x02db\\x02gy\\x02\" +\n\t\"ha\\x02hp\\x02in\\x02kk\\x02kt\\x02lm\\x02ln\\x02lx\\x02ph\\x02pr\\x02sr\\x02sv\\x02\" +\n\t\"wb\\x05v∕m\\x05a∕m\\x041日\\x042日\\x043日\\x044日\\x045日\\x046日\\x047日\\x048日\\x049日\" +\n\t\"\\x0510日\\x0511日\\x0512日\\x0513日\\x0514日\\x0515日\\x0516日\\x0517日\\x0518日\\x0519日\" +\n\t\"\\x0520日\\x0521日\\x0522日\\x0523日\\x0524日\\x0525日\\x0526日\\x0527日\\x0528日\\x0529日\" +\n\t\"\\x0530日\\x0531日\\x02ь\\x02ɦ\\x02ɬ\\x02ʞ\\x02ʇ\\x02œ\\x04𤋮\\x04𢡊\\x04𢡄\\x04𣏕\\x04𥉉\" +\n\t\"\\x04𥳐\\x04𧻓\\x02ff\\x02fi\\x02fl\\x02st\\x04մն\\x04մե\\x04մի\\x04վն\\x04մխ\\x04יִ\" +\n\t\"\\x04ײַ\\x02ע\\x02ה\\x02כ\\x02ל\\x02ם\\x02ר\\x02ת\\x04שׁ\\x04שׂ\\x06שּׁ\\x06שּׂ\\x04א\" +\n\t\"ַ\\x04אָ\\x04אּ\\x04בּ\\x04גּ\\x04דּ\\x04הּ\\x04וּ\\x04זּ\\x04טּ\\x04יּ\\x04ךּ\\x04\" +\n\t\"כּ\\x04לּ\\x04מּ\\x04נּ\\x04סּ\\x04ףּ\\x04פּ\\x04צּ\\x04קּ\\x04רּ\\x04שּ\\x04תּ\" +\n\t\"\\x04וֹ\\x04בֿ\\x04כֿ\\x04פֿ\\x04אל\\x02ٱ\\x02ٻ\\x02پ\\x02ڀ\\x02ٺ\\x02ٿ\\x02ٹ\\x02ڤ\" +\n\t\"\\x02ڦ\\x02ڄ\\x02ڃ\\x02چ\\x02ڇ\\x02ڍ\\x02ڌ\\x02ڎ\\x02ڈ\\x02ژ\\x02ڑ\\x02ک\\x02گ\\x02ڳ\" +\n\t\"\\x02ڱ\\x02ں\\x02ڻ\\x02ۀ\\x02ہ\\x02ھ\\x02ے\\x02ۓ\\x02ڭ\\x02ۇ\\x02ۆ\\x02ۈ\\x02ۋ\\x02ۅ\" +\n\t\"\\x02ۉ\\x02ې\\x02ى\\x04ئا\\x04ئە\\x04ئو\\x04ئۇ\\x04ئۆ\\x04ئۈ\\x04ئې\\x04ئى\\x02ی\\x04\" +\n\t\"ئج\\x04ئح\\x04ئم\\x04ئي\\x04بج\\x04بح\\x04بخ\\x04بم\\x04بى\\x04بي\\x04تج\\x04تح\" +\n\t\"\\x04تخ\\x04تم\\x04تى\\x04تي\\x04ثج\\x04ثم\\x04ثى\\x04ثي\\x04جح\\x04جم\\x04حج\\x04حم\" +\n\t\"\\x04خج\\x04خح\\x04خم\\x04سج\\x04سح\\x04سخ\\x04سم\\x04صح\\x04صم\\x04ضج\\x04ضح\\x04ضخ\" +\n\t\"\\x04ضم\\x04طح\\x04طم\\x04ظم\\x04عج\\x04عم\\x04غج\\x04غم\\x04فج\\x04فح\\x04فخ\\x04فم\" +\n\t\"\\x04فى\\x04في\\x04قح\\x04قم\\x04قى\\x04قي\\x04كا\\x04كج\\x04كح\\x04كخ\\x04كل\\x04كم\" +\n\t\"\\x04كى\\x04كي\\x04لج\\x04لح\\x04لخ\\x04لم\\x04لى\\x04لي\\x04مج\\x04مح\\x04مخ\\x04مم\" +\n\t\"\\x04مى\\x04مي\\x04نج\\x04نح\\x04نخ\\x04نم\\x04نى\\x04ني\\x04هج\\x04هم\\x04هى\\x04هي\" +\n\t\"\\x04يج\\x04يح\\x04يخ\\x04يم\\x04يى\\x04يي\\x04ذٰ\\x04رٰ\\x04ىٰ\\x05 ٌّ\\x05 ٍّ\\x05\" +\n\t\" َّ\\x05 ُّ\\x05 ِّ\\x05 ّٰ\\x04ئر\\x04ئز\\x04ئن\\x04بر\\x04بز\\x04بن\\x04تر\\x04تز\" +\n\t\"\\x04تن\\x04ثر\\x04ثز\\x04ثن\\x04ما\\x04نر\\x04نز\\x04نن\\x04ير\\x04يز\\x04ين\\x04ئخ\" +\n\t\"\\x04ئه\\x04به\\x04ته\\x04صخ\\x04له\\x04نه\\x04هٰ\\x04يه\\x04ثه\\x04سه\\x04شم\\x04شه\" +\n\t\"\\x06ـَّ\\x06ـُّ\\x06ـِّ\\x04طى\\x04طي\\x04عى\\x04عي\\x04غى\\x04غي\\x04سى\\x04سي\" +\n\t\"\\x04شى\\x04شي\\x04حى\\x04حي\\x04جى\\x04جي\\x04خى\\x04خي\\x04صى\\x04صي\\x04ضى\\x04ضي\" +\n\t\"\\x04شج\\x04شح\\x04شخ\\x04شر\\x04سر\\x04صر\\x04ضر\\x04اً\\x06تجم\\x06تحج\\x06تحم\" +\n\t\"\\x06تخم\\x06تمج\\x06تمح\\x06تمخ\\x06جمح\\x06حمي\\x06حمى\\x06سحج\\x06سجح\\x06سجى\" +\n\t\"\\x06سمح\\x06سمج\\x06سمم\\x06صحح\\x06صمم\\x06شحم\\x06شجي\\x06شمخ\\x06شمم\\x06ضحى\" +\n\t\"\\x06ضخم\\x06طمح\\x06طمم\\x06طمي\\x06عجم\\x06عمم\\x06عمى\\x06غمم\\x06غمي\\x06غمى\" +\n\t\"\\x06فخم\\x06قمح\\x06قمم\\x06لحم\\x06لحي\\x06لحى\\x06لجج\\x06لخم\\x06لمح\\x06محج\" +\n\t\"\\x06محم\\x06محي\\x06مجح\\x06مجم\\x06مخج\\x06مخم\\x06مجخ\\x06همج\\x06همم\\x06نحم\" +\n\t\"\\x06نحى\\x06نجم\\x06نجى\\x06نمي\\x06نمى\\x06يمم\\x06بخي\\x06تجي\\x06تجى\\x06تخي\" +\n\t\"\\x06تخى\\x06تمي\\x06تمى\\x06جمي\\x06جحى\\x06جمى\\x06سخى\\x06صحي\\x06شحي\\x06ضحي\" +\n\t\"\\x06لجي\\x06لمي\\x06يحي\\x06يجي\\x06يمي\\x06ممي\\x06قمي\\x06نحي\\x06عمي\\x06كمي\" +\n\t\"\\x06نجح\\x06مخي\\x06لجم\\x06كمم\\x06جحي\\x06حجي\\x06مجي\\x06فمي\\x06بحي\\x06سخي\" +\n\t\"\\x06نجي\\x06صلے\\x06قلے\\x08الله\\x08اكبر\\x08محمد\\x08صلعم\\x08رسول\\x08عليه\" +\n\t\"\\x08وسلم\\x06صلى!صلى الله عليه وسلم\\x0fجل جلاله\\x08ریال\\x01,\\x01:\\x01!\" +\n\t\"\\x01?\\x01_\\x01{\\x01}\\x01[\\x01]\\x01#\\x01&\\x01*\\x01-\\x01<\\x01>\\x01\\\\\\x01$\" +\n\t\"\\x01%\\x01@\\x04ـً\\x04ـَ\\x04ـُ\\x04ـِ\\x04ـّ\\x04ـْ\\x02ء\\x02آ\\x02أ\\x02ؤ\\x02إ\" +\n\t\"\\x02ئ\\x02ا\\x02ب\\x02ة\\x02ت\\x02ث\\x02ج\\x02ح\\x02خ\\x02د\\x02ذ\\x02ر\\x02ز\\x02س\" +\n\t\"\\x02ش\\x02ص\\x02ض\\x02ط\\x02ظ\\x02ع\\x02غ\\x02ف\\x02ق\\x02ك\\x02ل\\x02م\\x02ن\\x02ه\" +\n\t\"\\x02و\\x02ي\\x04لآ\\x04لأ\\x04لإ\\x04لا\\x01\\x22\\x01'\\x01/\\x01^\\x01|\\x01~\\x02¢\" +\n\t\"\\x02£\\x02¬\\x02¦\\x02¥\\x08𝅗𝅥\\x08𝅘𝅥\\x0c𝅘𝅥𝅮\\x0c𝅘𝅥𝅯\\x0c𝅘𝅥𝅰\\x0c𝅘𝅥𝅱\\x0c𝅘𝅥𝅲\\x08𝆹\" +\n\t\"𝅥\\x08𝆺𝅥\\x0c𝆹𝅥𝅮\\x0c𝆺𝅥𝅮\\x0c𝆹𝅥𝅯\\x0c𝆺𝅥𝅯\\x02ı\\x02ȷ\\x02α\\x02ε\\x02ζ\\x02η\\x02\" +\n\t\"κ\\x02λ\\x02μ\\x02ν\\x02ξ\\x02ο\\x02σ\\x02τ\\x02υ\\x02ψ\\x03∇\\x03∂\\x02ϝ\\x02ٮ\\x02ڡ\" +\n\t\"\\x02ٯ\\x020,\\x021,\\x022,\\x023,\\x024,\\x025,\\x026,\\x027,\\x028,\\x029,\\x03(a)\" +\n\t\"\\x03(b)\\x03(c)\\x03(d)\\x03(e)\\x03(f)\\x03(g)\\x03(h)\\x03(i)\\x03(j)\\x03(k)\" +\n\t\"\\x03(l)\\x03(m)\\x03(n)\\x03(o)\\x03(p)\\x03(q)\\x03(r)\\x03(s)\\x03(t)\\x03(u)\" +\n\t\"\\x03(v)\\x03(w)\\x03(x)\\x03(y)\\x03(z)\\x07〔s〕\\x02wz\\x02hv\\x02sd\\x03ppv\\x02w\" +\n\t\"c\\x02mc\\x02md\\x02dj\\x06ほか\\x06ココ\\x03サ\\x03手\\x03字\\x03双\\x03デ\\x03二\\x03多\\x03解\" +\n\t\"\\x03天\\x03交\\x03映\\x03無\\x03料\\x03前\\x03後\\x03再\\x03新\\x03初\\x03終\\x03生\\x03販\\x03声\" +\n\t\"\\x03吹\\x03演\\x03投\\x03捕\\x03一\\x03三\\x03遊\\x03左\\x03中\\x03右\\x03指\\x03走\\x03打\\x03禁\" +\n\t\"\\x03空\\x03合\\x03満\\x03有\\x03月\\x03申\\x03割\\x03営\\x03配\\x09〔本〕\\x09〔三〕\\x09〔二〕\\x09〔安\" +\n\t\"〕\\x09〔点〕\\x09〔打〕\\x09〔盗〕\\x09〔勝〕\\x09〔敗〕\\x03得\\x03可\\x03丽\\x03丸\\x03乁\\x03你\\x03\" +\n\t\"侮\\x03侻\\x03倂\\x03偺\\x03備\\x03僧\\x03像\\x03㒞\\x03免\\x03兔\\x03兤\\x03具\\x03㒹\\x03內\\x03\" +\n\t\"冗\\x03冤\\x03仌\\x03冬\\x03况\\x03凵\\x03刃\\x03㓟\\x03刻\\x03剆\\x03剷\\x03㔕\\x03勇\\x03勉\\x03\" +\n\t\"勤\\x03勺\\x03包\\x03匆\\x03北\\x03卉\\x03卑\\x03博\\x03即\\x03卽\\x03卿\\x03灰\\x03及\\x03叟\\x03\" +\n\t\"叫\\x03叱\\x03吆\\x03咞\\x03吸\\x03呈\\x03周\\x03咢\\x03哶\\x03唐\\x03啓\\x03啣\\x03善\\x03喙\\x03\" +\n\t\"喫\\x03喳\\x03嗂\\x03圖\\x03嘆\\x03圗\\x03噑\\x03噴\\x03切\\x03壮\\x03城\\x03埴\\x03堍\\x03型\\x03\" +\n\t\"堲\\x03報\\x03墬\\x03売\\x03壷\\x03夆\\x03夢\\x03奢\\x03姬\\x03娛\\x03娧\\x03姘\\x03婦\\x03㛮\\x03\" +\n\t\"嬈\\x03嬾\\x03寃\\x03寘\\x03寧\\x03寳\\x03寿\\x03将\\x03尢\\x03㞁\\x03屠\\x03屮\\x03峀\\x03岍\\x03\" +\n\t\"嵃\\x03嵮\\x03嵫\\x03嵼\\x03巡\\x03巢\\x03㠯\\x03巽\\x03帨\\x03帽\\x03幩\\x03㡢\\x03㡼\\x03庰\\x03\" +\n\t\"庳\\x03庶\\x03廊\\x03廾\\x03舁\\x03弢\\x03㣇\\x03形\\x03彫\\x03㣣\\x03徚\\x03忍\\x03志\\x03忹\\x03\" +\n\t\"悁\\x03㤺\\x03㤜\\x03悔\\x03惇\\x03慈\\x03慌\\x03慎\\x03慺\\x03憎\\x03憲\\x03憤\\x03憯\\x03懞\\x03\" +\n\t\"懲\\x03懶\\x03成\\x03戛\\x03扝\\x03抱\\x03拔\\x03捐\\x03挽\\x03拼\\x03捨\\x03掃\\x03揤\\x03搢\\x03\" +\n\t\"揅\\x03掩\\x03㨮\\x03摩\\x03摾\\x03撝\\x03摷\\x03㩬\\x03敏\\x03敬\\x03旣\\x03書\\x03晉\\x03㬙\\x03\" +\n\t\"暑\\x03㬈\\x03㫤\\x03冒\\x03冕\\x03最\\x03暜\\x03肭\\x03䏙\\x03朗\\x03望\\x03朡\\x03杞\\x03杓\\x03\" +\n\t\"㭉\\x03柺\\x03枅\\x03桒\\x03梅\\x03梎\\x03栟\\x03椔\\x03㮝\\x03楂\\x03榣\\x03槪\\x03檨\\x03櫛\\x03\" +\n\t\"㰘\\x03次\\x03歔\\x03㱎\\x03歲\\x03殟\\x03殺\\x03殻\\x03汎\\x03沿\\x03泍\\x03汧\\x03洖\\x03派\\x03\" +\n\t\"海\\x03流\\x03浩\\x03浸\\x03涅\\x03洴\\x03港\\x03湮\\x03㴳\\x03滋\\x03滇\\x03淹\\x03潮\\x03濆\\x03\" +\n\t\"瀹\\x03瀞\\x03瀛\\x03㶖\\x03灊\\x03災\\x03灷\\x03炭\\x03煅\\x03熜\\x03爨\\x03爵\\x03牐\\x03犀\\x03\" +\n\t\"犕\\x03獺\\x03王\\x03㺬\\x03玥\\x03㺸\\x03瑇\\x03瑜\\x03瑱\\x03璅\\x03瓊\\x03㼛\\x03甤\\x03甾\\x03\" +\n\t\"異\\x03瘐\\x03㿼\\x03䀈\\x03直\\x03眞\\x03真\\x03睊\\x03䀹\\x03瞋\\x03䁆\\x03䂖\\x03硎\\x03碌\\x03\" +\n\t\"磌\\x03䃣\\x03祖\\x03福\\x03秫\\x03䄯\\x03穀\\x03穊\\x03穏\\x03䈂\\x03篆\\x03築\\x03䈧\\x03糒\\x03\" +\n\t\"䊠\\x03糨\\x03糣\\x03紀\\x03絣\\x03䌁\\x03緇\\x03縂\\x03繅\\x03䌴\\x03䍙\\x03罺\\x03羕\\x03翺\\x03\" +\n\t\"者\\x03聠\\x03聰\\x03䏕\\x03育\\x03脃\\x03䐋\\x03脾\\x03媵\\x03舄\\x03辞\\x03䑫\\x03芑\\x03芋\\x03\" +\n\t\"芝\\x03劳\\x03花\\x03芳\\x03芽\\x03苦\\x03若\\x03茝\\x03荣\\x03莭\\x03茣\\x03莽\\x03菧\\x03著\\x03\" +\n\t\"荓\\x03菊\\x03菌\\x03菜\\x03䔫\\x03蓱\\x03蓳\\x03蔖\\x03蕤\\x03䕝\\x03䕡\\x03䕫\\x03虐\\x03虜\\x03\" +\n\t\"虧\\x03虩\\x03蚩\\x03蚈\\x03蜎\\x03蛢\\x03蝹\\x03蜨\\x03蝫\\x03螆\\x03蟡\\x03蠁\\x03䗹\\x03衠\\x03\" +\n\t\"衣\\x03裗\\x03裞\\x03䘵\\x03裺\\x03㒻\\x03䚾\\x03䛇\\x03誠\\x03諭\\x03變\\x03豕\\x03貫\\x03賁\\x03\" +\n\t\"贛\\x03起\\x03跋\\x03趼\\x03跰\\x03軔\\x03輸\\x03邔\\x03郱\\x03鄑\\x03鄛\\x03鈸\\x03鋗\\x03鋘\\x03\" +\n\t\"鉼\\x03鏹\\x03鐕\\x03開\\x03䦕\\x03閷\\x03䧦\\x03雃\\x03嶲\\x03霣\\x03䩮\\x03䩶\\x03韠\\x03䪲\\x03\" +\n\t\"頋\\x03頩\\x03飢\\x03䬳\\x03餩\\x03馧\\x03駂\\x03駾\\x03䯎\\x03鬒\\x03鱀\\x03鳽\\x03䳎\\x03䳭\\x03\" +\n\t\"鵧\\x03䳸\\x03麻\\x03䵖\\x03黹\\x03黾\\x03鼅\\x03鼏\\x03鼖\\x03鼻\"\n\nvar xorData string = \"\" + // Size: 4855 bytes\n\t\"\\x02\\x0c\\x09\\x02\\xb0\\xec\\x02\\xad\\xd8\\x02\\xad\\xd9\\x02\\x06\\x07\\x02\\x0f\\x12\" +\n\t\"\\x02\\x0f\\x1f\\x02\\x0f\\x1d\\x02\\x01\\x13\\x02\\x0f\\x16\\x02\\x0f\\x0b\\x02\\x0f3\" +\n\t\"\\x02\\x0f7\\x02\\x0f?\\x02\\x0f/\\x02\\x0f*\\x02\\x0c&\\x02\\x0c*\\x02\\x0c;\\x02\\x0c9\" +\n\t\"\\x02\\x0c%\\x02\\xab\\xed\\x02\\xab\\xe2\\x02\\xab\\xe3\\x02\\xa9\\xe0\\x02\\xa9\\xe1\" +\n\t\"\\x02\\xa9\\xe6\\x02\\xa3\\xcb\\x02\\xa3\\xc8\\x02\\xa3\\xc9\\x02\\x01#\\x02\\x01\\x08\" +\n\t\"\\x02\\x0e>\\x02\\x0e'\\x02\\x0f\\x03\\x02\\x03\\x0d\\x02\\x03\\x09\\x02\\x03\\x17\\x02\" +\n\t\"\\x03\\x0e\\x02\\x02\\x03\\x02\\x011\\x02\\x01\\x00\\x02\\x01\\x10\\x02\\x03<\\x02\\x07\" +\n\t\"\\x0d\\x02\\x02\\x0c\\x02\\x0c0\\x02\\x01\\x03\\x02\\x01\\x01\\x02\\x01 \\x02\\x01\\x22\" +\n\t\"\\x02\\x01)\\x02\\x01\\x0a\\x02\\x01\\x0c\\x02\\x02\\x06\\x02\\x02\\x02\\x02\\x03\\x10\" +\n\t\"\\x03\\x037 \\x03\\x0b+\\x03\\x02\\x01\\x04\\x02\\x01\\x02\\x02\\x019\\x02\\x03\\x1c\\x02\" +\n\t\"\\x02$\\x03\\x80p$\\x02\\x03:\\x02\\x03\\x0a\\x03\\xc1r.\\x03\\xc1r,\\x03\\xc1r\\x02\" +\n\t\"\\x02\\x02:\\x02\\x02>\\x02\\x02,\\x02\\x02\\x10\\x02\\x02\\x00\\x03\\xc1s<\\x03\\xc1s*\" +\n\t\"\\x03\\xc2L$\\x03\\xc2L;\\x02\\x09)\\x02\\x0a\\x19\\x03\\x83\\xab\\xe3\\x03\\x83\\xab\" +\n\t\"\\xf2\\x03 4\\xe0\\x03\\x81\\xab\\xea\\x03\\x81\\xab\\xf3\\x03 4\\xef\\x03\\x96\\xe1\\xcd\" +\n\t\"\\x03\\x84\\xe5\\xc3\\x02\\x0d\\x11\\x03\\x8b\\xec\\xcb\\x03\\x94\\xec\\xcf\\x03\\x9a\\xec\" +\n\t\"\\xc2\\x03\\x8b\\xec\\xdb\\x03\\x94\\xec\\xdf\\x03\\x9a\\xec\\xd2\\x03\\x01\\x0c!\\x03\" +\n\t\"\\x01\\x0c#\\x03ʠ\\x9d\\x03ʣ\\x9c\\x03ʢ\\x9f\\x03ʥ\\x9e\\x03ʤ\\x91\\x03ʧ\\x90\\x03ʦ\\x93\" +\n\t\"\\x03ʩ\\x92\\x03ʨ\\x95\\x03\\xca\\xf3\\xb5\\x03\\xca\\xf0\\xb4\\x03\\xca\\xf1\\xb7\\x03\" +\n\t\"\\xca\\xf6\\xb6\\x03\\xca\\xf7\\x89\\x03\\xca\\xf4\\x88\\x03\\xca\\xf5\\x8b\\x03\\xca\\xfa\" +\n\t\"\\x8a\\x03\\xca\\xfb\\x8d\\x03\\xca\\xf8\\x8c\\x03\\xca\\xf9\\x8f\\x03\\xca\\xfe\\x8e\\x03\" +\n\t\"\\xca\\xff\\x81\\x03\\xca\\xfc\\x80\\x03\\xca\\xfd\\x83\\x03\\xca\\xe2\\x82\\x03\\xca\\xe3\" +\n\t\"\\x85\\x03\\xca\\xe0\\x84\\x03\\xca\\xe1\\x87\\x03\\xca\\xe6\\x86\\x03\\xca\\xe7\\x99\\x03\" +\n\t\"\\xca\\xe4\\x98\\x03\\xca\\xe5\\x9b\\x03\\xca\\xea\\x9a\\x03\\xca\\xeb\\x9d\\x03\\xca\\xe8\" +\n\t\"\\x9c\\x03ؓ\\x89\\x03ߔ\\x8b\\x02\\x010\\x03\\x03\\x04\\x1e\\x03\\x04\\x15\\x12\\x03\\x0b\" +\n\t\"\\x05,\\x03\\x06\\x04\\x00\\x03\\x06\\x04)\\x03\\x06\\x044\\x03\\x06\\x04<\\x03\\x06\\x05\" +\n\t\"\\x1d\\x03\\x06\\x06\\x00\\x03\\x06\\x06\\x0a\\x03\\x06\\x06'\\x03\\x06\\x062\\x03\\x0786\" +\n\t\"\\x03\\x079/\\x03\\x079 \\x03\\x07:\\x0e\\x03\\x07:\\x1b\\x03\\x07:%\\x03\\x07;/\\x03\" +\n\t\"\\x07;%\\x03\\x074\\x11\\x03\\x076\\x09\\x03\\x077*\\x03\\x070\\x01\\x03\\x070\\x0f\\x03\" +\n\t\"\\x070.\\x03\\x071\\x16\\x03\\x071\\x04\\x03\\x0710\\x03\\x072\\x18\\x03\\x072-\\x03\" +\n\t\"\\x073\\x14\\x03\\x073>\\x03\\x07'\\x09\\x03\\x07 \\x00\\x03\\x07\\x1f\\x0b\\x03\\x07\" +\n\t\"\\x18#\\x03\\x07\\x18(\\x03\\x07\\x186\\x03\\x07\\x18\\x03\\x03\\x07\\x19\\x16\\x03\\x07\" +\n\t\"\\x116\\x03\\x07\\x12'\\x03\\x07\\x13\\x10\\x03\\x07\\x0c&\\x03\\x07\\x0c\\x08\\x03\\x07\" +\n\t\"\\x0c\\x13\\x03\\x07\\x0d\\x02\\x03\\x07\\x0d\\x1c\\x03\\x07\\x0b5\\x03\\x07\\x0b\\x0a\" +\n\t\"\\x03\\x07\\x0b\\x01\\x03\\x07\\x0b\\x0f\\x03\\x07\\x05\\x00\\x03\\x07\\x05\\x09\\x03\\x07\" +\n\t\"\\x05\\x0b\\x03\\x07\\x07\\x01\\x03\\x07\\x07\\x08\\x03\\x07\\x00<\\x03\\x07\\x00+\\x03\" +\n\t\"\\x07\\x01)\\x03\\x07\\x01\\x1b\\x03\\x07\\x01\\x08\\x03\\x07\\x03?\\x03\\x0445\\x03\\x04\" +\n\t\"4\\x08\\x03\\x0454\\x03\\x04)/\\x03\\x04)5\\x03\\x04+\\x05\\x03\\x04+\\x14\\x03\\x04+ \" +\n\t\"\\x03\\x04+<\\x03\\x04*&\\x03\\x04*\\x22\\x03\\x04&8\\x03\\x04!\\x01\\x03\\x04!\\x22\" +\n\t\"\\x03\\x04\\x11+\\x03\\x04\\x10.\\x03\\x04\\x104\\x03\\x04\\x13=\\x03\\x04\\x12\\x04\\x03\" +\n\t\"\\x04\\x12\\x0a\\x03\\x04\\x0d\\x1d\\x03\\x04\\x0d\\x07\\x03\\x04\\x0d \\x03\\x05<>\\x03\" +\n\t\"\\x055<\\x03\\x055!\\x03\\x055#\\x03\\x055&\\x03\\x054\\x1d\\x03\\x054\\x02\\x03\\x054\" +\n\t\"\\x07\\x03\\x0571\\x03\\x053\\x1a\\x03\\x053\\x16\\x03\\x05.<\\x03\\x05.\\x07\\x03\\x05)\" +\n\t\":\\x03\\x05)<\\x03\\x05)\\x0c\\x03\\x05)\\x15\\x03\\x05+-\\x03\\x05+5\\x03\\x05$\\x1e\" +\n\t\"\\x03\\x05$\\x14\\x03\\x05'\\x04\\x03\\x05'\\x14\\x03\\x05&\\x02\\x03\\x05\\x226\\x03\" +\n\t\"\\x05\\x22\\x0c\\x03\\x05\\x22\\x1c\\x03\\x05\\x19\\x0a\\x03\\x05\\x1b\\x09\\x03\\x05\\x1b\" +\n\t\"\\x0c\\x03\\x05\\x14\\x07\\x03\\x05\\x16?\\x03\\x05\\x16\\x0c\\x03\\x05\\x0c\\x05\\x03\" +\n\t\"\\x05\\x0e\\x0f\\x03\\x05\\x01\\x0e\\x03\\x05\\x00(\\x03\\x05\\x030\\x03\\x05\\x03\\x06\" +\n\t\"\\x03\\x0a==\\x03\\x0a=1\\x03\\x0a=,\\x03\\x0a=\\x0c\\x03\\x0a??\\x03\\x0a<\\x08\\x03\" +\n\t\"\\x0a9!\\x03\\x0a9)\\x03\\x0a97\\x03\\x0a99\\x03\\x0a6\\x0a\\x03\\x0a6\\x1c\\x03\\x0a6\" +\n\t\"\\x17\\x03\\x0a7'\\x03\\x0a78\\x03\\x0a73\\x03\\x0a'\\x01\\x03\\x0a'&\\x03\\x0a\\x1f\" +\n\t\"\\x0e\\x03\\x0a\\x1f\\x03\\x03\\x0a\\x1f3\\x03\\x0a\\x1b/\\x03\\x0a\\x18\\x19\\x03\\x0a\" +\n\t\"\\x19\\x01\\x03\\x0a\\x16\\x14\\x03\\x0a\\x0e\\x22\\x03\\x0a\\x0f\\x10\\x03\\x0a\\x0f\\x02\" +\n\t\"\\x03\\x0a\\x0f \\x03\\x0a\\x0c\\x04\\x03\\x0a\\x0b>\\x03\\x0a\\x0b+\\x03\\x0a\\x08/\\x03\" +\n\t\"\\x0a\\x046\\x03\\x0a\\x05\\x14\\x03\\x0a\\x00\\x04\\x03\\x0a\\x00\\x10\\x03\\x0a\\x00\" +\n\t\"\\x14\\x03\\x0b<3\\x03\\x0b;*\\x03\\x0b9\\x22\\x03\\x0b9)\\x03\\x0b97\\x03\\x0b+\\x10\" +\n\t\"\\x03\\x0b((\\x03\\x0b&5\\x03\\x0b$\\x1c\\x03\\x0b$\\x12\\x03\\x0b%\\x04\\x03\\x0b#<\" +\n\t\"\\x03\\x0b#0\\x03\\x0b#\\x0d\\x03\\x0b#\\x19\\x03\\x0b!:\\x03\\x0b!\\x1f\\x03\\x0b!\\x00\" +\n\t\"\\x03\\x0b\\x1e5\\x03\\x0b\\x1c\\x1d\\x03\\x0b\\x1d-\\x03\\x0b\\x1d(\\x03\\x0b\\x18.\\x03\" +\n\t\"\\x0b\\x18 \\x03\\x0b\\x18\\x16\\x03\\x0b\\x14\\x13\\x03\\x0b\\x15$\\x03\\x0b\\x15\\x22\" +\n\t\"\\x03\\x0b\\x12\\x1b\\x03\\x0b\\x12\\x10\\x03\\x0b\\x132\\x03\\x0b\\x13=\\x03\\x0b\\x12\" +\n\t\"\\x18\\x03\\x0b\\x0c&\\x03\\x0b\\x061\\x03\\x0b\\x06:\\x03\\x0b\\x05#\\x03\\x0b\\x05<\" +\n\t\"\\x03\\x0b\\x04\\x0b\\x03\\x0b\\x04\\x04\\x03\\x0b\\x04\\x1b\\x03\\x0b\\x042\\x03\\x0b\" +\n\t\"\\x041\\x03\\x0b\\x03\\x03\\x03\\x0b\\x03\\x1d\\x03\\x0b\\x03/\\x03\\x0b\\x03+\\x03\\x0b\" +\n\t\"\\x02\\x1b\\x03\\x0b\\x02\\x00\\x03\\x0b\\x01\\x1e\\x03\\x0b\\x01\\x08\\x03\\x0b\\x015\" +\n\t\"\\x03\\x06\\x0d9\\x03\\x06\\x0d=\\x03\\x06\\x0d?\\x03\\x02\\x001\\x03\\x02\\x003\\x03\" +\n\t\"\\x02\\x02\\x19\\x03\\x02\\x006\\x03\\x02\\x02\\x1b\\x03\\x02\\x004\\x03\\x02\\x00<\\x03\" +\n\t\"\\x02\\x02\\x0a\\x03\\x02\\x02\\x0e\\x03\\x02\\x01\\x1a\\x03\\x02\\x01\\x07\\x03\\x02\\x01\" +\n\t\"\\x05\\x03\\x02\\x01\\x0b\\x03\\x02\\x01%\\x03\\x02\\x01\\x0c\\x03\\x02\\x01\\x04\\x03\" +\n\t\"\\x02\\x01\\x1c\\x03\\x02\\x00.\\x03\\x02\\x002\\x03\\x02\\x00>\\x03\\x02\\x00\\x12\\x03\" +\n\t\"\\x02\\x00\\x16\\x03\\x02\\x011\\x03\\x02\\x013\\x03\\x02\\x02 \\x03\\x02\\x02%\\x03\\x02\" +\n\t\"\\x02$\\x03\\x02\\x028\\x03\\x02\\x02;\\x03\\x02\\x024\\x03\\x02\\x012\\x03\\x02\\x022\" +\n\t\"\\x03\\x02\\x02/\\x03\\x02\\x01,\\x03\\x02\\x01\\x13\\x03\\x02\\x01\\x16\\x03\\x02\\x01\" +\n\t\"\\x11\\x03\\x02\\x01\\x1e\\x03\\x02\\x01\\x15\\x03\\x02\\x01\\x17\\x03\\x02\\x01\\x0f\\x03\" +\n\t\"\\x02\\x01\\x08\\x03\\x02\\x00?\\x03\\x02\\x03\\x07\\x03\\x02\\x03\\x0d\\x03\\x02\\x03\" +\n\t\"\\x13\\x03\\x02\\x03\\x1d\\x03\\x02\\x03\\x1f\\x03\\x02\\x00\\x03\\x03\\x02\\x00\\x0d\\x03\" +\n\t\"\\x02\\x00\\x01\\x03\\x02\\x00\\x1b\\x03\\x02\\x00\\x19\\x03\\x02\\x00\\x18\\x03\\x02\\x00\" +\n\t\"\\x13\\x03\\x02\\x00/\\x03\\x07>\\x12\\x03\\x07<\\x1f\\x03\\x07>\\x1d\\x03\\x06\\x1d\\x0e\" +\n\t\"\\x03\\x07>\\x1c\\x03\\x07>:\\x03\\x07>\\x13\\x03\\x04\\x12+\\x03\\x07?\\x03\\x03\\x07>\" +\n\t\"\\x02\\x03\\x06\\x224\\x03\\x06\\x1a.\\x03\\x07<%\\x03\\x06\\x1c\\x0b\\x03\\x0609\\x03\" +\n\t\"\\x05\\x1f\\x01\\x03\\x04'\\x08\\x03\\x93\\xfd\\xf5\\x03\\x02\\x0d \\x03\\x02\\x0d#\\x03\" +\n\t\"\\x02\\x0d!\\x03\\x02\\x0d&\\x03\\x02\\x0d\\x22\\x03\\x02\\x0d/\\x03\\x02\\x0d,\\x03\\x02\" +\n\t\"\\x0d$\\x03\\x02\\x0d'\\x03\\x02\\x0d%\\x03\\x02\\x0d;\\x03\\x02\\x0d=\\x03\\x02\\x0d?\" +\n\t\"\\x03\\x099.\\x03\\x08\\x0b7\\x03\\x08\\x02\\x14\\x03\\x08\\x14\\x0d\\x03\\x08.:\\x03\" +\n\t\"\\x089'\\x03\\x0f\\x0b\\x18\\x03\\x0f\\x1c1\\x03\\x0f\\x17&\\x03\\x0f9\\x1f\\x03\\x0f0\" +\n\t\"\\x0c\\x03\\x0e\\x0a9\\x03\\x0e\\x056\\x03\\x0e\\x1c#\\x03\\x0f\\x13\\x0e\\x03\\x072\\x00\" +\n\t\"\\x03\\x070\\x0d\\x03\\x072\\x0b\\x03\\x06\\x11\\x18\\x03\\x070\\x10\\x03\\x06\\x0f(\\x03\" +\n\t\"\\x072\\x05\\x03\\x06\\x0f,\\x03\\x073\\x15\\x03\\x06\\x07\\x08\\x03\\x05\\x16\\x02\\x03\" +\n\t\"\\x04\\x0b \\x03\\x05:8\\x03\\x05\\x16%\\x03\\x0a\\x0d\\x1f\\x03\\x06\\x16\\x10\\x03\\x05\" +\n\t\"\\x1d5\\x03\\x05*;\\x03\\x05\\x16\\x1b\\x03\\x04.-\\x03\\x06\\x1a\\x19\\x03\\x04\\x03,\" +\n\t\"\\x03\\x0b87\\x03\\x04/\\x0a\\x03\\x06\\x00,\\x03\\x04-\\x01\\x03\\x04\\x1e-\\x03\\x06/(\" +\n\t\"\\x03\\x0a\\x0b5\\x03\\x06\\x0e7\\x03\\x06\\x07.\\x03\\x0597\\x03\\x0a*%\\x03\\x0760\" +\n\t\"\\x03\\x06\\x0c;\\x03\\x05'\\x00\\x03\\x072.\\x03\\x072\\x08\\x03\\x06=\\x01\\x03\\x06\" +\n\t\"\\x05\\x1b\\x03\\x06\\x06\\x12\\x03\\x06$=\\x03\\x06'\\x0d\\x03\\x04\\x11\\x0f\\x03\\x076\" +\n\t\",\\x03\\x06\\x07;\\x03\\x06.,\\x03\\x86\\xf9\\xea\\x03\\x8f\\xff\\xeb\\x02\\x092\\x02\" +\n\t\"\\x095\\x02\\x094\\x02\\x09;\\x02\\x09>\\x02\\x098\\x02\\x09*\\x02\\x09/\\x02\\x09,\\x02\" +\n\t\"\\x09%\\x02\\x09&\\x02\\x09#\\x02\\x09 \\x02\\x08!\\x02\\x08%\\x02\\x08$\\x02\\x08+\\x02\" +\n\t\"\\x08.\\x02\\x08*\\x02\\x08&\\x02\\x088\\x02\\x08>\\x02\\x084\\x02\\x086\\x02\\x080\\x02\" +\n\t\"\\x08\\x10\\x02\\x08\\x17\\x02\\x08\\x12\\x02\\x08\\x1d\\x02\\x08\\x1f\\x02\\x08\\x13\\x02\" +\n\t\"\\x08\\x15\\x02\\x08\\x14\\x02\\x08\\x0c\\x03\\x8b\\xfd\\xd0\\x03\\x81\\xec\\xc6\\x03\\x87\" +\n\t\"\\xe0\\x8a\\x03-2\\xe3\\x03\\x80\\xef\\xe4\\x03-2\\xea\\x03\\x88\\xe6\\xeb\\x03\\x8e\\xe6\" +\n\t\"\\xe8\\x03\\x84\\xe6\\xe9\\x03\\x97\\xe6\\xee\\x03-2\\xf9\\x03-2\\xf6\\x03\\x8e\\xe3\\xad\" +\n\t\"\\x03\\x80\\xe3\\x92\\x03\\x88\\xe3\\x90\\x03\\x8e\\xe3\\x90\\x03\\x80\\xe3\\x97\\x03\\x88\" +\n\t\"\\xe3\\x95\\x03\\x88\\xfe\\xcb\\x03\\x8e\\xfe\\xca\\x03\\x84\\xfe\\xcd\\x03\\x91\\xef\\xc9\" +\n\t\"\\x03-2\\xc1\\x03-2\\xc0\\x03-2\\xcb\\x03\\x88@\\x09\\x03\\x8e@\\x08\\x03\\x8f\\xe0\\xf5\" +\n\t\"\\x03\\x8e\\xe6\\xf9\\x03\\x8e\\xe0\\xfa\\x03\\x93\\xff\\xf4\\x03\\x84\\xee\\xd3\\x03\\x0b\" +\n\t\"(\\x04\\x023 \\x021;\\x02\\x01*\\x03\\x0b#\\x10\\x03\\x0b 0\\x03\\x0b!\\x10\\x03\\x0b!0\" +\n\t\"\\x03\\x07\\x15\\x08\\x03\\x09?5\\x03\\x07\\x1f\\x08\\x03\\x07\\x17\\x0b\\x03\\x09\\x1f\" +\n\t\"\\x15\\x03\\x0b\\x1c7\\x03\\x0a+#\\x03\\x06\\x1a\\x1b\\x03\\x06\\x1a\\x14\\x03\\x0a\\x01\" +\n\t\"\\x18\\x03\\x06#\\x1b\\x03\\x0a2\\x0c\\x03\\x0a\\x01\\x04\\x03\\x09#;\\x03\\x08='\\x03\" +\n\t\"\\x08\\x1a\\x0a\\x03\\x07</\\x03\\x07:+\\x03\\x07\\x07*\\x03\\x06&\\x1c\\x03\\x09\\x0c\" +\n\t\"\\x16\\x03\\x09\\x10\\x0e\\x03\\x08'\\x0f\\x03\\x08+\\x09\\x03\\x074%\\x03\\x06!3\\x03\" +\n\t\"\\x06\\x03+\\x03\\x0b\\x1e\\x19\\x03\\x0a))\\x03\\x09\\x08\\x19\\x03\\x08,\\x05\\x03\\x07\" +\n\t\"<2\\x03\\x06\\x1c>\\x03\\x0a\\x111\\x03\\x09\\x1b\\x09\\x03\\x073.\\x03\\x07\\x01\\x00\" +\n\t\"\\x03\\x09/,\\x03\\x07#>\\x03\\x07\\x048\\x03\\x0a\\x1f\\x22\\x03\\x098>\\x03\\x09\\x11\" +\n\t\"\\x00\\x03\\x08/\\x17\\x03\\x06'\\x22\\x03\\x0b\\x1a+\\x03\\x0a\\x22\\x19\\x03\\x0a/1\" +\n\t\"\\x03\\x0974\\x03\\x09\\x0f\\x22\\x03\\x08,\\x22\\x03\\x08?\\x14\\x03\\x07$5\\x03\\x07<3\" +\n\t\"\\x03\\x07=*\\x03\\x07\\x13\\x18\\x03\\x068\\x0a\\x03\\x06\\x09\\x16\\x03\\x06\\x13\\x00\" +\n\t\"\\x03\\x08\\x067\\x03\\x08\\x01\\x03\\x03\\x08\\x12\\x1d\\x03\\x07+7\\x03\\x06(;\\x03\" +\n\t\"\\x06\\x1c?\\x03\\x07\\x0e\\x17\\x03\\x0a\\x06\\x1d\\x03\\x0a\\x19\\x07\\x03\\x08\\x14$\" +\n\t\"\\x03\\x07$;\\x03\\x08,$\\x03\\x08\\x06\\x0d\\x03\\x07\\x16\\x0a\\x03\\x06>>\\x03\\x0a\" +\n\t\"\\x06\\x12\\x03\\x0a\\x14)\\x03\\x09\\x0d\\x1f\\x03\\x09\\x12\\x17\\x03\\x09\\x19\\x01\" +\n\t\"\\x03\\x08\\x11 \\x03\\x08\\x1d'\\x03\\x06<\\x1a\\x03\\x0a.\\x00\\x03\\x07'\\x18\\x03\" +\n\t\"\\x0a\\x22\\x08\\x03\\x08\\x0d\\x0a\\x03\\x08\\x13)\\x03\\x07*)\\x03\\x06<,\\x03\\x07\" +\n\t\"\\x0b\\x1a\\x03\\x09.\\x14\\x03\\x09\\x0d\\x1e\\x03\\x07\\x0e#\\x03\\x0b\\x1d'\\x03\\x0a\" +\n\t\"\\x0a8\\x03\\x09%2\\x03\\x08+&\\x03\\x080\\x12\\x03\\x0a)4\\x03\\x08\\x06\\x1f\\x03\\x0b\" +\n\t\"\\x1b\\x1a\\x03\\x0a\\x1b\\x0f\\x03\\x0b\\x1d*\\x03\\x09\\x16$\\x03\\x090\\x11\\x03\\x08\" +\n\t\"\\x11\\x08\\x03\\x0a*(\\x03\\x0a\\x042\\x03\\x089,\\x03\\x074'\\x03\\x07\\x0f\\x05\\x03\" +\n\t\"\\x09\\x0b\\x0a\\x03\\x07\\x1b\\x01\\x03\\x09\\x17:\\x03\\x09.\\x0d\\x03\\x07.\\x11\\x03\" +\n\t\"\\x09+\\x15\\x03\\x080\\x13\\x03\\x0b\\x1f\\x19\\x03\\x0a \\x11\\x03\\x0a\\x220\\x03\\x09\" +\n\t\"\\x07;\\x03\\x08\\x16\\x1c\\x03\\x07,\\x13\\x03\\x07\\x0e/\\x03\\x06\\x221\\x03\\x0a.\" +\n\t\"\\x0a\\x03\\x0a7\\x02\\x03\\x0a\\x032\\x03\\x0a\\x1d.\\x03\\x091\\x06\\x03\\x09\\x19:\" +\n\t\"\\x03\\x08\\x02/\\x03\\x060+\\x03\\x06\\x0f-\\x03\\x06\\x1c\\x1f\\x03\\x06\\x1d\\x07\\x03\" +\n\t\"\\x0a,\\x11\\x03\\x09=\\x0d\\x03\\x09\\x0b;\\x03\\x07\\x1b/\\x03\\x0a\\x1f:\\x03\\x09 \" +\n\t\"\\x1f\\x03\\x09.\\x10\\x03\\x094\\x0b\\x03\\x09\\x1a1\\x03\\x08#\\x1a\\x03\\x084\\x1d\" +\n\t\"\\x03\\x08\\x01\\x1f\\x03\\x08\\x11\\x22\\x03\\x07'8\\x03\\x07\\x1a>\\x03\\x0757\\x03\" +\n\t\"\\x06&9\\x03\\x06+\\x11\\x03\\x0a.\\x0b\\x03\\x0a,>\\x03\\x0a4#\\x03\\x08%\\x17\\x03\" +\n\t\"\\x07\\x05\\x22\\x03\\x07\\x0c\\x0b\\x03\\x0a\\x1d+\\x03\\x0a\\x19\\x16\\x03\\x09+\\x1f\" +\n\t\"\\x03\\x09\\x08\\x0b\\x03\\x08\\x16\\x18\\x03\\x08+\\x12\\x03\\x0b\\x1d\\x0c\\x03\\x0a=\" +\n\t\"\\x10\\x03\\x0a\\x09\\x0d\\x03\\x0a\\x10\\x11\\x03\\x09&0\\x03\\x08(\\x1f\\x03\\x087\\x07\" +\n\t\"\\x03\\x08\\x185\\x03\\x07'6\\x03\\x06.\\x05\\x03\\x06=\\x04\\x03\\x06;;\\x03\\x06\\x06,\" +\n\t\"\\x03\\x0b\\x18>\\x03\\x08\\x00\\x18\\x03\\x06 \\x03\\x03\\x06<\\x00\\x03\\x09%\\x18\\x03\" +\n\t\"\\x0b\\x1c<\\x03\\x0a%!\\x03\\x0a\\x09\\x12\\x03\\x0a\\x16\\x02\\x03\\x090'\\x03\\x09\" +\n\t\"\\x0e=\\x03\\x08 \\x0e\\x03\\x08>\\x03\\x03\\x074>\\x03\\x06&?\\x03\\x06\\x19\\x09\\x03\" +\n\t\"\\x06?(\\x03\\x0a-\\x0e\\x03\\x09:3\\x03\\x098:\\x03\\x09\\x12\\x0b\\x03\\x09\\x1d\\x17\" +\n\t\"\\x03\\x087\\x05\\x03\\x082\\x14\\x03\\x08\\x06%\\x03\\x08\\x13\\x1f\\x03\\x06\\x06\\x0e\" +\n\t\"\\x03\\x0a\\x22<\\x03\\x09/<\\x03\\x06>+\\x03\\x0a'?\\x03\\x0a\\x13\\x0c\\x03\\x09\\x10<\" +\n\t\"\\x03\\x07\\x1b=\\x03\\x0a\\x19\\x13\\x03\\x09\\x22\\x1d\\x03\\x09\\x07\\x0d\\x03\\x08)\" +\n\t\"\\x1c\\x03\\x06=\\x1a\\x03\\x0a/4\\x03\\x0a7\\x11\\x03\\x0a\\x16:\\x03\\x09?3\\x03\\x09:\" +\n\t\"/\\x03\\x09\\x05\\x0a\\x03\\x09\\x14\\x06\\x03\\x087\\x22\\x03\\x080\\x07\\x03\\x08\\x1a\" +\n\t\"\\x1f\\x03\\x07\\x04(\\x03\\x07\\x04\\x09\\x03\\x06 %\\x03\\x06<\\x08\\x03\\x0a+\\x14\" +\n\t\"\\x03\\x09\\x1d\\x16\\x03\\x0a70\\x03\\x08 >\\x03\\x0857\\x03\\x070\\x0a\\x03\\x06=\\x12\" +\n\t\"\\x03\\x06\\x16%\\x03\\x06\\x1d,\\x03\\x099#\\x03\\x09\\x10>\\x03\\x07 \\x1e\\x03\\x08\" +\n\t\"\\x0c<\\x03\\x08\\x0b\\x18\\x03\\x08\\x15+\\x03\\x08,:\\x03\\x08%\\x22\\x03\\x07\\x0a$\" +\n\t\"\\x03\\x0b\\x1c=\\x03\\x07+\\x08\\x03\\x0a/\\x05\\x03\\x0a \\x07\\x03\\x0a\\x12'\\x03\" +\n\t\"\\x09#\\x11\\x03\\x08\\x1b\\x15\\x03\\x0a\\x06\\x01\\x03\\x09\\x1c\\x1b\\x03\\x0922\\x03\" +\n\t\"\\x07\\x14<\\x03\\x07\\x09\\x04\\x03\\x061\\x04\\x03\\x07\\x0e\\x01\\x03\\x0a\\x13\\x18\" +\n\t\"\\x03\\x0a-\\x0c\\x03\\x0a?\\x0d\\x03\\x0a\\x09\\x0a\\x03\\x091&\\x03\\x0a/\\x0b\\x03\" +\n\t\"\\x08$<\\x03\\x083\\x1d\\x03\\x08\\x0c$\\x03\\x08\\x0d\\x07\\x03\\x08\\x0d?\\x03\\x08\" +\n\t\"\\x0e\\x14\\x03\\x065\\x0a\\x03\\x08\\x1a#\\x03\\x08\\x16#\\x03\\x0702\\x03\\x07\\x03\" +\n\t\"\\x1a\\x03\\x06(\\x1d\\x03\\x06+\\x1b\\x03\\x06\\x0b\\x05\\x03\\x06\\x0b\\x17\\x03\\x06\" +\n\t\"\\x0c\\x04\\x03\\x06\\x1e\\x19\\x03\\x06+0\\x03\\x062\\x18\\x03\\x0b\\x16\\x1e\\x03\\x0a+\" +\n\t\"\\x16\\x03\\x0a-?\\x03\\x0a#:\\x03\\x0a#\\x10\\x03\\x0a%$\\x03\\x0a>+\\x03\\x0a01\\x03\" +\n\t\"\\x0a1\\x10\\x03\\x0a\\x099\\x03\\x0a\\x0a\\x12\\x03\\x0a\\x19\\x1f\\x03\\x0a\\x19\\x12\" +\n\t\"\\x03\\x09*)\\x03\\x09-\\x16\\x03\\x09.1\\x03\\x09.2\\x03\\x09<\\x0e\\x03\\x09> \\x03\" +\n\t\"\\x093\\x12\\x03\\x09\\x0b\\x01\\x03\\x09\\x1c2\\x03\\x09\\x11\\x1c\\x03\\x09\\x15%\\x03\" +\n\t\"\\x08,&\\x03\\x08!\\x22\\x03\\x089(\\x03\\x08\\x0b\\x1a\\x03\\x08\\x0d2\\x03\\x08\\x0c\" +\n\t\"\\x04\\x03\\x08\\x0c\\x06\\x03\\x08\\x0c\\x1f\\x03\\x08\\x0c\\x0c\\x03\\x08\\x0f\\x1f\\x03\" +\n\t\"\\x08\\x0f\\x1d\\x03\\x08\\x00\\x14\\x03\\x08\\x03\\x14\\x03\\x08\\x06\\x16\\x03\\x08\\x1e\" +\n\t\"#\\x03\\x08\\x11\\x11\\x03\\x08\\x10\\x18\\x03\\x08\\x14(\\x03\\x07)\\x1e\\x03\\x07.1\" +\n\t\"\\x03\\x07 $\\x03\\x07 '\\x03\\x078\\x08\\x03\\x07\\x0d0\\x03\\x07\\x0f7\\x03\\x07\\x05#\" +\n\t\"\\x03\\x07\\x05\\x1a\\x03\\x07\\x1a7\\x03\\x07\\x1d-\\x03\\x07\\x17\\x10\\x03\\x06)\\x1f\" +\n\t\"\\x03\\x062\\x0b\\x03\\x066\\x16\\x03\\x06\\x09\\x11\\x03\\x09(\\x1e\\x03\\x07!5\\x03\" +\n\t\"\\x0b\\x11\\x16\\x03\\x0a/\\x04\\x03\\x0a,\\x1a\\x03\\x0b\\x173\\x03\\x0a,1\\x03\\x0a/5\" +\n\t\"\\x03\\x0a\\x221\\x03\\x0a\\x22\\x0d\\x03\\x0a?%\\x03\\x0a<,\\x03\\x0a?#\\x03\\x0a>\\x19\" +\n\t\"\\x03\\x0a\\x08&\\x03\\x0a\\x0b\\x0e\\x03\\x0a\\x0c:\\x03\\x0a\\x0c+\\x03\\x0a\\x03\\x22\" +\n\t\"\\x03\\x0a\\x06)\\x03\\x0a\\x11\\x10\\x03\\x0a\\x11\\x1a\\x03\\x0a\\x17-\\x03\\x0a\\x14(\" +\n\t\"\\x03\\x09)\\x1e\\x03\\x09/\\x09\\x03\\x09.\\x00\\x03\\x09,\\x07\\x03\\x09/*\\x03\\x09-9\" +\n\t\"\\x03\\x09\\x228\\x03\\x09%\\x09\\x03\\x09:\\x12\\x03\\x09;\\x1d\\x03\\x09?\\x06\\x03\" +\n\t\"\\x093%\\x03\\x096\\x05\\x03\\x096\\x08\\x03\\x097\\x02\\x03\\x09\\x07,\\x03\\x09\\x04,\" +\n\t\"\\x03\\x09\\x1f\\x16\\x03\\x09\\x11\\x03\\x03\\x09\\x11\\x12\\x03\\x09\\x168\\x03\\x08*\" +\n\t\"\\x05\\x03\\x08/2\\x03\\x084:\\x03\\x08\\x22+\\x03\\x08 0\\x03\\x08&\\x0a\\x03\\x08;\" +\n\t\"\\x10\\x03\\x08>$\\x03\\x08>\\x18\\x03\\x0829\\x03\\x082:\\x03\\x081,\\x03\\x081<\\x03\" +\n\t\"\\x081\\x1c\\x03\\x087#\\x03\\x087*\\x03\\x08\\x09'\\x03\\x08\\x00\\x1d\\x03\\x08\\x05-\" +\n\t\"\\x03\\x08\\x1f4\\x03\\x08\\x1d\\x04\\x03\\x08\\x16\\x0f\\x03\\x07*7\\x03\\x07'!\\x03\" +\n\t\"\\x07%\\x1b\\x03\\x077\\x0c\\x03\\x07\\x0c1\\x03\\x07\\x0c.\\x03\\x07\\x00\\x06\\x03\\x07\" +\n\t\"\\x01\\x02\\x03\\x07\\x010\\x03\\x07\\x06=\\x03\\x07\\x01\\x03\\x03\\x07\\x01\\x13\\x03\" +\n\t\"\\x07\\x06\\x06\\x03\\x07\\x05\\x0a\\x03\\x07\\x1f\\x09\\x03\\x07\\x17:\\x03\\x06*1\\x03\" +\n\t\"\\x06-\\x1d\\x03\\x06\\x223\\x03\\x062:\\x03\\x060$\\x03\\x066\\x1e\\x03\\x064\\x12\\x03\" +\n\t\"\\x0645\\x03\\x06\\x0b\\x00\\x03\\x06\\x0b7\\x03\\x06\\x07\\x1f\\x03\\x06\\x15\\x12\\x03\" +\n\t\"\\x0c\\x05\\x0f\\x03\\x0b+\\x0b\\x03\\x0b+-\\x03\\x06\\x16\\x1b\\x03\\x06\\x15\\x17\\x03\" +\n\t\"\\x89\\xca\\xea\\x03\\x89\\xca\\xe8\\x03\\x0c8\\x10\\x03\\x0c8\\x01\\x03\\x0c8\\x0f\\x03\" +\n\t\"\\x0d8%\\x03\\x0d8!\\x03\\x0c8-\\x03\\x0c8/\\x03\\x0c8+\\x03\\x0c87\\x03\\x0c85\\x03\" +\n\t\"\\x0c9\\x09\\x03\\x0c9\\x0d\\x03\\x0c9\\x0f\\x03\\x0c9\\x0b\\x03\\xcfu\\x0c\\x03\\xcfu\" +\n\t\"\\x0f\\x03\\xcfu\\x0e\\x03\\xcfu\\x09\\x03\\x0c9\\x10\\x03\\x0d9\\x0c\\x03\\xcf`;\\x03\" +\n\t\"\\xcf`>\\x03\\xcf`9\\x03\\xcf`8\\x03\\xcf`7\\x03\\xcf`*\\x03\\xcf`-\\x03\\xcf`,\\x03\" +\n\t\"\\x0d\\x1b\\x1a\\x03\\x0d\\x1b&\\x03\\x0c=.\\x03\\x0c=%\\x03\\x0c>\\x1e\\x03\\x0c>\\x14\" +\n\t\"\\x03\\x0c?\\x06\\x03\\x0c?\\x0b\\x03\\x0c?\\x0c\\x03\\x0c?\\x0d\\x03\\x0c?\\x02\\x03\" +\n\t\"\\x0c>\\x0f\\x03\\x0c>\\x08\\x03\\x0c>\\x09\\x03\\x0c>,\\x03\\x0c>\\x0c\\x03\\x0c?\\x13\" +\n\t\"\\x03\\x0c?\\x16\\x03\\x0c?\\x15\\x03\\x0c?\\x1c\\x03\\x0c?\\x1f\\x03\\x0c?\\x1d\\x03\" +\n\t\"\\x0c?\\x1a\\x03\\x0c?\\x17\\x03\\x0c?\\x08\\x03\\x0c?\\x09\\x03\\x0c?\\x0e\\x03\\x0c?\" +\n\t\"\\x04\\x03\\x0c?\\x05\\x03\\x0c<?\\x03\\x0c=\\x00\\x03\\x0c=\\x06\\x03\\x0c=\\x05\\x03\" +\n\t\"\\x0c=\\x0c\\x03\\x0c=\\x0f\\x03\\x0c=\\x0d\\x03\\x0c=\\x0b\\x03\\x0c=\\x07\\x03\\x0c=\" +\n\t\"\\x19\\x03\\x0c=\\x15\\x03\\x0c=\\x11\\x03\\x0c=1\\x03\\x0c=3\\x03\\x0c=0\\x03\\x0c=>\" +\n\t\"\\x03\\x0c=2\\x03\\x0c=6\\x03\\x0c<\\x07\\x03\\x0c<\\x05\\x03\\x0e:!\\x03\\x0e:#\\x03\" +\n\t\"\\x0e8\\x09\\x03\\x0e:&\\x03\\x0e8\\x0b\\x03\\x0e:$\\x03\\x0e:,\\x03\\x0e8\\x1a\\x03\" +\n\t\"\\x0e8\\x1e\\x03\\x0e:*\\x03\\x0e:7\\x03\\x0e:5\\x03\\x0e:;\\x03\\x0e:\\x15\\x03\\x0e:<\" +\n\t\"\\x03\\x0e:4\\x03\\x0e:'\\x03\\x0e:-\\x03\\x0e:%\\x03\\x0e:?\\x03\\x0e:=\\x03\\x0e:)\" +\n\t\"\\x03\\x0e:/\\x03\\xcfs'\\x03\\x0d=\\x0f\\x03\\x0d+*\\x03\\x0d99\\x03\\x0d9;\\x03\\x0d9\" +\n\t\"?\\x03\\x0d)\\x0d\\x03\\x0d(%\\x02\\x01\\x18\\x02\\x01(\\x02\\x01\\x1e\\x03\\x0f$!\\x03\" +\n\t\"\\x0f87\\x03\\x0f4\\x0e\\x03\\x0f5\\x1d\\x03\\x06'\\x03\\x03\\x0f\\x08\\x18\\x03\\x0f\" +\n\t\"\\x0d\\x1b\\x03\\x0e2=\\x03\\x0e;\\x08\\x03\\x0e:\\x0b\\x03\\x0e\\x06$\\x03\\x0e\\x0d)\" +\n\t\"\\x03\\x0e\\x16\\x1f\\x03\\x0e\\x16\\x1b\\x03\\x0d$\\x0a\\x03\\x05,\\x1d\\x03\\x0d. \\x03\" +\n\t\"\\x0d.#\\x03\\x0c(/\\x03\\x09%\\x02\\x03\\x0d90\\x03\\x0d\\x0e4\\x03\\x0d\\x0d\\x0f\\x03\" +\n\t\"\\x0c#\\x00\\x03\\x0c,\\x1e\\x03\\x0c2\\x0e\\x03\\x0c\\x01\\x17\\x03\\x0c\\x09:\\x03\\x0e\" +\n\t\"\\x173\\x03\\x0c\\x08\\x03\\x03\\x0c\\x11\\x07\\x03\\x0c\\x10\\x18\\x03\\x0c\\x1f\\x1c\" +\n\t\"\\x03\\x0c\\x19\\x0e\\x03\\x0c\\x1a\\x1f\\x03\\x0f0>\\x03\\x0b->\\x03\\x0b<+\\x03\\x0b8\" +\n\t\"\\x13\\x03\\x0b\\x043\\x03\\x0b\\x14\\x03\\x03\\x0b\\x16%\\x03\\x0d\\x22&\\x03\\x0b\\x1a\" +\n\t\"\\x1a\\x03\\x0b\\x1a\\x04\\x03\\x0a%9\\x03\\x0a&2\\x03\\x0a&0\\x03\\x0a!\\x1a\\x03\\x0a!\" +\n\t\"7\\x03\\x0a5\\x10\\x03\\x0a=4\\x03\\x0a?\\x0e\\x03\\x0a>\\x10\\x03\\x0a\\x00 \\x03\\x0a\" +\n\t\"\\x0f:\\x03\\x0a\\x0f9\\x03\\x0a\\x0b\\x0a\\x03\\x0a\\x17%\\x03\\x0a\\x1b-\\x03\\x09-\" +\n\t\"\\x1a\\x03\\x09,4\\x03\\x09.,\\x03\\x09)\\x09\\x03\\x096!\\x03\\x091\\x1f\\x03\\x093\" +\n\t\"\\x16\\x03\\x0c+\\x1f\\x03\\x098 \\x03\\x098=\\x03\\x0c(\\x1a\\x03\\x0c(\\x16\\x03\\x09\" +\n\t\"\\x0a+\\x03\\x09\\x16\\x12\\x03\\x09\\x13\\x0e\\x03\\x09\\x153\\x03\\x08)!\\x03\\x09\\x1a\" +\n\t\"\\x01\\x03\\x09\\x18\\x01\\x03\\x08%#\\x03\\x08>\\x22\\x03\\x08\\x05%\\x03\\x08\\x02*\" +\n\t\"\\x03\\x08\\x15;\\x03\\x08\\x1b7\\x03\\x0f\\x07\\x1d\\x03\\x0f\\x04\\x03\\x03\\x070\\x0c\" +\n\t\"\\x03\\x07;\\x0b\\x03\\x07\\x08\\x17\\x03\\x07\\x12\\x06\\x03\\x06/-\\x03\\x0671\\x03\" +\n\t\"\\x065+\\x03\\x06>7\\x03\\x06\\x049\\x03\\x05+\\x1e\\x03\\x05,\\x17\\x03\\x05 \\x1d\\x03\" +\n\t\"\\x05\\x22\\x05\\x03\\x050\\x1d\"\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *idnaTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn idnaValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := idnaIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = idnaIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = idnaIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *idnaTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn idnaValues[c0]\n\t}\n\ti := idnaIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = idnaIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// idnaTrie. Total size: 28600 bytes (27.93 KiB). Checksum: 95575047b5d8fff.\ntype idnaTrie struct{}\n\nfunc newIdnaTrie(i int) *idnaTrie {\n\treturn &idnaTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *idnaTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 124:\n\t\treturn uint16(idnaValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 124\n\t\treturn uint16(idnaSparse.lookup(n, b))\n\t}\n}\n\n// idnaValues: 126 blocks, 8064 entries, 16128 bytes\n// The third block is the zero block.\nvar idnaValues = [8064]uint16{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080,\n\t0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080,\n\t0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080,\n\t0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080,\n\t0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080,\n\t0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080,\n\t0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080,\n\t0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080,\n\t0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008,\n\t0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080,\n\t0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105,\n\t0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105,\n\t0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105,\n\t0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105,\n\t0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080,\n\t0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008,\n\t0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008,\n\t0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008,\n\t0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008,\n\t0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080,\n\t0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040,\n\t0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040,\n\t0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040,\n\t0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040,\n\t0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040,\n\t0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018,\n\t0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018,\n\t0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a,\n\t0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005,\n\t0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018,\n\t0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018,\n\t// Block 0x4, offset 0x100\n\t0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008,\n\t0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008,\n\t0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008,\n\t0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008,\n\t0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008,\n\t0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008,\n\t0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008,\n\t0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008,\n\t0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008,\n\t0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d,\n\t0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d,\n\t0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008,\n\t0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008,\n\t0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008,\n\t0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008,\n\t0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008,\n\t0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008,\n\t0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008,\n\t0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008,\n\t0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d,\n\t0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008,\n\t0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d,\n\t0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d,\n\t0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d,\n\t0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155,\n\t0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008,\n\t0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d,\n\t0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd,\n\t0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d,\n\t0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008,\n\t0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9,\n\t0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d,\n\t0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d,\n\t0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d,\n\t0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008,\n\t0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008,\n\t0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008,\n\t0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008,\n\t0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008,\n\t0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008,\n\t0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008,\n\t// Block 0x8, offset 0x200\n\t0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008,\n\t0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008,\n\t0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008,\n\t0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008,\n\t0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008,\n\t0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008,\n\t0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008,\n\t0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008,\n\t0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008,\n\t0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d,\n\t0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018,\n\t0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008,\n\t0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008,\n\t0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018,\n\t0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a,\n\t0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369,\n\t0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018,\n\t0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018,\n\t0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018,\n\t0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018,\n\t0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d,\n\t0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308,\n\t0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308,\n\t0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308,\n\t0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308,\n\t0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308,\n\t0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308,\n\t0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308,\n\t0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008,\n\t0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008,\n\t0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2,\n\t0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040,\n\t0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105,\n\t0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105,\n\t0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105,\n\t0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d,\n\t0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d,\n\t0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008,\n\t0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008,\n\t0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008,\n\t0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008,\n\t0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008,\n\t0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd,\n\t0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008,\n\t0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008,\n\t0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008,\n\t0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008,\n\t0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008,\n\t0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd,\n\t0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008,\n\t0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008,\n\t0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008,\n\t0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008,\n\t0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008,\n\t0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008,\n\t0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008,\n\t0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008,\n\t0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008,\n\t0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008,\n\t0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008,\n\t0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308,\n\t0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008,\n\t0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008,\n\t0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008,\n\t0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008,\n\t0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008,\n\t0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008,\n\t0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008,\n\t0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008,\n\t0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008,\n\t0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d,\n\t0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d,\n\t0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008,\n\t0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008,\n\t0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008,\n\t0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008,\n\t0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008,\n\t0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008,\n\t0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008,\n\t0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008,\n\t0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008,\n\t0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008,\n\t0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008,\n\t0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008,\n\t0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008,\n\t0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008,\n\t0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008,\n\t0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008,\n\t0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5,\n\t0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5,\n\t0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840,\n\t0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818,\n\t0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308,\n\t0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308,\n\t0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040,\n\t0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08,\n\t0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08,\n\t0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08,\n\t0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08,\n\t0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08,\n\t0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08,\n\t0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308,\n\t0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308,\n\t0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308,\n\t0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308,\n\t0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808,\n\t0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808,\n\t0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08,\n\t0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429,\n\t0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08,\n\t0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08,\n\t0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08,\n\t0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08,\n\t0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308,\n\t0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840,\n\t0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308,\n\t0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018,\n\t0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08,\n\t0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008,\n\t0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08,\n\t0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818,\n\t0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818,\n\t0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308,\n\t0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08,\n\t0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08,\n\t0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08,\n\t0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08,\n\t0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08,\n\t0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308,\n\t0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308,\n\t0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x3008, 0x541: 0x3308, 0x542: 0x3308, 0x543: 0x3308, 0x544: 0x3308, 0x545: 0x3308,\n\t0x546: 0x3308, 0x547: 0x3308, 0x548: 0x3308, 0x549: 0x3008, 0x54a: 0x3008, 0x54b: 0x3008,\n\t0x54c: 0x3008, 0x54d: 0x3b08, 0x54e: 0x3008, 0x54f: 0x3008, 0x550: 0x0008, 0x551: 0x3308,\n\t0x552: 0x3308, 0x553: 0x3308, 0x554: 0x3308, 0x555: 0x3308, 0x556: 0x3308, 0x557: 0x3308,\n\t0x558: 0x04c9, 0x559: 0x0501, 0x55a: 0x0539, 0x55b: 0x0571, 0x55c: 0x05a9, 0x55d: 0x05e1,\n\t0x55e: 0x0619, 0x55f: 0x0651, 0x560: 0x0008, 0x561: 0x0008, 0x562: 0x3308, 0x563: 0x3308,\n\t0x564: 0x0018, 0x565: 0x0018, 0x566: 0x0008, 0x567: 0x0008, 0x568: 0x0008, 0x569: 0x0008,\n\t0x56a: 0x0008, 0x56b: 0x0008, 0x56c: 0x0008, 0x56d: 0x0008, 0x56e: 0x0008, 0x56f: 0x0008,\n\t0x570: 0x0018, 0x571: 0x0008, 0x572: 0x0008, 0x573: 0x0008, 0x574: 0x0008, 0x575: 0x0008,\n\t0x576: 0x0008, 0x577: 0x0008, 0x578: 0x0008, 0x579: 0x0008, 0x57a: 0x0008, 0x57b: 0x0008,\n\t0x57c: 0x0008, 0x57d: 0x0008, 0x57e: 0x0008, 0x57f: 0x0008,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0008, 0x581: 0x3308, 0x582: 0x3008, 0x583: 0x3008, 0x584: 0x0040, 0x585: 0x0008,\n\t0x586: 0x0008, 0x587: 0x0008, 0x588: 0x0008, 0x589: 0x0008, 0x58a: 0x0008, 0x58b: 0x0008,\n\t0x58c: 0x0008, 0x58d: 0x0040, 0x58e: 0x0040, 0x58f: 0x0008, 0x590: 0x0008, 0x591: 0x0040,\n\t0x592: 0x0040, 0x593: 0x0008, 0x594: 0x0008, 0x595: 0x0008, 0x596: 0x0008, 0x597: 0x0008,\n\t0x598: 0x0008, 0x599: 0x0008, 0x59a: 0x0008, 0x59b: 0x0008, 0x59c: 0x0008, 0x59d: 0x0008,\n\t0x59e: 0x0008, 0x59f: 0x0008, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x0008, 0x5a3: 0x0008,\n\t0x5a4: 0x0008, 0x5a5: 0x0008, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0040,\n\t0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008,\n\t0x5b0: 0x0008, 0x5b1: 0x0040, 0x5b2: 0x0008, 0x5b3: 0x0040, 0x5b4: 0x0040, 0x5b5: 0x0040,\n\t0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0040, 0x5bb: 0x0040,\n\t0x5bc: 0x3308, 0x5bd: 0x0008, 0x5be: 0x3008, 0x5bf: 0x3008,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x3008, 0x5c1: 0x3308, 0x5c2: 0x3308, 0x5c3: 0x3308, 0x5c4: 0x3308, 0x5c5: 0x0040,\n\t0x5c6: 0x0040, 0x5c7: 0x3008, 0x5c8: 0x3008, 0x5c9: 0x0040, 0x5ca: 0x0040, 0x5cb: 0x3008,\n\t0x5cc: 0x3008, 0x5cd: 0x3b08, 0x5ce: 0x0008, 0x5cf: 0x0040, 0x5d0: 0x0040, 0x5d1: 0x0040,\n\t0x5d2: 0x0040, 0x5d3: 0x0040, 0x5d4: 0x0040, 0x5d5: 0x0040, 0x5d6: 0x0040, 0x5d7: 0x3008,\n\t0x5d8: 0x0040, 0x5d9: 0x0040, 0x5da: 0x0040, 0x5db: 0x0040, 0x5dc: 0x0689, 0x5dd: 0x06c1,\n\t0x5de: 0x0040, 0x5df: 0x06f9, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x3308, 0x5e3: 0x3308,\n\t0x5e4: 0x0040, 0x5e5: 0x0040, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0008,\n\t0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008,\n\t0x5f0: 0x0008, 0x5f1: 0x0008, 0x5f2: 0x0018, 0x5f3: 0x0018, 0x5f4: 0x0018, 0x5f5: 0x0018,\n\t0x5f6: 0x0018, 0x5f7: 0x0018, 0x5f8: 0x0018, 0x5f9: 0x0018, 0x5fa: 0x0018, 0x5fb: 0x0018,\n\t0x5fc: 0x0040, 0x5fd: 0x0040, 0x5fe: 0x0040, 0x5ff: 0x0040,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x0040, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3008, 0x604: 0x0040, 0x605: 0x0008,\n\t0x606: 0x0008, 0x607: 0x0008, 0x608: 0x0008, 0x609: 0x0008, 0x60a: 0x0008, 0x60b: 0x0040,\n\t0x60c: 0x0040, 0x60d: 0x0040, 0x60e: 0x0040, 0x60f: 0x0008, 0x610: 0x0008, 0x611: 0x0040,\n\t0x612: 0x0040, 0x613: 0x0008, 0x614: 0x0008, 0x615: 0x0008, 0x616: 0x0008, 0x617: 0x0008,\n\t0x618: 0x0008, 0x619: 0x0008, 0x61a: 0x0008, 0x61b: 0x0008, 0x61c: 0x0008, 0x61d: 0x0008,\n\t0x61e: 0x0008, 0x61f: 0x0008, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x0008, 0x623: 0x0008,\n\t0x624: 0x0008, 0x625: 0x0008, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0040,\n\t0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008,\n\t0x630: 0x0008, 0x631: 0x0040, 0x632: 0x0008, 0x633: 0x0731, 0x634: 0x0040, 0x635: 0x0008,\n\t0x636: 0x0769, 0x637: 0x0040, 0x638: 0x0008, 0x639: 0x0008, 0x63a: 0x0040, 0x63b: 0x0040,\n\t0x63c: 0x3308, 0x63d: 0x0040, 0x63e: 0x3008, 0x63f: 0x3008,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x3008, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x0040, 0x644: 0x0040, 0x645: 0x0040,\n\t0x646: 0x0040, 0x647: 0x3308, 0x648: 0x3308, 0x649: 0x0040, 0x64a: 0x0040, 0x64b: 0x3308,\n\t0x64c: 0x3308, 0x64d: 0x3b08, 0x64e: 0x0040, 0x64f: 0x0040, 0x650: 0x0040, 0x651: 0x3308,\n\t0x652: 0x0040, 0x653: 0x0040, 0x654: 0x0040, 0x655: 0x0040, 0x656: 0x0040, 0x657: 0x0040,\n\t0x658: 0x0040, 0x659: 0x07a1, 0x65a: 0x07d9, 0x65b: 0x0811, 0x65c: 0x0008, 0x65d: 0x0040,\n\t0x65e: 0x0849, 0x65f: 0x0040, 0x660: 0x0040, 0x661: 0x0040, 0x662: 0x0040, 0x663: 0x0040,\n\t0x664: 0x0040, 0x665: 0x0040, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0008,\n\t0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008,\n\t0x670: 0x3308, 0x671: 0x3308, 0x672: 0x0008, 0x673: 0x0008, 0x674: 0x0008, 0x675: 0x3308,\n\t0x676: 0x0040, 0x677: 0x0040, 0x678: 0x0040, 0x679: 0x0040, 0x67a: 0x0040, 0x67b: 0x0040,\n\t0x67c: 0x0040, 0x67d: 0x0040, 0x67e: 0x0040, 0x67f: 0x0040,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x0040, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x3008, 0x684: 0x0040, 0x685: 0x0008,\n\t0x686: 0x0008, 0x687: 0x0008, 0x688: 0x0008, 0x689: 0x0008, 0x68a: 0x0008, 0x68b: 0x0008,\n\t0x68c: 0x0008, 0x68d: 0x0008, 0x68e: 0x0040, 0x68f: 0x0008, 0x690: 0x0008, 0x691: 0x0008,\n\t0x692: 0x0040, 0x693: 0x0008, 0x694: 0x0008, 0x695: 0x0008, 0x696: 0x0008, 0x697: 0x0008,\n\t0x698: 0x0008, 0x699: 0x0008, 0x69a: 0x0008, 0x69b: 0x0008, 0x69c: 0x0008, 0x69d: 0x0008,\n\t0x69e: 0x0008, 0x69f: 0x0008, 0x6a0: 0x0008, 0x6a1: 0x0008, 0x6a2: 0x0008, 0x6a3: 0x0008,\n\t0x6a4: 0x0008, 0x6a5: 0x0008, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0040,\n\t0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008,\n\t0x6b0: 0x0008, 0x6b1: 0x0040, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0040, 0x6b5: 0x0008,\n\t0x6b6: 0x0008, 0x6b7: 0x0008, 0x6b8: 0x0008, 0x6b9: 0x0008, 0x6ba: 0x0040, 0x6bb: 0x0040,\n\t0x6bc: 0x3308, 0x6bd: 0x0008, 0x6be: 0x3008, 0x6bf: 0x3008,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3008, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3308, 0x6c4: 0x3308, 0x6c5: 0x3308,\n\t0x6c6: 0x0040, 0x6c7: 0x3308, 0x6c8: 0x3308, 0x6c9: 0x3008, 0x6ca: 0x0040, 0x6cb: 0x3008,\n\t0x6cc: 0x3008, 0x6cd: 0x3b08, 0x6ce: 0x0040, 0x6cf: 0x0040, 0x6d0: 0x0008, 0x6d1: 0x0040,\n\t0x6d2: 0x0040, 0x6d3: 0x0040, 0x6d4: 0x0040, 0x6d5: 0x0040, 0x6d6: 0x0040, 0x6d7: 0x0040,\n\t0x6d8: 0x0040, 0x6d9: 0x0040, 0x6da: 0x0040, 0x6db: 0x0040, 0x6dc: 0x0040, 0x6dd: 0x0040,\n\t0x6de: 0x0040, 0x6df: 0x0040, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x3308, 0x6e3: 0x3308,\n\t0x6e4: 0x0040, 0x6e5: 0x0040, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0008,\n\t0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008,\n\t0x6f0: 0x0018, 0x6f1: 0x0018, 0x6f2: 0x0040, 0x6f3: 0x0040, 0x6f4: 0x0040, 0x6f5: 0x0040,\n\t0x6f6: 0x0040, 0x6f7: 0x0040, 0x6f8: 0x0040, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040,\n\t0x6fc: 0x0040, 0x6fd: 0x0040, 0x6fe: 0x0040, 0x6ff: 0x0040,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x0040, 0x701: 0x3308, 0x702: 0x3008, 0x703: 0x3008, 0x704: 0x0040, 0x705: 0x0008,\n\t0x706: 0x0008, 0x707: 0x0008, 0x708: 0x0008, 0x709: 0x0008, 0x70a: 0x0008, 0x70b: 0x0008,\n\t0x70c: 0x0008, 0x70d: 0x0040, 0x70e: 0x0040, 0x70f: 0x0008, 0x710: 0x0008, 0x711: 0x0040,\n\t0x712: 0x0040, 0x713: 0x0008, 0x714: 0x0008, 0x715: 0x0008, 0x716: 0x0008, 0x717: 0x0008,\n\t0x718: 0x0008, 0x719: 0x0008, 0x71a: 0x0008, 0x71b: 0x0008, 0x71c: 0x0008, 0x71d: 0x0008,\n\t0x71e: 0x0008, 0x71f: 0x0008, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x0008, 0x723: 0x0008,\n\t0x724: 0x0008, 0x725: 0x0008, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0040,\n\t0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008,\n\t0x730: 0x0008, 0x731: 0x0040, 0x732: 0x0008, 0x733: 0x0008, 0x734: 0x0040, 0x735: 0x0008,\n\t0x736: 0x0008, 0x737: 0x0008, 0x738: 0x0008, 0x739: 0x0008, 0x73a: 0x0040, 0x73b: 0x0040,\n\t0x73c: 0x3308, 0x73d: 0x0008, 0x73e: 0x3008, 0x73f: 0x3308,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x3008, 0x741: 0x3308, 0x742: 0x3308, 0x743: 0x3308, 0x744: 0x3308, 0x745: 0x0040,\n\t0x746: 0x0040, 0x747: 0x3008, 0x748: 0x3008, 0x749: 0x0040, 0x74a: 0x0040, 0x74b: 0x3008,\n\t0x74c: 0x3008, 0x74d: 0x3b08, 0x74e: 0x0040, 0x74f: 0x0040, 0x750: 0x0040, 0x751: 0x0040,\n\t0x752: 0x0040, 0x753: 0x0040, 0x754: 0x0040, 0x755: 0x0040, 0x756: 0x3308, 0x757: 0x3008,\n\t0x758: 0x0040, 0x759: 0x0040, 0x75a: 0x0040, 0x75b: 0x0040, 0x75c: 0x0881, 0x75d: 0x08b9,\n\t0x75e: 0x0040, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x3308, 0x763: 0x3308,\n\t0x764: 0x0040, 0x765: 0x0040, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0008,\n\t0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008,\n\t0x770: 0x0018, 0x771: 0x0008, 0x772: 0x0018, 0x773: 0x0018, 0x774: 0x0018, 0x775: 0x0018,\n\t0x776: 0x0018, 0x777: 0x0018, 0x778: 0x0040, 0x779: 0x0040, 0x77a: 0x0040, 0x77b: 0x0040,\n\t0x77c: 0x0040, 0x77d: 0x0040, 0x77e: 0x0040, 0x77f: 0x0040,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x0040, 0x781: 0x0040, 0x782: 0x3308, 0x783: 0x0008, 0x784: 0x0040, 0x785: 0x0008,\n\t0x786: 0x0008, 0x787: 0x0008, 0x788: 0x0008, 0x789: 0x0008, 0x78a: 0x0008, 0x78b: 0x0040,\n\t0x78c: 0x0040, 0x78d: 0x0040, 0x78e: 0x0008, 0x78f: 0x0008, 0x790: 0x0008, 0x791: 0x0040,\n\t0x792: 0x0008, 0x793: 0x0008, 0x794: 0x0008, 0x795: 0x0008, 0x796: 0x0040, 0x797: 0x0040,\n\t0x798: 0x0040, 0x799: 0x0008, 0x79a: 0x0008, 0x79b: 0x0040, 0x79c: 0x0008, 0x79d: 0x0040,\n\t0x79e: 0x0008, 0x79f: 0x0008, 0x7a0: 0x0040, 0x7a1: 0x0040, 0x7a2: 0x0040, 0x7a3: 0x0008,\n\t0x7a4: 0x0008, 0x7a5: 0x0040, 0x7a6: 0x0040, 0x7a7: 0x0040, 0x7a8: 0x0008, 0x7a9: 0x0008,\n\t0x7aa: 0x0008, 0x7ab: 0x0040, 0x7ac: 0x0040, 0x7ad: 0x0040, 0x7ae: 0x0008, 0x7af: 0x0008,\n\t0x7b0: 0x0008, 0x7b1: 0x0008, 0x7b2: 0x0008, 0x7b3: 0x0008, 0x7b4: 0x0008, 0x7b5: 0x0008,\n\t0x7b6: 0x0008, 0x7b7: 0x0008, 0x7b8: 0x0008, 0x7b9: 0x0008, 0x7ba: 0x0040, 0x7bb: 0x0040,\n\t0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x3008, 0x7bf: 0x3008,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x3308, 0x7c1: 0x3008, 0x7c2: 0x3008, 0x7c3: 0x3008, 0x7c4: 0x3008, 0x7c5: 0x0040,\n\t0x7c6: 0x3308, 0x7c7: 0x3308, 0x7c8: 0x3308, 0x7c9: 0x0040, 0x7ca: 0x3308, 0x7cb: 0x3308,\n\t0x7cc: 0x3308, 0x7cd: 0x3b08, 0x7ce: 0x0040, 0x7cf: 0x0040, 0x7d0: 0x0040, 0x7d1: 0x0040,\n\t0x7d2: 0x0040, 0x7d3: 0x0040, 0x7d4: 0x0040, 0x7d5: 0x3308, 0x7d6: 0x3308, 0x7d7: 0x0040,\n\t0x7d8: 0x0008, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0040, 0x7dd: 0x0040,\n\t0x7de: 0x0040, 0x7df: 0x0040, 0x7e0: 0x0008, 0x7e1: 0x0008, 0x7e2: 0x3308, 0x7e3: 0x3308,\n\t0x7e4: 0x0040, 0x7e5: 0x0040, 0x7e6: 0x0008, 0x7e7: 0x0008, 0x7e8: 0x0008, 0x7e9: 0x0008,\n\t0x7ea: 0x0008, 0x7eb: 0x0008, 0x7ec: 0x0008, 0x7ed: 0x0008, 0x7ee: 0x0008, 0x7ef: 0x0008,\n\t0x7f0: 0x0040, 0x7f1: 0x0040, 0x7f2: 0x0040, 0x7f3: 0x0040, 0x7f4: 0x0040, 0x7f5: 0x0040,\n\t0x7f6: 0x0040, 0x7f7: 0x0040, 0x7f8: 0x0018, 0x7f9: 0x0018, 0x7fa: 0x0018, 0x7fb: 0x0018,\n\t0x7fc: 0x0018, 0x7fd: 0x0018, 0x7fe: 0x0018, 0x7ff: 0x0018,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x0008, 0x801: 0x3308, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x0040, 0x805: 0x0008,\n\t0x806: 0x0008, 0x807: 0x0008, 0x808: 0x0008, 0x809: 0x0008, 0x80a: 0x0008, 0x80b: 0x0008,\n\t0x80c: 0x0008, 0x80d: 0x0040, 0x80e: 0x0008, 0x80f: 0x0008, 0x810: 0x0008, 0x811: 0x0040,\n\t0x812: 0x0008, 0x813: 0x0008, 0x814: 0x0008, 0x815: 0x0008, 0x816: 0x0008, 0x817: 0x0008,\n\t0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0008, 0x81c: 0x0008, 0x81d: 0x0008,\n\t0x81e: 0x0008, 0x81f: 0x0008, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x0008, 0x823: 0x0008,\n\t0x824: 0x0008, 0x825: 0x0008, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0040,\n\t0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008,\n\t0x830: 0x0008, 0x831: 0x0008, 0x832: 0x0008, 0x833: 0x0008, 0x834: 0x0040, 0x835: 0x0008,\n\t0x836: 0x0008, 0x837: 0x0008, 0x838: 0x0008, 0x839: 0x0008, 0x83a: 0x0040, 0x83b: 0x0040,\n\t0x83c: 0x3308, 0x83d: 0x0008, 0x83e: 0x3008, 0x83f: 0x3308,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x3008, 0x841: 0x3008, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x3008, 0x845: 0x0040,\n\t0x846: 0x3308, 0x847: 0x3008, 0x848: 0x3008, 0x849: 0x0040, 0x84a: 0x3008, 0x84b: 0x3008,\n\t0x84c: 0x3308, 0x84d: 0x3b08, 0x84e: 0x0040, 0x84f: 0x0040, 0x850: 0x0040, 0x851: 0x0040,\n\t0x852: 0x0040, 0x853: 0x0040, 0x854: 0x0040, 0x855: 0x3008, 0x856: 0x3008, 0x857: 0x0040,\n\t0x858: 0x0040, 0x859: 0x0040, 0x85a: 0x0040, 0x85b: 0x0040, 0x85c: 0x0040, 0x85d: 0x0040,\n\t0x85e: 0x0008, 0x85f: 0x0040, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x3308, 0x863: 0x3308,\n\t0x864: 0x0040, 0x865: 0x0040, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0008,\n\t0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008,\n\t0x870: 0x0040, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0040, 0x874: 0x0040, 0x875: 0x0040,\n\t0x876: 0x0040, 0x877: 0x0040, 0x878: 0x0040, 0x879: 0x0040, 0x87a: 0x0040, 0x87b: 0x0040,\n\t0x87c: 0x0040, 0x87d: 0x0040, 0x87e: 0x0040, 0x87f: 0x0040,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x3008, 0x881: 0x3308, 0x882: 0x3308, 0x883: 0x3308, 0x884: 0x3308, 0x885: 0x0040,\n\t0x886: 0x3008, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008,\n\t0x88c: 0x3008, 0x88d: 0x3b08, 0x88e: 0x0008, 0x88f: 0x0018, 0x890: 0x0040, 0x891: 0x0040,\n\t0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0008, 0x895: 0x0008, 0x896: 0x0008, 0x897: 0x3008,\n\t0x898: 0x0018, 0x899: 0x0018, 0x89a: 0x0018, 0x89b: 0x0018, 0x89c: 0x0018, 0x89d: 0x0018,\n\t0x89e: 0x0018, 0x89f: 0x0008, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308,\n\t0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008,\n\t0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008,\n\t0x8b0: 0x0018, 0x8b1: 0x0018, 0x8b2: 0x0018, 0x8b3: 0x0018, 0x8b4: 0x0018, 0x8b5: 0x0018,\n\t0x8b6: 0x0018, 0x8b7: 0x0018, 0x8b8: 0x0018, 0x8b9: 0x0018, 0x8ba: 0x0008, 0x8bb: 0x0008,\n\t0x8bc: 0x0008, 0x8bd: 0x0008, 0x8be: 0x0008, 0x8bf: 0x0008,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0040, 0x8c1: 0x0008, 0x8c2: 0x0008, 0x8c3: 0x0040, 0x8c4: 0x0008, 0x8c5: 0x0040,\n\t0x8c6: 0x0040, 0x8c7: 0x0008, 0x8c8: 0x0008, 0x8c9: 0x0040, 0x8ca: 0x0008, 0x8cb: 0x0040,\n\t0x8cc: 0x0040, 0x8cd: 0x0008, 0x8ce: 0x0040, 0x8cf: 0x0040, 0x8d0: 0x0040, 0x8d1: 0x0040,\n\t0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x0008,\n\t0x8d8: 0x0040, 0x8d9: 0x0008, 0x8da: 0x0008, 0x8db: 0x0008, 0x8dc: 0x0008, 0x8dd: 0x0008,\n\t0x8de: 0x0008, 0x8df: 0x0008, 0x8e0: 0x0040, 0x8e1: 0x0008, 0x8e2: 0x0008, 0x8e3: 0x0008,\n\t0x8e4: 0x0040, 0x8e5: 0x0008, 0x8e6: 0x0040, 0x8e7: 0x0008, 0x8e8: 0x0040, 0x8e9: 0x0040,\n\t0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0040, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008,\n\t0x8f0: 0x0008, 0x8f1: 0x3308, 0x8f2: 0x0008, 0x8f3: 0x0929, 0x8f4: 0x3308, 0x8f5: 0x3308,\n\t0x8f6: 0x3308, 0x8f7: 0x3308, 0x8f8: 0x3308, 0x8f9: 0x3308, 0x8fa: 0x0040, 0x8fb: 0x3308,\n\t0x8fc: 0x3308, 0x8fd: 0x0008, 0x8fe: 0x0040, 0x8ff: 0x0040,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0008, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x09d1, 0x904: 0x0008, 0x905: 0x0008,\n\t0x906: 0x0008, 0x907: 0x0008, 0x908: 0x0040, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0008,\n\t0x90c: 0x0008, 0x90d: 0x0a09, 0x90e: 0x0008, 0x90f: 0x0008, 0x910: 0x0008, 0x911: 0x0008,\n\t0x912: 0x0a41, 0x913: 0x0008, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0a79,\n\t0x918: 0x0008, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0ab1, 0x91d: 0x0008,\n\t0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008,\n\t0x924: 0x0008, 0x925: 0x0008, 0x926: 0x0008, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0ae9,\n\t0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0040, 0x92e: 0x0040, 0x92f: 0x0040,\n\t0x930: 0x0040, 0x931: 0x3308, 0x932: 0x3308, 0x933: 0x0b21, 0x934: 0x3308, 0x935: 0x0b59,\n\t0x936: 0x0b91, 0x937: 0x0bc9, 0x938: 0x0c19, 0x939: 0x0c51, 0x93a: 0x3308, 0x93b: 0x3308,\n\t0x93c: 0x3308, 0x93d: 0x3308, 0x93e: 0x3308, 0x93f: 0x3008,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x3308, 0x941: 0x0ca1, 0x942: 0x3308, 0x943: 0x3308, 0x944: 0x3b08, 0x945: 0x0018,\n\t0x946: 0x3308, 0x947: 0x3308, 0x948: 0x0008, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008,\n\t0x94c: 0x0008, 0x94d: 0x3308, 0x94e: 0x3308, 0x94f: 0x3308, 0x950: 0x3308, 0x951: 0x3308,\n\t0x952: 0x3308, 0x953: 0x0cd9, 0x954: 0x3308, 0x955: 0x3308, 0x956: 0x3308, 0x957: 0x3308,\n\t0x958: 0x0040, 0x959: 0x3308, 0x95a: 0x3308, 0x95b: 0x3308, 0x95c: 0x3308, 0x95d: 0x0d11,\n\t0x95e: 0x3308, 0x95f: 0x3308, 0x960: 0x3308, 0x961: 0x3308, 0x962: 0x0d49, 0x963: 0x3308,\n\t0x964: 0x3308, 0x965: 0x3308, 0x966: 0x3308, 0x967: 0x0d81, 0x968: 0x3308, 0x969: 0x3308,\n\t0x96a: 0x3308, 0x96b: 0x3308, 0x96c: 0x0db9, 0x96d: 0x3308, 0x96e: 0x3308, 0x96f: 0x3308,\n\t0x970: 0x3308, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x3308, 0x974: 0x3308, 0x975: 0x3308,\n\t0x976: 0x3308, 0x977: 0x3308, 0x978: 0x3308, 0x979: 0x0df1, 0x97a: 0x3308, 0x97b: 0x3308,\n\t0x97c: 0x3308, 0x97d: 0x0040, 0x97e: 0x0018, 0x97f: 0x0018,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x0008, 0x981: 0x0008, 0x982: 0x0008, 0x983: 0x0008, 0x984: 0x0008, 0x985: 0x0008,\n\t0x986: 0x0008, 0x987: 0x0008, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008,\n\t0x98c: 0x0008, 0x98d: 0x0008, 0x98e: 0x0008, 0x98f: 0x0008, 0x990: 0x0008, 0x991: 0x0008,\n\t0x992: 0x0008, 0x993: 0x0008, 0x994: 0x0008, 0x995: 0x0008, 0x996: 0x0008, 0x997: 0x0008,\n\t0x998: 0x0008, 0x999: 0x0008, 0x99a: 0x0008, 0x99b: 0x0008, 0x99c: 0x0008, 0x99d: 0x0008,\n\t0x99e: 0x0008, 0x99f: 0x0008, 0x9a0: 0x0008, 0x9a1: 0x0008, 0x9a2: 0x0008, 0x9a3: 0x0008,\n\t0x9a4: 0x0008, 0x9a5: 0x0008, 0x9a6: 0x0008, 0x9a7: 0x0008, 0x9a8: 0x0008, 0x9a9: 0x0008,\n\t0x9aa: 0x0008, 0x9ab: 0x0008, 0x9ac: 0x0039, 0x9ad: 0x0ed1, 0x9ae: 0x0ee9, 0x9af: 0x0008,\n\t0x9b0: 0x0ef9, 0x9b1: 0x0f09, 0x9b2: 0x0f19, 0x9b3: 0x0f31, 0x9b4: 0x0249, 0x9b5: 0x0f41,\n\t0x9b6: 0x0259, 0x9b7: 0x0f51, 0x9b8: 0x0359, 0x9b9: 0x0f61, 0x9ba: 0x0f71, 0x9bb: 0x0008,\n\t0x9bc: 0x00d9, 0x9bd: 0x0f81, 0x9be: 0x0f99, 0x9bf: 0x0269,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0fa9, 0x9c1: 0x0fb9, 0x9c2: 0x0279, 0x9c3: 0x0039, 0x9c4: 0x0fc9, 0x9c5: 0x0fe1,\n\t0x9c6: 0x059d, 0x9c7: 0x0ee9, 0x9c8: 0x0ef9, 0x9c9: 0x0f09, 0x9ca: 0x0ff9, 0x9cb: 0x1011,\n\t0x9cc: 0x1029, 0x9cd: 0x0f31, 0x9ce: 0x0008, 0x9cf: 0x0f51, 0x9d0: 0x0f61, 0x9d1: 0x1041,\n\t0x9d2: 0x00d9, 0x9d3: 0x1059, 0x9d4: 0x05b5, 0x9d5: 0x05b5, 0x9d6: 0x0f99, 0x9d7: 0x0fa9,\n\t0x9d8: 0x0fb9, 0x9d9: 0x059d, 0x9da: 0x1071, 0x9db: 0x1089, 0x9dc: 0x05cd, 0x9dd: 0x1099,\n\t0x9de: 0x10b1, 0x9df: 0x10c9, 0x9e0: 0x10e1, 0x9e1: 0x10f9, 0x9e2: 0x0f41, 0x9e3: 0x0269,\n\t0x9e4: 0x0fb9, 0x9e5: 0x1089, 0x9e6: 0x1099, 0x9e7: 0x10b1, 0x9e8: 0x1111, 0x9e9: 0x10e1,\n\t0x9ea: 0x10f9, 0x9eb: 0x0008, 0x9ec: 0x0008, 0x9ed: 0x0008, 0x9ee: 0x0008, 0x9ef: 0x0008,\n\t0x9f0: 0x0008, 0x9f1: 0x0008, 0x9f2: 0x0008, 0x9f3: 0x0008, 0x9f4: 0x0008, 0x9f5: 0x0008,\n\t0x9f6: 0x0008, 0x9f7: 0x0008, 0x9f8: 0x1129, 0x9f9: 0x0008, 0x9fa: 0x0008, 0x9fb: 0x0008,\n\t0x9fc: 0x0008, 0x9fd: 0x0008, 0x9fe: 0x0008, 0x9ff: 0x0008,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0008, 0xa01: 0x0008, 0xa02: 0x0008, 0xa03: 0x0008, 0xa04: 0x0008, 0xa05: 0x0008,\n\t0xa06: 0x0008, 0xa07: 0x0008, 0xa08: 0x0008, 0xa09: 0x0008, 0xa0a: 0x0008, 0xa0b: 0x0008,\n\t0xa0c: 0x0008, 0xa0d: 0x0008, 0xa0e: 0x0008, 0xa0f: 0x0008, 0xa10: 0x0008, 0xa11: 0x0008,\n\t0xa12: 0x0008, 0xa13: 0x0008, 0xa14: 0x0008, 0xa15: 0x0008, 0xa16: 0x0008, 0xa17: 0x0008,\n\t0xa18: 0x0008, 0xa19: 0x0008, 0xa1a: 0x0008, 0xa1b: 0x1141, 0xa1c: 0x1159, 0xa1d: 0x1169,\n\t0xa1e: 0x1181, 0xa1f: 0x1029, 0xa20: 0x1199, 0xa21: 0x11a9, 0xa22: 0x11c1, 0xa23: 0x11d9,\n\t0xa24: 0x11f1, 0xa25: 0x1209, 0xa26: 0x1221, 0xa27: 0x05e5, 0xa28: 0x1239, 0xa29: 0x1251,\n\t0xa2a: 0xe17d, 0xa2b: 0x1269, 0xa2c: 0x1281, 0xa2d: 0x1299, 0xa2e: 0x12b1, 0xa2f: 0x12c9,\n\t0xa30: 0x12e1, 0xa31: 0x12f9, 0xa32: 0x1311, 0xa33: 0x1329, 0xa34: 0x1341, 0xa35: 0x1359,\n\t0xa36: 0x1371, 0xa37: 0x1389, 0xa38: 0x05fd, 0xa39: 0x13a1, 0xa3a: 0x13b9, 0xa3b: 0x13d1,\n\t0xa3c: 0x13e1, 0xa3d: 0x13f9, 0xa3e: 0x1411, 0xa3f: 0x1429,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0xe00d, 0xa41: 0x0008, 0xa42: 0xe00d, 0xa43: 0x0008, 0xa44: 0xe00d, 0xa45: 0x0008,\n\t0xa46: 0xe00d, 0xa47: 0x0008, 0xa48: 0xe00d, 0xa49: 0x0008, 0xa4a: 0xe00d, 0xa4b: 0x0008,\n\t0xa4c: 0xe00d, 0xa4d: 0x0008, 0xa4e: 0xe00d, 0xa4f: 0x0008, 0xa50: 0xe00d, 0xa51: 0x0008,\n\t0xa52: 0xe00d, 0xa53: 0x0008, 0xa54: 0xe00d, 0xa55: 0x0008, 0xa56: 0xe00d, 0xa57: 0x0008,\n\t0xa58: 0xe00d, 0xa59: 0x0008, 0xa5a: 0xe00d, 0xa5b: 0x0008, 0xa5c: 0xe00d, 0xa5d: 0x0008,\n\t0xa5e: 0xe00d, 0xa5f: 0x0008, 0xa60: 0xe00d, 0xa61: 0x0008, 0xa62: 0xe00d, 0xa63: 0x0008,\n\t0xa64: 0xe00d, 0xa65: 0x0008, 0xa66: 0xe00d, 0xa67: 0x0008, 0xa68: 0xe00d, 0xa69: 0x0008,\n\t0xa6a: 0xe00d, 0xa6b: 0x0008, 0xa6c: 0xe00d, 0xa6d: 0x0008, 0xa6e: 0xe00d, 0xa6f: 0x0008,\n\t0xa70: 0xe00d, 0xa71: 0x0008, 0xa72: 0xe00d, 0xa73: 0x0008, 0xa74: 0xe00d, 0xa75: 0x0008,\n\t0xa76: 0xe00d, 0xa77: 0x0008, 0xa78: 0xe00d, 0xa79: 0x0008, 0xa7a: 0xe00d, 0xa7b: 0x0008,\n\t0xa7c: 0xe00d, 0xa7d: 0x0008, 0xa7e: 0xe00d, 0xa7f: 0x0008,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008,\n\t0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008,\n\t0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008,\n\t0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0x0008, 0xa97: 0x0008,\n\t0xa98: 0x0008, 0xa99: 0x0008, 0xa9a: 0x0615, 0xa9b: 0x0635, 0xa9c: 0x0008, 0xa9d: 0x0008,\n\t0xa9e: 0x1441, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008,\n\t0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008,\n\t0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008,\n\t0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008,\n\t0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008,\n\t0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x0008, 0xac1: 0x0008, 0xac2: 0x0008, 0xac3: 0x0008, 0xac4: 0x0008, 0xac5: 0x0008,\n\t0xac6: 0x0040, 0xac7: 0x0040, 0xac8: 0xe045, 0xac9: 0xe045, 0xaca: 0xe045, 0xacb: 0xe045,\n\t0xacc: 0xe045, 0xacd: 0xe045, 0xace: 0x0040, 0xacf: 0x0040, 0xad0: 0x0008, 0xad1: 0x0008,\n\t0xad2: 0x0008, 0xad3: 0x0008, 0xad4: 0x0008, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008,\n\t0xad8: 0x0040, 0xad9: 0xe045, 0xada: 0x0040, 0xadb: 0xe045, 0xadc: 0x0040, 0xadd: 0xe045,\n\t0xade: 0x0040, 0xadf: 0xe045, 0xae0: 0x0008, 0xae1: 0x0008, 0xae2: 0x0008, 0xae3: 0x0008,\n\t0xae4: 0x0008, 0xae5: 0x0008, 0xae6: 0x0008, 0xae7: 0x0008, 0xae8: 0xe045, 0xae9: 0xe045,\n\t0xaea: 0xe045, 0xaeb: 0xe045, 0xaec: 0xe045, 0xaed: 0xe045, 0xaee: 0xe045, 0xaef: 0xe045,\n\t0xaf0: 0x0008, 0xaf1: 0x1459, 0xaf2: 0x0008, 0xaf3: 0x1471, 0xaf4: 0x0008, 0xaf5: 0x1489,\n\t0xaf6: 0x0008, 0xaf7: 0x14a1, 0xaf8: 0x0008, 0xaf9: 0x14b9, 0xafa: 0x0008, 0xafb: 0x14d1,\n\t0xafc: 0x0008, 0xafd: 0x14e9, 0xafe: 0x0040, 0xaff: 0x0040,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x1501, 0xb01: 0x1531, 0xb02: 0x1561, 0xb03: 0x1591, 0xb04: 0x15c1, 0xb05: 0x15f1,\n\t0xb06: 0x1621, 0xb07: 0x1651, 0xb08: 0x1501, 0xb09: 0x1531, 0xb0a: 0x1561, 0xb0b: 0x1591,\n\t0xb0c: 0x15c1, 0xb0d: 0x15f1, 0xb0e: 0x1621, 0xb0f: 0x1651, 0xb10: 0x1681, 0xb11: 0x16b1,\n\t0xb12: 0x16e1, 0xb13: 0x1711, 0xb14: 0x1741, 0xb15: 0x1771, 0xb16: 0x17a1, 0xb17: 0x17d1,\n\t0xb18: 0x1681, 0xb19: 0x16b1, 0xb1a: 0x16e1, 0xb1b: 0x1711, 0xb1c: 0x1741, 0xb1d: 0x1771,\n\t0xb1e: 0x17a1, 0xb1f: 0x17d1, 0xb20: 0x1801, 0xb21: 0x1831, 0xb22: 0x1861, 0xb23: 0x1891,\n\t0xb24: 0x18c1, 0xb25: 0x18f1, 0xb26: 0x1921, 0xb27: 0x1951, 0xb28: 0x1801, 0xb29: 0x1831,\n\t0xb2a: 0x1861, 0xb2b: 0x1891, 0xb2c: 0x18c1, 0xb2d: 0x18f1, 0xb2e: 0x1921, 0xb2f: 0x1951,\n\t0xb30: 0x0008, 0xb31: 0x0008, 0xb32: 0x1981, 0xb33: 0x19b1, 0xb34: 0x19d9, 0xb35: 0x0040,\n\t0xb36: 0x0008, 0xb37: 0x1a01, 0xb38: 0xe045, 0xb39: 0xe045, 0xb3a: 0x064d, 0xb3b: 0x1459,\n\t0xb3c: 0x19b1, 0xb3d: 0x0666, 0xb3e: 0x1a31, 0xb3f: 0x0686,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x06a6, 0xb41: 0x1a4a, 0xb42: 0x1a79, 0xb43: 0x1aa9, 0xb44: 0x1ad1, 0xb45: 0x0040,\n\t0xb46: 0x0008, 0xb47: 0x1af9, 0xb48: 0x06c5, 0xb49: 0x1471, 0xb4a: 0x06dd, 0xb4b: 0x1489,\n\t0xb4c: 0x1aa9, 0xb4d: 0x1b2a, 0xb4e: 0x1b5a, 0xb4f: 0x1b8a, 0xb50: 0x0008, 0xb51: 0x0008,\n\t0xb52: 0x0008, 0xb53: 0x1bb9, 0xb54: 0x0040, 0xb55: 0x0040, 0xb56: 0x0008, 0xb57: 0x0008,\n\t0xb58: 0xe045, 0xb59: 0xe045, 0xb5a: 0x06f5, 0xb5b: 0x14a1, 0xb5c: 0x0040, 0xb5d: 0x1bd2,\n\t0xb5e: 0x1c02, 0xb5f: 0x1c32, 0xb60: 0x0008, 0xb61: 0x0008, 0xb62: 0x0008, 0xb63: 0x1c61,\n\t0xb64: 0x0008, 0xb65: 0x0008, 0xb66: 0x0008, 0xb67: 0x0008, 0xb68: 0xe045, 0xb69: 0xe045,\n\t0xb6a: 0x070d, 0xb6b: 0x14d1, 0xb6c: 0xe04d, 0xb6d: 0x1c7a, 0xb6e: 0x03d2, 0xb6f: 0x1caa,\n\t0xb70: 0x0040, 0xb71: 0x0040, 0xb72: 0x1cb9, 0xb73: 0x1ce9, 0xb74: 0x1d11, 0xb75: 0x0040,\n\t0xb76: 0x0008, 0xb77: 0x1d39, 0xb78: 0x0725, 0xb79: 0x14b9, 0xb7a: 0x0515, 0xb7b: 0x14e9,\n\t0xb7c: 0x1ce9, 0xb7d: 0x073e, 0xb7e: 0x075e, 0xb7f: 0x0040,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x000a, 0xb81: 0x000a, 0xb82: 0x000a, 0xb83: 0x000a, 0xb84: 0x000a, 0xb85: 0x000a,\n\t0xb86: 0x000a, 0xb87: 0x000a, 0xb88: 0x000a, 0xb89: 0x000a, 0xb8a: 0x000a, 0xb8b: 0x03c0,\n\t0xb8c: 0x0003, 0xb8d: 0x0003, 0xb8e: 0x0340, 0xb8f: 0x0b40, 0xb90: 0x0018, 0xb91: 0xe00d,\n\t0xb92: 0x0018, 0xb93: 0x0018, 0xb94: 0x0018, 0xb95: 0x0018, 0xb96: 0x0018, 0xb97: 0x077e,\n\t0xb98: 0x0018, 0xb99: 0x0018, 0xb9a: 0x0018, 0xb9b: 0x0018, 0xb9c: 0x0018, 0xb9d: 0x0018,\n\t0xb9e: 0x0018, 0xb9f: 0x0018, 0xba0: 0x0018, 0xba1: 0x0018, 0xba2: 0x0018, 0xba3: 0x0018,\n\t0xba4: 0x0040, 0xba5: 0x0040, 0xba6: 0x0040, 0xba7: 0x0018, 0xba8: 0x0040, 0xba9: 0x0040,\n\t0xbaa: 0x0340, 0xbab: 0x0340, 0xbac: 0x0340, 0xbad: 0x0340, 0xbae: 0x0340, 0xbaf: 0x000a,\n\t0xbb0: 0x0018, 0xbb1: 0x0018, 0xbb2: 0x0018, 0xbb3: 0x1d69, 0xbb4: 0x1da1, 0xbb5: 0x0018,\n\t0xbb6: 0x1df1, 0xbb7: 0x1e29, 0xbb8: 0x0018, 0xbb9: 0x0018, 0xbba: 0x0018, 0xbbb: 0x0018,\n\t0xbbc: 0x1e7a, 0xbbd: 0x0018, 0xbbe: 0x079e, 0xbbf: 0x0018,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x0018, 0xbc1: 0x0018, 0xbc2: 0x0018, 0xbc3: 0x0018, 0xbc4: 0x0018, 0xbc5: 0x0018,\n\t0xbc6: 0x0018, 0xbc7: 0x1e92, 0xbc8: 0x1eaa, 0xbc9: 0x1ec2, 0xbca: 0x0018, 0xbcb: 0x0018,\n\t0xbcc: 0x0018, 0xbcd: 0x0018, 0xbce: 0x0018, 0xbcf: 0x0018, 0xbd0: 0x0018, 0xbd1: 0x0018,\n\t0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x1ed9,\n\t0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018,\n\t0xbde: 0x0018, 0xbdf: 0x000a, 0xbe0: 0x03c0, 0xbe1: 0x0340, 0xbe2: 0x0340, 0xbe3: 0x0340,\n\t0xbe4: 0x03c0, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0040, 0xbe8: 0x0040, 0xbe9: 0x0040,\n\t0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x0340,\n\t0xbf0: 0x1f41, 0xbf1: 0x0f41, 0xbf2: 0x0040, 0xbf3: 0x0040, 0xbf4: 0x1f51, 0xbf5: 0x1f61,\n\t0xbf6: 0x1f71, 0xbf7: 0x1f81, 0xbf8: 0x1f91, 0xbf9: 0x1fa1, 0xbfa: 0x1fb2, 0xbfb: 0x07bd,\n\t0xbfc: 0x1fc2, 0xbfd: 0x1fd2, 0xbfe: 0x1fe2, 0xbff: 0x0f71,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x1f41, 0xc01: 0x00c9, 0xc02: 0x0069, 0xc03: 0x0079, 0xc04: 0x1f51, 0xc05: 0x1f61,\n\t0xc06: 0x1f71, 0xc07: 0x1f81, 0xc08: 0x1f91, 0xc09: 0x1fa1, 0xc0a: 0x1fb2, 0xc0b: 0x07d5,\n\t0xc0c: 0x1fc2, 0xc0d: 0x1fd2, 0xc0e: 0x1fe2, 0xc0f: 0x0040, 0xc10: 0x0039, 0xc11: 0x0f09,\n\t0xc12: 0x00d9, 0xc13: 0x0369, 0xc14: 0x0ff9, 0xc15: 0x0249, 0xc16: 0x0f51, 0xc17: 0x0359,\n\t0xc18: 0x0f61, 0xc19: 0x0f71, 0xc1a: 0x0f99, 0xc1b: 0x01d9, 0xc1c: 0x0fa9, 0xc1d: 0x0040,\n\t0xc1e: 0x0040, 0xc1f: 0x0040, 0xc20: 0x0018, 0xc21: 0x0018, 0xc22: 0x0018, 0xc23: 0x0018,\n\t0xc24: 0x0018, 0xc25: 0x0018, 0xc26: 0x0018, 0xc27: 0x0018, 0xc28: 0x1ff1, 0xc29: 0x0018,\n\t0xc2a: 0x0018, 0xc2b: 0x0018, 0xc2c: 0x0018, 0xc2d: 0x0018, 0xc2e: 0x0018, 0xc2f: 0x0018,\n\t0xc30: 0x0018, 0xc31: 0x0018, 0xc32: 0x0018, 0xc33: 0x0018, 0xc34: 0x0018, 0xc35: 0x0018,\n\t0xc36: 0x0018, 0xc37: 0x0018, 0xc38: 0x0018, 0xc39: 0x0018, 0xc3a: 0x0018, 0xc3b: 0x0018,\n\t0xc3c: 0x0018, 0xc3d: 0x0018, 0xc3e: 0x0018, 0xc3f: 0x0040,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x07ee, 0xc41: 0x080e, 0xc42: 0x1159, 0xc43: 0x082d, 0xc44: 0x0018, 0xc45: 0x084e,\n\t0xc46: 0x086e, 0xc47: 0x1011, 0xc48: 0x0018, 0xc49: 0x088d, 0xc4a: 0x0f31, 0xc4b: 0x0249,\n\t0xc4c: 0x0249, 0xc4d: 0x0249, 0xc4e: 0x0249, 0xc4f: 0x2009, 0xc50: 0x0f41, 0xc51: 0x0f41,\n\t0xc52: 0x0359, 0xc53: 0x0359, 0xc54: 0x0018, 0xc55: 0x0f71, 0xc56: 0x2021, 0xc57: 0x0018,\n\t0xc58: 0x0018, 0xc59: 0x0f99, 0xc5a: 0x2039, 0xc5b: 0x0269, 0xc5c: 0x0269, 0xc5d: 0x0269,\n\t0xc5e: 0x0018, 0xc5f: 0x0018, 0xc60: 0x2049, 0xc61: 0x08ad, 0xc62: 0x2061, 0xc63: 0x0018,\n\t0xc64: 0x13d1, 0xc65: 0x0018, 0xc66: 0x2079, 0xc67: 0x0018, 0xc68: 0x13d1, 0xc69: 0x0018,\n\t0xc6a: 0x0f51, 0xc6b: 0x2091, 0xc6c: 0x0ee9, 0xc6d: 0x1159, 0xc6e: 0x0018, 0xc6f: 0x0f09,\n\t0xc70: 0x0f09, 0xc71: 0x1199, 0xc72: 0x0040, 0xc73: 0x0f61, 0xc74: 0x00d9, 0xc75: 0x20a9,\n\t0xc76: 0x20c1, 0xc77: 0x20d9, 0xc78: 0x20f1, 0xc79: 0x0f41, 0xc7a: 0x0018, 0xc7b: 0x08cd,\n\t0xc7c: 0x2109, 0xc7d: 0x10b1, 0xc7e: 0x10b1, 0xc7f: 0x2109,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x08ed, 0xc81: 0x0018, 0xc82: 0x0018, 0xc83: 0x0018, 0xc84: 0x0018, 0xc85: 0x0ef9,\n\t0xc86: 0x0ef9, 0xc87: 0x0f09, 0xc88: 0x0f41, 0xc89: 0x0259, 0xc8a: 0x0018, 0xc8b: 0x0018,\n\t0xc8c: 0x0018, 0xc8d: 0x0018, 0xc8e: 0x0008, 0xc8f: 0x0018, 0xc90: 0x2121, 0xc91: 0x2151,\n\t0xc92: 0x2181, 0xc93: 0x21b9, 0xc94: 0x21e9, 0xc95: 0x2219, 0xc96: 0x2249, 0xc97: 0x2279,\n\t0xc98: 0x22a9, 0xc99: 0x22d9, 0xc9a: 0x2309, 0xc9b: 0x2339, 0xc9c: 0x2369, 0xc9d: 0x2399,\n\t0xc9e: 0x23c9, 0xc9f: 0x23f9, 0xca0: 0x0f41, 0xca1: 0x2421, 0xca2: 0x0905, 0xca3: 0x2439,\n\t0xca4: 0x1089, 0xca5: 0x2451, 0xca6: 0x0925, 0xca7: 0x2469, 0xca8: 0x2491, 0xca9: 0x0369,\n\t0xcaa: 0x24a9, 0xcab: 0x0945, 0xcac: 0x0359, 0xcad: 0x1159, 0xcae: 0x0ef9, 0xcaf: 0x0f61,\n\t0xcb0: 0x0f41, 0xcb1: 0x2421, 0xcb2: 0x0965, 0xcb3: 0x2439, 0xcb4: 0x1089, 0xcb5: 0x2451,\n\t0xcb6: 0x0985, 0xcb7: 0x2469, 0xcb8: 0x2491, 0xcb9: 0x0369, 0xcba: 0x24a9, 0xcbb: 0x09a5,\n\t0xcbc: 0x0359, 0xcbd: 0x1159, 0xcbe: 0x0ef9, 0xcbf: 0x0f61,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x0018, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0018,\n\t0xcc6: 0x0018, 0xcc7: 0x0018, 0xcc8: 0x0018, 0xcc9: 0x0018, 0xcca: 0x0018, 0xccb: 0x0040,\n\t0xccc: 0x0040, 0xccd: 0x0040, 0xcce: 0x0040, 0xccf: 0x0040, 0xcd0: 0x0040, 0xcd1: 0x0040,\n\t0xcd2: 0x0040, 0xcd3: 0x0040, 0xcd4: 0x0040, 0xcd5: 0x0040, 0xcd6: 0x0040, 0xcd7: 0x0040,\n\t0xcd8: 0x0040, 0xcd9: 0x0040, 0xcda: 0x0040, 0xcdb: 0x0040, 0xcdc: 0x0040, 0xcdd: 0x0040,\n\t0xcde: 0x0040, 0xcdf: 0x0040, 0xce0: 0x00c9, 0xce1: 0x0069, 0xce2: 0x0079, 0xce3: 0x1f51,\n\t0xce4: 0x1f61, 0xce5: 0x1f71, 0xce6: 0x1f81, 0xce7: 0x1f91, 0xce8: 0x1fa1, 0xce9: 0x2601,\n\t0xcea: 0x2619, 0xceb: 0x2631, 0xcec: 0x2649, 0xced: 0x2661, 0xcee: 0x2679, 0xcef: 0x2691,\n\t0xcf0: 0x26a9, 0xcf1: 0x26c1, 0xcf2: 0x26d9, 0xcf3: 0x26f1, 0xcf4: 0x0a06, 0xcf5: 0x0a26,\n\t0xcf6: 0x0a46, 0xcf7: 0x0a66, 0xcf8: 0x0a86, 0xcf9: 0x0aa6, 0xcfa: 0x0ac6, 0xcfb: 0x0ae6,\n\t0xcfc: 0x0b06, 0xcfd: 0x270a, 0xcfe: 0x2732, 0xcff: 0x275a,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x2782, 0xd01: 0x27aa, 0xd02: 0x27d2, 0xd03: 0x27fa, 0xd04: 0x2822, 0xd05: 0x284a,\n\t0xd06: 0x2872, 0xd07: 0x289a, 0xd08: 0x0040, 0xd09: 0x0040, 0xd0a: 0x0040, 0xd0b: 0x0040,\n\t0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040,\n\t0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040,\n\t0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0b26, 0xd1d: 0x0b46,\n\t0xd1e: 0x0b66, 0xd1f: 0x0b86, 0xd20: 0x0ba6, 0xd21: 0x0bc6, 0xd22: 0x0be6, 0xd23: 0x0c06,\n\t0xd24: 0x0c26, 0xd25: 0x0c46, 0xd26: 0x0c66, 0xd27: 0x0c86, 0xd28: 0x0ca6, 0xd29: 0x0cc6,\n\t0xd2a: 0x0ce6, 0xd2b: 0x0d06, 0xd2c: 0x0d26, 0xd2d: 0x0d46, 0xd2e: 0x0d66, 0xd2f: 0x0d86,\n\t0xd30: 0x0da6, 0xd31: 0x0dc6, 0xd32: 0x0de6, 0xd33: 0x0e06, 0xd34: 0x0e26, 0xd35: 0x0e46,\n\t0xd36: 0x0039, 0xd37: 0x0ee9, 0xd38: 0x1159, 0xd39: 0x0ef9, 0xd3a: 0x0f09, 0xd3b: 0x1199,\n\t0xd3c: 0x0f31, 0xd3d: 0x0249, 0xd3e: 0x0f41, 0xd3f: 0x0259,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x0f51, 0xd41: 0x0359, 0xd42: 0x0f61, 0xd43: 0x0f71, 0xd44: 0x00d9, 0xd45: 0x0f99,\n\t0xd46: 0x2039, 0xd47: 0x0269, 0xd48: 0x01d9, 0xd49: 0x0fa9, 0xd4a: 0x0fb9, 0xd4b: 0x1089,\n\t0xd4c: 0x0279, 0xd4d: 0x0369, 0xd4e: 0x0289, 0xd4f: 0x13d1, 0xd50: 0x0039, 0xd51: 0x0ee9,\n\t0xd52: 0x1159, 0xd53: 0x0ef9, 0xd54: 0x0f09, 0xd55: 0x1199, 0xd56: 0x0f31, 0xd57: 0x0249,\n\t0xd58: 0x0f41, 0xd59: 0x0259, 0xd5a: 0x0f51, 0xd5b: 0x0359, 0xd5c: 0x0f61, 0xd5d: 0x0f71,\n\t0xd5e: 0x00d9, 0xd5f: 0x0f99, 0xd60: 0x2039, 0xd61: 0x0269, 0xd62: 0x01d9, 0xd63: 0x0fa9,\n\t0xd64: 0x0fb9, 0xd65: 0x1089, 0xd66: 0x0279, 0xd67: 0x0369, 0xd68: 0x0289, 0xd69: 0x13d1,\n\t0xd6a: 0x1f41, 0xd6b: 0x0018, 0xd6c: 0x0018, 0xd6d: 0x0018, 0xd6e: 0x0018, 0xd6f: 0x0018,\n\t0xd70: 0x0018, 0xd71: 0x0018, 0xd72: 0x0018, 0xd73: 0x0018, 0xd74: 0x0018, 0xd75: 0x0018,\n\t0xd76: 0x0018, 0xd77: 0x0018, 0xd78: 0x0018, 0xd79: 0x0018, 0xd7a: 0x0018, 0xd7b: 0x0018,\n\t0xd7c: 0x0018, 0xd7d: 0x0018, 0xd7e: 0x0018, 0xd7f: 0x0018,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0008, 0xd81: 0x0008, 0xd82: 0x0008, 0xd83: 0x0008, 0xd84: 0x0008, 0xd85: 0x0008,\n\t0xd86: 0x0008, 0xd87: 0x0008, 0xd88: 0x0008, 0xd89: 0x0008, 0xd8a: 0x0008, 0xd8b: 0x0008,\n\t0xd8c: 0x0008, 0xd8d: 0x0008, 0xd8e: 0x0008, 0xd8f: 0x0008, 0xd90: 0x0008, 0xd91: 0x0008,\n\t0xd92: 0x0008, 0xd93: 0x0008, 0xd94: 0x0008, 0xd95: 0x0008, 0xd96: 0x0008, 0xd97: 0x0008,\n\t0xd98: 0x0008, 0xd99: 0x0008, 0xd9a: 0x0008, 0xd9b: 0x0008, 0xd9c: 0x0008, 0xd9d: 0x0008,\n\t0xd9e: 0x0008, 0xd9f: 0x0040, 0xda0: 0xe00d, 0xda1: 0x0008, 0xda2: 0x2971, 0xda3: 0x0ebd,\n\t0xda4: 0x2989, 0xda5: 0x0008, 0xda6: 0x0008, 0xda7: 0xe07d, 0xda8: 0x0008, 0xda9: 0xe01d,\n\t0xdaa: 0x0008, 0xdab: 0xe03d, 0xdac: 0x0008, 0xdad: 0x0fe1, 0xdae: 0x1281, 0xdaf: 0x0fc9,\n\t0xdb0: 0x1141, 0xdb1: 0x0008, 0xdb2: 0xe00d, 0xdb3: 0x0008, 0xdb4: 0x0008, 0xdb5: 0xe01d,\n\t0xdb6: 0x0008, 0xdb7: 0x0008, 0xdb8: 0x0008, 0xdb9: 0x0008, 0xdba: 0x0008, 0xdbb: 0x0008,\n\t0xdbc: 0x0259, 0xdbd: 0x1089, 0xdbe: 0x29a1, 0xdbf: 0x29b9,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0xe00d, 0xdc1: 0x0008, 0xdc2: 0xe00d, 0xdc3: 0x0008, 0xdc4: 0xe00d, 0xdc5: 0x0008,\n\t0xdc6: 0xe00d, 0xdc7: 0x0008, 0xdc8: 0xe00d, 0xdc9: 0x0008, 0xdca: 0xe00d, 0xdcb: 0x0008,\n\t0xdcc: 0xe00d, 0xdcd: 0x0008, 0xdce: 0xe00d, 0xdcf: 0x0008, 0xdd0: 0xe00d, 0xdd1: 0x0008,\n\t0xdd2: 0xe00d, 0xdd3: 0x0008, 0xdd4: 0xe00d, 0xdd5: 0x0008, 0xdd6: 0xe00d, 0xdd7: 0x0008,\n\t0xdd8: 0xe00d, 0xdd9: 0x0008, 0xdda: 0xe00d, 0xddb: 0x0008, 0xddc: 0xe00d, 0xddd: 0x0008,\n\t0xdde: 0xe00d, 0xddf: 0x0008, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0xe00d, 0xde3: 0x0008,\n\t0xde4: 0x0008, 0xde5: 0x0018, 0xde6: 0x0018, 0xde7: 0x0018, 0xde8: 0x0018, 0xde9: 0x0018,\n\t0xdea: 0x0018, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0xe01d, 0xdee: 0x0008, 0xdef: 0x3308,\n\t0xdf0: 0x3308, 0xdf1: 0x3308, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0040, 0xdf5: 0x0040,\n\t0xdf6: 0x0040, 0xdf7: 0x0040, 0xdf8: 0x0040, 0xdf9: 0x0018, 0xdfa: 0x0018, 0xdfb: 0x0018,\n\t0xdfc: 0x0018, 0xdfd: 0x0018, 0xdfe: 0x0018, 0xdff: 0x0018,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x26fd, 0xe01: 0x271d, 0xe02: 0x273d, 0xe03: 0x275d, 0xe04: 0x277d, 0xe05: 0x279d,\n\t0xe06: 0x27bd, 0xe07: 0x27dd, 0xe08: 0x27fd, 0xe09: 0x281d, 0xe0a: 0x283d, 0xe0b: 0x285d,\n\t0xe0c: 0x287d, 0xe0d: 0x289d, 0xe0e: 0x28bd, 0xe0f: 0x28dd, 0xe10: 0x28fd, 0xe11: 0x291d,\n\t0xe12: 0x293d, 0xe13: 0x295d, 0xe14: 0x297d, 0xe15: 0x299d, 0xe16: 0x0040, 0xe17: 0x0040,\n\t0xe18: 0x0040, 0xe19: 0x0040, 0xe1a: 0x0040, 0xe1b: 0x0040, 0xe1c: 0x0040, 0xe1d: 0x0040,\n\t0xe1e: 0x0040, 0xe1f: 0x0040, 0xe20: 0x0040, 0xe21: 0x0040, 0xe22: 0x0040, 0xe23: 0x0040,\n\t0xe24: 0x0040, 0xe25: 0x0040, 0xe26: 0x0040, 0xe27: 0x0040, 0xe28: 0x0040, 0xe29: 0x0040,\n\t0xe2a: 0x0040, 0xe2b: 0x0040, 0xe2c: 0x0040, 0xe2d: 0x0040, 0xe2e: 0x0040, 0xe2f: 0x0040,\n\t0xe30: 0x0040, 0xe31: 0x0040, 0xe32: 0x0040, 0xe33: 0x0040, 0xe34: 0x0040, 0xe35: 0x0040,\n\t0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0040, 0xe3a: 0x0040, 0xe3b: 0x0040,\n\t0xe3c: 0x0040, 0xe3d: 0x0040, 0xe3e: 0x0040, 0xe3f: 0x0040,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x000a, 0xe41: 0x0018, 0xe42: 0x29d1, 0xe43: 0x0018, 0xe44: 0x0018, 0xe45: 0x0008,\n\t0xe46: 0x0008, 0xe47: 0x0008, 0xe48: 0x0018, 0xe49: 0x0018, 0xe4a: 0x0018, 0xe4b: 0x0018,\n\t0xe4c: 0x0018, 0xe4d: 0x0018, 0xe4e: 0x0018, 0xe4f: 0x0018, 0xe50: 0x0018, 0xe51: 0x0018,\n\t0xe52: 0x0018, 0xe53: 0x0018, 0xe54: 0x0018, 0xe55: 0x0018, 0xe56: 0x0018, 0xe57: 0x0018,\n\t0xe58: 0x0018, 0xe59: 0x0018, 0xe5a: 0x0018, 0xe5b: 0x0018, 0xe5c: 0x0018, 0xe5d: 0x0018,\n\t0xe5e: 0x0018, 0xe5f: 0x0018, 0xe60: 0x0018, 0xe61: 0x0018, 0xe62: 0x0018, 0xe63: 0x0018,\n\t0xe64: 0x0018, 0xe65: 0x0018, 0xe66: 0x0018, 0xe67: 0x0018, 0xe68: 0x0018, 0xe69: 0x0018,\n\t0xe6a: 0x3308, 0xe6b: 0x3308, 0xe6c: 0x3308, 0xe6d: 0x3308, 0xe6e: 0x3018, 0xe6f: 0x3018,\n\t0xe70: 0x0018, 0xe71: 0x0018, 0xe72: 0x0018, 0xe73: 0x0018, 0xe74: 0x0018, 0xe75: 0x0018,\n\t0xe76: 0xe125, 0xe77: 0x0018, 0xe78: 0x29bd, 0xe79: 0x29dd, 0xe7a: 0x29fd, 0xe7b: 0x0018,\n\t0xe7c: 0x0008, 0xe7d: 0x0018, 0xe7e: 0x0018, 0xe7f: 0x0018,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x2b3d, 0xe81: 0x2b5d, 0xe82: 0x2b7d, 0xe83: 0x2b9d, 0xe84: 0x2bbd, 0xe85: 0x2bdd,\n\t0xe86: 0x2bdd, 0xe87: 0x2bdd, 0xe88: 0x2bfd, 0xe89: 0x2bfd, 0xe8a: 0x2bfd, 0xe8b: 0x2bfd,\n\t0xe8c: 0x2c1d, 0xe8d: 0x2c1d, 0xe8e: 0x2c1d, 0xe8f: 0x2c3d, 0xe90: 0x2c5d, 0xe91: 0x2c5d,\n\t0xe92: 0x2a7d, 0xe93: 0x2a7d, 0xe94: 0x2c5d, 0xe95: 0x2c5d, 0xe96: 0x2c7d, 0xe97: 0x2c7d,\n\t0xe98: 0x2c5d, 0xe99: 0x2c5d, 0xe9a: 0x2a7d, 0xe9b: 0x2a7d, 0xe9c: 0x2c5d, 0xe9d: 0x2c5d,\n\t0xe9e: 0x2c3d, 0xe9f: 0x2c3d, 0xea0: 0x2c9d, 0xea1: 0x2c9d, 0xea2: 0x2cbd, 0xea3: 0x2cbd,\n\t0xea4: 0x0040, 0xea5: 0x2cdd, 0xea6: 0x2cfd, 0xea7: 0x2d1d, 0xea8: 0x2d1d, 0xea9: 0x2d3d,\n\t0xeaa: 0x2d5d, 0xeab: 0x2d7d, 0xeac: 0x2d9d, 0xead: 0x2dbd, 0xeae: 0x2ddd, 0xeaf: 0x2dfd,\n\t0xeb0: 0x2e1d, 0xeb1: 0x2e3d, 0xeb2: 0x2e3d, 0xeb3: 0x2e5d, 0xeb4: 0x2e7d, 0xeb5: 0x2e7d,\n\t0xeb6: 0x2e9d, 0xeb7: 0x2ebd, 0xeb8: 0x2e5d, 0xeb9: 0x2edd, 0xeba: 0x2efd, 0xebb: 0x2edd,\n\t0xebc: 0x2e5d, 0xebd: 0x2f1d, 0xebe: 0x2f3d, 0xebf: 0x2f5d,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x2f7d, 0xec1: 0x2f9d, 0xec2: 0x2cfd, 0xec3: 0x2cdd, 0xec4: 0x2fbd, 0xec5: 0x2fdd,\n\t0xec6: 0x2ffd, 0xec7: 0x301d, 0xec8: 0x303d, 0xec9: 0x305d, 0xeca: 0x307d, 0xecb: 0x309d,\n\t0xecc: 0x30bd, 0xecd: 0x30dd, 0xece: 0x30fd, 0xecf: 0x0040, 0xed0: 0x0018, 0xed1: 0x0018,\n\t0xed2: 0x311d, 0xed3: 0x313d, 0xed4: 0x315d, 0xed5: 0x317d, 0xed6: 0x319d, 0xed7: 0x31bd,\n\t0xed8: 0x31dd, 0xed9: 0x31fd, 0xeda: 0x321d, 0xedb: 0x323d, 0xedc: 0x315d, 0xedd: 0x325d,\n\t0xede: 0x327d, 0xedf: 0x329d, 0xee0: 0x0008, 0xee1: 0x0008, 0xee2: 0x0008, 0xee3: 0x0008,\n\t0xee4: 0x0008, 0xee5: 0x0008, 0xee6: 0x0008, 0xee7: 0x0008, 0xee8: 0x0008, 0xee9: 0x0008,\n\t0xeea: 0x0008, 0xeeb: 0x0008, 0xeec: 0x0008, 0xeed: 0x0008, 0xeee: 0x0008, 0xeef: 0x0008,\n\t0xef0: 0x0008, 0xef1: 0x0008, 0xef2: 0x0008, 0xef3: 0x0008, 0xef4: 0x0008, 0xef5: 0x0008,\n\t0xef6: 0x0008, 0xef7: 0x0008, 0xef8: 0x0008, 0xef9: 0x0008, 0xefa: 0x0008, 0xefb: 0x0040,\n\t0xefc: 0x0040, 0xefd: 0x0040, 0xefe: 0x0040, 0xeff: 0x0040,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x36a2, 0xf01: 0x36d2, 0xf02: 0x3702, 0xf03: 0x3732, 0xf04: 0x32bd, 0xf05: 0x32dd,\n\t0xf06: 0x32fd, 0xf07: 0x331d, 0xf08: 0x0018, 0xf09: 0x0018, 0xf0a: 0x0018, 0xf0b: 0x0018,\n\t0xf0c: 0x0018, 0xf0d: 0x0018, 0xf0e: 0x0018, 0xf0f: 0x0018, 0xf10: 0x333d, 0xf11: 0x3761,\n\t0xf12: 0x3779, 0xf13: 0x3791, 0xf14: 0x37a9, 0xf15: 0x37c1, 0xf16: 0x37d9, 0xf17: 0x37f1,\n\t0xf18: 0x3809, 0xf19: 0x3821, 0xf1a: 0x3839, 0xf1b: 0x3851, 0xf1c: 0x3869, 0xf1d: 0x3881,\n\t0xf1e: 0x3899, 0xf1f: 0x38b1, 0xf20: 0x335d, 0xf21: 0x337d, 0xf22: 0x339d, 0xf23: 0x33bd,\n\t0xf24: 0x33dd, 0xf25: 0x33dd, 0xf26: 0x33fd, 0xf27: 0x341d, 0xf28: 0x343d, 0xf29: 0x345d,\n\t0xf2a: 0x347d, 0xf2b: 0x349d, 0xf2c: 0x34bd, 0xf2d: 0x34dd, 0xf2e: 0x34fd, 0xf2f: 0x351d,\n\t0xf30: 0x353d, 0xf31: 0x355d, 0xf32: 0x357d, 0xf33: 0x359d, 0xf34: 0x35bd, 0xf35: 0x35dd,\n\t0xf36: 0x35fd, 0xf37: 0x361d, 0xf38: 0x363d, 0xf39: 0x365d, 0xf3a: 0x367d, 0xf3b: 0x369d,\n\t0xf3c: 0x38c9, 0xf3d: 0x3901, 0xf3e: 0x36bd, 0xf3f: 0x0018,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x36dd, 0xf41: 0x36fd, 0xf42: 0x371d, 0xf43: 0x373d, 0xf44: 0x375d, 0xf45: 0x377d,\n\t0xf46: 0x379d, 0xf47: 0x37bd, 0xf48: 0x37dd, 0xf49: 0x37fd, 0xf4a: 0x381d, 0xf4b: 0x383d,\n\t0xf4c: 0x385d, 0xf4d: 0x387d, 0xf4e: 0x389d, 0xf4f: 0x38bd, 0xf50: 0x38dd, 0xf51: 0x38fd,\n\t0xf52: 0x391d, 0xf53: 0x393d, 0xf54: 0x395d, 0xf55: 0x397d, 0xf56: 0x399d, 0xf57: 0x39bd,\n\t0xf58: 0x39dd, 0xf59: 0x39fd, 0xf5a: 0x3a1d, 0xf5b: 0x3a3d, 0xf5c: 0x3a5d, 0xf5d: 0x3a7d,\n\t0xf5e: 0x3a9d, 0xf5f: 0x3abd, 0xf60: 0x3add, 0xf61: 0x3afd, 0xf62: 0x3b1d, 0xf63: 0x3b3d,\n\t0xf64: 0x3b5d, 0xf65: 0x3b7d, 0xf66: 0x127d, 0xf67: 0x3b9d, 0xf68: 0x3bbd, 0xf69: 0x3bdd,\n\t0xf6a: 0x3bfd, 0xf6b: 0x3c1d, 0xf6c: 0x3c3d, 0xf6d: 0x3c5d, 0xf6e: 0x239d, 0xf6f: 0x3c7d,\n\t0xf70: 0x3c9d, 0xf71: 0x3939, 0xf72: 0x3951, 0xf73: 0x3969, 0xf74: 0x3981, 0xf75: 0x3999,\n\t0xf76: 0x39b1, 0xf77: 0x39c9, 0xf78: 0x39e1, 0xf79: 0x39f9, 0xf7a: 0x3a11, 0xf7b: 0x3a29,\n\t0xf7c: 0x3a41, 0xf7d: 0x3a59, 0xf7e: 0x3a71, 0xf7f: 0x3a89,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x3aa1, 0xf81: 0x3ac9, 0xf82: 0x3af1, 0xf83: 0x3b19, 0xf84: 0x3b41, 0xf85: 0x3b69,\n\t0xf86: 0x3b91, 0xf87: 0x3bb9, 0xf88: 0x3be1, 0xf89: 0x3c09, 0xf8a: 0x3c39, 0xf8b: 0x3c69,\n\t0xf8c: 0x3c99, 0xf8d: 0x3cbd, 0xf8e: 0x3cb1, 0xf8f: 0x3cdd, 0xf90: 0x3cfd, 0xf91: 0x3d15,\n\t0xf92: 0x3d2d, 0xf93: 0x3d45, 0xf94: 0x3d5d, 0xf95: 0x3d5d, 0xf96: 0x3d45, 0xf97: 0x3d75,\n\t0xf98: 0x07bd, 0xf99: 0x3d8d, 0xf9a: 0x3da5, 0xf9b: 0x3dbd, 0xf9c: 0x3dd5, 0xf9d: 0x3ded,\n\t0xf9e: 0x3e05, 0xf9f: 0x3e1d, 0xfa0: 0x3e35, 0xfa1: 0x3e4d, 0xfa2: 0x3e65, 0xfa3: 0x3e7d,\n\t0xfa4: 0x3e95, 0xfa5: 0x3e95, 0xfa6: 0x3ead, 0xfa7: 0x3ead, 0xfa8: 0x3ec5, 0xfa9: 0x3ec5,\n\t0xfaa: 0x3edd, 0xfab: 0x3ef5, 0xfac: 0x3f0d, 0xfad: 0x3f25, 0xfae: 0x3f3d, 0xfaf: 0x3f3d,\n\t0xfb0: 0x3f55, 0xfb1: 0x3f55, 0xfb2: 0x3f55, 0xfb3: 0x3f6d, 0xfb4: 0x3f85, 0xfb5: 0x3f9d,\n\t0xfb6: 0x3fb5, 0xfb7: 0x3f9d, 0xfb8: 0x3fcd, 0xfb9: 0x3fe5, 0xfba: 0x3f6d, 0xfbb: 0x3ffd,\n\t0xfbc: 0x4015, 0xfbd: 0x4015, 0xfbe: 0x4015, 0xfbf: 0x0040,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x3cc9, 0xfc1: 0x3d31, 0xfc2: 0x3d99, 0xfc3: 0x3e01, 0xfc4: 0x3e51, 0xfc5: 0x3eb9,\n\t0xfc6: 0x3f09, 0xfc7: 0x3f59, 0xfc8: 0x3fd9, 0xfc9: 0x4041, 0xfca: 0x4091, 0xfcb: 0x40e1,\n\t0xfcc: 0x4131, 0xfcd: 0x4199, 0xfce: 0x4201, 0xfcf: 0x4251, 0xfd0: 0x42a1, 0xfd1: 0x42d9,\n\t0xfd2: 0x4329, 0xfd3: 0x4391, 0xfd4: 0x43f9, 0xfd5: 0x4431, 0xfd6: 0x44b1, 0xfd7: 0x4549,\n\t0xfd8: 0x45c9, 0xfd9: 0x4619, 0xfda: 0x4699, 0xfdb: 0x4719, 0xfdc: 0x4781, 0xfdd: 0x47d1,\n\t0xfde: 0x4821, 0xfdf: 0x4871, 0xfe0: 0x48d9, 0xfe1: 0x4959, 0xfe2: 0x49c1, 0xfe3: 0x4a11,\n\t0xfe4: 0x4a61, 0xfe5: 0x4ab1, 0xfe6: 0x4ae9, 0xfe7: 0x4b21, 0xfe8: 0x4b59, 0xfe9: 0x4b91,\n\t0xfea: 0x4be1, 0xfeb: 0x4c31, 0xfec: 0x4cb1, 0xfed: 0x4d01, 0xfee: 0x4d69, 0xfef: 0x4de9,\n\t0xff0: 0x4e39, 0xff1: 0x4e71, 0xff2: 0x4ea9, 0xff3: 0x4f29, 0xff4: 0x4f91, 0xff5: 0x5011,\n\t0xff6: 0x5061, 0xff7: 0x50e1, 0xff8: 0x5119, 0xff9: 0x5169, 0xffa: 0x51b9, 0xffb: 0x5209,\n\t0xffc: 0x5259, 0xffd: 0x52a9, 0xffe: 0x5311, 0xfff: 0x5361,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x5399, 0x1001: 0x53e9, 0x1002: 0x5439, 0x1003: 0x5489, 0x1004: 0x54f1, 0x1005: 0x5541,\n\t0x1006: 0x5591, 0x1007: 0x55e1, 0x1008: 0x5661, 0x1009: 0x56c9, 0x100a: 0x5701, 0x100b: 0x5781,\n\t0x100c: 0x57b9, 0x100d: 0x5821, 0x100e: 0x5889, 0x100f: 0x58d9, 0x1010: 0x5929, 0x1011: 0x5979,\n\t0x1012: 0x59e1, 0x1013: 0x5a19, 0x1014: 0x5a69, 0x1015: 0x5ad1, 0x1016: 0x5b09, 0x1017: 0x5b89,\n\t0x1018: 0x5bd9, 0x1019: 0x5c01, 0x101a: 0x5c29, 0x101b: 0x5c51, 0x101c: 0x5c79, 0x101d: 0x5ca1,\n\t0x101e: 0x5cc9, 0x101f: 0x5cf1, 0x1020: 0x5d19, 0x1021: 0x5d41, 0x1022: 0x5d69, 0x1023: 0x5d99,\n\t0x1024: 0x5dc9, 0x1025: 0x5df9, 0x1026: 0x5e29, 0x1027: 0x5e59, 0x1028: 0x5e89, 0x1029: 0x5eb9,\n\t0x102a: 0x5ee9, 0x102b: 0x5f19, 0x102c: 0x5f49, 0x102d: 0x5f79, 0x102e: 0x5fa9, 0x102f: 0x5fd9,\n\t0x1030: 0x6009, 0x1031: 0x402d, 0x1032: 0x6039, 0x1033: 0x6051, 0x1034: 0x404d, 0x1035: 0x6069,\n\t0x1036: 0x6081, 0x1037: 0x6099, 0x1038: 0x406d, 0x1039: 0x406d, 0x103a: 0x60b1, 0x103b: 0x60c9,\n\t0x103c: 0x6101, 0x103d: 0x6139, 0x103e: 0x6171, 0x103f: 0x61a9,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x6211, 0x1041: 0x6229, 0x1042: 0x408d, 0x1043: 0x6241, 0x1044: 0x6259, 0x1045: 0x6271,\n\t0x1046: 0x6289, 0x1047: 0x62a1, 0x1048: 0x40ad, 0x1049: 0x62b9, 0x104a: 0x62e1, 0x104b: 0x62f9,\n\t0x104c: 0x40cd, 0x104d: 0x40cd, 0x104e: 0x6311, 0x104f: 0x6329, 0x1050: 0x6341, 0x1051: 0x40ed,\n\t0x1052: 0x410d, 0x1053: 0x412d, 0x1054: 0x414d, 0x1055: 0x416d, 0x1056: 0x6359, 0x1057: 0x6371,\n\t0x1058: 0x6389, 0x1059: 0x63a1, 0x105a: 0x63b9, 0x105b: 0x418d, 0x105c: 0x63d1, 0x105d: 0x63e9,\n\t0x105e: 0x6401, 0x105f: 0x41ad, 0x1060: 0x41cd, 0x1061: 0x6419, 0x1062: 0x41ed, 0x1063: 0x420d,\n\t0x1064: 0x422d, 0x1065: 0x6431, 0x1066: 0x424d, 0x1067: 0x6449, 0x1068: 0x6479, 0x1069: 0x6211,\n\t0x106a: 0x426d, 0x106b: 0x428d, 0x106c: 0x42ad, 0x106d: 0x42cd, 0x106e: 0x64b1, 0x106f: 0x64f1,\n\t0x1070: 0x6539, 0x1071: 0x6551, 0x1072: 0x42ed, 0x1073: 0x6569, 0x1074: 0x6581, 0x1075: 0x6599,\n\t0x1076: 0x430d, 0x1077: 0x65b1, 0x1078: 0x65c9, 0x1079: 0x65b1, 0x107a: 0x65e1, 0x107b: 0x65f9,\n\t0x107c: 0x432d, 0x107d: 0x6611, 0x107e: 0x6629, 0x107f: 0x6611,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x434d, 0x1081: 0x436d, 0x1082: 0x0040, 0x1083: 0x6641, 0x1084: 0x6659, 0x1085: 0x6671,\n\t0x1086: 0x6689, 0x1087: 0x0040, 0x1088: 0x66c1, 0x1089: 0x66d9, 0x108a: 0x66f1, 0x108b: 0x6709,\n\t0x108c: 0x6721, 0x108d: 0x6739, 0x108e: 0x6401, 0x108f: 0x6751, 0x1090: 0x6769, 0x1091: 0x6781,\n\t0x1092: 0x438d, 0x1093: 0x6799, 0x1094: 0x6289, 0x1095: 0x43ad, 0x1096: 0x43cd, 0x1097: 0x67b1,\n\t0x1098: 0x0040, 0x1099: 0x43ed, 0x109a: 0x67c9, 0x109b: 0x67e1, 0x109c: 0x67f9, 0x109d: 0x6811,\n\t0x109e: 0x6829, 0x109f: 0x6859, 0x10a0: 0x6889, 0x10a1: 0x68b1, 0x10a2: 0x68d9, 0x10a3: 0x6901,\n\t0x10a4: 0x6929, 0x10a5: 0x6951, 0x10a6: 0x6979, 0x10a7: 0x69a1, 0x10a8: 0x69c9, 0x10a9: 0x69f1,\n\t0x10aa: 0x6a21, 0x10ab: 0x6a51, 0x10ac: 0x6a81, 0x10ad: 0x6ab1, 0x10ae: 0x6ae1, 0x10af: 0x6b11,\n\t0x10b0: 0x6b41, 0x10b1: 0x6b71, 0x10b2: 0x6ba1, 0x10b3: 0x6bd1, 0x10b4: 0x6c01, 0x10b5: 0x6c31,\n\t0x10b6: 0x6c61, 0x10b7: 0x6c91, 0x10b8: 0x6cc1, 0x10b9: 0x6cf1, 0x10ba: 0x6d21, 0x10bb: 0x6d51,\n\t0x10bc: 0x6d81, 0x10bd: 0x6db1, 0x10be: 0x6de1, 0x10bf: 0x440d,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0xe00d, 0x10c1: 0x0008, 0x10c2: 0xe00d, 0x10c3: 0x0008, 0x10c4: 0xe00d, 0x10c5: 0x0008,\n\t0x10c6: 0xe00d, 0x10c7: 0x0008, 0x10c8: 0xe00d, 0x10c9: 0x0008, 0x10ca: 0xe00d, 0x10cb: 0x0008,\n\t0x10cc: 0xe00d, 0x10cd: 0x0008, 0x10ce: 0xe00d, 0x10cf: 0x0008, 0x10d0: 0xe00d, 0x10d1: 0x0008,\n\t0x10d2: 0xe00d, 0x10d3: 0x0008, 0x10d4: 0xe00d, 0x10d5: 0x0008, 0x10d6: 0xe00d, 0x10d7: 0x0008,\n\t0x10d8: 0xe00d, 0x10d9: 0x0008, 0x10da: 0xe00d, 0x10db: 0x0008, 0x10dc: 0xe00d, 0x10dd: 0x0008,\n\t0x10de: 0xe00d, 0x10df: 0x0008, 0x10e0: 0xe00d, 0x10e1: 0x0008, 0x10e2: 0xe00d, 0x10e3: 0x0008,\n\t0x10e4: 0xe00d, 0x10e5: 0x0008, 0x10e6: 0xe00d, 0x10e7: 0x0008, 0x10e8: 0xe00d, 0x10e9: 0x0008,\n\t0x10ea: 0xe00d, 0x10eb: 0x0008, 0x10ec: 0xe00d, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x3308,\n\t0x10f0: 0x3318, 0x10f1: 0x3318, 0x10f2: 0x3318, 0x10f3: 0x0018, 0x10f4: 0x3308, 0x10f5: 0x3308,\n\t0x10f6: 0x3308, 0x10f7: 0x3308, 0x10f8: 0x3308, 0x10f9: 0x3308, 0x10fa: 0x3308, 0x10fb: 0x3308,\n\t0x10fc: 0x3308, 0x10fd: 0x3308, 0x10fe: 0x0018, 0x10ff: 0x0008,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008,\n\t0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008,\n\t0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008,\n\t0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008,\n\t0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0x0ea1, 0x111d: 0x6e11,\n\t0x111e: 0x3308, 0x111f: 0x3308, 0x1120: 0x0008, 0x1121: 0x0008, 0x1122: 0x0008, 0x1123: 0x0008,\n\t0x1124: 0x0008, 0x1125: 0x0008, 0x1126: 0x0008, 0x1127: 0x0008, 0x1128: 0x0008, 0x1129: 0x0008,\n\t0x112a: 0x0008, 0x112b: 0x0008, 0x112c: 0x0008, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x0008,\n\t0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0x0008, 0x1133: 0x0008, 0x1134: 0x0008, 0x1135: 0x0008,\n\t0x1136: 0x0008, 0x1137: 0x0008, 0x1138: 0x0008, 0x1139: 0x0008, 0x113a: 0x0008, 0x113b: 0x0008,\n\t0x113c: 0x0008, 0x113d: 0x0008, 0x113e: 0x0008, 0x113f: 0x0008,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0x0018, 0x1141: 0x0018, 0x1142: 0x0018, 0x1143: 0x0018, 0x1144: 0x0018, 0x1145: 0x0018,\n\t0x1146: 0x0018, 0x1147: 0x0018, 0x1148: 0x0018, 0x1149: 0x0018, 0x114a: 0x0018, 0x114b: 0x0018,\n\t0x114c: 0x0018, 0x114d: 0x0018, 0x114e: 0x0018, 0x114f: 0x0018, 0x1150: 0x0018, 0x1151: 0x0018,\n\t0x1152: 0x0018, 0x1153: 0x0018, 0x1154: 0x0018, 0x1155: 0x0018, 0x1156: 0x0018, 0x1157: 0x0008,\n\t0x1158: 0x0008, 0x1159: 0x0008, 0x115a: 0x0008, 0x115b: 0x0008, 0x115c: 0x0008, 0x115d: 0x0008,\n\t0x115e: 0x0008, 0x115f: 0x0008, 0x1160: 0x0018, 0x1161: 0x0018, 0x1162: 0xe00d, 0x1163: 0x0008,\n\t0x1164: 0xe00d, 0x1165: 0x0008, 0x1166: 0xe00d, 0x1167: 0x0008, 0x1168: 0xe00d, 0x1169: 0x0008,\n\t0x116a: 0xe00d, 0x116b: 0x0008, 0x116c: 0xe00d, 0x116d: 0x0008, 0x116e: 0xe00d, 0x116f: 0x0008,\n\t0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0xe00d, 0x1173: 0x0008, 0x1174: 0xe00d, 0x1175: 0x0008,\n\t0x1176: 0xe00d, 0x1177: 0x0008, 0x1178: 0xe00d, 0x1179: 0x0008, 0x117a: 0xe00d, 0x117b: 0x0008,\n\t0x117c: 0xe00d, 0x117d: 0x0008, 0x117e: 0xe00d, 0x117f: 0x0008,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008,\n\t0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0xe00d, 0x1189: 0x0008, 0x118a: 0xe00d, 0x118b: 0x0008,\n\t0x118c: 0xe00d, 0x118d: 0x0008, 0x118e: 0xe00d, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008,\n\t0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0xe00d, 0x1195: 0x0008, 0x1196: 0xe00d, 0x1197: 0x0008,\n\t0x1198: 0xe00d, 0x1199: 0x0008, 0x119a: 0xe00d, 0x119b: 0x0008, 0x119c: 0xe00d, 0x119d: 0x0008,\n\t0x119e: 0xe00d, 0x119f: 0x0008, 0x11a0: 0xe00d, 0x11a1: 0x0008, 0x11a2: 0xe00d, 0x11a3: 0x0008,\n\t0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008,\n\t0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008,\n\t0x11b0: 0xe0fd, 0x11b1: 0x0008, 0x11b2: 0x0008, 0x11b3: 0x0008, 0x11b4: 0x0008, 0x11b5: 0x0008,\n\t0x11b6: 0x0008, 0x11b7: 0x0008, 0x11b8: 0x0008, 0x11b9: 0xe01d, 0x11ba: 0x0008, 0x11bb: 0xe03d,\n\t0x11bc: 0x0008, 0x11bd: 0x442d, 0x11be: 0xe00d, 0x11bf: 0x0008,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008,\n\t0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0x0008, 0x11c9: 0x0018, 0x11ca: 0x0018, 0x11cb: 0xe03d,\n\t0x11cc: 0x0008, 0x11cd: 0x11d9, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008,\n\t0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008,\n\t0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008,\n\t0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008,\n\t0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008,\n\t0x11ea: 0x6e29, 0x11eb: 0x1029, 0x11ec: 0x11c1, 0x11ed: 0x6e41, 0x11ee: 0x1221, 0x11ef: 0x0040,\n\t0x11f0: 0x6e59, 0x11f1: 0x6e71, 0x11f2: 0x1239, 0x11f3: 0x444d, 0x11f4: 0xe00d, 0x11f5: 0x0008,\n\t0x11f6: 0xe00d, 0x11f7: 0x0008, 0x11f8: 0x0040, 0x11f9: 0x0040, 0x11fa: 0x0040, 0x11fb: 0x0040,\n\t0x11fc: 0x0040, 0x11fd: 0x0040, 0x11fe: 0x0040, 0x11ff: 0x0040,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x64d5, 0x1201: 0x64f5, 0x1202: 0x6515, 0x1203: 0x6535, 0x1204: 0x6555, 0x1205: 0x6575,\n\t0x1206: 0x6595, 0x1207: 0x65b5, 0x1208: 0x65d5, 0x1209: 0x65f5, 0x120a: 0x6615, 0x120b: 0x6635,\n\t0x120c: 0x6655, 0x120d: 0x6675, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0x6695, 0x1211: 0x0008,\n\t0x1212: 0x66b5, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x66d5, 0x1216: 0x66f5, 0x1217: 0x6715,\n\t0x1218: 0x6735, 0x1219: 0x6755, 0x121a: 0x6775, 0x121b: 0x6795, 0x121c: 0x67b5, 0x121d: 0x67d5,\n\t0x121e: 0x67f5, 0x121f: 0x0008, 0x1220: 0x6815, 0x1221: 0x0008, 0x1222: 0x6835, 0x1223: 0x0008,\n\t0x1224: 0x0008, 0x1225: 0x6855, 0x1226: 0x6875, 0x1227: 0x0008, 0x1228: 0x0008, 0x1229: 0x0008,\n\t0x122a: 0x6895, 0x122b: 0x68b5, 0x122c: 0x68d5, 0x122d: 0x68f5, 0x122e: 0x6915, 0x122f: 0x6935,\n\t0x1230: 0x6955, 0x1231: 0x6975, 0x1232: 0x6995, 0x1233: 0x69b5, 0x1234: 0x69d5, 0x1235: 0x69f5,\n\t0x1236: 0x6a15, 0x1237: 0x6a35, 0x1238: 0x6a55, 0x1239: 0x6a75, 0x123a: 0x6a95, 0x123b: 0x6ab5,\n\t0x123c: 0x6ad5, 0x123d: 0x6af5, 0x123e: 0x6b15, 0x123f: 0x6b35,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x7a95, 0x1241: 0x7ab5, 0x1242: 0x7ad5, 0x1243: 0x7af5, 0x1244: 0x7b15, 0x1245: 0x7b35,\n\t0x1246: 0x7b55, 0x1247: 0x7b75, 0x1248: 0x7b95, 0x1249: 0x7bb5, 0x124a: 0x7bd5, 0x124b: 0x7bf5,\n\t0x124c: 0x7c15, 0x124d: 0x7c35, 0x124e: 0x7c55, 0x124f: 0x6ec9, 0x1250: 0x6ef1, 0x1251: 0x6f19,\n\t0x1252: 0x7c75, 0x1253: 0x7c95, 0x1254: 0x7cb5, 0x1255: 0x6f41, 0x1256: 0x6f69, 0x1257: 0x6f91,\n\t0x1258: 0x7cd5, 0x1259: 0x7cf5, 0x125a: 0x0040, 0x125b: 0x0040, 0x125c: 0x0040, 0x125d: 0x0040,\n\t0x125e: 0x0040, 0x125f: 0x0040, 0x1260: 0x0040, 0x1261: 0x0040, 0x1262: 0x0040, 0x1263: 0x0040,\n\t0x1264: 0x0040, 0x1265: 0x0040, 0x1266: 0x0040, 0x1267: 0x0040, 0x1268: 0x0040, 0x1269: 0x0040,\n\t0x126a: 0x0040, 0x126b: 0x0040, 0x126c: 0x0040, 0x126d: 0x0040, 0x126e: 0x0040, 0x126f: 0x0040,\n\t0x1270: 0x0040, 0x1271: 0x0040, 0x1272: 0x0040, 0x1273: 0x0040, 0x1274: 0x0040, 0x1275: 0x0040,\n\t0x1276: 0x0040, 0x1277: 0x0040, 0x1278: 0x0040, 0x1279: 0x0040, 0x127a: 0x0040, 0x127b: 0x0040,\n\t0x127c: 0x0040, 0x127d: 0x0040, 0x127e: 0x0040, 0x127f: 0x0040,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x6fb9, 0x1281: 0x6fd1, 0x1282: 0x6fe9, 0x1283: 0x7d15, 0x1284: 0x7d35, 0x1285: 0x7001,\n\t0x1286: 0x7001, 0x1287: 0x0040, 0x1288: 0x0040, 0x1289: 0x0040, 0x128a: 0x0040, 0x128b: 0x0040,\n\t0x128c: 0x0040, 0x128d: 0x0040, 0x128e: 0x0040, 0x128f: 0x0040, 0x1290: 0x0040, 0x1291: 0x0040,\n\t0x1292: 0x0040, 0x1293: 0x7019, 0x1294: 0x7041, 0x1295: 0x7069, 0x1296: 0x7091, 0x1297: 0x70b9,\n\t0x1298: 0x0040, 0x1299: 0x0040, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x70e1,\n\t0x129e: 0x3308, 0x129f: 0x7109, 0x12a0: 0x7131, 0x12a1: 0x20a9, 0x12a2: 0x20f1, 0x12a3: 0x7149,\n\t0x12a4: 0x7161, 0x12a5: 0x7179, 0x12a6: 0x7191, 0x12a7: 0x71a9, 0x12a8: 0x71c1, 0x12a9: 0x1fb2,\n\t0x12aa: 0x71d9, 0x12ab: 0x7201, 0x12ac: 0x7229, 0x12ad: 0x7261, 0x12ae: 0x7299, 0x12af: 0x72c1,\n\t0x12b0: 0x72e9, 0x12b1: 0x7311, 0x12b2: 0x7339, 0x12b3: 0x7361, 0x12b4: 0x7389, 0x12b5: 0x73b1,\n\t0x12b6: 0x73d9, 0x12b7: 0x0040, 0x12b8: 0x7401, 0x12b9: 0x7429, 0x12ba: 0x7451, 0x12bb: 0x7479,\n\t0x12bc: 0x74a1, 0x12bd: 0x0040, 0x12be: 0x74c9, 0x12bf: 0x0040,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x74f1, 0x12c1: 0x7519, 0x12c2: 0x0040, 0x12c3: 0x7541, 0x12c4: 0x7569, 0x12c5: 0x0040,\n\t0x12c6: 0x7591, 0x12c7: 0x75b9, 0x12c8: 0x75e1, 0x12c9: 0x7609, 0x12ca: 0x7631, 0x12cb: 0x7659,\n\t0x12cc: 0x7681, 0x12cd: 0x76a9, 0x12ce: 0x76d1, 0x12cf: 0x76f9, 0x12d0: 0x7721, 0x12d1: 0x7721,\n\t0x12d2: 0x7739, 0x12d3: 0x7739, 0x12d4: 0x7739, 0x12d5: 0x7739, 0x12d6: 0x7751, 0x12d7: 0x7751,\n\t0x12d8: 0x7751, 0x12d9: 0x7751, 0x12da: 0x7769, 0x12db: 0x7769, 0x12dc: 0x7769, 0x12dd: 0x7769,\n\t0x12de: 0x7781, 0x12df: 0x7781, 0x12e0: 0x7781, 0x12e1: 0x7781, 0x12e2: 0x7799, 0x12e3: 0x7799,\n\t0x12e4: 0x7799, 0x12e5: 0x7799, 0x12e6: 0x77b1, 0x12e7: 0x77b1, 0x12e8: 0x77b1, 0x12e9: 0x77b1,\n\t0x12ea: 0x77c9, 0x12eb: 0x77c9, 0x12ec: 0x77c9, 0x12ed: 0x77c9, 0x12ee: 0x77e1, 0x12ef: 0x77e1,\n\t0x12f0: 0x77e1, 0x12f1: 0x77e1, 0x12f2: 0x77f9, 0x12f3: 0x77f9, 0x12f4: 0x77f9, 0x12f5: 0x77f9,\n\t0x12f6: 0x7811, 0x12f7: 0x7811, 0x12f8: 0x7811, 0x12f9: 0x7811, 0x12fa: 0x7829, 0x12fb: 0x7829,\n\t0x12fc: 0x7829, 0x12fd: 0x7829, 0x12fe: 0x7841, 0x12ff: 0x7841,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x7841, 0x1301: 0x7841, 0x1302: 0x7859, 0x1303: 0x7859, 0x1304: 0x7871, 0x1305: 0x7871,\n\t0x1306: 0x7889, 0x1307: 0x7889, 0x1308: 0x78a1, 0x1309: 0x78a1, 0x130a: 0x78b9, 0x130b: 0x78b9,\n\t0x130c: 0x78d1, 0x130d: 0x78d1, 0x130e: 0x78e9, 0x130f: 0x78e9, 0x1310: 0x78e9, 0x1311: 0x78e9,\n\t0x1312: 0x7901, 0x1313: 0x7901, 0x1314: 0x7901, 0x1315: 0x7901, 0x1316: 0x7919, 0x1317: 0x7919,\n\t0x1318: 0x7919, 0x1319: 0x7919, 0x131a: 0x7931, 0x131b: 0x7931, 0x131c: 0x7931, 0x131d: 0x7931,\n\t0x131e: 0x7949, 0x131f: 0x7949, 0x1320: 0x7961, 0x1321: 0x7961, 0x1322: 0x7961, 0x1323: 0x7961,\n\t0x1324: 0x7979, 0x1325: 0x7979, 0x1326: 0x7991, 0x1327: 0x7991, 0x1328: 0x7991, 0x1329: 0x7991,\n\t0x132a: 0x79a9, 0x132b: 0x79a9, 0x132c: 0x79a9, 0x132d: 0x79a9, 0x132e: 0x79c1, 0x132f: 0x79c1,\n\t0x1330: 0x79d9, 0x1331: 0x79d9, 0x1332: 0x0818, 0x1333: 0x0818, 0x1334: 0x0818, 0x1335: 0x0818,\n\t0x1336: 0x0818, 0x1337: 0x0818, 0x1338: 0x0818, 0x1339: 0x0818, 0x133a: 0x0818, 0x133b: 0x0818,\n\t0x133c: 0x0818, 0x133d: 0x0818, 0x133e: 0x0818, 0x133f: 0x0818,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x0818, 0x1341: 0x0818, 0x1342: 0x0040, 0x1343: 0x0040, 0x1344: 0x0040, 0x1345: 0x0040,\n\t0x1346: 0x0040, 0x1347: 0x0040, 0x1348: 0x0040, 0x1349: 0x0040, 0x134a: 0x0040, 0x134b: 0x0040,\n\t0x134c: 0x0040, 0x134d: 0x0040, 0x134e: 0x0040, 0x134f: 0x0040, 0x1350: 0x0040, 0x1351: 0x0040,\n\t0x1352: 0x0040, 0x1353: 0x79f1, 0x1354: 0x79f1, 0x1355: 0x79f1, 0x1356: 0x79f1, 0x1357: 0x7a09,\n\t0x1358: 0x7a09, 0x1359: 0x7a21, 0x135a: 0x7a21, 0x135b: 0x7a39, 0x135c: 0x7a39, 0x135d: 0x0479,\n\t0x135e: 0x7a51, 0x135f: 0x7a51, 0x1360: 0x7a69, 0x1361: 0x7a69, 0x1362: 0x7a81, 0x1363: 0x7a81,\n\t0x1364: 0x7a99, 0x1365: 0x7a99, 0x1366: 0x7a99, 0x1367: 0x7a99, 0x1368: 0x7ab1, 0x1369: 0x7ab1,\n\t0x136a: 0x7ac9, 0x136b: 0x7ac9, 0x136c: 0x7af1, 0x136d: 0x7af1, 0x136e: 0x7b19, 0x136f: 0x7b19,\n\t0x1370: 0x7b41, 0x1371: 0x7b41, 0x1372: 0x7b69, 0x1373: 0x7b69, 0x1374: 0x7b91, 0x1375: 0x7b91,\n\t0x1376: 0x7bb9, 0x1377: 0x7bb9, 0x1378: 0x7bb9, 0x1379: 0x7be1, 0x137a: 0x7be1, 0x137b: 0x7be1,\n\t0x137c: 0x7c09, 0x137d: 0x7c09, 0x137e: 0x7c09, 0x137f: 0x7c09,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x85f9, 0x1381: 0x8621, 0x1382: 0x8649, 0x1383: 0x8671, 0x1384: 0x8699, 0x1385: 0x86c1,\n\t0x1386: 0x86e9, 0x1387: 0x8711, 0x1388: 0x8739, 0x1389: 0x8761, 0x138a: 0x8789, 0x138b: 0x87b1,\n\t0x138c: 0x87d9, 0x138d: 0x8801, 0x138e: 0x8829, 0x138f: 0x8851, 0x1390: 0x8879, 0x1391: 0x88a1,\n\t0x1392: 0x88c9, 0x1393: 0x88f1, 0x1394: 0x8919, 0x1395: 0x8941, 0x1396: 0x8969, 0x1397: 0x8991,\n\t0x1398: 0x89b9, 0x1399: 0x89e1, 0x139a: 0x8a09, 0x139b: 0x8a31, 0x139c: 0x8a59, 0x139d: 0x8a81,\n\t0x139e: 0x8aaa, 0x139f: 0x8ada, 0x13a0: 0x8b0a, 0x13a1: 0x8b3a, 0x13a2: 0x8b6a, 0x13a3: 0x8b9a,\n\t0x13a4: 0x8bc9, 0x13a5: 0x8bf1, 0x13a6: 0x7c71, 0x13a7: 0x8c19, 0x13a8: 0x7be1, 0x13a9: 0x7c99,\n\t0x13aa: 0x8c41, 0x13ab: 0x8c69, 0x13ac: 0x7d39, 0x13ad: 0x8c91, 0x13ae: 0x7d61, 0x13af: 0x7d89,\n\t0x13b0: 0x8cb9, 0x13b1: 0x8ce1, 0x13b2: 0x7e29, 0x13b3: 0x8d09, 0x13b4: 0x7e51, 0x13b5: 0x7e79,\n\t0x13b6: 0x8d31, 0x13b7: 0x8d59, 0x13b8: 0x7ec9, 0x13b9: 0x8d81, 0x13ba: 0x7ef1, 0x13bb: 0x7f19,\n\t0x13bc: 0x83a1, 0x13bd: 0x83c9, 0x13be: 0x8441, 0x13bf: 0x8469,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x8491, 0x13c1: 0x8531, 0x13c2: 0x8559, 0x13c3: 0x8581, 0x13c4: 0x85a9, 0x13c5: 0x8649,\n\t0x13c6: 0x8671, 0x13c7: 0x8699, 0x13c8: 0x8da9, 0x13c9: 0x8739, 0x13ca: 0x8dd1, 0x13cb: 0x8df9,\n\t0x13cc: 0x8829, 0x13cd: 0x8e21, 0x13ce: 0x8851, 0x13cf: 0x8879, 0x13d0: 0x8a81, 0x13d1: 0x8e49,\n\t0x13d2: 0x8e71, 0x13d3: 0x89b9, 0x13d4: 0x8e99, 0x13d5: 0x89e1, 0x13d6: 0x8a09, 0x13d7: 0x7c21,\n\t0x13d8: 0x7c49, 0x13d9: 0x8ec1, 0x13da: 0x7c71, 0x13db: 0x8ee9, 0x13dc: 0x7cc1, 0x13dd: 0x7ce9,\n\t0x13de: 0x7d11, 0x13df: 0x7d39, 0x13e0: 0x8f11, 0x13e1: 0x7db1, 0x13e2: 0x7dd9, 0x13e3: 0x7e01,\n\t0x13e4: 0x7e29, 0x13e5: 0x8f39, 0x13e6: 0x7ec9, 0x13e7: 0x7f41, 0x13e8: 0x7f69, 0x13e9: 0x7f91,\n\t0x13ea: 0x7fb9, 0x13eb: 0x7fe1, 0x13ec: 0x8031, 0x13ed: 0x8059, 0x13ee: 0x8081, 0x13ef: 0x80a9,\n\t0x13f0: 0x80d1, 0x13f1: 0x80f9, 0x13f2: 0x8f61, 0x13f3: 0x8121, 0x13f4: 0x8149, 0x13f5: 0x8171,\n\t0x13f6: 0x8199, 0x13f7: 0x81c1, 0x13f8: 0x81e9, 0x13f9: 0x8239, 0x13fa: 0x8261, 0x13fb: 0x8289,\n\t0x13fc: 0x82b1, 0x13fd: 0x82d9, 0x13fe: 0x8301, 0x13ff: 0x8329,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x8351, 0x1401: 0x8379, 0x1402: 0x83f1, 0x1403: 0x8419, 0x1404: 0x84b9, 0x1405: 0x84e1,\n\t0x1406: 0x8509, 0x1407: 0x8531, 0x1408: 0x8559, 0x1409: 0x85d1, 0x140a: 0x85f9, 0x140b: 0x8621,\n\t0x140c: 0x8649, 0x140d: 0x8f89, 0x140e: 0x86c1, 0x140f: 0x86e9, 0x1410: 0x8711, 0x1411: 0x8739,\n\t0x1412: 0x87b1, 0x1413: 0x87d9, 0x1414: 0x8801, 0x1415: 0x8829, 0x1416: 0x8fb1, 0x1417: 0x88a1,\n\t0x1418: 0x88c9, 0x1419: 0x8fd9, 0x141a: 0x8941, 0x141b: 0x8969, 0x141c: 0x8991, 0x141d: 0x89b9,\n\t0x141e: 0x9001, 0x141f: 0x7c71, 0x1420: 0x8ee9, 0x1421: 0x7d39, 0x1422: 0x8f11, 0x1423: 0x7e29,\n\t0x1424: 0x8f39, 0x1425: 0x7ec9, 0x1426: 0x9029, 0x1427: 0x80d1, 0x1428: 0x9051, 0x1429: 0x9079,\n\t0x142a: 0x90a1, 0x142b: 0x8531, 0x142c: 0x8559, 0x142d: 0x8649, 0x142e: 0x8829, 0x142f: 0x8fb1,\n\t0x1430: 0x89b9, 0x1431: 0x9001, 0x1432: 0x90c9, 0x1433: 0x9101, 0x1434: 0x9139, 0x1435: 0x9171,\n\t0x1436: 0x9199, 0x1437: 0x91c1, 0x1438: 0x91e9, 0x1439: 0x9211, 0x143a: 0x9239, 0x143b: 0x9261,\n\t0x143c: 0x9289, 0x143d: 0x92b1, 0x143e: 0x92d9, 0x143f: 0x9301,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x9329, 0x1441: 0x9351, 0x1442: 0x9379, 0x1443: 0x93a1, 0x1444: 0x93c9, 0x1445: 0x93f1,\n\t0x1446: 0x9419, 0x1447: 0x9441, 0x1448: 0x9469, 0x1449: 0x9491, 0x144a: 0x94b9, 0x144b: 0x94e1,\n\t0x144c: 0x9079, 0x144d: 0x9509, 0x144e: 0x9531, 0x144f: 0x9559, 0x1450: 0x9581, 0x1451: 0x9171,\n\t0x1452: 0x9199, 0x1453: 0x91c1, 0x1454: 0x91e9, 0x1455: 0x9211, 0x1456: 0x9239, 0x1457: 0x9261,\n\t0x1458: 0x9289, 0x1459: 0x92b1, 0x145a: 0x92d9, 0x145b: 0x9301, 0x145c: 0x9329, 0x145d: 0x9351,\n\t0x145e: 0x9379, 0x145f: 0x93a1, 0x1460: 0x93c9, 0x1461: 0x93f1, 0x1462: 0x9419, 0x1463: 0x9441,\n\t0x1464: 0x9469, 0x1465: 0x9491, 0x1466: 0x94b9, 0x1467: 0x94e1, 0x1468: 0x9079, 0x1469: 0x9509,\n\t0x146a: 0x9531, 0x146b: 0x9559, 0x146c: 0x9581, 0x146d: 0x9491, 0x146e: 0x94b9, 0x146f: 0x94e1,\n\t0x1470: 0x9079, 0x1471: 0x9051, 0x1472: 0x90a1, 0x1473: 0x8211, 0x1474: 0x8059, 0x1475: 0x8081,\n\t0x1476: 0x80a9, 0x1477: 0x9491, 0x1478: 0x94b9, 0x1479: 0x94e1, 0x147a: 0x8211, 0x147b: 0x8239,\n\t0x147c: 0x95a9, 0x147d: 0x95a9, 0x147e: 0x0018, 0x147f: 0x0018,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x0040, 0x1481: 0x0040, 0x1482: 0x0040, 0x1483: 0x0040, 0x1484: 0x0040, 0x1485: 0x0040,\n\t0x1486: 0x0040, 0x1487: 0x0040, 0x1488: 0x0040, 0x1489: 0x0040, 0x148a: 0x0040, 0x148b: 0x0040,\n\t0x148c: 0x0040, 0x148d: 0x0040, 0x148e: 0x0040, 0x148f: 0x0040, 0x1490: 0x95d1, 0x1491: 0x9609,\n\t0x1492: 0x9609, 0x1493: 0x9641, 0x1494: 0x9679, 0x1495: 0x96b1, 0x1496: 0x96e9, 0x1497: 0x9721,\n\t0x1498: 0x9759, 0x1499: 0x9759, 0x149a: 0x9791, 0x149b: 0x97c9, 0x149c: 0x9801, 0x149d: 0x9839,\n\t0x149e: 0x9871, 0x149f: 0x98a9, 0x14a0: 0x98a9, 0x14a1: 0x98e1, 0x14a2: 0x9919, 0x14a3: 0x9919,\n\t0x14a4: 0x9951, 0x14a5: 0x9951, 0x14a6: 0x9989, 0x14a7: 0x99c1, 0x14a8: 0x99c1, 0x14a9: 0x99f9,\n\t0x14aa: 0x9a31, 0x14ab: 0x9a31, 0x14ac: 0x9a69, 0x14ad: 0x9a69, 0x14ae: 0x9aa1, 0x14af: 0x9ad9,\n\t0x14b0: 0x9ad9, 0x14b1: 0x9b11, 0x14b2: 0x9b11, 0x14b3: 0x9b49, 0x14b4: 0x9b81, 0x14b5: 0x9bb9,\n\t0x14b6: 0x9bf1, 0x14b7: 0x9bf1, 0x14b8: 0x9c29, 0x14b9: 0x9c61, 0x14ba: 0x9c99, 0x14bb: 0x9cd1,\n\t0x14bc: 0x9d09, 0x14bd: 0x9d09, 0x14be: 0x9d41, 0x14bf: 0x9d79,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0xa949, 0x14c1: 0xa981, 0x14c2: 0xa9b9, 0x14c3: 0xa8a1, 0x14c4: 0x9bb9, 0x14c5: 0x9989,\n\t0x14c6: 0xa9f1, 0x14c7: 0xaa29, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040,\n\t0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x0040, 0x14d1: 0x0040,\n\t0x14d2: 0x0040, 0x14d3: 0x0040, 0x14d4: 0x0040, 0x14d5: 0x0040, 0x14d6: 0x0040, 0x14d7: 0x0040,\n\t0x14d8: 0x0040, 0x14d9: 0x0040, 0x14da: 0x0040, 0x14db: 0x0040, 0x14dc: 0x0040, 0x14dd: 0x0040,\n\t0x14de: 0x0040, 0x14df: 0x0040, 0x14e0: 0x0040, 0x14e1: 0x0040, 0x14e2: 0x0040, 0x14e3: 0x0040,\n\t0x14e4: 0x0040, 0x14e5: 0x0040, 0x14e6: 0x0040, 0x14e7: 0x0040, 0x14e8: 0x0040, 0x14e9: 0x0040,\n\t0x14ea: 0x0040, 0x14eb: 0x0040, 0x14ec: 0x0040, 0x14ed: 0x0040, 0x14ee: 0x0040, 0x14ef: 0x0040,\n\t0x14f0: 0xaa61, 0x14f1: 0xaa99, 0x14f2: 0xaad1, 0x14f3: 0xab19, 0x14f4: 0xab61, 0x14f5: 0xaba9,\n\t0x14f6: 0xabf1, 0x14f7: 0xac39, 0x14f8: 0xac81, 0x14f9: 0xacc9, 0x14fa: 0xad02, 0x14fb: 0xae12,\n\t0x14fc: 0xae91, 0x14fd: 0x0018, 0x14fe: 0x0040, 0x14ff: 0x0040,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x33c0, 0x1501: 0x33c0, 0x1502: 0x33c0, 0x1503: 0x33c0, 0x1504: 0x33c0, 0x1505: 0x33c0,\n\t0x1506: 0x33c0, 0x1507: 0x33c0, 0x1508: 0x33c0, 0x1509: 0x33c0, 0x150a: 0x33c0, 0x150b: 0x33c0,\n\t0x150c: 0x33c0, 0x150d: 0x33c0, 0x150e: 0x33c0, 0x150f: 0x33c0, 0x1510: 0xaeda, 0x1511: 0x7d55,\n\t0x1512: 0x0040, 0x1513: 0xaeea, 0x1514: 0x03c2, 0x1515: 0xaefa, 0x1516: 0xaf0a, 0x1517: 0x7d75,\n\t0x1518: 0x7d95, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040,\n\t0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x3308, 0x1521: 0x3308, 0x1522: 0x3308, 0x1523: 0x3308,\n\t0x1524: 0x3308, 0x1525: 0x3308, 0x1526: 0x3308, 0x1527: 0x3308, 0x1528: 0x3308, 0x1529: 0x3308,\n\t0x152a: 0x3308, 0x152b: 0x3308, 0x152c: 0x3308, 0x152d: 0x3308, 0x152e: 0x3308, 0x152f: 0x3308,\n\t0x1530: 0x0040, 0x1531: 0x7db5, 0x1532: 0x7dd5, 0x1533: 0xaf1a, 0x1534: 0xaf1a, 0x1535: 0x1fd2,\n\t0x1536: 0x1fe2, 0x1537: 0xaf2a, 0x1538: 0xaf3a, 0x1539: 0x7df5, 0x153a: 0x7e15, 0x153b: 0x7e35,\n\t0x153c: 0x7df5, 0x153d: 0x7e55, 0x153e: 0x7e75, 0x153f: 0x7e55,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x7e95, 0x1541: 0x7eb5, 0x1542: 0x7ed5, 0x1543: 0x7eb5, 0x1544: 0x7ef5, 0x1545: 0x0018,\n\t0x1546: 0x0018, 0x1547: 0xaf4a, 0x1548: 0xaf5a, 0x1549: 0x7f16, 0x154a: 0x7f36, 0x154b: 0x7f56,\n\t0x154c: 0x7f76, 0x154d: 0xaf1a, 0x154e: 0xaf1a, 0x154f: 0xaf1a, 0x1550: 0xaeda, 0x1551: 0x7f95,\n\t0x1552: 0x0040, 0x1553: 0x0040, 0x1554: 0x03c2, 0x1555: 0xaeea, 0x1556: 0xaf0a, 0x1557: 0xaefa,\n\t0x1558: 0x7fb5, 0x1559: 0x1fd2, 0x155a: 0x1fe2, 0x155b: 0xaf2a, 0x155c: 0xaf3a, 0x155d: 0x7e95,\n\t0x155e: 0x7ef5, 0x155f: 0xaf6a, 0x1560: 0xaf7a, 0x1561: 0xaf8a, 0x1562: 0x1fb2, 0x1563: 0xaf99,\n\t0x1564: 0xafaa, 0x1565: 0xafba, 0x1566: 0x1fc2, 0x1567: 0x0040, 0x1568: 0xafca, 0x1569: 0xafda,\n\t0x156a: 0xafea, 0x156b: 0xaffa, 0x156c: 0x0040, 0x156d: 0x0040, 0x156e: 0x0040, 0x156f: 0x0040,\n\t0x1570: 0x7fd6, 0x1571: 0xb009, 0x1572: 0x7ff6, 0x1573: 0x0808, 0x1574: 0x8016, 0x1575: 0x0040,\n\t0x1576: 0x8036, 0x1577: 0xb031, 0x1578: 0x8056, 0x1579: 0xb059, 0x157a: 0x8076, 0x157b: 0xb081,\n\t0x157c: 0x8096, 0x157d: 0xb0a9, 0x157e: 0x80b6, 0x157f: 0xb0d1,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0xb0f9, 0x1581: 0xb111, 0x1582: 0xb111, 0x1583: 0xb129, 0x1584: 0xb129, 0x1585: 0xb141,\n\t0x1586: 0xb141, 0x1587: 0xb159, 0x1588: 0xb159, 0x1589: 0xb171, 0x158a: 0xb171, 0x158b: 0xb171,\n\t0x158c: 0xb171, 0x158d: 0xb189, 0x158e: 0xb189, 0x158f: 0xb1a1, 0x1590: 0xb1a1, 0x1591: 0xb1a1,\n\t0x1592: 0xb1a1, 0x1593: 0xb1b9, 0x1594: 0xb1b9, 0x1595: 0xb1d1, 0x1596: 0xb1d1, 0x1597: 0xb1d1,\n\t0x1598: 0xb1d1, 0x1599: 0xb1e9, 0x159a: 0xb1e9, 0x159b: 0xb1e9, 0x159c: 0xb1e9, 0x159d: 0xb201,\n\t0x159e: 0xb201, 0x159f: 0xb201, 0x15a0: 0xb201, 0x15a1: 0xb219, 0x15a2: 0xb219, 0x15a3: 0xb219,\n\t0x15a4: 0xb219, 0x15a5: 0xb231, 0x15a6: 0xb231, 0x15a7: 0xb231, 0x15a8: 0xb231, 0x15a9: 0xb249,\n\t0x15aa: 0xb249, 0x15ab: 0xb261, 0x15ac: 0xb261, 0x15ad: 0xb279, 0x15ae: 0xb279, 0x15af: 0xb291,\n\t0x15b0: 0xb291, 0x15b1: 0xb2a9, 0x15b2: 0xb2a9, 0x15b3: 0xb2a9, 0x15b4: 0xb2a9, 0x15b5: 0xb2c1,\n\t0x15b6: 0xb2c1, 0x15b7: 0xb2c1, 0x15b8: 0xb2c1, 0x15b9: 0xb2d9, 0x15ba: 0xb2d9, 0x15bb: 0xb2d9,\n\t0x15bc: 0xb2d9, 0x15bd: 0xb2f1, 0x15be: 0xb2f1, 0x15bf: 0xb2f1,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0xb2f1, 0x15c1: 0xb309, 0x15c2: 0xb309, 0x15c3: 0xb309, 0x15c4: 0xb309, 0x15c5: 0xb321,\n\t0x15c6: 0xb321, 0x15c7: 0xb321, 0x15c8: 0xb321, 0x15c9: 0xb339, 0x15ca: 0xb339, 0x15cb: 0xb339,\n\t0x15cc: 0xb339, 0x15cd: 0xb351, 0x15ce: 0xb351, 0x15cf: 0xb351, 0x15d0: 0xb351, 0x15d1: 0xb369,\n\t0x15d2: 0xb369, 0x15d3: 0xb369, 0x15d4: 0xb369, 0x15d5: 0xb381, 0x15d6: 0xb381, 0x15d7: 0xb381,\n\t0x15d8: 0xb381, 0x15d9: 0xb399, 0x15da: 0xb399, 0x15db: 0xb399, 0x15dc: 0xb399, 0x15dd: 0xb3b1,\n\t0x15de: 0xb3b1, 0x15df: 0xb3b1, 0x15e0: 0xb3b1, 0x15e1: 0xb3c9, 0x15e2: 0xb3c9, 0x15e3: 0xb3c9,\n\t0x15e4: 0xb3c9, 0x15e5: 0xb3e1, 0x15e6: 0xb3e1, 0x15e7: 0xb3e1, 0x15e8: 0xb3e1, 0x15e9: 0xb3f9,\n\t0x15ea: 0xb3f9, 0x15eb: 0xb3f9, 0x15ec: 0xb3f9, 0x15ed: 0xb411, 0x15ee: 0xb411, 0x15ef: 0x7ab1,\n\t0x15f0: 0x7ab1, 0x15f1: 0xb429, 0x15f2: 0xb429, 0x15f3: 0xb429, 0x15f4: 0xb429, 0x15f5: 0xb441,\n\t0x15f6: 0xb441, 0x15f7: 0xb469, 0x15f8: 0xb469, 0x15f9: 0xb491, 0x15fa: 0xb491, 0x15fb: 0xb4b9,\n\t0x15fc: 0xb4b9, 0x15fd: 0x0040, 0x15fe: 0x0040, 0x15ff: 0x03c0,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x0040, 0x1601: 0xaefa, 0x1602: 0xb4e2, 0x1603: 0xaf6a, 0x1604: 0xafda, 0x1605: 0xafea,\n\t0x1606: 0xaf7a, 0x1607: 0xb4f2, 0x1608: 0x1fd2, 0x1609: 0x1fe2, 0x160a: 0xaf8a, 0x160b: 0x1fb2,\n\t0x160c: 0xaeda, 0x160d: 0xaf99, 0x160e: 0x29d1, 0x160f: 0xb502, 0x1610: 0x1f41, 0x1611: 0x00c9,\n\t0x1612: 0x0069, 0x1613: 0x0079, 0x1614: 0x1f51, 0x1615: 0x1f61, 0x1616: 0x1f71, 0x1617: 0x1f81,\n\t0x1618: 0x1f91, 0x1619: 0x1fa1, 0x161a: 0xaeea, 0x161b: 0x03c2, 0x161c: 0xafaa, 0x161d: 0x1fc2,\n\t0x161e: 0xafba, 0x161f: 0xaf0a, 0x1620: 0xaffa, 0x1621: 0x0039, 0x1622: 0x0ee9, 0x1623: 0x1159,\n\t0x1624: 0x0ef9, 0x1625: 0x0f09, 0x1626: 0x1199, 0x1627: 0x0f31, 0x1628: 0x0249, 0x1629: 0x0f41,\n\t0x162a: 0x0259, 0x162b: 0x0f51, 0x162c: 0x0359, 0x162d: 0x0f61, 0x162e: 0x0f71, 0x162f: 0x00d9,\n\t0x1630: 0x0f99, 0x1631: 0x2039, 0x1632: 0x0269, 0x1633: 0x01d9, 0x1634: 0x0fa9, 0x1635: 0x0fb9,\n\t0x1636: 0x1089, 0x1637: 0x0279, 0x1638: 0x0369, 0x1639: 0x0289, 0x163a: 0x13d1, 0x163b: 0xaf4a,\n\t0x163c: 0xafca, 0x163d: 0xaf5a, 0x163e: 0xb512, 0x163f: 0xaf1a,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x1caa, 0x1641: 0x0039, 0x1642: 0x0ee9, 0x1643: 0x1159, 0x1644: 0x0ef9, 0x1645: 0x0f09,\n\t0x1646: 0x1199, 0x1647: 0x0f31, 0x1648: 0x0249, 0x1649: 0x0f41, 0x164a: 0x0259, 0x164b: 0x0f51,\n\t0x164c: 0x0359, 0x164d: 0x0f61, 0x164e: 0x0f71, 0x164f: 0x00d9, 0x1650: 0x0f99, 0x1651: 0x2039,\n\t0x1652: 0x0269, 0x1653: 0x01d9, 0x1654: 0x0fa9, 0x1655: 0x0fb9, 0x1656: 0x1089, 0x1657: 0x0279,\n\t0x1658: 0x0369, 0x1659: 0x0289, 0x165a: 0x13d1, 0x165b: 0xaf2a, 0x165c: 0xb522, 0x165d: 0xaf3a,\n\t0x165e: 0xb532, 0x165f: 0x80d5, 0x1660: 0x80f5, 0x1661: 0x29d1, 0x1662: 0x8115, 0x1663: 0x8115,\n\t0x1664: 0x8135, 0x1665: 0x8155, 0x1666: 0x8175, 0x1667: 0x8195, 0x1668: 0x81b5, 0x1669: 0x81d5,\n\t0x166a: 0x81f5, 0x166b: 0x8215, 0x166c: 0x8235, 0x166d: 0x8255, 0x166e: 0x8275, 0x166f: 0x8295,\n\t0x1670: 0x82b5, 0x1671: 0x82d5, 0x1672: 0x82f5, 0x1673: 0x8315, 0x1674: 0x8335, 0x1675: 0x8355,\n\t0x1676: 0x8375, 0x1677: 0x8395, 0x1678: 0x83b5, 0x1679: 0x83d5, 0x167a: 0x83f5, 0x167b: 0x8415,\n\t0x167c: 0x81b5, 0x167d: 0x8435, 0x167e: 0x8455, 0x167f: 0x8215,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x8475, 0x1681: 0x8495, 0x1682: 0x84b5, 0x1683: 0x84d5, 0x1684: 0x84f5, 0x1685: 0x8515,\n\t0x1686: 0x8535, 0x1687: 0x8555, 0x1688: 0x84d5, 0x1689: 0x8575, 0x168a: 0x84d5, 0x168b: 0x8595,\n\t0x168c: 0x8595, 0x168d: 0x85b5, 0x168e: 0x85b5, 0x168f: 0x85d5, 0x1690: 0x8515, 0x1691: 0x85f5,\n\t0x1692: 0x8615, 0x1693: 0x85f5, 0x1694: 0x8635, 0x1695: 0x8615, 0x1696: 0x8655, 0x1697: 0x8655,\n\t0x1698: 0x8675, 0x1699: 0x8675, 0x169a: 0x8695, 0x169b: 0x8695, 0x169c: 0x8615, 0x169d: 0x8115,\n\t0x169e: 0x86b5, 0x169f: 0x86d5, 0x16a0: 0x0040, 0x16a1: 0x86f5, 0x16a2: 0x8715, 0x16a3: 0x8735,\n\t0x16a4: 0x8755, 0x16a5: 0x8735, 0x16a6: 0x8775, 0x16a7: 0x8795, 0x16a8: 0x87b5, 0x16a9: 0x87b5,\n\t0x16aa: 0x87d5, 0x16ab: 0x87d5, 0x16ac: 0x87f5, 0x16ad: 0x87f5, 0x16ae: 0x87d5, 0x16af: 0x87d5,\n\t0x16b0: 0x8815, 0x16b1: 0x8835, 0x16b2: 0x8855, 0x16b3: 0x8875, 0x16b4: 0x8895, 0x16b5: 0x88b5,\n\t0x16b6: 0x88b5, 0x16b7: 0x88b5, 0x16b8: 0x88d5, 0x16b9: 0x88d5, 0x16ba: 0x88d5, 0x16bb: 0x88d5,\n\t0x16bc: 0x87b5, 0x16bd: 0x87b5, 0x16be: 0x87b5, 0x16bf: 0x0040,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x0040, 0x16c1: 0x0040, 0x16c2: 0x8715, 0x16c3: 0x86f5, 0x16c4: 0x88f5, 0x16c5: 0x86f5,\n\t0x16c6: 0x8715, 0x16c7: 0x86f5, 0x16c8: 0x0040, 0x16c9: 0x0040, 0x16ca: 0x8915, 0x16cb: 0x8715,\n\t0x16cc: 0x8935, 0x16cd: 0x88f5, 0x16ce: 0x8935, 0x16cf: 0x8715, 0x16d0: 0x0040, 0x16d1: 0x0040,\n\t0x16d2: 0x8955, 0x16d3: 0x8975, 0x16d4: 0x8875, 0x16d5: 0x8935, 0x16d6: 0x88f5, 0x16d7: 0x8935,\n\t0x16d8: 0x0040, 0x16d9: 0x0040, 0x16da: 0x8995, 0x16db: 0x89b5, 0x16dc: 0x8995, 0x16dd: 0x0040,\n\t0x16de: 0x0040, 0x16df: 0x0040, 0x16e0: 0xb541, 0x16e1: 0xb559, 0x16e2: 0xb571, 0x16e3: 0x89d6,\n\t0x16e4: 0xb589, 0x16e5: 0xb5a1, 0x16e6: 0x89f5, 0x16e7: 0x0040, 0x16e8: 0x8a15, 0x16e9: 0x8a35,\n\t0x16ea: 0x8a55, 0x16eb: 0x8a35, 0x16ec: 0x8a75, 0x16ed: 0x8a95, 0x16ee: 0x8ab5, 0x16ef: 0x0040,\n\t0x16f0: 0x0040, 0x16f1: 0x0040, 0x16f2: 0x0040, 0x16f3: 0x0040, 0x16f4: 0x0040, 0x16f5: 0x0040,\n\t0x16f6: 0x0040, 0x16f7: 0x0040, 0x16f8: 0x0040, 0x16f9: 0x0340, 0x16fa: 0x0340, 0x16fb: 0x0340,\n\t0x16fc: 0x0040, 0x16fd: 0x0040, 0x16fe: 0x0040, 0x16ff: 0x0040,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0a08, 0x1701: 0x0a08, 0x1702: 0x0a08, 0x1703: 0x0a08, 0x1704: 0x0a08, 0x1705: 0x0c08,\n\t0x1706: 0x0808, 0x1707: 0x0c08, 0x1708: 0x0818, 0x1709: 0x0c08, 0x170a: 0x0c08, 0x170b: 0x0808,\n\t0x170c: 0x0808, 0x170d: 0x0908, 0x170e: 0x0c08, 0x170f: 0x0c08, 0x1710: 0x0c08, 0x1711: 0x0c08,\n\t0x1712: 0x0c08, 0x1713: 0x0a08, 0x1714: 0x0a08, 0x1715: 0x0a08, 0x1716: 0x0a08, 0x1717: 0x0908,\n\t0x1718: 0x0a08, 0x1719: 0x0a08, 0x171a: 0x0a08, 0x171b: 0x0a08, 0x171c: 0x0a08, 0x171d: 0x0c08,\n\t0x171e: 0x0a08, 0x171f: 0x0a08, 0x1720: 0x0a08, 0x1721: 0x0c08, 0x1722: 0x0808, 0x1723: 0x0808,\n\t0x1724: 0x0c08, 0x1725: 0x3308, 0x1726: 0x3308, 0x1727: 0x0040, 0x1728: 0x0040, 0x1729: 0x0040,\n\t0x172a: 0x0040, 0x172b: 0x0a18, 0x172c: 0x0a18, 0x172d: 0x0a18, 0x172e: 0x0a18, 0x172f: 0x0c18,\n\t0x1730: 0x0818, 0x1731: 0x0818, 0x1732: 0x0818, 0x1733: 0x0818, 0x1734: 0x0818, 0x1735: 0x0818,\n\t0x1736: 0x0818, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0040, 0x173a: 0x0040, 0x173b: 0x0040,\n\t0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x0a08, 0x1741: 0x0c08, 0x1742: 0x0a08, 0x1743: 0x0c08, 0x1744: 0x0c08, 0x1745: 0x0c08,\n\t0x1746: 0x0a08, 0x1747: 0x0a08, 0x1748: 0x0a08, 0x1749: 0x0c08, 0x174a: 0x0a08, 0x174b: 0x0a08,\n\t0x174c: 0x0c08, 0x174d: 0x0a08, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0a08, 0x1751: 0x0c08,\n\t0x1752: 0x0040, 0x1753: 0x0040, 0x1754: 0x0040, 0x1755: 0x0040, 0x1756: 0x0040, 0x1757: 0x0040,\n\t0x1758: 0x0040, 0x1759: 0x0818, 0x175a: 0x0818, 0x175b: 0x0818, 0x175c: 0x0818, 0x175d: 0x0040,\n\t0x175e: 0x0040, 0x175f: 0x0040, 0x1760: 0x0040, 0x1761: 0x0040, 0x1762: 0x0040, 0x1763: 0x0040,\n\t0x1764: 0x0040, 0x1765: 0x0040, 0x1766: 0x0040, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0c18,\n\t0x176a: 0x0c18, 0x176b: 0x0c18, 0x176c: 0x0c18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0818,\n\t0x1770: 0x0040, 0x1771: 0x0040, 0x1772: 0x0040, 0x1773: 0x0040, 0x1774: 0x0040, 0x1775: 0x0040,\n\t0x1776: 0x0040, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040,\n\t0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x3308, 0x1781: 0x3308, 0x1782: 0x3008, 0x1783: 0x3008, 0x1784: 0x0040, 0x1785: 0x0008,\n\t0x1786: 0x0008, 0x1787: 0x0008, 0x1788: 0x0008, 0x1789: 0x0008, 0x178a: 0x0008, 0x178b: 0x0008,\n\t0x178c: 0x0008, 0x178d: 0x0040, 0x178e: 0x0040, 0x178f: 0x0008, 0x1790: 0x0008, 0x1791: 0x0040,\n\t0x1792: 0x0040, 0x1793: 0x0008, 0x1794: 0x0008, 0x1795: 0x0008, 0x1796: 0x0008, 0x1797: 0x0008,\n\t0x1798: 0x0008, 0x1799: 0x0008, 0x179a: 0x0008, 0x179b: 0x0008, 0x179c: 0x0008, 0x179d: 0x0008,\n\t0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x0008, 0x17a3: 0x0008,\n\t0x17a4: 0x0008, 0x17a5: 0x0008, 0x17a6: 0x0008, 0x17a7: 0x0008, 0x17a8: 0x0008, 0x17a9: 0x0040,\n\t0x17aa: 0x0008, 0x17ab: 0x0008, 0x17ac: 0x0008, 0x17ad: 0x0008, 0x17ae: 0x0008, 0x17af: 0x0008,\n\t0x17b0: 0x0008, 0x17b1: 0x0040, 0x17b2: 0x0008, 0x17b3: 0x0008, 0x17b4: 0x0040, 0x17b5: 0x0008,\n\t0x17b6: 0x0008, 0x17b7: 0x0008, 0x17b8: 0x0008, 0x17b9: 0x0008, 0x17ba: 0x0040, 0x17bb: 0x0040,\n\t0x17bc: 0x3308, 0x17bd: 0x0008, 0x17be: 0x3008, 0x17bf: 0x3008,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x3308, 0x17c1: 0x3008, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x3008, 0x17c5: 0x0040,\n\t0x17c6: 0x0040, 0x17c7: 0x3008, 0x17c8: 0x3008, 0x17c9: 0x0040, 0x17ca: 0x0040, 0x17cb: 0x3008,\n\t0x17cc: 0x3008, 0x17cd: 0x3808, 0x17ce: 0x0040, 0x17cf: 0x0040, 0x17d0: 0x0008, 0x17d1: 0x0040,\n\t0x17d2: 0x0040, 0x17d3: 0x0040, 0x17d4: 0x0040, 0x17d5: 0x0040, 0x17d6: 0x0040, 0x17d7: 0x3008,\n\t0x17d8: 0x0040, 0x17d9: 0x0040, 0x17da: 0x0040, 0x17db: 0x0040, 0x17dc: 0x0040, 0x17dd: 0x0008,\n\t0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x3008, 0x17e3: 0x3008,\n\t0x17e4: 0x0040, 0x17e5: 0x0040, 0x17e6: 0x3308, 0x17e7: 0x3308, 0x17e8: 0x3308, 0x17e9: 0x3308,\n\t0x17ea: 0x3308, 0x17eb: 0x3308, 0x17ec: 0x3308, 0x17ed: 0x0040, 0x17ee: 0x0040, 0x17ef: 0x0040,\n\t0x17f0: 0x3308, 0x17f1: 0x3308, 0x17f2: 0x3308, 0x17f3: 0x3308, 0x17f4: 0x3308, 0x17f5: 0x0040,\n\t0x17f6: 0x0040, 0x17f7: 0x0040, 0x17f8: 0x0040, 0x17f9: 0x0040, 0x17fa: 0x0040, 0x17fb: 0x0040,\n\t0x17fc: 0x0040, 0x17fd: 0x0040, 0x17fe: 0x0040, 0x17ff: 0x0040,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x0039, 0x1801: 0x0ee9, 0x1802: 0x1159, 0x1803: 0x0ef9, 0x1804: 0x0f09, 0x1805: 0x1199,\n\t0x1806: 0x0f31, 0x1807: 0x0249, 0x1808: 0x0f41, 0x1809: 0x0259, 0x180a: 0x0f51, 0x180b: 0x0359,\n\t0x180c: 0x0f61, 0x180d: 0x0f71, 0x180e: 0x00d9, 0x180f: 0x0f99, 0x1810: 0x2039, 0x1811: 0x0269,\n\t0x1812: 0x01d9, 0x1813: 0x0fa9, 0x1814: 0x0fb9, 0x1815: 0x1089, 0x1816: 0x0279, 0x1817: 0x0369,\n\t0x1818: 0x0289, 0x1819: 0x13d1, 0x181a: 0x0039, 0x181b: 0x0ee9, 0x181c: 0x1159, 0x181d: 0x0ef9,\n\t0x181e: 0x0f09, 0x181f: 0x1199, 0x1820: 0x0f31, 0x1821: 0x0249, 0x1822: 0x0f41, 0x1823: 0x0259,\n\t0x1824: 0x0f51, 0x1825: 0x0359, 0x1826: 0x0f61, 0x1827: 0x0f71, 0x1828: 0x00d9, 0x1829: 0x0f99,\n\t0x182a: 0x2039, 0x182b: 0x0269, 0x182c: 0x01d9, 0x182d: 0x0fa9, 0x182e: 0x0fb9, 0x182f: 0x1089,\n\t0x1830: 0x0279, 0x1831: 0x0369, 0x1832: 0x0289, 0x1833: 0x13d1, 0x1834: 0x0039, 0x1835: 0x0ee9,\n\t0x1836: 0x1159, 0x1837: 0x0ef9, 0x1838: 0x0f09, 0x1839: 0x1199, 0x183a: 0x0f31, 0x183b: 0x0249,\n\t0x183c: 0x0f41, 0x183d: 0x0259, 0x183e: 0x0f51, 0x183f: 0x0359,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x0f61, 0x1841: 0x0f71, 0x1842: 0x00d9, 0x1843: 0x0f99, 0x1844: 0x2039, 0x1845: 0x0269,\n\t0x1846: 0x01d9, 0x1847: 0x0fa9, 0x1848: 0x0fb9, 0x1849: 0x1089, 0x184a: 0x0279, 0x184b: 0x0369,\n\t0x184c: 0x0289, 0x184d: 0x13d1, 0x184e: 0x0039, 0x184f: 0x0ee9, 0x1850: 0x1159, 0x1851: 0x0ef9,\n\t0x1852: 0x0f09, 0x1853: 0x1199, 0x1854: 0x0f31, 0x1855: 0x0040, 0x1856: 0x0f41, 0x1857: 0x0259,\n\t0x1858: 0x0f51, 0x1859: 0x0359, 0x185a: 0x0f61, 0x185b: 0x0f71, 0x185c: 0x00d9, 0x185d: 0x0f99,\n\t0x185e: 0x2039, 0x185f: 0x0269, 0x1860: 0x01d9, 0x1861: 0x0fa9, 0x1862: 0x0fb9, 0x1863: 0x1089,\n\t0x1864: 0x0279, 0x1865: 0x0369, 0x1866: 0x0289, 0x1867: 0x13d1, 0x1868: 0x0039, 0x1869: 0x0ee9,\n\t0x186a: 0x1159, 0x186b: 0x0ef9, 0x186c: 0x0f09, 0x186d: 0x1199, 0x186e: 0x0f31, 0x186f: 0x0249,\n\t0x1870: 0x0f41, 0x1871: 0x0259, 0x1872: 0x0f51, 0x1873: 0x0359, 0x1874: 0x0f61, 0x1875: 0x0f71,\n\t0x1876: 0x00d9, 0x1877: 0x0f99, 0x1878: 0x2039, 0x1879: 0x0269, 0x187a: 0x01d9, 0x187b: 0x0fa9,\n\t0x187c: 0x0fb9, 0x187d: 0x1089, 0x187e: 0x0279, 0x187f: 0x0369,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x0289, 0x1881: 0x13d1, 0x1882: 0x0039, 0x1883: 0x0ee9, 0x1884: 0x1159, 0x1885: 0x0ef9,\n\t0x1886: 0x0f09, 0x1887: 0x1199, 0x1888: 0x0f31, 0x1889: 0x0249, 0x188a: 0x0f41, 0x188b: 0x0259,\n\t0x188c: 0x0f51, 0x188d: 0x0359, 0x188e: 0x0f61, 0x188f: 0x0f71, 0x1890: 0x00d9, 0x1891: 0x0f99,\n\t0x1892: 0x2039, 0x1893: 0x0269, 0x1894: 0x01d9, 0x1895: 0x0fa9, 0x1896: 0x0fb9, 0x1897: 0x1089,\n\t0x1898: 0x0279, 0x1899: 0x0369, 0x189a: 0x0289, 0x189b: 0x13d1, 0x189c: 0x0039, 0x189d: 0x0040,\n\t0x189e: 0x1159, 0x189f: 0x0ef9, 0x18a0: 0x0040, 0x18a1: 0x0040, 0x18a2: 0x0f31, 0x18a3: 0x0040,\n\t0x18a4: 0x0040, 0x18a5: 0x0259, 0x18a6: 0x0f51, 0x18a7: 0x0040, 0x18a8: 0x0040, 0x18a9: 0x0f71,\n\t0x18aa: 0x00d9, 0x18ab: 0x0f99, 0x18ac: 0x2039, 0x18ad: 0x0040, 0x18ae: 0x01d9, 0x18af: 0x0fa9,\n\t0x18b0: 0x0fb9, 0x18b1: 0x1089, 0x18b2: 0x0279, 0x18b3: 0x0369, 0x18b4: 0x0289, 0x18b5: 0x13d1,\n\t0x18b6: 0x0039, 0x18b7: 0x0ee9, 0x18b8: 0x1159, 0x18b9: 0x0ef9, 0x18ba: 0x0040, 0x18bb: 0x1199,\n\t0x18bc: 0x0040, 0x18bd: 0x0249, 0x18be: 0x0f41, 0x18bf: 0x0259,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x0f51, 0x18c1: 0x0359, 0x18c2: 0x0f61, 0x18c3: 0x0f71, 0x18c4: 0x0040, 0x18c5: 0x0f99,\n\t0x18c6: 0x2039, 0x18c7: 0x0269, 0x18c8: 0x01d9, 0x18c9: 0x0fa9, 0x18ca: 0x0fb9, 0x18cb: 0x1089,\n\t0x18cc: 0x0279, 0x18cd: 0x0369, 0x18ce: 0x0289, 0x18cf: 0x13d1, 0x18d0: 0x0039, 0x18d1: 0x0ee9,\n\t0x18d2: 0x1159, 0x18d3: 0x0ef9, 0x18d4: 0x0f09, 0x18d5: 0x1199, 0x18d6: 0x0f31, 0x18d7: 0x0249,\n\t0x18d8: 0x0f41, 0x18d9: 0x0259, 0x18da: 0x0f51, 0x18db: 0x0359, 0x18dc: 0x0f61, 0x18dd: 0x0f71,\n\t0x18de: 0x00d9, 0x18df: 0x0f99, 0x18e0: 0x2039, 0x18e1: 0x0269, 0x18e2: 0x01d9, 0x18e3: 0x0fa9,\n\t0x18e4: 0x0fb9, 0x18e5: 0x1089, 0x18e6: 0x0279, 0x18e7: 0x0369, 0x18e8: 0x0289, 0x18e9: 0x13d1,\n\t0x18ea: 0x0039, 0x18eb: 0x0ee9, 0x18ec: 0x1159, 0x18ed: 0x0ef9, 0x18ee: 0x0f09, 0x18ef: 0x1199,\n\t0x18f0: 0x0f31, 0x18f1: 0x0249, 0x18f2: 0x0f41, 0x18f3: 0x0259, 0x18f4: 0x0f51, 0x18f5: 0x0359,\n\t0x18f6: 0x0f61, 0x18f7: 0x0f71, 0x18f8: 0x00d9, 0x18f9: 0x0f99, 0x18fa: 0x2039, 0x18fb: 0x0269,\n\t0x18fc: 0x01d9, 0x18fd: 0x0fa9, 0x18fe: 0x0fb9, 0x18ff: 0x1089,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x0279, 0x1901: 0x0369, 0x1902: 0x0289, 0x1903: 0x13d1, 0x1904: 0x0039, 0x1905: 0x0ee9,\n\t0x1906: 0x0040, 0x1907: 0x0ef9, 0x1908: 0x0f09, 0x1909: 0x1199, 0x190a: 0x0f31, 0x190b: 0x0040,\n\t0x190c: 0x0040, 0x190d: 0x0259, 0x190e: 0x0f51, 0x190f: 0x0359, 0x1910: 0x0f61, 0x1911: 0x0f71,\n\t0x1912: 0x00d9, 0x1913: 0x0f99, 0x1914: 0x2039, 0x1915: 0x0040, 0x1916: 0x01d9, 0x1917: 0x0fa9,\n\t0x1918: 0x0fb9, 0x1919: 0x1089, 0x191a: 0x0279, 0x191b: 0x0369, 0x191c: 0x0289, 0x191d: 0x0040,\n\t0x191e: 0x0039, 0x191f: 0x0ee9, 0x1920: 0x1159, 0x1921: 0x0ef9, 0x1922: 0x0f09, 0x1923: 0x1199,\n\t0x1924: 0x0f31, 0x1925: 0x0249, 0x1926: 0x0f41, 0x1927: 0x0259, 0x1928: 0x0f51, 0x1929: 0x0359,\n\t0x192a: 0x0f61, 0x192b: 0x0f71, 0x192c: 0x00d9, 0x192d: 0x0f99, 0x192e: 0x2039, 0x192f: 0x0269,\n\t0x1930: 0x01d9, 0x1931: 0x0fa9, 0x1932: 0x0fb9, 0x1933: 0x1089, 0x1934: 0x0279, 0x1935: 0x0369,\n\t0x1936: 0x0289, 0x1937: 0x13d1, 0x1938: 0x0039, 0x1939: 0x0ee9, 0x193a: 0x0040, 0x193b: 0x0ef9,\n\t0x193c: 0x0f09, 0x193d: 0x1199, 0x193e: 0x0f31, 0x193f: 0x0040,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x0f41, 0x1941: 0x0259, 0x1942: 0x0f51, 0x1943: 0x0359, 0x1944: 0x0f61, 0x1945: 0x0040,\n\t0x1946: 0x00d9, 0x1947: 0x0040, 0x1948: 0x0040, 0x1949: 0x0040, 0x194a: 0x01d9, 0x194b: 0x0fa9,\n\t0x194c: 0x0fb9, 0x194d: 0x1089, 0x194e: 0x0279, 0x194f: 0x0369, 0x1950: 0x0289, 0x1951: 0x0040,\n\t0x1952: 0x0039, 0x1953: 0x0ee9, 0x1954: 0x1159, 0x1955: 0x0ef9, 0x1956: 0x0f09, 0x1957: 0x1199,\n\t0x1958: 0x0f31, 0x1959: 0x0249, 0x195a: 0x0f41, 0x195b: 0x0259, 0x195c: 0x0f51, 0x195d: 0x0359,\n\t0x195e: 0x0f61, 0x195f: 0x0f71, 0x1960: 0x00d9, 0x1961: 0x0f99, 0x1962: 0x2039, 0x1963: 0x0269,\n\t0x1964: 0x01d9, 0x1965: 0x0fa9, 0x1966: 0x0fb9, 0x1967: 0x1089, 0x1968: 0x0279, 0x1969: 0x0369,\n\t0x196a: 0x0289, 0x196b: 0x13d1, 0x196c: 0x0039, 0x196d: 0x0ee9, 0x196e: 0x1159, 0x196f: 0x0ef9,\n\t0x1970: 0x0f09, 0x1971: 0x1199, 0x1972: 0x0f31, 0x1973: 0x0249, 0x1974: 0x0f41, 0x1975: 0x0259,\n\t0x1976: 0x0f51, 0x1977: 0x0359, 0x1978: 0x0f61, 0x1979: 0x0f71, 0x197a: 0x00d9, 0x197b: 0x0f99,\n\t0x197c: 0x2039, 0x197d: 0x0269, 0x197e: 0x01d9, 0x197f: 0x0fa9,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x0fb9, 0x1981: 0x1089, 0x1982: 0x0279, 0x1983: 0x0369, 0x1984: 0x0289, 0x1985: 0x13d1,\n\t0x1986: 0x0039, 0x1987: 0x0ee9, 0x1988: 0x1159, 0x1989: 0x0ef9, 0x198a: 0x0f09, 0x198b: 0x1199,\n\t0x198c: 0x0f31, 0x198d: 0x0249, 0x198e: 0x0f41, 0x198f: 0x0259, 0x1990: 0x0f51, 0x1991: 0x0359,\n\t0x1992: 0x0f61, 0x1993: 0x0f71, 0x1994: 0x00d9, 0x1995: 0x0f99, 0x1996: 0x2039, 0x1997: 0x0269,\n\t0x1998: 0x01d9, 0x1999: 0x0fa9, 0x199a: 0x0fb9, 0x199b: 0x1089, 0x199c: 0x0279, 0x199d: 0x0369,\n\t0x199e: 0x0289, 0x199f: 0x13d1, 0x19a0: 0x0039, 0x19a1: 0x0ee9, 0x19a2: 0x1159, 0x19a3: 0x0ef9,\n\t0x19a4: 0x0f09, 0x19a5: 0x1199, 0x19a6: 0x0f31, 0x19a7: 0x0249, 0x19a8: 0x0f41, 0x19a9: 0x0259,\n\t0x19aa: 0x0f51, 0x19ab: 0x0359, 0x19ac: 0x0f61, 0x19ad: 0x0f71, 0x19ae: 0x00d9, 0x19af: 0x0f99,\n\t0x19b0: 0x2039, 0x19b1: 0x0269, 0x19b2: 0x01d9, 0x19b3: 0x0fa9, 0x19b4: 0x0fb9, 0x19b5: 0x1089,\n\t0x19b6: 0x0279, 0x19b7: 0x0369, 0x19b8: 0x0289, 0x19b9: 0x13d1, 0x19ba: 0x0039, 0x19bb: 0x0ee9,\n\t0x19bc: 0x1159, 0x19bd: 0x0ef9, 0x19be: 0x0f09, 0x19bf: 0x1199,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x0f31, 0x19c1: 0x0249, 0x19c2: 0x0f41, 0x19c3: 0x0259, 0x19c4: 0x0f51, 0x19c5: 0x0359,\n\t0x19c6: 0x0f61, 0x19c7: 0x0f71, 0x19c8: 0x00d9, 0x19c9: 0x0f99, 0x19ca: 0x2039, 0x19cb: 0x0269,\n\t0x19cc: 0x01d9, 0x19cd: 0x0fa9, 0x19ce: 0x0fb9, 0x19cf: 0x1089, 0x19d0: 0x0279, 0x19d1: 0x0369,\n\t0x19d2: 0x0289, 0x19d3: 0x13d1, 0x19d4: 0x0039, 0x19d5: 0x0ee9, 0x19d6: 0x1159, 0x19d7: 0x0ef9,\n\t0x19d8: 0x0f09, 0x19d9: 0x1199, 0x19da: 0x0f31, 0x19db: 0x0249, 0x19dc: 0x0f41, 0x19dd: 0x0259,\n\t0x19de: 0x0f51, 0x19df: 0x0359, 0x19e0: 0x0f61, 0x19e1: 0x0f71, 0x19e2: 0x00d9, 0x19e3: 0x0f99,\n\t0x19e4: 0x2039, 0x19e5: 0x0269, 0x19e6: 0x01d9, 0x19e7: 0x0fa9, 0x19e8: 0x0fb9, 0x19e9: 0x1089,\n\t0x19ea: 0x0279, 0x19eb: 0x0369, 0x19ec: 0x0289, 0x19ed: 0x13d1, 0x19ee: 0x0039, 0x19ef: 0x0ee9,\n\t0x19f0: 0x1159, 0x19f1: 0x0ef9, 0x19f2: 0x0f09, 0x19f3: 0x1199, 0x19f4: 0x0f31, 0x19f5: 0x0249,\n\t0x19f6: 0x0f41, 0x19f7: 0x0259, 0x19f8: 0x0f51, 0x19f9: 0x0359, 0x19fa: 0x0f61, 0x19fb: 0x0f71,\n\t0x19fc: 0x00d9, 0x19fd: 0x0f99, 0x19fe: 0x2039, 0x19ff: 0x0269,\n\t// Block 0x68, offset 0x1a00\n\t0x1a00: 0x01d9, 0x1a01: 0x0fa9, 0x1a02: 0x0fb9, 0x1a03: 0x1089, 0x1a04: 0x0279, 0x1a05: 0x0369,\n\t0x1a06: 0x0289, 0x1a07: 0x13d1, 0x1a08: 0x0039, 0x1a09: 0x0ee9, 0x1a0a: 0x1159, 0x1a0b: 0x0ef9,\n\t0x1a0c: 0x0f09, 0x1a0d: 0x1199, 0x1a0e: 0x0f31, 0x1a0f: 0x0249, 0x1a10: 0x0f41, 0x1a11: 0x0259,\n\t0x1a12: 0x0f51, 0x1a13: 0x0359, 0x1a14: 0x0f61, 0x1a15: 0x0f71, 0x1a16: 0x00d9, 0x1a17: 0x0f99,\n\t0x1a18: 0x2039, 0x1a19: 0x0269, 0x1a1a: 0x01d9, 0x1a1b: 0x0fa9, 0x1a1c: 0x0fb9, 0x1a1d: 0x1089,\n\t0x1a1e: 0x0279, 0x1a1f: 0x0369, 0x1a20: 0x0289, 0x1a21: 0x13d1, 0x1a22: 0x0039, 0x1a23: 0x0ee9,\n\t0x1a24: 0x1159, 0x1a25: 0x0ef9, 0x1a26: 0x0f09, 0x1a27: 0x1199, 0x1a28: 0x0f31, 0x1a29: 0x0249,\n\t0x1a2a: 0x0f41, 0x1a2b: 0x0259, 0x1a2c: 0x0f51, 0x1a2d: 0x0359, 0x1a2e: 0x0f61, 0x1a2f: 0x0f71,\n\t0x1a30: 0x00d9, 0x1a31: 0x0f99, 0x1a32: 0x2039, 0x1a33: 0x0269, 0x1a34: 0x01d9, 0x1a35: 0x0fa9,\n\t0x1a36: 0x0fb9, 0x1a37: 0x1089, 0x1a38: 0x0279, 0x1a39: 0x0369, 0x1a3a: 0x0289, 0x1a3b: 0x13d1,\n\t0x1a3c: 0x0039, 0x1a3d: 0x0ee9, 0x1a3e: 0x1159, 0x1a3f: 0x0ef9,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x0f09, 0x1a41: 0x1199, 0x1a42: 0x0f31, 0x1a43: 0x0249, 0x1a44: 0x0f41, 0x1a45: 0x0259,\n\t0x1a46: 0x0f51, 0x1a47: 0x0359, 0x1a48: 0x0f61, 0x1a49: 0x0f71, 0x1a4a: 0x00d9, 0x1a4b: 0x0f99,\n\t0x1a4c: 0x2039, 0x1a4d: 0x0269, 0x1a4e: 0x01d9, 0x1a4f: 0x0fa9, 0x1a50: 0x0fb9, 0x1a51: 0x1089,\n\t0x1a52: 0x0279, 0x1a53: 0x0369, 0x1a54: 0x0289, 0x1a55: 0x13d1, 0x1a56: 0x0039, 0x1a57: 0x0ee9,\n\t0x1a58: 0x1159, 0x1a59: 0x0ef9, 0x1a5a: 0x0f09, 0x1a5b: 0x1199, 0x1a5c: 0x0f31, 0x1a5d: 0x0249,\n\t0x1a5e: 0x0f41, 0x1a5f: 0x0259, 0x1a60: 0x0f51, 0x1a61: 0x0359, 0x1a62: 0x0f61, 0x1a63: 0x0f71,\n\t0x1a64: 0x00d9, 0x1a65: 0x0f99, 0x1a66: 0x2039, 0x1a67: 0x0269, 0x1a68: 0x01d9, 0x1a69: 0x0fa9,\n\t0x1a6a: 0x0fb9, 0x1a6b: 0x1089, 0x1a6c: 0x0279, 0x1a6d: 0x0369, 0x1a6e: 0x0289, 0x1a6f: 0x13d1,\n\t0x1a70: 0x0039, 0x1a71: 0x0ee9, 0x1a72: 0x1159, 0x1a73: 0x0ef9, 0x1a74: 0x0f09, 0x1a75: 0x1199,\n\t0x1a76: 0x0f31, 0x1a77: 0x0249, 0x1a78: 0x0f41, 0x1a79: 0x0259, 0x1a7a: 0x0f51, 0x1a7b: 0x0359,\n\t0x1a7c: 0x0f61, 0x1a7d: 0x0f71, 0x1a7e: 0x00d9, 0x1a7f: 0x0f99,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x2039, 0x1a81: 0x0269, 0x1a82: 0x01d9, 0x1a83: 0x0fa9, 0x1a84: 0x0fb9, 0x1a85: 0x1089,\n\t0x1a86: 0x0279, 0x1a87: 0x0369, 0x1a88: 0x0289, 0x1a89: 0x13d1, 0x1a8a: 0x0039, 0x1a8b: 0x0ee9,\n\t0x1a8c: 0x1159, 0x1a8d: 0x0ef9, 0x1a8e: 0x0f09, 0x1a8f: 0x1199, 0x1a90: 0x0f31, 0x1a91: 0x0249,\n\t0x1a92: 0x0f41, 0x1a93: 0x0259, 0x1a94: 0x0f51, 0x1a95: 0x0359, 0x1a96: 0x0f61, 0x1a97: 0x0f71,\n\t0x1a98: 0x00d9, 0x1a99: 0x0f99, 0x1a9a: 0x2039, 0x1a9b: 0x0269, 0x1a9c: 0x01d9, 0x1a9d: 0x0fa9,\n\t0x1a9e: 0x0fb9, 0x1a9f: 0x1089, 0x1aa0: 0x0279, 0x1aa1: 0x0369, 0x1aa2: 0x0289, 0x1aa3: 0x13d1,\n\t0x1aa4: 0xba81, 0x1aa5: 0xba99, 0x1aa6: 0x0040, 0x1aa7: 0x0040, 0x1aa8: 0xbab1, 0x1aa9: 0x1099,\n\t0x1aaa: 0x10b1, 0x1aab: 0x10c9, 0x1aac: 0xbac9, 0x1aad: 0xbae1, 0x1aae: 0xbaf9, 0x1aaf: 0x1429,\n\t0x1ab0: 0x1a31, 0x1ab1: 0xbb11, 0x1ab2: 0xbb29, 0x1ab3: 0xbb41, 0x1ab4: 0xbb59, 0x1ab5: 0xbb71,\n\t0x1ab6: 0xbb89, 0x1ab7: 0x2109, 0x1ab8: 0x1111, 0x1ab9: 0x1429, 0x1aba: 0xbba1, 0x1abb: 0xbbb9,\n\t0x1abc: 0xbbd1, 0x1abd: 0x10e1, 0x1abe: 0x10f9, 0x1abf: 0xbbe9,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x2079, 0x1ac1: 0xbc01, 0x1ac2: 0xbab1, 0x1ac3: 0x1099, 0x1ac4: 0x10b1, 0x1ac5: 0x10c9,\n\t0x1ac6: 0xbac9, 0x1ac7: 0xbae1, 0x1ac8: 0xbaf9, 0x1ac9: 0x1429, 0x1aca: 0x1a31, 0x1acb: 0xbb11,\n\t0x1acc: 0xbb29, 0x1acd: 0xbb41, 0x1ace: 0xbb59, 0x1acf: 0xbb71, 0x1ad0: 0xbb89, 0x1ad1: 0x2109,\n\t0x1ad2: 0x1111, 0x1ad3: 0xbba1, 0x1ad4: 0xbba1, 0x1ad5: 0xbbb9, 0x1ad6: 0xbbd1, 0x1ad7: 0x10e1,\n\t0x1ad8: 0x10f9, 0x1ad9: 0xbbe9, 0x1ada: 0x2079, 0x1adb: 0xbc21, 0x1adc: 0xbac9, 0x1add: 0x1429,\n\t0x1ade: 0xbb11, 0x1adf: 0x10e1, 0x1ae0: 0x1111, 0x1ae1: 0x2109, 0x1ae2: 0xbab1, 0x1ae3: 0x1099,\n\t0x1ae4: 0x10b1, 0x1ae5: 0x10c9, 0x1ae6: 0xbac9, 0x1ae7: 0xbae1, 0x1ae8: 0xbaf9, 0x1ae9: 0x1429,\n\t0x1aea: 0x1a31, 0x1aeb: 0xbb11, 0x1aec: 0xbb29, 0x1aed: 0xbb41, 0x1aee: 0xbb59, 0x1aef: 0xbb71,\n\t0x1af0: 0xbb89, 0x1af1: 0x2109, 0x1af2: 0x1111, 0x1af3: 0x1429, 0x1af4: 0xbba1, 0x1af5: 0xbbb9,\n\t0x1af6: 0xbbd1, 0x1af7: 0x10e1, 0x1af8: 0x10f9, 0x1af9: 0xbbe9, 0x1afa: 0x2079, 0x1afb: 0xbc01,\n\t0x1afc: 0xbab1, 0x1afd: 0x1099, 0x1afe: 0x10b1, 0x1aff: 0x10c9,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0xbac9, 0x1b01: 0xbae1, 0x1b02: 0xbaf9, 0x1b03: 0x1429, 0x1b04: 0x1a31, 0x1b05: 0xbb11,\n\t0x1b06: 0xbb29, 0x1b07: 0xbb41, 0x1b08: 0xbb59, 0x1b09: 0xbb71, 0x1b0a: 0xbb89, 0x1b0b: 0x2109,\n\t0x1b0c: 0x1111, 0x1b0d: 0xbba1, 0x1b0e: 0xbba1, 0x1b0f: 0xbbb9, 0x1b10: 0xbbd1, 0x1b11: 0x10e1,\n\t0x1b12: 0x10f9, 0x1b13: 0xbbe9, 0x1b14: 0x2079, 0x1b15: 0xbc21, 0x1b16: 0xbac9, 0x1b17: 0x1429,\n\t0x1b18: 0xbb11, 0x1b19: 0x10e1, 0x1b1a: 0x1111, 0x1b1b: 0x2109, 0x1b1c: 0xbab1, 0x1b1d: 0x1099,\n\t0x1b1e: 0x10b1, 0x1b1f: 0x10c9, 0x1b20: 0xbac9, 0x1b21: 0xbae1, 0x1b22: 0xbaf9, 0x1b23: 0x1429,\n\t0x1b24: 0x1a31, 0x1b25: 0xbb11, 0x1b26: 0xbb29, 0x1b27: 0xbb41, 0x1b28: 0xbb59, 0x1b29: 0xbb71,\n\t0x1b2a: 0xbb89, 0x1b2b: 0x2109, 0x1b2c: 0x1111, 0x1b2d: 0x1429, 0x1b2e: 0xbba1, 0x1b2f: 0xbbb9,\n\t0x1b30: 0xbbd1, 0x1b31: 0x10e1, 0x1b32: 0x10f9, 0x1b33: 0xbbe9, 0x1b34: 0x2079, 0x1b35: 0xbc01,\n\t0x1b36: 0xbab1, 0x1b37: 0x1099, 0x1b38: 0x10b1, 0x1b39: 0x10c9, 0x1b3a: 0xbac9, 0x1b3b: 0xbae1,\n\t0x1b3c: 0xbaf9, 0x1b3d: 0x1429, 0x1b3e: 0x1a31, 0x1b3f: 0xbb11,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0xbb29, 0x1b41: 0xbb41, 0x1b42: 0xbb59, 0x1b43: 0xbb71, 0x1b44: 0xbb89, 0x1b45: 0x2109,\n\t0x1b46: 0x1111, 0x1b47: 0xbba1, 0x1b48: 0xbba1, 0x1b49: 0xbbb9, 0x1b4a: 0xbbd1, 0x1b4b: 0x10e1,\n\t0x1b4c: 0x10f9, 0x1b4d: 0xbbe9, 0x1b4e: 0x2079, 0x1b4f: 0xbc21, 0x1b50: 0xbac9, 0x1b51: 0x1429,\n\t0x1b52: 0xbb11, 0x1b53: 0x10e1, 0x1b54: 0x1111, 0x1b55: 0x2109, 0x1b56: 0xbab1, 0x1b57: 0x1099,\n\t0x1b58: 0x10b1, 0x1b59: 0x10c9, 0x1b5a: 0xbac9, 0x1b5b: 0xbae1, 0x1b5c: 0xbaf9, 0x1b5d: 0x1429,\n\t0x1b5e: 0x1a31, 0x1b5f: 0xbb11, 0x1b60: 0xbb29, 0x1b61: 0xbb41, 0x1b62: 0xbb59, 0x1b63: 0xbb71,\n\t0x1b64: 0xbb89, 0x1b65: 0x2109, 0x1b66: 0x1111, 0x1b67: 0x1429, 0x1b68: 0xbba1, 0x1b69: 0xbbb9,\n\t0x1b6a: 0xbbd1, 0x1b6b: 0x10e1, 0x1b6c: 0x10f9, 0x1b6d: 0xbbe9, 0x1b6e: 0x2079, 0x1b6f: 0xbc01,\n\t0x1b70: 0xbab1, 0x1b71: 0x1099, 0x1b72: 0x10b1, 0x1b73: 0x10c9, 0x1b74: 0xbac9, 0x1b75: 0xbae1,\n\t0x1b76: 0xbaf9, 0x1b77: 0x1429, 0x1b78: 0x1a31, 0x1b79: 0xbb11, 0x1b7a: 0xbb29, 0x1b7b: 0xbb41,\n\t0x1b7c: 0xbb59, 0x1b7d: 0xbb71, 0x1b7e: 0xbb89, 0x1b7f: 0x2109,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x1111, 0x1b81: 0xbba1, 0x1b82: 0xbba1, 0x1b83: 0xbbb9, 0x1b84: 0xbbd1, 0x1b85: 0x10e1,\n\t0x1b86: 0x10f9, 0x1b87: 0xbbe9, 0x1b88: 0x2079, 0x1b89: 0xbc21, 0x1b8a: 0xbac9, 0x1b8b: 0x1429,\n\t0x1b8c: 0xbb11, 0x1b8d: 0x10e1, 0x1b8e: 0x1111, 0x1b8f: 0x2109, 0x1b90: 0xbab1, 0x1b91: 0x1099,\n\t0x1b92: 0x10b1, 0x1b93: 0x10c9, 0x1b94: 0xbac9, 0x1b95: 0xbae1, 0x1b96: 0xbaf9, 0x1b97: 0x1429,\n\t0x1b98: 0x1a31, 0x1b99: 0xbb11, 0x1b9a: 0xbb29, 0x1b9b: 0xbb41, 0x1b9c: 0xbb59, 0x1b9d: 0xbb71,\n\t0x1b9e: 0xbb89, 0x1b9f: 0x2109, 0x1ba0: 0x1111, 0x1ba1: 0x1429, 0x1ba2: 0xbba1, 0x1ba3: 0xbbb9,\n\t0x1ba4: 0xbbd1, 0x1ba5: 0x10e1, 0x1ba6: 0x10f9, 0x1ba7: 0xbbe9, 0x1ba8: 0x2079, 0x1ba9: 0xbc01,\n\t0x1baa: 0xbab1, 0x1bab: 0x1099, 0x1bac: 0x10b1, 0x1bad: 0x10c9, 0x1bae: 0xbac9, 0x1baf: 0xbae1,\n\t0x1bb0: 0xbaf9, 0x1bb1: 0x1429, 0x1bb2: 0x1a31, 0x1bb3: 0xbb11, 0x1bb4: 0xbb29, 0x1bb5: 0xbb41,\n\t0x1bb6: 0xbb59, 0x1bb7: 0xbb71, 0x1bb8: 0xbb89, 0x1bb9: 0x2109, 0x1bba: 0x1111, 0x1bbb: 0xbba1,\n\t0x1bbc: 0xbba1, 0x1bbd: 0xbbb9, 0x1bbe: 0xbbd1, 0x1bbf: 0x10e1,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x10f9, 0x1bc1: 0xbbe9, 0x1bc2: 0x2079, 0x1bc3: 0xbc21, 0x1bc4: 0xbac9, 0x1bc5: 0x1429,\n\t0x1bc6: 0xbb11, 0x1bc7: 0x10e1, 0x1bc8: 0x1111, 0x1bc9: 0x2109, 0x1bca: 0xbc41, 0x1bcb: 0xbc41,\n\t0x1bcc: 0x0040, 0x1bcd: 0x0040, 0x1bce: 0x1f41, 0x1bcf: 0x00c9, 0x1bd0: 0x0069, 0x1bd1: 0x0079,\n\t0x1bd2: 0x1f51, 0x1bd3: 0x1f61, 0x1bd4: 0x1f71, 0x1bd5: 0x1f81, 0x1bd6: 0x1f91, 0x1bd7: 0x1fa1,\n\t0x1bd8: 0x1f41, 0x1bd9: 0x00c9, 0x1bda: 0x0069, 0x1bdb: 0x0079, 0x1bdc: 0x1f51, 0x1bdd: 0x1f61,\n\t0x1bde: 0x1f71, 0x1bdf: 0x1f81, 0x1be0: 0x1f91, 0x1be1: 0x1fa1, 0x1be2: 0x1f41, 0x1be3: 0x00c9,\n\t0x1be4: 0x0069, 0x1be5: 0x0079, 0x1be6: 0x1f51, 0x1be7: 0x1f61, 0x1be8: 0x1f71, 0x1be9: 0x1f81,\n\t0x1bea: 0x1f91, 0x1beb: 0x1fa1, 0x1bec: 0x1f41, 0x1bed: 0x00c9, 0x1bee: 0x0069, 0x1bef: 0x0079,\n\t0x1bf0: 0x1f51, 0x1bf1: 0x1f61, 0x1bf2: 0x1f71, 0x1bf3: 0x1f81, 0x1bf4: 0x1f91, 0x1bf5: 0x1fa1,\n\t0x1bf6: 0x1f41, 0x1bf7: 0x00c9, 0x1bf8: 0x0069, 0x1bf9: 0x0079, 0x1bfa: 0x1f51, 0x1bfb: 0x1f61,\n\t0x1bfc: 0x1f71, 0x1bfd: 0x1f81, 0x1bfe: 0x1f91, 0x1bff: 0x1fa1,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0xe115, 0x1c01: 0xe115, 0x1c02: 0xe135, 0x1c03: 0xe135, 0x1c04: 0xe115, 0x1c05: 0xe115,\n\t0x1c06: 0xe175, 0x1c07: 0xe175, 0x1c08: 0xe115, 0x1c09: 0xe115, 0x1c0a: 0xe135, 0x1c0b: 0xe135,\n\t0x1c0c: 0xe115, 0x1c0d: 0xe115, 0x1c0e: 0xe1f5, 0x1c0f: 0xe1f5, 0x1c10: 0xe115, 0x1c11: 0xe115,\n\t0x1c12: 0xe135, 0x1c13: 0xe135, 0x1c14: 0xe115, 0x1c15: 0xe115, 0x1c16: 0xe175, 0x1c17: 0xe175,\n\t0x1c18: 0xe115, 0x1c19: 0xe115, 0x1c1a: 0xe135, 0x1c1b: 0xe135, 0x1c1c: 0xe115, 0x1c1d: 0xe115,\n\t0x1c1e: 0x8b05, 0x1c1f: 0x8b05, 0x1c20: 0x04b5, 0x1c21: 0x04b5, 0x1c22: 0x0a08, 0x1c23: 0x0a08,\n\t0x1c24: 0x0a08, 0x1c25: 0x0a08, 0x1c26: 0x0a08, 0x1c27: 0x0a08, 0x1c28: 0x0a08, 0x1c29: 0x0a08,\n\t0x1c2a: 0x0a08, 0x1c2b: 0x0a08, 0x1c2c: 0x0a08, 0x1c2d: 0x0a08, 0x1c2e: 0x0a08, 0x1c2f: 0x0a08,\n\t0x1c30: 0x0a08, 0x1c31: 0x0a08, 0x1c32: 0x0a08, 0x1c33: 0x0a08, 0x1c34: 0x0a08, 0x1c35: 0x0a08,\n\t0x1c36: 0x0a08, 0x1c37: 0x0a08, 0x1c38: 0x0a08, 0x1c39: 0x0a08, 0x1c3a: 0x0a08, 0x1c3b: 0x0a08,\n\t0x1c3c: 0x0a08, 0x1c3d: 0x0a08, 0x1c3e: 0x0a08, 0x1c3f: 0x0a08,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0xb189, 0x1c41: 0xb1a1, 0x1c42: 0xb201, 0x1c43: 0xb249, 0x1c44: 0x0040, 0x1c45: 0xb411,\n\t0x1c46: 0xb291, 0x1c47: 0xb219, 0x1c48: 0xb309, 0x1c49: 0xb429, 0x1c4a: 0xb399, 0x1c4b: 0xb3b1,\n\t0x1c4c: 0xb3c9, 0x1c4d: 0xb3e1, 0x1c4e: 0xb2a9, 0x1c4f: 0xb339, 0x1c50: 0xb369, 0x1c51: 0xb2d9,\n\t0x1c52: 0xb381, 0x1c53: 0xb279, 0x1c54: 0xb2c1, 0x1c55: 0xb1d1, 0x1c56: 0xb1e9, 0x1c57: 0xb231,\n\t0x1c58: 0xb261, 0x1c59: 0xb2f1, 0x1c5a: 0xb321, 0x1c5b: 0xb351, 0x1c5c: 0xbc59, 0x1c5d: 0x7949,\n\t0x1c5e: 0xbc71, 0x1c5f: 0xbc89, 0x1c60: 0x0040, 0x1c61: 0xb1a1, 0x1c62: 0xb201, 0x1c63: 0x0040,\n\t0x1c64: 0xb3f9, 0x1c65: 0x0040, 0x1c66: 0x0040, 0x1c67: 0xb219, 0x1c68: 0x0040, 0x1c69: 0xb429,\n\t0x1c6a: 0xb399, 0x1c6b: 0xb3b1, 0x1c6c: 0xb3c9, 0x1c6d: 0xb3e1, 0x1c6e: 0xb2a9, 0x1c6f: 0xb339,\n\t0x1c70: 0xb369, 0x1c71: 0xb2d9, 0x1c72: 0xb381, 0x1c73: 0x0040, 0x1c74: 0xb2c1, 0x1c75: 0xb1d1,\n\t0x1c76: 0xb1e9, 0x1c77: 0xb231, 0x1c78: 0x0040, 0x1c79: 0xb2f1, 0x1c7a: 0x0040, 0x1c7b: 0xb351,\n\t0x1c7c: 0x0040, 0x1c7d: 0x0040, 0x1c7e: 0x0040, 0x1c7f: 0x0040,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0x0040, 0x1c81: 0x0040, 0x1c82: 0xb201, 0x1c83: 0x0040, 0x1c84: 0x0040, 0x1c85: 0x0040,\n\t0x1c86: 0x0040, 0x1c87: 0xb219, 0x1c88: 0x0040, 0x1c89: 0xb429, 0x1c8a: 0x0040, 0x1c8b: 0xb3b1,\n\t0x1c8c: 0x0040, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0x0040, 0x1c91: 0xb2d9,\n\t0x1c92: 0xb381, 0x1c93: 0x0040, 0x1c94: 0xb2c1, 0x1c95: 0x0040, 0x1c96: 0x0040, 0x1c97: 0xb231,\n\t0x1c98: 0x0040, 0x1c99: 0xb2f1, 0x1c9a: 0x0040, 0x1c9b: 0xb351, 0x1c9c: 0x0040, 0x1c9d: 0x7949,\n\t0x1c9e: 0x0040, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040,\n\t0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0xb309, 0x1ca9: 0xb429,\n\t0x1caa: 0xb399, 0x1cab: 0x0040, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339,\n\t0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1,\n\t0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0xb321, 0x1cbb: 0xb351,\n\t0x1cbc: 0xbc59, 0x1cbd: 0x0040, 0x1cbe: 0xbc71, 0x1cbf: 0x0040,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0xb189, 0x1cc1: 0xb1a1, 0x1cc2: 0xb201, 0x1cc3: 0xb249, 0x1cc4: 0xb3f9, 0x1cc5: 0xb411,\n\t0x1cc6: 0xb291, 0x1cc7: 0xb219, 0x1cc8: 0xb309, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1,\n\t0x1ccc: 0xb3c9, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0xb369, 0x1cd1: 0xb2d9,\n\t0x1cd2: 0xb381, 0x1cd3: 0xb279, 0x1cd4: 0xb2c1, 0x1cd5: 0xb1d1, 0x1cd6: 0xb1e9, 0x1cd7: 0xb231,\n\t0x1cd8: 0xb261, 0x1cd9: 0xb2f1, 0x1cda: 0xb321, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x0040,\n\t0x1cde: 0x0040, 0x1cdf: 0x0040, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0xb249,\n\t0x1ce4: 0x0040, 0x1ce5: 0xb411, 0x1ce6: 0xb291, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429,\n\t0x1cea: 0x0040, 0x1ceb: 0xb3b1, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339,\n\t0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0xb279, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1,\n\t0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0xb261, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351,\n\t0x1cfc: 0x0040, 0x1cfd: 0x0040, 0x1cfe: 0x0040, 0x1cff: 0x0040,\n\t// Block 0x74, offset 0x1d00\n\t0x1d00: 0x0040, 0x1d01: 0xbca2, 0x1d02: 0xbcba, 0x1d03: 0xbcd2, 0x1d04: 0xbcea, 0x1d05: 0xbd02,\n\t0x1d06: 0xbd1a, 0x1d07: 0xbd32, 0x1d08: 0xbd4a, 0x1d09: 0xbd62, 0x1d0a: 0xbd7a, 0x1d0b: 0x0018,\n\t0x1d0c: 0x0018, 0x1d0d: 0x0040, 0x1d0e: 0x0040, 0x1d0f: 0x0040, 0x1d10: 0xbd92, 0x1d11: 0xbdb2,\n\t0x1d12: 0xbdd2, 0x1d13: 0xbdf2, 0x1d14: 0xbe12, 0x1d15: 0xbe32, 0x1d16: 0xbe52, 0x1d17: 0xbe72,\n\t0x1d18: 0xbe92, 0x1d19: 0xbeb2, 0x1d1a: 0xbed2, 0x1d1b: 0xbef2, 0x1d1c: 0xbf12, 0x1d1d: 0xbf32,\n\t0x1d1e: 0xbf52, 0x1d1f: 0xbf72, 0x1d20: 0xbf92, 0x1d21: 0xbfb2, 0x1d22: 0xbfd2, 0x1d23: 0xbff2,\n\t0x1d24: 0xc012, 0x1d25: 0xc032, 0x1d26: 0xc052, 0x1d27: 0xc072, 0x1d28: 0xc092, 0x1d29: 0xc0b2,\n\t0x1d2a: 0xc0d1, 0x1d2b: 0x1159, 0x1d2c: 0x0269, 0x1d2d: 0x6671, 0x1d2e: 0xc111, 0x1d2f: 0x0040,\n\t0x1d30: 0x0039, 0x1d31: 0x0ee9, 0x1d32: 0x1159, 0x1d33: 0x0ef9, 0x1d34: 0x0f09, 0x1d35: 0x1199,\n\t0x1d36: 0x0f31, 0x1d37: 0x0249, 0x1d38: 0x0f41, 0x1d39: 0x0259, 0x1d3a: 0x0f51, 0x1d3b: 0x0359,\n\t0x1d3c: 0x0f61, 0x1d3d: 0x0f71, 0x1d3e: 0x00d9, 0x1d3f: 0x0f99,\n\t// Block 0x75, offset 0x1d40\n\t0x1d40: 0x2039, 0x1d41: 0x0269, 0x1d42: 0x01d9, 0x1d43: 0x0fa9, 0x1d44: 0x0fb9, 0x1d45: 0x1089,\n\t0x1d46: 0x0279, 0x1d47: 0x0369, 0x1d48: 0x0289, 0x1d49: 0x13d1, 0x1d4a: 0xc129, 0x1d4b: 0x65b1,\n\t0x1d4c: 0xc141, 0x1d4d: 0x1441, 0x1d4e: 0xc159, 0x1d4f: 0xc179, 0x1d50: 0x0018, 0x1d51: 0x0018,\n\t0x1d52: 0x0018, 0x1d53: 0x0018, 0x1d54: 0x0018, 0x1d55: 0x0018, 0x1d56: 0x0018, 0x1d57: 0x0018,\n\t0x1d58: 0x0018, 0x1d59: 0x0018, 0x1d5a: 0x0018, 0x1d5b: 0x0018, 0x1d5c: 0x0018, 0x1d5d: 0x0018,\n\t0x1d5e: 0x0018, 0x1d5f: 0x0018, 0x1d60: 0x0018, 0x1d61: 0x0018, 0x1d62: 0x0018, 0x1d63: 0x0018,\n\t0x1d64: 0x0018, 0x1d65: 0x0018, 0x1d66: 0x0018, 0x1d67: 0x0018, 0x1d68: 0x0018, 0x1d69: 0x0018,\n\t0x1d6a: 0xc191, 0x1d6b: 0xc1a9, 0x1d6c: 0x0040, 0x1d6d: 0x0040, 0x1d6e: 0x0040, 0x1d6f: 0x0040,\n\t0x1d70: 0x0018, 0x1d71: 0x0018, 0x1d72: 0x0018, 0x1d73: 0x0018, 0x1d74: 0x0018, 0x1d75: 0x0018,\n\t0x1d76: 0x0018, 0x1d77: 0x0018, 0x1d78: 0x0018, 0x1d79: 0x0018, 0x1d7a: 0x0018, 0x1d7b: 0x0018,\n\t0x1d7c: 0x0018, 0x1d7d: 0x0018, 0x1d7e: 0x0018, 0x1d7f: 0x0018,\n\t// Block 0x76, offset 0x1d80\n\t0x1d80: 0xc1d9, 0x1d81: 0xc211, 0x1d82: 0xc249, 0x1d83: 0x0040, 0x1d84: 0x0040, 0x1d85: 0x0040,\n\t0x1d86: 0x0040, 0x1d87: 0x0040, 0x1d88: 0x0040, 0x1d89: 0x0040, 0x1d8a: 0x0040, 0x1d8b: 0x0040,\n\t0x1d8c: 0x0040, 0x1d8d: 0x0040, 0x1d8e: 0x0040, 0x1d8f: 0x0040, 0x1d90: 0xc269, 0x1d91: 0xc289,\n\t0x1d92: 0xc2a9, 0x1d93: 0xc2c9, 0x1d94: 0xc2e9, 0x1d95: 0xc309, 0x1d96: 0xc329, 0x1d97: 0xc349,\n\t0x1d98: 0xc369, 0x1d99: 0xc389, 0x1d9a: 0xc3a9, 0x1d9b: 0xc3c9, 0x1d9c: 0xc3e9, 0x1d9d: 0xc409,\n\t0x1d9e: 0xc429, 0x1d9f: 0xc449, 0x1da0: 0xc469, 0x1da1: 0xc489, 0x1da2: 0xc4a9, 0x1da3: 0xc4c9,\n\t0x1da4: 0xc4e9, 0x1da5: 0xc509, 0x1da6: 0xc529, 0x1da7: 0xc549, 0x1da8: 0xc569, 0x1da9: 0xc589,\n\t0x1daa: 0xc5a9, 0x1dab: 0xc5c9, 0x1dac: 0xc5e9, 0x1dad: 0xc609, 0x1dae: 0xc629, 0x1daf: 0xc649,\n\t0x1db0: 0xc669, 0x1db1: 0xc689, 0x1db2: 0xc6a9, 0x1db3: 0xc6c9, 0x1db4: 0xc6e9, 0x1db5: 0xc709,\n\t0x1db6: 0xc729, 0x1db7: 0xc749, 0x1db8: 0xc769, 0x1db9: 0xc789, 0x1dba: 0xc7a9, 0x1dbb: 0xc7c9,\n\t0x1dbc: 0x0040, 0x1dbd: 0x0040, 0x1dbe: 0x0040, 0x1dbf: 0x0040,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dc0: 0xcaf9, 0x1dc1: 0xcb19, 0x1dc2: 0xcb39, 0x1dc3: 0x8b1d, 0x1dc4: 0xcb59, 0x1dc5: 0xcb79,\n\t0x1dc6: 0xcb99, 0x1dc7: 0xcbb9, 0x1dc8: 0xcbd9, 0x1dc9: 0xcbf9, 0x1dca: 0xcc19, 0x1dcb: 0xcc39,\n\t0x1dcc: 0xcc59, 0x1dcd: 0x8b3d, 0x1dce: 0xcc79, 0x1dcf: 0xcc99, 0x1dd0: 0xccb9, 0x1dd1: 0xccd9,\n\t0x1dd2: 0x8b5d, 0x1dd3: 0xccf9, 0x1dd4: 0xcd19, 0x1dd5: 0xc429, 0x1dd6: 0x8b7d, 0x1dd7: 0xcd39,\n\t0x1dd8: 0xcd59, 0x1dd9: 0xcd79, 0x1dda: 0xcd99, 0x1ddb: 0xcdb9, 0x1ddc: 0x8b9d, 0x1ddd: 0xcdd9,\n\t0x1dde: 0xcdf9, 0x1ddf: 0xce19, 0x1de0: 0xce39, 0x1de1: 0xce59, 0x1de2: 0xc789, 0x1de3: 0xce79,\n\t0x1de4: 0xce99, 0x1de5: 0xceb9, 0x1de6: 0xced9, 0x1de7: 0xcef9, 0x1de8: 0xcf19, 0x1de9: 0xcf39,\n\t0x1dea: 0xcf59, 0x1deb: 0xcf79, 0x1dec: 0xcf99, 0x1ded: 0xcfb9, 0x1dee: 0xcfd9, 0x1def: 0xcff9,\n\t0x1df0: 0xd019, 0x1df1: 0xd039, 0x1df2: 0xd039, 0x1df3: 0xd039, 0x1df4: 0x8bbd, 0x1df5: 0xd059,\n\t0x1df6: 0xd079, 0x1df7: 0xd099, 0x1df8: 0x8bdd, 0x1df9: 0xd0b9, 0x1dfa: 0xd0d9, 0x1dfb: 0xd0f9,\n\t0x1dfc: 0xd119, 0x1dfd: 0xd139, 0x1dfe: 0xd159, 0x1dff: 0xd179,\n\t// Block 0x78, offset 0x1e00\n\t0x1e00: 0xd199, 0x1e01: 0xd1b9, 0x1e02: 0xd1d9, 0x1e03: 0xd1f9, 0x1e04: 0xd219, 0x1e05: 0xd239,\n\t0x1e06: 0xd239, 0x1e07: 0xd259, 0x1e08: 0xd279, 0x1e09: 0xd299, 0x1e0a: 0xd2b9, 0x1e0b: 0xd2d9,\n\t0x1e0c: 0xd2f9, 0x1e0d: 0xd319, 0x1e0e: 0xd339, 0x1e0f: 0xd359, 0x1e10: 0xd379, 0x1e11: 0xd399,\n\t0x1e12: 0xd3b9, 0x1e13: 0xd3d9, 0x1e14: 0xd3f9, 0x1e15: 0xd419, 0x1e16: 0xd439, 0x1e17: 0xd459,\n\t0x1e18: 0xd479, 0x1e19: 0x8bfd, 0x1e1a: 0xd499, 0x1e1b: 0xd4b9, 0x1e1c: 0xd4d9, 0x1e1d: 0xc309,\n\t0x1e1e: 0xd4f9, 0x1e1f: 0xd519, 0x1e20: 0x8c1d, 0x1e21: 0x8c3d, 0x1e22: 0xd539, 0x1e23: 0xd559,\n\t0x1e24: 0xd579, 0x1e25: 0xd599, 0x1e26: 0xd5b9, 0x1e27: 0xd5d9, 0x1e28: 0x2040, 0x1e29: 0xd5f9,\n\t0x1e2a: 0xd619, 0x1e2b: 0xd619, 0x1e2c: 0x8c5d, 0x1e2d: 0xd639, 0x1e2e: 0xd659, 0x1e2f: 0xd679,\n\t0x1e30: 0xd699, 0x1e31: 0x8c7d, 0x1e32: 0xd6b9, 0x1e33: 0xd6d9, 0x1e34: 0x2040, 0x1e35: 0xd6f9,\n\t0x1e36: 0xd719, 0x1e37: 0xd739, 0x1e38: 0xd759, 0x1e39: 0xd779, 0x1e3a: 0xd799, 0x1e3b: 0x8c9d,\n\t0x1e3c: 0xd7b9, 0x1e3d: 0x8cbd, 0x1e3e: 0xd7d9, 0x1e3f: 0xd7f9,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0xd819, 0x1e41: 0xd839, 0x1e42: 0xd859, 0x1e43: 0xd879, 0x1e44: 0xd899, 0x1e45: 0xd8b9,\n\t0x1e46: 0xd8d9, 0x1e47: 0xd8f9, 0x1e48: 0xd919, 0x1e49: 0x8cdd, 0x1e4a: 0xd939, 0x1e4b: 0xd959,\n\t0x1e4c: 0xd979, 0x1e4d: 0xd999, 0x1e4e: 0xd9b9, 0x1e4f: 0x8cfd, 0x1e50: 0xd9d9, 0x1e51: 0x8d1d,\n\t0x1e52: 0x8d3d, 0x1e53: 0xd9f9, 0x1e54: 0xda19, 0x1e55: 0xda19, 0x1e56: 0xda39, 0x1e57: 0x8d5d,\n\t0x1e58: 0x8d7d, 0x1e59: 0xda59, 0x1e5a: 0xda79, 0x1e5b: 0xda99, 0x1e5c: 0xdab9, 0x1e5d: 0xdad9,\n\t0x1e5e: 0xdaf9, 0x1e5f: 0xdb19, 0x1e60: 0xdb39, 0x1e61: 0xdb59, 0x1e62: 0xdb79, 0x1e63: 0xdb99,\n\t0x1e64: 0x8d9d, 0x1e65: 0xdbb9, 0x1e66: 0xdbd9, 0x1e67: 0xdbf9, 0x1e68: 0xdc19, 0x1e69: 0xdbf9,\n\t0x1e6a: 0xdc39, 0x1e6b: 0xdc59, 0x1e6c: 0xdc79, 0x1e6d: 0xdc99, 0x1e6e: 0xdcb9, 0x1e6f: 0xdcd9,\n\t0x1e70: 0xdcf9, 0x1e71: 0xdd19, 0x1e72: 0xdd39, 0x1e73: 0xdd59, 0x1e74: 0xdd79, 0x1e75: 0xdd99,\n\t0x1e76: 0xddb9, 0x1e77: 0xddd9, 0x1e78: 0x8dbd, 0x1e79: 0xddf9, 0x1e7a: 0xde19, 0x1e7b: 0xde39,\n\t0x1e7c: 0xde59, 0x1e7d: 0xde79, 0x1e7e: 0x8ddd, 0x1e7f: 0xde99,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0xe599, 0x1e81: 0xe5b9, 0x1e82: 0xe5d9, 0x1e83: 0xe5f9, 0x1e84: 0xe619, 0x1e85: 0xe639,\n\t0x1e86: 0x8efd, 0x1e87: 0xe659, 0x1e88: 0xe679, 0x1e89: 0xe699, 0x1e8a: 0xe6b9, 0x1e8b: 0xe6d9,\n\t0x1e8c: 0xe6f9, 0x1e8d: 0x8f1d, 0x1e8e: 0xe719, 0x1e8f: 0xe739, 0x1e90: 0x8f3d, 0x1e91: 0x8f5d,\n\t0x1e92: 0xe759, 0x1e93: 0xe779, 0x1e94: 0xe799, 0x1e95: 0xe7b9, 0x1e96: 0xe7d9, 0x1e97: 0xe7f9,\n\t0x1e98: 0xe819, 0x1e99: 0xe839, 0x1e9a: 0xe859, 0x1e9b: 0x8f7d, 0x1e9c: 0xe879, 0x1e9d: 0x8f9d,\n\t0x1e9e: 0xe899, 0x1e9f: 0x2040, 0x1ea0: 0xe8b9, 0x1ea1: 0xe8d9, 0x1ea2: 0xe8f9, 0x1ea3: 0x8fbd,\n\t0x1ea4: 0xe919, 0x1ea5: 0xe939, 0x1ea6: 0x8fdd, 0x1ea7: 0x8ffd, 0x1ea8: 0xe959, 0x1ea9: 0xe979,\n\t0x1eaa: 0xe999, 0x1eab: 0xe9b9, 0x1eac: 0xe9d9, 0x1ead: 0xe9d9, 0x1eae: 0xe9f9, 0x1eaf: 0xea19,\n\t0x1eb0: 0xea39, 0x1eb1: 0xea59, 0x1eb2: 0xea79, 0x1eb3: 0xea99, 0x1eb4: 0xeab9, 0x1eb5: 0x901d,\n\t0x1eb6: 0xead9, 0x1eb7: 0x903d, 0x1eb8: 0xeaf9, 0x1eb9: 0x905d, 0x1eba: 0xeb19, 0x1ebb: 0x907d,\n\t0x1ebc: 0x909d, 0x1ebd: 0x90bd, 0x1ebe: 0xeb39, 0x1ebf: 0xeb59,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0xeb79, 0x1ec1: 0x90dd, 0x1ec2: 0x90fd, 0x1ec3: 0x911d, 0x1ec4: 0x913d, 0x1ec5: 0xeb99,\n\t0x1ec6: 0xebb9, 0x1ec7: 0xebb9, 0x1ec8: 0xebd9, 0x1ec9: 0xebf9, 0x1eca: 0xec19, 0x1ecb: 0xec39,\n\t0x1ecc: 0xec59, 0x1ecd: 0x915d, 0x1ece: 0xec79, 0x1ecf: 0xec99, 0x1ed0: 0xecb9, 0x1ed1: 0xecd9,\n\t0x1ed2: 0x917d, 0x1ed3: 0xecf9, 0x1ed4: 0x919d, 0x1ed5: 0x91bd, 0x1ed6: 0xed19, 0x1ed7: 0xed39,\n\t0x1ed8: 0xed59, 0x1ed9: 0xed79, 0x1eda: 0xed99, 0x1edb: 0xedb9, 0x1edc: 0x91dd, 0x1edd: 0x91fd,\n\t0x1ede: 0x921d, 0x1edf: 0x2040, 0x1ee0: 0xedd9, 0x1ee1: 0x923d, 0x1ee2: 0xedf9, 0x1ee3: 0xee19,\n\t0x1ee4: 0xee39, 0x1ee5: 0x925d, 0x1ee6: 0xee59, 0x1ee7: 0xee79, 0x1ee8: 0xee99, 0x1ee9: 0xeeb9,\n\t0x1eea: 0xeed9, 0x1eeb: 0x927d, 0x1eec: 0xeef9, 0x1eed: 0xef19, 0x1eee: 0xef39, 0x1eef: 0xef59,\n\t0x1ef0: 0xef79, 0x1ef1: 0xef99, 0x1ef2: 0x929d, 0x1ef3: 0x92bd, 0x1ef4: 0xefb9, 0x1ef5: 0x92dd,\n\t0x1ef6: 0xefd9, 0x1ef7: 0x92fd, 0x1ef8: 0xeff9, 0x1ef9: 0xf019, 0x1efa: 0xf039, 0x1efb: 0x931d,\n\t0x1efc: 0x933d, 0x1efd: 0xf059, 0x1efe: 0x935d, 0x1eff: 0xf079,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f00: 0xf6b9, 0x1f01: 0xf6d9, 0x1f02: 0xf6f9, 0x1f03: 0xf719, 0x1f04: 0xf739, 0x1f05: 0x951d,\n\t0x1f06: 0xf759, 0x1f07: 0xf779, 0x1f08: 0xf799, 0x1f09: 0xf7b9, 0x1f0a: 0xf7d9, 0x1f0b: 0x953d,\n\t0x1f0c: 0x955d, 0x1f0d: 0xf7f9, 0x1f0e: 0xf819, 0x1f0f: 0xf839, 0x1f10: 0xf859, 0x1f11: 0xf879,\n\t0x1f12: 0xf899, 0x1f13: 0x957d, 0x1f14: 0xf8b9, 0x1f15: 0xf8d9, 0x1f16: 0xf8f9, 0x1f17: 0xf919,\n\t0x1f18: 0x959d, 0x1f19: 0x95bd, 0x1f1a: 0xf939, 0x1f1b: 0xf959, 0x1f1c: 0xf979, 0x1f1d: 0x95dd,\n\t0x1f1e: 0xf999, 0x1f1f: 0xf9b9, 0x1f20: 0x6815, 0x1f21: 0x95fd, 0x1f22: 0xf9d9, 0x1f23: 0xf9f9,\n\t0x1f24: 0xfa19, 0x1f25: 0x961d, 0x1f26: 0xfa39, 0x1f27: 0xfa59, 0x1f28: 0xfa79, 0x1f29: 0xfa99,\n\t0x1f2a: 0xfab9, 0x1f2b: 0xfad9, 0x1f2c: 0xfaf9, 0x1f2d: 0x963d, 0x1f2e: 0xfb19, 0x1f2f: 0xfb39,\n\t0x1f30: 0xfb59, 0x1f31: 0x965d, 0x1f32: 0xfb79, 0x1f33: 0xfb99, 0x1f34: 0xfbb9, 0x1f35: 0xfbd9,\n\t0x1f36: 0x7b35, 0x1f37: 0x967d, 0x1f38: 0xfbf9, 0x1f39: 0xfc19, 0x1f3a: 0xfc39, 0x1f3b: 0x969d,\n\t0x1f3c: 0xfc59, 0x1f3d: 0x96bd, 0x1f3e: 0xfc79, 0x1f3f: 0xfc79,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f40: 0xfc99, 0x1f41: 0x96dd, 0x1f42: 0xfcb9, 0x1f43: 0xfcd9, 0x1f44: 0xfcf9, 0x1f45: 0xfd19,\n\t0x1f46: 0xfd39, 0x1f47: 0xfd59, 0x1f48: 0xfd79, 0x1f49: 0x96fd, 0x1f4a: 0xfd99, 0x1f4b: 0xfdb9,\n\t0x1f4c: 0xfdd9, 0x1f4d: 0xfdf9, 0x1f4e: 0xfe19, 0x1f4f: 0xfe39, 0x1f50: 0x971d, 0x1f51: 0xfe59,\n\t0x1f52: 0x973d, 0x1f53: 0x975d, 0x1f54: 0x977d, 0x1f55: 0xfe79, 0x1f56: 0xfe99, 0x1f57: 0xfeb9,\n\t0x1f58: 0xfed9, 0x1f59: 0xfef9, 0x1f5a: 0xff19, 0x1f5b: 0xff39, 0x1f5c: 0xff59, 0x1f5d: 0x979d,\n\t0x1f5e: 0x0040, 0x1f5f: 0x0040, 0x1f60: 0x0040, 0x1f61: 0x0040, 0x1f62: 0x0040, 0x1f63: 0x0040,\n\t0x1f64: 0x0040, 0x1f65: 0x0040, 0x1f66: 0x0040, 0x1f67: 0x0040, 0x1f68: 0x0040, 0x1f69: 0x0040,\n\t0x1f6a: 0x0040, 0x1f6b: 0x0040, 0x1f6c: 0x0040, 0x1f6d: 0x0040, 0x1f6e: 0x0040, 0x1f6f: 0x0040,\n\t0x1f70: 0x0040, 0x1f71: 0x0040, 0x1f72: 0x0040, 0x1f73: 0x0040, 0x1f74: 0x0040, 0x1f75: 0x0040,\n\t0x1f76: 0x0040, 0x1f77: 0x0040, 0x1f78: 0x0040, 0x1f79: 0x0040, 0x1f7a: 0x0040, 0x1f7b: 0x0040,\n\t0x1f7c: 0x0040, 0x1f7d: 0x0040, 0x1f7e: 0x0040, 0x1f7f: 0x0040,\n}\n\n// idnaIndex: 35 blocks, 2240 entries, 4480 bytes\n// Block 0 is the zero block.\nvar idnaIndex = [2240]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x7c, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05,\n\t0xc8: 0x06, 0xc9: 0x7d, 0xca: 0x7e, 0xcb: 0x07, 0xcc: 0x7f, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a,\n\t0xd0: 0x80, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x81, 0xd6: 0x82, 0xd7: 0x83,\n\t0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x84, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x85, 0xde: 0x86, 0xdf: 0x87,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07,\n\t0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c,\n\t0xf0: 0x1c, 0xf1: 0x1d, 0xf2: 0x1d, 0xf3: 0x1f, 0xf4: 0x20,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x88, 0x121: 0x89, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x13, 0x126: 0x14, 0x127: 0x15,\n\t0x128: 0x16, 0x129: 0x17, 0x12a: 0x18, 0x12b: 0x19, 0x12c: 0x1a, 0x12d: 0x1b, 0x12e: 0x1c, 0x12f: 0x8d,\n\t0x130: 0x8e, 0x131: 0x1d, 0x132: 0x1e, 0x133: 0x1f, 0x134: 0x8f, 0x135: 0x20, 0x136: 0x90, 0x137: 0x91,\n\t0x138: 0x92, 0x139: 0x93, 0x13a: 0x21, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x22, 0x13e: 0x23, 0x13f: 0x96,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e,\n\t0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6,\n\t0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f,\n\t0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae,\n\t0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6,\n\t0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe,\n\t0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x24, 0x175: 0x25, 0x176: 0x26, 0x177: 0xc3,\n\t0x178: 0x27, 0x179: 0x27, 0x17a: 0x28, 0x17b: 0x27, 0x17c: 0xc4, 0x17d: 0x29, 0x17e: 0x2a, 0x17f: 0x2b,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x2c, 0x181: 0x2d, 0x182: 0x2e, 0x183: 0xc5, 0x184: 0x2f, 0x185: 0x30, 0x186: 0xc6, 0x187: 0x9b,\n\t0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0xca,\n\t0x190: 0xcb, 0x191: 0x31, 0x192: 0x32, 0x193: 0x33, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b,\n\t0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b,\n\t0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b,\n\t0x1a8: 0xcc, 0x1a9: 0xcd, 0x1aa: 0x9b, 0x1ab: 0xce, 0x1ac: 0x9b, 0x1ad: 0xcf, 0x1ae: 0xd0, 0x1af: 0xd1,\n\t0x1b0: 0xd2, 0x1b1: 0x34, 0x1b2: 0x27, 0x1b3: 0x35, 0x1b4: 0xd3, 0x1b5: 0xd4, 0x1b6: 0xd5, 0x1b7: 0xd6,\n\t0x1b8: 0xd7, 0x1b9: 0xd8, 0x1ba: 0xd9, 0x1bb: 0xda, 0x1bc: 0xdb, 0x1bd: 0xdc, 0x1be: 0xdd, 0x1bf: 0x36,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x37, 0x1c1: 0xde, 0x1c2: 0xdf, 0x1c3: 0xe0, 0x1c4: 0xe1, 0x1c5: 0x38, 0x1c6: 0x39, 0x1c7: 0xe2,\n\t0x1c8: 0xe3, 0x1c9: 0x3a, 0x1ca: 0x3b, 0x1cb: 0x3c, 0x1cc: 0x3d, 0x1cd: 0x3e, 0x1ce: 0x3f, 0x1cf: 0x40,\n\t0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f,\n\t0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f,\n\t0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f,\n\t0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f,\n\t0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f,\n\t0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f,\n\t0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f,\n\t0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f,\n\t0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f,\n\t0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f,\n\t0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f,\n\t0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b,\n\t0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f,\n\t0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f,\n\t0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f,\n\t0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f,\n\t0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f,\n\t0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f,\n\t0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f,\n\t0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f,\n\t0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f,\n\t0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f,\n\t0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f,\n\t0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f,\n\t0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f,\n\t0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f,\n\t0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe4,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f,\n\t0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f,\n\t0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe5, 0x2d3: 0xe6, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f,\n\t0x2d8: 0xe7, 0x2d9: 0x41, 0x2da: 0x42, 0x2db: 0xe8, 0x2dc: 0x43, 0x2dd: 0x44, 0x2de: 0x45, 0x2df: 0xe9,\n\t0x2e0: 0xea, 0x2e1: 0xeb, 0x2e2: 0xec, 0x2e3: 0xed, 0x2e4: 0xee, 0x2e5: 0xef, 0x2e6: 0xf0, 0x2e7: 0xf1,\n\t0x2e8: 0xf2, 0x2e9: 0xf3, 0x2ea: 0xf4, 0x2eb: 0xf5, 0x2ec: 0xf6, 0x2ed: 0xf7, 0x2ee: 0xf8, 0x2ef: 0xf9,\n\t0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f,\n\t0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f,\n\t0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f,\n\t0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f,\n\t0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xfa, 0x31f: 0xfb,\n\t// Block 0xd, offset 0x340\n\t0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba,\n\t0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba,\n\t0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba,\n\t0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba,\n\t0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba,\n\t0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba,\n\t0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba,\n\t0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba,\n\t// Block 0xe, offset 0x380\n\t0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba,\n\t0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba,\n\t0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba,\n\t0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba,\n\t0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfc, 0x3a5: 0xfd, 0x3a6: 0xfe, 0x3a7: 0xff,\n\t0x3a8: 0x46, 0x3a9: 0x100, 0x3aa: 0x101, 0x3ab: 0x47, 0x3ac: 0x48, 0x3ad: 0x49, 0x3ae: 0x4a, 0x3af: 0x4b,\n\t0x3b0: 0x102, 0x3b1: 0x4c, 0x3b2: 0x4d, 0x3b3: 0x4e, 0x3b4: 0x4f, 0x3b5: 0x50, 0x3b6: 0x103, 0x3b7: 0x51,\n\t0x3b8: 0x52, 0x3b9: 0x53, 0x3ba: 0x54, 0x3bb: 0x55, 0x3bc: 0x56, 0x3bd: 0x57, 0x3be: 0x58, 0x3bf: 0x59,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x104, 0x3c1: 0x105, 0x3c2: 0x9f, 0x3c3: 0x106, 0x3c4: 0x107, 0x3c5: 0x9b, 0x3c6: 0x108, 0x3c7: 0x109,\n\t0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x10a, 0x3cb: 0x10b, 0x3cc: 0x10c, 0x3cd: 0x10d, 0x3ce: 0x10e, 0x3cf: 0x10f,\n\t0x3d0: 0x110, 0x3d1: 0x9f, 0x3d2: 0x111, 0x3d3: 0x112, 0x3d4: 0x113, 0x3d5: 0x114, 0x3d6: 0xba, 0x3d7: 0xba,\n\t0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x115, 0x3dd: 0x116, 0x3de: 0xba, 0x3df: 0xba,\n\t0x3e0: 0x117, 0x3e1: 0x118, 0x3e2: 0x119, 0x3e3: 0x11a, 0x3e4: 0x11b, 0x3e5: 0xba, 0x3e6: 0x11c, 0x3e7: 0x11d,\n\t0x3e8: 0x11e, 0x3e9: 0x11f, 0x3ea: 0x120, 0x3eb: 0x5a, 0x3ec: 0x121, 0x3ed: 0x122, 0x3ee: 0x5b, 0x3ef: 0xba,\n\t0x3f0: 0x123, 0x3f1: 0x124, 0x3f2: 0x125, 0x3f3: 0x126, 0x3f4: 0xba, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba,\n\t0x3f8: 0xba, 0x3f9: 0x127, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0xba, 0x3fd: 0xba, 0x3fe: 0xba, 0x3ff: 0xba,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x128, 0x401: 0x129, 0x402: 0x12a, 0x403: 0x12b, 0x404: 0x12c, 0x405: 0x12d, 0x406: 0x12e, 0x407: 0x12f,\n\t0x408: 0x130, 0x409: 0xba, 0x40a: 0x131, 0x40b: 0x132, 0x40c: 0x5c, 0x40d: 0x5d, 0x40e: 0xba, 0x40f: 0xba,\n\t0x410: 0x133, 0x411: 0x134, 0x412: 0x135, 0x413: 0x136, 0x414: 0xba, 0x415: 0xba, 0x416: 0x137, 0x417: 0x138,\n\t0x418: 0x139, 0x419: 0x13a, 0x41a: 0x13b, 0x41b: 0x13c, 0x41c: 0x13d, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba,\n\t0x420: 0xba, 0x421: 0xba, 0x422: 0x13e, 0x423: 0x13f, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba,\n\t0x428: 0xba, 0x429: 0xba, 0x42a: 0xba, 0x42b: 0x140, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba,\n\t0x430: 0x141, 0x431: 0x142, 0x432: 0x143, 0x433: 0xba, 0x434: 0xba, 0x435: 0xba, 0x436: 0xba, 0x437: 0xba,\n\t0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0xba, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f,\n\t0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x144, 0x44f: 0xba,\n\t0x450: 0x9b, 0x451: 0x145, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x146, 0x456: 0xba, 0x457: 0xba,\n\t0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba,\n\t0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba,\n\t0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba,\n\t0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba,\n\t0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f,\n\t0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f,\n\t0x490: 0x147, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba,\n\t0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba,\n\t0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba,\n\t0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba,\n\t0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba,\n\t0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba,\n\t0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba,\n\t0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f,\n\t0x4d8: 0x9f, 0x4d9: 0x148, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba,\n\t0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba,\n\t0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba,\n\t0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba,\n\t0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba,\n\t// Block 0x14, offset 0x500\n\t0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba,\n\t0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba,\n\t0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba,\n\t0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba,\n\t0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f,\n\t0x528: 0x140, 0x529: 0x149, 0x52a: 0xba, 0x52b: 0x14a, 0x52c: 0x14b, 0x52d: 0x14c, 0x52e: 0x14d, 0x52f: 0xba,\n\t0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba,\n\t0x538: 0xba, 0x539: 0xba, 0x53a: 0xba, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x14e, 0x53e: 0x14f, 0x53f: 0x150,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f,\n\t0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f,\n\t0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f,\n\t0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x151,\n\t0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f,\n\t0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x152, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba,\n\t0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba,\n\t0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x153, 0x581: 0xba, 0x582: 0xba, 0x583: 0xba, 0x584: 0xba, 0x585: 0xba, 0x586: 0xba, 0x587: 0xba,\n\t0x588: 0xba, 0x589: 0xba, 0x58a: 0xba, 0x58b: 0xba, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba,\n\t0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba,\n\t0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba,\n\t0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba,\n\t0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba,\n\t0x5b0: 0x9f, 0x5b1: 0x154, 0x5b2: 0x155, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba,\n\t0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x156, 0x5c4: 0x157, 0x5c5: 0x158, 0x5c6: 0x159, 0x5c7: 0x15a,\n\t0x5c8: 0x9b, 0x5c9: 0x15b, 0x5ca: 0xba, 0x5cb: 0xba, 0x5cc: 0x9b, 0x5cd: 0x15c, 0x5ce: 0xba, 0x5cf: 0xba,\n\t0x5d0: 0x5e, 0x5d1: 0x5f, 0x5d2: 0x60, 0x5d3: 0x61, 0x5d4: 0x62, 0x5d5: 0x63, 0x5d6: 0x64, 0x5d7: 0x65,\n\t0x5d8: 0x66, 0x5d9: 0x67, 0x5da: 0x68, 0x5db: 0x69, 0x5dc: 0x6a, 0x5dd: 0x6b, 0x5de: 0x6c, 0x5df: 0x6d,\n\t0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b,\n\t0x5e8: 0x15d, 0x5e9: 0x15e, 0x5ea: 0x15f, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba,\n\t0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba,\n\t0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x160, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba,\n\t0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba,\n\t0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba,\n\t0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba,\n\t0x620: 0x123, 0x621: 0x123, 0x622: 0x123, 0x623: 0x161, 0x624: 0x6e, 0x625: 0x162, 0x626: 0xba, 0x627: 0xba,\n\t0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba,\n\t0x630: 0xba, 0x631: 0xba, 0x632: 0xba, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba,\n\t0x638: 0x6f, 0x639: 0x70, 0x63a: 0x71, 0x63b: 0x163, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x164, 0x641: 0x9b, 0x642: 0x165, 0x643: 0x166, 0x644: 0x72, 0x645: 0x73, 0x646: 0x167, 0x647: 0x168,\n\t0x648: 0x74, 0x649: 0x169, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b,\n\t0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b,\n\t0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x16a, 0x65c: 0x9b, 0x65d: 0x16b, 0x65e: 0x9b, 0x65f: 0x16c,\n\t0x660: 0x16d, 0x661: 0x16e, 0x662: 0x16f, 0x663: 0xba, 0x664: 0x170, 0x665: 0x171, 0x666: 0x172, 0x667: 0x173,\n\t0x668: 0xba, 0x669: 0xba, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba,\n\t0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba,\n\t0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f,\n\t0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f,\n\t0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f,\n\t0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x174, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f,\n\t0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f,\n\t0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f,\n\t0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f,\n\t0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f,\n\t0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f,\n\t0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f,\n\t0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x175, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f,\n\t0x6e0: 0x176, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f,\n\t0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f,\n\t0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f,\n\t0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f,\n\t0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f,\n\t0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f,\n\t0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f,\n\t0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f,\n\t0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f,\n\t0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f,\n\t0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x177, 0x73b: 0xba, 0x73c: 0xba, 0x73d: 0xba, 0x73e: 0xba, 0x73f: 0xba,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0xba, 0x741: 0xba, 0x742: 0xba, 0x743: 0xba, 0x744: 0xba, 0x745: 0xba, 0x746: 0xba, 0x747: 0xba,\n\t0x748: 0xba, 0x749: 0xba, 0x74a: 0xba, 0x74b: 0xba, 0x74c: 0xba, 0x74d: 0xba, 0x74e: 0xba, 0x74f: 0xba,\n\t0x750: 0xba, 0x751: 0xba, 0x752: 0xba, 0x753: 0xba, 0x754: 0xba, 0x755: 0xba, 0x756: 0xba, 0x757: 0xba,\n\t0x758: 0xba, 0x759: 0xba, 0x75a: 0xba, 0x75b: 0xba, 0x75c: 0xba, 0x75d: 0xba, 0x75e: 0xba, 0x75f: 0xba,\n\t0x760: 0x75, 0x761: 0x76, 0x762: 0x77, 0x763: 0x178, 0x764: 0x78, 0x765: 0x79, 0x766: 0x179, 0x767: 0x7a,\n\t0x768: 0x7b, 0x769: 0xba, 0x76a: 0xba, 0x76b: 0xba, 0x76c: 0xba, 0x76d: 0xba, 0x76e: 0xba, 0x76f: 0xba,\n\t0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba,\n\t0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba,\n\t// Block 0x1e, offset 0x780\n\t0x790: 0x0d, 0x791: 0x0e, 0x792: 0x0f, 0x793: 0x10, 0x794: 0x11, 0x795: 0x0b, 0x796: 0x12, 0x797: 0x07,\n\t0x798: 0x13, 0x799: 0x0b, 0x79a: 0x0b, 0x79b: 0x14, 0x79c: 0x0b, 0x79d: 0x15, 0x79e: 0x16, 0x79f: 0x17,\n\t0x7a0: 0x07, 0x7a1: 0x07, 0x7a2: 0x07, 0x7a3: 0x07, 0x7a4: 0x07, 0x7a5: 0x07, 0x7a6: 0x07, 0x7a7: 0x07,\n\t0x7a8: 0x07, 0x7a9: 0x07, 0x7aa: 0x18, 0x7ab: 0x19, 0x7ac: 0x1a, 0x7ad: 0x0b, 0x7ae: 0x0b, 0x7af: 0x1b,\n\t0x7b0: 0x0b, 0x7b1: 0x0b, 0x7b2: 0x0b, 0x7b3: 0x0b, 0x7b4: 0x0b, 0x7b5: 0x0b, 0x7b6: 0x0b, 0x7b7: 0x0b,\n\t0x7b8: 0x0b, 0x7b9: 0x0b, 0x7ba: 0x0b, 0x7bb: 0x0b, 0x7bc: 0x0b, 0x7bd: 0x0b, 0x7be: 0x0b, 0x7bf: 0x0b,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x0b, 0x7c1: 0x0b, 0x7c2: 0x0b, 0x7c3: 0x0b, 0x7c4: 0x0b, 0x7c5: 0x0b, 0x7c6: 0x0b, 0x7c7: 0x0b,\n\t0x7c8: 0x0b, 0x7c9: 0x0b, 0x7ca: 0x0b, 0x7cb: 0x0b, 0x7cc: 0x0b, 0x7cd: 0x0b, 0x7ce: 0x0b, 0x7cf: 0x0b,\n\t0x7d0: 0x0b, 0x7d1: 0x0b, 0x7d2: 0x0b, 0x7d3: 0x0b, 0x7d4: 0x0b, 0x7d5: 0x0b, 0x7d6: 0x0b, 0x7d7: 0x0b,\n\t0x7d8: 0x0b, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x0b, 0x7dc: 0x0b, 0x7dd: 0x0b, 0x7de: 0x0b, 0x7df: 0x0b,\n\t0x7e0: 0x0b, 0x7e1: 0x0b, 0x7e2: 0x0b, 0x7e3: 0x0b, 0x7e4: 0x0b, 0x7e5: 0x0b, 0x7e6: 0x0b, 0x7e7: 0x0b,\n\t0x7e8: 0x0b, 0x7e9: 0x0b, 0x7ea: 0x0b, 0x7eb: 0x0b, 0x7ec: 0x0b, 0x7ed: 0x0b, 0x7ee: 0x0b, 0x7ef: 0x0b,\n\t0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b,\n\t0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x17a, 0x801: 0x17b, 0x802: 0xba, 0x803: 0xba, 0x804: 0x17c, 0x805: 0x17c, 0x806: 0x17c, 0x807: 0x17d,\n\t0x808: 0xba, 0x809: 0xba, 0x80a: 0xba, 0x80b: 0xba, 0x80c: 0xba, 0x80d: 0xba, 0x80e: 0xba, 0x80f: 0xba,\n\t0x810: 0xba, 0x811: 0xba, 0x812: 0xba, 0x813: 0xba, 0x814: 0xba, 0x815: 0xba, 0x816: 0xba, 0x817: 0xba,\n\t0x818: 0xba, 0x819: 0xba, 0x81a: 0xba, 0x81b: 0xba, 0x81c: 0xba, 0x81d: 0xba, 0x81e: 0xba, 0x81f: 0xba,\n\t0x820: 0xba, 0x821: 0xba, 0x822: 0xba, 0x823: 0xba, 0x824: 0xba, 0x825: 0xba, 0x826: 0xba, 0x827: 0xba,\n\t0x828: 0xba, 0x829: 0xba, 0x82a: 0xba, 0x82b: 0xba, 0x82c: 0xba, 0x82d: 0xba, 0x82e: 0xba, 0x82f: 0xba,\n\t0x830: 0xba, 0x831: 0xba, 0x832: 0xba, 0x833: 0xba, 0x834: 0xba, 0x835: 0xba, 0x836: 0xba, 0x837: 0xba,\n\t0x838: 0xba, 0x839: 0xba, 0x83a: 0xba, 0x83b: 0xba, 0x83c: 0xba, 0x83d: 0xba, 0x83e: 0xba, 0x83f: 0xba,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0b, 0x841: 0x0b, 0x842: 0x0b, 0x843: 0x0b, 0x844: 0x0b, 0x845: 0x0b, 0x846: 0x0b, 0x847: 0x0b,\n\t0x848: 0x0b, 0x849: 0x0b, 0x84a: 0x0b, 0x84b: 0x0b, 0x84c: 0x0b, 0x84d: 0x0b, 0x84e: 0x0b, 0x84f: 0x0b,\n\t0x850: 0x0b, 0x851: 0x0b, 0x852: 0x0b, 0x853: 0x0b, 0x854: 0x0b, 0x855: 0x0b, 0x856: 0x0b, 0x857: 0x0b,\n\t0x858: 0x0b, 0x859: 0x0b, 0x85a: 0x0b, 0x85b: 0x0b, 0x85c: 0x0b, 0x85d: 0x0b, 0x85e: 0x0b, 0x85f: 0x0b,\n\t0x860: 0x1e, 0x861: 0x0b, 0x862: 0x0b, 0x863: 0x0b, 0x864: 0x0b, 0x865: 0x0b, 0x866: 0x0b, 0x867: 0x0b,\n\t0x868: 0x0b, 0x869: 0x0b, 0x86a: 0x0b, 0x86b: 0x0b, 0x86c: 0x0b, 0x86d: 0x0b, 0x86e: 0x0b, 0x86f: 0x0b,\n\t0x870: 0x0b, 0x871: 0x0b, 0x872: 0x0b, 0x873: 0x0b, 0x874: 0x0b, 0x875: 0x0b, 0x876: 0x0b, 0x877: 0x0b,\n\t0x878: 0x0b, 0x879: 0x0b, 0x87a: 0x0b, 0x87b: 0x0b, 0x87c: 0x0b, 0x87d: 0x0b, 0x87e: 0x0b, 0x87f: 0x0b,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b,\n\t0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b,\n}\n\n// idnaSparseOffset: 258 entries, 516 bytes\nvar idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x4f, 0x5e, 0x63, 0x6b, 0x77, 0x85, 0x93, 0x98, 0xa1, 0xb1, 0xbf, 0xcc, 0xd8, 0xe9, 0xf3, 0xfa, 0x107, 0x118, 0x11f, 0x12a, 0x139, 0x147, 0x151, 0x153, 0x158, 0x15b, 0x15e, 0x160, 0x16c, 0x177, 0x17f, 0x185, 0x18b, 0x190, 0x195, 0x198, 0x19c, 0x1a2, 0x1a7, 0x1b3, 0x1bd, 0x1c3, 0x1d4, 0x1de, 0x1e1, 0x1e9, 0x1ec, 0x1f9, 0x201, 0x205, 0x20c, 0x214, 0x224, 0x230, 0x232, 0x23c, 0x248, 0x254, 0x260, 0x268, 0x26d, 0x277, 0x288, 0x28c, 0x297, 0x29b, 0x2a4, 0x2ac, 0x2b2, 0x2b7, 0x2ba, 0x2bd, 0x2c1, 0x2c7, 0x2cb, 0x2cf, 0x2d5, 0x2dc, 0x2e2, 0x2ea, 0x2f1, 0x2fc, 0x306, 0x30a, 0x30d, 0x313, 0x317, 0x319, 0x31c, 0x31e, 0x321, 0x32b, 0x32e, 0x33d, 0x341, 0x346, 0x349, 0x34d, 0x352, 0x357, 0x35d, 0x363, 0x372, 0x378, 0x37c, 0x38b, 0x390, 0x398, 0x3a2, 0x3ad, 0x3b5, 0x3c6, 0x3cf, 0x3df, 0x3ec, 0x3f6, 0x3fb, 0x408, 0x40c, 0x411, 0x413, 0x417, 0x419, 0x41d, 0x426, 0x42c, 0x430, 0x440, 0x44a, 0x44f, 0x452, 0x458, 0x45f, 0x464, 0x468, 0x46e, 0x473, 0x47c, 0x481, 0x487, 0x48e, 0x495, 0x49c, 0x4a0, 0x4a5, 0x4a8, 0x4ad, 0x4b9, 0x4bf, 0x4c4, 0x4cb, 0x4d3, 0x4d8, 0x4dc, 0x4ec, 0x4f3, 0x4f7, 0x4fb, 0x502, 0x504, 0x507, 0x50a, 0x50e, 0x512, 0x518, 0x521, 0x52d, 0x534, 0x53d, 0x545, 0x54c, 0x55a, 0x567, 0x574, 0x57d, 0x581, 0x58f, 0x597, 0x5a2, 0x5ab, 0x5b1, 0x5b9, 0x5c2, 0x5cc, 0x5cf, 0x5db, 0x5de, 0x5e3, 0x5e6, 0x5f0, 0x5f9, 0x605, 0x608, 0x60d, 0x610, 0x613, 0x616, 0x61d, 0x624, 0x628, 0x633, 0x636, 0x63c, 0x641, 0x645, 0x648, 0x64b, 0x64e, 0x653, 0x65d, 0x660, 0x664, 0x673, 0x67f, 0x683, 0x688, 0x68d, 0x691, 0x696, 0x69f, 0x6aa, 0x6b0, 0x6b8, 0x6bc, 0x6c0, 0x6c6, 0x6cc, 0x6d1, 0x6d4, 0x6e2, 0x6e9, 0x6ec, 0x6ef, 0x6f3, 0x6f9, 0x6fe, 0x708, 0x70d, 0x710, 0x713, 0x716, 0x719, 0x71d, 0x720, 0x730, 0x741, 0x746, 0x748, 0x74a}\n\n// idnaSparseValues: 1869 entries, 7476 bytes\nvar idnaSparseValues = [1869]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe105, lo: 0x80, hi: 0x96},\n\t{value: 0x0018, lo: 0x97, hi: 0x97},\n\t{value: 0xe105, lo: 0x98, hi: 0x9e},\n\t{value: 0x001f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbf},\n\t// Block 0x1, offset 0x8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0xe01d, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0335, lo: 0x83, hi: 0x83},\n\t{value: 0x034d, lo: 0x84, hi: 0x84},\n\t{value: 0x0365, lo: 0x85, hi: 0x85},\n\t{value: 0xe00d, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0xe00d, lo: 0x88, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x89},\n\t{value: 0xe00d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe00d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0x8d},\n\t{value: 0xe00d, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0xbf},\n\t// Block 0x2, offset 0x19\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x0249, lo: 0xb0, hi: 0xb0},\n\t{value: 0x037d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0259, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0269, lo: 0xb3, hi: 0xb3},\n\t{value: 0x034d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0395, lo: 0xb5, hi: 0xb5},\n\t{value: 0xe1bd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0279, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0289, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbf},\n\t// Block 0x3, offset 0x25\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x3308, lo: 0x80, hi: 0xbf},\n\t// Block 0x4, offset 0x27\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x03f5, lo: 0x80, hi: 0x8f},\n\t{value: 0xe105, lo: 0x90, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5, offset 0x2c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x0545, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x0008, lo: 0x99, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x6, offset 0x34\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0401, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x88},\n\t{value: 0x0018, lo: 0x89, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x3308, lo: 0x91, hi: 0xbd},\n\t{value: 0x0818, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7, offset 0x3f\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0818, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x82},\n\t{value: 0x0818, lo: 0x83, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x85},\n\t{value: 0x0818, lo: 0x86, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0808, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x8, offset 0x4b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0a08, lo: 0x80, hi: 0x87},\n\t{value: 0x0c08, lo: 0x88, hi: 0x99},\n\t{value: 0x0a08, lo: 0x9a, hi: 0xbf},\n\t// Block 0x9, offset 0x4f\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3308, lo: 0x80, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8c},\n\t{value: 0x0c08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0a08, lo: 0x8e, hi: 0x98},\n\t{value: 0x0c08, lo: 0x99, hi: 0x9b},\n\t{value: 0x0a08, lo: 0x9c, hi: 0xaa},\n\t{value: 0x0c08, lo: 0xab, hi: 0xac},\n\t{value: 0x0a08, lo: 0xad, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0a08, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0c08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0a08, lo: 0xb5, hi: 0xb7},\n\t{value: 0x0c08, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbf},\n\t// Block 0xa, offset 0x5e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xb0},\n\t{value: 0x0808, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xb, offset 0x63\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0xc, offset 0x6b\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x99},\n\t{value: 0x0808, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa3},\n\t{value: 0x0808, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa7},\n\t{value: 0x0808, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0818, lo: 0xb0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd, offset 0x77\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0c08, lo: 0x80, hi: 0x80},\n\t{value: 0x0a08, lo: 0x81, hi: 0x85},\n\t{value: 0x0c08, lo: 0x86, hi: 0x87},\n\t{value: 0x0a08, lo: 0x88, hi: 0x88},\n\t{value: 0x0c08, lo: 0x89, hi: 0x89},\n\t{value: 0x0a08, lo: 0x8a, hi: 0x93},\n\t{value: 0x0c08, lo: 0x94, hi: 0x94},\n\t{value: 0x0a08, lo: 0x95, hi: 0x95},\n\t{value: 0x0808, lo: 0x96, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xe, offset 0x85\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0a08, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0c08, lo: 0xaa, hi: 0xac},\n\t{value: 0x0808, lo: 0xad, hi: 0xad},\n\t{value: 0x0c08, lo: 0xae, hi: 0xae},\n\t{value: 0x0a08, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0c08, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0a08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0a08, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0c08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0a08, lo: 0xba, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0xf, offset 0x93\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa1},\n\t{value: 0x0840, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xbf},\n\t// Block 0x10, offset 0x98\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x11, offset 0xa1\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x85},\n\t{value: 0x3008, lo: 0x86, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x3008, lo: 0x8a, hi: 0x8c},\n\t{value: 0x3b08, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x12, offset 0xb1\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0008, lo: 0xaa, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x13, offset 0xbf\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x14, offset 0xcc\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0040, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x15, offset 0xd8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x89},\n\t{value: 0x3b08, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x3008, lo: 0x98, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x16, offset 0xe9\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb2},\n\t{value: 0x08f1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb9},\n\t{value: 0x3b08, lo: 0xba, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x0018, lo: 0xbf, hi: 0xbf},\n\t// Block 0x17, offset 0xf3\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x8e},\n\t{value: 0x0018, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0xbf},\n\t// Block 0x18, offset 0xfa\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0961, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0999, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0008, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x19, offset 0x107\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8a},\n\t{value: 0x0008, lo: 0x8b, hi: 0x8b},\n\t{value: 0xe03d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x1a, offset 0x118\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0xbf},\n\t// Block 0x1b, offset 0x11f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1c, offset 0x12a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x3008, lo: 0x96, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x3308, lo: 0x9e, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3008, lo: 0xa2, hi: 0xa4},\n\t{value: 0x0008, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xbf},\n\t// Block 0x1d, offset 0x139\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x8c},\n\t{value: 0x3308, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x8e},\n\t{value: 0x3008, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x3008, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0x1e, offset 0x147\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x86},\n\t{value: 0x055d, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8c},\n\t{value: 0x055d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe105, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x1f, offset 0x151\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0018, lo: 0x80, hi: 0xbf},\n\t// Block 0x20, offset 0x153\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa0},\n\t{value: 0x2018, lo: 0xa1, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x21, offset 0x158\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa7},\n\t{value: 0x2018, lo: 0xa8, hi: 0xbf},\n\t// Block 0x22, offset 0x15b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2018, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0xbf},\n\t// Block 0x23, offset 0x15e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0008, lo: 0x80, hi: 0xbf},\n\t// Block 0x24, offset 0x160\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x99},\n\t{value: 0x0008, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x25, offset 0x16c\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x26, offset 0x177\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x27, offset 0x17f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0x0008, lo: 0x92, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbf},\n\t// Block 0x28, offset 0x185\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x29, offset 0x18b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2a, offset 0x190\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x2b, offset 0x195\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x2c, offset 0x198\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xbf},\n\t// Block 0x2d, offset 0x19c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x2e, offset 0x1a2\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0x2f, offset 0x1a7\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0008, lo: 0x8e, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x3b08, lo: 0x94, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3b08, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x30, offset 0x1b3\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x31, offset 0x1bd\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xb3},\n\t{value: 0x3340, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x32, offset 0x1c3\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x3008, lo: 0x80, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x3008, lo: 0x87, hi: 0x88},\n\t{value: 0x3308, lo: 0x89, hi: 0x91},\n\t{value: 0x3b08, lo: 0x92, hi: 0x92},\n\t{value: 0x3308, lo: 0x93, hi: 0x93},\n\t{value: 0x0018, lo: 0x94, hi: 0x96},\n\t{value: 0x0008, lo: 0x97, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x33, offset 0x1d4\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0018, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x86},\n\t{value: 0x0218, lo: 0x87, hi: 0x87},\n\t{value: 0x0018, lo: 0x88, hi: 0x8a},\n\t{value: 0x33c0, lo: 0x8b, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0208, lo: 0xa0, hi: 0xbf},\n\t// Block 0x34, offset 0x1de\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0208, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x35, offset 0x1e1\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0208, lo: 0x87, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0208, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x36, offset 0x1e9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0x37, offset 0x1ec\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3308, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x38, offset 0x1f9\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0008, lo: 0x86, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0x39, offset 0x201\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x3a, offset 0x205\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0028, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0040, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0xbf},\n\t// Block 0x3b, offset 0x20c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x3308, lo: 0x97, hi: 0x98},\n\t{value: 0x3008, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x3c, offset 0x214\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x94},\n\t{value: 0x3008, lo: 0x95, hi: 0x95},\n\t{value: 0x3308, lo: 0x96, hi: 0x96},\n\t{value: 0x3008, lo: 0x97, hi: 0x97},\n\t{value: 0x3308, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3b08, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xac},\n\t{value: 0x3008, lo: 0xad, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x224\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xbd},\n\t{value: 0x3318, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3e, offset 0x230\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0040, lo: 0x80, hi: 0xbf},\n\t// Block 0x3f, offset 0x232\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x83},\n\t{value: 0x3008, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x40, offset 0x23c\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x3808, lo: 0x84, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x41, offset 0x248\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3808, lo: 0xaa, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xbf},\n\t// Block 0x42, offset 0x254\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa9},\n\t{value: 0x3008, lo: 0xaa, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3808, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbf},\n\t// Block 0x43, offset 0x260\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x3008, lo: 0xa4, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbf},\n\t// Block 0x44, offset 0x268\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x45, offset 0x26d\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0e29, lo: 0x80, hi: 0x80},\n\t{value: 0x0e41, lo: 0x81, hi: 0x81},\n\t{value: 0x0e59, lo: 0x82, hi: 0x82},\n\t{value: 0x0e71, lo: 0x83, hi: 0x83},\n\t{value: 0x0e89, lo: 0x84, hi: 0x85},\n\t{value: 0x0ea1, lo: 0x86, hi: 0x86},\n\t{value: 0x0eb9, lo: 0x87, hi: 0x87},\n\t{value: 0x057d, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0x46, offset 0x277\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x92},\n\t{value: 0x0018, lo: 0x93, hi: 0x93},\n\t{value: 0x3308, lo: 0x94, hi: 0xa0},\n\t{value: 0x3008, lo: 0xa1, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0008, lo: 0xa9, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x0008, lo: 0xae, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x47, offset 0x288\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0x48, offset 0x28c\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x87},\n\t{value: 0xe045, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0xe045, lo: 0x98, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0xe045, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb7},\n\t{value: 0xe045, lo: 0xb8, hi: 0xbf},\n\t// Block 0x49, offset 0x297\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x3318, lo: 0x90, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbf},\n\t// Block 0x4a, offset 0x29b\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x88},\n\t{value: 0x24c1, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x4b, offset 0x2a4\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x24f1, lo: 0xac, hi: 0xac},\n\t{value: 0x2529, lo: 0xad, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xae},\n\t{value: 0x2579, lo: 0xaf, hi: 0xaf},\n\t{value: 0x25b1, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0x4c, offset 0x2ac\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x9f},\n\t{value: 0x0080, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xad},\n\t{value: 0x0080, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x4d, offset 0x2b2\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xa8},\n\t{value: 0x09c5, lo: 0xa9, hi: 0xa9},\n\t{value: 0x09e5, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xbf},\n\t// Block 0x4e, offset 0x2b7\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x4f, offset 0x2ba\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xbf},\n\t// Block 0x50, offset 0x2bd\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x28c1, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0xbf},\n\t// Block 0x51, offset 0x2c1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0e66, lo: 0xb4, hi: 0xb4},\n\t{value: 0x292a, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0e86, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x52, offset 0x2c7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x9b},\n\t{value: 0x2941, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0xbf},\n\t// Block 0x53, offset 0x2cb\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0x54, offset 0x2cf\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0018, lo: 0x98, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbc},\n\t{value: 0x0018, lo: 0xbd, hi: 0xbf},\n\t// Block 0x55, offset 0x2d5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0xab},\n\t{value: 0x0018, lo: 0xac, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x56, offset 0x2dc\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xe185, lo: 0x80, hi: 0x8f},\n\t{value: 0x03f5, lo: 0x90, hi: 0x9f},\n\t{value: 0x0ea5, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x57, offset 0x2e2\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xac},\n\t{value: 0x0008, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x58, offset 0x2ea\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xae},\n\t{value: 0xe075, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0x59, offset 0x2f1\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0008, lo: 0xb8, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x5a, offset 0x2fc\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xbf},\n\t// Block 0x5b, offset 0x306\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x5c, offset 0x30a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0xbf},\n\t// Block 0x5d, offset 0x30d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9e},\n\t{value: 0x0edd, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0x5e, offset 0x313\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xb2},\n\t{value: 0x0efd, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0x5f, offset 0x317\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x0f1d, lo: 0x80, hi: 0xbf},\n\t// Block 0x60, offset 0x319\n\t{value: 0x0020, lo: 0x02},\n\t{value: 0x171d, lo: 0x80, hi: 0x8f},\n\t{value: 0x18fd, lo: 0x90, hi: 0xbf},\n\t// Block 0x61, offset 0x31c\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x1efd, lo: 0x80, hi: 0xbf},\n\t// Block 0x62, offset 0x31e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0xbf},\n\t// Block 0x63, offset 0x321\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x98},\n\t{value: 0x3308, lo: 0x99, hi: 0x9a},\n\t{value: 0x29e2, lo: 0x9b, hi: 0x9b},\n\t{value: 0x2a0a, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0008, lo: 0x9d, hi: 0x9e},\n\t{value: 0x2a31, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0008, lo: 0xa1, hi: 0xbf},\n\t// Block 0x64, offset 0x32b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xbe},\n\t{value: 0x2a69, lo: 0xbf, hi: 0xbf},\n\t// Block 0x65, offset 0x32e\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0040, lo: 0x80, hi: 0x84},\n\t{value: 0x0008, lo: 0x85, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xb0},\n\t{value: 0x2a1d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x2a3d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x2a5d, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2a7d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2a5d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2a9d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2abd, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2add, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2afd, lo: 0xba, hi: 0xbb},\n\t{value: 0x2b1d, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2afd, lo: 0xbe, hi: 0xbf},\n\t// Block 0x66, offset 0x33d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x67, offset 0x341\n\t{value: 0x0030, lo: 0x04},\n\t{value: 0x2aa2, lo: 0x80, hi: 0x9d},\n\t{value: 0x305a, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x30a2, lo: 0xa0, hi: 0xbf},\n\t// Block 0x68, offset 0x346\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x69, offset 0x349\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0040, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0x6a, offset 0x34d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0x6b, offset 0x352\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xbf},\n\t// Block 0x6c, offset 0x357\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0018, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x6d, offset 0x35d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0xb6},\n\t{value: 0x0008, lo: 0xb7, hi: 0xb7},\n\t{value: 0x2009, lo: 0xb8, hi: 0xb8},\n\t{value: 0x6e89, lo: 0xb9, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xbf},\n\t// Block 0x6e, offset 0x363\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x3308, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x3308, lo: 0x8b, hi: 0x8b},\n\t{value: 0x0008, lo: 0x8c, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3008, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0018, lo: 0xa8, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x6f, offset 0x372\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0208, lo: 0x80, hi: 0xb1},\n\t{value: 0x0108, lo: 0xb2, hi: 0xb2},\n\t{value: 0x0008, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0x70, offset 0x378\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xbf},\n\t// Block 0x71, offset 0x37c\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3008, lo: 0x80, hi: 0x83},\n\t{value: 0x3b08, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8d},\n\t{value: 0x0018, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xba},\n\t{value: 0x0008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0018, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x72, offset 0x38b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x73, offset 0x390\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x3308, lo: 0x87, hi: 0x91},\n\t{value: 0x3008, lo: 0x92, hi: 0x92},\n\t{value: 0x3808, lo: 0x93, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0x74, offset 0x398\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x3008, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb9},\n\t{value: 0x3008, lo: 0xba, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbf},\n\t// Block 0x75, offset 0x3a2\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0x76, offset 0x3ad\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xa8},\n\t{value: 0x3308, lo: 0xa9, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb0},\n\t{value: 0x3308, lo: 0xb1, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x77, offset 0x3b5\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x0008, lo: 0x80, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3008, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xb9},\n\t{value: 0x0008, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbc},\n\t{value: 0x3008, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0008, lo: 0xbe, hi: 0xbf},\n\t// Block 0x78, offset 0x3c6\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb4},\n\t{value: 0x0008, lo: 0xb5, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0008, lo: 0xb9, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbf},\n\t// Block 0x79, offset 0x3cf\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x9a},\n\t{value: 0x0008, lo: 0x9b, hi: 0x9d},\n\t{value: 0x0018, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xaa},\n\t{value: 0x3008, lo: 0xab, hi: 0xab},\n\t{value: 0x3308, lo: 0xac, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3b08, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x7a, offset 0x3df\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x88},\n\t{value: 0x0008, lo: 0x89, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x90},\n\t{value: 0x0008, lo: 0x91, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7b, offset 0x3ec\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4465, lo: 0x9c, hi: 0x9c},\n\t{value: 0x447d, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2971, lo: 0x9e, hi: 0x9e},\n\t{value: 0xe06d, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa5},\n\t{value: 0x0040, lo: 0xa6, hi: 0xaf},\n\t{value: 0x4495, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7c, offset 0x3f6\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x44b5, lo: 0x80, hi: 0x8f},\n\t{value: 0x44d5, lo: 0x90, hi: 0x9f},\n\t{value: 0x44f5, lo: 0xa0, hi: 0xaf},\n\t{value: 0x44d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7d, offset 0x3fb\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0xa2},\n\t{value: 0x3008, lo: 0xa3, hi: 0xa4},\n\t{value: 0x3308, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa7},\n\t{value: 0x3308, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xaa},\n\t{value: 0x0018, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3b08, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0x7e, offset 0x408\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0x7f, offset 0x40c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x80, offset 0x411\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x4515, lo: 0x80, hi: 0xbf},\n\t// Block 0x81, offset 0x413\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x4d15, lo: 0x80, hi: 0x94},\n\t{value: 0x4ad5, lo: 0x95, hi: 0x95},\n\t{value: 0x4fb5, lo: 0x96, hi: 0xbf},\n\t// Block 0x82, offset 0x417\n\t{value: 0x0020, lo: 0x01},\n\t{value: 0x54f5, lo: 0x80, hi: 0xbf},\n\t// Block 0x83, offset 0x419\n\t{value: 0x0020, lo: 0x03},\n\t{value: 0x5cf5, lo: 0x80, hi: 0x84},\n\t{value: 0x5655, lo: 0x85, hi: 0x85},\n\t{value: 0x5d95, lo: 0x86, hi: 0xbf},\n\t// Block 0x84, offset 0x41d\n\t{value: 0x0020, lo: 0x08},\n\t{value: 0x6b55, lo: 0x80, hi: 0x8f},\n\t{value: 0x6d15, lo: 0x90, hi: 0x90},\n\t{value: 0x6d55, lo: 0x91, hi: 0xab},\n\t{value: 0x6ea1, lo: 0xac, hi: 0xac},\n\t{value: 0x70b5, lo: 0xad, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x70d5, lo: 0xb0, hi: 0xbf},\n\t// Block 0x85, offset 0x426\n\t{value: 0x0020, lo: 0x05},\n\t{value: 0x72d5, lo: 0x80, hi: 0xad},\n\t{value: 0x6535, lo: 0xae, hi: 0xae},\n\t{value: 0x7895, lo: 0xaf, hi: 0xb5},\n\t{value: 0x6f55, lo: 0xb6, hi: 0xb6},\n\t{value: 0x7975, lo: 0xb7, hi: 0xbf},\n\t// Block 0x86, offset 0x42c\n\t{value: 0x0028, lo: 0x03},\n\t{value: 0x7c21, lo: 0x80, hi: 0x82},\n\t{value: 0x7be1, lo: 0x83, hi: 0x83},\n\t{value: 0x7c99, lo: 0x84, hi: 0xbf},\n\t// Block 0x87, offset 0x430\n\t{value: 0x0038, lo: 0x0f},\n\t{value: 0x9db1, lo: 0x80, hi: 0x83},\n\t{value: 0x9e59, lo: 0x84, hi: 0x85},\n\t{value: 0x9e91, lo: 0x86, hi: 0x87},\n\t{value: 0x9ec9, lo: 0x88, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x91},\n\t{value: 0xa089, lo: 0x92, hi: 0x97},\n\t{value: 0xa1a1, lo: 0x98, hi: 0x9c},\n\t{value: 0xa281, lo: 0x9d, hi: 0xb3},\n\t{value: 0x9d41, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9db1, lo: 0xb5, hi: 0xb5},\n\t{value: 0xa789, lo: 0xb6, hi: 0xbb},\n\t{value: 0xa869, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa7f9, lo: 0xbd, hi: 0xbd},\n\t{value: 0xa8d9, lo: 0xbe, hi: 0xbf},\n\t// Block 0x88, offset 0x440\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0008, lo: 0x8d, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0008, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0x89, offset 0x44a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0x8a, offset 0x44f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8b, offset 0x452\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x82},\n\t{value: 0x0040, lo: 0x83, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0x8c, offset 0x458\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x8e},\n\t{value: 0x0040, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0x8d, offset 0x45f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0040, lo: 0xbe, hi: 0xbf},\n\t// Block 0x8e, offset 0x464\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9c},\n\t{value: 0x0040, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x8f, offset 0x468\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x90},\n\t{value: 0x0040, lo: 0x91, hi: 0x9f},\n\t{value: 0x3308, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x90, offset 0x46e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x91, offset 0x473\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x81},\n\t{value: 0x0008, lo: 0x82, hi: 0x89},\n\t{value: 0x0018, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbf},\n\t// Block 0x92, offset 0x47c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0x93, offset 0x481\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0xbf},\n\t// Block 0x94, offset 0x487\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x97},\n\t{value: 0x8ad5, lo: 0x98, hi: 0x9f},\n\t{value: 0x8aed, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0008, lo: 0xa8, hi: 0xbf},\n\t// Block 0x95, offset 0x48e\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x8aed, lo: 0xb0, hi: 0xb7},\n\t{value: 0x8ad5, lo: 0xb8, hi: 0xbf},\n\t// Block 0x96, offset 0x495\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe145, lo: 0x80, hi: 0x87},\n\t{value: 0xe1c5, lo: 0x88, hi: 0x8f},\n\t{value: 0xe145, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0xbb},\n\t{value: 0x0040, lo: 0xbc, hi: 0xbf},\n\t// Block 0x97, offset 0x49c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0x98, offset 0x4a0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xae},\n\t{value: 0x0018, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x99, offset 0x4a5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9a, offset 0x4a8\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xbf},\n\t// Block 0x9b, offset 0x4ad\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0808, lo: 0x80, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x87},\n\t{value: 0x0808, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0808, lo: 0x8a, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0808, lo: 0xb7, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbb},\n\t{value: 0x0808, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbe},\n\t{value: 0x0808, lo: 0xbf, hi: 0xbf},\n\t// Block 0x9c, offset 0x4b9\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x96},\n\t{value: 0x0818, lo: 0x97, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb6},\n\t{value: 0x0818, lo: 0xb7, hi: 0xbf},\n\t// Block 0x9d, offset 0x4bf\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xa6},\n\t{value: 0x0818, lo: 0xa7, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9e, offset 0x4c4\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0808, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xba},\n\t{value: 0x0818, lo: 0xbb, hi: 0xbf},\n\t// Block 0x9f, offset 0x4cb\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0818, lo: 0x96, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbe},\n\t{value: 0x0818, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa0, offset 0x4d3\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0808, lo: 0x80, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbb},\n\t{value: 0x0818, lo: 0xbc, hi: 0xbd},\n\t{value: 0x0808, lo: 0xbe, hi: 0xbf},\n\t// Block 0xa1, offset 0x4d8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0818, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x0818, lo: 0x92, hi: 0xbf},\n\t// Block 0xa2, offset 0x4dc\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x0808, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x84},\n\t{value: 0x3308, lo: 0x85, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x8b},\n\t{value: 0x3308, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x94},\n\t{value: 0x0808, lo: 0x95, hi: 0x97},\n\t{value: 0x0040, lo: 0x98, hi: 0x98},\n\t{value: 0x0808, lo: 0x99, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xba},\n\t{value: 0x0040, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa3, offset 0x4ec\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0818, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0818, lo: 0x90, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xbc},\n\t{value: 0x0818, lo: 0xbd, hi: 0xbf},\n\t// Block 0xa4, offset 0x4f3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0x9c},\n\t{value: 0x0818, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xa5, offset 0x4f7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb8},\n\t{value: 0x0018, lo: 0xb9, hi: 0xbf},\n\t// Block 0xa6, offset 0x4fb\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0808, lo: 0x80, hi: 0x95},\n\t{value: 0x0040, lo: 0x96, hi: 0x97},\n\t{value: 0x0818, lo: 0x98, hi: 0x9f},\n\t{value: 0x0808, lo: 0xa0, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb7},\n\t{value: 0x0818, lo: 0xb8, hi: 0xbf},\n\t// Block 0xa7, offset 0x502\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0808, lo: 0x80, hi: 0xbf},\n\t// Block 0xa8, offset 0x504\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0808, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0xbf},\n\t// Block 0xa9, offset 0x507\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x03dd, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xaa, offset 0x50a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0808, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xb9},\n\t{value: 0x0818, lo: 0xba, hi: 0xbf},\n\t// Block 0xab, offset 0x50e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0818, lo: 0xa0, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xac, offset 0x512\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3008, lo: 0x80, hi: 0x80},\n\t{value: 0x3308, lo: 0x81, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xad, offset 0x518\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x85},\n\t{value: 0x3b08, lo: 0x86, hi: 0x86},\n\t{value: 0x0018, lo: 0x87, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x91},\n\t{value: 0x0018, lo: 0x92, hi: 0xa5},\n\t{value: 0x0008, lo: 0xa6, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xae, offset 0x521\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb6},\n\t{value: 0x3008, lo: 0xb7, hi: 0xb8},\n\t{value: 0x3b08, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x0018, lo: 0xbb, hi: 0xbc},\n\t{value: 0x0340, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0018, lo: 0xbe, hi: 0xbf},\n\t// Block 0xaf, offset 0x52d\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb0, offset 0x534\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xb2},\n\t{value: 0x3b08, lo: 0xb3, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xbf},\n\t// Block 0xb1, offset 0x53d\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0018, lo: 0xb4, hi: 0xb5},\n\t{value: 0x0008, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xb2, offset 0x545\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x3308, lo: 0x80, hi: 0x81},\n\t{value: 0x3008, lo: 0x82, hi: 0x82},\n\t{value: 0x0008, lo: 0x83, hi: 0xb2},\n\t{value: 0x3008, lo: 0xb3, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xbe},\n\t{value: 0x3008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb3, offset 0x54c\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3808, lo: 0x80, hi: 0x80},\n\t{value: 0x0008, lo: 0x81, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x89},\n\t{value: 0x3308, lo: 0x8a, hi: 0x8c},\n\t{value: 0x0018, lo: 0x8d, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0008, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0018, lo: 0xa1, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xb4, offset 0x55a\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xae},\n\t{value: 0x3308, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3008, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3308, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3808, lo: 0xb5, hi: 0xb5},\n\t{value: 0x3308, lo: 0xb6, hi: 0xb7},\n\t{value: 0x0018, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3308, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb5, offset 0x567\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x0008, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0x8d},\n\t{value: 0x0040, lo: 0x8e, hi: 0x8e},\n\t{value: 0x0008, lo: 0x8f, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9e},\n\t{value: 0x0008, lo: 0x9f, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbf},\n\t// Block 0xb6, offset 0x574\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x3308, lo: 0x9f, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa9},\n\t{value: 0x3b08, lo: 0xaa, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0040, lo: 0xba, hi: 0xbf},\n\t// Block 0xb7, offset 0x57d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x3008, lo: 0xb5, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbf},\n\t// Block 0xb8, offset 0x581\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x3008, lo: 0x80, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x84},\n\t{value: 0x3008, lo: 0x85, hi: 0x85},\n\t{value: 0x3308, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x8a},\n\t{value: 0x0018, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0040, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0018, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xb9, offset 0x58f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xb8},\n\t{value: 0x3008, lo: 0xb9, hi: 0xb9},\n\t{value: 0x3308, lo: 0xba, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbe},\n\t{value: 0x3308, lo: 0xbf, hi: 0xbf},\n\t// Block 0xba, offset 0x597\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x3008, lo: 0x81, hi: 0x81},\n\t{value: 0x3b08, lo: 0x82, hi: 0x82},\n\t{value: 0x3308, lo: 0x83, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x85},\n\t{value: 0x0018, lo: 0x86, hi: 0x86},\n\t{value: 0x0008, lo: 0x87, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xbb, offset 0x5a2\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xb7},\n\t{value: 0x3008, lo: 0xb8, hi: 0xbb},\n\t{value: 0x3308, lo: 0xbc, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbc, offset 0x5ab\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x97},\n\t{value: 0x0008, lo: 0x98, hi: 0x9b},\n\t{value: 0x3308, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0xbf},\n\t// Block 0xbd, offset 0x5b1\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3008, lo: 0xb0, hi: 0xb2},\n\t{value: 0x3308, lo: 0xb3, hi: 0xba},\n\t{value: 0x3008, lo: 0xbb, hi: 0xbc},\n\t{value: 0x3308, lo: 0xbd, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xbe, offset 0x5b9\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x3308, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x83},\n\t{value: 0x0008, lo: 0x84, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xbf, offset 0x5c2\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x3308, lo: 0xab, hi: 0xab},\n\t{value: 0x3008, lo: 0xac, hi: 0xac},\n\t{value: 0x3308, lo: 0xad, hi: 0xad},\n\t{value: 0x3008, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb5},\n\t{value: 0x3808, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3308, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbf},\n\t// Block 0xc0, offset 0x5cc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x89},\n\t{value: 0x0040, lo: 0x8a, hi: 0xbf},\n\t// Block 0xc1, offset 0x5cf\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9f},\n\t{value: 0x3008, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3308, lo: 0xa2, hi: 0xa5},\n\t{value: 0x3008, lo: 0xa6, hi: 0xa6},\n\t{value: 0x3308, lo: 0xa7, hi: 0xaa},\n\t{value: 0x3b08, lo: 0xab, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xb9},\n\t{value: 0x0018, lo: 0xba, hi: 0xbf},\n\t// Block 0xc2, offset 0x5db\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x049d, lo: 0xa0, hi: 0xbf},\n\t// Block 0xc3, offset 0x5de\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0008, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc4, offset 0x5e3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb8},\n\t{value: 0x0040, lo: 0xb9, hi: 0xbf},\n\t// Block 0xc5, offset 0x5e6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x89},\n\t{value: 0x0008, lo: 0x8a, hi: 0xae},\n\t{value: 0x3008, lo: 0xaf, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xb7},\n\t{value: 0x3308, lo: 0xb8, hi: 0xbd},\n\t{value: 0x3008, lo: 0xbe, hi: 0xbe},\n\t{value: 0x3b08, lo: 0xbf, hi: 0xbf},\n\t// Block 0xc6, offset 0x5f0\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0008, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0018, lo: 0x9a, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0008, lo: 0xb2, hi: 0xbf},\n\t// Block 0xc7, offset 0x5f9\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x91},\n\t{value: 0x3308, lo: 0x92, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3008, lo: 0xa9, hi: 0xa9},\n\t{value: 0x3308, lo: 0xaa, hi: 0xb0},\n\t{value: 0x3008, lo: 0xb1, hi: 0xb1},\n\t{value: 0x3308, lo: 0xb2, hi: 0xb3},\n\t{value: 0x3008, lo: 0xb4, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xc8, offset 0x605\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0xbf},\n\t// Block 0xc9, offset 0x608\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xca, offset 0x60d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0040, lo: 0x84, hi: 0xbf},\n\t// Block 0xcb, offset 0x610\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xbf},\n\t// Block 0xcc, offset 0x613\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0xbf},\n\t// Block 0xcd, offset 0x616\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0008, lo: 0x80, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa9},\n\t{value: 0x0040, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xce, offset 0x61d\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb4},\n\t{value: 0x0018, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xcf, offset 0x624\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0xaf},\n\t{value: 0x3308, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xbf},\n\t// Block 0xd0, offset 0x628\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x0008, lo: 0x80, hi: 0x83},\n\t{value: 0x0018, lo: 0x84, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9a},\n\t{value: 0x0018, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0008, lo: 0xa3, hi: 0xb7},\n\t{value: 0x0040, lo: 0xb8, hi: 0xbc},\n\t{value: 0x0008, lo: 0xbd, hi: 0xbf},\n\t// Block 0xd1, offset 0x633\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0xbf},\n\t// Block 0xd2, offset 0x636\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0008, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x90},\n\t{value: 0x3008, lo: 0x91, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xd3, offset 0x63c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x8e},\n\t{value: 0x3308, lo: 0x8f, hi: 0x92},\n\t{value: 0x0008, lo: 0x93, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xd4, offset 0x641\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0040, lo: 0xa1, hi: 0xbf},\n\t// Block 0xd5, offset 0x645\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xd6, offset 0x648\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb2},\n\t{value: 0x0040, lo: 0xb3, hi: 0xbf},\n\t// Block 0xd7, offset 0x64b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0xbf},\n\t// Block 0xd8, offset 0x64e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0008, lo: 0x80, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xaf},\n\t{value: 0x0008, lo: 0xb0, hi: 0xbc},\n\t{value: 0x0040, lo: 0xbd, hi: 0xbf},\n\t// Block 0xd9, offset 0x653\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0008, lo: 0x80, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0x0008, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9b},\n\t{value: 0x0018, lo: 0x9c, hi: 0x9c},\n\t{value: 0x3308, lo: 0x9d, hi: 0x9e},\n\t{value: 0x0018, lo: 0x9f, hi: 0x9f},\n\t{value: 0x03c0, lo: 0xa0, hi: 0xa3},\n\t{value: 0x0040, lo: 0xa4, hi: 0xbf},\n\t// Block 0xda, offset 0x65d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xdb, offset 0x660\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xa6},\n\t{value: 0x0040, lo: 0xa7, hi: 0xa8},\n\t{value: 0x0018, lo: 0xa9, hi: 0xbf},\n\t// Block 0xdc, offset 0x664\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x0018, lo: 0x80, hi: 0x9d},\n\t{value: 0xb5b9, lo: 0x9e, hi: 0x9e},\n\t{value: 0xb601, lo: 0x9f, hi: 0x9f},\n\t{value: 0xb649, lo: 0xa0, hi: 0xa0},\n\t{value: 0xb6b1, lo: 0xa1, hi: 0xa1},\n\t{value: 0xb719, lo: 0xa2, hi: 0xa2},\n\t{value: 0xb781, lo: 0xa3, hi: 0xa3},\n\t{value: 0xb7e9, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3018, lo: 0xa5, hi: 0xa6},\n\t{value: 0x3318, lo: 0xa7, hi: 0xa9},\n\t{value: 0x0018, lo: 0xaa, hi: 0xac},\n\t{value: 0x3018, lo: 0xad, hi: 0xb2},\n\t{value: 0x0340, lo: 0xb3, hi: 0xba},\n\t{value: 0x3318, lo: 0xbb, hi: 0xbf},\n\t// Block 0xdd, offset 0x673\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x3318, lo: 0x80, hi: 0x82},\n\t{value: 0x0018, lo: 0x83, hi: 0x84},\n\t{value: 0x3318, lo: 0x85, hi: 0x8b},\n\t{value: 0x0018, lo: 0x8c, hi: 0xa9},\n\t{value: 0x3318, lo: 0xaa, hi: 0xad},\n\t{value: 0x0018, lo: 0xae, hi: 0xba},\n\t{value: 0xb851, lo: 0xbb, hi: 0xbb},\n\t{value: 0xb899, lo: 0xbc, hi: 0xbc},\n\t{value: 0xb8e1, lo: 0xbd, hi: 0xbd},\n\t{value: 0xb949, lo: 0xbe, hi: 0xbe},\n\t{value: 0xb9b1, lo: 0xbf, hi: 0xbf},\n\t// Block 0xde, offset 0x67f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xba19, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0xa8},\n\t{value: 0x0040, lo: 0xa9, hi: 0xbf},\n\t// Block 0xdf, offset 0x683\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x81},\n\t{value: 0x3318, lo: 0x82, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x85},\n\t{value: 0x0040, lo: 0x86, hi: 0xbf},\n\t// Block 0xe0, offset 0x688\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xe1, offset 0x68d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x3308, lo: 0x80, hi: 0xb6},\n\t{value: 0x0018, lo: 0xb7, hi: 0xba},\n\t{value: 0x3308, lo: 0xbb, hi: 0xbf},\n\t// Block 0xe2, offset 0x691\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x3308, lo: 0x80, hi: 0xac},\n\t{value: 0x0018, lo: 0xad, hi: 0xb4},\n\t{value: 0x3308, lo: 0xb5, hi: 0xb5},\n\t{value: 0x0018, lo: 0xb6, hi: 0xbf},\n\t// Block 0xe3, offset 0x696\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x0018, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x84},\n\t{value: 0x0018, lo: 0x85, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xa0},\n\t{value: 0x3308, lo: 0xa1, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe4, offset 0x69f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x3308, lo: 0x80, hi: 0x86},\n\t{value: 0x0040, lo: 0x87, hi: 0x87},\n\t{value: 0x3308, lo: 0x88, hi: 0x98},\n\t{value: 0x0040, lo: 0x99, hi: 0x9a},\n\t{value: 0x3308, lo: 0x9b, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3308, lo: 0xa3, hi: 0xa4},\n\t{value: 0x0040, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3308, lo: 0xa6, hi: 0xaa},\n\t{value: 0x0040, lo: 0xab, hi: 0xbf},\n\t// Block 0xe5, offset 0x6aa\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0808, lo: 0x80, hi: 0x84},\n\t{value: 0x0040, lo: 0x85, hi: 0x86},\n\t{value: 0x0818, lo: 0x87, hi: 0x8f},\n\t{value: 0x3308, lo: 0x90, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xe6, offset 0x6b0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x0a08, lo: 0x80, hi: 0x83},\n\t{value: 0x3308, lo: 0x84, hi: 0x8a},\n\t{value: 0x0040, lo: 0x8b, hi: 0x8f},\n\t{value: 0x0808, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9d},\n\t{value: 0x0818, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0040, lo: 0xa0, hi: 0xbf},\n\t// Block 0xe7, offset 0x6b8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0040, lo: 0x80, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb1},\n\t{value: 0x0040, lo: 0xb2, hi: 0xbf},\n\t// Block 0xe8, offset 0x6bc\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0xab},\n\t{value: 0x0040, lo: 0xac, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xbf},\n\t// Block 0xe9, offset 0x6c0\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x93},\n\t{value: 0x0040, lo: 0x94, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xae},\n\t{value: 0x0040, lo: 0xaf, hi: 0xb0},\n\t{value: 0x0018, lo: 0xb1, hi: 0xbf},\n\t// Block 0xea, offset 0x6c6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0018, lo: 0x81, hi: 0x8f},\n\t{value: 0x0040, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xb5},\n\t{value: 0x0040, lo: 0xb6, hi: 0xbf},\n\t// Block 0xeb, offset 0x6cc\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8f},\n\t{value: 0xc1c1, lo: 0x90, hi: 0x90},\n\t{value: 0x0018, lo: 0x91, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xbf},\n\t// Block 0xec, offset 0x6d1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0040, lo: 0x80, hi: 0xa5},\n\t{value: 0x0018, lo: 0xa6, hi: 0xbf},\n\t// Block 0xed, offset 0x6d4\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0xc7e9, lo: 0x80, hi: 0x80},\n\t{value: 0xc839, lo: 0x81, hi: 0x81},\n\t{value: 0xc889, lo: 0x82, hi: 0x82},\n\t{value: 0xc8d9, lo: 0x83, hi: 0x83},\n\t{value: 0xc929, lo: 0x84, hi: 0x84},\n\t{value: 0xc979, lo: 0x85, hi: 0x85},\n\t{value: 0xc9c9, lo: 0x86, hi: 0x86},\n\t{value: 0xca19, lo: 0x87, hi: 0x87},\n\t{value: 0xca69, lo: 0x88, hi: 0x88},\n\t{value: 0x0040, lo: 0x89, hi: 0x8f},\n\t{value: 0xcab9, lo: 0x90, hi: 0x90},\n\t{value: 0xcad9, lo: 0x91, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0xbf},\n\t// Block 0xee, offset 0x6e2\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x0018, lo: 0x80, hi: 0x92},\n\t{value: 0x0040, lo: 0x93, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xac},\n\t{value: 0x0040, lo: 0xad, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb6},\n\t{value: 0x0040, lo: 0xb7, hi: 0xbf},\n\t// Block 0xef, offset 0x6e9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0xb3},\n\t{value: 0x0040, lo: 0xb4, hi: 0xbf},\n\t// Block 0xf0, offset 0x6ec\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x94},\n\t{value: 0x0040, lo: 0x95, hi: 0xbf},\n\t// Block 0xf1, offset 0x6ef\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xbf},\n\t// Block 0xf2, offset 0x6f3\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x99},\n\t{value: 0x0040, lo: 0x9a, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xbf},\n\t// Block 0xf3, offset 0x6f9\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x87},\n\t{value: 0x0040, lo: 0x88, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0xad},\n\t{value: 0x0040, lo: 0xae, hi: 0xbf},\n\t// Block 0xf4, offset 0x6fe\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x0040, lo: 0x80, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0018, lo: 0xa0, hi: 0xa7},\n\t{value: 0x0040, lo: 0xa8, hi: 0xaf},\n\t{value: 0x0018, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0040, lo: 0xb1, hi: 0xb2},\n\t{value: 0x0018, lo: 0xb3, hi: 0xbe},\n\t{value: 0x0040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xf5, offset 0x708\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0018, lo: 0x80, hi: 0x8b},\n\t{value: 0x0040, lo: 0x8c, hi: 0x8f},\n\t{value: 0x0018, lo: 0x90, hi: 0x9e},\n\t{value: 0x0040, lo: 0x9f, hi: 0xbf},\n\t// Block 0xf6, offset 0x70d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x91},\n\t{value: 0x0040, lo: 0x92, hi: 0xbf},\n\t// Block 0xf7, offset 0x710\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0018, lo: 0x80, hi: 0x80},\n\t{value: 0x0040, lo: 0x81, hi: 0xbf},\n\t// Block 0xf8, offset 0x713\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0x96},\n\t{value: 0x0040, lo: 0x97, hi: 0xbf},\n\t// Block 0xf9, offset 0x716\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xb4},\n\t{value: 0x0040, lo: 0xb5, hi: 0xbf},\n\t// Block 0xfa, offset 0x719\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0008, lo: 0x80, hi: 0x9d},\n\t{value: 0x0040, lo: 0x9e, hi: 0x9f},\n\t{value: 0x0008, lo: 0xa0, hi: 0xbf},\n\t// Block 0xfb, offset 0x71d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0008, lo: 0x80, hi: 0xa1},\n\t{value: 0x0040, lo: 0xa2, hi: 0xbf},\n\t// Block 0xfc, offset 0x720\n\t{value: 0x0020, lo: 0x0f},\n\t{value: 0xdeb9, lo: 0x80, hi: 0x89},\n\t{value: 0x8dfd, lo: 0x8a, hi: 0x8a},\n\t{value: 0xdff9, lo: 0x8b, hi: 0x9c},\n\t{value: 0x8e1d, lo: 0x9d, hi: 0x9d},\n\t{value: 0xe239, lo: 0x9e, hi: 0xa2},\n\t{value: 0x8e3d, lo: 0xa3, hi: 0xa3},\n\t{value: 0xe2d9, lo: 0xa4, hi: 0xab},\n\t{value: 0x7ed5, lo: 0xac, hi: 0xac},\n\t{value: 0xe3d9, lo: 0xad, hi: 0xaf},\n\t{value: 0x8e5d, lo: 0xb0, hi: 0xb0},\n\t{value: 0xe439, lo: 0xb1, hi: 0xb6},\n\t{value: 0x8e7d, lo: 0xb7, hi: 0xb9},\n\t{value: 0xe4f9, lo: 0xba, hi: 0xba},\n\t{value: 0x8edd, lo: 0xbb, hi: 0xbb},\n\t{value: 0xe519, lo: 0xbc, hi: 0xbf},\n\t// Block 0xfd, offset 0x730\n\t{value: 0x0020, lo: 0x10},\n\t{value: 0x937d, lo: 0x80, hi: 0x80},\n\t{value: 0xf099, lo: 0x81, hi: 0x86},\n\t{value: 0x939d, lo: 0x87, hi: 0x8a},\n\t{value: 0xd9f9, lo: 0x8b, hi: 0x8b},\n\t{value: 0xf159, lo: 0x8c, hi: 0x96},\n\t{value: 0x941d, lo: 0x97, hi: 0x97},\n\t{value: 0xf2b9, lo: 0x98, hi: 0xa3},\n\t{value: 0x943d, lo: 0xa4, hi: 0xa6},\n\t{value: 0xf439, lo: 0xa7, hi: 0xaa},\n\t{value: 0x949d, lo: 0xab, hi: 0xab},\n\t{value: 0xf4b9, lo: 0xac, hi: 0xac},\n\t{value: 0x94bd, lo: 0xad, hi: 0xad},\n\t{value: 0xf4d9, lo: 0xae, hi: 0xaf},\n\t{value: 0x94dd, lo: 0xb0, hi: 0xb1},\n\t{value: 0xf519, lo: 0xb2, hi: 0xbe},\n\t{value: 0x2040, lo: 0xbf, hi: 0xbf},\n\t// Block 0xfe, offset 0x741\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x0040, lo: 0x80, hi: 0x80},\n\t{value: 0x0340, lo: 0x81, hi: 0x81},\n\t{value: 0x0040, lo: 0x82, hi: 0x9f},\n\t{value: 0x0340, lo: 0xa0, hi: 0xbf},\n\t// Block 0xff, offset 0x746\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0340, lo: 0x80, hi: 0xbf},\n\t// Block 0x100, offset 0x748\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x33c0, lo: 0x80, hi: 0xbf},\n\t// Block 0x101, offset 0x74a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x33c0, lo: 0x80, hi: 0xaf},\n\t{value: 0x0040, lo: 0xb0, hi: 0xbf},\n}\n\n// Total table size 41662 bytes (40KiB); checksum: 355A58A4\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/trie.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage idna\n\n// Sparse block handling code.\n\ntype valueRange struct {\n\tvalue  uint16 // header: value:stride\n\tlo, hi byte   // header: lo:n\n}\n\ntype sparseBlocks struct {\n\tvalues []valueRange\n\toffset []uint16\n}\n\nvar idnaSparse = sparseBlocks{\n\tvalues: idnaSparseValues[:],\n\toffset: idnaSparseOffset[:],\n}\n\n// Don't use newIdnaTrie to avoid unconditional linking in of the table.\nvar trie = &idnaTrie{}\n\n// lookup determines the type of block n and looks up the value for b.\n// For n < t.cutoff, the block is a simple lookup table. Otherwise, the block\n// is a list of ranges with an accompanying value. Given a matching range r,\n// the value for b is by r.value + (b - r.lo) * stride.\nfunc (t *sparseBlocks) lookup(n uint32, b byte) uint16 {\n\toffset := t.offset[n]\n\theader := t.values[offset]\n\tlo := offset + 1\n\thi := lo + uint16(header.lo)\n\tfor lo < hi {\n\t\tm := lo + (hi-lo)/2\n\t\tr := t.values[m]\n\t\tif r.lo <= b && b <= r.hi {\n\t\t\treturn r.value + uint16(b-r.lo)*header.value\n\t\t}\n\t\tif b < r.lo {\n\t\t\thi = m\n\t\t} else {\n\t\t\tlo = m + 1\n\t\t}\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/trie12.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.16\n\npackage idna\n\n// appendMapping appends the mapping for the respective rune. isMapped must be\n// true. A mapping is a categorization of a rune as defined in UTS #46.\nfunc (c info) appendMapping(b []byte, s string) []byte {\n\tindex := int(c >> indexShift)\n\tif c&xorBit == 0 {\n\t\ts := mappings[index:]\n\t\treturn append(b, s[1:s[0]+1]...)\n\t}\n\tb = append(b, s...)\n\tif c&inlineXOR == inlineXOR {\n\t\t// TODO: support and handle two-byte inline masks\n\t\tb[len(b)-1] ^= byte(index)\n\t} else {\n\t\tfor p := len(b) - int(xorData[index]); p < len(b); p++ {\n\t\t\tindex++\n\t\t\tb[p] ^= xorData[index]\n\t\t}\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/trie13.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.16\n\npackage idna\n\n// appendMapping appends the mapping for the respective rune. isMapped must be\n// true. A mapping is a categorization of a rune as defined in UTS #46.\nfunc (c info) appendMapping(b []byte, s string) []byte {\n\tindex := int(c >> indexShift)\n\tif c&xorBit == 0 {\n\t\tp := index\n\t\treturn append(b, mappings[mappingIndex[p]:mappingIndex[p+1]]...)\n\t}\n\tb = append(b, s...)\n\tif c&inlineXOR == inlineXOR {\n\t\t// TODO: support and handle two-byte inline masks\n\t\tb[len(b)-1] ^= byte(index)\n\t} else {\n\t\tfor p := len(b) - int(xorData[index]); p < len(b); p++ {\n\t\t\tindex++\n\t\t\tb[p] ^= xorData[index]\n\t\t}\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/idna/trieval.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage idna\n\n// This file contains definitions for interpreting the trie value of the idna\n// trie generated by \"go run gen*.go\". It is shared by both the generator\n// program and the resultant package. Sharing is achieved by the generator\n// copying gen_trieval.go to trieval.go and changing what's above this comment.\n\n// info holds information from the IDNA mapping table for a single rune. It is\n// the value returned by a trie lookup. In most cases, all information fits in\n// a 16-bit value. For mappings, this value may contain an index into a slice\n// with the mapped string. Such mappings can consist of the actual mapped value\n// or an XOR pattern to be applied to the bytes of the UTF8 encoding of the\n// input rune. This technique is used by the cases packages and reduces the\n// table size significantly.\n//\n// The per-rune values have the following format:\n//\n//\tif mapped {\n//\t  if inlinedXOR {\n//\t    15..13 inline XOR marker\n//\t    12..11 unused\n//\t    10..3  inline XOR mask\n//\t  } else {\n//\t    15..3  index into xor or mapping table\n//\t  }\n//\t} else {\n//\t    15..14 unused\n//\t    13     mayNeedNorm\n//\t    12..11 attributes\n//\t    10..8  joining type\n//\t     7..3  category type\n//\t}\n//\t   2  use xor pattern\n//\t1..0  mapped category\n//\n// See the definitions below for a more detailed description of the various\n// bits.\ntype info uint16\n\nconst (\n\tcatSmallMask = 0x3\n\tcatBigMask   = 0xF8\n\tindexShift   = 3\n\txorBit       = 0x4    // interpret the index as an xor pattern\n\tinlineXOR    = 0xE000 // These bits are set if the XOR pattern is inlined.\n\n\tjoinShift = 8\n\tjoinMask  = 0x07\n\n\t// Attributes\n\tattributesMask = 0x1800\n\tviramaModifier = 0x1800\n\tmodifier       = 0x1000\n\trtl            = 0x0800\n\n\tmayNeedNorm = 0x2000\n)\n\n// A category corresponds to a category defined in the IDNA mapping table.\ntype category uint16\n\nconst (\n\tunknown              category = 0 // not currently defined in unicode.\n\tmapped               category = 1\n\tdisallowedSTD3Mapped category = 2\n\tdeviation            category = 3\n)\n\nconst (\n\tvalid               category = 0x08\n\tvalidNV8            category = 0x18\n\tvalidXV8            category = 0x28\n\tdisallowed          category = 0x40\n\tdisallowedSTD3Valid category = 0x80\n\tignored             category = 0xC0\n)\n\n// join types and additional rune information\nconst (\n\tjoiningL = (iota + 1)\n\tjoiningD\n\tjoiningT\n\tjoiningR\n\n\t//the following types are derived during processing\n\tjoinZWJ\n\tjoinZWNJ\n\tjoinVirama\n\tnumJoinTypes\n)\n\nfunc (c info) isMapped() bool {\n\treturn c&0x3 != 0\n}\n\nfunc (c info) category() category {\n\tsmall := c & catSmallMask\n\tif small != 0 {\n\t\treturn category(small)\n\t}\n\treturn category(c & catBigMask)\n}\n\nfunc (c info) joinType() info {\n\tif c.isMapped() {\n\t\treturn 0\n\t}\n\treturn (c >> joinShift) & joinMask\n}\n\nfunc (c info) isModifier() bool {\n\treturn c&(modifier|catSmallMask) == modifier\n}\n\nfunc (c info) isViramaModifier() bool {\n\treturn c&(attributesMask|catSmallMask) == viramaModifier\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/internal/timeseries/timeseries.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package timeseries implements a time series structure for stats collection.\npackage timeseries // import \"golang.org/x/net/internal/timeseries\"\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"time\"\n)\n\nconst (\n\ttimeSeriesNumBuckets       = 64\n\tminuteHourSeriesNumBuckets = 60\n)\n\nvar timeSeriesResolutions = []time.Duration{\n\t1 * time.Second,\n\t10 * time.Second,\n\t1 * time.Minute,\n\t10 * time.Minute,\n\t1 * time.Hour,\n\t6 * time.Hour,\n\t24 * time.Hour,          // 1 day\n\t7 * 24 * time.Hour,      // 1 week\n\t4 * 7 * 24 * time.Hour,  // 4 weeks\n\t16 * 7 * 24 * time.Hour, // 16 weeks\n}\n\nvar minuteHourSeriesResolutions = []time.Duration{\n\t1 * time.Second,\n\t1 * time.Minute,\n}\n\n// An Observable is a kind of data that can be aggregated in a time series.\ntype Observable interface {\n\tMultiply(ratio float64)    // Multiplies the data in self by a given ratio\n\tAdd(other Observable)      // Adds the data from a different observation to self\n\tClear()                    // Clears the observation so it can be reused.\n\tCopyFrom(other Observable) // Copies the contents of a given observation to self\n}\n\n// Float attaches the methods of Observable to a float64.\ntype Float float64\n\n// NewFloat returns a Float.\nfunc NewFloat() Observable {\n\tf := Float(0)\n\treturn &f\n}\n\n// String returns the float as a string.\nfunc (f *Float) String() string { return fmt.Sprintf(\"%g\", f.Value()) }\n\n// Value returns the float's value.\nfunc (f *Float) Value() float64 { return float64(*f) }\n\nfunc (f *Float) Multiply(ratio float64) { *f *= Float(ratio) }\n\nfunc (f *Float) Add(other Observable) {\n\to := other.(*Float)\n\t*f += *o\n}\n\nfunc (f *Float) Clear() { *f = 0 }\n\nfunc (f *Float) CopyFrom(other Observable) {\n\to := other.(*Float)\n\t*f = *o\n}\n\n// A Clock tells the current time.\ntype Clock interface {\n\tTime() time.Time\n}\n\ntype defaultClock int\n\nvar defaultClockInstance defaultClock\n\nfunc (defaultClock) Time() time.Time { return time.Now() }\n\n// Information kept per level. Each level consists of a circular list of\n// observations. The start of the level may be derived from end and the\n// len(buckets) * sizeInMillis.\ntype tsLevel struct {\n\toldest   int               // index to oldest bucketed Observable\n\tnewest   int               // index to newest bucketed Observable\n\tend      time.Time         // end timestamp for this level\n\tsize     time.Duration     // duration of the bucketed Observable\n\tbuckets  []Observable      // collections of observations\n\tprovider func() Observable // used for creating new Observable\n}\n\nfunc (l *tsLevel) Clear() {\n\tl.oldest = 0\n\tl.newest = len(l.buckets) - 1\n\tl.end = time.Time{}\n\tfor i := range l.buckets {\n\t\tif l.buckets[i] != nil {\n\t\t\tl.buckets[i].Clear()\n\t\t\tl.buckets[i] = nil\n\t\t}\n\t}\n}\n\nfunc (l *tsLevel) InitLevel(size time.Duration, numBuckets int, f func() Observable) {\n\tl.size = size\n\tl.provider = f\n\tl.buckets = make([]Observable, numBuckets)\n}\n\n// Keeps a sequence of levels. Each level is responsible for storing data at\n// a given resolution. For example, the first level stores data at a one\n// minute resolution while the second level stores data at a one hour\n// resolution.\n\n// Each level is represented by a sequence of buckets. Each bucket spans an\n// interval equal to the resolution of the level. New observations are added\n// to the last bucket.\ntype timeSeries struct {\n\tprovider    func() Observable // make more Observable\n\tnumBuckets  int               // number of buckets in each level\n\tlevels      []*tsLevel        // levels of bucketed Observable\n\tlastAdd     time.Time         // time of last Observable tracked\n\ttotal       Observable        // convenient aggregation of all Observable\n\tclock       Clock             // Clock for getting current time\n\tpending     Observable        // observations not yet bucketed\n\tpendingTime time.Time         // what time are we keeping in pending\n\tdirty       bool              // if there are pending observations\n}\n\n// init initializes a level according to the supplied criteria.\nfunc (ts *timeSeries) init(resolutions []time.Duration, f func() Observable, numBuckets int, clock Clock) {\n\tts.provider = f\n\tts.numBuckets = numBuckets\n\tts.clock = clock\n\tts.levels = make([]*tsLevel, len(resolutions))\n\n\tfor i := range resolutions {\n\t\tif i > 0 && resolutions[i-1] >= resolutions[i] {\n\t\t\tlog.Print(\"timeseries: resolutions must be monotonically increasing\")\n\t\t\tbreak\n\t\t}\n\t\tnewLevel := new(tsLevel)\n\t\tnewLevel.InitLevel(resolutions[i], ts.numBuckets, ts.provider)\n\t\tts.levels[i] = newLevel\n\t}\n\n\tts.Clear()\n}\n\n// Clear removes all observations from the time series.\nfunc (ts *timeSeries) Clear() {\n\tts.lastAdd = time.Time{}\n\tts.total = ts.resetObservation(ts.total)\n\tts.pending = ts.resetObservation(ts.pending)\n\tts.pendingTime = time.Time{}\n\tts.dirty = false\n\n\tfor i := range ts.levels {\n\t\tts.levels[i].Clear()\n\t}\n}\n\n// Add records an observation at the current time.\nfunc (ts *timeSeries) Add(observation Observable) {\n\tts.AddWithTime(observation, ts.clock.Time())\n}\n\n// AddWithTime records an observation at the specified time.\nfunc (ts *timeSeries) AddWithTime(observation Observable, t time.Time) {\n\n\tsmallBucketDuration := ts.levels[0].size\n\n\tif t.After(ts.lastAdd) {\n\t\tts.lastAdd = t\n\t}\n\n\tif t.After(ts.pendingTime) {\n\t\tts.advance(t)\n\t\tts.mergePendingUpdates()\n\t\tts.pendingTime = ts.levels[0].end\n\t\tts.pending.CopyFrom(observation)\n\t\tts.dirty = true\n\t} else if t.After(ts.pendingTime.Add(-1 * smallBucketDuration)) {\n\t\t// The observation is close enough to go into the pending bucket.\n\t\t// This compensates for clock skewing and small scheduling delays\n\t\t// by letting the update stay in the fast path.\n\t\tts.pending.Add(observation)\n\t\tts.dirty = true\n\t} else {\n\t\tts.mergeValue(observation, t)\n\t}\n}\n\n// mergeValue inserts the observation at the specified time in the past into all levels.\nfunc (ts *timeSeries) mergeValue(observation Observable, t time.Time) {\n\tfor _, level := range ts.levels {\n\t\tindex := (ts.numBuckets - 1) - int(level.end.Sub(t)/level.size)\n\t\tif 0 <= index && index < ts.numBuckets {\n\t\t\tbucketNumber := (level.oldest + index) % ts.numBuckets\n\t\t\tif level.buckets[bucketNumber] == nil {\n\t\t\t\tlevel.buckets[bucketNumber] = level.provider()\n\t\t\t}\n\t\t\tlevel.buckets[bucketNumber].Add(observation)\n\t\t}\n\t}\n\tts.total.Add(observation)\n}\n\n// mergePendingUpdates applies the pending updates into all levels.\nfunc (ts *timeSeries) mergePendingUpdates() {\n\tif ts.dirty {\n\t\tts.mergeValue(ts.pending, ts.pendingTime)\n\t\tts.pending = ts.resetObservation(ts.pending)\n\t\tts.dirty = false\n\t}\n}\n\n// advance cycles the buckets at each level until the latest bucket in\n// each level can hold the time specified.\nfunc (ts *timeSeries) advance(t time.Time) {\n\tif !t.After(ts.levels[0].end) {\n\t\treturn\n\t}\n\tfor i := 0; i < len(ts.levels); i++ {\n\t\tlevel := ts.levels[i]\n\t\tif !level.end.Before(t) {\n\t\t\tbreak\n\t\t}\n\n\t\t// If the time is sufficiently far, just clear the level and advance\n\t\t// directly.\n\t\tif !t.Before(level.end.Add(level.size * time.Duration(ts.numBuckets))) {\n\t\t\tfor _, b := range level.buckets {\n\t\t\t\tts.resetObservation(b)\n\t\t\t}\n\t\t\tlevel.end = time.Unix(0, (t.UnixNano()/level.size.Nanoseconds())*level.size.Nanoseconds())\n\t\t}\n\n\t\tfor t.After(level.end) {\n\t\t\tlevel.end = level.end.Add(level.size)\n\t\t\tlevel.newest = level.oldest\n\t\t\tlevel.oldest = (level.oldest + 1) % ts.numBuckets\n\t\t\tts.resetObservation(level.buckets[level.newest])\n\t\t}\n\n\t\tt = level.end\n\t}\n}\n\n// Latest returns the sum of the num latest buckets from the level.\nfunc (ts *timeSeries) Latest(level, num int) Observable {\n\tnow := ts.clock.Time()\n\tif ts.levels[0].end.Before(now) {\n\t\tts.advance(now)\n\t}\n\n\tts.mergePendingUpdates()\n\n\tresult := ts.provider()\n\tl := ts.levels[level]\n\tindex := l.newest\n\n\tfor i := 0; i < num; i++ {\n\t\tif l.buckets[index] != nil {\n\t\t\tresult.Add(l.buckets[index])\n\t\t}\n\t\tif index == 0 {\n\t\t\tindex = ts.numBuckets\n\t\t}\n\t\tindex--\n\t}\n\n\treturn result\n}\n\n// LatestBuckets returns a copy of the num latest buckets from level.\nfunc (ts *timeSeries) LatestBuckets(level, num int) []Observable {\n\tif level < 0 || level > len(ts.levels) {\n\t\tlog.Print(\"timeseries: bad level argument: \", level)\n\t\treturn nil\n\t}\n\tif num < 0 || num >= ts.numBuckets {\n\t\tlog.Print(\"timeseries: bad num argument: \", num)\n\t\treturn nil\n\t}\n\n\tresults := make([]Observable, num)\n\tnow := ts.clock.Time()\n\tif ts.levels[0].end.Before(now) {\n\t\tts.advance(now)\n\t}\n\n\tts.mergePendingUpdates()\n\n\tl := ts.levels[level]\n\tindex := l.newest\n\n\tfor i := 0; i < num; i++ {\n\t\tresult := ts.provider()\n\t\tresults[i] = result\n\t\tif l.buckets[index] != nil {\n\t\t\tresult.CopyFrom(l.buckets[index])\n\t\t}\n\n\t\tif index == 0 {\n\t\t\tindex = ts.numBuckets\n\t\t}\n\t\tindex -= 1\n\t}\n\treturn results\n}\n\n// ScaleBy updates observations by scaling by factor.\nfunc (ts *timeSeries) ScaleBy(factor float64) {\n\tfor _, l := range ts.levels {\n\t\tfor i := 0; i < ts.numBuckets; i++ {\n\t\t\tl.buckets[i].Multiply(factor)\n\t\t}\n\t}\n\n\tts.total.Multiply(factor)\n\tts.pending.Multiply(factor)\n}\n\n// Range returns the sum of observations added over the specified time range.\n// If start or finish times don't fall on bucket boundaries of the same\n// level, then return values are approximate answers.\nfunc (ts *timeSeries) Range(start, finish time.Time) Observable {\n\treturn ts.ComputeRange(start, finish, 1)[0]\n}\n\n// Recent returns the sum of observations from the last delta.\nfunc (ts *timeSeries) Recent(delta time.Duration) Observable {\n\tnow := ts.clock.Time()\n\treturn ts.Range(now.Add(-delta), now)\n}\n\n// Total returns the total of all observations.\nfunc (ts *timeSeries) Total() Observable {\n\tts.mergePendingUpdates()\n\treturn ts.total\n}\n\n// ComputeRange computes a specified number of values into a slice using\n// the observations recorded over the specified time period. The return\n// values are approximate if the start or finish times don't fall on the\n// bucket boundaries at the same level or if the number of buckets spanning\n// the range is not an integral multiple of num.\nfunc (ts *timeSeries) ComputeRange(start, finish time.Time, num int) []Observable {\n\tif start.After(finish) {\n\t\tlog.Printf(\"timeseries: start > finish, %v>%v\", start, finish)\n\t\treturn nil\n\t}\n\n\tif num < 0 {\n\t\tlog.Printf(\"timeseries: num < 0, %v\", num)\n\t\treturn nil\n\t}\n\n\tresults := make([]Observable, num)\n\n\tfor _, l := range ts.levels {\n\t\tif !start.Before(l.end.Add(-l.size * time.Duration(ts.numBuckets))) {\n\t\t\tts.extract(l, start, finish, num, results)\n\t\t\treturn results\n\t\t}\n\t}\n\n\t// Failed to find a level that covers the desired range. So just\n\t// extract from the last level, even if it doesn't cover the entire\n\t// desired range.\n\tts.extract(ts.levels[len(ts.levels)-1], start, finish, num, results)\n\n\treturn results\n}\n\n// RecentList returns the specified number of values in slice over the most\n// recent time period of the specified range.\nfunc (ts *timeSeries) RecentList(delta time.Duration, num int) []Observable {\n\tif delta < 0 {\n\t\treturn nil\n\t}\n\tnow := ts.clock.Time()\n\treturn ts.ComputeRange(now.Add(-delta), now, num)\n}\n\n// extract returns a slice of specified number of observations from a given\n// level over a given range.\nfunc (ts *timeSeries) extract(l *tsLevel, start, finish time.Time, num int, results []Observable) {\n\tts.mergePendingUpdates()\n\n\tsrcInterval := l.size\n\tdstInterval := finish.Sub(start) / time.Duration(num)\n\tdstStart := start\n\tsrcStart := l.end.Add(-srcInterval * time.Duration(ts.numBuckets))\n\n\tsrcIndex := 0\n\n\t// Where should scanning start?\n\tif dstStart.After(srcStart) {\n\t\tadvance := int(dstStart.Sub(srcStart) / srcInterval)\n\t\tsrcIndex += advance\n\t\tsrcStart = srcStart.Add(time.Duration(advance) * srcInterval)\n\t}\n\n\t// The i'th value is computed as show below.\n\t// interval = (finish/start)/num\n\t// i'th value = sum of observation in range\n\t//   [ start + i       * interval,\n\t//     start + (i + 1) * interval )\n\tfor i := 0; i < num; i++ {\n\t\tresults[i] = ts.resetObservation(results[i])\n\t\tdstEnd := dstStart.Add(dstInterval)\n\t\tfor srcIndex < ts.numBuckets && srcStart.Before(dstEnd) {\n\t\t\tsrcEnd := srcStart.Add(srcInterval)\n\t\t\tif srcEnd.After(ts.lastAdd) {\n\t\t\t\tsrcEnd = ts.lastAdd\n\t\t\t}\n\n\t\t\tif !srcEnd.Before(dstStart) {\n\t\t\t\tsrcValue := l.buckets[(srcIndex+l.oldest)%ts.numBuckets]\n\t\t\t\tif !srcStart.Before(dstStart) && !srcEnd.After(dstEnd) {\n\t\t\t\t\t// dst completely contains src.\n\t\t\t\t\tif srcValue != nil {\n\t\t\t\t\t\tresults[i].Add(srcValue)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// dst partially overlaps src.\n\t\t\t\t\toverlapStart := maxTime(srcStart, dstStart)\n\t\t\t\t\toverlapEnd := minTime(srcEnd, dstEnd)\n\t\t\t\t\tbase := srcEnd.Sub(srcStart)\n\t\t\t\t\tfraction := overlapEnd.Sub(overlapStart).Seconds() / base.Seconds()\n\n\t\t\t\t\tused := ts.provider()\n\t\t\t\t\tif srcValue != nil {\n\t\t\t\t\t\tused.CopyFrom(srcValue)\n\t\t\t\t\t}\n\t\t\t\t\tused.Multiply(fraction)\n\t\t\t\t\tresults[i].Add(used)\n\t\t\t\t}\n\n\t\t\t\tif srcEnd.After(dstEnd) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tsrcIndex++\n\t\t\tsrcStart = srcStart.Add(srcInterval)\n\t\t}\n\t\tdstStart = dstStart.Add(dstInterval)\n\t}\n}\n\n// resetObservation clears the content so the struct may be reused.\nfunc (ts *timeSeries) resetObservation(observation Observable) Observable {\n\tif observation == nil {\n\t\tobservation = ts.provider()\n\t} else {\n\t\tobservation.Clear()\n\t}\n\treturn observation\n}\n\n// TimeSeries tracks data at granularities from 1 second to 16 weeks.\ntype TimeSeries struct {\n\ttimeSeries\n}\n\n// NewTimeSeries creates a new TimeSeries using the function provided for creating new Observable.\nfunc NewTimeSeries(f func() Observable) *TimeSeries {\n\treturn NewTimeSeriesWithClock(f, defaultClockInstance)\n}\n\n// NewTimeSeriesWithClock creates a new TimeSeries using the function provided for creating new Observable and the clock for\n// assigning timestamps.\nfunc NewTimeSeriesWithClock(f func() Observable, clock Clock) *TimeSeries {\n\tts := new(TimeSeries)\n\tts.timeSeries.init(timeSeriesResolutions, f, timeSeriesNumBuckets, clock)\n\treturn ts\n}\n\n// MinuteHourSeries tracks data at granularities of 1 minute and 1 hour.\ntype MinuteHourSeries struct {\n\ttimeSeries\n}\n\n// NewMinuteHourSeries creates a new MinuteHourSeries using the function provided for creating new Observable.\nfunc NewMinuteHourSeries(f func() Observable) *MinuteHourSeries {\n\treturn NewMinuteHourSeriesWithClock(f, defaultClockInstance)\n}\n\n// NewMinuteHourSeriesWithClock creates a new MinuteHourSeries using the function provided for creating new Observable and the clock for\n// assigning timestamps.\nfunc NewMinuteHourSeriesWithClock(f func() Observable, clock Clock) *MinuteHourSeries {\n\tts := new(MinuteHourSeries)\n\tts.timeSeries.init(minuteHourSeriesResolutions, f,\n\t\tminuteHourSeriesNumBuckets, clock)\n\treturn ts\n}\n\nfunc (ts *MinuteHourSeries) Minute() Observable {\n\treturn ts.timeSeries.Latest(0, 60)\n}\n\nfunc (ts *MinuteHourSeries) Hour() Observable {\n\treturn ts.timeSeries.Latest(1, 60)\n}\n\nfunc minTime(a, b time.Time) time.Time {\n\tif a.Before(b) {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc maxTime(a, b time.Time) time.Time {\n\tif a.After(b) {\n\t\treturn a\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/trace/events.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage trace\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"text/tabwriter\"\n\t\"time\"\n)\n\nconst maxEventsPerLog = 100\n\ntype bucket struct {\n\tMaxErrAge time.Duration\n\tString    string\n}\n\nvar buckets = []bucket{\n\t{0, \"total\"},\n\t{10 * time.Second, \"errs<10s\"},\n\t{1 * time.Minute, \"errs<1m\"},\n\t{10 * time.Minute, \"errs<10m\"},\n\t{1 * time.Hour, \"errs<1h\"},\n\t{10 * time.Hour, \"errs<10h\"},\n\t{24000 * time.Hour, \"errors\"},\n}\n\n// RenderEvents renders the HTML page typically served at /debug/events.\n// It does not do any auth checking. The request may be nil.\n//\n// Most users will use the Events handler.\nfunc RenderEvents(w http.ResponseWriter, req *http.Request, sensitive bool) {\n\tnow := time.Now()\n\tdata := &struct {\n\t\tFamilies []string // family names\n\t\tBuckets  []bucket\n\t\tCounts   [][]int // eventLog count per family/bucket\n\n\t\t// Set when a bucket has been selected.\n\t\tFamily    string\n\t\tBucket    int\n\t\tEventLogs eventLogs\n\t\tExpanded  bool\n\t}{\n\t\tBuckets: buckets,\n\t}\n\n\tdata.Families = make([]string, 0, len(families))\n\tfamMu.RLock()\n\tfor name := range families {\n\t\tdata.Families = append(data.Families, name)\n\t}\n\tfamMu.RUnlock()\n\tsort.Strings(data.Families)\n\n\t// Count the number of eventLogs in each family for each error age.\n\tdata.Counts = make([][]int, len(data.Families))\n\tfor i, name := range data.Families {\n\t\t// TODO(sameer): move this loop under the family lock.\n\t\tf := getEventFamily(name)\n\t\tdata.Counts[i] = make([]int, len(data.Buckets))\n\t\tfor j, b := range data.Buckets {\n\t\t\tdata.Counts[i][j] = f.Count(now, b.MaxErrAge)\n\t\t}\n\t}\n\n\tif req != nil {\n\t\tvar ok bool\n\t\tdata.Family, data.Bucket, ok = parseEventsArgs(req)\n\t\tif !ok {\n\t\t\t// No-op\n\t\t} else {\n\t\t\tdata.EventLogs = getEventFamily(data.Family).Copy(now, buckets[data.Bucket].MaxErrAge)\n\t\t}\n\t\tif data.EventLogs != nil {\n\t\t\tdefer data.EventLogs.Free()\n\t\t\tsort.Sort(data.EventLogs)\n\t\t}\n\t\tif exp, err := strconv.ParseBool(req.FormValue(\"exp\")); err == nil {\n\t\t\tdata.Expanded = exp\n\t\t}\n\t}\n\n\tfamMu.RLock()\n\tdefer famMu.RUnlock()\n\tif err := eventsTmpl().Execute(w, data); err != nil {\n\t\tlog.Printf(\"net/trace: Failed executing template: %v\", err)\n\t}\n}\n\nfunc parseEventsArgs(req *http.Request) (fam string, b int, ok bool) {\n\tfam, bStr := req.FormValue(\"fam\"), req.FormValue(\"b\")\n\tif fam == \"\" || bStr == \"\" {\n\t\treturn \"\", 0, false\n\t}\n\tb, err := strconv.Atoi(bStr)\n\tif err != nil || b < 0 || b >= len(buckets) {\n\t\treturn \"\", 0, false\n\t}\n\treturn fam, b, true\n}\n\n// An EventLog provides a log of events associated with a specific object.\ntype EventLog interface {\n\t// Printf formats its arguments with fmt.Sprintf and adds the\n\t// result to the event log.\n\tPrintf(format string, a ...interface{})\n\n\t// Errorf is like Printf, but it marks this event as an error.\n\tErrorf(format string, a ...interface{})\n\n\t// Finish declares that this event log is complete.\n\t// The event log should not be used after calling this method.\n\tFinish()\n}\n\n// NewEventLog returns a new EventLog with the specified family name\n// and title.\nfunc NewEventLog(family, title string) EventLog {\n\tel := newEventLog()\n\tel.ref()\n\tel.Family, el.Title = family, title\n\tel.Start = time.Now()\n\tel.events = make([]logEntry, 0, maxEventsPerLog)\n\tel.stack = make([]uintptr, 32)\n\tn := runtime.Callers(2, el.stack)\n\tel.stack = el.stack[:n]\n\n\tgetEventFamily(family).add(el)\n\treturn el\n}\n\nfunc (el *eventLog) Finish() {\n\tgetEventFamily(el.Family).remove(el)\n\tel.unref() // matches ref in New\n}\n\nvar (\n\tfamMu    sync.RWMutex\n\tfamilies = make(map[string]*eventFamily) // family name => family\n)\n\nfunc getEventFamily(fam string) *eventFamily {\n\tfamMu.Lock()\n\tdefer famMu.Unlock()\n\tf := families[fam]\n\tif f == nil {\n\t\tf = &eventFamily{}\n\t\tfamilies[fam] = f\n\t}\n\treturn f\n}\n\ntype eventFamily struct {\n\tmu        sync.RWMutex\n\teventLogs eventLogs\n}\n\nfunc (f *eventFamily) add(el *eventLog) {\n\tf.mu.Lock()\n\tf.eventLogs = append(f.eventLogs, el)\n\tf.mu.Unlock()\n}\n\nfunc (f *eventFamily) remove(el *eventLog) {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\tfor i, el0 := range f.eventLogs {\n\t\tif el == el0 {\n\t\t\tcopy(f.eventLogs[i:], f.eventLogs[i+1:])\n\t\t\tf.eventLogs = f.eventLogs[:len(f.eventLogs)-1]\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (f *eventFamily) Count(now time.Time, maxErrAge time.Duration) (n int) {\n\tf.mu.RLock()\n\tdefer f.mu.RUnlock()\n\tfor _, el := range f.eventLogs {\n\t\tif el.hasRecentError(now, maxErrAge) {\n\t\t\tn++\n\t\t}\n\t}\n\treturn\n}\n\nfunc (f *eventFamily) Copy(now time.Time, maxErrAge time.Duration) (els eventLogs) {\n\tf.mu.RLock()\n\tdefer f.mu.RUnlock()\n\tels = make(eventLogs, 0, len(f.eventLogs))\n\tfor _, el := range f.eventLogs {\n\t\tif el.hasRecentError(now, maxErrAge) {\n\t\t\tel.ref()\n\t\t\tels = append(els, el)\n\t\t}\n\t}\n\treturn\n}\n\ntype eventLogs []*eventLog\n\n// Free calls unref on each element of the list.\nfunc (els eventLogs) Free() {\n\tfor _, el := range els {\n\t\tel.unref()\n\t}\n}\n\n// eventLogs may be sorted in reverse chronological order.\nfunc (els eventLogs) Len() int           { return len(els) }\nfunc (els eventLogs) Less(i, j int) bool { return els[i].Start.After(els[j].Start) }\nfunc (els eventLogs) Swap(i, j int)      { els[i], els[j] = els[j], els[i] }\n\n// A logEntry is a timestamped log entry in an event log.\ntype logEntry struct {\n\tWhen    time.Time\n\tElapsed time.Duration // since previous event in log\n\tNewDay  bool          // whether this event is on a different day to the previous event\n\tWhat    string\n\tIsErr   bool\n}\n\n// WhenString returns a string representation of the elapsed time of the event.\n// It will include the date if midnight was crossed.\nfunc (e logEntry) WhenString() string {\n\tif e.NewDay {\n\t\treturn e.When.Format(\"2006/01/02 15:04:05.000000\")\n\t}\n\treturn e.When.Format(\"15:04:05.000000\")\n}\n\n// An eventLog represents an active event log.\ntype eventLog struct {\n\t// Family is the top-level grouping of event logs to which this belongs.\n\tFamily string\n\n\t// Title is the title of this event log.\n\tTitle string\n\n\t// Timing information.\n\tStart time.Time\n\n\t// Call stack where this event log was created.\n\tstack []uintptr\n\n\t// Append-only sequence of events.\n\t//\n\t// TODO(sameer): change this to a ring buffer to avoid the array copy\n\t// when we hit maxEventsPerLog.\n\tmu            sync.RWMutex\n\tevents        []logEntry\n\tLastErrorTime time.Time\n\tdiscarded     int\n\n\trefs int32 // how many buckets this is in\n}\n\nfunc (el *eventLog) reset() {\n\t// Clear all but the mutex. Mutexes may not be copied, even when unlocked.\n\tel.Family = \"\"\n\tel.Title = \"\"\n\tel.Start = time.Time{}\n\tel.stack = nil\n\tel.events = nil\n\tel.LastErrorTime = time.Time{}\n\tel.discarded = 0\n\tel.refs = 0\n}\n\nfunc (el *eventLog) hasRecentError(now time.Time, maxErrAge time.Duration) bool {\n\tif maxErrAge == 0 {\n\t\treturn true\n\t}\n\tel.mu.RLock()\n\tdefer el.mu.RUnlock()\n\treturn now.Sub(el.LastErrorTime) < maxErrAge\n}\n\n// delta returns the elapsed time since the last event or the log start,\n// and whether it spans midnight.\n// L >= el.mu\nfunc (el *eventLog) delta(t time.Time) (time.Duration, bool) {\n\tif len(el.events) == 0 {\n\t\treturn t.Sub(el.Start), false\n\t}\n\tprev := el.events[len(el.events)-1].When\n\treturn t.Sub(prev), prev.Day() != t.Day()\n\n}\n\nfunc (el *eventLog) Printf(format string, a ...interface{}) {\n\tel.printf(false, format, a...)\n}\n\nfunc (el *eventLog) Errorf(format string, a ...interface{}) {\n\tel.printf(true, format, a...)\n}\n\nfunc (el *eventLog) printf(isErr bool, format string, a ...interface{}) {\n\te := logEntry{When: time.Now(), IsErr: isErr, What: fmt.Sprintf(format, a...)}\n\tel.mu.Lock()\n\te.Elapsed, e.NewDay = el.delta(e.When)\n\tif len(el.events) < maxEventsPerLog {\n\t\tel.events = append(el.events, e)\n\t} else {\n\t\t// Discard the oldest event.\n\t\tif el.discarded == 0 {\n\t\t\t// el.discarded starts at two to count for the event it\n\t\t\t// is replacing, plus the next one that we are about to\n\t\t\t// drop.\n\t\t\tel.discarded = 2\n\t\t} else {\n\t\t\tel.discarded++\n\t\t}\n\t\t// TODO(sameer): if this causes allocations on a critical path,\n\t\t// change eventLog.What to be a fmt.Stringer, as in trace.go.\n\t\tel.events[0].What = fmt.Sprintf(\"(%d events discarded)\", el.discarded)\n\t\t// The timestamp of the discarded meta-event should be\n\t\t// the time of the last event it is representing.\n\t\tel.events[0].When = el.events[1].When\n\t\tcopy(el.events[1:], el.events[2:])\n\t\tel.events[maxEventsPerLog-1] = e\n\t}\n\tif e.IsErr {\n\t\tel.LastErrorTime = e.When\n\t}\n\tel.mu.Unlock()\n}\n\nfunc (el *eventLog) ref() {\n\tatomic.AddInt32(&el.refs, 1)\n}\n\nfunc (el *eventLog) unref() {\n\tif atomic.AddInt32(&el.refs, -1) == 0 {\n\t\tfreeEventLog(el)\n\t}\n}\n\nfunc (el *eventLog) When() string {\n\treturn el.Start.Format(\"2006/01/02 15:04:05.000000\")\n}\n\nfunc (el *eventLog) ElapsedTime() string {\n\telapsed := time.Since(el.Start)\n\treturn fmt.Sprintf(\"%.6f\", elapsed.Seconds())\n}\n\nfunc (el *eventLog) Stack() string {\n\tbuf := new(bytes.Buffer)\n\ttw := tabwriter.NewWriter(buf, 1, 8, 1, '\\t', 0)\n\tprintStackRecord(tw, el.stack)\n\ttw.Flush()\n\treturn buf.String()\n}\n\n// printStackRecord prints the function + source line information\n// for a single stack trace.\n// Adapted from runtime/pprof/pprof.go.\nfunc printStackRecord(w io.Writer, stk []uintptr) {\n\tfor _, pc := range stk {\n\t\tf := runtime.FuncForPC(pc)\n\t\tif f == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfile, line := f.FileLine(pc)\n\t\tname := f.Name()\n\t\t// Hide runtime.goexit and any runtime functions at the beginning.\n\t\tif strings.HasPrefix(name, \"runtime.\") {\n\t\t\tcontinue\n\t\t}\n\t\tfmt.Fprintf(w, \"#   %s\\t%s:%d\\n\", name, file, line)\n\t}\n}\n\nfunc (el *eventLog) Events() []logEntry {\n\tel.mu.RLock()\n\tdefer el.mu.RUnlock()\n\treturn el.events\n}\n\n// freeEventLogs is a freelist of *eventLog\nvar freeEventLogs = make(chan *eventLog, 1000)\n\n// newEventLog returns a event log ready to use.\nfunc newEventLog() *eventLog {\n\tselect {\n\tcase el := <-freeEventLogs:\n\t\treturn el\n\tdefault:\n\t\treturn new(eventLog)\n\t}\n}\n\n// freeEventLog adds el to freeEventLogs if there's room.\n// This is non-blocking.\nfunc freeEventLog(el *eventLog) {\n\tel.reset()\n\tselect {\n\tcase freeEventLogs <- el:\n\tdefault:\n\t}\n}\n\nvar eventsTmplCache *template.Template\nvar eventsTmplOnce sync.Once\n\nfunc eventsTmpl() *template.Template {\n\teventsTmplOnce.Do(func() {\n\t\teventsTmplCache = template.Must(template.New(\"events\").Funcs(template.FuncMap{\n\t\t\t\"elapsed\":   elapsed,\n\t\t\t\"trimSpace\": strings.TrimSpace,\n\t\t}).Parse(eventsHTML))\n\t})\n\treturn eventsTmplCache\n}\n\nconst eventsHTML = `\n<html>\n\t<head>\n\t\t<title>events</title>\n\t</head>\n\t<style type=\"text/css\">\n\t\tbody {\n\t\t\tfont-family: sans-serif;\n\t\t}\n\t\ttable#req-status td.family {\n\t\t\tpadding-right: 2em;\n\t\t}\n\t\ttable#req-status td.active {\n\t\t\tpadding-right: 1em;\n\t\t}\n\t\ttable#req-status td.empty {\n\t\t\tcolor: #aaa;\n\t\t}\n\t\ttable#reqs {\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\ttable#reqs tr.first {\n\t\t\t{{if $.Expanded}}font-weight: bold;{{end}}\n\t\t}\n\t\ttable#reqs td {\n\t\t\tfont-family: monospace;\n\t\t}\n\t\ttable#reqs td.when {\n\t\t\ttext-align: right;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\ttable#reqs td.elapsed {\n\t\t\tpadding: 0 0.5em;\n\t\t\ttext-align: right;\n\t\t\twhite-space: pre;\n\t\t\twidth: 10em;\n\t\t}\n\t\taddress {\n\t\t\tfont-size: smaller;\n\t\t\tmargin-top: 5em;\n\t\t}\n\t</style>\n\t<body>\n\n<h1>/debug/events</h1>\n\n<table id=\"req-status\">\n\t{{range $i, $fam := .Families}}\n\t<tr>\n\t\t<td class=\"family\">{{$fam}}</td>\n\n\t        {{range $j, $bucket := $.Buckets}}\n\t        {{$n := index $.Counts $i $j}}\n\t\t<td class=\"{{if not $bucket.MaxErrAge}}active{{end}}{{if not $n}}empty{{end}}\">\n\t                {{if $n}}<a href=\"?fam={{$fam}}&b={{$j}}{{if $.Expanded}}&exp=1{{end}}\">{{end}}\n\t\t        [{{$n}} {{$bucket.String}}]\n\t\t\t{{if $n}}</a>{{end}}\n\t\t</td>\n                {{end}}\n\n\t</tr>{{end}}\n</table>\n\n{{if $.EventLogs}}\n<hr />\n<h3>Family: {{$.Family}}</h3>\n\n{{if $.Expanded}}<a href=\"?fam={{$.Family}}&b={{$.Bucket}}\">{{end}}\n[Summary]{{if $.Expanded}}</a>{{end}}\n\n{{if not $.Expanded}}<a href=\"?fam={{$.Family}}&b={{$.Bucket}}&exp=1\">{{end}}\n[Expanded]{{if not $.Expanded}}</a>{{end}}\n\n<table id=\"reqs\">\n\t<tr><th>When</th><th>Elapsed</th></tr>\n\t{{range $el := $.EventLogs}}\n\t<tr class=\"first\">\n\t\t<td class=\"when\">{{$el.When}}</td>\n\t\t<td class=\"elapsed\">{{$el.ElapsedTime}}</td>\n\t\t<td>{{$el.Title}}\n\t</tr>\n\t{{if $.Expanded}}\n\t<tr>\n\t\t<td class=\"when\"></td>\n\t\t<td class=\"elapsed\"></td>\n\t\t<td><pre>{{$el.Stack|trimSpace}}</pre></td>\n\t</tr>\n\t{{range $el.Events}}\n\t<tr>\n\t\t<td class=\"when\">{{.WhenString}}</td>\n\t\t<td class=\"elapsed\">{{elapsed .Elapsed}}</td>\n\t\t<td>.{{if .IsErr}}E{{else}}.{{end}}. {{.What}}</td>\n\t</tr>\n\t{{end}}\n\t{{end}}\n\t{{end}}\n</table>\n{{end}}\n\t</body>\n</html>\n`\n"
  },
  {
    "path": "vendor/golang.org/x/net/trace/histogram.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage trace\n\n// This file implements histogramming for RPC statistics collection.\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"log\"\n\t\"math\"\n\t\"sync\"\n\n\t\"golang.org/x/net/internal/timeseries\"\n)\n\nconst (\n\tbucketCount = 38\n)\n\n// histogram keeps counts of values in buckets that are spaced\n// out in powers of 2: 0-1, 2-3, 4-7...\n// histogram implements timeseries.Observable\ntype histogram struct {\n\tsum          int64   // running total of measurements\n\tsumOfSquares float64 // square of running total\n\tbuckets      []int64 // bucketed values for histogram\n\tvalue        int     // holds a single value as an optimization\n\tvalueCount   int64   // number of values recorded for single value\n}\n\n// addMeasurement records a value measurement observation to the histogram.\nfunc (h *histogram) addMeasurement(value int64) {\n\t// TODO: assert invariant\n\th.sum += value\n\th.sumOfSquares += float64(value) * float64(value)\n\n\tbucketIndex := getBucket(value)\n\n\tif h.valueCount == 0 || (h.valueCount > 0 && h.value == bucketIndex) {\n\t\th.value = bucketIndex\n\t\th.valueCount++\n\t} else {\n\t\th.allocateBuckets()\n\t\th.buckets[bucketIndex]++\n\t}\n}\n\nfunc (h *histogram) allocateBuckets() {\n\tif h.buckets == nil {\n\t\th.buckets = make([]int64, bucketCount)\n\t\th.buckets[h.value] = h.valueCount\n\t\th.value = 0\n\t\th.valueCount = -1\n\t}\n}\n\nfunc log2(i int64) int {\n\tn := 0\n\tfor ; i >= 0x100; i >>= 8 {\n\t\tn += 8\n\t}\n\tfor ; i > 0; i >>= 1 {\n\t\tn += 1\n\t}\n\treturn n\n}\n\nfunc getBucket(i int64) (index int) {\n\tindex = log2(i) - 1\n\tif index < 0 {\n\t\tindex = 0\n\t}\n\tif index >= bucketCount {\n\t\tindex = bucketCount - 1\n\t}\n\treturn\n}\n\n// Total returns the number of recorded observations.\nfunc (h *histogram) total() (total int64) {\n\tif h.valueCount >= 0 {\n\t\ttotal = h.valueCount\n\t}\n\tfor _, val := range h.buckets {\n\t\ttotal += int64(val)\n\t}\n\treturn\n}\n\n// Average returns the average value of recorded observations.\nfunc (h *histogram) average() float64 {\n\tt := h.total()\n\tif t == 0 {\n\t\treturn 0\n\t}\n\treturn float64(h.sum) / float64(t)\n}\n\n// Variance returns the variance of recorded observations.\nfunc (h *histogram) variance() float64 {\n\tt := float64(h.total())\n\tif t == 0 {\n\t\treturn 0\n\t}\n\ts := float64(h.sum) / t\n\treturn h.sumOfSquares/t - s*s\n}\n\n// StandardDeviation returns the standard deviation of recorded observations.\nfunc (h *histogram) standardDeviation() float64 {\n\treturn math.Sqrt(h.variance())\n}\n\n// PercentileBoundary estimates the value that the given fraction of recorded\n// observations are less than.\nfunc (h *histogram) percentileBoundary(percentile float64) int64 {\n\ttotal := h.total()\n\n\t// Corner cases (make sure result is strictly less than Total())\n\tif total == 0 {\n\t\treturn 0\n\t} else if total == 1 {\n\t\treturn int64(h.average())\n\t}\n\n\tpercentOfTotal := round(float64(total) * percentile)\n\tvar runningTotal int64\n\n\tfor i := range h.buckets {\n\t\tvalue := h.buckets[i]\n\t\trunningTotal += value\n\t\tif runningTotal == percentOfTotal {\n\t\t\t// We hit an exact bucket boundary. If the next bucket has data, it is a\n\t\t\t// good estimate of the value. If the bucket is empty, we interpolate the\n\t\t\t// midpoint between the next bucket's boundary and the next non-zero\n\t\t\t// bucket. If the remaining buckets are all empty, then we use the\n\t\t\t// boundary for the next bucket as the estimate.\n\t\t\tj := uint8(i + 1)\n\t\t\tmin := bucketBoundary(j)\n\t\t\tif runningTotal < total {\n\t\t\t\tfor h.buckets[j] == 0 {\n\t\t\t\t\tj++\n\t\t\t\t}\n\t\t\t}\n\t\t\tmax := bucketBoundary(j)\n\t\t\treturn min + round(float64(max-min)/2)\n\t\t} else if runningTotal > percentOfTotal {\n\t\t\t// The value is in this bucket. Interpolate the value.\n\t\t\tdelta := runningTotal - percentOfTotal\n\t\t\tpercentBucket := float64(value-delta) / float64(value)\n\t\t\tbucketMin := bucketBoundary(uint8(i))\n\t\t\tnextBucketMin := bucketBoundary(uint8(i + 1))\n\t\t\tbucketSize := nextBucketMin - bucketMin\n\t\t\treturn bucketMin + round(percentBucket*float64(bucketSize))\n\t\t}\n\t}\n\treturn bucketBoundary(bucketCount - 1)\n}\n\n// Median returns the estimated median of the observed values.\nfunc (h *histogram) median() int64 {\n\treturn h.percentileBoundary(0.5)\n}\n\n// Add adds other to h.\nfunc (h *histogram) Add(other timeseries.Observable) {\n\to := other.(*histogram)\n\tif o.valueCount == 0 {\n\t\t// Other histogram is empty\n\t} else if h.valueCount >= 0 && o.valueCount > 0 && h.value == o.value {\n\t\t// Both have a single bucketed value, aggregate them\n\t\th.valueCount += o.valueCount\n\t} else {\n\t\t// Two different values necessitate buckets in this histogram\n\t\th.allocateBuckets()\n\t\tif o.valueCount >= 0 {\n\t\t\th.buckets[o.value] += o.valueCount\n\t\t} else {\n\t\t\tfor i := range h.buckets {\n\t\t\t\th.buckets[i] += o.buckets[i]\n\t\t\t}\n\t\t}\n\t}\n\th.sumOfSquares += o.sumOfSquares\n\th.sum += o.sum\n}\n\n// Clear resets the histogram to an empty state, removing all observed values.\nfunc (h *histogram) Clear() {\n\th.buckets = nil\n\th.value = 0\n\th.valueCount = 0\n\th.sum = 0\n\th.sumOfSquares = 0\n}\n\n// CopyFrom copies from other, which must be a *histogram, into h.\nfunc (h *histogram) CopyFrom(other timeseries.Observable) {\n\to := other.(*histogram)\n\tif o.valueCount == -1 {\n\t\th.allocateBuckets()\n\t\tcopy(h.buckets, o.buckets)\n\t}\n\th.sum = o.sum\n\th.sumOfSquares = o.sumOfSquares\n\th.value = o.value\n\th.valueCount = o.valueCount\n}\n\n// Multiply scales the histogram by the specified ratio.\nfunc (h *histogram) Multiply(ratio float64) {\n\tif h.valueCount == -1 {\n\t\tfor i := range h.buckets {\n\t\t\th.buckets[i] = int64(float64(h.buckets[i]) * ratio)\n\t\t}\n\t} else {\n\t\th.valueCount = int64(float64(h.valueCount) * ratio)\n\t}\n\th.sum = int64(float64(h.sum) * ratio)\n\th.sumOfSquares = h.sumOfSquares * ratio\n}\n\n// New creates a new histogram.\nfunc (h *histogram) New() timeseries.Observable {\n\tr := new(histogram)\n\tr.Clear()\n\treturn r\n}\n\nfunc (h *histogram) String() string {\n\treturn fmt.Sprintf(\"%d, %f, %d, %d, %v\",\n\t\th.sum, h.sumOfSquares, h.value, h.valueCount, h.buckets)\n}\n\n// round returns the closest int64 to the argument\nfunc round(in float64) int64 {\n\treturn int64(math.Floor(in + 0.5))\n}\n\n// bucketBoundary returns the first value in the bucket.\nfunc bucketBoundary(bucket uint8) int64 {\n\tif bucket == 0 {\n\t\treturn 0\n\t}\n\treturn 1 << bucket\n}\n\n// bucketData holds data about a specific bucket for use in distTmpl.\ntype bucketData struct {\n\tLower, Upper       int64\n\tN                  int64\n\tPct, CumulativePct float64\n\tGraphWidth         int\n}\n\n// data holds data about a Distribution for use in distTmpl.\ntype data struct {\n\tBuckets                 []*bucketData\n\tCount, Median           int64\n\tMean, StandardDeviation float64\n}\n\n// maxHTMLBarWidth is the maximum width of the HTML bar for visualizing buckets.\nconst maxHTMLBarWidth = 350.0\n\n// newData returns data representing h for use in distTmpl.\nfunc (h *histogram) newData() *data {\n\t// Force the allocation of buckets to simplify the rendering implementation\n\th.allocateBuckets()\n\t// We scale the bars on the right so that the largest bar is\n\t// maxHTMLBarWidth pixels in width.\n\tmaxBucket := int64(0)\n\tfor _, n := range h.buckets {\n\t\tif n > maxBucket {\n\t\t\tmaxBucket = n\n\t\t}\n\t}\n\ttotal := h.total()\n\tbarsizeMult := maxHTMLBarWidth / float64(maxBucket)\n\tvar pctMult float64\n\tif total == 0 {\n\t\tpctMult = 1.0\n\t} else {\n\t\tpctMult = 100.0 / float64(total)\n\t}\n\n\tbuckets := make([]*bucketData, len(h.buckets))\n\trunningTotal := int64(0)\n\tfor i, n := range h.buckets {\n\t\tif n == 0 {\n\t\t\tcontinue\n\t\t}\n\t\trunningTotal += n\n\t\tvar upperBound int64\n\t\tif i < bucketCount-1 {\n\t\t\tupperBound = bucketBoundary(uint8(i + 1))\n\t\t} else {\n\t\t\tupperBound = math.MaxInt64\n\t\t}\n\t\tbuckets[i] = &bucketData{\n\t\t\tLower:         bucketBoundary(uint8(i)),\n\t\t\tUpper:         upperBound,\n\t\t\tN:             n,\n\t\t\tPct:           float64(n) * pctMult,\n\t\t\tCumulativePct: float64(runningTotal) * pctMult,\n\t\t\tGraphWidth:    int(float64(n) * barsizeMult),\n\t\t}\n\t}\n\treturn &data{\n\t\tBuckets:           buckets,\n\t\tCount:             total,\n\t\tMedian:            h.median(),\n\t\tMean:              h.average(),\n\t\tStandardDeviation: h.standardDeviation(),\n\t}\n}\n\nfunc (h *histogram) html() template.HTML {\n\tbuf := new(bytes.Buffer)\n\tif err := distTmpl().Execute(buf, h.newData()); err != nil {\n\t\tbuf.Reset()\n\t\tlog.Printf(\"net/trace: couldn't execute template: %v\", err)\n\t}\n\treturn template.HTML(buf.String())\n}\n\nvar distTmplCache *template.Template\nvar distTmplOnce sync.Once\n\nfunc distTmpl() *template.Template {\n\tdistTmplOnce.Do(func() {\n\t\t// Input: data\n\t\tdistTmplCache = template.Must(template.New(\"distTmpl\").Parse(`\n<table>\n<tr>\n    <td style=\"padding:0.25em\">Count: {{.Count}}</td>\n    <td style=\"padding:0.25em\">Mean: {{printf \"%.0f\" .Mean}}</td>\n    <td style=\"padding:0.25em\">StdDev: {{printf \"%.0f\" .StandardDeviation}}</td>\n    <td style=\"padding:0.25em\">Median: {{.Median}}</td>\n</tr>\n</table>\n<hr>\n<table>\n{{range $b := .Buckets}}\n{{if $b}}\n  <tr>\n    <td style=\"padding:0 0 0 0.25em\">[</td>\n    <td style=\"text-align:right;padding:0 0.25em\">{{.Lower}},</td>\n    <td style=\"text-align:right;padding:0 0.25em\">{{.Upper}})</td>\n    <td style=\"text-align:right;padding:0 0.25em\">{{.N}}</td>\n    <td style=\"text-align:right;padding:0 0.25em\">{{printf \"%#.3f\" .Pct}}%</td>\n    <td style=\"text-align:right;padding:0 0.25em\">{{printf \"%#.3f\" .CumulativePct}}%</td>\n    <td><div style=\"background-color: blue; height: 1em; width: {{.GraphWidth}};\"></div></td>\n  </tr>\n{{end}}\n{{end}}\n</table>\n`))\n\t})\n\treturn distTmplCache\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/trace/trace.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/*\nPackage trace implements tracing of requests and long-lived objects.\nIt exports HTTP interfaces on /debug/requests and /debug/events.\n\nA trace.Trace provides tracing for short-lived objects, usually requests.\nA request handler might be implemented like this:\n\n\tfunc fooHandler(w http.ResponseWriter, req *http.Request) {\n\t\ttr := trace.New(\"mypkg.Foo\", req.URL.Path)\n\t\tdefer tr.Finish()\n\t\t...\n\t\ttr.LazyPrintf(\"some event %q happened\", str)\n\t\t...\n\t\tif err := somethingImportant(); err != nil {\n\t\t\ttr.LazyPrintf(\"somethingImportant failed: %v\", err)\n\t\t\ttr.SetError()\n\t\t}\n\t}\n\nThe /debug/requests HTTP endpoint organizes the traces by family,\nerrors, and duration.  It also provides histogram of request duration\nfor each family.\n\nA trace.EventLog provides tracing for long-lived objects, such as RPC\nconnections.\n\n\t// A Fetcher fetches URL paths for a single domain.\n\ttype Fetcher struct {\n\t\tdomain string\n\t\tevents trace.EventLog\n\t}\n\n\tfunc NewFetcher(domain string) *Fetcher {\n\t\treturn &Fetcher{\n\t\t\tdomain,\n\t\t\ttrace.NewEventLog(\"mypkg.Fetcher\", domain),\n\t\t}\n\t}\n\n\tfunc (f *Fetcher) Fetch(path string) (string, error) {\n\t\tresp, err := http.Get(\"http://\" + f.domain + \"/\" + path)\n\t\tif err != nil {\n\t\t\tf.events.Errorf(\"Get(%q) = %v\", path, err)\n\t\t\treturn \"\", err\n\t\t}\n\t\tf.events.Printf(\"Get(%q) = %s\", path, resp.Status)\n\t\t...\n\t}\n\n\tfunc (f *Fetcher) Close() error {\n\t\tf.events.Finish()\n\t\treturn nil\n\t}\n\nThe /debug/events HTTP endpoint organizes the event logs by family and\nby time since the last error.  The expanded view displays recent log\nentries and the log's call stack.\n*/\npackage trace // import \"golang.org/x/net/trace\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"io\"\n\t\"log\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strconv\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"golang.org/x/net/internal/timeseries\"\n)\n\n// DebugUseAfterFinish controls whether to debug uses of Trace values after finishing.\n// FOR DEBUGGING ONLY. This will slow down the program.\nvar DebugUseAfterFinish = false\n\n// HTTP ServeMux paths.\nconst (\n\tdebugRequestsPath = \"/debug/requests\"\n\tdebugEventsPath   = \"/debug/events\"\n)\n\n// AuthRequest determines whether a specific request is permitted to load the\n// /debug/requests or /debug/events pages.\n//\n// It returns two bools; the first indicates whether the page may be viewed at all,\n// and the second indicates whether sensitive events will be shown.\n//\n// AuthRequest may be replaced by a program to customize its authorization requirements.\n//\n// The default AuthRequest function returns (true, true) if and only if the request\n// comes from localhost/127.0.0.1/[::1].\nvar AuthRequest = func(req *http.Request) (any, sensitive bool) {\n\t// RemoteAddr is commonly in the form \"IP\" or \"IP:port\".\n\t// If it is in the form \"IP:port\", split off the port.\n\thost, _, err := net.SplitHostPort(req.RemoteAddr)\n\tif err != nil {\n\t\thost = req.RemoteAddr\n\t}\n\tswitch host {\n\tcase \"localhost\", \"127.0.0.1\", \"::1\":\n\t\treturn true, true\n\tdefault:\n\t\treturn false, false\n\t}\n}\n\nfunc init() {\n\t_, pat := http.DefaultServeMux.Handler(&http.Request{URL: &url.URL{Path: debugRequestsPath}})\n\tif pat == debugRequestsPath {\n\t\tpanic(\"/debug/requests is already registered. You may have two independent copies of \" +\n\t\t\t\"golang.org/x/net/trace in your binary, trying to maintain separate state. This may \" +\n\t\t\t\"involve a vendored copy of golang.org/x/net/trace.\")\n\t}\n\n\t// TODO(jbd): Serve Traces from /debug/traces in the future?\n\t// There is no requirement for a request to be present to have traces.\n\thttp.HandleFunc(debugRequestsPath, Traces)\n\thttp.HandleFunc(debugEventsPath, Events)\n}\n\n// NewContext returns a copy of the parent context\n// and associates it with a Trace.\nfunc NewContext(ctx context.Context, tr Trace) context.Context {\n\treturn context.WithValue(ctx, contextKey, tr)\n}\n\n// FromContext returns the Trace bound to the context, if any.\nfunc FromContext(ctx context.Context) (tr Trace, ok bool) {\n\ttr, ok = ctx.Value(contextKey).(Trace)\n\treturn\n}\n\n// Traces responds with traces from the program.\n// The package initialization registers it in http.DefaultServeMux\n// at /debug/requests.\n//\n// It performs authorization by running AuthRequest.\nfunc Traces(w http.ResponseWriter, req *http.Request) {\n\tany, sensitive := AuthRequest(req)\n\tif !any {\n\t\thttp.Error(w, \"not allowed\", http.StatusUnauthorized)\n\t\treturn\n\t}\n\tw.Header().Set(\"Content-Type\", \"text/html; charset=utf-8\")\n\tRender(w, req, sensitive)\n}\n\n// Events responds with a page of events collected by EventLogs.\n// The package initialization registers it in http.DefaultServeMux\n// at /debug/events.\n//\n// It performs authorization by running AuthRequest.\nfunc Events(w http.ResponseWriter, req *http.Request) {\n\tany, sensitive := AuthRequest(req)\n\tif !any {\n\t\thttp.Error(w, \"not allowed\", http.StatusUnauthorized)\n\t\treturn\n\t}\n\tw.Header().Set(\"Content-Type\", \"text/html; charset=utf-8\")\n\tRenderEvents(w, req, sensitive)\n}\n\n// Render renders the HTML page typically served at /debug/requests.\n// It does not do any auth checking. The request may be nil.\n//\n// Most users will use the Traces handler.\nfunc Render(w io.Writer, req *http.Request, sensitive bool) {\n\tdata := &struct {\n\t\tFamilies         []string\n\t\tActiveTraceCount map[string]int\n\t\tCompletedTraces  map[string]*family\n\n\t\t// Set when a bucket has been selected.\n\t\tTraces        traceList\n\t\tFamily        string\n\t\tBucket        int\n\t\tExpanded      bool\n\t\tTraced        bool\n\t\tActive        bool\n\t\tShowSensitive bool // whether to show sensitive events\n\n\t\tHistogram       template.HTML\n\t\tHistogramWindow string // e.g. \"last minute\", \"last hour\", \"all time\"\n\n\t\t// If non-zero, the set of traces is a partial set,\n\t\t// and this is the total number.\n\t\tTotal int\n\t}{\n\t\tCompletedTraces: completedTraces,\n\t}\n\n\tdata.ShowSensitive = sensitive\n\tif req != nil {\n\t\t// Allow show_sensitive=0 to force hiding of sensitive data for testing.\n\t\t// This only goes one way; you can't use show_sensitive=1 to see things.\n\t\tif req.FormValue(\"show_sensitive\") == \"0\" {\n\t\t\tdata.ShowSensitive = false\n\t\t}\n\n\t\tif exp, err := strconv.ParseBool(req.FormValue(\"exp\")); err == nil {\n\t\t\tdata.Expanded = exp\n\t\t}\n\t\tif exp, err := strconv.ParseBool(req.FormValue(\"rtraced\")); err == nil {\n\t\t\tdata.Traced = exp\n\t\t}\n\t}\n\n\tcompletedMu.RLock()\n\tdata.Families = make([]string, 0, len(completedTraces))\n\tfor fam := range completedTraces {\n\t\tdata.Families = append(data.Families, fam)\n\t}\n\tcompletedMu.RUnlock()\n\tsort.Strings(data.Families)\n\n\t// We are careful here to minimize the time spent locking activeMu,\n\t// since that lock is required every time an RPC starts and finishes.\n\tdata.ActiveTraceCount = make(map[string]int, len(data.Families))\n\tactiveMu.RLock()\n\tfor fam, s := range activeTraces {\n\t\tdata.ActiveTraceCount[fam] = s.Len()\n\t}\n\tactiveMu.RUnlock()\n\n\tvar ok bool\n\tdata.Family, data.Bucket, ok = parseArgs(req)\n\tswitch {\n\tcase !ok:\n\t\t// No-op\n\tcase data.Bucket == -1:\n\t\tdata.Active = true\n\t\tn := data.ActiveTraceCount[data.Family]\n\t\tdata.Traces = getActiveTraces(data.Family)\n\t\tif len(data.Traces) < n {\n\t\t\tdata.Total = n\n\t\t}\n\tcase data.Bucket < bucketsPerFamily:\n\t\tif b := lookupBucket(data.Family, data.Bucket); b != nil {\n\t\t\tdata.Traces = b.Copy(data.Traced)\n\t\t}\n\tdefault:\n\t\tif f := getFamily(data.Family, false); f != nil {\n\t\t\tvar obs timeseries.Observable\n\t\t\tf.LatencyMu.RLock()\n\t\t\tswitch o := data.Bucket - bucketsPerFamily; o {\n\t\t\tcase 0:\n\t\t\t\tobs = f.Latency.Minute()\n\t\t\t\tdata.HistogramWindow = \"last minute\"\n\t\t\tcase 1:\n\t\t\t\tobs = f.Latency.Hour()\n\t\t\t\tdata.HistogramWindow = \"last hour\"\n\t\t\tcase 2:\n\t\t\t\tobs = f.Latency.Total()\n\t\t\t\tdata.HistogramWindow = \"all time\"\n\t\t\t}\n\t\t\tf.LatencyMu.RUnlock()\n\t\t\tif obs != nil {\n\t\t\t\tdata.Histogram = obs.(*histogram).html()\n\t\t\t}\n\t\t}\n\t}\n\n\tif data.Traces != nil {\n\t\tdefer data.Traces.Free()\n\t\tsort.Sort(data.Traces)\n\t}\n\n\tcompletedMu.RLock()\n\tdefer completedMu.RUnlock()\n\tif err := pageTmpl().ExecuteTemplate(w, \"Page\", data); err != nil {\n\t\tlog.Printf(\"net/trace: Failed executing template: %v\", err)\n\t}\n}\n\nfunc parseArgs(req *http.Request) (fam string, b int, ok bool) {\n\tif req == nil {\n\t\treturn \"\", 0, false\n\t}\n\tfam, bStr := req.FormValue(\"fam\"), req.FormValue(\"b\")\n\tif fam == \"\" || bStr == \"\" {\n\t\treturn \"\", 0, false\n\t}\n\tb, err := strconv.Atoi(bStr)\n\tif err != nil || b < -1 {\n\t\treturn \"\", 0, false\n\t}\n\n\treturn fam, b, true\n}\n\nfunc lookupBucket(fam string, b int) *traceBucket {\n\tf := getFamily(fam, false)\n\tif f == nil || b < 0 || b >= len(f.Buckets) {\n\t\treturn nil\n\t}\n\treturn f.Buckets[b]\n}\n\ntype contextKeyT string\n\nvar contextKey = contextKeyT(\"golang.org/x/net/trace.Trace\")\n\n// Trace represents an active request.\ntype Trace interface {\n\t// LazyLog adds x to the event log. It will be evaluated each time the\n\t// /debug/requests page is rendered. Any memory referenced by x will be\n\t// pinned until the trace is finished and later discarded.\n\tLazyLog(x fmt.Stringer, sensitive bool)\n\n\t// LazyPrintf evaluates its arguments with fmt.Sprintf each time the\n\t// /debug/requests page is rendered. Any memory referenced by a will be\n\t// pinned until the trace is finished and later discarded.\n\tLazyPrintf(format string, a ...interface{})\n\n\t// SetError declares that this trace resulted in an error.\n\tSetError()\n\n\t// SetRecycler sets a recycler for the trace.\n\t// f will be called for each event passed to LazyLog at a time when\n\t// it is no longer required, whether while the trace is still active\n\t// and the event is discarded, or when a completed trace is discarded.\n\tSetRecycler(f func(interface{}))\n\n\t// SetTraceInfo sets the trace info for the trace.\n\t// This is currently unused.\n\tSetTraceInfo(traceID, spanID uint64)\n\n\t// SetMaxEvents sets the maximum number of events that will be stored\n\t// in the trace. This has no effect if any events have already been\n\t// added to the trace.\n\tSetMaxEvents(m int)\n\n\t// Finish declares that this trace is complete.\n\t// The trace should not be used after calling this method.\n\tFinish()\n}\n\ntype lazySprintf struct {\n\tformat string\n\ta      []interface{}\n}\n\nfunc (l *lazySprintf) String() string {\n\treturn fmt.Sprintf(l.format, l.a...)\n}\n\n// New returns a new Trace with the specified family and title.\nfunc New(family, title string) Trace {\n\ttr := newTrace()\n\ttr.ref()\n\ttr.Family, tr.Title = family, title\n\ttr.Start = time.Now()\n\ttr.maxEvents = maxEventsPerTrace\n\ttr.events = tr.eventsBuf[:0]\n\n\tactiveMu.RLock()\n\ts := activeTraces[tr.Family]\n\tactiveMu.RUnlock()\n\tif s == nil {\n\t\tactiveMu.Lock()\n\t\ts = activeTraces[tr.Family] // check again\n\t\tif s == nil {\n\t\t\ts = new(traceSet)\n\t\t\tactiveTraces[tr.Family] = s\n\t\t}\n\t\tactiveMu.Unlock()\n\t}\n\ts.Add(tr)\n\n\t// Trigger allocation of the completed trace structure for this family.\n\t// This will cause the family to be present in the request page during\n\t// the first trace of this family. We don't care about the return value,\n\t// nor is there any need for this to run inline, so we execute it in its\n\t// own goroutine, but only if the family isn't allocated yet.\n\tcompletedMu.RLock()\n\tif _, ok := completedTraces[tr.Family]; !ok {\n\t\tgo allocFamily(tr.Family)\n\t}\n\tcompletedMu.RUnlock()\n\n\treturn tr\n}\n\nfunc (tr *trace) Finish() {\n\telapsed := time.Since(tr.Start)\n\ttr.mu.Lock()\n\ttr.Elapsed = elapsed\n\ttr.mu.Unlock()\n\n\tif DebugUseAfterFinish {\n\t\tbuf := make([]byte, 4<<10) // 4 KB should be enough\n\t\tn := runtime.Stack(buf, false)\n\t\ttr.finishStack = buf[:n]\n\t}\n\n\tactiveMu.RLock()\n\tm := activeTraces[tr.Family]\n\tactiveMu.RUnlock()\n\tm.Remove(tr)\n\n\tf := getFamily(tr.Family, true)\n\ttr.mu.RLock() // protects tr fields in Cond.match calls\n\tfor _, b := range f.Buckets {\n\t\tif b.Cond.match(tr) {\n\t\t\tb.Add(tr)\n\t\t}\n\t}\n\ttr.mu.RUnlock()\n\n\t// Add a sample of elapsed time as microseconds to the family's timeseries\n\th := new(histogram)\n\th.addMeasurement(elapsed.Nanoseconds() / 1e3)\n\tf.LatencyMu.Lock()\n\tf.Latency.Add(h)\n\tf.LatencyMu.Unlock()\n\n\ttr.unref() // matches ref in New\n}\n\nconst (\n\tbucketsPerFamily    = 9\n\ttracesPerBucket     = 10\n\tmaxActiveTraces     = 20 // Maximum number of active traces to show.\n\tmaxEventsPerTrace   = 10\n\tnumHistogramBuckets = 38\n)\n\nvar (\n\t// The active traces.\n\tactiveMu     sync.RWMutex\n\tactiveTraces = make(map[string]*traceSet) // family -> traces\n\n\t// Families of completed traces.\n\tcompletedMu     sync.RWMutex\n\tcompletedTraces = make(map[string]*family) // family -> traces\n)\n\ntype traceSet struct {\n\tmu sync.RWMutex\n\tm  map[*trace]bool\n\n\t// We could avoid the entire map scan in FirstN by having a slice of all the traces\n\t// ordered by start time, and an index into that from the trace struct, with a periodic\n\t// repack of the slice after enough traces finish; we could also use a skip list or similar.\n\t// However, that would shift some of the expense from /debug/requests time to RPC time,\n\t// which is probably the wrong trade-off.\n}\n\nfunc (ts *traceSet) Len() int {\n\tts.mu.RLock()\n\tdefer ts.mu.RUnlock()\n\treturn len(ts.m)\n}\n\nfunc (ts *traceSet) Add(tr *trace) {\n\tts.mu.Lock()\n\tif ts.m == nil {\n\t\tts.m = make(map[*trace]bool)\n\t}\n\tts.m[tr] = true\n\tts.mu.Unlock()\n}\n\nfunc (ts *traceSet) Remove(tr *trace) {\n\tts.mu.Lock()\n\tdelete(ts.m, tr)\n\tts.mu.Unlock()\n}\n\n// FirstN returns the first n traces ordered by time.\nfunc (ts *traceSet) FirstN(n int) traceList {\n\tts.mu.RLock()\n\tdefer ts.mu.RUnlock()\n\n\tif n > len(ts.m) {\n\t\tn = len(ts.m)\n\t}\n\ttrl := make(traceList, 0, n)\n\n\t// Fast path for when no selectivity is needed.\n\tif n == len(ts.m) {\n\t\tfor tr := range ts.m {\n\t\t\ttr.ref()\n\t\t\ttrl = append(trl, tr)\n\t\t}\n\t\tsort.Sort(trl)\n\t\treturn trl\n\t}\n\n\t// Pick the oldest n traces.\n\t// This is inefficient. See the comment in the traceSet struct.\n\tfor tr := range ts.m {\n\t\t// Put the first n traces into trl in the order they occur.\n\t\t// When we have n, sort trl, and thereafter maintain its order.\n\t\tif len(trl) < n {\n\t\t\ttr.ref()\n\t\t\ttrl = append(trl, tr)\n\t\t\tif len(trl) == n {\n\t\t\t\t// This is guaranteed to happen exactly once during this loop.\n\t\t\t\tsort.Sort(trl)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif tr.Start.After(trl[n-1].Start) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Find where to insert this one.\n\t\ttr.ref()\n\t\ti := sort.Search(n, func(i int) bool { return trl[i].Start.After(tr.Start) })\n\t\ttrl[n-1].unref()\n\t\tcopy(trl[i+1:], trl[i:])\n\t\ttrl[i] = tr\n\t}\n\n\treturn trl\n}\n\nfunc getActiveTraces(fam string) traceList {\n\tactiveMu.RLock()\n\ts := activeTraces[fam]\n\tactiveMu.RUnlock()\n\tif s == nil {\n\t\treturn nil\n\t}\n\treturn s.FirstN(maxActiveTraces)\n}\n\nfunc getFamily(fam string, allocNew bool) *family {\n\tcompletedMu.RLock()\n\tf := completedTraces[fam]\n\tcompletedMu.RUnlock()\n\tif f == nil && allocNew {\n\t\tf = allocFamily(fam)\n\t}\n\treturn f\n}\n\nfunc allocFamily(fam string) *family {\n\tcompletedMu.Lock()\n\tdefer completedMu.Unlock()\n\tf := completedTraces[fam]\n\tif f == nil {\n\t\tf = newFamily()\n\t\tcompletedTraces[fam] = f\n\t}\n\treturn f\n}\n\n// family represents a set of trace buckets and associated latency information.\ntype family struct {\n\t// traces may occur in multiple buckets.\n\tBuckets [bucketsPerFamily]*traceBucket\n\n\t// latency time series\n\tLatencyMu sync.RWMutex\n\tLatency   *timeseries.MinuteHourSeries\n}\n\nfunc newFamily() *family {\n\treturn &family{\n\t\tBuckets: [bucketsPerFamily]*traceBucket{\n\t\t\t{Cond: minCond(0)},\n\t\t\t{Cond: minCond(50 * time.Millisecond)},\n\t\t\t{Cond: minCond(100 * time.Millisecond)},\n\t\t\t{Cond: minCond(200 * time.Millisecond)},\n\t\t\t{Cond: minCond(500 * time.Millisecond)},\n\t\t\t{Cond: minCond(1 * time.Second)},\n\t\t\t{Cond: minCond(10 * time.Second)},\n\t\t\t{Cond: minCond(100 * time.Second)},\n\t\t\t{Cond: errorCond{}},\n\t\t},\n\t\tLatency: timeseries.NewMinuteHourSeries(func() timeseries.Observable { return new(histogram) }),\n\t}\n}\n\n// traceBucket represents a size-capped bucket of historic traces,\n// along with a condition for a trace to belong to the bucket.\ntype traceBucket struct {\n\tCond cond\n\n\t// Ring buffer implementation of a fixed-size FIFO queue.\n\tmu     sync.RWMutex\n\tbuf    [tracesPerBucket]*trace\n\tstart  int // < tracesPerBucket\n\tlength int // <= tracesPerBucket\n}\n\nfunc (b *traceBucket) Add(tr *trace) {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\n\ti := b.start + b.length\n\tif i >= tracesPerBucket {\n\t\ti -= tracesPerBucket\n\t}\n\tif b.length == tracesPerBucket {\n\t\t// \"Remove\" an element from the bucket.\n\t\tb.buf[i].unref()\n\t\tb.start++\n\t\tif b.start == tracesPerBucket {\n\t\t\tb.start = 0\n\t\t}\n\t}\n\tb.buf[i] = tr\n\tif b.length < tracesPerBucket {\n\t\tb.length++\n\t}\n\ttr.ref()\n}\n\n// Copy returns a copy of the traces in the bucket.\n// If tracedOnly is true, only the traces with trace information will be returned.\n// The logs will be ref'd before returning; the caller should call\n// the Free method when it is done with them.\n// TODO(dsymonds): keep track of traced requests in separate buckets.\nfunc (b *traceBucket) Copy(tracedOnly bool) traceList {\n\tb.mu.RLock()\n\tdefer b.mu.RUnlock()\n\n\ttrl := make(traceList, 0, b.length)\n\tfor i, x := 0, b.start; i < b.length; i++ {\n\t\ttr := b.buf[x]\n\t\tif !tracedOnly || tr.spanID != 0 {\n\t\t\ttr.ref()\n\t\t\ttrl = append(trl, tr)\n\t\t}\n\t\tx++\n\t\tif x == b.length {\n\t\t\tx = 0\n\t\t}\n\t}\n\treturn trl\n}\n\nfunc (b *traceBucket) Empty() bool {\n\tb.mu.RLock()\n\tdefer b.mu.RUnlock()\n\treturn b.length == 0\n}\n\n// cond represents a condition on a trace.\ntype cond interface {\n\tmatch(t *trace) bool\n\tString() string\n}\n\ntype minCond time.Duration\n\nfunc (m minCond) match(t *trace) bool { return t.Elapsed >= time.Duration(m) }\nfunc (m minCond) String() string      { return fmt.Sprintf(\"≥%gs\", time.Duration(m).Seconds()) }\n\ntype errorCond struct{}\n\nfunc (e errorCond) match(t *trace) bool { return t.IsError }\nfunc (e errorCond) String() string      { return \"errors\" }\n\ntype traceList []*trace\n\n// Free calls unref on each element of the list.\nfunc (trl traceList) Free() {\n\tfor _, t := range trl {\n\t\tt.unref()\n\t}\n}\n\n// traceList may be sorted in reverse chronological order.\nfunc (trl traceList) Len() int           { return len(trl) }\nfunc (trl traceList) Less(i, j int) bool { return trl[i].Start.After(trl[j].Start) }\nfunc (trl traceList) Swap(i, j int)      { trl[i], trl[j] = trl[j], trl[i] }\n\n// An event is a timestamped log entry in a trace.\ntype event struct {\n\tWhen       time.Time\n\tElapsed    time.Duration // since previous event in trace\n\tNewDay     bool          // whether this event is on a different day to the previous event\n\tRecyclable bool          // whether this event was passed via LazyLog\n\tSensitive  bool          // whether this event contains sensitive information\n\tWhat       interface{}   // string or fmt.Stringer\n}\n\n// WhenString returns a string representation of the elapsed time of the event.\n// It will include the date if midnight was crossed.\nfunc (e event) WhenString() string {\n\tif e.NewDay {\n\t\treturn e.When.Format(\"2006/01/02 15:04:05.000000\")\n\t}\n\treturn e.When.Format(\"15:04:05.000000\")\n}\n\n// discarded represents a number of discarded events.\n// It is stored as *discarded to make it easier to update in-place.\ntype discarded int\n\nfunc (d *discarded) String() string {\n\treturn fmt.Sprintf(\"(%d events discarded)\", int(*d))\n}\n\n// trace represents an active or complete request,\n// either sent or received by this program.\ntype trace struct {\n\t// Family is the top-level grouping of traces to which this belongs.\n\tFamily string\n\n\t// Title is the title of this trace.\n\tTitle string\n\n\t// Start time of the this trace.\n\tStart time.Time\n\n\tmu        sync.RWMutex\n\tevents    []event // Append-only sequence of events (modulo discards).\n\tmaxEvents int\n\trecycler  func(interface{})\n\tIsError   bool          // Whether this trace resulted in an error.\n\tElapsed   time.Duration // Elapsed time for this trace, zero while active.\n\ttraceID   uint64        // Trace information if non-zero.\n\tspanID    uint64\n\n\trefs int32     // how many buckets this is in\n\tdisc discarded // scratch space to avoid allocation\n\n\tfinishStack []byte // where finish was called, if DebugUseAfterFinish is set\n\n\teventsBuf [4]event // preallocated buffer in case we only log a few events\n}\n\nfunc (tr *trace) reset() {\n\t// Clear all but the mutex. Mutexes may not be copied, even when unlocked.\n\ttr.Family = \"\"\n\ttr.Title = \"\"\n\ttr.Start = time.Time{}\n\n\ttr.mu.Lock()\n\ttr.Elapsed = 0\n\ttr.traceID = 0\n\ttr.spanID = 0\n\ttr.IsError = false\n\ttr.maxEvents = 0\n\ttr.events = nil\n\ttr.recycler = nil\n\ttr.mu.Unlock()\n\n\ttr.refs = 0\n\ttr.disc = 0\n\ttr.finishStack = nil\n\tfor i := range tr.eventsBuf {\n\t\ttr.eventsBuf[i] = event{}\n\t}\n}\n\n// delta returns the elapsed time since the last event or the trace start,\n// and whether it spans midnight.\n// L >= tr.mu\nfunc (tr *trace) delta(t time.Time) (time.Duration, bool) {\n\tif len(tr.events) == 0 {\n\t\treturn t.Sub(tr.Start), false\n\t}\n\tprev := tr.events[len(tr.events)-1].When\n\treturn t.Sub(prev), prev.Day() != t.Day()\n}\n\nfunc (tr *trace) addEvent(x interface{}, recyclable, sensitive bool) {\n\tif DebugUseAfterFinish && tr.finishStack != nil {\n\t\tbuf := make([]byte, 4<<10) // 4 KB should be enough\n\t\tn := runtime.Stack(buf, false)\n\t\tlog.Printf(\"net/trace: trace used after finish:\\nFinished at:\\n%s\\nUsed at:\\n%s\", tr.finishStack, buf[:n])\n\t}\n\n\t/*\n\t\tNOTE TO DEBUGGERS\n\n\t\tIf you are here because your program panicked in this code,\n\t\tit is almost definitely the fault of code using this package,\n\t\tand very unlikely to be the fault of this code.\n\n\t\tThe most likely scenario is that some code elsewhere is using\n\t\ta trace.Trace after its Finish method is called.\n\t\tYou can temporarily set the DebugUseAfterFinish var\n\t\tto help discover where that is; do not leave that var set,\n\t\tsince it makes this package much less efficient.\n\t*/\n\n\te := event{When: time.Now(), What: x, Recyclable: recyclable, Sensitive: sensitive}\n\ttr.mu.Lock()\n\te.Elapsed, e.NewDay = tr.delta(e.When)\n\tif len(tr.events) < tr.maxEvents {\n\t\ttr.events = append(tr.events, e)\n\t} else {\n\t\t// Discard the middle events.\n\t\tdi := int((tr.maxEvents - 1) / 2)\n\t\tif d, ok := tr.events[di].What.(*discarded); ok {\n\t\t\t(*d)++\n\t\t} else {\n\t\t\t// disc starts at two to count for the event it is replacing,\n\t\t\t// plus the next one that we are about to drop.\n\t\t\ttr.disc = 2\n\t\t\tif tr.recycler != nil && tr.events[di].Recyclable {\n\t\t\t\tgo tr.recycler(tr.events[di].What)\n\t\t\t}\n\t\t\ttr.events[di].What = &tr.disc\n\t\t}\n\t\t// The timestamp of the discarded meta-event should be\n\t\t// the time of the last event it is representing.\n\t\ttr.events[di].When = tr.events[di+1].When\n\n\t\tif tr.recycler != nil && tr.events[di+1].Recyclable {\n\t\t\tgo tr.recycler(tr.events[di+1].What)\n\t\t}\n\t\tcopy(tr.events[di+1:], tr.events[di+2:])\n\t\ttr.events[tr.maxEvents-1] = e\n\t}\n\ttr.mu.Unlock()\n}\n\nfunc (tr *trace) LazyLog(x fmt.Stringer, sensitive bool) {\n\ttr.addEvent(x, true, sensitive)\n}\n\nfunc (tr *trace) LazyPrintf(format string, a ...interface{}) {\n\ttr.addEvent(&lazySprintf{format, a}, false, false)\n}\n\nfunc (tr *trace) SetError() {\n\ttr.mu.Lock()\n\ttr.IsError = true\n\ttr.mu.Unlock()\n}\n\nfunc (tr *trace) SetRecycler(f func(interface{})) {\n\ttr.mu.Lock()\n\ttr.recycler = f\n\ttr.mu.Unlock()\n}\n\nfunc (tr *trace) SetTraceInfo(traceID, spanID uint64) {\n\ttr.mu.Lock()\n\ttr.traceID, tr.spanID = traceID, spanID\n\ttr.mu.Unlock()\n}\n\nfunc (tr *trace) SetMaxEvents(m int) {\n\ttr.mu.Lock()\n\t// Always keep at least three events: first, discarded count, last.\n\tif len(tr.events) == 0 && m > 3 {\n\t\ttr.maxEvents = m\n\t}\n\ttr.mu.Unlock()\n}\n\nfunc (tr *trace) ref() {\n\tatomic.AddInt32(&tr.refs, 1)\n}\n\nfunc (tr *trace) unref() {\n\tif atomic.AddInt32(&tr.refs, -1) == 0 {\n\t\ttr.mu.RLock()\n\t\tif tr.recycler != nil {\n\t\t\t// freeTrace clears tr, so we hold tr.recycler and tr.events here.\n\t\t\tgo func(f func(interface{}), es []event) {\n\t\t\t\tfor _, e := range es {\n\t\t\t\t\tif e.Recyclable {\n\t\t\t\t\t\tf(e.What)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}(tr.recycler, tr.events)\n\t\t}\n\t\ttr.mu.RUnlock()\n\n\t\tfreeTrace(tr)\n\t}\n}\n\nfunc (tr *trace) When() string {\n\treturn tr.Start.Format(\"2006/01/02 15:04:05.000000\")\n}\n\nfunc (tr *trace) ElapsedTime() string {\n\ttr.mu.RLock()\n\tt := tr.Elapsed\n\ttr.mu.RUnlock()\n\n\tif t == 0 {\n\t\t// Active trace.\n\t\tt = time.Since(tr.Start)\n\t}\n\treturn fmt.Sprintf(\"%.6f\", t.Seconds())\n}\n\nfunc (tr *trace) Events() []event {\n\ttr.mu.RLock()\n\tdefer tr.mu.RUnlock()\n\treturn tr.events\n}\n\nvar traceFreeList = make(chan *trace, 1000) // TODO(dsymonds): Use sync.Pool?\n\n// newTrace returns a trace ready to use.\nfunc newTrace() *trace {\n\tselect {\n\tcase tr := <-traceFreeList:\n\t\treturn tr\n\tdefault:\n\t\treturn new(trace)\n\t}\n}\n\n// freeTrace adds tr to traceFreeList if there's room.\n// This is non-blocking.\nfunc freeTrace(tr *trace) {\n\tif DebugUseAfterFinish {\n\t\treturn // never reuse\n\t}\n\ttr.reset()\n\tselect {\n\tcase traceFreeList <- tr:\n\tdefault:\n\t}\n}\n\nfunc elapsed(d time.Duration) string {\n\tb := []byte(fmt.Sprintf(\"%.6f\", d.Seconds()))\n\n\t// For subsecond durations, blank all zeros before decimal point,\n\t// and all zeros between the decimal point and the first non-zero digit.\n\tif d < time.Second {\n\t\tdot := bytes.IndexByte(b, '.')\n\t\tfor i := 0; i < dot; i++ {\n\t\t\tb[i] = ' '\n\t\t}\n\t\tfor i := dot + 1; i < len(b); i++ {\n\t\t\tif b[i] == '0' {\n\t\t\t\tb[i] = ' '\n\t\t\t} else {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\treturn string(b)\n}\n\nvar pageTmplCache *template.Template\nvar pageTmplOnce sync.Once\n\nfunc pageTmpl() *template.Template {\n\tpageTmplOnce.Do(func() {\n\t\tpageTmplCache = template.Must(template.New(\"Page\").Funcs(template.FuncMap{\n\t\t\t\"elapsed\": elapsed,\n\t\t\t\"add\":     func(a, b int) int { return a + b },\n\t\t}).Parse(pageHTML))\n\t})\n\treturn pageTmplCache\n}\n\nconst pageHTML = `\n{{template \"Prolog\" .}}\n{{template \"StatusTable\" .}}\n{{template \"Epilog\" .}}\n\n{{define \"Prolog\"}}\n<html>\n\t<head>\n\t<title>/debug/requests</title>\n\t<style type=\"text/css\">\n\t\tbody {\n\t\t\tfont-family: sans-serif;\n\t\t}\n\t\ttable#tr-status td.family {\n\t\t\tpadding-right: 2em;\n\t\t}\n\t\ttable#tr-status td.active {\n\t\t\tpadding-right: 1em;\n\t\t}\n\t\ttable#tr-status td.latency-first {\n\t\t\tpadding-left: 1em;\n\t\t}\n\t\ttable#tr-status td.empty {\n\t\t\tcolor: #aaa;\n\t\t}\n\t\ttable#reqs {\n\t\t\tmargin-top: 1em;\n\t\t}\n\t\ttable#reqs tr.first {\n\t\t\t{{if $.Expanded}}font-weight: bold;{{end}}\n\t\t}\n\t\ttable#reqs td {\n\t\t\tfont-family: monospace;\n\t\t}\n\t\ttable#reqs td.when {\n\t\t\ttext-align: right;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\ttable#reqs td.elapsed {\n\t\t\tpadding: 0 0.5em;\n\t\t\ttext-align: right;\n\t\t\twhite-space: pre;\n\t\t\twidth: 10em;\n\t\t}\n\t\taddress {\n\t\t\tfont-size: smaller;\n\t\t\tmargin-top: 5em;\n\t\t}\n\t</style>\n\t</head>\n\t<body>\n\n<h1>/debug/requests</h1>\n{{end}} {{/* end of Prolog */}}\n\n{{define \"StatusTable\"}}\n<table id=\"tr-status\">\n\t{{range $fam := .Families}}\n\t<tr>\n\t\t<td class=\"family\">{{$fam}}</td>\n\n\t\t{{$n := index $.ActiveTraceCount $fam}}\n\t\t<td class=\"active {{if not $n}}empty{{end}}\">\n\t\t\t{{if $n}}<a href=\"?fam={{$fam}}&b=-1{{if $.Expanded}}&exp=1{{end}}\">{{end}}\n\t\t\t[{{$n}} active]\n\t\t\t{{if $n}}</a>{{end}}\n\t\t</td>\n\n\t\t{{$f := index $.CompletedTraces $fam}}\n\t\t{{range $i, $b := $f.Buckets}}\n\t\t{{$empty := $b.Empty}}\n\t\t<td {{if $empty}}class=\"empty\"{{end}}>\n\t\t{{if not $empty}}<a href=\"?fam={{$fam}}&b={{$i}}{{if $.Expanded}}&exp=1{{end}}\">{{end}}\n\t\t[{{.Cond}}]\n\t\t{{if not $empty}}</a>{{end}}\n\t\t</td>\n\t\t{{end}}\n\n\t\t{{$nb := len $f.Buckets}}\n\t\t<td class=\"latency-first\">\n\t\t<a href=\"?fam={{$fam}}&b={{$nb}}\">[minute]</a>\n\t\t</td>\n\t\t<td>\n\t\t<a href=\"?fam={{$fam}}&b={{add $nb 1}}\">[hour]</a>\n\t\t</td>\n\t\t<td>\n\t\t<a href=\"?fam={{$fam}}&b={{add $nb 2}}\">[total]</a>\n\t\t</td>\n\n\t</tr>\n\t{{end}}\n</table>\n{{end}} {{/* end of StatusTable */}}\n\n{{define \"Epilog\"}}\n{{if $.Traces}}\n<hr />\n<h3>Family: {{$.Family}}</h3>\n\n{{if or $.Expanded $.Traced}}\n  <a href=\"?fam={{$.Family}}&b={{$.Bucket}}\">[Normal/Summary]</a>\n{{else}}\n  [Normal/Summary]\n{{end}}\n\n{{if or (not $.Expanded) $.Traced}}\n  <a href=\"?fam={{$.Family}}&b={{$.Bucket}}&exp=1\">[Normal/Expanded]</a>\n{{else}}\n  [Normal/Expanded]\n{{end}}\n\n{{if not $.Active}}\n\t{{if or $.Expanded (not $.Traced)}}\n\t<a href=\"?fam={{$.Family}}&b={{$.Bucket}}&rtraced=1\">[Traced/Summary]</a>\n\t{{else}}\n\t[Traced/Summary]\n\t{{end}}\n\t{{if or (not $.Expanded) (not $.Traced)}}\n\t<a href=\"?fam={{$.Family}}&b={{$.Bucket}}&exp=1&rtraced=1\">[Traced/Expanded]</a>\n        {{else}}\n\t[Traced/Expanded]\n\t{{end}}\n{{end}}\n\n{{if $.Total}}\n<p><em>Showing <b>{{len $.Traces}}</b> of <b>{{$.Total}}</b> traces.</em></p>\n{{end}}\n\n<table id=\"reqs\">\n\t<caption>\n\t\t{{if $.Active}}Active{{else}}Completed{{end}} Requests\n\t</caption>\n\t<tr><th>When</th><th>Elapsed&nbsp;(s)</th></tr>\n\t{{range $tr := $.Traces}}\n\t<tr class=\"first\">\n\t\t<td class=\"when\">{{$tr.When}}</td>\n\t\t<td class=\"elapsed\">{{$tr.ElapsedTime}}</td>\n\t\t<td>{{$tr.Title}}</td>\n\t\t{{/* TODO: include traceID/spanID */}}\n\t</tr>\n\t{{if $.Expanded}}\n\t{{range $tr.Events}}\n\t<tr>\n\t\t<td class=\"when\">{{.WhenString}}</td>\n\t\t<td class=\"elapsed\">{{elapsed .Elapsed}}</td>\n\t\t<td>{{if or $.ShowSensitive (not .Sensitive)}}... {{.What}}{{else}}<em>[redacted]</em>{{end}}</td>\n\t</tr>\n\t{{end}}\n\t{{end}}\n\t{{end}}\n</table>\n{{end}} {{/* if $.Traces */}}\n\n{{if $.Histogram}}\n<h4>Latency (&micro;s) of {{$.Family}} over {{$.HistogramWindow}}</h4>\n{{$.Histogram}}\n{{end}} {{/* if $.Histogram */}}\n\n\t</body>\n</html>\n{{end}} {{/* end of Epilog */}}\n`\n"
  },
  {
    "path": "vendor/golang.org/x/sys/LICENSE",
    "content": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/sys/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/.gitignore",
    "content": "_obj/\nunix.test\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/README.md",
    "content": "# Building `sys/unix`\n\nThe sys/unix package provides access to the raw system call interface of the\nunderlying operating system. See: https://godoc.org/golang.org/x/sys/unix\n\nPorting Go to a new architecture/OS combination or adding syscalls, types, or\nconstants to an existing architecture/OS pair requires some manual effort;\nhowever, there are tools that automate much of the process.\n\n## Build Systems\n\nThere are currently two ways we generate the necessary files. We are currently\nmigrating the build system to use containers so the builds are reproducible.\nThis is being done on an OS-by-OS basis. Please update this documentation as\ncomponents of the build system change.\n\n### Old Build System (currently for `GOOS != \"linux\"`)\n\nThe old build system generates the Go files based on the C header files\npresent on your system. This means that files\nfor a given GOOS/GOARCH pair must be generated on a system with that OS and\narchitecture. This also means that the generated code can differ from system\nto system, based on differences in the header files.\n\nTo avoid this, if you are using the old build system, only generate the Go\nfiles on an installation with unmodified header files. It is also important to\nkeep track of which version of the OS the files were generated from (ex.\nDarwin 14 vs Darwin 15). This makes it easier to track the progress of changes\nand have each OS upgrade correspond to a single change.\n\nTo build the files for your current OS and architecture, make sure GOOS and\nGOARCH are set correctly and run `mkall.sh`. This will generate the files for\nyour specific system. Running `mkall.sh -n` shows the commands that will be run.\n\nRequirements: bash, go\n\n### New Build System (currently for `GOOS == \"linux\"`)\n\nThe new build system uses a Docker container to generate the go files directly\nfrom source checkouts of the kernel and various system libraries. This means\nthat on any platform that supports Docker, all the files using the new build\nsystem can be generated at once, and generated files will not change based on\nwhat the person running the scripts has installed on their computer.\n\nThe OS specific files for the new build system are located in the `${GOOS}`\ndirectory, and the build is coordinated by the `${GOOS}/mkall.go` program. When\nthe kernel or system library updates, modify the Dockerfile at\n`${GOOS}/Dockerfile` to checkout the new release of the source.\n\nTo build all the files under the new build system, you must be on an amd64/Linux\nsystem and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will\nthen generate all of the files for all of the GOOS/GOARCH pairs in the new build\nsystem. Running `mkall.sh -n` shows the commands that will be run.\n\nRequirements: bash, go, docker\n\n## Component files\n\nThis section describes the various files used in the code generation process.\nIt also contains instructions on how to modify these files to add a new\narchitecture/OS or to add additional syscalls, types, or constants. Note that\nif you are using the new build system, the scripts/programs cannot be called normally.\nThey must be called from within the docker container.\n\n### asm files\n\nThe hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` implements system\ncall dispatch. There are three entry points:\n```\n  func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)\n  func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)\n  func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)\n```\nThe first and second are the standard ones; they differ only in how many\narguments can be passed to the kernel. The third is for low-level use by the\nForkExec wrapper. Unlike the first two, it does not call into the scheduler to\nlet it know that a system call is running.\n\nWhen porting Go to a new architecture/OS, this file must be implemented for\neach GOOS/GOARCH pair.\n\n### mksysnum\n\nMksysnum is a Go program located at `${GOOS}/mksysnum.go` (or `mksysnum_${GOOS}.go`\nfor the old system). This program takes in a list of header files containing the\nsyscall number declarations and parses them to produce the corresponding list of\nGo numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated\nconstants.\n\nAdding new syscall numbers is mostly done by running the build on a sufficiently\nnew installation of the target OS (or updating the source checkouts for the\nnew build system). However, depending on the OS, you may need to update the\nparsing in mksysnum.\n\n### mksyscall.go\n\nThe `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are\nhand-written Go files which implement system calls (for unix, the specific OS,\nor the specific OS/Architecture pair respectively) that need special handling\nand list `//sys` comments giving prototypes for ones that can be generated.\n\nThe mksyscall.go program takes the `//sys` and `//sysnb` comments and converts\nthem into syscalls. This requires the name of the prototype in the comment to\nmatch a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function\nprototype can be exported (capitalized) or not.\n\nAdding a new syscall often just requires adding a new `//sys` function prototype\nwith the desired arguments and a capitalized name so it is exported. However, if\nyou want the interface to the syscall to be different, often one will make an\nunexported `//sys` prototype, and then write a custom wrapper in\n`syscall_${GOOS}.go`.\n\n### types files\n\nFor each OS, there is a hand-written Go file at `${GOOS}/types.go` (or\n`types_${GOOS}.go` on the old system). This file includes standard C headers and\ncreates Go type aliases to the corresponding C types. The file is then fed\nthrough godef to get the Go compatible definitions. Finally, the generated code\nis fed though mkpost.go to format the code correctly and remove any hidden or\nprivate identifiers. This cleaned-up code is written to\n`ztypes_${GOOS}_${GOARCH}.go`.\n\nThe hardest part about preparing this file is figuring out which headers to\ninclude and which symbols need to be `#define`d to get the actual data\nstructures that pass through to the kernel system calls. Some C libraries\npreset alternate versions for binary compatibility and translate them on the\nway in and out of system calls, but there is almost always a `#define` that can\nget the real ones.\nSee `types_darwin.go` and `linux/types.go` for examples.\n\nTo add a new type, add in the necessary include statement at the top of the\nfile (if it is not already there) and add in a type alias line. Note that if\nyour type is significantly different on different architectures, you may need\nsome `#if/#elif` macros in your include statements.\n\n### mkerrors.sh\n\nThis script is used to generate the system's various constants. This doesn't\njust include the error numbers and error strings, but also the signal numbers\nand a wide variety of miscellaneous constants. The constants come from the list\nof include files in the `includes_${uname}` variable. A regex then picks out\nthe desired `#define` statements, and generates the corresponding Go constants.\nThe error numbers and strings are generated from `#include <errno.h>`, and the\nsignal numbers and strings are generated from `#include <signal.h>`. All of\nthese constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program,\n`_errors.c`, which prints out all the constants.\n\nTo add a constant, add the header that includes it to the appropriate variable.\nThen, edit the regex (if necessary) to match the desired constant. Avoid making\nthe regex too broad to avoid matching unintended constants.\n\n### internal/mkmerge\n\nThis program is used to extract duplicate const, func, and type declarations\nfrom the generated architecture-specific files listed below, and merge these\ninto a common file for each OS.\n\nThe merge is performed in the following steps:\n1. Construct the set of common code that is idential in all architecture-specific files.\n2. Write this common code to the merged file.\n3. Remove the common code from all architecture-specific files.\n\n\n## Generated files\n\n### `zerrors_${GOOS}_${GOARCH}.go`\n\nA file containing all of the system's generated error numbers, error strings,\nsignal numbers, and constants. Generated by `mkerrors.sh` (see above).\n\n### `zsyscall_${GOOS}_${GOARCH}.go`\n\nA file containing all the generated syscalls for a specific GOOS and GOARCH.\nGenerated by `mksyscall.go` (see above).\n\n### `zsysnum_${GOOS}_${GOARCH}.go`\n\nA list of numeric constants for all the syscall number of the specific GOOS\nand GOARCH. Generated by mksysnum (see above).\n\n### `ztypes_${GOOS}_${GOARCH}.go`\n\nA file containing Go types for passing into (or returning from) syscalls.\nGenerated by godefs and the types file (see above).\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/affinity_linux.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// CPU affinity functions\n\npackage unix\n\nimport (\n\t\"math/bits\"\n\t\"unsafe\"\n)\n\nconst cpuSetSize = _CPU_SETSIZE / _NCPUBITS\n\n// CPUSet represents a CPU affinity mask.\ntype CPUSet [cpuSetSize]cpuMask\n\nfunc schedAffinity(trap uintptr, pid int, set *CPUSet) error {\n\t_, _, e := RawSyscall(trap, uintptr(pid), uintptr(unsafe.Sizeof(*set)), uintptr(unsafe.Pointer(set)))\n\tif e != 0 {\n\t\treturn errnoErr(e)\n\t}\n\treturn nil\n}\n\n// SchedGetaffinity gets the CPU affinity mask of the thread specified by pid.\n// If pid is 0 the calling thread is used.\nfunc SchedGetaffinity(pid int, set *CPUSet) error {\n\treturn schedAffinity(SYS_SCHED_GETAFFINITY, pid, set)\n}\n\n// SchedSetaffinity sets the CPU affinity mask of the thread specified by pid.\n// If pid is 0 the calling thread is used.\nfunc SchedSetaffinity(pid int, set *CPUSet) error {\n\treturn schedAffinity(SYS_SCHED_SETAFFINITY, pid, set)\n}\n\n// Zero clears the set s, so that it contains no CPUs.\nfunc (s *CPUSet) Zero() {\n\tfor i := range s {\n\t\ts[i] = 0\n\t}\n}\n\nfunc cpuBitsIndex(cpu int) int {\n\treturn cpu / _NCPUBITS\n}\n\nfunc cpuBitsMask(cpu int) cpuMask {\n\treturn cpuMask(1 << (uint(cpu) % _NCPUBITS))\n}\n\n// Set adds cpu to the set s.\nfunc (s *CPUSet) Set(cpu int) {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\ts[i] |= cpuBitsMask(cpu)\n\t}\n}\n\n// Clear removes cpu from the set s.\nfunc (s *CPUSet) Clear(cpu int) {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\ts[i] &^= cpuBitsMask(cpu)\n\t}\n}\n\n// IsSet reports whether cpu is in the set s.\nfunc (s *CPUSet) IsSet(cpu int) bool {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\treturn s[i]&cpuBitsMask(cpu) != 0\n\t}\n\treturn false\n}\n\n// Count returns the number of CPUs in the set s.\nfunc (s *CPUSet) Count() int {\n\tc := 0\n\tfor _, b := range s {\n\t\tc += bits.OnesCount64(uint64(b))\n\t}\n\treturn c\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/aliases.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) && go1.9\n\npackage unix\n\nimport \"syscall\"\n\ntype Signal = syscall.Signal\ntype Errno = syscall.Errno\ntype SysProcAttr = syscall.SysProcAttr\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_aix_ppc64.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go\n//\n\nTEXT ·syscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·syscall6(SB)\n\nTEXT ·rawSyscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_386.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for 386 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_amd64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for AMD64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_arm.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for ARM BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tB\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_arm64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for ARM64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n//\n// System call support for ppc64, BSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for RISCV64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_386.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for 386, Linux\n//\n\n// See ../runtime/sys_linux_386.s for the reason why we always use int 0x80\n// instead of the glibc-specific \"CALL 0x10(GS)\".\n#define INVOKE_SYSCALL\tINT\t$0x80\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tCALL\truntime·entersyscall(SB)\n\tMOVL\ttrap+0(FP), AX  // syscall entry\n\tMOVL\ta1+4(FP), BX\n\tMOVL\ta2+8(FP), CX\n\tMOVL\ta3+12(FP), DX\n\tMOVL\t$0, SI\n\tMOVL\t$0, DI\n\tINVOKE_SYSCALL\n\tMOVL\tAX, r1+16(FP)\n\tMOVL\tDX, r2+20(FP)\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVL\ttrap+0(FP), AX  // syscall entry\n\tMOVL\ta1+4(FP), BX\n\tMOVL\ta2+8(FP), CX\n\tMOVL\ta3+12(FP), DX\n\tMOVL\t$0, SI\n\tMOVL\t$0, DI\n\tINVOKE_SYSCALL\n\tMOVL\tAX, r1+16(FP)\n\tMOVL\tDX, r2+20(FP)\n\tRET\n\nTEXT ·socketcall(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·socketcall(SB)\n\nTEXT ·rawsocketcall(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·rawsocketcall(SB)\n\nTEXT ·seek(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·seek(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_amd64.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for AMD64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tCALL\truntime·entersyscall(SB)\n\tMOVQ\ta1+8(FP), DI\n\tMOVQ\ta2+16(FP), SI\n\tMOVQ\ta3+24(FP), DX\n\tMOVQ\t$0, R10\n\tMOVQ\t$0, R8\n\tMOVQ\t$0, R9\n\tMOVQ\ttrap+0(FP), AX\t// syscall entry\n\tSYSCALL\n\tMOVQ\tAX, r1+32(FP)\n\tMOVQ\tDX, r2+40(FP)\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVQ\ta1+8(FP), DI\n\tMOVQ\ta2+16(FP), SI\n\tMOVQ\ta3+24(FP), DX\n\tMOVQ\t$0, R10\n\tMOVQ\t$0, R8\n\tMOVQ\t$0, R9\n\tMOVQ\ttrap+0(FP), AX\t// syscall entry\n\tSYSCALL\n\tMOVQ\tAX, r1+32(FP)\n\tMOVQ\tDX, r2+40(FP)\n\tRET\n\nTEXT ·gettimeofday(SB),NOSPLIT,$0-16\n\tJMP\tsyscall·gettimeofday(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_arm.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for arm, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tBL\truntime·entersyscall(SB)\n\tMOVW\ttrap+0(FP), R7\n\tMOVW\ta1+4(FP), R0\n\tMOVW\ta2+8(FP), R1\n\tMOVW\ta3+12(FP), R2\n\tMOVW\t$0, R3\n\tMOVW\t$0, R4\n\tMOVW\t$0, R5\n\tSWI\t$0\n\tMOVW\tR0, r1+16(FP)\n\tMOVW\t$0, R0\n\tMOVW\tR0, r2+20(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVW\ttrap+0(FP), R7\t// syscall entry\n\tMOVW\ta1+4(FP), R0\n\tMOVW\ta2+8(FP), R1\n\tMOVW\ta3+12(FP), R2\n\tSWI\t$0\n\tMOVW\tR0, r1+16(FP)\n\tMOVW\t$0, R0\n\tMOVW\tR0, r2+20(FP)\n\tRET\n\nTEXT ·seek(SB),NOSPLIT,$0-28\n\tB\tsyscall·seek(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_arm64.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && arm64 && gc\n\n#include \"textflag.h\"\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R0\n\tMOVD\ta2+16(FP), R1\n\tMOVD\ta3+24(FP), R2\n\tMOVD\t$0, R3\n\tMOVD\t$0, R4\n\tMOVD\t$0, R5\n\tMOVD\ttrap+0(FP), R8\t// syscall entry\n\tSVC\n\tMOVD\tR0, r1+32(FP)\t// r1\n\tMOVD\tR1, r2+40(FP)\t// r2\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R0\n\tMOVD\ta2+16(FP), R1\n\tMOVD\ta3+24(FP), R2\n\tMOVD\t$0, R3\n\tMOVD\t$0, R4\n\tMOVD\t$0, R5\n\tMOVD\ttrap+0(FP), R8\t// syscall entry\n\tSVC\n\tMOVD\tR0, r1+32(FP)\n\tMOVD\tR1, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_loong64.s",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && loong64 && gc\n\n#include \"textflag.h\"\n\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tJAL\truntime·entersyscall(SB)\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R11\t// syscall entry\n\tSYSCALL\n\tMOVV\tR4, r1+32(FP)\n\tMOVV\tR0, r2+40(FP)\t// r2 is not used. Always set to 0\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R11\t// syscall entry\n\tSYSCALL\n\tMOVV\tR4, r1+32(FP)\n\tMOVV\tR0, r2+40(FP)\t// r2 is not used. Always set to 0\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_mips64x.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips64 || mips64le) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for mips64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tJAL\truntime·entersyscall(SB)\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVV\tR2, r1+32(FP)\n\tMOVV\tR3, r2+40(FP)\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVV\tR2, r1+32(FP)\n\tMOVV\tR3, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_mipsx.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips || mipsle) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for mips, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tJMP syscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tJMP syscall·Syscall6(SB)\n\nTEXT ·Syscall9(SB),NOSPLIT,$0-52\n\tJMP syscall·Syscall9(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tJAL\truntime·entersyscall(SB)\n\tMOVW\ta1+4(FP), R4\n\tMOVW\ta2+8(FP), R5\n\tMOVW\ta3+12(FP), R6\n\tMOVW\tR0, R7\n\tMOVW\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVW\tR2, r1+16(FP)\t// r1\n\tMOVW\tR3, r2+20(FP)\t// r2\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP syscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP syscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVW\ta1+4(FP), R4\n\tMOVW\ta2+8(FP), R5\n\tMOVW\ta3+12(FP), R6\n\tMOVW\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVW\tR2, r1+16(FP)\n\tMOVW\tR3, r2+20(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64 || ppc64le) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R3\n\tMOVD\ta2+16(FP), R4\n\tMOVD\ta3+24(FP), R5\n\tMOVD\tR0, R6\n\tMOVD\tR0, R7\n\tMOVD\tR0, R8\n\tMOVD\ttrap+0(FP), R9\t// syscall entry\n\tSYSCALL R9\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR4, r2+40(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R3\n\tMOVD\ta2+16(FP), R4\n\tMOVD\ta3+24(FP), R5\n\tMOVD\tR0, R6\n\tMOVD\tR0, R7\n\tMOVD\tR0, R8\n\tMOVD\ttrap+0(FP), R9\t// syscall entry\n\tSYSCALL R9\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR4, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_riscv64.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for linux/riscv64.\n//\n// Where available, just jump to package syscall's implementation of\n// these functions.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tCALL\truntime·entersyscall(SB)\n\tMOV\ta1+8(FP), A0\n\tMOV\ta2+16(FP), A1\n\tMOV\ta3+24(FP), A2\n\tMOV\ttrap+0(FP), A7\t// syscall entry\n\tECALL\n\tMOV\tA0, r1+32(FP)\t// r1\n\tMOV\tA1, r2+40(FP)\t// r2\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOV\ta1+8(FP), A0\n\tMOV\ta2+16(FP), A1\n\tMOV\ta3+24(FP), A2\n\tMOV\ttrap+0(FP), A7\t// syscall entry\n\tECALL\n\tMOV\tA0, r1+32(FP)\n\tMOV\tA1, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_linux_s390x.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && s390x && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for s390x, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tBR\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tBR\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R2\n\tMOVD\ta2+16(FP), R3\n\tMOVD\ta3+24(FP), R4\n\tMOVD\t$0, R5\n\tMOVD\t$0, R6\n\tMOVD\t$0, R7\n\tMOVD\ttrap+0(FP), R1\t// syscall entry\n\tSYSCALL\n\tMOVD\tR2, r1+32(FP)\n\tMOVD\tR3, r2+40(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tBR\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tBR\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R2\n\tMOVD\ta2+16(FP), R3\n\tMOVD\ta3+24(FP), R4\n\tMOVD\t$0, R5\n\tMOVD\t$0, R6\n\tMOVD\t$0, R7\n\tMOVD\ttrap+0(FP), R1\t// syscall entry\n\tSYSCALL\n\tMOVD\tR2, r1+32(FP)\n\tMOVD\tR3, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System call support for mips64, OpenBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_solaris_amd64.s",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go\n//\n\nTEXT ·sysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·sysvicall6(SB)\n\nTEXT ·rawSysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSysvicall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_zos_s390x.s",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x && gc\n\n#include \"textflag.h\"\n\n#define PSALAA            1208(R0)\n#define GTAB64(x)           80(x)\n#define LCA64(x)            88(x)\n#define 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": "vendor/golang.org/x/sys/unix/bluetooth_linux.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Bluetooth sockets and messages\n\npackage unix\n\n// Bluetooth Protocols\nconst (\n\tBTPROTO_L2CAP  = 0\n\tBTPROTO_HCI    = 1\n\tBTPROTO_SCO    = 2\n\tBTPROTO_RFCOMM = 3\n\tBTPROTO_BNEP   = 4\n\tBTPROTO_CMTP   = 5\n\tBTPROTO_HIDP   = 6\n\tBTPROTO_AVDTP  = 7\n)\n\nconst (\n\tHCI_CHANNEL_RAW     = 0\n\tHCI_CHANNEL_USER    = 1\n\tHCI_CHANNEL_MONITOR = 2\n\tHCI_CHANNEL_CONTROL = 3\n\tHCI_CHANNEL_LOGGING = 4\n)\n\n// Socketoption Level\nconst (\n\tSOL_BLUETOOTH = 0x112\n\tSOL_HCI       = 0x0\n\tSOL_L2CAP     = 0x6\n\tSOL_RFCOMM    = 0x12\n\tSOL_SCO       = 0x11\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/cap_freebsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build freebsd\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// Go implementation of C mostly found in /usr/src/sys/kern/subr_capability.c\n\nconst (\n\t// This is the version of CapRights this package understands. See C implementation for parallels.\n\tcapRightsGoVersion = CAP_RIGHTS_VERSION_00\n\tcapArSizeMin       = CAP_RIGHTS_VERSION_00 + 2\n\tcapArSizeMax       = capRightsGoVersion + 2\n)\n\nvar (\n\tbit2idx = []int{\n\t\t-1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1,\n\t\t4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n\t}\n)\n\nfunc capidxbit(right uint64) int {\n\treturn int((right >> 57) & 0x1f)\n}\n\nfunc rightToIndex(right uint64) (int, error) {\n\tidx := capidxbit(right)\n\tif idx < 0 || idx >= len(bit2idx) {\n\t\treturn -2, fmt.Errorf(\"index for right 0x%x out of range\", right)\n\t}\n\treturn bit2idx[idx], nil\n}\n\nfunc caprver(right uint64) int {\n\treturn int(right >> 62)\n}\n\nfunc capver(rights *CapRights) int {\n\treturn caprver(rights.Rights[0])\n}\n\nfunc caparsize(rights *CapRights) int {\n\treturn capver(rights) + 2\n}\n\n// CapRightsSet sets the permissions in setrights in rights.\nfunc CapRightsSet(rights *CapRights, setrights []uint64) error {\n\t// This is essentially a copy of cap_rights_vset()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range setrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch\")\n\t\t}\n\t\trights.Rights[i] |= right\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch (after assign)\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CapRightsClear clears the permissions in clearrights from rights.\nfunc CapRightsClear(rights *CapRights, clearrights []uint64) error {\n\t// This is essentially a copy of cap_rights_vclear()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range clearrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch\")\n\t\t}\n\t\trights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF)\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch (after assign)\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CapRightsIsSet checks whether all the permissions in setrights are present in rights.\nfunc CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) {\n\t// This is essentially a copy of cap_rights_is_vset()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn false, fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn false, errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range setrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn false, errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn false, errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn false, errors.New(\"index mismatch\")\n\t\t}\n\t\tif (rights.Rights[i] & right) != right {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\n\treturn true, nil\n}\n\nfunc capright(idx uint64, bit uint64) uint64 {\n\treturn ((1 << (57 + idx)) | bit)\n}\n\n// CapRightsInit returns a pointer to an initialised CapRights structure filled with rights.\n// See man cap_rights_init(3) and rights(4).\nfunc CapRightsInit(rights []uint64) (*CapRights, error) {\n\tvar r CapRights\n\tr.Rights[0] = (capRightsGoVersion << 62) | capright(0, 0)\n\tr.Rights[1] = capright(1, 0)\n\n\terr := CapRightsSet(&r, rights)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &r, nil\n}\n\n// CapRightsLimit reduces the operations permitted on fd to at most those contained in rights.\n// The capability rights on fd can never be increased by CapRightsLimit.\n// See man cap_rights_limit(2) and rights(4).\nfunc CapRightsLimit(fd uintptr, rights *CapRights) error {\n\treturn capRightsLimit(int(fd), rights)\n}\n\n// CapRightsGet returns a CapRights structure containing the operations permitted on fd.\n// See man cap_rights_get(3) and rights(4).\nfunc CapRightsGet(fd uintptr) (*CapRights, error) {\n\tr, err := CapRightsInit(nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = capRightsGet(capRightsGoVersion, int(fd), r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn r, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/constants.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nconst (\n\tR_OK = 0x4\n\tW_OK = 0x2\n\tX_OK = 0x1\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_aix_ppc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by AIX.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 16) & 0xffff)\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff)\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn uint64(((major) << 16) | (minor))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_aix_ppc64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc64\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used AIX.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x3fffffff00000000) >> 32)\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32((dev & 0x00000000ffffffff) >> 0)\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tvar DEVNO64 uint64\n\tDEVNO64 = 0x8000000000000000\n\treturn ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_darwin.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in Darwin's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of a Darwin device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 24) & 0xff)\n}\n\n// Minor returns the minor component of a Darwin device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffffff)\n}\n\n// Mkdev returns a Darwin device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 24) | uint64(minor)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_dragonfly.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in Dragonfly's sys/types.h header.\n//\n// The information below is extracted and adapted from sys/types.h:\n//\n// Minor gives a cookie instead of an index since in order to avoid changing the\n// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for\n// devices that don't use them.\n\npackage unix\n\n// Major returns the major component of a DragonFlyBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 8) & 0xff)\n}\n\n// Minor returns the minor component of a DragonFlyBSD device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff00ff)\n}\n\n// Mkdev returns a DragonFlyBSD device number generated from the given major and\n// minor components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 8) | uint64(minor)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_freebsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in FreeBSD's sys/types.h header.\n//\n// The information below is extracted and adapted from sys/types.h:\n//\n// Minor gives a cookie instead of an index since in order to avoid changing the\n// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for\n// devices that don't use them.\n\npackage unix\n\n// Major returns the major component of a FreeBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 8) & 0xff)\n}\n\n// Minor returns the minor component of a FreeBSD device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff00ff)\n}\n\n// Mkdev returns a FreeBSD device number generated from the given major and\n// minor components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 8) | uint64(minor)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_linux.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by the Linux kernel and glibc.\n//\n// The information below is extracted and adapted from bits/sysmacros.h in the\n// glibc sources:\n//\n// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's\n// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major\n// number and m is a hex digit of the minor number. This is backward compatible\n// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also\n// backward compatible with the Linux kernel, which for some architectures uses\n// 32-bit dev_t, encoded as mmmM MMmm.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\tmajor := uint32((dev & 0x00000000000fff00) >> 8)\n\tmajor |= uint32((dev & 0xfffff00000000000) >> 32)\n\treturn major\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x00000000000000ff) >> 0)\n\tminor |= uint32((dev & 0x00000ffffff00000) >> 12)\n\treturn minor\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) & 0x00000fff) << 8\n\tdev |= (uint64(major) & 0xfffff000) << 32\n\tdev |= (uint64(minor) & 0x000000ff) << 0\n\tdev |= (uint64(minor) & 0xffffff00) << 12\n\treturn dev\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_netbsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in NetBSD's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of a NetBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x000fff00) >> 8)\n}\n\n// Minor returns the minor component of a NetBSD device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x000000ff) >> 0)\n\tminor |= uint32((dev & 0xfff00000) >> 12)\n\treturn minor\n}\n\n// Mkdev returns a NetBSD device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) << 8) & 0x000fff00\n\tdev |= (uint64(minor) << 12) & 0xfff00000\n\tdev |= (uint64(minor) << 0) & 0x000000ff\n\treturn dev\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_openbsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used in OpenBSD's sys/types.h header.\n\npackage unix\n\n// Major returns the major component of an OpenBSD device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x0000ff00) >> 8)\n}\n\n// Minor returns the minor component of an OpenBSD device number.\nfunc Minor(dev uint64) uint32 {\n\tminor := uint32((dev & 0x000000ff) >> 0)\n\tminor |= uint32((dev & 0xffff0000) >> 8)\n\treturn minor\n}\n\n// Mkdev returns an OpenBSD device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tdev := (uint64(major) << 8) & 0x0000ff00\n\tdev |= (uint64(minor) << 8) & 0xffff0000\n\tdev |= (uint64(minor) << 0) & 0x000000ff\n\treturn dev\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dev_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by z/OS.\n//\n// The information below is extracted and adapted from <sys/stat.h> macros.\n\npackage unix\n\n// Major returns the major component of a z/OS device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 16) & 0x0000FFFF)\n}\n\n// Minor returns the minor component of a z/OS device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0x0000FFFF)\n}\n\n// Mkdev returns a z/OS device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 16) | uint64(minor)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/dirent.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"unsafe\"\n\n// readInt returns the size-bytes unsigned integer in native byte order at offset off.\nfunc readInt(b []byte, off, size uintptr) (u uint64, ok bool) {\n\tif len(b) < int(off+size) {\n\t\treturn 0, false\n\t}\n\tif isBigEndian {\n\t\treturn readIntBE(b[off:], size), true\n\t}\n\treturn readIntLE(b[off:], size), true\n}\n\nfunc readIntBE(b []byte, size uintptr) uint64 {\n\tswitch size {\n\tcase 1:\n\t\treturn uint64(b[0])\n\tcase 2:\n\t\t_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[1]) | uint64(b[0])<<8\n\tcase 4:\n\t\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24\n\tcase 8:\n\t\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 |\n\t\t\tuint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56\n\tdefault:\n\t\tpanic(\"syscall: readInt with unsupported size\")\n\t}\n}\n\nfunc readIntLE(b []byte, size uintptr) uint64 {\n\tswitch size {\n\tcase 1:\n\t\treturn uint64(b[0])\n\tcase 2:\n\t\t_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8\n\tcase 4:\n\t\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24\n\tcase 8:\n\t\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |\n\t\t\tuint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n\tdefault:\n\t\tpanic(\"syscall: readInt with unsupported size\")\n\t}\n}\n\n// ParseDirent parses up to max directory entries in buf,\n// appending the names to names. It returns the number of\n// bytes consumed from buf, the number of entries added\n// to names, and the new names slice.\nfunc ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {\n\toriglen := len(buf)\n\tcount = 0\n\tfor max != 0 && len(buf) > 0 {\n\t\treclen, ok := direntReclen(buf)\n\t\tif !ok || reclen > uint64(len(buf)) {\n\t\t\treturn origlen, count, names\n\t\t}\n\t\trec := buf[:reclen]\n\t\tbuf = buf[reclen:]\n\t\tino, ok := direntIno(rec)\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\t\tif ino == 0 { // File absent in directory.\n\t\t\tcontinue\n\t\t}\n\t\tconst namoff = uint64(unsafe.Offsetof(Dirent{}.Name))\n\t\tnamlen, ok := direntNamlen(rec)\n\t\tif !ok || namoff+namlen > uint64(len(rec)) {\n\t\t\tbreak\n\t\t}\n\t\tname := rec[namoff : namoff+namlen]\n\t\tfor i, c := range name {\n\t\t\tif c == 0 {\n\t\t\t\tname = name[:i]\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Check for useless names before allocating a string.\n\t\tif string(name) == \".\" || string(name) == \"..\" {\n\t\t\tcontinue\n\t\t}\n\t\tmax--\n\t\tcount++\n\t\tnames = append(names, string(name))\n\t}\n\treturn origlen - len(buf), count, names\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/endian_big.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n//\n//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64\n\npackage unix\n\nconst isBigEndian = true\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/endian_little.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n//\n//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh\n\npackage unix\n\nconst isBigEndian = false\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/env_unix.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Unix environment variables.\n\npackage unix\n\nimport \"syscall\"\n\nfunc Getenv(key string) (value string, found bool) {\n\treturn syscall.Getenv(key)\n}\n\nfunc Setenv(key, value string) error {\n\treturn syscall.Setenv(key, value)\n}\n\nfunc Clearenv() {\n\tsyscall.Clearenv()\n}\n\nfunc Environ() []string {\n\treturn syscall.Environ()\n}\n\nfunc Unsetenv(key string) error {\n\treturn syscall.Unsetenv(key)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/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": "vendor/golang.org/x/sys/unix/fcntl.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build dragonfly || freebsd || linux || netbsd\n\npackage unix\n\nimport \"unsafe\"\n\n// fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux\n// systems by fcntl_linux_32bit.go to be SYS_FCNTL64.\nvar fcntl64Syscall uintptr = SYS_FCNTL\n\nfunc fcntl(fd int, cmd, arg int) (int, error) {\n\tvalptr, _, errno := Syscall(fcntl64Syscall, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tvar err error\n\tif errno != 0 {\n\t\terr = errno\n\t}\n\treturn int(valptr), err\n}\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))\n\tif errno == 0 {\n\t\treturn nil\n\t}\n\treturn errno\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/fcntl_darwin.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"unsafe\"\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk))))\n\treturn err\n}\n\n// FcntlFstore performs a fcntl syscall for the F_PREALLOCATE command.\nfunc FcntlFstore(fd uintptr, cmd int, fstore *Fstore_t) error {\n\t_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(fstore))))\n\treturn err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) || (linux && ppc)\n\npackage unix\n\nfunc init() {\n\t// On 32-bit Linux systems, the fcntl syscall that matches Go's\n\t// Flock_t type is SYS_FCNTL64, not SYS_FCNTL.\n\tfcntl64Syscall = SYS_FCNTL64\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/fdset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\n// Set adds fd to the set fds.\nfunc (fds *FdSet) Set(fd int) {\n\tfds.Bits[fd/NFDBITS] |= (1 << (uintptr(fd) % NFDBITS))\n}\n\n// Clear removes fd from the set fds.\nfunc (fds *FdSet) Clear(fd int) {\n\tfds.Bits[fd/NFDBITS] &^= (1 << (uintptr(fd) % NFDBITS))\n}\n\n// IsSet returns whether fd is in the set fds.\nfunc (fds *FdSet) IsSet(fd int) bool {\n\treturn fds.Bits[fd/NFDBITS]&(1<<(uintptr(fd)%NFDBITS)) != 0\n}\n\n// Zero clears the set fds.\nfunc (fds *FdSet) Zero() {\n\tfor i := range fds.Bits {\n\t\tfds.Bits[i] = 0\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/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": "vendor/golang.org/x/sys/unix/gccgo.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && !aix && !hurd\n\npackage unix\n\nimport \"syscall\"\n\n// We can't use the gc-syntax .s files for gccgo. On the plus side\n// much of the functionality can be written directly in Go.\n\nfunc realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)\n\nfunc realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)\n\nfunc SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {\n\tsyscall.Entersyscall()\n\tr := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0\n}\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {\n\tr := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\treturn r, 0\n}\n\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tr, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)\n\treturn r, 0, syscall.Errno(errno)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/gccgo_c.c",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && !aix && !hurd\n\n#include <errno.h>\n#include <stdint.h>\n#include <unistd.h>\n\n#define _STRINGIFY2_(x) #x\n#define _STRINGIFY_(x) _STRINGIFY2_(x)\n#define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__)\n\n// Call syscall from C code because the gccgo support for calling from\n// Go to C does not support varargs functions.\n\nstruct ret {\n\tuintptr_t r;\n\tuintptr_t err;\n};\n\nstruct ret gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n  __asm__(GOSYM_PREFIX GOPKGPATH \".realSyscall\");\n\nstruct ret\ngccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n{\n\tstruct ret r;\n\n\terrno = 0;\n\tr.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n\tr.err = errno;\n\treturn r;\n}\n\nuintptr_t gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n  __asm__(GOSYM_PREFIX GOPKGPATH \".realSyscallNoError\");\n\nuintptr_t\ngccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n{\n\treturn syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && linux && amd64\n\npackage unix\n\nimport \"syscall\"\n\n//extern gettimeofday\nfunc realGettimeofday(*Timeval, *byte) int32\n\nfunc gettimeofday(tv *Timeval) (err syscall.Errno) {\n\tr := realGettimeofday(tv, nil)\n\tif r < 0 {\n\t\treturn syscall.GetErrno()\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ifreq_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// Helpers for dealing with ifreq since it contains a union and thus requires a\n// lot of unsafe.Pointer casts to use properly.\n\n// An Ifreq is a type-safe wrapper around the raw ifreq struct. An Ifreq\n// contains an interface name and a union of arbitrary data which can be\n// accessed using the Ifreq's methods. To create an Ifreq, use the NewIfreq\n// function.\n//\n// Use the Name method to access the stored interface name. The union data\n// fields can be get and set using the following methods:\n//   - Uint16/SetUint16: flags\n//   - Uint32/SetUint32: ifindex, metric, mtu\ntype Ifreq struct{ raw ifreq }\n\n// NewIfreq creates an Ifreq with the input network interface name after\n// validating the name does not exceed IFNAMSIZ-1 (trailing NULL required)\n// bytes.\nfunc NewIfreq(name string) (*Ifreq, error) {\n\t// Leave room for terminating NULL byte.\n\tif len(name) >= IFNAMSIZ {\n\t\treturn nil, EINVAL\n\t}\n\n\tvar ifr ifreq\n\tcopy(ifr.Ifrn[:], name)\n\n\treturn &Ifreq{raw: ifr}, nil\n}\n\n// TODO(mdlayher): get/set methods for hardware address sockaddr, char array, etc.\n\n// Name returns the interface name associated with the Ifreq.\nfunc (ifr *Ifreq) Name() string {\n\treturn ByteSliceToString(ifr.raw.Ifrn[:])\n}\n\n// According to netdevice(7), only AF_INET addresses are returned for numerous\n// sockaddr ioctls. For convenience, we expose these as Inet4Addr since the Port\n// field and other data is always empty.\n\n// Inet4Addr returns the Ifreq union data from an embedded sockaddr as a C\n// in_addr/Go []byte (4-byte IPv4 address) value. If the sockaddr family is not\n// AF_INET, an error is returned.\nfunc (ifr *Ifreq) Inet4Addr() ([]byte, error) {\n\traw := *(*RawSockaddrInet4)(unsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]))\n\tif raw.Family != AF_INET {\n\t\t// Cannot safely interpret raw.Addr bytes as an IPv4 address.\n\t\treturn nil, EINVAL\n\t}\n\n\treturn raw.Addr[:], nil\n}\n\n// SetInet4Addr sets a C in_addr/Go []byte (4-byte IPv4 address) value in an\n// embedded sockaddr within the Ifreq's union data. v must be 4 bytes in length\n// or an error will be returned.\nfunc (ifr *Ifreq) SetInet4Addr(v []byte) error {\n\tif len(v) != 4 {\n\t\treturn EINVAL\n\t}\n\n\tvar addr [4]byte\n\tcopy(addr[:], v)\n\n\tifr.clear()\n\t*(*RawSockaddrInet4)(\n\t\tunsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]),\n\t) = RawSockaddrInet4{\n\t\t// Always set IP family as ioctls would require it anyway.\n\t\tFamily: AF_INET,\n\t\tAddr:   addr,\n\t}\n\n\treturn nil\n}\n\n// Uint16 returns the Ifreq union data as a C short/Go uint16 value.\nfunc (ifr *Ifreq) Uint16() uint16 {\n\treturn *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0]))\n}\n\n// SetUint16 sets a C short/Go uint16 value as the Ifreq's union data.\nfunc (ifr *Ifreq) SetUint16(v uint16) {\n\tifr.clear()\n\t*(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) = v\n}\n\n// Uint32 returns the Ifreq union data as a C int/Go uint32 value.\nfunc (ifr *Ifreq) Uint32() uint32 {\n\treturn *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0]))\n}\n\n// SetUint32 sets a C int/Go uint32 value as the Ifreq's union data.\nfunc (ifr *Ifreq) SetUint32(v uint32) {\n\tifr.clear()\n\t*(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) = v\n}\n\n// clear zeroes the ifreq's union field to prevent trailing garbage data from\n// being sent to the kernel if an ifreq is reused.\nfunc (ifr *Ifreq) clear() {\n\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": "vendor/golang.org/x/sys/unix/ioctl_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"unsafe\"\n\n// IoctlRetInt performs an ioctl operation specified by req on a device\n// associated with opened file descriptor fd, and returns a non-negative\n// integer that is returned by the ioctl syscall.\nfunc IoctlRetInt(fd int, req uint) (int, error) {\n\tret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(ret), nil\n}\n\nfunc IoctlGetUint32(fd int, req uint) (uint32, error) {\n\tvar value uint32\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetRTCTime(fd int) (*RTCTime, error) {\n\tvar value RTCTime\n\terr := ioctlPtr(fd, RTC_RD_TIME, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlSetRTCTime(fd int, value *RTCTime) error {\n\treturn ioctlPtr(fd, RTC_SET_TIME, unsafe.Pointer(value))\n}\n\nfunc IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) {\n\tvar value RTCWkAlrm\n\terr := ioctlPtr(fd, RTC_WKALM_RD, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error {\n\treturn ioctlPtr(fd, RTC_WKALM_SET, unsafe.Pointer(value))\n}\n\n// IoctlGetEthtoolDrvinfo fetches ethtool driver information for the network\n// device specified by ifname.\nfunc IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvalue := EthtoolDrvinfo{Cmd: ETHTOOL_GDRVINFO}\n\tifrd := ifr.withData(unsafe.Pointer(&value))\n\n\terr = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd)\n\treturn &value, err\n}\n\n// IoctlGetWatchdogInfo fetches information about a watchdog device from the\n// Linux watchdog API. For more information, see:\n// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.\nfunc IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) {\n\tvar value WatchdogInfo\n\terr := ioctlPtr(fd, WDIOC_GETSUPPORT, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlWatchdogKeepalive issues a keepalive ioctl to a watchdog device. For\n// more information, see:\n// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.\nfunc IoctlWatchdogKeepalive(fd int) error {\n\t// arg is ignored and not a pointer, so ioctl is fine instead of ioctlPtr.\n\treturn ioctl(fd, WDIOC_KEEPALIVE, 0)\n}\n\n// IoctlFileCloneRange performs an FICLONERANGE ioctl operation to clone the\n// range of data conveyed in value to the file associated with the file\n// descriptor destFd. See the ioctl_ficlonerange(2) man page for details.\nfunc IoctlFileCloneRange(destFd int, value *FileCloneRange) error {\n\treturn ioctlPtr(destFd, FICLONERANGE, unsafe.Pointer(value))\n}\n\n// IoctlFileClone performs an FICLONE ioctl operation to clone the entire file\n// associated with the file description srcFd to the file associated with the\n// file descriptor destFd. See the ioctl_ficlone(2) man page for details.\nfunc IoctlFileClone(destFd, srcFd int) error {\n\treturn ioctl(destFd, FICLONE, uintptr(srcFd))\n}\n\ntype FileDedupeRange struct {\n\tSrc_offset uint64\n\tSrc_length uint64\n\tReserved1  uint16\n\tReserved2  uint32\n\tInfo       []FileDedupeRangeInfo\n}\n\ntype FileDedupeRangeInfo struct {\n\tDest_fd       int64\n\tDest_offset   uint64\n\tBytes_deduped uint64\n\tStatus        int32\n\tReserved      uint32\n}\n\n// IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the\n// range of data conveyed in value from the file associated with the file\n// descriptor srcFd to the value.Info destinations. See the\n// ioctl_fideduperange(2) man page for details.\nfunc IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error {\n\tbuf := make([]byte, SizeofRawFileDedupeRange+\n\t\tlen(value.Info)*SizeofRawFileDedupeRangeInfo)\n\trawrange := (*RawFileDedupeRange)(unsafe.Pointer(&buf[0]))\n\trawrange.Src_offset = value.Src_offset\n\trawrange.Src_length = value.Src_length\n\trawrange.Dest_count = uint16(len(value.Info))\n\trawrange.Reserved1 = value.Reserved1\n\trawrange.Reserved2 = value.Reserved2\n\n\tfor i := range value.Info {\n\t\trawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(\n\t\t\tuintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +\n\t\t\t\tuintptr(i*SizeofRawFileDedupeRangeInfo)))\n\t\trawinfo.Dest_fd = value.Info[i].Dest_fd\n\t\trawinfo.Dest_offset = value.Info[i].Dest_offset\n\t\trawinfo.Bytes_deduped = value.Info[i].Bytes_deduped\n\t\trawinfo.Status = value.Info[i].Status\n\t\trawinfo.Reserved = value.Info[i].Reserved\n\t}\n\n\terr := ioctlPtr(srcFd, FIDEDUPERANGE, unsafe.Pointer(&buf[0]))\n\n\t// Output\n\tfor i := range value.Info {\n\t\trawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(\n\t\t\tuintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +\n\t\t\t\tuintptr(i*SizeofRawFileDedupeRangeInfo)))\n\t\tvalue.Info[i].Dest_fd = rawinfo.Dest_fd\n\t\tvalue.Info[i].Dest_offset = rawinfo.Dest_offset\n\t\tvalue.Info[i].Bytes_deduped = rawinfo.Bytes_deduped\n\t\tvalue.Info[i].Status = rawinfo.Status\n\t\tvalue.Info[i].Reserved = rawinfo.Reserved\n\t}\n\n\treturn err\n}\n\nfunc IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error {\n\treturn ioctlPtr(fd, HIDIOCGRDESC, unsafe.Pointer(value))\n}\n\nfunc IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) {\n\tvar value HIDRawDevInfo\n\terr := ioctlPtr(fd, HIDIOCGRAWINFO, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlHIDGetRawName(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWNAME_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWNAME, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\nfunc IoctlHIDGetRawPhys(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWPHYS_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWPHYS, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\nfunc IoctlHIDGetRawUniq(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWUNIQ_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWUNIQ, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\n// IoctlIfreq performs an ioctl using an Ifreq structure for input and/or\n// output. See the netdevice(7) man page for details.\nfunc IoctlIfreq(fd int, req uint, value *Ifreq) error {\n\t// It is possible we will add more fields to *Ifreq itself later to prevent\n\t// misuse, so pass the raw *ifreq directly.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&value.raw))\n}\n\n// TODO(mdlayher): export if and when IfreqData is exported.\n\n// ioctlIfreqData performs an ioctl using an ifreqData structure for input\n// and/or output. See the netdevice(7) man page for details.\nfunc ioctlIfreqData(fd int, req uint, value *ifreqData) error {\n\t// The memory layout of IfreqData (type-safe) and ifreq (not type-safe) are\n\t// identical so pass *IfreqData directly.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlKCMClone attaches a new file descriptor to a multiplexor by cloning an\n// existing KCM socket, returning a structure containing the file descriptor of\n// the new socket.\nfunc IoctlKCMClone(fd int) (*KCMClone, error) {\n\tvar info KCMClone\n\tif err := ioctlPtr(fd, SIOCKCMCLONE, unsafe.Pointer(&info)); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &info, nil\n}\n\n// IoctlKCMAttach attaches a TCP socket and associated BPF program file\n// descriptor to a multiplexor.\nfunc IoctlKCMAttach(fd int, info KCMAttach) error {\n\treturn ioctlPtr(fd, SIOCKCMATTACH, unsafe.Pointer(&info))\n}\n\n// IoctlKCMUnattach unattaches a TCP socket file descriptor from a multiplexor.\nfunc IoctlKCMUnattach(fd int, info KCMUnattach) error {\n\treturn ioctlPtr(fd, SIOCKCMUNATTACH, unsafe.Pointer(&info))\n}\n\n// IoctlLoopGetStatus64 gets the status of the loop device associated with the\n// file descriptor fd using the LOOP_GET_STATUS64 operation.\nfunc IoctlLoopGetStatus64(fd int) (*LoopInfo64, error) {\n\tvar value LoopInfo64\n\tif err := ioctlPtr(fd, LOOP_GET_STATUS64, unsafe.Pointer(&value)); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &value, nil\n}\n\n// IoctlLoopSetStatus64 sets the status of the loop device associated with the\n// file descriptor fd using the LOOP_SET_STATUS64 operation.\nfunc IoctlLoopSetStatus64(fd int, value *LoopInfo64) error {\n\treturn ioctlPtr(fd, LOOP_SET_STATUS64, unsafe.Pointer(value))\n}\n\n// IoctlLoopConfigure configures all loop device parameters in a single step\nfunc IoctlLoopConfigure(fd int, value *LoopConfig) error {\n\treturn ioctlPtr(fd, LOOP_CONFIGURE, unsafe.Pointer(value))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ioctl_signed.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || solaris\n\npackage unix\n\nimport (\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": "vendor/golang.org/x/sys/unix/ioctl_unsigned.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin || dragonfly || freebsd || hurd || linux || netbsd || openbsd\n\npackage unix\n\nimport (\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": "vendor/golang.org/x/sys/unix/ioctl_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req int, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req int, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value is expected to be TCSETS, TCSETSW, or TCSETSF\nfunc IoctlSetTermios(fd int, req int, value *Termios) error {\n\tif (req != TCSETS) && (req != TCSETSW) && (req != TCSETSF) {\n\t\treturn ENOSYS\n\t}\n\terr := Tcsetattr(fd, int(req), value)\n\truntime.KeepAlive(value)\n\treturn err\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\n//\n// A few ioctl requests use the return value as an output parameter;\n// for those, IoctlRetInt should be used instead of this function.\nfunc IoctlGetInt(fd int, req int) (int, error) {\n\tvar value int\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req int) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlGetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value is expected to be TCGETS\nfunc IoctlGetTermios(fd int, req int) (*Termios, error) {\n\tvar value Termios\n\tif req != TCGETS {\n\t\treturn &value, ENOSYS\n\t}\n\terr := Tcgetattr(fd, &value)\n\treturn &value, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mkall.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# This script runs or (given -n) prints suggested commands to generate files for\n# the Architecture/OS specified by the GOARCH and GOOS environment variables.\n# See README.md for more information about how the build system works.\n\nGOOSARCH=\"${GOOS}_${GOARCH}\"\n\n# defaults\nmksyscall=\"go run mksyscall.go\"\nmkerrors=\"./mkerrors.sh\"\nzerrors=\"zerrors_$GOOSARCH.go\"\nmksysctl=\"\"\nzsysctl=\"zsysctl_$GOOSARCH.go\"\nmksysnum=\nmktypes=\nmkasm=\nrun=\"sh\"\ncmd=\"\"\n\ncase \"$1\" in\n-syscalls)\n\tfor i in zsyscall*go\n\tdo\n\t\t# Run the command line that appears in the first line\n\t\t# of the generated file to regenerate it.\n\t\tsed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i\n\t\trm _$i\n\tdone\n\texit 0\n\t;;\n-n)\n\trun=\"cat\"\n\tcmd=\"echo\"\n\tshift\nesac\n\ncase \"$#\" in\n0)\n\t;;\n*)\n\techo 'usage: mkall.sh [-n]' 1>&2\n\texit 2\nesac\n\nif [[ \"$GOOS\" = \"linux\" ]]; then\n\t# Use the Docker-based build system\n\t# Files generated through docker (use $cmd so you can Ctl-C the build or run)\n\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": "vendor/golang.org/x/sys/unix/mkerrors.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# Generate Go code listing errors and other #defined constant\n# values (ENAMETOOLONG etc.), by asking the preprocessor\n# about the definitions.\n\nunset LANG\nexport LC_ALL=C\nexport LC_CTYPE=C\n\nif test -z \"$GOARCH\" -o -z \"$GOOS\"; then\n\techo 1>&2 \"GOARCH or GOOS not defined in environment\"\n\texit 1\nfi\n\n# Check that we are using the new build system if we should\nif [[ \"$GOOS\" = \"linux\" ]] && [[ \"$GOLANG_SYS_BUILD\" != \"docker\" ]]; then\n\techo 1>&2 \"In the Docker based build system, mkerrors should not be called directly.\"\n\techo 1>&2 \"See README.md\"\n\texit 1\nfi\n\nif [[ \"$GOOS\" = \"aix\" ]]; then\n\tCC=${CC:-gcc}\nelse\n\tCC=${CC:-cc}\nfi\n\nif [[ \"$GOOS\" = \"solaris\" ]]; then\n\t# Assumes GNU versions of utilities in PATH.\n\texport PATH=/usr/gnu/bin:$PATH\nfi\n\nuname=$(uname)\n\nincludes_AIX='\n#include <net/if.h>\n#include <net/netopt.h>\n#include <netinet/ip_mroute.h>\n#include <sys/protosw.h>\n#include <sys/stropts.h>\n#include <sys/mman.h>\n#include <sys/poll.h>\n#include <sys/select.h>\n#include <sys/termio.h>\n#include <termios.h>\n#include <fcntl.h>\n\n#define AF_LOCAL AF_UNIX\n'\n\nincludes_Darwin='\n#define _DARWIN_C_SOURCE\n#define KERNEL 1\n#define _DARWIN_USE_64_BIT_INODE\n#define __APPLE_USE_RFC_3542\n#include <stdint.h>\n#include <sys/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/fs.h>\n#include <linux/fscrypt.h>\n#include <linux/fsverity.h>\n#include <linux/genetlink.h>\n#include <linux/hdreg.h>\n#include <linux/hidraw.h>\n#include <linux/if.h>\n#include <linux/if_addr.h>\n#include <linux/if_alg.h>\n#include <linux/if_arp.h>\n#include <linux/if_ether.h>\n#include <linux/if_ppp.h>\n#include <linux/if_tun.h>\n#include <linux/if_packet.h>\n#include <linux/if_xdp.h>\n#include <linux/input.h>\n#include <linux/kcm.h>\n#include <linux/kexec.h>\n#include <linux/keyctl.h>\n#include <linux/landlock.h>\n#include <linux/loop.h>\n#include <linux/lwtunnel.h>\n#include <linux/magic.h>\n#include <linux/memfd.h>\n#include <linux/module.h>\n#include <linux/mount.h>\n#include <linux/netfilter/nfnetlink.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 MSG_FASTOPEN\n#define MSG_FASTOPEN    0x20000000\n#endif\n\n#ifndef PTRACE_GETREGS\n#define PTRACE_GETREGS\t0xc\n#endif\n\n#ifndef PTRACE_SETREGS\n#define PTRACE_SETREGS\t0xd\n#endif\n\n#ifndef SOL_NETLINK\n#define SOL_NETLINK\t270\n#endif\n\n#ifndef SOL_SMC\n#define SOL_SMC 286\n#endif\n\n#ifdef SOL_BLUETOOTH\n// SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h\n// but it is already in bluetooth_linux.go\n#undef SOL_BLUETOOTH\n#endif\n\n// Certain constants are missing from the fs/crypto UAPI\n#define FS_KEY_DESC_PREFIX              \"fscrypt:\"\n#define FS_KEY_DESC_PREFIX_SIZE         8\n#define FS_MAX_KEY_SIZE                 64\n\n// The code generator produces -0x1 for (~0), but an unsigned value is necessary\n// for the tipc_subscr timeout __u32 field.\n#undef TIPC_WAIT_FOREVER\n#define TIPC_WAIT_FOREVER 0xffffffff\n\n// Copied from linux/l2tp.h\n// Including linux/l2tp.h here causes conflicts between linux/in.h\n// and netinet/in.h included via net/route.h above.\n#define IPPROTO_L2TP\t\t115\n\n// 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_MODE_/ ||\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 ~ /^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": "vendor/golang.org/x/sys/unix/mmap_nomremap.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || openbsd || solaris\n\npackage unix\n\nvar mapper = &mmapper{\n\tactive: make(map[*byte][]byte),\n\tmmap:   mmap,\n\tmunmap: munmap,\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mremap.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux || netbsd\n\npackage unix\n\nimport \"unsafe\"\n\ntype mremapMmapper struct {\n\tmmapper\n\tmremap func(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error)\n}\n\nvar mapper = &mremapMmapper{\n\tmmapper: mmapper{\n\t\tactive: make(map[*byte][]byte),\n\t\tmmap:   mmap,\n\t\tmunmap: munmap,\n\t},\n\tmremap: mremap,\n}\n\nfunc (m *mremapMmapper) Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {\n\tif newLength <= 0 || len(oldData) == 0 || len(oldData) != cap(oldData) || flags&mremapFixed != 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\tpOld := &oldData[cap(oldData)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tbOld := m.active[pOld]\n\tif bOld == nil || &bOld[0] != &oldData[0] {\n\t\treturn nil, EINVAL\n\t}\n\tnewAddr, errno := m.mremap(uintptr(unsafe.Pointer(&bOld[0])), uintptr(len(bOld)), uintptr(newLength), flags, 0)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\tbNew := unsafe.Slice((*byte)(unsafe.Pointer(newAddr)), newLength)\n\tpNew := &bNew[cap(bNew)-1]\n\tif flags&mremapDontunmap == 0 {\n\t\tdelete(m.active, pOld)\n\t}\n\tm.active[pNew] = bNew\n\treturn bNew, nil\n}\n\nfunc Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {\n\treturn mapper.Mremap(oldData, newLength, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/pagesize_unix.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris\n\n// For Unix, get the pagesize from the runtime.\n\npackage unix\n\nimport \"syscall\"\n\nfunc Getpagesize() int {\n\treturn syscall.Getpagesize()\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/pledge_openbsd.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// Pledge implements the pledge syscall.\n//\n// This changes both the promises and execpromises; use PledgePromises or\n// PledgeExecpromises to only change the promises or execpromises\n// respectively.\n//\n// For more information see pledge(2).\nfunc Pledge(promises, execpromises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\tpptr, err := BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\texptr, err := BytePtrFromString(execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(pptr, exptr)\n}\n\n// PledgePromises implements the pledge syscall.\n//\n// This changes the promises and leaves the execpromises untouched.\n//\n// For more information see pledge(2).\nfunc PledgePromises(promises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\tpptr, err := BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(pptr, nil)\n}\n\n// PledgeExecpromises implements the pledge syscall.\n//\n// This changes the execpromises and leaves the promises untouched.\n//\n// For more information see pledge(2).\nfunc PledgeExecpromises(execpromises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\texptr, err := BytePtrFromString(execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(nil, exptr)\n}\n\n// majmin returns major and minor version number for an OpenBSD system.\nfunc majmin() (major int, minor int, err error) {\n\tvar v Utsname\n\terr = Uname(&v)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tmajor, err = strconv.Atoi(string(v.Release[0]))\n\tif err != nil {\n\t\terr = errors.New(\"cannot parse major version number returned by uname\")\n\t\treturn\n\t}\n\n\tminor, err = strconv.Atoi(string(v.Release[2]))\n\tif err != nil {\n\t\terr = errors.New(\"cannot parse minor version number returned by uname\")\n\t\treturn\n\t}\n\n\treturn\n}\n\n// pledgeAvailable checks for availability of the pledge(2) syscall\n// based on the running OpenBSD version.\nfunc pledgeAvailable() error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Require OpenBSD 6.4 as a minimum.\n\tif maj < 6 || (maj == 6 && min <= 3) {\n\t\treturn fmt.Errorf(\"cannot call Pledge on OpenBSD %d.%d\", maj, min)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ptrace_darwin.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin && !ios\n\npackage unix\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) error {\n\treturn ptrace1(request, pid, addr, data)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ptrace_ios.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build ios\n\npackage unix\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\treturn ENOTSUP\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/race.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin && race) || (linux && race) || (freebsd && race)\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\nconst raceenabled = true\n\nfunc raceAcquire(addr unsafe.Pointer) {\n\truntime.RaceAcquire(addr)\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n\truntime.RaceReleaseMerge(addr)\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n\truntime.RaceReadRange(addr, len)\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n\truntime.RaceWriteRange(addr, len)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/race0.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nconst raceenabled = false\n\nfunc raceAcquire(addr unsafe.Pointer) {\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/readdirent_getdents.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || dragonfly || freebsd || linux || netbsd || openbsd\n\npackage unix\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\treturn Getdents(fd, buf)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/readdirent_getdirentries.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin\n\npackage unix\n\nimport \"unsafe\"\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\t// Final argument is (basep *uintptr) and the syscall doesn't take nil.\n\t// 64 bits should be enough. (32 bits isn't even on 386). Since the\n\t// actual system call is getdirentries64, 64 is a good guess.\n\t// TODO(rsc): Can we use a single global basep for all calls?\n\tvar base = (*uintptr)(unsafe.Pointer(new(uint64)))\n\treturn Getdirentries(fd, buf, base)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\n// Round the length of a raw sockaddr up to align it properly.\nfunc cmsgAlignOf(salen int) int {\n\tsalign := SizeofPtr\n\tif SizeofPtr == 8 && !supportsABI(_dragonflyABIChangeVersion) {\n\t\t// 64-bit Dragonfly before the September 2019 ABI changes still requires\n\t\t// 32-bit aligned access to network subsystem.\n\t\tsalign = 4\n\t}\n\treturn (salen + salign - 1) & ^(salign - 1)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_linux.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Socket control messages\n\npackage unix\n\nimport \"unsafe\"\n\n// UnixCredentials encodes credentials into a socket control message\n// for sending to another process. This can be used for\n// authentication.\nfunc UnixCredentials(ucred *Ucred) []byte {\n\tb := make([]byte, CmsgSpace(SizeofUcred))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_CREDENTIALS\n\th.SetLen(CmsgLen(SizeofUcred))\n\t*(*Ucred)(h.data(0)) = *ucred\n\treturn b\n}\n\n// ParseUnixCredentials decodes a socket control message that contains\n// credentials in a Ucred structure. To receive such a message, the\n// SO_PASSCRED option must be enabled on the socket.\nfunc ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_CREDENTIALS {\n\t\treturn nil, EINVAL\n\t}\n\tucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))\n\treturn &ucred, nil\n}\n\n// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO.\nfunc PktInfo4(info *Inet4Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet4Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IP\n\th.Type = IP_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet4Pktinfo))\n\t*(*Inet4Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n\n// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO.\nfunc PktInfo6(info *Inet6Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet6Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IPV6\n\th.Type = IPV6_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet6Pktinfo))\n\t*(*Inet6Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n\n// ParseOrigDstAddr decodes a socket control message containing the original\n// destination address. To receive such a message the IP_RECVORIGDSTADDR or\n// IPV6_RECVORIGDSTADDR option must be enabled on the socket.\nfunc ParseOrigDstAddr(m *SocketControlMessage) (Sockaddr, error) {\n\tswitch {\n\tcase m.Header.Level == SOL_IP && m.Header.Type == IP_ORIGDSTADDR:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(&m.Data[0]))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase m.Header.Level == SOL_IPV6 && m.Header.Type == IPV6_ORIGDSTADDR:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(&m.Data[0]))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tdefault:\n\t\treturn nil, EINVAL\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_unix.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Socket control messages\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// CmsgLen returns the value to store in the Len field of the Cmsghdr\n// structure, taking into account any necessary alignment.\nfunc CmsgLen(datalen int) int {\n\treturn cmsgAlignOf(SizeofCmsghdr) + datalen\n}\n\n// CmsgSpace returns the number of bytes an ancillary element with\n// payload of the passed data length occupies.\nfunc CmsgSpace(datalen int) int {\n\treturn cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen)\n}\n\nfunc (h *Cmsghdr) data(offset uintptr) unsafe.Pointer {\n\treturn unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)) + offset)\n}\n\n// SocketControlMessage represents a socket control message.\ntype SocketControlMessage struct {\n\tHeader Cmsghdr\n\tData   []byte\n}\n\n// ParseSocketControlMessage parses b as an array of socket control\n// messages.\nfunc ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) {\n\tvar msgs []SocketControlMessage\n\ti := 0\n\tfor i+CmsgLen(0) <= len(b) {\n\t\th, dbuf, err := socketControlMessageHeaderAndData(b[i:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tm := SocketControlMessage{Header: *h, Data: dbuf}\n\t\tmsgs = append(msgs, m)\n\t\ti += cmsgAlignOf(int(h.Len))\n\t}\n\treturn msgs, nil\n}\n\n// ParseOneSocketControlMessage parses a single socket control message from b, returning the message header,\n// message data (a slice of b), and the remainder of b after that single message.\n// When there are no remaining messages, len(remainder) == 0.\nfunc ParseOneSocketControlMessage(b []byte) (hdr Cmsghdr, data []byte, remainder []byte, err error) {\n\th, dbuf, err := socketControlMessageHeaderAndData(b)\n\tif err != nil {\n\t\treturn Cmsghdr{}, nil, nil, err\n\t}\n\tif i := cmsgAlignOf(int(h.Len)); i < len(b) {\n\t\tremainder = b[i:]\n\t}\n\treturn *h, dbuf, remainder, nil\n}\n\nfunc socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) {\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\tif h.Len < SizeofCmsghdr || uint64(h.Len) > uint64(len(b)) {\n\t\treturn nil, nil, EINVAL\n\t}\n\treturn h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil\n}\n\n// UnixRights encodes a set of open file descriptors into a socket\n// control message for sending to another process.\nfunc UnixRights(fds ...int) []byte {\n\tdatalen := len(fds) * 4\n\tb := make([]byte, CmsgSpace(datalen))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_RIGHTS\n\th.SetLen(CmsgLen(datalen))\n\tfor i, fd := range fds {\n\t\t*(*int32)(h.data(4 * uintptr(i))) = int32(fd)\n\t}\n\treturn b\n}\n\n// ParseUnixRights decodes a socket control message that contains an\n// integer array of open file descriptors from another process.\nfunc ParseUnixRights(m *SocketControlMessage) ([]int, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_RIGHTS {\n\t\treturn nil, EINVAL\n\t}\n\tfds := make([]int, len(m.Data)>>2)\n\tfor i, j := 0, 0; i < len(m.Data); i += 4 {\n\t\tfds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i])))\n\t\tj++\n\t}\n\treturn fds, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport (\n\t\"runtime\"\n)\n\n// Round the length of a raw sockaddr up to align it properly.\nfunc cmsgAlignOf(salen int) int {\n\tsalign := SizeofPtr\n\n\t// dragonfly needs to check ABI version at runtime, see cmsgAlignOf in\n\t// sockcmsg_dragonfly.go\n\tswitch runtime.GOOS {\n\tcase \"aix\":\n\t\t// There is no alignment on AIX.\n\t\tsalign = 1\n\tcase \"darwin\", \"ios\", \"illumos\", \"solaris\":\n\t\t// NOTE: It seems like 64-bit Darwin, Illumos and Solaris\n\t\t// kernels still require 32-bit aligned access to network\n\t\t// subsystem.\n\t\tif SizeofPtr == 8 {\n\t\t\tsalign = 4\n\t\t}\n\tcase \"netbsd\", \"openbsd\":\n\t\t// NetBSD and OpenBSD armv7 require 64-bit alignment.\n\t\tif runtime.GOARCH == \"arm\" {\n\t\t\tsalign = 8\n\t\t}\n\t\t// NetBSD aarch64 requires 128-bit alignment.\n\t\tif runtime.GOOS == \"netbsd\" && runtime.GOARCH == \"arm64\" {\n\t\t\tsalign = 16\n\t\t}\n\tcase \"zos\":\n\t\t// z/OS socket macros use [32-bit] sizeof(int) alignment,\n\t\t// not pointer width.\n\t\tsalign = SizeofInt\n\t}\n\n\treturn (salen + salign - 1) & ^(salign - 1)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Package unix contains an interface to the low-level operating system\n// primitives. OS details vary depending on the underlying system, and\n// by default, godoc will display OS-specific documentation for the current\n// system. If you want godoc to display OS documentation for another\n// system, set $GOOS and $GOARCH to the desired system. For example, if\n// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS\n// to freebsd and $GOARCH to arm.\n//\n// The primary use of this package is inside other packages that provide a more\n// portable interface to the system, such as \"os\", \"time\" and \"net\".  Use\n// those packages rather than this one if you can.\n//\n// For details of the functions and data types in this package consult\n// the manuals for the appropriate operating system.\n//\n// These calls return err == nil to indicate success; otherwise\n// err represents an operating system error describing the failure and\n// holds a value of type syscall.Errno.\npackage unix // import \"golang.org/x/sys/unix\"\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// ByteSliceFromString returns a NUL-terminated slice of bytes\n// containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc ByteSliceFromString(s string) ([]byte, error) {\n\tif strings.IndexByte(s, 0) != -1 {\n\t\treturn nil, EINVAL\n\t}\n\ta := make([]byte, len(s)+1)\n\tcopy(a, s)\n\treturn a, nil\n}\n\n// BytePtrFromString returns a pointer to a NUL-terminated array of\n// bytes containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc BytePtrFromString(s string) (*byte, error) {\n\ta, err := ByteSliceFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any\n// bytes after the NUL removed.\nfunc ByteSliceToString(s []byte) string {\n\tif i := bytes.IndexByte(s, 0); i != -1 {\n\t\ts = s[:i]\n\t}\n\treturn string(s)\n}\n\n// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.\n// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated\n// at a zero byte; if the zero byte is not present, the program may crash.\nfunc BytePtrToString(p *byte) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + 1)\n\t}\n\n\treturn string(unsafe.Slice(p, n))\n}\n\n// Single-word zero for use when we need a valid pointer to 0 bytes.\nvar _zero uintptr\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_aix.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix\n\n// Aix system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and\n// wrap it in our own nicer implementation.\n\npackage unix\n\nimport \"unsafe\"\n\n/*\n * Wrapped\n */\n\nfunc Access(path string, mode uint32) (err error) {\n\treturn Faccessat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\treturn Fchmodat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, 0)\n}\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\treturn Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n > len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif n == len(sa.raw.Path) && name[0] != '@' {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = uint8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n//sys\tgetcwd(buf []byte) (err error)\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (ret string, err error) {\n\tfor len := uint64(4096); ; len *= 2 {\n\t\tb := make([]byte, len)\n\t\terr := getcwd(b)\n\t\tif err == nil {\n\t\t\ti := 0\n\t\t\tfor b[i] != 0 {\n\t\t\t\ti++\n\t\t\t}\n\t\t\treturn string(b[0:i]), nil\n\t\t}\n\t\tif err != ERANGE {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n}\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\terr = getcwd(buf)\n\tif err == nil {\n\t\ti := 0\n\t\tfor buf[i] != 0 {\n\t\t\ti++\n\t\t}\n\t\tn = i + 1\n\t}\n\treturn\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 16 on BSD.\n\tif n < 0 || n > 1000 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n/*\n * Socket\n */\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif nfd == -1 {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); n == -1 {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\n\t\t// Some versions of AIX have a bug in getsockname (see IV78655).\n\t\t// We can't rely on sa.Len being set correctly.\n\t\tn := SizeofSockaddrUnix - 3 // subtract leading Family, Len, terminating NUL.\n\t\tfor i := 0; i < n; i++ {\n\t\t\tif pp.Path[i] == 0 {\n\t\t\t\tn = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\terr = gettimeofday(tv, nil)\n\treturn\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sys\tgetdirent(fd int, buf []byte) (n int, err error)\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\treturn getdirent(fd, buf)\n}\n\n//sys\twait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\tvar r Pid_t\n\terr = ERESTART\n\t// AIX wait4 may return with ERESTART errno, while the 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": "vendor/golang.org/x/sys/unix/syscall_aix_ppc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = lseek64\n\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Fstat(fd int, stat *Stat_t) error {\n\treturn fstat(fd, stat)\n}\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {\n\treturn fstatat(dirfd, path, stat, flags)\n}\n\nfunc Lstat(path string, stat *Stat_t) error {\n\treturn lstat(path, stat)\n}\n\nfunc Stat(path string, statptr *Stat_t) error {\n\treturn stat(path, statptr)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc64\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = lseek\n\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int64(sec), Usec: int32(usec)}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// In order to only have Timespec structure, type of Stat_t's fields\n// Atim, Mtim and Ctim is changed from StTimespec to Timespec during\n// ztypes generation.\n// On ppc64, Timespec.Nsec is an int64 while StTimespec.Nsec is an\n// int32, so the fields' value must be modified.\nfunc fixStatTimFields(stat *Stat_t) {\n\tstat.Atim.Nsec >>= 32\n\tstat.Mtim.Nsec >>= 32\n\tstat.Ctim.Nsec >>= 32\n}\n\nfunc Fstat(fd int, stat *Stat_t) error {\n\terr := fstat(fd, stat)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {\n\terr := fstatat(dirfd, path, stat, flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Lstat(path string, stat *Stat_t) error {\n\terr := lstat(path, stat)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Stat(path string, statptr *Stat_t) error {\n\terr := stat(path, statptr)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(statptr)\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_bsd.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin || dragonfly || freebsd || netbsd || openbsd\n\n// BSD system call wrappers shared by *BSD based systems\n// including OS X (Darwin) and FreeBSD.  Like the other\n// syscall_*.go files it is compiled as Go code but also\n// used as input to mksyscall which parses the //sys\n// lines and generates system call stubs.\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (string, error) {\n\tvar buf [PathMax]byte\n\t_, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\n/*\n * Wrapped\n */\n\n//sysnb\tgetgroups(ngid int, gid *_Gid_t) (n int, err error)\n//sysnb\tsetgroups(ngid int, gid *_Gid_t) (err error)\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 16 on BSD.\n\tif n < 0 || n > 1000 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.\n\ntype WaitStatus uint32\n\nconst (\n\tmask  = 0x7F\n\tcore  = 0x80\n\tshift = 8\n\n\texited  = 0\n\tkilled  = 9\n\tstopped = 0x7F\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif w&mask != exited {\n\t\treturn -1\n\t}\n\treturn int(w >> shift)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tsig := syscall.Signal(w & mask)\n\tif sig == stopped || sig == 0 {\n\t\treturn -1\n\t}\n\treturn sig\n}\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }\n\nfunc (w WaitStatus) Killed() bool { return w&mask == killed && syscall.Signal(w>>shift) != SIGKILL }\n\nfunc (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\twpid, err = wait4(pid, &status, options, rusage)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\tShutdown(s int, how int) (err error)\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet4\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet6\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) || n == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Index == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = sa.Len\n\tsa.raw.Family = AF_LINK\n\tsa.raw.Index = sa.Index\n\tsa.raw.Type = sa.Type\n\tsa.raw.Nlen = sa.Nlen\n\tsa.raw.Alen = sa.Alen\n\tsa.raw.Slen = sa.Slen\n\tsa.raw.Data = sa.Data\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_LINK:\n\t\tpp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrDatalink)\n\t\tsa.Len = pp.Len\n\t\tsa.Family = pp.Family\n\t\tsa.Index = pp.Index\n\t\tsa.Type = pp.Type\n\t\tsa.Nlen = pp.Nlen\n\t\tsa.Alen = pp.Alen\n\t\tsa.Slen = pp.Slen\n\t\tsa.Data = pp.Data\n\t\treturn sa, nil\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tif pp.Len < 2 || pp.Len > SizeofSockaddrUnix {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t\tsa := new(SockaddrUnix)\n\n\t\t// Some BSDs include the trailing NUL in the length, whereas\n\t\t// others do not. Work around this by subtracting the leading\n\t\t// family and len. The path is then scanned to see if a NUL\n\t\t// terminator still exists within the length.\n\t\tn := int(pp.Len) - 2 // subtract leading Family, Len\n\t\tfor i := 0; i < n; i++ {\n\t\t\tif pp.Path[i] == 0 {\n\t\t\t\t// found early NUL; assume Len included the NUL\n\t\t\t\t// or was overestimating.\n\t\t\t\tn = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn anyToSockaddrGOOS(fd, rsa)\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif err != nil {\n\t\treturn\n\t}\n\tif (runtime.GOOS == \"darwin\" || runtime.GOOS == \"ios\") && len == 0 {\n\t\t// Accepted socket has no address.\n\t\t// This is likely due to a bug in xnu kernels,\n\t\t// where instead of ECONNABORTED error socket\n\t\t// is accepted, but has no address.\n\t\tClose(nfd)\n\t\treturn 0, nil, ECONNABORTED\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\t// TODO(jsing): DragonFly has a \"bug\" (see issue 3349), which should be\n\t// reported upstream.\n\tif runtime.GOOS == \"dragonfly\" && rsa.Addr.Family == AF_UNSPEC && rsa.Addr.Len == 0 {\n\t\trsa.Addr.Family = AF_UNIX\n\t\trsa.Addr.Len = SizeofSockaddrUnix\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n//sys\tkevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error)\n\nfunc Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err error) {\n\tvar change, event unsafe.Pointer\n\tif len(changes) > 0 {\n\t\tchange = unsafe.Pointer(&changes[0])\n\t}\n\tif len(events) > 0 {\n\t\tevent = unsafe.Pointer(&events[0])\n\t}\n\treturn kevent(kq, change, len(changes), event, len(events), timeout)\n}\n\n// sysctlmib translates name to mib number and appends any additional args.\nfunc sysctlmib(name string, args ...int) ([]_C_int, error) {\n\t// Translate name to mib number.\n\tmib, err := nametomib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, a := range args {\n\t\tmib = append(mib, _C_int(a))\n\t}\n\n\treturn mib, nil\n}\n\nfunc Sysctl(name string) (string, error) {\n\treturn SysctlArgs(name)\n}\n\nfunc SysctlArgs(name string, args ...int) (string, error) {\n\tbuf, err := SysctlRaw(name, args...)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := len(buf)\n\n\t// Throw away terminating NUL.\n\tif n > 0 && buf[n-1] == '\\x00' {\n\t\tn--\n\t}\n\treturn string(buf[0:n]), nil\n}\n\nfunc SysctlUint32(name string) (uint32, error) {\n\treturn SysctlUint32Args(name)\n}\n\nfunc SysctlUint32Args(name string, args ...int) (uint32, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn := uintptr(4)\n\tbuf := make([]byte, 4)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn 0, err\n\t}\n\tif n != 4 {\n\t\treturn 0, EIO\n\t}\n\treturn *(*uint32)(unsafe.Pointer(&buf[0])), nil\n}\n\nfunc SysctlUint64(name string, args ...int) (uint64, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn := uintptr(8)\n\tbuf := make([]byte, 8)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn 0, err\n\t}\n\tif n != 8 {\n\t\treturn 0, EIO\n\t}\n\treturn *(*uint64)(unsafe.Pointer(&buf[0])), nil\n}\n\nfunc SysctlRaw(name string, args ...int) ([]byte, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Find size.\n\tn := uintptr(0)\n\tif err := sysctl(mib, nil, &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Read into buffer of that size.\n\tbuf := make([]byte, n)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// The actual call may return less than the original reported required\n\t// size so ensure we deal with that.\n\treturn buf[:n], nil\n}\n\nfunc SysctlClockinfo(name string) (*Clockinfo, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofClockinfo)\n\tvar ci Clockinfo\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofClockinfo {\n\t\treturn nil, EIO\n\t}\n\treturn &ci, nil\n}\n\nfunc SysctlTimeval(name string) (*Timeval, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar tv Timeval\n\tn := uintptr(unsafe.Sizeof(tv))\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&tv)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != unsafe.Sizeof(tv) {\n\t\treturn nil, EIO\n\t}\n\treturn &tv, nil\n}\n\n//sys\tutimes(path string, timeval *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif ts == nil {\n\t\terr := utimensat(AT_FDCWD, path, nil, 0)\n\t\tif err != ENOSYS {\n\t\t\treturn err\n\t\t}\n\t\treturn utimes(path, nil)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\terr := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\t// Not as efficient as it could be because Timespec and\n\t// Timeval have different types in the different OSes\n\ttv := [2]Timeval{\n\t\tNsecToTimeval(TimespecToNsec(ts[0])),\n\t\tNsecToTimeval(TimespecToNsec(ts[1])),\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\n//sys\tfutimes(fd int, timeval *[2]Timeval) (err error)\n\nfunc Futimes(fd int, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimes(fd, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n// TODO: wrap\n//\tAcct(name nil-string) (err error)\n//\tGethostuuid(uuid *byte, timeout *Timespec) (err error)\n//\tPtrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error)\n\n//sys\tMadvise(b []byte, behav int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Darwin system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//sys\tclosedir(dir uintptr) (err error)\n//sys\treaddir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno)\n\nfunc fdopendir(fd int) (dir uintptr, err error) {\n\tr0, _, e1 := syscall_syscallPtr(libc_fdopendir_trampoline_addr, uintptr(fd), 0, 0)\n\tdir = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fdopendir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fdopendir fdopendir \"/usr/lib/libSystem.B.dylib\"\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\t// Simulate Getdirentries using fdopendir/readdir_r/closedir.\n\t// We store the number of entries to skip in the seek\n\t// offset of fd. See issue #31368.\n\t// It's not the full required semantics, but should handle the case\n\t// of calling Getdirentries or ReadDirent repeatedly.\n\t// It won't handle assigning the results of lseek to *basep, or handle\n\t// the directory being edited underfoot.\n\tskip, err := Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t// We need to duplicate the incoming file descriptor\n\t// because the caller expects to retain control of it, but\n\t// fdopendir expects to take control of its argument.\n\t// Just Dup'ing the file descriptor is not enough, as the\n\t// result shares underlying state. Use Openat to make a really\n\t// new file descriptor referring to the same directory.\n\tfd2, err := Openat(fd, \".\", O_RDONLY, 0)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\td, err := fdopendir(fd2)\n\tif err != nil {\n\t\tClose(fd2)\n\t\treturn 0, err\n\t}\n\tdefer closedir(d)\n\n\tvar cnt int64\n\tfor {\n\t\tvar entry Dirent\n\t\tvar entryp *Dirent\n\t\te := readdir_r(d, &entry, &entryp)\n\t\tif e != 0 {\n\t\t\treturn n, errnoErr(e)\n\t\t}\n\t\tif entryp == nil {\n\t\t\tbreak\n\t\t}\n\t\tif skip > 0 {\n\t\t\tskip--\n\t\t\tcnt++\n\t\t\tcontinue\n\t\t}\n\n\t\treclen := int(entry.Reclen)\n\t\tif reclen > len(buf) {\n\t\t\t// Not enough room. Return for now.\n\t\t\t// The counter will let us know where we should start up again.\n\t\t\t// Note: this strategy for suspending in the middle and\n\t\t\t// restarting is O(n^2) in the length of the directory. Oh well.\n\t\t\tbreak\n\t\t}\n\n\t\t// Copy entry into return buffer.\n\t\ts := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen)\n\t\tcopy(buf, s)\n\n\t\tbuf = buf[reclen:]\n\t\tn += reclen\n\t\tcnt++\n\t}\n\t// Set the seek offset of the input fd to record\n\t// how many files we've already returned.\n\t_, err = Seek(fd, cnt, 0 /* SEEK_SET */)\n\tif err != nil {\n\t\treturn n, err\n\t}\n\n\treturn n, nil\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\traw    RawSockaddrDatalink\n}\n\n// SockaddrCtl implements the Sockaddr interface for AF_SYSTEM type sockets.\ntype SockaddrCtl struct {\n\tID   uint32\n\tUnit uint32\n\traw  RawSockaddrCtl\n}\n\nfunc (sa *SockaddrCtl) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Sc_len = SizeofSockaddrCtl\n\tsa.raw.Sc_family = AF_SYSTEM\n\tsa.raw.Ss_sysaddr = AF_SYS_CONTROL\n\tsa.raw.Sc_id = sa.ID\n\tsa.raw.Sc_unit = sa.Unit\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrCtl, nil\n}\n\n// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets.\n// SockaddrVM provides access to Darwin VM sockets: a mechanism that enables\n// bidirectional communication between a hypervisor and its guest virtual\n// machines.\ntype SockaddrVM struct {\n\t// CID and Port specify a context ID and port address for a VM socket.\n\t// Guests have a unique CID, and hosts may have a well-known CID of:\n\t//  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process.\n\t//  - VMADDR_CID_LOCAL: refers to local communication (loopback).\n\t//  - VMADDR_CID_HOST: refers to other processes on the host.\n\tCID  uint32\n\tPort uint32\n\traw  RawSockaddrVM\n}\n\nfunc (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Len = SizeofSockaddrVM\n\tsa.raw.Family = AF_VSOCK\n\tsa.raw.Port = sa.Port\n\tsa.raw.Cid = sa.CID\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_SYSTEM:\n\t\tpp := (*RawSockaddrCtl)(unsafe.Pointer(rsa))\n\t\tif pp.Ss_sysaddr == AF_SYS_CONTROL {\n\t\t\tsa := new(SockaddrCtl)\n\t\t\tsa.ID = pp.Sc_id\n\t\t\tsa.Unit = pp.Sc_unit\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_VSOCK:\n\t\tpp := (*RawSockaddrVM)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrVM{\n\t\t\tCID:  pp.Cid,\n\t\t\tPort: pp.Port,\n\t\t}\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\n// Some external packages rely on SYS___SYSCTL being defined to implement their\n// own sysctl wrappers. Provide it here, even though direct syscalls are no\n// longer supported on darwin.\nconst SYS___SYSCTL = SYS_SYSCTL\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }\nfunc PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }\nfunc PtraceDenyAttach() (err error)    { return ptrace(PT_DENY_ATTACH, 0, 0, 0) }\n\n//sysnb\tpipe(p *[2]int32) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar x [2]int32\n\terr = pipe(&x)\n\tif err == nil {\n\t\tp[0] = int(x[0])\n\t\tp[1] = int(x[1])\n\t}\n\treturn\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\treturn getfsstat(_p0, bufsize, flags)\n}\n\nfunc xattrPointer(dest []byte) *byte {\n\t// It's only when dest is set to NULL that the OS X implementations of\n\t// getxattr() and listxattr() return the current sizes of the named attributes.\n\t// An empty byte array is not sufficient. To maintain the same behaviour as the\n\t// linux implementation, we wrap around the system calls and pass in NULL when\n\t// dest is empty.\n\tvar destp *byte\n\tif len(dest) > 0 {\n\t\tdestp = &dest[0]\n\t}\n\treturn destp\n}\n\n//sys\tgetxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\treturn getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0)\n}\n\nfunc Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\treturn getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW)\n}\n\n//sys\tfgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\treturn fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0)\n}\n\n//sys\tsetxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error)\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\t// The parameters for the OS X implementation vary slightly compared to the\n\t// linux system call, specifically the position parameter:\n\t//\n\t//  linux:\n\t//      int setxattr(\n\t//          const char *path,\n\t//          const char *name,\n\t//          const void *value,\n\t//          size_t size,\n\t//          int flags\n\t//      );\n\t//\n\t//  darwin:\n\t//      int setxattr(\n\t//          const char *path,\n\t//          const char *name,\n\t//          void *value,\n\t//          size_t size,\n\t//          u_int32_t position,\n\t//          int options\n\t//      );\n\t//\n\t// position specifies the offset within the extended attribute. In the\n\t// current implementation, only the resource fork extended attribute makes\n\t// use of this argument. For all others, position is reserved. We simply\n\t// default to setting it to zero.\n\treturn setxattr(path, attr, xattrPointer(data), len(data), 0, flags)\n}\n\nfunc Lsetxattr(link string, attr string, data []byte, flags int) (err error) {\n\treturn setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW)\n}\n\n//sys\tfsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error)\n\nfunc Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {\n\treturn fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0)\n}\n\n//sys\tremovexattr(path string, attr string, options int) (err error)\n\nfunc Removexattr(path string, attr string) (err error) {\n\t// We wrap around and explicitly zero out the options provided to the OS X\n\t// implementation of removexattr, we do so for interoperability with the\n\t// linux variant.\n\treturn removexattr(path, attr, 0)\n}\n\nfunc Lremovexattr(link string, attr string) (err error) {\n\treturn removexattr(link, attr, XATTR_NOFOLLOW)\n}\n\n//sys\tfremovexattr(fd int, attr string, options int) (err error)\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\treturn fremovexattr(fd, attr, 0)\n}\n\n//sys\tlistxattr(path string, dest *byte, size int, options int) (sz int, err error)\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\treturn listxattr(path, xattrPointer(dest), len(dest), 0)\n}\n\nfunc Llistxattr(link string, dest []byte) (sz int, err error) {\n\treturn listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW)\n}\n\n//sys\tflistxattr(fd int, dest *byte, size int, options int) (sz int, err error)\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\treturn flistxattr(fd, xattrPointer(dest), len(dest), 0)\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\n/*\n * Wrapped\n */\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n//sys\tkill(pid int, signum int, posix int) (err error)\n\nfunc Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) }\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\nfunc IoctlCtlInfo(fd int, ctlInfo *CtlInfo) error {\n\treturn ioctlPtr(fd, CTLIOCGINFO, unsafe.Pointer(ctlInfo))\n}\n\n// IfreqMTU is struct ifreq used to get or set a network device's MTU.\ntype IfreqMTU struct {\n\tName [IFNAMSIZ]byte\n\tMTU  int32\n}\n\n// IoctlGetIfreqMTU performs the SIOCGIFMTU ioctl operation on fd to get the MTU\n// of the network device specified by ifname.\nfunc IoctlGetIfreqMTU(fd int, ifname string) (*IfreqMTU, error) {\n\tvar ifreq IfreqMTU\n\tcopy(ifreq.Name[:], ifname)\n\terr := ioctlPtr(fd, SIOCGIFMTU, unsafe.Pointer(&ifreq))\n\treturn &ifreq, err\n}\n\n// IoctlSetIfreqMTU performs the SIOCSIFMTU ioctl operation on fd to set the MTU\n// of the network device specified by ifreq.Name.\nfunc IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error {\n\treturn ioctlPtr(fd, SIOCSIFMTU, unsafe.Pointer(ifreq))\n}\n\n//sys\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": "vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && darwin\n\npackage unix\n\nimport \"syscall\"\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64\n//sys\tgetfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tStatfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && darwin\n\npackage unix\n\nimport \"syscall\"\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic\n\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tgetfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin && go1.12\n\npackage unix\n\nimport _ \"unsafe\"\n\n// Implemented in the runtime package (runtime/sys_darwin.go)\nfunc syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only\nfunc syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscallPtr(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\n\n//go:linkname syscall_syscall syscall.syscall\n//go:linkname syscall_syscall6 syscall.syscall6\n//go:linkname syscall_syscall6X syscall.syscall6X\n//go:linkname syscall_syscall9 syscall.syscall9\n//go:linkname syscall_rawSyscall syscall.rawSyscall\n//go:linkname syscall_rawSyscall6 syscall.rawSyscall6\n//go:linkname syscall_syscallPtr syscall.syscallPtr\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_dragonfly.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// DragonFly BSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"sync\"\n\t\"unsafe\"\n)\n\n// See version list in https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/sys/param.h\nvar (\n\tosreldateOnce sync.Once\n\tosreldate     uint32\n)\n\n// First __DragonFly_version after September 2019 ABI changes\n// http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html\nconst _dragonflyABIChangeVersion = 500705\n\nfunc supportsABI(ver uint32) bool {\n\tosreldateOnce.Do(func() { osreldate, _ = SysctlUint32(\"kern.osreldate\") })\n\treturn osreldate >= ver\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\tRcf    uint16\n\tRoute  [16]uint16\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\tnamlen, ok := direntNamlen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn (16 + namlen + 1 + 7) &^ 7, true\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\n//sysnb\tpipe() (r int, w int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tr, w, err := pipe()\n\tif err == nil {\n\t\tp[0], p[1] = r, w\n\t}\n\treturn\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (r int, w int, err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\t// pipe2 on dragonfly takes an fds array as an argument, but still\n\t// returns the file descriptors.\n\tr, w, err := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0], p[1] = r, w\n\t}\n\treturn err\n}\n\n//sys\textpread(fd int, p []byte, flags int, offset int64) (n int, err error)\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\treturn extpread(fd, p, 0, offset)\n}\n\n//sys\textpwrite(fd int, p []byte, flags int, offset int64) (n int, err error)\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\treturn extpwrite(fd, p, 0, offset)\n}\n\nfunc Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error {\n\terr := sysctl(mib, old, oldlen, nil, 0)\n\tif err != nil {\n\t\t// Utsname members on Dragonfly are only 32 bytes and\n\t\t// the syscall returns ENOMEM in case the actual value\n\t\t// is longer.\n\t\tif err == ENOMEM {\n\t\t\terr = nil\n\t\t}\n\t}\n\treturn err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctlUname(mib, &uname.Sysname[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Sysname[unsafe.Sizeof(uname.Sysname)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctlUname(mib, &uname.Nodename[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Nodename[unsafe.Sizeof(uname.Nodename)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctlUname(mib, &uname.Release[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Release[unsafe.Sizeof(uname.Release)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctlUname(mib, &uname.Version[0], &n); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctlUname(mib, &uname.Machine[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Machine[unsafe.Sizeof(uname.Machine)-1] = 0\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n//sys\tGetdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(fd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\taccept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// FreeBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"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\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Stat(path string, st *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, st, 0)\n}\n\nfunc Lstat(path string, st *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\treturn Getdirentries(fd, buf, nil)\n}\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tif basep == nil || unsafe.Sizeof(*basep) == 8 {\n\t\treturn getdirentries(fd, buf, (*uint64)(unsafe.Pointer(basep)))\n\t}\n\t// The syscall needs a 64-bit base. On 32-bit machines\n\t// we can't just use the basep passed in. See #32498.\n\tvar base uint64 = uint64(*basep)\n\tn, err = getdirentries(fd, buf, &base)\n\t*basep = uintptr(base)\n\tif base>>32 != 0 {\n\t\t// We can't stuff the base back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO is allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\nfunc Mknod(path string, mode uint32, dev uint64) (err error) {\n\treturn Mknodat(AT_FDCWD, path, mode, dev)\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n//sys\tptrace(request int, pid int, addr uintptr, data int) (err error)\n//sys\tptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) = SYS_PTRACE\n\nfunc PtraceAttach(pid int) (err error) {\n\treturn ptrace(PT_ATTACH, pid, 0, 0)\n}\n\nfunc PtraceCont(pid int, signal int) (err error) {\n\treturn ptrace(PT_CONTINUE, pid, 1, signal)\n}\n\nfunc PtraceDetach(pid int) (err error) {\n\treturn ptrace(PT_DETACH, pid, 1, 0)\n}\n\nfunc PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) {\n\treturn ptracePtr(PT_GETFPREGS, pid, unsafe.Pointer(fpregsout), 0)\n}\n\nfunc PtraceGetRegs(pid int, regsout *Reg) (err error) {\n\treturn ptracePtr(PT_GETREGS, pid, unsafe.Pointer(regsout), 0)\n}\n\nfunc PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) {\n\tioDesc := PtraceIoDesc{\n\t\tOp:   int32(req),\n\t\tOffs: offs,\n\t}\n\tif countin > 0 {\n\t\t_ = out[:countin] // check bounds\n\t\tioDesc.Addr = &out[0]\n\t} else if out != nil {\n\t\tioDesc.Addr = (*byte)(unsafe.Pointer(&_zero))\n\t}\n\tioDesc.SetLen(countin)\n\n\terr = ptracePtr(PT_IO, pid, unsafe.Pointer(&ioDesc), 0)\n\treturn int(ioDesc.Len), err\n}\n\nfunc PtraceLwpEvents(pid int, enable int) (err error) {\n\treturn ptrace(PT_LWP_EVENTS, pid, 0, enable)\n}\n\nfunc PtraceLwpInfo(pid int, info *PtraceLwpInfoStruct) (err error) {\n\treturn ptracePtr(PT_LWPINFO, pid, unsafe.Pointer(info), int(unsafe.Sizeof(*info)))\n}\n\nfunc PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_READ_D, pid, addr, out, SizeofLong)\n}\n\nfunc PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_READ_I, pid, addr, out, SizeofLong)\n}\n\nfunc PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_WRITE_D, pid, addr, data, SizeofLong)\n}\n\nfunc PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_WRITE_I, pid, addr, data, SizeofLong)\n}\n\nfunc PtraceSetRegs(pid int, regs *Reg) (err error) {\n\treturn ptracePtr(PT_SETREGS, pid, unsafe.Pointer(regs), 0)\n}\n\nfunc PtraceSingleStep(pid int) (err error) {\n\treturn ptrace(PT_STEP, pid, 1, 0)\n}\n\nfunc Dup3(oldfd, newfd, flags int) error {\n\tif oldfd == newfd || flags&^O_CLOEXEC != 0 {\n\t\treturn EINVAL\n\t}\n\thow := F_DUP2FD\n\tif flags&O_CLOEXEC != 0 {\n\t\thow = F_DUP2FD_CLOEXEC\n\t}\n\t_, err := fcntl(oldfd, how, newfd)\n\treturn err\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tCapEnter() (err error)\n//sys\tcapRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET\n//sys\tcapRightsLimit(fd int, rightsp *CapRights) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tgetdirentries(fd int, buf []byte, basep *uint64) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknodat(fd int, path string, mode uint32, dev uint64) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(fdat int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\taccept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc PtraceGetFsBase(pid int, fsbase *int64) (err error) {\n\treturn ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc PtraceGetFsBase(pid int, fsbase *int64) (err error) {\n\treturn ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_hurd.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build hurd\n\npackage unix\n\n/*\n#include <stdint.h>\nint ioctl(int, unsigned long int, uintptr_t);\n*/\nimport \"C\"\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(uintptr(arg)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_hurd_386.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && hurd\n\npackage unix\n\nconst (\n\tTIOCGETA = 0x62251713\n)\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_illumos.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// illumos system calls not present on Solaris.\n\n//go:build amd64 && illumos\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc bytes2iovec(bs [][]byte) []Iovec {\n\tiovecs := make([]Iovec, len(bs))\n\tfor i, b := range bs {\n\t\tiovecs[i].SetLen(len(b))\n\t\tif len(b) > 0 {\n\t\t\tiovecs[i].Base = &b[0]\n\t\t} else {\n\t\t\tiovecs[i].Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\treturn iovecs\n}\n\n//sys\treadv(fd int, iovs []Iovec) (n int, err error)\n\nfunc Readv(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = readv(fd, iovecs)\n\treturn n, err\n}\n\n//sys\tpreadv(fd int, iovs []Iovec, off int64) (n int, err error)\n\nfunc Preadv(fd int, iovs [][]byte, off int64) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = preadv(fd, iovecs, off)\n\treturn n, err\n}\n\n//sys\twritev(fd int, iovs []Iovec) (n int, err error)\n\nfunc Writev(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = writev(fd, iovecs)\n\treturn n, err\n}\n\n//sys\tpwritev(fd int, iovs []Iovec, off int64) (n int, err error)\n\nfunc Pwritev(fd int, iovs [][]byte, off int64) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = pwritev(fd, iovecs, off)\n\treturn n, err\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = libsocket.accept4\n\nfunc Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Linux system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and\n// wrap it in our own nicer implementation.\n\npackage unix\n\nimport (\n\t\"encoding/binary\"\n\t\"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//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": "vendor/golang.org/x/sys/unix/syscall_linux_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n// 64-bit file system and 32-bit uid calls\n// (386 default is 32-bit file system and 16-bit uid).\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64\n//sys\tFchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int) = SYS_GETEGID32\n//sysnb\tGeteuid() (euid int) = SYS_GETEUID32\n//sysnb\tGetgid() (gid int) = SYS_GETGID32\n//sysnb\tGetuid() (uid int) = SYS_GETUID32\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error) = SYS_SETFSGID32\n//sys\tsetfsuid(uid int) (prev int, err error) = SYS_SETFSUID32\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n//sys\tPause() (err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n// On x86 Linux, all the socket calls go through an extra indirection,\n// I think because the 5-register system call interface can't handle\n// the 6-argument calls like sendto and recvfrom. Instead the\n// arguments to the underlying system call are the number below\n// and a pointer to an array of uintptr. We hide the pointer in the\n// socketcall assembly to avoid allocation on every system call.\n\nconst (\n\t// see linux/net.h\n\t_SOCKET      = 1\n\t_BIND        = 2\n\t_CONNECT     = 3\n\t_LISTEN      = 4\n\t_ACCEPT      = 5\n\t_GETSOCKNAME = 6\n\t_GETPEERNAME = 7\n\t_SOCKETPAIR  = 8\n\t_SEND        = 9\n\t_RECV        = 10\n\t_SENDTO      = 11\n\t_RECVFROM    = 12\n\t_SHUTDOWN    = 13\n\t_SETSOCKOPT  = 14\n\t_GETSOCKOPT  = 15\n\t_SENDMSG     = 16\n\t_RECVMSG     = 17\n\t_ACCEPT4     = 18\n\t_RECVMMSG    = 19\n\t_SENDMMSG    = 20\n)\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tfd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {\n\t_, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tfd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\tn, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\t_, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tn, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tn, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Listen(s int, n int) (err error) {\n\t_, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Shutdown(s, how int) (err error) {\n\t_, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return uint64(uint32(r.Eip)) }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Eip = int32(pc) }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_alarm.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (386 || amd64 || mips || mipsle || mips64 || mipsle || ppc64 || ppc64le || ppc || s390x || sparc64)\n\npackage unix\n\n// SYS_ALARM is not defined on arm or riscv, but is available for other GOARCH\n// values.\n\n//sys\tAlarm(seconds uint) (remaining uint, err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && linux\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\t// Use fstatat, because Android's seccomp policy blocks stat.\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\terrno := gettimeofday(tv)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\treturn nil\n}\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terrno := gettimeofday(&tv)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Rip }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && linux && gc\n\npackage unix\n\nimport \"syscall\"\n\n//go:noescape\nfunc gettimeofday(tv *Timeval) (err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_arm.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tsocketpair(domain int, typ int, flags int, fd *[2]int32) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n// 64-bit file system and 32-bit uid calls\n// (16-bit uid calls are not always supported in newer kernels)\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sysnb\tGetegid() (egid int) = SYS_GETEGID32\n//sysnb\tGeteuid() (euid int) = SYS_GETEUID32\n//sysnb\tGetgid() (gid int) = SYS_GETGID32\n//sysnb\tGetuid() (uid int) = SYS_GETUID32\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tPause() (err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsetfsgid(gid int) (prev int, err error) = SYS_SETFSGID32\n//sys\tsetfsuid(uid int) (prev int, err error) = SYS_SETFSUID32\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n\n//sys\tarmSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and arm_sync_file_range syscalls differ only in the\n\t// order of their arguments.\n\treturn armSyncFileRange(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_arm64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tgetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\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": "vendor/golang.org/x/sys/unix/syscall_linux_gc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gc\n\npackage unix\n\n// SyscallNoError may be used instead of Syscall for syscalls that don't fail.\nfunc SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)\n\n// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't\n// fail.\nfunc RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gc && 386\n\npackage unix\n\nimport \"syscall\"\n\n// Underlying system call writes to newoffset via pointer.\n// Implemented in assembly to avoid allocation.\nfunc seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)\n\nfunc socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)\nfunc rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && gc && linux\n\npackage unix\n\nimport \"syscall\"\n\n// Underlying system call writes to newoffset via pointer.\n// Implemented in assembly to avoid allocation.\nfunc seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gccgo && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n\nfunc socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {\n\tfd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)\n\treturn int(fd), err\n}\n\nfunc rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {\n\tfd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)\n\treturn int(fd), err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gccgo && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_loong64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build loong64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc timespecFromStatxTimestamp(x StatxTimestamp) Timespec {\n\treturn Timespec{\n\t\tSec:  x.Sec,\n\t\tNsec: int64(x.Nsec),\n\t}\n}\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) error {\n\tvar r Statx_t\n\t// Do it the glibc way, add AT_NO_AUTOMOUNT.\n\tif err := Statx(fd, path, AT_NO_AUTOMOUNT|flags, STATX_BASIC_STATS, &r); err != nil {\n\t\treturn err\n\t}\n\n\tstat.Dev = Mkdev(r.Dev_major, r.Dev_minor)\n\tstat.Ino = r.Ino\n\tstat.Mode = uint32(r.Mode)\n\tstat.Nlink = r.Nlink\n\tstat.Uid = r.Uid\n\tstat.Gid = r.Gid\n\tstat.Rdev = Mkdev(r.Rdev_major, r.Rdev_minor)\n\t// hope we don't get to process files so large to overflow these size\n\t// fields...\n\tstat.Size = int64(r.Size)\n\tstat.Blksize = int32(r.Blksize)\n\tstat.Blocks = int64(r.Blocks)\n\tstat.Atim = timespecFromStatxTimestamp(r.Atime)\n\tstat.Mtim = timespecFromStatxTimestamp(r.Mtime)\n\tstat.Ctim = timespecFromStatxTimestamp(r.Ctime)\n\n\treturn nil\n}\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\treturn Fstatat(fd, \"\", stat, AT_EMPTY_PATH)\n}\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\treturn\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\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": "vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips64 || mips64le)\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\ntype stat_t struct {\n\tDev        uint32\n\tPad0       [3]int32\n\tIno        uint64\n\tMode       uint32\n\tNlink      uint32\n\tUid        uint32\n\tGid        uint32\n\tRdev       uint32\n\tPad1       [3]uint32\n\tSize       int64\n\tAtime      uint32\n\tAtime_nsec uint32\n\tMtime      uint32\n\tMtime_nsec uint32\n\tCtime      uint32\n\tCtime_nsec uint32\n\tBlksize    uint32\n\tPad2       uint32\n\tBlocks     int64\n}\n\n//sys\tfstat(fd int, st *stat_t) (err error)\n//sys\tfstatat(dirfd int, path string, st *stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tlstat(path string, st *stat_t) (err error)\n//sys\tstat(path string, st *stat_t) (err error)\n\nfunc Fstat(fd int, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = fstat(fd, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Fstatat(dirfd int, path string, s *Stat_t, flags int) (err error) {\n\tst := &stat_t{}\n\terr = fstatat(dirfd, path, st, flags)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Lstat(path string, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = lstat(path, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Stat(path string, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = stat(path, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc fillStat_t(s *Stat_t, st *stat_t) {\n\ts.Dev = st.Dev\n\ts.Ino = st.Ino\n\ts.Mode = st.Mode\n\ts.Nlink = st.Nlink\n\ts.Uid = st.Uid\n\ts.Gid = st.Gid\n\ts.Rdev = st.Rdev\n\ts.Size = st.Size\n\ts.Atim = Timespec{int64(st.Atime), int64(st.Atime_nsec)}\n\ts.Mtim = Timespec{int64(st.Mtime), int64(st.Mtime_nsec)}\n\ts.Ctim = Timespec{int64(st.Ctime), int64(st.Ctime_nsec)}\n\ts.Blksize = st.Blksize\n\ts.Blocks = st.Blocks\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Epc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips || mipsle)\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n\n//sys\tPause() (err error)\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\t_, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0)\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Epc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_ppc.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && ppc\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint32 { return r.Nip }\n\nfunc (r *PtraceRegs) SetPC(pc uint32) { r.Nip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n\n//sys\tsyncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and sync_file_range2 syscalls differ only in the\n\t// order of their arguments.\n\treturn syncFileRange2(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64 || ppc64le)\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Nip }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Nip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n//sys\tsyncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and sync_file_range2 syscalls differ only in the\n\t// order of their arguments.\n\treturn syncFileRange2(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\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": "vendor/golang.org/x/sys/unix/syscall_linux_s390x.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build s390x && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Psw.Addr }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct.\n// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in <asm/unistd.h>.\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tmmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)}\n\tr0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// On s390x Linux, all the socket calls go through an extra indirection.\n// The arguments to the underlying system call (SYS_SOCKETCALL) are the\n// number below and a pointer to an array of uintptr.\nconst (\n\t// see linux/net.h\n\tnetSocket      = 1\n\tnetBind        = 2\n\tnetConnect     = 3\n\tnetListen      = 4\n\tnetAccept      = 5\n\tnetGetSockName = 6\n\tnetGetPeerName = 7\n\tnetSocketPair  = 8\n\tnetSend        = 9\n\tnetRecv        = 10\n\tnetSendTo      = 11\n\tnetRecvFrom    = 12\n\tnetShutdown    = 13\n\tnetSetSockOpt  = 14\n\tnetGetSockOpt  = 15\n\tnetSendMsg     = 16\n\tnetRecvMsg     = 17\n\tnetAccept4     = 18\n\tnetRecvMMsg    = 19\n\tnetSendMMsg    = 20\n)\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (int, error) {\n\targs := [4]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)}\n\tfd, _, err := Syscall(SYS_SOCKETCALL, netAccept4, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\n}\n\nfunc getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netGetSockName, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netGetPeerName, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) error {\n\targs := [4]uintptr{uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netSocketPair, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netBind, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netConnect, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc socket(domain int, typ int, proto int) (int, error) {\n\targs := [3]uintptr{uintptr(domain), uintptr(typ), uintptr(proto)}\n\tfd, _, err := RawSyscall(SYS_SOCKETCALL, netSocket, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\n}\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) error {\n\targs := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netGetSockOpt, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error {\n\targs := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (int, error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\targs := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netRecvFrom, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) error {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\targs := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netSendTo, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netRecvMsg, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netSendMsg, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc Listen(s int, n int) error {\n\targs := [2]uintptr{uintptr(s), uintptr(n)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netListen, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc Shutdown(s, how int) error {\n\targs := [2]uintptr{uintptr(s), uintptr(how)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netShutdown, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build sparc64 && linux\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Tpc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Tpc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// NetBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {\n\tvar olen uintptr\n\n\t// Get a list of all sysctl nodes below the given MIB by performing\n\t// a sysctl for the given MIB with CTL_QUERY appended.\n\tmib = append(mib, CTL_QUERY)\n\tqnode := Sysctlnode{Flags: SYSCTL_VERS_1}\n\tqp := (*byte)(unsafe.Pointer(&qnode))\n\tsz := unsafe.Sizeof(qnode)\n\tif err = sysctl(mib, nil, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Now that we know the size, get the actual nodes.\n\tnodes = make([]Sysctlnode, olen/sz)\n\tnp := (*byte)(unsafe.Pointer(&nodes[0]))\n\tif err = sysctl(mib, np, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn nodes, nil\n}\n\nfunc nametomib(name string) (mib []_C_int, err error) {\n\t// Split name into components.\n\tvar parts []string\n\tlast := 0\n\tfor i := 0; i < len(name); i++ {\n\t\tif name[i] == '.' {\n\t\t\tparts = append(parts, name[last:i])\n\t\t\tlast = i + 1\n\t\t}\n\t}\n\tparts = append(parts, name[last:])\n\n\t// Discover the nodes and construct the MIB OID.\n\tfor partno, part := range parts {\n\t\tnodes, err := sysctlNodes(mib)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, node := range nodes {\n\t\t\tn := make([]byte, 0)\n\t\t\tfor i := range node.Name {\n\t\t\t\tif node.Name[i] != 0 {\n\t\t\t\t\tn = append(n, byte(node.Name[i]))\n\t\t\t\t}\n\t\t\t}\n\t\t\tif string(n) == part {\n\t\t\t\tmib = append(mib, _C_int(node.Num))\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif len(mib) != partno+1 {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t}\n\n\treturn mib, nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc SysctlUvmexp(name string) (*Uvmexp, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofUvmexp)\n\tvar u Uvmexp\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &u, nil\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tn, err = Getdents(fd, buf)\n\tif err != nil || basep == nil {\n\t\treturn\n\t}\n\n\tvar off int64\n\toff, err = Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\t*basep = ^uintptr(0)\n\t\treturn\n\t}\n\t*basep = uintptr(off)\n\tif unsafe.Sizeof(*basep) == 8 {\n\t\treturn\n\t}\n\tif off>>32 != 0 {\n\t\t// We can't stuff the offset back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO is allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc IoctlGetPtmget(fd int, req uint) (*Ptmget, error) {\n\tvar value Ptmget\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\nfunc Fstatvfs(fd int, buf *Statvfs_t) (err error) {\n\treturn Fstatvfs1(fd, buf, ST_WAIT)\n}\n\nfunc Statvfs(path string, buf *Statvfs_t) (err error) {\n\treturn Statvfs1(path, buf, ST_WAIT)\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tDup3(from int, to int, flags int) (err error)\n//sys\tExit(code int)\n//sys\tExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) = SYS_FSTATVFS1\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatvfs1(path string, buf *Statvfs_t, flags int) (err error) = SYS_STATVFS1\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\nconst (\n\tmremapFixed     = MAP_FIXED\n\tmremapDontunmap = 0\n\tmremapMaymove   = 0\n)\n\n//sys\tmremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) = SYS_MREMAP\n\nfunc mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (uintptr, error) {\n\treturn mremapNetBSD(oldaddr, oldlength, newaddr, newlength, flags)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// OpenBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"sort\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc nametomib(name string) (mib []_C_int, err error) {\n\ti := sort.Search(len(sysctlMib), func(i int) bool {\n\t\treturn sysctlMib[i].ctlname >= name\n\t})\n\tif i < len(sysctlMib) && sysctlMib[i].ctlname == name {\n\t\treturn sysctlMib[i].ctloid, nil\n\t}\n\treturn nil, EINVAL\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc SysctlUvmexp(name string) (*Uvmexp, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofUvmexp)\n\tvar u Uvmexp\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofUvmexp {\n\t\treturn nil, EIO\n\t}\n\treturn &u, nil\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tn, err = Getdents(fd, buf)\n\tif err != nil || basep == nil {\n\t\treturn\n\t}\n\n\tvar off int64\n\toff, err = Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\t*basep = ^uintptr(0)\n\t\treturn\n\t}\n\t*basep = uintptr(off)\n\tif unsafe.Sizeof(*basep) == 8 {\n\t\treturn\n\t}\n\tif off>>32 != 0 {\n\t\t// We can't stuff the offset back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO was allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar bufptr *Statfs_t\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\tbufptr = &buf[0]\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\treturn getfsstat(bufptr, bufsize, flags)\n}\n\n//sysnb\tgetresuid(ruid *_C_int, euid *_C_int, suid *_C_int)\n//sysnb\tgetresgid(rgid *_C_int, egid *_C_int, sgid *_C_int)\n\nfunc Getresuid() (ruid, euid, suid int) {\n\tvar r, e, s _C_int\n\tgetresuid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\nfunc Getresgid() (rgid, egid, sgid int) {\n\tvar r, e, s _C_int\n\tgetresgid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\n//sys\tfcntl(fd int, cmd int, arg int) (n int, err error)\n//sys\tfcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) = SYS_FCNTL\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, err := fcntlPtr(int(fd), cmd, unsafe.Pointer(lk))\n\treturn err\n}\n\n//sys\tppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n\nfunc Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, timeout, sigmask)\n\t}\n\treturn ppoll(&fds[0], len(fds), timeout, sigmask)\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tDup3(from int, to int, flags int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrtable() (rtable int, err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrtable(rtable int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tgetfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n//sys\tpledge(promises *byte, execpromises *byte) (err error)\n//sys\tunveil(path *byte, flags *byte) (err error)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/386 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/arm the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build openbsd\n\npackage unix\n\nimport _ \"unsafe\"\n\n// Implemented in the runtime package (runtime/sys_openbsd3.go)\nfunc syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\n\n//go:linkname syscall_syscall syscall.syscall\n//go:linkname syscall_syscall6 syscall.syscall6\n//go:linkname syscall_syscall10 syscall.syscall10\n//go:linkname syscall_rawSyscall syscall.rawSyscall\n//go:linkname syscall_rawSyscall6 syscall.rawSyscall6\n\nfunc syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) {\n\treturn syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, 0)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of OpenBSD the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/ppc64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/riscv64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_solaris.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Solaris system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_solaris.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"runtime\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Implemented in runtime/syscall_solaris.go.\ntype syscallFunc uintptr\n\nfunc rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tFamily uint16\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [244]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sysnb\tpipe(p *[2]_C_int) (n int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\tn, err := pipe(&pp)\n\tif n != 0 {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn nil\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\n//sys\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error)\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\t// Getcwd will return an error if it failed for any reason.\n\t_, err = Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\n/*\n * Wrapped\n */\n\n//sysnb\tgetgroups(ngid int, gid *_Gid_t) (n int, err error)\n//sysnb\tsetgroups(ngid int, gid *_Gid_t) (err error)\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\t// Check for error and sanity check group count. Newer versions of\n\t// Solaris allow up to 1024 (NGROUPS_MAX).\n\tif n < 0 || n > 1024 {\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, EINVAL\n\t} else if n == 0 {\n\t\treturn nil, nil\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif n == -1 {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\t// Final argument is (basep *uintptr) and the syscall doesn't take nil.\n\t// TODO(rsc): Can we use a single global basep for all calls?\n\treturn Getdents(fd, buf, new(uintptr))\n}\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.\n\ntype WaitStatus uint32\n\nconst (\n\tmask  = 0x7F\n\tcore  = 0x80\n\tshift = 8\n\n\texited  = 0\n\tstopped = 0x7F\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif w&mask != exited {\n\t\treturn -1\n\t}\n\treturn int(w >> shift)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tsig := syscall.Signal(w & mask)\n\tif sig == stopped || sig == 0 {\n\t\treturn -1\n\t}\n\treturn sig\n}\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }\n\nfunc (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (int, error) {\n\tvar status _C_int\n\trpid, err := wait4(int32(pid), &status, options, rusage)\n\twpid := int(rpid)\n\tif wpid == -1 {\n\t\treturn wpid, err\n\t}\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn wpid, nil\n}\n\n//sys\tgethostname(buf []byte) (n int, err error)\n\nfunc Gethostname() (name string, err error) {\n\tvar buf [MaxHostNameLen]byte\n\tn, err := gethostname(buf[:])\n\tif n != 0 {\n\t\treturn \"\", err\n\t}\n\tn = clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EFAULT\n\t}\n\treturn string(buf[:n]), nil\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(fd int, path string, times *[2]Timespec, flag int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif ts == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\tvalptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)\n\tvar err error\n\tif errno != 0 {\n\t\terr = errno\n\t}\n\treturn int(valptr), err\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0)\n\tif e1 != 0 {\n\t\treturn e1\n\t}\n\treturn nil\n}\n\n//sys\tfutimesat(fildes int, path *byte, times *[2]Timeval) (err error)\n\nfunc Futimesat(dirfd int, path string, tv []Timeval) error {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tv == nil {\n\t\treturn futimesat(dirfd, pathp, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n// Solaris doesn't have an futimes function because it allows NULL to be\n// specified as the path for futimesat. However, Go doesn't like\n// NULL-style string interfaces, so this simple wrapper is provided.\nfunc Futimes(fd int, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimesat(fd, nil, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Solaris semantics for\n\t\t// abstract Unix domain sockets -- they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs -- but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = libsocket.accept\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif nfd == -1 {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Accrightslen = int32(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); n == -1 {\n\t\treturn\n\t}\n\toobn = int(msg.Accrightslen)\n\treturn\n}\n\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Accrightslen = int32(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n//sys\tacct(path *byte) (err error)\n\nfunc Acct(path string) (err error) {\n\tif len(path) == 0 {\n\t\t// Assume caller wants to disable accounting.\n\t\treturn acct(nil)\n\t}\n\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn acct(pathp)\n}\n\n//sys\t__makedev(version int, major uint, minor uint) (val uint64)\n\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn __makedev(NEWDEV, uint(major), uint(minor))\n}\n\n//sys\t__major(version int, dev uint64) (val uint)\n\nfunc Major(dev uint64) uint32 {\n\treturn uint32(__major(NEWDEV, dev))\n}\n\n//sys\t__minor(version int, dev uint64) (val uint)\n\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(__minor(NEWDEV, dev))\n}\n\n/*\n * Expose the ioctl function\n */\n\n//sys\tioctlRet(fd int, req int, arg uintptr) (ret int, err error) = libc.ioctl\n//sys\tioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) = libc.ioctl\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\t_, err = ioctlRet(fd, req, arg)\n\treturn err\n}\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\t_, err = ioctlPtrRet(fd, req, arg)\n\treturn err\n}\n\nfunc IoctlSetTermio(fd int, req int, value *Termio) error {\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\nfunc IoctlGetTermio(fd int, req int) (*Termio, error) {\n\tvar value Termio\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tCreat(path string, mode uint32) (fd int, err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatvfs(fd int, vfsstat *Statvfs_t) (err error)\n//sys\tGetdents(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgid int, err error)\n//sys\tGeteuid() (euid int)\n//sys\tGetegid() (egid int)\n//sys\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (n int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tListen(s int, backlog int) (err error) = libsocket.__xnet_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 interface{}\n}\n\n// EventPort provides a safe abstraction on top of Solaris/illumos Event Ports.\ntype EventPort struct {\n\tport  int\n\tmu    sync.Mutex\n\tfds   map[uintptr]*fileObjCookie\n\tpaths map[string]*fileObjCookie\n\t// The user cookie presents an interesting challenge from a memory management perspective.\n\t// There are two paths by which we can discover that it is no longer in use:\n\t// 1. The user calls port_dissociate before any events fire\n\t// 2. An event fires and we return it to the user\n\t// The tricky situation is if the event has fired in the kernel but\n\t// the user hasn't requested/received it yet.\n\t// If the user wants to port_dissociate before the event has been processed,\n\t// we should handle things gracefully. To do so, we need to keep an extra\n\t// reference to the cookie around until the event is processed\n\t// thus the otherwise seemingly extraneous \"cookies\" map\n\t// The key of this map is a pointer to the corresponding fCookie\n\tcookies map[*fileObjCookie]struct{}\n}\n\n// PortEvent is an abstraction of the port_event C struct.\n// Compare Source against PORT_SOURCE_FILE or PORT_SOURCE_FD\n// to see if Path or Fd was the event source. The other will be\n// uninitialized.\ntype PortEvent struct {\n\tCookie interface{}\n\tEvents int32\n\tFd     uintptr\n\tPath   string\n\tSource uint16\n\tfobj   *fileObj\n}\n\n// NewEventPort creates a new EventPort including the\n// underlying call to port_create(3c).\nfunc NewEventPort() (*EventPort, error) {\n\tport, err := port_create()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\te := &EventPort{\n\t\tport:    port,\n\t\tfds:     make(map[uintptr]*fileObjCookie),\n\t\tpaths:   make(map[string]*fileObjCookie),\n\t\tcookies: make(map[*fileObjCookie]struct{}),\n\t}\n\treturn e, nil\n}\n\n//sys\tport_create() (n int, err error)\n//sys\tport_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error)\n//sys\tport_dissociate(port int, source int, object uintptr) (n int, err error)\n//sys\tport_get(port int, pe *portEvent, timeout *Timespec) (n int, err error)\n//sys\tport_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error)\n\n// Close closes the event port.\nfunc (e *EventPort) Close() error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\terr := Close(e.port)\n\tif err != nil {\n\t\treturn err\n\t}\n\te.fds = nil\n\te.paths = nil\n\te.cookies = nil\n\treturn nil\n}\n\n// PathIsWatched checks to see if path is associated with this EventPort.\nfunc (e *EventPort) PathIsWatched(path string) bool {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, found := e.paths[path]\n\treturn found\n}\n\n// FdIsWatched checks to see if fd is associated with this EventPort.\nfunc (e *EventPort) FdIsWatched(fd uintptr) bool {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, found := e.fds[fd]\n\treturn found\n}\n\n// AssociatePath wraps port_associate(3c) for a filesystem path including\n// creating the necessary file_obj from the provided stat information.\nfunc (e *EventPort) AssociatePath(path string, stat os.FileInfo, events int, cookie interface{}) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tif _, found := e.paths[path]; found {\n\t\treturn fmt.Errorf(\"%v is already associated with this Event Port\", path)\n\t}\n\tfCookie, err := createFileObjCookie(path, stat, cookie)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = port_associate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(fCookie.fobj)), events, (*byte)(unsafe.Pointer(fCookie)))\n\tif err != nil {\n\t\treturn err\n\t}\n\te.paths[path] = fCookie\n\te.cookies[fCookie] = struct{}{}\n\treturn nil\n}\n\n// DissociatePath wraps port_dissociate(3c) for a filesystem path.\nfunc (e *EventPort) DissociatePath(path string) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tf, ok := e.paths[path]\n\tif !ok {\n\t\treturn fmt.Errorf(\"%v is not associated with this Event Port\", path)\n\t}\n\t_, err := port_dissociate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(f.fobj)))\n\t// If the path is no longer associated with this event port (ENOENT)\n\t// we should delete it from our map. We can still return ENOENT to the caller.\n\t// But we need to save the cookie\n\tif err != nil && err != ENOENT {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\t// dissociate was successful, safe to delete the cookie\n\t\tfCookie := e.paths[path]\n\t\tdelete(e.cookies, fCookie)\n\t}\n\tdelete(e.paths, path)\n\treturn err\n}\n\n// AssociateFd wraps calls to port_associate(3c) on file descriptors.\nfunc (e *EventPort) AssociateFd(fd uintptr, events int, cookie interface{}) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tif _, found := e.fds[fd]; found {\n\t\treturn fmt.Errorf(\"%v is already associated with this Event Port\", fd)\n\t}\n\tfCookie, err := createFileObjCookie(\"\", nil, cookie)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = port_associate(e.port, PORT_SOURCE_FD, fd, events, (*byte)(unsafe.Pointer(fCookie)))\n\tif err != nil {\n\t\treturn err\n\t}\n\te.fds[fd] = fCookie\n\te.cookies[fCookie] = struct{}{}\n\treturn nil\n}\n\n// DissociateFd wraps calls to port_dissociate(3c) on file descriptors.\nfunc (e *EventPort) DissociateFd(fd uintptr) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, ok := e.fds[fd]\n\tif !ok {\n\t\treturn fmt.Errorf(\"%v is not associated with this Event Port\", fd)\n\t}\n\t_, err := port_dissociate(e.port, PORT_SOURCE_FD, fd)\n\tif err != nil && err != ENOENT {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\t// dissociate was successful, safe to delete the cookie\n\t\tfCookie := e.fds[fd]\n\t\tdelete(e.cookies, fCookie)\n\t}\n\tdelete(e.fds, fd)\n\treturn err\n}\n\nfunc createFileObjCookie(name string, stat os.FileInfo, cookie interface{}) (*fileObjCookie, error) {\n\tfCookie := new(fileObjCookie)\n\tfCookie.cookie = cookie\n\tif name != \"\" && stat != nil {\n\t\tfCookie.fobj = new(fileObj)\n\t\tbs, err := ByteSliceFromString(name)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfCookie.fobj.Name = (*int8)(unsafe.Pointer(&bs[0]))\n\t\ts := stat.Sys().(*syscall.Stat_t)\n\t\tfCookie.fobj.Atim.Sec = s.Atim.Sec\n\t\tfCookie.fobj.Atim.Nsec = s.Atim.Nsec\n\t\tfCookie.fobj.Mtim.Sec = s.Mtim.Sec\n\t\tfCookie.fobj.Mtim.Nsec = s.Mtim.Nsec\n\t\tfCookie.fobj.Ctim.Sec = s.Ctim.Sec\n\t\tfCookie.fobj.Ctim.Nsec = s.Ctim.Nsec\n\t}\n\treturn fCookie, nil\n}\n\n// GetOne wraps port_get(3c) and returns a single PortEvent.\nfunc (e *EventPort) GetOne(t *Timespec) (*PortEvent, error) {\n\tpe := new(portEvent)\n\t_, err := port_get(e.port, pe, t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tp := new(PortEvent)\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\terr = e.peIntToExt(pe, p)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn p, nil\n}\n\n// peIntToExt converts a cgo portEvent struct into the friendlier PortEvent\n// NOTE: Always call this function while holding the e.mu mutex\nfunc (e *EventPort) peIntToExt(peInt *portEvent, peExt *PortEvent) error {\n\tif e.cookies == nil {\n\t\treturn fmt.Errorf(\"this EventPort is already closed\")\n\t}\n\tpeExt.Events = peInt.Events\n\tpeExt.Source = peInt.Source\n\tfCookie := (*fileObjCookie)(unsafe.Pointer(peInt.User))\n\t_, found := e.cookies[fCookie]\n\n\tif !found {\n\t\tpanic(\"unexpected event port address; may be due to kernel bug; see https://go.dev/issue/54254\")\n\t}\n\tpeExt.Cookie = fCookie.cookie\n\tdelete(e.cookies, fCookie)\n\n\tswitch peInt.Source {\n\tcase PORT_SOURCE_FD:\n\t\tpeExt.Fd = uintptr(peInt.Object)\n\t\t// Only remove the fds entry if it exists and this cookie matches\n\t\tif fobj, ok := e.fds[peExt.Fd]; ok {\n\t\t\tif fobj == fCookie {\n\t\t\t\tdelete(e.fds, peExt.Fd)\n\t\t\t}\n\t\t}\n\tcase PORT_SOURCE_FILE:\n\t\tpeExt.fobj = fCookie.fobj\n\t\tpeExt.Path = BytePtrToString((*byte)(unsafe.Pointer(peExt.fobj.Name)))\n\t\t// Only remove the paths entry if it exists and this cookie matches\n\t\tif fobj, ok := e.paths[peExt.Path]; ok {\n\t\t\tif fobj == fCookie {\n\t\t\t\tdelete(e.paths, peExt.Path)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Pending wraps port_getn(3c) and returns how many events are pending.\nfunc (e *EventPort) Pending() (int, error) {\n\tvar n uint32 = 0\n\t_, err := port_getn(e.port, nil, 0, &n, nil)\n\treturn int(n), err\n}\n\n// Get wraps port_getn(3c) and fills a slice of PortEvent.\n// It will block until either min events have been received\n// or the timeout has been exceeded. It will return how many\n// events were actually received along with any error information.\nfunc (e *EventPort) Get(s []PortEvent, min int, timeout *Timespec) (int, error) {\n\tif min == 0 {\n\t\treturn 0, fmt.Errorf(\"need to request at least one event or use Pending() instead\")\n\t}\n\tif len(s) < min {\n\t\treturn 0, fmt.Errorf(\"len(s) (%d) is less than min events requested (%d)\", len(s), min)\n\t}\n\tgot := uint32(min)\n\tmax := uint32(len(s))\n\tvar err error\n\tps := make([]portEvent, max)\n\t_, err = port_getn(e.port, &ps[0], max, &got, timeout)\n\t// got will be trustworthy with ETIME, but not any other error.\n\tif err != nil && err != ETIME {\n\t\treturn 0, err\n\t}\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tvalid := 0\n\tfor i := 0; i < int(got); i++ {\n\t\terr2 := e.peIntToExt(&ps[i], &s[i])\n\t\tif err2 != nil {\n\t\t\tif valid == 0 && err == nil {\n\t\t\t\t// If err2 is the only error and there are no valid events\n\t\t\t\t// to return, return it to the caller.\n\t\t\t\terr = err2\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tvalid = i + 1\n\t}\n\treturn valid, err\n}\n\n//sys\tputmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error)\n\nfunc Putmsg(fd int, cl []byte, data []byte, flags int) (err error) {\n\tvar clp, datap *strbuf\n\tif len(cl) > 0 {\n\t\tclp = &strbuf{\n\t\t\tLen: int32(len(cl)),\n\t\t\tBuf: (*int8)(unsafe.Pointer(&cl[0])),\n\t\t}\n\t}\n\tif len(data) > 0 {\n\t\tdatap = &strbuf{\n\t\t\tLen: int32(len(data)),\n\t\t\tBuf: (*int8)(unsafe.Pointer(&data[0])),\n\t\t}\n\t}\n\treturn putmsg(fd, clp, datap, flags)\n}\n\n//sys\tgetmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error)\n\nfunc Getmsg(fd int, cl []byte, data []byte) (retCl []byte, retData []byte, flags int, err error) {\n\tvar clp, datap *strbuf\n\tif len(cl) > 0 {\n\t\tclp = &strbuf{\n\t\t\tMaxlen: int32(len(cl)),\n\t\t\tBuf:    (*int8)(unsafe.Pointer(&cl[0])),\n\t\t}\n\t}\n\tif len(data) > 0 {\n\t\tdatap = &strbuf{\n\t\t\tMaxlen: int32(len(data)),\n\t\t\tBuf:    (*int8)(unsafe.Pointer(&data[0])),\n\t\t}\n\t}\n\n\tif err = getmsg(fd, clp, datap, &flags); err != nil {\n\t\treturn nil, nil, 0, err\n\t}\n\n\tif len(cl) > 0 {\n\t\tretCl = cl[:clp.Len]\n\t}\n\tif len(data) > 0 {\n\t\tretData = data[:datap.Len]\n\t}\n\treturn retCl, retData, flags, nil\n}\n\nfunc IoctlSetIntRetInt(fd int, req int, arg int) (int, error) {\n\treturn ioctlRet(fd, req, uintptr(arg))\n}\n\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": "vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && solaris\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_unix.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris\n\npackage unix\n\nimport (\n\t\"bytes\"\n\t\"sort\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar (\n\tStdin  = 0\n\tStdout = 1\n\tStderr = 2\n)\n\n// Do the interface allocations only once for common\n// Errno values.\nvar (\n\terrEAGAIN error = syscall.EAGAIN\n\terrEINVAL error = syscall.EINVAL\n\terrENOENT error = syscall.ENOENT\n)\n\nvar (\n\tsignalNameMapOnce sync.Once\n\tsignalNameMap     map[string]syscall.Signal\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e syscall.Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn nil\n\tcase EAGAIN:\n\t\treturn errEAGAIN\n\tcase EINVAL:\n\t\treturn errEINVAL\n\tcase ENOENT:\n\t\treturn errENOENT\n\t}\n\treturn e\n}\n\n// ErrnoName returns the error name for error number e.\nfunc ErrnoName(e syscall.Errno) string {\n\ti := sort.Search(len(errorList), func(i int) bool {\n\t\treturn errorList[i].num >= e\n\t})\n\tif i < len(errorList) && errorList[i].num == e {\n\t\treturn errorList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalName returns the signal name for signal number s.\nfunc SignalName(s syscall.Signal) string {\n\ti := sort.Search(len(signalList), func(i int) bool {\n\t\treturn signalList[i].num >= s\n\t})\n\tif i < len(signalList) && signalList[i].num == s {\n\t\treturn signalList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalNum returns the syscall.Signal for signal named s,\n// or 0 if a signal with such name is not found.\n// The signal name should start with \"SIG\".\nfunc SignalNum(s string) syscall.Signal {\n\tsignalNameMapOnce.Do(func() {\n\t\tsignalNameMap = make(map[string]syscall.Signal, len(signalList))\n\t\tfor _, signal := range signalList {\n\t\t\tsignalNameMap[signal.name] = signal.num\n\t\t}\n\t})\n\treturn signalNameMap[s]\n}\n\n// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte.\nfunc clen(n []byte) int {\n\ti := bytes.IndexByte(n, 0)\n\tif i == -1 {\n\t\ti = len(n)\n\t}\n\treturn i\n}\n\n// Mmap manager, for use by operating system-specific implementations.\n\ntype mmapper struct {\n\tsync.Mutex\n\tactive map[*byte][]byte // active mappings; key is last byte in mapping\n\tmmap   func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error)\n\tmunmap func(addr uintptr, length uintptr) error\n}\n\nfunc (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\tif length <= 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\t// Map the requested memory.\n\taddr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Use unsafe to convert addr into a []byte.\n\tb := unsafe.Slice((*byte)(unsafe.Pointer(addr)), length)\n\n\t// Register mapping in m and return it.\n\tp := &b[cap(b)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tm.active[p] = b\n\treturn b, nil\n}\n\nfunc (m *mmapper) Munmap(data []byte) (err error) {\n\tif len(data) == 0 || len(data) != cap(data) {\n\t\treturn EINVAL\n\t}\n\n\t// Find the base of the mapping.\n\tp := &data[cap(data)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tb := m.active[p]\n\tif b == nil || &b[0] != &data[0] {\n\t\treturn EINVAL\n\t}\n\n\t// Unmap the memory and update m.\n\tif errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil {\n\t\treturn errno\n\t}\n\tdelete(m.active, p)\n\treturn nil\n}\n\nfunc Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\treturn mapper.Mmap(fd, offset, length, prot, flags)\n}\n\nfunc Munmap(b []byte) (err error) {\n\treturn mapper.Munmap(b)\n}\n\nfunc 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": "vendor/golang.org/x/sys/unix/syscall_unix_gc.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || dragonfly || freebsd || (linux && !ppc64 && !ppc64le) || netbsd || openbsd || solaris) && gc\n\npackage unix\n\nimport \"syscall\"\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64le || ppc64) && gc\n\npackage unix\n\nimport \"syscall\"\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.Syscall(trap, a1, a2, a3)\n}\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6)\n}\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.RawSyscall(trap, a1, a2, a3)\n}\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\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": "vendor/golang.org/x/sys/unix/sysvshm_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux\n\npackage unix\n\nimport \"runtime\"\n\n// SysvShmCtl performs control operations on the shared memory segment\n// specified by id.\nfunc SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) {\n\tif runtime.GOARCH == \"arm\" ||\n\t\truntime.GOARCH == \"mips64\" || runtime.GOARCH == \"mips64le\" {\n\t\tcmd |= ipc_64\n\t}\n\n\treturn shmctl(id, cmd, desc)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sysvshm_unix.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin && !ios) || linux\n\npackage unix\n\nimport \"unsafe\"\n\n// SysvShmAttach attaches the Sysv shared memory segment associated with the\n// shared memory identifier id.\nfunc SysvShmAttach(id int, addr uintptr, flag int) ([]byte, error) {\n\taddr, errno := shmat(id, addr, flag)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Retrieve the size of the shared memory to enable slice creation\n\tvar info SysvShmDesc\n\n\t_, err := SysvShmCtl(id, IPC_STAT, &info)\n\tif err != nil {\n\t\t// release the shared memory if we can't find the size\n\n\t\t// ignoring error from shmdt as there's nothing sensible to return here\n\t\tshmdt(addr)\n\t\treturn nil, err\n\t}\n\n\t// Use unsafe to convert addr into a []byte.\n\tb := unsafe.Slice((*byte)(unsafe.Pointer(addr)), int(info.Segsz))\n\treturn b, nil\n}\n\n// SysvShmDetach unmaps the shared memory slice returned from SysvShmAttach.\n//\n// It is not safe to use the slice after calling this function.\nfunc SysvShmDetach(data []byte) error {\n\tif len(data) == 0 {\n\t\treturn EINVAL\n\t}\n\n\treturn shmdt(uintptr(unsafe.Pointer(&data[0])))\n}\n\n// SysvShmGet returns the Sysv shared memory identifier associated with key.\n// If the IPC_CREAT flag is specified a new segment is created.\nfunc SysvShmGet(key, size, flag int) (id int, err error) {\n\treturn shmget(key, size, flag)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/sysvshm_unix_other.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin && !ios\n\npackage unix\n\n// SysvShmCtl performs control operations on the shared memory segment\n// specified by id.\nfunc SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) {\n\treturn shmctl(id, cmd, desc)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/timestruct.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"time\"\n\n// TimespecToNsec returns the time stored in ts as nanoseconds.\nfunc TimespecToNsec(ts Timespec) int64 { return ts.Nano() }\n\n// NsecToTimespec converts a number of nanoseconds into a Timespec.\nfunc NsecToTimespec(nsec int64) Timespec {\n\tsec := nsec / 1e9\n\tnsec = nsec % 1e9\n\tif nsec < 0 {\n\t\tnsec += 1e9\n\t\tsec--\n\t}\n\treturn setTimespec(sec, nsec)\n}\n\n// TimeToTimespec converts t into a Timespec.\n// On some 32-bit systems the range of valid Timespec values are smaller\n// than that of time.Time values.  So if t is out of the valid range of\n// Timespec, it returns a zero Timespec and ERANGE.\nfunc TimeToTimespec(t time.Time) (Timespec, error) {\n\tsec := t.Unix()\n\tnsec := int64(t.Nanosecond())\n\tts := setTimespec(sec, nsec)\n\n\t// Currently all targets have either int32 or int64 for Timespec.Sec.\n\t// If there were a new target with floating point type for it, we have\n\t// to consider the rounding error.\n\tif int64(ts.Sec) != sec {\n\t\treturn Timespec{}, ERANGE\n\t}\n\treturn ts, nil\n}\n\n// TimevalToNsec returns the time stored in tv as nanoseconds.\nfunc TimevalToNsec(tv Timeval) int64 { return tv.Nano() }\n\n// NsecToTimeval converts a number of nanoseconds into a Timeval.\nfunc NsecToTimeval(nsec int64) Timeval {\n\tnsec += 999 // round up to microsecond\n\tusec := nsec % 1e9 / 1e3\n\tsec := nsec / 1e9\n\tif usec < 0 {\n\t\tusec += 1e6\n\t\tsec--\n\t}\n\treturn setTimeval(sec, usec)\n}\n\n// Unix returns the time stored in ts as seconds plus nanoseconds.\nfunc (ts *Timespec) Unix() (sec int64, nsec int64) {\n\treturn int64(ts.Sec), int64(ts.Nsec)\n}\n\n// Unix returns the time stored in tv as seconds plus nanoseconds.\nfunc (tv *Timeval) Unix() (sec int64, nsec int64) {\n\treturn int64(tv.Sec), int64(tv.Usec) * 1000\n}\n\n// Nano returns the time stored in ts as nanoseconds.\nfunc (ts *Timespec) Nano() int64 {\n\treturn int64(ts.Sec)*1e9 + int64(ts.Nsec)\n}\n\n// Nano returns the time stored in tv as nanoseconds.\nfunc (tv *Timeval) Nano() int64 {\n\treturn int64(tv.Sec)*1e9 + int64(tv.Usec)*1000\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/unveil_openbsd.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"fmt\"\n\n// Unveil implements the unveil syscall.\n// For more information see unveil(2).\n// Note that the special case of blocking further\n// unveil calls is handled by UnveilBlock.\nfunc Unveil(path string, flags string) error {\n\tif err := supportsUnveil(); err != nil {\n\t\treturn err\n\t}\n\tpathPtr, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tflagsPtr, err := BytePtrFromString(flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn unveil(pathPtr, flagsPtr)\n}\n\n// UnveilBlock blocks future unveil calls.\n// For more information see unveil(2).\nfunc UnveilBlock() error {\n\tif err := supportsUnveil(); err != nil {\n\t\treturn err\n\t}\n\treturn unveil(nil, nil)\n}\n\n// supportsUnveil checks for availability of the unveil(2) system call based\n// on the running OpenBSD version.\nfunc supportsUnveil() error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// unveil is not available before 6.4\n\tif maj < 6 || (maj == 6 && min <= 3) {\n\t\treturn fmt.Errorf(\"cannot call Unveil on OpenBSD %d.%d\", maj, min)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/xattr_bsd.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build freebsd || netbsd\n\npackage unix\n\nimport (\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// Derive extattr namespace and attribute name\n\nfunc xattrnamespace(fullattr string) (ns int, attr string, err error) {\n\ts := strings.IndexByte(fullattr, '.')\n\tif s == -1 {\n\t\treturn -1, \"\", ENOATTR\n\t}\n\n\tnamespace := fullattr[0:s]\n\tattr = fullattr[s+1:]\n\n\tswitch namespace {\n\tcase \"user\":\n\t\treturn EXTATTR_NAMESPACE_USER, attr, nil\n\tcase \"system\":\n\t\treturn EXTATTR_NAMESPACE_SYSTEM, attr, nil\n\tdefault:\n\t\treturn -1, \"\", ENOATTR\n\t}\n}\n\nfunc initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {\n\tif len(dest) > idx {\n\t\treturn unsafe.Pointer(&dest[idx])\n\t}\n\tif dest != nil {\n\t\t// extattr_get_file and extattr_list_file treat NULL differently from\n\t\t// a non-NULL pointer of length zero. Preserve the property of nilness,\n\t\t// even if we can't use dest directly.\n\t\treturn unsafe.Pointer(&_zero)\n\t}\n\treturn nil\n}\n\n// FreeBSD and NetBSD implement their own syscalls to handle extended attributes\n\nfunc Getxattr(file string, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetFile(file, nsid, a, uintptr(d), destsize)\n}\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetFd(fd, nsid, a, uintptr(d), destsize)\n}\n\nfunc Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetLink(link, nsid, a, uintptr(d), destsize)\n}\n\n// flags are unused on FreeBSD\n\nfunc Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Setxattr(file string, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Lsetxattr(link string, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Removexattr(file string, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteFile(file, nsid, a)\n\treturn\n}\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteFd(fd, nsid, a)\n\treturn\n}\n\nfunc Lremovexattr(link string, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteLink(link, nsid, a)\n\treturn\n}\n\nfunc Listxattr(file string, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\t// FreeBSD won't allow you to list xattrs from multiple namespaces\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := ListxattrNS(file, nsid, dest[pos:])\n\n\t\t/* Errors accessing system attrs are ignored so that\n\t\t * we can implement the Linux-like behavior of omitting errors that\n\t\t * we don't have read permissions on\n\t\t *\n\t\t * Linux will still error if we ask for user attributes on a file that\n\t\t * we don't have read permissions on, so don't ignore those errors\n\t\t */\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc ListxattrNS(file string, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := FlistxattrNS(fd, nsid, dest[pos:])\n\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc FlistxattrNS(fd int, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n\nfunc Llistxattr(link string, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := LlistxattrNS(link, nsid, dest[pos:])\n\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc LlistxattrNS(link string, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go",
    "content": "// mkerrors.sh -maix32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && aix\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -maix32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                  = 0x10\n\tAF_BYPASS                     = 0x19\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x18\n\tAF_INTF                       = 0x14\n\tAF_ISO                        = 0x7\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x12\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x1e\n\tAF_NDD                        = 0x17\n\tAF_NETWARE                    = 0x16\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x7\n\tAF_PUP                        = 0x4\n\tAF_RIF                        = 0x15\n\tAF_ROUTE                      = 0x11\n\tAF_SNA                        = 0xb\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tALTWERASE                     = 0x400000\n\tARPHRD_802_3                  = 0x6\n\tARPHRD_802_5                  = 0x6\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FDDI                   = 0x1\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB38400                        = 0xf\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB9600                         = 0xd\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x1000\n\tBSDLY                         = 0x1000\n\tCAP_AACCT                     = 0x6\n\tCAP_ARM_APPLICATION           = 0x5\n\tCAP_BYPASS_RAC_VMM            = 0x3\n\tCAP_CLEAR                     = 0x0\n\tCAP_CREDENTIALS               = 0x7\n\tCAP_EFFECTIVE                 = 0x1\n\tCAP_EWLM_AGENT                = 0x4\n\tCAP_INHERITABLE               = 0x2\n\tCAP_MAXIMUM                   = 0x7\n\tCAP_NUMA_ATTACH               = 0x2\n\tCAP_PERMITTED                 = 0x3\n\tCAP_PROPAGATE                 = 0x1\n\tCAP_PROPOGATE                 = 0x1\n\tCAP_SET                       = 0x1\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_MONOTONIC               = 0xa\n\tCLOCK_PROCESS_CPUTIME_ID      = 0xb\n\tCLOCK_REALTIME                = 0x9\n\tCLOCK_THREAD_CPUTIME_ID       = 0xc\n\tCR0                           = 0x0\n\tCR1                           = 0x100\n\tCR2                           = 0x200\n\tCR3                           = 0x300\n\tCRDLY                         = 0x300\n\tCREAD                         = 0x80\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIOCGIFCONF                  = -0x3ff796dc\n\tCSIZE                         = 0x30\n\tCSMAP_DIR                     = \"/usr/lib/nls/csmap/\"\n\tCSTART                        = '\\021'\n\tCSTOP                         = '\\023'\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x20000\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x80000\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x40000\n\tECH_ICMPID                    = 0x2\n\tETHERNET_CSMACD               = 0x6\n\tEVENP                         = 0x80\n\tEXCONTINUE                    = 0x0\n\tEXDLOK                        = 0x3\n\tEXIO                          = 0x2\n\tEXPGIO                        = 0x0\n\tEXRESUME                      = 0x2\n\tEXRETURN                      = 0x1\n\tEXSIG                         = 0x4\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tEXTRAP                        = 0x1\n\tEYEC_RTENTRYA                 = 0x257274656e747241\n\tEYEC_RTENTRYF                 = 0x257274656e747246\n\tE_ACC                         = 0x0\n\tFD_CLOEXEC                    = 0x1\n\tFD_SETSIZE                    = 0xfffe\n\tFF0                           = 0x0\n\tFF1                           = 0x2000\n\tFFDLY                         = 0x2000\n\tFLUSHBAND                     = 0x40\n\tFLUSHLOW                      = 0x8\n\tFLUSHO                        = 0x100000\n\tFLUSHR                        = 0x1\n\tFLUSHRW                       = 0x3\n\tFLUSHW                        = 0x2\n\tF_CLOSEM                      = 0xa\n\tF_DUP2FD                      = 0xe\n\tF_DUPFD                       = 0x0\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0x5\n\tF_GETLK64                     = 0xb\n\tF_GETOWN                      = 0x8\n\tF_LOCK                        = 0x1\n\tF_OK                          = 0x0\n\tF_RDLCK                       = 0x1\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0x6\n\tF_SETLK64                     = 0xc\n\tF_SETLKW                      = 0x7\n\tF_SETLKW64                    = 0xd\n\tF_SETOWN                      = 0x9\n\tF_TEST                        = 0x3\n\tF_TLOCK                       = 0x2\n\tF_TSTLK                       = 0xf\n\tF_ULOCK                       = 0x0\n\tF_UNLCK                       = 0x3\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x26\n\tICMP6_SEC_SEND_DEL            = 0x46\n\tICMP6_SEC_SEND_GET            = 0x47\n\tICMP6_SEC_SEND_SET            = 0x44\n\tICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x200000\n\tIFA_FIRSTALIAS                = 0x2000\n\tIFA_ROUTE                     = 0x1\n\tIFF_64BIT                     = 0x4000000\n\tIFF_ALLCAST                   = 0x20000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_BPF                       = 0x8000000\n\tIFF_BRIDGE                    = 0x40000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x80c52\n\tIFF_CHECKSUM_OFFLOAD          = 0x10000000\n\tIFF_D1                        = 0x8000\n\tIFF_D2                        = 0x4000\n\tIFF_D3                        = 0x2000\n\tIFF_D4                        = 0x1000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEVHEALTH                 = 0x4000\n\tIFF_DO_HW_LOOPBACK            = 0x10000\n\tIFF_GROUP_ROUTING             = 0x2000000\n\tIFF_IFBUFMGT                  = 0x800000\n\tIFF_LINK0                     = 0x100000\n\tIFF_LINK1                     = 0x200000\n\tIFF_LINK2                     = 0x400000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x80000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOECHO                    = 0x800\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_OACTIVE                   = 0x400\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PROMISC                   = 0x100\n\tIFF_PSEG                      = 0x40000000\n\tIFF_RUNNING                   = 0x40\n\tIFF_SIMPLEX                   = 0x800\n\tIFF_SNAP                      = 0x8000\n\tIFF_TCP_DISABLE_CKSUM         = 0x20000000\n\tIFF_TCP_NOCKSUM               = 0x1000000\n\tIFF_UP                        = 0x1\n\tIFF_VIPA                      = 0x80000000\n\tIFNAMSIZ                      = 0x10\n\tIFO_FLUSH                     = 0x1\n\tIFT_1822                      = 0x2\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_CLUSTER                   = 0x3e\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FCS                       = 0x3a\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_GIFTUNNEL                 = 0x3c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HF                        = 0x3d\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SN                        = 0x38\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_SP                        = 0x39\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_TUNNEL                    = 0x3b\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_VIPA                      = 0x37\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x10000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_USE                        = 0x1\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_BIP                   = 0x53\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_GIF                   = 0x8c\n\tIPPROTO_GRE                   = 0x2f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPIP                  = 0x4\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_LOCAL                 = 0x3f\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_MH                    = 0x87\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_QOS                   = 0x2d\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_TP                    = 0x1d\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADDRFORM                 = 0x16\n\tIPV6_ADDR_PREFERENCES         = 0x4a\n\tIPV6_ADD_MEMBERSHIP           = 0xc\n\tIPV6_AIXRAWSOCKET             = 0x39\n\tIPV6_CHECKSUM                 = 0x27\n\tIPV6_DONTFRAG                 = 0x2d\n\tIPV6_DROP_MEMBERSHIP          = 0xd\n\tIPV6_DSTOPTS                  = 0x36\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffffff\n\tIPV6_FLOWINFO_PRIFLOW         = 0xfffffff\n\tIPV6_FLOWINFO_PRIORITY        = 0xf000000\n\tIPV6_FLOWINFO_SRFLAG          = 0x10000000\n\tIPV6_FLOWINFO_VERSION         = 0xf0000000\n\tIPV6_HOPLIMIT                 = 0x28\n\tIPV6_HOPOPTS                  = 0x34\n\tIPV6_JOIN_GROUP               = 0xc\n\tIPV6_LEAVE_GROUP              = 0xd\n\tIPV6_MIPDSTOPTS               = 0x36\n\tIPV6_MULTICAST_HOPS           = 0xa\n\tIPV6_MULTICAST_IF             = 0x9\n\tIPV6_MULTICAST_LOOP           = 0xb\n\tIPV6_NEXTHOP                  = 0x30\n\tIPV6_NOPROBE                  = 0x1c\n\tIPV6_PATHMTU                  = 0x2e\n\tIPV6_PKTINFO                  = 0x21\n\tIPV6_PKTOPTIONS               = 0x24\n\tIPV6_PRIORITY_10              = 0xa000000\n\tIPV6_PRIORITY_11              = 0xb000000\n\tIPV6_PRIORITY_12              = 0xc000000\n\tIPV6_PRIORITY_13              = 0xd000000\n\tIPV6_PRIORITY_14              = 0xe000000\n\tIPV6_PRIORITY_15              = 0xf000000\n\tIPV6_PRIORITY_8               = 0x8000000\n\tIPV6_PRIORITY_9               = 0x9000000\n\tIPV6_PRIORITY_BULK            = 0x4000000\n\tIPV6_PRIORITY_CONTROL         = 0x7000000\n\tIPV6_PRIORITY_FILLER          = 0x1000000\n\tIPV6_PRIORITY_INTERACTIVE     = 0x6000000\n\tIPV6_PRIORITY_RESERVED1       = 0x3000000\n\tIPV6_PRIORITY_RESERVED2       = 0x5000000\n\tIPV6_PRIORITY_UNATTENDED      = 0x2000000\n\tIPV6_PRIORITY_UNCHARACTERIZED = 0x0\n\tIPV6_RECVDSTOPTS              = 0x38\n\tIPV6_RECVHOPLIMIT             = 0x29\n\tIPV6_RECVHOPOPTS              = 0x35\n\tIPV6_RECVHOPS                 = 0x22\n\tIPV6_RECVIF                   = 0x1e\n\tIPV6_RECVPATHMTU              = 0x2f\n\tIPV6_RECVPKTINFO              = 0x23\n\tIPV6_RECVRTHDR                = 0x33\n\tIPV6_RECVSRCRT                = 0x1d\n\tIPV6_RECVTCLASS               = 0x2a\n\tIPV6_RTHDR                    = 0x32\n\tIPV6_RTHDRDSTOPTS             = 0x37\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_RTHDR_TYPE_2             = 0x2\n\tIPV6_SENDIF                   = 0x1f\n\tIPV6_SRFLAG_LOOSE             = 0x0\n\tIPV6_SRFLAG_STRICT            = 0x10000000\n\tIPV6_TCLASS                   = 0x2b\n\tIPV6_TOKEN_LENGTH             = 0x40\n\tIPV6_UNICAST_HOPS             = 0x4\n\tIPV6_USE_MIN_MTU              = 0x2c\n\tIPV6_V6ONLY                   = 0x25\n\tIPV6_VERSION                  = 0x60000000\n\tIP_ADDRFORM                   = 0x16\n\tIP_ADD_MEMBERSHIP             = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x3c\n\tIP_BLOCK_SOURCE               = 0x3a\n\tIP_BROADCAST_IF               = 0x10\n\tIP_CACHE_LINE_SIZE            = 0x80\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPMODE                   = 0x11\n\tIP_DONTFRAG                   = 0x19\n\tIP_DROP_MEMBERSHIP            = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x3d\n\tIP_FINDPMTU                   = 0x1a\n\tIP_HDRINCL                    = 0x2\n\tIP_INC_MEMBERSHIPS            = 0x14\n\tIP_INIT_MEMBERSHIP            = 0x14\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_HOPS             = 0xa\n\tIP_MULTICAST_IF               = 0x9\n\tIP_MULTICAST_LOOP             = 0xb\n\tIP_MULTICAST_TTL              = 0xa\n\tIP_OPT                        = 0x1b\n\tIP_OPTIONS                    = 0x1\n\tIP_PMTUAGE                    = 0x1b\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x14\n\tIP_RECVIFINFO                 = 0xf\n\tIP_RECVINTERFACE              = 0x20\n\tIP_RECVMACHDR                 = 0xe\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVTTL                    = 0x22\n\tIP_RETOPTS                    = 0x8\n\tIP_SOURCE_FILTER              = 0x48\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x3b\n\tIP_UNICAST_HOPS               = 0x4\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x800\n\tIXANY                         = 0x1000\n\tIXOFF                         = 0x400\n\tIXON                          = 0x200\n\tI_FLUSH                       = 0x20005305\n\tLNOFLSH                       = 0x8000\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_NORMAL                   = 0x0\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_SPACEAVAIL               = 0x5\n\tMADV_WILLNEED                 = 0x3\n\tMAP_ANON                      = 0x10\n\tMAP_ANONYMOUS                 = 0x10\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x100\n\tMAP_PRIVATE                   = 0x2\n\tMAP_SHARED                    = 0x1\n\tMAP_TYPE                      = 0xf0\n\tMAP_VARIABLE                  = 0x0\n\tMCAST_BLOCK_SOURCE            = 0x40\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x3e\n\tMCAST_JOIN_SOURCE_GROUP       = 0x42\n\tMCAST_LEAVE_GROUP             = 0x3f\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x43\n\tMCAST_SOURCE_FILTER           = 0x49\n\tMCAST_UNBLOCK_SOURCE          = 0x41\n\tMCL_CURRENT                   = 0x100\n\tMCL_FUTURE                    = 0x200\n\tMSG_ANY                       = 0x4\n\tMSG_ARGEXT                    = 0x400\n\tMSG_BAND                      = 0x2\n\tMSG_COMPAT                    = 0x8000\n\tMSG_CTRUNC                    = 0x20\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_EOR                       = 0x8\n\tMSG_HIPRI                     = 0x1\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_MPEG2                     = 0x80\n\tMSG_NONBLOCK                  = 0x4000\n\tMSG_NOSIGNAL                  = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x10\n\tMSG_WAITALL                   = 0x40\n\tMSG_WAITFORONE                = 0x200\n\tMS_ASYNC                      = 0x10\n\tMS_EINTR                      = 0x80\n\tMS_INVALIDATE                 = 0x40\n\tMS_PER_SEC                    = 0x3e8\n\tMS_SYNC                       = 0x20\n\tNFDBITS                       = 0x20\n\tNL0                           = 0x0\n\tNL1                           = 0x4000\n\tNL2                           = 0x8000\n\tNL3                           = 0xc000\n\tNLDLY                         = 0x4000\n\tNOFLSH                        = 0x80\n\tNOFLUSH                       = 0x80000000\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tONOEOT                        = 0x80000\n\tOPOST                         = 0x1\n\tOXTABS                        = 0x40000\n\tO_ACCMODE                     = 0x23\n\tO_APPEND                      = 0x8\n\tO_CIO                         = 0x80\n\tO_CIOR                        = 0x800000000\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DEFER                       = 0x2000\n\tO_DELAY                       = 0x4000\n\tO_DIRECT                      = 0x8000000\n\tO_DIRECTORY                   = 0x80000\n\tO_DSYNC                       = 0x400000\n\tO_EFSOFF                      = 0x400000000\n\tO_EFSON                       = 0x200000000\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x20\n\tO_LARGEFILE                   = 0x4000000\n\tO_NDELAY                      = 0x8000\n\tO_NOCACHE                     = 0x100000\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x1000000\n\tO_NONBLOCK                    = 0x4\n\tO_NONE                        = 0x3\n\tO_NSHARE                      = 0x10000\n\tO_RAW                         = 0x100000000\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSHARE                      = 0x1000\n\tO_RSYNC                       = 0x200000\n\tO_SEARCH                      = 0x20\n\tO_SNAPSHOT                    = 0x40\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_TTY_INIT                    = 0x0\n\tO_WRONLY                      = 0x1\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x20000000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tPR_64BIT                      = 0x20\n\tPR_ADDR                       = 0x2\n\tPR_ARGEXT                     = 0x400\n\tPR_ATOMIC                     = 0x1\n\tPR_CONNREQUIRED               = 0x4\n\tPR_FASTHZ                     = 0x5\n\tPR_INP                        = 0x40\n\tPR_INTRLEVEL                  = 0x8000\n\tPR_MLS                        = 0x100\n\tPR_MLS_1_LABEL                = 0x200\n\tPR_NOEOR                      = 0x4000\n\tPR_RIGHTS                     = 0x10\n\tPR_SLOWHZ                     = 0x2\n\tPR_WANTRCVD                   = 0x8\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x7\n\tRLIMIT_NPROC                  = 0x9\n\tRLIMIT_RSS                    = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0x7fffffff\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x8\n\tRTAX_NETMASK                  = 0x2\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DOWNSTREAM                = 0x100\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTC_IA64                      = 0x3\n\tRTC_POWER                     = 0x1\n\tRTC_POWER_PC                  = 0x2\n\tRTF_ACTIVE_DGD                = 0x1000000\n\tRTF_BCE                       = 0x80000\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_BROADCAST                 = 0x400000\n\tRTF_BUL                       = 0x2000\n\tRTF_CLONE                     = 0x10000\n\tRTF_CLONED                    = 0x20000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_FREE_IN_PROG              = 0x4000000\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_LLINFO                    = 0x400\n\tRTF_LOCAL                     = 0x200000\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTICAST                 = 0x800000\n\tRTF_PERMANENT6                = 0x8000000\n\tRTF_PINNED                    = 0x100000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_PROTO3                    = 0x40000\n\tRTF_REJECT                    = 0x8\n\tRTF_SMALLMTU                  = 0x40000\n\tRTF_STATIC                    = 0x800\n\tRTF_STOPSRCH                  = 0x2000000\n\tRTF_UNREACHABLE               = 0x10000000\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_EXPIRE                    = 0xf\n\tRTM_GET                       = 0x4\n\tRTM_GETNEXT                   = 0x11\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_RTLOST                    = 0x10\n\tRTM_RTTUNIT                   = 0xf4240\n\tRTM_SAMEADDR                  = 0x12\n\tRTM_SET                       = 0x13\n\tRTM_VERSION                   = 0x2\n\tRTM_VERSION_GR                = 0x4\n\tRTM_VERSION_GR_COMPAT         = 0x3\n\tRTM_VERSION_POLICY            = 0x5\n\tRTM_VERSION_POLICY_EXT        = 0x6\n\tRTM_VERSION_POLICY_PRFN       = 0x7\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tRUSAGE_THREAD                 = 0x1\n\tSCM_RIGHTS                    = 0x1\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIGMAX64                      = 0xff\n\tSIGQUEUE_MAX                  = 0x20\n\tSIOCADDIFVIPA                 = 0x20006942\n\tSIOCADDMTU                    = -0x7ffb9690\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDNETID                  = -0x7fd796a9\n\tSIOCADDRT                     = -0x7fcf8df6\n\tSIOCAIFADDR                   = -0x7fbf96e6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fb396e0\n\tSIOCDELIFVIPA                 = 0x20006943\n\tSIOCDELMTU                    = -0x7ffb968f\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELPMTU                   = -0x7fd78ff6\n\tSIOCDELRT                     = -0x7fcf8df5\n\tSIOCDIFADDR                   = -0x7fd796e7\n\tSIOCDNETOPT                   = -0x3ffe9680\n\tSIOCDX25XLATE                 = -0x7fd7969b\n\tSIOCFIFADDR                   = -0x7fdf966d\n\tSIOCGARP                      = -0x3fb396da\n\tSIOCGETMTUS                   = 0x2000696f\n\tSIOCGETSGCNT                  = -0x3feb8acc\n\tSIOCGETVIFCNT                 = -0x3feb8acd\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fd796df\n\tSIOCGIFADDRS                  = 0x2000698c\n\tSIOCGIFBAUDRATE               = -0x3fdf9669\n\tSIOCGIFBRDADDR                = -0x3fd796dd\n\tSIOCGIFCONF                   = -0x3ff796bb\n\tSIOCGIFCONFGLOB               = -0x3ff79670\n\tSIOCGIFDSTADDR                = -0x3fd796de\n\tSIOCGIFFLAGS                  = -0x3fd796ef\n\tSIOCGIFGIDLIST                = 0x20006968\n\tSIOCGIFHWADDR                 = -0x3fab966b\n\tSIOCGIFMETRIC                 = -0x3fd796e9\n\tSIOCGIFMTU                    = -0x3fd796aa\n\tSIOCGIFNETMASK                = -0x3fd796db\n\tSIOCGIFOPTIONS                = -0x3fd796d6\n\tSIOCGISNO                     = -0x3fd79695\n\tSIOCGLOADF                    = -0x3ffb967e\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGNETOPT                   = -0x3ffe96a5\n\tSIOCGNETOPT1                  = -0x3fdf967f\n\tSIOCGNMTUS                    = 0x2000696e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSIZIFCONF                = 0x4004696a\n\tSIOCGSRCFILTER                = -0x3fe796cb\n\tSIOCGTUNEPHASE                = -0x3ffb9676\n\tSIOCGX25XLATE                 = -0x3fd7969c\n\tSIOCIFATTACH                  = -0x7fdf9699\n\tSIOCIFDETACH                  = -0x7fdf969a\n\tSIOCIFGETPKEY                 = -0x7fdf969b\n\tSIOCIF_ATM_DARP               = -0x7fdf9683\n\tSIOCIF_ATM_DUMPARP            = -0x7fdf9685\n\tSIOCIF_ATM_GARP               = -0x7fdf9682\n\tSIOCIF_ATM_IDLE               = -0x7fdf9686\n\tSIOCIF_ATM_SARP               = -0x7fdf9681\n\tSIOCIF_ATM_SNMPARP            = -0x7fdf9687\n\tSIOCIF_ATM_SVC                = -0x7fdf9684\n\tSIOCIF_ATM_UBR                = -0x7fdf9688\n\tSIOCIF_DEVHEALTH              = -0x7ffb966c\n\tSIOCIF_IB_ARP_INCOMP          = -0x7fdf9677\n\tSIOCIF_IB_ARP_TIMER           = -0x7fdf9678\n\tSIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f\n\tSIOCIF_IB_DEL_ARP             = -0x7fdf967f\n\tSIOCIF_IB_DEL_PINFO           = -0x3fdf9670\n\tSIOCIF_IB_DUMP_ARP            = -0x7fdf9680\n\tSIOCIF_IB_GET_ARP             = -0x7fdf967e\n\tSIOCIF_IB_GET_INFO            = -0x3f879675\n\tSIOCIF_IB_GET_STATS           = -0x3f879672\n\tSIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a\n\tSIOCIF_IB_RESET_STATS         = -0x3f879671\n\tSIOCIF_IB_RESIZE_CQ           = -0x7fdf9679\n\tSIOCIF_IB_SET_ARP             = -0x7fdf967d\n\tSIOCIF_IB_SET_PKEY            = -0x7fdf967c\n\tSIOCIF_IB_SET_PORT            = -0x7fdf967b\n\tSIOCIF_IB_SET_QKEY            = -0x7fdf9676\n\tSIOCIF_IB_SET_QSIZE           = -0x7fdf967a\n\tSIOCLISTIFVIPA                = 0x20006944\n\tSIOCSARP                      = -0x7fb396e2\n\tSIOCSHIWAT                    = 0x80047300\n\tSIOCSIFADDR                   = -0x7fd796f4\n\tSIOCSIFADDRORI                = -0x7fdb9673\n\tSIOCSIFBRDADDR                = -0x7fd796ed\n\tSIOCSIFDSTADDR                = -0x7fd796f2\n\tSIOCSIFFLAGS                  = -0x7fd796f0\n\tSIOCSIFGIDLIST                = 0x20006969\n\tSIOCSIFMETRIC                 = -0x7fd796e8\n\tSIOCSIFMTU                    = -0x7fd796a8\n\tSIOCSIFNETDUMP                = -0x7fd796e4\n\tSIOCSIFNETMASK                = -0x7fd796ea\n\tSIOCSIFOPTIONS                = -0x7fd796d7\n\tSIOCSIFSUBCHAN                = -0x7fd796e5\n\tSIOCSISNO                     = -0x7fd79694\n\tSIOCSLOADF                    = -0x3ffb967d\n\tSIOCSLOWAT                    = 0x80047302\n\tSIOCSNETOPT                   = -0x7ffe96a6\n\tSIOCSPGRP                     = 0x80047308\n\tSIOCSX25XLATE                 = -0x7fd7969d\n\tSOCK_CONN_DGRAM               = 0x6\n\tSOCK_DGRAM                    = 0x2\n\tSOCK_RAW                      = 0x3\n\tSOCK_RDM                      = 0x4\n\tSOCK_SEQPACKET                = 0x5\n\tSOCK_STREAM                   = 0x1\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x400\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_AUDIT                      = 0x8000\n\tSO_BROADCAST                  = 0x20\n\tSO_CKSUMRECV                  = 0x800\n\tSO_DEBUG                      = 0x1\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROR                      = 0x1007\n\tSO_KEEPALIVE                  = 0x8\n\tSO_KERNACCEPT                 = 0x2000\n\tSO_LINGER                     = 0x80\n\tSO_NOMULTIPATH                = 0x4000\n\tSO_NOREUSEADDR                = 0x1000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PEERID                     = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_REUSEADDR                  = 0x4\n\tSO_REUSEPORT                  = 0x200\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_TIMESTAMPNS                = 0x100a\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_USE_IFBUFS                 = 0x400\n\tS_BANDURG                     = 0x400\n\tS_EMODFMT                     = 0x3c000000\n\tS_ENFMT                       = 0x400\n\tS_ERROR                       = 0x100\n\tS_HANGUP                      = 0x200\n\tS_HIPRI                       = 0x2\n\tS_ICRYPTO                     = 0x80000\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFIFO                       = 0x1000\n\tS_IFJOURNAL                   = 0x10000\n\tS_IFLNK                       = 0xa000\n\tS_IFMPX                       = 0x2200\n\tS_IFMT                        = 0xf000\n\tS_IFPDIR                      = 0x4000000\n\tS_IFPSDIR                     = 0x8000000\n\tS_IFPSSDIR                    = 0xc000000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_IFSYSEA                     = 0x30000000\n\tS_INPUT                       = 0x1\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_ITCB                        = 0x1000000\n\tS_ITP                         = 0x800000\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXACL                       = 0x2000000\n\tS_IXATTR                      = 0x40000\n\tS_IXGRP                       = 0x8\n\tS_IXINTERFACE                 = 0x100000\n\tS_IXMOD                       = 0x40000000\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tS_MSG                         = 0x8\n\tS_OUTPUT                      = 0x4\n\tS_RDBAND                      = 0x20\n\tS_RDNORM                      = 0x10\n\tS_RESERVED1                   = 0x20000\n\tS_RESERVED2                   = 0x200000\n\tS_RESERVED3                   = 0x400000\n\tS_RESERVED4                   = 0x80000000\n\tS_RESFMT1                     = 0x10000000\n\tS_RESFMT10                    = 0x34000000\n\tS_RESFMT11                    = 0x38000000\n\tS_RESFMT12                    = 0x3c000000\n\tS_RESFMT2                     = 0x14000000\n\tS_RESFMT3                     = 0x18000000\n\tS_RESFMT4                     = 0x1c000000\n\tS_RESFMT5                     = 0x20000000\n\tS_RESFMT6                     = 0x24000000\n\tS_RESFMT7                     = 0x28000000\n\tS_RESFMT8                     = 0x2c000000\n\tS_WRBAND                      = 0x80\n\tS_WRNORM                      = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x400\n\tTAB2                          = 0x800\n\tTAB3                          = 0xc00\n\tTABDLY                        = 0xc00\n\tTCFLSH                        = 0x540c\n\tTCGETA                        = 0x5405\n\tTCGETS                        = 0x5401\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800\n\tTCP_ACLADD                    = 0x23\n\tTCP_ACLBIND                   = 0x26\n\tTCP_ACLCLEAR                  = 0x22\n\tTCP_ACLDEL                    = 0x24\n\tTCP_ACLDENY                   = 0x8\n\tTCP_ACLFLUSH                  = 0x21\n\tTCP_ACLGID                    = 0x1\n\tTCP_ACLLS                     = 0x25\n\tTCP_ACLSUBNET                 = 0x4\n\tTCP_ACLUID                    = 0x2\n\tTCP_CWND_DF                   = 0x16\n\tTCP_CWND_IF                   = 0x15\n\tTCP_DELAY_ACK_FIN             = 0x2\n\tTCP_DELAY_ACK_SYN             = 0x1\n\tTCP_FASTNAME                  = 0x101080a\n\tTCP_KEEPCNT                   = 0x13\n\tTCP_KEEPIDLE                  = 0x11\n\tTCP_KEEPINTVL                 = 0x12\n\tTCP_LSPRIV                    = 0x29\n\tTCP_LUID                      = 0x20\n\tTCP_MAXBURST                  = 0x8\n\tTCP_MAXDF                     = 0x64\n\tTCP_MAXIF                     = 0x64\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MAXWIN                    = 0xffff\n\tTCP_MAXWINDOWSCALE            = 0xe\n\tTCP_MAX_SACK                  = 0x4\n\tTCP_MSS                       = 0x5b4\n\tTCP_NODELAY                   = 0x1\n\tTCP_NODELAYACK                = 0x14\n\tTCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19\n\tTCP_NOREDUCE_CWND_IN_FRXMT    = 0x18\n\tTCP_NOTENTER_SSTART           = 0x17\n\tTCP_OPT                       = 0x19\n\tTCP_RFC1323                   = 0x4\n\tTCP_SETPRIV                   = 0x27\n\tTCP_STDURG                    = 0x10\n\tTCP_TIMESTAMP_OPTLEN          = 0xc\n\tTCP_UNSETPRIV                 = 0x28\n\tTCSAFLUSH                     = 0x2\n\tTCSBRK                        = 0x5409\n\tTCSETA                        = 0x5406\n\tTCSETAF                       = 0x5408\n\tTCSETAW                       = 0x5407\n\tTCSETS                        = 0x5402\n\tTCSETSF                       = 0x5404\n\tTCSETSW                       = 0x5403\n\tTCXONC                        = 0x540b\n\tTIMER_ABSTIME                 = 0x3e7\n\tTIMER_MAX                     = 0x20\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x2000747a\n\tTIOCCDTR                      = 0x20007478\n\tTIOCCONS                      = 0x80047462\n\tTIOCEXCL                      = 0x2000740d\n\tTIOCFLUSH                     = 0x80047410\n\tTIOCGETC                      = 0x40067412\n\tTIOCGETD                      = 0x40047400\n\tTIOCGETP                      = 0x40067408\n\tTIOCGLTC                      = 0x40067474\n\tTIOCGPGRP                     = 0x40047477\n\tTIOCGSID                      = 0x40047448\n\tTIOCGSIZE                     = 0x40087468\n\tTIOCGWINSZ                    = 0x40087468\n\tTIOCHPCL                      = 0x20007402\n\tTIOCLBIC                      = 0x8004747e\n\tTIOCLBIS                      = 0x8004747f\n\tTIOCLGET                      = 0x4004747c\n\tTIOCLSET                      = 0x8004747d\n\tTIOCMBIC                      = 0x8004746b\n\tTIOCMBIS                      = 0x8004746c\n\tTIOCMGET                      = 0x4004746a\n\tTIOCMIWAIT                    = 0x80047464\n\tTIOCMODG                      = 0x40047403\n\tTIOCMODS                      = 0x80047404\n\tTIOCMSET                      = 0x8004746d\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x20007471\n\tTIOCNXCL                      = 0x2000740e\n\tTIOCOUTQ                      = 0x40047473\n\tTIOCPKT                       = 0x80047470\n\tTIOCPKT_DATA                  = 0x0\n\tTIOCPKT_DOSTOP                = 0x20\n\tTIOCPKT_FLUSHREAD             = 0x1\n\tTIOCPKT_FLUSHWRITE            = 0x2\n\tTIOCPKT_NOSTOP                = 0x10\n\tTIOCPKT_START                 = 0x8\n\tTIOCPKT_STOP                  = 0x4\n\tTIOCREMOTE                    = 0x80047469\n\tTIOCSBRK                      = 0x2000747b\n\tTIOCSDTR                      = 0x20007479\n\tTIOCSETC                      = 0x80067411\n\tTIOCSETD                      = 0x80047401\n\tTIOCSETN                      = 0x8006740a\n\tTIOCSETP                      = 0x80067409\n\tTIOCSLTC                      = 0x80067475\n\tTIOCSPGRP                     = 0x80047476\n\tTIOCSSIZE                     = 0x80087467\n\tTIOCSTART                     = 0x2000746e\n\tTIOCSTI                       = 0x80017472\n\tTIOCSTOP                      = 0x2000746f\n\tTIOCSWINSZ                    = 0x80087467\n\tTIOCUCNTL                     = 0x80047466\n\tTOSTOP                        = 0x10000\n\tUTIME_NOW                     = -0x2\n\tUTIME_OMIT                    = -0x3\n\tVDISCRD                       = 0xc\n\tVDSUSP                        = 0xa\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xe\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xb\n\tVSTART                        = 0x7\n\tVSTOP                         = 0x8\n\tVSTRT                         = 0x7\n\tVSUSP                         = 0x9\n\tVT0                           = 0x0\n\tVT1                           = 0x8000\n\tVTDELAY                       = 0x2000\n\tVTDLY                         = 0x8000\n\tVTIME                         = 0x5\n\tVWERSE                        = 0xd\n\tWPARSTART                     = 0x1\n\tWPARSTOP                      = 0x2\n\tWPARTTYNAME                   = \"Global\"\n\tXCASE                         = 0x4\n\tXTABS                         = 0xc00\n\t_FDATAFLUSH                   = 0x2000000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x43)\n\tEADDRNOTAVAIL   = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x42)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x38)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x78)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x75)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECLONEME        = syscall.Errno(0x52)\n\tECONNABORTED    = syscall.Errno(0x48)\n\tECONNREFUSED    = syscall.Errno(0x4f)\n\tECONNRESET      = syscall.Errno(0x49)\n\tECORRUPT        = syscall.Errno(0x59)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDESTADDREQ     = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x3a)\n\tEDIST           = syscall.Errno(0x35)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x58)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFORMAT         = syscall.Errno(0x30)\n\tEHOSTDOWN       = syscall.Errno(0x50)\n\tEHOSTUNREACH    = syscall.Errno(0x51)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x74)\n\tEINPROGRESS     = syscall.Errno(0x37)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x4b)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x55)\n\tEMEDIA          = syscall.Errno(0x6e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x3b)\n\tEMULTIHOP       = syscall.Errno(0x7d)\n\tENAMETOOLONG    = syscall.Errno(0x56)\n\tENETDOWN        = syscall.Errno(0x45)\n\tENETRESET       = syscall.Errno(0x47)\n\tENETUNREACH     = syscall.Errno(0x46)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x70)\n\tENOBUFS         = syscall.Errno(0x4a)\n\tENOCONNECT      = syscall.Errno(0x32)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x7a)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x31)\n\tENOLINK         = syscall.Errno(0x7e)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENOPROTOOPT     = syscall.Errno(0x3d)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x76)\n\tENOSTR          = syscall.Errno(0x7b)\n\tENOSYS          = syscall.Errno(0x6d)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x4c)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x11)\n\tENOTREADY       = syscall.Errno(0x2e)\n\tENOTRECOVERABLE = syscall.Errno(0x5e)\n\tENOTRUST        = syscall.Errno(0x72)\n\tENOTSOCK        = syscall.Errno(0x39)\n\tENOTSUP         = syscall.Errno(0x7c)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x40)\n\tEOVERFLOW       = syscall.Errno(0x7f)\n\tEOWNERDEAD      = syscall.Errno(0x5f)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x41)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x53)\n\tEPROTO          = syscall.Errno(0x79)\n\tEPROTONOSUPPORT = syscall.Errno(0x3e)\n\tEPROTOTYPE      = syscall.Errno(0x3c)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x5d)\n\tERESTART        = syscall.Errno(0x52)\n\tEROFS           = syscall.Errno(0x1e)\n\tESAD            = syscall.Errno(0x71)\n\tESHUTDOWN       = syscall.Errno(0x4d)\n\tESOCKTNOSUPPORT = syscall.Errno(0x3f)\n\tESOFT           = syscall.Errno(0x6f)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x34)\n\tESYSERROR       = syscall.Errno(0x5a)\n\tETIME           = syscall.Errno(0x77)\n\tETIMEDOUT       = syscall.Errno(0x4e)\n\tETOOMANYREFS    = syscall.Errno(0x73)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x54)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEWRPROTECT      = syscall.Errno(0x2f)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGAIO      = syscall.Signal(0x17)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGALRM1    = syscall.Signal(0x26)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCAPI     = syscall.Signal(0x31)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCLD      = syscall.Signal(0x14)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGCPUFAIL  = syscall.Signal(0x3b)\n\tSIGDANGER   = syscall.Signal(0x21)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGGRANT    = syscall.Signal(0x3c)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOINT    = syscall.Signal(0x10)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKAP      = syscall.Signal(0x3c)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGLOST     = syscall.Signal(0x6)\n\tSIGMAX      = syscall.Signal(0x3f)\n\tSIGMAX32    = syscall.Signal(0x3f)\n\tSIGMIGRATE  = syscall.Signal(0x23)\n\tSIGMSG      = syscall.Signal(0x1b)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPOLL     = syscall.Signal(0x17)\n\tSIGPRE      = syscall.Signal(0x24)\n\tSIGPROF     = syscall.Signal(0x20)\n\tSIGPTY      = syscall.Signal(0x17)\n\tSIGPWR      = syscall.Signal(0x1d)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGRECONFIG = syscall.Signal(0x3a)\n\tSIGRETRACT  = syscall.Signal(0x3d)\n\tSIGSAK      = syscall.Signal(0x3f)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSOUND    = syscall.Signal(0x3e)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGSYSERROR = syscall.Signal(0x30)\n\tSIGTALRM    = syscall.Signal(0x26)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVIRT     = syscall.Signal(0x25)\n\tSIGVTALRM   = syscall.Signal(0x22)\n\tSIGWAITING  = syscall.Signal(0x27)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"ENOTEMPTY\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"not a typewriter\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock condition if locked\"},\n\t{46, \"ENOTREADY\", \"device not ready\"},\n\t{47, \"EWRPROTECT\", \"write-protected media\"},\n\t{48, \"EFORMAT\", \"unformatted or incompatible media\"},\n\t{49, \"ENOLCK\", \"no locks available\"},\n\t{50, \"ENOCONNECT\", \"cannot Establish Connection\"},\n\t{52, \"ESTALE\", \"missing file or filesystem\"},\n\t{53, \"EDIST\", \"requests blocked by Administrator\"},\n\t{55, \"EINPROGRESS\", \"operation now in progress\"},\n\t{56, \"EALREADY\", \"operation already in progress\"},\n\t{57, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{58, \"EDESTADDREQ\", \"destination address required\"},\n\t{59, \"EMSGSIZE\", \"message too long\"},\n\t{60, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{61, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{62, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{63, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{64, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{65, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{66, \"EAFNOSUPPORT\", \"addr family not supported by protocol\"},\n\t{67, \"EADDRINUSE\", \"address already in use\"},\n\t{68, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{69, \"ENETDOWN\", \"network is down\"},\n\t{70, \"ENETUNREACH\", \"network is unreachable\"},\n\t{71, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{72, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{73, \"ECONNRESET\", \"connection reset by peer\"},\n\t{74, \"ENOBUFS\", \"no buffer space available\"},\n\t{75, \"EISCONN\", \"socket is already connected\"},\n\t{76, \"ENOTCONN\", \"socket is not connected\"},\n\t{77, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{78, \"ETIMEDOUT\", \"connection timed out\"},\n\t{79, \"ECONNREFUSED\", \"connection refused\"},\n\t{80, \"EHOSTDOWN\", \"host is down\"},\n\t{81, \"EHOSTUNREACH\", \"no route to host\"},\n\t{82, \"ERESTART\", \"restart the system call\"},\n\t{83, \"EPROCLIM\", \"too many processes\"},\n\t{84, \"EUSERS\", \"too many users\"},\n\t{85, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{86, \"ENAMETOOLONG\", \"file name too long\"},\n\t{88, \"EDQUOT\", \"disk quota exceeded\"},\n\t{89, \"ECORRUPT\", \"invalid file system control data detected\"},\n\t{90, \"ESYSERROR\", \"for future use \"},\n\t{93, \"EREMOTE\", \"item is not local to host\"},\n\t{94, \"ENOTRECOVERABLE\", \"state not recoverable \"},\n\t{95, \"EOWNERDEAD\", \"previous owner died \"},\n\t{109, \"ENOSYS\", \"function not implemented\"},\n\t{110, \"EMEDIA\", \"media surface error\"},\n\t{111, \"ESOFT\", \"I/O completed, but needs relocation\"},\n\t{112, \"ENOATTR\", \"no attribute found\"},\n\t{113, \"ESAD\", \"security Authentication Denied\"},\n\t{114, \"ENOTRUST\", \"not a Trusted Program\"},\n\t{115, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{116, \"EILSEQ\", \"invalid wide character\"},\n\t{117, \"ECANCELED\", \"asynchronous I/O cancelled\"},\n\t{118, \"ENOSR\", \"out of STREAMS resources\"},\n\t{119, \"ETIME\", \"system call timed out\"},\n\t{120, \"EBADMSG\", \"next message has wrong type\"},\n\t{121, \"EPROTO\", \"error in protocol\"},\n\t{122, \"ENODATA\", \"no message on stream head read q\"},\n\t{123, \"ENOSTR\", \"fd not associated with a stream\"},\n\t{124, \"ENOTSUP\", \"unsupported attribute value\"},\n\t{125, \"EMULTIHOP\", \"multihop is not allowed\"},\n\t{126, \"ENOLINK\", \"the server link has been severed\"},\n\t{127, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"IOT/Abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible/complete\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{27, \"SIGMSG\", \"input device data\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGPWR\", \"power-failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"paging space low\"},\n\t{34, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{35, \"SIGMIGRATE\", \"signal 35\"},\n\t{36, \"SIGPRE\", \"signal 36\"},\n\t{37, \"SIGVIRT\", \"signal 37\"},\n\t{38, \"SIGTALRM\", \"signal 38\"},\n\t{39, \"SIGWAITING\", \"signal 39\"},\n\t{48, \"SIGSYSERROR\", \"signal 48\"},\n\t{49, \"SIGCAPI\", \"signal 49\"},\n\t{58, \"SIGRECONFIG\", \"signal 58\"},\n\t{59, \"SIGCPUFAIL\", \"CPU Failure Predicted\"},\n\t{60, \"SIGKAP\", \"monitor mode granted\"},\n\t{61, \"SIGRETRACT\", \"monitor mode retracted\"},\n\t{62, \"SIGSOUND\", \"sound completed\"},\n\t{63, \"SIGSAK\", \"secure attention\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go",
    "content": "// mkerrors.sh -maix64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && aix\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -maix64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                  = 0x10\n\tAF_BYPASS                     = 0x19\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x18\n\tAF_INTF                       = 0x14\n\tAF_ISO                        = 0x7\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x12\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x1e\n\tAF_NDD                        = 0x17\n\tAF_NETWARE                    = 0x16\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x7\n\tAF_PUP                        = 0x4\n\tAF_RIF                        = 0x15\n\tAF_ROUTE                      = 0x11\n\tAF_SNA                        = 0xb\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tALTWERASE                     = 0x400000\n\tARPHRD_802_3                  = 0x6\n\tARPHRD_802_5                  = 0x6\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FDDI                   = 0x1\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB38400                        = 0xf\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB9600                         = 0xd\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x1000\n\tBSDLY                         = 0x1000\n\tCAP_AACCT                     = 0x6\n\tCAP_ARM_APPLICATION           = 0x5\n\tCAP_BYPASS_RAC_VMM            = 0x3\n\tCAP_CLEAR                     = 0x0\n\tCAP_CREDENTIALS               = 0x7\n\tCAP_EFFECTIVE                 = 0x1\n\tCAP_EWLM_AGENT                = 0x4\n\tCAP_INHERITABLE               = 0x2\n\tCAP_MAXIMUM                   = 0x7\n\tCAP_NUMA_ATTACH               = 0x2\n\tCAP_PERMITTED                 = 0x3\n\tCAP_PROPAGATE                 = 0x1\n\tCAP_PROPOGATE                 = 0x1\n\tCAP_SET                       = 0x1\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_MONOTONIC               = 0xa\n\tCLOCK_PROCESS_CPUTIME_ID      = 0xb\n\tCLOCK_REALTIME                = 0x9\n\tCLOCK_THREAD_CPUTIME_ID       = 0xc\n\tCR0                           = 0x0\n\tCR1                           = 0x100\n\tCR2                           = 0x200\n\tCR3                           = 0x300\n\tCRDLY                         = 0x300\n\tCREAD                         = 0x80\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIOCGIFCONF                  = -0x3fef96dc\n\tCSIZE                         = 0x30\n\tCSMAP_DIR                     = \"/usr/lib/nls/csmap/\"\n\tCSTART                        = '\\021'\n\tCSTOP                         = '\\023'\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x20000\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x80000\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x40000\n\tECH_ICMPID                    = 0x2\n\tETHERNET_CSMACD               = 0x6\n\tEVENP                         = 0x80\n\tEXCONTINUE                    = 0x0\n\tEXDLOK                        = 0x3\n\tEXIO                          = 0x2\n\tEXPGIO                        = 0x0\n\tEXRESUME                      = 0x2\n\tEXRETURN                      = 0x1\n\tEXSIG                         = 0x4\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tEXTRAP                        = 0x1\n\tEYEC_RTENTRYA                 = 0x257274656e747241\n\tEYEC_RTENTRYF                 = 0x257274656e747246\n\tE_ACC                         = 0x0\n\tFD_CLOEXEC                    = 0x1\n\tFD_SETSIZE                    = 0xfffe\n\tFF0                           = 0x0\n\tFF1                           = 0x2000\n\tFFDLY                         = 0x2000\n\tFLUSHBAND                     = 0x40\n\tFLUSHLOW                      = 0x8\n\tFLUSHO                        = 0x100000\n\tFLUSHR                        = 0x1\n\tFLUSHRW                       = 0x3\n\tFLUSHW                        = 0x2\n\tF_CLOSEM                      = 0xa\n\tF_DUP2FD                      = 0xe\n\tF_DUPFD                       = 0x0\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0xb\n\tF_GETLK64                     = 0xb\n\tF_GETOWN                      = 0x8\n\tF_LOCK                        = 0x1\n\tF_OK                          = 0x0\n\tF_RDLCK                       = 0x1\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0xc\n\tF_SETLK64                     = 0xc\n\tF_SETLKW                      = 0xd\n\tF_SETLKW64                    = 0xd\n\tF_SETOWN                      = 0x9\n\tF_TEST                        = 0x3\n\tF_TLOCK                       = 0x2\n\tF_TSTLK                       = 0xf\n\tF_ULOCK                       = 0x0\n\tF_UNLCK                       = 0x3\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x26\n\tICMP6_SEC_SEND_DEL            = 0x46\n\tICMP6_SEC_SEND_GET            = 0x47\n\tICMP6_SEC_SEND_SET            = 0x44\n\tICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x200000\n\tIFA_FIRSTALIAS                = 0x2000\n\tIFA_ROUTE                     = 0x1\n\tIFF_64BIT                     = 0x4000000\n\tIFF_ALLCAST                   = 0x20000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_BPF                       = 0x8000000\n\tIFF_BRIDGE                    = 0x40000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x80c52\n\tIFF_CHECKSUM_OFFLOAD          = 0x10000000\n\tIFF_D1                        = 0x8000\n\tIFF_D2                        = 0x4000\n\tIFF_D3                        = 0x2000\n\tIFF_D4                        = 0x1000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEVHEALTH                 = 0x4000\n\tIFF_DO_HW_LOOPBACK            = 0x10000\n\tIFF_GROUP_ROUTING             = 0x2000000\n\tIFF_IFBUFMGT                  = 0x800000\n\tIFF_LINK0                     = 0x100000\n\tIFF_LINK1                     = 0x200000\n\tIFF_LINK2                     = 0x400000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x80000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOECHO                    = 0x800\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_OACTIVE                   = 0x400\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PROMISC                   = 0x100\n\tIFF_PSEG                      = 0x40000000\n\tIFF_RUNNING                   = 0x40\n\tIFF_SIMPLEX                   = 0x800\n\tIFF_SNAP                      = 0x8000\n\tIFF_TCP_DISABLE_CKSUM         = 0x20000000\n\tIFF_TCP_NOCKSUM               = 0x1000000\n\tIFF_UP                        = 0x1\n\tIFF_VIPA                      = 0x80000000\n\tIFNAMSIZ                      = 0x10\n\tIFO_FLUSH                     = 0x1\n\tIFT_1822                      = 0x2\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_CLUSTER                   = 0x3e\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FCS                       = 0x3a\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_GIFTUNNEL                 = 0x3c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HF                        = 0x3d\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SN                        = 0x38\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_SP                        = 0x39\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_TUNNEL                    = 0x3b\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_VIPA                      = 0x37\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x10000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_USE                        = 0x1\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_BIP                   = 0x53\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_GIF                   = 0x8c\n\tIPPROTO_GRE                   = 0x2f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPIP                  = 0x4\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_LOCAL                 = 0x3f\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_MH                    = 0x87\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_QOS                   = 0x2d\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_TP                    = 0x1d\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADDRFORM                 = 0x16\n\tIPV6_ADDR_PREFERENCES         = 0x4a\n\tIPV6_ADD_MEMBERSHIP           = 0xc\n\tIPV6_AIXRAWSOCKET             = 0x39\n\tIPV6_CHECKSUM                 = 0x27\n\tIPV6_DONTFRAG                 = 0x2d\n\tIPV6_DROP_MEMBERSHIP          = 0xd\n\tIPV6_DSTOPTS                  = 0x36\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffffff\n\tIPV6_FLOWINFO_PRIFLOW         = 0xfffffff\n\tIPV6_FLOWINFO_PRIORITY        = 0xf000000\n\tIPV6_FLOWINFO_SRFLAG          = 0x10000000\n\tIPV6_FLOWINFO_VERSION         = 0xf0000000\n\tIPV6_HOPLIMIT                 = 0x28\n\tIPV6_HOPOPTS                  = 0x34\n\tIPV6_JOIN_GROUP               = 0xc\n\tIPV6_LEAVE_GROUP              = 0xd\n\tIPV6_MIPDSTOPTS               = 0x36\n\tIPV6_MULTICAST_HOPS           = 0xa\n\tIPV6_MULTICAST_IF             = 0x9\n\tIPV6_MULTICAST_LOOP           = 0xb\n\tIPV6_NEXTHOP                  = 0x30\n\tIPV6_NOPROBE                  = 0x1c\n\tIPV6_PATHMTU                  = 0x2e\n\tIPV6_PKTINFO                  = 0x21\n\tIPV6_PKTOPTIONS               = 0x24\n\tIPV6_PRIORITY_10              = 0xa000000\n\tIPV6_PRIORITY_11              = 0xb000000\n\tIPV6_PRIORITY_12              = 0xc000000\n\tIPV6_PRIORITY_13              = 0xd000000\n\tIPV6_PRIORITY_14              = 0xe000000\n\tIPV6_PRIORITY_15              = 0xf000000\n\tIPV6_PRIORITY_8               = 0x8000000\n\tIPV6_PRIORITY_9               = 0x9000000\n\tIPV6_PRIORITY_BULK            = 0x4000000\n\tIPV6_PRIORITY_CONTROL         = 0x7000000\n\tIPV6_PRIORITY_FILLER          = 0x1000000\n\tIPV6_PRIORITY_INTERACTIVE     = 0x6000000\n\tIPV6_PRIORITY_RESERVED1       = 0x3000000\n\tIPV6_PRIORITY_RESERVED2       = 0x5000000\n\tIPV6_PRIORITY_UNATTENDED      = 0x2000000\n\tIPV6_PRIORITY_UNCHARACTERIZED = 0x0\n\tIPV6_RECVDSTOPTS              = 0x38\n\tIPV6_RECVHOPLIMIT             = 0x29\n\tIPV6_RECVHOPOPTS              = 0x35\n\tIPV6_RECVHOPS                 = 0x22\n\tIPV6_RECVIF                   = 0x1e\n\tIPV6_RECVPATHMTU              = 0x2f\n\tIPV6_RECVPKTINFO              = 0x23\n\tIPV6_RECVRTHDR                = 0x33\n\tIPV6_RECVSRCRT                = 0x1d\n\tIPV6_RECVTCLASS               = 0x2a\n\tIPV6_RTHDR                    = 0x32\n\tIPV6_RTHDRDSTOPTS             = 0x37\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_RTHDR_TYPE_2             = 0x2\n\tIPV6_SENDIF                   = 0x1f\n\tIPV6_SRFLAG_LOOSE             = 0x0\n\tIPV6_SRFLAG_STRICT            = 0x10000000\n\tIPV6_TCLASS                   = 0x2b\n\tIPV6_TOKEN_LENGTH             = 0x40\n\tIPV6_UNICAST_HOPS             = 0x4\n\tIPV6_USE_MIN_MTU              = 0x2c\n\tIPV6_V6ONLY                   = 0x25\n\tIPV6_VERSION                  = 0x60000000\n\tIP_ADDRFORM                   = 0x16\n\tIP_ADD_MEMBERSHIP             = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x3c\n\tIP_BLOCK_SOURCE               = 0x3a\n\tIP_BROADCAST_IF               = 0x10\n\tIP_CACHE_LINE_SIZE            = 0x80\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPMODE                   = 0x11\n\tIP_DONTFRAG                   = 0x19\n\tIP_DROP_MEMBERSHIP            = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x3d\n\tIP_FINDPMTU                   = 0x1a\n\tIP_HDRINCL                    = 0x2\n\tIP_INC_MEMBERSHIPS            = 0x14\n\tIP_INIT_MEMBERSHIP            = 0x14\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_HOPS             = 0xa\n\tIP_MULTICAST_IF               = 0x9\n\tIP_MULTICAST_LOOP             = 0xb\n\tIP_MULTICAST_TTL              = 0xa\n\tIP_OPT                        = 0x1b\n\tIP_OPTIONS                    = 0x1\n\tIP_PMTUAGE                    = 0x1b\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x14\n\tIP_RECVIFINFO                 = 0xf\n\tIP_RECVINTERFACE              = 0x20\n\tIP_RECVMACHDR                 = 0xe\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVTTL                    = 0x22\n\tIP_RETOPTS                    = 0x8\n\tIP_SOURCE_FILTER              = 0x48\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x3b\n\tIP_UNICAST_HOPS               = 0x4\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x800\n\tIXANY                         = 0x1000\n\tIXOFF                         = 0x400\n\tIXON                          = 0x200\n\tI_FLUSH                       = 0x20005305\n\tLNOFLSH                       = 0x8000\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_NORMAL                   = 0x0\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_SPACEAVAIL               = 0x5\n\tMADV_WILLNEED                 = 0x3\n\tMAP_ANON                      = 0x10\n\tMAP_ANONYMOUS                 = 0x10\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x100\n\tMAP_PRIVATE                   = 0x2\n\tMAP_SHARED                    = 0x1\n\tMAP_TYPE                      = 0xf0\n\tMAP_VARIABLE                  = 0x0\n\tMCAST_BLOCK_SOURCE            = 0x40\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x3e\n\tMCAST_JOIN_SOURCE_GROUP       = 0x42\n\tMCAST_LEAVE_GROUP             = 0x3f\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x43\n\tMCAST_SOURCE_FILTER           = 0x49\n\tMCAST_UNBLOCK_SOURCE          = 0x41\n\tMCL_CURRENT                   = 0x100\n\tMCL_FUTURE                    = 0x200\n\tMSG_ANY                       = 0x4\n\tMSG_ARGEXT                    = 0x400\n\tMSG_BAND                      = 0x2\n\tMSG_COMPAT                    = 0x8000\n\tMSG_CTRUNC                    = 0x20\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_EOR                       = 0x8\n\tMSG_HIPRI                     = 0x1\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_MPEG2                     = 0x80\n\tMSG_NONBLOCK                  = 0x4000\n\tMSG_NOSIGNAL                  = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x10\n\tMSG_WAITALL                   = 0x40\n\tMSG_WAITFORONE                = 0x200\n\tMS_ASYNC                      = 0x10\n\tMS_EINTR                      = 0x80\n\tMS_INVALIDATE                 = 0x40\n\tMS_PER_SEC                    = 0x3e8\n\tMS_SYNC                       = 0x20\n\tNFDBITS                       = 0x40\n\tNL0                           = 0x0\n\tNL1                           = 0x4000\n\tNL2                           = 0x8000\n\tNL3                           = 0xc000\n\tNLDLY                         = 0x4000\n\tNOFLSH                        = 0x80\n\tNOFLUSH                       = 0x80000000\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tONOEOT                        = 0x80000\n\tOPOST                         = 0x1\n\tOXTABS                        = 0x40000\n\tO_ACCMODE                     = 0x23\n\tO_APPEND                      = 0x8\n\tO_CIO                         = 0x80\n\tO_CIOR                        = 0x800000000\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DEFER                       = 0x2000\n\tO_DELAY                       = 0x4000\n\tO_DIRECT                      = 0x8000000\n\tO_DIRECTORY                   = 0x80000\n\tO_DSYNC                       = 0x400000\n\tO_EFSOFF                      = 0x400000000\n\tO_EFSON                       = 0x200000000\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x20\n\tO_LARGEFILE                   = 0x4000000\n\tO_NDELAY                      = 0x8000\n\tO_NOCACHE                     = 0x100000\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x1000000\n\tO_NONBLOCK                    = 0x4\n\tO_NONE                        = 0x3\n\tO_NSHARE                      = 0x10000\n\tO_RAW                         = 0x100000000\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSHARE                      = 0x1000\n\tO_RSYNC                       = 0x200000\n\tO_SEARCH                      = 0x20\n\tO_SNAPSHOT                    = 0x40\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_TTY_INIT                    = 0x0\n\tO_WRONLY                      = 0x1\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x20000000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tPR_64BIT                      = 0x20\n\tPR_ADDR                       = 0x2\n\tPR_ARGEXT                     = 0x400\n\tPR_ATOMIC                     = 0x1\n\tPR_CONNREQUIRED               = 0x4\n\tPR_FASTHZ                     = 0x5\n\tPR_INP                        = 0x40\n\tPR_INTRLEVEL                  = 0x8000\n\tPR_MLS                        = 0x100\n\tPR_MLS_1_LABEL                = 0x200\n\tPR_NOEOR                      = 0x4000\n\tPR_RIGHTS                     = 0x10\n\tPR_SLOWHZ                     = 0x2\n\tPR_WANTRCVD                   = 0x8\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x7\n\tRLIMIT_NPROC                  = 0x9\n\tRLIMIT_RSS                    = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0x7fffffffffffffff\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x8\n\tRTAX_NETMASK                  = 0x2\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DOWNSTREAM                = 0x100\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTC_IA64                      = 0x3\n\tRTC_POWER                     = 0x1\n\tRTC_POWER_PC                  = 0x2\n\tRTF_ACTIVE_DGD                = 0x1000000\n\tRTF_BCE                       = 0x80000\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_BROADCAST                 = 0x400000\n\tRTF_BUL                       = 0x2000\n\tRTF_CLONE                     = 0x10000\n\tRTF_CLONED                    = 0x20000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_FREE_IN_PROG              = 0x4000000\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_LLINFO                    = 0x400\n\tRTF_LOCAL                     = 0x200000\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTICAST                 = 0x800000\n\tRTF_PERMANENT6                = 0x8000000\n\tRTF_PINNED                    = 0x100000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_PROTO3                    = 0x40000\n\tRTF_REJECT                    = 0x8\n\tRTF_SMALLMTU                  = 0x40000\n\tRTF_STATIC                    = 0x800\n\tRTF_STOPSRCH                  = 0x2000000\n\tRTF_UNREACHABLE               = 0x10000000\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_EXPIRE                    = 0xf\n\tRTM_GET                       = 0x4\n\tRTM_GETNEXT                   = 0x11\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_RTLOST                    = 0x10\n\tRTM_RTTUNIT                   = 0xf4240\n\tRTM_SAMEADDR                  = 0x12\n\tRTM_SET                       = 0x13\n\tRTM_VERSION                   = 0x2\n\tRTM_VERSION_GR                = 0x4\n\tRTM_VERSION_GR_COMPAT         = 0x3\n\tRTM_VERSION_POLICY            = 0x5\n\tRTM_VERSION_POLICY_EXT        = 0x6\n\tRTM_VERSION_POLICY_PRFN       = 0x7\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tRUSAGE_THREAD                 = 0x1\n\tSCM_RIGHTS                    = 0x1\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIGMAX64                      = 0xff\n\tSIGQUEUE_MAX                  = 0x20\n\tSIOCADDIFVIPA                 = 0x20006942\n\tSIOCADDMTU                    = -0x7ffb9690\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDNETID                  = -0x7fd796a9\n\tSIOCADDRT                     = -0x7fc78df6\n\tSIOCAIFADDR                   = -0x7fbf96e6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fb396e0\n\tSIOCDELIFVIPA                 = 0x20006943\n\tSIOCDELMTU                    = -0x7ffb968f\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELPMTU                   = -0x7fd78ff6\n\tSIOCDELRT                     = -0x7fc78df5\n\tSIOCDIFADDR                   = -0x7fd796e7\n\tSIOCDNETOPT                   = -0x3ffe9680\n\tSIOCDX25XLATE                 = -0x7fd7969b\n\tSIOCFIFADDR                   = -0x7fdf966d\n\tSIOCGARP                      = -0x3fb396da\n\tSIOCGETMTUS                   = 0x2000696f\n\tSIOCGETSGCNT                  = -0x3feb8acc\n\tSIOCGETVIFCNT                 = -0x3feb8acd\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fd796df\n\tSIOCGIFADDRS                  = 0x2000698c\n\tSIOCGIFBAUDRATE               = -0x3fdf9669\n\tSIOCGIFBRDADDR                = -0x3fd796dd\n\tSIOCGIFCONF                   = -0x3fef96bb\n\tSIOCGIFCONFGLOB               = -0x3fef9670\n\tSIOCGIFDSTADDR                = -0x3fd796de\n\tSIOCGIFFLAGS                  = -0x3fd796ef\n\tSIOCGIFGIDLIST                = 0x20006968\n\tSIOCGIFHWADDR                 = -0x3fab966b\n\tSIOCGIFMETRIC                 = -0x3fd796e9\n\tSIOCGIFMTU                    = -0x3fd796aa\n\tSIOCGIFNETMASK                = -0x3fd796db\n\tSIOCGIFOPTIONS                = -0x3fd796d6\n\tSIOCGISNO                     = -0x3fd79695\n\tSIOCGLOADF                    = -0x3ffb967e\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGNETOPT                   = -0x3ffe96a5\n\tSIOCGNETOPT1                  = -0x3fdf967f\n\tSIOCGNMTUS                    = 0x2000696e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSIZIFCONF                = 0x4004696a\n\tSIOCGSRCFILTER                = -0x3fe796cb\n\tSIOCGTUNEPHASE                = -0x3ffb9676\n\tSIOCGX25XLATE                 = -0x3fd7969c\n\tSIOCIFATTACH                  = -0x7fdf9699\n\tSIOCIFDETACH                  = -0x7fdf969a\n\tSIOCIFGETPKEY                 = -0x7fdf969b\n\tSIOCIF_ATM_DARP               = -0x7fdf9683\n\tSIOCIF_ATM_DUMPARP            = -0x7fdf9685\n\tSIOCIF_ATM_GARP               = -0x7fdf9682\n\tSIOCIF_ATM_IDLE               = -0x7fdf9686\n\tSIOCIF_ATM_SARP               = -0x7fdf9681\n\tSIOCIF_ATM_SNMPARP            = -0x7fdf9687\n\tSIOCIF_ATM_SVC                = -0x7fdf9684\n\tSIOCIF_ATM_UBR                = -0x7fdf9688\n\tSIOCIF_DEVHEALTH              = -0x7ffb966c\n\tSIOCIF_IB_ARP_INCOMP          = -0x7fdf9677\n\tSIOCIF_IB_ARP_TIMER           = -0x7fdf9678\n\tSIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f\n\tSIOCIF_IB_DEL_ARP             = -0x7fdf967f\n\tSIOCIF_IB_DEL_PINFO           = -0x3fdf9670\n\tSIOCIF_IB_DUMP_ARP            = -0x7fdf9680\n\tSIOCIF_IB_GET_ARP             = -0x7fdf967e\n\tSIOCIF_IB_GET_INFO            = -0x3f879675\n\tSIOCIF_IB_GET_STATS           = -0x3f879672\n\tSIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a\n\tSIOCIF_IB_RESET_STATS         = -0x3f879671\n\tSIOCIF_IB_RESIZE_CQ           = -0x7fdf9679\n\tSIOCIF_IB_SET_ARP             = -0x7fdf967d\n\tSIOCIF_IB_SET_PKEY            = -0x7fdf967c\n\tSIOCIF_IB_SET_PORT            = -0x7fdf967b\n\tSIOCIF_IB_SET_QKEY            = -0x7fdf9676\n\tSIOCIF_IB_SET_QSIZE           = -0x7fdf967a\n\tSIOCLISTIFVIPA                = 0x20006944\n\tSIOCSARP                      = -0x7fb396e2\n\tSIOCSHIWAT                    = 0xffffffff80047300\n\tSIOCSIFADDR                   = -0x7fd796f4\n\tSIOCSIFADDRORI                = -0x7fdb9673\n\tSIOCSIFBRDADDR                = -0x7fd796ed\n\tSIOCSIFDSTADDR                = -0x7fd796f2\n\tSIOCSIFFLAGS                  = -0x7fd796f0\n\tSIOCSIFGIDLIST                = 0x20006969\n\tSIOCSIFMETRIC                 = -0x7fd796e8\n\tSIOCSIFMTU                    = -0x7fd796a8\n\tSIOCSIFNETDUMP                = -0x7fd796e4\n\tSIOCSIFNETMASK                = -0x7fd796ea\n\tSIOCSIFOPTIONS                = -0x7fd796d7\n\tSIOCSIFSUBCHAN                = -0x7fd796e5\n\tSIOCSISNO                     = -0x7fd79694\n\tSIOCSLOADF                    = -0x3ffb967d\n\tSIOCSLOWAT                    = 0xffffffff80047302\n\tSIOCSNETOPT                   = -0x7ffe96a6\n\tSIOCSPGRP                     = 0xffffffff80047308\n\tSIOCSX25XLATE                 = -0x7fd7969d\n\tSOCK_CONN_DGRAM               = 0x6\n\tSOCK_DGRAM                    = 0x2\n\tSOCK_RAW                      = 0x3\n\tSOCK_RDM                      = 0x4\n\tSOCK_SEQPACKET                = 0x5\n\tSOCK_STREAM                   = 0x1\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x400\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_AUDIT                      = 0x8000\n\tSO_BROADCAST                  = 0x20\n\tSO_CKSUMRECV                  = 0x800\n\tSO_DEBUG                      = 0x1\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROR                      = 0x1007\n\tSO_KEEPALIVE                  = 0x8\n\tSO_KERNACCEPT                 = 0x2000\n\tSO_LINGER                     = 0x80\n\tSO_NOMULTIPATH                = 0x4000\n\tSO_NOREUSEADDR                = 0x1000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PEERID                     = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_REUSEADDR                  = 0x4\n\tSO_REUSEPORT                  = 0x200\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_TIMESTAMPNS                = 0x100a\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_USE_IFBUFS                 = 0x400\n\tS_BANDURG                     = 0x400\n\tS_EMODFMT                     = 0x3c000000\n\tS_ENFMT                       = 0x400\n\tS_ERROR                       = 0x100\n\tS_HANGUP                      = 0x200\n\tS_HIPRI                       = 0x2\n\tS_ICRYPTO                     = 0x80000\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFIFO                       = 0x1000\n\tS_IFJOURNAL                   = 0x10000\n\tS_IFLNK                       = 0xa000\n\tS_IFMPX                       = 0x2200\n\tS_IFMT                        = 0xf000\n\tS_IFPDIR                      = 0x4000000\n\tS_IFPSDIR                     = 0x8000000\n\tS_IFPSSDIR                    = 0xc000000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_IFSYSEA                     = 0x30000000\n\tS_INPUT                       = 0x1\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_ITCB                        = 0x1000000\n\tS_ITP                         = 0x800000\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXACL                       = 0x2000000\n\tS_IXATTR                      = 0x40000\n\tS_IXGRP                       = 0x8\n\tS_IXINTERFACE                 = 0x100000\n\tS_IXMOD                       = 0x40000000\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tS_MSG                         = 0x8\n\tS_OUTPUT                      = 0x4\n\tS_RDBAND                      = 0x20\n\tS_RDNORM                      = 0x10\n\tS_RESERVED1                   = 0x20000\n\tS_RESERVED2                   = 0x200000\n\tS_RESERVED3                   = 0x400000\n\tS_RESERVED4                   = 0x80000000\n\tS_RESFMT1                     = 0x10000000\n\tS_RESFMT10                    = 0x34000000\n\tS_RESFMT11                    = 0x38000000\n\tS_RESFMT12                    = 0x3c000000\n\tS_RESFMT2                     = 0x14000000\n\tS_RESFMT3                     = 0x18000000\n\tS_RESFMT4                     = 0x1c000000\n\tS_RESFMT5                     = 0x20000000\n\tS_RESFMT6                     = 0x24000000\n\tS_RESFMT7                     = 0x28000000\n\tS_RESFMT8                     = 0x2c000000\n\tS_WRBAND                      = 0x80\n\tS_WRNORM                      = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x400\n\tTAB2                          = 0x800\n\tTAB3                          = 0xc00\n\tTABDLY                        = 0xc00\n\tTCFLSH                        = 0x540c\n\tTCGETA                        = 0x5405\n\tTCGETS                        = 0x5401\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800\n\tTCP_ACLADD                    = 0x23\n\tTCP_ACLBIND                   = 0x26\n\tTCP_ACLCLEAR                  = 0x22\n\tTCP_ACLDEL                    = 0x24\n\tTCP_ACLDENY                   = 0x8\n\tTCP_ACLFLUSH                  = 0x21\n\tTCP_ACLGID                    = 0x1\n\tTCP_ACLLS                     = 0x25\n\tTCP_ACLSUBNET                 = 0x4\n\tTCP_ACLUID                    = 0x2\n\tTCP_CWND_DF                   = 0x16\n\tTCP_CWND_IF                   = 0x15\n\tTCP_DELAY_ACK_FIN             = 0x2\n\tTCP_DELAY_ACK_SYN             = 0x1\n\tTCP_FASTNAME                  = 0x101080a\n\tTCP_KEEPCNT                   = 0x13\n\tTCP_KEEPIDLE                  = 0x11\n\tTCP_KEEPINTVL                 = 0x12\n\tTCP_LSPRIV                    = 0x29\n\tTCP_LUID                      = 0x20\n\tTCP_MAXBURST                  = 0x8\n\tTCP_MAXDF                     = 0x64\n\tTCP_MAXIF                     = 0x64\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MAXWIN                    = 0xffff\n\tTCP_MAXWINDOWSCALE            = 0xe\n\tTCP_MAX_SACK                  = 0x4\n\tTCP_MSS                       = 0x5b4\n\tTCP_NODELAY                   = 0x1\n\tTCP_NODELAYACK                = 0x14\n\tTCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19\n\tTCP_NOREDUCE_CWND_IN_FRXMT    = 0x18\n\tTCP_NOTENTER_SSTART           = 0x17\n\tTCP_OPT                       = 0x19\n\tTCP_RFC1323                   = 0x4\n\tTCP_SETPRIV                   = 0x27\n\tTCP_STDURG                    = 0x10\n\tTCP_TIMESTAMP_OPTLEN          = 0xc\n\tTCP_UNSETPRIV                 = 0x28\n\tTCSAFLUSH                     = 0x2\n\tTCSBRK                        = 0x5409\n\tTCSETA                        = 0x5406\n\tTCSETAF                       = 0x5408\n\tTCSETAW                       = 0x5407\n\tTCSETS                        = 0x5402\n\tTCSETSF                       = 0x5404\n\tTCSETSW                       = 0x5403\n\tTCXONC                        = 0x540b\n\tTIMER_ABSTIME                 = 0x3e7\n\tTIMER_MAX                     = 0x20\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x2000747a\n\tTIOCCDTR                      = 0x20007478\n\tTIOCCONS                      = 0xffffffff80047462\n\tTIOCEXCL                      = 0x2000740d\n\tTIOCFLUSH                     = 0xffffffff80047410\n\tTIOCGETC                      = 0x40067412\n\tTIOCGETD                      = 0x40047400\n\tTIOCGETP                      = 0x40067408\n\tTIOCGLTC                      = 0x40067474\n\tTIOCGPGRP                     = 0x40047477\n\tTIOCGSID                      = 0x40047448\n\tTIOCGSIZE                     = 0x40087468\n\tTIOCGWINSZ                    = 0x40087468\n\tTIOCHPCL                      = 0x20007402\n\tTIOCLBIC                      = 0xffffffff8004747e\n\tTIOCLBIS                      = 0xffffffff8004747f\n\tTIOCLGET                      = 0x4004747c\n\tTIOCLSET                      = 0xffffffff8004747d\n\tTIOCMBIC                      = 0xffffffff8004746b\n\tTIOCMBIS                      = 0xffffffff8004746c\n\tTIOCMGET                      = 0x4004746a\n\tTIOCMIWAIT                    = 0xffffffff80047464\n\tTIOCMODG                      = 0x40047403\n\tTIOCMODS                      = 0xffffffff80047404\n\tTIOCMSET                      = 0xffffffff8004746d\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x20007471\n\tTIOCNXCL                      = 0x2000740e\n\tTIOCOUTQ                      = 0x40047473\n\tTIOCPKT                       = 0xffffffff80047470\n\tTIOCPKT_DATA                  = 0x0\n\tTIOCPKT_DOSTOP                = 0x20\n\tTIOCPKT_FLUSHREAD             = 0x1\n\tTIOCPKT_FLUSHWRITE            = 0x2\n\tTIOCPKT_NOSTOP                = 0x10\n\tTIOCPKT_START                 = 0x8\n\tTIOCPKT_STOP                  = 0x4\n\tTIOCREMOTE                    = 0xffffffff80047469\n\tTIOCSBRK                      = 0x2000747b\n\tTIOCSDTR                      = 0x20007479\n\tTIOCSETC                      = 0xffffffff80067411\n\tTIOCSETD                      = 0xffffffff80047401\n\tTIOCSETN                      = 0xffffffff8006740a\n\tTIOCSETP                      = 0xffffffff80067409\n\tTIOCSLTC                      = 0xffffffff80067475\n\tTIOCSPGRP                     = 0xffffffff80047476\n\tTIOCSSIZE                     = 0xffffffff80087467\n\tTIOCSTART                     = 0x2000746e\n\tTIOCSTI                       = 0xffffffff80017472\n\tTIOCSTOP                      = 0x2000746f\n\tTIOCSWINSZ                    = 0xffffffff80087467\n\tTIOCUCNTL                     = 0xffffffff80047466\n\tTOSTOP                        = 0x10000\n\tUTIME_NOW                     = -0x2\n\tUTIME_OMIT                    = -0x3\n\tVDISCRD                       = 0xc\n\tVDSUSP                        = 0xa\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xe\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xb\n\tVSTART                        = 0x7\n\tVSTOP                         = 0x8\n\tVSTRT                         = 0x7\n\tVSUSP                         = 0x9\n\tVT0                           = 0x0\n\tVT1                           = 0x8000\n\tVTDELAY                       = 0x2000\n\tVTDLY                         = 0x8000\n\tVTIME                         = 0x5\n\tVWERSE                        = 0xd\n\tWPARSTART                     = 0x1\n\tWPARSTOP                      = 0x2\n\tWPARTTYNAME                   = \"Global\"\n\tXCASE                         = 0x4\n\tXTABS                         = 0xc00\n\t_FDATAFLUSH                   = 0x2000000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x43)\n\tEADDRNOTAVAIL   = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x42)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x38)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x78)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x75)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECLONEME        = syscall.Errno(0x52)\n\tECONNABORTED    = syscall.Errno(0x48)\n\tECONNREFUSED    = syscall.Errno(0x4f)\n\tECONNRESET      = syscall.Errno(0x49)\n\tECORRUPT        = syscall.Errno(0x59)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDESTADDREQ     = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x3a)\n\tEDIST           = syscall.Errno(0x35)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x58)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFORMAT         = syscall.Errno(0x30)\n\tEHOSTDOWN       = syscall.Errno(0x50)\n\tEHOSTUNREACH    = syscall.Errno(0x51)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x74)\n\tEINPROGRESS     = syscall.Errno(0x37)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x4b)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x55)\n\tEMEDIA          = syscall.Errno(0x6e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x3b)\n\tEMULTIHOP       = syscall.Errno(0x7d)\n\tENAMETOOLONG    = syscall.Errno(0x56)\n\tENETDOWN        = syscall.Errno(0x45)\n\tENETRESET       = syscall.Errno(0x47)\n\tENETUNREACH     = syscall.Errno(0x46)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x70)\n\tENOBUFS         = syscall.Errno(0x4a)\n\tENOCONNECT      = syscall.Errno(0x32)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x7a)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x31)\n\tENOLINK         = syscall.Errno(0x7e)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENOPROTOOPT     = syscall.Errno(0x3d)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x76)\n\tENOSTR          = syscall.Errno(0x7b)\n\tENOSYS          = syscall.Errno(0x6d)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x4c)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x11)\n\tENOTREADY       = syscall.Errno(0x2e)\n\tENOTRECOVERABLE = syscall.Errno(0x5e)\n\tENOTRUST        = syscall.Errno(0x72)\n\tENOTSOCK        = syscall.Errno(0x39)\n\tENOTSUP         = syscall.Errno(0x7c)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x40)\n\tEOVERFLOW       = syscall.Errno(0x7f)\n\tEOWNERDEAD      = syscall.Errno(0x5f)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x41)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x53)\n\tEPROTO          = syscall.Errno(0x79)\n\tEPROTONOSUPPORT = syscall.Errno(0x3e)\n\tEPROTOTYPE      = syscall.Errno(0x3c)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x5d)\n\tERESTART        = syscall.Errno(0x52)\n\tEROFS           = syscall.Errno(0x1e)\n\tESAD            = syscall.Errno(0x71)\n\tESHUTDOWN       = syscall.Errno(0x4d)\n\tESOCKTNOSUPPORT = syscall.Errno(0x3f)\n\tESOFT           = syscall.Errno(0x6f)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x34)\n\tESYSERROR       = syscall.Errno(0x5a)\n\tETIME           = syscall.Errno(0x77)\n\tETIMEDOUT       = syscall.Errno(0x4e)\n\tETOOMANYREFS    = syscall.Errno(0x73)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x54)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEWRPROTECT      = syscall.Errno(0x2f)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGAIO      = syscall.Signal(0x17)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGALRM1    = syscall.Signal(0x26)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCAPI     = syscall.Signal(0x31)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCLD      = syscall.Signal(0x14)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGCPUFAIL  = syscall.Signal(0x3b)\n\tSIGDANGER   = syscall.Signal(0x21)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGGRANT    = syscall.Signal(0x3c)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOINT    = syscall.Signal(0x10)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKAP      = syscall.Signal(0x3c)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGLOST     = syscall.Signal(0x6)\n\tSIGMAX      = syscall.Signal(0xff)\n\tSIGMAX32    = syscall.Signal(0x3f)\n\tSIGMIGRATE  = syscall.Signal(0x23)\n\tSIGMSG      = syscall.Signal(0x1b)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPOLL     = syscall.Signal(0x17)\n\tSIGPRE      = syscall.Signal(0x24)\n\tSIGPROF     = syscall.Signal(0x20)\n\tSIGPTY      = syscall.Signal(0x17)\n\tSIGPWR      = syscall.Signal(0x1d)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGRECONFIG = syscall.Signal(0x3a)\n\tSIGRETRACT  = syscall.Signal(0x3d)\n\tSIGSAK      = syscall.Signal(0x3f)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSOUND    = syscall.Signal(0x3e)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGSYSERROR = syscall.Signal(0x30)\n\tSIGTALRM    = syscall.Signal(0x26)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVIRT     = syscall.Signal(0x25)\n\tSIGVTALRM   = syscall.Signal(0x22)\n\tSIGWAITING  = syscall.Signal(0x27)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"ENOTEMPTY\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"not a typewriter\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock condition if locked\"},\n\t{46, \"ENOTREADY\", \"device not ready\"},\n\t{47, \"EWRPROTECT\", \"write-protected media\"},\n\t{48, \"EFORMAT\", \"unformatted or incompatible media\"},\n\t{49, \"ENOLCK\", \"no locks available\"},\n\t{50, \"ENOCONNECT\", \"cannot Establish Connection\"},\n\t{52, \"ESTALE\", \"missing file or filesystem\"},\n\t{53, \"EDIST\", \"requests blocked by Administrator\"},\n\t{55, \"EINPROGRESS\", \"operation now in progress\"},\n\t{56, \"EALREADY\", \"operation already in progress\"},\n\t{57, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{58, \"EDESTADDREQ\", \"destination address required\"},\n\t{59, \"EMSGSIZE\", \"message too long\"},\n\t{60, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{61, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{62, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{63, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{64, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{65, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{66, \"EAFNOSUPPORT\", \"addr family not supported by protocol\"},\n\t{67, \"EADDRINUSE\", \"address already in use\"},\n\t{68, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{69, \"ENETDOWN\", \"network is down\"},\n\t{70, \"ENETUNREACH\", \"network is unreachable\"},\n\t{71, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{72, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{73, \"ECONNRESET\", \"connection reset by peer\"},\n\t{74, \"ENOBUFS\", \"no buffer space available\"},\n\t{75, \"EISCONN\", \"socket is already connected\"},\n\t{76, \"ENOTCONN\", \"socket is not connected\"},\n\t{77, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{78, \"ETIMEDOUT\", \"connection timed out\"},\n\t{79, \"ECONNREFUSED\", \"connection refused\"},\n\t{80, \"EHOSTDOWN\", \"host is down\"},\n\t{81, \"EHOSTUNREACH\", \"no route to host\"},\n\t{82, \"ERESTART\", \"restart the system call\"},\n\t{83, \"EPROCLIM\", \"too many processes\"},\n\t{84, \"EUSERS\", \"too many users\"},\n\t{85, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{86, \"ENAMETOOLONG\", \"file name too long\"},\n\t{88, \"EDQUOT\", \"disk quota exceeded\"},\n\t{89, \"ECORRUPT\", \"invalid file system control data detected\"},\n\t{90, \"ESYSERROR\", \"for future use \"},\n\t{93, \"EREMOTE\", \"item is not local to host\"},\n\t{94, \"ENOTRECOVERABLE\", \"state not recoverable \"},\n\t{95, \"EOWNERDEAD\", \"previous owner died \"},\n\t{109, \"ENOSYS\", \"function not implemented\"},\n\t{110, \"EMEDIA\", \"media surface error\"},\n\t{111, \"ESOFT\", \"I/O completed, but needs relocation\"},\n\t{112, \"ENOATTR\", \"no attribute found\"},\n\t{113, \"ESAD\", \"security Authentication Denied\"},\n\t{114, \"ENOTRUST\", \"not a Trusted Program\"},\n\t{115, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{116, \"EILSEQ\", \"invalid wide character\"},\n\t{117, \"ECANCELED\", \"asynchronous I/O cancelled\"},\n\t{118, \"ENOSR\", \"out of STREAMS resources\"},\n\t{119, \"ETIME\", \"system call timed out\"},\n\t{120, \"EBADMSG\", \"next message has wrong type\"},\n\t{121, \"EPROTO\", \"error in protocol\"},\n\t{122, \"ENODATA\", \"no message on stream head read q\"},\n\t{123, \"ENOSTR\", \"fd not associated with a stream\"},\n\t{124, \"ENOTSUP\", \"unsupported attribute value\"},\n\t{125, \"EMULTIHOP\", \"multihop is not allowed\"},\n\t{126, \"ENOLINK\", \"the server link has been severed\"},\n\t{127, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"IOT/Abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible/complete\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{27, \"SIGMSG\", \"input device data\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGPWR\", \"power-failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"paging space low\"},\n\t{34, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{35, \"SIGMIGRATE\", \"signal 35\"},\n\t{36, \"SIGPRE\", \"signal 36\"},\n\t{37, \"SIGVIRT\", \"signal 37\"},\n\t{38, \"SIGTALRM\", \"signal 38\"},\n\t{39, \"SIGWAITING\", \"signal 39\"},\n\t{48, \"SIGSYSERROR\", \"signal 48\"},\n\t{49, \"SIGCAPI\", \"signal 49\"},\n\t{58, \"SIGRECONFIG\", \"signal 58\"},\n\t{59, \"SIGCPUFAIL\", \"CPU Failure Predicted\"},\n\t{60, \"SIGGRANT\", \"monitor mode granted\"},\n\t{61, \"SIGRETRACT\", \"monitor mode retracted\"},\n\t{62, \"SIGSOUND\", \"sound completed\"},\n\t{63, \"SIGMAX32\", \"secure attention\"},\n\t{255, \"SIGMAX\", \"signal 255\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                            = 0x10\n\tAF_CCITT                                = 0xa\n\tAF_CHAOS                                = 0x5\n\tAF_CNT                                  = 0x15\n\tAF_COIP                                 = 0x14\n\tAF_DATAKIT                              = 0x9\n\tAF_DECnet                               = 0xc\n\tAF_DLI                                  = 0xd\n\tAF_E164                                 = 0x1c\n\tAF_ECMA                                 = 0x8\n\tAF_HYLINK                               = 0xf\n\tAF_IEEE80211                            = 0x25\n\tAF_IMPLINK                              = 0x3\n\tAF_INET                                 = 0x2\n\tAF_INET6                                = 0x1e\n\tAF_IPX                                  = 0x17\n\tAF_ISDN                                 = 0x1c\n\tAF_ISO                                  = 0x7\n\tAF_LAT                                  = 0xe\n\tAF_LINK                                 = 0x12\n\tAF_LOCAL                                = 0x1\n\tAF_MAX                                  = 0x29\n\tAF_NATM                                 = 0x1f\n\tAF_NDRV                                 = 0x1b\n\tAF_NETBIOS                              = 0x21\n\tAF_NS                                   = 0x6\n\tAF_OSI                                  = 0x7\n\tAF_PPP                                  = 0x22\n\tAF_PUP                                  = 0x4\n\tAF_RESERVED_36                          = 0x24\n\tAF_ROUTE                                = 0x11\n\tAF_SIP                                  = 0x18\n\tAF_SNA                                  = 0xb\n\tAF_SYSTEM                               = 0x20\n\tAF_SYS_CONTROL                          = 0x2\n\tAF_UNIX                                 = 0x1\n\tAF_UNSPEC                               = 0x0\n\tAF_UTUN                                 = 0x26\n\tAF_VSOCK                                = 0x28\n\tALTWERASE                               = 0x200\n\tATTR_BIT_MAP_COUNT                      = 0x5\n\tATTR_CMN_ACCESSMASK                     = 0x20000\n\tATTR_CMN_ACCTIME                        = 0x1000\n\tATTR_CMN_ADDEDTIME                      = 0x10000000\n\tATTR_CMN_BKUPTIME                       = 0x2000\n\tATTR_CMN_CHGTIME                        = 0x800\n\tATTR_CMN_CRTIME                         = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS             = 0x40000000\n\tATTR_CMN_DEVID                          = 0x2\n\tATTR_CMN_DOCUMENT_ID                    = 0x100000\n\tATTR_CMN_ERROR                          = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY              = 0x400000\n\tATTR_CMN_FILEID                         = 0x2000000\n\tATTR_CMN_FLAGS                          = 0x40000\n\tATTR_CMN_FNDRINFO                       = 0x4000\n\tATTR_CMN_FSID                           = 0x4\n\tATTR_CMN_FULLPATH                       = 0x8000000\n\tATTR_CMN_GEN_COUNT                      = 0x80000\n\tATTR_CMN_GRPID                          = 0x10000\n\tATTR_CMN_GRPUUID                        = 0x1000000\n\tATTR_CMN_MODTIME                        = 0x400\n\tATTR_CMN_NAME                           = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT                 = 0x80000\n\tATTR_CMN_NAMEDATTRLIST                  = 0x100000\n\tATTR_CMN_OBJID                          = 0x20\n\tATTR_CMN_OBJPERMANENTID                 = 0x40\n\tATTR_CMN_OBJTAG                         = 0x10\n\tATTR_CMN_OBJTYPE                        = 0x8\n\tATTR_CMN_OWNERID                        = 0x8000\n\tATTR_CMN_PARENTID                       = 0x4000000\n\tATTR_CMN_PAROBJID                       = 0x80\n\tATTR_CMN_RETURNED_ATTRS                 = 0x80000000\n\tATTR_CMN_SCRIPT                         = 0x100\n\tATTR_CMN_SETMASK                        = 0x51c7ff00\n\tATTR_CMN_USERACCESS                     = 0x200000\n\tATTR_CMN_UUID                           = 0x800000\n\tATTR_CMN_VALIDMASK                      = 0xffffffff\n\tATTR_CMN_VOLSETMASK                     = 0x6700\n\tATTR_FILE_ALLOCSIZE                     = 0x4\n\tATTR_FILE_CLUMPSIZE                     = 0x10\n\tATTR_FILE_DATAALLOCSIZE                 = 0x400\n\tATTR_FILE_DATAEXTENTS                   = 0x800\n\tATTR_FILE_DATALENGTH                    = 0x200\n\tATTR_FILE_DEVTYPE                       = 0x20\n\tATTR_FILE_FILETYPE                      = 0x40\n\tATTR_FILE_FORKCOUNT                     = 0x80\n\tATTR_FILE_FORKLIST                      = 0x100\n\tATTR_FILE_IOBLOCKSIZE                   = 0x8\n\tATTR_FILE_LINKCOUNT                     = 0x1\n\tATTR_FILE_RSRCALLOCSIZE                 = 0x2000\n\tATTR_FILE_RSRCEXTENTS                   = 0x4000\n\tATTR_FILE_RSRCLENGTH                    = 0x1000\n\tATTR_FILE_SETMASK                       = 0x20\n\tATTR_FILE_TOTALSIZE                     = 0x2\n\tATTR_FILE_VALIDMASK                     = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP                = 0x40\n\tATTR_VOL_ATTRIBUTES                     = 0x40000000\n\tATTR_VOL_CAPABILITIES                   = 0x20000\n\tATTR_VOL_DIRCOUNT                       = 0x400\n\tATTR_VOL_ENCODINGSUSED                  = 0x10000\n\tATTR_VOL_FILECOUNT                      = 0x200\n\tATTR_VOL_FSTYPE                         = 0x1\n\tATTR_VOL_INFO                           = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE                    = 0x80\n\tATTR_VOL_MAXOBJCOUNT                    = 0x800\n\tATTR_VOL_MINALLOCATION                  = 0x20\n\tATTR_VOL_MOUNTEDDEVICE                  = 0x8000\n\tATTR_VOL_MOUNTFLAGS                     = 0x4000\n\tATTR_VOL_MOUNTPOINT                     = 0x1000\n\tATTR_VOL_NAME                           = 0x2000\n\tATTR_VOL_OBJCOUNT                       = 0x100\n\tATTR_VOL_QUOTA_SIZE                     = 0x10000000\n\tATTR_VOL_RESERVED_SIZE                  = 0x20000000\n\tATTR_VOL_SETMASK                        = 0x80002000\n\tATTR_VOL_SIGNATURE                      = 0x2\n\tATTR_VOL_SIZE                           = 0x4\n\tATTR_VOL_SPACEAVAIL                     = 0x10\n\tATTR_VOL_SPACEFREE                      = 0x8\n\tATTR_VOL_SPACEUSED                      = 0x800000\n\tATTR_VOL_UUID                           = 0x40000\n\tATTR_VOL_VALIDMASK                      = 0xf087ffff\n\tB0                                      = 0x0\n\tB110                                    = 0x6e\n\tB115200                                 = 0x1c200\n\tB1200                                   = 0x4b0\n\tB134                                    = 0x86\n\tB14400                                  = 0x3840\n\tB150                                    = 0x96\n\tB1800                                   = 0x708\n\tB19200                                  = 0x4b00\n\tB200                                    = 0xc8\n\tB230400                                 = 0x38400\n\tB2400                                   = 0x960\n\tB28800                                  = 0x7080\n\tB300                                    = 0x12c\n\tB38400                                  = 0x9600\n\tB4800                                   = 0x12c0\n\tB50                                     = 0x32\n\tB57600                                  = 0xe100\n\tB600                                    = 0x258\n\tB7200                                   = 0x1c20\n\tB75                                     = 0x4b\n\tB76800                                  = 0x12c00\n\tB9600                                   = 0x2580\n\tBIOCFLUSH                               = 0x20004268\n\tBIOCGBLEN                               = 0x40044266\n\tBIOCGDLT                                = 0x4004426a\n\tBIOCGDLTLIST                            = 0xc00c4279\n\tBIOCGETIF                               = 0x4020426b\n\tBIOCGHDRCMPLT                           = 0x40044274\n\tBIOCGRSIG                               = 0x40044272\n\tBIOCGRTIMEOUT                           = 0x4010426e\n\tBIOCGSEESENT                            = 0x40044276\n\tBIOCGSTATS                              = 0x4008426f\n\tBIOCIMMEDIATE                           = 0x80044270\n\tBIOCPROMISC                             = 0x20004269\n\tBIOCSBLEN                               = 0xc0044266\n\tBIOCSDLT                                = 0x80044278\n\tBIOCSETF                                = 0x80104267\n\tBIOCSETFNR                              = 0x8010427e\n\tBIOCSETIF                               = 0x8020426c\n\tBIOCSHDRCMPLT                           = 0x80044275\n\tBIOCSRSIG                               = 0x80044273\n\tBIOCSRTIMEOUT                           = 0x8010426d\n\tBIOCSSEESENT                            = 0x80044277\n\tBIOCVERSION                             = 0x40044271\n\tBPF_A                                   = 0x10\n\tBPF_ABS                                 = 0x20\n\tBPF_ADD                                 = 0x0\n\tBPF_ALIGNMENT                           = 0x4\n\tBPF_ALU                                 = 0x4\n\tBPF_AND                                 = 0x50\n\tBPF_B                                   = 0x10\n\tBPF_DIV                                 = 0x30\n\tBPF_H                                   = 0x8\n\tBPF_IMM                                 = 0x0\n\tBPF_IND                                 = 0x40\n\tBPF_JA                                  = 0x0\n\tBPF_JEQ                                 = 0x10\n\tBPF_JGE                                 = 0x30\n\tBPF_JGT                                 = 0x20\n\tBPF_JMP                                 = 0x5\n\tBPF_JSET                                = 0x40\n\tBPF_K                                   = 0x0\n\tBPF_LD                                  = 0x0\n\tBPF_LDX                                 = 0x1\n\tBPF_LEN                                 = 0x80\n\tBPF_LSH                                 = 0x60\n\tBPF_MAJOR_VERSION                       = 0x1\n\tBPF_MAXBUFSIZE                          = 0x80000\n\tBPF_MAXINSNS                            = 0x200\n\tBPF_MEM                                 = 0x60\n\tBPF_MEMWORDS                            = 0x10\n\tBPF_MINBUFSIZE                          = 0x20\n\tBPF_MINOR_VERSION                       = 0x1\n\tBPF_MISC                                = 0x7\n\tBPF_MSH                                 = 0xa0\n\tBPF_MUL                                 = 0x20\n\tBPF_NEG                                 = 0x80\n\tBPF_OR                                  = 0x40\n\tBPF_RELEASE                             = 0x30bb6\n\tBPF_RET                                 = 0x6\n\tBPF_RSH                                 = 0x70\n\tBPF_ST                                  = 0x2\n\tBPF_STX                                 = 0x3\n\tBPF_SUB                                 = 0x10\n\tBPF_TAX                                 = 0x0\n\tBPF_TXA                                 = 0x80\n\tBPF_W                                   = 0x0\n\tBPF_X                                   = 0x8\n\tBRKINT                                  = 0x2\n\tBS0                                     = 0x0\n\tBS1                                     = 0x8000\n\tBSDLY                                   = 0x8000\n\tCFLUSH                                  = 0xf\n\tCLOCAL                                  = 0x8000\n\tCLOCK_MONOTONIC                         = 0x6\n\tCLOCK_MONOTONIC_RAW                     = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX              = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID                = 0xc\n\tCLOCK_REALTIME                          = 0x0\n\tCLOCK_THREAD_CPUTIME_ID                 = 0x10\n\tCLOCK_UPTIME_RAW                        = 0x8\n\tCLOCK_UPTIME_RAW_APPROX                 = 0x9\n\tCLONE_NOFOLLOW                          = 0x1\n\tCLONE_NOOWNERCOPY                       = 0x2\n\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": "vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                            = 0x10\n\tAF_CCITT                                = 0xa\n\tAF_CHAOS                                = 0x5\n\tAF_CNT                                  = 0x15\n\tAF_COIP                                 = 0x14\n\tAF_DATAKIT                              = 0x9\n\tAF_DECnet                               = 0xc\n\tAF_DLI                                  = 0xd\n\tAF_E164                                 = 0x1c\n\tAF_ECMA                                 = 0x8\n\tAF_HYLINK                               = 0xf\n\tAF_IEEE80211                            = 0x25\n\tAF_IMPLINK                              = 0x3\n\tAF_INET                                 = 0x2\n\tAF_INET6                                = 0x1e\n\tAF_IPX                                  = 0x17\n\tAF_ISDN                                 = 0x1c\n\tAF_ISO                                  = 0x7\n\tAF_LAT                                  = 0xe\n\tAF_LINK                                 = 0x12\n\tAF_LOCAL                                = 0x1\n\tAF_MAX                                  = 0x29\n\tAF_NATM                                 = 0x1f\n\tAF_NDRV                                 = 0x1b\n\tAF_NETBIOS                              = 0x21\n\tAF_NS                                   = 0x6\n\tAF_OSI                                  = 0x7\n\tAF_PPP                                  = 0x22\n\tAF_PUP                                  = 0x4\n\tAF_RESERVED_36                          = 0x24\n\tAF_ROUTE                                = 0x11\n\tAF_SIP                                  = 0x18\n\tAF_SNA                                  = 0xb\n\tAF_SYSTEM                               = 0x20\n\tAF_SYS_CONTROL                          = 0x2\n\tAF_UNIX                                 = 0x1\n\tAF_UNSPEC                               = 0x0\n\tAF_UTUN                                 = 0x26\n\tAF_VSOCK                                = 0x28\n\tALTWERASE                               = 0x200\n\tATTR_BIT_MAP_COUNT                      = 0x5\n\tATTR_CMN_ACCESSMASK                     = 0x20000\n\tATTR_CMN_ACCTIME                        = 0x1000\n\tATTR_CMN_ADDEDTIME                      = 0x10000000\n\tATTR_CMN_BKUPTIME                       = 0x2000\n\tATTR_CMN_CHGTIME                        = 0x800\n\tATTR_CMN_CRTIME                         = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS             = 0x40000000\n\tATTR_CMN_DEVID                          = 0x2\n\tATTR_CMN_DOCUMENT_ID                    = 0x100000\n\tATTR_CMN_ERROR                          = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY              = 0x400000\n\tATTR_CMN_FILEID                         = 0x2000000\n\tATTR_CMN_FLAGS                          = 0x40000\n\tATTR_CMN_FNDRINFO                       = 0x4000\n\tATTR_CMN_FSID                           = 0x4\n\tATTR_CMN_FULLPATH                       = 0x8000000\n\tATTR_CMN_GEN_COUNT                      = 0x80000\n\tATTR_CMN_GRPID                          = 0x10000\n\tATTR_CMN_GRPUUID                        = 0x1000000\n\tATTR_CMN_MODTIME                        = 0x400\n\tATTR_CMN_NAME                           = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT                 = 0x80000\n\tATTR_CMN_NAMEDATTRLIST                  = 0x100000\n\tATTR_CMN_OBJID                          = 0x20\n\tATTR_CMN_OBJPERMANENTID                 = 0x40\n\tATTR_CMN_OBJTAG                         = 0x10\n\tATTR_CMN_OBJTYPE                        = 0x8\n\tATTR_CMN_OWNERID                        = 0x8000\n\tATTR_CMN_PARENTID                       = 0x4000000\n\tATTR_CMN_PAROBJID                       = 0x80\n\tATTR_CMN_RETURNED_ATTRS                 = 0x80000000\n\tATTR_CMN_SCRIPT                         = 0x100\n\tATTR_CMN_SETMASK                        = 0x51c7ff00\n\tATTR_CMN_USERACCESS                     = 0x200000\n\tATTR_CMN_UUID                           = 0x800000\n\tATTR_CMN_VALIDMASK                      = 0xffffffff\n\tATTR_CMN_VOLSETMASK                     = 0x6700\n\tATTR_FILE_ALLOCSIZE                     = 0x4\n\tATTR_FILE_CLUMPSIZE                     = 0x10\n\tATTR_FILE_DATAALLOCSIZE                 = 0x400\n\tATTR_FILE_DATAEXTENTS                   = 0x800\n\tATTR_FILE_DATALENGTH                    = 0x200\n\tATTR_FILE_DEVTYPE                       = 0x20\n\tATTR_FILE_FILETYPE                      = 0x40\n\tATTR_FILE_FORKCOUNT                     = 0x80\n\tATTR_FILE_FORKLIST                      = 0x100\n\tATTR_FILE_IOBLOCKSIZE                   = 0x8\n\tATTR_FILE_LINKCOUNT                     = 0x1\n\tATTR_FILE_RSRCALLOCSIZE                 = 0x2000\n\tATTR_FILE_RSRCEXTENTS                   = 0x4000\n\tATTR_FILE_RSRCLENGTH                    = 0x1000\n\tATTR_FILE_SETMASK                       = 0x20\n\tATTR_FILE_TOTALSIZE                     = 0x2\n\tATTR_FILE_VALIDMASK                     = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP                = 0x40\n\tATTR_VOL_ATTRIBUTES                     = 0x40000000\n\tATTR_VOL_CAPABILITIES                   = 0x20000\n\tATTR_VOL_DIRCOUNT                       = 0x400\n\tATTR_VOL_ENCODINGSUSED                  = 0x10000\n\tATTR_VOL_FILECOUNT                      = 0x200\n\tATTR_VOL_FSTYPE                         = 0x1\n\tATTR_VOL_INFO                           = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE                    = 0x80\n\tATTR_VOL_MAXOBJCOUNT                    = 0x800\n\tATTR_VOL_MINALLOCATION                  = 0x20\n\tATTR_VOL_MOUNTEDDEVICE                  = 0x8000\n\tATTR_VOL_MOUNTFLAGS                     = 0x4000\n\tATTR_VOL_MOUNTPOINT                     = 0x1000\n\tATTR_VOL_NAME                           = 0x2000\n\tATTR_VOL_OBJCOUNT                       = 0x100\n\tATTR_VOL_QUOTA_SIZE                     = 0x10000000\n\tATTR_VOL_RESERVED_SIZE                  = 0x20000000\n\tATTR_VOL_SETMASK                        = 0x80002000\n\tATTR_VOL_SIGNATURE                      = 0x2\n\tATTR_VOL_SIZE                           = 0x4\n\tATTR_VOL_SPACEAVAIL                     = 0x10\n\tATTR_VOL_SPACEFREE                      = 0x8\n\tATTR_VOL_SPACEUSED                      = 0x800000\n\tATTR_VOL_UUID                           = 0x40000\n\tATTR_VOL_VALIDMASK                      = 0xf087ffff\n\tB0                                      = 0x0\n\tB110                                    = 0x6e\n\tB115200                                 = 0x1c200\n\tB1200                                   = 0x4b0\n\tB134                                    = 0x86\n\tB14400                                  = 0x3840\n\tB150                                    = 0x96\n\tB1800                                   = 0x708\n\tB19200                                  = 0x4b00\n\tB200                                    = 0xc8\n\tB230400                                 = 0x38400\n\tB2400                                   = 0x960\n\tB28800                                  = 0x7080\n\tB300                                    = 0x12c\n\tB38400                                  = 0x9600\n\tB4800                                   = 0x12c0\n\tB50                                     = 0x32\n\tB57600                                  = 0xe100\n\tB600                                    = 0x258\n\tB7200                                   = 0x1c20\n\tB75                                     = 0x4b\n\tB76800                                  = 0x12c00\n\tB9600                                   = 0x2580\n\tBIOCFLUSH                               = 0x20004268\n\tBIOCGBLEN                               = 0x40044266\n\tBIOCGDLT                                = 0x4004426a\n\tBIOCGDLTLIST                            = 0xc00c4279\n\tBIOCGETIF                               = 0x4020426b\n\tBIOCGHDRCMPLT                           = 0x40044274\n\tBIOCGRSIG                               = 0x40044272\n\tBIOCGRTIMEOUT                           = 0x4010426e\n\tBIOCGSEESENT                            = 0x40044276\n\tBIOCGSTATS                              = 0x4008426f\n\tBIOCIMMEDIATE                           = 0x80044270\n\tBIOCPROMISC                             = 0x20004269\n\tBIOCSBLEN                               = 0xc0044266\n\tBIOCSDLT                                = 0x80044278\n\tBIOCSETF                                = 0x80104267\n\tBIOCSETFNR                              = 0x8010427e\n\tBIOCSETIF                               = 0x8020426c\n\tBIOCSHDRCMPLT                           = 0x80044275\n\tBIOCSRSIG                               = 0x80044273\n\tBIOCSRTIMEOUT                           = 0x8010426d\n\tBIOCSSEESENT                            = 0x80044277\n\tBIOCVERSION                             = 0x40044271\n\tBPF_A                                   = 0x10\n\tBPF_ABS                                 = 0x20\n\tBPF_ADD                                 = 0x0\n\tBPF_ALIGNMENT                           = 0x4\n\tBPF_ALU                                 = 0x4\n\tBPF_AND                                 = 0x50\n\tBPF_B                                   = 0x10\n\tBPF_DIV                                 = 0x30\n\tBPF_H                                   = 0x8\n\tBPF_IMM                                 = 0x0\n\tBPF_IND                                 = 0x40\n\tBPF_JA                                  = 0x0\n\tBPF_JEQ                                 = 0x10\n\tBPF_JGE                                 = 0x30\n\tBPF_JGT                                 = 0x20\n\tBPF_JMP                                 = 0x5\n\tBPF_JSET                                = 0x40\n\tBPF_K                                   = 0x0\n\tBPF_LD                                  = 0x0\n\tBPF_LDX                                 = 0x1\n\tBPF_LEN                                 = 0x80\n\tBPF_LSH                                 = 0x60\n\tBPF_MAJOR_VERSION                       = 0x1\n\tBPF_MAXBUFSIZE                          = 0x80000\n\tBPF_MAXINSNS                            = 0x200\n\tBPF_MEM                                 = 0x60\n\tBPF_MEMWORDS                            = 0x10\n\tBPF_MINBUFSIZE                          = 0x20\n\tBPF_MINOR_VERSION                       = 0x1\n\tBPF_MISC                                = 0x7\n\tBPF_MSH                                 = 0xa0\n\tBPF_MUL                                 = 0x20\n\tBPF_NEG                                 = 0x80\n\tBPF_OR                                  = 0x40\n\tBPF_RELEASE                             = 0x30bb6\n\tBPF_RET                                 = 0x6\n\tBPF_RSH                                 = 0x70\n\tBPF_ST                                  = 0x2\n\tBPF_STX                                 = 0x3\n\tBPF_SUB                                 = 0x10\n\tBPF_TAX                                 = 0x0\n\tBPF_TXA                                 = 0x80\n\tBPF_W                                   = 0x0\n\tBPF_X                                   = 0x8\n\tBRKINT                                  = 0x2\n\tBS0                                     = 0x0\n\tBS1                                     = 0x8000\n\tBSDLY                                   = 0x8000\n\tCFLUSH                                  = 0xf\n\tCLOCAL                                  = 0x8000\n\tCLOCK_MONOTONIC                         = 0x6\n\tCLOCK_MONOTONIC_RAW                     = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX              = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID                = 0xc\n\tCLOCK_REALTIME                          = 0x0\n\tCLOCK_THREAD_CPUTIME_ID                 = 0x10\n\tCLOCK_UPTIME_RAW                        = 0x8\n\tCLOCK_UPTIME_RAW_APPROX                 = 0x9\n\tCLONE_NOFOLLOW                          = 0x1\n\tCLONE_NOOWNERCOPY                       = 0x2\n\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": "vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ATM                            = 0x1e\n\tAF_BLUETOOTH                      = 0x21\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x23\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x1c\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x22\n\tAF_NATM                           = 0x1d\n\tAF_NETBIOS                        = 0x6\n\tAF_NETGRAPH                       = 0x20\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x18\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104279\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044272\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSEESENT                      = 0x40044276\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x2000427a\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044278\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x8010427b\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044273\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCSSEESENT                      = 0x80044277\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DEFAULTBUFSIZE                = 0x1000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x80000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MAX_CLONES                    = 0x80\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MOD                           = 0x90\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBPF_XOR                           = 0xa0\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_MONOTONIC                   = 0x4\n\tCLOCK_MONOTONIC_FAST              = 0xc\n\tCLOCK_MONOTONIC_PRECISE           = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID          = 0xf\n\tCLOCK_PROF                        = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_REALTIME_FAST               = 0xa\n\tCLOCK_REALTIME_PRECISE            = 0x9\n\tCLOCK_SECOND                      = 0xd\n\tCLOCK_THREAD_CPUTIME_ID           = 0xe\n\tCLOCK_UPTIME                      = 0x5\n\tCLOCK_UPTIME_FAST                 = 0x8\n\tCLOCK_UPTIME_PRECISE              = 0x7\n\tCLOCK_VIRTUAL                     = 0x1\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x30000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB            = 0xff\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_BLUETOOTH_LE_LL               = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR     = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR       = 0xfe\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CHDLC                         = 0x68\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DBUS                          = 0xe7\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_DVB_CI                        = 0xeb\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_EPON                          = 0x103\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HHDLC                         = 0x79\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NOFCS            = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_INFINIBAND                    = 0xf7\n\tDLT_IPFILTER                      = 0x74\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPMI_HPM_2                    = 0x104\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPOIB                         = 0xf2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_ISO_14443                     = 0x108\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_ATM_CEMIC             = 0xee\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL          = 0xea\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_SRX_E2E               = 0xe9\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_JUNIPER_VS                    = 0xe8\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MATCHING_MAX                  = 0x109\n\tDLT_MATCHING_MIN                  = 0x68\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPEG_2_TS                     = 0xf3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_MUX27010                      = 0xec\n\tDLT_NETANALYZER                   = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT       = 0xf1\n\tDLT_NETLINK                       = 0xfd\n\tDLT_NFC_LLCP                      = 0xf5\n\tDLT_NFLOG                         = 0xef\n\tDLT_NG40                          = 0xf4\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PKTAP                         = 0x102\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PROFIBUS_DL                   = 0x101\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RDS                           = 0x109\n\tDLT_REDBACK_SMARTEDGE             = 0x20\n\tDLT_RIO                           = 0x7c\n\tDLT_RTAC_SERIAL                   = 0xfa\n\tDLT_SCCP                          = 0x8e\n\tDLT_SCTP                          = 0xf8\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_STANAG_5066_D_PDU             = 0xed\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USB_FREEBSD                   = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDLT_WATTSTOPPER_DLM               = 0x107\n\tDLT_WIHART                        = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU           = 0xfc\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDLT_ZWAVE_R1_R2                   = 0x105\n\tDLT_ZWAVE_R3                      = 0x106\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DBF                            = 0xf\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_EXCEPT                     = -0x8\n\tEVFILT_FS                         = -0xa\n\tEVFILT_MARKER                     = 0xf\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0xa\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_USER                       = -0x9\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_HUP                            = 0x800\n\tEV_NODATA                         = 0x1000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTEXIT_LWP                       = 0x10000\n\tEXTEXIT_PROC                      = 0x0\n\tEXTEXIT_SETINT                    = 0x1\n\tEXTEXIT_SIMPLE                    = 0x0\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUP2FD                          = 0xa\n\tF_DUP2FD_CLOEXEC                  = 0x12\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0x11\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_ALTPHYS                       = 0x4000\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x318e72\n\tIFF_DEBUG                         = 0x4\n\tIFF_IDIRECT                       = 0x200000\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MONITOR                       = 0x40000\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NPOLLING                      = 0x100000\n\tIFF_OACTIVE                       = 0x400\n\tIFF_OACTIVE_COMPAT                = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_POLLING                       = 0x10000\n\tIFF_POLLING_COMPAT                = 0x10000\n\tIFF_PPROMISC                      = 0x20000\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_SMART                         = 0x20\n\tIFF_STATICARP                     = 0x80000\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xf3\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_MASK                   = 0xfffffffe\n\tIPPROTO_3PC                       = 0x22\n\tIPPROTO_ADFS                      = 0x44\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_AHIP                      = 0x3d\n\tIPPROTO_APES                      = 0x63\n\tIPPROTO_ARGUS                     = 0xd\n\tIPPROTO_AX25                      = 0x5d\n\tIPPROTO_BHA                       = 0x31\n\tIPPROTO_BLT                       = 0x1e\n\tIPPROTO_BRSATMON                  = 0x4c\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_CFTP                      = 0x3e\n\tIPPROTO_CHAOS                     = 0x10\n\tIPPROTO_CMTP                      = 0x26\n\tIPPROTO_CPHB                      = 0x49\n\tIPPROTO_CPNX                      = 0x48\n\tIPPROTO_DDP                       = 0x25\n\tIPPROTO_DGP                       = 0x56\n\tIPPROTO_DIVERT                    = 0xfe\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_EMCON                     = 0xe\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GMTP                      = 0x64\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HELLO                     = 0x3f\n\tIPPROTO_HMP                       = 0x14\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IDPR                      = 0x23\n\tIPPROTO_IDRP                      = 0x2d\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IGP                       = 0x55\n\tIPPROTO_IGRP                      = 0x58\n\tIPPROTO_IL                        = 0x28\n\tIPPROTO_INLSP                     = 0x34\n\tIPPROTO_INP                       = 0x20\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPCV                      = 0x47\n\tIPPROTO_IPEIP                     = 0x5e\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPPC                      = 0x43\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IRTP                      = 0x1c\n\tIPPROTO_KRYPTOLAN                 = 0x41\n\tIPPROTO_LARP                      = 0x5b\n\tIPPROTO_LEAF1                     = 0x19\n\tIPPROTO_LEAF2                     = 0x1a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MEAS                      = 0x13\n\tIPPROTO_MHRP                      = 0x30\n\tIPPROTO_MICP                      = 0x5f\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MTP                       = 0x5c\n\tIPPROTO_MUX                       = 0x12\n\tIPPROTO_ND                        = 0x4d\n\tIPPROTO_NHRP                      = 0x36\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_NSP                       = 0x1f\n\tIPPROTO_NVPII                     = 0xb\n\tIPPROTO_OSPFIGP                   = 0x59\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PGM                       = 0x71\n\tIPPROTO_PIGP                      = 0x9\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PRM                       = 0x15\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_PVP                       = 0x4b\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_RCCMON                    = 0xa\n\tIPPROTO_RDP                       = 0x1b\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_RVD                       = 0x42\n\tIPPROTO_SATEXPAK                  = 0x40\n\tIPPROTO_SATMON                    = 0x45\n\tIPPROTO_SCCSP                     = 0x60\n\tIPPROTO_SDRP                      = 0x2a\n\tIPPROTO_SEP                       = 0x21\n\tIPPROTO_SKIP                      = 0x39\n\tIPPROTO_SRPC                      = 0x5a\n\tIPPROTO_ST                        = 0x7\n\tIPPROTO_SVMTP                     = 0x52\n\tIPPROTO_SWIPE                     = 0x35\n\tIPPROTO_TCF                       = 0x57\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TLSP                      = 0x38\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_TPXX                      = 0x27\n\tIPPROTO_TRUNK1                    = 0x17\n\tIPPROTO_TRUNK2                    = 0x18\n\tIPPROTO_TTP                       = 0x54\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UNKNOWN                   = 0x102\n\tIPPROTO_VINES                     = 0x53\n\tIPPROTO_VISA                      = 0x46\n\tIPPROTO_VMTP                      = 0x51\n\tIPPROTO_WBEXPAK                   = 0x4f\n\tIPPROTO_WBMON                     = 0x4e\n\tIPPROTO_WSN                       = 0x4a\n\tIPPROTO_XNET                      = 0xf\n\tIPPROTO_XTP                       = 0x24\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_BINDV6ONLY                   = 0x1b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_FW_ADD                       = 0x1e\n\tIPV6_FW_DEL                       = 0x1f\n\tIPV6_FW_FLUSH                     = 0x20\n\tIPV6_FW_GET                       = 0x22\n\tIPV6_FW_ZERO                      = 0x21\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHLIM                      = 0x28\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MSFILTER                     = 0x4a\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PKTOPTIONS                   = 0x34\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_PREFER_TEMPADDR              = 0x3f\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_DUMMYNET_CONFIGURE             = 0x3c\n\tIP_DUMMYNET_DEL                   = 0x3d\n\tIP_DUMMYNET_FLUSH                 = 0x3e\n\tIP_DUMMYNET_GET                   = 0x40\n\tIP_FW_ADD                         = 0x32\n\tIP_FW_DEL                         = 0x33\n\tIP_FW_FLUSH                       = 0x34\n\tIP_FW_GET                         = 0x36\n\tIP_FW_RESETLOG                    = 0x37\n\tIP_FW_TBL_ADD                     = 0x2a\n\tIP_FW_TBL_CREATE                  = 0x28\n\tIP_FW_TBL_DEL                     = 0x2b\n\tIP_FW_TBL_DESTROY                 = 0x29\n\tIP_FW_TBL_EXPIRE                  = 0x2f\n\tIP_FW_TBL_FLUSH                   = 0x2c\n\tIP_FW_TBL_GET                     = 0x2d\n\tIP_FW_TBL_ZERO                    = 0x2e\n\tIP_FW_X                           = 0x31\n\tIP_FW_ZERO                        = 0x35\n\tIP_HDRINCL                        = 0x2\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x42\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_MULTICAST_VIF                  = 0xe\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x41\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RSVP_OFF                       = 0x10\n\tIP_RSVP_ON                        = 0xf\n\tIP_RSVP_VIF_OFF                   = 0x12\n\tIP_RSVP_VIF_ON                    = 0x11\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_AUTOSYNC                     = 0x7\n\tMADV_CONTROL_END                  = 0xb\n\tMADV_CONTROL_START                = 0xa\n\tMADV_CORE                         = 0x9\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x5\n\tMADV_INVAL                        = 0xa\n\tMADV_NOCORE                       = 0x8\n\tMADV_NORMAL                       = 0x0\n\tMADV_NOSYNC                       = 0x6\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SETMAP                       = 0xb\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_NOCORE                        = 0x20000\n\tMAP_NOEXTEND                      = 0x100\n\tMAP_NORESERVE                     = 0x40\n\tMAP_NOSYNC                        = 0x800\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_SIZEALIGN                     = 0x40000\n\tMAP_STACK                         = 0x400\n\tMAP_TRYFIXED                      = 0x10000\n\tMAP_VPAGETABLE                    = 0x2000\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_AUTOMOUNTED                   = 0x20\n\tMNT_CMDFLAGS                      = 0xf0000\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x20000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_IGNORE                        = 0x800000\n\tMNT_LAZY                          = 0x4\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x10000000\n\tMNT_NOCLUSTERR                    = 0x40000000\n\tMNT_NOCLUSTERW                    = 0x80000000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOSYMFOLLOW                   = 0x400000\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x200000\n\tMNT_SUIDDIR                       = 0x100000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_TRIM                          = 0x1000000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_USER                          = 0x8000\n\tMNT_VISFLAGMASK                   = 0xf1f0ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_CMSG_CLOEXEC                  = 0x1000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOF                           = 0x100\n\tMSG_EOR                           = 0x8\n\tMSG_FBLOCKING                     = 0x10000\n\tMSG_FMASK                         = 0xffff0000\n\tMSG_FNONBLOCKING                  = 0x20000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_SYNC                          = 0x800\n\tMSG_TRUNC                         = 0x10\n\tMSG_UNUSED09                      = 0x200\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x0\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_MAXID                      = 0x4\n\tNFDBITS                           = 0x40\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FFAND                        = 0x40000000\n\tNOTE_FFCOPY                       = 0xc0000000\n\tNOTE_FFCTRLMASK                   = 0xc0000000\n\tNOTE_FFLAGSMASK                   = 0xffffff\n\tNOTE_FFNOP                        = 0x0\n\tNOTE_FFOR                         = 0x80000000\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x2\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRIGGER                      = 0x1000000\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x20000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x10000\n\tO_DIRECTORY                       = 0x8000000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FAPPEND                         = 0x100000\n\tO_FASYNCWRITE                     = 0x800000\n\tO_FBLOCKING                       = 0x40000\n\tO_FMASK                           = 0xfc0000\n\tO_FNONBLOCKING                    = 0x80000\n\tO_FOFFSET                         = 0x200000\n\tO_FSYNC                           = 0x80\n\tO_FSYNCWRITE                      = 0x400000\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0xb\n\tRTAX_MPLS1                        = 0x8\n\tRTAX_MPLS2                        = 0x9\n\tRTAX_MPLS3                        = 0xa\n\tRTAX_NETMASK                      = 0x2\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_MPLS1                         = 0x100\n\tRTA_MPLS2                         = 0x200\n\tRTA_MPLS3                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPLSOPS                       = 0x1000000\n\tRTF_MULTICAST                     = 0x800000\n\tRTF_PINNED                        = 0x100000\n\tRTF_PRCLONING                     = 0x10000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x40000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_WASCLONED                     = 0x20000\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DELMADDR                      = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x12\n\tRTM_IFANNOUNCE                    = 0x11\n\tRTM_IFINFO                        = 0xe\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_NEWMADDR                      = 0xf\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x7\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_IWCAPSEGS                     = 0x400\n\tRTV_IWMAXSEGS                     = 0x200\n\tRTV_MSL                           = 0x100\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCALIFADDR                      = 0x8118691b\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDLIFADDR                      = 0x8118691d\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETSGCNT                      = 0xc0207210\n\tSIOCGETVIFCNT                     = 0xc028720f\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFALIAS                      = 0xc0406929\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCAP                        = 0xc020691f\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc0206926\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFINDEX                      = 0xc0206920\n\tSIOCGIFMEDIA                      = 0xc0306938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc0206933\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206948\n\tSIOCGIFPHYS                       = 0xc0206935\n\tSIOCGIFPOLLCPU                    = 0xc020697e\n\tSIOCGIFPSRCADDR                   = 0xc0206947\n\tSIOCGIFSTATUS                     = 0xc331693b\n\tSIOCGIFTSOLEN                     = 0xc0206980\n\tSIOCGLIFADDR                      = 0xc118691c\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPRIVATE_0                    = 0xc0206950\n\tSIOCGPRIVATE_1                    = 0xc0206951\n\tSIOCIFCREATE                      = 0xc020697a\n\tSIOCIFCREATE2                     = 0xc020697c\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFCAP                        = 0x8020691e\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020693c\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x80206934\n\tSIOCSIFNAME                       = 0x80206928\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSIFPHYS                       = 0x80206936\n\tSIOCSIFPOLLCPU                    = 0x8020697d\n\tSIOCSIFTSOLEN                     = 0x8020697f\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_MAXADDRLEN                   = 0xff\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_CPUHINT                        = 0x1030\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_RERROR                         = 0x2000\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDSPACE                       = 0x100a\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_TIMESTAMP                      = 0x400\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDB                            = 0x9000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTAB0                              = 0x0\n\tTAB3                              = 0x4\n\tTABDLY                            = 0x4\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCP_FASTKEEP                      = 0x80\n\tTCP_KEEPCNT                       = 0x400\n\tTCP_KEEPIDLE                      = 0x100\n\tTCP_KEEPINIT                      = 0x20\n\tTCP_KEEPINTVL                     = 0x200\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXHLEN                       = 0x3c\n\tTCP_MAXOLEN                       = 0x28\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MINMSS                        = 0x100\n\tTCP_MIN_WINSHIFT                  = 0x5\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOOPT                         = 0x8\n\tTCP_NOPUSH                        = 0x4\n\tTCP_SIGNATURE_ENABLE              = 0x10\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGDRAINWAIT                    = 0x40047456\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCISPTMASTER                    = 0x20007455\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGDTRWAIT                     = 0x4004745a\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x40047403\n\tTIOCMODS                          = 0x80047404\n\tTIOCMSDTRWAIT                     = 0x8004745b\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDRAINWAIT                    = 0x80047457\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCTIMESTAMP                     = 0x40107459\n\tTIOCUCNTL                         = 0x80047466\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x1\n\tUTIME_OMIT                        = -0x2\n\tVCHECKPT                          = 0x13\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVERASE2                           = 0x7\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_BCACHE_SIZE_MAX                = 0x0\n\tVM_SWZONE_SIZE_MAX                = 0x4000000000\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWCONTINUED                        = 0x4\n\tWCOREFLAG                         = 0x80\n\tWEXITED                           = 0x10\n\tWLINUXCLONE                       = 0x80000000\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x8\n\tWSTOPPED                          = 0x2\n\tWTRAPPED                          = 0x20\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEASYNC          = syscall.Errno(0x63)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x63)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEDIUM       = syscall.Errno(0x5d)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCKPT     = syscall.Signal(0x21)\n\tSIGCKPTEXIT = syscall.Signal(0x22)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINFO     = syscall.Signal(0x1d)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPROF     = syscall.Signal(0x1b)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTHR      = syscall.Signal(0x20)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVTALRM   = syscall.Signal(0x1a)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOMEDIUM\", \"no medium found\"},\n\t{99, \"EASYNC\", \"unknown error: 99\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread Scheduler\"},\n\t{33, \"SIGCKPT\", \"checkPoint\"},\n\t{34, \"SIGCKPTEXIT\", \"checkPointExit\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0084279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4004427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4008426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x400c4280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80084267\n\tBIOCSETFNR                     = 0x80084282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8008427b\n\tBIOCSETZBUF                    = 0x800c4281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8008426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x4\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc144648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x804c6490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc06c648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x20\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETFSBASE                   = 0x47\n\tPT_GETGSBASE                   = 0x49\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETXMMREGS                  = 0x40\n\tPT_GETXSTATE                   = 0x45\n\tPT_GETXSTATE_INFO              = 0x44\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETFSBASE                   = 0x48\n\tPT_SETGSBASE                   = 0x4a\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETXMMREGS                  = 0x41\n\tPT_SETXSTATE                   = 0x46\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80246987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80246989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc01c697b\n\tSIOCGETSGCNT                   = 0xc0147210\n\tSIOCGETVIFCNT                  = 0xc014720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc024698a\n\tSIOCGIFGROUP                   = 0xc0246988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0286938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc028698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc00c6978\n\tSIOCSDRVSPEC                   = 0x801c697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40087459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVM_BCACHE_SIZE_MAX             = 0x70e0000\n\tVM_SWZONE_SIZE_MAX             = 0x2280000\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80506490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETFSBASE                   = 0x47\n\tPT_GETGSBASE                   = 0x49\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETXSTATE                   = 0x45\n\tPT_GETXSTATE_INFO              = 0x44\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETFSBASE                   = 0x48\n\tPT_SETGSBASE                   = 0x4a\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETXSTATE                   = 0x46\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0084279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4004427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x400c4280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80084267\n\tBIOCSETFNR                     = 0x80084282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8008427b\n\tBIOCSETZBUF                    = 0x800c4281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x4\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x804c6490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc078648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x20\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETVFPREGS                  = 0x40\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETVFPREGS                  = 0x41\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80246987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80246989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc01c697b\n\tSIOCGETSGCNT                   = 0xc0147210\n\tSIOCGETVIFCNT                  = 0xc014720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc024698a\n\tSIOCGIFGROUP                   = 0xc0246988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0286938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc028698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc00c6978\n\tSIOCSDRVSPEC                   = 0x801c697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80506490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVM_BCACHE_SIZE_MAX             = 0x19000000\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_HYPERV                      = 0x2b\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2b\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB1000000                       = 0xf4240\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1500000                       = 0x16e360\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB2000000                       = 0x1e8480\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB2500000                       = 0x2625a0\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB3000000                       = 0x2dc6c0\n\tB3500000                       = 0x3567e0\n\tB38400                         = 0x9600\n\tB4000000                       = 0x3d0900\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB500000                        = 0x7a120\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_BOOTTIME                 = 0x5\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_COARSE         = 0xc\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_COARSE          = 0xa\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGKERNELDUMP                = 0xc0986492\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80986491\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCSKERNELDUMP_FREEBSD12      = 0x80506490\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEHE_DEAD_PRIORITY              = -0x1\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_NONE                        = -0xc8\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_ADD_SEALS                    = 0x13\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_GET_SEALS                    = 0x14\n\tF_ISUNIONSTACK                 = 0x15\n\tF_KINFO                        = 0x16\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SEAL_GROW                    = 0x4\n\tF_SEAL_SEAL                    = 0x1\n\tF_SEAL_SHRINK                  = 0x2\n\tF_SEAL_WRITE                   = 0x8\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f72\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_KNOWSEPOCH                 = 0x20\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_NETMASK_DEFAULT             = 0xffffff00\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_CREDS_PERSISTENT         = 0x3\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMFD_ALLOW_SEALING              = 0x2\n\tMFD_CLOEXEC                    = 0x1\n\tMFD_HUGETLB                    = 0x4\n\tMFD_HUGE_16GB                  = -0x78000000\n\tMFD_HUGE_16MB                  = 0x60000000\n\tMFD_HUGE_1GB                   = 0x78000000\n\tMFD_HUGE_1MB                   = 0x50000000\n\tMFD_HUGE_256MB                 = 0x70000000\n\tMFD_HUGE_2GB                   = 0x7c000000\n\tMFD_HUGE_2MB                   = 0x54000000\n\tMFD_HUGE_32MB                  = 0x64000000\n\tMFD_HUGE_512KB                 = 0x4c000000\n\tMFD_HUGE_512MB                 = 0x74000000\n\tMFD_HUGE_64KB                  = 0x40000000\n\tMFD_HUGE_8MB                   = 0x5c000000\n\tMFD_HUGE_MASK                  = 0xfc000000\n\tMFD_HUGE_SHIFT                 = 0x1a\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0x300d0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EMPTYDIR                   = 0x2000000000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_EXTLS                      = 0x4000000000\n\tMNT_EXTLSCERT                  = 0x8000000000\n\tMNT_EXTLSCERTUSER              = 0x10000000000\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOCOVER                    = 0x1000000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNET_RT_NHGRP                   = 0x7\n\tNET_RT_NHOP                    = 0x6\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_DSYNC                        = 0x1000000\n\tO_EMPTY_PATH                   = 0x2000000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_PATH                         = 0x400000\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_COREDUMP                    = 0x1d\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_DEFAULT_WEIGHT              = 0x1\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAX_WEIGHT                  = 0xffffff\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_CREDS2                     = 0x8\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDATA                    = 0x8020692c\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_INIT_RATE         = 0x458\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_USE_RACK_RR            = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DEFER_OPTIONS              = 0x470\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FAST_RSM_HACK              = 0x471\n\tTCP_FIN_IS_RST                 = 0x49\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_HDWR_RATE_CAP              = 0x46a\n\tTCP_HDWR_UP_ONLY               = 0x46c\n\tTCP_IDLE_REDUCE                = 0x46\n\tTCP_INFO                       = 0x20\n\tTCP_IWND_NB                    = 0x2b\n\tTCP_IWND_NSEG                  = 0x2c\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOGID_CNT                  = 0x2e\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_LOG_LIMIT                  = 0x4a\n\tTCP_LOG_TAG                    = 0x2f\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXPEAKRATE                = 0x45\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXUNACKTIME               = 0x44\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_NO_PRR                     = 0x462\n\tTCP_PACING_RATE_CAP            = 0x46b\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_PERF_INFO                  = 0x4e\n\tTCP_PROC_ACCOUNTING            = 0x4c\n\tTCP_RACK_ABC_VAL               = 0x46d\n\tTCP_RACK_CHEAT_NOT_CONF_RATE   = 0x459\n\tTCP_RACK_DO_DETECTION          = 0x449\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_FORCE_MSEG            = 0x45d\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_GP_INCREASE_CA        = 0x45a\n\tTCP_RACK_GP_INCREASE_REC       = 0x45c\n\tTCP_RACK_GP_INCREASE_SS        = 0x45b\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MBUF_QUEUE            = 0x41a\n\tTCP_RACK_MEASURE_CNT           = 0x46f\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_NONRXT_CFG_RATE       = 0x463\n\tTCP_RACK_NO_PUSH_AT_MAX        = 0x466\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_RATE_CA          = 0x45e\n\tTCP_RACK_PACE_RATE_REC         = 0x460\n\tTCP_RACK_PACE_RATE_SS          = 0x45f\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PACE_TO_FILL          = 0x467\n\tTCP_RACK_PACING_BETA           = 0x472\n\tTCP_RACK_PACING_BETA_ECN       = 0x473\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROFILE               = 0x469\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_RR_CONF               = 0x459\n\tTCP_RACK_TIMER_SLOP            = 0x474\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_REC_ABC_VAL                = 0x46e\n\tTCP_REMOTE_UDP_ENCAPS_PORT     = 0x47\n\tTCP_REUSPORT_LB_NUMA           = 0x402\n\tTCP_REUSPORT_LB_NUMA_CURDOM    = -0x1\n\tTCP_REUSPORT_LB_NUMA_NODOM     = -0x2\n\tTCP_RXTLS_ENABLE               = 0x29\n\tTCP_RXTLS_MODE                 = 0x2a\n\tTCP_SHARED_CWND_ALLOWED        = 0x4b\n\tTCP_SHARED_CWND_ENABLE         = 0x464\n\tTCP_SHARED_CWND_TIME_LIMIT     = 0x468\n\tTCP_STATS                      = 0x21\n\tTCP_TIMELY_DYN_ADJ             = 0x465\n\tTCP_TLS_MODE_IFNET             = 0x2\n\tTCP_TLS_MODE_NONE              = 0x0\n\tTCP_TLS_MODE_SW                = 0x1\n\tTCP_TLS_MODE_TOE               = 0x3\n\tTCP_TXTLS_ENABLE               = 0x27\n\tTCP_TXTLS_MODE                 = 0x28\n\tTCP_USER_LOG                   = 0x30\n\tTCP_USE_CMP_ACKS               = 0x4d\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                                  = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                            = 0xadf5\n\tAFFS_SUPER_MAGIC                            = 0xadff\n\tAFS_FS_MAGIC                                = 0x6b414653\n\tAFS_SUPER_MAGIC                             = 0x5346414f\n\tAF_ALG                                      = 0x26\n\tAF_APPLETALK                                = 0x5\n\tAF_ASH                                      = 0x12\n\tAF_ATMPVC                                   = 0x8\n\tAF_ATMSVC                                   = 0x14\n\tAF_AX25                                     = 0x3\n\tAF_BLUETOOTH                                = 0x1f\n\tAF_BRIDGE                                   = 0x7\n\tAF_CAIF                                     = 0x25\n\tAF_CAN                                      = 0x1d\n\tAF_DECnet                                   = 0xc\n\tAF_ECONET                                   = 0x13\n\tAF_FILE                                     = 0x1\n\tAF_IB                                       = 0x1b\n\tAF_IEEE802154                               = 0x24\n\tAF_INET                                     = 0x2\n\tAF_INET6                                    = 0xa\n\tAF_IPX                                      = 0x4\n\tAF_IRDA                                     = 0x17\n\tAF_ISDN                                     = 0x22\n\tAF_IUCV                                     = 0x20\n\tAF_KCM                                      = 0x29\n\tAF_KEY                                      = 0xf\n\tAF_LLC                                      = 0x1a\n\tAF_LOCAL                                    = 0x1\n\tAF_MAX                                      = 0x2e\n\tAF_MCTP                                     = 0x2d\n\tAF_MPLS                                     = 0x1c\n\tAF_NETBEUI                                  = 0xd\n\tAF_NETLINK                                  = 0x10\n\tAF_NETROM                                   = 0x6\n\tAF_NFC                                      = 0x27\n\tAF_PACKET                                   = 0x11\n\tAF_PHONET                                   = 0x23\n\tAF_PPPOX                                    = 0x18\n\tAF_QIPCRTR                                  = 0x2a\n\tAF_RDS                                      = 0x15\n\tAF_ROSE                                     = 0xb\n\tAF_ROUTE                                    = 0x10\n\tAF_RXRPC                                    = 0x21\n\tAF_SECURITY                                 = 0xe\n\tAF_SMC                                      = 0x2b\n\tAF_SNA                                      = 0x16\n\tAF_TIPC                                     = 0x1e\n\tAF_UNIX                                     = 0x1\n\tAF_UNSPEC                                   = 0x0\n\tAF_VSOCK                                    = 0x28\n\tAF_WANPIPE                                  = 0x19\n\tAF_X25                                      = 0x9\n\tAF_XDP                                      = 0x2c\n\tALG_OP_DECRYPT                              = 0x0\n\tALG_OP_ENCRYPT                              = 0x1\n\tALG_SET_AEAD_ASSOCLEN                       = 0x4\n\tALG_SET_AEAD_AUTHSIZE                       = 0x5\n\tALG_SET_DRBG_ENTROPY                        = 0x6\n\tALG_SET_IV                                  = 0x2\n\tALG_SET_KEY                                 = 0x1\n\tALG_SET_KEY_BY_KEY_SERIAL                   = 0x7\n\tALG_SET_OP                                  = 0x3\n\tANON_INODE_FS_MAGIC                         = 0x9041934\n\tARPHRD_6LOWPAN                              = 0x339\n\tARPHRD_ADAPT                                = 0x108\n\tARPHRD_APPLETLK                             = 0x8\n\tARPHRD_ARCNET                               = 0x7\n\tARPHRD_ASH                                  = 0x30d\n\tARPHRD_ATM                                  = 0x13\n\tARPHRD_AX25                                 = 0x3\n\tARPHRD_BIF                                  = 0x307\n\tARPHRD_CAIF                                 = 0x336\n\tARPHRD_CAN                                  = 0x118\n\tARPHRD_CHAOS                                = 0x5\n\tARPHRD_CISCO                                = 0x201\n\tARPHRD_CSLIP                                = 0x101\n\tARPHRD_CSLIP6                               = 0x103\n\tARPHRD_DDCMP                                = 0x205\n\tARPHRD_DLCI                                 = 0xf\n\tARPHRD_ECONET                               = 0x30e\n\tARPHRD_EETHER                               = 0x2\n\tARPHRD_ETHER                                = 0x1\n\tARPHRD_EUI64                                = 0x1b\n\tARPHRD_FCAL                                 = 0x311\n\tARPHRD_FCFABRIC                             = 0x313\n\tARPHRD_FCPL                                 = 0x312\n\tARPHRD_FCPP                                 = 0x310\n\tARPHRD_FDDI                                 = 0x306\n\tARPHRD_FRAD                                 = 0x302\n\tARPHRD_HDLC                                 = 0x201\n\tARPHRD_HIPPI                                = 0x30c\n\tARPHRD_HWX25                                = 0x110\n\tARPHRD_IEEE1394                             = 0x18\n\tARPHRD_IEEE802                              = 0x6\n\tARPHRD_IEEE80211                            = 0x321\n\tARPHRD_IEEE80211_PRISM                      = 0x322\n\tARPHRD_IEEE80211_RADIOTAP                   = 0x323\n\tARPHRD_IEEE802154                           = 0x324\n\tARPHRD_IEEE802154_MONITOR                   = 0x325\n\tARPHRD_IEEE802_TR                           = 0x320\n\tARPHRD_INFINIBAND                           = 0x20\n\tARPHRD_IP6GRE                               = 0x337\n\tARPHRD_IPDDP                                = 0x309\n\tARPHRD_IPGRE                                = 0x30a\n\tARPHRD_IRDA                                 = 0x30f\n\tARPHRD_LAPB                                 = 0x204\n\tARPHRD_LOCALTLK                             = 0x305\n\tARPHRD_LOOPBACK                             = 0x304\n\tARPHRD_MCTP                                 = 0x122\n\tARPHRD_METRICOM                             = 0x17\n\tARPHRD_NETLINK                              = 0x338\n\tARPHRD_NETROM                               = 0x0\n\tARPHRD_NONE                                 = 0xfffe\n\tARPHRD_PHONET                               = 0x334\n\tARPHRD_PHONET_PIPE                          = 0x335\n\tARPHRD_PIMREG                               = 0x30b\n\tARPHRD_PPP                                  = 0x200\n\tARPHRD_PRONET                               = 0x4\n\tARPHRD_RAWHDLC                              = 0x206\n\tARPHRD_RAWIP                                = 0x207\n\tARPHRD_ROSE                                 = 0x10e\n\tARPHRD_RSRVD                                = 0x104\n\tARPHRD_SIT                                  = 0x308\n\tARPHRD_SKIP                                 = 0x303\n\tARPHRD_SLIP                                 = 0x100\n\tARPHRD_SLIP6                                = 0x102\n\tARPHRD_TUNNEL                               = 0x300\n\tARPHRD_TUNNEL6                              = 0x301\n\tARPHRD_VOID                                 = 0xffff\n\tARPHRD_VSOCKMON                             = 0x33a\n\tARPHRD_X25                                  = 0x10f\n\tAUDIT_ADD                                   = 0x3eb\n\tAUDIT_ADD_RULE                              = 0x3f3\n\tAUDIT_ALWAYS                                = 0x2\n\tAUDIT_ANOM_ABEND                            = 0x6a5\n\tAUDIT_ANOM_CREAT                            = 0x6a7\n\tAUDIT_ANOM_LINK                             = 0x6a6\n\tAUDIT_ANOM_PROMISCUOUS                      = 0x6a4\n\tAUDIT_ARCH                                  = 0xb\n\tAUDIT_ARCH_AARCH64                          = 0xc00000b7\n\tAUDIT_ARCH_ALPHA                            = 0xc0009026\n\tAUDIT_ARCH_ARCOMPACT                        = 0x4000005d\n\tAUDIT_ARCH_ARCOMPACTBE                      = 0x5d\n\tAUDIT_ARCH_ARCV2                            = 0x400000c3\n\tAUDIT_ARCH_ARCV2BE                          = 0xc3\n\tAUDIT_ARCH_ARM                              = 0x40000028\n\tAUDIT_ARCH_ARMEB                            = 0x28\n\tAUDIT_ARCH_C6X                              = 0x4000008c\n\tAUDIT_ARCH_C6XBE                            = 0x8c\n\tAUDIT_ARCH_CRIS                             = 0x4000004c\n\tAUDIT_ARCH_CSKY                             = 0x400000fc\n\tAUDIT_ARCH_FRV                              = 0x5441\n\tAUDIT_ARCH_H8300                            = 0x2e\n\tAUDIT_ARCH_HEXAGON                          = 0xa4\n\tAUDIT_ARCH_I386                             = 0x40000003\n\tAUDIT_ARCH_IA64                             = 0xc0000032\n\tAUDIT_ARCH_LOONGARCH32                      = 0x40000102\n\tAUDIT_ARCH_LOONGARCH64                      = 0xc0000102\n\tAUDIT_ARCH_M32R                             = 0x58\n\tAUDIT_ARCH_M68K                             = 0x4\n\tAUDIT_ARCH_MICROBLAZE                       = 0xbd\n\tAUDIT_ARCH_MIPS                             = 0x8\n\tAUDIT_ARCH_MIPS64                           = 0x80000008\n\tAUDIT_ARCH_MIPS64N32                        = 0xa0000008\n\tAUDIT_ARCH_MIPSEL                           = 0x40000008\n\tAUDIT_ARCH_MIPSEL64                         = 0xc0000008\n\tAUDIT_ARCH_MIPSEL64N32                      = 0xe0000008\n\tAUDIT_ARCH_NDS32                            = 0x400000a7\n\tAUDIT_ARCH_NDS32BE                          = 0xa7\n\tAUDIT_ARCH_NIOS2                            = 0x40000071\n\tAUDIT_ARCH_OPENRISC                         = 0x5c\n\tAUDIT_ARCH_PARISC                           = 0xf\n\tAUDIT_ARCH_PARISC64                         = 0x8000000f\n\tAUDIT_ARCH_PPC                              = 0x14\n\tAUDIT_ARCH_PPC64                            = 0x80000015\n\tAUDIT_ARCH_PPC64LE                          = 0xc0000015\n\tAUDIT_ARCH_RISCV32                          = 0x400000f3\n\tAUDIT_ARCH_RISCV64                          = 0xc00000f3\n\tAUDIT_ARCH_S390                             = 0x16\n\tAUDIT_ARCH_S390X                            = 0x80000016\n\tAUDIT_ARCH_SH                               = 0x2a\n\tAUDIT_ARCH_SH64                             = 0x8000002a\n\tAUDIT_ARCH_SHEL                             = 0x4000002a\n\tAUDIT_ARCH_SHEL64                           = 0xc000002a\n\tAUDIT_ARCH_SPARC                            = 0x2\n\tAUDIT_ARCH_SPARC64                          = 0x8000002b\n\tAUDIT_ARCH_TILEGX                           = 0xc00000bf\n\tAUDIT_ARCH_TILEGX32                         = 0x400000bf\n\tAUDIT_ARCH_TILEPRO                          = 0x400000bc\n\tAUDIT_ARCH_UNICORE                          = 0x4000006e\n\tAUDIT_ARCH_X86_64                           = 0xc000003e\n\tAUDIT_ARCH_XTENSA                           = 0x5e\n\tAUDIT_ARG0                                  = 0xc8\n\tAUDIT_ARG1                                  = 0xc9\n\tAUDIT_ARG2                                  = 0xca\n\tAUDIT_ARG3                                  = 0xcb\n\tAUDIT_AVC                                   = 0x578\n\tAUDIT_AVC_PATH                              = 0x57a\n\tAUDIT_BITMASK_SIZE                          = 0x40\n\tAUDIT_BIT_MASK                              = 0x8000000\n\tAUDIT_BIT_TEST                              = 0x48000000\n\tAUDIT_BPF                                   = 0x536\n\tAUDIT_BPRM_FCAPS                            = 0x529\n\tAUDIT_CAPSET                                = 0x52a\n\tAUDIT_CLASS_CHATTR                          = 0x2\n\tAUDIT_CLASS_CHATTR_32                       = 0x3\n\tAUDIT_CLASS_DIR_WRITE                       = 0x0\n\tAUDIT_CLASS_DIR_WRITE_32                    = 0x1\n\tAUDIT_CLASS_READ                            = 0x4\n\tAUDIT_CLASS_READ_32                         = 0x5\n\tAUDIT_CLASS_SIGNAL                          = 0x8\n\tAUDIT_CLASS_SIGNAL_32                       = 0x9\n\tAUDIT_CLASS_WRITE                           = 0x6\n\tAUDIT_CLASS_WRITE_32                        = 0x7\n\tAUDIT_COMPARE_AUID_TO_EUID                  = 0x10\n\tAUDIT_COMPARE_AUID_TO_FSUID                 = 0xe\n\tAUDIT_COMPARE_AUID_TO_OBJ_UID               = 0x5\n\tAUDIT_COMPARE_AUID_TO_SUID                  = 0xf\n\tAUDIT_COMPARE_EGID_TO_FSGID                 = 0x17\n\tAUDIT_COMPARE_EGID_TO_OBJ_GID               = 0x4\n\tAUDIT_COMPARE_EGID_TO_SGID                  = 0x18\n\tAUDIT_COMPARE_EUID_TO_FSUID                 = 0x12\n\tAUDIT_COMPARE_EUID_TO_OBJ_UID               = 0x3\n\tAUDIT_COMPARE_EUID_TO_SUID                  = 0x11\n\tAUDIT_COMPARE_FSGID_TO_OBJ_GID              = 0x9\n\tAUDIT_COMPARE_FSUID_TO_OBJ_UID              = 0x8\n\tAUDIT_COMPARE_GID_TO_EGID                   = 0x14\n\tAUDIT_COMPARE_GID_TO_FSGID                  = 0x15\n\tAUDIT_COMPARE_GID_TO_OBJ_GID                = 0x2\n\tAUDIT_COMPARE_GID_TO_SGID                   = 0x16\n\tAUDIT_COMPARE_SGID_TO_FSGID                 = 0x19\n\tAUDIT_COMPARE_SGID_TO_OBJ_GID               = 0x7\n\tAUDIT_COMPARE_SUID_TO_FSUID                 = 0x13\n\tAUDIT_COMPARE_SUID_TO_OBJ_UID               = 0x6\n\tAUDIT_COMPARE_UID_TO_AUID                   = 0xa\n\tAUDIT_COMPARE_UID_TO_EUID                   = 0xb\n\tAUDIT_COMPARE_UID_TO_FSUID                  = 0xc\n\tAUDIT_COMPARE_UID_TO_OBJ_UID                = 0x1\n\tAUDIT_COMPARE_UID_TO_SUID                   = 0xd\n\tAUDIT_CONFIG_CHANGE                         = 0x519\n\tAUDIT_CWD                                   = 0x51b\n\tAUDIT_DAEMON_ABORT                          = 0x4b2\n\tAUDIT_DAEMON_CONFIG                         = 0x4b3\n\tAUDIT_DAEMON_END                            = 0x4b1\n\tAUDIT_DAEMON_START                          = 0x4b0\n\tAUDIT_DEL                                   = 0x3ec\n\tAUDIT_DEL_RULE                              = 0x3f4\n\tAUDIT_DEVMAJOR                              = 0x64\n\tAUDIT_DEVMINOR                              = 0x65\n\tAUDIT_DIR                                   = 0x6b\n\tAUDIT_DM_CTRL                               = 0x53a\n\tAUDIT_DM_EVENT                              = 0x53b\n\tAUDIT_EGID                                  = 0x6\n\tAUDIT_EOE                                   = 0x528\n\tAUDIT_EQUAL                                 = 0x40000000\n\tAUDIT_EUID                                  = 0x2\n\tAUDIT_EVENT_LISTENER                        = 0x537\n\tAUDIT_EXE                                   = 0x70\n\tAUDIT_EXECVE                                = 0x51d\n\tAUDIT_EXIT                                  = 0x67\n\tAUDIT_FAIL_PANIC                            = 0x2\n\tAUDIT_FAIL_PRINTK                           = 0x1\n\tAUDIT_FAIL_SILENT                           = 0x0\n\tAUDIT_FANOTIFY                              = 0x533\n\tAUDIT_FD_PAIR                               = 0x525\n\tAUDIT_FEATURE_BITMAP_ALL                    = 0x7f\n\tAUDIT_FEATURE_BITMAP_BACKLOG_LIMIT          = 0x1\n\tAUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME      = 0x2\n\tAUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND         = 0x8\n\tAUDIT_FEATURE_BITMAP_EXECUTABLE_PATH        = 0x4\n\tAUDIT_FEATURE_BITMAP_FILTER_FS              = 0x40\n\tAUDIT_FEATURE_BITMAP_LOST_RESET             = 0x20\n\tAUDIT_FEATURE_BITMAP_SESSIONID_FILTER       = 0x10\n\tAUDIT_FEATURE_CHANGE                        = 0x530\n\tAUDIT_FEATURE_LOGINUID_IMMUTABLE            = 0x1\n\tAUDIT_FEATURE_ONLY_UNSET_LOGINUID           = 0x0\n\tAUDIT_FEATURE_VERSION                       = 0x1\n\tAUDIT_FIELD_COMPARE                         = 0x6f\n\tAUDIT_FILETYPE                              = 0x6c\n\tAUDIT_FILTERKEY                             = 0xd2\n\tAUDIT_FILTER_ENTRY                          = 0x2\n\tAUDIT_FILTER_EXCLUDE                        = 0x5\n\tAUDIT_FILTER_EXIT                           = 0x4\n\tAUDIT_FILTER_FS                             = 0x6\n\tAUDIT_FILTER_PREPEND                        = 0x10\n\tAUDIT_FILTER_TASK                           = 0x1\n\tAUDIT_FILTER_TYPE                           = 0x5\n\tAUDIT_FILTER_URING_EXIT                     = 0x7\n\tAUDIT_FILTER_USER                           = 0x0\n\tAUDIT_FILTER_WATCH                          = 0x3\n\tAUDIT_FIRST_KERN_ANOM_MSG                   = 0x6a4\n\tAUDIT_FIRST_USER_MSG                        = 0x44c\n\tAUDIT_FIRST_USER_MSG2                       = 0x834\n\tAUDIT_FSGID                                 = 0x8\n\tAUDIT_FSTYPE                                = 0x1a\n\tAUDIT_FSUID                                 = 0x4\n\tAUDIT_GET                                   = 0x3e8\n\tAUDIT_GET_FEATURE                           = 0x3fb\n\tAUDIT_GID                                   = 0x5\n\tAUDIT_GREATER_THAN                          = 0x20000000\n\tAUDIT_GREATER_THAN_OR_EQUAL                 = 0x60000000\n\tAUDIT_INODE                                 = 0x66\n\tAUDIT_INTEGRITY_DATA                        = 0x708\n\tAUDIT_INTEGRITY_EVM_XATTR                   = 0x70e\n\tAUDIT_INTEGRITY_HASH                        = 0x70b\n\tAUDIT_INTEGRITY_METADATA                    = 0x709\n\tAUDIT_INTEGRITY_PCR                         = 0x70c\n\tAUDIT_INTEGRITY_POLICY_RULE                 = 0x70f\n\tAUDIT_INTEGRITY_RULE                        = 0x70d\n\tAUDIT_INTEGRITY_STATUS                      = 0x70a\n\tAUDIT_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_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\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_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                           = 0xf\n\tRTAX_FEATURE_SACK                           = 0x2\n\tRTAX_FEATURE_TIMESTAMP                      = 0x4\n\tRTAX_HOPLIMIT                               = 0xa\n\tRTAX_INITCWND                               = 0xb\n\tRTAX_INITRWND                               = 0xe\n\tRTAX_LOCK                                   = 0x1\n\tRTAX_MAX                                    = 0x11\n\tRTAX_MTU                                    = 0x2\n\tRTAX_QUICKACK                               = 0xf\n\tRTAX_REORDERING                             = 0x9\n\tRTAX_RTO_MIN                                = 0xd\n\tRTAX_RTT                                    = 0x4\n\tRTAX_RTTVAR                                 = 0x5\n\tRTAX_SSTHRESH                               = 0x6\n\tRTAX_UNSPEC                                 = 0x0\n\tRTAX_WINDOW                                 = 0x3\n\tRTA_ALIGNTO                                 = 0x4\n\tRTA_MAX                                     = 0x1e\n\tRTCF_DIRECTSRC                              = 0x4000000\n\tRTCF_DOREDIRECT                             = 0x1000000\n\tRTCF_LOG                                    = 0x2000000\n\tRTCF_MASQ                                   = 0x400000\n\tRTCF_NAT                                    = 0x800000\n\tRTCF_VALVE                                  = 0x200000\n\tRTC_AF                                      = 0x20\n\tRTC_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_MODE_DISABLED                       = 0x0\n\tSECCOMP_MODE_FILTER                         = 0x2\n\tSECCOMP_MODE_STRICT                         = 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_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": "vendor/golang.org/x/sys/unix/zerrors_linux_386.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/386/include -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/386/include -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80041270\n\tBLKBSZSET                        = 0x40041271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80041272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/amd64/include -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/amd64/include -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_arm.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/arm/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/arm/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80041270\n\tBLKBSZSET                        = 0x40041271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80041272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/arm64/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/loong64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/loong64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_mips.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips64le/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64le/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mipsle/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mipsle/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64le/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64le/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/riscv64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/riscv64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/s390x/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/sparc64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/sparc64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tASI_LEON_DFLUSH                  = 0x11\n\tASI_LEON_IFLUSH                  = 0x10\n\tASI_LEON_MMUFLUSH                = 0x18\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\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\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": "vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0084277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x400c427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x800c427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80084272\n\tBIOCSUDPF                         = 0x80084273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tEN_SW_CTL_INF                     = 0x1000\n\tEN_SW_CTL_PREC                    = 0x300\n\tEN_SW_CTL_ROUND                   = 0xc00\n\tEN_SW_DATACHAIN                   = 0x80\n\tEN_SW_DENORM                      = 0x2\n\tEN_SW_INVOP                       = 0x1\n\tEN_SW_OVERFLOW                    = 0x8\n\tEN_SW_PRECLOSS                    = 0x20\n\tEN_SW_UNDERFLOW                   = 0x10\n\tEN_SW_ZERODIV                     = 0x4\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc01c697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0946920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0086926\n\tSIOCGIFDATA                       = 0xc0946985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc01c6987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCINITIFADDR                    = 0xc0446984\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8094691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x801c6988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0946986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x400c7458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80047445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80047444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x4010427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x8010427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80104272\n\tBIOCSUDPF                         = 0x80104273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8038720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8038720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0986920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0106926\n\tSIOCGIFDATA                       = 0xc0986985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0306936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc0286987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCINITIFADDR                    = 0xc0706984\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8098691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x80286988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0986986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80087445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80087444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go",
    "content": "// mkerrors.sh -marm\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -marm _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0084277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x400c427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x800c427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80084272\n\tBIOCSUDPF                         = 0x80084273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc01c697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0946920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0086926\n\tSIOCGIFDATA                       = 0xc0946985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc01c6987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCINITIFADDR                    = 0xc0446984\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8094691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x801c6988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0946986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x400c7458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x48087446\n\tTIOCPTSNAME                       = 0x48087448\n\tTIOCRCVFRAME                      = 0x80047445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80047444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x4010427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x8010427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80104272\n\tBIOCSUDPF                         = 0x80104273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8038720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8038720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0986920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0106926\n\tSIOCGIFDATA                       = 0xc0986985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0306936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc0286987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCINITIFADDR                    = 0xc0706984\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8098691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x80286988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0986986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80087445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80087444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc008427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x400c426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80084277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x800c426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc100445d\n\tDIOCADDRULE                       = 0xccc84404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xccc8441a\n\tDIOCCLRIFFLAG                     = 0xc024445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0d04412\n\tDIOCCLRSTATUS                     = 0xc0244416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1084460\n\tDIOCGETQUEUE                      = 0xc100445f\n\tDIOCGETQUEUES                     = 0xc100445e\n\tDIOCGETRULE                       = 0xccc84407\n\tDIOCGETRULES                      = 0xccc84406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0084454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0084419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0244457\n\tDIOCKILLSRCNODES                  = 0xc068445b\n\tDIOCKILLSTATES                    = 0xc0d04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc084444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0844450\n\tDIOCRADDADDRS                     = 0xc44c4443\n\tDIOCRADDTABLES                    = 0xc44c443d\n\tDIOCRCLRADDRS                     = 0xc44c4442\n\tDIOCRCLRASTATS                    = 0xc44c4448\n\tDIOCRCLRTABLES                    = 0xc44c443c\n\tDIOCRCLRTSTATS                    = 0xc44c4441\n\tDIOCRDELADDRS                     = 0xc44c4444\n\tDIOCRDELTABLES                    = 0xc44c443e\n\tDIOCRGETADDRS                     = 0xc44c4446\n\tDIOCRGETASTATS                    = 0xc44c4447\n\tDIOCRGETTABLES                    = 0xc44c443f\n\tDIOCRGETTSTATS                    = 0xc44c4440\n\tDIOCRINADEFINE                    = 0xc44c444d\n\tDIOCRSETADDRS                     = 0xc44c4445\n\tDIOCRSETTFLAGS                    = 0xc44c444a\n\tDIOCRTSTADDRS                     = 0xc44c4449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0244459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0244414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc00c4451\n\tDIOCXCOMMIT                       = 0xc00c4452\n\tDIOCXROLLBACK                     = 0xc00c4453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x805c693c\n\tSIOCBRDGADDL                      = 0x805c6949\n\tSIOCBRDGADDS                      = 0x805c6941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x805c693d\n\tSIOCBRDGDELS                      = 0x805c6942\n\tSIOCBRDGFLUSH                     = 0x805c6948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc05c693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc03c6958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc05c6942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x805c6955\n\tSIOCBRDGSIFFLGS                   = 0x805c693f\n\tSIOCBRDGSIFPRIO                   = 0x805c6954\n\tSIOCBRDGSIFPROT                   = 0x805c694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc024698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc024698d\n\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0386938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x400c745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc008427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80084277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc100445d\n\tDIOCADDRULE                       = 0xcce04404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcce0441a\n\tDIOCCLRIFFLAG                     = 0xc024445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0d04412\n\tDIOCCLRSTATUS                     = 0xc0244416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1084460\n\tDIOCGETQUEUE                      = 0xc100445f\n\tDIOCGETQUEUES                     = 0xc100445e\n\tDIOCGETRULE                       = 0xcce04407\n\tDIOCGETRULES                      = 0xcce04406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0084454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0084419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0244457\n\tDIOCKILLSRCNODES                  = 0xc068445b\n\tDIOCKILLSTATES                    = 0xc0d04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc44c4443\n\tDIOCRADDTABLES                    = 0xc44c443d\n\tDIOCRCLRADDRS                     = 0xc44c4442\n\tDIOCRCLRASTATS                    = 0xc44c4448\n\tDIOCRCLRTABLES                    = 0xc44c443c\n\tDIOCRCLRTSTATS                    = 0xc44c4441\n\tDIOCRDELADDRS                     = 0xc44c4444\n\tDIOCRDELTABLES                    = 0xc44c443e\n\tDIOCRGETADDRS                     = 0xc44c4446\n\tDIOCRGETASTATS                    = 0xc44c4447\n\tDIOCRGETTABLES                    = 0xc44c443f\n\tDIOCRGETTSTATS                    = 0xc44c4440\n\tDIOCRINADEFINE                    = 0xc44c444d\n\tDIOCRSETADDRS                     = 0xc44c4445\n\tDIOCRSETTFLAGS                    = 0xc44c444a\n\tDIOCRTSTADDRS                     = 0xc44c4449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0244459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0244414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc00c4451\n\tDIOCXCOMMIT                       = 0xc00c4452\n\tDIOCXROLLBACK                     = 0xc00c4453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc024698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc024698d\n\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0386938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xfffffff\n\tIPV6_FLOWLABEL_MASK               = 0xfffff\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{81920, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xfffffff\n\tIPV6_FLOWLABEL_MASK               = 0xfffff\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && solaris\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_802                        = 0x12\n\tAF_APPLETALK                  = 0x10\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_FILE                       = 0x1\n\tAF_GOSIP                      = 0x16\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x1a\n\tAF_INET_OFFLOAD               = 0x1e\n\tAF_IPX                        = 0x17\n\tAF_KEY                        = 0x1b\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x19\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x20\n\tAF_NBS                        = 0x7\n\tAF_NCA                        = 0x1c\n\tAF_NIT                        = 0x11\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x13\n\tAF_OSINET                     = 0x15\n\tAF_PACKET                     = 0x20\n\tAF_POLICY                     = 0x1d\n\tAF_PUP                        = 0x4\n\tAF_ROUTE                      = 0x18\n\tAF_SNA                        = 0xb\n\tAF_TRILL                      = 0x1f\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tAF_X25                        = 0x14\n\tARPHRD_ARCNET                 = 0x7\n\tARPHRD_ATM                    = 0x10\n\tARPHRD_AX25                   = 0x3\n\tARPHRD_CHAOS                  = 0x5\n\tARPHRD_EETHER                 = 0x2\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FC                     = 0x12\n\tARPHRD_FRAME                  = 0xf\n\tARPHRD_HDLC                   = 0x11\n\tARPHRD_IB                     = 0x20\n\tARPHRD_IEEE802                = 0x6\n\tARPHRD_IPATM                  = 0x13\n\tARPHRD_METRICOM               = 0x17\n\tARPHRD_TUNNEL                 = 0x1f\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB115200                       = 0x12\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB153600                       = 0x13\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB230400                       = 0x14\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB307200                       = 0x15\n\tB38400                        = 0xf\n\tB460800                       = 0x16\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB57600                        = 0x10\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB76800                        = 0x11\n\tB921600                       = 0x17\n\tB9600                         = 0xd\n\tBIOCFLUSH                     = 0x20004268\n\tBIOCGBLEN                     = 0x40044266\n\tBIOCGDLT                      = 0x4004426a\n\tBIOCGDLTLIST                  = -0x3fefbd89\n\tBIOCGDLTLIST32                = -0x3ff7bd89\n\tBIOCGETIF                     = 0x4020426b\n\tBIOCGETLIF                    = 0x4078426b\n\tBIOCGHDRCMPLT                 = 0x40044274\n\tBIOCGRTIMEOUT                 = 0x4010427b\n\tBIOCGRTIMEOUT32               = 0x4008427b\n\tBIOCGSEESENT                  = 0x40044278\n\tBIOCGSTATS                    = 0x4080426f\n\tBIOCGSTATSOLD                 = 0x4008426f\n\tBIOCIMMEDIATE                 = -0x7ffbbd90\n\tBIOCPROMISC                   = 0x20004269\n\tBIOCSBLEN                     = -0x3ffbbd9a\n\tBIOCSDLT                      = -0x7ffbbd8a\n\tBIOCSETF                      = -0x7fefbd99\n\tBIOCSETF32                    = -0x7ff7bd99\n\tBIOCSETIF                     = -0x7fdfbd94\n\tBIOCSETLIF                    = -0x7f87bd94\n\tBIOCSHDRCMPLT                 = -0x7ffbbd8b\n\tBIOCSRTIMEOUT                 = -0x7fefbd86\n\tBIOCSRTIMEOUT32               = -0x7ff7bd86\n\tBIOCSSEESENT                  = -0x7ffbbd87\n\tBIOCSTCPF                     = -0x7fefbd8e\n\tBIOCSUDPF                     = -0x7fefbd8d\n\tBIOCVERSION                   = 0x40044271\n\tBPF_A                         = 0x10\n\tBPF_ABS                       = 0x20\n\tBPF_ADD                       = 0x0\n\tBPF_ALIGNMENT                 = 0x4\n\tBPF_ALU                       = 0x4\n\tBPF_AND                       = 0x50\n\tBPF_B                         = 0x10\n\tBPF_DFLTBUFSIZE               = 0x100000\n\tBPF_DIV                       = 0x30\n\tBPF_H                         = 0x8\n\tBPF_IMM                       = 0x0\n\tBPF_IND                       = 0x40\n\tBPF_JA                        = 0x0\n\tBPF_JEQ                       = 0x10\n\tBPF_JGE                       = 0x30\n\tBPF_JGT                       = 0x20\n\tBPF_JMP                       = 0x5\n\tBPF_JSET                      = 0x40\n\tBPF_K                         = 0x0\n\tBPF_LD                        = 0x0\n\tBPF_LDX                       = 0x1\n\tBPF_LEN                       = 0x80\n\tBPF_LSH                       = 0x60\n\tBPF_MAJOR_VERSION             = 0x1\n\tBPF_MAXBUFSIZE                = 0x1000000\n\tBPF_MAXINSNS                  = 0x200\n\tBPF_MEM                       = 0x60\n\tBPF_MEMWORDS                  = 0x10\n\tBPF_MINBUFSIZE                = 0x20\n\tBPF_MINOR_VERSION             = 0x1\n\tBPF_MISC                      = 0x7\n\tBPF_MSH                       = 0xa0\n\tBPF_MUL                       = 0x20\n\tBPF_NEG                       = 0x80\n\tBPF_OR                        = 0x40\n\tBPF_RELEASE                   = 0x30bb6\n\tBPF_RET                       = 0x6\n\tBPF_RSH                       = 0x70\n\tBPF_ST                        = 0x2\n\tBPF_STX                       = 0x3\n\tBPF_SUB                       = 0x10\n\tBPF_TAX                       = 0x0\n\tBPF_TXA                       = 0x80\n\tBPF_W                         = 0x0\n\tBPF_X                         = 0x8\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x2000\n\tBSDLY                         = 0x2000\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_HIGHRES                 = 0x4\n\tCLOCK_LEVEL                   = 0xa\n\tCLOCK_MONOTONIC               = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID      = 0x5\n\tCLOCK_PROF                    = 0x2\n\tCLOCK_REALTIME                = 0x3\n\tCLOCK_THREAD_CPUTIME_ID       = 0x2\n\tCLOCK_VIRTUAL                 = 0x1\n\tCR0                           = 0x0\n\tCR1                           = 0x200\n\tCR2                           = 0x400\n\tCR3                           = 0x600\n\tCRDLY                         = 0x600\n\tCREAD                         = 0x80\n\tCRTSCTS                       = 0x80000000\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIZE                         = 0x30\n\tCSTART                        = 0x11\n\tCSTATUS                       = 0x14\n\tCSTOP                         = 0x13\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tCSWTCH                        = 0x1a\n\tDIOC                          = 0x6400\n\tDIOCGETB                      = 0x6402\n\tDIOCGETC                      = 0x6401\n\tDIOCGETP                      = 0x6408\n\tDIOCSETE                      = 0x6403\n\tDIOCSETP                      = 0x6409\n\tDLT_AIRONET_HEADER            = 0x78\n\tDLT_APPLE_IP_OVER_IEEE1394    = 0x8a\n\tDLT_ARCNET                    = 0x7\n\tDLT_ARCNET_LINUX              = 0x81\n\tDLT_ATM_CLIP                  = 0x13\n\tDLT_ATM_RFC1483               = 0xb\n\tDLT_AURORA                    = 0x7e\n\tDLT_AX25                      = 0x3\n\tDLT_BACNET_MS_TP              = 0xa5\n\tDLT_CHAOS                     = 0x5\n\tDLT_CISCO_IOS                 = 0x76\n\tDLT_C_HDLC                    = 0x68\n\tDLT_DOCSIS                    = 0x8f\n\tDLT_ECONET                    = 0x73\n\tDLT_EN10MB                    = 0x1\n\tDLT_EN3MB                     = 0x2\n\tDLT_ENC                       = 0x6d\n\tDLT_ERF_ETH                   = 0xaf\n\tDLT_ERF_POS                   = 0xb0\n\tDLT_FDDI                      = 0xa\n\tDLT_FRELAY                    = 0x6b\n\tDLT_GCOM_SERIAL               = 0xad\n\tDLT_GCOM_T1E1                 = 0xac\n\tDLT_GPF_F                     = 0xab\n\tDLT_GPF_T                     = 0xaa\n\tDLT_GPRS_LLC                  = 0xa9\n\tDLT_HDLC                      = 0x10\n\tDLT_HHDLC                     = 0x79\n\tDLT_HIPPI                     = 0xf\n\tDLT_IBM_SN                    = 0x92\n\tDLT_IBM_SP                    = 0x91\n\tDLT_IEEE802                   = 0x6\n\tDLT_IEEE802_11                = 0x69\n\tDLT_IEEE802_11_RADIO          = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS      = 0xa3\n\tDLT_IPNET                     = 0xe2\n\tDLT_IPOIB                     = 0xa2\n\tDLT_IP_OVER_FC                = 0x7a\n\tDLT_JUNIPER_ATM1              = 0x89\n\tDLT_JUNIPER_ATM2              = 0x87\n\tDLT_JUNIPER_CHDLC             = 0xb5\n\tDLT_JUNIPER_ES                = 0x84\n\tDLT_JUNIPER_ETHER             = 0xb2\n\tDLT_JUNIPER_FRELAY            = 0xb4\n\tDLT_JUNIPER_GGSN              = 0x85\n\tDLT_JUNIPER_MFR               = 0x86\n\tDLT_JUNIPER_MLFR              = 0x83\n\tDLT_JUNIPER_MLPPP             = 0x82\n\tDLT_JUNIPER_MONITOR           = 0xa4\n\tDLT_JUNIPER_PIC_PEER          = 0xae\n\tDLT_JUNIPER_PPP               = 0xb3\n\tDLT_JUNIPER_PPPOE             = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM         = 0xa8\n\tDLT_JUNIPER_SERVICES          = 0x88\n\tDLT_LINUX_IRDA                = 0x90\n\tDLT_LINUX_LAPD                = 0xb1\n\tDLT_LINUX_SLL                 = 0x71\n\tDLT_LOOP                      = 0x6c\n\tDLT_LTALK                     = 0x72\n\tDLT_MTP2                      = 0x8c\n\tDLT_MTP2_WITH_PHDR            = 0x8b\n\tDLT_MTP3                      = 0x8d\n\tDLT_NULL                      = 0x0\n\tDLT_PCI_EXP                   = 0x7d\n\tDLT_PFLOG                     = 0x75\n\tDLT_PFSYNC                    = 0x12\n\tDLT_PPP                       = 0x9\n\tDLT_PPP_BSDOS                 = 0xe\n\tDLT_PPP_PPPD                  = 0xa6\n\tDLT_PRISM_HEADER              = 0x77\n\tDLT_PRONET                    = 0x4\n\tDLT_RAW                       = 0xc\n\tDLT_RAWAF_MASK                = 0x2240000\n\tDLT_RIO                       = 0x7c\n\tDLT_SCCP                      = 0x8e\n\tDLT_SLIP                      = 0x8\n\tDLT_SLIP_BSDOS                = 0xd\n\tDLT_SUNATM                    = 0x7b\n\tDLT_SYMANTEC_FIREWALL         = 0x63\n\tDLT_TZSP                      = 0x80\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x200\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x800\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x400\n\tEMPTY_SET                     = 0x0\n\tEMT_CPCOVF                    = 0x1\n\tEQUALITY_CHECK                = 0x0\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tFD_CLOEXEC                    = 0x1\n\tFD_NFDBITS                    = 0x40\n\tFD_SETSIZE                    = 0x10000\n\tFF0                           = 0x0\n\tFF1                           = 0x8000\n\tFFDLY                         = 0x8000\n\tFIORDCHK                      = 0x6603\n\tFLUSHALL                      = 0x1\n\tFLUSHDATA                     = 0x0\n\tFLUSHO                        = 0x2000\n\tF_ALLOCSP                     = 0xa\n\tF_ALLOCSP64                   = 0xa\n\tF_BADFD                       = 0x2e\n\tF_BLKSIZE                     = 0x13\n\tF_BLOCKS                      = 0x12\n\tF_CHKFL                       = 0x8\n\tF_COMPAT                      = 0x8\n\tF_DUP2FD                      = 0x9\n\tF_DUP2FD_CLOEXEC              = 0x24\n\tF_DUPFD                       = 0x0\n\tF_DUPFD_CLOEXEC               = 0x25\n\tF_FLOCK                       = 0x35\n\tF_FLOCK64                     = 0x35\n\tF_FLOCKW                      = 0x36\n\tF_FLOCKW64                    = 0x36\n\tF_FREESP                      = 0xb\n\tF_FREESP64                    = 0xb\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0xe\n\tF_GETLK64                     = 0xe\n\tF_GETOWN                      = 0x17\n\tF_GETXFL                      = 0x2d\n\tF_HASREMOTELOCKS              = 0x1a\n\tF_ISSTREAM                    = 0xd\n\tF_MANDDNY                     = 0x10\n\tF_MDACC                       = 0x20\n\tF_NODNY                       = 0x0\n\tF_NPRIV                       = 0x10\n\tF_OFD_GETLK                   = 0x2f\n\tF_OFD_GETLK64                 = 0x2f\n\tF_OFD_SETLK                   = 0x30\n\tF_OFD_SETLK64                 = 0x30\n\tF_OFD_SETLKW                  = 0x31\n\tF_OFD_SETLKW64                = 0x31\n\tF_PRIV                        = 0xf\n\tF_QUOTACTL                    = 0x11\n\tF_RDACC                       = 0x1\n\tF_RDDNY                       = 0x1\n\tF_RDLCK                       = 0x1\n\tF_REVOKE                      = 0x19\n\tF_RMACC                       = 0x4\n\tF_RMDNY                       = 0x4\n\tF_RWACC                       = 0x3\n\tF_RWDNY                       = 0x3\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0x6\n\tF_SETLK64                     = 0x6\n\tF_SETLK64_NBMAND              = 0x2a\n\tF_SETLKW                      = 0x7\n\tF_SETLKW64                    = 0x7\n\tF_SETLK_NBMAND                = 0x2a\n\tF_SETOWN                      = 0x18\n\tF_SHARE                       = 0x28\n\tF_SHARE_NBMAND                = 0x2b\n\tF_UNLCK                       = 0x3\n\tF_UNLKSYS                     = 0x4\n\tF_UNSHARE                     = 0x29\n\tF_WRACC                       = 0x2\n\tF_WRDNY                       = 0x2\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x1\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x8000\n\tIFF_ADDRCONF                  = 0x80000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_ANYCAST                   = 0x400000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x7f203003b5a\n\tIFF_COS_ENABLED               = 0x200000000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEPRECATED                = 0x40000\n\tIFF_DHCPRUNNING               = 0x4000\n\tIFF_DUPLICATE                 = 0x4000000000\n\tIFF_FAILED                    = 0x10000000\n\tIFF_FIXEDMTU                  = 0x1000000000\n\tIFF_INACTIVE                  = 0x40000000\n\tIFF_INTELLIGENT               = 0x400\n\tIFF_IPMP                      = 0x8000000000\n\tIFF_IPMP_CANTCHANGE           = 0x10000000\n\tIFF_IPMP_INVALID              = 0x1ec200080\n\tIFF_IPV4                      = 0x1000000\n\tIFF_IPV6                      = 0x2000000\n\tIFF_L3PROTECT                 = 0x40000000000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x800\n\tIFF_MULTI_BCAST               = 0x1000\n\tIFF_NOACCEPT                  = 0x4000000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOFAILOVER                = 0x8000000\n\tIFF_NOLINKLOCAL               = 0x20000000000\n\tIFF_NOLOCAL                   = 0x20000\n\tIFF_NONUD                     = 0x200000\n\tIFF_NORTEXCH                  = 0x800000\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_NOXMIT                    = 0x10000\n\tIFF_OFFLINE                   = 0x80000000\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PREFERRED                 = 0x400000000\n\tIFF_PRIVATE                   = 0x8000\n\tIFF_PROMISC                   = 0x100\n\tIFF_ROUTER                    = 0x100000\n\tIFF_RUNNING                   = 0x40\n\tIFF_STANDBY                   = 0x20000000\n\tIFF_TEMPORARY                 = 0x800000000\n\tIFF_UNNUMBERED                = 0x2000\n\tIFF_UP                        = 0x1\n\tIFF_VIRTUAL                   = 0x2000000000\n\tIFF_VRRP                      = 0x10000000000\n\tIFF_XRESOLV                   = 0x100000000\n\tIFNAMSIZ                      = 0x10\n\tIFT_1822                      = 0x2\n\tIFT_6TO4                      = 0xca\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_IPV4                      = 0xc8\n\tIFT_IPV6                      = 0xc9\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x2000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_AUTOCONF_MASK              = 0xffff0000\n\tIN_AUTOCONF_NET               = 0xa9fe0000\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_CLASSE_NET                 = 0xffffffff\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_PRIVATE12_MASK             = 0xfff00000\n\tIN_PRIVATE12_NET              = 0xac100000\n\tIN_PRIVATE16_MASK             = 0xffff0000\n\tIN_PRIVATE16_NET              = 0xc0a80000\n\tIN_PRIVATE8_MASK              = 0xff000000\n\tIN_PRIVATE8_NET               = 0xa000000\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_ENCAP                 = 0x4\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_HELLO                 = 0x3f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_ND                    = 0x4d\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_OSPF                  = 0x59\n\tIPPROTO_PIM                   = 0x67\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADD_MEMBERSHIP           = 0x9\n\tIPV6_BOUND_IF                 = 0x41\n\tIPV6_CHECKSUM                 = 0x18\n\tIPV6_DONTFRAG                 = 0x21\n\tIPV6_DROP_MEMBERSHIP          = 0xa\n\tIPV6_DSTOPTS                  = 0xf\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffff0f00\n\tIPV6_FLOWINFO_TCLASS          = 0xf00f\n\tIPV6_HOPLIMIT                 = 0xc\n\tIPV6_HOPOPTS                  = 0xe\n\tIPV6_JOIN_GROUP               = 0x9\n\tIPV6_LEAVE_GROUP              = 0xa\n\tIPV6_MULTICAST_HOPS           = 0x7\n\tIPV6_MULTICAST_IF             = 0x6\n\tIPV6_MULTICAST_LOOP           = 0x8\n\tIPV6_NEXTHOP                  = 0xd\n\tIPV6_PAD1_OPT                 = 0x0\n\tIPV6_PATHMTU                  = 0x25\n\tIPV6_PKTINFO                  = 0xb\n\tIPV6_PREFER_SRC_CGA           = 0x20\n\tIPV6_PREFER_SRC_CGADEFAULT    = 0x10\n\tIPV6_PREFER_SRC_CGAMASK       = 0x30\n\tIPV6_PREFER_SRC_COA           = 0x2\n\tIPV6_PREFER_SRC_DEFAULT       = 0x15\n\tIPV6_PREFER_SRC_HOME          = 0x1\n\tIPV6_PREFER_SRC_MASK          = 0x3f\n\tIPV6_PREFER_SRC_MIPDEFAULT    = 0x1\n\tIPV6_PREFER_SRC_MIPMASK       = 0x3\n\tIPV6_PREFER_SRC_NONCGA        = 0x10\n\tIPV6_PREFER_SRC_PUBLIC        = 0x4\n\tIPV6_PREFER_SRC_TMP           = 0x8\n\tIPV6_PREFER_SRC_TMPDEFAULT    = 0x4\n\tIPV6_PREFER_SRC_TMPMASK       = 0xc\n\tIPV6_RECVDSTOPTS              = 0x28\n\tIPV6_RECVHOPLIMIT             = 0x13\n\tIPV6_RECVHOPOPTS              = 0x14\n\tIPV6_RECVPATHMTU              = 0x24\n\tIPV6_RECVPKTINFO              = 0x12\n\tIPV6_RECVRTHDR                = 0x16\n\tIPV6_RECVRTHDRDSTOPTS         = 0x17\n\tIPV6_RECVTCLASS               = 0x19\n\tIPV6_RTHDR                    = 0x10\n\tIPV6_RTHDRDSTOPTS             = 0x11\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_SEC_OPT                  = 0x22\n\tIPV6_SRC_PREFERENCES          = 0x23\n\tIPV6_TCLASS                   = 0x26\n\tIPV6_UNICAST_HOPS             = 0x5\n\tIPV6_UNSPEC_SRC               = 0x42\n\tIPV6_USE_MIN_MTU              = 0x20\n\tIPV6_V6ONLY                   = 0x27\n\tIP_ADD_MEMBERSHIP             = 0x13\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x17\n\tIP_BLOCK_SOURCE               = 0x15\n\tIP_BOUND_IF                   = 0x41\n\tIP_BROADCAST                  = 0x106\n\tIP_BROADCAST_TTL              = 0x43\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPINIT_IF                = 0x45\n\tIP_DONTFRAG                   = 0x1b\n\tIP_DONTROUTE                  = 0x105\n\tIP_DROP_MEMBERSHIP            = 0x14\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x18\n\tIP_HDRINCL                    = 0x2\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_IF               = 0x10\n\tIP_MULTICAST_LOOP             = 0x12\n\tIP_MULTICAST_TTL              = 0x11\n\tIP_NEXTHOP                    = 0x19\n\tIP_OPTIONS                    = 0x1\n\tIP_PKTINFO                    = 0x1a\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x9\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVPKTINFO                = 0x1a\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVSLLA                   = 0xa\n\tIP_RECVTOS                    = 0xc\n\tIP_RECVTTL                    = 0xb\n\tIP_RETOPTS                    = 0x8\n\tIP_REUSEADDR                  = 0x104\n\tIP_SEC_OPT                    = 0x22\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x16\n\tIP_UNSPEC_SRC                 = 0x42\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x200\n\tIXANY                         = 0x800\n\tIXOFF                         = 0x1000\n\tIXON                          = 0x400\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_ACCESS_DEFAULT           = 0x6\n\tMADV_ACCESS_LWP               = 0x7\n\tMADV_ACCESS_MANY              = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_FREE                     = 0x5\n\tMADV_NORMAL                   = 0x0\n\tMADV_PURGE                    = 0x9\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_WILLNEED                 = 0x3\n\tMAP_32BIT                     = 0x80\n\tMAP_ALIGN                     = 0x200\n\tMAP_ANON                      = 0x100\n\tMAP_ANONYMOUS                 = 0x100\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x10\n\tMAP_INITDATA                  = 0x800\n\tMAP_NORESERVE                 = 0x40\n\tMAP_PRIVATE                   = 0x2\n\tMAP_RENAME                    = 0x20\n\tMAP_SHARED                    = 0x1\n\tMAP_TEXT                      = 0x400\n\tMAP_TYPE                      = 0xf\n\tMCAST_BLOCK_SOURCE            = 0x2b\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x29\n\tMCAST_JOIN_SOURCE_GROUP       = 0x2d\n\tMCAST_LEAVE_GROUP             = 0x2a\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x2e\n\tMCAST_UNBLOCK_SOURCE          = 0x2c\n\tMCL_CURRENT                   = 0x1\n\tMCL_FUTURE                    = 0x2\n\tMSG_CTRUNC                    = 0x10\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_DONTWAIT                  = 0x80\n\tMSG_DUPCTRL                   = 0x800\n\tMSG_EOR                       = 0x8\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_NOSIGNAL                  = 0x200\n\tMSG_NOTIFICATION              = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x20\n\tMSG_WAITALL                   = 0x40\n\tMSG_XPG4_2                    = 0x8000\n\tMS_ASYNC                      = 0x1\n\tMS_INVALIDATE                 = 0x2\n\tMS_OLDSYNC                    = 0x0\n\tMS_SYNC                       = 0x4\n\tM_FLUSH                       = 0x86\n\tNAME_MAX                      = 0xff\n\tNEWDEV                        = 0x1\n\tNFDBITS                       = 0x40\n\tNL0                           = 0x0\n\tNL1                           = 0x100\n\tNLDLY                         = 0x100\n\tNOFLSH                        = 0x80\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tOLDDEV                        = 0x0\n\tONBITSMAJOR                   = 0x7\n\tONBITSMINOR                   = 0x8\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tOPENFAIL                      = -0x1\n\tOPOST                         = 0x1\n\tO_ACCMODE                     = 0x600003\n\tO_APPEND                      = 0x8\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DIRECT                      = 0x2000000\n\tO_DIRECTORY                   = 0x1000000\n\tO_DSYNC                       = 0x40\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x400000\n\tO_LARGEFILE                   = 0x2000\n\tO_NDELAY                      = 0x4\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x20000\n\tO_NOLINKS                     = 0x40000\n\tO_NONBLOCK                    = 0x80\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSYNC                       = 0x8000\n\tO_SEARCH                      = 0x200000\n\tO_SIOCGIFCONF                 = -0x3ff796ec\n\tO_SIOCGLIFCONF                = -0x3fef9688\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_WRONLY                      = 0x1\n\tO_XATTR                       = 0x4000\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x4000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0xfffffffffffffffd\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x9\n\tRTAX_NETMASK                  = 0x2\n\tRTAX_SRC                      = 0x8\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTA_NUMBITS                   = 0x9\n\tRTA_SRC                       = 0x100\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_INDIRECT                  = 0x40000\n\tRTF_KERNEL                    = 0x80000\n\tRTF_LLINFO                    = 0x400\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTIRT                   = 0x10000\n\tRTF_PRIVATE                   = 0x2000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_REJECT                    = 0x8\n\tRTF_SETSRC                    = 0x20000\n\tRTF_STATIC                    = 0x800\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTF_ZONE                      = 0x100000\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_CHGADDR                   = 0xf\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_FREEADDR                  = 0x10\n\tRTM_GET                       = 0x4\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_VERSION                   = 0x3\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRT_AWARE                      = 0x1\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tSCM_RIGHTS                    = 0x1010\n\tSCM_TIMESTAMP                 = 0x1013\n\tSCM_UCRED                     = 0x1012\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIG2STR_MAX                   = 0x20\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDRT                     = -0x7fcf8df6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fdb96e0\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELRT                     = -0x7fcf8df5\n\tSIOCDXARP                     = -0x7fff9658\n\tSIOCGARP                      = -0x3fdb96e1\n\tSIOCGDSTINFO                  = -0x3fff965c\n\tSIOCGENADDR                   = -0x3fdf96ab\n\tSIOCGENPSTATS                 = -0x3fdf96c7\n\tSIOCGETLSGCNT                 = -0x3fef8deb\n\tSIOCGETNAME                   = 0x40107334\n\tSIOCGETPEER                   = 0x40107335\n\tSIOCGETPROP                   = -0x3fff8f44\n\tSIOCGETSGCNT                  = -0x3feb8deb\n\tSIOCGETSYNC                   = -0x3fdf96d3\n\tSIOCGETVIFCNT                 = -0x3feb8dec\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fdf96f3\n\tSIOCGIFBRDADDR                = -0x3fdf96e9\n\tSIOCGIFCONF                   = -0x3ff796a4\n\tSIOCGIFDSTADDR                = -0x3fdf96f1\n\tSIOCGIFFLAGS                  = -0x3fdf96ef\n\tSIOCGIFHWADDR                 = -0x3fdf9647\n\tSIOCGIFINDEX                  = -0x3fdf96a6\n\tSIOCGIFMEM                    = -0x3fdf96ed\n\tSIOCGIFMETRIC                 = -0x3fdf96e5\n\tSIOCGIFMTU                    = -0x3fdf96ea\n\tSIOCGIFMUXID                  = -0x3fdf96a8\n\tSIOCGIFNETMASK                = -0x3fdf96e7\n\tSIOCGIFNUM                    = 0x40046957\n\tSIOCGIP6ADDRPOLICY            = -0x3fff965e\n\tSIOCGIPMSFILTER               = -0x3ffb964c\n\tSIOCGLIFADDR                  = -0x3f87968f\n\tSIOCGLIFBINDING               = -0x3f879666\n\tSIOCGLIFBRDADDR               = -0x3f879685\n\tSIOCGLIFCONF                  = -0x3fef965b\n\tSIOCGLIFDADSTATE              = -0x3f879642\n\tSIOCGLIFDSTADDR               = -0x3f87968d\n\tSIOCGLIFFLAGS                 = -0x3f87968b\n\tSIOCGLIFGROUPINFO             = -0x3f4b9663\n\tSIOCGLIFGROUPNAME             = -0x3f879664\n\tSIOCGLIFHWADDR                = -0x3f879640\n\tSIOCGLIFINDEX                 = -0x3f87967b\n\tSIOCGLIFLNKINFO               = -0x3f879674\n\tSIOCGLIFMETRIC                = -0x3f879681\n\tSIOCGLIFMTU                   = -0x3f879686\n\tSIOCGLIFMUXID                 = -0x3f87967d\n\tSIOCGLIFNETMASK               = -0x3f879683\n\tSIOCGLIFNUM                   = -0x3ff3967e\n\tSIOCGLIFSRCOF                 = -0x3fef964f\n\tSIOCGLIFSUBNET                = -0x3f879676\n\tSIOCGLIFTOKEN                 = -0x3f879678\n\tSIOCGLIFUSESRC                = -0x3f879651\n\tSIOCGLIFZONE                  = -0x3f879656\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGMSFILTER                 = -0x3ffb964e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSTAMP                    = -0x3fef9646\n\tSIOCGXARP                     = -0x3fff9659\n\tSIOCIFDETACH                  = -0x7fdf96c8\n\tSIOCILB                       = -0x3ffb9645\n\tSIOCLIFADDIF                  = -0x3f879691\n\tSIOCLIFDELND                  = -0x7f879673\n\tSIOCLIFGETND                  = -0x3f879672\n\tSIOCLIFREMOVEIF               = -0x7f879692\n\tSIOCLIFSETND                  = -0x7f879671\n\tSIOCLOWER                     = -0x7fdf96d7\n\tSIOCSARP                      = -0x7fdb96e2\n\tSIOCSCTPGOPT                  = -0x3fef9653\n\tSIOCSCTPPEELOFF               = -0x3ffb9652\n\tSIOCSCTPSOPT                  = -0x7fef9654\n\tSIOCSENABLESDP                = -0x3ffb9649\n\tSIOCSETPROP                   = -0x7ffb8f43\n\tSIOCSETSYNC                   = -0x7fdf96d4\n\tSIOCSHIWAT                    = -0x7ffb8d00\n\tSIOCSIFADDR                   = -0x7fdf96f4\n\tSIOCSIFBRDADDR                = -0x7fdf96e8\n\tSIOCSIFDSTADDR                = -0x7fdf96f2\n\tSIOCSIFFLAGS                  = -0x7fdf96f0\n\tSIOCSIFINDEX                  = -0x7fdf96a5\n\tSIOCSIFMEM                    = -0x7fdf96ee\n\tSIOCSIFMETRIC                 = -0x7fdf96e4\n\tSIOCSIFMTU                    = -0x7fdf96eb\n\tSIOCSIFMUXID                  = -0x7fdf96a7\n\tSIOCSIFNAME                   = -0x7fdf96b7\n\tSIOCSIFNETMASK                = -0x7fdf96e6\n\tSIOCSIP6ADDRPOLICY            = -0x7fff965d\n\tSIOCSIPMSFILTER               = -0x7ffb964b\n\tSIOCSLGETREQ                  = -0x3fdf96b9\n\tSIOCSLIFADDR                  = -0x7f879690\n\tSIOCSLIFBRDADDR               = -0x7f879684\n\tSIOCSLIFDSTADDR               = -0x7f87968e\n\tSIOCSLIFFLAGS                 = -0x7f87968c\n\tSIOCSLIFGROUPNAME             = -0x7f879665\n\tSIOCSLIFINDEX                 = -0x7f87967a\n\tSIOCSLIFLNKINFO               = -0x7f879675\n\tSIOCSLIFMETRIC                = -0x7f879680\n\tSIOCSLIFMTU                   = -0x7f879687\n\tSIOCSLIFMUXID                 = -0x7f87967c\n\tSIOCSLIFNAME                  = -0x3f87967f\n\tSIOCSLIFNETMASK               = -0x7f879682\n\tSIOCSLIFPREFIX                = -0x3f879641\n\tSIOCSLIFSUBNET                = -0x7f879677\n\tSIOCSLIFTOKEN                 = -0x7f879679\n\tSIOCSLIFUSESRC                = -0x7f879650\n\tSIOCSLIFZONE                  = -0x7f879655\n\tSIOCSLOWAT                    = -0x7ffb8cfe\n\tSIOCSLSTAT                    = -0x7fdf96b8\n\tSIOCSMSFILTER                 = -0x7ffb964d\n\tSIOCSPGRP                     = -0x7ffb8cf8\n\tSIOCSPROMISC                  = -0x7ffb96d0\n\tSIOCSQPTR                     = -0x3ffb9648\n\tSIOCSSDSTATS                  = -0x3fdf96d2\n\tSIOCSSESTATS                  = -0x3fdf96d1\n\tSIOCSXARP                     = -0x7fff965a\n\tSIOCTMYADDR                   = -0x3ff79670\n\tSIOCTMYSITE                   = -0x3ff7966e\n\tSIOCTONLINK                   = -0x3ff7966f\n\tSIOCUPPER                     = -0x7fdf96d8\n\tSIOCX25RCV                    = -0x3fdf96c4\n\tSIOCX25TBL                    = -0x3fdf96c3\n\tSIOCX25XMT                    = -0x3fdf96c5\n\tSIOCXPROTO                    = 0x20007337\n\tSOCK_CLOEXEC                  = 0x80000\n\tSOCK_DGRAM                    = 0x1\n\tSOCK_NDELAY                   = 0x200000\n\tSOCK_NONBLOCK                 = 0x100000\n\tSOCK_RAW                      = 0x4\n\tSOCK_RDM                      = 0x5\n\tSOCK_SEQPACKET                = 0x6\n\tSOCK_STREAM                   = 0x2\n\tSOCK_TYPE_MASK                = 0xffff\n\tSOL_FILTER                    = 0xfffc\n\tSOL_PACKET                    = 0xfffd\n\tSOL_ROUTE                     = 0xfffe\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x80\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_ALL                        = 0x3f\n\tSO_ALLZONES                   = 0x1014\n\tSO_ANON_MLP                   = 0x100a\n\tSO_ATTACH_FILTER              = 0x40000001\n\tSO_BAND                       = 0x4000\n\tSO_BROADCAST                  = 0x20\n\tSO_COPYOPT                    = 0x80000\n\tSO_DEBUG                      = 0x1\n\tSO_DELIM                      = 0x8000\n\tSO_DETACH_FILTER              = 0x40000002\n\tSO_DGRAM_ERRIND               = 0x200\n\tSO_DOMAIN                     = 0x100c\n\tSO_DONTLINGER                 = -0x81\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROPT                     = 0x40000\n\tSO_ERROR                      = 0x1007\n\tSO_EXCLBIND                   = 0x1015\n\tSO_HIWAT                      = 0x10\n\tSO_ISNTTY                     = 0x800\n\tSO_ISTTY                      = 0x400\n\tSO_KEEPALIVE                  = 0x8\n\tSO_LINGER                     = 0x80\n\tSO_LOWAT                      = 0x20\n\tSO_MAC_EXEMPT                 = 0x100b\n\tSO_MAC_IMPLICIT               = 0x1016\n\tSO_MAXBLK                     = 0x100000\n\tSO_MAXPSZ                     = 0x8\n\tSO_MINPSZ                     = 0x4\n\tSO_MREADOFF                   = 0x80\n\tSO_MREADON                    = 0x40\n\tSO_NDELOFF                    = 0x200\n\tSO_NDELON                     = 0x100\n\tSO_NODELIM                    = 0x10000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PROTOTYPE                  = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVPSH                     = 0x100d\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_READOPT                    = 0x1\n\tSO_RECVUCRED                  = 0x400\n\tSO_REUSEADDR                  = 0x4\n\tSO_SECATTR                    = 0x1011\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_STRHOLD                    = 0x20000\n\tSO_TAIL                       = 0x200000\n\tSO_TIMESTAMP                  = 0x1013\n\tSO_TONSTOP                    = 0x2000\n\tSO_TOSTOP                     = 0x1000\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_VRRP                       = 0x1017\n\tSO_WROFF                      = 0x2\n\tS_ENFMT                       = 0x400\n\tS_IAMB                        = 0x1ff\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFDOOR                      = 0xd000\n\tS_IFIFO                       = 0x1000\n\tS_IFLNK                       = 0xa000\n\tS_IFMT                        = 0xf000\n\tS_IFNAM                       = 0x5000\n\tS_IFPORT                      = 0xe000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_INSEM                       = 0x1\n\tS_INSHD                       = 0x2\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXGRP                       = 0x8\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x800\n\tTAB2                          = 0x1000\n\tTAB3                          = 0x1800\n\tTABDLY                        = 0x1800\n\tTCFLSH                        = 0x5407\n\tTCGETA                        = 0x5401\n\tTCGETS                        = 0x540d\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_ABORT_THRESHOLD           = 0x11\n\tTCP_ANONPRIVBIND              = 0x20\n\tTCP_CONGESTION                = 0x25\n\tTCP_CONN_ABORT_THRESHOLD      = 0x13\n\tTCP_CONN_NOTIFY_THRESHOLD     = 0x12\n\tTCP_CORK                      = 0x18\n\tTCP_EXCLBIND                  = 0x21\n\tTCP_INIT_CWND                 = 0x15\n\tTCP_KEEPALIVE                 = 0x8\n\tTCP_KEEPALIVE_ABORT_THRESHOLD = 0x17\n\tTCP_KEEPALIVE_THRESHOLD       = 0x16\n\tTCP_KEEPCNT                   = 0x23\n\tTCP_KEEPIDLE                  = 0x22\n\tTCP_KEEPINTVL                 = 0x24\n\tTCP_LINGER2                   = 0x1c\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MSS                       = 0x218\n\tTCP_NODELAY                   = 0x1\n\tTCP_NOTIFY_THRESHOLD          = 0x10\n\tTCP_RECVDSTADDR               = 0x14\n\tTCP_RTO_INITIAL               = 0x19\n\tTCP_RTO_MAX                   = 0x1b\n\tTCP_RTO_MIN                   = 0x1a\n\tTCSAFLUSH                     = 0x5410\n\tTCSBRK                        = 0x5405\n\tTCSETA                        = 0x5402\n\tTCSETAF                       = 0x5404\n\tTCSETAW                       = 0x5403\n\tTCSETS                        = 0x540e\n\tTCSETSF                       = 0x5410\n\tTCSETSW                       = 0x540f\n\tTCXONC                        = 0x5406\n\tTIMER_ABSTIME                 = 0x1\n\tTIMER_RELTIME                 = 0x0\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x747a\n\tTIOCCDTR                      = 0x7478\n\tTIOCCILOOP                    = 0x746c\n\tTIOCEXCL                      = 0x740d\n\tTIOCFLUSH                     = 0x7410\n\tTIOCGETC                      = 0x7412\n\tTIOCGETD                      = 0x7400\n\tTIOCGETP                      = 0x7408\n\tTIOCGLTC                      = 0x7474\n\tTIOCGPGRP                     = 0x7414\n\tTIOCGPPS                      = 0x547d\n\tTIOCGPPSEV                    = 0x547f\n\tTIOCGSID                      = 0x7416\n\tTIOCGSOFTCAR                  = 0x5469\n\tTIOCGWINSZ                    = 0x5468\n\tTIOCHPCL                      = 0x7402\n\tTIOCKBOF                      = 0x5409\n\tTIOCKBON                      = 0x5408\n\tTIOCLBIC                      = 0x747e\n\tTIOCLBIS                      = 0x747f\n\tTIOCLGET                      = 0x747c\n\tTIOCLSET                      = 0x747d\n\tTIOCMBIC                      = 0x741c\n\tTIOCMBIS                      = 0x741b\n\tTIOCMGET                      = 0x741d\n\tTIOCMSET                      = 0x741a\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x7471\n\tTIOCNXCL                      = 0x740e\n\tTIOCOUTQ                      = 0x7473\n\tTIOCREMOTE                    = 0x741e\n\tTIOCSBRK                      = 0x747b\n\tTIOCSCTTY                     = 0x7484\n\tTIOCSDTR                      = 0x7479\n\tTIOCSETC                      = 0x7411\n\tTIOCSETD                      = 0x7401\n\tTIOCSETN                      = 0x740a\n\tTIOCSETP                      = 0x7409\n\tTIOCSIGNAL                    = 0x741f\n\tTIOCSILOOP                    = 0x746d\n\tTIOCSLTC                      = 0x7475\n\tTIOCSPGRP                     = 0x7415\n\tTIOCSPPS                      = 0x547e\n\tTIOCSSOFTCAR                  = 0x546a\n\tTIOCSTART                     = 0x746e\n\tTIOCSTI                       = 0x7417\n\tTIOCSTOP                      = 0x746f\n\tTIOCSWINSZ                    = 0x5467\n\tTOSTOP                        = 0x100\n\tUTIME_NOW                     = -0x1\n\tUTIME_OMIT                    = -0x2\n\tVCEOF                         = 0x8\n\tVCEOL                         = 0x9\n\tVDISCARD                      = 0xd\n\tVDSUSP                        = 0xb\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVERASE2                       = 0x11\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xf\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xc\n\tVSTART                        = 0x8\n\tVSTATUS                       = 0x10\n\tVSTOP                         = 0x9\n\tVSUSP                         = 0xa\n\tVSWTCH                        = 0x7\n\tVT0                           = 0x0\n\tVT1                           = 0x4000\n\tVTDLY                         = 0x4000\n\tVTIME                         = 0x5\n\tVWERASE                       = 0xe\n\tWCONTFLG                      = 0xffff\n\tWCONTINUED                    = 0x8\n\tWCOREFLG                      = 0x80\n\tWEXITED                       = 0x1\n\tWNOHANG                       = 0x40\n\tWNOWAIT                       = 0x80\n\tWOPTMASK                      = 0xcf\n\tWRAP                          = 0x20000\n\tWSIGMASK                      = 0x7f\n\tWSTOPFLG                      = 0x7f\n\tWSTOPPED                      = 0x4\n\tWTRAPPED                      = 0x2\n\tWUNTRACED                     = 0x4\n\tXCASE                         = 0x4\n\tXTABS                         = 0x1800\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x39)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x2f)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x31)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOCKUNMAPPED   = syscall.Errno(0x48)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTACTIVE      = syscall.Errno(0x49)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTRECOVERABLE = syscall.Errno(0x3b)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x30)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0x3a)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMOTE         = syscall.Errno(0x42)\n\tERESTART        = syscall.Errno(0x5b)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGABRT    = syscall.Signal(0x6)\n\tSIGALRM    = syscall.Signal(0xe)\n\tSIGBUS     = syscall.Signal(0xa)\n\tSIGCANCEL  = syscall.Signal(0x24)\n\tSIGCHLD    = syscall.Signal(0x12)\n\tSIGCLD     = syscall.Signal(0x12)\n\tSIGCONT    = syscall.Signal(0x19)\n\tSIGEMT     = syscall.Signal(0x7)\n\tSIGFPE     = syscall.Signal(0x8)\n\tSIGFREEZE  = syscall.Signal(0x22)\n\tSIGHUP     = syscall.Signal(0x1)\n\tSIGILL     = syscall.Signal(0x4)\n\tSIGINFO    = syscall.Signal(0x29)\n\tSIGINT     = syscall.Signal(0x2)\n\tSIGIO      = syscall.Signal(0x16)\n\tSIGIOT     = syscall.Signal(0x6)\n\tSIGJVM1    = syscall.Signal(0x27)\n\tSIGJVM2    = syscall.Signal(0x28)\n\tSIGKILL    = syscall.Signal(0x9)\n\tSIGLOST    = syscall.Signal(0x25)\n\tSIGLWP     = syscall.Signal(0x21)\n\tSIGPIPE    = syscall.Signal(0xd)\n\tSIGPOLL    = syscall.Signal(0x16)\n\tSIGPROF    = syscall.Signal(0x1d)\n\tSIGPWR     = syscall.Signal(0x13)\n\tSIGQUIT    = syscall.Signal(0x3)\n\tSIGSEGV    = syscall.Signal(0xb)\n\tSIGSTOP    = syscall.Signal(0x17)\n\tSIGSYS     = syscall.Signal(0xc)\n\tSIGTERM    = syscall.Signal(0xf)\n\tSIGTHAW    = syscall.Signal(0x23)\n\tSIGTRAP    = syscall.Signal(0x5)\n\tSIGTSTP    = syscall.Signal(0x18)\n\tSIGTTIN    = syscall.Signal(0x1a)\n\tSIGTTOU    = syscall.Signal(0x1b)\n\tSIGURG     = syscall.Signal(0x15)\n\tSIGUSR1    = syscall.Signal(0x10)\n\tSIGUSR2    = syscall.Signal(0x11)\n\tSIGVTALRM  = syscall.Signal(0x1c)\n\tSIGWAITING = syscall.Signal(0x20)\n\tSIGWINCH   = syscall.Signal(0x14)\n\tSIGXCPU    = syscall.Signal(0x1e)\n\tSIGXFSZ    = syscall.Signal(0x1f)\n\tSIGXRES    = syscall.Signal(0x26)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock situation detected/avoided\"},\n\t{46, \"ENOLCK\", \"no record locks available\"},\n\t{47, \"ECANCELED\", \"operation canceled\"},\n\t{48, \"ENOTSUP\", \"operation not supported\"},\n\t{49, \"EDQUOT\", \"disc quota exceeded\"},\n\t{50, \"EBADE\", \"bad exchange descriptor\"},\n\t{51, \"EBADR\", \"bad request descriptor\"},\n\t{52, \"EXFULL\", \"message tables full\"},\n\t{53, \"ENOANO\", \"anode table overflow\"},\n\t{54, \"EBADRQC\", \"bad request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock\"},\n\t{57, \"EBFONT\", \"bad font file format\"},\n\t{58, \"EOWNERDEAD\", \"owner of the lock died\"},\n\t{59, \"ENOTRECOVERABLE\", \"lock is not recoverable\"},\n\t{60, \"ENOSTR\", \"not a stream device\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of stream resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"ELOCKUNMAPPED\", \"locked lock was unmapped \"},\n\t{73, \"ENOTACTIVE\", \"facility is not active\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"not a data message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in more shared libraries than system limit\"},\n\t{87, \"ELIBEXEC\", \"can not exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"illegal byte sequence\"},\n\t{89, \"ENOSYS\", \"operation not applicable\"},\n\t{90, \"ELOOP\", \"number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS\"},\n\t{91, \"ERESTART\", \"error 91\"},\n\t{92, \"ESTRPIPE\", \"error 92\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"option not supported by protocol\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"EOPNOTSUPP\", \"operation not supported on transport endpoint\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection because of reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after socket shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale NFS file handle\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal Instruction\"},\n\t{5, \"SIGTRAP\", \"trace/Breakpoint Trap\"},\n\t{6, \"SIGABRT\", \"abort\"},\n\t{7, \"SIGEMT\", \"emulation Trap\"},\n\t{8, \"SIGFPE\", \"arithmetic Exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus Error\"},\n\t{11, \"SIGSEGV\", \"segmentation Fault\"},\n\t{12, \"SIGSYS\", \"bad System Call\"},\n\t{13, \"SIGPIPE\", \"broken Pipe\"},\n\t{14, \"SIGALRM\", \"alarm Clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user Signal 1\"},\n\t{17, \"SIGUSR2\", \"user Signal 2\"},\n\t{18, \"SIGCHLD\", \"child Status Changed\"},\n\t{19, \"SIGPWR\", \"power-Fail/Restart\"},\n\t{20, \"SIGWINCH\", \"window Size Change\"},\n\t{21, \"SIGURG\", \"urgent Socket Condition\"},\n\t{22, \"SIGIO\", \"pollable Event\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped (user)\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual Timer Expired\"},\n\t{29, \"SIGPROF\", \"profiling Timer Expired\"},\n\t{30, \"SIGXCPU\", \"cpu Limit Exceeded\"},\n\t{31, \"SIGXFSZ\", \"file Size Limit Exceeded\"},\n\t{32, \"SIGWAITING\", \"no runnable lwp\"},\n\t{33, \"SIGLWP\", \"inter-lwp signal\"},\n\t{34, \"SIGFREEZE\", \"checkpoint Freeze\"},\n\t{35, \"SIGTHAW\", \"checkpoint Thaw\"},\n\t{36, \"SIGCANCEL\", \"thread Cancellation\"},\n\t{37, \"SIGLOST\", \"resource Lost\"},\n\t{38, \"SIGXRES\", \"resource Control Exceeded\"},\n\t{39, \"SIGJVM1\", \"reserved for JVM 1\"},\n\t{40, \"SIGJVM2\", \"reserved for JVM 2\"},\n\t{41, \"SIGINFO\", \"information Request\"},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Hand edited based on zerrors_linux_s390x.go\n// TODO: auto-generate.\n\npackage unix\n\nconst (\n\tBRKINT                          = 0x0001\n\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": "vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"arm\", \"arm64\"). DO NOT EDIT.\n\n//go:build linux && (arm || arm64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsArm is the registers used by arm binaries.\ntype PtraceRegsArm struct {\n\tUregs [18]uint32\n}\n\n// PtraceGetRegsArm fetches the registers used by arm binaries.\nfunc PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsArm sets the registers used by arm binaries.\nfunc PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsArm64 is the registers used by arm64 binaries.\ntype PtraceRegsArm64 struct {\n\tRegs   [31]uint64\n\tSp     uint64\n\tPc     uint64\n\tPstate uint64\n}\n\n// PtraceGetRegsArm64 fetches the registers used by arm64 binaries.\nfunc PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsArm64 sets the registers used by arm64 binaries.\nfunc PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go",
    "content": "// Code generated by linux/mkall.go generatePtraceRegSet(\"arm64\"). DO NOT EDIT.\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceGetRegSetArm64 fetches the registers used by arm64 binaries.\nfunc PtraceGetRegSetArm64(pid, addr int, regsout *PtraceRegsArm64) error {\n\tiovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))}\n\treturn ptracePtr(PTRACE_GETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec))\n}\n\n// PtraceSetRegSetArm64 sets the registers used by arm64 binaries.\nfunc PtraceSetRegSetArm64(pid, addr int, regs *PtraceRegsArm64) error {\n\tiovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))}\n\treturn ptracePtr(PTRACE_SETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"mips\", \"mips64\"). DO NOT EDIT.\n\n//go:build linux && (mips || mips64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsMips is the registers used by mips binaries.\ntype PtraceRegsMips struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips fetches the registers used by mips binaries.\nfunc PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips sets the registers used by mips binaries.\nfunc PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsMips64 is the registers used by mips64 binaries.\ntype PtraceRegsMips64 struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips64 fetches the registers used by mips64 binaries.\nfunc PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips64 sets the registers used by mips64 binaries.\nfunc PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"mipsle\", \"mips64le\"). DO NOT EDIT.\n\n//go:build linux && (mipsle || mips64le)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsMipsle is the registers used by mipsle binaries.\ntype PtraceRegsMipsle struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMipsle fetches the registers used by mipsle binaries.\nfunc PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMipsle sets the registers used by mipsle binaries.\nfunc PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsMips64le is the registers used by mips64le binaries.\ntype PtraceRegsMips64le struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips64le fetches the registers used by mips64le binaries.\nfunc PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips64le sets the registers used by mips64le binaries.\nfunc PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zptrace_x86_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"386\", \"amd64\"). DO NOT EDIT.\n\n//go:build linux && (386 || amd64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegs386 is the registers used by 386 binaries.\ntype PtraceRegs386 struct {\n\tEbx      int32\n\tEcx      int32\n\tEdx      int32\n\tEsi      int32\n\tEdi      int32\n\tEbp      int32\n\tEax      int32\n\tXds      int32\n\tXes      int32\n\tXfs      int32\n\tXgs      int32\n\tOrig_eax int32\n\tEip      int32\n\tXcs      int32\n\tEflags   int32\n\tEsp      int32\n\tXss      int32\n}\n\n// PtraceGetRegs386 fetches the registers used by 386 binaries.\nfunc PtraceGetRegs386(pid int, regsout *PtraceRegs386) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegs386 sets the registers used by 386 binaries.\nfunc PtraceSetRegs386(pid int, regs *PtraceRegs386) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsAmd64 is the registers used by amd64 binaries.\ntype PtraceRegsAmd64 struct {\n\tR15      uint64\n\tR14      uint64\n\tR13      uint64\n\tR12      uint64\n\tRbp      uint64\n\tRbx      uint64\n\tR11      uint64\n\tR10      uint64\n\tR9       uint64\n\tR8       uint64\n\tRax      uint64\n\tRcx      uint64\n\tRdx      uint64\n\tRsi      uint64\n\tRdi      uint64\n\tOrig_rax uint64\n\tRip      uint64\n\tCs       uint64\n\tEflags   uint64\n\tRsp      uint64\n\tSs       uint64\n\tFs_base  uint64\n\tGs_base  uint64\n\tDs       uint64\n\tEs       uint64\n\tFs       uint64\n\tGs       uint64\n}\n\n// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries.\nfunc PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsAmd64 sets the registers used by amd64 binaries.\nfunc PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go",
    "content": "// go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc\n\npackage unix\n\n/*\n#include <stdint.h>\n#include <stddef.h>\nint utimes(uintptr_t, uintptr_t);\nint utimensat(int, uintptr_t, uintptr_t, int);\nint getcwd(uintptr_t, size_t);\nint accept(int, uintptr_t, uintptr_t);\nint getdirent(int, uintptr_t, size_t);\nint wait4(int, uintptr_t, int, uintptr_t);\nint ioctl(int, int, uintptr_t);\nint fcntl(uintptr_t, int, uintptr_t);\nint fsync_range(int, int, long long, long long);\nint acct(uintptr_t);\nint chdir(uintptr_t);\nint chroot(uintptr_t);\nint close(int);\nint dup(int);\nvoid exit(int);\nint faccessat(int, uintptr_t, unsigned int, int);\nint fchdir(int);\nint fchmod(int, unsigned int);\nint fchmodat(int, uintptr_t, unsigned int, int);\nint fchownat(int, uintptr_t, int, int, int);\nint fdatasync(int);\nint getpgid(int);\nint getpgrp();\nint getpid();\nint getppid();\nint getpriority(int, int);\nint getrusage(int, uintptr_t);\nint getsid(int);\nint kill(int, int);\nint syslog(int, uintptr_t, size_t);\nint mkdir(int, uintptr_t, unsigned int);\nint mkdirat(int, uintptr_t, unsigned int);\nint mkfifo(uintptr_t, unsigned int);\nint mknod(uintptr_t, unsigned int, int);\nint mknodat(int, uintptr_t, unsigned int, int);\nint nanosleep(uintptr_t, uintptr_t);\nint open64(uintptr_t, int, unsigned int);\nint openat(int, uintptr_t, int, unsigned int);\nint read(int, uintptr_t, size_t);\nint readlink(uintptr_t, uintptr_t, size_t);\nint renameat(int, uintptr_t, int, uintptr_t);\nint setdomainname(uintptr_t, size_t);\nint sethostname(uintptr_t, size_t);\nint setpgid(int, int);\nint setsid();\nint settimeofday(uintptr_t);\nint setuid(int);\nint setgid(int);\nint setpriority(int, int, int);\nint statx(int, uintptr_t, int, int, uintptr_t);\nint sync();\nuintptr_t times(uintptr_t);\nint umask(int);\nint uname(uintptr_t);\nint unlink(uintptr_t);\nint unlinkat(int, uintptr_t, int);\nint ustat(int, uintptr_t);\nint write(int, uintptr_t, size_t);\nint dup2(int, int);\nint posix_fadvise64(int, long long, long long, int);\nint fchown(int, int, int);\nint fstat(int, uintptr_t);\nint fstatat(int, uintptr_t, uintptr_t, int);\nint fstatfs(int, uintptr_t);\nint ftruncate(int, long long);\nint getegid();\nint geteuid();\nint getgid();\nint getuid();\nint lchown(uintptr_t, int, int);\nint listen(int, int);\nint lstat(uintptr_t, uintptr_t);\nint pause();\nint pread64(int, uintptr_t, size_t, long long);\nint pwrite64(int, uintptr_t, size_t, long long);\n#define c_select select\nint select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint setregid(int, int);\nint setreuid(int, int);\nint shutdown(int, int);\nlong long splice(int, uintptr_t, int, uintptr_t, int, int);\nint stat(uintptr_t, uintptr_t);\nint statfs(uintptr_t, uintptr_t);\nint truncate(uintptr_t, long long);\nint bind(int, uintptr_t, uintptr_t);\nint connect(int, uintptr_t, uintptr_t);\nint getgroups(int, uintptr_t);\nint setgroups(int, uintptr_t);\nint getsockopt(int, int, int, uintptr_t, uintptr_t);\nint setsockopt(int, int, int, uintptr_t, uintptr_t);\nint socket(int, int, int);\nint socketpair(int, int, int, uintptr_t);\nint getpeername(int, uintptr_t, uintptr_t);\nint getsockname(int, uintptr_t, uintptr_t);\nint recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint nrecvmsg(int, uintptr_t, int);\nint nsendmsg(int, uintptr_t, int);\nint munmap(uintptr_t, uintptr_t);\nint madvise(uintptr_t, size_t, int);\nint mprotect(uintptr_t, size_t, int);\nint mlock(uintptr_t, size_t);\nint mlockall(int);\nint msync(uintptr_t, size_t, int);\nint munlock(uintptr_t, size_t);\nint munlockall();\nint pipe(uintptr_t);\nint poll(uintptr_t, int, int);\nint gettimeofday(uintptr_t, uintptr_t);\nint time(uintptr_t);\nint utime(uintptr_t, uintptr_t);\nunsigned long long getsystemcfg(int);\nint umount(uintptr_t);\nint getrlimit64(int, uintptr_t);\nlong long lseek64(int, long long, int);\nuintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long);\n\n*/\nimport \"C\"\nimport (\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getcwd(buf []byte) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirent(fd int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {\n\tr0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))\n\twpid = Pid_t(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))\n\tr = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))\n\tval = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsyncRange(fd int, how int, start int64, length int64) (err error) {\n\tr0, er := C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.acct(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.chdir(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.chroot(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\tr0, er := C.close(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, er := C.dup(C.int(oldfd))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tC.exit(C.int(code))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\tr0, er := C.fchdir(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\tr0, er := C.fchmod(C.int(fd), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\tr0, er := C.fdatasync(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, er := C.getpgid(C.int(pid))\n\tpgid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pid int) {\n\tr0, _ := C.getpgrp()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := C.getpid()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := C.getppid()\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, er := C.getpriority(C.int(which), C.int(who))\n\tprio = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\tr0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, er := C.getsid(C.int(pid))\n\tsid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\tr0, er := C.kill(C.int(pid), C.int(sig))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(dirfd int, path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\tr0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tvar _p2 int\n\t_p2 = len(buf)\n\tr0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(oldpath)))\n\t_p1 := uintptr(unsafe.Pointer(C.CString(newpath)))\n\tr0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\tr0, er := C.setpgid(C.int(pid), C.int(pgid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, er := C.setsid()\n\tpid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\tr0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\tr0, er := C.setuid(C.int(uid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\tr0, er := C.setgid(C.int(uid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\tr0, er := C.setpriority(C.int(which), C.int(who), C.int(prio))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tC.sync()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms))))\n\tticks = uintptr(r0)\n\tif uintptr(r0) == ^uintptr(0) && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := C.umask(C.int(mask))\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\tr0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.unlink(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\tr0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\tr0, er := C.dup2(C.int(oldfd), C.int(newfd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\tr0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\tr0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *Stat_t) (err error) {\n\tr0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\tr0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\tr0, er := C.ftruncate(C.int(fd), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := C.getegid()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := C.geteuid()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := C.getgid()\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := C.getuid()\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\tr0, er := C.listen(C.int(s), C.int(n))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *Stat_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\tr0, er := C.pause()\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, er := C.c_select(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\tr0, er := C.setregid(C.int(rgid), C.int(egid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\tr0, er := C.setreuid(C.int(ruid), C.int(euid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\tr0, er := C.shutdown(C.int(fd), C.int(how))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags))\n\tn = int64(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, statptr *Stat_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(statptr))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\tr0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\tr0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))\n\tnn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\tr0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\tr0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\tr0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, er := C.socket(C.int(domain), C.int(typ), C.int(proto))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\tr0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, er := C.nrecvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, er := C.nsendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\tr0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\tr0, er := C.mlockall(C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\tr0, er := C.munlockall()\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\tr0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *Timeval, tzp *Timezone) (err error) {\n\tr0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t))))\n\ttt = Time_t(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsystemcfg(label int) (n uint64) {\n\tr0, _ := C.getsystemcfg(C.int(label))\n\tn = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc umount(target string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(target)))\n\tr0, er := C.umount(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\tr0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence))\n\toff = int64(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset))\n\txaddr = uintptr(r0)\n\tif uintptr(r0) == ^uintptr(0) && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutimes(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutimensat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), flag)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getcwd(buf []byte) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, e1 := callgetcwd(uintptr(unsafe.Pointer(_p0)), len(buf))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, e1 := callaccept(s, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirent(fd int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, e1 := callgetdirent(fd, uintptr(unsafe.Pointer(_p0)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {\n\tr0, e1 := callwait4(int(pid), uintptr(unsafe.Pointer(status)), options, uintptr(unsafe.Pointer(rusage)))\n\twpid = Pid_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\t_, e1 := callioctl(fd, req, arg)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\t_, e1 := callioctl_ptr(fd, req, arg)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {\n\tr0, e1 := callfcntl(fd, cmd, uintptr(arg))\n\tr = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {\n\t_, e1 := callfcntl(fd, cmd, uintptr(unsafe.Pointer(lk)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, e1 := callfcntl(uintptr(fd), cmd, uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsyncRange(fd int, how int, start int64, length int64) (err error) {\n\t_, e1 := callfsync_range(fd, how, start, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callacct(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callchdir(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callchroot(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, e1 := callclose(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, e1 := calldup(oldfd)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tcallexit(code)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfaccessat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, e1 := callfchdir(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, e1 := callfchmod(fd, mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfchmodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfchownat(dirfd, uintptr(unsafe.Pointer(_p0)), uid, gid, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, e1 := callfdatasync(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, e1 := callgetpgid(pid)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pid int) {\n\tr0, _ := callgetpgrp()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := callgetpid()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := callgetppid()\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, e1 := callgetpriority(which, who)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, e1 := callgetrusage(who, uintptr(unsafe.Pointer(rusage)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, e1 := callgetsid(pid)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\t_, e1 := callkill(pid, int(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, e1 := callsyslog(typ, uintptr(unsafe.Pointer(_p0)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkdir(dirfd, uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkdirat(dirfd, uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkfifo(uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmknod(uintptr(unsafe.Pointer(_p0)), mode, dev)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmknodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, dev)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, e1 := callnanosleep(uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, e1 := callopen64(uintptr(unsafe.Pointer(_p0)), mode, perm)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, e1 := callopenat(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mode)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callread(fd, uintptr(unsafe.Pointer(_p0)), len(p))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tr0, e1 := callreadlink(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callrenameat(olddirfd, uintptr(unsafe.Pointer(_p0)), newdirfd, uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, e1 := callsetdomainname(uintptr(unsafe.Pointer(_p0)), len(p))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, e1 := callsethostname(uintptr(unsafe.Pointer(_p0)), len(p))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, e1 := callsetpgid(pid, pgid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, e1 := callsetsid()\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, e1 := callsettimeofday(uintptr(unsafe.Pointer(tv)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, e1 := callsetuid(uid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\t_, e1 := callsetgid(uid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, e1 := callsetpriority(which, who, prio)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstatx(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mask, uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tcallsync()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, e1 := calltimes(uintptr(unsafe.Pointer(tms)))\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := callumask(mask)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, e1 := calluname(uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callunlink(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callunlinkat(dirfd, uintptr(unsafe.Pointer(_p0)), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, e1 := callustat(dev, uintptr(unsafe.Pointer(ubuf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callwrite(fd, uintptr(unsafe.Pointer(_p0)), len(p))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, e1 := calldup2(oldfd, newfd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, e1 := callposix_fadvise64(fd, offset, length, advice)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, e1 := callfchown(fd, uid, gid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *Stat_t) (err error) {\n\t_, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfstatat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, e1 := callfstatfs(fd, uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, e1 := callftruncate(fd, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := callgetegid()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := callgeteuid()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := callgetgid()\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := callgetuid()\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calllchown(uintptr(unsafe.Pointer(_p0)), uid, gid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, e1 := calllisten(s, n)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calllstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, e1 := callpause()\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callpread64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callpwrite64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, e1 := callselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, e1 := callsetregid(rgid, egid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, e1 := callsetreuid(ruid, euid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, e1 := callshutdown(fd, how)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, e1 := callsplice(rfd, uintptr(unsafe.Pointer(roff)), wfd, uintptr(unsafe.Pointer(woff)), len, flags)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, statptr *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statptr)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstatfs(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calltruncate(uintptr(unsafe.Pointer(_p0)), length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e1 := callbind(s, uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e1 := callconnect(s, uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, e1 := callgetgroups(n, uintptr(unsafe.Pointer(list)))\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, e1 := callsetgroups(n, uintptr(unsafe.Pointer(list)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, e1 := callgetsockopt(s, level, name, uintptr(val), uintptr(unsafe.Pointer(vallen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, e1 := callsetsockopt(s, level, name, uintptr(val), vallen)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, e1 := callsocket(domain, typ, proto)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, e1 := callsocketpair(domain, typ, proto, uintptr(unsafe.Pointer(fd)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e1 := callgetpeername(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e1 := callgetsockname(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callrecvfrom(fd, uintptr(unsafe.Pointer(_p0)), len(p), flags, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, e1 := callsendto(s, uintptr(unsafe.Pointer(_p0)), len(buf), flags, uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, e1 := callnrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, e1 := callnsendmsg(s, uintptr(unsafe.Pointer(msg)), flags)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, e1 := callmunmap(addr, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmadvise(uintptr(unsafe.Pointer(_p0)), len(b), advice)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmprotect(uintptr(unsafe.Pointer(_p0)), len(b), prot)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmlock(uintptr(unsafe.Pointer(_p0)), len(b))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, e1 := callmlockall(flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmsync(uintptr(unsafe.Pointer(_p0)), len(b), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmunlock(uintptr(unsafe.Pointer(_p0)), len(b))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, e1 := callmunlockall()\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, e1 := callpipe(uintptr(unsafe.Pointer(p)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, e1 := callpoll(uintptr(unsafe.Pointer(fds)), nfds, timeout)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *Timeval, tzp *Timezone) (err error) {\n\t_, e1 := callgettimeofday(uintptr(unsafe.Pointer(tv)), uintptr(unsafe.Pointer(tzp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, e1 := calltime(uintptr(unsafe.Pointer(t)))\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutime(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsystemcfg(label int) (n uint64) {\n\tr0, _ := callgetsystemcfg(label)\n\tn = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc umount(target string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callumount(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, e1 := calllseek(fd, offset, whence)\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, e1 := callmmap64(addr, length, prot, flags, fd, offset)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64 && gc\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_accept accept \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getdirent getdirent \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fsync_range fsync_range \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_acct acct \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_chdir chdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_chroot chroot \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_close close \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_dup dup \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_exit exit \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fdatasync fdatasync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpid getpid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getppid getppid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsid getsid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_kill kill \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_syslog syslog \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mknod mknod \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_open64 open64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_openat openat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_read read \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_readlink readlink \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_renameat renameat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setdomainname setdomainname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sethostname sethostname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setsid setsid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setuid setuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setgid setgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_statx statx \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sync sync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_times times \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_umask umask \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_uname uname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_unlink unlink \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ustat ustat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_write write \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_posix_fadvise64 posix_fadvise64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchown fchown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstat fstat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getegid getegid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getgid getgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getuid getuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lchown lchown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_listen listen \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lstat lstat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pause pause \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pread64 pread64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pwrite64 pwrite64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_select select \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pselect pselect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setregid setregid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_splice splice \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_stat stat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_statfs statfs \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_truncate truncate \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_bind bind \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_connect connect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_socket socket \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sendto sendto \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nrecvmsg nrecvmsg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nsendmsg nsendmsg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munmap munmap \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_madvise madvise \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mlock mlock \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_msync msync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munlock munlock \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pipe pipe \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_poll poll \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_time time \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_utime utime \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_umount umount \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lseek lseek \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mmap64 mmap64 \"libc.a/shr_64.o\"\n\n//go:linkname libc_utimes libc_utimes\n//go:linkname libc_utimensat libc_utimensat\n//go:linkname libc_getcwd libc_getcwd\n//go:linkname libc_accept libc_accept\n//go:linkname libc_getdirent libc_getdirent\n//go:linkname libc_wait4 libc_wait4\n//go:linkname libc_ioctl libc_ioctl\n//go:linkname libc_fcntl libc_fcntl\n//go:linkname libc_fsync_range libc_fsync_range\n//go:linkname libc_acct libc_acct\n//go:linkname libc_chdir libc_chdir\n//go:linkname libc_chroot libc_chroot\n//go:linkname libc_close libc_close\n//go:linkname libc_dup libc_dup\n//go:linkname libc_exit libc_exit\n//go:linkname libc_faccessat libc_faccessat\n//go:linkname libc_fchdir libc_fchdir\n//go:linkname libc_fchmod libc_fchmod\n//go:linkname libc_fchmodat libc_fchmodat\n//go:linkname libc_fchownat libc_fchownat\n//go:linkname libc_fdatasync libc_fdatasync\n//go:linkname libc_getpgid libc_getpgid\n//go:linkname libc_getpgrp libc_getpgrp\n//go:linkname libc_getpid libc_getpid\n//go:linkname libc_getppid libc_getppid\n//go:linkname libc_getpriority libc_getpriority\n//go:linkname libc_getrusage libc_getrusage\n//go:linkname libc_getsid libc_getsid\n//go:linkname libc_kill libc_kill\n//go:linkname libc_syslog libc_syslog\n//go:linkname libc_mkdir libc_mkdir\n//go:linkname libc_mkdirat libc_mkdirat\n//go:linkname libc_mkfifo libc_mkfifo\n//go:linkname libc_mknod libc_mknod\n//go:linkname libc_mknodat libc_mknodat\n//go:linkname libc_nanosleep libc_nanosleep\n//go:linkname libc_open64 libc_open64\n//go:linkname libc_openat libc_openat\n//go:linkname libc_read libc_read\n//go:linkname libc_readlink libc_readlink\n//go:linkname libc_renameat libc_renameat\n//go:linkname libc_setdomainname libc_setdomainname\n//go:linkname libc_sethostname libc_sethostname\n//go:linkname libc_setpgid libc_setpgid\n//go:linkname libc_setsid libc_setsid\n//go:linkname libc_settimeofday libc_settimeofday\n//go:linkname libc_setuid libc_setuid\n//go:linkname libc_setgid libc_setgid\n//go:linkname libc_setpriority libc_setpriority\n//go:linkname libc_statx libc_statx\n//go:linkname libc_sync libc_sync\n//go:linkname libc_times libc_times\n//go:linkname libc_umask libc_umask\n//go:linkname libc_uname libc_uname\n//go:linkname libc_unlink libc_unlink\n//go:linkname libc_unlinkat libc_unlinkat\n//go:linkname libc_ustat libc_ustat\n//go:linkname libc_write libc_write\n//go:linkname libc_dup2 libc_dup2\n//go:linkname libc_posix_fadvise64 libc_posix_fadvise64\n//go:linkname libc_fchown libc_fchown\n//go:linkname libc_fstat libc_fstat\n//go:linkname libc_fstatat libc_fstatat\n//go:linkname libc_fstatfs libc_fstatfs\n//go:linkname libc_ftruncate libc_ftruncate\n//go:linkname libc_getegid libc_getegid\n//go:linkname libc_geteuid libc_geteuid\n//go:linkname libc_getgid libc_getgid\n//go:linkname libc_getuid libc_getuid\n//go:linkname libc_lchown libc_lchown\n//go:linkname libc_listen libc_listen\n//go:linkname libc_lstat libc_lstat\n//go:linkname libc_pause libc_pause\n//go:linkname libc_pread64 libc_pread64\n//go:linkname libc_pwrite64 libc_pwrite64\n//go:linkname libc_select libc_select\n//go:linkname libc_pselect libc_pselect\n//go:linkname libc_setregid libc_setregid\n//go:linkname libc_setreuid libc_setreuid\n//go:linkname libc_shutdown libc_shutdown\n//go:linkname libc_splice libc_splice\n//go:linkname libc_stat libc_stat\n//go:linkname libc_statfs libc_statfs\n//go:linkname libc_truncate libc_truncate\n//go:linkname libc_bind libc_bind\n//go:linkname libc_connect libc_connect\n//go:linkname libc_getgroups libc_getgroups\n//go:linkname libc_setgroups libc_setgroups\n//go:linkname libc_getsockopt libc_getsockopt\n//go:linkname libc_setsockopt libc_setsockopt\n//go:linkname libc_socket libc_socket\n//go:linkname libc_socketpair libc_socketpair\n//go:linkname libc_getpeername libc_getpeername\n//go:linkname libc_getsockname libc_getsockname\n//go:linkname libc_recvfrom libc_recvfrom\n//go:linkname libc_sendto libc_sendto\n//go:linkname libc_nrecvmsg libc_nrecvmsg\n//go:linkname libc_nsendmsg libc_nsendmsg\n//go:linkname libc_munmap libc_munmap\n//go:linkname libc_madvise libc_madvise\n//go:linkname libc_mprotect libc_mprotect\n//go:linkname libc_mlock libc_mlock\n//go:linkname libc_mlockall libc_mlockall\n//go:linkname libc_msync libc_msync\n//go:linkname libc_munlock libc_munlock\n//go:linkname libc_munlockall libc_munlockall\n//go:linkname libc_pipe libc_pipe\n//go:linkname libc_poll libc_poll\n//go:linkname libc_gettimeofday libc_gettimeofday\n//go:linkname libc_time libc_time\n//go:linkname libc_utime libc_utime\n//go:linkname libc_getsystemcfg libc_getsystemcfg\n//go:linkname libc_umount libc_umount\n//go:linkname libc_getrlimit libc_getrlimit\n//go:linkname libc_lseek libc_lseek\n//go:linkname libc_mmap64 libc_mmap64\n\ntype syscallFunc uintptr\n\nvar (\n\tlibc_utimes,\n\tlibc_utimensat,\n\tlibc_getcwd,\n\tlibc_accept,\n\tlibc_getdirent,\n\tlibc_wait4,\n\tlibc_ioctl,\n\tlibc_fcntl,\n\tlibc_fsync_range,\n\tlibc_acct,\n\tlibc_chdir,\n\tlibc_chroot,\n\tlibc_close,\n\tlibc_dup,\n\tlibc_exit,\n\tlibc_faccessat,\n\tlibc_fchdir,\n\tlibc_fchmod,\n\tlibc_fchmodat,\n\tlibc_fchownat,\n\tlibc_fdatasync,\n\tlibc_getpgid,\n\tlibc_getpgrp,\n\tlibc_getpid,\n\tlibc_getppid,\n\tlibc_getpriority,\n\tlibc_getrusage,\n\tlibc_getsid,\n\tlibc_kill,\n\tlibc_syslog,\n\tlibc_mkdir,\n\tlibc_mkdirat,\n\tlibc_mkfifo,\n\tlibc_mknod,\n\tlibc_mknodat,\n\tlibc_nanosleep,\n\tlibc_open64,\n\tlibc_openat,\n\tlibc_read,\n\tlibc_readlink,\n\tlibc_renameat,\n\tlibc_setdomainname,\n\tlibc_sethostname,\n\tlibc_setpgid,\n\tlibc_setsid,\n\tlibc_settimeofday,\n\tlibc_setuid,\n\tlibc_setgid,\n\tlibc_setpriority,\n\tlibc_statx,\n\tlibc_sync,\n\tlibc_times,\n\tlibc_umask,\n\tlibc_uname,\n\tlibc_unlink,\n\tlibc_unlinkat,\n\tlibc_ustat,\n\tlibc_write,\n\tlibc_dup2,\n\tlibc_posix_fadvise64,\n\tlibc_fchown,\n\tlibc_fstat,\n\tlibc_fstatat,\n\tlibc_fstatfs,\n\tlibc_ftruncate,\n\tlibc_getegid,\n\tlibc_geteuid,\n\tlibc_getgid,\n\tlibc_getuid,\n\tlibc_lchown,\n\tlibc_listen,\n\tlibc_lstat,\n\tlibc_pause,\n\tlibc_pread64,\n\tlibc_pwrite64,\n\tlibc_select,\n\tlibc_pselect,\n\tlibc_setregid,\n\tlibc_setreuid,\n\tlibc_shutdown,\n\tlibc_splice,\n\tlibc_stat,\n\tlibc_statfs,\n\tlibc_truncate,\n\tlibc_bind,\n\tlibc_connect,\n\tlibc_getgroups,\n\tlibc_setgroups,\n\tlibc_getsockopt,\n\tlibc_setsockopt,\n\tlibc_socket,\n\tlibc_socketpair,\n\tlibc_getpeername,\n\tlibc_getsockname,\n\tlibc_recvfrom,\n\tlibc_sendto,\n\tlibc_nrecvmsg,\n\tlibc_nsendmsg,\n\tlibc_munmap,\n\tlibc_madvise,\n\tlibc_mprotect,\n\tlibc_mlock,\n\tlibc_mlockall,\n\tlibc_msync,\n\tlibc_munlock,\n\tlibc_munlockall,\n\tlibc_pipe,\n\tlibc_poll,\n\tlibc_gettimeofday,\n\tlibc_time,\n\tlibc_utime,\n\tlibc_getsystemcfg,\n\tlibc_umount,\n\tlibc_getrlimit,\n\tlibc_lseek,\n\tlibc_mmap64 syscallFunc\n)\n\n// Implemented in runtime/syscall_aix.go.\nfunc rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimes)), 2, _p0, times, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimensat)), 4, uintptr(dirfd), _p0, times, uintptr(flag), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getcwd)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_accept)), 3, uintptr(s), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getdirent)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), status, uintptr(options), rusage, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), arg, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync_range)), 4, uintptr(fd), uintptr(how), uintptr(start), uintptr(length), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_acct)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chdir)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chroot)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callclose(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_close)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup(oldfd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup)), 1, uintptr(oldfd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callexit(code int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_exit)), 1, uintptr(code), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_faccessat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchdir(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchownat)), 5, uintptr(dirfd), _p0, uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfdatasync(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgid(pid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgrp() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpgrp)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetppid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getppid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrusage)), 2, uintptr(who), rusage, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsid(pid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callkill(pid int, sig int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_kill)), 2, uintptr(pid), uintptr(sig), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_syslog)), 3, uintptr(typ), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdir)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdirat)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkfifo)), 2, _p0, uintptr(mode), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknod)), 3, _p0, uintptr(mode), uintptr(dev), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(dev), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nanosleep)), 2, time, leftover, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_open64)), 3, _p0, uintptr(mode), uintptr(perm), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_openat)), 4, uintptr(dirfd), _p0, uintptr(flags), uintptr(mode), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_read)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_readlink)), 3, _p0, _p1, uintptr(_lenp1), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_renameat)), 4, uintptr(olddirfd), _p0, uintptr(newdirfd), _p1, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setdomainname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sethostname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setsid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_settimeofday)), 1, tv, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetuid(uid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgid(uid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setgid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statx)), 5, uintptr(dirfd), _p0, uintptr(flags), uintptr(mask), stat, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsync() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sync)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltimes(tms uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_times)), 1, tms, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumask(mask int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_umask)), 1, uintptr(mask), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calluname(buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_uname)), 1, buf, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlink)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlinkat)), 3, uintptr(dirfd), _p0, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ustat)), 2, uintptr(dev), ubuf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_write)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_posix_fadvise64)), 4, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstat)), 2, uintptr(fd), stat, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatat)), 4, uintptr(dirfd), _p0, stat, uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatfs)), 2, uintptr(fd), buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ftruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetegid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getegid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgeteuid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_geteuid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetuid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getuid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lchown)), 3, _p0, uintptr(uid), uintptr(gid), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllisten(s int, n int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_listen)), 2, uintptr(s), uintptr(n), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lstat)), 2, _p0, stat, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpause() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pause)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pread64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pwrite64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_select)), 5, uintptr(nfd), r, w, e, timeout, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_shutdown)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_splice)), 6, uintptr(rfd), roff, uintptr(wfd), woff, uintptr(len), uintptr(flags))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, statptr, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statfs)), 2, _p0, buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_truncate)), 2, _p0, uintptr(length), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_bind)), 3, uintptr(s), addr, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_connect)), 3, uintptr(s), addr, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgroups)), 2, uintptr(n), list, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setgroups)), 2, uintptr(n), list, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), fd, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpeername)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsockname)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvfrom)), 6, uintptr(fd), _p0, uintptr(_lenp0), uintptr(flags), from, fromlen)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendto)), 6, uintptr(s), _p0, uintptr(_lenp0), uintptr(flags), to, addrlen)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nrecvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nsendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munmap)), 2, addr, length, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_madvise)), 3, _p0, uintptr(_lenp0), uintptr(advice), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mprotect)), 3, _p0, uintptr(_lenp0), uintptr(prot), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlockall(flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_msync)), 3, _p0, uintptr(_lenp0), uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlockall() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlockall)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpipe(p uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_pipe)), 1, p, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_poll)), 3, fds, uintptr(nfds), uintptr(timeout), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_gettimeofday)), 2, tv, tzp, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltime(t uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_time)), 1, t, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utime)), 2, _p0, buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_umount)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mmap64)), 6, addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64 && gccgo\n\npackage unix\n\n/*\n#include <stdint.h>\nint utimes(uintptr_t, uintptr_t);\nint utimensat(int, uintptr_t, uintptr_t, int);\nint getcwd(uintptr_t, size_t);\nint accept(int, uintptr_t, uintptr_t);\nint getdirent(int, uintptr_t, size_t);\nint wait4(int, uintptr_t, int, uintptr_t);\nint ioctl(int, int, uintptr_t);\nint fcntl(uintptr_t, int, uintptr_t);\nint fsync_range(int, int, long long, long long);\nint acct(uintptr_t);\nint chdir(uintptr_t);\nint chroot(uintptr_t);\nint close(int);\nint dup(int);\nvoid exit(int);\nint faccessat(int, uintptr_t, unsigned int, int);\nint fchdir(int);\nint fchmod(int, unsigned int);\nint fchmodat(int, uintptr_t, unsigned int, int);\nint fchownat(int, uintptr_t, int, int, int);\nint fdatasync(int);\nint getpgid(int);\nint getpgrp();\nint getpid();\nint getppid();\nint getpriority(int, int);\nint getrusage(int, uintptr_t);\nint getsid(int);\nint kill(int, int);\nint syslog(int, uintptr_t, size_t);\nint mkdir(int, uintptr_t, unsigned int);\nint mkdirat(int, uintptr_t, unsigned int);\nint mkfifo(uintptr_t, unsigned int);\nint mknod(uintptr_t, unsigned int, int);\nint mknodat(int, uintptr_t, unsigned int, int);\nint nanosleep(uintptr_t, uintptr_t);\nint open64(uintptr_t, int, unsigned int);\nint openat(int, uintptr_t, int, unsigned int);\nint read(int, uintptr_t, size_t);\nint readlink(uintptr_t, uintptr_t, size_t);\nint renameat(int, uintptr_t, int, uintptr_t);\nint setdomainname(uintptr_t, size_t);\nint sethostname(uintptr_t, size_t);\nint setpgid(int, int);\nint setsid();\nint settimeofday(uintptr_t);\nint setuid(int);\nint setgid(int);\nint setpriority(int, int, int);\nint statx(int, uintptr_t, int, int, uintptr_t);\nint sync();\nuintptr_t times(uintptr_t);\nint umask(int);\nint uname(uintptr_t);\nint unlink(uintptr_t);\nint unlinkat(int, uintptr_t, int);\nint ustat(int, uintptr_t);\nint write(int, uintptr_t, size_t);\nint dup2(int, int);\nint posix_fadvise64(int, long long, long long, int);\nint fchown(int, int, int);\nint fstat(int, uintptr_t);\nint fstatat(int, uintptr_t, uintptr_t, int);\nint fstatfs(int, uintptr_t);\nint ftruncate(int, long long);\nint getegid();\nint geteuid();\nint getgid();\nint getuid();\nint lchown(uintptr_t, int, int);\nint listen(int, int);\nint lstat(uintptr_t, uintptr_t);\nint pause();\nint pread64(int, uintptr_t, size_t, long long);\nint pwrite64(int, uintptr_t, size_t, long long);\n#define c_select select\nint select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint setregid(int, int);\nint setreuid(int, int);\nint shutdown(int, int);\nlong long splice(int, uintptr_t, int, uintptr_t, int, int);\nint stat(uintptr_t, uintptr_t);\nint statfs(uintptr_t, uintptr_t);\nint truncate(uintptr_t, long long);\nint bind(int, uintptr_t, uintptr_t);\nint connect(int, uintptr_t, uintptr_t);\nint getgroups(int, uintptr_t);\nint setgroups(int, uintptr_t);\nint getsockopt(int, int, int, uintptr_t, uintptr_t);\nint setsockopt(int, int, int, uintptr_t, uintptr_t);\nint socket(int, int, int);\nint socketpair(int, int, int, uintptr_t);\nint getpeername(int, uintptr_t, uintptr_t);\nint getsockname(int, uintptr_t, uintptr_t);\nint recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint nrecvmsg(int, uintptr_t, int);\nint nsendmsg(int, uintptr_t, int);\nint munmap(uintptr_t, uintptr_t);\nint madvise(uintptr_t, size_t, int);\nint mprotect(uintptr_t, size_t, int);\nint mlock(uintptr_t, size_t);\nint mlockall(int);\nint msync(uintptr_t, size_t, int);\nint munlock(uintptr_t, size_t);\nint munlockall();\nint pipe(uintptr_t);\nint poll(uintptr_t, int, int);\nint gettimeofday(uintptr_t, uintptr_t);\nint time(uintptr_t);\nint utime(uintptr_t, uintptr_t);\nunsigned long long getsystemcfg(int);\nint umount(uintptr_t);\nint getrlimit(int, uintptr_t);\nlong long lseek(int, long long, int);\nuintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long);\n\n*/\nimport \"C\"\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utimes(C.uintptr_t(_p0), C.uintptr_t(times)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(times), C.int(flag)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getcwd(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.accept(C.int(s), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getdirent(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.wait4(C.int(pid), C.uintptr_t(status), C.int(options), C.uintptr_t(rusage)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg))))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.acct(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.chdir(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.chroot(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callclose(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.close(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup(oldfd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.dup(C.int(oldfd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callexit(code int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.exit(C.int(code)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchdir(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchdir(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchmod(C.int(fd), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfdatasync(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fdatasync(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgid(pid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpgid(C.int(pid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgrp() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpgrp())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetppid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getppid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpriority(C.int(which), C.int(who)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getrusage(C.int(who), C.uintptr_t(rusage)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsid(pid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsid(C.int(pid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callkill(pid int, sig int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.kill(C.int(pid), C.int(sig)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.syslog(C.int(typ), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkfifo(C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nanosleep(C.uintptr_t(time), C.uintptr_t(leftover)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.read(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.readlink(C.uintptr_t(_p0), C.uintptr_t(_p1), C.size_t(_lenp1)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setdomainname(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sethostname(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setpgid(C.int(pid), C.int(pgid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setsid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.settimeofday(C.uintptr_t(tv)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetuid(uid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setuid(C.int(uid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgid(uid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setgid(C.int(uid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setpriority(C.int(which), C.int(who), C.int(prio)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsync() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sync())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltimes(tms uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.times(C.uintptr_t(tms)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumask(mask int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.umask(C.int(mask)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calluname(buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.uname(C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.unlink(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ustat(C.int(dev), C.uintptr_t(ubuf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.write(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.dup2(C.int(oldfd), C.int(newfd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchown(C.int(fd), C.int(uid), C.int(gid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstat(C.int(fd), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(stat), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstatfs(C.int(fd), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ftruncate(C.int(fd), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetegid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getegid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgeteuid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.geteuid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getgid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetuid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getuid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllisten(s int, n int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.listen(C.int(s), C.int(n)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lstat(C.uintptr_t(_p0), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpause() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pause())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pread64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pwrite64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.c_select(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setregid(C.int(rgid), C.int(egid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setreuid(C.int(ruid), C.int(euid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.shutdown(C.int(fd), C.int(how)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.splice(C.int(rfd), C.uintptr_t(roff), C.int(wfd), C.uintptr_t(woff), C.int(len), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(statptr)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.statfs(C.uintptr_t(_p0), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.truncate(C.uintptr_t(_p0), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.bind(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.connect(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getgroups(C.int(n), C.uintptr_t(list)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setgroups(C.int(n), C.uintptr_t(list)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.socket(C.int(domain), C.int(typ), C.int(proto)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpeername(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsockname(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.recvfrom(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(from), C.uintptr_t(fromlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sendto(C.int(s), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(to), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nrecvmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nsendmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munmap(C.uintptr_t(addr), C.uintptr_t(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.madvise(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(advice)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mprotect(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(prot)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mlock(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlockall(flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mlockall(C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.msync(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munlock(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlockall() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munlockall())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpipe(p uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pipe(C.uintptr_t(p)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.poll(C.uintptr_t(fds), C.int(nfds), C.int(timeout)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.gettimeofday(C.uintptr_t(tv), C.uintptr_t(tzp)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltime(t uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.time(C.uintptr_t(t)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utime(C.uintptr_t(_p0), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsystemcfg(C.int(label)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.umount(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go",
    "content": "// go run mksyscall.go -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build darwin && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_closedir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_closedir closedir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {\n\tr0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nvar libc_readdir_r_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe pipe \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getxattr getxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fgetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fgetxattr fgetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setxattr setxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsetxattr fsetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_removexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_removexattr removexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fremovexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fremovexattr fremovexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listxattr listxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flistxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flistxattr flistxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc 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": "vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s",
    "content": "// go run mkasm.go darwin amd64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nGLOBL\t·libc_fdopendir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nGLOBL\t·libc_closedir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)\n\nTEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\nGLOBL\t·libc_readdir_r_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)\n\nTEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nGLOBL\t·libc_pipe_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)\n\nTEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nGLOBL\t·libc_getxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)\n\nTEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nGLOBL\t·libc_fgetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)\n\nTEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nGLOBL\t·libc_setxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)\n\nTEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nGLOBL\t·libc_fsetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)\n\nTEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nGLOBL\t·libc_removexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)\n\nTEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nGLOBL\t·libc_fremovexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)\n\nTEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nGLOBL\t·libc_listxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)\n\nTEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nGLOBL\t·libc_flistxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_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": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go",
    "content": "// go run mksyscall.go -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build darwin && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_closedir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_closedir closedir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {\n\tr0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nvar libc_readdir_r_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe pipe \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getxattr getxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fgetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fgetxattr fgetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setxattr setxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsetxattr fsetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_removexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_removexattr removexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fremovexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fremovexattr fremovexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listxattr listxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flistxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flistxattr flistxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc 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": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s",
    "content": "// go run mkasm.go darwin arm64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nGLOBL\t·libc_fdopendir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nGLOBL\t·libc_closedir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)\n\nTEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\nGLOBL\t·libc_readdir_r_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)\n\nTEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nGLOBL\t·libc_pipe_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)\n\nTEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nGLOBL\t·libc_getxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)\n\nTEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nGLOBL\t·libc_fgetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)\n\nTEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nGLOBL\t·libc_setxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)\n\nTEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nGLOBL\t·libc_fsetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)\n\nTEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nGLOBL\t·libc_removexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)\n\nTEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nGLOBL\t·libc_fremovexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)\n\nTEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nGLOBL\t·libc_listxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)\n\nTEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nGLOBL\t·libc_flistxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_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": "vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go",
    "content": "// go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build dragonfly && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc extpread(fd int, p []byte, flags int, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go",
    "content": "// go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), uintptr(dev>>32), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go",
    "content": "// go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go",
    "content": "// go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, uintptr(dev), uintptr(dev>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go",
    "content": "// go run mksyscall.go -tags freebsd,arm64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go",
    "content": "// go run mksyscall.go -tags freebsd,riscv64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go",
    "content": "// go run mksyscall_solaris.go -illumos -tags illumos,amd64 syscall_illumos.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build illumos && amd64\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_readv readv \"libc.so\"\n//go:cgo_import_dynamic libc_preadv preadv \"libc.so\"\n//go:cgo_import_dynamic libc_writev writev \"libc.so\"\n//go:cgo_import_dynamic libc_pwritev pwritev \"libc.so\"\n//go:cgo_import_dynamic libc_accept4 accept4 \"libsocket.so\"\n\n//go:linkname procreadv libc_readv\n//go:linkname procpreadv libc_preadv\n//go:linkname procwritev libc_writev\n//go:linkname procpwritev libc_pwritev\n//go:linkname procaccept4 libc_accept4\n\nvar (\n\tprocreadv,\n\tprocpreadv,\n\tprocwritev,\n\tprocpwritev,\n\tprocaccept4 syscallFunc\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procreadv)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovs []Iovec, off int64) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpreadv)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovs []Iovec, off int64) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwritev)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept4)), 4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat2(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) {\n\t_, _, e1 := Syscall6(SYS_WAITID, uintptr(idType), uintptr(id), uintptr(unsafe.Pointer(info)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(restriction)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlRestrictKeyring(cmd int, arg2 int) (err error) {\n\t_, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT_SETATTR, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(unsafe.Pointer(attr)), uintptr(size), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Capget(hdr *CapUserHeader, data *CapUserData) (err error) {\n\t_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Capset(hdr *CapUserHeader, data *CapUserData) (err error) {\n\t_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockAdjtime(clockid int32, buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_CLOCK_ADJTIME, uintptr(clockid), uintptr(unsafe.Pointer(buf)), 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc 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 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": "vendor/golang.org/x/sys/unix/zsyscall_linux_386.go",
    "content": "// go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go",
    "content": "// go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go",
    "content": "// go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc armSyncFileRange(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_ARM_SYNC_FILE_RANGE, uintptr(fd), uintptr(flags), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go",
    "content": "// go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go",
    "content": "// go run mksyscall.go -tags linux,loong64 syscall_linux.go syscall_linux_loong64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && loong64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go",
    "content": "// go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r0)<<32 | int64(r1))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length>>32), uintptr(length), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length>>32), uintptr(length), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go",
    "content": "// go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, st *stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go",
    "content": "// go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips64le\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, st *stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go",
    "content": "// go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mipsle\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go",
    "content": "// go run mksyscall.go -b32 -tags linux,ppc syscall_linux.go syscall_linux_ppc.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r0)<<32 | int64(r1))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go",
    "content": "// go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go",
    "content": "// go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc64le\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go",
    "content": "// go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc riscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(pairs) > 0 {\n\t\t_p0 = unsafe.Pointer(&pairs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_RISCV_HWPROBE, uintptr(_p0), uintptr(len(pairs)), uintptr(cpuCount), uintptr(unsafe.Pointer(cpus)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go",
    "content": "// go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && s390x\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go",
    "content": "// go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && sparc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go",
    "content": "// go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go",
    "content": "// go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go",
    "content": "// go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go",
    "content": "// go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go",
    "content": "// go run mksyscall.go -l32 -openbsd -libc -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc 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\n\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s",
    "content": "// go run mkasm.go openbsd 386\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc 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\n\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s",
    "content": "// go run mkasm.go openbsd amd64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go",
    "content": "// go run mksyscall.go -l32 -openbsd -arm -libc -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_ftruncate_trampoline_addr, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc 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\n\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s",
    "content": "// go run mkasm.go openbsd arm\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc 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\n\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s",
    "content": "// go run mkasm.go openbsd arm64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,mips64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_mips64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && mips64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc 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\n\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s",
    "content": "// go run mkasm.go openbsd mips64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,ppc64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && ppc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc 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\n\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s",
    "content": "// go run mkasm.go openbsd ppc64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getgroups(SB)\n\tRET\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setgroups(SB)\n\tRET\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_wait4(SB)\n\tRET\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_accept(SB)\n\tRET\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_bind(SB)\n\tRET\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_connect(SB)\n\tRET\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_socket(SB)\n\tRET\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsockopt(SB)\n\tRET\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setsockopt(SB)\n\tRET\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpeername(SB)\n\tRET\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsockname(SB)\n\tRET\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_shutdown(SB)\n\tRET\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_socketpair(SB)\n\tRET\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_recvfrom(SB)\n\tRET\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sendto(SB)\n\tRET\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_recvmsg(SB)\n\tRET\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sendmsg(SB)\n\tRET\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kevent(SB)\n\tRET\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_utimes(SB)\n\tRET\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_futimes(SB)\n\tRET\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_poll(SB)\n\tRET\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_madvise(SB)\n\tRET\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mlock(SB)\n\tRET\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mlockall(SB)\n\tRET\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mprotect(SB)\n\tRET\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_msync(SB)\n\tRET\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munlock(SB)\n\tRET\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munlockall(SB)\n\tRET\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pipe2(SB)\n\tRET\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getdents(SB)\n\tRET\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getcwd(SB)\n\tRET\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getresuid(SB)\n\tRET\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getresgid(SB)\n\tRET\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ioctl(SB)\n\tRET\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sysctl(SB)\n\tRET\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fcntl(SB)\n\tRET\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ppoll(SB)\n\tRET\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_access(SB)\n\tRET\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_adjtime(SB)\n\tRET\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chdir(SB)\n\tRET\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chflags(SB)\n\tRET\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chmod(SB)\n\tRET\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chown(SB)\n\tRET\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chroot(SB)\n\tRET\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_clock_gettime(SB)\n\tRET\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_close(SB)\n\tRET\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup(SB)\n\tRET\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup2(SB)\n\tRET\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup3(SB)\n\tRET\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_exit(SB)\n\tRET\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_faccessat(SB)\n\tRET\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchdir(SB)\n\tRET\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchflags(SB)\n\tRET\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchmod(SB)\n\tRET\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchmodat(SB)\n\tRET\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchown(SB)\n\tRET\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchownat(SB)\n\tRET\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_flock(SB)\n\tRET\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fpathconf(SB)\n\tRET\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstat(SB)\n\tRET\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstatat(SB)\n\tRET\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstatfs(SB)\n\tRET\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fsync(SB)\n\tRET\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ftruncate(SB)\n\tRET\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getegid(SB)\n\tRET\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_geteuid(SB)\n\tRET\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getgid(SB)\n\tRET\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpgid(SB)\n\tRET\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpgrp(SB)\n\tRET\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpid(SB)\n\tRET\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getppid(SB)\n\tRET\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpriority(SB)\n\tRET\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrlimit(SB)\n\tRET\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrtable(SB)\n\tRET\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrusage(SB)\n\tRET\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsid(SB)\n\tRET\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_gettimeofday(SB)\n\tRET\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getuid(SB)\n\tRET\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_issetugid(SB)\n\tRET\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kill(SB)\n\tRET\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kqueue(SB)\n\tRET\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lchown(SB)\n\tRET\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_link(SB)\n\tRET\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_linkat(SB)\n\tRET\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_listen(SB)\n\tRET\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lstat(SB)\n\tRET\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkdir(SB)\n\tRET\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkdirat(SB)\n\tRET\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkfifo(SB)\n\tRET\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkfifoat(SB)\n\tRET\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mknod(SB)\n\tRET\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mknodat(SB)\n\tRET\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_nanosleep(SB)\n\tRET\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_open(SB)\n\tRET\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_openat(SB)\n\tRET\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pathconf(SB)\n\tRET\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pread(SB)\n\tRET\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pwrite(SB)\n\tRET\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_read(SB)\n\tRET\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_readlink(SB)\n\tRET\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_readlinkat(SB)\n\tRET\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_rename(SB)\n\tRET\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_renameat(SB)\n\tRET\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_revoke(SB)\n\tRET\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_rmdir(SB)\n\tRET\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lseek(SB)\n\tRET\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_select(SB)\n\tRET\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setegid(SB)\n\tRET\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_seteuid(SB)\n\tRET\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setgid(SB)\n\tRET\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setlogin(SB)\n\tRET\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setpgid(SB)\n\tRET\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setpriority(SB)\n\tRET\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setregid(SB)\n\tRET\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setreuid(SB)\n\tRET\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setresgid(SB)\n\tRET\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setresuid(SB)\n\tRET\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setrtable(SB)\n\tRET\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setsid(SB)\n\tRET\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_settimeofday(SB)\n\tRET\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setuid(SB)\n\tRET\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_stat(SB)\n\tRET\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_statfs(SB)\n\tRET\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_symlink(SB)\n\tRET\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_symlinkat(SB)\n\tRET\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sync(SB)\n\tRET\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_truncate(SB)\n\tRET\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_umask(SB)\n\tRET\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unlink(SB)\n\tRET\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unlinkat(SB)\n\tRET\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unmount(SB)\n\tRET\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_write(SB)\n\tRET\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mmap(SB)\n\tRET\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munmap(SB)\n\tRET\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getfsstat(SB)\n\tRET\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_utimensat(SB)\n\tRET\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pledge(SB)\n\tRET\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unveil(SB)\n\tRET\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,riscv64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc 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\n\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s",
    "content": "// go run mkasm.go openbsd riscv64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go",
    "content": "// go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build solaris && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_pipe pipe \"libc.so\"\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n//go:cgo_import_dynamic libc_getsockname getsockname \"libsocket.so\"\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n//go:cgo_import_dynamic libc_gethostname gethostname \"libc.so\"\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n//go:cgo_import_dynamic libc_futimesat futimesat \"libc.so\"\n//go:cgo_import_dynamic libc_accept accept \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg \"libsocket.so\"\n//go:cgo_import_dynamic libc_acct acct \"libc.so\"\n//go:cgo_import_dynamic libc___makedev __makedev \"libc.so\"\n//go:cgo_import_dynamic libc___major __major \"libc.so\"\n//go:cgo_import_dynamic libc___minor __minor \"libc.so\"\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n//go:cgo_import_dynamic libc_clockgettime clockgettime \"libc.so\"\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n//go:cgo_import_dynamic libc_creat creat \"libc.so\"\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n//go:cgo_import_dynamic libc_fdatasync fdatasync \"libc.so\"\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n//go:cgo_import_dynamic libc_fstatvfs fstatvfs \"libc.so\"\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_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": "vendor/golang.org/x/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": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"fs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nselcoll\", []_C_int{1, 43}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go",
    "content": "// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\npackage unix\n\n// Deprecated: Use libSystem wrappers instead of direct syscalls.\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_KQUEUE_WORKLOOP_CTL            = 530\n\tSYS___MACH_BRIDGE_REMOTE_TIME      = 531\n\tSYS_MAXSYSCALL                     = 532\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go",
    "content": "// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\npackage unix\n\n// Deprecated: Use libSystem wrappers instead of direct syscalls.\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_MAXSYSCALL                     = 530\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go",
    "content": "// go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nconst (\n\tSYS_EXIT  = 1 // { void exit(int rval); }\n\tSYS_FORK  = 2 // { int fork(void); }\n\tSYS_READ  = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN  = 5 // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE = 6 // { int close(int fd); }\n\tSYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int\n\t// SYS_NOSYS = 8;  // { int nosys(void); } __nosys nosys_args int\n\tSYS_LINK                   = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                 = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                  = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                 = 13  // { int fchdir(int fd); }\n\tSYS_MKNOD                  = 14  // { int mknod(char *path, int mode, int dev); }\n\tSYS_CHMOD                  = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                  = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_OBREAK                 = 17  // { int obreak(char *nsize); } break obreak_args int\n\tSYS_GETFSSTAT              = 18  // { int getfsstat(struct statfs *buf, long bufsize, int flags); }\n\tSYS_GETPID                 = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                  = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                 = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                 = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                 = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                = 28  // { int sendmsg(int s, caddr_t msg, int flags); }\n\tSYS_RECVFROM               = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); }\n\tSYS_ACCEPT                 = 30  // { int accept(int s, caddr_t name, int *anamelen); }\n\tSYS_GETPEERNAME            = 31  // { int getpeername(int fdes, caddr_t asa, int *alen); }\n\tSYS_GETSOCKNAME            = 32  // { int getsockname(int fdes, caddr_t asa, int *alen); }\n\tSYS_ACCESS                 = 33  // { int access(char *path, int flags); }\n\tSYS_CHFLAGS                = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS               = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                   = 36  // { int sync(void); }\n\tSYS_KILL                   = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                = 39  // { pid_t getppid(void); }\n\tSYS_DUP                    = 41  // { int dup(int fd); }\n\tSYS_PIPE                   = 42  // { int pipe(void); }\n\tSYS_GETEGID                = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                 = 44  // { int profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE                 = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                 = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN               = 49  // { int getlogin(char *namebuf, size_t namelen); }\n\tSYS_SETLOGIN               = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                   = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK            = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                  = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                 = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                 = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK               = 58  // { int readlink(char *path, char *buf, int count); }\n\tSYS_EXECVE                 = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                  = 60  // { int umask(int newmask); } umask umask_args int\n\tSYS_CHROOT                 = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                  = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                  = 66  // { pid_t vfork(void); }\n\tSYS_SBRK                   = 69  // { caddr_t sbrk(size_t incr); }\n\tSYS_SSTK                   = 70  // { int sstk(size_t incr); }\n\tSYS_MUNMAP                 = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT               = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS              = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS              = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER              = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                 = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER              = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE          = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                   = 90  // { int dup2(int from, int to); }\n\tSYS_FCNTL                  = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                 = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                  = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY            = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                 = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY            = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                   = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT             = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                 = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY           = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE              = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT             = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                  = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                 = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY           = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                 = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                 = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID               = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID               = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                 = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                  = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                 = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                 = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN               = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR             = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                  = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                  = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                 = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                 = 147 // { int setsid(void); }\n\tSYS_QUOTACTL               = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_STATFS                 = 157 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                = 158 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFH                  = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                 = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_EXTPREAD               = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_EXTPWRITE              = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_NTP_ADJTIME            = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                 = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF               = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF              = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT              = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT              = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS_MMAP                   = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); }\n\tSYS_LSEEK                  = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE               = 200 // { int truncate(char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE              = 201 // { int ftruncate(int fd, int pad, off_t length); }\n\tSYS___SYSCTL               = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                  = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE               = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                   = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS___SEMCTL               = 220 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SEMGET                 = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                  = 222 // { int semop(int semid, struct sembuf *sops, u_int nsops); }\n\tSYS_MSGCTL                 = 224 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_MSGGET                 = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                 = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                 = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                  = 228 // { caddr_t shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMCTL                 = 229 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_SHMDT                  = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                 = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME          = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME          = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES           = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP              = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_MINHERIT               = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                  = 251 // { int rfork(int flags); }\n\tSYS_OPENBSD_POLL           = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID              = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                 = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_LCHMOD                 = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_EXTPREADV              = 289 // { ssize_t extpreadv(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }\n\tSYS_EXTPWRITEV             = 290 // { ssize_t extpwritev(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }\n\tSYS_FHSTATFS               = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_FHOPEN                 = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT               = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD              = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }\n\tSYS_KLDFIRSTMOD            = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                 = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID              = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID              = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN             = 314 // { int aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND            = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL             = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR              = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_AIO_READ               = 318 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE              = 319 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO             = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_YIELD                  = 321 // { int yield(void); }\n\tSYS_MLOCKALL               = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL             = 325 // { int munlockall(void); }\n\tSYS___GETCWD               = 326 // { int __getcwd(u_char *buf, u_int buflen); }\n\tSYS_SCHED_SETPARAM         = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM         = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER     = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER     = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD            = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL  = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                 = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                 = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                   = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK            = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND             = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGACTION              = 342 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGPENDING             = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGRETURN              = 344 // { int sigreturn(ucontext_t *sigcntxp); }\n\tSYS_SIGTIMEDWAIT           = 345 // { int sigtimedwait(const sigset_t *set,siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO            = 346 // { int sigwaitinfo(const sigset_t *set,siginfo_t *info); }\n\tSYS___ACL_GET_FILE         = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE         = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD           = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD           = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE      = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD        = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE    = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD      = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL             = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE       = 356 // { int extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE       = 357 // { int extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE    = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE       = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID              = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID              = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                 = 362 // { int kqueue(void); }\n\tSYS_KEVENT                 = 363 // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_KENV                   = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS               = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_VARSYM_SET             = 450 // { int varsym_set(int level, const char *name, const char *data); }\n\tSYS_VARSYM_GET             = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); }\n\tSYS_VARSYM_LIST            = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); }\n\tSYS_EXEC_SYS_REGISTER      = 465 // { int exec_sys_register(void *entry); }\n\tSYS_EXEC_SYS_UNREGISTER    = 466 // { int exec_sys_unregister(int id); }\n\tSYS_SYS_CHECKPOINT         = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); }\n\tSYS_MOUNTCTL               = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); }\n\tSYS_UMTX_SLEEP             = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); }\n\tSYS_UMTX_WAKEUP            = 470 // { int umtx_wakeup(volatile const int *ptr, int count); }\n\tSYS_JAIL_ATTACH            = 471 // { int jail_attach(int jid); }\n\tSYS_SET_TLS_AREA           = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); }\n\tSYS_GET_TLS_AREA           = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); }\n\tSYS_CLOSEFROM              = 474 // { int closefrom(int fd); }\n\tSYS_STAT                   = 475 // { int stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                  = 476 // { int fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                  = 477 // { int lstat(const char *path, struct stat *ub); }\n\tSYS_FHSTAT                 = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES          = 479 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }\n\tSYS_GETDENTS               = 480 // { int getdents(int fd, char *buf, size_t count); }\n\tSYS_USCHED_SET             = 481 // { int usched_set(pid_t pid, int cmd, void *data, int bytes); }\n\tSYS_EXTACCEPT              = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); }\n\tSYS_EXTCONNECT             = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); }\n\tSYS_MCONTROL               = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); }\n\tSYS_VMSPACE_CREATE         = 486 // { int vmspace_create(void *id, int type, void *data); }\n\tSYS_VMSPACE_DESTROY        = 487 // { int vmspace_destroy(void *id); }\n\tSYS_VMSPACE_CTL            = 488 // { int vmspace_ctl(void *id, int cmd, \t\tstruct trapframe *tframe,\tstruct vextframe *vframe); }\n\tSYS_VMSPACE_MMAP           = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, int prot, int flags, int fd, off_t offset); }\n\tSYS_VMSPACE_MUNMAP         = 490 // { int vmspace_munmap(void *id, void *addr,\tsize_t len); }\n\tSYS_VMSPACE_MCONTROL       = 491 // { int vmspace_mcontrol(void *id, void *addr, \tsize_t len, int behav, off_t value); }\n\tSYS_VMSPACE_PREAD          = 492 // { ssize_t vmspace_pread(void *id, void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_VMSPACE_PWRITE         = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_EXTEXIT                = 494 // { void extexit(int how, int status, void *addr); }\n\tSYS_LWP_CREATE             = 495 // { int lwp_create(struct lwp_params *params); }\n\tSYS_LWP_GETTID             = 496 // { lwpid_t lwp_gettid(void); }\n\tSYS_LWP_KILL               = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); }\n\tSYS_LWP_RTPRIO             = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); }\n\tSYS_PSELECT                = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts,    const sigset_t *sigmask); }\n\tSYS_STATVFS                = 500 // { int statvfs(const char *path, struct statvfs *buf); }\n\tSYS_FSTATVFS               = 501 // { int fstatvfs(int fd, struct statvfs *buf); }\n\tSYS_FHSTATVFS              = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); }\n\tSYS_GETVFSSTAT             = 503 // { int getvfsstat(struct statfs *buf,          struct statvfs *vbuf, long vbufsize, int flags); }\n\tSYS_OPENAT                 = 504 // { int openat(int fd, char *path, int flags, int mode); }\n\tSYS_FSTATAT                = 505 // { int fstatat(int fd, char *path, \tstruct stat *sb, int flags); }\n\tSYS_FCHMODAT               = 506 // { int fchmodat(int fd, char *path, int mode, int flags); }\n\tSYS_FCHOWNAT               = 507 // { int fchownat(int fd, char *path, int uid, int gid, int flags); }\n\tSYS_UNLINKAT               = 508 // { int unlinkat(int fd, char *path, int flags); }\n\tSYS_FACCESSAT              = 509 // { int faccessat(int fd, char *path, int amode, int flags); }\n\tSYS_MQ_OPEN                = 510 // { mqd_t mq_open(const char * name, int oflag, mode_t mode, struct mq_attr *attr); }\n\tSYS_MQ_CLOSE               = 511 // { int mq_close(mqd_t mqdes); }\n\tSYS_MQ_UNLINK              = 512 // { int mq_unlink(const char *name); }\n\tSYS_MQ_GETATTR             = 513 // { int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); }\n\tSYS_MQ_SETATTR             = 514 // { int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat); }\n\tSYS_MQ_NOTIFY              = 515 // { int mq_notify(mqd_t mqdes, const struct sigevent *notification); }\n\tSYS_MQ_SEND                = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio); }\n\tSYS_MQ_RECEIVE             = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio); }\n\tSYS_MQ_TIMEDSEND           = 518 // { int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_MQ_TIMEDRECEIVE        = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_IOPRIO_SET             = 520 // { int ioprio_set(int which, int who, int prio); }\n\tSYS_IOPRIO_GET             = 521 // { int ioprio_get(int which, int who); }\n\tSYS_CHROOT_KERNEL          = 522 // { int chroot_kernel(char *path); }\n\tSYS_RENAMEAT               = 523 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_MKDIRAT                = 524 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT               = 525 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_MKNODAT                = 526 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_READLINKAT             = 527 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT              = 528 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_SWAPOFF                = 529 // { int swapoff(char *name); }\n\tSYS_VQUOTACTL              = 530 // { int vquotactl(const char *path, struct plistref *pref); }\n\tSYS_LINKAT                 = 531 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flags); }\n\tSYS_EACCESS                = 532 // { int eaccess(char *path, int flags); }\n\tSYS_LPATHCONF              = 533 // { int lpathconf(char *path, int name); }\n\tSYS_VMM_GUEST_CTL          = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }\n\tSYS_VMM_GUEST_SYNC_ADDR    = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }\n\tSYS_PROCCTL                = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); }\n\tSYS_CHFLAGSAT              = 537 // { int chflagsat(int fd, const char *path, u_long flags, int atflags);}\n\tSYS_PIPE2                  = 538 // { int pipe2(int *fildes, int flags); }\n\tSYS_UTIMENSAT              = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); }\n\tSYS_FUTIMENS               = 540 // { int futimens(int fd, const struct timespec *ts); }\n\tSYS_ACCEPT4                = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); }\n\tSYS_LWP_SETNAME            = 542 // { int lwp_setname(lwpid_t tid, const char *name); }\n\tSYS_PPOLL                  = 543 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *sigmask); }\n\tSYS_LWP_SETAFFINITY        = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); }\n\tSYS_LWP_GETAFFINITY        = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); }\n\tSYS_LWP_CREATE2            = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); }\n\tSYS_GETCPUCLOCKID          = 547 // { int getcpuclockid(pid_t pid, lwpid_t lwp_id, clockid_t *clock_id); }\n\tSYS_WAIT6                  = 548 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_LWP_GETNAME            = 549 // { int lwp_getname(lwpid_t tid, char *name, size_t len); }\n\tSYS_GETRANDOM              = 550 // { ssize_t getrandom(void *buf, size_t len, unsigned flags); }\n\tSYS___REALPATH             = 551 // { ssize_t __realpath(const char *path, char *buf, size_t len); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_386.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/386/include -m32 /tmp/386/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_WAITPID                      = 7\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_TIME                         = 13\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_BREAK                        = 17\n\tSYS_OLDSTAT                      = 18\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_UMOUNT                       = 22\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_STIME                        = 25\n\tSYS_PTRACE                       = 26\n\tSYS_ALARM                        = 27\n\tSYS_OLDFSTAT                     = 28\n\tSYS_PAUSE                        = 29\n\tSYS_UTIME                        = 30\n\tSYS_STTY                         = 31\n\tSYS_GTTY                         = 32\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_FTIME                        = 35\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_PROF                         = 44\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_SIGNAL                       = 48\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_LOCK                         = 53\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_MPX                          = 56\n\tSYS_SETPGID                      = 57\n\tSYS_ULIMIT                       = 58\n\tSYS_OLDOLDUNAME                  = 59\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SGETMASK                     = 68\n\tSYS_SSETMASK                     = 69\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRLIMIT                    = 76\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SELECT                       = 82\n\tSYS_SYMLINK                      = 83\n\tSYS_OLDLSTAT                     = 84\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_READDIR                      = 89\n\tSYS_MMAP                         = 90\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_PROFIL                       = 98\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_IOPERM                       = 101\n\tSYS_SOCKETCALL                   = 102\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_OLDUNAME                     = 109\n\tSYS_IOPL                         = 110\n\tSYS_VHANGUP                      = 111\n\tSYS_IDLE                         = 112\n\tSYS_VM86OLD                      = 113\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_IPC                          = 117\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_MODIFY_LDT                   = 123\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_CREATE_MODULE                = 127\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_GET_KERNEL_SYMS              = 130\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_AFS_SYSCALL                  = 137\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_VM86                         = 166\n\tSYS_QUERY_MODULE                 = 167\n\tSYS_POLL                         = 168\n\tSYS_NFSSERVCTL                   = 169\n\tSYS_SETRESGID                    = 170\n\tSYS_GETRESGID                    = 171\n\tSYS_PRCTL                        = 172\n\tSYS_RT_SIGRETURN                 = 173\n\tSYS_RT_SIGACTION                 = 174\n\tSYS_RT_SIGPROCMASK               = 175\n\tSYS_RT_SIGPENDING                = 176\n\tSYS_RT_SIGTIMEDWAIT              = 177\n\tSYS_RT_SIGQUEUEINFO              = 178\n\tSYS_RT_SIGSUSPEND                = 179\n\tSYS_PREAD64                      = 180\n\tSYS_PWRITE64                     = 181\n\tSYS_CHOWN                        = 182\n\tSYS_GETCWD                       = 183\n\tSYS_CAPGET                       = 184\n\tSYS_CAPSET                       = 185\n\tSYS_SIGALTSTACK                  = 186\n\tSYS_SENDFILE                     = 187\n\tSYS_GETPMSG                      = 188\n\tSYS_PUTPMSG                      = 189\n\tSYS_VFORK                        = 190\n\tSYS_UGETRLIMIT                   = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_LCHOWN32                     = 198\n\tSYS_GETUID32                     = 199\n\tSYS_GETGID32                     = 200\n\tSYS_GETEUID32                    = 201\n\tSYS_GETEGID32                    = 202\n\tSYS_SETREUID32                   = 203\n\tSYS_SETREGID32                   = 204\n\tSYS_GETGROUPS32                  = 205\n\tSYS_SETGROUPS32                  = 206\n\tSYS_FCHOWN32                     = 207\n\tSYS_SETRESUID32                  = 208\n\tSYS_GETRESUID32                  = 209\n\tSYS_SETRESGID32                  = 210\n\tSYS_GETRESGID32                  = 211\n\tSYS_CHOWN32                      = 212\n\tSYS_SETUID32                     = 213\n\tSYS_SETGID32                     = 214\n\tSYS_SETFSUID32                   = 215\n\tSYS_SETFSGID32                   = 216\n\tSYS_PIVOT_ROOT                   = 217\n\tSYS_MINCORE                      = 218\n\tSYS_MADVISE                      = 219\n\tSYS_GETDENTS64                   = 220\n\tSYS_FCNTL64                      = 221\n\tSYS_GETTID                       = 224\n\tSYS_READAHEAD                    = 225\n\tSYS_SETXATTR                     = 226\n\tSYS_LSETXATTR                    = 227\n\tSYS_FSETXATTR                    = 228\n\tSYS_GETXATTR                     = 229\n\tSYS_LGETXATTR                    = 230\n\tSYS_FGETXATTR                    = 231\n\tSYS_LISTXATTR                    = 232\n\tSYS_LLISTXATTR                   = 233\n\tSYS_FLISTXATTR                   = 234\n\tSYS_REMOVEXATTR                  = 235\n\tSYS_LREMOVEXATTR                 = 236\n\tSYS_FREMOVEXATTR                 = 237\n\tSYS_TKILL                        = 238\n\tSYS_SENDFILE64                   = 239\n\tSYS_FUTEX                        = 240\n\tSYS_SCHED_SETAFFINITY            = 241\n\tSYS_SCHED_GETAFFINITY            = 242\n\tSYS_SET_THREAD_AREA              = 243\n\tSYS_GET_THREAD_AREA              = 244\n\tSYS_IO_SETUP                     = 245\n\tSYS_IO_DESTROY                   = 246\n\tSYS_IO_GETEVENTS                 = 247\n\tSYS_IO_SUBMIT                    = 248\n\tSYS_IO_CANCEL                    = 249\n\tSYS_FADVISE64                    = 250\n\tSYS_EXIT_GROUP                   = 252\n\tSYS_LOOKUP_DCOOKIE               = 253\n\tSYS_EPOLL_CREATE                 = 254\n\tSYS_EPOLL_CTL                    = 255\n\tSYS_EPOLL_WAIT                   = 256\n\tSYS_REMAP_FILE_PAGES             = 257\n\tSYS_SET_TID_ADDRESS              = 258\n\tSYS_TIMER_CREATE                 = 259\n\tSYS_TIMER_SETTIME                = 260\n\tSYS_TIMER_GETTIME                = 261\n\tSYS_TIMER_GETOVERRUN             = 262\n\tSYS_TIMER_DELETE                 = 263\n\tSYS_CLOCK_SETTIME                = 264\n\tSYS_CLOCK_GETTIME                = 265\n\tSYS_CLOCK_GETRES                 = 266\n\tSYS_CLOCK_NANOSLEEP              = 267\n\tSYS_STATFS64                     = 268\n\tSYS_FSTATFS64                    = 269\n\tSYS_TGKILL                       = 270\n\tSYS_UTIMES                       = 271\n\tSYS_FADVISE64_64                 = 272\n\tSYS_VSERVER                      = 273\n\tSYS_MBIND                        = 274\n\tSYS_GET_MEMPOLICY                = 275\n\tSYS_SET_MEMPOLICY                = 276\n\tSYS_MQ_OPEN                      = 277\n\tSYS_MQ_UNLINK                    = 278\n\tSYS_MQ_TIMEDSEND                 = 279\n\tSYS_MQ_TIMEDRECEIVE              = 280\n\tSYS_MQ_NOTIFY                    = 281\n\tSYS_MQ_GETSETATTR                = 282\n\tSYS_KEXEC_LOAD                   = 283\n\tSYS_WAITID                       = 284\n\tSYS_ADD_KEY                      = 286\n\tSYS_REQUEST_KEY                  = 287\n\tSYS_KEYCTL                       = 288\n\tSYS_IOPRIO_SET                   = 289\n\tSYS_IOPRIO_GET                   = 290\n\tSYS_INOTIFY_INIT                 = 291\n\tSYS_INOTIFY_ADD_WATCH            = 292\n\tSYS_INOTIFY_RM_WATCH             = 293\n\tSYS_MIGRATE_PAGES                = 294\n\tSYS_OPENAT                       = 295\n\tSYS_MKDIRAT                      = 296\n\tSYS_MKNODAT                      = 297\n\tSYS_FCHOWNAT                     = 298\n\tSYS_FUTIMESAT                    = 299\n\tSYS_FSTATAT64                    = 300\n\tSYS_UNLINKAT                     = 301\n\tSYS_RENAMEAT                     = 302\n\tSYS_LINKAT                       = 303\n\tSYS_SYMLINKAT                    = 304\n\tSYS_READLINKAT                   = 305\n\tSYS_FCHMODAT                     = 306\n\tSYS_FACCESSAT                    = 307\n\tSYS_PSELECT6                     = 308\n\tSYS_PPOLL                        = 309\n\tSYS_UNSHARE                      = 310\n\tSYS_SET_ROBUST_LIST              = 311\n\tSYS_GET_ROBUST_LIST              = 312\n\tSYS_SPLICE                       = 313\n\tSYS_SYNC_FILE_RANGE              = 314\n\tSYS_TEE                          = 315\n\tSYS_VMSPLICE                     = 316\n\tSYS_MOVE_PAGES                   = 317\n\tSYS_GETCPU                       = 318\n\tSYS_EPOLL_PWAIT                  = 319\n\tSYS_UTIMENSAT                    = 320\n\tSYS_SIGNALFD                     = 321\n\tSYS_TIMERFD_CREATE               = 322\n\tSYS_EVENTFD                      = 323\n\tSYS_FALLOCATE                    = 324\n\tSYS_TIMERFD_SETTIME              = 325\n\tSYS_TIMERFD_GETTIME              = 326\n\tSYS_SIGNALFD4                    = 327\n\tSYS_EVENTFD2                     = 328\n\tSYS_EPOLL_CREATE1                = 329\n\tSYS_DUP3                         = 330\n\tSYS_PIPE2                        = 331\n\tSYS_INOTIFY_INIT1                = 332\n\tSYS_PREADV                       = 333\n\tSYS_PWRITEV                      = 334\n\tSYS_RT_TGSIGQUEUEINFO            = 335\n\tSYS_PERF_EVENT_OPEN              = 336\n\tSYS_RECVMMSG                     = 337\n\tSYS_FANOTIFY_INIT                = 338\n\tSYS_FANOTIFY_MARK                = 339\n\tSYS_PRLIMIT64                    = 340\n\tSYS_NAME_TO_HANDLE_AT            = 341\n\tSYS_OPEN_BY_HANDLE_AT            = 342\n\tSYS_CLOCK_ADJTIME                = 343\n\tSYS_SYNCFS                       = 344\n\tSYS_SENDMMSG                     = 345\n\tSYS_SETNS                        = 346\n\tSYS_PROCESS_VM_READV             = 347\n\tSYS_PROCESS_VM_WRITEV            = 348\n\tSYS_KCMP                         = 349\n\tSYS_FINIT_MODULE                 = 350\n\tSYS_SCHED_SETATTR                = 351\n\tSYS_SCHED_GETATTR                = 352\n\tSYS_RENAMEAT2                    = 353\n\tSYS_SECCOMP                      = 354\n\tSYS_GETRANDOM                    = 355\n\tSYS_MEMFD_CREATE                 = 356\n\tSYS_BPF                          = 357\n\tSYS_EXECVEAT                     = 358\n\tSYS_SOCKET                       = 359\n\tSYS_SOCKETPAIR                   = 360\n\tSYS_BIND                         = 361\n\tSYS_CONNECT                      = 362\n\tSYS_LISTEN                       = 363\n\tSYS_ACCEPT4                      = 364\n\tSYS_GETSOCKOPT                   = 365\n\tSYS_SETSOCKOPT                   = 366\n\tSYS_GETSOCKNAME                  = 367\n\tSYS_GETPEERNAME                  = 368\n\tSYS_SENDTO                       = 369\n\tSYS_SENDMSG                      = 370\n\tSYS_RECVFROM                     = 371\n\tSYS_RECVMSG                      = 372\n\tSYS_SHUTDOWN                     = 373\n\tSYS_USERFAULTFD                  = 374\n\tSYS_MEMBARRIER                   = 375\n\tSYS_MLOCK2                       = 376\n\tSYS_COPY_FILE_RANGE              = 377\n\tSYS_PREADV2                      = 378\n\tSYS_PWRITEV2                     = 379\n\tSYS_PKEY_MPROTECT                = 380\n\tSYS_PKEY_ALLOC                   = 381\n\tSYS_PKEY_FREE                    = 382\n\tSYS_STATX                        = 383\n\tSYS_ARCH_PRCTL                   = 384\n\tSYS_IO_PGETEVENTS                = 385\n\tSYS_RSEQ                         = 386\n\tSYS_SEMGET                       = 393\n\tSYS_SEMCTL                       = 394\n\tSYS_SHMGET                       = 395\n\tSYS_SHMCTL                       = 396\n\tSYS_SHMAT                        = 397\n\tSYS_SHMDT                        = 398\n\tSYS_MSGGET                       = 399\n\tSYS_MSGSND                       = 400\n\tSYS_MSGRCV                       = 401\n\tSYS_MSGCTL                       = 402\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_MEMFD_SECRET                 = 447\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/amd64/include -m64 /tmp/amd64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 0\n\tSYS_WRITE                   = 1\n\tSYS_OPEN                    = 2\n\tSYS_CLOSE                   = 3\n\tSYS_STAT                    = 4\n\tSYS_FSTAT                   = 5\n\tSYS_LSTAT                   = 6\n\tSYS_POLL                    = 7\n\tSYS_LSEEK                   = 8\n\tSYS_MMAP                    = 9\n\tSYS_MPROTECT                = 10\n\tSYS_MUNMAP                  = 11\n\tSYS_BRK                     = 12\n\tSYS_RT_SIGACTION            = 13\n\tSYS_RT_SIGPROCMASK          = 14\n\tSYS_RT_SIGRETURN            = 15\n\tSYS_IOCTL                   = 16\n\tSYS_PREAD64                 = 17\n\tSYS_PWRITE64                = 18\n\tSYS_READV                   = 19\n\tSYS_WRITEV                  = 20\n\tSYS_ACCESS                  = 21\n\tSYS_PIPE                    = 22\n\tSYS_SELECT                  = 23\n\tSYS_SCHED_YIELD             = 24\n\tSYS_MREMAP                  = 25\n\tSYS_MSYNC                   = 26\n\tSYS_MINCORE                 = 27\n\tSYS_MADVISE                 = 28\n\tSYS_SHMGET                  = 29\n\tSYS_SHMAT                   = 30\n\tSYS_SHMCTL                  = 31\n\tSYS_DUP                     = 32\n\tSYS_DUP2                    = 33\n\tSYS_PAUSE                   = 34\n\tSYS_NANOSLEEP               = 35\n\tSYS_GETITIMER               = 36\n\tSYS_ALARM                   = 37\n\tSYS_SETITIMER               = 38\n\tSYS_GETPID                  = 39\n\tSYS_SENDFILE                = 40\n\tSYS_SOCKET                  = 41\n\tSYS_CONNECT                 = 42\n\tSYS_ACCEPT                  = 43\n\tSYS_SENDTO                  = 44\n\tSYS_RECVFROM                = 45\n\tSYS_SENDMSG                 = 46\n\tSYS_RECVMSG                 = 47\n\tSYS_SHUTDOWN                = 48\n\tSYS_BIND                    = 49\n\tSYS_LISTEN                  = 50\n\tSYS_GETSOCKNAME             = 51\n\tSYS_GETPEERNAME             = 52\n\tSYS_SOCKETPAIR              = 53\n\tSYS_SETSOCKOPT              = 54\n\tSYS_GETSOCKOPT              = 55\n\tSYS_CLONE                   = 56\n\tSYS_FORK                    = 57\n\tSYS_VFORK                   = 58\n\tSYS_EXECVE                  = 59\n\tSYS_EXIT                    = 60\n\tSYS_WAIT4                   = 61\n\tSYS_KILL                    = 62\n\tSYS_UNAME                   = 63\n\tSYS_SEMGET                  = 64\n\tSYS_SEMOP                   = 65\n\tSYS_SEMCTL                  = 66\n\tSYS_SHMDT                   = 67\n\tSYS_MSGGET                  = 68\n\tSYS_MSGSND                  = 69\n\tSYS_MSGRCV                  = 70\n\tSYS_MSGCTL                  = 71\n\tSYS_FCNTL                   = 72\n\tSYS_FLOCK                   = 73\n\tSYS_FSYNC                   = 74\n\tSYS_FDATASYNC               = 75\n\tSYS_TRUNCATE                = 76\n\tSYS_FTRUNCATE               = 77\n\tSYS_GETDENTS                = 78\n\tSYS_GETCWD                  = 79\n\tSYS_CHDIR                   = 80\n\tSYS_FCHDIR                  = 81\n\tSYS_RENAME                  = 82\n\tSYS_MKDIR                   = 83\n\tSYS_RMDIR                   = 84\n\tSYS_CREAT                   = 85\n\tSYS_LINK                    = 86\n\tSYS_UNLINK                  = 87\n\tSYS_SYMLINK                 = 88\n\tSYS_READLINK                = 89\n\tSYS_CHMOD                   = 90\n\tSYS_FCHMOD                  = 91\n\tSYS_CHOWN                   = 92\n\tSYS_FCHOWN                  = 93\n\tSYS_LCHOWN                  = 94\n\tSYS_UMASK                   = 95\n\tSYS_GETTIMEOFDAY            = 96\n\tSYS_GETRLIMIT               = 97\n\tSYS_GETRUSAGE               = 98\n\tSYS_SYSINFO                 = 99\n\tSYS_TIMES                   = 100\n\tSYS_PTRACE                  = 101\n\tSYS_GETUID                  = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_GETGID                  = 104\n\tSYS_SETUID                  = 105\n\tSYS_SETGID                  = 106\n\tSYS_GETEUID                 = 107\n\tSYS_GETEGID                 = 108\n\tSYS_SETPGID                 = 109\n\tSYS_GETPPID                 = 110\n\tSYS_GETPGRP                 = 111\n\tSYS_SETSID                  = 112\n\tSYS_SETREUID                = 113\n\tSYS_SETREGID                = 114\n\tSYS_GETGROUPS               = 115\n\tSYS_SETGROUPS               = 116\n\tSYS_SETRESUID               = 117\n\tSYS_GETRESUID               = 118\n\tSYS_SETRESGID               = 119\n\tSYS_GETRESGID               = 120\n\tSYS_GETPGID                 = 121\n\tSYS_SETFSUID                = 122\n\tSYS_SETFSGID                = 123\n\tSYS_GETSID                  = 124\n\tSYS_CAPGET                  = 125\n\tSYS_CAPSET                  = 126\n\tSYS_RT_SIGPENDING           = 127\n\tSYS_RT_SIGTIMEDWAIT         = 128\n\tSYS_RT_SIGQUEUEINFO         = 129\n\tSYS_RT_SIGSUSPEND           = 130\n\tSYS_SIGALTSTACK             = 131\n\tSYS_UTIME                   = 132\n\tSYS_MKNOD                   = 133\n\tSYS_USELIB                  = 134\n\tSYS_PERSONALITY             = 135\n\tSYS_USTAT                   = 136\n\tSYS_STATFS                  = 137\n\tSYS_FSTATFS                 = 138\n\tSYS_SYSFS                   = 139\n\tSYS_GETPRIORITY             = 140\n\tSYS_SETPRIORITY             = 141\n\tSYS_SCHED_SETPARAM          = 142\n\tSYS_SCHED_GETPARAM          = 143\n\tSYS_SCHED_SETSCHEDULER      = 144\n\tSYS_SCHED_GETSCHEDULER      = 145\n\tSYS_SCHED_GET_PRIORITY_MAX  = 146\n\tSYS_SCHED_GET_PRIORITY_MIN  = 147\n\tSYS_SCHED_RR_GET_INTERVAL   = 148\n\tSYS_MLOCK                   = 149\n\tSYS_MUNLOCK                 = 150\n\tSYS_MLOCKALL                = 151\n\tSYS_MUNLOCKALL              = 152\n\tSYS_VHANGUP                 = 153\n\tSYS_MODIFY_LDT              = 154\n\tSYS_PIVOT_ROOT              = 155\n\tSYS__SYSCTL                 = 156\n\tSYS_PRCTL                   = 157\n\tSYS_ARCH_PRCTL              = 158\n\tSYS_ADJTIMEX                = 159\n\tSYS_SETRLIMIT               = 160\n\tSYS_CHROOT                  = 161\n\tSYS_SYNC                    = 162\n\tSYS_ACCT                    = 163\n\tSYS_SETTIMEOFDAY            = 164\n\tSYS_MOUNT                   = 165\n\tSYS_UMOUNT2                 = 166\n\tSYS_SWAPON                  = 167\n\tSYS_SWAPOFF                 = 168\n\tSYS_REBOOT                  = 169\n\tSYS_SETHOSTNAME             = 170\n\tSYS_SETDOMAINNAME           = 171\n\tSYS_IOPL                    = 172\n\tSYS_IOPERM                  = 173\n\tSYS_CREATE_MODULE           = 174\n\tSYS_INIT_MODULE             = 175\n\tSYS_DELETE_MODULE           = 176\n\tSYS_GET_KERNEL_SYMS         = 177\n\tSYS_QUERY_MODULE            = 178\n\tSYS_QUOTACTL                = 179\n\tSYS_NFSSERVCTL              = 180\n\tSYS_GETPMSG                 = 181\n\tSYS_PUTPMSG                 = 182\n\tSYS_AFS_SYSCALL             = 183\n\tSYS_TUXCALL                 = 184\n\tSYS_SECURITY                = 185\n\tSYS_GETTID                  = 186\n\tSYS_READAHEAD               = 187\n\tSYS_SETXATTR                = 188\n\tSYS_LSETXATTR               = 189\n\tSYS_FSETXATTR               = 190\n\tSYS_GETXATTR                = 191\n\tSYS_LGETXATTR               = 192\n\tSYS_FGETXATTR               = 193\n\tSYS_LISTXATTR               = 194\n\tSYS_LLISTXATTR              = 195\n\tSYS_FLISTXATTR              = 196\n\tSYS_REMOVEXATTR             = 197\n\tSYS_LREMOVEXATTR            = 198\n\tSYS_FREMOVEXATTR            = 199\n\tSYS_TKILL                   = 200\n\tSYS_TIME                    = 201\n\tSYS_FUTEX                   = 202\n\tSYS_SCHED_SETAFFINITY       = 203\n\tSYS_SCHED_GETAFFINITY       = 204\n\tSYS_SET_THREAD_AREA         = 205\n\tSYS_IO_SETUP                = 206\n\tSYS_IO_DESTROY              = 207\n\tSYS_IO_GETEVENTS            = 208\n\tSYS_IO_SUBMIT               = 209\n\tSYS_IO_CANCEL               = 210\n\tSYS_GET_THREAD_AREA         = 211\n\tSYS_LOOKUP_DCOOKIE          = 212\n\tSYS_EPOLL_CREATE            = 213\n\tSYS_EPOLL_CTL_OLD           = 214\n\tSYS_EPOLL_WAIT_OLD          = 215\n\tSYS_REMAP_FILE_PAGES        = 216\n\tSYS_GETDENTS64              = 217\n\tSYS_SET_TID_ADDRESS         = 218\n\tSYS_RESTART_SYSCALL         = 219\n\tSYS_SEMTIMEDOP              = 220\n\tSYS_FADVISE64               = 221\n\tSYS_TIMER_CREATE            = 222\n\tSYS_TIMER_SETTIME           = 223\n\tSYS_TIMER_GETTIME           = 224\n\tSYS_TIMER_GETOVERRUN        = 225\n\tSYS_TIMER_DELETE            = 226\n\tSYS_CLOCK_SETTIME           = 227\n\tSYS_CLOCK_GETTIME           = 228\n\tSYS_CLOCK_GETRES            = 229\n\tSYS_CLOCK_NANOSLEEP         = 230\n\tSYS_EXIT_GROUP              = 231\n\tSYS_EPOLL_WAIT              = 232\n\tSYS_EPOLL_CTL               = 233\n\tSYS_TGKILL                  = 234\n\tSYS_UTIMES                  = 235\n\tSYS_VSERVER                 = 236\n\tSYS_MBIND                   = 237\n\tSYS_SET_MEMPOLICY           = 238\n\tSYS_GET_MEMPOLICY           = 239\n\tSYS_MQ_OPEN                 = 240\n\tSYS_MQ_UNLINK               = 241\n\tSYS_MQ_TIMEDSEND            = 242\n\tSYS_MQ_TIMEDRECEIVE         = 243\n\tSYS_MQ_NOTIFY               = 244\n\tSYS_MQ_GETSETATTR           = 245\n\tSYS_KEXEC_LOAD              = 246\n\tSYS_WAITID                  = 247\n\tSYS_ADD_KEY                 = 248\n\tSYS_REQUEST_KEY             = 249\n\tSYS_KEYCTL                  = 250\n\tSYS_IOPRIO_SET              = 251\n\tSYS_IOPRIO_GET              = 252\n\tSYS_INOTIFY_INIT            = 253\n\tSYS_INOTIFY_ADD_WATCH       = 254\n\tSYS_INOTIFY_RM_WATCH        = 255\n\tSYS_MIGRATE_PAGES           = 256\n\tSYS_OPENAT                  = 257\n\tSYS_MKDIRAT                 = 258\n\tSYS_MKNODAT                 = 259\n\tSYS_FCHOWNAT                = 260\n\tSYS_FUTIMESAT               = 261\n\tSYS_NEWFSTATAT              = 262\n\tSYS_UNLINKAT                = 263\n\tSYS_RENAMEAT                = 264\n\tSYS_LINKAT                  = 265\n\tSYS_SYMLINKAT               = 266\n\tSYS_READLINKAT              = 267\n\tSYS_FCHMODAT                = 268\n\tSYS_FACCESSAT               = 269\n\tSYS_PSELECT6                = 270\n\tSYS_PPOLL                   = 271\n\tSYS_UNSHARE                 = 272\n\tSYS_SET_ROBUST_LIST         = 273\n\tSYS_GET_ROBUST_LIST         = 274\n\tSYS_SPLICE                  = 275\n\tSYS_TEE                     = 276\n\tSYS_SYNC_FILE_RANGE         = 277\n\tSYS_VMSPLICE                = 278\n\tSYS_MOVE_PAGES              = 279\n\tSYS_UTIMENSAT               = 280\n\tSYS_EPOLL_PWAIT             = 281\n\tSYS_SIGNALFD                = 282\n\tSYS_TIMERFD_CREATE          = 283\n\tSYS_EVENTFD                 = 284\n\tSYS_FALLOCATE               = 285\n\tSYS_TIMERFD_SETTIME         = 286\n\tSYS_TIMERFD_GETTIME         = 287\n\tSYS_ACCEPT4                 = 288\n\tSYS_SIGNALFD4               = 289\n\tSYS_EVENTFD2                = 290\n\tSYS_EPOLL_CREATE1           = 291\n\tSYS_DUP3                    = 292\n\tSYS_PIPE2                   = 293\n\tSYS_INOTIFY_INIT1           = 294\n\tSYS_PREADV                  = 295\n\tSYS_PWRITEV                 = 296\n\tSYS_RT_TGSIGQUEUEINFO       = 297\n\tSYS_PERF_EVENT_OPEN         = 298\n\tSYS_RECVMMSG                = 299\n\tSYS_FANOTIFY_INIT           = 300\n\tSYS_FANOTIFY_MARK           = 301\n\tSYS_PRLIMIT64               = 302\n\tSYS_NAME_TO_HANDLE_AT       = 303\n\tSYS_OPEN_BY_HANDLE_AT       = 304\n\tSYS_CLOCK_ADJTIME           = 305\n\tSYS_SYNCFS                  = 306\n\tSYS_SENDMMSG                = 307\n\tSYS_SETNS                   = 308\n\tSYS_GETCPU                  = 309\n\tSYS_PROCESS_VM_READV        = 310\n\tSYS_PROCESS_VM_WRITEV       = 311\n\tSYS_KCMP                    = 312\n\tSYS_FINIT_MODULE            = 313\n\tSYS_SCHED_SETATTR           = 314\n\tSYS_SCHED_GETATTR           = 315\n\tSYS_RENAMEAT2               = 316\n\tSYS_SECCOMP                 = 317\n\tSYS_GETRANDOM               = 318\n\tSYS_MEMFD_CREATE            = 319\n\tSYS_KEXEC_FILE_LOAD         = 320\n\tSYS_BPF                     = 321\n\tSYS_EXECVEAT                = 322\n\tSYS_USERFAULTFD             = 323\n\tSYS_MEMBARRIER              = 324\n\tSYS_MLOCK2                  = 325\n\tSYS_COPY_FILE_RANGE         = 326\n\tSYS_PREADV2                 = 327\n\tSYS_PWRITEV2                = 328\n\tSYS_PKEY_MPROTECT           = 329\n\tSYS_PKEY_ALLOC              = 330\n\tSYS_PKEY_FREE               = 331\n\tSYS_STATX                   = 332\n\tSYS_IO_PGETEVENTS           = 333\n\tSYS_RSEQ                    = 334\n\tSYS_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)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm/include /tmp/arm/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL_MASK                 = 0\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_PTRACE                       = 26\n\tSYS_PAUSE                        = 29\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_SETPGID                      = 57\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SYMLINK                      = 83\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_VHANGUP                      = 111\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_POLL                         = 168\n\tSYS_NFSSERVCTL                   = 169\n\tSYS_SETRESGID                    = 170\n\tSYS_GETRESGID                    = 171\n\tSYS_PRCTL                        = 172\n\tSYS_RT_SIGRETURN                 = 173\n\tSYS_RT_SIGACTION                 = 174\n\tSYS_RT_SIGPROCMASK               = 175\n\tSYS_RT_SIGPENDING                = 176\n\tSYS_RT_SIGTIMEDWAIT              = 177\n\tSYS_RT_SIGQUEUEINFO              = 178\n\tSYS_RT_SIGSUSPEND                = 179\n\tSYS_PREAD64                      = 180\n\tSYS_PWRITE64                     = 181\n\tSYS_CHOWN                        = 182\n\tSYS_GETCWD                       = 183\n\tSYS_CAPGET                       = 184\n\tSYS_CAPSET                       = 185\n\tSYS_SIGALTSTACK                  = 186\n\tSYS_SENDFILE                     = 187\n\tSYS_VFORK                        = 190\n\tSYS_UGETRLIMIT                   = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_LCHOWN32                     = 198\n\tSYS_GETUID32                     = 199\n\tSYS_GETGID32                     = 200\n\tSYS_GETEUID32                    = 201\n\tSYS_GETEGID32                    = 202\n\tSYS_SETREUID32                   = 203\n\tSYS_SETREGID32                   = 204\n\tSYS_GETGROUPS32                  = 205\n\tSYS_SETGROUPS32                  = 206\n\tSYS_FCHOWN32                     = 207\n\tSYS_SETRESUID32                  = 208\n\tSYS_GETRESUID32                  = 209\n\tSYS_SETRESGID32                  = 210\n\tSYS_GETRESGID32                  = 211\n\tSYS_CHOWN32                      = 212\n\tSYS_SETUID32                     = 213\n\tSYS_SETGID32                     = 214\n\tSYS_SETFSUID32                   = 215\n\tSYS_SETFSGID32                   = 216\n\tSYS_GETDENTS64                   = 217\n\tSYS_PIVOT_ROOT                   = 218\n\tSYS_MINCORE                      = 219\n\tSYS_MADVISE                      = 220\n\tSYS_FCNTL64                      = 221\n\tSYS_GETTID                       = 224\n\tSYS_READAHEAD                    = 225\n\tSYS_SETXATTR                     = 226\n\tSYS_LSETXATTR                    = 227\n\tSYS_FSETXATTR                    = 228\n\tSYS_GETXATTR                     = 229\n\tSYS_LGETXATTR                    = 230\n\tSYS_FGETXATTR                    = 231\n\tSYS_LISTXATTR                    = 232\n\tSYS_LLISTXATTR                   = 233\n\tSYS_FLISTXATTR                   = 234\n\tSYS_REMOVEXATTR                  = 235\n\tSYS_LREMOVEXATTR                 = 236\n\tSYS_FREMOVEXATTR                 = 237\n\tSYS_TKILL                        = 238\n\tSYS_SENDFILE64                   = 239\n\tSYS_FUTEX                        = 240\n\tSYS_SCHED_SETAFFINITY            = 241\n\tSYS_SCHED_GETAFFINITY            = 242\n\tSYS_IO_SETUP                     = 243\n\tSYS_IO_DESTROY                   = 244\n\tSYS_IO_GETEVENTS                 = 245\n\tSYS_IO_SUBMIT                    = 246\n\tSYS_IO_CANCEL                    = 247\n\tSYS_EXIT_GROUP                   = 248\n\tSYS_LOOKUP_DCOOKIE               = 249\n\tSYS_EPOLL_CREATE                 = 250\n\tSYS_EPOLL_CTL                    = 251\n\tSYS_EPOLL_WAIT                   = 252\n\tSYS_REMAP_FILE_PAGES             = 253\n\tSYS_SET_TID_ADDRESS              = 256\n\tSYS_TIMER_CREATE                 = 257\n\tSYS_TIMER_SETTIME                = 258\n\tSYS_TIMER_GETTIME                = 259\n\tSYS_TIMER_GETOVERRUN             = 260\n\tSYS_TIMER_DELETE                 = 261\n\tSYS_CLOCK_SETTIME                = 262\n\tSYS_CLOCK_GETTIME                = 263\n\tSYS_CLOCK_GETRES                 = 264\n\tSYS_CLOCK_NANOSLEEP              = 265\n\tSYS_STATFS64                     = 266\n\tSYS_FSTATFS64                    = 267\n\tSYS_TGKILL                       = 268\n\tSYS_UTIMES                       = 269\n\tSYS_ARM_FADVISE64_64             = 270\n\tSYS_PCICONFIG_IOBASE             = 271\n\tSYS_PCICONFIG_READ               = 272\n\tSYS_PCICONFIG_WRITE              = 273\n\tSYS_MQ_OPEN                      = 274\n\tSYS_MQ_UNLINK                    = 275\n\tSYS_MQ_TIMEDSEND                 = 276\n\tSYS_MQ_TIMEDRECEIVE              = 277\n\tSYS_MQ_NOTIFY                    = 278\n\tSYS_MQ_GETSETATTR                = 279\n\tSYS_WAITID                       = 280\n\tSYS_SOCKET                       = 281\n\tSYS_BIND                         = 282\n\tSYS_CONNECT                      = 283\n\tSYS_LISTEN                       = 284\n\tSYS_ACCEPT                       = 285\n\tSYS_GETSOCKNAME                  = 286\n\tSYS_GETPEERNAME                  = 287\n\tSYS_SOCKETPAIR                   = 288\n\tSYS_SEND                         = 289\n\tSYS_SENDTO                       = 290\n\tSYS_RECV                         = 291\n\tSYS_RECVFROM                     = 292\n\tSYS_SHUTDOWN                     = 293\n\tSYS_SETSOCKOPT                   = 294\n\tSYS_GETSOCKOPT                   = 295\n\tSYS_SENDMSG                      = 296\n\tSYS_RECVMSG                      = 297\n\tSYS_SEMOP                        = 298\n\tSYS_SEMGET                       = 299\n\tSYS_SEMCTL                       = 300\n\tSYS_MSGSND                       = 301\n\tSYS_MSGRCV                       = 302\n\tSYS_MSGGET                       = 303\n\tSYS_MSGCTL                       = 304\n\tSYS_SHMAT                        = 305\n\tSYS_SHMDT                        = 306\n\tSYS_SHMGET                       = 307\n\tSYS_SHMCTL                       = 308\n\tSYS_ADD_KEY                      = 309\n\tSYS_REQUEST_KEY                  = 310\n\tSYS_KEYCTL                       = 311\n\tSYS_SEMTIMEDOP                   = 312\n\tSYS_VSERVER                      = 313\n\tSYS_IOPRIO_SET                   = 314\n\tSYS_IOPRIO_GET                   = 315\n\tSYS_INOTIFY_INIT                 = 316\n\tSYS_INOTIFY_ADD_WATCH            = 317\n\tSYS_INOTIFY_RM_WATCH             = 318\n\tSYS_MBIND                        = 319\n\tSYS_GET_MEMPOLICY                = 320\n\tSYS_SET_MEMPOLICY                = 321\n\tSYS_OPENAT                       = 322\n\tSYS_MKDIRAT                      = 323\n\tSYS_MKNODAT                      = 324\n\tSYS_FCHOWNAT                     = 325\n\tSYS_FUTIMESAT                    = 326\n\tSYS_FSTATAT64                    = 327\n\tSYS_UNLINKAT                     = 328\n\tSYS_RENAMEAT                     = 329\n\tSYS_LINKAT                       = 330\n\tSYS_SYMLINKAT                    = 331\n\tSYS_READLINKAT                   = 332\n\tSYS_FCHMODAT                     = 333\n\tSYS_FACCESSAT                    = 334\n\tSYS_PSELECT6                     = 335\n\tSYS_PPOLL                        = 336\n\tSYS_UNSHARE                      = 337\n\tSYS_SET_ROBUST_LIST              = 338\n\tSYS_GET_ROBUST_LIST              = 339\n\tSYS_SPLICE                       = 340\n\tSYS_ARM_SYNC_FILE_RANGE          = 341\n\tSYS_TEE                          = 342\n\tSYS_VMSPLICE                     = 343\n\tSYS_MOVE_PAGES                   = 344\n\tSYS_GETCPU                       = 345\n\tSYS_EPOLL_PWAIT                  = 346\n\tSYS_KEXEC_LOAD                   = 347\n\tSYS_UTIMENSAT                    = 348\n\tSYS_SIGNALFD                     = 349\n\tSYS_TIMERFD_CREATE               = 350\n\tSYS_EVENTFD                      = 351\n\tSYS_FALLOCATE                    = 352\n\tSYS_TIMERFD_SETTIME              = 353\n\tSYS_TIMERFD_GETTIME              = 354\n\tSYS_SIGNALFD4                    = 355\n\tSYS_EVENTFD2                     = 356\n\tSYS_EPOLL_CREATE1                = 357\n\tSYS_DUP3                         = 358\n\tSYS_PIPE2                        = 359\n\tSYS_INOTIFY_INIT1                = 360\n\tSYS_PREADV                       = 361\n\tSYS_PWRITEV                      = 362\n\tSYS_RT_TGSIGQUEUEINFO            = 363\n\tSYS_PERF_EVENT_OPEN              = 364\n\tSYS_RECVMMSG                     = 365\n\tSYS_ACCEPT4                      = 366\n\tSYS_FANOTIFY_INIT                = 367\n\tSYS_FANOTIFY_MARK                = 368\n\tSYS_PRLIMIT64                    = 369\n\tSYS_NAME_TO_HANDLE_AT            = 370\n\tSYS_OPEN_BY_HANDLE_AT            = 371\n\tSYS_CLOCK_ADJTIME                = 372\n\tSYS_SYNCFS                       = 373\n\tSYS_SENDMMSG                     = 374\n\tSYS_SETNS                        = 375\n\tSYS_PROCESS_VM_READV             = 376\n\tSYS_PROCESS_VM_WRITEV            = 377\n\tSYS_KCMP                         = 378\n\tSYS_FINIT_MODULE                 = 379\n\tSYS_SCHED_SETATTR                = 380\n\tSYS_SCHED_GETATTR                = 381\n\tSYS_RENAMEAT2                    = 382\n\tSYS_SECCOMP                      = 383\n\tSYS_GETRANDOM                    = 384\n\tSYS_MEMFD_CREATE                 = 385\n\tSYS_BPF                          = 386\n\tSYS_EXECVEAT                     = 387\n\tSYS_USERFAULTFD                  = 388\n\tSYS_MEMBARRIER                   = 389\n\tSYS_MLOCK2                       = 390\n\tSYS_COPY_FILE_RANGE              = 391\n\tSYS_PREADV2                      = 392\n\tSYS_PWRITEV2                     = 393\n\tSYS_PKEY_MPROTECT                = 394\n\tSYS_PKEY_ALLOC                   = 395\n\tSYS_PKEY_FREE                    = 396\n\tSYS_STATX                        = 397\n\tSYS_RSEQ                         = 398\n\tSYS_IO_PGETEVENTS                = 399\n\tSYS_MIGRATE_PAGES                = 400\n\tSYS_KEXEC_FILE_LOAD              = 401\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm64/include -fsigned-char /tmp/arm64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_RENAMEAT                = 38\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_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)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/loong64/include /tmp/loong64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_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)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips/include /tmp/mips/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                      = 4000\n\tSYS_EXIT                         = 4001\n\tSYS_FORK                         = 4002\n\tSYS_READ                         = 4003\n\tSYS_WRITE                        = 4004\n\tSYS_OPEN                         = 4005\n\tSYS_CLOSE                        = 4006\n\tSYS_WAITPID                      = 4007\n\tSYS_CREAT                        = 4008\n\tSYS_LINK                         = 4009\n\tSYS_UNLINK                       = 4010\n\tSYS_EXECVE                       = 4011\n\tSYS_CHDIR                        = 4012\n\tSYS_TIME                         = 4013\n\tSYS_MKNOD                        = 4014\n\tSYS_CHMOD                        = 4015\n\tSYS_LCHOWN                       = 4016\n\tSYS_BREAK                        = 4017\n\tSYS_UNUSED18                     = 4018\n\tSYS_LSEEK                        = 4019\n\tSYS_GETPID                       = 4020\n\tSYS_MOUNT                        = 4021\n\tSYS_UMOUNT                       = 4022\n\tSYS_SETUID                       = 4023\n\tSYS_GETUID                       = 4024\n\tSYS_STIME                        = 4025\n\tSYS_PTRACE                       = 4026\n\tSYS_ALARM                        = 4027\n\tSYS_UNUSED28                     = 4028\n\tSYS_PAUSE                        = 4029\n\tSYS_UTIME                        = 4030\n\tSYS_STTY                         = 4031\n\tSYS_GTTY                         = 4032\n\tSYS_ACCESS                       = 4033\n\tSYS_NICE                         = 4034\n\tSYS_FTIME                        = 4035\n\tSYS_SYNC                         = 4036\n\tSYS_KILL                         = 4037\n\tSYS_RENAME                       = 4038\n\tSYS_MKDIR                        = 4039\n\tSYS_RMDIR                        = 4040\n\tSYS_DUP                          = 4041\n\tSYS_PIPE                         = 4042\n\tSYS_TIMES                        = 4043\n\tSYS_PROF                         = 4044\n\tSYS_BRK                          = 4045\n\tSYS_SETGID                       = 4046\n\tSYS_GETGID                       = 4047\n\tSYS_SIGNAL                       = 4048\n\tSYS_GETEUID                      = 4049\n\tSYS_GETEGID                      = 4050\n\tSYS_ACCT                         = 4051\n\tSYS_UMOUNT2                      = 4052\n\tSYS_LOCK                         = 4053\n\tSYS_IOCTL                        = 4054\n\tSYS_FCNTL                        = 4055\n\tSYS_MPX                          = 4056\n\tSYS_SETPGID                      = 4057\n\tSYS_ULIMIT                       = 4058\n\tSYS_UNUSED59                     = 4059\n\tSYS_UMASK                        = 4060\n\tSYS_CHROOT                       = 4061\n\tSYS_USTAT                        = 4062\n\tSYS_DUP2                         = 4063\n\tSYS_GETPPID                      = 4064\n\tSYS_GETPGRP                      = 4065\n\tSYS_SETSID                       = 4066\n\tSYS_SIGACTION                    = 4067\n\tSYS_SGETMASK                     = 4068\n\tSYS_SSETMASK                     = 4069\n\tSYS_SETREUID                     = 4070\n\tSYS_SETREGID                     = 4071\n\tSYS_SIGSUSPEND                   = 4072\n\tSYS_SIGPENDING                   = 4073\n\tSYS_SETHOSTNAME                  = 4074\n\tSYS_SETRLIMIT                    = 4075\n\tSYS_GETRLIMIT                    = 4076\n\tSYS_GETRUSAGE                    = 4077\n\tSYS_GETTIMEOFDAY                 = 4078\n\tSYS_SETTIMEOFDAY                 = 4079\n\tSYS_GETGROUPS                    = 4080\n\tSYS_SETGROUPS                    = 4081\n\tSYS_RESERVED82                   = 4082\n\tSYS_SYMLINK                      = 4083\n\tSYS_UNUSED84                     = 4084\n\tSYS_READLINK                     = 4085\n\tSYS_USELIB                       = 4086\n\tSYS_SWAPON                       = 4087\n\tSYS_REBOOT                       = 4088\n\tSYS_READDIR                      = 4089\n\tSYS_MMAP                         = 4090\n\tSYS_MUNMAP                       = 4091\n\tSYS_TRUNCATE                     = 4092\n\tSYS_FTRUNCATE                    = 4093\n\tSYS_FCHMOD                       = 4094\n\tSYS_FCHOWN                       = 4095\n\tSYS_GETPRIORITY                  = 4096\n\tSYS_SETPRIORITY                  = 4097\n\tSYS_PROFIL                       = 4098\n\tSYS_STATFS                       = 4099\n\tSYS_FSTATFS                      = 4100\n\tSYS_IOPERM                       = 4101\n\tSYS_SOCKETCALL                   = 4102\n\tSYS_SYSLOG                       = 4103\n\tSYS_SETITIMER                    = 4104\n\tSYS_GETITIMER                    = 4105\n\tSYS_STAT                         = 4106\n\tSYS_LSTAT                        = 4107\n\tSYS_FSTAT                        = 4108\n\tSYS_UNUSED109                    = 4109\n\tSYS_IOPL                         = 4110\n\tSYS_VHANGUP                      = 4111\n\tSYS_IDLE                         = 4112\n\tSYS_VM86                         = 4113\n\tSYS_WAIT4                        = 4114\n\tSYS_SWAPOFF                      = 4115\n\tSYS_SYSINFO                      = 4116\n\tSYS_IPC                          = 4117\n\tSYS_FSYNC                        = 4118\n\tSYS_SIGRETURN                    = 4119\n\tSYS_CLONE                        = 4120\n\tSYS_SETDOMAINNAME                = 4121\n\tSYS_UNAME                        = 4122\n\tSYS_MODIFY_LDT                   = 4123\n\tSYS_ADJTIMEX                     = 4124\n\tSYS_MPROTECT                     = 4125\n\tSYS_SIGPROCMASK                  = 4126\n\tSYS_CREATE_MODULE                = 4127\n\tSYS_INIT_MODULE                  = 4128\n\tSYS_DELETE_MODULE                = 4129\n\tSYS_GET_KERNEL_SYMS              = 4130\n\tSYS_QUOTACTL                     = 4131\n\tSYS_GETPGID                      = 4132\n\tSYS_FCHDIR                       = 4133\n\tSYS_BDFLUSH                      = 4134\n\tSYS_SYSFS                        = 4135\n\tSYS_PERSONALITY                  = 4136\n\tSYS_AFS_SYSCALL                  = 4137\n\tSYS_SETFSUID                     = 4138\n\tSYS_SETFSGID                     = 4139\n\tSYS__LLSEEK                      = 4140\n\tSYS_GETDENTS                     = 4141\n\tSYS__NEWSELECT                   = 4142\n\tSYS_FLOCK                        = 4143\n\tSYS_MSYNC                        = 4144\n\tSYS_READV                        = 4145\n\tSYS_WRITEV                       = 4146\n\tSYS_CACHEFLUSH                   = 4147\n\tSYS_CACHECTL                     = 4148\n\tSYS_SYSMIPS                      = 4149\n\tSYS_UNUSED150                    = 4150\n\tSYS_GETSID                       = 4151\n\tSYS_FDATASYNC                    = 4152\n\tSYS__SYSCTL                      = 4153\n\tSYS_MLOCK                        = 4154\n\tSYS_MUNLOCK                      = 4155\n\tSYS_MLOCKALL                     = 4156\n\tSYS_MUNLOCKALL                   = 4157\n\tSYS_SCHED_SETPARAM               = 4158\n\tSYS_SCHED_GETPARAM               = 4159\n\tSYS_SCHED_SETSCHEDULER           = 4160\n\tSYS_SCHED_GETSCHEDULER           = 4161\n\tSYS_SCHED_YIELD                  = 4162\n\tSYS_SCHED_GET_PRIORITY_MAX       = 4163\n\tSYS_SCHED_GET_PRIORITY_MIN       = 4164\n\tSYS_SCHED_RR_GET_INTERVAL        = 4165\n\tSYS_NANOSLEEP                    = 4166\n\tSYS_MREMAP                       = 4167\n\tSYS_ACCEPT                       = 4168\n\tSYS_BIND                         = 4169\n\tSYS_CONNECT                      = 4170\n\tSYS_GETPEERNAME                  = 4171\n\tSYS_GETSOCKNAME                  = 4172\n\tSYS_GETSOCKOPT                   = 4173\n\tSYS_LISTEN                       = 4174\n\tSYS_RECV                         = 4175\n\tSYS_RECVFROM                     = 4176\n\tSYS_RECVMSG                      = 4177\n\tSYS_SEND                         = 4178\n\tSYS_SENDMSG                      = 4179\n\tSYS_SENDTO                       = 4180\n\tSYS_SETSOCKOPT                   = 4181\n\tSYS_SHUTDOWN                     = 4182\n\tSYS_SOCKET                       = 4183\n\tSYS_SOCKETPAIR                   = 4184\n\tSYS_SETRESUID                    = 4185\n\tSYS_GETRESUID                    = 4186\n\tSYS_QUERY_MODULE                 = 4187\n\tSYS_POLL                         = 4188\n\tSYS_NFSSERVCTL                   = 4189\n\tSYS_SETRESGID                    = 4190\n\tSYS_GETRESGID                    = 4191\n\tSYS_PRCTL                        = 4192\n\tSYS_RT_SIGRETURN                 = 4193\n\tSYS_RT_SIGACTION                 = 4194\n\tSYS_RT_SIGPROCMASK               = 4195\n\tSYS_RT_SIGPENDING                = 4196\n\tSYS_RT_SIGTIMEDWAIT              = 4197\n\tSYS_RT_SIGQUEUEINFO              = 4198\n\tSYS_RT_SIGSUSPEND                = 4199\n\tSYS_PREAD64                      = 4200\n\tSYS_PWRITE64                     = 4201\n\tSYS_CHOWN                        = 4202\n\tSYS_GETCWD                       = 4203\n\tSYS_CAPGET                       = 4204\n\tSYS_CAPSET                       = 4205\n\tSYS_SIGALTSTACK                  = 4206\n\tSYS_SENDFILE                     = 4207\n\tSYS_GETPMSG                      = 4208\n\tSYS_PUTPMSG                      = 4209\n\tSYS_MMAP2                        = 4210\n\tSYS_TRUNCATE64                   = 4211\n\tSYS_FTRUNCATE64                  = 4212\n\tSYS_STAT64                       = 4213\n\tSYS_LSTAT64                      = 4214\n\tSYS_FSTAT64                      = 4215\n\tSYS_PIVOT_ROOT                   = 4216\n\tSYS_MINCORE                      = 4217\n\tSYS_MADVISE                      = 4218\n\tSYS_GETDENTS64                   = 4219\n\tSYS_FCNTL64                      = 4220\n\tSYS_RESERVED221                  = 4221\n\tSYS_GETTID                       = 4222\n\tSYS_READAHEAD                    = 4223\n\tSYS_SETXATTR                     = 4224\n\tSYS_LSETXATTR                    = 4225\n\tSYS_FSETXATTR                    = 4226\n\tSYS_GETXATTR                     = 4227\n\tSYS_LGETXATTR                    = 4228\n\tSYS_FGETXATTR                    = 4229\n\tSYS_LISTXATTR                    = 4230\n\tSYS_LLISTXATTR                   = 4231\n\tSYS_FLISTXATTR                   = 4232\n\tSYS_REMOVEXATTR                  = 4233\n\tSYS_LREMOVEXATTR                 = 4234\n\tSYS_FREMOVEXATTR                 = 4235\n\tSYS_TKILL                        = 4236\n\tSYS_SENDFILE64                   = 4237\n\tSYS_FUTEX                        = 4238\n\tSYS_SCHED_SETAFFINITY            = 4239\n\tSYS_SCHED_GETAFFINITY            = 4240\n\tSYS_IO_SETUP                     = 4241\n\tSYS_IO_DESTROY                   = 4242\n\tSYS_IO_GETEVENTS                 = 4243\n\tSYS_IO_SUBMIT                    = 4244\n\tSYS_IO_CANCEL                    = 4245\n\tSYS_EXIT_GROUP                   = 4246\n\tSYS_LOOKUP_DCOOKIE               = 4247\n\tSYS_EPOLL_CREATE                 = 4248\n\tSYS_EPOLL_CTL                    = 4249\n\tSYS_EPOLL_WAIT                   = 4250\n\tSYS_REMAP_FILE_PAGES             = 4251\n\tSYS_SET_TID_ADDRESS              = 4252\n\tSYS_RESTART_SYSCALL              = 4253\n\tSYS_FADVISE64                    = 4254\n\tSYS_STATFS64                     = 4255\n\tSYS_FSTATFS64                    = 4256\n\tSYS_TIMER_CREATE                 = 4257\n\tSYS_TIMER_SETTIME                = 4258\n\tSYS_TIMER_GETTIME                = 4259\n\tSYS_TIMER_GETOVERRUN             = 4260\n\tSYS_TIMER_DELETE                 = 4261\n\tSYS_CLOCK_SETTIME                = 4262\n\tSYS_CLOCK_GETTIME                = 4263\n\tSYS_CLOCK_GETRES                 = 4264\n\tSYS_CLOCK_NANOSLEEP              = 4265\n\tSYS_TGKILL                       = 4266\n\tSYS_UTIMES                       = 4267\n\tSYS_MBIND                        = 4268\n\tSYS_GET_MEMPOLICY                = 4269\n\tSYS_SET_MEMPOLICY                = 4270\n\tSYS_MQ_OPEN                      = 4271\n\tSYS_MQ_UNLINK                    = 4272\n\tSYS_MQ_TIMEDSEND                 = 4273\n\tSYS_MQ_TIMEDRECEIVE              = 4274\n\tSYS_MQ_NOTIFY                    = 4275\n\tSYS_MQ_GETSETATTR                = 4276\n\tSYS_VSERVER                      = 4277\n\tSYS_WAITID                       = 4278\n\tSYS_ADD_KEY                      = 4280\n\tSYS_REQUEST_KEY                  = 4281\n\tSYS_KEYCTL                       = 4282\n\tSYS_SET_THREAD_AREA              = 4283\n\tSYS_INOTIFY_INIT                 = 4284\n\tSYS_INOTIFY_ADD_WATCH            = 4285\n\tSYS_INOTIFY_RM_WATCH             = 4286\n\tSYS_MIGRATE_PAGES                = 4287\n\tSYS_OPENAT                       = 4288\n\tSYS_MKDIRAT                      = 4289\n\tSYS_MKNODAT                      = 4290\n\tSYS_FCHOWNAT                     = 4291\n\tSYS_FUTIMESAT                    = 4292\n\tSYS_FSTATAT64                    = 4293\n\tSYS_UNLINKAT                     = 4294\n\tSYS_RENAMEAT                     = 4295\n\tSYS_LINKAT                       = 4296\n\tSYS_SYMLINKAT                    = 4297\n\tSYS_READLINKAT                   = 4298\n\tSYS_FCHMODAT                     = 4299\n\tSYS_FACCESSAT                    = 4300\n\tSYS_PSELECT6                     = 4301\n\tSYS_PPOLL                        = 4302\n\tSYS_UNSHARE                      = 4303\n\tSYS_SPLICE                       = 4304\n\tSYS_SYNC_FILE_RANGE              = 4305\n\tSYS_TEE                          = 4306\n\tSYS_VMSPLICE                     = 4307\n\tSYS_MOVE_PAGES                   = 4308\n\tSYS_SET_ROBUST_LIST              = 4309\n\tSYS_GET_ROBUST_LIST              = 4310\n\tSYS_KEXEC_LOAD                   = 4311\n\tSYS_GETCPU                       = 4312\n\tSYS_EPOLL_PWAIT                  = 4313\n\tSYS_IOPRIO_SET                   = 4314\n\tSYS_IOPRIO_GET                   = 4315\n\tSYS_UTIMENSAT                    = 4316\n\tSYS_SIGNALFD                     = 4317\n\tSYS_TIMERFD                      = 4318\n\tSYS_EVENTFD                      = 4319\n\tSYS_FALLOCATE                    = 4320\n\tSYS_TIMERFD_CREATE               = 4321\n\tSYS_TIMERFD_GETTIME              = 4322\n\tSYS_TIMERFD_SETTIME              = 4323\n\tSYS_SIGNALFD4                    = 4324\n\tSYS_EVENTFD2                     = 4325\n\tSYS_EPOLL_CREATE1                = 4326\n\tSYS_DUP3                         = 4327\n\tSYS_PIPE2                        = 4328\n\tSYS_INOTIFY_INIT1                = 4329\n\tSYS_PREADV                       = 4330\n\tSYS_PWRITEV                      = 4331\n\tSYS_RT_TGSIGQUEUEINFO            = 4332\n\tSYS_PERF_EVENT_OPEN              = 4333\n\tSYS_ACCEPT4                      = 4334\n\tSYS_RECVMMSG                     = 4335\n\tSYS_FANOTIFY_INIT                = 4336\n\tSYS_FANOTIFY_MARK                = 4337\n\tSYS_PRLIMIT64                    = 4338\n\tSYS_NAME_TO_HANDLE_AT            = 4339\n\tSYS_OPEN_BY_HANDLE_AT            = 4340\n\tSYS_CLOCK_ADJTIME                = 4341\n\tSYS_SYNCFS                       = 4342\n\tSYS_SENDMMSG                     = 4343\n\tSYS_SETNS                        = 4344\n\tSYS_PROCESS_VM_READV             = 4345\n\tSYS_PROCESS_VM_WRITEV            = 4346\n\tSYS_KCMP                         = 4347\n\tSYS_FINIT_MODULE                 = 4348\n\tSYS_SCHED_SETATTR                = 4349\n\tSYS_SCHED_GETATTR                = 4350\n\tSYS_RENAMEAT2                    = 4351\n\tSYS_SECCOMP                      = 4352\n\tSYS_GETRANDOM                    = 4353\n\tSYS_MEMFD_CREATE                 = 4354\n\tSYS_BPF                          = 4355\n\tSYS_EXECVEAT                     = 4356\n\tSYS_USERFAULTFD                  = 4357\n\tSYS_MEMBARRIER                   = 4358\n\tSYS_MLOCK2                       = 4359\n\tSYS_COPY_FILE_RANGE              = 4360\n\tSYS_PREADV2                      = 4361\n\tSYS_PWRITEV2                     = 4362\n\tSYS_PKEY_MPROTECT                = 4363\n\tSYS_PKEY_ALLOC                   = 4364\n\tSYS_PKEY_FREE                    = 4365\n\tSYS_STATX                        = 4366\n\tSYS_RSEQ                         = 4367\n\tSYS_IO_PGETEVENTS                = 4368\n\tSYS_SEMGET                       = 4393\n\tSYS_SEMCTL                       = 4394\n\tSYS_SHMGET                       = 4395\n\tSYS_SHMCTL                       = 4396\n\tSYS_SHMAT                        = 4397\n\tSYS_SHMDT                        = 4398\n\tSYS_MSGGET                       = 4399\n\tSYS_MSGSND                       = 4400\n\tSYS_MSGRCV                       = 4401\n\tSYS_MSGCTL                       = 4402\n\tSYS_CLOCK_GETTIME64              = 4403\n\tSYS_CLOCK_SETTIME64              = 4404\n\tSYS_CLOCK_ADJTIME64              = 4405\n\tSYS_CLOCK_GETRES_TIME64          = 4406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 4407\n\tSYS_TIMER_GETTIME64              = 4408\n\tSYS_TIMER_SETTIME64              = 4409\n\tSYS_TIMERFD_GETTIME64            = 4410\n\tSYS_TIMERFD_SETTIME64            = 4411\n\tSYS_UTIMENSAT_TIME64             = 4412\n\tSYS_PSELECT6_TIME64              = 4413\n\tSYS_PPOLL_TIME64                 = 4414\n\tSYS_IO_PGETEVENTS_TIME64         = 4416\n\tSYS_RECVMMSG_TIME64              = 4417\n\tSYS_MQ_TIMEDSEND_TIME64          = 4418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 4419\n\tSYS_SEMTIMEDOP_TIME64            = 4420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 4421\n\tSYS_FUTEX_TIME64                 = 4422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423\n\tSYS_PIDFD_SEND_SIGNAL            = 4424\n\tSYS_IO_URING_SETUP               = 4425\n\tSYS_IO_URING_ENTER               = 4426\n\tSYS_IO_URING_REGISTER            = 4427\n\tSYS_OPEN_TREE                    = 4428\n\tSYS_MOVE_MOUNT                   = 4429\n\tSYS_FSOPEN                       = 4430\n\tSYS_FSCONFIG                     = 4431\n\tSYS_FSMOUNT                      = 4432\n\tSYS_FSPICK                       = 4433\n\tSYS_PIDFD_OPEN                   = 4434\n\tSYS_CLONE3                       = 4435\n\tSYS_CLOSE_RANGE                  = 4436\n\tSYS_OPENAT2                      = 4437\n\tSYS_PIDFD_GETFD                  = 4438\n\tSYS_FACCESSAT2                   = 4439\n\tSYS_PROCESS_MADVISE              = 4440\n\tSYS_EPOLL_PWAIT2                 = 4441\n\tSYS_MOUNT_SETATTR                = 4442\n\tSYS_QUOTACTL_FD                  = 4443\n\tSYS_LANDLOCK_CREATE_RULESET      = 4444\n\tSYS_LANDLOCK_ADD_RULE            = 4445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 4446\n\tSYS_PROCESS_MRELEASE             = 4448\n\tSYS_FUTEX_WAITV                  = 4449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 4450\n\tSYS_CACHESTAT                    = 4451\n\tSYS_FCHMODAT2                    = 4452\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64/include /tmp/mips64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 5000\n\tSYS_WRITE                   = 5001\n\tSYS_OPEN                    = 5002\n\tSYS_CLOSE                   = 5003\n\tSYS_STAT                    = 5004\n\tSYS_FSTAT                   = 5005\n\tSYS_LSTAT                   = 5006\n\tSYS_POLL                    = 5007\n\tSYS_LSEEK                   = 5008\n\tSYS_MMAP                    = 5009\n\tSYS_MPROTECT                = 5010\n\tSYS_MUNMAP                  = 5011\n\tSYS_BRK                     = 5012\n\tSYS_RT_SIGACTION            = 5013\n\tSYS_RT_SIGPROCMASK          = 5014\n\tSYS_IOCTL                   = 5015\n\tSYS_PREAD64                 = 5016\n\tSYS_PWRITE64                = 5017\n\tSYS_READV                   = 5018\n\tSYS_WRITEV                  = 5019\n\tSYS_ACCESS                  = 5020\n\tSYS_PIPE                    = 5021\n\tSYS__NEWSELECT              = 5022\n\tSYS_SCHED_YIELD             = 5023\n\tSYS_MREMAP                  = 5024\n\tSYS_MSYNC                   = 5025\n\tSYS_MINCORE                 = 5026\n\tSYS_MADVISE                 = 5027\n\tSYS_SHMGET                  = 5028\n\tSYS_SHMAT                   = 5029\n\tSYS_SHMCTL                  = 5030\n\tSYS_DUP                     = 5031\n\tSYS_DUP2                    = 5032\n\tSYS_PAUSE                   = 5033\n\tSYS_NANOSLEEP               = 5034\n\tSYS_GETITIMER               = 5035\n\tSYS_SETITIMER               = 5036\n\tSYS_ALARM                   = 5037\n\tSYS_GETPID                  = 5038\n\tSYS_SENDFILE                = 5039\n\tSYS_SOCKET                  = 5040\n\tSYS_CONNECT                 = 5041\n\tSYS_ACCEPT                  = 5042\n\tSYS_SENDTO                  = 5043\n\tSYS_RECVFROM                = 5044\n\tSYS_SENDMSG                 = 5045\n\tSYS_RECVMSG                 = 5046\n\tSYS_SHUTDOWN                = 5047\n\tSYS_BIND                    = 5048\n\tSYS_LISTEN                  = 5049\n\tSYS_GETSOCKNAME             = 5050\n\tSYS_GETPEERNAME             = 5051\n\tSYS_SOCKETPAIR              = 5052\n\tSYS_SETSOCKOPT              = 5053\n\tSYS_GETSOCKOPT              = 5054\n\tSYS_CLONE                   = 5055\n\tSYS_FORK                    = 5056\n\tSYS_EXECVE                  = 5057\n\tSYS_EXIT                    = 5058\n\tSYS_WAIT4                   = 5059\n\tSYS_KILL                    = 5060\n\tSYS_UNAME                   = 5061\n\tSYS_SEMGET                  = 5062\n\tSYS_SEMOP                   = 5063\n\tSYS_SEMCTL                  = 5064\n\tSYS_SHMDT                   = 5065\n\tSYS_MSGGET                  = 5066\n\tSYS_MSGSND                  = 5067\n\tSYS_MSGRCV                  = 5068\n\tSYS_MSGCTL                  = 5069\n\tSYS_FCNTL                   = 5070\n\tSYS_FLOCK                   = 5071\n\tSYS_FSYNC                   = 5072\n\tSYS_FDATASYNC               = 5073\n\tSYS_TRUNCATE                = 5074\n\tSYS_FTRUNCATE               = 5075\n\tSYS_GETDENTS                = 5076\n\tSYS_GETCWD                  = 5077\n\tSYS_CHDIR                   = 5078\n\tSYS_FCHDIR                  = 5079\n\tSYS_RENAME                  = 5080\n\tSYS_MKDIR                   = 5081\n\tSYS_RMDIR                   = 5082\n\tSYS_CREAT                   = 5083\n\tSYS_LINK                    = 5084\n\tSYS_UNLINK                  = 5085\n\tSYS_SYMLINK                 = 5086\n\tSYS_READLINK                = 5087\n\tSYS_CHMOD                   = 5088\n\tSYS_FCHMOD                  = 5089\n\tSYS_CHOWN                   = 5090\n\tSYS_FCHOWN                  = 5091\n\tSYS_LCHOWN                  = 5092\n\tSYS_UMASK                   = 5093\n\tSYS_GETTIMEOFDAY            = 5094\n\tSYS_GETRLIMIT               = 5095\n\tSYS_GETRUSAGE               = 5096\n\tSYS_SYSINFO                 = 5097\n\tSYS_TIMES                   = 5098\n\tSYS_PTRACE                  = 5099\n\tSYS_GETUID                  = 5100\n\tSYS_SYSLOG                  = 5101\n\tSYS_GETGID                  = 5102\n\tSYS_SETUID                  = 5103\n\tSYS_SETGID                  = 5104\n\tSYS_GETEUID                 = 5105\n\tSYS_GETEGID                 = 5106\n\tSYS_SETPGID                 = 5107\n\tSYS_GETPPID                 = 5108\n\tSYS_GETPGRP                 = 5109\n\tSYS_SETSID                  = 5110\n\tSYS_SETREUID                = 5111\n\tSYS_SETREGID                = 5112\n\tSYS_GETGROUPS               = 5113\n\tSYS_SETGROUPS               = 5114\n\tSYS_SETRESUID               = 5115\n\tSYS_GETRESUID               = 5116\n\tSYS_SETRESGID               = 5117\n\tSYS_GETRESGID               = 5118\n\tSYS_GETPGID                 = 5119\n\tSYS_SETFSUID                = 5120\n\tSYS_SETFSGID                = 5121\n\tSYS_GETSID                  = 5122\n\tSYS_CAPGET                  = 5123\n\tSYS_CAPSET                  = 5124\n\tSYS_RT_SIGPENDING           = 5125\n\tSYS_RT_SIGTIMEDWAIT         = 5126\n\tSYS_RT_SIGQUEUEINFO         = 5127\n\tSYS_RT_SIGSUSPEND           = 5128\n\tSYS_SIGALTSTACK             = 5129\n\tSYS_UTIME                   = 5130\n\tSYS_MKNOD                   = 5131\n\tSYS_PERSONALITY             = 5132\n\tSYS_USTAT                   = 5133\n\tSYS_STATFS                  = 5134\n\tSYS_FSTATFS                 = 5135\n\tSYS_SYSFS                   = 5136\n\tSYS_GETPRIORITY             = 5137\n\tSYS_SETPRIORITY             = 5138\n\tSYS_SCHED_SETPARAM          = 5139\n\tSYS_SCHED_GETPARAM          = 5140\n\tSYS_SCHED_SETSCHEDULER      = 5141\n\tSYS_SCHED_GETSCHEDULER      = 5142\n\tSYS_SCHED_GET_PRIORITY_MAX  = 5143\n\tSYS_SCHED_GET_PRIORITY_MIN  = 5144\n\tSYS_SCHED_RR_GET_INTERVAL   = 5145\n\tSYS_MLOCK                   = 5146\n\tSYS_MUNLOCK                 = 5147\n\tSYS_MLOCKALL                = 5148\n\tSYS_MUNLOCKALL              = 5149\n\tSYS_VHANGUP                 = 5150\n\tSYS_PIVOT_ROOT              = 5151\n\tSYS__SYSCTL                 = 5152\n\tSYS_PRCTL                   = 5153\n\tSYS_ADJTIMEX                = 5154\n\tSYS_SETRLIMIT               = 5155\n\tSYS_CHROOT                  = 5156\n\tSYS_SYNC                    = 5157\n\tSYS_ACCT                    = 5158\n\tSYS_SETTIMEOFDAY            = 5159\n\tSYS_MOUNT                   = 5160\n\tSYS_UMOUNT2                 = 5161\n\tSYS_SWAPON                  = 5162\n\tSYS_SWAPOFF                 = 5163\n\tSYS_REBOOT                  = 5164\n\tSYS_SETHOSTNAME             = 5165\n\tSYS_SETDOMAINNAME           = 5166\n\tSYS_CREATE_MODULE           = 5167\n\tSYS_INIT_MODULE             = 5168\n\tSYS_DELETE_MODULE           = 5169\n\tSYS_GET_KERNEL_SYMS         = 5170\n\tSYS_QUERY_MODULE            = 5171\n\tSYS_QUOTACTL                = 5172\n\tSYS_NFSSERVCTL              = 5173\n\tSYS_GETPMSG                 = 5174\n\tSYS_PUTPMSG                 = 5175\n\tSYS_AFS_SYSCALL             = 5176\n\tSYS_RESERVED177             = 5177\n\tSYS_GETTID                  = 5178\n\tSYS_READAHEAD               = 5179\n\tSYS_SETXATTR                = 5180\n\tSYS_LSETXATTR               = 5181\n\tSYS_FSETXATTR               = 5182\n\tSYS_GETXATTR                = 5183\n\tSYS_LGETXATTR               = 5184\n\tSYS_FGETXATTR               = 5185\n\tSYS_LISTXATTR               = 5186\n\tSYS_LLISTXATTR              = 5187\n\tSYS_FLISTXATTR              = 5188\n\tSYS_REMOVEXATTR             = 5189\n\tSYS_LREMOVEXATTR            = 5190\n\tSYS_FREMOVEXATTR            = 5191\n\tSYS_TKILL                   = 5192\n\tSYS_RESERVED193             = 5193\n\tSYS_FUTEX                   = 5194\n\tSYS_SCHED_SETAFFINITY       = 5195\n\tSYS_SCHED_GETAFFINITY       = 5196\n\tSYS_CACHEFLUSH              = 5197\n\tSYS_CACHECTL                = 5198\n\tSYS_SYSMIPS                 = 5199\n\tSYS_IO_SETUP                = 5200\n\tSYS_IO_DESTROY              = 5201\n\tSYS_IO_GETEVENTS            = 5202\n\tSYS_IO_SUBMIT               = 5203\n\tSYS_IO_CANCEL               = 5204\n\tSYS_EXIT_GROUP              = 5205\n\tSYS_LOOKUP_DCOOKIE          = 5206\n\tSYS_EPOLL_CREATE            = 5207\n\tSYS_EPOLL_CTL               = 5208\n\tSYS_EPOLL_WAIT              = 5209\n\tSYS_REMAP_FILE_PAGES        = 5210\n\tSYS_RT_SIGRETURN            = 5211\n\tSYS_SET_TID_ADDRESS         = 5212\n\tSYS_RESTART_SYSCALL         = 5213\n\tSYS_SEMTIMEDOP              = 5214\n\tSYS_FADVISE64               = 5215\n\tSYS_TIMER_CREATE            = 5216\n\tSYS_TIMER_SETTIME           = 5217\n\tSYS_TIMER_GETTIME           = 5218\n\tSYS_TIMER_GETOVERRUN        = 5219\n\tSYS_TIMER_DELETE            = 5220\n\tSYS_CLOCK_SETTIME           = 5221\n\tSYS_CLOCK_GETTIME           = 5222\n\tSYS_CLOCK_GETRES            = 5223\n\tSYS_CLOCK_NANOSLEEP         = 5224\n\tSYS_TGKILL                  = 5225\n\tSYS_UTIMES                  = 5226\n\tSYS_MBIND                   = 5227\n\tSYS_GET_MEMPOLICY           = 5228\n\tSYS_SET_MEMPOLICY           = 5229\n\tSYS_MQ_OPEN                 = 5230\n\tSYS_MQ_UNLINK               = 5231\n\tSYS_MQ_TIMEDSEND            = 5232\n\tSYS_MQ_TIMEDRECEIVE         = 5233\n\tSYS_MQ_NOTIFY               = 5234\n\tSYS_MQ_GETSETATTR           = 5235\n\tSYS_VSERVER                 = 5236\n\tSYS_WAITID                  = 5237\n\tSYS_ADD_KEY                 = 5239\n\tSYS_REQUEST_KEY             = 5240\n\tSYS_KEYCTL                  = 5241\n\tSYS_SET_THREAD_AREA         = 5242\n\tSYS_INOTIFY_INIT            = 5243\n\tSYS_INOTIFY_ADD_WATCH       = 5244\n\tSYS_INOTIFY_RM_WATCH        = 5245\n\tSYS_MIGRATE_PAGES           = 5246\n\tSYS_OPENAT                  = 5247\n\tSYS_MKDIRAT                 = 5248\n\tSYS_MKNODAT                 = 5249\n\tSYS_FCHOWNAT                = 5250\n\tSYS_FUTIMESAT               = 5251\n\tSYS_NEWFSTATAT              = 5252\n\tSYS_UNLINKAT                = 5253\n\tSYS_RENAMEAT                = 5254\n\tSYS_LINKAT                  = 5255\n\tSYS_SYMLINKAT               = 5256\n\tSYS_READLINKAT              = 5257\n\tSYS_FCHMODAT                = 5258\n\tSYS_FACCESSAT               = 5259\n\tSYS_PSELECT6                = 5260\n\tSYS_PPOLL                   = 5261\n\tSYS_UNSHARE                 = 5262\n\tSYS_SPLICE                  = 5263\n\tSYS_SYNC_FILE_RANGE         = 5264\n\tSYS_TEE                     = 5265\n\tSYS_VMSPLICE                = 5266\n\tSYS_MOVE_PAGES              = 5267\n\tSYS_SET_ROBUST_LIST         = 5268\n\tSYS_GET_ROBUST_LIST         = 5269\n\tSYS_KEXEC_LOAD              = 5270\n\tSYS_GETCPU                  = 5271\n\tSYS_EPOLL_PWAIT             = 5272\n\tSYS_IOPRIO_SET              = 5273\n\tSYS_IOPRIO_GET              = 5274\n\tSYS_UTIMENSAT               = 5275\n\tSYS_SIGNALFD                = 5276\n\tSYS_TIMERFD                 = 5277\n\tSYS_EVENTFD                 = 5278\n\tSYS_FALLOCATE               = 5279\n\tSYS_TIMERFD_CREATE          = 5280\n\tSYS_TIMERFD_GETTIME         = 5281\n\tSYS_TIMERFD_SETTIME         = 5282\n\tSYS_SIGNALFD4               = 5283\n\tSYS_EVENTFD2                = 5284\n\tSYS_EPOLL_CREATE1           = 5285\n\tSYS_DUP3                    = 5286\n\tSYS_PIPE2                   = 5287\n\tSYS_INOTIFY_INIT1           = 5288\n\tSYS_PREADV                  = 5289\n\tSYS_PWRITEV                 = 5290\n\tSYS_RT_TGSIGQUEUEINFO       = 5291\n\tSYS_PERF_EVENT_OPEN         = 5292\n\tSYS_ACCEPT4                 = 5293\n\tSYS_RECVMMSG                = 5294\n\tSYS_FANOTIFY_INIT           = 5295\n\tSYS_FANOTIFY_MARK           = 5296\n\tSYS_PRLIMIT64               = 5297\n\tSYS_NAME_TO_HANDLE_AT       = 5298\n\tSYS_OPEN_BY_HANDLE_AT       = 5299\n\tSYS_CLOCK_ADJTIME           = 5300\n\tSYS_SYNCFS                  = 5301\n\tSYS_SENDMMSG                = 5302\n\tSYS_SETNS                   = 5303\n\tSYS_PROCESS_VM_READV        = 5304\n\tSYS_PROCESS_VM_WRITEV       = 5305\n\tSYS_KCMP                    = 5306\n\tSYS_FINIT_MODULE            = 5307\n\tSYS_GETDENTS64              = 5308\n\tSYS_SCHED_SETATTR           = 5309\n\tSYS_SCHED_GETATTR           = 5310\n\tSYS_RENAMEAT2               = 5311\n\tSYS_SECCOMP                 = 5312\n\tSYS_GETRANDOM               = 5313\n\tSYS_MEMFD_CREATE            = 5314\n\tSYS_BPF                     = 5315\n\tSYS_EXECVEAT                = 5316\n\tSYS_USERFAULTFD             = 5317\n\tSYS_MEMBARRIER              = 5318\n\tSYS_MLOCK2                  = 5319\n\tSYS_COPY_FILE_RANGE         = 5320\n\tSYS_PREADV2                 = 5321\n\tSYS_PWRITEV2                = 5322\n\tSYS_PKEY_MPROTECT           = 5323\n\tSYS_PKEY_ALLOC              = 5324\n\tSYS_PKEY_FREE               = 5325\n\tSYS_STATX                   = 5326\n\tSYS_RSEQ                    = 5327\n\tSYS_IO_PGETEVENTS           = 5328\n\tSYS_PIDFD_SEND_SIGNAL       = 5424\n\tSYS_IO_URING_SETUP          = 5425\n\tSYS_IO_URING_ENTER          = 5426\n\tSYS_IO_URING_REGISTER       = 5427\n\tSYS_OPEN_TREE               = 5428\n\tSYS_MOVE_MOUNT              = 5429\n\tSYS_FSOPEN                  = 5430\n\tSYS_FSCONFIG                = 5431\n\tSYS_FSMOUNT                 = 5432\n\tSYS_FSPICK                  = 5433\n\tSYS_PIDFD_OPEN              = 5434\n\tSYS_CLONE3                  = 5435\n\tSYS_CLOSE_RANGE             = 5436\n\tSYS_OPENAT2                 = 5437\n\tSYS_PIDFD_GETFD             = 5438\n\tSYS_FACCESSAT2              = 5439\n\tSYS_PROCESS_MADVISE         = 5440\n\tSYS_EPOLL_PWAIT2            = 5441\n\tSYS_MOUNT_SETATTR           = 5442\n\tSYS_QUOTACTL_FD             = 5443\n\tSYS_LANDLOCK_CREATE_RULESET = 5444\n\tSYS_LANDLOCK_ADD_RULE       = 5445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 5446\n\tSYS_PROCESS_MRELEASE        = 5448\n\tSYS_FUTEX_WAITV             = 5449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 5450\n\tSYS_CACHESTAT               = 5451\n\tSYS_FCHMODAT2               = 5452\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64le/include /tmp/mips64le/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 5000\n\tSYS_WRITE                   = 5001\n\tSYS_OPEN                    = 5002\n\tSYS_CLOSE                   = 5003\n\tSYS_STAT                    = 5004\n\tSYS_FSTAT                   = 5005\n\tSYS_LSTAT                   = 5006\n\tSYS_POLL                    = 5007\n\tSYS_LSEEK                   = 5008\n\tSYS_MMAP                    = 5009\n\tSYS_MPROTECT                = 5010\n\tSYS_MUNMAP                  = 5011\n\tSYS_BRK                     = 5012\n\tSYS_RT_SIGACTION            = 5013\n\tSYS_RT_SIGPROCMASK          = 5014\n\tSYS_IOCTL                   = 5015\n\tSYS_PREAD64                 = 5016\n\tSYS_PWRITE64                = 5017\n\tSYS_READV                   = 5018\n\tSYS_WRITEV                  = 5019\n\tSYS_ACCESS                  = 5020\n\tSYS_PIPE                    = 5021\n\tSYS__NEWSELECT              = 5022\n\tSYS_SCHED_YIELD             = 5023\n\tSYS_MREMAP                  = 5024\n\tSYS_MSYNC                   = 5025\n\tSYS_MINCORE                 = 5026\n\tSYS_MADVISE                 = 5027\n\tSYS_SHMGET                  = 5028\n\tSYS_SHMAT                   = 5029\n\tSYS_SHMCTL                  = 5030\n\tSYS_DUP                     = 5031\n\tSYS_DUP2                    = 5032\n\tSYS_PAUSE                   = 5033\n\tSYS_NANOSLEEP               = 5034\n\tSYS_GETITIMER               = 5035\n\tSYS_SETITIMER               = 5036\n\tSYS_ALARM                   = 5037\n\tSYS_GETPID                  = 5038\n\tSYS_SENDFILE                = 5039\n\tSYS_SOCKET                  = 5040\n\tSYS_CONNECT                 = 5041\n\tSYS_ACCEPT                  = 5042\n\tSYS_SENDTO                  = 5043\n\tSYS_RECVFROM                = 5044\n\tSYS_SENDMSG                 = 5045\n\tSYS_RECVMSG                 = 5046\n\tSYS_SHUTDOWN                = 5047\n\tSYS_BIND                    = 5048\n\tSYS_LISTEN                  = 5049\n\tSYS_GETSOCKNAME             = 5050\n\tSYS_GETPEERNAME             = 5051\n\tSYS_SOCKETPAIR              = 5052\n\tSYS_SETSOCKOPT              = 5053\n\tSYS_GETSOCKOPT              = 5054\n\tSYS_CLONE                   = 5055\n\tSYS_FORK                    = 5056\n\tSYS_EXECVE                  = 5057\n\tSYS_EXIT                    = 5058\n\tSYS_WAIT4                   = 5059\n\tSYS_KILL                    = 5060\n\tSYS_UNAME                   = 5061\n\tSYS_SEMGET                  = 5062\n\tSYS_SEMOP                   = 5063\n\tSYS_SEMCTL                  = 5064\n\tSYS_SHMDT                   = 5065\n\tSYS_MSGGET                  = 5066\n\tSYS_MSGSND                  = 5067\n\tSYS_MSGRCV                  = 5068\n\tSYS_MSGCTL                  = 5069\n\tSYS_FCNTL                   = 5070\n\tSYS_FLOCK                   = 5071\n\tSYS_FSYNC                   = 5072\n\tSYS_FDATASYNC               = 5073\n\tSYS_TRUNCATE                = 5074\n\tSYS_FTRUNCATE               = 5075\n\tSYS_GETDENTS                = 5076\n\tSYS_GETCWD                  = 5077\n\tSYS_CHDIR                   = 5078\n\tSYS_FCHDIR                  = 5079\n\tSYS_RENAME                  = 5080\n\tSYS_MKDIR                   = 5081\n\tSYS_RMDIR                   = 5082\n\tSYS_CREAT                   = 5083\n\tSYS_LINK                    = 5084\n\tSYS_UNLINK                  = 5085\n\tSYS_SYMLINK                 = 5086\n\tSYS_READLINK                = 5087\n\tSYS_CHMOD                   = 5088\n\tSYS_FCHMOD                  = 5089\n\tSYS_CHOWN                   = 5090\n\tSYS_FCHOWN                  = 5091\n\tSYS_LCHOWN                  = 5092\n\tSYS_UMASK                   = 5093\n\tSYS_GETTIMEOFDAY            = 5094\n\tSYS_GETRLIMIT               = 5095\n\tSYS_GETRUSAGE               = 5096\n\tSYS_SYSINFO                 = 5097\n\tSYS_TIMES                   = 5098\n\tSYS_PTRACE                  = 5099\n\tSYS_GETUID                  = 5100\n\tSYS_SYSLOG                  = 5101\n\tSYS_GETGID                  = 5102\n\tSYS_SETUID                  = 5103\n\tSYS_SETGID                  = 5104\n\tSYS_GETEUID                 = 5105\n\tSYS_GETEGID                 = 5106\n\tSYS_SETPGID                 = 5107\n\tSYS_GETPPID                 = 5108\n\tSYS_GETPGRP                 = 5109\n\tSYS_SETSID                  = 5110\n\tSYS_SETREUID                = 5111\n\tSYS_SETREGID                = 5112\n\tSYS_GETGROUPS               = 5113\n\tSYS_SETGROUPS               = 5114\n\tSYS_SETRESUID               = 5115\n\tSYS_GETRESUID               = 5116\n\tSYS_SETRESGID               = 5117\n\tSYS_GETRESGID               = 5118\n\tSYS_GETPGID                 = 5119\n\tSYS_SETFSUID                = 5120\n\tSYS_SETFSGID                = 5121\n\tSYS_GETSID                  = 5122\n\tSYS_CAPGET                  = 5123\n\tSYS_CAPSET                  = 5124\n\tSYS_RT_SIGPENDING           = 5125\n\tSYS_RT_SIGTIMEDWAIT         = 5126\n\tSYS_RT_SIGQUEUEINFO         = 5127\n\tSYS_RT_SIGSUSPEND           = 5128\n\tSYS_SIGALTSTACK             = 5129\n\tSYS_UTIME                   = 5130\n\tSYS_MKNOD                   = 5131\n\tSYS_PERSONALITY             = 5132\n\tSYS_USTAT                   = 5133\n\tSYS_STATFS                  = 5134\n\tSYS_FSTATFS                 = 5135\n\tSYS_SYSFS                   = 5136\n\tSYS_GETPRIORITY             = 5137\n\tSYS_SETPRIORITY             = 5138\n\tSYS_SCHED_SETPARAM          = 5139\n\tSYS_SCHED_GETPARAM          = 5140\n\tSYS_SCHED_SETSCHEDULER      = 5141\n\tSYS_SCHED_GETSCHEDULER      = 5142\n\tSYS_SCHED_GET_PRIORITY_MAX  = 5143\n\tSYS_SCHED_GET_PRIORITY_MIN  = 5144\n\tSYS_SCHED_RR_GET_INTERVAL   = 5145\n\tSYS_MLOCK                   = 5146\n\tSYS_MUNLOCK                 = 5147\n\tSYS_MLOCKALL                = 5148\n\tSYS_MUNLOCKALL              = 5149\n\tSYS_VHANGUP                 = 5150\n\tSYS_PIVOT_ROOT              = 5151\n\tSYS__SYSCTL                 = 5152\n\tSYS_PRCTL                   = 5153\n\tSYS_ADJTIMEX                = 5154\n\tSYS_SETRLIMIT               = 5155\n\tSYS_CHROOT                  = 5156\n\tSYS_SYNC                    = 5157\n\tSYS_ACCT                    = 5158\n\tSYS_SETTIMEOFDAY            = 5159\n\tSYS_MOUNT                   = 5160\n\tSYS_UMOUNT2                 = 5161\n\tSYS_SWAPON                  = 5162\n\tSYS_SWAPOFF                 = 5163\n\tSYS_REBOOT                  = 5164\n\tSYS_SETHOSTNAME             = 5165\n\tSYS_SETDOMAINNAME           = 5166\n\tSYS_CREATE_MODULE           = 5167\n\tSYS_INIT_MODULE             = 5168\n\tSYS_DELETE_MODULE           = 5169\n\tSYS_GET_KERNEL_SYMS         = 5170\n\tSYS_QUERY_MODULE            = 5171\n\tSYS_QUOTACTL                = 5172\n\tSYS_NFSSERVCTL              = 5173\n\tSYS_GETPMSG                 = 5174\n\tSYS_PUTPMSG                 = 5175\n\tSYS_AFS_SYSCALL             = 5176\n\tSYS_RESERVED177             = 5177\n\tSYS_GETTID                  = 5178\n\tSYS_READAHEAD               = 5179\n\tSYS_SETXATTR                = 5180\n\tSYS_LSETXATTR               = 5181\n\tSYS_FSETXATTR               = 5182\n\tSYS_GETXATTR                = 5183\n\tSYS_LGETXATTR               = 5184\n\tSYS_FGETXATTR               = 5185\n\tSYS_LISTXATTR               = 5186\n\tSYS_LLISTXATTR              = 5187\n\tSYS_FLISTXATTR              = 5188\n\tSYS_REMOVEXATTR             = 5189\n\tSYS_LREMOVEXATTR            = 5190\n\tSYS_FREMOVEXATTR            = 5191\n\tSYS_TKILL                   = 5192\n\tSYS_RESERVED193             = 5193\n\tSYS_FUTEX                   = 5194\n\tSYS_SCHED_SETAFFINITY       = 5195\n\tSYS_SCHED_GETAFFINITY       = 5196\n\tSYS_CACHEFLUSH              = 5197\n\tSYS_CACHECTL                = 5198\n\tSYS_SYSMIPS                 = 5199\n\tSYS_IO_SETUP                = 5200\n\tSYS_IO_DESTROY              = 5201\n\tSYS_IO_GETEVENTS            = 5202\n\tSYS_IO_SUBMIT               = 5203\n\tSYS_IO_CANCEL               = 5204\n\tSYS_EXIT_GROUP              = 5205\n\tSYS_LOOKUP_DCOOKIE          = 5206\n\tSYS_EPOLL_CREATE            = 5207\n\tSYS_EPOLL_CTL               = 5208\n\tSYS_EPOLL_WAIT              = 5209\n\tSYS_REMAP_FILE_PAGES        = 5210\n\tSYS_RT_SIGRETURN            = 5211\n\tSYS_SET_TID_ADDRESS         = 5212\n\tSYS_RESTART_SYSCALL         = 5213\n\tSYS_SEMTIMEDOP              = 5214\n\tSYS_FADVISE64               = 5215\n\tSYS_TIMER_CREATE            = 5216\n\tSYS_TIMER_SETTIME           = 5217\n\tSYS_TIMER_GETTIME           = 5218\n\tSYS_TIMER_GETOVERRUN        = 5219\n\tSYS_TIMER_DELETE            = 5220\n\tSYS_CLOCK_SETTIME           = 5221\n\tSYS_CLOCK_GETTIME           = 5222\n\tSYS_CLOCK_GETRES            = 5223\n\tSYS_CLOCK_NANOSLEEP         = 5224\n\tSYS_TGKILL                  = 5225\n\tSYS_UTIMES                  = 5226\n\tSYS_MBIND                   = 5227\n\tSYS_GET_MEMPOLICY           = 5228\n\tSYS_SET_MEMPOLICY           = 5229\n\tSYS_MQ_OPEN                 = 5230\n\tSYS_MQ_UNLINK               = 5231\n\tSYS_MQ_TIMEDSEND            = 5232\n\tSYS_MQ_TIMEDRECEIVE         = 5233\n\tSYS_MQ_NOTIFY               = 5234\n\tSYS_MQ_GETSETATTR           = 5235\n\tSYS_VSERVER                 = 5236\n\tSYS_WAITID                  = 5237\n\tSYS_ADD_KEY                 = 5239\n\tSYS_REQUEST_KEY             = 5240\n\tSYS_KEYCTL                  = 5241\n\tSYS_SET_THREAD_AREA         = 5242\n\tSYS_INOTIFY_INIT            = 5243\n\tSYS_INOTIFY_ADD_WATCH       = 5244\n\tSYS_INOTIFY_RM_WATCH        = 5245\n\tSYS_MIGRATE_PAGES           = 5246\n\tSYS_OPENAT                  = 5247\n\tSYS_MKDIRAT                 = 5248\n\tSYS_MKNODAT                 = 5249\n\tSYS_FCHOWNAT                = 5250\n\tSYS_FUTIMESAT               = 5251\n\tSYS_NEWFSTATAT              = 5252\n\tSYS_UNLINKAT                = 5253\n\tSYS_RENAMEAT                = 5254\n\tSYS_LINKAT                  = 5255\n\tSYS_SYMLINKAT               = 5256\n\tSYS_READLINKAT              = 5257\n\tSYS_FCHMODAT                = 5258\n\tSYS_FACCESSAT               = 5259\n\tSYS_PSELECT6                = 5260\n\tSYS_PPOLL                   = 5261\n\tSYS_UNSHARE                 = 5262\n\tSYS_SPLICE                  = 5263\n\tSYS_SYNC_FILE_RANGE         = 5264\n\tSYS_TEE                     = 5265\n\tSYS_VMSPLICE                = 5266\n\tSYS_MOVE_PAGES              = 5267\n\tSYS_SET_ROBUST_LIST         = 5268\n\tSYS_GET_ROBUST_LIST         = 5269\n\tSYS_KEXEC_LOAD              = 5270\n\tSYS_GETCPU                  = 5271\n\tSYS_EPOLL_PWAIT             = 5272\n\tSYS_IOPRIO_SET              = 5273\n\tSYS_IOPRIO_GET              = 5274\n\tSYS_UTIMENSAT               = 5275\n\tSYS_SIGNALFD                = 5276\n\tSYS_TIMERFD                 = 5277\n\tSYS_EVENTFD                 = 5278\n\tSYS_FALLOCATE               = 5279\n\tSYS_TIMERFD_CREATE          = 5280\n\tSYS_TIMERFD_GETTIME         = 5281\n\tSYS_TIMERFD_SETTIME         = 5282\n\tSYS_SIGNALFD4               = 5283\n\tSYS_EVENTFD2                = 5284\n\tSYS_EPOLL_CREATE1           = 5285\n\tSYS_DUP3                    = 5286\n\tSYS_PIPE2                   = 5287\n\tSYS_INOTIFY_INIT1           = 5288\n\tSYS_PREADV                  = 5289\n\tSYS_PWRITEV                 = 5290\n\tSYS_RT_TGSIGQUEUEINFO       = 5291\n\tSYS_PERF_EVENT_OPEN         = 5292\n\tSYS_ACCEPT4                 = 5293\n\tSYS_RECVMMSG                = 5294\n\tSYS_FANOTIFY_INIT           = 5295\n\tSYS_FANOTIFY_MARK           = 5296\n\tSYS_PRLIMIT64               = 5297\n\tSYS_NAME_TO_HANDLE_AT       = 5298\n\tSYS_OPEN_BY_HANDLE_AT       = 5299\n\tSYS_CLOCK_ADJTIME           = 5300\n\tSYS_SYNCFS                  = 5301\n\tSYS_SENDMMSG                = 5302\n\tSYS_SETNS                   = 5303\n\tSYS_PROCESS_VM_READV        = 5304\n\tSYS_PROCESS_VM_WRITEV       = 5305\n\tSYS_KCMP                    = 5306\n\tSYS_FINIT_MODULE            = 5307\n\tSYS_GETDENTS64              = 5308\n\tSYS_SCHED_SETATTR           = 5309\n\tSYS_SCHED_GETATTR           = 5310\n\tSYS_RENAMEAT2               = 5311\n\tSYS_SECCOMP                 = 5312\n\tSYS_GETRANDOM               = 5313\n\tSYS_MEMFD_CREATE            = 5314\n\tSYS_BPF                     = 5315\n\tSYS_EXECVEAT                = 5316\n\tSYS_USERFAULTFD             = 5317\n\tSYS_MEMBARRIER              = 5318\n\tSYS_MLOCK2                  = 5319\n\tSYS_COPY_FILE_RANGE         = 5320\n\tSYS_PREADV2                 = 5321\n\tSYS_PWRITEV2                = 5322\n\tSYS_PKEY_MPROTECT           = 5323\n\tSYS_PKEY_ALLOC              = 5324\n\tSYS_PKEY_FREE               = 5325\n\tSYS_STATX                   = 5326\n\tSYS_RSEQ                    = 5327\n\tSYS_IO_PGETEVENTS           = 5328\n\tSYS_PIDFD_SEND_SIGNAL       = 5424\n\tSYS_IO_URING_SETUP          = 5425\n\tSYS_IO_URING_ENTER          = 5426\n\tSYS_IO_URING_REGISTER       = 5427\n\tSYS_OPEN_TREE               = 5428\n\tSYS_MOVE_MOUNT              = 5429\n\tSYS_FSOPEN                  = 5430\n\tSYS_FSCONFIG                = 5431\n\tSYS_FSMOUNT                 = 5432\n\tSYS_FSPICK                  = 5433\n\tSYS_PIDFD_OPEN              = 5434\n\tSYS_CLONE3                  = 5435\n\tSYS_CLOSE_RANGE             = 5436\n\tSYS_OPENAT2                 = 5437\n\tSYS_PIDFD_GETFD             = 5438\n\tSYS_FACCESSAT2              = 5439\n\tSYS_PROCESS_MADVISE         = 5440\n\tSYS_EPOLL_PWAIT2            = 5441\n\tSYS_MOUNT_SETATTR           = 5442\n\tSYS_QUOTACTL_FD             = 5443\n\tSYS_LANDLOCK_CREATE_RULESET = 5444\n\tSYS_LANDLOCK_ADD_RULE       = 5445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 5446\n\tSYS_PROCESS_MRELEASE        = 5448\n\tSYS_FUTEX_WAITV             = 5449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 5450\n\tSYS_CACHESTAT               = 5451\n\tSYS_FCHMODAT2               = 5452\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mipsle/include /tmp/mipsle/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                      = 4000\n\tSYS_EXIT                         = 4001\n\tSYS_FORK                         = 4002\n\tSYS_READ                         = 4003\n\tSYS_WRITE                        = 4004\n\tSYS_OPEN                         = 4005\n\tSYS_CLOSE                        = 4006\n\tSYS_WAITPID                      = 4007\n\tSYS_CREAT                        = 4008\n\tSYS_LINK                         = 4009\n\tSYS_UNLINK                       = 4010\n\tSYS_EXECVE                       = 4011\n\tSYS_CHDIR                        = 4012\n\tSYS_TIME                         = 4013\n\tSYS_MKNOD                        = 4014\n\tSYS_CHMOD                        = 4015\n\tSYS_LCHOWN                       = 4016\n\tSYS_BREAK                        = 4017\n\tSYS_UNUSED18                     = 4018\n\tSYS_LSEEK                        = 4019\n\tSYS_GETPID                       = 4020\n\tSYS_MOUNT                        = 4021\n\tSYS_UMOUNT                       = 4022\n\tSYS_SETUID                       = 4023\n\tSYS_GETUID                       = 4024\n\tSYS_STIME                        = 4025\n\tSYS_PTRACE                       = 4026\n\tSYS_ALARM                        = 4027\n\tSYS_UNUSED28                     = 4028\n\tSYS_PAUSE                        = 4029\n\tSYS_UTIME                        = 4030\n\tSYS_STTY                         = 4031\n\tSYS_GTTY                         = 4032\n\tSYS_ACCESS                       = 4033\n\tSYS_NICE                         = 4034\n\tSYS_FTIME                        = 4035\n\tSYS_SYNC                         = 4036\n\tSYS_KILL                         = 4037\n\tSYS_RENAME                       = 4038\n\tSYS_MKDIR                        = 4039\n\tSYS_RMDIR                        = 4040\n\tSYS_DUP                          = 4041\n\tSYS_PIPE                         = 4042\n\tSYS_TIMES                        = 4043\n\tSYS_PROF                         = 4044\n\tSYS_BRK                          = 4045\n\tSYS_SETGID                       = 4046\n\tSYS_GETGID                       = 4047\n\tSYS_SIGNAL                       = 4048\n\tSYS_GETEUID                      = 4049\n\tSYS_GETEGID                      = 4050\n\tSYS_ACCT                         = 4051\n\tSYS_UMOUNT2                      = 4052\n\tSYS_LOCK                         = 4053\n\tSYS_IOCTL                        = 4054\n\tSYS_FCNTL                        = 4055\n\tSYS_MPX                          = 4056\n\tSYS_SETPGID                      = 4057\n\tSYS_ULIMIT                       = 4058\n\tSYS_UNUSED59                     = 4059\n\tSYS_UMASK                        = 4060\n\tSYS_CHROOT                       = 4061\n\tSYS_USTAT                        = 4062\n\tSYS_DUP2                         = 4063\n\tSYS_GETPPID                      = 4064\n\tSYS_GETPGRP                      = 4065\n\tSYS_SETSID                       = 4066\n\tSYS_SIGACTION                    = 4067\n\tSYS_SGETMASK                     = 4068\n\tSYS_SSETMASK                     = 4069\n\tSYS_SETREUID                     = 4070\n\tSYS_SETREGID                     = 4071\n\tSYS_SIGSUSPEND                   = 4072\n\tSYS_SIGPENDING                   = 4073\n\tSYS_SETHOSTNAME                  = 4074\n\tSYS_SETRLIMIT                    = 4075\n\tSYS_GETRLIMIT                    = 4076\n\tSYS_GETRUSAGE                    = 4077\n\tSYS_GETTIMEOFDAY                 = 4078\n\tSYS_SETTIMEOFDAY                 = 4079\n\tSYS_GETGROUPS                    = 4080\n\tSYS_SETGROUPS                    = 4081\n\tSYS_RESERVED82                   = 4082\n\tSYS_SYMLINK                      = 4083\n\tSYS_UNUSED84                     = 4084\n\tSYS_READLINK                     = 4085\n\tSYS_USELIB                       = 4086\n\tSYS_SWAPON                       = 4087\n\tSYS_REBOOT                       = 4088\n\tSYS_READDIR                      = 4089\n\tSYS_MMAP                         = 4090\n\tSYS_MUNMAP                       = 4091\n\tSYS_TRUNCATE                     = 4092\n\tSYS_FTRUNCATE                    = 4093\n\tSYS_FCHMOD                       = 4094\n\tSYS_FCHOWN                       = 4095\n\tSYS_GETPRIORITY                  = 4096\n\tSYS_SETPRIORITY                  = 4097\n\tSYS_PROFIL                       = 4098\n\tSYS_STATFS                       = 4099\n\tSYS_FSTATFS                      = 4100\n\tSYS_IOPERM                       = 4101\n\tSYS_SOCKETCALL                   = 4102\n\tSYS_SYSLOG                       = 4103\n\tSYS_SETITIMER                    = 4104\n\tSYS_GETITIMER                    = 4105\n\tSYS_STAT                         = 4106\n\tSYS_LSTAT                        = 4107\n\tSYS_FSTAT                        = 4108\n\tSYS_UNUSED109                    = 4109\n\tSYS_IOPL                         = 4110\n\tSYS_VHANGUP                      = 4111\n\tSYS_IDLE                         = 4112\n\tSYS_VM86                         = 4113\n\tSYS_WAIT4                        = 4114\n\tSYS_SWAPOFF                      = 4115\n\tSYS_SYSINFO                      = 4116\n\tSYS_IPC                          = 4117\n\tSYS_FSYNC                        = 4118\n\tSYS_SIGRETURN                    = 4119\n\tSYS_CLONE                        = 4120\n\tSYS_SETDOMAINNAME                = 4121\n\tSYS_UNAME                        = 4122\n\tSYS_MODIFY_LDT                   = 4123\n\tSYS_ADJTIMEX                     = 4124\n\tSYS_MPROTECT                     = 4125\n\tSYS_SIGPROCMASK                  = 4126\n\tSYS_CREATE_MODULE                = 4127\n\tSYS_INIT_MODULE                  = 4128\n\tSYS_DELETE_MODULE                = 4129\n\tSYS_GET_KERNEL_SYMS              = 4130\n\tSYS_QUOTACTL                     = 4131\n\tSYS_GETPGID                      = 4132\n\tSYS_FCHDIR                       = 4133\n\tSYS_BDFLUSH                      = 4134\n\tSYS_SYSFS                        = 4135\n\tSYS_PERSONALITY                  = 4136\n\tSYS_AFS_SYSCALL                  = 4137\n\tSYS_SETFSUID                     = 4138\n\tSYS_SETFSGID                     = 4139\n\tSYS__LLSEEK                      = 4140\n\tSYS_GETDENTS                     = 4141\n\tSYS__NEWSELECT                   = 4142\n\tSYS_FLOCK                        = 4143\n\tSYS_MSYNC                        = 4144\n\tSYS_READV                        = 4145\n\tSYS_WRITEV                       = 4146\n\tSYS_CACHEFLUSH                   = 4147\n\tSYS_CACHECTL                     = 4148\n\tSYS_SYSMIPS                      = 4149\n\tSYS_UNUSED150                    = 4150\n\tSYS_GETSID                       = 4151\n\tSYS_FDATASYNC                    = 4152\n\tSYS__SYSCTL                      = 4153\n\tSYS_MLOCK                        = 4154\n\tSYS_MUNLOCK                      = 4155\n\tSYS_MLOCKALL                     = 4156\n\tSYS_MUNLOCKALL                   = 4157\n\tSYS_SCHED_SETPARAM               = 4158\n\tSYS_SCHED_GETPARAM               = 4159\n\tSYS_SCHED_SETSCHEDULER           = 4160\n\tSYS_SCHED_GETSCHEDULER           = 4161\n\tSYS_SCHED_YIELD                  = 4162\n\tSYS_SCHED_GET_PRIORITY_MAX       = 4163\n\tSYS_SCHED_GET_PRIORITY_MIN       = 4164\n\tSYS_SCHED_RR_GET_INTERVAL        = 4165\n\tSYS_NANOSLEEP                    = 4166\n\tSYS_MREMAP                       = 4167\n\tSYS_ACCEPT                       = 4168\n\tSYS_BIND                         = 4169\n\tSYS_CONNECT                      = 4170\n\tSYS_GETPEERNAME                  = 4171\n\tSYS_GETSOCKNAME                  = 4172\n\tSYS_GETSOCKOPT                   = 4173\n\tSYS_LISTEN                       = 4174\n\tSYS_RECV                         = 4175\n\tSYS_RECVFROM                     = 4176\n\tSYS_RECVMSG                      = 4177\n\tSYS_SEND                         = 4178\n\tSYS_SENDMSG                      = 4179\n\tSYS_SENDTO                       = 4180\n\tSYS_SETSOCKOPT                   = 4181\n\tSYS_SHUTDOWN                     = 4182\n\tSYS_SOCKET                       = 4183\n\tSYS_SOCKETPAIR                   = 4184\n\tSYS_SETRESUID                    = 4185\n\tSYS_GETRESUID                    = 4186\n\tSYS_QUERY_MODULE                 = 4187\n\tSYS_POLL                         = 4188\n\tSYS_NFSSERVCTL                   = 4189\n\tSYS_SETRESGID                    = 4190\n\tSYS_GETRESGID                    = 4191\n\tSYS_PRCTL                        = 4192\n\tSYS_RT_SIGRETURN                 = 4193\n\tSYS_RT_SIGACTION                 = 4194\n\tSYS_RT_SIGPROCMASK               = 4195\n\tSYS_RT_SIGPENDING                = 4196\n\tSYS_RT_SIGTIMEDWAIT              = 4197\n\tSYS_RT_SIGQUEUEINFO              = 4198\n\tSYS_RT_SIGSUSPEND                = 4199\n\tSYS_PREAD64                      = 4200\n\tSYS_PWRITE64                     = 4201\n\tSYS_CHOWN                        = 4202\n\tSYS_GETCWD                       = 4203\n\tSYS_CAPGET                       = 4204\n\tSYS_CAPSET                       = 4205\n\tSYS_SIGALTSTACK                  = 4206\n\tSYS_SENDFILE                     = 4207\n\tSYS_GETPMSG                      = 4208\n\tSYS_PUTPMSG                      = 4209\n\tSYS_MMAP2                        = 4210\n\tSYS_TRUNCATE64                   = 4211\n\tSYS_FTRUNCATE64                  = 4212\n\tSYS_STAT64                       = 4213\n\tSYS_LSTAT64                      = 4214\n\tSYS_FSTAT64                      = 4215\n\tSYS_PIVOT_ROOT                   = 4216\n\tSYS_MINCORE                      = 4217\n\tSYS_MADVISE                      = 4218\n\tSYS_GETDENTS64                   = 4219\n\tSYS_FCNTL64                      = 4220\n\tSYS_RESERVED221                  = 4221\n\tSYS_GETTID                       = 4222\n\tSYS_READAHEAD                    = 4223\n\tSYS_SETXATTR                     = 4224\n\tSYS_LSETXATTR                    = 4225\n\tSYS_FSETXATTR                    = 4226\n\tSYS_GETXATTR                     = 4227\n\tSYS_LGETXATTR                    = 4228\n\tSYS_FGETXATTR                    = 4229\n\tSYS_LISTXATTR                    = 4230\n\tSYS_LLISTXATTR                   = 4231\n\tSYS_FLISTXATTR                   = 4232\n\tSYS_REMOVEXATTR                  = 4233\n\tSYS_LREMOVEXATTR                 = 4234\n\tSYS_FREMOVEXATTR                 = 4235\n\tSYS_TKILL                        = 4236\n\tSYS_SENDFILE64                   = 4237\n\tSYS_FUTEX                        = 4238\n\tSYS_SCHED_SETAFFINITY            = 4239\n\tSYS_SCHED_GETAFFINITY            = 4240\n\tSYS_IO_SETUP                     = 4241\n\tSYS_IO_DESTROY                   = 4242\n\tSYS_IO_GETEVENTS                 = 4243\n\tSYS_IO_SUBMIT                    = 4244\n\tSYS_IO_CANCEL                    = 4245\n\tSYS_EXIT_GROUP                   = 4246\n\tSYS_LOOKUP_DCOOKIE               = 4247\n\tSYS_EPOLL_CREATE                 = 4248\n\tSYS_EPOLL_CTL                    = 4249\n\tSYS_EPOLL_WAIT                   = 4250\n\tSYS_REMAP_FILE_PAGES             = 4251\n\tSYS_SET_TID_ADDRESS              = 4252\n\tSYS_RESTART_SYSCALL              = 4253\n\tSYS_FADVISE64                    = 4254\n\tSYS_STATFS64                     = 4255\n\tSYS_FSTATFS64                    = 4256\n\tSYS_TIMER_CREATE                 = 4257\n\tSYS_TIMER_SETTIME                = 4258\n\tSYS_TIMER_GETTIME                = 4259\n\tSYS_TIMER_GETOVERRUN             = 4260\n\tSYS_TIMER_DELETE                 = 4261\n\tSYS_CLOCK_SETTIME                = 4262\n\tSYS_CLOCK_GETTIME                = 4263\n\tSYS_CLOCK_GETRES                 = 4264\n\tSYS_CLOCK_NANOSLEEP              = 4265\n\tSYS_TGKILL                       = 4266\n\tSYS_UTIMES                       = 4267\n\tSYS_MBIND                        = 4268\n\tSYS_GET_MEMPOLICY                = 4269\n\tSYS_SET_MEMPOLICY                = 4270\n\tSYS_MQ_OPEN                      = 4271\n\tSYS_MQ_UNLINK                    = 4272\n\tSYS_MQ_TIMEDSEND                 = 4273\n\tSYS_MQ_TIMEDRECEIVE              = 4274\n\tSYS_MQ_NOTIFY                    = 4275\n\tSYS_MQ_GETSETATTR                = 4276\n\tSYS_VSERVER                      = 4277\n\tSYS_WAITID                       = 4278\n\tSYS_ADD_KEY                      = 4280\n\tSYS_REQUEST_KEY                  = 4281\n\tSYS_KEYCTL                       = 4282\n\tSYS_SET_THREAD_AREA              = 4283\n\tSYS_INOTIFY_INIT                 = 4284\n\tSYS_INOTIFY_ADD_WATCH            = 4285\n\tSYS_INOTIFY_RM_WATCH             = 4286\n\tSYS_MIGRATE_PAGES                = 4287\n\tSYS_OPENAT                       = 4288\n\tSYS_MKDIRAT                      = 4289\n\tSYS_MKNODAT                      = 4290\n\tSYS_FCHOWNAT                     = 4291\n\tSYS_FUTIMESAT                    = 4292\n\tSYS_FSTATAT64                    = 4293\n\tSYS_UNLINKAT                     = 4294\n\tSYS_RENAMEAT                     = 4295\n\tSYS_LINKAT                       = 4296\n\tSYS_SYMLINKAT                    = 4297\n\tSYS_READLINKAT                   = 4298\n\tSYS_FCHMODAT                     = 4299\n\tSYS_FACCESSAT                    = 4300\n\tSYS_PSELECT6                     = 4301\n\tSYS_PPOLL                        = 4302\n\tSYS_UNSHARE                      = 4303\n\tSYS_SPLICE                       = 4304\n\tSYS_SYNC_FILE_RANGE              = 4305\n\tSYS_TEE                          = 4306\n\tSYS_VMSPLICE                     = 4307\n\tSYS_MOVE_PAGES                   = 4308\n\tSYS_SET_ROBUST_LIST              = 4309\n\tSYS_GET_ROBUST_LIST              = 4310\n\tSYS_KEXEC_LOAD                   = 4311\n\tSYS_GETCPU                       = 4312\n\tSYS_EPOLL_PWAIT                  = 4313\n\tSYS_IOPRIO_SET                   = 4314\n\tSYS_IOPRIO_GET                   = 4315\n\tSYS_UTIMENSAT                    = 4316\n\tSYS_SIGNALFD                     = 4317\n\tSYS_TIMERFD                      = 4318\n\tSYS_EVENTFD                      = 4319\n\tSYS_FALLOCATE                    = 4320\n\tSYS_TIMERFD_CREATE               = 4321\n\tSYS_TIMERFD_GETTIME              = 4322\n\tSYS_TIMERFD_SETTIME              = 4323\n\tSYS_SIGNALFD4                    = 4324\n\tSYS_EVENTFD2                     = 4325\n\tSYS_EPOLL_CREATE1                = 4326\n\tSYS_DUP3                         = 4327\n\tSYS_PIPE2                        = 4328\n\tSYS_INOTIFY_INIT1                = 4329\n\tSYS_PREADV                       = 4330\n\tSYS_PWRITEV                      = 4331\n\tSYS_RT_TGSIGQUEUEINFO            = 4332\n\tSYS_PERF_EVENT_OPEN              = 4333\n\tSYS_ACCEPT4                      = 4334\n\tSYS_RECVMMSG                     = 4335\n\tSYS_FANOTIFY_INIT                = 4336\n\tSYS_FANOTIFY_MARK                = 4337\n\tSYS_PRLIMIT64                    = 4338\n\tSYS_NAME_TO_HANDLE_AT            = 4339\n\tSYS_OPEN_BY_HANDLE_AT            = 4340\n\tSYS_CLOCK_ADJTIME                = 4341\n\tSYS_SYNCFS                       = 4342\n\tSYS_SENDMMSG                     = 4343\n\tSYS_SETNS                        = 4344\n\tSYS_PROCESS_VM_READV             = 4345\n\tSYS_PROCESS_VM_WRITEV            = 4346\n\tSYS_KCMP                         = 4347\n\tSYS_FINIT_MODULE                 = 4348\n\tSYS_SCHED_SETATTR                = 4349\n\tSYS_SCHED_GETATTR                = 4350\n\tSYS_RENAMEAT2                    = 4351\n\tSYS_SECCOMP                      = 4352\n\tSYS_GETRANDOM                    = 4353\n\tSYS_MEMFD_CREATE                 = 4354\n\tSYS_BPF                          = 4355\n\tSYS_EXECVEAT                     = 4356\n\tSYS_USERFAULTFD                  = 4357\n\tSYS_MEMBARRIER                   = 4358\n\tSYS_MLOCK2                       = 4359\n\tSYS_COPY_FILE_RANGE              = 4360\n\tSYS_PREADV2                      = 4361\n\tSYS_PWRITEV2                     = 4362\n\tSYS_PKEY_MPROTECT                = 4363\n\tSYS_PKEY_ALLOC                   = 4364\n\tSYS_PKEY_FREE                    = 4365\n\tSYS_STATX                        = 4366\n\tSYS_RSEQ                         = 4367\n\tSYS_IO_PGETEVENTS                = 4368\n\tSYS_SEMGET                       = 4393\n\tSYS_SEMCTL                       = 4394\n\tSYS_SHMGET                       = 4395\n\tSYS_SHMCTL                       = 4396\n\tSYS_SHMAT                        = 4397\n\tSYS_SHMDT                        = 4398\n\tSYS_MSGGET                       = 4399\n\tSYS_MSGSND                       = 4400\n\tSYS_MSGRCV                       = 4401\n\tSYS_MSGCTL                       = 4402\n\tSYS_CLOCK_GETTIME64              = 4403\n\tSYS_CLOCK_SETTIME64              = 4404\n\tSYS_CLOCK_ADJTIME64              = 4405\n\tSYS_CLOCK_GETRES_TIME64          = 4406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 4407\n\tSYS_TIMER_GETTIME64              = 4408\n\tSYS_TIMER_SETTIME64              = 4409\n\tSYS_TIMERFD_GETTIME64            = 4410\n\tSYS_TIMERFD_SETTIME64            = 4411\n\tSYS_UTIMENSAT_TIME64             = 4412\n\tSYS_PSELECT6_TIME64              = 4413\n\tSYS_PPOLL_TIME64                 = 4414\n\tSYS_IO_PGETEVENTS_TIME64         = 4416\n\tSYS_RECVMMSG_TIME64              = 4417\n\tSYS_MQ_TIMEDSEND_TIME64          = 4418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 4419\n\tSYS_SEMTIMEDOP_TIME64            = 4420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 4421\n\tSYS_FUTEX_TIME64                 = 4422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423\n\tSYS_PIDFD_SEND_SIGNAL            = 4424\n\tSYS_IO_URING_SETUP               = 4425\n\tSYS_IO_URING_ENTER               = 4426\n\tSYS_IO_URING_REGISTER            = 4427\n\tSYS_OPEN_TREE                    = 4428\n\tSYS_MOVE_MOUNT                   = 4429\n\tSYS_FSOPEN                       = 4430\n\tSYS_FSCONFIG                     = 4431\n\tSYS_FSMOUNT                      = 4432\n\tSYS_FSPICK                       = 4433\n\tSYS_PIDFD_OPEN                   = 4434\n\tSYS_CLONE3                       = 4435\n\tSYS_CLOSE_RANGE                  = 4436\n\tSYS_OPENAT2                      = 4437\n\tSYS_PIDFD_GETFD                  = 4438\n\tSYS_FACCESSAT2                   = 4439\n\tSYS_PROCESS_MADVISE              = 4440\n\tSYS_EPOLL_PWAIT2                 = 4441\n\tSYS_MOUNT_SETATTR                = 4442\n\tSYS_QUOTACTL_FD                  = 4443\n\tSYS_LANDLOCK_CREATE_RULESET      = 4444\n\tSYS_LANDLOCK_ADD_RULE            = 4445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 4446\n\tSYS_PROCESS_MRELEASE             = 4448\n\tSYS_FUTEX_WAITV                  = 4449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 4450\n\tSYS_CACHESTAT                    = 4451\n\tSYS_FCHMODAT2                    = 4452\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc/include /tmp/ppc/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_WAITPID                      = 7\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_TIME                         = 13\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_BREAK                        = 17\n\tSYS_OLDSTAT                      = 18\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_UMOUNT                       = 22\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_STIME                        = 25\n\tSYS_PTRACE                       = 26\n\tSYS_ALARM                        = 27\n\tSYS_OLDFSTAT                     = 28\n\tSYS_PAUSE                        = 29\n\tSYS_UTIME                        = 30\n\tSYS_STTY                         = 31\n\tSYS_GTTY                         = 32\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_FTIME                        = 35\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_PROF                         = 44\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_SIGNAL                       = 48\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_LOCK                         = 53\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_MPX                          = 56\n\tSYS_SETPGID                      = 57\n\tSYS_ULIMIT                       = 58\n\tSYS_OLDOLDUNAME                  = 59\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SGETMASK                     = 68\n\tSYS_SSETMASK                     = 69\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRLIMIT                    = 76\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SELECT                       = 82\n\tSYS_SYMLINK                      = 83\n\tSYS_OLDLSTAT                     = 84\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_READDIR                      = 89\n\tSYS_MMAP                         = 90\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_PROFIL                       = 98\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_IOPERM                       = 101\n\tSYS_SOCKETCALL                   = 102\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_OLDUNAME                     = 109\n\tSYS_IOPL                         = 110\n\tSYS_VHANGUP                      = 111\n\tSYS_IDLE                         = 112\n\tSYS_VM86                         = 113\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_IPC                          = 117\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_MODIFY_LDT                   = 123\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_CREATE_MODULE                = 127\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_GET_KERNEL_SYMS              = 130\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_AFS_SYSCALL                  = 137\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_QUERY_MODULE                 = 166\n\tSYS_POLL                         = 167\n\tSYS_NFSSERVCTL                   = 168\n\tSYS_SETRESGID                    = 169\n\tSYS_GETRESGID                    = 170\n\tSYS_PRCTL                        = 171\n\tSYS_RT_SIGRETURN                 = 172\n\tSYS_RT_SIGACTION                 = 173\n\tSYS_RT_SIGPROCMASK               = 174\n\tSYS_RT_SIGPENDING                = 175\n\tSYS_RT_SIGTIMEDWAIT              = 176\n\tSYS_RT_SIGQUEUEINFO              = 177\n\tSYS_RT_SIGSUSPEND                = 178\n\tSYS_PREAD64                      = 179\n\tSYS_PWRITE64                     = 180\n\tSYS_CHOWN                        = 181\n\tSYS_GETCWD                       = 182\n\tSYS_CAPGET                       = 183\n\tSYS_CAPSET                       = 184\n\tSYS_SIGALTSTACK                  = 185\n\tSYS_SENDFILE                     = 186\n\tSYS_GETPMSG                      = 187\n\tSYS_PUTPMSG                      = 188\n\tSYS_VFORK                        = 189\n\tSYS_UGETRLIMIT                   = 190\n\tSYS_READAHEAD                    = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_PCICONFIG_READ               = 198\n\tSYS_PCICONFIG_WRITE              = 199\n\tSYS_PCICONFIG_IOBASE             = 200\n\tSYS_MULTIPLEXER                  = 201\n\tSYS_GETDENTS64                   = 202\n\tSYS_PIVOT_ROOT                   = 203\n\tSYS_FCNTL64                      = 204\n\tSYS_MADVISE                      = 205\n\tSYS_MINCORE                      = 206\n\tSYS_GETTID                       = 207\n\tSYS_TKILL                        = 208\n\tSYS_SETXATTR                     = 209\n\tSYS_LSETXATTR                    = 210\n\tSYS_FSETXATTR                    = 211\n\tSYS_GETXATTR                     = 212\n\tSYS_LGETXATTR                    = 213\n\tSYS_FGETXATTR                    = 214\n\tSYS_LISTXATTR                    = 215\n\tSYS_LLISTXATTR                   = 216\n\tSYS_FLISTXATTR                   = 217\n\tSYS_REMOVEXATTR                  = 218\n\tSYS_LREMOVEXATTR                 = 219\n\tSYS_FREMOVEXATTR                 = 220\n\tSYS_FUTEX                        = 221\n\tSYS_SCHED_SETAFFINITY            = 222\n\tSYS_SCHED_GETAFFINITY            = 223\n\tSYS_TUXCALL                      = 225\n\tSYS_SENDFILE64                   = 226\n\tSYS_IO_SETUP                     = 227\n\tSYS_IO_DESTROY                   = 228\n\tSYS_IO_GETEVENTS                 = 229\n\tSYS_IO_SUBMIT                    = 230\n\tSYS_IO_CANCEL                    = 231\n\tSYS_SET_TID_ADDRESS              = 232\n\tSYS_FADVISE64                    = 233\n\tSYS_EXIT_GROUP                   = 234\n\tSYS_LOOKUP_DCOOKIE               = 235\n\tSYS_EPOLL_CREATE                 = 236\n\tSYS_EPOLL_CTL                    = 237\n\tSYS_EPOLL_WAIT                   = 238\n\tSYS_REMAP_FILE_PAGES             = 239\n\tSYS_TIMER_CREATE                 = 240\n\tSYS_TIMER_SETTIME                = 241\n\tSYS_TIMER_GETTIME                = 242\n\tSYS_TIMER_GETOVERRUN             = 243\n\tSYS_TIMER_DELETE                 = 244\n\tSYS_CLOCK_SETTIME                = 245\n\tSYS_CLOCK_GETTIME                = 246\n\tSYS_CLOCK_GETRES                 = 247\n\tSYS_CLOCK_NANOSLEEP              = 248\n\tSYS_SWAPCONTEXT                  = 249\n\tSYS_TGKILL                       = 250\n\tSYS_UTIMES                       = 251\n\tSYS_STATFS64                     = 252\n\tSYS_FSTATFS64                    = 253\n\tSYS_FADVISE64_64                 = 254\n\tSYS_RTAS                         = 255\n\tSYS_SYS_DEBUG_SETCONTEXT         = 256\n\tSYS_MIGRATE_PAGES                = 258\n\tSYS_MBIND                        = 259\n\tSYS_GET_MEMPOLICY                = 260\n\tSYS_SET_MEMPOLICY                = 261\n\tSYS_MQ_OPEN                      = 262\n\tSYS_MQ_UNLINK                    = 263\n\tSYS_MQ_TIMEDSEND                 = 264\n\tSYS_MQ_TIMEDRECEIVE              = 265\n\tSYS_MQ_NOTIFY                    = 266\n\tSYS_MQ_GETSETATTR                = 267\n\tSYS_KEXEC_LOAD                   = 268\n\tSYS_ADD_KEY                      = 269\n\tSYS_REQUEST_KEY                  = 270\n\tSYS_KEYCTL                       = 271\n\tSYS_WAITID                       = 272\n\tSYS_IOPRIO_SET                   = 273\n\tSYS_IOPRIO_GET                   = 274\n\tSYS_INOTIFY_INIT                 = 275\n\tSYS_INOTIFY_ADD_WATCH            = 276\n\tSYS_INOTIFY_RM_WATCH             = 277\n\tSYS_SPU_RUN                      = 278\n\tSYS_SPU_CREATE                   = 279\n\tSYS_PSELECT6                     = 280\n\tSYS_PPOLL                        = 281\n\tSYS_UNSHARE                      = 282\n\tSYS_SPLICE                       = 283\n\tSYS_TEE                          = 284\n\tSYS_VMSPLICE                     = 285\n\tSYS_OPENAT                       = 286\n\tSYS_MKDIRAT                      = 287\n\tSYS_MKNODAT                      = 288\n\tSYS_FCHOWNAT                     = 289\n\tSYS_FUTIMESAT                    = 290\n\tSYS_FSTATAT64                    = 291\n\tSYS_UNLINKAT                     = 292\n\tSYS_RENAMEAT                     = 293\n\tSYS_LINKAT                       = 294\n\tSYS_SYMLINKAT                    = 295\n\tSYS_READLINKAT                   = 296\n\tSYS_FCHMODAT                     = 297\n\tSYS_FACCESSAT                    = 298\n\tSYS_GET_ROBUST_LIST              = 299\n\tSYS_SET_ROBUST_LIST              = 300\n\tSYS_MOVE_PAGES                   = 301\n\tSYS_GETCPU                       = 302\n\tSYS_EPOLL_PWAIT                  = 303\n\tSYS_UTIMENSAT                    = 304\n\tSYS_SIGNALFD                     = 305\n\tSYS_TIMERFD_CREATE               = 306\n\tSYS_EVENTFD                      = 307\n\tSYS_SYNC_FILE_RANGE2             = 308\n\tSYS_FALLOCATE                    = 309\n\tSYS_SUBPAGE_PROT                 = 310\n\tSYS_TIMERFD_SETTIME              = 311\n\tSYS_TIMERFD_GETTIME              = 312\n\tSYS_SIGNALFD4                    = 313\n\tSYS_EVENTFD2                     = 314\n\tSYS_EPOLL_CREATE1                = 315\n\tSYS_DUP3                         = 316\n\tSYS_PIPE2                        = 317\n\tSYS_INOTIFY_INIT1                = 318\n\tSYS_PERF_EVENT_OPEN              = 319\n\tSYS_PREADV                       = 320\n\tSYS_PWRITEV                      = 321\n\tSYS_RT_TGSIGQUEUEINFO            = 322\n\tSYS_FANOTIFY_INIT                = 323\n\tSYS_FANOTIFY_MARK                = 324\n\tSYS_PRLIMIT64                    = 325\n\tSYS_SOCKET                       = 326\n\tSYS_BIND                         = 327\n\tSYS_CONNECT                      = 328\n\tSYS_LISTEN                       = 329\n\tSYS_ACCEPT                       = 330\n\tSYS_GETSOCKNAME                  = 331\n\tSYS_GETPEERNAME                  = 332\n\tSYS_SOCKETPAIR                   = 333\n\tSYS_SEND                         = 334\n\tSYS_SENDTO                       = 335\n\tSYS_RECV                         = 336\n\tSYS_RECVFROM                     = 337\n\tSYS_SHUTDOWN                     = 338\n\tSYS_SETSOCKOPT                   = 339\n\tSYS_GETSOCKOPT                   = 340\n\tSYS_SENDMSG                      = 341\n\tSYS_RECVMSG                      = 342\n\tSYS_RECVMMSG                     = 343\n\tSYS_ACCEPT4                      = 344\n\tSYS_NAME_TO_HANDLE_AT            = 345\n\tSYS_OPEN_BY_HANDLE_AT            = 346\n\tSYS_CLOCK_ADJTIME                = 347\n\tSYS_SYNCFS                       = 348\n\tSYS_SENDMMSG                     = 349\n\tSYS_SETNS                        = 350\n\tSYS_PROCESS_VM_READV             = 351\n\tSYS_PROCESS_VM_WRITEV            = 352\n\tSYS_FINIT_MODULE                 = 353\n\tSYS_KCMP                         = 354\n\tSYS_SCHED_SETATTR                = 355\n\tSYS_SCHED_GETATTR                = 356\n\tSYS_RENAMEAT2                    = 357\n\tSYS_SECCOMP                      = 358\n\tSYS_GETRANDOM                    = 359\n\tSYS_MEMFD_CREATE                 = 360\n\tSYS_BPF                          = 361\n\tSYS_EXECVEAT                     = 362\n\tSYS_SWITCH_ENDIAN                = 363\n\tSYS_USERFAULTFD                  = 364\n\tSYS_MEMBARRIER                   = 365\n\tSYS_MLOCK2                       = 378\n\tSYS_COPY_FILE_RANGE              = 379\n\tSYS_PREADV2                      = 380\n\tSYS_PWRITEV2                     = 381\n\tSYS_KEXEC_FILE_LOAD              = 382\n\tSYS_STATX                        = 383\n\tSYS_PKEY_ALLOC                   = 384\n\tSYS_PKEY_FREE                    = 385\n\tSYS_PKEY_MPROTECT                = 386\n\tSYS_RSEQ                         = 387\n\tSYS_IO_PGETEVENTS                = 388\n\tSYS_SEMGET                       = 393\n\tSYS_SEMCTL                       = 394\n\tSYS_SHMGET                       = 395\n\tSYS_SHMCTL                       = 396\n\tSYS_SHMAT                        = 397\n\tSYS_SHMDT                        = 398\n\tSYS_MSGGET                       = 399\n\tSYS_MSGSND                       = 400\n\tSYS_MSGRCV                       = 401\n\tSYS_MSGCTL                       = 402\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64/include /tmp/ppc64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAITPID                 = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_TIME                    = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BREAK                   = 17\n\tSYS_OLDSTAT                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_STIME                   = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_OLDFSTAT                = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_STTY                    = 31\n\tSYS_GTTY                    = 32\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_FTIME                   = 35\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_PROF                    = 44\n\tSYS_BRK                     = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_LOCK                    = 53\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_MPX                     = 56\n\tSYS_SETPGID                 = 57\n\tSYS_ULIMIT                  = 58\n\tSYS_OLDOLDUNAME             = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SGETMASK                = 68\n\tSYS_SSETMASK                = 69\n\tSYS_SETREUID                = 70\n\tSYS_SETREGID                = 71\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRLIMIT               = 76\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_GETGROUPS               = 80\n\tSYS_SETGROUPS               = 81\n\tSYS_SELECT                  = 82\n\tSYS_SYMLINK                 = 83\n\tSYS_OLDLSTAT                = 84\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_FCHOWN                  = 95\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_PROFIL                  = 98\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_IOPERM                  = 101\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_OLDUNAME                = 109\n\tSYS_IOPL                    = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_VM86                    = 113\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_MODIFY_LDT              = 123\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_SETFSUID                = 138\n\tSYS_SETFSGID                = 139\n\tSYS__LLSEEK                 = 140\n\tSYS_GETDENTS                = 141\n\tSYS__NEWSELECT              = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_SETRESUID               = 164\n\tSYS_GETRESUID               = 165\n\tSYS_QUERY_MODULE            = 166\n\tSYS_POLL                    = 167\n\tSYS_NFSSERVCTL              = 168\n\tSYS_SETRESGID               = 169\n\tSYS_GETRESGID               = 170\n\tSYS_PRCTL                   = 171\n\tSYS_RT_SIGRETURN            = 172\n\tSYS_RT_SIGACTION            = 173\n\tSYS_RT_SIGPROCMASK          = 174\n\tSYS_RT_SIGPENDING           = 175\n\tSYS_RT_SIGTIMEDWAIT         = 176\n\tSYS_RT_SIGQUEUEINFO         = 177\n\tSYS_RT_SIGSUSPEND           = 178\n\tSYS_PREAD64                 = 179\n\tSYS_PWRITE64                = 180\n\tSYS_CHOWN                   = 181\n\tSYS_GETCWD                  = 182\n\tSYS_CAPGET                  = 183\n\tSYS_CAPSET                  = 184\n\tSYS_SIGALTSTACK             = 185\n\tSYS_SENDFILE                = 186\n\tSYS_GETPMSG                 = 187\n\tSYS_PUTPMSG                 = 188\n\tSYS_VFORK                   = 189\n\tSYS_UGETRLIMIT              = 190\n\tSYS_READAHEAD               = 191\n\tSYS_PCICONFIG_READ          = 198\n\tSYS_PCICONFIG_WRITE         = 199\n\tSYS_PCICONFIG_IOBASE        = 200\n\tSYS_MULTIPLEXER             = 201\n\tSYS_GETDENTS64              = 202\n\tSYS_PIVOT_ROOT              = 203\n\tSYS_MADVISE                 = 205\n\tSYS_MINCORE                 = 206\n\tSYS_GETTID                  = 207\n\tSYS_TKILL                   = 208\n\tSYS_SETXATTR                = 209\n\tSYS_LSETXATTR               = 210\n\tSYS_FSETXATTR               = 211\n\tSYS_GETXATTR                = 212\n\tSYS_LGETXATTR               = 213\n\tSYS_FGETXATTR               = 214\n\tSYS_LISTXATTR               = 215\n\tSYS_LLISTXATTR              = 216\n\tSYS_FLISTXATTR              = 217\n\tSYS_REMOVEXATTR             = 218\n\tSYS_LREMOVEXATTR            = 219\n\tSYS_FREMOVEXATTR            = 220\n\tSYS_FUTEX                   = 221\n\tSYS_SCHED_SETAFFINITY       = 222\n\tSYS_SCHED_GETAFFINITY       = 223\n\tSYS_TUXCALL                 = 225\n\tSYS_IO_SETUP                = 227\n\tSYS_IO_DESTROY              = 228\n\tSYS_IO_GETEVENTS            = 229\n\tSYS_IO_SUBMIT               = 230\n\tSYS_IO_CANCEL               = 231\n\tSYS_SET_TID_ADDRESS         = 232\n\tSYS_FADVISE64               = 233\n\tSYS_EXIT_GROUP              = 234\n\tSYS_LOOKUP_DCOOKIE          = 235\n\tSYS_EPOLL_CREATE            = 236\n\tSYS_EPOLL_CTL               = 237\n\tSYS_EPOLL_WAIT              = 238\n\tSYS_REMAP_FILE_PAGES        = 239\n\tSYS_TIMER_CREATE            = 240\n\tSYS_TIMER_SETTIME           = 241\n\tSYS_TIMER_GETTIME           = 242\n\tSYS_TIMER_GETOVERRUN        = 243\n\tSYS_TIMER_DELETE            = 244\n\tSYS_CLOCK_SETTIME           = 245\n\tSYS_CLOCK_GETTIME           = 246\n\tSYS_CLOCK_GETRES            = 247\n\tSYS_CLOCK_NANOSLEEP         = 248\n\tSYS_SWAPCONTEXT             = 249\n\tSYS_TGKILL                  = 250\n\tSYS_UTIMES                  = 251\n\tSYS_STATFS64                = 252\n\tSYS_FSTATFS64               = 253\n\tSYS_RTAS                    = 255\n\tSYS_SYS_DEBUG_SETCONTEXT    = 256\n\tSYS_MIGRATE_PAGES           = 258\n\tSYS_MBIND                   = 259\n\tSYS_GET_MEMPOLICY           = 260\n\tSYS_SET_MEMPOLICY           = 261\n\tSYS_MQ_OPEN                 = 262\n\tSYS_MQ_UNLINK               = 263\n\tSYS_MQ_TIMEDSEND            = 264\n\tSYS_MQ_TIMEDRECEIVE         = 265\n\tSYS_MQ_NOTIFY               = 266\n\tSYS_MQ_GETSETATTR           = 267\n\tSYS_KEXEC_LOAD              = 268\n\tSYS_ADD_KEY                 = 269\n\tSYS_REQUEST_KEY             = 270\n\tSYS_KEYCTL                  = 271\n\tSYS_WAITID                  = 272\n\tSYS_IOPRIO_SET              = 273\n\tSYS_IOPRIO_GET              = 274\n\tSYS_INOTIFY_INIT            = 275\n\tSYS_INOTIFY_ADD_WATCH       = 276\n\tSYS_INOTIFY_RM_WATCH        = 277\n\tSYS_SPU_RUN                 = 278\n\tSYS_SPU_CREATE              = 279\n\tSYS_PSELECT6                = 280\n\tSYS_PPOLL                   = 281\n\tSYS_UNSHARE                 = 282\n\tSYS_SPLICE                  = 283\n\tSYS_TEE                     = 284\n\tSYS_VMSPLICE                = 285\n\tSYS_OPENAT                  = 286\n\tSYS_MKDIRAT                 = 287\n\tSYS_MKNODAT                 = 288\n\tSYS_FCHOWNAT                = 289\n\tSYS_FUTIMESAT               = 290\n\tSYS_NEWFSTATAT              = 291\n\tSYS_UNLINKAT                = 292\n\tSYS_RENAMEAT                = 293\n\tSYS_LINKAT                  = 294\n\tSYS_SYMLINKAT               = 295\n\tSYS_READLINKAT              = 296\n\tSYS_FCHMODAT                = 297\n\tSYS_FACCESSAT               = 298\n\tSYS_GET_ROBUST_LIST         = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_MOVE_PAGES              = 301\n\tSYS_GETCPU                  = 302\n\tSYS_EPOLL_PWAIT             = 303\n\tSYS_UTIMENSAT               = 304\n\tSYS_SIGNALFD                = 305\n\tSYS_TIMERFD_CREATE          = 306\n\tSYS_EVENTFD                 = 307\n\tSYS_SYNC_FILE_RANGE2        = 308\n\tSYS_FALLOCATE               = 309\n\tSYS_SUBPAGE_PROT            = 310\n\tSYS_TIMERFD_SETTIME         = 311\n\tSYS_TIMERFD_GETTIME         = 312\n\tSYS_SIGNALFD4               = 313\n\tSYS_EVENTFD2                = 314\n\tSYS_EPOLL_CREATE1           = 315\n\tSYS_DUP3                    = 316\n\tSYS_PIPE2                   = 317\n\tSYS_INOTIFY_INIT1           = 318\n\tSYS_PERF_EVENT_OPEN         = 319\n\tSYS_PREADV                  = 320\n\tSYS_PWRITEV                 = 321\n\tSYS_RT_TGSIGQUEUEINFO       = 322\n\tSYS_FANOTIFY_INIT           = 323\n\tSYS_FANOTIFY_MARK           = 324\n\tSYS_PRLIMIT64               = 325\n\tSYS_SOCKET                  = 326\n\tSYS_BIND                    = 327\n\tSYS_CONNECT                 = 328\n\tSYS_LISTEN                  = 329\n\tSYS_ACCEPT                  = 330\n\tSYS_GETSOCKNAME             = 331\n\tSYS_GETPEERNAME             = 332\n\tSYS_SOCKETPAIR              = 333\n\tSYS_SEND                    = 334\n\tSYS_SENDTO                  = 335\n\tSYS_RECV                    = 336\n\tSYS_RECVFROM                = 337\n\tSYS_SHUTDOWN                = 338\n\tSYS_SETSOCKOPT              = 339\n\tSYS_GETSOCKOPT              = 340\n\tSYS_SENDMSG                 = 341\n\tSYS_RECVMSG                 = 342\n\tSYS_RECVMMSG                = 343\n\tSYS_ACCEPT4                 = 344\n\tSYS_NAME_TO_HANDLE_AT       = 345\n\tSYS_OPEN_BY_HANDLE_AT       = 346\n\tSYS_CLOCK_ADJTIME           = 347\n\tSYS_SYNCFS                  = 348\n\tSYS_SENDMMSG                = 349\n\tSYS_SETNS                   = 350\n\tSYS_PROCESS_VM_READV        = 351\n\tSYS_PROCESS_VM_WRITEV       = 352\n\tSYS_FINIT_MODULE            = 353\n\tSYS_KCMP                    = 354\n\tSYS_SCHED_SETATTR           = 355\n\tSYS_SCHED_GETATTR           = 356\n\tSYS_RENAMEAT2               = 357\n\tSYS_SECCOMP                 = 358\n\tSYS_GETRANDOM               = 359\n\tSYS_MEMFD_CREATE            = 360\n\tSYS_BPF                     = 361\n\tSYS_EXECVEAT                = 362\n\tSYS_SWITCH_ENDIAN           = 363\n\tSYS_USERFAULTFD             = 364\n\tSYS_MEMBARRIER              = 365\n\tSYS_MLOCK2                  = 378\n\tSYS_COPY_FILE_RANGE         = 379\n\tSYS_PREADV2                 = 380\n\tSYS_PWRITEV2                = 381\n\tSYS_KEXEC_FILE_LOAD         = 382\n\tSYS_STATX                   = 383\n\tSYS_PKEY_ALLOC              = 384\n\tSYS_PKEY_FREE               = 385\n\tSYS_PKEY_MPROTECT           = 386\n\tSYS_RSEQ                    = 387\n\tSYS_IO_PGETEVENTS           = 388\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64le/include /tmp/ppc64le/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAITPID                 = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_TIME                    = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BREAK                   = 17\n\tSYS_OLDSTAT                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_STIME                   = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_OLDFSTAT                = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_STTY                    = 31\n\tSYS_GTTY                    = 32\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_FTIME                   = 35\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_PROF                    = 44\n\tSYS_BRK                     = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_LOCK                    = 53\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_MPX                     = 56\n\tSYS_SETPGID                 = 57\n\tSYS_ULIMIT                  = 58\n\tSYS_OLDOLDUNAME             = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SGETMASK                = 68\n\tSYS_SSETMASK                = 69\n\tSYS_SETREUID                = 70\n\tSYS_SETREGID                = 71\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRLIMIT               = 76\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_GETGROUPS               = 80\n\tSYS_SETGROUPS               = 81\n\tSYS_SELECT                  = 82\n\tSYS_SYMLINK                 = 83\n\tSYS_OLDLSTAT                = 84\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_FCHOWN                  = 95\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_PROFIL                  = 98\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_IOPERM                  = 101\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_OLDUNAME                = 109\n\tSYS_IOPL                    = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_VM86                    = 113\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_MODIFY_LDT              = 123\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_SETFSUID                = 138\n\tSYS_SETFSGID                = 139\n\tSYS__LLSEEK                 = 140\n\tSYS_GETDENTS                = 141\n\tSYS__NEWSELECT              = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_SETRESUID               = 164\n\tSYS_GETRESUID               = 165\n\tSYS_QUERY_MODULE            = 166\n\tSYS_POLL                    = 167\n\tSYS_NFSSERVCTL              = 168\n\tSYS_SETRESGID               = 169\n\tSYS_GETRESGID               = 170\n\tSYS_PRCTL                   = 171\n\tSYS_RT_SIGRETURN            = 172\n\tSYS_RT_SIGACTION            = 173\n\tSYS_RT_SIGPROCMASK          = 174\n\tSYS_RT_SIGPENDING           = 175\n\tSYS_RT_SIGTIMEDWAIT         = 176\n\tSYS_RT_SIGQUEUEINFO         = 177\n\tSYS_RT_SIGSUSPEND           = 178\n\tSYS_PREAD64                 = 179\n\tSYS_PWRITE64                = 180\n\tSYS_CHOWN                   = 181\n\tSYS_GETCWD                  = 182\n\tSYS_CAPGET                  = 183\n\tSYS_CAPSET                  = 184\n\tSYS_SIGALTSTACK             = 185\n\tSYS_SENDFILE                = 186\n\tSYS_GETPMSG                 = 187\n\tSYS_PUTPMSG                 = 188\n\tSYS_VFORK                   = 189\n\tSYS_UGETRLIMIT              = 190\n\tSYS_READAHEAD               = 191\n\tSYS_PCICONFIG_READ          = 198\n\tSYS_PCICONFIG_WRITE         = 199\n\tSYS_PCICONFIG_IOBASE        = 200\n\tSYS_MULTIPLEXER             = 201\n\tSYS_GETDENTS64              = 202\n\tSYS_PIVOT_ROOT              = 203\n\tSYS_MADVISE                 = 205\n\tSYS_MINCORE                 = 206\n\tSYS_GETTID                  = 207\n\tSYS_TKILL                   = 208\n\tSYS_SETXATTR                = 209\n\tSYS_LSETXATTR               = 210\n\tSYS_FSETXATTR               = 211\n\tSYS_GETXATTR                = 212\n\tSYS_LGETXATTR               = 213\n\tSYS_FGETXATTR               = 214\n\tSYS_LISTXATTR               = 215\n\tSYS_LLISTXATTR              = 216\n\tSYS_FLISTXATTR              = 217\n\tSYS_REMOVEXATTR             = 218\n\tSYS_LREMOVEXATTR            = 219\n\tSYS_FREMOVEXATTR            = 220\n\tSYS_FUTEX                   = 221\n\tSYS_SCHED_SETAFFINITY       = 222\n\tSYS_SCHED_GETAFFINITY       = 223\n\tSYS_TUXCALL                 = 225\n\tSYS_IO_SETUP                = 227\n\tSYS_IO_DESTROY              = 228\n\tSYS_IO_GETEVENTS            = 229\n\tSYS_IO_SUBMIT               = 230\n\tSYS_IO_CANCEL               = 231\n\tSYS_SET_TID_ADDRESS         = 232\n\tSYS_FADVISE64               = 233\n\tSYS_EXIT_GROUP              = 234\n\tSYS_LOOKUP_DCOOKIE          = 235\n\tSYS_EPOLL_CREATE            = 236\n\tSYS_EPOLL_CTL               = 237\n\tSYS_EPOLL_WAIT              = 238\n\tSYS_REMAP_FILE_PAGES        = 239\n\tSYS_TIMER_CREATE            = 240\n\tSYS_TIMER_SETTIME           = 241\n\tSYS_TIMER_GETTIME           = 242\n\tSYS_TIMER_GETOVERRUN        = 243\n\tSYS_TIMER_DELETE            = 244\n\tSYS_CLOCK_SETTIME           = 245\n\tSYS_CLOCK_GETTIME           = 246\n\tSYS_CLOCK_GETRES            = 247\n\tSYS_CLOCK_NANOSLEEP         = 248\n\tSYS_SWAPCONTEXT             = 249\n\tSYS_TGKILL                  = 250\n\tSYS_UTIMES                  = 251\n\tSYS_STATFS64                = 252\n\tSYS_FSTATFS64               = 253\n\tSYS_RTAS                    = 255\n\tSYS_SYS_DEBUG_SETCONTEXT    = 256\n\tSYS_MIGRATE_PAGES           = 258\n\tSYS_MBIND                   = 259\n\tSYS_GET_MEMPOLICY           = 260\n\tSYS_SET_MEMPOLICY           = 261\n\tSYS_MQ_OPEN                 = 262\n\tSYS_MQ_UNLINK               = 263\n\tSYS_MQ_TIMEDSEND            = 264\n\tSYS_MQ_TIMEDRECEIVE         = 265\n\tSYS_MQ_NOTIFY               = 266\n\tSYS_MQ_GETSETATTR           = 267\n\tSYS_KEXEC_LOAD              = 268\n\tSYS_ADD_KEY                 = 269\n\tSYS_REQUEST_KEY             = 270\n\tSYS_KEYCTL                  = 271\n\tSYS_WAITID                  = 272\n\tSYS_IOPRIO_SET              = 273\n\tSYS_IOPRIO_GET              = 274\n\tSYS_INOTIFY_INIT            = 275\n\tSYS_INOTIFY_ADD_WATCH       = 276\n\tSYS_INOTIFY_RM_WATCH        = 277\n\tSYS_SPU_RUN                 = 278\n\tSYS_SPU_CREATE              = 279\n\tSYS_PSELECT6                = 280\n\tSYS_PPOLL                   = 281\n\tSYS_UNSHARE                 = 282\n\tSYS_SPLICE                  = 283\n\tSYS_TEE                     = 284\n\tSYS_VMSPLICE                = 285\n\tSYS_OPENAT                  = 286\n\tSYS_MKDIRAT                 = 287\n\tSYS_MKNODAT                 = 288\n\tSYS_FCHOWNAT                = 289\n\tSYS_FUTIMESAT               = 290\n\tSYS_NEWFSTATAT              = 291\n\tSYS_UNLINKAT                = 292\n\tSYS_RENAMEAT                = 293\n\tSYS_LINKAT                  = 294\n\tSYS_SYMLINKAT               = 295\n\tSYS_READLINKAT              = 296\n\tSYS_FCHMODAT                = 297\n\tSYS_FACCESSAT               = 298\n\tSYS_GET_ROBUST_LIST         = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_MOVE_PAGES              = 301\n\tSYS_GETCPU                  = 302\n\tSYS_EPOLL_PWAIT             = 303\n\tSYS_UTIMENSAT               = 304\n\tSYS_SIGNALFD                = 305\n\tSYS_TIMERFD_CREATE          = 306\n\tSYS_EVENTFD                 = 307\n\tSYS_SYNC_FILE_RANGE2        = 308\n\tSYS_FALLOCATE               = 309\n\tSYS_SUBPAGE_PROT            = 310\n\tSYS_TIMERFD_SETTIME         = 311\n\tSYS_TIMERFD_GETTIME         = 312\n\tSYS_SIGNALFD4               = 313\n\tSYS_EVENTFD2                = 314\n\tSYS_EPOLL_CREATE1           = 315\n\tSYS_DUP3                    = 316\n\tSYS_PIPE2                   = 317\n\tSYS_INOTIFY_INIT1           = 318\n\tSYS_PERF_EVENT_OPEN         = 319\n\tSYS_PREADV                  = 320\n\tSYS_PWRITEV                 = 321\n\tSYS_RT_TGSIGQUEUEINFO       = 322\n\tSYS_FANOTIFY_INIT           = 323\n\tSYS_FANOTIFY_MARK           = 324\n\tSYS_PRLIMIT64               = 325\n\tSYS_SOCKET                  = 326\n\tSYS_BIND                    = 327\n\tSYS_CONNECT                 = 328\n\tSYS_LISTEN                  = 329\n\tSYS_ACCEPT                  = 330\n\tSYS_GETSOCKNAME             = 331\n\tSYS_GETPEERNAME             = 332\n\tSYS_SOCKETPAIR              = 333\n\tSYS_SEND                    = 334\n\tSYS_SENDTO                  = 335\n\tSYS_RECV                    = 336\n\tSYS_RECVFROM                = 337\n\tSYS_SHUTDOWN                = 338\n\tSYS_SETSOCKOPT              = 339\n\tSYS_GETSOCKOPT              = 340\n\tSYS_SENDMSG                 = 341\n\tSYS_RECVMSG                 = 342\n\tSYS_RECVMMSG                = 343\n\tSYS_ACCEPT4                 = 344\n\tSYS_NAME_TO_HANDLE_AT       = 345\n\tSYS_OPEN_BY_HANDLE_AT       = 346\n\tSYS_CLOCK_ADJTIME           = 347\n\tSYS_SYNCFS                  = 348\n\tSYS_SENDMMSG                = 349\n\tSYS_SETNS                   = 350\n\tSYS_PROCESS_VM_READV        = 351\n\tSYS_PROCESS_VM_WRITEV       = 352\n\tSYS_FINIT_MODULE            = 353\n\tSYS_KCMP                    = 354\n\tSYS_SCHED_SETATTR           = 355\n\tSYS_SCHED_GETATTR           = 356\n\tSYS_RENAMEAT2               = 357\n\tSYS_SECCOMP                 = 358\n\tSYS_GETRANDOM               = 359\n\tSYS_MEMFD_CREATE            = 360\n\tSYS_BPF                     = 361\n\tSYS_EXECVEAT                = 362\n\tSYS_SWITCH_ENDIAN           = 363\n\tSYS_USERFAULTFD             = 364\n\tSYS_MEMBARRIER              = 365\n\tSYS_MLOCK2                  = 378\n\tSYS_COPY_FILE_RANGE         = 379\n\tSYS_PREADV2                 = 380\n\tSYS_PWRITEV2                = 381\n\tSYS_KEXEC_FILE_LOAD         = 382\n\tSYS_STATX                   = 383\n\tSYS_PKEY_ALLOC              = 384\n\tSYS_PKEY_FREE               = 385\n\tSYS_PKEY_MPROTECT           = 386\n\tSYS_RSEQ                    = 387\n\tSYS_IO_PGETEVENTS           = 388\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/riscv64/include /tmp/riscv64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_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)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/s390x/include -fsigned-char /tmp/s390x/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\npackage unix\n\nconst (\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_RESTART_SYSCALL         = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_BRK                     = 45\n\tSYS_SIGNAL                  = 48\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_SETPGID                 = 57\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_SYMLINK                 = 83\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_LOOKUP_DCOOKIE          = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_GETDENTS                = 141\n\tSYS_SELECT                  = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_QUERY_MODULE            = 167\n\tSYS_POLL                    = 168\n\tSYS_NFSSERVCTL              = 169\n\tSYS_PRCTL                   = 172\n\tSYS_RT_SIGRETURN            = 173\n\tSYS_RT_SIGACTION            = 174\n\tSYS_RT_SIGPROCMASK          = 175\n\tSYS_RT_SIGPENDING           = 176\n\tSYS_RT_SIGTIMEDWAIT         = 177\n\tSYS_RT_SIGQUEUEINFO         = 178\n\tSYS_RT_SIGSUSPEND           = 179\n\tSYS_PREAD64                 = 180\n\tSYS_PWRITE64                = 181\n\tSYS_GETCWD                  = 183\n\tSYS_CAPGET                  = 184\n\tSYS_CAPSET                  = 185\n\tSYS_SIGALTSTACK             = 186\n\tSYS_SENDFILE                = 187\n\tSYS_GETPMSG                 = 188\n\tSYS_PUTPMSG                 = 189\n\tSYS_VFORK                   = 190\n\tSYS_GETRLIMIT               = 191\n\tSYS_LCHOWN                  = 198\n\tSYS_GETUID                  = 199\n\tSYS_GETGID                  = 200\n\tSYS_GETEUID                 = 201\n\tSYS_GETEGID                 = 202\n\tSYS_SETREUID                = 203\n\tSYS_SETREGID                = 204\n\tSYS_GETGROUPS               = 205\n\tSYS_SETGROUPS               = 206\n\tSYS_FCHOWN                  = 207\n\tSYS_SETRESUID               = 208\n\tSYS_GETRESUID               = 209\n\tSYS_SETRESGID               = 210\n\tSYS_GETRESGID               = 211\n\tSYS_CHOWN                   = 212\n\tSYS_SETUID                  = 213\n\tSYS_SETGID                  = 214\n\tSYS_SETFSUID                = 215\n\tSYS_SETFSGID                = 216\n\tSYS_PIVOT_ROOT              = 217\n\tSYS_MINCORE                 = 218\n\tSYS_MADVISE                 = 219\n\tSYS_GETDENTS64              = 220\n\tSYS_READAHEAD               = 222\n\tSYS_SETXATTR                = 224\n\tSYS_LSETXATTR               = 225\n\tSYS_FSETXATTR               = 226\n\tSYS_GETXATTR                = 227\n\tSYS_LGETXATTR               = 228\n\tSYS_FGETXATTR               = 229\n\tSYS_LISTXATTR               = 230\n\tSYS_LLISTXATTR              = 231\n\tSYS_FLISTXATTR              = 232\n\tSYS_REMOVEXATTR             = 233\n\tSYS_LREMOVEXATTR            = 234\n\tSYS_FREMOVEXATTR            = 235\n\tSYS_GETTID                  = 236\n\tSYS_TKILL                   = 237\n\tSYS_FUTEX                   = 238\n\tSYS_SCHED_SETAFFINITY       = 239\n\tSYS_SCHED_GETAFFINITY       = 240\n\tSYS_TGKILL                  = 241\n\tSYS_IO_SETUP                = 243\n\tSYS_IO_DESTROY              = 244\n\tSYS_IO_GETEVENTS            = 245\n\tSYS_IO_SUBMIT               = 246\n\tSYS_IO_CANCEL               = 247\n\tSYS_EXIT_GROUP              = 248\n\tSYS_EPOLL_CREATE            = 249\n\tSYS_EPOLL_CTL               = 250\n\tSYS_EPOLL_WAIT              = 251\n\tSYS_SET_TID_ADDRESS         = 252\n\tSYS_FADVISE64               = 253\n\tSYS_TIMER_CREATE            = 254\n\tSYS_TIMER_SETTIME           = 255\n\tSYS_TIMER_GETTIME           = 256\n\tSYS_TIMER_GETOVERRUN        = 257\n\tSYS_TIMER_DELETE            = 258\n\tSYS_CLOCK_SETTIME           = 259\n\tSYS_CLOCK_GETTIME           = 260\n\tSYS_CLOCK_GETRES            = 261\n\tSYS_CLOCK_NANOSLEEP         = 262\n\tSYS_STATFS64                = 265\n\tSYS_FSTATFS64               = 266\n\tSYS_REMAP_FILE_PAGES        = 267\n\tSYS_MBIND                   = 268\n\tSYS_GET_MEMPOLICY           = 269\n\tSYS_SET_MEMPOLICY           = 270\n\tSYS_MQ_OPEN                 = 271\n\tSYS_MQ_UNLINK               = 272\n\tSYS_MQ_TIMEDSEND            = 273\n\tSYS_MQ_TIMEDRECEIVE         = 274\n\tSYS_MQ_NOTIFY               = 275\n\tSYS_MQ_GETSETATTR           = 276\n\tSYS_KEXEC_LOAD              = 277\n\tSYS_ADD_KEY                 = 278\n\tSYS_REQUEST_KEY             = 279\n\tSYS_KEYCTL                  = 280\n\tSYS_WAITID                  = 281\n\tSYS_IOPRIO_SET              = 282\n\tSYS_IOPRIO_GET              = 283\n\tSYS_INOTIFY_INIT            = 284\n\tSYS_INOTIFY_ADD_WATCH       = 285\n\tSYS_INOTIFY_RM_WATCH        = 286\n\tSYS_MIGRATE_PAGES           = 287\n\tSYS_OPENAT                  = 288\n\tSYS_MKDIRAT                 = 289\n\tSYS_MKNODAT                 = 290\n\tSYS_FCHOWNAT                = 291\n\tSYS_FUTIMESAT               = 292\n\tSYS_NEWFSTATAT              = 293\n\tSYS_UNLINKAT                = 294\n\tSYS_RENAMEAT                = 295\n\tSYS_LINKAT                  = 296\n\tSYS_SYMLINKAT               = 297\n\tSYS_READLINKAT              = 298\n\tSYS_FCHMODAT                = 299\n\tSYS_FACCESSAT               = 300\n\tSYS_PSELECT6                = 301\n\tSYS_PPOLL                   = 302\n\tSYS_UNSHARE                 = 303\n\tSYS_SET_ROBUST_LIST         = 304\n\tSYS_GET_ROBUST_LIST         = 305\n\tSYS_SPLICE                  = 306\n\tSYS_SYNC_FILE_RANGE         = 307\n\tSYS_TEE                     = 308\n\tSYS_VMSPLICE                = 309\n\tSYS_MOVE_PAGES              = 310\n\tSYS_GETCPU                  = 311\n\tSYS_EPOLL_PWAIT             = 312\n\tSYS_UTIMES                  = 313\n\tSYS_FALLOCATE               = 314\n\tSYS_UTIMENSAT               = 315\n\tSYS_SIGNALFD                = 316\n\tSYS_TIMERFD                 = 317\n\tSYS_EVENTFD                 = 318\n\tSYS_TIMERFD_CREATE          = 319\n\tSYS_TIMERFD_SETTIME         = 320\n\tSYS_TIMERFD_GETTIME         = 321\n\tSYS_SIGNALFD4               = 322\n\tSYS_EVENTFD2                = 323\n\tSYS_INOTIFY_INIT1           = 324\n\tSYS_PIPE2                   = 325\n\tSYS_DUP3                    = 326\n\tSYS_EPOLL_CREATE1           = 327\n\tSYS_PREADV                  = 328\n\tSYS_PWRITEV                 = 329\n\tSYS_RT_TGSIGQUEUEINFO       = 330\n\tSYS_PERF_EVENT_OPEN         = 331\n\tSYS_FANOTIFY_INIT           = 332\n\tSYS_FANOTIFY_MARK           = 333\n\tSYS_PRLIMIT64               = 334\n\tSYS_NAME_TO_HANDLE_AT       = 335\n\tSYS_OPEN_BY_HANDLE_AT       = 336\n\tSYS_CLOCK_ADJTIME           = 337\n\tSYS_SYNCFS                  = 338\n\tSYS_SETNS                   = 339\n\tSYS_PROCESS_VM_READV        = 340\n\tSYS_PROCESS_VM_WRITEV       = 341\n\tSYS_S390_RUNTIME_INSTR      = 342\n\tSYS_KCMP                    = 343\n\tSYS_FINIT_MODULE            = 344\n\tSYS_SCHED_SETATTR           = 345\n\tSYS_SCHED_GETATTR           = 346\n\tSYS_RENAMEAT2               = 347\n\tSYS_SECCOMP                 = 348\n\tSYS_GETRANDOM               = 349\n\tSYS_MEMFD_CREATE            = 350\n\tSYS_BPF                     = 351\n\tSYS_S390_PCI_MMIO_WRITE     = 352\n\tSYS_S390_PCI_MMIO_READ      = 353\n\tSYS_EXECVEAT                = 354\n\tSYS_USERFAULTFD             = 355\n\tSYS_MEMBARRIER              = 356\n\tSYS_RECVMMSG                = 357\n\tSYS_SENDMMSG                = 358\n\tSYS_SOCKET                  = 359\n\tSYS_SOCKETPAIR              = 360\n\tSYS_BIND                    = 361\n\tSYS_CONNECT                 = 362\n\tSYS_LISTEN                  = 363\n\tSYS_ACCEPT4                 = 364\n\tSYS_GETSOCKOPT              = 365\n\tSYS_SETSOCKOPT              = 366\n\tSYS_GETSOCKNAME             = 367\n\tSYS_GETPEERNAME             = 368\n\tSYS_SENDTO                  = 369\n\tSYS_SENDMSG                 = 370\n\tSYS_RECVFROM                = 371\n\tSYS_RECVMSG                 = 372\n\tSYS_SHUTDOWN                = 373\n\tSYS_MLOCK2                  = 374\n\tSYS_COPY_FILE_RANGE         = 375\n\tSYS_PREADV2                 = 376\n\tSYS_PWRITEV2                = 377\n\tSYS_S390_GUARDED_STORAGE    = 378\n\tSYS_STATX                   = 379\n\tSYS_S390_STHYI              = 380\n\tSYS_KEXEC_FILE_LOAD         = 381\n\tSYS_IO_PGETEVENTS           = 382\n\tSYS_RSEQ                    = 383\n\tSYS_PKEY_MPROTECT           = 384\n\tSYS_PKEY_ALLOC              = 385\n\tSYS_PKEY_FREE               = 386\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/sparc64/include /tmp/sparc64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAIT4                   = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECV                   = 11\n\tSYS_CHDIR                   = 12\n\tSYS_CHOWN                   = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BRK                     = 17\n\tSYS_PERFCTR                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_CAPGET                  = 21\n\tSYS_CAPSET                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_VMSPLICE                = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_SIGALTSTACK             = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_STAT                    = 38\n\tSYS_SENDFILE                = 39\n\tSYS_LSTAT                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_UMOUNT2                 = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_MEMORY_ORDERING         = 52\n\tSYS_IOCTL                   = 54\n\tSYS_REBOOT                  = 55\n\tSYS_SYMLINK                 = 57\n\tSYS_READLINK                = 58\n\tSYS_EXECVE                  = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_FSTAT                   = 62\n\tSYS_FSTAT64                 = 63\n\tSYS_GETPAGESIZE             = 64\n\tSYS_MSYNC                   = 65\n\tSYS_VFORK                   = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_MMAP                    = 71\n\tSYS_MUNMAP                  = 73\n\tSYS_MPROTECT                = 74\n\tSYS_MADVISE                 = 75\n\tSYS_VHANGUP                 = 76\n\tSYS_MINCORE                 = 78\n\tSYS_GETGROUPS               = 79\n\tSYS_SETGROUPS               = 80\n\tSYS_GETPGRP                 = 81\n\tSYS_SETITIMER               = 83\n\tSYS_SWAPON                  = 85\n\tSYS_GETITIMER               = 86\n\tSYS_SETHOSTNAME             = 88\n\tSYS_DUP2                    = 90\n\tSYS_FCNTL                   = 92\n\tSYS_SELECT                  = 93\n\tSYS_FSYNC                   = 95\n\tSYS_SETPRIORITY             = 96\n\tSYS_SOCKET                  = 97\n\tSYS_CONNECT                 = 98\n\tSYS_ACCEPT                  = 99\n\tSYS_GETPRIORITY             = 100\n\tSYS_RT_SIGRETURN            = 101\n\tSYS_RT_SIGACTION            = 102\n\tSYS_RT_SIGPROCMASK          = 103\n\tSYS_RT_SIGPENDING           = 104\n\tSYS_RT_SIGTIMEDWAIT         = 105\n\tSYS_RT_SIGQUEUEINFO         = 106\n\tSYS_RT_SIGSUSPEND           = 107\n\tSYS_SETRESUID               = 108\n\tSYS_GETRESUID               = 109\n\tSYS_SETRESGID               = 110\n\tSYS_GETRESGID               = 111\n\tSYS_RECVMSG                 = 113\n\tSYS_SENDMSG                 = 114\n\tSYS_GETTIMEOFDAY            = 116\n\tSYS_GETRUSAGE               = 117\n\tSYS_GETSOCKOPT              = 118\n\tSYS_GETCWD                  = 119\n\tSYS_READV                   = 120\n\tSYS_WRITEV                  = 121\n\tSYS_SETTIMEOFDAY            = 122\n\tSYS_FCHOWN                  = 123\n\tSYS_FCHMOD                  = 124\n\tSYS_RECVFROM                = 125\n\tSYS_SETREUID                = 126\n\tSYS_SETREGID                = 127\n\tSYS_RENAME                  = 128\n\tSYS_TRUNCATE                = 129\n\tSYS_FTRUNCATE               = 130\n\tSYS_FLOCK                   = 131\n\tSYS_LSTAT64                 = 132\n\tSYS_SENDTO                  = 133\n\tSYS_SHUTDOWN                = 134\n\tSYS_SOCKETPAIR              = 135\n\tSYS_MKDIR                   = 136\n\tSYS_RMDIR                   = 137\n\tSYS_UTIMES                  = 138\n\tSYS_STAT64                  = 139\n\tSYS_SENDFILE64              = 140\n\tSYS_GETPEERNAME             = 141\n\tSYS_FUTEX                   = 142\n\tSYS_GETTID                  = 143\n\tSYS_GETRLIMIT               = 144\n\tSYS_SETRLIMIT               = 145\n\tSYS_PIVOT_ROOT              = 146\n\tSYS_PRCTL                   = 147\n\tSYS_PCICONFIG_READ          = 148\n\tSYS_PCICONFIG_WRITE         = 149\n\tSYS_GETSOCKNAME             = 150\n\tSYS_INOTIFY_INIT            = 151\n\tSYS_INOTIFY_ADD_WATCH       = 152\n\tSYS_POLL                    = 153\n\tSYS_GETDENTS64              = 154\n\tSYS_INOTIFY_RM_WATCH        = 156\n\tSYS_STATFS                  = 157\n\tSYS_FSTATFS                 = 158\n\tSYS_UMOUNT                  = 159\n\tSYS_SCHED_SET_AFFINITY      = 160\n\tSYS_SCHED_GET_AFFINITY      = 161\n\tSYS_GETDOMAINNAME           = 162\n\tSYS_SETDOMAINNAME           = 163\n\tSYS_UTRAP_INSTALL           = 164\n\tSYS_QUOTACTL                = 165\n\tSYS_SET_TID_ADDRESS         = 166\n\tSYS_MOUNT                   = 167\n\tSYS_USTAT                   = 168\n\tSYS_SETXATTR                = 169\n\tSYS_LSETXATTR               = 170\n\tSYS_FSETXATTR               = 171\n\tSYS_GETXATTR                = 172\n\tSYS_LGETXATTR               = 173\n\tSYS_GETDENTS                = 174\n\tSYS_SETSID                  = 175\n\tSYS_FCHDIR                  = 176\n\tSYS_FGETXATTR               = 177\n\tSYS_LISTXATTR               = 178\n\tSYS_LLISTXATTR              = 179\n\tSYS_FLISTXATTR              = 180\n\tSYS_REMOVEXATTR             = 181\n\tSYS_LREMOVEXATTR            = 182\n\tSYS_SIGPENDING              = 183\n\tSYS_QUERY_MODULE            = 184\n\tSYS_SETPGID                 = 185\n\tSYS_FREMOVEXATTR            = 186\n\tSYS_TKILL                   = 187\n\tSYS_EXIT_GROUP              = 188\n\tSYS_UNAME                   = 189\n\tSYS_INIT_MODULE             = 190\n\tSYS_PERSONALITY             = 191\n\tSYS_REMAP_FILE_PAGES        = 192\n\tSYS_EPOLL_CREATE            = 193\n\tSYS_EPOLL_CTL               = 194\n\tSYS_EPOLL_WAIT              = 195\n\tSYS_IOPRIO_SET              = 196\n\tSYS_GETPPID                 = 197\n\tSYS_SIGACTION               = 198\n\tSYS_SGETMASK                = 199\n\tSYS_SSETMASK                = 200\n\tSYS_SIGSUSPEND              = 201\n\tSYS_OLDLSTAT                = 202\n\tSYS_USELIB                  = 203\n\tSYS_READDIR                 = 204\n\tSYS_READAHEAD               = 205\n\tSYS_SOCKETCALL              = 206\n\tSYS_SYSLOG                  = 207\n\tSYS_LOOKUP_DCOOKIE          = 208\n\tSYS_FADVISE64               = 209\n\tSYS_FADVISE64_64            = 210\n\tSYS_TGKILL                  = 211\n\tSYS_WAITPID                 = 212\n\tSYS_SWAPOFF                 = 213\n\tSYS_SYSINFO                 = 214\n\tSYS_IPC                     = 215\n\tSYS_SIGRETURN               = 216\n\tSYS_CLONE                   = 217\n\tSYS_IOPRIO_GET              = 218\n\tSYS_ADJTIMEX                = 219\n\tSYS_SIGPROCMASK             = 220\n\tSYS_CREATE_MODULE           = 221\n\tSYS_DELETE_MODULE           = 222\n\tSYS_GET_KERNEL_SYMS         = 223\n\tSYS_GETPGID                 = 224\n\tSYS_BDFLUSH                 = 225\n\tSYS_SYSFS                   = 226\n\tSYS_AFS_SYSCALL             = 227\n\tSYS_SETFSUID                = 228\n\tSYS_SETFSGID                = 229\n\tSYS__NEWSELECT              = 230\n\tSYS_SPLICE                  = 232\n\tSYS_STIME                   = 233\n\tSYS_STATFS64                = 234\n\tSYS_FSTATFS64               = 235\n\tSYS__LLSEEK                 = 236\n\tSYS_MLOCK                   = 237\n\tSYS_MUNLOCK                 = 238\n\tSYS_MLOCKALL                = 239\n\tSYS_MUNLOCKALL              = 240\n\tSYS_SCHED_SETPARAM          = 241\n\tSYS_SCHED_GETPARAM          = 242\n\tSYS_SCHED_SETSCHEDULER      = 243\n\tSYS_SCHED_GETSCHEDULER      = 244\n\tSYS_SCHED_YIELD             = 245\n\tSYS_SCHED_GET_PRIORITY_MAX  = 246\n\tSYS_SCHED_GET_PRIORITY_MIN  = 247\n\tSYS_SCHED_RR_GET_INTERVAL   = 248\n\tSYS_NANOSLEEP               = 249\n\tSYS_MREMAP                  = 250\n\tSYS__SYSCTL                 = 251\n\tSYS_GETSID                  = 252\n\tSYS_FDATASYNC               = 253\n\tSYS_NFSSERVCTL              = 254\n\tSYS_SYNC_FILE_RANGE         = 255\n\tSYS_CLOCK_SETTIME           = 256\n\tSYS_CLOCK_GETTIME           = 257\n\tSYS_CLOCK_GETRES            = 258\n\tSYS_CLOCK_NANOSLEEP         = 259\n\tSYS_SCHED_GETAFFINITY       = 260\n\tSYS_SCHED_SETAFFINITY       = 261\n\tSYS_TIMER_SETTIME           = 262\n\tSYS_TIMER_GETTIME           = 263\n\tSYS_TIMER_GETOVERRUN        = 264\n\tSYS_TIMER_DELETE            = 265\n\tSYS_TIMER_CREATE            = 266\n\tSYS_VSERVER                 = 267\n\tSYS_IO_SETUP                = 268\n\tSYS_IO_DESTROY              = 269\n\tSYS_IO_SUBMIT               = 270\n\tSYS_IO_CANCEL               = 271\n\tSYS_IO_GETEVENTS            = 272\n\tSYS_MQ_OPEN                 = 273\n\tSYS_MQ_UNLINK               = 274\n\tSYS_MQ_TIMEDSEND            = 275\n\tSYS_MQ_TIMEDRECEIVE         = 276\n\tSYS_MQ_NOTIFY               = 277\n\tSYS_MQ_GETSETATTR           = 278\n\tSYS_WAITID                  = 279\n\tSYS_TEE                     = 280\n\tSYS_ADD_KEY                 = 281\n\tSYS_REQUEST_KEY             = 282\n\tSYS_KEYCTL                  = 283\n\tSYS_OPENAT                  = 284\n\tSYS_MKDIRAT                 = 285\n\tSYS_MKNODAT                 = 286\n\tSYS_FCHOWNAT                = 287\n\tSYS_FUTIMESAT               = 288\n\tSYS_FSTATAT64               = 289\n\tSYS_UNLINKAT                = 290\n\tSYS_RENAMEAT                = 291\n\tSYS_LINKAT                  = 292\n\tSYS_SYMLINKAT               = 293\n\tSYS_READLINKAT              = 294\n\tSYS_FCHMODAT                = 295\n\tSYS_FACCESSAT               = 296\n\tSYS_PSELECT6                = 297\n\tSYS_PPOLL                   = 298\n\tSYS_UNSHARE                 = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_GET_ROBUST_LIST         = 301\n\tSYS_MIGRATE_PAGES           = 302\n\tSYS_MBIND                   = 303\n\tSYS_GET_MEMPOLICY           = 304\n\tSYS_SET_MEMPOLICY           = 305\n\tSYS_KEXEC_LOAD              = 306\n\tSYS_MOVE_PAGES              = 307\n\tSYS_GETCPU                  = 308\n\tSYS_EPOLL_PWAIT             = 309\n\tSYS_UTIMENSAT               = 310\n\tSYS_SIGNALFD                = 311\n\tSYS_TIMERFD_CREATE          = 312\n\tSYS_EVENTFD                 = 313\n\tSYS_FALLOCATE               = 314\n\tSYS_TIMERFD_SETTIME         = 315\n\tSYS_TIMERFD_GETTIME         = 316\n\tSYS_SIGNALFD4               = 317\n\tSYS_EVENTFD2                = 318\n\tSYS_EPOLL_CREATE1           = 319\n\tSYS_DUP3                    = 320\n\tSYS_PIPE2                   = 321\n\tSYS_INOTIFY_INIT1           = 322\n\tSYS_ACCEPT4                 = 323\n\tSYS_PREADV                  = 324\n\tSYS_PWRITEV                 = 325\n\tSYS_RT_TGSIGQUEUEINFO       = 326\n\tSYS_PERF_EVENT_OPEN         = 327\n\tSYS_RECVMMSG                = 328\n\tSYS_FANOTIFY_INIT           = 329\n\tSYS_FANOTIFY_MARK           = 330\n\tSYS_PRLIMIT64               = 331\n\tSYS_NAME_TO_HANDLE_AT       = 332\n\tSYS_OPEN_BY_HANDLE_AT       = 333\n\tSYS_CLOCK_ADJTIME           = 334\n\tSYS_SYNCFS                  = 335\n\tSYS_SENDMMSG                = 336\n\tSYS_SETNS                   = 337\n\tSYS_PROCESS_VM_READV        = 338\n\tSYS_PROCESS_VM_WRITEV       = 339\n\tSYS_KERN_FEATURES           = 340\n\tSYS_KCMP                    = 341\n\tSYS_FINIT_MODULE            = 342\n\tSYS_SCHED_SETATTR           = 343\n\tSYS_SCHED_GETATTR           = 344\n\tSYS_RENAMEAT2               = 345\n\tSYS_SECCOMP                 = 346\n\tSYS_GETRANDOM               = 347\n\tSYS_MEMFD_CREATE            = 348\n\tSYS_BPF                     = 349\n\tSYS_EXECVEAT                = 350\n\tSYS_MEMBARRIER              = 351\n\tSYS_USERFAULTFD             = 352\n\tSYS_BIND                    = 353\n\tSYS_LISTEN                  = 354\n\tSYS_SETSOCKOPT              = 355\n\tSYS_MLOCK2                  = 356\n\tSYS_COPY_FILE_RANGE         = 357\n\tSYS_PREADV2                 = 358\n\tSYS_PWRITEV2                = 359\n\tSYS_STATX                   = 360\n\tSYS_IO_PGETEVENTS           = 361\n\tSYS_PKEY_MPROTECT           = 362\n\tSYS_PKEY_ALLOC              = 363\n\tSYS_PKEY_FREE               = 364\n\tSYS_RSEQ                    = 365\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_MSYSCALL       = 37  // { int sys_msyscall(void *addr, size_t len); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS___REALPATH     = 115 // { int sys___realpath(const char *pathname, char *resolved); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS___TMPFD        = 164 // { int sys___tmpfd(int flags); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go",
    "content": "// 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": "vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go",
    "content": "// cgo -godefs types_aix.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && aix\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x3ff\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype off64 int64\ntype off int32\ntype Mode_t uint32\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct{}\n\ntype Time_t int32\n\ntype Tms struct{}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Timezone struct {\n\tMinuteswest int32\n\tDsttime     int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype Pid_t int32\n\ntype _Gid_t uint32\n\ntype dev_t uint32\n\ntype Stat_t struct {\n\tDev      uint32\n\tIno      uint32\n\tMode     uint32\n\tNlink    int16\n\tFlag     uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint32\n\tSize     int32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tBlksize  int32\n\tBlocks   int32\n\tVfstype  int32\n\tVfs      uint32\n\tType     uint32\n\tGen      uint32\n\tReserved [9]uint32\n}\n\ntype StatxTimestamp struct{}\n\ntype Statx_t struct{}\n\ntype Dirent struct {\n\tOffset uint32\n\tIno    uint32\n\tReclen uint16\n\tNamlen uint16\n\tName   [256]uint8\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [1023]uint8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [120]uint8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [1012]uint8\n}\n\ntype _Socklen uint32\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x404\n\tSizeofSockaddrUnix     = 0x401\n\tSizeofSockaddrDatalink = 0x80\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tSizeofIfMsghdr = 0x10\n)\n\ntype IfMsgHdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tAddrlen uint8\n\t_       [1]byte\n}\n\ntype FdSet struct {\n\tBits [2048]int32\n}\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\ntype Ustat_t struct{}\n\ntype Sigset_t struct {\n\tLosigs uint32\n\tHisigs uint32\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x1\n)\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [16]uint8\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  uint8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = 0x4000\n\tPOLLHUP    = 0x2000\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x8000\n\tPOLLOUT    = 0x2\n\tPOLLPRI    = 0x4\n\tPOLLRDBAND = 0x20\n\tPOLLRDNORM = 0x10\n\tPOLLWRBAND = 0x40\n\tPOLLWRNORM = 0x2\n)\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tSysid  uint32\n\tPid    int32\n\tVfs    int32\n\tStart  int64\n\tLen    int64\n}\n\ntype Fsid_t struct {\n\tVal [2]uint32\n}\ntype Fsid64_t struct {\n\tVal [2]uint64\n}\n\ntype Statfs_t struct {\n\tVersion   int32\n\tType      int32\n\tBsize     uint32\n\tBlocks    uint32\n\tBfree     uint32\n\tBavail    uint32\n\tFiles     uint32\n\tFfree     uint32\n\tFsid      Fsid_t\n\tVfstype   int32\n\tFsize     uint32\n\tVfsnumber int32\n\tVfsoff    int32\n\tVfslen    int32\n\tVfsvers   int32\n\tFname     [32]uint8\n\tFpack     [32]uint8\n\tName_max  int32\n}\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go",
    "content": "// cgo -godefs types_aix.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && aix\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x3ff\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype off64 int64\ntype off int64\ntype Mode_t uint32\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct{}\n\ntype Time_t int64\n\ntype Tms struct{}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Timezone struct {\n\tMinuteswest int32\n\tDsttime     int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype Pid_t int32\n\ntype _Gid_t uint32\n\ntype dev_t uint64\n\ntype Stat_t struct {\n\tDev      uint64\n\tIno      uint64\n\tMode     uint32\n\tNlink    int16\n\tFlag     uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint64\n\tSsize    int32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tBlksize  int64\n\tBlocks   int64\n\tVfstype  int32\n\tVfs      uint32\n\tType     uint32\n\tGen      uint32\n\tReserved [9]uint32\n\tPadto_ll uint32\n\tSize     int64\n}\n\ntype StatxTimestamp struct{}\n\ntype Statx_t struct{}\n\ntype Dirent struct {\n\tOffset uint64\n\tIno    uint64\n\tReclen uint16\n\tNamlen uint16\n\tName   [256]uint8\n\t_      [4]byte\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [1023]uint8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [120]uint8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [1012]uint8\n}\n\ntype _Socklen uint32\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x404\n\tSizeofSockaddrUnix     = 0x401\n\tSizeofSockaddrDatalink = 0x80\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tSizeofIfMsghdr = 0x10\n)\n\ntype IfMsgHdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tAddrlen uint8\n\t_       [1]byte\n}\n\ntype FdSet struct {\n\tBits [1024]int64\n}\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\ntype Ustat_t struct{}\n\ntype Sigset_t struct {\n\tSet [4]uint64\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x1\n)\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [16]uint8\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  uint8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = 0x4000\n\tPOLLHUP    = 0x2000\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x8000\n\tPOLLOUT    = 0x2\n\tPOLLPRI    = 0x4\n\tPOLLRDBAND = 0x20\n\tPOLLRDNORM = 0x10\n\tPOLLWRBAND = 0x40\n\tPOLLWRNORM = 0x2\n)\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tSysid  uint32\n\tPid    int32\n\tVfs    int32\n\tStart  int64\n\tLen    int64\n}\n\ntype Fsid_t struct {\n\tVal [2]uint32\n}\ntype Fsid64_t struct {\n\tVal [2]uint64\n}\n\ntype Statfs_t struct {\n\tVersion   int32\n\tType      int32\n\tBsize     uint64\n\tBlocks    uint64\n\tBfree     uint64\n\tBavail    uint64\n\tFiles     uint64\n\tFfree     uint64\n\tFsid      Fsid64_t\n\tVfstype   int32\n\tFsize     uint64\n\tVfsnumber int32\n\tVfsoff    int32\n\tVfslen    int32\n\tVfsvers   int32\n\tFname     [32]uint8\n\tFpack     [32]uint8\n\tName_max  int32\n\t_         [4]byte\n}\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go",
    "content": "// cgo -godefs types_darwin.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     int32\n\tMode    uint16\n\tNlink   uint16\n\tIno     uint64\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tQspare  [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\tFlags_ext   uint32\n\tReserved    [7]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n\t_      [4]byte\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint64\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags uint32\n\t_     [16]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype Attrlist struct {\n\tBitmapcount uint16\n\tReserved    uint16\n\tCommonattr  uint32\n\tVolattr     uint32\n\tDirattr     uint32\n\tFileattr    uint32\n\tForkattr    uint32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype RawSockaddrCtl struct {\n\tSc_len      uint8\n\tSc_family   uint8\n\tSs_sysaddr  uint16\n\tSc_id       uint32\n\tSc_unit     uint32\n\tSc_reserved [5]uint32\n}\n\ntype RawSockaddrVM struct {\n\tLen       uint8\n\tFamily    uint8\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n}\n\ntype XVSockPCB struct {\n\tXv_len           uint32\n\tXv_vsockpp       uint64\n\tXvp_local_cid    uint32\n\tXvp_local_port   uint32\n\tXvp_remote_cid   uint32\n\tXvp_remote_port  uint32\n\tXvp_rxcnt        uint32\n\tXvp_txcnt        uint32\n\tXvp_peer_rxhiwat uint32\n\tXvp_peer_rxcnt   uint32\n\tXvp_last_pid     int32\n\tXvp_gencnt       uint64\n\tXv_socket        XSocket\n\t_                [4]byte\n}\n\ntype XSocket struct {\n\tXso_len      uint32\n\tXso_so       uint32\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\tSo_pcb       uint32\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSocket64 struct {\n\tXso_len      uint32\n\t_            [8]byte\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\t_            [8]byte\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSockbuf struct {\n\tCc    uint32\n\tHiwat uint32\n\tMbcnt uint32\n\tMbmax uint32\n\tLowat int32\n\tFlags int16\n\tTimeo int16\n}\n\ntype XVSockPgen struct {\n\tLen   uint32\n\tCount uint64\n\tGen   uint64\n\tSogen uint64\n}\n\ntype _Socklen uint32\n\ntype 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": "vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go",
    "content": "// cgo -godefs types_darwin.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     int32\n\tMode    uint16\n\tNlink   uint16\n\tIno     uint64\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tQspare  [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\tFlags_ext   uint32\n\tReserved    [7]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n\t_      [4]byte\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint64\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags uint32\n\t_     [16]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype Attrlist struct {\n\tBitmapcount uint16\n\tReserved    uint16\n\tCommonattr  uint32\n\tVolattr     uint32\n\tDirattr     uint32\n\tFileattr    uint32\n\tForkattr    uint32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype RawSockaddrCtl struct {\n\tSc_len      uint8\n\tSc_family   uint8\n\tSs_sysaddr  uint16\n\tSc_id       uint32\n\tSc_unit     uint32\n\tSc_reserved [5]uint32\n}\n\ntype RawSockaddrVM struct {\n\tLen       uint8\n\tFamily    uint8\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n}\n\ntype XVSockPCB struct {\n\tXv_len           uint32\n\tXv_vsockpp       uint64\n\tXvp_local_cid    uint32\n\tXvp_local_port   uint32\n\tXvp_remote_cid   uint32\n\tXvp_remote_port  uint32\n\tXvp_rxcnt        uint32\n\tXvp_txcnt        uint32\n\tXvp_peer_rxhiwat uint32\n\tXvp_peer_rxcnt   uint32\n\tXvp_last_pid     int32\n\tXvp_gencnt       uint64\n\tXv_socket        XSocket\n\t_                [4]byte\n}\n\ntype XSocket struct {\n\tXso_len      uint32\n\tXso_so       uint32\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\tSo_pcb       uint32\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSocket64 struct {\n\tXso_len      uint32\n\t_            [8]byte\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\t_            [8]byte\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSockbuf struct {\n\tCc    uint32\n\tHiwat uint32\n\tMbcnt uint32\n\tMbmax uint32\n\tLowat int32\n\tFlags int16\n\tTimeo int16\n}\n\ntype XVSockPgen struct {\n\tLen   uint32\n\tCount uint64\n\tGen   uint64\n\tSogen uint64\n}\n\ntype _Socklen uint32\n\ntype 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": "vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go",
    "content": "// cgo -godefs types_dragonfly.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tIno     uint64\n\tNlink   uint32\n\tDev     uint32\n\tMode    uint16\n\t_1      uint16\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\t_       uint32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tBlksize int64\n\tQspare2 int64\n}\n\ntype Statfs_t struct {\n\tSpare2      int64\n\tBsize       int64\n\tIosize      int64\n\tBlocks      int64\n\tBfree       int64\n\tBavail      int64\n\tFiles       int64\n\tFfree       int64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        int32\n\tFlags       int32\n\tSyncwrites  int64\n\tAsyncwrites int64\n\tFstypename  [16]byte\n\tMntonname   [80]byte\n\tSyncreads   int64\n\tAsyncreads  int64\n\tSpares1     int16\n\tMntfromname [80]byte\n\tSpares2     int16\n\tSpare       [2]int64\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno  uint64\n\tNamlen  uint16\n\tType    uint8\n\tUnused1 uint8\n\tUnused2 uint32\n\tName    [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\tRcf    uint16\n\tRoute  [16]uint16\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xb0\n\tSizeofIfData           = 0xa0\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tMtu        uint64\n\tMetric     uint64\n\tLink_state uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\tOqdrops    uint64\n\tLastchange Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tFlags     int32\n\tAddrs     int32\n\tAddrflags int32\n\tMetric    int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks     uint64\n\tMtu       uint64\n\tPksent    uint64\n\tExpire    uint64\n\tSendpipe  uint64\n\tSsthresh  uint64\n\tRtt       uint64\n\tRttvar    uint64\n\tRecvpipe  uint64\n\tHopcount  uint64\n\tMssopt    uint16\n\tPad       uint16\n\tMsl       uint64\n\tIwmaxsegs uint64\n\tIwcapsegs uint64\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = 0xfffafdcd\n\tAT_SYMLINK_NOFOLLOW = 0x1\n\tAT_REMOVEDIR        = 0x2\n\tAT_EACCESS          = 0x4\n\tAT_SYMLINK_FOLLOW   = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go",
    "content": "// cgo -godefs types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Time_t int32\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\t_       int32\n\tAtim    Timespec\n\t_       int32\n\tMtim    Timespec\n\t_       int32\n\tCtim    Timespec\n\t_       int32\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x50\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [4]byte\n\t_      [32]byte\n}\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tFs     uint32\n\tEs     uint32\n\tDs     uint32\n\tEdi    uint32\n\tEsi    uint32\n\tEbp    uint32\n\tIsp    uint32\n\tEbx    uint32\n\tEdx    uint32\n\tEcx    uint32\n\tEax    uint32\n\tTrapno uint32\n\tErr    uint32\n\tEip    uint32\n\tCs     uint32\n\tEflags uint32\n\tEsp    uint32\n\tSs     uint32\n\tGs     uint32\n}\n\ntype FpReg struct {\n\tEnv   [7]uint32\n\tAcc   [8][10]uint8\n\tEx_sw uint32\n\tPad   [64]uint8\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint32\n}\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0x60\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x50\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x5c\n\tSizeofRtMetrics        = 0x38\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint32\n\tMetric      uint32\n\tBaudrate    uint32\n\tIpackets    uint32\n\tIerrors     uint32\n\tOpackets    uint32\n\tOerrors     uint32\n\tCollisions  uint32\n\tIbytes      uint32\n\tObytes      uint32\n\tImcasts     uint32\n\tOmcasts     uint32\n\tIqdrops     uint32\n\tNoproto     uint32\n\tHwassist    uint32\n\tEpoch       int32\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tWeight   uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0xc\n\tSizeofBpfProgram    = 0x8\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x14\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go",
    "content": "// cgo -godefs types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tR15    int64\n\tR14    int64\n\tR13    int64\n\tR12    int64\n\tR11    int64\n\tR10    int64\n\tR9     int64\n\tR8     int64\n\tRdi    int64\n\tRsi    int64\n\tRbp    int64\n\tRbx    int64\n\tRdx    int64\n\tRcx    int64\n\tRax    int64\n\tTrapno uint32\n\tFs     uint16\n\tGs     uint16\n\tErr    uint32\n\tEs     uint16\n\tDs     uint16\n\tRip    int64\n\tCs     int64\n\tRflags int64\n\tRsp    int64\n\tSs     int64\n}\n\ntype FpReg struct {\n\tEnv   [4]uint64\n\tAcc   [8][16]uint8\n\tXacc  [16][16]uint8\n\tSpare [12]uint64\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tFiller   [3]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n\t_    [4]byte\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x50\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tR    [13]uint32\n\tSp   uint32\n\tLr   uint32\n\tPc   uint32\n\tCpsr uint32\n}\n\ntype FpReg struct {\n\tFpsr uint32\n\tFpr  [8]FpExtendedPrecision\n}\n\ntype FpExtendedPrecision struct {\n\tExponent    uint32\n\tMantissa_hi uint32\n\tMantissa_lo uint32\n}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint32\n}\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\t_      [4]byte\n\tData   int64\n\tUdata  *byte\n\t_      [4]byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0x70\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x60\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x5c\n\tSizeofRtMetrics        = 0x38\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint32\n\tMetric      uint32\n\tBaudrate    uint32\n\tIpackets    uint32\n\tIerrors     uint32\n\tOpackets    uint32\n\tOerrors     uint32\n\tCollisions  uint32\n\tIbytes      uint32\n\tObytes      uint32\n\tImcasts     uint32\n\tOmcasts     uint32\n\tIqdrops     uint32\n\tNoproto     uint32\n\tHwassist    uint32\n\t_           [4]byte\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tWeight   uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0xc\n\tSizeofBpfProgram    = 0x8\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tX    [30]uint64\n\tLr   uint64\n\tSp   uint64\n\tElr  uint64\n\tSpsr uint32\n\t_    [4]byte\n}\n\ntype FpReg struct {\n\tQ  [32][16]uint8\n\tSr uint32\n\tCr uint32\n\t_  [8]byte\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tFiller   [3]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tRa      uint64\n\tSp      uint64\n\tGp      uint64\n\tTp      uint64\n\tT       [7]uint64\n\tS       [12]uint64\n\tA       [8]uint64\n\tSepc    uint64\n\tSstatus uint64\n}\n\ntype FpReg struct {\n\tX    [32][2]uint64\n\tFcsr uint64\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tNhidx    uint64\n\tFiller   [2]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n)\n\ntype CapRights struct {\n\tRights [2]uint64\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tSpare  int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nconst (\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short int16\n\t_C_int   int32\n\n\t_C_long_long int64\n)\n\ntype ItimerSpec struct {\n\tInterval Timespec\n\tValue    Timespec\n}\n\ntype Itimerval struct {\n\tInterval Timeval\n\tValue    Timeval\n}\n\nconst (\n\tADJ_OFFSET            = 0x1\n\tADJ_FREQUENCY         = 0x2\n\tADJ_MAXERROR          = 0x4\n\tADJ_ESTERROR          = 0x8\n\tADJ_STATUS            = 0x10\n\tADJ_TIMECONST         = 0x20\n\tADJ_TAI               = 0x80\n\tADJ_SETOFFSET         = 0x100\n\tADJ_MICRO             = 0x1000\n\tADJ_NANO              = 0x2000\n\tADJ_TICK              = 0x4000\n\tADJ_OFFSET_SINGLESHOT = 0x8001\n\tADJ_OFFSET_SS_READ    = 0xa001\n)\n\nconst (\n\tSTA_PLL       = 0x1\n\tSTA_PPSFREQ   = 0x2\n\tSTA_PPSTIME   = 0x4\n\tSTA_FLL       = 0x8\n\tSTA_INS       = 0x10\n\tSTA_DEL       = 0x20\n\tSTA_UNSYNC    = 0x40\n\tSTA_FREQHOLD  = 0x80\n\tSTA_PPSSIGNAL = 0x100\n\tSTA_PPSJITTER = 0x200\n\tSTA_PPSWANDER = 0x400\n\tSTA_PPSERROR  = 0x800\n\tSTA_CLOCKERR  = 0x1000\n\tSTA_NANO      = 0x2000\n\tSTA_MODE      = 0x4000\n\tSTA_CLK       = 0x8000\n)\n\nconst (\n\tTIME_OK    = 0x0\n\tTIME_INS   = 0x1\n\tTIME_DEL   = 0x2\n\tTIME_OOP   = 0x3\n\tTIME_WAIT  = 0x4\n\tTIME_ERROR = 0x5\n\tTIME_BAD   = 0x5\n)\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask             uint32\n\tBlksize          uint32\n\tAttributes       uint64\n\tNlink            uint32\n\tUid              uint32\n\tGid              uint32\n\tMode             uint16\n\t_                [1]uint16\n\tIno              uint64\n\tSize             uint64\n\tBlocks           uint64\n\tAttributes_mask  uint64\n\tAtime            StatxTimestamp\n\tBtime            StatxTimestamp\n\tCtime            StatxTimestamp\n\tMtime            StatxTimestamp\n\tRdev_major       uint32\n\tRdev_minor       uint32\n\tDev_major        uint32\n\tDev_minor        uint32\n\tMnt_id           uint64\n\tDio_mem_align    uint32\n\tDio_offset_align uint32\n\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\t_                         [4]uint8\n\tMaster_key_identifier     [16]uint8\n}\n\ntype FscryptGetPolicyExArg struct {\n\tSize   uint64\n\tPolicy [24]byte\n}\n\ntype FscryptKeySpecifier struct {\n\tType uint32\n\t_    uint32\n\tU    [32]byte\n}\n\ntype FscryptAddKeyArg struct {\n\tKey_spec FscryptKeySpecifier\n\tRaw_size uint32\n\tKey_id   uint32\n\t_        [8]uint32\n}\n\ntype FscryptRemoveKeyArg struct {\n\tKey_spec             FscryptKeySpecifier\n\tRemoval_status_flags uint32\n\t_                    [5]uint32\n}\n\ntype FscryptGetKeyStatusArg struct {\n\tKey_spec     FscryptKeySpecifier\n\t_            [6]uint32\n\tStatus       uint32\n\tStatus_flags uint32\n\tUser_count   uint32\n\t_            [13]uint32\n}\n\ntype 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}\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           = 0xf0\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\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_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_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_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_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_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_IPVLAN_UNSPEC                         = 0x0\n\tIFLA_IPVLAN_MODE                           = 0x1\n\tIFLA_IPVLAN_FLAGS                          = 0x2\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_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_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_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_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_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_OFFLOAD_XSTATS_UNSPEC                 = 0x0\n\tIFLA_OFFLOAD_XSTATS_CPU_HIT                = 0x1\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)\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                     = 0x4\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}\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                              = 0x1b\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                               = 0x7\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": "vendor/golang.org/x/sys/unix/ztypes_linux_386.go",
    "content": "// cgo -godefs -objdir=/tmp/386/cgo -- -Wall -Werror -static -I/tmp/386/include -m32 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\t_       uint32\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\tSize    int64\n\tBlksize int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tIno     uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [1]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tEbx      int32\n\tEcx      int32\n\tEdx      int32\n\tEsi      int32\n\tEdi      int32\n\tEbp      int32\n\tEax      int32\n\tXds      int32\n\tXes      int32\n\tXfs      int32\n\tXgs      int32\n\tOrig_eax int32\n\tEip      int32\n\tXcs      int32\n\tEflags   int32\n\tEsp      int32\n\tXss      int32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [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": "vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go",
    "content": "// cgo -godefs -objdir=/tmp/amd64/cgo -- -Wall -Werror -static -I/tmp/amd64/include -m64 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [3]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tR15      uint64\n\tR14      uint64\n\tR13      uint64\n\tR12      uint64\n\tRbp      uint64\n\tRbx      uint64\n\tR11      uint64\n\tR10      uint64\n\tR9       uint64\n\tR8       uint64\n\tRax      uint64\n\tRcx      uint64\n\tRdx      uint64\n\tRsi      uint64\n\tRdi      uint64\n\tOrig_rax uint64\n\tRip      uint64\n\tCs       uint64\n\tEflags   uint64\n\tRsp      uint64\n\tSs       uint64\n\tFs_base  uint64\n\tGs_base  uint64\n\tDs       uint64\n\tEs       uint64\n\tFs       uint64\n\tGs       uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\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": "vendor/golang.org/x/sys/unix/ztypes_linux_arm.go",
    "content": "// cgo -godefs -objdir=/tmp/arm/cgo -- -Wall -Werror -static -I/tmp/arm/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\t_       uint32\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\t_       [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": "vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go",
    "content": "// cgo -godefs -objdir=/tmp/arm64/cgo -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs   [31]uint64\n\tSp     uint64\n\tPc     uint64\n\tPstate uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\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": "vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go",
    "content": "// cgo -godefs -objdir=/tmp/loong64/cgo -- -Wall -Werror -static -I/tmp/loong64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tOrig_a0  uint64\n\tEra      uint64\n\tBadv     uint64\n\tReserved [10]uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\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": "vendor/golang.org/x/sys/unix/ztypes_linux_mips.go",
    "content": "// cgo -godefs -objdir=/tmp/mips/cgo -- -Wall -Werror -static -I/tmp/mips/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]int32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]int32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tPad4    int32\n\tBlocks  int64\n\tPad5    [14]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [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": "vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go",
    "content": "// cgo -godefs -objdir=/tmp/mips64/cgo -- -Wall -Werror -static -I/tmp/mips64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]uint32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]uint32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize uint32\n\tPad4    uint32\n\tBlocks  int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\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": "vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go",
    "content": "// cgo -godefs -objdir=/tmp/mips64le/cgo -- -Wall -Werror -static -I/tmp/mips64le/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]uint32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]uint32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize uint32\n\tPad4    uint32\n\tBlocks  int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\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": "vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go",
    "content": "// cgo -godefs -objdir=/tmp/mipsle/cgo -- -Wall -Werror -static -I/tmp/mipsle/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]int32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]int32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tPad4    int32\n\tBlocks  int64\n\tPad5    [14]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [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": "vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc/cgo -- -Wall -Werror -static -I/tmp/ppc/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\t_       [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": "vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc64/cgo -- -Wall -Werror -static -I/tmp/ppc64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint64\n\tNip       uint64\n\tMsr       uint64\n\tOrig_gpr3 uint64\n\tCtr       uint64\n\tLink      uint64\n\tXer       uint64\n\tCcr       uint64\n\tSofte     uint64\n\tTrap      uint64\n\tDar       uint64\n\tDsisr     uint64\n\tResult    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\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": "vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc64le/cgo -- -Wall -Werror -static -I/tmp/ppc64le/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint64\n\tNip       uint64\n\tMsr       uint64\n\tOrig_gpr3 uint64\n\tCtr       uint64\n\tLink      uint64\n\tXer       uint64\n\tCcr       uint64\n\tSofte     uint64\n\tTrap      uint64\n\tDar       uint64\n\tDsisr     uint64\n\tResult    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\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": "vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go",
    "content": "// cgo -godefs -objdir=/tmp/riscv64/cgo -- -Wall -Werror -static -I/tmp/riscv64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tPc  uint64\n\tRa  uint64\n\tSp  uint64\n\tGp  uint64\n\tTp  uint64\n\tT0  uint64\n\tT1  uint64\n\tT2  uint64\n\tS0  uint64\n\tS1  uint64\n\tA0  uint64\n\tA1  uint64\n\tA2  uint64\n\tA3  uint64\n\tA4  uint64\n\tA5  uint64\n\tA6  uint64\n\tA7  uint64\n\tS2  uint64\n\tS3  uint64\n\tS4  uint64\n\tS5  uint64\n\tS6  uint64\n\tS7  uint64\n\tS8  uint64\n\tS9  uint64\n\tS10 uint64\n\tS11 uint64\n\tT3  uint64\n\tT4  uint64\n\tT5  uint64\n\tT6  uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\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": "vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go",
    "content": "// cgo -godefs -objdir=/tmp/s390x/cgo -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int64\n\tBlocks  int64\n\t_       [3]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x6\n\tFADV_NOREUSE  = 0x7\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tPsw                      PtracePsw\n\tGprs                     [16]uint64\n\tAcrs                     [16]uint32\n\tOrig_gpr2                uint64\n\tFp_regs                  PtraceFpregs\n\tPer_info                 PtracePer\n\tIeee_instruction_pointer uint64\n}\n\ntype PtracePsw struct {\n\tMask uint64\n\tAddr uint64\n}\n\ntype PtraceFpregs struct {\n\tFpc  uint32\n\tFprs [16]float64\n}\n\ntype PtracePer struct {\n\tControl_regs  [3]uint64\n\t_             [8]byte\n\tStarting_addr uint64\n\tEnding_addr   uint64\n\tPerc_atmid    uint16\n\tAddress       uint64\n\tAccess_id     uint8\n\t_             [7]byte\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\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": "vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go",
    "content": "// cgo -godefs -objdir=/tmp/sparc64/cgo -- -Wall -Werror -static -I/tmp/sparc64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      int16\n\t_      [2]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs   [16]uint64\n\tTstate uint64\n\tTpc    uint64\n\tTnpc   uint64\n\tY      uint32\n\tMagic  uint32\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x400000\n)\n\nconst (\n\tPOLLRDHUP = 0x800\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x4\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\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": "vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint32\n\tBsize       uint32\n\tFrsize      uint32\n\tIosize      uint32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint32\n\tNamemax     uint32\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter uint32\n\tFlags  uint32\n\tFflags uint32\n\tData   int64\n\tUdata  int32\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x84\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n\tPad_cgo_1 [4]byte\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint64\n\tBsize       uint64\n\tFrsize      uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint64\n\tNamemax     uint64\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\t_           [4]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tPad_cgo_0  [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\tPad_cgo_1  [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint64\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tPad_cgo_0 [4]byte\n\tData      int64\n\tUdata     int64\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen       uint32\n\tPad_cgo_0 [4]byte\n\tInsns     *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec       int64\n\tNsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint32\n\tBsize       uint32\n\tFrsize      uint32\n\tIosize      uint32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint32\n\tNamemax     uint32\n\tOwner       uint32\n\tSpare       [4]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": "vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint64\n\tBsize       uint64\n\tFrsize      uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint64\n\tNamemax     uint64\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\t_           [4]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tPad_cgo_0  [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\tPad_cgo_1  [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint64\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tPad_cgo_0 [4]byte\n\tData      int64\n\tUdata     int64\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen       uint32\n\tPad_cgo_0 [4]byte\n\tInsns     *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go",
    "content": "// cgo -godefs types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa0\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go",
    "content": "// cgo -godefs types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n\t_    [4]byte\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       [4]byte\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\t_             [4]byte\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\t_      [4]byte\n\tData   int64\n\tUdata  *byte\n\t_      [4]byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\t_            [4]byte\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\ntype Mclpool struct{}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\ntype Mclpool struct{}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go",
    "content": "// cgo -godefs types_solaris.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && solaris\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x400\n\tMaxHostNameLen = 0x100\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tBlocks  int64\n\tFstype  [16]int8\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tSysid  int32\n\tPid    int32\n\tPad    [4]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tName   [1]int8\n\t_      [5]byte\n}\n\ntype _Fsblkcnt_t uint64\n\ntype Statvfs_t struct {\n\tBsize    uint64\n\tFrsize   uint64\n\tBlocks   uint64\n\tBfree    uint64\n\tBavail   uint64\n\tFiles    uint64\n\tFfree    uint64\n\tFavail   uint64\n\tFsid     uint64\n\tBasetype [16]int8\n\tFlag     uint64\n\tNamemax  uint64\n\tFstr     [32]int8\n}\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n\t_        uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tFamily uint16\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [244]int8\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [236]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName         *byte\n\tNamelen      uint32\n\tIov          *Iovec\n\tIovlen       int32\n\tAccrights    *int8\n\tAccrightslen int32\n\t_            [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x20\n\tSizeofSockaddrAny      = 0xfc\n\tSizeofSockaddrUnix     = 0x6e\n\tSizeofSockaddrDatalink = 0xfc\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet4Pktinfo     = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x24\n\tSizeofICMPv6Filter     = 0x20\n)\n\ntype FdSet struct {\n\tBits [1024]int64\n}\n\ntype Utsname struct {\n\tSysname  [257]byte\n\tNodename [257]byte\n\tRelease  [257]byte\n\tVersion  [257]byte\n\tMachine  [257]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int64\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\nconst (\n\tAT_FDCWD            = 0xffd19553\n\tAT_SYMLINK_NOFOLLOW = 0x1000\n\tAT_SYMLINK_FOLLOW   = 0x2000\n\tAT_REMOVEDIR        = 0x1\n\tAT_EACCESS          = 0x4\n)\n\nconst (\n\tSizeofIfMsghdr  = 0x54\n\tSizeofIfData    = 0x44\n\tSizeofIfaMsghdr = 0x14\n\tSizeofRtMsghdr  = 0x4c\n\tSizeofRtMetrics = 0x28\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tLastchange Timeval32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tMetric  int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint64\n\tDrop uint64\n\tCapt uint64\n\t_    [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [19]uint8\n\t_     [1]byte\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  int8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype fileObj struct {\n\tAtim Timespec\n\tMtim Timespec\n\tCtim Timespec\n\tPad  [3]uint64\n\tName *int8\n}\n\ntype portEvent struct {\n\tEvents int32\n\tSource uint16\n\tPad    uint16\n\tObject uint64\n\tUser   *byte\n}\n\nconst (\n\tPORT_SOURCE_AIO    = 0x1\n\tPORT_SOURCE_TIMER  = 0x2\n\tPORT_SOURCE_USER   = 0x3\n\tPORT_SOURCE_FD     = 0x4\n\tPORT_SOURCE_ALERT  = 0x5\n\tPORT_SOURCE_MQ     = 0x6\n\tPORT_SOURCE_FILE   = 0x7\n\tPORT_ALERT_SET     = 0x1\n\tPORT_ALERT_UPDATE  = 0x2\n\tPORT_ALERT_INVALID = 0x3\n\tFILE_ACCESS        = 0x1\n\tFILE_MODIFIED      = 0x2\n\tFILE_ATTRIB        = 0x4\n\tFILE_TRUNC         = 0x100000\n\tFILE_NOFOLLOW      = 0x10000000\n\tFILE_DELETE        = 0x10\n\tFILE_RENAME_TO     = 0x20\n\tFILE_RENAME_FROM   = 0x40\n\tUNMOUNTED          = 0x20000000\n\tMOUNTEDOVER        = 0x40000000\n\tFILE_EXCEPTION     = 0x60000070\n)\n\nconst (\n\tTUNNEWPPA = 0x540001\n\tTUNSETPPA = 0x540002\n\n\tI_STR     = 0x5308\n\tI_POP     = 0x5303\n\tI_PUSH    = 0x5302\n\tI_LINK    = 0x530c\n\tI_UNLINK  = 0x530d\n\tI_PLINK   = 0x5316\n\tI_PUNLINK = 0x5317\n\n\tIF_UNITSEL = -0x7ffb8cca\n)\n\ntype strbuf struct {\n\tMaxlen int32\n\tLen    int32\n\tBuf    *int8\n}\n\ntype Strioctl struct {\n\tCmd    int32\n\tTimout int32\n\tLen    int32\n\tDp     *int8\n}\n\ntype Lifreq struct {\n\tName   [32]int8\n\tLifru1 [4]byte\n\tType   uint32\n\tLifru  [336]byte\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Hand edited based on ztypes_linux_s390x.go\n// TODO: auto-generate.\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\nconst (\n\tSizeofSockaddrAny   = 128\n\tSizeofCmsghdr       = 12\n\tSizeofIPMreq        = 8\n\tSizeofIPv6Mreq      = 20\n\tSizeofICMPv6Filter  = 32\n\tSizeofIPv6MTUInfo   = 32\n\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": "vendor/golang.org/x/sys/windows/aliases.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows && go1.9\n\npackage windows\n\nimport \"syscall\"\n\ntype Errno = syscall.Errno\ntype SysProcAttr = syscall.SysProcAttr\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/dll_windows.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// We need to use LoadLibrary and GetProcAddress from the Go runtime, because\n// the these symbols are loaded by the system linker and are required to\n// dynamically load additional symbols. Note that in the Go runtime, these\n// return syscall.Handle and syscall.Errno, but these are the same, in fact,\n// as windows.Handle and windows.Errno, and we intend to keep these the same.\n\n//go:linkname syscall_loadlibrary syscall.loadlibrary\nfunc syscall_loadlibrary(filename *uint16) (handle Handle, err Errno)\n\n//go:linkname syscall_getprocaddress syscall.getprocaddress\nfunc syscall_getprocaddress(handle Handle, procname *uint8) (proc uintptr, err Errno)\n\n// DLLError describes reasons for DLL load failures.\ntype DLLError struct {\n\tErr     error\n\tObjName string\n\tMsg     string\n}\n\nfunc (e *DLLError) Error() string { return e.Msg }\n\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": "vendor/golang.org/x/sys/windows/empty.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//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": "vendor/golang.org/x/sys/windows/env_windows.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Windows environment variables.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc Getenv(key string) (value string, found bool) {\n\treturn syscall.Getenv(key)\n}\n\nfunc Setenv(key, value string) error {\n\treturn syscall.Setenv(key, value)\n}\n\nfunc Clearenv() {\n\tsyscall.Clearenv()\n}\n\nfunc Environ() []string {\n\treturn syscall.Environ()\n}\n\n// Returns a default environment associated with the token, rather than the current\n// process. If inheritExisting is true, then this environment also inherits the\n// environment of the current process.\nfunc (token Token) Environ(inheritExisting bool) (env []string, err error) {\n\tvar block *uint16\n\terr = CreateEnvironmentBlock(&block, token, inheritExisting)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer DestroyEnvironmentBlock(block)\n\tblockp := unsafe.Pointer(block)\n\tfor {\n\t\tentry := UTF16PtrToString((*uint16)(blockp))\n\t\tif len(entry) == 0 {\n\t\t\tbreak\n\t\t}\n\t\tenv = append(env, entry)\n\t\tblockp = unsafe.Add(blockp, 2*(len(entry)+1))\n\t}\n\treturn env, nil\n}\n\nfunc Unsetenv(key string) error {\n\treturn syscall.Unsetenv(key)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/eventlog.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nconst (\n\tEVENTLOG_SUCCESS          = 0\n\tEVENTLOG_ERROR_TYPE       = 1\n\tEVENTLOG_WARNING_TYPE     = 2\n\tEVENTLOG_INFORMATION_TYPE = 4\n\tEVENTLOG_AUDIT_SUCCESS    = 8\n\tEVENTLOG_AUDIT_FAILURE    = 16\n)\n\n//sys\tRegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW\n//sys\tDeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource\n//sys\tReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/exec_windows.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Fork, exec, wait, etc.\n\npackage windows\n\nimport (\n\terrorspkg \"errors\"\n\t\"unsafe\"\n)\n\n// EscapeArg rewrites command line argument s as prescribed\n// in http://msdn.microsoft.com/en-us/library/ms880421.\n// This function returns \"\" (2 double quotes) if s is empty.\n// Alternatively, these transformations are done:\n//   - every back slash (\\) is doubled, but only if immediately\n//     followed by double quote (\");\n//   - every double quote (\") is escaped by back slash (\\);\n//   - finally, s is wrapped with double quotes (arg -> \"arg\"),\n//     but only if there is space or tab inside s.\nfunc EscapeArg(s string) string {\n\tif len(s) == 0 {\n\t\treturn `\"\"`\n\t}\n\tn := len(s)\n\thasSpace := false\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch s[i] {\n\t\tcase '\"', '\\\\':\n\t\t\tn++\n\t\tcase ' ', '\\t':\n\t\t\thasSpace = true\n\t\t}\n\t}\n\tif hasSpace {\n\t\tn += 2 // Reserve space for quotes.\n\t}\n\tif n == len(s) {\n\t\treturn s\n\t}\n\n\tqs := make([]byte, n)\n\tj := 0\n\tif hasSpace {\n\t\tqs[j] = '\"'\n\t\tj++\n\t}\n\tslashes := 0\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch s[i] {\n\t\tdefault:\n\t\t\tslashes = 0\n\t\t\tqs[j] = s[i]\n\t\tcase '\\\\':\n\t\t\tslashes++\n\t\t\tqs[j] = s[i]\n\t\tcase '\"':\n\t\t\tfor ; slashes > 0; slashes-- {\n\t\t\t\tqs[j] = '\\\\'\n\t\t\t\tj++\n\t\t\t}\n\t\t\tqs[j] = '\\\\'\n\t\t\tj++\n\t\t\tqs[j] = s[i]\n\t\t}\n\t\tj++\n\t}\n\tif hasSpace {\n\t\tfor ; slashes > 0; slashes-- {\n\t\t\tqs[j] = '\\\\'\n\t\t\tj++\n\t\t}\n\t\tqs[j] = '\"'\n\t\tj++\n\t}\n\treturn string(qs[:j])\n}\n\n// ComposeCommandLine escapes and joins the given arguments suitable for use as a Windows command line,\n// in CreateProcess's CommandLine argument, CreateService/ChangeServiceConfig's BinaryPathName argument,\n// or any program that uses CommandLineToArgv.\nfunc ComposeCommandLine(args []string) string {\n\tif len(args) == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Per https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw:\n\t// “This function accepts command lines that contain a program name; the\n\t// program name can be enclosed in quotation marks or not.”\n\t//\n\t// Unfortunately, it provides no means of escaping interior quotation marks\n\t// within that program name, and we have no way to report them here.\n\tprog := args[0]\n\tmustQuote := len(prog) == 0\n\tfor i := 0; i < len(prog); i++ {\n\t\tc := prog[i]\n\t\tif c <= ' ' || (c == '\"' && i == 0) {\n\t\t\t// Force quotes for not only the ASCII space and tab as described in the\n\t\t\t// MSDN article, but also ASCII control characters.\n\t\t\t// The documentation for CommandLineToArgvW doesn't say what happens when\n\t\t\t// the first argument is not a valid program name, but it empirically\n\t\t\t// seems to drop unquoted control characters.\n\t\t\tmustQuote = true\n\t\t\tbreak\n\t\t}\n\t}\n\tvar commandLine []byte\n\tif mustQuote {\n\t\tcommandLine = make([]byte, 0, len(prog)+2)\n\t\tcommandLine = append(commandLine, '\"')\n\t\tfor i := 0; i < len(prog); i++ {\n\t\t\tc := prog[i]\n\t\t\tif c == '\"' {\n\t\t\t\t// This quote would interfere with our surrounding quotes.\n\t\t\t\t// We have no way to report an error, so just strip out\n\t\t\t\t// the offending character instead.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcommandLine = append(commandLine, c)\n\t\t}\n\t\tcommandLine = append(commandLine, '\"')\n\t} else {\n\t\tif len(args) == 1 {\n\t\t\t// args[0] is a valid command line representing itself.\n\t\t\t// No need to allocate a new slice or string for it.\n\t\t\treturn prog\n\t\t}\n\t\tcommandLine = []byte(prog)\n\t}\n\n\tfor _, arg := range args[1:] {\n\t\tcommandLine = append(commandLine, ' ')\n\t\t// TODO(bcmills): since we're already appending to a slice, it would be nice\n\t\t// to avoid the intermediate allocations of EscapeArg.\n\t\t// Perhaps we can factor out an appendEscapedArg function.\n\t\tcommandLine = append(commandLine, EscapeArg(arg)...)\n\t}\n\treturn string(commandLine)\n}\n\n// DecomposeCommandLine breaks apart its argument command line into unescaped parts using CommandLineToArgv,\n// as gathered from GetCommandLine, QUERY_SERVICE_CONFIG's BinaryPathName argument, or elsewhere that\n// command lines are passed around.\n// DecomposeCommandLine returns an error if commandLine contains NUL.\nfunc DecomposeCommandLine(commandLine string) ([]string, error) {\n\tif len(commandLine) == 0 {\n\t\treturn []string{}, nil\n\t}\n\tutf16CommandLine, err := UTF16FromString(commandLine)\n\tif err != nil {\n\t\treturn nil, errorspkg.New(\"string with NUL passed to DecomposeCommandLine\")\n\t}\n\tvar argc int32\n\targv, err := commandLineToArgv(&utf16CommandLine[0], &argc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(argv)))\n\n\tvar args []string\n\tfor _, p := range unsafe.Slice(argv, argc) {\n\t\targs = append(args, UTF16PtrToString(p))\n\t}\n\treturn args, nil\n}\n\n// CommandLineToArgv parses a Unicode command line string and sets\n// argc to the number of parsed arguments.\n//\n// The returned memory should be freed using a single call to LocalFree.\n//\n// Note that although the return type of CommandLineToArgv indicates 8192\n// entries of up to 8192 characters each, the actual count of parsed arguments\n// may exceed 8192, and the documentation for CommandLineToArgvW does not mention\n// any bound on the lengths of the individual argument strings.\n// (See https://go.dev/issue/63236.)\nfunc CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {\n\targp, err := commandLineToArgv(cmd, argc)\n\targv = (*[8192]*[8192]uint16)(unsafe.Pointer(argp))\n\treturn argv, err\n}\n\nfunc CloseOnExec(fd Handle) {\n\tSetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0)\n}\n\n// FullPath retrieves the full path of the specified file.\nfunc FullPath(name string) (path string, err error) {\n\tp, err := UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := uint32(100)\n\tfor {\n\t\tbuf := make([]uint16, n)\n\t\tn, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif n <= uint32(len(buf)) {\n\t\t\treturn UTF16ToString(buf[:n]), nil\n\t\t}\n\t}\n}\n\n// NewProcThreadAttributeList allocates a new ProcThreadAttributeListContainer, with the requested maximum number of attributes.\nfunc NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeListContainer, error) {\n\tvar size uintptr\n\terr := initializeProcThreadAttributeList(nil, maxAttrCount, 0, &size)\n\tif err != ERROR_INSUFFICIENT_BUFFER {\n\t\tif err == nil {\n\t\t\treturn nil, errorspkg.New(\"unable to query buffer size from InitializeProcThreadAttributeList\")\n\t\t}\n\t\treturn nil, err\n\t}\n\talloc, err := LocalAlloc(LMEM_FIXED, uint32(size))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// size is guaranteed to be ≥1 by InitializeProcThreadAttributeList.\n\tal := &ProcThreadAttributeListContainer{data: (*ProcThreadAttributeList)(unsafe.Pointer(alloc))}\n\terr = initializeProcThreadAttributeList(al.data, maxAttrCount, 0, &size)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn al, err\n}\n\n// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute.\nfunc (al *ProcThreadAttributeListContainer) Update(attribute uintptr, value unsafe.Pointer, size uintptr) error {\n\tal.pointers = append(al.pointers, value)\n\treturn updateProcThreadAttribute(al.data, 0, attribute, value, size, nil, nil)\n}\n\n// Delete frees ProcThreadAttributeList's resources.\nfunc (al *ProcThreadAttributeListContainer) Delete() {\n\tdeleteProcThreadAttributeList(al.data)\n\tLocalFree(Handle(unsafe.Pointer(al.data)))\n\tal.data = nil\n\tal.pointers = nil\n}\n\n// List returns the actual ProcThreadAttributeList to be passed to StartupInfoEx.\nfunc (al *ProcThreadAttributeListContainer) List() *ProcThreadAttributeList {\n\treturn al.data\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/memory_windows.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nconst (\n\tMEM_COMMIT      = 0x00001000\n\tMEM_RESERVE     = 0x00002000\n\tMEM_DECOMMIT    = 0x00004000\n\tMEM_RELEASE     = 0x00008000\n\tMEM_RESET       = 0x00080000\n\tMEM_TOP_DOWN    = 0x00100000\n\tMEM_WRITE_WATCH = 0x00200000\n\tMEM_PHYSICAL    = 0x00400000\n\tMEM_RESET_UNDO  = 0x01000000\n\tMEM_LARGE_PAGES = 0x20000000\n\n\tPAGE_NOACCESS          = 0x00000001\n\tPAGE_READONLY          = 0x00000002\n\tPAGE_READWRITE         = 0x00000004\n\tPAGE_WRITECOPY         = 0x00000008\n\tPAGE_EXECUTE           = 0x00000010\n\tPAGE_EXECUTE_READ      = 0x00000020\n\tPAGE_EXECUTE_READWRITE = 0x00000040\n\tPAGE_EXECUTE_WRITECOPY = 0x00000080\n\tPAGE_GUARD             = 0x00000100\n\tPAGE_NOCACHE           = 0x00000200\n\tPAGE_WRITECOMBINE      = 0x00000400\n\tPAGE_TARGETS_INVALID   = 0x40000000\n\tPAGE_TARGETS_NO_UPDATE = 0x40000000\n\n\tQUOTA_LIMITS_HARDWS_MIN_DISABLE = 0x00000002\n\tQUOTA_LIMITS_HARDWS_MIN_ENABLE  = 0x00000001\n\tQUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008\n\tQUOTA_LIMITS_HARDWS_MAX_ENABLE  = 0x00000004\n)\n\ntype MemoryBasicInformation struct {\n\tBaseAddress       uintptr\n\tAllocationBase    uintptr\n\tAllocationProtect uint32\n\tPartitionId       uint16\n\tRegionSize        uintptr\n\tState             uint32\n\tProtect           uint32\n\tType              uint32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/mkerrors.bash",
    "content": "#!/bin/bash\n\n# Copyright 2019 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\nset -e\nshopt -s nullglob\n\nwinerror=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)\"\n[[ -n $winerror ]] || { echo \"Unable to find winerror.h\" >&2; exit 1; }\nntstatus=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/shared/ntstatus.h | sort -Vr | head -n 1)\"\n[[ -n $ntstatus ]] || { echo \"Unable to find ntstatus.h\" >&2; exit 1; }\n\ndeclare -A errors\n\n{\n\techo \"// Code generated by 'mkerrors.bash'; DO NOT EDIT.\"\n\techo\n\techo \"package windows\"\n\techo \"import \\\"syscall\\\"\"\n\techo \"const (\"\n\n\twhile read -r line; do\n\t\tunset vtype\n\t\tif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +([A-Z0-9_]+\\()?([A-Z][A-Z0-9_]+k?)\\)? ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\telif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +([A-Z0-9_]+\\()?((0x)?[0-9A-Fa-f]+)L?\\)? ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\t\tvtype=\"${BASH_REMATCH[2]}\"\n\t\telif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +\\(\\(([A-Z]+)\\)((0x)?[0-9A-Fa-f]+)L?\\) ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\t\tvtype=\"${BASH_REMATCH[2]}\"\n\t\telse\n\t\t\tcontinue\n\t\tfi\n\t\t[[ -n $key && -n $value ]] || continue\n\t\t[[ -z ${errors[\"$key\"]} ]] || continue\n\t\terrors[\"$key\"]=\"$value\"\n\t\tif [[ -v vtype ]]; then\n\t\t\tif [[ $key == FACILITY_* || $key == NO_ERROR ]]; then\n\t\t\t\tvtype=\"\"\n\t\t\telif [[ $vtype == *HANDLE* || $vtype == *HRESULT* ]]; then\n\t\t\t\tvtype=\"Handle\"\n\t\t\telse\n\t\t\t\tvtype=\"syscall.Errno\"\n\t\t\tfi\n\t\t\tlast_vtype=\"$vtype\"\n\t\telse\n\t\t\tvtype=\"\"\n\t\t\tif [[ $last_vtype == Handle && $value == NO_ERROR ]]; then\n\t\t\t\tvalue=\"S_OK\"\n\t\t\telif [[ $last_vtype == syscall.Errno && $value == NO_ERROR ]]; then\n\t\t\t\tvalue=\"ERROR_SUCCESS\"\n\t\t\tfi\n\t\tfi\n\n\t\techo \"$key $vtype = $value\"\n\tdone < \"$winerror\"\n\n\twhile read -r line; do\n\t\t[[ $line =~ ^#define\\ (STATUS_[^\\s]+)\\ +\\(\\(NTSTATUS\\)((0x)?[0-9a-fA-F]+)L?\\) ]] || continue\n\t\techo \"${BASH_REMATCH[1]} NTStatus = ${BASH_REMATCH[2]}\"\n\tdone < \"$ntstatus\"\n\n\techo \")\"\n} | gofmt > \"zerrors_windows.go\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/mkknownfolderids.bash",
    "content": "#!/bin/bash\n\n# Copyright 2019 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\nset -e\nshopt -s nullglob\n\nknownfolders=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/um/KnownFolders.h | sort -Vr | head -n 1)\"\n[[ -n $knownfolders ]] || { echo \"Unable to find KnownFolders.h\" >&2; exit 1; }\n\n{\n\techo \"// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT.\"\n\techo\n\techo \"package windows\"\n\techo \"type KNOWNFOLDERID GUID\"\n\techo \"var (\"\n\twhile read -r line; do\n\t\t[[ $line =~ DEFINE_KNOWN_FOLDER\\((FOLDERID_[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+),[\\t\\ ]*(0x[^,]+)\\) ]] || continue\n\t\tprintf \"%s = &KNOWNFOLDERID{0x%08x, 0x%04x, 0x%04x, [8]byte{0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}}\\n\" \\\n\t\t\t\"${BASH_REMATCH[1]}\" $(( \"${BASH_REMATCH[2]}\" )) $(( \"${BASH_REMATCH[3]}\" )) $(( \"${BASH_REMATCH[4]}\" )) \\\n\t\t\t$(( \"${BASH_REMATCH[5]}\" )) $(( \"${BASH_REMATCH[6]}\" )) $(( \"${BASH_REMATCH[7]}\" )) $(( \"${BASH_REMATCH[8]}\" )) \\\n\t\t\t$(( \"${BASH_REMATCH[9]}\" )) $(( \"${BASH_REMATCH[10]}\" )) $(( \"${BASH_REMATCH[11]}\" )) $(( \"${BASH_REMATCH[12]}\" ))\n\tdone < \"$knownfolders\"\n\techo \")\"\n} | gofmt > \"zknownfolderids_windows.go\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/mksyscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build generate\n\npackage windows\n\n//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go setupapi_windows.go\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/race.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows && race\n\npackage windows\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\nconst raceenabled = true\n\nfunc raceAcquire(addr unsafe.Pointer) {\n\truntime.RaceAcquire(addr)\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n\truntime.RaceReleaseMerge(addr)\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n\truntime.RaceReadRange(addr, len)\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n\truntime.RaceWriteRange(addr, len)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/race0.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows && !race\n\npackage windows\n\nimport (\n\t\"unsafe\"\n)\n\nconst raceenabled = false\n\nfunc raceAcquire(addr unsafe.Pointer) {\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/security_windows.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst (\n\tNameUnknown          = 0\n\tNameFullyQualifiedDN = 1\n\tNameSamCompatible    = 2\n\tNameDisplay          = 3\n\tNameUniqueId         = 6\n\tNameCanonical        = 7\n\tNameUserPrincipal    = 8\n\tNameCanonicalEx      = 9\n\tNameServicePrincipal = 10\n\tNameDnsDomain        = 12\n)\n\n// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.\n// http://blogs.msdn.com/b/drnick/archive/2007/12/19/windows-and-upn-format-credentials.aspx\n//sys\tTranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.TranslateNameW\n//sys\tGetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.GetUserNameExW\n\n// TranslateAccountName converts a directory service\n// object name from one format to another.\nfunc TranslateAccountName(username string, from, to uint32, initSize int) (string, error) {\n\tu, e := UTF16PtrFromString(username)\n\tif e != nil {\n\t\treturn \"\", e\n\t}\n\tn := uint32(50)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\te = TranslateName(u, from, to, &b[0], &n)\n\t\tif e == nil {\n\t\t\treturn UTF16ToString(b[:n]), nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn \"\", e\n\t\t}\n\t}\n}\n\nconst (\n\t// do not reorder\n\tNetSetupUnknownStatus = iota\n\tNetSetupUnjoined\n\tNetSetupWorkgroupName\n\tNetSetupDomainName\n)\n\ntype UserInfo10 struct {\n\tName       *uint16\n\tComment    *uint16\n\tUsrComment *uint16\n\tFullName   *uint16\n}\n\n//sys\tNetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) = netapi32.NetUserGetInfo\n//sys\tNetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) = netapi32.NetGetJoinInformation\n//sys\tNetApiBufferFree(buf *byte) (neterr error) = netapi32.NetApiBufferFree\n\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": "vendor/golang.org/x/sys/windows/service.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nconst (\n\tSC_MANAGER_CONNECT            = 1\n\tSC_MANAGER_CREATE_SERVICE     = 2\n\tSC_MANAGER_ENUMERATE_SERVICE  = 4\n\tSC_MANAGER_LOCK               = 8\n\tSC_MANAGER_QUERY_LOCK_STATUS  = 16\n\tSC_MANAGER_MODIFY_BOOT_CONFIG = 32\n\tSC_MANAGER_ALL_ACCESS         = 0xf003f\n)\n\nconst (\n\tSERVICE_KERNEL_DRIVER       = 1\n\tSERVICE_FILE_SYSTEM_DRIVER  = 2\n\tSERVICE_ADAPTER             = 4\n\tSERVICE_RECOGNIZER_DRIVER   = 8\n\tSERVICE_WIN32_OWN_PROCESS   = 16\n\tSERVICE_WIN32_SHARE_PROCESS = 32\n\tSERVICE_WIN32               = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS\n\tSERVICE_INTERACTIVE_PROCESS = 256\n\tSERVICE_DRIVER              = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER\n\tSERVICE_TYPE_ALL            = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS\n\n\tSERVICE_BOOT_START   = 0\n\tSERVICE_SYSTEM_START = 1\n\tSERVICE_AUTO_START   = 2\n\tSERVICE_DEMAND_START = 3\n\tSERVICE_DISABLED     = 4\n\n\tSERVICE_ERROR_IGNORE   = 0\n\tSERVICE_ERROR_NORMAL   = 1\n\tSERVICE_ERROR_SEVERE   = 2\n\tSERVICE_ERROR_CRITICAL = 3\n\n\tSC_STATUS_PROCESS_INFO = 0\n\n\tSC_ACTION_NONE        = 0\n\tSC_ACTION_RESTART     = 1\n\tSC_ACTION_REBOOT      = 2\n\tSC_ACTION_RUN_COMMAND = 3\n\n\tSERVICE_STOPPED          = 1\n\tSERVICE_START_PENDING    = 2\n\tSERVICE_STOP_PENDING     = 3\n\tSERVICE_RUNNING          = 4\n\tSERVICE_CONTINUE_PENDING = 5\n\tSERVICE_PAUSE_PENDING    = 6\n\tSERVICE_PAUSED           = 7\n\tSERVICE_NO_CHANGE        = 0xffffffff\n\n\tSERVICE_ACCEPT_STOP                  = 1\n\tSERVICE_ACCEPT_PAUSE_CONTINUE        = 2\n\tSERVICE_ACCEPT_SHUTDOWN              = 4\n\tSERVICE_ACCEPT_PARAMCHANGE           = 8\n\tSERVICE_ACCEPT_NETBINDCHANGE         = 16\n\tSERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32\n\tSERVICE_ACCEPT_POWEREVENT            = 64\n\tSERVICE_ACCEPT_SESSIONCHANGE         = 128\n\tSERVICE_ACCEPT_PRESHUTDOWN           = 256\n\n\tSERVICE_CONTROL_STOP                  = 1\n\tSERVICE_CONTROL_PAUSE                 = 2\n\tSERVICE_CONTROL_CONTINUE              = 3\n\tSERVICE_CONTROL_INTERROGATE           = 4\n\tSERVICE_CONTROL_SHUTDOWN              = 5\n\tSERVICE_CONTROL_PARAMCHANGE           = 6\n\tSERVICE_CONTROL_NETBINDADD            = 7\n\tSERVICE_CONTROL_NETBINDREMOVE         = 8\n\tSERVICE_CONTROL_NETBINDENABLE         = 9\n\tSERVICE_CONTROL_NETBINDDISABLE        = 10\n\tSERVICE_CONTROL_DEVICEEVENT           = 11\n\tSERVICE_CONTROL_HARDWAREPROFILECHANGE = 12\n\tSERVICE_CONTROL_POWEREVENT            = 13\n\tSERVICE_CONTROL_SESSIONCHANGE         = 14\n\tSERVICE_CONTROL_PRESHUTDOWN           = 15\n\n\tSERVICE_ACTIVE    = 1\n\tSERVICE_INACTIVE  = 2\n\tSERVICE_STATE_ALL = 3\n\n\tSERVICE_QUERY_CONFIG         = 1\n\tSERVICE_CHANGE_CONFIG        = 2\n\tSERVICE_QUERY_STATUS         = 4\n\tSERVICE_ENUMERATE_DEPENDENTS = 8\n\tSERVICE_START                = 16\n\tSERVICE_STOP                 = 32\n\tSERVICE_PAUSE_CONTINUE       = 64\n\tSERVICE_INTERROGATE          = 128\n\tSERVICE_USER_DEFINED_CONTROL = 256\n\tSERVICE_ALL_ACCESS           = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL\n\n\tSERVICE_RUNS_IN_SYSTEM_PROCESS = 1\n\n\tSERVICE_CONFIG_DESCRIPTION              = 1\n\tSERVICE_CONFIG_FAILURE_ACTIONS          = 2\n\tSERVICE_CONFIG_DELAYED_AUTO_START_INFO  = 3\n\tSERVICE_CONFIG_FAILURE_ACTIONS_FLAG     = 4\n\tSERVICE_CONFIG_SERVICE_SID_INFO         = 5\n\tSERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 6\n\tSERVICE_CONFIG_PRESHUTDOWN_INFO         = 7\n\tSERVICE_CONFIG_TRIGGER_INFO             = 8\n\tSERVICE_CONFIG_PREFERRED_NODE           = 9\n\tSERVICE_CONFIG_LAUNCH_PROTECTED         = 12\n\n\tSERVICE_SID_TYPE_NONE         = 0\n\tSERVICE_SID_TYPE_UNRESTRICTED = 1\n\tSERVICE_SID_TYPE_RESTRICTED   = 2 | SERVICE_SID_TYPE_UNRESTRICTED\n\n\tSC_ENUM_PROCESS_INFO = 0\n\n\tSERVICE_NOTIFY_STATUS_CHANGE    = 2\n\tSERVICE_NOTIFY_STOPPED          = 0x00000001\n\tSERVICE_NOTIFY_START_PENDING    = 0x00000002\n\tSERVICE_NOTIFY_STOP_PENDING     = 0x00000004\n\tSERVICE_NOTIFY_RUNNING          = 0x00000008\n\tSERVICE_NOTIFY_CONTINUE_PENDING = 0x00000010\n\tSERVICE_NOTIFY_PAUSE_PENDING    = 0x00000020\n\tSERVICE_NOTIFY_PAUSED           = 0x00000040\n\tSERVICE_NOTIFY_CREATED          = 0x00000080\n\tSERVICE_NOTIFY_DELETED          = 0x00000100\n\tSERVICE_NOTIFY_DELETE_PENDING   = 0x00000200\n\n\tSC_EVENT_DATABASE_CHANGE = 0\n\tSC_EVENT_PROPERTY_CHANGE = 1\n\tSC_EVENT_STATUS_CHANGE   = 2\n\n\tSERVICE_START_REASON_DEMAND             = 0x00000001\n\tSERVICE_START_REASON_AUTO               = 0x00000002\n\tSERVICE_START_REASON_TRIGGER            = 0x00000004\n\tSERVICE_START_REASON_RESTART_ON_FAILURE = 0x00000008\n\tSERVICE_START_REASON_DELAYEDAUTO        = 0x00000010\n\n\tSERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON = 1\n)\n\ntype ENUM_SERVICE_STATUS struct {\n\tServiceName   *uint16\n\tDisplayName   *uint16\n\tServiceStatus SERVICE_STATUS\n}\n\ntype SERVICE_STATUS struct {\n\tServiceType             uint32\n\tCurrentState            uint32\n\tControlsAccepted        uint32\n\tWin32ExitCode           uint32\n\tServiceSpecificExitCode uint32\n\tCheckPoint              uint32\n\tWaitHint                uint32\n}\n\ntype SERVICE_TABLE_ENTRY struct {\n\tServiceName *uint16\n\tServiceProc uintptr\n}\n\ntype QUERY_SERVICE_CONFIG struct {\n\tServiceType      uint32\n\tStartType        uint32\n\tErrorControl     uint32\n\tBinaryPathName   *uint16\n\tLoadOrderGroup   *uint16\n\tTagId            uint32\n\tDependencies     *uint16\n\tServiceStartName *uint16\n\tDisplayName      *uint16\n}\n\ntype SERVICE_DESCRIPTION struct {\n\tDescription *uint16\n}\n\ntype SERVICE_DELAYED_AUTO_START_INFO struct {\n\tIsDelayedAutoStartUp uint32\n}\n\ntype SERVICE_STATUS_PROCESS struct {\n\tServiceType             uint32\n\tCurrentState            uint32\n\tControlsAccepted        uint32\n\tWin32ExitCode           uint32\n\tServiceSpecificExitCode uint32\n\tCheckPoint              uint32\n\tWaitHint                uint32\n\tProcessId               uint32\n\tServiceFlags            uint32\n}\n\ntype ENUM_SERVICE_STATUS_PROCESS struct {\n\tServiceName          *uint16\n\tDisplayName          *uint16\n\tServiceStatusProcess SERVICE_STATUS_PROCESS\n}\n\ntype SERVICE_NOTIFY struct {\n\tVersion               uint32\n\tNotifyCallback        uintptr\n\tContext               uintptr\n\tNotificationStatus    uint32\n\tServiceStatus         SERVICE_STATUS_PROCESS\n\tNotificationTriggered uint32\n\tServiceNames          *uint16\n}\n\ntype SERVICE_FAILURE_ACTIONS struct {\n\tResetPeriod  uint32\n\tRebootMsg    *uint16\n\tCommand      *uint16\n\tActionsCount uint32\n\tActions      *SC_ACTION\n}\n\ntype SERVICE_FAILURE_ACTIONS_FLAG struct {\n\tFailureActionsOnNonCrashFailures int32\n}\n\ntype SC_ACTION struct {\n\tType  uint32\n\tDelay uint32\n}\n\ntype QUERY_SERVICE_LOCK_STATUS struct {\n\tIsLocked     uint32\n\tLockOwner    *uint16\n\tLockDuration uint32\n}\n\n//sys\tOpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW\n//sys\tCloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle\n//sys\tCreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW\n//sys\tOpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW\n//sys\tDeleteService(service Handle) (err error) = advapi32.DeleteService\n//sys\tStartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW\n//sys\tQueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus\n//sys\tQueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceLockStatusW\n//sys\tControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService\n//sys\tStartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW\n//sys\tSetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus\n//sys\tChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW\n//sys\tQueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW\n//sys\tChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W\n//sys\tQueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W\n//sys\tEnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW\n//sys\tQueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx\n//sys\tNotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW\n//sys\tSubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications?\n//sys\tUnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications?\n//sys\tRegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) = advapi32.RegisterServiceCtrlHandlerExW\n//sys\tQueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) = advapi32.QueryServiceDynamicInformation?\n//sys\tEnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) = advapi32.EnumDependentServicesW\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/setupapi_windows.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// This file contains functions that wrap SetupAPI.dll and CfgMgr32.dll,\n// core system functions for managing hardware devices, drivers, and the PnP tree.\n// Information about these APIs can be found at:\n//     https://docs.microsoft.com/en-us/windows-hardware/drivers/install/setupapi\n//     https://docs.microsoft.com/en-us/windows/win32/devinst/cfgmgr32-\n\nconst (\n\tERROR_EXPECTED_SECTION_NAME                  Errno = 0x20000000 | 0xC0000000 | 0\n\tERROR_BAD_SECTION_NAME_LINE                  Errno = 0x20000000 | 0xC0000000 | 1\n\tERROR_SECTION_NAME_TOO_LONG                  Errno = 0x20000000 | 0xC0000000 | 2\n\tERROR_GENERAL_SYNTAX                         Errno = 0x20000000 | 0xC0000000 | 3\n\tERROR_WRONG_INF_STYLE                        Errno = 0x20000000 | 0xC0000000 | 0x100\n\tERROR_SECTION_NOT_FOUND                      Errno = 0x20000000 | 0xC0000000 | 0x101\n\tERROR_LINE_NOT_FOUND                         Errno = 0x20000000 | 0xC0000000 | 0x102\n\tERROR_NO_BACKUP                              Errno = 0x20000000 | 0xC0000000 | 0x103\n\tERROR_NO_ASSOCIATED_CLASS                    Errno = 0x20000000 | 0xC0000000 | 0x200\n\tERROR_CLASS_MISMATCH                         Errno = 0x20000000 | 0xC0000000 | 0x201\n\tERROR_DUPLICATE_FOUND                        Errno = 0x20000000 | 0xC0000000 | 0x202\n\tERROR_NO_DRIVER_SELECTED                     Errno = 0x20000000 | 0xC0000000 | 0x203\n\tERROR_KEY_DOES_NOT_EXIST                     Errno = 0x20000000 | 0xC0000000 | 0x204\n\tERROR_INVALID_DEVINST_NAME                   Errno = 0x20000000 | 0xC0000000 | 0x205\n\tERROR_INVALID_CLASS                          Errno = 0x20000000 | 0xC0000000 | 0x206\n\tERROR_DEVINST_ALREADY_EXISTS                 Errno = 0x20000000 | 0xC0000000 | 0x207\n\tERROR_DEVINFO_NOT_REGISTERED                 Errno = 0x20000000 | 0xC0000000 | 0x208\n\tERROR_INVALID_REG_PROPERTY                   Errno = 0x20000000 | 0xC0000000 | 0x209\n\tERROR_NO_INF                                 Errno = 0x20000000 | 0xC0000000 | 0x20A\n\tERROR_NO_SUCH_DEVINST                        Errno = 0x20000000 | 0xC0000000 | 0x20B\n\tERROR_CANT_LOAD_CLASS_ICON                   Errno = 0x20000000 | 0xC0000000 | 0x20C\n\tERROR_INVALID_CLASS_INSTALLER                Errno = 0x20000000 | 0xC0000000 | 0x20D\n\tERROR_DI_DO_DEFAULT                          Errno = 0x20000000 | 0xC0000000 | 0x20E\n\tERROR_DI_NOFILECOPY                          Errno = 0x20000000 | 0xC0000000 | 0x20F\n\tERROR_INVALID_HWPROFILE                      Errno = 0x20000000 | 0xC0000000 | 0x210\n\tERROR_NO_DEVICE_SELECTED                     Errno = 0x20000000 | 0xC0000000 | 0x211\n\tERROR_DEVINFO_LIST_LOCKED                    Errno = 0x20000000 | 0xC0000000 | 0x212\n\tERROR_DEVINFO_DATA_LOCKED                    Errno = 0x20000000 | 0xC0000000 | 0x213\n\tERROR_DI_BAD_PATH                            Errno = 0x20000000 | 0xC0000000 | 0x214\n\tERROR_NO_CLASSINSTALL_PARAMS                 Errno = 0x20000000 | 0xC0000000 | 0x215\n\tERROR_FILEQUEUE_LOCKED                       Errno = 0x20000000 | 0xC0000000 | 0x216\n\tERROR_BAD_SERVICE_INSTALLSECT                Errno = 0x20000000 | 0xC0000000 | 0x217\n\tERROR_NO_CLASS_DRIVER_LIST                   Errno = 0x20000000 | 0xC0000000 | 0x218\n\tERROR_NO_ASSOCIATED_SERVICE                  Errno = 0x20000000 | 0xC0000000 | 0x219\n\tERROR_NO_DEFAULT_DEVICE_INTERFACE            Errno = 0x20000000 | 0xC0000000 | 0x21A\n\tERROR_DEVICE_INTERFACE_ACTIVE                Errno = 0x20000000 | 0xC0000000 | 0x21B\n\tERROR_DEVICE_INTERFACE_REMOVED               Errno = 0x20000000 | 0xC0000000 | 0x21C\n\tERROR_BAD_INTERFACE_INSTALLSECT              Errno = 0x20000000 | 0xC0000000 | 0x21D\n\tERROR_NO_SUCH_INTERFACE_CLASS                Errno = 0x20000000 | 0xC0000000 | 0x21E\n\tERROR_INVALID_REFERENCE_STRING               Errno = 0x20000000 | 0xC0000000 | 0x21F\n\tERROR_INVALID_MACHINENAME                    Errno = 0x20000000 | 0xC0000000 | 0x220\n\tERROR_REMOTE_COMM_FAILURE                    Errno = 0x20000000 | 0xC0000000 | 0x221\n\tERROR_MACHINE_UNAVAILABLE                    Errno = 0x20000000 | 0xC0000000 | 0x222\n\tERROR_NO_CONFIGMGR_SERVICES                  Errno = 0x20000000 | 0xC0000000 | 0x223\n\tERROR_INVALID_PROPPAGE_PROVIDER              Errno = 0x20000000 | 0xC0000000 | 0x224\n\tERROR_NO_SUCH_DEVICE_INTERFACE               Errno = 0x20000000 | 0xC0000000 | 0x225\n\tERROR_DI_POSTPROCESSING_REQUIRED             Errno = 0x20000000 | 0xC0000000 | 0x226\n\tERROR_INVALID_COINSTALLER                    Errno = 0x20000000 | 0xC0000000 | 0x227\n\tERROR_NO_COMPAT_DRIVERS                      Errno = 0x20000000 | 0xC0000000 | 0x228\n\tERROR_NO_DEVICE_ICON                         Errno = 0x20000000 | 0xC0000000 | 0x229\n\tERROR_INVALID_INF_LOGCONFIG                  Errno = 0x20000000 | 0xC0000000 | 0x22A\n\tERROR_DI_DONT_INSTALL                        Errno = 0x20000000 | 0xC0000000 | 0x22B\n\tERROR_INVALID_FILTER_DRIVER                  Errno = 0x20000000 | 0xC0000000 | 0x22C\n\tERROR_NON_WINDOWS_NT_DRIVER                  Errno = 0x20000000 | 0xC0000000 | 0x22D\n\tERROR_NON_WINDOWS_DRIVER                     Errno = 0x20000000 | 0xC0000000 | 0x22E\n\tERROR_NO_CATALOG_FOR_OEM_INF                 Errno = 0x20000000 | 0xC0000000 | 0x22F\n\tERROR_DEVINSTALL_QUEUE_NONNATIVE             Errno = 0x20000000 | 0xC0000000 | 0x230\n\tERROR_NOT_DISABLEABLE                        Errno = 0x20000000 | 0xC0000000 | 0x231\n\tERROR_CANT_REMOVE_DEVINST                    Errno = 0x20000000 | 0xC0000000 | 0x232\n\tERROR_INVALID_TARGET                         Errno = 0x20000000 | 0xC0000000 | 0x233\n\tERROR_DRIVER_NONNATIVE                       Errno = 0x20000000 | 0xC0000000 | 0x234\n\tERROR_IN_WOW64                               Errno = 0x20000000 | 0xC0000000 | 0x235\n\tERROR_SET_SYSTEM_RESTORE_POINT               Errno = 0x20000000 | 0xC0000000 | 0x236\n\tERROR_SCE_DISABLED                           Errno = 0x20000000 | 0xC0000000 | 0x238\n\tERROR_UNKNOWN_EXCEPTION                      Errno = 0x20000000 | 0xC0000000 | 0x239\n\tERROR_PNP_REGISTRY_ERROR                     Errno = 0x20000000 | 0xC0000000 | 0x23A\n\tERROR_REMOTE_REQUEST_UNSUPPORTED             Errno = 0x20000000 | 0xC0000000 | 0x23B\n\tERROR_NOT_AN_INSTALLED_OEM_INF               Errno = 0x20000000 | 0xC0000000 | 0x23C\n\tERROR_INF_IN_USE_BY_DEVICES                  Errno = 0x20000000 | 0xC0000000 | 0x23D\n\tERROR_DI_FUNCTION_OBSOLETE                   Errno = 0x20000000 | 0xC0000000 | 0x23E\n\tERROR_NO_AUTHENTICODE_CATALOG                Errno = 0x20000000 | 0xC0000000 | 0x23F\n\tERROR_AUTHENTICODE_DISALLOWED                Errno = 0x20000000 | 0xC0000000 | 0x240\n\tERROR_AUTHENTICODE_TRUSTED_PUBLISHER         Errno = 0x20000000 | 0xC0000000 | 0x241\n\tERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED     Errno = 0x20000000 | 0xC0000000 | 0x242\n\tERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED     Errno = 0x20000000 | 0xC0000000 | 0x243\n\tERROR_SIGNATURE_OSATTRIBUTE_MISMATCH         Errno = 0x20000000 | 0xC0000000 | 0x244\n\tERROR_ONLY_VALIDATE_VIA_AUTHENTICODE         Errno = 0x20000000 | 0xC0000000 | 0x245\n\tERROR_DEVICE_INSTALLER_NOT_READY             Errno = 0x20000000 | 0xC0000000 | 0x246\n\tERROR_DRIVER_STORE_ADD_FAILED                Errno = 0x20000000 | 0xC0000000 | 0x247\n\tERROR_DEVICE_INSTALL_BLOCKED                 Errno = 0x20000000 | 0xC0000000 | 0x248\n\tERROR_DRIVER_INSTALL_BLOCKED                 Errno = 0x20000000 | 0xC0000000 | 0x249\n\tERROR_WRONG_INF_TYPE                         Errno = 0x20000000 | 0xC0000000 | 0x24A\n\tERROR_FILE_HASH_NOT_IN_CATALOG               Errno = 0x20000000 | 0xC0000000 | 0x24B\n\tERROR_DRIVER_STORE_DELETE_FAILED             Errno = 0x20000000 | 0xC0000000 | 0x24C\n\tERROR_UNRECOVERABLE_STACK_OVERFLOW           Errno = 0x20000000 | 0xC0000000 | 0x300\n\tEXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW Errno = ERROR_UNRECOVERABLE_STACK_OVERFLOW\n\tERROR_NO_DEFAULT_INTERFACE_DEVICE            Errno = ERROR_NO_DEFAULT_DEVICE_INTERFACE\n\tERROR_INTERFACE_DEVICE_ACTIVE                Errno = ERROR_DEVICE_INTERFACE_ACTIVE\n\tERROR_INTERFACE_DEVICE_REMOVED               Errno = ERROR_DEVICE_INTERFACE_REMOVED\n\tERROR_NO_SUCH_INTERFACE_DEVICE               Errno = ERROR_NO_SUCH_DEVICE_INTERFACE\n)\n\nconst (\n\tMAX_DEVICE_ID_LEN   = 200\n\tMAX_DEVNODE_ID_LEN  = MAX_DEVICE_ID_LEN\n\tMAX_GUID_STRING_LEN = 39 // 38 chars + terminator null\n\tMAX_CLASS_NAME_LEN  = 32\n\tMAX_PROFILE_LEN     = 80\n\tMAX_CONFIG_VALUE    = 9999\n\tMAX_INSTANCE_VALUE  = 9999\n\tCONFIGMG_VERSION    = 0x0400\n)\n\n// Maximum string length constants\nconst (\n\tLINE_LEN                    = 256  // Windows 9x-compatible maximum for displayable strings coming from a device INF.\n\tMAX_INF_STRING_LENGTH       = 4096 // Actual maximum size of an INF string (including string substitutions).\n\tMAX_INF_SECTION_NAME_LENGTH = 255  // For Windows 9x compatibility, INF section names should be constrained to 32 characters.\n\tMAX_TITLE_LEN               = 60\n\tMAX_INSTRUCTION_LEN         = 256\n\tMAX_LABEL_LEN               = 30\n\tMAX_SERVICE_NAME_LEN        = 256\n\tMAX_SUBTITLE_LEN            = 256\n)\n\nconst (\n\t// SP_MAX_MACHINENAME_LENGTH defines maximum length of a machine name in the format expected by ConfigMgr32 CM_Connect_Machine (i.e., \"\\\\\\\\MachineName\\0\").\n\tSP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3\n)\n\n// HSPFILEQ is type for setup file queue\ntype HSPFILEQ uintptr\n\n// DevInfo holds reference to device information set\ntype DevInfo Handle\n\n// DEVINST is a handle usually recognized by cfgmgr32 APIs\ntype DEVINST uint32\n\n// DevInfoData is a device information structure (references a device instance that is a member of a device information set)\ntype DevInfoData struct {\n\tsize      uint32\n\tClassGUID GUID\n\tDevInst   DEVINST\n\t_         uintptr\n}\n\n// DevInfoListDetailData is a structure for detailed information on a device information set (used for SetupDiGetDeviceInfoListDetail which supersedes the functionality of SetupDiGetDeviceInfoListClass).\ntype DevInfoListDetailData struct {\n\tsize                uint32 // Use unsafeSizeOf method\n\tClassGUID           GUID\n\tRemoteMachineHandle Handle\n\tremoteMachineName   [SP_MAX_MACHINENAME_LENGTH]uint16\n}\n\nfunc (*DevInfoListDetailData) unsafeSizeOf() uint32 {\n\tif unsafe.Sizeof(uintptr(0)) == 4 {\n\t\t// Windows declares this with pshpack1.h\n\t\treturn uint32(unsafe.Offsetof(DevInfoListDetailData{}.remoteMachineName) + unsafe.Sizeof(DevInfoListDetailData{}.remoteMachineName))\n\t}\n\treturn uint32(unsafe.Sizeof(DevInfoListDetailData{}))\n}\n\nfunc (data *DevInfoListDetailData) RemoteMachineName() string {\n\treturn UTF16ToString(data.remoteMachineName[:])\n}\n\nfunc (data *DevInfoListDetailData) SetRemoteMachineName(remoteMachineName string) error {\n\tstr, err := UTF16FromString(remoteMachineName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.remoteMachineName[:], str)\n\treturn nil\n}\n\n// DI_FUNCTION is function type for device installer\ntype DI_FUNCTION uint32\n\nconst (\n\tDIF_SELECTDEVICE                   DI_FUNCTION = 0x00000001\n\tDIF_INSTALLDEVICE                  DI_FUNCTION = 0x00000002\n\tDIF_ASSIGNRESOURCES                DI_FUNCTION = 0x00000003\n\tDIF_PROPERTIES                     DI_FUNCTION = 0x00000004\n\tDIF_REMOVE                         DI_FUNCTION = 0x00000005\n\tDIF_FIRSTTIMESETUP                 DI_FUNCTION = 0x00000006\n\tDIF_FOUNDDEVICE                    DI_FUNCTION = 0x00000007\n\tDIF_SELECTCLASSDRIVERS             DI_FUNCTION = 0x00000008\n\tDIF_VALIDATECLASSDRIVERS           DI_FUNCTION = 0x00000009\n\tDIF_INSTALLCLASSDRIVERS            DI_FUNCTION = 0x0000000A\n\tDIF_CALCDISKSPACE                  DI_FUNCTION = 0x0000000B\n\tDIF_DESTROYPRIVATEDATA             DI_FUNCTION = 0x0000000C\n\tDIF_VALIDATEDRIVER                 DI_FUNCTION = 0x0000000D\n\tDIF_DETECT                         DI_FUNCTION = 0x0000000F\n\tDIF_INSTALLWIZARD                  DI_FUNCTION = 0x00000010\n\tDIF_DESTROYWIZARDDATA              DI_FUNCTION = 0x00000011\n\tDIF_PROPERTYCHANGE                 DI_FUNCTION = 0x00000012\n\tDIF_ENABLECLASS                    DI_FUNCTION = 0x00000013\n\tDIF_DETECTVERIFY                   DI_FUNCTION = 0x00000014\n\tDIF_INSTALLDEVICEFILES             DI_FUNCTION = 0x00000015\n\tDIF_UNREMOVE                       DI_FUNCTION = 0x00000016\n\tDIF_SELECTBESTCOMPATDRV            DI_FUNCTION = 0x00000017\n\tDIF_ALLOW_INSTALL                  DI_FUNCTION = 0x00000018\n\tDIF_REGISTERDEVICE                 DI_FUNCTION = 0x00000019\n\tDIF_NEWDEVICEWIZARD_PRESELECT      DI_FUNCTION = 0x0000001A\n\tDIF_NEWDEVICEWIZARD_SELECT         DI_FUNCTION = 0x0000001B\n\tDIF_NEWDEVICEWIZARD_PREANALYZE     DI_FUNCTION = 0x0000001C\n\tDIF_NEWDEVICEWIZARD_POSTANALYZE    DI_FUNCTION = 0x0000001D\n\tDIF_NEWDEVICEWIZARD_FINISHINSTALL  DI_FUNCTION = 0x0000001E\n\tDIF_INSTALLINTERFACES              DI_FUNCTION = 0x00000020\n\tDIF_DETECTCANCEL                   DI_FUNCTION = 0x00000021\n\tDIF_REGISTER_COINSTALLERS          DI_FUNCTION = 0x00000022\n\tDIF_ADDPROPERTYPAGE_ADVANCED       DI_FUNCTION = 0x00000023\n\tDIF_ADDPROPERTYPAGE_BASIC          DI_FUNCTION = 0x00000024\n\tDIF_TROUBLESHOOTER                 DI_FUNCTION = 0x00000026\n\tDIF_POWERMESSAGEWAKE               DI_FUNCTION = 0x00000027\n\tDIF_ADDREMOTEPROPERTYPAGE_ADVANCED DI_FUNCTION = 0x00000028\n\tDIF_UPDATEDRIVER_UI                DI_FUNCTION = 0x00000029\n\tDIF_FINISHINSTALL_ACTION           DI_FUNCTION = 0x0000002A\n)\n\n// DevInstallParams is device installation parameters structure (associated with a particular device information element, or globally with a device information set)\ntype DevInstallParams struct {\n\tsize                     uint32\n\tFlags                    DI_FLAGS\n\tFlagsEx                  DI_FLAGSEX\n\thwndParent               uintptr\n\tInstallMsgHandler        uintptr\n\tInstallMsgHandlerContext uintptr\n\tFileQueue                HSPFILEQ\n\t_                        uintptr\n\t_                        uint32\n\tdriverPath               [MAX_PATH]uint16\n}\n\nfunc (params *DevInstallParams) DriverPath() string {\n\treturn UTF16ToString(params.driverPath[:])\n}\n\nfunc (params *DevInstallParams) SetDriverPath(driverPath string) error {\n\tstr, err := UTF16FromString(driverPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(params.driverPath[:], str)\n\treturn nil\n}\n\n// DI_FLAGS is SP_DEVINSTALL_PARAMS.Flags values\ntype DI_FLAGS uint32\n\nconst (\n\t// Flags for choosing a device\n\tDI_SHOWOEM       DI_FLAGS = 0x00000001 // support Other... button\n\tDI_SHOWCOMPAT    DI_FLAGS = 0x00000002 // show compatibility list\n\tDI_SHOWCLASS     DI_FLAGS = 0x00000004 // show class list\n\tDI_SHOWALL       DI_FLAGS = 0x00000007 // both class & compat list shown\n\tDI_NOVCP         DI_FLAGS = 0x00000008 // don't create a new copy queue--use caller-supplied FileQueue\n\tDI_DIDCOMPAT     DI_FLAGS = 0x00000010 // Searched for compatible devices\n\tDI_DIDCLASS      DI_FLAGS = 0x00000020 // Searched for class devices\n\tDI_AUTOASSIGNRES DI_FLAGS = 0x00000040 // No UI for resources if possible\n\n\t// Flags returned by DiInstallDevice to indicate need to reboot/restart\n\tDI_NEEDRESTART DI_FLAGS = 0x00000080 // Reboot required to take effect\n\tDI_NEEDREBOOT  DI_FLAGS = 0x00000100 // \"\"\n\n\t// Flags for device installation\n\tDI_NOBROWSE DI_FLAGS = 0x00000200 // no Browse... in InsertDisk\n\n\t// Flags set by DiBuildDriverInfoList\n\tDI_MULTMFGS DI_FLAGS = 0x00000400 // Set if multiple manufacturers in class driver list\n\n\t// Flag indicates that device is disabled\n\tDI_DISABLED DI_FLAGS = 0x00000800 // Set if device disabled\n\n\t// Flags for Device/Class Properties\n\tDI_GENERALPAGE_ADDED  DI_FLAGS = 0x00001000\n\tDI_RESOURCEPAGE_ADDED DI_FLAGS = 0x00002000\n\n\t// Flag to indicate the setting properties for this Device (or class) caused a change so the Dev Mgr UI probably needs to be updated.\n\tDI_PROPERTIES_CHANGE DI_FLAGS = 0x00004000\n\n\t// Flag to indicate that the sorting from the INF file should be used.\n\tDI_INF_IS_SORTED DI_FLAGS = 0x00008000\n\n\t// Flag to indicate that only the INF specified by SP_DEVINSTALL_PARAMS.DriverPath should be searched.\n\tDI_ENUMSINGLEINF DI_FLAGS = 0x00010000\n\n\t// Flag that prevents ConfigMgr from removing/re-enumerating devices during device\n\t// registration, installation, and deletion.\n\tDI_DONOTCALLCONFIGMG DI_FLAGS = 0x00020000\n\n\t// The following flag can be used to install a device disabled\n\tDI_INSTALLDISABLED DI_FLAGS = 0x00040000\n\n\t// Flag that causes SetupDiBuildDriverInfoList to build a device's compatible driver\n\t// list from its existing class driver list, instead of the normal INF search.\n\tDI_COMPAT_FROM_CLASS DI_FLAGS = 0x00080000\n\n\t// This flag is set if the Class Install params should be used.\n\tDI_CLASSINSTALLPARAMS DI_FLAGS = 0x00100000\n\n\t// This flag is set if the caller of DiCallClassInstaller does NOT want the internal default action performed if the Class installer returns ERROR_DI_DO_DEFAULT.\n\tDI_NODI_DEFAULTACTION DI_FLAGS = 0x00200000\n\n\t// Flags for device installation\n\tDI_QUIETINSTALL        DI_FLAGS = 0x00800000 // don't confuse the user with questions or excess info\n\tDI_NOFILECOPY          DI_FLAGS = 0x01000000 // No file Copy necessary\n\tDI_FORCECOPY           DI_FLAGS = 0x02000000 // Force files to be copied from install path\n\tDI_DRIVERPAGE_ADDED    DI_FLAGS = 0x04000000 // Prop provider added Driver page.\n\tDI_USECI_SELECTSTRINGS DI_FLAGS = 0x08000000 // Use Class Installer Provided strings in the Select Device Dlg\n\tDI_OVERRIDE_INFFLAGS   DI_FLAGS = 0x10000000 // Override INF flags\n\tDI_PROPS_NOCHANGEUSAGE DI_FLAGS = 0x20000000 // No Enable/Disable in General Props\n\n\tDI_NOSELECTICONS DI_FLAGS = 0x40000000 // No small icons in select device dialogs\n\n\tDI_NOWRITE_IDS DI_FLAGS = 0x80000000 // Don't write HW & Compat IDs on install\n)\n\n// DI_FLAGSEX is SP_DEVINSTALL_PARAMS.FlagsEx values\ntype DI_FLAGSEX uint32\n\nconst (\n\tDI_FLAGSEX_CI_FAILED                DI_FLAGSEX = 0x00000004 // Failed to Load/Call class installer\n\tDI_FLAGSEX_FINISHINSTALL_ACTION     DI_FLAGSEX = 0x00000008 // Class/co-installer wants to get a DIF_FINISH_INSTALL action in client context.\n\tDI_FLAGSEX_DIDINFOLIST              DI_FLAGSEX = 0x00000010 // Did the Class Info List\n\tDI_FLAGSEX_DIDCOMPATINFO            DI_FLAGSEX = 0x00000020 // Did the Compat Info List\n\tDI_FLAGSEX_FILTERCLASSES            DI_FLAGSEX = 0x00000040\n\tDI_FLAGSEX_SETFAILEDINSTALL         DI_FLAGSEX = 0x00000080\n\tDI_FLAGSEX_DEVICECHANGE             DI_FLAGSEX = 0x00000100\n\tDI_FLAGSEX_ALWAYSWRITEIDS           DI_FLAGSEX = 0x00000200\n\tDI_FLAGSEX_PROPCHANGE_PENDING       DI_FLAGSEX = 0x00000400 // One or more device property sheets have had changes made to them, and need to have a DIF_PROPERTYCHANGE occur.\n\tDI_FLAGSEX_ALLOWEXCLUDEDDRVS        DI_FLAGSEX = 0x00000800\n\tDI_FLAGSEX_NOUIONQUERYREMOVE        DI_FLAGSEX = 0x00001000\n\tDI_FLAGSEX_USECLASSFORCOMPAT        DI_FLAGSEX = 0x00002000 // Use the device's class when building compat drv list. (Ignored if DI_COMPAT_FROM_CLASS flag is specified.)\n\tDI_FLAGSEX_NO_DRVREG_MODIFY         DI_FLAGSEX = 0x00008000 // Don't run AddReg and DelReg for device's software (driver) key.\n\tDI_FLAGSEX_IN_SYSTEM_SETUP          DI_FLAGSEX = 0x00010000 // Installation is occurring during initial system setup.\n\tDI_FLAGSEX_INET_DRIVER              DI_FLAGSEX = 0x00020000 // Driver came from Windows Update\n\tDI_FLAGSEX_APPENDDRIVERLIST         DI_FLAGSEX = 0x00040000 // Cause SetupDiBuildDriverInfoList to append a new driver list to an existing list.\n\tDI_FLAGSEX_PREINSTALLBACKUP         DI_FLAGSEX = 0x00080000 // not used\n\tDI_FLAGSEX_BACKUPONREPLACE          DI_FLAGSEX = 0x00100000 // not used\n\tDI_FLAGSEX_DRIVERLIST_FROM_URL      DI_FLAGSEX = 0x00200000 // build driver list from INF(s) retrieved from URL specified in SP_DEVINSTALL_PARAMS.DriverPath (empty string means Windows Update website)\n\tDI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS DI_FLAGSEX = 0x00800000 // Don't include old Internet drivers when building a driver list. Ignored on Windows Vista and later.\n\tDI_FLAGSEX_POWERPAGE_ADDED          DI_FLAGSEX = 0x01000000 // class installer added their own power page\n\tDI_FLAGSEX_FILTERSIMILARDRIVERS     DI_FLAGSEX = 0x02000000 // only include similar drivers in class list\n\tDI_FLAGSEX_INSTALLEDDRIVER          DI_FLAGSEX = 0x04000000 // only add the installed driver to the class or compat driver list.  Used in calls to SetupDiBuildDriverInfoList\n\tDI_FLAGSEX_NO_CLASSLIST_NODE_MERGE  DI_FLAGSEX = 0x08000000 // Don't remove identical driver nodes from the class list\n\tDI_FLAGSEX_ALTPLATFORM_DRVSEARCH    DI_FLAGSEX = 0x10000000 // Build driver list based on alternate platform information specified in associated file queue\n\tDI_FLAGSEX_RESTART_DEVICE_ONLY      DI_FLAGSEX = 0x20000000 // only restart the device drivers are being installed on as opposed to restarting all devices using those drivers.\n\tDI_FLAGSEX_RECURSIVESEARCH          DI_FLAGSEX = 0x40000000 // Tell SetupDiBuildDriverInfoList to do a recursive search\n\tDI_FLAGSEX_SEARCH_PUBLISHED_INFS    DI_FLAGSEX = 0x80000000 // Tell SetupDiBuildDriverInfoList to do a \"published INF\" search\n)\n\n// ClassInstallHeader is the first member of any class install parameters structure. It contains the device installation request code that defines the format of the rest of the install parameters structure.\ntype ClassInstallHeader struct {\n\tsize            uint32\n\tInstallFunction DI_FUNCTION\n}\n\nfunc MakeClassInstallHeader(installFunction DI_FUNCTION) *ClassInstallHeader {\n\thdr := &ClassInstallHeader{InstallFunction: installFunction}\n\thdr.size = uint32(unsafe.Sizeof(*hdr))\n\treturn hdr\n}\n\n// DICS_STATE specifies values indicating a change in a device's state\ntype DICS_STATE uint32\n\nconst (\n\tDICS_ENABLE     DICS_STATE = 0x00000001 // The device is being enabled.\n\tDICS_DISABLE    DICS_STATE = 0x00000002 // The device is being disabled.\n\tDICS_PROPCHANGE DICS_STATE = 0x00000003 // The properties of the device have changed.\n\tDICS_START      DICS_STATE = 0x00000004 // The device is being started (if the request is for the currently active hardware profile).\n\tDICS_STOP       DICS_STATE = 0x00000005 // The device is being stopped. The driver stack will be unloaded and the CSCONFIGFLAG_DO_NOT_START flag will be set for the device.\n)\n\n// DICS_FLAG specifies the scope of a device property change\ntype DICS_FLAG uint32\n\nconst (\n\tDICS_FLAG_GLOBAL         DICS_FLAG = 0x00000001 // make change in all hardware profiles\n\tDICS_FLAG_CONFIGSPECIFIC DICS_FLAG = 0x00000002 // make change in specified profile only\n\tDICS_FLAG_CONFIGGENERAL  DICS_FLAG = 0x00000004 // 1 or more hardware profile-specific changes to follow (obsolete)\n)\n\n// PropChangeParams is a structure corresponding to a DIF_PROPERTYCHANGE install function.\ntype PropChangeParams struct {\n\tClassInstallHeader ClassInstallHeader\n\tStateChange        DICS_STATE\n\tScope              DICS_FLAG\n\tHwProfile          uint32\n}\n\n// DI_REMOVEDEVICE specifies the scope of the device removal\ntype DI_REMOVEDEVICE uint32\n\nconst (\n\tDI_REMOVEDEVICE_GLOBAL         DI_REMOVEDEVICE = 0x00000001 // Make this change in all hardware profiles. Remove information about the device from the registry.\n\tDI_REMOVEDEVICE_CONFIGSPECIFIC DI_REMOVEDEVICE = 0x00000002 // Make this change to only the hardware profile specified by HwProfile. this flag only applies to root-enumerated devices. When Windows removes the device from the last hardware profile in which it was configured, Windows performs a global removal.\n)\n\n// RemoveDeviceParams is a structure corresponding to a DIF_REMOVE install function.\ntype RemoveDeviceParams struct {\n\tClassInstallHeader ClassInstallHeader\n\tScope              DI_REMOVEDEVICE\n\tHwProfile          uint32\n}\n\n// DrvInfoData is driver information structure (member of a driver info list that may be associated with a particular device instance, or (globally) with a device information set)\ntype DrvInfoData struct {\n\tsize          uint32\n\tDriverType    uint32\n\t_             uintptr\n\tdescription   [LINE_LEN]uint16\n\tmfgName       [LINE_LEN]uint16\n\tproviderName  [LINE_LEN]uint16\n\tDriverDate    Filetime\n\tDriverVersion uint64\n}\n\nfunc (data *DrvInfoData) Description() string {\n\treturn UTF16ToString(data.description[:])\n}\n\nfunc (data *DrvInfoData) SetDescription(description string) error {\n\tstr, err := UTF16FromString(description)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.description[:], str)\n\treturn nil\n}\n\nfunc (data *DrvInfoData) MfgName() string {\n\treturn UTF16ToString(data.mfgName[:])\n}\n\nfunc (data *DrvInfoData) SetMfgName(mfgName string) error {\n\tstr, err := UTF16FromString(mfgName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.mfgName[:], str)\n\treturn nil\n}\n\nfunc (data *DrvInfoData) ProviderName() string {\n\treturn UTF16ToString(data.providerName[:])\n}\n\nfunc (data *DrvInfoData) SetProviderName(providerName string) error {\n\tstr, err := UTF16FromString(providerName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.providerName[:], str)\n\treturn nil\n}\n\n// IsNewer method returns true if DrvInfoData date and version is newer than supplied parameters.\nfunc (data *DrvInfoData) IsNewer(driverDate Filetime, driverVersion uint64) bool {\n\tif data.DriverDate.HighDateTime > driverDate.HighDateTime {\n\t\treturn true\n\t}\n\tif data.DriverDate.HighDateTime < driverDate.HighDateTime {\n\t\treturn false\n\t}\n\n\tif data.DriverDate.LowDateTime > driverDate.LowDateTime {\n\t\treturn true\n\t}\n\tif data.DriverDate.LowDateTime < driverDate.LowDateTime {\n\t\treturn false\n\t}\n\n\tif data.DriverVersion > driverVersion {\n\t\treturn true\n\t}\n\tif data.DriverVersion < driverVersion {\n\t\treturn false\n\t}\n\n\treturn false\n}\n\n// DrvInfoDetailData is driver information details structure (provides detailed information about a particular driver information structure)\ntype DrvInfoDetailData struct {\n\tsize            uint32 // Use unsafeSizeOf method\n\tInfDate         Filetime\n\tcompatIDsOffset uint32\n\tcompatIDsLength uint32\n\t_               uintptr\n\tsectionName     [LINE_LEN]uint16\n\tinfFileName     [MAX_PATH]uint16\n\tdrvDescription  [LINE_LEN]uint16\n\thardwareID      [1]uint16\n}\n\nfunc (*DrvInfoDetailData) unsafeSizeOf() uint32 {\n\tif unsafe.Sizeof(uintptr(0)) == 4 {\n\t\t// Windows declares this with pshpack1.h\n\t\treturn uint32(unsafe.Offsetof(DrvInfoDetailData{}.hardwareID) + unsafe.Sizeof(DrvInfoDetailData{}.hardwareID))\n\t}\n\treturn uint32(unsafe.Sizeof(DrvInfoDetailData{}))\n}\n\nfunc (data *DrvInfoDetailData) SectionName() string {\n\treturn UTF16ToString(data.sectionName[:])\n}\n\nfunc (data *DrvInfoDetailData) InfFileName() string {\n\treturn UTF16ToString(data.infFileName[:])\n}\n\nfunc (data *DrvInfoDetailData) DrvDescription() string {\n\treturn UTF16ToString(data.drvDescription[:])\n}\n\nfunc (data *DrvInfoDetailData) HardwareID() string {\n\tif data.compatIDsOffset > 1 {\n\t\tbufW := data.getBuf()\n\t\treturn UTF16ToString(bufW[:wcslen(bufW)])\n\t}\n\n\treturn \"\"\n}\n\nfunc (data *DrvInfoDetailData) CompatIDs() []string {\n\ta := make([]string, 0)\n\n\tif data.compatIDsLength > 0 {\n\t\tbufW := data.getBuf()\n\t\tbufW = bufW[data.compatIDsOffset : data.compatIDsOffset+data.compatIDsLength]\n\t\tfor i := 0; i < len(bufW); {\n\t\t\tj := i + wcslen(bufW[i:])\n\t\t\tif i < j {\n\t\t\t\ta = append(a, UTF16ToString(bufW[i:j]))\n\t\t\t}\n\t\t\ti = j + 1\n\t\t}\n\t}\n\n\treturn a\n}\n\nfunc (data *DrvInfoDetailData) getBuf() []uint16 {\n\tlen := (data.size - uint32(unsafe.Offsetof(data.hardwareID))) / 2\n\tsl := struct {\n\t\taddr *uint16\n\t\tlen  int\n\t\tcap  int\n\t}{&data.hardwareID[0], int(len), int(len)}\n\treturn *(*[]uint16)(unsafe.Pointer(&sl))\n}\n\n// IsCompatible method tests if given hardware ID matches the driver or is listed on the compatible ID list.\nfunc (data *DrvInfoDetailData) IsCompatible(hwid string) bool {\n\thwidLC := strings.ToLower(hwid)\n\tif strings.ToLower(data.HardwareID()) == hwidLC {\n\t\treturn true\n\t}\n\ta := data.CompatIDs()\n\tfor i := range a {\n\t\tif strings.ToLower(a[i]) == hwidLC {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// DICD flags control SetupDiCreateDeviceInfo\ntype DICD uint32\n\nconst (\n\tDICD_GENERATE_ID       DICD = 0x00000001\n\tDICD_INHERIT_CLASSDRVS DICD = 0x00000002\n)\n\n// SUOI flags control SetupUninstallOEMInf\ntype SUOI uint32\n\nconst (\n\tSUOI_FORCEDELETE SUOI = 0x0001\n)\n\n// SPDIT flags to distinguish between class drivers and\n// device drivers. (Passed in 'DriverType' parameter of\n// driver information list APIs)\ntype SPDIT uint32\n\nconst (\n\tSPDIT_NODRIVER     SPDIT = 0x00000000\n\tSPDIT_CLASSDRIVER  SPDIT = 0x00000001\n\tSPDIT_COMPATDRIVER SPDIT = 0x00000002\n)\n\n// DIGCF flags control what is included in the device information set built by SetupDiGetClassDevs\ntype DIGCF uint32\n\nconst (\n\tDIGCF_DEFAULT         DIGCF = 0x00000001 // only valid with DIGCF_DEVICEINTERFACE\n\tDIGCF_PRESENT         DIGCF = 0x00000002\n\tDIGCF_ALLCLASSES      DIGCF = 0x00000004\n\tDIGCF_PROFILE         DIGCF = 0x00000008\n\tDIGCF_DEVICEINTERFACE DIGCF = 0x00000010\n)\n\n// DIREG specifies values for SetupDiCreateDevRegKey, SetupDiOpenDevRegKey, and SetupDiDeleteDevRegKey.\ntype DIREG uint32\n\nconst (\n\tDIREG_DEV  DIREG = 0x00000001 // Open/Create/Delete device key\n\tDIREG_DRV  DIREG = 0x00000002 // Open/Create/Delete driver key\n\tDIREG_BOTH DIREG = 0x00000004 // Delete both driver and Device key\n)\n\n// SPDRP specifies device registry property codes\n// (Codes marked as read-only (R) may only be used for\n// SetupDiGetDeviceRegistryProperty)\n//\n// These values should cover the same set of registry properties\n// as defined by the CM_DRP codes in cfgmgr32.h.\n//\n// Note that SPDRP codes are zero based while CM_DRP codes are one based!\ntype SPDRP uint32\n\nconst (\n\tSPDRP_DEVICEDESC                  SPDRP = 0x00000000 // DeviceDesc (R/W)\n\tSPDRP_HARDWAREID                  SPDRP = 0x00000001 // HardwareID (R/W)\n\tSPDRP_COMPATIBLEIDS               SPDRP = 0x00000002 // CompatibleIDs (R/W)\n\tSPDRP_SERVICE                     SPDRP = 0x00000004 // Service (R/W)\n\tSPDRP_CLASS                       SPDRP = 0x00000007 // Class (R--tied to ClassGUID)\n\tSPDRP_CLASSGUID                   SPDRP = 0x00000008 // ClassGUID (R/W)\n\tSPDRP_DRIVER                      SPDRP = 0x00000009 // Driver (R/W)\n\tSPDRP_CONFIGFLAGS                 SPDRP = 0x0000000A // ConfigFlags (R/W)\n\tSPDRP_MFG                         SPDRP = 0x0000000B // Mfg (R/W)\n\tSPDRP_FRIENDLYNAME                SPDRP = 0x0000000C // FriendlyName (R/W)\n\tSPDRP_LOCATION_INFORMATION        SPDRP = 0x0000000D // LocationInformation (R/W)\n\tSPDRP_PHYSICAL_DEVICE_OBJECT_NAME SPDRP = 0x0000000E // PhysicalDeviceObjectName (R)\n\tSPDRP_CAPABILITIES                SPDRP = 0x0000000F // Capabilities (R)\n\tSPDRP_UI_NUMBER                   SPDRP = 0x00000010 // UiNumber (R)\n\tSPDRP_UPPERFILTERS                SPDRP = 0x00000011 // UpperFilters (R/W)\n\tSPDRP_LOWERFILTERS                SPDRP = 0x00000012 // LowerFilters (R/W)\n\tSPDRP_BUSTYPEGUID                 SPDRP = 0x00000013 // BusTypeGUID (R)\n\tSPDRP_LEGACYBUSTYPE               SPDRP = 0x00000014 // LegacyBusType (R)\n\tSPDRP_BUSNUMBER                   SPDRP = 0x00000015 // BusNumber (R)\n\tSPDRP_ENUMERATOR_NAME             SPDRP = 0x00000016 // Enumerator Name (R)\n\tSPDRP_SECURITY                    SPDRP = 0x00000017 // Security (R/W, binary form)\n\tSPDRP_SECURITY_SDS                SPDRP = 0x00000018 // Security (W, SDS form)\n\tSPDRP_DEVTYPE                     SPDRP = 0x00000019 // Device Type (R/W)\n\tSPDRP_EXCLUSIVE                   SPDRP = 0x0000001A // Device is exclusive-access (R/W)\n\tSPDRP_CHARACTERISTICS             SPDRP = 0x0000001B // Device Characteristics (R/W)\n\tSPDRP_ADDRESS                     SPDRP = 0x0000001C // Device Address (R)\n\tSPDRP_UI_NUMBER_DESC_FORMAT       SPDRP = 0x0000001D // UiNumberDescFormat (R/W)\n\tSPDRP_DEVICE_POWER_DATA           SPDRP = 0x0000001E // Device Power Data (R)\n\tSPDRP_REMOVAL_POLICY              SPDRP = 0x0000001F // Removal Policy (R)\n\tSPDRP_REMOVAL_POLICY_HW_DEFAULT   SPDRP = 0x00000020 // Hardware Removal Policy (R)\n\tSPDRP_REMOVAL_POLICY_OVERRIDE     SPDRP = 0x00000021 // Removal Policy Override (RW)\n\tSPDRP_INSTALL_STATE               SPDRP = 0x00000022 // Device Install State (R)\n\tSPDRP_LOCATION_PATHS              SPDRP = 0x00000023 // Device Location Paths (R)\n\tSPDRP_BASE_CONTAINERID            SPDRP = 0x00000024 // Base ContainerID (R)\n\n\tSPDRP_MAXIMUM_PROPERTY SPDRP = 0x00000025 // Upper bound on ordinals\n)\n\n// DEVPROPTYPE represents the property-data-type identifier that specifies the\n// data type of a device property value in the unified device property model.\ntype DEVPROPTYPE uint32\n\nconst (\n\tDEVPROP_TYPEMOD_ARRAY DEVPROPTYPE = 0x00001000\n\tDEVPROP_TYPEMOD_LIST  DEVPROPTYPE = 0x00002000\n\n\tDEVPROP_TYPE_EMPTY                      DEVPROPTYPE = 0x00000000\n\tDEVPROP_TYPE_NULL                       DEVPROPTYPE = 0x00000001\n\tDEVPROP_TYPE_SBYTE                      DEVPROPTYPE = 0x00000002\n\tDEVPROP_TYPE_BYTE                       DEVPROPTYPE = 0x00000003\n\tDEVPROP_TYPE_INT16                      DEVPROPTYPE = 0x00000004\n\tDEVPROP_TYPE_UINT16                     DEVPROPTYPE = 0x00000005\n\tDEVPROP_TYPE_INT32                      DEVPROPTYPE = 0x00000006\n\tDEVPROP_TYPE_UINT32                     DEVPROPTYPE = 0x00000007\n\tDEVPROP_TYPE_INT64                      DEVPROPTYPE = 0x00000008\n\tDEVPROP_TYPE_UINT64                     DEVPROPTYPE = 0x00000009\n\tDEVPROP_TYPE_FLOAT                      DEVPROPTYPE = 0x0000000A\n\tDEVPROP_TYPE_DOUBLE                     DEVPROPTYPE = 0x0000000B\n\tDEVPROP_TYPE_DECIMAL                    DEVPROPTYPE = 0x0000000C\n\tDEVPROP_TYPE_GUID                       DEVPROPTYPE = 0x0000000D\n\tDEVPROP_TYPE_CURRENCY                   DEVPROPTYPE = 0x0000000E\n\tDEVPROP_TYPE_DATE                       DEVPROPTYPE = 0x0000000F\n\tDEVPROP_TYPE_FILETIME                   DEVPROPTYPE = 0x00000010\n\tDEVPROP_TYPE_BOOLEAN                    DEVPROPTYPE = 0x00000011\n\tDEVPROP_TYPE_STRING                     DEVPROPTYPE = 0x00000012\n\tDEVPROP_TYPE_STRING_LIST                DEVPROPTYPE = DEVPROP_TYPE_STRING | DEVPROP_TYPEMOD_LIST\n\tDEVPROP_TYPE_SECURITY_DESCRIPTOR        DEVPROPTYPE = 0x00000013\n\tDEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING DEVPROPTYPE = 0x00000014\n\tDEVPROP_TYPE_DEVPROPKEY                 DEVPROPTYPE = 0x00000015\n\tDEVPROP_TYPE_DEVPROPTYPE                DEVPROPTYPE = 0x00000016\n\tDEVPROP_TYPE_BINARY                     DEVPROPTYPE = DEVPROP_TYPE_BYTE | DEVPROP_TYPEMOD_ARRAY\n\tDEVPROP_TYPE_ERROR                      DEVPROPTYPE = 0x00000017\n\tDEVPROP_TYPE_NTSTATUS                   DEVPROPTYPE = 0x00000018\n\tDEVPROP_TYPE_STRING_INDIRECT            DEVPROPTYPE = 0x00000019\n\n\tMAX_DEVPROP_TYPE    DEVPROPTYPE = 0x00000019\n\tMAX_DEVPROP_TYPEMOD DEVPROPTYPE = 0x00002000\n\n\tDEVPROP_MASK_TYPE    DEVPROPTYPE = 0x00000FFF\n\tDEVPROP_MASK_TYPEMOD DEVPROPTYPE = 0x0000F000\n)\n\n// DEVPROPGUID specifies a property category.\ntype DEVPROPGUID GUID\n\n// DEVPROPID uniquely identifies the property within the property category.\ntype DEVPROPID uint32\n\nconst DEVPROPID_FIRST_USABLE DEVPROPID = 2\n\n// DEVPROPKEY represents a device property key for a device property in the\n// unified device property model.\ntype DEVPROPKEY struct {\n\tFmtID DEVPROPGUID\n\tPID   DEVPROPID\n}\n\n// CONFIGRET is a return value or error code from cfgmgr32 APIs\ntype CONFIGRET uint32\n\nfunc (ret CONFIGRET) Error() string {\n\tif win32Error, ok := ret.Unwrap().(Errno); ok {\n\t\treturn fmt.Sprintf(\"%s (CfgMgr error: 0x%08x)\", win32Error.Error(), uint32(ret))\n\t}\n\treturn fmt.Sprintf(\"CfgMgr error: 0x%08x\", uint32(ret))\n}\n\nfunc (ret CONFIGRET) Win32Error(defaultError Errno) Errno {\n\treturn cm_MapCrToWin32Err(ret, defaultError)\n}\n\nfunc (ret CONFIGRET) Unwrap() error {\n\tconst noMatch = Errno(^uintptr(0))\n\twin32Error := ret.Win32Error(noMatch)\n\tif win32Error == noMatch {\n\t\treturn nil\n\t}\n\treturn win32Error\n}\n\nconst (\n\tCR_SUCCESS                  CONFIGRET = 0x00000000\n\tCR_DEFAULT                  CONFIGRET = 0x00000001\n\tCR_OUT_OF_MEMORY            CONFIGRET = 0x00000002\n\tCR_INVALID_POINTER          CONFIGRET = 0x00000003\n\tCR_INVALID_FLAG             CONFIGRET = 0x00000004\n\tCR_INVALID_DEVNODE          CONFIGRET = 0x00000005\n\tCR_INVALID_DEVINST                    = CR_INVALID_DEVNODE\n\tCR_INVALID_RES_DES          CONFIGRET = 0x00000006\n\tCR_INVALID_LOG_CONF         CONFIGRET = 0x00000007\n\tCR_INVALID_ARBITRATOR       CONFIGRET = 0x00000008\n\tCR_INVALID_NODELIST         CONFIGRET = 0x00000009\n\tCR_DEVNODE_HAS_REQS         CONFIGRET = 0x0000000A\n\tCR_DEVINST_HAS_REQS                   = CR_DEVNODE_HAS_REQS\n\tCR_INVALID_RESOURCEID       CONFIGRET = 0x0000000B\n\tCR_DLVXD_NOT_FOUND          CONFIGRET = 0x0000000C\n\tCR_NO_SUCH_DEVNODE          CONFIGRET = 0x0000000D\n\tCR_NO_SUCH_DEVINST                    = CR_NO_SUCH_DEVNODE\n\tCR_NO_MORE_LOG_CONF         CONFIGRET = 0x0000000E\n\tCR_NO_MORE_RES_DES          CONFIGRET = 0x0000000F\n\tCR_ALREADY_SUCH_DEVNODE     CONFIGRET = 0x00000010\n\tCR_ALREADY_SUCH_DEVINST               = CR_ALREADY_SUCH_DEVNODE\n\tCR_INVALID_RANGE_LIST       CONFIGRET = 0x00000011\n\tCR_INVALID_RANGE            CONFIGRET = 0x00000012\n\tCR_FAILURE                  CONFIGRET = 0x00000013\n\tCR_NO_SUCH_LOGICAL_DEV      CONFIGRET = 0x00000014\n\tCR_CREATE_BLOCKED           CONFIGRET = 0x00000015\n\tCR_NOT_SYSTEM_VM            CONFIGRET = 0x00000016\n\tCR_REMOVE_VETOED            CONFIGRET = 0x00000017\n\tCR_APM_VETOED               CONFIGRET = 0x00000018\n\tCR_INVALID_LOAD_TYPE        CONFIGRET = 0x00000019\n\tCR_BUFFER_SMALL             CONFIGRET = 0x0000001A\n\tCR_NO_ARBITRATOR            CONFIGRET = 0x0000001B\n\tCR_NO_REGISTRY_HANDLE       CONFIGRET = 0x0000001C\n\tCR_REGISTRY_ERROR           CONFIGRET = 0x0000001D\n\tCR_INVALID_DEVICE_ID        CONFIGRET = 0x0000001E\n\tCR_INVALID_DATA             CONFIGRET = 0x0000001F\n\tCR_INVALID_API              CONFIGRET = 0x00000020\n\tCR_DEVLOADER_NOT_READY      CONFIGRET = 0x00000021\n\tCR_NEED_RESTART             CONFIGRET = 0x00000022\n\tCR_NO_MORE_HW_PROFILES      CONFIGRET = 0x00000023\n\tCR_DEVICE_NOT_THERE         CONFIGRET = 0x00000024\n\tCR_NO_SUCH_VALUE            CONFIGRET = 0x00000025\n\tCR_WRONG_TYPE               CONFIGRET = 0x00000026\n\tCR_INVALID_PRIORITY         CONFIGRET = 0x00000027\n\tCR_NOT_DISABLEABLE          CONFIGRET = 0x00000028\n\tCR_FREE_RESOURCES           CONFIGRET = 0x00000029\n\tCR_QUERY_VETOED             CONFIGRET = 0x0000002A\n\tCR_CANT_SHARE_IRQ           CONFIGRET = 0x0000002B\n\tCR_NO_DEPENDENT             CONFIGRET = 0x0000002C\n\tCR_SAME_RESOURCES           CONFIGRET = 0x0000002D\n\tCR_NO_SUCH_REGISTRY_KEY     CONFIGRET = 0x0000002E\n\tCR_INVALID_MACHINENAME      CONFIGRET = 0x0000002F\n\tCR_REMOTE_COMM_FAILURE      CONFIGRET = 0x00000030\n\tCR_MACHINE_UNAVAILABLE      CONFIGRET = 0x00000031\n\tCR_NO_CM_SERVICES           CONFIGRET = 0x00000032\n\tCR_ACCESS_DENIED            CONFIGRET = 0x00000033\n\tCR_CALL_NOT_IMPLEMENTED     CONFIGRET = 0x00000034\n\tCR_INVALID_PROPERTY         CONFIGRET = 0x00000035\n\tCR_DEVICE_INTERFACE_ACTIVE  CONFIGRET = 0x00000036\n\tCR_NO_SUCH_DEVICE_INTERFACE CONFIGRET = 0x00000037\n\tCR_INVALID_REFERENCE_STRING CONFIGRET = 0x00000038\n\tCR_INVALID_CONFLICT_LIST    CONFIGRET = 0x00000039\n\tCR_INVALID_INDEX            CONFIGRET = 0x0000003A\n\tCR_INVALID_STRUCTURE_SIZE   CONFIGRET = 0x0000003B\n\tNUM_CR_RESULTS              CONFIGRET = 0x0000003C\n)\n\nconst (\n\tCM_GET_DEVICE_INTERFACE_LIST_PRESENT     = 0 // only currently 'live' device interfaces\n\tCM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES = 1 // all registered device interfaces, live or not\n)\n\nconst (\n\tDN_ROOT_ENUMERATED       = 0x00000001        // Was enumerated by ROOT\n\tDN_DRIVER_LOADED         = 0x00000002        // Has Register_Device_Driver\n\tDN_ENUM_LOADED           = 0x00000004        // Has Register_Enumerator\n\tDN_STARTED               = 0x00000008        // Is currently configured\n\tDN_MANUAL                = 0x00000010        // Manually installed\n\tDN_NEED_TO_ENUM          = 0x00000020        // May need reenumeration\n\tDN_NOT_FIRST_TIME        = 0x00000040        // Has received a config\n\tDN_HARDWARE_ENUM         = 0x00000080        // Enum generates hardware ID\n\tDN_LIAR                  = 0x00000100        // Lied about can reconfig once\n\tDN_HAS_MARK              = 0x00000200        // Not CM_Create_DevInst lately\n\tDN_HAS_PROBLEM           = 0x00000400        // Need device installer\n\tDN_FILTERED              = 0x00000800        // Is filtered\n\tDN_MOVED                 = 0x00001000        // Has been moved\n\tDN_DISABLEABLE           = 0x00002000        // Can be disabled\n\tDN_REMOVABLE             = 0x00004000        // Can be removed\n\tDN_PRIVATE_PROBLEM       = 0x00008000        // Has a private problem\n\tDN_MF_PARENT             = 0x00010000        // Multi function parent\n\tDN_MF_CHILD              = 0x00020000        // Multi function child\n\tDN_WILL_BE_REMOVED       = 0x00040000        // DevInst is being removed\n\tDN_NOT_FIRST_TIMEE       = 0x00080000        // Has received a config enumerate\n\tDN_STOP_FREE_RES         = 0x00100000        // When child is stopped, free resources\n\tDN_REBAL_CANDIDATE       = 0x00200000        // Don't skip during rebalance\n\tDN_BAD_PARTIAL           = 0x00400000        // This devnode's log_confs do not have same resources\n\tDN_NT_ENUMERATOR         = 0x00800000        // This devnode's is an NT enumerator\n\tDN_NT_DRIVER             = 0x01000000        // This devnode's is an NT driver\n\tDN_NEEDS_LOCKING         = 0x02000000        // Devnode need lock resume processing\n\tDN_ARM_WAKEUP            = 0x04000000        // Devnode can be the wakeup device\n\tDN_APM_ENUMERATOR        = 0x08000000        // APM aware enumerator\n\tDN_APM_DRIVER            = 0x10000000        // APM aware driver\n\tDN_SILENT_INSTALL        = 0x20000000        // Silent install\n\tDN_NO_SHOW_IN_DM         = 0x40000000        // No show in device manager\n\tDN_BOOT_LOG_PROB         = 0x80000000        // Had a problem during preassignment of boot log conf\n\tDN_NEED_RESTART          = DN_LIAR           // System needs to be restarted for this Devnode to work properly\n\tDN_DRIVER_BLOCKED        = DN_NOT_FIRST_TIME // One or more drivers are blocked from loading for this Devnode\n\tDN_LEGACY_DRIVER         = DN_MOVED          // This device is using a legacy driver\n\tDN_CHILD_WITH_INVALID_ID = DN_HAS_MARK       // One or more children have invalid IDs\n\tDN_DEVICE_DISCONNECTED   = DN_NEEDS_LOCKING  // The function driver for a device reported that the device is not connected.  Typically this means a wireless device is out of range.\n\tDN_QUERY_REMOVE_PENDING  = DN_MF_PARENT      // Device is part of a set of related devices collectively pending query-removal\n\tDN_QUERY_REMOVE_ACTIVE   = DN_MF_CHILD       // Device is actively engaged in a query-remove IRP\n\tDN_CHANGEABLE_FLAGS      = DN_NOT_FIRST_TIME | DN_HARDWARE_ENUM | DN_HAS_MARK | DN_DISABLEABLE | DN_REMOVABLE | DN_MF_CHILD | DN_MF_PARENT | DN_NOT_FIRST_TIMEE | DN_STOP_FREE_RES | DN_REBAL_CANDIDATE | DN_NT_ENUMERATOR | DN_NT_DRIVER | DN_SILENT_INSTALL | DN_NO_SHOW_IN_DM\n)\n\n//sys\tsetupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiCreateDeviceInfoListExW\n\n// SetupDiCreateDeviceInfoListEx function creates an empty device information set on a remote or a local computer and optionally associates the set with a device setup class.\nfunc SetupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName string) (deviceInfoSet DevInfo, err error) {\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn setupDiCreateDeviceInfoListEx(classGUID, hwndParent, machineNameUTF16, 0)\n}\n\n//sys\tsetupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) = setupapi.SetupDiGetDeviceInfoListDetailW\n\n// SetupDiGetDeviceInfoListDetail function retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name.\nfunc SetupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo) (deviceInfoSetDetailData *DevInfoListDetailData, err error) {\n\tdata := &DevInfoListDetailData{}\n\tdata.size = data.unsafeSizeOf()\n\n\treturn data, setupDiGetDeviceInfoListDetail(deviceInfoSet, data)\n}\n\n// DeviceInfoListDetail method retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name.\nfunc (deviceInfoSet DevInfo) DeviceInfoListDetail() (*DevInfoListDetailData, error) {\n\treturn SetupDiGetDeviceInfoListDetail(deviceInfoSet)\n}\n\n//sys\tsetupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCreateDeviceInfoW\n\n// SetupDiCreateDeviceInfo function creates a new device information element and adds it as a new member to the specified device information set.\nfunc SetupDiCreateDeviceInfo(deviceInfoSet DevInfo, deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (deviceInfoData *DevInfoData, err error) {\n\tdeviceNameUTF16, err := UTF16PtrFromString(deviceName)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar deviceDescriptionUTF16 *uint16\n\tif deviceDescription != \"\" {\n\t\tdeviceDescriptionUTF16, err = UTF16PtrFromString(deviceDescription)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiCreateDeviceInfo(deviceInfoSet, deviceNameUTF16, classGUID, deviceDescriptionUTF16, hwndParent, creationFlags, data)\n}\n\n// CreateDeviceInfo method creates a new device information element and adds it as a new member to the specified device information set.\nfunc (deviceInfoSet DevInfo) CreateDeviceInfo(deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (*DevInfoData, error) {\n\treturn SetupDiCreateDeviceInfo(deviceInfoSet, deviceName, classGUID, deviceDescription, hwndParent, creationFlags)\n}\n\n//sys\tsetupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiEnumDeviceInfo\n\n// SetupDiEnumDeviceInfo function returns a DevInfoData structure that specifies a device information element in a device information set.\nfunc SetupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex int) (*DevInfoData, error) {\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiEnumDeviceInfo(deviceInfoSet, uint32(memberIndex), data)\n}\n\n// EnumDeviceInfo method returns a DevInfoData structure that specifies a device information element in a device information set.\nfunc (deviceInfoSet DevInfo) EnumDeviceInfo(memberIndex int) (*DevInfoData, error) {\n\treturn SetupDiEnumDeviceInfo(deviceInfoSet, memberIndex)\n}\n\n// SetupDiDestroyDeviceInfoList function deletes a device information set and frees all associated memory.\n//sys\tSetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiDestroyDeviceInfoList\n\n// Close method deletes a device information set and frees all associated memory.\nfunc (deviceInfoSet DevInfo) Close() error {\n\treturn SetupDiDestroyDeviceInfoList(deviceInfoSet)\n}\n\n//sys\tSetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiBuildDriverInfoList\n\n// BuildDriverInfoList method builds a list of drivers that is associated with a specific device or with the global class driver list for a device information set.\nfunc (deviceInfoSet DevInfo) BuildDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error {\n\treturn SetupDiBuildDriverInfoList(deviceInfoSet, deviceInfoData, driverType)\n}\n\n//sys\tSetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiCancelDriverInfoSearch\n\n// CancelDriverInfoSearch method cancels a driver list search that is currently in progress in a different thread.\nfunc (deviceInfoSet DevInfo) CancelDriverInfoSearch() error {\n\treturn SetupDiCancelDriverInfoSearch(deviceInfoSet)\n}\n\n//sys\tsetupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiEnumDriverInfoW\n\n// SetupDiEnumDriverInfo function enumerates the members of a driver list.\nfunc SetupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) {\n\tdata := &DrvInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, uint32(memberIndex), data)\n}\n\n// EnumDriverInfo method enumerates the members of a driver list.\nfunc (deviceInfoSet DevInfo) EnumDriverInfo(deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) {\n\treturn SetupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, memberIndex)\n}\n\n//sys\tsetupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiGetSelectedDriverW\n\n// SetupDiGetSelectedDriver function retrieves the selected driver for a device information set or a particular device information element.\nfunc SetupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DrvInfoData, error) {\n\tdata := &DrvInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiGetSelectedDriver(deviceInfoSet, deviceInfoData, data)\n}\n\n// SelectedDriver method retrieves the selected driver for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SelectedDriver(deviceInfoData *DevInfoData) (*DrvInfoData, error) {\n\treturn SetupDiGetSelectedDriver(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tSetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiSetSelectedDriverW\n\n// SetSelectedDriver method sets, or resets, the selected driver for a device information element or the selected class driver for a device information set.\nfunc (deviceInfoSet DevInfo) SetSelectedDriver(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) error {\n\treturn SetupDiSetSelectedDriver(deviceInfoSet, deviceInfoData, driverInfoData)\n}\n\n//sys\tsetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDriverInfoDetailW\n\n// SetupDiGetDriverInfoDetail function retrieves driver information detail for a device information set or a particular device information element in the device information set.\nfunc SetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) {\n\treqSize := uint32(2048)\n\tfor {\n\t\tbuf := make([]byte, reqSize)\n\t\tdata := (*DrvInfoDetailData)(unsafe.Pointer(&buf[0]))\n\t\tdata.size = data.unsafeSizeOf()\n\t\terr := setupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData, data, uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdata.size = reqSize\n\t\treturn data, nil\n\t}\n}\n\n// DriverInfoDetail method retrieves driver information detail for a device information set or a particular device information element in the device information set.\nfunc (deviceInfoSet DevInfo) DriverInfoDetail(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) {\n\treturn SetupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData)\n}\n\n//sys\tSetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiDestroyDriverInfoList\n\n// DestroyDriverInfoList method deletes a driver list.\nfunc (deviceInfoSet DevInfo) DestroyDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error {\n\treturn SetupDiDestroyDriverInfoList(deviceInfoSet, deviceInfoData, driverType)\n}\n\n//sys\tsetupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiGetClassDevsExW\n\n// SetupDiGetClassDevsEx function returns a handle to a device information set that contains requested device information elements for a local or a remote computer.\nfunc SetupDiGetClassDevsEx(classGUID *GUID, enumerator string, hwndParent uintptr, flags DIGCF, deviceInfoSet DevInfo, machineName string) (handle DevInfo, err error) {\n\tvar enumeratorUTF16 *uint16\n\tif enumerator != \"\" {\n\t\tenumeratorUTF16, err = UTF16PtrFromString(enumerator)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn setupDiGetClassDevsEx(classGUID, enumeratorUTF16, hwndParent, flags, deviceInfoSet, machineNameUTF16, 0)\n}\n\n// SetupDiCallClassInstaller function calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code).\n//sys\tSetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCallClassInstaller\n\n// CallClassInstaller member calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code).\nfunc (deviceInfoSet DevInfo) CallClassInstaller(installFunction DI_FUNCTION, deviceInfoData *DevInfoData) error {\n\treturn SetupDiCallClassInstaller(installFunction, deviceInfoSet, deviceInfoData)\n}\n\n// SetupDiOpenDevRegKey function opens a registry key for device-specific configuration information.\n//sys\tSetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) [failretval==InvalidHandle] = setupapi.SetupDiOpenDevRegKey\n\n// OpenDevRegKey method opens a registry key for device-specific configuration information.\nfunc (deviceInfoSet DevInfo) OpenDevRegKey(DeviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (Handle, error) {\n\treturn SetupDiOpenDevRegKey(deviceInfoSet, DeviceInfoData, Scope, HwProfile, KeyType, samDesired)\n}\n\n//sys\tsetupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) = setupapi.SetupDiGetDevicePropertyW\n\n// SetupDiGetDeviceProperty function retrieves a specified device instance property.\nfunc SetupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY) (value interface{}, err error) {\n\treqSize := uint32(256)\n\tfor {\n\t\tvar dataType DEVPROPTYPE\n\t\tbuf := make([]byte, reqSize)\n\t\terr = setupDiGetDeviceProperty(deviceInfoSet, deviceInfoData, propertyKey, &dataType, &buf[0], uint32(len(buf)), &reqSize, 0)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tswitch dataType {\n\t\tcase DEVPROP_TYPE_STRING:\n\t\t\tret := UTF16ToString(bufToUTF16(buf))\n\t\t\truntime.KeepAlive(buf)\n\t\t\treturn ret, nil\n\t\t}\n\t\treturn nil, errors.New(\"unimplemented property type\")\n\t}\n}\n\n//sys\tsetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceRegistryPropertyW\n\n// SetupDiGetDeviceRegistryProperty function retrieves a specified Plug and Play device property.\nfunc SetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP) (value interface{}, err error) {\n\treqSize := uint32(256)\n\tfor {\n\t\tvar dataType uint32\n\t\tbuf := make([]byte, reqSize)\n\t\terr = setupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &dataType, &buf[0], uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\treturn getRegistryValue(buf[:reqSize], dataType)\n\t}\n}\n\nfunc getRegistryValue(buf []byte, dataType uint32) (interface{}, error) {\n\tswitch dataType {\n\tcase REG_SZ:\n\t\tret := UTF16ToString(bufToUTF16(buf))\n\t\truntime.KeepAlive(buf)\n\t\treturn ret, nil\n\tcase REG_EXPAND_SZ:\n\t\tvalue := UTF16ToString(bufToUTF16(buf))\n\t\tif value == \"\" {\n\t\t\treturn \"\", nil\n\t\t}\n\t\tp, err := syscall.UTF16PtrFromString(value)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tret := make([]uint16, 100)\n\t\tfor {\n\t\t\tn, err := ExpandEnvironmentStrings(p, &ret[0], uint32(len(ret)))\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\tif n <= uint32(len(ret)) {\n\t\t\t\treturn UTF16ToString(ret[:n]), nil\n\t\t\t}\n\t\t\tret = make([]uint16, n)\n\t\t}\n\tcase REG_BINARY:\n\t\treturn buf, nil\n\tcase REG_DWORD_LITTLE_ENDIAN:\n\t\treturn binary.LittleEndian.Uint32(buf), nil\n\tcase REG_DWORD_BIG_ENDIAN:\n\t\treturn binary.BigEndian.Uint32(buf), nil\n\tcase REG_MULTI_SZ:\n\t\tbufW := bufToUTF16(buf)\n\t\ta := []string{}\n\t\tfor i := 0; i < len(bufW); {\n\t\t\tj := i + wcslen(bufW[i:])\n\t\t\tif i < j {\n\t\t\t\ta = append(a, UTF16ToString(bufW[i:j]))\n\t\t\t}\n\t\t\ti = j + 1\n\t\t}\n\t\truntime.KeepAlive(buf)\n\t\treturn a, nil\n\tcase REG_QWORD_LITTLE_ENDIAN:\n\t\treturn binary.LittleEndian.Uint64(buf), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"Unsupported registry value type: %v\", dataType)\n\t}\n}\n\n// bufToUTF16 function reinterprets []byte buffer as []uint16\nfunc bufToUTF16(buf []byte) []uint16 {\n\tsl := struct {\n\t\taddr *uint16\n\t\tlen  int\n\t\tcap  int\n\t}{(*uint16)(unsafe.Pointer(&buf[0])), len(buf) / 2, cap(buf) / 2}\n\treturn *(*[]uint16)(unsafe.Pointer(&sl))\n}\n\n// utf16ToBuf function reinterprets []uint16 as []byte\nfunc utf16ToBuf(buf []uint16) []byte {\n\tsl := struct {\n\t\taddr *byte\n\t\tlen  int\n\t\tcap  int\n\t}{(*byte)(unsafe.Pointer(&buf[0])), len(buf) * 2, cap(buf) * 2}\n\treturn *(*[]byte)(unsafe.Pointer(&sl))\n}\n\nfunc wcslen(str []uint16) int {\n\tfor i := 0; i < len(str); i++ {\n\t\tif str[i] == 0 {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(str)\n}\n\n// DeviceRegistryProperty method retrieves a specified Plug and Play device property.\nfunc (deviceInfoSet DevInfo) DeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP) (interface{}, error) {\n\treturn SetupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property)\n}\n\n//sys\tsetupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) = setupapi.SetupDiSetDeviceRegistryPropertyW\n\n// SetupDiSetDeviceRegistryProperty function sets a Plug and Play device property for a device.\nfunc SetupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error {\n\treturn setupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &propertyBuffers[0], uint32(len(propertyBuffers)))\n}\n\n// SetDeviceRegistryProperty function sets a Plug and Play device property for a device.\nfunc (deviceInfoSet DevInfo) SetDeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error {\n\treturn SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, propertyBuffers)\n}\n\n// SetDeviceRegistryPropertyString method sets a Plug and Play device property string for a device.\nfunc (deviceInfoSet DevInfo) SetDeviceRegistryPropertyString(deviceInfoData *DevInfoData, property SPDRP, str string) error {\n\tstr16, err := UTF16FromString(str)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, utf16ToBuf(append(str16, 0)))\n\truntime.KeepAlive(str16)\n\treturn err\n}\n\n//sys\tsetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiGetDeviceInstallParamsW\n\n// SetupDiGetDeviceInstallParams function retrieves device installation parameters for a device information set or a particular device information element.\nfunc SetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DevInstallParams, error) {\n\tparams := &DevInstallParams{}\n\tparams.size = uint32(unsafe.Sizeof(*params))\n\n\treturn params, setupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData, params)\n}\n\n// DeviceInstallParams method retrieves device installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) DeviceInstallParams(deviceInfoData *DevInfoData) (*DevInstallParams, error) {\n\treturn SetupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tsetupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceInstanceIdW\n\n// SetupDiGetDeviceInstanceId function retrieves the instance ID of the device.\nfunc SetupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (string, error) {\n\treqSize := uint32(1024)\n\tfor {\n\t\tbuf := make([]uint16, reqSize)\n\t\terr := setupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData, &buf[0], uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn UTF16ToString(buf), nil\n\t}\n}\n\n// DeviceInstanceID method retrieves the instance ID of the device.\nfunc (deviceInfoSet DevInfo) DeviceInstanceID(deviceInfoData *DevInfoData) (string, error) {\n\treturn SetupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData)\n}\n\n// SetupDiGetClassInstallParams function retrieves class installation parameters for a device information set or a particular device information element.\n//sys\tSetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetClassInstallParamsW\n\n// ClassInstallParams method retrieves class installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) ClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) error {\n\treturn SetupDiGetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize, requiredSize)\n}\n\n//sys\tSetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiSetDeviceInstallParamsW\n\n// SetDeviceInstallParams member sets device installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SetDeviceInstallParams(deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) error {\n\treturn SetupDiSetDeviceInstallParams(deviceInfoSet, deviceInfoData, deviceInstallParams)\n}\n\n// SetupDiSetClassInstallParams function sets or clears class install parameters for a device information set or a particular device information element.\n//sys\tSetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) = setupapi.SetupDiSetClassInstallParamsW\n\n// SetClassInstallParams method sets or clears class install parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SetClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) error {\n\treturn SetupDiSetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize)\n}\n\n//sys\tsetupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassNameFromGuidExW\n\n// SetupDiClassNameFromGuidEx function retrieves the class name associated with a class GUID. The class can be installed on a local or remote computer.\nfunc SetupDiClassNameFromGuidEx(classGUID *GUID, machineName string) (className string, err error) {\n\tvar classNameUTF16 [MAX_CLASS_NAME_LEN]uint16\n\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\terr = setupDiClassNameFromGuidEx(classGUID, &classNameUTF16[0], MAX_CLASS_NAME_LEN, nil, machineNameUTF16, 0)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tclassName = UTF16ToString(classNameUTF16[:])\n\treturn\n}\n\n//sys\tsetupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassGuidsFromNameExW\n\n// SetupDiClassGuidsFromNameEx function retrieves the GUIDs associated with the specified class name. This resulting list contains the classes currently installed on a local or remote computer.\nfunc SetupDiClassGuidsFromNameEx(className string, machineName string) ([]GUID, error) {\n\tclassNameUTF16, err := UTF16PtrFromString(className)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treqSize := uint32(4)\n\tfor {\n\t\tbuf := make([]GUID, reqSize)\n\t\terr = setupDiClassGuidsFromNameEx(classNameUTF16, &buf[0], uint32(len(buf)), &reqSize, machineNameUTF16, 0)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn buf[:reqSize], nil\n\t}\n}\n\n//sys\tsetupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiGetSelectedDevice\n\n// SetupDiGetSelectedDevice function retrieves the selected device information element in a device information set.\nfunc SetupDiGetSelectedDevice(deviceInfoSet DevInfo) (*DevInfoData, error) {\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiGetSelectedDevice(deviceInfoSet, data)\n}\n\n// SelectedDevice method retrieves the selected device information element in a device information set.\nfunc (deviceInfoSet DevInfo) SelectedDevice() (*DevInfoData, error) {\n\treturn SetupDiGetSelectedDevice(deviceInfoSet)\n}\n\n// SetupDiSetSelectedDevice function sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard.\n//sys\tSetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiSetSelectedDevice\n\n// SetSelectedDevice method sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard.\nfunc (deviceInfoSet DevInfo) SetSelectedDevice(deviceInfoData *DevInfoData) error {\n\treturn SetupDiSetSelectedDevice(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tsetupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) = setupapi.SetupUninstallOEMInfW\n\n// SetupUninstallOEMInf uninstalls the specified driver.\nfunc SetupUninstallOEMInf(infFileName string, flags SUOI) error {\n\tinfFileName16, err := UTF16PtrFromString(infFileName)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn setupUninstallOEMInf(infFileName16, flags, 0)\n}\n\n//sys cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) = CfgMgr32.CM_MapCrToWin32Err\n\n//sys cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_List_SizeW\n//sys cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_ListW\n\nfunc CM_Get_Device_Interface_List(deviceID string, interfaceClass *GUID, flags uint32) ([]string, error) {\n\tdeviceID16, err := UTF16PtrFromString(deviceID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar buf []uint16\n\tvar buflen uint32\n\tfor {\n\t\tif ret := cm_Get_Device_Interface_List_Size(&buflen, interfaceClass, deviceID16, flags); ret != CR_SUCCESS {\n\t\t\treturn nil, ret\n\t\t}\n\t\tbuf = make([]uint16, buflen)\n\t\tif ret := cm_Get_Device_Interface_List(interfaceClass, deviceID16, &buf[0], buflen, flags); ret == CR_SUCCESS {\n\t\t\tbreak\n\t\t} else if ret != CR_BUFFER_SMALL {\n\t\t\treturn nil, ret\n\t\t}\n\t}\n\tvar interfaces []string\n\tfor i := 0; i < len(buf); {\n\t\tj := i + wcslen(buf[i:])\n\t\tif i < j {\n\t\t\tinterfaces = append(interfaces, UTF16ToString(buf[i:j]))\n\t\t}\n\t\ti = j + 1\n\t}\n\tif interfaces == nil {\n\t\treturn nil, ERROR_NO_SUCH_DEVICE_INTERFACE\n\t}\n\treturn interfaces, nil\n}\n\n//sys cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_DevNode_Status\n\nfunc CM_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) error {\n\tret := cm_Get_DevNode_Status(status, problemNumber, devInst, flags)\n\tif ret == CR_SUCCESS {\n\t\treturn nil\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/str.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nfunc itoa(val int) string { // do it here rather than with fmt to avoid dependency\n\tif val < 0 {\n\t\treturn \"-\" + itoa(-val)\n\t}\n\tvar buf [32]byte // big enough for int64\n\ti := len(buf) - 1\n\tfor val >= 10 {\n\t\tbuf[i] = byte(val%10 + '0')\n\t\ti--\n\t\tval /= 10\n\t}\n\tbuf[i] = byte(val + '0')\n\treturn string(buf[i:])\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/syscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\n// Package windows contains an interface to the low-level operating system\n// primitives. OS details vary depending on the underlying system, and\n// by default, godoc will display the OS-specific documentation for the current\n// system. If you want godoc to display syscall documentation for another\n// system, set $GOOS and $GOARCH to the desired system. For example, if\n// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS\n// to freebsd and $GOARCH to arm.\n//\n// The primary use of this package is inside other packages that provide a more\n// portable interface to the system, such as \"os\", \"time\" and \"net\".  Use\n// those packages rather than this one if you can.\n//\n// For details of the functions and data types in this package consult\n// the manuals for the appropriate operating system.\n//\n// These calls return err == nil to indicate success; otherwise\n// err represents an operating system error describing the failure and\n// holds a value of type syscall.Errno.\npackage windows // import \"golang.org/x/sys/windows\"\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// ByteSliceFromString returns a NUL-terminated slice of bytes\n// containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc ByteSliceFromString(s string) ([]byte, error) {\n\tif strings.IndexByte(s, 0) != -1 {\n\t\treturn nil, syscall.EINVAL\n\t}\n\ta := make([]byte, len(s)+1)\n\tcopy(a, s)\n\treturn a, nil\n}\n\n// BytePtrFromString returns a pointer to a NUL-terminated array of\n// bytes containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc BytePtrFromString(s string) (*byte, error) {\n\ta, err := ByteSliceFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any\n// bytes after the NUL removed.\nfunc ByteSliceToString(s []byte) string {\n\tif i := bytes.IndexByte(s, 0); i != -1 {\n\t\ts = s[:i]\n\t}\n\treturn string(s)\n}\n\n// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.\n// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated\n// at a zero byte; if the zero byte is not present, the program may crash.\nfunc BytePtrToString(p *byte) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + 1)\n\t}\n\n\treturn string(unsafe.Slice(p, n))\n}\n\n// Single-word zero for use when we need a valid pointer to 0 bytes.\n// See mksyscall.pl.\nvar _zero uintptr\n\nfunc (ts *Timespec) Unix() (sec int64, nsec int64) {\n\treturn int64(ts.Sec), int64(ts.Nsec)\n}\n\nfunc (tv *Timeval) Unix() (sec int64, nsec int64) {\n\treturn int64(tv.Sec), int64(tv.Usec) * 1000\n}\n\nfunc (ts *Timespec) Nano() int64 {\n\treturn int64(ts.Sec)*1e9 + int64(ts.Nsec)\n}\n\nfunc (tv *Timeval) Nano() int64 {\n\treturn int64(tv.Sec)*1e9 + int64(tv.Usec)*1000\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/syscall_windows.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Windows system calls.\n\npackage windows\n\nimport (\n\terrorspkg \"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n\t\"unicode/utf16\"\n\t\"unsafe\"\n)\n\ntype 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\n\treturn string(utf16.Decode(unsafe.Slice(p, n)))\n}\n\nfunc Getpagesize() int { return 4096 }\n\n// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention.\n// This is useful when interoperating with Windows code requiring callbacks.\n// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr.\nfunc NewCallback(fn interface{}) uintptr {\n\treturn syscall.NewCallback(fn)\n}\n\n// NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention.\n// This is useful when interoperating with Windows code requiring callbacks.\n// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr.\nfunc NewCallbackCDecl(fn interface{}) uintptr {\n\treturn syscall.NewCallbackCDecl(fn)\n}\n\n// windows api calls\n\n//sys\tGetLastError() (lasterr error)\n//sys\tLoadLibrary(libname string) (handle Handle, err error) = LoadLibraryW\n//sys\tLoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW\n//sys\tFreeLibrary(handle Handle) (err error)\n//sys\tGetProcAddress(module Handle, procname string) (proc uintptr, err error)\n//sys\tGetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) = kernel32.GetModuleFileNameW\n//sys\tGetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) = kernel32.GetModuleHandleExW\n//sys\tSetDefaultDllDirectories(directoryFlags uint32) (err error)\n//sys\tAddDllDirectory(path *uint16) (cookie uintptr, err error) = kernel32.AddDllDirectory\n//sys\tRemoveDllDirectory(cookie uintptr) (err error) = kernel32.RemoveDllDirectory\n//sys\tSetDllDirectory(path string) (err error) = kernel32.SetDllDirectoryW\n//sys\tGetVersion() (ver uint32, err error)\n//sys\tFormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW\n//sys\tExitProcess(exitcode uint32)\n//sys\tIsWow64Process(handle Handle, isWow64 *bool) (err error) = IsWow64Process\n//sys\tIsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) = IsWow64Process2?\n//sys\tCreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW\n//sys\tCreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error)  [failretval==InvalidHandle] = CreateNamedPipeW\n//sys\tConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error)\n//sys\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\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 interface{}, keep **uint16) (uintptr, error) {\n\t\tswitch v := i.(type) {\n\t\tcase string:\n\t\t\t*keep, err = UTF16PtrFromString(v)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\treturn uintptr(unsafe.Pointer(*keep)), nil\n\t\tcase ResourceID:\n\t\t\treturn uintptr(v), nil\n\t\t}\n\t\treturn 0, errorspkg.New(\"parameter must be a ResourceID or a string\")\n\t}\n\tnamePtr, err = resolvePtr(name, &name16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tresTypePtr, err = resolvePtr(resType, &resType16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tresInfo, err := findResource(module, namePtr, resTypePtr)\n\truntime.KeepAlive(name16)\n\truntime.KeepAlive(resType16)\n\treturn resInfo, err\n}\n\nfunc LoadResourceData(module, resInfo Handle) (data []byte, err error) {\n\tsize, err := SizeofResource(module, resInfo)\n\tif err != nil {\n\t\treturn\n\t}\n\tresData, err := LoadResource(module, resInfo)\n\tif err != nil {\n\t\treturn\n\t}\n\tptr, err := LockResource(resData)\n\tif err != nil {\n\t\treturn\n\t}\n\tdata = unsafe.Slice((*byte)(unsafe.Pointer(ptr)), size)\n\treturn\n}\n\n// PSAPI_WORKING_SET_EX_BLOCK contains extended working set information for a page.\ntype PSAPI_WORKING_SET_EX_BLOCK uint64\n\n// Valid returns the validity of this page.\n// If this bit is 1, the subsequent members are valid; otherwise they should be ignored.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Valid() bool {\n\treturn (b & 1) == 1\n}\n\n// ShareCount is the number of processes that share this page. The maximum value of this member is 7.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) ShareCount() uint64 {\n\treturn b.intField(1, 3)\n}\n\n// Win32Protection is the memory protection attributes of the page. For a list of values, see\n// https://docs.microsoft.com/en-us/windows/win32/memory/memory-protection-constants\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Win32Protection() uint64 {\n\treturn b.intField(4, 11)\n}\n\n// Shared returns the shared status of this page.\n// If this bit is 1, the page can be shared.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Shared() bool {\n\treturn (b & (1 << 15)) == 1\n}\n\n// Node is the NUMA node. The maximum value of this member is 63.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Node() uint64 {\n\treturn b.intField(16, 6)\n}\n\n// Locked returns the locked status of this page.\n// If this bit is 1, the virtual page is locked in physical memory.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Locked() bool {\n\treturn (b & (1 << 22)) == 1\n}\n\n// LargePage returns the large page status of this page.\n// If this bit is 1, the page is a large page.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) LargePage() bool {\n\treturn (b & (1 << 23)) == 1\n}\n\n// Bad returns the bad status of this page.\n// If this bit is 1, the page is has been reported as bad.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Bad() bool {\n\treturn (b & (1 << 31)) == 1\n}\n\n// intField extracts an integer field in the PSAPI_WORKING_SET_EX_BLOCK union.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) intField(start, length int) uint64 {\n\tvar mask PSAPI_WORKING_SET_EX_BLOCK\n\tfor pos := start; pos < start+length; pos++ {\n\t\tmask |= (1 << pos)\n\t}\n\n\tmasked := b & mask\n\treturn uint64(masked >> start)\n}\n\n// PSAPI_WORKING_SET_EX_INFORMATION contains extended working set information for a process.\ntype PSAPI_WORKING_SET_EX_INFORMATION struct {\n\t// The virtual address.\n\tVirtualAddress Pointer\n\t// A PSAPI_WORKING_SET_EX_BLOCK union that indicates the attributes of the page at VirtualAddress.\n\tVirtualAttributes PSAPI_WORKING_SET_EX_BLOCK\n}\n\n// CreatePseudoConsole creates a windows pseudo console.\nfunc CreatePseudoConsole(size Coord, in Handle, out Handle, flags uint32, pconsole *Handle) error {\n\t// We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only\n\t// accept arguments that can be casted to uintptr, and Coord can't.\n\treturn createPseudoConsole(*((*uint32)(unsafe.Pointer(&size))), in, out, flags, pconsole)\n}\n\n// ResizePseudoConsole resizes the internal buffers of the pseudo console to the width and height specified in `size`.\nfunc ResizePseudoConsole(pconsole Handle, size Coord) error {\n\t// We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only\n\t// accept arguments that can be casted to uintptr, and Coord can't.\n\treturn resizePseudoConsole(pconsole, *((*uint32)(unsafe.Pointer(&size))))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"net\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// NTStatus corresponds with NTSTATUS, error values returned by ntdll.dll and\n// other native functions.\ntype NTStatus uint32\n\nconst (\n\t// Invented values to support what package os expects.\n\tO_RDONLY   = 0x00000\n\tO_WRONLY   = 0x00001\n\tO_RDWR     = 0x00002\n\tO_CREAT    = 0x00040\n\tO_EXCL     = 0x00080\n\tO_NOCTTY   = 0x00100\n\tO_TRUNC    = 0x00200\n\tO_NONBLOCK = 0x00800\n\tO_APPEND   = 0x00400\n\tO_SYNC     = 0x01000\n\tO_ASYNC    = 0x02000\n\tO_CLOEXEC  = 0x80000\n)\n\nconst (\n\t// More invented values for signals\n\tSIGHUP  = Signal(0x1)\n\tSIGINT  = Signal(0x2)\n\tSIGQUIT = Signal(0x3)\n\tSIGILL  = Signal(0x4)\n\tSIGTRAP = Signal(0x5)\n\tSIGABRT = Signal(0x6)\n\tSIGBUS  = Signal(0x7)\n\tSIGFPE  = Signal(0x8)\n\tSIGKILL = Signal(0x9)\n\tSIGSEGV = Signal(0xb)\n\tSIGPIPE = Signal(0xd)\n\tSIGALRM = Signal(0xe)\n\tSIGTERM = Signal(0xf)\n)\n\nvar signals = [...]string{\n\t1:  \"hangup\",\n\t2:  \"interrupt\",\n\t3:  \"quit\",\n\t4:  \"illegal instruction\",\n\t5:  \"trace/breakpoint trap\",\n\t6:  \"aborted\",\n\t7:  \"bus error\",\n\t8:  \"floating point exception\",\n\t9:  \"killed\",\n\t10: \"user defined signal 1\",\n\t11: \"segmentation fault\",\n\t12: \"user defined signal 2\",\n\t13: \"broken pipe\",\n\t14: \"alarm clock\",\n\t15: \"terminated\",\n}\n\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 interface{}\n\n// Predefined resource names and types.\nvar (\n\t// Predefined names.\n\tCREATEPROCESS_MANIFEST_RESOURCE_ID                 ResourceID = 1\n\tISOLATIONAWARE_MANIFEST_RESOURCE_ID                ResourceID = 2\n\tISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID ResourceID = 3\n\tISOLATIONPOLICY_MANIFEST_RESOURCE_ID               ResourceID = 4\n\tISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID       ResourceID = 5\n\tMINIMUM_RESERVED_MANIFEST_RESOURCE_ID              ResourceID = 1  // inclusive\n\tMAXIMUM_RESERVED_MANIFEST_RESOURCE_ID              ResourceID = 16 // inclusive\n\n\t// Predefined types.\n\tRT_CURSOR       ResourceID = 1\n\tRT_BITMAP       ResourceID = 2\n\tRT_ICON         ResourceID = 3\n\tRT_MENU         ResourceID = 4\n\tRT_DIALOG       ResourceID = 5\n\tRT_STRING       ResourceID = 6\n\tRT_FONTDIR      ResourceID = 7\n\tRT_FONT         ResourceID = 8\n\tRT_ACCELERATOR  ResourceID = 9\n\tRT_RCDATA       ResourceID = 10\n\tRT_MESSAGETABLE ResourceID = 11\n\tRT_GROUP_CURSOR ResourceID = 12\n\tRT_GROUP_ICON   ResourceID = 14\n\tRT_VERSION      ResourceID = 16\n\tRT_DLGINCLUDE   ResourceID = 17\n\tRT_PLUGPLAY     ResourceID = 19\n\tRT_VXD          ResourceID = 20\n\tRT_ANICURSOR    ResourceID = 21\n\tRT_ANIICON      ResourceID = 22\n\tRT_HTML         ResourceID = 23\n\tRT_MANIFEST     ResourceID = 24\n)\n\ntype VS_FIXEDFILEINFO struct {\n\tSignature        uint32\n\tStrucVersion     uint32\n\tFileVersionMS    uint32\n\tFileVersionLS    uint32\n\tProductVersionMS uint32\n\tProductVersionLS uint32\n\tFileFlagsMask    uint32\n\tFileFlags        uint32\n\tFileOS           uint32\n\tFileType         uint32\n\tFileSubtype      uint32\n\tFileDateMS       uint32\n\tFileDateLS       uint32\n}\n\ntype COAUTHIDENTITY struct {\n\tUser           *uint16\n\tUserLength     uint32\n\tDomain         *uint16\n\tDomainLength   uint32\n\tPassword       *uint16\n\tPasswordLength uint32\n\tFlags          uint32\n}\n\ntype COAUTHINFO struct {\n\tAuthnSvc           uint32\n\tAuthzSvc           uint32\n\tServerPrincName    *uint16\n\tAuthnLevel         uint32\n\tImpersonationLevel uint32\n\tAuthIdentityData   *COAUTHIDENTITY\n\tCapabilities       uint32\n}\n\ntype COSERVERINFO struct {\n\tReserved1 uint32\n\tAame      *uint16\n\tAuthInfo  *COAUTHINFO\n\tReserved2 uint32\n}\n\ntype BIND_OPTS3 struct {\n\tCbStruct          uint32\n\tFlags             uint32\n\tMode              uint32\n\tTickCountDeadline uint32\n\tTrackFlags        uint32\n\tClassContext      uint32\n\tLocale            uint32\n\tServerInfo        *COSERVERINFO\n\tHwnd              HWND\n}\n\nconst (\n\tCLSCTX_INPROC_SERVER          = 0x1\n\tCLSCTX_INPROC_HANDLER         = 0x2\n\tCLSCTX_LOCAL_SERVER           = 0x4\n\tCLSCTX_INPROC_SERVER16        = 0x8\n\tCLSCTX_REMOTE_SERVER          = 0x10\n\tCLSCTX_INPROC_HANDLER16       = 0x20\n\tCLSCTX_RESERVED1              = 0x40\n\tCLSCTX_RESERVED2              = 0x80\n\tCLSCTX_RESERVED3              = 0x100\n\tCLSCTX_RESERVED4              = 0x200\n\tCLSCTX_NO_CODE_DOWNLOAD       = 0x400\n\tCLSCTX_RESERVED5              = 0x800\n\tCLSCTX_NO_CUSTOM_MARSHAL      = 0x1000\n\tCLSCTX_ENABLE_CODE_DOWNLOAD   = 0x2000\n\tCLSCTX_NO_FAILURE_LOG         = 0x4000\n\tCLSCTX_DISABLE_AAA            = 0x8000\n\tCLSCTX_ENABLE_AAA             = 0x10000\n\tCLSCTX_FROM_DEFAULT_CONTEXT   = 0x20000\n\tCLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000\n\tCLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000\n\tCLSCTX_ENABLE_CLOAKING        = 0x100000\n\tCLSCTX_APPCONTAINER           = 0x400000\n\tCLSCTX_ACTIVATE_AAA_AS_IU     = 0x800000\n\tCLSCTX_PS_DLL                 = 0x80000000\n\n\tCOINIT_MULTITHREADED     = 0x0\n\tCOINIT_APARTMENTTHREADED = 0x2\n\tCOINIT_DISABLE_OLE1DDE   = 0x4\n\tCOINIT_SPEED_OVER_MEMORY = 0x8\n)\n\n// Flag for QueryFullProcessImageName.\nconst PROCESS_NAME_NATIVE = 1\n\ntype ModuleInfo struct {\n\tBaseOfDll   uintptr\n\tSizeOfImage uint32\n\tEntryPoint  uintptr\n}\n\nconst ALL_PROCESSOR_GROUPS = 0xFFFF\n\ntype Rect struct {\n\tLeft   int32\n\tTop    int32\n\tRight  int32\n\tBottom int32\n}\n\ntype GUIThreadInfo struct {\n\tSize        uint32\n\tFlags       uint32\n\tActive      HWND\n\tFocus       HWND\n\tCapture     HWND\n\tMenuOwner   HWND\n\tMoveSize    HWND\n\tCaretHandle HWND\n\tCaretRect   Rect\n}\n\nconst (\n\tDWMWA_NCRENDERING_ENABLED            = 1\n\tDWMWA_NCRENDERING_POLICY             = 2\n\tDWMWA_TRANSITIONS_FORCEDISABLED      = 3\n\tDWMWA_ALLOW_NCPAINT                  = 4\n\tDWMWA_CAPTION_BUTTON_BOUNDS          = 5\n\tDWMWA_NONCLIENT_RTL_LAYOUT           = 6\n\tDWMWA_FORCE_ICONIC_REPRESENTATION    = 7\n\tDWMWA_FLIP3D_POLICY                  = 8\n\tDWMWA_EXTENDED_FRAME_BOUNDS          = 9\n\tDWMWA_HAS_ICONIC_BITMAP              = 10\n\tDWMWA_DISALLOW_PEEK                  = 11\n\tDWMWA_EXCLUDED_FROM_PEEK             = 12\n\tDWMWA_CLOAK                          = 13\n\tDWMWA_CLOAKED                        = 14\n\tDWMWA_FREEZE_REPRESENTATION          = 15\n\tDWMWA_PASSIVE_UPDATE_MODE            = 16\n\tDWMWA_USE_HOSTBACKDROPBRUSH          = 17\n\tDWMWA_USE_IMMERSIVE_DARK_MODE        = 20\n\tDWMWA_WINDOW_CORNER_PREFERENCE       = 33\n\tDWMWA_BORDER_COLOR                   = 34\n\tDWMWA_CAPTION_COLOR                  = 35\n\tDWMWA_TEXT_COLOR                     = 36\n\tDWMWA_VISIBLE_FRAME_BORDER_THICKNESS = 37\n)\n\ntype WSAQUERYSET struct {\n\tSize                uint32\n\tServiceInstanceName *uint16\n\tServiceClassId      *GUID\n\tVersion             *WSAVersion\n\tComment             *uint16\n\tNameSpace           uint32\n\tNSProviderId        *GUID\n\tContext             *uint16\n\tNumberOfProtocols   uint32\n\tAfpProtocols        *AFProtocols\n\tQueryString         *uint16\n\tNumberOfCsAddrs     uint32\n\tSaBuffer            *CSAddrInfo\n\tOutputFlags         uint32\n\tBlob                *BLOB\n}\n\ntype WSAVersion struct {\n\tVersion                 uint32\n\tEnumerationOfComparison int32\n}\n\ntype AFProtocols struct {\n\tAddressFamily int32\n\tProtocol      int32\n}\n\ntype CSAddrInfo struct {\n\tLocalAddr  SocketAddress\n\tRemoteAddr SocketAddress\n\tSocketType int32\n\tProtocol   int32\n}\n\ntype BLOB struct {\n\tSize     uint32\n\tBlobData *byte\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows_386.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tPort    uint16\n\tProto   *byte\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n\t_                       uint32 // pad to 8 byte boundary\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows_amd64.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   *byte\n\tPort    uint16\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows_arm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tPort    uint16\n\tProto   *byte\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n\t_                       uint32 // pad to 8 byte boundary\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/types_windows_arm64.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   *byte\n\tPort    uint16\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/zerrors_windows.go",
    "content": "// Code generated by 'mkerrors.bash'; DO NOT EDIT.\n\npackage windows\n\nimport \"syscall\"\n\nconst (\n\tFACILITY_NULL                                                                           = 0\n\tFACILITY_RPC                                                                            = 1\n\tFACILITY_DISPATCH                                                                       = 2\n\tFACILITY_STORAGE                                                                        = 3\n\tFACILITY_ITF                                                                            = 4\n\tFACILITY_WIN32                                                                          = 7\n\tFACILITY_WINDOWS                                                                        = 8\n\tFACILITY_SSPI                                                                           = 9\n\tFACILITY_SECURITY                                                                       = 9\n\tFACILITY_CONTROL                                                                        = 10\n\tFACILITY_CERT                                                                           = 11\n\tFACILITY_INTERNET                                                                       = 12\n\tFACILITY_MEDIASERVER                                                                    = 13\n\tFACILITY_MSMQ                                                                           = 14\n\tFACILITY_SETUPAPI                                                                       = 15\n\tFACILITY_SCARD                                                                          = 16\n\tFACILITY_COMPLUS                                                                        = 17\n\tFACILITY_AAF                                                                            = 18\n\tFACILITY_URT                                                                            = 19\n\tFACILITY_ACS                                                                            = 20\n\tFACILITY_DPLAY                                                                          = 21\n\tFACILITY_UMI                                                                            = 22\n\tFACILITY_SXS                                                                            = 23\n\tFACILITY_WINDOWS_CE                                                                     = 24\n\tFACILITY_HTTP                                                                           = 25\n\tFACILITY_USERMODE_COMMONLOG                                                             = 26\n\tFACILITY_WER                                                                            = 27\n\tFACILITY_USERMODE_FILTER_MANAGER                                                        = 31\n\tFACILITY_BACKGROUNDCOPY                                                                 = 32\n\tFACILITY_CONFIGURATION                                                                  = 33\n\tFACILITY_WIA                                                                            = 33\n\tFACILITY_STATE_MANAGEMENT                                                               = 34\n\tFACILITY_METADIRECTORY                                                                  = 35\n\tFACILITY_WINDOWSUPDATE                                                                  = 36\n\tFACILITY_DIRECTORYSERVICE                                                               = 37\n\tFACILITY_GRAPHICS                                                                       = 38\n\tFACILITY_SHELL                                                                          = 39\n\tFACILITY_NAP                                                                            = 39\n\tFACILITY_TPM_SERVICES                                                                   = 40\n\tFACILITY_TPM_SOFTWARE                                                                   = 41\n\tFACILITY_UI                                                                             = 42\n\tFACILITY_XAML                                                                           = 43\n\tFACILITY_ACTION_QUEUE                                                                   = 44\n\tFACILITY_PLA                                                                            = 48\n\tFACILITY_WINDOWS_SETUP                                                                  = 48\n\tFACILITY_FVE                                                                            = 49\n\tFACILITY_FWP                                                                            = 50\n\tFACILITY_WINRM                                                                          = 51\n\tFACILITY_NDIS                                                                           = 52\n\tFACILITY_USERMODE_HYPERVISOR                                                            = 53\n\tFACILITY_CMI                                                                            = 54\n\tFACILITY_USERMODE_VIRTUALIZATION                                                        = 55\n\tFACILITY_USERMODE_VOLMGR                                                                = 56\n\tFACILITY_BCD                                                                            = 57\n\tFACILITY_USERMODE_VHD                                                                   = 58\n\tFACILITY_USERMODE_HNS                                                                   = 59\n\tFACILITY_SDIAG                                                                          = 60\n\tFACILITY_WEBSERVICES                                                                    = 61\n\tFACILITY_WINPE                                                                          = 61\n\tFACILITY_WPN                                                                            = 62\n\tFACILITY_WINDOWS_STORE                                                                  = 63\n\tFACILITY_INPUT                                                                          = 64\n\tFACILITY_EAP                                                                            = 66\n\tFACILITY_WINDOWS_DEFENDER                                                               = 80\n\tFACILITY_OPC                                                                            = 81\n\tFACILITY_XPS                                                                            = 82\n\tFACILITY_MBN                                                                            = 84\n\tFACILITY_POWERSHELL                                                                     = 84\n\tFACILITY_RAS                                                                            = 83\n\tFACILITY_P2P_INT                                                                        = 98\n\tFACILITY_P2P                                                                            = 99\n\tFACILITY_DAF                                                                            = 100\n\tFACILITY_BLUETOOTH_ATT                                                                  = 101\n\tFACILITY_AUDIO                                                                          = 102\n\tFACILITY_STATEREPOSITORY                                                                = 103\n\tFACILITY_VISUALCPP                                                                      = 109\n\tFACILITY_SCRIPT                                                                         = 112\n\tFACILITY_PARSE                                                                          = 113\n\tFACILITY_BLB                                                                            = 120\n\tFACILITY_BLB_CLI                                                                        = 121\n\tFACILITY_WSBAPP                                                                         = 122\n\tFACILITY_BLBUI                                                                          = 128\n\tFACILITY_USN                                                                            = 129\n\tFACILITY_USERMODE_VOLSNAP                                                               = 130\n\tFACILITY_TIERING                                                                        = 131\n\tFACILITY_WSB_ONLINE                                                                     = 133\n\tFACILITY_ONLINE_ID                                                                      = 134\n\tFACILITY_DEVICE_UPDATE_AGENT                                                            = 135\n\tFACILITY_DRVSERVICING                                                                   = 136\n\tFACILITY_DLS                                                                            = 153\n\tFACILITY_DELIVERY_OPTIMIZATION                                                          = 208\n\tFACILITY_USERMODE_SPACES                                                                = 231\n\tFACILITY_USER_MODE_SECURITY_CORE                                                        = 232\n\tFACILITY_USERMODE_LICENSING                                                             = 234\n\tFACILITY_SOS                                                                            = 160\n\tFACILITY_DEBUGGERS                                                                      = 176\n\tFACILITY_SPP                                                                            = 256\n\tFACILITY_RESTORE                                                                        = 256\n\tFACILITY_DMSERVER                                                                       = 256\n\tFACILITY_DEPLOYMENT_SERVICES_SERVER                                                     = 257\n\tFACILITY_DEPLOYMENT_SERVICES_IMAGING                                                    = 258\n\tFACILITY_DEPLOYMENT_SERVICES_MANAGEMENT                                                 = 259\n\tFACILITY_DEPLOYMENT_SERVICES_UTIL                                                       = 260\n\tFACILITY_DEPLOYMENT_SERVICES_BINLSVC                                                    = 261\n\tFACILITY_DEPLOYMENT_SERVICES_PXE                                                        = 263\n\tFACILITY_DEPLOYMENT_SERVICES_TFTP                                                       = 264\n\tFACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT                                       = 272\n\tFACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING                                        = 278\n\tFACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER                                           = 289\n\tFACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT                                           = 290\n\tFACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER                                           = 293\n\tFACILITY_LINGUISTIC_SERVICES                                                            = 305\n\tFACILITY_AUDIOSTREAMING                                                                 = 1094\n\tFACILITY_ACCELERATOR                                                                    = 1536\n\tFACILITY_WMAAECMA                                                                       = 1996\n\tFACILITY_DIRECTMUSIC                                                                    = 2168\n\tFACILITY_DIRECT3D10                                                                     = 2169\n\tFACILITY_DXGI                                                                           = 2170\n\tFACILITY_DXGI_DDI                                                                       = 2171\n\tFACILITY_DIRECT3D11                                                                     = 2172\n\tFACILITY_DIRECT3D11_DEBUG                                                               = 2173\n\tFACILITY_DIRECT3D12                                                                     = 2174\n\tFACILITY_DIRECT3D12_DEBUG                                                               = 2175\n\tFACILITY_LEAP                                                                           = 2184\n\tFACILITY_AUDCLNT                                                                        = 2185\n\tFACILITY_WINCODEC_DWRITE_DWM                                                            = 2200\n\tFACILITY_WINML                                                                          = 2192\n\tFACILITY_DIRECT2D                                                                       = 2201\n\tFACILITY_DEFRAG                                                                         = 2304\n\tFACILITY_USERMODE_SDBUS                                                                 = 2305\n\tFACILITY_JSCRIPT                                                                        = 2306\n\tFACILITY_PIDGENX                                                                        = 2561\n\tFACILITY_EAS                                                                            = 85\n\tFACILITY_WEB                                                                            = 885\n\tFACILITY_WEB_SOCKET                                                                     = 886\n\tFACILITY_MOBILE                                                                         = 1793\n\tFACILITY_SQLITE                                                                         = 1967\n\tFACILITY_UTC                                                                            = 1989\n\tFACILITY_WEP                                                                            = 2049\n\tFACILITY_SYNCENGINE                                                                     = 2050\n\tFACILITY_XBOX                                                                           = 2339\n\tFACILITY_GAME                                                                           = 2340\n\tFACILITY_PIX                                                                            = 2748\n\tERROR_SUCCESS                                                             syscall.Errno = 0\n\tNO_ERROR                                                                                = 0\n\tSEC_E_OK                                                                  Handle        = 0x00000000\n\tERROR_INVALID_FUNCTION                                                    syscall.Errno = 1\n\tERROR_FILE_NOT_FOUND                                                      syscall.Errno = 2\n\tERROR_PATH_NOT_FOUND                                                      syscall.Errno = 3\n\tERROR_TOO_MANY_OPEN_FILES                                                 syscall.Errno = 4\n\tERROR_ACCESS_DENIED                                                       syscall.Errno = 5\n\tERROR_INVALID_HANDLE                                                      syscall.Errno = 6\n\tERROR_ARENA_TRASHED                                                       syscall.Errno = 7\n\tERROR_NOT_ENOUGH_MEMORY                                                   syscall.Errno = 8\n\tERROR_INVALID_BLOCK                                                       syscall.Errno = 9\n\tERROR_BAD_ENVIRONMENT                                                     syscall.Errno = 10\n\tERROR_BAD_FORMAT                                                          syscall.Errno = 11\n\tERROR_INVALID_ACCESS                                                      syscall.Errno = 12\n\tERROR_INVALID_DATA                                                        syscall.Errno = 13\n\tERROR_OUTOFMEMORY                                                         syscall.Errno = 14\n\tERROR_INVALID_DRIVE                                                       syscall.Errno = 15\n\tERROR_CURRENT_DIRECTORY                                                   syscall.Errno = 16\n\tERROR_NOT_SAME_DEVICE                                                     syscall.Errno = 17\n\tERROR_NO_MORE_FILES                                                       syscall.Errno = 18\n\tERROR_WRITE_PROTECT                                                       syscall.Errno = 19\n\tERROR_BAD_UNIT                                                            syscall.Errno = 20\n\tERROR_NOT_READY                                                           syscall.Errno = 21\n\tERROR_BAD_COMMAND                                                         syscall.Errno = 22\n\tERROR_CRC                                                                 syscall.Errno = 23\n\tERROR_BAD_LENGTH                                                          syscall.Errno = 24\n\tERROR_SEEK                                                                syscall.Errno = 25\n\tERROR_NOT_DOS_DISK                                                        syscall.Errno = 26\n\tERROR_SECTOR_NOT_FOUND                                                    syscall.Errno = 27\n\tERROR_OUT_OF_PAPER                                                        syscall.Errno = 28\n\tERROR_WRITE_FAULT                                                         syscall.Errno = 29\n\tERROR_READ_FAULT                                                          syscall.Errno = 30\n\tERROR_GEN_FAILURE                                                         syscall.Errno = 31\n\tERROR_SHARING_VIOLATION                                                   syscall.Errno = 32\n\tERROR_LOCK_VIOLATION                                                      syscall.Errno = 33\n\tERROR_WRONG_DISK                                                          syscall.Errno = 34\n\tERROR_SHARING_BUFFER_EXCEEDED                                             syscall.Errno = 36\n\tERROR_HANDLE_EOF                                                          syscall.Errno = 38\n\tERROR_HANDLE_DISK_FULL                                                    syscall.Errno = 39\n\tERROR_NOT_SUPPORTED                                                       syscall.Errno = 50\n\tERROR_REM_NOT_LIST                                                        syscall.Errno = 51\n\tERROR_DUP_NAME                                                            syscall.Errno = 52\n\tERROR_BAD_NETPATH                                                         syscall.Errno = 53\n\tERROR_NETWORK_BUSY                                                        syscall.Errno = 54\n\tERROR_DEV_NOT_EXIST                                                       syscall.Errno = 55\n\tERROR_TOO_MANY_CMDS                                                       syscall.Errno = 56\n\tERROR_ADAP_HDW_ERR                                                        syscall.Errno = 57\n\tERROR_BAD_NET_RESP                                                        syscall.Errno = 58\n\tERROR_UNEXP_NET_ERR                                                       syscall.Errno = 59\n\tERROR_BAD_REM_ADAP                                                        syscall.Errno = 60\n\tERROR_PRINTQ_FULL                                                         syscall.Errno = 61\n\tERROR_NO_SPOOL_SPACE                                                      syscall.Errno = 62\n\tERROR_PRINT_CANCELLED                                                     syscall.Errno = 63\n\tERROR_NETNAME_DELETED                                                     syscall.Errno = 64\n\tERROR_NETWORK_ACCESS_DENIED                                               syscall.Errno = 65\n\tERROR_BAD_DEV_TYPE                                                        syscall.Errno = 66\n\tERROR_BAD_NET_NAME                                                        syscall.Errno = 67\n\tERROR_TOO_MANY_NAMES                                                      syscall.Errno = 68\n\tERROR_TOO_MANY_SESS                                                       syscall.Errno = 69\n\tERROR_SHARING_PAUSED                                                      syscall.Errno = 70\n\tERROR_REQ_NOT_ACCEP                                                       syscall.Errno = 71\n\tERROR_REDIR_PAUSED                                                        syscall.Errno = 72\n\tERROR_FILE_EXISTS                                                         syscall.Errno = 80\n\tERROR_CANNOT_MAKE                                                         syscall.Errno = 82\n\tERROR_FAIL_I24                                                            syscall.Errno = 83\n\tERROR_OUT_OF_STRUCTURES                                                   syscall.Errno = 84\n\tERROR_ALREADY_ASSIGNED                                                    syscall.Errno = 85\n\tERROR_INVALID_PASSWORD                                                    syscall.Errno = 86\n\tERROR_INVALID_PARAMETER                                                   syscall.Errno = 87\n\tERROR_NET_WRITE_FAULT                                                     syscall.Errno = 88\n\tERROR_NO_PROC_SLOTS                                                       syscall.Errno = 89\n\tERROR_TOO_MANY_SEMAPHORES                                                 syscall.Errno = 100\n\tERROR_EXCL_SEM_ALREADY_OWNED                                              syscall.Errno = 101\n\tERROR_SEM_IS_SET                                                          syscall.Errno = 102\n\tERROR_TOO_MANY_SEM_REQUESTS                                               syscall.Errno = 103\n\tERROR_INVALID_AT_INTERRUPT_TIME                                           syscall.Errno = 104\n\tERROR_SEM_OWNER_DIED                                                      syscall.Errno = 105\n\tERROR_SEM_USER_LIMIT                                                      syscall.Errno = 106\n\tERROR_DISK_CHANGE                                                         syscall.Errno = 107\n\tERROR_DRIVE_LOCKED                                                        syscall.Errno = 108\n\tERROR_BROKEN_PIPE                                                         syscall.Errno = 109\n\tERROR_OPEN_FAILED                                                         syscall.Errno = 110\n\tERROR_BUFFER_OVERFLOW                                                     syscall.Errno = 111\n\tERROR_DISK_FULL                                                           syscall.Errno = 112\n\tERROR_NO_MORE_SEARCH_HANDLES                                              syscall.Errno = 113\n\tERROR_INVALID_TARGET_HANDLE                                               syscall.Errno = 114\n\tERROR_INVALID_CATEGORY                                                    syscall.Errno = 117\n\tERROR_INVALID_VERIFY_SWITCH                                               syscall.Errno = 118\n\tERROR_BAD_DRIVER_LEVEL                                                    syscall.Errno = 119\n\tERROR_CALL_NOT_IMPLEMENTED                                                syscall.Errno = 120\n\tERROR_SEM_TIMEOUT                                                         syscall.Errno = 121\n\tERROR_INSUFFICIENT_BUFFER                                                 syscall.Errno = 122\n\tERROR_INVALID_NAME                                                        syscall.Errno = 123\n\tERROR_INVALID_LEVEL                                                       syscall.Errno = 124\n\tERROR_NO_VOLUME_LABEL                                                     syscall.Errno = 125\n\tERROR_MOD_NOT_FOUND                                                       syscall.Errno = 126\n\tERROR_PROC_NOT_FOUND                                                      syscall.Errno = 127\n\tERROR_WAIT_NO_CHILDREN                                                    syscall.Errno = 128\n\tERROR_CHILD_NOT_COMPLETE                                                  syscall.Errno = 129\n\tERROR_DIRECT_ACCESS_HANDLE                                                syscall.Errno = 130\n\tERROR_NEGATIVE_SEEK                                                       syscall.Errno = 131\n\tERROR_SEEK_ON_DEVICE                                                      syscall.Errno = 132\n\tERROR_IS_JOIN_TARGET                                                      syscall.Errno = 133\n\tERROR_IS_JOINED                                                           syscall.Errno = 134\n\tERROR_IS_SUBSTED                                                          syscall.Errno = 135\n\tERROR_NOT_JOINED                                                          syscall.Errno = 136\n\tERROR_NOT_SUBSTED                                                         syscall.Errno = 137\n\tERROR_JOIN_TO_JOIN                                                        syscall.Errno = 138\n\tERROR_SUBST_TO_SUBST                                                      syscall.Errno = 139\n\tERROR_JOIN_TO_SUBST                                                       syscall.Errno = 140\n\tERROR_SUBST_TO_JOIN                                                       syscall.Errno = 141\n\tERROR_BUSY_DRIVE                                                          syscall.Errno = 142\n\tERROR_SAME_DRIVE                                                          syscall.Errno = 143\n\tERROR_DIR_NOT_ROOT                                                        syscall.Errno = 144\n\tERROR_DIR_NOT_EMPTY                                                       syscall.Errno = 145\n\tERROR_IS_SUBST_PATH                                                       syscall.Errno = 146\n\tERROR_IS_JOIN_PATH                                                        syscall.Errno = 147\n\tERROR_PATH_BUSY                                                           syscall.Errno = 148\n\tERROR_IS_SUBST_TARGET                                                     syscall.Errno = 149\n\tERROR_SYSTEM_TRACE                                                        syscall.Errno = 150\n\tERROR_INVALID_EVENT_COUNT                                                 syscall.Errno = 151\n\tERROR_TOO_MANY_MUXWAITERS                                                 syscall.Errno = 152\n\tERROR_INVALID_LIST_FORMAT                                                 syscall.Errno = 153\n\tERROR_LABEL_TOO_LONG                                                      syscall.Errno = 154\n\tERROR_TOO_MANY_TCBS                                                       syscall.Errno = 155\n\tERROR_SIGNAL_REFUSED                                                      syscall.Errno = 156\n\tERROR_DISCARDED                                                           syscall.Errno = 157\n\tERROR_NOT_LOCKED                                                          syscall.Errno = 158\n\tERROR_BAD_THREADID_ADDR                                                   syscall.Errno = 159\n\tERROR_BAD_ARGUMENTS                                                       syscall.Errno = 160\n\tERROR_BAD_PATHNAME                                                        syscall.Errno = 161\n\tERROR_SIGNAL_PENDING                                                      syscall.Errno = 162\n\tERROR_MAX_THRDS_REACHED                                                   syscall.Errno = 164\n\tERROR_LOCK_FAILED                                                         syscall.Errno = 167\n\tERROR_BUSY                                                                syscall.Errno = 170\n\tERROR_DEVICE_SUPPORT_IN_PROGRESS                                          syscall.Errno = 171\n\tERROR_CANCEL_VIOLATION                                                    syscall.Errno = 173\n\tERROR_ATOMIC_LOCKS_NOT_SUPPORTED                                          syscall.Errno = 174\n\tERROR_INVALID_SEGMENT_NUMBER                                              syscall.Errno = 180\n\tERROR_INVALID_ORDINAL                                                     syscall.Errno = 182\n\tERROR_ALREADY_EXISTS                                                      syscall.Errno = 183\n\tERROR_INVALID_FLAG_NUMBER                                                 syscall.Errno = 186\n\tERROR_SEM_NOT_FOUND                                                       syscall.Errno = 187\n\tERROR_INVALID_STARTING_CODESEG                                            syscall.Errno = 188\n\tERROR_INVALID_STACKSEG                                                    syscall.Errno = 189\n\tERROR_INVALID_MODULETYPE                                                  syscall.Errno = 190\n\tERROR_INVALID_EXE_SIGNATURE                                               syscall.Errno = 191\n\tERROR_EXE_MARKED_INVALID                                                  syscall.Errno = 192\n\tERROR_BAD_EXE_FORMAT                                                      syscall.Errno = 193\n\tERROR_ITERATED_DATA_EXCEEDS_64k                                           syscall.Errno = 194\n\tERROR_INVALID_MINALLOCSIZE                                                syscall.Errno = 195\n\tERROR_DYNLINK_FROM_INVALID_RING                                           syscall.Errno = 196\n\tERROR_IOPL_NOT_ENABLED                                                    syscall.Errno = 197\n\tERROR_INVALID_SEGDPL                                                      syscall.Errno = 198\n\tERROR_AUTODATASEG_EXCEEDS_64k                                             syscall.Errno = 199\n\tERROR_RING2SEG_MUST_BE_MOVABLE                                            syscall.Errno = 200\n\tERROR_RELOC_CHAIN_XEEDS_SEGLIM                                            syscall.Errno = 201\n\tERROR_INFLOOP_IN_RELOC_CHAIN                                              syscall.Errno = 202\n\tERROR_ENVVAR_NOT_FOUND                                                    syscall.Errno = 203\n\tERROR_NO_SIGNAL_SENT                                                      syscall.Errno = 205\n\tERROR_FILENAME_EXCED_RANGE                                                syscall.Errno = 206\n\tERROR_RING2_STACK_IN_USE                                                  syscall.Errno = 207\n\tERROR_META_EXPANSION_TOO_LONG                                             syscall.Errno = 208\n\tERROR_INVALID_SIGNAL_NUMBER                                               syscall.Errno = 209\n\tERROR_THREAD_1_INACTIVE                                                   syscall.Errno = 210\n\tERROR_LOCKED                                                              syscall.Errno = 212\n\tERROR_TOO_MANY_MODULES                                                    syscall.Errno = 214\n\tERROR_NESTING_NOT_ALLOWED                                                 syscall.Errno = 215\n\tERROR_EXE_MACHINE_TYPE_MISMATCH                                           syscall.Errno = 216\n\tERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY                                     syscall.Errno = 217\n\tERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY                              syscall.Errno = 218\n\tERROR_FILE_CHECKED_OUT                                                    syscall.Errno = 220\n\tERROR_CHECKOUT_REQUIRED                                                   syscall.Errno = 221\n\tERROR_BAD_FILE_TYPE                                                       syscall.Errno = 222\n\tERROR_FILE_TOO_LARGE                                                      syscall.Errno = 223\n\tERROR_FORMS_AUTH_REQUIRED                                                 syscall.Errno = 224\n\tERROR_VIRUS_INFECTED                                                      syscall.Errno = 225\n\tERROR_VIRUS_DELETED                                                       syscall.Errno = 226\n\tERROR_PIPE_LOCAL                                                          syscall.Errno = 229\n\tERROR_BAD_PIPE                                                            syscall.Errno = 230\n\tERROR_PIPE_BUSY                                                           syscall.Errno = 231\n\tERROR_NO_DATA                                                             syscall.Errno = 232\n\tERROR_PIPE_NOT_CONNECTED                                                  syscall.Errno = 233\n\tERROR_MORE_DATA                                                           syscall.Errno = 234\n\tERROR_NO_WORK_DONE                                                        syscall.Errno = 235\n\tERROR_VC_DISCONNECTED                                                     syscall.Errno = 240\n\tERROR_INVALID_EA_NAME                                                     syscall.Errno = 254\n\tERROR_EA_LIST_INCONSISTENT                                                syscall.Errno = 255\n\tWAIT_TIMEOUT                                                              syscall.Errno = 258\n\tERROR_NO_MORE_ITEMS                                                       syscall.Errno = 259\n\tERROR_CANNOT_COPY                                                         syscall.Errno = 266\n\tERROR_DIRECTORY                                                           syscall.Errno = 267\n\tERROR_EAS_DIDNT_FIT                                                       syscall.Errno = 275\n\tERROR_EA_FILE_CORRUPT                                                     syscall.Errno = 276\n\tERROR_EA_TABLE_FULL                                                       syscall.Errno = 277\n\tERROR_INVALID_EA_HANDLE                                                   syscall.Errno = 278\n\tERROR_EAS_NOT_SUPPORTED                                                   syscall.Errno = 282\n\tERROR_NOT_OWNER                                                           syscall.Errno = 288\n\tERROR_TOO_MANY_POSTS                                                      syscall.Errno = 298\n\tERROR_PARTIAL_COPY                                                        syscall.Errno = 299\n\tERROR_OPLOCK_NOT_GRANTED                                                  syscall.Errno = 300\n\tERROR_INVALID_OPLOCK_PROTOCOL                                             syscall.Errno = 301\n\tERROR_DISK_TOO_FRAGMENTED                                                 syscall.Errno = 302\n\tERROR_DELETE_PENDING                                                      syscall.Errno = 303\n\tERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING                syscall.Errno = 304\n\tERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME                                   syscall.Errno = 305\n\tERROR_SECURITY_STREAM_IS_INCONSISTENT                                     syscall.Errno = 306\n\tERROR_INVALID_LOCK_RANGE                                                  syscall.Errno = 307\n\tERROR_IMAGE_SUBSYSTEM_NOT_PRESENT                                         syscall.Errno = 308\n\tERROR_NOTIFICATION_GUID_ALREADY_DEFINED                                   syscall.Errno = 309\n\tERROR_INVALID_EXCEPTION_HANDLER                                           syscall.Errno = 310\n\tERROR_DUPLICATE_PRIVILEGES                                                syscall.Errno = 311\n\tERROR_NO_RANGES_PROCESSED                                                 syscall.Errno = 312\n\tERROR_NOT_ALLOWED_ON_SYSTEM_FILE                                          syscall.Errno = 313\n\tERROR_DISK_RESOURCES_EXHAUSTED                                            syscall.Errno = 314\n\tERROR_INVALID_TOKEN                                                       syscall.Errno = 315\n\tERROR_DEVICE_FEATURE_NOT_SUPPORTED                                        syscall.Errno = 316\n\tERROR_MR_MID_NOT_FOUND                                                    syscall.Errno = 317\n\tERROR_SCOPE_NOT_FOUND                                                     syscall.Errno = 318\n\tERROR_UNDEFINED_SCOPE                                                     syscall.Errno = 319\n\tERROR_INVALID_CAP                                                         syscall.Errno = 320\n\tERROR_DEVICE_UNREACHABLE                                                  syscall.Errno = 321\n\tERROR_DEVICE_NO_RESOURCES                                                 syscall.Errno = 322\n\tERROR_DATA_CHECKSUM_ERROR                                                 syscall.Errno = 323\n\tERROR_INTERMIXED_KERNEL_EA_OPERATION                                      syscall.Errno = 324\n\tERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED                                       syscall.Errno = 326\n\tERROR_OFFSET_ALIGNMENT_VIOLATION                                          syscall.Errno = 327\n\tERROR_INVALID_FIELD_IN_PARAMETER_LIST                                     syscall.Errno = 328\n\tERROR_OPERATION_IN_PROGRESS                                               syscall.Errno = 329\n\tERROR_BAD_DEVICE_PATH                                                     syscall.Errno = 330\n\tERROR_TOO_MANY_DESCRIPTORS                                                syscall.Errno = 331\n\tERROR_SCRUB_DATA_DISABLED                                                 syscall.Errno = 332\n\tERROR_NOT_REDUNDANT_STORAGE                                               syscall.Errno = 333\n\tERROR_RESIDENT_FILE_NOT_SUPPORTED                                         syscall.Errno = 334\n\tERROR_COMPRESSED_FILE_NOT_SUPPORTED                                       syscall.Errno = 335\n\tERROR_DIRECTORY_NOT_SUPPORTED                                             syscall.Errno = 336\n\tERROR_NOT_READ_FROM_COPY                                                  syscall.Errno = 337\n\tERROR_FT_WRITE_FAILURE                                                    syscall.Errno = 338\n\tERROR_FT_DI_SCAN_REQUIRED                                                 syscall.Errno = 339\n\tERROR_INVALID_KERNEL_INFO_VERSION                                         syscall.Errno = 340\n\tERROR_INVALID_PEP_INFO_VERSION                                            syscall.Errno = 341\n\tERROR_OBJECT_NOT_EXTERNALLY_BACKED                                        syscall.Errno = 342\n\tERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN                                   syscall.Errno = 343\n\tERROR_COMPRESSION_NOT_BENEFICIAL                                          syscall.Errno = 344\n\tERROR_STORAGE_TOPOLOGY_ID_MISMATCH                                        syscall.Errno = 345\n\tERROR_BLOCKED_BY_PARENTAL_CONTROLS                                        syscall.Errno = 346\n\tERROR_BLOCK_TOO_MANY_REFERENCES                                           syscall.Errno = 347\n\tERROR_MARKED_TO_DISALLOW_WRITES                                           syscall.Errno = 348\n\tERROR_ENCLAVE_FAILURE                                                     syscall.Errno = 349\n\tERROR_FAIL_NOACTION_REBOOT                                                syscall.Errno = 350\n\tERROR_FAIL_SHUTDOWN                                                       syscall.Errno = 351\n\tERROR_FAIL_RESTART                                                        syscall.Errno = 352\n\tERROR_MAX_SESSIONS_REACHED                                                syscall.Errno = 353\n\tERROR_NETWORK_ACCESS_DENIED_EDP                                           syscall.Errno = 354\n\tERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL                                   syscall.Errno = 355\n\tERROR_EDP_POLICY_DENIES_OPERATION                                         syscall.Errno = 356\n\tERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED                                    syscall.Errno = 357\n\tERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT                               syscall.Errno = 358\n\tERROR_DEVICE_IN_MAINTENANCE                                               syscall.Errno = 359\n\tERROR_NOT_SUPPORTED_ON_DAX                                                syscall.Errno = 360\n\tERROR_DAX_MAPPING_EXISTS                                                  syscall.Errno = 361\n\tERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING                                     syscall.Errno = 362\n\tERROR_CLOUD_FILE_METADATA_CORRUPT                                         syscall.Errno = 363\n\tERROR_CLOUD_FILE_METADATA_TOO_LARGE                                       syscall.Errno = 364\n\tERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE                                  syscall.Errno = 365\n\tERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH                          syscall.Errno = 366\n\tERROR_CHILD_PROCESS_BLOCKED                                               syscall.Errno = 367\n\tERROR_STORAGE_LOST_DATA_PERSISTENCE                                       syscall.Errno = 368\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE                              syscall.Errno = 369\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT                         syscall.Errno = 370\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY                                     syscall.Errno = 371\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN                         syscall.Errno = 372\n\tERROR_GDI_HANDLE_LEAK                                                     syscall.Errno = 373\n\tERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS                                  syscall.Errno = 374\n\tERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED                           syscall.Errno = 375\n\tERROR_NOT_A_CLOUD_FILE                                                    syscall.Errno = 376\n\tERROR_CLOUD_FILE_NOT_IN_SYNC                                              syscall.Errno = 377\n\tERROR_CLOUD_FILE_ALREADY_CONNECTED                                        syscall.Errno = 378\n\tERROR_CLOUD_FILE_NOT_SUPPORTED                                            syscall.Errno = 379\n\tERROR_CLOUD_FILE_INVALID_REQUEST                                          syscall.Errno = 380\n\tERROR_CLOUD_FILE_READ_ONLY_VOLUME                                         syscall.Errno = 381\n\tERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY                                  syscall.Errno = 382\n\tERROR_CLOUD_FILE_VALIDATION_FAILED                                        syscall.Errno = 383\n\tERROR_SMB1_NOT_AVAILABLE                                                  syscall.Errno = 384\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION                        syscall.Errno = 385\n\tERROR_CLOUD_FILE_AUTHENTICATION_FAILED                                    syscall.Errno = 386\n\tERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES                                   syscall.Errno = 387\n\tERROR_CLOUD_FILE_NETWORK_UNAVAILABLE                                      syscall.Errno = 388\n\tERROR_CLOUD_FILE_UNSUCCESSFUL                                             syscall.Errno = 389\n\tERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT                                      syscall.Errno = 390\n\tERROR_CLOUD_FILE_IN_USE                                                   syscall.Errno = 391\n\tERROR_CLOUD_FILE_PINNED                                                   syscall.Errno = 392\n\tERROR_CLOUD_FILE_REQUEST_ABORTED                                          syscall.Errno = 393\n\tERROR_CLOUD_FILE_PROPERTY_CORRUPT                                         syscall.Errno = 394\n\tERROR_CLOUD_FILE_ACCESS_DENIED                                            syscall.Errno = 395\n\tERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS                                   syscall.Errno = 396\n\tERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT                                   syscall.Errno = 397\n\tERROR_CLOUD_FILE_REQUEST_CANCELED                                         syscall.Errno = 398\n\tERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED                                       syscall.Errno = 399\n\tERROR_THREAD_MODE_ALREADY_BACKGROUND                                      syscall.Errno = 400\n\tERROR_THREAD_MODE_NOT_BACKGROUND                                          syscall.Errno = 401\n\tERROR_PROCESS_MODE_ALREADY_BACKGROUND                                     syscall.Errno = 402\n\tERROR_PROCESS_MODE_NOT_BACKGROUND                                         syscall.Errno = 403\n\tERROR_CLOUD_FILE_PROVIDER_TERMINATED                                      syscall.Errno = 404\n\tERROR_NOT_A_CLOUD_SYNC_ROOT                                               syscall.Errno = 405\n\tERROR_FILE_PROTECTED_UNDER_DPL                                            syscall.Errno = 406\n\tERROR_VOLUME_NOT_CLUSTER_ALIGNED                                          syscall.Errno = 407\n\tERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND                              syscall.Errno = 408\n\tERROR_APPX_FILE_NOT_ENCRYPTED                                             syscall.Errno = 409\n\tERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED                                  syscall.Errno = 410\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET                        syscall.Errno = 411\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE                         syscall.Errno = 412\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER                         syscall.Errno = 413\n\tERROR_LINUX_SUBSYSTEM_NOT_PRESENT                                         syscall.Errno = 414\n\tERROR_FT_READ_FAILURE                                                     syscall.Errno = 415\n\tERROR_STORAGE_RESERVE_ID_INVALID                                          syscall.Errno = 416\n\tERROR_STORAGE_RESERVE_DOES_NOT_EXIST                                      syscall.Errno = 417\n\tERROR_STORAGE_RESERVE_ALREADY_EXISTS                                      syscall.Errno = 418\n\tERROR_STORAGE_RESERVE_NOT_EMPTY                                           syscall.Errno = 419\n\tERROR_NOT_A_DAX_VOLUME                                                    syscall.Errno = 420\n\tERROR_NOT_DAX_MAPPABLE                                                    syscall.Errno = 421\n\tERROR_TIME_SENSITIVE_THREAD                                               syscall.Errno = 422\n\tERROR_DPL_NOT_SUPPORTED_FOR_USER                                          syscall.Errno = 423\n\tERROR_CASE_DIFFERING_NAMES_IN_DIR                                         syscall.Errno = 424\n\tERROR_FILE_NOT_SUPPORTED                                                  syscall.Errno = 425\n\tERROR_CLOUD_FILE_REQUEST_TIMEOUT                                          syscall.Errno = 426\n\tERROR_NO_TASK_QUEUE                                                       syscall.Errno = 427\n\tERROR_SRC_SRV_DLL_LOAD_FAILED                                             syscall.Errno = 428\n\tERROR_NOT_SUPPORTED_WITH_BTT                                              syscall.Errno = 429\n\tERROR_ENCRYPTION_DISABLED                                                 syscall.Errno = 430\n\tERROR_ENCRYPTING_METADATA_DISALLOWED                                      syscall.Errno = 431\n\tERROR_CANT_CLEAR_ENCRYPTION_FLAG                                          syscall.Errno = 432\n\tERROR_NO_SUCH_DEVICE                                                      syscall.Errno = 433\n\tERROR_CAPAUTHZ_NOT_DEVUNLOCKED                                            syscall.Errno = 450\n\tERROR_CAPAUTHZ_CHANGE_TYPE                                                syscall.Errno = 451\n\tERROR_CAPAUTHZ_NOT_PROVISIONED                                            syscall.Errno = 452\n\tERROR_CAPAUTHZ_NOT_AUTHORIZED                                             syscall.Errno = 453\n\tERROR_CAPAUTHZ_NO_POLICY                                                  syscall.Errno = 454\n\tERROR_CAPAUTHZ_DB_CORRUPTED                                               syscall.Errno = 455\n\tERROR_CAPAUTHZ_SCCD_INVALID_CATALOG                                       syscall.Errno = 456\n\tERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY                                        syscall.Errno = 457\n\tERROR_CAPAUTHZ_SCCD_PARSE_ERROR                                           syscall.Errno = 458\n\tERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED                                     syscall.Errno = 459\n\tERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH                                   syscall.Errno = 460\n\tERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT                                     syscall.Errno = 480\n\tERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT                             syscall.Errno = 481\n\tERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT                           syscall.Errno = 482\n\tERROR_DEVICE_HARDWARE_ERROR                                               syscall.Errno = 483\n\tERROR_INVALID_ADDRESS                                                     syscall.Errno = 487\n\tERROR_VRF_CFG_ENABLED                                                     syscall.Errno = 1183\n\tERROR_PARTITION_TERMINATING                                               syscall.Errno = 1184\n\tERROR_USER_PROFILE_LOAD                                                   syscall.Errno = 500\n\tERROR_ARITHMETIC_OVERFLOW                                                 syscall.Errno = 534\n\tERROR_PIPE_CONNECTED                                                      syscall.Errno = 535\n\tERROR_PIPE_LISTENING                                                      syscall.Errno = 536\n\tERROR_VERIFIER_STOP                                                       syscall.Errno = 537\n\tERROR_ABIOS_ERROR                                                         syscall.Errno = 538\n\tERROR_WX86_WARNING                                                        syscall.Errno = 539\n\tERROR_WX86_ERROR                                                          syscall.Errno = 540\n\tERROR_TIMER_NOT_CANCELED                                                  syscall.Errno = 541\n\tERROR_UNWIND                                                              syscall.Errno = 542\n\tERROR_BAD_STACK                                                           syscall.Errno = 543\n\tERROR_INVALID_UNWIND_TARGET                                               syscall.Errno = 544\n\tERROR_INVALID_PORT_ATTRIBUTES                                             syscall.Errno = 545\n\tERROR_PORT_MESSAGE_TOO_LONG                                               syscall.Errno = 546\n\tERROR_INVALID_QUOTA_LOWER                                                 syscall.Errno = 547\n\tERROR_DEVICE_ALREADY_ATTACHED                                             syscall.Errno = 548\n\tERROR_INSTRUCTION_MISALIGNMENT                                            syscall.Errno = 549\n\tERROR_PROFILING_NOT_STARTED                                               syscall.Errno = 550\n\tERROR_PROFILING_NOT_STOPPED                                               syscall.Errno = 551\n\tERROR_COULD_NOT_INTERPRET                                                 syscall.Errno = 552\n\tERROR_PROFILING_AT_LIMIT                                                  syscall.Errno = 553\n\tERROR_CANT_WAIT                                                           syscall.Errno = 554\n\tERROR_CANT_TERMINATE_SELF                                                 syscall.Errno = 555\n\tERROR_UNEXPECTED_MM_CREATE_ERR                                            syscall.Errno = 556\n\tERROR_UNEXPECTED_MM_MAP_ERROR                                             syscall.Errno = 557\n\tERROR_UNEXPECTED_MM_EXTEND_ERR                                            syscall.Errno = 558\n\tERROR_BAD_FUNCTION_TABLE                                                  syscall.Errno = 559\n\tERROR_NO_GUID_TRANSLATION                                                 syscall.Errno = 560\n\tERROR_INVALID_LDT_SIZE                                                    syscall.Errno = 561\n\tERROR_INVALID_LDT_OFFSET                                                  syscall.Errno = 563\n\tERROR_INVALID_LDT_DESCRIPTOR                                              syscall.Errno = 564\n\tERROR_TOO_MANY_THREADS                                                    syscall.Errno = 565\n\tERROR_THREAD_NOT_IN_PROCESS                                               syscall.Errno = 566\n\tERROR_PAGEFILE_QUOTA_EXCEEDED                                             syscall.Errno = 567\n\tERROR_LOGON_SERVER_CONFLICT                                               syscall.Errno = 568\n\tERROR_SYNCHRONIZATION_REQUIRED                                            syscall.Errno = 569\n\tERROR_NET_OPEN_FAILED                                                     syscall.Errno = 570\n\tERROR_IO_PRIVILEGE_FAILED                                                 syscall.Errno = 571\n\tERROR_CONTROL_C_EXIT                                                      syscall.Errno = 572\n\tERROR_MISSING_SYSTEMFILE                                                  syscall.Errno = 573\n\tERROR_UNHANDLED_EXCEPTION                                                 syscall.Errno = 574\n\tERROR_APP_INIT_FAILURE                                                    syscall.Errno = 575\n\tERROR_PAGEFILE_CREATE_FAILED                                              syscall.Errno = 576\n\tERROR_INVALID_IMAGE_HASH                                                  syscall.Errno = 577\n\tERROR_NO_PAGEFILE                                                         syscall.Errno = 578\n\tERROR_ILLEGAL_FLOAT_CONTEXT                                               syscall.Errno = 579\n\tERROR_NO_EVENT_PAIR                                                       syscall.Errno = 580\n\tERROR_DOMAIN_CTRLR_CONFIG_ERROR                                           syscall.Errno = 581\n\tERROR_ILLEGAL_CHARACTER                                                   syscall.Errno = 582\n\tERROR_UNDEFINED_CHARACTER                                                 syscall.Errno = 583\n\tERROR_FLOPPY_VOLUME                                                       syscall.Errno = 584\n\tERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT                                    syscall.Errno = 585\n\tERROR_BACKUP_CONTROLLER                                                   syscall.Errno = 586\n\tERROR_MUTANT_LIMIT_EXCEEDED                                               syscall.Errno = 587\n\tERROR_FS_DRIVER_REQUIRED                                                  syscall.Errno = 588\n\tERROR_CANNOT_LOAD_REGISTRY_FILE                                           syscall.Errno = 589\n\tERROR_DEBUG_ATTACH_FAILED                                                 syscall.Errno = 590\n\tERROR_SYSTEM_PROCESS_TERMINATED                                           syscall.Errno = 591\n\tERROR_DATA_NOT_ACCEPTED                                                   syscall.Errno = 592\n\tERROR_VDM_HARD_ERROR                                                      syscall.Errno = 593\n\tERROR_DRIVER_CANCEL_TIMEOUT                                               syscall.Errno = 594\n\tERROR_REPLY_MESSAGE_MISMATCH                                              syscall.Errno = 595\n\tERROR_LOST_WRITEBEHIND_DATA                                               syscall.Errno = 596\n\tERROR_CLIENT_SERVER_PARAMETERS_INVALID                                    syscall.Errno = 597\n\tERROR_NOT_TINY_STREAM                                                     syscall.Errno = 598\n\tERROR_STACK_OVERFLOW_READ                                                 syscall.Errno = 599\n\tERROR_CONVERT_TO_LARGE                                                    syscall.Errno = 600\n\tERROR_FOUND_OUT_OF_SCOPE                                                  syscall.Errno = 601\n\tERROR_ALLOCATE_BUCKET                                                     syscall.Errno = 602\n\tERROR_MARSHALL_OVERFLOW                                                   syscall.Errno = 603\n\tERROR_INVALID_VARIANT                                                     syscall.Errno = 604\n\tERROR_BAD_COMPRESSION_BUFFER                                              syscall.Errno = 605\n\tERROR_AUDIT_FAILED                                                        syscall.Errno = 606\n\tERROR_TIMER_RESOLUTION_NOT_SET                                            syscall.Errno = 607\n\tERROR_INSUFFICIENT_LOGON_INFO                                             syscall.Errno = 608\n\tERROR_BAD_DLL_ENTRYPOINT                                                  syscall.Errno = 609\n\tERROR_BAD_SERVICE_ENTRYPOINT                                              syscall.Errno = 610\n\tERROR_IP_ADDRESS_CONFLICT1                                                syscall.Errno = 611\n\tERROR_IP_ADDRESS_CONFLICT2                                                syscall.Errno = 612\n\tERROR_REGISTRY_QUOTA_LIMIT                                                syscall.Errno = 613\n\tERROR_NO_CALLBACK_ACTIVE                                                  syscall.Errno = 614\n\tERROR_PWD_TOO_SHORT                                                       syscall.Errno = 615\n\tERROR_PWD_TOO_RECENT                                                      syscall.Errno = 616\n\tERROR_PWD_HISTORY_CONFLICT                                                syscall.Errno = 617\n\tERROR_UNSUPPORTED_COMPRESSION                                             syscall.Errno = 618\n\tERROR_INVALID_HW_PROFILE                                                  syscall.Errno = 619\n\tERROR_INVALID_PLUGPLAY_DEVICE_PATH                                        syscall.Errno = 620\n\tERROR_QUOTA_LIST_INCONSISTENT                                             syscall.Errno = 621\n\tERROR_EVALUATION_EXPIRATION                                               syscall.Errno = 622\n\tERROR_ILLEGAL_DLL_RELOCATION                                              syscall.Errno = 623\n\tERROR_DLL_INIT_FAILED_LOGOFF                                              syscall.Errno = 624\n\tERROR_VALIDATE_CONTINUE                                                   syscall.Errno = 625\n\tERROR_NO_MORE_MATCHES                                                     syscall.Errno = 626\n\tERROR_RANGE_LIST_CONFLICT                                                 syscall.Errno = 627\n\tERROR_SERVER_SID_MISMATCH                                                 syscall.Errno = 628\n\tERROR_CANT_ENABLE_DENY_ONLY                                               syscall.Errno = 629\n\tERROR_FLOAT_MULTIPLE_FAULTS                                               syscall.Errno = 630\n\tERROR_FLOAT_MULTIPLE_TRAPS                                                syscall.Errno = 631\n\tERROR_NOINTERFACE                                                         syscall.Errno = 632\n\tERROR_DRIVER_FAILED_SLEEP                                                 syscall.Errno = 633\n\tERROR_CORRUPT_SYSTEM_FILE                                                 syscall.Errno = 634\n\tERROR_COMMITMENT_MINIMUM                                                  syscall.Errno = 635\n\tERROR_PNP_RESTART_ENUMERATION                                             syscall.Errno = 636\n\tERROR_SYSTEM_IMAGE_BAD_SIGNATURE                                          syscall.Errno = 637\n\tERROR_PNP_REBOOT_REQUIRED                                                 syscall.Errno = 638\n\tERROR_INSUFFICIENT_POWER                                                  syscall.Errno = 639\n\tERROR_MULTIPLE_FAULT_VIOLATION                                            syscall.Errno = 640\n\tERROR_SYSTEM_SHUTDOWN                                                     syscall.Errno = 641\n\tERROR_PORT_NOT_SET                                                        syscall.Errno = 642\n\tERROR_DS_VERSION_CHECK_FAILURE                                            syscall.Errno = 643\n\tERROR_RANGE_NOT_FOUND                                                     syscall.Errno = 644\n\tERROR_NOT_SAFE_MODE_DRIVER                                                syscall.Errno = 646\n\tERROR_FAILED_DRIVER_ENTRY                                                 syscall.Errno = 647\n\tERROR_DEVICE_ENUMERATION_ERROR                                            syscall.Errno = 648\n\tERROR_MOUNT_POINT_NOT_RESOLVED                                            syscall.Errno = 649\n\tERROR_INVALID_DEVICE_OBJECT_PARAMETER                                     syscall.Errno = 650\n\tERROR_MCA_OCCURED                                                         syscall.Errno = 651\n\tERROR_DRIVER_DATABASE_ERROR                                               syscall.Errno = 652\n\tERROR_SYSTEM_HIVE_TOO_LARGE                                               syscall.Errno = 653\n\tERROR_DRIVER_FAILED_PRIOR_UNLOAD                                          syscall.Errno = 654\n\tERROR_VOLSNAP_PREPARE_HIBERNATE                                           syscall.Errno = 655\n\tERROR_HIBERNATION_FAILURE                                                 syscall.Errno = 656\n\tERROR_PWD_TOO_LONG                                                        syscall.Errno = 657\n\tERROR_FILE_SYSTEM_LIMITATION                                              syscall.Errno = 665\n\tERROR_ASSERTION_FAILURE                                                   syscall.Errno = 668\n\tERROR_ACPI_ERROR                                                          syscall.Errno = 669\n\tERROR_WOW_ASSERTION                                                       syscall.Errno = 670\n\tERROR_PNP_BAD_MPS_TABLE                                                   syscall.Errno = 671\n\tERROR_PNP_TRANSLATION_FAILED                                              syscall.Errno = 672\n\tERROR_PNP_IRQ_TRANSLATION_FAILED                                          syscall.Errno = 673\n\tERROR_PNP_INVALID_ID                                                      syscall.Errno = 674\n\tERROR_WAKE_SYSTEM_DEBUGGER                                                syscall.Errno = 675\n\tERROR_HANDLES_CLOSED                                                      syscall.Errno = 676\n\tERROR_EXTRANEOUS_INFORMATION                                              syscall.Errno = 677\n\tERROR_RXACT_COMMIT_NECESSARY                                              syscall.Errno = 678\n\tERROR_MEDIA_CHECK                                                         syscall.Errno = 679\n\tERROR_GUID_SUBSTITUTION_MADE                                              syscall.Errno = 680\n\tERROR_STOPPED_ON_SYMLINK                                                  syscall.Errno = 681\n\tERROR_LONGJUMP                                                            syscall.Errno = 682\n\tERROR_PLUGPLAY_QUERY_VETOED                                               syscall.Errno = 683\n\tERROR_UNWIND_CONSOLIDATE                                                  syscall.Errno = 684\n\tERROR_REGISTRY_HIVE_RECOVERED                                             syscall.Errno = 685\n\tERROR_DLL_MIGHT_BE_INSECURE                                               syscall.Errno = 686\n\tERROR_DLL_MIGHT_BE_INCOMPATIBLE                                           syscall.Errno = 687\n\tERROR_DBG_EXCEPTION_NOT_HANDLED                                           syscall.Errno = 688\n\tERROR_DBG_REPLY_LATER                                                     syscall.Errno = 689\n\tERROR_DBG_UNABLE_TO_PROVIDE_HANDLE                                        syscall.Errno = 690\n\tERROR_DBG_TERMINATE_THREAD                                                syscall.Errno = 691\n\tERROR_DBG_TERMINATE_PROCESS                                               syscall.Errno = 692\n\tERROR_DBG_CONTROL_C                                                       syscall.Errno = 693\n\tERROR_DBG_PRINTEXCEPTION_C                                                syscall.Errno = 694\n\tERROR_DBG_RIPEXCEPTION                                                    syscall.Errno = 695\n\tERROR_DBG_CONTROL_BREAK                                                   syscall.Errno = 696\n\tERROR_DBG_COMMAND_EXCEPTION                                               syscall.Errno = 697\n\tERROR_OBJECT_NAME_EXISTS                                                  syscall.Errno = 698\n\tERROR_THREAD_WAS_SUSPENDED                                                syscall.Errno = 699\n\tERROR_IMAGE_NOT_AT_BASE                                                   syscall.Errno = 700\n\tERROR_RXACT_STATE_CREATED                                                 syscall.Errno = 701\n\tERROR_SEGMENT_NOTIFICATION                                                syscall.Errno = 702\n\tERROR_BAD_CURRENT_DIRECTORY                                               syscall.Errno = 703\n\tERROR_FT_READ_RECOVERY_FROM_BACKUP                                        syscall.Errno = 704\n\tERROR_FT_WRITE_RECOVERY                                                   syscall.Errno = 705\n\tERROR_IMAGE_MACHINE_TYPE_MISMATCH                                         syscall.Errno = 706\n\tERROR_RECEIVE_PARTIAL                                                     syscall.Errno = 707\n\tERROR_RECEIVE_EXPEDITED                                                   syscall.Errno = 708\n\tERROR_RECEIVE_PARTIAL_EXPEDITED                                           syscall.Errno = 709\n\tERROR_EVENT_DONE                                                          syscall.Errno = 710\n\tERROR_EVENT_PENDING                                                       syscall.Errno = 711\n\tERROR_CHECKING_FILE_SYSTEM                                                syscall.Errno = 712\n\tERROR_FATAL_APP_EXIT                                                      syscall.Errno = 713\n\tERROR_PREDEFINED_HANDLE                                                   syscall.Errno = 714\n\tERROR_WAS_UNLOCKED                                                        syscall.Errno = 715\n\tERROR_SERVICE_NOTIFICATION                                                syscall.Errno = 716\n\tERROR_WAS_LOCKED                                                          syscall.Errno = 717\n\tERROR_LOG_HARD_ERROR                                                      syscall.Errno = 718\n\tERROR_ALREADY_WIN32                                                       syscall.Errno = 719\n\tERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE                                     syscall.Errno = 720\n\tERROR_NO_YIELD_PERFORMED                                                  syscall.Errno = 721\n\tERROR_TIMER_RESUME_IGNORED                                                syscall.Errno = 722\n\tERROR_ARBITRATION_UNHANDLED                                               syscall.Errno = 723\n\tERROR_CARDBUS_NOT_SUPPORTED                                               syscall.Errno = 724\n\tERROR_MP_PROCESSOR_MISMATCH                                               syscall.Errno = 725\n\tERROR_HIBERNATED                                                          syscall.Errno = 726\n\tERROR_RESUME_HIBERNATION                                                  syscall.Errno = 727\n\tERROR_FIRMWARE_UPDATED                                                    syscall.Errno = 728\n\tERROR_DRIVERS_LEAKING_LOCKED_PAGES                                        syscall.Errno = 729\n\tERROR_WAKE_SYSTEM                                                         syscall.Errno = 730\n\tERROR_WAIT_1                                                              syscall.Errno = 731\n\tERROR_WAIT_2                                                              syscall.Errno = 732\n\tERROR_WAIT_3                                                              syscall.Errno = 733\n\tERROR_WAIT_63                                                             syscall.Errno = 734\n\tERROR_ABANDONED_WAIT_0                                                    syscall.Errno = 735\n\tERROR_ABANDONED_WAIT_63                                                   syscall.Errno = 736\n\tERROR_USER_APC                                                            syscall.Errno = 737\n\tERROR_KERNEL_APC                                                          syscall.Errno = 738\n\tERROR_ALERTED                                                             syscall.Errno = 739\n\tERROR_ELEVATION_REQUIRED                                                  syscall.Errno = 740\n\tERROR_REPARSE                                                             syscall.Errno = 741\n\tERROR_OPLOCK_BREAK_IN_PROGRESS                                            syscall.Errno = 742\n\tERROR_VOLUME_MOUNTED                                                      syscall.Errno = 743\n\tERROR_RXACT_COMMITTED                                                     syscall.Errno = 744\n\tERROR_NOTIFY_CLEANUP                                                      syscall.Errno = 745\n\tERROR_PRIMARY_TRANSPORT_CONNECT_FAILED                                    syscall.Errno = 746\n\tERROR_PAGE_FAULT_TRANSITION                                               syscall.Errno = 747\n\tERROR_PAGE_FAULT_DEMAND_ZERO                                              syscall.Errno = 748\n\tERROR_PAGE_FAULT_COPY_ON_WRITE                                            syscall.Errno = 749\n\tERROR_PAGE_FAULT_GUARD_PAGE                                               syscall.Errno = 750\n\tERROR_PAGE_FAULT_PAGING_FILE                                              syscall.Errno = 751\n\tERROR_CACHE_PAGE_LOCKED                                                   syscall.Errno = 752\n\tERROR_CRASH_DUMP                                                          syscall.Errno = 753\n\tERROR_BUFFER_ALL_ZEROS                                                    syscall.Errno = 754\n\tERROR_REPARSE_OBJECT                                                      syscall.Errno = 755\n\tERROR_RESOURCE_REQUIREMENTS_CHANGED                                       syscall.Errno = 756\n\tERROR_TRANSLATION_COMPLETE                                                syscall.Errno = 757\n\tERROR_NOTHING_TO_TERMINATE                                                syscall.Errno = 758\n\tERROR_PROCESS_NOT_IN_JOB                                                  syscall.Errno = 759\n\tERROR_PROCESS_IN_JOB                                                      syscall.Errno = 760\n\tERROR_VOLSNAP_HIBERNATE_READY                                             syscall.Errno = 761\n\tERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY                                  syscall.Errno = 762\n\tERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED                                  syscall.Errno = 763\n\tERROR_INTERRUPT_STILL_CONNECTED                                           syscall.Errno = 764\n\tERROR_WAIT_FOR_OPLOCK                                                     syscall.Errno = 765\n\tERROR_DBG_EXCEPTION_HANDLED                                               syscall.Errno = 766\n\tERROR_DBG_CONTINUE                                                        syscall.Errno = 767\n\tERROR_CALLBACK_POP_STACK                                                  syscall.Errno = 768\n\tERROR_COMPRESSION_DISABLED                                                syscall.Errno = 769\n\tERROR_CANTFETCHBACKWARDS                                                  syscall.Errno = 770\n\tERROR_CANTSCROLLBACKWARDS                                                 syscall.Errno = 771\n\tERROR_ROWSNOTRELEASED                                                     syscall.Errno = 772\n\tERROR_BAD_ACCESSOR_FLAGS                                                  syscall.Errno = 773\n\tERROR_ERRORS_ENCOUNTERED                                                  syscall.Errno = 774\n\tERROR_NOT_CAPABLE                                                         syscall.Errno = 775\n\tERROR_REQUEST_OUT_OF_SEQUENCE                                             syscall.Errno = 776\n\tERROR_VERSION_PARSE_ERROR                                                 syscall.Errno = 777\n\tERROR_BADSTARTPOSITION                                                    syscall.Errno = 778\n\tERROR_MEMORY_HARDWARE                                                     syscall.Errno = 779\n\tERROR_DISK_REPAIR_DISABLED                                                syscall.Errno = 780\n\tERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE             syscall.Errno = 781\n\tERROR_SYSTEM_POWERSTATE_TRANSITION                                        syscall.Errno = 782\n\tERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION                                syscall.Errno = 783\n\tERROR_MCA_EXCEPTION                                                       syscall.Errno = 784\n\tERROR_ACCESS_AUDIT_BY_POLICY                                              syscall.Errno = 785\n\tERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY                               syscall.Errno = 786\n\tERROR_ABANDON_HIBERFILE                                                   syscall.Errno = 787\n\tERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED                          syscall.Errno = 788\n\tERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR                          syscall.Errno = 789\n\tERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR                              syscall.Errno = 790\n\tERROR_BAD_MCFG_TABLE                                                      syscall.Errno = 791\n\tERROR_DISK_REPAIR_REDIRECTED                                              syscall.Errno = 792\n\tERROR_DISK_REPAIR_UNSUCCESSFUL                                            syscall.Errno = 793\n\tERROR_CORRUPT_LOG_OVERFULL                                                syscall.Errno = 794\n\tERROR_CORRUPT_LOG_CORRUPTED                                               syscall.Errno = 795\n\tERROR_CORRUPT_LOG_UNAVAILABLE                                             syscall.Errno = 796\n\tERROR_CORRUPT_LOG_DELETED_FULL                                            syscall.Errno = 797\n\tERROR_CORRUPT_LOG_CLEARED                                                 syscall.Errno = 798\n\tERROR_ORPHAN_NAME_EXHAUSTED                                               syscall.Errno = 799\n\tERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE                                       syscall.Errno = 800\n\tERROR_CANNOT_GRANT_REQUESTED_OPLOCK                                       syscall.Errno = 801\n\tERROR_CANNOT_BREAK_OPLOCK                                                 syscall.Errno = 802\n\tERROR_OPLOCK_HANDLE_CLOSED                                                syscall.Errno = 803\n\tERROR_NO_ACE_CONDITION                                                    syscall.Errno = 804\n\tERROR_INVALID_ACE_CONDITION                                               syscall.Errno = 805\n\tERROR_FILE_HANDLE_REVOKED                                                 syscall.Errno = 806\n\tERROR_IMAGE_AT_DIFFERENT_BASE                                             syscall.Errno = 807\n\tERROR_ENCRYPTED_IO_NOT_POSSIBLE                                           syscall.Errno = 808\n\tERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS                              syscall.Errno = 809\n\tERROR_QUOTA_ACTIVITY                                                      syscall.Errno = 810\n\tERROR_HANDLE_REVOKED                                                      syscall.Errno = 811\n\tERROR_CALLBACK_INVOKE_INLINE                                              syscall.Errno = 812\n\tERROR_CPU_SET_INVALID                                                     syscall.Errno = 813\n\tERROR_ENCLAVE_NOT_TERMINATED                                              syscall.Errno = 814\n\tERROR_ENCLAVE_VIOLATION                                                   syscall.Errno = 815\n\tERROR_EA_ACCESS_DENIED                                                    syscall.Errno = 994\n\tERROR_OPERATION_ABORTED                                                   syscall.Errno = 995\n\tERROR_IO_INCOMPLETE                                                       syscall.Errno = 996\n\tERROR_IO_PENDING                                                          syscall.Errno = 997\n\tERROR_NOACCESS                                                            syscall.Errno = 998\n\tERROR_SWAPERROR                                                           syscall.Errno = 999\n\tERROR_STACK_OVERFLOW                                                      syscall.Errno = 1001\n\tERROR_INVALID_MESSAGE                                                     syscall.Errno = 1002\n\tERROR_CAN_NOT_COMPLETE                                                    syscall.Errno = 1003\n\tERROR_INVALID_FLAGS                                                       syscall.Errno = 1004\n\tERROR_UNRECOGNIZED_VOLUME                                                 syscall.Errno = 1005\n\tERROR_FILE_INVALID                                                        syscall.Errno = 1006\n\tERROR_FULLSCREEN_MODE                                                     syscall.Errno = 1007\n\tERROR_NO_TOKEN                                                            syscall.Errno = 1008\n\tERROR_BADDB                                                               syscall.Errno = 1009\n\tERROR_BADKEY                                                              syscall.Errno = 1010\n\tERROR_CANTOPEN                                                            syscall.Errno = 1011\n\tERROR_CANTREAD                                                            syscall.Errno = 1012\n\tERROR_CANTWRITE                                                           syscall.Errno = 1013\n\tERROR_REGISTRY_RECOVERED                                                  syscall.Errno = 1014\n\tERROR_REGISTRY_CORRUPT                                                    syscall.Errno = 1015\n\tERROR_REGISTRY_IO_FAILED                                                  syscall.Errno = 1016\n\tERROR_NOT_REGISTRY_FILE                                                   syscall.Errno = 1017\n\tERROR_KEY_DELETED                                                         syscall.Errno = 1018\n\tERROR_NO_LOG_SPACE                                                        syscall.Errno = 1019\n\tERROR_KEY_HAS_CHILDREN                                                    syscall.Errno = 1020\n\tERROR_CHILD_MUST_BE_VOLATILE                                              syscall.Errno = 1021\n\tERROR_NOTIFY_ENUM_DIR                                                     syscall.Errno = 1022\n\tERROR_DEPENDENT_SERVICES_RUNNING                                          syscall.Errno = 1051\n\tERROR_INVALID_SERVICE_CONTROL                                             syscall.Errno = 1052\n\tERROR_SERVICE_REQUEST_TIMEOUT                                             syscall.Errno = 1053\n\tERROR_SERVICE_NO_THREAD                                                   syscall.Errno = 1054\n\tERROR_SERVICE_DATABASE_LOCKED                                             syscall.Errno = 1055\n\tERROR_SERVICE_ALREADY_RUNNING                                             syscall.Errno = 1056\n\tERROR_INVALID_SERVICE_ACCOUNT                                             syscall.Errno = 1057\n\tERROR_SERVICE_DISABLED                                                    syscall.Errno = 1058\n\tERROR_CIRCULAR_DEPENDENCY                                                 syscall.Errno = 1059\n\tERROR_SERVICE_DOES_NOT_EXIST                                              syscall.Errno = 1060\n\tERROR_SERVICE_CANNOT_ACCEPT_CTRL                                          syscall.Errno = 1061\n\tERROR_SERVICE_NOT_ACTIVE                                                  syscall.Errno = 1062\n\tERROR_FAILED_SERVICE_CONTROLLER_CONNECT                                   syscall.Errno = 1063\n\tERROR_EXCEPTION_IN_SERVICE                                                syscall.Errno = 1064\n\tERROR_DATABASE_DOES_NOT_EXIST                                             syscall.Errno = 1065\n\tERROR_SERVICE_SPECIFIC_ERROR                                              syscall.Errno = 1066\n\tERROR_PROCESS_ABORTED                                                     syscall.Errno = 1067\n\tERROR_SERVICE_DEPENDENCY_FAIL                                             syscall.Errno = 1068\n\tERROR_SERVICE_LOGON_FAILED                                                syscall.Errno = 1069\n\tERROR_SERVICE_START_HANG                                                  syscall.Errno = 1070\n\tERROR_INVALID_SERVICE_LOCK                                                syscall.Errno = 1071\n\tERROR_SERVICE_MARKED_FOR_DELETE                                           syscall.Errno = 1072\n\tERROR_SERVICE_EXISTS                                                      syscall.Errno = 1073\n\tERROR_ALREADY_RUNNING_LKG                                                 syscall.Errno = 1074\n\tERROR_SERVICE_DEPENDENCY_DELETED                                          syscall.Errno = 1075\n\tERROR_BOOT_ALREADY_ACCEPTED                                               syscall.Errno = 1076\n\tERROR_SERVICE_NEVER_STARTED                                               syscall.Errno = 1077\n\tERROR_DUPLICATE_SERVICE_NAME                                              syscall.Errno = 1078\n\tERROR_DIFFERENT_SERVICE_ACCOUNT                                           syscall.Errno = 1079\n\tERROR_CANNOT_DETECT_DRIVER_FAILURE                                        syscall.Errno = 1080\n\tERROR_CANNOT_DETECT_PROCESS_ABORT                                         syscall.Errno = 1081\n\tERROR_NO_RECOVERY_PROGRAM                                                 syscall.Errno = 1082\n\tERROR_SERVICE_NOT_IN_EXE                                                  syscall.Errno = 1083\n\tERROR_NOT_SAFEBOOT_SERVICE                                                syscall.Errno = 1084\n\tERROR_END_OF_MEDIA                                                        syscall.Errno = 1100\n\tERROR_FILEMARK_DETECTED                                                   syscall.Errno = 1101\n\tERROR_BEGINNING_OF_MEDIA                                                  syscall.Errno = 1102\n\tERROR_SETMARK_DETECTED                                                    syscall.Errno = 1103\n\tERROR_NO_DATA_DETECTED                                                    syscall.Errno = 1104\n\tERROR_PARTITION_FAILURE                                                   syscall.Errno = 1105\n\tERROR_INVALID_BLOCK_LENGTH                                                syscall.Errno = 1106\n\tERROR_DEVICE_NOT_PARTITIONED                                              syscall.Errno = 1107\n\tERROR_UNABLE_TO_LOCK_MEDIA                                                syscall.Errno = 1108\n\tERROR_UNABLE_TO_UNLOAD_MEDIA                                              syscall.Errno = 1109\n\tERROR_MEDIA_CHANGED                                                       syscall.Errno = 1110\n\tERROR_BUS_RESET                                                           syscall.Errno = 1111\n\tERROR_NO_MEDIA_IN_DRIVE                                                   syscall.Errno = 1112\n\tERROR_NO_UNICODE_TRANSLATION                                              syscall.Errno = 1113\n\tERROR_DLL_INIT_FAILED                                                     syscall.Errno = 1114\n\tERROR_SHUTDOWN_IN_PROGRESS                                                syscall.Errno = 1115\n\tERROR_NO_SHUTDOWN_IN_PROGRESS                                             syscall.Errno = 1116\n\tERROR_IO_DEVICE                                                           syscall.Errno = 1117\n\tERROR_SERIAL_NO_DEVICE                                                    syscall.Errno = 1118\n\tERROR_IRQ_BUSY                                                            syscall.Errno = 1119\n\tERROR_MORE_WRITES                                                         syscall.Errno = 1120\n\tERROR_COUNTER_TIMEOUT                                                     syscall.Errno = 1121\n\tERROR_FLOPPY_ID_MARK_NOT_FOUND                                            syscall.Errno = 1122\n\tERROR_FLOPPY_WRONG_CYLINDER                                               syscall.Errno = 1123\n\tERROR_FLOPPY_UNKNOWN_ERROR                                                syscall.Errno = 1124\n\tERROR_FLOPPY_BAD_REGISTERS                                                syscall.Errno = 1125\n\tERROR_DISK_RECALIBRATE_FAILED                                             syscall.Errno = 1126\n\tERROR_DISK_OPERATION_FAILED                                               syscall.Errno = 1127\n\tERROR_DISK_RESET_FAILED                                                   syscall.Errno = 1128\n\tERROR_EOM_OVERFLOW                                                        syscall.Errno = 1129\n\tERROR_NOT_ENOUGH_SERVER_MEMORY                                            syscall.Errno = 1130\n\tERROR_POSSIBLE_DEADLOCK                                                   syscall.Errno = 1131\n\tERROR_MAPPED_ALIGNMENT                                                    syscall.Errno = 1132\n\tERROR_SET_POWER_STATE_VETOED                                              syscall.Errno = 1140\n\tERROR_SET_POWER_STATE_FAILED                                              syscall.Errno = 1141\n\tERROR_TOO_MANY_LINKS                                                      syscall.Errno = 1142\n\tERROR_OLD_WIN_VERSION                                                     syscall.Errno = 1150\n\tERROR_APP_WRONG_OS                                                        syscall.Errno = 1151\n\tERROR_SINGLE_INSTANCE_APP                                                 syscall.Errno = 1152\n\tERROR_RMODE_APP                                                           syscall.Errno = 1153\n\tERROR_INVALID_DLL                                                         syscall.Errno = 1154\n\tERROR_NO_ASSOCIATION                                                      syscall.Errno = 1155\n\tERROR_DDE_FAIL                                                            syscall.Errno = 1156\n\tERROR_DLL_NOT_FOUND                                                       syscall.Errno = 1157\n\tERROR_NO_MORE_USER_HANDLES                                                syscall.Errno = 1158\n\tERROR_MESSAGE_SYNC_ONLY                                                   syscall.Errno = 1159\n\tERROR_SOURCE_ELEMENT_EMPTY                                                syscall.Errno = 1160\n\tERROR_DESTINATION_ELEMENT_FULL                                            syscall.Errno = 1161\n\tERROR_ILLEGAL_ELEMENT_ADDRESS                                             syscall.Errno = 1162\n\tERROR_MAGAZINE_NOT_PRESENT                                                syscall.Errno = 1163\n\tERROR_DEVICE_REINITIALIZATION_NEEDED                                      syscall.Errno = 1164\n\tERROR_DEVICE_REQUIRES_CLEANING                                            syscall.Errno = 1165\n\tERROR_DEVICE_DOOR_OPEN                                                    syscall.Errno = 1166\n\tERROR_DEVICE_NOT_CONNECTED                                                syscall.Errno = 1167\n\tERROR_NOT_FOUND                                                           syscall.Errno = 1168\n\tERROR_NO_MATCH                                                            syscall.Errno = 1169\n\tERROR_SET_NOT_FOUND                                                       syscall.Errno = 1170\n\tERROR_POINT_NOT_FOUND                                                     syscall.Errno = 1171\n\tERROR_NO_TRACKING_SERVICE                                                 syscall.Errno = 1172\n\tERROR_NO_VOLUME_ID                                                        syscall.Errno = 1173\n\tERROR_UNABLE_TO_REMOVE_REPLACED                                           syscall.Errno = 1175\n\tERROR_UNABLE_TO_MOVE_REPLACEMENT                                          syscall.Errno = 1176\n\tERROR_UNABLE_TO_MOVE_REPLACEMENT_2                                        syscall.Errno = 1177\n\tERROR_JOURNAL_DELETE_IN_PROGRESS                                          syscall.Errno = 1178\n\tERROR_JOURNAL_NOT_ACTIVE                                                  syscall.Errno = 1179\n\tERROR_POTENTIAL_FILE_FOUND                                                syscall.Errno = 1180\n\tERROR_JOURNAL_ENTRY_DELETED                                               syscall.Errno = 1181\n\tERROR_SHUTDOWN_IS_SCHEDULED                                               syscall.Errno = 1190\n\tERROR_SHUTDOWN_USERS_LOGGED_ON                                            syscall.Errno = 1191\n\tERROR_BAD_DEVICE                                                          syscall.Errno = 1200\n\tERROR_CONNECTION_UNAVAIL                                                  syscall.Errno = 1201\n\tERROR_DEVICE_ALREADY_REMEMBERED                                           syscall.Errno = 1202\n\tERROR_NO_NET_OR_BAD_PATH                                                  syscall.Errno = 1203\n\tERROR_BAD_PROVIDER                                                        syscall.Errno = 1204\n\tERROR_CANNOT_OPEN_PROFILE                                                 syscall.Errno = 1205\n\tERROR_BAD_PROFILE                                                         syscall.Errno = 1206\n\tERROR_NOT_CONTAINER                                                       syscall.Errno = 1207\n\tERROR_EXTENDED_ERROR                                                      syscall.Errno = 1208\n\tERROR_INVALID_GROUPNAME                                                   syscall.Errno = 1209\n\tERROR_INVALID_COMPUTERNAME                                                syscall.Errno = 1210\n\tERROR_INVALID_EVENTNAME                                                   syscall.Errno = 1211\n\tERROR_INVALID_DOMAINNAME                                                  syscall.Errno = 1212\n\tERROR_INVALID_SERVICENAME                                                 syscall.Errno = 1213\n\tERROR_INVALID_NETNAME                                                     syscall.Errno = 1214\n\tERROR_INVALID_SHARENAME                                                   syscall.Errno = 1215\n\tERROR_INVALID_PASSWORDNAME                                                syscall.Errno = 1216\n\tERROR_INVALID_MESSAGENAME                                                 syscall.Errno = 1217\n\tERROR_INVALID_MESSAGEDEST                                                 syscall.Errno = 1218\n\tERROR_SESSION_CREDENTIAL_CONFLICT                                         syscall.Errno = 1219\n\tERROR_REMOTE_SESSION_LIMIT_EXCEEDED                                       syscall.Errno = 1220\n\tERROR_DUP_DOMAINNAME                                                      syscall.Errno = 1221\n\tERROR_NO_NETWORK                                                          syscall.Errno = 1222\n\tERROR_CANCELLED                                                           syscall.Errno = 1223\n\tERROR_USER_MAPPED_FILE                                                    syscall.Errno = 1224\n\tERROR_CONNECTION_REFUSED                                                  syscall.Errno = 1225\n\tERROR_GRACEFUL_DISCONNECT                                                 syscall.Errno = 1226\n\tERROR_ADDRESS_ALREADY_ASSOCIATED                                          syscall.Errno = 1227\n\tERROR_ADDRESS_NOT_ASSOCIATED                                              syscall.Errno = 1228\n\tERROR_CONNECTION_INVALID                                                  syscall.Errno = 1229\n\tERROR_CONNECTION_ACTIVE                                                   syscall.Errno = 1230\n\tERROR_NETWORK_UNREACHABLE                                                 syscall.Errno = 1231\n\tERROR_HOST_UNREACHABLE                                                    syscall.Errno = 1232\n\tERROR_PROTOCOL_UNREACHABLE                                                syscall.Errno = 1233\n\tERROR_PORT_UNREACHABLE                                                    syscall.Errno = 1234\n\tERROR_REQUEST_ABORTED                                                     syscall.Errno = 1235\n\tERROR_CONNECTION_ABORTED                                                  syscall.Errno = 1236\n\tERROR_RETRY                                                               syscall.Errno = 1237\n\tERROR_CONNECTION_COUNT_LIMIT                                              syscall.Errno = 1238\n\tERROR_LOGIN_TIME_RESTRICTION                                              syscall.Errno = 1239\n\tERROR_LOGIN_WKSTA_RESTRICTION                                             syscall.Errno = 1240\n\tERROR_INCORRECT_ADDRESS                                                   syscall.Errno = 1241\n\tERROR_ALREADY_REGISTERED                                                  syscall.Errno = 1242\n\tERROR_SERVICE_NOT_FOUND                                                   syscall.Errno = 1243\n\tERROR_NOT_AUTHENTICATED                                                   syscall.Errno = 1244\n\tERROR_NOT_LOGGED_ON                                                       syscall.Errno = 1245\n\tERROR_CONTINUE                                                            syscall.Errno = 1246\n\tERROR_ALREADY_INITIALIZED                                                 syscall.Errno = 1247\n\tERROR_NO_MORE_DEVICES                                                     syscall.Errno = 1248\n\tERROR_NO_SUCH_SITE                                                        syscall.Errno = 1249\n\tERROR_DOMAIN_CONTROLLER_EXISTS                                            syscall.Errno = 1250\n\tERROR_ONLY_IF_CONNECTED                                                   syscall.Errno = 1251\n\tERROR_OVERRIDE_NOCHANGES                                                  syscall.Errno = 1252\n\tERROR_BAD_USER_PROFILE                                                    syscall.Errno = 1253\n\tERROR_NOT_SUPPORTED_ON_SBS                                                syscall.Errno = 1254\n\tERROR_SERVER_SHUTDOWN_IN_PROGRESS                                         syscall.Errno = 1255\n\tERROR_HOST_DOWN                                                           syscall.Errno = 1256\n\tERROR_NON_ACCOUNT_SID                                                     syscall.Errno = 1257\n\tERROR_NON_DOMAIN_SID                                                      syscall.Errno = 1258\n\tERROR_APPHELP_BLOCK                                                       syscall.Errno = 1259\n\tERROR_ACCESS_DISABLED_BY_POLICY                                           syscall.Errno = 1260\n\tERROR_REG_NAT_CONSUMPTION                                                 syscall.Errno = 1261\n\tERROR_CSCSHARE_OFFLINE                                                    syscall.Errno = 1262\n\tERROR_PKINIT_FAILURE                                                      syscall.Errno = 1263\n\tERROR_SMARTCARD_SUBSYSTEM_FAILURE                                         syscall.Errno = 1264\n\tERROR_DOWNGRADE_DETECTED                                                  syscall.Errno = 1265\n\tERROR_MACHINE_LOCKED                                                      syscall.Errno = 1271\n\tERROR_SMB_GUEST_LOGON_BLOCKED                                             syscall.Errno = 1272\n\tERROR_CALLBACK_SUPPLIED_INVALID_DATA                                      syscall.Errno = 1273\n\tERROR_SYNC_FOREGROUND_REFRESH_REQUIRED                                    syscall.Errno = 1274\n\tERROR_DRIVER_BLOCKED                                                      syscall.Errno = 1275\n\tERROR_INVALID_IMPORT_OF_NON_DLL                                           syscall.Errno = 1276\n\tERROR_ACCESS_DISABLED_WEBBLADE                                            syscall.Errno = 1277\n\tERROR_ACCESS_DISABLED_WEBBLADE_TAMPER                                     syscall.Errno = 1278\n\tERROR_RECOVERY_FAILURE                                                    syscall.Errno = 1279\n\tERROR_ALREADY_FIBER                                                       syscall.Errno = 1280\n\tERROR_ALREADY_THREAD                                                      syscall.Errno = 1281\n\tERROR_STACK_BUFFER_OVERRUN                                                syscall.Errno = 1282\n\tERROR_PARAMETER_QUOTA_EXCEEDED                                            syscall.Errno = 1283\n\tERROR_DEBUGGER_INACTIVE                                                   syscall.Errno = 1284\n\tERROR_DELAY_LOAD_FAILED                                                   syscall.Errno = 1285\n\tERROR_VDM_DISALLOWED                                                      syscall.Errno = 1286\n\tERROR_UNIDENTIFIED_ERROR                                                  syscall.Errno = 1287\n\tERROR_INVALID_CRUNTIME_PARAMETER                                          syscall.Errno = 1288\n\tERROR_BEYOND_VDL                                                          syscall.Errno = 1289\n\tERROR_INCOMPATIBLE_SERVICE_SID_TYPE                                       syscall.Errno = 1290\n\tERROR_DRIVER_PROCESS_TERMINATED                                           syscall.Errno = 1291\n\tERROR_IMPLEMENTATION_LIMIT                                                syscall.Errno = 1292\n\tERROR_PROCESS_IS_PROTECTED                                                syscall.Errno = 1293\n\tERROR_SERVICE_NOTIFY_CLIENT_LAGGING                                       syscall.Errno = 1294\n\tERROR_DISK_QUOTA_EXCEEDED                                                 syscall.Errno = 1295\n\tERROR_CONTENT_BLOCKED                                                     syscall.Errno = 1296\n\tERROR_INCOMPATIBLE_SERVICE_PRIVILEGE                                      syscall.Errno = 1297\n\tERROR_APP_HANG                                                            syscall.Errno = 1298\n\tERROR_INVALID_LABEL                                                       syscall.Errno = 1299\n\tERROR_NOT_ALL_ASSIGNED                                                    syscall.Errno = 1300\n\tERROR_SOME_NOT_MAPPED                                                     syscall.Errno = 1301\n\tERROR_NO_QUOTAS_FOR_ACCOUNT                                               syscall.Errno = 1302\n\tERROR_LOCAL_USER_SESSION_KEY                                              syscall.Errno = 1303\n\tERROR_NULL_LM_PASSWORD                                                    syscall.Errno = 1304\n\tERROR_UNKNOWN_REVISION                                                    syscall.Errno = 1305\n\tERROR_REVISION_MISMATCH                                                   syscall.Errno = 1306\n\tERROR_INVALID_OWNER                                                       syscall.Errno = 1307\n\tERROR_INVALID_PRIMARY_GROUP                                               syscall.Errno = 1308\n\tERROR_NO_IMPERSONATION_TOKEN                                              syscall.Errno = 1309\n\tERROR_CANT_DISABLE_MANDATORY                                              syscall.Errno = 1310\n\tERROR_NO_LOGON_SERVERS                                                    syscall.Errno = 1311\n\tERROR_NO_SUCH_LOGON_SESSION                                               syscall.Errno = 1312\n\tERROR_NO_SUCH_PRIVILEGE                                                   syscall.Errno = 1313\n\tERROR_PRIVILEGE_NOT_HELD                                                  syscall.Errno = 1314\n\tERROR_INVALID_ACCOUNT_NAME                                                syscall.Errno = 1315\n\tERROR_USER_EXISTS                                                         syscall.Errno = 1316\n\tERROR_NO_SUCH_USER                                                        syscall.Errno = 1317\n\tERROR_GROUP_EXISTS                                                        syscall.Errno = 1318\n\tERROR_NO_SUCH_GROUP                                                       syscall.Errno = 1319\n\tERROR_MEMBER_IN_GROUP                                                     syscall.Errno = 1320\n\tERROR_MEMBER_NOT_IN_GROUP                                                 syscall.Errno = 1321\n\tERROR_LAST_ADMIN                                                          syscall.Errno = 1322\n\tERROR_WRONG_PASSWORD                                                      syscall.Errno = 1323\n\tERROR_ILL_FORMED_PASSWORD                                                 syscall.Errno = 1324\n\tERROR_PASSWORD_RESTRICTION                                                syscall.Errno = 1325\n\tERROR_LOGON_FAILURE                                                       syscall.Errno = 1326\n\tERROR_ACCOUNT_RESTRICTION                                                 syscall.Errno = 1327\n\tERROR_INVALID_LOGON_HOURS                                                 syscall.Errno = 1328\n\tERROR_INVALID_WORKSTATION                                                 syscall.Errno = 1329\n\tERROR_PASSWORD_EXPIRED                                                    syscall.Errno = 1330\n\tERROR_ACCOUNT_DISABLED                                                    syscall.Errno = 1331\n\tERROR_NONE_MAPPED                                                         syscall.Errno = 1332\n\tERROR_TOO_MANY_LUIDS_REQUESTED                                            syscall.Errno = 1333\n\tERROR_LUIDS_EXHAUSTED                                                     syscall.Errno = 1334\n\tERROR_INVALID_SUB_AUTHORITY                                               syscall.Errno = 1335\n\tERROR_INVALID_ACL                                                         syscall.Errno = 1336\n\tERROR_INVALID_SID                                                         syscall.Errno = 1337\n\tERROR_INVALID_SECURITY_DESCR                                              syscall.Errno = 1338\n\tERROR_BAD_INHERITANCE_ACL                                                 syscall.Errno = 1340\n\tERROR_SERVER_DISABLED                                                     syscall.Errno = 1341\n\tERROR_SERVER_NOT_DISABLED                                                 syscall.Errno = 1342\n\tERROR_INVALID_ID_AUTHORITY                                                syscall.Errno = 1343\n\tERROR_ALLOTTED_SPACE_EXCEEDED                                             syscall.Errno = 1344\n\tERROR_INVALID_GROUP_ATTRIBUTES                                            syscall.Errno = 1345\n\tERROR_BAD_IMPERSONATION_LEVEL                                             syscall.Errno = 1346\n\tERROR_CANT_OPEN_ANONYMOUS                                                 syscall.Errno = 1347\n\tERROR_BAD_VALIDATION_CLASS                                                syscall.Errno = 1348\n\tERROR_BAD_TOKEN_TYPE                                                      syscall.Errno = 1349\n\tERROR_NO_SECURITY_ON_OBJECT                                               syscall.Errno = 1350\n\tERROR_CANT_ACCESS_DOMAIN_INFO                                             syscall.Errno = 1351\n\tERROR_INVALID_SERVER_STATE                                                syscall.Errno = 1352\n\tERROR_INVALID_DOMAIN_STATE                                                syscall.Errno = 1353\n\tERROR_INVALID_DOMAIN_ROLE                                                 syscall.Errno = 1354\n\tERROR_NO_SUCH_DOMAIN                                                      syscall.Errno = 1355\n\tERROR_DOMAIN_EXISTS                                                       syscall.Errno = 1356\n\tERROR_DOMAIN_LIMIT_EXCEEDED                                               syscall.Errno = 1357\n\tERROR_INTERNAL_DB_CORRUPTION                                              syscall.Errno = 1358\n\tERROR_INTERNAL_ERROR                                                      syscall.Errno = 1359\n\tERROR_GENERIC_NOT_MAPPED                                                  syscall.Errno = 1360\n\tERROR_BAD_DESCRIPTOR_FORMAT                                               syscall.Errno = 1361\n\tERROR_NOT_LOGON_PROCESS                                                   syscall.Errno = 1362\n\tERROR_LOGON_SESSION_EXISTS                                                syscall.Errno = 1363\n\tERROR_NO_SUCH_PACKAGE                                                     syscall.Errno = 1364\n\tERROR_BAD_LOGON_SESSION_STATE                                             syscall.Errno = 1365\n\tERROR_LOGON_SESSION_COLLISION                                             syscall.Errno = 1366\n\tERROR_INVALID_LOGON_TYPE                                                  syscall.Errno = 1367\n\tERROR_CANNOT_IMPERSONATE                                                  syscall.Errno = 1368\n\tERROR_RXACT_INVALID_STATE                                                 syscall.Errno = 1369\n\tERROR_RXACT_COMMIT_FAILURE                                                syscall.Errno = 1370\n\tERROR_SPECIAL_ACCOUNT                                                     syscall.Errno = 1371\n\tERROR_SPECIAL_GROUP                                                       syscall.Errno = 1372\n\tERROR_SPECIAL_USER                                                        syscall.Errno = 1373\n\tERROR_MEMBERS_PRIMARY_GROUP                                               syscall.Errno = 1374\n\tERROR_TOKEN_ALREADY_IN_USE                                                syscall.Errno = 1375\n\tERROR_NO_SUCH_ALIAS                                                       syscall.Errno = 1376\n\tERROR_MEMBER_NOT_IN_ALIAS                                                 syscall.Errno = 1377\n\tERROR_MEMBER_IN_ALIAS                                                     syscall.Errno = 1378\n\tERROR_ALIAS_EXISTS                                                        syscall.Errno = 1379\n\tERROR_LOGON_NOT_GRANTED                                                   syscall.Errno = 1380\n\tERROR_TOO_MANY_SECRETS                                                    syscall.Errno = 1381\n\tERROR_SECRET_TOO_LONG                                                     syscall.Errno = 1382\n\tERROR_INTERNAL_DB_ERROR                                                   syscall.Errno = 1383\n\tERROR_TOO_MANY_CONTEXT_IDS                                                syscall.Errno = 1384\n\tERROR_LOGON_TYPE_NOT_GRANTED                                              syscall.Errno = 1385\n\tERROR_NT_CROSS_ENCRYPTION_REQUIRED                                        syscall.Errno = 1386\n\tERROR_NO_SUCH_MEMBER                                                      syscall.Errno = 1387\n\tERROR_INVALID_MEMBER                                                      syscall.Errno = 1388\n\tERROR_TOO_MANY_SIDS                                                       syscall.Errno = 1389\n\tERROR_LM_CROSS_ENCRYPTION_REQUIRED                                        syscall.Errno = 1390\n\tERROR_NO_INHERITANCE                                                      syscall.Errno = 1391\n\tERROR_FILE_CORRUPT                                                        syscall.Errno = 1392\n\tERROR_DISK_CORRUPT                                                        syscall.Errno = 1393\n\tERROR_NO_USER_SESSION_KEY                                                 syscall.Errno = 1394\n\tERROR_LICENSE_QUOTA_EXCEEDED                                              syscall.Errno = 1395\n\tERROR_WRONG_TARGET_NAME                                                   syscall.Errno = 1396\n\tERROR_MUTUAL_AUTH_FAILED                                                  syscall.Errno = 1397\n\tERROR_TIME_SKEW                                                           syscall.Errno = 1398\n\tERROR_CURRENT_DOMAIN_NOT_ALLOWED                                          syscall.Errno = 1399\n\tERROR_INVALID_WINDOW_HANDLE                                               syscall.Errno = 1400\n\tERROR_INVALID_MENU_HANDLE                                                 syscall.Errno = 1401\n\tERROR_INVALID_CURSOR_HANDLE                                               syscall.Errno = 1402\n\tERROR_INVALID_ACCEL_HANDLE                                                syscall.Errno = 1403\n\tERROR_INVALID_HOOK_HANDLE                                                 syscall.Errno = 1404\n\tERROR_INVALID_DWP_HANDLE                                                  syscall.Errno = 1405\n\tERROR_TLW_WITH_WSCHILD                                                    syscall.Errno = 1406\n\tERROR_CANNOT_FIND_WND_CLASS                                               syscall.Errno = 1407\n\tERROR_WINDOW_OF_OTHER_THREAD                                              syscall.Errno = 1408\n\tERROR_HOTKEY_ALREADY_REGISTERED                                           syscall.Errno = 1409\n\tERROR_CLASS_ALREADY_EXISTS                                                syscall.Errno = 1410\n\tERROR_CLASS_DOES_NOT_EXIST                                                syscall.Errno = 1411\n\tERROR_CLASS_HAS_WINDOWS                                                   syscall.Errno = 1412\n\tERROR_INVALID_INDEX                                                       syscall.Errno = 1413\n\tERROR_INVALID_ICON_HANDLE                                                 syscall.Errno = 1414\n\tERROR_PRIVATE_DIALOG_INDEX                                                syscall.Errno = 1415\n\tERROR_LISTBOX_ID_NOT_FOUND                                                syscall.Errno = 1416\n\tERROR_NO_WILDCARD_CHARACTERS                                              syscall.Errno = 1417\n\tERROR_CLIPBOARD_NOT_OPEN                                                  syscall.Errno = 1418\n\tERROR_HOTKEY_NOT_REGISTERED                                               syscall.Errno = 1419\n\tERROR_WINDOW_NOT_DIALOG                                                   syscall.Errno = 1420\n\tERROR_CONTROL_ID_NOT_FOUND                                                syscall.Errno = 1421\n\tERROR_INVALID_COMBOBOX_MESSAGE                                            syscall.Errno = 1422\n\tERROR_WINDOW_NOT_COMBOBOX                                                 syscall.Errno = 1423\n\tERROR_INVALID_EDIT_HEIGHT                                                 syscall.Errno = 1424\n\tERROR_DC_NOT_FOUND                                                        syscall.Errno = 1425\n\tERROR_INVALID_HOOK_FILTER                                                 syscall.Errno = 1426\n\tERROR_INVALID_FILTER_PROC                                                 syscall.Errno = 1427\n\tERROR_HOOK_NEEDS_HMOD                                                     syscall.Errno = 1428\n\tERROR_GLOBAL_ONLY_HOOK                                                    syscall.Errno = 1429\n\tERROR_JOURNAL_HOOK_SET                                                    syscall.Errno = 1430\n\tERROR_HOOK_NOT_INSTALLED                                                  syscall.Errno = 1431\n\tERROR_INVALID_LB_MESSAGE                                                  syscall.Errno = 1432\n\tERROR_SETCOUNT_ON_BAD_LB                                                  syscall.Errno = 1433\n\tERROR_LB_WITHOUT_TABSTOPS                                                 syscall.Errno = 1434\n\tERROR_DESTROY_OBJECT_OF_OTHER_THREAD                                      syscall.Errno = 1435\n\tERROR_CHILD_WINDOW_MENU                                                   syscall.Errno = 1436\n\tERROR_NO_SYSTEM_MENU                                                      syscall.Errno = 1437\n\tERROR_INVALID_MSGBOX_STYLE                                                syscall.Errno = 1438\n\tERROR_INVALID_SPI_VALUE                                                   syscall.Errno = 1439\n\tERROR_SCREEN_ALREADY_LOCKED                                               syscall.Errno = 1440\n\tERROR_HWNDS_HAVE_DIFF_PARENT                                              syscall.Errno = 1441\n\tERROR_NOT_CHILD_WINDOW                                                    syscall.Errno = 1442\n\tERROR_INVALID_GW_COMMAND                                                  syscall.Errno = 1443\n\tERROR_INVALID_THREAD_ID                                                   syscall.Errno = 1444\n\tERROR_NON_MDICHILD_WINDOW                                                 syscall.Errno = 1445\n\tERROR_POPUP_ALREADY_ACTIVE                                                syscall.Errno = 1446\n\tERROR_NO_SCROLLBARS                                                       syscall.Errno = 1447\n\tERROR_INVALID_SCROLLBAR_RANGE                                             syscall.Errno = 1448\n\tERROR_INVALID_SHOWWIN_COMMAND                                             syscall.Errno = 1449\n\tERROR_NO_SYSTEM_RESOURCES                                                 syscall.Errno = 1450\n\tERROR_NONPAGED_SYSTEM_RESOURCES                                           syscall.Errno = 1451\n\tERROR_PAGED_SYSTEM_RESOURCES                                              syscall.Errno = 1452\n\tERROR_WORKING_SET_QUOTA                                                   syscall.Errno = 1453\n\tERROR_PAGEFILE_QUOTA                                                      syscall.Errno = 1454\n\tERROR_COMMITMENT_LIMIT                                                    syscall.Errno = 1455\n\tERROR_MENU_ITEM_NOT_FOUND                                                 syscall.Errno = 1456\n\tERROR_INVALID_KEYBOARD_HANDLE                                             syscall.Errno = 1457\n\tERROR_HOOK_TYPE_NOT_ALLOWED                                               syscall.Errno = 1458\n\tERROR_REQUIRES_INTERACTIVE_WINDOWSTATION                                  syscall.Errno = 1459\n\tERROR_TIMEOUT                                                             syscall.Errno = 1460\n\tERROR_INVALID_MONITOR_HANDLE                                              syscall.Errno = 1461\n\tERROR_INCORRECT_SIZE                                                      syscall.Errno = 1462\n\tERROR_SYMLINK_CLASS_DISABLED                                              syscall.Errno = 1463\n\tERROR_SYMLINK_NOT_SUPPORTED                                               syscall.Errno = 1464\n\tERROR_XML_PARSE_ERROR                                                     syscall.Errno = 1465\n\tERROR_XMLDSIG_ERROR                                                       syscall.Errno = 1466\n\tERROR_RESTART_APPLICATION                                                 syscall.Errno = 1467\n\tERROR_WRONG_COMPARTMENT                                                   syscall.Errno = 1468\n\tERROR_AUTHIP_FAILURE                                                      syscall.Errno = 1469\n\tERROR_NO_NVRAM_RESOURCES                                                  syscall.Errno = 1470\n\tERROR_NOT_GUI_PROCESS                                                     syscall.Errno = 1471\n\tERROR_EVENTLOG_FILE_CORRUPT                                               syscall.Errno = 1500\n\tERROR_EVENTLOG_CANT_START                                                 syscall.Errno = 1501\n\tERROR_LOG_FILE_FULL                                                       syscall.Errno = 1502\n\tERROR_EVENTLOG_FILE_CHANGED                                               syscall.Errno = 1503\n\tERROR_CONTAINER_ASSIGNED                                                  syscall.Errno = 1504\n\tERROR_JOB_NO_CONTAINER                                                    syscall.Errno = 1505\n\tERROR_INVALID_TASK_NAME                                                   syscall.Errno = 1550\n\tERROR_INVALID_TASK_INDEX                                                  syscall.Errno = 1551\n\tERROR_THREAD_ALREADY_IN_TASK                                              syscall.Errno = 1552\n\tERROR_INSTALL_SERVICE_FAILURE                                             syscall.Errno = 1601\n\tERROR_INSTALL_USEREXIT                                                    syscall.Errno = 1602\n\tERROR_INSTALL_FAILURE                                                     syscall.Errno = 1603\n\tERROR_INSTALL_SUSPEND                                                     syscall.Errno = 1604\n\tERROR_UNKNOWN_PRODUCT                                                     syscall.Errno = 1605\n\tERROR_UNKNOWN_FEATURE                                                     syscall.Errno = 1606\n\tERROR_UNKNOWN_COMPONENT                                                   syscall.Errno = 1607\n\tERROR_UNKNOWN_PROPERTY                                                    syscall.Errno = 1608\n\tERROR_INVALID_HANDLE_STATE                                                syscall.Errno = 1609\n\tERROR_BAD_CONFIGURATION                                                   syscall.Errno = 1610\n\tERROR_INDEX_ABSENT                                                        syscall.Errno = 1611\n\tERROR_INSTALL_SOURCE_ABSENT                                               syscall.Errno = 1612\n\tERROR_INSTALL_PACKAGE_VERSION                                             syscall.Errno = 1613\n\tERROR_PRODUCT_UNINSTALLED                                                 syscall.Errno = 1614\n\tERROR_BAD_QUERY_SYNTAX                                                    syscall.Errno = 1615\n\tERROR_INVALID_FIELD                                                       syscall.Errno = 1616\n\tERROR_DEVICE_REMOVED                                                      syscall.Errno = 1617\n\tERROR_INSTALL_ALREADY_RUNNING                                             syscall.Errno = 1618\n\tERROR_INSTALL_PACKAGE_OPEN_FAILED                                         syscall.Errno = 1619\n\tERROR_INSTALL_PACKAGE_INVALID                                             syscall.Errno = 1620\n\tERROR_INSTALL_UI_FAILURE                                                  syscall.Errno = 1621\n\tERROR_INSTALL_LOG_FAILURE                                                 syscall.Errno = 1622\n\tERROR_INSTALL_LANGUAGE_UNSUPPORTED                                        syscall.Errno = 1623\n\tERROR_INSTALL_TRANSFORM_FAILURE                                           syscall.Errno = 1624\n\tERROR_INSTALL_PACKAGE_REJECTED                                            syscall.Errno = 1625\n\tERROR_FUNCTION_NOT_CALLED                                                 syscall.Errno = 1626\n\tERROR_FUNCTION_FAILED                                                     syscall.Errno = 1627\n\tERROR_INVALID_TABLE                                                       syscall.Errno = 1628\n\tERROR_DATATYPE_MISMATCH                                                   syscall.Errno = 1629\n\tERROR_UNSUPPORTED_TYPE                                                    syscall.Errno = 1630\n\tERROR_CREATE_FAILED                                                       syscall.Errno = 1631\n\tERROR_INSTALL_TEMP_UNWRITABLE                                             syscall.Errno = 1632\n\tERROR_INSTALL_PLATFORM_UNSUPPORTED                                        syscall.Errno = 1633\n\tERROR_INSTALL_NOTUSED                                                     syscall.Errno = 1634\n\tERROR_PATCH_PACKAGE_OPEN_FAILED                                           syscall.Errno = 1635\n\tERROR_PATCH_PACKAGE_INVALID                                               syscall.Errno = 1636\n\tERROR_PATCH_PACKAGE_UNSUPPORTED                                           syscall.Errno = 1637\n\tERROR_PRODUCT_VERSION                                                     syscall.Errno = 1638\n\tERROR_INVALID_COMMAND_LINE                                                syscall.Errno = 1639\n\tERROR_INSTALL_REMOTE_DISALLOWED                                           syscall.Errno = 1640\n\tERROR_SUCCESS_REBOOT_INITIATED                                            syscall.Errno = 1641\n\tERROR_PATCH_TARGET_NOT_FOUND                                              syscall.Errno = 1642\n\tERROR_PATCH_PACKAGE_REJECTED                                              syscall.Errno = 1643\n\tERROR_INSTALL_TRANSFORM_REJECTED                                          syscall.Errno = 1644\n\tERROR_INSTALL_REMOTE_PROHIBITED                                           syscall.Errno = 1645\n\tERROR_PATCH_REMOVAL_UNSUPPORTED                                           syscall.Errno = 1646\n\tERROR_UNKNOWN_PATCH                                                       syscall.Errno = 1647\n\tERROR_PATCH_NO_SEQUENCE                                                   syscall.Errno = 1648\n\tERROR_PATCH_REMOVAL_DISALLOWED                                            syscall.Errno = 1649\n\tERROR_INVALID_PATCH_XML                                                   syscall.Errno = 1650\n\tERROR_PATCH_MANAGED_ADVERTISED_PRODUCT                                    syscall.Errno = 1651\n\tERROR_INSTALL_SERVICE_SAFEBOOT                                            syscall.Errno = 1652\n\tERROR_FAIL_FAST_EXCEPTION                                                 syscall.Errno = 1653\n\tERROR_INSTALL_REJECTED                                                    syscall.Errno = 1654\n\tERROR_DYNAMIC_CODE_BLOCKED                                                syscall.Errno = 1655\n\tERROR_NOT_SAME_OBJECT                                                     syscall.Errno = 1656\n\tERROR_STRICT_CFG_VIOLATION                                                syscall.Errno = 1657\n\tERROR_SET_CONTEXT_DENIED                                                  syscall.Errno = 1660\n\tERROR_CROSS_PARTITION_VIOLATION                                           syscall.Errno = 1661\n\tRPC_S_INVALID_STRING_BINDING                                              syscall.Errno = 1700\n\tRPC_S_WRONG_KIND_OF_BINDING                                               syscall.Errno = 1701\n\tRPC_S_INVALID_BINDING                                                     syscall.Errno = 1702\n\tRPC_S_PROTSEQ_NOT_SUPPORTED                                               syscall.Errno = 1703\n\tRPC_S_INVALID_RPC_PROTSEQ                                                 syscall.Errno = 1704\n\tRPC_S_INVALID_STRING_UUID                                                 syscall.Errno = 1705\n\tRPC_S_INVALID_ENDPOINT_FORMAT                                             syscall.Errno = 1706\n\tRPC_S_INVALID_NET_ADDR                                                    syscall.Errno = 1707\n\tRPC_S_NO_ENDPOINT_FOUND                                                   syscall.Errno = 1708\n\tRPC_S_INVALID_TIMEOUT                                                     syscall.Errno = 1709\n\tRPC_S_OBJECT_NOT_FOUND                                                    syscall.Errno = 1710\n\tRPC_S_ALREADY_REGISTERED                                                  syscall.Errno = 1711\n\tRPC_S_TYPE_ALREADY_REGISTERED                                             syscall.Errno = 1712\n\tRPC_S_ALREADY_LISTENING                                                   syscall.Errno = 1713\n\tRPC_S_NO_PROTSEQS_REGISTERED                                              syscall.Errno = 1714\n\tRPC_S_NOT_LISTENING                                                       syscall.Errno = 1715\n\tRPC_S_UNKNOWN_MGR_TYPE                                                    syscall.Errno = 1716\n\tRPC_S_UNKNOWN_IF                                                          syscall.Errno = 1717\n\tRPC_S_NO_BINDINGS                                                         syscall.Errno = 1718\n\tRPC_S_NO_PROTSEQS                                                         syscall.Errno = 1719\n\tRPC_S_CANT_CREATE_ENDPOINT                                                syscall.Errno = 1720\n\tRPC_S_OUT_OF_RESOURCES                                                    syscall.Errno = 1721\n\tRPC_S_SERVER_UNAVAILABLE                                                  syscall.Errno = 1722\n\tRPC_S_SERVER_TOO_BUSY                                                     syscall.Errno = 1723\n\tRPC_S_INVALID_NETWORK_OPTIONS                                             syscall.Errno = 1724\n\tRPC_S_NO_CALL_ACTIVE                                                      syscall.Errno = 1725\n\tRPC_S_CALL_FAILED                                                         syscall.Errno = 1726\n\tRPC_S_CALL_FAILED_DNE                                                     syscall.Errno = 1727\n\tRPC_S_PROTOCOL_ERROR                                                      syscall.Errno = 1728\n\tRPC_S_PROXY_ACCESS_DENIED                                                 syscall.Errno = 1729\n\tRPC_S_UNSUPPORTED_TRANS_SYN                                               syscall.Errno = 1730\n\tRPC_S_UNSUPPORTED_TYPE                                                    syscall.Errno = 1732\n\tRPC_S_INVALID_TAG                                                         syscall.Errno = 1733\n\tRPC_S_INVALID_BOUND                                                       syscall.Errno = 1734\n\tRPC_S_NO_ENTRY_NAME                                                       syscall.Errno = 1735\n\tRPC_S_INVALID_NAME_SYNTAX                                                 syscall.Errno = 1736\n\tRPC_S_UNSUPPORTED_NAME_SYNTAX                                             syscall.Errno = 1737\n\tRPC_S_UUID_NO_ADDRESS                                                     syscall.Errno = 1739\n\tRPC_S_DUPLICATE_ENDPOINT                                                  syscall.Errno = 1740\n\tRPC_S_UNKNOWN_AUTHN_TYPE                                                  syscall.Errno = 1741\n\tRPC_S_MAX_CALLS_TOO_SMALL                                                 syscall.Errno = 1742\n\tRPC_S_STRING_TOO_LONG                                                     syscall.Errno = 1743\n\tRPC_S_PROTSEQ_NOT_FOUND                                                   syscall.Errno = 1744\n\tRPC_S_PROCNUM_OUT_OF_RANGE                                                syscall.Errno = 1745\n\tRPC_S_BINDING_HAS_NO_AUTH                                                 syscall.Errno = 1746\n\tRPC_S_UNKNOWN_AUTHN_SERVICE                                               syscall.Errno = 1747\n\tRPC_S_UNKNOWN_AUTHN_LEVEL                                                 syscall.Errno = 1748\n\tRPC_S_INVALID_AUTH_IDENTITY                                               syscall.Errno = 1749\n\tRPC_S_UNKNOWN_AUTHZ_SERVICE                                               syscall.Errno = 1750\n\tEPT_S_INVALID_ENTRY                                                       syscall.Errno = 1751\n\tEPT_S_CANT_PERFORM_OP                                                     syscall.Errno = 1752\n\tEPT_S_NOT_REGISTERED                                                      syscall.Errno = 1753\n\tRPC_S_NOTHING_TO_EXPORT                                                   syscall.Errno = 1754\n\tRPC_S_INCOMPLETE_NAME                                                     syscall.Errno = 1755\n\tRPC_S_INVALID_VERS_OPTION                                                 syscall.Errno = 1756\n\tRPC_S_NO_MORE_MEMBERS                                                     syscall.Errno = 1757\n\tRPC_S_NOT_ALL_OBJS_UNEXPORTED                                             syscall.Errno = 1758\n\tRPC_S_INTERFACE_NOT_FOUND                                                 syscall.Errno = 1759\n\tRPC_S_ENTRY_ALREADY_EXISTS                                                syscall.Errno = 1760\n\tRPC_S_ENTRY_NOT_FOUND                                                     syscall.Errno = 1761\n\tRPC_S_NAME_SERVICE_UNAVAILABLE                                            syscall.Errno = 1762\n\tRPC_S_INVALID_NAF_ID                                                      syscall.Errno = 1763\n\tRPC_S_CANNOT_SUPPORT                                                      syscall.Errno = 1764\n\tRPC_S_NO_CONTEXT_AVAILABLE                                                syscall.Errno = 1765\n\tRPC_S_INTERNAL_ERROR                                                      syscall.Errno = 1766\n\tRPC_S_ZERO_DIVIDE                                                         syscall.Errno = 1767\n\tRPC_S_ADDRESS_ERROR                                                       syscall.Errno = 1768\n\tRPC_S_FP_DIV_ZERO                                                         syscall.Errno = 1769\n\tRPC_S_FP_UNDERFLOW                                                        syscall.Errno = 1770\n\tRPC_S_FP_OVERFLOW                                                         syscall.Errno = 1771\n\tRPC_X_NO_MORE_ENTRIES                                                     syscall.Errno = 1772\n\tRPC_X_SS_CHAR_TRANS_OPEN_FAIL                                             syscall.Errno = 1773\n\tRPC_X_SS_CHAR_TRANS_SHORT_FILE                                            syscall.Errno = 1774\n\tRPC_X_SS_IN_NULL_CONTEXT                                                  syscall.Errno = 1775\n\tRPC_X_SS_CONTEXT_DAMAGED                                                  syscall.Errno = 1777\n\tRPC_X_SS_HANDLES_MISMATCH                                                 syscall.Errno = 1778\n\tRPC_X_SS_CANNOT_GET_CALL_HANDLE                                           syscall.Errno = 1779\n\tRPC_X_NULL_REF_POINTER                                                    syscall.Errno = 1780\n\tRPC_X_ENUM_VALUE_OUT_OF_RANGE                                             syscall.Errno = 1781\n\tRPC_X_BYTE_COUNT_TOO_SMALL                                                syscall.Errno = 1782\n\tRPC_X_BAD_STUB_DATA                                                       syscall.Errno = 1783\n\tERROR_INVALID_USER_BUFFER                                                 syscall.Errno = 1784\n\tERROR_UNRECOGNIZED_MEDIA                                                  syscall.Errno = 1785\n\tERROR_NO_TRUST_LSA_SECRET                                                 syscall.Errno = 1786\n\tERROR_NO_TRUST_SAM_ACCOUNT                                                syscall.Errno = 1787\n\tERROR_TRUSTED_DOMAIN_FAILURE                                              syscall.Errno = 1788\n\tERROR_TRUSTED_RELATIONSHIP_FAILURE                                        syscall.Errno = 1789\n\tERROR_TRUST_FAILURE                                                       syscall.Errno = 1790\n\tRPC_S_CALL_IN_PROGRESS                                                    syscall.Errno = 1791\n\tERROR_NETLOGON_NOT_STARTED                                                syscall.Errno = 1792\n\tERROR_ACCOUNT_EXPIRED                                                     syscall.Errno = 1793\n\tERROR_REDIRECTOR_HAS_OPEN_HANDLES                                         syscall.Errno = 1794\n\tERROR_PRINTER_DRIVER_ALREADY_INSTALLED                                    syscall.Errno = 1795\n\tERROR_UNKNOWN_PORT                                                        syscall.Errno = 1796\n\tERROR_UNKNOWN_PRINTER_DRIVER                                              syscall.Errno = 1797\n\tERROR_UNKNOWN_PRINTPROCESSOR                                              syscall.Errno = 1798\n\tERROR_INVALID_SEPARATOR_FILE                                              syscall.Errno = 1799\n\tERROR_INVALID_PRIORITY                                                    syscall.Errno = 1800\n\tERROR_INVALID_PRINTER_NAME                                                syscall.Errno = 1801\n\tERROR_PRINTER_ALREADY_EXISTS                                              syscall.Errno = 1802\n\tERROR_INVALID_PRINTER_COMMAND                                             syscall.Errno = 1803\n\tERROR_INVALID_DATATYPE                                                    syscall.Errno = 1804\n\tERROR_INVALID_ENVIRONMENT                                                 syscall.Errno = 1805\n\tRPC_S_NO_MORE_BINDINGS                                                    syscall.Errno = 1806\n\tERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT                                   syscall.Errno = 1807\n\tERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT                                   syscall.Errno = 1808\n\tERROR_NOLOGON_SERVER_TRUST_ACCOUNT                                        syscall.Errno = 1809\n\tERROR_DOMAIN_TRUST_INCONSISTENT                                           syscall.Errno = 1810\n\tERROR_SERVER_HAS_OPEN_HANDLES                                             syscall.Errno = 1811\n\tERROR_RESOURCE_DATA_NOT_FOUND                                             syscall.Errno = 1812\n\tERROR_RESOURCE_TYPE_NOT_FOUND                                             syscall.Errno = 1813\n\tERROR_RESOURCE_NAME_NOT_FOUND                                             syscall.Errno = 1814\n\tERROR_RESOURCE_LANG_NOT_FOUND                                             syscall.Errno = 1815\n\tERROR_NOT_ENOUGH_QUOTA                                                    syscall.Errno = 1816\n\tRPC_S_NO_INTERFACES                                                       syscall.Errno = 1817\n\tRPC_S_CALL_CANCELLED                                                      syscall.Errno = 1818\n\tRPC_S_BINDING_INCOMPLETE                                                  syscall.Errno = 1819\n\tRPC_S_COMM_FAILURE                                                        syscall.Errno = 1820\n\tRPC_S_UNSUPPORTED_AUTHN_LEVEL                                             syscall.Errno = 1821\n\tRPC_S_NO_PRINC_NAME                                                       syscall.Errno = 1822\n\tRPC_S_NOT_RPC_ERROR                                                       syscall.Errno = 1823\n\tRPC_S_UUID_LOCAL_ONLY                                                     syscall.Errno = 1824\n\tRPC_S_SEC_PKG_ERROR                                                       syscall.Errno = 1825\n\tRPC_S_NOT_CANCELLED                                                       syscall.Errno = 1826\n\tRPC_X_INVALID_ES_ACTION                                                   syscall.Errno = 1827\n\tRPC_X_WRONG_ES_VERSION                                                    syscall.Errno = 1828\n\tRPC_X_WRONG_STUB_VERSION                                                  syscall.Errno = 1829\n\tRPC_X_INVALID_PIPE_OBJECT                                                 syscall.Errno = 1830\n\tRPC_X_WRONG_PIPE_ORDER                                                    syscall.Errno = 1831\n\tRPC_X_WRONG_PIPE_VERSION                                                  syscall.Errno = 1832\n\tRPC_S_COOKIE_AUTH_FAILED                                                  syscall.Errno = 1833\n\tRPC_S_DO_NOT_DISTURB                                                      syscall.Errno = 1834\n\tRPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED                                        syscall.Errno = 1835\n\tRPC_S_SYSTEM_HANDLE_TYPE_MISMATCH                                         syscall.Errno = 1836\n\tRPC_S_GROUP_MEMBER_NOT_FOUND                                              syscall.Errno = 1898\n\tEPT_S_CANT_CREATE                                                         syscall.Errno = 1899\n\tRPC_S_INVALID_OBJECT                                                      syscall.Errno = 1900\n\tERROR_INVALID_TIME                                                        syscall.Errno = 1901\n\tERROR_INVALID_FORM_NAME                                                   syscall.Errno = 1902\n\tERROR_INVALID_FORM_SIZE                                                   syscall.Errno = 1903\n\tERROR_ALREADY_WAITING                                                     syscall.Errno = 1904\n\tERROR_PRINTER_DELETED                                                     syscall.Errno = 1905\n\tERROR_INVALID_PRINTER_STATE                                               syscall.Errno = 1906\n\tERROR_PASSWORD_MUST_CHANGE                                                syscall.Errno = 1907\n\tERROR_DOMAIN_CONTROLLER_NOT_FOUND                                         syscall.Errno = 1908\n\tERROR_ACCOUNT_LOCKED_OUT                                                  syscall.Errno = 1909\n\tOR_INVALID_OXID                                                           syscall.Errno = 1910\n\tOR_INVALID_OID                                                            syscall.Errno = 1911\n\tOR_INVALID_SET                                                            syscall.Errno = 1912\n\tRPC_S_SEND_INCOMPLETE                                                     syscall.Errno = 1913\n\tRPC_S_INVALID_ASYNC_HANDLE                                                syscall.Errno = 1914\n\tRPC_S_INVALID_ASYNC_CALL                                                  syscall.Errno = 1915\n\tRPC_X_PIPE_CLOSED                                                         syscall.Errno = 1916\n\tRPC_X_PIPE_DISCIPLINE_ERROR                                               syscall.Errno = 1917\n\tRPC_X_PIPE_EMPTY                                                          syscall.Errno = 1918\n\tERROR_NO_SITENAME                                                         syscall.Errno = 1919\n\tERROR_CANT_ACCESS_FILE                                                    syscall.Errno = 1920\n\tERROR_CANT_RESOLVE_FILENAME                                               syscall.Errno = 1921\n\tRPC_S_ENTRY_TYPE_MISMATCH                                                 syscall.Errno = 1922\n\tRPC_S_NOT_ALL_OBJS_EXPORTED                                               syscall.Errno = 1923\n\tRPC_S_INTERFACE_NOT_EXPORTED                                              syscall.Errno = 1924\n\tRPC_S_PROFILE_NOT_ADDED                                                   syscall.Errno = 1925\n\tRPC_S_PRF_ELT_NOT_ADDED                                                   syscall.Errno = 1926\n\tRPC_S_PRF_ELT_NOT_REMOVED                                                 syscall.Errno = 1927\n\tRPC_S_GRP_ELT_NOT_ADDED                                                   syscall.Errno = 1928\n\tRPC_S_GRP_ELT_NOT_REMOVED                                                 syscall.Errno = 1929\n\tERROR_KM_DRIVER_BLOCKED                                                   syscall.Errno = 1930\n\tERROR_CONTEXT_EXPIRED                                                     syscall.Errno = 1931\n\tERROR_PER_USER_TRUST_QUOTA_EXCEEDED                                       syscall.Errno = 1932\n\tERROR_ALL_USER_TRUST_QUOTA_EXCEEDED                                       syscall.Errno = 1933\n\tERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED                                    syscall.Errno = 1934\n\tERROR_AUTHENTICATION_FIREWALL_FAILED                                      syscall.Errno = 1935\n\tERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED                                    syscall.Errno = 1936\n\tERROR_NTLM_BLOCKED                                                        syscall.Errno = 1937\n\tERROR_PASSWORD_CHANGE_REQUIRED                                            syscall.Errno = 1938\n\tERROR_LOST_MODE_LOGON_RESTRICTION                                         syscall.Errno = 1939\n\tERROR_INVALID_PIXEL_FORMAT                                                syscall.Errno = 2000\n\tERROR_BAD_DRIVER                                                          syscall.Errno = 2001\n\tERROR_INVALID_WINDOW_STYLE                                                syscall.Errno = 2002\n\tERROR_METAFILE_NOT_SUPPORTED                                              syscall.Errno = 2003\n\tERROR_TRANSFORM_NOT_SUPPORTED                                             syscall.Errno = 2004\n\tERROR_CLIPPING_NOT_SUPPORTED                                              syscall.Errno = 2005\n\tERROR_INVALID_CMM                                                         syscall.Errno = 2010\n\tERROR_INVALID_PROFILE                                                     syscall.Errno = 2011\n\tERROR_TAG_NOT_FOUND                                                       syscall.Errno = 2012\n\tERROR_TAG_NOT_PRESENT                                                     syscall.Errno = 2013\n\tERROR_DUPLICATE_TAG                                                       syscall.Errno = 2014\n\tERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE                                  syscall.Errno = 2015\n\tERROR_PROFILE_NOT_FOUND                                                   syscall.Errno = 2016\n\tERROR_INVALID_COLORSPACE                                                  syscall.Errno = 2017\n\tERROR_ICM_NOT_ENABLED                                                     syscall.Errno = 2018\n\tERROR_DELETING_ICM_XFORM                                                  syscall.Errno = 2019\n\tERROR_INVALID_TRANSFORM                                                   syscall.Errno = 2020\n\tERROR_COLORSPACE_MISMATCH                                                 syscall.Errno = 2021\n\tERROR_INVALID_COLORINDEX                                                  syscall.Errno = 2022\n\tERROR_PROFILE_DOES_NOT_MATCH_DEVICE                                       syscall.Errno = 2023\n\tERROR_CONNECTED_OTHER_PASSWORD                                            syscall.Errno = 2108\n\tERROR_CONNECTED_OTHER_PASSWORD_DEFAULT                                    syscall.Errno = 2109\n\tERROR_BAD_USERNAME                                                        syscall.Errno = 2202\n\tERROR_NOT_CONNECTED                                                       syscall.Errno = 2250\n\tERROR_OPEN_FILES                                                          syscall.Errno = 2401\n\tERROR_ACTIVE_CONNECTIONS                                                  syscall.Errno = 2402\n\tERROR_DEVICE_IN_USE                                                       syscall.Errno = 2404\n\tERROR_UNKNOWN_PRINT_MONITOR                                               syscall.Errno = 3000\n\tERROR_PRINTER_DRIVER_IN_USE                                               syscall.Errno = 3001\n\tERROR_SPOOL_FILE_NOT_FOUND                                                syscall.Errno = 3002\n\tERROR_SPL_NO_STARTDOC                                                     syscall.Errno = 3003\n\tERROR_SPL_NO_ADDJOB                                                       syscall.Errno = 3004\n\tERROR_PRINT_PROCESSOR_ALREADY_INSTALLED                                   syscall.Errno = 3005\n\tERROR_PRINT_MONITOR_ALREADY_INSTALLED                                     syscall.Errno = 3006\n\tERROR_INVALID_PRINT_MONITOR                                               syscall.Errno = 3007\n\tERROR_PRINT_MONITOR_IN_USE                                                syscall.Errno = 3008\n\tERROR_PRINTER_HAS_JOBS_QUEUED                                             syscall.Errno = 3009\n\tERROR_SUCCESS_REBOOT_REQUIRED                                             syscall.Errno = 3010\n\tERROR_SUCCESS_RESTART_REQUIRED                                            syscall.Errno = 3011\n\tERROR_PRINTER_NOT_FOUND                                                   syscall.Errno = 3012\n\tERROR_PRINTER_DRIVER_WARNED                                               syscall.Errno = 3013\n\tERROR_PRINTER_DRIVER_BLOCKED                                              syscall.Errno = 3014\n\tERROR_PRINTER_DRIVER_PACKAGE_IN_USE                                       syscall.Errno = 3015\n\tERROR_CORE_DRIVER_PACKAGE_NOT_FOUND                                       syscall.Errno = 3016\n\tERROR_FAIL_REBOOT_REQUIRED                                                syscall.Errno = 3017\n\tERROR_FAIL_REBOOT_INITIATED                                               syscall.Errno = 3018\n\tERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED                                      syscall.Errno = 3019\n\tERROR_PRINT_JOB_RESTART_REQUIRED                                          syscall.Errno = 3020\n\tERROR_INVALID_PRINTER_DRIVER_MANIFEST                                     syscall.Errno = 3021\n\tERROR_PRINTER_NOT_SHAREABLE                                               syscall.Errno = 3022\n\tERROR_REQUEST_PAUSED                                                      syscall.Errno = 3050\n\tERROR_APPEXEC_CONDITION_NOT_SATISFIED                                     syscall.Errno = 3060\n\tERROR_APPEXEC_HANDLE_INVALIDATED                                          syscall.Errno = 3061\n\tERROR_APPEXEC_INVALID_HOST_GENERATION                                     syscall.Errno = 3062\n\tERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION                             syscall.Errno = 3063\n\tERROR_APPEXEC_INVALID_HOST_STATE                                          syscall.Errno = 3064\n\tERROR_APPEXEC_NO_DONOR                                                    syscall.Errno = 3065\n\tERROR_APPEXEC_HOST_ID_MISMATCH                                            syscall.Errno = 3066\n\tERROR_APPEXEC_UNKNOWN_USER                                                syscall.Errno = 3067\n\tERROR_IO_REISSUE_AS_CACHED                                                syscall.Errno = 3950\n\tERROR_WINS_INTERNAL                                                       syscall.Errno = 4000\n\tERROR_CAN_NOT_DEL_LOCAL_WINS                                              syscall.Errno = 4001\n\tERROR_STATIC_INIT                                                         syscall.Errno = 4002\n\tERROR_INC_BACKUP                                                          syscall.Errno = 4003\n\tERROR_FULL_BACKUP                                                         syscall.Errno = 4004\n\tERROR_REC_NON_EXISTENT                                                    syscall.Errno = 4005\n\tERROR_RPL_NOT_ALLOWED                                                     syscall.Errno = 4006\n\tPEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED                            syscall.Errno = 4050\n\tPEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO                                   syscall.Errno = 4051\n\tPEERDIST_ERROR_MISSING_DATA                                               syscall.Errno = 4052\n\tPEERDIST_ERROR_NO_MORE                                                    syscall.Errno = 4053\n\tPEERDIST_ERROR_NOT_INITIALIZED                                            syscall.Errno = 4054\n\tPEERDIST_ERROR_ALREADY_INITIALIZED                                        syscall.Errno = 4055\n\tPEERDIST_ERROR_SHUTDOWN_IN_PROGRESS                                       syscall.Errno = 4056\n\tPEERDIST_ERROR_INVALIDATED                                                syscall.Errno = 4057\n\tPEERDIST_ERROR_ALREADY_EXISTS                                             syscall.Errno = 4058\n\tPEERDIST_ERROR_OPERATION_NOTFOUND                                         syscall.Errno = 4059\n\tPEERDIST_ERROR_ALREADY_COMPLETED                                          syscall.Errno = 4060\n\tPEERDIST_ERROR_OUT_OF_BOUNDS                                              syscall.Errno = 4061\n\tPEERDIST_ERROR_VERSION_UNSUPPORTED                                        syscall.Errno = 4062\n\tPEERDIST_ERROR_INVALID_CONFIGURATION                                      syscall.Errno = 4063\n\tPEERDIST_ERROR_NOT_LICENSED                                               syscall.Errno = 4064\n\tPEERDIST_ERROR_SERVICE_UNAVAILABLE                                        syscall.Errno = 4065\n\tPEERDIST_ERROR_TRUST_FAILURE                                              syscall.Errno = 4066\n\tERROR_DHCP_ADDRESS_CONFLICT                                               syscall.Errno = 4100\n\tERROR_WMI_GUID_NOT_FOUND                                                  syscall.Errno = 4200\n\tERROR_WMI_INSTANCE_NOT_FOUND                                              syscall.Errno = 4201\n\tERROR_WMI_ITEMID_NOT_FOUND                                                syscall.Errno = 4202\n\tERROR_WMI_TRY_AGAIN                                                       syscall.Errno = 4203\n\tERROR_WMI_DP_NOT_FOUND                                                    syscall.Errno = 4204\n\tERROR_WMI_UNRESOLVED_INSTANCE_REF                                         syscall.Errno = 4205\n\tERROR_WMI_ALREADY_ENABLED                                                 syscall.Errno = 4206\n\tERROR_WMI_GUID_DISCONNECTED                                               syscall.Errno = 4207\n\tERROR_WMI_SERVER_UNAVAILABLE                                              syscall.Errno = 4208\n\tERROR_WMI_DP_FAILED                                                       syscall.Errno = 4209\n\tERROR_WMI_INVALID_MOF                                                     syscall.Errno = 4210\n\tERROR_WMI_INVALID_REGINFO                                                 syscall.Errno = 4211\n\tERROR_WMI_ALREADY_DISABLED                                                syscall.Errno = 4212\n\tERROR_WMI_READ_ONLY                                                       syscall.Errno = 4213\n\tERROR_WMI_SET_FAILURE                                                     syscall.Errno = 4214\n\tERROR_NOT_APPCONTAINER                                                    syscall.Errno = 4250\n\tERROR_APPCONTAINER_REQUIRED                                               syscall.Errno = 4251\n\tERROR_NOT_SUPPORTED_IN_APPCONTAINER                                       syscall.Errno = 4252\n\tERROR_INVALID_PACKAGE_SID_LENGTH                                          syscall.Errno = 4253\n\tERROR_INVALID_MEDIA                                                       syscall.Errno = 4300\n\tERROR_INVALID_LIBRARY                                                     syscall.Errno = 4301\n\tERROR_INVALID_MEDIA_POOL                                                  syscall.Errno = 4302\n\tERROR_DRIVE_MEDIA_MISMATCH                                                syscall.Errno = 4303\n\tERROR_MEDIA_OFFLINE                                                       syscall.Errno = 4304\n\tERROR_LIBRARY_OFFLINE                                                     syscall.Errno = 4305\n\tERROR_EMPTY                                                               syscall.Errno = 4306\n\tERROR_NOT_EMPTY                                                           syscall.Errno = 4307\n\tERROR_MEDIA_UNAVAILABLE                                                   syscall.Errno = 4308\n\tERROR_RESOURCE_DISABLED                                                   syscall.Errno = 4309\n\tERROR_INVALID_CLEANER                                                     syscall.Errno = 4310\n\tERROR_UNABLE_TO_CLEAN                                                     syscall.Errno = 4311\n\tERROR_OBJECT_NOT_FOUND                                                    syscall.Errno = 4312\n\tERROR_DATABASE_FAILURE                                                    syscall.Errno = 4313\n\tERROR_DATABASE_FULL                                                       syscall.Errno = 4314\n\tERROR_MEDIA_INCOMPATIBLE                                                  syscall.Errno = 4315\n\tERROR_RESOURCE_NOT_PRESENT                                                syscall.Errno = 4316\n\tERROR_INVALID_OPERATION                                                   syscall.Errno = 4317\n\tERROR_MEDIA_NOT_AVAILABLE                                                 syscall.Errno = 4318\n\tERROR_DEVICE_NOT_AVAILABLE                                                syscall.Errno = 4319\n\tERROR_REQUEST_REFUSED                                                     syscall.Errno = 4320\n\tERROR_INVALID_DRIVE_OBJECT                                                syscall.Errno = 4321\n\tERROR_LIBRARY_FULL                                                        syscall.Errno = 4322\n\tERROR_MEDIUM_NOT_ACCESSIBLE                                               syscall.Errno = 4323\n\tERROR_UNABLE_TO_LOAD_MEDIUM                                               syscall.Errno = 4324\n\tERROR_UNABLE_TO_INVENTORY_DRIVE                                           syscall.Errno = 4325\n\tERROR_UNABLE_TO_INVENTORY_SLOT                                            syscall.Errno = 4326\n\tERROR_UNABLE_TO_INVENTORY_TRANSPORT                                       syscall.Errno = 4327\n\tERROR_TRANSPORT_FULL                                                      syscall.Errno = 4328\n\tERROR_CONTROLLING_IEPORT                                                  syscall.Errno = 4329\n\tERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA                                       syscall.Errno = 4330\n\tERROR_CLEANER_SLOT_SET                                                    syscall.Errno = 4331\n\tERROR_CLEANER_SLOT_NOT_SET                                                syscall.Errno = 4332\n\tERROR_CLEANER_CARTRIDGE_SPENT                                             syscall.Errno = 4333\n\tERROR_UNEXPECTED_OMID                                                     syscall.Errno = 4334\n\tERROR_CANT_DELETE_LAST_ITEM                                               syscall.Errno = 4335\n\tERROR_MESSAGE_EXCEEDS_MAX_SIZE                                            syscall.Errno = 4336\n\tERROR_VOLUME_CONTAINS_SYS_FILES                                           syscall.Errno = 4337\n\tERROR_INDIGENOUS_TYPE                                                     syscall.Errno = 4338\n\tERROR_NO_SUPPORTING_DRIVES                                                syscall.Errno = 4339\n\tERROR_CLEANER_CARTRIDGE_INSTALLED                                         syscall.Errno = 4340\n\tERROR_IEPORT_FULL                                                         syscall.Errno = 4341\n\tERROR_FILE_OFFLINE                                                        syscall.Errno = 4350\n\tERROR_REMOTE_STORAGE_NOT_ACTIVE                                           syscall.Errno = 4351\n\tERROR_REMOTE_STORAGE_MEDIA_ERROR                                          syscall.Errno = 4352\n\tERROR_NOT_A_REPARSE_POINT                                                 syscall.Errno = 4390\n\tERROR_REPARSE_ATTRIBUTE_CONFLICT                                          syscall.Errno = 4391\n\tERROR_INVALID_REPARSE_DATA                                                syscall.Errno = 4392\n\tERROR_REPARSE_TAG_INVALID                                                 syscall.Errno = 4393\n\tERROR_REPARSE_TAG_MISMATCH                                                syscall.Errno = 4394\n\tERROR_REPARSE_POINT_ENCOUNTERED                                           syscall.Errno = 4395\n\tERROR_APP_DATA_NOT_FOUND                                                  syscall.Errno = 4400\n\tERROR_APP_DATA_EXPIRED                                                    syscall.Errno = 4401\n\tERROR_APP_DATA_CORRUPT                                                    syscall.Errno = 4402\n\tERROR_APP_DATA_LIMIT_EXCEEDED                                             syscall.Errno = 4403\n\tERROR_APP_DATA_REBOOT_REQUIRED                                            syscall.Errno = 4404\n\tERROR_SECUREBOOT_ROLLBACK_DETECTED                                        syscall.Errno = 4420\n\tERROR_SECUREBOOT_POLICY_VIOLATION                                         syscall.Errno = 4421\n\tERROR_SECUREBOOT_INVALID_POLICY                                           syscall.Errno = 4422\n\tERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND                               syscall.Errno = 4423\n\tERROR_SECUREBOOT_POLICY_NOT_SIGNED                                        syscall.Errno = 4424\n\tERROR_SECUREBOOT_NOT_ENABLED                                              syscall.Errno = 4425\n\tERROR_SECUREBOOT_FILE_REPLACED                                            syscall.Errno = 4426\n\tERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED                                    syscall.Errno = 4427\n\tERROR_SECUREBOOT_POLICY_UNKNOWN                                           syscall.Errno = 4428\n\tERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION                       syscall.Errno = 4429\n\tERROR_SECUREBOOT_PLATFORM_ID_MISMATCH                                     syscall.Errno = 4430\n\tERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED                                 syscall.Errno = 4431\n\tERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH                                  syscall.Errno = 4432\n\tERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING                             syscall.Errno = 4433\n\tERROR_SECUREBOOT_NOT_BASE_POLICY                                          syscall.Errno = 4434\n\tERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY                                  syscall.Errno = 4435\n\tERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED                                      syscall.Errno = 4440\n\tERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED                                     syscall.Errno = 4441\n\tERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED                                     syscall.Errno = 4442\n\tERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED                                    syscall.Errno = 4443\n\tERROR_ALREADY_HAS_STREAM_ID                                               syscall.Errno = 4444\n\tERROR_SMR_GARBAGE_COLLECTION_REQUIRED                                     syscall.Errno = 4445\n\tERROR_WOF_WIM_HEADER_CORRUPT                                              syscall.Errno = 4446\n\tERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT                                      syscall.Errno = 4447\n\tERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT                                     syscall.Errno = 4448\n\tERROR_VOLUME_NOT_SIS_ENABLED                                              syscall.Errno = 4500\n\tERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED                                  syscall.Errno = 4550\n\tERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION                                   syscall.Errno = 4551\n\tERROR_SYSTEM_INTEGRITY_INVALID_POLICY                                     syscall.Errno = 4552\n\tERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED                                  syscall.Errno = 4553\n\tERROR_SYSTEM_INTEGRITY_TOO_MANY_POLICIES                                  syscall.Errno = 4554\n\tERROR_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED                 syscall.Errno = 4555\n\tERROR_VSM_NOT_INITIALIZED                                                 syscall.Errno = 4560\n\tERROR_VSM_DMA_PROTECTION_NOT_IN_USE                                       syscall.Errno = 4561\n\tERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED                                    syscall.Errno = 4570\n\tERROR_PLATFORM_MANIFEST_INVALID                                           syscall.Errno = 4571\n\tERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED                               syscall.Errno = 4572\n\tERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED                            syscall.Errno = 4573\n\tERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND                               syscall.Errno = 4574\n\tERROR_PLATFORM_MANIFEST_NOT_ACTIVE                                        syscall.Errno = 4575\n\tERROR_PLATFORM_MANIFEST_NOT_SIGNED                                        syscall.Errno = 4576\n\tERROR_DEPENDENT_RESOURCE_EXISTS                                           syscall.Errno = 5001\n\tERROR_DEPENDENCY_NOT_FOUND                                                syscall.Errno = 5002\n\tERROR_DEPENDENCY_ALREADY_EXISTS                                           syscall.Errno = 5003\n\tERROR_RESOURCE_NOT_ONLINE                                                 syscall.Errno = 5004\n\tERROR_HOST_NODE_NOT_AVAILABLE                                             syscall.Errno = 5005\n\tERROR_RESOURCE_NOT_AVAILABLE                                              syscall.Errno = 5006\n\tERROR_RESOURCE_NOT_FOUND                                                  syscall.Errno = 5007\n\tERROR_SHUTDOWN_CLUSTER                                                    syscall.Errno = 5008\n\tERROR_CANT_EVICT_ACTIVE_NODE                                              syscall.Errno = 5009\n\tERROR_OBJECT_ALREADY_EXISTS                                               syscall.Errno = 5010\n\tERROR_OBJECT_IN_LIST                                                      syscall.Errno = 5011\n\tERROR_GROUP_NOT_AVAILABLE                                                 syscall.Errno = 5012\n\tERROR_GROUP_NOT_FOUND                                                     syscall.Errno = 5013\n\tERROR_GROUP_NOT_ONLINE                                                    syscall.Errno = 5014\n\tERROR_HOST_NODE_NOT_RESOURCE_OWNER                                        syscall.Errno = 5015\n\tERROR_HOST_NODE_NOT_GROUP_OWNER                                           syscall.Errno = 5016\n\tERROR_RESMON_CREATE_FAILED                                                syscall.Errno = 5017\n\tERROR_RESMON_ONLINE_FAILED                                                syscall.Errno = 5018\n\tERROR_RESOURCE_ONLINE                                                     syscall.Errno = 5019\n\tERROR_QUORUM_RESOURCE                                                     syscall.Errno = 5020\n\tERROR_NOT_QUORUM_CAPABLE                                                  syscall.Errno = 5021\n\tERROR_CLUSTER_SHUTTING_DOWN                                               syscall.Errno = 5022\n\tERROR_INVALID_STATE                                                       syscall.Errno = 5023\n\tERROR_RESOURCE_PROPERTIES_STORED                                          syscall.Errno = 5024\n\tERROR_NOT_QUORUM_CLASS                                                    syscall.Errno = 5025\n\tERROR_CORE_RESOURCE                                                       syscall.Errno = 5026\n\tERROR_QUORUM_RESOURCE_ONLINE_FAILED                                       syscall.Errno = 5027\n\tERROR_QUORUMLOG_OPEN_FAILED                                               syscall.Errno = 5028\n\tERROR_CLUSTERLOG_CORRUPT                                                  syscall.Errno = 5029\n\tERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE                                   syscall.Errno = 5030\n\tERROR_CLUSTERLOG_EXCEEDS_MAXSIZE                                          syscall.Errno = 5031\n\tERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND                                       syscall.Errno = 5032\n\tERROR_CLUSTERLOG_NOT_ENOUGH_SPACE                                         syscall.Errno = 5033\n\tERROR_QUORUM_OWNER_ALIVE                                                  syscall.Errno = 5034\n\tERROR_NETWORK_NOT_AVAILABLE                                               syscall.Errno = 5035\n\tERROR_NODE_NOT_AVAILABLE                                                  syscall.Errno = 5036\n\tERROR_ALL_NODES_NOT_AVAILABLE                                             syscall.Errno = 5037\n\tERROR_RESOURCE_FAILED                                                     syscall.Errno = 5038\n\tERROR_CLUSTER_INVALID_NODE                                                syscall.Errno = 5039\n\tERROR_CLUSTER_NODE_EXISTS                                                 syscall.Errno = 5040\n\tERROR_CLUSTER_JOIN_IN_PROGRESS                                            syscall.Errno = 5041\n\tERROR_CLUSTER_NODE_NOT_FOUND                                              syscall.Errno = 5042\n\tERROR_CLUSTER_LOCAL_NODE_NOT_FOUND                                        syscall.Errno = 5043\n\tERROR_CLUSTER_NETWORK_EXISTS                                              syscall.Errno = 5044\n\tERROR_CLUSTER_NETWORK_NOT_FOUND                                           syscall.Errno = 5045\n\tERROR_CLUSTER_NETINTERFACE_EXISTS                                         syscall.Errno = 5046\n\tERROR_CLUSTER_NETINTERFACE_NOT_FOUND                                      syscall.Errno = 5047\n\tERROR_CLUSTER_INVALID_REQUEST                                             syscall.Errno = 5048\n\tERROR_CLUSTER_INVALID_NETWORK_PROVIDER                                    syscall.Errno = 5049\n\tERROR_CLUSTER_NODE_DOWN                                                   syscall.Errno = 5050\n\tERROR_CLUSTER_NODE_UNREACHABLE                                            syscall.Errno = 5051\n\tERROR_CLUSTER_NODE_NOT_MEMBER                                             syscall.Errno = 5052\n\tERROR_CLUSTER_JOIN_NOT_IN_PROGRESS                                        syscall.Errno = 5053\n\tERROR_CLUSTER_INVALID_NETWORK                                             syscall.Errno = 5054\n\tERROR_CLUSTER_NODE_UP                                                     syscall.Errno = 5056\n\tERROR_CLUSTER_IPADDR_IN_USE                                               syscall.Errno = 5057\n\tERROR_CLUSTER_NODE_NOT_PAUSED                                             syscall.Errno = 5058\n\tERROR_CLUSTER_NO_SECURITY_CONTEXT                                         syscall.Errno = 5059\n\tERROR_CLUSTER_NETWORK_NOT_INTERNAL                                        syscall.Errno = 5060\n\tERROR_CLUSTER_NODE_ALREADY_UP                                             syscall.Errno = 5061\n\tERROR_CLUSTER_NODE_ALREADY_DOWN                                           syscall.Errno = 5062\n\tERROR_CLUSTER_NETWORK_ALREADY_ONLINE                                      syscall.Errno = 5063\n\tERROR_CLUSTER_NETWORK_ALREADY_OFFLINE                                     syscall.Errno = 5064\n\tERROR_CLUSTER_NODE_ALREADY_MEMBER                                         syscall.Errno = 5065\n\tERROR_CLUSTER_LAST_INTERNAL_NETWORK                                       syscall.Errno = 5066\n\tERROR_CLUSTER_NETWORK_HAS_DEPENDENTS                                      syscall.Errno = 5067\n\tERROR_INVALID_OPERATION_ON_QUORUM                                         syscall.Errno = 5068\n\tERROR_DEPENDENCY_NOT_ALLOWED                                              syscall.Errno = 5069\n\tERROR_CLUSTER_NODE_PAUSED                                                 syscall.Errno = 5070\n\tERROR_NODE_CANT_HOST_RESOURCE                                             syscall.Errno = 5071\n\tERROR_CLUSTER_NODE_NOT_READY                                              syscall.Errno = 5072\n\tERROR_CLUSTER_NODE_SHUTTING_DOWN                                          syscall.Errno = 5073\n\tERROR_CLUSTER_JOIN_ABORTED                                                syscall.Errno = 5074\n\tERROR_CLUSTER_INCOMPATIBLE_VERSIONS                                       syscall.Errno = 5075\n\tERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED                                syscall.Errno = 5076\n\tERROR_CLUSTER_SYSTEM_CONFIG_CHANGED                                       syscall.Errno = 5077\n\tERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND                                     syscall.Errno = 5078\n\tERROR_CLUSTER_RESTYPE_NOT_SUPPORTED                                       syscall.Errno = 5079\n\tERROR_CLUSTER_RESNAME_NOT_FOUND                                           syscall.Errno = 5080\n\tERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED                                  syscall.Errno = 5081\n\tERROR_CLUSTER_OWNER_NOT_IN_PREFLIST                                       syscall.Errno = 5082\n\tERROR_CLUSTER_DATABASE_SEQMISMATCH                                        syscall.Errno = 5083\n\tERROR_RESMON_INVALID_STATE                                                syscall.Errno = 5084\n\tERROR_CLUSTER_GUM_NOT_LOCKER                                              syscall.Errno = 5085\n\tERROR_QUORUM_DISK_NOT_FOUND                                               syscall.Errno = 5086\n\tERROR_DATABASE_BACKUP_CORRUPT                                             syscall.Errno = 5087\n\tERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT                                   syscall.Errno = 5088\n\tERROR_RESOURCE_PROPERTY_UNCHANGEABLE                                      syscall.Errno = 5089\n\tERROR_NO_ADMIN_ACCESS_POINT                                               syscall.Errno = 5090\n\tERROR_CLUSTER_MEMBERSHIP_INVALID_STATE                                    syscall.Errno = 5890\n\tERROR_CLUSTER_QUORUMLOG_NOT_FOUND                                         syscall.Errno = 5891\n\tERROR_CLUSTER_MEMBERSHIP_HALT                                             syscall.Errno = 5892\n\tERROR_CLUSTER_INSTANCE_ID_MISMATCH                                        syscall.Errno = 5893\n\tERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP                                    syscall.Errno = 5894\n\tERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH                                 syscall.Errno = 5895\n\tERROR_CLUSTER_EVICT_WITHOUT_CLEANUP                                       syscall.Errno = 5896\n\tERROR_CLUSTER_PARAMETER_MISMATCH                                          syscall.Errno = 5897\n\tERROR_NODE_CANNOT_BE_CLUSTERED                                            syscall.Errno = 5898\n\tERROR_CLUSTER_WRONG_OS_VERSION                                            syscall.Errno = 5899\n\tERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME                                syscall.Errno = 5900\n\tERROR_CLUSCFG_ALREADY_COMMITTED                                           syscall.Errno = 5901\n\tERROR_CLUSCFG_ROLLBACK_FAILED                                             syscall.Errno = 5902\n\tERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT                           syscall.Errno = 5903\n\tERROR_CLUSTER_OLD_VERSION                                                 syscall.Errno = 5904\n\tERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME                               syscall.Errno = 5905\n\tERROR_CLUSTER_NO_NET_ADAPTERS                                             syscall.Errno = 5906\n\tERROR_CLUSTER_POISONED                                                    syscall.Errno = 5907\n\tERROR_CLUSTER_GROUP_MOVING                                                syscall.Errno = 5908\n\tERROR_CLUSTER_RESOURCE_TYPE_BUSY                                          syscall.Errno = 5909\n\tERROR_RESOURCE_CALL_TIMED_OUT                                             syscall.Errno = 5910\n\tERROR_INVALID_CLUSTER_IPV6_ADDRESS                                        syscall.Errno = 5911\n\tERROR_CLUSTER_INTERNAL_INVALID_FUNCTION                                   syscall.Errno = 5912\n\tERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS                                     syscall.Errno = 5913\n\tERROR_CLUSTER_PARTIAL_SEND                                                syscall.Errno = 5914\n\tERROR_CLUSTER_REGISTRY_INVALID_FUNCTION                                   syscall.Errno = 5915\n\tERROR_CLUSTER_INVALID_STRING_TERMINATION                                  syscall.Errno = 5916\n\tERROR_CLUSTER_INVALID_STRING_FORMAT                                       syscall.Errno = 5917\n\tERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS                            syscall.Errno = 5918\n\tERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS                        syscall.Errno = 5919\n\tERROR_CLUSTER_NULL_DATA                                                   syscall.Errno = 5920\n\tERROR_CLUSTER_PARTIAL_READ                                                syscall.Errno = 5921\n\tERROR_CLUSTER_PARTIAL_WRITE                                               syscall.Errno = 5922\n\tERROR_CLUSTER_CANT_DESERIALIZE_DATA                                       syscall.Errno = 5923\n\tERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT                                syscall.Errno = 5924\n\tERROR_CLUSTER_NO_QUORUM                                                   syscall.Errno = 5925\n\tERROR_CLUSTER_INVALID_IPV6_NETWORK                                        syscall.Errno = 5926\n\tERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK                                 syscall.Errno = 5927\n\tERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP                                    syscall.Errno = 5928\n\tERROR_DEPENDENCY_TREE_TOO_COMPLEX                                         syscall.Errno = 5929\n\tERROR_EXCEPTION_IN_RESOURCE_CALL                                          syscall.Errno = 5930\n\tERROR_CLUSTER_RHS_FAILED_INITIALIZATION                                   syscall.Errno = 5931\n\tERROR_CLUSTER_NOT_INSTALLED                                               syscall.Errno = 5932\n\tERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE                   syscall.Errno = 5933\n\tERROR_CLUSTER_MAX_NODES_IN_CLUSTER                                        syscall.Errno = 5934\n\tERROR_CLUSTER_TOO_MANY_NODES                                              syscall.Errno = 5935\n\tERROR_CLUSTER_OBJECT_ALREADY_USED                                         syscall.Errno = 5936\n\tERROR_NONCORE_GROUPS_FOUND                                                syscall.Errno = 5937\n\tERROR_FILE_SHARE_RESOURCE_CONFLICT                                        syscall.Errno = 5938\n\tERROR_CLUSTER_EVICT_INVALID_REQUEST                                       syscall.Errno = 5939\n\tERROR_CLUSTER_SINGLETON_RESOURCE                                          syscall.Errno = 5940\n\tERROR_CLUSTER_GROUP_SINGLETON_RESOURCE                                    syscall.Errno = 5941\n\tERROR_CLUSTER_RESOURCE_PROVIDER_FAILED                                    syscall.Errno = 5942\n\tERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR                                syscall.Errno = 5943\n\tERROR_CLUSTER_GROUP_BUSY                                                  syscall.Errno = 5944\n\tERROR_CLUSTER_NOT_SHARED_VOLUME                                           syscall.Errno = 5945\n\tERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR                                 syscall.Errno = 5946\n\tERROR_CLUSTER_SHARED_VOLUMES_IN_USE                                       syscall.Errno = 5947\n\tERROR_CLUSTER_USE_SHARED_VOLUMES_API                                      syscall.Errno = 5948\n\tERROR_CLUSTER_BACKUP_IN_PROGRESS                                          syscall.Errno = 5949\n\tERROR_NON_CSV_PATH                                                        syscall.Errno = 5950\n\tERROR_CSV_VOLUME_NOT_LOCAL                                                syscall.Errno = 5951\n\tERROR_CLUSTER_WATCHDOG_TERMINATING                                        syscall.Errno = 5952\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES                     syscall.Errno = 5953\n\tERROR_CLUSTER_INVALID_NODE_WEIGHT                                         syscall.Errno = 5954\n\tERROR_CLUSTER_RESOURCE_VETOED_CALL                                        syscall.Errno = 5955\n\tERROR_RESMON_SYSTEM_RESOURCES_LACKING                                     syscall.Errno = 5956\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION    syscall.Errno = 5957\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE         syscall.Errno = 5958\n\tERROR_CLUSTER_GROUP_QUEUED                                                syscall.Errno = 5959\n\tERROR_CLUSTER_RESOURCE_LOCKED_STATUS                                      syscall.Errno = 5960\n\tERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED                          syscall.Errno = 5961\n\tERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS                                      syscall.Errno = 5962\n\tERROR_CLUSTER_DISK_NOT_CONNECTED                                          syscall.Errno = 5963\n\tERROR_DISK_NOT_CSV_CAPABLE                                                syscall.Errno = 5964\n\tERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE                                   syscall.Errno = 5965\n\tERROR_CLUSTER_SHARED_VOLUME_REDIRECTED                                    syscall.Errno = 5966\n\tERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED                                syscall.Errno = 5967\n\tERROR_CLUSTER_CANNOT_RETURN_PROPERTIES                                    syscall.Errno = 5968\n\tERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES  syscall.Errno = 5969\n\tERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE                             syscall.Errno = 5970\n\tERROR_CLUSTER_AFFINITY_CONFLICT                                           syscall.Errno = 5971\n\tERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE                         syscall.Errno = 5972\n\tERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS                               syscall.Errno = 5973\n\tERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED                            syscall.Errno = 5974\n\tERROR_CLUSTER_UPGRADE_RESTART_REQUIRED                                    syscall.Errno = 5975\n\tERROR_CLUSTER_UPGRADE_IN_PROGRESS                                         syscall.Errno = 5976\n\tERROR_CLUSTER_UPGRADE_INCOMPLETE                                          syscall.Errno = 5977\n\tERROR_CLUSTER_NODE_IN_GRACE_PERIOD                                        syscall.Errno = 5978\n\tERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT                                        syscall.Errno = 5979\n\tERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER                                      syscall.Errno = 5980\n\tERROR_CLUSTER_RESOURCE_NOT_MONITORED                                      syscall.Errno = 5981\n\tERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED                       syscall.Errno = 5982\n\tERROR_CLUSTER_RESOURCE_IS_REPLICATED                                      syscall.Errno = 5983\n\tERROR_CLUSTER_NODE_ISOLATED                                               syscall.Errno = 5984\n\tERROR_CLUSTER_NODE_QUARANTINED                                            syscall.Errno = 5985\n\tERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED                            syscall.Errno = 5986\n\tERROR_CLUSTER_SPACE_DEGRADED                                              syscall.Errno = 5987\n\tERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED                              syscall.Errno = 5988\n\tERROR_CLUSTER_CSV_INVALID_HANDLE                                          syscall.Errno = 5989\n\tERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR                           syscall.Errno = 5990\n\tERROR_GROUPSET_NOT_AVAILABLE                                              syscall.Errno = 5991\n\tERROR_GROUPSET_NOT_FOUND                                                  syscall.Errno = 5992\n\tERROR_GROUPSET_CANT_PROVIDE                                               syscall.Errno = 5993\n\tERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND                               syscall.Errno = 5994\n\tERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY                              syscall.Errno = 5995\n\tERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION                          syscall.Errno = 5996\n\tERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS                          syscall.Errno = 5997\n\tERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME                      syscall.Errno = 5998\n\tERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE                           syscall.Errno = 5999\n\tERROR_ENCRYPTION_FAILED                                                   syscall.Errno = 6000\n\tERROR_DECRYPTION_FAILED                                                   syscall.Errno = 6001\n\tERROR_FILE_ENCRYPTED                                                      syscall.Errno = 6002\n\tERROR_NO_RECOVERY_POLICY                                                  syscall.Errno = 6003\n\tERROR_NO_EFS                                                              syscall.Errno = 6004\n\tERROR_WRONG_EFS                                                           syscall.Errno = 6005\n\tERROR_NO_USER_KEYS                                                        syscall.Errno = 6006\n\tERROR_FILE_NOT_ENCRYPTED                                                  syscall.Errno = 6007\n\tERROR_NOT_EXPORT_FORMAT                                                   syscall.Errno = 6008\n\tERROR_FILE_READ_ONLY                                                      syscall.Errno = 6009\n\tERROR_DIR_EFS_DISALLOWED                                                  syscall.Errno = 6010\n\tERROR_EFS_SERVER_NOT_TRUSTED                                              syscall.Errno = 6011\n\tERROR_BAD_RECOVERY_POLICY                                                 syscall.Errno = 6012\n\tERROR_EFS_ALG_BLOB_TOO_BIG                                                syscall.Errno = 6013\n\tERROR_VOLUME_NOT_SUPPORT_EFS                                              syscall.Errno = 6014\n\tERROR_EFS_DISABLED                                                        syscall.Errno = 6015\n\tERROR_EFS_VERSION_NOT_SUPPORT                                             syscall.Errno = 6016\n\tERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE                               syscall.Errno = 6017\n\tERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER                                    syscall.Errno = 6018\n\tERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE                               syscall.Errno = 6019\n\tERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE                                    syscall.Errno = 6020\n\tERROR_CS_ENCRYPTION_FILE_NOT_CSE                                          syscall.Errno = 6021\n\tERROR_ENCRYPTION_POLICY_DENIES_OPERATION                                  syscall.Errno = 6022\n\tERROR_WIP_ENCRYPTION_FAILED                                               syscall.Errno = 6023\n\tERROR_NO_BROWSER_SERVERS_FOUND                                            syscall.Errno = 6118\n\tSCHED_E_SERVICE_NOT_LOCALSYSTEM                                           syscall.Errno = 6200\n\tERROR_LOG_SECTOR_INVALID                                                  syscall.Errno = 6600\n\tERROR_LOG_SECTOR_PARITY_INVALID                                           syscall.Errno = 6601\n\tERROR_LOG_SECTOR_REMAPPED                                                 syscall.Errno = 6602\n\tERROR_LOG_BLOCK_INCOMPLETE                                                syscall.Errno = 6603\n\tERROR_LOG_INVALID_RANGE                                                   syscall.Errno = 6604\n\tERROR_LOG_BLOCKS_EXHAUSTED                                                syscall.Errno = 6605\n\tERROR_LOG_READ_CONTEXT_INVALID                                            syscall.Errno = 6606\n\tERROR_LOG_RESTART_INVALID                                                 syscall.Errno = 6607\n\tERROR_LOG_BLOCK_VERSION                                                   syscall.Errno = 6608\n\tERROR_LOG_BLOCK_INVALID                                                   syscall.Errno = 6609\n\tERROR_LOG_READ_MODE_INVALID                                               syscall.Errno = 6610\n\tERROR_LOG_NO_RESTART                                                      syscall.Errno = 6611\n\tERROR_LOG_METADATA_CORRUPT                                                syscall.Errno = 6612\n\tERROR_LOG_METADATA_INVALID                                                syscall.Errno = 6613\n\tERROR_LOG_METADATA_INCONSISTENT                                           syscall.Errno = 6614\n\tERROR_LOG_RESERVATION_INVALID                                             syscall.Errno = 6615\n\tERROR_LOG_CANT_DELETE                                                     syscall.Errno = 6616\n\tERROR_LOG_CONTAINER_LIMIT_EXCEEDED                                        syscall.Errno = 6617\n\tERROR_LOG_START_OF_LOG                                                    syscall.Errno = 6618\n\tERROR_LOG_POLICY_ALREADY_INSTALLED                                        syscall.Errno = 6619\n\tERROR_LOG_POLICY_NOT_INSTALLED                                            syscall.Errno = 6620\n\tERROR_LOG_POLICY_INVALID                                                  syscall.Errno = 6621\n\tERROR_LOG_POLICY_CONFLICT                                                 syscall.Errno = 6622\n\tERROR_LOG_PINNED_ARCHIVE_TAIL                                             syscall.Errno = 6623\n\tERROR_LOG_RECORD_NONEXISTENT                                              syscall.Errno = 6624\n\tERROR_LOG_RECORDS_RESERVED_INVALID                                        syscall.Errno = 6625\n\tERROR_LOG_SPACE_RESERVED_INVALID                                          syscall.Errno = 6626\n\tERROR_LOG_TAIL_INVALID                                                    syscall.Errno = 6627\n\tERROR_LOG_FULL                                                            syscall.Errno = 6628\n\tERROR_COULD_NOT_RESIZE_LOG                                                syscall.Errno = 6629\n\tERROR_LOG_MULTIPLEXED                                                     syscall.Errno = 6630\n\tERROR_LOG_DEDICATED                                                       syscall.Errno = 6631\n\tERROR_LOG_ARCHIVE_NOT_IN_PROGRESS                                         syscall.Errno = 6632\n\tERROR_LOG_ARCHIVE_IN_PROGRESS                                             syscall.Errno = 6633\n\tERROR_LOG_EPHEMERAL                                                       syscall.Errno = 6634\n\tERROR_LOG_NOT_ENOUGH_CONTAINERS                                           syscall.Errno = 6635\n\tERROR_LOG_CLIENT_ALREADY_REGISTERED                                       syscall.Errno = 6636\n\tERROR_LOG_CLIENT_NOT_REGISTERED                                           syscall.Errno = 6637\n\tERROR_LOG_FULL_HANDLER_IN_PROGRESS                                        syscall.Errno = 6638\n\tERROR_LOG_CONTAINER_READ_FAILED                                           syscall.Errno = 6639\n\tERROR_LOG_CONTAINER_WRITE_FAILED                                          syscall.Errno = 6640\n\tERROR_LOG_CONTAINER_OPEN_FAILED                                           syscall.Errno = 6641\n\tERROR_LOG_CONTAINER_STATE_INVALID                                         syscall.Errno = 6642\n\tERROR_LOG_STATE_INVALID                                                   syscall.Errno = 6643\n\tERROR_LOG_PINNED                                                          syscall.Errno = 6644\n\tERROR_LOG_METADATA_FLUSH_FAILED                                           syscall.Errno = 6645\n\tERROR_LOG_INCONSISTENT_SECURITY                                           syscall.Errno = 6646\n\tERROR_LOG_APPENDED_FLUSH_FAILED                                           syscall.Errno = 6647\n\tERROR_LOG_PINNED_RESERVATION                                              syscall.Errno = 6648\n\tERROR_INVALID_TRANSACTION                                                 syscall.Errno = 6700\n\tERROR_TRANSACTION_NOT_ACTIVE                                              syscall.Errno = 6701\n\tERROR_TRANSACTION_REQUEST_NOT_VALID                                       syscall.Errno = 6702\n\tERROR_TRANSACTION_NOT_REQUESTED                                           syscall.Errno = 6703\n\tERROR_TRANSACTION_ALREADY_ABORTED                                         syscall.Errno = 6704\n\tERROR_TRANSACTION_ALREADY_COMMITTED                                       syscall.Errno = 6705\n\tERROR_TM_INITIALIZATION_FAILED                                            syscall.Errno = 6706\n\tERROR_RESOURCEMANAGER_READ_ONLY                                           syscall.Errno = 6707\n\tERROR_TRANSACTION_NOT_JOINED                                              syscall.Errno = 6708\n\tERROR_TRANSACTION_SUPERIOR_EXISTS                                         syscall.Errno = 6709\n\tERROR_CRM_PROTOCOL_ALREADY_EXISTS                                         syscall.Errno = 6710\n\tERROR_TRANSACTION_PROPAGATION_FAILED                                      syscall.Errno = 6711\n\tERROR_CRM_PROTOCOL_NOT_FOUND                                              syscall.Errno = 6712\n\tERROR_TRANSACTION_INVALID_MARSHALL_BUFFER                                 syscall.Errno = 6713\n\tERROR_CURRENT_TRANSACTION_NOT_VALID                                       syscall.Errno = 6714\n\tERROR_TRANSACTION_NOT_FOUND                                               syscall.Errno = 6715\n\tERROR_RESOURCEMANAGER_NOT_FOUND                                           syscall.Errno = 6716\n\tERROR_ENLISTMENT_NOT_FOUND                                                syscall.Errno = 6717\n\tERROR_TRANSACTIONMANAGER_NOT_FOUND                                        syscall.Errno = 6718\n\tERROR_TRANSACTIONMANAGER_NOT_ONLINE                                       syscall.Errno = 6719\n\tERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION                          syscall.Errno = 6720\n\tERROR_TRANSACTION_NOT_ROOT                                                syscall.Errno = 6721\n\tERROR_TRANSACTION_OBJECT_EXPIRED                                          syscall.Errno = 6722\n\tERROR_TRANSACTION_RESPONSE_NOT_ENLISTED                                   syscall.Errno = 6723\n\tERROR_TRANSACTION_RECORD_TOO_LONG                                         syscall.Errno = 6724\n\tERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED                                  syscall.Errno = 6725\n\tERROR_TRANSACTION_INTEGRITY_VIOLATED                                      syscall.Errno = 6726\n\tERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH                                syscall.Errno = 6727\n\tERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT                                    syscall.Errno = 6728\n\tERROR_TRANSACTION_MUST_WRITETHROUGH                                       syscall.Errno = 6729\n\tERROR_TRANSACTION_NO_SUPERIOR                                             syscall.Errno = 6730\n\tERROR_HEURISTIC_DAMAGE_POSSIBLE                                           syscall.Errno = 6731\n\tERROR_TRANSACTIONAL_CONFLICT                                              syscall.Errno = 6800\n\tERROR_RM_NOT_ACTIVE                                                       syscall.Errno = 6801\n\tERROR_RM_METADATA_CORRUPT                                                 syscall.Errno = 6802\n\tERROR_DIRECTORY_NOT_RM                                                    syscall.Errno = 6803\n\tERROR_TRANSACTIONS_UNSUPPORTED_REMOTE                                     syscall.Errno = 6805\n\tERROR_LOG_RESIZE_INVALID_SIZE                                             syscall.Errno = 6806\n\tERROR_OBJECT_NO_LONGER_EXISTS                                             syscall.Errno = 6807\n\tERROR_STREAM_MINIVERSION_NOT_FOUND                                        syscall.Errno = 6808\n\tERROR_STREAM_MINIVERSION_NOT_VALID                                        syscall.Errno = 6809\n\tERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION                 syscall.Errno = 6810\n\tERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT                            syscall.Errno = 6811\n\tERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS                                syscall.Errno = 6812\n\tERROR_REMOTE_FILE_VERSION_MISMATCH                                        syscall.Errno = 6814\n\tERROR_HANDLE_NO_LONGER_VALID                                              syscall.Errno = 6815\n\tERROR_NO_TXF_METADATA                                                     syscall.Errno = 6816\n\tERROR_LOG_CORRUPTION_DETECTED                                             syscall.Errno = 6817\n\tERROR_CANT_RECOVER_WITH_HANDLE_OPEN                                       syscall.Errno = 6818\n\tERROR_RM_DISCONNECTED                                                     syscall.Errno = 6819\n\tERROR_ENLISTMENT_NOT_SUPERIOR                                             syscall.Errno = 6820\n\tERROR_RECOVERY_NOT_NEEDED                                                 syscall.Errno = 6821\n\tERROR_RM_ALREADY_STARTED                                                  syscall.Errno = 6822\n\tERROR_FILE_IDENTITY_NOT_PERSISTENT                                        syscall.Errno = 6823\n\tERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY                                 syscall.Errno = 6824\n\tERROR_CANT_CROSS_RM_BOUNDARY                                              syscall.Errno = 6825\n\tERROR_TXF_DIR_NOT_EMPTY                                                   syscall.Errno = 6826\n\tERROR_INDOUBT_TRANSACTIONS_EXIST                                          syscall.Errno = 6827\n\tERROR_TM_VOLATILE                                                         syscall.Errno = 6828\n\tERROR_ROLLBACK_TIMER_EXPIRED                                              syscall.Errno = 6829\n\tERROR_TXF_ATTRIBUTE_CORRUPT                                               syscall.Errno = 6830\n\tERROR_EFS_NOT_ALLOWED_IN_TRANSACTION                                      syscall.Errno = 6831\n\tERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED                                      syscall.Errno = 6832\n\tERROR_LOG_GROWTH_FAILED                                                   syscall.Errno = 6833\n\tERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE                               syscall.Errno = 6834\n\tERROR_TXF_METADATA_ALREADY_PRESENT                                        syscall.Errno = 6835\n\tERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET                                 syscall.Errno = 6836\n\tERROR_TRANSACTION_REQUIRED_PROMOTION                                      syscall.Errno = 6837\n\tERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION                                  syscall.Errno = 6838\n\tERROR_TRANSACTIONS_NOT_FROZEN                                             syscall.Errno = 6839\n\tERROR_TRANSACTION_FREEZE_IN_PROGRESS                                      syscall.Errno = 6840\n\tERROR_NOT_SNAPSHOT_VOLUME                                                 syscall.Errno = 6841\n\tERROR_NO_SAVEPOINT_WITH_OPEN_FILES                                        syscall.Errno = 6842\n\tERROR_DATA_LOST_REPAIR                                                    syscall.Errno = 6843\n\tERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION                                   syscall.Errno = 6844\n\tERROR_TM_IDENTITY_MISMATCH                                                syscall.Errno = 6845\n\tERROR_FLOATED_SECTION                                                     syscall.Errno = 6846\n\tERROR_CANNOT_ACCEPT_TRANSACTED_WORK                                       syscall.Errno = 6847\n\tERROR_CANNOT_ABORT_TRANSACTIONS                                           syscall.Errno = 6848\n\tERROR_BAD_CLUSTERS                                                        syscall.Errno = 6849\n\tERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION                              syscall.Errno = 6850\n\tERROR_VOLUME_DIRTY                                                        syscall.Errno = 6851\n\tERROR_NO_LINK_TRACKING_IN_TRANSACTION                                     syscall.Errno = 6852\n\tERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION                              syscall.Errno = 6853\n\tERROR_EXPIRED_HANDLE                                                      syscall.Errno = 6854\n\tERROR_TRANSACTION_NOT_ENLISTED                                            syscall.Errno = 6855\n\tERROR_CTX_WINSTATION_NAME_INVALID                                         syscall.Errno = 7001\n\tERROR_CTX_INVALID_PD                                                      syscall.Errno = 7002\n\tERROR_CTX_PD_NOT_FOUND                                                    syscall.Errno = 7003\n\tERROR_CTX_WD_NOT_FOUND                                                    syscall.Errno = 7004\n\tERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY                                      syscall.Errno = 7005\n\tERROR_CTX_SERVICE_NAME_COLLISION                                          syscall.Errno = 7006\n\tERROR_CTX_CLOSE_PENDING                                                   syscall.Errno = 7007\n\tERROR_CTX_NO_OUTBUF                                                       syscall.Errno = 7008\n\tERROR_CTX_MODEM_INF_NOT_FOUND                                             syscall.Errno = 7009\n\tERROR_CTX_INVALID_MODEMNAME                                               syscall.Errno = 7010\n\tERROR_CTX_MODEM_RESPONSE_ERROR                                            syscall.Errno = 7011\n\tERROR_CTX_MODEM_RESPONSE_TIMEOUT                                          syscall.Errno = 7012\n\tERROR_CTX_MODEM_RESPONSE_NO_CARRIER                                       syscall.Errno = 7013\n\tERROR_CTX_MODEM_RESPONSE_NO_DIALTONE                                      syscall.Errno = 7014\n\tERROR_CTX_MODEM_RESPONSE_BUSY                                             syscall.Errno = 7015\n\tERROR_CTX_MODEM_RESPONSE_VOICE                                            syscall.Errno = 7016\n\tERROR_CTX_TD_ERROR                                                        syscall.Errno = 7017\n\tERROR_CTX_WINSTATION_NOT_FOUND                                            syscall.Errno = 7022\n\tERROR_CTX_WINSTATION_ALREADY_EXISTS                                       syscall.Errno = 7023\n\tERROR_CTX_WINSTATION_BUSY                                                 syscall.Errno = 7024\n\tERROR_CTX_BAD_VIDEO_MODE                                                  syscall.Errno = 7025\n\tERROR_CTX_GRAPHICS_INVALID                                                syscall.Errno = 7035\n\tERROR_CTX_LOGON_DISABLED                                                  syscall.Errno = 7037\n\tERROR_CTX_NOT_CONSOLE                                                     syscall.Errno = 7038\n\tERROR_CTX_CLIENT_QUERY_TIMEOUT                                            syscall.Errno = 7040\n\tERROR_CTX_CONSOLE_DISCONNECT                                              syscall.Errno = 7041\n\tERROR_CTX_CONSOLE_CONNECT                                                 syscall.Errno = 7042\n\tERROR_CTX_SHADOW_DENIED                                                   syscall.Errno = 7044\n\tERROR_CTX_WINSTATION_ACCESS_DENIED                                        syscall.Errno = 7045\n\tERROR_CTX_INVALID_WD                                                      syscall.Errno = 7049\n\tERROR_CTX_SHADOW_INVALID                                                  syscall.Errno = 7050\n\tERROR_CTX_SHADOW_DISABLED                                                 syscall.Errno = 7051\n\tERROR_CTX_CLIENT_LICENSE_IN_USE                                           syscall.Errno = 7052\n\tERROR_CTX_CLIENT_LICENSE_NOT_SET                                          syscall.Errno = 7053\n\tERROR_CTX_LICENSE_NOT_AVAILABLE                                           syscall.Errno = 7054\n\tERROR_CTX_LICENSE_CLIENT_INVALID                                          syscall.Errno = 7055\n\tERROR_CTX_LICENSE_EXPIRED                                                 syscall.Errno = 7056\n\tERROR_CTX_SHADOW_NOT_RUNNING                                              syscall.Errno = 7057\n\tERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE                                     syscall.Errno = 7058\n\tERROR_ACTIVATION_COUNT_EXCEEDED                                           syscall.Errno = 7059\n\tERROR_CTX_WINSTATIONS_DISABLED                                            syscall.Errno = 7060\n\tERROR_CTX_ENCRYPTION_LEVEL_REQUIRED                                       syscall.Errno = 7061\n\tERROR_CTX_SESSION_IN_USE                                                  syscall.Errno = 7062\n\tERROR_CTX_NO_FORCE_LOGOFF                                                 syscall.Errno = 7063\n\tERROR_CTX_ACCOUNT_RESTRICTION                                             syscall.Errno = 7064\n\tERROR_RDP_PROTOCOL_ERROR                                                  syscall.Errno = 7065\n\tERROR_CTX_CDM_CONNECT                                                     syscall.Errno = 7066\n\tERROR_CTX_CDM_DISCONNECT                                                  syscall.Errno = 7067\n\tERROR_CTX_SECURITY_LAYER_ERROR                                            syscall.Errno = 7068\n\tERROR_TS_INCOMPATIBLE_SESSIONS                                            syscall.Errno = 7069\n\tERROR_TS_VIDEO_SUBSYSTEM_ERROR                                            syscall.Errno = 7070\n\tFRS_ERR_INVALID_API_SEQUENCE                                              syscall.Errno = 8001\n\tFRS_ERR_STARTING_SERVICE                                                  syscall.Errno = 8002\n\tFRS_ERR_STOPPING_SERVICE                                                  syscall.Errno = 8003\n\tFRS_ERR_INTERNAL_API                                                      syscall.Errno = 8004\n\tFRS_ERR_INTERNAL                                                          syscall.Errno = 8005\n\tFRS_ERR_SERVICE_COMM                                                      syscall.Errno = 8006\n\tFRS_ERR_INSUFFICIENT_PRIV                                                 syscall.Errno = 8007\n\tFRS_ERR_AUTHENTICATION                                                    syscall.Errno = 8008\n\tFRS_ERR_PARENT_INSUFFICIENT_PRIV                                          syscall.Errno = 8009\n\tFRS_ERR_PARENT_AUTHENTICATION                                             syscall.Errno = 8010\n\tFRS_ERR_CHILD_TO_PARENT_COMM                                              syscall.Errno = 8011\n\tFRS_ERR_PARENT_TO_CHILD_COMM                                              syscall.Errno = 8012\n\tFRS_ERR_SYSVOL_POPULATE                                                   syscall.Errno = 8013\n\tFRS_ERR_SYSVOL_POPULATE_TIMEOUT                                           syscall.Errno = 8014\n\tFRS_ERR_SYSVOL_IS_BUSY                                                    syscall.Errno = 8015\n\tFRS_ERR_SYSVOL_DEMOTE                                                     syscall.Errno = 8016\n\tFRS_ERR_INVALID_SERVICE_PARAMETER                                         syscall.Errno = 8017\n\tDS_S_SUCCESS                                                                            = ERROR_SUCCESS\n\tERROR_DS_NOT_INSTALLED                                                    syscall.Errno = 8200\n\tERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY                                     syscall.Errno = 8201\n\tERROR_DS_NO_ATTRIBUTE_OR_VALUE                                            syscall.Errno = 8202\n\tERROR_DS_INVALID_ATTRIBUTE_SYNTAX                                         syscall.Errno = 8203\n\tERROR_DS_ATTRIBUTE_TYPE_UNDEFINED                                         syscall.Errno = 8204\n\tERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS                                        syscall.Errno = 8205\n\tERROR_DS_BUSY                                                             syscall.Errno = 8206\n\tERROR_DS_UNAVAILABLE                                                      syscall.Errno = 8207\n\tERROR_DS_NO_RIDS_ALLOCATED                                                syscall.Errno = 8208\n\tERROR_DS_NO_MORE_RIDS                                                     syscall.Errno = 8209\n\tERROR_DS_INCORRECT_ROLE_OWNER                                             syscall.Errno = 8210\n\tERROR_DS_RIDMGR_INIT_ERROR                                                syscall.Errno = 8211\n\tERROR_DS_OBJ_CLASS_VIOLATION                                              syscall.Errno = 8212\n\tERROR_DS_CANT_ON_NON_LEAF                                                 syscall.Errno = 8213\n\tERROR_DS_CANT_ON_RDN                                                      syscall.Errno = 8214\n\tERROR_DS_CANT_MOD_OBJ_CLASS                                               syscall.Errno = 8215\n\tERROR_DS_CROSS_DOM_MOVE_ERROR                                             syscall.Errno = 8216\n\tERROR_DS_GC_NOT_AVAILABLE                                                 syscall.Errno = 8217\n\tERROR_SHARED_POLICY                                                       syscall.Errno = 8218\n\tERROR_POLICY_OBJECT_NOT_FOUND                                             syscall.Errno = 8219\n\tERROR_POLICY_ONLY_IN_DS                                                   syscall.Errno = 8220\n\tERROR_PROMOTION_ACTIVE                                                    syscall.Errno = 8221\n\tERROR_NO_PROMOTION_ACTIVE                                                 syscall.Errno = 8222\n\tERROR_DS_OPERATIONS_ERROR                                                 syscall.Errno = 8224\n\tERROR_DS_PROTOCOL_ERROR                                                   syscall.Errno = 8225\n\tERROR_DS_TIMELIMIT_EXCEEDED                                               syscall.Errno = 8226\n\tERROR_DS_SIZELIMIT_EXCEEDED                                               syscall.Errno = 8227\n\tERROR_DS_ADMIN_LIMIT_EXCEEDED                                             syscall.Errno = 8228\n\tERROR_DS_COMPARE_FALSE                                                    syscall.Errno = 8229\n\tERROR_DS_COMPARE_TRUE                                                     syscall.Errno = 8230\n\tERROR_DS_AUTH_METHOD_NOT_SUPPORTED                                        syscall.Errno = 8231\n\tERROR_DS_STRONG_AUTH_REQUIRED                                             syscall.Errno = 8232\n\tERROR_DS_INAPPROPRIATE_AUTH                                               syscall.Errno = 8233\n\tERROR_DS_AUTH_UNKNOWN                                                     syscall.Errno = 8234\n\tERROR_DS_REFERRAL                                                         syscall.Errno = 8235\n\tERROR_DS_UNAVAILABLE_CRIT_EXTENSION                                       syscall.Errno = 8236\n\tERROR_DS_CONFIDENTIALITY_REQUIRED                                         syscall.Errno = 8237\n\tERROR_DS_INAPPROPRIATE_MATCHING                                           syscall.Errno = 8238\n\tERROR_DS_CONSTRAINT_VIOLATION                                             syscall.Errno = 8239\n\tERROR_DS_NO_SUCH_OBJECT                                                   syscall.Errno = 8240\n\tERROR_DS_ALIAS_PROBLEM                                                    syscall.Errno = 8241\n\tERROR_DS_INVALID_DN_SYNTAX                                                syscall.Errno = 8242\n\tERROR_DS_IS_LEAF                                                          syscall.Errno = 8243\n\tERROR_DS_ALIAS_DEREF_PROBLEM                                              syscall.Errno = 8244\n\tERROR_DS_UNWILLING_TO_PERFORM                                             syscall.Errno = 8245\n\tERROR_DS_LOOP_DETECT                                                      syscall.Errno = 8246\n\tERROR_DS_NAMING_VIOLATION                                                 syscall.Errno = 8247\n\tERROR_DS_OBJECT_RESULTS_TOO_LARGE                                         syscall.Errno = 8248\n\tERROR_DS_AFFECTS_MULTIPLE_DSAS                                            syscall.Errno = 8249\n\tERROR_DS_SERVER_DOWN                                                      syscall.Errno = 8250\n\tERROR_DS_LOCAL_ERROR                                                      syscall.Errno = 8251\n\tERROR_DS_ENCODING_ERROR                                                   syscall.Errno = 8252\n\tERROR_DS_DECODING_ERROR                                                   syscall.Errno = 8253\n\tERROR_DS_FILTER_UNKNOWN                                                   syscall.Errno = 8254\n\tERROR_DS_PARAM_ERROR                                                      syscall.Errno = 8255\n\tERROR_DS_NOT_SUPPORTED                                                    syscall.Errno = 8256\n\tERROR_DS_NO_RESULTS_RETURNED                                              syscall.Errno = 8257\n\tERROR_DS_CONTROL_NOT_FOUND                                                syscall.Errno = 8258\n\tERROR_DS_CLIENT_LOOP                                                      syscall.Errno = 8259\n\tERROR_DS_REFERRAL_LIMIT_EXCEEDED                                          syscall.Errno = 8260\n\tERROR_DS_SORT_CONTROL_MISSING                                             syscall.Errno = 8261\n\tERROR_DS_OFFSET_RANGE_ERROR                                               syscall.Errno = 8262\n\tERROR_DS_RIDMGR_DISABLED                                                  syscall.Errno = 8263\n\tERROR_DS_ROOT_MUST_BE_NC                                                  syscall.Errno = 8301\n\tERROR_DS_ADD_REPLICA_INHIBITED                                            syscall.Errno = 8302\n\tERROR_DS_ATT_NOT_DEF_IN_SCHEMA                                            syscall.Errno = 8303\n\tERROR_DS_MAX_OBJ_SIZE_EXCEEDED                                            syscall.Errno = 8304\n\tERROR_DS_OBJ_STRING_NAME_EXISTS                                           syscall.Errno = 8305\n\tERROR_DS_NO_RDN_DEFINED_IN_SCHEMA                                         syscall.Errno = 8306\n\tERROR_DS_RDN_DOESNT_MATCH_SCHEMA                                          syscall.Errno = 8307\n\tERROR_DS_NO_REQUESTED_ATTS_FOUND                                          syscall.Errno = 8308\n\tERROR_DS_USER_BUFFER_TO_SMALL                                             syscall.Errno = 8309\n\tERROR_DS_ATT_IS_NOT_ON_OBJ                                                syscall.Errno = 8310\n\tERROR_DS_ILLEGAL_MOD_OPERATION                                            syscall.Errno = 8311\n\tERROR_DS_OBJ_TOO_LARGE                                                    syscall.Errno = 8312\n\tERROR_DS_BAD_INSTANCE_TYPE                                                syscall.Errno = 8313\n\tERROR_DS_MASTERDSA_REQUIRED                                               syscall.Errno = 8314\n\tERROR_DS_OBJECT_CLASS_REQUIRED                                            syscall.Errno = 8315\n\tERROR_DS_MISSING_REQUIRED_ATT                                             syscall.Errno = 8316\n\tERROR_DS_ATT_NOT_DEF_FOR_CLASS                                            syscall.Errno = 8317\n\tERROR_DS_ATT_ALREADY_EXISTS                                               syscall.Errno = 8318\n\tERROR_DS_CANT_ADD_ATT_VALUES                                              syscall.Errno = 8320\n\tERROR_DS_SINGLE_VALUE_CONSTRAINT                                          syscall.Errno = 8321\n\tERROR_DS_RANGE_CONSTRAINT                                                 syscall.Errno = 8322\n\tERROR_DS_ATT_VAL_ALREADY_EXISTS                                           syscall.Errno = 8323\n\tERROR_DS_CANT_REM_MISSING_ATT                                             syscall.Errno = 8324\n\tERROR_DS_CANT_REM_MISSING_ATT_VAL                                         syscall.Errno = 8325\n\tERROR_DS_ROOT_CANT_BE_SUBREF                                              syscall.Errno = 8326\n\tERROR_DS_NO_CHAINING                                                      syscall.Errno = 8327\n\tERROR_DS_NO_CHAINED_EVAL                                                  syscall.Errno = 8328\n\tERROR_DS_NO_PARENT_OBJECT                                                 syscall.Errno = 8329\n\tERROR_DS_PARENT_IS_AN_ALIAS                                               syscall.Errno = 8330\n\tERROR_DS_CANT_MIX_MASTER_AND_REPS                                         syscall.Errno = 8331\n\tERROR_DS_CHILDREN_EXIST                                                   syscall.Errno = 8332\n\tERROR_DS_OBJ_NOT_FOUND                                                    syscall.Errno = 8333\n\tERROR_DS_ALIASED_OBJ_MISSING                                              syscall.Errno = 8334\n\tERROR_DS_BAD_NAME_SYNTAX                                                  syscall.Errno = 8335\n\tERROR_DS_ALIAS_POINTS_TO_ALIAS                                            syscall.Errno = 8336\n\tERROR_DS_CANT_DEREF_ALIAS                                                 syscall.Errno = 8337\n\tERROR_DS_OUT_OF_SCOPE                                                     syscall.Errno = 8338\n\tERROR_DS_OBJECT_BEING_REMOVED                                             syscall.Errno = 8339\n\tERROR_DS_CANT_DELETE_DSA_OBJ                                              syscall.Errno = 8340\n\tERROR_DS_GENERIC_ERROR                                                    syscall.Errno = 8341\n\tERROR_DS_DSA_MUST_BE_INT_MASTER                                           syscall.Errno = 8342\n\tERROR_DS_CLASS_NOT_DSA                                                    syscall.Errno = 8343\n\tERROR_DS_INSUFF_ACCESS_RIGHTS                                             syscall.Errno = 8344\n\tERROR_DS_ILLEGAL_SUPERIOR                                                 syscall.Errno = 8345\n\tERROR_DS_ATTRIBUTE_OWNED_BY_SAM                                           syscall.Errno = 8346\n\tERROR_DS_NAME_TOO_MANY_PARTS                                              syscall.Errno = 8347\n\tERROR_DS_NAME_TOO_LONG                                                    syscall.Errno = 8348\n\tERROR_DS_NAME_VALUE_TOO_LONG                                              syscall.Errno = 8349\n\tERROR_DS_NAME_UNPARSEABLE                                                 syscall.Errno = 8350\n\tERROR_DS_NAME_TYPE_UNKNOWN                                                syscall.Errno = 8351\n\tERROR_DS_NOT_AN_OBJECT                                                    syscall.Errno = 8352\n\tERROR_DS_SEC_DESC_TOO_SHORT                                               syscall.Errno = 8353\n\tERROR_DS_SEC_DESC_INVALID                                                 syscall.Errno = 8354\n\tERROR_DS_NO_DELETED_NAME                                                  syscall.Errno = 8355\n\tERROR_DS_SUBREF_MUST_HAVE_PARENT                                          syscall.Errno = 8356\n\tERROR_DS_NCNAME_MUST_BE_NC                                                syscall.Errno = 8357\n\tERROR_DS_CANT_ADD_SYSTEM_ONLY                                             syscall.Errno = 8358\n\tERROR_DS_CLASS_MUST_BE_CONCRETE                                           syscall.Errno = 8359\n\tERROR_DS_INVALID_DMD                                                      syscall.Errno = 8360\n\tERROR_DS_OBJ_GUID_EXISTS                                                  syscall.Errno = 8361\n\tERROR_DS_NOT_ON_BACKLINK                                                  syscall.Errno = 8362\n\tERROR_DS_NO_CROSSREF_FOR_NC                                               syscall.Errno = 8363\n\tERROR_DS_SHUTTING_DOWN                                                    syscall.Errno = 8364\n\tERROR_DS_UNKNOWN_OPERATION                                                syscall.Errno = 8365\n\tERROR_DS_INVALID_ROLE_OWNER                                               syscall.Errno = 8366\n\tERROR_DS_COULDNT_CONTACT_FSMO                                             syscall.Errno = 8367\n\tERROR_DS_CROSS_NC_DN_RENAME                                               syscall.Errno = 8368\n\tERROR_DS_CANT_MOD_SYSTEM_ONLY                                             syscall.Errno = 8369\n\tERROR_DS_REPLICATOR_ONLY                                                  syscall.Errno = 8370\n\tERROR_DS_OBJ_CLASS_NOT_DEFINED                                            syscall.Errno = 8371\n\tERROR_DS_OBJ_CLASS_NOT_SUBCLASS                                           syscall.Errno = 8372\n\tERROR_DS_NAME_REFERENCE_INVALID                                           syscall.Errno = 8373\n\tERROR_DS_CROSS_REF_EXISTS                                                 syscall.Errno = 8374\n\tERROR_DS_CANT_DEL_MASTER_CROSSREF                                         syscall.Errno = 8375\n\tERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD                                       syscall.Errno = 8376\n\tERROR_DS_NOTIFY_FILTER_TOO_COMPLEX                                        syscall.Errno = 8377\n\tERROR_DS_DUP_RDN                                                          syscall.Errno = 8378\n\tERROR_DS_DUP_OID                                                          syscall.Errno = 8379\n\tERROR_DS_DUP_MAPI_ID                                                      syscall.Errno = 8380\n\tERROR_DS_DUP_SCHEMA_ID_GUID                                               syscall.Errno = 8381\n\tERROR_DS_DUP_LDAP_DISPLAY_NAME                                            syscall.Errno = 8382\n\tERROR_DS_SEMANTIC_ATT_TEST                                                syscall.Errno = 8383\n\tERROR_DS_SYNTAX_MISMATCH                                                  syscall.Errno = 8384\n\tERROR_DS_EXISTS_IN_MUST_HAVE                                              syscall.Errno = 8385\n\tERROR_DS_EXISTS_IN_MAY_HAVE                                               syscall.Errno = 8386\n\tERROR_DS_NONEXISTENT_MAY_HAVE                                             syscall.Errno = 8387\n\tERROR_DS_NONEXISTENT_MUST_HAVE                                            syscall.Errno = 8388\n\tERROR_DS_AUX_CLS_TEST_FAIL                                                syscall.Errno = 8389\n\tERROR_DS_NONEXISTENT_POSS_SUP                                             syscall.Errno = 8390\n\tERROR_DS_SUB_CLS_TEST_FAIL                                                syscall.Errno = 8391\n\tERROR_DS_BAD_RDN_ATT_ID_SYNTAX                                            syscall.Errno = 8392\n\tERROR_DS_EXISTS_IN_AUX_CLS                                                syscall.Errno = 8393\n\tERROR_DS_EXISTS_IN_SUB_CLS                                                syscall.Errno = 8394\n\tERROR_DS_EXISTS_IN_POSS_SUP                                               syscall.Errno = 8395\n\tERROR_DS_RECALCSCHEMA_FAILED                                              syscall.Errno = 8396\n\tERROR_DS_TREE_DELETE_NOT_FINISHED                                         syscall.Errno = 8397\n\tERROR_DS_CANT_DELETE                                                      syscall.Errno = 8398\n\tERROR_DS_ATT_SCHEMA_REQ_ID                                                syscall.Errno = 8399\n\tERROR_DS_BAD_ATT_SCHEMA_SYNTAX                                            syscall.Errno = 8400\n\tERROR_DS_CANT_CACHE_ATT                                                   syscall.Errno = 8401\n\tERROR_DS_CANT_CACHE_CLASS                                                 syscall.Errno = 8402\n\tERROR_DS_CANT_REMOVE_ATT_CACHE                                            syscall.Errno = 8403\n\tERROR_DS_CANT_REMOVE_CLASS_CACHE                                          syscall.Errno = 8404\n\tERROR_DS_CANT_RETRIEVE_DN                                                 syscall.Errno = 8405\n\tERROR_DS_MISSING_SUPREF                                                   syscall.Errno = 8406\n\tERROR_DS_CANT_RETRIEVE_INSTANCE                                           syscall.Errno = 8407\n\tERROR_DS_CODE_INCONSISTENCY                                               syscall.Errno = 8408\n\tERROR_DS_DATABASE_ERROR                                                   syscall.Errno = 8409\n\tERROR_DS_GOVERNSID_MISSING                                                syscall.Errno = 8410\n\tERROR_DS_MISSING_EXPECTED_ATT                                             syscall.Errno = 8411\n\tERROR_DS_NCNAME_MISSING_CR_REF                                            syscall.Errno = 8412\n\tERROR_DS_SECURITY_CHECKING_ERROR                                          syscall.Errno = 8413\n\tERROR_DS_SCHEMA_NOT_LOADED                                                syscall.Errno = 8414\n\tERROR_DS_SCHEMA_ALLOC_FAILED                                              syscall.Errno = 8415\n\tERROR_DS_ATT_SCHEMA_REQ_SYNTAX                                            syscall.Errno = 8416\n\tERROR_DS_GCVERIFY_ERROR                                                   syscall.Errno = 8417\n\tERROR_DS_DRA_SCHEMA_MISMATCH                                              syscall.Errno = 8418\n\tERROR_DS_CANT_FIND_DSA_OBJ                                                syscall.Errno = 8419\n\tERROR_DS_CANT_FIND_EXPECTED_NC                                            syscall.Errno = 8420\n\tERROR_DS_CANT_FIND_NC_IN_CACHE                                            syscall.Errno = 8421\n\tERROR_DS_CANT_RETRIEVE_CHILD                                              syscall.Errno = 8422\n\tERROR_DS_SECURITY_ILLEGAL_MODIFY                                          syscall.Errno = 8423\n\tERROR_DS_CANT_REPLACE_HIDDEN_REC                                          syscall.Errno = 8424\n\tERROR_DS_BAD_HIERARCHY_FILE                                               syscall.Errno = 8425\n\tERROR_DS_BUILD_HIERARCHY_TABLE_FAILED                                     syscall.Errno = 8426\n\tERROR_DS_CONFIG_PARAM_MISSING                                             syscall.Errno = 8427\n\tERROR_DS_COUNTING_AB_INDICES_FAILED                                       syscall.Errno = 8428\n\tERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED                                    syscall.Errno = 8429\n\tERROR_DS_INTERNAL_FAILURE                                                 syscall.Errno = 8430\n\tERROR_DS_UNKNOWN_ERROR                                                    syscall.Errno = 8431\n\tERROR_DS_ROOT_REQUIRES_CLASS_TOP                                          syscall.Errno = 8432\n\tERROR_DS_REFUSING_FSMO_ROLES                                              syscall.Errno = 8433\n\tERROR_DS_MISSING_FSMO_SETTINGS                                            syscall.Errno = 8434\n\tERROR_DS_UNABLE_TO_SURRENDER_ROLES                                        syscall.Errno = 8435\n\tERROR_DS_DRA_GENERIC                                                      syscall.Errno = 8436\n\tERROR_DS_DRA_INVALID_PARAMETER                                            syscall.Errno = 8437\n\tERROR_DS_DRA_BUSY                                                         syscall.Errno = 8438\n\tERROR_DS_DRA_BAD_DN                                                       syscall.Errno = 8439\n\tERROR_DS_DRA_BAD_NC                                                       syscall.Errno = 8440\n\tERROR_DS_DRA_DN_EXISTS                                                    syscall.Errno = 8441\n\tERROR_DS_DRA_INTERNAL_ERROR                                               syscall.Errno = 8442\n\tERROR_DS_DRA_INCONSISTENT_DIT                                             syscall.Errno = 8443\n\tERROR_DS_DRA_CONNECTION_FAILED                                            syscall.Errno = 8444\n\tERROR_DS_DRA_BAD_INSTANCE_TYPE                                            syscall.Errno = 8445\n\tERROR_DS_DRA_OUT_OF_MEM                                                   syscall.Errno = 8446\n\tERROR_DS_DRA_MAIL_PROBLEM                                                 syscall.Errno = 8447\n\tERROR_DS_DRA_REF_ALREADY_EXISTS                                           syscall.Errno = 8448\n\tERROR_DS_DRA_REF_NOT_FOUND                                                syscall.Errno = 8449\n\tERROR_DS_DRA_OBJ_IS_REP_SOURCE                                            syscall.Errno = 8450\n\tERROR_DS_DRA_DB_ERROR                                                     syscall.Errno = 8451\n\tERROR_DS_DRA_NO_REPLICA                                                   syscall.Errno = 8452\n\tERROR_DS_DRA_ACCESS_DENIED                                                syscall.Errno = 8453\n\tERROR_DS_DRA_NOT_SUPPORTED                                                syscall.Errno = 8454\n\tERROR_DS_DRA_RPC_CANCELLED                                                syscall.Errno = 8455\n\tERROR_DS_DRA_SOURCE_DISABLED                                              syscall.Errno = 8456\n\tERROR_DS_DRA_SINK_DISABLED                                                syscall.Errno = 8457\n\tERROR_DS_DRA_NAME_COLLISION                                               syscall.Errno = 8458\n\tERROR_DS_DRA_SOURCE_REINSTALLED                                           syscall.Errno = 8459\n\tERROR_DS_DRA_MISSING_PARENT                                               syscall.Errno = 8460\n\tERROR_DS_DRA_PREEMPTED                                                    syscall.Errno = 8461\n\tERROR_DS_DRA_ABANDON_SYNC                                                 syscall.Errno = 8462\n\tERROR_DS_DRA_SHUTDOWN                                                     syscall.Errno = 8463\n\tERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET                                     syscall.Errno = 8464\n\tERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA                                    syscall.Errno = 8465\n\tERROR_DS_DRA_EXTN_CONNECTION_FAILED                                       syscall.Errno = 8466\n\tERROR_DS_INSTALL_SCHEMA_MISMATCH                                          syscall.Errno = 8467\n\tERROR_DS_DUP_LINK_ID                                                      syscall.Errno = 8468\n\tERROR_DS_NAME_ERROR_RESOLVING                                             syscall.Errno = 8469\n\tERROR_DS_NAME_ERROR_NOT_FOUND                                             syscall.Errno = 8470\n\tERROR_DS_NAME_ERROR_NOT_UNIQUE                                            syscall.Errno = 8471\n\tERROR_DS_NAME_ERROR_NO_MAPPING                                            syscall.Errno = 8472\n\tERROR_DS_NAME_ERROR_DOMAIN_ONLY                                           syscall.Errno = 8473\n\tERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING                                syscall.Errno = 8474\n\tERROR_DS_CONSTRUCTED_ATT_MOD                                              syscall.Errno = 8475\n\tERROR_DS_WRONG_OM_OBJ_CLASS                                               syscall.Errno = 8476\n\tERROR_DS_DRA_REPL_PENDING                                                 syscall.Errno = 8477\n\tERROR_DS_DS_REQUIRED                                                      syscall.Errno = 8478\n\tERROR_DS_INVALID_LDAP_DISPLAY_NAME                                        syscall.Errno = 8479\n\tERROR_DS_NON_BASE_SEARCH                                                  syscall.Errno = 8480\n\tERROR_DS_CANT_RETRIEVE_ATTS                                               syscall.Errno = 8481\n\tERROR_DS_BACKLINK_WITHOUT_LINK                                            syscall.Errno = 8482\n\tERROR_DS_EPOCH_MISMATCH                                                   syscall.Errno = 8483\n\tERROR_DS_SRC_NAME_MISMATCH                                                syscall.Errno = 8484\n\tERROR_DS_SRC_AND_DST_NC_IDENTICAL                                         syscall.Errno = 8485\n\tERROR_DS_DST_NC_MISMATCH                                                  syscall.Errno = 8486\n\tERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC                                       syscall.Errno = 8487\n\tERROR_DS_SRC_GUID_MISMATCH                                                syscall.Errno = 8488\n\tERROR_DS_CANT_MOVE_DELETED_OBJECT                                         syscall.Errno = 8489\n\tERROR_DS_PDC_OPERATION_IN_PROGRESS                                        syscall.Errno = 8490\n\tERROR_DS_CROSS_DOMAIN_CLEANUP_REQD                                        syscall.Errno = 8491\n\tERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION                                      syscall.Errno = 8492\n\tERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS                                  syscall.Errno = 8493\n\tERROR_DS_NC_MUST_HAVE_NC_PARENT                                           syscall.Errno = 8494\n\tERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE                                        syscall.Errno = 8495\n\tERROR_DS_DST_DOMAIN_NOT_NATIVE                                            syscall.Errno = 8496\n\tERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER                                 syscall.Errno = 8497\n\tERROR_DS_CANT_MOVE_ACCOUNT_GROUP                                          syscall.Errno = 8498\n\tERROR_DS_CANT_MOVE_RESOURCE_GROUP                                         syscall.Errno = 8499\n\tERROR_DS_INVALID_SEARCH_FLAG                                              syscall.Errno = 8500\n\tERROR_DS_NO_TREE_DELETE_ABOVE_NC                                          syscall.Errno = 8501\n\tERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE                                     syscall.Errno = 8502\n\tERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE                         syscall.Errno = 8503\n\tERROR_DS_SAM_INIT_FAILURE                                                 syscall.Errno = 8504\n\tERROR_DS_SENSITIVE_GROUP_VIOLATION                                        syscall.Errno = 8505\n\tERROR_DS_CANT_MOD_PRIMARYGROUPID                                          syscall.Errno = 8506\n\tERROR_DS_ILLEGAL_BASE_SCHEMA_MOD                                          syscall.Errno = 8507\n\tERROR_DS_NONSAFE_SCHEMA_CHANGE                                            syscall.Errno = 8508\n\tERROR_DS_SCHEMA_UPDATE_DISALLOWED                                         syscall.Errno = 8509\n\tERROR_DS_CANT_CREATE_UNDER_SCHEMA                                         syscall.Errno = 8510\n\tERROR_DS_INSTALL_NO_SRC_SCH_VERSION                                       syscall.Errno = 8511\n\tERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE                                syscall.Errno = 8512\n\tERROR_DS_INVALID_GROUP_TYPE                                               syscall.Errno = 8513\n\tERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN                               syscall.Errno = 8514\n\tERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN                                syscall.Errno = 8515\n\tERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER                                    syscall.Errno = 8516\n\tERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER                                syscall.Errno = 8517\n\tERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER                                 syscall.Errno = 8518\n\tERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER                              syscall.Errno = 8519\n\tERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER                         syscall.Errno = 8520\n\tERROR_DS_HAVE_PRIMARY_MEMBERS                                             syscall.Errno = 8521\n\tERROR_DS_STRING_SD_CONVERSION_FAILED                                      syscall.Errno = 8522\n\tERROR_DS_NAMING_MASTER_GC                                                 syscall.Errno = 8523\n\tERROR_DS_DNS_LOOKUP_FAILURE                                               syscall.Errno = 8524\n\tERROR_DS_COULDNT_UPDATE_SPNS                                              syscall.Errno = 8525\n\tERROR_DS_CANT_RETRIEVE_SD                                                 syscall.Errno = 8526\n\tERROR_DS_KEY_NOT_UNIQUE                                                   syscall.Errno = 8527\n\tERROR_DS_WRONG_LINKED_ATT_SYNTAX                                          syscall.Errno = 8528\n\tERROR_DS_SAM_NEED_BOOTKEY_PASSWORD                                        syscall.Errno = 8529\n\tERROR_DS_SAM_NEED_BOOTKEY_FLOPPY                                          syscall.Errno = 8530\n\tERROR_DS_CANT_START                                                       syscall.Errno = 8531\n\tERROR_DS_INIT_FAILURE                                                     syscall.Errno = 8532\n\tERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION                                     syscall.Errno = 8533\n\tERROR_DS_SOURCE_DOMAIN_IN_FOREST                                          syscall.Errno = 8534\n\tERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST                                 syscall.Errno = 8535\n\tERROR_DS_DESTINATION_AUDITING_NOT_ENABLED                                 syscall.Errno = 8536\n\tERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN                                      syscall.Errno = 8537\n\tERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER                                        syscall.Errno = 8538\n\tERROR_DS_SRC_SID_EXISTS_IN_FOREST                                         syscall.Errno = 8539\n\tERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH                                syscall.Errno = 8540\n\tERROR_SAM_INIT_FAILURE                                                    syscall.Errno = 8541\n\tERROR_DS_DRA_SCHEMA_INFO_SHIP                                             syscall.Errno = 8542\n\tERROR_DS_DRA_SCHEMA_CONFLICT                                              syscall.Errno = 8543\n\tERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT                                      syscall.Errno = 8544\n\tERROR_DS_DRA_OBJ_NC_MISMATCH                                              syscall.Errno = 8545\n\tERROR_DS_NC_STILL_HAS_DSAS                                                syscall.Errno = 8546\n\tERROR_DS_GC_REQUIRED                                                      syscall.Errno = 8547\n\tERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY                                       syscall.Errno = 8548\n\tERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS                                       syscall.Errno = 8549\n\tERROR_DS_CANT_ADD_TO_GC                                                   syscall.Errno = 8550\n\tERROR_DS_NO_CHECKPOINT_WITH_PDC                                           syscall.Errno = 8551\n\tERROR_DS_SOURCE_AUDITING_NOT_ENABLED                                      syscall.Errno = 8552\n\tERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC                                      syscall.Errno = 8553\n\tERROR_DS_INVALID_NAME_FOR_SPN                                             syscall.Errno = 8554\n\tERROR_DS_FILTER_USES_CONTRUCTED_ATTRS                                     syscall.Errno = 8555\n\tERROR_DS_UNICODEPWD_NOT_IN_QUOTES                                         syscall.Errno = 8556\n\tERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED                                   syscall.Errno = 8557\n\tERROR_DS_MUST_BE_RUN_ON_DST_DC                                            syscall.Errno = 8558\n\tERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER                                    syscall.Errno = 8559\n\tERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ                                    syscall.Errno = 8560\n\tERROR_DS_INIT_FAILURE_CONSOLE                                             syscall.Errno = 8561\n\tERROR_DS_SAM_INIT_FAILURE_CONSOLE                                         syscall.Errno = 8562\n\tERROR_DS_FOREST_VERSION_TOO_HIGH                                          syscall.Errno = 8563\n\tERROR_DS_DOMAIN_VERSION_TOO_HIGH                                          syscall.Errno = 8564\n\tERROR_DS_FOREST_VERSION_TOO_LOW                                           syscall.Errno = 8565\n\tERROR_DS_DOMAIN_VERSION_TOO_LOW                                           syscall.Errno = 8566\n\tERROR_DS_INCOMPATIBLE_VERSION                                             syscall.Errno = 8567\n\tERROR_DS_LOW_DSA_VERSION                                                  syscall.Errno = 8568\n\tERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN                               syscall.Errno = 8569\n\tERROR_DS_NOT_SUPPORTED_SORT_ORDER                                         syscall.Errno = 8570\n\tERROR_DS_NAME_NOT_UNIQUE                                                  syscall.Errno = 8571\n\tERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4                                   syscall.Errno = 8572\n\tERROR_DS_OUT_OF_VERSION_STORE                                             syscall.Errno = 8573\n\tERROR_DS_INCOMPATIBLE_CONTROLS_USED                                       syscall.Errno = 8574\n\tERROR_DS_NO_REF_DOMAIN                                                    syscall.Errno = 8575\n\tERROR_DS_RESERVED_LINK_ID                                                 syscall.Errno = 8576\n\tERROR_DS_LINK_ID_NOT_AVAILABLE                                            syscall.Errno = 8577\n\tERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER                                    syscall.Errno = 8578\n\tERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE                             syscall.Errno = 8579\n\tERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC                                      syscall.Errno = 8580\n\tERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG                                      syscall.Errno = 8581\n\tERROR_DS_MODIFYDN_WRONG_GRANDPARENT                                       syscall.Errno = 8582\n\tERROR_DS_NAME_ERROR_TRUST_REFERRAL                                        syscall.Errno = 8583\n\tERROR_NOT_SUPPORTED_ON_STANDARD_SERVER                                    syscall.Errno = 8584\n\tERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD                                    syscall.Errno = 8585\n\tERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2                                     syscall.Errno = 8586\n\tERROR_DS_THREAD_LIMIT_EXCEEDED                                            syscall.Errno = 8587\n\tERROR_DS_NOT_CLOSEST                                                      syscall.Errno = 8588\n\tERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF                               syscall.Errno = 8589\n\tERROR_DS_SINGLE_USER_MODE_FAILED                                          syscall.Errno = 8590\n\tERROR_DS_NTDSCRIPT_SYNTAX_ERROR                                           syscall.Errno = 8591\n\tERROR_DS_NTDSCRIPT_PROCESS_ERROR                                          syscall.Errno = 8592\n\tERROR_DS_DIFFERENT_REPL_EPOCHS                                            syscall.Errno = 8593\n\tERROR_DS_DRS_EXTENSIONS_CHANGED                                           syscall.Errno = 8594\n\tERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR                    syscall.Errno = 8595\n\tERROR_DS_NO_MSDS_INTID                                                    syscall.Errno = 8596\n\tERROR_DS_DUP_MSDS_INTID                                                   syscall.Errno = 8597\n\tERROR_DS_EXISTS_IN_RDNATTID                                               syscall.Errno = 8598\n\tERROR_DS_AUTHORIZATION_FAILED                                             syscall.Errno = 8599\n\tERROR_DS_INVALID_SCRIPT                                                   syscall.Errno = 8600\n\tERROR_DS_REMOTE_CROSSREF_OP_FAILED                                        syscall.Errno = 8601\n\tERROR_DS_CROSS_REF_BUSY                                                   syscall.Errno = 8602\n\tERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN                               syscall.Errno = 8603\n\tERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC                                    syscall.Errno = 8604\n\tERROR_DS_DUPLICATE_ID_FOUND                                               syscall.Errno = 8605\n\tERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT                               syscall.Errno = 8606\n\tERROR_DS_GROUP_CONVERSION_ERROR                                           syscall.Errno = 8607\n\tERROR_DS_CANT_MOVE_APP_BASIC_GROUP                                        syscall.Errno = 8608\n\tERROR_DS_CANT_MOVE_APP_QUERY_GROUP                                        syscall.Errno = 8609\n\tERROR_DS_ROLE_NOT_VERIFIED                                                syscall.Errno = 8610\n\tERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL                                  syscall.Errno = 8611\n\tERROR_DS_DOMAIN_RENAME_IN_PROGRESS                                        syscall.Errno = 8612\n\tERROR_DS_EXISTING_AD_CHILD_NC                                             syscall.Errno = 8613\n\tERROR_DS_REPL_LIFETIME_EXCEEDED                                           syscall.Errno = 8614\n\tERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER                                   syscall.Errno = 8615\n\tERROR_DS_LDAP_SEND_QUEUE_FULL                                             syscall.Errno = 8616\n\tERROR_DS_DRA_OUT_SCHEDULE_WINDOW                                          syscall.Errno = 8617\n\tERROR_DS_POLICY_NOT_KNOWN                                                 syscall.Errno = 8618\n\tERROR_NO_SITE_SETTINGS_OBJECT                                             syscall.Errno = 8619\n\tERROR_NO_SECRETS                                                          syscall.Errno = 8620\n\tERROR_NO_WRITABLE_DC_FOUND                                                syscall.Errno = 8621\n\tERROR_DS_NO_SERVER_OBJECT                                                 syscall.Errno = 8622\n\tERROR_DS_NO_NTDSA_OBJECT                                                  syscall.Errno = 8623\n\tERROR_DS_NON_ASQ_SEARCH                                                   syscall.Errno = 8624\n\tERROR_DS_AUDIT_FAILURE                                                    syscall.Errno = 8625\n\tERROR_DS_INVALID_SEARCH_FLAG_SUBTREE                                      syscall.Errno = 8626\n\tERROR_DS_INVALID_SEARCH_FLAG_TUPLE                                        syscall.Errno = 8627\n\tERROR_DS_HIERARCHY_TABLE_TOO_DEEP                                         syscall.Errno = 8628\n\tERROR_DS_DRA_CORRUPT_UTD_VECTOR                                           syscall.Errno = 8629\n\tERROR_DS_DRA_SECRETS_DENIED                                               syscall.Errno = 8630\n\tERROR_DS_RESERVED_MAPI_ID                                                 syscall.Errno = 8631\n\tERROR_DS_MAPI_ID_NOT_AVAILABLE                                            syscall.Errno = 8632\n\tERROR_DS_DRA_MISSING_KRBTGT_SECRET                                        syscall.Errno = 8633\n\tERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST                                     syscall.Errno = 8634\n\tERROR_DS_FLAT_NAME_EXISTS_IN_FOREST                                       syscall.Errno = 8635\n\tERROR_INVALID_USER_PRINCIPAL_NAME                                         syscall.Errno = 8636\n\tERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS                               syscall.Errno = 8637\n\tERROR_DS_OID_NOT_FOUND                                                    syscall.Errno = 8638\n\tERROR_DS_DRA_RECYCLED_TARGET                                              syscall.Errno = 8639\n\tERROR_DS_DISALLOWED_NC_REDIRECT                                           syscall.Errno = 8640\n\tERROR_DS_HIGH_ADLDS_FFL                                                   syscall.Errno = 8641\n\tERROR_DS_HIGH_DSA_VERSION                                                 syscall.Errno = 8642\n\tERROR_DS_LOW_ADLDS_FFL                                                    syscall.Errno = 8643\n\tERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION                                syscall.Errno = 8644\n\tERROR_DS_UNDELETE_SAM_VALIDATION_FAILED                                   syscall.Errno = 8645\n\tERROR_INCORRECT_ACCOUNT_TYPE                                              syscall.Errno = 8646\n\tERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST                                   syscall.Errno = 8647\n\tERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST                                   syscall.Errno = 8648\n\tERROR_DS_MISSING_FOREST_TRUST                                             syscall.Errno = 8649\n\tERROR_DS_VALUE_KEY_NOT_UNIQUE                                             syscall.Errno = 8650\n\tDNS_ERROR_RESPONSE_CODES_BASE                                             syscall.Errno = 9000\n\tDNS_ERROR_RCODE_NO_ERROR                                                                = ERROR_SUCCESS\n\tDNS_ERROR_MASK                                                            syscall.Errno = 0x00002328\n\tDNS_ERROR_RCODE_FORMAT_ERROR                                              syscall.Errno = 9001\n\tDNS_ERROR_RCODE_SERVER_FAILURE                                            syscall.Errno = 9002\n\tDNS_ERROR_RCODE_NAME_ERROR                                                syscall.Errno = 9003\n\tDNS_ERROR_RCODE_NOT_IMPLEMENTED                                           syscall.Errno = 9004\n\tDNS_ERROR_RCODE_REFUSED                                                   syscall.Errno = 9005\n\tDNS_ERROR_RCODE_YXDOMAIN                                                  syscall.Errno = 9006\n\tDNS_ERROR_RCODE_YXRRSET                                                   syscall.Errno = 9007\n\tDNS_ERROR_RCODE_NXRRSET                                                   syscall.Errno = 9008\n\tDNS_ERROR_RCODE_NOTAUTH                                                   syscall.Errno = 9009\n\tDNS_ERROR_RCODE_NOTZONE                                                   syscall.Errno = 9010\n\tDNS_ERROR_RCODE_BADSIG                                                    syscall.Errno = 9016\n\tDNS_ERROR_RCODE_BADKEY                                                    syscall.Errno = 9017\n\tDNS_ERROR_RCODE_BADTIME                                                   syscall.Errno = 9018\n\tDNS_ERROR_RCODE_LAST                                                                    = DNS_ERROR_RCODE_BADTIME\n\tDNS_ERROR_DNSSEC_BASE                                                     syscall.Errno = 9100\n\tDNS_ERROR_KEYMASTER_REQUIRED                                              syscall.Errno = 9101\n\tDNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE                                      syscall.Errno = 9102\n\tDNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1                                syscall.Errno = 9103\n\tDNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS                              syscall.Errno = 9104\n\tDNS_ERROR_UNSUPPORTED_ALGORITHM                                           syscall.Errno = 9105\n\tDNS_ERROR_INVALID_KEY_SIZE                                                syscall.Errno = 9106\n\tDNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE                                      syscall.Errno = 9107\n\tDNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION                                 syscall.Errno = 9108\n\tDNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR                                syscall.Errno = 9109\n\tDNS_ERROR_UNEXPECTED_CNG_ERROR                                            syscall.Errno = 9110\n\tDNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION                               syscall.Errno = 9111\n\tDNS_ERROR_KSP_NOT_ACCESSIBLE                                              syscall.Errno = 9112\n\tDNS_ERROR_TOO_MANY_SKDS                                                   syscall.Errno = 9113\n\tDNS_ERROR_INVALID_ROLLOVER_PERIOD                                         syscall.Errno = 9114\n\tDNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET                                 syscall.Errno = 9115\n\tDNS_ERROR_ROLLOVER_IN_PROGRESS                                            syscall.Errno = 9116\n\tDNS_ERROR_STANDBY_KEY_NOT_PRESENT                                         syscall.Errno = 9117\n\tDNS_ERROR_NOT_ALLOWED_ON_ZSK                                              syscall.Errno = 9118\n\tDNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD                                       syscall.Errno = 9119\n\tDNS_ERROR_ROLLOVER_ALREADY_QUEUED                                         syscall.Errno = 9120\n\tDNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE                                    syscall.Errno = 9121\n\tDNS_ERROR_BAD_KEYMASTER                                                   syscall.Errno = 9122\n\tDNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD                               syscall.Errno = 9123\n\tDNS_ERROR_INVALID_NSEC3_ITERATION_COUNT                                   syscall.Errno = 9124\n\tDNS_ERROR_DNSSEC_IS_DISABLED                                              syscall.Errno = 9125\n\tDNS_ERROR_INVALID_XML                                                     syscall.Errno = 9126\n\tDNS_ERROR_NO_VALID_TRUST_ANCHORS                                          syscall.Errno = 9127\n\tDNS_ERROR_ROLLOVER_NOT_POKEABLE                                           syscall.Errno = 9128\n\tDNS_ERROR_NSEC3_NAME_COLLISION                                            syscall.Errno = 9129\n\tDNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1                           syscall.Errno = 9130\n\tDNS_ERROR_PACKET_FMT_BASE                                                 syscall.Errno = 9500\n\tDNS_INFO_NO_RECORDS                                                       syscall.Errno = 9501\n\tDNS_ERROR_BAD_PACKET                                                      syscall.Errno = 9502\n\tDNS_ERROR_NO_PACKET                                                       syscall.Errno = 9503\n\tDNS_ERROR_RCODE                                                           syscall.Errno = 9504\n\tDNS_ERROR_UNSECURE_PACKET                                                 syscall.Errno = 9505\n\tDNS_STATUS_PACKET_UNSECURE                                                              = DNS_ERROR_UNSECURE_PACKET\n\tDNS_REQUEST_PENDING                                                       syscall.Errno = 9506\n\tDNS_ERROR_NO_MEMORY                                                                     = ERROR_OUTOFMEMORY\n\tDNS_ERROR_INVALID_NAME                                                                  = ERROR_INVALID_NAME\n\tDNS_ERROR_INVALID_DATA                                                                  = ERROR_INVALID_DATA\n\tDNS_ERROR_GENERAL_API_BASE                                                syscall.Errno = 9550\n\tDNS_ERROR_INVALID_TYPE                                                    syscall.Errno = 9551\n\tDNS_ERROR_INVALID_IP_ADDRESS                                              syscall.Errno = 9552\n\tDNS_ERROR_INVALID_PROPERTY                                                syscall.Errno = 9553\n\tDNS_ERROR_TRY_AGAIN_LATER                                                 syscall.Errno = 9554\n\tDNS_ERROR_NOT_UNIQUE                                                      syscall.Errno = 9555\n\tDNS_ERROR_NON_RFC_NAME                                                    syscall.Errno = 9556\n\tDNS_STATUS_FQDN                                                           syscall.Errno = 9557\n\tDNS_STATUS_DOTTED_NAME                                                    syscall.Errno = 9558\n\tDNS_STATUS_SINGLE_PART_NAME                                               syscall.Errno = 9559\n\tDNS_ERROR_INVALID_NAME_CHAR                                               syscall.Errno = 9560\n\tDNS_ERROR_NUMERIC_NAME                                                    syscall.Errno = 9561\n\tDNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER                                      syscall.Errno = 9562\n\tDNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION                                    syscall.Errno = 9563\n\tDNS_ERROR_CANNOT_FIND_ROOT_HINTS                                          syscall.Errno = 9564\n\tDNS_ERROR_INCONSISTENT_ROOT_HINTS                                         syscall.Errno = 9565\n\tDNS_ERROR_DWORD_VALUE_TOO_SMALL                                           syscall.Errno = 9566\n\tDNS_ERROR_DWORD_VALUE_TOO_LARGE                                           syscall.Errno = 9567\n\tDNS_ERROR_BACKGROUND_LOADING                                              syscall.Errno = 9568\n\tDNS_ERROR_NOT_ALLOWED_ON_RODC                                             syscall.Errno = 9569\n\tDNS_ERROR_NOT_ALLOWED_UNDER_DNAME                                         syscall.Errno = 9570\n\tDNS_ERROR_DELEGATION_REQUIRED                                             syscall.Errno = 9571\n\tDNS_ERROR_INVALID_POLICY_TABLE                                            syscall.Errno = 9572\n\tDNS_ERROR_ADDRESS_REQUIRED                                                syscall.Errno = 9573\n\tDNS_ERROR_ZONE_BASE                                                       syscall.Errno = 9600\n\tDNS_ERROR_ZONE_DOES_NOT_EXIST                                             syscall.Errno = 9601\n\tDNS_ERROR_NO_ZONE_INFO                                                    syscall.Errno = 9602\n\tDNS_ERROR_INVALID_ZONE_OPERATION                                          syscall.Errno = 9603\n\tDNS_ERROR_ZONE_CONFIGURATION_ERROR                                        syscall.Errno = 9604\n\tDNS_ERROR_ZONE_HAS_NO_SOA_RECORD                                          syscall.Errno = 9605\n\tDNS_ERROR_ZONE_HAS_NO_NS_RECORDS                                          syscall.Errno = 9606\n\tDNS_ERROR_ZONE_LOCKED                                                     syscall.Errno = 9607\n\tDNS_ERROR_ZONE_CREATION_FAILED                                            syscall.Errno = 9608\n\tDNS_ERROR_ZONE_ALREADY_EXISTS                                             syscall.Errno = 9609\n\tDNS_ERROR_AUTOZONE_ALREADY_EXISTS                                         syscall.Errno = 9610\n\tDNS_ERROR_INVALID_ZONE_TYPE                                               syscall.Errno = 9611\n\tDNS_ERROR_SECONDARY_REQUIRES_MASTER_IP                                    syscall.Errno = 9612\n\tDNS_ERROR_ZONE_NOT_SECONDARY                                              syscall.Errno = 9613\n\tDNS_ERROR_NEED_SECONDARY_ADDRESSES                                        syscall.Errno = 9614\n\tDNS_ERROR_WINS_INIT_FAILED                                                syscall.Errno = 9615\n\tDNS_ERROR_NEED_WINS_SERVERS                                               syscall.Errno = 9616\n\tDNS_ERROR_NBSTAT_INIT_FAILED                                              syscall.Errno = 9617\n\tDNS_ERROR_SOA_DELETE_INVALID                                              syscall.Errno = 9618\n\tDNS_ERROR_FORWARDER_ALREADY_EXISTS                                        syscall.Errno = 9619\n\tDNS_ERROR_ZONE_REQUIRES_MASTER_IP                                         syscall.Errno = 9620\n\tDNS_ERROR_ZONE_IS_SHUTDOWN                                                syscall.Errno = 9621\n\tDNS_ERROR_ZONE_LOCKED_FOR_SIGNING                                         syscall.Errno = 9622\n\tDNS_ERROR_DATAFILE_BASE                                                   syscall.Errno = 9650\n\tDNS_ERROR_PRIMARY_REQUIRES_DATAFILE                                       syscall.Errno = 9651\n\tDNS_ERROR_INVALID_DATAFILE_NAME                                           syscall.Errno = 9652\n\tDNS_ERROR_DATAFILE_OPEN_FAILURE                                           syscall.Errno = 9653\n\tDNS_ERROR_FILE_WRITEBACK_FAILED                                           syscall.Errno = 9654\n\tDNS_ERROR_DATAFILE_PARSING                                                syscall.Errno = 9655\n\tDNS_ERROR_DATABASE_BASE                                                   syscall.Errno = 9700\n\tDNS_ERROR_RECORD_DOES_NOT_EXIST                                           syscall.Errno = 9701\n\tDNS_ERROR_RECORD_FORMAT                                                   syscall.Errno = 9702\n\tDNS_ERROR_NODE_CREATION_FAILED                                            syscall.Errno = 9703\n\tDNS_ERROR_UNKNOWN_RECORD_TYPE                                             syscall.Errno = 9704\n\tDNS_ERROR_RECORD_TIMED_OUT                                                syscall.Errno = 9705\n\tDNS_ERROR_NAME_NOT_IN_ZONE                                                syscall.Errno = 9706\n\tDNS_ERROR_CNAME_LOOP                                                      syscall.Errno = 9707\n\tDNS_ERROR_NODE_IS_CNAME                                                   syscall.Errno = 9708\n\tDNS_ERROR_CNAME_COLLISION                                                 syscall.Errno = 9709\n\tDNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT                                        syscall.Errno = 9710\n\tDNS_ERROR_RECORD_ALREADY_EXISTS                                           syscall.Errno = 9711\n\tDNS_ERROR_SECONDARY_DATA                                                  syscall.Errno = 9712\n\tDNS_ERROR_NO_CREATE_CACHE_DATA                                            syscall.Errno = 9713\n\tDNS_ERROR_NAME_DOES_NOT_EXIST                                             syscall.Errno = 9714\n\tDNS_WARNING_PTR_CREATE_FAILED                                             syscall.Errno = 9715\n\tDNS_WARNING_DOMAIN_UNDELETED                                              syscall.Errno = 9716\n\tDNS_ERROR_DS_UNAVAILABLE                                                  syscall.Errno = 9717\n\tDNS_ERROR_DS_ZONE_ALREADY_EXISTS                                          syscall.Errno = 9718\n\tDNS_ERROR_NO_BOOTFILE_IF_DS_ZONE                                          syscall.Errno = 9719\n\tDNS_ERROR_NODE_IS_DNAME                                                   syscall.Errno = 9720\n\tDNS_ERROR_DNAME_COLLISION                                                 syscall.Errno = 9721\n\tDNS_ERROR_ALIAS_LOOP                                                      syscall.Errno = 9722\n\tDNS_ERROR_OPERATION_BASE                                                  syscall.Errno = 9750\n\tDNS_INFO_AXFR_COMPLETE                                                    syscall.Errno = 9751\n\tDNS_ERROR_AXFR                                                            syscall.Errno = 9752\n\tDNS_INFO_ADDED_LOCAL_WINS                                                 syscall.Errno = 9753\n\tDNS_ERROR_SECURE_BASE                                                     syscall.Errno = 9800\n\tDNS_STATUS_CONTINUE_NEEDED                                                syscall.Errno = 9801\n\tDNS_ERROR_SETUP_BASE                                                      syscall.Errno = 9850\n\tDNS_ERROR_NO_TCPIP                                                        syscall.Errno = 9851\n\tDNS_ERROR_NO_DNS_SERVERS                                                  syscall.Errno = 9852\n\tDNS_ERROR_DP_BASE                                                         syscall.Errno = 9900\n\tDNS_ERROR_DP_DOES_NOT_EXIST                                               syscall.Errno = 9901\n\tDNS_ERROR_DP_ALREADY_EXISTS                                               syscall.Errno = 9902\n\tDNS_ERROR_DP_NOT_ENLISTED                                                 syscall.Errno = 9903\n\tDNS_ERROR_DP_ALREADY_ENLISTED                                             syscall.Errno = 9904\n\tDNS_ERROR_DP_NOT_AVAILABLE                                                syscall.Errno = 9905\n\tDNS_ERROR_DP_FSMO_ERROR                                                   syscall.Errno = 9906\n\tDNS_ERROR_RRL_NOT_ENABLED                                                 syscall.Errno = 9911\n\tDNS_ERROR_RRL_INVALID_WINDOW_SIZE                                         syscall.Errno = 9912\n\tDNS_ERROR_RRL_INVALID_IPV4_PREFIX                                         syscall.Errno = 9913\n\tDNS_ERROR_RRL_INVALID_IPV6_PREFIX                                         syscall.Errno = 9914\n\tDNS_ERROR_RRL_INVALID_TC_RATE                                             syscall.Errno = 9915\n\tDNS_ERROR_RRL_INVALID_LEAK_RATE                                           syscall.Errno = 9916\n\tDNS_ERROR_RRL_LEAK_RATE_LESSTHAN_TC_RATE                                  syscall.Errno = 9917\n\tDNS_ERROR_VIRTUALIZATION_INSTANCE_ALREADY_EXISTS                          syscall.Errno = 9921\n\tDNS_ERROR_VIRTUALIZATION_INSTANCE_DOES_NOT_EXIST                          syscall.Errno = 9922\n\tDNS_ERROR_VIRTUALIZATION_TREE_LOCKED                                      syscall.Errno = 9923\n\tDNS_ERROR_INVAILD_VIRTUALIZATION_INSTANCE_NAME                            syscall.Errno = 9924\n\tDNS_ERROR_DEFAULT_VIRTUALIZATION_INSTANCE                                 syscall.Errno = 9925\n\tDNS_ERROR_ZONESCOPE_ALREADY_EXISTS                                        syscall.Errno = 9951\n\tDNS_ERROR_ZONESCOPE_DOES_NOT_EXIST                                        syscall.Errno = 9952\n\tDNS_ERROR_DEFAULT_ZONESCOPE                                               syscall.Errno = 9953\n\tDNS_ERROR_INVALID_ZONESCOPE_NAME                                          syscall.Errno = 9954\n\tDNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES                                     syscall.Errno = 9955\n\tDNS_ERROR_LOAD_ZONESCOPE_FAILED                                           syscall.Errno = 9956\n\tDNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED                                 syscall.Errno = 9957\n\tDNS_ERROR_INVALID_SCOPE_NAME                                              syscall.Errno = 9958\n\tDNS_ERROR_SCOPE_DOES_NOT_EXIST                                            syscall.Errno = 9959\n\tDNS_ERROR_DEFAULT_SCOPE                                                   syscall.Errno = 9960\n\tDNS_ERROR_INVALID_SCOPE_OPERATION                                         syscall.Errno = 9961\n\tDNS_ERROR_SCOPE_LOCKED                                                    syscall.Errno = 9962\n\tDNS_ERROR_SCOPE_ALREADY_EXISTS                                            syscall.Errno = 9963\n\tDNS_ERROR_POLICY_ALREADY_EXISTS                                           syscall.Errno = 9971\n\tDNS_ERROR_POLICY_DOES_NOT_EXIST                                           syscall.Errno = 9972\n\tDNS_ERROR_POLICY_INVALID_CRITERIA                                         syscall.Errno = 9973\n\tDNS_ERROR_POLICY_INVALID_SETTINGS                                         syscall.Errno = 9974\n\tDNS_ERROR_CLIENT_SUBNET_IS_ACCESSED                                       syscall.Errno = 9975\n\tDNS_ERROR_CLIENT_SUBNET_DOES_NOT_EXIST                                    syscall.Errno = 9976\n\tDNS_ERROR_CLIENT_SUBNET_ALREADY_EXISTS                                    syscall.Errno = 9977\n\tDNS_ERROR_SUBNET_DOES_NOT_EXIST                                           syscall.Errno = 9978\n\tDNS_ERROR_SUBNET_ALREADY_EXISTS                                           syscall.Errno = 9979\n\tDNS_ERROR_POLICY_LOCKED                                                   syscall.Errno = 9980\n\tDNS_ERROR_POLICY_INVALID_WEIGHT                                           syscall.Errno = 9981\n\tDNS_ERROR_POLICY_INVALID_NAME                                             syscall.Errno = 9982\n\tDNS_ERROR_POLICY_MISSING_CRITERIA                                         syscall.Errno = 9983\n\tDNS_ERROR_INVALID_CLIENT_SUBNET_NAME                                      syscall.Errno = 9984\n\tDNS_ERROR_POLICY_PROCESSING_ORDER_INVALID                                 syscall.Errno = 9985\n\tDNS_ERROR_POLICY_SCOPE_MISSING                                            syscall.Errno = 9986\n\tDNS_ERROR_POLICY_SCOPE_NOT_ALLOWED                                        syscall.Errno = 9987\n\tDNS_ERROR_SERVERSCOPE_IS_REFERENCED                                       syscall.Errno = 9988\n\tDNS_ERROR_ZONESCOPE_IS_REFERENCED                                         syscall.Errno = 9989\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_CLIENT_SUBNET                           syscall.Errno = 9990\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_TRANSPORT_PROTOCOL                      syscall.Errno = 9991\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_NETWORK_PROTOCOL                        syscall.Errno = 9992\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_INTERFACE                               syscall.Errno = 9993\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_FQDN                                    syscall.Errno = 9994\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_QUERY_TYPE                              syscall.Errno = 9995\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_TIME_OF_DAY                             syscall.Errno = 9996\n\tWSABASEERR                                                                syscall.Errno = 10000\n\tWSAEINTR                                                                  syscall.Errno = 10004\n\tWSAEBADF                                                                  syscall.Errno = 10009\n\tWSAEACCES                                                                 syscall.Errno = 10013\n\tWSAEFAULT                                                                 syscall.Errno = 10014\n\tWSAEINVAL                                                                 syscall.Errno = 10022\n\tWSAEMFILE                                                                 syscall.Errno = 10024\n\tWSAEWOULDBLOCK                                                            syscall.Errno = 10035\n\tWSAEINPROGRESS                                                            syscall.Errno = 10036\n\tWSAEALREADY                                                               syscall.Errno = 10037\n\tWSAENOTSOCK                                                               syscall.Errno = 10038\n\tWSAEDESTADDRREQ                                                           syscall.Errno = 10039\n\tWSAEMSGSIZE                                                               syscall.Errno = 10040\n\tWSAEPROTOTYPE                                                             syscall.Errno = 10041\n\tWSAENOPROTOOPT                                                            syscall.Errno = 10042\n\tWSAEPROTONOSUPPORT                                                        syscall.Errno = 10043\n\tWSAESOCKTNOSUPPORT                                                        syscall.Errno = 10044\n\tWSAEOPNOTSUPP                                                             syscall.Errno = 10045\n\tWSAEPFNOSUPPORT                                                           syscall.Errno = 10046\n\tWSAEAFNOSUPPORT                                                           syscall.Errno = 10047\n\tWSAEADDRINUSE                                                             syscall.Errno = 10048\n\tWSAEADDRNOTAVAIL                                                          syscall.Errno = 10049\n\tWSAENETDOWN                                                               syscall.Errno = 10050\n\tWSAENETUNREACH                                                            syscall.Errno = 10051\n\tWSAENETRESET                                                              syscall.Errno = 10052\n\tWSAECONNABORTED                                                           syscall.Errno = 10053\n\tWSAECONNRESET                                                             syscall.Errno = 10054\n\tWSAENOBUFS                                                                syscall.Errno = 10055\n\tWSAEISCONN                                                                syscall.Errno = 10056\n\tWSAENOTCONN                                                               syscall.Errno = 10057\n\tWSAESHUTDOWN                                                              syscall.Errno = 10058\n\tWSAETOOMANYREFS                                                           syscall.Errno = 10059\n\tWSAETIMEDOUT                                                              syscall.Errno = 10060\n\tWSAECONNREFUSED                                                           syscall.Errno = 10061\n\tWSAELOOP                                                                  syscall.Errno = 10062\n\tWSAENAMETOOLONG                                                           syscall.Errno = 10063\n\tWSAEHOSTDOWN                                                              syscall.Errno = 10064\n\tWSAEHOSTUNREACH                                                           syscall.Errno = 10065\n\tWSAENOTEMPTY                                                              syscall.Errno = 10066\n\tWSAEPROCLIM                                                               syscall.Errno = 10067\n\tWSAEUSERS                                                                 syscall.Errno = 10068\n\tWSAEDQUOT                                                                 syscall.Errno = 10069\n\tWSAESTALE                                                                 syscall.Errno = 10070\n\tWSAEREMOTE                                                                syscall.Errno = 10071\n\tWSASYSNOTREADY                                                            syscall.Errno = 10091\n\tWSAVERNOTSUPPORTED                                                        syscall.Errno = 10092\n\tWSANOTINITIALISED                                                         syscall.Errno = 10093\n\tWSAEDISCON                                                                syscall.Errno = 10101\n\tWSAENOMORE                                                                syscall.Errno = 10102\n\tWSAECANCELLED                                                             syscall.Errno = 10103\n\tWSAEINVALIDPROCTABLE                                                      syscall.Errno = 10104\n\tWSAEINVALIDPROVIDER                                                       syscall.Errno = 10105\n\tWSAEPROVIDERFAILEDINIT                                                    syscall.Errno = 10106\n\tWSASYSCALLFAILURE                                                         syscall.Errno = 10107\n\tWSASERVICE_NOT_FOUND                                                      syscall.Errno = 10108\n\tWSATYPE_NOT_FOUND                                                         syscall.Errno = 10109\n\tWSA_E_NO_MORE                                                             syscall.Errno = 10110\n\tWSA_E_CANCELLED                                                           syscall.Errno = 10111\n\tWSAEREFUSED                                                               syscall.Errno = 10112\n\tWSAHOST_NOT_FOUND                                                         syscall.Errno = 11001\n\tWSATRY_AGAIN                                                              syscall.Errno = 11002\n\tWSANO_RECOVERY                                                            syscall.Errno = 11003\n\tWSANO_DATA                                                                syscall.Errno = 11004\n\tWSA_QOS_RECEIVERS                                                         syscall.Errno = 11005\n\tWSA_QOS_SENDERS                                                           syscall.Errno = 11006\n\tWSA_QOS_NO_SENDERS                                                        syscall.Errno = 11007\n\tWSA_QOS_NO_RECEIVERS                                                      syscall.Errno = 11008\n\tWSA_QOS_REQUEST_CONFIRMED                                                 syscall.Errno = 11009\n\tWSA_QOS_ADMISSION_FAILURE                                                 syscall.Errno = 11010\n\tWSA_QOS_POLICY_FAILURE                                                    syscall.Errno = 11011\n\tWSA_QOS_BAD_STYLE                                                         syscall.Errno = 11012\n\tWSA_QOS_BAD_OBJECT                                                        syscall.Errno = 11013\n\tWSA_QOS_TRAFFIC_CTRL_ERROR                                                syscall.Errno = 11014\n\tWSA_QOS_GENERIC_ERROR                                                     syscall.Errno = 11015\n\tWSA_QOS_ESERVICETYPE                                                      syscall.Errno = 11016\n\tWSA_QOS_EFLOWSPEC                                                         syscall.Errno = 11017\n\tWSA_QOS_EPROVSPECBUF                                                      syscall.Errno = 11018\n\tWSA_QOS_EFILTERSTYLE                                                      syscall.Errno = 11019\n\tWSA_QOS_EFILTERTYPE                                                       syscall.Errno = 11020\n\tWSA_QOS_EFILTERCOUNT                                                      syscall.Errno = 11021\n\tWSA_QOS_EOBJLENGTH                                                        syscall.Errno = 11022\n\tWSA_QOS_EFLOWCOUNT                                                        syscall.Errno = 11023\n\tWSA_QOS_EUNKOWNPSOBJ                                                      syscall.Errno = 11024\n\tWSA_QOS_EPOLICYOBJ                                                        syscall.Errno = 11025\n\tWSA_QOS_EFLOWDESC                                                         syscall.Errno = 11026\n\tWSA_QOS_EPSFLOWSPEC                                                       syscall.Errno = 11027\n\tWSA_QOS_EPSFILTERSPEC                                                     syscall.Errno = 11028\n\tWSA_QOS_ESDMODEOBJ                                                        syscall.Errno = 11029\n\tWSA_QOS_ESHAPERATEOBJ                                                     syscall.Errno = 11030\n\tWSA_QOS_RESERVED_PETYPE                                                   syscall.Errno = 11031\n\tWSA_SECURE_HOST_NOT_FOUND                                                 syscall.Errno = 11032\n\tWSA_IPSEC_NAME_POLICY_ERROR                                               syscall.Errno = 11033\n\tERROR_IPSEC_QM_POLICY_EXISTS                                              syscall.Errno = 13000\n\tERROR_IPSEC_QM_POLICY_NOT_FOUND                                           syscall.Errno = 13001\n\tERROR_IPSEC_QM_POLICY_IN_USE                                              syscall.Errno = 13002\n\tERROR_IPSEC_MM_POLICY_EXISTS                                              syscall.Errno = 13003\n\tERROR_IPSEC_MM_POLICY_NOT_FOUND                                           syscall.Errno = 13004\n\tERROR_IPSEC_MM_POLICY_IN_USE                                              syscall.Errno = 13005\n\tERROR_IPSEC_MM_FILTER_EXISTS                                              syscall.Errno = 13006\n\tERROR_IPSEC_MM_FILTER_NOT_FOUND                                           syscall.Errno = 13007\n\tERROR_IPSEC_TRANSPORT_FILTER_EXISTS                                       syscall.Errno = 13008\n\tERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND                                    syscall.Errno = 13009\n\tERROR_IPSEC_MM_AUTH_EXISTS                                                syscall.Errno = 13010\n\tERROR_IPSEC_MM_AUTH_NOT_FOUND                                             syscall.Errno = 13011\n\tERROR_IPSEC_MM_AUTH_IN_USE                                                syscall.Errno = 13012\n\tERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND                                   syscall.Errno = 13013\n\tERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND                                     syscall.Errno = 13014\n\tERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND                                   syscall.Errno = 13015\n\tERROR_IPSEC_TUNNEL_FILTER_EXISTS                                          syscall.Errno = 13016\n\tERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND                                       syscall.Errno = 13017\n\tERROR_IPSEC_MM_FILTER_PENDING_DELETION                                    syscall.Errno = 13018\n\tERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION                             syscall.Errno = 13019\n\tERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION                                syscall.Errno = 13020\n\tERROR_IPSEC_MM_POLICY_PENDING_DELETION                                    syscall.Errno = 13021\n\tERROR_IPSEC_MM_AUTH_PENDING_DELETION                                      syscall.Errno = 13022\n\tERROR_IPSEC_QM_POLICY_PENDING_DELETION                                    syscall.Errno = 13023\n\tWARNING_IPSEC_MM_POLICY_PRUNED                                            syscall.Errno = 13024\n\tWARNING_IPSEC_QM_POLICY_PRUNED                                            syscall.Errno = 13025\n\tERROR_IPSEC_IKE_NEG_STATUS_BEGIN                                          syscall.Errno = 13800\n\tERROR_IPSEC_IKE_AUTH_FAIL                                                 syscall.Errno = 13801\n\tERROR_IPSEC_IKE_ATTRIB_FAIL                                               syscall.Errno = 13802\n\tERROR_IPSEC_IKE_NEGOTIATION_PENDING                                       syscall.Errno = 13803\n\tERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR                                  syscall.Errno = 13804\n\tERROR_IPSEC_IKE_TIMED_OUT                                                 syscall.Errno = 13805\n\tERROR_IPSEC_IKE_NO_CERT                                                   syscall.Errno = 13806\n\tERROR_IPSEC_IKE_SA_DELETED                                                syscall.Errno = 13807\n\tERROR_IPSEC_IKE_SA_REAPED                                                 syscall.Errno = 13808\n\tERROR_IPSEC_IKE_MM_ACQUIRE_DROP                                           syscall.Errno = 13809\n\tERROR_IPSEC_IKE_QM_ACQUIRE_DROP                                           syscall.Errno = 13810\n\tERROR_IPSEC_IKE_QUEUE_DROP_MM                                             syscall.Errno = 13811\n\tERROR_IPSEC_IKE_QUEUE_DROP_NO_MM                                          syscall.Errno = 13812\n\tERROR_IPSEC_IKE_DROP_NO_RESPONSE                                          syscall.Errno = 13813\n\tERROR_IPSEC_IKE_MM_DELAY_DROP                                             syscall.Errno = 13814\n\tERROR_IPSEC_IKE_QM_DELAY_DROP                                             syscall.Errno = 13815\n\tERROR_IPSEC_IKE_ERROR                                                     syscall.Errno = 13816\n\tERROR_IPSEC_IKE_CRL_FAILED                                                syscall.Errno = 13817\n\tERROR_IPSEC_IKE_INVALID_KEY_USAGE                                         syscall.Errno = 13818\n\tERROR_IPSEC_IKE_INVALID_CERT_TYPE                                         syscall.Errno = 13819\n\tERROR_IPSEC_IKE_NO_PRIVATE_KEY                                            syscall.Errno = 13820\n\tERROR_IPSEC_IKE_SIMULTANEOUS_REKEY                                        syscall.Errno = 13821\n\tERROR_IPSEC_IKE_DH_FAIL                                                   syscall.Errno = 13822\n\tERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED                           syscall.Errno = 13823\n\tERROR_IPSEC_IKE_INVALID_HEADER                                            syscall.Errno = 13824\n\tERROR_IPSEC_IKE_NO_POLICY                                                 syscall.Errno = 13825\n\tERROR_IPSEC_IKE_INVALID_SIGNATURE                                         syscall.Errno = 13826\n\tERROR_IPSEC_IKE_KERBEROS_ERROR                                            syscall.Errno = 13827\n\tERROR_IPSEC_IKE_NO_PUBLIC_KEY                                             syscall.Errno = 13828\n\tERROR_IPSEC_IKE_PROCESS_ERR                                               syscall.Errno = 13829\n\tERROR_IPSEC_IKE_PROCESS_ERR_SA                                            syscall.Errno = 13830\n\tERROR_IPSEC_IKE_PROCESS_ERR_PROP                                          syscall.Errno = 13831\n\tERROR_IPSEC_IKE_PROCESS_ERR_TRANS                                         syscall.Errno = 13832\n\tERROR_IPSEC_IKE_PROCESS_ERR_KE                                            syscall.Errno = 13833\n\tERROR_IPSEC_IKE_PROCESS_ERR_ID                                            syscall.Errno = 13834\n\tERROR_IPSEC_IKE_PROCESS_ERR_CERT                                          syscall.Errno = 13835\n\tERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ                                      syscall.Errno = 13836\n\tERROR_IPSEC_IKE_PROCESS_ERR_HASH                                          syscall.Errno = 13837\n\tERROR_IPSEC_IKE_PROCESS_ERR_SIG                                           syscall.Errno = 13838\n\tERROR_IPSEC_IKE_PROCESS_ERR_NONCE                                         syscall.Errno = 13839\n\tERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY                                        syscall.Errno = 13840\n\tERROR_IPSEC_IKE_PROCESS_ERR_DELETE                                        syscall.Errno = 13841\n\tERROR_IPSEC_IKE_PROCESS_ERR_VENDOR                                        syscall.Errno = 13842\n\tERROR_IPSEC_IKE_INVALID_PAYLOAD                                           syscall.Errno = 13843\n\tERROR_IPSEC_IKE_LOAD_SOFT_SA                                              syscall.Errno = 13844\n\tERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN                                         syscall.Errno = 13845\n\tERROR_IPSEC_IKE_INVALID_COOKIE                                            syscall.Errno = 13846\n\tERROR_IPSEC_IKE_NO_PEER_CERT                                              syscall.Errno = 13847\n\tERROR_IPSEC_IKE_PEER_CRL_FAILED                                           syscall.Errno = 13848\n\tERROR_IPSEC_IKE_POLICY_CHANGE                                             syscall.Errno = 13849\n\tERROR_IPSEC_IKE_NO_MM_POLICY                                              syscall.Errno = 13850\n\tERROR_IPSEC_IKE_NOTCBPRIV                                                 syscall.Errno = 13851\n\tERROR_IPSEC_IKE_SECLOADFAIL                                               syscall.Errno = 13852\n\tERROR_IPSEC_IKE_FAILSSPINIT                                               syscall.Errno = 13853\n\tERROR_IPSEC_IKE_FAILQUERYSSP                                              syscall.Errno = 13854\n\tERROR_IPSEC_IKE_SRVACQFAIL                                                syscall.Errno = 13855\n\tERROR_IPSEC_IKE_SRVQUERYCRED                                              syscall.Errno = 13856\n\tERROR_IPSEC_IKE_GETSPIFAIL                                                syscall.Errno = 13857\n\tERROR_IPSEC_IKE_INVALID_FILTER                                            syscall.Errno = 13858\n\tERROR_IPSEC_IKE_OUT_OF_MEMORY                                             syscall.Errno = 13859\n\tERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED                                     syscall.Errno = 13860\n\tERROR_IPSEC_IKE_INVALID_POLICY                                            syscall.Errno = 13861\n\tERROR_IPSEC_IKE_UNKNOWN_DOI                                               syscall.Errno = 13862\n\tERROR_IPSEC_IKE_INVALID_SITUATION                                         syscall.Errno = 13863\n\tERROR_IPSEC_IKE_DH_FAILURE                                                syscall.Errno = 13864\n\tERROR_IPSEC_IKE_INVALID_GROUP                                             syscall.Errno = 13865\n\tERROR_IPSEC_IKE_ENCRYPT                                                   syscall.Errno = 13866\n\tERROR_IPSEC_IKE_DECRYPT                                                   syscall.Errno = 13867\n\tERROR_IPSEC_IKE_POLICY_MATCH                                              syscall.Errno = 13868\n\tERROR_IPSEC_IKE_UNSUPPORTED_ID                                            syscall.Errno = 13869\n\tERROR_IPSEC_IKE_INVALID_HASH                                              syscall.Errno = 13870\n\tERROR_IPSEC_IKE_INVALID_HASH_ALG                                          syscall.Errno = 13871\n\tERROR_IPSEC_IKE_INVALID_HASH_SIZE                                         syscall.Errno = 13872\n\tERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG                                       syscall.Errno = 13873\n\tERROR_IPSEC_IKE_INVALID_AUTH_ALG                                          syscall.Errno = 13874\n\tERROR_IPSEC_IKE_INVALID_SIG                                               syscall.Errno = 13875\n\tERROR_IPSEC_IKE_LOAD_FAILED                                               syscall.Errno = 13876\n\tERROR_IPSEC_IKE_RPC_DELETE                                                syscall.Errno = 13877\n\tERROR_IPSEC_IKE_BENIGN_REINIT                                             syscall.Errno = 13878\n\tERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY                         syscall.Errno = 13879\n\tERROR_IPSEC_IKE_INVALID_MAJOR_VERSION                                     syscall.Errno = 13880\n\tERROR_IPSEC_IKE_INVALID_CERT_KEYLEN                                       syscall.Errno = 13881\n\tERROR_IPSEC_IKE_MM_LIMIT                                                  syscall.Errno = 13882\n\tERROR_IPSEC_IKE_NEGOTIATION_DISABLED                                      syscall.Errno = 13883\n\tERROR_IPSEC_IKE_QM_LIMIT                                                  syscall.Errno = 13884\n\tERROR_IPSEC_IKE_MM_EXPIRED                                                syscall.Errno = 13885\n\tERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID                                   syscall.Errno = 13886\n\tERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH                                syscall.Errno = 13887\n\tERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID                                     syscall.Errno = 13888\n\tERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD                                      syscall.Errno = 13889\n\tERROR_IPSEC_IKE_DOS_COOKIE_SENT                                           syscall.Errno = 13890\n\tERROR_IPSEC_IKE_SHUTTING_DOWN                                             syscall.Errno = 13891\n\tERROR_IPSEC_IKE_CGA_AUTH_FAILED                                           syscall.Errno = 13892\n\tERROR_IPSEC_IKE_PROCESS_ERR_NATOA                                         syscall.Errno = 13893\n\tERROR_IPSEC_IKE_INVALID_MM_FOR_QM                                         syscall.Errno = 13894\n\tERROR_IPSEC_IKE_QM_EXPIRED                                                syscall.Errno = 13895\n\tERROR_IPSEC_IKE_TOO_MANY_FILTERS                                          syscall.Errno = 13896\n\tERROR_IPSEC_IKE_NEG_STATUS_END                                            syscall.Errno = 13897\n\tERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL                                     syscall.Errno = 13898\n\tERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE                               syscall.Errno = 13899\n\tERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING                                syscall.Errno = 13900\n\tERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING                  syscall.Errno = 13901\n\tERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS                                      syscall.Errno = 13902\n\tERROR_IPSEC_IKE_RATELIMIT_DROP                                            syscall.Errno = 13903\n\tERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE                                syscall.Errno = 13904\n\tERROR_IPSEC_IKE_AUTHORIZATION_FAILURE                                     syscall.Errno = 13905\n\tERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE                         syscall.Errno = 13906\n\tERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY                 syscall.Errno = 13907\n\tERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE             syscall.Errno = 13908\n\tERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END                                   syscall.Errno = 13909\n\tERROR_IPSEC_BAD_SPI                                                       syscall.Errno = 13910\n\tERROR_IPSEC_SA_LIFETIME_EXPIRED                                           syscall.Errno = 13911\n\tERROR_IPSEC_WRONG_SA                                                      syscall.Errno = 13912\n\tERROR_IPSEC_REPLAY_CHECK_FAILED                                           syscall.Errno = 13913\n\tERROR_IPSEC_INVALID_PACKET                                                syscall.Errno = 13914\n\tERROR_IPSEC_INTEGRITY_CHECK_FAILED                                        syscall.Errno = 13915\n\tERROR_IPSEC_CLEAR_TEXT_DROP                                               syscall.Errno = 13916\n\tERROR_IPSEC_AUTH_FIREWALL_DROP                                            syscall.Errno = 13917\n\tERROR_IPSEC_THROTTLE_DROP                                                 syscall.Errno = 13918\n\tERROR_IPSEC_DOSP_BLOCK                                                    syscall.Errno = 13925\n\tERROR_IPSEC_DOSP_RECEIVED_MULTICAST                                       syscall.Errno = 13926\n\tERROR_IPSEC_DOSP_INVALID_PACKET                                           syscall.Errno = 13927\n\tERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED                                      syscall.Errno = 13928\n\tERROR_IPSEC_DOSP_MAX_ENTRIES                                              syscall.Errno = 13929\n\tERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED                                       syscall.Errno = 13930\n\tERROR_IPSEC_DOSP_NOT_INSTALLED                                            syscall.Errno = 13931\n\tERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES                              syscall.Errno = 13932\n\tERROR_SXS_SECTION_NOT_FOUND                                               syscall.Errno = 14000\n\tERROR_SXS_CANT_GEN_ACTCTX                                                 syscall.Errno = 14001\n\tERROR_SXS_INVALID_ACTCTXDATA_FORMAT                                       syscall.Errno = 14002\n\tERROR_SXS_ASSEMBLY_NOT_FOUND                                              syscall.Errno = 14003\n\tERROR_SXS_MANIFEST_FORMAT_ERROR                                           syscall.Errno = 14004\n\tERROR_SXS_MANIFEST_PARSE_ERROR                                            syscall.Errno = 14005\n\tERROR_SXS_ACTIVATION_CONTEXT_DISABLED                                     syscall.Errno = 14006\n\tERROR_SXS_KEY_NOT_FOUND                                                   syscall.Errno = 14007\n\tERROR_SXS_VERSION_CONFLICT                                                syscall.Errno = 14008\n\tERROR_SXS_WRONG_SECTION_TYPE                                              syscall.Errno = 14009\n\tERROR_SXS_THREAD_QUERIES_DISABLED                                         syscall.Errno = 14010\n\tERROR_SXS_PROCESS_DEFAULT_ALREADY_SET                                     syscall.Errno = 14011\n\tERROR_SXS_UNKNOWN_ENCODING_GROUP                                          syscall.Errno = 14012\n\tERROR_SXS_UNKNOWN_ENCODING                                                syscall.Errno = 14013\n\tERROR_SXS_INVALID_XML_NAMESPACE_URI                                       syscall.Errno = 14014\n\tERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED                          syscall.Errno = 14015\n\tERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED                          syscall.Errno = 14016\n\tERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE                             syscall.Errno = 14017\n\tERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE                     syscall.Errno = 14018\n\tERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE                     syscall.Errno = 14019\n\tERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT                  syscall.Errno = 14020\n\tERROR_SXS_DUPLICATE_DLL_NAME                                              syscall.Errno = 14021\n\tERROR_SXS_DUPLICATE_WINDOWCLASS_NAME                                      syscall.Errno = 14022\n\tERROR_SXS_DUPLICATE_CLSID                                                 syscall.Errno = 14023\n\tERROR_SXS_DUPLICATE_IID                                                   syscall.Errno = 14024\n\tERROR_SXS_DUPLICATE_TLBID                                                 syscall.Errno = 14025\n\tERROR_SXS_DUPLICATE_PROGID                                                syscall.Errno = 14026\n\tERROR_SXS_DUPLICATE_ASSEMBLY_NAME                                         syscall.Errno = 14027\n\tERROR_SXS_FILE_HASH_MISMATCH                                              syscall.Errno = 14028\n\tERROR_SXS_POLICY_PARSE_ERROR                                              syscall.Errno = 14029\n\tERROR_SXS_XML_E_MISSINGQUOTE                                              syscall.Errno = 14030\n\tERROR_SXS_XML_E_COMMENTSYNTAX                                             syscall.Errno = 14031\n\tERROR_SXS_XML_E_BADSTARTNAMECHAR                                          syscall.Errno = 14032\n\tERROR_SXS_XML_E_BADNAMECHAR                                               syscall.Errno = 14033\n\tERROR_SXS_XML_E_BADCHARINSTRING                                           syscall.Errno = 14034\n\tERROR_SXS_XML_E_XMLDECLSYNTAX                                             syscall.Errno = 14035\n\tERROR_SXS_XML_E_BADCHARDATA                                               syscall.Errno = 14036\n\tERROR_SXS_XML_E_MISSINGWHITESPACE                                         syscall.Errno = 14037\n\tERROR_SXS_XML_E_EXPECTINGTAGEND                                           syscall.Errno = 14038\n\tERROR_SXS_XML_E_MISSINGSEMICOLON                                          syscall.Errno = 14039\n\tERROR_SXS_XML_E_UNBALANCEDPAREN                                           syscall.Errno = 14040\n\tERROR_SXS_XML_E_INTERNALERROR                                             syscall.Errno = 14041\n\tERROR_SXS_XML_E_UNEXPECTED_WHITESPACE                                     syscall.Errno = 14042\n\tERROR_SXS_XML_E_INCOMPLETE_ENCODING                                       syscall.Errno = 14043\n\tERROR_SXS_XML_E_MISSING_PAREN                                             syscall.Errno = 14044\n\tERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE                                       syscall.Errno = 14045\n\tERROR_SXS_XML_E_MULTIPLE_COLONS                                           syscall.Errno = 14046\n\tERROR_SXS_XML_E_INVALID_DECIMAL                                           syscall.Errno = 14047\n\tERROR_SXS_XML_E_INVALID_HEXIDECIMAL                                       syscall.Errno = 14048\n\tERROR_SXS_XML_E_INVALID_UNICODE                                           syscall.Errno = 14049\n\tERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK                                  syscall.Errno = 14050\n\tERROR_SXS_XML_E_UNEXPECTEDENDTAG                                          syscall.Errno = 14051\n\tERROR_SXS_XML_E_UNCLOSEDTAG                                               syscall.Errno = 14052\n\tERROR_SXS_XML_E_DUPLICATEATTRIBUTE                                        syscall.Errno = 14053\n\tERROR_SXS_XML_E_MULTIPLEROOTS                                             syscall.Errno = 14054\n\tERROR_SXS_XML_E_INVALIDATROOTLEVEL                                        syscall.Errno = 14055\n\tERROR_SXS_XML_E_BADXMLDECL                                                syscall.Errno = 14056\n\tERROR_SXS_XML_E_MISSINGROOT                                               syscall.Errno = 14057\n\tERROR_SXS_XML_E_UNEXPECTEDEOF                                             syscall.Errno = 14058\n\tERROR_SXS_XML_E_BADPEREFINSUBSET                                          syscall.Errno = 14059\n\tERROR_SXS_XML_E_UNCLOSEDSTARTTAG                                          syscall.Errno = 14060\n\tERROR_SXS_XML_E_UNCLOSEDENDTAG                                            syscall.Errno = 14061\n\tERROR_SXS_XML_E_UNCLOSEDSTRING                                            syscall.Errno = 14062\n\tERROR_SXS_XML_E_UNCLOSEDCOMMENT                                           syscall.Errno = 14063\n\tERROR_SXS_XML_E_UNCLOSEDDECL                                              syscall.Errno = 14064\n\tERROR_SXS_XML_E_UNCLOSEDCDATA                                             syscall.Errno = 14065\n\tERROR_SXS_XML_E_RESERVEDNAMESPACE                                         syscall.Errno = 14066\n\tERROR_SXS_XML_E_INVALIDENCODING                                           syscall.Errno = 14067\n\tERROR_SXS_XML_E_INVALIDSWITCH                                             syscall.Errno = 14068\n\tERROR_SXS_XML_E_BADXMLCASE                                                syscall.Errno = 14069\n\tERROR_SXS_XML_E_INVALID_STANDALONE                                        syscall.Errno = 14070\n\tERROR_SXS_XML_E_UNEXPECTED_STANDALONE                                     syscall.Errno = 14071\n\tERROR_SXS_XML_E_INVALID_VERSION                                           syscall.Errno = 14072\n\tERROR_SXS_XML_E_MISSINGEQUALS                                             syscall.Errno = 14073\n\tERROR_SXS_PROTECTION_RECOVERY_FAILED                                      syscall.Errno = 14074\n\tERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT                                 syscall.Errno = 14075\n\tERROR_SXS_PROTECTION_CATALOG_NOT_VALID                                    syscall.Errno = 14076\n\tERROR_SXS_UNTRANSLATABLE_HRESULT                                          syscall.Errno = 14077\n\tERROR_SXS_PROTECTION_CATALOG_FILE_MISSING                                 syscall.Errno = 14078\n\tERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE                             syscall.Errno = 14079\n\tERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME                        syscall.Errno = 14080\n\tERROR_SXS_ASSEMBLY_MISSING                                                syscall.Errno = 14081\n\tERROR_SXS_CORRUPT_ACTIVATION_STACK                                        syscall.Errno = 14082\n\tERROR_SXS_CORRUPTION                                                      syscall.Errno = 14083\n\tERROR_SXS_EARLY_DEACTIVATION                                              syscall.Errno = 14084\n\tERROR_SXS_INVALID_DEACTIVATION                                            syscall.Errno = 14085\n\tERROR_SXS_MULTIPLE_DEACTIVATION                                           syscall.Errno = 14086\n\tERROR_SXS_PROCESS_TERMINATION_REQUESTED                                   syscall.Errno = 14087\n\tERROR_SXS_RELEASE_ACTIVATION_CONTEXT                                      syscall.Errno = 14088\n\tERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY                         syscall.Errno = 14089\n\tERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE                                syscall.Errno = 14090\n\tERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME                                 syscall.Errno = 14091\n\tERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE                                    syscall.Errno = 14092\n\tERROR_SXS_IDENTITY_PARSE_ERROR                                            syscall.Errno = 14093\n\tERROR_MALFORMED_SUBSTITUTION_STRING                                       syscall.Errno = 14094\n\tERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN                                      syscall.Errno = 14095\n\tERROR_UNMAPPED_SUBSTITUTION_STRING                                        syscall.Errno = 14096\n\tERROR_SXS_ASSEMBLY_NOT_LOCKED                                             syscall.Errno = 14097\n\tERROR_SXS_COMPONENT_STORE_CORRUPT                                         syscall.Errno = 14098\n\tERROR_ADVANCED_INSTALLER_FAILED                                           syscall.Errno = 14099\n\tERROR_XML_ENCODING_MISMATCH                                               syscall.Errno = 14100\n\tERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT                   syscall.Errno = 14101\n\tERROR_SXS_IDENTITIES_DIFFERENT                                            syscall.Errno = 14102\n\tERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT                                    syscall.Errno = 14103\n\tERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY                                       syscall.Errno = 14104\n\tERROR_SXS_MANIFEST_TOO_BIG                                                syscall.Errno = 14105\n\tERROR_SXS_SETTING_NOT_REGISTERED                                          syscall.Errno = 14106\n\tERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE                                  syscall.Errno = 14107\n\tERROR_SMI_PRIMITIVE_INSTALLER_FAILED                                      syscall.Errno = 14108\n\tERROR_GENERIC_COMMAND_FAILED                                              syscall.Errno = 14109\n\tERROR_SXS_FILE_HASH_MISSING                                               syscall.Errno = 14110\n\tERROR_SXS_DUPLICATE_ACTIVATABLE_CLASS                                     syscall.Errno = 14111\n\tERROR_EVT_INVALID_CHANNEL_PATH                                            syscall.Errno = 15000\n\tERROR_EVT_INVALID_QUERY                                                   syscall.Errno = 15001\n\tERROR_EVT_PUBLISHER_METADATA_NOT_FOUND                                    syscall.Errno = 15002\n\tERROR_EVT_EVENT_TEMPLATE_NOT_FOUND                                        syscall.Errno = 15003\n\tERROR_EVT_INVALID_PUBLISHER_NAME                                          syscall.Errno = 15004\n\tERROR_EVT_INVALID_EVENT_DATA                                              syscall.Errno = 15005\n\tERROR_EVT_CHANNEL_NOT_FOUND                                               syscall.Errno = 15007\n\tERROR_EVT_MALFORMED_XML_TEXT                                              syscall.Errno = 15008\n\tERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL                                  syscall.Errno = 15009\n\tERROR_EVT_CONFIGURATION_ERROR                                             syscall.Errno = 15010\n\tERROR_EVT_QUERY_RESULT_STALE                                              syscall.Errno = 15011\n\tERROR_EVT_QUERY_RESULT_INVALID_POSITION                                   syscall.Errno = 15012\n\tERROR_EVT_NON_VALIDATING_MSXML                                            syscall.Errno = 15013\n\tERROR_EVT_FILTER_ALREADYSCOPED                                            syscall.Errno = 15014\n\tERROR_EVT_FILTER_NOTELTSET                                                syscall.Errno = 15015\n\tERROR_EVT_FILTER_INVARG                                                   syscall.Errno = 15016\n\tERROR_EVT_FILTER_INVTEST                                                  syscall.Errno = 15017\n\tERROR_EVT_FILTER_INVTYPE                                                  syscall.Errno = 15018\n\tERROR_EVT_FILTER_PARSEERR                                                 syscall.Errno = 15019\n\tERROR_EVT_FILTER_UNSUPPORTEDOP                                            syscall.Errno = 15020\n\tERROR_EVT_FILTER_UNEXPECTEDTOKEN                                          syscall.Errno = 15021\n\tERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL                   syscall.Errno = 15022\n\tERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE                                  syscall.Errno = 15023\n\tERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE                                syscall.Errno = 15024\n\tERROR_EVT_CHANNEL_CANNOT_ACTIVATE                                         syscall.Errno = 15025\n\tERROR_EVT_FILTER_TOO_COMPLEX                                              syscall.Errno = 15026\n\tERROR_EVT_MESSAGE_NOT_FOUND                                               syscall.Errno = 15027\n\tERROR_EVT_MESSAGE_ID_NOT_FOUND                                            syscall.Errno = 15028\n\tERROR_EVT_UNRESOLVED_VALUE_INSERT                                         syscall.Errno = 15029\n\tERROR_EVT_UNRESOLVED_PARAMETER_INSERT                                     syscall.Errno = 15030\n\tERROR_EVT_MAX_INSERTS_REACHED                                             syscall.Errno = 15031\n\tERROR_EVT_EVENT_DEFINITION_NOT_FOUND                                      syscall.Errno = 15032\n\tERROR_EVT_MESSAGE_LOCALE_NOT_FOUND                                        syscall.Errno = 15033\n\tERROR_EVT_VERSION_TOO_OLD                                                 syscall.Errno = 15034\n\tERROR_EVT_VERSION_TOO_NEW                                                 syscall.Errno = 15035\n\tERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY                                    syscall.Errno = 15036\n\tERROR_EVT_PUBLISHER_DISABLED                                              syscall.Errno = 15037\n\tERROR_EVT_FILTER_OUT_OF_RANGE                                             syscall.Errno = 15038\n\tERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE                                     syscall.Errno = 15080\n\tERROR_EC_LOG_DISABLED                                                     syscall.Errno = 15081\n\tERROR_EC_CIRCULAR_FORWARDING                                              syscall.Errno = 15082\n\tERROR_EC_CREDSTORE_FULL                                                   syscall.Errno = 15083\n\tERROR_EC_CRED_NOT_FOUND                                                   syscall.Errno = 15084\n\tERROR_EC_NO_ACTIVE_CHANNEL                                                syscall.Errno = 15085\n\tERROR_MUI_FILE_NOT_FOUND                                                  syscall.Errno = 15100\n\tERROR_MUI_INVALID_FILE                                                    syscall.Errno = 15101\n\tERROR_MUI_INVALID_RC_CONFIG                                               syscall.Errno = 15102\n\tERROR_MUI_INVALID_LOCALE_NAME                                             syscall.Errno = 15103\n\tERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME                                   syscall.Errno = 15104\n\tERROR_MUI_FILE_NOT_LOADED                                                 syscall.Errno = 15105\n\tERROR_RESOURCE_ENUM_USER_STOP                                             syscall.Errno = 15106\n\tERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED                               syscall.Errno = 15107\n\tERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME                                syscall.Errno = 15108\n\tERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE                          syscall.Errno = 15110\n\tERROR_MRM_INVALID_PRICONFIG                                               syscall.Errno = 15111\n\tERROR_MRM_INVALID_FILE_TYPE                                               syscall.Errno = 15112\n\tERROR_MRM_UNKNOWN_QUALIFIER                                               syscall.Errno = 15113\n\tERROR_MRM_INVALID_QUALIFIER_VALUE                                         syscall.Errno = 15114\n\tERROR_MRM_NO_CANDIDATE                                                    syscall.Errno = 15115\n\tERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE                                   syscall.Errno = 15116\n\tERROR_MRM_RESOURCE_TYPE_MISMATCH                                          syscall.Errno = 15117\n\tERROR_MRM_DUPLICATE_MAP_NAME                                              syscall.Errno = 15118\n\tERROR_MRM_DUPLICATE_ENTRY                                                 syscall.Errno = 15119\n\tERROR_MRM_INVALID_RESOURCE_IDENTIFIER                                     syscall.Errno = 15120\n\tERROR_MRM_FILEPATH_TOO_LONG                                               syscall.Errno = 15121\n\tERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE                                      syscall.Errno = 15122\n\tERROR_MRM_INVALID_PRI_FILE                                                syscall.Errno = 15126\n\tERROR_MRM_NAMED_RESOURCE_NOT_FOUND                                        syscall.Errno = 15127\n\tERROR_MRM_MAP_NOT_FOUND                                                   syscall.Errno = 15135\n\tERROR_MRM_UNSUPPORTED_PROFILE_TYPE                                        syscall.Errno = 15136\n\tERROR_MRM_INVALID_QUALIFIER_OPERATOR                                      syscall.Errno = 15137\n\tERROR_MRM_INDETERMINATE_QUALIFIER_VALUE                                   syscall.Errno = 15138\n\tERROR_MRM_AUTOMERGE_ENABLED                                               syscall.Errno = 15139\n\tERROR_MRM_TOO_MANY_RESOURCES                                              syscall.Errno = 15140\n\tERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE                                 syscall.Errno = 15141\n\tERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE                  syscall.Errno = 15142\n\tERROR_MRM_NO_CURRENT_VIEW_ON_THREAD                                       syscall.Errno = 15143\n\tERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST                            syscall.Errno = 15144\n\tERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT                         syscall.Errno = 15145\n\tERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE                              syscall.Errno = 15146\n\tERROR_MRM_GENERATION_COUNT_MISMATCH                                       syscall.Errno = 15147\n\tERROR_PRI_MERGE_VERSION_MISMATCH                                          syscall.Errno = 15148\n\tERROR_PRI_MERGE_MISSING_SCHEMA                                            syscall.Errno = 15149\n\tERROR_PRI_MERGE_LOAD_FILE_FAILED                                          syscall.Errno = 15150\n\tERROR_PRI_MERGE_ADD_FILE_FAILED                                           syscall.Errno = 15151\n\tERROR_PRI_MERGE_WRITE_FILE_FAILED                                         syscall.Errno = 15152\n\tERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED                     syscall.Errno = 15153\n\tERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED                        syscall.Errno = 15154\n\tERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED                               syscall.Errno = 15155\n\tERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED                                     syscall.Errno = 15156\n\tERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED                                 syscall.Errno = 15157\n\tERROR_PRI_MERGE_INVALID_FILE_NAME                                         syscall.Errno = 15158\n\tERROR_MRM_PACKAGE_NOT_FOUND                                               syscall.Errno = 15159\n\tERROR_MRM_MISSING_DEFAULT_LANGUAGE                                        syscall.Errno = 15160\n\tERROR_MCA_INVALID_CAPABILITIES_STRING                                     syscall.Errno = 15200\n\tERROR_MCA_INVALID_VCP_VERSION                                             syscall.Errno = 15201\n\tERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION                             syscall.Errno = 15202\n\tERROR_MCA_MCCS_VERSION_MISMATCH                                           syscall.Errno = 15203\n\tERROR_MCA_UNSUPPORTED_MCCS_VERSION                                        syscall.Errno = 15204\n\tERROR_MCA_INTERNAL_ERROR                                                  syscall.Errno = 15205\n\tERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED                                syscall.Errno = 15206\n\tERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE                                   syscall.Errno = 15207\n\tERROR_AMBIGUOUS_SYSTEM_DEVICE                                             syscall.Errno = 15250\n\tERROR_SYSTEM_DEVICE_NOT_FOUND                                             syscall.Errno = 15299\n\tERROR_HASH_NOT_SUPPORTED                                                  syscall.Errno = 15300\n\tERROR_HASH_NOT_PRESENT                                                    syscall.Errno = 15301\n\tERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED                                syscall.Errno = 15321\n\tERROR_GPIO_CLIENT_INFORMATION_INVALID                                     syscall.Errno = 15322\n\tERROR_GPIO_VERSION_NOT_SUPPORTED                                          syscall.Errno = 15323\n\tERROR_GPIO_INVALID_REGISTRATION_PACKET                                    syscall.Errno = 15324\n\tERROR_GPIO_OPERATION_DENIED                                               syscall.Errno = 15325\n\tERROR_GPIO_INCOMPATIBLE_CONNECT_MODE                                      syscall.Errno = 15326\n\tERROR_GPIO_INTERRUPT_ALREADY_UNMASKED                                     syscall.Errno = 15327\n\tERROR_CANNOT_SWITCH_RUNLEVEL                                              syscall.Errno = 15400\n\tERROR_INVALID_RUNLEVEL_SETTING                                            syscall.Errno = 15401\n\tERROR_RUNLEVEL_SWITCH_TIMEOUT                                             syscall.Errno = 15402\n\tERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT                                       syscall.Errno = 15403\n\tERROR_RUNLEVEL_SWITCH_IN_PROGRESS                                         syscall.Errno = 15404\n\tERROR_SERVICES_FAILED_AUTOSTART                                           syscall.Errno = 15405\n\tERROR_COM_TASK_STOP_PENDING                                               syscall.Errno = 15501\n\tERROR_INSTALL_OPEN_PACKAGE_FAILED                                         syscall.Errno = 15600\n\tERROR_INSTALL_PACKAGE_NOT_FOUND                                           syscall.Errno = 15601\n\tERROR_INSTALL_INVALID_PACKAGE                                             syscall.Errno = 15602\n\tERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED                                   syscall.Errno = 15603\n\tERROR_INSTALL_OUT_OF_DISK_SPACE                                           syscall.Errno = 15604\n\tERROR_INSTALL_NETWORK_FAILURE                                             syscall.Errno = 15605\n\tERROR_INSTALL_REGISTRATION_FAILURE                                        syscall.Errno = 15606\n\tERROR_INSTALL_DEREGISTRATION_FAILURE                                      syscall.Errno = 15607\n\tERROR_INSTALL_CANCEL                                                      syscall.Errno = 15608\n\tERROR_INSTALL_FAILED                                                      syscall.Errno = 15609\n\tERROR_REMOVE_FAILED                                                       syscall.Errno = 15610\n\tERROR_PACKAGE_ALREADY_EXISTS                                              syscall.Errno = 15611\n\tERROR_NEEDS_REMEDIATION                                                   syscall.Errno = 15612\n\tERROR_INSTALL_PREREQUISITE_FAILED                                         syscall.Errno = 15613\n\tERROR_PACKAGE_REPOSITORY_CORRUPTED                                        syscall.Errno = 15614\n\tERROR_INSTALL_POLICY_FAILURE                                              syscall.Errno = 15615\n\tERROR_PACKAGE_UPDATING                                                    syscall.Errno = 15616\n\tERROR_DEPLOYMENT_BLOCKED_BY_POLICY                                        syscall.Errno = 15617\n\tERROR_PACKAGES_IN_USE                                                     syscall.Errno = 15618\n\tERROR_RECOVERY_FILE_CORRUPT                                               syscall.Errno = 15619\n\tERROR_INVALID_STAGED_SIGNATURE                                            syscall.Errno = 15620\n\tERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED                      syscall.Errno = 15621\n\tERROR_INSTALL_PACKAGE_DOWNGRADE                                           syscall.Errno = 15622\n\tERROR_SYSTEM_NEEDS_REMEDIATION                                            syscall.Errno = 15623\n\tERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN                                     syscall.Errno = 15624\n\tERROR_RESILIENCY_FILE_CORRUPT                                             syscall.Errno = 15625\n\tERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING                                syscall.Errno = 15626\n\tERROR_PACKAGE_MOVE_FAILED                                                 syscall.Errno = 15627\n\tERROR_INSTALL_VOLUME_NOT_EMPTY                                            syscall.Errno = 15628\n\tERROR_INSTALL_VOLUME_OFFLINE                                              syscall.Errno = 15629\n\tERROR_INSTALL_VOLUME_CORRUPT                                              syscall.Errno = 15630\n\tERROR_NEEDS_REGISTRATION                                                  syscall.Errno = 15631\n\tERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE                                syscall.Errno = 15632\n\tERROR_DEV_SIDELOAD_LIMIT_EXCEEDED                                         syscall.Errno = 15633\n\tERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE                      syscall.Errno = 15634\n\tERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM                                 syscall.Errno = 15635\n\tERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING                                   syscall.Errno = 15636\n\tERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE                   syscall.Errno = 15637\n\tERROR_PACKAGE_STAGING_ONHOLD                                              syscall.Errno = 15638\n\tERROR_INSTALL_INVALID_RELATED_SET_UPDATE                                  syscall.Errno = 15639\n\tERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY syscall.Errno = 15640\n\tERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF                                  syscall.Errno = 15641\n\tERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED        syscall.Errno = 15642\n\tERROR_PACKAGES_REPUTATION_CHECK_FAILED                                    syscall.Errno = 15643\n\tERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT                                  syscall.Errno = 15644\n\tERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED                                     syscall.Errno = 15645\n\tERROR_APPINSTALLER_ACTIVATION_BLOCKED                                     syscall.Errno = 15646\n\tERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED                        syscall.Errno = 15647\n\tERROR_APPX_RAW_DATA_WRITE_FAILED                                          syscall.Errno = 15648\n\tERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_PACKAGE                         syscall.Errno = 15649\n\tERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_MACHINE                         syscall.Errno = 15650\n\tERROR_DEPLOYMENT_BLOCKED_BY_PROFILE_POLICY                                syscall.Errno = 15651\n\tERROR_DEPLOYMENT_FAILED_CONFLICTING_MUTABLE_PACKAGE_DIRECTORY             syscall.Errno = 15652\n\tERROR_SINGLETON_RESOURCE_INSTALLED_IN_ACTIVE_USER                         syscall.Errno = 15653\n\tERROR_DIFFERENT_VERSION_OF_PACKAGED_SERVICE_INSTALLED                     syscall.Errno = 15654\n\tERROR_SERVICE_EXISTS_AS_NON_PACKAGED_SERVICE                              syscall.Errno = 15655\n\tERROR_PACKAGED_SERVICE_REQUIRES_ADMIN_PRIVILEGES                          syscall.Errno = 15656\n\tAPPMODEL_ERROR_NO_PACKAGE                                                 syscall.Errno = 15700\n\tAPPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT                                    syscall.Errno = 15701\n\tAPPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT                                   syscall.Errno = 15702\n\tAPPMODEL_ERROR_NO_APPLICATION                                             syscall.Errno = 15703\n\tAPPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED                               syscall.Errno = 15704\n\tAPPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID                                   syscall.Errno = 15705\n\tAPPMODEL_ERROR_PACKAGE_NOT_AVAILABLE                                      syscall.Errno = 15706\n\tAPPMODEL_ERROR_NO_MUTABLE_DIRECTORY                                       syscall.Errno = 15707\n\tERROR_STATE_LOAD_STORE_FAILED                                             syscall.Errno = 15800\n\tERROR_STATE_GET_VERSION_FAILED                                            syscall.Errno = 15801\n\tERROR_STATE_SET_VERSION_FAILED                                            syscall.Errno = 15802\n\tERROR_STATE_STRUCTURED_RESET_FAILED                                       syscall.Errno = 15803\n\tERROR_STATE_OPEN_CONTAINER_FAILED                                         syscall.Errno = 15804\n\tERROR_STATE_CREATE_CONTAINER_FAILED                                       syscall.Errno = 15805\n\tERROR_STATE_DELETE_CONTAINER_FAILED                                       syscall.Errno = 15806\n\tERROR_STATE_READ_SETTING_FAILED                                           syscall.Errno = 15807\n\tERROR_STATE_WRITE_SETTING_FAILED                                          syscall.Errno = 15808\n\tERROR_STATE_DELETE_SETTING_FAILED                                         syscall.Errno = 15809\n\tERROR_STATE_QUERY_SETTING_FAILED                                          syscall.Errno = 15810\n\tERROR_STATE_READ_COMPOSITE_SETTING_FAILED                                 syscall.Errno = 15811\n\tERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED                                syscall.Errno = 15812\n\tERROR_STATE_ENUMERATE_CONTAINER_FAILED                                    syscall.Errno = 15813\n\tERROR_STATE_ENUMERATE_SETTINGS_FAILED                                     syscall.Errno = 15814\n\tERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED                   syscall.Errno = 15815\n\tERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED                             syscall.Errno = 15816\n\tERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED                              syscall.Errno = 15817\n\tERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED                            syscall.Errno = 15818\n\tERROR_API_UNAVAILABLE                                                     syscall.Errno = 15841\n\tSTORE_ERROR_UNLICENSED                                                    syscall.Errno = 15861\n\tSTORE_ERROR_UNLICENSED_USER                                               syscall.Errno = 15862\n\tSTORE_ERROR_PENDING_COM_TRANSACTION                                       syscall.Errno = 15863\n\tSTORE_ERROR_LICENSE_REVOKED                                               syscall.Errno = 15864\n\tSEVERITY_SUCCESS                                                          syscall.Errno = 0\n\tSEVERITY_ERROR                                                            syscall.Errno = 1\n\tFACILITY_NT_BIT                                                                         = 0x10000000\n\tE_NOT_SET                                                                               = ERROR_NOT_FOUND\n\tE_NOT_VALID_STATE                                                                       = ERROR_INVALID_STATE\n\tE_NOT_SUFFICIENT_BUFFER                                                                 = ERROR_INSUFFICIENT_BUFFER\n\tE_TIME_SENSITIVE_THREAD                                                                 = ERROR_TIME_SENSITIVE_THREAD\n\tE_NO_TASK_QUEUE                                                                         = ERROR_NO_TASK_QUEUE\n\tNOERROR                                                                   syscall.Errno = 0\n\tE_UNEXPECTED                                                              Handle        = 0x8000FFFF\n\tE_NOTIMPL                                                                 Handle        = 0x80004001\n\tE_OUTOFMEMORY                                                             Handle        = 0x8007000E\n\tE_INVALIDARG                                                              Handle        = 0x80070057\n\tE_NOINTERFACE                                                             Handle        = 0x80004002\n\tE_POINTER                                                                 Handle        = 0x80004003\n\tE_HANDLE                                                                  Handle        = 0x80070006\n\tE_ABORT                                                                   Handle        = 0x80004004\n\tE_FAIL                                                                    Handle        = 0x80004005\n\tE_ACCESSDENIED                                                            Handle        = 0x80070005\n\tE_PENDING                                                                 Handle        = 0x8000000A\n\tE_BOUNDS                                                                  Handle        = 0x8000000B\n\tE_CHANGED_STATE                                                           Handle        = 0x8000000C\n\tE_ILLEGAL_STATE_CHANGE                                                    Handle        = 0x8000000D\n\tE_ILLEGAL_METHOD_CALL                                                     Handle        = 0x8000000E\n\tRO_E_METADATA_NAME_NOT_FOUND                                              Handle        = 0x8000000F\n\tRO_E_METADATA_NAME_IS_NAMESPACE                                           Handle        = 0x80000010\n\tRO_E_METADATA_INVALID_TYPE_FORMAT                                         Handle        = 0x80000011\n\tRO_E_INVALID_METADATA_FILE                                                Handle        = 0x80000012\n\tRO_E_CLOSED                                                               Handle        = 0x80000013\n\tRO_E_EXCLUSIVE_WRITE                                                      Handle        = 0x80000014\n\tRO_E_CHANGE_NOTIFICATION_IN_PROGRESS                                      Handle        = 0x80000015\n\tRO_E_ERROR_STRING_NOT_FOUND                                               Handle        = 0x80000016\n\tE_STRING_NOT_NULL_TERMINATED                                              Handle        = 0x80000017\n\tE_ILLEGAL_DELEGATE_ASSIGNMENT                                             Handle        = 0x80000018\n\tE_ASYNC_OPERATION_NOT_STARTED                                             Handle        = 0x80000019\n\tE_APPLICATION_EXITING                                                     Handle        = 0x8000001A\n\tE_APPLICATION_VIEW_EXITING                                                Handle        = 0x8000001B\n\tRO_E_MUST_BE_AGILE                                                        Handle        = 0x8000001C\n\tRO_E_UNSUPPORTED_FROM_MTA                                                 Handle        = 0x8000001D\n\tRO_E_COMMITTED                                                            Handle        = 0x8000001E\n\tRO_E_BLOCKED_CROSS_ASTA_CALL                                              Handle        = 0x8000001F\n\tRO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER                                    Handle        = 0x80000020\n\tRO_E_CANNOT_ACTIVATE_UNIVERSAL_APPLICATION_SERVER                         Handle        = 0x80000021\n\tCO_E_INIT_TLS                                                             Handle        = 0x80004006\n\tCO_E_INIT_SHARED_ALLOCATOR                                                Handle        = 0x80004007\n\tCO_E_INIT_MEMORY_ALLOCATOR                                                Handle        = 0x80004008\n\tCO_E_INIT_CLASS_CACHE                                                     Handle        = 0x80004009\n\tCO_E_INIT_RPC_CHANNEL                                                     Handle        = 0x8000400A\n\tCO_E_INIT_TLS_SET_CHANNEL_CONTROL                                         Handle        = 0x8000400B\n\tCO_E_INIT_TLS_CHANNEL_CONTROL                                             Handle        = 0x8000400C\n\tCO_E_INIT_UNACCEPTED_USER_ALLOCATOR                                       Handle        = 0x8000400D\n\tCO_E_INIT_SCM_MUTEX_EXISTS                                                Handle        = 0x8000400E\n\tCO_E_INIT_SCM_FILE_MAPPING_EXISTS                                         Handle        = 0x8000400F\n\tCO_E_INIT_SCM_MAP_VIEW_OF_FILE                                            Handle        = 0x80004010\n\tCO_E_INIT_SCM_EXEC_FAILURE                                                Handle        = 0x80004011\n\tCO_E_INIT_ONLY_SINGLE_THREADED                                            Handle        = 0x80004012\n\tCO_E_CANT_REMOTE                                                          Handle        = 0x80004013\n\tCO_E_BAD_SERVER_NAME                                                      Handle        = 0x80004014\n\tCO_E_WRONG_SERVER_IDENTITY                                                Handle        = 0x80004015\n\tCO_E_OLE1DDE_DISABLED                                                     Handle        = 0x80004016\n\tCO_E_RUNAS_SYNTAX                                                         Handle        = 0x80004017\n\tCO_E_CREATEPROCESS_FAILURE                                                Handle        = 0x80004018\n\tCO_E_RUNAS_CREATEPROCESS_FAILURE                                          Handle        = 0x80004019\n\tCO_E_RUNAS_LOGON_FAILURE                                                  Handle        = 0x8000401A\n\tCO_E_LAUNCH_PERMSSION_DENIED                                              Handle        = 0x8000401B\n\tCO_E_START_SERVICE_FAILURE                                                Handle        = 0x8000401C\n\tCO_E_REMOTE_COMMUNICATION_FAILURE                                         Handle        = 0x8000401D\n\tCO_E_SERVER_START_TIMEOUT                                                 Handle        = 0x8000401E\n\tCO_E_CLSREG_INCONSISTENT                                                  Handle        = 0x8000401F\n\tCO_E_IIDREG_INCONSISTENT                                                  Handle        = 0x80004020\n\tCO_E_NOT_SUPPORTED                                                        Handle        = 0x80004021\n\tCO_E_RELOAD_DLL                                                           Handle        = 0x80004022\n\tCO_E_MSI_ERROR                                                            Handle        = 0x80004023\n\tCO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT                             Handle        = 0x80004024\n\tCO_E_SERVER_PAUSED                                                        Handle        = 0x80004025\n\tCO_E_SERVER_NOT_PAUSED                                                    Handle        = 0x80004026\n\tCO_E_CLASS_DISABLED                                                       Handle        = 0x80004027\n\tCO_E_CLRNOTAVAILABLE                                                      Handle        = 0x80004028\n\tCO_E_ASYNC_WORK_REJECTED                                                  Handle        = 0x80004029\n\tCO_E_SERVER_INIT_TIMEOUT                                                  Handle        = 0x8000402A\n\tCO_E_NO_SECCTX_IN_ACTIVATE                                                Handle        = 0x8000402B\n\tCO_E_TRACKER_CONFIG                                                       Handle        = 0x80004030\n\tCO_E_THREADPOOL_CONFIG                                                    Handle        = 0x80004031\n\tCO_E_SXS_CONFIG                                                           Handle        = 0x80004032\n\tCO_E_MALFORMED_SPN                                                        Handle        = 0x80004033\n\tCO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN                         Handle        = 0x80004034\n\tCO_E_PREMATURE_STUB_RUNDOWN                                               Handle        = 0x80004035\n\tS_OK                                                                      Handle        = 0\n\tS_FALSE                                                                   Handle        = 1\n\tOLE_E_FIRST                                                               Handle        = 0x80040000\n\tOLE_E_LAST                                                                Handle        = 0x800400FF\n\tOLE_S_FIRST                                                               Handle        = 0x00040000\n\tOLE_S_LAST                                                                Handle        = 0x000400FF\n\tOLE_E_OLEVERB                                                             Handle        = 0x80040000\n\tOLE_E_ADVF                                                                Handle        = 0x80040001\n\tOLE_E_ENUM_NOMORE                                                         Handle        = 0x80040002\n\tOLE_E_ADVISENOTSUPPORTED                                                  Handle        = 0x80040003\n\tOLE_E_NOCONNECTION                                                        Handle        = 0x80040004\n\tOLE_E_NOTRUNNING                                                          Handle        = 0x80040005\n\tOLE_E_NOCACHE                                                             Handle        = 0x80040006\n\tOLE_E_BLANK                                                               Handle        = 0x80040007\n\tOLE_E_CLASSDIFF                                                           Handle        = 0x80040008\n\tOLE_E_CANT_GETMONIKER                                                     Handle        = 0x80040009\n\tOLE_E_CANT_BINDTOSOURCE                                                   Handle        = 0x8004000A\n\tOLE_E_STATIC                                                              Handle        = 0x8004000B\n\tOLE_E_PROMPTSAVECANCELLED                                                 Handle        = 0x8004000C\n\tOLE_E_INVALIDRECT                                                         Handle        = 0x8004000D\n\tOLE_E_WRONGCOMPOBJ                                                        Handle        = 0x8004000E\n\tOLE_E_INVALIDHWND                                                         Handle        = 0x8004000F\n\tOLE_E_NOT_INPLACEACTIVE                                                   Handle        = 0x80040010\n\tOLE_E_CANTCONVERT                                                         Handle        = 0x80040011\n\tOLE_E_NOSTORAGE                                                           Handle        = 0x80040012\n\tDV_E_FORMATETC                                                            Handle        = 0x80040064\n\tDV_E_DVTARGETDEVICE                                                       Handle        = 0x80040065\n\tDV_E_STGMEDIUM                                                            Handle        = 0x80040066\n\tDV_E_STATDATA                                                             Handle        = 0x80040067\n\tDV_E_LINDEX                                                               Handle        = 0x80040068\n\tDV_E_TYMED                                                                Handle        = 0x80040069\n\tDV_E_CLIPFORMAT                                                           Handle        = 0x8004006A\n\tDV_E_DVASPECT                                                             Handle        = 0x8004006B\n\tDV_E_DVTARGETDEVICE_SIZE                                                  Handle        = 0x8004006C\n\tDV_E_NOIVIEWOBJECT                                                        Handle        = 0x8004006D\n\tDRAGDROP_E_FIRST                                                          syscall.Errno = 0x80040100\n\tDRAGDROP_E_LAST                                                           syscall.Errno = 0x8004010F\n\tDRAGDROP_S_FIRST                                                          syscall.Errno = 0x00040100\n\tDRAGDROP_S_LAST                                                           syscall.Errno = 0x0004010F\n\tDRAGDROP_E_NOTREGISTERED                                                  Handle        = 0x80040100\n\tDRAGDROP_E_ALREADYREGISTERED                                              Handle        = 0x80040101\n\tDRAGDROP_E_INVALIDHWND                                                    Handle        = 0x80040102\n\tDRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED                                      Handle        = 0x80040103\n\tCLASSFACTORY_E_FIRST                                                      syscall.Errno = 0x80040110\n\tCLASSFACTORY_E_LAST                                                       syscall.Errno = 0x8004011F\n\tCLASSFACTORY_S_FIRST                                                      syscall.Errno = 0x00040110\n\tCLASSFACTORY_S_LAST                                                       syscall.Errno = 0x0004011F\n\tCLASS_E_NOAGGREGATION                                                     Handle        = 0x80040110\n\tCLASS_E_CLASSNOTAVAILABLE                                                 Handle        = 0x80040111\n\tCLASS_E_NOTLICENSED                                                       Handle        = 0x80040112\n\tMARSHAL_E_FIRST                                                           syscall.Errno = 0x80040120\n\tMARSHAL_E_LAST                                                            syscall.Errno = 0x8004012F\n\tMARSHAL_S_FIRST                                                           syscall.Errno = 0x00040120\n\tMARSHAL_S_LAST                                                            syscall.Errno = 0x0004012F\n\tDATA_E_FIRST                                                              syscall.Errno = 0x80040130\n\tDATA_E_LAST                                                               syscall.Errno = 0x8004013F\n\tDATA_S_FIRST                                                              syscall.Errno = 0x00040130\n\tDATA_S_LAST                                                               syscall.Errno = 0x0004013F\n\tVIEW_E_FIRST                                                              syscall.Errno = 0x80040140\n\tVIEW_E_LAST                                                               syscall.Errno = 0x8004014F\n\tVIEW_S_FIRST                                                              syscall.Errno = 0x00040140\n\tVIEW_S_LAST                                                               syscall.Errno = 0x0004014F\n\tVIEW_E_DRAW                                                               Handle        = 0x80040140\n\tREGDB_E_FIRST                                                             syscall.Errno = 0x80040150\n\tREGDB_E_LAST                                                              syscall.Errno = 0x8004015F\n\tREGDB_S_FIRST                                                             syscall.Errno = 0x00040150\n\tREGDB_S_LAST                                                              syscall.Errno = 0x0004015F\n\tREGDB_E_READREGDB                                                         Handle        = 0x80040150\n\tREGDB_E_WRITEREGDB                                                        Handle        = 0x80040151\n\tREGDB_E_KEYMISSING                                                        Handle        = 0x80040152\n\tREGDB_E_INVALIDVALUE                                                      Handle        = 0x80040153\n\tREGDB_E_CLASSNOTREG                                                       Handle        = 0x80040154\n\tREGDB_E_IIDNOTREG                                                         Handle        = 0x80040155\n\tREGDB_E_BADTHREADINGMODEL                                                 Handle        = 0x80040156\n\tREGDB_E_PACKAGEPOLICYVIOLATION                                            Handle        = 0x80040157\n\tCAT_E_FIRST                                                               syscall.Errno = 0x80040160\n\tCAT_E_LAST                                                                syscall.Errno = 0x80040161\n\tCAT_E_CATIDNOEXIST                                                        Handle        = 0x80040160\n\tCAT_E_NODESCRIPTION                                                       Handle        = 0x80040161\n\tCS_E_FIRST                                                                syscall.Errno = 0x80040164\n\tCS_E_LAST                                                                 syscall.Errno = 0x8004016F\n\tCS_E_PACKAGE_NOTFOUND                                                     Handle        = 0x80040164\n\tCS_E_NOT_DELETABLE                                                        Handle        = 0x80040165\n\tCS_E_CLASS_NOTFOUND                                                       Handle        = 0x80040166\n\tCS_E_INVALID_VERSION                                                      Handle        = 0x80040167\n\tCS_E_NO_CLASSSTORE                                                        Handle        = 0x80040168\n\tCS_E_OBJECT_NOTFOUND                                                      Handle        = 0x80040169\n\tCS_E_OBJECT_ALREADY_EXISTS                                                Handle        = 0x8004016A\n\tCS_E_INVALID_PATH                                                         Handle        = 0x8004016B\n\tCS_E_NETWORK_ERROR                                                        Handle        = 0x8004016C\n\tCS_E_ADMIN_LIMIT_EXCEEDED                                                 Handle        = 0x8004016D\n\tCS_E_SCHEMA_MISMATCH                                                      Handle        = 0x8004016E\n\tCS_E_INTERNAL_ERROR                                                       Handle        = 0x8004016F\n\tCACHE_E_FIRST                                                             syscall.Errno = 0x80040170\n\tCACHE_E_LAST                                                              syscall.Errno = 0x8004017F\n\tCACHE_S_FIRST                                                             syscall.Errno = 0x00040170\n\tCACHE_S_LAST                                                              syscall.Errno = 0x0004017F\n\tCACHE_E_NOCACHE_UPDATED                                                   Handle        = 0x80040170\n\tOLEOBJ_E_FIRST                                                            syscall.Errno = 0x80040180\n\tOLEOBJ_E_LAST                                                             syscall.Errno = 0x8004018F\n\tOLEOBJ_S_FIRST                                                            syscall.Errno = 0x00040180\n\tOLEOBJ_S_LAST                                                             syscall.Errno = 0x0004018F\n\tOLEOBJ_E_NOVERBS                                                          Handle        = 0x80040180\n\tOLEOBJ_E_INVALIDVERB                                                      Handle        = 0x80040181\n\tCLIENTSITE_E_FIRST                                                        syscall.Errno = 0x80040190\n\tCLIENTSITE_E_LAST                                                         syscall.Errno = 0x8004019F\n\tCLIENTSITE_S_FIRST                                                        syscall.Errno = 0x00040190\n\tCLIENTSITE_S_LAST                                                         syscall.Errno = 0x0004019F\n\tINPLACE_E_NOTUNDOABLE                                                     Handle        = 0x800401A0\n\tINPLACE_E_NOTOOLSPACE                                                     Handle        = 0x800401A1\n\tINPLACE_E_FIRST                                                           syscall.Errno = 0x800401A0\n\tINPLACE_E_LAST                                                            syscall.Errno = 0x800401AF\n\tINPLACE_S_FIRST                                                           syscall.Errno = 0x000401A0\n\tINPLACE_S_LAST                                                            syscall.Errno = 0x000401AF\n\tENUM_E_FIRST                                                              syscall.Errno = 0x800401B0\n\tENUM_E_LAST                                                               syscall.Errno = 0x800401BF\n\tENUM_S_FIRST                                                              syscall.Errno = 0x000401B0\n\tENUM_S_LAST                                                               syscall.Errno = 0x000401BF\n\tCONVERT10_E_FIRST                                                         syscall.Errno = 0x800401C0\n\tCONVERT10_E_LAST                                                          syscall.Errno = 0x800401CF\n\tCONVERT10_S_FIRST                                                         syscall.Errno = 0x000401C0\n\tCONVERT10_S_LAST                                                          syscall.Errno = 0x000401CF\n\tCONVERT10_E_OLESTREAM_GET                                                 Handle        = 0x800401C0\n\tCONVERT10_E_OLESTREAM_PUT                                                 Handle        = 0x800401C1\n\tCONVERT10_E_OLESTREAM_FMT                                                 Handle        = 0x800401C2\n\tCONVERT10_E_OLESTREAM_BITMAP_TO_DIB                                       Handle        = 0x800401C3\n\tCONVERT10_E_STG_FMT                                                       Handle        = 0x800401C4\n\tCONVERT10_E_STG_NO_STD_STREAM                                             Handle        = 0x800401C5\n\tCONVERT10_E_STG_DIB_TO_BITMAP                                             Handle        = 0x800401C6\n\tCLIPBRD_E_FIRST                                                           syscall.Errno = 0x800401D0\n\tCLIPBRD_E_LAST                                                            syscall.Errno = 0x800401DF\n\tCLIPBRD_S_FIRST                                                           syscall.Errno = 0x000401D0\n\tCLIPBRD_S_LAST                                                            syscall.Errno = 0x000401DF\n\tCLIPBRD_E_CANT_OPEN                                                       Handle        = 0x800401D0\n\tCLIPBRD_E_CANT_EMPTY                                                      Handle        = 0x800401D1\n\tCLIPBRD_E_CANT_SET                                                        Handle        = 0x800401D2\n\tCLIPBRD_E_BAD_DATA                                                        Handle        = 0x800401D3\n\tCLIPBRD_E_CANT_CLOSE                                                      Handle        = 0x800401D4\n\tMK_E_FIRST                                                                syscall.Errno = 0x800401E0\n\tMK_E_LAST                                                                 syscall.Errno = 0x800401EF\n\tMK_S_FIRST                                                                syscall.Errno = 0x000401E0\n\tMK_S_LAST                                                                 syscall.Errno = 0x000401EF\n\tMK_E_CONNECTMANUALLY                                                      Handle        = 0x800401E0\n\tMK_E_EXCEEDEDDEADLINE                                                     Handle        = 0x800401E1\n\tMK_E_NEEDGENERIC                                                          Handle        = 0x800401E2\n\tMK_E_UNAVAILABLE                                                          Handle        = 0x800401E3\n\tMK_E_SYNTAX                                                               Handle        = 0x800401E4\n\tMK_E_NOOBJECT                                                             Handle        = 0x800401E5\n\tMK_E_INVALIDEXTENSION                                                     Handle        = 0x800401E6\n\tMK_E_INTERMEDIATEINTERFACENOTSUPPORTED                                    Handle        = 0x800401E7\n\tMK_E_NOTBINDABLE                                                          Handle        = 0x800401E8\n\tMK_E_NOTBOUND                                                             Handle        = 0x800401E9\n\tMK_E_CANTOPENFILE                                                         Handle        = 0x800401EA\n\tMK_E_MUSTBOTHERUSER                                                       Handle        = 0x800401EB\n\tMK_E_NOINVERSE                                                            Handle        = 0x800401EC\n\tMK_E_NOSTORAGE                                                            Handle        = 0x800401ED\n\tMK_E_NOPREFIX                                                             Handle        = 0x800401EE\n\tMK_E_ENUMERATION_FAILED                                                   Handle        = 0x800401EF\n\tCO_E_FIRST                                                                syscall.Errno = 0x800401F0\n\tCO_E_LAST                                                                 syscall.Errno = 0x800401FF\n\tCO_S_FIRST                                                                syscall.Errno = 0x000401F0\n\tCO_S_LAST                                                                 syscall.Errno = 0x000401FF\n\tCO_E_NOTINITIALIZED                                                       Handle        = 0x800401F0\n\tCO_E_ALREADYINITIALIZED                                                   Handle        = 0x800401F1\n\tCO_E_CANTDETERMINECLASS                                                   Handle        = 0x800401F2\n\tCO_E_CLASSSTRING                                                          Handle        = 0x800401F3\n\tCO_E_IIDSTRING                                                            Handle        = 0x800401F4\n\tCO_E_APPNOTFOUND                                                          Handle        = 0x800401F5\n\tCO_E_APPSINGLEUSE                                                         Handle        = 0x800401F6\n\tCO_E_ERRORINAPP                                                           Handle        = 0x800401F7\n\tCO_E_DLLNOTFOUND                                                          Handle        = 0x800401F8\n\tCO_E_ERRORINDLL                                                           Handle        = 0x800401F9\n\tCO_E_WRONGOSFORAPP                                                        Handle        = 0x800401FA\n\tCO_E_OBJNOTREG                                                            Handle        = 0x800401FB\n\tCO_E_OBJISREG                                                             Handle        = 0x800401FC\n\tCO_E_OBJNOTCONNECTED                                                      Handle        = 0x800401FD\n\tCO_E_APPDIDNTREG                                                          Handle        = 0x800401FE\n\tCO_E_RELEASED                                                             Handle        = 0x800401FF\n\tEVENT_E_FIRST                                                             syscall.Errno = 0x80040200\n\tEVENT_E_LAST                                                              syscall.Errno = 0x8004021F\n\tEVENT_S_FIRST                                                             syscall.Errno = 0x00040200\n\tEVENT_S_LAST                                                              syscall.Errno = 0x0004021F\n\tEVENT_S_SOME_SUBSCRIBERS_FAILED                                           Handle        = 0x00040200\n\tEVENT_E_ALL_SUBSCRIBERS_FAILED                                            Handle        = 0x80040201\n\tEVENT_S_NOSUBSCRIBERS                                                     Handle        = 0x00040202\n\tEVENT_E_QUERYSYNTAX                                                       Handle        = 0x80040203\n\tEVENT_E_QUERYFIELD                                                        Handle        = 0x80040204\n\tEVENT_E_INTERNALEXCEPTION                                                 Handle        = 0x80040205\n\tEVENT_E_INTERNALERROR                                                     Handle        = 0x80040206\n\tEVENT_E_INVALID_PER_USER_SID                                              Handle        = 0x80040207\n\tEVENT_E_USER_EXCEPTION                                                    Handle        = 0x80040208\n\tEVENT_E_TOO_MANY_METHODS                                                  Handle        = 0x80040209\n\tEVENT_E_MISSING_EVENTCLASS                                                Handle        = 0x8004020A\n\tEVENT_E_NOT_ALL_REMOVED                                                   Handle        = 0x8004020B\n\tEVENT_E_COMPLUS_NOT_INSTALLED                                             Handle        = 0x8004020C\n\tEVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT                         Handle        = 0x8004020D\n\tEVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT                           Handle        = 0x8004020E\n\tEVENT_E_INVALID_EVENT_CLASS_PARTITION                                     Handle        = 0x8004020F\n\tEVENT_E_PER_USER_SID_NOT_LOGGED_ON                                        Handle        = 0x80040210\n\tTPC_E_INVALID_PROPERTY                                                    Handle        = 0x80040241\n\tTPC_E_NO_DEFAULT_TABLET                                                   Handle        = 0x80040212\n\tTPC_E_UNKNOWN_PROPERTY                                                    Handle        = 0x8004021B\n\tTPC_E_INVALID_INPUT_RECT                                                  Handle        = 0x80040219\n\tTPC_E_INVALID_STROKE                                                      Handle        = 0x80040222\n\tTPC_E_INITIALIZE_FAIL                                                     Handle        = 0x80040223\n\tTPC_E_NOT_RELEVANT                                                        Handle        = 0x80040232\n\tTPC_E_INVALID_PACKET_DESCRIPTION                                          Handle        = 0x80040233\n\tTPC_E_RECOGNIZER_NOT_REGISTERED                                           Handle        = 0x80040235\n\tTPC_E_INVALID_RIGHTS                                                      Handle        = 0x80040236\n\tTPC_E_OUT_OF_ORDER_CALL                                                   Handle        = 0x80040237\n\tTPC_E_QUEUE_FULL                                                          Handle        = 0x80040238\n\tTPC_E_INVALID_CONFIGURATION                                               Handle        = 0x80040239\n\tTPC_E_INVALID_DATA_FROM_RECOGNIZER                                        Handle        = 0x8004023A\n\tTPC_S_TRUNCATED                                                           Handle        = 0x00040252\n\tTPC_S_INTERRUPTED                                                         Handle        = 0x00040253\n\tTPC_S_NO_DATA_TO_PROCESS                                                  Handle        = 0x00040254\n\tXACT_E_FIRST                                                              syscall.Errno = 0x8004D000\n\tXACT_E_LAST                                                               syscall.Errno = 0x8004D02B\n\tXACT_S_FIRST                                                              syscall.Errno = 0x0004D000\n\tXACT_S_LAST                                                               syscall.Errno = 0x0004D010\n\tXACT_E_ALREADYOTHERSINGLEPHASE                                            Handle        = 0x8004D000\n\tXACT_E_CANTRETAIN                                                         Handle        = 0x8004D001\n\tXACT_E_COMMITFAILED                                                       Handle        = 0x8004D002\n\tXACT_E_COMMITPREVENTED                                                    Handle        = 0x8004D003\n\tXACT_E_HEURISTICABORT                                                     Handle        = 0x8004D004\n\tXACT_E_HEURISTICCOMMIT                                                    Handle        = 0x8004D005\n\tXACT_E_HEURISTICDAMAGE                                                    Handle        = 0x8004D006\n\tXACT_E_HEURISTICDANGER                                                    Handle        = 0x8004D007\n\tXACT_E_ISOLATIONLEVEL                                                     Handle        = 0x8004D008\n\tXACT_E_NOASYNC                                                            Handle        = 0x8004D009\n\tXACT_E_NOENLIST                                                           Handle        = 0x8004D00A\n\tXACT_E_NOISORETAIN                                                        Handle        = 0x8004D00B\n\tXACT_E_NORESOURCE                                                         Handle        = 0x8004D00C\n\tXACT_E_NOTCURRENT                                                         Handle        = 0x8004D00D\n\tXACT_E_NOTRANSACTION                                                      Handle        = 0x8004D00E\n\tXACT_E_NOTSUPPORTED                                                       Handle        = 0x8004D00F\n\tXACT_E_UNKNOWNRMGRID                                                      Handle        = 0x8004D010\n\tXACT_E_WRONGSTATE                                                         Handle        = 0x8004D011\n\tXACT_E_WRONGUOW                                                           Handle        = 0x8004D012\n\tXACT_E_XTIONEXISTS                                                        Handle        = 0x8004D013\n\tXACT_E_NOIMPORTOBJECT                                                     Handle        = 0x8004D014\n\tXACT_E_INVALIDCOOKIE                                                      Handle        = 0x8004D015\n\tXACT_E_INDOUBT                                                            Handle        = 0x8004D016\n\tXACT_E_NOTIMEOUT                                                          Handle        = 0x8004D017\n\tXACT_E_ALREADYINPROGRESS                                                  Handle        = 0x8004D018\n\tXACT_E_ABORTED                                                            Handle        = 0x8004D019\n\tXACT_E_LOGFULL                                                            Handle        = 0x8004D01A\n\tXACT_E_TMNOTAVAILABLE                                                     Handle        = 0x8004D01B\n\tXACT_E_CONNECTION_DOWN                                                    Handle        = 0x8004D01C\n\tXACT_E_CONNECTION_DENIED                                                  Handle        = 0x8004D01D\n\tXACT_E_REENLISTTIMEOUT                                                    Handle        = 0x8004D01E\n\tXACT_E_TIP_CONNECT_FAILED                                                 Handle        = 0x8004D01F\n\tXACT_E_TIP_PROTOCOL_ERROR                                                 Handle        = 0x8004D020\n\tXACT_E_TIP_PULL_FAILED                                                    Handle        = 0x8004D021\n\tXACT_E_DEST_TMNOTAVAILABLE                                                Handle        = 0x8004D022\n\tXACT_E_TIP_DISABLED                                                       Handle        = 0x8004D023\n\tXACT_E_NETWORK_TX_DISABLED                                                Handle        = 0x8004D024\n\tXACT_E_PARTNER_NETWORK_TX_DISABLED                                        Handle        = 0x8004D025\n\tXACT_E_XA_TX_DISABLED                                                     Handle        = 0x8004D026\n\tXACT_E_UNABLE_TO_READ_DTC_CONFIG                                          Handle        = 0x8004D027\n\tXACT_E_UNABLE_TO_LOAD_DTC_PROXY                                           Handle        = 0x8004D028\n\tXACT_E_ABORTING                                                           Handle        = 0x8004D029\n\tXACT_E_PUSH_COMM_FAILURE                                                  Handle        = 0x8004D02A\n\tXACT_E_PULL_COMM_FAILURE                                                  Handle        = 0x8004D02B\n\tXACT_E_LU_TX_DISABLED                                                     Handle        = 0x8004D02C\n\tXACT_E_CLERKNOTFOUND                                                      Handle        = 0x8004D080\n\tXACT_E_CLERKEXISTS                                                        Handle        = 0x8004D081\n\tXACT_E_RECOVERYINPROGRESS                                                 Handle        = 0x8004D082\n\tXACT_E_TRANSACTIONCLOSED                                                  Handle        = 0x8004D083\n\tXACT_E_INVALIDLSN                                                         Handle        = 0x8004D084\n\tXACT_E_REPLAYREQUEST                                                      Handle        = 0x8004D085\n\tXACT_S_ASYNC                                                              Handle        = 0x0004D000\n\tXACT_S_DEFECT                                                             Handle        = 0x0004D001\n\tXACT_S_READONLY                                                           Handle        = 0x0004D002\n\tXACT_S_SOMENORETAIN                                                       Handle        = 0x0004D003\n\tXACT_S_OKINFORM                                                           Handle        = 0x0004D004\n\tXACT_S_MADECHANGESCONTENT                                                 Handle        = 0x0004D005\n\tXACT_S_MADECHANGESINFORM                                                  Handle        = 0x0004D006\n\tXACT_S_ALLNORETAIN                                                        Handle        = 0x0004D007\n\tXACT_S_ABORTING                                                           Handle        = 0x0004D008\n\tXACT_S_SINGLEPHASE                                                        Handle        = 0x0004D009\n\tXACT_S_LOCALLY_OK                                                         Handle        = 0x0004D00A\n\tXACT_S_LASTRESOURCEMANAGER                                                Handle        = 0x0004D010\n\tCONTEXT_E_FIRST                                                           syscall.Errno = 0x8004E000\n\tCONTEXT_E_LAST                                                            syscall.Errno = 0x8004E02F\n\tCONTEXT_S_FIRST                                                           syscall.Errno = 0x0004E000\n\tCONTEXT_S_LAST                                                            syscall.Errno = 0x0004E02F\n\tCONTEXT_E_ABORTED                                                         Handle        = 0x8004E002\n\tCONTEXT_E_ABORTING                                                        Handle        = 0x8004E003\n\tCONTEXT_E_NOCONTEXT                                                       Handle        = 0x8004E004\n\tCONTEXT_E_WOULD_DEADLOCK                                                  Handle        = 0x8004E005\n\tCONTEXT_E_SYNCH_TIMEOUT                                                   Handle        = 0x8004E006\n\tCONTEXT_E_OLDREF                                                          Handle        = 0x8004E007\n\tCONTEXT_E_ROLENOTFOUND                                                    Handle        = 0x8004E00C\n\tCONTEXT_E_TMNOTAVAILABLE                                                  Handle        = 0x8004E00F\n\tCO_E_ACTIVATIONFAILED                                                     Handle        = 0x8004E021\n\tCO_E_ACTIVATIONFAILED_EVENTLOGGED                                         Handle        = 0x8004E022\n\tCO_E_ACTIVATIONFAILED_CATALOGERROR                                        Handle        = 0x8004E023\n\tCO_E_ACTIVATIONFAILED_TIMEOUT                                             Handle        = 0x8004E024\n\tCO_E_INITIALIZATIONFAILED                                                 Handle        = 0x8004E025\n\tCONTEXT_E_NOJIT                                                           Handle        = 0x8004E026\n\tCONTEXT_E_NOTRANSACTION                                                   Handle        = 0x8004E027\n\tCO_E_THREADINGMODEL_CHANGED                                               Handle        = 0x8004E028\n\tCO_E_NOIISINTRINSICS                                                      Handle        = 0x8004E029\n\tCO_E_NOCOOKIES                                                            Handle        = 0x8004E02A\n\tCO_E_DBERROR                                                              Handle        = 0x8004E02B\n\tCO_E_NOTPOOLED                                                            Handle        = 0x8004E02C\n\tCO_E_NOTCONSTRUCTED                                                       Handle        = 0x8004E02D\n\tCO_E_NOSYNCHRONIZATION                                                    Handle        = 0x8004E02E\n\tCO_E_ISOLEVELMISMATCH                                                     Handle        = 0x8004E02F\n\tCO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED                                     Handle        = 0x8004E030\n\tCO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED                                    Handle        = 0x8004E031\n\tOLE_S_USEREG                                                              Handle        = 0x00040000\n\tOLE_S_STATIC                                                              Handle        = 0x00040001\n\tOLE_S_MAC_CLIPFORMAT                                                      Handle        = 0x00040002\n\tDRAGDROP_S_DROP                                                           Handle        = 0x00040100\n\tDRAGDROP_S_CANCEL                                                         Handle        = 0x00040101\n\tDRAGDROP_S_USEDEFAULTCURSORS                                              Handle        = 0x00040102\n\tDATA_S_SAMEFORMATETC                                                      Handle        = 0x00040130\n\tVIEW_S_ALREADY_FROZEN                                                     Handle        = 0x00040140\n\tCACHE_S_FORMATETC_NOTSUPPORTED                                            Handle        = 0x00040170\n\tCACHE_S_SAMECACHE                                                         Handle        = 0x00040171\n\tCACHE_S_SOMECACHES_NOTUPDATED                                             Handle        = 0x00040172\n\tOLEOBJ_S_INVALIDVERB                                                      Handle        = 0x00040180\n\tOLEOBJ_S_CANNOT_DOVERB_NOW                                                Handle        = 0x00040181\n\tOLEOBJ_S_INVALIDHWND                                                      Handle        = 0x00040182\n\tINPLACE_S_TRUNCATED                                                       Handle        = 0x000401A0\n\tCONVERT10_S_NO_PRESENTATION                                               Handle        = 0x000401C0\n\tMK_S_REDUCED_TO_SELF                                                      Handle        = 0x000401E2\n\tMK_S_ME                                                                   Handle        = 0x000401E4\n\tMK_S_HIM                                                                  Handle        = 0x000401E5\n\tMK_S_US                                                                   Handle        = 0x000401E6\n\tMK_S_MONIKERALREADYREGISTERED                                             Handle        = 0x000401E7\n\tSCHED_S_TASK_READY                                                        Handle        = 0x00041300\n\tSCHED_S_TASK_RUNNING                                                      Handle        = 0x00041301\n\tSCHED_S_TASK_DISABLED                                                     Handle        = 0x00041302\n\tSCHED_S_TASK_HAS_NOT_RUN                                                  Handle        = 0x00041303\n\tSCHED_S_TASK_NO_MORE_RUNS                                                 Handle        = 0x00041304\n\tSCHED_S_TASK_NOT_SCHEDULED                                                Handle        = 0x00041305\n\tSCHED_S_TASK_TERMINATED                                                   Handle        = 0x00041306\n\tSCHED_S_TASK_NO_VALID_TRIGGERS                                            Handle        = 0x00041307\n\tSCHED_S_EVENT_TRIGGER                                                     Handle        = 0x00041308\n\tSCHED_E_TRIGGER_NOT_FOUND                                                 Handle        = 0x80041309\n\tSCHED_E_TASK_NOT_READY                                                    Handle        = 0x8004130A\n\tSCHED_E_TASK_NOT_RUNNING                                                  Handle        = 0x8004130B\n\tSCHED_E_SERVICE_NOT_INSTALLED                                             Handle        = 0x8004130C\n\tSCHED_E_CANNOT_OPEN_TASK                                                  Handle        = 0x8004130D\n\tSCHED_E_INVALID_TASK                                                      Handle        = 0x8004130E\n\tSCHED_E_ACCOUNT_INFORMATION_NOT_SET                                       Handle        = 0x8004130F\n\tSCHED_E_ACCOUNT_NAME_NOT_FOUND                                            Handle        = 0x80041310\n\tSCHED_E_ACCOUNT_DBASE_CORRUPT                                             Handle        = 0x80041311\n\tSCHED_E_NO_SECURITY_SERVICES                                              Handle        = 0x80041312\n\tSCHED_E_UNKNOWN_OBJECT_VERSION                                            Handle        = 0x80041313\n\tSCHED_E_UNSUPPORTED_ACCOUNT_OPTION                                        Handle        = 0x80041314\n\tSCHED_E_SERVICE_NOT_RUNNING                                               Handle        = 0x80041315\n\tSCHED_E_UNEXPECTEDNODE                                                    Handle        = 0x80041316\n\tSCHED_E_NAMESPACE                                                         Handle        = 0x80041317\n\tSCHED_E_INVALIDVALUE                                                      Handle        = 0x80041318\n\tSCHED_E_MISSINGNODE                                                       Handle        = 0x80041319\n\tSCHED_E_MALFORMEDXML                                                      Handle        = 0x8004131A\n\tSCHED_S_SOME_TRIGGERS_FAILED                                              Handle        = 0x0004131B\n\tSCHED_S_BATCH_LOGON_PROBLEM                                               Handle        = 0x0004131C\n\tSCHED_E_TOO_MANY_NODES                                                    Handle        = 0x8004131D\n\tSCHED_E_PAST_END_BOUNDARY                                                 Handle        = 0x8004131E\n\tSCHED_E_ALREADY_RUNNING                                                   Handle        = 0x8004131F\n\tSCHED_E_USER_NOT_LOGGED_ON                                                Handle        = 0x80041320\n\tSCHED_E_INVALID_TASK_HASH                                                 Handle        = 0x80041321\n\tSCHED_E_SERVICE_NOT_AVAILABLE                                             Handle        = 0x80041322\n\tSCHED_E_SERVICE_TOO_BUSY                                                  Handle        = 0x80041323\n\tSCHED_E_TASK_ATTEMPTED                                                    Handle        = 0x80041324\n\tSCHED_S_TASK_QUEUED                                                       Handle        = 0x00041325\n\tSCHED_E_TASK_DISABLED                                                     Handle        = 0x80041326\n\tSCHED_E_TASK_NOT_V1_COMPAT                                                Handle        = 0x80041327\n\tSCHED_E_START_ON_DEMAND                                                   Handle        = 0x80041328\n\tSCHED_E_TASK_NOT_UBPM_COMPAT                                              Handle        = 0x80041329\n\tSCHED_E_DEPRECATED_FEATURE_USED                                           Handle        = 0x80041330\n\tCO_E_CLASS_CREATE_FAILED                                                  Handle        = 0x80080001\n\tCO_E_SCM_ERROR                                                            Handle        = 0x80080002\n\tCO_E_SCM_RPC_FAILURE                                                      Handle        = 0x80080003\n\tCO_E_BAD_PATH                                                             Handle        = 0x80080004\n\tCO_E_SERVER_EXEC_FAILURE                                                  Handle        = 0x80080005\n\tCO_E_OBJSRV_RPC_FAILURE                                                   Handle        = 0x80080006\n\tMK_E_NO_NORMALIZED                                                        Handle        = 0x80080007\n\tCO_E_SERVER_STOPPING                                                      Handle        = 0x80080008\n\tMEM_E_INVALID_ROOT                                                        Handle        = 0x80080009\n\tMEM_E_INVALID_LINK                                                        Handle        = 0x80080010\n\tMEM_E_INVALID_SIZE                                                        Handle        = 0x80080011\n\tCO_S_NOTALLINTERFACES                                                     Handle        = 0x00080012\n\tCO_S_MACHINENAMENOTFOUND                                                  Handle        = 0x00080013\n\tCO_E_MISSING_DISPLAYNAME                                                  Handle        = 0x80080015\n\tCO_E_RUNAS_VALUE_MUST_BE_AAA                                              Handle        = 0x80080016\n\tCO_E_ELEVATION_DISABLED                                                   Handle        = 0x80080017\n\tAPPX_E_PACKAGING_INTERNAL                                                 Handle        = 0x80080200\n\tAPPX_E_INTERLEAVING_NOT_ALLOWED                                           Handle        = 0x80080201\n\tAPPX_E_RELATIONSHIPS_NOT_ALLOWED                                          Handle        = 0x80080202\n\tAPPX_E_MISSING_REQUIRED_FILE                                              Handle        = 0x80080203\n\tAPPX_E_INVALID_MANIFEST                                                   Handle        = 0x80080204\n\tAPPX_E_INVALID_BLOCKMAP                                                   Handle        = 0x80080205\n\tAPPX_E_CORRUPT_CONTENT                                                    Handle        = 0x80080206\n\tAPPX_E_BLOCK_HASH_INVALID                                                 Handle        = 0x80080207\n\tAPPX_E_REQUESTED_RANGE_TOO_LARGE                                          Handle        = 0x80080208\n\tAPPX_E_INVALID_SIP_CLIENT_DATA                                            Handle        = 0x80080209\n\tAPPX_E_INVALID_KEY_INFO                                                   Handle        = 0x8008020A\n\tAPPX_E_INVALID_CONTENTGROUPMAP                                            Handle        = 0x8008020B\n\tAPPX_E_INVALID_APPINSTALLER                                               Handle        = 0x8008020C\n\tAPPX_E_DELTA_BASELINE_VERSION_MISMATCH                                    Handle        = 0x8008020D\n\tAPPX_E_DELTA_PACKAGE_MISSING_FILE                                         Handle        = 0x8008020E\n\tAPPX_E_INVALID_DELTA_PACKAGE                                              Handle        = 0x8008020F\n\tAPPX_E_DELTA_APPENDED_PACKAGE_NOT_ALLOWED                                 Handle        = 0x80080210\n\tAPPX_E_INVALID_PACKAGING_LAYOUT                                           Handle        = 0x80080211\n\tAPPX_E_INVALID_PACKAGESIGNCONFIG                                          Handle        = 0x80080212\n\tAPPX_E_RESOURCESPRI_NOT_ALLOWED                                           Handle        = 0x80080213\n\tAPPX_E_FILE_COMPRESSION_MISMATCH                                          Handle        = 0x80080214\n\tAPPX_E_INVALID_PAYLOAD_PACKAGE_EXTENSION                                  Handle        = 0x80080215\n\tAPPX_E_INVALID_ENCRYPTION_EXCLUSION_FILE_LIST                             Handle        = 0x80080216\n\tBT_E_SPURIOUS_ACTIVATION                                                  Handle        = 0x80080300\n\tDISP_E_UNKNOWNINTERFACE                                                   Handle        = 0x80020001\n\tDISP_E_MEMBERNOTFOUND                                                     Handle        = 0x80020003\n\tDISP_E_PARAMNOTFOUND                                                      Handle        = 0x80020004\n\tDISP_E_TYPEMISMATCH                                                       Handle        = 0x80020005\n\tDISP_E_UNKNOWNNAME                                                        Handle        = 0x80020006\n\tDISP_E_NONAMEDARGS                                                        Handle        = 0x80020007\n\tDISP_E_BADVARTYPE                                                         Handle        = 0x80020008\n\tDISP_E_EXCEPTION                                                          Handle        = 0x80020009\n\tDISP_E_OVERFLOW                                                           Handle        = 0x8002000A\n\tDISP_E_BADINDEX                                                           Handle        = 0x8002000B\n\tDISP_E_UNKNOWNLCID                                                        Handle        = 0x8002000C\n\tDISP_E_ARRAYISLOCKED                                                      Handle        = 0x8002000D\n\tDISP_E_BADPARAMCOUNT                                                      Handle        = 0x8002000E\n\tDISP_E_PARAMNOTOPTIONAL                                                   Handle        = 0x8002000F\n\tDISP_E_BADCALLEE                                                          Handle        = 0x80020010\n\tDISP_E_NOTACOLLECTION                                                     Handle        = 0x80020011\n\tDISP_E_DIVBYZERO                                                          Handle        = 0x80020012\n\tDISP_E_BUFFERTOOSMALL                                                     Handle        = 0x80020013\n\tTYPE_E_BUFFERTOOSMALL                                                     Handle        = 0x80028016\n\tTYPE_E_FIELDNOTFOUND                                                      Handle        = 0x80028017\n\tTYPE_E_INVDATAREAD                                                        Handle        = 0x80028018\n\tTYPE_E_UNSUPFORMAT                                                        Handle        = 0x80028019\n\tTYPE_E_REGISTRYACCESS                                                     Handle        = 0x8002801C\n\tTYPE_E_LIBNOTREGISTERED                                                   Handle        = 0x8002801D\n\tTYPE_E_UNDEFINEDTYPE                                                      Handle        = 0x80028027\n\tTYPE_E_QUALIFIEDNAMEDISALLOWED                                            Handle        = 0x80028028\n\tTYPE_E_INVALIDSTATE                                                       Handle        = 0x80028029\n\tTYPE_E_WRONGTYPEKIND                                                      Handle        = 0x8002802A\n\tTYPE_E_ELEMENTNOTFOUND                                                    Handle        = 0x8002802B\n\tTYPE_E_AMBIGUOUSNAME                                                      Handle        = 0x8002802C\n\tTYPE_E_NAMECONFLICT                                                       Handle        = 0x8002802D\n\tTYPE_E_UNKNOWNLCID                                                        Handle        = 0x8002802E\n\tTYPE_E_DLLFUNCTIONNOTFOUND                                                Handle        = 0x8002802F\n\tTYPE_E_BADMODULEKIND                                                      Handle        = 0x800288BD\n\tTYPE_E_SIZETOOBIG                                                         Handle        = 0x800288C5\n\tTYPE_E_DUPLICATEID                                                        Handle        = 0x800288C6\n\tTYPE_E_INVALIDID                                                          Handle        = 0x800288CF\n\tTYPE_E_TYPEMISMATCH                                                       Handle        = 0x80028CA0\n\tTYPE_E_OUTOFBOUNDS                                                        Handle        = 0x80028CA1\n\tTYPE_E_IOERROR                                                            Handle        = 0x80028CA2\n\tTYPE_E_CANTCREATETMPFILE                                                  Handle        = 0x80028CA3\n\tTYPE_E_CANTLOADLIBRARY                                                    Handle        = 0x80029C4A\n\tTYPE_E_INCONSISTENTPROPFUNCS                                              Handle        = 0x80029C83\n\tTYPE_E_CIRCULARTYPE                                                       Handle        = 0x80029C84\n\tSTG_E_INVALIDFUNCTION                                                     Handle        = 0x80030001\n\tSTG_E_FILENOTFOUND                                                        Handle        = 0x80030002\n\tSTG_E_PATHNOTFOUND                                                        Handle        = 0x80030003\n\tSTG_E_TOOMANYOPENFILES                                                    Handle        = 0x80030004\n\tSTG_E_ACCESSDENIED                                                        Handle        = 0x80030005\n\tSTG_E_INVALIDHANDLE                                                       Handle        = 0x80030006\n\tSTG_E_INSUFFICIENTMEMORY                                                  Handle        = 0x80030008\n\tSTG_E_INVALIDPOINTER                                                      Handle        = 0x80030009\n\tSTG_E_NOMOREFILES                                                         Handle        = 0x80030012\n\tSTG_E_DISKISWRITEPROTECTED                                                Handle        = 0x80030013\n\tSTG_E_SEEKERROR                                                           Handle        = 0x80030019\n\tSTG_E_WRITEFAULT                                                          Handle        = 0x8003001D\n\tSTG_E_READFAULT                                                           Handle        = 0x8003001E\n\tSTG_E_SHAREVIOLATION                                                      Handle        = 0x80030020\n\tSTG_E_LOCKVIOLATION                                                       Handle        = 0x80030021\n\tSTG_E_FILEALREADYEXISTS                                                   Handle        = 0x80030050\n\tSTG_E_INVALIDPARAMETER                                                    Handle        = 0x80030057\n\tSTG_E_MEDIUMFULL                                                          Handle        = 0x80030070\n\tSTG_E_PROPSETMISMATCHED                                                   Handle        = 0x800300F0\n\tSTG_E_ABNORMALAPIEXIT                                                     Handle        = 0x800300FA\n\tSTG_E_INVALIDHEADER                                                       Handle        = 0x800300FB\n\tSTG_E_INVALIDNAME                                                         Handle        = 0x800300FC\n\tSTG_E_UNKNOWN                                                             Handle        = 0x800300FD\n\tSTG_E_UNIMPLEMENTEDFUNCTION                                               Handle        = 0x800300FE\n\tSTG_E_INVALIDFLAG                                                         Handle        = 0x800300FF\n\tSTG_E_INUSE                                                               Handle        = 0x80030100\n\tSTG_E_NOTCURRENT                                                          Handle        = 0x80030101\n\tSTG_E_REVERTED                                                            Handle        = 0x80030102\n\tSTG_E_CANTSAVE                                                            Handle        = 0x80030103\n\tSTG_E_OLDFORMAT                                                           Handle        = 0x80030104\n\tSTG_E_OLDDLL                                                              Handle        = 0x80030105\n\tSTG_E_SHAREREQUIRED                                                       Handle        = 0x80030106\n\tSTG_E_NOTFILEBASEDSTORAGE                                                 Handle        = 0x80030107\n\tSTG_E_EXTANTMARSHALLINGS                                                  Handle        = 0x80030108\n\tSTG_E_DOCFILECORRUPT                                                      Handle        = 0x80030109\n\tSTG_E_BADBASEADDRESS                                                      Handle        = 0x80030110\n\tSTG_E_DOCFILETOOLARGE                                                     Handle        = 0x80030111\n\tSTG_E_NOTSIMPLEFORMAT                                                     Handle        = 0x80030112\n\tSTG_E_INCOMPLETE                                                          Handle        = 0x80030201\n\tSTG_E_TERMINATED                                                          Handle        = 0x80030202\n\tSTG_S_CONVERTED                                                           Handle        = 0x00030200\n\tSTG_S_BLOCK                                                               Handle        = 0x00030201\n\tSTG_S_RETRYNOW                                                            Handle        = 0x00030202\n\tSTG_S_MONITORING                                                          Handle        = 0x00030203\n\tSTG_S_MULTIPLEOPENS                                                       Handle        = 0x00030204\n\tSTG_S_CONSOLIDATIONFAILED                                                 Handle        = 0x00030205\n\tSTG_S_CANNOTCONSOLIDATE                                                   Handle        = 0x00030206\n\tSTG_S_POWER_CYCLE_REQUIRED                                                Handle        = 0x00030207\n\tSTG_E_FIRMWARE_SLOT_INVALID                                               Handle        = 0x80030208\n\tSTG_E_FIRMWARE_IMAGE_INVALID                                              Handle        = 0x80030209\n\tSTG_E_DEVICE_UNRESPONSIVE                                                 Handle        = 0x8003020A\n\tSTG_E_STATUS_COPY_PROTECTION_FAILURE                                      Handle        = 0x80030305\n\tSTG_E_CSS_AUTHENTICATION_FAILURE                                          Handle        = 0x80030306\n\tSTG_E_CSS_KEY_NOT_PRESENT                                                 Handle        = 0x80030307\n\tSTG_E_CSS_KEY_NOT_ESTABLISHED                                             Handle        = 0x80030308\n\tSTG_E_CSS_SCRAMBLED_SECTOR                                                Handle        = 0x80030309\n\tSTG_E_CSS_REGION_MISMATCH                                                 Handle        = 0x8003030A\n\tSTG_E_RESETS_EXHAUSTED                                                    Handle        = 0x8003030B\n\tRPC_E_CALL_REJECTED                                                       Handle        = 0x80010001\n\tRPC_E_CALL_CANCELED                                                       Handle        = 0x80010002\n\tRPC_E_CANTPOST_INSENDCALL                                                 Handle        = 0x80010003\n\tRPC_E_CANTCALLOUT_INASYNCCALL                                             Handle        = 0x80010004\n\tRPC_E_CANTCALLOUT_INEXTERNALCALL                                          Handle        = 0x80010005\n\tRPC_E_CONNECTION_TERMINATED                                               Handle        = 0x80010006\n\tRPC_E_SERVER_DIED                                                         Handle        = 0x80010007\n\tRPC_E_CLIENT_DIED                                                         Handle        = 0x80010008\n\tRPC_E_INVALID_DATAPACKET                                                  Handle        = 0x80010009\n\tRPC_E_CANTTRANSMIT_CALL                                                   Handle        = 0x8001000A\n\tRPC_E_CLIENT_CANTMARSHAL_DATA                                             Handle        = 0x8001000B\n\tRPC_E_CLIENT_CANTUNMARSHAL_DATA                                           Handle        = 0x8001000C\n\tRPC_E_SERVER_CANTMARSHAL_DATA                                             Handle        = 0x8001000D\n\tRPC_E_SERVER_CANTUNMARSHAL_DATA                                           Handle        = 0x8001000E\n\tRPC_E_INVALID_DATA                                                        Handle        = 0x8001000F\n\tRPC_E_INVALID_PARAMETER                                                   Handle        = 0x80010010\n\tRPC_E_CANTCALLOUT_AGAIN                                                   Handle        = 0x80010011\n\tRPC_E_SERVER_DIED_DNE                                                     Handle        = 0x80010012\n\tRPC_E_SYS_CALL_FAILED                                                     Handle        = 0x80010100\n\tRPC_E_OUT_OF_RESOURCES                                                    Handle        = 0x80010101\n\tRPC_E_ATTEMPTED_MULTITHREAD                                               Handle        = 0x80010102\n\tRPC_E_NOT_REGISTERED                                                      Handle        = 0x80010103\n\tRPC_E_FAULT                                                               Handle        = 0x80010104\n\tRPC_E_SERVERFAULT                                                         Handle        = 0x80010105\n\tRPC_E_CHANGED_MODE                                                        Handle        = 0x80010106\n\tRPC_E_INVALIDMETHOD                                                       Handle        = 0x80010107\n\tRPC_E_DISCONNECTED                                                        Handle        = 0x80010108\n\tRPC_E_RETRY                                                               Handle        = 0x80010109\n\tRPC_E_SERVERCALL_RETRYLATER                                               Handle        = 0x8001010A\n\tRPC_E_SERVERCALL_REJECTED                                                 Handle        = 0x8001010B\n\tRPC_E_INVALID_CALLDATA                                                    Handle        = 0x8001010C\n\tRPC_E_CANTCALLOUT_ININPUTSYNCCALL                                         Handle        = 0x8001010D\n\tRPC_E_WRONG_THREAD                                                        Handle        = 0x8001010E\n\tRPC_E_THREAD_NOT_INIT                                                     Handle        = 0x8001010F\n\tRPC_E_VERSION_MISMATCH                                                    Handle        = 0x80010110\n\tRPC_E_INVALID_HEADER                                                      Handle        = 0x80010111\n\tRPC_E_INVALID_EXTENSION                                                   Handle        = 0x80010112\n\tRPC_E_INVALID_IPID                                                        Handle        = 0x80010113\n\tRPC_E_INVALID_OBJECT                                                      Handle        = 0x80010114\n\tRPC_S_CALLPENDING                                                         Handle        = 0x80010115\n\tRPC_S_WAITONTIMER                                                         Handle        = 0x80010116\n\tRPC_E_CALL_COMPLETE                                                       Handle        = 0x80010117\n\tRPC_E_UNSECURE_CALL                                                       Handle        = 0x80010118\n\tRPC_E_TOO_LATE                                                            Handle        = 0x80010119\n\tRPC_E_NO_GOOD_SECURITY_PACKAGES                                           Handle        = 0x8001011A\n\tRPC_E_ACCESS_DENIED                                                       Handle        = 0x8001011B\n\tRPC_E_REMOTE_DISABLED                                                     Handle        = 0x8001011C\n\tRPC_E_INVALID_OBJREF                                                      Handle        = 0x8001011D\n\tRPC_E_NO_CONTEXT                                                          Handle        = 0x8001011E\n\tRPC_E_TIMEOUT                                                             Handle        = 0x8001011F\n\tRPC_E_NO_SYNC                                                             Handle        = 0x80010120\n\tRPC_E_FULLSIC_REQUIRED                                                    Handle        = 0x80010121\n\tRPC_E_INVALID_STD_NAME                                                    Handle        = 0x80010122\n\tCO_E_FAILEDTOIMPERSONATE                                                  Handle        = 0x80010123\n\tCO_E_FAILEDTOGETSECCTX                                                    Handle        = 0x80010124\n\tCO_E_FAILEDTOOPENTHREADTOKEN                                              Handle        = 0x80010125\n\tCO_E_FAILEDTOGETTOKENINFO                                                 Handle        = 0x80010126\n\tCO_E_TRUSTEEDOESNTMATCHCLIENT                                             Handle        = 0x80010127\n\tCO_E_FAILEDTOQUERYCLIENTBLANKET                                           Handle        = 0x80010128\n\tCO_E_FAILEDTOSETDACL                                                      Handle        = 0x80010129\n\tCO_E_ACCESSCHECKFAILED                                                    Handle        = 0x8001012A\n\tCO_E_NETACCESSAPIFAILED                                                   Handle        = 0x8001012B\n\tCO_E_WRONGTRUSTEENAMESYNTAX                                               Handle        = 0x8001012C\n\tCO_E_INVALIDSID                                                           Handle        = 0x8001012D\n\tCO_E_CONVERSIONFAILED                                                     Handle        = 0x8001012E\n\tCO_E_NOMATCHINGSIDFOUND                                                   Handle        = 0x8001012F\n\tCO_E_LOOKUPACCSIDFAILED                                                   Handle        = 0x80010130\n\tCO_E_NOMATCHINGNAMEFOUND                                                  Handle        = 0x80010131\n\tCO_E_LOOKUPACCNAMEFAILED                                                  Handle        = 0x80010132\n\tCO_E_SETSERLHNDLFAILED                                                    Handle        = 0x80010133\n\tCO_E_FAILEDTOGETWINDIR                                                    Handle        = 0x80010134\n\tCO_E_PATHTOOLONG                                                          Handle        = 0x80010135\n\tCO_E_FAILEDTOGENUUID                                                      Handle        = 0x80010136\n\tCO_E_FAILEDTOCREATEFILE                                                   Handle        = 0x80010137\n\tCO_E_FAILEDTOCLOSEHANDLE                                                  Handle        = 0x80010138\n\tCO_E_EXCEEDSYSACLLIMIT                                                    Handle        = 0x80010139\n\tCO_E_ACESINWRONGORDER                                                     Handle        = 0x8001013A\n\tCO_E_INCOMPATIBLESTREAMVERSION                                            Handle        = 0x8001013B\n\tCO_E_FAILEDTOOPENPROCESSTOKEN                                             Handle        = 0x8001013C\n\tCO_E_DECODEFAILED                                                         Handle        = 0x8001013D\n\tCO_E_ACNOTINITIALIZED                                                     Handle        = 0x8001013F\n\tCO_E_CANCEL_DISABLED                                                      Handle        = 0x80010140\n\tRPC_E_UNEXPECTED                                                          Handle        = 0x8001FFFF\n\tERROR_AUDITING_DISABLED                                                   Handle        = 0xC0090001\n\tERROR_ALL_SIDS_FILTERED                                                   Handle        = 0xC0090002\n\tERROR_BIZRULES_NOT_ENABLED                                                Handle        = 0xC0090003\n\tNTE_BAD_UID                                                               Handle        = 0x80090001\n\tNTE_BAD_HASH                                                              Handle        = 0x80090002\n\tNTE_BAD_KEY                                                               Handle        = 0x80090003\n\tNTE_BAD_LEN                                                               Handle        = 0x80090004\n\tNTE_BAD_DATA                                                              Handle        = 0x80090005\n\tNTE_BAD_SIGNATURE                                                         Handle        = 0x80090006\n\tNTE_BAD_VER                                                               Handle        = 0x80090007\n\tNTE_BAD_ALGID                                                             Handle        = 0x80090008\n\tNTE_BAD_FLAGS                                                             Handle        = 0x80090009\n\tNTE_BAD_TYPE                                                              Handle        = 0x8009000A\n\tNTE_BAD_KEY_STATE                                                         Handle        = 0x8009000B\n\tNTE_BAD_HASH_STATE                                                        Handle        = 0x8009000C\n\tNTE_NO_KEY                                                                Handle        = 0x8009000D\n\tNTE_NO_MEMORY                                                             Handle        = 0x8009000E\n\tNTE_EXISTS                                                                Handle        = 0x8009000F\n\tNTE_PERM                                                                  Handle        = 0x80090010\n\tNTE_NOT_FOUND                                                             Handle        = 0x80090011\n\tNTE_DOUBLE_ENCRYPT                                                        Handle        = 0x80090012\n\tNTE_BAD_PROVIDER                                                          Handle        = 0x80090013\n\tNTE_BAD_PROV_TYPE                                                         Handle        = 0x80090014\n\tNTE_BAD_PUBLIC_KEY                                                        Handle        = 0x80090015\n\tNTE_BAD_KEYSET                                                            Handle        = 0x80090016\n\tNTE_PROV_TYPE_NOT_DEF                                                     Handle        = 0x80090017\n\tNTE_PROV_TYPE_ENTRY_BAD                                                   Handle        = 0x80090018\n\tNTE_KEYSET_NOT_DEF                                                        Handle        = 0x80090019\n\tNTE_KEYSET_ENTRY_BAD                                                      Handle        = 0x8009001A\n\tNTE_PROV_TYPE_NO_MATCH                                                    Handle        = 0x8009001B\n\tNTE_SIGNATURE_FILE_BAD                                                    Handle        = 0x8009001C\n\tNTE_PROVIDER_DLL_FAIL                                                     Handle        = 0x8009001D\n\tNTE_PROV_DLL_NOT_FOUND                                                    Handle        = 0x8009001E\n\tNTE_BAD_KEYSET_PARAM                                                      Handle        = 0x8009001F\n\tNTE_FAIL                                                                  Handle        = 0x80090020\n\tNTE_SYS_ERR                                                               Handle        = 0x80090021\n\tNTE_SILENT_CONTEXT                                                        Handle        = 0x80090022\n\tNTE_TOKEN_KEYSET_STORAGE_FULL                                             Handle        = 0x80090023\n\tNTE_TEMPORARY_PROFILE                                                     Handle        = 0x80090024\n\tNTE_FIXEDPARAMETER                                                        Handle        = 0x80090025\n\tNTE_INVALID_HANDLE                                                        Handle        = 0x80090026\n\tNTE_INVALID_PARAMETER                                                     Handle        = 0x80090027\n\tNTE_BUFFER_TOO_SMALL                                                      Handle        = 0x80090028\n\tNTE_NOT_SUPPORTED                                                         Handle        = 0x80090029\n\tNTE_NO_MORE_ITEMS                                                         Handle        = 0x8009002A\n\tNTE_BUFFERS_OVERLAP                                                       Handle        = 0x8009002B\n\tNTE_DECRYPTION_FAILURE                                                    Handle        = 0x8009002C\n\tNTE_INTERNAL_ERROR                                                        Handle        = 0x8009002D\n\tNTE_UI_REQUIRED                                                           Handle        = 0x8009002E\n\tNTE_HMAC_NOT_SUPPORTED                                                    Handle        = 0x8009002F\n\tNTE_DEVICE_NOT_READY                                                      Handle        = 0x80090030\n\tNTE_AUTHENTICATION_IGNORED                                                Handle        = 0x80090031\n\tNTE_VALIDATION_FAILED                                                     Handle        = 0x80090032\n\tNTE_INCORRECT_PASSWORD                                                    Handle        = 0x80090033\n\tNTE_ENCRYPTION_FAILURE                                                    Handle        = 0x80090034\n\tNTE_DEVICE_NOT_FOUND                                                      Handle        = 0x80090035\n\tNTE_USER_CANCELLED                                                        Handle        = 0x80090036\n\tNTE_PASSWORD_CHANGE_REQUIRED                                              Handle        = 0x80090037\n\tNTE_NOT_ACTIVE_CONSOLE                                                    Handle        = 0x80090038\n\tSEC_E_INSUFFICIENT_MEMORY                                                 Handle        = 0x80090300\n\tSEC_E_INVALID_HANDLE                                                      Handle        = 0x80090301\n\tSEC_E_UNSUPPORTED_FUNCTION                                                Handle        = 0x80090302\n\tSEC_E_TARGET_UNKNOWN                                                      Handle        = 0x80090303\n\tSEC_E_INTERNAL_ERROR                                                      Handle        = 0x80090304\n\tSEC_E_SECPKG_NOT_FOUND                                                    Handle        = 0x80090305\n\tSEC_E_NOT_OWNER                                                           Handle        = 0x80090306\n\tSEC_E_CANNOT_INSTALL                                                      Handle        = 0x80090307\n\tSEC_E_INVALID_TOKEN                                                       Handle        = 0x80090308\n\tSEC_E_CANNOT_PACK                                                         Handle        = 0x80090309\n\tSEC_E_QOP_NOT_SUPPORTED                                                   Handle        = 0x8009030A\n\tSEC_E_NO_IMPERSONATION                                                    Handle        = 0x8009030B\n\tSEC_E_LOGON_DENIED                                                        Handle        = 0x8009030C\n\tSEC_E_UNKNOWN_CREDENTIALS                                                 Handle        = 0x8009030D\n\tSEC_E_NO_CREDENTIALS                                                      Handle        = 0x8009030E\n\tSEC_E_MESSAGE_ALTERED                                                     Handle        = 0x8009030F\n\tSEC_E_OUT_OF_SEQUENCE                                                     Handle        = 0x80090310\n\tSEC_E_NO_AUTHENTICATING_AUTHORITY                                         Handle        = 0x80090311\n\tSEC_I_CONTINUE_NEEDED                                                     Handle        = 0x00090312\n\tSEC_I_COMPLETE_NEEDED                                                     Handle        = 0x00090313\n\tSEC_I_COMPLETE_AND_CONTINUE                                               Handle        = 0x00090314\n\tSEC_I_LOCAL_LOGON                                                         Handle        = 0x00090315\n\tSEC_I_GENERIC_EXTENSION_RECEIVED                                          Handle        = 0x00090316\n\tSEC_E_BAD_PKGID                                                           Handle        = 0x80090316\n\tSEC_E_CONTEXT_EXPIRED                                                     Handle        = 0x80090317\n\tSEC_I_CONTEXT_EXPIRED                                                     Handle        = 0x00090317\n\tSEC_E_INCOMPLETE_MESSAGE                                                  Handle        = 0x80090318\n\tSEC_E_INCOMPLETE_CREDENTIALS                                              Handle        = 0x80090320\n\tSEC_E_BUFFER_TOO_SMALL                                                    Handle        = 0x80090321\n\tSEC_I_INCOMPLETE_CREDENTIALS                                              Handle        = 0x00090320\n\tSEC_I_RENEGOTIATE                                                         Handle        = 0x00090321\n\tSEC_E_WRONG_PRINCIPAL                                                     Handle        = 0x80090322\n\tSEC_I_NO_LSA_CONTEXT                                                      Handle        = 0x00090323\n\tSEC_E_TIME_SKEW                                                           Handle        = 0x80090324\n\tSEC_E_UNTRUSTED_ROOT                                                      Handle        = 0x80090325\n\tSEC_E_ILLEGAL_MESSAGE                                                     Handle        = 0x80090326\n\tSEC_E_CERT_UNKNOWN                                                        Handle        = 0x80090327\n\tSEC_E_CERT_EXPIRED                                                        Handle        = 0x80090328\n\tSEC_E_ENCRYPT_FAILURE                                                     Handle        = 0x80090329\n\tSEC_E_DECRYPT_FAILURE                                                     Handle        = 0x80090330\n\tSEC_E_ALGORITHM_MISMATCH                                                  Handle        = 0x80090331\n\tSEC_E_SECURITY_QOS_FAILED                                                 Handle        = 0x80090332\n\tSEC_E_UNFINISHED_CONTEXT_DELETED                                          Handle        = 0x80090333\n\tSEC_E_NO_TGT_REPLY                                                        Handle        = 0x80090334\n\tSEC_E_NO_IP_ADDRESSES                                                     Handle        = 0x80090335\n\tSEC_E_WRONG_CREDENTIAL_HANDLE                                             Handle        = 0x80090336\n\tSEC_E_CRYPTO_SYSTEM_INVALID                                               Handle        = 0x80090337\n\tSEC_E_MAX_REFERRALS_EXCEEDED                                              Handle        = 0x80090338\n\tSEC_E_MUST_BE_KDC                                                         Handle        = 0x80090339\n\tSEC_E_STRONG_CRYPTO_NOT_SUPPORTED                                         Handle        = 0x8009033A\n\tSEC_E_TOO_MANY_PRINCIPALS                                                 Handle        = 0x8009033B\n\tSEC_E_NO_PA_DATA                                                          Handle        = 0x8009033C\n\tSEC_E_PKINIT_NAME_MISMATCH                                                Handle        = 0x8009033D\n\tSEC_E_SMARTCARD_LOGON_REQUIRED                                            Handle        = 0x8009033E\n\tSEC_E_SHUTDOWN_IN_PROGRESS                                                Handle        = 0x8009033F\n\tSEC_E_KDC_INVALID_REQUEST                                                 Handle        = 0x80090340\n\tSEC_E_KDC_UNABLE_TO_REFER                                                 Handle        = 0x80090341\n\tSEC_E_KDC_UNKNOWN_ETYPE                                                   Handle        = 0x80090342\n\tSEC_E_UNSUPPORTED_PREAUTH                                                 Handle        = 0x80090343\n\tSEC_E_DELEGATION_REQUIRED                                                 Handle        = 0x80090345\n\tSEC_E_BAD_BINDINGS                                                        Handle        = 0x80090346\n\tSEC_E_MULTIPLE_ACCOUNTS                                                   Handle        = 0x80090347\n\tSEC_E_NO_KERB_KEY                                                         Handle        = 0x80090348\n\tSEC_E_CERT_WRONG_USAGE                                                    Handle        = 0x80090349\n\tSEC_E_DOWNGRADE_DETECTED                                                  Handle        = 0x80090350\n\tSEC_E_SMARTCARD_CERT_REVOKED                                              Handle        = 0x80090351\n\tSEC_E_ISSUING_CA_UNTRUSTED                                                Handle        = 0x80090352\n\tSEC_E_REVOCATION_OFFLINE_C                                                Handle        = 0x80090353\n\tSEC_E_PKINIT_CLIENT_FAILURE                                               Handle        = 0x80090354\n\tSEC_E_SMARTCARD_CERT_EXPIRED                                              Handle        = 0x80090355\n\tSEC_E_NO_S4U_PROT_SUPPORT                                                 Handle        = 0x80090356\n\tSEC_E_CROSSREALM_DELEGATION_FAILURE                                       Handle        = 0x80090357\n\tSEC_E_REVOCATION_OFFLINE_KDC                                              Handle        = 0x80090358\n\tSEC_E_ISSUING_CA_UNTRUSTED_KDC                                            Handle        = 0x80090359\n\tSEC_E_KDC_CERT_EXPIRED                                                    Handle        = 0x8009035A\n\tSEC_E_KDC_CERT_REVOKED                                                    Handle        = 0x8009035B\n\tSEC_I_SIGNATURE_NEEDED                                                    Handle        = 0x0009035C\n\tSEC_E_INVALID_PARAMETER                                                   Handle        = 0x8009035D\n\tSEC_E_DELEGATION_POLICY                                                   Handle        = 0x8009035E\n\tSEC_E_POLICY_NLTM_ONLY                                                    Handle        = 0x8009035F\n\tSEC_I_NO_RENEGOTIATION                                                    Handle        = 0x00090360\n\tSEC_E_NO_CONTEXT                                                          Handle        = 0x80090361\n\tSEC_E_PKU2U_CERT_FAILURE                                                  Handle        = 0x80090362\n\tSEC_E_MUTUAL_AUTH_FAILED                                                  Handle        = 0x80090363\n\tSEC_I_MESSAGE_FRAGMENT                                                    Handle        = 0x00090364\n\tSEC_E_ONLY_HTTPS_ALLOWED                                                  Handle        = 0x80090365\n\tSEC_I_CONTINUE_NEEDED_MESSAGE_OK                                          Handle        = 0x00090366\n\tSEC_E_APPLICATION_PROTOCOL_MISMATCH                                       Handle        = 0x80090367\n\tSEC_I_ASYNC_CALL_PENDING                                                  Handle        = 0x00090368\n\tSEC_E_INVALID_UPN_NAME                                                    Handle        = 0x80090369\n\tSEC_E_EXT_BUFFER_TOO_SMALL                                                Handle        = 0x8009036A\n\tSEC_E_INSUFFICIENT_BUFFERS                                                Handle        = 0x8009036B\n\tSEC_E_NO_SPM                                                                            = SEC_E_INTERNAL_ERROR\n\tSEC_E_NOT_SUPPORTED                                                                     = SEC_E_UNSUPPORTED_FUNCTION\n\tCRYPT_E_MSG_ERROR                                                         Handle        = 0x80091001\n\tCRYPT_E_UNKNOWN_ALGO                                                      Handle        = 0x80091002\n\tCRYPT_E_OID_FORMAT                                                        Handle        = 0x80091003\n\tCRYPT_E_INVALID_MSG_TYPE                                                  Handle        = 0x80091004\n\tCRYPT_E_UNEXPECTED_ENCODING                                               Handle        = 0x80091005\n\tCRYPT_E_AUTH_ATTR_MISSING                                                 Handle        = 0x80091006\n\tCRYPT_E_HASH_VALUE                                                        Handle        = 0x80091007\n\tCRYPT_E_INVALID_INDEX                                                     Handle        = 0x80091008\n\tCRYPT_E_ALREADY_DECRYPTED                                                 Handle        = 0x80091009\n\tCRYPT_E_NOT_DECRYPTED                                                     Handle        = 0x8009100A\n\tCRYPT_E_RECIPIENT_NOT_FOUND                                               Handle        = 0x8009100B\n\tCRYPT_E_CONTROL_TYPE                                                      Handle        = 0x8009100C\n\tCRYPT_E_ISSUER_SERIALNUMBER                                               Handle        = 0x8009100D\n\tCRYPT_E_SIGNER_NOT_FOUND                                                  Handle        = 0x8009100E\n\tCRYPT_E_ATTRIBUTES_MISSING                                                Handle        = 0x8009100F\n\tCRYPT_E_STREAM_MSG_NOT_READY                                              Handle        = 0x80091010\n\tCRYPT_E_STREAM_INSUFFICIENT_DATA                                          Handle        = 0x80091011\n\tCRYPT_I_NEW_PROTECTION_REQUIRED                                           Handle        = 0x00091012\n\tCRYPT_E_BAD_LEN                                                           Handle        = 0x80092001\n\tCRYPT_E_BAD_ENCODE                                                        Handle        = 0x80092002\n\tCRYPT_E_FILE_ERROR                                                        Handle        = 0x80092003\n\tCRYPT_E_NOT_FOUND                                                         Handle        = 0x80092004\n\tCRYPT_E_EXISTS                                                            Handle        = 0x80092005\n\tCRYPT_E_NO_PROVIDER                                                       Handle        = 0x80092006\n\tCRYPT_E_SELF_SIGNED                                                       Handle        = 0x80092007\n\tCRYPT_E_DELETED_PREV                                                      Handle        = 0x80092008\n\tCRYPT_E_NO_MATCH                                                          Handle        = 0x80092009\n\tCRYPT_E_UNEXPECTED_MSG_TYPE                                               Handle        = 0x8009200A\n\tCRYPT_E_NO_KEY_PROPERTY                                                   Handle        = 0x8009200B\n\tCRYPT_E_NO_DECRYPT_CERT                                                   Handle        = 0x8009200C\n\tCRYPT_E_BAD_MSG                                                           Handle        = 0x8009200D\n\tCRYPT_E_NO_SIGNER                                                         Handle        = 0x8009200E\n\tCRYPT_E_PENDING_CLOSE                                                     Handle        = 0x8009200F\n\tCRYPT_E_REVOKED                                                           Handle        = 0x80092010\n\tCRYPT_E_NO_REVOCATION_DLL                                                 Handle        = 0x80092011\n\tCRYPT_E_NO_REVOCATION_CHECK                                               Handle        = 0x80092012\n\tCRYPT_E_REVOCATION_OFFLINE                                                Handle        = 0x80092013\n\tCRYPT_E_NOT_IN_REVOCATION_DATABASE                                        Handle        = 0x80092014\n\tCRYPT_E_INVALID_NUMERIC_STRING                                            Handle        = 0x80092020\n\tCRYPT_E_INVALID_PRINTABLE_STRING                                          Handle        = 0x80092021\n\tCRYPT_E_INVALID_IA5_STRING                                                Handle        = 0x80092022\n\tCRYPT_E_INVALID_X500_STRING                                               Handle        = 0x80092023\n\tCRYPT_E_NOT_CHAR_STRING                                                   Handle        = 0x80092024\n\tCRYPT_E_FILERESIZED                                                       Handle        = 0x80092025\n\tCRYPT_E_SECURITY_SETTINGS                                                 Handle        = 0x80092026\n\tCRYPT_E_NO_VERIFY_USAGE_DLL                                               Handle        = 0x80092027\n\tCRYPT_E_NO_VERIFY_USAGE_CHECK                                             Handle        = 0x80092028\n\tCRYPT_E_VERIFY_USAGE_OFFLINE                                              Handle        = 0x80092029\n\tCRYPT_E_NOT_IN_CTL                                                        Handle        = 0x8009202A\n\tCRYPT_E_NO_TRUSTED_SIGNER                                                 Handle        = 0x8009202B\n\tCRYPT_E_MISSING_PUBKEY_PARA                                               Handle        = 0x8009202C\n\tCRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND                                   Handle        = 0x8009202D\n\tCRYPT_E_OSS_ERROR                                                         Handle        = 0x80093000\n\tOSS_MORE_BUF                                                              Handle        = 0x80093001\n\tOSS_NEGATIVE_UINTEGER                                                     Handle        = 0x80093002\n\tOSS_PDU_RANGE                                                             Handle        = 0x80093003\n\tOSS_MORE_INPUT                                                            Handle        = 0x80093004\n\tOSS_DATA_ERROR                                                            Handle        = 0x80093005\n\tOSS_BAD_ARG                                                               Handle        = 0x80093006\n\tOSS_BAD_VERSION                                                           Handle        = 0x80093007\n\tOSS_OUT_MEMORY                                                            Handle        = 0x80093008\n\tOSS_PDU_MISMATCH                                                          Handle        = 0x80093009\n\tOSS_LIMITED                                                               Handle        = 0x8009300A\n\tOSS_BAD_PTR                                                               Handle        = 0x8009300B\n\tOSS_BAD_TIME                                                              Handle        = 0x8009300C\n\tOSS_INDEFINITE_NOT_SUPPORTED                                              Handle        = 0x8009300D\n\tOSS_MEM_ERROR                                                             Handle        = 0x8009300E\n\tOSS_BAD_TABLE                                                             Handle        = 0x8009300F\n\tOSS_TOO_LONG                                                              Handle        = 0x80093010\n\tOSS_CONSTRAINT_VIOLATED                                                   Handle        = 0x80093011\n\tOSS_FATAL_ERROR                                                           Handle        = 0x80093012\n\tOSS_ACCESS_SERIALIZATION_ERROR                                            Handle        = 0x80093013\n\tOSS_NULL_TBL                                                              Handle        = 0x80093014\n\tOSS_NULL_FCN                                                              Handle        = 0x80093015\n\tOSS_BAD_ENCRULES                                                          Handle        = 0x80093016\n\tOSS_UNAVAIL_ENCRULES                                                      Handle        = 0x80093017\n\tOSS_CANT_OPEN_TRACE_WINDOW                                                Handle        = 0x80093018\n\tOSS_UNIMPLEMENTED                                                         Handle        = 0x80093019\n\tOSS_OID_DLL_NOT_LINKED                                                    Handle        = 0x8009301A\n\tOSS_CANT_OPEN_TRACE_FILE                                                  Handle        = 0x8009301B\n\tOSS_TRACE_FILE_ALREADY_OPEN                                               Handle        = 0x8009301C\n\tOSS_TABLE_MISMATCH                                                        Handle        = 0x8009301D\n\tOSS_TYPE_NOT_SUPPORTED                                                    Handle        = 0x8009301E\n\tOSS_REAL_DLL_NOT_LINKED                                                   Handle        = 0x8009301F\n\tOSS_REAL_CODE_NOT_LINKED                                                  Handle        = 0x80093020\n\tOSS_OUT_OF_RANGE                                                          Handle        = 0x80093021\n\tOSS_COPIER_DLL_NOT_LINKED                                                 Handle        = 0x80093022\n\tOSS_CONSTRAINT_DLL_NOT_LINKED                                             Handle        = 0x80093023\n\tOSS_COMPARATOR_DLL_NOT_LINKED                                             Handle        = 0x80093024\n\tOSS_COMPARATOR_CODE_NOT_LINKED                                            Handle        = 0x80093025\n\tOSS_MEM_MGR_DLL_NOT_LINKED                                                Handle        = 0x80093026\n\tOSS_PDV_DLL_NOT_LINKED                                                    Handle        = 0x80093027\n\tOSS_PDV_CODE_NOT_LINKED                                                   Handle        = 0x80093028\n\tOSS_API_DLL_NOT_LINKED                                                    Handle        = 0x80093029\n\tOSS_BERDER_DLL_NOT_LINKED                                                 Handle        = 0x8009302A\n\tOSS_PER_DLL_NOT_LINKED                                                    Handle        = 0x8009302B\n\tOSS_OPEN_TYPE_ERROR                                                       Handle        = 0x8009302C\n\tOSS_MUTEX_NOT_CREATED                                                     Handle        = 0x8009302D\n\tOSS_CANT_CLOSE_TRACE_FILE                                                 Handle        = 0x8009302E\n\tCRYPT_E_ASN1_ERROR                                                        Handle        = 0x80093100\n\tCRYPT_E_ASN1_INTERNAL                                                     Handle        = 0x80093101\n\tCRYPT_E_ASN1_EOD                                                          Handle        = 0x80093102\n\tCRYPT_E_ASN1_CORRUPT                                                      Handle        = 0x80093103\n\tCRYPT_E_ASN1_LARGE                                                        Handle        = 0x80093104\n\tCRYPT_E_ASN1_CONSTRAINT                                                   Handle        = 0x80093105\n\tCRYPT_E_ASN1_MEMORY                                                       Handle        = 0x80093106\n\tCRYPT_E_ASN1_OVERFLOW                                                     Handle        = 0x80093107\n\tCRYPT_E_ASN1_BADPDU                                                       Handle        = 0x80093108\n\tCRYPT_E_ASN1_BADARGS                                                      Handle        = 0x80093109\n\tCRYPT_E_ASN1_BADREAL                                                      Handle        = 0x8009310A\n\tCRYPT_E_ASN1_BADTAG                                                       Handle        = 0x8009310B\n\tCRYPT_E_ASN1_CHOICE                                                       Handle        = 0x8009310C\n\tCRYPT_E_ASN1_RULE                                                         Handle        = 0x8009310D\n\tCRYPT_E_ASN1_UTF8                                                         Handle        = 0x8009310E\n\tCRYPT_E_ASN1_PDU_TYPE                                                     Handle        = 0x80093133\n\tCRYPT_E_ASN1_NYI                                                          Handle        = 0x80093134\n\tCRYPT_E_ASN1_EXTENDED                                                     Handle        = 0x80093201\n\tCRYPT_E_ASN1_NOEOD                                                        Handle        = 0x80093202\n\tCERTSRV_E_BAD_REQUESTSUBJECT                                              Handle        = 0x80094001\n\tCERTSRV_E_NO_REQUEST                                                      Handle        = 0x80094002\n\tCERTSRV_E_BAD_REQUESTSTATUS                                               Handle        = 0x80094003\n\tCERTSRV_E_PROPERTY_EMPTY                                                  Handle        = 0x80094004\n\tCERTSRV_E_INVALID_CA_CERTIFICATE                                          Handle        = 0x80094005\n\tCERTSRV_E_SERVER_SUSPENDED                                                Handle        = 0x80094006\n\tCERTSRV_E_ENCODING_LENGTH                                                 Handle        = 0x80094007\n\tCERTSRV_E_ROLECONFLICT                                                    Handle        = 0x80094008\n\tCERTSRV_E_RESTRICTEDOFFICER                                               Handle        = 0x80094009\n\tCERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED                                     Handle        = 0x8009400A\n\tCERTSRV_E_NO_VALID_KRA                                                    Handle        = 0x8009400B\n\tCERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL                                        Handle        = 0x8009400C\n\tCERTSRV_E_NO_CAADMIN_DEFINED                                              Handle        = 0x8009400D\n\tCERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE                                      Handle        = 0x8009400E\n\tCERTSRV_E_NO_DB_SESSIONS                                                  Handle        = 0x8009400F\n\tCERTSRV_E_ALIGNMENT_FAULT                                                 Handle        = 0x80094010\n\tCERTSRV_E_ENROLL_DENIED                                                   Handle        = 0x80094011\n\tCERTSRV_E_TEMPLATE_DENIED                                                 Handle        = 0x80094012\n\tCERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE                                     Handle        = 0x80094013\n\tCERTSRV_E_ADMIN_DENIED_REQUEST                                            Handle        = 0x80094014\n\tCERTSRV_E_NO_POLICY_SERVER                                                Handle        = 0x80094015\n\tCERTSRV_E_WEAK_SIGNATURE_OR_KEY                                           Handle        = 0x80094016\n\tCERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED                                   Handle        = 0x80094017\n\tCERTSRV_E_ENCRYPTION_CERT_REQUIRED                                        Handle        = 0x80094018\n\tCERTSRV_E_UNSUPPORTED_CERT_TYPE                                           Handle        = 0x80094800\n\tCERTSRV_E_NO_CERT_TYPE                                                    Handle        = 0x80094801\n\tCERTSRV_E_TEMPLATE_CONFLICT                                               Handle        = 0x80094802\n\tCERTSRV_E_SUBJECT_ALT_NAME_REQUIRED                                       Handle        = 0x80094803\n\tCERTSRV_E_ARCHIVED_KEY_REQUIRED                                           Handle        = 0x80094804\n\tCERTSRV_E_SMIME_REQUIRED                                                  Handle        = 0x80094805\n\tCERTSRV_E_BAD_RENEWAL_SUBJECT                                             Handle        = 0x80094806\n\tCERTSRV_E_BAD_TEMPLATE_VERSION                                            Handle        = 0x80094807\n\tCERTSRV_E_TEMPLATE_POLICY_REQUIRED                                        Handle        = 0x80094808\n\tCERTSRV_E_SIGNATURE_POLICY_REQUIRED                                       Handle        = 0x80094809\n\tCERTSRV_E_SIGNATURE_COUNT                                                 Handle        = 0x8009480A\n\tCERTSRV_E_SIGNATURE_REJECTED                                              Handle        = 0x8009480B\n\tCERTSRV_E_ISSUANCE_POLICY_REQUIRED                                        Handle        = 0x8009480C\n\tCERTSRV_E_SUBJECT_UPN_REQUIRED                                            Handle        = 0x8009480D\n\tCERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED                                 Handle        = 0x8009480E\n\tCERTSRV_E_SUBJECT_DNS_REQUIRED                                            Handle        = 0x8009480F\n\tCERTSRV_E_ARCHIVED_KEY_UNEXPECTED                                         Handle        = 0x80094810\n\tCERTSRV_E_KEY_LENGTH                                                      Handle        = 0x80094811\n\tCERTSRV_E_SUBJECT_EMAIL_REQUIRED                                          Handle        = 0x80094812\n\tCERTSRV_E_UNKNOWN_CERT_TYPE                                               Handle        = 0x80094813\n\tCERTSRV_E_CERT_TYPE_OVERLAP                                               Handle        = 0x80094814\n\tCERTSRV_E_TOO_MANY_SIGNATURES                                             Handle        = 0x80094815\n\tCERTSRV_E_RENEWAL_BAD_PUBLIC_KEY                                          Handle        = 0x80094816\n\tCERTSRV_E_INVALID_EK                                                      Handle        = 0x80094817\n\tCERTSRV_E_INVALID_IDBINDING                                               Handle        = 0x80094818\n\tCERTSRV_E_INVALID_ATTESTATION                                             Handle        = 0x80094819\n\tCERTSRV_E_KEY_ATTESTATION                                                 Handle        = 0x8009481A\n\tCERTSRV_E_CORRUPT_KEY_ATTESTATION                                         Handle        = 0x8009481B\n\tCERTSRV_E_EXPIRED_CHALLENGE                                               Handle        = 0x8009481C\n\tCERTSRV_E_INVALID_RESPONSE                                                Handle        = 0x8009481D\n\tCERTSRV_E_INVALID_REQUESTID                                               Handle        = 0x8009481E\n\tCERTSRV_E_REQUEST_PRECERTIFICATE_MISMATCH                                 Handle        = 0x8009481F\n\tCERTSRV_E_PENDING_CLIENT_RESPONSE                                         Handle        = 0x80094820\n\tXENROLL_E_KEY_NOT_EXPORTABLE                                              Handle        = 0x80095000\n\tXENROLL_E_CANNOT_ADD_ROOT_CERT                                            Handle        = 0x80095001\n\tXENROLL_E_RESPONSE_KA_HASH_NOT_FOUND                                      Handle        = 0x80095002\n\tXENROLL_E_RESPONSE_UNEXPECTED_KA_HASH                                     Handle        = 0x80095003\n\tXENROLL_E_RESPONSE_KA_HASH_MISMATCH                                       Handle        = 0x80095004\n\tXENROLL_E_KEYSPEC_SMIME_MISMATCH                                          Handle        = 0x80095005\n\tTRUST_E_SYSTEM_ERROR                                                      Handle        = 0x80096001\n\tTRUST_E_NO_SIGNER_CERT                                                    Handle        = 0x80096002\n\tTRUST_E_COUNTER_SIGNER                                                    Handle        = 0x80096003\n\tTRUST_E_CERT_SIGNATURE                                                    Handle        = 0x80096004\n\tTRUST_E_TIME_STAMP                                                        Handle        = 0x80096005\n\tTRUST_E_BAD_DIGEST                                                        Handle        = 0x80096010\n\tTRUST_E_MALFORMED_SIGNATURE                                               Handle        = 0x80096011\n\tTRUST_E_BASIC_CONSTRAINTS                                                 Handle        = 0x80096019\n\tTRUST_E_FINANCIAL_CRITERIA                                                Handle        = 0x8009601E\n\tMSSIPOTF_E_OUTOFMEMRANGE                                                  Handle        = 0x80097001\n\tMSSIPOTF_E_CANTGETOBJECT                                                  Handle        = 0x80097002\n\tMSSIPOTF_E_NOHEADTABLE                                                    Handle        = 0x80097003\n\tMSSIPOTF_E_BAD_MAGICNUMBER                                                Handle        = 0x80097004\n\tMSSIPOTF_E_BAD_OFFSET_TABLE                                               Handle        = 0x80097005\n\tMSSIPOTF_E_TABLE_TAGORDER                                                 Handle        = 0x80097006\n\tMSSIPOTF_E_TABLE_LONGWORD                                                 Handle        = 0x80097007\n\tMSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT                                      Handle        = 0x80097008\n\tMSSIPOTF_E_TABLES_OVERLAP                                                 Handle        = 0x80097009\n\tMSSIPOTF_E_TABLE_PADBYTES                                                 Handle        = 0x8009700A\n\tMSSIPOTF_E_FILETOOSMALL                                                   Handle        = 0x8009700B\n\tMSSIPOTF_E_TABLE_CHECKSUM                                                 Handle        = 0x8009700C\n\tMSSIPOTF_E_FILE_CHECKSUM                                                  Handle        = 0x8009700D\n\tMSSIPOTF_E_FAILED_POLICY                                                  Handle        = 0x80097010\n\tMSSIPOTF_E_FAILED_HINTS_CHECK                                             Handle        = 0x80097011\n\tMSSIPOTF_E_NOT_OPENTYPE                                                   Handle        = 0x80097012\n\tMSSIPOTF_E_FILE                                                           Handle        = 0x80097013\n\tMSSIPOTF_E_CRYPT                                                          Handle        = 0x80097014\n\tMSSIPOTF_E_BADVERSION                                                     Handle        = 0x80097015\n\tMSSIPOTF_E_DSIG_STRUCTURE                                                 Handle        = 0x80097016\n\tMSSIPOTF_E_PCONST_CHECK                                                   Handle        = 0x80097017\n\tMSSIPOTF_E_STRUCTURE                                                      Handle        = 0x80097018\n\tERROR_CRED_REQUIRES_CONFIRMATION                                          Handle        = 0x80097019\n\tNTE_OP_OK                                                                 syscall.Errno = 0\n\tTRUST_E_PROVIDER_UNKNOWN                                                  Handle        = 0x800B0001\n\tTRUST_E_ACTION_UNKNOWN                                                    Handle        = 0x800B0002\n\tTRUST_E_SUBJECT_FORM_UNKNOWN                                              Handle        = 0x800B0003\n\tTRUST_E_SUBJECT_NOT_TRUSTED                                               Handle        = 0x800B0004\n\tDIGSIG_E_ENCODE                                                           Handle        = 0x800B0005\n\tDIGSIG_E_DECODE                                                           Handle        = 0x800B0006\n\tDIGSIG_E_EXTENSIBILITY                                                    Handle        = 0x800B0007\n\tDIGSIG_E_CRYPTO                                                           Handle        = 0x800B0008\n\tPERSIST_E_SIZEDEFINITE                                                    Handle        = 0x800B0009\n\tPERSIST_E_SIZEINDEFINITE                                                  Handle        = 0x800B000A\n\tPERSIST_E_NOTSELFSIZING                                                   Handle        = 0x800B000B\n\tTRUST_E_NOSIGNATURE                                                       Handle        = 0x800B0100\n\tCERT_E_EXPIRED                                                            Handle        = 0x800B0101\n\tCERT_E_VALIDITYPERIODNESTING                                              Handle        = 0x800B0102\n\tCERT_E_ROLE                                                               Handle        = 0x800B0103\n\tCERT_E_PATHLENCONST                                                       Handle        = 0x800B0104\n\tCERT_E_CRITICAL                                                           Handle        = 0x800B0105\n\tCERT_E_PURPOSE                                                            Handle        = 0x800B0106\n\tCERT_E_ISSUERCHAINING                                                     Handle        = 0x800B0107\n\tCERT_E_MALFORMED                                                          Handle        = 0x800B0108\n\tCERT_E_UNTRUSTEDROOT                                                      Handle        = 0x800B0109\n\tCERT_E_CHAINING                                                           Handle        = 0x800B010A\n\tTRUST_E_FAIL                                                              Handle        = 0x800B010B\n\tCERT_E_REVOKED                                                            Handle        = 0x800B010C\n\tCERT_E_UNTRUSTEDTESTROOT                                                  Handle        = 0x800B010D\n\tCERT_E_REVOCATION_FAILURE                                                 Handle        = 0x800B010E\n\tCERT_E_CN_NO_MATCH                                                        Handle        = 0x800B010F\n\tCERT_E_WRONG_USAGE                                                        Handle        = 0x800B0110\n\tTRUST_E_EXPLICIT_DISTRUST                                                 Handle        = 0x800B0111\n\tCERT_E_UNTRUSTEDCA                                                        Handle        = 0x800B0112\n\tCERT_E_INVALID_POLICY                                                     Handle        = 0x800B0113\n\tCERT_E_INVALID_NAME                                                       Handle        = 0x800B0114\n\tSPAPI_E_EXPECTED_SECTION_NAME                                             Handle        = 0x800F0000\n\tSPAPI_E_BAD_SECTION_NAME_LINE                                             Handle        = 0x800F0001\n\tSPAPI_E_SECTION_NAME_TOO_LONG                                             Handle        = 0x800F0002\n\tSPAPI_E_GENERAL_SYNTAX                                                    Handle        = 0x800F0003\n\tSPAPI_E_WRONG_INF_STYLE                                                   Handle        = 0x800F0100\n\tSPAPI_E_SECTION_NOT_FOUND                                                 Handle        = 0x800F0101\n\tSPAPI_E_LINE_NOT_FOUND                                                    Handle        = 0x800F0102\n\tSPAPI_E_NO_BACKUP                                                         Handle        = 0x800F0103\n\tSPAPI_E_NO_ASSOCIATED_CLASS                                               Handle        = 0x800F0200\n\tSPAPI_E_CLASS_MISMATCH                                                    Handle        = 0x800F0201\n\tSPAPI_E_DUPLICATE_FOUND                                                   Handle        = 0x800F0202\n\tSPAPI_E_NO_DRIVER_SELECTED                                                Handle        = 0x800F0203\n\tSPAPI_E_KEY_DOES_NOT_EXIST                                                Handle        = 0x800F0204\n\tSPAPI_E_INVALID_DEVINST_NAME                                              Handle        = 0x800F0205\n\tSPAPI_E_INVALID_CLASS                                                     Handle        = 0x800F0206\n\tSPAPI_E_DEVINST_ALREADY_EXISTS                                            Handle        = 0x800F0207\n\tSPAPI_E_DEVINFO_NOT_REGISTERED                                            Handle        = 0x800F0208\n\tSPAPI_E_INVALID_REG_PROPERTY                                              Handle        = 0x800F0209\n\tSPAPI_E_NO_INF                                                            Handle        = 0x800F020A\n\tSPAPI_E_NO_SUCH_DEVINST                                                   Handle        = 0x800F020B\n\tSPAPI_E_CANT_LOAD_CLASS_ICON                                              Handle        = 0x800F020C\n\tSPAPI_E_INVALID_CLASS_INSTALLER                                           Handle        = 0x800F020D\n\tSPAPI_E_DI_DO_DEFAULT                                                     Handle        = 0x800F020E\n\tSPAPI_E_DI_NOFILECOPY                                                     Handle        = 0x800F020F\n\tSPAPI_E_INVALID_HWPROFILE                                                 Handle        = 0x800F0210\n\tSPAPI_E_NO_DEVICE_SELECTED                                                Handle        = 0x800F0211\n\tSPAPI_E_DEVINFO_LIST_LOCKED                                               Handle        = 0x800F0212\n\tSPAPI_E_DEVINFO_DATA_LOCKED                                               Handle        = 0x800F0213\n\tSPAPI_E_DI_BAD_PATH                                                       Handle        = 0x800F0214\n\tSPAPI_E_NO_CLASSINSTALL_PARAMS                                            Handle        = 0x800F0215\n\tSPAPI_E_FILEQUEUE_LOCKED                                                  Handle        = 0x800F0216\n\tSPAPI_E_BAD_SERVICE_INSTALLSECT                                           Handle        = 0x800F0217\n\tSPAPI_E_NO_CLASS_DRIVER_LIST                                              Handle        = 0x800F0218\n\tSPAPI_E_NO_ASSOCIATED_SERVICE                                             Handle        = 0x800F0219\n\tSPAPI_E_NO_DEFAULT_DEVICE_INTERFACE                                       Handle        = 0x800F021A\n\tSPAPI_E_DEVICE_INTERFACE_ACTIVE                                           Handle        = 0x800F021B\n\tSPAPI_E_DEVICE_INTERFACE_REMOVED                                          Handle        = 0x800F021C\n\tSPAPI_E_BAD_INTERFACE_INSTALLSECT                                         Handle        = 0x800F021D\n\tSPAPI_E_NO_SUCH_INTERFACE_CLASS                                           Handle        = 0x800F021E\n\tSPAPI_E_INVALID_REFERENCE_STRING                                          Handle        = 0x800F021F\n\tSPAPI_E_INVALID_MACHINENAME                                               Handle        = 0x800F0220\n\tSPAPI_E_REMOTE_COMM_FAILURE                                               Handle        = 0x800F0221\n\tSPAPI_E_MACHINE_UNAVAILABLE                                               Handle        = 0x800F0222\n\tSPAPI_E_NO_CONFIGMGR_SERVICES                                             Handle        = 0x800F0223\n\tSPAPI_E_INVALID_PROPPAGE_PROVIDER                                         Handle        = 0x800F0224\n\tSPAPI_E_NO_SUCH_DEVICE_INTERFACE                                          Handle        = 0x800F0225\n\tSPAPI_E_DI_POSTPROCESSING_REQUIRED                                        Handle        = 0x800F0226\n\tSPAPI_E_INVALID_COINSTALLER                                               Handle        = 0x800F0227\n\tSPAPI_E_NO_COMPAT_DRIVERS                                                 Handle        = 0x800F0228\n\tSPAPI_E_NO_DEVICE_ICON                                                    Handle        = 0x800F0229\n\tSPAPI_E_INVALID_INF_LOGCONFIG                                             Handle        = 0x800F022A\n\tSPAPI_E_DI_DONT_INSTALL                                                   Handle        = 0x800F022B\n\tSPAPI_E_INVALID_FILTER_DRIVER                                             Handle        = 0x800F022C\n\tSPAPI_E_NON_WINDOWS_NT_DRIVER                                             Handle        = 0x800F022D\n\tSPAPI_E_NON_WINDOWS_DRIVER                                                Handle        = 0x800F022E\n\tSPAPI_E_NO_CATALOG_FOR_OEM_INF                                            Handle        = 0x800F022F\n\tSPAPI_E_DEVINSTALL_QUEUE_NONNATIVE                                        Handle        = 0x800F0230\n\tSPAPI_E_NOT_DISABLEABLE                                                   Handle        = 0x800F0231\n\tSPAPI_E_CANT_REMOVE_DEVINST                                               Handle        = 0x800F0232\n\tSPAPI_E_INVALID_TARGET                                                    Handle        = 0x800F0233\n\tSPAPI_E_DRIVER_NONNATIVE                                                  Handle        = 0x800F0234\n\tSPAPI_E_IN_WOW64                                                          Handle        = 0x800F0235\n\tSPAPI_E_SET_SYSTEM_RESTORE_POINT                                          Handle        = 0x800F0236\n\tSPAPI_E_INCORRECTLY_COPIED_INF                                            Handle        = 0x800F0237\n\tSPAPI_E_SCE_DISABLED                                                      Handle        = 0x800F0238\n\tSPAPI_E_UNKNOWN_EXCEPTION                                                 Handle        = 0x800F0239\n\tSPAPI_E_PNP_REGISTRY_ERROR                                                Handle        = 0x800F023A\n\tSPAPI_E_REMOTE_REQUEST_UNSUPPORTED                                        Handle        = 0x800F023B\n\tSPAPI_E_NOT_AN_INSTALLED_OEM_INF                                          Handle        = 0x800F023C\n\tSPAPI_E_INF_IN_USE_BY_DEVICES                                             Handle        = 0x800F023D\n\tSPAPI_E_DI_FUNCTION_OBSOLETE                                              Handle        = 0x800F023E\n\tSPAPI_E_NO_AUTHENTICODE_CATALOG                                           Handle        = 0x800F023F\n\tSPAPI_E_AUTHENTICODE_DISALLOWED                                           Handle        = 0x800F0240\n\tSPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER                                    Handle        = 0x800F0241\n\tSPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED                                Handle        = 0x800F0242\n\tSPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED                                Handle        = 0x800F0243\n\tSPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH                                    Handle        = 0x800F0244\n\tSPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE                                    Handle        = 0x800F0245\n\tSPAPI_E_DEVICE_INSTALLER_NOT_READY                                        Handle        = 0x800F0246\n\tSPAPI_E_DRIVER_STORE_ADD_FAILED                                           Handle        = 0x800F0247\n\tSPAPI_E_DEVICE_INSTALL_BLOCKED                                            Handle        = 0x800F0248\n\tSPAPI_E_DRIVER_INSTALL_BLOCKED                                            Handle        = 0x800F0249\n\tSPAPI_E_WRONG_INF_TYPE                                                    Handle        = 0x800F024A\n\tSPAPI_E_FILE_HASH_NOT_IN_CATALOG                                          Handle        = 0x800F024B\n\tSPAPI_E_DRIVER_STORE_DELETE_FAILED                                        Handle        = 0x800F024C\n\tSPAPI_E_UNRECOVERABLE_STACK_OVERFLOW                                      Handle        = 0x800F0300\n\tSPAPI_E_ERROR_NOT_INSTALLED                                               Handle        = 0x800F1000\n\tSCARD_S_SUCCESS                                                                         = S_OK\n\tSCARD_F_INTERNAL_ERROR                                                    Handle        = 0x80100001\n\tSCARD_E_CANCELLED                                                         Handle        = 0x80100002\n\tSCARD_E_INVALID_HANDLE                                                    Handle        = 0x80100003\n\tSCARD_E_INVALID_PARAMETER                                                 Handle        = 0x80100004\n\tSCARD_E_INVALID_TARGET                                                    Handle        = 0x80100005\n\tSCARD_E_NO_MEMORY                                                         Handle        = 0x80100006\n\tSCARD_F_WAITED_TOO_LONG                                                   Handle        = 0x80100007\n\tSCARD_E_INSUFFICIENT_BUFFER                                               Handle        = 0x80100008\n\tSCARD_E_UNKNOWN_READER                                                    Handle        = 0x80100009\n\tSCARD_E_TIMEOUT                                                           Handle        = 0x8010000A\n\tSCARD_E_SHARING_VIOLATION                                                 Handle        = 0x8010000B\n\tSCARD_E_NO_SMARTCARD                                                      Handle        = 0x8010000C\n\tSCARD_E_UNKNOWN_CARD                                                      Handle        = 0x8010000D\n\tSCARD_E_CANT_DISPOSE                                                      Handle        = 0x8010000E\n\tSCARD_E_PROTO_MISMATCH                                                    Handle        = 0x8010000F\n\tSCARD_E_NOT_READY                                                         Handle        = 0x80100010\n\tSCARD_E_INVALID_VALUE                                                     Handle        = 0x80100011\n\tSCARD_E_SYSTEM_CANCELLED                                                  Handle        = 0x80100012\n\tSCARD_F_COMM_ERROR                                                        Handle        = 0x80100013\n\tSCARD_F_UNKNOWN_ERROR                                                     Handle        = 0x80100014\n\tSCARD_E_INVALID_ATR                                                       Handle        = 0x80100015\n\tSCARD_E_NOT_TRANSACTED                                                    Handle        = 0x80100016\n\tSCARD_E_READER_UNAVAILABLE                                                Handle        = 0x80100017\n\tSCARD_P_SHUTDOWN                                                          Handle        = 0x80100018\n\tSCARD_E_PCI_TOO_SMALL                                                     Handle        = 0x80100019\n\tSCARD_E_READER_UNSUPPORTED                                                Handle        = 0x8010001A\n\tSCARD_E_DUPLICATE_READER                                                  Handle        = 0x8010001B\n\tSCARD_E_CARD_UNSUPPORTED                                                  Handle        = 0x8010001C\n\tSCARD_E_NO_SERVICE                                                        Handle        = 0x8010001D\n\tSCARD_E_SERVICE_STOPPED                                                   Handle        = 0x8010001E\n\tSCARD_E_UNEXPECTED                                                        Handle        = 0x8010001F\n\tSCARD_E_ICC_INSTALLATION                                                  Handle        = 0x80100020\n\tSCARD_E_ICC_CREATEORDER                                                   Handle        = 0x80100021\n\tSCARD_E_UNSUPPORTED_FEATURE                                               Handle        = 0x80100022\n\tSCARD_E_DIR_NOT_FOUND                                                     Handle        = 0x80100023\n\tSCARD_E_FILE_NOT_FOUND                                                    Handle        = 0x80100024\n\tSCARD_E_NO_DIR                                                            Handle        = 0x80100025\n\tSCARD_E_NO_FILE                                                           Handle        = 0x80100026\n\tSCARD_E_NO_ACCESS                                                         Handle        = 0x80100027\n\tSCARD_E_WRITE_TOO_MANY                                                    Handle        = 0x80100028\n\tSCARD_E_BAD_SEEK                                                          Handle        = 0x80100029\n\tSCARD_E_INVALID_CHV                                                       Handle        = 0x8010002A\n\tSCARD_E_UNKNOWN_RES_MNG                                                   Handle        = 0x8010002B\n\tSCARD_E_NO_SUCH_CERTIFICATE                                               Handle        = 0x8010002C\n\tSCARD_E_CERTIFICATE_UNAVAILABLE                                           Handle        = 0x8010002D\n\tSCARD_E_NO_READERS_AVAILABLE                                              Handle        = 0x8010002E\n\tSCARD_E_COMM_DATA_LOST                                                    Handle        = 0x8010002F\n\tSCARD_E_NO_KEY_CONTAINER                                                  Handle        = 0x80100030\n\tSCARD_E_SERVER_TOO_BUSY                                                   Handle        = 0x80100031\n\tSCARD_E_PIN_CACHE_EXPIRED                                                 Handle        = 0x80100032\n\tSCARD_E_NO_PIN_CACHE                                                      Handle        = 0x80100033\n\tSCARD_E_READ_ONLY_CARD                                                    Handle        = 0x80100034\n\tSCARD_W_UNSUPPORTED_CARD                                                  Handle        = 0x80100065\n\tSCARD_W_UNRESPONSIVE_CARD                                                 Handle        = 0x80100066\n\tSCARD_W_UNPOWERED_CARD                                                    Handle        = 0x80100067\n\tSCARD_W_RESET_CARD                                                        Handle        = 0x80100068\n\tSCARD_W_REMOVED_CARD                                                      Handle        = 0x80100069\n\tSCARD_W_SECURITY_VIOLATION                                                Handle        = 0x8010006A\n\tSCARD_W_WRONG_CHV                                                         Handle        = 0x8010006B\n\tSCARD_W_CHV_BLOCKED                                                       Handle        = 0x8010006C\n\tSCARD_W_EOF                                                               Handle        = 0x8010006D\n\tSCARD_W_CANCELLED_BY_USER                                                 Handle        = 0x8010006E\n\tSCARD_W_CARD_NOT_AUTHENTICATED                                            Handle        = 0x8010006F\n\tSCARD_W_CACHE_ITEM_NOT_FOUND                                              Handle        = 0x80100070\n\tSCARD_W_CACHE_ITEM_STALE                                                  Handle        = 0x80100071\n\tSCARD_W_CACHE_ITEM_TOO_BIG                                                Handle        = 0x80100072\n\tCOMADMIN_E_OBJECTERRORS                                                   Handle        = 0x80110401\n\tCOMADMIN_E_OBJECTINVALID                                                  Handle        = 0x80110402\n\tCOMADMIN_E_KEYMISSING                                                     Handle        = 0x80110403\n\tCOMADMIN_E_ALREADYINSTALLED                                               Handle        = 0x80110404\n\tCOMADMIN_E_APP_FILE_WRITEFAIL                                             Handle        = 0x80110407\n\tCOMADMIN_E_APP_FILE_READFAIL                                              Handle        = 0x80110408\n\tCOMADMIN_E_APP_FILE_VERSION                                               Handle        = 0x80110409\n\tCOMADMIN_E_BADPATH                                                        Handle        = 0x8011040A\n\tCOMADMIN_E_APPLICATIONEXISTS                                              Handle        = 0x8011040B\n\tCOMADMIN_E_ROLEEXISTS                                                     Handle        = 0x8011040C\n\tCOMADMIN_E_CANTCOPYFILE                                                   Handle        = 0x8011040D\n\tCOMADMIN_E_NOUSER                                                         Handle        = 0x8011040F\n\tCOMADMIN_E_INVALIDUSERIDS                                                 Handle        = 0x80110410\n\tCOMADMIN_E_NOREGISTRYCLSID                                                Handle        = 0x80110411\n\tCOMADMIN_E_BADREGISTRYPROGID                                              Handle        = 0x80110412\n\tCOMADMIN_E_AUTHENTICATIONLEVEL                                            Handle        = 0x80110413\n\tCOMADMIN_E_USERPASSWDNOTVALID                                             Handle        = 0x80110414\n\tCOMADMIN_E_CLSIDORIIDMISMATCH                                             Handle        = 0x80110418\n\tCOMADMIN_E_REMOTEINTERFACE                                                Handle        = 0x80110419\n\tCOMADMIN_E_DLLREGISTERSERVER                                              Handle        = 0x8011041A\n\tCOMADMIN_E_NOSERVERSHARE                                                  Handle        = 0x8011041B\n\tCOMADMIN_E_DLLLOADFAILED                                                  Handle        = 0x8011041D\n\tCOMADMIN_E_BADREGISTRYLIBID                                               Handle        = 0x8011041E\n\tCOMADMIN_E_APPDIRNOTFOUND                                                 Handle        = 0x8011041F\n\tCOMADMIN_E_REGISTRARFAILED                                                Handle        = 0x80110423\n\tCOMADMIN_E_COMPFILE_DOESNOTEXIST                                          Handle        = 0x80110424\n\tCOMADMIN_E_COMPFILE_LOADDLLFAIL                                           Handle        = 0x80110425\n\tCOMADMIN_E_COMPFILE_GETCLASSOBJ                                           Handle        = 0x80110426\n\tCOMADMIN_E_COMPFILE_CLASSNOTAVAIL                                         Handle        = 0x80110427\n\tCOMADMIN_E_COMPFILE_BADTLB                                                Handle        = 0x80110428\n\tCOMADMIN_E_COMPFILE_NOTINSTALLABLE                                        Handle        = 0x80110429\n\tCOMADMIN_E_NOTCHANGEABLE                                                  Handle        = 0x8011042A\n\tCOMADMIN_E_NOTDELETEABLE                                                  Handle        = 0x8011042B\n\tCOMADMIN_E_SESSION                                                        Handle        = 0x8011042C\n\tCOMADMIN_E_COMP_MOVE_LOCKED                                               Handle        = 0x8011042D\n\tCOMADMIN_E_COMP_MOVE_BAD_DEST                                             Handle        = 0x8011042E\n\tCOMADMIN_E_REGISTERTLB                                                    Handle        = 0x80110430\n\tCOMADMIN_E_SYSTEMAPP                                                      Handle        = 0x80110433\n\tCOMADMIN_E_COMPFILE_NOREGISTRAR                                           Handle        = 0x80110434\n\tCOMADMIN_E_COREQCOMPINSTALLED                                             Handle        = 0x80110435\n\tCOMADMIN_E_SERVICENOTINSTALLED                                            Handle        = 0x80110436\n\tCOMADMIN_E_PROPERTYSAVEFAILED                                             Handle        = 0x80110437\n\tCOMADMIN_E_OBJECTEXISTS                                                   Handle        = 0x80110438\n\tCOMADMIN_E_COMPONENTEXISTS                                                Handle        = 0x80110439\n\tCOMADMIN_E_REGFILE_CORRUPT                                                Handle        = 0x8011043B\n\tCOMADMIN_E_PROPERTY_OVERFLOW                                              Handle        = 0x8011043C\n\tCOMADMIN_E_NOTINREGISTRY                                                  Handle        = 0x8011043E\n\tCOMADMIN_E_OBJECTNOTPOOLABLE                                              Handle        = 0x8011043F\n\tCOMADMIN_E_APPLID_MATCHES_CLSID                                           Handle        = 0x80110446\n\tCOMADMIN_E_ROLE_DOES_NOT_EXIST                                            Handle        = 0x80110447\n\tCOMADMIN_E_START_APP_NEEDS_COMPONENTS                                     Handle        = 0x80110448\n\tCOMADMIN_E_REQUIRES_DIFFERENT_PLATFORM                                    Handle        = 0x80110449\n\tCOMADMIN_E_CAN_NOT_EXPORT_APP_PROXY                                       Handle        = 0x8011044A\n\tCOMADMIN_E_CAN_NOT_START_APP                                              Handle        = 0x8011044B\n\tCOMADMIN_E_CAN_NOT_EXPORT_SYS_APP                                         Handle        = 0x8011044C\n\tCOMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT                                    Handle        = 0x8011044D\n\tCOMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER                                  Handle        = 0x8011044E\n\tCOMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE                                     Handle        = 0x8011044F\n\tCOMADMIN_E_BASE_PARTITION_ONLY                                            Handle        = 0x80110450\n\tCOMADMIN_E_START_APP_DISABLED                                             Handle        = 0x80110451\n\tCOMADMIN_E_CAT_DUPLICATE_PARTITION_NAME                                   Handle        = 0x80110457\n\tCOMADMIN_E_CAT_INVALID_PARTITION_NAME                                     Handle        = 0x80110458\n\tCOMADMIN_E_CAT_PARTITION_IN_USE                                           Handle        = 0x80110459\n\tCOMADMIN_E_FILE_PARTITION_DUPLICATE_FILES                                 Handle        = 0x8011045A\n\tCOMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED                            Handle        = 0x8011045B\n\tCOMADMIN_E_AMBIGUOUS_APPLICATION_NAME                                     Handle        = 0x8011045C\n\tCOMADMIN_E_AMBIGUOUS_PARTITION_NAME                                       Handle        = 0x8011045D\n\tCOMADMIN_E_REGDB_NOTINITIALIZED                                           Handle        = 0x80110472\n\tCOMADMIN_E_REGDB_NOTOPEN                                                  Handle        = 0x80110473\n\tCOMADMIN_E_REGDB_SYSTEMERR                                                Handle        = 0x80110474\n\tCOMADMIN_E_REGDB_ALREADYRUNNING                                           Handle        = 0x80110475\n\tCOMADMIN_E_MIG_VERSIONNOTSUPPORTED                                        Handle        = 0x80110480\n\tCOMADMIN_E_MIG_SCHEMANOTFOUND                                             Handle        = 0x80110481\n\tCOMADMIN_E_CAT_BITNESSMISMATCH                                            Handle        = 0x80110482\n\tCOMADMIN_E_CAT_UNACCEPTABLEBITNESS                                        Handle        = 0x80110483\n\tCOMADMIN_E_CAT_WRONGAPPBITNESS                                            Handle        = 0x80110484\n\tCOMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED                                 Handle        = 0x80110485\n\tCOMADMIN_E_CAT_SERVERFAULT                                                Handle        = 0x80110486\n\tCOMQC_E_APPLICATION_NOT_QUEUED                                            Handle        = 0x80110600\n\tCOMQC_E_NO_QUEUEABLE_INTERFACES                                           Handle        = 0x80110601\n\tCOMQC_E_QUEUING_SERVICE_NOT_AVAILABLE                                     Handle        = 0x80110602\n\tCOMQC_E_NO_IPERSISTSTREAM                                                 Handle        = 0x80110603\n\tCOMQC_E_BAD_MESSAGE                                                       Handle        = 0x80110604\n\tCOMQC_E_UNAUTHENTICATED                                                   Handle        = 0x80110605\n\tCOMQC_E_UNTRUSTED_ENQUEUER                                                Handle        = 0x80110606\n\tMSDTC_E_DUPLICATE_RESOURCE                                                Handle        = 0x80110701\n\tCOMADMIN_E_OBJECT_PARENT_MISSING                                          Handle        = 0x80110808\n\tCOMADMIN_E_OBJECT_DOES_NOT_EXIST                                          Handle        = 0x80110809\n\tCOMADMIN_E_APP_NOT_RUNNING                                                Handle        = 0x8011080A\n\tCOMADMIN_E_INVALID_PARTITION                                              Handle        = 0x8011080B\n\tCOMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE                              Handle        = 0x8011080D\n\tCOMADMIN_E_USER_IN_SET                                                    Handle        = 0x8011080E\n\tCOMADMIN_E_CANTRECYCLELIBRARYAPPS                                         Handle        = 0x8011080F\n\tCOMADMIN_E_CANTRECYCLESERVICEAPPS                                         Handle        = 0x80110811\n\tCOMADMIN_E_PROCESSALREADYRECYCLED                                         Handle        = 0x80110812\n\tCOMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED                                  Handle        = 0x80110813\n\tCOMADMIN_E_CANTMAKEINPROCSERVICE                                          Handle        = 0x80110814\n\tCOMADMIN_E_PROGIDINUSEBYCLSID                                             Handle        = 0x80110815\n\tCOMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET                                   Handle        = 0x80110816\n\tCOMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED                                  Handle        = 0x80110817\n\tCOMADMIN_E_PARTITION_ACCESSDENIED                                         Handle        = 0x80110818\n\tCOMADMIN_E_PARTITION_MSI_ONLY                                             Handle        = 0x80110819\n\tCOMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT                          Handle        = 0x8011081A\n\tCOMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS                  Handle        = 0x8011081B\n\tCOMADMIN_E_COMP_MOVE_SOURCE                                               Handle        = 0x8011081C\n\tCOMADMIN_E_COMP_MOVE_DEST                                                 Handle        = 0x8011081D\n\tCOMADMIN_E_COMP_MOVE_PRIVATE                                              Handle        = 0x8011081E\n\tCOMADMIN_E_BASEPARTITION_REQUIRED_IN_SET                                  Handle        = 0x8011081F\n\tCOMADMIN_E_CANNOT_ALIAS_EVENTCLASS                                        Handle        = 0x80110820\n\tCOMADMIN_E_PRIVATE_ACCESSDENIED                                           Handle        = 0x80110821\n\tCOMADMIN_E_SAFERINVALID                                                   Handle        = 0x80110822\n\tCOMADMIN_E_REGISTRY_ACCESSDENIED                                          Handle        = 0x80110823\n\tCOMADMIN_E_PARTITIONS_DISABLED                                            Handle        = 0x80110824\n\tWER_S_REPORT_DEBUG                                                        Handle        = 0x001B0000\n\tWER_S_REPORT_UPLOADED                                                     Handle        = 0x001B0001\n\tWER_S_REPORT_QUEUED                                                       Handle        = 0x001B0002\n\tWER_S_DISABLED                                                            Handle        = 0x001B0003\n\tWER_S_SUSPENDED_UPLOAD                                                    Handle        = 0x001B0004\n\tWER_S_DISABLED_QUEUE                                                      Handle        = 0x001B0005\n\tWER_S_DISABLED_ARCHIVE                                                    Handle        = 0x001B0006\n\tWER_S_REPORT_ASYNC                                                        Handle        = 0x001B0007\n\tWER_S_IGNORE_ASSERT_INSTANCE                                              Handle        = 0x001B0008\n\tWER_S_IGNORE_ALL_ASSERTS                                                  Handle        = 0x001B0009\n\tWER_S_ASSERT_CONTINUE                                                     Handle        = 0x001B000A\n\tWER_S_THROTTLED                                                           Handle        = 0x001B000B\n\tWER_S_REPORT_UPLOADED_CAB                                                 Handle        = 0x001B000C\n\tWER_E_CRASH_FAILURE                                                       Handle        = 0x801B8000\n\tWER_E_CANCELED                                                            Handle        = 0x801B8001\n\tWER_E_NETWORK_FAILURE                                                     Handle        = 0x801B8002\n\tWER_E_NOT_INITIALIZED                                                     Handle        = 0x801B8003\n\tWER_E_ALREADY_REPORTING                                                   Handle        = 0x801B8004\n\tWER_E_DUMP_THROTTLED                                                      Handle        = 0x801B8005\n\tWER_E_INSUFFICIENT_CONSENT                                                Handle        = 0x801B8006\n\tWER_E_TOO_HEAVY                                                           Handle        = 0x801B8007\n\tERROR_FLT_IO_COMPLETE                                                     Handle        = 0x001F0001\n\tERROR_FLT_NO_HANDLER_DEFINED                                              Handle        = 0x801F0001\n\tERROR_FLT_CONTEXT_ALREADY_DEFINED                                         Handle        = 0x801F0002\n\tERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST                                    Handle        = 0x801F0003\n\tERROR_FLT_DISALLOW_FAST_IO                                                Handle        = 0x801F0004\n\tERROR_FLT_INVALID_NAME_REQUEST                                            Handle        = 0x801F0005\n\tERROR_FLT_NOT_SAFE_TO_POST_OPERATION                                      Handle        = 0x801F0006\n\tERROR_FLT_NOT_INITIALIZED                                                 Handle        = 0x801F0007\n\tERROR_FLT_FILTER_NOT_READY                                                Handle        = 0x801F0008\n\tERROR_FLT_POST_OPERATION_CLEANUP                                          Handle        = 0x801F0009\n\tERROR_FLT_INTERNAL_ERROR                                                  Handle        = 0x801F000A\n\tERROR_FLT_DELETING_OBJECT                                                 Handle        = 0x801F000B\n\tERROR_FLT_MUST_BE_NONPAGED_POOL                                           Handle        = 0x801F000C\n\tERROR_FLT_DUPLICATE_ENTRY                                                 Handle        = 0x801F000D\n\tERROR_FLT_CBDQ_DISABLED                                                   Handle        = 0x801F000E\n\tERROR_FLT_DO_NOT_ATTACH                                                   Handle        = 0x801F000F\n\tERROR_FLT_DO_NOT_DETACH                                                   Handle        = 0x801F0010\n\tERROR_FLT_INSTANCE_ALTITUDE_COLLISION                                     Handle        = 0x801F0011\n\tERROR_FLT_INSTANCE_NAME_COLLISION                                         Handle        = 0x801F0012\n\tERROR_FLT_FILTER_NOT_FOUND                                                Handle        = 0x801F0013\n\tERROR_FLT_VOLUME_NOT_FOUND                                                Handle        = 0x801F0014\n\tERROR_FLT_INSTANCE_NOT_FOUND                                              Handle        = 0x801F0015\n\tERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND                                    Handle        = 0x801F0016\n\tERROR_FLT_INVALID_CONTEXT_REGISTRATION                                    Handle        = 0x801F0017\n\tERROR_FLT_NAME_CACHE_MISS                                                 Handle        = 0x801F0018\n\tERROR_FLT_NO_DEVICE_OBJECT                                                Handle        = 0x801F0019\n\tERROR_FLT_VOLUME_ALREADY_MOUNTED                                          Handle        = 0x801F001A\n\tERROR_FLT_ALREADY_ENLISTED                                                Handle        = 0x801F001B\n\tERROR_FLT_CONTEXT_ALREADY_LINKED                                          Handle        = 0x801F001C\n\tERROR_FLT_NO_WAITER_FOR_REPLY                                             Handle        = 0x801F0020\n\tERROR_FLT_REGISTRATION_BUSY                                               Handle        = 0x801F0023\n\tERROR_HUNG_DISPLAY_DRIVER_THREAD                                          Handle        = 0x80260001\n\tDWM_E_COMPOSITIONDISABLED                                                 Handle        = 0x80263001\n\tDWM_E_REMOTING_NOT_SUPPORTED                                              Handle        = 0x80263002\n\tDWM_E_NO_REDIRECTION_SURFACE_AVAILABLE                                    Handle        = 0x80263003\n\tDWM_E_NOT_QUEUING_PRESENTS                                                Handle        = 0x80263004\n\tDWM_E_ADAPTER_NOT_FOUND                                                   Handle        = 0x80263005\n\tDWM_S_GDI_REDIRECTION_SURFACE                                             Handle        = 0x00263005\n\tDWM_E_TEXTURE_TOO_LARGE                                                   Handle        = 0x80263007\n\tDWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI                                 Handle        = 0x00263008\n\tERROR_MONITOR_NO_DESCRIPTOR                                               Handle        = 0x00261001\n\tERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT                                   Handle        = 0x00261002\n\tERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM                                 Handle        = 0xC0261003\n\tERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK                               Handle        = 0xC0261004\n\tERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED                           Handle        = 0xC0261005\n\tERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK                          Handle        = 0xC0261006\n\tERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK                          Handle        = 0xC0261007\n\tERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA                                     Handle        = 0xC0261008\n\tERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK                               Handle        = 0xC0261009\n\tERROR_MONITOR_INVALID_MANUFACTURE_DATE                                    Handle        = 0xC026100A\n\tERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER                                   Handle        = 0xC0262000\n\tERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER                                    Handle        = 0xC0262001\n\tERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER                                    Handle        = 0xC0262002\n\tERROR_GRAPHICS_ADAPTER_WAS_RESET                                          Handle        = 0xC0262003\n\tERROR_GRAPHICS_INVALID_DRIVER_MODEL                                       Handle        = 0xC0262004\n\tERROR_GRAPHICS_PRESENT_MODE_CHANGED                                       Handle        = 0xC0262005\n\tERROR_GRAPHICS_PRESENT_OCCLUDED                                           Handle        = 0xC0262006\n\tERROR_GRAPHICS_PRESENT_DENIED                                             Handle        = 0xC0262007\n\tERROR_GRAPHICS_CANNOTCOLORCONVERT                                         Handle        = 0xC0262008\n\tERROR_GRAPHICS_DRIVER_MISMATCH                                            Handle        = 0xC0262009\n\tERROR_GRAPHICS_PARTIAL_DATA_POPULATED                                     Handle        = 0x4026200A\n\tERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED                               Handle        = 0xC026200B\n\tERROR_GRAPHICS_PRESENT_UNOCCLUDED                                         Handle        = 0xC026200C\n\tERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE                                     Handle        = 0xC026200D\n\tERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED                                Handle        = 0xC026200E\n\tERROR_GRAPHICS_PRESENT_INVALID_WINDOW                                     Handle        = 0xC026200F\n\tERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND                                   Handle        = 0xC0262010\n\tERROR_GRAPHICS_VAIL_STATE_CHANGED                                         Handle        = 0xC0262011\n\tERROR_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN                         Handle        = 0xC0262012\n\tERROR_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED                            Handle        = 0xC0262013\n\tERROR_GRAPHICS_NO_VIDEO_MEMORY                                            Handle        = 0xC0262100\n\tERROR_GRAPHICS_CANT_LOCK_MEMORY                                           Handle        = 0xC0262101\n\tERROR_GRAPHICS_ALLOCATION_BUSY                                            Handle        = 0xC0262102\n\tERROR_GRAPHICS_TOO_MANY_REFERENCES                                        Handle        = 0xC0262103\n\tERROR_GRAPHICS_TRY_AGAIN_LATER                                            Handle        = 0xC0262104\n\tERROR_GRAPHICS_TRY_AGAIN_NOW                                              Handle        = 0xC0262105\n\tERROR_GRAPHICS_ALLOCATION_INVALID                                         Handle        = 0xC0262106\n\tERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE                           Handle        = 0xC0262107\n\tERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED                           Handle        = 0xC0262108\n\tERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION                               Handle        = 0xC0262109\n\tERROR_GRAPHICS_INVALID_ALLOCATION_USAGE                                   Handle        = 0xC0262110\n\tERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION                              Handle        = 0xC0262111\n\tERROR_GRAPHICS_ALLOCATION_CLOSED                                          Handle        = 0xC0262112\n\tERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE                                Handle        = 0xC0262113\n\tERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE                                  Handle        = 0xC0262114\n\tERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE                                    Handle        = 0xC0262115\n\tERROR_GRAPHICS_ALLOCATION_CONTENT_LOST                                    Handle        = 0xC0262116\n\tERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE                                    Handle        = 0xC0262200\n\tERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION                                Handle        = 0x40262201\n\tERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY                                     Handle        = 0xC0262300\n\tERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED                               Handle        = 0xC0262301\n\tERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED                     Handle        = 0xC0262302\n\tERROR_GRAPHICS_INVALID_VIDPN                                              Handle        = 0xC0262303\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE                               Handle        = 0xC0262304\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET                               Handle        = 0xC0262305\n\tERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED                               Handle        = 0xC0262306\n\tERROR_GRAPHICS_MODE_NOT_PINNED                                            Handle        = 0x00262307\n\tERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET                                Handle        = 0xC0262308\n\tERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET                                Handle        = 0xC0262309\n\tERROR_GRAPHICS_INVALID_FREQUENCY                                          Handle        = 0xC026230A\n\tERROR_GRAPHICS_INVALID_ACTIVE_REGION                                      Handle        = 0xC026230B\n\tERROR_GRAPHICS_INVALID_TOTAL_REGION                                       Handle        = 0xC026230C\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE                          Handle        = 0xC0262310\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE                          Handle        = 0xC0262311\n\tERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET                             Handle        = 0xC0262312\n\tERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY                                   Handle        = 0xC0262313\n\tERROR_GRAPHICS_MODE_ALREADY_IN_MODESET                                    Handle        = 0xC0262314\n\tERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET                              Handle        = 0xC0262315\n\tERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET                              Handle        = 0xC0262316\n\tERROR_GRAPHICS_SOURCE_ALREADY_IN_SET                                      Handle        = 0xC0262317\n\tERROR_GRAPHICS_TARGET_ALREADY_IN_SET                                      Handle        = 0xC0262318\n\tERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH                                 Handle        = 0xC0262319\n\tERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY                              Handle        = 0xC026231A\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET                          Handle        = 0xC026231B\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE                             Handle        = 0xC026231C\n\tERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET                                  Handle        = 0xC026231D\n\tERROR_GRAPHICS_NO_PREFERRED_MODE                                          Handle        = 0x0026231E\n\tERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET                              Handle        = 0xC026231F\n\tERROR_GRAPHICS_STALE_MODESET                                              Handle        = 0xC0262320\n\tERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET                              Handle        = 0xC0262321\n\tERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE                                Handle        = 0xC0262322\n\tERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN                            Handle        = 0xC0262323\n\tERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE                                     Handle        = 0xC0262324\n\tERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION            Handle        = 0xC0262325\n\tERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES                    Handle        = 0xC0262326\n\tERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY                                       Handle        = 0xC0262327\n\tERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE                      Handle        = 0xC0262328\n\tERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET                      Handle        = 0xC0262329\n\tERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET                               Handle        = 0xC026232A\n\tERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR                                  Handle        = 0xC026232B\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET                               Handle        = 0xC026232C\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET                           Handle        = 0xC026232D\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE                        Handle        = 0xC026232E\n\tERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE                           Handle        = 0xC026232F\n\tERROR_GRAPHICS_RESOURCES_NOT_RELATED                                      Handle        = 0xC0262330\n\tERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE                                   Handle        = 0xC0262331\n\tERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE                                   Handle        = 0xC0262332\n\tERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET                                  Handle        = 0xC0262333\n\tERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER               Handle        = 0xC0262334\n\tERROR_GRAPHICS_NO_VIDPNMGR                                                Handle        = 0xC0262335\n\tERROR_GRAPHICS_NO_ACTIVE_VIDPN                                            Handle        = 0xC0262336\n\tERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY                                       Handle        = 0xC0262337\n\tERROR_GRAPHICS_MONITOR_NOT_CONNECTED                                      Handle        = 0xC0262338\n\tERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY                                     Handle        = 0xC0262339\n\tERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE                                Handle        = 0xC026233A\n\tERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE                                 Handle        = 0xC026233B\n\tERROR_GRAPHICS_INVALID_STRIDE                                             Handle        = 0xC026233C\n\tERROR_GRAPHICS_INVALID_PIXELFORMAT                                        Handle        = 0xC026233D\n\tERROR_GRAPHICS_INVALID_COLORBASIS                                         Handle        = 0xC026233E\n\tERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE                               Handle        = 0xC026233F\n\tERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY                                     Handle        = 0xC0262340\n\tERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT                         Handle        = 0xC0262341\n\tERROR_GRAPHICS_VIDPN_SOURCE_IN_USE                                        Handle        = 0xC0262342\n\tERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN                                   Handle        = 0xC0262343\n\tERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL                            Handle        = 0xC0262344\n\tERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION               Handle        = 0xC0262345\n\tERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED         Handle        = 0xC0262346\n\tERROR_GRAPHICS_INVALID_GAMMA_RAMP                                         Handle        = 0xC0262347\n\tERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED                                   Handle        = 0xC0262348\n\tERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED                                Handle        = 0xC0262349\n\tERROR_GRAPHICS_MODE_NOT_IN_MODESET                                        Handle        = 0xC026234A\n\tERROR_GRAPHICS_DATASET_IS_EMPTY                                           Handle        = 0x0026234B\n\tERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET                                Handle        = 0x0026234C\n\tERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON               Handle        = 0xC026234D\n\tERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE                                  Handle        = 0xC026234E\n\tERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE                                Handle        = 0xC026234F\n\tERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS                          Handle        = 0xC0262350\n\tERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED            Handle        = 0x00262351\n\tERROR_GRAPHICS_INVALID_SCANLINE_ORDERING                                  Handle        = 0xC0262352\n\tERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED                               Handle        = 0xC0262353\n\tERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS                           Handle        = 0xC0262354\n\tERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT                                Handle        = 0xC0262355\n\tERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM                             Handle        = 0xC0262356\n\tERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN                          Handle        = 0xC0262357\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT                  Handle        = 0xC0262358\n\tERROR_GRAPHICS_MAX_NUM_PATHS_REACHED                                      Handle        = 0xC0262359\n\tERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION                         Handle        = 0xC026235A\n\tERROR_GRAPHICS_INVALID_CLIENT_TYPE                                        Handle        = 0xC026235B\n\tERROR_GRAPHICS_CLIENTVIDPN_NOT_SET                                        Handle        = 0xC026235C\n\tERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED                          Handle        = 0xC0262400\n\tERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED                             Handle        = 0xC0262401\n\tERROR_GRAPHICS_UNKNOWN_CHILD_STATUS                                       Handle        = 0x4026242F\n\tERROR_GRAPHICS_NOT_A_LINKED_ADAPTER                                       Handle        = 0xC0262430\n\tERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED                                    Handle        = 0xC0262431\n\tERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED                                  Handle        = 0xC0262432\n\tERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY                                    Handle        = 0xC0262433\n\tERROR_GRAPHICS_CHAINLINKS_NOT_STARTED                                     Handle        = 0xC0262434\n\tERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON                                  Handle        = 0xC0262435\n\tERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE                             Handle        = 0xC0262436\n\tERROR_GRAPHICS_LEADLINK_START_DEFERRED                                    Handle        = 0x40262437\n\tERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER                                     Handle        = 0xC0262438\n\tERROR_GRAPHICS_POLLING_TOO_FREQUENTLY                                     Handle        = 0x40262439\n\tERROR_GRAPHICS_START_DEFERRED                                             Handle        = 0x4026243A\n\tERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED                                Handle        = 0xC026243B\n\tERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS                                    Handle        = 0x4026243C\n\tERROR_GRAPHICS_OPM_NOT_SUPPORTED                                          Handle        = 0xC0262500\n\tERROR_GRAPHICS_COPP_NOT_SUPPORTED                                         Handle        = 0xC0262501\n\tERROR_GRAPHICS_UAB_NOT_SUPPORTED                                          Handle        = 0xC0262502\n\tERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS                           Handle        = 0xC0262503\n\tERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST                                 Handle        = 0xC0262505\n\tERROR_GRAPHICS_OPM_INTERNAL_ERROR                                         Handle        = 0xC026250B\n\tERROR_GRAPHICS_OPM_INVALID_HANDLE                                         Handle        = 0xC026250C\n\tERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH                             Handle        = 0xC026250E\n\tERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED                                  Handle        = 0xC026250F\n\tERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED                                   Handle        = 0xC0262510\n\tERROR_GRAPHICS_PVP_HFS_FAILED                                             Handle        = 0xC0262511\n\tERROR_GRAPHICS_OPM_INVALID_SRM                                            Handle        = 0xC0262512\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP                           Handle        = 0xC0262513\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP                            Handle        = 0xC0262514\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA                          Handle        = 0xC0262515\n\tERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET                                     Handle        = 0xC0262516\n\tERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH                                    Handle        = 0xC0262517\n\tERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE                       Handle        = 0xC0262518\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS                          Handle        = 0xC026251A\n\tERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS                        Handle        = 0xC026251B\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS              Handle        = 0xC026251C\n\tERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST                            Handle        = 0xC026251D\n\tERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR                                  Handle        = 0xC026251E\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS               Handle        = 0xC026251F\n\tERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED                                Handle        = 0xC0262520\n\tERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST                          Handle        = 0xC0262521\n\tERROR_GRAPHICS_I2C_NOT_SUPPORTED                                          Handle        = 0xC0262580\n\tERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST                                  Handle        = 0xC0262581\n\tERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA                                Handle        = 0xC0262582\n\tERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA                                   Handle        = 0xC0262583\n\tERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED                                    Handle        = 0xC0262584\n\tERROR_GRAPHICS_DDCCI_INVALID_DATA                                         Handle        = 0xC0262585\n\tERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE          Handle        = 0xC0262586\n\tERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING                            Handle        = 0xC0262587\n\tERROR_GRAPHICS_MCA_INTERNAL_ERROR                                         Handle        = 0xC0262588\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND                              Handle        = 0xC0262589\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH                               Handle        = 0xC026258A\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM                             Handle        = 0xC026258B\n\tERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE                            Handle        = 0xC026258C\n\tERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS                                   Handle        = 0xC026258D\n\tERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE     Handle        = 0xC02625D8\n\tERROR_GRAPHICS_MCA_INVALID_VCP_VERSION                                    Handle        = 0xC02625D9\n\tERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION                    Handle        = 0xC02625DA\n\tERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH                                  Handle        = 0xC02625DB\n\tERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION                               Handle        = 0xC02625DC\n\tERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED                       Handle        = 0xC02625DE\n\tERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE                          Handle        = 0xC02625DF\n\tERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED                             Handle        = 0xC02625E0\n\tERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME                      Handle        = 0xC02625E1\n\tERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP                     Handle        = 0xC02625E2\n\tERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED                            Handle        = 0xC02625E3\n\tERROR_GRAPHICS_INVALID_POINTER                                            Handle        = 0xC02625E4\n\tERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE                   Handle        = 0xC02625E5\n\tERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL                                  Handle        = 0xC02625E6\n\tERROR_GRAPHICS_INTERNAL_ERROR                                             Handle        = 0xC02625E7\n\tERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS                            Handle        = 0xC02605E8\n\tNAP_E_INVALID_PACKET                                                      Handle        = 0x80270001\n\tNAP_E_MISSING_SOH                                                         Handle        = 0x80270002\n\tNAP_E_CONFLICTING_ID                                                      Handle        = 0x80270003\n\tNAP_E_NO_CACHED_SOH                                                       Handle        = 0x80270004\n\tNAP_E_STILL_BOUND                                                         Handle        = 0x80270005\n\tNAP_E_NOT_REGISTERED                                                      Handle        = 0x80270006\n\tNAP_E_NOT_INITIALIZED                                                     Handle        = 0x80270007\n\tNAP_E_MISMATCHED_ID                                                       Handle        = 0x80270008\n\tNAP_E_NOT_PENDING                                                         Handle        = 0x80270009\n\tNAP_E_ID_NOT_FOUND                                                        Handle        = 0x8027000A\n\tNAP_E_MAXSIZE_TOO_SMALL                                                   Handle        = 0x8027000B\n\tNAP_E_SERVICE_NOT_RUNNING                                                 Handle        = 0x8027000C\n\tNAP_S_CERT_ALREADY_PRESENT                                                Handle        = 0x0027000D\n\tNAP_E_ENTITY_DISABLED                                                     Handle        = 0x8027000E\n\tNAP_E_NETSH_GROUPPOLICY_ERROR                                             Handle        = 0x8027000F\n\tNAP_E_TOO_MANY_CALLS                                                      Handle        = 0x80270010\n\tNAP_E_SHV_CONFIG_EXISTED                                                  Handle        = 0x80270011\n\tNAP_E_SHV_CONFIG_NOT_FOUND                                                Handle        = 0x80270012\n\tNAP_E_SHV_TIMEOUT                                                         Handle        = 0x80270013\n\tTPM_E_ERROR_MASK                                                          Handle        = 0x80280000\n\tTPM_E_AUTHFAIL                                                            Handle        = 0x80280001\n\tTPM_E_BADINDEX                                                            Handle        = 0x80280002\n\tTPM_E_BAD_PARAMETER                                                       Handle        = 0x80280003\n\tTPM_E_AUDITFAILURE                                                        Handle        = 0x80280004\n\tTPM_E_CLEAR_DISABLED                                                      Handle        = 0x80280005\n\tTPM_E_DEACTIVATED                                                         Handle        = 0x80280006\n\tTPM_E_DISABLED                                                            Handle        = 0x80280007\n\tTPM_E_DISABLED_CMD                                                        Handle        = 0x80280008\n\tTPM_E_FAIL                                                                Handle        = 0x80280009\n\tTPM_E_BAD_ORDINAL                                                         Handle        = 0x8028000A\n\tTPM_E_INSTALL_DISABLED                                                    Handle        = 0x8028000B\n\tTPM_E_INVALID_KEYHANDLE                                                   Handle        = 0x8028000C\n\tTPM_E_KEYNOTFOUND                                                         Handle        = 0x8028000D\n\tTPM_E_INAPPROPRIATE_ENC                                                   Handle        = 0x8028000E\n\tTPM_E_MIGRATEFAIL                                                         Handle        = 0x8028000F\n\tTPM_E_INVALID_PCR_INFO                                                    Handle        = 0x80280010\n\tTPM_E_NOSPACE                                                             Handle        = 0x80280011\n\tTPM_E_NOSRK                                                               Handle        = 0x80280012\n\tTPM_E_NOTSEALED_BLOB                                                      Handle        = 0x80280013\n\tTPM_E_OWNER_SET                                                           Handle        = 0x80280014\n\tTPM_E_RESOURCES                                                           Handle        = 0x80280015\n\tTPM_E_SHORTRANDOM                                                         Handle        = 0x80280016\n\tTPM_E_SIZE                                                                Handle        = 0x80280017\n\tTPM_E_WRONGPCRVAL                                                         Handle        = 0x80280018\n\tTPM_E_BAD_PARAM_SIZE                                                      Handle        = 0x80280019\n\tTPM_E_SHA_THREAD                                                          Handle        = 0x8028001A\n\tTPM_E_SHA_ERROR                                                           Handle        = 0x8028001B\n\tTPM_E_FAILEDSELFTEST                                                      Handle        = 0x8028001C\n\tTPM_E_AUTH2FAIL                                                           Handle        = 0x8028001D\n\tTPM_E_BADTAG                                                              Handle        = 0x8028001E\n\tTPM_E_IOERROR                                                             Handle        = 0x8028001F\n\tTPM_E_ENCRYPT_ERROR                                                       Handle        = 0x80280020\n\tTPM_E_DECRYPT_ERROR                                                       Handle        = 0x80280021\n\tTPM_E_INVALID_AUTHHANDLE                                                  Handle        = 0x80280022\n\tTPM_E_NO_ENDORSEMENT                                                      Handle        = 0x80280023\n\tTPM_E_INVALID_KEYUSAGE                                                    Handle        = 0x80280024\n\tTPM_E_WRONG_ENTITYTYPE                                                    Handle        = 0x80280025\n\tTPM_E_INVALID_POSTINIT                                                    Handle        = 0x80280026\n\tTPM_E_INAPPROPRIATE_SIG                                                   Handle        = 0x80280027\n\tTPM_E_BAD_KEY_PROPERTY                                                    Handle        = 0x80280028\n\tTPM_E_BAD_MIGRATION                                                       Handle        = 0x80280029\n\tTPM_E_BAD_SCHEME                                                          Handle        = 0x8028002A\n\tTPM_E_BAD_DATASIZE                                                        Handle        = 0x8028002B\n\tTPM_E_BAD_MODE                                                            Handle        = 0x8028002C\n\tTPM_E_BAD_PRESENCE                                                        Handle        = 0x8028002D\n\tTPM_E_BAD_VERSION                                                         Handle        = 0x8028002E\n\tTPM_E_NO_WRAP_TRANSPORT                                                   Handle        = 0x8028002F\n\tTPM_E_AUDITFAIL_UNSUCCESSFUL                                              Handle        = 0x80280030\n\tTPM_E_AUDITFAIL_SUCCESSFUL                                                Handle        = 0x80280031\n\tTPM_E_NOTRESETABLE                                                        Handle        = 0x80280032\n\tTPM_E_NOTLOCAL                                                            Handle        = 0x80280033\n\tTPM_E_BAD_TYPE                                                            Handle        = 0x80280034\n\tTPM_E_INVALID_RESOURCE                                                    Handle        = 0x80280035\n\tTPM_E_NOTFIPS                                                             Handle        = 0x80280036\n\tTPM_E_INVALID_FAMILY                                                      Handle        = 0x80280037\n\tTPM_E_NO_NV_PERMISSION                                                    Handle        = 0x80280038\n\tTPM_E_REQUIRES_SIGN                                                       Handle        = 0x80280039\n\tTPM_E_KEY_NOTSUPPORTED                                                    Handle        = 0x8028003A\n\tTPM_E_AUTH_CONFLICT                                                       Handle        = 0x8028003B\n\tTPM_E_AREA_LOCKED                                                         Handle        = 0x8028003C\n\tTPM_E_BAD_LOCALITY                                                        Handle        = 0x8028003D\n\tTPM_E_READ_ONLY                                                           Handle        = 0x8028003E\n\tTPM_E_PER_NOWRITE                                                         Handle        = 0x8028003F\n\tTPM_E_FAMILYCOUNT                                                         Handle        = 0x80280040\n\tTPM_E_WRITE_LOCKED                                                        Handle        = 0x80280041\n\tTPM_E_BAD_ATTRIBUTES                                                      Handle        = 0x80280042\n\tTPM_E_INVALID_STRUCTURE                                                   Handle        = 0x80280043\n\tTPM_E_KEY_OWNER_CONTROL                                                   Handle        = 0x80280044\n\tTPM_E_BAD_COUNTER                                                         Handle        = 0x80280045\n\tTPM_E_NOT_FULLWRITE                                                       Handle        = 0x80280046\n\tTPM_E_CONTEXT_GAP                                                         Handle        = 0x80280047\n\tTPM_E_MAXNVWRITES                                                         Handle        = 0x80280048\n\tTPM_E_NOOPERATOR                                                          Handle        = 0x80280049\n\tTPM_E_RESOURCEMISSING                                                     Handle        = 0x8028004A\n\tTPM_E_DELEGATE_LOCK                                                       Handle        = 0x8028004B\n\tTPM_E_DELEGATE_FAMILY                                                     Handle        = 0x8028004C\n\tTPM_E_DELEGATE_ADMIN                                                      Handle        = 0x8028004D\n\tTPM_E_TRANSPORT_NOTEXCLUSIVE                                              Handle        = 0x8028004E\n\tTPM_E_OWNER_CONTROL                                                       Handle        = 0x8028004F\n\tTPM_E_DAA_RESOURCES                                                       Handle        = 0x80280050\n\tTPM_E_DAA_INPUT_DATA0                                                     Handle        = 0x80280051\n\tTPM_E_DAA_INPUT_DATA1                                                     Handle        = 0x80280052\n\tTPM_E_DAA_ISSUER_SETTINGS                                                 Handle        = 0x80280053\n\tTPM_E_DAA_TPM_SETTINGS                                                    Handle        = 0x80280054\n\tTPM_E_DAA_STAGE                                                           Handle        = 0x80280055\n\tTPM_E_DAA_ISSUER_VALIDITY                                                 Handle        = 0x80280056\n\tTPM_E_DAA_WRONG_W                                                         Handle        = 0x80280057\n\tTPM_E_BAD_HANDLE                                                          Handle        = 0x80280058\n\tTPM_E_BAD_DELEGATE                                                        Handle        = 0x80280059\n\tTPM_E_BADCONTEXT                                                          Handle        = 0x8028005A\n\tTPM_E_TOOMANYCONTEXTS                                                     Handle        = 0x8028005B\n\tTPM_E_MA_TICKET_SIGNATURE                                                 Handle        = 0x8028005C\n\tTPM_E_MA_DESTINATION                                                      Handle        = 0x8028005D\n\tTPM_E_MA_SOURCE                                                           Handle        = 0x8028005E\n\tTPM_E_MA_AUTHORITY                                                        Handle        = 0x8028005F\n\tTPM_E_PERMANENTEK                                                         Handle        = 0x80280061\n\tTPM_E_BAD_SIGNATURE                                                       Handle        = 0x80280062\n\tTPM_E_NOCONTEXTSPACE                                                      Handle        = 0x80280063\n\tTPM_20_E_ASYMMETRIC                                                       Handle        = 0x80280081\n\tTPM_20_E_ATTRIBUTES                                                       Handle        = 0x80280082\n\tTPM_20_E_HASH                                                             Handle        = 0x80280083\n\tTPM_20_E_VALUE                                                            Handle        = 0x80280084\n\tTPM_20_E_HIERARCHY                                                        Handle        = 0x80280085\n\tTPM_20_E_KEY_SIZE                                                         Handle        = 0x80280087\n\tTPM_20_E_MGF                                                              Handle        = 0x80280088\n\tTPM_20_E_MODE                                                             Handle        = 0x80280089\n\tTPM_20_E_TYPE                                                             Handle        = 0x8028008A\n\tTPM_20_E_HANDLE                                                           Handle        = 0x8028008B\n\tTPM_20_E_KDF                                                              Handle        = 0x8028008C\n\tTPM_20_E_RANGE                                                            Handle        = 0x8028008D\n\tTPM_20_E_AUTH_FAIL                                                        Handle        = 0x8028008E\n\tTPM_20_E_NONCE                                                            Handle        = 0x8028008F\n\tTPM_20_E_PP                                                               Handle        = 0x80280090\n\tTPM_20_E_SCHEME                                                           Handle        = 0x80280092\n\tTPM_20_E_SIZE                                                             Handle        = 0x80280095\n\tTPM_20_E_SYMMETRIC                                                        Handle        = 0x80280096\n\tTPM_20_E_TAG                                                              Handle        = 0x80280097\n\tTPM_20_E_SELECTOR                                                         Handle        = 0x80280098\n\tTPM_20_E_INSUFFICIENT                                                     Handle        = 0x8028009A\n\tTPM_20_E_SIGNATURE                                                        Handle        = 0x8028009B\n\tTPM_20_E_KEY                                                              Handle        = 0x8028009C\n\tTPM_20_E_POLICY_FAIL                                                      Handle        = 0x8028009D\n\tTPM_20_E_INTEGRITY                                                        Handle        = 0x8028009F\n\tTPM_20_E_TICKET                                                           Handle        = 0x802800A0\n\tTPM_20_E_RESERVED_BITS                                                    Handle        = 0x802800A1\n\tTPM_20_E_BAD_AUTH                                                         Handle        = 0x802800A2\n\tTPM_20_E_EXPIRED                                                          Handle        = 0x802800A3\n\tTPM_20_E_POLICY_CC                                                        Handle        = 0x802800A4\n\tTPM_20_E_BINDING                                                          Handle        = 0x802800A5\n\tTPM_20_E_CURVE                                                            Handle        = 0x802800A6\n\tTPM_20_E_ECC_POINT                                                        Handle        = 0x802800A7\n\tTPM_20_E_INITIALIZE                                                       Handle        = 0x80280100\n\tTPM_20_E_FAILURE                                                          Handle        = 0x80280101\n\tTPM_20_E_SEQUENCE                                                         Handle        = 0x80280103\n\tTPM_20_E_PRIVATE                                                          Handle        = 0x8028010B\n\tTPM_20_E_HMAC                                                             Handle        = 0x80280119\n\tTPM_20_E_DISABLED                                                         Handle        = 0x80280120\n\tTPM_20_E_EXCLUSIVE                                                        Handle        = 0x80280121\n\tTPM_20_E_ECC_CURVE                                                        Handle        = 0x80280123\n\tTPM_20_E_AUTH_TYPE                                                        Handle        = 0x80280124\n\tTPM_20_E_AUTH_MISSING                                                     Handle        = 0x80280125\n\tTPM_20_E_POLICY                                                           Handle        = 0x80280126\n\tTPM_20_E_PCR                                                              Handle        = 0x80280127\n\tTPM_20_E_PCR_CHANGED                                                      Handle        = 0x80280128\n\tTPM_20_E_UPGRADE                                                          Handle        = 0x8028012D\n\tTPM_20_E_TOO_MANY_CONTEXTS                                                Handle        = 0x8028012E\n\tTPM_20_E_AUTH_UNAVAILABLE                                                 Handle        = 0x8028012F\n\tTPM_20_E_REBOOT                                                           Handle        = 0x80280130\n\tTPM_20_E_UNBALANCED                                                       Handle        = 0x80280131\n\tTPM_20_E_COMMAND_SIZE                                                     Handle        = 0x80280142\n\tTPM_20_E_COMMAND_CODE                                                     Handle        = 0x80280143\n\tTPM_20_E_AUTHSIZE                                                         Handle        = 0x80280144\n\tTPM_20_E_AUTH_CONTEXT                                                     Handle        = 0x80280145\n\tTPM_20_E_NV_RANGE                                                         Handle        = 0x80280146\n\tTPM_20_E_NV_SIZE                                                          Handle        = 0x80280147\n\tTPM_20_E_NV_LOCKED                                                        Handle        = 0x80280148\n\tTPM_20_E_NV_AUTHORIZATION                                                 Handle        = 0x80280149\n\tTPM_20_E_NV_UNINITIALIZED                                                 Handle        = 0x8028014A\n\tTPM_20_E_NV_SPACE                                                         Handle        = 0x8028014B\n\tTPM_20_E_NV_DEFINED                                                       Handle        = 0x8028014C\n\tTPM_20_E_BAD_CONTEXT                                                      Handle        = 0x80280150\n\tTPM_20_E_CPHASH                                                           Handle        = 0x80280151\n\tTPM_20_E_PARENT                                                           Handle        = 0x80280152\n\tTPM_20_E_NEEDS_TEST                                                       Handle        = 0x80280153\n\tTPM_20_E_NO_RESULT                                                        Handle        = 0x80280154\n\tTPM_20_E_SENSITIVE                                                        Handle        = 0x80280155\n\tTPM_E_COMMAND_BLOCKED                                                     Handle        = 0x80280400\n\tTPM_E_INVALID_HANDLE                                                      Handle        = 0x80280401\n\tTPM_E_DUPLICATE_VHANDLE                                                   Handle        = 0x80280402\n\tTPM_E_EMBEDDED_COMMAND_BLOCKED                                            Handle        = 0x80280403\n\tTPM_E_EMBEDDED_COMMAND_UNSUPPORTED                                        Handle        = 0x80280404\n\tTPM_E_RETRY                                                               Handle        = 0x80280800\n\tTPM_E_NEEDS_SELFTEST                                                      Handle        = 0x80280801\n\tTPM_E_DOING_SELFTEST                                                      Handle        = 0x80280802\n\tTPM_E_DEFEND_LOCK_RUNNING                                                 Handle        = 0x80280803\n\tTPM_20_E_CONTEXT_GAP                                                      Handle        = 0x80280901\n\tTPM_20_E_OBJECT_MEMORY                                                    Handle        = 0x80280902\n\tTPM_20_E_SESSION_MEMORY                                                   Handle        = 0x80280903\n\tTPM_20_E_MEMORY                                                           Handle        = 0x80280904\n\tTPM_20_E_SESSION_HANDLES                                                  Handle        = 0x80280905\n\tTPM_20_E_OBJECT_HANDLES                                                   Handle        = 0x80280906\n\tTPM_20_E_LOCALITY                                                         Handle        = 0x80280907\n\tTPM_20_E_YIELDED                                                          Handle        = 0x80280908\n\tTPM_20_E_CANCELED                                                         Handle        = 0x80280909\n\tTPM_20_E_TESTING                                                          Handle        = 0x8028090A\n\tTPM_20_E_NV_RATE                                                          Handle        = 0x80280920\n\tTPM_20_E_LOCKOUT                                                          Handle        = 0x80280921\n\tTPM_20_E_RETRY                                                            Handle        = 0x80280922\n\tTPM_20_E_NV_UNAVAILABLE                                                   Handle        = 0x80280923\n\tTBS_E_INTERNAL_ERROR                                                      Handle        = 0x80284001\n\tTBS_E_BAD_PARAMETER                                                       Handle        = 0x80284002\n\tTBS_E_INVALID_OUTPUT_POINTER                                              Handle        = 0x80284003\n\tTBS_E_INVALID_CONTEXT                                                     Handle        = 0x80284004\n\tTBS_E_INSUFFICIENT_BUFFER                                                 Handle        = 0x80284005\n\tTBS_E_IOERROR                                                             Handle        = 0x80284006\n\tTBS_E_INVALID_CONTEXT_PARAM                                               Handle        = 0x80284007\n\tTBS_E_SERVICE_NOT_RUNNING                                                 Handle        = 0x80284008\n\tTBS_E_TOO_MANY_TBS_CONTEXTS                                               Handle        = 0x80284009\n\tTBS_E_TOO_MANY_RESOURCES                                                  Handle        = 0x8028400A\n\tTBS_E_SERVICE_START_PENDING                                               Handle        = 0x8028400B\n\tTBS_E_PPI_NOT_SUPPORTED                                                   Handle        = 0x8028400C\n\tTBS_E_COMMAND_CANCELED                                                    Handle        = 0x8028400D\n\tTBS_E_BUFFER_TOO_LARGE                                                    Handle        = 0x8028400E\n\tTBS_E_TPM_NOT_FOUND                                                       Handle        = 0x8028400F\n\tTBS_E_SERVICE_DISABLED                                                    Handle        = 0x80284010\n\tTBS_E_NO_EVENT_LOG                                                        Handle        = 0x80284011\n\tTBS_E_ACCESS_DENIED                                                       Handle        = 0x80284012\n\tTBS_E_PROVISIONING_NOT_ALLOWED                                            Handle        = 0x80284013\n\tTBS_E_PPI_FUNCTION_UNSUPPORTED                                            Handle        = 0x80284014\n\tTBS_E_OWNERAUTH_NOT_FOUND                                                 Handle        = 0x80284015\n\tTBS_E_PROVISIONING_INCOMPLETE                                             Handle        = 0x80284016\n\tTPMAPI_E_INVALID_STATE                                                    Handle        = 0x80290100\n\tTPMAPI_E_NOT_ENOUGH_DATA                                                  Handle        = 0x80290101\n\tTPMAPI_E_TOO_MUCH_DATA                                                    Handle        = 0x80290102\n\tTPMAPI_E_INVALID_OUTPUT_POINTER                                           Handle        = 0x80290103\n\tTPMAPI_E_INVALID_PARAMETER                                                Handle        = 0x80290104\n\tTPMAPI_E_OUT_OF_MEMORY                                                    Handle        = 0x80290105\n\tTPMAPI_E_BUFFER_TOO_SMALL                                                 Handle        = 0x80290106\n\tTPMAPI_E_INTERNAL_ERROR                                                   Handle        = 0x80290107\n\tTPMAPI_E_ACCESS_DENIED                                                    Handle        = 0x80290108\n\tTPMAPI_E_AUTHORIZATION_FAILED                                             Handle        = 0x80290109\n\tTPMAPI_E_INVALID_CONTEXT_HANDLE                                           Handle        = 0x8029010A\n\tTPMAPI_E_TBS_COMMUNICATION_ERROR                                          Handle        = 0x8029010B\n\tTPMAPI_E_TPM_COMMAND_ERROR                                                Handle        = 0x8029010C\n\tTPMAPI_E_MESSAGE_TOO_LARGE                                                Handle        = 0x8029010D\n\tTPMAPI_E_INVALID_ENCODING                                                 Handle        = 0x8029010E\n\tTPMAPI_E_INVALID_KEY_SIZE                                                 Handle        = 0x8029010F\n\tTPMAPI_E_ENCRYPTION_FAILED                                                Handle        = 0x80290110\n\tTPMAPI_E_INVALID_KEY_PARAMS                                               Handle        = 0x80290111\n\tTPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB                             Handle        = 0x80290112\n\tTPMAPI_E_INVALID_PCR_INDEX                                                Handle        = 0x80290113\n\tTPMAPI_E_INVALID_DELEGATE_BLOB                                            Handle        = 0x80290114\n\tTPMAPI_E_INVALID_CONTEXT_PARAMS                                           Handle        = 0x80290115\n\tTPMAPI_E_INVALID_KEY_BLOB                                                 Handle        = 0x80290116\n\tTPMAPI_E_INVALID_PCR_DATA                                                 Handle        = 0x80290117\n\tTPMAPI_E_INVALID_OWNER_AUTH                                               Handle        = 0x80290118\n\tTPMAPI_E_FIPS_RNG_CHECK_FAILED                                            Handle        = 0x80290119\n\tTPMAPI_E_EMPTY_TCG_LOG                                                    Handle        = 0x8029011A\n\tTPMAPI_E_INVALID_TCG_LOG_ENTRY                                            Handle        = 0x8029011B\n\tTPMAPI_E_TCG_SEPARATOR_ABSENT                                             Handle        = 0x8029011C\n\tTPMAPI_E_TCG_INVALID_DIGEST_ENTRY                                         Handle        = 0x8029011D\n\tTPMAPI_E_POLICY_DENIES_OPERATION                                          Handle        = 0x8029011E\n\tTPMAPI_E_NV_BITS_NOT_DEFINED                                              Handle        = 0x8029011F\n\tTPMAPI_E_NV_BITS_NOT_READY                                                Handle        = 0x80290120\n\tTPMAPI_E_SEALING_KEY_NOT_AVAILABLE                                        Handle        = 0x80290121\n\tTPMAPI_E_NO_AUTHORIZATION_CHAIN_FOUND                                     Handle        = 0x80290122\n\tTPMAPI_E_SVN_COUNTER_NOT_AVAILABLE                                        Handle        = 0x80290123\n\tTPMAPI_E_OWNER_AUTH_NOT_NULL                                              Handle        = 0x80290124\n\tTPMAPI_E_ENDORSEMENT_AUTH_NOT_NULL                                        Handle        = 0x80290125\n\tTPMAPI_E_AUTHORIZATION_REVOKED                                            Handle        = 0x80290126\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_KEY                                      Handle        = 0x80290127\n\tTPMAPI_E_AUTHORIZING_KEY_NOT_SUPPORTED                                    Handle        = 0x80290128\n\tTPMAPI_E_INVALID_AUTHORIZATION_SIGNATURE                                  Handle        = 0x80290129\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_POLICY                                   Handle        = 0x8029012A\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_OTHER                                    Handle        = 0x8029012B\n\tTPMAPI_E_SEALING_KEY_CHANGED                                              Handle        = 0x8029012C\n\tTBSIMP_E_BUFFER_TOO_SMALL                                                 Handle        = 0x80290200\n\tTBSIMP_E_CLEANUP_FAILED                                                   Handle        = 0x80290201\n\tTBSIMP_E_INVALID_CONTEXT_HANDLE                                           Handle        = 0x80290202\n\tTBSIMP_E_INVALID_CONTEXT_PARAM                                            Handle        = 0x80290203\n\tTBSIMP_E_TPM_ERROR                                                        Handle        = 0x80290204\n\tTBSIMP_E_HASH_BAD_KEY                                                     Handle        = 0x80290205\n\tTBSIMP_E_DUPLICATE_VHANDLE                                                Handle        = 0x80290206\n\tTBSIMP_E_INVALID_OUTPUT_POINTER                                           Handle        = 0x80290207\n\tTBSIMP_E_INVALID_PARAMETER                                                Handle        = 0x80290208\n\tTBSIMP_E_RPC_INIT_FAILED                                                  Handle        = 0x80290209\n\tTBSIMP_E_SCHEDULER_NOT_RUNNING                                            Handle        = 0x8029020A\n\tTBSIMP_E_COMMAND_CANCELED                                                 Handle        = 0x8029020B\n\tTBSIMP_E_OUT_OF_MEMORY                                                    Handle        = 0x8029020C\n\tTBSIMP_E_LIST_NO_MORE_ITEMS                                               Handle        = 0x8029020D\n\tTBSIMP_E_LIST_NOT_FOUND                                                   Handle        = 0x8029020E\n\tTBSIMP_E_NOT_ENOUGH_SPACE                                                 Handle        = 0x8029020F\n\tTBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS                                          Handle        = 0x80290210\n\tTBSIMP_E_COMMAND_FAILED                                                   Handle        = 0x80290211\n\tTBSIMP_E_UNKNOWN_ORDINAL                                                  Handle        = 0x80290212\n\tTBSIMP_E_RESOURCE_EXPIRED                                                 Handle        = 0x80290213\n\tTBSIMP_E_INVALID_RESOURCE                                                 Handle        = 0x80290214\n\tTBSIMP_E_NOTHING_TO_UNLOAD                                                Handle        = 0x80290215\n\tTBSIMP_E_HASH_TABLE_FULL                                                  Handle        = 0x80290216\n\tTBSIMP_E_TOO_MANY_TBS_CONTEXTS                                            Handle        = 0x80290217\n\tTBSIMP_E_TOO_MANY_RESOURCES                                               Handle        = 0x80290218\n\tTBSIMP_E_PPI_NOT_SUPPORTED                                                Handle        = 0x80290219\n\tTBSIMP_E_TPM_INCOMPATIBLE                                                 Handle        = 0x8029021A\n\tTBSIMP_E_NO_EVENT_LOG                                                     Handle        = 0x8029021B\n\tTPM_E_PPI_ACPI_FAILURE                                                    Handle        = 0x80290300\n\tTPM_E_PPI_USER_ABORT                                                      Handle        = 0x80290301\n\tTPM_E_PPI_BIOS_FAILURE                                                    Handle        = 0x80290302\n\tTPM_E_PPI_NOT_SUPPORTED                                                   Handle        = 0x80290303\n\tTPM_E_PPI_BLOCKED_IN_BIOS                                                 Handle        = 0x80290304\n\tTPM_E_PCP_ERROR_MASK                                                      Handle        = 0x80290400\n\tTPM_E_PCP_DEVICE_NOT_READY                                                Handle        = 0x80290401\n\tTPM_E_PCP_INVALID_HANDLE                                                  Handle        = 0x80290402\n\tTPM_E_PCP_INVALID_PARAMETER                                               Handle        = 0x80290403\n\tTPM_E_PCP_FLAG_NOT_SUPPORTED                                              Handle        = 0x80290404\n\tTPM_E_PCP_NOT_SUPPORTED                                                   Handle        = 0x80290405\n\tTPM_E_PCP_BUFFER_TOO_SMALL                                                Handle        = 0x80290406\n\tTPM_E_PCP_INTERNAL_ERROR                                                  Handle        = 0x80290407\n\tTPM_E_PCP_AUTHENTICATION_FAILED                                           Handle        = 0x80290408\n\tTPM_E_PCP_AUTHENTICATION_IGNORED                                          Handle        = 0x80290409\n\tTPM_E_PCP_POLICY_NOT_FOUND                                                Handle        = 0x8029040A\n\tTPM_E_PCP_PROFILE_NOT_FOUND                                               Handle        = 0x8029040B\n\tTPM_E_PCP_VALIDATION_FAILED                                               Handle        = 0x8029040C\n\tTPM_E_PCP_WRONG_PARENT                                                    Handle        = 0x8029040E\n\tTPM_E_KEY_NOT_LOADED                                                      Handle        = 0x8029040F\n\tTPM_E_NO_KEY_CERTIFICATION                                                Handle        = 0x80290410\n\tTPM_E_KEY_NOT_FINALIZED                                                   Handle        = 0x80290411\n\tTPM_E_ATTESTATION_CHALLENGE_NOT_SET                                       Handle        = 0x80290412\n\tTPM_E_NOT_PCR_BOUND                                                       Handle        = 0x80290413\n\tTPM_E_KEY_ALREADY_FINALIZED                                               Handle        = 0x80290414\n\tTPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED                                      Handle        = 0x80290415\n\tTPM_E_KEY_USAGE_POLICY_INVALID                                            Handle        = 0x80290416\n\tTPM_E_SOFT_KEY_ERROR                                                      Handle        = 0x80290417\n\tTPM_E_KEY_NOT_AUTHENTICATED                                               Handle        = 0x80290418\n\tTPM_E_PCP_KEY_NOT_AIK                                                     Handle        = 0x80290419\n\tTPM_E_KEY_NOT_SIGNING_KEY                                                 Handle        = 0x8029041A\n\tTPM_E_LOCKED_OUT                                                          Handle        = 0x8029041B\n\tTPM_E_CLAIM_TYPE_NOT_SUPPORTED                                            Handle        = 0x8029041C\n\tTPM_E_VERSION_NOT_SUPPORTED                                               Handle        = 0x8029041D\n\tTPM_E_BUFFER_LENGTH_MISMATCH                                              Handle        = 0x8029041E\n\tTPM_E_PCP_IFX_RSA_KEY_CREATION_BLOCKED                                    Handle        = 0x8029041F\n\tTPM_E_PCP_TICKET_MISSING                                                  Handle        = 0x80290420\n\tTPM_E_PCP_RAW_POLICY_NOT_SUPPORTED                                        Handle        = 0x80290421\n\tTPM_E_PCP_KEY_HANDLE_INVALIDATED                                          Handle        = 0x80290422\n\tTPM_E_PCP_UNSUPPORTED_PSS_SALT                                            Handle        = 0x40290423\n\tTPM_E_ZERO_EXHAUST_ENABLED                                                Handle        = 0x80290500\n\tPLA_E_DCS_NOT_FOUND                                                       Handle        = 0x80300002\n\tPLA_E_DCS_IN_USE                                                          Handle        = 0x803000AA\n\tPLA_E_TOO_MANY_FOLDERS                                                    Handle        = 0x80300045\n\tPLA_E_NO_MIN_DISK                                                         Handle        = 0x80300070\n\tPLA_E_DCS_ALREADY_EXISTS                                                  Handle        = 0x803000B7\n\tPLA_S_PROPERTY_IGNORED                                                    Handle        = 0x00300100\n\tPLA_E_PROPERTY_CONFLICT                                                   Handle        = 0x80300101\n\tPLA_E_DCS_SINGLETON_REQUIRED                                              Handle        = 0x80300102\n\tPLA_E_CREDENTIALS_REQUIRED                                                Handle        = 0x80300103\n\tPLA_E_DCS_NOT_RUNNING                                                     Handle        = 0x80300104\n\tPLA_E_CONFLICT_INCL_EXCL_API                                              Handle        = 0x80300105\n\tPLA_E_NETWORK_EXE_NOT_VALID                                               Handle        = 0x80300106\n\tPLA_E_EXE_ALREADY_CONFIGURED                                              Handle        = 0x80300107\n\tPLA_E_EXE_PATH_NOT_VALID                                                  Handle        = 0x80300108\n\tPLA_E_DC_ALREADY_EXISTS                                                   Handle        = 0x80300109\n\tPLA_E_DCS_START_WAIT_TIMEOUT                                              Handle        = 0x8030010A\n\tPLA_E_DC_START_WAIT_TIMEOUT                                               Handle        = 0x8030010B\n\tPLA_E_REPORT_WAIT_TIMEOUT                                                 Handle        = 0x8030010C\n\tPLA_E_NO_DUPLICATES                                                       Handle        = 0x8030010D\n\tPLA_E_EXE_FULL_PATH_REQUIRED                                              Handle        = 0x8030010E\n\tPLA_E_INVALID_SESSION_NAME                                                Handle        = 0x8030010F\n\tPLA_E_PLA_CHANNEL_NOT_ENABLED                                             Handle        = 0x80300110\n\tPLA_E_TASKSCHED_CHANNEL_NOT_ENABLED                                       Handle        = 0x80300111\n\tPLA_E_RULES_MANAGER_FAILED                                                Handle        = 0x80300112\n\tPLA_E_CABAPI_FAILURE                                                      Handle        = 0x80300113\n\tFVE_E_LOCKED_VOLUME                                                       Handle        = 0x80310000\n\tFVE_E_NOT_ENCRYPTED                                                       Handle        = 0x80310001\n\tFVE_E_NO_TPM_BIOS                                                         Handle        = 0x80310002\n\tFVE_E_NO_MBR_METRIC                                                       Handle        = 0x80310003\n\tFVE_E_NO_BOOTSECTOR_METRIC                                                Handle        = 0x80310004\n\tFVE_E_NO_BOOTMGR_METRIC                                                   Handle        = 0x80310005\n\tFVE_E_WRONG_BOOTMGR                                                       Handle        = 0x80310006\n\tFVE_E_SECURE_KEY_REQUIRED                                                 Handle        = 0x80310007\n\tFVE_E_NOT_ACTIVATED                                                       Handle        = 0x80310008\n\tFVE_E_ACTION_NOT_ALLOWED                                                  Handle        = 0x80310009\n\tFVE_E_AD_SCHEMA_NOT_INSTALLED                                             Handle        = 0x8031000A\n\tFVE_E_AD_INVALID_DATATYPE                                                 Handle        = 0x8031000B\n\tFVE_E_AD_INVALID_DATASIZE                                                 Handle        = 0x8031000C\n\tFVE_E_AD_NO_VALUES                                                        Handle        = 0x8031000D\n\tFVE_E_AD_ATTR_NOT_SET                                                     Handle        = 0x8031000E\n\tFVE_E_AD_GUID_NOT_FOUND                                                   Handle        = 0x8031000F\n\tFVE_E_BAD_INFORMATION                                                     Handle        = 0x80310010\n\tFVE_E_TOO_SMALL                                                           Handle        = 0x80310011\n\tFVE_E_SYSTEM_VOLUME                                                       Handle        = 0x80310012\n\tFVE_E_FAILED_WRONG_FS                                                     Handle        = 0x80310013\n\tFVE_E_BAD_PARTITION_SIZE                                                  Handle        = 0x80310014\n\tFVE_E_NOT_SUPPORTED                                                       Handle        = 0x80310015\n\tFVE_E_BAD_DATA                                                            Handle        = 0x80310016\n\tFVE_E_VOLUME_NOT_BOUND                                                    Handle        = 0x80310017\n\tFVE_E_TPM_NOT_OWNED                                                       Handle        = 0x80310018\n\tFVE_E_NOT_DATA_VOLUME                                                     Handle        = 0x80310019\n\tFVE_E_AD_INSUFFICIENT_BUFFER                                              Handle        = 0x8031001A\n\tFVE_E_CONV_READ                                                           Handle        = 0x8031001B\n\tFVE_E_CONV_WRITE                                                          Handle        = 0x8031001C\n\tFVE_E_KEY_REQUIRED                                                        Handle        = 0x8031001D\n\tFVE_E_CLUSTERING_NOT_SUPPORTED                                            Handle        = 0x8031001E\n\tFVE_E_VOLUME_BOUND_ALREADY                                                Handle        = 0x8031001F\n\tFVE_E_OS_NOT_PROTECTED                                                    Handle        = 0x80310020\n\tFVE_E_PROTECTION_DISABLED                                                 Handle        = 0x80310021\n\tFVE_E_RECOVERY_KEY_REQUIRED                                               Handle        = 0x80310022\n\tFVE_E_FOREIGN_VOLUME                                                      Handle        = 0x80310023\n\tFVE_E_OVERLAPPED_UPDATE                                                   Handle        = 0x80310024\n\tFVE_E_TPM_SRK_AUTH_NOT_ZERO                                               Handle        = 0x80310025\n\tFVE_E_FAILED_SECTOR_SIZE                                                  Handle        = 0x80310026\n\tFVE_E_FAILED_AUTHENTICATION                                               Handle        = 0x80310027\n\tFVE_E_NOT_OS_VOLUME                                                       Handle        = 0x80310028\n\tFVE_E_AUTOUNLOCK_ENABLED                                                  Handle        = 0x80310029\n\tFVE_E_WRONG_BOOTSECTOR                                                    Handle        = 0x8031002A\n\tFVE_E_WRONG_SYSTEM_FS                                                     Handle        = 0x8031002B\n\tFVE_E_POLICY_PASSWORD_REQUIRED                                            Handle        = 0x8031002C\n\tFVE_E_CANNOT_SET_FVEK_ENCRYPTED                                           Handle        = 0x8031002D\n\tFVE_E_CANNOT_ENCRYPT_NO_KEY                                               Handle        = 0x8031002E\n\tFVE_E_BOOTABLE_CDDVD                                                      Handle        = 0x80310030\n\tFVE_E_PROTECTOR_EXISTS                                                    Handle        = 0x80310031\n\tFVE_E_RELATIVE_PATH                                                       Handle        = 0x80310032\n\tFVE_E_PROTECTOR_NOT_FOUND                                                 Handle        = 0x80310033\n\tFVE_E_INVALID_KEY_FORMAT                                                  Handle        = 0x80310034\n\tFVE_E_INVALID_PASSWORD_FORMAT                                             Handle        = 0x80310035\n\tFVE_E_FIPS_RNG_CHECK_FAILED                                               Handle        = 0x80310036\n\tFVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD                                     Handle        = 0x80310037\n\tFVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT                                   Handle        = 0x80310038\n\tFVE_E_NOT_DECRYPTED                                                       Handle        = 0x80310039\n\tFVE_E_INVALID_PROTECTOR_TYPE                                              Handle        = 0x8031003A\n\tFVE_E_NO_PROTECTORS_TO_TEST                                               Handle        = 0x8031003B\n\tFVE_E_KEYFILE_NOT_FOUND                                                   Handle        = 0x8031003C\n\tFVE_E_KEYFILE_INVALID                                                     Handle        = 0x8031003D\n\tFVE_E_KEYFILE_NO_VMK                                                      Handle        = 0x8031003E\n\tFVE_E_TPM_DISABLED                                                        Handle        = 0x8031003F\n\tFVE_E_NOT_ALLOWED_IN_SAFE_MODE                                            Handle        = 0x80310040\n\tFVE_E_TPM_INVALID_PCR                                                     Handle        = 0x80310041\n\tFVE_E_TPM_NO_VMK                                                          Handle        = 0x80310042\n\tFVE_E_PIN_INVALID                                                         Handle        = 0x80310043\n\tFVE_E_AUTH_INVALID_APPLICATION                                            Handle        = 0x80310044\n\tFVE_E_AUTH_INVALID_CONFIG                                                 Handle        = 0x80310045\n\tFVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED                                 Handle        = 0x80310046\n\tFVE_E_FS_NOT_EXTENDED                                                     Handle        = 0x80310047\n\tFVE_E_FIRMWARE_TYPE_NOT_SUPPORTED                                         Handle        = 0x80310048\n\tFVE_E_NO_LICENSE                                                          Handle        = 0x80310049\n\tFVE_E_NOT_ON_STACK                                                        Handle        = 0x8031004A\n\tFVE_E_FS_MOUNTED                                                          Handle        = 0x8031004B\n\tFVE_E_TOKEN_NOT_IMPERSONATED                                              Handle        = 0x8031004C\n\tFVE_E_DRY_RUN_FAILED                                                      Handle        = 0x8031004D\n\tFVE_E_REBOOT_REQUIRED                                                     Handle        = 0x8031004E\n\tFVE_E_DEBUGGER_ENABLED                                                    Handle        = 0x8031004F\n\tFVE_E_RAW_ACCESS                                                          Handle        = 0x80310050\n\tFVE_E_RAW_BLOCKED                                                         Handle        = 0x80310051\n\tFVE_E_BCD_APPLICATIONS_PATH_INCORRECT                                     Handle        = 0x80310052\n\tFVE_E_NOT_ALLOWED_IN_VERSION                                              Handle        = 0x80310053\n\tFVE_E_NO_AUTOUNLOCK_MASTER_KEY                                            Handle        = 0x80310054\n\tFVE_E_MOR_FAILED                                                          Handle        = 0x80310055\n\tFVE_E_HIDDEN_VOLUME                                                       Handle        = 0x80310056\n\tFVE_E_TRANSIENT_STATE                                                     Handle        = 0x80310057\n\tFVE_E_PUBKEY_NOT_ALLOWED                                                  Handle        = 0x80310058\n\tFVE_E_VOLUME_HANDLE_OPEN                                                  Handle        = 0x80310059\n\tFVE_E_NO_FEATURE_LICENSE                                                  Handle        = 0x8031005A\n\tFVE_E_INVALID_STARTUP_OPTIONS                                             Handle        = 0x8031005B\n\tFVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED                                Handle        = 0x8031005C\n\tFVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED                                   Handle        = 0x8031005D\n\tFVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED                                     Handle        = 0x8031005E\n\tFVE_E_POLICY_RECOVERY_KEY_REQUIRED                                        Handle        = 0x8031005F\n\tFVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED                                      Handle        = 0x80310060\n\tFVE_E_POLICY_STARTUP_PIN_REQUIRED                                         Handle        = 0x80310061\n\tFVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED                                      Handle        = 0x80310062\n\tFVE_E_POLICY_STARTUP_KEY_REQUIRED                                         Handle        = 0x80310063\n\tFVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED                                  Handle        = 0x80310064\n\tFVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED                                     Handle        = 0x80310065\n\tFVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED                                      Handle        = 0x80310066\n\tFVE_E_POLICY_STARTUP_TPM_REQUIRED                                         Handle        = 0x80310067\n\tFVE_E_POLICY_INVALID_PIN_LENGTH                                           Handle        = 0x80310068\n\tFVE_E_KEY_PROTECTOR_NOT_SUPPORTED                                         Handle        = 0x80310069\n\tFVE_E_POLICY_PASSPHRASE_NOT_ALLOWED                                       Handle        = 0x8031006A\n\tFVE_E_POLICY_PASSPHRASE_REQUIRED                                          Handle        = 0x8031006B\n\tFVE_E_FIPS_PREVENTS_PASSPHRASE                                            Handle        = 0x8031006C\n\tFVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED                                    Handle        = 0x8031006D\n\tFVE_E_INVALID_BITLOCKER_OID                                               Handle        = 0x8031006E\n\tFVE_E_VOLUME_TOO_SMALL                                                    Handle        = 0x8031006F\n\tFVE_E_DV_NOT_SUPPORTED_ON_FS                                              Handle        = 0x80310070\n\tFVE_E_DV_NOT_ALLOWED_BY_GP                                                Handle        = 0x80310071\n\tFVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED                                 Handle        = 0x80310072\n\tFVE_E_POLICY_USER_CERTIFICATE_REQUIRED                                    Handle        = 0x80310073\n\tFVE_E_POLICY_USER_CERT_MUST_BE_HW                                         Handle        = 0x80310074\n\tFVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED                    Handle        = 0x80310075\n\tFVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED                    Handle        = 0x80310076\n\tFVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED                               Handle        = 0x80310077\n\tFVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED                                  Handle        = 0x80310078\n\tFVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED                                 Handle        = 0x80310079\n\tFVE_E_POLICY_INVALID_PASSPHRASE_LENGTH                                    Handle        = 0x80310080\n\tFVE_E_POLICY_PASSPHRASE_TOO_SIMPLE                                        Handle        = 0x80310081\n\tFVE_E_RECOVERY_PARTITION                                                  Handle        = 0x80310082\n\tFVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON                                   Handle        = 0x80310083\n\tFVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON                                   Handle        = 0x80310084\n\tFVE_E_NON_BITLOCKER_OID                                                   Handle        = 0x80310085\n\tFVE_E_POLICY_PROHIBITS_SELFSIGNED                                         Handle        = 0x80310086\n\tFVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED                         Handle        = 0x80310087\n\tFVE_E_CONV_RECOVERY_FAILED                                                Handle        = 0x80310088\n\tFVE_E_VIRTUALIZED_SPACE_TOO_BIG                                           Handle        = 0x80310089\n\tFVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON                                   Handle        = 0x80310090\n\tFVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON                                   Handle        = 0x80310091\n\tFVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON                                   Handle        = 0x80310092\n\tFVE_E_NON_BITLOCKER_KU                                                    Handle        = 0x80310093\n\tFVE_E_PRIVATEKEY_AUTH_FAILED                                              Handle        = 0x80310094\n\tFVE_E_REMOVAL_OF_DRA_FAILED                                               Handle        = 0x80310095\n\tFVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME                             Handle        = 0x80310096\n\tFVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME                                 Handle        = 0x80310097\n\tFVE_E_FIPS_HASH_KDF_NOT_ALLOWED                                           Handle        = 0x80310098\n\tFVE_E_ENH_PIN_INVALID                                                     Handle        = 0x80310099\n\tFVE_E_INVALID_PIN_CHARS                                                   Handle        = 0x8031009A\n\tFVE_E_INVALID_DATUM_TYPE                                                  Handle        = 0x8031009B\n\tFVE_E_EFI_ONLY                                                            Handle        = 0x8031009C\n\tFVE_E_MULTIPLE_NKP_CERTS                                                  Handle        = 0x8031009D\n\tFVE_E_REMOVAL_OF_NKP_FAILED                                               Handle        = 0x8031009E\n\tFVE_E_INVALID_NKP_CERT                                                    Handle        = 0x8031009F\n\tFVE_E_NO_EXISTING_PIN                                                     Handle        = 0x803100A0\n\tFVE_E_PROTECTOR_CHANGE_PIN_MISMATCH                                       Handle        = 0x803100A1\n\tFVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED                         Handle        = 0x803100A2\n\tFVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED                    Handle        = 0x803100A3\n\tFVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII                                    Handle        = 0x803100A4\n\tFVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE                           Handle        = 0x803100A5\n\tFVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE                                      Handle        = 0x803100A6\n\tFVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE                                  Handle        = 0x803100A7\n\tFVE_E_NO_EXISTING_PASSPHRASE                                              Handle        = 0x803100A8\n\tFVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH                                Handle        = 0x803100A9\n\tFVE_E_PASSPHRASE_TOO_LONG                                                 Handle        = 0x803100AA\n\tFVE_E_NO_PASSPHRASE_WITH_TPM                                              Handle        = 0x803100AB\n\tFVE_E_NO_TPM_WITH_PASSPHRASE                                              Handle        = 0x803100AC\n\tFVE_E_NOT_ALLOWED_ON_CSV_STACK                                            Handle        = 0x803100AD\n\tFVE_E_NOT_ALLOWED_ON_CLUSTER                                              Handle        = 0x803100AE\n\tFVE_E_EDRIVE_NO_FAILOVER_TO_SW                                            Handle        = 0x803100AF\n\tFVE_E_EDRIVE_BAND_IN_USE                                                  Handle        = 0x803100B0\n\tFVE_E_EDRIVE_DISALLOWED_BY_GP                                             Handle        = 0x803100B1\n\tFVE_E_EDRIVE_INCOMPATIBLE_VOLUME                                          Handle        = 0x803100B2\n\tFVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING                             Handle        = 0x803100B3\n\tFVE_E_EDRIVE_DV_NOT_SUPPORTED                                             Handle        = 0x803100B4\n\tFVE_E_NO_PREBOOT_KEYBOARD_DETECTED                                        Handle        = 0x803100B5\n\tFVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED                               Handle        = 0x803100B6\n\tFVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE                         Handle        = 0x803100B7\n\tFVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE                   Handle        = 0x803100B8\n\tFVE_E_WIPE_CANCEL_NOT_APPLICABLE                                          Handle        = 0x803100B9\n\tFVE_E_SECUREBOOT_DISABLED                                                 Handle        = 0x803100BA\n\tFVE_E_SECUREBOOT_CONFIGURATION_INVALID                                    Handle        = 0x803100BB\n\tFVE_E_EDRIVE_DRY_RUN_FAILED                                               Handle        = 0x803100BC\n\tFVE_E_SHADOW_COPY_PRESENT                                                 Handle        = 0x803100BD\n\tFVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS                                Handle        = 0x803100BE\n\tFVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE                                        Handle        = 0x803100BF\n\tFVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED             Handle        = 0x803100C0\n\tFVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED                  Handle        = 0x803100C1\n\tFVE_E_LIVEID_ACCOUNT_SUSPENDED                                            Handle        = 0x803100C2\n\tFVE_E_LIVEID_ACCOUNT_BLOCKED                                              Handle        = 0x803100C3\n\tFVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES                                      Handle        = 0x803100C4\n\tFVE_E_DE_FIXED_DATA_NOT_SUPPORTED                                         Handle        = 0x803100C5\n\tFVE_E_DE_HARDWARE_NOT_COMPLIANT                                           Handle        = 0x803100C6\n\tFVE_E_DE_WINRE_NOT_CONFIGURED                                             Handle        = 0x803100C7\n\tFVE_E_DE_PROTECTION_SUSPENDED                                             Handle        = 0x803100C8\n\tFVE_E_DE_OS_VOLUME_NOT_PROTECTED                                          Handle        = 0x803100C9\n\tFVE_E_DE_DEVICE_LOCKEDOUT                                                 Handle        = 0x803100CA\n\tFVE_E_DE_PROTECTION_NOT_YET_ENABLED                                       Handle        = 0x803100CB\n\tFVE_E_INVALID_PIN_CHARS_DETAILED                                          Handle        = 0x803100CC\n\tFVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE                                  Handle        = 0x803100CD\n\tFVE_E_DEVICELOCKOUT_COUNTER_MISMATCH                                      Handle        = 0x803100CE\n\tFVE_E_BUFFER_TOO_LARGE                                                    Handle        = 0x803100CF\n\tFVE_E_NO_SUCH_CAPABILITY_ON_TARGET                                        Handle        = 0x803100D0\n\tFVE_E_DE_PREVENTED_FOR_OS                                                 Handle        = 0x803100D1\n\tFVE_E_DE_VOLUME_OPTED_OUT                                                 Handle        = 0x803100D2\n\tFVE_E_DE_VOLUME_NOT_SUPPORTED                                             Handle        = 0x803100D3\n\tFVE_E_EOW_NOT_SUPPORTED_IN_VERSION                                        Handle        = 0x803100D4\n\tFVE_E_ADBACKUP_NOT_ENABLED                                                Handle        = 0x803100D5\n\tFVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT                                  Handle        = 0x803100D6\n\tFVE_E_NOT_DE_VOLUME                                                       Handle        = 0x803100D7\n\tFVE_E_PROTECTION_CANNOT_BE_DISABLED                                       Handle        = 0x803100D8\n\tFVE_E_OSV_KSR_NOT_ALLOWED                                                 Handle        = 0x803100D9\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_OS_DRIVE                          Handle        = 0x803100DA\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_FIXED_DRIVE                       Handle        = 0x803100DB\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_REMOVABLE_DRIVE                   Handle        = 0x803100DC\n\tFVE_E_KEY_ROTATION_NOT_SUPPORTED                                          Handle        = 0x803100DD\n\tFVE_E_EXECUTE_REQUEST_SENT_TOO_SOON                                       Handle        = 0x803100DE\n\tFVE_E_KEY_ROTATION_NOT_ENABLED                                            Handle        = 0x803100DF\n\tFVE_E_DEVICE_NOT_JOINED                                                   Handle        = 0x803100E0\n\tFWP_E_CALLOUT_NOT_FOUND                                                   Handle        = 0x80320001\n\tFWP_E_CONDITION_NOT_FOUND                                                 Handle        = 0x80320002\n\tFWP_E_FILTER_NOT_FOUND                                                    Handle        = 0x80320003\n\tFWP_E_LAYER_NOT_FOUND                                                     Handle        = 0x80320004\n\tFWP_E_PROVIDER_NOT_FOUND                                                  Handle        = 0x80320005\n\tFWP_E_PROVIDER_CONTEXT_NOT_FOUND                                          Handle        = 0x80320006\n\tFWP_E_SUBLAYER_NOT_FOUND                                                  Handle        = 0x80320007\n\tFWP_E_NOT_FOUND                                                           Handle        = 0x80320008\n\tFWP_E_ALREADY_EXISTS                                                      Handle        = 0x80320009\n\tFWP_E_IN_USE                                                              Handle        = 0x8032000A\n\tFWP_E_DYNAMIC_SESSION_IN_PROGRESS                                         Handle        = 0x8032000B\n\tFWP_E_WRONG_SESSION                                                       Handle        = 0x8032000C\n\tFWP_E_NO_TXN_IN_PROGRESS                                                  Handle        = 0x8032000D\n\tFWP_E_TXN_IN_PROGRESS                                                     Handle        = 0x8032000E\n\tFWP_E_TXN_ABORTED                                                         Handle        = 0x8032000F\n\tFWP_E_SESSION_ABORTED                                                     Handle        = 0x80320010\n\tFWP_E_INCOMPATIBLE_TXN                                                    Handle        = 0x80320011\n\tFWP_E_TIMEOUT                                                             Handle        = 0x80320012\n\tFWP_E_NET_EVENTS_DISABLED                                                 Handle        = 0x80320013\n\tFWP_E_INCOMPATIBLE_LAYER                                                  Handle        = 0x80320014\n\tFWP_E_KM_CLIENTS_ONLY                                                     Handle        = 0x80320015\n\tFWP_E_LIFETIME_MISMATCH                                                   Handle        = 0x80320016\n\tFWP_E_BUILTIN_OBJECT                                                      Handle        = 0x80320017\n\tFWP_E_TOO_MANY_CALLOUTS                                                   Handle        = 0x80320018\n\tFWP_E_NOTIFICATION_DROPPED                                                Handle        = 0x80320019\n\tFWP_E_TRAFFIC_MISMATCH                                                    Handle        = 0x8032001A\n\tFWP_E_INCOMPATIBLE_SA_STATE                                               Handle        = 0x8032001B\n\tFWP_E_NULL_POINTER                                                        Handle        = 0x8032001C\n\tFWP_E_INVALID_ENUMERATOR                                                  Handle        = 0x8032001D\n\tFWP_E_INVALID_FLAGS                                                       Handle        = 0x8032001E\n\tFWP_E_INVALID_NET_MASK                                                    Handle        = 0x8032001F\n\tFWP_E_INVALID_RANGE                                                       Handle        = 0x80320020\n\tFWP_E_INVALID_INTERVAL                                                    Handle        = 0x80320021\n\tFWP_E_ZERO_LENGTH_ARRAY                                                   Handle        = 0x80320022\n\tFWP_E_NULL_DISPLAY_NAME                                                   Handle        = 0x80320023\n\tFWP_E_INVALID_ACTION_TYPE                                                 Handle        = 0x80320024\n\tFWP_E_INVALID_WEIGHT                                                      Handle        = 0x80320025\n\tFWP_E_MATCH_TYPE_MISMATCH                                                 Handle        = 0x80320026\n\tFWP_E_TYPE_MISMATCH                                                       Handle        = 0x80320027\n\tFWP_E_OUT_OF_BOUNDS                                                       Handle        = 0x80320028\n\tFWP_E_RESERVED                                                            Handle        = 0x80320029\n\tFWP_E_DUPLICATE_CONDITION                                                 Handle        = 0x8032002A\n\tFWP_E_DUPLICATE_KEYMOD                                                    Handle        = 0x8032002B\n\tFWP_E_ACTION_INCOMPATIBLE_WITH_LAYER                                      Handle        = 0x8032002C\n\tFWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER                                   Handle        = 0x8032002D\n\tFWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER                                     Handle        = 0x8032002E\n\tFWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT                                   Handle        = 0x8032002F\n\tFWP_E_INCOMPATIBLE_AUTH_METHOD                                            Handle        = 0x80320030\n\tFWP_E_INCOMPATIBLE_DH_GROUP                                               Handle        = 0x80320031\n\tFWP_E_EM_NOT_SUPPORTED                                                    Handle        = 0x80320032\n\tFWP_E_NEVER_MATCH                                                         Handle        = 0x80320033\n\tFWP_E_PROVIDER_CONTEXT_MISMATCH                                           Handle        = 0x80320034\n\tFWP_E_INVALID_PARAMETER                                                   Handle        = 0x80320035\n\tFWP_E_TOO_MANY_SUBLAYERS                                                  Handle        = 0x80320036\n\tFWP_E_CALLOUT_NOTIFICATION_FAILED                                         Handle        = 0x80320037\n\tFWP_E_INVALID_AUTH_TRANSFORM                                              Handle        = 0x80320038\n\tFWP_E_INVALID_CIPHER_TRANSFORM                                            Handle        = 0x80320039\n\tFWP_E_INCOMPATIBLE_CIPHER_TRANSFORM                                       Handle        = 0x8032003A\n\tFWP_E_INVALID_TRANSFORM_COMBINATION                                       Handle        = 0x8032003B\n\tFWP_E_DUPLICATE_AUTH_METHOD                                               Handle        = 0x8032003C\n\tFWP_E_INVALID_TUNNEL_ENDPOINT                                             Handle        = 0x8032003D\n\tFWP_E_L2_DRIVER_NOT_READY                                                 Handle        = 0x8032003E\n\tFWP_E_KEY_DICTATOR_ALREADY_REGISTERED                                     Handle        = 0x8032003F\n\tFWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL                               Handle        = 0x80320040\n\tFWP_E_CONNECTIONS_DISABLED                                                Handle        = 0x80320041\n\tFWP_E_INVALID_DNS_NAME                                                    Handle        = 0x80320042\n\tFWP_E_STILL_ON                                                            Handle        = 0x80320043\n\tFWP_E_IKEEXT_NOT_RUNNING                                                  Handle        = 0x80320044\n\tFWP_E_DROP_NOICMP                                                         Handle        = 0x80320104\n\tWS_S_ASYNC                                                                Handle        = 0x003D0000\n\tWS_S_END                                                                  Handle        = 0x003D0001\n\tWS_E_INVALID_FORMAT                                                       Handle        = 0x803D0000\n\tWS_E_OBJECT_FAULTED                                                       Handle        = 0x803D0001\n\tWS_E_NUMERIC_OVERFLOW                                                     Handle        = 0x803D0002\n\tWS_E_INVALID_OPERATION                                                    Handle        = 0x803D0003\n\tWS_E_OPERATION_ABORTED                                                    Handle        = 0x803D0004\n\tWS_E_ENDPOINT_ACCESS_DENIED                                               Handle        = 0x803D0005\n\tWS_E_OPERATION_TIMED_OUT                                                  Handle        = 0x803D0006\n\tWS_E_OPERATION_ABANDONED                                                  Handle        = 0x803D0007\n\tWS_E_QUOTA_EXCEEDED                                                       Handle        = 0x803D0008\n\tWS_E_NO_TRANSLATION_AVAILABLE                                             Handle        = 0x803D0009\n\tWS_E_SECURITY_VERIFICATION_FAILURE                                        Handle        = 0x803D000A\n\tWS_E_ADDRESS_IN_USE                                                       Handle        = 0x803D000B\n\tWS_E_ADDRESS_NOT_AVAILABLE                                                Handle        = 0x803D000C\n\tWS_E_ENDPOINT_NOT_FOUND                                                   Handle        = 0x803D000D\n\tWS_E_ENDPOINT_NOT_AVAILABLE                                               Handle        = 0x803D000E\n\tWS_E_ENDPOINT_FAILURE                                                     Handle        = 0x803D000F\n\tWS_E_ENDPOINT_UNREACHABLE                                                 Handle        = 0x803D0010\n\tWS_E_ENDPOINT_ACTION_NOT_SUPPORTED                                        Handle        = 0x803D0011\n\tWS_E_ENDPOINT_TOO_BUSY                                                    Handle        = 0x803D0012\n\tWS_E_ENDPOINT_FAULT_RECEIVED                                              Handle        = 0x803D0013\n\tWS_E_ENDPOINT_DISCONNECTED                                                Handle        = 0x803D0014\n\tWS_E_PROXY_FAILURE                                                        Handle        = 0x803D0015\n\tWS_E_PROXY_ACCESS_DENIED                                                  Handle        = 0x803D0016\n\tWS_E_NOT_SUPPORTED                                                        Handle        = 0x803D0017\n\tWS_E_PROXY_REQUIRES_BASIC_AUTH                                            Handle        = 0x803D0018\n\tWS_E_PROXY_REQUIRES_DIGEST_AUTH                                           Handle        = 0x803D0019\n\tWS_E_PROXY_REQUIRES_NTLM_AUTH                                             Handle        = 0x803D001A\n\tWS_E_PROXY_REQUIRES_NEGOTIATE_AUTH                                        Handle        = 0x803D001B\n\tWS_E_SERVER_REQUIRES_BASIC_AUTH                                           Handle        = 0x803D001C\n\tWS_E_SERVER_REQUIRES_DIGEST_AUTH                                          Handle        = 0x803D001D\n\tWS_E_SERVER_REQUIRES_NTLM_AUTH                                            Handle        = 0x803D001E\n\tWS_E_SERVER_REQUIRES_NEGOTIATE_AUTH                                       Handle        = 0x803D001F\n\tWS_E_INVALID_ENDPOINT_URL                                                 Handle        = 0x803D0020\n\tWS_E_OTHER                                                                Handle        = 0x803D0021\n\tWS_E_SECURITY_TOKEN_EXPIRED                                               Handle        = 0x803D0022\n\tWS_E_SECURITY_SYSTEM_FAILURE                                              Handle        = 0x803D0023\n\tERROR_NDIS_INTERFACE_CLOSING                                              syscall.Errno = 0x80340002\n\tERROR_NDIS_BAD_VERSION                                                    syscall.Errno = 0x80340004\n\tERROR_NDIS_BAD_CHARACTERISTICS                                            syscall.Errno = 0x80340005\n\tERROR_NDIS_ADAPTER_NOT_FOUND                                              syscall.Errno = 0x80340006\n\tERROR_NDIS_OPEN_FAILED                                                    syscall.Errno = 0x80340007\n\tERROR_NDIS_DEVICE_FAILED                                                  syscall.Errno = 0x80340008\n\tERROR_NDIS_MULTICAST_FULL                                                 syscall.Errno = 0x80340009\n\tERROR_NDIS_MULTICAST_EXISTS                                               syscall.Errno = 0x8034000A\n\tERROR_NDIS_MULTICAST_NOT_FOUND                                            syscall.Errno = 0x8034000B\n\tERROR_NDIS_REQUEST_ABORTED                                                syscall.Errno = 0x8034000C\n\tERROR_NDIS_RESET_IN_PROGRESS                                              syscall.Errno = 0x8034000D\n\tERROR_NDIS_NOT_SUPPORTED                                                  syscall.Errno = 0x803400BB\n\tERROR_NDIS_INVALID_PACKET                                                 syscall.Errno = 0x8034000F\n\tERROR_NDIS_ADAPTER_NOT_READY                                              syscall.Errno = 0x80340011\n\tERROR_NDIS_INVALID_LENGTH                                                 syscall.Errno = 0x80340014\n\tERROR_NDIS_INVALID_DATA                                                   syscall.Errno = 0x80340015\n\tERROR_NDIS_BUFFER_TOO_SHORT                                               syscall.Errno = 0x80340016\n\tERROR_NDIS_INVALID_OID                                                    syscall.Errno = 0x80340017\n\tERROR_NDIS_ADAPTER_REMOVED                                                syscall.Errno = 0x80340018\n\tERROR_NDIS_UNSUPPORTED_MEDIA                                              syscall.Errno = 0x80340019\n\tERROR_NDIS_GROUP_ADDRESS_IN_USE                                           syscall.Errno = 0x8034001A\n\tERROR_NDIS_FILE_NOT_FOUND                                                 syscall.Errno = 0x8034001B\n\tERROR_NDIS_ERROR_READING_FILE                                             syscall.Errno = 0x8034001C\n\tERROR_NDIS_ALREADY_MAPPED                                                 syscall.Errno = 0x8034001D\n\tERROR_NDIS_RESOURCE_CONFLICT                                              syscall.Errno = 0x8034001E\n\tERROR_NDIS_MEDIA_DISCONNECTED                                             syscall.Errno = 0x8034001F\n\tERROR_NDIS_INVALID_ADDRESS                                                syscall.Errno = 0x80340022\n\tERROR_NDIS_INVALID_DEVICE_REQUEST                                         syscall.Errno = 0x80340010\n\tERROR_NDIS_PAUSED                                                         syscall.Errno = 0x8034002A\n\tERROR_NDIS_INTERFACE_NOT_FOUND                                            syscall.Errno = 0x8034002B\n\tERROR_NDIS_UNSUPPORTED_REVISION                                           syscall.Errno = 0x8034002C\n\tERROR_NDIS_INVALID_PORT                                                   syscall.Errno = 0x8034002D\n\tERROR_NDIS_INVALID_PORT_STATE                                             syscall.Errno = 0x8034002E\n\tERROR_NDIS_LOW_POWER_STATE                                                syscall.Errno = 0x8034002F\n\tERROR_NDIS_REINIT_REQUIRED                                                syscall.Errno = 0x80340030\n\tERROR_NDIS_NO_QUEUES                                                      syscall.Errno = 0x80340031\n\tERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED                                      syscall.Errno = 0x80342000\n\tERROR_NDIS_DOT11_MEDIA_IN_USE                                             syscall.Errno = 0x80342001\n\tERROR_NDIS_DOT11_POWER_STATE_INVALID                                      syscall.Errno = 0x80342002\n\tERROR_NDIS_PM_WOL_PATTERN_LIST_FULL                                       syscall.Errno = 0x80342003\n\tERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL                                  syscall.Errno = 0x80342004\n\tERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE                       syscall.Errno = 0x80342005\n\tERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE                          syscall.Errno = 0x80342006\n\tERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED                                   syscall.Errno = 0x80342007\n\tERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED                                      syscall.Errno = 0x80342008\n\tERROR_NDIS_INDICATION_REQUIRED                                            syscall.Errno = 0x00340001\n\tERROR_NDIS_OFFLOAD_POLICY                                                 syscall.Errno = 0xC034100F\n\tERROR_NDIS_OFFLOAD_CONNECTION_REJECTED                                    syscall.Errno = 0xC0341012\n\tERROR_NDIS_OFFLOAD_PATH_REJECTED                                          syscall.Errno = 0xC0341013\n\tERROR_HV_INVALID_HYPERCALL_CODE                                           syscall.Errno = 0xC0350002\n\tERROR_HV_INVALID_HYPERCALL_INPUT                                          syscall.Errno = 0xC0350003\n\tERROR_HV_INVALID_ALIGNMENT                                                syscall.Errno = 0xC0350004\n\tERROR_HV_INVALID_PARAMETER                                                syscall.Errno = 0xC0350005\n\tERROR_HV_ACCESS_DENIED                                                    syscall.Errno = 0xC0350006\n\tERROR_HV_INVALID_PARTITION_STATE                                          syscall.Errno = 0xC0350007\n\tERROR_HV_OPERATION_DENIED                                                 syscall.Errno = 0xC0350008\n\tERROR_HV_UNKNOWN_PROPERTY                                                 syscall.Errno = 0xC0350009\n\tERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE                                      syscall.Errno = 0xC035000A\n\tERROR_HV_INSUFFICIENT_MEMORY                                              syscall.Errno = 0xC035000B\n\tERROR_HV_PARTITION_TOO_DEEP                                               syscall.Errno = 0xC035000C\n\tERROR_HV_INVALID_PARTITION_ID                                             syscall.Errno = 0xC035000D\n\tERROR_HV_INVALID_VP_INDEX                                                 syscall.Errno = 0xC035000E\n\tERROR_HV_INVALID_PORT_ID                                                  syscall.Errno = 0xC0350011\n\tERROR_HV_INVALID_CONNECTION_ID                                            syscall.Errno = 0xC0350012\n\tERROR_HV_INSUFFICIENT_BUFFERS                                             syscall.Errno = 0xC0350013\n\tERROR_HV_NOT_ACKNOWLEDGED                                                 syscall.Errno = 0xC0350014\n\tERROR_HV_INVALID_VP_STATE                                                 syscall.Errno = 0xC0350015\n\tERROR_HV_ACKNOWLEDGED                                                     syscall.Errno = 0xC0350016\n\tERROR_HV_INVALID_SAVE_RESTORE_STATE                                       syscall.Errno = 0xC0350017\n\tERROR_HV_INVALID_SYNIC_STATE                                              syscall.Errno = 0xC0350018\n\tERROR_HV_OBJECT_IN_USE                                                    syscall.Errno = 0xC0350019\n\tERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO                                    syscall.Errno = 0xC035001A\n\tERROR_HV_NO_DATA                                                          syscall.Errno = 0xC035001B\n\tERROR_HV_INACTIVE                                                         syscall.Errno = 0xC035001C\n\tERROR_HV_NO_RESOURCES                                                     syscall.Errno = 0xC035001D\n\tERROR_HV_FEATURE_UNAVAILABLE                                              syscall.Errno = 0xC035001E\n\tERROR_HV_INSUFFICIENT_BUFFER                                              syscall.Errno = 0xC0350033\n\tERROR_HV_INSUFFICIENT_DEVICE_DOMAINS                                      syscall.Errno = 0xC0350038\n\tERROR_HV_CPUID_FEATURE_VALIDATION                                         syscall.Errno = 0xC035003C\n\tERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION                                   syscall.Errno = 0xC035003D\n\tERROR_HV_PROCESSOR_STARTUP_TIMEOUT                                        syscall.Errno = 0xC035003E\n\tERROR_HV_SMX_ENABLED                                                      syscall.Errno = 0xC035003F\n\tERROR_HV_INVALID_LP_INDEX                                                 syscall.Errno = 0xC0350041\n\tERROR_HV_INVALID_REGISTER_VALUE                                           syscall.Errno = 0xC0350050\n\tERROR_HV_INVALID_VTL_STATE                                                syscall.Errno = 0xC0350051\n\tERROR_HV_NX_NOT_DETECTED                                                  syscall.Errno = 0xC0350055\n\tERROR_HV_INVALID_DEVICE_ID                                                syscall.Errno = 0xC0350057\n\tERROR_HV_INVALID_DEVICE_STATE                                             syscall.Errno = 0xC0350058\n\tERROR_HV_PENDING_PAGE_REQUESTS                                            syscall.Errno = 0x00350059\n\tERROR_HV_PAGE_REQUEST_INVALID                                             syscall.Errno = 0xC0350060\n\tERROR_HV_INVALID_CPU_GROUP_ID                                             syscall.Errno = 0xC035006F\n\tERROR_HV_INVALID_CPU_GROUP_STATE                                          syscall.Errno = 0xC0350070\n\tERROR_HV_OPERATION_FAILED                                                 syscall.Errno = 0xC0350071\n\tERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE                              syscall.Errno = 0xC0350072\n\tERROR_HV_INSUFFICIENT_ROOT_MEMORY                                         syscall.Errno = 0xC0350073\n\tERROR_HV_NOT_PRESENT                                                      syscall.Errno = 0xC0351000\n\tERROR_VID_DUPLICATE_HANDLER                                               syscall.Errno = 0xC0370001\n\tERROR_VID_TOO_MANY_HANDLERS                                               syscall.Errno = 0xC0370002\n\tERROR_VID_QUEUE_FULL                                                      syscall.Errno = 0xC0370003\n\tERROR_VID_HANDLER_NOT_PRESENT                                             syscall.Errno = 0xC0370004\n\tERROR_VID_INVALID_OBJECT_NAME                                             syscall.Errno = 0xC0370005\n\tERROR_VID_PARTITION_NAME_TOO_LONG                                         syscall.Errno = 0xC0370006\n\tERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG                                     syscall.Errno = 0xC0370007\n\tERROR_VID_PARTITION_ALREADY_EXISTS                                        syscall.Errno = 0xC0370008\n\tERROR_VID_PARTITION_DOES_NOT_EXIST                                        syscall.Errno = 0xC0370009\n\tERROR_VID_PARTITION_NAME_NOT_FOUND                                        syscall.Errno = 0xC037000A\n\tERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS                                    syscall.Errno = 0xC037000B\n\tERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT                                    syscall.Errno = 0xC037000C\n\tERROR_VID_MB_STILL_REFERENCED                                             syscall.Errno = 0xC037000D\n\tERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED                                    syscall.Errno = 0xC037000E\n\tERROR_VID_INVALID_NUMA_SETTINGS                                           syscall.Errno = 0xC037000F\n\tERROR_VID_INVALID_NUMA_NODE_INDEX                                         syscall.Errno = 0xC0370010\n\tERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED                           syscall.Errno = 0xC0370011\n\tERROR_VID_INVALID_MEMORY_BLOCK_HANDLE                                     syscall.Errno = 0xC0370012\n\tERROR_VID_PAGE_RANGE_OVERFLOW                                             syscall.Errno = 0xC0370013\n\tERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE                                    syscall.Errno = 0xC0370014\n\tERROR_VID_INVALID_GPA_RANGE_HANDLE                                        syscall.Errno = 0xC0370015\n\tERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE                              syscall.Errno = 0xC0370016\n\tERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED                                syscall.Errno = 0xC0370017\n\tERROR_VID_INVALID_PPM_HANDLE                                              syscall.Errno = 0xC0370018\n\tERROR_VID_MBPS_ARE_LOCKED                                                 syscall.Errno = 0xC0370019\n\tERROR_VID_MESSAGE_QUEUE_CLOSED                                            syscall.Errno = 0xC037001A\n\tERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED                                syscall.Errno = 0xC037001B\n\tERROR_VID_STOP_PENDING                                                    syscall.Errno = 0xC037001C\n\tERROR_VID_INVALID_PROCESSOR_STATE                                         syscall.Errno = 0xC037001D\n\tERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT                                 syscall.Errno = 0xC037001E\n\tERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED                                syscall.Errno = 0xC037001F\n\tERROR_VID_MB_PROPERTY_ALREADY_SET_RESET                                   syscall.Errno = 0xC0370020\n\tERROR_VID_MMIO_RANGE_DESTROYED                                            syscall.Errno = 0xC0370021\n\tERROR_VID_INVALID_CHILD_GPA_PAGE_SET                                      syscall.Errno = 0xC0370022\n\tERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED                                  syscall.Errno = 0xC0370023\n\tERROR_VID_RESERVE_PAGE_SET_TOO_SMALL                                      syscall.Errno = 0xC0370024\n\tERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE                          syscall.Errno = 0xC0370025\n\tERROR_VID_MBP_COUNT_EXCEEDED_LIMIT                                        syscall.Errno = 0xC0370026\n\tERROR_VID_SAVED_STATE_CORRUPT                                             syscall.Errno = 0xC0370027\n\tERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM                                   syscall.Errno = 0xC0370028\n\tERROR_VID_SAVED_STATE_INCOMPATIBLE                                        syscall.Errno = 0xC0370029\n\tERROR_VID_VTL_ACCESS_DENIED                                               syscall.Errno = 0xC037002A\n\tERROR_VMCOMPUTE_TERMINATED_DURING_START                                   syscall.Errno = 0xC0370100\n\tERROR_VMCOMPUTE_IMAGE_MISMATCH                                            syscall.Errno = 0xC0370101\n\tERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED                                      syscall.Errno = 0xC0370102\n\tERROR_VMCOMPUTE_OPERATION_PENDING                                         syscall.Errno = 0xC0370103\n\tERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS                                    syscall.Errno = 0xC0370104\n\tERROR_VMCOMPUTE_INVALID_STATE                                             syscall.Errno = 0xC0370105\n\tERROR_VMCOMPUTE_UNEXPECTED_EXIT                                           syscall.Errno = 0xC0370106\n\tERROR_VMCOMPUTE_TERMINATED                                                syscall.Errno = 0xC0370107\n\tERROR_VMCOMPUTE_CONNECT_FAILED                                            syscall.Errno = 0xC0370108\n\tERROR_VMCOMPUTE_TIMEOUT                                                   syscall.Errno = 0xC0370109\n\tERROR_VMCOMPUTE_CONNECTION_CLOSED                                         syscall.Errno = 0xC037010A\n\tERROR_VMCOMPUTE_UNKNOWN_MESSAGE                                           syscall.Errno = 0xC037010B\n\tERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION                              syscall.Errno = 0xC037010C\n\tERROR_VMCOMPUTE_INVALID_JSON                                              syscall.Errno = 0xC037010D\n\tERROR_VMCOMPUTE_SYSTEM_NOT_FOUND                                          syscall.Errno = 0xC037010E\n\tERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS                                     syscall.Errno = 0xC037010F\n\tERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED                                    syscall.Errno = 0xC0370110\n\tERROR_VMCOMPUTE_PROTOCOL_ERROR                                            syscall.Errno = 0xC0370111\n\tERROR_VMCOMPUTE_INVALID_LAYER                                             syscall.Errno = 0xC0370112\n\tERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED                                  syscall.Errno = 0xC0370113\n\tHCS_E_TERMINATED_DURING_START                                             Handle        = 0x80370100\n\tHCS_E_IMAGE_MISMATCH                                                      Handle        = 0x80370101\n\tHCS_E_HYPERV_NOT_INSTALLED                                                Handle        = 0x80370102\n\tHCS_E_INVALID_STATE                                                       Handle        = 0x80370105\n\tHCS_E_UNEXPECTED_EXIT                                                     Handle        = 0x80370106\n\tHCS_E_TERMINATED                                                          Handle        = 0x80370107\n\tHCS_E_CONNECT_FAILED                                                      Handle        = 0x80370108\n\tHCS_E_CONNECTION_TIMEOUT                                                  Handle        = 0x80370109\n\tHCS_E_CONNECTION_CLOSED                                                   Handle        = 0x8037010A\n\tHCS_E_UNKNOWN_MESSAGE                                                     Handle        = 0x8037010B\n\tHCS_E_UNSUPPORTED_PROTOCOL_VERSION                                        Handle        = 0x8037010C\n\tHCS_E_INVALID_JSON                                                        Handle        = 0x8037010D\n\tHCS_E_SYSTEM_NOT_FOUND                                                    Handle        = 0x8037010E\n\tHCS_E_SYSTEM_ALREADY_EXISTS                                               Handle        = 0x8037010F\n\tHCS_E_SYSTEM_ALREADY_STOPPED                                              Handle        = 0x80370110\n\tHCS_E_PROTOCOL_ERROR                                                      Handle        = 0x80370111\n\tHCS_E_INVALID_LAYER                                                       Handle        = 0x80370112\n\tHCS_E_WINDOWS_INSIDER_REQUIRED                                            Handle        = 0x80370113\n\tHCS_E_SERVICE_NOT_AVAILABLE                                               Handle        = 0x80370114\n\tHCS_E_OPERATION_NOT_STARTED                                               Handle        = 0x80370115\n\tHCS_E_OPERATION_ALREADY_STARTED                                           Handle        = 0x80370116\n\tHCS_E_OPERATION_PENDING                                                   Handle        = 0x80370117\n\tHCS_E_OPERATION_TIMEOUT                                                   Handle        = 0x80370118\n\tHCS_E_OPERATION_SYSTEM_CALLBACK_ALREADY_SET                               Handle        = 0x80370119\n\tHCS_E_OPERATION_RESULT_ALLOCATION_FAILED                                  Handle        = 0x8037011A\n\tHCS_E_ACCESS_DENIED                                                       Handle        = 0x8037011B\n\tHCS_E_GUEST_CRITICAL_ERROR                                                Handle        = 0x8037011C\n\tERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND                                  syscall.Errno = 0xC0370200\n\tERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED                               syscall.Errno = 0x80370001\n\tWHV_E_UNKNOWN_CAPABILITY                                                  Handle        = 0x80370300\n\tWHV_E_INSUFFICIENT_BUFFER                                                 Handle        = 0x80370301\n\tWHV_E_UNKNOWN_PROPERTY                                                    Handle        = 0x80370302\n\tWHV_E_UNSUPPORTED_HYPERVISOR_CONFIG                                       Handle        = 0x80370303\n\tWHV_E_INVALID_PARTITION_CONFIG                                            Handle        = 0x80370304\n\tWHV_E_GPA_RANGE_NOT_FOUND                                                 Handle        = 0x80370305\n\tWHV_E_VP_ALREADY_EXISTS                                                   Handle        = 0x80370306\n\tWHV_E_VP_DOES_NOT_EXIST                                                   Handle        = 0x80370307\n\tWHV_E_INVALID_VP_STATE                                                    Handle        = 0x80370308\n\tWHV_E_INVALID_VP_REGISTER_NAME                                            Handle        = 0x80370309\n\tERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND                                     syscall.Errno = 0xC0370400\n\tERROR_VSMB_SAVED_STATE_CORRUPT                                            syscall.Errno = 0xC0370401\n\tERROR_VOLMGR_INCOMPLETE_REGENERATION                                      syscall.Errno = 0x80380001\n\tERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION                                    syscall.Errno = 0x80380002\n\tERROR_VOLMGR_DATABASE_FULL                                                syscall.Errno = 0xC0380001\n\tERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED                                 syscall.Errno = 0xC0380002\n\tERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC                               syscall.Errno = 0xC0380003\n\tERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED                                    syscall.Errno = 0xC0380004\n\tERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME                              syscall.Errno = 0xC0380005\n\tERROR_VOLMGR_DISK_DUPLICATE                                               syscall.Errno = 0xC0380006\n\tERROR_VOLMGR_DISK_DYNAMIC                                                 syscall.Errno = 0xC0380007\n\tERROR_VOLMGR_DISK_ID_INVALID                                              syscall.Errno = 0xC0380008\n\tERROR_VOLMGR_DISK_INVALID                                                 syscall.Errno = 0xC0380009\n\tERROR_VOLMGR_DISK_LAST_VOTER                                              syscall.Errno = 0xC038000A\n\tERROR_VOLMGR_DISK_LAYOUT_INVALID                                          syscall.Errno = 0xC038000B\n\tERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS               syscall.Errno = 0xC038000C\n\tERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED                             syscall.Errno = 0xC038000D\n\tERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL                             syscall.Errno = 0xC038000E\n\tERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS               syscall.Errno = 0xC038000F\n\tERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS                              syscall.Errno = 0xC0380010\n\tERROR_VOLMGR_DISK_MISSING                                                 syscall.Errno = 0xC0380011\n\tERROR_VOLMGR_DISK_NOT_EMPTY                                               syscall.Errno = 0xC0380012\n\tERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE                                        syscall.Errno = 0xC0380013\n\tERROR_VOLMGR_DISK_REVECTORING_FAILED                                      syscall.Errno = 0xC0380014\n\tERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID                                     syscall.Errno = 0xC0380015\n\tERROR_VOLMGR_DISK_SET_NOT_CONTAINED                                       syscall.Errno = 0xC0380016\n\tERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS                                syscall.Errno = 0xC0380017\n\tERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES                                 syscall.Errno = 0xC0380018\n\tERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED                                   syscall.Errno = 0xC0380019\n\tERROR_VOLMGR_EXTENT_ALREADY_USED                                          syscall.Errno = 0xC038001A\n\tERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS                                        syscall.Errno = 0xC038001B\n\tERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION                                  syscall.Errno = 0xC038001C\n\tERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED                                    syscall.Errno = 0xC038001D\n\tERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION                                syscall.Errno = 0xC038001E\n\tERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH                           syscall.Errno = 0xC038001F\n\tERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED                                 syscall.Errno = 0xC0380020\n\tERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID                                    syscall.Errno = 0xC0380021\n\tERROR_VOLMGR_MAXIMUM_REGISTERED_USERS                                     syscall.Errno = 0xC0380022\n\tERROR_VOLMGR_MEMBER_IN_SYNC                                               syscall.Errno = 0xC0380023\n\tERROR_VOLMGR_MEMBER_INDEX_DUPLICATE                                       syscall.Errno = 0xC0380024\n\tERROR_VOLMGR_MEMBER_INDEX_INVALID                                         syscall.Errno = 0xC0380025\n\tERROR_VOLMGR_MEMBER_MISSING                                               syscall.Errno = 0xC0380026\n\tERROR_VOLMGR_MEMBER_NOT_DETACHED                                          syscall.Errno = 0xC0380027\n\tERROR_VOLMGR_MEMBER_REGENERATING                                          syscall.Errno = 0xC0380028\n\tERROR_VOLMGR_ALL_DISKS_FAILED                                             syscall.Errno = 0xC0380029\n\tERROR_VOLMGR_NO_REGISTERED_USERS                                          syscall.Errno = 0xC038002A\n\tERROR_VOLMGR_NO_SUCH_USER                                                 syscall.Errno = 0xC038002B\n\tERROR_VOLMGR_NOTIFICATION_RESET                                           syscall.Errno = 0xC038002C\n\tERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID                                    syscall.Errno = 0xC038002D\n\tERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID                                     syscall.Errno = 0xC038002E\n\tERROR_VOLMGR_PACK_DUPLICATE                                               syscall.Errno = 0xC038002F\n\tERROR_VOLMGR_PACK_ID_INVALID                                              syscall.Errno = 0xC0380030\n\tERROR_VOLMGR_PACK_INVALID                                                 syscall.Errno = 0xC0380031\n\tERROR_VOLMGR_PACK_NAME_INVALID                                            syscall.Errno = 0xC0380032\n\tERROR_VOLMGR_PACK_OFFLINE                                                 syscall.Errno = 0xC0380033\n\tERROR_VOLMGR_PACK_HAS_QUORUM                                              syscall.Errno = 0xC0380034\n\tERROR_VOLMGR_PACK_WITHOUT_QUORUM                                          syscall.Errno = 0xC0380035\n\tERROR_VOLMGR_PARTITION_STYLE_INVALID                                      syscall.Errno = 0xC0380036\n\tERROR_VOLMGR_PARTITION_UPDATE_FAILED                                      syscall.Errno = 0xC0380037\n\tERROR_VOLMGR_PLEX_IN_SYNC                                                 syscall.Errno = 0xC0380038\n\tERROR_VOLMGR_PLEX_INDEX_DUPLICATE                                         syscall.Errno = 0xC0380039\n\tERROR_VOLMGR_PLEX_INDEX_INVALID                                           syscall.Errno = 0xC038003A\n\tERROR_VOLMGR_PLEX_LAST_ACTIVE                                             syscall.Errno = 0xC038003B\n\tERROR_VOLMGR_PLEX_MISSING                                                 syscall.Errno = 0xC038003C\n\tERROR_VOLMGR_PLEX_REGENERATING                                            syscall.Errno = 0xC038003D\n\tERROR_VOLMGR_PLEX_TYPE_INVALID                                            syscall.Errno = 0xC038003E\n\tERROR_VOLMGR_PLEX_NOT_RAID5                                               syscall.Errno = 0xC038003F\n\tERROR_VOLMGR_PLEX_NOT_SIMPLE                                              syscall.Errno = 0xC0380040\n\tERROR_VOLMGR_STRUCTURE_SIZE_INVALID                                       syscall.Errno = 0xC0380041\n\tERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS                               syscall.Errno = 0xC0380042\n\tERROR_VOLMGR_TRANSACTION_IN_PROGRESS                                      syscall.Errno = 0xC0380043\n\tERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE                                syscall.Errno = 0xC0380044\n\tERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK                                 syscall.Errno = 0xC0380045\n\tERROR_VOLMGR_VOLUME_ID_INVALID                                            syscall.Errno = 0xC0380046\n\tERROR_VOLMGR_VOLUME_LENGTH_INVALID                                        syscall.Errno = 0xC0380047\n\tERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE                       syscall.Errno = 0xC0380048\n\tERROR_VOLMGR_VOLUME_NOT_MIRRORED                                          syscall.Errno = 0xC0380049\n\tERROR_VOLMGR_VOLUME_NOT_RETAINED                                          syscall.Errno = 0xC038004A\n\tERROR_VOLMGR_VOLUME_OFFLINE                                               syscall.Errno = 0xC038004B\n\tERROR_VOLMGR_VOLUME_RETAINED                                              syscall.Errno = 0xC038004C\n\tERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID                                    syscall.Errno = 0xC038004D\n\tERROR_VOLMGR_DIFFERENT_SECTOR_SIZE                                        syscall.Errno = 0xC038004E\n\tERROR_VOLMGR_BAD_BOOT_DISK                                                syscall.Errno = 0xC038004F\n\tERROR_VOLMGR_PACK_CONFIG_OFFLINE                                          syscall.Errno = 0xC0380050\n\tERROR_VOLMGR_PACK_CONFIG_ONLINE                                           syscall.Errno = 0xC0380051\n\tERROR_VOLMGR_NOT_PRIMARY_PACK                                             syscall.Errno = 0xC0380052\n\tERROR_VOLMGR_PACK_LOG_UPDATE_FAILED                                       syscall.Errno = 0xC0380053\n\tERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID                              syscall.Errno = 0xC0380054\n\tERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID                            syscall.Errno = 0xC0380055\n\tERROR_VOLMGR_VOLUME_MIRRORED                                              syscall.Errno = 0xC0380056\n\tERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED                                      syscall.Errno = 0xC0380057\n\tERROR_VOLMGR_NO_VALID_LOG_COPIES                                          syscall.Errno = 0xC0380058\n\tERROR_VOLMGR_PRIMARY_PACK_PRESENT                                         syscall.Errno = 0xC0380059\n\tERROR_VOLMGR_NUMBER_OF_DISKS_INVALID                                      syscall.Errno = 0xC038005A\n\tERROR_VOLMGR_MIRROR_NOT_SUPPORTED                                         syscall.Errno = 0xC038005B\n\tERROR_VOLMGR_RAID5_NOT_SUPPORTED                                          syscall.Errno = 0xC038005C\n\tERROR_BCD_NOT_ALL_ENTRIES_IMPORTED                                        syscall.Errno = 0x80390001\n\tERROR_BCD_TOO_MANY_ELEMENTS                                               syscall.Errno = 0xC0390002\n\tERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED                                    syscall.Errno = 0x80390003\n\tERROR_VHD_DRIVE_FOOTER_MISSING                                            syscall.Errno = 0xC03A0001\n\tERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH                                  syscall.Errno = 0xC03A0002\n\tERROR_VHD_DRIVE_FOOTER_CORRUPT                                            syscall.Errno = 0xC03A0003\n\tERROR_VHD_FORMAT_UNKNOWN                                                  syscall.Errno = 0xC03A0004\n\tERROR_VHD_FORMAT_UNSUPPORTED_VERSION                                      syscall.Errno = 0xC03A0005\n\tERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH                                 syscall.Errno = 0xC03A0006\n\tERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION                               syscall.Errno = 0xC03A0007\n\tERROR_VHD_SPARSE_HEADER_CORRUPT                                           syscall.Errno = 0xC03A0008\n\tERROR_VHD_BLOCK_ALLOCATION_FAILURE                                        syscall.Errno = 0xC03A0009\n\tERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT                                  syscall.Errno = 0xC03A000A\n\tERROR_VHD_INVALID_BLOCK_SIZE                                              syscall.Errno = 0xC03A000B\n\tERROR_VHD_BITMAP_MISMATCH                                                 syscall.Errno = 0xC03A000C\n\tERROR_VHD_PARENT_VHD_NOT_FOUND                                            syscall.Errno = 0xC03A000D\n\tERROR_VHD_CHILD_PARENT_ID_MISMATCH                                        syscall.Errno = 0xC03A000E\n\tERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH                                 syscall.Errno = 0xC03A000F\n\tERROR_VHD_METADATA_READ_FAILURE                                           syscall.Errno = 0xC03A0010\n\tERROR_VHD_METADATA_WRITE_FAILURE                                          syscall.Errno = 0xC03A0011\n\tERROR_VHD_INVALID_SIZE                                                    syscall.Errno = 0xC03A0012\n\tERROR_VHD_INVALID_FILE_SIZE                                               syscall.Errno = 0xC03A0013\n\tERROR_VIRTDISK_PROVIDER_NOT_FOUND                                         syscall.Errno = 0xC03A0014\n\tERROR_VIRTDISK_NOT_VIRTUAL_DISK                                           syscall.Errno = 0xC03A0015\n\tERROR_VHD_PARENT_VHD_ACCESS_DENIED                                        syscall.Errno = 0xC03A0016\n\tERROR_VHD_CHILD_PARENT_SIZE_MISMATCH                                      syscall.Errno = 0xC03A0017\n\tERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED                               syscall.Errno = 0xC03A0018\n\tERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT                              syscall.Errno = 0xC03A0019\n\tERROR_VIRTUAL_DISK_LIMITATION                                             syscall.Errno = 0xC03A001A\n\tERROR_VHD_INVALID_TYPE                                                    syscall.Errno = 0xC03A001B\n\tERROR_VHD_INVALID_STATE                                                   syscall.Errno = 0xC03A001C\n\tERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE                               syscall.Errno = 0xC03A001D\n\tERROR_VIRTDISK_DISK_ALREADY_OWNED                                         syscall.Errno = 0xC03A001E\n\tERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE                                   syscall.Errno = 0xC03A001F\n\tERROR_CTLOG_TRACKING_NOT_INITIALIZED                                      syscall.Errno = 0xC03A0020\n\tERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE                                 syscall.Errno = 0xC03A0021\n\tERROR_CTLOG_VHD_CHANGED_OFFLINE                                           syscall.Errno = 0xC03A0022\n\tERROR_CTLOG_INVALID_TRACKING_STATE                                        syscall.Errno = 0xC03A0023\n\tERROR_CTLOG_INCONSISTENT_TRACKING_FILE                                    syscall.Errno = 0xC03A0024\n\tERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA                                      syscall.Errno = 0xC03A0025\n\tERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE                          syscall.Errno = 0xC03A0026\n\tERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE                        syscall.Errno = 0xC03A0027\n\tERROR_VHD_METADATA_FULL                                                   syscall.Errno = 0xC03A0028\n\tERROR_VHD_INVALID_CHANGE_TRACKING_ID                                      syscall.Errno = 0xC03A0029\n\tERROR_VHD_CHANGE_TRACKING_DISABLED                                        syscall.Errno = 0xC03A002A\n\tERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION                             syscall.Errno = 0xC03A0030\n\tERROR_QUERY_STORAGE_ERROR                                                 syscall.Errno = 0x803A0001\n\tHCN_E_NETWORK_NOT_FOUND                                                   Handle        = 0x803B0001\n\tHCN_E_ENDPOINT_NOT_FOUND                                                  Handle        = 0x803B0002\n\tHCN_E_LAYER_NOT_FOUND                                                     Handle        = 0x803B0003\n\tHCN_E_SWITCH_NOT_FOUND                                                    Handle        = 0x803B0004\n\tHCN_E_SUBNET_NOT_FOUND                                                    Handle        = 0x803B0005\n\tHCN_E_ADAPTER_NOT_FOUND                                                   Handle        = 0x803B0006\n\tHCN_E_PORT_NOT_FOUND                                                      Handle        = 0x803B0007\n\tHCN_E_POLICY_NOT_FOUND                                                    Handle        = 0x803B0008\n\tHCN_E_VFP_PORTSETTING_NOT_FOUND                                           Handle        = 0x803B0009\n\tHCN_E_INVALID_NETWORK                                                     Handle        = 0x803B000A\n\tHCN_E_INVALID_NETWORK_TYPE                                                Handle        = 0x803B000B\n\tHCN_E_INVALID_ENDPOINT                                                    Handle        = 0x803B000C\n\tHCN_E_INVALID_POLICY                                                      Handle        = 0x803B000D\n\tHCN_E_INVALID_POLICY_TYPE                                                 Handle        = 0x803B000E\n\tHCN_E_INVALID_REMOTE_ENDPOINT_OPERATION                                   Handle        = 0x803B000F\n\tHCN_E_NETWORK_ALREADY_EXISTS                                              Handle        = 0x803B0010\n\tHCN_E_LAYER_ALREADY_EXISTS                                                Handle        = 0x803B0011\n\tHCN_E_POLICY_ALREADY_EXISTS                                               Handle        = 0x803B0012\n\tHCN_E_PORT_ALREADY_EXISTS                                                 Handle        = 0x803B0013\n\tHCN_E_ENDPOINT_ALREADY_ATTACHED                                           Handle        = 0x803B0014\n\tHCN_E_REQUEST_UNSUPPORTED                                                 Handle        = 0x803B0015\n\tHCN_E_MAPPING_NOT_SUPPORTED                                               Handle        = 0x803B0016\n\tHCN_E_DEGRADED_OPERATION                                                  Handle        = 0x803B0017\n\tHCN_E_SHARED_SWITCH_MODIFICATION                                          Handle        = 0x803B0018\n\tHCN_E_GUID_CONVERSION_FAILURE                                             Handle        = 0x803B0019\n\tHCN_E_REGKEY_FAILURE                                                      Handle        = 0x803B001A\n\tHCN_E_INVALID_JSON                                                        Handle        = 0x803B001B\n\tHCN_E_INVALID_JSON_REFERENCE                                              Handle        = 0x803B001C\n\tHCN_E_ENDPOINT_SHARING_DISABLED                                           Handle        = 0x803B001D\n\tHCN_E_INVALID_IP                                                          Handle        = 0x803B001E\n\tHCN_E_SWITCH_EXTENSION_NOT_FOUND                                          Handle        = 0x803B001F\n\tHCN_E_MANAGER_STOPPED                                                     Handle        = 0x803B0020\n\tGCN_E_MODULE_NOT_FOUND                                                    Handle        = 0x803B0021\n\tGCN_E_NO_REQUEST_HANDLERS                                                 Handle        = 0x803B0022\n\tGCN_E_REQUEST_UNSUPPORTED                                                 Handle        = 0x803B0023\n\tGCN_E_RUNTIMEKEYS_FAILED                                                  Handle        = 0x803B0024\n\tGCN_E_NETADAPTER_TIMEOUT                                                  Handle        = 0x803B0025\n\tGCN_E_NETADAPTER_NOT_FOUND                                                Handle        = 0x803B0026\n\tGCN_E_NETCOMPARTMENT_NOT_FOUND                                            Handle        = 0x803B0027\n\tGCN_E_NETINTERFACE_NOT_FOUND                                              Handle        = 0x803B0028\n\tGCN_E_DEFAULTNAMESPACE_EXISTS                                             Handle        = 0x803B0029\n\tHCN_E_ICS_DISABLED                                                        Handle        = 0x803B002A\n\tHCN_E_ENDPOINT_NAMESPACE_ALREADY_EXISTS                                   Handle        = 0x803B002B\n\tHCN_E_ENTITY_HAS_REFERENCES                                               Handle        = 0x803B002C\n\tHCN_E_INVALID_INTERNAL_PORT                                               Handle        = 0x803B002D\n\tHCN_E_NAMESPACE_ATTACH_FAILED                                             Handle        = 0x803B002E\n\tHCN_E_ADDR_INVALID_OR_RESERVED                                            Handle        = 0x803B002F\n\tSDIAG_E_CANCELLED                                                         syscall.Errno = 0x803C0100\n\tSDIAG_E_SCRIPT                                                            syscall.Errno = 0x803C0101\n\tSDIAG_E_POWERSHELL                                                        syscall.Errno = 0x803C0102\n\tSDIAG_E_MANAGEDHOST                                                       syscall.Errno = 0x803C0103\n\tSDIAG_E_NOVERIFIER                                                        syscall.Errno = 0x803C0104\n\tSDIAG_S_CANNOTRUN                                                         syscall.Errno = 0x003C0105\n\tSDIAG_E_DISABLED                                                          syscall.Errno = 0x803C0106\n\tSDIAG_E_TRUST                                                             syscall.Errno = 0x803C0107\n\tSDIAG_E_CANNOTRUN                                                         syscall.Errno = 0x803C0108\n\tSDIAG_E_VERSION                                                           syscall.Errno = 0x803C0109\n\tSDIAG_E_RESOURCE                                                          syscall.Errno = 0x803C010A\n\tSDIAG_E_ROOTCAUSE                                                         syscall.Errno = 0x803C010B\n\tWPN_E_CHANNEL_CLOSED                                                      Handle        = 0x803E0100\n\tWPN_E_CHANNEL_REQUEST_NOT_COMPLETE                                        Handle        = 0x803E0101\n\tWPN_E_INVALID_APP                                                         Handle        = 0x803E0102\n\tWPN_E_OUTSTANDING_CHANNEL_REQUEST                                         Handle        = 0x803E0103\n\tWPN_E_DUPLICATE_CHANNEL                                                   Handle        = 0x803E0104\n\tWPN_E_PLATFORM_UNAVAILABLE                                                Handle        = 0x803E0105\n\tWPN_E_NOTIFICATION_POSTED                                                 Handle        = 0x803E0106\n\tWPN_E_NOTIFICATION_HIDDEN                                                 Handle        = 0x803E0107\n\tWPN_E_NOTIFICATION_NOT_POSTED                                             Handle        = 0x803E0108\n\tWPN_E_CLOUD_DISABLED                                                      Handle        = 0x803E0109\n\tWPN_E_CLOUD_INCAPABLE                                                     Handle        = 0x803E0110\n\tWPN_E_CLOUD_AUTH_UNAVAILABLE                                              Handle        = 0x803E011A\n\tWPN_E_CLOUD_SERVICE_UNAVAILABLE                                           Handle        = 0x803E011B\n\tWPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION                             Handle        = 0x803E011C\n\tWPN_E_NOTIFICATION_DISABLED                                               Handle        = 0x803E0111\n\tWPN_E_NOTIFICATION_INCAPABLE                                              Handle        = 0x803E0112\n\tWPN_E_INTERNET_INCAPABLE                                                  Handle        = 0x803E0113\n\tWPN_E_NOTIFICATION_TYPE_DISABLED                                          Handle        = 0x803E0114\n\tWPN_E_NOTIFICATION_SIZE                                                   Handle        = 0x803E0115\n\tWPN_E_TAG_SIZE                                                            Handle        = 0x803E0116\n\tWPN_E_ACCESS_DENIED                                                       Handle        = 0x803E0117\n\tWPN_E_DUPLICATE_REGISTRATION                                              Handle        = 0x803E0118\n\tWPN_E_PUSH_NOTIFICATION_INCAPABLE                                         Handle        = 0x803E0119\n\tWPN_E_DEV_ID_SIZE                                                         Handle        = 0x803E0120\n\tWPN_E_TAG_ALPHANUMERIC                                                    Handle        = 0x803E012A\n\tWPN_E_INVALID_HTTP_STATUS_CODE                                            Handle        = 0x803E012B\n\tWPN_E_OUT_OF_SESSION                                                      Handle        = 0x803E0200\n\tWPN_E_POWER_SAVE                                                          Handle        = 0x803E0201\n\tWPN_E_IMAGE_NOT_FOUND_IN_CACHE                                            Handle        = 0x803E0202\n\tWPN_E_ALL_URL_NOT_COMPLETED                                               Handle        = 0x803E0203\n\tWPN_E_INVALID_CLOUD_IMAGE                                                 Handle        = 0x803E0204\n\tWPN_E_NOTIFICATION_ID_MATCHED                                             Handle        = 0x803E0205\n\tWPN_E_CALLBACK_ALREADY_REGISTERED                                         Handle        = 0x803E0206\n\tWPN_E_TOAST_NOTIFICATION_DROPPED                                          Handle        = 0x803E0207\n\tWPN_E_STORAGE_LOCKED                                                      Handle        = 0x803E0208\n\tWPN_E_GROUP_SIZE                                                          Handle        = 0x803E0209\n\tWPN_E_GROUP_ALPHANUMERIC                                                  Handle        = 0x803E020A\n\tWPN_E_CLOUD_DISABLED_FOR_APP                                              Handle        = 0x803E020B\n\tE_MBN_CONTEXT_NOT_ACTIVATED                                               Handle        = 0x80548201\n\tE_MBN_BAD_SIM                                                             Handle        = 0x80548202\n\tE_MBN_DATA_CLASS_NOT_AVAILABLE                                            Handle        = 0x80548203\n\tE_MBN_INVALID_ACCESS_STRING                                               Handle        = 0x80548204\n\tE_MBN_MAX_ACTIVATED_CONTEXTS                                              Handle        = 0x80548205\n\tE_MBN_PACKET_SVC_DETACHED                                                 Handle        = 0x80548206\n\tE_MBN_PROVIDER_NOT_VISIBLE                                                Handle        = 0x80548207\n\tE_MBN_RADIO_POWER_OFF                                                     Handle        = 0x80548208\n\tE_MBN_SERVICE_NOT_ACTIVATED                                               Handle        = 0x80548209\n\tE_MBN_SIM_NOT_INSERTED                                                    Handle        = 0x8054820A\n\tE_MBN_VOICE_CALL_IN_PROGRESS                                              Handle        = 0x8054820B\n\tE_MBN_INVALID_CACHE                                                       Handle        = 0x8054820C\n\tE_MBN_NOT_REGISTERED                                                      Handle        = 0x8054820D\n\tE_MBN_PROVIDERS_NOT_FOUND                                                 Handle        = 0x8054820E\n\tE_MBN_PIN_NOT_SUPPORTED                                                   Handle        = 0x8054820F\n\tE_MBN_PIN_REQUIRED                                                        Handle        = 0x80548210\n\tE_MBN_PIN_DISABLED                                                        Handle        = 0x80548211\n\tE_MBN_FAILURE                                                             Handle        = 0x80548212\n\tE_MBN_INVALID_PROFILE                                                     Handle        = 0x80548218\n\tE_MBN_DEFAULT_PROFILE_EXIST                                               Handle        = 0x80548219\n\tE_MBN_SMS_ENCODING_NOT_SUPPORTED                                          Handle        = 0x80548220\n\tE_MBN_SMS_FILTER_NOT_SUPPORTED                                            Handle        = 0x80548221\n\tE_MBN_SMS_INVALID_MEMORY_INDEX                                            Handle        = 0x80548222\n\tE_MBN_SMS_LANG_NOT_SUPPORTED                                              Handle        = 0x80548223\n\tE_MBN_SMS_MEMORY_FAILURE                                                  Handle        = 0x80548224\n\tE_MBN_SMS_NETWORK_TIMEOUT                                                 Handle        = 0x80548225\n\tE_MBN_SMS_UNKNOWN_SMSC_ADDRESS                                            Handle        = 0x80548226\n\tE_MBN_SMS_FORMAT_NOT_SUPPORTED                                            Handle        = 0x80548227\n\tE_MBN_SMS_OPERATION_NOT_ALLOWED                                           Handle        = 0x80548228\n\tE_MBN_SMS_MEMORY_FULL                                                     Handle        = 0x80548229\n\tPEER_E_IPV6_NOT_INSTALLED                                                 Handle        = 0x80630001\n\tPEER_E_NOT_INITIALIZED                                                    Handle        = 0x80630002\n\tPEER_E_CANNOT_START_SERVICE                                               Handle        = 0x80630003\n\tPEER_E_NOT_LICENSED                                                       Handle        = 0x80630004\n\tPEER_E_INVALID_GRAPH                                                      Handle        = 0x80630010\n\tPEER_E_DBNAME_CHANGED                                                     Handle        = 0x80630011\n\tPEER_E_DUPLICATE_GRAPH                                                    Handle        = 0x80630012\n\tPEER_E_GRAPH_NOT_READY                                                    Handle        = 0x80630013\n\tPEER_E_GRAPH_SHUTTING_DOWN                                                Handle        = 0x80630014\n\tPEER_E_GRAPH_IN_USE                                                       Handle        = 0x80630015\n\tPEER_E_INVALID_DATABASE                                                   Handle        = 0x80630016\n\tPEER_E_TOO_MANY_ATTRIBUTES                                                Handle        = 0x80630017\n\tPEER_E_CONNECTION_NOT_FOUND                                               Handle        = 0x80630103\n\tPEER_E_CONNECT_SELF                                                       Handle        = 0x80630106\n\tPEER_E_ALREADY_LISTENING                                                  Handle        = 0x80630107\n\tPEER_E_NODE_NOT_FOUND                                                     Handle        = 0x80630108\n\tPEER_E_CONNECTION_FAILED                                                  Handle        = 0x80630109\n\tPEER_E_CONNECTION_NOT_AUTHENTICATED                                       Handle        = 0x8063010A\n\tPEER_E_CONNECTION_REFUSED                                                 Handle        = 0x8063010B\n\tPEER_E_CLASSIFIER_TOO_LONG                                                Handle        = 0x80630201\n\tPEER_E_TOO_MANY_IDENTITIES                                                Handle        = 0x80630202\n\tPEER_E_NO_KEY_ACCESS                                                      Handle        = 0x80630203\n\tPEER_E_GROUPS_EXIST                                                       Handle        = 0x80630204\n\tPEER_E_RECORD_NOT_FOUND                                                   Handle        = 0x80630301\n\tPEER_E_DATABASE_ACCESSDENIED                                              Handle        = 0x80630302\n\tPEER_E_DBINITIALIZATION_FAILED                                            Handle        = 0x80630303\n\tPEER_E_MAX_RECORD_SIZE_EXCEEDED                                           Handle        = 0x80630304\n\tPEER_E_DATABASE_ALREADY_PRESENT                                           Handle        = 0x80630305\n\tPEER_E_DATABASE_NOT_PRESENT                                               Handle        = 0x80630306\n\tPEER_E_IDENTITY_NOT_FOUND                                                 Handle        = 0x80630401\n\tPEER_E_EVENT_HANDLE_NOT_FOUND                                             Handle        = 0x80630501\n\tPEER_E_INVALID_SEARCH                                                     Handle        = 0x80630601\n\tPEER_E_INVALID_ATTRIBUTES                                                 Handle        = 0x80630602\n\tPEER_E_INVITATION_NOT_TRUSTED                                             Handle        = 0x80630701\n\tPEER_E_CHAIN_TOO_LONG                                                     Handle        = 0x80630703\n\tPEER_E_INVALID_TIME_PERIOD                                                Handle        = 0x80630705\n\tPEER_E_CIRCULAR_CHAIN_DETECTED                                            Handle        = 0x80630706\n\tPEER_E_CERT_STORE_CORRUPTED                                               Handle        = 0x80630801\n\tPEER_E_NO_CLOUD                                                           Handle        = 0x80631001\n\tPEER_E_CLOUD_NAME_AMBIGUOUS                                               Handle        = 0x80631005\n\tPEER_E_INVALID_RECORD                                                     Handle        = 0x80632010\n\tPEER_E_NOT_AUTHORIZED                                                     Handle        = 0x80632020\n\tPEER_E_PASSWORD_DOES_NOT_MEET_POLICY                                      Handle        = 0x80632021\n\tPEER_E_DEFERRED_VALIDATION                                                Handle        = 0x80632030\n\tPEER_E_INVALID_GROUP_PROPERTIES                                           Handle        = 0x80632040\n\tPEER_E_INVALID_PEER_NAME                                                  Handle        = 0x80632050\n\tPEER_E_INVALID_CLASSIFIER                                                 Handle        = 0x80632060\n\tPEER_E_INVALID_FRIENDLY_NAME                                              Handle        = 0x80632070\n\tPEER_E_INVALID_ROLE_PROPERTY                                              Handle        = 0x80632071\n\tPEER_E_INVALID_CLASSIFIER_PROPERTY                                        Handle        = 0x80632072\n\tPEER_E_INVALID_RECORD_EXPIRATION                                          Handle        = 0x80632080\n\tPEER_E_INVALID_CREDENTIAL_INFO                                            Handle        = 0x80632081\n\tPEER_E_INVALID_CREDENTIAL                                                 Handle        = 0x80632082\n\tPEER_E_INVALID_RECORD_SIZE                                                Handle        = 0x80632083\n\tPEER_E_UNSUPPORTED_VERSION                                                Handle        = 0x80632090\n\tPEER_E_GROUP_NOT_READY                                                    Handle        = 0x80632091\n\tPEER_E_GROUP_IN_USE                                                       Handle        = 0x80632092\n\tPEER_E_INVALID_GROUP                                                      Handle        = 0x80632093\n\tPEER_E_NO_MEMBERS_FOUND                                                   Handle        = 0x80632094\n\tPEER_E_NO_MEMBER_CONNECTIONS                                              Handle        = 0x80632095\n\tPEER_E_UNABLE_TO_LISTEN                                                   Handle        = 0x80632096\n\tPEER_E_IDENTITY_DELETED                                                   Handle        = 0x806320A0\n\tPEER_E_SERVICE_NOT_AVAILABLE                                              Handle        = 0x806320A1\n\tPEER_E_CONTACT_NOT_FOUND                                                  Handle        = 0x80636001\n\tPEER_S_GRAPH_DATA_CREATED                                                 Handle        = 0x00630001\n\tPEER_S_NO_EVENT_DATA                                                      Handle        = 0x00630002\n\tPEER_S_ALREADY_CONNECTED                                                  Handle        = 0x00632000\n\tPEER_S_SUBSCRIPTION_EXISTS                                                Handle        = 0x00636000\n\tPEER_S_NO_CONNECTIVITY                                                    Handle        = 0x00630005\n\tPEER_S_ALREADY_A_MEMBER                                                   Handle        = 0x00630006\n\tPEER_E_CANNOT_CONVERT_PEER_NAME                                           Handle        = 0x80634001\n\tPEER_E_INVALID_PEER_HOST_NAME                                             Handle        = 0x80634002\n\tPEER_E_NO_MORE                                                            Handle        = 0x80634003\n\tPEER_E_PNRP_DUPLICATE_PEER_NAME                                           Handle        = 0x80634005\n\tPEER_E_INVITE_CANCELLED                                                   Handle        = 0x80637000\n\tPEER_E_INVITE_RESPONSE_NOT_AVAILABLE                                      Handle        = 0x80637001\n\tPEER_E_NOT_SIGNED_IN                                                      Handle        = 0x80637003\n\tPEER_E_PRIVACY_DECLINED                                                   Handle        = 0x80637004\n\tPEER_E_TIMEOUT                                                            Handle        = 0x80637005\n\tPEER_E_INVALID_ADDRESS                                                    Handle        = 0x80637007\n\tPEER_E_FW_EXCEPTION_DISABLED                                              Handle        = 0x80637008\n\tPEER_E_FW_BLOCKED_BY_POLICY                                               Handle        = 0x80637009\n\tPEER_E_FW_BLOCKED_BY_SHIELDS_UP                                           Handle        = 0x8063700A\n\tPEER_E_FW_DECLINED                                                        Handle        = 0x8063700B\n\tUI_E_CREATE_FAILED                                                        Handle        = 0x802A0001\n\tUI_E_SHUTDOWN_CALLED                                                      Handle        = 0x802A0002\n\tUI_E_ILLEGAL_REENTRANCY                                                   Handle        = 0x802A0003\n\tUI_E_OBJECT_SEALED                                                        Handle        = 0x802A0004\n\tUI_E_VALUE_NOT_SET                                                        Handle        = 0x802A0005\n\tUI_E_VALUE_NOT_DETERMINED                                                 Handle        = 0x802A0006\n\tUI_E_INVALID_OUTPUT                                                       Handle        = 0x802A0007\n\tUI_E_BOOLEAN_EXPECTED                                                     Handle        = 0x802A0008\n\tUI_E_DIFFERENT_OWNER                                                      Handle        = 0x802A0009\n\tUI_E_AMBIGUOUS_MATCH                                                      Handle        = 0x802A000A\n\tUI_E_FP_OVERFLOW                                                          Handle        = 0x802A000B\n\tUI_E_WRONG_THREAD                                                         Handle        = 0x802A000C\n\tUI_E_STORYBOARD_ACTIVE                                                    Handle        = 0x802A0101\n\tUI_E_STORYBOARD_NOT_PLAYING                                               Handle        = 0x802A0102\n\tUI_E_START_KEYFRAME_AFTER_END                                             Handle        = 0x802A0103\n\tUI_E_END_KEYFRAME_NOT_DETERMINED                                          Handle        = 0x802A0104\n\tUI_E_LOOPS_OVERLAP                                                        Handle        = 0x802A0105\n\tUI_E_TRANSITION_ALREADY_USED                                              Handle        = 0x802A0106\n\tUI_E_TRANSITION_NOT_IN_STORYBOARD                                         Handle        = 0x802A0107\n\tUI_E_TRANSITION_ECLIPSED                                                  Handle        = 0x802A0108\n\tUI_E_TIME_BEFORE_LAST_UPDATE                                              Handle        = 0x802A0109\n\tUI_E_TIMER_CLIENT_ALREADY_CONNECTED                                       Handle        = 0x802A010A\n\tUI_E_INVALID_DIMENSION                                                    Handle        = 0x802A010B\n\tUI_E_PRIMITIVE_OUT_OF_BOUNDS                                              Handle        = 0x802A010C\n\tUI_E_WINDOW_CLOSED                                                        Handle        = 0x802A0201\n\tE_BLUETOOTH_ATT_INVALID_HANDLE                                            Handle        = 0x80650001\n\tE_BLUETOOTH_ATT_READ_NOT_PERMITTED                                        Handle        = 0x80650002\n\tE_BLUETOOTH_ATT_WRITE_NOT_PERMITTED                                       Handle        = 0x80650003\n\tE_BLUETOOTH_ATT_INVALID_PDU                                               Handle        = 0x80650004\n\tE_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION                               Handle        = 0x80650005\n\tE_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED                                     Handle        = 0x80650006\n\tE_BLUETOOTH_ATT_INVALID_OFFSET                                            Handle        = 0x80650007\n\tE_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION                                Handle        = 0x80650008\n\tE_BLUETOOTH_ATT_PREPARE_QUEUE_FULL                                        Handle        = 0x80650009\n\tE_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND                                       Handle        = 0x8065000A\n\tE_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG                                        Handle        = 0x8065000B\n\tE_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE                          Handle        = 0x8065000C\n\tE_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH                            Handle        = 0x8065000D\n\tE_BLUETOOTH_ATT_UNLIKELY                                                  Handle        = 0x8065000E\n\tE_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION                                   Handle        = 0x8065000F\n\tE_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE                                    Handle        = 0x80650010\n\tE_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES                                    Handle        = 0x80650011\n\tE_BLUETOOTH_ATT_UNKNOWN_ERROR                                             Handle        = 0x80651000\n\tE_AUDIO_ENGINE_NODE_NOT_FOUND                                             Handle        = 0x80660001\n\tE_HDAUDIO_EMPTY_CONNECTION_LIST                                           Handle        = 0x80660002\n\tE_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED                                   Handle        = 0x80660003\n\tE_HDAUDIO_NO_LOGICAL_DEVICES_CREATED                                      Handle        = 0x80660004\n\tE_HDAUDIO_NULL_LINKED_LIST_ENTRY                                          Handle        = 0x80660005\n\tSTATEREPOSITORY_E_CONCURRENCY_LOCKING_FAILURE                             Handle        = 0x80670001\n\tSTATEREPOSITORY_E_STATEMENT_INPROGRESS                                    Handle        = 0x80670002\n\tSTATEREPOSITORY_E_CONFIGURATION_INVALID                                   Handle        = 0x80670003\n\tSTATEREPOSITORY_E_UNKNOWN_SCHEMA_VERSION                                  Handle        = 0x80670004\n\tSTATEREPOSITORY_ERROR_DICTIONARY_CORRUPTED                                Handle        = 0x80670005\n\tSTATEREPOSITORY_E_BLOCKED                                                 Handle        = 0x80670006\n\tSTATEREPOSITORY_E_BUSY_RETRY                                              Handle        = 0x80670007\n\tSTATEREPOSITORY_E_BUSY_RECOVERY_RETRY                                     Handle        = 0x80670008\n\tSTATEREPOSITORY_E_LOCKED_RETRY                                            Handle        = 0x80670009\n\tSTATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY                                Handle        = 0x8067000A\n\tSTATEREPOSITORY_E_TRANSACTION_REQUIRED                                    Handle        = 0x8067000B\n\tSTATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED                                   Handle        = 0x8067000C\n\tSTATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED                          Handle        = 0x8067000D\n\tSTATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED                                 Handle        = 0x8067000E\n\tSTATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED                     Handle        = 0x8067000F\n\tSTATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS                                Handle        = 0x80670010\n\tSTATEREPOSTORY_E_NESTED_TRANSACTION_NOT_SUPPORTED                         Handle        = 0x80670011\n\tSTATEREPOSITORY_ERROR_CACHE_CORRUPTED                                     Handle        = 0x80670012\n\tSTATEREPOSITORY_TRANSACTION_CALLER_ID_CHANGED                             Handle        = 0x00670013\n\tSTATEREPOSITORY_TRANSACTION_IN_PROGRESS                                   Handle        = 0x00670014\n\tERROR_SPACES_POOL_WAS_DELETED                                             Handle        = 0x00E70001\n\tERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID                                    Handle        = 0x80E70001\n\tERROR_SPACES_INTERNAL_ERROR                                               Handle        = 0x80E70002\n\tERROR_SPACES_RESILIENCY_TYPE_INVALID                                      Handle        = 0x80E70003\n\tERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID                                    Handle        = 0x80E70004\n\tERROR_SPACES_DRIVE_REDUNDANCY_INVALID                                     Handle        = 0x80E70006\n\tERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID                                Handle        = 0x80E70007\n\tERROR_SPACES_PARITY_LAYOUT_INVALID                                        Handle        = 0x80E70008\n\tERROR_SPACES_INTERLEAVE_LENGTH_INVALID                                    Handle        = 0x80E70009\n\tERROR_SPACES_NUMBER_OF_COLUMNS_INVALID                                    Handle        = 0x80E7000A\n\tERROR_SPACES_NOT_ENOUGH_DRIVES                                            Handle        = 0x80E7000B\n\tERROR_SPACES_EXTENDED_ERROR                                               Handle        = 0x80E7000C\n\tERROR_SPACES_PROVISIONING_TYPE_INVALID                                    Handle        = 0x80E7000D\n\tERROR_SPACES_ALLOCATION_SIZE_INVALID                                      Handle        = 0x80E7000E\n\tERROR_SPACES_ENCLOSURE_AWARE_INVALID                                      Handle        = 0x80E7000F\n\tERROR_SPACES_WRITE_CACHE_SIZE_INVALID                                     Handle        = 0x80E70010\n\tERROR_SPACES_NUMBER_OF_GROUPS_INVALID                                     Handle        = 0x80E70011\n\tERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID                              Handle        = 0x80E70012\n\tERROR_SPACES_ENTRY_INCOMPLETE                                             Handle        = 0x80E70013\n\tERROR_SPACES_ENTRY_INVALID                                                Handle        = 0x80E70014\n\tERROR_VOLSNAP_BOOTFILE_NOT_VALID                                          Handle        = 0x80820001\n\tERROR_VOLSNAP_ACTIVATION_TIMEOUT                                          Handle        = 0x80820002\n\tERROR_TIERING_NOT_SUPPORTED_ON_VOLUME                                     Handle        = 0x80830001\n\tERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS                                 Handle        = 0x80830002\n\tERROR_TIERING_STORAGE_TIER_NOT_FOUND                                      Handle        = 0x80830003\n\tERROR_TIERING_INVALID_FILE_ID                                             Handle        = 0x80830004\n\tERROR_TIERING_WRONG_CLUSTER_NODE                                          Handle        = 0x80830005\n\tERROR_TIERING_ALREADY_PROCESSING                                          Handle        = 0x80830006\n\tERROR_TIERING_CANNOT_PIN_OBJECT                                           Handle        = 0x80830007\n\tERROR_TIERING_FILE_IS_NOT_PINNED                                          Handle        = 0x80830008\n\tERROR_NOT_A_TIERED_VOLUME                                                 Handle        = 0x80830009\n\tERROR_ATTRIBUTE_NOT_PRESENT                                               Handle        = 0x8083000A\n\tERROR_SECCORE_INVALID_COMMAND                                             Handle        = 0xC0E80000\n\tERROR_NO_APPLICABLE_APP_LICENSES_FOUND                                    Handle        = 0xC0EA0001\n\tERROR_CLIP_LICENSE_NOT_FOUND                                              Handle        = 0xC0EA0002\n\tERROR_CLIP_DEVICE_LICENSE_MISSING                                         Handle        = 0xC0EA0003\n\tERROR_CLIP_LICENSE_INVALID_SIGNATURE                                      Handle        = 0xC0EA0004\n\tERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID                           Handle        = 0xC0EA0005\n\tERROR_CLIP_LICENSE_EXPIRED                                                Handle        = 0xC0EA0006\n\tERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE                               Handle        = 0xC0EA0007\n\tERROR_CLIP_LICENSE_NOT_SIGNED                                             Handle        = 0xC0EA0008\n\tERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE                           Handle        = 0xC0EA0009\n\tERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH                                     Handle        = 0xC0EA000A\n\tDXGI_STATUS_OCCLUDED                                                      Handle        = 0x087A0001\n\tDXGI_STATUS_CLIPPED                                                       Handle        = 0x087A0002\n\tDXGI_STATUS_NO_REDIRECTION                                                Handle        = 0x087A0004\n\tDXGI_STATUS_NO_DESKTOP_ACCESS                                             Handle        = 0x087A0005\n\tDXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE                                  Handle        = 0x087A0006\n\tDXGI_STATUS_MODE_CHANGED                                                  Handle        = 0x087A0007\n\tDXGI_STATUS_MODE_CHANGE_IN_PROGRESS                                       Handle        = 0x087A0008\n\tDXGI_ERROR_INVALID_CALL                                                   Handle        = 0x887A0001\n\tDXGI_ERROR_NOT_FOUND                                                      Handle        = 0x887A0002\n\tDXGI_ERROR_MORE_DATA                                                      Handle        = 0x887A0003\n\tDXGI_ERROR_UNSUPPORTED                                                    Handle        = 0x887A0004\n\tDXGI_ERROR_DEVICE_REMOVED                                                 Handle        = 0x887A0005\n\tDXGI_ERROR_DEVICE_HUNG                                                    Handle        = 0x887A0006\n\tDXGI_ERROR_DEVICE_RESET                                                   Handle        = 0x887A0007\n\tDXGI_ERROR_WAS_STILL_DRAWING                                              Handle        = 0x887A000A\n\tDXGI_ERROR_FRAME_STATISTICS_DISJOINT                                      Handle        = 0x887A000B\n\tDXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE                                   Handle        = 0x887A000C\n\tDXGI_ERROR_DRIVER_INTERNAL_ERROR                                          Handle        = 0x887A0020\n\tDXGI_ERROR_NONEXCLUSIVE                                                   Handle        = 0x887A0021\n\tDXGI_ERROR_NOT_CURRENTLY_AVAILABLE                                        Handle        = 0x887A0022\n\tDXGI_ERROR_REMOTE_CLIENT_DISCONNECTED                                     Handle        = 0x887A0023\n\tDXGI_ERROR_REMOTE_OUTOFMEMORY                                             Handle        = 0x887A0024\n\tDXGI_ERROR_ACCESS_LOST                                                    Handle        = 0x887A0026\n\tDXGI_ERROR_WAIT_TIMEOUT                                                   Handle        = 0x887A0027\n\tDXGI_ERROR_SESSION_DISCONNECTED                                           Handle        = 0x887A0028\n\tDXGI_ERROR_RESTRICT_TO_OUTPUT_STALE                                       Handle        = 0x887A0029\n\tDXGI_ERROR_CANNOT_PROTECT_CONTENT                                         Handle        = 0x887A002A\n\tDXGI_ERROR_ACCESS_DENIED                                                  Handle        = 0x887A002B\n\tDXGI_ERROR_NAME_ALREADY_EXISTS                                            Handle        = 0x887A002C\n\tDXGI_ERROR_SDK_COMPONENT_MISSING                                          Handle        = 0x887A002D\n\tDXGI_ERROR_NOT_CURRENT                                                    Handle        = 0x887A002E\n\tDXGI_ERROR_HW_PROTECTION_OUTOFMEMORY                                      Handle        = 0x887A0030\n\tDXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION                                  Handle        = 0x887A0031\n\tDXGI_ERROR_NON_COMPOSITED_UI                                              Handle        = 0x887A0032\n\tDXGI_STATUS_UNOCCLUDED                                                    Handle        = 0x087A0009\n\tDXGI_STATUS_DDA_WAS_STILL_DRAWING                                         Handle        = 0x087A000A\n\tDXGI_ERROR_MODE_CHANGE_IN_PROGRESS                                        Handle        = 0x887A0025\n\tDXGI_STATUS_PRESENT_REQUIRED                                              Handle        = 0x087A002F\n\tDXGI_ERROR_CACHE_CORRUPT                                                  Handle        = 0x887A0033\n\tDXGI_ERROR_CACHE_FULL                                                     Handle        = 0x887A0034\n\tDXGI_ERROR_CACHE_HASH_COLLISION                                           Handle        = 0x887A0035\n\tDXGI_ERROR_ALREADY_EXISTS                                                 Handle        = 0x887A0036\n\tDXGI_DDI_ERR_WASSTILLDRAWING                                              Handle        = 0x887B0001\n\tDXGI_DDI_ERR_UNSUPPORTED                                                  Handle        = 0x887B0002\n\tDXGI_DDI_ERR_NONEXCLUSIVE                                                 Handle        = 0x887B0003\n\tD3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS                                 Handle        = 0x88790001\n\tD3D10_ERROR_FILE_NOT_FOUND                                                Handle        = 0x88790002\n\tD3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS                                 Handle        = 0x887C0001\n\tD3D11_ERROR_FILE_NOT_FOUND                                                Handle        = 0x887C0002\n\tD3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS                                  Handle        = 0x887C0003\n\tD3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD                  Handle        = 0x887C0004\n\tD3D12_ERROR_ADAPTER_NOT_FOUND                                             Handle        = 0x887E0001\n\tD3D12_ERROR_DRIVER_VERSION_MISMATCH                                       Handle        = 0x887E0002\n\tD2DERR_WRONG_STATE                                                        Handle        = 0x88990001\n\tD2DERR_NOT_INITIALIZED                                                    Handle        = 0x88990002\n\tD2DERR_UNSUPPORTED_OPERATION                                              Handle        = 0x88990003\n\tD2DERR_SCANNER_FAILED                                                     Handle        = 0x88990004\n\tD2DERR_SCREEN_ACCESS_DENIED                                               Handle        = 0x88990005\n\tD2DERR_DISPLAY_STATE_INVALID                                              Handle        = 0x88990006\n\tD2DERR_ZERO_VECTOR                                                        Handle        = 0x88990007\n\tD2DERR_INTERNAL_ERROR                                                     Handle        = 0x88990008\n\tD2DERR_DISPLAY_FORMAT_NOT_SUPPORTED                                       Handle        = 0x88990009\n\tD2DERR_INVALID_CALL                                                       Handle        = 0x8899000A\n\tD2DERR_NO_HARDWARE_DEVICE                                                 Handle        = 0x8899000B\n\tD2DERR_RECREATE_TARGET                                                    Handle        = 0x8899000C\n\tD2DERR_TOO_MANY_SHADER_ELEMENTS                                           Handle        = 0x8899000D\n\tD2DERR_SHADER_COMPILE_FAILED                                              Handle        = 0x8899000E\n\tD2DERR_MAX_TEXTURE_SIZE_EXCEEDED                                          Handle        = 0x8899000F\n\tD2DERR_UNSUPPORTED_VERSION                                                Handle        = 0x88990010\n\tD2DERR_BAD_NUMBER                                                         Handle        = 0x88990011\n\tD2DERR_WRONG_FACTORY                                                      Handle        = 0x88990012\n\tD2DERR_LAYER_ALREADY_IN_USE                                               Handle        = 0x88990013\n\tD2DERR_POP_CALL_DID_NOT_MATCH_PUSH                                        Handle        = 0x88990014\n\tD2DERR_WRONG_RESOURCE_DOMAIN                                              Handle        = 0x88990015\n\tD2DERR_PUSH_POP_UNBALANCED                                                Handle        = 0x88990016\n\tD2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT                                Handle        = 0x88990017\n\tD2DERR_INCOMPATIBLE_BRUSH_TYPES                                           Handle        = 0x88990018\n\tD2DERR_WIN32_ERROR                                                        Handle        = 0x88990019\n\tD2DERR_TARGET_NOT_GDI_COMPATIBLE                                          Handle        = 0x8899001A\n\tD2DERR_TEXT_EFFECT_IS_WRONG_TYPE                                          Handle        = 0x8899001B\n\tD2DERR_TEXT_RENDERER_NOT_RELEASED                                         Handle        = 0x8899001C\n\tD2DERR_EXCEEDS_MAX_BITMAP_SIZE                                            Handle        = 0x8899001D\n\tD2DERR_INVALID_GRAPH_CONFIGURATION                                        Handle        = 0x8899001E\n\tD2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION                               Handle        = 0x8899001F\n\tD2DERR_CYCLIC_GRAPH                                                       Handle        = 0x88990020\n\tD2DERR_BITMAP_CANNOT_DRAW                                                 Handle        = 0x88990021\n\tD2DERR_OUTSTANDING_BITMAP_REFERENCES                                      Handle        = 0x88990022\n\tD2DERR_ORIGINAL_TARGET_NOT_BOUND                                          Handle        = 0x88990023\n\tD2DERR_INVALID_TARGET                                                     Handle        = 0x88990024\n\tD2DERR_BITMAP_BOUND_AS_TARGET                                             Handle        = 0x88990025\n\tD2DERR_INSUFFICIENT_DEVICE_CAPABILITIES                                   Handle        = 0x88990026\n\tD2DERR_INTERMEDIATE_TOO_LARGE                                             Handle        = 0x88990027\n\tD2DERR_EFFECT_IS_NOT_REGISTERED                                           Handle        = 0x88990028\n\tD2DERR_INVALID_PROPERTY                                                   Handle        = 0x88990029\n\tD2DERR_NO_SUBPROPERTIES                                                   Handle        = 0x8899002A\n\tD2DERR_PRINT_JOB_CLOSED                                                   Handle        = 0x8899002B\n\tD2DERR_PRINT_FORMAT_NOT_SUPPORTED                                         Handle        = 0x8899002C\n\tD2DERR_TOO_MANY_TRANSFORM_INPUTS                                          Handle        = 0x8899002D\n\tD2DERR_INVALID_GLYPH_IMAGE                                                Handle        = 0x8899002E\n\tDWRITE_E_FILEFORMAT                                                       Handle        = 0x88985000\n\tDWRITE_E_UNEXPECTED                                                       Handle        = 0x88985001\n\tDWRITE_E_NOFONT                                                           Handle        = 0x88985002\n\tDWRITE_E_FILENOTFOUND                                                     Handle        = 0x88985003\n\tDWRITE_E_FILEACCESS                                                       Handle        = 0x88985004\n\tDWRITE_E_FONTCOLLECTIONOBSOLETE                                           Handle        = 0x88985005\n\tDWRITE_E_ALREADYREGISTERED                                                Handle        = 0x88985006\n\tDWRITE_E_CACHEFORMAT                                                      Handle        = 0x88985007\n\tDWRITE_E_CACHEVERSION                                                     Handle        = 0x88985008\n\tDWRITE_E_UNSUPPORTEDOPERATION                                             Handle        = 0x88985009\n\tDWRITE_E_TEXTRENDERERINCOMPATIBLE                                         Handle        = 0x8898500A\n\tDWRITE_E_FLOWDIRECTIONCONFLICTS                                           Handle        = 0x8898500B\n\tDWRITE_E_NOCOLOR                                                          Handle        = 0x8898500C\n\tDWRITE_E_REMOTEFONT                                                       Handle        = 0x8898500D\n\tDWRITE_E_DOWNLOADCANCELLED                                                Handle        = 0x8898500E\n\tDWRITE_E_DOWNLOADFAILED                                                   Handle        = 0x8898500F\n\tDWRITE_E_TOOMANYDOWNLOADS                                                 Handle        = 0x88985010\n\tWINCODEC_ERR_WRONGSTATE                                                   Handle        = 0x88982F04\n\tWINCODEC_ERR_VALUEOUTOFRANGE                                              Handle        = 0x88982F05\n\tWINCODEC_ERR_UNKNOWNIMAGEFORMAT                                           Handle        = 0x88982F07\n\tWINCODEC_ERR_UNSUPPORTEDVERSION                                           Handle        = 0x88982F0B\n\tWINCODEC_ERR_NOTINITIALIZED                                               Handle        = 0x88982F0C\n\tWINCODEC_ERR_ALREADYLOCKED                                                Handle        = 0x88982F0D\n\tWINCODEC_ERR_PROPERTYNOTFOUND                                             Handle        = 0x88982F40\n\tWINCODEC_ERR_PROPERTYNOTSUPPORTED                                         Handle        = 0x88982F41\n\tWINCODEC_ERR_PROPERTYSIZE                                                 Handle        = 0x88982F42\n\tWINCODEC_ERR_CODECPRESENT                                                 Handle        = 0x88982F43\n\tWINCODEC_ERR_CODECNOTHUMBNAIL                                             Handle        = 0x88982F44\n\tWINCODEC_ERR_PALETTEUNAVAILABLE                                           Handle        = 0x88982F45\n\tWINCODEC_ERR_CODECTOOMANYSCANLINES                                        Handle        = 0x88982F46\n\tWINCODEC_ERR_INTERNALERROR                                                Handle        = 0x88982F48\n\tWINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS                             Handle        = 0x88982F49\n\tWINCODEC_ERR_COMPONENTNOTFOUND                                            Handle        = 0x88982F50\n\tWINCODEC_ERR_IMAGESIZEOUTOFRANGE                                          Handle        = 0x88982F51\n\tWINCODEC_ERR_TOOMUCHMETADATA                                              Handle        = 0x88982F52\n\tWINCODEC_ERR_BADIMAGE                                                     Handle        = 0x88982F60\n\tWINCODEC_ERR_BADHEADER                                                    Handle        = 0x88982F61\n\tWINCODEC_ERR_FRAMEMISSING                                                 Handle        = 0x88982F62\n\tWINCODEC_ERR_BADMETADATAHEADER                                            Handle        = 0x88982F63\n\tWINCODEC_ERR_BADSTREAMDATA                                                Handle        = 0x88982F70\n\tWINCODEC_ERR_STREAMWRITE                                                  Handle        = 0x88982F71\n\tWINCODEC_ERR_STREAMREAD                                                   Handle        = 0x88982F72\n\tWINCODEC_ERR_STREAMNOTAVAILABLE                                           Handle        = 0x88982F73\n\tWINCODEC_ERR_UNSUPPORTEDPIXELFORMAT                                       Handle        = 0x88982F80\n\tWINCODEC_ERR_UNSUPPORTEDOPERATION                                         Handle        = 0x88982F81\n\tWINCODEC_ERR_INVALIDREGISTRATION                                          Handle        = 0x88982F8A\n\tWINCODEC_ERR_COMPONENTINITIALIZEFAILURE                                   Handle        = 0x88982F8B\n\tWINCODEC_ERR_INSUFFICIENTBUFFER                                           Handle        = 0x88982F8C\n\tWINCODEC_ERR_DUPLICATEMETADATAPRESENT                                     Handle        = 0x88982F8D\n\tWINCODEC_ERR_PROPERTYUNEXPECTEDTYPE                                       Handle        = 0x88982F8E\n\tWINCODEC_ERR_UNEXPECTEDSIZE                                               Handle        = 0x88982F8F\n\tWINCODEC_ERR_INVALIDQUERYREQUEST                                          Handle        = 0x88982F90\n\tWINCODEC_ERR_UNEXPECTEDMETADATATYPE                                       Handle        = 0x88982F91\n\tWINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT                               Handle        = 0x88982F92\n\tWINCODEC_ERR_INVALIDQUERYCHARACTER                                        Handle        = 0x88982F93\n\tWINCODEC_ERR_WIN32ERROR                                                   Handle        = 0x88982F94\n\tWINCODEC_ERR_INVALIDPROGRESSIVELEVEL                                      Handle        = 0x88982F95\n\tWINCODEC_ERR_INVALIDJPEGSCANINDEX                                         Handle        = 0x88982F96\n\tMILERR_OBJECTBUSY                                                         Handle        = 0x88980001\n\tMILERR_INSUFFICIENTBUFFER                                                 Handle        = 0x88980002\n\tMILERR_WIN32ERROR                                                         Handle        = 0x88980003\n\tMILERR_SCANNER_FAILED                                                     Handle        = 0x88980004\n\tMILERR_SCREENACCESSDENIED                                                 Handle        = 0x88980005\n\tMILERR_DISPLAYSTATEINVALID                                                Handle        = 0x88980006\n\tMILERR_NONINVERTIBLEMATRIX                                                Handle        = 0x88980007\n\tMILERR_ZEROVECTOR                                                         Handle        = 0x88980008\n\tMILERR_TERMINATED                                                         Handle        = 0x88980009\n\tMILERR_BADNUMBER                                                          Handle        = 0x8898000A\n\tMILERR_INTERNALERROR                                                      Handle        = 0x88980080\n\tMILERR_DISPLAYFORMATNOTSUPPORTED                                          Handle        = 0x88980084\n\tMILERR_INVALIDCALL                                                        Handle        = 0x88980085\n\tMILERR_ALREADYLOCKED                                                      Handle        = 0x88980086\n\tMILERR_NOTLOCKED                                                          Handle        = 0x88980087\n\tMILERR_DEVICECANNOTRENDERTEXT                                             Handle        = 0x88980088\n\tMILERR_GLYPHBITMAPMISSED                                                  Handle        = 0x88980089\n\tMILERR_MALFORMEDGLYPHCACHE                                                Handle        = 0x8898008A\n\tMILERR_GENERIC_IGNORE                                                     Handle        = 0x8898008B\n\tMILERR_MALFORMED_GUIDELINE_DATA                                           Handle        = 0x8898008C\n\tMILERR_NO_HARDWARE_DEVICE                                                 Handle        = 0x8898008D\n\tMILERR_NEED_RECREATE_AND_PRESENT                                          Handle        = 0x8898008E\n\tMILERR_ALREADY_INITIALIZED                                                Handle        = 0x8898008F\n\tMILERR_MISMATCHED_SIZE                                                    Handle        = 0x88980090\n\tMILERR_NO_REDIRECTION_SURFACE_AVAILABLE                                   Handle        = 0x88980091\n\tMILERR_REMOTING_NOT_SUPPORTED                                             Handle        = 0x88980092\n\tMILERR_QUEUED_PRESENT_NOT_SUPPORTED                                       Handle        = 0x88980093\n\tMILERR_NOT_QUEUING_PRESENTS                                               Handle        = 0x88980094\n\tMILERR_NO_REDIRECTION_SURFACE_RETRY_LATER                                 Handle        = 0x88980095\n\tMILERR_TOOMANYSHADERELEMNTS                                               Handle        = 0x88980096\n\tMILERR_MROW_READLOCK_FAILED                                               Handle        = 0x88980097\n\tMILERR_MROW_UPDATE_FAILED                                                 Handle        = 0x88980098\n\tMILERR_SHADER_COMPILE_FAILED                                              Handle        = 0x88980099\n\tMILERR_MAX_TEXTURE_SIZE_EXCEEDED                                          Handle        = 0x8898009A\n\tMILERR_QPC_TIME_WENT_BACKWARD                                             Handle        = 0x8898009B\n\tMILERR_DXGI_ENUMERATION_OUT_OF_SYNC                                       Handle        = 0x8898009D\n\tMILERR_ADAPTER_NOT_FOUND                                                  Handle        = 0x8898009E\n\tMILERR_COLORSPACE_NOT_SUPPORTED                                           Handle        = 0x8898009F\n\tMILERR_PREFILTER_NOT_SUPPORTED                                            Handle        = 0x889800A0\n\tMILERR_DISPLAYID_ACCESS_DENIED                                            Handle        = 0x889800A1\n\tUCEERR_INVALIDPACKETHEADER                                                Handle        = 0x88980400\n\tUCEERR_UNKNOWNPACKET                                                      Handle        = 0x88980401\n\tUCEERR_ILLEGALPACKET                                                      Handle        = 0x88980402\n\tUCEERR_MALFORMEDPACKET                                                    Handle        = 0x88980403\n\tUCEERR_ILLEGALHANDLE                                                      Handle        = 0x88980404\n\tUCEERR_HANDLELOOKUPFAILED                                                 Handle        = 0x88980405\n\tUCEERR_RENDERTHREADFAILURE                                                Handle        = 0x88980406\n\tUCEERR_CTXSTACKFRSTTARGETNULL                                             Handle        = 0x88980407\n\tUCEERR_CONNECTIONIDLOOKUPFAILED                                           Handle        = 0x88980408\n\tUCEERR_BLOCKSFULL                                                         Handle        = 0x88980409\n\tUCEERR_MEMORYFAILURE                                                      Handle        = 0x8898040A\n\tUCEERR_PACKETRECORDOUTOFRANGE                                             Handle        = 0x8898040B\n\tUCEERR_ILLEGALRECORDTYPE                                                  Handle        = 0x8898040C\n\tUCEERR_OUTOFHANDLES                                                       Handle        = 0x8898040D\n\tUCEERR_UNCHANGABLE_UPDATE_ATTEMPTED                                       Handle        = 0x8898040E\n\tUCEERR_NO_MULTIPLE_WORKER_THREADS                                         Handle        = 0x8898040F\n\tUCEERR_REMOTINGNOTSUPPORTED                                               Handle        = 0x88980410\n\tUCEERR_MISSINGENDCOMMAND                                                  Handle        = 0x88980411\n\tUCEERR_MISSINGBEGINCOMMAND                                                Handle        = 0x88980412\n\tUCEERR_CHANNELSYNCTIMEDOUT                                                Handle        = 0x88980413\n\tUCEERR_CHANNELSYNCABANDONED                                               Handle        = 0x88980414\n\tUCEERR_UNSUPPORTEDTRANSPORTVERSION                                        Handle        = 0x88980415\n\tUCEERR_TRANSPORTUNAVAILABLE                                               Handle        = 0x88980416\n\tUCEERR_FEEDBACK_UNSUPPORTED                                               Handle        = 0x88980417\n\tUCEERR_COMMANDTRANSPORTDENIED                                             Handle        = 0x88980418\n\tUCEERR_GRAPHICSSTREAMUNAVAILABLE                                          Handle        = 0x88980419\n\tUCEERR_GRAPHICSSTREAMALREADYOPEN                                          Handle        = 0x88980420\n\tUCEERR_TRANSPORTDISCONNECTED                                              Handle        = 0x88980421\n\tUCEERR_TRANSPORTOVERLOADED                                                Handle        = 0x88980422\n\tUCEERR_PARTITION_ZOMBIED                                                  Handle        = 0x88980423\n\tMILAVERR_NOCLOCK                                                          Handle        = 0x88980500\n\tMILAVERR_NOMEDIATYPE                                                      Handle        = 0x88980501\n\tMILAVERR_NOVIDEOMIXER                                                     Handle        = 0x88980502\n\tMILAVERR_NOVIDEOPRESENTER                                                 Handle        = 0x88980503\n\tMILAVERR_NOREADYFRAMES                                                    Handle        = 0x88980504\n\tMILAVERR_MODULENOTLOADED                                                  Handle        = 0x88980505\n\tMILAVERR_WMPFACTORYNOTREGISTERED                                          Handle        = 0x88980506\n\tMILAVERR_INVALIDWMPVERSION                                                Handle        = 0x88980507\n\tMILAVERR_INSUFFICIENTVIDEORESOURCES                                       Handle        = 0x88980508\n\tMILAVERR_VIDEOACCELERATIONNOTAVAILABLE                                    Handle        = 0x88980509\n\tMILAVERR_REQUESTEDTEXTURETOOBIG                                           Handle        = 0x8898050A\n\tMILAVERR_SEEKFAILED                                                       Handle        = 0x8898050B\n\tMILAVERR_UNEXPECTEDWMPFAILURE                                             Handle        = 0x8898050C\n\tMILAVERR_MEDIAPLAYERCLOSED                                                Handle        = 0x8898050D\n\tMILAVERR_UNKNOWNHARDWAREERROR                                             Handle        = 0x8898050E\n\tMILEFFECTSERR_UNKNOWNPROPERTY                                             Handle        = 0x8898060E\n\tMILEFFECTSERR_EFFECTNOTPARTOFGROUP                                        Handle        = 0x8898060F\n\tMILEFFECTSERR_NOINPUTSOURCEATTACHED                                       Handle        = 0x88980610\n\tMILEFFECTSERR_CONNECTORNOTCONNECTED                                       Handle        = 0x88980611\n\tMILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT                            Handle        = 0x88980612\n\tMILEFFECTSERR_RESERVED                                                    Handle        = 0x88980613\n\tMILEFFECTSERR_CYCLEDETECTED                                               Handle        = 0x88980614\n\tMILEFFECTSERR_EFFECTINMORETHANONEGRAPH                                    Handle        = 0x88980615\n\tMILEFFECTSERR_EFFECTALREADYINAGRAPH                                       Handle        = 0x88980616\n\tMILEFFECTSERR_EFFECTHASNOCHILDREN                                         Handle        = 0x88980617\n\tMILEFFECTSERR_ALREADYATTACHEDTOLISTENER                                   Handle        = 0x88980618\n\tMILEFFECTSERR_NOTAFFINETRANSFORM                                          Handle        = 0x88980619\n\tMILEFFECTSERR_EMPTYBOUNDS                                                 Handle        = 0x8898061A\n\tMILEFFECTSERR_OUTPUTSIZETOOLARGE                                          Handle        = 0x8898061B\n\tDWMERR_STATE_TRANSITION_FAILED                                            Handle        = 0x88980700\n\tDWMERR_THEME_FAILED                                                       Handle        = 0x88980701\n\tDWMERR_CATASTROPHIC_FAILURE                                               Handle        = 0x88980702\n\tDCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED                                Handle        = 0x88980800\n\tDCOMPOSITION_ERROR_SURFACE_BEING_RENDERED                                 Handle        = 0x88980801\n\tDCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED                             Handle        = 0x88980802\n\tONL_E_INVALID_AUTHENTICATION_TARGET                                       Handle        = 0x80860001\n\tONL_E_ACCESS_DENIED_BY_TOU                                                Handle        = 0x80860002\n\tONL_E_INVALID_APPLICATION                                                 Handle        = 0x80860003\n\tONL_E_PASSWORD_UPDATE_REQUIRED                                            Handle        = 0x80860004\n\tONL_E_ACCOUNT_UPDATE_REQUIRED                                             Handle        = 0x80860005\n\tONL_E_FORCESIGNIN                                                         Handle        = 0x80860006\n\tONL_E_ACCOUNT_LOCKED                                                      Handle        = 0x80860007\n\tONL_E_PARENTAL_CONSENT_REQUIRED                                           Handle        = 0x80860008\n\tONL_E_EMAIL_VERIFICATION_REQUIRED                                         Handle        = 0x80860009\n\tONL_E_ACCOUNT_SUSPENDED_COMPROIMISE                                       Handle        = 0x8086000A\n\tONL_E_ACCOUNT_SUSPENDED_ABUSE                                             Handle        = 0x8086000B\n\tONL_E_ACTION_REQUIRED                                                     Handle        = 0x8086000C\n\tONL_CONNECTION_COUNT_LIMIT                                                Handle        = 0x8086000D\n\tONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT                                   Handle        = 0x8086000E\n\tONL_E_USER_AUTHENTICATION_REQUIRED                                        Handle        = 0x8086000F\n\tONL_E_REQUEST_THROTTLED                                                   Handle        = 0x80860010\n\tFA_E_MAX_PERSISTED_ITEMS_REACHED                                          Handle        = 0x80270220\n\tFA_E_HOMEGROUP_NOT_AVAILABLE                                              Handle        = 0x80270222\n\tE_MONITOR_RESOLUTION_TOO_LOW                                              Handle        = 0x80270250\n\tE_ELEVATED_ACTIVATION_NOT_SUPPORTED                                       Handle        = 0x80270251\n\tE_UAC_DISABLED                                                            Handle        = 0x80270252\n\tE_FULL_ADMIN_NOT_SUPPORTED                                                Handle        = 0x80270253\n\tE_APPLICATION_NOT_REGISTERED                                              Handle        = 0x80270254\n\tE_MULTIPLE_EXTENSIONS_FOR_APPLICATION                                     Handle        = 0x80270255\n\tE_MULTIPLE_PACKAGES_FOR_FAMILY                                            Handle        = 0x80270256\n\tE_APPLICATION_MANAGER_NOT_RUNNING                                         Handle        = 0x80270257\n\tS_STORE_LAUNCHED_FOR_REMEDIATION                                          Handle        = 0x00270258\n\tS_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG                          Handle        = 0x00270259\n\tE_APPLICATION_ACTIVATION_TIMED_OUT                                        Handle        = 0x8027025A\n\tE_APPLICATION_ACTIVATION_EXEC_FAILURE                                     Handle        = 0x8027025B\n\tE_APPLICATION_TEMPORARY_LICENSE_ERROR                                     Handle        = 0x8027025C\n\tE_APPLICATION_TRIAL_LICENSE_EXPIRED                                       Handle        = 0x8027025D\n\tE_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED                          Handle        = 0x80270260\n\tE_SKYDRIVE_ROOT_TARGET_OVERLAP                                            Handle        = 0x80270261\n\tE_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX                                       Handle        = 0x80270262\n\tE_SKYDRIVE_FILE_NOT_UPLOADED                                              Handle        = 0x80270263\n\tE_SKYDRIVE_UPDATE_AVAILABILITY_FAIL                                       Handle        = 0x80270264\n\tE_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED                          Handle        = 0x80270265\n\tE_SYNCENGINE_FILE_SIZE_OVER_LIMIT                                         Handle        = 0x8802B001\n\tE_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA                            Handle        = 0x8802B002\n\tE_SYNCENGINE_UNSUPPORTED_FILE_NAME                                        Handle        = 0x8802B003\n\tE_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED                             Handle        = 0x8802B004\n\tE_SYNCENGINE_FILE_SYNC_PARTNER_ERROR                                      Handle        = 0x8802B005\n\tE_SYNCENGINE_SYNC_PAUSED_BY_SERVICE                                       Handle        = 0x8802B006\n\tE_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN                                      Handle        = 0x8802C002\n\tE_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED                                Handle        = 0x8802C003\n\tE_SYNCENGINE_UNKNOWN_SERVICE_ERROR                                        Handle        = 0x8802C004\n\tE_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE                             Handle        = 0x8802C005\n\tE_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE                                   Handle        = 0x8802C006\n\tE_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR                          Handle        = 0x8802C007\n\tE_SYNCENGINE_FOLDER_INACCESSIBLE                                          Handle        = 0x8802D001\n\tE_SYNCENGINE_UNSUPPORTED_FOLDER_NAME                                      Handle        = 0x8802D002\n\tE_SYNCENGINE_UNSUPPORTED_MARKET                                           Handle        = 0x8802D003\n\tE_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED                                   Handle        = 0x8802D004\n\tE_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED                            Handle        = 0x8802D005\n\tE_SYNCENGINE_CLIENT_UPDATE_NEEDED                                         Handle        = 0x8802D006\n\tE_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED                                Handle        = 0x8802D007\n\tE_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED                          Handle        = 0x8802D008\n\tE_SYNCENGINE_UNSUPPORTED_REPARSE_POINT                                    Handle        = 0x8802D009\n\tE_SYNCENGINE_STORAGE_SERVICE_BLOCKED                                      Handle        = 0x8802D00A\n\tE_SYNCENGINE_FOLDER_IN_REDIRECTION                                        Handle        = 0x8802D00B\n\tEAS_E_POLICY_NOT_MANAGED_BY_OS                                            Handle        = 0x80550001\n\tEAS_E_POLICY_COMPLIANT_WITH_ACTIONS                                       Handle        = 0x80550002\n\tEAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE                                    Handle        = 0x80550003\n\tEAS_E_CURRENT_USER_HAS_BLANK_PASSWORD                                     Handle        = 0x80550004\n\tEAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE                   Handle        = 0x80550005\n\tEAS_E_USER_CANNOT_CHANGE_PASSWORD                                         Handle        = 0x80550006\n\tEAS_E_ADMINS_HAVE_BLANK_PASSWORD                                          Handle        = 0x80550007\n\tEAS_E_ADMINS_CANNOT_CHANGE_PASSWORD                                       Handle        = 0x80550008\n\tEAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD                       Handle        = 0x80550009\n\tEAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS                Handle        = 0x8055000A\n\tEAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD                            Handle        = 0x8055000B\n\tEAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER          Handle        = 0x8055000C\n\tEAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD                      Handle        = 0x8055000D\n\tWEB_E_UNSUPPORTED_FORMAT                                                  Handle        = 0x83750001\n\tWEB_E_INVALID_XML                                                         Handle        = 0x83750002\n\tWEB_E_MISSING_REQUIRED_ELEMENT                                            Handle        = 0x83750003\n\tWEB_E_MISSING_REQUIRED_ATTRIBUTE                                          Handle        = 0x83750004\n\tWEB_E_UNEXPECTED_CONTENT                                                  Handle        = 0x83750005\n\tWEB_E_RESOURCE_TOO_LARGE                                                  Handle        = 0x83750006\n\tWEB_E_INVALID_JSON_STRING                                                 Handle        = 0x83750007\n\tWEB_E_INVALID_JSON_NUMBER                                                 Handle        = 0x83750008\n\tWEB_E_JSON_VALUE_NOT_FOUND                                                Handle        = 0x83750009\n\tHTTP_E_STATUS_UNEXPECTED                                                  Handle        = 0x80190001\n\tHTTP_E_STATUS_UNEXPECTED_REDIRECTION                                      Handle        = 0x80190003\n\tHTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR                                     Handle        = 0x80190004\n\tHTTP_E_STATUS_UNEXPECTED_SERVER_ERROR                                     Handle        = 0x80190005\n\tHTTP_E_STATUS_AMBIGUOUS                                                   Handle        = 0x8019012C\n\tHTTP_E_STATUS_MOVED                                                       Handle        = 0x8019012D\n\tHTTP_E_STATUS_REDIRECT                                                    Handle        = 0x8019012E\n\tHTTP_E_STATUS_REDIRECT_METHOD                                             Handle        = 0x8019012F\n\tHTTP_E_STATUS_NOT_MODIFIED                                                Handle        = 0x80190130\n\tHTTP_E_STATUS_USE_PROXY                                                   Handle        = 0x80190131\n\tHTTP_E_STATUS_REDIRECT_KEEP_VERB                                          Handle        = 0x80190133\n\tHTTP_E_STATUS_BAD_REQUEST                                                 Handle        = 0x80190190\n\tHTTP_E_STATUS_DENIED                                                      Handle        = 0x80190191\n\tHTTP_E_STATUS_PAYMENT_REQ                                                 Handle        = 0x80190192\n\tHTTP_E_STATUS_FORBIDDEN                                                   Handle        = 0x80190193\n\tHTTP_E_STATUS_NOT_FOUND                                                   Handle        = 0x80190194\n\tHTTP_E_STATUS_BAD_METHOD                                                  Handle        = 0x80190195\n\tHTTP_E_STATUS_NONE_ACCEPTABLE                                             Handle        = 0x80190196\n\tHTTP_E_STATUS_PROXY_AUTH_REQ                                              Handle        = 0x80190197\n\tHTTP_E_STATUS_REQUEST_TIMEOUT                                             Handle        = 0x80190198\n\tHTTP_E_STATUS_CONFLICT                                                    Handle        = 0x80190199\n\tHTTP_E_STATUS_GONE                                                        Handle        = 0x8019019A\n\tHTTP_E_STATUS_LENGTH_REQUIRED                                             Handle        = 0x8019019B\n\tHTTP_E_STATUS_PRECOND_FAILED                                              Handle        = 0x8019019C\n\tHTTP_E_STATUS_REQUEST_TOO_LARGE                                           Handle        = 0x8019019D\n\tHTTP_E_STATUS_URI_TOO_LONG                                                Handle        = 0x8019019E\n\tHTTP_E_STATUS_UNSUPPORTED_MEDIA                                           Handle        = 0x8019019F\n\tHTTP_E_STATUS_RANGE_NOT_SATISFIABLE                                       Handle        = 0x801901A0\n\tHTTP_E_STATUS_EXPECTATION_FAILED                                          Handle        = 0x801901A1\n\tHTTP_E_STATUS_SERVER_ERROR                                                Handle        = 0x801901F4\n\tHTTP_E_STATUS_NOT_SUPPORTED                                               Handle        = 0x801901F5\n\tHTTP_E_STATUS_BAD_GATEWAY                                                 Handle        = 0x801901F6\n\tHTTP_E_STATUS_SERVICE_UNAVAIL                                             Handle        = 0x801901F7\n\tHTTP_E_STATUS_GATEWAY_TIMEOUT                                             Handle        = 0x801901F8\n\tHTTP_E_STATUS_VERSION_NOT_SUP                                             Handle        = 0x801901F9\n\tE_INVALID_PROTOCOL_OPERATION                                              Handle        = 0x83760001\n\tE_INVALID_PROTOCOL_FORMAT                                                 Handle        = 0x83760002\n\tE_PROTOCOL_EXTENSIONS_NOT_SUPPORTED                                       Handle        = 0x83760003\n\tE_SUBPROTOCOL_NOT_SUPPORTED                                               Handle        = 0x83760004\n\tE_PROTOCOL_VERSION_NOT_SUPPORTED                                          Handle        = 0x83760005\n\tINPUT_E_OUT_OF_ORDER                                                      Handle        = 0x80400000\n\tINPUT_E_REENTRANCY                                                        Handle        = 0x80400001\n\tINPUT_E_MULTIMODAL                                                        Handle        = 0x80400002\n\tINPUT_E_PACKET                                                            Handle        = 0x80400003\n\tINPUT_E_FRAME                                                             Handle        = 0x80400004\n\tINPUT_E_HISTORY                                                           Handle        = 0x80400005\n\tINPUT_E_DEVICE_INFO                                                       Handle        = 0x80400006\n\tINPUT_E_TRANSFORM                                                         Handle        = 0x80400007\n\tINPUT_E_DEVICE_PROPERTY                                                   Handle        = 0x80400008\n\tINET_E_INVALID_URL                                                        Handle        = 0x800C0002\n\tINET_E_NO_SESSION                                                         Handle        = 0x800C0003\n\tINET_E_CANNOT_CONNECT                                                     Handle        = 0x800C0004\n\tINET_E_RESOURCE_NOT_FOUND                                                 Handle        = 0x800C0005\n\tINET_E_OBJECT_NOT_FOUND                                                   Handle        = 0x800C0006\n\tINET_E_DATA_NOT_AVAILABLE                                                 Handle        = 0x800C0007\n\tINET_E_DOWNLOAD_FAILURE                                                   Handle        = 0x800C0008\n\tINET_E_AUTHENTICATION_REQUIRED                                            Handle        = 0x800C0009\n\tINET_E_NO_VALID_MEDIA                                                     Handle        = 0x800C000A\n\tINET_E_CONNECTION_TIMEOUT                                                 Handle        = 0x800C000B\n\tINET_E_INVALID_REQUEST                                                    Handle        = 0x800C000C\n\tINET_E_UNKNOWN_PROTOCOL                                                   Handle        = 0x800C000D\n\tINET_E_SECURITY_PROBLEM                                                   Handle        = 0x800C000E\n\tINET_E_CANNOT_LOAD_DATA                                                   Handle        = 0x800C000F\n\tINET_E_CANNOT_INSTANTIATE_OBJECT                                          Handle        = 0x800C0010\n\tINET_E_INVALID_CERTIFICATE                                                Handle        = 0x800C0019\n\tINET_E_REDIRECT_FAILED                                                    Handle        = 0x800C0014\n\tINET_E_REDIRECT_TO_DIR                                                    Handle        = 0x800C0015\n\tERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN                                 Handle        = 0x80B00001\n\tERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN                                 Handle        = 0x80B00002\n\tERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN                                 Handle        = 0x80B00003\n\tERROR_DBG_START_SERVER_FAILURE_LOCKDOWN                                   Handle        = 0x80B00004\n\tERROR_IO_PREEMPTED                                                        Handle        = 0x89010001\n\tJSCRIPT_E_CANTEXECUTE                                                     Handle        = 0x89020001\n\tWEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES                                      Handle        = 0x88010001\n\tWEP_E_FIXED_DATA_NOT_SUPPORTED                                            Handle        = 0x88010002\n\tWEP_E_HARDWARE_NOT_COMPLIANT                                              Handle        = 0x88010003\n\tWEP_E_LOCK_NOT_CONFIGURED                                                 Handle        = 0x88010004\n\tWEP_E_PROTECTION_SUSPENDED                                                Handle        = 0x88010005\n\tWEP_E_NO_LICENSE                                                          Handle        = 0x88010006\n\tWEP_E_OS_NOT_PROTECTED                                                    Handle        = 0x88010007\n\tWEP_E_UNEXPECTED_FAIL                                                     Handle        = 0x88010008\n\tWEP_E_BUFFER_TOO_LARGE                                                    Handle        = 0x88010009\n\tERROR_SVHDX_ERROR_STORED                                                  Handle        = 0xC05C0000\n\tERROR_SVHDX_ERROR_NOT_AVAILABLE                                           Handle        = 0xC05CFF00\n\tERROR_SVHDX_UNIT_ATTENTION_AVAILABLE                                      Handle        = 0xC05CFF01\n\tERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED                          Handle        = 0xC05CFF02\n\tERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED                         Handle        = 0xC05CFF03\n\tERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED                          Handle        = 0xC05CFF04\n\tERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED                        Handle        = 0xC05CFF05\n\tERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED                   Handle        = 0xC05CFF06\n\tERROR_SVHDX_RESERVATION_CONFLICT                                          Handle        = 0xC05CFF07\n\tERROR_SVHDX_WRONG_FILE_TYPE                                               Handle        = 0xC05CFF08\n\tERROR_SVHDX_VERSION_MISMATCH                                              Handle        = 0xC05CFF09\n\tERROR_VHD_SHARED                                                          Handle        = 0xC05CFF0A\n\tERROR_SVHDX_NO_INITIATOR                                                  Handle        = 0xC05CFF0B\n\tERROR_VHDSET_BACKING_STORAGE_NOT_FOUND                                    Handle        = 0xC05CFF0C\n\tERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP                               Handle        = 0xC05D0000\n\tERROR_SMB_BAD_CLUSTER_DIALECT                                             Handle        = 0xC05D0001\n\tWININET_E_OUT_OF_HANDLES                                                  Handle        = 0x80072EE1\n\tWININET_E_TIMEOUT                                                         Handle        = 0x80072EE2\n\tWININET_E_EXTENDED_ERROR                                                  Handle        = 0x80072EE3\n\tWININET_E_INTERNAL_ERROR                                                  Handle        = 0x80072EE4\n\tWININET_E_INVALID_URL                                                     Handle        = 0x80072EE5\n\tWININET_E_UNRECOGNIZED_SCHEME                                             Handle        = 0x80072EE6\n\tWININET_E_NAME_NOT_RESOLVED                                               Handle        = 0x80072EE7\n\tWININET_E_PROTOCOL_NOT_FOUND                                              Handle        = 0x80072EE8\n\tWININET_E_INVALID_OPTION                                                  Handle        = 0x80072EE9\n\tWININET_E_BAD_OPTION_LENGTH                                               Handle        = 0x80072EEA\n\tWININET_E_OPTION_NOT_SETTABLE                                             Handle        = 0x80072EEB\n\tWININET_E_SHUTDOWN                                                        Handle        = 0x80072EEC\n\tWININET_E_INCORRECT_USER_NAME                                             Handle        = 0x80072EED\n\tWININET_E_INCORRECT_PASSWORD                                              Handle        = 0x80072EEE\n\tWININET_E_LOGIN_FAILURE                                                   Handle        = 0x80072EEF\n\tWININET_E_INVALID_OPERATION                                               Handle        = 0x80072EF0\n\tWININET_E_OPERATION_CANCELLED                                             Handle        = 0x80072EF1\n\tWININET_E_INCORRECT_HANDLE_TYPE                                           Handle        = 0x80072EF2\n\tWININET_E_INCORRECT_HANDLE_STATE                                          Handle        = 0x80072EF3\n\tWININET_E_NOT_PROXY_REQUEST                                               Handle        = 0x80072EF4\n\tWININET_E_REGISTRY_VALUE_NOT_FOUND                                        Handle        = 0x80072EF5\n\tWININET_E_BAD_REGISTRY_PARAMETER                                          Handle        = 0x80072EF6\n\tWININET_E_NO_DIRECT_ACCESS                                                Handle        = 0x80072EF7\n\tWININET_E_NO_CONTEXT                                                      Handle        = 0x80072EF8\n\tWININET_E_NO_CALLBACK                                                     Handle        = 0x80072EF9\n\tWININET_E_REQUEST_PENDING                                                 Handle        = 0x80072EFA\n\tWININET_E_INCORRECT_FORMAT                                                Handle        = 0x80072EFB\n\tWININET_E_ITEM_NOT_FOUND                                                  Handle        = 0x80072EFC\n\tWININET_E_CANNOT_CONNECT                                                  Handle        = 0x80072EFD\n\tWININET_E_CONNECTION_ABORTED                                              Handle        = 0x80072EFE\n\tWININET_E_CONNECTION_RESET                                                Handle        = 0x80072EFF\n\tWININET_E_FORCE_RETRY                                                     Handle        = 0x80072F00\n\tWININET_E_INVALID_PROXY_REQUEST                                           Handle        = 0x80072F01\n\tWININET_E_NEED_UI                                                         Handle        = 0x80072F02\n\tWININET_E_HANDLE_EXISTS                                                   Handle        = 0x80072F04\n\tWININET_E_SEC_CERT_DATE_INVALID                                           Handle        = 0x80072F05\n\tWININET_E_SEC_CERT_CN_INVALID                                             Handle        = 0x80072F06\n\tWININET_E_HTTP_TO_HTTPS_ON_REDIR                                          Handle        = 0x80072F07\n\tWININET_E_HTTPS_TO_HTTP_ON_REDIR                                          Handle        = 0x80072F08\n\tWININET_E_MIXED_SECURITY                                                  Handle        = 0x80072F09\n\tWININET_E_CHG_POST_IS_NON_SECURE                                          Handle        = 0x80072F0A\n\tWININET_E_POST_IS_NON_SECURE                                              Handle        = 0x80072F0B\n\tWININET_E_CLIENT_AUTH_CERT_NEEDED                                         Handle        = 0x80072F0C\n\tWININET_E_INVALID_CA                                                      Handle        = 0x80072F0D\n\tWININET_E_CLIENT_AUTH_NOT_SETUP                                           Handle        = 0x80072F0E\n\tWININET_E_ASYNC_THREAD_FAILED                                             Handle        = 0x80072F0F\n\tWININET_E_REDIRECT_SCHEME_CHANGE                                          Handle        = 0x80072F10\n\tWININET_E_DIALOG_PENDING                                                  Handle        = 0x80072F11\n\tWININET_E_RETRY_DIALOG                                                    Handle        = 0x80072F12\n\tWININET_E_NO_NEW_CONTAINERS                                               Handle        = 0x80072F13\n\tWININET_E_HTTPS_HTTP_SUBMIT_REDIR                                         Handle        = 0x80072F14\n\tWININET_E_SEC_CERT_ERRORS                                                 Handle        = 0x80072F17\n\tWININET_E_SEC_CERT_REV_FAILED                                             Handle        = 0x80072F19\n\tWININET_E_HEADER_NOT_FOUND                                                Handle        = 0x80072F76\n\tWININET_E_DOWNLEVEL_SERVER                                                Handle        = 0x80072F77\n\tWININET_E_INVALID_SERVER_RESPONSE                                         Handle        = 0x80072F78\n\tWININET_E_INVALID_HEADER                                                  Handle        = 0x80072F79\n\tWININET_E_INVALID_QUERY_REQUEST                                           Handle        = 0x80072F7A\n\tWININET_E_HEADER_ALREADY_EXISTS                                           Handle        = 0x80072F7B\n\tWININET_E_REDIRECT_FAILED                                                 Handle        = 0x80072F7C\n\tWININET_E_SECURITY_CHANNEL_ERROR                                          Handle        = 0x80072F7D\n\tWININET_E_UNABLE_TO_CACHE_FILE                                            Handle        = 0x80072F7E\n\tWININET_E_TCPIP_NOT_INSTALLED                                             Handle        = 0x80072F7F\n\tWININET_E_DISCONNECTED                                                    Handle        = 0x80072F83\n\tWININET_E_SERVER_UNREACHABLE                                              Handle        = 0x80072F84\n\tWININET_E_PROXY_SERVER_UNREACHABLE                                        Handle        = 0x80072F85\n\tWININET_E_BAD_AUTO_PROXY_SCRIPT                                           Handle        = 0x80072F86\n\tWININET_E_UNABLE_TO_DOWNLOAD_SCRIPT                                       Handle        = 0x80072F87\n\tWININET_E_SEC_INVALID_CERT                                                Handle        = 0x80072F89\n\tWININET_E_SEC_CERT_REVOKED                                                Handle        = 0x80072F8A\n\tWININET_E_FAILED_DUETOSECURITYCHECK                                       Handle        = 0x80072F8B\n\tWININET_E_NOT_INITIALIZED                                                 Handle        = 0x80072F8C\n\tWININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY                               Handle        = 0x80072F8E\n\tWININET_E_DECODING_FAILED                                                 Handle        = 0x80072F8F\n\tWININET_E_NOT_REDIRECTED                                                  Handle        = 0x80072F80\n\tWININET_E_COOKIE_NEEDS_CONFIRMATION                                       Handle        = 0x80072F81\n\tWININET_E_COOKIE_DECLINED                                                 Handle        = 0x80072F82\n\tWININET_E_REDIRECT_NEEDS_CONFIRMATION                                     Handle        = 0x80072F88\n\tSQLITE_E_ERROR                                                            Handle        = 0x87AF0001\n\tSQLITE_E_INTERNAL                                                         Handle        = 0x87AF0002\n\tSQLITE_E_PERM                                                             Handle        = 0x87AF0003\n\tSQLITE_E_ABORT                                                            Handle        = 0x87AF0004\n\tSQLITE_E_BUSY                                                             Handle        = 0x87AF0005\n\tSQLITE_E_LOCKED                                                           Handle        = 0x87AF0006\n\tSQLITE_E_NOMEM                                                            Handle        = 0x87AF0007\n\tSQLITE_E_READONLY                                                         Handle        = 0x87AF0008\n\tSQLITE_E_INTERRUPT                                                        Handle        = 0x87AF0009\n\tSQLITE_E_IOERR                                                            Handle        = 0x87AF000A\n\tSQLITE_E_CORRUPT                                                          Handle        = 0x87AF000B\n\tSQLITE_E_NOTFOUND                                                         Handle        = 0x87AF000C\n\tSQLITE_E_FULL                                                             Handle        = 0x87AF000D\n\tSQLITE_E_CANTOPEN                                                         Handle        = 0x87AF000E\n\tSQLITE_E_PROTOCOL                                                         Handle        = 0x87AF000F\n\tSQLITE_E_EMPTY                                                            Handle        = 0x87AF0010\n\tSQLITE_E_SCHEMA                                                           Handle        = 0x87AF0011\n\tSQLITE_E_TOOBIG                                                           Handle        = 0x87AF0012\n\tSQLITE_E_CONSTRAINT                                                       Handle        = 0x87AF0013\n\tSQLITE_E_MISMATCH                                                         Handle        = 0x87AF0014\n\tSQLITE_E_MISUSE                                                           Handle        = 0x87AF0015\n\tSQLITE_E_NOLFS                                                            Handle        = 0x87AF0016\n\tSQLITE_E_AUTH                                                             Handle        = 0x87AF0017\n\tSQLITE_E_FORMAT                                                           Handle        = 0x87AF0018\n\tSQLITE_E_RANGE                                                            Handle        = 0x87AF0019\n\tSQLITE_E_NOTADB                                                           Handle        = 0x87AF001A\n\tSQLITE_E_NOTICE                                                           Handle        = 0x87AF001B\n\tSQLITE_E_WARNING                                                          Handle        = 0x87AF001C\n\tSQLITE_E_ROW                                                              Handle        = 0x87AF0064\n\tSQLITE_E_DONE                                                             Handle        = 0x87AF0065\n\tSQLITE_E_IOERR_READ                                                       Handle        = 0x87AF010A\n\tSQLITE_E_IOERR_SHORT_READ                                                 Handle        = 0x87AF020A\n\tSQLITE_E_IOERR_WRITE                                                      Handle        = 0x87AF030A\n\tSQLITE_E_IOERR_FSYNC                                                      Handle        = 0x87AF040A\n\tSQLITE_E_IOERR_DIR_FSYNC                                                  Handle        = 0x87AF050A\n\tSQLITE_E_IOERR_TRUNCATE                                                   Handle        = 0x87AF060A\n\tSQLITE_E_IOERR_FSTAT                                                      Handle        = 0x87AF070A\n\tSQLITE_E_IOERR_UNLOCK                                                     Handle        = 0x87AF080A\n\tSQLITE_E_IOERR_RDLOCK                                                     Handle        = 0x87AF090A\n\tSQLITE_E_IOERR_DELETE                                                     Handle        = 0x87AF0A0A\n\tSQLITE_E_IOERR_BLOCKED                                                    Handle        = 0x87AF0B0A\n\tSQLITE_E_IOERR_NOMEM                                                      Handle        = 0x87AF0C0A\n\tSQLITE_E_IOERR_ACCESS                                                     Handle        = 0x87AF0D0A\n\tSQLITE_E_IOERR_CHECKRESERVEDLOCK                                          Handle        = 0x87AF0E0A\n\tSQLITE_E_IOERR_LOCK                                                       Handle        = 0x87AF0F0A\n\tSQLITE_E_IOERR_CLOSE                                                      Handle        = 0x87AF100A\n\tSQLITE_E_IOERR_DIR_CLOSE                                                  Handle        = 0x87AF110A\n\tSQLITE_E_IOERR_SHMOPEN                                                    Handle        = 0x87AF120A\n\tSQLITE_E_IOERR_SHMSIZE                                                    Handle        = 0x87AF130A\n\tSQLITE_E_IOERR_SHMLOCK                                                    Handle        = 0x87AF140A\n\tSQLITE_E_IOERR_SHMMAP                                                     Handle        = 0x87AF150A\n\tSQLITE_E_IOERR_SEEK                                                       Handle        = 0x87AF160A\n\tSQLITE_E_IOERR_DELETE_NOENT                                               Handle        = 0x87AF170A\n\tSQLITE_E_IOERR_MMAP                                                       Handle        = 0x87AF180A\n\tSQLITE_E_IOERR_GETTEMPPATH                                                Handle        = 0x87AF190A\n\tSQLITE_E_IOERR_CONVPATH                                                   Handle        = 0x87AF1A0A\n\tSQLITE_E_IOERR_VNODE                                                      Handle        = 0x87AF1A02\n\tSQLITE_E_IOERR_AUTH                                                       Handle        = 0x87AF1A03\n\tSQLITE_E_LOCKED_SHAREDCACHE                                               Handle        = 0x87AF0106\n\tSQLITE_E_BUSY_RECOVERY                                                    Handle        = 0x87AF0105\n\tSQLITE_E_BUSY_SNAPSHOT                                                    Handle        = 0x87AF0205\n\tSQLITE_E_CANTOPEN_NOTEMPDIR                                               Handle        = 0x87AF010E\n\tSQLITE_E_CANTOPEN_ISDIR                                                   Handle        = 0x87AF020E\n\tSQLITE_E_CANTOPEN_FULLPATH                                                Handle        = 0x87AF030E\n\tSQLITE_E_CANTOPEN_CONVPATH                                                Handle        = 0x87AF040E\n\tSQLITE_E_CORRUPT_VTAB                                                     Handle        = 0x87AF010B\n\tSQLITE_E_READONLY_RECOVERY                                                Handle        = 0x87AF0108\n\tSQLITE_E_READONLY_CANTLOCK                                                Handle        = 0x87AF0208\n\tSQLITE_E_READONLY_ROLLBACK                                                Handle        = 0x87AF0308\n\tSQLITE_E_READONLY_DBMOVED                                                 Handle        = 0x87AF0408\n\tSQLITE_E_ABORT_ROLLBACK                                                   Handle        = 0x87AF0204\n\tSQLITE_E_CONSTRAINT_CHECK                                                 Handle        = 0x87AF0113\n\tSQLITE_E_CONSTRAINT_COMMITHOOK                                            Handle        = 0x87AF0213\n\tSQLITE_E_CONSTRAINT_FOREIGNKEY                                            Handle        = 0x87AF0313\n\tSQLITE_E_CONSTRAINT_FUNCTION                                              Handle        = 0x87AF0413\n\tSQLITE_E_CONSTRAINT_NOTNULL                                               Handle        = 0x87AF0513\n\tSQLITE_E_CONSTRAINT_PRIMARYKEY                                            Handle        = 0x87AF0613\n\tSQLITE_E_CONSTRAINT_TRIGGER                                               Handle        = 0x87AF0713\n\tSQLITE_E_CONSTRAINT_UNIQUE                                                Handle        = 0x87AF0813\n\tSQLITE_E_CONSTRAINT_VTAB                                                  Handle        = 0x87AF0913\n\tSQLITE_E_CONSTRAINT_ROWID                                                 Handle        = 0x87AF0A13\n\tSQLITE_E_NOTICE_RECOVER_WAL                                               Handle        = 0x87AF011B\n\tSQLITE_E_NOTICE_RECOVER_ROLLBACK                                          Handle        = 0x87AF021B\n\tSQLITE_E_WARNING_AUTOINDEX                                                Handle        = 0x87AF011C\n\tUTC_E_TOGGLE_TRACE_STARTED                                                Handle        = 0x87C51001\n\tUTC_E_ALTERNATIVE_TRACE_CANNOT_PREEMPT                                    Handle        = 0x87C51002\n\tUTC_E_AOT_NOT_RUNNING                                                     Handle        = 0x87C51003\n\tUTC_E_SCRIPT_TYPE_INVALID                                                 Handle        = 0x87C51004\n\tUTC_E_SCENARIODEF_NOT_FOUND                                               Handle        = 0x87C51005\n\tUTC_E_TRACEPROFILE_NOT_FOUND                                              Handle        = 0x87C51006\n\tUTC_E_FORWARDER_ALREADY_ENABLED                                           Handle        = 0x87C51007\n\tUTC_E_FORWARDER_ALREADY_DISABLED                                          Handle        = 0x87C51008\n\tUTC_E_EVENTLOG_ENTRY_MALFORMED                                            Handle        = 0x87C51009\n\tUTC_E_DIAGRULES_SCHEMAVERSION_MISMATCH                                    Handle        = 0x87C5100A\n\tUTC_E_SCRIPT_TERMINATED                                                   Handle        = 0x87C5100B\n\tUTC_E_INVALID_CUSTOM_FILTER                                               Handle        = 0x87C5100C\n\tUTC_E_TRACE_NOT_RUNNING                                                   Handle        = 0x87C5100D\n\tUTC_E_REESCALATED_TOO_QUICKLY                                             Handle        = 0x87C5100E\n\tUTC_E_ESCALATION_ALREADY_RUNNING                                          Handle        = 0x87C5100F\n\tUTC_E_PERFTRACK_ALREADY_TRACING                                           Handle        = 0x87C51010\n\tUTC_E_REACHED_MAX_ESCALATIONS                                             Handle        = 0x87C51011\n\tUTC_E_FORWARDER_PRODUCER_MISMATCH                                         Handle        = 0x87C51012\n\tUTC_E_INTENTIONAL_SCRIPT_FAILURE                                          Handle        = 0x87C51013\n\tUTC_E_SQM_INIT_FAILED                                                     Handle        = 0x87C51014\n\tUTC_E_NO_WER_LOGGER_SUPPORTED                                             Handle        = 0x87C51015\n\tUTC_E_TRACERS_DONT_EXIST                                                  Handle        = 0x87C51016\n\tUTC_E_WINRT_INIT_FAILED                                                   Handle        = 0x87C51017\n\tUTC_E_SCENARIODEF_SCHEMAVERSION_MISMATCH                                  Handle        = 0x87C51018\n\tUTC_E_INVALID_FILTER                                                      Handle        = 0x87C51019\n\tUTC_E_EXE_TERMINATED                                                      Handle        = 0x87C5101A\n\tUTC_E_ESCALATION_NOT_AUTHORIZED                                           Handle        = 0x87C5101B\n\tUTC_E_SETUP_NOT_AUTHORIZED                                                Handle        = 0x87C5101C\n\tUTC_E_CHILD_PROCESS_FAILED                                                Handle        = 0x87C5101D\n\tUTC_E_COMMAND_LINE_NOT_AUTHORIZED                                         Handle        = 0x87C5101E\n\tUTC_E_CANNOT_LOAD_SCENARIO_EDITOR_XML                                     Handle        = 0x87C5101F\n\tUTC_E_ESCALATION_TIMED_OUT                                                Handle        = 0x87C51020\n\tUTC_E_SETUP_TIMED_OUT                                                     Handle        = 0x87C51021\n\tUTC_E_TRIGGER_MISMATCH                                                    Handle        = 0x87C51022\n\tUTC_E_TRIGGER_NOT_FOUND                                                   Handle        = 0x87C51023\n\tUTC_E_SIF_NOT_SUPPORTED                                                   Handle        = 0x87C51024\n\tUTC_E_DELAY_TERMINATED                                                    Handle        = 0x87C51025\n\tUTC_E_DEVICE_TICKET_ERROR                                                 Handle        = 0x87C51026\n\tUTC_E_TRACE_BUFFER_LIMIT_EXCEEDED                                         Handle        = 0x87C51027\n\tUTC_E_API_RESULT_UNAVAILABLE                                              Handle        = 0x87C51028\n\tUTC_E_RPC_TIMEOUT                                                         Handle        = 0x87C51029\n\tUTC_E_RPC_WAIT_FAILED                                                     Handle        = 0x87C5102A\n\tUTC_E_API_BUSY                                                            Handle        = 0x87C5102B\n\tUTC_E_TRACE_MIN_DURATION_REQUIREMENT_NOT_MET                              Handle        = 0x87C5102C\n\tUTC_E_EXCLUSIVITY_NOT_AVAILABLE                                           Handle        = 0x87C5102D\n\tUTC_E_GETFILE_FILE_PATH_NOT_APPROVED                                      Handle        = 0x87C5102E\n\tUTC_E_ESCALATION_DIRECTORY_ALREADY_EXISTS                                 Handle        = 0x87C5102F\n\tUTC_E_TIME_TRIGGER_ON_START_INVALID                                       Handle        = 0x87C51030\n\tUTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION                        Handle        = 0x87C51031\n\tUTC_E_TIME_TRIGGER_INVALID_TIME_RANGE                                     Handle        = 0x87C51032\n\tUTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE                               Handle        = 0x87C51033\n\tUTC_E_BINARY_MISSING                                                      Handle        = 0x87C51034\n\tUTC_E_NETWORK_CAPTURE_NOT_ALLOWED                                         Handle        = 0x87C51035\n\tUTC_E_FAILED_TO_RESOLVE_CONTAINER_ID                                      Handle        = 0x87C51036\n\tUTC_E_UNABLE_TO_RESOLVE_SESSION                                           Handle        = 0x87C51037\n\tUTC_E_THROTTLED                                                           Handle        = 0x87C51038\n\tUTC_E_UNAPPROVED_SCRIPT                                                   Handle        = 0x87C51039\n\tUTC_E_SCRIPT_MISSING                                                      Handle        = 0x87C5103A\n\tUTC_E_SCENARIO_THROTTLED                                                  Handle        = 0x87C5103B\n\tUTC_E_API_NOT_SUPPORTED                                                   Handle        = 0x87C5103C\n\tUTC_E_GETFILE_EXTERNAL_PATH_NOT_APPROVED                                  Handle        = 0x87C5103D\n\tUTC_E_TRY_GET_SCENARIO_TIMEOUT_EXCEEDED                                   Handle        = 0x87C5103E\n\tUTC_E_CERT_REV_FAILED                                                     Handle        = 0x87C5103F\n\tUTC_E_FAILED_TO_START_NDISCAP                                             Handle        = 0x87C51040\n\tUTC_E_KERNELDUMP_LIMIT_REACHED                                            Handle        = 0x87C51041\n\tUTC_E_MISSING_AGGREGATE_EVENT_TAG                                         Handle        = 0x87C51042\n\tUTC_E_INVALID_AGGREGATION_STRUCT                                          Handle        = 0x87C51043\n\tUTC_E_ACTION_NOT_SUPPORTED_IN_DESTINATION                                 Handle        = 0x87C51044\n\tUTC_E_FILTER_MISSING_ATTRIBUTE                                            Handle        = 0x87C51045\n\tUTC_E_FILTER_INVALID_TYPE                                                 Handle        = 0x87C51046\n\tUTC_E_FILTER_VARIABLE_NOT_FOUND                                           Handle        = 0x87C51047\n\tUTC_E_FILTER_FUNCTION_RESTRICTED                                          Handle        = 0x87C51048\n\tUTC_E_FILTER_VERSION_MISMATCH                                             Handle        = 0x87C51049\n\tUTC_E_FILTER_INVALID_FUNCTION                                             Handle        = 0x87C51050\n\tUTC_E_FILTER_INVALID_FUNCTION_PARAMS                                      Handle        = 0x87C51051\n\tUTC_E_FILTER_INVALID_COMMAND                                              Handle        = 0x87C51052\n\tUTC_E_FILTER_ILLEGAL_EVAL                                                 Handle        = 0x87C51053\n\tUTC_E_TTTRACER_RETURNED_ERROR                                             Handle        = 0x87C51054\n\tUTC_E_AGENT_DIAGNOSTICS_TOO_LARGE                                         Handle        = 0x87C51055\n\tUTC_E_FAILED_TO_RECEIVE_AGENT_DIAGNOSTICS                                 Handle        = 0x87C51056\n\tUTC_E_SCENARIO_HAS_NO_ACTIONS                                             Handle        = 0x87C51057\n\tUTC_E_TTTRACER_STORAGE_FULL                                               Handle        = 0x87C51058\n\tUTC_E_INSUFFICIENT_SPACE_TO_START_TRACE                                   Handle        = 0x87C51059\n\tUTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN                                    Handle        = 0x87C5105A\n\tUTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED                                 Handle        = 0x87C5105B\n\tUTC_E_SETREGKEYACTION_TYPE_NOT_APPROVED                                   Handle        = 0x87C5105C\n\tWINML_ERR_INVALID_DEVICE                                                  Handle        = 0x88900001\n\tWINML_ERR_INVALID_BINDING                                                 Handle        = 0x88900002\n\tWINML_ERR_VALUE_NOTFOUND                                                  Handle        = 0x88900003\n\tWINML_ERR_SIZE_MISMATCH                                                   Handle        = 0x88900004\n\tSTATUS_WAIT_0                                                             NTStatus      = 0x00000000\n\tSTATUS_SUCCESS                                                            NTStatus      = 0x00000000\n\tSTATUS_WAIT_1                                                             NTStatus      = 0x00000001\n\tSTATUS_WAIT_2                                                             NTStatus      = 0x00000002\n\tSTATUS_WAIT_3                                                             NTStatus      = 0x00000003\n\tSTATUS_WAIT_63                                                            NTStatus      = 0x0000003F\n\tSTATUS_ABANDONED                                                          NTStatus      = 0x00000080\n\tSTATUS_ABANDONED_WAIT_0                                                   NTStatus      = 0x00000080\n\tSTATUS_ABANDONED_WAIT_63                                                  NTStatus      = 0x000000BF\n\tSTATUS_USER_APC                                                           NTStatus      = 0x000000C0\n\tSTATUS_ALREADY_COMPLETE                                                   NTStatus      = 0x000000FF\n\tSTATUS_KERNEL_APC                                                         NTStatus      = 0x00000100\n\tSTATUS_ALERTED                                                            NTStatus      = 0x00000101\n\tSTATUS_TIMEOUT                                                            NTStatus      = 0x00000102\n\tSTATUS_PENDING                                                            NTStatus      = 0x00000103\n\tSTATUS_REPARSE                                                            NTStatus      = 0x00000104\n\tSTATUS_MORE_ENTRIES                                                       NTStatus      = 0x00000105\n\tSTATUS_NOT_ALL_ASSIGNED                                                   NTStatus      = 0x00000106\n\tSTATUS_SOME_NOT_MAPPED                                                    NTStatus      = 0x00000107\n\tSTATUS_OPLOCK_BREAK_IN_PROGRESS                                           NTStatus      = 0x00000108\n\tSTATUS_VOLUME_MOUNTED                                                     NTStatus      = 0x00000109\n\tSTATUS_RXACT_COMMITTED                                                    NTStatus      = 0x0000010A\n\tSTATUS_NOTIFY_CLEANUP                                                     NTStatus      = 0x0000010B\n\tSTATUS_NOTIFY_ENUM_DIR                                                    NTStatus      = 0x0000010C\n\tSTATUS_NO_QUOTAS_FOR_ACCOUNT                                              NTStatus      = 0x0000010D\n\tSTATUS_PRIMARY_TRANSPORT_CONNECT_FAILED                                   NTStatus      = 0x0000010E\n\tSTATUS_PAGE_FAULT_TRANSITION                                              NTStatus      = 0x00000110\n\tSTATUS_PAGE_FAULT_DEMAND_ZERO                                             NTStatus      = 0x00000111\n\tSTATUS_PAGE_FAULT_COPY_ON_WRITE                                           NTStatus      = 0x00000112\n\tSTATUS_PAGE_FAULT_GUARD_PAGE                                              NTStatus      = 0x00000113\n\tSTATUS_PAGE_FAULT_PAGING_FILE                                             NTStatus      = 0x00000114\n\tSTATUS_CACHE_PAGE_LOCKED                                                  NTStatus      = 0x00000115\n\tSTATUS_CRASH_DUMP                                                         NTStatus      = 0x00000116\n\tSTATUS_BUFFER_ALL_ZEROS                                                   NTStatus      = 0x00000117\n\tSTATUS_REPARSE_OBJECT                                                     NTStatus      = 0x00000118\n\tSTATUS_RESOURCE_REQUIREMENTS_CHANGED                                      NTStatus      = 0x00000119\n\tSTATUS_TRANSLATION_COMPLETE                                               NTStatus      = 0x00000120\n\tSTATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY                                    NTStatus      = 0x00000121\n\tSTATUS_NOTHING_TO_TERMINATE                                               NTStatus      = 0x00000122\n\tSTATUS_PROCESS_NOT_IN_JOB                                                 NTStatus      = 0x00000123\n\tSTATUS_PROCESS_IN_JOB                                                     NTStatus      = 0x00000124\n\tSTATUS_VOLSNAP_HIBERNATE_READY                                            NTStatus      = 0x00000125\n\tSTATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY                                 NTStatus      = 0x00000126\n\tSTATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED                                 NTStatus      = 0x00000127\n\tSTATUS_INTERRUPT_STILL_CONNECTED                                          NTStatus      = 0x00000128\n\tSTATUS_PROCESS_CLONED                                                     NTStatus      = 0x00000129\n\tSTATUS_FILE_LOCKED_WITH_ONLY_READERS                                      NTStatus      = 0x0000012A\n\tSTATUS_FILE_LOCKED_WITH_WRITERS                                           NTStatus      = 0x0000012B\n\tSTATUS_VALID_IMAGE_HASH                                                   NTStatus      = 0x0000012C\n\tSTATUS_VALID_CATALOG_HASH                                                 NTStatus      = 0x0000012D\n\tSTATUS_VALID_STRONG_CODE_HASH                                             NTStatus      = 0x0000012E\n\tSTATUS_GHOSTED                                                            NTStatus      = 0x0000012F\n\tSTATUS_DATA_OVERWRITTEN                                                   NTStatus      = 0x00000130\n\tSTATUS_RESOURCEMANAGER_READ_ONLY                                          NTStatus      = 0x00000202\n\tSTATUS_RING_PREVIOUSLY_EMPTY                                              NTStatus      = 0x00000210\n\tSTATUS_RING_PREVIOUSLY_FULL                                               NTStatus      = 0x00000211\n\tSTATUS_RING_PREVIOUSLY_ABOVE_QUOTA                                        NTStatus      = 0x00000212\n\tSTATUS_RING_NEWLY_EMPTY                                                   NTStatus      = 0x00000213\n\tSTATUS_RING_SIGNAL_OPPOSITE_ENDPOINT                                      NTStatus      = 0x00000214\n\tSTATUS_OPLOCK_SWITCHED_TO_NEW_HANDLE                                      NTStatus      = 0x00000215\n\tSTATUS_OPLOCK_HANDLE_CLOSED                                               NTStatus      = 0x00000216\n\tSTATUS_WAIT_FOR_OPLOCK                                                    NTStatus      = 0x00000367\n\tSTATUS_REPARSE_GLOBAL                                                     NTStatus      = 0x00000368\n\tSTATUS_FLT_IO_COMPLETE                                                    NTStatus      = 0x001C0001\n\tSTATUS_OBJECT_NAME_EXISTS                                                 NTStatus      = 0x40000000\n\tSTATUS_THREAD_WAS_SUSPENDED                                               NTStatus      = 0x40000001\n\tSTATUS_WORKING_SET_LIMIT_RANGE                                            NTStatus      = 0x40000002\n\tSTATUS_IMAGE_NOT_AT_BASE                                                  NTStatus      = 0x40000003\n\tSTATUS_RXACT_STATE_CREATED                                                NTStatus      = 0x40000004\n\tSTATUS_SEGMENT_NOTIFICATION                                               NTStatus      = 0x40000005\n\tSTATUS_LOCAL_USER_SESSION_KEY                                             NTStatus      = 0x40000006\n\tSTATUS_BAD_CURRENT_DIRECTORY                                              NTStatus      = 0x40000007\n\tSTATUS_SERIAL_MORE_WRITES                                                 NTStatus      = 0x40000008\n\tSTATUS_REGISTRY_RECOVERED                                                 NTStatus      = 0x40000009\n\tSTATUS_FT_READ_RECOVERY_FROM_BACKUP                                       NTStatus      = 0x4000000A\n\tSTATUS_FT_WRITE_RECOVERY                                                  NTStatus      = 0x4000000B\n\tSTATUS_SERIAL_COUNTER_TIMEOUT                                             NTStatus      = 0x4000000C\n\tSTATUS_NULL_LM_PASSWORD                                                   NTStatus      = 0x4000000D\n\tSTATUS_IMAGE_MACHINE_TYPE_MISMATCH                                        NTStatus      = 0x4000000E\n\tSTATUS_RECEIVE_PARTIAL                                                    NTStatus      = 0x4000000F\n\tSTATUS_RECEIVE_EXPEDITED                                                  NTStatus      = 0x40000010\n\tSTATUS_RECEIVE_PARTIAL_EXPEDITED                                          NTStatus      = 0x40000011\n\tSTATUS_EVENT_DONE                                                         NTStatus      = 0x40000012\n\tSTATUS_EVENT_PENDING                                                      NTStatus      = 0x40000013\n\tSTATUS_CHECKING_FILE_SYSTEM                                               NTStatus      = 0x40000014\n\tSTATUS_FATAL_APP_EXIT                                                     NTStatus      = 0x40000015\n\tSTATUS_PREDEFINED_HANDLE                                                  NTStatus      = 0x40000016\n\tSTATUS_WAS_UNLOCKED                                                       NTStatus      = 0x40000017\n\tSTATUS_SERVICE_NOTIFICATION                                               NTStatus      = 0x40000018\n\tSTATUS_WAS_LOCKED                                                         NTStatus      = 0x40000019\n\tSTATUS_LOG_HARD_ERROR                                                     NTStatus      = 0x4000001A\n\tSTATUS_ALREADY_WIN32                                                      NTStatus      = 0x4000001B\n\tSTATUS_WX86_UNSIMULATE                                                    NTStatus      = 0x4000001C\n\tSTATUS_WX86_CONTINUE                                                      NTStatus      = 0x4000001D\n\tSTATUS_WX86_SINGLE_STEP                                                   NTStatus      = 0x4000001E\n\tSTATUS_WX86_BREAKPOINT                                                    NTStatus      = 0x4000001F\n\tSTATUS_WX86_EXCEPTION_CONTINUE                                            NTStatus      = 0x40000020\n\tSTATUS_WX86_EXCEPTION_LASTCHANCE                                          NTStatus      = 0x40000021\n\tSTATUS_WX86_EXCEPTION_CHAIN                                               NTStatus      = 0x40000022\n\tSTATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE                                    NTStatus      = 0x40000023\n\tSTATUS_NO_YIELD_PERFORMED                                                 NTStatus      = 0x40000024\n\tSTATUS_TIMER_RESUME_IGNORED                                               NTStatus      = 0x40000025\n\tSTATUS_ARBITRATION_UNHANDLED                                              NTStatus      = 0x40000026\n\tSTATUS_CARDBUS_NOT_SUPPORTED                                              NTStatus      = 0x40000027\n\tSTATUS_WX86_CREATEWX86TIB                                                 NTStatus      = 0x40000028\n\tSTATUS_MP_PROCESSOR_MISMATCH                                              NTStatus      = 0x40000029\n\tSTATUS_HIBERNATED                                                         NTStatus      = 0x4000002A\n\tSTATUS_RESUME_HIBERNATION                                                 NTStatus      = 0x4000002B\n\tSTATUS_FIRMWARE_UPDATED                                                   NTStatus      = 0x4000002C\n\tSTATUS_DRIVERS_LEAKING_LOCKED_PAGES                                       NTStatus      = 0x4000002D\n\tSTATUS_MESSAGE_RETRIEVED                                                  NTStatus      = 0x4000002E\n\tSTATUS_SYSTEM_POWERSTATE_TRANSITION                                       NTStatus      = 0x4000002F\n\tSTATUS_ALPC_CHECK_COMPLETION_LIST                                         NTStatus      = 0x40000030\n\tSTATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION                               NTStatus      = 0x40000031\n\tSTATUS_ACCESS_AUDIT_BY_POLICY                                             NTStatus      = 0x40000032\n\tSTATUS_ABANDON_HIBERFILE                                                  NTStatus      = 0x40000033\n\tSTATUS_BIZRULES_NOT_ENABLED                                               NTStatus      = 0x40000034\n\tSTATUS_FT_READ_FROM_COPY                                                  NTStatus      = 0x40000035\n\tSTATUS_IMAGE_AT_DIFFERENT_BASE                                            NTStatus      = 0x40000036\n\tSTATUS_PATCH_DEFERRED                                                     NTStatus      = 0x40000037\n\tSTATUS_HEURISTIC_DAMAGE_POSSIBLE                                          NTStatus      = 0x40190001\n\tSTATUS_GUARD_PAGE_VIOLATION                                               NTStatus      = 0x80000001\n\tSTATUS_DATATYPE_MISALIGNMENT                                              NTStatus      = 0x80000002\n\tSTATUS_BREAKPOINT                                                         NTStatus      = 0x80000003\n\tSTATUS_SINGLE_STEP                                                        NTStatus      = 0x80000004\n\tSTATUS_BUFFER_OVERFLOW                                                    NTStatus      = 0x80000005\n\tSTATUS_NO_MORE_FILES                                                      NTStatus      = 0x80000006\n\tSTATUS_WAKE_SYSTEM_DEBUGGER                                               NTStatus      = 0x80000007\n\tSTATUS_HANDLES_CLOSED                                                     NTStatus      = 0x8000000A\n\tSTATUS_NO_INHERITANCE                                                     NTStatus      = 0x8000000B\n\tSTATUS_GUID_SUBSTITUTION_MADE                                             NTStatus      = 0x8000000C\n\tSTATUS_PARTIAL_COPY                                                       NTStatus      = 0x8000000D\n\tSTATUS_DEVICE_PAPER_EMPTY                                                 NTStatus      = 0x8000000E\n\tSTATUS_DEVICE_POWERED_OFF                                                 NTStatus      = 0x8000000F\n\tSTATUS_DEVICE_OFF_LINE                                                    NTStatus      = 0x80000010\n\tSTATUS_DEVICE_BUSY                                                        NTStatus      = 0x80000011\n\tSTATUS_NO_MORE_EAS                                                        NTStatus      = 0x80000012\n\tSTATUS_INVALID_EA_NAME                                                    NTStatus      = 0x80000013\n\tSTATUS_EA_LIST_INCONSISTENT                                               NTStatus      = 0x80000014\n\tSTATUS_INVALID_EA_FLAG                                                    NTStatus      = 0x80000015\n\tSTATUS_VERIFY_REQUIRED                                                    NTStatus      = 0x80000016\n\tSTATUS_EXTRANEOUS_INFORMATION                                             NTStatus      = 0x80000017\n\tSTATUS_RXACT_COMMIT_NECESSARY                                             NTStatus      = 0x80000018\n\tSTATUS_NO_MORE_ENTRIES                                                    NTStatus      = 0x8000001A\n\tSTATUS_FILEMARK_DETECTED                                                  NTStatus      = 0x8000001B\n\tSTATUS_MEDIA_CHANGED                                                      NTStatus      = 0x8000001C\n\tSTATUS_BUS_RESET                                                          NTStatus      = 0x8000001D\n\tSTATUS_END_OF_MEDIA                                                       NTStatus      = 0x8000001E\n\tSTATUS_BEGINNING_OF_MEDIA                                                 NTStatus      = 0x8000001F\n\tSTATUS_MEDIA_CHECK                                                        NTStatus      = 0x80000020\n\tSTATUS_SETMARK_DETECTED                                                   NTStatus      = 0x80000021\n\tSTATUS_NO_DATA_DETECTED                                                   NTStatus      = 0x80000022\n\tSTATUS_REDIRECTOR_HAS_OPEN_HANDLES                                        NTStatus      = 0x80000023\n\tSTATUS_SERVER_HAS_OPEN_HANDLES                                            NTStatus      = 0x80000024\n\tSTATUS_ALREADY_DISCONNECTED                                               NTStatus      = 0x80000025\n\tSTATUS_LONGJUMP                                                           NTStatus      = 0x80000026\n\tSTATUS_CLEANER_CARTRIDGE_INSTALLED                                        NTStatus      = 0x80000027\n\tSTATUS_PLUGPLAY_QUERY_VETOED                                              NTStatus      = 0x80000028\n\tSTATUS_UNWIND_CONSOLIDATE                                                 NTStatus      = 0x80000029\n\tSTATUS_REGISTRY_HIVE_RECOVERED                                            NTStatus      = 0x8000002A\n\tSTATUS_DLL_MIGHT_BE_INSECURE                                              NTStatus      = 0x8000002B\n\tSTATUS_DLL_MIGHT_BE_INCOMPATIBLE                                          NTStatus      = 0x8000002C\n\tSTATUS_STOPPED_ON_SYMLINK                                                 NTStatus      = 0x8000002D\n\tSTATUS_CANNOT_GRANT_REQUESTED_OPLOCK                                      NTStatus      = 0x8000002E\n\tSTATUS_NO_ACE_CONDITION                                                   NTStatus      = 0x8000002F\n\tSTATUS_DEVICE_SUPPORT_IN_PROGRESS                                         NTStatus      = 0x80000030\n\tSTATUS_DEVICE_POWER_CYCLE_REQUIRED                                        NTStatus      = 0x80000031\n\tSTATUS_NO_WORK_DONE                                                       NTStatus      = 0x80000032\n\tSTATUS_CLUSTER_NODE_ALREADY_UP                                            NTStatus      = 0x80130001\n\tSTATUS_CLUSTER_NODE_ALREADY_DOWN                                          NTStatus      = 0x80130002\n\tSTATUS_CLUSTER_NETWORK_ALREADY_ONLINE                                     NTStatus      = 0x80130003\n\tSTATUS_CLUSTER_NETWORK_ALREADY_OFFLINE                                    NTStatus      = 0x80130004\n\tSTATUS_CLUSTER_NODE_ALREADY_MEMBER                                        NTStatus      = 0x80130005\n\tSTATUS_FLT_BUFFER_TOO_SMALL                                               NTStatus      = 0x801C0001\n\tSTATUS_FVE_PARTIAL_METADATA                                               NTStatus      = 0x80210001\n\tSTATUS_FVE_TRANSIENT_STATE                                                NTStatus      = 0x80210002\n\tSTATUS_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH                         NTStatus      = 0x8000CF00\n\tSTATUS_UNSUCCESSFUL                                                       NTStatus      = 0xC0000001\n\tSTATUS_NOT_IMPLEMENTED                                                    NTStatus      = 0xC0000002\n\tSTATUS_INVALID_INFO_CLASS                                                 NTStatus      = 0xC0000003\n\tSTATUS_INFO_LENGTH_MISMATCH                                               NTStatus      = 0xC0000004\n\tSTATUS_ACCESS_VIOLATION                                                   NTStatus      = 0xC0000005\n\tSTATUS_IN_PAGE_ERROR                                                      NTStatus      = 0xC0000006\n\tSTATUS_PAGEFILE_QUOTA                                                     NTStatus      = 0xC0000007\n\tSTATUS_INVALID_HANDLE                                                     NTStatus      = 0xC0000008\n\tSTATUS_BAD_INITIAL_STACK                                                  NTStatus      = 0xC0000009\n\tSTATUS_BAD_INITIAL_PC                                                     NTStatus      = 0xC000000A\n\tSTATUS_INVALID_CID                                                        NTStatus      = 0xC000000B\n\tSTATUS_TIMER_NOT_CANCELED                                                 NTStatus      = 0xC000000C\n\tSTATUS_INVALID_PARAMETER                                                  NTStatus      = 0xC000000D\n\tSTATUS_NO_SUCH_DEVICE                                                     NTStatus      = 0xC000000E\n\tSTATUS_NO_SUCH_FILE                                                       NTStatus      = 0xC000000F\n\tSTATUS_INVALID_DEVICE_REQUEST                                             NTStatus      = 0xC0000010\n\tSTATUS_END_OF_FILE                                                        NTStatus      = 0xC0000011\n\tSTATUS_WRONG_VOLUME                                                       NTStatus      = 0xC0000012\n\tSTATUS_NO_MEDIA_IN_DEVICE                                                 NTStatus      = 0xC0000013\n\tSTATUS_UNRECOGNIZED_MEDIA                                                 NTStatus      = 0xC0000014\n\tSTATUS_NONEXISTENT_SECTOR                                                 NTStatus      = 0xC0000015\n\tSTATUS_MORE_PROCESSING_REQUIRED                                           NTStatus      = 0xC0000016\n\tSTATUS_NO_MEMORY                                                          NTStatus      = 0xC0000017\n\tSTATUS_CONFLICTING_ADDRESSES                                              NTStatus      = 0xC0000018\n\tSTATUS_NOT_MAPPED_VIEW                                                    NTStatus      = 0xC0000019\n\tSTATUS_UNABLE_TO_FREE_VM                                                  NTStatus      = 0xC000001A\n\tSTATUS_UNABLE_TO_DELETE_SECTION                                           NTStatus      = 0xC000001B\n\tSTATUS_INVALID_SYSTEM_SERVICE                                             NTStatus      = 0xC000001C\n\tSTATUS_ILLEGAL_INSTRUCTION                                                NTStatus      = 0xC000001D\n\tSTATUS_INVALID_LOCK_SEQUENCE                                              NTStatus      = 0xC000001E\n\tSTATUS_INVALID_VIEW_SIZE                                                  NTStatus      = 0xC000001F\n\tSTATUS_INVALID_FILE_FOR_SECTION                                           NTStatus      = 0xC0000020\n\tSTATUS_ALREADY_COMMITTED                                                  NTStatus      = 0xC0000021\n\tSTATUS_ACCESS_DENIED                                                      NTStatus      = 0xC0000022\n\tSTATUS_BUFFER_TOO_SMALL                                                   NTStatus      = 0xC0000023\n\tSTATUS_OBJECT_TYPE_MISMATCH                                               NTStatus      = 0xC0000024\n\tSTATUS_NONCONTINUABLE_EXCEPTION                                           NTStatus      = 0xC0000025\n\tSTATUS_INVALID_DISPOSITION                                                NTStatus      = 0xC0000026\n\tSTATUS_UNWIND                                                             NTStatus      = 0xC0000027\n\tSTATUS_BAD_STACK                                                          NTStatus      = 0xC0000028\n\tSTATUS_INVALID_UNWIND_TARGET                                              NTStatus      = 0xC0000029\n\tSTATUS_NOT_LOCKED                                                         NTStatus      = 0xC000002A\n\tSTATUS_PARITY_ERROR                                                       NTStatus      = 0xC000002B\n\tSTATUS_UNABLE_TO_DECOMMIT_VM                                              NTStatus      = 0xC000002C\n\tSTATUS_NOT_COMMITTED                                                      NTStatus      = 0xC000002D\n\tSTATUS_INVALID_PORT_ATTRIBUTES                                            NTStatus      = 0xC000002E\n\tSTATUS_PORT_MESSAGE_TOO_LONG                                              NTStatus      = 0xC000002F\n\tSTATUS_INVALID_PARAMETER_MIX                                              NTStatus      = 0xC0000030\n\tSTATUS_INVALID_QUOTA_LOWER                                                NTStatus      = 0xC0000031\n\tSTATUS_DISK_CORRUPT_ERROR                                                 NTStatus      = 0xC0000032\n\tSTATUS_OBJECT_NAME_INVALID                                                NTStatus      = 0xC0000033\n\tSTATUS_OBJECT_NAME_NOT_FOUND                                              NTStatus      = 0xC0000034\n\tSTATUS_OBJECT_NAME_COLLISION                                              NTStatus      = 0xC0000035\n\tSTATUS_PORT_DO_NOT_DISTURB                                                NTStatus      = 0xC0000036\n\tSTATUS_PORT_DISCONNECTED                                                  NTStatus      = 0xC0000037\n\tSTATUS_DEVICE_ALREADY_ATTACHED                                            NTStatus      = 0xC0000038\n\tSTATUS_OBJECT_PATH_INVALID                                                NTStatus      = 0xC0000039\n\tSTATUS_OBJECT_PATH_NOT_FOUND                                              NTStatus      = 0xC000003A\n\tSTATUS_OBJECT_PATH_SYNTAX_BAD                                             NTStatus      = 0xC000003B\n\tSTATUS_DATA_OVERRUN                                                       NTStatus      = 0xC000003C\n\tSTATUS_DATA_LATE_ERROR                                                    NTStatus      = 0xC000003D\n\tSTATUS_DATA_ERROR                                                         NTStatus      = 0xC000003E\n\tSTATUS_CRC_ERROR                                                          NTStatus      = 0xC000003F\n\tSTATUS_SECTION_TOO_BIG                                                    NTStatus      = 0xC0000040\n\tSTATUS_PORT_CONNECTION_REFUSED                                            NTStatus      = 0xC0000041\n\tSTATUS_INVALID_PORT_HANDLE                                                NTStatus      = 0xC0000042\n\tSTATUS_SHARING_VIOLATION                                                  NTStatus      = 0xC0000043\n\tSTATUS_QUOTA_EXCEEDED                                                     NTStatus      = 0xC0000044\n\tSTATUS_INVALID_PAGE_PROTECTION                                            NTStatus      = 0xC0000045\n\tSTATUS_MUTANT_NOT_OWNED                                                   NTStatus      = 0xC0000046\n\tSTATUS_SEMAPHORE_LIMIT_EXCEEDED                                           NTStatus      = 0xC0000047\n\tSTATUS_PORT_ALREADY_SET                                                   NTStatus      = 0xC0000048\n\tSTATUS_SECTION_NOT_IMAGE                                                  NTStatus      = 0xC0000049\n\tSTATUS_SUSPEND_COUNT_EXCEEDED                                             NTStatus      = 0xC000004A\n\tSTATUS_THREAD_IS_TERMINATING                                              NTStatus      = 0xC000004B\n\tSTATUS_BAD_WORKING_SET_LIMIT                                              NTStatus      = 0xC000004C\n\tSTATUS_INCOMPATIBLE_FILE_MAP                                              NTStatus      = 0xC000004D\n\tSTATUS_SECTION_PROTECTION                                                 NTStatus      = 0xC000004E\n\tSTATUS_EAS_NOT_SUPPORTED                                                  NTStatus      = 0xC000004F\n\tSTATUS_EA_TOO_LARGE                                                       NTStatus      = 0xC0000050\n\tSTATUS_NONEXISTENT_EA_ENTRY                                               NTStatus      = 0xC0000051\n\tSTATUS_NO_EAS_ON_FILE                                                     NTStatus      = 0xC0000052\n\tSTATUS_EA_CORRUPT_ERROR                                                   NTStatus      = 0xC0000053\n\tSTATUS_FILE_LOCK_CONFLICT                                                 NTStatus      = 0xC0000054\n\tSTATUS_LOCK_NOT_GRANTED                                                   NTStatus      = 0xC0000055\n\tSTATUS_DELETE_PENDING                                                     NTStatus      = 0xC0000056\n\tSTATUS_CTL_FILE_NOT_SUPPORTED                                             NTStatus      = 0xC0000057\n\tSTATUS_UNKNOWN_REVISION                                                   NTStatus      = 0xC0000058\n\tSTATUS_REVISION_MISMATCH                                                  NTStatus      = 0xC0000059\n\tSTATUS_INVALID_OWNER                                                      NTStatus      = 0xC000005A\n\tSTATUS_INVALID_PRIMARY_GROUP                                              NTStatus      = 0xC000005B\n\tSTATUS_NO_IMPERSONATION_TOKEN                                             NTStatus      = 0xC000005C\n\tSTATUS_CANT_DISABLE_MANDATORY                                             NTStatus      = 0xC000005D\n\tSTATUS_NO_LOGON_SERVERS                                                   NTStatus      = 0xC000005E\n\tSTATUS_NO_SUCH_LOGON_SESSION                                              NTStatus      = 0xC000005F\n\tSTATUS_NO_SUCH_PRIVILEGE                                                  NTStatus      = 0xC0000060\n\tSTATUS_PRIVILEGE_NOT_HELD                                                 NTStatus      = 0xC0000061\n\tSTATUS_INVALID_ACCOUNT_NAME                                               NTStatus      = 0xC0000062\n\tSTATUS_USER_EXISTS                                                        NTStatus      = 0xC0000063\n\tSTATUS_NO_SUCH_USER                                                       NTStatus      = 0xC0000064\n\tSTATUS_GROUP_EXISTS                                                       NTStatus      = 0xC0000065\n\tSTATUS_NO_SUCH_GROUP                                                      NTStatus      = 0xC0000066\n\tSTATUS_MEMBER_IN_GROUP                                                    NTStatus      = 0xC0000067\n\tSTATUS_MEMBER_NOT_IN_GROUP                                                NTStatus      = 0xC0000068\n\tSTATUS_LAST_ADMIN                                                         NTStatus      = 0xC0000069\n\tSTATUS_WRONG_PASSWORD                                                     NTStatus      = 0xC000006A\n\tSTATUS_ILL_FORMED_PASSWORD                                                NTStatus      = 0xC000006B\n\tSTATUS_PASSWORD_RESTRICTION                                               NTStatus      = 0xC000006C\n\tSTATUS_LOGON_FAILURE                                                      NTStatus      = 0xC000006D\n\tSTATUS_ACCOUNT_RESTRICTION                                                NTStatus      = 0xC000006E\n\tSTATUS_INVALID_LOGON_HOURS                                                NTStatus      = 0xC000006F\n\tSTATUS_INVALID_WORKSTATION                                                NTStatus      = 0xC0000070\n\tSTATUS_PASSWORD_EXPIRED                                                   NTStatus      = 0xC0000071\n\tSTATUS_ACCOUNT_DISABLED                                                   NTStatus      = 0xC0000072\n\tSTATUS_NONE_MAPPED                                                        NTStatus      = 0xC0000073\n\tSTATUS_TOO_MANY_LUIDS_REQUESTED                                           NTStatus      = 0xC0000074\n\tSTATUS_LUIDS_EXHAUSTED                                                    NTStatus      = 0xC0000075\n\tSTATUS_INVALID_SUB_AUTHORITY                                              NTStatus      = 0xC0000076\n\tSTATUS_INVALID_ACL                                                        NTStatus      = 0xC0000077\n\tSTATUS_INVALID_SID                                                        NTStatus      = 0xC0000078\n\tSTATUS_INVALID_SECURITY_DESCR                                             NTStatus      = 0xC0000079\n\tSTATUS_PROCEDURE_NOT_FOUND                                                NTStatus      = 0xC000007A\n\tSTATUS_INVALID_IMAGE_FORMAT                                               NTStatus      = 0xC000007B\n\tSTATUS_NO_TOKEN                                                           NTStatus      = 0xC000007C\n\tSTATUS_BAD_INHERITANCE_ACL                                                NTStatus      = 0xC000007D\n\tSTATUS_RANGE_NOT_LOCKED                                                   NTStatus      = 0xC000007E\n\tSTATUS_DISK_FULL                                                          NTStatus      = 0xC000007F\n\tSTATUS_SERVER_DISABLED                                                    NTStatus      = 0xC0000080\n\tSTATUS_SERVER_NOT_DISABLED                                                NTStatus      = 0xC0000081\n\tSTATUS_TOO_MANY_GUIDS_REQUESTED                                           NTStatus      = 0xC0000082\n\tSTATUS_GUIDS_EXHAUSTED                                                    NTStatus      = 0xC0000083\n\tSTATUS_INVALID_ID_AUTHORITY                                               NTStatus      = 0xC0000084\n\tSTATUS_AGENTS_EXHAUSTED                                                   NTStatus      = 0xC0000085\n\tSTATUS_INVALID_VOLUME_LABEL                                               NTStatus      = 0xC0000086\n\tSTATUS_SECTION_NOT_EXTENDED                                               NTStatus      = 0xC0000087\n\tSTATUS_NOT_MAPPED_DATA                                                    NTStatus      = 0xC0000088\n\tSTATUS_RESOURCE_DATA_NOT_FOUND                                            NTStatus      = 0xC0000089\n\tSTATUS_RESOURCE_TYPE_NOT_FOUND                                            NTStatus      = 0xC000008A\n\tSTATUS_RESOURCE_NAME_NOT_FOUND                                            NTStatus      = 0xC000008B\n\tSTATUS_ARRAY_BOUNDS_EXCEEDED                                              NTStatus      = 0xC000008C\n\tSTATUS_FLOAT_DENORMAL_OPERAND                                             NTStatus      = 0xC000008D\n\tSTATUS_FLOAT_DIVIDE_BY_ZERO                                               NTStatus      = 0xC000008E\n\tSTATUS_FLOAT_INEXACT_RESULT                                               NTStatus      = 0xC000008F\n\tSTATUS_FLOAT_INVALID_OPERATION                                            NTStatus      = 0xC0000090\n\tSTATUS_FLOAT_OVERFLOW                                                     NTStatus      = 0xC0000091\n\tSTATUS_FLOAT_STACK_CHECK                                                  NTStatus      = 0xC0000092\n\tSTATUS_FLOAT_UNDERFLOW                                                    NTStatus      = 0xC0000093\n\tSTATUS_INTEGER_DIVIDE_BY_ZERO                                             NTStatus      = 0xC0000094\n\tSTATUS_INTEGER_OVERFLOW                                                   NTStatus      = 0xC0000095\n\tSTATUS_PRIVILEGED_INSTRUCTION                                             NTStatus      = 0xC0000096\n\tSTATUS_TOO_MANY_PAGING_FILES                                              NTStatus      = 0xC0000097\n\tSTATUS_FILE_INVALID                                                       NTStatus      = 0xC0000098\n\tSTATUS_ALLOTTED_SPACE_EXCEEDED                                            NTStatus      = 0xC0000099\n\tSTATUS_INSUFFICIENT_RESOURCES                                             NTStatus      = 0xC000009A\n\tSTATUS_DFS_EXIT_PATH_FOUND                                                NTStatus      = 0xC000009B\n\tSTATUS_DEVICE_DATA_ERROR                                                  NTStatus      = 0xC000009C\n\tSTATUS_DEVICE_NOT_CONNECTED                                               NTStatus      = 0xC000009D\n\tSTATUS_DEVICE_POWER_FAILURE                                               NTStatus      = 0xC000009E\n\tSTATUS_FREE_VM_NOT_AT_BASE                                                NTStatus      = 0xC000009F\n\tSTATUS_MEMORY_NOT_ALLOCATED                                               NTStatus      = 0xC00000A0\n\tSTATUS_WORKING_SET_QUOTA                                                  NTStatus      = 0xC00000A1\n\tSTATUS_MEDIA_WRITE_PROTECTED                                              NTStatus      = 0xC00000A2\n\tSTATUS_DEVICE_NOT_READY                                                   NTStatus      = 0xC00000A3\n\tSTATUS_INVALID_GROUP_ATTRIBUTES                                           NTStatus      = 0xC00000A4\n\tSTATUS_BAD_IMPERSONATION_LEVEL                                            NTStatus      = 0xC00000A5\n\tSTATUS_CANT_OPEN_ANONYMOUS                                                NTStatus      = 0xC00000A6\n\tSTATUS_BAD_VALIDATION_CLASS                                               NTStatus      = 0xC00000A7\n\tSTATUS_BAD_TOKEN_TYPE                                                     NTStatus      = 0xC00000A8\n\tSTATUS_BAD_MASTER_BOOT_RECORD                                             NTStatus      = 0xC00000A9\n\tSTATUS_INSTRUCTION_MISALIGNMENT                                           NTStatus      = 0xC00000AA\n\tSTATUS_INSTANCE_NOT_AVAILABLE                                             NTStatus      = 0xC00000AB\n\tSTATUS_PIPE_NOT_AVAILABLE                                                 NTStatus      = 0xC00000AC\n\tSTATUS_INVALID_PIPE_STATE                                                 NTStatus      = 0xC00000AD\n\tSTATUS_PIPE_BUSY                                                          NTStatus      = 0xC00000AE\n\tSTATUS_ILLEGAL_FUNCTION                                                   NTStatus      = 0xC00000AF\n\tSTATUS_PIPE_DISCONNECTED                                                  NTStatus      = 0xC00000B0\n\tSTATUS_PIPE_CLOSING                                                       NTStatus      = 0xC00000B1\n\tSTATUS_PIPE_CONNECTED                                                     NTStatus      = 0xC00000B2\n\tSTATUS_PIPE_LISTENING                                                     NTStatus      = 0xC00000B3\n\tSTATUS_INVALID_READ_MODE                                                  NTStatus      = 0xC00000B4\n\tSTATUS_IO_TIMEOUT                                                         NTStatus      = 0xC00000B5\n\tSTATUS_FILE_FORCED_CLOSED                                                 NTStatus      = 0xC00000B6\n\tSTATUS_PROFILING_NOT_STARTED                                              NTStatus      = 0xC00000B7\n\tSTATUS_PROFILING_NOT_STOPPED                                              NTStatus      = 0xC00000B8\n\tSTATUS_COULD_NOT_INTERPRET                                                NTStatus      = 0xC00000B9\n\tSTATUS_FILE_IS_A_DIRECTORY                                                NTStatus      = 0xC00000BA\n\tSTATUS_NOT_SUPPORTED                                                      NTStatus      = 0xC00000BB\n\tSTATUS_REMOTE_NOT_LISTENING                                               NTStatus      = 0xC00000BC\n\tSTATUS_DUPLICATE_NAME                                                     NTStatus      = 0xC00000BD\n\tSTATUS_BAD_NETWORK_PATH                                                   NTStatus      = 0xC00000BE\n\tSTATUS_NETWORK_BUSY                                                       NTStatus      = 0xC00000BF\n\tSTATUS_DEVICE_DOES_NOT_EXIST                                              NTStatus      = 0xC00000C0\n\tSTATUS_TOO_MANY_COMMANDS                                                  NTStatus      = 0xC00000C1\n\tSTATUS_ADAPTER_HARDWARE_ERROR                                             NTStatus      = 0xC00000C2\n\tSTATUS_INVALID_NETWORK_RESPONSE                                           NTStatus      = 0xC00000C3\n\tSTATUS_UNEXPECTED_NETWORK_ERROR                                           NTStatus      = 0xC00000C4\n\tSTATUS_BAD_REMOTE_ADAPTER                                                 NTStatus      = 0xC00000C5\n\tSTATUS_PRINT_QUEUE_FULL                                                   NTStatus      = 0xC00000C6\n\tSTATUS_NO_SPOOL_SPACE                                                     NTStatus      = 0xC00000C7\n\tSTATUS_PRINT_CANCELLED                                                    NTStatus      = 0xC00000C8\n\tSTATUS_NETWORK_NAME_DELETED                                               NTStatus      = 0xC00000C9\n\tSTATUS_NETWORK_ACCESS_DENIED                                              NTStatus      = 0xC00000CA\n\tSTATUS_BAD_DEVICE_TYPE                                                    NTStatus      = 0xC00000CB\n\tSTATUS_BAD_NETWORK_NAME                                                   NTStatus      = 0xC00000CC\n\tSTATUS_TOO_MANY_NAMES                                                     NTStatus      = 0xC00000CD\n\tSTATUS_TOO_MANY_SESSIONS                                                  NTStatus      = 0xC00000CE\n\tSTATUS_SHARING_PAUSED                                                     NTStatus      = 0xC00000CF\n\tSTATUS_REQUEST_NOT_ACCEPTED                                               NTStatus      = 0xC00000D0\n\tSTATUS_REDIRECTOR_PAUSED                                                  NTStatus      = 0xC00000D1\n\tSTATUS_NET_WRITE_FAULT                                                    NTStatus      = 0xC00000D2\n\tSTATUS_PROFILING_AT_LIMIT                                                 NTStatus      = 0xC00000D3\n\tSTATUS_NOT_SAME_DEVICE                                                    NTStatus      = 0xC00000D4\n\tSTATUS_FILE_RENAMED                                                       NTStatus      = 0xC00000D5\n\tSTATUS_VIRTUAL_CIRCUIT_CLOSED                                             NTStatus      = 0xC00000D6\n\tSTATUS_NO_SECURITY_ON_OBJECT                                              NTStatus      = 0xC00000D7\n\tSTATUS_CANT_WAIT                                                          NTStatus      = 0xC00000D8\n\tSTATUS_PIPE_EMPTY                                                         NTStatus      = 0xC00000D9\n\tSTATUS_CANT_ACCESS_DOMAIN_INFO                                            NTStatus      = 0xC00000DA\n\tSTATUS_CANT_TERMINATE_SELF                                                NTStatus      = 0xC00000DB\n\tSTATUS_INVALID_SERVER_STATE                                               NTStatus      = 0xC00000DC\n\tSTATUS_INVALID_DOMAIN_STATE                                               NTStatus      = 0xC00000DD\n\tSTATUS_INVALID_DOMAIN_ROLE                                                NTStatus      = 0xC00000DE\n\tSTATUS_NO_SUCH_DOMAIN                                                     NTStatus      = 0xC00000DF\n\tSTATUS_DOMAIN_EXISTS                                                      NTStatus      = 0xC00000E0\n\tSTATUS_DOMAIN_LIMIT_EXCEEDED                                              NTStatus      = 0xC00000E1\n\tSTATUS_OPLOCK_NOT_GRANTED                                                 NTStatus      = 0xC00000E2\n\tSTATUS_INVALID_OPLOCK_PROTOCOL                                            NTStatus      = 0xC00000E3\n\tSTATUS_INTERNAL_DB_CORRUPTION                                             NTStatus      = 0xC00000E4\n\tSTATUS_INTERNAL_ERROR                                                     NTStatus      = 0xC00000E5\n\tSTATUS_GENERIC_NOT_MAPPED                                                 NTStatus      = 0xC00000E6\n\tSTATUS_BAD_DESCRIPTOR_FORMAT                                              NTStatus      = 0xC00000E7\n\tSTATUS_INVALID_USER_BUFFER                                                NTStatus      = 0xC00000E8\n\tSTATUS_UNEXPECTED_IO_ERROR                                                NTStatus      = 0xC00000E9\n\tSTATUS_UNEXPECTED_MM_CREATE_ERR                                           NTStatus      = 0xC00000EA\n\tSTATUS_UNEXPECTED_MM_MAP_ERROR                                            NTStatus      = 0xC00000EB\n\tSTATUS_UNEXPECTED_MM_EXTEND_ERR                                           NTStatus      = 0xC00000EC\n\tSTATUS_NOT_LOGON_PROCESS                                                  NTStatus      = 0xC00000ED\n\tSTATUS_LOGON_SESSION_EXISTS                                               NTStatus      = 0xC00000EE\n\tSTATUS_INVALID_PARAMETER_1                                                NTStatus      = 0xC00000EF\n\tSTATUS_INVALID_PARAMETER_2                                                NTStatus      = 0xC00000F0\n\tSTATUS_INVALID_PARAMETER_3                                                NTStatus      = 0xC00000F1\n\tSTATUS_INVALID_PARAMETER_4                                                NTStatus      = 0xC00000F2\n\tSTATUS_INVALID_PARAMETER_5                                                NTStatus      = 0xC00000F3\n\tSTATUS_INVALID_PARAMETER_6                                                NTStatus      = 0xC00000F4\n\tSTATUS_INVALID_PARAMETER_7                                                NTStatus      = 0xC00000F5\n\tSTATUS_INVALID_PARAMETER_8                                                NTStatus      = 0xC00000F6\n\tSTATUS_INVALID_PARAMETER_9                                                NTStatus      = 0xC00000F7\n\tSTATUS_INVALID_PARAMETER_10                                               NTStatus      = 0xC00000F8\n\tSTATUS_INVALID_PARAMETER_11                                               NTStatus      = 0xC00000F9\n\tSTATUS_INVALID_PARAMETER_12                                               NTStatus      = 0xC00000FA\n\tSTATUS_REDIRECTOR_NOT_STARTED                                             NTStatus      = 0xC00000FB\n\tSTATUS_REDIRECTOR_STARTED                                                 NTStatus      = 0xC00000FC\n\tSTATUS_STACK_OVERFLOW                                                     NTStatus      = 0xC00000FD\n\tSTATUS_NO_SUCH_PACKAGE                                                    NTStatus      = 0xC00000FE\n\tSTATUS_BAD_FUNCTION_TABLE                                                 NTStatus      = 0xC00000FF\n\tSTATUS_VARIABLE_NOT_FOUND                                                 NTStatus      = 0xC0000100\n\tSTATUS_DIRECTORY_NOT_EMPTY                                                NTStatus      = 0xC0000101\n\tSTATUS_FILE_CORRUPT_ERROR                                                 NTStatus      = 0xC0000102\n\tSTATUS_NOT_A_DIRECTORY                                                    NTStatus      = 0xC0000103\n\tSTATUS_BAD_LOGON_SESSION_STATE                                            NTStatus      = 0xC0000104\n\tSTATUS_LOGON_SESSION_COLLISION                                            NTStatus      = 0xC0000105\n\tSTATUS_NAME_TOO_LONG                                                      NTStatus      = 0xC0000106\n\tSTATUS_FILES_OPEN                                                         NTStatus      = 0xC0000107\n\tSTATUS_CONNECTION_IN_USE                                                  NTStatus      = 0xC0000108\n\tSTATUS_MESSAGE_NOT_FOUND                                                  NTStatus      = 0xC0000109\n\tSTATUS_PROCESS_IS_TERMINATING                                             NTStatus      = 0xC000010A\n\tSTATUS_INVALID_LOGON_TYPE                                                 NTStatus      = 0xC000010B\n\tSTATUS_NO_GUID_TRANSLATION                                                NTStatus      = 0xC000010C\n\tSTATUS_CANNOT_IMPERSONATE                                                 NTStatus      = 0xC000010D\n\tSTATUS_IMAGE_ALREADY_LOADED                                               NTStatus      = 0xC000010E\n\tSTATUS_ABIOS_NOT_PRESENT                                                  NTStatus      = 0xC000010F\n\tSTATUS_ABIOS_LID_NOT_EXIST                                                NTStatus      = 0xC0000110\n\tSTATUS_ABIOS_LID_ALREADY_OWNED                                            NTStatus      = 0xC0000111\n\tSTATUS_ABIOS_NOT_LID_OWNER                                                NTStatus      = 0xC0000112\n\tSTATUS_ABIOS_INVALID_COMMAND                                              NTStatus      = 0xC0000113\n\tSTATUS_ABIOS_INVALID_LID                                                  NTStatus      = 0xC0000114\n\tSTATUS_ABIOS_SELECTOR_NOT_AVAILABLE                                       NTStatus      = 0xC0000115\n\tSTATUS_ABIOS_INVALID_SELECTOR                                             NTStatus      = 0xC0000116\n\tSTATUS_NO_LDT                                                             NTStatus      = 0xC0000117\n\tSTATUS_INVALID_LDT_SIZE                                                   NTStatus      = 0xC0000118\n\tSTATUS_INVALID_LDT_OFFSET                                                 NTStatus      = 0xC0000119\n\tSTATUS_INVALID_LDT_DESCRIPTOR                                             NTStatus      = 0xC000011A\n\tSTATUS_INVALID_IMAGE_NE_FORMAT                                            NTStatus      = 0xC000011B\n\tSTATUS_RXACT_INVALID_STATE                                                NTStatus      = 0xC000011C\n\tSTATUS_RXACT_COMMIT_FAILURE                                               NTStatus      = 0xC000011D\n\tSTATUS_MAPPED_FILE_SIZE_ZERO                                              NTStatus      = 0xC000011E\n\tSTATUS_TOO_MANY_OPENED_FILES                                              NTStatus      = 0xC000011F\n\tSTATUS_CANCELLED                                                          NTStatus      = 0xC0000120\n\tSTATUS_CANNOT_DELETE                                                      NTStatus      = 0xC0000121\n\tSTATUS_INVALID_COMPUTER_NAME                                              NTStatus      = 0xC0000122\n\tSTATUS_FILE_DELETED                                                       NTStatus      = 0xC0000123\n\tSTATUS_SPECIAL_ACCOUNT                                                    NTStatus      = 0xC0000124\n\tSTATUS_SPECIAL_GROUP                                                      NTStatus      = 0xC0000125\n\tSTATUS_SPECIAL_USER                                                       NTStatus      = 0xC0000126\n\tSTATUS_MEMBERS_PRIMARY_GROUP                                              NTStatus      = 0xC0000127\n\tSTATUS_FILE_CLOSED                                                        NTStatus      = 0xC0000128\n\tSTATUS_TOO_MANY_THREADS                                                   NTStatus      = 0xC0000129\n\tSTATUS_THREAD_NOT_IN_PROCESS                                              NTStatus      = 0xC000012A\n\tSTATUS_TOKEN_ALREADY_IN_USE                                               NTStatus      = 0xC000012B\n\tSTATUS_PAGEFILE_QUOTA_EXCEEDED                                            NTStatus      = 0xC000012C\n\tSTATUS_COMMITMENT_LIMIT                                                   NTStatus      = 0xC000012D\n\tSTATUS_INVALID_IMAGE_LE_FORMAT                                            NTStatus      = 0xC000012E\n\tSTATUS_INVALID_IMAGE_NOT_MZ                                               NTStatus      = 0xC000012F\n\tSTATUS_INVALID_IMAGE_PROTECT                                              NTStatus      = 0xC0000130\n\tSTATUS_INVALID_IMAGE_WIN_16                                               NTStatus      = 0xC0000131\n\tSTATUS_LOGON_SERVER_CONFLICT                                              NTStatus      = 0xC0000132\n\tSTATUS_TIME_DIFFERENCE_AT_DC                                              NTStatus      = 0xC0000133\n\tSTATUS_SYNCHRONIZATION_REQUIRED                                           NTStatus      = 0xC0000134\n\tSTATUS_DLL_NOT_FOUND                                                      NTStatus      = 0xC0000135\n\tSTATUS_OPEN_FAILED                                                        NTStatus      = 0xC0000136\n\tSTATUS_IO_PRIVILEGE_FAILED                                                NTStatus      = 0xC0000137\n\tSTATUS_ORDINAL_NOT_FOUND                                                  NTStatus      = 0xC0000138\n\tSTATUS_ENTRYPOINT_NOT_FOUND                                               NTStatus      = 0xC0000139\n\tSTATUS_CONTROL_C_EXIT                                                     NTStatus      = 0xC000013A\n\tSTATUS_LOCAL_DISCONNECT                                                   NTStatus      = 0xC000013B\n\tSTATUS_REMOTE_DISCONNECT                                                  NTStatus      = 0xC000013C\n\tSTATUS_REMOTE_RESOURCES                                                   NTStatus      = 0xC000013D\n\tSTATUS_LINK_FAILED                                                        NTStatus      = 0xC000013E\n\tSTATUS_LINK_TIMEOUT                                                       NTStatus      = 0xC000013F\n\tSTATUS_INVALID_CONNECTION                                                 NTStatus      = 0xC0000140\n\tSTATUS_INVALID_ADDRESS                                                    NTStatus      = 0xC0000141\n\tSTATUS_DLL_INIT_FAILED                                                    NTStatus      = 0xC0000142\n\tSTATUS_MISSING_SYSTEMFILE                                                 NTStatus      = 0xC0000143\n\tSTATUS_UNHANDLED_EXCEPTION                                                NTStatus      = 0xC0000144\n\tSTATUS_APP_INIT_FAILURE                                                   NTStatus      = 0xC0000145\n\tSTATUS_PAGEFILE_CREATE_FAILED                                             NTStatus      = 0xC0000146\n\tSTATUS_NO_PAGEFILE                                                        NTStatus      = 0xC0000147\n\tSTATUS_INVALID_LEVEL                                                      NTStatus      = 0xC0000148\n\tSTATUS_WRONG_PASSWORD_CORE                                                NTStatus      = 0xC0000149\n\tSTATUS_ILLEGAL_FLOAT_CONTEXT                                              NTStatus      = 0xC000014A\n\tSTATUS_PIPE_BROKEN                                                        NTStatus      = 0xC000014B\n\tSTATUS_REGISTRY_CORRUPT                                                   NTStatus      = 0xC000014C\n\tSTATUS_REGISTRY_IO_FAILED                                                 NTStatus      = 0xC000014D\n\tSTATUS_NO_EVENT_PAIR                                                      NTStatus      = 0xC000014E\n\tSTATUS_UNRECOGNIZED_VOLUME                                                NTStatus      = 0xC000014F\n\tSTATUS_SERIAL_NO_DEVICE_INITED                                            NTStatus      = 0xC0000150\n\tSTATUS_NO_SUCH_ALIAS                                                      NTStatus      = 0xC0000151\n\tSTATUS_MEMBER_NOT_IN_ALIAS                                                NTStatus      = 0xC0000152\n\tSTATUS_MEMBER_IN_ALIAS                                                    NTStatus      = 0xC0000153\n\tSTATUS_ALIAS_EXISTS                                                       NTStatus      = 0xC0000154\n\tSTATUS_LOGON_NOT_GRANTED                                                  NTStatus      = 0xC0000155\n\tSTATUS_TOO_MANY_SECRETS                                                   NTStatus      = 0xC0000156\n\tSTATUS_SECRET_TOO_LONG                                                    NTStatus      = 0xC0000157\n\tSTATUS_INTERNAL_DB_ERROR                                                  NTStatus      = 0xC0000158\n\tSTATUS_FULLSCREEN_MODE                                                    NTStatus      = 0xC0000159\n\tSTATUS_TOO_MANY_CONTEXT_IDS                                               NTStatus      = 0xC000015A\n\tSTATUS_LOGON_TYPE_NOT_GRANTED                                             NTStatus      = 0xC000015B\n\tSTATUS_NOT_REGISTRY_FILE                                                  NTStatus      = 0xC000015C\n\tSTATUS_NT_CROSS_ENCRYPTION_REQUIRED                                       NTStatus      = 0xC000015D\n\tSTATUS_DOMAIN_CTRLR_CONFIG_ERROR                                          NTStatus      = 0xC000015E\n\tSTATUS_FT_MISSING_MEMBER                                                  NTStatus      = 0xC000015F\n\tSTATUS_ILL_FORMED_SERVICE_ENTRY                                           NTStatus      = 0xC0000160\n\tSTATUS_ILLEGAL_CHARACTER                                                  NTStatus      = 0xC0000161\n\tSTATUS_UNMAPPABLE_CHARACTER                                               NTStatus      = 0xC0000162\n\tSTATUS_UNDEFINED_CHARACTER                                                NTStatus      = 0xC0000163\n\tSTATUS_FLOPPY_VOLUME                                                      NTStatus      = 0xC0000164\n\tSTATUS_FLOPPY_ID_MARK_NOT_FOUND                                           NTStatus      = 0xC0000165\n\tSTATUS_FLOPPY_WRONG_CYLINDER                                              NTStatus      = 0xC0000166\n\tSTATUS_FLOPPY_UNKNOWN_ERROR                                               NTStatus      = 0xC0000167\n\tSTATUS_FLOPPY_BAD_REGISTERS                                               NTStatus      = 0xC0000168\n\tSTATUS_DISK_RECALIBRATE_FAILED                                            NTStatus      = 0xC0000169\n\tSTATUS_DISK_OPERATION_FAILED                                              NTStatus      = 0xC000016A\n\tSTATUS_DISK_RESET_FAILED                                                  NTStatus      = 0xC000016B\n\tSTATUS_SHARED_IRQ_BUSY                                                    NTStatus      = 0xC000016C\n\tSTATUS_FT_ORPHANING                                                       NTStatus      = 0xC000016D\n\tSTATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT                                   NTStatus      = 0xC000016E\n\tSTATUS_PARTITION_FAILURE                                                  NTStatus      = 0xC0000172\n\tSTATUS_INVALID_BLOCK_LENGTH                                               NTStatus      = 0xC0000173\n\tSTATUS_DEVICE_NOT_PARTITIONED                                             NTStatus      = 0xC0000174\n\tSTATUS_UNABLE_TO_LOCK_MEDIA                                               NTStatus      = 0xC0000175\n\tSTATUS_UNABLE_TO_UNLOAD_MEDIA                                             NTStatus      = 0xC0000176\n\tSTATUS_EOM_OVERFLOW                                                       NTStatus      = 0xC0000177\n\tSTATUS_NO_MEDIA                                                           NTStatus      = 0xC0000178\n\tSTATUS_NO_SUCH_MEMBER                                                     NTStatus      = 0xC000017A\n\tSTATUS_INVALID_MEMBER                                                     NTStatus      = 0xC000017B\n\tSTATUS_KEY_DELETED                                                        NTStatus      = 0xC000017C\n\tSTATUS_NO_LOG_SPACE                                                       NTStatus      = 0xC000017D\n\tSTATUS_TOO_MANY_SIDS                                                      NTStatus      = 0xC000017E\n\tSTATUS_LM_CROSS_ENCRYPTION_REQUIRED                                       NTStatus      = 0xC000017F\n\tSTATUS_KEY_HAS_CHILDREN                                                   NTStatus      = 0xC0000180\n\tSTATUS_CHILD_MUST_BE_VOLATILE                                             NTStatus      = 0xC0000181\n\tSTATUS_DEVICE_CONFIGURATION_ERROR                                         NTStatus      = 0xC0000182\n\tSTATUS_DRIVER_INTERNAL_ERROR                                              NTStatus      = 0xC0000183\n\tSTATUS_INVALID_DEVICE_STATE                                               NTStatus      = 0xC0000184\n\tSTATUS_IO_DEVICE_ERROR                                                    NTStatus      = 0xC0000185\n\tSTATUS_DEVICE_PROTOCOL_ERROR                                              NTStatus      = 0xC0000186\n\tSTATUS_BACKUP_CONTROLLER                                                  NTStatus      = 0xC0000187\n\tSTATUS_LOG_FILE_FULL                                                      NTStatus      = 0xC0000188\n\tSTATUS_TOO_LATE                                                           NTStatus      = 0xC0000189\n\tSTATUS_NO_TRUST_LSA_SECRET                                                NTStatus      = 0xC000018A\n\tSTATUS_NO_TRUST_SAM_ACCOUNT                                               NTStatus      = 0xC000018B\n\tSTATUS_TRUSTED_DOMAIN_FAILURE                                             NTStatus      = 0xC000018C\n\tSTATUS_TRUSTED_RELATIONSHIP_FAILURE                                       NTStatus      = 0xC000018D\n\tSTATUS_EVENTLOG_FILE_CORRUPT                                              NTStatus      = 0xC000018E\n\tSTATUS_EVENTLOG_CANT_START                                                NTStatus      = 0xC000018F\n\tSTATUS_TRUST_FAILURE                                                      NTStatus      = 0xC0000190\n\tSTATUS_MUTANT_LIMIT_EXCEEDED                                              NTStatus      = 0xC0000191\n\tSTATUS_NETLOGON_NOT_STARTED                                               NTStatus      = 0xC0000192\n\tSTATUS_ACCOUNT_EXPIRED                                                    NTStatus      = 0xC0000193\n\tSTATUS_POSSIBLE_DEADLOCK                                                  NTStatus      = 0xC0000194\n\tSTATUS_NETWORK_CREDENTIAL_CONFLICT                                        NTStatus      = 0xC0000195\n\tSTATUS_REMOTE_SESSION_LIMIT                                               NTStatus      = 0xC0000196\n\tSTATUS_EVENTLOG_FILE_CHANGED                                              NTStatus      = 0xC0000197\n\tSTATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT                                  NTStatus      = 0xC0000198\n\tSTATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT                                  NTStatus      = 0xC0000199\n\tSTATUS_NOLOGON_SERVER_TRUST_ACCOUNT                                       NTStatus      = 0xC000019A\n\tSTATUS_DOMAIN_TRUST_INCONSISTENT                                          NTStatus      = 0xC000019B\n\tSTATUS_FS_DRIVER_REQUIRED                                                 NTStatus      = 0xC000019C\n\tSTATUS_IMAGE_ALREADY_LOADED_AS_DLL                                        NTStatus      = 0xC000019D\n\tSTATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING               NTStatus      = 0xC000019E\n\tSTATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME                                  NTStatus      = 0xC000019F\n\tSTATUS_SECURITY_STREAM_IS_INCONSISTENT                                    NTStatus      = 0xC00001A0\n\tSTATUS_INVALID_LOCK_RANGE                                                 NTStatus      = 0xC00001A1\n\tSTATUS_INVALID_ACE_CONDITION                                              NTStatus      = 0xC00001A2\n\tSTATUS_IMAGE_SUBSYSTEM_NOT_PRESENT                                        NTStatus      = 0xC00001A3\n\tSTATUS_NOTIFICATION_GUID_ALREADY_DEFINED                                  NTStatus      = 0xC00001A4\n\tSTATUS_INVALID_EXCEPTION_HANDLER                                          NTStatus      = 0xC00001A5\n\tSTATUS_DUPLICATE_PRIVILEGES                                               NTStatus      = 0xC00001A6\n\tSTATUS_NOT_ALLOWED_ON_SYSTEM_FILE                                         NTStatus      = 0xC00001A7\n\tSTATUS_REPAIR_NEEDED                                                      NTStatus      = 0xC00001A8\n\tSTATUS_QUOTA_NOT_ENABLED                                                  NTStatus      = 0xC00001A9\n\tSTATUS_NO_APPLICATION_PACKAGE                                             NTStatus      = 0xC00001AA\n\tSTATUS_FILE_METADATA_OPTIMIZATION_IN_PROGRESS                             NTStatus      = 0xC00001AB\n\tSTATUS_NOT_SAME_OBJECT                                                    NTStatus      = 0xC00001AC\n\tSTATUS_FATAL_MEMORY_EXHAUSTION                                            NTStatus      = 0xC00001AD\n\tSTATUS_ERROR_PROCESS_NOT_IN_JOB                                           NTStatus      = 0xC00001AE\n\tSTATUS_CPU_SET_INVALID                                                    NTStatus      = 0xC00001AF\n\tSTATUS_IO_DEVICE_INVALID_DATA                                             NTStatus      = 0xC00001B0\n\tSTATUS_IO_UNALIGNED_WRITE                                                 NTStatus      = 0xC00001B1\n\tSTATUS_NETWORK_OPEN_RESTRICTION                                           NTStatus      = 0xC0000201\n\tSTATUS_NO_USER_SESSION_KEY                                                NTStatus      = 0xC0000202\n\tSTATUS_USER_SESSION_DELETED                                               NTStatus      = 0xC0000203\n\tSTATUS_RESOURCE_LANG_NOT_FOUND                                            NTStatus      = 0xC0000204\n\tSTATUS_INSUFF_SERVER_RESOURCES                                            NTStatus      = 0xC0000205\n\tSTATUS_INVALID_BUFFER_SIZE                                                NTStatus      = 0xC0000206\n\tSTATUS_INVALID_ADDRESS_COMPONENT                                          NTStatus      = 0xC0000207\n\tSTATUS_INVALID_ADDRESS_WILDCARD                                           NTStatus      = 0xC0000208\n\tSTATUS_TOO_MANY_ADDRESSES                                                 NTStatus      = 0xC0000209\n\tSTATUS_ADDRESS_ALREADY_EXISTS                                             NTStatus      = 0xC000020A\n\tSTATUS_ADDRESS_CLOSED                                                     NTStatus      = 0xC000020B\n\tSTATUS_CONNECTION_DISCONNECTED                                            NTStatus      = 0xC000020C\n\tSTATUS_CONNECTION_RESET                                                   NTStatus      = 0xC000020D\n\tSTATUS_TOO_MANY_NODES                                                     NTStatus      = 0xC000020E\n\tSTATUS_TRANSACTION_ABORTED                                                NTStatus      = 0xC000020F\n\tSTATUS_TRANSACTION_TIMED_OUT                                              NTStatus      = 0xC0000210\n\tSTATUS_TRANSACTION_NO_RELEASE                                             NTStatus      = 0xC0000211\n\tSTATUS_TRANSACTION_NO_MATCH                                               NTStatus      = 0xC0000212\n\tSTATUS_TRANSACTION_RESPONDED                                              NTStatus      = 0xC0000213\n\tSTATUS_TRANSACTION_INVALID_ID                                             NTStatus      = 0xC0000214\n\tSTATUS_TRANSACTION_INVALID_TYPE                                           NTStatus      = 0xC0000215\n\tSTATUS_NOT_SERVER_SESSION                                                 NTStatus      = 0xC0000216\n\tSTATUS_NOT_CLIENT_SESSION                                                 NTStatus      = 0xC0000217\n\tSTATUS_CANNOT_LOAD_REGISTRY_FILE                                          NTStatus      = 0xC0000218\n\tSTATUS_DEBUG_ATTACH_FAILED                                                NTStatus      = 0xC0000219\n\tSTATUS_SYSTEM_PROCESS_TERMINATED                                          NTStatus      = 0xC000021A\n\tSTATUS_DATA_NOT_ACCEPTED                                                  NTStatus      = 0xC000021B\n\tSTATUS_NO_BROWSER_SERVERS_FOUND                                           NTStatus      = 0xC000021C\n\tSTATUS_VDM_HARD_ERROR                                                     NTStatus      = 0xC000021D\n\tSTATUS_DRIVER_CANCEL_TIMEOUT                                              NTStatus      = 0xC000021E\n\tSTATUS_REPLY_MESSAGE_MISMATCH                                             NTStatus      = 0xC000021F\n\tSTATUS_MAPPED_ALIGNMENT                                                   NTStatus      = 0xC0000220\n\tSTATUS_IMAGE_CHECKSUM_MISMATCH                                            NTStatus      = 0xC0000221\n\tSTATUS_LOST_WRITEBEHIND_DATA                                              NTStatus      = 0xC0000222\n\tSTATUS_CLIENT_SERVER_PARAMETERS_INVALID                                   NTStatus      = 0xC0000223\n\tSTATUS_PASSWORD_MUST_CHANGE                                               NTStatus      = 0xC0000224\n\tSTATUS_NOT_FOUND                                                          NTStatus      = 0xC0000225\n\tSTATUS_NOT_TINY_STREAM                                                    NTStatus      = 0xC0000226\n\tSTATUS_RECOVERY_FAILURE                                                   NTStatus      = 0xC0000227\n\tSTATUS_STACK_OVERFLOW_READ                                                NTStatus      = 0xC0000228\n\tSTATUS_FAIL_CHECK                                                         NTStatus      = 0xC0000229\n\tSTATUS_DUPLICATE_OBJECTID                                                 NTStatus      = 0xC000022A\n\tSTATUS_OBJECTID_EXISTS                                                    NTStatus      = 0xC000022B\n\tSTATUS_CONVERT_TO_LARGE                                                   NTStatus      = 0xC000022C\n\tSTATUS_RETRY                                                              NTStatus      = 0xC000022D\n\tSTATUS_FOUND_OUT_OF_SCOPE                                                 NTStatus      = 0xC000022E\n\tSTATUS_ALLOCATE_BUCKET                                                    NTStatus      = 0xC000022F\n\tSTATUS_PROPSET_NOT_FOUND                                                  NTStatus      = 0xC0000230\n\tSTATUS_MARSHALL_OVERFLOW                                                  NTStatus      = 0xC0000231\n\tSTATUS_INVALID_VARIANT                                                    NTStatus      = 0xC0000232\n\tSTATUS_DOMAIN_CONTROLLER_NOT_FOUND                                        NTStatus      = 0xC0000233\n\tSTATUS_ACCOUNT_LOCKED_OUT                                                 NTStatus      = 0xC0000234\n\tSTATUS_HANDLE_NOT_CLOSABLE                                                NTStatus      = 0xC0000235\n\tSTATUS_CONNECTION_REFUSED                                                 NTStatus      = 0xC0000236\n\tSTATUS_GRACEFUL_DISCONNECT                                                NTStatus      = 0xC0000237\n\tSTATUS_ADDRESS_ALREADY_ASSOCIATED                                         NTStatus      = 0xC0000238\n\tSTATUS_ADDRESS_NOT_ASSOCIATED                                             NTStatus      = 0xC0000239\n\tSTATUS_CONNECTION_INVALID                                                 NTStatus      = 0xC000023A\n\tSTATUS_CONNECTION_ACTIVE                                                  NTStatus      = 0xC000023B\n\tSTATUS_NETWORK_UNREACHABLE                                                NTStatus      = 0xC000023C\n\tSTATUS_HOST_UNREACHABLE                                                   NTStatus      = 0xC000023D\n\tSTATUS_PROTOCOL_UNREACHABLE                                               NTStatus      = 0xC000023E\n\tSTATUS_PORT_UNREACHABLE                                                   NTStatus      = 0xC000023F\n\tSTATUS_REQUEST_ABORTED                                                    NTStatus      = 0xC0000240\n\tSTATUS_CONNECTION_ABORTED                                                 NTStatus      = 0xC0000241\n\tSTATUS_BAD_COMPRESSION_BUFFER                                             NTStatus      = 0xC0000242\n\tSTATUS_USER_MAPPED_FILE                                                   NTStatus      = 0xC0000243\n\tSTATUS_AUDIT_FAILED                                                       NTStatus      = 0xC0000244\n\tSTATUS_TIMER_RESOLUTION_NOT_SET                                           NTStatus      = 0xC0000245\n\tSTATUS_CONNECTION_COUNT_LIMIT                                             NTStatus      = 0xC0000246\n\tSTATUS_LOGIN_TIME_RESTRICTION                                             NTStatus      = 0xC0000247\n\tSTATUS_LOGIN_WKSTA_RESTRICTION                                            NTStatus      = 0xC0000248\n\tSTATUS_IMAGE_MP_UP_MISMATCH                                               NTStatus      = 0xC0000249\n\tSTATUS_INSUFFICIENT_LOGON_INFO                                            NTStatus      = 0xC0000250\n\tSTATUS_BAD_DLL_ENTRYPOINT                                                 NTStatus      = 0xC0000251\n\tSTATUS_BAD_SERVICE_ENTRYPOINT                                             NTStatus      = 0xC0000252\n\tSTATUS_LPC_REPLY_LOST                                                     NTStatus      = 0xC0000253\n\tSTATUS_IP_ADDRESS_CONFLICT1                                               NTStatus      = 0xC0000254\n\tSTATUS_IP_ADDRESS_CONFLICT2                                               NTStatus      = 0xC0000255\n\tSTATUS_REGISTRY_QUOTA_LIMIT                                               NTStatus      = 0xC0000256\n\tSTATUS_PATH_NOT_COVERED                                                   NTStatus      = 0xC0000257\n\tSTATUS_NO_CALLBACK_ACTIVE                                                 NTStatus      = 0xC0000258\n\tSTATUS_LICENSE_QUOTA_EXCEEDED                                             NTStatus      = 0xC0000259\n\tSTATUS_PWD_TOO_SHORT                                                      NTStatus      = 0xC000025A\n\tSTATUS_PWD_TOO_RECENT                                                     NTStatus      = 0xC000025B\n\tSTATUS_PWD_HISTORY_CONFLICT                                               NTStatus      = 0xC000025C\n\tSTATUS_PLUGPLAY_NO_DEVICE                                                 NTStatus      = 0xC000025E\n\tSTATUS_UNSUPPORTED_COMPRESSION                                            NTStatus      = 0xC000025F\n\tSTATUS_INVALID_HW_PROFILE                                                 NTStatus      = 0xC0000260\n\tSTATUS_INVALID_PLUGPLAY_DEVICE_PATH                                       NTStatus      = 0xC0000261\n\tSTATUS_DRIVER_ORDINAL_NOT_FOUND                                           NTStatus      = 0xC0000262\n\tSTATUS_DRIVER_ENTRYPOINT_NOT_FOUND                                        NTStatus      = 0xC0000263\n\tSTATUS_RESOURCE_NOT_OWNED                                                 NTStatus      = 0xC0000264\n\tSTATUS_TOO_MANY_LINKS                                                     NTStatus      = 0xC0000265\n\tSTATUS_QUOTA_LIST_INCONSISTENT                                            NTStatus      = 0xC0000266\n\tSTATUS_FILE_IS_OFFLINE                                                    NTStatus      = 0xC0000267\n\tSTATUS_EVALUATION_EXPIRATION                                              NTStatus      = 0xC0000268\n\tSTATUS_ILLEGAL_DLL_RELOCATION                                             NTStatus      = 0xC0000269\n\tSTATUS_LICENSE_VIOLATION                                                  NTStatus      = 0xC000026A\n\tSTATUS_DLL_INIT_FAILED_LOGOFF                                             NTStatus      = 0xC000026B\n\tSTATUS_DRIVER_UNABLE_TO_LOAD                                              NTStatus      = 0xC000026C\n\tSTATUS_DFS_UNAVAILABLE                                                    NTStatus      = 0xC000026D\n\tSTATUS_VOLUME_DISMOUNTED                                                  NTStatus      = 0xC000026E\n\tSTATUS_WX86_INTERNAL_ERROR                                                NTStatus      = 0xC000026F\n\tSTATUS_WX86_FLOAT_STACK_CHECK                                             NTStatus      = 0xC0000270\n\tSTATUS_VALIDATE_CONTINUE                                                  NTStatus      = 0xC0000271\n\tSTATUS_NO_MATCH                                                           NTStatus      = 0xC0000272\n\tSTATUS_NO_MORE_MATCHES                                                    NTStatus      = 0xC0000273\n\tSTATUS_NOT_A_REPARSE_POINT                                                NTStatus      = 0xC0000275\n\tSTATUS_IO_REPARSE_TAG_INVALID                                             NTStatus      = 0xC0000276\n\tSTATUS_IO_REPARSE_TAG_MISMATCH                                            NTStatus      = 0xC0000277\n\tSTATUS_IO_REPARSE_DATA_INVALID                                            NTStatus      = 0xC0000278\n\tSTATUS_IO_REPARSE_TAG_NOT_HANDLED                                         NTStatus      = 0xC0000279\n\tSTATUS_PWD_TOO_LONG                                                       NTStatus      = 0xC000027A\n\tSTATUS_STOWED_EXCEPTION                                                   NTStatus      = 0xC000027B\n\tSTATUS_CONTEXT_STOWED_EXCEPTION                                           NTStatus      = 0xC000027C\n\tSTATUS_REPARSE_POINT_NOT_RESOLVED                                         NTStatus      = 0xC0000280\n\tSTATUS_DIRECTORY_IS_A_REPARSE_POINT                                       NTStatus      = 0xC0000281\n\tSTATUS_RANGE_LIST_CONFLICT                                                NTStatus      = 0xC0000282\n\tSTATUS_SOURCE_ELEMENT_EMPTY                                               NTStatus      = 0xC0000283\n\tSTATUS_DESTINATION_ELEMENT_FULL                                           NTStatus      = 0xC0000284\n\tSTATUS_ILLEGAL_ELEMENT_ADDRESS                                            NTStatus      = 0xC0000285\n\tSTATUS_MAGAZINE_NOT_PRESENT                                               NTStatus      = 0xC0000286\n\tSTATUS_REINITIALIZATION_NEEDED                                            NTStatus      = 0xC0000287\n\tSTATUS_DEVICE_REQUIRES_CLEANING                                           NTStatus      = 0x80000288\n\tSTATUS_DEVICE_DOOR_OPEN                                                   NTStatus      = 0x80000289\n\tSTATUS_ENCRYPTION_FAILED                                                  NTStatus      = 0xC000028A\n\tSTATUS_DECRYPTION_FAILED                                                  NTStatus      = 0xC000028B\n\tSTATUS_RANGE_NOT_FOUND                                                    NTStatus      = 0xC000028C\n\tSTATUS_NO_RECOVERY_POLICY                                                 NTStatus      = 0xC000028D\n\tSTATUS_NO_EFS                                                             NTStatus      = 0xC000028E\n\tSTATUS_WRONG_EFS                                                          NTStatus      = 0xC000028F\n\tSTATUS_NO_USER_KEYS                                                       NTStatus      = 0xC0000290\n\tSTATUS_FILE_NOT_ENCRYPTED                                                 NTStatus      = 0xC0000291\n\tSTATUS_NOT_EXPORT_FORMAT                                                  NTStatus      = 0xC0000292\n\tSTATUS_FILE_ENCRYPTED                                                     NTStatus      = 0xC0000293\n\tSTATUS_WAKE_SYSTEM                                                        NTStatus      = 0x40000294\n\tSTATUS_WMI_GUID_NOT_FOUND                                                 NTStatus      = 0xC0000295\n\tSTATUS_WMI_INSTANCE_NOT_FOUND                                             NTStatus      = 0xC0000296\n\tSTATUS_WMI_ITEMID_NOT_FOUND                                               NTStatus      = 0xC0000297\n\tSTATUS_WMI_TRY_AGAIN                                                      NTStatus      = 0xC0000298\n\tSTATUS_SHARED_POLICY                                                      NTStatus      = 0xC0000299\n\tSTATUS_POLICY_OBJECT_NOT_FOUND                                            NTStatus      = 0xC000029A\n\tSTATUS_POLICY_ONLY_IN_DS                                                  NTStatus      = 0xC000029B\n\tSTATUS_VOLUME_NOT_UPGRADED                                                NTStatus      = 0xC000029C\n\tSTATUS_REMOTE_STORAGE_NOT_ACTIVE                                          NTStatus      = 0xC000029D\n\tSTATUS_REMOTE_STORAGE_MEDIA_ERROR                                         NTStatus      = 0xC000029E\n\tSTATUS_NO_TRACKING_SERVICE                                                NTStatus      = 0xC000029F\n\tSTATUS_SERVER_SID_MISMATCH                                                NTStatus      = 0xC00002A0\n\tSTATUS_DS_NO_ATTRIBUTE_OR_VALUE                                           NTStatus      = 0xC00002A1\n\tSTATUS_DS_INVALID_ATTRIBUTE_SYNTAX                                        NTStatus      = 0xC00002A2\n\tSTATUS_DS_ATTRIBUTE_TYPE_UNDEFINED                                        NTStatus      = 0xC00002A3\n\tSTATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS                                       NTStatus      = 0xC00002A4\n\tSTATUS_DS_BUSY                                                            NTStatus      = 0xC00002A5\n\tSTATUS_DS_UNAVAILABLE                                                     NTStatus      = 0xC00002A6\n\tSTATUS_DS_NO_RIDS_ALLOCATED                                               NTStatus      = 0xC00002A7\n\tSTATUS_DS_NO_MORE_RIDS                                                    NTStatus      = 0xC00002A8\n\tSTATUS_DS_INCORRECT_ROLE_OWNER                                            NTStatus      = 0xC00002A9\n\tSTATUS_DS_RIDMGR_INIT_ERROR                                               NTStatus      = 0xC00002AA\n\tSTATUS_DS_OBJ_CLASS_VIOLATION                                             NTStatus      = 0xC00002AB\n\tSTATUS_DS_CANT_ON_NON_LEAF                                                NTStatus      = 0xC00002AC\n\tSTATUS_DS_CANT_ON_RDN                                                     NTStatus      = 0xC00002AD\n\tSTATUS_DS_CANT_MOD_OBJ_CLASS                                              NTStatus      = 0xC00002AE\n\tSTATUS_DS_CROSS_DOM_MOVE_FAILED                                           NTStatus      = 0xC00002AF\n\tSTATUS_DS_GC_NOT_AVAILABLE                                                NTStatus      = 0xC00002B0\n\tSTATUS_DIRECTORY_SERVICE_REQUIRED                                         NTStatus      = 0xC00002B1\n\tSTATUS_REPARSE_ATTRIBUTE_CONFLICT                                         NTStatus      = 0xC00002B2\n\tSTATUS_CANT_ENABLE_DENY_ONLY                                              NTStatus      = 0xC00002B3\n\tSTATUS_FLOAT_MULTIPLE_FAULTS                                              NTStatus      = 0xC00002B4\n\tSTATUS_FLOAT_MULTIPLE_TRAPS                                               NTStatus      = 0xC00002B5\n\tSTATUS_DEVICE_REMOVED                                                     NTStatus      = 0xC00002B6\n\tSTATUS_JOURNAL_DELETE_IN_PROGRESS                                         NTStatus      = 0xC00002B7\n\tSTATUS_JOURNAL_NOT_ACTIVE                                                 NTStatus      = 0xC00002B8\n\tSTATUS_NOINTERFACE                                                        NTStatus      = 0xC00002B9\n\tSTATUS_DS_RIDMGR_DISABLED                                                 NTStatus      = 0xC00002BA\n\tSTATUS_DS_ADMIN_LIMIT_EXCEEDED                                            NTStatus      = 0xC00002C1\n\tSTATUS_DRIVER_FAILED_SLEEP                                                NTStatus      = 0xC00002C2\n\tSTATUS_MUTUAL_AUTHENTICATION_FAILED                                       NTStatus      = 0xC00002C3\n\tSTATUS_CORRUPT_SYSTEM_FILE                                                NTStatus      = 0xC00002C4\n\tSTATUS_DATATYPE_MISALIGNMENT_ERROR                                        NTStatus      = 0xC00002C5\n\tSTATUS_WMI_READ_ONLY                                                      NTStatus      = 0xC00002C6\n\tSTATUS_WMI_SET_FAILURE                                                    NTStatus      = 0xC00002C7\n\tSTATUS_COMMITMENT_MINIMUM                                                 NTStatus      = 0xC00002C8\n\tSTATUS_REG_NAT_CONSUMPTION                                                NTStatus      = 0xC00002C9\n\tSTATUS_TRANSPORT_FULL                                                     NTStatus      = 0xC00002CA\n\tSTATUS_DS_SAM_INIT_FAILURE                                                NTStatus      = 0xC00002CB\n\tSTATUS_ONLY_IF_CONNECTED                                                  NTStatus      = 0xC00002CC\n\tSTATUS_DS_SENSITIVE_GROUP_VIOLATION                                       NTStatus      = 0xC00002CD\n\tSTATUS_PNP_RESTART_ENUMERATION                                            NTStatus      = 0xC00002CE\n\tSTATUS_JOURNAL_ENTRY_DELETED                                              NTStatus      = 0xC00002CF\n\tSTATUS_DS_CANT_MOD_PRIMARYGROUPID                                         NTStatus      = 0xC00002D0\n\tSTATUS_SYSTEM_IMAGE_BAD_SIGNATURE                                         NTStatus      = 0xC00002D1\n\tSTATUS_PNP_REBOOT_REQUIRED                                                NTStatus      = 0xC00002D2\n\tSTATUS_POWER_STATE_INVALID                                                NTStatus      = 0xC00002D3\n\tSTATUS_DS_INVALID_GROUP_TYPE                                              NTStatus      = 0xC00002D4\n\tSTATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN                              NTStatus      = 0xC00002D5\n\tSTATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN                               NTStatus      = 0xC00002D6\n\tSTATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER                                   NTStatus      = 0xC00002D7\n\tSTATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER                               NTStatus      = 0xC00002D8\n\tSTATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER                                NTStatus      = 0xC00002D9\n\tSTATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER                             NTStatus      = 0xC00002DA\n\tSTATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER                        NTStatus      = 0xC00002DB\n\tSTATUS_DS_HAVE_PRIMARY_MEMBERS                                            NTStatus      = 0xC00002DC\n\tSTATUS_WMI_NOT_SUPPORTED                                                  NTStatus      = 0xC00002DD\n\tSTATUS_INSUFFICIENT_POWER                                                 NTStatus      = 0xC00002DE\n\tSTATUS_SAM_NEED_BOOTKEY_PASSWORD                                          NTStatus      = 0xC00002DF\n\tSTATUS_SAM_NEED_BOOTKEY_FLOPPY                                            NTStatus      = 0xC00002E0\n\tSTATUS_DS_CANT_START                                                      NTStatus      = 0xC00002E1\n\tSTATUS_DS_INIT_FAILURE                                                    NTStatus      = 0xC00002E2\n\tSTATUS_SAM_INIT_FAILURE                                                   NTStatus      = 0xC00002E3\n\tSTATUS_DS_GC_REQUIRED                                                     NTStatus      = 0xC00002E4\n\tSTATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY                                      NTStatus      = 0xC00002E5\n\tSTATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS                                      NTStatus      = 0xC00002E6\n\tSTATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED                                  NTStatus      = 0xC00002E7\n\tSTATUS_MULTIPLE_FAULT_VIOLATION                                           NTStatus      = 0xC00002E8\n\tSTATUS_CURRENT_DOMAIN_NOT_ALLOWED                                         NTStatus      = 0xC00002E9\n\tSTATUS_CANNOT_MAKE                                                        NTStatus      = 0xC00002EA\n\tSTATUS_SYSTEM_SHUTDOWN                                                    NTStatus      = 0xC00002EB\n\tSTATUS_DS_INIT_FAILURE_CONSOLE                                            NTStatus      = 0xC00002EC\n\tSTATUS_DS_SAM_INIT_FAILURE_CONSOLE                                        NTStatus      = 0xC00002ED\n\tSTATUS_UNFINISHED_CONTEXT_DELETED                                         NTStatus      = 0xC00002EE\n\tSTATUS_NO_TGT_REPLY                                                       NTStatus      = 0xC00002EF\n\tSTATUS_OBJECTID_NOT_FOUND                                                 NTStatus      = 0xC00002F0\n\tSTATUS_NO_IP_ADDRESSES                                                    NTStatus      = 0xC00002F1\n\tSTATUS_WRONG_CREDENTIAL_HANDLE                                            NTStatus      = 0xC00002F2\n\tSTATUS_CRYPTO_SYSTEM_INVALID                                              NTStatus      = 0xC00002F3\n\tSTATUS_MAX_REFERRALS_EXCEEDED                                             NTStatus      = 0xC00002F4\n\tSTATUS_MUST_BE_KDC                                                        NTStatus      = 0xC00002F5\n\tSTATUS_STRONG_CRYPTO_NOT_SUPPORTED                                        NTStatus      = 0xC00002F6\n\tSTATUS_TOO_MANY_PRINCIPALS                                                NTStatus      = 0xC00002F7\n\tSTATUS_NO_PA_DATA                                                         NTStatus      = 0xC00002F8\n\tSTATUS_PKINIT_NAME_MISMATCH                                               NTStatus      = 0xC00002F9\n\tSTATUS_SMARTCARD_LOGON_REQUIRED                                           NTStatus      = 0xC00002FA\n\tSTATUS_KDC_INVALID_REQUEST                                                NTStatus      = 0xC00002FB\n\tSTATUS_KDC_UNABLE_TO_REFER                                                NTStatus      = 0xC00002FC\n\tSTATUS_KDC_UNKNOWN_ETYPE                                                  NTStatus      = 0xC00002FD\n\tSTATUS_SHUTDOWN_IN_PROGRESS                                               NTStatus      = 0xC00002FE\n\tSTATUS_SERVER_SHUTDOWN_IN_PROGRESS                                        NTStatus      = 0xC00002FF\n\tSTATUS_NOT_SUPPORTED_ON_SBS                                               NTStatus      = 0xC0000300\n\tSTATUS_WMI_GUID_DISCONNECTED                                              NTStatus      = 0xC0000301\n\tSTATUS_WMI_ALREADY_DISABLED                                               NTStatus      = 0xC0000302\n\tSTATUS_WMI_ALREADY_ENABLED                                                NTStatus      = 0xC0000303\n\tSTATUS_MFT_TOO_FRAGMENTED                                                 NTStatus      = 0xC0000304\n\tSTATUS_COPY_PROTECTION_FAILURE                                            NTStatus      = 0xC0000305\n\tSTATUS_CSS_AUTHENTICATION_FAILURE                                         NTStatus      = 0xC0000306\n\tSTATUS_CSS_KEY_NOT_PRESENT                                                NTStatus      = 0xC0000307\n\tSTATUS_CSS_KEY_NOT_ESTABLISHED                                            NTStatus      = 0xC0000308\n\tSTATUS_CSS_SCRAMBLED_SECTOR                                               NTStatus      = 0xC0000309\n\tSTATUS_CSS_REGION_MISMATCH                                                NTStatus      = 0xC000030A\n\tSTATUS_CSS_RESETS_EXHAUSTED                                               NTStatus      = 0xC000030B\n\tSTATUS_PASSWORD_CHANGE_REQUIRED                                           NTStatus      = 0xC000030C\n\tSTATUS_LOST_MODE_LOGON_RESTRICTION                                        NTStatus      = 0xC000030D\n\tSTATUS_PKINIT_FAILURE                                                     NTStatus      = 0xC0000320\n\tSTATUS_SMARTCARD_SUBSYSTEM_FAILURE                                        NTStatus      = 0xC0000321\n\tSTATUS_NO_KERB_KEY                                                        NTStatus      = 0xC0000322\n\tSTATUS_HOST_DOWN                                                          NTStatus      = 0xC0000350\n\tSTATUS_UNSUPPORTED_PREAUTH                                                NTStatus      = 0xC0000351\n\tSTATUS_EFS_ALG_BLOB_TOO_BIG                                               NTStatus      = 0xC0000352\n\tSTATUS_PORT_NOT_SET                                                       NTStatus      = 0xC0000353\n\tSTATUS_DEBUGGER_INACTIVE                                                  NTStatus      = 0xC0000354\n\tSTATUS_DS_VERSION_CHECK_FAILURE                                           NTStatus      = 0xC0000355\n\tSTATUS_AUDITING_DISABLED                                                  NTStatus      = 0xC0000356\n\tSTATUS_PRENT4_MACHINE_ACCOUNT                                             NTStatus      = 0xC0000357\n\tSTATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER                                   NTStatus      = 0xC0000358\n\tSTATUS_INVALID_IMAGE_WIN_32                                               NTStatus      = 0xC0000359\n\tSTATUS_INVALID_IMAGE_WIN_64                                               NTStatus      = 0xC000035A\n\tSTATUS_BAD_BINDINGS                                                       NTStatus      = 0xC000035B\n\tSTATUS_NETWORK_SESSION_EXPIRED                                            NTStatus      = 0xC000035C\n\tSTATUS_APPHELP_BLOCK                                                      NTStatus      = 0xC000035D\n\tSTATUS_ALL_SIDS_FILTERED                                                  NTStatus      = 0xC000035E\n\tSTATUS_NOT_SAFE_MODE_DRIVER                                               NTStatus      = 0xC000035F\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT                                  NTStatus      = 0xC0000361\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_PATH                                     NTStatus      = 0xC0000362\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER                                NTStatus      = 0xC0000363\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_OTHER                                    NTStatus      = 0xC0000364\n\tSTATUS_FAILED_DRIVER_ENTRY                                                NTStatus      = 0xC0000365\n\tSTATUS_DEVICE_ENUMERATION_ERROR                                           NTStatus      = 0xC0000366\n\tSTATUS_MOUNT_POINT_NOT_RESOLVED                                           NTStatus      = 0xC0000368\n\tSTATUS_INVALID_DEVICE_OBJECT_PARAMETER                                    NTStatus      = 0xC0000369\n\tSTATUS_MCA_OCCURED                                                        NTStatus      = 0xC000036A\n\tSTATUS_DRIVER_BLOCKED_CRITICAL                                            NTStatus      = 0xC000036B\n\tSTATUS_DRIVER_BLOCKED                                                     NTStatus      = 0xC000036C\n\tSTATUS_DRIVER_DATABASE_ERROR                                              NTStatus      = 0xC000036D\n\tSTATUS_SYSTEM_HIVE_TOO_LARGE                                              NTStatus      = 0xC000036E\n\tSTATUS_INVALID_IMPORT_OF_NON_DLL                                          NTStatus      = 0xC000036F\n\tSTATUS_DS_SHUTTING_DOWN                                                   NTStatus      = 0x40000370\n\tSTATUS_NO_SECRETS                                                         NTStatus      = 0xC0000371\n\tSTATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY                              NTStatus      = 0xC0000372\n\tSTATUS_FAILED_STACK_SWITCH                                                NTStatus      = 0xC0000373\n\tSTATUS_HEAP_CORRUPTION                                                    NTStatus      = 0xC0000374\n\tSTATUS_SMARTCARD_WRONG_PIN                                                NTStatus      = 0xC0000380\n\tSTATUS_SMARTCARD_CARD_BLOCKED                                             NTStatus      = 0xC0000381\n\tSTATUS_SMARTCARD_CARD_NOT_AUTHENTICATED                                   NTStatus      = 0xC0000382\n\tSTATUS_SMARTCARD_NO_CARD                                                  NTStatus      = 0xC0000383\n\tSTATUS_SMARTCARD_NO_KEY_CONTAINER                                         NTStatus      = 0xC0000384\n\tSTATUS_SMARTCARD_NO_CERTIFICATE                                           NTStatus      = 0xC0000385\n\tSTATUS_SMARTCARD_NO_KEYSET                                                NTStatus      = 0xC0000386\n\tSTATUS_SMARTCARD_IO_ERROR                                                 NTStatus      = 0xC0000387\n\tSTATUS_DOWNGRADE_DETECTED                                                 NTStatus      = 0xC0000388\n\tSTATUS_SMARTCARD_CERT_REVOKED                                             NTStatus      = 0xC0000389\n\tSTATUS_ISSUING_CA_UNTRUSTED                                               NTStatus      = 0xC000038A\n\tSTATUS_REVOCATION_OFFLINE_C                                               NTStatus      = 0xC000038B\n\tSTATUS_PKINIT_CLIENT_FAILURE                                              NTStatus      = 0xC000038C\n\tSTATUS_SMARTCARD_CERT_EXPIRED                                             NTStatus      = 0xC000038D\n\tSTATUS_DRIVER_FAILED_PRIOR_UNLOAD                                         NTStatus      = 0xC000038E\n\tSTATUS_SMARTCARD_SILENT_CONTEXT                                           NTStatus      = 0xC000038F\n\tSTATUS_PER_USER_TRUST_QUOTA_EXCEEDED                                      NTStatus      = 0xC0000401\n\tSTATUS_ALL_USER_TRUST_QUOTA_EXCEEDED                                      NTStatus      = 0xC0000402\n\tSTATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED                                   NTStatus      = 0xC0000403\n\tSTATUS_DS_NAME_NOT_UNIQUE                                                 NTStatus      = 0xC0000404\n\tSTATUS_DS_DUPLICATE_ID_FOUND                                              NTStatus      = 0xC0000405\n\tSTATUS_DS_GROUP_CONVERSION_ERROR                                          NTStatus      = 0xC0000406\n\tSTATUS_VOLSNAP_PREPARE_HIBERNATE                                          NTStatus      = 0xC0000407\n\tSTATUS_USER2USER_REQUIRED                                                 NTStatus      = 0xC0000408\n\tSTATUS_STACK_BUFFER_OVERRUN                                               NTStatus      = 0xC0000409\n\tSTATUS_NO_S4U_PROT_SUPPORT                                                NTStatus      = 0xC000040A\n\tSTATUS_CROSSREALM_DELEGATION_FAILURE                                      NTStatus      = 0xC000040B\n\tSTATUS_REVOCATION_OFFLINE_KDC                                             NTStatus      = 0xC000040C\n\tSTATUS_ISSUING_CA_UNTRUSTED_KDC                                           NTStatus      = 0xC000040D\n\tSTATUS_KDC_CERT_EXPIRED                                                   NTStatus      = 0xC000040E\n\tSTATUS_KDC_CERT_REVOKED                                                   NTStatus      = 0xC000040F\n\tSTATUS_PARAMETER_QUOTA_EXCEEDED                                           NTStatus      = 0xC0000410\n\tSTATUS_HIBERNATION_FAILURE                                                NTStatus      = 0xC0000411\n\tSTATUS_DELAY_LOAD_FAILED                                                  NTStatus      = 0xC0000412\n\tSTATUS_AUTHENTICATION_FIREWALL_FAILED                                     NTStatus      = 0xC0000413\n\tSTATUS_VDM_DISALLOWED                                                     NTStatus      = 0xC0000414\n\tSTATUS_HUNG_DISPLAY_DRIVER_THREAD                                         NTStatus      = 0xC0000415\n\tSTATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE            NTStatus      = 0xC0000416\n\tSTATUS_INVALID_CRUNTIME_PARAMETER                                         NTStatus      = 0xC0000417\n\tSTATUS_NTLM_BLOCKED                                                       NTStatus      = 0xC0000418\n\tSTATUS_DS_SRC_SID_EXISTS_IN_FOREST                                        NTStatus      = 0xC0000419\n\tSTATUS_DS_DOMAIN_NAME_EXISTS_IN_FOREST                                    NTStatus      = 0xC000041A\n\tSTATUS_DS_FLAT_NAME_EXISTS_IN_FOREST                                      NTStatus      = 0xC000041B\n\tSTATUS_INVALID_USER_PRINCIPAL_NAME                                        NTStatus      = 0xC000041C\n\tSTATUS_FATAL_USER_CALLBACK_EXCEPTION                                      NTStatus      = 0xC000041D\n\tSTATUS_ASSERTION_FAILURE                                                  NTStatus      = 0xC0000420\n\tSTATUS_VERIFIER_STOP                                                      NTStatus      = 0xC0000421\n\tSTATUS_CALLBACK_POP_STACK                                                 NTStatus      = 0xC0000423\n\tSTATUS_INCOMPATIBLE_DRIVER_BLOCKED                                        NTStatus      = 0xC0000424\n\tSTATUS_HIVE_UNLOADED                                                      NTStatus      = 0xC0000425\n\tSTATUS_COMPRESSION_DISABLED                                               NTStatus      = 0xC0000426\n\tSTATUS_FILE_SYSTEM_LIMITATION                                             NTStatus      = 0xC0000427\n\tSTATUS_INVALID_IMAGE_HASH                                                 NTStatus      = 0xC0000428\n\tSTATUS_NOT_CAPABLE                                                        NTStatus      = 0xC0000429\n\tSTATUS_REQUEST_OUT_OF_SEQUENCE                                            NTStatus      = 0xC000042A\n\tSTATUS_IMPLEMENTATION_LIMIT                                               NTStatus      = 0xC000042B\n\tSTATUS_ELEVATION_REQUIRED                                                 NTStatus      = 0xC000042C\n\tSTATUS_NO_SECURITY_CONTEXT                                                NTStatus      = 0xC000042D\n\tSTATUS_PKU2U_CERT_FAILURE                                                 NTStatus      = 0xC000042F\n\tSTATUS_BEYOND_VDL                                                         NTStatus      = 0xC0000432\n\tSTATUS_ENCOUNTERED_WRITE_IN_PROGRESS                                      NTStatus      = 0xC0000433\n\tSTATUS_PTE_CHANGED                                                        NTStatus      = 0xC0000434\n\tSTATUS_PURGE_FAILED                                                       NTStatus      = 0xC0000435\n\tSTATUS_CRED_REQUIRES_CONFIRMATION                                         NTStatus      = 0xC0000440\n\tSTATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE                              NTStatus      = 0xC0000441\n\tSTATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER                                   NTStatus      = 0xC0000442\n\tSTATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE                              NTStatus      = 0xC0000443\n\tSTATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE                                   NTStatus      = 0xC0000444\n\tSTATUS_CS_ENCRYPTION_FILE_NOT_CSE                                         NTStatus      = 0xC0000445\n\tSTATUS_INVALID_LABEL                                                      NTStatus      = 0xC0000446\n\tSTATUS_DRIVER_PROCESS_TERMINATED                                          NTStatus      = 0xC0000450\n\tSTATUS_AMBIGUOUS_SYSTEM_DEVICE                                            NTStatus      = 0xC0000451\n\tSTATUS_SYSTEM_DEVICE_NOT_FOUND                                            NTStatus      = 0xC0000452\n\tSTATUS_RESTART_BOOT_APPLICATION                                           NTStatus      = 0xC0000453\n\tSTATUS_INSUFFICIENT_NVRAM_RESOURCES                                       NTStatus      = 0xC0000454\n\tSTATUS_INVALID_SESSION                                                    NTStatus      = 0xC0000455\n\tSTATUS_THREAD_ALREADY_IN_SESSION                                          NTStatus      = 0xC0000456\n\tSTATUS_THREAD_NOT_IN_SESSION                                              NTStatus      = 0xC0000457\n\tSTATUS_INVALID_WEIGHT                                                     NTStatus      = 0xC0000458\n\tSTATUS_REQUEST_PAUSED                                                     NTStatus      = 0xC0000459\n\tSTATUS_NO_RANGES_PROCESSED                                                NTStatus      = 0xC0000460\n\tSTATUS_DISK_RESOURCES_EXHAUSTED                                           NTStatus      = 0xC0000461\n\tSTATUS_NEEDS_REMEDIATION                                                  NTStatus      = 0xC0000462\n\tSTATUS_DEVICE_FEATURE_NOT_SUPPORTED                                       NTStatus      = 0xC0000463\n\tSTATUS_DEVICE_UNREACHABLE                                                 NTStatus      = 0xC0000464\n\tSTATUS_INVALID_TOKEN                                                      NTStatus      = 0xC0000465\n\tSTATUS_SERVER_UNAVAILABLE                                                 NTStatus      = 0xC0000466\n\tSTATUS_FILE_NOT_AVAILABLE                                                 NTStatus      = 0xC0000467\n\tSTATUS_DEVICE_INSUFFICIENT_RESOURCES                                      NTStatus      = 0xC0000468\n\tSTATUS_PACKAGE_UPDATING                                                   NTStatus      = 0xC0000469\n\tSTATUS_NOT_READ_FROM_COPY                                                 NTStatus      = 0xC000046A\n\tSTATUS_FT_WRITE_FAILURE                                                   NTStatus      = 0xC000046B\n\tSTATUS_FT_DI_SCAN_REQUIRED                                                NTStatus      = 0xC000046C\n\tSTATUS_OBJECT_NOT_EXTERNALLY_BACKED                                       NTStatus      = 0xC000046D\n\tSTATUS_EXTERNAL_BACKING_PROVIDER_UNKNOWN                                  NTStatus      = 0xC000046E\n\tSTATUS_COMPRESSION_NOT_BENEFICIAL                                         NTStatus      = 0xC000046F\n\tSTATUS_DATA_CHECKSUM_ERROR                                                NTStatus      = 0xC0000470\n\tSTATUS_INTERMIXED_KERNEL_EA_OPERATION                                     NTStatus      = 0xC0000471\n\tSTATUS_TRIM_READ_ZERO_NOT_SUPPORTED                                       NTStatus      = 0xC0000472\n\tSTATUS_TOO_MANY_SEGMENT_DESCRIPTORS                                       NTStatus      = 0xC0000473\n\tSTATUS_INVALID_OFFSET_ALIGNMENT                                           NTStatus      = 0xC0000474\n\tSTATUS_INVALID_FIELD_IN_PARAMETER_LIST                                    NTStatus      = 0xC0000475\n\tSTATUS_OPERATION_IN_PROGRESS                                              NTStatus      = 0xC0000476\n\tSTATUS_INVALID_INITIATOR_TARGET_PATH                                      NTStatus      = 0xC0000477\n\tSTATUS_SCRUB_DATA_DISABLED                                                NTStatus      = 0xC0000478\n\tSTATUS_NOT_REDUNDANT_STORAGE                                              NTStatus      = 0xC0000479\n\tSTATUS_RESIDENT_FILE_NOT_SUPPORTED                                        NTStatus      = 0xC000047A\n\tSTATUS_COMPRESSED_FILE_NOT_SUPPORTED                                      NTStatus      = 0xC000047B\n\tSTATUS_DIRECTORY_NOT_SUPPORTED                                            NTStatus      = 0xC000047C\n\tSTATUS_IO_OPERATION_TIMEOUT                                               NTStatus      = 0xC000047D\n\tSTATUS_SYSTEM_NEEDS_REMEDIATION                                           NTStatus      = 0xC000047E\n\tSTATUS_APPX_INTEGRITY_FAILURE_CLR_NGEN                                    NTStatus      = 0xC000047F\n\tSTATUS_SHARE_UNAVAILABLE                                                  NTStatus      = 0xC0000480\n\tSTATUS_APISET_NOT_HOSTED                                                  NTStatus      = 0xC0000481\n\tSTATUS_APISET_NOT_PRESENT                                                 NTStatus      = 0xC0000482\n\tSTATUS_DEVICE_HARDWARE_ERROR                                              NTStatus      = 0xC0000483\n\tSTATUS_FIRMWARE_SLOT_INVALID                                              NTStatus      = 0xC0000484\n\tSTATUS_FIRMWARE_IMAGE_INVALID                                             NTStatus      = 0xC0000485\n\tSTATUS_STORAGE_TOPOLOGY_ID_MISMATCH                                       NTStatus      = 0xC0000486\n\tSTATUS_WIM_NOT_BOOTABLE                                                   NTStatus      = 0xC0000487\n\tSTATUS_BLOCKED_BY_PARENTAL_CONTROLS                                       NTStatus      = 0xC0000488\n\tSTATUS_NEEDS_REGISTRATION                                                 NTStatus      = 0xC0000489\n\tSTATUS_QUOTA_ACTIVITY                                                     NTStatus      = 0xC000048A\n\tSTATUS_CALLBACK_INVOKE_INLINE                                             NTStatus      = 0xC000048B\n\tSTATUS_BLOCK_TOO_MANY_REFERENCES                                          NTStatus      = 0xC000048C\n\tSTATUS_MARKED_TO_DISALLOW_WRITES                                          NTStatus      = 0xC000048D\n\tSTATUS_NETWORK_ACCESS_DENIED_EDP                                          NTStatus      = 0xC000048E\n\tSTATUS_ENCLAVE_FAILURE                                                    NTStatus      = 0xC000048F\n\tSTATUS_PNP_NO_COMPAT_DRIVERS                                              NTStatus      = 0xC0000490\n\tSTATUS_PNP_DRIVER_PACKAGE_NOT_FOUND                                       NTStatus      = 0xC0000491\n\tSTATUS_PNP_DRIVER_CONFIGURATION_NOT_FOUND                                 NTStatus      = 0xC0000492\n\tSTATUS_PNP_DRIVER_CONFIGURATION_INCOMPLETE                                NTStatus      = 0xC0000493\n\tSTATUS_PNP_FUNCTION_DRIVER_REQUIRED                                       NTStatus      = 0xC0000494\n\tSTATUS_PNP_DEVICE_CONFIGURATION_PENDING                                   NTStatus      = 0xC0000495\n\tSTATUS_DEVICE_HINT_NAME_BUFFER_TOO_SMALL                                  NTStatus      = 0xC0000496\n\tSTATUS_PACKAGE_NOT_AVAILABLE                                              NTStatus      = 0xC0000497\n\tSTATUS_DEVICE_IN_MAINTENANCE                                              NTStatus      = 0xC0000499\n\tSTATUS_NOT_SUPPORTED_ON_DAX                                               NTStatus      = 0xC000049A\n\tSTATUS_FREE_SPACE_TOO_FRAGMENTED                                          NTStatus      = 0xC000049B\n\tSTATUS_DAX_MAPPING_EXISTS                                                 NTStatus      = 0xC000049C\n\tSTATUS_CHILD_PROCESS_BLOCKED                                              NTStatus      = 0xC000049D\n\tSTATUS_STORAGE_LOST_DATA_PERSISTENCE                                      NTStatus      = 0xC000049E\n\tSTATUS_VRF_CFG_ENABLED                                                    NTStatus      = 0xC000049F\n\tSTATUS_PARTITION_TERMINATING                                              NTStatus      = 0xC00004A0\n\tSTATUS_EXTERNAL_SYSKEY_NOT_SUPPORTED                                      NTStatus      = 0xC00004A1\n\tSTATUS_ENCLAVE_VIOLATION                                                  NTStatus      = 0xC00004A2\n\tSTATUS_FILE_PROTECTED_UNDER_DPL                                           NTStatus      = 0xC00004A3\n\tSTATUS_VOLUME_NOT_CLUSTER_ALIGNED                                         NTStatus      = 0xC00004A4\n\tSTATUS_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND                             NTStatus      = 0xC00004A5\n\tSTATUS_APPX_FILE_NOT_ENCRYPTED                                            NTStatus      = 0xC00004A6\n\tSTATUS_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED                                 NTStatus      = 0xC00004A7\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET                       NTStatus      = 0xC00004A8\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE                        NTStatus      = 0xC00004A9\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER                        NTStatus      = 0xC00004AA\n\tSTATUS_FT_READ_FAILURE                                                    NTStatus      = 0xC00004AB\n\tSTATUS_PATCH_CONFLICT                                                     NTStatus      = 0xC00004AC\n\tSTATUS_STORAGE_RESERVE_ID_INVALID                                         NTStatus      = 0xC00004AD\n\tSTATUS_STORAGE_RESERVE_DOES_NOT_EXIST                                     NTStatus      = 0xC00004AE\n\tSTATUS_STORAGE_RESERVE_ALREADY_EXISTS                                     NTStatus      = 0xC00004AF\n\tSTATUS_STORAGE_RESERVE_NOT_EMPTY                                          NTStatus      = 0xC00004B0\n\tSTATUS_NOT_A_DAX_VOLUME                                                   NTStatus      = 0xC00004B1\n\tSTATUS_NOT_DAX_MAPPABLE                                                   NTStatus      = 0xC00004B2\n\tSTATUS_CASE_DIFFERING_NAMES_IN_DIR                                        NTStatus      = 0xC00004B3\n\tSTATUS_FILE_NOT_SUPPORTED                                                 NTStatus      = 0xC00004B4\n\tSTATUS_NOT_SUPPORTED_WITH_BTT                                             NTStatus      = 0xC00004B5\n\tSTATUS_ENCRYPTION_DISABLED                                                NTStatus      = 0xC00004B6\n\tSTATUS_ENCRYPTING_METADATA_DISALLOWED                                     NTStatus      = 0xC00004B7\n\tSTATUS_CANT_CLEAR_ENCRYPTION_FLAG                                         NTStatus      = 0xC00004B8\n\tSTATUS_INVALID_TASK_NAME                                                  NTStatus      = 0xC0000500\n\tSTATUS_INVALID_TASK_INDEX                                                 NTStatus      = 0xC0000501\n\tSTATUS_THREAD_ALREADY_IN_TASK                                             NTStatus      = 0xC0000502\n\tSTATUS_CALLBACK_BYPASS                                                    NTStatus      = 0xC0000503\n\tSTATUS_UNDEFINED_SCOPE                                                    NTStatus      = 0xC0000504\n\tSTATUS_INVALID_CAP                                                        NTStatus      = 0xC0000505\n\tSTATUS_NOT_GUI_PROCESS                                                    NTStatus      = 0xC0000506\n\tSTATUS_DEVICE_HUNG                                                        NTStatus      = 0xC0000507\n\tSTATUS_CONTAINER_ASSIGNED                                                 NTStatus      = 0xC0000508\n\tSTATUS_JOB_NO_CONTAINER                                                   NTStatus      = 0xC0000509\n\tSTATUS_DEVICE_UNRESPONSIVE                                                NTStatus      = 0xC000050A\n\tSTATUS_REPARSE_POINT_ENCOUNTERED                                          NTStatus      = 0xC000050B\n\tSTATUS_ATTRIBUTE_NOT_PRESENT                                              NTStatus      = 0xC000050C\n\tSTATUS_NOT_A_TIERED_VOLUME                                                NTStatus      = 0xC000050D\n\tSTATUS_ALREADY_HAS_STREAM_ID                                              NTStatus      = 0xC000050E\n\tSTATUS_JOB_NOT_EMPTY                                                      NTStatus      = 0xC000050F\n\tSTATUS_ALREADY_INITIALIZED                                                NTStatus      = 0xC0000510\n\tSTATUS_ENCLAVE_NOT_TERMINATED                                             NTStatus      = 0xC0000511\n\tSTATUS_ENCLAVE_IS_TERMINATING                                             NTStatus      = 0xC0000512\n\tSTATUS_SMB1_NOT_AVAILABLE                                                 NTStatus      = 0xC0000513\n\tSTATUS_SMR_GARBAGE_COLLECTION_REQUIRED                                    NTStatus      = 0xC0000514\n\tSTATUS_INTERRUPTED                                                        NTStatus      = 0xC0000515\n\tSTATUS_THREAD_NOT_RUNNING                                                 NTStatus      = 0xC0000516\n\tSTATUS_FAIL_FAST_EXCEPTION                                                NTStatus      = 0xC0000602\n\tSTATUS_IMAGE_CERT_REVOKED                                                 NTStatus      = 0xC0000603\n\tSTATUS_DYNAMIC_CODE_BLOCKED                                               NTStatus      = 0xC0000604\n\tSTATUS_IMAGE_CERT_EXPIRED                                                 NTStatus      = 0xC0000605\n\tSTATUS_STRICT_CFG_VIOLATION                                               NTStatus      = 0xC0000606\n\tSTATUS_SET_CONTEXT_DENIED                                                 NTStatus      = 0xC000060A\n\tSTATUS_CROSS_PARTITION_VIOLATION                                          NTStatus      = 0xC000060B\n\tSTATUS_PORT_CLOSED                                                        NTStatus      = 0xC0000700\n\tSTATUS_MESSAGE_LOST                                                       NTStatus      = 0xC0000701\n\tSTATUS_INVALID_MESSAGE                                                    NTStatus      = 0xC0000702\n\tSTATUS_REQUEST_CANCELED                                                   NTStatus      = 0xC0000703\n\tSTATUS_RECURSIVE_DISPATCH                                                 NTStatus      = 0xC0000704\n\tSTATUS_LPC_RECEIVE_BUFFER_EXPECTED                                        NTStatus      = 0xC0000705\n\tSTATUS_LPC_INVALID_CONNECTION_USAGE                                       NTStatus      = 0xC0000706\n\tSTATUS_LPC_REQUESTS_NOT_ALLOWED                                           NTStatus      = 0xC0000707\n\tSTATUS_RESOURCE_IN_USE                                                    NTStatus      = 0xC0000708\n\tSTATUS_HARDWARE_MEMORY_ERROR                                              NTStatus      = 0xC0000709\n\tSTATUS_THREADPOOL_HANDLE_EXCEPTION                                        NTStatus      = 0xC000070A\n\tSTATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED                          NTStatus      = 0xC000070B\n\tSTATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED                  NTStatus      = 0xC000070C\n\tSTATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED                      NTStatus      = 0xC000070D\n\tSTATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED                       NTStatus      = 0xC000070E\n\tSTATUS_THREADPOOL_RELEASED_DURING_OPERATION                               NTStatus      = 0xC000070F\n\tSTATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING                              NTStatus      = 0xC0000710\n\tSTATUS_APC_RETURNED_WHILE_IMPERSONATING                                   NTStatus      = 0xC0000711\n\tSTATUS_PROCESS_IS_PROTECTED                                               NTStatus      = 0xC0000712\n\tSTATUS_MCA_EXCEPTION                                                      NTStatus      = 0xC0000713\n\tSTATUS_CERTIFICATE_MAPPING_NOT_UNIQUE                                     NTStatus      = 0xC0000714\n\tSTATUS_SYMLINK_CLASS_DISABLED                                             NTStatus      = 0xC0000715\n\tSTATUS_INVALID_IDN_NORMALIZATION                                          NTStatus      = 0xC0000716\n\tSTATUS_NO_UNICODE_TRANSLATION                                             NTStatus      = 0xC0000717\n\tSTATUS_ALREADY_REGISTERED                                                 NTStatus      = 0xC0000718\n\tSTATUS_CONTEXT_MISMATCH                                                   NTStatus      = 0xC0000719\n\tSTATUS_PORT_ALREADY_HAS_COMPLETION_LIST                                   NTStatus      = 0xC000071A\n\tSTATUS_CALLBACK_RETURNED_THREAD_PRIORITY                                  NTStatus      = 0xC000071B\n\tSTATUS_INVALID_THREAD                                                     NTStatus      = 0xC000071C\n\tSTATUS_CALLBACK_RETURNED_TRANSACTION                                      NTStatus      = 0xC000071D\n\tSTATUS_CALLBACK_RETURNED_LDR_LOCK                                         NTStatus      = 0xC000071E\n\tSTATUS_CALLBACK_RETURNED_LANG                                             NTStatus      = 0xC000071F\n\tSTATUS_CALLBACK_RETURNED_PRI_BACK                                         NTStatus      = 0xC0000720\n\tSTATUS_CALLBACK_RETURNED_THREAD_AFFINITY                                  NTStatus      = 0xC0000721\n\tSTATUS_LPC_HANDLE_COUNT_EXCEEDED                                          NTStatus      = 0xC0000722\n\tSTATUS_EXECUTABLE_MEMORY_WRITE                                            NTStatus      = 0xC0000723\n\tSTATUS_KERNEL_EXECUTABLE_MEMORY_WRITE                                     NTStatus      = 0xC0000724\n\tSTATUS_ATTACHED_EXECUTABLE_MEMORY_WRITE                                   NTStatus      = 0xC0000725\n\tSTATUS_TRIGGERED_EXECUTABLE_MEMORY_WRITE                                  NTStatus      = 0xC0000726\n\tSTATUS_DISK_REPAIR_DISABLED                                               NTStatus      = 0xC0000800\n\tSTATUS_DS_DOMAIN_RENAME_IN_PROGRESS                                       NTStatus      = 0xC0000801\n\tSTATUS_DISK_QUOTA_EXCEEDED                                                NTStatus      = 0xC0000802\n\tSTATUS_DATA_LOST_REPAIR                                                   NTStatus      = 0x80000803\n\tSTATUS_CONTENT_BLOCKED                                                    NTStatus      = 0xC0000804\n\tSTATUS_BAD_CLUSTERS                                                       NTStatus      = 0xC0000805\n\tSTATUS_VOLUME_DIRTY                                                       NTStatus      = 0xC0000806\n\tSTATUS_DISK_REPAIR_REDIRECTED                                             NTStatus      = 0x40000807\n\tSTATUS_DISK_REPAIR_UNSUCCESSFUL                                           NTStatus      = 0xC0000808\n\tSTATUS_CORRUPT_LOG_OVERFULL                                               NTStatus      = 0xC0000809\n\tSTATUS_CORRUPT_LOG_CORRUPTED                                              NTStatus      = 0xC000080A\n\tSTATUS_CORRUPT_LOG_UNAVAILABLE                                            NTStatus      = 0xC000080B\n\tSTATUS_CORRUPT_LOG_DELETED_FULL                                           NTStatus      = 0xC000080C\n\tSTATUS_CORRUPT_LOG_CLEARED                                                NTStatus      = 0xC000080D\n\tSTATUS_ORPHAN_NAME_EXHAUSTED                                              NTStatus      = 0xC000080E\n\tSTATUS_PROACTIVE_SCAN_IN_PROGRESS                                         NTStatus      = 0xC000080F\n\tSTATUS_ENCRYPTED_IO_NOT_POSSIBLE                                          NTStatus      = 0xC0000810\n\tSTATUS_CORRUPT_LOG_UPLEVEL_RECORDS                                        NTStatus      = 0xC0000811\n\tSTATUS_FILE_CHECKED_OUT                                                   NTStatus      = 0xC0000901\n\tSTATUS_CHECKOUT_REQUIRED                                                  NTStatus      = 0xC0000902\n\tSTATUS_BAD_FILE_TYPE                                                      NTStatus      = 0xC0000903\n\tSTATUS_FILE_TOO_LARGE                                                     NTStatus      = 0xC0000904\n\tSTATUS_FORMS_AUTH_REQUIRED                                                NTStatus      = 0xC0000905\n\tSTATUS_VIRUS_INFECTED                                                     NTStatus      = 0xC0000906\n\tSTATUS_VIRUS_DELETED                                                      NTStatus      = 0xC0000907\n\tSTATUS_BAD_MCFG_TABLE                                                     NTStatus      = 0xC0000908\n\tSTATUS_CANNOT_BREAK_OPLOCK                                                NTStatus      = 0xC0000909\n\tSTATUS_BAD_KEY                                                            NTStatus      = 0xC000090A\n\tSTATUS_BAD_DATA                                                           NTStatus      = 0xC000090B\n\tSTATUS_NO_KEY                                                             NTStatus      = 0xC000090C\n\tSTATUS_FILE_HANDLE_REVOKED                                                NTStatus      = 0xC0000910\n\tSTATUS_WOW_ASSERTION                                                      NTStatus      = 0xC0009898\n\tSTATUS_INVALID_SIGNATURE                                                  NTStatus      = 0xC000A000\n\tSTATUS_HMAC_NOT_SUPPORTED                                                 NTStatus      = 0xC000A001\n\tSTATUS_AUTH_TAG_MISMATCH                                                  NTStatus      = 0xC000A002\n\tSTATUS_INVALID_STATE_TRANSITION                                           NTStatus      = 0xC000A003\n\tSTATUS_INVALID_KERNEL_INFO_VERSION                                        NTStatus      = 0xC000A004\n\tSTATUS_INVALID_PEP_INFO_VERSION                                           NTStatus      = 0xC000A005\n\tSTATUS_HANDLE_REVOKED                                                     NTStatus      = 0xC000A006\n\tSTATUS_EOF_ON_GHOSTED_RANGE                                               NTStatus      = 0xC000A007\n\tSTATUS_IPSEC_QUEUE_OVERFLOW                                               NTStatus      = 0xC000A010\n\tSTATUS_ND_QUEUE_OVERFLOW                                                  NTStatus      = 0xC000A011\n\tSTATUS_HOPLIMIT_EXCEEDED                                                  NTStatus      = 0xC000A012\n\tSTATUS_PROTOCOL_NOT_SUPPORTED                                             NTStatus      = 0xC000A013\n\tSTATUS_FASTPATH_REJECTED                                                  NTStatus      = 0xC000A014\n\tSTATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED                         NTStatus      = 0xC000A080\n\tSTATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR                         NTStatus      = 0xC000A081\n\tSTATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR                             NTStatus      = 0xC000A082\n\tSTATUS_XML_PARSE_ERROR                                                    NTStatus      = 0xC000A083\n\tSTATUS_XMLDSIG_ERROR                                                      NTStatus      = 0xC000A084\n\tSTATUS_WRONG_COMPARTMENT                                                  NTStatus      = 0xC000A085\n\tSTATUS_AUTHIP_FAILURE                                                     NTStatus      = 0xC000A086\n\tSTATUS_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS                              NTStatus      = 0xC000A087\n\tSTATUS_DS_OID_NOT_FOUND                                                   NTStatus      = 0xC000A088\n\tSTATUS_INCORRECT_ACCOUNT_TYPE                                             NTStatus      = 0xC000A089\n\tSTATUS_HASH_NOT_SUPPORTED                                                 NTStatus      = 0xC000A100\n\tSTATUS_HASH_NOT_PRESENT                                                   NTStatus      = 0xC000A101\n\tSTATUS_SECONDARY_IC_PROVIDER_NOT_REGISTERED                               NTStatus      = 0xC000A121\n\tSTATUS_GPIO_CLIENT_INFORMATION_INVALID                                    NTStatus      = 0xC000A122\n\tSTATUS_GPIO_VERSION_NOT_SUPPORTED                                         NTStatus      = 0xC000A123\n\tSTATUS_GPIO_INVALID_REGISTRATION_PACKET                                   NTStatus      = 0xC000A124\n\tSTATUS_GPIO_OPERATION_DENIED                                              NTStatus      = 0xC000A125\n\tSTATUS_GPIO_INCOMPATIBLE_CONNECT_MODE                                     NTStatus      = 0xC000A126\n\tSTATUS_GPIO_INTERRUPT_ALREADY_UNMASKED                                    NTStatus      = 0x8000A127\n\tSTATUS_CANNOT_SWITCH_RUNLEVEL                                             NTStatus      = 0xC000A141\n\tSTATUS_INVALID_RUNLEVEL_SETTING                                           NTStatus      = 0xC000A142\n\tSTATUS_RUNLEVEL_SWITCH_TIMEOUT                                            NTStatus      = 0xC000A143\n\tSTATUS_SERVICES_FAILED_AUTOSTART                                          NTStatus      = 0x4000A144\n\tSTATUS_RUNLEVEL_SWITCH_AGENT_TIMEOUT                                      NTStatus      = 0xC000A145\n\tSTATUS_RUNLEVEL_SWITCH_IN_PROGRESS                                        NTStatus      = 0xC000A146\n\tSTATUS_NOT_APPCONTAINER                                                   NTStatus      = 0xC000A200\n\tSTATUS_NOT_SUPPORTED_IN_APPCONTAINER                                      NTStatus      = 0xC000A201\n\tSTATUS_INVALID_PACKAGE_SID_LENGTH                                         NTStatus      = 0xC000A202\n\tSTATUS_LPAC_ACCESS_DENIED                                                 NTStatus      = 0xC000A203\n\tSTATUS_ADMINLESS_ACCESS_DENIED                                            NTStatus      = 0xC000A204\n\tSTATUS_APP_DATA_NOT_FOUND                                                 NTStatus      = 0xC000A281\n\tSTATUS_APP_DATA_EXPIRED                                                   NTStatus      = 0xC000A282\n\tSTATUS_APP_DATA_CORRUPT                                                   NTStatus      = 0xC000A283\n\tSTATUS_APP_DATA_LIMIT_EXCEEDED                                            NTStatus      = 0xC000A284\n\tSTATUS_APP_DATA_REBOOT_REQUIRED                                           NTStatus      = 0xC000A285\n\tSTATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED                                     NTStatus      = 0xC000A2A1\n\tSTATUS_OFFLOAD_WRITE_FLT_NOT_SUPPORTED                                    NTStatus      = 0xC000A2A2\n\tSTATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED                                    NTStatus      = 0xC000A2A3\n\tSTATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED                                   NTStatus      = 0xC000A2A4\n\tSTATUS_WOF_WIM_HEADER_CORRUPT                                             NTStatus      = 0xC000A2A5\n\tSTATUS_WOF_WIM_RESOURCE_TABLE_CORRUPT                                     NTStatus      = 0xC000A2A6\n\tSTATUS_WOF_FILE_RESOURCE_TABLE_CORRUPT                                    NTStatus      = 0xC000A2A7\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE                             NTStatus      = 0xC000CE01\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT                        NTStatus      = 0xC000CE02\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_BUSY                                    NTStatus      = 0xC000CE03\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN                        NTStatus      = 0xC000CE04\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION                       NTStatus      = 0xC000CE05\n\tSTATUS_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT                              NTStatus      = 0xC000CF00\n\tSTATUS_CLOUD_FILE_PROVIDER_NOT_RUNNING                                    NTStatus      = 0xC000CF01\n\tSTATUS_CLOUD_FILE_METADATA_CORRUPT                                        NTStatus      = 0xC000CF02\n\tSTATUS_CLOUD_FILE_METADATA_TOO_LARGE                                      NTStatus      = 0xC000CF03\n\tSTATUS_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE                                 NTStatus      = 0x8000CF04\n\tSTATUS_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS                                 NTStatus      = 0x8000CF05\n\tSTATUS_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED                          NTStatus      = 0xC000CF06\n\tSTATUS_NOT_A_CLOUD_FILE                                                   NTStatus      = 0xC000CF07\n\tSTATUS_CLOUD_FILE_NOT_IN_SYNC                                             NTStatus      = 0xC000CF08\n\tSTATUS_CLOUD_FILE_ALREADY_CONNECTED                                       NTStatus      = 0xC000CF09\n\tSTATUS_CLOUD_FILE_NOT_SUPPORTED                                           NTStatus      = 0xC000CF0A\n\tSTATUS_CLOUD_FILE_INVALID_REQUEST                                         NTStatus      = 0xC000CF0B\n\tSTATUS_CLOUD_FILE_READ_ONLY_VOLUME                                        NTStatus      = 0xC000CF0C\n\tSTATUS_CLOUD_FILE_CONNECTED_PROVIDER_ONLY                                 NTStatus      = 0xC000CF0D\n\tSTATUS_CLOUD_FILE_VALIDATION_FAILED                                       NTStatus      = 0xC000CF0E\n\tSTATUS_CLOUD_FILE_AUTHENTICATION_FAILED                                   NTStatus      = 0xC000CF0F\n\tSTATUS_CLOUD_FILE_INSUFFICIENT_RESOURCES                                  NTStatus      = 0xC000CF10\n\tSTATUS_CLOUD_FILE_NETWORK_UNAVAILABLE                                     NTStatus      = 0xC000CF11\n\tSTATUS_CLOUD_FILE_UNSUCCESSFUL                                            NTStatus      = 0xC000CF12\n\tSTATUS_CLOUD_FILE_NOT_UNDER_SYNC_ROOT                                     NTStatus      = 0xC000CF13\n\tSTATUS_CLOUD_FILE_IN_USE                                                  NTStatus      = 0xC000CF14\n\tSTATUS_CLOUD_FILE_PINNED                                                  NTStatus      = 0xC000CF15\n\tSTATUS_CLOUD_FILE_REQUEST_ABORTED                                         NTStatus      = 0xC000CF16\n\tSTATUS_CLOUD_FILE_PROPERTY_CORRUPT                                        NTStatus      = 0xC000CF17\n\tSTATUS_CLOUD_FILE_ACCESS_DENIED                                           NTStatus      = 0xC000CF18\n\tSTATUS_CLOUD_FILE_INCOMPATIBLE_HARDLINKS                                  NTStatus      = 0xC000CF19\n\tSTATUS_CLOUD_FILE_PROPERTY_LOCK_CONFLICT                                  NTStatus      = 0xC000CF1A\n\tSTATUS_CLOUD_FILE_REQUEST_CANCELED                                        NTStatus      = 0xC000CF1B\n\tSTATUS_CLOUD_FILE_PROVIDER_TERMINATED                                     NTStatus      = 0xC000CF1D\n\tSTATUS_NOT_A_CLOUD_SYNC_ROOT                                              NTStatus      = 0xC000CF1E\n\tSTATUS_CLOUD_FILE_REQUEST_TIMEOUT                                         NTStatus      = 0xC000CF1F\n\tSTATUS_ACPI_INVALID_OPCODE                                                NTStatus      = 0xC0140001\n\tSTATUS_ACPI_STACK_OVERFLOW                                                NTStatus      = 0xC0140002\n\tSTATUS_ACPI_ASSERT_FAILED                                                 NTStatus      = 0xC0140003\n\tSTATUS_ACPI_INVALID_INDEX                                                 NTStatus      = 0xC0140004\n\tSTATUS_ACPI_INVALID_ARGUMENT                                              NTStatus      = 0xC0140005\n\tSTATUS_ACPI_FATAL                                                         NTStatus      = 0xC0140006\n\tSTATUS_ACPI_INVALID_SUPERNAME                                             NTStatus      = 0xC0140007\n\tSTATUS_ACPI_INVALID_ARGTYPE                                               NTStatus      = 0xC0140008\n\tSTATUS_ACPI_INVALID_OBJTYPE                                               NTStatus      = 0xC0140009\n\tSTATUS_ACPI_INVALID_TARGETTYPE                                            NTStatus      = 0xC014000A\n\tSTATUS_ACPI_INCORRECT_ARGUMENT_COUNT                                      NTStatus      = 0xC014000B\n\tSTATUS_ACPI_ADDRESS_NOT_MAPPED                                            NTStatus      = 0xC014000C\n\tSTATUS_ACPI_INVALID_EVENTTYPE                                             NTStatus      = 0xC014000D\n\tSTATUS_ACPI_HANDLER_COLLISION                                             NTStatus      = 0xC014000E\n\tSTATUS_ACPI_INVALID_DATA                                                  NTStatus      = 0xC014000F\n\tSTATUS_ACPI_INVALID_REGION                                                NTStatus      = 0xC0140010\n\tSTATUS_ACPI_INVALID_ACCESS_SIZE                                           NTStatus      = 0xC0140011\n\tSTATUS_ACPI_ACQUIRE_GLOBAL_LOCK                                           NTStatus      = 0xC0140012\n\tSTATUS_ACPI_ALREADY_INITIALIZED                                           NTStatus      = 0xC0140013\n\tSTATUS_ACPI_NOT_INITIALIZED                                               NTStatus      = 0xC0140014\n\tSTATUS_ACPI_INVALID_MUTEX_LEVEL                                           NTStatus      = 0xC0140015\n\tSTATUS_ACPI_MUTEX_NOT_OWNED                                               NTStatus      = 0xC0140016\n\tSTATUS_ACPI_MUTEX_NOT_OWNER                                               NTStatus      = 0xC0140017\n\tSTATUS_ACPI_RS_ACCESS                                                     NTStatus      = 0xC0140018\n\tSTATUS_ACPI_INVALID_TABLE                                                 NTStatus      = 0xC0140019\n\tSTATUS_ACPI_REG_HANDLER_FAILED                                            NTStatus      = 0xC0140020\n\tSTATUS_ACPI_POWER_REQUEST_FAILED                                          NTStatus      = 0xC0140021\n\tSTATUS_CTX_WINSTATION_NAME_INVALID                                        NTStatus      = 0xC00A0001\n\tSTATUS_CTX_INVALID_PD                                                     NTStatus      = 0xC00A0002\n\tSTATUS_CTX_PD_NOT_FOUND                                                   NTStatus      = 0xC00A0003\n\tSTATUS_CTX_CDM_CONNECT                                                    NTStatus      = 0x400A0004\n\tSTATUS_CTX_CDM_DISCONNECT                                                 NTStatus      = 0x400A0005\n\tSTATUS_CTX_CLOSE_PENDING                                                  NTStatus      = 0xC00A0006\n\tSTATUS_CTX_NO_OUTBUF                                                      NTStatus      = 0xC00A0007\n\tSTATUS_CTX_MODEM_INF_NOT_FOUND                                            NTStatus      = 0xC00A0008\n\tSTATUS_CTX_INVALID_MODEMNAME                                              NTStatus      = 0xC00A0009\n\tSTATUS_CTX_RESPONSE_ERROR                                                 NTStatus      = 0xC00A000A\n\tSTATUS_CTX_MODEM_RESPONSE_TIMEOUT                                         NTStatus      = 0xC00A000B\n\tSTATUS_CTX_MODEM_RESPONSE_NO_CARRIER                                      NTStatus      = 0xC00A000C\n\tSTATUS_CTX_MODEM_RESPONSE_NO_DIALTONE                                     NTStatus      = 0xC00A000D\n\tSTATUS_CTX_MODEM_RESPONSE_BUSY                                            NTStatus      = 0xC00A000E\n\tSTATUS_CTX_MODEM_RESPONSE_VOICE                                           NTStatus      = 0xC00A000F\n\tSTATUS_CTX_TD_ERROR                                                       NTStatus      = 0xC00A0010\n\tSTATUS_CTX_LICENSE_CLIENT_INVALID                                         NTStatus      = 0xC00A0012\n\tSTATUS_CTX_LICENSE_NOT_AVAILABLE                                          NTStatus      = 0xC00A0013\n\tSTATUS_CTX_LICENSE_EXPIRED                                                NTStatus      = 0xC00A0014\n\tSTATUS_CTX_WINSTATION_NOT_FOUND                                           NTStatus      = 0xC00A0015\n\tSTATUS_CTX_WINSTATION_NAME_COLLISION                                      NTStatus      = 0xC00A0016\n\tSTATUS_CTX_WINSTATION_BUSY                                                NTStatus      = 0xC00A0017\n\tSTATUS_CTX_BAD_VIDEO_MODE                                                 NTStatus      = 0xC00A0018\n\tSTATUS_CTX_GRAPHICS_INVALID                                               NTStatus      = 0xC00A0022\n\tSTATUS_CTX_NOT_CONSOLE                                                    NTStatus      = 0xC00A0024\n\tSTATUS_CTX_CLIENT_QUERY_TIMEOUT                                           NTStatus      = 0xC00A0026\n\tSTATUS_CTX_CONSOLE_DISCONNECT                                             NTStatus      = 0xC00A0027\n\tSTATUS_CTX_CONSOLE_CONNECT                                                NTStatus      = 0xC00A0028\n\tSTATUS_CTX_SHADOW_DENIED                                                  NTStatus      = 0xC00A002A\n\tSTATUS_CTX_WINSTATION_ACCESS_DENIED                                       NTStatus      = 0xC00A002B\n\tSTATUS_CTX_INVALID_WD                                                     NTStatus      = 0xC00A002E\n\tSTATUS_CTX_WD_NOT_FOUND                                                   NTStatus      = 0xC00A002F\n\tSTATUS_CTX_SHADOW_INVALID                                                 NTStatus      = 0xC00A0030\n\tSTATUS_CTX_SHADOW_DISABLED                                                NTStatus      = 0xC00A0031\n\tSTATUS_RDP_PROTOCOL_ERROR                                                 NTStatus      = 0xC00A0032\n\tSTATUS_CTX_CLIENT_LICENSE_NOT_SET                                         NTStatus      = 0xC00A0033\n\tSTATUS_CTX_CLIENT_LICENSE_IN_USE                                          NTStatus      = 0xC00A0034\n\tSTATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE                                    NTStatus      = 0xC00A0035\n\tSTATUS_CTX_SHADOW_NOT_RUNNING                                             NTStatus      = 0xC00A0036\n\tSTATUS_CTX_LOGON_DISABLED                                                 NTStatus      = 0xC00A0037\n\tSTATUS_CTX_SECURITY_LAYER_ERROR                                           NTStatus      = 0xC00A0038\n\tSTATUS_TS_INCOMPATIBLE_SESSIONS                                           NTStatus      = 0xC00A0039\n\tSTATUS_TS_VIDEO_SUBSYSTEM_ERROR                                           NTStatus      = 0xC00A003A\n\tSTATUS_PNP_BAD_MPS_TABLE                                                  NTStatus      = 0xC0040035\n\tSTATUS_PNP_TRANSLATION_FAILED                                             NTStatus      = 0xC0040036\n\tSTATUS_PNP_IRQ_TRANSLATION_FAILED                                         NTStatus      = 0xC0040037\n\tSTATUS_PNP_INVALID_ID                                                     NTStatus      = 0xC0040038\n\tSTATUS_IO_REISSUE_AS_CACHED                                               NTStatus      = 0xC0040039\n\tSTATUS_MUI_FILE_NOT_FOUND                                                 NTStatus      = 0xC00B0001\n\tSTATUS_MUI_INVALID_FILE                                                   NTStatus      = 0xC00B0002\n\tSTATUS_MUI_INVALID_RC_CONFIG                                              NTStatus      = 0xC00B0003\n\tSTATUS_MUI_INVALID_LOCALE_NAME                                            NTStatus      = 0xC00B0004\n\tSTATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME                                  NTStatus      = 0xC00B0005\n\tSTATUS_MUI_FILE_NOT_LOADED                                                NTStatus      = 0xC00B0006\n\tSTATUS_RESOURCE_ENUM_USER_STOP                                            NTStatus      = 0xC00B0007\n\tSTATUS_FLT_NO_HANDLER_DEFINED                                             NTStatus      = 0xC01C0001\n\tSTATUS_FLT_CONTEXT_ALREADY_DEFINED                                        NTStatus      = 0xC01C0002\n\tSTATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST                                   NTStatus      = 0xC01C0003\n\tSTATUS_FLT_DISALLOW_FAST_IO                                               NTStatus      = 0xC01C0004\n\tSTATUS_FLT_INVALID_NAME_REQUEST                                           NTStatus      = 0xC01C0005\n\tSTATUS_FLT_NOT_SAFE_TO_POST_OPERATION                                     NTStatus      = 0xC01C0006\n\tSTATUS_FLT_NOT_INITIALIZED                                                NTStatus      = 0xC01C0007\n\tSTATUS_FLT_FILTER_NOT_READY                                               NTStatus      = 0xC01C0008\n\tSTATUS_FLT_POST_OPERATION_CLEANUP                                         NTStatus      = 0xC01C0009\n\tSTATUS_FLT_INTERNAL_ERROR                                                 NTStatus      = 0xC01C000A\n\tSTATUS_FLT_DELETING_OBJECT                                                NTStatus      = 0xC01C000B\n\tSTATUS_FLT_MUST_BE_NONPAGED_POOL                                          NTStatus      = 0xC01C000C\n\tSTATUS_FLT_DUPLICATE_ENTRY                                                NTStatus      = 0xC01C000D\n\tSTATUS_FLT_CBDQ_DISABLED                                                  NTStatus      = 0xC01C000E\n\tSTATUS_FLT_DO_NOT_ATTACH                                                  NTStatus      = 0xC01C000F\n\tSTATUS_FLT_DO_NOT_DETACH                                                  NTStatus      = 0xC01C0010\n\tSTATUS_FLT_INSTANCE_ALTITUDE_COLLISION                                    NTStatus      = 0xC01C0011\n\tSTATUS_FLT_INSTANCE_NAME_COLLISION                                        NTStatus      = 0xC01C0012\n\tSTATUS_FLT_FILTER_NOT_FOUND                                               NTStatus      = 0xC01C0013\n\tSTATUS_FLT_VOLUME_NOT_FOUND                                               NTStatus      = 0xC01C0014\n\tSTATUS_FLT_INSTANCE_NOT_FOUND                                             NTStatus      = 0xC01C0015\n\tSTATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND                                   NTStatus      = 0xC01C0016\n\tSTATUS_FLT_INVALID_CONTEXT_REGISTRATION                                   NTStatus      = 0xC01C0017\n\tSTATUS_FLT_NAME_CACHE_MISS                                                NTStatus      = 0xC01C0018\n\tSTATUS_FLT_NO_DEVICE_OBJECT                                               NTStatus      = 0xC01C0019\n\tSTATUS_FLT_VOLUME_ALREADY_MOUNTED                                         NTStatus      = 0xC01C001A\n\tSTATUS_FLT_ALREADY_ENLISTED                                               NTStatus      = 0xC01C001B\n\tSTATUS_FLT_CONTEXT_ALREADY_LINKED                                         NTStatus      = 0xC01C001C\n\tSTATUS_FLT_NO_WAITER_FOR_REPLY                                            NTStatus      = 0xC01C0020\n\tSTATUS_FLT_REGISTRATION_BUSY                                              NTStatus      = 0xC01C0023\n\tSTATUS_SXS_SECTION_NOT_FOUND                                              NTStatus      = 0xC0150001\n\tSTATUS_SXS_CANT_GEN_ACTCTX                                                NTStatus      = 0xC0150002\n\tSTATUS_SXS_INVALID_ACTCTXDATA_FORMAT                                      NTStatus      = 0xC0150003\n\tSTATUS_SXS_ASSEMBLY_NOT_FOUND                                             NTStatus      = 0xC0150004\n\tSTATUS_SXS_MANIFEST_FORMAT_ERROR                                          NTStatus      = 0xC0150005\n\tSTATUS_SXS_MANIFEST_PARSE_ERROR                                           NTStatus      = 0xC0150006\n\tSTATUS_SXS_ACTIVATION_CONTEXT_DISABLED                                    NTStatus      = 0xC0150007\n\tSTATUS_SXS_KEY_NOT_FOUND                                                  NTStatus      = 0xC0150008\n\tSTATUS_SXS_VERSION_CONFLICT                                               NTStatus      = 0xC0150009\n\tSTATUS_SXS_WRONG_SECTION_TYPE                                             NTStatus      = 0xC015000A\n\tSTATUS_SXS_THREAD_QUERIES_DISABLED                                        NTStatus      = 0xC015000B\n\tSTATUS_SXS_ASSEMBLY_MISSING                                               NTStatus      = 0xC015000C\n\tSTATUS_SXS_RELEASE_ACTIVATION_CONTEXT                                     NTStatus      = 0x4015000D\n\tSTATUS_SXS_PROCESS_DEFAULT_ALREADY_SET                                    NTStatus      = 0xC015000E\n\tSTATUS_SXS_EARLY_DEACTIVATION                                             NTStatus      = 0xC015000F\n\tSTATUS_SXS_INVALID_DEACTIVATION                                           NTStatus      = 0xC0150010\n\tSTATUS_SXS_MULTIPLE_DEACTIVATION                                          NTStatus      = 0xC0150011\n\tSTATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY                        NTStatus      = 0xC0150012\n\tSTATUS_SXS_PROCESS_TERMINATION_REQUESTED                                  NTStatus      = 0xC0150013\n\tSTATUS_SXS_CORRUPT_ACTIVATION_STACK                                       NTStatus      = 0xC0150014\n\tSTATUS_SXS_CORRUPTION                                                     NTStatus      = 0xC0150015\n\tSTATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE                               NTStatus      = 0xC0150016\n\tSTATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME                                NTStatus      = 0xC0150017\n\tSTATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE                                   NTStatus      = 0xC0150018\n\tSTATUS_SXS_IDENTITY_PARSE_ERROR                                           NTStatus      = 0xC0150019\n\tSTATUS_SXS_COMPONENT_STORE_CORRUPT                                        NTStatus      = 0xC015001A\n\tSTATUS_SXS_FILE_HASH_MISMATCH                                             NTStatus      = 0xC015001B\n\tSTATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT                  NTStatus      = 0xC015001C\n\tSTATUS_SXS_IDENTITIES_DIFFERENT                                           NTStatus      = 0xC015001D\n\tSTATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT                                   NTStatus      = 0xC015001E\n\tSTATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY                                      NTStatus      = 0xC015001F\n\tSTATUS_ADVANCED_INSTALLER_FAILED                                          NTStatus      = 0xC0150020\n\tSTATUS_XML_ENCODING_MISMATCH                                              NTStatus      = 0xC0150021\n\tSTATUS_SXS_MANIFEST_TOO_BIG                                               NTStatus      = 0xC0150022\n\tSTATUS_SXS_SETTING_NOT_REGISTERED                                         NTStatus      = 0xC0150023\n\tSTATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE                                 NTStatus      = 0xC0150024\n\tSTATUS_SMI_PRIMITIVE_INSTALLER_FAILED                                     NTStatus      = 0xC0150025\n\tSTATUS_GENERIC_COMMAND_FAILED                                             NTStatus      = 0xC0150026\n\tSTATUS_SXS_FILE_HASH_MISSING                                              NTStatus      = 0xC0150027\n\tSTATUS_CLUSTER_INVALID_NODE                                               NTStatus      = 0xC0130001\n\tSTATUS_CLUSTER_NODE_EXISTS                                                NTStatus      = 0xC0130002\n\tSTATUS_CLUSTER_JOIN_IN_PROGRESS                                           NTStatus      = 0xC0130003\n\tSTATUS_CLUSTER_NODE_NOT_FOUND                                             NTStatus      = 0xC0130004\n\tSTATUS_CLUSTER_LOCAL_NODE_NOT_FOUND                                       NTStatus      = 0xC0130005\n\tSTATUS_CLUSTER_NETWORK_EXISTS                                             NTStatus      = 0xC0130006\n\tSTATUS_CLUSTER_NETWORK_NOT_FOUND                                          NTStatus      = 0xC0130007\n\tSTATUS_CLUSTER_NETINTERFACE_EXISTS                                        NTStatus      = 0xC0130008\n\tSTATUS_CLUSTER_NETINTERFACE_NOT_FOUND                                     NTStatus      = 0xC0130009\n\tSTATUS_CLUSTER_INVALID_REQUEST                                            NTStatus      = 0xC013000A\n\tSTATUS_CLUSTER_INVALID_NETWORK_PROVIDER                                   NTStatus      = 0xC013000B\n\tSTATUS_CLUSTER_NODE_DOWN                                                  NTStatus      = 0xC013000C\n\tSTATUS_CLUSTER_NODE_UNREACHABLE                                           NTStatus      = 0xC013000D\n\tSTATUS_CLUSTER_NODE_NOT_MEMBER                                            NTStatus      = 0xC013000E\n\tSTATUS_CLUSTER_JOIN_NOT_IN_PROGRESS                                       NTStatus      = 0xC013000F\n\tSTATUS_CLUSTER_INVALID_NETWORK                                            NTStatus      = 0xC0130010\n\tSTATUS_CLUSTER_NO_NET_ADAPTERS                                            NTStatus      = 0xC0130011\n\tSTATUS_CLUSTER_NODE_UP                                                    NTStatus      = 0xC0130012\n\tSTATUS_CLUSTER_NODE_PAUSED                                                NTStatus      = 0xC0130013\n\tSTATUS_CLUSTER_NODE_NOT_PAUSED                                            NTStatus      = 0xC0130014\n\tSTATUS_CLUSTER_NO_SECURITY_CONTEXT                                        NTStatus      = 0xC0130015\n\tSTATUS_CLUSTER_NETWORK_NOT_INTERNAL                                       NTStatus      = 0xC0130016\n\tSTATUS_CLUSTER_POISONED                                                   NTStatus      = 0xC0130017\n\tSTATUS_CLUSTER_NON_CSV_PATH                                               NTStatus      = 0xC0130018\n\tSTATUS_CLUSTER_CSV_VOLUME_NOT_LOCAL                                       NTStatus      = 0xC0130019\n\tSTATUS_CLUSTER_CSV_READ_OPLOCK_BREAK_IN_PROGRESS                          NTStatus      = 0xC0130020\n\tSTATUS_CLUSTER_CSV_AUTO_PAUSE_ERROR                                       NTStatus      = 0xC0130021\n\tSTATUS_CLUSTER_CSV_REDIRECTED                                             NTStatus      = 0xC0130022\n\tSTATUS_CLUSTER_CSV_NOT_REDIRECTED                                         NTStatus      = 0xC0130023\n\tSTATUS_CLUSTER_CSV_VOLUME_DRAINING                                        NTStatus      = 0xC0130024\n\tSTATUS_CLUSTER_CSV_SNAPSHOT_CREATION_IN_PROGRESS                          NTStatus      = 0xC0130025\n\tSTATUS_CLUSTER_CSV_VOLUME_DRAINING_SUCCEEDED_DOWNLEVEL                    NTStatus      = 0xC0130026\n\tSTATUS_CLUSTER_CSV_NO_SNAPSHOTS                                           NTStatus      = 0xC0130027\n\tSTATUS_CSV_IO_PAUSE_TIMEOUT                                               NTStatus      = 0xC0130028\n\tSTATUS_CLUSTER_CSV_INVALID_HANDLE                                         NTStatus      = 0xC0130029\n\tSTATUS_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR                          NTStatus      = 0xC0130030\n\tSTATUS_CLUSTER_CAM_TICKET_REPLAY_DETECTED                                 NTStatus      = 0xC0130031\n\tSTATUS_TRANSACTIONAL_CONFLICT                                             NTStatus      = 0xC0190001\n\tSTATUS_INVALID_TRANSACTION                                                NTStatus      = 0xC0190002\n\tSTATUS_TRANSACTION_NOT_ACTIVE                                             NTStatus      = 0xC0190003\n\tSTATUS_TM_INITIALIZATION_FAILED                                           NTStatus      = 0xC0190004\n\tSTATUS_RM_NOT_ACTIVE                                                      NTStatus      = 0xC0190005\n\tSTATUS_RM_METADATA_CORRUPT                                                NTStatus      = 0xC0190006\n\tSTATUS_TRANSACTION_NOT_JOINED                                             NTStatus      = 0xC0190007\n\tSTATUS_DIRECTORY_NOT_RM                                                   NTStatus      = 0xC0190008\n\tSTATUS_COULD_NOT_RESIZE_LOG                                               NTStatus      = 0x80190009\n\tSTATUS_TRANSACTIONS_UNSUPPORTED_REMOTE                                    NTStatus      = 0xC019000A\n\tSTATUS_LOG_RESIZE_INVALID_SIZE                                            NTStatus      = 0xC019000B\n\tSTATUS_REMOTE_FILE_VERSION_MISMATCH                                       NTStatus      = 0xC019000C\n\tSTATUS_CRM_PROTOCOL_ALREADY_EXISTS                                        NTStatus      = 0xC019000F\n\tSTATUS_TRANSACTION_PROPAGATION_FAILED                                     NTStatus      = 0xC0190010\n\tSTATUS_CRM_PROTOCOL_NOT_FOUND                                             NTStatus      = 0xC0190011\n\tSTATUS_TRANSACTION_SUPERIOR_EXISTS                                        NTStatus      = 0xC0190012\n\tSTATUS_TRANSACTION_REQUEST_NOT_VALID                                      NTStatus      = 0xC0190013\n\tSTATUS_TRANSACTION_NOT_REQUESTED                                          NTStatus      = 0xC0190014\n\tSTATUS_TRANSACTION_ALREADY_ABORTED                                        NTStatus      = 0xC0190015\n\tSTATUS_TRANSACTION_ALREADY_COMMITTED                                      NTStatus      = 0xC0190016\n\tSTATUS_TRANSACTION_INVALID_MARSHALL_BUFFER                                NTStatus      = 0xC0190017\n\tSTATUS_CURRENT_TRANSACTION_NOT_VALID                                      NTStatus      = 0xC0190018\n\tSTATUS_LOG_GROWTH_FAILED                                                  NTStatus      = 0xC0190019\n\tSTATUS_OBJECT_NO_LONGER_EXISTS                                            NTStatus      = 0xC0190021\n\tSTATUS_STREAM_MINIVERSION_NOT_FOUND                                       NTStatus      = 0xC0190022\n\tSTATUS_STREAM_MINIVERSION_NOT_VALID                                       NTStatus      = 0xC0190023\n\tSTATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION                NTStatus      = 0xC0190024\n\tSTATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT                           NTStatus      = 0xC0190025\n\tSTATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS                               NTStatus      = 0xC0190026\n\tSTATUS_HANDLE_NO_LONGER_VALID                                             NTStatus      = 0xC0190028\n\tSTATUS_NO_TXF_METADATA                                                    NTStatus      = 0x80190029\n\tSTATUS_LOG_CORRUPTION_DETECTED                                            NTStatus      = 0xC0190030\n\tSTATUS_CANT_RECOVER_WITH_HANDLE_OPEN                                      NTStatus      = 0x80190031\n\tSTATUS_RM_DISCONNECTED                                                    NTStatus      = 0xC0190032\n\tSTATUS_ENLISTMENT_NOT_SUPERIOR                                            NTStatus      = 0xC0190033\n\tSTATUS_RECOVERY_NOT_NEEDED                                                NTStatus      = 0x40190034\n\tSTATUS_RM_ALREADY_STARTED                                                 NTStatus      = 0x40190035\n\tSTATUS_FILE_IDENTITY_NOT_PERSISTENT                                       NTStatus      = 0xC0190036\n\tSTATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY                                NTStatus      = 0xC0190037\n\tSTATUS_CANT_CROSS_RM_BOUNDARY                                             NTStatus      = 0xC0190038\n\tSTATUS_TXF_DIR_NOT_EMPTY                                                  NTStatus      = 0xC0190039\n\tSTATUS_INDOUBT_TRANSACTIONS_EXIST                                         NTStatus      = 0xC019003A\n\tSTATUS_TM_VOLATILE                                                        NTStatus      = 0xC019003B\n\tSTATUS_ROLLBACK_TIMER_EXPIRED                                             NTStatus      = 0xC019003C\n\tSTATUS_TXF_ATTRIBUTE_CORRUPT                                              NTStatus      = 0xC019003D\n\tSTATUS_EFS_NOT_ALLOWED_IN_TRANSACTION                                     NTStatus      = 0xC019003E\n\tSTATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED                                     NTStatus      = 0xC019003F\n\tSTATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE                              NTStatus      = 0xC0190040\n\tSTATUS_TXF_METADATA_ALREADY_PRESENT                                       NTStatus      = 0x80190041\n\tSTATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET                                NTStatus      = 0x80190042\n\tSTATUS_TRANSACTION_REQUIRED_PROMOTION                                     NTStatus      = 0xC0190043\n\tSTATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION                                 NTStatus      = 0xC0190044\n\tSTATUS_TRANSACTIONS_NOT_FROZEN                                            NTStatus      = 0xC0190045\n\tSTATUS_TRANSACTION_FREEZE_IN_PROGRESS                                     NTStatus      = 0xC0190046\n\tSTATUS_NOT_SNAPSHOT_VOLUME                                                NTStatus      = 0xC0190047\n\tSTATUS_NO_SAVEPOINT_WITH_OPEN_FILES                                       NTStatus      = 0xC0190048\n\tSTATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION                                  NTStatus      = 0xC0190049\n\tSTATUS_TM_IDENTITY_MISMATCH                                               NTStatus      = 0xC019004A\n\tSTATUS_FLOATED_SECTION                                                    NTStatus      = 0xC019004B\n\tSTATUS_CANNOT_ACCEPT_TRANSACTED_WORK                                      NTStatus      = 0xC019004C\n\tSTATUS_CANNOT_ABORT_TRANSACTIONS                                          NTStatus      = 0xC019004D\n\tSTATUS_TRANSACTION_NOT_FOUND                                              NTStatus      = 0xC019004E\n\tSTATUS_RESOURCEMANAGER_NOT_FOUND                                          NTStatus      = 0xC019004F\n\tSTATUS_ENLISTMENT_NOT_FOUND                                               NTStatus      = 0xC0190050\n\tSTATUS_TRANSACTIONMANAGER_NOT_FOUND                                       NTStatus      = 0xC0190051\n\tSTATUS_TRANSACTIONMANAGER_NOT_ONLINE                                      NTStatus      = 0xC0190052\n\tSTATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION                         NTStatus      = 0xC0190053\n\tSTATUS_TRANSACTION_NOT_ROOT                                               NTStatus      = 0xC0190054\n\tSTATUS_TRANSACTION_OBJECT_EXPIRED                                         NTStatus      = 0xC0190055\n\tSTATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION                             NTStatus      = 0xC0190056\n\tSTATUS_TRANSACTION_RESPONSE_NOT_ENLISTED                                  NTStatus      = 0xC0190057\n\tSTATUS_TRANSACTION_RECORD_TOO_LONG                                        NTStatus      = 0xC0190058\n\tSTATUS_NO_LINK_TRACKING_IN_TRANSACTION                                    NTStatus      = 0xC0190059\n\tSTATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION                             NTStatus      = 0xC019005A\n\tSTATUS_TRANSACTION_INTEGRITY_VIOLATED                                     NTStatus      = 0xC019005B\n\tSTATUS_TRANSACTIONMANAGER_IDENTITY_MISMATCH                               NTStatus      = 0xC019005C\n\tSTATUS_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT                                   NTStatus      = 0xC019005D\n\tSTATUS_TRANSACTION_MUST_WRITETHROUGH                                      NTStatus      = 0xC019005E\n\tSTATUS_TRANSACTION_NO_SUPERIOR                                            NTStatus      = 0xC019005F\n\tSTATUS_EXPIRED_HANDLE                                                     NTStatus      = 0xC0190060\n\tSTATUS_TRANSACTION_NOT_ENLISTED                                           NTStatus      = 0xC0190061\n\tSTATUS_LOG_SECTOR_INVALID                                                 NTStatus      = 0xC01A0001\n\tSTATUS_LOG_SECTOR_PARITY_INVALID                                          NTStatus      = 0xC01A0002\n\tSTATUS_LOG_SECTOR_REMAPPED                                                NTStatus      = 0xC01A0003\n\tSTATUS_LOG_BLOCK_INCOMPLETE                                               NTStatus      = 0xC01A0004\n\tSTATUS_LOG_INVALID_RANGE                                                  NTStatus      = 0xC01A0005\n\tSTATUS_LOG_BLOCKS_EXHAUSTED                                               NTStatus      = 0xC01A0006\n\tSTATUS_LOG_READ_CONTEXT_INVALID                                           NTStatus      = 0xC01A0007\n\tSTATUS_LOG_RESTART_INVALID                                                NTStatus      = 0xC01A0008\n\tSTATUS_LOG_BLOCK_VERSION                                                  NTStatus      = 0xC01A0009\n\tSTATUS_LOG_BLOCK_INVALID                                                  NTStatus      = 0xC01A000A\n\tSTATUS_LOG_READ_MODE_INVALID                                              NTStatus      = 0xC01A000B\n\tSTATUS_LOG_NO_RESTART                                                     NTStatus      = 0x401A000C\n\tSTATUS_LOG_METADATA_CORRUPT                                               NTStatus      = 0xC01A000D\n\tSTATUS_LOG_METADATA_INVALID                                               NTStatus      = 0xC01A000E\n\tSTATUS_LOG_METADATA_INCONSISTENT                                          NTStatus      = 0xC01A000F\n\tSTATUS_LOG_RESERVATION_INVALID                                            NTStatus      = 0xC01A0010\n\tSTATUS_LOG_CANT_DELETE                                                    NTStatus      = 0xC01A0011\n\tSTATUS_LOG_CONTAINER_LIMIT_EXCEEDED                                       NTStatus      = 0xC01A0012\n\tSTATUS_LOG_START_OF_LOG                                                   NTStatus      = 0xC01A0013\n\tSTATUS_LOG_POLICY_ALREADY_INSTALLED                                       NTStatus      = 0xC01A0014\n\tSTATUS_LOG_POLICY_NOT_INSTALLED                                           NTStatus      = 0xC01A0015\n\tSTATUS_LOG_POLICY_INVALID                                                 NTStatus      = 0xC01A0016\n\tSTATUS_LOG_POLICY_CONFLICT                                                NTStatus      = 0xC01A0017\n\tSTATUS_LOG_PINNED_ARCHIVE_TAIL                                            NTStatus      = 0xC01A0018\n\tSTATUS_LOG_RECORD_NONEXISTENT                                             NTStatus      = 0xC01A0019\n\tSTATUS_LOG_RECORDS_RESERVED_INVALID                                       NTStatus      = 0xC01A001A\n\tSTATUS_LOG_SPACE_RESERVED_INVALID                                         NTStatus      = 0xC01A001B\n\tSTATUS_LOG_TAIL_INVALID                                                   NTStatus      = 0xC01A001C\n\tSTATUS_LOG_FULL                                                           NTStatus      = 0xC01A001D\n\tSTATUS_LOG_MULTIPLEXED                                                    NTStatus      = 0xC01A001E\n\tSTATUS_LOG_DEDICATED                                                      NTStatus      = 0xC01A001F\n\tSTATUS_LOG_ARCHIVE_NOT_IN_PROGRESS                                        NTStatus      = 0xC01A0020\n\tSTATUS_LOG_ARCHIVE_IN_PROGRESS                                            NTStatus      = 0xC01A0021\n\tSTATUS_LOG_EPHEMERAL                                                      NTStatus      = 0xC01A0022\n\tSTATUS_LOG_NOT_ENOUGH_CONTAINERS                                          NTStatus      = 0xC01A0023\n\tSTATUS_LOG_CLIENT_ALREADY_REGISTERED                                      NTStatus      = 0xC01A0024\n\tSTATUS_LOG_CLIENT_NOT_REGISTERED                                          NTStatus      = 0xC01A0025\n\tSTATUS_LOG_FULL_HANDLER_IN_PROGRESS                                       NTStatus      = 0xC01A0026\n\tSTATUS_LOG_CONTAINER_READ_FAILED                                          NTStatus      = 0xC01A0027\n\tSTATUS_LOG_CONTAINER_WRITE_FAILED                                         NTStatus      = 0xC01A0028\n\tSTATUS_LOG_CONTAINER_OPEN_FAILED                                          NTStatus      = 0xC01A0029\n\tSTATUS_LOG_CONTAINER_STATE_INVALID                                        NTStatus      = 0xC01A002A\n\tSTATUS_LOG_STATE_INVALID                                                  NTStatus      = 0xC01A002B\n\tSTATUS_LOG_PINNED                                                         NTStatus      = 0xC01A002C\n\tSTATUS_LOG_METADATA_FLUSH_FAILED                                          NTStatus      = 0xC01A002D\n\tSTATUS_LOG_INCONSISTENT_SECURITY                                          NTStatus      = 0xC01A002E\n\tSTATUS_LOG_APPENDED_FLUSH_FAILED                                          NTStatus      = 0xC01A002F\n\tSTATUS_LOG_PINNED_RESERVATION                                             NTStatus      = 0xC01A0030\n\tSTATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD                                   NTStatus      = 0xC01B00EA\n\tSTATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED                         NTStatus      = 0x801B00EB\n\tSTATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST                                  NTStatus      = 0x401B00EC\n\tSTATUS_MONITOR_NO_DESCRIPTOR                                              NTStatus      = 0xC01D0001\n\tSTATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT                                  NTStatus      = 0xC01D0002\n\tSTATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM                                NTStatus      = 0xC01D0003\n\tSTATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK                              NTStatus      = 0xC01D0004\n\tSTATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED                          NTStatus      = 0xC01D0005\n\tSTATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK                         NTStatus      = 0xC01D0006\n\tSTATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK                         NTStatus      = 0xC01D0007\n\tSTATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA                                    NTStatus      = 0xC01D0008\n\tSTATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK                              NTStatus      = 0xC01D0009\n\tSTATUS_MONITOR_INVALID_MANUFACTURE_DATE                                   NTStatus      = 0xC01D000A\n\tSTATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER                                  NTStatus      = 0xC01E0000\n\tSTATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER                                   NTStatus      = 0xC01E0001\n\tSTATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER                                   NTStatus      = 0xC01E0002\n\tSTATUS_GRAPHICS_ADAPTER_WAS_RESET                                         NTStatus      = 0xC01E0003\n\tSTATUS_GRAPHICS_INVALID_DRIVER_MODEL                                      NTStatus      = 0xC01E0004\n\tSTATUS_GRAPHICS_PRESENT_MODE_CHANGED                                      NTStatus      = 0xC01E0005\n\tSTATUS_GRAPHICS_PRESENT_OCCLUDED                                          NTStatus      = 0xC01E0006\n\tSTATUS_GRAPHICS_PRESENT_DENIED                                            NTStatus      = 0xC01E0007\n\tSTATUS_GRAPHICS_CANNOTCOLORCONVERT                                        NTStatus      = 0xC01E0008\n\tSTATUS_GRAPHICS_DRIVER_MISMATCH                                           NTStatus      = 0xC01E0009\n\tSTATUS_GRAPHICS_PARTIAL_DATA_POPULATED                                    NTStatus      = 0x401E000A\n\tSTATUS_GRAPHICS_PRESENT_REDIRECTION_DISABLED                              NTStatus      = 0xC01E000B\n\tSTATUS_GRAPHICS_PRESENT_UNOCCLUDED                                        NTStatus      = 0xC01E000C\n\tSTATUS_GRAPHICS_WINDOWDC_NOT_AVAILABLE                                    NTStatus      = 0xC01E000D\n\tSTATUS_GRAPHICS_WINDOWLESS_PRESENT_DISABLED                               NTStatus      = 0xC01E000E\n\tSTATUS_GRAPHICS_PRESENT_INVALID_WINDOW                                    NTStatus      = 0xC01E000F\n\tSTATUS_GRAPHICS_PRESENT_BUFFER_NOT_BOUND                                  NTStatus      = 0xC01E0010\n\tSTATUS_GRAPHICS_VAIL_STATE_CHANGED                                        NTStatus      = 0xC01E0011\n\tSTATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN                        NTStatus      = 0xC01E0012\n\tSTATUS_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED                           NTStatus      = 0xC01E0013\n\tSTATUS_GRAPHICS_NO_VIDEO_MEMORY                                           NTStatus      = 0xC01E0100\n\tSTATUS_GRAPHICS_CANT_LOCK_MEMORY                                          NTStatus      = 0xC01E0101\n\tSTATUS_GRAPHICS_ALLOCATION_BUSY                                           NTStatus      = 0xC01E0102\n\tSTATUS_GRAPHICS_TOO_MANY_REFERENCES                                       NTStatus      = 0xC01E0103\n\tSTATUS_GRAPHICS_TRY_AGAIN_LATER                                           NTStatus      = 0xC01E0104\n\tSTATUS_GRAPHICS_TRY_AGAIN_NOW                                             NTStatus      = 0xC01E0105\n\tSTATUS_GRAPHICS_ALLOCATION_INVALID                                        NTStatus      = 0xC01E0106\n\tSTATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE                          NTStatus      = 0xC01E0107\n\tSTATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED                          NTStatus      = 0xC01E0108\n\tSTATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION                              NTStatus      = 0xC01E0109\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_USAGE                                  NTStatus      = 0xC01E0110\n\tSTATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION                             NTStatus      = 0xC01E0111\n\tSTATUS_GRAPHICS_ALLOCATION_CLOSED                                         NTStatus      = 0xC01E0112\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE                               NTStatus      = 0xC01E0113\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE                                 NTStatus      = 0xC01E0114\n\tSTATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE                                   NTStatus      = 0xC01E0115\n\tSTATUS_GRAPHICS_ALLOCATION_CONTENT_LOST                                   NTStatus      = 0xC01E0116\n\tSTATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE                                   NTStatus      = 0xC01E0200\n\tSTATUS_GRAPHICS_SKIP_ALLOCATION_PREPARATION                               NTStatus      = 0x401E0201\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY                                    NTStatus      = 0xC01E0300\n\tSTATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED                              NTStatus      = 0xC01E0301\n\tSTATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED                    NTStatus      = 0xC01E0302\n\tSTATUS_GRAPHICS_INVALID_VIDPN                                             NTStatus      = 0xC01E0303\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE                              NTStatus      = 0xC01E0304\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET                              NTStatus      = 0xC01E0305\n\tSTATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED                              NTStatus      = 0xC01E0306\n\tSTATUS_GRAPHICS_MODE_NOT_PINNED                                           NTStatus      = 0x401E0307\n\tSTATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET                               NTStatus      = 0xC01E0308\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET                               NTStatus      = 0xC01E0309\n\tSTATUS_GRAPHICS_INVALID_FREQUENCY                                         NTStatus      = 0xC01E030A\n\tSTATUS_GRAPHICS_INVALID_ACTIVE_REGION                                     NTStatus      = 0xC01E030B\n\tSTATUS_GRAPHICS_INVALID_TOTAL_REGION                                      NTStatus      = 0xC01E030C\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE                         NTStatus      = 0xC01E0310\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE                         NTStatus      = 0xC01E0311\n\tSTATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET                            NTStatus      = 0xC01E0312\n\tSTATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY                                  NTStatus      = 0xC01E0313\n\tSTATUS_GRAPHICS_MODE_ALREADY_IN_MODESET                                   NTStatus      = 0xC01E0314\n\tSTATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET                             NTStatus      = 0xC01E0315\n\tSTATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET                             NTStatus      = 0xC01E0316\n\tSTATUS_GRAPHICS_SOURCE_ALREADY_IN_SET                                     NTStatus      = 0xC01E0317\n\tSTATUS_GRAPHICS_TARGET_ALREADY_IN_SET                                     NTStatus      = 0xC01E0318\n\tSTATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH                                NTStatus      = 0xC01E0319\n\tSTATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY                             NTStatus      = 0xC01E031A\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET                         NTStatus      = 0xC01E031B\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE                            NTStatus      = 0xC01E031C\n\tSTATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET                                 NTStatus      = 0xC01E031D\n\tSTATUS_GRAPHICS_NO_PREFERRED_MODE                                         NTStatus      = 0x401E031E\n\tSTATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET                             NTStatus      = 0xC01E031F\n\tSTATUS_GRAPHICS_STALE_MODESET                                             NTStatus      = 0xC01E0320\n\tSTATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET                             NTStatus      = 0xC01E0321\n\tSTATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE                               NTStatus      = 0xC01E0322\n\tSTATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN                           NTStatus      = 0xC01E0323\n\tSTATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE                                    NTStatus      = 0xC01E0324\n\tSTATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION           NTStatus      = 0xC01E0325\n\tSTATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES                   NTStatus      = 0xC01E0326\n\tSTATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY                                      NTStatus      = 0xC01E0327\n\tSTATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE                     NTStatus      = 0xC01E0328\n\tSTATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET                     NTStatus      = 0xC01E0329\n\tSTATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET                              NTStatus      = 0xC01E032A\n\tSTATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR                                 NTStatus      = 0xC01E032B\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET                              NTStatus      = 0xC01E032C\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET                          NTStatus      = 0xC01E032D\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE                       NTStatus      = 0xC01E032E\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE                          NTStatus      = 0xC01E032F\n\tSTATUS_GRAPHICS_RESOURCES_NOT_RELATED                                     NTStatus      = 0xC01E0330\n\tSTATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE                                  NTStatus      = 0xC01E0331\n\tSTATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE                                  NTStatus      = 0xC01E0332\n\tSTATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET                                 NTStatus      = 0xC01E0333\n\tSTATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER              NTStatus      = 0xC01E0334\n\tSTATUS_GRAPHICS_NO_VIDPNMGR                                               NTStatus      = 0xC01E0335\n\tSTATUS_GRAPHICS_NO_ACTIVE_VIDPN                                           NTStatus      = 0xC01E0336\n\tSTATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY                                      NTStatus      = 0xC01E0337\n\tSTATUS_GRAPHICS_MONITOR_NOT_CONNECTED                                     NTStatus      = 0xC01E0338\n\tSTATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY                                    NTStatus      = 0xC01E0339\n\tSTATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE                               NTStatus      = 0xC01E033A\n\tSTATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE                                NTStatus      = 0xC01E033B\n\tSTATUS_GRAPHICS_INVALID_STRIDE                                            NTStatus      = 0xC01E033C\n\tSTATUS_GRAPHICS_INVALID_PIXELFORMAT                                       NTStatus      = 0xC01E033D\n\tSTATUS_GRAPHICS_INVALID_COLORBASIS                                        NTStatus      = 0xC01E033E\n\tSTATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE                              NTStatus      = 0xC01E033F\n\tSTATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY                                    NTStatus      = 0xC01E0340\n\tSTATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT                        NTStatus      = 0xC01E0341\n\tSTATUS_GRAPHICS_VIDPN_SOURCE_IN_USE                                       NTStatus      = 0xC01E0342\n\tSTATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN                                  NTStatus      = 0xC01E0343\n\tSTATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL                           NTStatus      = 0xC01E0344\n\tSTATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION              NTStatus      = 0xC01E0345\n\tSTATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED        NTStatus      = 0xC01E0346\n\tSTATUS_GRAPHICS_INVALID_GAMMA_RAMP                                        NTStatus      = 0xC01E0347\n\tSTATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED                                  NTStatus      = 0xC01E0348\n\tSTATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED                               NTStatus      = 0xC01E0349\n\tSTATUS_GRAPHICS_MODE_NOT_IN_MODESET                                       NTStatus      = 0xC01E034A\n\tSTATUS_GRAPHICS_DATASET_IS_EMPTY                                          NTStatus      = 0x401E034B\n\tSTATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET                               NTStatus      = 0x401E034C\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON              NTStatus      = 0xC01E034D\n\tSTATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE                                 NTStatus      = 0xC01E034E\n\tSTATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE                               NTStatus      = 0xC01E034F\n\tSTATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS                         NTStatus      = 0xC01E0350\n\tSTATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED           NTStatus      = 0x401E0351\n\tSTATUS_GRAPHICS_INVALID_SCANLINE_ORDERING                                 NTStatus      = 0xC01E0352\n\tSTATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED                              NTStatus      = 0xC01E0353\n\tSTATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS                          NTStatus      = 0xC01E0354\n\tSTATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT                               NTStatus      = 0xC01E0355\n\tSTATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM                            NTStatus      = 0xC01E0356\n\tSTATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN                         NTStatus      = 0xC01E0357\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT                 NTStatus      = 0xC01E0358\n\tSTATUS_GRAPHICS_MAX_NUM_PATHS_REACHED                                     NTStatus      = 0xC01E0359\n\tSTATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION                        NTStatus      = 0xC01E035A\n\tSTATUS_GRAPHICS_INVALID_CLIENT_TYPE                                       NTStatus      = 0xC01E035B\n\tSTATUS_GRAPHICS_CLIENTVIDPN_NOT_SET                                       NTStatus      = 0xC01E035C\n\tSTATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED                         NTStatus      = 0xC01E0400\n\tSTATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED                            NTStatus      = 0xC01E0401\n\tSTATUS_GRAPHICS_UNKNOWN_CHILD_STATUS                                      NTStatus      = 0x401E042F\n\tSTATUS_GRAPHICS_NOT_A_LINKED_ADAPTER                                      NTStatus      = 0xC01E0430\n\tSTATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED                                   NTStatus      = 0xC01E0431\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED                                 NTStatus      = 0xC01E0432\n\tSTATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY                                   NTStatus      = 0xC01E0433\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_STARTED                                    NTStatus      = 0xC01E0434\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON                                 NTStatus      = 0xC01E0435\n\tSTATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE                            NTStatus      = 0xC01E0436\n\tSTATUS_GRAPHICS_LEADLINK_START_DEFERRED                                   NTStatus      = 0x401E0437\n\tSTATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER                                    NTStatus      = 0xC01E0438\n\tSTATUS_GRAPHICS_POLLING_TOO_FREQUENTLY                                    NTStatus      = 0x401E0439\n\tSTATUS_GRAPHICS_START_DEFERRED                                            NTStatus      = 0x401E043A\n\tSTATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED                               NTStatus      = 0xC01E043B\n\tSTATUS_GRAPHICS_DEPENDABLE_CHILD_STATUS                                   NTStatus      = 0x401E043C\n\tSTATUS_GRAPHICS_OPM_NOT_SUPPORTED                                         NTStatus      = 0xC01E0500\n\tSTATUS_GRAPHICS_COPP_NOT_SUPPORTED                                        NTStatus      = 0xC01E0501\n\tSTATUS_GRAPHICS_UAB_NOT_SUPPORTED                                         NTStatus      = 0xC01E0502\n\tSTATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS                          NTStatus      = 0xC01E0503\n\tSTATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST                            NTStatus      = 0xC01E0505\n\tSTATUS_GRAPHICS_OPM_INTERNAL_ERROR                                        NTStatus      = 0xC01E050B\n\tSTATUS_GRAPHICS_OPM_INVALID_HANDLE                                        NTStatus      = 0xC01E050C\n\tSTATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH                            NTStatus      = 0xC01E050E\n\tSTATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED                                 NTStatus      = 0xC01E050F\n\tSTATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED                                  NTStatus      = 0xC01E0510\n\tSTATUS_GRAPHICS_PVP_HFS_FAILED                                            NTStatus      = 0xC01E0511\n\tSTATUS_GRAPHICS_OPM_INVALID_SRM                                           NTStatus      = 0xC01E0512\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP                          NTStatus      = 0xC01E0513\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP                           NTStatus      = 0xC01E0514\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA                         NTStatus      = 0xC01E0515\n\tSTATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET                                    NTStatus      = 0xC01E0516\n\tSTATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH                                   NTStatus      = 0xC01E0517\n\tSTATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE                      NTStatus      = 0xC01E0518\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS                     NTStatus      = 0xC01E051A\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS         NTStatus      = 0xC01E051C\n\tSTATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST                           NTStatus      = 0xC01E051D\n\tSTATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR                                 NTStatus      = 0xC01E051E\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS          NTStatus      = 0xC01E051F\n\tSTATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED                               NTStatus      = 0xC01E0520\n\tSTATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST                         NTStatus      = 0xC01E0521\n\tSTATUS_GRAPHICS_I2C_NOT_SUPPORTED                                         NTStatus      = 0xC01E0580\n\tSTATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST                                 NTStatus      = 0xC01E0581\n\tSTATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA                               NTStatus      = 0xC01E0582\n\tSTATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA                                  NTStatus      = 0xC01E0583\n\tSTATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED                                   NTStatus      = 0xC01E0584\n\tSTATUS_GRAPHICS_DDCCI_INVALID_DATA                                        NTStatus      = 0xC01E0585\n\tSTATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE         NTStatus      = 0xC01E0586\n\tSTATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING                         NTStatus      = 0xC01E0587\n\tSTATUS_GRAPHICS_MCA_INTERNAL_ERROR                                        NTStatus      = 0xC01E0588\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND                             NTStatus      = 0xC01E0589\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH                              NTStatus      = 0xC01E058A\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM                            NTStatus      = 0xC01E058B\n\tSTATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE                           NTStatus      = 0xC01E058C\n\tSTATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS                                  NTStatus      = 0xC01E058D\n\tSTATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED                            NTStatus      = 0xC01E05E0\n\tSTATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME                     NTStatus      = 0xC01E05E1\n\tSTATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP                    NTStatus      = 0xC01E05E2\n\tSTATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED                           NTStatus      = 0xC01E05E3\n\tSTATUS_GRAPHICS_INVALID_POINTER                                           NTStatus      = 0xC01E05E4\n\tSTATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE                  NTStatus      = 0xC01E05E5\n\tSTATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL                                 NTStatus      = 0xC01E05E6\n\tSTATUS_GRAPHICS_INTERNAL_ERROR                                            NTStatus      = 0xC01E05E7\n\tSTATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS                           NTStatus      = 0xC01E05E8\n\tSTATUS_FVE_LOCKED_VOLUME                                                  NTStatus      = 0xC0210000\n\tSTATUS_FVE_NOT_ENCRYPTED                                                  NTStatus      = 0xC0210001\n\tSTATUS_FVE_BAD_INFORMATION                                                NTStatus      = 0xC0210002\n\tSTATUS_FVE_TOO_SMALL                                                      NTStatus      = 0xC0210003\n\tSTATUS_FVE_FAILED_WRONG_FS                                                NTStatus      = 0xC0210004\n\tSTATUS_FVE_BAD_PARTITION_SIZE                                             NTStatus      = 0xC0210005\n\tSTATUS_FVE_FS_NOT_EXTENDED                                                NTStatus      = 0xC0210006\n\tSTATUS_FVE_FS_MOUNTED                                                     NTStatus      = 0xC0210007\n\tSTATUS_FVE_NO_LICENSE                                                     NTStatus      = 0xC0210008\n\tSTATUS_FVE_ACTION_NOT_ALLOWED                                             NTStatus      = 0xC0210009\n\tSTATUS_FVE_BAD_DATA                                                       NTStatus      = 0xC021000A\n\tSTATUS_FVE_VOLUME_NOT_BOUND                                               NTStatus      = 0xC021000B\n\tSTATUS_FVE_NOT_DATA_VOLUME                                                NTStatus      = 0xC021000C\n\tSTATUS_FVE_CONV_READ_ERROR                                                NTStatus      = 0xC021000D\n\tSTATUS_FVE_CONV_WRITE_ERROR                                               NTStatus      = 0xC021000E\n\tSTATUS_FVE_OVERLAPPED_UPDATE                                              NTStatus      = 0xC021000F\n\tSTATUS_FVE_FAILED_SECTOR_SIZE                                             NTStatus      = 0xC0210010\n\tSTATUS_FVE_FAILED_AUTHENTICATION                                          NTStatus      = 0xC0210011\n\tSTATUS_FVE_NOT_OS_VOLUME                                                  NTStatus      = 0xC0210012\n\tSTATUS_FVE_KEYFILE_NOT_FOUND                                              NTStatus      = 0xC0210013\n\tSTATUS_FVE_KEYFILE_INVALID                                                NTStatus      = 0xC0210014\n\tSTATUS_FVE_KEYFILE_NO_VMK                                                 NTStatus      = 0xC0210015\n\tSTATUS_FVE_TPM_DISABLED                                                   NTStatus      = 0xC0210016\n\tSTATUS_FVE_TPM_SRK_AUTH_NOT_ZERO                                          NTStatus      = 0xC0210017\n\tSTATUS_FVE_TPM_INVALID_PCR                                                NTStatus      = 0xC0210018\n\tSTATUS_FVE_TPM_NO_VMK                                                     NTStatus      = 0xC0210019\n\tSTATUS_FVE_PIN_INVALID                                                    NTStatus      = 0xC021001A\n\tSTATUS_FVE_AUTH_INVALID_APPLICATION                                       NTStatus      = 0xC021001B\n\tSTATUS_FVE_AUTH_INVALID_CONFIG                                            NTStatus      = 0xC021001C\n\tSTATUS_FVE_DEBUGGER_ENABLED                                               NTStatus      = 0xC021001D\n\tSTATUS_FVE_DRY_RUN_FAILED                                                 NTStatus      = 0xC021001E\n\tSTATUS_FVE_BAD_METADATA_POINTER                                           NTStatus      = 0xC021001F\n\tSTATUS_FVE_OLD_METADATA_COPY                                              NTStatus      = 0xC0210020\n\tSTATUS_FVE_REBOOT_REQUIRED                                                NTStatus      = 0xC0210021\n\tSTATUS_FVE_RAW_ACCESS                                                     NTStatus      = 0xC0210022\n\tSTATUS_FVE_RAW_BLOCKED                                                    NTStatus      = 0xC0210023\n\tSTATUS_FVE_NO_AUTOUNLOCK_MASTER_KEY                                       NTStatus      = 0xC0210024\n\tSTATUS_FVE_MOR_FAILED                                                     NTStatus      = 0xC0210025\n\tSTATUS_FVE_NO_FEATURE_LICENSE                                             NTStatus      = 0xC0210026\n\tSTATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED                            NTStatus      = 0xC0210027\n\tSTATUS_FVE_CONV_RECOVERY_FAILED                                           NTStatus      = 0xC0210028\n\tSTATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG                                      NTStatus      = 0xC0210029\n\tSTATUS_FVE_INVALID_DATUM_TYPE                                             NTStatus      = 0xC021002A\n\tSTATUS_FVE_VOLUME_TOO_SMALL                                               NTStatus      = 0xC0210030\n\tSTATUS_FVE_ENH_PIN_INVALID                                                NTStatus      = 0xC0210031\n\tSTATUS_FVE_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE                      NTStatus      = 0xC0210032\n\tSTATUS_FVE_WIPE_NOT_ALLOWED_ON_TP_STORAGE                                 NTStatus      = 0xC0210033\n\tSTATUS_FVE_NOT_ALLOWED_ON_CSV_STACK                                       NTStatus      = 0xC0210034\n\tSTATUS_FVE_NOT_ALLOWED_ON_CLUSTER                                         NTStatus      = 0xC0210035\n\tSTATUS_FVE_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING                        NTStatus      = 0xC0210036\n\tSTATUS_FVE_WIPE_CANCEL_NOT_APPLICABLE                                     NTStatus      = 0xC0210037\n\tSTATUS_FVE_EDRIVE_DRY_RUN_FAILED                                          NTStatus      = 0xC0210038\n\tSTATUS_FVE_SECUREBOOT_DISABLED                                            NTStatus      = 0xC0210039\n\tSTATUS_FVE_SECUREBOOT_CONFIG_CHANGE                                       NTStatus      = 0xC021003A\n\tSTATUS_FVE_DEVICE_LOCKEDOUT                                               NTStatus      = 0xC021003B\n\tSTATUS_FVE_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT                             NTStatus      = 0xC021003C\n\tSTATUS_FVE_NOT_DE_VOLUME                                                  NTStatus      = 0xC021003D\n\tSTATUS_FVE_PROTECTION_DISABLED                                            NTStatus      = 0xC021003E\n\tSTATUS_FVE_PROTECTION_CANNOT_BE_DISABLED                                  NTStatus      = 0xC021003F\n\tSTATUS_FVE_OSV_KSR_NOT_ALLOWED                                            NTStatus      = 0xC0210040\n\tSTATUS_FWP_CALLOUT_NOT_FOUND                                              NTStatus      = 0xC0220001\n\tSTATUS_FWP_CONDITION_NOT_FOUND                                            NTStatus      = 0xC0220002\n\tSTATUS_FWP_FILTER_NOT_FOUND                                               NTStatus      = 0xC0220003\n\tSTATUS_FWP_LAYER_NOT_FOUND                                                NTStatus      = 0xC0220004\n\tSTATUS_FWP_PROVIDER_NOT_FOUND                                             NTStatus      = 0xC0220005\n\tSTATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND                                     NTStatus      = 0xC0220006\n\tSTATUS_FWP_SUBLAYER_NOT_FOUND                                             NTStatus      = 0xC0220007\n\tSTATUS_FWP_NOT_FOUND                                                      NTStatus      = 0xC0220008\n\tSTATUS_FWP_ALREADY_EXISTS                                                 NTStatus      = 0xC0220009\n\tSTATUS_FWP_IN_USE                                                         NTStatus      = 0xC022000A\n\tSTATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS                                    NTStatus      = 0xC022000B\n\tSTATUS_FWP_WRONG_SESSION                                                  NTStatus      = 0xC022000C\n\tSTATUS_FWP_NO_TXN_IN_PROGRESS                                             NTStatus      = 0xC022000D\n\tSTATUS_FWP_TXN_IN_PROGRESS                                                NTStatus      = 0xC022000E\n\tSTATUS_FWP_TXN_ABORTED                                                    NTStatus      = 0xC022000F\n\tSTATUS_FWP_SESSION_ABORTED                                                NTStatus      = 0xC0220010\n\tSTATUS_FWP_INCOMPATIBLE_TXN                                               NTStatus      = 0xC0220011\n\tSTATUS_FWP_TIMEOUT                                                        NTStatus      = 0xC0220012\n\tSTATUS_FWP_NET_EVENTS_DISABLED                                            NTStatus      = 0xC0220013\n\tSTATUS_FWP_INCOMPATIBLE_LAYER                                             NTStatus      = 0xC0220014\n\tSTATUS_FWP_KM_CLIENTS_ONLY                                                NTStatus      = 0xC0220015\n\tSTATUS_FWP_LIFETIME_MISMATCH                                              NTStatus      = 0xC0220016\n\tSTATUS_FWP_BUILTIN_OBJECT                                                 NTStatus      = 0xC0220017\n\tSTATUS_FWP_TOO_MANY_CALLOUTS                                              NTStatus      = 0xC0220018\n\tSTATUS_FWP_NOTIFICATION_DROPPED                                           NTStatus      = 0xC0220019\n\tSTATUS_FWP_TRAFFIC_MISMATCH                                               NTStatus      = 0xC022001A\n\tSTATUS_FWP_INCOMPATIBLE_SA_STATE                                          NTStatus      = 0xC022001B\n\tSTATUS_FWP_NULL_POINTER                                                   NTStatus      = 0xC022001C\n\tSTATUS_FWP_INVALID_ENUMERATOR                                             NTStatus      = 0xC022001D\n\tSTATUS_FWP_INVALID_FLAGS                                                  NTStatus      = 0xC022001E\n\tSTATUS_FWP_INVALID_NET_MASK                                               NTStatus      = 0xC022001F\n\tSTATUS_FWP_INVALID_RANGE                                                  NTStatus      = 0xC0220020\n\tSTATUS_FWP_INVALID_INTERVAL                                               NTStatus      = 0xC0220021\n\tSTATUS_FWP_ZERO_LENGTH_ARRAY                                              NTStatus      = 0xC0220022\n\tSTATUS_FWP_NULL_DISPLAY_NAME                                              NTStatus      = 0xC0220023\n\tSTATUS_FWP_INVALID_ACTION_TYPE                                            NTStatus      = 0xC0220024\n\tSTATUS_FWP_INVALID_WEIGHT                                                 NTStatus      = 0xC0220025\n\tSTATUS_FWP_MATCH_TYPE_MISMATCH                                            NTStatus      = 0xC0220026\n\tSTATUS_FWP_TYPE_MISMATCH                                                  NTStatus      = 0xC0220027\n\tSTATUS_FWP_OUT_OF_BOUNDS                                                  NTStatus      = 0xC0220028\n\tSTATUS_FWP_RESERVED                                                       NTStatus      = 0xC0220029\n\tSTATUS_FWP_DUPLICATE_CONDITION                                            NTStatus      = 0xC022002A\n\tSTATUS_FWP_DUPLICATE_KEYMOD                                               NTStatus      = 0xC022002B\n\tSTATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER                                 NTStatus      = 0xC022002C\n\tSTATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER                              NTStatus      = 0xC022002D\n\tSTATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER                                NTStatus      = 0xC022002E\n\tSTATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT                              NTStatus      = 0xC022002F\n\tSTATUS_FWP_INCOMPATIBLE_AUTH_METHOD                                       NTStatus      = 0xC0220030\n\tSTATUS_FWP_INCOMPATIBLE_DH_GROUP                                          NTStatus      = 0xC0220031\n\tSTATUS_FWP_EM_NOT_SUPPORTED                                               NTStatus      = 0xC0220032\n\tSTATUS_FWP_NEVER_MATCH                                                    NTStatus      = 0xC0220033\n\tSTATUS_FWP_PROVIDER_CONTEXT_MISMATCH                                      NTStatus      = 0xC0220034\n\tSTATUS_FWP_INVALID_PARAMETER                                              NTStatus      = 0xC0220035\n\tSTATUS_FWP_TOO_MANY_SUBLAYERS                                             NTStatus      = 0xC0220036\n\tSTATUS_FWP_CALLOUT_NOTIFICATION_FAILED                                    NTStatus      = 0xC0220037\n\tSTATUS_FWP_INVALID_AUTH_TRANSFORM                                         NTStatus      = 0xC0220038\n\tSTATUS_FWP_INVALID_CIPHER_TRANSFORM                                       NTStatus      = 0xC0220039\n\tSTATUS_FWP_INCOMPATIBLE_CIPHER_TRANSFORM                                  NTStatus      = 0xC022003A\n\tSTATUS_FWP_INVALID_TRANSFORM_COMBINATION                                  NTStatus      = 0xC022003B\n\tSTATUS_FWP_DUPLICATE_AUTH_METHOD                                          NTStatus      = 0xC022003C\n\tSTATUS_FWP_INVALID_TUNNEL_ENDPOINT                                        NTStatus      = 0xC022003D\n\tSTATUS_FWP_L2_DRIVER_NOT_READY                                            NTStatus      = 0xC022003E\n\tSTATUS_FWP_KEY_DICTATOR_ALREADY_REGISTERED                                NTStatus      = 0xC022003F\n\tSTATUS_FWP_KEY_DICTATION_INVALID_KEYING_MATERIAL                          NTStatus      = 0xC0220040\n\tSTATUS_FWP_CONNECTIONS_DISABLED                                           NTStatus      = 0xC0220041\n\tSTATUS_FWP_INVALID_DNS_NAME                                               NTStatus      = 0xC0220042\n\tSTATUS_FWP_STILL_ON                                                       NTStatus      = 0xC0220043\n\tSTATUS_FWP_IKEEXT_NOT_RUNNING                                             NTStatus      = 0xC0220044\n\tSTATUS_FWP_TCPIP_NOT_READY                                                NTStatus      = 0xC0220100\n\tSTATUS_FWP_INJECT_HANDLE_CLOSING                                          NTStatus      = 0xC0220101\n\tSTATUS_FWP_INJECT_HANDLE_STALE                                            NTStatus      = 0xC0220102\n\tSTATUS_FWP_CANNOT_PEND                                                    NTStatus      = 0xC0220103\n\tSTATUS_FWP_DROP_NOICMP                                                    NTStatus      = 0xC0220104\n\tSTATUS_NDIS_CLOSING                                                       NTStatus      = 0xC0230002\n\tSTATUS_NDIS_BAD_VERSION                                                   NTStatus      = 0xC0230004\n\tSTATUS_NDIS_BAD_CHARACTERISTICS                                           NTStatus      = 0xC0230005\n\tSTATUS_NDIS_ADAPTER_NOT_FOUND                                             NTStatus      = 0xC0230006\n\tSTATUS_NDIS_OPEN_FAILED                                                   NTStatus      = 0xC0230007\n\tSTATUS_NDIS_DEVICE_FAILED                                                 NTStatus      = 0xC0230008\n\tSTATUS_NDIS_MULTICAST_FULL                                                NTStatus      = 0xC0230009\n\tSTATUS_NDIS_MULTICAST_EXISTS                                              NTStatus      = 0xC023000A\n\tSTATUS_NDIS_MULTICAST_NOT_FOUND                                           NTStatus      = 0xC023000B\n\tSTATUS_NDIS_REQUEST_ABORTED                                               NTStatus      = 0xC023000C\n\tSTATUS_NDIS_RESET_IN_PROGRESS                                             NTStatus      = 0xC023000D\n\tSTATUS_NDIS_NOT_SUPPORTED                                                 NTStatus      = 0xC02300BB\n\tSTATUS_NDIS_INVALID_PACKET                                                NTStatus      = 0xC023000F\n\tSTATUS_NDIS_ADAPTER_NOT_READY                                             NTStatus      = 0xC0230011\n\tSTATUS_NDIS_INVALID_LENGTH                                                NTStatus      = 0xC0230014\n\tSTATUS_NDIS_INVALID_DATA                                                  NTStatus      = 0xC0230015\n\tSTATUS_NDIS_BUFFER_TOO_SHORT                                              NTStatus      = 0xC0230016\n\tSTATUS_NDIS_INVALID_OID                                                   NTStatus      = 0xC0230017\n\tSTATUS_NDIS_ADAPTER_REMOVED                                               NTStatus      = 0xC0230018\n\tSTATUS_NDIS_UNSUPPORTED_MEDIA                                             NTStatus      = 0xC0230019\n\tSTATUS_NDIS_GROUP_ADDRESS_IN_USE                                          NTStatus      = 0xC023001A\n\tSTATUS_NDIS_FILE_NOT_FOUND                                                NTStatus      = 0xC023001B\n\tSTATUS_NDIS_ERROR_READING_FILE                                            NTStatus      = 0xC023001C\n\tSTATUS_NDIS_ALREADY_MAPPED                                                NTStatus      = 0xC023001D\n\tSTATUS_NDIS_RESOURCE_CONFLICT                                             NTStatus      = 0xC023001E\n\tSTATUS_NDIS_MEDIA_DISCONNECTED                                            NTStatus      = 0xC023001F\n\tSTATUS_NDIS_INVALID_ADDRESS                                               NTStatus      = 0xC0230022\n\tSTATUS_NDIS_INVALID_DEVICE_REQUEST                                        NTStatus      = 0xC0230010\n\tSTATUS_NDIS_PAUSED                                                        NTStatus      = 0xC023002A\n\tSTATUS_NDIS_INTERFACE_NOT_FOUND                                           NTStatus      = 0xC023002B\n\tSTATUS_NDIS_UNSUPPORTED_REVISION                                          NTStatus      = 0xC023002C\n\tSTATUS_NDIS_INVALID_PORT                                                  NTStatus      = 0xC023002D\n\tSTATUS_NDIS_INVALID_PORT_STATE                                            NTStatus      = 0xC023002E\n\tSTATUS_NDIS_LOW_POWER_STATE                                               NTStatus      = 0xC023002F\n\tSTATUS_NDIS_REINIT_REQUIRED                                               NTStatus      = 0xC0230030\n\tSTATUS_NDIS_NO_QUEUES                                                     NTStatus      = 0xC0230031\n\tSTATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED                                     NTStatus      = 0xC0232000\n\tSTATUS_NDIS_DOT11_MEDIA_IN_USE                                            NTStatus      = 0xC0232001\n\tSTATUS_NDIS_DOT11_POWER_STATE_INVALID                                     NTStatus      = 0xC0232002\n\tSTATUS_NDIS_PM_WOL_PATTERN_LIST_FULL                                      NTStatus      = 0xC0232003\n\tSTATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL                                 NTStatus      = 0xC0232004\n\tSTATUS_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE                      NTStatus      = 0xC0232005\n\tSTATUS_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE                         NTStatus      = 0xC0232006\n\tSTATUS_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED                                  NTStatus      = 0xC0232007\n\tSTATUS_NDIS_DOT11_AP_BAND_NOT_ALLOWED                                     NTStatus      = 0xC0232008\n\tSTATUS_NDIS_INDICATION_REQUIRED                                           NTStatus      = 0x40230001\n\tSTATUS_NDIS_OFFLOAD_POLICY                                                NTStatus      = 0xC023100F\n\tSTATUS_NDIS_OFFLOAD_CONNECTION_REJECTED                                   NTStatus      = 0xC0231012\n\tSTATUS_NDIS_OFFLOAD_PATH_REJECTED                                         NTStatus      = 0xC0231013\n\tSTATUS_TPM_ERROR_MASK                                                     NTStatus      = 0xC0290000\n\tSTATUS_TPM_AUTHFAIL                                                       NTStatus      = 0xC0290001\n\tSTATUS_TPM_BADINDEX                                                       NTStatus      = 0xC0290002\n\tSTATUS_TPM_BAD_PARAMETER                                                  NTStatus      = 0xC0290003\n\tSTATUS_TPM_AUDITFAILURE                                                   NTStatus      = 0xC0290004\n\tSTATUS_TPM_CLEAR_DISABLED                                                 NTStatus      = 0xC0290005\n\tSTATUS_TPM_DEACTIVATED                                                    NTStatus      = 0xC0290006\n\tSTATUS_TPM_DISABLED                                                       NTStatus      = 0xC0290007\n\tSTATUS_TPM_DISABLED_CMD                                                   NTStatus      = 0xC0290008\n\tSTATUS_TPM_FAIL                                                           NTStatus      = 0xC0290009\n\tSTATUS_TPM_BAD_ORDINAL                                                    NTStatus      = 0xC029000A\n\tSTATUS_TPM_INSTALL_DISABLED                                               NTStatus      = 0xC029000B\n\tSTATUS_TPM_INVALID_KEYHANDLE                                              NTStatus      = 0xC029000C\n\tSTATUS_TPM_KEYNOTFOUND                                                    NTStatus      = 0xC029000D\n\tSTATUS_TPM_INAPPROPRIATE_ENC                                              NTStatus      = 0xC029000E\n\tSTATUS_TPM_MIGRATEFAIL                                                    NTStatus      = 0xC029000F\n\tSTATUS_TPM_INVALID_PCR_INFO                                               NTStatus      = 0xC0290010\n\tSTATUS_TPM_NOSPACE                                                        NTStatus      = 0xC0290011\n\tSTATUS_TPM_NOSRK                                                          NTStatus      = 0xC0290012\n\tSTATUS_TPM_NOTSEALED_BLOB                                                 NTStatus      = 0xC0290013\n\tSTATUS_TPM_OWNER_SET                                                      NTStatus      = 0xC0290014\n\tSTATUS_TPM_RESOURCES                                                      NTStatus      = 0xC0290015\n\tSTATUS_TPM_SHORTRANDOM                                                    NTStatus      = 0xC0290016\n\tSTATUS_TPM_SIZE                                                           NTStatus      = 0xC0290017\n\tSTATUS_TPM_WRONGPCRVAL                                                    NTStatus      = 0xC0290018\n\tSTATUS_TPM_BAD_PARAM_SIZE                                                 NTStatus      = 0xC0290019\n\tSTATUS_TPM_SHA_THREAD                                                     NTStatus      = 0xC029001A\n\tSTATUS_TPM_SHA_ERROR                                                      NTStatus      = 0xC029001B\n\tSTATUS_TPM_FAILEDSELFTEST                                                 NTStatus      = 0xC029001C\n\tSTATUS_TPM_AUTH2FAIL                                                      NTStatus      = 0xC029001D\n\tSTATUS_TPM_BADTAG                                                         NTStatus      = 0xC029001E\n\tSTATUS_TPM_IOERROR                                                        NTStatus      = 0xC029001F\n\tSTATUS_TPM_ENCRYPT_ERROR                                                  NTStatus      = 0xC0290020\n\tSTATUS_TPM_DECRYPT_ERROR                                                  NTStatus      = 0xC0290021\n\tSTATUS_TPM_INVALID_AUTHHANDLE                                             NTStatus      = 0xC0290022\n\tSTATUS_TPM_NO_ENDORSEMENT                                                 NTStatus      = 0xC0290023\n\tSTATUS_TPM_INVALID_KEYUSAGE                                               NTStatus      = 0xC0290024\n\tSTATUS_TPM_WRONG_ENTITYTYPE                                               NTStatus      = 0xC0290025\n\tSTATUS_TPM_INVALID_POSTINIT                                               NTStatus      = 0xC0290026\n\tSTATUS_TPM_INAPPROPRIATE_SIG                                              NTStatus      = 0xC0290027\n\tSTATUS_TPM_BAD_KEY_PROPERTY                                               NTStatus      = 0xC0290028\n\tSTATUS_TPM_BAD_MIGRATION                                                  NTStatus      = 0xC0290029\n\tSTATUS_TPM_BAD_SCHEME                                                     NTStatus      = 0xC029002A\n\tSTATUS_TPM_BAD_DATASIZE                                                   NTStatus      = 0xC029002B\n\tSTATUS_TPM_BAD_MODE                                                       NTStatus      = 0xC029002C\n\tSTATUS_TPM_BAD_PRESENCE                                                   NTStatus      = 0xC029002D\n\tSTATUS_TPM_BAD_VERSION                                                    NTStatus      = 0xC029002E\n\tSTATUS_TPM_NO_WRAP_TRANSPORT                                              NTStatus      = 0xC029002F\n\tSTATUS_TPM_AUDITFAIL_UNSUCCESSFUL                                         NTStatus      = 0xC0290030\n\tSTATUS_TPM_AUDITFAIL_SUCCESSFUL                                           NTStatus      = 0xC0290031\n\tSTATUS_TPM_NOTRESETABLE                                                   NTStatus      = 0xC0290032\n\tSTATUS_TPM_NOTLOCAL                                                       NTStatus      = 0xC0290033\n\tSTATUS_TPM_BAD_TYPE                                                       NTStatus      = 0xC0290034\n\tSTATUS_TPM_INVALID_RESOURCE                                               NTStatus      = 0xC0290035\n\tSTATUS_TPM_NOTFIPS                                                        NTStatus      = 0xC0290036\n\tSTATUS_TPM_INVALID_FAMILY                                                 NTStatus      = 0xC0290037\n\tSTATUS_TPM_NO_NV_PERMISSION                                               NTStatus      = 0xC0290038\n\tSTATUS_TPM_REQUIRES_SIGN                                                  NTStatus      = 0xC0290039\n\tSTATUS_TPM_KEY_NOTSUPPORTED                                               NTStatus      = 0xC029003A\n\tSTATUS_TPM_AUTH_CONFLICT                                                  NTStatus      = 0xC029003B\n\tSTATUS_TPM_AREA_LOCKED                                                    NTStatus      = 0xC029003C\n\tSTATUS_TPM_BAD_LOCALITY                                                   NTStatus      = 0xC029003D\n\tSTATUS_TPM_READ_ONLY                                                      NTStatus      = 0xC029003E\n\tSTATUS_TPM_PER_NOWRITE                                                    NTStatus      = 0xC029003F\n\tSTATUS_TPM_FAMILYCOUNT                                                    NTStatus      = 0xC0290040\n\tSTATUS_TPM_WRITE_LOCKED                                                   NTStatus      = 0xC0290041\n\tSTATUS_TPM_BAD_ATTRIBUTES                                                 NTStatus      = 0xC0290042\n\tSTATUS_TPM_INVALID_STRUCTURE                                              NTStatus      = 0xC0290043\n\tSTATUS_TPM_KEY_OWNER_CONTROL                                              NTStatus      = 0xC0290044\n\tSTATUS_TPM_BAD_COUNTER                                                    NTStatus      = 0xC0290045\n\tSTATUS_TPM_NOT_FULLWRITE                                                  NTStatus      = 0xC0290046\n\tSTATUS_TPM_CONTEXT_GAP                                                    NTStatus      = 0xC0290047\n\tSTATUS_TPM_MAXNVWRITES                                                    NTStatus      = 0xC0290048\n\tSTATUS_TPM_NOOPERATOR                                                     NTStatus      = 0xC0290049\n\tSTATUS_TPM_RESOURCEMISSING                                                NTStatus      = 0xC029004A\n\tSTATUS_TPM_DELEGATE_LOCK                                                  NTStatus      = 0xC029004B\n\tSTATUS_TPM_DELEGATE_FAMILY                                                NTStatus      = 0xC029004C\n\tSTATUS_TPM_DELEGATE_ADMIN                                                 NTStatus      = 0xC029004D\n\tSTATUS_TPM_TRANSPORT_NOTEXCLUSIVE                                         NTStatus      = 0xC029004E\n\tSTATUS_TPM_OWNER_CONTROL                                                  NTStatus      = 0xC029004F\n\tSTATUS_TPM_DAA_RESOURCES                                                  NTStatus      = 0xC0290050\n\tSTATUS_TPM_DAA_INPUT_DATA0                                                NTStatus      = 0xC0290051\n\tSTATUS_TPM_DAA_INPUT_DATA1                                                NTStatus      = 0xC0290052\n\tSTATUS_TPM_DAA_ISSUER_SETTINGS                                            NTStatus      = 0xC0290053\n\tSTATUS_TPM_DAA_TPM_SETTINGS                                               NTStatus      = 0xC0290054\n\tSTATUS_TPM_DAA_STAGE                                                      NTStatus      = 0xC0290055\n\tSTATUS_TPM_DAA_ISSUER_VALIDITY                                            NTStatus      = 0xC0290056\n\tSTATUS_TPM_DAA_WRONG_W                                                    NTStatus      = 0xC0290057\n\tSTATUS_TPM_BAD_HANDLE                                                     NTStatus      = 0xC0290058\n\tSTATUS_TPM_BAD_DELEGATE                                                   NTStatus      = 0xC0290059\n\tSTATUS_TPM_BADCONTEXT                                                     NTStatus      = 0xC029005A\n\tSTATUS_TPM_TOOMANYCONTEXTS                                                NTStatus      = 0xC029005B\n\tSTATUS_TPM_MA_TICKET_SIGNATURE                                            NTStatus      = 0xC029005C\n\tSTATUS_TPM_MA_DESTINATION                                                 NTStatus      = 0xC029005D\n\tSTATUS_TPM_MA_SOURCE                                                      NTStatus      = 0xC029005E\n\tSTATUS_TPM_MA_AUTHORITY                                                   NTStatus      = 0xC029005F\n\tSTATUS_TPM_PERMANENTEK                                                    NTStatus      = 0xC0290061\n\tSTATUS_TPM_BAD_SIGNATURE                                                  NTStatus      = 0xC0290062\n\tSTATUS_TPM_NOCONTEXTSPACE                                                 NTStatus      = 0xC0290063\n\tSTATUS_TPM_20_E_ASYMMETRIC                                                NTStatus      = 0xC0290081\n\tSTATUS_TPM_20_E_ATTRIBUTES                                                NTStatus      = 0xC0290082\n\tSTATUS_TPM_20_E_HASH                                                      NTStatus      = 0xC0290083\n\tSTATUS_TPM_20_E_VALUE                                                     NTStatus      = 0xC0290084\n\tSTATUS_TPM_20_E_HIERARCHY                                                 NTStatus      = 0xC0290085\n\tSTATUS_TPM_20_E_KEY_SIZE                                                  NTStatus      = 0xC0290087\n\tSTATUS_TPM_20_E_MGF                                                       NTStatus      = 0xC0290088\n\tSTATUS_TPM_20_E_MODE                                                      NTStatus      = 0xC0290089\n\tSTATUS_TPM_20_E_TYPE                                                      NTStatus      = 0xC029008A\n\tSTATUS_TPM_20_E_HANDLE                                                    NTStatus      = 0xC029008B\n\tSTATUS_TPM_20_E_KDF                                                       NTStatus      = 0xC029008C\n\tSTATUS_TPM_20_E_RANGE                                                     NTStatus      = 0xC029008D\n\tSTATUS_TPM_20_E_AUTH_FAIL                                                 NTStatus      = 0xC029008E\n\tSTATUS_TPM_20_E_NONCE                                                     NTStatus      = 0xC029008F\n\tSTATUS_TPM_20_E_PP                                                        NTStatus      = 0xC0290090\n\tSTATUS_TPM_20_E_SCHEME                                                    NTStatus      = 0xC0290092\n\tSTATUS_TPM_20_E_SIZE                                                      NTStatus      = 0xC0290095\n\tSTATUS_TPM_20_E_SYMMETRIC                                                 NTStatus      = 0xC0290096\n\tSTATUS_TPM_20_E_TAG                                                       NTStatus      = 0xC0290097\n\tSTATUS_TPM_20_E_SELECTOR                                                  NTStatus      = 0xC0290098\n\tSTATUS_TPM_20_E_INSUFFICIENT                                              NTStatus      = 0xC029009A\n\tSTATUS_TPM_20_E_SIGNATURE                                                 NTStatus      = 0xC029009B\n\tSTATUS_TPM_20_E_KEY                                                       NTStatus      = 0xC029009C\n\tSTATUS_TPM_20_E_POLICY_FAIL                                               NTStatus      = 0xC029009D\n\tSTATUS_TPM_20_E_INTEGRITY                                                 NTStatus      = 0xC029009F\n\tSTATUS_TPM_20_E_TICKET                                                    NTStatus      = 0xC02900A0\n\tSTATUS_TPM_20_E_RESERVED_BITS                                             NTStatus      = 0xC02900A1\n\tSTATUS_TPM_20_E_BAD_AUTH                                                  NTStatus      = 0xC02900A2\n\tSTATUS_TPM_20_E_EXPIRED                                                   NTStatus      = 0xC02900A3\n\tSTATUS_TPM_20_E_POLICY_CC                                                 NTStatus      = 0xC02900A4\n\tSTATUS_TPM_20_E_BINDING                                                   NTStatus      = 0xC02900A5\n\tSTATUS_TPM_20_E_CURVE                                                     NTStatus      = 0xC02900A6\n\tSTATUS_TPM_20_E_ECC_POINT                                                 NTStatus      = 0xC02900A7\n\tSTATUS_TPM_20_E_INITIALIZE                                                NTStatus      = 0xC0290100\n\tSTATUS_TPM_20_E_FAILURE                                                   NTStatus      = 0xC0290101\n\tSTATUS_TPM_20_E_SEQUENCE                                                  NTStatus      = 0xC0290103\n\tSTATUS_TPM_20_E_PRIVATE                                                   NTStatus      = 0xC029010B\n\tSTATUS_TPM_20_E_HMAC                                                      NTStatus      = 0xC0290119\n\tSTATUS_TPM_20_E_DISABLED                                                  NTStatus      = 0xC0290120\n\tSTATUS_TPM_20_E_EXCLUSIVE                                                 NTStatus      = 0xC0290121\n\tSTATUS_TPM_20_E_ECC_CURVE                                                 NTStatus      = 0xC0290123\n\tSTATUS_TPM_20_E_AUTH_TYPE                                                 NTStatus      = 0xC0290124\n\tSTATUS_TPM_20_E_AUTH_MISSING                                              NTStatus      = 0xC0290125\n\tSTATUS_TPM_20_E_POLICY                                                    NTStatus      = 0xC0290126\n\tSTATUS_TPM_20_E_PCR                                                       NTStatus      = 0xC0290127\n\tSTATUS_TPM_20_E_PCR_CHANGED                                               NTStatus      = 0xC0290128\n\tSTATUS_TPM_20_E_UPGRADE                                                   NTStatus      = 0xC029012D\n\tSTATUS_TPM_20_E_TOO_MANY_CONTEXTS                                         NTStatus      = 0xC029012E\n\tSTATUS_TPM_20_E_AUTH_UNAVAILABLE                                          NTStatus      = 0xC029012F\n\tSTATUS_TPM_20_E_REBOOT                                                    NTStatus      = 0xC0290130\n\tSTATUS_TPM_20_E_UNBALANCED                                                NTStatus      = 0xC0290131\n\tSTATUS_TPM_20_E_COMMAND_SIZE                                              NTStatus      = 0xC0290142\n\tSTATUS_TPM_20_E_COMMAND_CODE                                              NTStatus      = 0xC0290143\n\tSTATUS_TPM_20_E_AUTHSIZE                                                  NTStatus      = 0xC0290144\n\tSTATUS_TPM_20_E_AUTH_CONTEXT                                              NTStatus      = 0xC0290145\n\tSTATUS_TPM_20_E_NV_RANGE                                                  NTStatus      = 0xC0290146\n\tSTATUS_TPM_20_E_NV_SIZE                                                   NTStatus      = 0xC0290147\n\tSTATUS_TPM_20_E_NV_LOCKED                                                 NTStatus      = 0xC0290148\n\tSTATUS_TPM_20_E_NV_AUTHORIZATION                                          NTStatus      = 0xC0290149\n\tSTATUS_TPM_20_E_NV_UNINITIALIZED                                          NTStatus      = 0xC029014A\n\tSTATUS_TPM_20_E_NV_SPACE                                                  NTStatus      = 0xC029014B\n\tSTATUS_TPM_20_E_NV_DEFINED                                                NTStatus      = 0xC029014C\n\tSTATUS_TPM_20_E_BAD_CONTEXT                                               NTStatus      = 0xC0290150\n\tSTATUS_TPM_20_E_CPHASH                                                    NTStatus      = 0xC0290151\n\tSTATUS_TPM_20_E_PARENT                                                    NTStatus      = 0xC0290152\n\tSTATUS_TPM_20_E_NEEDS_TEST                                                NTStatus      = 0xC0290153\n\tSTATUS_TPM_20_E_NO_RESULT                                                 NTStatus      = 0xC0290154\n\tSTATUS_TPM_20_E_SENSITIVE                                                 NTStatus      = 0xC0290155\n\tSTATUS_TPM_COMMAND_BLOCKED                                                NTStatus      = 0xC0290400\n\tSTATUS_TPM_INVALID_HANDLE                                                 NTStatus      = 0xC0290401\n\tSTATUS_TPM_DUPLICATE_VHANDLE                                              NTStatus      = 0xC0290402\n\tSTATUS_TPM_EMBEDDED_COMMAND_BLOCKED                                       NTStatus      = 0xC0290403\n\tSTATUS_TPM_EMBEDDED_COMMAND_UNSUPPORTED                                   NTStatus      = 0xC0290404\n\tSTATUS_TPM_RETRY                                                          NTStatus      = 0xC0290800\n\tSTATUS_TPM_NEEDS_SELFTEST                                                 NTStatus      = 0xC0290801\n\tSTATUS_TPM_DOING_SELFTEST                                                 NTStatus      = 0xC0290802\n\tSTATUS_TPM_DEFEND_LOCK_RUNNING                                            NTStatus      = 0xC0290803\n\tSTATUS_TPM_COMMAND_CANCELED                                               NTStatus      = 0xC0291001\n\tSTATUS_TPM_TOO_MANY_CONTEXTS                                              NTStatus      = 0xC0291002\n\tSTATUS_TPM_NOT_FOUND                                                      NTStatus      = 0xC0291003\n\tSTATUS_TPM_ACCESS_DENIED                                                  NTStatus      = 0xC0291004\n\tSTATUS_TPM_INSUFFICIENT_BUFFER                                            NTStatus      = 0xC0291005\n\tSTATUS_TPM_PPI_FUNCTION_UNSUPPORTED                                       NTStatus      = 0xC0291006\n\tSTATUS_PCP_ERROR_MASK                                                     NTStatus      = 0xC0292000\n\tSTATUS_PCP_DEVICE_NOT_READY                                               NTStatus      = 0xC0292001\n\tSTATUS_PCP_INVALID_HANDLE                                                 NTStatus      = 0xC0292002\n\tSTATUS_PCP_INVALID_PARAMETER                                              NTStatus      = 0xC0292003\n\tSTATUS_PCP_FLAG_NOT_SUPPORTED                                             NTStatus      = 0xC0292004\n\tSTATUS_PCP_NOT_SUPPORTED                                                  NTStatus      = 0xC0292005\n\tSTATUS_PCP_BUFFER_TOO_SMALL                                               NTStatus      = 0xC0292006\n\tSTATUS_PCP_INTERNAL_ERROR                                                 NTStatus      = 0xC0292007\n\tSTATUS_PCP_AUTHENTICATION_FAILED                                          NTStatus      = 0xC0292008\n\tSTATUS_PCP_AUTHENTICATION_IGNORED                                         NTStatus      = 0xC0292009\n\tSTATUS_PCP_POLICY_NOT_FOUND                                               NTStatus      = 0xC029200A\n\tSTATUS_PCP_PROFILE_NOT_FOUND                                              NTStatus      = 0xC029200B\n\tSTATUS_PCP_VALIDATION_FAILED                                              NTStatus      = 0xC029200C\n\tSTATUS_PCP_DEVICE_NOT_FOUND                                               NTStatus      = 0xC029200D\n\tSTATUS_PCP_WRONG_PARENT                                                   NTStatus      = 0xC029200E\n\tSTATUS_PCP_KEY_NOT_LOADED                                                 NTStatus      = 0xC029200F\n\tSTATUS_PCP_NO_KEY_CERTIFICATION                                           NTStatus      = 0xC0292010\n\tSTATUS_PCP_KEY_NOT_FINALIZED                                              NTStatus      = 0xC0292011\n\tSTATUS_PCP_ATTESTATION_CHALLENGE_NOT_SET                                  NTStatus      = 0xC0292012\n\tSTATUS_PCP_NOT_PCR_BOUND                                                  NTStatus      = 0xC0292013\n\tSTATUS_PCP_KEY_ALREADY_FINALIZED                                          NTStatus      = 0xC0292014\n\tSTATUS_PCP_KEY_USAGE_POLICY_NOT_SUPPORTED                                 NTStatus      = 0xC0292015\n\tSTATUS_PCP_KEY_USAGE_POLICY_INVALID                                       NTStatus      = 0xC0292016\n\tSTATUS_PCP_SOFT_KEY_ERROR                                                 NTStatus      = 0xC0292017\n\tSTATUS_PCP_KEY_NOT_AUTHENTICATED                                          NTStatus      = 0xC0292018\n\tSTATUS_PCP_KEY_NOT_AIK                                                    NTStatus      = 0xC0292019\n\tSTATUS_PCP_KEY_NOT_SIGNING_KEY                                            NTStatus      = 0xC029201A\n\tSTATUS_PCP_LOCKED_OUT                                                     NTStatus      = 0xC029201B\n\tSTATUS_PCP_CLAIM_TYPE_NOT_SUPPORTED                                       NTStatus      = 0xC029201C\n\tSTATUS_PCP_TPM_VERSION_NOT_SUPPORTED                                      NTStatus      = 0xC029201D\n\tSTATUS_PCP_BUFFER_LENGTH_MISMATCH                                         NTStatus      = 0xC029201E\n\tSTATUS_PCP_IFX_RSA_KEY_CREATION_BLOCKED                                   NTStatus      = 0xC029201F\n\tSTATUS_PCP_TICKET_MISSING                                                 NTStatus      = 0xC0292020\n\tSTATUS_PCP_RAW_POLICY_NOT_SUPPORTED                                       NTStatus      = 0xC0292021\n\tSTATUS_PCP_KEY_HANDLE_INVALIDATED                                         NTStatus      = 0xC0292022\n\tSTATUS_PCP_UNSUPPORTED_PSS_SALT                                           NTStatus      = 0x40292023\n\tSTATUS_RTPM_CONTEXT_CONTINUE                                              NTStatus      = 0x00293000\n\tSTATUS_RTPM_CONTEXT_COMPLETE                                              NTStatus      = 0x00293001\n\tSTATUS_RTPM_NO_RESULT                                                     NTStatus      = 0xC0293002\n\tSTATUS_RTPM_PCR_READ_INCOMPLETE                                           NTStatus      = 0xC0293003\n\tSTATUS_RTPM_INVALID_CONTEXT                                               NTStatus      = 0xC0293004\n\tSTATUS_RTPM_UNSUPPORTED_CMD                                               NTStatus      = 0xC0293005\n\tSTATUS_TPM_ZERO_EXHAUST_ENABLED                                           NTStatus      = 0xC0294000\n\tSTATUS_HV_INVALID_HYPERCALL_CODE                                          NTStatus      = 0xC0350002\n\tSTATUS_HV_INVALID_HYPERCALL_INPUT                                         NTStatus      = 0xC0350003\n\tSTATUS_HV_INVALID_ALIGNMENT                                               NTStatus      = 0xC0350004\n\tSTATUS_HV_INVALID_PARAMETER                                               NTStatus      = 0xC0350005\n\tSTATUS_HV_ACCESS_DENIED                                                   NTStatus      = 0xC0350006\n\tSTATUS_HV_INVALID_PARTITION_STATE                                         NTStatus      = 0xC0350007\n\tSTATUS_HV_OPERATION_DENIED                                                NTStatus      = 0xC0350008\n\tSTATUS_HV_UNKNOWN_PROPERTY                                                NTStatus      = 0xC0350009\n\tSTATUS_HV_PROPERTY_VALUE_OUT_OF_RANGE                                     NTStatus      = 0xC035000A\n\tSTATUS_HV_INSUFFICIENT_MEMORY                                             NTStatus      = 0xC035000B\n\tSTATUS_HV_PARTITION_TOO_DEEP                                              NTStatus      = 0xC035000C\n\tSTATUS_HV_INVALID_PARTITION_ID                                            NTStatus      = 0xC035000D\n\tSTATUS_HV_INVALID_VP_INDEX                                                NTStatus      = 0xC035000E\n\tSTATUS_HV_INVALID_PORT_ID                                                 NTStatus      = 0xC0350011\n\tSTATUS_HV_INVALID_CONNECTION_ID                                           NTStatus      = 0xC0350012\n\tSTATUS_HV_INSUFFICIENT_BUFFERS                                            NTStatus      = 0xC0350013\n\tSTATUS_HV_NOT_ACKNOWLEDGED                                                NTStatus      = 0xC0350014\n\tSTATUS_HV_INVALID_VP_STATE                                                NTStatus      = 0xC0350015\n\tSTATUS_HV_ACKNOWLEDGED                                                    NTStatus      = 0xC0350016\n\tSTATUS_HV_INVALID_SAVE_RESTORE_STATE                                      NTStatus      = 0xC0350017\n\tSTATUS_HV_INVALID_SYNIC_STATE                                             NTStatus      = 0xC0350018\n\tSTATUS_HV_OBJECT_IN_USE                                                   NTStatus      = 0xC0350019\n\tSTATUS_HV_INVALID_PROXIMITY_DOMAIN_INFO                                   NTStatus      = 0xC035001A\n\tSTATUS_HV_NO_DATA                                                         NTStatus      = 0xC035001B\n\tSTATUS_HV_INACTIVE                                                        NTStatus      = 0xC035001C\n\tSTATUS_HV_NO_RESOURCES                                                    NTStatus      = 0xC035001D\n\tSTATUS_HV_FEATURE_UNAVAILABLE                                             NTStatus      = 0xC035001E\n\tSTATUS_HV_INSUFFICIENT_BUFFER                                             NTStatus      = 0xC0350033\n\tSTATUS_HV_INSUFFICIENT_DEVICE_DOMAINS                                     NTStatus      = 0xC0350038\n\tSTATUS_HV_CPUID_FEATURE_VALIDATION_ERROR                                  NTStatus      = 0xC035003C\n\tSTATUS_HV_CPUID_XSAVE_FEATURE_VALIDATION_ERROR                            NTStatus      = 0xC035003D\n\tSTATUS_HV_PROCESSOR_STARTUP_TIMEOUT                                       NTStatus      = 0xC035003E\n\tSTATUS_HV_SMX_ENABLED                                                     NTStatus      = 0xC035003F\n\tSTATUS_HV_INVALID_LP_INDEX                                                NTStatus      = 0xC0350041\n\tSTATUS_HV_INVALID_REGISTER_VALUE                                          NTStatus      = 0xC0350050\n\tSTATUS_HV_INVALID_VTL_STATE                                               NTStatus      = 0xC0350051\n\tSTATUS_HV_NX_NOT_DETECTED                                                 NTStatus      = 0xC0350055\n\tSTATUS_HV_INVALID_DEVICE_ID                                               NTStatus      = 0xC0350057\n\tSTATUS_HV_INVALID_DEVICE_STATE                                            NTStatus      = 0xC0350058\n\tSTATUS_HV_PENDING_PAGE_REQUESTS                                           NTStatus      = 0x00350059\n\tSTATUS_HV_PAGE_REQUEST_INVALID                                            NTStatus      = 0xC0350060\n\tSTATUS_HV_INVALID_CPU_GROUP_ID                                            NTStatus      = 0xC035006F\n\tSTATUS_HV_INVALID_CPU_GROUP_STATE                                         NTStatus      = 0xC0350070\n\tSTATUS_HV_OPERATION_FAILED                                                NTStatus      = 0xC0350071\n\tSTATUS_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE                             NTStatus      = 0xC0350072\n\tSTATUS_HV_INSUFFICIENT_ROOT_MEMORY                                        NTStatus      = 0xC0350073\n\tSTATUS_HV_NOT_PRESENT                                                     NTStatus      = 0xC0351000\n\tSTATUS_VID_DUPLICATE_HANDLER                                              NTStatus      = 0xC0370001\n\tSTATUS_VID_TOO_MANY_HANDLERS                                              NTStatus      = 0xC0370002\n\tSTATUS_VID_QUEUE_FULL                                                     NTStatus      = 0xC0370003\n\tSTATUS_VID_HANDLER_NOT_PRESENT                                            NTStatus      = 0xC0370004\n\tSTATUS_VID_INVALID_OBJECT_NAME                                            NTStatus      = 0xC0370005\n\tSTATUS_VID_PARTITION_NAME_TOO_LONG                                        NTStatus      = 0xC0370006\n\tSTATUS_VID_MESSAGE_QUEUE_NAME_TOO_LONG                                    NTStatus      = 0xC0370007\n\tSTATUS_VID_PARTITION_ALREADY_EXISTS                                       NTStatus      = 0xC0370008\n\tSTATUS_VID_PARTITION_DOES_NOT_EXIST                                       NTStatus      = 0xC0370009\n\tSTATUS_VID_PARTITION_NAME_NOT_FOUND                                       NTStatus      = 0xC037000A\n\tSTATUS_VID_MESSAGE_QUEUE_ALREADY_EXISTS                                   NTStatus      = 0xC037000B\n\tSTATUS_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT                                   NTStatus      = 0xC037000C\n\tSTATUS_VID_MB_STILL_REFERENCED                                            NTStatus      = 0xC037000D\n\tSTATUS_VID_CHILD_GPA_PAGE_SET_CORRUPTED                                   NTStatus      = 0xC037000E\n\tSTATUS_VID_INVALID_NUMA_SETTINGS                                          NTStatus      = 0xC037000F\n\tSTATUS_VID_INVALID_NUMA_NODE_INDEX                                        NTStatus      = 0xC0370010\n\tSTATUS_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED                          NTStatus      = 0xC0370011\n\tSTATUS_VID_INVALID_MEMORY_BLOCK_HANDLE                                    NTStatus      = 0xC0370012\n\tSTATUS_VID_PAGE_RANGE_OVERFLOW                                            NTStatus      = 0xC0370013\n\tSTATUS_VID_INVALID_MESSAGE_QUEUE_HANDLE                                   NTStatus      = 0xC0370014\n\tSTATUS_VID_INVALID_GPA_RANGE_HANDLE                                       NTStatus      = 0xC0370015\n\tSTATUS_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE                             NTStatus      = 0xC0370016\n\tSTATUS_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED                               NTStatus      = 0xC0370017\n\tSTATUS_VID_INVALID_PPM_HANDLE                                             NTStatus      = 0xC0370018\n\tSTATUS_VID_MBPS_ARE_LOCKED                                                NTStatus      = 0xC0370019\n\tSTATUS_VID_MESSAGE_QUEUE_CLOSED                                           NTStatus      = 0xC037001A\n\tSTATUS_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED                               NTStatus      = 0xC037001B\n\tSTATUS_VID_STOP_PENDING                                                   NTStatus      = 0xC037001C\n\tSTATUS_VID_INVALID_PROCESSOR_STATE                                        NTStatus      = 0xC037001D\n\tSTATUS_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT                                NTStatus      = 0xC037001E\n\tSTATUS_VID_KM_INTERFACE_ALREADY_INITIALIZED                               NTStatus      = 0xC037001F\n\tSTATUS_VID_MB_PROPERTY_ALREADY_SET_RESET                                  NTStatus      = 0xC0370020\n\tSTATUS_VID_MMIO_RANGE_DESTROYED                                           NTStatus      = 0xC0370021\n\tSTATUS_VID_INVALID_CHILD_GPA_PAGE_SET                                     NTStatus      = 0xC0370022\n\tSTATUS_VID_RESERVE_PAGE_SET_IS_BEING_USED                                 NTStatus      = 0xC0370023\n\tSTATUS_VID_RESERVE_PAGE_SET_TOO_SMALL                                     NTStatus      = 0xC0370024\n\tSTATUS_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE                         NTStatus      = 0xC0370025\n\tSTATUS_VID_MBP_COUNT_EXCEEDED_LIMIT                                       NTStatus      = 0xC0370026\n\tSTATUS_VID_SAVED_STATE_CORRUPT                                            NTStatus      = 0xC0370027\n\tSTATUS_VID_SAVED_STATE_UNRECOGNIZED_ITEM                                  NTStatus      = 0xC0370028\n\tSTATUS_VID_SAVED_STATE_INCOMPATIBLE                                       NTStatus      = 0xC0370029\n\tSTATUS_VID_VTL_ACCESS_DENIED                                              NTStatus      = 0xC037002A\n\tSTATUS_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED                              NTStatus      = 0x80370001\n\tSTATUS_IPSEC_BAD_SPI                                                      NTStatus      = 0xC0360001\n\tSTATUS_IPSEC_SA_LIFETIME_EXPIRED                                          NTStatus      = 0xC0360002\n\tSTATUS_IPSEC_WRONG_SA                                                     NTStatus      = 0xC0360003\n\tSTATUS_IPSEC_REPLAY_CHECK_FAILED                                          NTStatus      = 0xC0360004\n\tSTATUS_IPSEC_INVALID_PACKET                                               NTStatus      = 0xC0360005\n\tSTATUS_IPSEC_INTEGRITY_CHECK_FAILED                                       NTStatus      = 0xC0360006\n\tSTATUS_IPSEC_CLEAR_TEXT_DROP                                              NTStatus      = 0xC0360007\n\tSTATUS_IPSEC_AUTH_FIREWALL_DROP                                           NTStatus      = 0xC0360008\n\tSTATUS_IPSEC_THROTTLE_DROP                                                NTStatus      = 0xC0360009\n\tSTATUS_IPSEC_DOSP_BLOCK                                                   NTStatus      = 0xC0368000\n\tSTATUS_IPSEC_DOSP_RECEIVED_MULTICAST                                      NTStatus      = 0xC0368001\n\tSTATUS_IPSEC_DOSP_INVALID_PACKET                                          NTStatus      = 0xC0368002\n\tSTATUS_IPSEC_DOSP_STATE_LOOKUP_FAILED                                     NTStatus      = 0xC0368003\n\tSTATUS_IPSEC_DOSP_MAX_ENTRIES                                             NTStatus      = 0xC0368004\n\tSTATUS_IPSEC_DOSP_KEYMOD_NOT_ALLOWED                                      NTStatus      = 0xC0368005\n\tSTATUS_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES                             NTStatus      = 0xC0368006\n\tSTATUS_VOLMGR_INCOMPLETE_REGENERATION                                     NTStatus      = 0x80380001\n\tSTATUS_VOLMGR_INCOMPLETE_DISK_MIGRATION                                   NTStatus      = 0x80380002\n\tSTATUS_VOLMGR_DATABASE_FULL                                               NTStatus      = 0xC0380001\n\tSTATUS_VOLMGR_DISK_CONFIGURATION_CORRUPTED                                NTStatus      = 0xC0380002\n\tSTATUS_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC                              NTStatus      = 0xC0380003\n\tSTATUS_VOLMGR_PACK_CONFIG_UPDATE_FAILED                                   NTStatus      = 0xC0380004\n\tSTATUS_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME                             NTStatus      = 0xC0380005\n\tSTATUS_VOLMGR_DISK_DUPLICATE                                              NTStatus      = 0xC0380006\n\tSTATUS_VOLMGR_DISK_DYNAMIC                                                NTStatus      = 0xC0380007\n\tSTATUS_VOLMGR_DISK_ID_INVALID                                             NTStatus      = 0xC0380008\n\tSTATUS_VOLMGR_DISK_INVALID                                                NTStatus      = 0xC0380009\n\tSTATUS_VOLMGR_DISK_LAST_VOTER                                             NTStatus      = 0xC038000A\n\tSTATUS_VOLMGR_DISK_LAYOUT_INVALID                                         NTStatus      = 0xC038000B\n\tSTATUS_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS              NTStatus      = 0xC038000C\n\tSTATUS_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED                            NTStatus      = 0xC038000D\n\tSTATUS_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL                            NTStatus      = 0xC038000E\n\tSTATUS_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS              NTStatus      = 0xC038000F\n\tSTATUS_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS                             NTStatus      = 0xC0380010\n\tSTATUS_VOLMGR_DISK_MISSING                                                NTStatus      = 0xC0380011\n\tSTATUS_VOLMGR_DISK_NOT_EMPTY                                              NTStatus      = 0xC0380012\n\tSTATUS_VOLMGR_DISK_NOT_ENOUGH_SPACE                                       NTStatus      = 0xC0380013\n\tSTATUS_VOLMGR_DISK_REVECTORING_FAILED                                     NTStatus      = 0xC0380014\n\tSTATUS_VOLMGR_DISK_SECTOR_SIZE_INVALID                                    NTStatus      = 0xC0380015\n\tSTATUS_VOLMGR_DISK_SET_NOT_CONTAINED                                      NTStatus      = 0xC0380016\n\tSTATUS_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS                               NTStatus      = 0xC0380017\n\tSTATUS_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES                                NTStatus      = 0xC0380018\n\tSTATUS_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED                                  NTStatus      = 0xC0380019\n\tSTATUS_VOLMGR_EXTENT_ALREADY_USED                                         NTStatus      = 0xC038001A\n\tSTATUS_VOLMGR_EXTENT_NOT_CONTIGUOUS                                       NTStatus      = 0xC038001B\n\tSTATUS_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION                                 NTStatus      = 0xC038001C\n\tSTATUS_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED                                   NTStatus      = 0xC038001D\n\tSTATUS_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION                               NTStatus      = 0xC038001E\n\tSTATUS_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH                          NTStatus      = 0xC038001F\n\tSTATUS_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED                                NTStatus      = 0xC0380020\n\tSTATUS_VOLMGR_INTERLEAVE_LENGTH_INVALID                                   NTStatus      = 0xC0380021\n\tSTATUS_VOLMGR_MAXIMUM_REGISTERED_USERS                                    NTStatus      = 0xC0380022\n\tSTATUS_VOLMGR_MEMBER_IN_SYNC                                              NTStatus      = 0xC0380023\n\tSTATUS_VOLMGR_MEMBER_INDEX_DUPLICATE                                      NTStatus      = 0xC0380024\n\tSTATUS_VOLMGR_MEMBER_INDEX_INVALID                                        NTStatus      = 0xC0380025\n\tSTATUS_VOLMGR_MEMBER_MISSING                                              NTStatus      = 0xC0380026\n\tSTATUS_VOLMGR_MEMBER_NOT_DETACHED                                         NTStatus      = 0xC0380027\n\tSTATUS_VOLMGR_MEMBER_REGENERATING                                         NTStatus      = 0xC0380028\n\tSTATUS_VOLMGR_ALL_DISKS_FAILED                                            NTStatus      = 0xC0380029\n\tSTATUS_VOLMGR_NO_REGISTERED_USERS                                         NTStatus      = 0xC038002A\n\tSTATUS_VOLMGR_NO_SUCH_USER                                                NTStatus      = 0xC038002B\n\tSTATUS_VOLMGR_NOTIFICATION_RESET                                          NTStatus      = 0xC038002C\n\tSTATUS_VOLMGR_NUMBER_OF_MEMBERS_INVALID                                   NTStatus      = 0xC038002D\n\tSTATUS_VOLMGR_NUMBER_OF_PLEXES_INVALID                                    NTStatus      = 0xC038002E\n\tSTATUS_VOLMGR_PACK_DUPLICATE                                              NTStatus      = 0xC038002F\n\tSTATUS_VOLMGR_PACK_ID_INVALID                                             NTStatus      = 0xC0380030\n\tSTATUS_VOLMGR_PACK_INVALID                                                NTStatus      = 0xC0380031\n\tSTATUS_VOLMGR_PACK_NAME_INVALID                                           NTStatus      = 0xC0380032\n\tSTATUS_VOLMGR_PACK_OFFLINE                                                NTStatus      = 0xC0380033\n\tSTATUS_VOLMGR_PACK_HAS_QUORUM                                             NTStatus      = 0xC0380034\n\tSTATUS_VOLMGR_PACK_WITHOUT_QUORUM                                         NTStatus      = 0xC0380035\n\tSTATUS_VOLMGR_PARTITION_STYLE_INVALID                                     NTStatus      = 0xC0380036\n\tSTATUS_VOLMGR_PARTITION_UPDATE_FAILED                                     NTStatus      = 0xC0380037\n\tSTATUS_VOLMGR_PLEX_IN_SYNC                                                NTStatus      = 0xC0380038\n\tSTATUS_VOLMGR_PLEX_INDEX_DUPLICATE                                        NTStatus      = 0xC0380039\n\tSTATUS_VOLMGR_PLEX_INDEX_INVALID                                          NTStatus      = 0xC038003A\n\tSTATUS_VOLMGR_PLEX_LAST_ACTIVE                                            NTStatus      = 0xC038003B\n\tSTATUS_VOLMGR_PLEX_MISSING                                                NTStatus      = 0xC038003C\n\tSTATUS_VOLMGR_PLEX_REGENERATING                                           NTStatus      = 0xC038003D\n\tSTATUS_VOLMGR_PLEX_TYPE_INVALID                                           NTStatus      = 0xC038003E\n\tSTATUS_VOLMGR_PLEX_NOT_RAID5                                              NTStatus      = 0xC038003F\n\tSTATUS_VOLMGR_PLEX_NOT_SIMPLE                                             NTStatus      = 0xC0380040\n\tSTATUS_VOLMGR_STRUCTURE_SIZE_INVALID                                      NTStatus      = 0xC0380041\n\tSTATUS_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS                              NTStatus      = 0xC0380042\n\tSTATUS_VOLMGR_TRANSACTION_IN_PROGRESS                                     NTStatus      = 0xC0380043\n\tSTATUS_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE                               NTStatus      = 0xC0380044\n\tSTATUS_VOLMGR_VOLUME_CONTAINS_MISSING_DISK                                NTStatus      = 0xC0380045\n\tSTATUS_VOLMGR_VOLUME_ID_INVALID                                           NTStatus      = 0xC0380046\n\tSTATUS_VOLMGR_VOLUME_LENGTH_INVALID                                       NTStatus      = 0xC0380047\n\tSTATUS_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE                      NTStatus      = 0xC0380048\n\tSTATUS_VOLMGR_VOLUME_NOT_MIRRORED                                         NTStatus      = 0xC0380049\n\tSTATUS_VOLMGR_VOLUME_NOT_RETAINED                                         NTStatus      = 0xC038004A\n\tSTATUS_VOLMGR_VOLUME_OFFLINE                                              NTStatus      = 0xC038004B\n\tSTATUS_VOLMGR_VOLUME_RETAINED                                             NTStatus      = 0xC038004C\n\tSTATUS_VOLMGR_NUMBER_OF_EXTENTS_INVALID                                   NTStatus      = 0xC038004D\n\tSTATUS_VOLMGR_DIFFERENT_SECTOR_SIZE                                       NTStatus      = 0xC038004E\n\tSTATUS_VOLMGR_BAD_BOOT_DISK                                               NTStatus      = 0xC038004F\n\tSTATUS_VOLMGR_PACK_CONFIG_OFFLINE                                         NTStatus      = 0xC0380050\n\tSTATUS_VOLMGR_PACK_CONFIG_ONLINE                                          NTStatus      = 0xC0380051\n\tSTATUS_VOLMGR_NOT_PRIMARY_PACK                                            NTStatus      = 0xC0380052\n\tSTATUS_VOLMGR_PACK_LOG_UPDATE_FAILED                                      NTStatus      = 0xC0380053\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID                             NTStatus      = 0xC0380054\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID                           NTStatus      = 0xC0380055\n\tSTATUS_VOLMGR_VOLUME_MIRRORED                                             NTStatus      = 0xC0380056\n\tSTATUS_VOLMGR_PLEX_NOT_SIMPLE_SPANNED                                     NTStatus      = 0xC0380057\n\tSTATUS_VOLMGR_NO_VALID_LOG_COPIES                                         NTStatus      = 0xC0380058\n\tSTATUS_VOLMGR_PRIMARY_PACK_PRESENT                                        NTStatus      = 0xC0380059\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_INVALID                                     NTStatus      = 0xC038005A\n\tSTATUS_VOLMGR_MIRROR_NOT_SUPPORTED                                        NTStatus      = 0xC038005B\n\tSTATUS_VOLMGR_RAID5_NOT_SUPPORTED                                         NTStatus      = 0xC038005C\n\tSTATUS_BCD_NOT_ALL_ENTRIES_IMPORTED                                       NTStatus      = 0x80390001\n\tSTATUS_BCD_TOO_MANY_ELEMENTS                                              NTStatus      = 0xC0390002\n\tSTATUS_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED                                   NTStatus      = 0x80390003\n\tSTATUS_VHD_DRIVE_FOOTER_MISSING                                           NTStatus      = 0xC03A0001\n\tSTATUS_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH                                 NTStatus      = 0xC03A0002\n\tSTATUS_VHD_DRIVE_FOOTER_CORRUPT                                           NTStatus      = 0xC03A0003\n\tSTATUS_VHD_FORMAT_UNKNOWN                                                 NTStatus      = 0xC03A0004\n\tSTATUS_VHD_FORMAT_UNSUPPORTED_VERSION                                     NTStatus      = 0xC03A0005\n\tSTATUS_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH                                NTStatus      = 0xC03A0006\n\tSTATUS_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION                              NTStatus      = 0xC03A0007\n\tSTATUS_VHD_SPARSE_HEADER_CORRUPT                                          NTStatus      = 0xC03A0008\n\tSTATUS_VHD_BLOCK_ALLOCATION_FAILURE                                       NTStatus      = 0xC03A0009\n\tSTATUS_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT                                 NTStatus      = 0xC03A000A\n\tSTATUS_VHD_INVALID_BLOCK_SIZE                                             NTStatus      = 0xC03A000B\n\tSTATUS_VHD_BITMAP_MISMATCH                                                NTStatus      = 0xC03A000C\n\tSTATUS_VHD_PARENT_VHD_NOT_FOUND                                           NTStatus      = 0xC03A000D\n\tSTATUS_VHD_CHILD_PARENT_ID_MISMATCH                                       NTStatus      = 0xC03A000E\n\tSTATUS_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH                                NTStatus      = 0xC03A000F\n\tSTATUS_VHD_METADATA_READ_FAILURE                                          NTStatus      = 0xC03A0010\n\tSTATUS_VHD_METADATA_WRITE_FAILURE                                         NTStatus      = 0xC03A0011\n\tSTATUS_VHD_INVALID_SIZE                                                   NTStatus      = 0xC03A0012\n\tSTATUS_VHD_INVALID_FILE_SIZE                                              NTStatus      = 0xC03A0013\n\tSTATUS_VIRTDISK_PROVIDER_NOT_FOUND                                        NTStatus      = 0xC03A0014\n\tSTATUS_VIRTDISK_NOT_VIRTUAL_DISK                                          NTStatus      = 0xC03A0015\n\tSTATUS_VHD_PARENT_VHD_ACCESS_DENIED                                       NTStatus      = 0xC03A0016\n\tSTATUS_VHD_CHILD_PARENT_SIZE_MISMATCH                                     NTStatus      = 0xC03A0017\n\tSTATUS_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED                              NTStatus      = 0xC03A0018\n\tSTATUS_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT                             NTStatus      = 0xC03A0019\n\tSTATUS_VIRTUAL_DISK_LIMITATION                                            NTStatus      = 0xC03A001A\n\tSTATUS_VHD_INVALID_TYPE                                                   NTStatus      = 0xC03A001B\n\tSTATUS_VHD_INVALID_STATE                                                  NTStatus      = 0xC03A001C\n\tSTATUS_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE                              NTStatus      = 0xC03A001D\n\tSTATUS_VIRTDISK_DISK_ALREADY_OWNED                                        NTStatus      = 0xC03A001E\n\tSTATUS_VIRTDISK_DISK_ONLINE_AND_WRITABLE                                  NTStatus      = 0xC03A001F\n\tSTATUS_CTLOG_TRACKING_NOT_INITIALIZED                                     NTStatus      = 0xC03A0020\n\tSTATUS_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE                                NTStatus      = 0xC03A0021\n\tSTATUS_CTLOG_VHD_CHANGED_OFFLINE                                          NTStatus      = 0xC03A0022\n\tSTATUS_CTLOG_INVALID_TRACKING_STATE                                       NTStatus      = 0xC03A0023\n\tSTATUS_CTLOG_INCONSISTENT_TRACKING_FILE                                   NTStatus      = 0xC03A0024\n\tSTATUS_VHD_METADATA_FULL                                                  NTStatus      = 0xC03A0028\n\tSTATUS_VHD_INVALID_CHANGE_TRACKING_ID                                     NTStatus      = 0xC03A0029\n\tSTATUS_VHD_CHANGE_TRACKING_DISABLED                                       NTStatus      = 0xC03A002A\n\tSTATUS_VHD_MISSING_CHANGE_TRACKING_INFORMATION                            NTStatus      = 0xC03A0030\n\tSTATUS_VHD_RESIZE_WOULD_TRUNCATE_DATA                                     NTStatus      = 0xC03A0031\n\tSTATUS_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE                         NTStatus      = 0xC03A0032\n\tSTATUS_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE                       NTStatus      = 0xC03A0033\n\tSTATUS_QUERY_STORAGE_ERROR                                                NTStatus      = 0x803A0001\n\tSTATUS_GDI_HANDLE_LEAK                                                    NTStatus      = 0x803F0001\n\tSTATUS_RKF_KEY_NOT_FOUND                                                  NTStatus      = 0xC0400001\n\tSTATUS_RKF_DUPLICATE_KEY                                                  NTStatus      = 0xC0400002\n\tSTATUS_RKF_BLOB_FULL                                                      NTStatus      = 0xC0400003\n\tSTATUS_RKF_STORE_FULL                                                     NTStatus      = 0xC0400004\n\tSTATUS_RKF_FILE_BLOCKED                                                   NTStatus      = 0xC0400005\n\tSTATUS_RKF_ACTIVE_KEY                                                     NTStatus      = 0xC0400006\n\tSTATUS_RDBSS_RESTART_OPERATION                                            NTStatus      = 0xC0410001\n\tSTATUS_RDBSS_CONTINUE_OPERATION                                           NTStatus      = 0xC0410002\n\tSTATUS_RDBSS_POST_OPERATION                                               NTStatus      = 0xC0410003\n\tSTATUS_RDBSS_RETRY_LOOKUP                                                 NTStatus      = 0xC0410004\n\tSTATUS_BTH_ATT_INVALID_HANDLE                                             NTStatus      = 0xC0420001\n\tSTATUS_BTH_ATT_READ_NOT_PERMITTED                                         NTStatus      = 0xC0420002\n\tSTATUS_BTH_ATT_WRITE_NOT_PERMITTED                                        NTStatus      = 0xC0420003\n\tSTATUS_BTH_ATT_INVALID_PDU                                                NTStatus      = 0xC0420004\n\tSTATUS_BTH_ATT_INSUFFICIENT_AUTHENTICATION                                NTStatus      = 0xC0420005\n\tSTATUS_BTH_ATT_REQUEST_NOT_SUPPORTED                                      NTStatus      = 0xC0420006\n\tSTATUS_BTH_ATT_INVALID_OFFSET                                             NTStatus      = 0xC0420007\n\tSTATUS_BTH_ATT_INSUFFICIENT_AUTHORIZATION                                 NTStatus      = 0xC0420008\n\tSTATUS_BTH_ATT_PREPARE_QUEUE_FULL                                         NTStatus      = 0xC0420009\n\tSTATUS_BTH_ATT_ATTRIBUTE_NOT_FOUND                                        NTStatus      = 0xC042000A\n\tSTATUS_BTH_ATT_ATTRIBUTE_NOT_LONG                                         NTStatus      = 0xC042000B\n\tSTATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE                           NTStatus      = 0xC042000C\n\tSTATUS_BTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH                             NTStatus      = 0xC042000D\n\tSTATUS_BTH_ATT_UNLIKELY                                                   NTStatus      = 0xC042000E\n\tSTATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION                                    NTStatus      = 0xC042000F\n\tSTATUS_BTH_ATT_UNSUPPORTED_GROUP_TYPE                                     NTStatus      = 0xC0420010\n\tSTATUS_BTH_ATT_INSUFFICIENT_RESOURCES                                     NTStatus      = 0xC0420011\n\tSTATUS_BTH_ATT_UNKNOWN_ERROR                                              NTStatus      = 0xC0421000\n\tSTATUS_SECUREBOOT_ROLLBACK_DETECTED                                       NTStatus      = 0xC0430001\n\tSTATUS_SECUREBOOT_POLICY_VIOLATION                                        NTStatus      = 0xC0430002\n\tSTATUS_SECUREBOOT_INVALID_POLICY                                          NTStatus      = 0xC0430003\n\tSTATUS_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND                              NTStatus      = 0xC0430004\n\tSTATUS_SECUREBOOT_POLICY_NOT_SIGNED                                       NTStatus      = 0xC0430005\n\tSTATUS_SECUREBOOT_NOT_ENABLED                                             NTStatus      = 0x80430006\n\tSTATUS_SECUREBOOT_FILE_REPLACED                                           NTStatus      = 0xC0430007\n\tSTATUS_SECUREBOOT_POLICY_NOT_AUTHORIZED                                   NTStatus      = 0xC0430008\n\tSTATUS_SECUREBOOT_POLICY_UNKNOWN                                          NTStatus      = 0xC0430009\n\tSTATUS_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION                      NTStatus      = 0xC043000A\n\tSTATUS_SECUREBOOT_PLATFORM_ID_MISMATCH                                    NTStatus      = 0xC043000B\n\tSTATUS_SECUREBOOT_POLICY_ROLLBACK_DETECTED                                NTStatus      = 0xC043000C\n\tSTATUS_SECUREBOOT_POLICY_UPGRADE_MISMATCH                                 NTStatus      = 0xC043000D\n\tSTATUS_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING                            NTStatus      = 0xC043000E\n\tSTATUS_SECUREBOOT_NOT_BASE_POLICY                                         NTStatus      = 0xC043000F\n\tSTATUS_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY                                 NTStatus      = 0xC0430010\n\tSTATUS_PLATFORM_MANIFEST_NOT_AUTHORIZED                                   NTStatus      = 0xC0EB0001\n\tSTATUS_PLATFORM_MANIFEST_INVALID                                          NTStatus      = 0xC0EB0002\n\tSTATUS_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED                              NTStatus      = 0xC0EB0003\n\tSTATUS_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED                           NTStatus      = 0xC0EB0004\n\tSTATUS_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND                              NTStatus      = 0xC0EB0005\n\tSTATUS_PLATFORM_MANIFEST_NOT_ACTIVE                                       NTStatus      = 0xC0EB0006\n\tSTATUS_PLATFORM_MANIFEST_NOT_SIGNED                                       NTStatus      = 0xC0EB0007\n\tSTATUS_SYSTEM_INTEGRITY_ROLLBACK_DETECTED                                 NTStatus      = 0xC0E90001\n\tSTATUS_SYSTEM_INTEGRITY_POLICY_VIOLATION                                  NTStatus      = 0xC0E90002\n\tSTATUS_SYSTEM_INTEGRITY_INVALID_POLICY                                    NTStatus      = 0xC0E90003\n\tSTATUS_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED                                 NTStatus      = 0xC0E90004\n\tSTATUS_SYSTEM_INTEGRITY_TOO_MANY_POLICIES                                 NTStatus      = 0xC0E90005\n\tSTATUS_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED                NTStatus      = 0xC0E90006\n\tSTATUS_NO_APPLICABLE_APP_LICENSES_FOUND                                   NTStatus      = 0xC0EA0001\n\tSTATUS_CLIP_LICENSE_NOT_FOUND                                             NTStatus      = 0xC0EA0002\n\tSTATUS_CLIP_DEVICE_LICENSE_MISSING                                        NTStatus      = 0xC0EA0003\n\tSTATUS_CLIP_LICENSE_INVALID_SIGNATURE                                     NTStatus      = 0xC0EA0004\n\tSTATUS_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID                          NTStatus      = 0xC0EA0005\n\tSTATUS_CLIP_LICENSE_EXPIRED                                               NTStatus      = 0xC0EA0006\n\tSTATUS_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE                              NTStatus      = 0xC0EA0007\n\tSTATUS_CLIP_LICENSE_NOT_SIGNED                                            NTStatus      = 0xC0EA0008\n\tSTATUS_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE                          NTStatus      = 0xC0EA0009\n\tSTATUS_CLIP_LICENSE_DEVICE_ID_MISMATCH                                    NTStatus      = 0xC0EA000A\n\tSTATUS_AUDIO_ENGINE_NODE_NOT_FOUND                                        NTStatus      = 0xC0440001\n\tSTATUS_HDAUDIO_EMPTY_CONNECTION_LIST                                      NTStatus      = 0xC0440002\n\tSTATUS_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED                              NTStatus      = 0xC0440003\n\tSTATUS_HDAUDIO_NO_LOGICAL_DEVICES_CREATED                                 NTStatus      = 0xC0440004\n\tSTATUS_HDAUDIO_NULL_LINKED_LIST_ENTRY                                     NTStatus      = 0xC0440005\n\tSTATUS_SPACES_REPAIRED                                                    NTStatus      = 0x00E70000\n\tSTATUS_SPACES_PAUSE                                                       NTStatus      = 0x00E70001\n\tSTATUS_SPACES_COMPLETE                                                    NTStatus      = 0x00E70002\n\tSTATUS_SPACES_REDIRECT                                                    NTStatus      = 0x00E70003\n\tSTATUS_SPACES_FAULT_DOMAIN_TYPE_INVALID                                   NTStatus      = 0xC0E70001\n\tSTATUS_SPACES_RESILIENCY_TYPE_INVALID                                     NTStatus      = 0xC0E70003\n\tSTATUS_SPACES_DRIVE_SECTOR_SIZE_INVALID                                   NTStatus      = 0xC0E70004\n\tSTATUS_SPACES_DRIVE_REDUNDANCY_INVALID                                    NTStatus      = 0xC0E70006\n\tSTATUS_SPACES_NUMBER_OF_DATA_COPIES_INVALID                               NTStatus      = 0xC0E70007\n\tSTATUS_SPACES_INTERLEAVE_LENGTH_INVALID                                   NTStatus      = 0xC0E70009\n\tSTATUS_SPACES_NUMBER_OF_COLUMNS_INVALID                                   NTStatus      = 0xC0E7000A\n\tSTATUS_SPACES_NOT_ENOUGH_DRIVES                                           NTStatus      = 0xC0E7000B\n\tSTATUS_SPACES_EXTENDED_ERROR                                              NTStatus      = 0xC0E7000C\n\tSTATUS_SPACES_PROVISIONING_TYPE_INVALID                                   NTStatus      = 0xC0E7000D\n\tSTATUS_SPACES_ALLOCATION_SIZE_INVALID                                     NTStatus      = 0xC0E7000E\n\tSTATUS_SPACES_ENCLOSURE_AWARE_INVALID                                     NTStatus      = 0xC0E7000F\n\tSTATUS_SPACES_WRITE_CACHE_SIZE_INVALID                                    NTStatus      = 0xC0E70010\n\tSTATUS_SPACES_NUMBER_OF_GROUPS_INVALID                                    NTStatus      = 0xC0E70011\n\tSTATUS_SPACES_DRIVE_OPERATIONAL_STATE_INVALID                             NTStatus      = 0xC0E70012\n\tSTATUS_SPACES_UPDATE_COLUMN_STATE                                         NTStatus      = 0xC0E70013\n\tSTATUS_SPACES_MAP_REQUIRED                                                NTStatus      = 0xC0E70014\n\tSTATUS_SPACES_UNSUPPORTED_VERSION                                         NTStatus      = 0xC0E70015\n\tSTATUS_SPACES_CORRUPT_METADATA                                            NTStatus      = 0xC0E70016\n\tSTATUS_SPACES_DRT_FULL                                                    NTStatus      = 0xC0E70017\n\tSTATUS_SPACES_INCONSISTENCY                                               NTStatus      = 0xC0E70018\n\tSTATUS_SPACES_LOG_NOT_READY                                               NTStatus      = 0xC0E70019\n\tSTATUS_SPACES_NO_REDUNDANCY                                               NTStatus      = 0xC0E7001A\n\tSTATUS_SPACES_DRIVE_NOT_READY                                             NTStatus      = 0xC0E7001B\n\tSTATUS_SPACES_DRIVE_SPLIT                                                 NTStatus      = 0xC0E7001C\n\tSTATUS_SPACES_DRIVE_LOST_DATA                                             NTStatus      = 0xC0E7001D\n\tSTATUS_SPACES_ENTRY_INCOMPLETE                                            NTStatus      = 0xC0E7001E\n\tSTATUS_SPACES_ENTRY_INVALID                                               NTStatus      = 0xC0E7001F\n\tSTATUS_SPACES_MARK_DIRTY                                                  NTStatus      = 0xC0E70020\n\tSTATUS_VOLSNAP_BOOTFILE_NOT_VALID                                         NTStatus      = 0xC0500003\n\tSTATUS_VOLSNAP_ACTIVATION_TIMEOUT                                         NTStatus      = 0xC0500004\n\tSTATUS_IO_PREEMPTED                                                       NTStatus      = 0xC0510001\n\tSTATUS_SVHDX_ERROR_STORED                                                 NTStatus      = 0xC05C0000\n\tSTATUS_SVHDX_ERROR_NOT_AVAILABLE                                          NTStatus      = 0xC05CFF00\n\tSTATUS_SVHDX_UNIT_ATTENTION_AVAILABLE                                     NTStatus      = 0xC05CFF01\n\tSTATUS_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED                         NTStatus      = 0xC05CFF02\n\tSTATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED                        NTStatus      = 0xC05CFF03\n\tSTATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED                         NTStatus      = 0xC05CFF04\n\tSTATUS_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED                       NTStatus      = 0xC05CFF05\n\tSTATUS_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED                  NTStatus      = 0xC05CFF06\n\tSTATUS_SVHDX_RESERVATION_CONFLICT                                         NTStatus      = 0xC05CFF07\n\tSTATUS_SVHDX_WRONG_FILE_TYPE                                              NTStatus      = 0xC05CFF08\n\tSTATUS_SVHDX_VERSION_MISMATCH                                             NTStatus      = 0xC05CFF09\n\tSTATUS_VHD_SHARED                                                         NTStatus      = 0xC05CFF0A\n\tSTATUS_SVHDX_NO_INITIATOR                                                 NTStatus      = 0xC05CFF0B\n\tSTATUS_VHDSET_BACKING_STORAGE_NOT_FOUND                                   NTStatus      = 0xC05CFF0C\n\tSTATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP                              NTStatus      = 0xC05D0000\n\tSTATUS_SMB_BAD_CLUSTER_DIALECT                                            NTStatus      = 0xC05D0001\n\tSTATUS_SMB_GUEST_LOGON_BLOCKED                                            NTStatus      = 0xC05D0002\n\tSTATUS_SECCORE_INVALID_COMMAND                                            NTStatus      = 0xC0E80000\n\tSTATUS_VSM_NOT_INITIALIZED                                                NTStatus      = 0xC0450000\n\tSTATUS_VSM_DMA_PROTECTION_NOT_IN_USE                                      NTStatus      = 0xC0450001\n\tSTATUS_APPEXEC_CONDITION_NOT_SATISFIED                                    NTStatus      = 0xC0EC0000\n\tSTATUS_APPEXEC_HANDLE_INVALIDATED                                         NTStatus      = 0xC0EC0001\n\tSTATUS_APPEXEC_INVALID_HOST_GENERATION                                    NTStatus      = 0xC0EC0002\n\tSTATUS_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION                            NTStatus      = 0xC0EC0003\n\tSTATUS_APPEXEC_INVALID_HOST_STATE                                         NTStatus      = 0xC0EC0004\n\tSTATUS_APPEXEC_NO_DONOR                                                   NTStatus      = 0xC0EC0005\n\tSTATUS_APPEXEC_HOST_ID_MISMATCH                                           NTStatus      = 0xC0EC0006\n\tSTATUS_APPEXEC_UNKNOWN_USER                                               NTStatus      = 0xC0EC0007\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/zknownfolderids_windows.go",
    "content": "// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT.\n\npackage windows\n\ntype KNOWNFOLDERID GUID\n\nvar (\n\tFOLDERID_NetworkFolder          = &KNOWNFOLDERID{0xd20beec4, 0x5ca8, 0x4905, [8]byte{0xae, 0x3b, 0xbf, 0x25, 0x1e, 0xa0, 0x9b, 0x53}}\n\tFOLDERID_ComputerFolder         = &KNOWNFOLDERID{0x0ac0837c, 0xbbf8, 0x452a, [8]byte{0x85, 0x0d, 0x79, 0xd0, 0x8e, 0x66, 0x7c, 0xa7}}\n\tFOLDERID_InternetFolder         = &KNOWNFOLDERID{0x4d9f7874, 0x4e0c, 0x4904, [8]byte{0x96, 0x7b, 0x40, 0xb0, 0xd2, 0x0c, 0x3e, 0x4b}}\n\tFOLDERID_ControlPanelFolder     = &KNOWNFOLDERID{0x82a74aeb, 0xaeb4, 0x465c, [8]byte{0xa0, 0x14, 0xd0, 0x97, 0xee, 0x34, 0x6d, 0x63}}\n\tFOLDERID_PrintersFolder         = &KNOWNFOLDERID{0x76fc4e2d, 0xd6ad, 0x4519, [8]byte{0xa6, 0x63, 0x37, 0xbd, 0x56, 0x06, 0x81, 0x85}}\n\tFOLDERID_SyncManagerFolder      = &KNOWNFOLDERID{0x43668bf8, 0xc14e, 0x49b2, [8]byte{0x97, 0xc9, 0x74, 0x77, 0x84, 0xd7, 0x84, 0xb7}}\n\tFOLDERID_SyncSetupFolder        = &KNOWNFOLDERID{0x0f214138, 0xb1d3, 0x4a90, [8]byte{0xbb, 0xa9, 0x27, 0xcb, 0xc0, 0xc5, 0x38, 0x9a}}\n\tFOLDERID_ConflictFolder         = &KNOWNFOLDERID{0x4bfefb45, 0x347d, 0x4006, [8]byte{0xa5, 0xbe, 0xac, 0x0c, 0xb0, 0x56, 0x71, 0x92}}\n\tFOLDERID_SyncResultsFolder      = &KNOWNFOLDERID{0x289a9a43, 0xbe44, 0x4057, [8]byte{0xa4, 0x1b, 0x58, 0x7a, 0x76, 0xd7, 0xe7, 0xf9}}\n\tFOLDERID_RecycleBinFolder       = &KNOWNFOLDERID{0xb7534046, 0x3ecb, 0x4c18, [8]byte{0xbe, 0x4e, 0x64, 0xcd, 0x4c, 0xb7, 0xd6, 0xac}}\n\tFOLDERID_ConnectionsFolder      = &KNOWNFOLDERID{0x6f0cd92b, 0x2e97, 0x45d1, [8]byte{0x88, 0xff, 0xb0, 0xd1, 0x86, 0xb8, 0xde, 0xdd}}\n\tFOLDERID_Fonts                  = &KNOWNFOLDERID{0xfd228cb7, 0xae11, 0x4ae3, [8]byte{0x86, 0x4c, 0x16, 0xf3, 0x91, 0x0a, 0xb8, 0xfe}}\n\tFOLDERID_Desktop                = &KNOWNFOLDERID{0xb4bfcc3a, 0xdb2c, 0x424c, [8]byte{0xb0, 0x29, 0x7f, 0xe9, 0x9a, 0x87, 0xc6, 0x41}}\n\tFOLDERID_Startup                = &KNOWNFOLDERID{0xb97d20bb, 0xf46a, 0x4c97, [8]byte{0xba, 0x10, 0x5e, 0x36, 0x08, 0x43, 0x08, 0x54}}\n\tFOLDERID_Programs               = &KNOWNFOLDERID{0xa77f5d77, 0x2e2b, 0x44c3, [8]byte{0xa6, 0xa2, 0xab, 0xa6, 0x01, 0x05, 0x4a, 0x51}}\n\tFOLDERID_StartMenu              = &KNOWNFOLDERID{0x625b53c3, 0xab48, 0x4ec1, [8]byte{0xba, 0x1f, 0xa1, 0xef, 0x41, 0x46, 0xfc, 0x19}}\n\tFOLDERID_Recent                 = &KNOWNFOLDERID{0xae50c081, 0xebd2, 0x438a, [8]byte{0x86, 0x55, 0x8a, 0x09, 0x2e, 0x34, 0x98, 0x7a}}\n\tFOLDERID_SendTo                 = &KNOWNFOLDERID{0x8983036c, 0x27c0, 0x404b, [8]byte{0x8f, 0x08, 0x10, 0x2d, 0x10, 0xdc, 0xfd, 0x74}}\n\tFOLDERID_Documents              = &KNOWNFOLDERID{0xfdd39ad0, 0x238f, 0x46af, [8]byte{0xad, 0xb4, 0x6c, 0x85, 0x48, 0x03, 0x69, 0xc7}}\n\tFOLDERID_Favorites              = &KNOWNFOLDERID{0x1777f761, 0x68ad, 0x4d8a, [8]byte{0x87, 0xbd, 0x30, 0xb7, 0x59, 0xfa, 0x33, 0xdd}}\n\tFOLDERID_NetHood                = &KNOWNFOLDERID{0xc5abbf53, 0xe17f, 0x4121, [8]byte{0x89, 0x00, 0x86, 0x62, 0x6f, 0xc2, 0xc9, 0x73}}\n\tFOLDERID_PrintHood              = &KNOWNFOLDERID{0x9274bd8d, 0xcfd1, 0x41c3, [8]byte{0xb3, 0x5e, 0xb1, 0x3f, 0x55, 0xa7, 0x58, 0xf4}}\n\tFOLDERID_Templates              = &KNOWNFOLDERID{0xa63293e8, 0x664e, 0x48db, [8]byte{0xa0, 0x79, 0xdf, 0x75, 0x9e, 0x05, 0x09, 0xf7}}\n\tFOLDERID_CommonStartup          = &KNOWNFOLDERID{0x82a5ea35, 0xd9cd, 0x47c5, [8]byte{0x96, 0x29, 0xe1, 0x5d, 0x2f, 0x71, 0x4e, 0x6e}}\n\tFOLDERID_CommonPrograms         = &KNOWNFOLDERID{0x0139d44e, 0x6afe, 0x49f2, [8]byte{0x86, 0x90, 0x3d, 0xaf, 0xca, 0xe6, 0xff, 0xb8}}\n\tFOLDERID_CommonStartMenu        = &KNOWNFOLDERID{0xa4115719, 0xd62e, 0x491d, [8]byte{0xaa, 0x7c, 0xe7, 0x4b, 0x8b, 0xe3, 0xb0, 0x67}}\n\tFOLDERID_PublicDesktop          = &KNOWNFOLDERID{0xc4aa340d, 0xf20f, 0x4863, [8]byte{0xaf, 0xef, 0xf8, 0x7e, 0xf2, 0xe6, 0xba, 0x25}}\n\tFOLDERID_ProgramData            = &KNOWNFOLDERID{0x62ab5d82, 0xfdc1, 0x4dc3, [8]byte{0xa9, 0xdd, 0x07, 0x0d, 0x1d, 0x49, 0x5d, 0x97}}\n\tFOLDERID_CommonTemplates        = &KNOWNFOLDERID{0xb94237e7, 0x57ac, 0x4347, [8]byte{0x91, 0x51, 0xb0, 0x8c, 0x6c, 0x32, 0xd1, 0xf7}}\n\tFOLDERID_PublicDocuments        = &KNOWNFOLDERID{0xed4824af, 0xdce4, 0x45a8, [8]byte{0x81, 0xe2, 0xfc, 0x79, 0x65, 0x08, 0x36, 0x34}}\n\tFOLDERID_RoamingAppData         = &KNOWNFOLDERID{0x3eb685db, 0x65f9, 0x4cf6, [8]byte{0xa0, 0x3a, 0xe3, 0xef, 0x65, 0x72, 0x9f, 0x3d}}\n\tFOLDERID_LocalAppData           = &KNOWNFOLDERID{0xf1b32785, 0x6fba, 0x4fcf, [8]byte{0x9d, 0x55, 0x7b, 0x8e, 0x7f, 0x15, 0x70, 0x91}}\n\tFOLDERID_LocalAppDataLow        = &KNOWNFOLDERID{0xa520a1a4, 0x1780, 0x4ff6, [8]byte{0xbd, 0x18, 0x16, 0x73, 0x43, 0xc5, 0xaf, 0x16}}\n\tFOLDERID_InternetCache          = &KNOWNFOLDERID{0x352481e8, 0x33be, 0x4251, [8]byte{0xba, 0x85, 0x60, 0x07, 0xca, 0xed, 0xcf, 0x9d}}\n\tFOLDERID_Cookies                = &KNOWNFOLDERID{0x2b0f765d, 0xc0e9, 0x4171, [8]byte{0x90, 0x8e, 0x08, 0xa6, 0x11, 0xb8, 0x4f, 0xf6}}\n\tFOLDERID_History                = &KNOWNFOLDERID{0xd9dc8a3b, 0xb784, 0x432e, [8]byte{0xa7, 0x81, 0x5a, 0x11, 0x30, 0xa7, 0x59, 0x63}}\n\tFOLDERID_System                 = &KNOWNFOLDERID{0x1ac14e77, 0x02e7, 0x4e5d, [8]byte{0xb7, 0x44, 0x2e, 0xb1, 0xae, 0x51, 0x98, 0xb7}}\n\tFOLDERID_SystemX86              = &KNOWNFOLDERID{0xd65231b0, 0xb2f1, 0x4857, [8]byte{0xa4, 0xce, 0xa8, 0xe7, 0xc6, 0xea, 0x7d, 0x27}}\n\tFOLDERID_Windows                = &KNOWNFOLDERID{0xf38bf404, 0x1d43, 0x42f2, [8]byte{0x93, 0x05, 0x67, 0xde, 0x0b, 0x28, 0xfc, 0x23}}\n\tFOLDERID_Profile                = &KNOWNFOLDERID{0x5e6c858f, 0x0e22, 0x4760, [8]byte{0x9a, 0xfe, 0xea, 0x33, 0x17, 0xb6, 0x71, 0x73}}\n\tFOLDERID_Pictures               = &KNOWNFOLDERID{0x33e28130, 0x4e1e, 0x4676, [8]byte{0x83, 0x5a, 0x98, 0x39, 0x5c, 0x3b, 0xc3, 0xbb}}\n\tFOLDERID_ProgramFilesX86        = &KNOWNFOLDERID{0x7c5a40ef, 0xa0fb, 0x4bfc, [8]byte{0x87, 0x4a, 0xc0, 0xf2, 0xe0, 0xb9, 0xfa, 0x8e}}\n\tFOLDERID_ProgramFilesCommonX86  = &KNOWNFOLDERID{0xde974d24, 0xd9c6, 0x4d3e, [8]byte{0xbf, 0x91, 0xf4, 0x45, 0x51, 0x20, 0xb9, 0x17}}\n\tFOLDERID_ProgramFilesX64        = &KNOWNFOLDERID{0x6d809377, 0x6af0, 0x444b, [8]byte{0x89, 0x57, 0xa3, 0x77, 0x3f, 0x02, 0x20, 0x0e}}\n\tFOLDERID_ProgramFilesCommonX64  = &KNOWNFOLDERID{0x6365d5a7, 0x0f0d, 0x45e5, [8]byte{0x87, 0xf6, 0x0d, 0xa5, 0x6b, 0x6a, 0x4f, 0x7d}}\n\tFOLDERID_ProgramFiles           = &KNOWNFOLDERID{0x905e63b6, 0xc1bf, 0x494e, [8]byte{0xb2, 0x9c, 0x65, 0xb7, 0x32, 0xd3, 0xd2, 0x1a}}\n\tFOLDERID_ProgramFilesCommon     = &KNOWNFOLDERID{0xf7f1ed05, 0x9f6d, 0x47a2, [8]byte{0xaa, 0xae, 0x29, 0xd3, 0x17, 0xc6, 0xf0, 0x66}}\n\tFOLDERID_UserProgramFiles       = &KNOWNFOLDERID{0x5cd7aee2, 0x2219, 0x4a67, [8]byte{0xb8, 0x5d, 0x6c, 0x9c, 0xe1, 0x56, 0x60, 0xcb}}\n\tFOLDERID_UserProgramFilesCommon = &KNOWNFOLDERID{0xbcbd3057, 0xca5c, 0x4622, [8]byte{0xb4, 0x2d, 0xbc, 0x56, 0xdb, 0x0a, 0xe5, 0x16}}\n\tFOLDERID_AdminTools             = &KNOWNFOLDERID{0x724ef170, 0xa42d, 0x4fef, [8]byte{0x9f, 0x26, 0xb6, 0x0e, 0x84, 0x6f, 0xba, 0x4f}}\n\tFOLDERID_CommonAdminTools       = &KNOWNFOLDERID{0xd0384e7d, 0xbac3, 0x4797, [8]byte{0x8f, 0x14, 0xcb, 0xa2, 0x29, 0xb3, 0x92, 0xb5}}\n\tFOLDERID_Music                  = &KNOWNFOLDERID{0x4bd8d571, 0x6d19, 0x48d3, [8]byte{0xbe, 0x97, 0x42, 0x22, 0x20, 0x08, 0x0e, 0x43}}\n\tFOLDERID_Videos                 = &KNOWNFOLDERID{0x18989b1d, 0x99b5, 0x455b, [8]byte{0x84, 0x1c, 0xab, 0x7c, 0x74, 0xe4, 0xdd, 0xfc}}\n\tFOLDERID_Ringtones              = &KNOWNFOLDERID{0xc870044b, 0xf49e, 0x4126, [8]byte{0xa9, 0xc3, 0xb5, 0x2a, 0x1f, 0xf4, 0x11, 0xe8}}\n\tFOLDERID_PublicPictures         = &KNOWNFOLDERID{0xb6ebfb86, 0x6907, 0x413c, [8]byte{0x9a, 0xf7, 0x4f, 0xc2, 0xab, 0xf0, 0x7c, 0xc5}}\n\tFOLDERID_PublicMusic            = &KNOWNFOLDERID{0x3214fab5, 0x9757, 0x4298, [8]byte{0xbb, 0x61, 0x92, 0xa9, 0xde, 0xaa, 0x44, 0xff}}\n\tFOLDERID_PublicVideos           = &KNOWNFOLDERID{0x2400183a, 0x6185, 0x49fb, [8]byte{0xa2, 0xd8, 0x4a, 0x39, 0x2a, 0x60, 0x2b, 0xa3}}\n\tFOLDERID_PublicRingtones        = &KNOWNFOLDERID{0xe555ab60, 0x153b, 0x4d17, [8]byte{0x9f, 0x04, 0xa5, 0xfe, 0x99, 0xfc, 0x15, 0xec}}\n\tFOLDERID_ResourceDir            = &KNOWNFOLDERID{0x8ad10c31, 0x2adb, 0x4296, [8]byte{0xa8, 0xf7, 0xe4, 0x70, 0x12, 0x32, 0xc9, 0x72}}\n\tFOLDERID_LocalizedResourcesDir  = &KNOWNFOLDERID{0x2a00375e, 0x224c, 0x49de, [8]byte{0xb8, 0xd1, 0x44, 0x0d, 0xf7, 0xef, 0x3d, 0xdc}}\n\tFOLDERID_CommonOEMLinks         = &KNOWNFOLDERID{0xc1bae2d0, 0x10df, 0x4334, [8]byte{0xbe, 0xdd, 0x7a, 0xa2, 0x0b, 0x22, 0x7a, 0x9d}}\n\tFOLDERID_CDBurning              = &KNOWNFOLDERID{0x9e52ab10, 0xf80d, 0x49df, [8]byte{0xac, 0xb8, 0x43, 0x30, 0xf5, 0x68, 0x78, 0x55}}\n\tFOLDERID_UserProfiles           = &KNOWNFOLDERID{0x0762d272, 0xc50a, 0x4bb0, [8]byte{0xa3, 0x82, 0x69, 0x7d, 0xcd, 0x72, 0x9b, 0x80}}\n\tFOLDERID_Playlists              = &KNOWNFOLDERID{0xde92c1c7, 0x837f, 0x4f69, [8]byte{0xa3, 0xbb, 0x86, 0xe6, 0x31, 0x20, 0x4a, 0x23}}\n\tFOLDERID_SamplePlaylists        = &KNOWNFOLDERID{0x15ca69b3, 0x30ee, 0x49c1, [8]byte{0xac, 0xe1, 0x6b, 0x5e, 0xc3, 0x72, 0xaf, 0xb5}}\n\tFOLDERID_SampleMusic            = &KNOWNFOLDERID{0xb250c668, 0xf57d, 0x4ee1, [8]byte{0xa6, 0x3c, 0x29, 0x0e, 0xe7, 0xd1, 0xaa, 0x1f}}\n\tFOLDERID_SamplePictures         = &KNOWNFOLDERID{0xc4900540, 0x2379, 0x4c75, [8]byte{0x84, 0x4b, 0x64, 0xe6, 0xfa, 0xf8, 0x71, 0x6b}}\n\tFOLDERID_SampleVideos           = &KNOWNFOLDERID{0x859ead94, 0x2e85, 0x48ad, [8]byte{0xa7, 0x1a, 0x09, 0x69, 0xcb, 0x56, 0xa6, 0xcd}}\n\tFOLDERID_PhotoAlbums            = &KNOWNFOLDERID{0x69d2cf90, 0xfc33, 0x4fb7, [8]byte{0x9a, 0x0c, 0xeb, 0xb0, 0xf0, 0xfc, 0xb4, 0x3c}}\n\tFOLDERID_Public                 = &KNOWNFOLDERID{0xdfdf76a2, 0xc82a, 0x4d63, [8]byte{0x90, 0x6a, 0x56, 0x44, 0xac, 0x45, 0x73, 0x85}}\n\tFOLDERID_ChangeRemovePrograms   = &KNOWNFOLDERID{0xdf7266ac, 0x9274, 0x4867, [8]byte{0x8d, 0x55, 0x3b, 0xd6, 0x61, 0xde, 0x87, 0x2d}}\n\tFOLDERID_AppUpdates             = &KNOWNFOLDERID{0xa305ce99, 0xf527, 0x492b, [8]byte{0x8b, 0x1a, 0x7e, 0x76, 0xfa, 0x98, 0xd6, 0xe4}}\n\tFOLDERID_AddNewPrograms         = &KNOWNFOLDERID{0xde61d971, 0x5ebc, 0x4f02, [8]byte{0xa3, 0xa9, 0x6c, 0x82, 0x89, 0x5e, 0x5c, 0x04}}\n\tFOLDERID_Downloads              = &KNOWNFOLDERID{0x374de290, 0x123f, 0x4565, [8]byte{0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b}}\n\tFOLDERID_PublicDownloads        = &KNOWNFOLDERID{0x3d644c9b, 0x1fb8, 0x4f30, [8]byte{0x9b, 0x45, 0xf6, 0x70, 0x23, 0x5f, 0x79, 0xc0}}\n\tFOLDERID_SavedSearches          = &KNOWNFOLDERID{0x7d1d3a04, 0xdebb, 0x4115, [8]byte{0x95, 0xcf, 0x2f, 0x29, 0xda, 0x29, 0x20, 0xda}}\n\tFOLDERID_QuickLaunch            = &KNOWNFOLDERID{0x52a4f021, 0x7b75, 0x48a9, [8]byte{0x9f, 0x6b, 0x4b, 0x87, 0xa2, 0x10, 0xbc, 0x8f}}\n\tFOLDERID_Contacts               = &KNOWNFOLDERID{0x56784854, 0xc6cb, 0x462b, [8]byte{0x81, 0x69, 0x88, 0xe3, 0x50, 0xac, 0xb8, 0x82}}\n\tFOLDERID_SidebarParts           = &KNOWNFOLDERID{0xa75d362e, 0x50fc, 0x4fb7, [8]byte{0xac, 0x2c, 0xa8, 0xbe, 0xaa, 0x31, 0x44, 0x93}}\n\tFOLDERID_SidebarDefaultParts    = &KNOWNFOLDERID{0x7b396e54, 0x9ec5, 0x4300, [8]byte{0xbe, 0x0a, 0x24, 0x82, 0xeb, 0xae, 0x1a, 0x26}}\n\tFOLDERID_PublicGameTasks        = &KNOWNFOLDERID{0xdebf2536, 0xe1a8, 0x4c59, [8]byte{0xb6, 0xa2, 0x41, 0x45, 0x86, 0x47, 0x6a, 0xea}}\n\tFOLDERID_GameTasks              = &KNOWNFOLDERID{0x054fae61, 0x4dd8, 0x4787, [8]byte{0x80, 0xb6, 0x09, 0x02, 0x20, 0xc4, 0xb7, 0x00}}\n\tFOLDERID_SavedGames             = &KNOWNFOLDERID{0x4c5c32ff, 0xbb9d, 0x43b0, [8]byte{0xb5, 0xb4, 0x2d, 0x72, 0xe5, 0x4e, 0xaa, 0xa4}}\n\tFOLDERID_Games                  = &KNOWNFOLDERID{0xcac52c1a, 0xb53d, 0x4edc, [8]byte{0x92, 0xd7, 0x6b, 0x2e, 0x8a, 0xc1, 0x94, 0x34}}\n\tFOLDERID_SEARCH_MAPI            = &KNOWNFOLDERID{0x98ec0e18, 0x2098, 0x4d44, [8]byte{0x86, 0x44, 0x66, 0x97, 0x93, 0x15, 0xa2, 0x81}}\n\tFOLDERID_SEARCH_CSC             = &KNOWNFOLDERID{0xee32e446, 0x31ca, 0x4aba, [8]byte{0x81, 0x4f, 0xa5, 0xeb, 0xd2, 0xfd, 0x6d, 0x5e}}\n\tFOLDERID_Links                  = &KNOWNFOLDERID{0xbfb9d5e0, 0xc6a9, 0x404c, [8]byte{0xb2, 0xb2, 0xae, 0x6d, 0xb6, 0xaf, 0x49, 0x68}}\n\tFOLDERID_UsersFiles             = &KNOWNFOLDERID{0xf3ce0f7c, 0x4901, 0x4acc, [8]byte{0x86, 0x48, 0xd5, 0xd4, 0x4b, 0x04, 0xef, 0x8f}}\n\tFOLDERID_UsersLibraries         = &KNOWNFOLDERID{0xa302545d, 0xdeff, 0x464b, [8]byte{0xab, 0xe8, 0x61, 0xc8, 0x64, 0x8d, 0x93, 0x9b}}\n\tFOLDERID_SearchHome             = &KNOWNFOLDERID{0x190337d1, 0xb8ca, 0x4121, [8]byte{0xa6, 0x39, 0x6d, 0x47, 0x2d, 0x16, 0x97, 0x2a}}\n\tFOLDERID_OriginalImages         = &KNOWNFOLDERID{0x2c36c0aa, 0x5812, 0x4b87, [8]byte{0xbf, 0xd0, 0x4c, 0xd0, 0xdf, 0xb1, 0x9b, 0x39}}\n\tFOLDERID_DocumentsLibrary       = &KNOWNFOLDERID{0x7b0db17d, 0x9cd2, 0x4a93, [8]byte{0x97, 0x33, 0x46, 0xcc, 0x89, 0x02, 0x2e, 0x7c}}\n\tFOLDERID_MusicLibrary           = &KNOWNFOLDERID{0x2112ab0a, 0xc86a, 0x4ffe, [8]byte{0xa3, 0x68, 0x0d, 0xe9, 0x6e, 0x47, 0x01, 0x2e}}\n\tFOLDERID_PicturesLibrary        = &KNOWNFOLDERID{0xa990ae9f, 0xa03b, 0x4e80, [8]byte{0x94, 0xbc, 0x99, 0x12, 0xd7, 0x50, 0x41, 0x04}}\n\tFOLDERID_VideosLibrary          = &KNOWNFOLDERID{0x491e922f, 0x5643, 0x4af4, [8]byte{0xa7, 0xeb, 0x4e, 0x7a, 0x13, 0x8d, 0x81, 0x74}}\n\tFOLDERID_RecordedTVLibrary      = &KNOWNFOLDERID{0x1a6fdba2, 0xf42d, 0x4358, [8]byte{0xa7, 0x98, 0xb7, 0x4d, 0x74, 0x59, 0x26, 0xc5}}\n\tFOLDERID_HomeGroup              = &KNOWNFOLDERID{0x52528a6b, 0xb9e3, 0x4add, [8]byte{0xb6, 0x0d, 0x58, 0x8c, 0x2d, 0xba, 0x84, 0x2d}}\n\tFOLDERID_HomeGroupCurrentUser   = &KNOWNFOLDERID{0x9b74b6a3, 0x0dfd, 0x4f11, [8]byte{0x9e, 0x78, 0x5f, 0x78, 0x00, 0xf2, 0xe7, 0x72}}\n\tFOLDERID_DeviceMetadataStore    = &KNOWNFOLDERID{0x5ce4a5e9, 0xe4eb, 0x479d, [8]byte{0xb8, 0x9f, 0x13, 0x0c, 0x02, 0x88, 0x61, 0x55}}\n\tFOLDERID_Libraries              = &KNOWNFOLDERID{0x1b3ea5dc, 0xb587, 0x4786, [8]byte{0xb4, 0xef, 0xbd, 0x1d, 0xc3, 0x32, 0xae, 0xae}}\n\tFOLDERID_PublicLibraries        = &KNOWNFOLDERID{0x48daf80b, 0xe6cf, 0x4f4e, [8]byte{0xb8, 0x00, 0x0e, 0x69, 0xd8, 0x4e, 0xe3, 0x84}}\n\tFOLDERID_UserPinned             = &KNOWNFOLDERID{0x9e3995ab, 0x1f9c, 0x4f13, [8]byte{0xb8, 0x27, 0x48, 0xb2, 0x4b, 0x6c, 0x71, 0x74}}\n\tFOLDERID_ImplicitAppShortcuts   = &KNOWNFOLDERID{0xbcb5256f, 0x79f6, 0x4cee, [8]byte{0xb7, 0x25, 0xdc, 0x34, 0xe4, 0x02, 0xfd, 0x46}}\n\tFOLDERID_AccountPictures        = &KNOWNFOLDERID{0x008ca0b1, 0x55b4, 0x4c56, [8]byte{0xb8, 0xa8, 0x4d, 0xe4, 0xb2, 0x99, 0xd3, 0xbe}}\n\tFOLDERID_PublicUserTiles        = &KNOWNFOLDERID{0x0482af6c, 0x08f1, 0x4c34, [8]byte{0x8c, 0x90, 0xe1, 0x7e, 0xc9, 0x8b, 0x1e, 0x17}}\n\tFOLDERID_AppsFolder             = &KNOWNFOLDERID{0x1e87508d, 0x89c2, 0x42f0, [8]byte{0x8a, 0x7e, 0x64, 0x5a, 0x0f, 0x50, 0xca, 0x58}}\n\tFOLDERID_StartMenuAllPrograms   = &KNOWNFOLDERID{0xf26305ef, 0x6948, 0x40b9, [8]byte{0xb2, 0x55, 0x81, 0x45, 0x3d, 0x09, 0xc7, 0x85}}\n\tFOLDERID_CommonStartMenuPlaces  = &KNOWNFOLDERID{0xa440879f, 0x87a0, 0x4f7d, [8]byte{0xb7, 0x00, 0x02, 0x07, 0xb9, 0x66, 0x19, 0x4a}}\n\tFOLDERID_ApplicationShortcuts   = &KNOWNFOLDERID{0xa3918781, 0xe5f2, 0x4890, [8]byte{0xb3, 0xd9, 0xa7, 0xe5, 0x43, 0x32, 0x32, 0x8c}}\n\tFOLDERID_RoamingTiles           = &KNOWNFOLDERID{0x00bcfc5a, 0xed94, 0x4e48, [8]byte{0x96, 0xa1, 0x3f, 0x62, 0x17, 0xf2, 0x19, 0x90}}\n\tFOLDERID_RoamedTileImages       = &KNOWNFOLDERID{0xaaa8d5a5, 0xf1d6, 0x4259, [8]byte{0xba, 0xa8, 0x78, 0xe7, 0xef, 0x60, 0x83, 0x5e}}\n\tFOLDERID_Screenshots            = &KNOWNFOLDERID{0xb7bede81, 0xdf94, 0x4682, [8]byte{0xa7, 0xd8, 0x57, 0xa5, 0x26, 0x20, 0xb8, 0x6f}}\n\tFOLDERID_CameraRoll             = &KNOWNFOLDERID{0xab5fb87b, 0x7ce2, 0x4f83, [8]byte{0x91, 0x5d, 0x55, 0x08, 0x46, 0xc9, 0x53, 0x7b}}\n\tFOLDERID_SkyDrive               = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}}\n\tFOLDERID_OneDrive               = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}}\n\tFOLDERID_SkyDriveDocuments      = &KNOWNFOLDERID{0x24d89e24, 0x2f19, 0x4534, [8]byte{0x9d, 0xde, 0x6a, 0x66, 0x71, 0xfb, 0xb8, 0xfe}}\n\tFOLDERID_SkyDrivePictures       = &KNOWNFOLDERID{0x339719b5, 0x8c47, 0x4894, [8]byte{0x94, 0xc2, 0xd8, 0xf7, 0x7a, 0xdd, 0x44, 0xa6}}\n\tFOLDERID_SkyDriveMusic          = &KNOWNFOLDERID{0xc3f2459e, 0x80d6, 0x45dc, [8]byte{0xbf, 0xef, 0x1f, 0x76, 0x9f, 0x2b, 0xe7, 0x30}}\n\tFOLDERID_SkyDriveCameraRoll     = &KNOWNFOLDERID{0x767e6811, 0x49cb, 0x4273, [8]byte{0x87, 0xc2, 0x20, 0xf3, 0x55, 0xe1, 0x08, 0x5b}}\n\tFOLDERID_SearchHistory          = &KNOWNFOLDERID{0x0d4c3db6, 0x03a3, 0x462f, [8]byte{0xa0, 0xe6, 0x08, 0x92, 0x4c, 0x41, 0xb5, 0xd4}}\n\tFOLDERID_SearchTemplates        = &KNOWNFOLDERID{0x7e636bfe, 0xdfa9, 0x4d5e, [8]byte{0xb4, 0x56, 0xd7, 0xb3, 0x98, 0x51, 0xd8, 0xa9}}\n\tFOLDERID_CameraRollLibrary      = &KNOWNFOLDERID{0x2b20df75, 0x1eda, 0x4039, [8]byte{0x80, 0x97, 0x38, 0x79, 0x82, 0x27, 0xd5, 0xb7}}\n\tFOLDERID_SavedPictures          = &KNOWNFOLDERID{0x3b193882, 0xd3ad, 0x4eab, [8]byte{0x96, 0x5a, 0x69, 0x82, 0x9d, 0x1f, 0xb5, 0x9f}}\n\tFOLDERID_SavedPicturesLibrary   = &KNOWNFOLDERID{0xe25b5812, 0xbe88, 0x4bd9, [8]byte{0x94, 0xb0, 0x29, 0x23, 0x34, 0x77, 0xb6, 0xc3}}\n\tFOLDERID_RetailDemo             = &KNOWNFOLDERID{0x12d4c69e, 0x24ad, 0x4923, [8]byte{0xbe, 0x19, 0x31, 0x32, 0x1c, 0x43, 0xa7, 0x67}}\n\tFOLDERID_Device                 = &KNOWNFOLDERID{0x1c2ac1dc, 0x4358, 0x4b6c, [8]byte{0x97, 0x33, 0xaf, 0x21, 0x15, 0x65, 0x76, 0xf0}}\n\tFOLDERID_DevelopmentFiles       = &KNOWNFOLDERID{0xdbe8e08e, 0x3053, 0x4bbc, [8]byte{0xb1, 0x83, 0x2a, 0x7b, 0x2b, 0x19, 0x1e, 0x59}}\n\tFOLDERID_Objects3D              = &KNOWNFOLDERID{0x31c0dd25, 0x9439, 0x4f12, [8]byte{0xbf, 0x41, 0x7f, 0xf4, 0xed, 0xa3, 0x87, 0x22}}\n\tFOLDERID_AppCaptures            = &KNOWNFOLDERID{0xedc0fe71, 0x98d8, 0x4f4a, [8]byte{0xb9, 0x20, 0xc8, 0xdc, 0x13, 0x3c, 0xb1, 0x65}}\n\tFOLDERID_LocalDocuments         = &KNOWNFOLDERID{0xf42ee2d3, 0x909f, 0x4907, [8]byte{0x88, 0x71, 0x4c, 0x22, 0xfc, 0x0b, 0xf7, 0x56}}\n\tFOLDERID_LocalPictures          = &KNOWNFOLDERID{0x0ddd015d, 0xb06c, 0x45d5, [8]byte{0x8c, 0x4c, 0xf5, 0x97, 0x13, 0x85, 0x46, 0x39}}\n\tFOLDERID_LocalVideos            = &KNOWNFOLDERID{0x35286a68, 0x3c57, 0x41a1, [8]byte{0xbb, 0xb1, 0x0e, 0xae, 0x73, 0xd7, 0x6c, 0x95}}\n\tFOLDERID_LocalMusic             = &KNOWNFOLDERID{0xa0c69a99, 0x21c8, 0x4671, [8]byte{0x87, 0x03, 0x79, 0x34, 0x16, 0x2f, 0xcf, 0x1d}}\n\tFOLDERID_LocalDownloads         = &KNOWNFOLDERID{0x7d83ee9b, 0x2244, 0x4e70, [8]byte{0xb1, 0xf5, 0x53, 0x93, 0x04, 0x2a, 0xf1, 0xe4}}\n\tFOLDERID_RecordedCalls          = &KNOWNFOLDERID{0x2f8b40c2, 0x83ed, 0x48ee, [8]byte{0xb3, 0x83, 0xa1, 0xf1, 0x57, 0xec, 0x6f, 0x9a}}\n\tFOLDERID_AllAppMods             = &KNOWNFOLDERID{0x7ad67899, 0x66af, 0x43ba, [8]byte{0x91, 0x56, 0x6a, 0xad, 0x42, 0xe6, 0xc5, 0x96}}\n\tFOLDERID_CurrentAppMods         = &KNOWNFOLDERID{0x3db40b20, 0x2a30, 0x4dbe, [8]byte{0x91, 0x7e, 0x77, 0x1d, 0xd2, 0x1d, 0xd0, 0x99}}\n\tFOLDERID_AppDataDesktop         = &KNOWNFOLDERID{0xb2c5e279, 0x7add, 0x439f, [8]byte{0xb2, 0x8c, 0xc4, 0x1f, 0xe1, 0xbb, 0xf6, 0x72}}\n\tFOLDERID_AppDataDocuments       = &KNOWNFOLDERID{0x7be16610, 0x1f7f, 0x44ac, [8]byte{0xbf, 0xf0, 0x83, 0xe1, 0x5f, 0x2f, 0xfc, 0xa1}}\n\tFOLDERID_AppDataFavorites       = &KNOWNFOLDERID{0x7cfbefbc, 0xde1f, 0x45aa, [8]byte{0xb8, 0x43, 0xa5, 0x42, 0xac, 0x53, 0x6c, 0xc9}}\n\tFOLDERID_AppDataProgramData     = &KNOWNFOLDERID{0x559d40a3, 0xa036, 0x40fa, [8]byte{0xaf, 0x61, 0x84, 0xcb, 0x43, 0x0a, 0x4d, 0x34}}\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/zsyscall_windows.go",
    "content": "// Code generated by 'go generate'; DO NOT EDIT.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ unsafe.Pointer\n\n// Do the interface allocations only once for common\n// Errno values.\nconst (\n\terrnoERROR_IO_PENDING = 997\n)\n\nvar (\n\terrERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)\n\terrERROR_EINVAL     error = syscall.EINVAL\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e syscall.Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn errERROR_EINVAL\n\tcase errnoERROR_IO_PENDING:\n\t\treturn errERROR_IO_PENDING\n\t}\n\t// TODO: add more here, after collecting data on the common\n\t// error values see on Windows. (perhaps when running\n\t// all.bat?)\n\treturn e\n}\n\nvar (\n\tmodCfgMgr32 = NewLazySystemDLL(\"CfgMgr32.dll\")\n\tmodadvapi32 = NewLazySystemDLL(\"advapi32.dll\")\n\tmodcrypt32  = NewLazySystemDLL(\"crypt32.dll\")\n\tmoddnsapi   = NewLazySystemDLL(\"dnsapi.dll\")\n\tmoddwmapi   = NewLazySystemDLL(\"dwmapi.dll\")\n\tmodiphlpapi = NewLazySystemDLL(\"iphlpapi.dll\")\n\tmodkernel32 = NewLazySystemDLL(\"kernel32.dll\")\n\tmodmswsock  = NewLazySystemDLL(\"mswsock.dll\")\n\tmodnetapi32 = NewLazySystemDLL(\"netapi32.dll\")\n\tmodntdll    = NewLazySystemDLL(\"ntdll.dll\")\n\tmodole32    = NewLazySystemDLL(\"ole32.dll\")\n\tmodpsapi    = NewLazySystemDLL(\"psapi.dll\")\n\tmodsechost  = NewLazySystemDLL(\"sechost.dll\")\n\tmodsecur32  = NewLazySystemDLL(\"secur32.dll\")\n\tmodsetupapi = NewLazySystemDLL(\"setupapi.dll\")\n\tmodshell32  = NewLazySystemDLL(\"shell32.dll\")\n\tmoduser32   = NewLazySystemDLL(\"user32.dll\")\n\tmoduserenv  = NewLazySystemDLL(\"userenv.dll\")\n\tmodversion  = NewLazySystemDLL(\"version.dll\")\n\tmodwinmm    = NewLazySystemDLL(\"winmm.dll\")\n\tmodwintrust = NewLazySystemDLL(\"wintrust.dll\")\n\tmodws2_32   = NewLazySystemDLL(\"ws2_32.dll\")\n\tmodwtsapi32 = NewLazySystemDLL(\"wtsapi32.dll\")\n\n\tprocCM_Get_DevNode_Status                                = modCfgMgr32.NewProc(\"CM_Get_DevNode_Status\")\n\tprocCM_Get_Device_Interface_ListW                        = modCfgMgr32.NewProc(\"CM_Get_Device_Interface_ListW\")\n\tprocCM_Get_Device_Interface_List_SizeW                   = modCfgMgr32.NewProc(\"CM_Get_Device_Interface_List_SizeW\")\n\tprocCM_MapCrToWin32Err                                   = modCfgMgr32.NewProc(\"CM_MapCrToWin32Err\")\n\tprocAdjustTokenGroups                                    = modadvapi32.NewProc(\"AdjustTokenGroups\")\n\tprocAdjustTokenPrivileges                                = modadvapi32.NewProc(\"AdjustTokenPrivileges\")\n\tprocAllocateAndInitializeSid                             = modadvapi32.NewProc(\"AllocateAndInitializeSid\")\n\tprocBuildSecurityDescriptorW                             = modadvapi32.NewProc(\"BuildSecurityDescriptorW\")\n\tprocChangeServiceConfig2W                                = modadvapi32.NewProc(\"ChangeServiceConfig2W\")\n\tprocChangeServiceConfigW                                 = modadvapi32.NewProc(\"ChangeServiceConfigW\")\n\tprocCheckTokenMembership                                 = modadvapi32.NewProc(\"CheckTokenMembership\")\n\tprocCloseServiceHandle                                   = modadvapi32.NewProc(\"CloseServiceHandle\")\n\tprocControlService                                       = modadvapi32.NewProc(\"ControlService\")\n\tprocConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc(\"ConvertSecurityDescriptorToStringSecurityDescriptorW\")\n\tprocConvertSidToStringSidW                               = modadvapi32.NewProc(\"ConvertSidToStringSidW\")\n\tprocConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc(\"ConvertStringSecurityDescriptorToSecurityDescriptorW\")\n\tprocConvertStringSidToSidW                               = modadvapi32.NewProc(\"ConvertStringSidToSidW\")\n\tprocCopySid                                              = modadvapi32.NewProc(\"CopySid\")\n\tprocCreateProcessAsUserW                                 = modadvapi32.NewProc(\"CreateProcessAsUserW\")\n\tprocCreateServiceW                                       = modadvapi32.NewProc(\"CreateServiceW\")\n\tprocCreateWellKnownSid                                   = modadvapi32.NewProc(\"CreateWellKnownSid\")\n\tprocCryptAcquireContextW                                 = modadvapi32.NewProc(\"CryptAcquireContextW\")\n\tprocCryptGenRandom                                       = modadvapi32.NewProc(\"CryptGenRandom\")\n\tprocCryptReleaseContext                                  = modadvapi32.NewProc(\"CryptReleaseContext\")\n\tprocDeleteService                                        = modadvapi32.NewProc(\"DeleteService\")\n\tprocDeregisterEventSource                                = modadvapi32.NewProc(\"DeregisterEventSource\")\n\tprocDuplicateTokenEx                                     = modadvapi32.NewProc(\"DuplicateTokenEx\")\n\tprocEnumDependentServicesW                               = modadvapi32.NewProc(\"EnumDependentServicesW\")\n\tprocEnumServicesStatusExW                                = modadvapi32.NewProc(\"EnumServicesStatusExW\")\n\tprocEqualSid                                             = modadvapi32.NewProc(\"EqualSid\")\n\tprocFreeSid                                              = modadvapi32.NewProc(\"FreeSid\")\n\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\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 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": "vendor/golang.org/x/text/LICENSE",
    "content": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/text/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/text/secure/bidirule/bidirule.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package bidirule implements the Bidi Rule defined by RFC 5893.\n//\n// This package is under development. The API may change without notice and\n// without preserving backward compatibility.\npackage bidirule\n\nimport (\n\t\"errors\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/transform\"\n\t\"golang.org/x/text/unicode/bidi\"\n)\n\n// This file contains an implementation of RFC 5893: Right-to-Left Scripts for\n// Internationalized Domain Names for Applications (IDNA)\n//\n// A label is an individual component of a domain name.  Labels are usually\n// shown separated by dots; for example, the domain name \"www.example.com\" is\n// composed of three labels: \"www\", \"example\", and \"com\".\n//\n// An RTL label is a label that contains at least one character of class R, AL,\n// or AN. An LTR label is any label that is not an RTL label.\n//\n// A \"Bidi domain name\" is a domain name that contains at least one RTL label.\n//\n//  The following guarantees can be made based on the above:\n//\n//  o  In a domain name consisting of only labels that satisfy the rule,\n//     the requirements of Section 3 are satisfied.  Note that even LTR\n//     labels and pure ASCII labels have to be tested.\n//\n//  o  In a domain name consisting of only LDH labels (as defined in the\n//     Definitions document [RFC5890]) and labels that satisfy the rule,\n//     the requirements of Section 3 are satisfied as long as a label\n//     that starts with an ASCII digit does not come after a\n//     right-to-left label.\n//\n//  No guarantee is given for other combinations.\n\n// ErrInvalid indicates a label is invalid according to the Bidi Rule.\nvar ErrInvalid = errors.New(\"bidirule: failed Bidi Rule\")\n\ntype ruleState uint8\n\nconst (\n\truleInitial ruleState = iota\n\truleLTR\n\truleLTRFinal\n\truleRTL\n\truleRTLFinal\n\truleInvalid\n)\n\ntype ruleTransition struct {\n\tnext ruleState\n\tmask uint16\n}\n\nvar transitions = [...][2]ruleTransition{\n\t// [2.1] The first character must be a character with Bidi property L, R, or\n\t// AL. If it has the R or AL property, it is an RTL label; if it has the L\n\t// property, it is an LTR label.\n\truleInitial: {\n\t\t{ruleLTRFinal, 1 << bidi.L},\n\t\t{ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL},\n\t},\n\truleRTL: {\n\t\t// [2.3] In an RTL label, the end of the label must be a character with\n\t\t// Bidi property R, AL, EN, or AN, followed by zero or more characters\n\t\t// with Bidi property NSM.\n\t\t{ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL | 1<<bidi.EN | 1<<bidi.AN},\n\n\t\t// [2.2] In an RTL label, only characters with the Bidi properties R,\n\t\t// AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed.\n\t\t// We exclude the entries from [2.3]\n\t\t{ruleRTL, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN | 1<<bidi.NSM},\n\t},\n\truleRTLFinal: {\n\t\t// [2.3] In an RTL label, the end of the label must be a character with\n\t\t// Bidi property R, AL, EN, or AN, followed by zero or more characters\n\t\t// with Bidi property NSM.\n\t\t{ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL | 1<<bidi.EN | 1<<bidi.AN | 1<<bidi.NSM},\n\n\t\t// [2.2] In an RTL label, only characters with the Bidi properties R,\n\t\t// AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed.\n\t\t// We exclude the entries from [2.3] and NSM.\n\t\t{ruleRTL, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN},\n\t},\n\truleLTR: {\n\t\t// [2.6] In an LTR label, the end of the label must be a character with\n\t\t// Bidi property L or EN, followed by zero or more characters with Bidi\n\t\t// property NSM.\n\t\t{ruleLTRFinal, 1<<bidi.L | 1<<bidi.EN},\n\n\t\t// [2.5] In an LTR label, only characters with the Bidi properties L,\n\t\t// EN, ES, CS, ET, ON, BN, or NSM are allowed.\n\t\t// We exclude the entries from [2.6].\n\t\t{ruleLTR, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN | 1<<bidi.NSM},\n\t},\n\truleLTRFinal: {\n\t\t// [2.6] In an LTR label, the end of the label must be a character with\n\t\t// Bidi property L or EN, followed by zero or more characters with Bidi\n\t\t// property NSM.\n\t\t{ruleLTRFinal, 1<<bidi.L | 1<<bidi.EN | 1<<bidi.NSM},\n\n\t\t// [2.5] In an LTR label, only characters with the Bidi properties L,\n\t\t// EN, ES, CS, ET, ON, BN, or NSM are allowed.\n\t\t// We exclude the entries from [2.6].\n\t\t{ruleLTR, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN},\n\t},\n\truleInvalid: {\n\t\t{ruleInvalid, 0},\n\t\t{ruleInvalid, 0},\n\t},\n}\n\n// [2.4] In an RTL label, if an EN is present, no AN may be present, and\n// vice versa.\nconst exclusiveRTL = uint16(1<<bidi.EN | 1<<bidi.AN)\n\n// From RFC 5893\n// An RTL label is a label that contains at least one character of type\n// R, AL, or AN.\n//\n// An LTR label is any label that is not an RTL label.\n\n// Direction reports the direction of the given label as defined by RFC 5893.\n// The Bidi Rule does not have to be applied to labels of the category\n// LeftToRight.\nfunc Direction(b []byte) bidi.Direction {\n\tfor i := 0; i < len(b); {\n\t\te, sz := bidi.Lookup(b[i:])\n\t\tif sz == 0 {\n\t\t\ti++\n\t\t}\n\t\tc := e.Class()\n\t\tif c == bidi.R || c == bidi.AL || c == bidi.AN {\n\t\t\treturn bidi.RightToLeft\n\t\t}\n\t\ti += sz\n\t}\n\treturn bidi.LeftToRight\n}\n\n// DirectionString reports the direction of the given label as defined by RFC\n// 5893. The Bidi Rule does not have to be applied to labels of the category\n// LeftToRight.\nfunc DirectionString(s string) bidi.Direction {\n\tfor i := 0; i < len(s); {\n\t\te, sz := bidi.LookupString(s[i:])\n\t\tif sz == 0 {\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\t\tc := e.Class()\n\t\tif c == bidi.R || c == bidi.AL || c == bidi.AN {\n\t\t\treturn bidi.RightToLeft\n\t\t}\n\t\ti += sz\n\t}\n\treturn bidi.LeftToRight\n}\n\n// Valid reports whether b conforms to the BiDi rule.\nfunc Valid(b []byte) bool {\n\tvar t Transformer\n\tif n, ok := t.advance(b); !ok || n < len(b) {\n\t\treturn false\n\t}\n\treturn t.isFinal()\n}\n\n// ValidString reports whether s conforms to the BiDi rule.\nfunc ValidString(s string) bool {\n\tvar t Transformer\n\tif n, ok := t.advanceString(s); !ok || n < len(s) {\n\t\treturn false\n\t}\n\treturn t.isFinal()\n}\n\n// New returns a Transformer that verifies that input adheres to the Bidi Rule.\nfunc New() *Transformer {\n\treturn &Transformer{}\n}\n\n// Transformer implements transform.Transform.\ntype Transformer struct {\n\tstate  ruleState\n\thasRTL bool\n\tseen   uint16\n}\n\n// A rule can only be violated for \"Bidi Domain names\", meaning if one of the\n// following categories has been observed.\nfunc (t *Transformer) isRTL() bool {\n\tconst isRTL = 1<<bidi.R | 1<<bidi.AL | 1<<bidi.AN\n\treturn t.seen&isRTL != 0\n}\n\n// Reset implements transform.Transformer.\nfunc (t *Transformer) Reset() { *t = Transformer{} }\n\n// Transform implements transform.Transformer. This Transformer has state and\n// needs to be reset between uses.\nfunc (t *Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tif len(dst) < len(src) {\n\t\tsrc = src[:len(dst)]\n\t\tatEOF = false\n\t\terr = transform.ErrShortDst\n\t}\n\tn, err1 := t.Span(src, atEOF)\n\tcopy(dst, src[:n])\n\tif err == nil || err1 != nil && err1 != transform.ErrShortSrc {\n\t\terr = err1\n\t}\n\treturn n, n, err\n}\n\n// Span returns the first n bytes of src that conform to the Bidi rule.\nfunc (t *Transformer) Span(src []byte, atEOF bool) (n int, err error) {\n\tif t.state == ruleInvalid && t.isRTL() {\n\t\treturn 0, ErrInvalid\n\t}\n\tn, ok := t.advance(src)\n\tswitch {\n\tcase !ok:\n\t\terr = ErrInvalid\n\tcase n < len(src):\n\t\tif !atEOF {\n\t\t\terr = transform.ErrShortSrc\n\t\t\tbreak\n\t\t}\n\t\terr = ErrInvalid\n\tcase !t.isFinal():\n\t\terr = ErrInvalid\n\t}\n\treturn n, err\n}\n\n// Precomputing the ASCII values decreases running time for the ASCII fast path\n// by about 30%.\nvar asciiTable [128]bidi.Properties\n\nfunc init() {\n\tfor i := range asciiTable {\n\t\tp, _ := bidi.LookupRune(rune(i))\n\t\tasciiTable[i] = p\n\t}\n}\n\nfunc (t *Transformer) advance(s []byte) (n int, ok bool) {\n\tvar e bidi.Properties\n\tvar sz int\n\tfor n < len(s) {\n\t\tif s[n] < utf8.RuneSelf {\n\t\t\te, sz = asciiTable[s[n]], 1\n\t\t} else {\n\t\t\te, sz = bidi.Lookup(s[n:])\n\t\t\tif sz <= 1 {\n\t\t\t\tif sz == 1 {\n\t\t\t\t\t// We always consider invalid UTF-8 to be invalid, even if\n\t\t\t\t\t// the string has not yet been determined to be RTL.\n\t\t\t\t\t// TODO: is this correct?\n\t\t\t\t\treturn n, false\n\t\t\t\t}\n\t\t\t\treturn n, true // incomplete UTF-8 encoding\n\t\t\t}\n\t\t}\n\t\t// TODO: using CompactClass would result in noticeable speedup.\n\t\t// See unicode/bidi/prop.go:Properties.CompactClass.\n\t\tc := uint16(1 << e.Class())\n\t\tt.seen |= c\n\t\tif t.seen&exclusiveRTL == exclusiveRTL {\n\t\t\tt.state = ruleInvalid\n\t\t\treturn n, false\n\t\t}\n\t\tswitch tr := transitions[t.state]; {\n\t\tcase tr[0].mask&c != 0:\n\t\t\tt.state = tr[0].next\n\t\tcase tr[1].mask&c != 0:\n\t\t\tt.state = tr[1].next\n\t\tdefault:\n\t\t\tt.state = ruleInvalid\n\t\t\tif t.isRTL() {\n\t\t\t\treturn n, false\n\t\t\t}\n\t\t}\n\t\tn += sz\n\t}\n\treturn n, true\n}\n\nfunc (t *Transformer) advanceString(s string) (n int, ok bool) {\n\tvar e bidi.Properties\n\tvar sz int\n\tfor n < len(s) {\n\t\tif s[n] < utf8.RuneSelf {\n\t\t\te, sz = asciiTable[s[n]], 1\n\t\t} else {\n\t\t\te, sz = bidi.LookupString(s[n:])\n\t\t\tif sz <= 1 {\n\t\t\t\tif sz == 1 {\n\t\t\t\t\treturn n, false // invalid UTF-8\n\t\t\t\t}\n\t\t\t\treturn n, true // incomplete UTF-8 encoding\n\t\t\t}\n\t\t}\n\t\t// TODO: using CompactClass results in noticeable speedup.\n\t\t// See unicode/bidi/prop.go:Properties.CompactClass.\n\t\tc := uint16(1 << e.Class())\n\t\tt.seen |= c\n\t\tif t.seen&exclusiveRTL == exclusiveRTL {\n\t\t\tt.state = ruleInvalid\n\t\t\treturn n, false\n\t\t}\n\t\tswitch tr := transitions[t.state]; {\n\t\tcase tr[0].mask&c != 0:\n\t\t\tt.state = tr[0].next\n\t\tcase tr[1].mask&c != 0:\n\t\t\tt.state = tr[1].next\n\t\tdefault:\n\t\t\tt.state = ruleInvalid\n\t\t\tif t.isRTL() {\n\t\t\t\treturn n, false\n\t\t\t}\n\t\t}\n\t\tn += sz\n\t}\n\treturn n, true\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.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 go1.10\n\npackage bidirule\n\nfunc (t *Transformer) isFinal() bool {\n\treturn t.state == ruleLTRFinal || t.state == ruleRTLFinal || t.state == ruleInitial\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.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 !go1.10\n\npackage bidirule\n\nfunc (t *Transformer) isFinal() bool {\n\tif !t.isRTL() {\n\t\treturn true\n\t}\n\treturn t.state == ruleLTRFinal || t.state == ruleRTLFinal || t.state == ruleInitial\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/transform/transform.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package transform provides reader and writer wrappers that transform the\n// bytes passing through as well as various transformations. Example\n// transformations provided by other packages include normalization and\n// conversion between character sets.\npackage transform // import \"golang.org/x/text/transform\"\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"unicode/utf8\"\n)\n\nvar (\n\t// ErrShortDst means that the destination buffer was too short to\n\t// receive all of the transformed bytes.\n\tErrShortDst = errors.New(\"transform: short destination buffer\")\n\n\t// ErrShortSrc means that the source buffer has insufficient data to\n\t// complete the transformation.\n\tErrShortSrc = errors.New(\"transform: short source buffer\")\n\n\t// ErrEndOfSpan means that the input and output (the transformed input)\n\t// are not identical.\n\tErrEndOfSpan = errors.New(\"transform: input and output are not identical\")\n\n\t// errInconsistentByteCount means that Transform returned success (nil\n\t// error) but also returned nSrc inconsistent with the src argument.\n\terrInconsistentByteCount = errors.New(\"transform: inconsistent byte count returned\")\n\n\t// errShortInternal means that an internal buffer is not large enough\n\t// to make progress and the Transform operation must be aborted.\n\terrShortInternal = errors.New(\"transform: short internal buffer\")\n)\n\n// Transformer transforms bytes.\ntype Transformer interface {\n\t// Transform writes to dst the transformed bytes read from src, and\n\t// returns the number of dst bytes written and src bytes read. The\n\t// atEOF argument tells whether src represents the last bytes of the\n\t// input.\n\t//\n\t// Callers should always process the nDst bytes produced and account\n\t// for the nSrc bytes consumed before considering the error err.\n\t//\n\t// A nil error means that all of the transformed bytes (whether freshly\n\t// transformed from src or left over from previous Transform calls)\n\t// were written to dst. A nil error can be returned regardless of\n\t// whether atEOF is true. If err is nil then nSrc must equal len(src);\n\t// the converse is not necessarily true.\n\t//\n\t// ErrShortDst means that dst was too short to receive all of the\n\t// transformed bytes. ErrShortSrc means that src had insufficient data\n\t// to complete the transformation. If both conditions apply, then\n\t// either error may be returned. Other than the error conditions listed\n\t// here, implementations are free to report other errors that arise.\n\tTransform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error)\n\n\t// Reset resets the state and allows a Transformer to be reused.\n\tReset()\n}\n\n// SpanningTransformer extends the Transformer interface with a Span method\n// that determines how much of the input already conforms to the Transformer.\ntype SpanningTransformer interface {\n\tTransformer\n\n\t// Span returns a position in src such that transforming src[:n] results in\n\t// identical output src[:n] for these bytes. It does not necessarily return\n\t// the largest such n. The atEOF argument tells whether src represents the\n\t// last bytes of the input.\n\t//\n\t// Callers should always account for the n bytes consumed before\n\t// considering the error err.\n\t//\n\t// A nil error means that all input bytes are known to be identical to the\n\t// output produced by the Transformer. A nil error can be returned\n\t// regardless of whether atEOF is true. If err is nil, then n must\n\t// equal len(src); the converse is not necessarily true.\n\t//\n\t// ErrEndOfSpan means that the Transformer output may differ from the\n\t// input after n bytes. Note that n may be len(src), meaning that the output\n\t// would contain additional bytes after otherwise identical output.\n\t// ErrShortSrc means that src had insufficient data to determine whether the\n\t// remaining bytes would change. Other than the error conditions listed\n\t// here, implementations are free to report other errors that arise.\n\t//\n\t// Calling Span can modify the Transformer state as a side effect. In\n\t// effect, it does the transformation just as calling Transform would, only\n\t// without copying to a destination buffer and only up to a point it can\n\t// determine the input and output bytes are the same. This is obviously more\n\t// limited than calling Transform, but can be more efficient in terms of\n\t// copying and allocating buffers. Calls to Span and Transform may be\n\t// interleaved.\n\tSpan(src []byte, atEOF bool) (n int, err error)\n}\n\n// NopResetter can be embedded by implementations of Transformer to add a nop\n// Reset method.\ntype NopResetter struct{}\n\n// Reset implements the Reset method of the Transformer interface.\nfunc (NopResetter) Reset() {}\n\n// Reader wraps another io.Reader by transforming the bytes read.\ntype Reader struct {\n\tr   io.Reader\n\tt   Transformer\n\terr error\n\n\t// dst[dst0:dst1] contains bytes that have been transformed by t but\n\t// not yet copied out via Read.\n\tdst        []byte\n\tdst0, dst1 int\n\n\t// src[src0:src1] contains bytes that have been read from r but not\n\t// yet transformed through t.\n\tsrc        []byte\n\tsrc0, src1 int\n\n\t// transformComplete is whether the transformation is complete,\n\t// regardless of whether or not it was successful.\n\ttransformComplete bool\n}\n\nconst defaultBufSize = 4096\n\n// NewReader returns a new Reader that wraps r by transforming the bytes read\n// via t. It calls Reset on t.\nfunc NewReader(r io.Reader, t Transformer) *Reader {\n\tt.Reset()\n\treturn &Reader{\n\t\tr:   r,\n\t\tt:   t,\n\t\tdst: make([]byte, defaultBufSize),\n\t\tsrc: make([]byte, defaultBufSize),\n\t}\n}\n\n// Read implements the io.Reader interface.\nfunc (r *Reader) Read(p []byte) (int, error) {\n\tn, err := 0, error(nil)\n\tfor {\n\t\t// Copy out any transformed bytes and return the final error if we are done.\n\t\tif r.dst0 != r.dst1 {\n\t\t\tn = copy(p, r.dst[r.dst0:r.dst1])\n\t\t\tr.dst0 += n\n\t\t\tif r.dst0 == r.dst1 && r.transformComplete {\n\t\t\t\treturn n, r.err\n\t\t\t}\n\t\t\treturn n, nil\n\t\t} else if r.transformComplete {\n\t\t\treturn 0, r.err\n\t\t}\n\n\t\t// Try to transform some source bytes, or to flush the transformer if we\n\t\t// are out of source bytes. We do this even if r.r.Read returned an error.\n\t\t// As the io.Reader documentation says, \"process the n > 0 bytes returned\n\t\t// before considering the error\".\n\t\tif r.src0 != r.src1 || r.err != nil {\n\t\t\tr.dst0 = 0\n\t\t\tr.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], r.err == io.EOF)\n\t\t\tr.src0 += n\n\n\t\t\tswitch {\n\t\t\tcase err == nil:\n\t\t\t\tif r.src0 != r.src1 {\n\t\t\t\t\tr.err = errInconsistentByteCount\n\t\t\t\t}\n\t\t\t\t// The Transform call was successful; we are complete if we\n\t\t\t\t// cannot read more bytes into src.\n\t\t\t\tr.transformComplete = r.err != nil\n\t\t\t\tcontinue\n\t\t\tcase err == ErrShortDst && (r.dst1 != 0 || n != 0):\n\t\t\t\t// Make room in dst by copying out, and try again.\n\t\t\t\tcontinue\n\t\t\tcase err == ErrShortSrc && r.src1-r.src0 != len(r.src) && r.err == nil:\n\t\t\t\t// Read more bytes into src via the code below, and try again.\n\t\t\tdefault:\n\t\t\t\tr.transformComplete = true\n\t\t\t\t// The reader error (r.err) takes precedence over the\n\t\t\t\t// transformer error (err) unless r.err is nil or io.EOF.\n\t\t\t\tif r.err == nil || r.err == io.EOF {\n\t\t\t\t\tr.err = err\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// Move any untransformed source bytes to the start of the buffer\n\t\t// and read more bytes.\n\t\tif r.src0 != 0 {\n\t\t\tr.src0, r.src1 = 0, copy(r.src, r.src[r.src0:r.src1])\n\t\t}\n\t\tn, r.err = r.r.Read(r.src[r.src1:])\n\t\tr.src1 += n\n\t}\n}\n\n// TODO: implement ReadByte (and ReadRune??).\n\n// Writer wraps another io.Writer by transforming the bytes read.\n// The user needs to call Close to flush unwritten bytes that may\n// be buffered.\ntype Writer struct {\n\tw   io.Writer\n\tt   Transformer\n\tdst []byte\n\n\t// src[:n] contains bytes that have not yet passed through t.\n\tsrc []byte\n\tn   int\n}\n\n// NewWriter returns a new Writer that wraps w by transforming the bytes written\n// via t. It calls Reset on t.\nfunc NewWriter(w io.Writer, t Transformer) *Writer {\n\tt.Reset()\n\treturn &Writer{\n\t\tw:   w,\n\t\tt:   t,\n\t\tdst: make([]byte, defaultBufSize),\n\t\tsrc: make([]byte, defaultBufSize),\n\t}\n}\n\n// Write implements the io.Writer interface. If there are not enough\n// bytes available to complete a Transform, the bytes will be buffered\n// for the next write. Call Close to convert the remaining bytes.\nfunc (w *Writer) Write(data []byte) (n int, err error) {\n\tsrc := data\n\tif w.n > 0 {\n\t\t// Append bytes from data to the last remainder.\n\t\t// TODO: limit the amount copied on first try.\n\t\tn = copy(w.src[w.n:], data)\n\t\tw.n += n\n\t\tsrc = w.src[:w.n]\n\t}\n\tfor {\n\t\tnDst, nSrc, err := w.t.Transform(w.dst, src, false)\n\t\tif _, werr := w.w.Write(w.dst[:nDst]); werr != nil {\n\t\t\treturn n, werr\n\t\t}\n\t\tsrc = src[nSrc:]\n\t\tif w.n == 0 {\n\t\t\tn += nSrc\n\t\t} else if len(src) <= n {\n\t\t\t// Enough bytes from w.src have been consumed. We make src point\n\t\t\t// to data instead to reduce the copying.\n\t\t\tw.n = 0\n\t\t\tn -= len(src)\n\t\t\tsrc = data[n:]\n\t\t\tif n < len(data) && (err == nil || err == ErrShortSrc) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tswitch err {\n\t\tcase ErrShortDst:\n\t\t\t// This error is okay as long as we are making progress.\n\t\t\tif nDst > 0 || nSrc > 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase ErrShortSrc:\n\t\t\tif len(src) < len(w.src) {\n\t\t\t\tm := copy(w.src, src)\n\t\t\t\t// If w.n > 0, bytes from data were already copied to w.src and n\n\t\t\t\t// was already set to the number of bytes consumed.\n\t\t\t\tif w.n == 0 {\n\t\t\t\t\tn += m\n\t\t\t\t}\n\t\t\t\tw.n = m\n\t\t\t\terr = nil\n\t\t\t} else if nDst > 0 || nSrc > 0 {\n\t\t\t\t// Not enough buffer to store the remainder. Keep processing as\n\t\t\t\t// long as there is progress. Without this case, transforms that\n\t\t\t\t// require a lookahead larger than the buffer may result in an\n\t\t\t\t// error. This is not something one may expect to be common in\n\t\t\t\t// practice, but it may occur when buffers are set to small\n\t\t\t\t// sizes during testing.\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase nil:\n\t\t\tif w.n > 0 {\n\t\t\t\terr = errInconsistentByteCount\n\t\t\t}\n\t\t}\n\t\treturn n, err\n\t}\n}\n\n// Close implements the io.Closer interface.\nfunc (w *Writer) Close() error {\n\tsrc := w.src[:w.n]\n\tfor {\n\t\tnDst, nSrc, err := w.t.Transform(w.dst, src, true)\n\t\tif _, werr := w.w.Write(w.dst[:nDst]); werr != nil {\n\t\t\treturn werr\n\t\t}\n\t\tif err != ErrShortDst {\n\t\t\treturn err\n\t\t}\n\t\tsrc = src[nSrc:]\n\t}\n}\n\ntype nop struct{ NopResetter }\n\nfunc (nop) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tn := copy(dst, src)\n\tif n < len(src) {\n\t\terr = ErrShortDst\n\t}\n\treturn n, n, err\n}\n\nfunc (nop) Span(src []byte, atEOF bool) (n int, err error) {\n\treturn len(src), nil\n}\n\ntype discard struct{ NopResetter }\n\nfunc (discard) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\treturn 0, len(src), nil\n}\n\nvar (\n\t// Discard is a Transformer for which all Transform calls succeed\n\t// by consuming all bytes and writing nothing.\n\tDiscard Transformer = discard{}\n\n\t// Nop is a SpanningTransformer that copies src to dst.\n\tNop SpanningTransformer = nop{}\n)\n\n// chain is a sequence of links. A chain with N Transformers has N+1 links and\n// N+1 buffers. Of those N+1 buffers, the first and last are the src and dst\n// buffers given to chain.Transform and the middle N-1 buffers are intermediate\n// buffers owned by the chain. The i'th link transforms bytes from the i'th\n// buffer chain.link[i].b at read offset chain.link[i].p to the i+1'th buffer\n// chain.link[i+1].b at write offset chain.link[i+1].n, for i in [0, N).\ntype chain struct {\n\tlink []link\n\terr  error\n\t// errStart is the index at which the error occurred plus 1. Processing\n\t// errStart at this level at the next call to Transform. As long as\n\t// errStart > 0, chain will not consume any more source bytes.\n\terrStart int\n}\n\nfunc (c *chain) fatalError(errIndex int, err error) {\n\tif i := errIndex + 1; i > c.errStart {\n\t\tc.errStart = i\n\t\tc.err = err\n\t}\n}\n\ntype link struct {\n\tt Transformer\n\t// b[p:n] holds the bytes to be transformed by t.\n\tb []byte\n\tp int\n\tn int\n}\n\nfunc (l *link) src() []byte {\n\treturn l.b[l.p:l.n]\n}\n\nfunc (l *link) dst() []byte {\n\treturn l.b[l.n:]\n}\n\n// Chain returns a Transformer that applies t in sequence.\nfunc Chain(t ...Transformer) Transformer {\n\tif len(t) == 0 {\n\t\treturn nop{}\n\t}\n\tc := &chain{link: make([]link, len(t)+1)}\n\tfor i, tt := range t {\n\t\tc.link[i].t = tt\n\t}\n\t// Allocate intermediate buffers.\n\tb := make([][defaultBufSize]byte, len(t)-1)\n\tfor i := range b {\n\t\tc.link[i+1].b = b[i][:]\n\t}\n\treturn c\n}\n\n// Reset resets the state of Chain. It calls Reset on all the Transformers.\nfunc (c *chain) Reset() {\n\tfor i, l := range c.link {\n\t\tif l.t != nil {\n\t\t\tl.t.Reset()\n\t\t}\n\t\tc.link[i].p, c.link[i].n = 0, 0\n\t}\n}\n\n// TODO: make chain use Span (is going to be fun to implement!)\n\n// Transform applies the transformers of c in sequence.\nfunc (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\t// Set up src and dst in the chain.\n\tsrcL := &c.link[0]\n\tdstL := &c.link[len(c.link)-1]\n\tsrcL.b, srcL.p, srcL.n = src, 0, len(src)\n\tdstL.b, dstL.n = dst, 0\n\tvar lastFull, needProgress bool // for detecting progress\n\n\t// i is the index of the next Transformer to apply, for i in [low, high].\n\t// low is the lowest index for which c.link[low] may still produce bytes.\n\t// high is the highest index for which c.link[high] has a Transformer.\n\t// The error returned by Transform determines whether to increase or\n\t// decrease i. We try to completely fill a buffer before converting it.\n\tfor low, i, high := c.errStart, c.errStart, len(c.link)-2; low <= i && i <= high; {\n\t\tin, out := &c.link[i], &c.link[i+1]\n\t\tnDst, nSrc, err0 := in.t.Transform(out.dst(), in.src(), atEOF && low == i)\n\t\tout.n += nDst\n\t\tin.p += nSrc\n\t\tif i > 0 && in.p == in.n {\n\t\t\tin.p, in.n = 0, 0\n\t\t}\n\t\tneedProgress, lastFull = lastFull, false\n\t\tswitch err0 {\n\t\tcase ErrShortDst:\n\t\t\t// Process the destination buffer next. Return if we are already\n\t\t\t// at the high index.\n\t\t\tif i == high {\n\t\t\t\treturn dstL.n, srcL.p, ErrShortDst\n\t\t\t}\n\t\t\tif out.n != 0 {\n\t\t\t\ti++\n\t\t\t\t// If the Transformer at the next index is not able to process any\n\t\t\t\t// source bytes there is nothing that can be done to make progress\n\t\t\t\t// and the bytes will remain unprocessed. lastFull is used to\n\t\t\t\t// detect this and break out of the loop with a fatal error.\n\t\t\t\tlastFull = true\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// The destination buffer was too small, but is completely empty.\n\t\t\t// Return a fatal error as this transformation can never complete.\n\t\t\tc.fatalError(i, errShortInternal)\n\t\tcase ErrShortSrc:\n\t\t\tif i == 0 {\n\t\t\t\t// Save ErrShortSrc in err. All other errors take precedence.\n\t\t\t\terr = ErrShortSrc\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Source bytes were depleted before filling up the destination buffer.\n\t\t\t// Verify we made some progress, move the remaining bytes to the errStart\n\t\t\t// and try to get more source bytes.\n\t\t\tif needProgress && nSrc == 0 || in.n-in.p == len(in.b) {\n\t\t\t\t// There were not enough source bytes to proceed while the source\n\t\t\t\t// buffer cannot hold any more bytes. Return a fatal error as this\n\t\t\t\t// transformation can never complete.\n\t\t\t\tc.fatalError(i, errShortInternal)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// in.b is an internal buffer and we can make progress.\n\t\t\tin.p, in.n = 0, copy(in.b, in.src())\n\t\t\tfallthrough\n\t\tcase nil:\n\t\t\t// if i == low, we have depleted the bytes at index i or any lower levels.\n\t\t\t// In that case we increase low and i. In all other cases we decrease i to\n\t\t\t// fetch more bytes before proceeding to the next index.\n\t\t\tif i > low {\n\t\t\t\ti--\n\t\t\t\tcontinue\n\t\t\t}\n\t\tdefault:\n\t\t\tc.fatalError(i, err0)\n\t\t}\n\t\t// Exhausted level low or fatal error: increase low and continue\n\t\t// to process the bytes accepted so far.\n\t\ti++\n\t\tlow = i\n\t}\n\n\t// If c.errStart > 0, this means we found a fatal error.  We will clear\n\t// all upstream buffers. At this point, no more progress can be made\n\t// downstream, as Transform would have bailed while handling ErrShortDst.\n\tif c.errStart > 0 {\n\t\tfor i := 1; i < c.errStart; i++ {\n\t\t\tc.link[i].p, c.link[i].n = 0, 0\n\t\t}\n\t\terr, c.errStart, c.err = c.err, 0, nil\n\t}\n\treturn dstL.n, srcL.p, err\n}\n\n// Deprecated: Use runes.Remove instead.\nfunc RemoveFunc(f func(r rune) bool) Transformer {\n\treturn removeF(f)\n}\n\ntype removeF func(r rune) bool\n\nfunc (removeF) Reset() {}\n\n// Transform implements the Transformer interface.\nfunc (t removeF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\tfor r, sz := rune(0), 0; len(src) > 0; src = src[sz:] {\n\n\t\tif r = rune(src[0]); r < utf8.RuneSelf {\n\t\t\tsz = 1\n\t\t} else {\n\t\t\tr, sz = utf8.DecodeRune(src)\n\n\t\t\tif sz == 1 {\n\t\t\t\t// Invalid rune.\n\t\t\t\tif !atEOF && !utf8.FullRune(src) {\n\t\t\t\t\terr = ErrShortSrc\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// We replace illegal bytes with RuneError. Not doing so might\n\t\t\t\t// otherwise turn a sequence of invalid UTF-8 into valid UTF-8.\n\t\t\t\t// The resulting byte sequence may subsequently contain runes\n\t\t\t\t// for which t(r) is true that were passed unnoticed.\n\t\t\t\tif !t(r) {\n\t\t\t\t\tif nDst+3 > len(dst) {\n\t\t\t\t\t\terr = ErrShortDst\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tnDst += copy(dst[nDst:], \"\\uFFFD\")\n\t\t\t\t}\n\t\t\t\tnSrc++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif !t(r) {\n\t\t\tif nDst+sz > len(dst) {\n\t\t\t\terr = ErrShortDst\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tnDst += copy(dst[nDst:], src[:sz])\n\t\t}\n\t\tnSrc += sz\n\t}\n\treturn\n}\n\n// grow returns a new []byte that is longer than b, and copies the first n bytes\n// of b to the start of the new slice.\nfunc grow(b []byte, n int) []byte {\n\tm := len(b)\n\tif m <= 32 {\n\t\tm = 64\n\t} else if m <= 256 {\n\t\tm *= 2\n\t} else {\n\t\tm += m >> 1\n\t}\n\tbuf := make([]byte, m)\n\tcopy(buf, b[:n])\n\treturn buf\n}\n\nconst initialBufSize = 128\n\n// String returns a string with the result of converting s[:n] using t, where\n// n <= len(s). If err == nil, n will be len(s). It calls Reset on t.\nfunc String(t Transformer, s string) (result string, n int, err error) {\n\tt.Reset()\n\tif s == \"\" {\n\t\t// Fast path for the common case for empty input. Results in about a\n\t\t// 86% reduction of running time for BenchmarkStringLowerEmpty.\n\t\tif _, _, err := t.Transform(nil, nil, true); err == nil {\n\t\t\treturn \"\", 0, nil\n\t\t}\n\t}\n\n\t// Allocate only once. Note that both dst and src escape when passed to\n\t// Transform.\n\tbuf := [2 * initialBufSize]byte{}\n\tdst := buf[:initialBufSize:initialBufSize]\n\tsrc := buf[initialBufSize : 2*initialBufSize]\n\n\t// The input string s is transformed in multiple chunks (starting with a\n\t// chunk size of initialBufSize). nDst and nSrc are per-chunk (or\n\t// per-Transform-call) indexes, pDst and pSrc are overall indexes.\n\tnDst, nSrc := 0, 0\n\tpDst, pSrc := 0, 0\n\n\t// pPrefix is the length of a common prefix: the first pPrefix bytes of the\n\t// result will equal the first pPrefix bytes of s. It is not guaranteed to\n\t// be the largest such value, but if pPrefix, len(result) and len(s) are\n\t// all equal after the final transform (i.e. calling Transform with atEOF\n\t// being true returned nil error) then we don't need to allocate a new\n\t// result string.\n\tpPrefix := 0\n\tfor {\n\t\t// Invariant: pDst == pPrefix && pSrc == pPrefix.\n\n\t\tn := copy(src, s[pSrc:])\n\t\tnDst, nSrc, err = t.Transform(dst, src[:n], pSrc+n == len(s))\n\t\tpDst += nDst\n\t\tpSrc += nSrc\n\n\t\t// TODO:  let transformers implement an optional Spanner interface, akin\n\t\t// to norm's QuickSpan. This would even allow us to avoid any allocation.\n\t\tif !bytes.Equal(dst[:nDst], src[:nSrc]) {\n\t\t\tbreak\n\t\t}\n\t\tpPrefix = pSrc\n\t\tif err == ErrShortDst {\n\t\t\t// A buffer can only be short if a transformer modifies its input.\n\t\t\tbreak\n\t\t} else if err == ErrShortSrc {\n\t\t\tif nSrc == 0 {\n\t\t\t\t// No progress was made.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Equal so far and !atEOF, so continue checking.\n\t\t} else if err != nil || pPrefix == len(s) {\n\t\t\treturn string(s[:pPrefix]), pPrefix, err\n\t\t}\n\t}\n\t// Post-condition: pDst == pPrefix + nDst && pSrc == pPrefix + nSrc.\n\n\t// We have transformed the first pSrc bytes of the input s to become pDst\n\t// transformed bytes. Those transformed bytes are discontiguous: the first\n\t// pPrefix of them equal s[:pPrefix] and the last nDst of them equal\n\t// dst[:nDst]. We copy them around, into a new dst buffer if necessary, so\n\t// that they become one contiguous slice: dst[:pDst].\n\tif pPrefix != 0 {\n\t\tnewDst := dst\n\t\tif pDst > len(newDst) {\n\t\t\tnewDst = make([]byte, len(s)+nDst-nSrc)\n\t\t}\n\t\tcopy(newDst[pPrefix:pDst], dst[:nDst])\n\t\tcopy(newDst[:pPrefix], s[:pPrefix])\n\t\tdst = newDst\n\t}\n\n\t// Prevent duplicate Transform calls with atEOF being true at the end of\n\t// the input. Also return if we have an unrecoverable error.\n\tif (err == nil && pSrc == len(s)) ||\n\t\t(err != nil && err != ErrShortDst && err != ErrShortSrc) {\n\t\treturn string(dst[:pDst]), pSrc, err\n\t}\n\n\t// Transform the remaining input, growing dst and src buffers as necessary.\n\tfor {\n\t\tn := copy(src, s[pSrc:])\n\t\tatEOF := pSrc+n == len(s)\n\t\tnDst, nSrc, err := t.Transform(dst[pDst:], src[:n], atEOF)\n\t\tpDst += nDst\n\t\tpSrc += nSrc\n\n\t\t// If we got ErrShortDst or ErrShortSrc, do not grow as long as we can\n\t\t// make progress. This may avoid excessive allocations.\n\t\tif err == ErrShortDst {\n\t\t\tif nDst == 0 {\n\t\t\t\tdst = grow(dst, pDst)\n\t\t\t}\n\t\t} else if err == ErrShortSrc {\n\t\t\tif atEOF {\n\t\t\t\treturn string(dst[:pDst]), pSrc, err\n\t\t\t}\n\t\t\tif nSrc == 0 {\n\t\t\t\tsrc = grow(src, 0)\n\t\t\t}\n\t\t} else if err != nil || pSrc == len(s) {\n\t\t\treturn string(dst[:pDst]), pSrc, err\n\t\t}\n\t}\n}\n\n// Bytes returns a new byte slice with the result of converting b[:n] using t,\n// where n <= len(b). If err == nil, n will be len(b). It calls Reset on t.\nfunc Bytes(t Transformer, b []byte) (result []byte, n int, err error) {\n\treturn doAppend(t, 0, make([]byte, len(b)), b)\n}\n\n// Append appends the result of converting src[:n] using t to dst, where\n// n <= len(src), If err == nil, n will be len(src). It calls Reset on t.\nfunc Append(t Transformer, dst, src []byte) (result []byte, n int, err error) {\n\tif len(dst) == cap(dst) {\n\t\tn := len(src) + len(dst) // It is okay for this to be 0.\n\t\tb := make([]byte, n)\n\t\tdst = b[:copy(b, dst)]\n\t}\n\treturn doAppend(t, len(dst), dst[:cap(dst)], src)\n}\n\nfunc doAppend(t Transformer, pDst int, dst, src []byte) (result []byte, n int, err error) {\n\tt.Reset()\n\tpSrc := 0\n\tfor {\n\t\tnDst, nSrc, err := t.Transform(dst[pDst:], src[pSrc:], true)\n\t\tpDst += nDst\n\t\tpSrc += nSrc\n\t\tif err != ErrShortDst {\n\t\t\treturn dst[:pDst], pSrc, err\n\t\t}\n\n\t\t// Grow the destination buffer, but do not grow as long as we can make\n\t\t// progress. This may avoid excessive allocations.\n\t\tif nDst == 0 {\n\t\t\tdst = grow(dst, pDst)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/bidi.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:generate go run gen.go gen_trieval.go gen_ranges.go\n\n// Package bidi contains functionality for bidirectional text support.\n//\n// See https://www.unicode.org/reports/tr9.\n//\n// NOTE: UNDER CONSTRUCTION. This API may change in backwards incompatible ways\n// and without notice.\npackage bidi // import \"golang.org/x/text/unicode/bidi\"\n\n// TODO\n// - Transformer for reordering?\n// - Transformer (validator, really) for Bidi Rule.\n\nimport (\n\t\"bytes\"\n)\n\n// This API tries to avoid dealing with embedding levels for now. Under the hood\n// these will be computed, but the question is to which extent the user should\n// know they exist. We should at some point allow the user to specify an\n// embedding hierarchy, though.\n\n// A Direction indicates the overall flow of text.\ntype Direction int\n\nconst (\n\t// LeftToRight indicates the text contains no right-to-left characters and\n\t// that either there are some left-to-right characters or the option\n\t// DefaultDirection(LeftToRight) was passed.\n\tLeftToRight Direction = iota\n\n\t// RightToLeft indicates the text contains no left-to-right characters and\n\t// that either there are some right-to-left characters or the option\n\t// DefaultDirection(RightToLeft) was passed.\n\tRightToLeft\n\n\t// Mixed indicates text contains both left-to-right and right-to-left\n\t// characters.\n\tMixed\n\n\t// Neutral means that text contains no left-to-right and right-to-left\n\t// characters and that no default direction has been set.\n\tNeutral\n)\n\ntype options struct {\n\tdefaultDirection Direction\n}\n\n// An Option is an option for Bidi processing.\ntype Option func(*options)\n\n// ICU allows the user to define embedding levels. This may be used, for example,\n// to use hierarchical structure of markup languages to define embeddings.\n// The following option may be a way to expose this functionality in this API.\n// // LevelFunc sets a function that associates nesting levels with the given text.\n// // The levels function will be called with monotonically increasing values for p.\n// func LevelFunc(levels func(p int) int) Option {\n// \tpanic(\"unimplemented\")\n// }\n\n// DefaultDirection sets the default direction for a Paragraph. The direction is\n// overridden if the text contains directional characters.\nfunc DefaultDirection(d Direction) Option {\n\treturn func(opts *options) {\n\t\topts.defaultDirection = d\n\t}\n}\n\n// A Paragraph holds a single Paragraph for Bidi processing.\ntype Paragraph struct {\n\tp          []byte\n\to          Ordering\n\topts       []Option\n\ttypes      []Class\n\tpairTypes  []bracketType\n\tpairValues []rune\n\trunes      []rune\n\toptions    options\n}\n\n// Initialize the p.pairTypes, p.pairValues and p.types from the input previously\n// set by p.SetBytes() or p.SetString(). Also limit the input up to (and including) a paragraph\n// separator (bidi class B).\n//\n// The function p.Order() needs these values to be set, so this preparation could be postponed.\n// But since the SetBytes and SetStrings functions return the length of the input up to the paragraph\n// separator, the whole input needs to be processed anyway and should not be done twice.\n//\n// The function has the same return values as SetBytes() / SetString()\nfunc (p *Paragraph) prepareInput() (n int, err error) {\n\tp.runes = bytes.Runes(p.p)\n\tbytecount := 0\n\t// clear slices from previous SetString or SetBytes\n\tp.pairTypes = nil\n\tp.pairValues = nil\n\tp.types = nil\n\n\tfor _, r := range p.runes {\n\t\tprops, i := LookupRune(r)\n\t\tbytecount += i\n\t\tcls := props.Class()\n\t\tif cls == B {\n\t\t\treturn bytecount, nil\n\t\t}\n\t\tp.types = append(p.types, cls)\n\t\tif props.IsOpeningBracket() {\n\t\t\tp.pairTypes = append(p.pairTypes, bpOpen)\n\t\t\tp.pairValues = append(p.pairValues, r)\n\t\t} else if props.IsBracket() {\n\t\t\t// this must be a closing bracket,\n\t\t\t// since IsOpeningBracket is not true\n\t\t\tp.pairTypes = append(p.pairTypes, bpClose)\n\t\t\tp.pairValues = append(p.pairValues, r)\n\t\t} else {\n\t\t\tp.pairTypes = append(p.pairTypes, bpNone)\n\t\t\tp.pairValues = append(p.pairValues, 0)\n\t\t}\n\t}\n\treturn bytecount, nil\n}\n\n// SetBytes configures p for the given paragraph text. It replaces text\n// previously set by SetBytes or SetString. If b contains a paragraph separator\n// it will only process the first paragraph and report the number of bytes\n// consumed from b including this separator. Error may be non-nil if options are\n// given.\nfunc (p *Paragraph) SetBytes(b []byte, opts ...Option) (n int, err error) {\n\tp.p = b\n\tp.opts = opts\n\treturn p.prepareInput()\n}\n\n// SetString configures s for the given paragraph text. It replaces text\n// previously set by SetBytes or SetString. If s contains a paragraph separator\n// it will only process the first paragraph and report the number of bytes\n// consumed from s including this separator. Error may be non-nil if options are\n// given.\nfunc (p *Paragraph) SetString(s string, opts ...Option) (n int, err error) {\n\tp.p = []byte(s)\n\tp.opts = opts\n\treturn p.prepareInput()\n}\n\n// IsLeftToRight reports whether the principle direction of rendering for this\n// paragraphs is left-to-right. If this returns false, the principle direction\n// of rendering is right-to-left.\nfunc (p *Paragraph) IsLeftToRight() bool {\n\treturn p.Direction() == LeftToRight\n}\n\n// Direction returns the direction of the text of this paragraph.\n//\n// The direction may be LeftToRight, RightToLeft, Mixed, or Neutral.\nfunc (p *Paragraph) Direction() Direction {\n\treturn p.o.Direction()\n}\n\n// TODO: what happens if the position is > len(input)? This should return an error.\n\n// RunAt reports the Run at the given position of the input text.\n//\n// This method can be used for computing line breaks on paragraphs.\nfunc (p *Paragraph) RunAt(pos int) Run {\n\tc := 0\n\trunNumber := 0\n\tfor i, r := range p.o.runes {\n\t\tc += len(r)\n\t\tif pos < c {\n\t\t\trunNumber = i\n\t\t}\n\t}\n\treturn p.o.Run(runNumber)\n}\n\nfunc calculateOrdering(levels []level, runes []rune) Ordering {\n\tvar curDir Direction\n\n\tprevDir := Neutral\n\tprevI := 0\n\n\to := Ordering{}\n\t// lvl = 0,2,4,...: left to right\n\t// lvl = 1,3,5,...: right to left\n\tfor i, lvl := range levels {\n\t\tif lvl%2 == 0 {\n\t\t\tcurDir = LeftToRight\n\t\t} else {\n\t\t\tcurDir = RightToLeft\n\t\t}\n\t\tif curDir != prevDir {\n\t\t\tif i > 0 {\n\t\t\t\to.runes = append(o.runes, runes[prevI:i])\n\t\t\t\to.directions = append(o.directions, prevDir)\n\t\t\t\to.startpos = append(o.startpos, prevI)\n\t\t\t}\n\t\t\tprevI = i\n\t\t\tprevDir = curDir\n\t\t}\n\t}\n\to.runes = append(o.runes, runes[prevI:])\n\to.directions = append(o.directions, prevDir)\n\to.startpos = append(o.startpos, prevI)\n\treturn o\n}\n\n// Order computes the visual ordering of all the runs in a Paragraph.\nfunc (p *Paragraph) Order() (Ordering, error) {\n\tif len(p.types) == 0 {\n\t\treturn Ordering{}, nil\n\t}\n\n\tfor _, fn := range p.opts {\n\t\tfn(&p.options)\n\t}\n\tlvl := level(-1)\n\tif p.options.defaultDirection == RightToLeft {\n\t\tlvl = 1\n\t}\n\tpara, err := newParagraph(p.types, p.pairTypes, p.pairValues, lvl)\n\tif err != nil {\n\t\treturn Ordering{}, err\n\t}\n\n\tlevels := para.getLevels([]int{len(p.types)})\n\n\tp.o = calculateOrdering(levels, p.runes)\n\treturn p.o, nil\n}\n\n// Line computes the visual ordering of runs for a single line starting and\n// ending at the given positions in the original text.\nfunc (p *Paragraph) Line(start, end int) (Ordering, error) {\n\tlineTypes := p.types[start:end]\n\tpara, err := newParagraph(lineTypes, p.pairTypes[start:end], p.pairValues[start:end], -1)\n\tif err != nil {\n\t\treturn Ordering{}, err\n\t}\n\tlevels := para.getLevels([]int{len(lineTypes)})\n\to := calculateOrdering(levels, p.runes[start:end])\n\treturn o, nil\n}\n\n// An Ordering holds the computed visual order of runs of a Paragraph. Calling\n// SetBytes or SetString on the originating Paragraph invalidates an Ordering.\n// The methods of an Ordering should only be called by one goroutine at a time.\ntype Ordering struct {\n\trunes      [][]rune\n\tdirections []Direction\n\tstartpos   []int\n}\n\n// Direction reports the directionality of the runs.\n//\n// The direction may be LeftToRight, RightToLeft, Mixed, or Neutral.\nfunc (o *Ordering) Direction() Direction {\n\treturn o.directions[0]\n}\n\n// NumRuns returns the number of runs.\nfunc (o *Ordering) NumRuns() int {\n\treturn len(o.runes)\n}\n\n// Run returns the ith run within the ordering.\nfunc (o *Ordering) Run(i int) Run {\n\tr := Run{\n\t\trunes:     o.runes[i],\n\t\tdirection: o.directions[i],\n\t\tstartpos:  o.startpos[i],\n\t}\n\treturn r\n}\n\n// TODO: perhaps with options.\n// // Reorder creates a reader that reads the runes in visual order per character.\n// // Modifiers remain after the runes they modify.\n// func (l *Runs) Reorder() io.Reader {\n// \tpanic(\"unimplemented\")\n// }\n\n// A Run is a continuous sequence of characters of a single direction.\ntype Run struct {\n\trunes     []rune\n\tdirection Direction\n\tstartpos  int\n}\n\n// String returns the text of the run in its original order.\nfunc (r *Run) String() string {\n\treturn string(r.runes)\n}\n\n// Bytes returns the text of the run in its original order.\nfunc (r *Run) Bytes() []byte {\n\treturn []byte(r.String())\n}\n\n// TODO: methods for\n// - Display order\n// - headers and footers\n// - bracket replacement.\n\n// Direction reports the direction of the run.\nfunc (r *Run) Direction() Direction {\n\treturn r.direction\n}\n\n// Pos returns the position of the Run within the text passed to SetBytes or SetString of the\n// originating Paragraph value.\nfunc (r *Run) Pos() (start, end int) {\n\treturn r.startpos, r.startpos + len(r.runes) - 1\n}\n\n// AppendReverse reverses the order of characters of in, appends them to out,\n// and returns the result. Modifiers will still follow the runes they modify.\n// Brackets are replaced with their counterparts.\nfunc AppendReverse(out, in []byte) []byte {\n\tret := make([]byte, len(in)+len(out))\n\tcopy(ret, out)\n\tinRunes := bytes.Runes(in)\n\n\tfor i, r := range inRunes {\n\t\tprop, _ := LookupRune(r)\n\t\tif prop.IsBracket() {\n\t\t\tinRunes[i] = prop.reverseBracket(r)\n\t\t}\n\t}\n\n\tfor i, j := 0, len(inRunes)-1; i < j; i, j = i+1, j-1 {\n\t\tinRunes[i], inRunes[j] = inRunes[j], inRunes[i]\n\t}\n\tcopy(ret[len(out):], string(inRunes))\n\n\treturn ret\n}\n\n// ReverseString reverses the order of characters in s and returns a new string.\n// Modifiers will still follow the runes they modify. Brackets are replaced with\n// their counterparts.\nfunc ReverseString(s string) string {\n\tinput := []rune(s)\n\tli := len(input)\n\tret := make([]rune, li)\n\tfor i, r := range input {\n\t\tprop, _ := LookupRune(r)\n\t\tif prop.IsBracket() {\n\t\t\tret[li-i-1] = prop.reverseBracket(r)\n\t\t} else {\n\t\t\tret[li-i-1] = r\n\t\t}\n\t}\n\treturn string(ret)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/bracket.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage bidi\n\nimport (\n\t\"container/list\"\n\t\"fmt\"\n\t\"sort\"\n)\n\n// This file contains a port of the reference implementation of the\n// Bidi Parentheses Algorithm:\n// https://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/BidiPBAReference.java\n//\n// The implementation in this file covers definitions BD14-BD16 and rule N0\n// of UAX#9.\n//\n// Some preprocessing is done for each rune before data is passed to this\n// algorithm:\n//  - opening and closing brackets are identified\n//  - a bracket pair type, like '(' and ')' is assigned a unique identifier that\n//    is identical for the opening and closing bracket. It is left to do these\n//    mappings.\n//  - The BPA algorithm requires that bracket characters that are canonical\n//    equivalents of each other be able to be substituted for each other.\n//    It is the responsibility of the caller to do this canonicalization.\n//\n// In implementing BD16, this implementation departs slightly from the \"logical\"\n// algorithm defined in UAX#9. In particular, the stack referenced there\n// supports operations that go beyond a \"basic\" stack. An equivalent\n// implementation based on a linked list is used here.\n\n// Bidi_Paired_Bracket_Type\n// BD14. An opening paired bracket is a character whose\n// Bidi_Paired_Bracket_Type property value is Open.\n//\n// BD15. A closing paired bracket is a character whose\n// Bidi_Paired_Bracket_Type property value is Close.\ntype bracketType byte\n\nconst (\n\tbpNone bracketType = iota\n\tbpOpen\n\tbpClose\n)\n\n// bracketPair holds a pair of index values for opening and closing bracket\n// location of a bracket pair.\ntype bracketPair struct {\n\topener int\n\tcloser int\n}\n\nfunc (b *bracketPair) String() string {\n\treturn fmt.Sprintf(\"(%v, %v)\", b.opener, b.closer)\n}\n\n// bracketPairs is a slice of bracketPairs with a sort.Interface implementation.\ntype bracketPairs []bracketPair\n\nfunc (b bracketPairs) Len() int           { return len(b) }\nfunc (b bracketPairs) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }\nfunc (b bracketPairs) Less(i, j int) bool { return b[i].opener < b[j].opener }\n\n// resolvePairedBrackets runs the paired bracket part of the UBA algorithm.\n//\n// For each rune, it takes the indexes into the original string, the class the\n// bracket type (in pairTypes) and the bracket identifier (pairValues). It also\n// takes the direction type for the start-of-sentence and the embedding level.\n//\n// The identifiers for bracket types are the rune of the canonicalized opening\n// bracket for brackets (open or close) or 0 for runes that are not brackets.\nfunc resolvePairedBrackets(s *isolatingRunSequence) {\n\tp := bracketPairer{\n\t\tsos:              s.sos,\n\t\topeners:          list.New(),\n\t\tcodesIsolatedRun: s.types,\n\t\tindexes:          s.indexes,\n\t}\n\tdirEmbed := L\n\tif s.level&1 != 0 {\n\t\tdirEmbed = R\n\t}\n\tp.locateBrackets(s.p.pairTypes, s.p.pairValues)\n\tp.resolveBrackets(dirEmbed, s.p.initialTypes)\n}\n\ntype bracketPairer struct {\n\tsos Class // direction corresponding to start of sequence\n\n\t// The following is a restatement of BD 16 using non-algorithmic language.\n\t//\n\t// A bracket pair is a pair of characters consisting of an opening\n\t// paired bracket and a closing paired bracket such that the\n\t// Bidi_Paired_Bracket property value of the former equals the latter,\n\t// subject to the following constraints.\n\t// - both characters of a pair occur in the same isolating run sequence\n\t// - the closing character of a pair follows the opening character\n\t// - any bracket character can belong at most to one pair, the earliest possible one\n\t// - any bracket character not part of a pair is treated like an ordinary character\n\t// - pairs may nest properly, but their spans may not overlap otherwise\n\n\t// Bracket characters with canonical decompositions are supposed to be\n\t// treated as if they had been normalized, to allow normalized and non-\n\t// normalized text to give the same result. In this implementation that step\n\t// is pushed out to the caller. The caller has to ensure that the pairValue\n\t// slices contain the rune of the opening bracket after normalization for\n\t// any opening or closing bracket.\n\n\topeners *list.List // list of positions for opening brackets\n\n\t// bracket pair positions sorted by location of opening bracket\n\tpairPositions bracketPairs\n\n\tcodesIsolatedRun []Class // directional bidi codes for an isolated run\n\tindexes          []int   // array of index values into the original string\n\n}\n\n// matchOpener reports whether characters at given positions form a matching\n// bracket pair.\nfunc (p *bracketPairer) matchOpener(pairValues []rune, opener, closer int) bool {\n\treturn pairValues[p.indexes[opener]] == pairValues[p.indexes[closer]]\n}\n\nconst maxPairingDepth = 63\n\n// locateBrackets locates matching bracket pairs according to BD16.\n//\n// This implementation uses a linked list instead of a stack, because, while\n// elements are added at the front (like a push) they are not generally removed\n// in atomic 'pop' operations, reducing the benefit of the stack archetype.\nfunc (p *bracketPairer) locateBrackets(pairTypes []bracketType, pairValues []rune) {\n\t// traverse the run\n\t// do that explicitly (not in a for-each) so we can record position\n\tfor i, index := range p.indexes {\n\n\t\t// look at the bracket type for each character\n\t\tif pairTypes[index] == bpNone || p.codesIsolatedRun[i] != ON {\n\t\t\t// continue scanning\n\t\t\tcontinue\n\t\t}\n\t\tswitch pairTypes[index] {\n\t\tcase bpOpen:\n\t\t\t// check if maximum pairing depth reached\n\t\t\tif p.openers.Len() == maxPairingDepth {\n\t\t\t\tp.openers.Init()\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// remember opener location, most recent first\n\t\t\tp.openers.PushFront(i)\n\n\t\tcase bpClose:\n\t\t\t// see if there is a match\n\t\t\tcount := 0\n\t\t\tfor elem := p.openers.Front(); elem != nil; elem = elem.Next() {\n\t\t\t\tcount++\n\t\t\t\topener := elem.Value.(int)\n\t\t\t\tif p.matchOpener(pairValues, opener, i) {\n\t\t\t\t\t// if the opener matches, add nested pair to the ordered list\n\t\t\t\t\tp.pairPositions = append(p.pairPositions, bracketPair{opener, i})\n\t\t\t\t\t// remove up to and including matched opener\n\t\t\t\t\tfor ; count > 0; count-- {\n\t\t\t\t\t\tp.openers.Remove(p.openers.Front())\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tsort.Sort(p.pairPositions)\n\t\t\t// if we get here, the closing bracket matched no openers\n\t\t\t// and gets ignored\n\t\t}\n\t}\n}\n\n// Bracket pairs within an isolating run sequence are processed as units so\n// that both the opening and the closing paired bracket in a pair resolve to\n// the same direction.\n//\n// N0. Process bracket pairs in an isolating run sequence sequentially in\n// the logical order of the text positions of the opening paired brackets\n// using the logic given below. Within this scope, bidirectional types EN\n// and AN are treated as R.\n//\n// Identify the bracket pairs in the current isolating run sequence\n// according to BD16. For each bracket-pair element in the list of pairs of\n// text positions:\n//\n// a Inspect the bidirectional types of the characters enclosed within the\n// bracket pair.\n//\n// b If any strong type (either L or R) matching the embedding direction is\n// found, set the type for both brackets in the pair to match the embedding\n// direction.\n//\n// o [ e ] o -> o e e e o\n//\n// o [ o e ] -> o e o e e\n//\n// o [ NI e ] -> o e NI e e\n//\n// c Otherwise, if a strong type (opposite the embedding direction) is\n// found, test for adjacent strong types as follows: 1 First, check\n// backwards before the opening paired bracket until the first strong type\n// (L, R, or sos) is found. If that first preceding strong type is opposite\n// the embedding direction, then set the type for both brackets in the pair\n// to that type. 2 Otherwise, set the type for both brackets in the pair to\n// the embedding direction.\n//\n// o [ o ] e -> o o o o e\n//\n// o [ o NI ] o -> o o o NI o o\n//\n// e [ o ] o -> e e o e o\n//\n// e [ o ] e -> e e o e e\n//\n// e ( o [ o ] NI ) e -> e e o o o o NI e e\n//\n// d Otherwise, do not set the type for the current bracket pair. Note that\n// if the enclosed text contains no strong types the paired brackets will\n// both resolve to the same level when resolved individually using rules N1\n// and N2.\n//\n// e ( NI ) o -> e ( NI ) o\n\n// getStrongTypeN0 maps character's directional code to strong type as required\n// by rule N0.\n//\n// TODO: have separate type for \"strong\" directionality.\nfunc (p *bracketPairer) getStrongTypeN0(index int) Class {\n\tswitch p.codesIsolatedRun[index] {\n\t// in the scope of N0, number types are treated as R\n\tcase EN, AN, AL, R:\n\t\treturn R\n\tcase L:\n\t\treturn L\n\tdefault:\n\t\treturn ON\n\t}\n}\n\n// classifyPairContent reports the strong types contained inside a Bracket Pair,\n// assuming the given embedding direction.\n//\n// It returns ON if no strong type is found. If a single strong type is found,\n// it returns this type. Otherwise it returns the embedding direction.\n//\n// TODO: use separate type for \"strong\" directionality.\nfunc (p *bracketPairer) classifyPairContent(loc bracketPair, dirEmbed Class) Class {\n\tdirOpposite := ON\n\tfor i := loc.opener + 1; i < loc.closer; i++ {\n\t\tdir := p.getStrongTypeN0(i)\n\t\tif dir == ON {\n\t\t\tcontinue\n\t\t}\n\t\tif dir == dirEmbed {\n\t\t\treturn dir // type matching embedding direction found\n\t\t}\n\t\tdirOpposite = dir\n\t}\n\t// return ON if no strong type found, or class opposite to dirEmbed\n\treturn dirOpposite\n}\n\n// classBeforePair determines which strong types are present before a Bracket\n// Pair. Return R or L if strong type found, otherwise ON.\nfunc (p *bracketPairer) classBeforePair(loc bracketPair) Class {\n\tfor i := loc.opener - 1; i >= 0; i-- {\n\t\tif dir := p.getStrongTypeN0(i); dir != ON {\n\t\t\treturn dir\n\t\t}\n\t}\n\t// no strong types found, return sos\n\treturn p.sos\n}\n\n// assignBracketType implements rule N0 for a single bracket pair.\nfunc (p *bracketPairer) assignBracketType(loc bracketPair, dirEmbed Class, initialTypes []Class) {\n\t// rule \"N0, a\", inspect contents of pair\n\tdirPair := p.classifyPairContent(loc, dirEmbed)\n\n\t// dirPair is now L, R, or N (no strong type found)\n\n\t// the following logical tests are performed out of order compared to\n\t// the statement of the rules but yield the same results\n\tif dirPair == ON {\n\t\treturn // case \"d\" - nothing to do\n\t}\n\n\tif dirPair != dirEmbed {\n\t\t// case \"c\": strong type found, opposite - check before (c.1)\n\t\tdirPair = p.classBeforePair(loc)\n\t\tif dirPair == dirEmbed || dirPair == ON {\n\t\t\t// no strong opposite type found before - use embedding (c.2)\n\t\t\tdirPair = dirEmbed\n\t\t}\n\t}\n\t// else: case \"b\", strong type found matching embedding,\n\t// no explicit action needed, as dirPair is already set to embedding\n\t// direction\n\n\t// set the bracket types to the type found\n\tp.setBracketsToType(loc, dirPair, initialTypes)\n}\n\nfunc (p *bracketPairer) setBracketsToType(loc bracketPair, dirPair Class, initialTypes []Class) {\n\tp.codesIsolatedRun[loc.opener] = dirPair\n\tp.codesIsolatedRun[loc.closer] = dirPair\n\n\tfor i := loc.opener + 1; i < loc.closer; i++ {\n\t\tindex := p.indexes[i]\n\t\tif initialTypes[index] != NSM {\n\t\t\tbreak\n\t\t}\n\t\tp.codesIsolatedRun[i] = dirPair\n\t}\n\n\tfor i := loc.closer + 1; i < len(p.indexes); i++ {\n\t\tindex := p.indexes[i]\n\t\tif initialTypes[index] != NSM {\n\t\t\tbreak\n\t\t}\n\t\tp.codesIsolatedRun[i] = dirPair\n\t}\n}\n\n// resolveBrackets implements rule N0 for a list of pairs.\nfunc (p *bracketPairer) resolveBrackets(dirEmbed Class, initialTypes []Class) {\n\tfor _, loc := range p.pairPositions {\n\t\tp.assignBracketType(loc, dirEmbed, initialTypes)\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/core.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage bidi\n\nimport (\n\t\"fmt\"\n\t\"log\"\n)\n\n// This implementation is a port based on the reference implementation found at:\n// https://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/\n//\n// described in Unicode Bidirectional Algorithm (UAX #9).\n//\n// Input:\n// There are two levels of input to the algorithm, since clients may prefer to\n// supply some information from out-of-band sources rather than relying on the\n// default behavior.\n//\n// - Bidi class array\n// - Bidi class array, with externally supplied base line direction\n//\n// Output:\n// Output is separated into several stages:\n//\n//  - levels array over entire paragraph\n//  - reordering array over entire paragraph\n//  - levels array over line\n//  - reordering array over line\n//\n// Note that for conformance to the Unicode Bidirectional Algorithm,\n// implementations are only required to generate correct reordering and\n// character directionality (odd or even levels) over a line. Generating\n// identical level arrays over a line is not required. Bidi explicit format\n// codes (LRE, RLE, LRO, RLO, PDF) and BN can be assigned arbitrary levels and\n// positions as long as the rest of the input is properly reordered.\n//\n// As the algorithm is defined to operate on a single paragraph at a time, this\n// implementation is written to handle single paragraphs. Thus rule P1 is\n// presumed by this implementation-- the data provided to the implementation is\n// assumed to be a single paragraph, and either contains no 'B' codes, or a\n// single 'B' code at the end of the input. 'B' is allowed as input to\n// illustrate how the algorithm assigns it a level.\n//\n// Also note that rules L3 and L4 depend on the rendering engine that uses the\n// result of the bidi algorithm. This implementation assumes that the rendering\n// engine expects combining marks in visual order (e.g. to the left of their\n// base character in RTL runs) and that it adjusts the glyphs used to render\n// mirrored characters that are in RTL runs so that they render appropriately.\n\n// level is the embedding level of a character. Even embedding levels indicate\n// left-to-right order and odd levels indicate right-to-left order. The special\n// level of -1 is reserved for undefined order.\ntype level int8\n\nconst implicitLevel level = -1\n\n// in returns if x is equal to any of the values in set.\nfunc (c Class) in(set ...Class) bool {\n\tfor _, s := range set {\n\t\tif c == s {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// A paragraph contains the state of a paragraph.\ntype paragraph struct {\n\tinitialTypes []Class\n\n\t// Arrays of properties needed for paired bracket evaluation in N0\n\tpairTypes  []bracketType // paired Bracket types for paragraph\n\tpairValues []rune        // rune for opening bracket or pbOpen and pbClose; 0 for pbNone\n\n\tembeddingLevel level // default: = implicitLevel;\n\n\t// at the paragraph levels\n\tresultTypes  []Class\n\tresultLevels []level\n\n\t// Index of matching PDI for isolate initiator characters. For other\n\t// characters, the value of matchingPDI will be set to -1. For isolate\n\t// initiators with no matching PDI, matchingPDI will be set to the length of\n\t// the input string.\n\tmatchingPDI []int\n\n\t// Index of matching isolate initiator for PDI characters. For other\n\t// characters, and for PDIs with no matching isolate initiator, the value of\n\t// matchingIsolateInitiator will be set to -1.\n\tmatchingIsolateInitiator []int\n}\n\n// newParagraph initializes a paragraph. The user needs to supply a few arrays\n// corresponding to the preprocessed text input. The types correspond to the\n// Unicode BiDi classes for each rune. pairTypes indicates the bracket type for\n// each rune. pairValues provides a unique bracket class identifier for each\n// rune (suggested is the rune of the open bracket for opening and matching\n// close brackets, after normalization). The embedding levels are optional, but\n// may be supplied to encode embedding levels of styled text.\nfunc newParagraph(types []Class, pairTypes []bracketType, pairValues []rune, levels level) (*paragraph, error) {\n\tvar err error\n\tif err = validateTypes(types); err != nil {\n\t\treturn nil, err\n\t}\n\tif err = validatePbTypes(pairTypes); err != nil {\n\t\treturn nil, err\n\t}\n\tif err = validatePbValues(pairValues, pairTypes); err != nil {\n\t\treturn nil, err\n\t}\n\tif err = validateParagraphEmbeddingLevel(levels); err != nil {\n\t\treturn nil, err\n\t}\n\n\tp := &paragraph{\n\t\tinitialTypes:   append([]Class(nil), types...),\n\t\tembeddingLevel: levels,\n\n\t\tpairTypes:  pairTypes,\n\t\tpairValues: pairValues,\n\n\t\tresultTypes: append([]Class(nil), types...),\n\t}\n\tp.run()\n\treturn p, nil\n}\n\nfunc (p *paragraph) Len() int { return len(p.initialTypes) }\n\n// The algorithm. Does not include line-based processing (Rules L1, L2).\n// These are applied later in the line-based phase of the algorithm.\nfunc (p *paragraph) run() {\n\tp.determineMatchingIsolates()\n\n\t// 1) determining the paragraph level\n\t// Rule P1 is the requirement for entering this algorithm.\n\t// Rules P2, P3.\n\t// If no externally supplied paragraph embedding level, use default.\n\tif p.embeddingLevel == implicitLevel {\n\t\tp.embeddingLevel = p.determineParagraphEmbeddingLevel(0, p.Len())\n\t}\n\n\t// Initialize result levels to paragraph embedding level.\n\tp.resultLevels = make([]level, p.Len())\n\tsetLevels(p.resultLevels, p.embeddingLevel)\n\n\t// 2) Explicit levels and directions\n\t// Rules X1-X8.\n\tp.determineExplicitEmbeddingLevels()\n\n\t// Rule X9.\n\t// We do not remove the embeddings, the overrides, the PDFs, and the BNs\n\t// from the string explicitly. But they are not copied into isolating run\n\t// sequences when they are created, so they are removed for all\n\t// practical purposes.\n\n\t// Rule X10.\n\t// Run remainder of algorithm one isolating run sequence at a time\n\tfor _, seq := range p.determineIsolatingRunSequences() {\n\t\t// 3) resolving weak types\n\t\t// Rules W1-W7.\n\t\tseq.resolveWeakTypes()\n\n\t\t// 4a) resolving paired brackets\n\t\t// Rule N0\n\t\tresolvePairedBrackets(seq)\n\n\t\t// 4b) resolving neutral types\n\t\t// Rules N1-N3.\n\t\tseq.resolveNeutralTypes()\n\n\t\t// 5) resolving implicit embedding levels\n\t\t// Rules I1, I2.\n\t\tseq.resolveImplicitLevels()\n\n\t\t// Apply the computed levels and types\n\t\tseq.applyLevelsAndTypes()\n\t}\n\n\t// Assign appropriate levels to 'hide' LREs, RLEs, LROs, RLOs, PDFs, and\n\t// BNs. This is for convenience, so the resulting level array will have\n\t// a value for every character.\n\tp.assignLevelsToCharactersRemovedByX9()\n}\n\n// determineMatchingIsolates determines the matching PDI for each isolate\n// initiator and vice versa.\n//\n// Definition BD9.\n//\n// At the end of this function:\n//\n//   - The member variable matchingPDI is set to point to the index of the\n//     matching PDI character for each isolate initiator character. If there is\n//     no matching PDI, it is set to the length of the input text. For other\n//     characters, it is set to -1.\n//   - The member variable matchingIsolateInitiator is set to point to the\n//     index of the matching isolate initiator character for each PDI character.\n//     If there is no matching isolate initiator, or the character is not a PDI,\n//     it is set to -1.\nfunc (p *paragraph) determineMatchingIsolates() {\n\tp.matchingPDI = make([]int, p.Len())\n\tp.matchingIsolateInitiator = make([]int, p.Len())\n\n\tfor i := range p.matchingIsolateInitiator {\n\t\tp.matchingIsolateInitiator[i] = -1\n\t}\n\n\tfor i := range p.matchingPDI {\n\t\tp.matchingPDI[i] = -1\n\n\t\tif t := p.resultTypes[i]; t.in(LRI, RLI, FSI) {\n\t\t\tdepthCounter := 1\n\t\t\tfor j := i + 1; j < p.Len(); j++ {\n\t\t\t\tif u := p.resultTypes[j]; u.in(LRI, RLI, FSI) {\n\t\t\t\t\tdepthCounter++\n\t\t\t\t} else if u == PDI {\n\t\t\t\t\tif depthCounter--; depthCounter == 0 {\n\t\t\t\t\t\tp.matchingPDI[i] = j\n\t\t\t\t\t\tp.matchingIsolateInitiator[j] = i\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif p.matchingPDI[i] == -1 {\n\t\t\t\tp.matchingPDI[i] = p.Len()\n\t\t\t}\n\t\t}\n\t}\n}\n\n// determineParagraphEmbeddingLevel reports the resolved paragraph direction of\n// the substring limited by the given range [start, end).\n//\n// Determines the paragraph level based on rules P2, P3. This is also used\n// in rule X5c to find if an FSI should resolve to LRI or RLI.\nfunc (p *paragraph) determineParagraphEmbeddingLevel(start, end int) level {\n\tvar strongType Class = unknownClass\n\n\t// Rule P2.\n\tfor i := start; i < end; i++ {\n\t\tif t := p.resultTypes[i]; t.in(L, AL, R) {\n\t\t\tstrongType = t\n\t\t\tbreak\n\t\t} else if t.in(FSI, LRI, RLI) {\n\t\t\ti = p.matchingPDI[i] // skip over to the matching PDI\n\t\t\tif i > end {\n\t\t\t\tlog.Panic(\"assert (i <= end)\")\n\t\t\t}\n\t\t}\n\t}\n\t// Rule P3.\n\tswitch strongType {\n\tcase unknownClass: // none found\n\t\t// default embedding level when no strong types found is 0.\n\t\treturn 0\n\tcase L:\n\t\treturn 0\n\tdefault: // AL, R\n\t\treturn 1\n\t}\n}\n\nconst maxDepth = 125\n\n// This stack will store the embedding levels and override and isolated\n// statuses\ntype directionalStatusStack struct {\n\tstackCounter        int\n\tembeddingLevelStack [maxDepth + 1]level\n\toverrideStatusStack [maxDepth + 1]Class\n\tisolateStatusStack  [maxDepth + 1]bool\n}\n\nfunc (s *directionalStatusStack) empty()     { s.stackCounter = 0 }\nfunc (s *directionalStatusStack) pop()       { s.stackCounter-- }\nfunc (s *directionalStatusStack) depth() int { return s.stackCounter }\n\nfunc (s *directionalStatusStack) push(level level, overrideStatus Class, isolateStatus bool) {\n\ts.embeddingLevelStack[s.stackCounter] = level\n\ts.overrideStatusStack[s.stackCounter] = overrideStatus\n\ts.isolateStatusStack[s.stackCounter] = isolateStatus\n\ts.stackCounter++\n}\n\nfunc (s *directionalStatusStack) lastEmbeddingLevel() level {\n\treturn s.embeddingLevelStack[s.stackCounter-1]\n}\n\nfunc (s *directionalStatusStack) lastDirectionalOverrideStatus() Class {\n\treturn s.overrideStatusStack[s.stackCounter-1]\n}\n\nfunc (s *directionalStatusStack) lastDirectionalIsolateStatus() bool {\n\treturn s.isolateStatusStack[s.stackCounter-1]\n}\n\n// Determine explicit levels using rules X1 - X8\nfunc (p *paragraph) determineExplicitEmbeddingLevels() {\n\tvar stack directionalStatusStack\n\tvar overflowIsolateCount, overflowEmbeddingCount, validIsolateCount int\n\n\t// Rule X1.\n\tstack.push(p.embeddingLevel, ON, false)\n\n\tfor i, t := range p.resultTypes {\n\t\t// Rules X2, X3, X4, X5, X5a, X5b, X5c\n\t\tswitch t {\n\t\tcase RLE, LRE, RLO, LRO, RLI, LRI, FSI:\n\t\t\tisIsolate := t.in(RLI, LRI, FSI)\n\t\t\tisRTL := t.in(RLE, RLO, RLI)\n\n\t\t\t// override if this is an FSI that resolves to RLI\n\t\t\tif t == FSI {\n\t\t\t\tisRTL = (p.determineParagraphEmbeddingLevel(i+1, p.matchingPDI[i]) == 1)\n\t\t\t}\n\t\t\tif isIsolate {\n\t\t\t\tp.resultLevels[i] = stack.lastEmbeddingLevel()\n\t\t\t\tif stack.lastDirectionalOverrideStatus() != ON {\n\t\t\t\t\tp.resultTypes[i] = stack.lastDirectionalOverrideStatus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar newLevel level\n\t\t\tif isRTL {\n\t\t\t\t// least greater odd\n\t\t\t\tnewLevel = (stack.lastEmbeddingLevel() + 1) | 1\n\t\t\t} else {\n\t\t\t\t// least greater even\n\t\t\t\tnewLevel = (stack.lastEmbeddingLevel() + 2) &^ 1\n\t\t\t}\n\n\t\t\tif newLevel <= maxDepth && overflowIsolateCount == 0 && overflowEmbeddingCount == 0 {\n\t\t\t\tif isIsolate {\n\t\t\t\t\tvalidIsolateCount++\n\t\t\t\t}\n\t\t\t\t// Push new embedding level, override status, and isolated\n\t\t\t\t// status.\n\t\t\t\t// No check for valid stack counter, since the level check\n\t\t\t\t// suffices.\n\t\t\t\tswitch t {\n\t\t\t\tcase LRO:\n\t\t\t\t\tstack.push(newLevel, L, isIsolate)\n\t\t\t\tcase RLO:\n\t\t\t\t\tstack.push(newLevel, R, isIsolate)\n\t\t\t\tdefault:\n\t\t\t\t\tstack.push(newLevel, ON, isIsolate)\n\t\t\t\t}\n\t\t\t\t// Not really part of the spec\n\t\t\t\tif !isIsolate {\n\t\t\t\t\tp.resultLevels[i] = newLevel\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// This is an invalid explicit formatting character,\n\t\t\t\t// so apply the \"Otherwise\" part of rules X2-X5b.\n\t\t\t\tif isIsolate {\n\t\t\t\t\toverflowIsolateCount++\n\t\t\t\t} else { // !isIsolate\n\t\t\t\t\tif overflowIsolateCount == 0 {\n\t\t\t\t\t\toverflowEmbeddingCount++\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Rule X6a\n\t\tcase PDI:\n\t\t\tif overflowIsolateCount > 0 {\n\t\t\t\toverflowIsolateCount--\n\t\t\t} else if validIsolateCount == 0 {\n\t\t\t\t// do nothing\n\t\t\t} else {\n\t\t\t\toverflowEmbeddingCount = 0\n\t\t\t\tfor !stack.lastDirectionalIsolateStatus() {\n\t\t\t\t\tstack.pop()\n\t\t\t\t}\n\t\t\t\tstack.pop()\n\t\t\t\tvalidIsolateCount--\n\t\t\t}\n\t\t\tp.resultLevels[i] = stack.lastEmbeddingLevel()\n\n\t\t// Rule X7\n\t\tcase PDF:\n\t\t\t// Not really part of the spec\n\t\t\tp.resultLevels[i] = stack.lastEmbeddingLevel()\n\n\t\t\tif overflowIsolateCount > 0 {\n\t\t\t\t// do nothing\n\t\t\t} else if overflowEmbeddingCount > 0 {\n\t\t\t\toverflowEmbeddingCount--\n\t\t\t} else if !stack.lastDirectionalIsolateStatus() && stack.depth() >= 2 {\n\t\t\t\tstack.pop()\n\t\t\t}\n\n\t\tcase B: // paragraph separator.\n\t\t\t// Rule X8.\n\n\t\t\t// These values are reset for clarity, in this implementation B\n\t\t\t// can only occur as the last code in the array.\n\t\t\tstack.empty()\n\t\t\toverflowIsolateCount = 0\n\t\t\toverflowEmbeddingCount = 0\n\t\t\tvalidIsolateCount = 0\n\t\t\tp.resultLevels[i] = p.embeddingLevel\n\n\t\tdefault:\n\t\t\tp.resultLevels[i] = stack.lastEmbeddingLevel()\n\t\t\tif stack.lastDirectionalOverrideStatus() != ON {\n\t\t\t\tp.resultTypes[i] = stack.lastDirectionalOverrideStatus()\n\t\t\t}\n\t\t}\n\t}\n}\n\ntype isolatingRunSequence struct {\n\tp *paragraph\n\n\tindexes []int // indexes to the original string\n\n\ttypes          []Class // type of each character using the index\n\tresolvedLevels []level // resolved levels after application of rules\n\tlevel          level\n\tsos, eos       Class\n}\n\nfunc (i *isolatingRunSequence) Len() int { return len(i.indexes) }\n\nfunc maxLevel(a, b level) level {\n\tif a > b {\n\t\treturn a\n\t}\n\treturn b\n}\n\n// Rule X10, second bullet: Determine the start-of-sequence (sos) and end-of-sequence (eos) types,\n// either L or R, for each isolating run sequence.\nfunc (p *paragraph) isolatingRunSequence(indexes []int) *isolatingRunSequence {\n\tlength := len(indexes)\n\ttypes := make([]Class, length)\n\tfor i, x := range indexes {\n\t\ttypes[i] = p.resultTypes[x]\n\t}\n\n\t// assign level, sos and eos\n\tprevChar := indexes[0] - 1\n\tfor prevChar >= 0 && isRemovedByX9(p.initialTypes[prevChar]) {\n\t\tprevChar--\n\t}\n\tprevLevel := p.embeddingLevel\n\tif prevChar >= 0 {\n\t\tprevLevel = p.resultLevels[prevChar]\n\t}\n\n\tvar succLevel level\n\tlastType := types[length-1]\n\tif lastType.in(LRI, RLI, FSI) {\n\t\tsuccLevel = p.embeddingLevel\n\t} else {\n\t\t// the first character after the end of run sequence\n\t\tlimit := indexes[length-1] + 1\n\t\tfor ; limit < p.Len() && isRemovedByX9(p.initialTypes[limit]); limit++ {\n\n\t\t}\n\t\tsuccLevel = p.embeddingLevel\n\t\tif limit < p.Len() {\n\t\t\tsuccLevel = p.resultLevels[limit]\n\t\t}\n\t}\n\tlevel := p.resultLevels[indexes[0]]\n\treturn &isolatingRunSequence{\n\t\tp:       p,\n\t\tindexes: indexes,\n\t\ttypes:   types,\n\t\tlevel:   level,\n\t\tsos:     typeForLevel(maxLevel(prevLevel, level)),\n\t\teos:     typeForLevel(maxLevel(succLevel, level)),\n\t}\n}\n\n// Resolving weak types Rules W1-W7.\n//\n// Note that some weak types (EN, AN) remain after this processing is\n// complete.\nfunc (s *isolatingRunSequence) resolveWeakTypes() {\n\n\t// on entry, only these types remain\n\ts.assertOnly(L, R, AL, EN, ES, ET, AN, CS, B, S, WS, ON, NSM, LRI, RLI, FSI, PDI)\n\n\t// Rule W1.\n\t// Changes all NSMs.\n\tprecedingCharacterType := s.sos\n\tfor i, t := range s.types {\n\t\tif t == NSM {\n\t\t\ts.types[i] = precedingCharacterType\n\t\t} else {\n\t\t\t// if t.in(LRI, RLI, FSI, PDI) {\n\t\t\t// \tprecedingCharacterType = ON\n\t\t\t// }\n\t\t\tprecedingCharacterType = t\n\t\t}\n\t}\n\n\t// Rule W2.\n\t// EN does not change at the start of the run, because sos != AL.\n\tfor i, t := range s.types {\n\t\tif t == EN {\n\t\t\tfor j := i - 1; j >= 0; j-- {\n\t\t\t\tif t := s.types[j]; t.in(L, R, AL) {\n\t\t\t\t\tif t == AL {\n\t\t\t\t\t\ts.types[i] = AN\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Rule W3.\n\tfor i, t := range s.types {\n\t\tif t == AL {\n\t\t\ts.types[i] = R\n\t\t}\n\t}\n\n\t// Rule W4.\n\t// Since there must be values on both sides for this rule to have an\n\t// effect, the scan skips the first and last value.\n\t//\n\t// Although the scan proceeds left to right, and changes the type\n\t// values in a way that would appear to affect the computations\n\t// later in the scan, there is actually no problem. A change in the\n\t// current value can only affect the value to its immediate right,\n\t// and only affect it if it is ES or CS. But the current value can\n\t// only change if the value to its right is not ES or CS. Thus\n\t// either the current value will not change, or its change will have\n\t// no effect on the remainder of the analysis.\n\n\tfor i := 1; i < s.Len()-1; i++ {\n\t\tt := s.types[i]\n\t\tif t == ES || t == CS {\n\t\t\tprevSepType := s.types[i-1]\n\t\t\tsuccSepType := s.types[i+1]\n\t\t\tif prevSepType == EN && succSepType == EN {\n\t\t\t\ts.types[i] = EN\n\t\t\t} else if s.types[i] == CS && prevSepType == AN && succSepType == AN {\n\t\t\t\ts.types[i] = AN\n\t\t\t}\n\t\t}\n\t}\n\n\t// Rule W5.\n\tfor i, t := range s.types {\n\t\tif t == ET {\n\t\t\t// locate end of sequence\n\t\t\trunStart := i\n\t\t\trunEnd := s.findRunLimit(runStart, ET)\n\n\t\t\t// check values at ends of sequence\n\t\t\tt := s.sos\n\t\t\tif runStart > 0 {\n\t\t\t\tt = s.types[runStart-1]\n\t\t\t}\n\t\t\tif t != EN {\n\t\t\t\tt = s.eos\n\t\t\t\tif runEnd < len(s.types) {\n\t\t\t\t\tt = s.types[runEnd]\n\t\t\t\t}\n\t\t\t}\n\t\t\tif t == EN {\n\t\t\t\tsetTypes(s.types[runStart:runEnd], EN)\n\t\t\t}\n\t\t\t// continue at end of sequence\n\t\t\ti = runEnd\n\t\t}\n\t}\n\n\t// Rule W6.\n\tfor i, t := range s.types {\n\t\tif t.in(ES, ET, CS) {\n\t\t\ts.types[i] = ON\n\t\t}\n\t}\n\n\t// Rule W7.\n\tfor i, t := range s.types {\n\t\tif t == EN {\n\t\t\t// set default if we reach start of run\n\t\t\tprevStrongType := s.sos\n\t\t\tfor j := i - 1; j >= 0; j-- {\n\t\t\t\tt = s.types[j]\n\t\t\t\tif t == L || t == R { // AL's have been changed to R\n\t\t\t\t\tprevStrongType = t\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif prevStrongType == L {\n\t\t\t\ts.types[i] = L\n\t\t\t}\n\t\t}\n\t}\n}\n\n// 6) resolving neutral types Rules N1-N2.\nfunc (s *isolatingRunSequence) resolveNeutralTypes() {\n\n\t// on entry, only these types can be in resultTypes\n\ts.assertOnly(L, R, EN, AN, B, S, WS, ON, RLI, LRI, FSI, PDI)\n\n\tfor i, t := range s.types {\n\t\tswitch t {\n\t\tcase WS, ON, B, S, RLI, LRI, FSI, PDI:\n\t\t\t// find bounds of run of neutrals\n\t\t\trunStart := i\n\t\t\trunEnd := s.findRunLimit(runStart, B, S, WS, ON, RLI, LRI, FSI, PDI)\n\n\t\t\t// determine effective types at ends of run\n\t\t\tvar leadType, trailType Class\n\n\t\t\t// Note that the character found can only be L, R, AN, or\n\t\t\t// EN.\n\t\t\tif runStart == 0 {\n\t\t\t\tleadType = s.sos\n\t\t\t} else {\n\t\t\t\tleadType = s.types[runStart-1]\n\t\t\t\tif leadType.in(AN, EN) {\n\t\t\t\t\tleadType = R\n\t\t\t\t}\n\t\t\t}\n\t\t\tif runEnd == len(s.types) {\n\t\t\t\ttrailType = s.eos\n\t\t\t} else {\n\t\t\t\ttrailType = s.types[runEnd]\n\t\t\t\tif trailType.in(AN, EN) {\n\t\t\t\t\ttrailType = R\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar resolvedType Class\n\t\t\tif leadType == trailType {\n\t\t\t\t// Rule N1.\n\t\t\t\tresolvedType = leadType\n\t\t\t} else {\n\t\t\t\t// Rule N2.\n\t\t\t\t// Notice the embedding level of the run is used, not\n\t\t\t\t// the paragraph embedding level.\n\t\t\t\tresolvedType = typeForLevel(s.level)\n\t\t\t}\n\n\t\t\tsetTypes(s.types[runStart:runEnd], resolvedType)\n\n\t\t\t// skip over run of (former) neutrals\n\t\t\ti = runEnd\n\t\t}\n\t}\n}\n\nfunc setLevels(levels []level, newLevel level) {\n\tfor i := range levels {\n\t\tlevels[i] = newLevel\n\t}\n}\n\nfunc setTypes(types []Class, newType Class) {\n\tfor i := range types {\n\t\ttypes[i] = newType\n\t}\n}\n\n// 7) resolving implicit embedding levels Rules I1, I2.\nfunc (s *isolatingRunSequence) resolveImplicitLevels() {\n\n\t// on entry, only these types can be in resultTypes\n\ts.assertOnly(L, R, EN, AN)\n\n\ts.resolvedLevels = make([]level, len(s.types))\n\tsetLevels(s.resolvedLevels, s.level)\n\n\tif (s.level & 1) == 0 { // even level\n\t\tfor i, t := range s.types {\n\t\t\t// Rule I1.\n\t\t\tif t == L {\n\t\t\t\t// no change\n\t\t\t} else if t == R {\n\t\t\t\ts.resolvedLevels[i] += 1\n\t\t\t} else { // t == AN || t == EN\n\t\t\t\ts.resolvedLevels[i] += 2\n\t\t\t}\n\t\t}\n\t} else { // odd level\n\t\tfor i, t := range s.types {\n\t\t\t// Rule I2.\n\t\t\tif t == R {\n\t\t\t\t// no change\n\t\t\t} else { // t == L || t == AN || t == EN\n\t\t\t\ts.resolvedLevels[i] += 1\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Applies the levels and types resolved in rules W1-I2 to the\n// resultLevels array.\nfunc (s *isolatingRunSequence) applyLevelsAndTypes() {\n\tfor i, x := range s.indexes {\n\t\ts.p.resultTypes[x] = s.types[i]\n\t\ts.p.resultLevels[x] = s.resolvedLevels[i]\n\t}\n}\n\n// Return the limit of the run consisting only of the types in validSet\n// starting at index. This checks the value at index, and will return\n// index if that value is not in validSet.\nfunc (s *isolatingRunSequence) findRunLimit(index int, validSet ...Class) int {\nloop:\n\tfor ; index < len(s.types); index++ {\n\t\tt := s.types[index]\n\t\tfor _, valid := range validSet {\n\t\t\tif t == valid {\n\t\t\t\tcontinue loop\n\t\t\t}\n\t\t}\n\t\treturn index // didn't find a match in validSet\n\t}\n\treturn len(s.types)\n}\n\n// Algorithm validation. Assert that all values in types are in the\n// provided set.\nfunc (s *isolatingRunSequence) assertOnly(codes ...Class) {\nloop:\n\tfor i, t := range s.types {\n\t\tfor _, c := range codes {\n\t\t\tif t == c {\n\t\t\t\tcontinue loop\n\t\t\t}\n\t\t}\n\t\tlog.Panicf(\"invalid bidi code %v present in assertOnly at position %d\", t, s.indexes[i])\n\t}\n}\n\n// determineLevelRuns returns an array of level runs. Each level run is\n// described as an array of indexes into the input string.\n//\n// Determines the level runs. Rule X9 will be applied in determining the\n// runs, in the way that makes sure the characters that are supposed to be\n// removed are not included in the runs.\nfunc (p *paragraph) determineLevelRuns() [][]int {\n\trun := []int{}\n\tallRuns := [][]int{}\n\tcurrentLevel := implicitLevel\n\n\tfor i := range p.initialTypes {\n\t\tif !isRemovedByX9(p.initialTypes[i]) {\n\t\t\tif p.resultLevels[i] != currentLevel {\n\t\t\t\t// we just encountered a new run; wrap up last run\n\t\t\t\tif currentLevel >= 0 { // only wrap it up if there was a run\n\t\t\t\t\tallRuns = append(allRuns, run)\n\t\t\t\t\trun = nil\n\t\t\t\t}\n\t\t\t\t// Start new run\n\t\t\t\tcurrentLevel = p.resultLevels[i]\n\t\t\t}\n\t\t\trun = append(run, i)\n\t\t}\n\t}\n\t// Wrap up the final run, if any\n\tif len(run) > 0 {\n\t\tallRuns = append(allRuns, run)\n\t}\n\treturn allRuns\n}\n\n// Definition BD13. Determine isolating run sequences.\nfunc (p *paragraph) determineIsolatingRunSequences() []*isolatingRunSequence {\n\tlevelRuns := p.determineLevelRuns()\n\n\t// Compute the run that each character belongs to\n\trunForCharacter := make([]int, p.Len())\n\tfor i, run := range levelRuns {\n\t\tfor _, index := range run {\n\t\t\trunForCharacter[index] = i\n\t\t}\n\t}\n\n\tsequences := []*isolatingRunSequence{}\n\n\tvar currentRunSequence []int\n\n\tfor _, run := range levelRuns {\n\t\tfirst := run[0]\n\t\tif p.initialTypes[first] != PDI || p.matchingIsolateInitiator[first] == -1 {\n\t\t\tcurrentRunSequence = nil\n\t\t\t// int run = i;\n\t\t\tfor {\n\t\t\t\t// Copy this level run into currentRunSequence\n\t\t\t\tcurrentRunSequence = append(currentRunSequence, run...)\n\n\t\t\t\tlast := currentRunSequence[len(currentRunSequence)-1]\n\t\t\t\tlastT := p.initialTypes[last]\n\t\t\t\tif lastT.in(LRI, RLI, FSI) && p.matchingPDI[last] != p.Len() {\n\t\t\t\t\trun = levelRuns[runForCharacter[p.matchingPDI[last]]]\n\t\t\t\t} else {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tsequences = append(sequences, p.isolatingRunSequence(currentRunSequence))\n\t\t}\n\t}\n\treturn sequences\n}\n\n// Assign level information to characters removed by rule X9. This is for\n// ease of relating the level information to the original input data. Note\n// that the levels assigned to these codes are arbitrary, they're chosen so\n// as to avoid breaking level runs.\nfunc (p *paragraph) assignLevelsToCharactersRemovedByX9() {\n\tfor i, t := range p.initialTypes {\n\t\tif t.in(LRE, RLE, LRO, RLO, PDF, BN) {\n\t\t\tp.resultTypes[i] = t\n\t\t\tp.resultLevels[i] = -1\n\t\t}\n\t}\n\t// now propagate forward the levels information (could have\n\t// propagated backward, the main thing is not to introduce a level\n\t// break where one doesn't already exist).\n\n\tif p.resultLevels[0] == -1 {\n\t\tp.resultLevels[0] = p.embeddingLevel\n\t}\n\tfor i := 1; i < len(p.initialTypes); i++ {\n\t\tif p.resultLevels[i] == -1 {\n\t\t\tp.resultLevels[i] = p.resultLevels[i-1]\n\t\t}\n\t}\n\t// Embedding information is for informational purposes only so need not be\n\t// adjusted.\n}\n\n//\n// Output\n//\n\n// getLevels computes levels array breaking lines at offsets in linebreaks.\n// Rule L1.\n//\n// The linebreaks array must include at least one value. The values must be\n// in strictly increasing order (no duplicates) between 1 and the length of\n// the text, inclusive. The last value must be the length of the text.\nfunc (p *paragraph) getLevels(linebreaks []int) []level {\n\t// Note that since the previous processing has removed all\n\t// P, S, and WS values from resultTypes, the values referred to\n\t// in these rules are the initial types, before any processing\n\t// has been applied (including processing of overrides).\n\t//\n\t// This example implementation has reinserted explicit format codes\n\t// and BN, in order that the levels array correspond to the\n\t// initial text. Their final placement is not normative.\n\t// These codes are treated like WS in this implementation,\n\t// so they don't interrupt sequences of WS.\n\n\tvalidateLineBreaks(linebreaks, p.Len())\n\n\tresult := append([]level(nil), p.resultLevels...)\n\n\t// don't worry about linebreaks since if there is a break within\n\t// a series of WS values preceding S, the linebreak itself\n\t// causes the reset.\n\tfor i, t := range p.initialTypes {\n\t\tif t.in(B, S) {\n\t\t\t// Rule L1, clauses one and two.\n\t\t\tresult[i] = p.embeddingLevel\n\n\t\t\t// Rule L1, clause three.\n\t\t\tfor j := i - 1; j >= 0; j-- {\n\t\t\t\tif isWhitespace(p.initialTypes[j]) { // including format codes\n\t\t\t\t\tresult[j] = p.embeddingLevel\n\t\t\t\t} else {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Rule L1, clause four.\n\tstart := 0\n\tfor _, limit := range linebreaks {\n\t\tfor j := limit - 1; j >= start; j-- {\n\t\t\tif isWhitespace(p.initialTypes[j]) { // including format codes\n\t\t\t\tresult[j] = p.embeddingLevel\n\t\t\t} else {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tstart = limit\n\t}\n\n\treturn result\n}\n\n// getReordering returns the reordering of lines from a visual index to a\n// logical index for line breaks at the given offsets.\n//\n// Lines are concatenated from left to right. So for example, the fifth\n// character from the left on the third line is\n//\n//\tgetReordering(linebreaks)[linebreaks[1] + 4]\n//\n// (linebreaks[1] is the position after the last character of the second\n// line, which is also the index of the first character on the third line,\n// and adding four gets the fifth character from the left).\n//\n// The linebreaks array must include at least one value. The values must be\n// in strictly increasing order (no duplicates) between 1 and the length of\n// the text, inclusive. The last value must be the length of the text.\nfunc (p *paragraph) getReordering(linebreaks []int) []int {\n\tvalidateLineBreaks(linebreaks, p.Len())\n\n\treturn computeMultilineReordering(p.getLevels(linebreaks), linebreaks)\n}\n\n// Return multiline reordering array for a given level array. Reordering\n// does not occur across a line break.\nfunc computeMultilineReordering(levels []level, linebreaks []int) []int {\n\tresult := make([]int, len(levels))\n\n\tstart := 0\n\tfor _, limit := range linebreaks {\n\t\ttempLevels := make([]level, limit-start)\n\t\tcopy(tempLevels, levels[start:])\n\n\t\tfor j, order := range computeReordering(tempLevels) {\n\t\t\tresult[start+j] = order + start\n\t\t}\n\t\tstart = limit\n\t}\n\treturn result\n}\n\n// Return reordering array for a given level array. This reorders a single\n// line. The reordering is a visual to logical map. For example, the\n// leftmost char is string.charAt(order[0]). Rule L2.\nfunc computeReordering(levels []level) []int {\n\tresult := make([]int, len(levels))\n\t// initialize order\n\tfor i := range result {\n\t\tresult[i] = i\n\t}\n\n\t// locate highest level found on line.\n\t// Note the rules say text, but no reordering across line bounds is\n\t// performed, so this is sufficient.\n\thighestLevel := level(0)\n\tlowestOddLevel := level(maxDepth + 2)\n\tfor _, level := range levels {\n\t\tif level > highestLevel {\n\t\t\thighestLevel = level\n\t\t}\n\t\tif level&1 != 0 && level < lowestOddLevel {\n\t\t\tlowestOddLevel = level\n\t\t}\n\t}\n\n\tfor level := highestLevel; level >= lowestOddLevel; level-- {\n\t\tfor i := 0; i < len(levels); i++ {\n\t\t\tif levels[i] >= level {\n\t\t\t\t// find range of text at or above this level\n\t\t\t\tstart := i\n\t\t\t\tlimit := i + 1\n\t\t\t\tfor limit < len(levels) && levels[limit] >= level {\n\t\t\t\t\tlimit++\n\t\t\t\t}\n\n\t\t\t\tfor j, k := start, limit-1; j < k; j, k = j+1, k-1 {\n\t\t\t\t\tresult[j], result[k] = result[k], result[j]\n\t\t\t\t}\n\t\t\t\t// skip to end of level run\n\t\t\t\ti = limit\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result\n}\n\n// isWhitespace reports whether the type is considered a whitespace type for the\n// line break rules.\nfunc isWhitespace(c Class) bool {\n\tswitch c {\n\tcase LRE, RLE, LRO, RLO, PDF, LRI, RLI, FSI, PDI, BN, WS:\n\t\treturn true\n\t}\n\treturn false\n}\n\n// isRemovedByX9 reports whether the type is one of the types removed in X9.\nfunc isRemovedByX9(c Class) bool {\n\tswitch c {\n\tcase LRE, RLE, LRO, RLO, PDF, BN:\n\t\treturn true\n\t}\n\treturn false\n}\n\n// typeForLevel reports the strong type (L or R) corresponding to the level.\nfunc typeForLevel(level level) Class {\n\tif (level & 0x1) == 0 {\n\t\treturn L\n\t}\n\treturn R\n}\n\nfunc validateTypes(types []Class) error {\n\tif len(types) == 0 {\n\t\treturn fmt.Errorf(\"types is null\")\n\t}\n\tfor i, t := range types[:len(types)-1] {\n\t\tif t == B {\n\t\t\treturn fmt.Errorf(\"B type before end of paragraph at index: %d\", i)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validateParagraphEmbeddingLevel(embeddingLevel level) error {\n\tif embeddingLevel != implicitLevel &&\n\t\tembeddingLevel != 0 &&\n\t\tembeddingLevel != 1 {\n\t\treturn fmt.Errorf(\"illegal paragraph embedding level: %d\", embeddingLevel)\n\t}\n\treturn nil\n}\n\nfunc validateLineBreaks(linebreaks []int, textLength int) error {\n\tprev := 0\n\tfor i, next := range linebreaks {\n\t\tif next <= prev {\n\t\t\treturn fmt.Errorf(\"bad linebreak: %d at index: %d\", next, i)\n\t\t}\n\t\tprev = next\n\t}\n\tif prev != textLength {\n\t\treturn fmt.Errorf(\"last linebreak was %d, want %d\", prev, textLength)\n\t}\n\treturn nil\n}\n\nfunc validatePbTypes(pairTypes []bracketType) error {\n\tif len(pairTypes) == 0 {\n\t\treturn fmt.Errorf(\"pairTypes is null\")\n\t}\n\tfor i, pt := range pairTypes {\n\t\tswitch pt {\n\t\tcase bpNone, bpOpen, bpClose:\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"illegal pairType value at %d: %v\", i, pairTypes[i])\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validatePbValues(pairValues []rune, pairTypes []bracketType) error {\n\tif pairValues == nil {\n\t\treturn fmt.Errorf(\"pairValues is null\")\n\t}\n\tif len(pairTypes) != len(pairValues) {\n\t\treturn fmt.Errorf(\"pairTypes is different length from pairValues\")\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/prop.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage bidi\n\nimport \"unicode/utf8\"\n\n// Properties provides access to BiDi properties of runes.\ntype Properties struct {\n\tentry uint8\n\tlast  uint8\n}\n\nvar trie = newBidiTrie(0)\n\n// TODO: using this for bidirule reduces the running time by about 5%. Consider\n// if this is worth exposing or if we can find a way to speed up the Class\n// method.\n//\n// // CompactClass is like Class, but maps all of the BiDi control classes\n// // (LRO, RLO, LRE, RLE, PDF, LRI, RLI, FSI, PDI) to the class Control.\n// func (p Properties) CompactClass() Class {\n// \treturn Class(p.entry & 0x0F)\n// }\n\n// Class returns the Bidi class for p.\nfunc (p Properties) Class() Class {\n\tc := Class(p.entry & 0x0F)\n\tif c == Control {\n\t\tc = controlByteToClass[p.last&0xF]\n\t}\n\treturn c\n}\n\n// IsBracket reports whether the rune is a bracket.\nfunc (p Properties) IsBracket() bool { return p.entry&0xF0 != 0 }\n\n// IsOpeningBracket reports whether the rune is an opening bracket.\n// IsBracket must return true.\nfunc (p Properties) IsOpeningBracket() bool { return p.entry&openMask != 0 }\n\n// TODO: find a better API and expose.\nfunc (p Properties) reverseBracket(r rune) rune {\n\treturn xorMasks[p.entry>>xorMaskShift] ^ r\n}\n\nvar controlByteToClass = [16]Class{\n\t0xD: LRO, // U+202D LeftToRightOverride,\n\t0xE: RLO, // U+202E RightToLeftOverride,\n\t0xA: LRE, // U+202A LeftToRightEmbedding,\n\t0xB: RLE, // U+202B RightToLeftEmbedding,\n\t0xC: PDF, // U+202C PopDirectionalFormat,\n\t0x6: LRI, // U+2066 LeftToRightIsolate,\n\t0x7: RLI, // U+2067 RightToLeftIsolate,\n\t0x8: FSI, // U+2068 FirstStrongIsolate,\n\t0x9: PDI, // U+2069 PopDirectionalIsolate,\n}\n\n// LookupRune returns properties for r.\nfunc LookupRune(r rune) (p Properties, size int) {\n\tvar buf [4]byte\n\tn := utf8.EncodeRune(buf[:], r)\n\treturn Lookup(buf[:n])\n}\n\n// TODO: these lookup methods are based on the generated trie code. The returned\n// sizes have slightly different semantics from the generated code, in that it\n// always returns size==1 for an illegal UTF-8 byte (instead of the length\n// of the maximum invalid subsequence). Most Transformers, like unicode/norm,\n// leave invalid UTF-8 untouched, in which case it has performance benefits to\n// do so (without changing the semantics). Bidi requires the semantics used here\n// for the bidirule implementation to be compatible with the Go semantics.\n//  They ultimately should perhaps be adopted by all trie implementations, for\n// convenience sake.\n// This unrolled code also boosts performance of the secure/bidirule package by\n// about 30%.\n// So, to remove this code:\n//   - add option to trie generator to define return type.\n//   - always return 1 byte size for ill-formed UTF-8 runes.\n\n// Lookup returns properties for the first rune in s and the width in bytes of\n// its encoding. The size will be 0 if s does not hold enough bytes to complete\n// the encoding.\nfunc Lookup(s []byte) (p Properties, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn Properties{entry: bidiValues[c0]}, 1\n\tcase c0 < 0xC2:\n\t\treturn Properties{}, 1\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c1)}, 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c2), last: c2}, 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c3)}, 4\n\t}\n\t// Illegal rune\n\treturn Properties{}, 1\n}\n\n// LookupString returns properties for the first rune in s and the width in\n// bytes of its encoding. The size will be 0 if s does not hold enough bytes to\n// complete the encoding.\nfunc LookupString(s string) (p Properties, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn Properties{entry: bidiValues[c0]}, 1\n\tcase c0 < 0xC2:\n\t\treturn Properties{}, 1\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c1)}, 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c2), last: c2}, 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn Properties{}, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn Properties{}, 1\n\t\t}\n\t\treturn Properties{entry: trie.lookupValue(uint32(i), c3)}, 4\n\t}\n\t// Illegal rune\n\treturn Properties{}, 1\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.10 && !go1.13\n\npackage bidi\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"10.0.0\"\n\n// xorMasks contains masks to be xor-ed with brackets to get the reverse\n// version.\nvar xorMasks = []int32{ // 8 elements\n\t0, 1, 6, 7, 3, 15, 29, 63,\n} // Size: 56 bytes\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookup(s []byte) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupUnsafe(s []byte) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookupString(s string) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupStringUnsafe(s string) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// bidiTrie. Total size: 16128 bytes (15.75 KiB). Checksum: 8122d83e461996f.\ntype bidiTrie struct{}\n\nfunc newBidiTrie(i int) *bidiTrie {\n\treturn &bidiTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *bidiTrie) lookupValue(n uint32, b byte) uint8 {\n\tswitch {\n\tdefault:\n\t\treturn uint8(bidiValues[n<<6+uint32(b)])\n\t}\n}\n\n// bidiValues: 228 blocks, 14592 entries, 14592 bytes\n// The third block is the zero block.\nvar bidiValues = [14592]uint8{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b,\n\t0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008,\n\t0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b,\n\t0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b,\n\t0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007,\n\t0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004,\n\t0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a,\n\t0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006,\n\t0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002,\n\t0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a,\n\t0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x000a,\n\t0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a,\n\t0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a,\n\t0x7b: 0x005a,\n\t0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007,\n\t0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b,\n\t0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b,\n\t0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b,\n\t0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b,\n\t0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004,\n\t0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a,\n\t0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a,\n\t0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a,\n\t0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a,\n\t0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a,\n\t// Block 0x4, offset 0x100\n\t0x117: 0x000a,\n\t0x137: 0x000a,\n\t// Block 0x5, offset 0x140\n\t0x179: 0x000a, 0x17a: 0x000a,\n\t// Block 0x6, offset 0x180\n\t0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a,\n\t0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a,\n\t0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a,\n\t0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a,\n\t0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a,\n\t0x19e: 0x000a, 0x19f: 0x000a,\n\t0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a,\n\t0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a,\n\t0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a,\n\t0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a,\n\t0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c,\n\t0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c,\n\t0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c,\n\t0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c,\n\t0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c,\n\t0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c,\n\t0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c,\n\t0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c,\n\t0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c,\n\t0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c,\n\t0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c,\n\t0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c,\n\t0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c,\n\t0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c,\n\t0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c,\n\t0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c,\n\t0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c,\n\t0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c,\n\t0x234: 0x000a, 0x235: 0x000a,\n\t0x23e: 0x000a,\n\t// Block 0x9, offset 0x240\n\t0x244: 0x000a, 0x245: 0x000a,\n\t0x247: 0x000a,\n\t// Block 0xa, offset 0x280\n\t0x2b6: 0x000a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c,\n\t0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c,\n\t// Block 0xc, offset 0x300\n\t0x30a: 0x000a,\n\t0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c,\n\t0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c,\n\t0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c,\n\t0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c,\n\t0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c,\n\t0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c,\n\t0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c,\n\t0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c,\n\t0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c,\n\t0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001,\n\t0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001,\n\t0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001,\n\t0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001,\n\t0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001,\n\t0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001,\n\t0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001,\n\t0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001,\n\t0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001,\n\t0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001,\n\t// Block 0xe, offset 0x380\n\t0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005,\n\t0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d,\n\t0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c,\n\t0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c,\n\t0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d,\n\t0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d,\n\t0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d,\n\t0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d,\n\t0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d,\n\t0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d,\n\t0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d,\n\t0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c,\n\t0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c,\n\t0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c,\n\t0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c,\n\t0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005,\n\t0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005,\n\t0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d,\n\t0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d,\n\t0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d,\n\t0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d,\n\t0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d,\n\t0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d,\n\t0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d,\n\t0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d,\n\t0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d,\n\t0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d,\n\t0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d,\n\t0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d,\n\t0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d,\n\t0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d,\n\t0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d,\n\t0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d,\n\t0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c,\n\t0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005,\n\t0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c,\n\t0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a,\n\t0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d,\n\t0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002,\n\t0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d,\n\t0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d,\n\t0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d,\n\t0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c,\n\t0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d,\n\t0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d,\n\t0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d,\n\t0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d,\n\t0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d,\n\t0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c,\n\t0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c,\n\t0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c,\n\t0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d,\n\t0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d,\n\t0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d,\n\t0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d,\n\t0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d,\n\t0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d,\n\t0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d,\n\t0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d,\n\t0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d,\n\t0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d,\n\t0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d,\n\t0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d,\n\t0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d,\n\t0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d,\n\t0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d,\n\t0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c,\n\t0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c,\n\t0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d,\n\t0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d,\n\t0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001,\n\t0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001,\n\t0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001,\n\t0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001,\n\t0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001,\n\t0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001,\n\t0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001,\n\t0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c,\n\t0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001,\n\t0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001,\n\t0x57c: 0x0001, 0x57d: 0x0001, 0x57e: 0x0001, 0x57f: 0x0001,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001,\n\t0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001,\n\t0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001,\n\t0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c,\n\t0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c,\n\t0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c,\n\t0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c,\n\t0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001,\n\t0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001,\n\t0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001,\n\t0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001,\n\t0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001,\n\t0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001,\n\t0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001,\n\t0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001,\n\t0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x000d, 0x5e1: 0x000d, 0x5e2: 0x000d, 0x5e3: 0x000d,\n\t0x5e4: 0x000d, 0x5e5: 0x000d, 0x5e6: 0x000d, 0x5e7: 0x000d, 0x5e8: 0x000d, 0x5e9: 0x000d,\n\t0x5ea: 0x000d, 0x5eb: 0x000d, 0x5ec: 0x000d, 0x5ed: 0x000d, 0x5ee: 0x000d, 0x5ef: 0x000d,\n\t0x5f0: 0x0001, 0x5f1: 0x0001, 0x5f2: 0x0001, 0x5f3: 0x0001, 0x5f4: 0x0001, 0x5f5: 0x0001,\n\t0x5f6: 0x0001, 0x5f7: 0x0001, 0x5f8: 0x0001, 0x5f9: 0x0001, 0x5fa: 0x0001, 0x5fb: 0x0001,\n\t0x5fc: 0x0001, 0x5fd: 0x0001, 0x5fe: 0x0001, 0x5ff: 0x0001,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x0001, 0x601: 0x0001, 0x602: 0x0001, 0x603: 0x0001, 0x604: 0x0001, 0x605: 0x0001,\n\t0x606: 0x0001, 0x607: 0x0001, 0x608: 0x0001, 0x609: 0x0001, 0x60a: 0x0001, 0x60b: 0x0001,\n\t0x60c: 0x0001, 0x60d: 0x0001, 0x60e: 0x0001, 0x60f: 0x0001, 0x610: 0x0001, 0x611: 0x0001,\n\t0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001,\n\t0x618: 0x0001, 0x619: 0x0001, 0x61a: 0x0001, 0x61b: 0x0001, 0x61c: 0x0001, 0x61d: 0x0001,\n\t0x61e: 0x0001, 0x61f: 0x0001, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d,\n\t0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d,\n\t0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d,\n\t0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d,\n\t0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d,\n\t0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d,\n\t0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000d, 0x64b: 0x000d,\n\t0x64c: 0x000d, 0x64d: 0x000d, 0x64e: 0x000d, 0x64f: 0x000d, 0x650: 0x000d, 0x651: 0x000d,\n\t0x652: 0x000d, 0x653: 0x000d, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c,\n\t0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c,\n\t0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c,\n\t0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c,\n\t0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c,\n\t0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c,\n\t0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c,\n\t0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c,\n\t0x6ba: 0x000c,\n\t0x6bc: 0x000c,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c,\n\t0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c,\n\t0x6cd: 0x000c, 0x6d1: 0x000c,\n\t0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c,\n\t0x6e2: 0x000c, 0x6e3: 0x000c,\n\t// Block 0x1c, offset 0x700\n\t0x701: 0x000c,\n\t0x73c: 0x000c,\n\t// Block 0x1d, offset 0x740\n\t0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c,\n\t0x74d: 0x000c,\n\t0x762: 0x000c, 0x763: 0x000c,\n\t0x772: 0x0004, 0x773: 0x0004,\n\t0x77b: 0x0004,\n\t// Block 0x1e, offset 0x780\n\t0x781: 0x000c, 0x782: 0x000c,\n\t0x7bc: 0x000c,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x000c, 0x7c2: 0x000c,\n\t0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c,\n\t0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c,\n\t0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c,\n\t// Block 0x20, offset 0x800\n\t0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c,\n\t0x807: 0x000c, 0x808: 0x000c,\n\t0x80d: 0x000c,\n\t0x822: 0x000c, 0x823: 0x000c,\n\t0x831: 0x0004,\n\t0x83a: 0x000c, 0x83b: 0x000c,\n\t0x83c: 0x000c, 0x83d: 0x000c, 0x83e: 0x000c, 0x83f: 0x000c,\n\t// Block 0x21, offset 0x840\n\t0x841: 0x000c,\n\t0x87c: 0x000c, 0x87f: 0x000c,\n\t// Block 0x22, offset 0x880\n\t0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c,\n\t0x88d: 0x000c,\n\t0x896: 0x000c,\n\t0x8a2: 0x000c, 0x8a3: 0x000c,\n\t// Block 0x23, offset 0x8c0\n\t0x8c2: 0x000c,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x000c,\n\t0x90d: 0x000c,\n\t0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a,\n\t0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x000c,\n\t0x97e: 0x000c, 0x97f: 0x000c,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x000c,\n\t0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c,\n\t0x98c: 0x000c, 0x98d: 0x000c,\n\t0x995: 0x000c, 0x996: 0x000c,\n\t0x9a2: 0x000c, 0x9a3: 0x000c,\n\t0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a,\n\t0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a,\n\t// Block 0x27, offset 0x9c0\n\t0x9cc: 0x000c, 0x9cd: 0x000c,\n\t0x9e2: 0x000c, 0x9e3: 0x000c,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x000c, 0xa01: 0x000c,\n\t0xa3b: 0x000c,\n\t0xa3c: 0x000c,\n\t// Block 0x29, offset 0xa40\n\t0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c,\n\t0xa4d: 0x000c,\n\t0xa62: 0x000c, 0xa63: 0x000c,\n\t// Block 0x2a, offset 0xa80\n\t0xa8a: 0x000c,\n\t0xa92: 0x000c, 0xa93: 0x000c, 0xa94: 0x000c, 0xa96: 0x000c,\n\t// Block 0x2b, offset 0xac0\n\t0xaf1: 0x000c, 0xaf4: 0x000c, 0xaf5: 0x000c,\n\t0xaf6: 0x000c, 0xaf7: 0x000c, 0xaf8: 0x000c, 0xaf9: 0x000c, 0xafa: 0x000c,\n\t0xaff: 0x0004,\n\t// Block 0x2c, offset 0xb00\n\t0xb07: 0x000c, 0xb08: 0x000c, 0xb09: 0x000c, 0xb0a: 0x000c, 0xb0b: 0x000c,\n\t0xb0c: 0x000c, 0xb0d: 0x000c, 0xb0e: 0x000c,\n\t// Block 0x2d, offset 0xb40\n\t0xb71: 0x000c, 0xb74: 0x000c, 0xb75: 0x000c,\n\t0xb76: 0x000c, 0xb77: 0x000c, 0xb78: 0x000c, 0xb79: 0x000c, 0xb7b: 0x000c,\n\t0xb7c: 0x000c,\n\t// Block 0x2e, offset 0xb80\n\t0xb88: 0x000c, 0xb89: 0x000c, 0xb8a: 0x000c, 0xb8b: 0x000c,\n\t0xb8c: 0x000c, 0xb8d: 0x000c,\n\t// Block 0x2f, offset 0xbc0\n\t0xbd8: 0x000c, 0xbd9: 0x000c,\n\t0xbf5: 0x000c,\n\t0xbf7: 0x000c, 0xbf9: 0x000c, 0xbfa: 0x003a, 0xbfb: 0x002a,\n\t0xbfc: 0x003a, 0xbfd: 0x002a,\n\t// Block 0x30, offset 0xc00\n\t0xc31: 0x000c, 0xc32: 0x000c, 0xc33: 0x000c, 0xc34: 0x000c, 0xc35: 0x000c,\n\t0xc36: 0x000c, 0xc37: 0x000c, 0xc38: 0x000c, 0xc39: 0x000c, 0xc3a: 0x000c, 0xc3b: 0x000c,\n\t0xc3c: 0x000c, 0xc3d: 0x000c, 0xc3e: 0x000c,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x000c, 0xc41: 0x000c, 0xc42: 0x000c, 0xc43: 0x000c, 0xc44: 0x000c,\n\t0xc46: 0x000c, 0xc47: 0x000c,\n\t0xc4d: 0x000c, 0xc4e: 0x000c, 0xc4f: 0x000c, 0xc50: 0x000c, 0xc51: 0x000c,\n\t0xc52: 0x000c, 0xc53: 0x000c, 0xc54: 0x000c, 0xc55: 0x000c, 0xc56: 0x000c, 0xc57: 0x000c,\n\t0xc59: 0x000c, 0xc5a: 0x000c, 0xc5b: 0x000c, 0xc5c: 0x000c, 0xc5d: 0x000c,\n\t0xc5e: 0x000c, 0xc5f: 0x000c, 0xc60: 0x000c, 0xc61: 0x000c, 0xc62: 0x000c, 0xc63: 0x000c,\n\t0xc64: 0x000c, 0xc65: 0x000c, 0xc66: 0x000c, 0xc67: 0x000c, 0xc68: 0x000c, 0xc69: 0x000c,\n\t0xc6a: 0x000c, 0xc6b: 0x000c, 0xc6c: 0x000c, 0xc6d: 0x000c, 0xc6e: 0x000c, 0xc6f: 0x000c,\n\t0xc70: 0x000c, 0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c,\n\t0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c,\n\t0xc7c: 0x000c,\n\t// Block 0x32, offset 0xc80\n\t0xc86: 0x000c,\n\t// Block 0x33, offset 0xcc0\n\t0xced: 0x000c, 0xcee: 0x000c, 0xcef: 0x000c,\n\t0xcf0: 0x000c, 0xcf2: 0x000c, 0xcf3: 0x000c, 0xcf4: 0x000c, 0xcf5: 0x000c,\n\t0xcf6: 0x000c, 0xcf7: 0x000c, 0xcf9: 0x000c, 0xcfa: 0x000c,\n\t0xcfd: 0x000c, 0xcfe: 0x000c,\n\t// Block 0x34, offset 0xd00\n\t0xd18: 0x000c, 0xd19: 0x000c,\n\t0xd1e: 0x000c, 0xd1f: 0x000c, 0xd20: 0x000c,\n\t0xd31: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c,\n\t// Block 0x35, offset 0xd40\n\t0xd42: 0x000c, 0xd45: 0x000c,\n\t0xd46: 0x000c,\n\t0xd4d: 0x000c,\n\t0xd5d: 0x000c,\n\t// Block 0x36, offset 0xd80\n\t0xd9d: 0x000c,\n\t0xd9e: 0x000c, 0xd9f: 0x000c,\n\t// Block 0x37, offset 0xdc0\n\t0xdd0: 0x000a, 0xdd1: 0x000a,\n\t0xdd2: 0x000a, 0xdd3: 0x000a, 0xdd4: 0x000a, 0xdd5: 0x000a, 0xdd6: 0x000a, 0xdd7: 0x000a,\n\t0xdd8: 0x000a, 0xdd9: 0x000a,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x000a,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x0009,\n\t0xe5b: 0x007a, 0xe5c: 0x006a,\n\t// Block 0x3a, offset 0xe80\n\t0xe92: 0x000c, 0xe93: 0x000c, 0xe94: 0x000c,\n\t0xeb2: 0x000c, 0xeb3: 0x000c, 0xeb4: 0x000c,\n\t// Block 0x3b, offset 0xec0\n\t0xed2: 0x000c, 0xed3: 0x000c,\n\t0xef2: 0x000c, 0xef3: 0x000c,\n\t// Block 0x3c, offset 0xf00\n\t0xf34: 0x000c, 0xf35: 0x000c,\n\t0xf37: 0x000c, 0xf38: 0x000c, 0xf39: 0x000c, 0xf3a: 0x000c, 0xf3b: 0x000c,\n\t0xf3c: 0x000c, 0xf3d: 0x000c,\n\t// Block 0x3d, offset 0xf40\n\t0xf46: 0x000c, 0xf49: 0x000c, 0xf4a: 0x000c, 0xf4b: 0x000c,\n\t0xf4c: 0x000c, 0xf4d: 0x000c, 0xf4e: 0x000c, 0xf4f: 0x000c, 0xf50: 0x000c, 0xf51: 0x000c,\n\t0xf52: 0x000c, 0xf53: 0x000c,\n\t0xf5b: 0x0004, 0xf5d: 0x000c,\n\t0xf70: 0x000a, 0xf71: 0x000a, 0xf72: 0x000a, 0xf73: 0x000a, 0xf74: 0x000a, 0xf75: 0x000a,\n\t0xf76: 0x000a, 0xf77: 0x000a, 0xf78: 0x000a, 0xf79: 0x000a,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x000a, 0xf81: 0x000a, 0xf82: 0x000a, 0xf83: 0x000a, 0xf84: 0x000a, 0xf85: 0x000a,\n\t0xf86: 0x000a, 0xf87: 0x000a, 0xf88: 0x000a, 0xf89: 0x000a, 0xf8a: 0x000a, 0xf8b: 0x000c,\n\t0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000b,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc5: 0x000c,\n\t0xfc6: 0x000c,\n\t0xfe9: 0x000c,\n\t// Block 0x40, offset 0x1000\n\t0x1020: 0x000c, 0x1021: 0x000c, 0x1022: 0x000c,\n\t0x1027: 0x000c, 0x1028: 0x000c,\n\t0x1032: 0x000c,\n\t0x1039: 0x000c, 0x103a: 0x000c, 0x103b: 0x000c,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x000a, 0x1044: 0x000a, 0x1045: 0x000a,\n\t// Block 0x42, offset 0x1080\n\t0x109e: 0x000a, 0x109f: 0x000a, 0x10a0: 0x000a, 0x10a1: 0x000a, 0x10a2: 0x000a, 0x10a3: 0x000a,\n\t0x10a4: 0x000a, 0x10a5: 0x000a, 0x10a6: 0x000a, 0x10a7: 0x000a, 0x10a8: 0x000a, 0x10a9: 0x000a,\n\t0x10aa: 0x000a, 0x10ab: 0x000a, 0x10ac: 0x000a, 0x10ad: 0x000a, 0x10ae: 0x000a, 0x10af: 0x000a,\n\t0x10b0: 0x000a, 0x10b1: 0x000a, 0x10b2: 0x000a, 0x10b3: 0x000a, 0x10b4: 0x000a, 0x10b5: 0x000a,\n\t0x10b6: 0x000a, 0x10b7: 0x000a, 0x10b8: 0x000a, 0x10b9: 0x000a, 0x10ba: 0x000a, 0x10bb: 0x000a,\n\t0x10bc: 0x000a, 0x10bd: 0x000a, 0x10be: 0x000a, 0x10bf: 0x000a,\n\t// Block 0x43, offset 0x10c0\n\t0x10d7: 0x000c,\n\t0x10d8: 0x000c, 0x10db: 0x000c,\n\t// Block 0x44, offset 0x1100\n\t0x1116: 0x000c,\n\t0x1118: 0x000c, 0x1119: 0x000c, 0x111a: 0x000c, 0x111b: 0x000c, 0x111c: 0x000c, 0x111d: 0x000c,\n\t0x111e: 0x000c, 0x1120: 0x000c, 0x1122: 0x000c,\n\t0x1125: 0x000c, 0x1126: 0x000c, 0x1127: 0x000c, 0x1128: 0x000c, 0x1129: 0x000c,\n\t0x112a: 0x000c, 0x112b: 0x000c, 0x112c: 0x000c,\n\t0x1133: 0x000c, 0x1134: 0x000c, 0x1135: 0x000c,\n\t0x1136: 0x000c, 0x1137: 0x000c, 0x1138: 0x000c, 0x1139: 0x000c, 0x113a: 0x000c, 0x113b: 0x000c,\n\t0x113c: 0x000c, 0x113f: 0x000c,\n\t// Block 0x45, offset 0x1140\n\t0x1170: 0x000c, 0x1171: 0x000c, 0x1172: 0x000c, 0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c,\n\t0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c,\n\t0x117c: 0x000c, 0x117d: 0x000c, 0x117e: 0x000c,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x000c, 0x1181: 0x000c, 0x1182: 0x000c, 0x1183: 0x000c,\n\t0x11b4: 0x000c,\n\t0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c,\n\t0x11bc: 0x000c,\n\t// Block 0x47, offset 0x11c0\n\t0x11c2: 0x000c,\n\t0x11eb: 0x000c, 0x11ec: 0x000c, 0x11ed: 0x000c, 0x11ee: 0x000c, 0x11ef: 0x000c,\n\t0x11f0: 0x000c, 0x11f1: 0x000c, 0x11f2: 0x000c, 0x11f3: 0x000c,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x000c, 0x1201: 0x000c,\n\t0x1222: 0x000c, 0x1223: 0x000c,\n\t0x1224: 0x000c, 0x1225: 0x000c, 0x1228: 0x000c, 0x1229: 0x000c,\n\t0x122b: 0x000c, 0x122c: 0x000c, 0x122d: 0x000c,\n\t// Block 0x49, offset 0x1240\n\t0x1266: 0x000c, 0x1268: 0x000c, 0x1269: 0x000c,\n\t0x126d: 0x000c, 0x126f: 0x000c,\n\t0x1270: 0x000c, 0x1271: 0x000c,\n\t// Block 0x4a, offset 0x1280\n\t0x12ac: 0x000c, 0x12ad: 0x000c, 0x12ae: 0x000c, 0x12af: 0x000c,\n\t0x12b0: 0x000c, 0x12b1: 0x000c, 0x12b2: 0x000c, 0x12b3: 0x000c,\n\t0x12b6: 0x000c, 0x12b7: 0x000c,\n\t// Block 0x4b, offset 0x12c0\n\t0x12d0: 0x000c, 0x12d1: 0x000c,\n\t0x12d2: 0x000c, 0x12d4: 0x000c, 0x12d5: 0x000c, 0x12d6: 0x000c, 0x12d7: 0x000c,\n\t0x12d8: 0x000c, 0x12d9: 0x000c, 0x12da: 0x000c, 0x12db: 0x000c, 0x12dc: 0x000c, 0x12dd: 0x000c,\n\t0x12de: 0x000c, 0x12df: 0x000c, 0x12e0: 0x000c, 0x12e2: 0x000c, 0x12e3: 0x000c,\n\t0x12e4: 0x000c, 0x12e5: 0x000c, 0x12e6: 0x000c, 0x12e7: 0x000c, 0x12e8: 0x000c,\n\t0x12ed: 0x000c,\n\t0x12f4: 0x000c,\n\t0x12f8: 0x000c, 0x12f9: 0x000c,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x000c, 0x1301: 0x000c, 0x1302: 0x000c, 0x1303: 0x000c, 0x1304: 0x000c, 0x1305: 0x000c,\n\t0x1306: 0x000c, 0x1307: 0x000c, 0x1308: 0x000c, 0x1309: 0x000c, 0x130a: 0x000c, 0x130b: 0x000c,\n\t0x130c: 0x000c, 0x130d: 0x000c, 0x130e: 0x000c, 0x130f: 0x000c, 0x1310: 0x000c, 0x1311: 0x000c,\n\t0x1312: 0x000c, 0x1313: 0x000c, 0x1314: 0x000c, 0x1315: 0x000c, 0x1316: 0x000c, 0x1317: 0x000c,\n\t0x1318: 0x000c, 0x1319: 0x000c, 0x131a: 0x000c, 0x131b: 0x000c, 0x131c: 0x000c, 0x131d: 0x000c,\n\t0x131e: 0x000c, 0x131f: 0x000c, 0x1320: 0x000c, 0x1321: 0x000c, 0x1322: 0x000c, 0x1323: 0x000c,\n\t0x1324: 0x000c, 0x1325: 0x000c, 0x1326: 0x000c, 0x1327: 0x000c, 0x1328: 0x000c, 0x1329: 0x000c,\n\t0x132a: 0x000c, 0x132b: 0x000c, 0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c,\n\t0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c, 0x1334: 0x000c, 0x1335: 0x000c,\n\t0x1336: 0x000c, 0x1337: 0x000c, 0x1338: 0x000c, 0x1339: 0x000c, 0x133b: 0x000c,\n\t0x133c: 0x000c, 0x133d: 0x000c, 0x133e: 0x000c, 0x133f: 0x000c,\n\t// Block 0x4d, offset 0x1340\n\t0x137d: 0x000a, 0x137f: 0x000a,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x000a, 0x1381: 0x000a,\n\t0x138d: 0x000a, 0x138e: 0x000a, 0x138f: 0x000a,\n\t0x139d: 0x000a,\n\t0x139e: 0x000a, 0x139f: 0x000a,\n\t0x13ad: 0x000a, 0x13ae: 0x000a, 0x13af: 0x000a,\n\t0x13bd: 0x000a, 0x13be: 0x000a,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x0009, 0x13c1: 0x0009, 0x13c2: 0x0009, 0x13c3: 0x0009, 0x13c4: 0x0009, 0x13c5: 0x0009,\n\t0x13c6: 0x0009, 0x13c7: 0x0009, 0x13c8: 0x0009, 0x13c9: 0x0009, 0x13ca: 0x0009, 0x13cb: 0x000b,\n\t0x13cc: 0x000b, 0x13cd: 0x000b, 0x13cf: 0x0001, 0x13d0: 0x000a, 0x13d1: 0x000a,\n\t0x13d2: 0x000a, 0x13d3: 0x000a, 0x13d4: 0x000a, 0x13d5: 0x000a, 0x13d6: 0x000a, 0x13d7: 0x000a,\n\t0x13d8: 0x000a, 0x13d9: 0x000a, 0x13da: 0x000a, 0x13db: 0x000a, 0x13dc: 0x000a, 0x13dd: 0x000a,\n\t0x13de: 0x000a, 0x13df: 0x000a, 0x13e0: 0x000a, 0x13e1: 0x000a, 0x13e2: 0x000a, 0x13e3: 0x000a,\n\t0x13e4: 0x000a, 0x13e5: 0x000a, 0x13e6: 0x000a, 0x13e7: 0x000a, 0x13e8: 0x0009, 0x13e9: 0x0007,\n\t0x13ea: 0x000e, 0x13eb: 0x000e, 0x13ec: 0x000e, 0x13ed: 0x000e, 0x13ee: 0x000e, 0x13ef: 0x0006,\n\t0x13f0: 0x0004, 0x13f1: 0x0004, 0x13f2: 0x0004, 0x13f3: 0x0004, 0x13f4: 0x0004, 0x13f5: 0x000a,\n\t0x13f6: 0x000a, 0x13f7: 0x000a, 0x13f8: 0x000a, 0x13f9: 0x000a, 0x13fa: 0x000a, 0x13fb: 0x000a,\n\t0x13fc: 0x000a, 0x13fd: 0x000a, 0x13fe: 0x000a, 0x13ff: 0x000a,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x000a, 0x1401: 0x000a, 0x1402: 0x000a, 0x1403: 0x000a, 0x1404: 0x0006, 0x1405: 0x009a,\n\t0x1406: 0x008a, 0x1407: 0x000a, 0x1408: 0x000a, 0x1409: 0x000a, 0x140a: 0x000a, 0x140b: 0x000a,\n\t0x140c: 0x000a, 0x140d: 0x000a, 0x140e: 0x000a, 0x140f: 0x000a, 0x1410: 0x000a, 0x1411: 0x000a,\n\t0x1412: 0x000a, 0x1413: 0x000a, 0x1414: 0x000a, 0x1415: 0x000a, 0x1416: 0x000a, 0x1417: 0x000a,\n\t0x1418: 0x000a, 0x1419: 0x000a, 0x141a: 0x000a, 0x141b: 0x000a, 0x141c: 0x000a, 0x141d: 0x000a,\n\t0x141e: 0x000a, 0x141f: 0x0009, 0x1420: 0x000b, 0x1421: 0x000b, 0x1422: 0x000b, 0x1423: 0x000b,\n\t0x1424: 0x000b, 0x1425: 0x000b, 0x1426: 0x000e, 0x1427: 0x000e, 0x1428: 0x000e, 0x1429: 0x000e,\n\t0x142a: 0x000b, 0x142b: 0x000b, 0x142c: 0x000b, 0x142d: 0x000b, 0x142e: 0x000b, 0x142f: 0x000b,\n\t0x1430: 0x0002, 0x1434: 0x0002, 0x1435: 0x0002,\n\t0x1436: 0x0002, 0x1437: 0x0002, 0x1438: 0x0002, 0x1439: 0x0002, 0x143a: 0x0003, 0x143b: 0x0003,\n\t0x143c: 0x000a, 0x143d: 0x009a, 0x143e: 0x008a,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x0002, 0x1441: 0x0002, 0x1442: 0x0002, 0x1443: 0x0002, 0x1444: 0x0002, 0x1445: 0x0002,\n\t0x1446: 0x0002, 0x1447: 0x0002, 0x1448: 0x0002, 0x1449: 0x0002, 0x144a: 0x0003, 0x144b: 0x0003,\n\t0x144c: 0x000a, 0x144d: 0x009a, 0x144e: 0x008a,\n\t0x1460: 0x0004, 0x1461: 0x0004, 0x1462: 0x0004, 0x1463: 0x0004,\n\t0x1464: 0x0004, 0x1465: 0x0004, 0x1466: 0x0004, 0x1467: 0x0004, 0x1468: 0x0004, 0x1469: 0x0004,\n\t0x146a: 0x0004, 0x146b: 0x0004, 0x146c: 0x0004, 0x146d: 0x0004, 0x146e: 0x0004, 0x146f: 0x0004,\n\t0x1470: 0x0004, 0x1471: 0x0004, 0x1472: 0x0004, 0x1473: 0x0004, 0x1474: 0x0004, 0x1475: 0x0004,\n\t0x1476: 0x0004, 0x1477: 0x0004, 0x1478: 0x0004, 0x1479: 0x0004, 0x147a: 0x0004, 0x147b: 0x0004,\n\t0x147c: 0x0004, 0x147d: 0x0004, 0x147e: 0x0004, 0x147f: 0x0004,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x0004, 0x1481: 0x0004, 0x1482: 0x0004, 0x1483: 0x0004, 0x1484: 0x0004, 0x1485: 0x0004,\n\t0x1486: 0x0004, 0x1487: 0x0004, 0x1488: 0x0004, 0x1489: 0x0004, 0x148a: 0x0004, 0x148b: 0x0004,\n\t0x148c: 0x0004, 0x148d: 0x0004, 0x148e: 0x0004, 0x148f: 0x0004, 0x1490: 0x000c, 0x1491: 0x000c,\n\t0x1492: 0x000c, 0x1493: 0x000c, 0x1494: 0x000c, 0x1495: 0x000c, 0x1496: 0x000c, 0x1497: 0x000c,\n\t0x1498: 0x000c, 0x1499: 0x000c, 0x149a: 0x000c, 0x149b: 0x000c, 0x149c: 0x000c, 0x149d: 0x000c,\n\t0x149e: 0x000c, 0x149f: 0x000c, 0x14a0: 0x000c, 0x14a1: 0x000c, 0x14a2: 0x000c, 0x14a3: 0x000c,\n\t0x14a4: 0x000c, 0x14a5: 0x000c, 0x14a6: 0x000c, 0x14a7: 0x000c, 0x14a8: 0x000c, 0x14a9: 0x000c,\n\t0x14aa: 0x000c, 0x14ab: 0x000c, 0x14ac: 0x000c, 0x14ad: 0x000c, 0x14ae: 0x000c, 0x14af: 0x000c,\n\t0x14b0: 0x000c,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x000a, 0x14c1: 0x000a, 0x14c3: 0x000a, 0x14c4: 0x000a, 0x14c5: 0x000a,\n\t0x14c6: 0x000a, 0x14c8: 0x000a, 0x14c9: 0x000a,\n\t0x14d4: 0x000a, 0x14d6: 0x000a, 0x14d7: 0x000a,\n\t0x14d8: 0x000a,\n\t0x14de: 0x000a, 0x14df: 0x000a, 0x14e0: 0x000a, 0x14e1: 0x000a, 0x14e2: 0x000a, 0x14e3: 0x000a,\n\t0x14e5: 0x000a, 0x14e7: 0x000a, 0x14e9: 0x000a,\n\t0x14ee: 0x0004,\n\t0x14fa: 0x000a, 0x14fb: 0x000a,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x000a, 0x1501: 0x000a, 0x1502: 0x000a, 0x1503: 0x000a, 0x1504: 0x000a,\n\t0x150a: 0x000a, 0x150b: 0x000a,\n\t0x150c: 0x000a, 0x150d: 0x000a, 0x1510: 0x000a, 0x1511: 0x000a,\n\t0x1512: 0x000a, 0x1513: 0x000a, 0x1514: 0x000a, 0x1515: 0x000a, 0x1516: 0x000a, 0x1517: 0x000a,\n\t0x1518: 0x000a, 0x1519: 0x000a, 0x151a: 0x000a, 0x151b: 0x000a, 0x151c: 0x000a, 0x151d: 0x000a,\n\t0x151e: 0x000a, 0x151f: 0x000a,\n\t// Block 0x55, offset 0x1540\n\t0x1549: 0x000a, 0x154a: 0x000a, 0x154b: 0x000a,\n\t0x1550: 0x000a, 0x1551: 0x000a,\n\t0x1552: 0x000a, 0x1553: 0x000a, 0x1554: 0x000a, 0x1555: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a,\n\t0x1558: 0x000a, 0x1559: 0x000a, 0x155a: 0x000a, 0x155b: 0x000a, 0x155c: 0x000a, 0x155d: 0x000a,\n\t0x155e: 0x000a, 0x155f: 0x000a, 0x1560: 0x000a, 0x1561: 0x000a, 0x1562: 0x000a, 0x1563: 0x000a,\n\t0x1564: 0x000a, 0x1565: 0x000a, 0x1566: 0x000a, 0x1567: 0x000a, 0x1568: 0x000a, 0x1569: 0x000a,\n\t0x156a: 0x000a, 0x156b: 0x000a, 0x156c: 0x000a, 0x156d: 0x000a, 0x156e: 0x000a, 0x156f: 0x000a,\n\t0x1570: 0x000a, 0x1571: 0x000a, 0x1572: 0x000a, 0x1573: 0x000a, 0x1574: 0x000a, 0x1575: 0x000a,\n\t0x1576: 0x000a, 0x1577: 0x000a, 0x1578: 0x000a, 0x1579: 0x000a, 0x157a: 0x000a, 0x157b: 0x000a,\n\t0x157c: 0x000a, 0x157d: 0x000a, 0x157e: 0x000a, 0x157f: 0x000a,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x000a, 0x1581: 0x000a, 0x1582: 0x000a, 0x1583: 0x000a, 0x1584: 0x000a, 0x1585: 0x000a,\n\t0x1586: 0x000a, 0x1587: 0x000a, 0x1588: 0x000a, 0x1589: 0x000a, 0x158a: 0x000a, 0x158b: 0x000a,\n\t0x158c: 0x000a, 0x158d: 0x000a, 0x158e: 0x000a, 0x158f: 0x000a, 0x1590: 0x000a, 0x1591: 0x000a,\n\t0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a,\n\t0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a,\n\t0x159e: 0x000a, 0x159f: 0x000a, 0x15a0: 0x000a, 0x15a1: 0x000a, 0x15a2: 0x000a, 0x15a3: 0x000a,\n\t0x15a4: 0x000a, 0x15a5: 0x000a, 0x15a6: 0x000a, 0x15a7: 0x000a, 0x15a8: 0x000a, 0x15a9: 0x000a,\n\t0x15aa: 0x000a, 0x15ab: 0x000a, 0x15ac: 0x000a, 0x15ad: 0x000a, 0x15ae: 0x000a, 0x15af: 0x000a,\n\t0x15b0: 0x000a, 0x15b1: 0x000a, 0x15b2: 0x000a, 0x15b3: 0x000a, 0x15b4: 0x000a, 0x15b5: 0x000a,\n\t0x15b6: 0x000a, 0x15b7: 0x000a, 0x15b8: 0x000a, 0x15b9: 0x000a, 0x15ba: 0x000a, 0x15bb: 0x000a,\n\t0x15bc: 0x000a, 0x15bd: 0x000a, 0x15be: 0x000a, 0x15bf: 0x000a,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x000a, 0x15c1: 0x000a, 0x15c2: 0x000a, 0x15c3: 0x000a, 0x15c4: 0x000a, 0x15c5: 0x000a,\n\t0x15c6: 0x000a, 0x15c7: 0x000a, 0x15c8: 0x000a, 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a,\n\t0x15cc: 0x000a, 0x15cd: 0x000a, 0x15ce: 0x000a, 0x15cf: 0x000a, 0x15d0: 0x000a, 0x15d1: 0x000a,\n\t0x15d2: 0x0003, 0x15d3: 0x0004, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a,\n\t0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a,\n\t0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a,\n\t0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a,\n\t0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a,\n\t0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a,\n\t0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a,\n\t0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a,\n\t0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x003a, 0x1609: 0x002a, 0x160a: 0x003a, 0x160b: 0x002a,\n\t0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a,\n\t0x1612: 0x000a, 0x1613: 0x000a, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a,\n\t0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a,\n\t0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a,\n\t0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x009a,\n\t0x162a: 0x008a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a,\n\t0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a,\n\t// Block 0x59, offset 0x1640\n\t0x167b: 0x000a,\n\t0x167c: 0x000a, 0x167d: 0x000a, 0x167e: 0x000a, 0x167f: 0x000a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x000a, 0x1681: 0x000a, 0x1682: 0x000a, 0x1683: 0x000a, 0x1684: 0x000a, 0x1685: 0x000a,\n\t0x1686: 0x000a, 0x1687: 0x000a, 0x1688: 0x000a, 0x1689: 0x000a, 0x168a: 0x000a, 0x168b: 0x000a,\n\t0x168c: 0x000a, 0x168d: 0x000a, 0x168e: 0x000a, 0x168f: 0x000a, 0x1690: 0x000a, 0x1691: 0x000a,\n\t0x1692: 0x000a, 0x1693: 0x000a, 0x1694: 0x000a, 0x1696: 0x000a, 0x1697: 0x000a,\n\t0x1698: 0x000a, 0x1699: 0x000a, 0x169a: 0x000a, 0x169b: 0x000a, 0x169c: 0x000a, 0x169d: 0x000a,\n\t0x169e: 0x000a, 0x169f: 0x000a, 0x16a0: 0x000a, 0x16a1: 0x000a, 0x16a2: 0x000a, 0x16a3: 0x000a,\n\t0x16a4: 0x000a, 0x16a5: 0x000a, 0x16a6: 0x000a, 0x16a7: 0x000a, 0x16a8: 0x000a, 0x16a9: 0x000a,\n\t0x16aa: 0x000a, 0x16ab: 0x000a, 0x16ac: 0x000a, 0x16ad: 0x000a, 0x16ae: 0x000a, 0x16af: 0x000a,\n\t0x16b0: 0x000a, 0x16b1: 0x000a, 0x16b2: 0x000a, 0x16b3: 0x000a, 0x16b4: 0x000a, 0x16b5: 0x000a,\n\t0x16b6: 0x000a, 0x16b7: 0x000a, 0x16b8: 0x000a, 0x16b9: 0x000a, 0x16ba: 0x000a, 0x16bb: 0x000a,\n\t0x16bc: 0x000a, 0x16bd: 0x000a, 0x16be: 0x000a, 0x16bf: 0x000a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x000a, 0x16c1: 0x000a, 0x16c2: 0x000a, 0x16c3: 0x000a, 0x16c4: 0x000a, 0x16c5: 0x000a,\n\t0x16c6: 0x000a, 0x16c7: 0x000a, 0x16c8: 0x000a, 0x16c9: 0x000a, 0x16ca: 0x000a, 0x16cb: 0x000a,\n\t0x16cc: 0x000a, 0x16cd: 0x000a, 0x16ce: 0x000a, 0x16cf: 0x000a, 0x16d0: 0x000a, 0x16d1: 0x000a,\n\t0x16d2: 0x000a, 0x16d3: 0x000a, 0x16d4: 0x000a, 0x16d5: 0x000a, 0x16d6: 0x000a, 0x16d7: 0x000a,\n\t0x16d8: 0x000a, 0x16d9: 0x000a, 0x16da: 0x000a, 0x16db: 0x000a, 0x16dc: 0x000a, 0x16dd: 0x000a,\n\t0x16de: 0x000a, 0x16df: 0x000a, 0x16e0: 0x000a, 0x16e1: 0x000a, 0x16e2: 0x000a, 0x16e3: 0x000a,\n\t0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a,\n\t0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a,\n\t0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a,\n\t0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a, 0x1727: 0x000a, 0x1728: 0x000a, 0x1729: 0x000a,\n\t0x172a: 0x000a, 0x172b: 0x000a, 0x172c: 0x000a, 0x172d: 0x000a, 0x172e: 0x000a, 0x172f: 0x000a,\n\t0x1730: 0x000a, 0x1731: 0x000a, 0x1732: 0x000a, 0x1733: 0x000a, 0x1734: 0x000a, 0x1735: 0x000a,\n\t0x1736: 0x000a, 0x1737: 0x000a, 0x1738: 0x000a, 0x1739: 0x000a, 0x173a: 0x000a, 0x173b: 0x000a,\n\t0x173c: 0x000a, 0x173d: 0x000a, 0x173e: 0x000a, 0x173f: 0x000a,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a,\n\t0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x0002, 0x1749: 0x0002, 0x174a: 0x0002, 0x174b: 0x0002,\n\t0x174c: 0x0002, 0x174d: 0x0002, 0x174e: 0x0002, 0x174f: 0x0002, 0x1750: 0x0002, 0x1751: 0x0002,\n\t0x1752: 0x0002, 0x1753: 0x0002, 0x1754: 0x0002, 0x1755: 0x0002, 0x1756: 0x0002, 0x1757: 0x0002,\n\t0x1758: 0x0002, 0x1759: 0x0002, 0x175a: 0x0002, 0x175b: 0x0002,\n\t// Block 0x5e, offset 0x1780\n\t0x17aa: 0x000a, 0x17ab: 0x000a, 0x17ac: 0x000a, 0x17ad: 0x000a, 0x17ae: 0x000a, 0x17af: 0x000a,\n\t0x17b0: 0x000a, 0x17b1: 0x000a, 0x17b2: 0x000a, 0x17b3: 0x000a, 0x17b4: 0x000a, 0x17b5: 0x000a,\n\t0x17b6: 0x000a, 0x17b7: 0x000a, 0x17b8: 0x000a, 0x17b9: 0x000a, 0x17ba: 0x000a, 0x17bb: 0x000a,\n\t0x17bc: 0x000a, 0x17bd: 0x000a, 0x17be: 0x000a, 0x17bf: 0x000a,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x000a, 0x17c1: 0x000a, 0x17c2: 0x000a, 0x17c3: 0x000a, 0x17c4: 0x000a, 0x17c5: 0x000a,\n\t0x17c6: 0x000a, 0x17c7: 0x000a, 0x17c8: 0x000a, 0x17c9: 0x000a, 0x17ca: 0x000a, 0x17cb: 0x000a,\n\t0x17cc: 0x000a, 0x17cd: 0x000a, 0x17ce: 0x000a, 0x17cf: 0x000a, 0x17d0: 0x000a, 0x17d1: 0x000a,\n\t0x17d2: 0x000a, 0x17d3: 0x000a, 0x17d4: 0x000a, 0x17d5: 0x000a, 0x17d6: 0x000a, 0x17d7: 0x000a,\n\t0x17d8: 0x000a, 0x17d9: 0x000a, 0x17da: 0x000a, 0x17db: 0x000a, 0x17dc: 0x000a, 0x17dd: 0x000a,\n\t0x17de: 0x000a, 0x17df: 0x000a, 0x17e0: 0x000a, 0x17e1: 0x000a, 0x17e2: 0x000a, 0x17e3: 0x000a,\n\t0x17e4: 0x000a, 0x17e5: 0x000a, 0x17e6: 0x000a, 0x17e7: 0x000a, 0x17e8: 0x000a, 0x17e9: 0x000a,\n\t0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a,\n\t0x17f0: 0x000a, 0x17f1: 0x000a, 0x17f2: 0x000a, 0x17f3: 0x000a, 0x17f4: 0x000a, 0x17f5: 0x000a,\n\t0x17f6: 0x000a, 0x17f7: 0x000a, 0x17f8: 0x000a, 0x17f9: 0x000a, 0x17fa: 0x000a, 0x17fb: 0x000a,\n\t0x17fc: 0x000a, 0x17fd: 0x000a, 0x17fe: 0x000a, 0x17ff: 0x000a,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x000a, 0x1801: 0x000a, 0x1802: 0x000a, 0x1803: 0x000a, 0x1804: 0x000a, 0x1805: 0x000a,\n\t0x1806: 0x000a, 0x1807: 0x000a, 0x1808: 0x000a, 0x1809: 0x000a, 0x180a: 0x000a, 0x180b: 0x000a,\n\t0x180c: 0x000a, 0x180d: 0x000a, 0x180e: 0x000a, 0x180f: 0x000a, 0x1810: 0x000a, 0x1811: 0x000a,\n\t0x1812: 0x000a, 0x1813: 0x000a, 0x1814: 0x000a, 0x1815: 0x000a, 0x1816: 0x000a, 0x1817: 0x000a,\n\t0x1818: 0x000a, 0x1819: 0x000a, 0x181a: 0x000a, 0x181b: 0x000a, 0x181c: 0x000a, 0x181d: 0x000a,\n\t0x181e: 0x000a, 0x181f: 0x000a, 0x1820: 0x000a, 0x1821: 0x000a, 0x1822: 0x000a, 0x1823: 0x000a,\n\t0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x003a, 0x1829: 0x002a,\n\t0x182a: 0x003a, 0x182b: 0x002a, 0x182c: 0x003a, 0x182d: 0x002a, 0x182e: 0x003a, 0x182f: 0x002a,\n\t0x1830: 0x003a, 0x1831: 0x002a, 0x1832: 0x003a, 0x1833: 0x002a, 0x1834: 0x003a, 0x1835: 0x002a,\n\t0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a,\n\t0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x009a,\n\t0x1846: 0x008a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a,\n\t0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a,\n\t0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a,\n\t0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a,\n\t0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a,\n\t0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x003a, 0x1867: 0x002a, 0x1868: 0x003a, 0x1869: 0x002a,\n\t0x186a: 0x003a, 0x186b: 0x002a, 0x186c: 0x003a, 0x186d: 0x002a, 0x186e: 0x003a, 0x186f: 0x002a,\n\t0x1870: 0x000a, 0x1871: 0x000a, 0x1872: 0x000a, 0x1873: 0x000a, 0x1874: 0x000a, 0x1875: 0x000a,\n\t0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a,\n\t0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x007a, 0x1884: 0x006a, 0x1885: 0x009a,\n\t0x1886: 0x008a, 0x1887: 0x00ba, 0x1888: 0x00aa, 0x1889: 0x009a, 0x188a: 0x008a, 0x188b: 0x007a,\n\t0x188c: 0x006a, 0x188d: 0x00da, 0x188e: 0x002a, 0x188f: 0x003a, 0x1890: 0x00ca, 0x1891: 0x009a,\n\t0x1892: 0x008a, 0x1893: 0x007a, 0x1894: 0x006a, 0x1895: 0x009a, 0x1896: 0x008a, 0x1897: 0x00ba,\n\t0x1898: 0x00aa, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a,\n\t0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a,\n\t0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x000a, 0x18a7: 0x000a, 0x18a8: 0x000a, 0x18a9: 0x000a,\n\t0x18aa: 0x000a, 0x18ab: 0x000a, 0x18ac: 0x000a, 0x18ad: 0x000a, 0x18ae: 0x000a, 0x18af: 0x000a,\n\t0x18b0: 0x000a, 0x18b1: 0x000a, 0x18b2: 0x000a, 0x18b3: 0x000a, 0x18b4: 0x000a, 0x18b5: 0x000a,\n\t0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a,\n\t0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x000a, 0x18c4: 0x000a, 0x18c5: 0x000a,\n\t0x18c6: 0x000a, 0x18c7: 0x000a, 0x18c8: 0x000a, 0x18c9: 0x000a, 0x18ca: 0x000a, 0x18cb: 0x000a,\n\t0x18cc: 0x000a, 0x18cd: 0x000a, 0x18ce: 0x000a, 0x18cf: 0x000a, 0x18d0: 0x000a, 0x18d1: 0x000a,\n\t0x18d2: 0x000a, 0x18d3: 0x000a, 0x18d4: 0x000a, 0x18d5: 0x000a, 0x18d6: 0x000a, 0x18d7: 0x000a,\n\t0x18d8: 0x003a, 0x18d9: 0x002a, 0x18da: 0x003a, 0x18db: 0x002a, 0x18dc: 0x000a, 0x18dd: 0x000a,\n\t0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a,\n\t0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x000a, 0x18e7: 0x000a, 0x18e8: 0x000a, 0x18e9: 0x000a,\n\t0x18ea: 0x000a, 0x18eb: 0x000a, 0x18ec: 0x000a, 0x18ed: 0x000a, 0x18ee: 0x000a, 0x18ef: 0x000a,\n\t0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a,\n\t0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a,\n\t0x18fc: 0x003a, 0x18fd: 0x002a, 0x18fe: 0x000a, 0x18ff: 0x000a,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x000a, 0x1904: 0x000a, 0x1905: 0x000a,\n\t0x1906: 0x000a, 0x1907: 0x000a, 0x1908: 0x000a, 0x1909: 0x000a, 0x190a: 0x000a, 0x190b: 0x000a,\n\t0x190c: 0x000a, 0x190d: 0x000a, 0x190e: 0x000a, 0x190f: 0x000a, 0x1910: 0x000a, 0x1911: 0x000a,\n\t0x1912: 0x000a, 0x1913: 0x000a, 0x1914: 0x000a, 0x1915: 0x000a, 0x1916: 0x000a, 0x1917: 0x000a,\n\t0x1918: 0x000a, 0x1919: 0x000a, 0x191a: 0x000a, 0x191b: 0x000a, 0x191c: 0x000a, 0x191d: 0x000a,\n\t0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a,\n\t0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a,\n\t0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a,\n\t0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a,\n\t0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a,\n\t0x193c: 0x000a, 0x193d: 0x000a, 0x193e: 0x000a, 0x193f: 0x000a,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a,\n\t0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a,\n\t0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a,\n\t0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a,\n\t0x1958: 0x000a, 0x1959: 0x000a, 0x195a: 0x000a, 0x195b: 0x000a, 0x195c: 0x000a, 0x195d: 0x000a,\n\t0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a,\n\t0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a,\n\t0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a,\n\t0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a, 0x1974: 0x000a, 0x1975: 0x000a,\n\t0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a,\n\t0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a,\n\t0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a,\n\t0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a,\n\t0x1992: 0x000a,\n\t0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a,\n\t// Block 0x67, offset 0x19c0\n\t0x19e5: 0x000a, 0x19e6: 0x000a, 0x19e7: 0x000a, 0x19e8: 0x000a, 0x19e9: 0x000a,\n\t0x19ea: 0x000a, 0x19ef: 0x000c,\n\t0x19f0: 0x000c, 0x19f1: 0x000c,\n\t0x19f9: 0x000a, 0x19fa: 0x000a, 0x19fb: 0x000a,\n\t0x19fc: 0x000a, 0x19fd: 0x000a, 0x19fe: 0x000a, 0x19ff: 0x000a,\n\t// Block 0x68, offset 0x1a00\n\t0x1a3f: 0x000c,\n\t// Block 0x69, offset 0x1a40\n\t0x1a60: 0x000c, 0x1a61: 0x000c, 0x1a62: 0x000c, 0x1a63: 0x000c,\n\t0x1a64: 0x000c, 0x1a65: 0x000c, 0x1a66: 0x000c, 0x1a67: 0x000c, 0x1a68: 0x000c, 0x1a69: 0x000c,\n\t0x1a6a: 0x000c, 0x1a6b: 0x000c, 0x1a6c: 0x000c, 0x1a6d: 0x000c, 0x1a6e: 0x000c, 0x1a6f: 0x000c,\n\t0x1a70: 0x000c, 0x1a71: 0x000c, 0x1a72: 0x000c, 0x1a73: 0x000c, 0x1a74: 0x000c, 0x1a75: 0x000c,\n\t0x1a76: 0x000c, 0x1a77: 0x000c, 0x1a78: 0x000c, 0x1a79: 0x000c, 0x1a7a: 0x000c, 0x1a7b: 0x000c,\n\t0x1a7c: 0x000c, 0x1a7d: 0x000c, 0x1a7e: 0x000c, 0x1a7f: 0x000c,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x000a, 0x1a81: 0x000a, 0x1a82: 0x000a, 0x1a83: 0x000a, 0x1a84: 0x000a, 0x1a85: 0x000a,\n\t0x1a86: 0x000a, 0x1a87: 0x000a, 0x1a88: 0x000a, 0x1a89: 0x000a, 0x1a8a: 0x000a, 0x1a8b: 0x000a,\n\t0x1a8c: 0x000a, 0x1a8d: 0x000a, 0x1a8e: 0x000a, 0x1a8f: 0x000a, 0x1a90: 0x000a, 0x1a91: 0x000a,\n\t0x1a92: 0x000a, 0x1a93: 0x000a, 0x1a94: 0x000a, 0x1a95: 0x000a, 0x1a96: 0x000a, 0x1a97: 0x000a,\n\t0x1a98: 0x000a, 0x1a99: 0x000a, 0x1a9a: 0x000a, 0x1a9b: 0x000a, 0x1a9c: 0x000a, 0x1a9d: 0x000a,\n\t0x1a9e: 0x000a, 0x1a9f: 0x000a, 0x1aa0: 0x000a, 0x1aa1: 0x000a, 0x1aa2: 0x003a, 0x1aa3: 0x002a,\n\t0x1aa4: 0x003a, 0x1aa5: 0x002a, 0x1aa6: 0x003a, 0x1aa7: 0x002a, 0x1aa8: 0x003a, 0x1aa9: 0x002a,\n\t0x1aaa: 0x000a, 0x1aab: 0x000a, 0x1aac: 0x000a, 0x1aad: 0x000a, 0x1aae: 0x000a, 0x1aaf: 0x000a,\n\t0x1ab0: 0x000a, 0x1ab1: 0x000a, 0x1ab2: 0x000a, 0x1ab3: 0x000a, 0x1ab4: 0x000a, 0x1ab5: 0x000a,\n\t0x1ab6: 0x000a, 0x1ab7: 0x000a, 0x1ab8: 0x000a, 0x1ab9: 0x000a, 0x1aba: 0x000a, 0x1abb: 0x000a,\n\t0x1abc: 0x000a, 0x1abd: 0x000a, 0x1abe: 0x000a, 0x1abf: 0x000a,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a,\n\t0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, 0x1b05: 0x000a,\n\t0x1b06: 0x000a, 0x1b07: 0x000a, 0x1b08: 0x000a, 0x1b09: 0x000a, 0x1b0a: 0x000a, 0x1b0b: 0x000a,\n\t0x1b0c: 0x000a, 0x1b0d: 0x000a, 0x1b0e: 0x000a, 0x1b0f: 0x000a, 0x1b10: 0x000a, 0x1b11: 0x000a,\n\t0x1b12: 0x000a, 0x1b13: 0x000a, 0x1b14: 0x000a, 0x1b15: 0x000a, 0x1b16: 0x000a, 0x1b17: 0x000a,\n\t0x1b18: 0x000a, 0x1b19: 0x000a, 0x1b1b: 0x000a, 0x1b1c: 0x000a, 0x1b1d: 0x000a,\n\t0x1b1e: 0x000a, 0x1b1f: 0x000a, 0x1b20: 0x000a, 0x1b21: 0x000a, 0x1b22: 0x000a, 0x1b23: 0x000a,\n\t0x1b24: 0x000a, 0x1b25: 0x000a, 0x1b26: 0x000a, 0x1b27: 0x000a, 0x1b28: 0x000a, 0x1b29: 0x000a,\n\t0x1b2a: 0x000a, 0x1b2b: 0x000a, 0x1b2c: 0x000a, 0x1b2d: 0x000a, 0x1b2e: 0x000a, 0x1b2f: 0x000a,\n\t0x1b30: 0x000a, 0x1b31: 0x000a, 0x1b32: 0x000a, 0x1b33: 0x000a, 0x1b34: 0x000a, 0x1b35: 0x000a,\n\t0x1b36: 0x000a, 0x1b37: 0x000a, 0x1b38: 0x000a, 0x1b39: 0x000a, 0x1b3a: 0x000a, 0x1b3b: 0x000a,\n\t0x1b3c: 0x000a, 0x1b3d: 0x000a, 0x1b3e: 0x000a, 0x1b3f: 0x000a,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a,\n\t0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a,\n\t0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a,\n\t0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a,\n\t0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5a: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a,\n\t0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a,\n\t0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a,\n\t0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a,\n\t0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a,\n\t0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a,\n\t0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a,\n\t0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a,\n\t0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a, 0x1bb4: 0x000a, 0x1bb5: 0x000a,\n\t0x1bb6: 0x000a, 0x1bb7: 0x000a, 0x1bb8: 0x000a, 0x1bb9: 0x000a, 0x1bba: 0x000a, 0x1bbb: 0x000a,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x0009, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a,\n\t0x1bc8: 0x003a, 0x1bc9: 0x002a, 0x1bca: 0x003a, 0x1bcb: 0x002a,\n\t0x1bcc: 0x003a, 0x1bcd: 0x002a, 0x1bce: 0x003a, 0x1bcf: 0x002a, 0x1bd0: 0x003a, 0x1bd1: 0x002a,\n\t0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x003a, 0x1bd5: 0x002a, 0x1bd6: 0x003a, 0x1bd7: 0x002a,\n\t0x1bd8: 0x003a, 0x1bd9: 0x002a, 0x1bda: 0x003a, 0x1bdb: 0x002a, 0x1bdc: 0x000a, 0x1bdd: 0x000a,\n\t0x1bde: 0x000a, 0x1bdf: 0x000a, 0x1be0: 0x000a,\n\t0x1bea: 0x000c, 0x1beb: 0x000c, 0x1bec: 0x000c, 0x1bed: 0x000c,\n\t0x1bf0: 0x000a,\n\t0x1bf6: 0x000a, 0x1bf7: 0x000a,\n\t0x1bfd: 0x000a, 0x1bfe: 0x000a, 0x1bff: 0x000a,\n\t// Block 0x70, offset 0x1c00\n\t0x1c19: 0x000c, 0x1c1a: 0x000c, 0x1c1b: 0x000a, 0x1c1c: 0x000a,\n\t0x1c20: 0x000a,\n\t// Block 0x71, offset 0x1c40\n\t0x1c7b: 0x000a,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0x000a, 0x1c81: 0x000a, 0x1c82: 0x000a, 0x1c83: 0x000a, 0x1c84: 0x000a, 0x1c85: 0x000a,\n\t0x1c86: 0x000a, 0x1c87: 0x000a, 0x1c88: 0x000a, 0x1c89: 0x000a, 0x1c8a: 0x000a, 0x1c8b: 0x000a,\n\t0x1c8c: 0x000a, 0x1c8d: 0x000a, 0x1c8e: 0x000a, 0x1c8f: 0x000a, 0x1c90: 0x000a, 0x1c91: 0x000a,\n\t0x1c92: 0x000a, 0x1c93: 0x000a, 0x1c94: 0x000a, 0x1c95: 0x000a, 0x1c96: 0x000a, 0x1c97: 0x000a,\n\t0x1c98: 0x000a, 0x1c99: 0x000a, 0x1c9a: 0x000a, 0x1c9b: 0x000a, 0x1c9c: 0x000a, 0x1c9d: 0x000a,\n\t0x1c9e: 0x000a, 0x1c9f: 0x000a, 0x1ca0: 0x000a, 0x1ca1: 0x000a, 0x1ca2: 0x000a, 0x1ca3: 0x000a,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cdd: 0x000a,\n\t0x1cde: 0x000a,\n\t// Block 0x74, offset 0x1d00\n\t0x1d10: 0x000a, 0x1d11: 0x000a,\n\t0x1d12: 0x000a, 0x1d13: 0x000a, 0x1d14: 0x000a, 0x1d15: 0x000a, 0x1d16: 0x000a, 0x1d17: 0x000a,\n\t0x1d18: 0x000a, 0x1d19: 0x000a, 0x1d1a: 0x000a, 0x1d1b: 0x000a, 0x1d1c: 0x000a, 0x1d1d: 0x000a,\n\t0x1d1e: 0x000a, 0x1d1f: 0x000a,\n\t0x1d3c: 0x000a, 0x1d3d: 0x000a, 0x1d3e: 0x000a,\n\t// Block 0x75, offset 0x1d40\n\t0x1d71: 0x000a, 0x1d72: 0x000a, 0x1d73: 0x000a, 0x1d74: 0x000a, 0x1d75: 0x000a,\n\t0x1d76: 0x000a, 0x1d77: 0x000a, 0x1d78: 0x000a, 0x1d79: 0x000a, 0x1d7a: 0x000a, 0x1d7b: 0x000a,\n\t0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a, 0x1d7f: 0x000a,\n\t// Block 0x76, offset 0x1d80\n\t0x1d8c: 0x000a, 0x1d8d: 0x000a, 0x1d8e: 0x000a, 0x1d8f: 0x000a,\n\t// Block 0x77, offset 0x1dc0\n\t0x1df7: 0x000a, 0x1df8: 0x000a, 0x1df9: 0x000a, 0x1dfa: 0x000a,\n\t// Block 0x78, offset 0x1e00\n\t0x1e1e: 0x000a, 0x1e1f: 0x000a,\n\t0x1e3f: 0x000a,\n\t// Block 0x79, offset 0x1e40\n\t0x1e50: 0x000a, 0x1e51: 0x000a,\n\t0x1e52: 0x000a, 0x1e53: 0x000a, 0x1e54: 0x000a, 0x1e55: 0x000a, 0x1e56: 0x000a, 0x1e57: 0x000a,\n\t0x1e58: 0x000a, 0x1e59: 0x000a, 0x1e5a: 0x000a, 0x1e5b: 0x000a, 0x1e5c: 0x000a, 0x1e5d: 0x000a,\n\t0x1e5e: 0x000a, 0x1e5f: 0x000a, 0x1e60: 0x000a, 0x1e61: 0x000a, 0x1e62: 0x000a, 0x1e63: 0x000a,\n\t0x1e64: 0x000a, 0x1e65: 0x000a, 0x1e66: 0x000a, 0x1e67: 0x000a, 0x1e68: 0x000a, 0x1e69: 0x000a,\n\t0x1e6a: 0x000a, 0x1e6b: 0x000a, 0x1e6c: 0x000a, 0x1e6d: 0x000a, 0x1e6e: 0x000a, 0x1e6f: 0x000a,\n\t0x1e70: 0x000a, 0x1e71: 0x000a, 0x1e72: 0x000a, 0x1e73: 0x000a, 0x1e74: 0x000a, 0x1e75: 0x000a,\n\t0x1e76: 0x000a, 0x1e77: 0x000a, 0x1e78: 0x000a, 0x1e79: 0x000a, 0x1e7a: 0x000a, 0x1e7b: 0x000a,\n\t0x1e7c: 0x000a, 0x1e7d: 0x000a, 0x1e7e: 0x000a, 0x1e7f: 0x000a,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0x000a, 0x1e81: 0x000a, 0x1e82: 0x000a, 0x1e83: 0x000a, 0x1e84: 0x000a, 0x1e85: 0x000a,\n\t0x1e86: 0x000a,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ecd: 0x000a, 0x1ece: 0x000a, 0x1ecf: 0x000a,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f2f: 0x000c,\n\t0x1f30: 0x000c, 0x1f31: 0x000c, 0x1f32: 0x000c, 0x1f33: 0x000a, 0x1f34: 0x000c, 0x1f35: 0x000c,\n\t0x1f36: 0x000c, 0x1f37: 0x000c, 0x1f38: 0x000c, 0x1f39: 0x000c, 0x1f3a: 0x000c, 0x1f3b: 0x000c,\n\t0x1f3c: 0x000c, 0x1f3d: 0x000c, 0x1f3e: 0x000a, 0x1f3f: 0x000a,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f5e: 0x000c, 0x1f5f: 0x000c,\n\t// Block 0x7e, offset 0x1f80\n\t0x1fb0: 0x000c, 0x1fb1: 0x000c,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1fc0: 0x000a, 0x1fc1: 0x000a, 0x1fc2: 0x000a, 0x1fc3: 0x000a, 0x1fc4: 0x000a, 0x1fc5: 0x000a,\n\t0x1fc6: 0x000a, 0x1fc7: 0x000a, 0x1fc8: 0x000a, 0x1fc9: 0x000a, 0x1fca: 0x000a, 0x1fcb: 0x000a,\n\t0x1fcc: 0x000a, 0x1fcd: 0x000a, 0x1fce: 0x000a, 0x1fcf: 0x000a, 0x1fd0: 0x000a, 0x1fd1: 0x000a,\n\t0x1fd2: 0x000a, 0x1fd3: 0x000a, 0x1fd4: 0x000a, 0x1fd5: 0x000a, 0x1fd6: 0x000a, 0x1fd7: 0x000a,\n\t0x1fd8: 0x000a, 0x1fd9: 0x000a, 0x1fda: 0x000a, 0x1fdb: 0x000a, 0x1fdc: 0x000a, 0x1fdd: 0x000a,\n\t0x1fde: 0x000a, 0x1fdf: 0x000a, 0x1fe0: 0x000a, 0x1fe1: 0x000a,\n\t// Block 0x80, offset 0x2000\n\t0x2008: 0x000a,\n\t// Block 0x81, offset 0x2040\n\t0x2042: 0x000c,\n\t0x2046: 0x000c, 0x204b: 0x000c,\n\t0x2065: 0x000c, 0x2066: 0x000c, 0x2068: 0x000a, 0x2069: 0x000a,\n\t0x206a: 0x000a, 0x206b: 0x000a,\n\t0x2078: 0x0004, 0x2079: 0x0004,\n\t// Block 0x82, offset 0x2080\n\t0x20b4: 0x000a, 0x20b5: 0x000a,\n\t0x20b6: 0x000a, 0x20b7: 0x000a,\n\t// Block 0x83, offset 0x20c0\n\t0x20c4: 0x000c, 0x20c5: 0x000c,\n\t0x20e0: 0x000c, 0x20e1: 0x000c, 0x20e2: 0x000c, 0x20e3: 0x000c,\n\t0x20e4: 0x000c, 0x20e5: 0x000c, 0x20e6: 0x000c, 0x20e7: 0x000c, 0x20e8: 0x000c, 0x20e9: 0x000c,\n\t0x20ea: 0x000c, 0x20eb: 0x000c, 0x20ec: 0x000c, 0x20ed: 0x000c, 0x20ee: 0x000c, 0x20ef: 0x000c,\n\t0x20f0: 0x000c, 0x20f1: 0x000c,\n\t// Block 0x84, offset 0x2100\n\t0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c,\n\t0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c,\n\t// Block 0x85, offset 0x2140\n\t0x2147: 0x000c, 0x2148: 0x000c, 0x2149: 0x000c, 0x214a: 0x000c, 0x214b: 0x000c,\n\t0x214c: 0x000c, 0x214d: 0x000c, 0x214e: 0x000c, 0x214f: 0x000c, 0x2150: 0x000c, 0x2151: 0x000c,\n\t// Block 0x86, offset 0x2180\n\t0x2180: 0x000c, 0x2181: 0x000c, 0x2182: 0x000c,\n\t0x21b3: 0x000c,\n\t0x21b6: 0x000c, 0x21b7: 0x000c, 0x21b8: 0x000c, 0x21b9: 0x000c,\n\t0x21bc: 0x000c,\n\t// Block 0x87, offset 0x21c0\n\t0x21e5: 0x000c,\n\t// Block 0x88, offset 0x2200\n\t0x2229: 0x000c,\n\t0x222a: 0x000c, 0x222b: 0x000c, 0x222c: 0x000c, 0x222d: 0x000c, 0x222e: 0x000c,\n\t0x2231: 0x000c, 0x2232: 0x000c, 0x2235: 0x000c,\n\t0x2236: 0x000c,\n\t// Block 0x89, offset 0x2240\n\t0x2243: 0x000c,\n\t0x224c: 0x000c,\n\t0x227c: 0x000c,\n\t// Block 0x8a, offset 0x2280\n\t0x22b0: 0x000c, 0x22b2: 0x000c, 0x22b3: 0x000c, 0x22b4: 0x000c,\n\t0x22b7: 0x000c, 0x22b8: 0x000c,\n\t0x22be: 0x000c, 0x22bf: 0x000c,\n\t// Block 0x8b, offset 0x22c0\n\t0x22c1: 0x000c,\n\t0x22ec: 0x000c, 0x22ed: 0x000c,\n\t0x22f6: 0x000c,\n\t// Block 0x8c, offset 0x2300\n\t0x2325: 0x000c, 0x2328: 0x000c,\n\t0x232d: 0x000c,\n\t// Block 0x8d, offset 0x2340\n\t0x235d: 0x0001,\n\t0x235e: 0x000c, 0x235f: 0x0001, 0x2360: 0x0001, 0x2361: 0x0001, 0x2362: 0x0001, 0x2363: 0x0001,\n\t0x2364: 0x0001, 0x2365: 0x0001, 0x2366: 0x0001, 0x2367: 0x0001, 0x2368: 0x0001, 0x2369: 0x0003,\n\t0x236a: 0x0001, 0x236b: 0x0001, 0x236c: 0x0001, 0x236d: 0x0001, 0x236e: 0x0001, 0x236f: 0x0001,\n\t0x2370: 0x0001, 0x2371: 0x0001, 0x2372: 0x0001, 0x2373: 0x0001, 0x2374: 0x0001, 0x2375: 0x0001,\n\t0x2376: 0x0001, 0x2377: 0x0001, 0x2378: 0x0001, 0x2379: 0x0001, 0x237a: 0x0001, 0x237b: 0x0001,\n\t0x237c: 0x0001, 0x237d: 0x0001, 0x237e: 0x0001, 0x237f: 0x0001,\n\t// Block 0x8e, offset 0x2380\n\t0x2380: 0x0001, 0x2381: 0x0001, 0x2382: 0x0001, 0x2383: 0x0001, 0x2384: 0x0001, 0x2385: 0x0001,\n\t0x2386: 0x0001, 0x2387: 0x0001, 0x2388: 0x0001, 0x2389: 0x0001, 0x238a: 0x0001, 0x238b: 0x0001,\n\t0x238c: 0x0001, 0x238d: 0x0001, 0x238e: 0x0001, 0x238f: 0x0001, 0x2390: 0x000d, 0x2391: 0x000d,\n\t0x2392: 0x000d, 0x2393: 0x000d, 0x2394: 0x000d, 0x2395: 0x000d, 0x2396: 0x000d, 0x2397: 0x000d,\n\t0x2398: 0x000d, 0x2399: 0x000d, 0x239a: 0x000d, 0x239b: 0x000d, 0x239c: 0x000d, 0x239d: 0x000d,\n\t0x239e: 0x000d, 0x239f: 0x000d, 0x23a0: 0x000d, 0x23a1: 0x000d, 0x23a2: 0x000d, 0x23a3: 0x000d,\n\t0x23a4: 0x000d, 0x23a5: 0x000d, 0x23a6: 0x000d, 0x23a7: 0x000d, 0x23a8: 0x000d, 0x23a9: 0x000d,\n\t0x23aa: 0x000d, 0x23ab: 0x000d, 0x23ac: 0x000d, 0x23ad: 0x000d, 0x23ae: 0x000d, 0x23af: 0x000d,\n\t0x23b0: 0x000d, 0x23b1: 0x000d, 0x23b2: 0x000d, 0x23b3: 0x000d, 0x23b4: 0x000d, 0x23b5: 0x000d,\n\t0x23b6: 0x000d, 0x23b7: 0x000d, 0x23b8: 0x000d, 0x23b9: 0x000d, 0x23ba: 0x000d, 0x23bb: 0x000d,\n\t0x23bc: 0x000d, 0x23bd: 0x000d, 0x23be: 0x000d, 0x23bf: 0x000d,\n\t// Block 0x8f, offset 0x23c0\n\t0x23c0: 0x000d, 0x23c1: 0x000d, 0x23c2: 0x000d, 0x23c3: 0x000d, 0x23c4: 0x000d, 0x23c5: 0x000d,\n\t0x23c6: 0x000d, 0x23c7: 0x000d, 0x23c8: 0x000d, 0x23c9: 0x000d, 0x23ca: 0x000d, 0x23cb: 0x000d,\n\t0x23cc: 0x000d, 0x23cd: 0x000d, 0x23ce: 0x000d, 0x23cf: 0x000d, 0x23d0: 0x000d, 0x23d1: 0x000d,\n\t0x23d2: 0x000d, 0x23d3: 0x000d, 0x23d4: 0x000d, 0x23d5: 0x000d, 0x23d6: 0x000d, 0x23d7: 0x000d,\n\t0x23d8: 0x000d, 0x23d9: 0x000d, 0x23da: 0x000d, 0x23db: 0x000d, 0x23dc: 0x000d, 0x23dd: 0x000d,\n\t0x23de: 0x000d, 0x23df: 0x000d, 0x23e0: 0x000d, 0x23e1: 0x000d, 0x23e2: 0x000d, 0x23e3: 0x000d,\n\t0x23e4: 0x000d, 0x23e5: 0x000d, 0x23e6: 0x000d, 0x23e7: 0x000d, 0x23e8: 0x000d, 0x23e9: 0x000d,\n\t0x23ea: 0x000d, 0x23eb: 0x000d, 0x23ec: 0x000d, 0x23ed: 0x000d, 0x23ee: 0x000d, 0x23ef: 0x000d,\n\t0x23f0: 0x000d, 0x23f1: 0x000d, 0x23f2: 0x000d, 0x23f3: 0x000d, 0x23f4: 0x000d, 0x23f5: 0x000d,\n\t0x23f6: 0x000d, 0x23f7: 0x000d, 0x23f8: 0x000d, 0x23f9: 0x000d, 0x23fa: 0x000d, 0x23fb: 0x000d,\n\t0x23fc: 0x000d, 0x23fd: 0x000d, 0x23fe: 0x000a, 0x23ff: 0x000a,\n\t// Block 0x90, offset 0x2400\n\t0x2400: 0x000d, 0x2401: 0x000d, 0x2402: 0x000d, 0x2403: 0x000d, 0x2404: 0x000d, 0x2405: 0x000d,\n\t0x2406: 0x000d, 0x2407: 0x000d, 0x2408: 0x000d, 0x2409: 0x000d, 0x240a: 0x000d, 0x240b: 0x000d,\n\t0x240c: 0x000d, 0x240d: 0x000d, 0x240e: 0x000d, 0x240f: 0x000d, 0x2410: 0x000b, 0x2411: 0x000b,\n\t0x2412: 0x000b, 0x2413: 0x000b, 0x2414: 0x000b, 0x2415: 0x000b, 0x2416: 0x000b, 0x2417: 0x000b,\n\t0x2418: 0x000b, 0x2419: 0x000b, 0x241a: 0x000b, 0x241b: 0x000b, 0x241c: 0x000b, 0x241d: 0x000b,\n\t0x241e: 0x000b, 0x241f: 0x000b, 0x2420: 0x000b, 0x2421: 0x000b, 0x2422: 0x000b, 0x2423: 0x000b,\n\t0x2424: 0x000b, 0x2425: 0x000b, 0x2426: 0x000b, 0x2427: 0x000b, 0x2428: 0x000b, 0x2429: 0x000b,\n\t0x242a: 0x000b, 0x242b: 0x000b, 0x242c: 0x000b, 0x242d: 0x000b, 0x242e: 0x000b, 0x242f: 0x000b,\n\t0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d,\n\t0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d,\n\t0x243c: 0x000d, 0x243d: 0x000a, 0x243e: 0x000d, 0x243f: 0x000d,\n\t// Block 0x91, offset 0x2440\n\t0x2440: 0x000c, 0x2441: 0x000c, 0x2442: 0x000c, 0x2443: 0x000c, 0x2444: 0x000c, 0x2445: 0x000c,\n\t0x2446: 0x000c, 0x2447: 0x000c, 0x2448: 0x000c, 0x2449: 0x000c, 0x244a: 0x000c, 0x244b: 0x000c,\n\t0x244c: 0x000c, 0x244d: 0x000c, 0x244e: 0x000c, 0x244f: 0x000c, 0x2450: 0x000a, 0x2451: 0x000a,\n\t0x2452: 0x000a, 0x2453: 0x000a, 0x2454: 0x000a, 0x2455: 0x000a, 0x2456: 0x000a, 0x2457: 0x000a,\n\t0x2458: 0x000a, 0x2459: 0x000a,\n\t0x2460: 0x000c, 0x2461: 0x000c, 0x2462: 0x000c, 0x2463: 0x000c,\n\t0x2464: 0x000c, 0x2465: 0x000c, 0x2466: 0x000c, 0x2467: 0x000c, 0x2468: 0x000c, 0x2469: 0x000c,\n\t0x246a: 0x000c, 0x246b: 0x000c, 0x246c: 0x000c, 0x246d: 0x000c, 0x246e: 0x000c, 0x246f: 0x000c,\n\t0x2470: 0x000a, 0x2471: 0x000a, 0x2472: 0x000a, 0x2473: 0x000a, 0x2474: 0x000a, 0x2475: 0x000a,\n\t0x2476: 0x000a, 0x2477: 0x000a, 0x2478: 0x000a, 0x2479: 0x000a, 0x247a: 0x000a, 0x247b: 0x000a,\n\t0x247c: 0x000a, 0x247d: 0x000a, 0x247e: 0x000a, 0x247f: 0x000a,\n\t// Block 0x92, offset 0x2480\n\t0x2480: 0x000a, 0x2481: 0x000a, 0x2482: 0x000a, 0x2483: 0x000a, 0x2484: 0x000a, 0x2485: 0x000a,\n\t0x2486: 0x000a, 0x2487: 0x000a, 0x2488: 0x000a, 0x2489: 0x000a, 0x248a: 0x000a, 0x248b: 0x000a,\n\t0x248c: 0x000a, 0x248d: 0x000a, 0x248e: 0x000a, 0x248f: 0x000a, 0x2490: 0x0006, 0x2491: 0x000a,\n\t0x2492: 0x0006, 0x2494: 0x000a, 0x2495: 0x0006, 0x2496: 0x000a, 0x2497: 0x000a,\n\t0x2498: 0x000a, 0x2499: 0x009a, 0x249a: 0x008a, 0x249b: 0x007a, 0x249c: 0x006a, 0x249d: 0x009a,\n\t0x249e: 0x008a, 0x249f: 0x0004, 0x24a0: 0x000a, 0x24a1: 0x000a, 0x24a2: 0x0003, 0x24a3: 0x0003,\n\t0x24a4: 0x000a, 0x24a5: 0x000a, 0x24a6: 0x000a, 0x24a8: 0x000a, 0x24a9: 0x0004,\n\t0x24aa: 0x0004, 0x24ab: 0x000a,\n\t0x24b0: 0x000d, 0x24b1: 0x000d, 0x24b2: 0x000d, 0x24b3: 0x000d, 0x24b4: 0x000d, 0x24b5: 0x000d,\n\t0x24b6: 0x000d, 0x24b7: 0x000d, 0x24b8: 0x000d, 0x24b9: 0x000d, 0x24ba: 0x000d, 0x24bb: 0x000d,\n\t0x24bc: 0x000d, 0x24bd: 0x000d, 0x24be: 0x000d, 0x24bf: 0x000d,\n\t// Block 0x93, offset 0x24c0\n\t0x24c0: 0x000d, 0x24c1: 0x000d, 0x24c2: 0x000d, 0x24c3: 0x000d, 0x24c4: 0x000d, 0x24c5: 0x000d,\n\t0x24c6: 0x000d, 0x24c7: 0x000d, 0x24c8: 0x000d, 0x24c9: 0x000d, 0x24ca: 0x000d, 0x24cb: 0x000d,\n\t0x24cc: 0x000d, 0x24cd: 0x000d, 0x24ce: 0x000d, 0x24cf: 0x000d, 0x24d0: 0x000d, 0x24d1: 0x000d,\n\t0x24d2: 0x000d, 0x24d3: 0x000d, 0x24d4: 0x000d, 0x24d5: 0x000d, 0x24d6: 0x000d, 0x24d7: 0x000d,\n\t0x24d8: 0x000d, 0x24d9: 0x000d, 0x24da: 0x000d, 0x24db: 0x000d, 0x24dc: 0x000d, 0x24dd: 0x000d,\n\t0x24de: 0x000d, 0x24df: 0x000d, 0x24e0: 0x000d, 0x24e1: 0x000d, 0x24e2: 0x000d, 0x24e3: 0x000d,\n\t0x24e4: 0x000d, 0x24e5: 0x000d, 0x24e6: 0x000d, 0x24e7: 0x000d, 0x24e8: 0x000d, 0x24e9: 0x000d,\n\t0x24ea: 0x000d, 0x24eb: 0x000d, 0x24ec: 0x000d, 0x24ed: 0x000d, 0x24ee: 0x000d, 0x24ef: 0x000d,\n\t0x24f0: 0x000d, 0x24f1: 0x000d, 0x24f2: 0x000d, 0x24f3: 0x000d, 0x24f4: 0x000d, 0x24f5: 0x000d,\n\t0x24f6: 0x000d, 0x24f7: 0x000d, 0x24f8: 0x000d, 0x24f9: 0x000d, 0x24fa: 0x000d, 0x24fb: 0x000d,\n\t0x24fc: 0x000d, 0x24fd: 0x000d, 0x24fe: 0x000d, 0x24ff: 0x000b,\n\t// Block 0x94, offset 0x2500\n\t0x2501: 0x000a, 0x2502: 0x000a, 0x2503: 0x0004, 0x2504: 0x0004, 0x2505: 0x0004,\n\t0x2506: 0x000a, 0x2507: 0x000a, 0x2508: 0x003a, 0x2509: 0x002a, 0x250a: 0x000a, 0x250b: 0x0003,\n\t0x250c: 0x0006, 0x250d: 0x0003, 0x250e: 0x0006, 0x250f: 0x0006, 0x2510: 0x0002, 0x2511: 0x0002,\n\t0x2512: 0x0002, 0x2513: 0x0002, 0x2514: 0x0002, 0x2515: 0x0002, 0x2516: 0x0002, 0x2517: 0x0002,\n\t0x2518: 0x0002, 0x2519: 0x0002, 0x251a: 0x0006, 0x251b: 0x000a, 0x251c: 0x000a, 0x251d: 0x000a,\n\t0x251e: 0x000a, 0x251f: 0x000a, 0x2520: 0x000a,\n\t0x253b: 0x005a,\n\t0x253c: 0x000a, 0x253d: 0x004a, 0x253e: 0x000a, 0x253f: 0x000a,\n\t// Block 0x95, offset 0x2540\n\t0x2540: 0x000a,\n\t0x255b: 0x005a, 0x255c: 0x000a, 0x255d: 0x004a,\n\t0x255e: 0x000a, 0x255f: 0x00fa, 0x2560: 0x00ea, 0x2561: 0x000a, 0x2562: 0x003a, 0x2563: 0x002a,\n\t0x2564: 0x000a, 0x2565: 0x000a,\n\t// Block 0x96, offset 0x2580\n\t0x25a0: 0x0004, 0x25a1: 0x0004, 0x25a2: 0x000a, 0x25a3: 0x000a,\n\t0x25a4: 0x000a, 0x25a5: 0x0004, 0x25a6: 0x0004, 0x25a8: 0x000a, 0x25a9: 0x000a,\n\t0x25aa: 0x000a, 0x25ab: 0x000a, 0x25ac: 0x000a, 0x25ad: 0x000a, 0x25ae: 0x000a,\n\t0x25b0: 0x000b, 0x25b1: 0x000b, 0x25b2: 0x000b, 0x25b3: 0x000b, 0x25b4: 0x000b, 0x25b5: 0x000b,\n\t0x25b6: 0x000b, 0x25b7: 0x000b, 0x25b8: 0x000b, 0x25b9: 0x000a, 0x25ba: 0x000a, 0x25bb: 0x000a,\n\t0x25bc: 0x000a, 0x25bd: 0x000a, 0x25be: 0x000b, 0x25bf: 0x000b,\n\t// Block 0x97, offset 0x25c0\n\t0x25c1: 0x000a,\n\t// Block 0x98, offset 0x2600\n\t0x2600: 0x000a, 0x2601: 0x000a, 0x2602: 0x000a, 0x2603: 0x000a, 0x2604: 0x000a, 0x2605: 0x000a,\n\t0x2606: 0x000a, 0x2607: 0x000a, 0x2608: 0x000a, 0x2609: 0x000a, 0x260a: 0x000a, 0x260b: 0x000a,\n\t0x260c: 0x000a, 0x2610: 0x000a, 0x2611: 0x000a,\n\t0x2612: 0x000a, 0x2613: 0x000a, 0x2614: 0x000a, 0x2615: 0x000a, 0x2616: 0x000a, 0x2617: 0x000a,\n\t0x2618: 0x000a, 0x2619: 0x000a, 0x261a: 0x000a, 0x261b: 0x000a,\n\t0x2620: 0x000a,\n\t// Block 0x99, offset 0x2640\n\t0x267d: 0x000c,\n\t// Block 0x9a, offset 0x2680\n\t0x26a0: 0x000c, 0x26a1: 0x0002, 0x26a2: 0x0002, 0x26a3: 0x0002,\n\t0x26a4: 0x0002, 0x26a5: 0x0002, 0x26a6: 0x0002, 0x26a7: 0x0002, 0x26a8: 0x0002, 0x26a9: 0x0002,\n\t0x26aa: 0x0002, 0x26ab: 0x0002, 0x26ac: 0x0002, 0x26ad: 0x0002, 0x26ae: 0x0002, 0x26af: 0x0002,\n\t0x26b0: 0x0002, 0x26b1: 0x0002, 0x26b2: 0x0002, 0x26b3: 0x0002, 0x26b4: 0x0002, 0x26b5: 0x0002,\n\t0x26b6: 0x0002, 0x26b7: 0x0002, 0x26b8: 0x0002, 0x26b9: 0x0002, 0x26ba: 0x0002, 0x26bb: 0x0002,\n\t// Block 0x9b, offset 0x26c0\n\t0x26f6: 0x000c, 0x26f7: 0x000c, 0x26f8: 0x000c, 0x26f9: 0x000c, 0x26fa: 0x000c,\n\t// Block 0x9c, offset 0x2700\n\t0x2700: 0x0001, 0x2701: 0x0001, 0x2702: 0x0001, 0x2703: 0x0001, 0x2704: 0x0001, 0x2705: 0x0001,\n\t0x2706: 0x0001, 0x2707: 0x0001, 0x2708: 0x0001, 0x2709: 0x0001, 0x270a: 0x0001, 0x270b: 0x0001,\n\t0x270c: 0x0001, 0x270d: 0x0001, 0x270e: 0x0001, 0x270f: 0x0001, 0x2710: 0x0001, 0x2711: 0x0001,\n\t0x2712: 0x0001, 0x2713: 0x0001, 0x2714: 0x0001, 0x2715: 0x0001, 0x2716: 0x0001, 0x2717: 0x0001,\n\t0x2718: 0x0001, 0x2719: 0x0001, 0x271a: 0x0001, 0x271b: 0x0001, 0x271c: 0x0001, 0x271d: 0x0001,\n\t0x271e: 0x0001, 0x271f: 0x0001, 0x2720: 0x0001, 0x2721: 0x0001, 0x2722: 0x0001, 0x2723: 0x0001,\n\t0x2724: 0x0001, 0x2725: 0x0001, 0x2726: 0x0001, 0x2727: 0x0001, 0x2728: 0x0001, 0x2729: 0x0001,\n\t0x272a: 0x0001, 0x272b: 0x0001, 0x272c: 0x0001, 0x272d: 0x0001, 0x272e: 0x0001, 0x272f: 0x0001,\n\t0x2730: 0x0001, 0x2731: 0x0001, 0x2732: 0x0001, 0x2733: 0x0001, 0x2734: 0x0001, 0x2735: 0x0001,\n\t0x2736: 0x0001, 0x2737: 0x0001, 0x2738: 0x0001, 0x2739: 0x0001, 0x273a: 0x0001, 0x273b: 0x0001,\n\t0x273c: 0x0001, 0x273d: 0x0001, 0x273e: 0x0001, 0x273f: 0x0001,\n\t// Block 0x9d, offset 0x2740\n\t0x2740: 0x0001, 0x2741: 0x0001, 0x2742: 0x0001, 0x2743: 0x0001, 0x2744: 0x0001, 0x2745: 0x0001,\n\t0x2746: 0x0001, 0x2747: 0x0001, 0x2748: 0x0001, 0x2749: 0x0001, 0x274a: 0x0001, 0x274b: 0x0001,\n\t0x274c: 0x0001, 0x274d: 0x0001, 0x274e: 0x0001, 0x274f: 0x0001, 0x2750: 0x0001, 0x2751: 0x0001,\n\t0x2752: 0x0001, 0x2753: 0x0001, 0x2754: 0x0001, 0x2755: 0x0001, 0x2756: 0x0001, 0x2757: 0x0001,\n\t0x2758: 0x0001, 0x2759: 0x0001, 0x275a: 0x0001, 0x275b: 0x0001, 0x275c: 0x0001, 0x275d: 0x0001,\n\t0x275e: 0x0001, 0x275f: 0x000a, 0x2760: 0x0001, 0x2761: 0x0001, 0x2762: 0x0001, 0x2763: 0x0001,\n\t0x2764: 0x0001, 0x2765: 0x0001, 0x2766: 0x0001, 0x2767: 0x0001, 0x2768: 0x0001, 0x2769: 0x0001,\n\t0x276a: 0x0001, 0x276b: 0x0001, 0x276c: 0x0001, 0x276d: 0x0001, 0x276e: 0x0001, 0x276f: 0x0001,\n\t0x2770: 0x0001, 0x2771: 0x0001, 0x2772: 0x0001, 0x2773: 0x0001, 0x2774: 0x0001, 0x2775: 0x0001,\n\t0x2776: 0x0001, 0x2777: 0x0001, 0x2778: 0x0001, 0x2779: 0x0001, 0x277a: 0x0001, 0x277b: 0x0001,\n\t0x277c: 0x0001, 0x277d: 0x0001, 0x277e: 0x0001, 0x277f: 0x0001,\n\t// Block 0x9e, offset 0x2780\n\t0x2780: 0x0001, 0x2781: 0x000c, 0x2782: 0x000c, 0x2783: 0x000c, 0x2784: 0x0001, 0x2785: 0x000c,\n\t0x2786: 0x000c, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001,\n\t0x278c: 0x000c, 0x278d: 0x000c, 0x278e: 0x000c, 0x278f: 0x000c, 0x2790: 0x0001, 0x2791: 0x0001,\n\t0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001,\n\t0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001,\n\t0x279e: 0x0001, 0x279f: 0x0001, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001,\n\t0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001,\n\t0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001,\n\t0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001,\n\t0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x000c, 0x27b9: 0x000c, 0x27ba: 0x000c, 0x27bb: 0x0001,\n\t0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x000c,\n\t// Block 0x9f, offset 0x27c0\n\t0x27c0: 0x0001, 0x27c1: 0x0001, 0x27c2: 0x0001, 0x27c3: 0x0001, 0x27c4: 0x0001, 0x27c5: 0x0001,\n\t0x27c6: 0x0001, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001,\n\t0x27cc: 0x0001, 0x27cd: 0x0001, 0x27ce: 0x0001, 0x27cf: 0x0001, 0x27d0: 0x0001, 0x27d1: 0x0001,\n\t0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001,\n\t0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001,\n\t0x27de: 0x0001, 0x27df: 0x0001, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001,\n\t0x27e4: 0x0001, 0x27e5: 0x000c, 0x27e6: 0x000c, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001,\n\t0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001,\n\t0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001,\n\t0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x0001, 0x27f9: 0x0001, 0x27fa: 0x0001, 0x27fb: 0x0001,\n\t0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x0001,\n\t// Block 0xa0, offset 0x2800\n\t0x2800: 0x0001, 0x2801: 0x0001, 0x2802: 0x0001, 0x2803: 0x0001, 0x2804: 0x0001, 0x2805: 0x0001,\n\t0x2806: 0x0001, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001,\n\t0x280c: 0x0001, 0x280d: 0x0001, 0x280e: 0x0001, 0x280f: 0x0001, 0x2810: 0x0001, 0x2811: 0x0001,\n\t0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001,\n\t0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001,\n\t0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001,\n\t0x2824: 0x0001, 0x2825: 0x0001, 0x2826: 0x0001, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001,\n\t0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001,\n\t0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001,\n\t0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x0001, 0x2839: 0x000a, 0x283a: 0x000a, 0x283b: 0x000a,\n\t0x283c: 0x000a, 0x283d: 0x000a, 0x283e: 0x000a, 0x283f: 0x000a,\n\t// Block 0xa1, offset 0x2840\n\t0x2840: 0x0001, 0x2841: 0x0001, 0x2842: 0x0001, 0x2843: 0x0001, 0x2844: 0x0001, 0x2845: 0x0001,\n\t0x2846: 0x0001, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001,\n\t0x284c: 0x0001, 0x284d: 0x0001, 0x284e: 0x0001, 0x284f: 0x0001, 0x2850: 0x0001, 0x2851: 0x0001,\n\t0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001,\n\t0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001,\n\t0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0005, 0x2861: 0x0005, 0x2862: 0x0005, 0x2863: 0x0005,\n\t0x2864: 0x0005, 0x2865: 0x0005, 0x2866: 0x0005, 0x2867: 0x0005, 0x2868: 0x0005, 0x2869: 0x0005,\n\t0x286a: 0x0005, 0x286b: 0x0005, 0x286c: 0x0005, 0x286d: 0x0005, 0x286e: 0x0005, 0x286f: 0x0005,\n\t0x2870: 0x0005, 0x2871: 0x0005, 0x2872: 0x0005, 0x2873: 0x0005, 0x2874: 0x0005, 0x2875: 0x0005,\n\t0x2876: 0x0005, 0x2877: 0x0005, 0x2878: 0x0005, 0x2879: 0x0005, 0x287a: 0x0005, 0x287b: 0x0005,\n\t0x287c: 0x0005, 0x287d: 0x0005, 0x287e: 0x0005, 0x287f: 0x0001,\n\t// Block 0xa2, offset 0x2880\n\t0x2881: 0x000c,\n\t0x28b8: 0x000c, 0x28b9: 0x000c, 0x28ba: 0x000c, 0x28bb: 0x000c,\n\t0x28bc: 0x000c, 0x28bd: 0x000c, 0x28be: 0x000c, 0x28bf: 0x000c,\n\t// Block 0xa3, offset 0x28c0\n\t0x28c0: 0x000c, 0x28c1: 0x000c, 0x28c2: 0x000c, 0x28c3: 0x000c, 0x28c4: 0x000c, 0x28c5: 0x000c,\n\t0x28c6: 0x000c,\n\t0x28d2: 0x000a, 0x28d3: 0x000a, 0x28d4: 0x000a, 0x28d5: 0x000a, 0x28d6: 0x000a, 0x28d7: 0x000a,\n\t0x28d8: 0x000a, 0x28d9: 0x000a, 0x28da: 0x000a, 0x28db: 0x000a, 0x28dc: 0x000a, 0x28dd: 0x000a,\n\t0x28de: 0x000a, 0x28df: 0x000a, 0x28e0: 0x000a, 0x28e1: 0x000a, 0x28e2: 0x000a, 0x28e3: 0x000a,\n\t0x28e4: 0x000a, 0x28e5: 0x000a,\n\t0x28ff: 0x000c,\n\t// Block 0xa4, offset 0x2900\n\t0x2900: 0x000c, 0x2901: 0x000c,\n\t0x2933: 0x000c, 0x2934: 0x000c, 0x2935: 0x000c,\n\t0x2936: 0x000c, 0x2939: 0x000c, 0x293a: 0x000c,\n\t// Block 0xa5, offset 0x2940\n\t0x2940: 0x000c, 0x2941: 0x000c, 0x2942: 0x000c,\n\t0x2967: 0x000c, 0x2968: 0x000c, 0x2969: 0x000c,\n\t0x296a: 0x000c, 0x296b: 0x000c, 0x296d: 0x000c, 0x296e: 0x000c, 0x296f: 0x000c,\n\t0x2970: 0x000c, 0x2971: 0x000c, 0x2972: 0x000c, 0x2973: 0x000c, 0x2974: 0x000c,\n\t// Block 0xa6, offset 0x2980\n\t0x29b3: 0x000c,\n\t// Block 0xa7, offset 0x29c0\n\t0x29c0: 0x000c, 0x29c1: 0x000c,\n\t0x29f6: 0x000c, 0x29f7: 0x000c, 0x29f8: 0x000c, 0x29f9: 0x000c, 0x29fa: 0x000c, 0x29fb: 0x000c,\n\t0x29fc: 0x000c, 0x29fd: 0x000c, 0x29fe: 0x000c,\n\t// Block 0xa8, offset 0x2a00\n\t0x2a0a: 0x000c, 0x2a0b: 0x000c,\n\t0x2a0c: 0x000c,\n\t// Block 0xa9, offset 0x2a40\n\t0x2a6f: 0x000c,\n\t0x2a70: 0x000c, 0x2a71: 0x000c, 0x2a74: 0x000c,\n\t0x2a76: 0x000c, 0x2a77: 0x000c,\n\t0x2a7e: 0x000c,\n\t// Block 0xaa, offset 0x2a80\n\t0x2a9f: 0x000c, 0x2aa3: 0x000c,\n\t0x2aa4: 0x000c, 0x2aa5: 0x000c, 0x2aa6: 0x000c, 0x2aa7: 0x000c, 0x2aa8: 0x000c, 0x2aa9: 0x000c,\n\t0x2aaa: 0x000c,\n\t// Block 0xab, offset 0x2ac0\n\t0x2ac0: 0x000c, 0x2ac1: 0x000c,\n\t0x2afc: 0x000c,\n\t// Block 0xac, offset 0x2b00\n\t0x2b00: 0x000c,\n\t0x2b26: 0x000c, 0x2b27: 0x000c, 0x2b28: 0x000c, 0x2b29: 0x000c,\n\t0x2b2a: 0x000c, 0x2b2b: 0x000c, 0x2b2c: 0x000c,\n\t0x2b30: 0x000c, 0x2b31: 0x000c, 0x2b32: 0x000c, 0x2b33: 0x000c, 0x2b34: 0x000c,\n\t// Block 0xad, offset 0x2b40\n\t0x2b78: 0x000c, 0x2b79: 0x000c, 0x2b7a: 0x000c, 0x2b7b: 0x000c,\n\t0x2b7c: 0x000c, 0x2b7d: 0x000c, 0x2b7e: 0x000c, 0x2b7f: 0x000c,\n\t// Block 0xae, offset 0x2b80\n\t0x2b82: 0x000c, 0x2b83: 0x000c, 0x2b84: 0x000c,\n\t0x2b86: 0x000c,\n\t// Block 0xaf, offset 0x2bc0\n\t0x2bf3: 0x000c, 0x2bf4: 0x000c, 0x2bf5: 0x000c,\n\t0x2bf6: 0x000c, 0x2bf7: 0x000c, 0x2bf8: 0x000c, 0x2bfa: 0x000c,\n\t0x2bff: 0x000c,\n\t// Block 0xb0, offset 0x2c00\n\t0x2c00: 0x000c, 0x2c02: 0x000c, 0x2c03: 0x000c,\n\t// Block 0xb1, offset 0x2c40\n\t0x2c72: 0x000c, 0x2c73: 0x000c, 0x2c74: 0x000c, 0x2c75: 0x000c,\n\t0x2c7c: 0x000c, 0x2c7d: 0x000c, 0x2c7f: 0x000c,\n\t// Block 0xb2, offset 0x2c80\n\t0x2c80: 0x000c,\n\t0x2c9c: 0x000c, 0x2c9d: 0x000c,\n\t// Block 0xb3, offset 0x2cc0\n\t0x2cf3: 0x000c, 0x2cf4: 0x000c, 0x2cf5: 0x000c,\n\t0x2cf6: 0x000c, 0x2cf7: 0x000c, 0x2cf8: 0x000c, 0x2cf9: 0x000c, 0x2cfa: 0x000c,\n\t0x2cfd: 0x000c, 0x2cff: 0x000c,\n\t// Block 0xb4, offset 0x2d00\n\t0x2d00: 0x000c,\n\t0x2d20: 0x000a, 0x2d21: 0x000a, 0x2d22: 0x000a, 0x2d23: 0x000a,\n\t0x2d24: 0x000a, 0x2d25: 0x000a, 0x2d26: 0x000a, 0x2d27: 0x000a, 0x2d28: 0x000a, 0x2d29: 0x000a,\n\t0x2d2a: 0x000a, 0x2d2b: 0x000a, 0x2d2c: 0x000a,\n\t// Block 0xb5, offset 0x2d40\n\t0x2d6b: 0x000c, 0x2d6d: 0x000c,\n\t0x2d70: 0x000c, 0x2d71: 0x000c, 0x2d72: 0x000c, 0x2d73: 0x000c, 0x2d74: 0x000c, 0x2d75: 0x000c,\n\t0x2d77: 0x000c,\n\t// Block 0xb6, offset 0x2d80\n\t0x2d9d: 0x000c,\n\t0x2d9e: 0x000c, 0x2d9f: 0x000c, 0x2da2: 0x000c, 0x2da3: 0x000c,\n\t0x2da4: 0x000c, 0x2da5: 0x000c, 0x2da7: 0x000c, 0x2da8: 0x000c, 0x2da9: 0x000c,\n\t0x2daa: 0x000c, 0x2dab: 0x000c,\n\t// Block 0xb7, offset 0x2dc0\n\t0x2dc1: 0x000c, 0x2dc2: 0x000c, 0x2dc3: 0x000c, 0x2dc4: 0x000c, 0x2dc5: 0x000c,\n\t0x2dc6: 0x000c, 0x2dc9: 0x000c, 0x2dca: 0x000c,\n\t0x2df3: 0x000c, 0x2df4: 0x000c, 0x2df5: 0x000c,\n\t0x2df6: 0x000c, 0x2df7: 0x000c, 0x2df8: 0x000c, 0x2dfb: 0x000c,\n\t0x2dfc: 0x000c, 0x2dfd: 0x000c, 0x2dfe: 0x000c,\n\t// Block 0xb8, offset 0x2e00\n\t0x2e07: 0x000c,\n\t0x2e11: 0x000c,\n\t0x2e12: 0x000c, 0x2e13: 0x000c, 0x2e14: 0x000c, 0x2e15: 0x000c, 0x2e16: 0x000c,\n\t0x2e19: 0x000c, 0x2e1a: 0x000c, 0x2e1b: 0x000c,\n\t// Block 0xb9, offset 0x2e40\n\t0x2e4a: 0x000c, 0x2e4b: 0x000c,\n\t0x2e4c: 0x000c, 0x2e4d: 0x000c, 0x2e4e: 0x000c, 0x2e4f: 0x000c, 0x2e50: 0x000c, 0x2e51: 0x000c,\n\t0x2e52: 0x000c, 0x2e53: 0x000c, 0x2e54: 0x000c, 0x2e55: 0x000c, 0x2e56: 0x000c,\n\t0x2e58: 0x000c, 0x2e59: 0x000c,\n\t// Block 0xba, offset 0x2e80\n\t0x2eb0: 0x000c, 0x2eb1: 0x000c, 0x2eb2: 0x000c, 0x2eb3: 0x000c, 0x2eb4: 0x000c, 0x2eb5: 0x000c,\n\t0x2eb6: 0x000c, 0x2eb8: 0x000c, 0x2eb9: 0x000c, 0x2eba: 0x000c, 0x2ebb: 0x000c,\n\t0x2ebc: 0x000c, 0x2ebd: 0x000c,\n\t// Block 0xbb, offset 0x2ec0\n\t0x2ed2: 0x000c, 0x2ed3: 0x000c, 0x2ed4: 0x000c, 0x2ed5: 0x000c, 0x2ed6: 0x000c, 0x2ed7: 0x000c,\n\t0x2ed8: 0x000c, 0x2ed9: 0x000c, 0x2eda: 0x000c, 0x2edb: 0x000c, 0x2edc: 0x000c, 0x2edd: 0x000c,\n\t0x2ede: 0x000c, 0x2edf: 0x000c, 0x2ee0: 0x000c, 0x2ee1: 0x000c, 0x2ee2: 0x000c, 0x2ee3: 0x000c,\n\t0x2ee4: 0x000c, 0x2ee5: 0x000c, 0x2ee6: 0x000c, 0x2ee7: 0x000c,\n\t0x2eea: 0x000c, 0x2eeb: 0x000c, 0x2eec: 0x000c, 0x2eed: 0x000c, 0x2eee: 0x000c, 0x2eef: 0x000c,\n\t0x2ef0: 0x000c, 0x2ef2: 0x000c, 0x2ef3: 0x000c, 0x2ef5: 0x000c,\n\t0x2ef6: 0x000c,\n\t// Block 0xbc, offset 0x2f00\n\t0x2f31: 0x000c, 0x2f32: 0x000c, 0x2f33: 0x000c, 0x2f34: 0x000c, 0x2f35: 0x000c,\n\t0x2f36: 0x000c, 0x2f3a: 0x000c,\n\t0x2f3c: 0x000c, 0x2f3d: 0x000c, 0x2f3f: 0x000c,\n\t// Block 0xbd, offset 0x2f40\n\t0x2f40: 0x000c, 0x2f41: 0x000c, 0x2f42: 0x000c, 0x2f43: 0x000c, 0x2f44: 0x000c, 0x2f45: 0x000c,\n\t0x2f47: 0x000c,\n\t// Block 0xbe, offset 0x2f80\n\t0x2fb0: 0x000c, 0x2fb1: 0x000c, 0x2fb2: 0x000c, 0x2fb3: 0x000c, 0x2fb4: 0x000c,\n\t// Block 0xbf, offset 0x2fc0\n\t0x2ff0: 0x000c, 0x2ff1: 0x000c, 0x2ff2: 0x000c, 0x2ff3: 0x000c, 0x2ff4: 0x000c, 0x2ff5: 0x000c,\n\t0x2ff6: 0x000c,\n\t// Block 0xc0, offset 0x3000\n\t0x300f: 0x000c, 0x3010: 0x000c, 0x3011: 0x000c,\n\t0x3012: 0x000c,\n\t// Block 0xc1, offset 0x3040\n\t0x305d: 0x000c,\n\t0x305e: 0x000c, 0x3060: 0x000b, 0x3061: 0x000b, 0x3062: 0x000b, 0x3063: 0x000b,\n\t// Block 0xc2, offset 0x3080\n\t0x30a7: 0x000c, 0x30a8: 0x000c, 0x30a9: 0x000c,\n\t0x30b3: 0x000b, 0x30b4: 0x000b, 0x30b5: 0x000b,\n\t0x30b6: 0x000b, 0x30b7: 0x000b, 0x30b8: 0x000b, 0x30b9: 0x000b, 0x30ba: 0x000b, 0x30bb: 0x000c,\n\t0x30bc: 0x000c, 0x30bd: 0x000c, 0x30be: 0x000c, 0x30bf: 0x000c,\n\t// Block 0xc3, offset 0x30c0\n\t0x30c0: 0x000c, 0x30c1: 0x000c, 0x30c2: 0x000c, 0x30c5: 0x000c,\n\t0x30c6: 0x000c, 0x30c7: 0x000c, 0x30c8: 0x000c, 0x30c9: 0x000c, 0x30ca: 0x000c, 0x30cb: 0x000c,\n\t0x30ea: 0x000c, 0x30eb: 0x000c, 0x30ec: 0x000c, 0x30ed: 0x000c,\n\t// Block 0xc4, offset 0x3100\n\t0x3100: 0x000a, 0x3101: 0x000a, 0x3102: 0x000c, 0x3103: 0x000c, 0x3104: 0x000c, 0x3105: 0x000a,\n\t// Block 0xc5, offset 0x3140\n\t0x3140: 0x000a, 0x3141: 0x000a, 0x3142: 0x000a, 0x3143: 0x000a, 0x3144: 0x000a, 0x3145: 0x000a,\n\t0x3146: 0x000a, 0x3147: 0x000a, 0x3148: 0x000a, 0x3149: 0x000a, 0x314a: 0x000a, 0x314b: 0x000a,\n\t0x314c: 0x000a, 0x314d: 0x000a, 0x314e: 0x000a, 0x314f: 0x000a, 0x3150: 0x000a, 0x3151: 0x000a,\n\t0x3152: 0x000a, 0x3153: 0x000a, 0x3154: 0x000a, 0x3155: 0x000a, 0x3156: 0x000a,\n\t// Block 0xc6, offset 0x3180\n\t0x319b: 0x000a,\n\t// Block 0xc7, offset 0x31c0\n\t0x31d5: 0x000a,\n\t// Block 0xc8, offset 0x3200\n\t0x320f: 0x000a,\n\t// Block 0xc9, offset 0x3240\n\t0x3249: 0x000a,\n\t// Block 0xca, offset 0x3280\n\t0x3283: 0x000a,\n\t0x328e: 0x0002, 0x328f: 0x0002, 0x3290: 0x0002, 0x3291: 0x0002,\n\t0x3292: 0x0002, 0x3293: 0x0002, 0x3294: 0x0002, 0x3295: 0x0002, 0x3296: 0x0002, 0x3297: 0x0002,\n\t0x3298: 0x0002, 0x3299: 0x0002, 0x329a: 0x0002, 0x329b: 0x0002, 0x329c: 0x0002, 0x329d: 0x0002,\n\t0x329e: 0x0002, 0x329f: 0x0002, 0x32a0: 0x0002, 0x32a1: 0x0002, 0x32a2: 0x0002, 0x32a3: 0x0002,\n\t0x32a4: 0x0002, 0x32a5: 0x0002, 0x32a6: 0x0002, 0x32a7: 0x0002, 0x32a8: 0x0002, 0x32a9: 0x0002,\n\t0x32aa: 0x0002, 0x32ab: 0x0002, 0x32ac: 0x0002, 0x32ad: 0x0002, 0x32ae: 0x0002, 0x32af: 0x0002,\n\t0x32b0: 0x0002, 0x32b1: 0x0002, 0x32b2: 0x0002, 0x32b3: 0x0002, 0x32b4: 0x0002, 0x32b5: 0x0002,\n\t0x32b6: 0x0002, 0x32b7: 0x0002, 0x32b8: 0x0002, 0x32b9: 0x0002, 0x32ba: 0x0002, 0x32bb: 0x0002,\n\t0x32bc: 0x0002, 0x32bd: 0x0002, 0x32be: 0x0002, 0x32bf: 0x0002,\n\t// Block 0xcb, offset 0x32c0\n\t0x32c0: 0x000c, 0x32c1: 0x000c, 0x32c2: 0x000c, 0x32c3: 0x000c, 0x32c4: 0x000c, 0x32c5: 0x000c,\n\t0x32c6: 0x000c, 0x32c7: 0x000c, 0x32c8: 0x000c, 0x32c9: 0x000c, 0x32ca: 0x000c, 0x32cb: 0x000c,\n\t0x32cc: 0x000c, 0x32cd: 0x000c, 0x32ce: 0x000c, 0x32cf: 0x000c, 0x32d0: 0x000c, 0x32d1: 0x000c,\n\t0x32d2: 0x000c, 0x32d3: 0x000c, 0x32d4: 0x000c, 0x32d5: 0x000c, 0x32d6: 0x000c, 0x32d7: 0x000c,\n\t0x32d8: 0x000c, 0x32d9: 0x000c, 0x32da: 0x000c, 0x32db: 0x000c, 0x32dc: 0x000c, 0x32dd: 0x000c,\n\t0x32de: 0x000c, 0x32df: 0x000c, 0x32e0: 0x000c, 0x32e1: 0x000c, 0x32e2: 0x000c, 0x32e3: 0x000c,\n\t0x32e4: 0x000c, 0x32e5: 0x000c, 0x32e6: 0x000c, 0x32e7: 0x000c, 0x32e8: 0x000c, 0x32e9: 0x000c,\n\t0x32ea: 0x000c, 0x32eb: 0x000c, 0x32ec: 0x000c, 0x32ed: 0x000c, 0x32ee: 0x000c, 0x32ef: 0x000c,\n\t0x32f0: 0x000c, 0x32f1: 0x000c, 0x32f2: 0x000c, 0x32f3: 0x000c, 0x32f4: 0x000c, 0x32f5: 0x000c,\n\t0x32f6: 0x000c, 0x32fb: 0x000c,\n\t0x32fc: 0x000c, 0x32fd: 0x000c, 0x32fe: 0x000c, 0x32ff: 0x000c,\n\t// Block 0xcc, offset 0x3300\n\t0x3300: 0x000c, 0x3301: 0x000c, 0x3302: 0x000c, 0x3303: 0x000c, 0x3304: 0x000c, 0x3305: 0x000c,\n\t0x3306: 0x000c, 0x3307: 0x000c, 0x3308: 0x000c, 0x3309: 0x000c, 0x330a: 0x000c, 0x330b: 0x000c,\n\t0x330c: 0x000c, 0x330d: 0x000c, 0x330e: 0x000c, 0x330f: 0x000c, 0x3310: 0x000c, 0x3311: 0x000c,\n\t0x3312: 0x000c, 0x3313: 0x000c, 0x3314: 0x000c, 0x3315: 0x000c, 0x3316: 0x000c, 0x3317: 0x000c,\n\t0x3318: 0x000c, 0x3319: 0x000c, 0x331a: 0x000c, 0x331b: 0x000c, 0x331c: 0x000c, 0x331d: 0x000c,\n\t0x331e: 0x000c, 0x331f: 0x000c, 0x3320: 0x000c, 0x3321: 0x000c, 0x3322: 0x000c, 0x3323: 0x000c,\n\t0x3324: 0x000c, 0x3325: 0x000c, 0x3326: 0x000c, 0x3327: 0x000c, 0x3328: 0x000c, 0x3329: 0x000c,\n\t0x332a: 0x000c, 0x332b: 0x000c, 0x332c: 0x000c,\n\t0x3335: 0x000c,\n\t// Block 0xcd, offset 0x3340\n\t0x3344: 0x000c,\n\t0x335b: 0x000c, 0x335c: 0x000c, 0x335d: 0x000c,\n\t0x335e: 0x000c, 0x335f: 0x000c, 0x3361: 0x000c, 0x3362: 0x000c, 0x3363: 0x000c,\n\t0x3364: 0x000c, 0x3365: 0x000c, 0x3366: 0x000c, 0x3367: 0x000c, 0x3368: 0x000c, 0x3369: 0x000c,\n\t0x336a: 0x000c, 0x336b: 0x000c, 0x336c: 0x000c, 0x336d: 0x000c, 0x336e: 0x000c, 0x336f: 0x000c,\n\t// Block 0xce, offset 0x3380\n\t0x3380: 0x000c, 0x3381: 0x000c, 0x3382: 0x000c, 0x3383: 0x000c, 0x3384: 0x000c, 0x3385: 0x000c,\n\t0x3386: 0x000c, 0x3388: 0x000c, 0x3389: 0x000c, 0x338a: 0x000c, 0x338b: 0x000c,\n\t0x338c: 0x000c, 0x338d: 0x000c, 0x338e: 0x000c, 0x338f: 0x000c, 0x3390: 0x000c, 0x3391: 0x000c,\n\t0x3392: 0x000c, 0x3393: 0x000c, 0x3394: 0x000c, 0x3395: 0x000c, 0x3396: 0x000c, 0x3397: 0x000c,\n\t0x3398: 0x000c, 0x339b: 0x000c, 0x339c: 0x000c, 0x339d: 0x000c,\n\t0x339e: 0x000c, 0x339f: 0x000c, 0x33a0: 0x000c, 0x33a1: 0x000c, 0x33a3: 0x000c,\n\t0x33a4: 0x000c, 0x33a6: 0x000c, 0x33a7: 0x000c, 0x33a8: 0x000c, 0x33a9: 0x000c,\n\t0x33aa: 0x000c,\n\t// Block 0xcf, offset 0x33c0\n\t0x33c0: 0x0001, 0x33c1: 0x0001, 0x33c2: 0x0001, 0x33c3: 0x0001, 0x33c4: 0x0001, 0x33c5: 0x0001,\n\t0x33c6: 0x0001, 0x33c7: 0x0001, 0x33c8: 0x0001, 0x33c9: 0x0001, 0x33ca: 0x0001, 0x33cb: 0x0001,\n\t0x33cc: 0x0001, 0x33cd: 0x0001, 0x33ce: 0x0001, 0x33cf: 0x0001, 0x33d0: 0x000c, 0x33d1: 0x000c,\n\t0x33d2: 0x000c, 0x33d3: 0x000c, 0x33d4: 0x000c, 0x33d5: 0x000c, 0x33d6: 0x000c, 0x33d7: 0x0001,\n\t0x33d8: 0x0001, 0x33d9: 0x0001, 0x33da: 0x0001, 0x33db: 0x0001, 0x33dc: 0x0001, 0x33dd: 0x0001,\n\t0x33de: 0x0001, 0x33df: 0x0001, 0x33e0: 0x0001, 0x33e1: 0x0001, 0x33e2: 0x0001, 0x33e3: 0x0001,\n\t0x33e4: 0x0001, 0x33e5: 0x0001, 0x33e6: 0x0001, 0x33e7: 0x0001, 0x33e8: 0x0001, 0x33e9: 0x0001,\n\t0x33ea: 0x0001, 0x33eb: 0x0001, 0x33ec: 0x0001, 0x33ed: 0x0001, 0x33ee: 0x0001, 0x33ef: 0x0001,\n\t0x33f0: 0x0001, 0x33f1: 0x0001, 0x33f2: 0x0001, 0x33f3: 0x0001, 0x33f4: 0x0001, 0x33f5: 0x0001,\n\t0x33f6: 0x0001, 0x33f7: 0x0001, 0x33f8: 0x0001, 0x33f9: 0x0001, 0x33fa: 0x0001, 0x33fb: 0x0001,\n\t0x33fc: 0x0001, 0x33fd: 0x0001, 0x33fe: 0x0001, 0x33ff: 0x0001,\n\t// Block 0xd0, offset 0x3400\n\t0x3400: 0x0001, 0x3401: 0x0001, 0x3402: 0x0001, 0x3403: 0x0001, 0x3404: 0x000c, 0x3405: 0x000c,\n\t0x3406: 0x000c, 0x3407: 0x000c, 0x3408: 0x000c, 0x3409: 0x000c, 0x340a: 0x000c, 0x340b: 0x0001,\n\t0x340c: 0x0001, 0x340d: 0x0001, 0x340e: 0x0001, 0x340f: 0x0001, 0x3410: 0x0001, 0x3411: 0x0001,\n\t0x3412: 0x0001, 0x3413: 0x0001, 0x3414: 0x0001, 0x3415: 0x0001, 0x3416: 0x0001, 0x3417: 0x0001,\n\t0x3418: 0x0001, 0x3419: 0x0001, 0x341a: 0x0001, 0x341b: 0x0001, 0x341c: 0x0001, 0x341d: 0x0001,\n\t0x341e: 0x0001, 0x341f: 0x0001, 0x3420: 0x0001, 0x3421: 0x0001, 0x3422: 0x0001, 0x3423: 0x0001,\n\t0x3424: 0x0001, 0x3425: 0x0001, 0x3426: 0x0001, 0x3427: 0x0001, 0x3428: 0x0001, 0x3429: 0x0001,\n\t0x342a: 0x0001, 0x342b: 0x0001, 0x342c: 0x0001, 0x342d: 0x0001, 0x342e: 0x0001, 0x342f: 0x0001,\n\t0x3430: 0x0001, 0x3431: 0x0001, 0x3432: 0x0001, 0x3433: 0x0001, 0x3434: 0x0001, 0x3435: 0x0001,\n\t0x3436: 0x0001, 0x3437: 0x0001, 0x3438: 0x0001, 0x3439: 0x0001, 0x343a: 0x0001, 0x343b: 0x0001,\n\t0x343c: 0x0001, 0x343d: 0x0001, 0x343e: 0x0001, 0x343f: 0x0001,\n\t// Block 0xd1, offset 0x3440\n\t0x3440: 0x000d, 0x3441: 0x000d, 0x3442: 0x000d, 0x3443: 0x000d, 0x3444: 0x000d, 0x3445: 0x000d,\n\t0x3446: 0x000d, 0x3447: 0x000d, 0x3448: 0x000d, 0x3449: 0x000d, 0x344a: 0x000d, 0x344b: 0x000d,\n\t0x344c: 0x000d, 0x344d: 0x000d, 0x344e: 0x000d, 0x344f: 0x000d, 0x3450: 0x000d, 0x3451: 0x000d,\n\t0x3452: 0x000d, 0x3453: 0x000d, 0x3454: 0x000d, 0x3455: 0x000d, 0x3456: 0x000d, 0x3457: 0x000d,\n\t0x3458: 0x000d, 0x3459: 0x000d, 0x345a: 0x000d, 0x345b: 0x000d, 0x345c: 0x000d, 0x345d: 0x000d,\n\t0x345e: 0x000d, 0x345f: 0x000d, 0x3460: 0x000d, 0x3461: 0x000d, 0x3462: 0x000d, 0x3463: 0x000d,\n\t0x3464: 0x000d, 0x3465: 0x000d, 0x3466: 0x000d, 0x3467: 0x000d, 0x3468: 0x000d, 0x3469: 0x000d,\n\t0x346a: 0x000d, 0x346b: 0x000d, 0x346c: 0x000d, 0x346d: 0x000d, 0x346e: 0x000d, 0x346f: 0x000d,\n\t0x3470: 0x000a, 0x3471: 0x000a, 0x3472: 0x000d, 0x3473: 0x000d, 0x3474: 0x000d, 0x3475: 0x000d,\n\t0x3476: 0x000d, 0x3477: 0x000d, 0x3478: 0x000d, 0x3479: 0x000d, 0x347a: 0x000d, 0x347b: 0x000d,\n\t0x347c: 0x000d, 0x347d: 0x000d, 0x347e: 0x000d, 0x347f: 0x000d,\n\t// Block 0xd2, offset 0x3480\n\t0x3480: 0x000a, 0x3481: 0x000a, 0x3482: 0x000a, 0x3483: 0x000a, 0x3484: 0x000a, 0x3485: 0x000a,\n\t0x3486: 0x000a, 0x3487: 0x000a, 0x3488: 0x000a, 0x3489: 0x000a, 0x348a: 0x000a, 0x348b: 0x000a,\n\t0x348c: 0x000a, 0x348d: 0x000a, 0x348e: 0x000a, 0x348f: 0x000a, 0x3490: 0x000a, 0x3491: 0x000a,\n\t0x3492: 0x000a, 0x3493: 0x000a, 0x3494: 0x000a, 0x3495: 0x000a, 0x3496: 0x000a, 0x3497: 0x000a,\n\t0x3498: 0x000a, 0x3499: 0x000a, 0x349a: 0x000a, 0x349b: 0x000a, 0x349c: 0x000a, 0x349d: 0x000a,\n\t0x349e: 0x000a, 0x349f: 0x000a, 0x34a0: 0x000a, 0x34a1: 0x000a, 0x34a2: 0x000a, 0x34a3: 0x000a,\n\t0x34a4: 0x000a, 0x34a5: 0x000a, 0x34a6: 0x000a, 0x34a7: 0x000a, 0x34a8: 0x000a, 0x34a9: 0x000a,\n\t0x34aa: 0x000a, 0x34ab: 0x000a,\n\t0x34b0: 0x000a, 0x34b1: 0x000a, 0x34b2: 0x000a, 0x34b3: 0x000a, 0x34b4: 0x000a, 0x34b5: 0x000a,\n\t0x34b6: 0x000a, 0x34b7: 0x000a, 0x34b8: 0x000a, 0x34b9: 0x000a, 0x34ba: 0x000a, 0x34bb: 0x000a,\n\t0x34bc: 0x000a, 0x34bd: 0x000a, 0x34be: 0x000a, 0x34bf: 0x000a,\n\t// Block 0xd3, offset 0x34c0\n\t0x34c0: 0x000a, 0x34c1: 0x000a, 0x34c2: 0x000a, 0x34c3: 0x000a, 0x34c4: 0x000a, 0x34c5: 0x000a,\n\t0x34c6: 0x000a, 0x34c7: 0x000a, 0x34c8: 0x000a, 0x34c9: 0x000a, 0x34ca: 0x000a, 0x34cb: 0x000a,\n\t0x34cc: 0x000a, 0x34cd: 0x000a, 0x34ce: 0x000a, 0x34cf: 0x000a, 0x34d0: 0x000a, 0x34d1: 0x000a,\n\t0x34d2: 0x000a, 0x34d3: 0x000a,\n\t0x34e0: 0x000a, 0x34e1: 0x000a, 0x34e2: 0x000a, 0x34e3: 0x000a,\n\t0x34e4: 0x000a, 0x34e5: 0x000a, 0x34e6: 0x000a, 0x34e7: 0x000a, 0x34e8: 0x000a, 0x34e9: 0x000a,\n\t0x34ea: 0x000a, 0x34eb: 0x000a, 0x34ec: 0x000a, 0x34ed: 0x000a, 0x34ee: 0x000a,\n\t0x34f1: 0x000a, 0x34f2: 0x000a, 0x34f3: 0x000a, 0x34f4: 0x000a, 0x34f5: 0x000a,\n\t0x34f6: 0x000a, 0x34f7: 0x000a, 0x34f8: 0x000a, 0x34f9: 0x000a, 0x34fa: 0x000a, 0x34fb: 0x000a,\n\t0x34fc: 0x000a, 0x34fd: 0x000a, 0x34fe: 0x000a, 0x34ff: 0x000a,\n\t// Block 0xd4, offset 0x3500\n\t0x3501: 0x000a, 0x3502: 0x000a, 0x3503: 0x000a, 0x3504: 0x000a, 0x3505: 0x000a,\n\t0x3506: 0x000a, 0x3507: 0x000a, 0x3508: 0x000a, 0x3509: 0x000a, 0x350a: 0x000a, 0x350b: 0x000a,\n\t0x350c: 0x000a, 0x350d: 0x000a, 0x350e: 0x000a, 0x350f: 0x000a, 0x3511: 0x000a,\n\t0x3512: 0x000a, 0x3513: 0x000a, 0x3514: 0x000a, 0x3515: 0x000a, 0x3516: 0x000a, 0x3517: 0x000a,\n\t0x3518: 0x000a, 0x3519: 0x000a, 0x351a: 0x000a, 0x351b: 0x000a, 0x351c: 0x000a, 0x351d: 0x000a,\n\t0x351e: 0x000a, 0x351f: 0x000a, 0x3520: 0x000a, 0x3521: 0x000a, 0x3522: 0x000a, 0x3523: 0x000a,\n\t0x3524: 0x000a, 0x3525: 0x000a, 0x3526: 0x000a, 0x3527: 0x000a, 0x3528: 0x000a, 0x3529: 0x000a,\n\t0x352a: 0x000a, 0x352b: 0x000a, 0x352c: 0x000a, 0x352d: 0x000a, 0x352e: 0x000a, 0x352f: 0x000a,\n\t0x3530: 0x000a, 0x3531: 0x000a, 0x3532: 0x000a, 0x3533: 0x000a, 0x3534: 0x000a, 0x3535: 0x000a,\n\t// Block 0xd5, offset 0x3540\n\t0x3540: 0x0002, 0x3541: 0x0002, 0x3542: 0x0002, 0x3543: 0x0002, 0x3544: 0x0002, 0x3545: 0x0002,\n\t0x3546: 0x0002, 0x3547: 0x0002, 0x3548: 0x0002, 0x3549: 0x0002, 0x354a: 0x0002, 0x354b: 0x000a,\n\t0x354c: 0x000a,\n\t// Block 0xd6, offset 0x3580\n\t0x35aa: 0x000a, 0x35ab: 0x000a,\n\t// Block 0xd7, offset 0x35c0\n\t0x35e0: 0x000a, 0x35e1: 0x000a, 0x35e2: 0x000a, 0x35e3: 0x000a,\n\t0x35e4: 0x000a, 0x35e5: 0x000a,\n\t// Block 0xd8, offset 0x3600\n\t0x3600: 0x000a, 0x3601: 0x000a, 0x3602: 0x000a, 0x3603: 0x000a, 0x3604: 0x000a, 0x3605: 0x000a,\n\t0x3606: 0x000a, 0x3607: 0x000a, 0x3608: 0x000a, 0x3609: 0x000a, 0x360a: 0x000a, 0x360b: 0x000a,\n\t0x360c: 0x000a, 0x360d: 0x000a, 0x360e: 0x000a, 0x360f: 0x000a, 0x3610: 0x000a, 0x3611: 0x000a,\n\t0x3612: 0x000a, 0x3613: 0x000a, 0x3614: 0x000a,\n\t0x3620: 0x000a, 0x3621: 0x000a, 0x3622: 0x000a, 0x3623: 0x000a,\n\t0x3624: 0x000a, 0x3625: 0x000a, 0x3626: 0x000a, 0x3627: 0x000a, 0x3628: 0x000a, 0x3629: 0x000a,\n\t0x362a: 0x000a, 0x362b: 0x000a, 0x362c: 0x000a,\n\t0x3630: 0x000a, 0x3631: 0x000a, 0x3632: 0x000a, 0x3633: 0x000a, 0x3634: 0x000a, 0x3635: 0x000a,\n\t0x3636: 0x000a, 0x3637: 0x000a, 0x3638: 0x000a,\n\t// Block 0xd9, offset 0x3640\n\t0x3640: 0x000a, 0x3641: 0x000a, 0x3642: 0x000a, 0x3643: 0x000a, 0x3644: 0x000a, 0x3645: 0x000a,\n\t0x3646: 0x000a, 0x3647: 0x000a, 0x3648: 0x000a, 0x3649: 0x000a, 0x364a: 0x000a, 0x364b: 0x000a,\n\t0x364c: 0x000a, 0x364d: 0x000a, 0x364e: 0x000a, 0x364f: 0x000a, 0x3650: 0x000a, 0x3651: 0x000a,\n\t0x3652: 0x000a, 0x3653: 0x000a, 0x3654: 0x000a,\n\t// Block 0xda, offset 0x3680\n\t0x3680: 0x000a, 0x3681: 0x000a, 0x3682: 0x000a, 0x3683: 0x000a, 0x3684: 0x000a, 0x3685: 0x000a,\n\t0x3686: 0x000a, 0x3687: 0x000a, 0x3688: 0x000a, 0x3689: 0x000a, 0x368a: 0x000a, 0x368b: 0x000a,\n\t0x3690: 0x000a, 0x3691: 0x000a,\n\t0x3692: 0x000a, 0x3693: 0x000a, 0x3694: 0x000a, 0x3695: 0x000a, 0x3696: 0x000a, 0x3697: 0x000a,\n\t0x3698: 0x000a, 0x3699: 0x000a, 0x369a: 0x000a, 0x369b: 0x000a, 0x369c: 0x000a, 0x369d: 0x000a,\n\t0x369e: 0x000a, 0x369f: 0x000a, 0x36a0: 0x000a, 0x36a1: 0x000a, 0x36a2: 0x000a, 0x36a3: 0x000a,\n\t0x36a4: 0x000a, 0x36a5: 0x000a, 0x36a6: 0x000a, 0x36a7: 0x000a, 0x36a8: 0x000a, 0x36a9: 0x000a,\n\t0x36aa: 0x000a, 0x36ab: 0x000a, 0x36ac: 0x000a, 0x36ad: 0x000a, 0x36ae: 0x000a, 0x36af: 0x000a,\n\t0x36b0: 0x000a, 0x36b1: 0x000a, 0x36b2: 0x000a, 0x36b3: 0x000a, 0x36b4: 0x000a, 0x36b5: 0x000a,\n\t0x36b6: 0x000a, 0x36b7: 0x000a, 0x36b8: 0x000a, 0x36b9: 0x000a, 0x36ba: 0x000a, 0x36bb: 0x000a,\n\t0x36bc: 0x000a, 0x36bd: 0x000a, 0x36be: 0x000a, 0x36bf: 0x000a,\n\t// Block 0xdb, offset 0x36c0\n\t0x36c0: 0x000a, 0x36c1: 0x000a, 0x36c2: 0x000a, 0x36c3: 0x000a, 0x36c4: 0x000a, 0x36c5: 0x000a,\n\t0x36c6: 0x000a, 0x36c7: 0x000a,\n\t0x36d0: 0x000a, 0x36d1: 0x000a,\n\t0x36d2: 0x000a, 0x36d3: 0x000a, 0x36d4: 0x000a, 0x36d5: 0x000a, 0x36d6: 0x000a, 0x36d7: 0x000a,\n\t0x36d8: 0x000a, 0x36d9: 0x000a,\n\t0x36e0: 0x000a, 0x36e1: 0x000a, 0x36e2: 0x000a, 0x36e3: 0x000a,\n\t0x36e4: 0x000a, 0x36e5: 0x000a, 0x36e6: 0x000a, 0x36e7: 0x000a, 0x36e8: 0x000a, 0x36e9: 0x000a,\n\t0x36ea: 0x000a, 0x36eb: 0x000a, 0x36ec: 0x000a, 0x36ed: 0x000a, 0x36ee: 0x000a, 0x36ef: 0x000a,\n\t0x36f0: 0x000a, 0x36f1: 0x000a, 0x36f2: 0x000a, 0x36f3: 0x000a, 0x36f4: 0x000a, 0x36f5: 0x000a,\n\t0x36f6: 0x000a, 0x36f7: 0x000a, 0x36f8: 0x000a, 0x36f9: 0x000a, 0x36fa: 0x000a, 0x36fb: 0x000a,\n\t0x36fc: 0x000a, 0x36fd: 0x000a, 0x36fe: 0x000a, 0x36ff: 0x000a,\n\t// Block 0xdc, offset 0x3700\n\t0x3700: 0x000a, 0x3701: 0x000a, 0x3702: 0x000a, 0x3703: 0x000a, 0x3704: 0x000a, 0x3705: 0x000a,\n\t0x3706: 0x000a, 0x3707: 0x000a,\n\t0x3710: 0x000a, 0x3711: 0x000a,\n\t0x3712: 0x000a, 0x3713: 0x000a, 0x3714: 0x000a, 0x3715: 0x000a, 0x3716: 0x000a, 0x3717: 0x000a,\n\t0x3718: 0x000a, 0x3719: 0x000a, 0x371a: 0x000a, 0x371b: 0x000a, 0x371c: 0x000a, 0x371d: 0x000a,\n\t0x371e: 0x000a, 0x371f: 0x000a, 0x3720: 0x000a, 0x3721: 0x000a, 0x3722: 0x000a, 0x3723: 0x000a,\n\t0x3724: 0x000a, 0x3725: 0x000a, 0x3726: 0x000a, 0x3727: 0x000a, 0x3728: 0x000a, 0x3729: 0x000a,\n\t0x372a: 0x000a, 0x372b: 0x000a, 0x372c: 0x000a, 0x372d: 0x000a,\n\t// Block 0xdd, offset 0x3740\n\t0x3740: 0x000a, 0x3741: 0x000a, 0x3742: 0x000a, 0x3743: 0x000a, 0x3744: 0x000a, 0x3745: 0x000a,\n\t0x3746: 0x000a, 0x3747: 0x000a, 0x3748: 0x000a, 0x3749: 0x000a, 0x374a: 0x000a, 0x374b: 0x000a,\n\t0x3750: 0x000a, 0x3751: 0x000a,\n\t0x3752: 0x000a, 0x3753: 0x000a, 0x3754: 0x000a, 0x3755: 0x000a, 0x3756: 0x000a, 0x3757: 0x000a,\n\t0x3758: 0x000a, 0x3759: 0x000a, 0x375a: 0x000a, 0x375b: 0x000a, 0x375c: 0x000a, 0x375d: 0x000a,\n\t0x375e: 0x000a, 0x375f: 0x000a, 0x3760: 0x000a, 0x3761: 0x000a, 0x3762: 0x000a, 0x3763: 0x000a,\n\t0x3764: 0x000a, 0x3765: 0x000a, 0x3766: 0x000a, 0x3767: 0x000a, 0x3768: 0x000a, 0x3769: 0x000a,\n\t0x376a: 0x000a, 0x376b: 0x000a, 0x376c: 0x000a, 0x376d: 0x000a, 0x376e: 0x000a, 0x376f: 0x000a,\n\t0x3770: 0x000a, 0x3771: 0x000a, 0x3772: 0x000a, 0x3773: 0x000a, 0x3774: 0x000a, 0x3775: 0x000a,\n\t0x3776: 0x000a, 0x3777: 0x000a, 0x3778: 0x000a, 0x3779: 0x000a, 0x377a: 0x000a, 0x377b: 0x000a,\n\t0x377c: 0x000a, 0x377d: 0x000a, 0x377e: 0x000a,\n\t// Block 0xde, offset 0x3780\n\t0x3780: 0x000a, 0x3781: 0x000a, 0x3782: 0x000a, 0x3783: 0x000a, 0x3784: 0x000a, 0x3785: 0x000a,\n\t0x3786: 0x000a, 0x3787: 0x000a, 0x3788: 0x000a, 0x3789: 0x000a, 0x378a: 0x000a, 0x378b: 0x000a,\n\t0x378c: 0x000a, 0x3790: 0x000a, 0x3791: 0x000a,\n\t0x3792: 0x000a, 0x3793: 0x000a, 0x3794: 0x000a, 0x3795: 0x000a, 0x3796: 0x000a, 0x3797: 0x000a,\n\t0x3798: 0x000a, 0x3799: 0x000a, 0x379a: 0x000a, 0x379b: 0x000a, 0x379c: 0x000a, 0x379d: 0x000a,\n\t0x379e: 0x000a, 0x379f: 0x000a, 0x37a0: 0x000a, 0x37a1: 0x000a, 0x37a2: 0x000a, 0x37a3: 0x000a,\n\t0x37a4: 0x000a, 0x37a5: 0x000a, 0x37a6: 0x000a, 0x37a7: 0x000a, 0x37a8: 0x000a, 0x37a9: 0x000a,\n\t0x37aa: 0x000a, 0x37ab: 0x000a,\n\t// Block 0xdf, offset 0x37c0\n\t0x37c0: 0x000a, 0x37c1: 0x000a, 0x37c2: 0x000a, 0x37c3: 0x000a, 0x37c4: 0x000a, 0x37c5: 0x000a,\n\t0x37c6: 0x000a, 0x37c7: 0x000a, 0x37c8: 0x000a, 0x37c9: 0x000a, 0x37ca: 0x000a, 0x37cb: 0x000a,\n\t0x37cc: 0x000a, 0x37cd: 0x000a, 0x37ce: 0x000a, 0x37cf: 0x000a, 0x37d0: 0x000a, 0x37d1: 0x000a,\n\t0x37d2: 0x000a, 0x37d3: 0x000a, 0x37d4: 0x000a, 0x37d5: 0x000a, 0x37d6: 0x000a, 0x37d7: 0x000a,\n\t// Block 0xe0, offset 0x3800\n\t0x3800: 0x000a,\n\t0x3810: 0x000a, 0x3811: 0x000a,\n\t0x3812: 0x000a, 0x3813: 0x000a, 0x3814: 0x000a, 0x3815: 0x000a, 0x3816: 0x000a, 0x3817: 0x000a,\n\t0x3818: 0x000a, 0x3819: 0x000a, 0x381a: 0x000a, 0x381b: 0x000a, 0x381c: 0x000a, 0x381d: 0x000a,\n\t0x381e: 0x000a, 0x381f: 0x000a, 0x3820: 0x000a, 0x3821: 0x000a, 0x3822: 0x000a, 0x3823: 0x000a,\n\t0x3824: 0x000a, 0x3825: 0x000a, 0x3826: 0x000a,\n\t// Block 0xe1, offset 0x3840\n\t0x387e: 0x000b, 0x387f: 0x000b,\n\t// Block 0xe2, offset 0x3880\n\t0x3880: 0x000b, 0x3881: 0x000b, 0x3882: 0x000b, 0x3883: 0x000b, 0x3884: 0x000b, 0x3885: 0x000b,\n\t0x3886: 0x000b, 0x3887: 0x000b, 0x3888: 0x000b, 0x3889: 0x000b, 0x388a: 0x000b, 0x388b: 0x000b,\n\t0x388c: 0x000b, 0x388d: 0x000b, 0x388e: 0x000b, 0x388f: 0x000b, 0x3890: 0x000b, 0x3891: 0x000b,\n\t0x3892: 0x000b, 0x3893: 0x000b, 0x3894: 0x000b, 0x3895: 0x000b, 0x3896: 0x000b, 0x3897: 0x000b,\n\t0x3898: 0x000b, 0x3899: 0x000b, 0x389a: 0x000b, 0x389b: 0x000b, 0x389c: 0x000b, 0x389d: 0x000b,\n\t0x389e: 0x000b, 0x389f: 0x000b, 0x38a0: 0x000b, 0x38a1: 0x000b, 0x38a2: 0x000b, 0x38a3: 0x000b,\n\t0x38a4: 0x000b, 0x38a5: 0x000b, 0x38a6: 0x000b, 0x38a7: 0x000b, 0x38a8: 0x000b, 0x38a9: 0x000b,\n\t0x38aa: 0x000b, 0x38ab: 0x000b, 0x38ac: 0x000b, 0x38ad: 0x000b, 0x38ae: 0x000b, 0x38af: 0x000b,\n\t0x38b0: 0x000b, 0x38b1: 0x000b, 0x38b2: 0x000b, 0x38b3: 0x000b, 0x38b4: 0x000b, 0x38b5: 0x000b,\n\t0x38b6: 0x000b, 0x38b7: 0x000b, 0x38b8: 0x000b, 0x38b9: 0x000b, 0x38ba: 0x000b, 0x38bb: 0x000b,\n\t0x38bc: 0x000b, 0x38bd: 0x000b, 0x38be: 0x000b, 0x38bf: 0x000b,\n\t// Block 0xe3, offset 0x38c0\n\t0x38c0: 0x000c, 0x38c1: 0x000c, 0x38c2: 0x000c, 0x38c3: 0x000c, 0x38c4: 0x000c, 0x38c5: 0x000c,\n\t0x38c6: 0x000c, 0x38c7: 0x000c, 0x38c8: 0x000c, 0x38c9: 0x000c, 0x38ca: 0x000c, 0x38cb: 0x000c,\n\t0x38cc: 0x000c, 0x38cd: 0x000c, 0x38ce: 0x000c, 0x38cf: 0x000c, 0x38d0: 0x000c, 0x38d1: 0x000c,\n\t0x38d2: 0x000c, 0x38d3: 0x000c, 0x38d4: 0x000c, 0x38d5: 0x000c, 0x38d6: 0x000c, 0x38d7: 0x000c,\n\t0x38d8: 0x000c, 0x38d9: 0x000c, 0x38da: 0x000c, 0x38db: 0x000c, 0x38dc: 0x000c, 0x38dd: 0x000c,\n\t0x38de: 0x000c, 0x38df: 0x000c, 0x38e0: 0x000c, 0x38e1: 0x000c, 0x38e2: 0x000c, 0x38e3: 0x000c,\n\t0x38e4: 0x000c, 0x38e5: 0x000c, 0x38e6: 0x000c, 0x38e7: 0x000c, 0x38e8: 0x000c, 0x38e9: 0x000c,\n\t0x38ea: 0x000c, 0x38eb: 0x000c, 0x38ec: 0x000c, 0x38ed: 0x000c, 0x38ee: 0x000c, 0x38ef: 0x000c,\n\t0x38f0: 0x000b, 0x38f1: 0x000b, 0x38f2: 0x000b, 0x38f3: 0x000b, 0x38f4: 0x000b, 0x38f5: 0x000b,\n\t0x38f6: 0x000b, 0x38f7: 0x000b, 0x38f8: 0x000b, 0x38f9: 0x000b, 0x38fa: 0x000b, 0x38fb: 0x000b,\n\t0x38fc: 0x000b, 0x38fd: 0x000b, 0x38fe: 0x000b, 0x38ff: 0x000b,\n}\n\n// bidiIndex: 24 blocks, 1536 entries, 1536 bytes\n// Block 0 is the zero block.\nvar bidiIndex = [1536]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x02,\n\t0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08,\n\t0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b,\n\t0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06,\n\t0xea: 0x07, 0xef: 0x08,\n\t0xf0: 0x11, 0xf1: 0x12, 0xf2: 0x12, 0xf3: 0x14, 0xf4: 0x15,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b,\n\t0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22,\n\t0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x137: 0x28,\n\t0x138: 0x29, 0x139: 0x2a, 0x13a: 0x2b, 0x13b: 0x2c, 0x13c: 0x2d, 0x13d: 0x2e, 0x13e: 0x2f, 0x13f: 0x30,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x31, 0x141: 0x32, 0x142: 0x33,\n\t0x14d: 0x34, 0x14e: 0x35,\n\t0x150: 0x36,\n\t0x15a: 0x37, 0x15c: 0x38, 0x15d: 0x39, 0x15e: 0x3a, 0x15f: 0x3b,\n\t0x160: 0x3c, 0x162: 0x3d, 0x164: 0x3e, 0x165: 0x3f, 0x167: 0x40,\n\t0x168: 0x41, 0x169: 0x42, 0x16a: 0x43, 0x16c: 0x44, 0x16d: 0x45, 0x16e: 0x46, 0x16f: 0x47,\n\t0x170: 0x48, 0x173: 0x49, 0x177: 0x4a,\n\t0x17e: 0x4b, 0x17f: 0x4c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x4d, 0x181: 0x4e, 0x182: 0x4f, 0x183: 0x50, 0x184: 0x51, 0x185: 0x52, 0x186: 0x53, 0x187: 0x54,\n\t0x188: 0x55, 0x189: 0x54, 0x18a: 0x54, 0x18b: 0x54, 0x18c: 0x56, 0x18d: 0x57, 0x18e: 0x58, 0x18f: 0x54,\n\t0x190: 0x59, 0x191: 0x5a, 0x192: 0x5b, 0x193: 0x5c, 0x194: 0x54, 0x195: 0x54, 0x196: 0x54, 0x197: 0x54,\n\t0x198: 0x54, 0x199: 0x54, 0x19a: 0x5d, 0x19b: 0x54, 0x19c: 0x54, 0x19d: 0x5e, 0x19e: 0x54, 0x19f: 0x5f,\n\t0x1a4: 0x54, 0x1a5: 0x54, 0x1a6: 0x60, 0x1a7: 0x61,\n\t0x1a8: 0x54, 0x1a9: 0x54, 0x1aa: 0x54, 0x1ab: 0x54, 0x1ac: 0x54, 0x1ad: 0x62, 0x1ae: 0x63, 0x1af: 0x64,\n\t0x1b3: 0x65, 0x1b5: 0x66, 0x1b7: 0x67,\n\t0x1b8: 0x68, 0x1b9: 0x69, 0x1ba: 0x6a, 0x1bb: 0x6b, 0x1bc: 0x54, 0x1bd: 0x54, 0x1be: 0x54, 0x1bf: 0x6c,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x6d, 0x1c2: 0x6e, 0x1c3: 0x6f, 0x1c7: 0x70,\n\t0x1c8: 0x71, 0x1c9: 0x72, 0x1ca: 0x73, 0x1cb: 0x74, 0x1cd: 0x75, 0x1cf: 0x76,\n\t// Block 0x8, offset 0x200\n\t0x237: 0x54,\n\t// Block 0x9, offset 0x240\n\t0x252: 0x77, 0x253: 0x78,\n\t0x258: 0x79, 0x259: 0x7a, 0x25a: 0x7b, 0x25b: 0x7c, 0x25c: 0x7d, 0x25e: 0x7e,\n\t0x260: 0x7f, 0x261: 0x80, 0x263: 0x81, 0x264: 0x82, 0x265: 0x83, 0x266: 0x84, 0x267: 0x85,\n\t0x268: 0x86, 0x269: 0x87, 0x26a: 0x88, 0x26b: 0x89, 0x26f: 0x8a,\n\t// Block 0xa, offset 0x280\n\t0x2ac: 0x8b, 0x2ad: 0x8c, 0x2ae: 0x0e, 0x2af: 0x0e,\n\t0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8d, 0x2b5: 0x0e, 0x2b6: 0x0e, 0x2b7: 0x8e,\n\t0x2b8: 0x8f, 0x2b9: 0x90, 0x2ba: 0x0e, 0x2bb: 0x91, 0x2bc: 0x92, 0x2bd: 0x93, 0x2bf: 0x94,\n\t// Block 0xb, offset 0x2c0\n\t0x2c4: 0x95, 0x2c5: 0x54, 0x2c6: 0x96, 0x2c7: 0x97,\n\t0x2cb: 0x98, 0x2cd: 0x99,\n\t0x2e0: 0x9a, 0x2e1: 0x9a, 0x2e2: 0x9a, 0x2e3: 0x9a, 0x2e4: 0x9b, 0x2e5: 0x9a, 0x2e6: 0x9a, 0x2e7: 0x9a,\n\t0x2e8: 0x9c, 0x2e9: 0x9a, 0x2ea: 0x9a, 0x2eb: 0x9d, 0x2ec: 0x9e, 0x2ed: 0x9a, 0x2ee: 0x9a, 0x2ef: 0x9a,\n\t0x2f0: 0x9a, 0x2f1: 0x9a, 0x2f2: 0x9a, 0x2f3: 0x9a, 0x2f4: 0x9a, 0x2f5: 0x9a, 0x2f6: 0x9a, 0x2f7: 0x9a,\n\t0x2f8: 0x9a, 0x2f9: 0x9f, 0x2fa: 0x9a, 0x2fb: 0x9a, 0x2fc: 0x9a, 0x2fd: 0x9a, 0x2fe: 0x9a, 0x2ff: 0x9a,\n\t// Block 0xc, offset 0x300\n\t0x300: 0xa0, 0x301: 0xa1, 0x302: 0xa2, 0x304: 0xa3, 0x305: 0xa4, 0x306: 0xa5, 0x307: 0xa6,\n\t0x308: 0xa7, 0x30b: 0xa8, 0x30c: 0xa9, 0x30d: 0xaa,\n\t0x310: 0xab, 0x311: 0xac, 0x312: 0xad, 0x313: 0xae, 0x316: 0xaf, 0x317: 0xb0,\n\t0x318: 0xb1, 0x319: 0xb2, 0x31a: 0xb3, 0x31c: 0xb4,\n\t0x328: 0xb5, 0x329: 0xb6, 0x32a: 0xb7,\n\t0x330: 0xb8, 0x332: 0xb9, 0x334: 0xba, 0x335: 0xbb,\n\t// Block 0xd, offset 0x340\n\t0x36b: 0xbc, 0x36c: 0xbd,\n\t0x37e: 0xbe,\n\t// Block 0xe, offset 0x380\n\t0x3b2: 0xbf,\n\t// Block 0xf, offset 0x3c0\n\t0x3c5: 0xc0, 0x3c6: 0xc1,\n\t0x3c8: 0x54, 0x3c9: 0xc2, 0x3cc: 0x54, 0x3cd: 0xc3,\n\t0x3db: 0xc4, 0x3dc: 0xc5, 0x3dd: 0xc6, 0x3de: 0xc7, 0x3df: 0xc8,\n\t0x3e8: 0xc9, 0x3e9: 0xca, 0x3ea: 0xcb,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xcc,\n\t0x420: 0x9a, 0x421: 0x9a, 0x422: 0x9a, 0x423: 0xcd, 0x424: 0x9a, 0x425: 0xce, 0x426: 0x9a, 0x427: 0x9a,\n\t0x428: 0x9a, 0x429: 0x9a, 0x42a: 0x9a, 0x42b: 0x9a, 0x42c: 0x9a, 0x42d: 0x9a, 0x42e: 0x9a, 0x42f: 0x9a,\n\t0x430: 0x9a, 0x431: 0x9a, 0x432: 0x9a, 0x433: 0x9a, 0x434: 0x9a, 0x435: 0x9a, 0x436: 0x9a, 0x437: 0x9a,\n\t0x438: 0x0e, 0x439: 0x0e, 0x43a: 0x0e, 0x43b: 0xcf, 0x43c: 0x9a, 0x43d: 0x9a, 0x43e: 0x9a, 0x43f: 0x9a,\n\t// Block 0x11, offset 0x440\n\t0x440: 0xd0, 0x441: 0x54, 0x442: 0xd1, 0x443: 0xd2, 0x444: 0xd3, 0x445: 0xd4,\n\t0x449: 0xd5, 0x44c: 0x54, 0x44d: 0x54, 0x44e: 0x54, 0x44f: 0x54,\n\t0x450: 0x54, 0x451: 0x54, 0x452: 0x54, 0x453: 0x54, 0x454: 0x54, 0x455: 0x54, 0x456: 0x54, 0x457: 0x54,\n\t0x458: 0x54, 0x459: 0x54, 0x45a: 0x54, 0x45b: 0xd6, 0x45c: 0x54, 0x45d: 0x6b, 0x45e: 0x54, 0x45f: 0xd7,\n\t0x460: 0xd8, 0x461: 0xd9, 0x462: 0xda, 0x464: 0xdb, 0x465: 0xdc, 0x466: 0xdd, 0x467: 0xde,\n\t0x47f: 0xdf,\n\t// Block 0x12, offset 0x480\n\t0x4bf: 0xdf,\n\t// Block 0x13, offset 0x4c0\n\t0x4d0: 0x09, 0x4d1: 0x0a, 0x4d6: 0x0b,\n\t0x4db: 0x0c, 0x4dd: 0x0d, 0x4de: 0x0e, 0x4df: 0x0f,\n\t0x4ef: 0x10,\n\t0x4ff: 0x10,\n\t// Block 0x14, offset 0x500\n\t0x50f: 0x10,\n\t0x51f: 0x10,\n\t0x52f: 0x10,\n\t0x53f: 0x10,\n\t// Block 0x15, offset 0x540\n\t0x540: 0xe0, 0x541: 0xe0, 0x542: 0xe0, 0x543: 0xe0, 0x544: 0x05, 0x545: 0x05, 0x546: 0x05, 0x547: 0xe1,\n\t0x548: 0xe0, 0x549: 0xe0, 0x54a: 0xe0, 0x54b: 0xe0, 0x54c: 0xe0, 0x54d: 0xe0, 0x54e: 0xe0, 0x54f: 0xe0,\n\t0x550: 0xe0, 0x551: 0xe0, 0x552: 0xe0, 0x553: 0xe0, 0x554: 0xe0, 0x555: 0xe0, 0x556: 0xe0, 0x557: 0xe0,\n\t0x558: 0xe0, 0x559: 0xe0, 0x55a: 0xe0, 0x55b: 0xe0, 0x55c: 0xe0, 0x55d: 0xe0, 0x55e: 0xe0, 0x55f: 0xe0,\n\t0x560: 0xe0, 0x561: 0xe0, 0x562: 0xe0, 0x563: 0xe0, 0x564: 0xe0, 0x565: 0xe0, 0x566: 0xe0, 0x567: 0xe0,\n\t0x568: 0xe0, 0x569: 0xe0, 0x56a: 0xe0, 0x56b: 0xe0, 0x56c: 0xe0, 0x56d: 0xe0, 0x56e: 0xe0, 0x56f: 0xe0,\n\t0x570: 0xe0, 0x571: 0xe0, 0x572: 0xe0, 0x573: 0xe0, 0x574: 0xe0, 0x575: 0xe0, 0x576: 0xe0, 0x577: 0xe0,\n\t0x578: 0xe0, 0x579: 0xe0, 0x57a: 0xe0, 0x57b: 0xe0, 0x57c: 0xe0, 0x57d: 0xe0, 0x57e: 0xe0, 0x57f: 0xe0,\n\t// Block 0x16, offset 0x580\n\t0x58f: 0x10,\n\t0x59f: 0x10,\n\t0x5a0: 0x13,\n\t0x5af: 0x10,\n\t0x5bf: 0x10,\n\t// Block 0x17, offset 0x5c0\n\t0x5cf: 0x10,\n}\n\n// Total table size 16184 bytes (15KiB); checksum: F50EF68C\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.13 && !go1.14\n\npackage bidi\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"11.0.0\"\n\n// xorMasks contains masks to be xor-ed with brackets to get the reverse\n// version.\nvar xorMasks = []int32{ // 8 elements\n\t0, 1, 6, 7, 3, 15, 29, 63,\n} // Size: 56 bytes\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookup(s []byte) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupUnsafe(s []byte) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookupString(s string) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupStringUnsafe(s string) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// bidiTrie. Total size: 16512 bytes (16.12 KiB). Checksum: 2a9cf1317f2ffaa.\ntype bidiTrie struct{}\n\nfunc newBidiTrie(i int) *bidiTrie {\n\treturn &bidiTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *bidiTrie) lookupValue(n uint32, b byte) uint8 {\n\tswitch {\n\tdefault:\n\t\treturn uint8(bidiValues[n<<6+uint32(b)])\n\t}\n}\n\n// bidiValues: 234 blocks, 14976 entries, 14976 bytes\n// The third block is the zero block.\nvar bidiValues = [14976]uint8{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b,\n\t0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008,\n\t0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b,\n\t0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b,\n\t0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007,\n\t0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004,\n\t0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a,\n\t0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006,\n\t0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002,\n\t0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a,\n\t0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x000a,\n\t0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a,\n\t0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a,\n\t0x7b: 0x005a,\n\t0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007,\n\t0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b,\n\t0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b,\n\t0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b,\n\t0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b,\n\t0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004,\n\t0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a,\n\t0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a,\n\t0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a,\n\t0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a,\n\t0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a,\n\t// Block 0x4, offset 0x100\n\t0x117: 0x000a,\n\t0x137: 0x000a,\n\t// Block 0x5, offset 0x140\n\t0x179: 0x000a, 0x17a: 0x000a,\n\t// Block 0x6, offset 0x180\n\t0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a,\n\t0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a,\n\t0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a,\n\t0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a,\n\t0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a,\n\t0x19e: 0x000a, 0x19f: 0x000a,\n\t0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a,\n\t0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a,\n\t0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a,\n\t0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a,\n\t0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c,\n\t0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c,\n\t0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c,\n\t0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c,\n\t0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c,\n\t0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c,\n\t0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c,\n\t0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c,\n\t0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c,\n\t0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c,\n\t0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c,\n\t0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c,\n\t0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c,\n\t0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c,\n\t0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c,\n\t0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c,\n\t0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c,\n\t0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c,\n\t0x234: 0x000a, 0x235: 0x000a,\n\t0x23e: 0x000a,\n\t// Block 0x9, offset 0x240\n\t0x244: 0x000a, 0x245: 0x000a,\n\t0x247: 0x000a,\n\t// Block 0xa, offset 0x280\n\t0x2b6: 0x000a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c,\n\t0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c,\n\t// Block 0xc, offset 0x300\n\t0x30a: 0x000a,\n\t0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c,\n\t0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c,\n\t0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c,\n\t0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c,\n\t0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c,\n\t0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c,\n\t0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c,\n\t0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c,\n\t0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c,\n\t0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001,\n\t0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001,\n\t0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001,\n\t0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001,\n\t0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001,\n\t0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001,\n\t0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001,\n\t0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001,\n\t0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001,\n\t0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001,\n\t// Block 0xe, offset 0x380\n\t0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005,\n\t0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d,\n\t0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c,\n\t0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c,\n\t0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d,\n\t0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d,\n\t0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d,\n\t0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d,\n\t0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d,\n\t0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d,\n\t0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d,\n\t0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c,\n\t0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c,\n\t0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c,\n\t0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c,\n\t0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005,\n\t0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005,\n\t0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d,\n\t0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d,\n\t0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d,\n\t0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d,\n\t0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d,\n\t0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d,\n\t0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d,\n\t0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d,\n\t0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d,\n\t0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d,\n\t0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d,\n\t0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d,\n\t0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d,\n\t0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d,\n\t0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d,\n\t0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d,\n\t0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c,\n\t0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005,\n\t0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c,\n\t0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a,\n\t0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d,\n\t0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002,\n\t0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d,\n\t0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d,\n\t0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d,\n\t0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c,\n\t0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d,\n\t0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d,\n\t0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d,\n\t0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d,\n\t0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d,\n\t0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c,\n\t0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c,\n\t0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c,\n\t0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d,\n\t0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d,\n\t0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d,\n\t0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d,\n\t0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d,\n\t0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d,\n\t0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d,\n\t0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d,\n\t0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d,\n\t0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d,\n\t0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d,\n\t0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d,\n\t0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d,\n\t0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d,\n\t0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d,\n\t0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c,\n\t0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c,\n\t0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d,\n\t0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d,\n\t0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001,\n\t0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001,\n\t0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001,\n\t0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001,\n\t0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001,\n\t0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001,\n\t0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001,\n\t0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c,\n\t0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001,\n\t0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001,\n\t0x57c: 0x0001, 0x57d: 0x000c, 0x57e: 0x0001, 0x57f: 0x0001,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001,\n\t0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001,\n\t0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001,\n\t0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c,\n\t0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c,\n\t0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c,\n\t0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c,\n\t0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001,\n\t0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001,\n\t0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001,\n\t0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001,\n\t0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001,\n\t0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001,\n\t0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001,\n\t0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001,\n\t0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x000d, 0x5e1: 0x000d, 0x5e2: 0x000d, 0x5e3: 0x000d,\n\t0x5e4: 0x000d, 0x5e5: 0x000d, 0x5e6: 0x000d, 0x5e7: 0x000d, 0x5e8: 0x000d, 0x5e9: 0x000d,\n\t0x5ea: 0x000d, 0x5eb: 0x000d, 0x5ec: 0x000d, 0x5ed: 0x000d, 0x5ee: 0x000d, 0x5ef: 0x000d,\n\t0x5f0: 0x0001, 0x5f1: 0x0001, 0x5f2: 0x0001, 0x5f3: 0x0001, 0x5f4: 0x0001, 0x5f5: 0x0001,\n\t0x5f6: 0x0001, 0x5f7: 0x0001, 0x5f8: 0x0001, 0x5f9: 0x0001, 0x5fa: 0x0001, 0x5fb: 0x0001,\n\t0x5fc: 0x0001, 0x5fd: 0x0001, 0x5fe: 0x0001, 0x5ff: 0x0001,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x0001, 0x601: 0x0001, 0x602: 0x0001, 0x603: 0x0001, 0x604: 0x0001, 0x605: 0x0001,\n\t0x606: 0x0001, 0x607: 0x0001, 0x608: 0x0001, 0x609: 0x0001, 0x60a: 0x0001, 0x60b: 0x0001,\n\t0x60c: 0x0001, 0x60d: 0x0001, 0x60e: 0x0001, 0x60f: 0x0001, 0x610: 0x0001, 0x611: 0x0001,\n\t0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001,\n\t0x618: 0x0001, 0x619: 0x0001, 0x61a: 0x0001, 0x61b: 0x0001, 0x61c: 0x0001, 0x61d: 0x0001,\n\t0x61e: 0x0001, 0x61f: 0x0001, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d,\n\t0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d,\n\t0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d,\n\t0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d,\n\t0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d,\n\t0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d,\n\t0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000d, 0x64b: 0x000d,\n\t0x64c: 0x000d, 0x64d: 0x000d, 0x64e: 0x000d, 0x64f: 0x000d, 0x650: 0x000d, 0x651: 0x000d,\n\t0x652: 0x000d, 0x653: 0x000c, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c,\n\t0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c,\n\t0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c,\n\t0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c,\n\t0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c,\n\t0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c,\n\t0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c,\n\t0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c,\n\t0x6ba: 0x000c,\n\t0x6bc: 0x000c,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c,\n\t0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c,\n\t0x6cd: 0x000c, 0x6d1: 0x000c,\n\t0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c,\n\t0x6e2: 0x000c, 0x6e3: 0x000c,\n\t// Block 0x1c, offset 0x700\n\t0x701: 0x000c,\n\t0x73c: 0x000c,\n\t// Block 0x1d, offset 0x740\n\t0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c,\n\t0x74d: 0x000c,\n\t0x762: 0x000c, 0x763: 0x000c,\n\t0x772: 0x0004, 0x773: 0x0004,\n\t0x77b: 0x0004,\n\t0x77e: 0x000c,\n\t// Block 0x1e, offset 0x780\n\t0x781: 0x000c, 0x782: 0x000c,\n\t0x7bc: 0x000c,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x000c, 0x7c2: 0x000c,\n\t0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c,\n\t0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c,\n\t0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c,\n\t// Block 0x20, offset 0x800\n\t0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c,\n\t0x807: 0x000c, 0x808: 0x000c,\n\t0x80d: 0x000c,\n\t0x822: 0x000c, 0x823: 0x000c,\n\t0x831: 0x0004,\n\t0x83a: 0x000c, 0x83b: 0x000c,\n\t0x83c: 0x000c, 0x83d: 0x000c, 0x83e: 0x000c, 0x83f: 0x000c,\n\t// Block 0x21, offset 0x840\n\t0x841: 0x000c,\n\t0x87c: 0x000c, 0x87f: 0x000c,\n\t// Block 0x22, offset 0x880\n\t0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c,\n\t0x88d: 0x000c,\n\t0x896: 0x000c,\n\t0x8a2: 0x000c, 0x8a3: 0x000c,\n\t// Block 0x23, offset 0x8c0\n\t0x8c2: 0x000c,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x000c,\n\t0x90d: 0x000c,\n\t0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a,\n\t0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x000c, 0x944: 0x000c,\n\t0x97e: 0x000c, 0x97f: 0x000c,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x000c,\n\t0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c,\n\t0x98c: 0x000c, 0x98d: 0x000c,\n\t0x995: 0x000c, 0x996: 0x000c,\n\t0x9a2: 0x000c, 0x9a3: 0x000c,\n\t0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a,\n\t0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a,\n\t// Block 0x27, offset 0x9c0\n\t0x9cc: 0x000c, 0x9cd: 0x000c,\n\t0x9e2: 0x000c, 0x9e3: 0x000c,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x000c, 0xa01: 0x000c,\n\t0xa3b: 0x000c,\n\t0xa3c: 0x000c,\n\t// Block 0x29, offset 0xa40\n\t0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c,\n\t0xa4d: 0x000c,\n\t0xa62: 0x000c, 0xa63: 0x000c,\n\t// Block 0x2a, offset 0xa80\n\t0xa8a: 0x000c,\n\t0xa92: 0x000c, 0xa93: 0x000c, 0xa94: 0x000c, 0xa96: 0x000c,\n\t// Block 0x2b, offset 0xac0\n\t0xaf1: 0x000c, 0xaf4: 0x000c, 0xaf5: 0x000c,\n\t0xaf6: 0x000c, 0xaf7: 0x000c, 0xaf8: 0x000c, 0xaf9: 0x000c, 0xafa: 0x000c,\n\t0xaff: 0x0004,\n\t// Block 0x2c, offset 0xb00\n\t0xb07: 0x000c, 0xb08: 0x000c, 0xb09: 0x000c, 0xb0a: 0x000c, 0xb0b: 0x000c,\n\t0xb0c: 0x000c, 0xb0d: 0x000c, 0xb0e: 0x000c,\n\t// Block 0x2d, offset 0xb40\n\t0xb71: 0x000c, 0xb74: 0x000c, 0xb75: 0x000c,\n\t0xb76: 0x000c, 0xb77: 0x000c, 0xb78: 0x000c, 0xb79: 0x000c, 0xb7b: 0x000c,\n\t0xb7c: 0x000c,\n\t// Block 0x2e, offset 0xb80\n\t0xb88: 0x000c, 0xb89: 0x000c, 0xb8a: 0x000c, 0xb8b: 0x000c,\n\t0xb8c: 0x000c, 0xb8d: 0x000c,\n\t// Block 0x2f, offset 0xbc0\n\t0xbd8: 0x000c, 0xbd9: 0x000c,\n\t0xbf5: 0x000c,\n\t0xbf7: 0x000c, 0xbf9: 0x000c, 0xbfa: 0x003a, 0xbfb: 0x002a,\n\t0xbfc: 0x003a, 0xbfd: 0x002a,\n\t// Block 0x30, offset 0xc00\n\t0xc31: 0x000c, 0xc32: 0x000c, 0xc33: 0x000c, 0xc34: 0x000c, 0xc35: 0x000c,\n\t0xc36: 0x000c, 0xc37: 0x000c, 0xc38: 0x000c, 0xc39: 0x000c, 0xc3a: 0x000c, 0xc3b: 0x000c,\n\t0xc3c: 0x000c, 0xc3d: 0x000c, 0xc3e: 0x000c,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x000c, 0xc41: 0x000c, 0xc42: 0x000c, 0xc43: 0x000c, 0xc44: 0x000c,\n\t0xc46: 0x000c, 0xc47: 0x000c,\n\t0xc4d: 0x000c, 0xc4e: 0x000c, 0xc4f: 0x000c, 0xc50: 0x000c, 0xc51: 0x000c,\n\t0xc52: 0x000c, 0xc53: 0x000c, 0xc54: 0x000c, 0xc55: 0x000c, 0xc56: 0x000c, 0xc57: 0x000c,\n\t0xc59: 0x000c, 0xc5a: 0x000c, 0xc5b: 0x000c, 0xc5c: 0x000c, 0xc5d: 0x000c,\n\t0xc5e: 0x000c, 0xc5f: 0x000c, 0xc60: 0x000c, 0xc61: 0x000c, 0xc62: 0x000c, 0xc63: 0x000c,\n\t0xc64: 0x000c, 0xc65: 0x000c, 0xc66: 0x000c, 0xc67: 0x000c, 0xc68: 0x000c, 0xc69: 0x000c,\n\t0xc6a: 0x000c, 0xc6b: 0x000c, 0xc6c: 0x000c, 0xc6d: 0x000c, 0xc6e: 0x000c, 0xc6f: 0x000c,\n\t0xc70: 0x000c, 0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c,\n\t0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c,\n\t0xc7c: 0x000c,\n\t// Block 0x32, offset 0xc80\n\t0xc86: 0x000c,\n\t// Block 0x33, offset 0xcc0\n\t0xced: 0x000c, 0xcee: 0x000c, 0xcef: 0x000c,\n\t0xcf0: 0x000c, 0xcf2: 0x000c, 0xcf3: 0x000c, 0xcf4: 0x000c, 0xcf5: 0x000c,\n\t0xcf6: 0x000c, 0xcf7: 0x000c, 0xcf9: 0x000c, 0xcfa: 0x000c,\n\t0xcfd: 0x000c, 0xcfe: 0x000c,\n\t// Block 0x34, offset 0xd00\n\t0xd18: 0x000c, 0xd19: 0x000c,\n\t0xd1e: 0x000c, 0xd1f: 0x000c, 0xd20: 0x000c,\n\t0xd31: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c,\n\t// Block 0x35, offset 0xd40\n\t0xd42: 0x000c, 0xd45: 0x000c,\n\t0xd46: 0x000c,\n\t0xd4d: 0x000c,\n\t0xd5d: 0x000c,\n\t// Block 0x36, offset 0xd80\n\t0xd9d: 0x000c,\n\t0xd9e: 0x000c, 0xd9f: 0x000c,\n\t// Block 0x37, offset 0xdc0\n\t0xdd0: 0x000a, 0xdd1: 0x000a,\n\t0xdd2: 0x000a, 0xdd3: 0x000a, 0xdd4: 0x000a, 0xdd5: 0x000a, 0xdd6: 0x000a, 0xdd7: 0x000a,\n\t0xdd8: 0x000a, 0xdd9: 0x000a,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x000a,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x0009,\n\t0xe5b: 0x007a, 0xe5c: 0x006a,\n\t// Block 0x3a, offset 0xe80\n\t0xe92: 0x000c, 0xe93: 0x000c, 0xe94: 0x000c,\n\t0xeb2: 0x000c, 0xeb3: 0x000c, 0xeb4: 0x000c,\n\t// Block 0x3b, offset 0xec0\n\t0xed2: 0x000c, 0xed3: 0x000c,\n\t0xef2: 0x000c, 0xef3: 0x000c,\n\t// Block 0x3c, offset 0xf00\n\t0xf34: 0x000c, 0xf35: 0x000c,\n\t0xf37: 0x000c, 0xf38: 0x000c, 0xf39: 0x000c, 0xf3a: 0x000c, 0xf3b: 0x000c,\n\t0xf3c: 0x000c, 0xf3d: 0x000c,\n\t// Block 0x3d, offset 0xf40\n\t0xf46: 0x000c, 0xf49: 0x000c, 0xf4a: 0x000c, 0xf4b: 0x000c,\n\t0xf4c: 0x000c, 0xf4d: 0x000c, 0xf4e: 0x000c, 0xf4f: 0x000c, 0xf50: 0x000c, 0xf51: 0x000c,\n\t0xf52: 0x000c, 0xf53: 0x000c,\n\t0xf5b: 0x0004, 0xf5d: 0x000c,\n\t0xf70: 0x000a, 0xf71: 0x000a, 0xf72: 0x000a, 0xf73: 0x000a, 0xf74: 0x000a, 0xf75: 0x000a,\n\t0xf76: 0x000a, 0xf77: 0x000a, 0xf78: 0x000a, 0xf79: 0x000a,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x000a, 0xf81: 0x000a, 0xf82: 0x000a, 0xf83: 0x000a, 0xf84: 0x000a, 0xf85: 0x000a,\n\t0xf86: 0x000a, 0xf87: 0x000a, 0xf88: 0x000a, 0xf89: 0x000a, 0xf8a: 0x000a, 0xf8b: 0x000c,\n\t0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000b,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc5: 0x000c,\n\t0xfc6: 0x000c,\n\t0xfe9: 0x000c,\n\t// Block 0x40, offset 0x1000\n\t0x1020: 0x000c, 0x1021: 0x000c, 0x1022: 0x000c,\n\t0x1027: 0x000c, 0x1028: 0x000c,\n\t0x1032: 0x000c,\n\t0x1039: 0x000c, 0x103a: 0x000c, 0x103b: 0x000c,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x000a, 0x1044: 0x000a, 0x1045: 0x000a,\n\t// Block 0x42, offset 0x1080\n\t0x109e: 0x000a, 0x109f: 0x000a, 0x10a0: 0x000a, 0x10a1: 0x000a, 0x10a2: 0x000a, 0x10a3: 0x000a,\n\t0x10a4: 0x000a, 0x10a5: 0x000a, 0x10a6: 0x000a, 0x10a7: 0x000a, 0x10a8: 0x000a, 0x10a9: 0x000a,\n\t0x10aa: 0x000a, 0x10ab: 0x000a, 0x10ac: 0x000a, 0x10ad: 0x000a, 0x10ae: 0x000a, 0x10af: 0x000a,\n\t0x10b0: 0x000a, 0x10b1: 0x000a, 0x10b2: 0x000a, 0x10b3: 0x000a, 0x10b4: 0x000a, 0x10b5: 0x000a,\n\t0x10b6: 0x000a, 0x10b7: 0x000a, 0x10b8: 0x000a, 0x10b9: 0x000a, 0x10ba: 0x000a, 0x10bb: 0x000a,\n\t0x10bc: 0x000a, 0x10bd: 0x000a, 0x10be: 0x000a, 0x10bf: 0x000a,\n\t// Block 0x43, offset 0x10c0\n\t0x10d7: 0x000c,\n\t0x10d8: 0x000c, 0x10db: 0x000c,\n\t// Block 0x44, offset 0x1100\n\t0x1116: 0x000c,\n\t0x1118: 0x000c, 0x1119: 0x000c, 0x111a: 0x000c, 0x111b: 0x000c, 0x111c: 0x000c, 0x111d: 0x000c,\n\t0x111e: 0x000c, 0x1120: 0x000c, 0x1122: 0x000c,\n\t0x1125: 0x000c, 0x1126: 0x000c, 0x1127: 0x000c, 0x1128: 0x000c, 0x1129: 0x000c,\n\t0x112a: 0x000c, 0x112b: 0x000c, 0x112c: 0x000c,\n\t0x1133: 0x000c, 0x1134: 0x000c, 0x1135: 0x000c,\n\t0x1136: 0x000c, 0x1137: 0x000c, 0x1138: 0x000c, 0x1139: 0x000c, 0x113a: 0x000c, 0x113b: 0x000c,\n\t0x113c: 0x000c, 0x113f: 0x000c,\n\t// Block 0x45, offset 0x1140\n\t0x1170: 0x000c, 0x1171: 0x000c, 0x1172: 0x000c, 0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c,\n\t0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c,\n\t0x117c: 0x000c, 0x117d: 0x000c, 0x117e: 0x000c,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x000c, 0x1181: 0x000c, 0x1182: 0x000c, 0x1183: 0x000c,\n\t0x11b4: 0x000c,\n\t0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c,\n\t0x11bc: 0x000c,\n\t// Block 0x47, offset 0x11c0\n\t0x11c2: 0x000c,\n\t0x11eb: 0x000c, 0x11ec: 0x000c, 0x11ed: 0x000c, 0x11ee: 0x000c, 0x11ef: 0x000c,\n\t0x11f0: 0x000c, 0x11f1: 0x000c, 0x11f2: 0x000c, 0x11f3: 0x000c,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x000c, 0x1201: 0x000c,\n\t0x1222: 0x000c, 0x1223: 0x000c,\n\t0x1224: 0x000c, 0x1225: 0x000c, 0x1228: 0x000c, 0x1229: 0x000c,\n\t0x122b: 0x000c, 0x122c: 0x000c, 0x122d: 0x000c,\n\t// Block 0x49, offset 0x1240\n\t0x1266: 0x000c, 0x1268: 0x000c, 0x1269: 0x000c,\n\t0x126d: 0x000c, 0x126f: 0x000c,\n\t0x1270: 0x000c, 0x1271: 0x000c,\n\t// Block 0x4a, offset 0x1280\n\t0x12ac: 0x000c, 0x12ad: 0x000c, 0x12ae: 0x000c, 0x12af: 0x000c,\n\t0x12b0: 0x000c, 0x12b1: 0x000c, 0x12b2: 0x000c, 0x12b3: 0x000c,\n\t0x12b6: 0x000c, 0x12b7: 0x000c,\n\t// Block 0x4b, offset 0x12c0\n\t0x12d0: 0x000c, 0x12d1: 0x000c,\n\t0x12d2: 0x000c, 0x12d4: 0x000c, 0x12d5: 0x000c, 0x12d6: 0x000c, 0x12d7: 0x000c,\n\t0x12d8: 0x000c, 0x12d9: 0x000c, 0x12da: 0x000c, 0x12db: 0x000c, 0x12dc: 0x000c, 0x12dd: 0x000c,\n\t0x12de: 0x000c, 0x12df: 0x000c, 0x12e0: 0x000c, 0x12e2: 0x000c, 0x12e3: 0x000c,\n\t0x12e4: 0x000c, 0x12e5: 0x000c, 0x12e6: 0x000c, 0x12e7: 0x000c, 0x12e8: 0x000c,\n\t0x12ed: 0x000c,\n\t0x12f4: 0x000c,\n\t0x12f8: 0x000c, 0x12f9: 0x000c,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x000c, 0x1301: 0x000c, 0x1302: 0x000c, 0x1303: 0x000c, 0x1304: 0x000c, 0x1305: 0x000c,\n\t0x1306: 0x000c, 0x1307: 0x000c, 0x1308: 0x000c, 0x1309: 0x000c, 0x130a: 0x000c, 0x130b: 0x000c,\n\t0x130c: 0x000c, 0x130d: 0x000c, 0x130e: 0x000c, 0x130f: 0x000c, 0x1310: 0x000c, 0x1311: 0x000c,\n\t0x1312: 0x000c, 0x1313: 0x000c, 0x1314: 0x000c, 0x1315: 0x000c, 0x1316: 0x000c, 0x1317: 0x000c,\n\t0x1318: 0x000c, 0x1319: 0x000c, 0x131a: 0x000c, 0x131b: 0x000c, 0x131c: 0x000c, 0x131d: 0x000c,\n\t0x131e: 0x000c, 0x131f: 0x000c, 0x1320: 0x000c, 0x1321: 0x000c, 0x1322: 0x000c, 0x1323: 0x000c,\n\t0x1324: 0x000c, 0x1325: 0x000c, 0x1326: 0x000c, 0x1327: 0x000c, 0x1328: 0x000c, 0x1329: 0x000c,\n\t0x132a: 0x000c, 0x132b: 0x000c, 0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c,\n\t0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c, 0x1334: 0x000c, 0x1335: 0x000c,\n\t0x1336: 0x000c, 0x1337: 0x000c, 0x1338: 0x000c, 0x1339: 0x000c, 0x133b: 0x000c,\n\t0x133c: 0x000c, 0x133d: 0x000c, 0x133e: 0x000c, 0x133f: 0x000c,\n\t// Block 0x4d, offset 0x1340\n\t0x137d: 0x000a, 0x137f: 0x000a,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x000a, 0x1381: 0x000a,\n\t0x138d: 0x000a, 0x138e: 0x000a, 0x138f: 0x000a,\n\t0x139d: 0x000a,\n\t0x139e: 0x000a, 0x139f: 0x000a,\n\t0x13ad: 0x000a, 0x13ae: 0x000a, 0x13af: 0x000a,\n\t0x13bd: 0x000a, 0x13be: 0x000a,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x0009, 0x13c1: 0x0009, 0x13c2: 0x0009, 0x13c3: 0x0009, 0x13c4: 0x0009, 0x13c5: 0x0009,\n\t0x13c6: 0x0009, 0x13c7: 0x0009, 0x13c8: 0x0009, 0x13c9: 0x0009, 0x13ca: 0x0009, 0x13cb: 0x000b,\n\t0x13cc: 0x000b, 0x13cd: 0x000b, 0x13cf: 0x0001, 0x13d0: 0x000a, 0x13d1: 0x000a,\n\t0x13d2: 0x000a, 0x13d3: 0x000a, 0x13d4: 0x000a, 0x13d5: 0x000a, 0x13d6: 0x000a, 0x13d7: 0x000a,\n\t0x13d8: 0x000a, 0x13d9: 0x000a, 0x13da: 0x000a, 0x13db: 0x000a, 0x13dc: 0x000a, 0x13dd: 0x000a,\n\t0x13de: 0x000a, 0x13df: 0x000a, 0x13e0: 0x000a, 0x13e1: 0x000a, 0x13e2: 0x000a, 0x13e3: 0x000a,\n\t0x13e4: 0x000a, 0x13e5: 0x000a, 0x13e6: 0x000a, 0x13e7: 0x000a, 0x13e8: 0x0009, 0x13e9: 0x0007,\n\t0x13ea: 0x000e, 0x13eb: 0x000e, 0x13ec: 0x000e, 0x13ed: 0x000e, 0x13ee: 0x000e, 0x13ef: 0x0006,\n\t0x13f0: 0x0004, 0x13f1: 0x0004, 0x13f2: 0x0004, 0x13f3: 0x0004, 0x13f4: 0x0004, 0x13f5: 0x000a,\n\t0x13f6: 0x000a, 0x13f7: 0x000a, 0x13f8: 0x000a, 0x13f9: 0x000a, 0x13fa: 0x000a, 0x13fb: 0x000a,\n\t0x13fc: 0x000a, 0x13fd: 0x000a, 0x13fe: 0x000a, 0x13ff: 0x000a,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x000a, 0x1401: 0x000a, 0x1402: 0x000a, 0x1403: 0x000a, 0x1404: 0x0006, 0x1405: 0x009a,\n\t0x1406: 0x008a, 0x1407: 0x000a, 0x1408: 0x000a, 0x1409: 0x000a, 0x140a: 0x000a, 0x140b: 0x000a,\n\t0x140c: 0x000a, 0x140d: 0x000a, 0x140e: 0x000a, 0x140f: 0x000a, 0x1410: 0x000a, 0x1411: 0x000a,\n\t0x1412: 0x000a, 0x1413: 0x000a, 0x1414: 0x000a, 0x1415: 0x000a, 0x1416: 0x000a, 0x1417: 0x000a,\n\t0x1418: 0x000a, 0x1419: 0x000a, 0x141a: 0x000a, 0x141b: 0x000a, 0x141c: 0x000a, 0x141d: 0x000a,\n\t0x141e: 0x000a, 0x141f: 0x0009, 0x1420: 0x000b, 0x1421: 0x000b, 0x1422: 0x000b, 0x1423: 0x000b,\n\t0x1424: 0x000b, 0x1425: 0x000b, 0x1426: 0x000e, 0x1427: 0x000e, 0x1428: 0x000e, 0x1429: 0x000e,\n\t0x142a: 0x000b, 0x142b: 0x000b, 0x142c: 0x000b, 0x142d: 0x000b, 0x142e: 0x000b, 0x142f: 0x000b,\n\t0x1430: 0x0002, 0x1434: 0x0002, 0x1435: 0x0002,\n\t0x1436: 0x0002, 0x1437: 0x0002, 0x1438: 0x0002, 0x1439: 0x0002, 0x143a: 0x0003, 0x143b: 0x0003,\n\t0x143c: 0x000a, 0x143d: 0x009a, 0x143e: 0x008a,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x0002, 0x1441: 0x0002, 0x1442: 0x0002, 0x1443: 0x0002, 0x1444: 0x0002, 0x1445: 0x0002,\n\t0x1446: 0x0002, 0x1447: 0x0002, 0x1448: 0x0002, 0x1449: 0x0002, 0x144a: 0x0003, 0x144b: 0x0003,\n\t0x144c: 0x000a, 0x144d: 0x009a, 0x144e: 0x008a,\n\t0x1460: 0x0004, 0x1461: 0x0004, 0x1462: 0x0004, 0x1463: 0x0004,\n\t0x1464: 0x0004, 0x1465: 0x0004, 0x1466: 0x0004, 0x1467: 0x0004, 0x1468: 0x0004, 0x1469: 0x0004,\n\t0x146a: 0x0004, 0x146b: 0x0004, 0x146c: 0x0004, 0x146d: 0x0004, 0x146e: 0x0004, 0x146f: 0x0004,\n\t0x1470: 0x0004, 0x1471: 0x0004, 0x1472: 0x0004, 0x1473: 0x0004, 0x1474: 0x0004, 0x1475: 0x0004,\n\t0x1476: 0x0004, 0x1477: 0x0004, 0x1478: 0x0004, 0x1479: 0x0004, 0x147a: 0x0004, 0x147b: 0x0004,\n\t0x147c: 0x0004, 0x147d: 0x0004, 0x147e: 0x0004, 0x147f: 0x0004,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x0004, 0x1481: 0x0004, 0x1482: 0x0004, 0x1483: 0x0004, 0x1484: 0x0004, 0x1485: 0x0004,\n\t0x1486: 0x0004, 0x1487: 0x0004, 0x1488: 0x0004, 0x1489: 0x0004, 0x148a: 0x0004, 0x148b: 0x0004,\n\t0x148c: 0x0004, 0x148d: 0x0004, 0x148e: 0x0004, 0x148f: 0x0004, 0x1490: 0x000c, 0x1491: 0x000c,\n\t0x1492: 0x000c, 0x1493: 0x000c, 0x1494: 0x000c, 0x1495: 0x000c, 0x1496: 0x000c, 0x1497: 0x000c,\n\t0x1498: 0x000c, 0x1499: 0x000c, 0x149a: 0x000c, 0x149b: 0x000c, 0x149c: 0x000c, 0x149d: 0x000c,\n\t0x149e: 0x000c, 0x149f: 0x000c, 0x14a0: 0x000c, 0x14a1: 0x000c, 0x14a2: 0x000c, 0x14a3: 0x000c,\n\t0x14a4: 0x000c, 0x14a5: 0x000c, 0x14a6: 0x000c, 0x14a7: 0x000c, 0x14a8: 0x000c, 0x14a9: 0x000c,\n\t0x14aa: 0x000c, 0x14ab: 0x000c, 0x14ac: 0x000c, 0x14ad: 0x000c, 0x14ae: 0x000c, 0x14af: 0x000c,\n\t0x14b0: 0x000c,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x000a, 0x14c1: 0x000a, 0x14c3: 0x000a, 0x14c4: 0x000a, 0x14c5: 0x000a,\n\t0x14c6: 0x000a, 0x14c8: 0x000a, 0x14c9: 0x000a,\n\t0x14d4: 0x000a, 0x14d6: 0x000a, 0x14d7: 0x000a,\n\t0x14d8: 0x000a,\n\t0x14de: 0x000a, 0x14df: 0x000a, 0x14e0: 0x000a, 0x14e1: 0x000a, 0x14e2: 0x000a, 0x14e3: 0x000a,\n\t0x14e5: 0x000a, 0x14e7: 0x000a, 0x14e9: 0x000a,\n\t0x14ee: 0x0004,\n\t0x14fa: 0x000a, 0x14fb: 0x000a,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x000a, 0x1501: 0x000a, 0x1502: 0x000a, 0x1503: 0x000a, 0x1504: 0x000a,\n\t0x150a: 0x000a, 0x150b: 0x000a,\n\t0x150c: 0x000a, 0x150d: 0x000a, 0x1510: 0x000a, 0x1511: 0x000a,\n\t0x1512: 0x000a, 0x1513: 0x000a, 0x1514: 0x000a, 0x1515: 0x000a, 0x1516: 0x000a, 0x1517: 0x000a,\n\t0x1518: 0x000a, 0x1519: 0x000a, 0x151a: 0x000a, 0x151b: 0x000a, 0x151c: 0x000a, 0x151d: 0x000a,\n\t0x151e: 0x000a, 0x151f: 0x000a,\n\t// Block 0x55, offset 0x1540\n\t0x1549: 0x000a, 0x154a: 0x000a, 0x154b: 0x000a,\n\t0x1550: 0x000a, 0x1551: 0x000a,\n\t0x1552: 0x000a, 0x1553: 0x000a, 0x1554: 0x000a, 0x1555: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a,\n\t0x1558: 0x000a, 0x1559: 0x000a, 0x155a: 0x000a, 0x155b: 0x000a, 0x155c: 0x000a, 0x155d: 0x000a,\n\t0x155e: 0x000a, 0x155f: 0x000a, 0x1560: 0x000a, 0x1561: 0x000a, 0x1562: 0x000a, 0x1563: 0x000a,\n\t0x1564: 0x000a, 0x1565: 0x000a, 0x1566: 0x000a, 0x1567: 0x000a, 0x1568: 0x000a, 0x1569: 0x000a,\n\t0x156a: 0x000a, 0x156b: 0x000a, 0x156c: 0x000a, 0x156d: 0x000a, 0x156e: 0x000a, 0x156f: 0x000a,\n\t0x1570: 0x000a, 0x1571: 0x000a, 0x1572: 0x000a, 0x1573: 0x000a, 0x1574: 0x000a, 0x1575: 0x000a,\n\t0x1576: 0x000a, 0x1577: 0x000a, 0x1578: 0x000a, 0x1579: 0x000a, 0x157a: 0x000a, 0x157b: 0x000a,\n\t0x157c: 0x000a, 0x157d: 0x000a, 0x157e: 0x000a, 0x157f: 0x000a,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x000a, 0x1581: 0x000a, 0x1582: 0x000a, 0x1583: 0x000a, 0x1584: 0x000a, 0x1585: 0x000a,\n\t0x1586: 0x000a, 0x1587: 0x000a, 0x1588: 0x000a, 0x1589: 0x000a, 0x158a: 0x000a, 0x158b: 0x000a,\n\t0x158c: 0x000a, 0x158d: 0x000a, 0x158e: 0x000a, 0x158f: 0x000a, 0x1590: 0x000a, 0x1591: 0x000a,\n\t0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a,\n\t0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a,\n\t0x159e: 0x000a, 0x159f: 0x000a, 0x15a0: 0x000a, 0x15a1: 0x000a, 0x15a2: 0x000a, 0x15a3: 0x000a,\n\t0x15a4: 0x000a, 0x15a5: 0x000a, 0x15a6: 0x000a, 0x15a7: 0x000a, 0x15a8: 0x000a, 0x15a9: 0x000a,\n\t0x15aa: 0x000a, 0x15ab: 0x000a, 0x15ac: 0x000a, 0x15ad: 0x000a, 0x15ae: 0x000a, 0x15af: 0x000a,\n\t0x15b0: 0x000a, 0x15b1: 0x000a, 0x15b2: 0x000a, 0x15b3: 0x000a, 0x15b4: 0x000a, 0x15b5: 0x000a,\n\t0x15b6: 0x000a, 0x15b7: 0x000a, 0x15b8: 0x000a, 0x15b9: 0x000a, 0x15ba: 0x000a, 0x15bb: 0x000a,\n\t0x15bc: 0x000a, 0x15bd: 0x000a, 0x15be: 0x000a, 0x15bf: 0x000a,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x000a, 0x15c1: 0x000a, 0x15c2: 0x000a, 0x15c3: 0x000a, 0x15c4: 0x000a, 0x15c5: 0x000a,\n\t0x15c6: 0x000a, 0x15c7: 0x000a, 0x15c8: 0x000a, 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a,\n\t0x15cc: 0x000a, 0x15cd: 0x000a, 0x15ce: 0x000a, 0x15cf: 0x000a, 0x15d0: 0x000a, 0x15d1: 0x000a,\n\t0x15d2: 0x0003, 0x15d3: 0x0004, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a,\n\t0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a,\n\t0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a,\n\t0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a,\n\t0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a,\n\t0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a,\n\t0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a,\n\t0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a,\n\t0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x003a, 0x1609: 0x002a, 0x160a: 0x003a, 0x160b: 0x002a,\n\t0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a,\n\t0x1612: 0x000a, 0x1613: 0x000a, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a,\n\t0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a,\n\t0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a,\n\t0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x009a,\n\t0x162a: 0x008a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a,\n\t0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a,\n\t// Block 0x59, offset 0x1640\n\t0x167b: 0x000a,\n\t0x167c: 0x000a, 0x167d: 0x000a, 0x167e: 0x000a, 0x167f: 0x000a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x000a, 0x1681: 0x000a, 0x1682: 0x000a, 0x1683: 0x000a, 0x1684: 0x000a, 0x1685: 0x000a,\n\t0x1686: 0x000a, 0x1687: 0x000a, 0x1688: 0x000a, 0x1689: 0x000a, 0x168a: 0x000a, 0x168b: 0x000a,\n\t0x168c: 0x000a, 0x168d: 0x000a, 0x168e: 0x000a, 0x168f: 0x000a, 0x1690: 0x000a, 0x1691: 0x000a,\n\t0x1692: 0x000a, 0x1693: 0x000a, 0x1694: 0x000a, 0x1696: 0x000a, 0x1697: 0x000a,\n\t0x1698: 0x000a, 0x1699: 0x000a, 0x169a: 0x000a, 0x169b: 0x000a, 0x169c: 0x000a, 0x169d: 0x000a,\n\t0x169e: 0x000a, 0x169f: 0x000a, 0x16a0: 0x000a, 0x16a1: 0x000a, 0x16a2: 0x000a, 0x16a3: 0x000a,\n\t0x16a4: 0x000a, 0x16a5: 0x000a, 0x16a6: 0x000a, 0x16a7: 0x000a, 0x16a8: 0x000a, 0x16a9: 0x000a,\n\t0x16aa: 0x000a, 0x16ab: 0x000a, 0x16ac: 0x000a, 0x16ad: 0x000a, 0x16ae: 0x000a, 0x16af: 0x000a,\n\t0x16b0: 0x000a, 0x16b1: 0x000a, 0x16b2: 0x000a, 0x16b3: 0x000a, 0x16b4: 0x000a, 0x16b5: 0x000a,\n\t0x16b6: 0x000a, 0x16b7: 0x000a, 0x16b8: 0x000a, 0x16b9: 0x000a, 0x16ba: 0x000a, 0x16bb: 0x000a,\n\t0x16bc: 0x000a, 0x16bd: 0x000a, 0x16be: 0x000a, 0x16bf: 0x000a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x000a, 0x16c1: 0x000a, 0x16c2: 0x000a, 0x16c3: 0x000a, 0x16c4: 0x000a, 0x16c5: 0x000a,\n\t0x16c6: 0x000a, 0x16c7: 0x000a, 0x16c8: 0x000a, 0x16c9: 0x000a, 0x16ca: 0x000a, 0x16cb: 0x000a,\n\t0x16cc: 0x000a, 0x16cd: 0x000a, 0x16ce: 0x000a, 0x16cf: 0x000a, 0x16d0: 0x000a, 0x16d1: 0x000a,\n\t0x16d2: 0x000a, 0x16d3: 0x000a, 0x16d4: 0x000a, 0x16d5: 0x000a, 0x16d6: 0x000a, 0x16d7: 0x000a,\n\t0x16d8: 0x000a, 0x16d9: 0x000a, 0x16da: 0x000a, 0x16db: 0x000a, 0x16dc: 0x000a, 0x16dd: 0x000a,\n\t0x16de: 0x000a, 0x16df: 0x000a, 0x16e0: 0x000a, 0x16e1: 0x000a, 0x16e2: 0x000a, 0x16e3: 0x000a,\n\t0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a,\n\t0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a,\n\t0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a,\n\t0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a, 0x1727: 0x000a, 0x1728: 0x000a, 0x1729: 0x000a,\n\t0x172a: 0x000a, 0x172b: 0x000a, 0x172c: 0x000a, 0x172d: 0x000a, 0x172e: 0x000a, 0x172f: 0x000a,\n\t0x1730: 0x000a, 0x1731: 0x000a, 0x1732: 0x000a, 0x1733: 0x000a, 0x1734: 0x000a, 0x1735: 0x000a,\n\t0x1736: 0x000a, 0x1737: 0x000a, 0x1738: 0x000a, 0x1739: 0x000a, 0x173a: 0x000a, 0x173b: 0x000a,\n\t0x173c: 0x000a, 0x173d: 0x000a, 0x173e: 0x000a, 0x173f: 0x000a,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a,\n\t0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x0002, 0x1749: 0x0002, 0x174a: 0x0002, 0x174b: 0x0002,\n\t0x174c: 0x0002, 0x174d: 0x0002, 0x174e: 0x0002, 0x174f: 0x0002, 0x1750: 0x0002, 0x1751: 0x0002,\n\t0x1752: 0x0002, 0x1753: 0x0002, 0x1754: 0x0002, 0x1755: 0x0002, 0x1756: 0x0002, 0x1757: 0x0002,\n\t0x1758: 0x0002, 0x1759: 0x0002, 0x175a: 0x0002, 0x175b: 0x0002,\n\t// Block 0x5e, offset 0x1780\n\t0x17aa: 0x000a, 0x17ab: 0x000a, 0x17ac: 0x000a, 0x17ad: 0x000a, 0x17ae: 0x000a, 0x17af: 0x000a,\n\t0x17b0: 0x000a, 0x17b1: 0x000a, 0x17b2: 0x000a, 0x17b3: 0x000a, 0x17b4: 0x000a, 0x17b5: 0x000a,\n\t0x17b6: 0x000a, 0x17b7: 0x000a, 0x17b8: 0x000a, 0x17b9: 0x000a, 0x17ba: 0x000a, 0x17bb: 0x000a,\n\t0x17bc: 0x000a, 0x17bd: 0x000a, 0x17be: 0x000a, 0x17bf: 0x000a,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x000a, 0x17c1: 0x000a, 0x17c2: 0x000a, 0x17c3: 0x000a, 0x17c4: 0x000a, 0x17c5: 0x000a,\n\t0x17c6: 0x000a, 0x17c7: 0x000a, 0x17c8: 0x000a, 0x17c9: 0x000a, 0x17ca: 0x000a, 0x17cb: 0x000a,\n\t0x17cc: 0x000a, 0x17cd: 0x000a, 0x17ce: 0x000a, 0x17cf: 0x000a, 0x17d0: 0x000a, 0x17d1: 0x000a,\n\t0x17d2: 0x000a, 0x17d3: 0x000a, 0x17d4: 0x000a, 0x17d5: 0x000a, 0x17d6: 0x000a, 0x17d7: 0x000a,\n\t0x17d8: 0x000a, 0x17d9: 0x000a, 0x17da: 0x000a, 0x17db: 0x000a, 0x17dc: 0x000a, 0x17dd: 0x000a,\n\t0x17de: 0x000a, 0x17df: 0x000a, 0x17e0: 0x000a, 0x17e1: 0x000a, 0x17e2: 0x000a, 0x17e3: 0x000a,\n\t0x17e4: 0x000a, 0x17e5: 0x000a, 0x17e6: 0x000a, 0x17e7: 0x000a, 0x17e8: 0x000a, 0x17e9: 0x000a,\n\t0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a,\n\t0x17f0: 0x000a, 0x17f1: 0x000a, 0x17f2: 0x000a, 0x17f3: 0x000a, 0x17f4: 0x000a, 0x17f5: 0x000a,\n\t0x17f6: 0x000a, 0x17f7: 0x000a, 0x17f8: 0x000a, 0x17f9: 0x000a, 0x17fa: 0x000a, 0x17fb: 0x000a,\n\t0x17fc: 0x000a, 0x17fd: 0x000a, 0x17fe: 0x000a, 0x17ff: 0x000a,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x000a, 0x1801: 0x000a, 0x1802: 0x000a, 0x1803: 0x000a, 0x1804: 0x000a, 0x1805: 0x000a,\n\t0x1806: 0x000a, 0x1807: 0x000a, 0x1808: 0x000a, 0x1809: 0x000a, 0x180a: 0x000a, 0x180b: 0x000a,\n\t0x180c: 0x000a, 0x180d: 0x000a, 0x180e: 0x000a, 0x180f: 0x000a, 0x1810: 0x000a, 0x1811: 0x000a,\n\t0x1812: 0x000a, 0x1813: 0x000a, 0x1814: 0x000a, 0x1815: 0x000a, 0x1816: 0x000a, 0x1817: 0x000a,\n\t0x1818: 0x000a, 0x1819: 0x000a, 0x181a: 0x000a, 0x181b: 0x000a, 0x181c: 0x000a, 0x181d: 0x000a,\n\t0x181e: 0x000a, 0x181f: 0x000a, 0x1820: 0x000a, 0x1821: 0x000a, 0x1822: 0x000a, 0x1823: 0x000a,\n\t0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x003a, 0x1829: 0x002a,\n\t0x182a: 0x003a, 0x182b: 0x002a, 0x182c: 0x003a, 0x182d: 0x002a, 0x182e: 0x003a, 0x182f: 0x002a,\n\t0x1830: 0x003a, 0x1831: 0x002a, 0x1832: 0x003a, 0x1833: 0x002a, 0x1834: 0x003a, 0x1835: 0x002a,\n\t0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a,\n\t0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x009a,\n\t0x1846: 0x008a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a,\n\t0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a,\n\t0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a,\n\t0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a,\n\t0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a,\n\t0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x003a, 0x1867: 0x002a, 0x1868: 0x003a, 0x1869: 0x002a,\n\t0x186a: 0x003a, 0x186b: 0x002a, 0x186c: 0x003a, 0x186d: 0x002a, 0x186e: 0x003a, 0x186f: 0x002a,\n\t0x1870: 0x000a, 0x1871: 0x000a, 0x1872: 0x000a, 0x1873: 0x000a, 0x1874: 0x000a, 0x1875: 0x000a,\n\t0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a,\n\t0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x007a, 0x1884: 0x006a, 0x1885: 0x009a,\n\t0x1886: 0x008a, 0x1887: 0x00ba, 0x1888: 0x00aa, 0x1889: 0x009a, 0x188a: 0x008a, 0x188b: 0x007a,\n\t0x188c: 0x006a, 0x188d: 0x00da, 0x188e: 0x002a, 0x188f: 0x003a, 0x1890: 0x00ca, 0x1891: 0x009a,\n\t0x1892: 0x008a, 0x1893: 0x007a, 0x1894: 0x006a, 0x1895: 0x009a, 0x1896: 0x008a, 0x1897: 0x00ba,\n\t0x1898: 0x00aa, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a,\n\t0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a,\n\t0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x000a, 0x18a7: 0x000a, 0x18a8: 0x000a, 0x18a9: 0x000a,\n\t0x18aa: 0x000a, 0x18ab: 0x000a, 0x18ac: 0x000a, 0x18ad: 0x000a, 0x18ae: 0x000a, 0x18af: 0x000a,\n\t0x18b0: 0x000a, 0x18b1: 0x000a, 0x18b2: 0x000a, 0x18b3: 0x000a, 0x18b4: 0x000a, 0x18b5: 0x000a,\n\t0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a,\n\t0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x000a, 0x18c4: 0x000a, 0x18c5: 0x000a,\n\t0x18c6: 0x000a, 0x18c7: 0x000a, 0x18c8: 0x000a, 0x18c9: 0x000a, 0x18ca: 0x000a, 0x18cb: 0x000a,\n\t0x18cc: 0x000a, 0x18cd: 0x000a, 0x18ce: 0x000a, 0x18cf: 0x000a, 0x18d0: 0x000a, 0x18d1: 0x000a,\n\t0x18d2: 0x000a, 0x18d3: 0x000a, 0x18d4: 0x000a, 0x18d5: 0x000a, 0x18d6: 0x000a, 0x18d7: 0x000a,\n\t0x18d8: 0x003a, 0x18d9: 0x002a, 0x18da: 0x003a, 0x18db: 0x002a, 0x18dc: 0x000a, 0x18dd: 0x000a,\n\t0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a,\n\t0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x000a, 0x18e7: 0x000a, 0x18e8: 0x000a, 0x18e9: 0x000a,\n\t0x18ea: 0x000a, 0x18eb: 0x000a, 0x18ec: 0x000a, 0x18ed: 0x000a, 0x18ee: 0x000a, 0x18ef: 0x000a,\n\t0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a,\n\t0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a,\n\t0x18fc: 0x003a, 0x18fd: 0x002a, 0x18fe: 0x000a, 0x18ff: 0x000a,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x000a, 0x1904: 0x000a, 0x1905: 0x000a,\n\t0x1906: 0x000a, 0x1907: 0x000a, 0x1908: 0x000a, 0x1909: 0x000a, 0x190a: 0x000a, 0x190b: 0x000a,\n\t0x190c: 0x000a, 0x190d: 0x000a, 0x190e: 0x000a, 0x190f: 0x000a, 0x1910: 0x000a, 0x1911: 0x000a,\n\t0x1912: 0x000a, 0x1913: 0x000a, 0x1914: 0x000a, 0x1915: 0x000a, 0x1916: 0x000a, 0x1917: 0x000a,\n\t0x1918: 0x000a, 0x1919: 0x000a, 0x191a: 0x000a, 0x191b: 0x000a, 0x191c: 0x000a, 0x191d: 0x000a,\n\t0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a,\n\t0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a,\n\t0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a,\n\t0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a,\n\t0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a,\n\t0x193c: 0x000a, 0x193d: 0x000a, 0x193e: 0x000a, 0x193f: 0x000a,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a,\n\t0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a,\n\t0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a,\n\t0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a,\n\t0x1958: 0x000a, 0x1959: 0x000a, 0x195a: 0x000a, 0x195b: 0x000a, 0x195c: 0x000a, 0x195d: 0x000a,\n\t0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a,\n\t0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a,\n\t0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a,\n\t0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a, 0x1974: 0x000a, 0x1975: 0x000a,\n\t0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a,\n\t0x197c: 0x000a, 0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a,\n\t0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a,\n\t0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a,\n\t0x1992: 0x000a, 0x1993: 0x000a, 0x1994: 0x000a, 0x1995: 0x000a, 0x1996: 0x000a, 0x1997: 0x000a,\n\t0x1998: 0x000a, 0x1999: 0x000a, 0x199a: 0x000a, 0x199b: 0x000a, 0x199c: 0x000a, 0x199d: 0x000a,\n\t0x199e: 0x000a, 0x199f: 0x000a, 0x19a0: 0x000a, 0x19a1: 0x000a, 0x19a2: 0x000a, 0x19a3: 0x000a,\n\t0x19a4: 0x000a, 0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a,\n\t0x19aa: 0x000a, 0x19ab: 0x000a, 0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a,\n\t0x19b0: 0x000a, 0x19b1: 0x000a, 0x19b2: 0x000a, 0x19b3: 0x000a, 0x19b4: 0x000a, 0x19b5: 0x000a,\n\t0x19b6: 0x000a, 0x19b7: 0x000a, 0x19b8: 0x000a, 0x19b9: 0x000a, 0x19ba: 0x000a, 0x19bb: 0x000a,\n\t0x19bc: 0x000a, 0x19bd: 0x000a, 0x19be: 0x000a,\n\t// Block 0x67, offset 0x19c0\n\t0x19e5: 0x000a, 0x19e6: 0x000a, 0x19e7: 0x000a, 0x19e8: 0x000a, 0x19e9: 0x000a,\n\t0x19ea: 0x000a, 0x19ef: 0x000c,\n\t0x19f0: 0x000c, 0x19f1: 0x000c,\n\t0x19f9: 0x000a, 0x19fa: 0x000a, 0x19fb: 0x000a,\n\t0x19fc: 0x000a, 0x19fd: 0x000a, 0x19fe: 0x000a, 0x19ff: 0x000a,\n\t// Block 0x68, offset 0x1a00\n\t0x1a3f: 0x000c,\n\t// Block 0x69, offset 0x1a40\n\t0x1a60: 0x000c, 0x1a61: 0x000c, 0x1a62: 0x000c, 0x1a63: 0x000c,\n\t0x1a64: 0x000c, 0x1a65: 0x000c, 0x1a66: 0x000c, 0x1a67: 0x000c, 0x1a68: 0x000c, 0x1a69: 0x000c,\n\t0x1a6a: 0x000c, 0x1a6b: 0x000c, 0x1a6c: 0x000c, 0x1a6d: 0x000c, 0x1a6e: 0x000c, 0x1a6f: 0x000c,\n\t0x1a70: 0x000c, 0x1a71: 0x000c, 0x1a72: 0x000c, 0x1a73: 0x000c, 0x1a74: 0x000c, 0x1a75: 0x000c,\n\t0x1a76: 0x000c, 0x1a77: 0x000c, 0x1a78: 0x000c, 0x1a79: 0x000c, 0x1a7a: 0x000c, 0x1a7b: 0x000c,\n\t0x1a7c: 0x000c, 0x1a7d: 0x000c, 0x1a7e: 0x000c, 0x1a7f: 0x000c,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x000a, 0x1a81: 0x000a, 0x1a82: 0x000a, 0x1a83: 0x000a, 0x1a84: 0x000a, 0x1a85: 0x000a,\n\t0x1a86: 0x000a, 0x1a87: 0x000a, 0x1a88: 0x000a, 0x1a89: 0x000a, 0x1a8a: 0x000a, 0x1a8b: 0x000a,\n\t0x1a8c: 0x000a, 0x1a8d: 0x000a, 0x1a8e: 0x000a, 0x1a8f: 0x000a, 0x1a90: 0x000a, 0x1a91: 0x000a,\n\t0x1a92: 0x000a, 0x1a93: 0x000a, 0x1a94: 0x000a, 0x1a95: 0x000a, 0x1a96: 0x000a, 0x1a97: 0x000a,\n\t0x1a98: 0x000a, 0x1a99: 0x000a, 0x1a9a: 0x000a, 0x1a9b: 0x000a, 0x1a9c: 0x000a, 0x1a9d: 0x000a,\n\t0x1a9e: 0x000a, 0x1a9f: 0x000a, 0x1aa0: 0x000a, 0x1aa1: 0x000a, 0x1aa2: 0x003a, 0x1aa3: 0x002a,\n\t0x1aa4: 0x003a, 0x1aa5: 0x002a, 0x1aa6: 0x003a, 0x1aa7: 0x002a, 0x1aa8: 0x003a, 0x1aa9: 0x002a,\n\t0x1aaa: 0x000a, 0x1aab: 0x000a, 0x1aac: 0x000a, 0x1aad: 0x000a, 0x1aae: 0x000a, 0x1aaf: 0x000a,\n\t0x1ab0: 0x000a, 0x1ab1: 0x000a, 0x1ab2: 0x000a, 0x1ab3: 0x000a, 0x1ab4: 0x000a, 0x1ab5: 0x000a,\n\t0x1ab6: 0x000a, 0x1ab7: 0x000a, 0x1ab8: 0x000a, 0x1ab9: 0x000a, 0x1aba: 0x000a, 0x1abb: 0x000a,\n\t0x1abc: 0x000a, 0x1abd: 0x000a, 0x1abe: 0x000a, 0x1abf: 0x000a,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a,\n\t0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a,\n\t0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, 0x1b05: 0x000a,\n\t0x1b06: 0x000a, 0x1b07: 0x000a, 0x1b08: 0x000a, 0x1b09: 0x000a, 0x1b0a: 0x000a, 0x1b0b: 0x000a,\n\t0x1b0c: 0x000a, 0x1b0d: 0x000a, 0x1b0e: 0x000a, 0x1b0f: 0x000a, 0x1b10: 0x000a, 0x1b11: 0x000a,\n\t0x1b12: 0x000a, 0x1b13: 0x000a, 0x1b14: 0x000a, 0x1b15: 0x000a, 0x1b16: 0x000a, 0x1b17: 0x000a,\n\t0x1b18: 0x000a, 0x1b19: 0x000a, 0x1b1b: 0x000a, 0x1b1c: 0x000a, 0x1b1d: 0x000a,\n\t0x1b1e: 0x000a, 0x1b1f: 0x000a, 0x1b20: 0x000a, 0x1b21: 0x000a, 0x1b22: 0x000a, 0x1b23: 0x000a,\n\t0x1b24: 0x000a, 0x1b25: 0x000a, 0x1b26: 0x000a, 0x1b27: 0x000a, 0x1b28: 0x000a, 0x1b29: 0x000a,\n\t0x1b2a: 0x000a, 0x1b2b: 0x000a, 0x1b2c: 0x000a, 0x1b2d: 0x000a, 0x1b2e: 0x000a, 0x1b2f: 0x000a,\n\t0x1b30: 0x000a, 0x1b31: 0x000a, 0x1b32: 0x000a, 0x1b33: 0x000a, 0x1b34: 0x000a, 0x1b35: 0x000a,\n\t0x1b36: 0x000a, 0x1b37: 0x000a, 0x1b38: 0x000a, 0x1b39: 0x000a, 0x1b3a: 0x000a, 0x1b3b: 0x000a,\n\t0x1b3c: 0x000a, 0x1b3d: 0x000a, 0x1b3e: 0x000a, 0x1b3f: 0x000a,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a,\n\t0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a,\n\t0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a,\n\t0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a,\n\t0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5a: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a,\n\t0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a,\n\t0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a,\n\t0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a,\n\t0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a,\n\t0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a,\n\t0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a,\n\t0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a,\n\t0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a, 0x1bb4: 0x000a, 0x1bb5: 0x000a,\n\t0x1bb6: 0x000a, 0x1bb7: 0x000a, 0x1bb8: 0x000a, 0x1bb9: 0x000a, 0x1bba: 0x000a, 0x1bbb: 0x000a,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x0009, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a,\n\t0x1bc8: 0x003a, 0x1bc9: 0x002a, 0x1bca: 0x003a, 0x1bcb: 0x002a,\n\t0x1bcc: 0x003a, 0x1bcd: 0x002a, 0x1bce: 0x003a, 0x1bcf: 0x002a, 0x1bd0: 0x003a, 0x1bd1: 0x002a,\n\t0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x003a, 0x1bd5: 0x002a, 0x1bd6: 0x003a, 0x1bd7: 0x002a,\n\t0x1bd8: 0x003a, 0x1bd9: 0x002a, 0x1bda: 0x003a, 0x1bdb: 0x002a, 0x1bdc: 0x000a, 0x1bdd: 0x000a,\n\t0x1bde: 0x000a, 0x1bdf: 0x000a, 0x1be0: 0x000a,\n\t0x1bea: 0x000c, 0x1beb: 0x000c, 0x1bec: 0x000c, 0x1bed: 0x000c,\n\t0x1bf0: 0x000a,\n\t0x1bf6: 0x000a, 0x1bf7: 0x000a,\n\t0x1bfd: 0x000a, 0x1bfe: 0x000a, 0x1bff: 0x000a,\n\t// Block 0x70, offset 0x1c00\n\t0x1c19: 0x000c, 0x1c1a: 0x000c, 0x1c1b: 0x000a, 0x1c1c: 0x000a,\n\t0x1c20: 0x000a,\n\t// Block 0x71, offset 0x1c40\n\t0x1c7b: 0x000a,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0x000a, 0x1c81: 0x000a, 0x1c82: 0x000a, 0x1c83: 0x000a, 0x1c84: 0x000a, 0x1c85: 0x000a,\n\t0x1c86: 0x000a, 0x1c87: 0x000a, 0x1c88: 0x000a, 0x1c89: 0x000a, 0x1c8a: 0x000a, 0x1c8b: 0x000a,\n\t0x1c8c: 0x000a, 0x1c8d: 0x000a, 0x1c8e: 0x000a, 0x1c8f: 0x000a, 0x1c90: 0x000a, 0x1c91: 0x000a,\n\t0x1c92: 0x000a, 0x1c93: 0x000a, 0x1c94: 0x000a, 0x1c95: 0x000a, 0x1c96: 0x000a, 0x1c97: 0x000a,\n\t0x1c98: 0x000a, 0x1c99: 0x000a, 0x1c9a: 0x000a, 0x1c9b: 0x000a, 0x1c9c: 0x000a, 0x1c9d: 0x000a,\n\t0x1c9e: 0x000a, 0x1c9f: 0x000a, 0x1ca0: 0x000a, 0x1ca1: 0x000a, 0x1ca2: 0x000a, 0x1ca3: 0x000a,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cdd: 0x000a,\n\t0x1cde: 0x000a,\n\t// Block 0x74, offset 0x1d00\n\t0x1d10: 0x000a, 0x1d11: 0x000a,\n\t0x1d12: 0x000a, 0x1d13: 0x000a, 0x1d14: 0x000a, 0x1d15: 0x000a, 0x1d16: 0x000a, 0x1d17: 0x000a,\n\t0x1d18: 0x000a, 0x1d19: 0x000a, 0x1d1a: 0x000a, 0x1d1b: 0x000a, 0x1d1c: 0x000a, 0x1d1d: 0x000a,\n\t0x1d1e: 0x000a, 0x1d1f: 0x000a,\n\t0x1d3c: 0x000a, 0x1d3d: 0x000a, 0x1d3e: 0x000a,\n\t// Block 0x75, offset 0x1d40\n\t0x1d71: 0x000a, 0x1d72: 0x000a, 0x1d73: 0x000a, 0x1d74: 0x000a, 0x1d75: 0x000a,\n\t0x1d76: 0x000a, 0x1d77: 0x000a, 0x1d78: 0x000a, 0x1d79: 0x000a, 0x1d7a: 0x000a, 0x1d7b: 0x000a,\n\t0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a, 0x1d7f: 0x000a,\n\t// Block 0x76, offset 0x1d80\n\t0x1d8c: 0x000a, 0x1d8d: 0x000a, 0x1d8e: 0x000a, 0x1d8f: 0x000a,\n\t// Block 0x77, offset 0x1dc0\n\t0x1df7: 0x000a, 0x1df8: 0x000a, 0x1df9: 0x000a, 0x1dfa: 0x000a,\n\t// Block 0x78, offset 0x1e00\n\t0x1e1e: 0x000a, 0x1e1f: 0x000a,\n\t0x1e3f: 0x000a,\n\t// Block 0x79, offset 0x1e40\n\t0x1e50: 0x000a, 0x1e51: 0x000a,\n\t0x1e52: 0x000a, 0x1e53: 0x000a, 0x1e54: 0x000a, 0x1e55: 0x000a, 0x1e56: 0x000a, 0x1e57: 0x000a,\n\t0x1e58: 0x000a, 0x1e59: 0x000a, 0x1e5a: 0x000a, 0x1e5b: 0x000a, 0x1e5c: 0x000a, 0x1e5d: 0x000a,\n\t0x1e5e: 0x000a, 0x1e5f: 0x000a, 0x1e60: 0x000a, 0x1e61: 0x000a, 0x1e62: 0x000a, 0x1e63: 0x000a,\n\t0x1e64: 0x000a, 0x1e65: 0x000a, 0x1e66: 0x000a, 0x1e67: 0x000a, 0x1e68: 0x000a, 0x1e69: 0x000a,\n\t0x1e6a: 0x000a, 0x1e6b: 0x000a, 0x1e6c: 0x000a, 0x1e6d: 0x000a, 0x1e6e: 0x000a, 0x1e6f: 0x000a,\n\t0x1e70: 0x000a, 0x1e71: 0x000a, 0x1e72: 0x000a, 0x1e73: 0x000a, 0x1e74: 0x000a, 0x1e75: 0x000a,\n\t0x1e76: 0x000a, 0x1e77: 0x000a, 0x1e78: 0x000a, 0x1e79: 0x000a, 0x1e7a: 0x000a, 0x1e7b: 0x000a,\n\t0x1e7c: 0x000a, 0x1e7d: 0x000a, 0x1e7e: 0x000a, 0x1e7f: 0x000a,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0x000a, 0x1e81: 0x000a, 0x1e82: 0x000a, 0x1e83: 0x000a, 0x1e84: 0x000a, 0x1e85: 0x000a,\n\t0x1e86: 0x000a,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ecd: 0x000a, 0x1ece: 0x000a, 0x1ecf: 0x000a,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f2f: 0x000c,\n\t0x1f30: 0x000c, 0x1f31: 0x000c, 0x1f32: 0x000c, 0x1f33: 0x000a, 0x1f34: 0x000c, 0x1f35: 0x000c,\n\t0x1f36: 0x000c, 0x1f37: 0x000c, 0x1f38: 0x000c, 0x1f39: 0x000c, 0x1f3a: 0x000c, 0x1f3b: 0x000c,\n\t0x1f3c: 0x000c, 0x1f3d: 0x000c, 0x1f3e: 0x000a, 0x1f3f: 0x000a,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f5e: 0x000c, 0x1f5f: 0x000c,\n\t// Block 0x7e, offset 0x1f80\n\t0x1fb0: 0x000c, 0x1fb1: 0x000c,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1fc0: 0x000a, 0x1fc1: 0x000a, 0x1fc2: 0x000a, 0x1fc3: 0x000a, 0x1fc4: 0x000a, 0x1fc5: 0x000a,\n\t0x1fc6: 0x000a, 0x1fc7: 0x000a, 0x1fc8: 0x000a, 0x1fc9: 0x000a, 0x1fca: 0x000a, 0x1fcb: 0x000a,\n\t0x1fcc: 0x000a, 0x1fcd: 0x000a, 0x1fce: 0x000a, 0x1fcf: 0x000a, 0x1fd0: 0x000a, 0x1fd1: 0x000a,\n\t0x1fd2: 0x000a, 0x1fd3: 0x000a, 0x1fd4: 0x000a, 0x1fd5: 0x000a, 0x1fd6: 0x000a, 0x1fd7: 0x000a,\n\t0x1fd8: 0x000a, 0x1fd9: 0x000a, 0x1fda: 0x000a, 0x1fdb: 0x000a, 0x1fdc: 0x000a, 0x1fdd: 0x000a,\n\t0x1fde: 0x000a, 0x1fdf: 0x000a, 0x1fe0: 0x000a, 0x1fe1: 0x000a,\n\t// Block 0x80, offset 0x2000\n\t0x2008: 0x000a,\n\t// Block 0x81, offset 0x2040\n\t0x2042: 0x000c,\n\t0x2046: 0x000c, 0x204b: 0x000c,\n\t0x2065: 0x000c, 0x2066: 0x000c, 0x2068: 0x000a, 0x2069: 0x000a,\n\t0x206a: 0x000a, 0x206b: 0x000a,\n\t0x2078: 0x0004, 0x2079: 0x0004,\n\t// Block 0x82, offset 0x2080\n\t0x20b4: 0x000a, 0x20b5: 0x000a,\n\t0x20b6: 0x000a, 0x20b7: 0x000a,\n\t// Block 0x83, offset 0x20c0\n\t0x20c4: 0x000c, 0x20c5: 0x000c,\n\t0x20e0: 0x000c, 0x20e1: 0x000c, 0x20e2: 0x000c, 0x20e3: 0x000c,\n\t0x20e4: 0x000c, 0x20e5: 0x000c, 0x20e6: 0x000c, 0x20e7: 0x000c, 0x20e8: 0x000c, 0x20e9: 0x000c,\n\t0x20ea: 0x000c, 0x20eb: 0x000c, 0x20ec: 0x000c, 0x20ed: 0x000c, 0x20ee: 0x000c, 0x20ef: 0x000c,\n\t0x20f0: 0x000c, 0x20f1: 0x000c,\n\t0x20ff: 0x000c,\n\t// Block 0x84, offset 0x2100\n\t0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c,\n\t0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c,\n\t// Block 0x85, offset 0x2140\n\t0x2147: 0x000c, 0x2148: 0x000c, 0x2149: 0x000c, 0x214a: 0x000c, 0x214b: 0x000c,\n\t0x214c: 0x000c, 0x214d: 0x000c, 0x214e: 0x000c, 0x214f: 0x000c, 0x2150: 0x000c, 0x2151: 0x000c,\n\t// Block 0x86, offset 0x2180\n\t0x2180: 0x000c, 0x2181: 0x000c, 0x2182: 0x000c,\n\t0x21b3: 0x000c,\n\t0x21b6: 0x000c, 0x21b7: 0x000c, 0x21b8: 0x000c, 0x21b9: 0x000c,\n\t0x21bc: 0x000c,\n\t// Block 0x87, offset 0x21c0\n\t0x21e5: 0x000c,\n\t// Block 0x88, offset 0x2200\n\t0x2229: 0x000c,\n\t0x222a: 0x000c, 0x222b: 0x000c, 0x222c: 0x000c, 0x222d: 0x000c, 0x222e: 0x000c,\n\t0x2231: 0x000c, 0x2232: 0x000c, 0x2235: 0x000c,\n\t0x2236: 0x000c,\n\t// Block 0x89, offset 0x2240\n\t0x2243: 0x000c,\n\t0x224c: 0x000c,\n\t0x227c: 0x000c,\n\t// Block 0x8a, offset 0x2280\n\t0x22b0: 0x000c, 0x22b2: 0x000c, 0x22b3: 0x000c, 0x22b4: 0x000c,\n\t0x22b7: 0x000c, 0x22b8: 0x000c,\n\t0x22be: 0x000c, 0x22bf: 0x000c,\n\t// Block 0x8b, offset 0x22c0\n\t0x22c1: 0x000c,\n\t0x22ec: 0x000c, 0x22ed: 0x000c,\n\t0x22f6: 0x000c,\n\t// Block 0x8c, offset 0x2300\n\t0x2325: 0x000c, 0x2328: 0x000c,\n\t0x232d: 0x000c,\n\t// Block 0x8d, offset 0x2340\n\t0x235d: 0x0001,\n\t0x235e: 0x000c, 0x235f: 0x0001, 0x2360: 0x0001, 0x2361: 0x0001, 0x2362: 0x0001, 0x2363: 0x0001,\n\t0x2364: 0x0001, 0x2365: 0x0001, 0x2366: 0x0001, 0x2367: 0x0001, 0x2368: 0x0001, 0x2369: 0x0003,\n\t0x236a: 0x0001, 0x236b: 0x0001, 0x236c: 0x0001, 0x236d: 0x0001, 0x236e: 0x0001, 0x236f: 0x0001,\n\t0x2370: 0x0001, 0x2371: 0x0001, 0x2372: 0x0001, 0x2373: 0x0001, 0x2374: 0x0001, 0x2375: 0x0001,\n\t0x2376: 0x0001, 0x2377: 0x0001, 0x2378: 0x0001, 0x2379: 0x0001, 0x237a: 0x0001, 0x237b: 0x0001,\n\t0x237c: 0x0001, 0x237d: 0x0001, 0x237e: 0x0001, 0x237f: 0x0001,\n\t// Block 0x8e, offset 0x2380\n\t0x2380: 0x0001, 0x2381: 0x0001, 0x2382: 0x0001, 0x2383: 0x0001, 0x2384: 0x0001, 0x2385: 0x0001,\n\t0x2386: 0x0001, 0x2387: 0x0001, 0x2388: 0x0001, 0x2389: 0x0001, 0x238a: 0x0001, 0x238b: 0x0001,\n\t0x238c: 0x0001, 0x238d: 0x0001, 0x238e: 0x0001, 0x238f: 0x0001, 0x2390: 0x000d, 0x2391: 0x000d,\n\t0x2392: 0x000d, 0x2393: 0x000d, 0x2394: 0x000d, 0x2395: 0x000d, 0x2396: 0x000d, 0x2397: 0x000d,\n\t0x2398: 0x000d, 0x2399: 0x000d, 0x239a: 0x000d, 0x239b: 0x000d, 0x239c: 0x000d, 0x239d: 0x000d,\n\t0x239e: 0x000d, 0x239f: 0x000d, 0x23a0: 0x000d, 0x23a1: 0x000d, 0x23a2: 0x000d, 0x23a3: 0x000d,\n\t0x23a4: 0x000d, 0x23a5: 0x000d, 0x23a6: 0x000d, 0x23a7: 0x000d, 0x23a8: 0x000d, 0x23a9: 0x000d,\n\t0x23aa: 0x000d, 0x23ab: 0x000d, 0x23ac: 0x000d, 0x23ad: 0x000d, 0x23ae: 0x000d, 0x23af: 0x000d,\n\t0x23b0: 0x000d, 0x23b1: 0x000d, 0x23b2: 0x000d, 0x23b3: 0x000d, 0x23b4: 0x000d, 0x23b5: 0x000d,\n\t0x23b6: 0x000d, 0x23b7: 0x000d, 0x23b8: 0x000d, 0x23b9: 0x000d, 0x23ba: 0x000d, 0x23bb: 0x000d,\n\t0x23bc: 0x000d, 0x23bd: 0x000d, 0x23be: 0x000d, 0x23bf: 0x000d,\n\t// Block 0x8f, offset 0x23c0\n\t0x23c0: 0x000d, 0x23c1: 0x000d, 0x23c2: 0x000d, 0x23c3: 0x000d, 0x23c4: 0x000d, 0x23c5: 0x000d,\n\t0x23c6: 0x000d, 0x23c7: 0x000d, 0x23c8: 0x000d, 0x23c9: 0x000d, 0x23ca: 0x000d, 0x23cb: 0x000d,\n\t0x23cc: 0x000d, 0x23cd: 0x000d, 0x23ce: 0x000d, 0x23cf: 0x000d, 0x23d0: 0x000d, 0x23d1: 0x000d,\n\t0x23d2: 0x000d, 0x23d3: 0x000d, 0x23d4: 0x000d, 0x23d5: 0x000d, 0x23d6: 0x000d, 0x23d7: 0x000d,\n\t0x23d8: 0x000d, 0x23d9: 0x000d, 0x23da: 0x000d, 0x23db: 0x000d, 0x23dc: 0x000d, 0x23dd: 0x000d,\n\t0x23de: 0x000d, 0x23df: 0x000d, 0x23e0: 0x000d, 0x23e1: 0x000d, 0x23e2: 0x000d, 0x23e3: 0x000d,\n\t0x23e4: 0x000d, 0x23e5: 0x000d, 0x23e6: 0x000d, 0x23e7: 0x000d, 0x23e8: 0x000d, 0x23e9: 0x000d,\n\t0x23ea: 0x000d, 0x23eb: 0x000d, 0x23ec: 0x000d, 0x23ed: 0x000d, 0x23ee: 0x000d, 0x23ef: 0x000d,\n\t0x23f0: 0x000d, 0x23f1: 0x000d, 0x23f2: 0x000d, 0x23f3: 0x000d, 0x23f4: 0x000d, 0x23f5: 0x000d,\n\t0x23f6: 0x000d, 0x23f7: 0x000d, 0x23f8: 0x000d, 0x23f9: 0x000d, 0x23fa: 0x000d, 0x23fb: 0x000d,\n\t0x23fc: 0x000d, 0x23fd: 0x000d, 0x23fe: 0x000a, 0x23ff: 0x000a,\n\t// Block 0x90, offset 0x2400\n\t0x2400: 0x000d, 0x2401: 0x000d, 0x2402: 0x000d, 0x2403: 0x000d, 0x2404: 0x000d, 0x2405: 0x000d,\n\t0x2406: 0x000d, 0x2407: 0x000d, 0x2408: 0x000d, 0x2409: 0x000d, 0x240a: 0x000d, 0x240b: 0x000d,\n\t0x240c: 0x000d, 0x240d: 0x000d, 0x240e: 0x000d, 0x240f: 0x000d, 0x2410: 0x000b, 0x2411: 0x000b,\n\t0x2412: 0x000b, 0x2413: 0x000b, 0x2414: 0x000b, 0x2415: 0x000b, 0x2416: 0x000b, 0x2417: 0x000b,\n\t0x2418: 0x000b, 0x2419: 0x000b, 0x241a: 0x000b, 0x241b: 0x000b, 0x241c: 0x000b, 0x241d: 0x000b,\n\t0x241e: 0x000b, 0x241f: 0x000b, 0x2420: 0x000b, 0x2421: 0x000b, 0x2422: 0x000b, 0x2423: 0x000b,\n\t0x2424: 0x000b, 0x2425: 0x000b, 0x2426: 0x000b, 0x2427: 0x000b, 0x2428: 0x000b, 0x2429: 0x000b,\n\t0x242a: 0x000b, 0x242b: 0x000b, 0x242c: 0x000b, 0x242d: 0x000b, 0x242e: 0x000b, 0x242f: 0x000b,\n\t0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d,\n\t0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d,\n\t0x243c: 0x000d, 0x243d: 0x000a, 0x243e: 0x000d, 0x243f: 0x000d,\n\t// Block 0x91, offset 0x2440\n\t0x2440: 0x000c, 0x2441: 0x000c, 0x2442: 0x000c, 0x2443: 0x000c, 0x2444: 0x000c, 0x2445: 0x000c,\n\t0x2446: 0x000c, 0x2447: 0x000c, 0x2448: 0x000c, 0x2449: 0x000c, 0x244a: 0x000c, 0x244b: 0x000c,\n\t0x244c: 0x000c, 0x244d: 0x000c, 0x244e: 0x000c, 0x244f: 0x000c, 0x2450: 0x000a, 0x2451: 0x000a,\n\t0x2452: 0x000a, 0x2453: 0x000a, 0x2454: 0x000a, 0x2455: 0x000a, 0x2456: 0x000a, 0x2457: 0x000a,\n\t0x2458: 0x000a, 0x2459: 0x000a,\n\t0x2460: 0x000c, 0x2461: 0x000c, 0x2462: 0x000c, 0x2463: 0x000c,\n\t0x2464: 0x000c, 0x2465: 0x000c, 0x2466: 0x000c, 0x2467: 0x000c, 0x2468: 0x000c, 0x2469: 0x000c,\n\t0x246a: 0x000c, 0x246b: 0x000c, 0x246c: 0x000c, 0x246d: 0x000c, 0x246e: 0x000c, 0x246f: 0x000c,\n\t0x2470: 0x000a, 0x2471: 0x000a, 0x2472: 0x000a, 0x2473: 0x000a, 0x2474: 0x000a, 0x2475: 0x000a,\n\t0x2476: 0x000a, 0x2477: 0x000a, 0x2478: 0x000a, 0x2479: 0x000a, 0x247a: 0x000a, 0x247b: 0x000a,\n\t0x247c: 0x000a, 0x247d: 0x000a, 0x247e: 0x000a, 0x247f: 0x000a,\n\t// Block 0x92, offset 0x2480\n\t0x2480: 0x000a, 0x2481: 0x000a, 0x2482: 0x000a, 0x2483: 0x000a, 0x2484: 0x000a, 0x2485: 0x000a,\n\t0x2486: 0x000a, 0x2487: 0x000a, 0x2488: 0x000a, 0x2489: 0x000a, 0x248a: 0x000a, 0x248b: 0x000a,\n\t0x248c: 0x000a, 0x248d: 0x000a, 0x248e: 0x000a, 0x248f: 0x000a, 0x2490: 0x0006, 0x2491: 0x000a,\n\t0x2492: 0x0006, 0x2494: 0x000a, 0x2495: 0x0006, 0x2496: 0x000a, 0x2497: 0x000a,\n\t0x2498: 0x000a, 0x2499: 0x009a, 0x249a: 0x008a, 0x249b: 0x007a, 0x249c: 0x006a, 0x249d: 0x009a,\n\t0x249e: 0x008a, 0x249f: 0x0004, 0x24a0: 0x000a, 0x24a1: 0x000a, 0x24a2: 0x0003, 0x24a3: 0x0003,\n\t0x24a4: 0x000a, 0x24a5: 0x000a, 0x24a6: 0x000a, 0x24a8: 0x000a, 0x24a9: 0x0004,\n\t0x24aa: 0x0004, 0x24ab: 0x000a,\n\t0x24b0: 0x000d, 0x24b1: 0x000d, 0x24b2: 0x000d, 0x24b3: 0x000d, 0x24b4: 0x000d, 0x24b5: 0x000d,\n\t0x24b6: 0x000d, 0x24b7: 0x000d, 0x24b8: 0x000d, 0x24b9: 0x000d, 0x24ba: 0x000d, 0x24bb: 0x000d,\n\t0x24bc: 0x000d, 0x24bd: 0x000d, 0x24be: 0x000d, 0x24bf: 0x000d,\n\t// Block 0x93, offset 0x24c0\n\t0x24c0: 0x000d, 0x24c1: 0x000d, 0x24c2: 0x000d, 0x24c3: 0x000d, 0x24c4: 0x000d, 0x24c5: 0x000d,\n\t0x24c6: 0x000d, 0x24c7: 0x000d, 0x24c8: 0x000d, 0x24c9: 0x000d, 0x24ca: 0x000d, 0x24cb: 0x000d,\n\t0x24cc: 0x000d, 0x24cd: 0x000d, 0x24ce: 0x000d, 0x24cf: 0x000d, 0x24d0: 0x000d, 0x24d1: 0x000d,\n\t0x24d2: 0x000d, 0x24d3: 0x000d, 0x24d4: 0x000d, 0x24d5: 0x000d, 0x24d6: 0x000d, 0x24d7: 0x000d,\n\t0x24d8: 0x000d, 0x24d9: 0x000d, 0x24da: 0x000d, 0x24db: 0x000d, 0x24dc: 0x000d, 0x24dd: 0x000d,\n\t0x24de: 0x000d, 0x24df: 0x000d, 0x24e0: 0x000d, 0x24e1: 0x000d, 0x24e2: 0x000d, 0x24e3: 0x000d,\n\t0x24e4: 0x000d, 0x24e5: 0x000d, 0x24e6: 0x000d, 0x24e7: 0x000d, 0x24e8: 0x000d, 0x24e9: 0x000d,\n\t0x24ea: 0x000d, 0x24eb: 0x000d, 0x24ec: 0x000d, 0x24ed: 0x000d, 0x24ee: 0x000d, 0x24ef: 0x000d,\n\t0x24f0: 0x000d, 0x24f1: 0x000d, 0x24f2: 0x000d, 0x24f3: 0x000d, 0x24f4: 0x000d, 0x24f5: 0x000d,\n\t0x24f6: 0x000d, 0x24f7: 0x000d, 0x24f8: 0x000d, 0x24f9: 0x000d, 0x24fa: 0x000d, 0x24fb: 0x000d,\n\t0x24fc: 0x000d, 0x24fd: 0x000d, 0x24fe: 0x000d, 0x24ff: 0x000b,\n\t// Block 0x94, offset 0x2500\n\t0x2501: 0x000a, 0x2502: 0x000a, 0x2503: 0x0004, 0x2504: 0x0004, 0x2505: 0x0004,\n\t0x2506: 0x000a, 0x2507: 0x000a, 0x2508: 0x003a, 0x2509: 0x002a, 0x250a: 0x000a, 0x250b: 0x0003,\n\t0x250c: 0x0006, 0x250d: 0x0003, 0x250e: 0x0006, 0x250f: 0x0006, 0x2510: 0x0002, 0x2511: 0x0002,\n\t0x2512: 0x0002, 0x2513: 0x0002, 0x2514: 0x0002, 0x2515: 0x0002, 0x2516: 0x0002, 0x2517: 0x0002,\n\t0x2518: 0x0002, 0x2519: 0x0002, 0x251a: 0x0006, 0x251b: 0x000a, 0x251c: 0x000a, 0x251d: 0x000a,\n\t0x251e: 0x000a, 0x251f: 0x000a, 0x2520: 0x000a,\n\t0x253b: 0x005a,\n\t0x253c: 0x000a, 0x253d: 0x004a, 0x253e: 0x000a, 0x253f: 0x000a,\n\t// Block 0x95, offset 0x2540\n\t0x2540: 0x000a,\n\t0x255b: 0x005a, 0x255c: 0x000a, 0x255d: 0x004a,\n\t0x255e: 0x000a, 0x255f: 0x00fa, 0x2560: 0x00ea, 0x2561: 0x000a, 0x2562: 0x003a, 0x2563: 0x002a,\n\t0x2564: 0x000a, 0x2565: 0x000a,\n\t// Block 0x96, offset 0x2580\n\t0x25a0: 0x0004, 0x25a1: 0x0004, 0x25a2: 0x000a, 0x25a3: 0x000a,\n\t0x25a4: 0x000a, 0x25a5: 0x0004, 0x25a6: 0x0004, 0x25a8: 0x000a, 0x25a9: 0x000a,\n\t0x25aa: 0x000a, 0x25ab: 0x000a, 0x25ac: 0x000a, 0x25ad: 0x000a, 0x25ae: 0x000a,\n\t0x25b0: 0x000b, 0x25b1: 0x000b, 0x25b2: 0x000b, 0x25b3: 0x000b, 0x25b4: 0x000b, 0x25b5: 0x000b,\n\t0x25b6: 0x000b, 0x25b7: 0x000b, 0x25b8: 0x000b, 0x25b9: 0x000a, 0x25ba: 0x000a, 0x25bb: 0x000a,\n\t0x25bc: 0x000a, 0x25bd: 0x000a, 0x25be: 0x000b, 0x25bf: 0x000b,\n\t// Block 0x97, offset 0x25c0\n\t0x25c1: 0x000a,\n\t// Block 0x98, offset 0x2600\n\t0x2600: 0x000a, 0x2601: 0x000a, 0x2602: 0x000a, 0x2603: 0x000a, 0x2604: 0x000a, 0x2605: 0x000a,\n\t0x2606: 0x000a, 0x2607: 0x000a, 0x2608: 0x000a, 0x2609: 0x000a, 0x260a: 0x000a, 0x260b: 0x000a,\n\t0x260c: 0x000a, 0x2610: 0x000a, 0x2611: 0x000a,\n\t0x2612: 0x000a, 0x2613: 0x000a, 0x2614: 0x000a, 0x2615: 0x000a, 0x2616: 0x000a, 0x2617: 0x000a,\n\t0x2618: 0x000a, 0x2619: 0x000a, 0x261a: 0x000a, 0x261b: 0x000a,\n\t0x2620: 0x000a,\n\t// Block 0x99, offset 0x2640\n\t0x267d: 0x000c,\n\t// Block 0x9a, offset 0x2680\n\t0x26a0: 0x000c, 0x26a1: 0x0002, 0x26a2: 0x0002, 0x26a3: 0x0002,\n\t0x26a4: 0x0002, 0x26a5: 0x0002, 0x26a6: 0x0002, 0x26a7: 0x0002, 0x26a8: 0x0002, 0x26a9: 0x0002,\n\t0x26aa: 0x0002, 0x26ab: 0x0002, 0x26ac: 0x0002, 0x26ad: 0x0002, 0x26ae: 0x0002, 0x26af: 0x0002,\n\t0x26b0: 0x0002, 0x26b1: 0x0002, 0x26b2: 0x0002, 0x26b3: 0x0002, 0x26b4: 0x0002, 0x26b5: 0x0002,\n\t0x26b6: 0x0002, 0x26b7: 0x0002, 0x26b8: 0x0002, 0x26b9: 0x0002, 0x26ba: 0x0002, 0x26bb: 0x0002,\n\t// Block 0x9b, offset 0x26c0\n\t0x26f6: 0x000c, 0x26f7: 0x000c, 0x26f8: 0x000c, 0x26f9: 0x000c, 0x26fa: 0x000c,\n\t// Block 0x9c, offset 0x2700\n\t0x2700: 0x0001, 0x2701: 0x0001, 0x2702: 0x0001, 0x2703: 0x0001, 0x2704: 0x0001, 0x2705: 0x0001,\n\t0x2706: 0x0001, 0x2707: 0x0001, 0x2708: 0x0001, 0x2709: 0x0001, 0x270a: 0x0001, 0x270b: 0x0001,\n\t0x270c: 0x0001, 0x270d: 0x0001, 0x270e: 0x0001, 0x270f: 0x0001, 0x2710: 0x0001, 0x2711: 0x0001,\n\t0x2712: 0x0001, 0x2713: 0x0001, 0x2714: 0x0001, 0x2715: 0x0001, 0x2716: 0x0001, 0x2717: 0x0001,\n\t0x2718: 0x0001, 0x2719: 0x0001, 0x271a: 0x0001, 0x271b: 0x0001, 0x271c: 0x0001, 0x271d: 0x0001,\n\t0x271e: 0x0001, 0x271f: 0x0001, 0x2720: 0x0001, 0x2721: 0x0001, 0x2722: 0x0001, 0x2723: 0x0001,\n\t0x2724: 0x0001, 0x2725: 0x0001, 0x2726: 0x0001, 0x2727: 0x0001, 0x2728: 0x0001, 0x2729: 0x0001,\n\t0x272a: 0x0001, 0x272b: 0x0001, 0x272c: 0x0001, 0x272d: 0x0001, 0x272e: 0x0001, 0x272f: 0x0001,\n\t0x2730: 0x0001, 0x2731: 0x0001, 0x2732: 0x0001, 0x2733: 0x0001, 0x2734: 0x0001, 0x2735: 0x0001,\n\t0x2736: 0x0001, 0x2737: 0x0001, 0x2738: 0x0001, 0x2739: 0x0001, 0x273a: 0x0001, 0x273b: 0x0001,\n\t0x273c: 0x0001, 0x273d: 0x0001, 0x273e: 0x0001, 0x273f: 0x0001,\n\t// Block 0x9d, offset 0x2740\n\t0x2740: 0x0001, 0x2741: 0x0001, 0x2742: 0x0001, 0x2743: 0x0001, 0x2744: 0x0001, 0x2745: 0x0001,\n\t0x2746: 0x0001, 0x2747: 0x0001, 0x2748: 0x0001, 0x2749: 0x0001, 0x274a: 0x0001, 0x274b: 0x0001,\n\t0x274c: 0x0001, 0x274d: 0x0001, 0x274e: 0x0001, 0x274f: 0x0001, 0x2750: 0x0001, 0x2751: 0x0001,\n\t0x2752: 0x0001, 0x2753: 0x0001, 0x2754: 0x0001, 0x2755: 0x0001, 0x2756: 0x0001, 0x2757: 0x0001,\n\t0x2758: 0x0001, 0x2759: 0x0001, 0x275a: 0x0001, 0x275b: 0x0001, 0x275c: 0x0001, 0x275d: 0x0001,\n\t0x275e: 0x0001, 0x275f: 0x000a, 0x2760: 0x0001, 0x2761: 0x0001, 0x2762: 0x0001, 0x2763: 0x0001,\n\t0x2764: 0x0001, 0x2765: 0x0001, 0x2766: 0x0001, 0x2767: 0x0001, 0x2768: 0x0001, 0x2769: 0x0001,\n\t0x276a: 0x0001, 0x276b: 0x0001, 0x276c: 0x0001, 0x276d: 0x0001, 0x276e: 0x0001, 0x276f: 0x0001,\n\t0x2770: 0x0001, 0x2771: 0x0001, 0x2772: 0x0001, 0x2773: 0x0001, 0x2774: 0x0001, 0x2775: 0x0001,\n\t0x2776: 0x0001, 0x2777: 0x0001, 0x2778: 0x0001, 0x2779: 0x0001, 0x277a: 0x0001, 0x277b: 0x0001,\n\t0x277c: 0x0001, 0x277d: 0x0001, 0x277e: 0x0001, 0x277f: 0x0001,\n\t// Block 0x9e, offset 0x2780\n\t0x2780: 0x0001, 0x2781: 0x000c, 0x2782: 0x000c, 0x2783: 0x000c, 0x2784: 0x0001, 0x2785: 0x000c,\n\t0x2786: 0x000c, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001,\n\t0x278c: 0x000c, 0x278d: 0x000c, 0x278e: 0x000c, 0x278f: 0x000c, 0x2790: 0x0001, 0x2791: 0x0001,\n\t0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001,\n\t0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001,\n\t0x279e: 0x0001, 0x279f: 0x0001, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001,\n\t0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001,\n\t0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001,\n\t0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001,\n\t0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x000c, 0x27b9: 0x000c, 0x27ba: 0x000c, 0x27bb: 0x0001,\n\t0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x000c,\n\t// Block 0x9f, offset 0x27c0\n\t0x27c0: 0x0001, 0x27c1: 0x0001, 0x27c2: 0x0001, 0x27c3: 0x0001, 0x27c4: 0x0001, 0x27c5: 0x0001,\n\t0x27c6: 0x0001, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001,\n\t0x27cc: 0x0001, 0x27cd: 0x0001, 0x27ce: 0x0001, 0x27cf: 0x0001, 0x27d0: 0x0001, 0x27d1: 0x0001,\n\t0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001,\n\t0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001,\n\t0x27de: 0x0001, 0x27df: 0x0001, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001,\n\t0x27e4: 0x0001, 0x27e5: 0x000c, 0x27e6: 0x000c, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001,\n\t0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001,\n\t0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001,\n\t0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x0001, 0x27f9: 0x0001, 0x27fa: 0x0001, 0x27fb: 0x0001,\n\t0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x0001,\n\t// Block 0xa0, offset 0x2800\n\t0x2800: 0x0001, 0x2801: 0x0001, 0x2802: 0x0001, 0x2803: 0x0001, 0x2804: 0x0001, 0x2805: 0x0001,\n\t0x2806: 0x0001, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001,\n\t0x280c: 0x0001, 0x280d: 0x0001, 0x280e: 0x0001, 0x280f: 0x0001, 0x2810: 0x0001, 0x2811: 0x0001,\n\t0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001,\n\t0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001,\n\t0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001,\n\t0x2824: 0x0001, 0x2825: 0x0001, 0x2826: 0x0001, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001,\n\t0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001,\n\t0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001,\n\t0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x0001, 0x2839: 0x000a, 0x283a: 0x000a, 0x283b: 0x000a,\n\t0x283c: 0x000a, 0x283d: 0x000a, 0x283e: 0x000a, 0x283f: 0x000a,\n\t// Block 0xa1, offset 0x2840\n\t0x2840: 0x000d, 0x2841: 0x000d, 0x2842: 0x000d, 0x2843: 0x000d, 0x2844: 0x000d, 0x2845: 0x000d,\n\t0x2846: 0x000d, 0x2847: 0x000d, 0x2848: 0x000d, 0x2849: 0x000d, 0x284a: 0x000d, 0x284b: 0x000d,\n\t0x284c: 0x000d, 0x284d: 0x000d, 0x284e: 0x000d, 0x284f: 0x000d, 0x2850: 0x000d, 0x2851: 0x000d,\n\t0x2852: 0x000d, 0x2853: 0x000d, 0x2854: 0x000d, 0x2855: 0x000d, 0x2856: 0x000d, 0x2857: 0x000d,\n\t0x2858: 0x000d, 0x2859: 0x000d, 0x285a: 0x000d, 0x285b: 0x000d, 0x285c: 0x000d, 0x285d: 0x000d,\n\t0x285e: 0x000d, 0x285f: 0x000d, 0x2860: 0x000d, 0x2861: 0x000d, 0x2862: 0x000d, 0x2863: 0x000d,\n\t0x2864: 0x000c, 0x2865: 0x000c, 0x2866: 0x000c, 0x2867: 0x000c, 0x2868: 0x000d, 0x2869: 0x000d,\n\t0x286a: 0x000d, 0x286b: 0x000d, 0x286c: 0x000d, 0x286d: 0x000d, 0x286e: 0x000d, 0x286f: 0x000d,\n\t0x2870: 0x0005, 0x2871: 0x0005, 0x2872: 0x0005, 0x2873: 0x0005, 0x2874: 0x0005, 0x2875: 0x0005,\n\t0x2876: 0x0005, 0x2877: 0x0005, 0x2878: 0x0005, 0x2879: 0x0005, 0x287a: 0x000d, 0x287b: 0x000d,\n\t0x287c: 0x000d, 0x287d: 0x000d, 0x287e: 0x000d, 0x287f: 0x000d,\n\t// Block 0xa2, offset 0x2880\n\t0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001,\n\t0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001,\n\t0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001,\n\t0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001,\n\t0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001,\n\t0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0005, 0x28a1: 0x0005, 0x28a2: 0x0005, 0x28a3: 0x0005,\n\t0x28a4: 0x0005, 0x28a5: 0x0005, 0x28a6: 0x0005, 0x28a7: 0x0005, 0x28a8: 0x0005, 0x28a9: 0x0005,\n\t0x28aa: 0x0005, 0x28ab: 0x0005, 0x28ac: 0x0005, 0x28ad: 0x0005, 0x28ae: 0x0005, 0x28af: 0x0005,\n\t0x28b0: 0x0005, 0x28b1: 0x0005, 0x28b2: 0x0005, 0x28b3: 0x0005, 0x28b4: 0x0005, 0x28b5: 0x0005,\n\t0x28b6: 0x0005, 0x28b7: 0x0005, 0x28b8: 0x0005, 0x28b9: 0x0005, 0x28ba: 0x0005, 0x28bb: 0x0005,\n\t0x28bc: 0x0005, 0x28bd: 0x0005, 0x28be: 0x0005, 0x28bf: 0x0001,\n\t// Block 0xa3, offset 0x28c0\n\t0x28c0: 0x0001, 0x28c1: 0x0001, 0x28c2: 0x0001, 0x28c3: 0x0001, 0x28c4: 0x0001, 0x28c5: 0x0001,\n\t0x28c6: 0x0001, 0x28c7: 0x0001, 0x28c8: 0x0001, 0x28c9: 0x0001, 0x28ca: 0x0001, 0x28cb: 0x0001,\n\t0x28cc: 0x0001, 0x28cd: 0x0001, 0x28ce: 0x0001, 0x28cf: 0x0001, 0x28d0: 0x0001, 0x28d1: 0x0001,\n\t0x28d2: 0x0001, 0x28d3: 0x0001, 0x28d4: 0x0001, 0x28d5: 0x0001, 0x28d6: 0x0001, 0x28d7: 0x0001,\n\t0x28d8: 0x0001, 0x28d9: 0x0001, 0x28da: 0x0001, 0x28db: 0x0001, 0x28dc: 0x0001, 0x28dd: 0x0001,\n\t0x28de: 0x0001, 0x28df: 0x0001, 0x28e0: 0x0001, 0x28e1: 0x0001, 0x28e2: 0x0001, 0x28e3: 0x0001,\n\t0x28e4: 0x0001, 0x28e5: 0x0001, 0x28e6: 0x0001, 0x28e7: 0x0001, 0x28e8: 0x0001, 0x28e9: 0x0001,\n\t0x28ea: 0x0001, 0x28eb: 0x0001, 0x28ec: 0x0001, 0x28ed: 0x0001, 0x28ee: 0x0001, 0x28ef: 0x0001,\n\t0x28f0: 0x000d, 0x28f1: 0x000d, 0x28f2: 0x000d, 0x28f3: 0x000d, 0x28f4: 0x000d, 0x28f5: 0x000d,\n\t0x28f6: 0x000d, 0x28f7: 0x000d, 0x28f8: 0x000d, 0x28f9: 0x000d, 0x28fa: 0x000d, 0x28fb: 0x000d,\n\t0x28fc: 0x000d, 0x28fd: 0x000d, 0x28fe: 0x000d, 0x28ff: 0x000d,\n\t// Block 0xa4, offset 0x2900\n\t0x2900: 0x000d, 0x2901: 0x000d, 0x2902: 0x000d, 0x2903: 0x000d, 0x2904: 0x000d, 0x2905: 0x000d,\n\t0x2906: 0x000c, 0x2907: 0x000c, 0x2908: 0x000c, 0x2909: 0x000c, 0x290a: 0x000c, 0x290b: 0x000c,\n\t0x290c: 0x000c, 0x290d: 0x000c, 0x290e: 0x000c, 0x290f: 0x000c, 0x2910: 0x000c, 0x2911: 0x000d,\n\t0x2912: 0x000d, 0x2913: 0x000d, 0x2914: 0x000d, 0x2915: 0x000d, 0x2916: 0x000d, 0x2917: 0x000d,\n\t0x2918: 0x000d, 0x2919: 0x000d, 0x291a: 0x000d, 0x291b: 0x000d, 0x291c: 0x000d, 0x291d: 0x000d,\n\t0x291e: 0x000d, 0x291f: 0x000d, 0x2920: 0x000d, 0x2921: 0x000d, 0x2922: 0x000d, 0x2923: 0x000d,\n\t0x2924: 0x000d, 0x2925: 0x000d, 0x2926: 0x000d, 0x2927: 0x000d, 0x2928: 0x000d, 0x2929: 0x000d,\n\t0x292a: 0x000d, 0x292b: 0x000d, 0x292c: 0x000d, 0x292d: 0x000d, 0x292e: 0x000d, 0x292f: 0x000d,\n\t0x2930: 0x0001, 0x2931: 0x0001, 0x2932: 0x0001, 0x2933: 0x0001, 0x2934: 0x0001, 0x2935: 0x0001,\n\t0x2936: 0x0001, 0x2937: 0x0001, 0x2938: 0x0001, 0x2939: 0x0001, 0x293a: 0x0001, 0x293b: 0x0001,\n\t0x293c: 0x0001, 0x293d: 0x0001, 0x293e: 0x0001, 0x293f: 0x0001,\n\t// Block 0xa5, offset 0x2940\n\t0x2941: 0x000c,\n\t0x2978: 0x000c, 0x2979: 0x000c, 0x297a: 0x000c, 0x297b: 0x000c,\n\t0x297c: 0x000c, 0x297d: 0x000c, 0x297e: 0x000c, 0x297f: 0x000c,\n\t// Block 0xa6, offset 0x2980\n\t0x2980: 0x000c, 0x2981: 0x000c, 0x2982: 0x000c, 0x2983: 0x000c, 0x2984: 0x000c, 0x2985: 0x000c,\n\t0x2986: 0x000c,\n\t0x2992: 0x000a, 0x2993: 0x000a, 0x2994: 0x000a, 0x2995: 0x000a, 0x2996: 0x000a, 0x2997: 0x000a,\n\t0x2998: 0x000a, 0x2999: 0x000a, 0x299a: 0x000a, 0x299b: 0x000a, 0x299c: 0x000a, 0x299d: 0x000a,\n\t0x299e: 0x000a, 0x299f: 0x000a, 0x29a0: 0x000a, 0x29a1: 0x000a, 0x29a2: 0x000a, 0x29a3: 0x000a,\n\t0x29a4: 0x000a, 0x29a5: 0x000a,\n\t0x29bf: 0x000c,\n\t// Block 0xa7, offset 0x29c0\n\t0x29c0: 0x000c, 0x29c1: 0x000c,\n\t0x29f3: 0x000c, 0x29f4: 0x000c, 0x29f5: 0x000c,\n\t0x29f6: 0x000c, 0x29f9: 0x000c, 0x29fa: 0x000c,\n\t// Block 0xa8, offset 0x2a00\n\t0x2a00: 0x000c, 0x2a01: 0x000c, 0x2a02: 0x000c,\n\t0x2a27: 0x000c, 0x2a28: 0x000c, 0x2a29: 0x000c,\n\t0x2a2a: 0x000c, 0x2a2b: 0x000c, 0x2a2d: 0x000c, 0x2a2e: 0x000c, 0x2a2f: 0x000c,\n\t0x2a30: 0x000c, 0x2a31: 0x000c, 0x2a32: 0x000c, 0x2a33: 0x000c, 0x2a34: 0x000c,\n\t// Block 0xa9, offset 0x2a40\n\t0x2a73: 0x000c,\n\t// Block 0xaa, offset 0x2a80\n\t0x2a80: 0x000c, 0x2a81: 0x000c,\n\t0x2ab6: 0x000c, 0x2ab7: 0x000c, 0x2ab8: 0x000c, 0x2ab9: 0x000c, 0x2aba: 0x000c, 0x2abb: 0x000c,\n\t0x2abc: 0x000c, 0x2abd: 0x000c, 0x2abe: 0x000c,\n\t// Block 0xab, offset 0x2ac0\n\t0x2ac9: 0x000c, 0x2aca: 0x000c, 0x2acb: 0x000c,\n\t0x2acc: 0x000c,\n\t// Block 0xac, offset 0x2b00\n\t0x2b2f: 0x000c,\n\t0x2b30: 0x000c, 0x2b31: 0x000c, 0x2b34: 0x000c,\n\t0x2b36: 0x000c, 0x2b37: 0x000c,\n\t0x2b3e: 0x000c,\n\t// Block 0xad, offset 0x2b40\n\t0x2b5f: 0x000c, 0x2b63: 0x000c,\n\t0x2b64: 0x000c, 0x2b65: 0x000c, 0x2b66: 0x000c, 0x2b67: 0x000c, 0x2b68: 0x000c, 0x2b69: 0x000c,\n\t0x2b6a: 0x000c,\n\t// Block 0xae, offset 0x2b80\n\t0x2b80: 0x000c,\n\t0x2ba6: 0x000c, 0x2ba7: 0x000c, 0x2ba8: 0x000c, 0x2ba9: 0x000c,\n\t0x2baa: 0x000c, 0x2bab: 0x000c, 0x2bac: 0x000c,\n\t0x2bb0: 0x000c, 0x2bb1: 0x000c, 0x2bb2: 0x000c, 0x2bb3: 0x000c, 0x2bb4: 0x000c,\n\t// Block 0xaf, offset 0x2bc0\n\t0x2bf8: 0x000c, 0x2bf9: 0x000c, 0x2bfa: 0x000c, 0x2bfb: 0x000c,\n\t0x2bfc: 0x000c, 0x2bfd: 0x000c, 0x2bfe: 0x000c, 0x2bff: 0x000c,\n\t// Block 0xb0, offset 0x2c00\n\t0x2c02: 0x000c, 0x2c03: 0x000c, 0x2c04: 0x000c,\n\t0x2c06: 0x000c,\n\t0x2c1e: 0x000c,\n\t// Block 0xb1, offset 0x2c40\n\t0x2c73: 0x000c, 0x2c74: 0x000c, 0x2c75: 0x000c,\n\t0x2c76: 0x000c, 0x2c77: 0x000c, 0x2c78: 0x000c, 0x2c7a: 0x000c,\n\t0x2c7f: 0x000c,\n\t// Block 0xb2, offset 0x2c80\n\t0x2c80: 0x000c, 0x2c82: 0x000c, 0x2c83: 0x000c,\n\t// Block 0xb3, offset 0x2cc0\n\t0x2cf2: 0x000c, 0x2cf3: 0x000c, 0x2cf4: 0x000c, 0x2cf5: 0x000c,\n\t0x2cfc: 0x000c, 0x2cfd: 0x000c, 0x2cff: 0x000c,\n\t// Block 0xb4, offset 0x2d00\n\t0x2d00: 0x000c,\n\t0x2d1c: 0x000c, 0x2d1d: 0x000c,\n\t// Block 0xb5, offset 0x2d40\n\t0x2d73: 0x000c, 0x2d74: 0x000c, 0x2d75: 0x000c,\n\t0x2d76: 0x000c, 0x2d77: 0x000c, 0x2d78: 0x000c, 0x2d79: 0x000c, 0x2d7a: 0x000c,\n\t0x2d7d: 0x000c, 0x2d7f: 0x000c,\n\t// Block 0xb6, offset 0x2d80\n\t0x2d80: 0x000c,\n\t0x2da0: 0x000a, 0x2da1: 0x000a, 0x2da2: 0x000a, 0x2da3: 0x000a,\n\t0x2da4: 0x000a, 0x2da5: 0x000a, 0x2da6: 0x000a, 0x2da7: 0x000a, 0x2da8: 0x000a, 0x2da9: 0x000a,\n\t0x2daa: 0x000a, 0x2dab: 0x000a, 0x2dac: 0x000a,\n\t// Block 0xb7, offset 0x2dc0\n\t0x2deb: 0x000c, 0x2ded: 0x000c,\n\t0x2df0: 0x000c, 0x2df1: 0x000c, 0x2df2: 0x000c, 0x2df3: 0x000c, 0x2df4: 0x000c, 0x2df5: 0x000c,\n\t0x2df7: 0x000c,\n\t// Block 0xb8, offset 0x2e00\n\t0x2e1d: 0x000c,\n\t0x2e1e: 0x000c, 0x2e1f: 0x000c, 0x2e22: 0x000c, 0x2e23: 0x000c,\n\t0x2e24: 0x000c, 0x2e25: 0x000c, 0x2e27: 0x000c, 0x2e28: 0x000c, 0x2e29: 0x000c,\n\t0x2e2a: 0x000c, 0x2e2b: 0x000c,\n\t// Block 0xb9, offset 0x2e40\n\t0x2e6f: 0x000c,\n\t0x2e70: 0x000c, 0x2e71: 0x000c, 0x2e72: 0x000c, 0x2e73: 0x000c, 0x2e74: 0x000c, 0x2e75: 0x000c,\n\t0x2e76: 0x000c, 0x2e77: 0x000c, 0x2e79: 0x000c, 0x2e7a: 0x000c,\n\t// Block 0xba, offset 0x2e80\n\t0x2e81: 0x000c, 0x2e82: 0x000c, 0x2e83: 0x000c, 0x2e84: 0x000c, 0x2e85: 0x000c,\n\t0x2e86: 0x000c, 0x2e89: 0x000c, 0x2e8a: 0x000c,\n\t0x2eb3: 0x000c, 0x2eb4: 0x000c, 0x2eb5: 0x000c,\n\t0x2eb6: 0x000c, 0x2eb7: 0x000c, 0x2eb8: 0x000c, 0x2ebb: 0x000c,\n\t0x2ebc: 0x000c, 0x2ebd: 0x000c, 0x2ebe: 0x000c,\n\t// Block 0xbb, offset 0x2ec0\n\t0x2ec7: 0x000c,\n\t0x2ed1: 0x000c,\n\t0x2ed2: 0x000c, 0x2ed3: 0x000c, 0x2ed4: 0x000c, 0x2ed5: 0x000c, 0x2ed6: 0x000c,\n\t0x2ed9: 0x000c, 0x2eda: 0x000c, 0x2edb: 0x000c,\n\t// Block 0xbc, offset 0x2f00\n\t0x2f0a: 0x000c, 0x2f0b: 0x000c,\n\t0x2f0c: 0x000c, 0x2f0d: 0x000c, 0x2f0e: 0x000c, 0x2f0f: 0x000c, 0x2f10: 0x000c, 0x2f11: 0x000c,\n\t0x2f12: 0x000c, 0x2f13: 0x000c, 0x2f14: 0x000c, 0x2f15: 0x000c, 0x2f16: 0x000c,\n\t0x2f18: 0x000c, 0x2f19: 0x000c,\n\t// Block 0xbd, offset 0x2f40\n\t0x2f70: 0x000c, 0x2f71: 0x000c, 0x2f72: 0x000c, 0x2f73: 0x000c, 0x2f74: 0x000c, 0x2f75: 0x000c,\n\t0x2f76: 0x000c, 0x2f78: 0x000c, 0x2f79: 0x000c, 0x2f7a: 0x000c, 0x2f7b: 0x000c,\n\t0x2f7c: 0x000c, 0x2f7d: 0x000c,\n\t// Block 0xbe, offset 0x2f80\n\t0x2f92: 0x000c, 0x2f93: 0x000c, 0x2f94: 0x000c, 0x2f95: 0x000c, 0x2f96: 0x000c, 0x2f97: 0x000c,\n\t0x2f98: 0x000c, 0x2f99: 0x000c, 0x2f9a: 0x000c, 0x2f9b: 0x000c, 0x2f9c: 0x000c, 0x2f9d: 0x000c,\n\t0x2f9e: 0x000c, 0x2f9f: 0x000c, 0x2fa0: 0x000c, 0x2fa1: 0x000c, 0x2fa2: 0x000c, 0x2fa3: 0x000c,\n\t0x2fa4: 0x000c, 0x2fa5: 0x000c, 0x2fa6: 0x000c, 0x2fa7: 0x000c,\n\t0x2faa: 0x000c, 0x2fab: 0x000c, 0x2fac: 0x000c, 0x2fad: 0x000c, 0x2fae: 0x000c, 0x2faf: 0x000c,\n\t0x2fb0: 0x000c, 0x2fb2: 0x000c, 0x2fb3: 0x000c, 0x2fb5: 0x000c,\n\t0x2fb6: 0x000c,\n\t// Block 0xbf, offset 0x2fc0\n\t0x2ff1: 0x000c, 0x2ff2: 0x000c, 0x2ff3: 0x000c, 0x2ff4: 0x000c, 0x2ff5: 0x000c,\n\t0x2ff6: 0x000c, 0x2ffa: 0x000c,\n\t0x2ffc: 0x000c, 0x2ffd: 0x000c, 0x2fff: 0x000c,\n\t// Block 0xc0, offset 0x3000\n\t0x3000: 0x000c, 0x3001: 0x000c, 0x3002: 0x000c, 0x3003: 0x000c, 0x3004: 0x000c, 0x3005: 0x000c,\n\t0x3007: 0x000c,\n\t// Block 0xc1, offset 0x3040\n\t0x3050: 0x000c, 0x3051: 0x000c,\n\t0x3055: 0x000c, 0x3057: 0x000c,\n\t// Block 0xc2, offset 0x3080\n\t0x30b3: 0x000c, 0x30b4: 0x000c,\n\t// Block 0xc3, offset 0x30c0\n\t0x30f0: 0x000c, 0x30f1: 0x000c, 0x30f2: 0x000c, 0x30f3: 0x000c, 0x30f4: 0x000c,\n\t// Block 0xc4, offset 0x3100\n\t0x3130: 0x000c, 0x3131: 0x000c, 0x3132: 0x000c, 0x3133: 0x000c, 0x3134: 0x000c, 0x3135: 0x000c,\n\t0x3136: 0x000c,\n\t// Block 0xc5, offset 0x3140\n\t0x314f: 0x000c, 0x3150: 0x000c, 0x3151: 0x000c,\n\t0x3152: 0x000c,\n\t// Block 0xc6, offset 0x3180\n\t0x319d: 0x000c,\n\t0x319e: 0x000c, 0x31a0: 0x000b, 0x31a1: 0x000b, 0x31a2: 0x000b, 0x31a3: 0x000b,\n\t// Block 0xc7, offset 0x31c0\n\t0x31e7: 0x000c, 0x31e8: 0x000c, 0x31e9: 0x000c,\n\t0x31f3: 0x000b, 0x31f4: 0x000b, 0x31f5: 0x000b,\n\t0x31f6: 0x000b, 0x31f7: 0x000b, 0x31f8: 0x000b, 0x31f9: 0x000b, 0x31fa: 0x000b, 0x31fb: 0x000c,\n\t0x31fc: 0x000c, 0x31fd: 0x000c, 0x31fe: 0x000c, 0x31ff: 0x000c,\n\t// Block 0xc8, offset 0x3200\n\t0x3200: 0x000c, 0x3201: 0x000c, 0x3202: 0x000c, 0x3205: 0x000c,\n\t0x3206: 0x000c, 0x3207: 0x000c, 0x3208: 0x000c, 0x3209: 0x000c, 0x320a: 0x000c, 0x320b: 0x000c,\n\t0x322a: 0x000c, 0x322b: 0x000c, 0x322c: 0x000c, 0x322d: 0x000c,\n\t// Block 0xc9, offset 0x3240\n\t0x3240: 0x000a, 0x3241: 0x000a, 0x3242: 0x000c, 0x3243: 0x000c, 0x3244: 0x000c, 0x3245: 0x000a,\n\t// Block 0xca, offset 0x3280\n\t0x3280: 0x000a, 0x3281: 0x000a, 0x3282: 0x000a, 0x3283: 0x000a, 0x3284: 0x000a, 0x3285: 0x000a,\n\t0x3286: 0x000a, 0x3287: 0x000a, 0x3288: 0x000a, 0x3289: 0x000a, 0x328a: 0x000a, 0x328b: 0x000a,\n\t0x328c: 0x000a, 0x328d: 0x000a, 0x328e: 0x000a, 0x328f: 0x000a, 0x3290: 0x000a, 0x3291: 0x000a,\n\t0x3292: 0x000a, 0x3293: 0x000a, 0x3294: 0x000a, 0x3295: 0x000a, 0x3296: 0x000a,\n\t// Block 0xcb, offset 0x32c0\n\t0x32db: 0x000a,\n\t// Block 0xcc, offset 0x3300\n\t0x3315: 0x000a,\n\t// Block 0xcd, offset 0x3340\n\t0x334f: 0x000a,\n\t// Block 0xce, offset 0x3380\n\t0x3389: 0x000a,\n\t// Block 0xcf, offset 0x33c0\n\t0x33c3: 0x000a,\n\t0x33ce: 0x0002, 0x33cf: 0x0002, 0x33d0: 0x0002, 0x33d1: 0x0002,\n\t0x33d2: 0x0002, 0x33d3: 0x0002, 0x33d4: 0x0002, 0x33d5: 0x0002, 0x33d6: 0x0002, 0x33d7: 0x0002,\n\t0x33d8: 0x0002, 0x33d9: 0x0002, 0x33da: 0x0002, 0x33db: 0x0002, 0x33dc: 0x0002, 0x33dd: 0x0002,\n\t0x33de: 0x0002, 0x33df: 0x0002, 0x33e0: 0x0002, 0x33e1: 0x0002, 0x33e2: 0x0002, 0x33e3: 0x0002,\n\t0x33e4: 0x0002, 0x33e5: 0x0002, 0x33e6: 0x0002, 0x33e7: 0x0002, 0x33e8: 0x0002, 0x33e9: 0x0002,\n\t0x33ea: 0x0002, 0x33eb: 0x0002, 0x33ec: 0x0002, 0x33ed: 0x0002, 0x33ee: 0x0002, 0x33ef: 0x0002,\n\t0x33f0: 0x0002, 0x33f1: 0x0002, 0x33f2: 0x0002, 0x33f3: 0x0002, 0x33f4: 0x0002, 0x33f5: 0x0002,\n\t0x33f6: 0x0002, 0x33f7: 0x0002, 0x33f8: 0x0002, 0x33f9: 0x0002, 0x33fa: 0x0002, 0x33fb: 0x0002,\n\t0x33fc: 0x0002, 0x33fd: 0x0002, 0x33fe: 0x0002, 0x33ff: 0x0002,\n\t// Block 0xd0, offset 0x3400\n\t0x3400: 0x000c, 0x3401: 0x000c, 0x3402: 0x000c, 0x3403: 0x000c, 0x3404: 0x000c, 0x3405: 0x000c,\n\t0x3406: 0x000c, 0x3407: 0x000c, 0x3408: 0x000c, 0x3409: 0x000c, 0x340a: 0x000c, 0x340b: 0x000c,\n\t0x340c: 0x000c, 0x340d: 0x000c, 0x340e: 0x000c, 0x340f: 0x000c, 0x3410: 0x000c, 0x3411: 0x000c,\n\t0x3412: 0x000c, 0x3413: 0x000c, 0x3414: 0x000c, 0x3415: 0x000c, 0x3416: 0x000c, 0x3417: 0x000c,\n\t0x3418: 0x000c, 0x3419: 0x000c, 0x341a: 0x000c, 0x341b: 0x000c, 0x341c: 0x000c, 0x341d: 0x000c,\n\t0x341e: 0x000c, 0x341f: 0x000c, 0x3420: 0x000c, 0x3421: 0x000c, 0x3422: 0x000c, 0x3423: 0x000c,\n\t0x3424: 0x000c, 0x3425: 0x000c, 0x3426: 0x000c, 0x3427: 0x000c, 0x3428: 0x000c, 0x3429: 0x000c,\n\t0x342a: 0x000c, 0x342b: 0x000c, 0x342c: 0x000c, 0x342d: 0x000c, 0x342e: 0x000c, 0x342f: 0x000c,\n\t0x3430: 0x000c, 0x3431: 0x000c, 0x3432: 0x000c, 0x3433: 0x000c, 0x3434: 0x000c, 0x3435: 0x000c,\n\t0x3436: 0x000c, 0x343b: 0x000c,\n\t0x343c: 0x000c, 0x343d: 0x000c, 0x343e: 0x000c, 0x343f: 0x000c,\n\t// Block 0xd1, offset 0x3440\n\t0x3440: 0x000c, 0x3441: 0x000c, 0x3442: 0x000c, 0x3443: 0x000c, 0x3444: 0x000c, 0x3445: 0x000c,\n\t0x3446: 0x000c, 0x3447: 0x000c, 0x3448: 0x000c, 0x3449: 0x000c, 0x344a: 0x000c, 0x344b: 0x000c,\n\t0x344c: 0x000c, 0x344d: 0x000c, 0x344e: 0x000c, 0x344f: 0x000c, 0x3450: 0x000c, 0x3451: 0x000c,\n\t0x3452: 0x000c, 0x3453: 0x000c, 0x3454: 0x000c, 0x3455: 0x000c, 0x3456: 0x000c, 0x3457: 0x000c,\n\t0x3458: 0x000c, 0x3459: 0x000c, 0x345a: 0x000c, 0x345b: 0x000c, 0x345c: 0x000c, 0x345d: 0x000c,\n\t0x345e: 0x000c, 0x345f: 0x000c, 0x3460: 0x000c, 0x3461: 0x000c, 0x3462: 0x000c, 0x3463: 0x000c,\n\t0x3464: 0x000c, 0x3465: 0x000c, 0x3466: 0x000c, 0x3467: 0x000c, 0x3468: 0x000c, 0x3469: 0x000c,\n\t0x346a: 0x000c, 0x346b: 0x000c, 0x346c: 0x000c,\n\t0x3475: 0x000c,\n\t// Block 0xd2, offset 0x3480\n\t0x3484: 0x000c,\n\t0x349b: 0x000c, 0x349c: 0x000c, 0x349d: 0x000c,\n\t0x349e: 0x000c, 0x349f: 0x000c, 0x34a1: 0x000c, 0x34a2: 0x000c, 0x34a3: 0x000c,\n\t0x34a4: 0x000c, 0x34a5: 0x000c, 0x34a6: 0x000c, 0x34a7: 0x000c, 0x34a8: 0x000c, 0x34a9: 0x000c,\n\t0x34aa: 0x000c, 0x34ab: 0x000c, 0x34ac: 0x000c, 0x34ad: 0x000c, 0x34ae: 0x000c, 0x34af: 0x000c,\n\t// Block 0xd3, offset 0x34c0\n\t0x34c0: 0x000c, 0x34c1: 0x000c, 0x34c2: 0x000c, 0x34c3: 0x000c, 0x34c4: 0x000c, 0x34c5: 0x000c,\n\t0x34c6: 0x000c, 0x34c8: 0x000c, 0x34c9: 0x000c, 0x34ca: 0x000c, 0x34cb: 0x000c,\n\t0x34cc: 0x000c, 0x34cd: 0x000c, 0x34ce: 0x000c, 0x34cf: 0x000c, 0x34d0: 0x000c, 0x34d1: 0x000c,\n\t0x34d2: 0x000c, 0x34d3: 0x000c, 0x34d4: 0x000c, 0x34d5: 0x000c, 0x34d6: 0x000c, 0x34d7: 0x000c,\n\t0x34d8: 0x000c, 0x34db: 0x000c, 0x34dc: 0x000c, 0x34dd: 0x000c,\n\t0x34de: 0x000c, 0x34df: 0x000c, 0x34e0: 0x000c, 0x34e1: 0x000c, 0x34e3: 0x000c,\n\t0x34e4: 0x000c, 0x34e6: 0x000c, 0x34e7: 0x000c, 0x34e8: 0x000c, 0x34e9: 0x000c,\n\t0x34ea: 0x000c,\n\t// Block 0xd4, offset 0x3500\n\t0x3500: 0x0001, 0x3501: 0x0001, 0x3502: 0x0001, 0x3503: 0x0001, 0x3504: 0x0001, 0x3505: 0x0001,\n\t0x3506: 0x0001, 0x3507: 0x0001, 0x3508: 0x0001, 0x3509: 0x0001, 0x350a: 0x0001, 0x350b: 0x0001,\n\t0x350c: 0x0001, 0x350d: 0x0001, 0x350e: 0x0001, 0x350f: 0x0001, 0x3510: 0x000c, 0x3511: 0x000c,\n\t0x3512: 0x000c, 0x3513: 0x000c, 0x3514: 0x000c, 0x3515: 0x000c, 0x3516: 0x000c, 0x3517: 0x0001,\n\t0x3518: 0x0001, 0x3519: 0x0001, 0x351a: 0x0001, 0x351b: 0x0001, 0x351c: 0x0001, 0x351d: 0x0001,\n\t0x351e: 0x0001, 0x351f: 0x0001, 0x3520: 0x0001, 0x3521: 0x0001, 0x3522: 0x0001, 0x3523: 0x0001,\n\t0x3524: 0x0001, 0x3525: 0x0001, 0x3526: 0x0001, 0x3527: 0x0001, 0x3528: 0x0001, 0x3529: 0x0001,\n\t0x352a: 0x0001, 0x352b: 0x0001, 0x352c: 0x0001, 0x352d: 0x0001, 0x352e: 0x0001, 0x352f: 0x0001,\n\t0x3530: 0x0001, 0x3531: 0x0001, 0x3532: 0x0001, 0x3533: 0x0001, 0x3534: 0x0001, 0x3535: 0x0001,\n\t0x3536: 0x0001, 0x3537: 0x0001, 0x3538: 0x0001, 0x3539: 0x0001, 0x353a: 0x0001, 0x353b: 0x0001,\n\t0x353c: 0x0001, 0x353d: 0x0001, 0x353e: 0x0001, 0x353f: 0x0001,\n\t// Block 0xd5, offset 0x3540\n\t0x3540: 0x0001, 0x3541: 0x0001, 0x3542: 0x0001, 0x3543: 0x0001, 0x3544: 0x000c, 0x3545: 0x000c,\n\t0x3546: 0x000c, 0x3547: 0x000c, 0x3548: 0x000c, 0x3549: 0x000c, 0x354a: 0x000c, 0x354b: 0x0001,\n\t0x354c: 0x0001, 0x354d: 0x0001, 0x354e: 0x0001, 0x354f: 0x0001, 0x3550: 0x0001, 0x3551: 0x0001,\n\t0x3552: 0x0001, 0x3553: 0x0001, 0x3554: 0x0001, 0x3555: 0x0001, 0x3556: 0x0001, 0x3557: 0x0001,\n\t0x3558: 0x0001, 0x3559: 0x0001, 0x355a: 0x0001, 0x355b: 0x0001, 0x355c: 0x0001, 0x355d: 0x0001,\n\t0x355e: 0x0001, 0x355f: 0x0001, 0x3560: 0x0001, 0x3561: 0x0001, 0x3562: 0x0001, 0x3563: 0x0001,\n\t0x3564: 0x0001, 0x3565: 0x0001, 0x3566: 0x0001, 0x3567: 0x0001, 0x3568: 0x0001, 0x3569: 0x0001,\n\t0x356a: 0x0001, 0x356b: 0x0001, 0x356c: 0x0001, 0x356d: 0x0001, 0x356e: 0x0001, 0x356f: 0x0001,\n\t0x3570: 0x0001, 0x3571: 0x0001, 0x3572: 0x0001, 0x3573: 0x0001, 0x3574: 0x0001, 0x3575: 0x0001,\n\t0x3576: 0x0001, 0x3577: 0x0001, 0x3578: 0x0001, 0x3579: 0x0001, 0x357a: 0x0001, 0x357b: 0x0001,\n\t0x357c: 0x0001, 0x357d: 0x0001, 0x357e: 0x0001, 0x357f: 0x0001,\n\t// Block 0xd6, offset 0x3580\n\t0x3580: 0x000d, 0x3581: 0x000d, 0x3582: 0x000d, 0x3583: 0x000d, 0x3584: 0x000d, 0x3585: 0x000d,\n\t0x3586: 0x000d, 0x3587: 0x000d, 0x3588: 0x000d, 0x3589: 0x000d, 0x358a: 0x000d, 0x358b: 0x000d,\n\t0x358c: 0x000d, 0x358d: 0x000d, 0x358e: 0x000d, 0x358f: 0x000d, 0x3590: 0x000d, 0x3591: 0x000d,\n\t0x3592: 0x000d, 0x3593: 0x000d, 0x3594: 0x000d, 0x3595: 0x000d, 0x3596: 0x000d, 0x3597: 0x000d,\n\t0x3598: 0x000d, 0x3599: 0x000d, 0x359a: 0x000d, 0x359b: 0x000d, 0x359c: 0x000d, 0x359d: 0x000d,\n\t0x359e: 0x000d, 0x359f: 0x000d, 0x35a0: 0x000d, 0x35a1: 0x000d, 0x35a2: 0x000d, 0x35a3: 0x000d,\n\t0x35a4: 0x000d, 0x35a5: 0x000d, 0x35a6: 0x000d, 0x35a7: 0x000d, 0x35a8: 0x000d, 0x35a9: 0x000d,\n\t0x35aa: 0x000d, 0x35ab: 0x000d, 0x35ac: 0x000d, 0x35ad: 0x000d, 0x35ae: 0x000d, 0x35af: 0x000d,\n\t0x35b0: 0x000a, 0x35b1: 0x000a, 0x35b2: 0x000d, 0x35b3: 0x000d, 0x35b4: 0x000d, 0x35b5: 0x000d,\n\t0x35b6: 0x000d, 0x35b7: 0x000d, 0x35b8: 0x000d, 0x35b9: 0x000d, 0x35ba: 0x000d, 0x35bb: 0x000d,\n\t0x35bc: 0x000d, 0x35bd: 0x000d, 0x35be: 0x000d, 0x35bf: 0x000d,\n\t// Block 0xd7, offset 0x35c0\n\t0x35c0: 0x000a, 0x35c1: 0x000a, 0x35c2: 0x000a, 0x35c3: 0x000a, 0x35c4: 0x000a, 0x35c5: 0x000a,\n\t0x35c6: 0x000a, 0x35c7: 0x000a, 0x35c8: 0x000a, 0x35c9: 0x000a, 0x35ca: 0x000a, 0x35cb: 0x000a,\n\t0x35cc: 0x000a, 0x35cd: 0x000a, 0x35ce: 0x000a, 0x35cf: 0x000a, 0x35d0: 0x000a, 0x35d1: 0x000a,\n\t0x35d2: 0x000a, 0x35d3: 0x000a, 0x35d4: 0x000a, 0x35d5: 0x000a, 0x35d6: 0x000a, 0x35d7: 0x000a,\n\t0x35d8: 0x000a, 0x35d9: 0x000a, 0x35da: 0x000a, 0x35db: 0x000a, 0x35dc: 0x000a, 0x35dd: 0x000a,\n\t0x35de: 0x000a, 0x35df: 0x000a, 0x35e0: 0x000a, 0x35e1: 0x000a, 0x35e2: 0x000a, 0x35e3: 0x000a,\n\t0x35e4: 0x000a, 0x35e5: 0x000a, 0x35e6: 0x000a, 0x35e7: 0x000a, 0x35e8: 0x000a, 0x35e9: 0x000a,\n\t0x35ea: 0x000a, 0x35eb: 0x000a,\n\t0x35f0: 0x000a, 0x35f1: 0x000a, 0x35f2: 0x000a, 0x35f3: 0x000a, 0x35f4: 0x000a, 0x35f5: 0x000a,\n\t0x35f6: 0x000a, 0x35f7: 0x000a, 0x35f8: 0x000a, 0x35f9: 0x000a, 0x35fa: 0x000a, 0x35fb: 0x000a,\n\t0x35fc: 0x000a, 0x35fd: 0x000a, 0x35fe: 0x000a, 0x35ff: 0x000a,\n\t// Block 0xd8, offset 0x3600\n\t0x3600: 0x000a, 0x3601: 0x000a, 0x3602: 0x000a, 0x3603: 0x000a, 0x3604: 0x000a, 0x3605: 0x000a,\n\t0x3606: 0x000a, 0x3607: 0x000a, 0x3608: 0x000a, 0x3609: 0x000a, 0x360a: 0x000a, 0x360b: 0x000a,\n\t0x360c: 0x000a, 0x360d: 0x000a, 0x360e: 0x000a, 0x360f: 0x000a, 0x3610: 0x000a, 0x3611: 0x000a,\n\t0x3612: 0x000a, 0x3613: 0x000a,\n\t0x3620: 0x000a, 0x3621: 0x000a, 0x3622: 0x000a, 0x3623: 0x000a,\n\t0x3624: 0x000a, 0x3625: 0x000a, 0x3626: 0x000a, 0x3627: 0x000a, 0x3628: 0x000a, 0x3629: 0x000a,\n\t0x362a: 0x000a, 0x362b: 0x000a, 0x362c: 0x000a, 0x362d: 0x000a, 0x362e: 0x000a,\n\t0x3631: 0x000a, 0x3632: 0x000a, 0x3633: 0x000a, 0x3634: 0x000a, 0x3635: 0x000a,\n\t0x3636: 0x000a, 0x3637: 0x000a, 0x3638: 0x000a, 0x3639: 0x000a, 0x363a: 0x000a, 0x363b: 0x000a,\n\t0x363c: 0x000a, 0x363d: 0x000a, 0x363e: 0x000a, 0x363f: 0x000a,\n\t// Block 0xd9, offset 0x3640\n\t0x3641: 0x000a, 0x3642: 0x000a, 0x3643: 0x000a, 0x3644: 0x000a, 0x3645: 0x000a,\n\t0x3646: 0x000a, 0x3647: 0x000a, 0x3648: 0x000a, 0x3649: 0x000a, 0x364a: 0x000a, 0x364b: 0x000a,\n\t0x364c: 0x000a, 0x364d: 0x000a, 0x364e: 0x000a, 0x364f: 0x000a, 0x3651: 0x000a,\n\t0x3652: 0x000a, 0x3653: 0x000a, 0x3654: 0x000a, 0x3655: 0x000a, 0x3656: 0x000a, 0x3657: 0x000a,\n\t0x3658: 0x000a, 0x3659: 0x000a, 0x365a: 0x000a, 0x365b: 0x000a, 0x365c: 0x000a, 0x365d: 0x000a,\n\t0x365e: 0x000a, 0x365f: 0x000a, 0x3660: 0x000a, 0x3661: 0x000a, 0x3662: 0x000a, 0x3663: 0x000a,\n\t0x3664: 0x000a, 0x3665: 0x000a, 0x3666: 0x000a, 0x3667: 0x000a, 0x3668: 0x000a, 0x3669: 0x000a,\n\t0x366a: 0x000a, 0x366b: 0x000a, 0x366c: 0x000a, 0x366d: 0x000a, 0x366e: 0x000a, 0x366f: 0x000a,\n\t0x3670: 0x000a, 0x3671: 0x000a, 0x3672: 0x000a, 0x3673: 0x000a, 0x3674: 0x000a, 0x3675: 0x000a,\n\t// Block 0xda, offset 0x3680\n\t0x3680: 0x0002, 0x3681: 0x0002, 0x3682: 0x0002, 0x3683: 0x0002, 0x3684: 0x0002, 0x3685: 0x0002,\n\t0x3686: 0x0002, 0x3687: 0x0002, 0x3688: 0x0002, 0x3689: 0x0002, 0x368a: 0x0002, 0x368b: 0x000a,\n\t0x368c: 0x000a,\n\t0x36af: 0x000a,\n\t// Block 0xdb, offset 0x36c0\n\t0x36ea: 0x000a, 0x36eb: 0x000a,\n\t// Block 0xdc, offset 0x3700\n\t0x3720: 0x000a, 0x3721: 0x000a, 0x3722: 0x000a, 0x3723: 0x000a,\n\t0x3724: 0x000a, 0x3725: 0x000a,\n\t// Block 0xdd, offset 0x3740\n\t0x3740: 0x000a, 0x3741: 0x000a, 0x3742: 0x000a, 0x3743: 0x000a, 0x3744: 0x000a, 0x3745: 0x000a,\n\t0x3746: 0x000a, 0x3747: 0x000a, 0x3748: 0x000a, 0x3749: 0x000a, 0x374a: 0x000a, 0x374b: 0x000a,\n\t0x374c: 0x000a, 0x374d: 0x000a, 0x374e: 0x000a, 0x374f: 0x000a, 0x3750: 0x000a, 0x3751: 0x000a,\n\t0x3752: 0x000a, 0x3753: 0x000a, 0x3754: 0x000a,\n\t0x3760: 0x000a, 0x3761: 0x000a, 0x3762: 0x000a, 0x3763: 0x000a,\n\t0x3764: 0x000a, 0x3765: 0x000a, 0x3766: 0x000a, 0x3767: 0x000a, 0x3768: 0x000a, 0x3769: 0x000a,\n\t0x376a: 0x000a, 0x376b: 0x000a, 0x376c: 0x000a,\n\t0x3770: 0x000a, 0x3771: 0x000a, 0x3772: 0x000a, 0x3773: 0x000a, 0x3774: 0x000a, 0x3775: 0x000a,\n\t0x3776: 0x000a, 0x3777: 0x000a, 0x3778: 0x000a, 0x3779: 0x000a,\n\t// Block 0xde, offset 0x3780\n\t0x3780: 0x000a, 0x3781: 0x000a, 0x3782: 0x000a, 0x3783: 0x000a, 0x3784: 0x000a, 0x3785: 0x000a,\n\t0x3786: 0x000a, 0x3787: 0x000a, 0x3788: 0x000a, 0x3789: 0x000a, 0x378a: 0x000a, 0x378b: 0x000a,\n\t0x378c: 0x000a, 0x378d: 0x000a, 0x378e: 0x000a, 0x378f: 0x000a, 0x3790: 0x000a, 0x3791: 0x000a,\n\t0x3792: 0x000a, 0x3793: 0x000a, 0x3794: 0x000a, 0x3795: 0x000a, 0x3796: 0x000a, 0x3797: 0x000a,\n\t0x3798: 0x000a,\n\t// Block 0xdf, offset 0x37c0\n\t0x37c0: 0x000a, 0x37c1: 0x000a, 0x37c2: 0x000a, 0x37c3: 0x000a, 0x37c4: 0x000a, 0x37c5: 0x000a,\n\t0x37c6: 0x000a, 0x37c7: 0x000a, 0x37c8: 0x000a, 0x37c9: 0x000a, 0x37ca: 0x000a, 0x37cb: 0x000a,\n\t0x37d0: 0x000a, 0x37d1: 0x000a,\n\t0x37d2: 0x000a, 0x37d3: 0x000a, 0x37d4: 0x000a, 0x37d5: 0x000a, 0x37d6: 0x000a, 0x37d7: 0x000a,\n\t0x37d8: 0x000a, 0x37d9: 0x000a, 0x37da: 0x000a, 0x37db: 0x000a, 0x37dc: 0x000a, 0x37dd: 0x000a,\n\t0x37de: 0x000a, 0x37df: 0x000a, 0x37e0: 0x000a, 0x37e1: 0x000a, 0x37e2: 0x000a, 0x37e3: 0x000a,\n\t0x37e4: 0x000a, 0x37e5: 0x000a, 0x37e6: 0x000a, 0x37e7: 0x000a, 0x37e8: 0x000a, 0x37e9: 0x000a,\n\t0x37ea: 0x000a, 0x37eb: 0x000a, 0x37ec: 0x000a, 0x37ed: 0x000a, 0x37ee: 0x000a, 0x37ef: 0x000a,\n\t0x37f0: 0x000a, 0x37f1: 0x000a, 0x37f2: 0x000a, 0x37f3: 0x000a, 0x37f4: 0x000a, 0x37f5: 0x000a,\n\t0x37f6: 0x000a, 0x37f7: 0x000a, 0x37f8: 0x000a, 0x37f9: 0x000a, 0x37fa: 0x000a, 0x37fb: 0x000a,\n\t0x37fc: 0x000a, 0x37fd: 0x000a, 0x37fe: 0x000a, 0x37ff: 0x000a,\n\t// Block 0xe0, offset 0x3800\n\t0x3800: 0x000a, 0x3801: 0x000a, 0x3802: 0x000a, 0x3803: 0x000a, 0x3804: 0x000a, 0x3805: 0x000a,\n\t0x3806: 0x000a, 0x3807: 0x000a,\n\t0x3810: 0x000a, 0x3811: 0x000a,\n\t0x3812: 0x000a, 0x3813: 0x000a, 0x3814: 0x000a, 0x3815: 0x000a, 0x3816: 0x000a, 0x3817: 0x000a,\n\t0x3818: 0x000a, 0x3819: 0x000a,\n\t0x3820: 0x000a, 0x3821: 0x000a, 0x3822: 0x000a, 0x3823: 0x000a,\n\t0x3824: 0x000a, 0x3825: 0x000a, 0x3826: 0x000a, 0x3827: 0x000a, 0x3828: 0x000a, 0x3829: 0x000a,\n\t0x382a: 0x000a, 0x382b: 0x000a, 0x382c: 0x000a, 0x382d: 0x000a, 0x382e: 0x000a, 0x382f: 0x000a,\n\t0x3830: 0x000a, 0x3831: 0x000a, 0x3832: 0x000a, 0x3833: 0x000a, 0x3834: 0x000a, 0x3835: 0x000a,\n\t0x3836: 0x000a, 0x3837: 0x000a, 0x3838: 0x000a, 0x3839: 0x000a, 0x383a: 0x000a, 0x383b: 0x000a,\n\t0x383c: 0x000a, 0x383d: 0x000a, 0x383e: 0x000a, 0x383f: 0x000a,\n\t// Block 0xe1, offset 0x3840\n\t0x3840: 0x000a, 0x3841: 0x000a, 0x3842: 0x000a, 0x3843: 0x000a, 0x3844: 0x000a, 0x3845: 0x000a,\n\t0x3846: 0x000a, 0x3847: 0x000a,\n\t0x3850: 0x000a, 0x3851: 0x000a,\n\t0x3852: 0x000a, 0x3853: 0x000a, 0x3854: 0x000a, 0x3855: 0x000a, 0x3856: 0x000a, 0x3857: 0x000a,\n\t0x3858: 0x000a, 0x3859: 0x000a, 0x385a: 0x000a, 0x385b: 0x000a, 0x385c: 0x000a, 0x385d: 0x000a,\n\t0x385e: 0x000a, 0x385f: 0x000a, 0x3860: 0x000a, 0x3861: 0x000a, 0x3862: 0x000a, 0x3863: 0x000a,\n\t0x3864: 0x000a, 0x3865: 0x000a, 0x3866: 0x000a, 0x3867: 0x000a, 0x3868: 0x000a, 0x3869: 0x000a,\n\t0x386a: 0x000a, 0x386b: 0x000a, 0x386c: 0x000a, 0x386d: 0x000a,\n\t// Block 0xe2, offset 0x3880\n\t0x3880: 0x000a, 0x3881: 0x000a, 0x3882: 0x000a, 0x3883: 0x000a, 0x3884: 0x000a, 0x3885: 0x000a,\n\t0x3886: 0x000a, 0x3887: 0x000a, 0x3888: 0x000a, 0x3889: 0x000a, 0x388a: 0x000a, 0x388b: 0x000a,\n\t0x3890: 0x000a, 0x3891: 0x000a,\n\t0x3892: 0x000a, 0x3893: 0x000a, 0x3894: 0x000a, 0x3895: 0x000a, 0x3896: 0x000a, 0x3897: 0x000a,\n\t0x3898: 0x000a, 0x3899: 0x000a, 0x389a: 0x000a, 0x389b: 0x000a, 0x389c: 0x000a, 0x389d: 0x000a,\n\t0x389e: 0x000a, 0x389f: 0x000a, 0x38a0: 0x000a, 0x38a1: 0x000a, 0x38a2: 0x000a, 0x38a3: 0x000a,\n\t0x38a4: 0x000a, 0x38a5: 0x000a, 0x38a6: 0x000a, 0x38a7: 0x000a, 0x38a8: 0x000a, 0x38a9: 0x000a,\n\t0x38aa: 0x000a, 0x38ab: 0x000a, 0x38ac: 0x000a, 0x38ad: 0x000a, 0x38ae: 0x000a, 0x38af: 0x000a,\n\t0x38b0: 0x000a, 0x38b1: 0x000a, 0x38b2: 0x000a, 0x38b3: 0x000a, 0x38b4: 0x000a, 0x38b5: 0x000a,\n\t0x38b6: 0x000a, 0x38b7: 0x000a, 0x38b8: 0x000a, 0x38b9: 0x000a, 0x38ba: 0x000a, 0x38bb: 0x000a,\n\t0x38bc: 0x000a, 0x38bd: 0x000a, 0x38be: 0x000a,\n\t// Block 0xe3, offset 0x38c0\n\t0x38c0: 0x000a, 0x38c1: 0x000a, 0x38c2: 0x000a, 0x38c3: 0x000a, 0x38c4: 0x000a, 0x38c5: 0x000a,\n\t0x38c6: 0x000a, 0x38c7: 0x000a, 0x38c8: 0x000a, 0x38c9: 0x000a, 0x38ca: 0x000a, 0x38cb: 0x000a,\n\t0x38cc: 0x000a, 0x38cd: 0x000a, 0x38ce: 0x000a, 0x38cf: 0x000a, 0x38d0: 0x000a, 0x38d1: 0x000a,\n\t0x38d2: 0x000a, 0x38d3: 0x000a, 0x38d4: 0x000a, 0x38d5: 0x000a, 0x38d6: 0x000a, 0x38d7: 0x000a,\n\t0x38d8: 0x000a, 0x38d9: 0x000a, 0x38da: 0x000a, 0x38db: 0x000a, 0x38dc: 0x000a, 0x38dd: 0x000a,\n\t0x38de: 0x000a, 0x38df: 0x000a, 0x38e0: 0x000a, 0x38e1: 0x000a, 0x38e2: 0x000a, 0x38e3: 0x000a,\n\t0x38e4: 0x000a, 0x38e5: 0x000a, 0x38e6: 0x000a, 0x38e7: 0x000a, 0x38e8: 0x000a, 0x38e9: 0x000a,\n\t0x38ea: 0x000a, 0x38eb: 0x000a, 0x38ec: 0x000a, 0x38ed: 0x000a, 0x38ee: 0x000a, 0x38ef: 0x000a,\n\t0x38f0: 0x000a, 0x38f3: 0x000a, 0x38f4: 0x000a, 0x38f5: 0x000a,\n\t0x38f6: 0x000a, 0x38fa: 0x000a,\n\t0x38fc: 0x000a, 0x38fd: 0x000a, 0x38fe: 0x000a, 0x38ff: 0x000a,\n\t// Block 0xe4, offset 0x3900\n\t0x3900: 0x000a, 0x3901: 0x000a, 0x3902: 0x000a, 0x3903: 0x000a, 0x3904: 0x000a, 0x3905: 0x000a,\n\t0x3906: 0x000a, 0x3907: 0x000a, 0x3908: 0x000a, 0x3909: 0x000a, 0x390a: 0x000a, 0x390b: 0x000a,\n\t0x390c: 0x000a, 0x390d: 0x000a, 0x390e: 0x000a, 0x390f: 0x000a, 0x3910: 0x000a, 0x3911: 0x000a,\n\t0x3912: 0x000a, 0x3913: 0x000a, 0x3914: 0x000a, 0x3915: 0x000a, 0x3916: 0x000a, 0x3917: 0x000a,\n\t0x3918: 0x000a, 0x3919: 0x000a, 0x391a: 0x000a, 0x391b: 0x000a, 0x391c: 0x000a, 0x391d: 0x000a,\n\t0x391e: 0x000a, 0x391f: 0x000a, 0x3920: 0x000a, 0x3921: 0x000a, 0x3922: 0x000a,\n\t0x3930: 0x000a, 0x3931: 0x000a, 0x3932: 0x000a, 0x3933: 0x000a, 0x3934: 0x000a, 0x3935: 0x000a,\n\t0x3936: 0x000a, 0x3937: 0x000a, 0x3938: 0x000a, 0x3939: 0x000a,\n\t// Block 0xe5, offset 0x3940\n\t0x3940: 0x000a, 0x3941: 0x000a, 0x3942: 0x000a,\n\t0x3950: 0x000a, 0x3951: 0x000a,\n\t0x3952: 0x000a, 0x3953: 0x000a, 0x3954: 0x000a, 0x3955: 0x000a, 0x3956: 0x000a, 0x3957: 0x000a,\n\t0x3958: 0x000a, 0x3959: 0x000a, 0x395a: 0x000a, 0x395b: 0x000a, 0x395c: 0x000a, 0x395d: 0x000a,\n\t0x395e: 0x000a, 0x395f: 0x000a, 0x3960: 0x000a, 0x3961: 0x000a, 0x3962: 0x000a, 0x3963: 0x000a,\n\t0x3964: 0x000a, 0x3965: 0x000a, 0x3966: 0x000a, 0x3967: 0x000a, 0x3968: 0x000a, 0x3969: 0x000a,\n\t0x396a: 0x000a, 0x396b: 0x000a, 0x396c: 0x000a, 0x396d: 0x000a, 0x396e: 0x000a, 0x396f: 0x000a,\n\t0x3970: 0x000a, 0x3971: 0x000a, 0x3972: 0x000a, 0x3973: 0x000a, 0x3974: 0x000a, 0x3975: 0x000a,\n\t0x3976: 0x000a, 0x3977: 0x000a, 0x3978: 0x000a, 0x3979: 0x000a, 0x397a: 0x000a, 0x397b: 0x000a,\n\t0x397c: 0x000a, 0x397d: 0x000a, 0x397e: 0x000a, 0x397f: 0x000a,\n\t// Block 0xe6, offset 0x3980\n\t0x39a0: 0x000a, 0x39a1: 0x000a, 0x39a2: 0x000a, 0x39a3: 0x000a,\n\t0x39a4: 0x000a, 0x39a5: 0x000a, 0x39a6: 0x000a, 0x39a7: 0x000a, 0x39a8: 0x000a, 0x39a9: 0x000a,\n\t0x39aa: 0x000a, 0x39ab: 0x000a, 0x39ac: 0x000a, 0x39ad: 0x000a,\n\t// Block 0xe7, offset 0x39c0\n\t0x39fe: 0x000b, 0x39ff: 0x000b,\n\t// Block 0xe8, offset 0x3a00\n\t0x3a00: 0x000b, 0x3a01: 0x000b, 0x3a02: 0x000b, 0x3a03: 0x000b, 0x3a04: 0x000b, 0x3a05: 0x000b,\n\t0x3a06: 0x000b, 0x3a07: 0x000b, 0x3a08: 0x000b, 0x3a09: 0x000b, 0x3a0a: 0x000b, 0x3a0b: 0x000b,\n\t0x3a0c: 0x000b, 0x3a0d: 0x000b, 0x3a0e: 0x000b, 0x3a0f: 0x000b, 0x3a10: 0x000b, 0x3a11: 0x000b,\n\t0x3a12: 0x000b, 0x3a13: 0x000b, 0x3a14: 0x000b, 0x3a15: 0x000b, 0x3a16: 0x000b, 0x3a17: 0x000b,\n\t0x3a18: 0x000b, 0x3a19: 0x000b, 0x3a1a: 0x000b, 0x3a1b: 0x000b, 0x3a1c: 0x000b, 0x3a1d: 0x000b,\n\t0x3a1e: 0x000b, 0x3a1f: 0x000b, 0x3a20: 0x000b, 0x3a21: 0x000b, 0x3a22: 0x000b, 0x3a23: 0x000b,\n\t0x3a24: 0x000b, 0x3a25: 0x000b, 0x3a26: 0x000b, 0x3a27: 0x000b, 0x3a28: 0x000b, 0x3a29: 0x000b,\n\t0x3a2a: 0x000b, 0x3a2b: 0x000b, 0x3a2c: 0x000b, 0x3a2d: 0x000b, 0x3a2e: 0x000b, 0x3a2f: 0x000b,\n\t0x3a30: 0x000b, 0x3a31: 0x000b, 0x3a32: 0x000b, 0x3a33: 0x000b, 0x3a34: 0x000b, 0x3a35: 0x000b,\n\t0x3a36: 0x000b, 0x3a37: 0x000b, 0x3a38: 0x000b, 0x3a39: 0x000b, 0x3a3a: 0x000b, 0x3a3b: 0x000b,\n\t0x3a3c: 0x000b, 0x3a3d: 0x000b, 0x3a3e: 0x000b, 0x3a3f: 0x000b,\n\t// Block 0xe9, offset 0x3a40\n\t0x3a40: 0x000c, 0x3a41: 0x000c, 0x3a42: 0x000c, 0x3a43: 0x000c, 0x3a44: 0x000c, 0x3a45: 0x000c,\n\t0x3a46: 0x000c, 0x3a47: 0x000c, 0x3a48: 0x000c, 0x3a49: 0x000c, 0x3a4a: 0x000c, 0x3a4b: 0x000c,\n\t0x3a4c: 0x000c, 0x3a4d: 0x000c, 0x3a4e: 0x000c, 0x3a4f: 0x000c, 0x3a50: 0x000c, 0x3a51: 0x000c,\n\t0x3a52: 0x000c, 0x3a53: 0x000c, 0x3a54: 0x000c, 0x3a55: 0x000c, 0x3a56: 0x000c, 0x3a57: 0x000c,\n\t0x3a58: 0x000c, 0x3a59: 0x000c, 0x3a5a: 0x000c, 0x3a5b: 0x000c, 0x3a5c: 0x000c, 0x3a5d: 0x000c,\n\t0x3a5e: 0x000c, 0x3a5f: 0x000c, 0x3a60: 0x000c, 0x3a61: 0x000c, 0x3a62: 0x000c, 0x3a63: 0x000c,\n\t0x3a64: 0x000c, 0x3a65: 0x000c, 0x3a66: 0x000c, 0x3a67: 0x000c, 0x3a68: 0x000c, 0x3a69: 0x000c,\n\t0x3a6a: 0x000c, 0x3a6b: 0x000c, 0x3a6c: 0x000c, 0x3a6d: 0x000c, 0x3a6e: 0x000c, 0x3a6f: 0x000c,\n\t0x3a70: 0x000b, 0x3a71: 0x000b, 0x3a72: 0x000b, 0x3a73: 0x000b, 0x3a74: 0x000b, 0x3a75: 0x000b,\n\t0x3a76: 0x000b, 0x3a77: 0x000b, 0x3a78: 0x000b, 0x3a79: 0x000b, 0x3a7a: 0x000b, 0x3a7b: 0x000b,\n\t0x3a7c: 0x000b, 0x3a7d: 0x000b, 0x3a7e: 0x000b, 0x3a7f: 0x000b,\n}\n\n// bidiIndex: 24 blocks, 1536 entries, 1536 bytes\n// Block 0 is the zero block.\nvar bidiIndex = [1536]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x02,\n\t0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08,\n\t0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b,\n\t0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06,\n\t0xea: 0x07, 0xef: 0x08,\n\t0xf0: 0x11, 0xf1: 0x12, 0xf2: 0x12, 0xf3: 0x14, 0xf4: 0x15,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b,\n\t0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22,\n\t0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x137: 0x28,\n\t0x138: 0x29, 0x139: 0x2a, 0x13a: 0x2b, 0x13b: 0x2c, 0x13c: 0x2d, 0x13d: 0x2e, 0x13e: 0x2f, 0x13f: 0x30,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x31, 0x141: 0x32, 0x142: 0x33,\n\t0x14d: 0x34, 0x14e: 0x35,\n\t0x150: 0x36,\n\t0x15a: 0x37, 0x15c: 0x38, 0x15d: 0x39, 0x15e: 0x3a, 0x15f: 0x3b,\n\t0x160: 0x3c, 0x162: 0x3d, 0x164: 0x3e, 0x165: 0x3f, 0x167: 0x40,\n\t0x168: 0x41, 0x169: 0x42, 0x16a: 0x43, 0x16c: 0x44, 0x16d: 0x45, 0x16e: 0x46, 0x16f: 0x47,\n\t0x170: 0x48, 0x173: 0x49, 0x177: 0x4a,\n\t0x17e: 0x4b, 0x17f: 0x4c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x4d, 0x181: 0x4e, 0x182: 0x4f, 0x183: 0x50, 0x184: 0x51, 0x185: 0x52, 0x186: 0x53, 0x187: 0x54,\n\t0x188: 0x55, 0x189: 0x54, 0x18a: 0x54, 0x18b: 0x54, 0x18c: 0x56, 0x18d: 0x57, 0x18e: 0x58, 0x18f: 0x54,\n\t0x190: 0x59, 0x191: 0x5a, 0x192: 0x5b, 0x193: 0x5c, 0x194: 0x54, 0x195: 0x54, 0x196: 0x54, 0x197: 0x54,\n\t0x198: 0x54, 0x199: 0x54, 0x19a: 0x5d, 0x19b: 0x54, 0x19c: 0x54, 0x19d: 0x5e, 0x19e: 0x54, 0x19f: 0x5f,\n\t0x1a4: 0x54, 0x1a5: 0x54, 0x1a6: 0x60, 0x1a7: 0x61,\n\t0x1a8: 0x54, 0x1a9: 0x54, 0x1aa: 0x54, 0x1ab: 0x54, 0x1ac: 0x54, 0x1ad: 0x62, 0x1ae: 0x63, 0x1af: 0x64,\n\t0x1b3: 0x65, 0x1b5: 0x66, 0x1b7: 0x67,\n\t0x1b8: 0x68, 0x1b9: 0x69, 0x1ba: 0x6a, 0x1bb: 0x6b, 0x1bc: 0x54, 0x1bd: 0x54, 0x1be: 0x54, 0x1bf: 0x6c,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x6d, 0x1c2: 0x6e, 0x1c3: 0x6f, 0x1c7: 0x70,\n\t0x1c8: 0x71, 0x1c9: 0x72, 0x1ca: 0x73, 0x1cb: 0x74, 0x1cd: 0x75, 0x1cf: 0x76,\n\t// Block 0x8, offset 0x200\n\t0x237: 0x54,\n\t// Block 0x9, offset 0x240\n\t0x252: 0x77, 0x253: 0x78,\n\t0x258: 0x79, 0x259: 0x7a, 0x25a: 0x7b, 0x25b: 0x7c, 0x25c: 0x7d, 0x25e: 0x7e,\n\t0x260: 0x7f, 0x261: 0x80, 0x263: 0x81, 0x264: 0x82, 0x265: 0x83, 0x266: 0x84, 0x267: 0x85,\n\t0x268: 0x86, 0x269: 0x87, 0x26a: 0x88, 0x26b: 0x89, 0x26f: 0x8a,\n\t// Block 0xa, offset 0x280\n\t0x2ac: 0x8b, 0x2ad: 0x8c, 0x2ae: 0x0e, 0x2af: 0x0e,\n\t0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8d, 0x2b5: 0x0e, 0x2b6: 0x0e, 0x2b7: 0x8e,\n\t0x2b8: 0x8f, 0x2b9: 0x90, 0x2ba: 0x0e, 0x2bb: 0x91, 0x2bc: 0x92, 0x2bd: 0x93, 0x2bf: 0x94,\n\t// Block 0xb, offset 0x2c0\n\t0x2c4: 0x95, 0x2c5: 0x54, 0x2c6: 0x96, 0x2c7: 0x97,\n\t0x2cb: 0x98, 0x2cd: 0x99,\n\t0x2e0: 0x9a, 0x2e1: 0x9a, 0x2e2: 0x9a, 0x2e3: 0x9a, 0x2e4: 0x9b, 0x2e5: 0x9a, 0x2e6: 0x9a, 0x2e7: 0x9a,\n\t0x2e8: 0x9c, 0x2e9: 0x9a, 0x2ea: 0x9a, 0x2eb: 0x9d, 0x2ec: 0x9e, 0x2ed: 0x9a, 0x2ee: 0x9a, 0x2ef: 0x9a,\n\t0x2f0: 0x9a, 0x2f1: 0x9a, 0x2f2: 0x9a, 0x2f3: 0x9a, 0x2f4: 0x9f, 0x2f5: 0x9a, 0x2f6: 0x9a, 0x2f7: 0x9a,\n\t0x2f8: 0x9a, 0x2f9: 0xa0, 0x2fa: 0x9a, 0x2fb: 0x9a, 0x2fc: 0xa1, 0x2fd: 0xa2, 0x2fe: 0x9a, 0x2ff: 0x9a,\n\t// Block 0xc, offset 0x300\n\t0x300: 0xa3, 0x301: 0xa4, 0x302: 0xa5, 0x304: 0xa6, 0x305: 0xa7, 0x306: 0xa8, 0x307: 0xa9,\n\t0x308: 0xaa, 0x30b: 0xab, 0x30c: 0x26, 0x30d: 0xac,\n\t0x310: 0xad, 0x311: 0xae, 0x312: 0xaf, 0x313: 0xb0, 0x316: 0xb1, 0x317: 0xb2,\n\t0x318: 0xb3, 0x319: 0xb4, 0x31a: 0xb5, 0x31c: 0xb6,\n\t0x320: 0xb7,\n\t0x328: 0xb8, 0x329: 0xb9, 0x32a: 0xba,\n\t0x330: 0xbb, 0x332: 0xbc, 0x334: 0xbd, 0x335: 0xbe, 0x336: 0xbf,\n\t0x33b: 0xc0,\n\t// Block 0xd, offset 0x340\n\t0x36b: 0xc1, 0x36c: 0xc2,\n\t0x37e: 0xc3,\n\t// Block 0xe, offset 0x380\n\t0x3b2: 0xc4,\n\t// Block 0xf, offset 0x3c0\n\t0x3c5: 0xc5, 0x3c6: 0xc6,\n\t0x3c8: 0x54, 0x3c9: 0xc7, 0x3cc: 0x54, 0x3cd: 0xc8,\n\t0x3db: 0xc9, 0x3dc: 0xca, 0x3dd: 0xcb, 0x3de: 0xcc, 0x3df: 0xcd,\n\t0x3e8: 0xce, 0x3e9: 0xcf, 0x3ea: 0xd0,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xd1,\n\t0x420: 0x9a, 0x421: 0x9a, 0x422: 0x9a, 0x423: 0xd2, 0x424: 0x9a, 0x425: 0xd3, 0x426: 0x9a, 0x427: 0x9a,\n\t0x428: 0x9a, 0x429: 0x9a, 0x42a: 0x9a, 0x42b: 0x9a, 0x42c: 0x9a, 0x42d: 0x9a, 0x42e: 0x9a, 0x42f: 0x9a,\n\t0x430: 0x9a, 0x431: 0xa1, 0x432: 0x0e, 0x433: 0x9a, 0x434: 0x9a, 0x435: 0x9a, 0x436: 0x9a, 0x437: 0x9a,\n\t0x438: 0x0e, 0x439: 0x0e, 0x43a: 0x0e, 0x43b: 0xd4, 0x43c: 0x9a, 0x43d: 0x9a, 0x43e: 0x9a, 0x43f: 0x9a,\n\t// Block 0x11, offset 0x440\n\t0x440: 0xd5, 0x441: 0x54, 0x442: 0xd6, 0x443: 0xd7, 0x444: 0xd8, 0x445: 0xd9,\n\t0x449: 0xda, 0x44c: 0x54, 0x44d: 0x54, 0x44e: 0x54, 0x44f: 0x54,\n\t0x450: 0x54, 0x451: 0x54, 0x452: 0x54, 0x453: 0x54, 0x454: 0x54, 0x455: 0x54, 0x456: 0x54, 0x457: 0x54,\n\t0x458: 0x54, 0x459: 0x54, 0x45a: 0x54, 0x45b: 0xdb, 0x45c: 0x54, 0x45d: 0x6b, 0x45e: 0x54, 0x45f: 0xdc,\n\t0x460: 0xdd, 0x461: 0xde, 0x462: 0xdf, 0x464: 0xe0, 0x465: 0xe1, 0x466: 0xe2, 0x467: 0xe3,\n\t0x469: 0xe4,\n\t0x47f: 0xe5,\n\t// Block 0x12, offset 0x480\n\t0x4bf: 0xe5,\n\t// Block 0x13, offset 0x4c0\n\t0x4d0: 0x09, 0x4d1: 0x0a, 0x4d6: 0x0b,\n\t0x4db: 0x0c, 0x4dd: 0x0d, 0x4de: 0x0e, 0x4df: 0x0f,\n\t0x4ef: 0x10,\n\t0x4ff: 0x10,\n\t// Block 0x14, offset 0x500\n\t0x50f: 0x10,\n\t0x51f: 0x10,\n\t0x52f: 0x10,\n\t0x53f: 0x10,\n\t// Block 0x15, offset 0x540\n\t0x540: 0xe6, 0x541: 0xe6, 0x542: 0xe6, 0x543: 0xe6, 0x544: 0x05, 0x545: 0x05, 0x546: 0x05, 0x547: 0xe7,\n\t0x548: 0xe6, 0x549: 0xe6, 0x54a: 0xe6, 0x54b: 0xe6, 0x54c: 0xe6, 0x54d: 0xe6, 0x54e: 0xe6, 0x54f: 0xe6,\n\t0x550: 0xe6, 0x551: 0xe6, 0x552: 0xe6, 0x553: 0xe6, 0x554: 0xe6, 0x555: 0xe6, 0x556: 0xe6, 0x557: 0xe6,\n\t0x558: 0xe6, 0x559: 0xe6, 0x55a: 0xe6, 0x55b: 0xe6, 0x55c: 0xe6, 0x55d: 0xe6, 0x55e: 0xe6, 0x55f: 0xe6,\n\t0x560: 0xe6, 0x561: 0xe6, 0x562: 0xe6, 0x563: 0xe6, 0x564: 0xe6, 0x565: 0xe6, 0x566: 0xe6, 0x567: 0xe6,\n\t0x568: 0xe6, 0x569: 0xe6, 0x56a: 0xe6, 0x56b: 0xe6, 0x56c: 0xe6, 0x56d: 0xe6, 0x56e: 0xe6, 0x56f: 0xe6,\n\t0x570: 0xe6, 0x571: 0xe6, 0x572: 0xe6, 0x573: 0xe6, 0x574: 0xe6, 0x575: 0xe6, 0x576: 0xe6, 0x577: 0xe6,\n\t0x578: 0xe6, 0x579: 0xe6, 0x57a: 0xe6, 0x57b: 0xe6, 0x57c: 0xe6, 0x57d: 0xe6, 0x57e: 0xe6, 0x57f: 0xe6,\n\t// Block 0x16, offset 0x580\n\t0x58f: 0x10,\n\t0x59f: 0x10,\n\t0x5a0: 0x13,\n\t0x5af: 0x10,\n\t0x5bf: 0x10,\n\t// Block 0x17, offset 0x5c0\n\t0x5cf: 0x10,\n}\n\n// Total table size 16568 bytes (16KiB); checksum: F50EF68C\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.14 && !go1.16\n\npackage bidi\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"12.0.0\"\n\n// xorMasks contains masks to be xor-ed with brackets to get the reverse\n// version.\nvar xorMasks = []int32{ // 8 elements\n\t0, 1, 6, 7, 3, 15, 29, 63,\n} // Size: 56 bytes\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookup(s []byte) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupUnsafe(s []byte) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookupString(s string) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupStringUnsafe(s string) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// bidiTrie. Total size: 16896 bytes (16.50 KiB). Checksum: 6f0927067913dc6d.\ntype bidiTrie struct{}\n\nfunc newBidiTrie(i int) *bidiTrie {\n\treturn &bidiTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *bidiTrie) lookupValue(n uint32, b byte) uint8 {\n\tswitch {\n\tdefault:\n\t\treturn uint8(bidiValues[n<<6+uint32(b)])\n\t}\n}\n\n// bidiValues: 240 blocks, 15360 entries, 15360 bytes\n// The third block is the zero block.\nvar bidiValues = [15360]uint8{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b,\n\t0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008,\n\t0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b,\n\t0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b,\n\t0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007,\n\t0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004,\n\t0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a,\n\t0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006,\n\t0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002,\n\t0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a,\n\t0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x000a,\n\t0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a,\n\t0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a,\n\t0x7b: 0x005a,\n\t0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007,\n\t0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b,\n\t0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b,\n\t0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b,\n\t0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b,\n\t0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004,\n\t0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a,\n\t0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a,\n\t0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a,\n\t0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a,\n\t0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a,\n\t// Block 0x4, offset 0x100\n\t0x117: 0x000a,\n\t0x137: 0x000a,\n\t// Block 0x5, offset 0x140\n\t0x179: 0x000a, 0x17a: 0x000a,\n\t// Block 0x6, offset 0x180\n\t0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a,\n\t0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a,\n\t0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a,\n\t0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a,\n\t0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a,\n\t0x19e: 0x000a, 0x19f: 0x000a,\n\t0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a,\n\t0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a,\n\t0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a,\n\t0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a,\n\t0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c,\n\t0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c,\n\t0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c,\n\t0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c,\n\t0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c,\n\t0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c,\n\t0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c,\n\t0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c,\n\t0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c,\n\t0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c,\n\t0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c,\n\t0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c,\n\t0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c,\n\t0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c,\n\t0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c,\n\t0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c,\n\t0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c,\n\t0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c,\n\t0x234: 0x000a, 0x235: 0x000a,\n\t0x23e: 0x000a,\n\t// Block 0x9, offset 0x240\n\t0x244: 0x000a, 0x245: 0x000a,\n\t0x247: 0x000a,\n\t// Block 0xa, offset 0x280\n\t0x2b6: 0x000a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c,\n\t0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c,\n\t// Block 0xc, offset 0x300\n\t0x30a: 0x000a,\n\t0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c,\n\t0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c,\n\t0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c,\n\t0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c,\n\t0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c,\n\t0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c,\n\t0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c,\n\t0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c,\n\t0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c,\n\t0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001,\n\t0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001,\n\t0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001,\n\t0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001,\n\t0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001,\n\t0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001,\n\t0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001,\n\t0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001,\n\t0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001,\n\t0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001,\n\t// Block 0xe, offset 0x380\n\t0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005,\n\t0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d,\n\t0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c,\n\t0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c,\n\t0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d,\n\t0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d,\n\t0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d,\n\t0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d,\n\t0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d,\n\t0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d,\n\t0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d,\n\t0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c,\n\t0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c,\n\t0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c,\n\t0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c,\n\t0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005,\n\t0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005,\n\t0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d,\n\t0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d,\n\t0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d,\n\t0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d,\n\t0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d,\n\t0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d,\n\t0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d,\n\t0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d,\n\t0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d,\n\t0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d,\n\t0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d,\n\t0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d,\n\t0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d,\n\t0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d,\n\t0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d,\n\t0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d,\n\t0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c,\n\t0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005,\n\t0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c,\n\t0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a,\n\t0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d,\n\t0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002,\n\t0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d,\n\t0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d,\n\t0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d,\n\t0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c,\n\t0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d,\n\t0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d,\n\t0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d,\n\t0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d,\n\t0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d,\n\t0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c,\n\t0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c,\n\t0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c,\n\t0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d,\n\t0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d,\n\t0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d,\n\t0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d,\n\t0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d,\n\t0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d,\n\t0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d,\n\t0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d,\n\t0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d,\n\t0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d,\n\t0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d,\n\t0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d,\n\t0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d,\n\t0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d,\n\t0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d,\n\t0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c,\n\t0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c,\n\t0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d,\n\t0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d,\n\t0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001,\n\t0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001,\n\t0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001,\n\t0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001,\n\t0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001,\n\t0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001,\n\t0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001,\n\t0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c,\n\t0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001,\n\t0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001,\n\t0x57c: 0x0001, 0x57d: 0x000c, 0x57e: 0x0001, 0x57f: 0x0001,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001,\n\t0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001,\n\t0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001,\n\t0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c,\n\t0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c,\n\t0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c,\n\t0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c,\n\t0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001,\n\t0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001,\n\t0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001,\n\t0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001,\n\t0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001,\n\t0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001,\n\t0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001,\n\t0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001,\n\t0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x000d, 0x5e1: 0x000d, 0x5e2: 0x000d, 0x5e3: 0x000d,\n\t0x5e4: 0x000d, 0x5e5: 0x000d, 0x5e6: 0x000d, 0x5e7: 0x000d, 0x5e8: 0x000d, 0x5e9: 0x000d,\n\t0x5ea: 0x000d, 0x5eb: 0x000d, 0x5ec: 0x000d, 0x5ed: 0x000d, 0x5ee: 0x000d, 0x5ef: 0x000d,\n\t0x5f0: 0x0001, 0x5f1: 0x0001, 0x5f2: 0x0001, 0x5f3: 0x0001, 0x5f4: 0x0001, 0x5f5: 0x0001,\n\t0x5f6: 0x0001, 0x5f7: 0x0001, 0x5f8: 0x0001, 0x5f9: 0x0001, 0x5fa: 0x0001, 0x5fb: 0x0001,\n\t0x5fc: 0x0001, 0x5fd: 0x0001, 0x5fe: 0x0001, 0x5ff: 0x0001,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x0001, 0x601: 0x0001, 0x602: 0x0001, 0x603: 0x0001, 0x604: 0x0001, 0x605: 0x0001,\n\t0x606: 0x0001, 0x607: 0x0001, 0x608: 0x0001, 0x609: 0x0001, 0x60a: 0x0001, 0x60b: 0x0001,\n\t0x60c: 0x0001, 0x60d: 0x0001, 0x60e: 0x0001, 0x60f: 0x0001, 0x610: 0x0001, 0x611: 0x0001,\n\t0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001,\n\t0x618: 0x0001, 0x619: 0x0001, 0x61a: 0x0001, 0x61b: 0x0001, 0x61c: 0x0001, 0x61d: 0x0001,\n\t0x61e: 0x0001, 0x61f: 0x0001, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d,\n\t0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d,\n\t0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d,\n\t0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d,\n\t0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d,\n\t0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d,\n\t0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000d, 0x64b: 0x000d,\n\t0x64c: 0x000d, 0x64d: 0x000d, 0x64e: 0x000d, 0x64f: 0x000d, 0x650: 0x000d, 0x651: 0x000d,\n\t0x652: 0x000d, 0x653: 0x000c, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c,\n\t0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c,\n\t0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c,\n\t0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c,\n\t0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c,\n\t0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c,\n\t0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c,\n\t0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c,\n\t0x6ba: 0x000c,\n\t0x6bc: 0x000c,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c,\n\t0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c,\n\t0x6cd: 0x000c, 0x6d1: 0x000c,\n\t0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c,\n\t0x6e2: 0x000c, 0x6e3: 0x000c,\n\t// Block 0x1c, offset 0x700\n\t0x701: 0x000c,\n\t0x73c: 0x000c,\n\t// Block 0x1d, offset 0x740\n\t0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c,\n\t0x74d: 0x000c,\n\t0x762: 0x000c, 0x763: 0x000c,\n\t0x772: 0x0004, 0x773: 0x0004,\n\t0x77b: 0x0004,\n\t0x77e: 0x000c,\n\t// Block 0x1e, offset 0x780\n\t0x781: 0x000c, 0x782: 0x000c,\n\t0x7bc: 0x000c,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x000c, 0x7c2: 0x000c,\n\t0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c,\n\t0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c,\n\t0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c,\n\t// Block 0x20, offset 0x800\n\t0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c,\n\t0x807: 0x000c, 0x808: 0x000c,\n\t0x80d: 0x000c,\n\t0x822: 0x000c, 0x823: 0x000c,\n\t0x831: 0x0004,\n\t0x83a: 0x000c, 0x83b: 0x000c,\n\t0x83c: 0x000c, 0x83d: 0x000c, 0x83e: 0x000c, 0x83f: 0x000c,\n\t// Block 0x21, offset 0x840\n\t0x841: 0x000c,\n\t0x87c: 0x000c, 0x87f: 0x000c,\n\t// Block 0x22, offset 0x880\n\t0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c,\n\t0x88d: 0x000c,\n\t0x896: 0x000c,\n\t0x8a2: 0x000c, 0x8a3: 0x000c,\n\t// Block 0x23, offset 0x8c0\n\t0x8c2: 0x000c,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x000c,\n\t0x90d: 0x000c,\n\t0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a,\n\t0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x000c, 0x944: 0x000c,\n\t0x97e: 0x000c, 0x97f: 0x000c,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x000c,\n\t0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c,\n\t0x98c: 0x000c, 0x98d: 0x000c,\n\t0x995: 0x000c, 0x996: 0x000c,\n\t0x9a2: 0x000c, 0x9a3: 0x000c,\n\t0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a,\n\t0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a,\n\t// Block 0x27, offset 0x9c0\n\t0x9cc: 0x000c, 0x9cd: 0x000c,\n\t0x9e2: 0x000c, 0x9e3: 0x000c,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x000c, 0xa01: 0x000c,\n\t0xa3b: 0x000c,\n\t0xa3c: 0x000c,\n\t// Block 0x29, offset 0xa40\n\t0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c,\n\t0xa4d: 0x000c,\n\t0xa62: 0x000c, 0xa63: 0x000c,\n\t// Block 0x2a, offset 0xa80\n\t0xa8a: 0x000c,\n\t0xa92: 0x000c, 0xa93: 0x000c, 0xa94: 0x000c, 0xa96: 0x000c,\n\t// Block 0x2b, offset 0xac0\n\t0xaf1: 0x000c, 0xaf4: 0x000c, 0xaf5: 0x000c,\n\t0xaf6: 0x000c, 0xaf7: 0x000c, 0xaf8: 0x000c, 0xaf9: 0x000c, 0xafa: 0x000c,\n\t0xaff: 0x0004,\n\t// Block 0x2c, offset 0xb00\n\t0xb07: 0x000c, 0xb08: 0x000c, 0xb09: 0x000c, 0xb0a: 0x000c, 0xb0b: 0x000c,\n\t0xb0c: 0x000c, 0xb0d: 0x000c, 0xb0e: 0x000c,\n\t// Block 0x2d, offset 0xb40\n\t0xb71: 0x000c, 0xb74: 0x000c, 0xb75: 0x000c,\n\t0xb76: 0x000c, 0xb77: 0x000c, 0xb78: 0x000c, 0xb79: 0x000c, 0xb7a: 0x000c, 0xb7b: 0x000c,\n\t0xb7c: 0x000c,\n\t// Block 0x2e, offset 0xb80\n\t0xb88: 0x000c, 0xb89: 0x000c, 0xb8a: 0x000c, 0xb8b: 0x000c,\n\t0xb8c: 0x000c, 0xb8d: 0x000c,\n\t// Block 0x2f, offset 0xbc0\n\t0xbd8: 0x000c, 0xbd9: 0x000c,\n\t0xbf5: 0x000c,\n\t0xbf7: 0x000c, 0xbf9: 0x000c, 0xbfa: 0x003a, 0xbfb: 0x002a,\n\t0xbfc: 0x003a, 0xbfd: 0x002a,\n\t// Block 0x30, offset 0xc00\n\t0xc31: 0x000c, 0xc32: 0x000c, 0xc33: 0x000c, 0xc34: 0x000c, 0xc35: 0x000c,\n\t0xc36: 0x000c, 0xc37: 0x000c, 0xc38: 0x000c, 0xc39: 0x000c, 0xc3a: 0x000c, 0xc3b: 0x000c,\n\t0xc3c: 0x000c, 0xc3d: 0x000c, 0xc3e: 0x000c,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x000c, 0xc41: 0x000c, 0xc42: 0x000c, 0xc43: 0x000c, 0xc44: 0x000c,\n\t0xc46: 0x000c, 0xc47: 0x000c,\n\t0xc4d: 0x000c, 0xc4e: 0x000c, 0xc4f: 0x000c, 0xc50: 0x000c, 0xc51: 0x000c,\n\t0xc52: 0x000c, 0xc53: 0x000c, 0xc54: 0x000c, 0xc55: 0x000c, 0xc56: 0x000c, 0xc57: 0x000c,\n\t0xc59: 0x000c, 0xc5a: 0x000c, 0xc5b: 0x000c, 0xc5c: 0x000c, 0xc5d: 0x000c,\n\t0xc5e: 0x000c, 0xc5f: 0x000c, 0xc60: 0x000c, 0xc61: 0x000c, 0xc62: 0x000c, 0xc63: 0x000c,\n\t0xc64: 0x000c, 0xc65: 0x000c, 0xc66: 0x000c, 0xc67: 0x000c, 0xc68: 0x000c, 0xc69: 0x000c,\n\t0xc6a: 0x000c, 0xc6b: 0x000c, 0xc6c: 0x000c, 0xc6d: 0x000c, 0xc6e: 0x000c, 0xc6f: 0x000c,\n\t0xc70: 0x000c, 0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c,\n\t0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c,\n\t0xc7c: 0x000c,\n\t// Block 0x32, offset 0xc80\n\t0xc86: 0x000c,\n\t// Block 0x33, offset 0xcc0\n\t0xced: 0x000c, 0xcee: 0x000c, 0xcef: 0x000c,\n\t0xcf0: 0x000c, 0xcf2: 0x000c, 0xcf3: 0x000c, 0xcf4: 0x000c, 0xcf5: 0x000c,\n\t0xcf6: 0x000c, 0xcf7: 0x000c, 0xcf9: 0x000c, 0xcfa: 0x000c,\n\t0xcfd: 0x000c, 0xcfe: 0x000c,\n\t// Block 0x34, offset 0xd00\n\t0xd18: 0x000c, 0xd19: 0x000c,\n\t0xd1e: 0x000c, 0xd1f: 0x000c, 0xd20: 0x000c,\n\t0xd31: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c,\n\t// Block 0x35, offset 0xd40\n\t0xd42: 0x000c, 0xd45: 0x000c,\n\t0xd46: 0x000c,\n\t0xd4d: 0x000c,\n\t0xd5d: 0x000c,\n\t// Block 0x36, offset 0xd80\n\t0xd9d: 0x000c,\n\t0xd9e: 0x000c, 0xd9f: 0x000c,\n\t// Block 0x37, offset 0xdc0\n\t0xdd0: 0x000a, 0xdd1: 0x000a,\n\t0xdd2: 0x000a, 0xdd3: 0x000a, 0xdd4: 0x000a, 0xdd5: 0x000a, 0xdd6: 0x000a, 0xdd7: 0x000a,\n\t0xdd8: 0x000a, 0xdd9: 0x000a,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x000a,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x0009,\n\t0xe5b: 0x007a, 0xe5c: 0x006a,\n\t// Block 0x3a, offset 0xe80\n\t0xe92: 0x000c, 0xe93: 0x000c, 0xe94: 0x000c,\n\t0xeb2: 0x000c, 0xeb3: 0x000c, 0xeb4: 0x000c,\n\t// Block 0x3b, offset 0xec0\n\t0xed2: 0x000c, 0xed3: 0x000c,\n\t0xef2: 0x000c, 0xef3: 0x000c,\n\t// Block 0x3c, offset 0xf00\n\t0xf34: 0x000c, 0xf35: 0x000c,\n\t0xf37: 0x000c, 0xf38: 0x000c, 0xf39: 0x000c, 0xf3a: 0x000c, 0xf3b: 0x000c,\n\t0xf3c: 0x000c, 0xf3d: 0x000c,\n\t// Block 0x3d, offset 0xf40\n\t0xf46: 0x000c, 0xf49: 0x000c, 0xf4a: 0x000c, 0xf4b: 0x000c,\n\t0xf4c: 0x000c, 0xf4d: 0x000c, 0xf4e: 0x000c, 0xf4f: 0x000c, 0xf50: 0x000c, 0xf51: 0x000c,\n\t0xf52: 0x000c, 0xf53: 0x000c,\n\t0xf5b: 0x0004, 0xf5d: 0x000c,\n\t0xf70: 0x000a, 0xf71: 0x000a, 0xf72: 0x000a, 0xf73: 0x000a, 0xf74: 0x000a, 0xf75: 0x000a,\n\t0xf76: 0x000a, 0xf77: 0x000a, 0xf78: 0x000a, 0xf79: 0x000a,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x000a, 0xf81: 0x000a, 0xf82: 0x000a, 0xf83: 0x000a, 0xf84: 0x000a, 0xf85: 0x000a,\n\t0xf86: 0x000a, 0xf87: 0x000a, 0xf88: 0x000a, 0xf89: 0x000a, 0xf8a: 0x000a, 0xf8b: 0x000c,\n\t0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000b,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc5: 0x000c,\n\t0xfc6: 0x000c,\n\t0xfe9: 0x000c,\n\t// Block 0x40, offset 0x1000\n\t0x1020: 0x000c, 0x1021: 0x000c, 0x1022: 0x000c,\n\t0x1027: 0x000c, 0x1028: 0x000c,\n\t0x1032: 0x000c,\n\t0x1039: 0x000c, 0x103a: 0x000c, 0x103b: 0x000c,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x000a, 0x1044: 0x000a, 0x1045: 0x000a,\n\t// Block 0x42, offset 0x1080\n\t0x109e: 0x000a, 0x109f: 0x000a, 0x10a0: 0x000a, 0x10a1: 0x000a, 0x10a2: 0x000a, 0x10a3: 0x000a,\n\t0x10a4: 0x000a, 0x10a5: 0x000a, 0x10a6: 0x000a, 0x10a7: 0x000a, 0x10a8: 0x000a, 0x10a9: 0x000a,\n\t0x10aa: 0x000a, 0x10ab: 0x000a, 0x10ac: 0x000a, 0x10ad: 0x000a, 0x10ae: 0x000a, 0x10af: 0x000a,\n\t0x10b0: 0x000a, 0x10b1: 0x000a, 0x10b2: 0x000a, 0x10b3: 0x000a, 0x10b4: 0x000a, 0x10b5: 0x000a,\n\t0x10b6: 0x000a, 0x10b7: 0x000a, 0x10b8: 0x000a, 0x10b9: 0x000a, 0x10ba: 0x000a, 0x10bb: 0x000a,\n\t0x10bc: 0x000a, 0x10bd: 0x000a, 0x10be: 0x000a, 0x10bf: 0x000a,\n\t// Block 0x43, offset 0x10c0\n\t0x10d7: 0x000c,\n\t0x10d8: 0x000c, 0x10db: 0x000c,\n\t// Block 0x44, offset 0x1100\n\t0x1116: 0x000c,\n\t0x1118: 0x000c, 0x1119: 0x000c, 0x111a: 0x000c, 0x111b: 0x000c, 0x111c: 0x000c, 0x111d: 0x000c,\n\t0x111e: 0x000c, 0x1120: 0x000c, 0x1122: 0x000c,\n\t0x1125: 0x000c, 0x1126: 0x000c, 0x1127: 0x000c, 0x1128: 0x000c, 0x1129: 0x000c,\n\t0x112a: 0x000c, 0x112b: 0x000c, 0x112c: 0x000c,\n\t0x1133: 0x000c, 0x1134: 0x000c, 0x1135: 0x000c,\n\t0x1136: 0x000c, 0x1137: 0x000c, 0x1138: 0x000c, 0x1139: 0x000c, 0x113a: 0x000c, 0x113b: 0x000c,\n\t0x113c: 0x000c, 0x113f: 0x000c,\n\t// Block 0x45, offset 0x1140\n\t0x1170: 0x000c, 0x1171: 0x000c, 0x1172: 0x000c, 0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c,\n\t0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c,\n\t0x117c: 0x000c, 0x117d: 0x000c, 0x117e: 0x000c,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x000c, 0x1181: 0x000c, 0x1182: 0x000c, 0x1183: 0x000c,\n\t0x11b4: 0x000c,\n\t0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c,\n\t0x11bc: 0x000c,\n\t// Block 0x47, offset 0x11c0\n\t0x11c2: 0x000c,\n\t0x11eb: 0x000c, 0x11ec: 0x000c, 0x11ed: 0x000c, 0x11ee: 0x000c, 0x11ef: 0x000c,\n\t0x11f0: 0x000c, 0x11f1: 0x000c, 0x11f2: 0x000c, 0x11f3: 0x000c,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x000c, 0x1201: 0x000c,\n\t0x1222: 0x000c, 0x1223: 0x000c,\n\t0x1224: 0x000c, 0x1225: 0x000c, 0x1228: 0x000c, 0x1229: 0x000c,\n\t0x122b: 0x000c, 0x122c: 0x000c, 0x122d: 0x000c,\n\t// Block 0x49, offset 0x1240\n\t0x1266: 0x000c, 0x1268: 0x000c, 0x1269: 0x000c,\n\t0x126d: 0x000c, 0x126f: 0x000c,\n\t0x1270: 0x000c, 0x1271: 0x000c,\n\t// Block 0x4a, offset 0x1280\n\t0x12ac: 0x000c, 0x12ad: 0x000c, 0x12ae: 0x000c, 0x12af: 0x000c,\n\t0x12b0: 0x000c, 0x12b1: 0x000c, 0x12b2: 0x000c, 0x12b3: 0x000c,\n\t0x12b6: 0x000c, 0x12b7: 0x000c,\n\t// Block 0x4b, offset 0x12c0\n\t0x12d0: 0x000c, 0x12d1: 0x000c,\n\t0x12d2: 0x000c, 0x12d4: 0x000c, 0x12d5: 0x000c, 0x12d6: 0x000c, 0x12d7: 0x000c,\n\t0x12d8: 0x000c, 0x12d9: 0x000c, 0x12da: 0x000c, 0x12db: 0x000c, 0x12dc: 0x000c, 0x12dd: 0x000c,\n\t0x12de: 0x000c, 0x12df: 0x000c, 0x12e0: 0x000c, 0x12e2: 0x000c, 0x12e3: 0x000c,\n\t0x12e4: 0x000c, 0x12e5: 0x000c, 0x12e6: 0x000c, 0x12e7: 0x000c, 0x12e8: 0x000c,\n\t0x12ed: 0x000c,\n\t0x12f4: 0x000c,\n\t0x12f8: 0x000c, 0x12f9: 0x000c,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x000c, 0x1301: 0x000c, 0x1302: 0x000c, 0x1303: 0x000c, 0x1304: 0x000c, 0x1305: 0x000c,\n\t0x1306: 0x000c, 0x1307: 0x000c, 0x1308: 0x000c, 0x1309: 0x000c, 0x130a: 0x000c, 0x130b: 0x000c,\n\t0x130c: 0x000c, 0x130d: 0x000c, 0x130e: 0x000c, 0x130f: 0x000c, 0x1310: 0x000c, 0x1311: 0x000c,\n\t0x1312: 0x000c, 0x1313: 0x000c, 0x1314: 0x000c, 0x1315: 0x000c, 0x1316: 0x000c, 0x1317: 0x000c,\n\t0x1318: 0x000c, 0x1319: 0x000c, 0x131a: 0x000c, 0x131b: 0x000c, 0x131c: 0x000c, 0x131d: 0x000c,\n\t0x131e: 0x000c, 0x131f: 0x000c, 0x1320: 0x000c, 0x1321: 0x000c, 0x1322: 0x000c, 0x1323: 0x000c,\n\t0x1324: 0x000c, 0x1325: 0x000c, 0x1326: 0x000c, 0x1327: 0x000c, 0x1328: 0x000c, 0x1329: 0x000c,\n\t0x132a: 0x000c, 0x132b: 0x000c, 0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c,\n\t0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c, 0x1334: 0x000c, 0x1335: 0x000c,\n\t0x1336: 0x000c, 0x1337: 0x000c, 0x1338: 0x000c, 0x1339: 0x000c, 0x133b: 0x000c,\n\t0x133c: 0x000c, 0x133d: 0x000c, 0x133e: 0x000c, 0x133f: 0x000c,\n\t// Block 0x4d, offset 0x1340\n\t0x137d: 0x000a, 0x137f: 0x000a,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x000a, 0x1381: 0x000a,\n\t0x138d: 0x000a, 0x138e: 0x000a, 0x138f: 0x000a,\n\t0x139d: 0x000a,\n\t0x139e: 0x000a, 0x139f: 0x000a,\n\t0x13ad: 0x000a, 0x13ae: 0x000a, 0x13af: 0x000a,\n\t0x13bd: 0x000a, 0x13be: 0x000a,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x0009, 0x13c1: 0x0009, 0x13c2: 0x0009, 0x13c3: 0x0009, 0x13c4: 0x0009, 0x13c5: 0x0009,\n\t0x13c6: 0x0009, 0x13c7: 0x0009, 0x13c8: 0x0009, 0x13c9: 0x0009, 0x13ca: 0x0009, 0x13cb: 0x000b,\n\t0x13cc: 0x000b, 0x13cd: 0x000b, 0x13cf: 0x0001, 0x13d0: 0x000a, 0x13d1: 0x000a,\n\t0x13d2: 0x000a, 0x13d3: 0x000a, 0x13d4: 0x000a, 0x13d5: 0x000a, 0x13d6: 0x000a, 0x13d7: 0x000a,\n\t0x13d8: 0x000a, 0x13d9: 0x000a, 0x13da: 0x000a, 0x13db: 0x000a, 0x13dc: 0x000a, 0x13dd: 0x000a,\n\t0x13de: 0x000a, 0x13df: 0x000a, 0x13e0: 0x000a, 0x13e1: 0x000a, 0x13e2: 0x000a, 0x13e3: 0x000a,\n\t0x13e4: 0x000a, 0x13e5: 0x000a, 0x13e6: 0x000a, 0x13e7: 0x000a, 0x13e8: 0x0009, 0x13e9: 0x0007,\n\t0x13ea: 0x000e, 0x13eb: 0x000e, 0x13ec: 0x000e, 0x13ed: 0x000e, 0x13ee: 0x000e, 0x13ef: 0x0006,\n\t0x13f0: 0x0004, 0x13f1: 0x0004, 0x13f2: 0x0004, 0x13f3: 0x0004, 0x13f4: 0x0004, 0x13f5: 0x000a,\n\t0x13f6: 0x000a, 0x13f7: 0x000a, 0x13f8: 0x000a, 0x13f9: 0x000a, 0x13fa: 0x000a, 0x13fb: 0x000a,\n\t0x13fc: 0x000a, 0x13fd: 0x000a, 0x13fe: 0x000a, 0x13ff: 0x000a,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x000a, 0x1401: 0x000a, 0x1402: 0x000a, 0x1403: 0x000a, 0x1404: 0x0006, 0x1405: 0x009a,\n\t0x1406: 0x008a, 0x1407: 0x000a, 0x1408: 0x000a, 0x1409: 0x000a, 0x140a: 0x000a, 0x140b: 0x000a,\n\t0x140c: 0x000a, 0x140d: 0x000a, 0x140e: 0x000a, 0x140f: 0x000a, 0x1410: 0x000a, 0x1411: 0x000a,\n\t0x1412: 0x000a, 0x1413: 0x000a, 0x1414: 0x000a, 0x1415: 0x000a, 0x1416: 0x000a, 0x1417: 0x000a,\n\t0x1418: 0x000a, 0x1419: 0x000a, 0x141a: 0x000a, 0x141b: 0x000a, 0x141c: 0x000a, 0x141d: 0x000a,\n\t0x141e: 0x000a, 0x141f: 0x0009, 0x1420: 0x000b, 0x1421: 0x000b, 0x1422: 0x000b, 0x1423: 0x000b,\n\t0x1424: 0x000b, 0x1425: 0x000b, 0x1426: 0x000e, 0x1427: 0x000e, 0x1428: 0x000e, 0x1429: 0x000e,\n\t0x142a: 0x000b, 0x142b: 0x000b, 0x142c: 0x000b, 0x142d: 0x000b, 0x142e: 0x000b, 0x142f: 0x000b,\n\t0x1430: 0x0002, 0x1434: 0x0002, 0x1435: 0x0002,\n\t0x1436: 0x0002, 0x1437: 0x0002, 0x1438: 0x0002, 0x1439: 0x0002, 0x143a: 0x0003, 0x143b: 0x0003,\n\t0x143c: 0x000a, 0x143d: 0x009a, 0x143e: 0x008a,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x0002, 0x1441: 0x0002, 0x1442: 0x0002, 0x1443: 0x0002, 0x1444: 0x0002, 0x1445: 0x0002,\n\t0x1446: 0x0002, 0x1447: 0x0002, 0x1448: 0x0002, 0x1449: 0x0002, 0x144a: 0x0003, 0x144b: 0x0003,\n\t0x144c: 0x000a, 0x144d: 0x009a, 0x144e: 0x008a,\n\t0x1460: 0x0004, 0x1461: 0x0004, 0x1462: 0x0004, 0x1463: 0x0004,\n\t0x1464: 0x0004, 0x1465: 0x0004, 0x1466: 0x0004, 0x1467: 0x0004, 0x1468: 0x0004, 0x1469: 0x0004,\n\t0x146a: 0x0004, 0x146b: 0x0004, 0x146c: 0x0004, 0x146d: 0x0004, 0x146e: 0x0004, 0x146f: 0x0004,\n\t0x1470: 0x0004, 0x1471: 0x0004, 0x1472: 0x0004, 0x1473: 0x0004, 0x1474: 0x0004, 0x1475: 0x0004,\n\t0x1476: 0x0004, 0x1477: 0x0004, 0x1478: 0x0004, 0x1479: 0x0004, 0x147a: 0x0004, 0x147b: 0x0004,\n\t0x147c: 0x0004, 0x147d: 0x0004, 0x147e: 0x0004, 0x147f: 0x0004,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x0004, 0x1481: 0x0004, 0x1482: 0x0004, 0x1483: 0x0004, 0x1484: 0x0004, 0x1485: 0x0004,\n\t0x1486: 0x0004, 0x1487: 0x0004, 0x1488: 0x0004, 0x1489: 0x0004, 0x148a: 0x0004, 0x148b: 0x0004,\n\t0x148c: 0x0004, 0x148d: 0x0004, 0x148e: 0x0004, 0x148f: 0x0004, 0x1490: 0x000c, 0x1491: 0x000c,\n\t0x1492: 0x000c, 0x1493: 0x000c, 0x1494: 0x000c, 0x1495: 0x000c, 0x1496: 0x000c, 0x1497: 0x000c,\n\t0x1498: 0x000c, 0x1499: 0x000c, 0x149a: 0x000c, 0x149b: 0x000c, 0x149c: 0x000c, 0x149d: 0x000c,\n\t0x149e: 0x000c, 0x149f: 0x000c, 0x14a0: 0x000c, 0x14a1: 0x000c, 0x14a2: 0x000c, 0x14a3: 0x000c,\n\t0x14a4: 0x000c, 0x14a5: 0x000c, 0x14a6: 0x000c, 0x14a7: 0x000c, 0x14a8: 0x000c, 0x14a9: 0x000c,\n\t0x14aa: 0x000c, 0x14ab: 0x000c, 0x14ac: 0x000c, 0x14ad: 0x000c, 0x14ae: 0x000c, 0x14af: 0x000c,\n\t0x14b0: 0x000c,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x000a, 0x14c1: 0x000a, 0x14c3: 0x000a, 0x14c4: 0x000a, 0x14c5: 0x000a,\n\t0x14c6: 0x000a, 0x14c8: 0x000a, 0x14c9: 0x000a,\n\t0x14d4: 0x000a, 0x14d6: 0x000a, 0x14d7: 0x000a,\n\t0x14d8: 0x000a,\n\t0x14de: 0x000a, 0x14df: 0x000a, 0x14e0: 0x000a, 0x14e1: 0x000a, 0x14e2: 0x000a, 0x14e3: 0x000a,\n\t0x14e5: 0x000a, 0x14e7: 0x000a, 0x14e9: 0x000a,\n\t0x14ee: 0x0004,\n\t0x14fa: 0x000a, 0x14fb: 0x000a,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x000a, 0x1501: 0x000a, 0x1502: 0x000a, 0x1503: 0x000a, 0x1504: 0x000a,\n\t0x150a: 0x000a, 0x150b: 0x000a,\n\t0x150c: 0x000a, 0x150d: 0x000a, 0x1510: 0x000a, 0x1511: 0x000a,\n\t0x1512: 0x000a, 0x1513: 0x000a, 0x1514: 0x000a, 0x1515: 0x000a, 0x1516: 0x000a, 0x1517: 0x000a,\n\t0x1518: 0x000a, 0x1519: 0x000a, 0x151a: 0x000a, 0x151b: 0x000a, 0x151c: 0x000a, 0x151d: 0x000a,\n\t0x151e: 0x000a, 0x151f: 0x000a,\n\t// Block 0x55, offset 0x1540\n\t0x1549: 0x000a, 0x154a: 0x000a, 0x154b: 0x000a,\n\t0x1550: 0x000a, 0x1551: 0x000a,\n\t0x1552: 0x000a, 0x1553: 0x000a, 0x1554: 0x000a, 0x1555: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a,\n\t0x1558: 0x000a, 0x1559: 0x000a, 0x155a: 0x000a, 0x155b: 0x000a, 0x155c: 0x000a, 0x155d: 0x000a,\n\t0x155e: 0x000a, 0x155f: 0x000a, 0x1560: 0x000a, 0x1561: 0x000a, 0x1562: 0x000a, 0x1563: 0x000a,\n\t0x1564: 0x000a, 0x1565: 0x000a, 0x1566: 0x000a, 0x1567: 0x000a, 0x1568: 0x000a, 0x1569: 0x000a,\n\t0x156a: 0x000a, 0x156b: 0x000a, 0x156c: 0x000a, 0x156d: 0x000a, 0x156e: 0x000a, 0x156f: 0x000a,\n\t0x1570: 0x000a, 0x1571: 0x000a, 0x1572: 0x000a, 0x1573: 0x000a, 0x1574: 0x000a, 0x1575: 0x000a,\n\t0x1576: 0x000a, 0x1577: 0x000a, 0x1578: 0x000a, 0x1579: 0x000a, 0x157a: 0x000a, 0x157b: 0x000a,\n\t0x157c: 0x000a, 0x157d: 0x000a, 0x157e: 0x000a, 0x157f: 0x000a,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x000a, 0x1581: 0x000a, 0x1582: 0x000a, 0x1583: 0x000a, 0x1584: 0x000a, 0x1585: 0x000a,\n\t0x1586: 0x000a, 0x1587: 0x000a, 0x1588: 0x000a, 0x1589: 0x000a, 0x158a: 0x000a, 0x158b: 0x000a,\n\t0x158c: 0x000a, 0x158d: 0x000a, 0x158e: 0x000a, 0x158f: 0x000a, 0x1590: 0x000a, 0x1591: 0x000a,\n\t0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a,\n\t0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a,\n\t0x159e: 0x000a, 0x159f: 0x000a, 0x15a0: 0x000a, 0x15a1: 0x000a, 0x15a2: 0x000a, 0x15a3: 0x000a,\n\t0x15a4: 0x000a, 0x15a5: 0x000a, 0x15a6: 0x000a, 0x15a7: 0x000a, 0x15a8: 0x000a, 0x15a9: 0x000a,\n\t0x15aa: 0x000a, 0x15ab: 0x000a, 0x15ac: 0x000a, 0x15ad: 0x000a, 0x15ae: 0x000a, 0x15af: 0x000a,\n\t0x15b0: 0x000a, 0x15b1: 0x000a, 0x15b2: 0x000a, 0x15b3: 0x000a, 0x15b4: 0x000a, 0x15b5: 0x000a,\n\t0x15b6: 0x000a, 0x15b7: 0x000a, 0x15b8: 0x000a, 0x15b9: 0x000a, 0x15ba: 0x000a, 0x15bb: 0x000a,\n\t0x15bc: 0x000a, 0x15bd: 0x000a, 0x15be: 0x000a, 0x15bf: 0x000a,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x000a, 0x15c1: 0x000a, 0x15c2: 0x000a, 0x15c3: 0x000a, 0x15c4: 0x000a, 0x15c5: 0x000a,\n\t0x15c6: 0x000a, 0x15c7: 0x000a, 0x15c8: 0x000a, 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a,\n\t0x15cc: 0x000a, 0x15cd: 0x000a, 0x15ce: 0x000a, 0x15cf: 0x000a, 0x15d0: 0x000a, 0x15d1: 0x000a,\n\t0x15d2: 0x0003, 0x15d3: 0x0004, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a,\n\t0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a,\n\t0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a,\n\t0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a,\n\t0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a,\n\t0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a,\n\t0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a,\n\t0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a,\n\t0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x003a, 0x1609: 0x002a, 0x160a: 0x003a, 0x160b: 0x002a,\n\t0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a,\n\t0x1612: 0x000a, 0x1613: 0x000a, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a,\n\t0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a,\n\t0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a,\n\t0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x009a,\n\t0x162a: 0x008a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a,\n\t0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a,\n\t// Block 0x59, offset 0x1640\n\t0x167b: 0x000a,\n\t0x167c: 0x000a, 0x167d: 0x000a, 0x167e: 0x000a, 0x167f: 0x000a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x000a, 0x1681: 0x000a, 0x1682: 0x000a, 0x1683: 0x000a, 0x1684: 0x000a, 0x1685: 0x000a,\n\t0x1686: 0x000a, 0x1687: 0x000a, 0x1688: 0x000a, 0x1689: 0x000a, 0x168a: 0x000a, 0x168b: 0x000a,\n\t0x168c: 0x000a, 0x168d: 0x000a, 0x168e: 0x000a, 0x168f: 0x000a, 0x1690: 0x000a, 0x1691: 0x000a,\n\t0x1692: 0x000a, 0x1693: 0x000a, 0x1694: 0x000a, 0x1696: 0x000a, 0x1697: 0x000a,\n\t0x1698: 0x000a, 0x1699: 0x000a, 0x169a: 0x000a, 0x169b: 0x000a, 0x169c: 0x000a, 0x169d: 0x000a,\n\t0x169e: 0x000a, 0x169f: 0x000a, 0x16a0: 0x000a, 0x16a1: 0x000a, 0x16a2: 0x000a, 0x16a3: 0x000a,\n\t0x16a4: 0x000a, 0x16a5: 0x000a, 0x16a6: 0x000a, 0x16a7: 0x000a, 0x16a8: 0x000a, 0x16a9: 0x000a,\n\t0x16aa: 0x000a, 0x16ab: 0x000a, 0x16ac: 0x000a, 0x16ad: 0x000a, 0x16ae: 0x000a, 0x16af: 0x000a,\n\t0x16b0: 0x000a, 0x16b1: 0x000a, 0x16b2: 0x000a, 0x16b3: 0x000a, 0x16b4: 0x000a, 0x16b5: 0x000a,\n\t0x16b6: 0x000a, 0x16b7: 0x000a, 0x16b8: 0x000a, 0x16b9: 0x000a, 0x16ba: 0x000a, 0x16bb: 0x000a,\n\t0x16bc: 0x000a, 0x16bd: 0x000a, 0x16be: 0x000a, 0x16bf: 0x000a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x000a, 0x16c1: 0x000a, 0x16c2: 0x000a, 0x16c3: 0x000a, 0x16c4: 0x000a, 0x16c5: 0x000a,\n\t0x16c6: 0x000a, 0x16c7: 0x000a, 0x16c8: 0x000a, 0x16c9: 0x000a, 0x16ca: 0x000a, 0x16cb: 0x000a,\n\t0x16cc: 0x000a, 0x16cd: 0x000a, 0x16ce: 0x000a, 0x16cf: 0x000a, 0x16d0: 0x000a, 0x16d1: 0x000a,\n\t0x16d2: 0x000a, 0x16d3: 0x000a, 0x16d4: 0x000a, 0x16d5: 0x000a, 0x16d6: 0x000a, 0x16d7: 0x000a,\n\t0x16d8: 0x000a, 0x16d9: 0x000a, 0x16da: 0x000a, 0x16db: 0x000a, 0x16dc: 0x000a, 0x16dd: 0x000a,\n\t0x16de: 0x000a, 0x16df: 0x000a, 0x16e0: 0x000a, 0x16e1: 0x000a, 0x16e2: 0x000a, 0x16e3: 0x000a,\n\t0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a,\n\t0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a,\n\t0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a,\n\t0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a, 0x1727: 0x000a, 0x1728: 0x000a, 0x1729: 0x000a,\n\t0x172a: 0x000a, 0x172b: 0x000a, 0x172c: 0x000a, 0x172d: 0x000a, 0x172e: 0x000a, 0x172f: 0x000a,\n\t0x1730: 0x000a, 0x1731: 0x000a, 0x1732: 0x000a, 0x1733: 0x000a, 0x1734: 0x000a, 0x1735: 0x000a,\n\t0x1736: 0x000a, 0x1737: 0x000a, 0x1738: 0x000a, 0x1739: 0x000a, 0x173a: 0x000a, 0x173b: 0x000a,\n\t0x173c: 0x000a, 0x173d: 0x000a, 0x173e: 0x000a, 0x173f: 0x000a,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a,\n\t0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x0002, 0x1749: 0x0002, 0x174a: 0x0002, 0x174b: 0x0002,\n\t0x174c: 0x0002, 0x174d: 0x0002, 0x174e: 0x0002, 0x174f: 0x0002, 0x1750: 0x0002, 0x1751: 0x0002,\n\t0x1752: 0x0002, 0x1753: 0x0002, 0x1754: 0x0002, 0x1755: 0x0002, 0x1756: 0x0002, 0x1757: 0x0002,\n\t0x1758: 0x0002, 0x1759: 0x0002, 0x175a: 0x0002, 0x175b: 0x0002,\n\t// Block 0x5e, offset 0x1780\n\t0x17aa: 0x000a, 0x17ab: 0x000a, 0x17ac: 0x000a, 0x17ad: 0x000a, 0x17ae: 0x000a, 0x17af: 0x000a,\n\t0x17b0: 0x000a, 0x17b1: 0x000a, 0x17b2: 0x000a, 0x17b3: 0x000a, 0x17b4: 0x000a, 0x17b5: 0x000a,\n\t0x17b6: 0x000a, 0x17b7: 0x000a, 0x17b8: 0x000a, 0x17b9: 0x000a, 0x17ba: 0x000a, 0x17bb: 0x000a,\n\t0x17bc: 0x000a, 0x17bd: 0x000a, 0x17be: 0x000a, 0x17bf: 0x000a,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x000a, 0x17c1: 0x000a, 0x17c2: 0x000a, 0x17c3: 0x000a, 0x17c4: 0x000a, 0x17c5: 0x000a,\n\t0x17c6: 0x000a, 0x17c7: 0x000a, 0x17c8: 0x000a, 0x17c9: 0x000a, 0x17ca: 0x000a, 0x17cb: 0x000a,\n\t0x17cc: 0x000a, 0x17cd: 0x000a, 0x17ce: 0x000a, 0x17cf: 0x000a, 0x17d0: 0x000a, 0x17d1: 0x000a,\n\t0x17d2: 0x000a, 0x17d3: 0x000a, 0x17d4: 0x000a, 0x17d5: 0x000a, 0x17d6: 0x000a, 0x17d7: 0x000a,\n\t0x17d8: 0x000a, 0x17d9: 0x000a, 0x17da: 0x000a, 0x17db: 0x000a, 0x17dc: 0x000a, 0x17dd: 0x000a,\n\t0x17de: 0x000a, 0x17df: 0x000a, 0x17e0: 0x000a, 0x17e1: 0x000a, 0x17e2: 0x000a, 0x17e3: 0x000a,\n\t0x17e4: 0x000a, 0x17e5: 0x000a, 0x17e6: 0x000a, 0x17e7: 0x000a, 0x17e8: 0x000a, 0x17e9: 0x000a,\n\t0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a,\n\t0x17f0: 0x000a, 0x17f1: 0x000a, 0x17f2: 0x000a, 0x17f3: 0x000a, 0x17f4: 0x000a, 0x17f5: 0x000a,\n\t0x17f6: 0x000a, 0x17f7: 0x000a, 0x17f8: 0x000a, 0x17f9: 0x000a, 0x17fa: 0x000a, 0x17fb: 0x000a,\n\t0x17fc: 0x000a, 0x17fd: 0x000a, 0x17fe: 0x000a, 0x17ff: 0x000a,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x000a, 0x1801: 0x000a, 0x1802: 0x000a, 0x1803: 0x000a, 0x1804: 0x000a, 0x1805: 0x000a,\n\t0x1806: 0x000a, 0x1807: 0x000a, 0x1808: 0x000a, 0x1809: 0x000a, 0x180a: 0x000a, 0x180b: 0x000a,\n\t0x180c: 0x000a, 0x180d: 0x000a, 0x180e: 0x000a, 0x180f: 0x000a, 0x1810: 0x000a, 0x1811: 0x000a,\n\t0x1812: 0x000a, 0x1813: 0x000a, 0x1814: 0x000a, 0x1815: 0x000a, 0x1816: 0x000a, 0x1817: 0x000a,\n\t0x1818: 0x000a, 0x1819: 0x000a, 0x181a: 0x000a, 0x181b: 0x000a, 0x181c: 0x000a, 0x181d: 0x000a,\n\t0x181e: 0x000a, 0x181f: 0x000a, 0x1820: 0x000a, 0x1821: 0x000a, 0x1822: 0x000a, 0x1823: 0x000a,\n\t0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x003a, 0x1829: 0x002a,\n\t0x182a: 0x003a, 0x182b: 0x002a, 0x182c: 0x003a, 0x182d: 0x002a, 0x182e: 0x003a, 0x182f: 0x002a,\n\t0x1830: 0x003a, 0x1831: 0x002a, 0x1832: 0x003a, 0x1833: 0x002a, 0x1834: 0x003a, 0x1835: 0x002a,\n\t0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a,\n\t0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x009a,\n\t0x1846: 0x008a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a,\n\t0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a,\n\t0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a,\n\t0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a,\n\t0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a,\n\t0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x003a, 0x1867: 0x002a, 0x1868: 0x003a, 0x1869: 0x002a,\n\t0x186a: 0x003a, 0x186b: 0x002a, 0x186c: 0x003a, 0x186d: 0x002a, 0x186e: 0x003a, 0x186f: 0x002a,\n\t0x1870: 0x000a, 0x1871: 0x000a, 0x1872: 0x000a, 0x1873: 0x000a, 0x1874: 0x000a, 0x1875: 0x000a,\n\t0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a,\n\t0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x007a, 0x1884: 0x006a, 0x1885: 0x009a,\n\t0x1886: 0x008a, 0x1887: 0x00ba, 0x1888: 0x00aa, 0x1889: 0x009a, 0x188a: 0x008a, 0x188b: 0x007a,\n\t0x188c: 0x006a, 0x188d: 0x00da, 0x188e: 0x002a, 0x188f: 0x003a, 0x1890: 0x00ca, 0x1891: 0x009a,\n\t0x1892: 0x008a, 0x1893: 0x007a, 0x1894: 0x006a, 0x1895: 0x009a, 0x1896: 0x008a, 0x1897: 0x00ba,\n\t0x1898: 0x00aa, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a,\n\t0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a,\n\t0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x000a, 0x18a7: 0x000a, 0x18a8: 0x000a, 0x18a9: 0x000a,\n\t0x18aa: 0x000a, 0x18ab: 0x000a, 0x18ac: 0x000a, 0x18ad: 0x000a, 0x18ae: 0x000a, 0x18af: 0x000a,\n\t0x18b0: 0x000a, 0x18b1: 0x000a, 0x18b2: 0x000a, 0x18b3: 0x000a, 0x18b4: 0x000a, 0x18b5: 0x000a,\n\t0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a,\n\t0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x000a, 0x18c4: 0x000a, 0x18c5: 0x000a,\n\t0x18c6: 0x000a, 0x18c7: 0x000a, 0x18c8: 0x000a, 0x18c9: 0x000a, 0x18ca: 0x000a, 0x18cb: 0x000a,\n\t0x18cc: 0x000a, 0x18cd: 0x000a, 0x18ce: 0x000a, 0x18cf: 0x000a, 0x18d0: 0x000a, 0x18d1: 0x000a,\n\t0x18d2: 0x000a, 0x18d3: 0x000a, 0x18d4: 0x000a, 0x18d5: 0x000a, 0x18d6: 0x000a, 0x18d7: 0x000a,\n\t0x18d8: 0x003a, 0x18d9: 0x002a, 0x18da: 0x003a, 0x18db: 0x002a, 0x18dc: 0x000a, 0x18dd: 0x000a,\n\t0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a,\n\t0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x000a, 0x18e7: 0x000a, 0x18e8: 0x000a, 0x18e9: 0x000a,\n\t0x18ea: 0x000a, 0x18eb: 0x000a, 0x18ec: 0x000a, 0x18ed: 0x000a, 0x18ee: 0x000a, 0x18ef: 0x000a,\n\t0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a,\n\t0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a,\n\t0x18fc: 0x003a, 0x18fd: 0x002a, 0x18fe: 0x000a, 0x18ff: 0x000a,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x000a, 0x1904: 0x000a, 0x1905: 0x000a,\n\t0x1906: 0x000a, 0x1907: 0x000a, 0x1908: 0x000a, 0x1909: 0x000a, 0x190a: 0x000a, 0x190b: 0x000a,\n\t0x190c: 0x000a, 0x190d: 0x000a, 0x190e: 0x000a, 0x190f: 0x000a, 0x1910: 0x000a, 0x1911: 0x000a,\n\t0x1912: 0x000a, 0x1913: 0x000a, 0x1914: 0x000a, 0x1915: 0x000a, 0x1916: 0x000a, 0x1917: 0x000a,\n\t0x1918: 0x000a, 0x1919: 0x000a, 0x191a: 0x000a, 0x191b: 0x000a, 0x191c: 0x000a, 0x191d: 0x000a,\n\t0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a,\n\t0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a,\n\t0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a,\n\t0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a,\n\t0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a,\n\t0x193c: 0x000a, 0x193d: 0x000a, 0x193e: 0x000a, 0x193f: 0x000a,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a,\n\t0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a,\n\t0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a,\n\t0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a,\n\t0x1958: 0x000a, 0x1959: 0x000a, 0x195a: 0x000a, 0x195b: 0x000a, 0x195c: 0x000a, 0x195d: 0x000a,\n\t0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a,\n\t0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a,\n\t0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a,\n\t0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a, 0x1974: 0x000a, 0x1975: 0x000a,\n\t0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a,\n\t0x197c: 0x000a, 0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a,\n\t// Block 0x66, offset 0x1980\n\t0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a,\n\t0x19aa: 0x000a, 0x19af: 0x000c,\n\t0x19b0: 0x000c, 0x19b1: 0x000c,\n\t0x19b9: 0x000a, 0x19ba: 0x000a, 0x19bb: 0x000a,\n\t0x19bc: 0x000a, 0x19bd: 0x000a, 0x19be: 0x000a, 0x19bf: 0x000a,\n\t// Block 0x67, offset 0x19c0\n\t0x19ff: 0x000c,\n\t// Block 0x68, offset 0x1a00\n\t0x1a20: 0x000c, 0x1a21: 0x000c, 0x1a22: 0x000c, 0x1a23: 0x000c,\n\t0x1a24: 0x000c, 0x1a25: 0x000c, 0x1a26: 0x000c, 0x1a27: 0x000c, 0x1a28: 0x000c, 0x1a29: 0x000c,\n\t0x1a2a: 0x000c, 0x1a2b: 0x000c, 0x1a2c: 0x000c, 0x1a2d: 0x000c, 0x1a2e: 0x000c, 0x1a2f: 0x000c,\n\t0x1a30: 0x000c, 0x1a31: 0x000c, 0x1a32: 0x000c, 0x1a33: 0x000c, 0x1a34: 0x000c, 0x1a35: 0x000c,\n\t0x1a36: 0x000c, 0x1a37: 0x000c, 0x1a38: 0x000c, 0x1a39: 0x000c, 0x1a3a: 0x000c, 0x1a3b: 0x000c,\n\t0x1a3c: 0x000c, 0x1a3d: 0x000c, 0x1a3e: 0x000c, 0x1a3f: 0x000c,\n\t// Block 0x69, offset 0x1a40\n\t0x1a40: 0x000a, 0x1a41: 0x000a, 0x1a42: 0x000a, 0x1a43: 0x000a, 0x1a44: 0x000a, 0x1a45: 0x000a,\n\t0x1a46: 0x000a, 0x1a47: 0x000a, 0x1a48: 0x000a, 0x1a49: 0x000a, 0x1a4a: 0x000a, 0x1a4b: 0x000a,\n\t0x1a4c: 0x000a, 0x1a4d: 0x000a, 0x1a4e: 0x000a, 0x1a4f: 0x000a, 0x1a50: 0x000a, 0x1a51: 0x000a,\n\t0x1a52: 0x000a, 0x1a53: 0x000a, 0x1a54: 0x000a, 0x1a55: 0x000a, 0x1a56: 0x000a, 0x1a57: 0x000a,\n\t0x1a58: 0x000a, 0x1a59: 0x000a, 0x1a5a: 0x000a, 0x1a5b: 0x000a, 0x1a5c: 0x000a, 0x1a5d: 0x000a,\n\t0x1a5e: 0x000a, 0x1a5f: 0x000a, 0x1a60: 0x000a, 0x1a61: 0x000a, 0x1a62: 0x003a, 0x1a63: 0x002a,\n\t0x1a64: 0x003a, 0x1a65: 0x002a, 0x1a66: 0x003a, 0x1a67: 0x002a, 0x1a68: 0x003a, 0x1a69: 0x002a,\n\t0x1a6a: 0x000a, 0x1a6b: 0x000a, 0x1a6c: 0x000a, 0x1a6d: 0x000a, 0x1a6e: 0x000a, 0x1a6f: 0x000a,\n\t0x1a70: 0x000a, 0x1a71: 0x000a, 0x1a72: 0x000a, 0x1a73: 0x000a, 0x1a74: 0x000a, 0x1a75: 0x000a,\n\t0x1a76: 0x000a, 0x1a77: 0x000a, 0x1a78: 0x000a, 0x1a79: 0x000a, 0x1a7a: 0x000a, 0x1a7b: 0x000a,\n\t0x1a7c: 0x000a, 0x1a7d: 0x000a, 0x1a7e: 0x000a, 0x1a7f: 0x000a,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x000a, 0x1a81: 0x000a, 0x1a82: 0x000a, 0x1a83: 0x000a, 0x1a84: 0x000a, 0x1a85: 0x000a,\n\t0x1a86: 0x000a, 0x1a87: 0x000a, 0x1a88: 0x000a, 0x1a89: 0x000a, 0x1a8a: 0x000a, 0x1a8b: 0x000a,\n\t0x1a8c: 0x000a, 0x1a8d: 0x000a, 0x1a8e: 0x000a, 0x1a8f: 0x000a,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a,\n\t0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a,\n\t0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a, 0x1acf: 0x000a, 0x1ad0: 0x000a, 0x1ad1: 0x000a,\n\t0x1ad2: 0x000a, 0x1ad3: 0x000a, 0x1ad4: 0x000a, 0x1ad5: 0x000a, 0x1ad6: 0x000a, 0x1ad7: 0x000a,\n\t0x1ad8: 0x000a, 0x1ad9: 0x000a, 0x1adb: 0x000a, 0x1adc: 0x000a, 0x1add: 0x000a,\n\t0x1ade: 0x000a, 0x1adf: 0x000a, 0x1ae0: 0x000a, 0x1ae1: 0x000a, 0x1ae2: 0x000a, 0x1ae3: 0x000a,\n\t0x1ae4: 0x000a, 0x1ae5: 0x000a, 0x1ae6: 0x000a, 0x1ae7: 0x000a, 0x1ae8: 0x000a, 0x1ae9: 0x000a,\n\t0x1aea: 0x000a, 0x1aeb: 0x000a, 0x1aec: 0x000a, 0x1aed: 0x000a, 0x1aee: 0x000a, 0x1aef: 0x000a,\n\t0x1af0: 0x000a, 0x1af1: 0x000a, 0x1af2: 0x000a, 0x1af3: 0x000a, 0x1af4: 0x000a, 0x1af5: 0x000a,\n\t0x1af6: 0x000a, 0x1af7: 0x000a, 0x1af8: 0x000a, 0x1af9: 0x000a, 0x1afa: 0x000a, 0x1afb: 0x000a,\n\t0x1afc: 0x000a, 0x1afd: 0x000a, 0x1afe: 0x000a, 0x1aff: 0x000a,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, 0x1b05: 0x000a,\n\t0x1b06: 0x000a, 0x1b07: 0x000a, 0x1b08: 0x000a, 0x1b09: 0x000a, 0x1b0a: 0x000a, 0x1b0b: 0x000a,\n\t0x1b0c: 0x000a, 0x1b0d: 0x000a, 0x1b0e: 0x000a, 0x1b0f: 0x000a, 0x1b10: 0x000a, 0x1b11: 0x000a,\n\t0x1b12: 0x000a, 0x1b13: 0x000a, 0x1b14: 0x000a, 0x1b15: 0x000a, 0x1b16: 0x000a, 0x1b17: 0x000a,\n\t0x1b18: 0x000a, 0x1b19: 0x000a, 0x1b1a: 0x000a, 0x1b1b: 0x000a, 0x1b1c: 0x000a, 0x1b1d: 0x000a,\n\t0x1b1e: 0x000a, 0x1b1f: 0x000a, 0x1b20: 0x000a, 0x1b21: 0x000a, 0x1b22: 0x000a, 0x1b23: 0x000a,\n\t0x1b24: 0x000a, 0x1b25: 0x000a, 0x1b26: 0x000a, 0x1b27: 0x000a, 0x1b28: 0x000a, 0x1b29: 0x000a,\n\t0x1b2a: 0x000a, 0x1b2b: 0x000a, 0x1b2c: 0x000a, 0x1b2d: 0x000a, 0x1b2e: 0x000a, 0x1b2f: 0x000a,\n\t0x1b30: 0x000a, 0x1b31: 0x000a, 0x1b32: 0x000a, 0x1b33: 0x000a,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a,\n\t0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a,\n\t0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a,\n\t0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a,\n\t0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a, 0x1b74: 0x000a, 0x1b75: 0x000a,\n\t0x1b76: 0x000a, 0x1b77: 0x000a, 0x1b78: 0x000a, 0x1b79: 0x000a, 0x1b7a: 0x000a, 0x1b7b: 0x000a,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x0009, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a,\n\t0x1b88: 0x003a, 0x1b89: 0x002a, 0x1b8a: 0x003a, 0x1b8b: 0x002a,\n\t0x1b8c: 0x003a, 0x1b8d: 0x002a, 0x1b8e: 0x003a, 0x1b8f: 0x002a, 0x1b90: 0x003a, 0x1b91: 0x002a,\n\t0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x003a, 0x1b95: 0x002a, 0x1b96: 0x003a, 0x1b97: 0x002a,\n\t0x1b98: 0x003a, 0x1b99: 0x002a, 0x1b9a: 0x003a, 0x1b9b: 0x002a, 0x1b9c: 0x000a, 0x1b9d: 0x000a,\n\t0x1b9e: 0x000a, 0x1b9f: 0x000a, 0x1ba0: 0x000a,\n\t0x1baa: 0x000c, 0x1bab: 0x000c, 0x1bac: 0x000c, 0x1bad: 0x000c,\n\t0x1bb0: 0x000a,\n\t0x1bb6: 0x000a, 0x1bb7: 0x000a,\n\t0x1bbd: 0x000a, 0x1bbe: 0x000a, 0x1bbf: 0x000a,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bd9: 0x000c, 0x1bda: 0x000c, 0x1bdb: 0x000a, 0x1bdc: 0x000a,\n\t0x1be0: 0x000a,\n\t// Block 0x70, offset 0x1c00\n\t0x1c3b: 0x000a,\n\t// Block 0x71, offset 0x1c40\n\t0x1c40: 0x000a, 0x1c41: 0x000a, 0x1c42: 0x000a, 0x1c43: 0x000a, 0x1c44: 0x000a, 0x1c45: 0x000a,\n\t0x1c46: 0x000a, 0x1c47: 0x000a, 0x1c48: 0x000a, 0x1c49: 0x000a, 0x1c4a: 0x000a, 0x1c4b: 0x000a,\n\t0x1c4c: 0x000a, 0x1c4d: 0x000a, 0x1c4e: 0x000a, 0x1c4f: 0x000a, 0x1c50: 0x000a, 0x1c51: 0x000a,\n\t0x1c52: 0x000a, 0x1c53: 0x000a, 0x1c54: 0x000a, 0x1c55: 0x000a, 0x1c56: 0x000a, 0x1c57: 0x000a,\n\t0x1c58: 0x000a, 0x1c59: 0x000a, 0x1c5a: 0x000a, 0x1c5b: 0x000a, 0x1c5c: 0x000a, 0x1c5d: 0x000a,\n\t0x1c5e: 0x000a, 0x1c5f: 0x000a, 0x1c60: 0x000a, 0x1c61: 0x000a, 0x1c62: 0x000a, 0x1c63: 0x000a,\n\t// Block 0x72, offset 0x1c80\n\t0x1c9d: 0x000a,\n\t0x1c9e: 0x000a,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cd0: 0x000a, 0x1cd1: 0x000a,\n\t0x1cd2: 0x000a, 0x1cd3: 0x000a, 0x1cd4: 0x000a, 0x1cd5: 0x000a, 0x1cd6: 0x000a, 0x1cd7: 0x000a,\n\t0x1cd8: 0x000a, 0x1cd9: 0x000a, 0x1cda: 0x000a, 0x1cdb: 0x000a, 0x1cdc: 0x000a, 0x1cdd: 0x000a,\n\t0x1cde: 0x000a, 0x1cdf: 0x000a,\n\t0x1cfc: 0x000a, 0x1cfd: 0x000a, 0x1cfe: 0x000a,\n\t// Block 0x74, offset 0x1d00\n\t0x1d31: 0x000a, 0x1d32: 0x000a, 0x1d33: 0x000a, 0x1d34: 0x000a, 0x1d35: 0x000a,\n\t0x1d36: 0x000a, 0x1d37: 0x000a, 0x1d38: 0x000a, 0x1d39: 0x000a, 0x1d3a: 0x000a, 0x1d3b: 0x000a,\n\t0x1d3c: 0x000a, 0x1d3d: 0x000a, 0x1d3e: 0x000a, 0x1d3f: 0x000a,\n\t// Block 0x75, offset 0x1d40\n\t0x1d4c: 0x000a, 0x1d4d: 0x000a, 0x1d4e: 0x000a, 0x1d4f: 0x000a,\n\t// Block 0x76, offset 0x1d80\n\t0x1db7: 0x000a, 0x1db8: 0x000a, 0x1db9: 0x000a, 0x1dba: 0x000a,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dde: 0x000a, 0x1ddf: 0x000a,\n\t0x1dff: 0x000a,\n\t// Block 0x78, offset 0x1e00\n\t0x1e10: 0x000a, 0x1e11: 0x000a,\n\t0x1e12: 0x000a, 0x1e13: 0x000a, 0x1e14: 0x000a, 0x1e15: 0x000a, 0x1e16: 0x000a, 0x1e17: 0x000a,\n\t0x1e18: 0x000a, 0x1e19: 0x000a, 0x1e1a: 0x000a, 0x1e1b: 0x000a, 0x1e1c: 0x000a, 0x1e1d: 0x000a,\n\t0x1e1e: 0x000a, 0x1e1f: 0x000a, 0x1e20: 0x000a, 0x1e21: 0x000a, 0x1e22: 0x000a, 0x1e23: 0x000a,\n\t0x1e24: 0x000a, 0x1e25: 0x000a, 0x1e26: 0x000a, 0x1e27: 0x000a, 0x1e28: 0x000a, 0x1e29: 0x000a,\n\t0x1e2a: 0x000a, 0x1e2b: 0x000a, 0x1e2c: 0x000a, 0x1e2d: 0x000a, 0x1e2e: 0x000a, 0x1e2f: 0x000a,\n\t0x1e30: 0x000a, 0x1e31: 0x000a, 0x1e32: 0x000a, 0x1e33: 0x000a, 0x1e34: 0x000a, 0x1e35: 0x000a,\n\t0x1e36: 0x000a, 0x1e37: 0x000a, 0x1e38: 0x000a, 0x1e39: 0x000a, 0x1e3a: 0x000a, 0x1e3b: 0x000a,\n\t0x1e3c: 0x000a, 0x1e3d: 0x000a, 0x1e3e: 0x000a, 0x1e3f: 0x000a,\n\t// Block 0x79, offset 0x1e40\n\t0x1e40: 0x000a, 0x1e41: 0x000a, 0x1e42: 0x000a, 0x1e43: 0x000a, 0x1e44: 0x000a, 0x1e45: 0x000a,\n\t0x1e46: 0x000a,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e8d: 0x000a, 0x1e8e: 0x000a, 0x1e8f: 0x000a,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1eef: 0x000c,\n\t0x1ef0: 0x000c, 0x1ef1: 0x000c, 0x1ef2: 0x000c, 0x1ef3: 0x000a, 0x1ef4: 0x000c, 0x1ef5: 0x000c,\n\t0x1ef6: 0x000c, 0x1ef7: 0x000c, 0x1ef8: 0x000c, 0x1ef9: 0x000c, 0x1efa: 0x000c, 0x1efb: 0x000c,\n\t0x1efc: 0x000c, 0x1efd: 0x000c, 0x1efe: 0x000a, 0x1eff: 0x000a,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f1e: 0x000c, 0x1f1f: 0x000c,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f70: 0x000c, 0x1f71: 0x000c,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f80: 0x000a, 0x1f81: 0x000a, 0x1f82: 0x000a, 0x1f83: 0x000a, 0x1f84: 0x000a, 0x1f85: 0x000a,\n\t0x1f86: 0x000a, 0x1f87: 0x000a, 0x1f88: 0x000a, 0x1f89: 0x000a, 0x1f8a: 0x000a, 0x1f8b: 0x000a,\n\t0x1f8c: 0x000a, 0x1f8d: 0x000a, 0x1f8e: 0x000a, 0x1f8f: 0x000a, 0x1f90: 0x000a, 0x1f91: 0x000a,\n\t0x1f92: 0x000a, 0x1f93: 0x000a, 0x1f94: 0x000a, 0x1f95: 0x000a, 0x1f96: 0x000a, 0x1f97: 0x000a,\n\t0x1f98: 0x000a, 0x1f99: 0x000a, 0x1f9a: 0x000a, 0x1f9b: 0x000a, 0x1f9c: 0x000a, 0x1f9d: 0x000a,\n\t0x1f9e: 0x000a, 0x1f9f: 0x000a, 0x1fa0: 0x000a, 0x1fa1: 0x000a,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1fc8: 0x000a,\n\t// Block 0x80, offset 0x2000\n\t0x2002: 0x000c,\n\t0x2006: 0x000c, 0x200b: 0x000c,\n\t0x2025: 0x000c, 0x2026: 0x000c, 0x2028: 0x000a, 0x2029: 0x000a,\n\t0x202a: 0x000a, 0x202b: 0x000a,\n\t0x2038: 0x0004, 0x2039: 0x0004,\n\t// Block 0x81, offset 0x2040\n\t0x2074: 0x000a, 0x2075: 0x000a,\n\t0x2076: 0x000a, 0x2077: 0x000a,\n\t// Block 0x82, offset 0x2080\n\t0x2084: 0x000c, 0x2085: 0x000c,\n\t0x20a0: 0x000c, 0x20a1: 0x000c, 0x20a2: 0x000c, 0x20a3: 0x000c,\n\t0x20a4: 0x000c, 0x20a5: 0x000c, 0x20a6: 0x000c, 0x20a7: 0x000c, 0x20a8: 0x000c, 0x20a9: 0x000c,\n\t0x20aa: 0x000c, 0x20ab: 0x000c, 0x20ac: 0x000c, 0x20ad: 0x000c, 0x20ae: 0x000c, 0x20af: 0x000c,\n\t0x20b0: 0x000c, 0x20b1: 0x000c,\n\t0x20bf: 0x000c,\n\t// Block 0x83, offset 0x20c0\n\t0x20e6: 0x000c, 0x20e7: 0x000c, 0x20e8: 0x000c, 0x20e9: 0x000c,\n\t0x20ea: 0x000c, 0x20eb: 0x000c, 0x20ec: 0x000c, 0x20ed: 0x000c,\n\t// Block 0x84, offset 0x2100\n\t0x2107: 0x000c, 0x2108: 0x000c, 0x2109: 0x000c, 0x210a: 0x000c, 0x210b: 0x000c,\n\t0x210c: 0x000c, 0x210d: 0x000c, 0x210e: 0x000c, 0x210f: 0x000c, 0x2110: 0x000c, 0x2111: 0x000c,\n\t// Block 0x85, offset 0x2140\n\t0x2140: 0x000c, 0x2141: 0x000c, 0x2142: 0x000c,\n\t0x2173: 0x000c,\n\t0x2176: 0x000c, 0x2177: 0x000c, 0x2178: 0x000c, 0x2179: 0x000c,\n\t0x217c: 0x000c, 0x217d: 0x000c,\n\t// Block 0x86, offset 0x2180\n\t0x21a5: 0x000c,\n\t// Block 0x87, offset 0x21c0\n\t0x21e9: 0x000c,\n\t0x21ea: 0x000c, 0x21eb: 0x000c, 0x21ec: 0x000c, 0x21ed: 0x000c, 0x21ee: 0x000c,\n\t0x21f1: 0x000c, 0x21f2: 0x000c, 0x21f5: 0x000c,\n\t0x21f6: 0x000c,\n\t// Block 0x88, offset 0x2200\n\t0x2203: 0x000c,\n\t0x220c: 0x000c,\n\t0x223c: 0x000c,\n\t// Block 0x89, offset 0x2240\n\t0x2270: 0x000c, 0x2272: 0x000c, 0x2273: 0x000c, 0x2274: 0x000c,\n\t0x2277: 0x000c, 0x2278: 0x000c,\n\t0x227e: 0x000c, 0x227f: 0x000c,\n\t// Block 0x8a, offset 0x2280\n\t0x2281: 0x000c,\n\t0x22ac: 0x000c, 0x22ad: 0x000c,\n\t0x22b6: 0x000c,\n\t// Block 0x8b, offset 0x22c0\n\t0x22e5: 0x000c, 0x22e8: 0x000c,\n\t0x22ed: 0x000c,\n\t// Block 0x8c, offset 0x2300\n\t0x231d: 0x0001,\n\t0x231e: 0x000c, 0x231f: 0x0001, 0x2320: 0x0001, 0x2321: 0x0001, 0x2322: 0x0001, 0x2323: 0x0001,\n\t0x2324: 0x0001, 0x2325: 0x0001, 0x2326: 0x0001, 0x2327: 0x0001, 0x2328: 0x0001, 0x2329: 0x0003,\n\t0x232a: 0x0001, 0x232b: 0x0001, 0x232c: 0x0001, 0x232d: 0x0001, 0x232e: 0x0001, 0x232f: 0x0001,\n\t0x2330: 0x0001, 0x2331: 0x0001, 0x2332: 0x0001, 0x2333: 0x0001, 0x2334: 0x0001, 0x2335: 0x0001,\n\t0x2336: 0x0001, 0x2337: 0x0001, 0x2338: 0x0001, 0x2339: 0x0001, 0x233a: 0x0001, 0x233b: 0x0001,\n\t0x233c: 0x0001, 0x233d: 0x0001, 0x233e: 0x0001, 0x233f: 0x0001,\n\t// Block 0x8d, offset 0x2340\n\t0x2340: 0x0001, 0x2341: 0x0001, 0x2342: 0x0001, 0x2343: 0x0001, 0x2344: 0x0001, 0x2345: 0x0001,\n\t0x2346: 0x0001, 0x2347: 0x0001, 0x2348: 0x0001, 0x2349: 0x0001, 0x234a: 0x0001, 0x234b: 0x0001,\n\t0x234c: 0x0001, 0x234d: 0x0001, 0x234e: 0x0001, 0x234f: 0x0001, 0x2350: 0x000d, 0x2351: 0x000d,\n\t0x2352: 0x000d, 0x2353: 0x000d, 0x2354: 0x000d, 0x2355: 0x000d, 0x2356: 0x000d, 0x2357: 0x000d,\n\t0x2358: 0x000d, 0x2359: 0x000d, 0x235a: 0x000d, 0x235b: 0x000d, 0x235c: 0x000d, 0x235d: 0x000d,\n\t0x235e: 0x000d, 0x235f: 0x000d, 0x2360: 0x000d, 0x2361: 0x000d, 0x2362: 0x000d, 0x2363: 0x000d,\n\t0x2364: 0x000d, 0x2365: 0x000d, 0x2366: 0x000d, 0x2367: 0x000d, 0x2368: 0x000d, 0x2369: 0x000d,\n\t0x236a: 0x000d, 0x236b: 0x000d, 0x236c: 0x000d, 0x236d: 0x000d, 0x236e: 0x000d, 0x236f: 0x000d,\n\t0x2370: 0x000d, 0x2371: 0x000d, 0x2372: 0x000d, 0x2373: 0x000d, 0x2374: 0x000d, 0x2375: 0x000d,\n\t0x2376: 0x000d, 0x2377: 0x000d, 0x2378: 0x000d, 0x2379: 0x000d, 0x237a: 0x000d, 0x237b: 0x000d,\n\t0x237c: 0x000d, 0x237d: 0x000d, 0x237e: 0x000d, 0x237f: 0x000d,\n\t// Block 0x8e, offset 0x2380\n\t0x2380: 0x000d, 0x2381: 0x000d, 0x2382: 0x000d, 0x2383: 0x000d, 0x2384: 0x000d, 0x2385: 0x000d,\n\t0x2386: 0x000d, 0x2387: 0x000d, 0x2388: 0x000d, 0x2389: 0x000d, 0x238a: 0x000d, 0x238b: 0x000d,\n\t0x238c: 0x000d, 0x238d: 0x000d, 0x238e: 0x000d, 0x238f: 0x000d, 0x2390: 0x000d, 0x2391: 0x000d,\n\t0x2392: 0x000d, 0x2393: 0x000d, 0x2394: 0x000d, 0x2395: 0x000d, 0x2396: 0x000d, 0x2397: 0x000d,\n\t0x2398: 0x000d, 0x2399: 0x000d, 0x239a: 0x000d, 0x239b: 0x000d, 0x239c: 0x000d, 0x239d: 0x000d,\n\t0x239e: 0x000d, 0x239f: 0x000d, 0x23a0: 0x000d, 0x23a1: 0x000d, 0x23a2: 0x000d, 0x23a3: 0x000d,\n\t0x23a4: 0x000d, 0x23a5: 0x000d, 0x23a6: 0x000d, 0x23a7: 0x000d, 0x23a8: 0x000d, 0x23a9: 0x000d,\n\t0x23aa: 0x000d, 0x23ab: 0x000d, 0x23ac: 0x000d, 0x23ad: 0x000d, 0x23ae: 0x000d, 0x23af: 0x000d,\n\t0x23b0: 0x000d, 0x23b1: 0x000d, 0x23b2: 0x000d, 0x23b3: 0x000d, 0x23b4: 0x000d, 0x23b5: 0x000d,\n\t0x23b6: 0x000d, 0x23b7: 0x000d, 0x23b8: 0x000d, 0x23b9: 0x000d, 0x23ba: 0x000d, 0x23bb: 0x000d,\n\t0x23bc: 0x000d, 0x23bd: 0x000d, 0x23be: 0x000a, 0x23bf: 0x000a,\n\t// Block 0x8f, offset 0x23c0\n\t0x23c0: 0x000d, 0x23c1: 0x000d, 0x23c2: 0x000d, 0x23c3: 0x000d, 0x23c4: 0x000d, 0x23c5: 0x000d,\n\t0x23c6: 0x000d, 0x23c7: 0x000d, 0x23c8: 0x000d, 0x23c9: 0x000d, 0x23ca: 0x000d, 0x23cb: 0x000d,\n\t0x23cc: 0x000d, 0x23cd: 0x000d, 0x23ce: 0x000d, 0x23cf: 0x000d, 0x23d0: 0x000b, 0x23d1: 0x000b,\n\t0x23d2: 0x000b, 0x23d3: 0x000b, 0x23d4: 0x000b, 0x23d5: 0x000b, 0x23d6: 0x000b, 0x23d7: 0x000b,\n\t0x23d8: 0x000b, 0x23d9: 0x000b, 0x23da: 0x000b, 0x23db: 0x000b, 0x23dc: 0x000b, 0x23dd: 0x000b,\n\t0x23de: 0x000b, 0x23df: 0x000b, 0x23e0: 0x000b, 0x23e1: 0x000b, 0x23e2: 0x000b, 0x23e3: 0x000b,\n\t0x23e4: 0x000b, 0x23e5: 0x000b, 0x23e6: 0x000b, 0x23e7: 0x000b, 0x23e8: 0x000b, 0x23e9: 0x000b,\n\t0x23ea: 0x000b, 0x23eb: 0x000b, 0x23ec: 0x000b, 0x23ed: 0x000b, 0x23ee: 0x000b, 0x23ef: 0x000b,\n\t0x23f0: 0x000d, 0x23f1: 0x000d, 0x23f2: 0x000d, 0x23f3: 0x000d, 0x23f4: 0x000d, 0x23f5: 0x000d,\n\t0x23f6: 0x000d, 0x23f7: 0x000d, 0x23f8: 0x000d, 0x23f9: 0x000d, 0x23fa: 0x000d, 0x23fb: 0x000d,\n\t0x23fc: 0x000d, 0x23fd: 0x000a, 0x23fe: 0x000d, 0x23ff: 0x000d,\n\t// Block 0x90, offset 0x2400\n\t0x2400: 0x000c, 0x2401: 0x000c, 0x2402: 0x000c, 0x2403: 0x000c, 0x2404: 0x000c, 0x2405: 0x000c,\n\t0x2406: 0x000c, 0x2407: 0x000c, 0x2408: 0x000c, 0x2409: 0x000c, 0x240a: 0x000c, 0x240b: 0x000c,\n\t0x240c: 0x000c, 0x240d: 0x000c, 0x240e: 0x000c, 0x240f: 0x000c, 0x2410: 0x000a, 0x2411: 0x000a,\n\t0x2412: 0x000a, 0x2413: 0x000a, 0x2414: 0x000a, 0x2415: 0x000a, 0x2416: 0x000a, 0x2417: 0x000a,\n\t0x2418: 0x000a, 0x2419: 0x000a,\n\t0x2420: 0x000c, 0x2421: 0x000c, 0x2422: 0x000c, 0x2423: 0x000c,\n\t0x2424: 0x000c, 0x2425: 0x000c, 0x2426: 0x000c, 0x2427: 0x000c, 0x2428: 0x000c, 0x2429: 0x000c,\n\t0x242a: 0x000c, 0x242b: 0x000c, 0x242c: 0x000c, 0x242d: 0x000c, 0x242e: 0x000c, 0x242f: 0x000c,\n\t0x2430: 0x000a, 0x2431: 0x000a, 0x2432: 0x000a, 0x2433: 0x000a, 0x2434: 0x000a, 0x2435: 0x000a,\n\t0x2436: 0x000a, 0x2437: 0x000a, 0x2438: 0x000a, 0x2439: 0x000a, 0x243a: 0x000a, 0x243b: 0x000a,\n\t0x243c: 0x000a, 0x243d: 0x000a, 0x243e: 0x000a, 0x243f: 0x000a,\n\t// Block 0x91, offset 0x2440\n\t0x2440: 0x000a, 0x2441: 0x000a, 0x2442: 0x000a, 0x2443: 0x000a, 0x2444: 0x000a, 0x2445: 0x000a,\n\t0x2446: 0x000a, 0x2447: 0x000a, 0x2448: 0x000a, 0x2449: 0x000a, 0x244a: 0x000a, 0x244b: 0x000a,\n\t0x244c: 0x000a, 0x244d: 0x000a, 0x244e: 0x000a, 0x244f: 0x000a, 0x2450: 0x0006, 0x2451: 0x000a,\n\t0x2452: 0x0006, 0x2454: 0x000a, 0x2455: 0x0006, 0x2456: 0x000a, 0x2457: 0x000a,\n\t0x2458: 0x000a, 0x2459: 0x009a, 0x245a: 0x008a, 0x245b: 0x007a, 0x245c: 0x006a, 0x245d: 0x009a,\n\t0x245e: 0x008a, 0x245f: 0x0004, 0x2460: 0x000a, 0x2461: 0x000a, 0x2462: 0x0003, 0x2463: 0x0003,\n\t0x2464: 0x000a, 0x2465: 0x000a, 0x2466: 0x000a, 0x2468: 0x000a, 0x2469: 0x0004,\n\t0x246a: 0x0004, 0x246b: 0x000a,\n\t0x2470: 0x000d, 0x2471: 0x000d, 0x2472: 0x000d, 0x2473: 0x000d, 0x2474: 0x000d, 0x2475: 0x000d,\n\t0x2476: 0x000d, 0x2477: 0x000d, 0x2478: 0x000d, 0x2479: 0x000d, 0x247a: 0x000d, 0x247b: 0x000d,\n\t0x247c: 0x000d, 0x247d: 0x000d, 0x247e: 0x000d, 0x247f: 0x000d,\n\t// Block 0x92, offset 0x2480\n\t0x2480: 0x000d, 0x2481: 0x000d, 0x2482: 0x000d, 0x2483: 0x000d, 0x2484: 0x000d, 0x2485: 0x000d,\n\t0x2486: 0x000d, 0x2487: 0x000d, 0x2488: 0x000d, 0x2489: 0x000d, 0x248a: 0x000d, 0x248b: 0x000d,\n\t0x248c: 0x000d, 0x248d: 0x000d, 0x248e: 0x000d, 0x248f: 0x000d, 0x2490: 0x000d, 0x2491: 0x000d,\n\t0x2492: 0x000d, 0x2493: 0x000d, 0x2494: 0x000d, 0x2495: 0x000d, 0x2496: 0x000d, 0x2497: 0x000d,\n\t0x2498: 0x000d, 0x2499: 0x000d, 0x249a: 0x000d, 0x249b: 0x000d, 0x249c: 0x000d, 0x249d: 0x000d,\n\t0x249e: 0x000d, 0x249f: 0x000d, 0x24a0: 0x000d, 0x24a1: 0x000d, 0x24a2: 0x000d, 0x24a3: 0x000d,\n\t0x24a4: 0x000d, 0x24a5: 0x000d, 0x24a6: 0x000d, 0x24a7: 0x000d, 0x24a8: 0x000d, 0x24a9: 0x000d,\n\t0x24aa: 0x000d, 0x24ab: 0x000d, 0x24ac: 0x000d, 0x24ad: 0x000d, 0x24ae: 0x000d, 0x24af: 0x000d,\n\t0x24b0: 0x000d, 0x24b1: 0x000d, 0x24b2: 0x000d, 0x24b3: 0x000d, 0x24b4: 0x000d, 0x24b5: 0x000d,\n\t0x24b6: 0x000d, 0x24b7: 0x000d, 0x24b8: 0x000d, 0x24b9: 0x000d, 0x24ba: 0x000d, 0x24bb: 0x000d,\n\t0x24bc: 0x000d, 0x24bd: 0x000d, 0x24be: 0x000d, 0x24bf: 0x000b,\n\t// Block 0x93, offset 0x24c0\n\t0x24c1: 0x000a, 0x24c2: 0x000a, 0x24c3: 0x0004, 0x24c4: 0x0004, 0x24c5: 0x0004,\n\t0x24c6: 0x000a, 0x24c7: 0x000a, 0x24c8: 0x003a, 0x24c9: 0x002a, 0x24ca: 0x000a, 0x24cb: 0x0003,\n\t0x24cc: 0x0006, 0x24cd: 0x0003, 0x24ce: 0x0006, 0x24cf: 0x0006, 0x24d0: 0x0002, 0x24d1: 0x0002,\n\t0x24d2: 0x0002, 0x24d3: 0x0002, 0x24d4: 0x0002, 0x24d5: 0x0002, 0x24d6: 0x0002, 0x24d7: 0x0002,\n\t0x24d8: 0x0002, 0x24d9: 0x0002, 0x24da: 0x0006, 0x24db: 0x000a, 0x24dc: 0x000a, 0x24dd: 0x000a,\n\t0x24de: 0x000a, 0x24df: 0x000a, 0x24e0: 0x000a,\n\t0x24fb: 0x005a,\n\t0x24fc: 0x000a, 0x24fd: 0x004a, 0x24fe: 0x000a, 0x24ff: 0x000a,\n\t// Block 0x94, offset 0x2500\n\t0x2500: 0x000a,\n\t0x251b: 0x005a, 0x251c: 0x000a, 0x251d: 0x004a,\n\t0x251e: 0x000a, 0x251f: 0x00fa, 0x2520: 0x00ea, 0x2521: 0x000a, 0x2522: 0x003a, 0x2523: 0x002a,\n\t0x2524: 0x000a, 0x2525: 0x000a,\n\t// Block 0x95, offset 0x2540\n\t0x2560: 0x0004, 0x2561: 0x0004, 0x2562: 0x000a, 0x2563: 0x000a,\n\t0x2564: 0x000a, 0x2565: 0x0004, 0x2566: 0x0004, 0x2568: 0x000a, 0x2569: 0x000a,\n\t0x256a: 0x000a, 0x256b: 0x000a, 0x256c: 0x000a, 0x256d: 0x000a, 0x256e: 0x000a,\n\t0x2570: 0x000b, 0x2571: 0x000b, 0x2572: 0x000b, 0x2573: 0x000b, 0x2574: 0x000b, 0x2575: 0x000b,\n\t0x2576: 0x000b, 0x2577: 0x000b, 0x2578: 0x000b, 0x2579: 0x000a, 0x257a: 0x000a, 0x257b: 0x000a,\n\t0x257c: 0x000a, 0x257d: 0x000a, 0x257e: 0x000b, 0x257f: 0x000b,\n\t// Block 0x96, offset 0x2580\n\t0x2581: 0x000a,\n\t// Block 0x97, offset 0x25c0\n\t0x25c0: 0x000a, 0x25c1: 0x000a, 0x25c2: 0x000a, 0x25c3: 0x000a, 0x25c4: 0x000a, 0x25c5: 0x000a,\n\t0x25c6: 0x000a, 0x25c7: 0x000a, 0x25c8: 0x000a, 0x25c9: 0x000a, 0x25ca: 0x000a, 0x25cb: 0x000a,\n\t0x25cc: 0x000a, 0x25d0: 0x000a, 0x25d1: 0x000a,\n\t0x25d2: 0x000a, 0x25d3: 0x000a, 0x25d4: 0x000a, 0x25d5: 0x000a, 0x25d6: 0x000a, 0x25d7: 0x000a,\n\t0x25d8: 0x000a, 0x25d9: 0x000a, 0x25da: 0x000a, 0x25db: 0x000a,\n\t0x25e0: 0x000a,\n\t// Block 0x98, offset 0x2600\n\t0x263d: 0x000c,\n\t// Block 0x99, offset 0x2640\n\t0x2660: 0x000c, 0x2661: 0x0002, 0x2662: 0x0002, 0x2663: 0x0002,\n\t0x2664: 0x0002, 0x2665: 0x0002, 0x2666: 0x0002, 0x2667: 0x0002, 0x2668: 0x0002, 0x2669: 0x0002,\n\t0x266a: 0x0002, 0x266b: 0x0002, 0x266c: 0x0002, 0x266d: 0x0002, 0x266e: 0x0002, 0x266f: 0x0002,\n\t0x2670: 0x0002, 0x2671: 0x0002, 0x2672: 0x0002, 0x2673: 0x0002, 0x2674: 0x0002, 0x2675: 0x0002,\n\t0x2676: 0x0002, 0x2677: 0x0002, 0x2678: 0x0002, 0x2679: 0x0002, 0x267a: 0x0002, 0x267b: 0x0002,\n\t// Block 0x9a, offset 0x2680\n\t0x26b6: 0x000c, 0x26b7: 0x000c, 0x26b8: 0x000c, 0x26b9: 0x000c, 0x26ba: 0x000c,\n\t// Block 0x9b, offset 0x26c0\n\t0x26c0: 0x0001, 0x26c1: 0x0001, 0x26c2: 0x0001, 0x26c3: 0x0001, 0x26c4: 0x0001, 0x26c5: 0x0001,\n\t0x26c6: 0x0001, 0x26c7: 0x0001, 0x26c8: 0x0001, 0x26c9: 0x0001, 0x26ca: 0x0001, 0x26cb: 0x0001,\n\t0x26cc: 0x0001, 0x26cd: 0x0001, 0x26ce: 0x0001, 0x26cf: 0x0001, 0x26d0: 0x0001, 0x26d1: 0x0001,\n\t0x26d2: 0x0001, 0x26d3: 0x0001, 0x26d4: 0x0001, 0x26d5: 0x0001, 0x26d6: 0x0001, 0x26d7: 0x0001,\n\t0x26d8: 0x0001, 0x26d9: 0x0001, 0x26da: 0x0001, 0x26db: 0x0001, 0x26dc: 0x0001, 0x26dd: 0x0001,\n\t0x26de: 0x0001, 0x26df: 0x0001, 0x26e0: 0x0001, 0x26e1: 0x0001, 0x26e2: 0x0001, 0x26e3: 0x0001,\n\t0x26e4: 0x0001, 0x26e5: 0x0001, 0x26e6: 0x0001, 0x26e7: 0x0001, 0x26e8: 0x0001, 0x26e9: 0x0001,\n\t0x26ea: 0x0001, 0x26eb: 0x0001, 0x26ec: 0x0001, 0x26ed: 0x0001, 0x26ee: 0x0001, 0x26ef: 0x0001,\n\t0x26f0: 0x0001, 0x26f1: 0x0001, 0x26f2: 0x0001, 0x26f3: 0x0001, 0x26f4: 0x0001, 0x26f5: 0x0001,\n\t0x26f6: 0x0001, 0x26f7: 0x0001, 0x26f8: 0x0001, 0x26f9: 0x0001, 0x26fa: 0x0001, 0x26fb: 0x0001,\n\t0x26fc: 0x0001, 0x26fd: 0x0001, 0x26fe: 0x0001, 0x26ff: 0x0001,\n\t// Block 0x9c, offset 0x2700\n\t0x2700: 0x0001, 0x2701: 0x0001, 0x2702: 0x0001, 0x2703: 0x0001, 0x2704: 0x0001, 0x2705: 0x0001,\n\t0x2706: 0x0001, 0x2707: 0x0001, 0x2708: 0x0001, 0x2709: 0x0001, 0x270a: 0x0001, 0x270b: 0x0001,\n\t0x270c: 0x0001, 0x270d: 0x0001, 0x270e: 0x0001, 0x270f: 0x0001, 0x2710: 0x0001, 0x2711: 0x0001,\n\t0x2712: 0x0001, 0x2713: 0x0001, 0x2714: 0x0001, 0x2715: 0x0001, 0x2716: 0x0001, 0x2717: 0x0001,\n\t0x2718: 0x0001, 0x2719: 0x0001, 0x271a: 0x0001, 0x271b: 0x0001, 0x271c: 0x0001, 0x271d: 0x0001,\n\t0x271e: 0x0001, 0x271f: 0x000a, 0x2720: 0x0001, 0x2721: 0x0001, 0x2722: 0x0001, 0x2723: 0x0001,\n\t0x2724: 0x0001, 0x2725: 0x0001, 0x2726: 0x0001, 0x2727: 0x0001, 0x2728: 0x0001, 0x2729: 0x0001,\n\t0x272a: 0x0001, 0x272b: 0x0001, 0x272c: 0x0001, 0x272d: 0x0001, 0x272e: 0x0001, 0x272f: 0x0001,\n\t0x2730: 0x0001, 0x2731: 0x0001, 0x2732: 0x0001, 0x2733: 0x0001, 0x2734: 0x0001, 0x2735: 0x0001,\n\t0x2736: 0x0001, 0x2737: 0x0001, 0x2738: 0x0001, 0x2739: 0x0001, 0x273a: 0x0001, 0x273b: 0x0001,\n\t0x273c: 0x0001, 0x273d: 0x0001, 0x273e: 0x0001, 0x273f: 0x0001,\n\t// Block 0x9d, offset 0x2740\n\t0x2740: 0x0001, 0x2741: 0x000c, 0x2742: 0x000c, 0x2743: 0x000c, 0x2744: 0x0001, 0x2745: 0x000c,\n\t0x2746: 0x000c, 0x2747: 0x0001, 0x2748: 0x0001, 0x2749: 0x0001, 0x274a: 0x0001, 0x274b: 0x0001,\n\t0x274c: 0x000c, 0x274d: 0x000c, 0x274e: 0x000c, 0x274f: 0x000c, 0x2750: 0x0001, 0x2751: 0x0001,\n\t0x2752: 0x0001, 0x2753: 0x0001, 0x2754: 0x0001, 0x2755: 0x0001, 0x2756: 0x0001, 0x2757: 0x0001,\n\t0x2758: 0x0001, 0x2759: 0x0001, 0x275a: 0x0001, 0x275b: 0x0001, 0x275c: 0x0001, 0x275d: 0x0001,\n\t0x275e: 0x0001, 0x275f: 0x0001, 0x2760: 0x0001, 0x2761: 0x0001, 0x2762: 0x0001, 0x2763: 0x0001,\n\t0x2764: 0x0001, 0x2765: 0x0001, 0x2766: 0x0001, 0x2767: 0x0001, 0x2768: 0x0001, 0x2769: 0x0001,\n\t0x276a: 0x0001, 0x276b: 0x0001, 0x276c: 0x0001, 0x276d: 0x0001, 0x276e: 0x0001, 0x276f: 0x0001,\n\t0x2770: 0x0001, 0x2771: 0x0001, 0x2772: 0x0001, 0x2773: 0x0001, 0x2774: 0x0001, 0x2775: 0x0001,\n\t0x2776: 0x0001, 0x2777: 0x0001, 0x2778: 0x000c, 0x2779: 0x000c, 0x277a: 0x000c, 0x277b: 0x0001,\n\t0x277c: 0x0001, 0x277d: 0x0001, 0x277e: 0x0001, 0x277f: 0x000c,\n\t// Block 0x9e, offset 0x2780\n\t0x2780: 0x0001, 0x2781: 0x0001, 0x2782: 0x0001, 0x2783: 0x0001, 0x2784: 0x0001, 0x2785: 0x0001,\n\t0x2786: 0x0001, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001,\n\t0x278c: 0x0001, 0x278d: 0x0001, 0x278e: 0x0001, 0x278f: 0x0001, 0x2790: 0x0001, 0x2791: 0x0001,\n\t0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001,\n\t0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001,\n\t0x279e: 0x0001, 0x279f: 0x0001, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001,\n\t0x27a4: 0x0001, 0x27a5: 0x000c, 0x27a6: 0x000c, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001,\n\t0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001,\n\t0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001,\n\t0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x0001, 0x27b9: 0x0001, 0x27ba: 0x0001, 0x27bb: 0x0001,\n\t0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x0001,\n\t// Block 0x9f, offset 0x27c0\n\t0x27c0: 0x0001, 0x27c1: 0x0001, 0x27c2: 0x0001, 0x27c3: 0x0001, 0x27c4: 0x0001, 0x27c5: 0x0001,\n\t0x27c6: 0x0001, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001,\n\t0x27cc: 0x0001, 0x27cd: 0x0001, 0x27ce: 0x0001, 0x27cf: 0x0001, 0x27d0: 0x0001, 0x27d1: 0x0001,\n\t0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001,\n\t0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001,\n\t0x27de: 0x0001, 0x27df: 0x0001, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001,\n\t0x27e4: 0x0001, 0x27e5: 0x0001, 0x27e6: 0x0001, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001,\n\t0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001,\n\t0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001,\n\t0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x0001, 0x27f9: 0x000a, 0x27fa: 0x000a, 0x27fb: 0x000a,\n\t0x27fc: 0x000a, 0x27fd: 0x000a, 0x27fe: 0x000a, 0x27ff: 0x000a,\n\t// Block 0xa0, offset 0x2800\n\t0x2800: 0x000d, 0x2801: 0x000d, 0x2802: 0x000d, 0x2803: 0x000d, 0x2804: 0x000d, 0x2805: 0x000d,\n\t0x2806: 0x000d, 0x2807: 0x000d, 0x2808: 0x000d, 0x2809: 0x000d, 0x280a: 0x000d, 0x280b: 0x000d,\n\t0x280c: 0x000d, 0x280d: 0x000d, 0x280e: 0x000d, 0x280f: 0x000d, 0x2810: 0x000d, 0x2811: 0x000d,\n\t0x2812: 0x000d, 0x2813: 0x000d, 0x2814: 0x000d, 0x2815: 0x000d, 0x2816: 0x000d, 0x2817: 0x000d,\n\t0x2818: 0x000d, 0x2819: 0x000d, 0x281a: 0x000d, 0x281b: 0x000d, 0x281c: 0x000d, 0x281d: 0x000d,\n\t0x281e: 0x000d, 0x281f: 0x000d, 0x2820: 0x000d, 0x2821: 0x000d, 0x2822: 0x000d, 0x2823: 0x000d,\n\t0x2824: 0x000c, 0x2825: 0x000c, 0x2826: 0x000c, 0x2827: 0x000c, 0x2828: 0x000d, 0x2829: 0x000d,\n\t0x282a: 0x000d, 0x282b: 0x000d, 0x282c: 0x000d, 0x282d: 0x000d, 0x282e: 0x000d, 0x282f: 0x000d,\n\t0x2830: 0x0005, 0x2831: 0x0005, 0x2832: 0x0005, 0x2833: 0x0005, 0x2834: 0x0005, 0x2835: 0x0005,\n\t0x2836: 0x0005, 0x2837: 0x0005, 0x2838: 0x0005, 0x2839: 0x0005, 0x283a: 0x000d, 0x283b: 0x000d,\n\t0x283c: 0x000d, 0x283d: 0x000d, 0x283e: 0x000d, 0x283f: 0x000d,\n\t// Block 0xa1, offset 0x2840\n\t0x2840: 0x0001, 0x2841: 0x0001, 0x2842: 0x0001, 0x2843: 0x0001, 0x2844: 0x0001, 0x2845: 0x0001,\n\t0x2846: 0x0001, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001,\n\t0x284c: 0x0001, 0x284d: 0x0001, 0x284e: 0x0001, 0x284f: 0x0001, 0x2850: 0x0001, 0x2851: 0x0001,\n\t0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001,\n\t0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001,\n\t0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0005, 0x2861: 0x0005, 0x2862: 0x0005, 0x2863: 0x0005,\n\t0x2864: 0x0005, 0x2865: 0x0005, 0x2866: 0x0005, 0x2867: 0x0005, 0x2868: 0x0005, 0x2869: 0x0005,\n\t0x286a: 0x0005, 0x286b: 0x0005, 0x286c: 0x0005, 0x286d: 0x0005, 0x286e: 0x0005, 0x286f: 0x0005,\n\t0x2870: 0x0005, 0x2871: 0x0005, 0x2872: 0x0005, 0x2873: 0x0005, 0x2874: 0x0005, 0x2875: 0x0005,\n\t0x2876: 0x0005, 0x2877: 0x0005, 0x2878: 0x0005, 0x2879: 0x0005, 0x287a: 0x0005, 0x287b: 0x0005,\n\t0x287c: 0x0005, 0x287d: 0x0005, 0x287e: 0x0005, 0x287f: 0x0001,\n\t// Block 0xa2, offset 0x2880\n\t0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001,\n\t0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001,\n\t0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001,\n\t0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001,\n\t0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001,\n\t0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0001, 0x28a1: 0x0001, 0x28a2: 0x0001, 0x28a3: 0x0001,\n\t0x28a4: 0x0001, 0x28a5: 0x0001, 0x28a6: 0x0001, 0x28a7: 0x0001, 0x28a8: 0x0001, 0x28a9: 0x0001,\n\t0x28aa: 0x0001, 0x28ab: 0x0001, 0x28ac: 0x0001, 0x28ad: 0x0001, 0x28ae: 0x0001, 0x28af: 0x0001,\n\t0x28b0: 0x000d, 0x28b1: 0x000d, 0x28b2: 0x000d, 0x28b3: 0x000d, 0x28b4: 0x000d, 0x28b5: 0x000d,\n\t0x28b6: 0x000d, 0x28b7: 0x000d, 0x28b8: 0x000d, 0x28b9: 0x000d, 0x28ba: 0x000d, 0x28bb: 0x000d,\n\t0x28bc: 0x000d, 0x28bd: 0x000d, 0x28be: 0x000d, 0x28bf: 0x000d,\n\t// Block 0xa3, offset 0x28c0\n\t0x28c0: 0x000d, 0x28c1: 0x000d, 0x28c2: 0x000d, 0x28c3: 0x000d, 0x28c4: 0x000d, 0x28c5: 0x000d,\n\t0x28c6: 0x000c, 0x28c7: 0x000c, 0x28c8: 0x000c, 0x28c9: 0x000c, 0x28ca: 0x000c, 0x28cb: 0x000c,\n\t0x28cc: 0x000c, 0x28cd: 0x000c, 0x28ce: 0x000c, 0x28cf: 0x000c, 0x28d0: 0x000c, 0x28d1: 0x000d,\n\t0x28d2: 0x000d, 0x28d3: 0x000d, 0x28d4: 0x000d, 0x28d5: 0x000d, 0x28d6: 0x000d, 0x28d7: 0x000d,\n\t0x28d8: 0x000d, 0x28d9: 0x000d, 0x28da: 0x000d, 0x28db: 0x000d, 0x28dc: 0x000d, 0x28dd: 0x000d,\n\t0x28de: 0x000d, 0x28df: 0x000d, 0x28e0: 0x000d, 0x28e1: 0x000d, 0x28e2: 0x000d, 0x28e3: 0x000d,\n\t0x28e4: 0x000d, 0x28e5: 0x000d, 0x28e6: 0x000d, 0x28e7: 0x000d, 0x28e8: 0x000d, 0x28e9: 0x000d,\n\t0x28ea: 0x000d, 0x28eb: 0x000d, 0x28ec: 0x000d, 0x28ed: 0x000d, 0x28ee: 0x000d, 0x28ef: 0x000d,\n\t0x28f0: 0x0001, 0x28f1: 0x0001, 0x28f2: 0x0001, 0x28f3: 0x0001, 0x28f4: 0x0001, 0x28f5: 0x0001,\n\t0x28f6: 0x0001, 0x28f7: 0x0001, 0x28f8: 0x0001, 0x28f9: 0x0001, 0x28fa: 0x0001, 0x28fb: 0x0001,\n\t0x28fc: 0x0001, 0x28fd: 0x0001, 0x28fe: 0x0001, 0x28ff: 0x0001,\n\t// Block 0xa4, offset 0x2900\n\t0x2901: 0x000c,\n\t0x2938: 0x000c, 0x2939: 0x000c, 0x293a: 0x000c, 0x293b: 0x000c,\n\t0x293c: 0x000c, 0x293d: 0x000c, 0x293e: 0x000c, 0x293f: 0x000c,\n\t// Block 0xa5, offset 0x2940\n\t0x2940: 0x000c, 0x2941: 0x000c, 0x2942: 0x000c, 0x2943: 0x000c, 0x2944: 0x000c, 0x2945: 0x000c,\n\t0x2946: 0x000c,\n\t0x2952: 0x000a, 0x2953: 0x000a, 0x2954: 0x000a, 0x2955: 0x000a, 0x2956: 0x000a, 0x2957: 0x000a,\n\t0x2958: 0x000a, 0x2959: 0x000a, 0x295a: 0x000a, 0x295b: 0x000a, 0x295c: 0x000a, 0x295d: 0x000a,\n\t0x295e: 0x000a, 0x295f: 0x000a, 0x2960: 0x000a, 0x2961: 0x000a, 0x2962: 0x000a, 0x2963: 0x000a,\n\t0x2964: 0x000a, 0x2965: 0x000a,\n\t0x297f: 0x000c,\n\t// Block 0xa6, offset 0x2980\n\t0x2980: 0x000c, 0x2981: 0x000c,\n\t0x29b3: 0x000c, 0x29b4: 0x000c, 0x29b5: 0x000c,\n\t0x29b6: 0x000c, 0x29b9: 0x000c, 0x29ba: 0x000c,\n\t// Block 0xa7, offset 0x29c0\n\t0x29c0: 0x000c, 0x29c1: 0x000c, 0x29c2: 0x000c,\n\t0x29e7: 0x000c, 0x29e8: 0x000c, 0x29e9: 0x000c,\n\t0x29ea: 0x000c, 0x29eb: 0x000c, 0x29ed: 0x000c, 0x29ee: 0x000c, 0x29ef: 0x000c,\n\t0x29f0: 0x000c, 0x29f1: 0x000c, 0x29f2: 0x000c, 0x29f3: 0x000c, 0x29f4: 0x000c,\n\t// Block 0xa8, offset 0x2a00\n\t0x2a33: 0x000c,\n\t// Block 0xa9, offset 0x2a40\n\t0x2a40: 0x000c, 0x2a41: 0x000c,\n\t0x2a76: 0x000c, 0x2a77: 0x000c, 0x2a78: 0x000c, 0x2a79: 0x000c, 0x2a7a: 0x000c, 0x2a7b: 0x000c,\n\t0x2a7c: 0x000c, 0x2a7d: 0x000c, 0x2a7e: 0x000c,\n\t// Block 0xaa, offset 0x2a80\n\t0x2a89: 0x000c, 0x2a8a: 0x000c, 0x2a8b: 0x000c,\n\t0x2a8c: 0x000c,\n\t// Block 0xab, offset 0x2ac0\n\t0x2aef: 0x000c,\n\t0x2af0: 0x000c, 0x2af1: 0x000c, 0x2af4: 0x000c,\n\t0x2af6: 0x000c, 0x2af7: 0x000c,\n\t0x2afe: 0x000c,\n\t// Block 0xac, offset 0x2b00\n\t0x2b1f: 0x000c, 0x2b23: 0x000c,\n\t0x2b24: 0x000c, 0x2b25: 0x000c, 0x2b26: 0x000c, 0x2b27: 0x000c, 0x2b28: 0x000c, 0x2b29: 0x000c,\n\t0x2b2a: 0x000c,\n\t// Block 0xad, offset 0x2b40\n\t0x2b40: 0x000c,\n\t0x2b66: 0x000c, 0x2b67: 0x000c, 0x2b68: 0x000c, 0x2b69: 0x000c,\n\t0x2b6a: 0x000c, 0x2b6b: 0x000c, 0x2b6c: 0x000c,\n\t0x2b70: 0x000c, 0x2b71: 0x000c, 0x2b72: 0x000c, 0x2b73: 0x000c, 0x2b74: 0x000c,\n\t// Block 0xae, offset 0x2b80\n\t0x2bb8: 0x000c, 0x2bb9: 0x000c, 0x2bba: 0x000c, 0x2bbb: 0x000c,\n\t0x2bbc: 0x000c, 0x2bbd: 0x000c, 0x2bbe: 0x000c, 0x2bbf: 0x000c,\n\t// Block 0xaf, offset 0x2bc0\n\t0x2bc2: 0x000c, 0x2bc3: 0x000c, 0x2bc4: 0x000c,\n\t0x2bc6: 0x000c,\n\t0x2bde: 0x000c,\n\t// Block 0xb0, offset 0x2c00\n\t0x2c33: 0x000c, 0x2c34: 0x000c, 0x2c35: 0x000c,\n\t0x2c36: 0x000c, 0x2c37: 0x000c, 0x2c38: 0x000c, 0x2c3a: 0x000c,\n\t0x2c3f: 0x000c,\n\t// Block 0xb1, offset 0x2c40\n\t0x2c40: 0x000c, 0x2c42: 0x000c, 0x2c43: 0x000c,\n\t// Block 0xb2, offset 0x2c80\n\t0x2cb2: 0x000c, 0x2cb3: 0x000c, 0x2cb4: 0x000c, 0x2cb5: 0x000c,\n\t0x2cbc: 0x000c, 0x2cbd: 0x000c, 0x2cbf: 0x000c,\n\t// Block 0xb3, offset 0x2cc0\n\t0x2cc0: 0x000c,\n\t0x2cdc: 0x000c, 0x2cdd: 0x000c,\n\t// Block 0xb4, offset 0x2d00\n\t0x2d33: 0x000c, 0x2d34: 0x000c, 0x2d35: 0x000c,\n\t0x2d36: 0x000c, 0x2d37: 0x000c, 0x2d38: 0x000c, 0x2d39: 0x000c, 0x2d3a: 0x000c,\n\t0x2d3d: 0x000c, 0x2d3f: 0x000c,\n\t// Block 0xb5, offset 0x2d40\n\t0x2d40: 0x000c,\n\t0x2d60: 0x000a, 0x2d61: 0x000a, 0x2d62: 0x000a, 0x2d63: 0x000a,\n\t0x2d64: 0x000a, 0x2d65: 0x000a, 0x2d66: 0x000a, 0x2d67: 0x000a, 0x2d68: 0x000a, 0x2d69: 0x000a,\n\t0x2d6a: 0x000a, 0x2d6b: 0x000a, 0x2d6c: 0x000a,\n\t// Block 0xb6, offset 0x2d80\n\t0x2dab: 0x000c, 0x2dad: 0x000c,\n\t0x2db0: 0x000c, 0x2db1: 0x000c, 0x2db2: 0x000c, 0x2db3: 0x000c, 0x2db4: 0x000c, 0x2db5: 0x000c,\n\t0x2db7: 0x000c,\n\t// Block 0xb7, offset 0x2dc0\n\t0x2ddd: 0x000c,\n\t0x2dde: 0x000c, 0x2ddf: 0x000c, 0x2de2: 0x000c, 0x2de3: 0x000c,\n\t0x2de4: 0x000c, 0x2de5: 0x000c, 0x2de7: 0x000c, 0x2de8: 0x000c, 0x2de9: 0x000c,\n\t0x2dea: 0x000c, 0x2deb: 0x000c,\n\t// Block 0xb8, offset 0x2e00\n\t0x2e2f: 0x000c,\n\t0x2e30: 0x000c, 0x2e31: 0x000c, 0x2e32: 0x000c, 0x2e33: 0x000c, 0x2e34: 0x000c, 0x2e35: 0x000c,\n\t0x2e36: 0x000c, 0x2e37: 0x000c, 0x2e39: 0x000c, 0x2e3a: 0x000c,\n\t// Block 0xb9, offset 0x2e40\n\t0x2e54: 0x000c, 0x2e55: 0x000c, 0x2e56: 0x000c, 0x2e57: 0x000c,\n\t0x2e5a: 0x000c, 0x2e5b: 0x000c,\n\t0x2e60: 0x000c,\n\t// Block 0xba, offset 0x2e80\n\t0x2e81: 0x000c, 0x2e82: 0x000c, 0x2e83: 0x000c, 0x2e84: 0x000c, 0x2e85: 0x000c,\n\t0x2e86: 0x000c, 0x2e89: 0x000c, 0x2e8a: 0x000c,\n\t0x2eb3: 0x000c, 0x2eb4: 0x000c, 0x2eb5: 0x000c,\n\t0x2eb6: 0x000c, 0x2eb7: 0x000c, 0x2eb8: 0x000c, 0x2ebb: 0x000c,\n\t0x2ebc: 0x000c, 0x2ebd: 0x000c, 0x2ebe: 0x000c,\n\t// Block 0xbb, offset 0x2ec0\n\t0x2ec7: 0x000c,\n\t0x2ed1: 0x000c,\n\t0x2ed2: 0x000c, 0x2ed3: 0x000c, 0x2ed4: 0x000c, 0x2ed5: 0x000c, 0x2ed6: 0x000c,\n\t0x2ed9: 0x000c, 0x2eda: 0x000c, 0x2edb: 0x000c,\n\t// Block 0xbc, offset 0x2f00\n\t0x2f0a: 0x000c, 0x2f0b: 0x000c,\n\t0x2f0c: 0x000c, 0x2f0d: 0x000c, 0x2f0e: 0x000c, 0x2f0f: 0x000c, 0x2f10: 0x000c, 0x2f11: 0x000c,\n\t0x2f12: 0x000c, 0x2f13: 0x000c, 0x2f14: 0x000c, 0x2f15: 0x000c, 0x2f16: 0x000c,\n\t0x2f18: 0x000c, 0x2f19: 0x000c,\n\t// Block 0xbd, offset 0x2f40\n\t0x2f70: 0x000c, 0x2f71: 0x000c, 0x2f72: 0x000c, 0x2f73: 0x000c, 0x2f74: 0x000c, 0x2f75: 0x000c,\n\t0x2f76: 0x000c, 0x2f78: 0x000c, 0x2f79: 0x000c, 0x2f7a: 0x000c, 0x2f7b: 0x000c,\n\t0x2f7c: 0x000c, 0x2f7d: 0x000c,\n\t// Block 0xbe, offset 0x2f80\n\t0x2f92: 0x000c, 0x2f93: 0x000c, 0x2f94: 0x000c, 0x2f95: 0x000c, 0x2f96: 0x000c, 0x2f97: 0x000c,\n\t0x2f98: 0x000c, 0x2f99: 0x000c, 0x2f9a: 0x000c, 0x2f9b: 0x000c, 0x2f9c: 0x000c, 0x2f9d: 0x000c,\n\t0x2f9e: 0x000c, 0x2f9f: 0x000c, 0x2fa0: 0x000c, 0x2fa1: 0x000c, 0x2fa2: 0x000c, 0x2fa3: 0x000c,\n\t0x2fa4: 0x000c, 0x2fa5: 0x000c, 0x2fa6: 0x000c, 0x2fa7: 0x000c,\n\t0x2faa: 0x000c, 0x2fab: 0x000c, 0x2fac: 0x000c, 0x2fad: 0x000c, 0x2fae: 0x000c, 0x2faf: 0x000c,\n\t0x2fb0: 0x000c, 0x2fb2: 0x000c, 0x2fb3: 0x000c, 0x2fb5: 0x000c,\n\t0x2fb6: 0x000c,\n\t// Block 0xbf, offset 0x2fc0\n\t0x2ff1: 0x000c, 0x2ff2: 0x000c, 0x2ff3: 0x000c, 0x2ff4: 0x000c, 0x2ff5: 0x000c,\n\t0x2ff6: 0x000c, 0x2ffa: 0x000c,\n\t0x2ffc: 0x000c, 0x2ffd: 0x000c, 0x2fff: 0x000c,\n\t// Block 0xc0, offset 0x3000\n\t0x3000: 0x000c, 0x3001: 0x000c, 0x3002: 0x000c, 0x3003: 0x000c, 0x3004: 0x000c, 0x3005: 0x000c,\n\t0x3007: 0x000c,\n\t// Block 0xc1, offset 0x3040\n\t0x3050: 0x000c, 0x3051: 0x000c,\n\t0x3055: 0x000c, 0x3057: 0x000c,\n\t// Block 0xc2, offset 0x3080\n\t0x30b3: 0x000c, 0x30b4: 0x000c,\n\t// Block 0xc3, offset 0x30c0\n\t0x30d5: 0x000a, 0x30d6: 0x000a, 0x30d7: 0x000a,\n\t0x30d8: 0x000a, 0x30d9: 0x000a, 0x30da: 0x000a, 0x30db: 0x000a, 0x30dc: 0x000a, 0x30dd: 0x0004,\n\t0x30de: 0x0004, 0x30df: 0x0004, 0x30e0: 0x0004, 0x30e1: 0x000a, 0x30e2: 0x000a, 0x30e3: 0x000a,\n\t0x30e4: 0x000a, 0x30e5: 0x000a, 0x30e6: 0x000a, 0x30e7: 0x000a, 0x30e8: 0x000a, 0x30e9: 0x000a,\n\t0x30ea: 0x000a, 0x30eb: 0x000a, 0x30ec: 0x000a, 0x30ed: 0x000a, 0x30ee: 0x000a, 0x30ef: 0x000a,\n\t0x30f0: 0x000a, 0x30f1: 0x000a,\n\t// Block 0xc4, offset 0x3100\n\t0x3130: 0x000c, 0x3131: 0x000c, 0x3132: 0x000c, 0x3133: 0x000c, 0x3134: 0x000c,\n\t// Block 0xc5, offset 0x3140\n\t0x3170: 0x000c, 0x3171: 0x000c, 0x3172: 0x000c, 0x3173: 0x000c, 0x3174: 0x000c, 0x3175: 0x000c,\n\t0x3176: 0x000c,\n\t// Block 0xc6, offset 0x3180\n\t0x318f: 0x000c,\n\t// Block 0xc7, offset 0x31c0\n\t0x31cf: 0x000c, 0x31d0: 0x000c, 0x31d1: 0x000c,\n\t0x31d2: 0x000c,\n\t// Block 0xc8, offset 0x3200\n\t0x3222: 0x000a,\n\t// Block 0xc9, offset 0x3240\n\t0x325d: 0x000c,\n\t0x325e: 0x000c, 0x3260: 0x000b, 0x3261: 0x000b, 0x3262: 0x000b, 0x3263: 0x000b,\n\t// Block 0xca, offset 0x3280\n\t0x32a7: 0x000c, 0x32a8: 0x000c, 0x32a9: 0x000c,\n\t0x32b3: 0x000b, 0x32b4: 0x000b, 0x32b5: 0x000b,\n\t0x32b6: 0x000b, 0x32b7: 0x000b, 0x32b8: 0x000b, 0x32b9: 0x000b, 0x32ba: 0x000b, 0x32bb: 0x000c,\n\t0x32bc: 0x000c, 0x32bd: 0x000c, 0x32be: 0x000c, 0x32bf: 0x000c,\n\t// Block 0xcb, offset 0x32c0\n\t0x32c0: 0x000c, 0x32c1: 0x000c, 0x32c2: 0x000c, 0x32c5: 0x000c,\n\t0x32c6: 0x000c, 0x32c7: 0x000c, 0x32c8: 0x000c, 0x32c9: 0x000c, 0x32ca: 0x000c, 0x32cb: 0x000c,\n\t0x32ea: 0x000c, 0x32eb: 0x000c, 0x32ec: 0x000c, 0x32ed: 0x000c,\n\t// Block 0xcc, offset 0x3300\n\t0x3300: 0x000a, 0x3301: 0x000a, 0x3302: 0x000c, 0x3303: 0x000c, 0x3304: 0x000c, 0x3305: 0x000a,\n\t// Block 0xcd, offset 0x3340\n\t0x3340: 0x000a, 0x3341: 0x000a, 0x3342: 0x000a, 0x3343: 0x000a, 0x3344: 0x000a, 0x3345: 0x000a,\n\t0x3346: 0x000a, 0x3347: 0x000a, 0x3348: 0x000a, 0x3349: 0x000a, 0x334a: 0x000a, 0x334b: 0x000a,\n\t0x334c: 0x000a, 0x334d: 0x000a, 0x334e: 0x000a, 0x334f: 0x000a, 0x3350: 0x000a, 0x3351: 0x000a,\n\t0x3352: 0x000a, 0x3353: 0x000a, 0x3354: 0x000a, 0x3355: 0x000a, 0x3356: 0x000a,\n\t// Block 0xce, offset 0x3380\n\t0x339b: 0x000a,\n\t// Block 0xcf, offset 0x33c0\n\t0x33d5: 0x000a,\n\t// Block 0xd0, offset 0x3400\n\t0x340f: 0x000a,\n\t// Block 0xd1, offset 0x3440\n\t0x3449: 0x000a,\n\t// Block 0xd2, offset 0x3480\n\t0x3483: 0x000a,\n\t0x348e: 0x0002, 0x348f: 0x0002, 0x3490: 0x0002, 0x3491: 0x0002,\n\t0x3492: 0x0002, 0x3493: 0x0002, 0x3494: 0x0002, 0x3495: 0x0002, 0x3496: 0x0002, 0x3497: 0x0002,\n\t0x3498: 0x0002, 0x3499: 0x0002, 0x349a: 0x0002, 0x349b: 0x0002, 0x349c: 0x0002, 0x349d: 0x0002,\n\t0x349e: 0x0002, 0x349f: 0x0002, 0x34a0: 0x0002, 0x34a1: 0x0002, 0x34a2: 0x0002, 0x34a3: 0x0002,\n\t0x34a4: 0x0002, 0x34a5: 0x0002, 0x34a6: 0x0002, 0x34a7: 0x0002, 0x34a8: 0x0002, 0x34a9: 0x0002,\n\t0x34aa: 0x0002, 0x34ab: 0x0002, 0x34ac: 0x0002, 0x34ad: 0x0002, 0x34ae: 0x0002, 0x34af: 0x0002,\n\t0x34b0: 0x0002, 0x34b1: 0x0002, 0x34b2: 0x0002, 0x34b3: 0x0002, 0x34b4: 0x0002, 0x34b5: 0x0002,\n\t0x34b6: 0x0002, 0x34b7: 0x0002, 0x34b8: 0x0002, 0x34b9: 0x0002, 0x34ba: 0x0002, 0x34bb: 0x0002,\n\t0x34bc: 0x0002, 0x34bd: 0x0002, 0x34be: 0x0002, 0x34bf: 0x0002,\n\t// Block 0xd3, offset 0x34c0\n\t0x34c0: 0x000c, 0x34c1: 0x000c, 0x34c2: 0x000c, 0x34c3: 0x000c, 0x34c4: 0x000c, 0x34c5: 0x000c,\n\t0x34c6: 0x000c, 0x34c7: 0x000c, 0x34c8: 0x000c, 0x34c9: 0x000c, 0x34ca: 0x000c, 0x34cb: 0x000c,\n\t0x34cc: 0x000c, 0x34cd: 0x000c, 0x34ce: 0x000c, 0x34cf: 0x000c, 0x34d0: 0x000c, 0x34d1: 0x000c,\n\t0x34d2: 0x000c, 0x34d3: 0x000c, 0x34d4: 0x000c, 0x34d5: 0x000c, 0x34d6: 0x000c, 0x34d7: 0x000c,\n\t0x34d8: 0x000c, 0x34d9: 0x000c, 0x34da: 0x000c, 0x34db: 0x000c, 0x34dc: 0x000c, 0x34dd: 0x000c,\n\t0x34de: 0x000c, 0x34df: 0x000c, 0x34e0: 0x000c, 0x34e1: 0x000c, 0x34e2: 0x000c, 0x34e3: 0x000c,\n\t0x34e4: 0x000c, 0x34e5: 0x000c, 0x34e6: 0x000c, 0x34e7: 0x000c, 0x34e8: 0x000c, 0x34e9: 0x000c,\n\t0x34ea: 0x000c, 0x34eb: 0x000c, 0x34ec: 0x000c, 0x34ed: 0x000c, 0x34ee: 0x000c, 0x34ef: 0x000c,\n\t0x34f0: 0x000c, 0x34f1: 0x000c, 0x34f2: 0x000c, 0x34f3: 0x000c, 0x34f4: 0x000c, 0x34f5: 0x000c,\n\t0x34f6: 0x000c, 0x34fb: 0x000c,\n\t0x34fc: 0x000c, 0x34fd: 0x000c, 0x34fe: 0x000c, 0x34ff: 0x000c,\n\t// Block 0xd4, offset 0x3500\n\t0x3500: 0x000c, 0x3501: 0x000c, 0x3502: 0x000c, 0x3503: 0x000c, 0x3504: 0x000c, 0x3505: 0x000c,\n\t0x3506: 0x000c, 0x3507: 0x000c, 0x3508: 0x000c, 0x3509: 0x000c, 0x350a: 0x000c, 0x350b: 0x000c,\n\t0x350c: 0x000c, 0x350d: 0x000c, 0x350e: 0x000c, 0x350f: 0x000c, 0x3510: 0x000c, 0x3511: 0x000c,\n\t0x3512: 0x000c, 0x3513: 0x000c, 0x3514: 0x000c, 0x3515: 0x000c, 0x3516: 0x000c, 0x3517: 0x000c,\n\t0x3518: 0x000c, 0x3519: 0x000c, 0x351a: 0x000c, 0x351b: 0x000c, 0x351c: 0x000c, 0x351d: 0x000c,\n\t0x351e: 0x000c, 0x351f: 0x000c, 0x3520: 0x000c, 0x3521: 0x000c, 0x3522: 0x000c, 0x3523: 0x000c,\n\t0x3524: 0x000c, 0x3525: 0x000c, 0x3526: 0x000c, 0x3527: 0x000c, 0x3528: 0x000c, 0x3529: 0x000c,\n\t0x352a: 0x000c, 0x352b: 0x000c, 0x352c: 0x000c,\n\t0x3535: 0x000c,\n\t// Block 0xd5, offset 0x3540\n\t0x3544: 0x000c,\n\t0x355b: 0x000c, 0x355c: 0x000c, 0x355d: 0x000c,\n\t0x355e: 0x000c, 0x355f: 0x000c, 0x3561: 0x000c, 0x3562: 0x000c, 0x3563: 0x000c,\n\t0x3564: 0x000c, 0x3565: 0x000c, 0x3566: 0x000c, 0x3567: 0x000c, 0x3568: 0x000c, 0x3569: 0x000c,\n\t0x356a: 0x000c, 0x356b: 0x000c, 0x356c: 0x000c, 0x356d: 0x000c, 0x356e: 0x000c, 0x356f: 0x000c,\n\t// Block 0xd6, offset 0x3580\n\t0x3580: 0x000c, 0x3581: 0x000c, 0x3582: 0x000c, 0x3583: 0x000c, 0x3584: 0x000c, 0x3585: 0x000c,\n\t0x3586: 0x000c, 0x3588: 0x000c, 0x3589: 0x000c, 0x358a: 0x000c, 0x358b: 0x000c,\n\t0x358c: 0x000c, 0x358d: 0x000c, 0x358e: 0x000c, 0x358f: 0x000c, 0x3590: 0x000c, 0x3591: 0x000c,\n\t0x3592: 0x000c, 0x3593: 0x000c, 0x3594: 0x000c, 0x3595: 0x000c, 0x3596: 0x000c, 0x3597: 0x000c,\n\t0x3598: 0x000c, 0x359b: 0x000c, 0x359c: 0x000c, 0x359d: 0x000c,\n\t0x359e: 0x000c, 0x359f: 0x000c, 0x35a0: 0x000c, 0x35a1: 0x000c, 0x35a3: 0x000c,\n\t0x35a4: 0x000c, 0x35a6: 0x000c, 0x35a7: 0x000c, 0x35a8: 0x000c, 0x35a9: 0x000c,\n\t0x35aa: 0x000c,\n\t// Block 0xd7, offset 0x35c0\n\t0x35ec: 0x000c, 0x35ed: 0x000c, 0x35ee: 0x000c, 0x35ef: 0x000c,\n\t0x35ff: 0x0004,\n\t// Block 0xd8, offset 0x3600\n\t0x3600: 0x0001, 0x3601: 0x0001, 0x3602: 0x0001, 0x3603: 0x0001, 0x3604: 0x0001, 0x3605: 0x0001,\n\t0x3606: 0x0001, 0x3607: 0x0001, 0x3608: 0x0001, 0x3609: 0x0001, 0x360a: 0x0001, 0x360b: 0x0001,\n\t0x360c: 0x0001, 0x360d: 0x0001, 0x360e: 0x0001, 0x360f: 0x0001, 0x3610: 0x000c, 0x3611: 0x000c,\n\t0x3612: 0x000c, 0x3613: 0x000c, 0x3614: 0x000c, 0x3615: 0x000c, 0x3616: 0x000c, 0x3617: 0x0001,\n\t0x3618: 0x0001, 0x3619: 0x0001, 0x361a: 0x0001, 0x361b: 0x0001, 0x361c: 0x0001, 0x361d: 0x0001,\n\t0x361e: 0x0001, 0x361f: 0x0001, 0x3620: 0x0001, 0x3621: 0x0001, 0x3622: 0x0001, 0x3623: 0x0001,\n\t0x3624: 0x0001, 0x3625: 0x0001, 0x3626: 0x0001, 0x3627: 0x0001, 0x3628: 0x0001, 0x3629: 0x0001,\n\t0x362a: 0x0001, 0x362b: 0x0001, 0x362c: 0x0001, 0x362d: 0x0001, 0x362e: 0x0001, 0x362f: 0x0001,\n\t0x3630: 0x0001, 0x3631: 0x0001, 0x3632: 0x0001, 0x3633: 0x0001, 0x3634: 0x0001, 0x3635: 0x0001,\n\t0x3636: 0x0001, 0x3637: 0x0001, 0x3638: 0x0001, 0x3639: 0x0001, 0x363a: 0x0001, 0x363b: 0x0001,\n\t0x363c: 0x0001, 0x363d: 0x0001, 0x363e: 0x0001, 0x363f: 0x0001,\n\t// Block 0xd9, offset 0x3640\n\t0x3640: 0x0001, 0x3641: 0x0001, 0x3642: 0x0001, 0x3643: 0x0001, 0x3644: 0x000c, 0x3645: 0x000c,\n\t0x3646: 0x000c, 0x3647: 0x000c, 0x3648: 0x000c, 0x3649: 0x000c, 0x364a: 0x000c, 0x364b: 0x0001,\n\t0x364c: 0x0001, 0x364d: 0x0001, 0x364e: 0x0001, 0x364f: 0x0001, 0x3650: 0x0001, 0x3651: 0x0001,\n\t0x3652: 0x0001, 0x3653: 0x0001, 0x3654: 0x0001, 0x3655: 0x0001, 0x3656: 0x0001, 0x3657: 0x0001,\n\t0x3658: 0x0001, 0x3659: 0x0001, 0x365a: 0x0001, 0x365b: 0x0001, 0x365c: 0x0001, 0x365d: 0x0001,\n\t0x365e: 0x0001, 0x365f: 0x0001, 0x3660: 0x0001, 0x3661: 0x0001, 0x3662: 0x0001, 0x3663: 0x0001,\n\t0x3664: 0x0001, 0x3665: 0x0001, 0x3666: 0x0001, 0x3667: 0x0001, 0x3668: 0x0001, 0x3669: 0x0001,\n\t0x366a: 0x0001, 0x366b: 0x0001, 0x366c: 0x0001, 0x366d: 0x0001, 0x366e: 0x0001, 0x366f: 0x0001,\n\t0x3670: 0x0001, 0x3671: 0x0001, 0x3672: 0x0001, 0x3673: 0x0001, 0x3674: 0x0001, 0x3675: 0x0001,\n\t0x3676: 0x0001, 0x3677: 0x0001, 0x3678: 0x0001, 0x3679: 0x0001, 0x367a: 0x0001, 0x367b: 0x0001,\n\t0x367c: 0x0001, 0x367d: 0x0001, 0x367e: 0x0001, 0x367f: 0x0001,\n\t// Block 0xda, offset 0x3680\n\t0x3680: 0x000d, 0x3681: 0x000d, 0x3682: 0x000d, 0x3683: 0x000d, 0x3684: 0x000d, 0x3685: 0x000d,\n\t0x3686: 0x000d, 0x3687: 0x000d, 0x3688: 0x000d, 0x3689: 0x000d, 0x368a: 0x000d, 0x368b: 0x000d,\n\t0x368c: 0x000d, 0x368d: 0x000d, 0x368e: 0x000d, 0x368f: 0x000d, 0x3690: 0x0001, 0x3691: 0x0001,\n\t0x3692: 0x0001, 0x3693: 0x0001, 0x3694: 0x0001, 0x3695: 0x0001, 0x3696: 0x0001, 0x3697: 0x0001,\n\t0x3698: 0x0001, 0x3699: 0x0001, 0x369a: 0x0001, 0x369b: 0x0001, 0x369c: 0x0001, 0x369d: 0x0001,\n\t0x369e: 0x0001, 0x369f: 0x0001, 0x36a0: 0x0001, 0x36a1: 0x0001, 0x36a2: 0x0001, 0x36a3: 0x0001,\n\t0x36a4: 0x0001, 0x36a5: 0x0001, 0x36a6: 0x0001, 0x36a7: 0x0001, 0x36a8: 0x0001, 0x36a9: 0x0001,\n\t0x36aa: 0x0001, 0x36ab: 0x0001, 0x36ac: 0x0001, 0x36ad: 0x0001, 0x36ae: 0x0001, 0x36af: 0x0001,\n\t0x36b0: 0x0001, 0x36b1: 0x0001, 0x36b2: 0x0001, 0x36b3: 0x0001, 0x36b4: 0x0001, 0x36b5: 0x0001,\n\t0x36b6: 0x0001, 0x36b7: 0x0001, 0x36b8: 0x0001, 0x36b9: 0x0001, 0x36ba: 0x0001, 0x36bb: 0x0001,\n\t0x36bc: 0x0001, 0x36bd: 0x0001, 0x36be: 0x0001, 0x36bf: 0x0001,\n\t// Block 0xdb, offset 0x36c0\n\t0x36c0: 0x000d, 0x36c1: 0x000d, 0x36c2: 0x000d, 0x36c3: 0x000d, 0x36c4: 0x000d, 0x36c5: 0x000d,\n\t0x36c6: 0x000d, 0x36c7: 0x000d, 0x36c8: 0x000d, 0x36c9: 0x000d, 0x36ca: 0x000d, 0x36cb: 0x000d,\n\t0x36cc: 0x000d, 0x36cd: 0x000d, 0x36ce: 0x000d, 0x36cf: 0x000d, 0x36d0: 0x000d, 0x36d1: 0x000d,\n\t0x36d2: 0x000d, 0x36d3: 0x000d, 0x36d4: 0x000d, 0x36d5: 0x000d, 0x36d6: 0x000d, 0x36d7: 0x000d,\n\t0x36d8: 0x000d, 0x36d9: 0x000d, 0x36da: 0x000d, 0x36db: 0x000d, 0x36dc: 0x000d, 0x36dd: 0x000d,\n\t0x36de: 0x000d, 0x36df: 0x000d, 0x36e0: 0x000d, 0x36e1: 0x000d, 0x36e2: 0x000d, 0x36e3: 0x000d,\n\t0x36e4: 0x000d, 0x36e5: 0x000d, 0x36e6: 0x000d, 0x36e7: 0x000d, 0x36e8: 0x000d, 0x36e9: 0x000d,\n\t0x36ea: 0x000d, 0x36eb: 0x000d, 0x36ec: 0x000d, 0x36ed: 0x000d, 0x36ee: 0x000d, 0x36ef: 0x000d,\n\t0x36f0: 0x000a, 0x36f1: 0x000a, 0x36f2: 0x000d, 0x36f3: 0x000d, 0x36f4: 0x000d, 0x36f5: 0x000d,\n\t0x36f6: 0x000d, 0x36f7: 0x000d, 0x36f8: 0x000d, 0x36f9: 0x000d, 0x36fa: 0x000d, 0x36fb: 0x000d,\n\t0x36fc: 0x000d, 0x36fd: 0x000d, 0x36fe: 0x000d, 0x36ff: 0x000d,\n\t// Block 0xdc, offset 0x3700\n\t0x3700: 0x000a, 0x3701: 0x000a, 0x3702: 0x000a, 0x3703: 0x000a, 0x3704: 0x000a, 0x3705: 0x000a,\n\t0x3706: 0x000a, 0x3707: 0x000a, 0x3708: 0x000a, 0x3709: 0x000a, 0x370a: 0x000a, 0x370b: 0x000a,\n\t0x370c: 0x000a, 0x370d: 0x000a, 0x370e: 0x000a, 0x370f: 0x000a, 0x3710: 0x000a, 0x3711: 0x000a,\n\t0x3712: 0x000a, 0x3713: 0x000a, 0x3714: 0x000a, 0x3715: 0x000a, 0x3716: 0x000a, 0x3717: 0x000a,\n\t0x3718: 0x000a, 0x3719: 0x000a, 0x371a: 0x000a, 0x371b: 0x000a, 0x371c: 0x000a, 0x371d: 0x000a,\n\t0x371e: 0x000a, 0x371f: 0x000a, 0x3720: 0x000a, 0x3721: 0x000a, 0x3722: 0x000a, 0x3723: 0x000a,\n\t0x3724: 0x000a, 0x3725: 0x000a, 0x3726: 0x000a, 0x3727: 0x000a, 0x3728: 0x000a, 0x3729: 0x000a,\n\t0x372a: 0x000a, 0x372b: 0x000a,\n\t0x3730: 0x000a, 0x3731: 0x000a, 0x3732: 0x000a, 0x3733: 0x000a, 0x3734: 0x000a, 0x3735: 0x000a,\n\t0x3736: 0x000a, 0x3737: 0x000a, 0x3738: 0x000a, 0x3739: 0x000a, 0x373a: 0x000a, 0x373b: 0x000a,\n\t0x373c: 0x000a, 0x373d: 0x000a, 0x373e: 0x000a, 0x373f: 0x000a,\n\t// Block 0xdd, offset 0x3740\n\t0x3740: 0x000a, 0x3741: 0x000a, 0x3742: 0x000a, 0x3743: 0x000a, 0x3744: 0x000a, 0x3745: 0x000a,\n\t0x3746: 0x000a, 0x3747: 0x000a, 0x3748: 0x000a, 0x3749: 0x000a, 0x374a: 0x000a, 0x374b: 0x000a,\n\t0x374c: 0x000a, 0x374d: 0x000a, 0x374e: 0x000a, 0x374f: 0x000a, 0x3750: 0x000a, 0x3751: 0x000a,\n\t0x3752: 0x000a, 0x3753: 0x000a,\n\t0x3760: 0x000a, 0x3761: 0x000a, 0x3762: 0x000a, 0x3763: 0x000a,\n\t0x3764: 0x000a, 0x3765: 0x000a, 0x3766: 0x000a, 0x3767: 0x000a, 0x3768: 0x000a, 0x3769: 0x000a,\n\t0x376a: 0x000a, 0x376b: 0x000a, 0x376c: 0x000a, 0x376d: 0x000a, 0x376e: 0x000a,\n\t0x3771: 0x000a, 0x3772: 0x000a, 0x3773: 0x000a, 0x3774: 0x000a, 0x3775: 0x000a,\n\t0x3776: 0x000a, 0x3777: 0x000a, 0x3778: 0x000a, 0x3779: 0x000a, 0x377a: 0x000a, 0x377b: 0x000a,\n\t0x377c: 0x000a, 0x377d: 0x000a, 0x377e: 0x000a, 0x377f: 0x000a,\n\t// Block 0xde, offset 0x3780\n\t0x3781: 0x000a, 0x3782: 0x000a, 0x3783: 0x000a, 0x3784: 0x000a, 0x3785: 0x000a,\n\t0x3786: 0x000a, 0x3787: 0x000a, 0x3788: 0x000a, 0x3789: 0x000a, 0x378a: 0x000a, 0x378b: 0x000a,\n\t0x378c: 0x000a, 0x378d: 0x000a, 0x378e: 0x000a, 0x378f: 0x000a, 0x3791: 0x000a,\n\t0x3792: 0x000a, 0x3793: 0x000a, 0x3794: 0x000a, 0x3795: 0x000a, 0x3796: 0x000a, 0x3797: 0x000a,\n\t0x3798: 0x000a, 0x3799: 0x000a, 0x379a: 0x000a, 0x379b: 0x000a, 0x379c: 0x000a, 0x379d: 0x000a,\n\t0x379e: 0x000a, 0x379f: 0x000a, 0x37a0: 0x000a, 0x37a1: 0x000a, 0x37a2: 0x000a, 0x37a3: 0x000a,\n\t0x37a4: 0x000a, 0x37a5: 0x000a, 0x37a6: 0x000a, 0x37a7: 0x000a, 0x37a8: 0x000a, 0x37a9: 0x000a,\n\t0x37aa: 0x000a, 0x37ab: 0x000a, 0x37ac: 0x000a, 0x37ad: 0x000a, 0x37ae: 0x000a, 0x37af: 0x000a,\n\t0x37b0: 0x000a, 0x37b1: 0x000a, 0x37b2: 0x000a, 0x37b3: 0x000a, 0x37b4: 0x000a, 0x37b5: 0x000a,\n\t// Block 0xdf, offset 0x37c0\n\t0x37c0: 0x0002, 0x37c1: 0x0002, 0x37c2: 0x0002, 0x37c3: 0x0002, 0x37c4: 0x0002, 0x37c5: 0x0002,\n\t0x37c6: 0x0002, 0x37c7: 0x0002, 0x37c8: 0x0002, 0x37c9: 0x0002, 0x37ca: 0x0002, 0x37cb: 0x000a,\n\t0x37cc: 0x000a,\n\t0x37ef: 0x000a,\n\t// Block 0xe0, offset 0x3800\n\t0x382a: 0x000a, 0x382b: 0x000a, 0x382c: 0x000a,\n\t// Block 0xe1, offset 0x3840\n\t0x3860: 0x000a, 0x3861: 0x000a, 0x3862: 0x000a, 0x3863: 0x000a,\n\t0x3864: 0x000a, 0x3865: 0x000a,\n\t// Block 0xe2, offset 0x3880\n\t0x3880: 0x000a, 0x3881: 0x000a, 0x3882: 0x000a, 0x3883: 0x000a, 0x3884: 0x000a, 0x3885: 0x000a,\n\t0x3886: 0x000a, 0x3887: 0x000a, 0x3888: 0x000a, 0x3889: 0x000a, 0x388a: 0x000a, 0x388b: 0x000a,\n\t0x388c: 0x000a, 0x388d: 0x000a, 0x388e: 0x000a, 0x388f: 0x000a, 0x3890: 0x000a, 0x3891: 0x000a,\n\t0x3892: 0x000a, 0x3893: 0x000a, 0x3894: 0x000a, 0x3895: 0x000a,\n\t0x38a0: 0x000a, 0x38a1: 0x000a, 0x38a2: 0x000a, 0x38a3: 0x000a,\n\t0x38a4: 0x000a, 0x38a5: 0x000a, 0x38a6: 0x000a, 0x38a7: 0x000a, 0x38a8: 0x000a, 0x38a9: 0x000a,\n\t0x38aa: 0x000a, 0x38ab: 0x000a, 0x38ac: 0x000a,\n\t0x38b0: 0x000a, 0x38b1: 0x000a, 0x38b2: 0x000a, 0x38b3: 0x000a, 0x38b4: 0x000a, 0x38b5: 0x000a,\n\t0x38b6: 0x000a, 0x38b7: 0x000a, 0x38b8: 0x000a, 0x38b9: 0x000a, 0x38ba: 0x000a,\n\t// Block 0xe3, offset 0x38c0\n\t0x38c0: 0x000a, 0x38c1: 0x000a, 0x38c2: 0x000a, 0x38c3: 0x000a, 0x38c4: 0x000a, 0x38c5: 0x000a,\n\t0x38c6: 0x000a, 0x38c7: 0x000a, 0x38c8: 0x000a, 0x38c9: 0x000a, 0x38ca: 0x000a, 0x38cb: 0x000a,\n\t0x38cc: 0x000a, 0x38cd: 0x000a, 0x38ce: 0x000a, 0x38cf: 0x000a, 0x38d0: 0x000a, 0x38d1: 0x000a,\n\t0x38d2: 0x000a, 0x38d3: 0x000a, 0x38d4: 0x000a, 0x38d5: 0x000a, 0x38d6: 0x000a, 0x38d7: 0x000a,\n\t0x38d8: 0x000a,\n\t0x38e0: 0x000a, 0x38e1: 0x000a, 0x38e2: 0x000a, 0x38e3: 0x000a,\n\t0x38e4: 0x000a, 0x38e5: 0x000a, 0x38e6: 0x000a, 0x38e7: 0x000a, 0x38e8: 0x000a, 0x38e9: 0x000a,\n\t0x38ea: 0x000a, 0x38eb: 0x000a,\n\t// Block 0xe4, offset 0x3900\n\t0x3900: 0x000a, 0x3901: 0x000a, 0x3902: 0x000a, 0x3903: 0x000a, 0x3904: 0x000a, 0x3905: 0x000a,\n\t0x3906: 0x000a, 0x3907: 0x000a, 0x3908: 0x000a, 0x3909: 0x000a, 0x390a: 0x000a, 0x390b: 0x000a,\n\t0x3910: 0x000a, 0x3911: 0x000a,\n\t0x3912: 0x000a, 0x3913: 0x000a, 0x3914: 0x000a, 0x3915: 0x000a, 0x3916: 0x000a, 0x3917: 0x000a,\n\t0x3918: 0x000a, 0x3919: 0x000a, 0x391a: 0x000a, 0x391b: 0x000a, 0x391c: 0x000a, 0x391d: 0x000a,\n\t0x391e: 0x000a, 0x391f: 0x000a, 0x3920: 0x000a, 0x3921: 0x000a, 0x3922: 0x000a, 0x3923: 0x000a,\n\t0x3924: 0x000a, 0x3925: 0x000a, 0x3926: 0x000a, 0x3927: 0x000a, 0x3928: 0x000a, 0x3929: 0x000a,\n\t0x392a: 0x000a, 0x392b: 0x000a, 0x392c: 0x000a, 0x392d: 0x000a, 0x392e: 0x000a, 0x392f: 0x000a,\n\t0x3930: 0x000a, 0x3931: 0x000a, 0x3932: 0x000a, 0x3933: 0x000a, 0x3934: 0x000a, 0x3935: 0x000a,\n\t0x3936: 0x000a, 0x3937: 0x000a, 0x3938: 0x000a, 0x3939: 0x000a, 0x393a: 0x000a, 0x393b: 0x000a,\n\t0x393c: 0x000a, 0x393d: 0x000a, 0x393e: 0x000a, 0x393f: 0x000a,\n\t// Block 0xe5, offset 0x3940\n\t0x3940: 0x000a, 0x3941: 0x000a, 0x3942: 0x000a, 0x3943: 0x000a, 0x3944: 0x000a, 0x3945: 0x000a,\n\t0x3946: 0x000a, 0x3947: 0x000a,\n\t0x3950: 0x000a, 0x3951: 0x000a,\n\t0x3952: 0x000a, 0x3953: 0x000a, 0x3954: 0x000a, 0x3955: 0x000a, 0x3956: 0x000a, 0x3957: 0x000a,\n\t0x3958: 0x000a, 0x3959: 0x000a,\n\t0x3960: 0x000a, 0x3961: 0x000a, 0x3962: 0x000a, 0x3963: 0x000a,\n\t0x3964: 0x000a, 0x3965: 0x000a, 0x3966: 0x000a, 0x3967: 0x000a, 0x3968: 0x000a, 0x3969: 0x000a,\n\t0x396a: 0x000a, 0x396b: 0x000a, 0x396c: 0x000a, 0x396d: 0x000a, 0x396e: 0x000a, 0x396f: 0x000a,\n\t0x3970: 0x000a, 0x3971: 0x000a, 0x3972: 0x000a, 0x3973: 0x000a, 0x3974: 0x000a, 0x3975: 0x000a,\n\t0x3976: 0x000a, 0x3977: 0x000a, 0x3978: 0x000a, 0x3979: 0x000a, 0x397a: 0x000a, 0x397b: 0x000a,\n\t0x397c: 0x000a, 0x397d: 0x000a, 0x397e: 0x000a, 0x397f: 0x000a,\n\t// Block 0xe6, offset 0x3980\n\t0x3980: 0x000a, 0x3981: 0x000a, 0x3982: 0x000a, 0x3983: 0x000a, 0x3984: 0x000a, 0x3985: 0x000a,\n\t0x3986: 0x000a, 0x3987: 0x000a,\n\t0x3990: 0x000a, 0x3991: 0x000a,\n\t0x3992: 0x000a, 0x3993: 0x000a, 0x3994: 0x000a, 0x3995: 0x000a, 0x3996: 0x000a, 0x3997: 0x000a,\n\t0x3998: 0x000a, 0x3999: 0x000a, 0x399a: 0x000a, 0x399b: 0x000a, 0x399c: 0x000a, 0x399d: 0x000a,\n\t0x399e: 0x000a, 0x399f: 0x000a, 0x39a0: 0x000a, 0x39a1: 0x000a, 0x39a2: 0x000a, 0x39a3: 0x000a,\n\t0x39a4: 0x000a, 0x39a5: 0x000a, 0x39a6: 0x000a, 0x39a7: 0x000a, 0x39a8: 0x000a, 0x39a9: 0x000a,\n\t0x39aa: 0x000a, 0x39ab: 0x000a, 0x39ac: 0x000a, 0x39ad: 0x000a,\n\t// Block 0xe7, offset 0x39c0\n\t0x39c0: 0x000a, 0x39c1: 0x000a, 0x39c2: 0x000a, 0x39c3: 0x000a, 0x39c4: 0x000a, 0x39c5: 0x000a,\n\t0x39c6: 0x000a, 0x39c7: 0x000a, 0x39c8: 0x000a, 0x39c9: 0x000a, 0x39ca: 0x000a, 0x39cb: 0x000a,\n\t0x39cd: 0x000a, 0x39ce: 0x000a, 0x39cf: 0x000a, 0x39d0: 0x000a, 0x39d1: 0x000a,\n\t0x39d2: 0x000a, 0x39d3: 0x000a, 0x39d4: 0x000a, 0x39d5: 0x000a, 0x39d6: 0x000a, 0x39d7: 0x000a,\n\t0x39d8: 0x000a, 0x39d9: 0x000a, 0x39da: 0x000a, 0x39db: 0x000a, 0x39dc: 0x000a, 0x39dd: 0x000a,\n\t0x39de: 0x000a, 0x39df: 0x000a, 0x39e0: 0x000a, 0x39e1: 0x000a, 0x39e2: 0x000a, 0x39e3: 0x000a,\n\t0x39e4: 0x000a, 0x39e5: 0x000a, 0x39e6: 0x000a, 0x39e7: 0x000a, 0x39e8: 0x000a, 0x39e9: 0x000a,\n\t0x39ea: 0x000a, 0x39eb: 0x000a, 0x39ec: 0x000a, 0x39ed: 0x000a, 0x39ee: 0x000a, 0x39ef: 0x000a,\n\t0x39f0: 0x000a, 0x39f1: 0x000a, 0x39f2: 0x000a, 0x39f3: 0x000a, 0x39f4: 0x000a, 0x39f5: 0x000a,\n\t0x39f6: 0x000a, 0x39f7: 0x000a, 0x39f8: 0x000a, 0x39f9: 0x000a, 0x39fa: 0x000a, 0x39fb: 0x000a,\n\t0x39fc: 0x000a, 0x39fd: 0x000a, 0x39fe: 0x000a, 0x39ff: 0x000a,\n\t// Block 0xe8, offset 0x3a00\n\t0x3a00: 0x000a, 0x3a01: 0x000a, 0x3a02: 0x000a, 0x3a03: 0x000a, 0x3a04: 0x000a, 0x3a05: 0x000a,\n\t0x3a06: 0x000a, 0x3a07: 0x000a, 0x3a08: 0x000a, 0x3a09: 0x000a, 0x3a0a: 0x000a, 0x3a0b: 0x000a,\n\t0x3a0c: 0x000a, 0x3a0d: 0x000a, 0x3a0e: 0x000a, 0x3a0f: 0x000a, 0x3a10: 0x000a, 0x3a11: 0x000a,\n\t0x3a12: 0x000a, 0x3a13: 0x000a, 0x3a14: 0x000a, 0x3a15: 0x000a, 0x3a16: 0x000a, 0x3a17: 0x000a,\n\t0x3a18: 0x000a, 0x3a19: 0x000a, 0x3a1a: 0x000a, 0x3a1b: 0x000a, 0x3a1c: 0x000a, 0x3a1d: 0x000a,\n\t0x3a1e: 0x000a, 0x3a1f: 0x000a, 0x3a20: 0x000a, 0x3a21: 0x000a, 0x3a22: 0x000a, 0x3a23: 0x000a,\n\t0x3a24: 0x000a, 0x3a25: 0x000a, 0x3a26: 0x000a, 0x3a27: 0x000a, 0x3a28: 0x000a, 0x3a29: 0x000a,\n\t0x3a2a: 0x000a, 0x3a2b: 0x000a, 0x3a2c: 0x000a, 0x3a2d: 0x000a, 0x3a2e: 0x000a, 0x3a2f: 0x000a,\n\t0x3a30: 0x000a, 0x3a31: 0x000a, 0x3a33: 0x000a, 0x3a34: 0x000a, 0x3a35: 0x000a,\n\t0x3a36: 0x000a, 0x3a3a: 0x000a, 0x3a3b: 0x000a,\n\t0x3a3c: 0x000a, 0x3a3d: 0x000a, 0x3a3e: 0x000a, 0x3a3f: 0x000a,\n\t// Block 0xe9, offset 0x3a40\n\t0x3a40: 0x000a, 0x3a41: 0x000a, 0x3a42: 0x000a, 0x3a43: 0x000a, 0x3a44: 0x000a, 0x3a45: 0x000a,\n\t0x3a46: 0x000a, 0x3a47: 0x000a, 0x3a48: 0x000a, 0x3a49: 0x000a, 0x3a4a: 0x000a, 0x3a4b: 0x000a,\n\t0x3a4c: 0x000a, 0x3a4d: 0x000a, 0x3a4e: 0x000a, 0x3a4f: 0x000a, 0x3a50: 0x000a, 0x3a51: 0x000a,\n\t0x3a52: 0x000a, 0x3a53: 0x000a, 0x3a54: 0x000a, 0x3a55: 0x000a, 0x3a56: 0x000a, 0x3a57: 0x000a,\n\t0x3a58: 0x000a, 0x3a59: 0x000a, 0x3a5a: 0x000a, 0x3a5b: 0x000a, 0x3a5c: 0x000a, 0x3a5d: 0x000a,\n\t0x3a5e: 0x000a, 0x3a5f: 0x000a, 0x3a60: 0x000a, 0x3a61: 0x000a, 0x3a62: 0x000a,\n\t0x3a65: 0x000a, 0x3a66: 0x000a, 0x3a67: 0x000a, 0x3a68: 0x000a, 0x3a69: 0x000a,\n\t0x3a6a: 0x000a, 0x3a6e: 0x000a, 0x3a6f: 0x000a,\n\t0x3a70: 0x000a, 0x3a71: 0x000a, 0x3a72: 0x000a, 0x3a73: 0x000a, 0x3a74: 0x000a, 0x3a75: 0x000a,\n\t0x3a76: 0x000a, 0x3a77: 0x000a, 0x3a78: 0x000a, 0x3a79: 0x000a, 0x3a7a: 0x000a, 0x3a7b: 0x000a,\n\t0x3a7c: 0x000a, 0x3a7d: 0x000a, 0x3a7e: 0x000a, 0x3a7f: 0x000a,\n\t// Block 0xea, offset 0x3a80\n\t0x3a80: 0x000a, 0x3a81: 0x000a, 0x3a82: 0x000a, 0x3a83: 0x000a, 0x3a84: 0x000a, 0x3a85: 0x000a,\n\t0x3a86: 0x000a, 0x3a87: 0x000a, 0x3a88: 0x000a, 0x3a89: 0x000a, 0x3a8a: 0x000a,\n\t0x3a8d: 0x000a, 0x3a8e: 0x000a, 0x3a8f: 0x000a, 0x3a90: 0x000a, 0x3a91: 0x000a,\n\t0x3a92: 0x000a, 0x3a93: 0x000a, 0x3a94: 0x000a, 0x3a95: 0x000a, 0x3a96: 0x000a, 0x3a97: 0x000a,\n\t0x3a98: 0x000a, 0x3a99: 0x000a, 0x3a9a: 0x000a, 0x3a9b: 0x000a, 0x3a9c: 0x000a, 0x3a9d: 0x000a,\n\t0x3a9e: 0x000a, 0x3a9f: 0x000a, 0x3aa0: 0x000a, 0x3aa1: 0x000a, 0x3aa2: 0x000a, 0x3aa3: 0x000a,\n\t0x3aa4: 0x000a, 0x3aa5: 0x000a, 0x3aa6: 0x000a, 0x3aa7: 0x000a, 0x3aa8: 0x000a, 0x3aa9: 0x000a,\n\t0x3aaa: 0x000a, 0x3aab: 0x000a, 0x3aac: 0x000a, 0x3aad: 0x000a, 0x3aae: 0x000a, 0x3aaf: 0x000a,\n\t0x3ab0: 0x000a, 0x3ab1: 0x000a, 0x3ab2: 0x000a, 0x3ab3: 0x000a, 0x3ab4: 0x000a, 0x3ab5: 0x000a,\n\t0x3ab6: 0x000a, 0x3ab7: 0x000a, 0x3ab8: 0x000a, 0x3ab9: 0x000a, 0x3aba: 0x000a, 0x3abb: 0x000a,\n\t0x3abc: 0x000a, 0x3abd: 0x000a, 0x3abe: 0x000a, 0x3abf: 0x000a,\n\t// Block 0xeb, offset 0x3ac0\n\t0x3ac0: 0x000a, 0x3ac1: 0x000a, 0x3ac2: 0x000a, 0x3ac3: 0x000a, 0x3ac4: 0x000a, 0x3ac5: 0x000a,\n\t0x3ac6: 0x000a, 0x3ac7: 0x000a, 0x3ac8: 0x000a, 0x3ac9: 0x000a, 0x3aca: 0x000a, 0x3acb: 0x000a,\n\t0x3acc: 0x000a, 0x3acd: 0x000a, 0x3ace: 0x000a, 0x3acf: 0x000a, 0x3ad0: 0x000a, 0x3ad1: 0x000a,\n\t0x3ad2: 0x000a, 0x3ad3: 0x000a,\n\t0x3ae0: 0x000a, 0x3ae1: 0x000a, 0x3ae2: 0x000a, 0x3ae3: 0x000a,\n\t0x3ae4: 0x000a, 0x3ae5: 0x000a, 0x3ae6: 0x000a, 0x3ae7: 0x000a, 0x3ae8: 0x000a, 0x3ae9: 0x000a,\n\t0x3aea: 0x000a, 0x3aeb: 0x000a, 0x3aec: 0x000a, 0x3aed: 0x000a,\n\t0x3af0: 0x000a, 0x3af1: 0x000a, 0x3af2: 0x000a, 0x3af3: 0x000a,\n\t0x3af8: 0x000a, 0x3af9: 0x000a, 0x3afa: 0x000a,\n\t// Block 0xec, offset 0x3b00\n\t0x3b00: 0x000a, 0x3b01: 0x000a, 0x3b02: 0x000a,\n\t0x3b10: 0x000a, 0x3b11: 0x000a,\n\t0x3b12: 0x000a, 0x3b13: 0x000a, 0x3b14: 0x000a, 0x3b15: 0x000a,\n\t// Block 0xed, offset 0x3b40\n\t0x3b7e: 0x000b, 0x3b7f: 0x000b,\n\t// Block 0xee, offset 0x3b80\n\t0x3b80: 0x000b, 0x3b81: 0x000b, 0x3b82: 0x000b, 0x3b83: 0x000b, 0x3b84: 0x000b, 0x3b85: 0x000b,\n\t0x3b86: 0x000b, 0x3b87: 0x000b, 0x3b88: 0x000b, 0x3b89: 0x000b, 0x3b8a: 0x000b, 0x3b8b: 0x000b,\n\t0x3b8c: 0x000b, 0x3b8d: 0x000b, 0x3b8e: 0x000b, 0x3b8f: 0x000b, 0x3b90: 0x000b, 0x3b91: 0x000b,\n\t0x3b92: 0x000b, 0x3b93: 0x000b, 0x3b94: 0x000b, 0x3b95: 0x000b, 0x3b96: 0x000b, 0x3b97: 0x000b,\n\t0x3b98: 0x000b, 0x3b99: 0x000b, 0x3b9a: 0x000b, 0x3b9b: 0x000b, 0x3b9c: 0x000b, 0x3b9d: 0x000b,\n\t0x3b9e: 0x000b, 0x3b9f: 0x000b, 0x3ba0: 0x000b, 0x3ba1: 0x000b, 0x3ba2: 0x000b, 0x3ba3: 0x000b,\n\t0x3ba4: 0x000b, 0x3ba5: 0x000b, 0x3ba6: 0x000b, 0x3ba7: 0x000b, 0x3ba8: 0x000b, 0x3ba9: 0x000b,\n\t0x3baa: 0x000b, 0x3bab: 0x000b, 0x3bac: 0x000b, 0x3bad: 0x000b, 0x3bae: 0x000b, 0x3baf: 0x000b,\n\t0x3bb0: 0x000b, 0x3bb1: 0x000b, 0x3bb2: 0x000b, 0x3bb3: 0x000b, 0x3bb4: 0x000b, 0x3bb5: 0x000b,\n\t0x3bb6: 0x000b, 0x3bb7: 0x000b, 0x3bb8: 0x000b, 0x3bb9: 0x000b, 0x3bba: 0x000b, 0x3bbb: 0x000b,\n\t0x3bbc: 0x000b, 0x3bbd: 0x000b, 0x3bbe: 0x000b, 0x3bbf: 0x000b,\n\t// Block 0xef, offset 0x3bc0\n\t0x3bc0: 0x000c, 0x3bc1: 0x000c, 0x3bc2: 0x000c, 0x3bc3: 0x000c, 0x3bc4: 0x000c, 0x3bc5: 0x000c,\n\t0x3bc6: 0x000c, 0x3bc7: 0x000c, 0x3bc8: 0x000c, 0x3bc9: 0x000c, 0x3bca: 0x000c, 0x3bcb: 0x000c,\n\t0x3bcc: 0x000c, 0x3bcd: 0x000c, 0x3bce: 0x000c, 0x3bcf: 0x000c, 0x3bd0: 0x000c, 0x3bd1: 0x000c,\n\t0x3bd2: 0x000c, 0x3bd3: 0x000c, 0x3bd4: 0x000c, 0x3bd5: 0x000c, 0x3bd6: 0x000c, 0x3bd7: 0x000c,\n\t0x3bd8: 0x000c, 0x3bd9: 0x000c, 0x3bda: 0x000c, 0x3bdb: 0x000c, 0x3bdc: 0x000c, 0x3bdd: 0x000c,\n\t0x3bde: 0x000c, 0x3bdf: 0x000c, 0x3be0: 0x000c, 0x3be1: 0x000c, 0x3be2: 0x000c, 0x3be3: 0x000c,\n\t0x3be4: 0x000c, 0x3be5: 0x000c, 0x3be6: 0x000c, 0x3be7: 0x000c, 0x3be8: 0x000c, 0x3be9: 0x000c,\n\t0x3bea: 0x000c, 0x3beb: 0x000c, 0x3bec: 0x000c, 0x3bed: 0x000c, 0x3bee: 0x000c, 0x3bef: 0x000c,\n\t0x3bf0: 0x000b, 0x3bf1: 0x000b, 0x3bf2: 0x000b, 0x3bf3: 0x000b, 0x3bf4: 0x000b, 0x3bf5: 0x000b,\n\t0x3bf6: 0x000b, 0x3bf7: 0x000b, 0x3bf8: 0x000b, 0x3bf9: 0x000b, 0x3bfa: 0x000b, 0x3bfb: 0x000b,\n\t0x3bfc: 0x000b, 0x3bfd: 0x000b, 0x3bfe: 0x000b, 0x3bff: 0x000b,\n}\n\n// bidiIndex: 24 blocks, 1536 entries, 1536 bytes\n// Block 0 is the zero block.\nvar bidiIndex = [1536]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x02,\n\t0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08,\n\t0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b,\n\t0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06,\n\t0xea: 0x07, 0xef: 0x08,\n\t0xf0: 0x11, 0xf1: 0x12, 0xf2: 0x12, 0xf3: 0x14, 0xf4: 0x15,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b,\n\t0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22,\n\t0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x137: 0x28,\n\t0x138: 0x29, 0x139: 0x2a, 0x13a: 0x2b, 0x13b: 0x2c, 0x13c: 0x2d, 0x13d: 0x2e, 0x13e: 0x2f, 0x13f: 0x30,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x31, 0x141: 0x32, 0x142: 0x33,\n\t0x14d: 0x34, 0x14e: 0x35,\n\t0x150: 0x36,\n\t0x15a: 0x37, 0x15c: 0x38, 0x15d: 0x39, 0x15e: 0x3a, 0x15f: 0x3b,\n\t0x160: 0x3c, 0x162: 0x3d, 0x164: 0x3e, 0x165: 0x3f, 0x167: 0x40,\n\t0x168: 0x41, 0x169: 0x42, 0x16a: 0x43, 0x16c: 0x44, 0x16d: 0x45, 0x16e: 0x46, 0x16f: 0x47,\n\t0x170: 0x48, 0x173: 0x49, 0x177: 0x4a,\n\t0x17e: 0x4b, 0x17f: 0x4c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x4d, 0x181: 0x4e, 0x182: 0x4f, 0x183: 0x50, 0x184: 0x51, 0x185: 0x52, 0x186: 0x53, 0x187: 0x54,\n\t0x188: 0x55, 0x189: 0x54, 0x18a: 0x54, 0x18b: 0x54, 0x18c: 0x56, 0x18d: 0x57, 0x18e: 0x58, 0x18f: 0x54,\n\t0x190: 0x59, 0x191: 0x5a, 0x192: 0x5b, 0x193: 0x5c, 0x194: 0x54, 0x195: 0x54, 0x196: 0x54, 0x197: 0x54,\n\t0x198: 0x54, 0x199: 0x54, 0x19a: 0x5d, 0x19b: 0x54, 0x19c: 0x54, 0x19d: 0x5e, 0x19e: 0x54, 0x19f: 0x5f,\n\t0x1a4: 0x54, 0x1a5: 0x54, 0x1a6: 0x60, 0x1a7: 0x61,\n\t0x1a8: 0x54, 0x1a9: 0x54, 0x1aa: 0x54, 0x1ab: 0x54, 0x1ac: 0x54, 0x1ad: 0x62, 0x1ae: 0x63, 0x1af: 0x54,\n\t0x1b3: 0x64, 0x1b5: 0x65, 0x1b7: 0x66,\n\t0x1b8: 0x67, 0x1b9: 0x68, 0x1ba: 0x69, 0x1bb: 0x6a, 0x1bc: 0x54, 0x1bd: 0x54, 0x1be: 0x54, 0x1bf: 0x6b,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x6c, 0x1c2: 0x6d, 0x1c3: 0x6e, 0x1c7: 0x6f,\n\t0x1c8: 0x70, 0x1c9: 0x71, 0x1ca: 0x72, 0x1cb: 0x73, 0x1cd: 0x74, 0x1cf: 0x75,\n\t// Block 0x8, offset 0x200\n\t0x237: 0x54,\n\t// Block 0x9, offset 0x240\n\t0x252: 0x76, 0x253: 0x77,\n\t0x258: 0x78, 0x259: 0x79, 0x25a: 0x7a, 0x25b: 0x7b, 0x25c: 0x7c, 0x25e: 0x7d,\n\t0x260: 0x7e, 0x261: 0x7f, 0x263: 0x80, 0x264: 0x81, 0x265: 0x82, 0x266: 0x83, 0x267: 0x84,\n\t0x268: 0x85, 0x269: 0x86, 0x26a: 0x87, 0x26b: 0x88, 0x26f: 0x89,\n\t// Block 0xa, offset 0x280\n\t0x2ac: 0x8a, 0x2ad: 0x8b, 0x2ae: 0x0e, 0x2af: 0x0e,\n\t0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8c, 0x2b5: 0x0e, 0x2b6: 0x0e, 0x2b7: 0x8d,\n\t0x2b8: 0x8e, 0x2b9: 0x8f, 0x2ba: 0x0e, 0x2bb: 0x90, 0x2bc: 0x91, 0x2bd: 0x92, 0x2bf: 0x93,\n\t// Block 0xb, offset 0x2c0\n\t0x2c4: 0x94, 0x2c5: 0x54, 0x2c6: 0x95, 0x2c7: 0x96,\n\t0x2cb: 0x97, 0x2cd: 0x98,\n\t0x2e0: 0x99, 0x2e1: 0x99, 0x2e2: 0x99, 0x2e3: 0x99, 0x2e4: 0x9a, 0x2e5: 0x99, 0x2e6: 0x99, 0x2e7: 0x99,\n\t0x2e8: 0x9b, 0x2e9: 0x99, 0x2ea: 0x99, 0x2eb: 0x9c, 0x2ec: 0x9d, 0x2ed: 0x99, 0x2ee: 0x99, 0x2ef: 0x99,\n\t0x2f0: 0x99, 0x2f1: 0x99, 0x2f2: 0x99, 0x2f3: 0x99, 0x2f4: 0x9e, 0x2f5: 0x99, 0x2f6: 0x99, 0x2f7: 0x99,\n\t0x2f8: 0x99, 0x2f9: 0x9f, 0x2fa: 0x99, 0x2fb: 0x99, 0x2fc: 0xa0, 0x2fd: 0xa1, 0x2fe: 0x99, 0x2ff: 0x99,\n\t// Block 0xc, offset 0x300\n\t0x300: 0xa2, 0x301: 0xa3, 0x302: 0xa4, 0x304: 0xa5, 0x305: 0xa6, 0x306: 0xa7, 0x307: 0xa8,\n\t0x308: 0xa9, 0x30b: 0xaa, 0x30c: 0x26, 0x30d: 0xab,\n\t0x310: 0xac, 0x311: 0xad, 0x312: 0xae, 0x313: 0xaf, 0x316: 0xb0, 0x317: 0xb1,\n\t0x318: 0xb2, 0x319: 0xb3, 0x31a: 0xb4, 0x31c: 0xb5,\n\t0x320: 0xb6, 0x327: 0xb7,\n\t0x328: 0xb8, 0x329: 0xb9, 0x32a: 0xba,\n\t0x330: 0xbb, 0x332: 0xbc, 0x334: 0xbd, 0x335: 0xbe, 0x336: 0xbf,\n\t0x33b: 0xc0, 0x33f: 0xc1,\n\t// Block 0xd, offset 0x340\n\t0x36b: 0xc2, 0x36c: 0xc3,\n\t0x37d: 0xc4, 0x37e: 0xc5, 0x37f: 0xc6,\n\t// Block 0xe, offset 0x380\n\t0x3b2: 0xc7,\n\t// Block 0xf, offset 0x3c0\n\t0x3c5: 0xc8, 0x3c6: 0xc9,\n\t0x3c8: 0x54, 0x3c9: 0xca, 0x3cc: 0x54, 0x3cd: 0xcb,\n\t0x3db: 0xcc, 0x3dc: 0xcd, 0x3dd: 0xce, 0x3de: 0xcf, 0x3df: 0xd0,\n\t0x3e8: 0xd1, 0x3e9: 0xd2, 0x3ea: 0xd3,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xd4, 0x404: 0xc3,\n\t0x40b: 0xd5,\n\t0x420: 0x99, 0x421: 0x99, 0x422: 0x99, 0x423: 0xd6, 0x424: 0x99, 0x425: 0xd7, 0x426: 0x99, 0x427: 0x99,\n\t0x428: 0x99, 0x429: 0x99, 0x42a: 0x99, 0x42b: 0x99, 0x42c: 0x99, 0x42d: 0x99, 0x42e: 0x99, 0x42f: 0x99,\n\t0x430: 0x99, 0x431: 0xa0, 0x432: 0x0e, 0x433: 0x99, 0x434: 0x0e, 0x435: 0xd8, 0x436: 0x99, 0x437: 0x99,\n\t0x438: 0x0e, 0x439: 0x0e, 0x43a: 0x0e, 0x43b: 0xd9, 0x43c: 0x99, 0x43d: 0x99, 0x43e: 0x99, 0x43f: 0x99,\n\t// Block 0x11, offset 0x440\n\t0x440: 0xda, 0x441: 0x54, 0x442: 0xdb, 0x443: 0xdc, 0x444: 0xdd, 0x445: 0xde,\n\t0x449: 0xdf, 0x44c: 0x54, 0x44d: 0x54, 0x44e: 0x54, 0x44f: 0x54,\n\t0x450: 0x54, 0x451: 0x54, 0x452: 0x54, 0x453: 0x54, 0x454: 0x54, 0x455: 0x54, 0x456: 0x54, 0x457: 0x54,\n\t0x458: 0x54, 0x459: 0x54, 0x45a: 0x54, 0x45b: 0xe0, 0x45c: 0x54, 0x45d: 0x6a, 0x45e: 0x54, 0x45f: 0xe1,\n\t0x460: 0xe2, 0x461: 0xe3, 0x462: 0xe4, 0x464: 0xe5, 0x465: 0xe6, 0x466: 0xe7, 0x467: 0xe8,\n\t0x468: 0x54, 0x469: 0xe9, 0x46a: 0xea,\n\t0x47f: 0xeb,\n\t// Block 0x12, offset 0x480\n\t0x4bf: 0xeb,\n\t// Block 0x13, offset 0x4c0\n\t0x4d0: 0x09, 0x4d1: 0x0a, 0x4d6: 0x0b,\n\t0x4db: 0x0c, 0x4dd: 0x0d, 0x4de: 0x0e, 0x4df: 0x0f,\n\t0x4ef: 0x10,\n\t0x4ff: 0x10,\n\t// Block 0x14, offset 0x500\n\t0x50f: 0x10,\n\t0x51f: 0x10,\n\t0x52f: 0x10,\n\t0x53f: 0x10,\n\t// Block 0x15, offset 0x540\n\t0x540: 0xec, 0x541: 0xec, 0x542: 0xec, 0x543: 0xec, 0x544: 0x05, 0x545: 0x05, 0x546: 0x05, 0x547: 0xed,\n\t0x548: 0xec, 0x549: 0xec, 0x54a: 0xec, 0x54b: 0xec, 0x54c: 0xec, 0x54d: 0xec, 0x54e: 0xec, 0x54f: 0xec,\n\t0x550: 0xec, 0x551: 0xec, 0x552: 0xec, 0x553: 0xec, 0x554: 0xec, 0x555: 0xec, 0x556: 0xec, 0x557: 0xec,\n\t0x558: 0xec, 0x559: 0xec, 0x55a: 0xec, 0x55b: 0xec, 0x55c: 0xec, 0x55d: 0xec, 0x55e: 0xec, 0x55f: 0xec,\n\t0x560: 0xec, 0x561: 0xec, 0x562: 0xec, 0x563: 0xec, 0x564: 0xec, 0x565: 0xec, 0x566: 0xec, 0x567: 0xec,\n\t0x568: 0xec, 0x569: 0xec, 0x56a: 0xec, 0x56b: 0xec, 0x56c: 0xec, 0x56d: 0xec, 0x56e: 0xec, 0x56f: 0xec,\n\t0x570: 0xec, 0x571: 0xec, 0x572: 0xec, 0x573: 0xec, 0x574: 0xec, 0x575: 0xec, 0x576: 0xec, 0x577: 0xec,\n\t0x578: 0xec, 0x579: 0xec, 0x57a: 0xec, 0x57b: 0xec, 0x57c: 0xec, 0x57d: 0xec, 0x57e: 0xec, 0x57f: 0xec,\n\t// Block 0x16, offset 0x580\n\t0x58f: 0x10,\n\t0x59f: 0x10,\n\t0x5a0: 0x13,\n\t0x5af: 0x10,\n\t0x5bf: 0x10,\n\t// Block 0x17, offset 0x5c0\n\t0x5cf: 0x10,\n}\n\n// Total table size 16952 bytes (16KiB); checksum: F50EF68C\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.16 && !go1.21\n\npackage bidi\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"13.0.0\"\n\n// xorMasks contains masks to be xor-ed with brackets to get the reverse\n// version.\nvar xorMasks = []int32{ // 8 elements\n\t0, 1, 6, 7, 3, 15, 29, 63,\n} // Size: 56 bytes\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookup(s []byte) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupUnsafe(s []byte) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookupString(s string) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupStringUnsafe(s string) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// bidiTrie. Total size: 17408 bytes (17.00 KiB). Checksum: df85fcbfe9b8377f.\ntype bidiTrie struct{}\n\nfunc newBidiTrie(i int) *bidiTrie {\n\treturn &bidiTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *bidiTrie) lookupValue(n uint32, b byte) uint8 {\n\tswitch {\n\tdefault:\n\t\treturn uint8(bidiValues[n<<6+uint32(b)])\n\t}\n}\n\n// bidiValues: 248 blocks, 15872 entries, 15872 bytes\n// The third block is the zero block.\nvar bidiValues = [15872]uint8{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b,\n\t0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008,\n\t0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b,\n\t0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b,\n\t0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007,\n\t0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004,\n\t0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a,\n\t0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006,\n\t0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002,\n\t0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a,\n\t0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x000a,\n\t0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a,\n\t0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a,\n\t0x7b: 0x005a,\n\t0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007,\n\t0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b,\n\t0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b,\n\t0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b,\n\t0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b,\n\t0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004,\n\t0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a,\n\t0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a,\n\t0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a,\n\t0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a,\n\t0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a,\n\t// Block 0x4, offset 0x100\n\t0x117: 0x000a,\n\t0x137: 0x000a,\n\t// Block 0x5, offset 0x140\n\t0x179: 0x000a, 0x17a: 0x000a,\n\t// Block 0x6, offset 0x180\n\t0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a,\n\t0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a,\n\t0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a,\n\t0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a,\n\t0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a,\n\t0x19e: 0x000a, 0x19f: 0x000a,\n\t0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a,\n\t0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a,\n\t0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a,\n\t0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a,\n\t0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c,\n\t0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c,\n\t0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c,\n\t0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c,\n\t0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c,\n\t0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c,\n\t0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c,\n\t0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c,\n\t0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c,\n\t0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c,\n\t0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c,\n\t0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c,\n\t0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c,\n\t0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c,\n\t0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c,\n\t0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c,\n\t0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c,\n\t0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c,\n\t0x234: 0x000a, 0x235: 0x000a,\n\t0x23e: 0x000a,\n\t// Block 0x9, offset 0x240\n\t0x244: 0x000a, 0x245: 0x000a,\n\t0x247: 0x000a,\n\t// Block 0xa, offset 0x280\n\t0x2b6: 0x000a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c,\n\t0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c,\n\t// Block 0xc, offset 0x300\n\t0x30a: 0x000a,\n\t0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c,\n\t0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c,\n\t0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c,\n\t0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c,\n\t0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c,\n\t0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c,\n\t0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c,\n\t0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c,\n\t0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c,\n\t0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001,\n\t0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001,\n\t0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001,\n\t0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001,\n\t0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001,\n\t0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001,\n\t0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001,\n\t0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001,\n\t0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001,\n\t0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001,\n\t// Block 0xe, offset 0x380\n\t0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005,\n\t0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d,\n\t0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c,\n\t0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c,\n\t0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d,\n\t0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d,\n\t0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d,\n\t0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d,\n\t0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d,\n\t0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d,\n\t0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d,\n\t0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c,\n\t0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c,\n\t0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c,\n\t0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c,\n\t0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005,\n\t0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005,\n\t0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d,\n\t0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d,\n\t0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d,\n\t0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d,\n\t0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d,\n\t0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d,\n\t0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d,\n\t0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d,\n\t0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d,\n\t0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d,\n\t0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d,\n\t0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d,\n\t0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d,\n\t0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d,\n\t0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d,\n\t0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d,\n\t0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c,\n\t0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005,\n\t0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c,\n\t0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a,\n\t0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d,\n\t0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002,\n\t0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d,\n\t0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d,\n\t0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d,\n\t0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c,\n\t0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d,\n\t0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d,\n\t0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d,\n\t0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d,\n\t0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d,\n\t0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c,\n\t0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c,\n\t0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c,\n\t0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d,\n\t0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d,\n\t0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d,\n\t0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d,\n\t0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d,\n\t0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d,\n\t0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d,\n\t0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d,\n\t0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d,\n\t0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d,\n\t0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d,\n\t0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d,\n\t0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d,\n\t0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d,\n\t0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d,\n\t0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c,\n\t0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c,\n\t0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d,\n\t0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d,\n\t0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001,\n\t0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001,\n\t0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001,\n\t0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001,\n\t0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001,\n\t0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001,\n\t0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001,\n\t0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c,\n\t0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001,\n\t0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001,\n\t0x57c: 0x0001, 0x57d: 0x000c, 0x57e: 0x0001, 0x57f: 0x0001,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001,\n\t0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001,\n\t0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001,\n\t0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c,\n\t0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c,\n\t0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c,\n\t0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c,\n\t0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001,\n\t0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001,\n\t0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001,\n\t0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001,\n\t0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001,\n\t0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001,\n\t0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001,\n\t0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001,\n\t0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x000d, 0x5e1: 0x000d, 0x5e2: 0x000d, 0x5e3: 0x000d,\n\t0x5e4: 0x000d, 0x5e5: 0x000d, 0x5e6: 0x000d, 0x5e7: 0x000d, 0x5e8: 0x000d, 0x5e9: 0x000d,\n\t0x5ea: 0x000d, 0x5eb: 0x000d, 0x5ec: 0x000d, 0x5ed: 0x000d, 0x5ee: 0x000d, 0x5ef: 0x000d,\n\t0x5f0: 0x0001, 0x5f1: 0x0001, 0x5f2: 0x0001, 0x5f3: 0x0001, 0x5f4: 0x0001, 0x5f5: 0x0001,\n\t0x5f6: 0x0001, 0x5f7: 0x0001, 0x5f8: 0x0001, 0x5f9: 0x0001, 0x5fa: 0x0001, 0x5fb: 0x0001,\n\t0x5fc: 0x0001, 0x5fd: 0x0001, 0x5fe: 0x0001, 0x5ff: 0x0001,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x0001, 0x601: 0x0001, 0x602: 0x0001, 0x603: 0x0001, 0x604: 0x0001, 0x605: 0x0001,\n\t0x606: 0x0001, 0x607: 0x0001, 0x608: 0x0001, 0x609: 0x0001, 0x60a: 0x0001, 0x60b: 0x0001,\n\t0x60c: 0x0001, 0x60d: 0x0001, 0x60e: 0x0001, 0x60f: 0x0001, 0x610: 0x0001, 0x611: 0x0001,\n\t0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001,\n\t0x618: 0x0001, 0x619: 0x0001, 0x61a: 0x0001, 0x61b: 0x0001, 0x61c: 0x0001, 0x61d: 0x0001,\n\t0x61e: 0x0001, 0x61f: 0x0001, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d,\n\t0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d,\n\t0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d,\n\t0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d,\n\t0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d,\n\t0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d,\n\t0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000d, 0x64b: 0x000d,\n\t0x64c: 0x000d, 0x64d: 0x000d, 0x64e: 0x000d, 0x64f: 0x000d, 0x650: 0x000d, 0x651: 0x000d,\n\t0x652: 0x000d, 0x653: 0x000c, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c,\n\t0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c,\n\t0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c,\n\t0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c,\n\t0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c,\n\t0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c,\n\t0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c,\n\t0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c,\n\t0x6ba: 0x000c,\n\t0x6bc: 0x000c,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c,\n\t0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c,\n\t0x6cd: 0x000c, 0x6d1: 0x000c,\n\t0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c,\n\t0x6e2: 0x000c, 0x6e3: 0x000c,\n\t// Block 0x1c, offset 0x700\n\t0x701: 0x000c,\n\t0x73c: 0x000c,\n\t// Block 0x1d, offset 0x740\n\t0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c,\n\t0x74d: 0x000c,\n\t0x762: 0x000c, 0x763: 0x000c,\n\t0x772: 0x0004, 0x773: 0x0004,\n\t0x77b: 0x0004,\n\t0x77e: 0x000c,\n\t// Block 0x1e, offset 0x780\n\t0x781: 0x000c, 0x782: 0x000c,\n\t0x7bc: 0x000c,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x000c, 0x7c2: 0x000c,\n\t0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c,\n\t0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c,\n\t0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c,\n\t// Block 0x20, offset 0x800\n\t0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c,\n\t0x807: 0x000c, 0x808: 0x000c,\n\t0x80d: 0x000c,\n\t0x822: 0x000c, 0x823: 0x000c,\n\t0x831: 0x0004,\n\t0x83a: 0x000c, 0x83b: 0x000c,\n\t0x83c: 0x000c, 0x83d: 0x000c, 0x83e: 0x000c, 0x83f: 0x000c,\n\t// Block 0x21, offset 0x840\n\t0x841: 0x000c,\n\t0x87c: 0x000c, 0x87f: 0x000c,\n\t// Block 0x22, offset 0x880\n\t0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c,\n\t0x88d: 0x000c,\n\t0x895: 0x000c, 0x896: 0x000c,\n\t0x8a2: 0x000c, 0x8a3: 0x000c,\n\t// Block 0x23, offset 0x8c0\n\t0x8c2: 0x000c,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x000c,\n\t0x90d: 0x000c,\n\t0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a,\n\t0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x000c, 0x944: 0x000c,\n\t0x97e: 0x000c, 0x97f: 0x000c,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x000c,\n\t0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c,\n\t0x98c: 0x000c, 0x98d: 0x000c,\n\t0x995: 0x000c, 0x996: 0x000c,\n\t0x9a2: 0x000c, 0x9a3: 0x000c,\n\t0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a,\n\t0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a,\n\t// Block 0x27, offset 0x9c0\n\t0x9cc: 0x000c, 0x9cd: 0x000c,\n\t0x9e2: 0x000c, 0x9e3: 0x000c,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x000c, 0xa01: 0x000c,\n\t0xa3b: 0x000c,\n\t0xa3c: 0x000c,\n\t// Block 0x29, offset 0xa40\n\t0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c,\n\t0xa4d: 0x000c,\n\t0xa62: 0x000c, 0xa63: 0x000c,\n\t// Block 0x2a, offset 0xa80\n\t0xa81: 0x000c,\n\t// Block 0x2b, offset 0xac0\n\t0xaca: 0x000c,\n\t0xad2: 0x000c, 0xad3: 0x000c, 0xad4: 0x000c, 0xad6: 0x000c,\n\t// Block 0x2c, offset 0xb00\n\t0xb31: 0x000c, 0xb34: 0x000c, 0xb35: 0x000c,\n\t0xb36: 0x000c, 0xb37: 0x000c, 0xb38: 0x000c, 0xb39: 0x000c, 0xb3a: 0x000c,\n\t0xb3f: 0x0004,\n\t// Block 0x2d, offset 0xb40\n\t0xb47: 0x000c, 0xb48: 0x000c, 0xb49: 0x000c, 0xb4a: 0x000c, 0xb4b: 0x000c,\n\t0xb4c: 0x000c, 0xb4d: 0x000c, 0xb4e: 0x000c,\n\t// Block 0x2e, offset 0xb80\n\t0xbb1: 0x000c, 0xbb4: 0x000c, 0xbb5: 0x000c,\n\t0xbb6: 0x000c, 0xbb7: 0x000c, 0xbb8: 0x000c, 0xbb9: 0x000c, 0xbba: 0x000c, 0xbbb: 0x000c,\n\t0xbbc: 0x000c,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc8: 0x000c, 0xbc9: 0x000c, 0xbca: 0x000c, 0xbcb: 0x000c,\n\t0xbcc: 0x000c, 0xbcd: 0x000c,\n\t// Block 0x30, offset 0xc00\n\t0xc18: 0x000c, 0xc19: 0x000c,\n\t0xc35: 0x000c,\n\t0xc37: 0x000c, 0xc39: 0x000c, 0xc3a: 0x003a, 0xc3b: 0x002a,\n\t0xc3c: 0x003a, 0xc3d: 0x002a,\n\t// Block 0x31, offset 0xc40\n\t0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c,\n\t0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c,\n\t0xc7c: 0x000c, 0xc7d: 0x000c, 0xc7e: 0x000c,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x000c, 0xc81: 0x000c, 0xc82: 0x000c, 0xc83: 0x000c, 0xc84: 0x000c,\n\t0xc86: 0x000c, 0xc87: 0x000c,\n\t0xc8d: 0x000c, 0xc8e: 0x000c, 0xc8f: 0x000c, 0xc90: 0x000c, 0xc91: 0x000c,\n\t0xc92: 0x000c, 0xc93: 0x000c, 0xc94: 0x000c, 0xc95: 0x000c, 0xc96: 0x000c, 0xc97: 0x000c,\n\t0xc99: 0x000c, 0xc9a: 0x000c, 0xc9b: 0x000c, 0xc9c: 0x000c, 0xc9d: 0x000c,\n\t0xc9e: 0x000c, 0xc9f: 0x000c, 0xca0: 0x000c, 0xca1: 0x000c, 0xca2: 0x000c, 0xca3: 0x000c,\n\t0xca4: 0x000c, 0xca5: 0x000c, 0xca6: 0x000c, 0xca7: 0x000c, 0xca8: 0x000c, 0xca9: 0x000c,\n\t0xcaa: 0x000c, 0xcab: 0x000c, 0xcac: 0x000c, 0xcad: 0x000c, 0xcae: 0x000c, 0xcaf: 0x000c,\n\t0xcb0: 0x000c, 0xcb1: 0x000c, 0xcb2: 0x000c, 0xcb3: 0x000c, 0xcb4: 0x000c, 0xcb5: 0x000c,\n\t0xcb6: 0x000c, 0xcb7: 0x000c, 0xcb8: 0x000c, 0xcb9: 0x000c, 0xcba: 0x000c, 0xcbb: 0x000c,\n\t0xcbc: 0x000c,\n\t// Block 0x33, offset 0xcc0\n\t0xcc6: 0x000c,\n\t// Block 0x34, offset 0xd00\n\t0xd2d: 0x000c, 0xd2e: 0x000c, 0xd2f: 0x000c,\n\t0xd30: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c, 0xd35: 0x000c,\n\t0xd36: 0x000c, 0xd37: 0x000c, 0xd39: 0x000c, 0xd3a: 0x000c,\n\t0xd3d: 0x000c, 0xd3e: 0x000c,\n\t// Block 0x35, offset 0xd40\n\t0xd58: 0x000c, 0xd59: 0x000c,\n\t0xd5e: 0x000c, 0xd5f: 0x000c, 0xd60: 0x000c,\n\t0xd71: 0x000c, 0xd72: 0x000c, 0xd73: 0x000c, 0xd74: 0x000c,\n\t// Block 0x36, offset 0xd80\n\t0xd82: 0x000c, 0xd85: 0x000c,\n\t0xd86: 0x000c,\n\t0xd8d: 0x000c,\n\t0xd9d: 0x000c,\n\t// Block 0x37, offset 0xdc0\n\t0xddd: 0x000c,\n\t0xdde: 0x000c, 0xddf: 0x000c,\n\t// Block 0x38, offset 0xe00\n\t0xe10: 0x000a, 0xe11: 0x000a,\n\t0xe12: 0x000a, 0xe13: 0x000a, 0xe14: 0x000a, 0xe15: 0x000a, 0xe16: 0x000a, 0xe17: 0x000a,\n\t0xe18: 0x000a, 0xe19: 0x000a,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x000a,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x0009,\n\t0xe9b: 0x007a, 0xe9c: 0x006a,\n\t// Block 0x3b, offset 0xec0\n\t0xed2: 0x000c, 0xed3: 0x000c, 0xed4: 0x000c,\n\t0xef2: 0x000c, 0xef3: 0x000c, 0xef4: 0x000c,\n\t// Block 0x3c, offset 0xf00\n\t0xf12: 0x000c, 0xf13: 0x000c,\n\t0xf32: 0x000c, 0xf33: 0x000c,\n\t// Block 0x3d, offset 0xf40\n\t0xf74: 0x000c, 0xf75: 0x000c,\n\t0xf77: 0x000c, 0xf78: 0x000c, 0xf79: 0x000c, 0xf7a: 0x000c, 0xf7b: 0x000c,\n\t0xf7c: 0x000c, 0xf7d: 0x000c,\n\t// Block 0x3e, offset 0xf80\n\t0xf86: 0x000c, 0xf89: 0x000c, 0xf8a: 0x000c, 0xf8b: 0x000c,\n\t0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000c, 0xf8f: 0x000c, 0xf90: 0x000c, 0xf91: 0x000c,\n\t0xf92: 0x000c, 0xf93: 0x000c,\n\t0xf9b: 0x0004, 0xf9d: 0x000c,\n\t0xfb0: 0x000a, 0xfb1: 0x000a, 0xfb2: 0x000a, 0xfb3: 0x000a, 0xfb4: 0x000a, 0xfb5: 0x000a,\n\t0xfb6: 0x000a, 0xfb7: 0x000a, 0xfb8: 0x000a, 0xfb9: 0x000a,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x000a, 0xfc1: 0x000a, 0xfc2: 0x000a, 0xfc3: 0x000a, 0xfc4: 0x000a, 0xfc5: 0x000a,\n\t0xfc6: 0x000a, 0xfc7: 0x000a, 0xfc8: 0x000a, 0xfc9: 0x000a, 0xfca: 0x000a, 0xfcb: 0x000c,\n\t0xfcc: 0x000c, 0xfcd: 0x000c, 0xfce: 0x000b,\n\t// Block 0x40, offset 0x1000\n\t0x1005: 0x000c,\n\t0x1006: 0x000c,\n\t0x1029: 0x000c,\n\t// Block 0x41, offset 0x1040\n\t0x1060: 0x000c, 0x1061: 0x000c, 0x1062: 0x000c,\n\t0x1067: 0x000c, 0x1068: 0x000c,\n\t0x1072: 0x000c,\n\t0x1079: 0x000c, 0x107a: 0x000c, 0x107b: 0x000c,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x000a, 0x1084: 0x000a, 0x1085: 0x000a,\n\t// Block 0x43, offset 0x10c0\n\t0x10de: 0x000a, 0x10df: 0x000a, 0x10e0: 0x000a, 0x10e1: 0x000a, 0x10e2: 0x000a, 0x10e3: 0x000a,\n\t0x10e4: 0x000a, 0x10e5: 0x000a, 0x10e6: 0x000a, 0x10e7: 0x000a, 0x10e8: 0x000a, 0x10e9: 0x000a,\n\t0x10ea: 0x000a, 0x10eb: 0x000a, 0x10ec: 0x000a, 0x10ed: 0x000a, 0x10ee: 0x000a, 0x10ef: 0x000a,\n\t0x10f0: 0x000a, 0x10f1: 0x000a, 0x10f2: 0x000a, 0x10f3: 0x000a, 0x10f4: 0x000a, 0x10f5: 0x000a,\n\t0x10f6: 0x000a, 0x10f7: 0x000a, 0x10f8: 0x000a, 0x10f9: 0x000a, 0x10fa: 0x000a, 0x10fb: 0x000a,\n\t0x10fc: 0x000a, 0x10fd: 0x000a, 0x10fe: 0x000a, 0x10ff: 0x000a,\n\t// Block 0x44, offset 0x1100\n\t0x1117: 0x000c,\n\t0x1118: 0x000c, 0x111b: 0x000c,\n\t// Block 0x45, offset 0x1140\n\t0x1156: 0x000c,\n\t0x1158: 0x000c, 0x1159: 0x000c, 0x115a: 0x000c, 0x115b: 0x000c, 0x115c: 0x000c, 0x115d: 0x000c,\n\t0x115e: 0x000c, 0x1160: 0x000c, 0x1162: 0x000c,\n\t0x1165: 0x000c, 0x1166: 0x000c, 0x1167: 0x000c, 0x1168: 0x000c, 0x1169: 0x000c,\n\t0x116a: 0x000c, 0x116b: 0x000c, 0x116c: 0x000c,\n\t0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c,\n\t0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c,\n\t0x117c: 0x000c, 0x117f: 0x000c,\n\t// Block 0x46, offset 0x1180\n\t0x11b0: 0x000c, 0x11b1: 0x000c, 0x11b2: 0x000c, 0x11b3: 0x000c, 0x11b4: 0x000c, 0x11b5: 0x000c,\n\t0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c, 0x11bb: 0x000c,\n\t0x11bc: 0x000c, 0x11bd: 0x000c, 0x11be: 0x000c, 0x11bf: 0x000c,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0x000c,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x000c, 0x1201: 0x000c, 0x1202: 0x000c, 0x1203: 0x000c,\n\t0x1234: 0x000c,\n\t0x1236: 0x000c, 0x1237: 0x000c, 0x1238: 0x000c, 0x1239: 0x000c, 0x123a: 0x000c,\n\t0x123c: 0x000c,\n\t// Block 0x49, offset 0x1240\n\t0x1242: 0x000c,\n\t0x126b: 0x000c, 0x126c: 0x000c, 0x126d: 0x000c, 0x126e: 0x000c, 0x126f: 0x000c,\n\t0x1270: 0x000c, 0x1271: 0x000c, 0x1272: 0x000c, 0x1273: 0x000c,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x000c, 0x1281: 0x000c,\n\t0x12a2: 0x000c, 0x12a3: 0x000c,\n\t0x12a4: 0x000c, 0x12a5: 0x000c, 0x12a8: 0x000c, 0x12a9: 0x000c,\n\t0x12ab: 0x000c, 0x12ac: 0x000c, 0x12ad: 0x000c,\n\t// Block 0x4b, offset 0x12c0\n\t0x12e6: 0x000c, 0x12e8: 0x000c, 0x12e9: 0x000c,\n\t0x12ed: 0x000c, 0x12ef: 0x000c,\n\t0x12f0: 0x000c, 0x12f1: 0x000c,\n\t// Block 0x4c, offset 0x1300\n\t0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c,\n\t0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c,\n\t0x1336: 0x000c, 0x1337: 0x000c,\n\t// Block 0x4d, offset 0x1340\n\t0x1350: 0x000c, 0x1351: 0x000c,\n\t0x1352: 0x000c, 0x1354: 0x000c, 0x1355: 0x000c, 0x1356: 0x000c, 0x1357: 0x000c,\n\t0x1358: 0x000c, 0x1359: 0x000c, 0x135a: 0x000c, 0x135b: 0x000c, 0x135c: 0x000c, 0x135d: 0x000c,\n\t0x135e: 0x000c, 0x135f: 0x000c, 0x1360: 0x000c, 0x1362: 0x000c, 0x1363: 0x000c,\n\t0x1364: 0x000c, 0x1365: 0x000c, 0x1366: 0x000c, 0x1367: 0x000c, 0x1368: 0x000c,\n\t0x136d: 0x000c,\n\t0x1374: 0x000c,\n\t0x1378: 0x000c, 0x1379: 0x000c,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x000c, 0x1381: 0x000c, 0x1382: 0x000c, 0x1383: 0x000c, 0x1384: 0x000c, 0x1385: 0x000c,\n\t0x1386: 0x000c, 0x1387: 0x000c, 0x1388: 0x000c, 0x1389: 0x000c, 0x138a: 0x000c, 0x138b: 0x000c,\n\t0x138c: 0x000c, 0x138d: 0x000c, 0x138e: 0x000c, 0x138f: 0x000c, 0x1390: 0x000c, 0x1391: 0x000c,\n\t0x1392: 0x000c, 0x1393: 0x000c, 0x1394: 0x000c, 0x1395: 0x000c, 0x1396: 0x000c, 0x1397: 0x000c,\n\t0x1398: 0x000c, 0x1399: 0x000c, 0x139a: 0x000c, 0x139b: 0x000c, 0x139c: 0x000c, 0x139d: 0x000c,\n\t0x139e: 0x000c, 0x139f: 0x000c, 0x13a0: 0x000c, 0x13a1: 0x000c, 0x13a2: 0x000c, 0x13a3: 0x000c,\n\t0x13a4: 0x000c, 0x13a5: 0x000c, 0x13a6: 0x000c, 0x13a7: 0x000c, 0x13a8: 0x000c, 0x13a9: 0x000c,\n\t0x13aa: 0x000c, 0x13ab: 0x000c, 0x13ac: 0x000c, 0x13ad: 0x000c, 0x13ae: 0x000c, 0x13af: 0x000c,\n\t0x13b0: 0x000c, 0x13b1: 0x000c, 0x13b2: 0x000c, 0x13b3: 0x000c, 0x13b4: 0x000c, 0x13b5: 0x000c,\n\t0x13b6: 0x000c, 0x13b7: 0x000c, 0x13b8: 0x000c, 0x13b9: 0x000c, 0x13bb: 0x000c,\n\t0x13bc: 0x000c, 0x13bd: 0x000c, 0x13be: 0x000c, 0x13bf: 0x000c,\n\t// Block 0x4f, offset 0x13c0\n\t0x13fd: 0x000a, 0x13ff: 0x000a,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x000a, 0x1401: 0x000a,\n\t0x140d: 0x000a, 0x140e: 0x000a, 0x140f: 0x000a,\n\t0x141d: 0x000a,\n\t0x141e: 0x000a, 0x141f: 0x000a,\n\t0x142d: 0x000a, 0x142e: 0x000a, 0x142f: 0x000a,\n\t0x143d: 0x000a, 0x143e: 0x000a,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x0009, 0x1441: 0x0009, 0x1442: 0x0009, 0x1443: 0x0009, 0x1444: 0x0009, 0x1445: 0x0009,\n\t0x1446: 0x0009, 0x1447: 0x0009, 0x1448: 0x0009, 0x1449: 0x0009, 0x144a: 0x0009, 0x144b: 0x000b,\n\t0x144c: 0x000b, 0x144d: 0x000b, 0x144f: 0x0001, 0x1450: 0x000a, 0x1451: 0x000a,\n\t0x1452: 0x000a, 0x1453: 0x000a, 0x1454: 0x000a, 0x1455: 0x000a, 0x1456: 0x000a, 0x1457: 0x000a,\n\t0x1458: 0x000a, 0x1459: 0x000a, 0x145a: 0x000a, 0x145b: 0x000a, 0x145c: 0x000a, 0x145d: 0x000a,\n\t0x145e: 0x000a, 0x145f: 0x000a, 0x1460: 0x000a, 0x1461: 0x000a, 0x1462: 0x000a, 0x1463: 0x000a,\n\t0x1464: 0x000a, 0x1465: 0x000a, 0x1466: 0x000a, 0x1467: 0x000a, 0x1468: 0x0009, 0x1469: 0x0007,\n\t0x146a: 0x000e, 0x146b: 0x000e, 0x146c: 0x000e, 0x146d: 0x000e, 0x146e: 0x000e, 0x146f: 0x0006,\n\t0x1470: 0x0004, 0x1471: 0x0004, 0x1472: 0x0004, 0x1473: 0x0004, 0x1474: 0x0004, 0x1475: 0x000a,\n\t0x1476: 0x000a, 0x1477: 0x000a, 0x1478: 0x000a, 0x1479: 0x000a, 0x147a: 0x000a, 0x147b: 0x000a,\n\t0x147c: 0x000a, 0x147d: 0x000a, 0x147e: 0x000a, 0x147f: 0x000a,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x000a, 0x1481: 0x000a, 0x1482: 0x000a, 0x1483: 0x000a, 0x1484: 0x0006, 0x1485: 0x009a,\n\t0x1486: 0x008a, 0x1487: 0x000a, 0x1488: 0x000a, 0x1489: 0x000a, 0x148a: 0x000a, 0x148b: 0x000a,\n\t0x148c: 0x000a, 0x148d: 0x000a, 0x148e: 0x000a, 0x148f: 0x000a, 0x1490: 0x000a, 0x1491: 0x000a,\n\t0x1492: 0x000a, 0x1493: 0x000a, 0x1494: 0x000a, 0x1495: 0x000a, 0x1496: 0x000a, 0x1497: 0x000a,\n\t0x1498: 0x000a, 0x1499: 0x000a, 0x149a: 0x000a, 0x149b: 0x000a, 0x149c: 0x000a, 0x149d: 0x000a,\n\t0x149e: 0x000a, 0x149f: 0x0009, 0x14a0: 0x000b, 0x14a1: 0x000b, 0x14a2: 0x000b, 0x14a3: 0x000b,\n\t0x14a4: 0x000b, 0x14a5: 0x000b, 0x14a6: 0x000e, 0x14a7: 0x000e, 0x14a8: 0x000e, 0x14a9: 0x000e,\n\t0x14aa: 0x000b, 0x14ab: 0x000b, 0x14ac: 0x000b, 0x14ad: 0x000b, 0x14ae: 0x000b, 0x14af: 0x000b,\n\t0x14b0: 0x0002, 0x14b4: 0x0002, 0x14b5: 0x0002,\n\t0x14b6: 0x0002, 0x14b7: 0x0002, 0x14b8: 0x0002, 0x14b9: 0x0002, 0x14ba: 0x0003, 0x14bb: 0x0003,\n\t0x14bc: 0x000a, 0x14bd: 0x009a, 0x14be: 0x008a,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x0002, 0x14c1: 0x0002, 0x14c2: 0x0002, 0x14c3: 0x0002, 0x14c4: 0x0002, 0x14c5: 0x0002,\n\t0x14c6: 0x0002, 0x14c7: 0x0002, 0x14c8: 0x0002, 0x14c9: 0x0002, 0x14ca: 0x0003, 0x14cb: 0x0003,\n\t0x14cc: 0x000a, 0x14cd: 0x009a, 0x14ce: 0x008a,\n\t0x14e0: 0x0004, 0x14e1: 0x0004, 0x14e2: 0x0004, 0x14e3: 0x0004,\n\t0x14e4: 0x0004, 0x14e5: 0x0004, 0x14e6: 0x0004, 0x14e7: 0x0004, 0x14e8: 0x0004, 0x14e9: 0x0004,\n\t0x14ea: 0x0004, 0x14eb: 0x0004, 0x14ec: 0x0004, 0x14ed: 0x0004, 0x14ee: 0x0004, 0x14ef: 0x0004,\n\t0x14f0: 0x0004, 0x14f1: 0x0004, 0x14f2: 0x0004, 0x14f3: 0x0004, 0x14f4: 0x0004, 0x14f5: 0x0004,\n\t0x14f6: 0x0004, 0x14f7: 0x0004, 0x14f8: 0x0004, 0x14f9: 0x0004, 0x14fa: 0x0004, 0x14fb: 0x0004,\n\t0x14fc: 0x0004, 0x14fd: 0x0004, 0x14fe: 0x0004, 0x14ff: 0x0004,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x0004, 0x1501: 0x0004, 0x1502: 0x0004, 0x1503: 0x0004, 0x1504: 0x0004, 0x1505: 0x0004,\n\t0x1506: 0x0004, 0x1507: 0x0004, 0x1508: 0x0004, 0x1509: 0x0004, 0x150a: 0x0004, 0x150b: 0x0004,\n\t0x150c: 0x0004, 0x150d: 0x0004, 0x150e: 0x0004, 0x150f: 0x0004, 0x1510: 0x000c, 0x1511: 0x000c,\n\t0x1512: 0x000c, 0x1513: 0x000c, 0x1514: 0x000c, 0x1515: 0x000c, 0x1516: 0x000c, 0x1517: 0x000c,\n\t0x1518: 0x000c, 0x1519: 0x000c, 0x151a: 0x000c, 0x151b: 0x000c, 0x151c: 0x000c, 0x151d: 0x000c,\n\t0x151e: 0x000c, 0x151f: 0x000c, 0x1520: 0x000c, 0x1521: 0x000c, 0x1522: 0x000c, 0x1523: 0x000c,\n\t0x1524: 0x000c, 0x1525: 0x000c, 0x1526: 0x000c, 0x1527: 0x000c, 0x1528: 0x000c, 0x1529: 0x000c,\n\t0x152a: 0x000c, 0x152b: 0x000c, 0x152c: 0x000c, 0x152d: 0x000c, 0x152e: 0x000c, 0x152f: 0x000c,\n\t0x1530: 0x000c,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x000a, 0x1541: 0x000a, 0x1543: 0x000a, 0x1544: 0x000a, 0x1545: 0x000a,\n\t0x1546: 0x000a, 0x1548: 0x000a, 0x1549: 0x000a,\n\t0x1554: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a,\n\t0x1558: 0x000a,\n\t0x155e: 0x000a, 0x155f: 0x000a, 0x1560: 0x000a, 0x1561: 0x000a, 0x1562: 0x000a, 0x1563: 0x000a,\n\t0x1565: 0x000a, 0x1567: 0x000a, 0x1569: 0x000a,\n\t0x156e: 0x0004,\n\t0x157a: 0x000a, 0x157b: 0x000a,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x000a, 0x1581: 0x000a, 0x1582: 0x000a, 0x1583: 0x000a, 0x1584: 0x000a,\n\t0x158a: 0x000a, 0x158b: 0x000a,\n\t0x158c: 0x000a, 0x158d: 0x000a, 0x1590: 0x000a, 0x1591: 0x000a,\n\t0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a,\n\t0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a,\n\t0x159e: 0x000a, 0x159f: 0x000a,\n\t// Block 0x57, offset 0x15c0\n\t0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a,\n\t0x15d0: 0x000a, 0x15d1: 0x000a,\n\t0x15d2: 0x000a, 0x15d3: 0x000a, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a,\n\t0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a,\n\t0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a,\n\t0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a,\n\t0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a,\n\t0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a,\n\t0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a,\n\t0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a,\n\t0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x000a, 0x1609: 0x000a, 0x160a: 0x000a, 0x160b: 0x000a,\n\t0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a,\n\t0x1612: 0x000a, 0x1613: 0x000a, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a,\n\t0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a,\n\t0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a,\n\t0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x000a,\n\t0x162a: 0x000a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a,\n\t0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a,\n\t0x1636: 0x000a, 0x1637: 0x000a, 0x1638: 0x000a, 0x1639: 0x000a, 0x163a: 0x000a, 0x163b: 0x000a,\n\t0x163c: 0x000a, 0x163d: 0x000a, 0x163e: 0x000a, 0x163f: 0x000a,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x000a, 0x1641: 0x000a, 0x1642: 0x000a, 0x1643: 0x000a, 0x1644: 0x000a, 0x1645: 0x000a,\n\t0x1646: 0x000a, 0x1647: 0x000a, 0x1648: 0x000a, 0x1649: 0x000a, 0x164a: 0x000a, 0x164b: 0x000a,\n\t0x164c: 0x000a, 0x164d: 0x000a, 0x164e: 0x000a, 0x164f: 0x000a, 0x1650: 0x000a, 0x1651: 0x000a,\n\t0x1652: 0x0003, 0x1653: 0x0004, 0x1654: 0x000a, 0x1655: 0x000a, 0x1656: 0x000a, 0x1657: 0x000a,\n\t0x1658: 0x000a, 0x1659: 0x000a, 0x165a: 0x000a, 0x165b: 0x000a, 0x165c: 0x000a, 0x165d: 0x000a,\n\t0x165e: 0x000a, 0x165f: 0x000a, 0x1660: 0x000a, 0x1661: 0x000a, 0x1662: 0x000a, 0x1663: 0x000a,\n\t0x1664: 0x000a, 0x1665: 0x000a, 0x1666: 0x000a, 0x1667: 0x000a, 0x1668: 0x000a, 0x1669: 0x000a,\n\t0x166a: 0x000a, 0x166b: 0x000a, 0x166c: 0x000a, 0x166d: 0x000a, 0x166e: 0x000a, 0x166f: 0x000a,\n\t0x1670: 0x000a, 0x1671: 0x000a, 0x1672: 0x000a, 0x1673: 0x000a, 0x1674: 0x000a, 0x1675: 0x000a,\n\t0x1676: 0x000a, 0x1677: 0x000a, 0x1678: 0x000a, 0x1679: 0x000a, 0x167a: 0x000a, 0x167b: 0x000a,\n\t0x167c: 0x000a, 0x167d: 0x000a, 0x167e: 0x000a, 0x167f: 0x000a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x000a, 0x1681: 0x000a, 0x1682: 0x000a, 0x1683: 0x000a, 0x1684: 0x000a, 0x1685: 0x000a,\n\t0x1686: 0x000a, 0x1687: 0x000a, 0x1688: 0x003a, 0x1689: 0x002a, 0x168a: 0x003a, 0x168b: 0x002a,\n\t0x168c: 0x000a, 0x168d: 0x000a, 0x168e: 0x000a, 0x168f: 0x000a, 0x1690: 0x000a, 0x1691: 0x000a,\n\t0x1692: 0x000a, 0x1693: 0x000a, 0x1694: 0x000a, 0x1695: 0x000a, 0x1696: 0x000a, 0x1697: 0x000a,\n\t0x1698: 0x000a, 0x1699: 0x000a, 0x169a: 0x000a, 0x169b: 0x000a, 0x169c: 0x000a, 0x169d: 0x000a,\n\t0x169e: 0x000a, 0x169f: 0x000a, 0x16a0: 0x000a, 0x16a1: 0x000a, 0x16a2: 0x000a, 0x16a3: 0x000a,\n\t0x16a4: 0x000a, 0x16a5: 0x000a, 0x16a6: 0x000a, 0x16a7: 0x000a, 0x16a8: 0x000a, 0x16a9: 0x009a,\n\t0x16aa: 0x008a, 0x16ab: 0x000a, 0x16ac: 0x000a, 0x16ad: 0x000a, 0x16ae: 0x000a, 0x16af: 0x000a,\n\t0x16b0: 0x000a, 0x16b1: 0x000a, 0x16b2: 0x000a, 0x16b3: 0x000a, 0x16b4: 0x000a, 0x16b5: 0x000a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16fb: 0x000a,\n\t0x16fc: 0x000a, 0x16fd: 0x000a, 0x16fe: 0x000a, 0x16ff: 0x000a,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a,\n\t0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a, 0x170b: 0x000a,\n\t0x170c: 0x000a, 0x170d: 0x000a, 0x170e: 0x000a, 0x170f: 0x000a, 0x1710: 0x000a, 0x1711: 0x000a,\n\t0x1712: 0x000a, 0x1713: 0x000a, 0x1714: 0x000a, 0x1716: 0x000a, 0x1717: 0x000a,\n\t0x1718: 0x000a, 0x1719: 0x000a, 0x171a: 0x000a, 0x171b: 0x000a, 0x171c: 0x000a, 0x171d: 0x000a,\n\t0x171e: 0x000a, 0x171f: 0x000a, 0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a,\n\t0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a, 0x1727: 0x000a, 0x1728: 0x000a, 0x1729: 0x000a,\n\t0x172a: 0x000a, 0x172b: 0x000a, 0x172c: 0x000a, 0x172d: 0x000a, 0x172e: 0x000a, 0x172f: 0x000a,\n\t0x1730: 0x000a, 0x1731: 0x000a, 0x1732: 0x000a, 0x1733: 0x000a, 0x1734: 0x000a, 0x1735: 0x000a,\n\t0x1736: 0x000a, 0x1737: 0x000a, 0x1738: 0x000a, 0x1739: 0x000a, 0x173a: 0x000a, 0x173b: 0x000a,\n\t0x173c: 0x000a, 0x173d: 0x000a, 0x173e: 0x000a, 0x173f: 0x000a,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a,\n\t0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x000a, 0x1749: 0x000a, 0x174a: 0x000a, 0x174b: 0x000a,\n\t0x174c: 0x000a, 0x174d: 0x000a, 0x174e: 0x000a, 0x174f: 0x000a, 0x1750: 0x000a, 0x1751: 0x000a,\n\t0x1752: 0x000a, 0x1753: 0x000a, 0x1754: 0x000a, 0x1755: 0x000a, 0x1756: 0x000a, 0x1757: 0x000a,\n\t0x1758: 0x000a, 0x1759: 0x000a, 0x175a: 0x000a, 0x175b: 0x000a, 0x175c: 0x000a, 0x175d: 0x000a,\n\t0x175e: 0x000a, 0x175f: 0x000a, 0x1760: 0x000a, 0x1761: 0x000a, 0x1762: 0x000a, 0x1763: 0x000a,\n\t0x1764: 0x000a, 0x1765: 0x000a, 0x1766: 0x000a,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x000a, 0x1781: 0x000a, 0x1782: 0x000a, 0x1783: 0x000a, 0x1784: 0x000a, 0x1785: 0x000a,\n\t0x1786: 0x000a, 0x1787: 0x000a, 0x1788: 0x000a, 0x1789: 0x000a, 0x178a: 0x000a,\n\t0x17a0: 0x000a, 0x17a1: 0x000a, 0x17a2: 0x000a, 0x17a3: 0x000a,\n\t0x17a4: 0x000a, 0x17a5: 0x000a, 0x17a6: 0x000a, 0x17a7: 0x000a, 0x17a8: 0x000a, 0x17a9: 0x000a,\n\t0x17aa: 0x000a, 0x17ab: 0x000a, 0x17ac: 0x000a, 0x17ad: 0x000a, 0x17ae: 0x000a, 0x17af: 0x000a,\n\t0x17b0: 0x000a, 0x17b1: 0x000a, 0x17b2: 0x000a, 0x17b3: 0x000a, 0x17b4: 0x000a, 0x17b5: 0x000a,\n\t0x17b6: 0x000a, 0x17b7: 0x000a, 0x17b8: 0x000a, 0x17b9: 0x000a, 0x17ba: 0x000a, 0x17bb: 0x000a,\n\t0x17bc: 0x000a, 0x17bd: 0x000a, 0x17be: 0x000a, 0x17bf: 0x000a,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x000a, 0x17c1: 0x000a, 0x17c2: 0x000a, 0x17c3: 0x000a, 0x17c4: 0x000a, 0x17c5: 0x000a,\n\t0x17c6: 0x000a, 0x17c7: 0x000a, 0x17c8: 0x0002, 0x17c9: 0x0002, 0x17ca: 0x0002, 0x17cb: 0x0002,\n\t0x17cc: 0x0002, 0x17cd: 0x0002, 0x17ce: 0x0002, 0x17cf: 0x0002, 0x17d0: 0x0002, 0x17d1: 0x0002,\n\t0x17d2: 0x0002, 0x17d3: 0x0002, 0x17d4: 0x0002, 0x17d5: 0x0002, 0x17d6: 0x0002, 0x17d7: 0x0002,\n\t0x17d8: 0x0002, 0x17d9: 0x0002, 0x17da: 0x0002, 0x17db: 0x0002,\n\t// Block 0x60, offset 0x1800\n\t0x182a: 0x000a, 0x182b: 0x000a, 0x182c: 0x000a, 0x182d: 0x000a, 0x182e: 0x000a, 0x182f: 0x000a,\n\t0x1830: 0x000a, 0x1831: 0x000a, 0x1832: 0x000a, 0x1833: 0x000a, 0x1834: 0x000a, 0x1835: 0x000a,\n\t0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a,\n\t0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x000a,\n\t0x1846: 0x000a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a,\n\t0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a,\n\t0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a,\n\t0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a,\n\t0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a,\n\t0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x000a, 0x1867: 0x000a, 0x1868: 0x000a, 0x1869: 0x000a,\n\t0x186a: 0x000a, 0x186b: 0x000a, 0x186d: 0x000a, 0x186e: 0x000a, 0x186f: 0x000a,\n\t0x1870: 0x000a, 0x1871: 0x000a, 0x1872: 0x000a, 0x1873: 0x000a, 0x1874: 0x000a, 0x1875: 0x000a,\n\t0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a,\n\t0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x000a, 0x1884: 0x000a, 0x1885: 0x000a,\n\t0x1886: 0x000a, 0x1887: 0x000a, 0x1888: 0x000a, 0x1889: 0x000a, 0x188a: 0x000a, 0x188b: 0x000a,\n\t0x188c: 0x000a, 0x188d: 0x000a, 0x188e: 0x000a, 0x188f: 0x000a, 0x1890: 0x000a, 0x1891: 0x000a,\n\t0x1892: 0x000a, 0x1893: 0x000a, 0x1894: 0x000a, 0x1895: 0x000a, 0x1896: 0x000a, 0x1897: 0x000a,\n\t0x1898: 0x000a, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a,\n\t0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a,\n\t0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x000a, 0x18a7: 0x000a, 0x18a8: 0x003a, 0x18a9: 0x002a,\n\t0x18aa: 0x003a, 0x18ab: 0x002a, 0x18ac: 0x003a, 0x18ad: 0x002a, 0x18ae: 0x003a, 0x18af: 0x002a,\n\t0x18b0: 0x003a, 0x18b1: 0x002a, 0x18b2: 0x003a, 0x18b3: 0x002a, 0x18b4: 0x003a, 0x18b5: 0x002a,\n\t0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a,\n\t0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x000a, 0x18c4: 0x000a, 0x18c5: 0x009a,\n\t0x18c6: 0x008a, 0x18c7: 0x000a, 0x18c8: 0x000a, 0x18c9: 0x000a, 0x18ca: 0x000a, 0x18cb: 0x000a,\n\t0x18cc: 0x000a, 0x18cd: 0x000a, 0x18ce: 0x000a, 0x18cf: 0x000a, 0x18d0: 0x000a, 0x18d1: 0x000a,\n\t0x18d2: 0x000a, 0x18d3: 0x000a, 0x18d4: 0x000a, 0x18d5: 0x000a, 0x18d6: 0x000a, 0x18d7: 0x000a,\n\t0x18d8: 0x000a, 0x18d9: 0x000a, 0x18da: 0x000a, 0x18db: 0x000a, 0x18dc: 0x000a, 0x18dd: 0x000a,\n\t0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a,\n\t0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x003a, 0x18e7: 0x002a, 0x18e8: 0x003a, 0x18e9: 0x002a,\n\t0x18ea: 0x003a, 0x18eb: 0x002a, 0x18ec: 0x003a, 0x18ed: 0x002a, 0x18ee: 0x003a, 0x18ef: 0x002a,\n\t0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a,\n\t0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a,\n\t0x18fc: 0x000a, 0x18fd: 0x000a, 0x18fe: 0x000a, 0x18ff: 0x000a,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x007a, 0x1904: 0x006a, 0x1905: 0x009a,\n\t0x1906: 0x008a, 0x1907: 0x00ba, 0x1908: 0x00aa, 0x1909: 0x009a, 0x190a: 0x008a, 0x190b: 0x007a,\n\t0x190c: 0x006a, 0x190d: 0x00da, 0x190e: 0x002a, 0x190f: 0x003a, 0x1910: 0x00ca, 0x1911: 0x009a,\n\t0x1912: 0x008a, 0x1913: 0x007a, 0x1914: 0x006a, 0x1915: 0x009a, 0x1916: 0x008a, 0x1917: 0x00ba,\n\t0x1918: 0x00aa, 0x1919: 0x000a, 0x191a: 0x000a, 0x191b: 0x000a, 0x191c: 0x000a, 0x191d: 0x000a,\n\t0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a,\n\t0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a,\n\t0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a,\n\t0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a, 0x1934: 0x000a, 0x1935: 0x000a,\n\t0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a,\n\t0x193c: 0x000a, 0x193d: 0x000a, 0x193e: 0x000a, 0x193f: 0x000a,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a,\n\t0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a,\n\t0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a,\n\t0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a, 0x1956: 0x000a, 0x1957: 0x000a,\n\t0x1958: 0x003a, 0x1959: 0x002a, 0x195a: 0x003a, 0x195b: 0x002a, 0x195c: 0x000a, 0x195d: 0x000a,\n\t0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a,\n\t0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a,\n\t0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a,\n\t0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a, 0x1974: 0x000a, 0x1975: 0x000a,\n\t0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a,\n\t0x197c: 0x003a, 0x197d: 0x002a, 0x197e: 0x000a, 0x197f: 0x000a,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a,\n\t0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x1989: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a,\n\t0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a,\n\t0x1992: 0x000a, 0x1993: 0x000a, 0x1994: 0x000a, 0x1995: 0x000a, 0x1996: 0x000a, 0x1997: 0x000a,\n\t0x1998: 0x000a, 0x1999: 0x000a, 0x199a: 0x000a, 0x199b: 0x000a, 0x199c: 0x000a, 0x199d: 0x000a,\n\t0x199e: 0x000a, 0x199f: 0x000a, 0x19a0: 0x000a, 0x19a1: 0x000a, 0x19a2: 0x000a, 0x19a3: 0x000a,\n\t0x19a4: 0x000a, 0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a,\n\t0x19aa: 0x000a, 0x19ab: 0x000a, 0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a,\n\t0x19b0: 0x000a, 0x19b1: 0x000a, 0x19b2: 0x000a, 0x19b3: 0x000a,\n\t0x19b6: 0x000a, 0x19b7: 0x000a, 0x19b8: 0x000a, 0x19b9: 0x000a, 0x19ba: 0x000a, 0x19bb: 0x000a,\n\t0x19bc: 0x000a, 0x19bd: 0x000a, 0x19be: 0x000a, 0x19bf: 0x000a,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x000a, 0x19c1: 0x000a, 0x19c2: 0x000a, 0x19c3: 0x000a, 0x19c4: 0x000a, 0x19c5: 0x000a,\n\t0x19c6: 0x000a, 0x19c7: 0x000a, 0x19c8: 0x000a, 0x19c9: 0x000a, 0x19ca: 0x000a, 0x19cb: 0x000a,\n\t0x19cc: 0x000a, 0x19cd: 0x000a, 0x19ce: 0x000a, 0x19cf: 0x000a, 0x19d0: 0x000a, 0x19d1: 0x000a,\n\t0x19d2: 0x000a, 0x19d3: 0x000a, 0x19d4: 0x000a, 0x19d5: 0x000a, 0x19d7: 0x000a,\n\t0x19d8: 0x000a, 0x19d9: 0x000a, 0x19da: 0x000a, 0x19db: 0x000a, 0x19dc: 0x000a, 0x19dd: 0x000a,\n\t0x19de: 0x000a, 0x19df: 0x000a, 0x19e0: 0x000a, 0x19e1: 0x000a, 0x19e2: 0x000a, 0x19e3: 0x000a,\n\t0x19e4: 0x000a, 0x19e5: 0x000a, 0x19e6: 0x000a, 0x19e7: 0x000a, 0x19e8: 0x000a, 0x19e9: 0x000a,\n\t0x19ea: 0x000a, 0x19eb: 0x000a, 0x19ec: 0x000a, 0x19ed: 0x000a, 0x19ee: 0x000a, 0x19ef: 0x000a,\n\t0x19f0: 0x000a, 0x19f1: 0x000a, 0x19f2: 0x000a, 0x19f3: 0x000a, 0x19f4: 0x000a, 0x19f5: 0x000a,\n\t0x19f6: 0x000a, 0x19f7: 0x000a, 0x19f8: 0x000a, 0x19f9: 0x000a, 0x19fa: 0x000a, 0x19fb: 0x000a,\n\t0x19fc: 0x000a, 0x19fd: 0x000a, 0x19fe: 0x000a, 0x19ff: 0x000a,\n\t// Block 0x68, offset 0x1a00\n\t0x1a25: 0x000a, 0x1a26: 0x000a, 0x1a27: 0x000a, 0x1a28: 0x000a, 0x1a29: 0x000a,\n\t0x1a2a: 0x000a, 0x1a2f: 0x000c,\n\t0x1a30: 0x000c, 0x1a31: 0x000c,\n\t0x1a39: 0x000a, 0x1a3a: 0x000a, 0x1a3b: 0x000a,\n\t0x1a3c: 0x000a, 0x1a3d: 0x000a, 0x1a3e: 0x000a, 0x1a3f: 0x000a,\n\t// Block 0x69, offset 0x1a40\n\t0x1a7f: 0x000c,\n\t// Block 0x6a, offset 0x1a80\n\t0x1aa0: 0x000c, 0x1aa1: 0x000c, 0x1aa2: 0x000c, 0x1aa3: 0x000c,\n\t0x1aa4: 0x000c, 0x1aa5: 0x000c, 0x1aa6: 0x000c, 0x1aa7: 0x000c, 0x1aa8: 0x000c, 0x1aa9: 0x000c,\n\t0x1aaa: 0x000c, 0x1aab: 0x000c, 0x1aac: 0x000c, 0x1aad: 0x000c, 0x1aae: 0x000c, 0x1aaf: 0x000c,\n\t0x1ab0: 0x000c, 0x1ab1: 0x000c, 0x1ab2: 0x000c, 0x1ab3: 0x000c, 0x1ab4: 0x000c, 0x1ab5: 0x000c,\n\t0x1ab6: 0x000c, 0x1ab7: 0x000c, 0x1ab8: 0x000c, 0x1ab9: 0x000c, 0x1aba: 0x000c, 0x1abb: 0x000c,\n\t0x1abc: 0x000c, 0x1abd: 0x000c, 0x1abe: 0x000c, 0x1abf: 0x000c,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a,\n\t0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a,\n\t0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a, 0x1acf: 0x000a, 0x1ad0: 0x000a, 0x1ad1: 0x000a,\n\t0x1ad2: 0x000a, 0x1ad3: 0x000a, 0x1ad4: 0x000a, 0x1ad5: 0x000a, 0x1ad6: 0x000a, 0x1ad7: 0x000a,\n\t0x1ad8: 0x000a, 0x1ad9: 0x000a, 0x1ada: 0x000a, 0x1adb: 0x000a, 0x1adc: 0x000a, 0x1add: 0x000a,\n\t0x1ade: 0x000a, 0x1adf: 0x000a, 0x1ae0: 0x000a, 0x1ae1: 0x000a, 0x1ae2: 0x003a, 0x1ae3: 0x002a,\n\t0x1ae4: 0x003a, 0x1ae5: 0x002a, 0x1ae6: 0x003a, 0x1ae7: 0x002a, 0x1ae8: 0x003a, 0x1ae9: 0x002a,\n\t0x1aea: 0x000a, 0x1aeb: 0x000a, 0x1aec: 0x000a, 0x1aed: 0x000a, 0x1aee: 0x000a, 0x1aef: 0x000a,\n\t0x1af0: 0x000a, 0x1af1: 0x000a, 0x1af2: 0x000a, 0x1af3: 0x000a, 0x1af4: 0x000a, 0x1af5: 0x000a,\n\t0x1af6: 0x000a, 0x1af7: 0x000a, 0x1af8: 0x000a, 0x1af9: 0x000a, 0x1afa: 0x000a, 0x1afb: 0x000a,\n\t0x1afc: 0x000a, 0x1afd: 0x000a, 0x1afe: 0x000a, 0x1aff: 0x000a,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, 0x1b05: 0x000a,\n\t0x1b06: 0x000a, 0x1b07: 0x000a, 0x1b08: 0x000a, 0x1b09: 0x000a, 0x1b0a: 0x000a, 0x1b0b: 0x000a,\n\t0x1b0c: 0x000a, 0x1b0d: 0x000a, 0x1b0e: 0x000a, 0x1b0f: 0x000a, 0x1b10: 0x000a, 0x1b11: 0x000a,\n\t0x1b12: 0x000a,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a,\n\t0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a,\n\t0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a,\n\t0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a,\n\t0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a,\n\t0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a,\n\t0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a,\n\t0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a,\n\t0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a, 0x1b74: 0x000a, 0x1b75: 0x000a,\n\t0x1b76: 0x000a, 0x1b77: 0x000a, 0x1b78: 0x000a, 0x1b79: 0x000a, 0x1b7a: 0x000a, 0x1b7b: 0x000a,\n\t0x1b7c: 0x000a, 0x1b7d: 0x000a, 0x1b7e: 0x000a, 0x1b7f: 0x000a,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a,\n\t0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a,\n\t0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a,\n\t0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a, 0x1b96: 0x000a, 0x1b97: 0x000a,\n\t0x1b98: 0x000a, 0x1b99: 0x000a, 0x1b9a: 0x000a, 0x1b9b: 0x000a, 0x1b9c: 0x000a, 0x1b9d: 0x000a,\n\t0x1b9e: 0x000a, 0x1b9f: 0x000a, 0x1ba0: 0x000a, 0x1ba1: 0x000a, 0x1ba2: 0x000a, 0x1ba3: 0x000a,\n\t0x1ba4: 0x000a, 0x1ba5: 0x000a, 0x1ba6: 0x000a, 0x1ba7: 0x000a, 0x1ba8: 0x000a, 0x1ba9: 0x000a,\n\t0x1baa: 0x000a, 0x1bab: 0x000a, 0x1bac: 0x000a, 0x1bad: 0x000a, 0x1bae: 0x000a, 0x1baf: 0x000a,\n\t0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x000a, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a, 0x1bc5: 0x000a,\n\t0x1bc6: 0x000a, 0x1bc7: 0x000a, 0x1bc8: 0x000a, 0x1bc9: 0x000a, 0x1bca: 0x000a, 0x1bcb: 0x000a,\n\t0x1bcc: 0x000a, 0x1bcd: 0x000a, 0x1bce: 0x000a, 0x1bcf: 0x000a, 0x1bd0: 0x000a, 0x1bd1: 0x000a,\n\t0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x000a, 0x1bd5: 0x000a,\n\t0x1bf0: 0x000a, 0x1bf1: 0x000a, 0x1bf2: 0x000a, 0x1bf3: 0x000a, 0x1bf4: 0x000a, 0x1bf5: 0x000a,\n\t0x1bf6: 0x000a, 0x1bf7: 0x000a, 0x1bf8: 0x000a, 0x1bf9: 0x000a, 0x1bfa: 0x000a, 0x1bfb: 0x000a,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x0009, 0x1c01: 0x000a, 0x1c02: 0x000a, 0x1c03: 0x000a, 0x1c04: 0x000a,\n\t0x1c08: 0x003a, 0x1c09: 0x002a, 0x1c0a: 0x003a, 0x1c0b: 0x002a,\n\t0x1c0c: 0x003a, 0x1c0d: 0x002a, 0x1c0e: 0x003a, 0x1c0f: 0x002a, 0x1c10: 0x003a, 0x1c11: 0x002a,\n\t0x1c12: 0x000a, 0x1c13: 0x000a, 0x1c14: 0x003a, 0x1c15: 0x002a, 0x1c16: 0x003a, 0x1c17: 0x002a,\n\t0x1c18: 0x003a, 0x1c19: 0x002a, 0x1c1a: 0x003a, 0x1c1b: 0x002a, 0x1c1c: 0x000a, 0x1c1d: 0x000a,\n\t0x1c1e: 0x000a, 0x1c1f: 0x000a, 0x1c20: 0x000a,\n\t0x1c2a: 0x000c, 0x1c2b: 0x000c, 0x1c2c: 0x000c, 0x1c2d: 0x000c,\n\t0x1c30: 0x000a,\n\t0x1c36: 0x000a, 0x1c37: 0x000a,\n\t0x1c3d: 0x000a, 0x1c3e: 0x000a, 0x1c3f: 0x000a,\n\t// Block 0x71, offset 0x1c40\n\t0x1c59: 0x000c, 0x1c5a: 0x000c, 0x1c5b: 0x000a, 0x1c5c: 0x000a,\n\t0x1c60: 0x000a,\n\t// Block 0x72, offset 0x1c80\n\t0x1cbb: 0x000a,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x000a, 0x1cc1: 0x000a, 0x1cc2: 0x000a, 0x1cc3: 0x000a, 0x1cc4: 0x000a, 0x1cc5: 0x000a,\n\t0x1cc6: 0x000a, 0x1cc7: 0x000a, 0x1cc8: 0x000a, 0x1cc9: 0x000a, 0x1cca: 0x000a, 0x1ccb: 0x000a,\n\t0x1ccc: 0x000a, 0x1ccd: 0x000a, 0x1cce: 0x000a, 0x1ccf: 0x000a, 0x1cd0: 0x000a, 0x1cd1: 0x000a,\n\t0x1cd2: 0x000a, 0x1cd3: 0x000a, 0x1cd4: 0x000a, 0x1cd5: 0x000a, 0x1cd6: 0x000a, 0x1cd7: 0x000a,\n\t0x1cd8: 0x000a, 0x1cd9: 0x000a, 0x1cda: 0x000a, 0x1cdb: 0x000a, 0x1cdc: 0x000a, 0x1cdd: 0x000a,\n\t0x1cde: 0x000a, 0x1cdf: 0x000a, 0x1ce0: 0x000a, 0x1ce1: 0x000a, 0x1ce2: 0x000a, 0x1ce3: 0x000a,\n\t// Block 0x74, offset 0x1d00\n\t0x1d1d: 0x000a,\n\t0x1d1e: 0x000a,\n\t// Block 0x75, offset 0x1d40\n\t0x1d50: 0x000a, 0x1d51: 0x000a,\n\t0x1d52: 0x000a, 0x1d53: 0x000a, 0x1d54: 0x000a, 0x1d55: 0x000a, 0x1d56: 0x000a, 0x1d57: 0x000a,\n\t0x1d58: 0x000a, 0x1d59: 0x000a, 0x1d5a: 0x000a, 0x1d5b: 0x000a, 0x1d5c: 0x000a, 0x1d5d: 0x000a,\n\t0x1d5e: 0x000a, 0x1d5f: 0x000a,\n\t0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a,\n\t// Block 0x76, offset 0x1d80\n\t0x1db1: 0x000a, 0x1db2: 0x000a, 0x1db3: 0x000a, 0x1db4: 0x000a, 0x1db5: 0x000a,\n\t0x1db6: 0x000a, 0x1db7: 0x000a, 0x1db8: 0x000a, 0x1db9: 0x000a, 0x1dba: 0x000a, 0x1dbb: 0x000a,\n\t0x1dbc: 0x000a, 0x1dbd: 0x000a, 0x1dbe: 0x000a, 0x1dbf: 0x000a,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dcc: 0x000a, 0x1dcd: 0x000a, 0x1dce: 0x000a, 0x1dcf: 0x000a,\n\t// Block 0x78, offset 0x1e00\n\t0x1e37: 0x000a, 0x1e38: 0x000a, 0x1e39: 0x000a, 0x1e3a: 0x000a,\n\t// Block 0x79, offset 0x1e40\n\t0x1e5e: 0x000a, 0x1e5f: 0x000a,\n\t0x1e7f: 0x000a,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e90: 0x000a, 0x1e91: 0x000a,\n\t0x1e92: 0x000a, 0x1e93: 0x000a, 0x1e94: 0x000a, 0x1e95: 0x000a, 0x1e96: 0x000a, 0x1e97: 0x000a,\n\t0x1e98: 0x000a, 0x1e99: 0x000a, 0x1e9a: 0x000a, 0x1e9b: 0x000a, 0x1e9c: 0x000a, 0x1e9d: 0x000a,\n\t0x1e9e: 0x000a, 0x1e9f: 0x000a, 0x1ea0: 0x000a, 0x1ea1: 0x000a, 0x1ea2: 0x000a, 0x1ea3: 0x000a,\n\t0x1ea4: 0x000a, 0x1ea5: 0x000a, 0x1ea6: 0x000a, 0x1ea7: 0x000a, 0x1ea8: 0x000a, 0x1ea9: 0x000a,\n\t0x1eaa: 0x000a, 0x1eab: 0x000a, 0x1eac: 0x000a, 0x1ead: 0x000a, 0x1eae: 0x000a, 0x1eaf: 0x000a,\n\t0x1eb0: 0x000a, 0x1eb1: 0x000a, 0x1eb2: 0x000a, 0x1eb3: 0x000a, 0x1eb4: 0x000a, 0x1eb5: 0x000a,\n\t0x1eb6: 0x000a, 0x1eb7: 0x000a, 0x1eb8: 0x000a, 0x1eb9: 0x000a, 0x1eba: 0x000a, 0x1ebb: 0x000a,\n\t0x1ebc: 0x000a, 0x1ebd: 0x000a, 0x1ebe: 0x000a, 0x1ebf: 0x000a,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0x000a, 0x1ec1: 0x000a, 0x1ec2: 0x000a, 0x1ec3: 0x000a, 0x1ec4: 0x000a, 0x1ec5: 0x000a,\n\t0x1ec6: 0x000a,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f0d: 0x000a, 0x1f0e: 0x000a, 0x1f0f: 0x000a,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f6f: 0x000c,\n\t0x1f70: 0x000c, 0x1f71: 0x000c, 0x1f72: 0x000c, 0x1f73: 0x000a, 0x1f74: 0x000c, 0x1f75: 0x000c,\n\t0x1f76: 0x000c, 0x1f77: 0x000c, 0x1f78: 0x000c, 0x1f79: 0x000c, 0x1f7a: 0x000c, 0x1f7b: 0x000c,\n\t0x1f7c: 0x000c, 0x1f7d: 0x000c, 0x1f7e: 0x000a, 0x1f7f: 0x000a,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f9e: 0x000c, 0x1f9f: 0x000c,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1ff0: 0x000c, 0x1ff1: 0x000c,\n\t// Block 0x80, offset 0x2000\n\t0x2000: 0x000a, 0x2001: 0x000a, 0x2002: 0x000a, 0x2003: 0x000a, 0x2004: 0x000a, 0x2005: 0x000a,\n\t0x2006: 0x000a, 0x2007: 0x000a, 0x2008: 0x000a, 0x2009: 0x000a, 0x200a: 0x000a, 0x200b: 0x000a,\n\t0x200c: 0x000a, 0x200d: 0x000a, 0x200e: 0x000a, 0x200f: 0x000a, 0x2010: 0x000a, 0x2011: 0x000a,\n\t0x2012: 0x000a, 0x2013: 0x000a, 0x2014: 0x000a, 0x2015: 0x000a, 0x2016: 0x000a, 0x2017: 0x000a,\n\t0x2018: 0x000a, 0x2019: 0x000a, 0x201a: 0x000a, 0x201b: 0x000a, 0x201c: 0x000a, 0x201d: 0x000a,\n\t0x201e: 0x000a, 0x201f: 0x000a, 0x2020: 0x000a, 0x2021: 0x000a,\n\t// Block 0x81, offset 0x2040\n\t0x2048: 0x000a,\n\t// Block 0x82, offset 0x2080\n\t0x2082: 0x000c,\n\t0x2086: 0x000c, 0x208b: 0x000c,\n\t0x20a5: 0x000c, 0x20a6: 0x000c, 0x20a8: 0x000a, 0x20a9: 0x000a,\n\t0x20aa: 0x000a, 0x20ab: 0x000a, 0x20ac: 0x000c,\n\t0x20b8: 0x0004, 0x20b9: 0x0004,\n\t// Block 0x83, offset 0x20c0\n\t0x20f4: 0x000a, 0x20f5: 0x000a,\n\t0x20f6: 0x000a, 0x20f7: 0x000a,\n\t// Block 0x84, offset 0x2100\n\t0x2104: 0x000c, 0x2105: 0x000c,\n\t0x2120: 0x000c, 0x2121: 0x000c, 0x2122: 0x000c, 0x2123: 0x000c,\n\t0x2124: 0x000c, 0x2125: 0x000c, 0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c,\n\t0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c, 0x212e: 0x000c, 0x212f: 0x000c,\n\t0x2130: 0x000c, 0x2131: 0x000c,\n\t0x213f: 0x000c,\n\t// Block 0x85, offset 0x2140\n\t0x2166: 0x000c, 0x2167: 0x000c, 0x2168: 0x000c, 0x2169: 0x000c,\n\t0x216a: 0x000c, 0x216b: 0x000c, 0x216c: 0x000c, 0x216d: 0x000c,\n\t// Block 0x86, offset 0x2180\n\t0x2187: 0x000c, 0x2188: 0x000c, 0x2189: 0x000c, 0x218a: 0x000c, 0x218b: 0x000c,\n\t0x218c: 0x000c, 0x218d: 0x000c, 0x218e: 0x000c, 0x218f: 0x000c, 0x2190: 0x000c, 0x2191: 0x000c,\n\t// Block 0x87, offset 0x21c0\n\t0x21c0: 0x000c, 0x21c1: 0x000c, 0x21c2: 0x000c,\n\t0x21f3: 0x000c,\n\t0x21f6: 0x000c, 0x21f7: 0x000c, 0x21f8: 0x000c, 0x21f9: 0x000c,\n\t0x21fc: 0x000c, 0x21fd: 0x000c,\n\t// Block 0x88, offset 0x2200\n\t0x2225: 0x000c,\n\t// Block 0x89, offset 0x2240\n\t0x2269: 0x000c,\n\t0x226a: 0x000c, 0x226b: 0x000c, 0x226c: 0x000c, 0x226d: 0x000c, 0x226e: 0x000c,\n\t0x2271: 0x000c, 0x2272: 0x000c, 0x2275: 0x000c,\n\t0x2276: 0x000c,\n\t// Block 0x8a, offset 0x2280\n\t0x2283: 0x000c,\n\t0x228c: 0x000c,\n\t0x22bc: 0x000c,\n\t// Block 0x8b, offset 0x22c0\n\t0x22f0: 0x000c, 0x22f2: 0x000c, 0x22f3: 0x000c, 0x22f4: 0x000c,\n\t0x22f7: 0x000c, 0x22f8: 0x000c,\n\t0x22fe: 0x000c, 0x22ff: 0x000c,\n\t// Block 0x8c, offset 0x2300\n\t0x2301: 0x000c,\n\t0x232c: 0x000c, 0x232d: 0x000c,\n\t0x2336: 0x000c,\n\t// Block 0x8d, offset 0x2340\n\t0x236a: 0x000a, 0x236b: 0x000a,\n\t// Block 0x8e, offset 0x2380\n\t0x23a5: 0x000c, 0x23a8: 0x000c,\n\t0x23ad: 0x000c,\n\t// Block 0x8f, offset 0x23c0\n\t0x23dd: 0x0001,\n\t0x23de: 0x000c, 0x23df: 0x0001, 0x23e0: 0x0001, 0x23e1: 0x0001, 0x23e2: 0x0001, 0x23e3: 0x0001,\n\t0x23e4: 0x0001, 0x23e5: 0x0001, 0x23e6: 0x0001, 0x23e7: 0x0001, 0x23e8: 0x0001, 0x23e9: 0x0003,\n\t0x23ea: 0x0001, 0x23eb: 0x0001, 0x23ec: 0x0001, 0x23ed: 0x0001, 0x23ee: 0x0001, 0x23ef: 0x0001,\n\t0x23f0: 0x0001, 0x23f1: 0x0001, 0x23f2: 0x0001, 0x23f3: 0x0001, 0x23f4: 0x0001, 0x23f5: 0x0001,\n\t0x23f6: 0x0001, 0x23f7: 0x0001, 0x23f8: 0x0001, 0x23f9: 0x0001, 0x23fa: 0x0001, 0x23fb: 0x0001,\n\t0x23fc: 0x0001, 0x23fd: 0x0001, 0x23fe: 0x0001, 0x23ff: 0x0001,\n\t// Block 0x90, offset 0x2400\n\t0x2400: 0x0001, 0x2401: 0x0001, 0x2402: 0x0001, 0x2403: 0x0001, 0x2404: 0x0001, 0x2405: 0x0001,\n\t0x2406: 0x0001, 0x2407: 0x0001, 0x2408: 0x0001, 0x2409: 0x0001, 0x240a: 0x0001, 0x240b: 0x0001,\n\t0x240c: 0x0001, 0x240d: 0x0001, 0x240e: 0x0001, 0x240f: 0x0001, 0x2410: 0x000d, 0x2411: 0x000d,\n\t0x2412: 0x000d, 0x2413: 0x000d, 0x2414: 0x000d, 0x2415: 0x000d, 0x2416: 0x000d, 0x2417: 0x000d,\n\t0x2418: 0x000d, 0x2419: 0x000d, 0x241a: 0x000d, 0x241b: 0x000d, 0x241c: 0x000d, 0x241d: 0x000d,\n\t0x241e: 0x000d, 0x241f: 0x000d, 0x2420: 0x000d, 0x2421: 0x000d, 0x2422: 0x000d, 0x2423: 0x000d,\n\t0x2424: 0x000d, 0x2425: 0x000d, 0x2426: 0x000d, 0x2427: 0x000d, 0x2428: 0x000d, 0x2429: 0x000d,\n\t0x242a: 0x000d, 0x242b: 0x000d, 0x242c: 0x000d, 0x242d: 0x000d, 0x242e: 0x000d, 0x242f: 0x000d,\n\t0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d,\n\t0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d,\n\t0x243c: 0x000d, 0x243d: 0x000d, 0x243e: 0x000d, 0x243f: 0x000d,\n\t// Block 0x91, offset 0x2440\n\t0x2440: 0x000d, 0x2441: 0x000d, 0x2442: 0x000d, 0x2443: 0x000d, 0x2444: 0x000d, 0x2445: 0x000d,\n\t0x2446: 0x000d, 0x2447: 0x000d, 0x2448: 0x000d, 0x2449: 0x000d, 0x244a: 0x000d, 0x244b: 0x000d,\n\t0x244c: 0x000d, 0x244d: 0x000d, 0x244e: 0x000d, 0x244f: 0x000d, 0x2450: 0x000d, 0x2451: 0x000d,\n\t0x2452: 0x000d, 0x2453: 0x000d, 0x2454: 0x000d, 0x2455: 0x000d, 0x2456: 0x000d, 0x2457: 0x000d,\n\t0x2458: 0x000d, 0x2459: 0x000d, 0x245a: 0x000d, 0x245b: 0x000d, 0x245c: 0x000d, 0x245d: 0x000d,\n\t0x245e: 0x000d, 0x245f: 0x000d, 0x2460: 0x000d, 0x2461: 0x000d, 0x2462: 0x000d, 0x2463: 0x000d,\n\t0x2464: 0x000d, 0x2465: 0x000d, 0x2466: 0x000d, 0x2467: 0x000d, 0x2468: 0x000d, 0x2469: 0x000d,\n\t0x246a: 0x000d, 0x246b: 0x000d, 0x246c: 0x000d, 0x246d: 0x000d, 0x246e: 0x000d, 0x246f: 0x000d,\n\t0x2470: 0x000d, 0x2471: 0x000d, 0x2472: 0x000d, 0x2473: 0x000d, 0x2474: 0x000d, 0x2475: 0x000d,\n\t0x2476: 0x000d, 0x2477: 0x000d, 0x2478: 0x000d, 0x2479: 0x000d, 0x247a: 0x000d, 0x247b: 0x000d,\n\t0x247c: 0x000d, 0x247d: 0x000d, 0x247e: 0x000a, 0x247f: 0x000a,\n\t// Block 0x92, offset 0x2480\n\t0x2480: 0x000d, 0x2481: 0x000d, 0x2482: 0x000d, 0x2483: 0x000d, 0x2484: 0x000d, 0x2485: 0x000d,\n\t0x2486: 0x000d, 0x2487: 0x000d, 0x2488: 0x000d, 0x2489: 0x000d, 0x248a: 0x000d, 0x248b: 0x000d,\n\t0x248c: 0x000d, 0x248d: 0x000d, 0x248e: 0x000d, 0x248f: 0x000d, 0x2490: 0x000b, 0x2491: 0x000b,\n\t0x2492: 0x000b, 0x2493: 0x000b, 0x2494: 0x000b, 0x2495: 0x000b, 0x2496: 0x000b, 0x2497: 0x000b,\n\t0x2498: 0x000b, 0x2499: 0x000b, 0x249a: 0x000b, 0x249b: 0x000b, 0x249c: 0x000b, 0x249d: 0x000b,\n\t0x249e: 0x000b, 0x249f: 0x000b, 0x24a0: 0x000b, 0x24a1: 0x000b, 0x24a2: 0x000b, 0x24a3: 0x000b,\n\t0x24a4: 0x000b, 0x24a5: 0x000b, 0x24a6: 0x000b, 0x24a7: 0x000b, 0x24a8: 0x000b, 0x24a9: 0x000b,\n\t0x24aa: 0x000b, 0x24ab: 0x000b, 0x24ac: 0x000b, 0x24ad: 0x000b, 0x24ae: 0x000b, 0x24af: 0x000b,\n\t0x24b0: 0x000d, 0x24b1: 0x000d, 0x24b2: 0x000d, 0x24b3: 0x000d, 0x24b4: 0x000d, 0x24b5: 0x000d,\n\t0x24b6: 0x000d, 0x24b7: 0x000d, 0x24b8: 0x000d, 0x24b9: 0x000d, 0x24ba: 0x000d, 0x24bb: 0x000d,\n\t0x24bc: 0x000d, 0x24bd: 0x000a, 0x24be: 0x000d, 0x24bf: 0x000d,\n\t// Block 0x93, offset 0x24c0\n\t0x24c0: 0x000c, 0x24c1: 0x000c, 0x24c2: 0x000c, 0x24c3: 0x000c, 0x24c4: 0x000c, 0x24c5: 0x000c,\n\t0x24c6: 0x000c, 0x24c7: 0x000c, 0x24c8: 0x000c, 0x24c9: 0x000c, 0x24ca: 0x000c, 0x24cb: 0x000c,\n\t0x24cc: 0x000c, 0x24cd: 0x000c, 0x24ce: 0x000c, 0x24cf: 0x000c, 0x24d0: 0x000a, 0x24d1: 0x000a,\n\t0x24d2: 0x000a, 0x24d3: 0x000a, 0x24d4: 0x000a, 0x24d5: 0x000a, 0x24d6: 0x000a, 0x24d7: 0x000a,\n\t0x24d8: 0x000a, 0x24d9: 0x000a,\n\t0x24e0: 0x000c, 0x24e1: 0x000c, 0x24e2: 0x000c, 0x24e3: 0x000c,\n\t0x24e4: 0x000c, 0x24e5: 0x000c, 0x24e6: 0x000c, 0x24e7: 0x000c, 0x24e8: 0x000c, 0x24e9: 0x000c,\n\t0x24ea: 0x000c, 0x24eb: 0x000c, 0x24ec: 0x000c, 0x24ed: 0x000c, 0x24ee: 0x000c, 0x24ef: 0x000c,\n\t0x24f0: 0x000a, 0x24f1: 0x000a, 0x24f2: 0x000a, 0x24f3: 0x000a, 0x24f4: 0x000a, 0x24f5: 0x000a,\n\t0x24f6: 0x000a, 0x24f7: 0x000a, 0x24f8: 0x000a, 0x24f9: 0x000a, 0x24fa: 0x000a, 0x24fb: 0x000a,\n\t0x24fc: 0x000a, 0x24fd: 0x000a, 0x24fe: 0x000a, 0x24ff: 0x000a,\n\t// Block 0x94, offset 0x2500\n\t0x2500: 0x000a, 0x2501: 0x000a, 0x2502: 0x000a, 0x2503: 0x000a, 0x2504: 0x000a, 0x2505: 0x000a,\n\t0x2506: 0x000a, 0x2507: 0x000a, 0x2508: 0x000a, 0x2509: 0x000a, 0x250a: 0x000a, 0x250b: 0x000a,\n\t0x250c: 0x000a, 0x250d: 0x000a, 0x250e: 0x000a, 0x250f: 0x000a, 0x2510: 0x0006, 0x2511: 0x000a,\n\t0x2512: 0x0006, 0x2514: 0x000a, 0x2515: 0x0006, 0x2516: 0x000a, 0x2517: 0x000a,\n\t0x2518: 0x000a, 0x2519: 0x009a, 0x251a: 0x008a, 0x251b: 0x007a, 0x251c: 0x006a, 0x251d: 0x009a,\n\t0x251e: 0x008a, 0x251f: 0x0004, 0x2520: 0x000a, 0x2521: 0x000a, 0x2522: 0x0003, 0x2523: 0x0003,\n\t0x2524: 0x000a, 0x2525: 0x000a, 0x2526: 0x000a, 0x2528: 0x000a, 0x2529: 0x0004,\n\t0x252a: 0x0004, 0x252b: 0x000a,\n\t0x2530: 0x000d, 0x2531: 0x000d, 0x2532: 0x000d, 0x2533: 0x000d, 0x2534: 0x000d, 0x2535: 0x000d,\n\t0x2536: 0x000d, 0x2537: 0x000d, 0x2538: 0x000d, 0x2539: 0x000d, 0x253a: 0x000d, 0x253b: 0x000d,\n\t0x253c: 0x000d, 0x253d: 0x000d, 0x253e: 0x000d, 0x253f: 0x000d,\n\t// Block 0x95, offset 0x2540\n\t0x2540: 0x000d, 0x2541: 0x000d, 0x2542: 0x000d, 0x2543: 0x000d, 0x2544: 0x000d, 0x2545: 0x000d,\n\t0x2546: 0x000d, 0x2547: 0x000d, 0x2548: 0x000d, 0x2549: 0x000d, 0x254a: 0x000d, 0x254b: 0x000d,\n\t0x254c: 0x000d, 0x254d: 0x000d, 0x254e: 0x000d, 0x254f: 0x000d, 0x2550: 0x000d, 0x2551: 0x000d,\n\t0x2552: 0x000d, 0x2553: 0x000d, 0x2554: 0x000d, 0x2555: 0x000d, 0x2556: 0x000d, 0x2557: 0x000d,\n\t0x2558: 0x000d, 0x2559: 0x000d, 0x255a: 0x000d, 0x255b: 0x000d, 0x255c: 0x000d, 0x255d: 0x000d,\n\t0x255e: 0x000d, 0x255f: 0x000d, 0x2560: 0x000d, 0x2561: 0x000d, 0x2562: 0x000d, 0x2563: 0x000d,\n\t0x2564: 0x000d, 0x2565: 0x000d, 0x2566: 0x000d, 0x2567: 0x000d, 0x2568: 0x000d, 0x2569: 0x000d,\n\t0x256a: 0x000d, 0x256b: 0x000d, 0x256c: 0x000d, 0x256d: 0x000d, 0x256e: 0x000d, 0x256f: 0x000d,\n\t0x2570: 0x000d, 0x2571: 0x000d, 0x2572: 0x000d, 0x2573: 0x000d, 0x2574: 0x000d, 0x2575: 0x000d,\n\t0x2576: 0x000d, 0x2577: 0x000d, 0x2578: 0x000d, 0x2579: 0x000d, 0x257a: 0x000d, 0x257b: 0x000d,\n\t0x257c: 0x000d, 0x257d: 0x000d, 0x257e: 0x000d, 0x257f: 0x000b,\n\t// Block 0x96, offset 0x2580\n\t0x2581: 0x000a, 0x2582: 0x000a, 0x2583: 0x0004, 0x2584: 0x0004, 0x2585: 0x0004,\n\t0x2586: 0x000a, 0x2587: 0x000a, 0x2588: 0x003a, 0x2589: 0x002a, 0x258a: 0x000a, 0x258b: 0x0003,\n\t0x258c: 0x0006, 0x258d: 0x0003, 0x258e: 0x0006, 0x258f: 0x0006, 0x2590: 0x0002, 0x2591: 0x0002,\n\t0x2592: 0x0002, 0x2593: 0x0002, 0x2594: 0x0002, 0x2595: 0x0002, 0x2596: 0x0002, 0x2597: 0x0002,\n\t0x2598: 0x0002, 0x2599: 0x0002, 0x259a: 0x0006, 0x259b: 0x000a, 0x259c: 0x000a, 0x259d: 0x000a,\n\t0x259e: 0x000a, 0x259f: 0x000a, 0x25a0: 0x000a,\n\t0x25bb: 0x005a,\n\t0x25bc: 0x000a, 0x25bd: 0x004a, 0x25be: 0x000a, 0x25bf: 0x000a,\n\t// Block 0x97, offset 0x25c0\n\t0x25c0: 0x000a,\n\t0x25db: 0x005a, 0x25dc: 0x000a, 0x25dd: 0x004a,\n\t0x25de: 0x000a, 0x25df: 0x00fa, 0x25e0: 0x00ea, 0x25e1: 0x000a, 0x25e2: 0x003a, 0x25e3: 0x002a,\n\t0x25e4: 0x000a, 0x25e5: 0x000a,\n\t// Block 0x98, offset 0x2600\n\t0x2620: 0x0004, 0x2621: 0x0004, 0x2622: 0x000a, 0x2623: 0x000a,\n\t0x2624: 0x000a, 0x2625: 0x0004, 0x2626: 0x0004, 0x2628: 0x000a, 0x2629: 0x000a,\n\t0x262a: 0x000a, 0x262b: 0x000a, 0x262c: 0x000a, 0x262d: 0x000a, 0x262e: 0x000a,\n\t0x2630: 0x000b, 0x2631: 0x000b, 0x2632: 0x000b, 0x2633: 0x000b, 0x2634: 0x000b, 0x2635: 0x000b,\n\t0x2636: 0x000b, 0x2637: 0x000b, 0x2638: 0x000b, 0x2639: 0x000a, 0x263a: 0x000a, 0x263b: 0x000a,\n\t0x263c: 0x000a, 0x263d: 0x000a, 0x263e: 0x000b, 0x263f: 0x000b,\n\t// Block 0x99, offset 0x2640\n\t0x2641: 0x000a,\n\t// Block 0x9a, offset 0x2680\n\t0x2680: 0x000a, 0x2681: 0x000a, 0x2682: 0x000a, 0x2683: 0x000a, 0x2684: 0x000a, 0x2685: 0x000a,\n\t0x2686: 0x000a, 0x2687: 0x000a, 0x2688: 0x000a, 0x2689: 0x000a, 0x268a: 0x000a, 0x268b: 0x000a,\n\t0x268c: 0x000a, 0x2690: 0x000a, 0x2691: 0x000a,\n\t0x2692: 0x000a, 0x2693: 0x000a, 0x2694: 0x000a, 0x2695: 0x000a, 0x2696: 0x000a, 0x2697: 0x000a,\n\t0x2698: 0x000a, 0x2699: 0x000a, 0x269a: 0x000a, 0x269b: 0x000a, 0x269c: 0x000a,\n\t0x26a0: 0x000a,\n\t// Block 0x9b, offset 0x26c0\n\t0x26fd: 0x000c,\n\t// Block 0x9c, offset 0x2700\n\t0x2720: 0x000c, 0x2721: 0x0002, 0x2722: 0x0002, 0x2723: 0x0002,\n\t0x2724: 0x0002, 0x2725: 0x0002, 0x2726: 0x0002, 0x2727: 0x0002, 0x2728: 0x0002, 0x2729: 0x0002,\n\t0x272a: 0x0002, 0x272b: 0x0002, 0x272c: 0x0002, 0x272d: 0x0002, 0x272e: 0x0002, 0x272f: 0x0002,\n\t0x2730: 0x0002, 0x2731: 0x0002, 0x2732: 0x0002, 0x2733: 0x0002, 0x2734: 0x0002, 0x2735: 0x0002,\n\t0x2736: 0x0002, 0x2737: 0x0002, 0x2738: 0x0002, 0x2739: 0x0002, 0x273a: 0x0002, 0x273b: 0x0002,\n\t// Block 0x9d, offset 0x2740\n\t0x2776: 0x000c, 0x2777: 0x000c, 0x2778: 0x000c, 0x2779: 0x000c, 0x277a: 0x000c,\n\t// Block 0x9e, offset 0x2780\n\t0x2780: 0x0001, 0x2781: 0x0001, 0x2782: 0x0001, 0x2783: 0x0001, 0x2784: 0x0001, 0x2785: 0x0001,\n\t0x2786: 0x0001, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001,\n\t0x278c: 0x0001, 0x278d: 0x0001, 0x278e: 0x0001, 0x278f: 0x0001, 0x2790: 0x0001, 0x2791: 0x0001,\n\t0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001,\n\t0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001,\n\t0x279e: 0x0001, 0x279f: 0x0001, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001,\n\t0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001,\n\t0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001,\n\t0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001,\n\t0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x0001, 0x27b9: 0x0001, 0x27ba: 0x0001, 0x27bb: 0x0001,\n\t0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x0001,\n\t// Block 0x9f, offset 0x27c0\n\t0x27c0: 0x0001, 0x27c1: 0x0001, 0x27c2: 0x0001, 0x27c3: 0x0001, 0x27c4: 0x0001, 0x27c5: 0x0001,\n\t0x27c6: 0x0001, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001,\n\t0x27cc: 0x0001, 0x27cd: 0x0001, 0x27ce: 0x0001, 0x27cf: 0x0001, 0x27d0: 0x0001, 0x27d1: 0x0001,\n\t0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001,\n\t0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001,\n\t0x27de: 0x0001, 0x27df: 0x000a, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001,\n\t0x27e4: 0x0001, 0x27e5: 0x0001, 0x27e6: 0x0001, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001,\n\t0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001,\n\t0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001,\n\t0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x0001, 0x27f9: 0x0001, 0x27fa: 0x0001, 0x27fb: 0x0001,\n\t0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x0001,\n\t// Block 0xa0, offset 0x2800\n\t0x2800: 0x0001, 0x2801: 0x000c, 0x2802: 0x000c, 0x2803: 0x000c, 0x2804: 0x0001, 0x2805: 0x000c,\n\t0x2806: 0x000c, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001,\n\t0x280c: 0x000c, 0x280d: 0x000c, 0x280e: 0x000c, 0x280f: 0x000c, 0x2810: 0x0001, 0x2811: 0x0001,\n\t0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001,\n\t0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001,\n\t0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001,\n\t0x2824: 0x0001, 0x2825: 0x0001, 0x2826: 0x0001, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001,\n\t0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001,\n\t0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001,\n\t0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x000c, 0x2839: 0x000c, 0x283a: 0x000c, 0x283b: 0x0001,\n\t0x283c: 0x0001, 0x283d: 0x0001, 0x283e: 0x0001, 0x283f: 0x000c,\n\t// Block 0xa1, offset 0x2840\n\t0x2840: 0x0001, 0x2841: 0x0001, 0x2842: 0x0001, 0x2843: 0x0001, 0x2844: 0x0001, 0x2845: 0x0001,\n\t0x2846: 0x0001, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001,\n\t0x284c: 0x0001, 0x284d: 0x0001, 0x284e: 0x0001, 0x284f: 0x0001, 0x2850: 0x0001, 0x2851: 0x0001,\n\t0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001,\n\t0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001,\n\t0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0001, 0x2861: 0x0001, 0x2862: 0x0001, 0x2863: 0x0001,\n\t0x2864: 0x0001, 0x2865: 0x000c, 0x2866: 0x000c, 0x2867: 0x0001, 0x2868: 0x0001, 0x2869: 0x0001,\n\t0x286a: 0x0001, 0x286b: 0x0001, 0x286c: 0x0001, 0x286d: 0x0001, 0x286e: 0x0001, 0x286f: 0x0001,\n\t0x2870: 0x0001, 0x2871: 0x0001, 0x2872: 0x0001, 0x2873: 0x0001, 0x2874: 0x0001, 0x2875: 0x0001,\n\t0x2876: 0x0001, 0x2877: 0x0001, 0x2878: 0x0001, 0x2879: 0x0001, 0x287a: 0x0001, 0x287b: 0x0001,\n\t0x287c: 0x0001, 0x287d: 0x0001, 0x287e: 0x0001, 0x287f: 0x0001,\n\t// Block 0xa2, offset 0x2880\n\t0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001,\n\t0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001,\n\t0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001,\n\t0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001,\n\t0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001,\n\t0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0001, 0x28a1: 0x0001, 0x28a2: 0x0001, 0x28a3: 0x0001,\n\t0x28a4: 0x0001, 0x28a5: 0x0001, 0x28a6: 0x0001, 0x28a7: 0x0001, 0x28a8: 0x0001, 0x28a9: 0x0001,\n\t0x28aa: 0x0001, 0x28ab: 0x0001, 0x28ac: 0x0001, 0x28ad: 0x0001, 0x28ae: 0x0001, 0x28af: 0x0001,\n\t0x28b0: 0x0001, 0x28b1: 0x0001, 0x28b2: 0x0001, 0x28b3: 0x0001, 0x28b4: 0x0001, 0x28b5: 0x0001,\n\t0x28b6: 0x0001, 0x28b7: 0x0001, 0x28b8: 0x0001, 0x28b9: 0x000a, 0x28ba: 0x000a, 0x28bb: 0x000a,\n\t0x28bc: 0x000a, 0x28bd: 0x000a, 0x28be: 0x000a, 0x28bf: 0x000a,\n\t// Block 0xa3, offset 0x28c0\n\t0x28c0: 0x000d, 0x28c1: 0x000d, 0x28c2: 0x000d, 0x28c3: 0x000d, 0x28c4: 0x000d, 0x28c5: 0x000d,\n\t0x28c6: 0x000d, 0x28c7: 0x000d, 0x28c8: 0x000d, 0x28c9: 0x000d, 0x28ca: 0x000d, 0x28cb: 0x000d,\n\t0x28cc: 0x000d, 0x28cd: 0x000d, 0x28ce: 0x000d, 0x28cf: 0x000d, 0x28d0: 0x000d, 0x28d1: 0x000d,\n\t0x28d2: 0x000d, 0x28d3: 0x000d, 0x28d4: 0x000d, 0x28d5: 0x000d, 0x28d6: 0x000d, 0x28d7: 0x000d,\n\t0x28d8: 0x000d, 0x28d9: 0x000d, 0x28da: 0x000d, 0x28db: 0x000d, 0x28dc: 0x000d, 0x28dd: 0x000d,\n\t0x28de: 0x000d, 0x28df: 0x000d, 0x28e0: 0x000d, 0x28e1: 0x000d, 0x28e2: 0x000d, 0x28e3: 0x000d,\n\t0x28e4: 0x000c, 0x28e5: 0x000c, 0x28e6: 0x000c, 0x28e7: 0x000c, 0x28e8: 0x000d, 0x28e9: 0x000d,\n\t0x28ea: 0x000d, 0x28eb: 0x000d, 0x28ec: 0x000d, 0x28ed: 0x000d, 0x28ee: 0x000d, 0x28ef: 0x000d,\n\t0x28f0: 0x0005, 0x28f1: 0x0005, 0x28f2: 0x0005, 0x28f3: 0x0005, 0x28f4: 0x0005, 0x28f5: 0x0005,\n\t0x28f6: 0x0005, 0x28f7: 0x0005, 0x28f8: 0x0005, 0x28f9: 0x0005, 0x28fa: 0x000d, 0x28fb: 0x000d,\n\t0x28fc: 0x000d, 0x28fd: 0x000d, 0x28fe: 0x000d, 0x28ff: 0x000d,\n\t// Block 0xa4, offset 0x2900\n\t0x2900: 0x0001, 0x2901: 0x0001, 0x2902: 0x0001, 0x2903: 0x0001, 0x2904: 0x0001, 0x2905: 0x0001,\n\t0x2906: 0x0001, 0x2907: 0x0001, 0x2908: 0x0001, 0x2909: 0x0001, 0x290a: 0x0001, 0x290b: 0x0001,\n\t0x290c: 0x0001, 0x290d: 0x0001, 0x290e: 0x0001, 0x290f: 0x0001, 0x2910: 0x0001, 0x2911: 0x0001,\n\t0x2912: 0x0001, 0x2913: 0x0001, 0x2914: 0x0001, 0x2915: 0x0001, 0x2916: 0x0001, 0x2917: 0x0001,\n\t0x2918: 0x0001, 0x2919: 0x0001, 0x291a: 0x0001, 0x291b: 0x0001, 0x291c: 0x0001, 0x291d: 0x0001,\n\t0x291e: 0x0001, 0x291f: 0x0001, 0x2920: 0x0005, 0x2921: 0x0005, 0x2922: 0x0005, 0x2923: 0x0005,\n\t0x2924: 0x0005, 0x2925: 0x0005, 0x2926: 0x0005, 0x2927: 0x0005, 0x2928: 0x0005, 0x2929: 0x0005,\n\t0x292a: 0x0005, 0x292b: 0x0005, 0x292c: 0x0005, 0x292d: 0x0005, 0x292e: 0x0005, 0x292f: 0x0005,\n\t0x2930: 0x0005, 0x2931: 0x0005, 0x2932: 0x0005, 0x2933: 0x0005, 0x2934: 0x0005, 0x2935: 0x0005,\n\t0x2936: 0x0005, 0x2937: 0x0005, 0x2938: 0x0005, 0x2939: 0x0005, 0x293a: 0x0005, 0x293b: 0x0005,\n\t0x293c: 0x0005, 0x293d: 0x0005, 0x293e: 0x0005, 0x293f: 0x0001,\n\t// Block 0xa5, offset 0x2940\n\t0x2940: 0x0001, 0x2941: 0x0001, 0x2942: 0x0001, 0x2943: 0x0001, 0x2944: 0x0001, 0x2945: 0x0001,\n\t0x2946: 0x0001, 0x2947: 0x0001, 0x2948: 0x0001, 0x2949: 0x0001, 0x294a: 0x0001, 0x294b: 0x0001,\n\t0x294c: 0x0001, 0x294d: 0x0001, 0x294e: 0x0001, 0x294f: 0x0001, 0x2950: 0x0001, 0x2951: 0x0001,\n\t0x2952: 0x0001, 0x2953: 0x0001, 0x2954: 0x0001, 0x2955: 0x0001, 0x2956: 0x0001, 0x2957: 0x0001,\n\t0x2958: 0x0001, 0x2959: 0x0001, 0x295a: 0x0001, 0x295b: 0x0001, 0x295c: 0x0001, 0x295d: 0x0001,\n\t0x295e: 0x0001, 0x295f: 0x0001, 0x2960: 0x0001, 0x2961: 0x0001, 0x2962: 0x0001, 0x2963: 0x0001,\n\t0x2964: 0x0001, 0x2965: 0x0001, 0x2966: 0x0001, 0x2967: 0x0001, 0x2968: 0x0001, 0x2969: 0x0001,\n\t0x296a: 0x0001, 0x296b: 0x000c, 0x296c: 0x000c, 0x296d: 0x0001, 0x296e: 0x0001, 0x296f: 0x0001,\n\t0x2970: 0x0001, 0x2971: 0x0001, 0x2972: 0x0001, 0x2973: 0x0001, 0x2974: 0x0001, 0x2975: 0x0001,\n\t0x2976: 0x0001, 0x2977: 0x0001, 0x2978: 0x0001, 0x2979: 0x0001, 0x297a: 0x0001, 0x297b: 0x0001,\n\t0x297c: 0x0001, 0x297d: 0x0001, 0x297e: 0x0001, 0x297f: 0x0001,\n\t// Block 0xa6, offset 0x2980\n\t0x2980: 0x0001, 0x2981: 0x0001, 0x2982: 0x0001, 0x2983: 0x0001, 0x2984: 0x0001, 0x2985: 0x0001,\n\t0x2986: 0x0001, 0x2987: 0x0001, 0x2988: 0x0001, 0x2989: 0x0001, 0x298a: 0x0001, 0x298b: 0x0001,\n\t0x298c: 0x0001, 0x298d: 0x0001, 0x298e: 0x0001, 0x298f: 0x0001, 0x2990: 0x0001, 0x2991: 0x0001,\n\t0x2992: 0x0001, 0x2993: 0x0001, 0x2994: 0x0001, 0x2995: 0x0001, 0x2996: 0x0001, 0x2997: 0x0001,\n\t0x2998: 0x0001, 0x2999: 0x0001, 0x299a: 0x0001, 0x299b: 0x0001, 0x299c: 0x0001, 0x299d: 0x0001,\n\t0x299e: 0x0001, 0x299f: 0x0001, 0x29a0: 0x0001, 0x29a1: 0x0001, 0x29a2: 0x0001, 0x29a3: 0x0001,\n\t0x29a4: 0x0001, 0x29a5: 0x0001, 0x29a6: 0x0001, 0x29a7: 0x0001, 0x29a8: 0x0001, 0x29a9: 0x0001,\n\t0x29aa: 0x0001, 0x29ab: 0x0001, 0x29ac: 0x0001, 0x29ad: 0x0001, 0x29ae: 0x0001, 0x29af: 0x0001,\n\t0x29b0: 0x000d, 0x29b1: 0x000d, 0x29b2: 0x000d, 0x29b3: 0x000d, 0x29b4: 0x000d, 0x29b5: 0x000d,\n\t0x29b6: 0x000d, 0x29b7: 0x000d, 0x29b8: 0x000d, 0x29b9: 0x000d, 0x29ba: 0x000d, 0x29bb: 0x000d,\n\t0x29bc: 0x000d, 0x29bd: 0x000d, 0x29be: 0x000d, 0x29bf: 0x000d,\n\t// Block 0xa7, offset 0x29c0\n\t0x29c0: 0x000d, 0x29c1: 0x000d, 0x29c2: 0x000d, 0x29c3: 0x000d, 0x29c4: 0x000d, 0x29c5: 0x000d,\n\t0x29c6: 0x000c, 0x29c7: 0x000c, 0x29c8: 0x000c, 0x29c9: 0x000c, 0x29ca: 0x000c, 0x29cb: 0x000c,\n\t0x29cc: 0x000c, 0x29cd: 0x000c, 0x29ce: 0x000c, 0x29cf: 0x000c, 0x29d0: 0x000c, 0x29d1: 0x000d,\n\t0x29d2: 0x000d, 0x29d3: 0x000d, 0x29d4: 0x000d, 0x29d5: 0x000d, 0x29d6: 0x000d, 0x29d7: 0x000d,\n\t0x29d8: 0x000d, 0x29d9: 0x000d, 0x29da: 0x000d, 0x29db: 0x000d, 0x29dc: 0x000d, 0x29dd: 0x000d,\n\t0x29de: 0x000d, 0x29df: 0x000d, 0x29e0: 0x000d, 0x29e1: 0x000d, 0x29e2: 0x000d, 0x29e3: 0x000d,\n\t0x29e4: 0x000d, 0x29e5: 0x000d, 0x29e6: 0x000d, 0x29e7: 0x000d, 0x29e8: 0x000d, 0x29e9: 0x000d,\n\t0x29ea: 0x000d, 0x29eb: 0x000d, 0x29ec: 0x000d, 0x29ed: 0x000d, 0x29ee: 0x000d, 0x29ef: 0x000d,\n\t0x29f0: 0x0001, 0x29f1: 0x0001, 0x29f2: 0x0001, 0x29f3: 0x0001, 0x29f4: 0x0001, 0x29f5: 0x0001,\n\t0x29f6: 0x0001, 0x29f7: 0x0001, 0x29f8: 0x0001, 0x29f9: 0x0001, 0x29fa: 0x0001, 0x29fb: 0x0001,\n\t0x29fc: 0x0001, 0x29fd: 0x0001, 0x29fe: 0x0001, 0x29ff: 0x0001,\n\t// Block 0xa8, offset 0x2a00\n\t0x2a01: 0x000c,\n\t0x2a38: 0x000c, 0x2a39: 0x000c, 0x2a3a: 0x000c, 0x2a3b: 0x000c,\n\t0x2a3c: 0x000c, 0x2a3d: 0x000c, 0x2a3e: 0x000c, 0x2a3f: 0x000c,\n\t// Block 0xa9, offset 0x2a40\n\t0x2a40: 0x000c, 0x2a41: 0x000c, 0x2a42: 0x000c, 0x2a43: 0x000c, 0x2a44: 0x000c, 0x2a45: 0x000c,\n\t0x2a46: 0x000c,\n\t0x2a52: 0x000a, 0x2a53: 0x000a, 0x2a54: 0x000a, 0x2a55: 0x000a, 0x2a56: 0x000a, 0x2a57: 0x000a,\n\t0x2a58: 0x000a, 0x2a59: 0x000a, 0x2a5a: 0x000a, 0x2a5b: 0x000a, 0x2a5c: 0x000a, 0x2a5d: 0x000a,\n\t0x2a5e: 0x000a, 0x2a5f: 0x000a, 0x2a60: 0x000a, 0x2a61: 0x000a, 0x2a62: 0x000a, 0x2a63: 0x000a,\n\t0x2a64: 0x000a, 0x2a65: 0x000a,\n\t0x2a7f: 0x000c,\n\t// Block 0xaa, offset 0x2a80\n\t0x2a80: 0x000c, 0x2a81: 0x000c,\n\t0x2ab3: 0x000c, 0x2ab4: 0x000c, 0x2ab5: 0x000c,\n\t0x2ab6: 0x000c, 0x2ab9: 0x000c, 0x2aba: 0x000c,\n\t// Block 0xab, offset 0x2ac0\n\t0x2ac0: 0x000c, 0x2ac1: 0x000c, 0x2ac2: 0x000c,\n\t0x2ae7: 0x000c, 0x2ae8: 0x000c, 0x2ae9: 0x000c,\n\t0x2aea: 0x000c, 0x2aeb: 0x000c, 0x2aed: 0x000c, 0x2aee: 0x000c, 0x2aef: 0x000c,\n\t0x2af0: 0x000c, 0x2af1: 0x000c, 0x2af2: 0x000c, 0x2af3: 0x000c, 0x2af4: 0x000c,\n\t// Block 0xac, offset 0x2b00\n\t0x2b33: 0x000c,\n\t// Block 0xad, offset 0x2b40\n\t0x2b40: 0x000c, 0x2b41: 0x000c,\n\t0x2b76: 0x000c, 0x2b77: 0x000c, 0x2b78: 0x000c, 0x2b79: 0x000c, 0x2b7a: 0x000c, 0x2b7b: 0x000c,\n\t0x2b7c: 0x000c, 0x2b7d: 0x000c, 0x2b7e: 0x000c,\n\t// Block 0xae, offset 0x2b80\n\t0x2b89: 0x000c, 0x2b8a: 0x000c, 0x2b8b: 0x000c,\n\t0x2b8c: 0x000c, 0x2b8f: 0x000c,\n\t// Block 0xaf, offset 0x2bc0\n\t0x2bef: 0x000c,\n\t0x2bf0: 0x000c, 0x2bf1: 0x000c, 0x2bf4: 0x000c,\n\t0x2bf6: 0x000c, 0x2bf7: 0x000c,\n\t0x2bfe: 0x000c,\n\t// Block 0xb0, offset 0x2c00\n\t0x2c1f: 0x000c, 0x2c23: 0x000c,\n\t0x2c24: 0x000c, 0x2c25: 0x000c, 0x2c26: 0x000c, 0x2c27: 0x000c, 0x2c28: 0x000c, 0x2c29: 0x000c,\n\t0x2c2a: 0x000c,\n\t// Block 0xb1, offset 0x2c40\n\t0x2c40: 0x000c,\n\t0x2c66: 0x000c, 0x2c67: 0x000c, 0x2c68: 0x000c, 0x2c69: 0x000c,\n\t0x2c6a: 0x000c, 0x2c6b: 0x000c, 0x2c6c: 0x000c,\n\t0x2c70: 0x000c, 0x2c71: 0x000c, 0x2c72: 0x000c, 0x2c73: 0x000c, 0x2c74: 0x000c,\n\t// Block 0xb2, offset 0x2c80\n\t0x2cb8: 0x000c, 0x2cb9: 0x000c, 0x2cba: 0x000c, 0x2cbb: 0x000c,\n\t0x2cbc: 0x000c, 0x2cbd: 0x000c, 0x2cbe: 0x000c, 0x2cbf: 0x000c,\n\t// Block 0xb3, offset 0x2cc0\n\t0x2cc2: 0x000c, 0x2cc3: 0x000c, 0x2cc4: 0x000c,\n\t0x2cc6: 0x000c,\n\t0x2cde: 0x000c,\n\t// Block 0xb4, offset 0x2d00\n\t0x2d33: 0x000c, 0x2d34: 0x000c, 0x2d35: 0x000c,\n\t0x2d36: 0x000c, 0x2d37: 0x000c, 0x2d38: 0x000c, 0x2d3a: 0x000c,\n\t0x2d3f: 0x000c,\n\t// Block 0xb5, offset 0x2d40\n\t0x2d40: 0x000c, 0x2d42: 0x000c, 0x2d43: 0x000c,\n\t// Block 0xb6, offset 0x2d80\n\t0x2db2: 0x000c, 0x2db3: 0x000c, 0x2db4: 0x000c, 0x2db5: 0x000c,\n\t0x2dbc: 0x000c, 0x2dbd: 0x000c, 0x2dbf: 0x000c,\n\t// Block 0xb7, offset 0x2dc0\n\t0x2dc0: 0x000c,\n\t0x2ddc: 0x000c, 0x2ddd: 0x000c,\n\t// Block 0xb8, offset 0x2e00\n\t0x2e33: 0x000c, 0x2e34: 0x000c, 0x2e35: 0x000c,\n\t0x2e36: 0x000c, 0x2e37: 0x000c, 0x2e38: 0x000c, 0x2e39: 0x000c, 0x2e3a: 0x000c,\n\t0x2e3d: 0x000c, 0x2e3f: 0x000c,\n\t// Block 0xb9, offset 0x2e40\n\t0x2e40: 0x000c,\n\t0x2e60: 0x000a, 0x2e61: 0x000a, 0x2e62: 0x000a, 0x2e63: 0x000a,\n\t0x2e64: 0x000a, 0x2e65: 0x000a, 0x2e66: 0x000a, 0x2e67: 0x000a, 0x2e68: 0x000a, 0x2e69: 0x000a,\n\t0x2e6a: 0x000a, 0x2e6b: 0x000a, 0x2e6c: 0x000a,\n\t// Block 0xba, offset 0x2e80\n\t0x2eab: 0x000c, 0x2ead: 0x000c,\n\t0x2eb0: 0x000c, 0x2eb1: 0x000c, 0x2eb2: 0x000c, 0x2eb3: 0x000c, 0x2eb4: 0x000c, 0x2eb5: 0x000c,\n\t0x2eb7: 0x000c,\n\t// Block 0xbb, offset 0x2ec0\n\t0x2edd: 0x000c,\n\t0x2ede: 0x000c, 0x2edf: 0x000c, 0x2ee2: 0x000c, 0x2ee3: 0x000c,\n\t0x2ee4: 0x000c, 0x2ee5: 0x000c, 0x2ee7: 0x000c, 0x2ee8: 0x000c, 0x2ee9: 0x000c,\n\t0x2eea: 0x000c, 0x2eeb: 0x000c,\n\t// Block 0xbc, offset 0x2f00\n\t0x2f2f: 0x000c,\n\t0x2f30: 0x000c, 0x2f31: 0x000c, 0x2f32: 0x000c, 0x2f33: 0x000c, 0x2f34: 0x000c, 0x2f35: 0x000c,\n\t0x2f36: 0x000c, 0x2f37: 0x000c, 0x2f39: 0x000c, 0x2f3a: 0x000c,\n\t// Block 0xbd, offset 0x2f40\n\t0x2f7b: 0x000c,\n\t0x2f7c: 0x000c, 0x2f7e: 0x000c,\n\t// Block 0xbe, offset 0x2f80\n\t0x2f83: 0x000c,\n\t// Block 0xbf, offset 0x2fc0\n\t0x2fd4: 0x000c, 0x2fd5: 0x000c, 0x2fd6: 0x000c, 0x2fd7: 0x000c,\n\t0x2fda: 0x000c, 0x2fdb: 0x000c,\n\t0x2fe0: 0x000c,\n\t// Block 0xc0, offset 0x3000\n\t0x3001: 0x000c, 0x3002: 0x000c, 0x3003: 0x000c, 0x3004: 0x000c, 0x3005: 0x000c,\n\t0x3006: 0x000c, 0x3009: 0x000c, 0x300a: 0x000c,\n\t0x3033: 0x000c, 0x3034: 0x000c, 0x3035: 0x000c,\n\t0x3036: 0x000c, 0x3037: 0x000c, 0x3038: 0x000c, 0x303b: 0x000c,\n\t0x303c: 0x000c, 0x303d: 0x000c, 0x303e: 0x000c,\n\t// Block 0xc1, offset 0x3040\n\t0x3047: 0x000c,\n\t0x3051: 0x000c,\n\t0x3052: 0x000c, 0x3053: 0x000c, 0x3054: 0x000c, 0x3055: 0x000c, 0x3056: 0x000c,\n\t0x3059: 0x000c, 0x305a: 0x000c, 0x305b: 0x000c,\n\t// Block 0xc2, offset 0x3080\n\t0x308a: 0x000c, 0x308b: 0x000c,\n\t0x308c: 0x000c, 0x308d: 0x000c, 0x308e: 0x000c, 0x308f: 0x000c, 0x3090: 0x000c, 0x3091: 0x000c,\n\t0x3092: 0x000c, 0x3093: 0x000c, 0x3094: 0x000c, 0x3095: 0x000c, 0x3096: 0x000c,\n\t0x3098: 0x000c, 0x3099: 0x000c,\n\t// Block 0xc3, offset 0x30c0\n\t0x30f0: 0x000c, 0x30f1: 0x000c, 0x30f2: 0x000c, 0x30f3: 0x000c, 0x30f4: 0x000c, 0x30f5: 0x000c,\n\t0x30f6: 0x000c, 0x30f8: 0x000c, 0x30f9: 0x000c, 0x30fa: 0x000c, 0x30fb: 0x000c,\n\t0x30fc: 0x000c, 0x30fd: 0x000c,\n\t// Block 0xc4, offset 0x3100\n\t0x3112: 0x000c, 0x3113: 0x000c, 0x3114: 0x000c, 0x3115: 0x000c, 0x3116: 0x000c, 0x3117: 0x000c,\n\t0x3118: 0x000c, 0x3119: 0x000c, 0x311a: 0x000c, 0x311b: 0x000c, 0x311c: 0x000c, 0x311d: 0x000c,\n\t0x311e: 0x000c, 0x311f: 0x000c, 0x3120: 0x000c, 0x3121: 0x000c, 0x3122: 0x000c, 0x3123: 0x000c,\n\t0x3124: 0x000c, 0x3125: 0x000c, 0x3126: 0x000c, 0x3127: 0x000c,\n\t0x312a: 0x000c, 0x312b: 0x000c, 0x312c: 0x000c, 0x312d: 0x000c, 0x312e: 0x000c, 0x312f: 0x000c,\n\t0x3130: 0x000c, 0x3132: 0x000c, 0x3133: 0x000c, 0x3135: 0x000c,\n\t0x3136: 0x000c,\n\t// Block 0xc5, offset 0x3140\n\t0x3171: 0x000c, 0x3172: 0x000c, 0x3173: 0x000c, 0x3174: 0x000c, 0x3175: 0x000c,\n\t0x3176: 0x000c, 0x317a: 0x000c,\n\t0x317c: 0x000c, 0x317d: 0x000c, 0x317f: 0x000c,\n\t// Block 0xc6, offset 0x3180\n\t0x3180: 0x000c, 0x3181: 0x000c, 0x3182: 0x000c, 0x3183: 0x000c, 0x3184: 0x000c, 0x3185: 0x000c,\n\t0x3187: 0x000c,\n\t// Block 0xc7, offset 0x31c0\n\t0x31d0: 0x000c, 0x31d1: 0x000c,\n\t0x31d5: 0x000c, 0x31d7: 0x000c,\n\t// Block 0xc8, offset 0x3200\n\t0x3233: 0x000c, 0x3234: 0x000c,\n\t// Block 0xc9, offset 0x3240\n\t0x3255: 0x000a, 0x3256: 0x000a, 0x3257: 0x000a,\n\t0x3258: 0x000a, 0x3259: 0x000a, 0x325a: 0x000a, 0x325b: 0x000a, 0x325c: 0x000a, 0x325d: 0x0004,\n\t0x325e: 0x0004, 0x325f: 0x0004, 0x3260: 0x0004, 0x3261: 0x000a, 0x3262: 0x000a, 0x3263: 0x000a,\n\t0x3264: 0x000a, 0x3265: 0x000a, 0x3266: 0x000a, 0x3267: 0x000a, 0x3268: 0x000a, 0x3269: 0x000a,\n\t0x326a: 0x000a, 0x326b: 0x000a, 0x326c: 0x000a, 0x326d: 0x000a, 0x326e: 0x000a, 0x326f: 0x000a,\n\t0x3270: 0x000a, 0x3271: 0x000a,\n\t// Block 0xca, offset 0x3280\n\t0x32b0: 0x000c, 0x32b1: 0x000c, 0x32b2: 0x000c, 0x32b3: 0x000c, 0x32b4: 0x000c,\n\t// Block 0xcb, offset 0x32c0\n\t0x32f0: 0x000c, 0x32f1: 0x000c, 0x32f2: 0x000c, 0x32f3: 0x000c, 0x32f4: 0x000c, 0x32f5: 0x000c,\n\t0x32f6: 0x000c,\n\t// Block 0xcc, offset 0x3300\n\t0x330f: 0x000c,\n\t// Block 0xcd, offset 0x3340\n\t0x334f: 0x000c, 0x3350: 0x000c, 0x3351: 0x000c,\n\t0x3352: 0x000c,\n\t// Block 0xce, offset 0x3380\n\t0x33a2: 0x000a,\n\t0x33a4: 0x000c,\n\t// Block 0xcf, offset 0x33c0\n\t0x33dd: 0x000c,\n\t0x33de: 0x000c, 0x33e0: 0x000b, 0x33e1: 0x000b, 0x33e2: 0x000b, 0x33e3: 0x000b,\n\t// Block 0xd0, offset 0x3400\n\t0x3427: 0x000c, 0x3428: 0x000c, 0x3429: 0x000c,\n\t0x3433: 0x000b, 0x3434: 0x000b, 0x3435: 0x000b,\n\t0x3436: 0x000b, 0x3437: 0x000b, 0x3438: 0x000b, 0x3439: 0x000b, 0x343a: 0x000b, 0x343b: 0x000c,\n\t0x343c: 0x000c, 0x343d: 0x000c, 0x343e: 0x000c, 0x343f: 0x000c,\n\t// Block 0xd1, offset 0x3440\n\t0x3440: 0x000c, 0x3441: 0x000c, 0x3442: 0x000c, 0x3445: 0x000c,\n\t0x3446: 0x000c, 0x3447: 0x000c, 0x3448: 0x000c, 0x3449: 0x000c, 0x344a: 0x000c, 0x344b: 0x000c,\n\t0x346a: 0x000c, 0x346b: 0x000c, 0x346c: 0x000c, 0x346d: 0x000c,\n\t// Block 0xd2, offset 0x3480\n\t0x3480: 0x000a, 0x3481: 0x000a, 0x3482: 0x000c, 0x3483: 0x000c, 0x3484: 0x000c, 0x3485: 0x000a,\n\t// Block 0xd3, offset 0x34c0\n\t0x34c0: 0x000a, 0x34c1: 0x000a, 0x34c2: 0x000a, 0x34c3: 0x000a, 0x34c4: 0x000a, 0x34c5: 0x000a,\n\t0x34c6: 0x000a, 0x34c7: 0x000a, 0x34c8: 0x000a, 0x34c9: 0x000a, 0x34ca: 0x000a, 0x34cb: 0x000a,\n\t0x34cc: 0x000a, 0x34cd: 0x000a, 0x34ce: 0x000a, 0x34cf: 0x000a, 0x34d0: 0x000a, 0x34d1: 0x000a,\n\t0x34d2: 0x000a, 0x34d3: 0x000a, 0x34d4: 0x000a, 0x34d5: 0x000a, 0x34d6: 0x000a,\n\t// Block 0xd4, offset 0x3500\n\t0x351b: 0x000a,\n\t// Block 0xd5, offset 0x3540\n\t0x3555: 0x000a,\n\t// Block 0xd6, offset 0x3580\n\t0x358f: 0x000a,\n\t// Block 0xd7, offset 0x35c0\n\t0x35c9: 0x000a,\n\t// Block 0xd8, offset 0x3600\n\t0x3603: 0x000a,\n\t0x360e: 0x0002, 0x360f: 0x0002, 0x3610: 0x0002, 0x3611: 0x0002,\n\t0x3612: 0x0002, 0x3613: 0x0002, 0x3614: 0x0002, 0x3615: 0x0002, 0x3616: 0x0002, 0x3617: 0x0002,\n\t0x3618: 0x0002, 0x3619: 0x0002, 0x361a: 0x0002, 0x361b: 0x0002, 0x361c: 0x0002, 0x361d: 0x0002,\n\t0x361e: 0x0002, 0x361f: 0x0002, 0x3620: 0x0002, 0x3621: 0x0002, 0x3622: 0x0002, 0x3623: 0x0002,\n\t0x3624: 0x0002, 0x3625: 0x0002, 0x3626: 0x0002, 0x3627: 0x0002, 0x3628: 0x0002, 0x3629: 0x0002,\n\t0x362a: 0x0002, 0x362b: 0x0002, 0x362c: 0x0002, 0x362d: 0x0002, 0x362e: 0x0002, 0x362f: 0x0002,\n\t0x3630: 0x0002, 0x3631: 0x0002, 0x3632: 0x0002, 0x3633: 0x0002, 0x3634: 0x0002, 0x3635: 0x0002,\n\t0x3636: 0x0002, 0x3637: 0x0002, 0x3638: 0x0002, 0x3639: 0x0002, 0x363a: 0x0002, 0x363b: 0x0002,\n\t0x363c: 0x0002, 0x363d: 0x0002, 0x363e: 0x0002, 0x363f: 0x0002,\n\t// Block 0xd9, offset 0x3640\n\t0x3640: 0x000c, 0x3641: 0x000c, 0x3642: 0x000c, 0x3643: 0x000c, 0x3644: 0x000c, 0x3645: 0x000c,\n\t0x3646: 0x000c, 0x3647: 0x000c, 0x3648: 0x000c, 0x3649: 0x000c, 0x364a: 0x000c, 0x364b: 0x000c,\n\t0x364c: 0x000c, 0x364d: 0x000c, 0x364e: 0x000c, 0x364f: 0x000c, 0x3650: 0x000c, 0x3651: 0x000c,\n\t0x3652: 0x000c, 0x3653: 0x000c, 0x3654: 0x000c, 0x3655: 0x000c, 0x3656: 0x000c, 0x3657: 0x000c,\n\t0x3658: 0x000c, 0x3659: 0x000c, 0x365a: 0x000c, 0x365b: 0x000c, 0x365c: 0x000c, 0x365d: 0x000c,\n\t0x365e: 0x000c, 0x365f: 0x000c, 0x3660: 0x000c, 0x3661: 0x000c, 0x3662: 0x000c, 0x3663: 0x000c,\n\t0x3664: 0x000c, 0x3665: 0x000c, 0x3666: 0x000c, 0x3667: 0x000c, 0x3668: 0x000c, 0x3669: 0x000c,\n\t0x366a: 0x000c, 0x366b: 0x000c, 0x366c: 0x000c, 0x366d: 0x000c, 0x366e: 0x000c, 0x366f: 0x000c,\n\t0x3670: 0x000c, 0x3671: 0x000c, 0x3672: 0x000c, 0x3673: 0x000c, 0x3674: 0x000c, 0x3675: 0x000c,\n\t0x3676: 0x000c, 0x367b: 0x000c,\n\t0x367c: 0x000c, 0x367d: 0x000c, 0x367e: 0x000c, 0x367f: 0x000c,\n\t// Block 0xda, offset 0x3680\n\t0x3680: 0x000c, 0x3681: 0x000c, 0x3682: 0x000c, 0x3683: 0x000c, 0x3684: 0x000c, 0x3685: 0x000c,\n\t0x3686: 0x000c, 0x3687: 0x000c, 0x3688: 0x000c, 0x3689: 0x000c, 0x368a: 0x000c, 0x368b: 0x000c,\n\t0x368c: 0x000c, 0x368d: 0x000c, 0x368e: 0x000c, 0x368f: 0x000c, 0x3690: 0x000c, 0x3691: 0x000c,\n\t0x3692: 0x000c, 0x3693: 0x000c, 0x3694: 0x000c, 0x3695: 0x000c, 0x3696: 0x000c, 0x3697: 0x000c,\n\t0x3698: 0x000c, 0x3699: 0x000c, 0x369a: 0x000c, 0x369b: 0x000c, 0x369c: 0x000c, 0x369d: 0x000c,\n\t0x369e: 0x000c, 0x369f: 0x000c, 0x36a0: 0x000c, 0x36a1: 0x000c, 0x36a2: 0x000c, 0x36a3: 0x000c,\n\t0x36a4: 0x000c, 0x36a5: 0x000c, 0x36a6: 0x000c, 0x36a7: 0x000c, 0x36a8: 0x000c, 0x36a9: 0x000c,\n\t0x36aa: 0x000c, 0x36ab: 0x000c, 0x36ac: 0x000c,\n\t0x36b5: 0x000c,\n\t// Block 0xdb, offset 0x36c0\n\t0x36c4: 0x000c,\n\t0x36db: 0x000c, 0x36dc: 0x000c, 0x36dd: 0x000c,\n\t0x36de: 0x000c, 0x36df: 0x000c, 0x36e1: 0x000c, 0x36e2: 0x000c, 0x36e3: 0x000c,\n\t0x36e4: 0x000c, 0x36e5: 0x000c, 0x36e6: 0x000c, 0x36e7: 0x000c, 0x36e8: 0x000c, 0x36e9: 0x000c,\n\t0x36ea: 0x000c, 0x36eb: 0x000c, 0x36ec: 0x000c, 0x36ed: 0x000c, 0x36ee: 0x000c, 0x36ef: 0x000c,\n\t// Block 0xdc, offset 0x3700\n\t0x3700: 0x000c, 0x3701: 0x000c, 0x3702: 0x000c, 0x3703: 0x000c, 0x3704: 0x000c, 0x3705: 0x000c,\n\t0x3706: 0x000c, 0x3708: 0x000c, 0x3709: 0x000c, 0x370a: 0x000c, 0x370b: 0x000c,\n\t0x370c: 0x000c, 0x370d: 0x000c, 0x370e: 0x000c, 0x370f: 0x000c, 0x3710: 0x000c, 0x3711: 0x000c,\n\t0x3712: 0x000c, 0x3713: 0x000c, 0x3714: 0x000c, 0x3715: 0x000c, 0x3716: 0x000c, 0x3717: 0x000c,\n\t0x3718: 0x000c, 0x371b: 0x000c, 0x371c: 0x000c, 0x371d: 0x000c,\n\t0x371e: 0x000c, 0x371f: 0x000c, 0x3720: 0x000c, 0x3721: 0x000c, 0x3723: 0x000c,\n\t0x3724: 0x000c, 0x3726: 0x000c, 0x3727: 0x000c, 0x3728: 0x000c, 0x3729: 0x000c,\n\t0x372a: 0x000c,\n\t// Block 0xdd, offset 0x3740\n\t0x376c: 0x000c, 0x376d: 0x000c, 0x376e: 0x000c, 0x376f: 0x000c,\n\t0x377f: 0x0004,\n\t// Block 0xde, offset 0x3780\n\t0x3780: 0x0001, 0x3781: 0x0001, 0x3782: 0x0001, 0x3783: 0x0001, 0x3784: 0x0001, 0x3785: 0x0001,\n\t0x3786: 0x0001, 0x3787: 0x0001, 0x3788: 0x0001, 0x3789: 0x0001, 0x378a: 0x0001, 0x378b: 0x0001,\n\t0x378c: 0x0001, 0x378d: 0x0001, 0x378e: 0x0001, 0x378f: 0x0001, 0x3790: 0x000c, 0x3791: 0x000c,\n\t0x3792: 0x000c, 0x3793: 0x000c, 0x3794: 0x000c, 0x3795: 0x000c, 0x3796: 0x000c, 0x3797: 0x0001,\n\t0x3798: 0x0001, 0x3799: 0x0001, 0x379a: 0x0001, 0x379b: 0x0001, 0x379c: 0x0001, 0x379d: 0x0001,\n\t0x379e: 0x0001, 0x379f: 0x0001, 0x37a0: 0x0001, 0x37a1: 0x0001, 0x37a2: 0x0001, 0x37a3: 0x0001,\n\t0x37a4: 0x0001, 0x37a5: 0x0001, 0x37a6: 0x0001, 0x37a7: 0x0001, 0x37a8: 0x0001, 0x37a9: 0x0001,\n\t0x37aa: 0x0001, 0x37ab: 0x0001, 0x37ac: 0x0001, 0x37ad: 0x0001, 0x37ae: 0x0001, 0x37af: 0x0001,\n\t0x37b0: 0x0001, 0x37b1: 0x0001, 0x37b2: 0x0001, 0x37b3: 0x0001, 0x37b4: 0x0001, 0x37b5: 0x0001,\n\t0x37b6: 0x0001, 0x37b7: 0x0001, 0x37b8: 0x0001, 0x37b9: 0x0001, 0x37ba: 0x0001, 0x37bb: 0x0001,\n\t0x37bc: 0x0001, 0x37bd: 0x0001, 0x37be: 0x0001, 0x37bf: 0x0001,\n\t// Block 0xdf, offset 0x37c0\n\t0x37c0: 0x0001, 0x37c1: 0x0001, 0x37c2: 0x0001, 0x37c3: 0x0001, 0x37c4: 0x000c, 0x37c5: 0x000c,\n\t0x37c6: 0x000c, 0x37c7: 0x000c, 0x37c8: 0x000c, 0x37c9: 0x000c, 0x37ca: 0x000c, 0x37cb: 0x0001,\n\t0x37cc: 0x0001, 0x37cd: 0x0001, 0x37ce: 0x0001, 0x37cf: 0x0001, 0x37d0: 0x0001, 0x37d1: 0x0001,\n\t0x37d2: 0x0001, 0x37d3: 0x0001, 0x37d4: 0x0001, 0x37d5: 0x0001, 0x37d6: 0x0001, 0x37d7: 0x0001,\n\t0x37d8: 0x0001, 0x37d9: 0x0001, 0x37da: 0x0001, 0x37db: 0x0001, 0x37dc: 0x0001, 0x37dd: 0x0001,\n\t0x37de: 0x0001, 0x37df: 0x0001, 0x37e0: 0x0001, 0x37e1: 0x0001, 0x37e2: 0x0001, 0x37e3: 0x0001,\n\t0x37e4: 0x0001, 0x37e5: 0x0001, 0x37e6: 0x0001, 0x37e7: 0x0001, 0x37e8: 0x0001, 0x37e9: 0x0001,\n\t0x37ea: 0x0001, 0x37eb: 0x0001, 0x37ec: 0x0001, 0x37ed: 0x0001, 0x37ee: 0x0001, 0x37ef: 0x0001,\n\t0x37f0: 0x0001, 0x37f1: 0x0001, 0x37f2: 0x0001, 0x37f3: 0x0001, 0x37f4: 0x0001, 0x37f5: 0x0001,\n\t0x37f6: 0x0001, 0x37f7: 0x0001, 0x37f8: 0x0001, 0x37f9: 0x0001, 0x37fa: 0x0001, 0x37fb: 0x0001,\n\t0x37fc: 0x0001, 0x37fd: 0x0001, 0x37fe: 0x0001, 0x37ff: 0x0001,\n\t// Block 0xe0, offset 0x3800\n\t0x3800: 0x000d, 0x3801: 0x000d, 0x3802: 0x000d, 0x3803: 0x000d, 0x3804: 0x000d, 0x3805: 0x000d,\n\t0x3806: 0x000d, 0x3807: 0x000d, 0x3808: 0x000d, 0x3809: 0x000d, 0x380a: 0x000d, 0x380b: 0x000d,\n\t0x380c: 0x000d, 0x380d: 0x000d, 0x380e: 0x000d, 0x380f: 0x000d, 0x3810: 0x0001, 0x3811: 0x0001,\n\t0x3812: 0x0001, 0x3813: 0x0001, 0x3814: 0x0001, 0x3815: 0x0001, 0x3816: 0x0001, 0x3817: 0x0001,\n\t0x3818: 0x0001, 0x3819: 0x0001, 0x381a: 0x0001, 0x381b: 0x0001, 0x381c: 0x0001, 0x381d: 0x0001,\n\t0x381e: 0x0001, 0x381f: 0x0001, 0x3820: 0x0001, 0x3821: 0x0001, 0x3822: 0x0001, 0x3823: 0x0001,\n\t0x3824: 0x0001, 0x3825: 0x0001, 0x3826: 0x0001, 0x3827: 0x0001, 0x3828: 0x0001, 0x3829: 0x0001,\n\t0x382a: 0x0001, 0x382b: 0x0001, 0x382c: 0x0001, 0x382d: 0x0001, 0x382e: 0x0001, 0x382f: 0x0001,\n\t0x3830: 0x0001, 0x3831: 0x0001, 0x3832: 0x0001, 0x3833: 0x0001, 0x3834: 0x0001, 0x3835: 0x0001,\n\t0x3836: 0x0001, 0x3837: 0x0001, 0x3838: 0x0001, 0x3839: 0x0001, 0x383a: 0x0001, 0x383b: 0x0001,\n\t0x383c: 0x0001, 0x383d: 0x0001, 0x383e: 0x0001, 0x383f: 0x0001,\n\t// Block 0xe1, offset 0x3840\n\t0x3840: 0x000d, 0x3841: 0x000d, 0x3842: 0x000d, 0x3843: 0x000d, 0x3844: 0x000d, 0x3845: 0x000d,\n\t0x3846: 0x000d, 0x3847: 0x000d, 0x3848: 0x000d, 0x3849: 0x000d, 0x384a: 0x000d, 0x384b: 0x000d,\n\t0x384c: 0x000d, 0x384d: 0x000d, 0x384e: 0x000d, 0x384f: 0x000d, 0x3850: 0x000d, 0x3851: 0x000d,\n\t0x3852: 0x000d, 0x3853: 0x000d, 0x3854: 0x000d, 0x3855: 0x000d, 0x3856: 0x000d, 0x3857: 0x000d,\n\t0x3858: 0x000d, 0x3859: 0x000d, 0x385a: 0x000d, 0x385b: 0x000d, 0x385c: 0x000d, 0x385d: 0x000d,\n\t0x385e: 0x000d, 0x385f: 0x000d, 0x3860: 0x000d, 0x3861: 0x000d, 0x3862: 0x000d, 0x3863: 0x000d,\n\t0x3864: 0x000d, 0x3865: 0x000d, 0x3866: 0x000d, 0x3867: 0x000d, 0x3868: 0x000d, 0x3869: 0x000d,\n\t0x386a: 0x000d, 0x386b: 0x000d, 0x386c: 0x000d, 0x386d: 0x000d, 0x386e: 0x000d, 0x386f: 0x000d,\n\t0x3870: 0x000a, 0x3871: 0x000a, 0x3872: 0x000d, 0x3873: 0x000d, 0x3874: 0x000d, 0x3875: 0x000d,\n\t0x3876: 0x000d, 0x3877: 0x000d, 0x3878: 0x000d, 0x3879: 0x000d, 0x387a: 0x000d, 0x387b: 0x000d,\n\t0x387c: 0x000d, 0x387d: 0x000d, 0x387e: 0x000d, 0x387f: 0x000d,\n\t// Block 0xe2, offset 0x3880\n\t0x3880: 0x000a, 0x3881: 0x000a, 0x3882: 0x000a, 0x3883: 0x000a, 0x3884: 0x000a, 0x3885: 0x000a,\n\t0x3886: 0x000a, 0x3887: 0x000a, 0x3888: 0x000a, 0x3889: 0x000a, 0x388a: 0x000a, 0x388b: 0x000a,\n\t0x388c: 0x000a, 0x388d: 0x000a, 0x388e: 0x000a, 0x388f: 0x000a, 0x3890: 0x000a, 0x3891: 0x000a,\n\t0x3892: 0x000a, 0x3893: 0x000a, 0x3894: 0x000a, 0x3895: 0x000a, 0x3896: 0x000a, 0x3897: 0x000a,\n\t0x3898: 0x000a, 0x3899: 0x000a, 0x389a: 0x000a, 0x389b: 0x000a, 0x389c: 0x000a, 0x389d: 0x000a,\n\t0x389e: 0x000a, 0x389f: 0x000a, 0x38a0: 0x000a, 0x38a1: 0x000a, 0x38a2: 0x000a, 0x38a3: 0x000a,\n\t0x38a4: 0x000a, 0x38a5: 0x000a, 0x38a6: 0x000a, 0x38a7: 0x000a, 0x38a8: 0x000a, 0x38a9: 0x000a,\n\t0x38aa: 0x000a, 0x38ab: 0x000a,\n\t0x38b0: 0x000a, 0x38b1: 0x000a, 0x38b2: 0x000a, 0x38b3: 0x000a, 0x38b4: 0x000a, 0x38b5: 0x000a,\n\t0x38b6: 0x000a, 0x38b7: 0x000a, 0x38b8: 0x000a, 0x38b9: 0x000a, 0x38ba: 0x000a, 0x38bb: 0x000a,\n\t0x38bc: 0x000a, 0x38bd: 0x000a, 0x38be: 0x000a, 0x38bf: 0x000a,\n\t// Block 0xe3, offset 0x38c0\n\t0x38c0: 0x000a, 0x38c1: 0x000a, 0x38c2: 0x000a, 0x38c3: 0x000a, 0x38c4: 0x000a, 0x38c5: 0x000a,\n\t0x38c6: 0x000a, 0x38c7: 0x000a, 0x38c8: 0x000a, 0x38c9: 0x000a, 0x38ca: 0x000a, 0x38cb: 0x000a,\n\t0x38cc: 0x000a, 0x38cd: 0x000a, 0x38ce: 0x000a, 0x38cf: 0x000a, 0x38d0: 0x000a, 0x38d1: 0x000a,\n\t0x38d2: 0x000a, 0x38d3: 0x000a,\n\t0x38e0: 0x000a, 0x38e1: 0x000a, 0x38e2: 0x000a, 0x38e3: 0x000a,\n\t0x38e4: 0x000a, 0x38e5: 0x000a, 0x38e6: 0x000a, 0x38e7: 0x000a, 0x38e8: 0x000a, 0x38e9: 0x000a,\n\t0x38ea: 0x000a, 0x38eb: 0x000a, 0x38ec: 0x000a, 0x38ed: 0x000a, 0x38ee: 0x000a,\n\t0x38f1: 0x000a, 0x38f2: 0x000a, 0x38f3: 0x000a, 0x38f4: 0x000a, 0x38f5: 0x000a,\n\t0x38f6: 0x000a, 0x38f7: 0x000a, 0x38f8: 0x000a, 0x38f9: 0x000a, 0x38fa: 0x000a, 0x38fb: 0x000a,\n\t0x38fc: 0x000a, 0x38fd: 0x000a, 0x38fe: 0x000a, 0x38ff: 0x000a,\n\t// Block 0xe4, offset 0x3900\n\t0x3901: 0x000a, 0x3902: 0x000a, 0x3903: 0x000a, 0x3904: 0x000a, 0x3905: 0x000a,\n\t0x3906: 0x000a, 0x3907: 0x000a, 0x3908: 0x000a, 0x3909: 0x000a, 0x390a: 0x000a, 0x390b: 0x000a,\n\t0x390c: 0x000a, 0x390d: 0x000a, 0x390e: 0x000a, 0x390f: 0x000a, 0x3911: 0x000a,\n\t0x3912: 0x000a, 0x3913: 0x000a, 0x3914: 0x000a, 0x3915: 0x000a, 0x3916: 0x000a, 0x3917: 0x000a,\n\t0x3918: 0x000a, 0x3919: 0x000a, 0x391a: 0x000a, 0x391b: 0x000a, 0x391c: 0x000a, 0x391d: 0x000a,\n\t0x391e: 0x000a, 0x391f: 0x000a, 0x3920: 0x000a, 0x3921: 0x000a, 0x3922: 0x000a, 0x3923: 0x000a,\n\t0x3924: 0x000a, 0x3925: 0x000a, 0x3926: 0x000a, 0x3927: 0x000a, 0x3928: 0x000a, 0x3929: 0x000a,\n\t0x392a: 0x000a, 0x392b: 0x000a, 0x392c: 0x000a, 0x392d: 0x000a, 0x392e: 0x000a, 0x392f: 0x000a,\n\t0x3930: 0x000a, 0x3931: 0x000a, 0x3932: 0x000a, 0x3933: 0x000a, 0x3934: 0x000a, 0x3935: 0x000a,\n\t// Block 0xe5, offset 0x3940\n\t0x3940: 0x0002, 0x3941: 0x0002, 0x3942: 0x0002, 0x3943: 0x0002, 0x3944: 0x0002, 0x3945: 0x0002,\n\t0x3946: 0x0002, 0x3947: 0x0002, 0x3948: 0x0002, 0x3949: 0x0002, 0x394a: 0x0002, 0x394b: 0x000a,\n\t0x394c: 0x000a, 0x394d: 0x000a, 0x394e: 0x000a, 0x394f: 0x000a,\n\t0x396f: 0x000a,\n\t// Block 0xe6, offset 0x3980\n\t0x39aa: 0x000a, 0x39ab: 0x000a, 0x39ac: 0x000a, 0x39ad: 0x000a, 0x39ae: 0x000a, 0x39af: 0x000a,\n\t// Block 0xe7, offset 0x39c0\n\t0x39ed: 0x000a,\n\t// Block 0xe8, offset 0x3a00\n\t0x3a20: 0x000a, 0x3a21: 0x000a, 0x3a22: 0x000a, 0x3a23: 0x000a,\n\t0x3a24: 0x000a, 0x3a25: 0x000a,\n\t// Block 0xe9, offset 0x3a40\n\t0x3a40: 0x000a, 0x3a41: 0x000a, 0x3a42: 0x000a, 0x3a43: 0x000a, 0x3a44: 0x000a, 0x3a45: 0x000a,\n\t0x3a46: 0x000a, 0x3a47: 0x000a, 0x3a48: 0x000a, 0x3a49: 0x000a, 0x3a4a: 0x000a, 0x3a4b: 0x000a,\n\t0x3a4c: 0x000a, 0x3a4d: 0x000a, 0x3a4e: 0x000a, 0x3a4f: 0x000a, 0x3a50: 0x000a, 0x3a51: 0x000a,\n\t0x3a52: 0x000a, 0x3a53: 0x000a, 0x3a54: 0x000a, 0x3a55: 0x000a, 0x3a56: 0x000a, 0x3a57: 0x000a,\n\t0x3a60: 0x000a, 0x3a61: 0x000a, 0x3a62: 0x000a, 0x3a63: 0x000a,\n\t0x3a64: 0x000a, 0x3a65: 0x000a, 0x3a66: 0x000a, 0x3a67: 0x000a, 0x3a68: 0x000a, 0x3a69: 0x000a,\n\t0x3a6a: 0x000a, 0x3a6b: 0x000a, 0x3a6c: 0x000a,\n\t0x3a70: 0x000a, 0x3a71: 0x000a, 0x3a72: 0x000a, 0x3a73: 0x000a, 0x3a74: 0x000a, 0x3a75: 0x000a,\n\t0x3a76: 0x000a, 0x3a77: 0x000a, 0x3a78: 0x000a, 0x3a79: 0x000a, 0x3a7a: 0x000a, 0x3a7b: 0x000a,\n\t0x3a7c: 0x000a,\n\t// Block 0xea, offset 0x3a80\n\t0x3a80: 0x000a, 0x3a81: 0x000a, 0x3a82: 0x000a, 0x3a83: 0x000a, 0x3a84: 0x000a, 0x3a85: 0x000a,\n\t0x3a86: 0x000a, 0x3a87: 0x000a, 0x3a88: 0x000a, 0x3a89: 0x000a, 0x3a8a: 0x000a, 0x3a8b: 0x000a,\n\t0x3a8c: 0x000a, 0x3a8d: 0x000a, 0x3a8e: 0x000a, 0x3a8f: 0x000a, 0x3a90: 0x000a, 0x3a91: 0x000a,\n\t0x3a92: 0x000a, 0x3a93: 0x000a, 0x3a94: 0x000a, 0x3a95: 0x000a, 0x3a96: 0x000a, 0x3a97: 0x000a,\n\t0x3a98: 0x000a,\n\t0x3aa0: 0x000a, 0x3aa1: 0x000a, 0x3aa2: 0x000a, 0x3aa3: 0x000a,\n\t0x3aa4: 0x000a, 0x3aa5: 0x000a, 0x3aa6: 0x000a, 0x3aa7: 0x000a, 0x3aa8: 0x000a, 0x3aa9: 0x000a,\n\t0x3aaa: 0x000a, 0x3aab: 0x000a,\n\t// Block 0xeb, offset 0x3ac0\n\t0x3ac0: 0x000a, 0x3ac1: 0x000a, 0x3ac2: 0x000a, 0x3ac3: 0x000a, 0x3ac4: 0x000a, 0x3ac5: 0x000a,\n\t0x3ac6: 0x000a, 0x3ac7: 0x000a, 0x3ac8: 0x000a, 0x3ac9: 0x000a, 0x3aca: 0x000a, 0x3acb: 0x000a,\n\t0x3ad0: 0x000a, 0x3ad1: 0x000a,\n\t0x3ad2: 0x000a, 0x3ad3: 0x000a, 0x3ad4: 0x000a, 0x3ad5: 0x000a, 0x3ad6: 0x000a, 0x3ad7: 0x000a,\n\t0x3ad8: 0x000a, 0x3ad9: 0x000a, 0x3ada: 0x000a, 0x3adb: 0x000a, 0x3adc: 0x000a, 0x3add: 0x000a,\n\t0x3ade: 0x000a, 0x3adf: 0x000a, 0x3ae0: 0x000a, 0x3ae1: 0x000a, 0x3ae2: 0x000a, 0x3ae3: 0x000a,\n\t0x3ae4: 0x000a, 0x3ae5: 0x000a, 0x3ae6: 0x000a, 0x3ae7: 0x000a, 0x3ae8: 0x000a, 0x3ae9: 0x000a,\n\t0x3aea: 0x000a, 0x3aeb: 0x000a, 0x3aec: 0x000a, 0x3aed: 0x000a, 0x3aee: 0x000a, 0x3aef: 0x000a,\n\t0x3af0: 0x000a, 0x3af1: 0x000a, 0x3af2: 0x000a, 0x3af3: 0x000a, 0x3af4: 0x000a, 0x3af5: 0x000a,\n\t0x3af6: 0x000a, 0x3af7: 0x000a, 0x3af8: 0x000a, 0x3af9: 0x000a, 0x3afa: 0x000a, 0x3afb: 0x000a,\n\t0x3afc: 0x000a, 0x3afd: 0x000a, 0x3afe: 0x000a, 0x3aff: 0x000a,\n\t// Block 0xec, offset 0x3b00\n\t0x3b00: 0x000a, 0x3b01: 0x000a, 0x3b02: 0x000a, 0x3b03: 0x000a, 0x3b04: 0x000a, 0x3b05: 0x000a,\n\t0x3b06: 0x000a, 0x3b07: 0x000a,\n\t0x3b10: 0x000a, 0x3b11: 0x000a,\n\t0x3b12: 0x000a, 0x3b13: 0x000a, 0x3b14: 0x000a, 0x3b15: 0x000a, 0x3b16: 0x000a, 0x3b17: 0x000a,\n\t0x3b18: 0x000a, 0x3b19: 0x000a,\n\t0x3b20: 0x000a, 0x3b21: 0x000a, 0x3b22: 0x000a, 0x3b23: 0x000a,\n\t0x3b24: 0x000a, 0x3b25: 0x000a, 0x3b26: 0x000a, 0x3b27: 0x000a, 0x3b28: 0x000a, 0x3b29: 0x000a,\n\t0x3b2a: 0x000a, 0x3b2b: 0x000a, 0x3b2c: 0x000a, 0x3b2d: 0x000a, 0x3b2e: 0x000a, 0x3b2f: 0x000a,\n\t0x3b30: 0x000a, 0x3b31: 0x000a, 0x3b32: 0x000a, 0x3b33: 0x000a, 0x3b34: 0x000a, 0x3b35: 0x000a,\n\t0x3b36: 0x000a, 0x3b37: 0x000a, 0x3b38: 0x000a, 0x3b39: 0x000a, 0x3b3a: 0x000a, 0x3b3b: 0x000a,\n\t0x3b3c: 0x000a, 0x3b3d: 0x000a, 0x3b3e: 0x000a, 0x3b3f: 0x000a,\n\t// Block 0xed, offset 0x3b40\n\t0x3b40: 0x000a, 0x3b41: 0x000a, 0x3b42: 0x000a, 0x3b43: 0x000a, 0x3b44: 0x000a, 0x3b45: 0x000a,\n\t0x3b46: 0x000a, 0x3b47: 0x000a,\n\t0x3b50: 0x000a, 0x3b51: 0x000a,\n\t0x3b52: 0x000a, 0x3b53: 0x000a, 0x3b54: 0x000a, 0x3b55: 0x000a, 0x3b56: 0x000a, 0x3b57: 0x000a,\n\t0x3b58: 0x000a, 0x3b59: 0x000a, 0x3b5a: 0x000a, 0x3b5b: 0x000a, 0x3b5c: 0x000a, 0x3b5d: 0x000a,\n\t0x3b5e: 0x000a, 0x3b5f: 0x000a, 0x3b60: 0x000a, 0x3b61: 0x000a, 0x3b62: 0x000a, 0x3b63: 0x000a,\n\t0x3b64: 0x000a, 0x3b65: 0x000a, 0x3b66: 0x000a, 0x3b67: 0x000a, 0x3b68: 0x000a, 0x3b69: 0x000a,\n\t0x3b6a: 0x000a, 0x3b6b: 0x000a, 0x3b6c: 0x000a, 0x3b6d: 0x000a,\n\t0x3b70: 0x000a, 0x3b71: 0x000a,\n\t// Block 0xee, offset 0x3b80\n\t0x3b80: 0x000a, 0x3b81: 0x000a, 0x3b82: 0x000a, 0x3b83: 0x000a, 0x3b84: 0x000a, 0x3b85: 0x000a,\n\t0x3b86: 0x000a, 0x3b87: 0x000a, 0x3b88: 0x000a, 0x3b89: 0x000a, 0x3b8a: 0x000a, 0x3b8b: 0x000a,\n\t0x3b8c: 0x000a, 0x3b8d: 0x000a, 0x3b8e: 0x000a, 0x3b8f: 0x000a, 0x3b90: 0x000a, 0x3b91: 0x000a,\n\t0x3b92: 0x000a, 0x3b93: 0x000a, 0x3b94: 0x000a, 0x3b95: 0x000a, 0x3b96: 0x000a, 0x3b97: 0x000a,\n\t0x3b98: 0x000a, 0x3b99: 0x000a, 0x3b9a: 0x000a, 0x3b9b: 0x000a, 0x3b9c: 0x000a, 0x3b9d: 0x000a,\n\t0x3b9e: 0x000a, 0x3b9f: 0x000a, 0x3ba0: 0x000a, 0x3ba1: 0x000a, 0x3ba2: 0x000a, 0x3ba3: 0x000a,\n\t0x3ba4: 0x000a, 0x3ba5: 0x000a, 0x3ba6: 0x000a, 0x3ba7: 0x000a, 0x3ba8: 0x000a, 0x3ba9: 0x000a,\n\t0x3baa: 0x000a, 0x3bab: 0x000a, 0x3bac: 0x000a, 0x3bad: 0x000a, 0x3bae: 0x000a, 0x3baf: 0x000a,\n\t0x3bb0: 0x000a, 0x3bb1: 0x000a, 0x3bb2: 0x000a, 0x3bb3: 0x000a, 0x3bb4: 0x000a, 0x3bb5: 0x000a,\n\t0x3bb6: 0x000a, 0x3bb7: 0x000a, 0x3bb8: 0x000a, 0x3bba: 0x000a, 0x3bbb: 0x000a,\n\t0x3bbc: 0x000a, 0x3bbd: 0x000a, 0x3bbe: 0x000a, 0x3bbf: 0x000a,\n\t// Block 0xef, offset 0x3bc0\n\t0x3bc0: 0x000a, 0x3bc1: 0x000a, 0x3bc2: 0x000a, 0x3bc3: 0x000a, 0x3bc4: 0x000a, 0x3bc5: 0x000a,\n\t0x3bc6: 0x000a, 0x3bc7: 0x000a, 0x3bc8: 0x000a, 0x3bc9: 0x000a, 0x3bca: 0x000a, 0x3bcb: 0x000a,\n\t0x3bcd: 0x000a, 0x3bce: 0x000a, 0x3bcf: 0x000a, 0x3bd0: 0x000a, 0x3bd1: 0x000a,\n\t0x3bd2: 0x000a, 0x3bd3: 0x000a, 0x3bd4: 0x000a, 0x3bd5: 0x000a, 0x3bd6: 0x000a, 0x3bd7: 0x000a,\n\t0x3bd8: 0x000a, 0x3bd9: 0x000a, 0x3bda: 0x000a, 0x3bdb: 0x000a, 0x3bdc: 0x000a, 0x3bdd: 0x000a,\n\t0x3bde: 0x000a, 0x3bdf: 0x000a, 0x3be0: 0x000a, 0x3be1: 0x000a, 0x3be2: 0x000a, 0x3be3: 0x000a,\n\t0x3be4: 0x000a, 0x3be5: 0x000a, 0x3be6: 0x000a, 0x3be7: 0x000a, 0x3be8: 0x000a, 0x3be9: 0x000a,\n\t0x3bea: 0x000a, 0x3beb: 0x000a, 0x3bec: 0x000a, 0x3bed: 0x000a, 0x3bee: 0x000a, 0x3bef: 0x000a,\n\t0x3bf0: 0x000a, 0x3bf1: 0x000a, 0x3bf2: 0x000a, 0x3bf3: 0x000a, 0x3bf4: 0x000a, 0x3bf5: 0x000a,\n\t0x3bf6: 0x000a, 0x3bf7: 0x000a, 0x3bf8: 0x000a, 0x3bf9: 0x000a, 0x3bfa: 0x000a, 0x3bfb: 0x000a,\n\t0x3bfc: 0x000a, 0x3bfd: 0x000a, 0x3bfe: 0x000a, 0x3bff: 0x000a,\n\t// Block 0xf0, offset 0x3c00\n\t0x3c00: 0x000a, 0x3c01: 0x000a, 0x3c02: 0x000a, 0x3c03: 0x000a, 0x3c04: 0x000a, 0x3c05: 0x000a,\n\t0x3c06: 0x000a, 0x3c07: 0x000a, 0x3c08: 0x000a, 0x3c09: 0x000a, 0x3c0a: 0x000a, 0x3c0b: 0x000a,\n\t0x3c0c: 0x000a, 0x3c0d: 0x000a, 0x3c0e: 0x000a, 0x3c0f: 0x000a, 0x3c10: 0x000a, 0x3c11: 0x000a,\n\t0x3c12: 0x000a, 0x3c13: 0x000a,\n\t0x3c20: 0x000a, 0x3c21: 0x000a, 0x3c22: 0x000a, 0x3c23: 0x000a,\n\t0x3c24: 0x000a, 0x3c25: 0x000a, 0x3c26: 0x000a, 0x3c27: 0x000a, 0x3c28: 0x000a, 0x3c29: 0x000a,\n\t0x3c2a: 0x000a, 0x3c2b: 0x000a, 0x3c2c: 0x000a, 0x3c2d: 0x000a,\n\t0x3c30: 0x000a, 0x3c31: 0x000a, 0x3c32: 0x000a, 0x3c33: 0x000a, 0x3c34: 0x000a,\n\t0x3c38: 0x000a, 0x3c39: 0x000a, 0x3c3a: 0x000a,\n\t// Block 0xf1, offset 0x3c40\n\t0x3c40: 0x000a, 0x3c41: 0x000a, 0x3c42: 0x000a, 0x3c43: 0x000a, 0x3c44: 0x000a, 0x3c45: 0x000a,\n\t0x3c46: 0x000a,\n\t0x3c50: 0x000a, 0x3c51: 0x000a,\n\t0x3c52: 0x000a, 0x3c53: 0x000a, 0x3c54: 0x000a, 0x3c55: 0x000a, 0x3c56: 0x000a, 0x3c57: 0x000a,\n\t0x3c58: 0x000a, 0x3c59: 0x000a, 0x3c5a: 0x000a, 0x3c5b: 0x000a, 0x3c5c: 0x000a, 0x3c5d: 0x000a,\n\t0x3c5e: 0x000a, 0x3c5f: 0x000a, 0x3c60: 0x000a, 0x3c61: 0x000a, 0x3c62: 0x000a, 0x3c63: 0x000a,\n\t0x3c64: 0x000a, 0x3c65: 0x000a, 0x3c66: 0x000a, 0x3c67: 0x000a, 0x3c68: 0x000a,\n\t0x3c70: 0x000a, 0x3c71: 0x000a, 0x3c72: 0x000a, 0x3c73: 0x000a, 0x3c74: 0x000a, 0x3c75: 0x000a,\n\t0x3c76: 0x000a,\n\t// Block 0xf2, offset 0x3c80\n\t0x3c80: 0x000a, 0x3c81: 0x000a, 0x3c82: 0x000a,\n\t0x3c90: 0x000a, 0x3c91: 0x000a,\n\t0x3c92: 0x000a, 0x3c93: 0x000a, 0x3c94: 0x000a, 0x3c95: 0x000a, 0x3c96: 0x000a,\n\t// Block 0xf3, offset 0x3cc0\n\t0x3cc0: 0x000a, 0x3cc1: 0x000a, 0x3cc2: 0x000a, 0x3cc3: 0x000a, 0x3cc4: 0x000a, 0x3cc5: 0x000a,\n\t0x3cc6: 0x000a, 0x3cc7: 0x000a, 0x3cc8: 0x000a, 0x3cc9: 0x000a, 0x3cca: 0x000a, 0x3ccb: 0x000a,\n\t0x3ccc: 0x000a, 0x3ccd: 0x000a, 0x3cce: 0x000a, 0x3ccf: 0x000a, 0x3cd0: 0x000a, 0x3cd1: 0x000a,\n\t0x3cd2: 0x000a, 0x3cd4: 0x000a, 0x3cd5: 0x000a, 0x3cd6: 0x000a, 0x3cd7: 0x000a,\n\t0x3cd8: 0x000a, 0x3cd9: 0x000a, 0x3cda: 0x000a, 0x3cdb: 0x000a, 0x3cdc: 0x000a, 0x3cdd: 0x000a,\n\t0x3cde: 0x000a, 0x3cdf: 0x000a, 0x3ce0: 0x000a, 0x3ce1: 0x000a, 0x3ce2: 0x000a, 0x3ce3: 0x000a,\n\t0x3ce4: 0x000a, 0x3ce5: 0x000a, 0x3ce6: 0x000a, 0x3ce7: 0x000a, 0x3ce8: 0x000a, 0x3ce9: 0x000a,\n\t0x3cea: 0x000a, 0x3ceb: 0x000a, 0x3cec: 0x000a, 0x3ced: 0x000a, 0x3cee: 0x000a, 0x3cef: 0x000a,\n\t0x3cf0: 0x000a, 0x3cf1: 0x000a, 0x3cf2: 0x000a, 0x3cf3: 0x000a, 0x3cf4: 0x000a, 0x3cf5: 0x000a,\n\t0x3cf6: 0x000a, 0x3cf7: 0x000a, 0x3cf8: 0x000a, 0x3cf9: 0x000a, 0x3cfa: 0x000a, 0x3cfb: 0x000a,\n\t0x3cfc: 0x000a, 0x3cfd: 0x000a, 0x3cfe: 0x000a, 0x3cff: 0x000a,\n\t// Block 0xf4, offset 0x3d00\n\t0x3d00: 0x000a, 0x3d01: 0x000a, 0x3d02: 0x000a, 0x3d03: 0x000a, 0x3d04: 0x000a, 0x3d05: 0x000a,\n\t0x3d06: 0x000a, 0x3d07: 0x000a, 0x3d08: 0x000a, 0x3d09: 0x000a, 0x3d0a: 0x000a,\n\t0x3d30: 0x0002, 0x3d31: 0x0002, 0x3d32: 0x0002, 0x3d33: 0x0002, 0x3d34: 0x0002, 0x3d35: 0x0002,\n\t0x3d36: 0x0002, 0x3d37: 0x0002, 0x3d38: 0x0002, 0x3d39: 0x0002,\n\t// Block 0xf5, offset 0x3d40\n\t0x3d7e: 0x000b, 0x3d7f: 0x000b,\n\t// Block 0xf6, offset 0x3d80\n\t0x3d80: 0x000b, 0x3d81: 0x000b, 0x3d82: 0x000b, 0x3d83: 0x000b, 0x3d84: 0x000b, 0x3d85: 0x000b,\n\t0x3d86: 0x000b, 0x3d87: 0x000b, 0x3d88: 0x000b, 0x3d89: 0x000b, 0x3d8a: 0x000b, 0x3d8b: 0x000b,\n\t0x3d8c: 0x000b, 0x3d8d: 0x000b, 0x3d8e: 0x000b, 0x3d8f: 0x000b, 0x3d90: 0x000b, 0x3d91: 0x000b,\n\t0x3d92: 0x000b, 0x3d93: 0x000b, 0x3d94: 0x000b, 0x3d95: 0x000b, 0x3d96: 0x000b, 0x3d97: 0x000b,\n\t0x3d98: 0x000b, 0x3d99: 0x000b, 0x3d9a: 0x000b, 0x3d9b: 0x000b, 0x3d9c: 0x000b, 0x3d9d: 0x000b,\n\t0x3d9e: 0x000b, 0x3d9f: 0x000b, 0x3da0: 0x000b, 0x3da1: 0x000b, 0x3da2: 0x000b, 0x3da3: 0x000b,\n\t0x3da4: 0x000b, 0x3da5: 0x000b, 0x3da6: 0x000b, 0x3da7: 0x000b, 0x3da8: 0x000b, 0x3da9: 0x000b,\n\t0x3daa: 0x000b, 0x3dab: 0x000b, 0x3dac: 0x000b, 0x3dad: 0x000b, 0x3dae: 0x000b, 0x3daf: 0x000b,\n\t0x3db0: 0x000b, 0x3db1: 0x000b, 0x3db2: 0x000b, 0x3db3: 0x000b, 0x3db4: 0x000b, 0x3db5: 0x000b,\n\t0x3db6: 0x000b, 0x3db7: 0x000b, 0x3db8: 0x000b, 0x3db9: 0x000b, 0x3dba: 0x000b, 0x3dbb: 0x000b,\n\t0x3dbc: 0x000b, 0x3dbd: 0x000b, 0x3dbe: 0x000b, 0x3dbf: 0x000b,\n\t// Block 0xf7, offset 0x3dc0\n\t0x3dc0: 0x000c, 0x3dc1: 0x000c, 0x3dc2: 0x000c, 0x3dc3: 0x000c, 0x3dc4: 0x000c, 0x3dc5: 0x000c,\n\t0x3dc6: 0x000c, 0x3dc7: 0x000c, 0x3dc8: 0x000c, 0x3dc9: 0x000c, 0x3dca: 0x000c, 0x3dcb: 0x000c,\n\t0x3dcc: 0x000c, 0x3dcd: 0x000c, 0x3dce: 0x000c, 0x3dcf: 0x000c, 0x3dd0: 0x000c, 0x3dd1: 0x000c,\n\t0x3dd2: 0x000c, 0x3dd3: 0x000c, 0x3dd4: 0x000c, 0x3dd5: 0x000c, 0x3dd6: 0x000c, 0x3dd7: 0x000c,\n\t0x3dd8: 0x000c, 0x3dd9: 0x000c, 0x3dda: 0x000c, 0x3ddb: 0x000c, 0x3ddc: 0x000c, 0x3ddd: 0x000c,\n\t0x3dde: 0x000c, 0x3ddf: 0x000c, 0x3de0: 0x000c, 0x3de1: 0x000c, 0x3de2: 0x000c, 0x3de3: 0x000c,\n\t0x3de4: 0x000c, 0x3de5: 0x000c, 0x3de6: 0x000c, 0x3de7: 0x000c, 0x3de8: 0x000c, 0x3de9: 0x000c,\n\t0x3dea: 0x000c, 0x3deb: 0x000c, 0x3dec: 0x000c, 0x3ded: 0x000c, 0x3dee: 0x000c, 0x3def: 0x000c,\n\t0x3df0: 0x000b, 0x3df1: 0x000b, 0x3df2: 0x000b, 0x3df3: 0x000b, 0x3df4: 0x000b, 0x3df5: 0x000b,\n\t0x3df6: 0x000b, 0x3df7: 0x000b, 0x3df8: 0x000b, 0x3df9: 0x000b, 0x3dfa: 0x000b, 0x3dfb: 0x000b,\n\t0x3dfc: 0x000b, 0x3dfd: 0x000b, 0x3dfe: 0x000b, 0x3dff: 0x000b,\n}\n\n// bidiIndex: 24 blocks, 1536 entries, 1536 bytes\n// Block 0 is the zero block.\nvar bidiIndex = [1536]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x02,\n\t0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08,\n\t0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b,\n\t0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06,\n\t0xea: 0x07, 0xef: 0x08,\n\t0xf0: 0x11, 0xf1: 0x12, 0xf2: 0x12, 0xf3: 0x14, 0xf4: 0x15,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b,\n\t0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22,\n\t0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x136: 0x28, 0x137: 0x29,\n\t0x138: 0x2a, 0x139: 0x2b, 0x13a: 0x2c, 0x13b: 0x2d, 0x13c: 0x2e, 0x13d: 0x2f, 0x13e: 0x30, 0x13f: 0x31,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x32, 0x141: 0x33, 0x142: 0x34,\n\t0x14d: 0x35, 0x14e: 0x36,\n\t0x150: 0x37,\n\t0x15a: 0x38, 0x15c: 0x39, 0x15d: 0x3a, 0x15e: 0x3b, 0x15f: 0x3c,\n\t0x160: 0x3d, 0x162: 0x3e, 0x164: 0x3f, 0x165: 0x40, 0x167: 0x41,\n\t0x168: 0x42, 0x169: 0x43, 0x16a: 0x44, 0x16b: 0x45, 0x16c: 0x46, 0x16d: 0x47, 0x16e: 0x48, 0x16f: 0x49,\n\t0x170: 0x4a, 0x173: 0x4b, 0x177: 0x4c,\n\t0x17e: 0x4d, 0x17f: 0x4e,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x4f, 0x181: 0x50, 0x182: 0x51, 0x183: 0x52, 0x184: 0x53, 0x185: 0x54, 0x186: 0x55, 0x187: 0x56,\n\t0x188: 0x57, 0x189: 0x56, 0x18a: 0x56, 0x18b: 0x56, 0x18c: 0x58, 0x18d: 0x59, 0x18e: 0x5a, 0x18f: 0x56,\n\t0x190: 0x5b, 0x191: 0x5c, 0x192: 0x5d, 0x193: 0x5e, 0x194: 0x56, 0x195: 0x56, 0x196: 0x56, 0x197: 0x56,\n\t0x198: 0x56, 0x199: 0x56, 0x19a: 0x5f, 0x19b: 0x56, 0x19c: 0x56, 0x19d: 0x60, 0x19e: 0x56, 0x19f: 0x61,\n\t0x1a4: 0x56, 0x1a5: 0x56, 0x1a6: 0x62, 0x1a7: 0x63,\n\t0x1a8: 0x56, 0x1a9: 0x56, 0x1aa: 0x56, 0x1ab: 0x56, 0x1ac: 0x56, 0x1ad: 0x64, 0x1ae: 0x65, 0x1af: 0x56,\n\t0x1b3: 0x66, 0x1b5: 0x67, 0x1b7: 0x68,\n\t0x1b8: 0x69, 0x1b9: 0x6a, 0x1ba: 0x6b, 0x1bb: 0x6c, 0x1bc: 0x56, 0x1bd: 0x56, 0x1be: 0x56, 0x1bf: 0x6d,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x6e, 0x1c2: 0x6f, 0x1c3: 0x70, 0x1c7: 0x71,\n\t0x1c8: 0x72, 0x1c9: 0x73, 0x1ca: 0x74, 0x1cb: 0x75, 0x1cd: 0x76, 0x1cf: 0x77,\n\t// Block 0x8, offset 0x200\n\t0x237: 0x56,\n\t// Block 0x9, offset 0x240\n\t0x252: 0x78, 0x253: 0x79,\n\t0x258: 0x7a, 0x259: 0x7b, 0x25a: 0x7c, 0x25b: 0x7d, 0x25c: 0x7e, 0x25e: 0x7f,\n\t0x260: 0x80, 0x261: 0x81, 0x263: 0x82, 0x264: 0x83, 0x265: 0x84, 0x266: 0x85, 0x267: 0x86,\n\t0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26d: 0x8b, 0x26f: 0x8c,\n\t// Block 0xa, offset 0x280\n\t0x2ac: 0x8d, 0x2ad: 0x8e, 0x2ae: 0x0e, 0x2af: 0x0e,\n\t0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8f, 0x2b5: 0x0e, 0x2b6: 0x0e, 0x2b7: 0x90,\n\t0x2b8: 0x91, 0x2b9: 0x92, 0x2ba: 0x0e, 0x2bb: 0x93, 0x2bc: 0x94, 0x2bd: 0x95, 0x2bf: 0x96,\n\t// Block 0xb, offset 0x2c0\n\t0x2c4: 0x97, 0x2c5: 0x56, 0x2c6: 0x98, 0x2c7: 0x99,\n\t0x2cb: 0x9a, 0x2cd: 0x9b,\n\t0x2e0: 0x9c, 0x2e1: 0x9c, 0x2e2: 0x9c, 0x2e3: 0x9c, 0x2e4: 0x9d, 0x2e5: 0x9c, 0x2e6: 0x9c, 0x2e7: 0x9c,\n\t0x2e8: 0x9e, 0x2e9: 0x9c, 0x2ea: 0x9c, 0x2eb: 0x9f, 0x2ec: 0xa0, 0x2ed: 0x9c, 0x2ee: 0x9c, 0x2ef: 0x9c,\n\t0x2f0: 0x9c, 0x2f1: 0x9c, 0x2f2: 0x9c, 0x2f3: 0x9c, 0x2f4: 0xa1, 0x2f5: 0x9c, 0x2f6: 0x9c, 0x2f7: 0x9c,\n\t0x2f8: 0x9c, 0x2f9: 0xa2, 0x2fa: 0xa3, 0x2fb: 0x9c, 0x2fc: 0xa4, 0x2fd: 0xa5, 0x2fe: 0x9c, 0x2ff: 0x9c,\n\t// Block 0xc, offset 0x300\n\t0x300: 0xa6, 0x301: 0xa7, 0x302: 0xa8, 0x304: 0xa9, 0x305: 0xaa, 0x306: 0xab, 0x307: 0xac,\n\t0x308: 0xad, 0x30b: 0xae, 0x30c: 0x26, 0x30d: 0xaf,\n\t0x310: 0xb0, 0x311: 0xb1, 0x312: 0xb2, 0x313: 0xb3, 0x316: 0xb4, 0x317: 0xb5,\n\t0x318: 0xb6, 0x319: 0xb7, 0x31a: 0xb8, 0x31c: 0xb9,\n\t0x320: 0xba, 0x324: 0xbb, 0x325: 0xbc, 0x327: 0xbd,\n\t0x328: 0xbe, 0x329: 0xbf, 0x32a: 0xc0,\n\t0x330: 0xc1, 0x332: 0xc2, 0x334: 0xc3, 0x335: 0xc4, 0x336: 0xc5,\n\t0x33b: 0xc6, 0x33f: 0xc7,\n\t// Block 0xd, offset 0x340\n\t0x36b: 0xc8, 0x36c: 0xc9,\n\t0x37d: 0xca, 0x37e: 0xcb, 0x37f: 0xcc,\n\t// Block 0xe, offset 0x380\n\t0x3b2: 0xcd,\n\t// Block 0xf, offset 0x3c0\n\t0x3c5: 0xce, 0x3c6: 0xcf,\n\t0x3c8: 0x56, 0x3c9: 0xd0, 0x3cc: 0x56, 0x3cd: 0xd1,\n\t0x3db: 0xd2, 0x3dc: 0xd3, 0x3dd: 0xd4, 0x3de: 0xd5, 0x3df: 0xd6,\n\t0x3e8: 0xd7, 0x3e9: 0xd8, 0x3ea: 0xd9,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xda, 0x404: 0xc9,\n\t0x40b: 0xdb,\n\t0x420: 0x9c, 0x421: 0x9c, 0x422: 0x9c, 0x423: 0xdc, 0x424: 0x9c, 0x425: 0xdd, 0x426: 0x9c, 0x427: 0x9c,\n\t0x428: 0x9c, 0x429: 0x9c, 0x42a: 0x9c, 0x42b: 0x9c, 0x42c: 0x9c, 0x42d: 0x9c, 0x42e: 0x9c, 0x42f: 0x9c,\n\t0x430: 0x9c, 0x431: 0xa4, 0x432: 0x0e, 0x433: 0x9c, 0x434: 0x0e, 0x435: 0xde, 0x436: 0x9c, 0x437: 0x9c,\n\t0x438: 0x0e, 0x439: 0x0e, 0x43a: 0x0e, 0x43b: 0xdf, 0x43c: 0x9c, 0x43d: 0x9c, 0x43e: 0x9c, 0x43f: 0x9c,\n\t// Block 0x11, offset 0x440\n\t0x440: 0xe0, 0x441: 0x56, 0x442: 0xe1, 0x443: 0xe2, 0x444: 0xe3, 0x445: 0xe4, 0x446: 0xe5,\n\t0x449: 0xe6, 0x44c: 0x56, 0x44d: 0x56, 0x44e: 0x56, 0x44f: 0x56,\n\t0x450: 0x56, 0x451: 0x56, 0x452: 0x56, 0x453: 0x56, 0x454: 0x56, 0x455: 0x56, 0x456: 0x56, 0x457: 0x56,\n\t0x458: 0x56, 0x459: 0x56, 0x45a: 0x56, 0x45b: 0xe7, 0x45c: 0x56, 0x45d: 0x6c, 0x45e: 0x56, 0x45f: 0xe8,\n\t0x460: 0xe9, 0x461: 0xea, 0x462: 0xeb, 0x464: 0x56, 0x465: 0xec, 0x466: 0x56, 0x467: 0xed,\n\t0x468: 0x56, 0x469: 0xee, 0x46a: 0xef, 0x46b: 0xf0, 0x46c: 0x56, 0x46d: 0x56, 0x46e: 0xf1, 0x46f: 0xf2,\n\t0x47f: 0xf3,\n\t// Block 0x12, offset 0x480\n\t0x4bf: 0xf3,\n\t// Block 0x13, offset 0x4c0\n\t0x4d0: 0x09, 0x4d1: 0x0a, 0x4d6: 0x0b,\n\t0x4db: 0x0c, 0x4dd: 0x0d, 0x4de: 0x0e, 0x4df: 0x0f,\n\t0x4ef: 0x10,\n\t0x4ff: 0x10,\n\t// Block 0x14, offset 0x500\n\t0x50f: 0x10,\n\t0x51f: 0x10,\n\t0x52f: 0x10,\n\t0x53f: 0x10,\n\t// Block 0x15, offset 0x540\n\t0x540: 0xf4, 0x541: 0xf4, 0x542: 0xf4, 0x543: 0xf4, 0x544: 0x05, 0x545: 0x05, 0x546: 0x05, 0x547: 0xf5,\n\t0x548: 0xf4, 0x549: 0xf4, 0x54a: 0xf4, 0x54b: 0xf4, 0x54c: 0xf4, 0x54d: 0xf4, 0x54e: 0xf4, 0x54f: 0xf4,\n\t0x550: 0xf4, 0x551: 0xf4, 0x552: 0xf4, 0x553: 0xf4, 0x554: 0xf4, 0x555: 0xf4, 0x556: 0xf4, 0x557: 0xf4,\n\t0x558: 0xf4, 0x559: 0xf4, 0x55a: 0xf4, 0x55b: 0xf4, 0x55c: 0xf4, 0x55d: 0xf4, 0x55e: 0xf4, 0x55f: 0xf4,\n\t0x560: 0xf4, 0x561: 0xf4, 0x562: 0xf4, 0x563: 0xf4, 0x564: 0xf4, 0x565: 0xf4, 0x566: 0xf4, 0x567: 0xf4,\n\t0x568: 0xf4, 0x569: 0xf4, 0x56a: 0xf4, 0x56b: 0xf4, 0x56c: 0xf4, 0x56d: 0xf4, 0x56e: 0xf4, 0x56f: 0xf4,\n\t0x570: 0xf4, 0x571: 0xf4, 0x572: 0xf4, 0x573: 0xf4, 0x574: 0xf4, 0x575: 0xf4, 0x576: 0xf4, 0x577: 0xf4,\n\t0x578: 0xf4, 0x579: 0xf4, 0x57a: 0xf4, 0x57b: 0xf4, 0x57c: 0xf4, 0x57d: 0xf4, 0x57e: 0xf4, 0x57f: 0xf4,\n\t// Block 0x16, offset 0x580\n\t0x58f: 0x10,\n\t0x59f: 0x10,\n\t0x5a0: 0x13,\n\t0x5af: 0x10,\n\t0x5bf: 0x10,\n\t// Block 0x17, offset 0x5c0\n\t0x5cf: 0x10,\n}\n\n// Total table size 17464 bytes (17KiB); checksum: F50EF68C\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.21\n\npackage bidi\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"15.0.0\"\n\n// xorMasks contains masks to be xor-ed with brackets to get the reverse\n// version.\nvar xorMasks = []int32{ // 8 elements\n\t0, 1, 6, 7, 3, 15, 29, 63,\n} // Size: 56 bytes\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookup(s []byte) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupUnsafe(s []byte) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookupString(s string) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupStringUnsafe(s string) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// bidiTrie. Total size: 19904 bytes (19.44 KiB). Checksum: b1f201ed2debb6c8.\ntype bidiTrie struct{}\n\nfunc newBidiTrie(i int) *bidiTrie {\n\treturn &bidiTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *bidiTrie) lookupValue(n uint32, b byte) uint8 {\n\tswitch {\n\tdefault:\n\t\treturn uint8(bidiValues[n<<6+uint32(b)])\n\t}\n}\n\n// bidiValues: 259 blocks, 16576 entries, 16576 bytes\n// The third block is the zero block.\nvar bidiValues = [16576]uint8{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b,\n\t0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008,\n\t0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b,\n\t0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b,\n\t0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007,\n\t0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004,\n\t0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a,\n\t0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006,\n\t0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002,\n\t0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a,\n\t0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x000a,\n\t0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a,\n\t0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a,\n\t0x7b: 0x005a,\n\t0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007,\n\t0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b,\n\t0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b,\n\t0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b,\n\t0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b,\n\t0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004,\n\t0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a,\n\t0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a,\n\t0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a,\n\t0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a,\n\t0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a,\n\t// Block 0x4, offset 0x100\n\t0x117: 0x000a,\n\t0x137: 0x000a,\n\t// Block 0x5, offset 0x140\n\t0x179: 0x000a, 0x17a: 0x000a,\n\t// Block 0x6, offset 0x180\n\t0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a,\n\t0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a,\n\t0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a,\n\t0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a,\n\t0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a,\n\t0x19e: 0x000a, 0x19f: 0x000a,\n\t0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a,\n\t0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a,\n\t0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a,\n\t0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a,\n\t0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c,\n\t0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c,\n\t0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c,\n\t0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c,\n\t0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c,\n\t0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c,\n\t0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c,\n\t0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c,\n\t0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c,\n\t0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c,\n\t0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c,\n\t0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c,\n\t0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c,\n\t0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c,\n\t0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c,\n\t0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c,\n\t0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c,\n\t0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c,\n\t0x234: 0x000a, 0x235: 0x000a,\n\t0x23e: 0x000a,\n\t// Block 0x9, offset 0x240\n\t0x244: 0x000a, 0x245: 0x000a,\n\t0x247: 0x000a,\n\t// Block 0xa, offset 0x280\n\t0x2b6: 0x000a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c,\n\t0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c,\n\t// Block 0xc, offset 0x300\n\t0x30a: 0x000a,\n\t0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c,\n\t0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c,\n\t0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c,\n\t0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c,\n\t0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c,\n\t0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c,\n\t0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c,\n\t0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c,\n\t0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c,\n\t0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001,\n\t0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001,\n\t0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001,\n\t0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001,\n\t0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001,\n\t0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001,\n\t0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001,\n\t0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001,\n\t0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001,\n\t0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001,\n\t// Block 0xe, offset 0x380\n\t0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005,\n\t0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d,\n\t0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c,\n\t0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c,\n\t0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d,\n\t0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d,\n\t0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d,\n\t0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d,\n\t0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d,\n\t0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d,\n\t0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d,\n\t0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c,\n\t0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c,\n\t0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c,\n\t0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c,\n\t0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005,\n\t0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005,\n\t0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d,\n\t0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d,\n\t0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d,\n\t0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d,\n\t0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d,\n\t0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d,\n\t0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d,\n\t0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d,\n\t0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d,\n\t0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d,\n\t0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d,\n\t0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d,\n\t0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d,\n\t0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d,\n\t0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d,\n\t0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d,\n\t0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c,\n\t0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005,\n\t0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c,\n\t0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a,\n\t0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d,\n\t0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002,\n\t0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d,\n\t0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d,\n\t0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d,\n\t0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c,\n\t0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d,\n\t0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d,\n\t0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d,\n\t0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d,\n\t0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d,\n\t0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c,\n\t0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c,\n\t0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c,\n\t0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d,\n\t0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d,\n\t0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d,\n\t0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d,\n\t0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d,\n\t0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d,\n\t0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d,\n\t0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d,\n\t0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d,\n\t0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d,\n\t0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d,\n\t0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d,\n\t0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d,\n\t0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d,\n\t0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d,\n\t0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c,\n\t0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c,\n\t0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d,\n\t0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d,\n\t0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001,\n\t0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001,\n\t0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001,\n\t0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001,\n\t0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001,\n\t0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001,\n\t0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001,\n\t0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c,\n\t0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001,\n\t0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001,\n\t0x57c: 0x0001, 0x57d: 0x000c, 0x57e: 0x0001, 0x57f: 0x0001,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001,\n\t0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001,\n\t0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001,\n\t0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c,\n\t0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c,\n\t0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c,\n\t0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c,\n\t0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001,\n\t0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001,\n\t0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001,\n\t0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001,\n\t0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001,\n\t0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001,\n\t0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001,\n\t0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001,\n\t0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x000d, 0x5e1: 0x000d, 0x5e2: 0x000d, 0x5e3: 0x000d,\n\t0x5e4: 0x000d, 0x5e5: 0x000d, 0x5e6: 0x000d, 0x5e7: 0x000d, 0x5e8: 0x000d, 0x5e9: 0x000d,\n\t0x5ea: 0x000d, 0x5eb: 0x0001, 0x5ec: 0x0001, 0x5ed: 0x0001, 0x5ee: 0x0001, 0x5ef: 0x0001,\n\t0x5f0: 0x000d, 0x5f1: 0x000d, 0x5f2: 0x000d, 0x5f3: 0x000d, 0x5f4: 0x000d, 0x5f5: 0x000d,\n\t0x5f6: 0x000d, 0x5f7: 0x000d, 0x5f8: 0x000d, 0x5f9: 0x000d, 0x5fa: 0x000d, 0x5fb: 0x000d,\n\t0x5fc: 0x000d, 0x5fd: 0x000d, 0x5fe: 0x000d, 0x5ff: 0x000d,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x000d, 0x601: 0x000d, 0x602: 0x000d, 0x603: 0x000d, 0x604: 0x000d, 0x605: 0x000d,\n\t0x606: 0x000d, 0x607: 0x000d, 0x608: 0x000d, 0x609: 0x000d, 0x60a: 0x000d, 0x60b: 0x000d,\n\t0x60c: 0x000d, 0x60d: 0x000d, 0x60e: 0x000d, 0x60f: 0x0001, 0x610: 0x0005, 0x611: 0x0005,\n\t0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001,\n\t0x618: 0x000c, 0x619: 0x000c, 0x61a: 0x000c, 0x61b: 0x000c, 0x61c: 0x000c, 0x61d: 0x000c,\n\t0x61e: 0x000c, 0x61f: 0x000c, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d,\n\t0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d,\n\t0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d,\n\t0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d,\n\t0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d,\n\t0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d,\n\t0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000c, 0x64b: 0x000c,\n\t0x64c: 0x000c, 0x64d: 0x000c, 0x64e: 0x000c, 0x64f: 0x000c, 0x650: 0x000c, 0x651: 0x000c,\n\t0x652: 0x000c, 0x653: 0x000c, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c,\n\t0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c,\n\t0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c,\n\t0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c,\n\t0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c,\n\t0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c,\n\t0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c,\n\t0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c,\n\t0x6ba: 0x000c,\n\t0x6bc: 0x000c,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c,\n\t0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c,\n\t0x6cd: 0x000c, 0x6d1: 0x000c,\n\t0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c,\n\t0x6e2: 0x000c, 0x6e3: 0x000c,\n\t// Block 0x1c, offset 0x700\n\t0x701: 0x000c,\n\t0x73c: 0x000c,\n\t// Block 0x1d, offset 0x740\n\t0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c,\n\t0x74d: 0x000c,\n\t0x762: 0x000c, 0x763: 0x000c,\n\t0x772: 0x0004, 0x773: 0x0004,\n\t0x77b: 0x0004,\n\t0x77e: 0x000c,\n\t// Block 0x1e, offset 0x780\n\t0x781: 0x000c, 0x782: 0x000c,\n\t0x7bc: 0x000c,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x000c, 0x7c2: 0x000c,\n\t0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c,\n\t0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c,\n\t0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c,\n\t// Block 0x20, offset 0x800\n\t0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c,\n\t0x807: 0x000c, 0x808: 0x000c,\n\t0x80d: 0x000c,\n\t0x822: 0x000c, 0x823: 0x000c,\n\t0x831: 0x0004,\n\t0x83a: 0x000c, 0x83b: 0x000c,\n\t0x83c: 0x000c, 0x83d: 0x000c, 0x83e: 0x000c, 0x83f: 0x000c,\n\t// Block 0x21, offset 0x840\n\t0x841: 0x000c,\n\t0x87c: 0x000c, 0x87f: 0x000c,\n\t// Block 0x22, offset 0x880\n\t0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c,\n\t0x88d: 0x000c,\n\t0x895: 0x000c, 0x896: 0x000c,\n\t0x8a2: 0x000c, 0x8a3: 0x000c,\n\t// Block 0x23, offset 0x8c0\n\t0x8c2: 0x000c,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x000c,\n\t0x90d: 0x000c,\n\t0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a,\n\t0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x000c, 0x944: 0x000c,\n\t0x97c: 0x000c, 0x97e: 0x000c, 0x97f: 0x000c,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x000c,\n\t0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c,\n\t0x98c: 0x000c, 0x98d: 0x000c,\n\t0x995: 0x000c, 0x996: 0x000c,\n\t0x9a2: 0x000c, 0x9a3: 0x000c,\n\t0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a,\n\t0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a,\n\t// Block 0x27, offset 0x9c0\n\t0x9cc: 0x000c, 0x9cd: 0x000c,\n\t0x9e2: 0x000c, 0x9e3: 0x000c,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x000c, 0xa01: 0x000c,\n\t0xa3b: 0x000c,\n\t0xa3c: 0x000c,\n\t// Block 0x29, offset 0xa40\n\t0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c,\n\t0xa4d: 0x000c,\n\t0xa62: 0x000c, 0xa63: 0x000c,\n\t// Block 0x2a, offset 0xa80\n\t0xa81: 0x000c,\n\t// Block 0x2b, offset 0xac0\n\t0xaca: 0x000c,\n\t0xad2: 0x000c, 0xad3: 0x000c, 0xad4: 0x000c, 0xad6: 0x000c,\n\t// Block 0x2c, offset 0xb00\n\t0xb31: 0x000c, 0xb34: 0x000c, 0xb35: 0x000c,\n\t0xb36: 0x000c, 0xb37: 0x000c, 0xb38: 0x000c, 0xb39: 0x000c, 0xb3a: 0x000c,\n\t0xb3f: 0x0004,\n\t// Block 0x2d, offset 0xb40\n\t0xb47: 0x000c, 0xb48: 0x000c, 0xb49: 0x000c, 0xb4a: 0x000c, 0xb4b: 0x000c,\n\t0xb4c: 0x000c, 0xb4d: 0x000c, 0xb4e: 0x000c,\n\t// Block 0x2e, offset 0xb80\n\t0xbb1: 0x000c, 0xbb4: 0x000c, 0xbb5: 0x000c,\n\t0xbb6: 0x000c, 0xbb7: 0x000c, 0xbb8: 0x000c, 0xbb9: 0x000c, 0xbba: 0x000c, 0xbbb: 0x000c,\n\t0xbbc: 0x000c,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc8: 0x000c, 0xbc9: 0x000c, 0xbca: 0x000c, 0xbcb: 0x000c,\n\t0xbcc: 0x000c, 0xbcd: 0x000c, 0xbce: 0x000c,\n\t// Block 0x30, offset 0xc00\n\t0xc18: 0x000c, 0xc19: 0x000c,\n\t0xc35: 0x000c,\n\t0xc37: 0x000c, 0xc39: 0x000c, 0xc3a: 0x003a, 0xc3b: 0x002a,\n\t0xc3c: 0x003a, 0xc3d: 0x002a,\n\t// Block 0x31, offset 0xc40\n\t0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c,\n\t0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c,\n\t0xc7c: 0x000c, 0xc7d: 0x000c, 0xc7e: 0x000c,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x000c, 0xc81: 0x000c, 0xc82: 0x000c, 0xc83: 0x000c, 0xc84: 0x000c,\n\t0xc86: 0x000c, 0xc87: 0x000c,\n\t0xc8d: 0x000c, 0xc8e: 0x000c, 0xc8f: 0x000c, 0xc90: 0x000c, 0xc91: 0x000c,\n\t0xc92: 0x000c, 0xc93: 0x000c, 0xc94: 0x000c, 0xc95: 0x000c, 0xc96: 0x000c, 0xc97: 0x000c,\n\t0xc99: 0x000c, 0xc9a: 0x000c, 0xc9b: 0x000c, 0xc9c: 0x000c, 0xc9d: 0x000c,\n\t0xc9e: 0x000c, 0xc9f: 0x000c, 0xca0: 0x000c, 0xca1: 0x000c, 0xca2: 0x000c, 0xca3: 0x000c,\n\t0xca4: 0x000c, 0xca5: 0x000c, 0xca6: 0x000c, 0xca7: 0x000c, 0xca8: 0x000c, 0xca9: 0x000c,\n\t0xcaa: 0x000c, 0xcab: 0x000c, 0xcac: 0x000c, 0xcad: 0x000c, 0xcae: 0x000c, 0xcaf: 0x000c,\n\t0xcb0: 0x000c, 0xcb1: 0x000c, 0xcb2: 0x000c, 0xcb3: 0x000c, 0xcb4: 0x000c, 0xcb5: 0x000c,\n\t0xcb6: 0x000c, 0xcb7: 0x000c, 0xcb8: 0x000c, 0xcb9: 0x000c, 0xcba: 0x000c, 0xcbb: 0x000c,\n\t0xcbc: 0x000c,\n\t// Block 0x33, offset 0xcc0\n\t0xcc6: 0x000c,\n\t// Block 0x34, offset 0xd00\n\t0xd2d: 0x000c, 0xd2e: 0x000c, 0xd2f: 0x000c,\n\t0xd30: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c, 0xd35: 0x000c,\n\t0xd36: 0x000c, 0xd37: 0x000c, 0xd39: 0x000c, 0xd3a: 0x000c,\n\t0xd3d: 0x000c, 0xd3e: 0x000c,\n\t// Block 0x35, offset 0xd40\n\t0xd58: 0x000c, 0xd59: 0x000c,\n\t0xd5e: 0x000c, 0xd5f: 0x000c, 0xd60: 0x000c,\n\t0xd71: 0x000c, 0xd72: 0x000c, 0xd73: 0x000c, 0xd74: 0x000c,\n\t// Block 0x36, offset 0xd80\n\t0xd82: 0x000c, 0xd85: 0x000c,\n\t0xd86: 0x000c,\n\t0xd8d: 0x000c,\n\t0xd9d: 0x000c,\n\t// Block 0x37, offset 0xdc0\n\t0xddd: 0x000c,\n\t0xdde: 0x000c, 0xddf: 0x000c,\n\t// Block 0x38, offset 0xe00\n\t0xe10: 0x000a, 0xe11: 0x000a,\n\t0xe12: 0x000a, 0xe13: 0x000a, 0xe14: 0x000a, 0xe15: 0x000a, 0xe16: 0x000a, 0xe17: 0x000a,\n\t0xe18: 0x000a, 0xe19: 0x000a,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x000a,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x0009,\n\t0xe9b: 0x007a, 0xe9c: 0x006a,\n\t// Block 0x3b, offset 0xec0\n\t0xed2: 0x000c, 0xed3: 0x000c, 0xed4: 0x000c,\n\t0xef2: 0x000c, 0xef3: 0x000c,\n\t// Block 0x3c, offset 0xf00\n\t0xf12: 0x000c, 0xf13: 0x000c,\n\t0xf32: 0x000c, 0xf33: 0x000c,\n\t// Block 0x3d, offset 0xf40\n\t0xf74: 0x000c, 0xf75: 0x000c,\n\t0xf77: 0x000c, 0xf78: 0x000c, 0xf79: 0x000c, 0xf7a: 0x000c, 0xf7b: 0x000c,\n\t0xf7c: 0x000c, 0xf7d: 0x000c,\n\t// Block 0x3e, offset 0xf80\n\t0xf86: 0x000c, 0xf89: 0x000c, 0xf8a: 0x000c, 0xf8b: 0x000c,\n\t0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000c, 0xf8f: 0x000c, 0xf90: 0x000c, 0xf91: 0x000c,\n\t0xf92: 0x000c, 0xf93: 0x000c,\n\t0xf9b: 0x0004, 0xf9d: 0x000c,\n\t0xfb0: 0x000a, 0xfb1: 0x000a, 0xfb2: 0x000a, 0xfb3: 0x000a, 0xfb4: 0x000a, 0xfb5: 0x000a,\n\t0xfb6: 0x000a, 0xfb7: 0x000a, 0xfb8: 0x000a, 0xfb9: 0x000a,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x000a, 0xfc1: 0x000a, 0xfc2: 0x000a, 0xfc3: 0x000a, 0xfc4: 0x000a, 0xfc5: 0x000a,\n\t0xfc6: 0x000a, 0xfc7: 0x000a, 0xfc8: 0x000a, 0xfc9: 0x000a, 0xfca: 0x000a, 0xfcb: 0x000c,\n\t0xfcc: 0x000c, 0xfcd: 0x000c, 0xfce: 0x000b, 0xfcf: 0x000c,\n\t// Block 0x40, offset 0x1000\n\t0x1005: 0x000c,\n\t0x1006: 0x000c,\n\t0x1029: 0x000c,\n\t// Block 0x41, offset 0x1040\n\t0x1060: 0x000c, 0x1061: 0x000c, 0x1062: 0x000c,\n\t0x1067: 0x000c, 0x1068: 0x000c,\n\t0x1072: 0x000c,\n\t0x1079: 0x000c, 0x107a: 0x000c, 0x107b: 0x000c,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x000a, 0x1084: 0x000a, 0x1085: 0x000a,\n\t// Block 0x43, offset 0x10c0\n\t0x10de: 0x000a, 0x10df: 0x000a, 0x10e0: 0x000a, 0x10e1: 0x000a, 0x10e2: 0x000a, 0x10e3: 0x000a,\n\t0x10e4: 0x000a, 0x10e5: 0x000a, 0x10e6: 0x000a, 0x10e7: 0x000a, 0x10e8: 0x000a, 0x10e9: 0x000a,\n\t0x10ea: 0x000a, 0x10eb: 0x000a, 0x10ec: 0x000a, 0x10ed: 0x000a, 0x10ee: 0x000a, 0x10ef: 0x000a,\n\t0x10f0: 0x000a, 0x10f1: 0x000a, 0x10f2: 0x000a, 0x10f3: 0x000a, 0x10f4: 0x000a, 0x10f5: 0x000a,\n\t0x10f6: 0x000a, 0x10f7: 0x000a, 0x10f8: 0x000a, 0x10f9: 0x000a, 0x10fa: 0x000a, 0x10fb: 0x000a,\n\t0x10fc: 0x000a, 0x10fd: 0x000a, 0x10fe: 0x000a, 0x10ff: 0x000a,\n\t// Block 0x44, offset 0x1100\n\t0x1117: 0x000c,\n\t0x1118: 0x000c, 0x111b: 0x000c,\n\t// Block 0x45, offset 0x1140\n\t0x1156: 0x000c,\n\t0x1158: 0x000c, 0x1159: 0x000c, 0x115a: 0x000c, 0x115b: 0x000c, 0x115c: 0x000c, 0x115d: 0x000c,\n\t0x115e: 0x000c, 0x1160: 0x000c, 0x1162: 0x000c,\n\t0x1165: 0x000c, 0x1166: 0x000c, 0x1167: 0x000c, 0x1168: 0x000c, 0x1169: 0x000c,\n\t0x116a: 0x000c, 0x116b: 0x000c, 0x116c: 0x000c,\n\t0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c,\n\t0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c,\n\t0x117c: 0x000c, 0x117f: 0x000c,\n\t// Block 0x46, offset 0x1180\n\t0x11b0: 0x000c, 0x11b1: 0x000c, 0x11b2: 0x000c, 0x11b3: 0x000c, 0x11b4: 0x000c, 0x11b5: 0x000c,\n\t0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c, 0x11bb: 0x000c,\n\t0x11bc: 0x000c, 0x11bd: 0x000c, 0x11be: 0x000c, 0x11bf: 0x000c,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0x000c, 0x11c1: 0x000c, 0x11c2: 0x000c, 0x11c3: 0x000c, 0x11c4: 0x000c, 0x11c5: 0x000c,\n\t0x11c6: 0x000c, 0x11c7: 0x000c, 0x11c8: 0x000c, 0x11c9: 0x000c, 0x11ca: 0x000c, 0x11cb: 0x000c,\n\t0x11cc: 0x000c, 0x11cd: 0x000c, 0x11ce: 0x000c,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x000c, 0x1201: 0x000c, 0x1202: 0x000c, 0x1203: 0x000c,\n\t0x1234: 0x000c,\n\t0x1236: 0x000c, 0x1237: 0x000c, 0x1238: 0x000c, 0x1239: 0x000c, 0x123a: 0x000c,\n\t0x123c: 0x000c,\n\t// Block 0x49, offset 0x1240\n\t0x1242: 0x000c,\n\t0x126b: 0x000c, 0x126c: 0x000c, 0x126d: 0x000c, 0x126e: 0x000c, 0x126f: 0x000c,\n\t0x1270: 0x000c, 0x1271: 0x000c, 0x1272: 0x000c, 0x1273: 0x000c,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x000c, 0x1281: 0x000c,\n\t0x12a2: 0x000c, 0x12a3: 0x000c,\n\t0x12a4: 0x000c, 0x12a5: 0x000c, 0x12a8: 0x000c, 0x12a9: 0x000c,\n\t0x12ab: 0x000c, 0x12ac: 0x000c, 0x12ad: 0x000c,\n\t// Block 0x4b, offset 0x12c0\n\t0x12e6: 0x000c, 0x12e8: 0x000c, 0x12e9: 0x000c,\n\t0x12ed: 0x000c, 0x12ef: 0x000c,\n\t0x12f0: 0x000c, 0x12f1: 0x000c,\n\t// Block 0x4c, offset 0x1300\n\t0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c,\n\t0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c,\n\t0x1336: 0x000c, 0x1337: 0x000c,\n\t// Block 0x4d, offset 0x1340\n\t0x1350: 0x000c, 0x1351: 0x000c,\n\t0x1352: 0x000c, 0x1354: 0x000c, 0x1355: 0x000c, 0x1356: 0x000c, 0x1357: 0x000c,\n\t0x1358: 0x000c, 0x1359: 0x000c, 0x135a: 0x000c, 0x135b: 0x000c, 0x135c: 0x000c, 0x135d: 0x000c,\n\t0x135e: 0x000c, 0x135f: 0x000c, 0x1360: 0x000c, 0x1362: 0x000c, 0x1363: 0x000c,\n\t0x1364: 0x000c, 0x1365: 0x000c, 0x1366: 0x000c, 0x1367: 0x000c, 0x1368: 0x000c,\n\t0x136d: 0x000c,\n\t0x1374: 0x000c,\n\t0x1378: 0x000c, 0x1379: 0x000c,\n\t// Block 0x4e, offset 0x1380\n\t0x13bd: 0x000a, 0x13bf: 0x000a,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x000a, 0x13c1: 0x000a,\n\t0x13cd: 0x000a, 0x13ce: 0x000a, 0x13cf: 0x000a,\n\t0x13dd: 0x000a,\n\t0x13de: 0x000a, 0x13df: 0x000a,\n\t0x13ed: 0x000a, 0x13ee: 0x000a, 0x13ef: 0x000a,\n\t0x13fd: 0x000a, 0x13fe: 0x000a,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x0009, 0x1401: 0x0009, 0x1402: 0x0009, 0x1403: 0x0009, 0x1404: 0x0009, 0x1405: 0x0009,\n\t0x1406: 0x0009, 0x1407: 0x0009, 0x1408: 0x0009, 0x1409: 0x0009, 0x140a: 0x0009, 0x140b: 0x000b,\n\t0x140c: 0x000b, 0x140d: 0x000b, 0x140f: 0x0001, 0x1410: 0x000a, 0x1411: 0x000a,\n\t0x1412: 0x000a, 0x1413: 0x000a, 0x1414: 0x000a, 0x1415: 0x000a, 0x1416: 0x000a, 0x1417: 0x000a,\n\t0x1418: 0x000a, 0x1419: 0x000a, 0x141a: 0x000a, 0x141b: 0x000a, 0x141c: 0x000a, 0x141d: 0x000a,\n\t0x141e: 0x000a, 0x141f: 0x000a, 0x1420: 0x000a, 0x1421: 0x000a, 0x1422: 0x000a, 0x1423: 0x000a,\n\t0x1424: 0x000a, 0x1425: 0x000a, 0x1426: 0x000a, 0x1427: 0x000a, 0x1428: 0x0009, 0x1429: 0x0007,\n\t0x142a: 0x000e, 0x142b: 0x000e, 0x142c: 0x000e, 0x142d: 0x000e, 0x142e: 0x000e, 0x142f: 0x0006,\n\t0x1430: 0x0004, 0x1431: 0x0004, 0x1432: 0x0004, 0x1433: 0x0004, 0x1434: 0x0004, 0x1435: 0x000a,\n\t0x1436: 0x000a, 0x1437: 0x000a, 0x1438: 0x000a, 0x1439: 0x000a, 0x143a: 0x000a, 0x143b: 0x000a,\n\t0x143c: 0x000a, 0x143d: 0x000a, 0x143e: 0x000a, 0x143f: 0x000a,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x000a, 0x1441: 0x000a, 0x1442: 0x000a, 0x1443: 0x000a, 0x1444: 0x0006, 0x1445: 0x009a,\n\t0x1446: 0x008a, 0x1447: 0x000a, 0x1448: 0x000a, 0x1449: 0x000a, 0x144a: 0x000a, 0x144b: 0x000a,\n\t0x144c: 0x000a, 0x144d: 0x000a, 0x144e: 0x000a, 0x144f: 0x000a, 0x1450: 0x000a, 0x1451: 0x000a,\n\t0x1452: 0x000a, 0x1453: 0x000a, 0x1454: 0x000a, 0x1455: 0x000a, 0x1456: 0x000a, 0x1457: 0x000a,\n\t0x1458: 0x000a, 0x1459: 0x000a, 0x145a: 0x000a, 0x145b: 0x000a, 0x145c: 0x000a, 0x145d: 0x000a,\n\t0x145e: 0x000a, 0x145f: 0x0009, 0x1460: 0x000b, 0x1461: 0x000b, 0x1462: 0x000b, 0x1463: 0x000b,\n\t0x1464: 0x000b, 0x1465: 0x000b, 0x1466: 0x000e, 0x1467: 0x000e, 0x1468: 0x000e, 0x1469: 0x000e,\n\t0x146a: 0x000b, 0x146b: 0x000b, 0x146c: 0x000b, 0x146d: 0x000b, 0x146e: 0x000b, 0x146f: 0x000b,\n\t0x1470: 0x0002, 0x1474: 0x0002, 0x1475: 0x0002,\n\t0x1476: 0x0002, 0x1477: 0x0002, 0x1478: 0x0002, 0x1479: 0x0002, 0x147a: 0x0003, 0x147b: 0x0003,\n\t0x147c: 0x000a, 0x147d: 0x009a, 0x147e: 0x008a,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x0002, 0x1481: 0x0002, 0x1482: 0x0002, 0x1483: 0x0002, 0x1484: 0x0002, 0x1485: 0x0002,\n\t0x1486: 0x0002, 0x1487: 0x0002, 0x1488: 0x0002, 0x1489: 0x0002, 0x148a: 0x0003, 0x148b: 0x0003,\n\t0x148c: 0x000a, 0x148d: 0x009a, 0x148e: 0x008a,\n\t0x14a0: 0x0004, 0x14a1: 0x0004, 0x14a2: 0x0004, 0x14a3: 0x0004,\n\t0x14a4: 0x0004, 0x14a5: 0x0004, 0x14a6: 0x0004, 0x14a7: 0x0004, 0x14a8: 0x0004, 0x14a9: 0x0004,\n\t0x14aa: 0x0004, 0x14ab: 0x0004, 0x14ac: 0x0004, 0x14ad: 0x0004, 0x14ae: 0x0004, 0x14af: 0x0004,\n\t0x14b0: 0x0004, 0x14b1: 0x0004, 0x14b2: 0x0004, 0x14b3: 0x0004, 0x14b4: 0x0004, 0x14b5: 0x0004,\n\t0x14b6: 0x0004, 0x14b7: 0x0004, 0x14b8: 0x0004, 0x14b9: 0x0004, 0x14ba: 0x0004, 0x14bb: 0x0004,\n\t0x14bc: 0x0004, 0x14bd: 0x0004, 0x14be: 0x0004, 0x14bf: 0x0004,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x0004, 0x14c1: 0x0004, 0x14c2: 0x0004, 0x14c3: 0x0004, 0x14c4: 0x0004, 0x14c5: 0x0004,\n\t0x14c6: 0x0004, 0x14c7: 0x0004, 0x14c8: 0x0004, 0x14c9: 0x0004, 0x14ca: 0x0004, 0x14cb: 0x0004,\n\t0x14cc: 0x0004, 0x14cd: 0x0004, 0x14ce: 0x0004, 0x14cf: 0x0004, 0x14d0: 0x000c, 0x14d1: 0x000c,\n\t0x14d2: 0x000c, 0x14d3: 0x000c, 0x14d4: 0x000c, 0x14d5: 0x000c, 0x14d6: 0x000c, 0x14d7: 0x000c,\n\t0x14d8: 0x000c, 0x14d9: 0x000c, 0x14da: 0x000c, 0x14db: 0x000c, 0x14dc: 0x000c, 0x14dd: 0x000c,\n\t0x14de: 0x000c, 0x14df: 0x000c, 0x14e0: 0x000c, 0x14e1: 0x000c, 0x14e2: 0x000c, 0x14e3: 0x000c,\n\t0x14e4: 0x000c, 0x14e5: 0x000c, 0x14e6: 0x000c, 0x14e7: 0x000c, 0x14e8: 0x000c, 0x14e9: 0x000c,\n\t0x14ea: 0x000c, 0x14eb: 0x000c, 0x14ec: 0x000c, 0x14ed: 0x000c, 0x14ee: 0x000c, 0x14ef: 0x000c,\n\t0x14f0: 0x000c,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x000a, 0x1501: 0x000a, 0x1503: 0x000a, 0x1504: 0x000a, 0x1505: 0x000a,\n\t0x1506: 0x000a, 0x1508: 0x000a, 0x1509: 0x000a,\n\t0x1514: 0x000a, 0x1516: 0x000a, 0x1517: 0x000a,\n\t0x1518: 0x000a,\n\t0x151e: 0x000a, 0x151f: 0x000a, 0x1520: 0x000a, 0x1521: 0x000a, 0x1522: 0x000a, 0x1523: 0x000a,\n\t0x1525: 0x000a, 0x1527: 0x000a, 0x1529: 0x000a,\n\t0x152e: 0x0004,\n\t0x153a: 0x000a, 0x153b: 0x000a,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x000a, 0x1541: 0x000a, 0x1542: 0x000a, 0x1543: 0x000a, 0x1544: 0x000a,\n\t0x154a: 0x000a, 0x154b: 0x000a,\n\t0x154c: 0x000a, 0x154d: 0x000a, 0x1550: 0x000a, 0x1551: 0x000a,\n\t0x1552: 0x000a, 0x1553: 0x000a, 0x1554: 0x000a, 0x1555: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a,\n\t0x1558: 0x000a, 0x1559: 0x000a, 0x155a: 0x000a, 0x155b: 0x000a, 0x155c: 0x000a, 0x155d: 0x000a,\n\t0x155e: 0x000a, 0x155f: 0x000a,\n\t// Block 0x56, offset 0x1580\n\t0x1589: 0x000a, 0x158a: 0x000a, 0x158b: 0x000a,\n\t0x1590: 0x000a, 0x1591: 0x000a,\n\t0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a,\n\t0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a,\n\t0x159e: 0x000a, 0x159f: 0x000a, 0x15a0: 0x000a, 0x15a1: 0x000a, 0x15a2: 0x000a, 0x15a3: 0x000a,\n\t0x15a4: 0x000a, 0x15a5: 0x000a, 0x15a6: 0x000a, 0x15a7: 0x000a, 0x15a8: 0x000a, 0x15a9: 0x000a,\n\t0x15aa: 0x000a, 0x15ab: 0x000a, 0x15ac: 0x000a, 0x15ad: 0x000a, 0x15ae: 0x000a, 0x15af: 0x000a,\n\t0x15b0: 0x000a, 0x15b1: 0x000a, 0x15b2: 0x000a, 0x15b3: 0x000a, 0x15b4: 0x000a, 0x15b5: 0x000a,\n\t0x15b6: 0x000a, 0x15b7: 0x000a, 0x15b8: 0x000a, 0x15b9: 0x000a, 0x15ba: 0x000a, 0x15bb: 0x000a,\n\t0x15bc: 0x000a, 0x15bd: 0x000a, 0x15be: 0x000a, 0x15bf: 0x000a,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x000a, 0x15c1: 0x000a, 0x15c2: 0x000a, 0x15c3: 0x000a, 0x15c4: 0x000a, 0x15c5: 0x000a,\n\t0x15c6: 0x000a, 0x15c7: 0x000a, 0x15c8: 0x000a, 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a,\n\t0x15cc: 0x000a, 0x15cd: 0x000a, 0x15ce: 0x000a, 0x15cf: 0x000a, 0x15d0: 0x000a, 0x15d1: 0x000a,\n\t0x15d2: 0x000a, 0x15d3: 0x000a, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a,\n\t0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a,\n\t0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a,\n\t0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a,\n\t0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a,\n\t0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a,\n\t0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a,\n\t0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a,\n\t0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x000a, 0x1609: 0x000a, 0x160a: 0x000a, 0x160b: 0x000a,\n\t0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a,\n\t0x1612: 0x0003, 0x1613: 0x0004, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a,\n\t0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a,\n\t0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a,\n\t0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x000a,\n\t0x162a: 0x000a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a,\n\t0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a,\n\t0x1636: 0x000a, 0x1637: 0x000a, 0x1638: 0x000a, 0x1639: 0x000a, 0x163a: 0x000a, 0x163b: 0x000a,\n\t0x163c: 0x000a, 0x163d: 0x000a, 0x163e: 0x000a, 0x163f: 0x000a,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x000a, 0x1641: 0x000a, 0x1642: 0x000a, 0x1643: 0x000a, 0x1644: 0x000a, 0x1645: 0x000a,\n\t0x1646: 0x000a, 0x1647: 0x000a, 0x1648: 0x003a, 0x1649: 0x002a, 0x164a: 0x003a, 0x164b: 0x002a,\n\t0x164c: 0x000a, 0x164d: 0x000a, 0x164e: 0x000a, 0x164f: 0x000a, 0x1650: 0x000a, 0x1651: 0x000a,\n\t0x1652: 0x000a, 0x1653: 0x000a, 0x1654: 0x000a, 0x1655: 0x000a, 0x1656: 0x000a, 0x1657: 0x000a,\n\t0x1658: 0x000a, 0x1659: 0x000a, 0x165a: 0x000a, 0x165b: 0x000a, 0x165c: 0x000a, 0x165d: 0x000a,\n\t0x165e: 0x000a, 0x165f: 0x000a, 0x1660: 0x000a, 0x1661: 0x000a, 0x1662: 0x000a, 0x1663: 0x000a,\n\t0x1664: 0x000a, 0x1665: 0x000a, 0x1666: 0x000a, 0x1667: 0x000a, 0x1668: 0x000a, 0x1669: 0x009a,\n\t0x166a: 0x008a, 0x166b: 0x000a, 0x166c: 0x000a, 0x166d: 0x000a, 0x166e: 0x000a, 0x166f: 0x000a,\n\t0x1670: 0x000a, 0x1671: 0x000a, 0x1672: 0x000a, 0x1673: 0x000a, 0x1674: 0x000a, 0x1675: 0x000a,\n\t// Block 0x5a, offset 0x1680\n\t0x16bb: 0x000a,\n\t0x16bc: 0x000a, 0x16bd: 0x000a, 0x16be: 0x000a, 0x16bf: 0x000a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x000a, 0x16c1: 0x000a, 0x16c2: 0x000a, 0x16c3: 0x000a, 0x16c4: 0x000a, 0x16c5: 0x000a,\n\t0x16c6: 0x000a, 0x16c7: 0x000a, 0x16c8: 0x000a, 0x16c9: 0x000a, 0x16ca: 0x000a, 0x16cb: 0x000a,\n\t0x16cc: 0x000a, 0x16cd: 0x000a, 0x16ce: 0x000a, 0x16cf: 0x000a, 0x16d0: 0x000a, 0x16d1: 0x000a,\n\t0x16d2: 0x000a, 0x16d3: 0x000a, 0x16d4: 0x000a, 0x16d6: 0x000a, 0x16d7: 0x000a,\n\t0x16d8: 0x000a, 0x16d9: 0x000a, 0x16da: 0x000a, 0x16db: 0x000a, 0x16dc: 0x000a, 0x16dd: 0x000a,\n\t0x16de: 0x000a, 0x16df: 0x000a, 0x16e0: 0x000a, 0x16e1: 0x000a, 0x16e2: 0x000a, 0x16e3: 0x000a,\n\t0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a, 0x16e7: 0x000a, 0x16e8: 0x000a, 0x16e9: 0x000a,\n\t0x16ea: 0x000a, 0x16eb: 0x000a, 0x16ec: 0x000a, 0x16ed: 0x000a, 0x16ee: 0x000a, 0x16ef: 0x000a,\n\t0x16f0: 0x000a, 0x16f1: 0x000a, 0x16f2: 0x000a, 0x16f3: 0x000a, 0x16f4: 0x000a, 0x16f5: 0x000a,\n\t0x16f6: 0x000a, 0x16f7: 0x000a, 0x16f8: 0x000a, 0x16f9: 0x000a, 0x16fa: 0x000a, 0x16fb: 0x000a,\n\t0x16fc: 0x000a, 0x16fd: 0x000a, 0x16fe: 0x000a, 0x16ff: 0x000a,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a,\n\t0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a, 0x170b: 0x000a,\n\t0x170c: 0x000a, 0x170d: 0x000a, 0x170e: 0x000a, 0x170f: 0x000a, 0x1710: 0x000a, 0x1711: 0x000a,\n\t0x1712: 0x000a, 0x1713: 0x000a, 0x1714: 0x000a, 0x1715: 0x000a, 0x1716: 0x000a, 0x1717: 0x000a,\n\t0x1718: 0x000a, 0x1719: 0x000a, 0x171a: 0x000a, 0x171b: 0x000a, 0x171c: 0x000a, 0x171d: 0x000a,\n\t0x171e: 0x000a, 0x171f: 0x000a, 0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a,\n\t0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a,\n\t0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x000a, 0x1749: 0x000a, 0x174a: 0x000a,\n\t0x1760: 0x000a, 0x1761: 0x000a, 0x1762: 0x000a, 0x1763: 0x000a,\n\t0x1764: 0x000a, 0x1765: 0x000a, 0x1766: 0x000a, 0x1767: 0x000a, 0x1768: 0x000a, 0x1769: 0x000a,\n\t0x176a: 0x000a, 0x176b: 0x000a, 0x176c: 0x000a, 0x176d: 0x000a, 0x176e: 0x000a, 0x176f: 0x000a,\n\t0x1770: 0x000a, 0x1771: 0x000a, 0x1772: 0x000a, 0x1773: 0x000a, 0x1774: 0x000a, 0x1775: 0x000a,\n\t0x1776: 0x000a, 0x1777: 0x000a, 0x1778: 0x000a, 0x1779: 0x000a, 0x177a: 0x000a, 0x177b: 0x000a,\n\t0x177c: 0x000a, 0x177d: 0x000a, 0x177e: 0x000a, 0x177f: 0x000a,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x000a, 0x1781: 0x000a, 0x1782: 0x000a, 0x1783: 0x000a, 0x1784: 0x000a, 0x1785: 0x000a,\n\t0x1786: 0x000a, 0x1787: 0x000a, 0x1788: 0x0002, 0x1789: 0x0002, 0x178a: 0x0002, 0x178b: 0x0002,\n\t0x178c: 0x0002, 0x178d: 0x0002, 0x178e: 0x0002, 0x178f: 0x0002, 0x1790: 0x0002, 0x1791: 0x0002,\n\t0x1792: 0x0002, 0x1793: 0x0002, 0x1794: 0x0002, 0x1795: 0x0002, 0x1796: 0x0002, 0x1797: 0x0002,\n\t0x1798: 0x0002, 0x1799: 0x0002, 0x179a: 0x0002, 0x179b: 0x0002,\n\t// Block 0x5f, offset 0x17c0\n\t0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ec: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a,\n\t0x17f0: 0x000a, 0x17f1: 0x000a, 0x17f2: 0x000a, 0x17f3: 0x000a, 0x17f4: 0x000a, 0x17f5: 0x000a,\n\t0x17f6: 0x000a, 0x17f7: 0x000a, 0x17f8: 0x000a, 0x17f9: 0x000a, 0x17fa: 0x000a, 0x17fb: 0x000a,\n\t0x17fc: 0x000a, 0x17fd: 0x000a, 0x17fe: 0x000a, 0x17ff: 0x000a,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x000a, 0x1801: 0x000a, 0x1802: 0x000a, 0x1803: 0x000a, 0x1804: 0x000a, 0x1805: 0x000a,\n\t0x1806: 0x000a, 0x1807: 0x000a, 0x1808: 0x000a, 0x1809: 0x000a, 0x180a: 0x000a, 0x180b: 0x000a,\n\t0x180c: 0x000a, 0x180d: 0x000a, 0x180e: 0x000a, 0x180f: 0x000a, 0x1810: 0x000a, 0x1811: 0x000a,\n\t0x1812: 0x000a, 0x1813: 0x000a, 0x1814: 0x000a, 0x1815: 0x000a, 0x1816: 0x000a, 0x1817: 0x000a,\n\t0x1818: 0x000a, 0x1819: 0x000a, 0x181a: 0x000a, 0x181b: 0x000a, 0x181c: 0x000a, 0x181d: 0x000a,\n\t0x181e: 0x000a, 0x181f: 0x000a, 0x1820: 0x000a, 0x1821: 0x000a, 0x1822: 0x000a, 0x1823: 0x000a,\n\t0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x000a, 0x1829: 0x000a,\n\t0x182a: 0x000a, 0x182b: 0x000a, 0x182d: 0x000a, 0x182e: 0x000a, 0x182f: 0x000a,\n\t0x1830: 0x000a, 0x1831: 0x000a, 0x1832: 0x000a, 0x1833: 0x000a, 0x1834: 0x000a, 0x1835: 0x000a,\n\t0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a,\n\t0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x000a,\n\t0x1846: 0x000a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a,\n\t0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a,\n\t0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a,\n\t0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a,\n\t0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a,\n\t0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x000a, 0x1867: 0x000a, 0x1868: 0x003a, 0x1869: 0x002a,\n\t0x186a: 0x003a, 0x186b: 0x002a, 0x186c: 0x003a, 0x186d: 0x002a, 0x186e: 0x003a, 0x186f: 0x002a,\n\t0x1870: 0x003a, 0x1871: 0x002a, 0x1872: 0x003a, 0x1873: 0x002a, 0x1874: 0x003a, 0x1875: 0x002a,\n\t0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a,\n\t0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x000a, 0x1884: 0x000a, 0x1885: 0x009a,\n\t0x1886: 0x008a, 0x1887: 0x000a, 0x1888: 0x000a, 0x1889: 0x000a, 0x188a: 0x000a, 0x188b: 0x000a,\n\t0x188c: 0x000a, 0x188d: 0x000a, 0x188e: 0x000a, 0x188f: 0x000a, 0x1890: 0x000a, 0x1891: 0x000a,\n\t0x1892: 0x000a, 0x1893: 0x000a, 0x1894: 0x000a, 0x1895: 0x000a, 0x1896: 0x000a, 0x1897: 0x000a,\n\t0x1898: 0x000a, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a,\n\t0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a,\n\t0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x003a, 0x18a7: 0x002a, 0x18a8: 0x003a, 0x18a9: 0x002a,\n\t0x18aa: 0x003a, 0x18ab: 0x002a, 0x18ac: 0x003a, 0x18ad: 0x002a, 0x18ae: 0x003a, 0x18af: 0x002a,\n\t0x18b0: 0x000a, 0x18b1: 0x000a, 0x18b2: 0x000a, 0x18b3: 0x000a, 0x18b4: 0x000a, 0x18b5: 0x000a,\n\t0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a,\n\t0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x007a, 0x18c4: 0x006a, 0x18c5: 0x009a,\n\t0x18c6: 0x008a, 0x18c7: 0x00ba, 0x18c8: 0x00aa, 0x18c9: 0x009a, 0x18ca: 0x008a, 0x18cb: 0x007a,\n\t0x18cc: 0x006a, 0x18cd: 0x00da, 0x18ce: 0x002a, 0x18cf: 0x003a, 0x18d0: 0x00ca, 0x18d1: 0x009a,\n\t0x18d2: 0x008a, 0x18d3: 0x007a, 0x18d4: 0x006a, 0x18d5: 0x009a, 0x18d6: 0x008a, 0x18d7: 0x00ba,\n\t0x18d8: 0x00aa, 0x18d9: 0x000a, 0x18da: 0x000a, 0x18db: 0x000a, 0x18dc: 0x000a, 0x18dd: 0x000a,\n\t0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a,\n\t0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x000a, 0x18e7: 0x000a, 0x18e8: 0x000a, 0x18e9: 0x000a,\n\t0x18ea: 0x000a, 0x18eb: 0x000a, 0x18ec: 0x000a, 0x18ed: 0x000a, 0x18ee: 0x000a, 0x18ef: 0x000a,\n\t0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a,\n\t0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a,\n\t0x18fc: 0x000a, 0x18fd: 0x000a, 0x18fe: 0x000a, 0x18ff: 0x000a,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x000a, 0x1904: 0x000a, 0x1905: 0x000a,\n\t0x1906: 0x000a, 0x1907: 0x000a, 0x1908: 0x000a, 0x1909: 0x000a, 0x190a: 0x000a, 0x190b: 0x000a,\n\t0x190c: 0x000a, 0x190d: 0x000a, 0x190e: 0x000a, 0x190f: 0x000a, 0x1910: 0x000a, 0x1911: 0x000a,\n\t0x1912: 0x000a, 0x1913: 0x000a, 0x1914: 0x000a, 0x1915: 0x000a, 0x1916: 0x000a, 0x1917: 0x000a,\n\t0x1918: 0x003a, 0x1919: 0x002a, 0x191a: 0x003a, 0x191b: 0x002a, 0x191c: 0x000a, 0x191d: 0x000a,\n\t0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a,\n\t0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a,\n\t0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a,\n\t0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a, 0x1934: 0x000a, 0x1935: 0x000a,\n\t0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a,\n\t0x193c: 0x003a, 0x193d: 0x002a, 0x193e: 0x000a, 0x193f: 0x000a,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a,\n\t0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a,\n\t0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a,\n\t0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a, 0x1956: 0x000a, 0x1957: 0x000a,\n\t0x1958: 0x000a, 0x1959: 0x000a, 0x195a: 0x000a, 0x195b: 0x000a, 0x195c: 0x000a, 0x195d: 0x000a,\n\t0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a,\n\t0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a,\n\t0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a,\n\t0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a,\n\t0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a,\n\t0x197c: 0x000a, 0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a,\n\t0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x1989: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a,\n\t0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a,\n\t0x1992: 0x000a, 0x1993: 0x000a, 0x1994: 0x000a, 0x1995: 0x000a, 0x1997: 0x000a,\n\t0x1998: 0x000a, 0x1999: 0x000a, 0x199a: 0x000a, 0x199b: 0x000a, 0x199c: 0x000a, 0x199d: 0x000a,\n\t0x199e: 0x000a, 0x199f: 0x000a, 0x19a0: 0x000a, 0x19a1: 0x000a, 0x19a2: 0x000a, 0x19a3: 0x000a,\n\t0x19a4: 0x000a, 0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a,\n\t0x19aa: 0x000a, 0x19ab: 0x000a, 0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a,\n\t0x19b0: 0x000a, 0x19b1: 0x000a, 0x19b2: 0x000a, 0x19b3: 0x000a, 0x19b4: 0x000a, 0x19b5: 0x000a,\n\t0x19b6: 0x000a, 0x19b7: 0x000a, 0x19b8: 0x000a, 0x19b9: 0x000a, 0x19ba: 0x000a, 0x19bb: 0x000a,\n\t0x19bc: 0x000a, 0x19bd: 0x000a, 0x19be: 0x000a, 0x19bf: 0x000a,\n\t// Block 0x67, offset 0x19c0\n\t0x19e5: 0x000a, 0x19e6: 0x000a, 0x19e7: 0x000a, 0x19e8: 0x000a, 0x19e9: 0x000a,\n\t0x19ea: 0x000a, 0x19ef: 0x000c,\n\t0x19f0: 0x000c, 0x19f1: 0x000c,\n\t0x19f9: 0x000a, 0x19fa: 0x000a, 0x19fb: 0x000a,\n\t0x19fc: 0x000a, 0x19fd: 0x000a, 0x19fe: 0x000a, 0x19ff: 0x000a,\n\t// Block 0x68, offset 0x1a00\n\t0x1a3f: 0x000c,\n\t// Block 0x69, offset 0x1a40\n\t0x1a60: 0x000c, 0x1a61: 0x000c, 0x1a62: 0x000c, 0x1a63: 0x000c,\n\t0x1a64: 0x000c, 0x1a65: 0x000c, 0x1a66: 0x000c, 0x1a67: 0x000c, 0x1a68: 0x000c, 0x1a69: 0x000c,\n\t0x1a6a: 0x000c, 0x1a6b: 0x000c, 0x1a6c: 0x000c, 0x1a6d: 0x000c, 0x1a6e: 0x000c, 0x1a6f: 0x000c,\n\t0x1a70: 0x000c, 0x1a71: 0x000c, 0x1a72: 0x000c, 0x1a73: 0x000c, 0x1a74: 0x000c, 0x1a75: 0x000c,\n\t0x1a76: 0x000c, 0x1a77: 0x000c, 0x1a78: 0x000c, 0x1a79: 0x000c, 0x1a7a: 0x000c, 0x1a7b: 0x000c,\n\t0x1a7c: 0x000c, 0x1a7d: 0x000c, 0x1a7e: 0x000c, 0x1a7f: 0x000c,\n\t// Block 0x6a, offset 0x1a80\n\t0x1a80: 0x000a, 0x1a81: 0x000a, 0x1a82: 0x000a, 0x1a83: 0x000a, 0x1a84: 0x000a, 0x1a85: 0x000a,\n\t0x1a86: 0x000a, 0x1a87: 0x000a, 0x1a88: 0x000a, 0x1a89: 0x000a, 0x1a8a: 0x000a, 0x1a8b: 0x000a,\n\t0x1a8c: 0x000a, 0x1a8d: 0x000a, 0x1a8e: 0x000a, 0x1a8f: 0x000a, 0x1a90: 0x000a, 0x1a91: 0x000a,\n\t0x1a92: 0x000a, 0x1a93: 0x000a, 0x1a94: 0x000a, 0x1a95: 0x000a, 0x1a96: 0x000a, 0x1a97: 0x000a,\n\t0x1a98: 0x000a, 0x1a99: 0x000a, 0x1a9a: 0x000a, 0x1a9b: 0x000a, 0x1a9c: 0x000a, 0x1a9d: 0x000a,\n\t0x1a9e: 0x000a, 0x1a9f: 0x000a, 0x1aa0: 0x000a, 0x1aa1: 0x000a, 0x1aa2: 0x003a, 0x1aa3: 0x002a,\n\t0x1aa4: 0x003a, 0x1aa5: 0x002a, 0x1aa6: 0x003a, 0x1aa7: 0x002a, 0x1aa8: 0x003a, 0x1aa9: 0x002a,\n\t0x1aaa: 0x000a, 0x1aab: 0x000a, 0x1aac: 0x000a, 0x1aad: 0x000a, 0x1aae: 0x000a, 0x1aaf: 0x000a,\n\t0x1ab0: 0x000a, 0x1ab1: 0x000a, 0x1ab2: 0x000a, 0x1ab3: 0x000a, 0x1ab4: 0x000a, 0x1ab5: 0x000a,\n\t0x1ab6: 0x000a, 0x1ab7: 0x000a, 0x1ab8: 0x000a, 0x1ab9: 0x000a, 0x1aba: 0x000a, 0x1abb: 0x000a,\n\t0x1abc: 0x000a, 0x1abd: 0x000a, 0x1abe: 0x000a, 0x1abf: 0x000a,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a,\n\t0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a,\n\t0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a, 0x1acf: 0x000a, 0x1ad0: 0x000a, 0x1ad1: 0x000a,\n\t0x1ad2: 0x000a, 0x1ad3: 0x000a, 0x1ad4: 0x000a, 0x1ad5: 0x009a, 0x1ad6: 0x008a, 0x1ad7: 0x00ba,\n\t0x1ad8: 0x00aa, 0x1ad9: 0x009a, 0x1ada: 0x008a, 0x1adb: 0x007a, 0x1adc: 0x006a, 0x1add: 0x000a,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, 0x1b05: 0x000a,\n\t0x1b06: 0x000a, 0x1b07: 0x000a, 0x1b08: 0x000a, 0x1b09: 0x000a, 0x1b0a: 0x000a, 0x1b0b: 0x000a,\n\t0x1b0c: 0x000a, 0x1b0d: 0x000a, 0x1b0e: 0x000a, 0x1b0f: 0x000a, 0x1b10: 0x000a, 0x1b11: 0x000a,\n\t0x1b12: 0x000a, 0x1b13: 0x000a, 0x1b14: 0x000a, 0x1b15: 0x000a, 0x1b16: 0x000a, 0x1b17: 0x000a,\n\t0x1b18: 0x000a, 0x1b19: 0x000a, 0x1b1b: 0x000a, 0x1b1c: 0x000a, 0x1b1d: 0x000a,\n\t0x1b1e: 0x000a, 0x1b1f: 0x000a, 0x1b20: 0x000a, 0x1b21: 0x000a, 0x1b22: 0x000a, 0x1b23: 0x000a,\n\t0x1b24: 0x000a, 0x1b25: 0x000a, 0x1b26: 0x000a, 0x1b27: 0x000a, 0x1b28: 0x000a, 0x1b29: 0x000a,\n\t0x1b2a: 0x000a, 0x1b2b: 0x000a, 0x1b2c: 0x000a, 0x1b2d: 0x000a, 0x1b2e: 0x000a, 0x1b2f: 0x000a,\n\t0x1b30: 0x000a, 0x1b31: 0x000a, 0x1b32: 0x000a, 0x1b33: 0x000a, 0x1b34: 0x000a, 0x1b35: 0x000a,\n\t0x1b36: 0x000a, 0x1b37: 0x000a, 0x1b38: 0x000a, 0x1b39: 0x000a, 0x1b3a: 0x000a, 0x1b3b: 0x000a,\n\t0x1b3c: 0x000a, 0x1b3d: 0x000a, 0x1b3e: 0x000a, 0x1b3f: 0x000a,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a,\n\t0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a,\n\t0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a,\n\t0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a,\n\t0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5a: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a,\n\t0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a,\n\t0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a,\n\t0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a,\n\t0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a,\n\t0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a,\n\t0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a,\n\t0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a,\n\t0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a, 0x1bb4: 0x000a, 0x1bb5: 0x000a,\n\t0x1bb6: 0x000a, 0x1bb7: 0x000a, 0x1bb8: 0x000a, 0x1bb9: 0x000a, 0x1bba: 0x000a, 0x1bbb: 0x000a,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x0009, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a,\n\t0x1bc8: 0x003a, 0x1bc9: 0x002a, 0x1bca: 0x003a, 0x1bcb: 0x002a,\n\t0x1bcc: 0x003a, 0x1bcd: 0x002a, 0x1bce: 0x003a, 0x1bcf: 0x002a, 0x1bd0: 0x003a, 0x1bd1: 0x002a,\n\t0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x003a, 0x1bd5: 0x002a, 0x1bd6: 0x003a, 0x1bd7: 0x002a,\n\t0x1bd8: 0x003a, 0x1bd9: 0x002a, 0x1bda: 0x003a, 0x1bdb: 0x002a, 0x1bdc: 0x000a, 0x1bdd: 0x000a,\n\t0x1bde: 0x000a, 0x1bdf: 0x000a, 0x1be0: 0x000a,\n\t0x1bea: 0x000c, 0x1beb: 0x000c, 0x1bec: 0x000c, 0x1bed: 0x000c,\n\t0x1bf0: 0x000a,\n\t0x1bf6: 0x000a, 0x1bf7: 0x000a,\n\t0x1bfd: 0x000a, 0x1bfe: 0x000a, 0x1bff: 0x000a,\n\t// Block 0x70, offset 0x1c00\n\t0x1c19: 0x000c, 0x1c1a: 0x000c, 0x1c1b: 0x000a, 0x1c1c: 0x000a,\n\t0x1c20: 0x000a,\n\t// Block 0x71, offset 0x1c40\n\t0x1c7b: 0x000a,\n\t// Block 0x72, offset 0x1c80\n\t0x1c80: 0x000a, 0x1c81: 0x000a, 0x1c82: 0x000a, 0x1c83: 0x000a, 0x1c84: 0x000a, 0x1c85: 0x000a,\n\t0x1c86: 0x000a, 0x1c87: 0x000a, 0x1c88: 0x000a, 0x1c89: 0x000a, 0x1c8a: 0x000a, 0x1c8b: 0x000a,\n\t0x1c8c: 0x000a, 0x1c8d: 0x000a, 0x1c8e: 0x000a, 0x1c8f: 0x000a, 0x1c90: 0x000a, 0x1c91: 0x000a,\n\t0x1c92: 0x000a, 0x1c93: 0x000a, 0x1c94: 0x000a, 0x1c95: 0x000a, 0x1c96: 0x000a, 0x1c97: 0x000a,\n\t0x1c98: 0x000a, 0x1c99: 0x000a, 0x1c9a: 0x000a, 0x1c9b: 0x000a, 0x1c9c: 0x000a, 0x1c9d: 0x000a,\n\t0x1c9e: 0x000a, 0x1c9f: 0x000a, 0x1ca0: 0x000a, 0x1ca1: 0x000a, 0x1ca2: 0x000a, 0x1ca3: 0x000a,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cdd: 0x000a,\n\t0x1cde: 0x000a,\n\t// Block 0x74, offset 0x1d00\n\t0x1d10: 0x000a, 0x1d11: 0x000a,\n\t0x1d12: 0x000a, 0x1d13: 0x000a, 0x1d14: 0x000a, 0x1d15: 0x000a, 0x1d16: 0x000a, 0x1d17: 0x000a,\n\t0x1d18: 0x000a, 0x1d19: 0x000a, 0x1d1a: 0x000a, 0x1d1b: 0x000a, 0x1d1c: 0x000a, 0x1d1d: 0x000a,\n\t0x1d1e: 0x000a, 0x1d1f: 0x000a,\n\t0x1d3c: 0x000a, 0x1d3d: 0x000a, 0x1d3e: 0x000a,\n\t// Block 0x75, offset 0x1d40\n\t0x1d71: 0x000a, 0x1d72: 0x000a, 0x1d73: 0x000a, 0x1d74: 0x000a, 0x1d75: 0x000a,\n\t0x1d76: 0x000a, 0x1d77: 0x000a, 0x1d78: 0x000a, 0x1d79: 0x000a, 0x1d7a: 0x000a, 0x1d7b: 0x000a,\n\t0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a, 0x1d7f: 0x000a,\n\t// Block 0x76, offset 0x1d80\n\t0x1d8c: 0x000a, 0x1d8d: 0x000a, 0x1d8e: 0x000a, 0x1d8f: 0x000a,\n\t// Block 0x77, offset 0x1dc0\n\t0x1df7: 0x000a, 0x1df8: 0x000a, 0x1df9: 0x000a, 0x1dfa: 0x000a,\n\t// Block 0x78, offset 0x1e00\n\t0x1e1e: 0x000a, 0x1e1f: 0x000a,\n\t0x1e3f: 0x000a,\n\t// Block 0x79, offset 0x1e40\n\t0x1e50: 0x000a, 0x1e51: 0x000a,\n\t0x1e52: 0x000a, 0x1e53: 0x000a, 0x1e54: 0x000a, 0x1e55: 0x000a, 0x1e56: 0x000a, 0x1e57: 0x000a,\n\t0x1e58: 0x000a, 0x1e59: 0x000a, 0x1e5a: 0x000a, 0x1e5b: 0x000a, 0x1e5c: 0x000a, 0x1e5d: 0x000a,\n\t0x1e5e: 0x000a, 0x1e5f: 0x000a, 0x1e60: 0x000a, 0x1e61: 0x000a, 0x1e62: 0x000a, 0x1e63: 0x000a,\n\t0x1e64: 0x000a, 0x1e65: 0x000a, 0x1e66: 0x000a, 0x1e67: 0x000a, 0x1e68: 0x000a, 0x1e69: 0x000a,\n\t0x1e6a: 0x000a, 0x1e6b: 0x000a, 0x1e6c: 0x000a, 0x1e6d: 0x000a, 0x1e6e: 0x000a, 0x1e6f: 0x000a,\n\t0x1e70: 0x000a, 0x1e71: 0x000a, 0x1e72: 0x000a, 0x1e73: 0x000a, 0x1e74: 0x000a, 0x1e75: 0x000a,\n\t0x1e76: 0x000a, 0x1e77: 0x000a, 0x1e78: 0x000a, 0x1e79: 0x000a, 0x1e7a: 0x000a, 0x1e7b: 0x000a,\n\t0x1e7c: 0x000a, 0x1e7d: 0x000a, 0x1e7e: 0x000a, 0x1e7f: 0x000a,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e80: 0x000a, 0x1e81: 0x000a, 0x1e82: 0x000a, 0x1e83: 0x000a, 0x1e84: 0x000a, 0x1e85: 0x000a,\n\t0x1e86: 0x000a,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ecd: 0x000a, 0x1ece: 0x000a, 0x1ecf: 0x000a,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f2f: 0x000c,\n\t0x1f30: 0x000c, 0x1f31: 0x000c, 0x1f32: 0x000c, 0x1f33: 0x000a, 0x1f34: 0x000c, 0x1f35: 0x000c,\n\t0x1f36: 0x000c, 0x1f37: 0x000c, 0x1f38: 0x000c, 0x1f39: 0x000c, 0x1f3a: 0x000c, 0x1f3b: 0x000c,\n\t0x1f3c: 0x000c, 0x1f3d: 0x000c, 0x1f3e: 0x000a, 0x1f3f: 0x000a,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f5e: 0x000c, 0x1f5f: 0x000c,\n\t// Block 0x7e, offset 0x1f80\n\t0x1fb0: 0x000c, 0x1fb1: 0x000c,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1fc0: 0x000a, 0x1fc1: 0x000a, 0x1fc2: 0x000a, 0x1fc3: 0x000a, 0x1fc4: 0x000a, 0x1fc5: 0x000a,\n\t0x1fc6: 0x000a, 0x1fc7: 0x000a, 0x1fc8: 0x000a, 0x1fc9: 0x000a, 0x1fca: 0x000a, 0x1fcb: 0x000a,\n\t0x1fcc: 0x000a, 0x1fcd: 0x000a, 0x1fce: 0x000a, 0x1fcf: 0x000a, 0x1fd0: 0x000a, 0x1fd1: 0x000a,\n\t0x1fd2: 0x000a, 0x1fd3: 0x000a, 0x1fd4: 0x000a, 0x1fd5: 0x000a, 0x1fd6: 0x000a, 0x1fd7: 0x000a,\n\t0x1fd8: 0x000a, 0x1fd9: 0x000a, 0x1fda: 0x000a, 0x1fdb: 0x000a, 0x1fdc: 0x000a, 0x1fdd: 0x000a,\n\t0x1fde: 0x000a, 0x1fdf: 0x000a, 0x1fe0: 0x000a, 0x1fe1: 0x000a,\n\t// Block 0x80, offset 0x2000\n\t0x2008: 0x000a,\n\t// Block 0x81, offset 0x2040\n\t0x2042: 0x000c,\n\t0x2046: 0x000c, 0x204b: 0x000c,\n\t0x2065: 0x000c, 0x2066: 0x000c, 0x2068: 0x000a, 0x2069: 0x000a,\n\t0x206a: 0x000a, 0x206b: 0x000a, 0x206c: 0x000c,\n\t0x2078: 0x0004, 0x2079: 0x0004,\n\t// Block 0x82, offset 0x2080\n\t0x20b4: 0x000a, 0x20b5: 0x000a,\n\t0x20b6: 0x000a, 0x20b7: 0x000a,\n\t// Block 0x83, offset 0x20c0\n\t0x20c4: 0x000c, 0x20c5: 0x000c,\n\t0x20e0: 0x000c, 0x20e1: 0x000c, 0x20e2: 0x000c, 0x20e3: 0x000c,\n\t0x20e4: 0x000c, 0x20e5: 0x000c, 0x20e6: 0x000c, 0x20e7: 0x000c, 0x20e8: 0x000c, 0x20e9: 0x000c,\n\t0x20ea: 0x000c, 0x20eb: 0x000c, 0x20ec: 0x000c, 0x20ed: 0x000c, 0x20ee: 0x000c, 0x20ef: 0x000c,\n\t0x20f0: 0x000c, 0x20f1: 0x000c,\n\t0x20ff: 0x000c,\n\t// Block 0x84, offset 0x2100\n\t0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c,\n\t0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c,\n\t// Block 0x85, offset 0x2140\n\t0x2147: 0x000c, 0x2148: 0x000c, 0x2149: 0x000c, 0x214a: 0x000c, 0x214b: 0x000c,\n\t0x214c: 0x000c, 0x214d: 0x000c, 0x214e: 0x000c, 0x214f: 0x000c, 0x2150: 0x000c, 0x2151: 0x000c,\n\t// Block 0x86, offset 0x2180\n\t0x2180: 0x000c, 0x2181: 0x000c, 0x2182: 0x000c,\n\t0x21b3: 0x000c,\n\t0x21b6: 0x000c, 0x21b7: 0x000c, 0x21b8: 0x000c, 0x21b9: 0x000c,\n\t0x21bc: 0x000c, 0x21bd: 0x000c,\n\t// Block 0x87, offset 0x21c0\n\t0x21e5: 0x000c,\n\t// Block 0x88, offset 0x2200\n\t0x2229: 0x000c,\n\t0x222a: 0x000c, 0x222b: 0x000c, 0x222c: 0x000c, 0x222d: 0x000c, 0x222e: 0x000c,\n\t0x2231: 0x000c, 0x2232: 0x000c, 0x2235: 0x000c,\n\t0x2236: 0x000c,\n\t// Block 0x89, offset 0x2240\n\t0x2243: 0x000c,\n\t0x224c: 0x000c,\n\t0x227c: 0x000c,\n\t// Block 0x8a, offset 0x2280\n\t0x22b0: 0x000c, 0x22b2: 0x000c, 0x22b3: 0x000c, 0x22b4: 0x000c,\n\t0x22b7: 0x000c, 0x22b8: 0x000c,\n\t0x22be: 0x000c, 0x22bf: 0x000c,\n\t// Block 0x8b, offset 0x22c0\n\t0x22c1: 0x000c,\n\t0x22ec: 0x000c, 0x22ed: 0x000c,\n\t0x22f6: 0x000c,\n\t// Block 0x8c, offset 0x2300\n\t0x232a: 0x000a, 0x232b: 0x000a,\n\t// Block 0x8d, offset 0x2340\n\t0x2365: 0x000c, 0x2368: 0x000c,\n\t0x236d: 0x000c,\n\t// Block 0x8e, offset 0x2380\n\t0x239d: 0x0001,\n\t0x239e: 0x000c, 0x239f: 0x0001, 0x23a0: 0x0001, 0x23a1: 0x0001, 0x23a2: 0x0001, 0x23a3: 0x0001,\n\t0x23a4: 0x0001, 0x23a5: 0x0001, 0x23a6: 0x0001, 0x23a7: 0x0001, 0x23a8: 0x0001, 0x23a9: 0x0003,\n\t0x23aa: 0x0001, 0x23ab: 0x0001, 0x23ac: 0x0001, 0x23ad: 0x0001, 0x23ae: 0x0001, 0x23af: 0x0001,\n\t0x23b0: 0x0001, 0x23b1: 0x0001, 0x23b2: 0x0001, 0x23b3: 0x0001, 0x23b4: 0x0001, 0x23b5: 0x0001,\n\t0x23b6: 0x0001, 0x23b7: 0x0001, 0x23b8: 0x0001, 0x23b9: 0x0001, 0x23ba: 0x0001, 0x23bb: 0x0001,\n\t0x23bc: 0x0001, 0x23bd: 0x0001, 0x23be: 0x0001, 0x23bf: 0x0001,\n\t// Block 0x8f, offset 0x23c0\n\t0x23c0: 0x0001, 0x23c1: 0x0001, 0x23c2: 0x0001, 0x23c3: 0x0001, 0x23c4: 0x0001, 0x23c5: 0x0001,\n\t0x23c6: 0x0001, 0x23c7: 0x0001, 0x23c8: 0x0001, 0x23c9: 0x0001, 0x23ca: 0x0001, 0x23cb: 0x0001,\n\t0x23cc: 0x0001, 0x23cd: 0x0001, 0x23ce: 0x0001, 0x23cf: 0x0001, 0x23d0: 0x000d, 0x23d1: 0x000d,\n\t0x23d2: 0x000d, 0x23d3: 0x000d, 0x23d4: 0x000d, 0x23d5: 0x000d, 0x23d6: 0x000d, 0x23d7: 0x000d,\n\t0x23d8: 0x000d, 0x23d9: 0x000d, 0x23da: 0x000d, 0x23db: 0x000d, 0x23dc: 0x000d, 0x23dd: 0x000d,\n\t0x23de: 0x000d, 0x23df: 0x000d, 0x23e0: 0x000d, 0x23e1: 0x000d, 0x23e2: 0x000d, 0x23e3: 0x000d,\n\t0x23e4: 0x000d, 0x23e5: 0x000d, 0x23e6: 0x000d, 0x23e7: 0x000d, 0x23e8: 0x000d, 0x23e9: 0x000d,\n\t0x23ea: 0x000d, 0x23eb: 0x000d, 0x23ec: 0x000d, 0x23ed: 0x000d, 0x23ee: 0x000d, 0x23ef: 0x000d,\n\t0x23f0: 0x000d, 0x23f1: 0x000d, 0x23f2: 0x000d, 0x23f3: 0x000d, 0x23f4: 0x000d, 0x23f5: 0x000d,\n\t0x23f6: 0x000d, 0x23f7: 0x000d, 0x23f8: 0x000d, 0x23f9: 0x000d, 0x23fa: 0x000d, 0x23fb: 0x000d,\n\t0x23fc: 0x000d, 0x23fd: 0x000d, 0x23fe: 0x000d, 0x23ff: 0x000d,\n\t// Block 0x90, offset 0x2400\n\t0x2400: 0x000d, 0x2401: 0x000d, 0x2402: 0x000d, 0x2403: 0x000d, 0x2404: 0x000d, 0x2405: 0x000d,\n\t0x2406: 0x000d, 0x2407: 0x000d, 0x2408: 0x000d, 0x2409: 0x000d, 0x240a: 0x000d, 0x240b: 0x000d,\n\t0x240c: 0x000d, 0x240d: 0x000d, 0x240e: 0x000d, 0x240f: 0x000d, 0x2410: 0x000d, 0x2411: 0x000d,\n\t0x2412: 0x000d, 0x2413: 0x000d, 0x2414: 0x000d, 0x2415: 0x000d, 0x2416: 0x000d, 0x2417: 0x000d,\n\t0x2418: 0x000d, 0x2419: 0x000d, 0x241a: 0x000d, 0x241b: 0x000d, 0x241c: 0x000d, 0x241d: 0x000d,\n\t0x241e: 0x000d, 0x241f: 0x000d, 0x2420: 0x000d, 0x2421: 0x000d, 0x2422: 0x000d, 0x2423: 0x000d,\n\t0x2424: 0x000d, 0x2425: 0x000d, 0x2426: 0x000d, 0x2427: 0x000d, 0x2428: 0x000d, 0x2429: 0x000d,\n\t0x242a: 0x000d, 0x242b: 0x000d, 0x242c: 0x000d, 0x242d: 0x000d, 0x242e: 0x000d, 0x242f: 0x000d,\n\t0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d,\n\t0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d,\n\t0x243c: 0x000d, 0x243d: 0x000d, 0x243e: 0x000a, 0x243f: 0x000a,\n\t// Block 0x91, offset 0x2440\n\t0x2440: 0x000a, 0x2441: 0x000a, 0x2442: 0x000a, 0x2443: 0x000a, 0x2444: 0x000a, 0x2445: 0x000a,\n\t0x2446: 0x000a, 0x2447: 0x000a, 0x2448: 0x000a, 0x2449: 0x000a, 0x244a: 0x000a, 0x244b: 0x000a,\n\t0x244c: 0x000a, 0x244d: 0x000a, 0x244e: 0x000a, 0x244f: 0x000a, 0x2450: 0x000d, 0x2451: 0x000d,\n\t0x2452: 0x000d, 0x2453: 0x000d, 0x2454: 0x000d, 0x2455: 0x000d, 0x2456: 0x000d, 0x2457: 0x000d,\n\t0x2458: 0x000d, 0x2459: 0x000d, 0x245a: 0x000d, 0x245b: 0x000d, 0x245c: 0x000d, 0x245d: 0x000d,\n\t0x245e: 0x000d, 0x245f: 0x000d, 0x2460: 0x000d, 0x2461: 0x000d, 0x2462: 0x000d, 0x2463: 0x000d,\n\t0x2464: 0x000d, 0x2465: 0x000d, 0x2466: 0x000d, 0x2467: 0x000d, 0x2468: 0x000d, 0x2469: 0x000d,\n\t0x246a: 0x000d, 0x246b: 0x000d, 0x246c: 0x000d, 0x246d: 0x000d, 0x246e: 0x000d, 0x246f: 0x000d,\n\t0x2470: 0x000d, 0x2471: 0x000d, 0x2472: 0x000d, 0x2473: 0x000d, 0x2474: 0x000d, 0x2475: 0x000d,\n\t0x2476: 0x000d, 0x2477: 0x000d, 0x2478: 0x000d, 0x2479: 0x000d, 0x247a: 0x000d, 0x247b: 0x000d,\n\t0x247c: 0x000d, 0x247d: 0x000d, 0x247e: 0x000d, 0x247f: 0x000d,\n\t// Block 0x92, offset 0x2480\n\t0x2480: 0x000d, 0x2481: 0x000d, 0x2482: 0x000d, 0x2483: 0x000d, 0x2484: 0x000d, 0x2485: 0x000d,\n\t0x2486: 0x000d, 0x2487: 0x000d, 0x2488: 0x000d, 0x2489: 0x000d, 0x248a: 0x000d, 0x248b: 0x000d,\n\t0x248c: 0x000d, 0x248d: 0x000d, 0x248e: 0x000d, 0x248f: 0x000a, 0x2490: 0x000b, 0x2491: 0x000b,\n\t0x2492: 0x000b, 0x2493: 0x000b, 0x2494: 0x000b, 0x2495: 0x000b, 0x2496: 0x000b, 0x2497: 0x000b,\n\t0x2498: 0x000b, 0x2499: 0x000b, 0x249a: 0x000b, 0x249b: 0x000b, 0x249c: 0x000b, 0x249d: 0x000b,\n\t0x249e: 0x000b, 0x249f: 0x000b, 0x24a0: 0x000b, 0x24a1: 0x000b, 0x24a2: 0x000b, 0x24a3: 0x000b,\n\t0x24a4: 0x000b, 0x24a5: 0x000b, 0x24a6: 0x000b, 0x24a7: 0x000b, 0x24a8: 0x000b, 0x24a9: 0x000b,\n\t0x24aa: 0x000b, 0x24ab: 0x000b, 0x24ac: 0x000b, 0x24ad: 0x000b, 0x24ae: 0x000b, 0x24af: 0x000b,\n\t0x24b0: 0x000d, 0x24b1: 0x000d, 0x24b2: 0x000d, 0x24b3: 0x000d, 0x24b4: 0x000d, 0x24b5: 0x000d,\n\t0x24b6: 0x000d, 0x24b7: 0x000d, 0x24b8: 0x000d, 0x24b9: 0x000d, 0x24ba: 0x000d, 0x24bb: 0x000d,\n\t0x24bc: 0x000d, 0x24bd: 0x000a, 0x24be: 0x000a, 0x24bf: 0x000a,\n\t// Block 0x93, offset 0x24c0\n\t0x24c0: 0x000c, 0x24c1: 0x000c, 0x24c2: 0x000c, 0x24c3: 0x000c, 0x24c4: 0x000c, 0x24c5: 0x000c,\n\t0x24c6: 0x000c, 0x24c7: 0x000c, 0x24c8: 0x000c, 0x24c9: 0x000c, 0x24ca: 0x000c, 0x24cb: 0x000c,\n\t0x24cc: 0x000c, 0x24cd: 0x000c, 0x24ce: 0x000c, 0x24cf: 0x000c, 0x24d0: 0x000a, 0x24d1: 0x000a,\n\t0x24d2: 0x000a, 0x24d3: 0x000a, 0x24d4: 0x000a, 0x24d5: 0x000a, 0x24d6: 0x000a, 0x24d7: 0x000a,\n\t0x24d8: 0x000a, 0x24d9: 0x000a,\n\t0x24e0: 0x000c, 0x24e1: 0x000c, 0x24e2: 0x000c, 0x24e3: 0x000c,\n\t0x24e4: 0x000c, 0x24e5: 0x000c, 0x24e6: 0x000c, 0x24e7: 0x000c, 0x24e8: 0x000c, 0x24e9: 0x000c,\n\t0x24ea: 0x000c, 0x24eb: 0x000c, 0x24ec: 0x000c, 0x24ed: 0x000c, 0x24ee: 0x000c, 0x24ef: 0x000c,\n\t0x24f0: 0x000a, 0x24f1: 0x000a, 0x24f2: 0x000a, 0x24f3: 0x000a, 0x24f4: 0x000a, 0x24f5: 0x000a,\n\t0x24f6: 0x000a, 0x24f7: 0x000a, 0x24f8: 0x000a, 0x24f9: 0x000a, 0x24fa: 0x000a, 0x24fb: 0x000a,\n\t0x24fc: 0x000a, 0x24fd: 0x000a, 0x24fe: 0x000a, 0x24ff: 0x000a,\n\t// Block 0x94, offset 0x2500\n\t0x2500: 0x000a, 0x2501: 0x000a, 0x2502: 0x000a, 0x2503: 0x000a, 0x2504: 0x000a, 0x2505: 0x000a,\n\t0x2506: 0x000a, 0x2507: 0x000a, 0x2508: 0x000a, 0x2509: 0x000a, 0x250a: 0x000a, 0x250b: 0x000a,\n\t0x250c: 0x000a, 0x250d: 0x000a, 0x250e: 0x000a, 0x250f: 0x000a, 0x2510: 0x0006, 0x2511: 0x000a,\n\t0x2512: 0x0006, 0x2514: 0x000a, 0x2515: 0x0006, 0x2516: 0x000a, 0x2517: 0x000a,\n\t0x2518: 0x000a, 0x2519: 0x009a, 0x251a: 0x008a, 0x251b: 0x007a, 0x251c: 0x006a, 0x251d: 0x009a,\n\t0x251e: 0x008a, 0x251f: 0x0004, 0x2520: 0x000a, 0x2521: 0x000a, 0x2522: 0x0003, 0x2523: 0x0003,\n\t0x2524: 0x000a, 0x2525: 0x000a, 0x2526: 0x000a, 0x2528: 0x000a, 0x2529: 0x0004,\n\t0x252a: 0x0004, 0x252b: 0x000a,\n\t0x2530: 0x000d, 0x2531: 0x000d, 0x2532: 0x000d, 0x2533: 0x000d, 0x2534: 0x000d, 0x2535: 0x000d,\n\t0x2536: 0x000d, 0x2537: 0x000d, 0x2538: 0x000d, 0x2539: 0x000d, 0x253a: 0x000d, 0x253b: 0x000d,\n\t0x253c: 0x000d, 0x253d: 0x000d, 0x253e: 0x000d, 0x253f: 0x000d,\n\t// Block 0x95, offset 0x2540\n\t0x2540: 0x000d, 0x2541: 0x000d, 0x2542: 0x000d, 0x2543: 0x000d, 0x2544: 0x000d, 0x2545: 0x000d,\n\t0x2546: 0x000d, 0x2547: 0x000d, 0x2548: 0x000d, 0x2549: 0x000d, 0x254a: 0x000d, 0x254b: 0x000d,\n\t0x254c: 0x000d, 0x254d: 0x000d, 0x254e: 0x000d, 0x254f: 0x000d, 0x2550: 0x000d, 0x2551: 0x000d,\n\t0x2552: 0x000d, 0x2553: 0x000d, 0x2554: 0x000d, 0x2555: 0x000d, 0x2556: 0x000d, 0x2557: 0x000d,\n\t0x2558: 0x000d, 0x2559: 0x000d, 0x255a: 0x000d, 0x255b: 0x000d, 0x255c: 0x000d, 0x255d: 0x000d,\n\t0x255e: 0x000d, 0x255f: 0x000d, 0x2560: 0x000d, 0x2561: 0x000d, 0x2562: 0x000d, 0x2563: 0x000d,\n\t0x2564: 0x000d, 0x2565: 0x000d, 0x2566: 0x000d, 0x2567: 0x000d, 0x2568: 0x000d, 0x2569: 0x000d,\n\t0x256a: 0x000d, 0x256b: 0x000d, 0x256c: 0x000d, 0x256d: 0x000d, 0x256e: 0x000d, 0x256f: 0x000d,\n\t0x2570: 0x000d, 0x2571: 0x000d, 0x2572: 0x000d, 0x2573: 0x000d, 0x2574: 0x000d, 0x2575: 0x000d,\n\t0x2576: 0x000d, 0x2577: 0x000d, 0x2578: 0x000d, 0x2579: 0x000d, 0x257a: 0x000d, 0x257b: 0x000d,\n\t0x257c: 0x000d, 0x257d: 0x000d, 0x257e: 0x000d, 0x257f: 0x000b,\n\t// Block 0x96, offset 0x2580\n\t0x2581: 0x000a, 0x2582: 0x000a, 0x2583: 0x0004, 0x2584: 0x0004, 0x2585: 0x0004,\n\t0x2586: 0x000a, 0x2587: 0x000a, 0x2588: 0x003a, 0x2589: 0x002a, 0x258a: 0x000a, 0x258b: 0x0003,\n\t0x258c: 0x0006, 0x258d: 0x0003, 0x258e: 0x0006, 0x258f: 0x0006, 0x2590: 0x0002, 0x2591: 0x0002,\n\t0x2592: 0x0002, 0x2593: 0x0002, 0x2594: 0x0002, 0x2595: 0x0002, 0x2596: 0x0002, 0x2597: 0x0002,\n\t0x2598: 0x0002, 0x2599: 0x0002, 0x259a: 0x0006, 0x259b: 0x000a, 0x259c: 0x000a, 0x259d: 0x000a,\n\t0x259e: 0x000a, 0x259f: 0x000a, 0x25a0: 0x000a,\n\t0x25bb: 0x005a,\n\t0x25bc: 0x000a, 0x25bd: 0x004a, 0x25be: 0x000a, 0x25bf: 0x000a,\n\t// Block 0x97, offset 0x25c0\n\t0x25c0: 0x000a,\n\t0x25db: 0x005a, 0x25dc: 0x000a, 0x25dd: 0x004a,\n\t0x25de: 0x000a, 0x25df: 0x00fa, 0x25e0: 0x00ea, 0x25e1: 0x000a, 0x25e2: 0x003a, 0x25e3: 0x002a,\n\t0x25e4: 0x000a, 0x25e5: 0x000a,\n\t// Block 0x98, offset 0x2600\n\t0x2620: 0x0004, 0x2621: 0x0004, 0x2622: 0x000a, 0x2623: 0x000a,\n\t0x2624: 0x000a, 0x2625: 0x0004, 0x2626: 0x0004, 0x2628: 0x000a, 0x2629: 0x000a,\n\t0x262a: 0x000a, 0x262b: 0x000a, 0x262c: 0x000a, 0x262d: 0x000a, 0x262e: 0x000a,\n\t0x2630: 0x000b, 0x2631: 0x000b, 0x2632: 0x000b, 0x2633: 0x000b, 0x2634: 0x000b, 0x2635: 0x000b,\n\t0x2636: 0x000b, 0x2637: 0x000b, 0x2638: 0x000b, 0x2639: 0x000a, 0x263a: 0x000a, 0x263b: 0x000a,\n\t0x263c: 0x000a, 0x263d: 0x000a, 0x263e: 0x000b, 0x263f: 0x000b,\n\t// Block 0x99, offset 0x2640\n\t0x2641: 0x000a,\n\t// Block 0x9a, offset 0x2680\n\t0x2680: 0x000a, 0x2681: 0x000a, 0x2682: 0x000a, 0x2683: 0x000a, 0x2684: 0x000a, 0x2685: 0x000a,\n\t0x2686: 0x000a, 0x2687: 0x000a, 0x2688: 0x000a, 0x2689: 0x000a, 0x268a: 0x000a, 0x268b: 0x000a,\n\t0x268c: 0x000a, 0x2690: 0x000a, 0x2691: 0x000a,\n\t0x2692: 0x000a, 0x2693: 0x000a, 0x2694: 0x000a, 0x2695: 0x000a, 0x2696: 0x000a, 0x2697: 0x000a,\n\t0x2698: 0x000a, 0x2699: 0x000a, 0x269a: 0x000a, 0x269b: 0x000a, 0x269c: 0x000a,\n\t0x26a0: 0x000a,\n\t// Block 0x9b, offset 0x26c0\n\t0x26fd: 0x000c,\n\t// Block 0x9c, offset 0x2700\n\t0x2720: 0x000c, 0x2721: 0x0002, 0x2722: 0x0002, 0x2723: 0x0002,\n\t0x2724: 0x0002, 0x2725: 0x0002, 0x2726: 0x0002, 0x2727: 0x0002, 0x2728: 0x0002, 0x2729: 0x0002,\n\t0x272a: 0x0002, 0x272b: 0x0002, 0x272c: 0x0002, 0x272d: 0x0002, 0x272e: 0x0002, 0x272f: 0x0002,\n\t0x2730: 0x0002, 0x2731: 0x0002, 0x2732: 0x0002, 0x2733: 0x0002, 0x2734: 0x0002, 0x2735: 0x0002,\n\t0x2736: 0x0002, 0x2737: 0x0002, 0x2738: 0x0002, 0x2739: 0x0002, 0x273a: 0x0002, 0x273b: 0x0002,\n\t// Block 0x9d, offset 0x2740\n\t0x2776: 0x000c, 0x2777: 0x000c, 0x2778: 0x000c, 0x2779: 0x000c, 0x277a: 0x000c,\n\t// Block 0x9e, offset 0x2780\n\t0x2780: 0x0001, 0x2781: 0x0001, 0x2782: 0x0001, 0x2783: 0x0001, 0x2784: 0x0001, 0x2785: 0x0001,\n\t0x2786: 0x0001, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001,\n\t0x278c: 0x0001, 0x278d: 0x0001, 0x278e: 0x0001, 0x278f: 0x0001, 0x2790: 0x0001, 0x2791: 0x0001,\n\t0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001,\n\t0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001,\n\t0x279e: 0x0001, 0x279f: 0x0001, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001,\n\t0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001,\n\t0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001,\n\t0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001,\n\t0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x0001, 0x27b9: 0x0001, 0x27ba: 0x0001, 0x27bb: 0x0001,\n\t0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x0001,\n\t// Block 0x9f, offset 0x27c0\n\t0x27c0: 0x0001, 0x27c1: 0x0001, 0x27c2: 0x0001, 0x27c3: 0x0001, 0x27c4: 0x0001, 0x27c5: 0x0001,\n\t0x27c6: 0x0001, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001,\n\t0x27cc: 0x0001, 0x27cd: 0x0001, 0x27ce: 0x0001, 0x27cf: 0x0001, 0x27d0: 0x0001, 0x27d1: 0x0001,\n\t0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001,\n\t0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001,\n\t0x27de: 0x0001, 0x27df: 0x000a, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001,\n\t0x27e4: 0x0001, 0x27e5: 0x0001, 0x27e6: 0x0001, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001,\n\t0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001,\n\t0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001,\n\t0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x0001, 0x27f9: 0x0001, 0x27fa: 0x0001, 0x27fb: 0x0001,\n\t0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x0001,\n\t// Block 0xa0, offset 0x2800\n\t0x2800: 0x0001, 0x2801: 0x000c, 0x2802: 0x000c, 0x2803: 0x000c, 0x2804: 0x0001, 0x2805: 0x000c,\n\t0x2806: 0x000c, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001,\n\t0x280c: 0x000c, 0x280d: 0x000c, 0x280e: 0x000c, 0x280f: 0x000c, 0x2810: 0x0001, 0x2811: 0x0001,\n\t0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001,\n\t0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001,\n\t0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001,\n\t0x2824: 0x0001, 0x2825: 0x0001, 0x2826: 0x0001, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001,\n\t0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001,\n\t0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001,\n\t0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x000c, 0x2839: 0x000c, 0x283a: 0x000c, 0x283b: 0x0001,\n\t0x283c: 0x0001, 0x283d: 0x0001, 0x283e: 0x0001, 0x283f: 0x000c,\n\t// Block 0xa1, offset 0x2840\n\t0x2840: 0x0001, 0x2841: 0x0001, 0x2842: 0x0001, 0x2843: 0x0001, 0x2844: 0x0001, 0x2845: 0x0001,\n\t0x2846: 0x0001, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001,\n\t0x284c: 0x0001, 0x284d: 0x0001, 0x284e: 0x0001, 0x284f: 0x0001, 0x2850: 0x0001, 0x2851: 0x0001,\n\t0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001,\n\t0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001,\n\t0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0001, 0x2861: 0x0001, 0x2862: 0x0001, 0x2863: 0x0001,\n\t0x2864: 0x0001, 0x2865: 0x000c, 0x2866: 0x000c, 0x2867: 0x0001, 0x2868: 0x0001, 0x2869: 0x0001,\n\t0x286a: 0x0001, 0x286b: 0x0001, 0x286c: 0x0001, 0x286d: 0x0001, 0x286e: 0x0001, 0x286f: 0x0001,\n\t0x2870: 0x0001, 0x2871: 0x0001, 0x2872: 0x0001, 0x2873: 0x0001, 0x2874: 0x0001, 0x2875: 0x0001,\n\t0x2876: 0x0001, 0x2877: 0x0001, 0x2878: 0x0001, 0x2879: 0x0001, 0x287a: 0x0001, 0x287b: 0x0001,\n\t0x287c: 0x0001, 0x287d: 0x0001, 0x287e: 0x0001, 0x287f: 0x0001,\n\t// Block 0xa2, offset 0x2880\n\t0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001,\n\t0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001,\n\t0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001,\n\t0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001,\n\t0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001,\n\t0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0001, 0x28a1: 0x0001, 0x28a2: 0x0001, 0x28a3: 0x0001,\n\t0x28a4: 0x0001, 0x28a5: 0x0001, 0x28a6: 0x0001, 0x28a7: 0x0001, 0x28a8: 0x0001, 0x28a9: 0x0001,\n\t0x28aa: 0x0001, 0x28ab: 0x0001, 0x28ac: 0x0001, 0x28ad: 0x0001, 0x28ae: 0x0001, 0x28af: 0x0001,\n\t0x28b0: 0x0001, 0x28b1: 0x0001, 0x28b2: 0x0001, 0x28b3: 0x0001, 0x28b4: 0x0001, 0x28b5: 0x0001,\n\t0x28b6: 0x0001, 0x28b7: 0x0001, 0x28b8: 0x0001, 0x28b9: 0x000a, 0x28ba: 0x000a, 0x28bb: 0x000a,\n\t0x28bc: 0x000a, 0x28bd: 0x000a, 0x28be: 0x000a, 0x28bf: 0x000a,\n\t// Block 0xa3, offset 0x28c0\n\t0x28c0: 0x000d, 0x28c1: 0x000d, 0x28c2: 0x000d, 0x28c3: 0x000d, 0x28c4: 0x000d, 0x28c5: 0x000d,\n\t0x28c6: 0x000d, 0x28c7: 0x000d, 0x28c8: 0x000d, 0x28c9: 0x000d, 0x28ca: 0x000d, 0x28cb: 0x000d,\n\t0x28cc: 0x000d, 0x28cd: 0x000d, 0x28ce: 0x000d, 0x28cf: 0x000d, 0x28d0: 0x000d, 0x28d1: 0x000d,\n\t0x28d2: 0x000d, 0x28d3: 0x000d, 0x28d4: 0x000d, 0x28d5: 0x000d, 0x28d6: 0x000d, 0x28d7: 0x000d,\n\t0x28d8: 0x000d, 0x28d9: 0x000d, 0x28da: 0x000d, 0x28db: 0x000d, 0x28dc: 0x000d, 0x28dd: 0x000d,\n\t0x28de: 0x000d, 0x28df: 0x000d, 0x28e0: 0x000d, 0x28e1: 0x000d, 0x28e2: 0x000d, 0x28e3: 0x000d,\n\t0x28e4: 0x000c, 0x28e5: 0x000c, 0x28e6: 0x000c, 0x28e7: 0x000c, 0x28e8: 0x0001, 0x28e9: 0x0001,\n\t0x28ea: 0x0001, 0x28eb: 0x0001, 0x28ec: 0x0001, 0x28ed: 0x0001, 0x28ee: 0x0001, 0x28ef: 0x0001,\n\t0x28f0: 0x0005, 0x28f1: 0x0005, 0x28f2: 0x0005, 0x28f3: 0x0005, 0x28f4: 0x0005, 0x28f5: 0x0005,\n\t0x28f6: 0x0005, 0x28f7: 0x0005, 0x28f8: 0x0005, 0x28f9: 0x0005, 0x28fa: 0x0001, 0x28fb: 0x0001,\n\t0x28fc: 0x0001, 0x28fd: 0x0001, 0x28fe: 0x0001, 0x28ff: 0x0001,\n\t// Block 0xa4, offset 0x2900\n\t0x2900: 0x0001, 0x2901: 0x0001, 0x2902: 0x0001, 0x2903: 0x0001, 0x2904: 0x0001, 0x2905: 0x0001,\n\t0x2906: 0x0001, 0x2907: 0x0001, 0x2908: 0x0001, 0x2909: 0x0001, 0x290a: 0x0001, 0x290b: 0x0001,\n\t0x290c: 0x0001, 0x290d: 0x0001, 0x290e: 0x0001, 0x290f: 0x0001, 0x2910: 0x0001, 0x2911: 0x0001,\n\t0x2912: 0x0001, 0x2913: 0x0001, 0x2914: 0x0001, 0x2915: 0x0001, 0x2916: 0x0001, 0x2917: 0x0001,\n\t0x2918: 0x0001, 0x2919: 0x0001, 0x291a: 0x0001, 0x291b: 0x0001, 0x291c: 0x0001, 0x291d: 0x0001,\n\t0x291e: 0x0001, 0x291f: 0x0001, 0x2920: 0x0005, 0x2921: 0x0005, 0x2922: 0x0005, 0x2923: 0x0005,\n\t0x2924: 0x0005, 0x2925: 0x0005, 0x2926: 0x0005, 0x2927: 0x0005, 0x2928: 0x0005, 0x2929: 0x0005,\n\t0x292a: 0x0005, 0x292b: 0x0005, 0x292c: 0x0005, 0x292d: 0x0005, 0x292e: 0x0005, 0x292f: 0x0005,\n\t0x2930: 0x0005, 0x2931: 0x0005, 0x2932: 0x0005, 0x2933: 0x0005, 0x2934: 0x0005, 0x2935: 0x0005,\n\t0x2936: 0x0005, 0x2937: 0x0005, 0x2938: 0x0005, 0x2939: 0x0005, 0x293a: 0x0005, 0x293b: 0x0005,\n\t0x293c: 0x0005, 0x293d: 0x0005, 0x293e: 0x0005, 0x293f: 0x0001,\n\t// Block 0xa5, offset 0x2940\n\t0x2940: 0x0001, 0x2941: 0x0001, 0x2942: 0x0001, 0x2943: 0x0001, 0x2944: 0x0001, 0x2945: 0x0001,\n\t0x2946: 0x0001, 0x2947: 0x0001, 0x2948: 0x0001, 0x2949: 0x0001, 0x294a: 0x0001, 0x294b: 0x0001,\n\t0x294c: 0x0001, 0x294d: 0x0001, 0x294e: 0x0001, 0x294f: 0x0001, 0x2950: 0x0001, 0x2951: 0x0001,\n\t0x2952: 0x0001, 0x2953: 0x0001, 0x2954: 0x0001, 0x2955: 0x0001, 0x2956: 0x0001, 0x2957: 0x0001,\n\t0x2958: 0x0001, 0x2959: 0x0001, 0x295a: 0x0001, 0x295b: 0x0001, 0x295c: 0x0001, 0x295d: 0x0001,\n\t0x295e: 0x0001, 0x295f: 0x0001, 0x2960: 0x0001, 0x2961: 0x0001, 0x2962: 0x0001, 0x2963: 0x0001,\n\t0x2964: 0x0001, 0x2965: 0x0001, 0x2966: 0x0001, 0x2967: 0x0001, 0x2968: 0x0001, 0x2969: 0x0001,\n\t0x296a: 0x0001, 0x296b: 0x000c, 0x296c: 0x000c, 0x296d: 0x0001, 0x296e: 0x0001, 0x296f: 0x0001,\n\t0x2970: 0x0001, 0x2971: 0x0001, 0x2972: 0x0001, 0x2973: 0x0001, 0x2974: 0x0001, 0x2975: 0x0001,\n\t0x2976: 0x0001, 0x2977: 0x0001, 0x2978: 0x0001, 0x2979: 0x0001, 0x297a: 0x0001, 0x297b: 0x0001,\n\t0x297c: 0x0001, 0x297d: 0x0001, 0x297e: 0x0001, 0x297f: 0x0001,\n\t// Block 0xa6, offset 0x2980\n\t0x2980: 0x0001, 0x2981: 0x0001, 0x2982: 0x0001, 0x2983: 0x0001, 0x2984: 0x0001, 0x2985: 0x0001,\n\t0x2986: 0x0001, 0x2987: 0x0001, 0x2988: 0x0001, 0x2989: 0x0001, 0x298a: 0x0001, 0x298b: 0x0001,\n\t0x298c: 0x0001, 0x298d: 0x0001, 0x298e: 0x0001, 0x298f: 0x0001, 0x2990: 0x0001, 0x2991: 0x0001,\n\t0x2992: 0x0001, 0x2993: 0x0001, 0x2994: 0x0001, 0x2995: 0x0001, 0x2996: 0x0001, 0x2997: 0x0001,\n\t0x2998: 0x0001, 0x2999: 0x0001, 0x299a: 0x0001, 0x299b: 0x0001, 0x299c: 0x0001, 0x299d: 0x0001,\n\t0x299e: 0x0001, 0x299f: 0x0001, 0x29a0: 0x0001, 0x29a1: 0x0001, 0x29a2: 0x0001, 0x29a3: 0x0001,\n\t0x29a4: 0x0001, 0x29a5: 0x0001, 0x29a6: 0x0001, 0x29a7: 0x0001, 0x29a8: 0x0001, 0x29a9: 0x0001,\n\t0x29aa: 0x0001, 0x29ab: 0x0001, 0x29ac: 0x0001, 0x29ad: 0x0001, 0x29ae: 0x0001, 0x29af: 0x0001,\n\t0x29b0: 0x0001, 0x29b1: 0x0001, 0x29b2: 0x0001, 0x29b3: 0x0001, 0x29b4: 0x0001, 0x29b5: 0x0001,\n\t0x29b6: 0x0001, 0x29b7: 0x0001, 0x29b8: 0x0001, 0x29b9: 0x0001, 0x29ba: 0x0001, 0x29bb: 0x0001,\n\t0x29bc: 0x0001, 0x29bd: 0x000c, 0x29be: 0x000c, 0x29bf: 0x000c,\n\t// Block 0xa7, offset 0x29c0\n\t0x29c0: 0x0001, 0x29c1: 0x0001, 0x29c2: 0x0001, 0x29c3: 0x0001, 0x29c4: 0x0001, 0x29c5: 0x0001,\n\t0x29c6: 0x0001, 0x29c7: 0x0001, 0x29c8: 0x0001, 0x29c9: 0x0001, 0x29ca: 0x0001, 0x29cb: 0x0001,\n\t0x29cc: 0x0001, 0x29cd: 0x0001, 0x29ce: 0x0001, 0x29cf: 0x0001, 0x29d0: 0x0001, 0x29d1: 0x0001,\n\t0x29d2: 0x0001, 0x29d3: 0x0001, 0x29d4: 0x0001, 0x29d5: 0x0001, 0x29d6: 0x0001, 0x29d7: 0x0001,\n\t0x29d8: 0x0001, 0x29d9: 0x0001, 0x29da: 0x0001, 0x29db: 0x0001, 0x29dc: 0x0001, 0x29dd: 0x0001,\n\t0x29de: 0x0001, 0x29df: 0x0001, 0x29e0: 0x0001, 0x29e1: 0x0001, 0x29e2: 0x0001, 0x29e3: 0x0001,\n\t0x29e4: 0x0001, 0x29e5: 0x0001, 0x29e6: 0x0001, 0x29e7: 0x0001, 0x29e8: 0x0001, 0x29e9: 0x0001,\n\t0x29ea: 0x0001, 0x29eb: 0x0001, 0x29ec: 0x0001, 0x29ed: 0x0001, 0x29ee: 0x0001, 0x29ef: 0x0001,\n\t0x29f0: 0x000d, 0x29f1: 0x000d, 0x29f2: 0x000d, 0x29f3: 0x000d, 0x29f4: 0x000d, 0x29f5: 0x000d,\n\t0x29f6: 0x000d, 0x29f7: 0x000d, 0x29f8: 0x000d, 0x29f9: 0x000d, 0x29fa: 0x000d, 0x29fb: 0x000d,\n\t0x29fc: 0x000d, 0x29fd: 0x000d, 0x29fe: 0x000d, 0x29ff: 0x000d,\n\t// Block 0xa8, offset 0x2a00\n\t0x2a00: 0x000d, 0x2a01: 0x000d, 0x2a02: 0x000d, 0x2a03: 0x000d, 0x2a04: 0x000d, 0x2a05: 0x000d,\n\t0x2a06: 0x000c, 0x2a07: 0x000c, 0x2a08: 0x000c, 0x2a09: 0x000c, 0x2a0a: 0x000c, 0x2a0b: 0x000c,\n\t0x2a0c: 0x000c, 0x2a0d: 0x000c, 0x2a0e: 0x000c, 0x2a0f: 0x000c, 0x2a10: 0x000c, 0x2a11: 0x000d,\n\t0x2a12: 0x000d, 0x2a13: 0x000d, 0x2a14: 0x000d, 0x2a15: 0x000d, 0x2a16: 0x000d, 0x2a17: 0x000d,\n\t0x2a18: 0x000d, 0x2a19: 0x000d, 0x2a1a: 0x0001, 0x2a1b: 0x0001, 0x2a1c: 0x0001, 0x2a1d: 0x0001,\n\t0x2a1e: 0x0001, 0x2a1f: 0x0001, 0x2a20: 0x0001, 0x2a21: 0x0001, 0x2a22: 0x0001, 0x2a23: 0x0001,\n\t0x2a24: 0x0001, 0x2a25: 0x0001, 0x2a26: 0x0001, 0x2a27: 0x0001, 0x2a28: 0x0001, 0x2a29: 0x0001,\n\t0x2a2a: 0x0001, 0x2a2b: 0x0001, 0x2a2c: 0x0001, 0x2a2d: 0x0001, 0x2a2e: 0x0001, 0x2a2f: 0x0001,\n\t0x2a30: 0x0001, 0x2a31: 0x0001, 0x2a32: 0x0001, 0x2a33: 0x0001, 0x2a34: 0x0001, 0x2a35: 0x0001,\n\t0x2a36: 0x0001, 0x2a37: 0x0001, 0x2a38: 0x0001, 0x2a39: 0x0001, 0x2a3a: 0x0001, 0x2a3b: 0x0001,\n\t0x2a3c: 0x0001, 0x2a3d: 0x0001, 0x2a3e: 0x0001, 0x2a3f: 0x0001,\n\t// Block 0xa9, offset 0x2a40\n\t0x2a40: 0x0001, 0x2a41: 0x0001, 0x2a42: 0x000c, 0x2a43: 0x000c, 0x2a44: 0x000c, 0x2a45: 0x000c,\n\t0x2a46: 0x0001, 0x2a47: 0x0001, 0x2a48: 0x0001, 0x2a49: 0x0001, 0x2a4a: 0x0001, 0x2a4b: 0x0001,\n\t0x2a4c: 0x0001, 0x2a4d: 0x0001, 0x2a4e: 0x0001, 0x2a4f: 0x0001, 0x2a50: 0x0001, 0x2a51: 0x0001,\n\t0x2a52: 0x0001, 0x2a53: 0x0001, 0x2a54: 0x0001, 0x2a55: 0x0001, 0x2a56: 0x0001, 0x2a57: 0x0001,\n\t0x2a58: 0x0001, 0x2a59: 0x0001, 0x2a5a: 0x0001, 0x2a5b: 0x0001, 0x2a5c: 0x0001, 0x2a5d: 0x0001,\n\t0x2a5e: 0x0001, 0x2a5f: 0x0001, 0x2a60: 0x0001, 0x2a61: 0x0001, 0x2a62: 0x0001, 0x2a63: 0x0001,\n\t0x2a64: 0x0001, 0x2a65: 0x0001, 0x2a66: 0x0001, 0x2a67: 0x0001, 0x2a68: 0x0001, 0x2a69: 0x0001,\n\t0x2a6a: 0x0001, 0x2a6b: 0x0001, 0x2a6c: 0x0001, 0x2a6d: 0x0001, 0x2a6e: 0x0001, 0x2a6f: 0x0001,\n\t0x2a70: 0x0001, 0x2a71: 0x0001, 0x2a72: 0x0001, 0x2a73: 0x0001, 0x2a74: 0x0001, 0x2a75: 0x0001,\n\t0x2a76: 0x0001, 0x2a77: 0x0001, 0x2a78: 0x0001, 0x2a79: 0x0001, 0x2a7a: 0x0001, 0x2a7b: 0x0001,\n\t0x2a7c: 0x0001, 0x2a7d: 0x0001, 0x2a7e: 0x0001, 0x2a7f: 0x0001,\n\t// Block 0xaa, offset 0x2a80\n\t0x2a81: 0x000c,\n\t0x2ab8: 0x000c, 0x2ab9: 0x000c, 0x2aba: 0x000c, 0x2abb: 0x000c,\n\t0x2abc: 0x000c, 0x2abd: 0x000c, 0x2abe: 0x000c, 0x2abf: 0x000c,\n\t// Block 0xab, offset 0x2ac0\n\t0x2ac0: 0x000c, 0x2ac1: 0x000c, 0x2ac2: 0x000c, 0x2ac3: 0x000c, 0x2ac4: 0x000c, 0x2ac5: 0x000c,\n\t0x2ac6: 0x000c,\n\t0x2ad2: 0x000a, 0x2ad3: 0x000a, 0x2ad4: 0x000a, 0x2ad5: 0x000a, 0x2ad6: 0x000a, 0x2ad7: 0x000a,\n\t0x2ad8: 0x000a, 0x2ad9: 0x000a, 0x2ada: 0x000a, 0x2adb: 0x000a, 0x2adc: 0x000a, 0x2add: 0x000a,\n\t0x2ade: 0x000a, 0x2adf: 0x000a, 0x2ae0: 0x000a, 0x2ae1: 0x000a, 0x2ae2: 0x000a, 0x2ae3: 0x000a,\n\t0x2ae4: 0x000a, 0x2ae5: 0x000a,\n\t0x2af0: 0x000c, 0x2af3: 0x000c, 0x2af4: 0x000c,\n\t0x2aff: 0x000c,\n\t// Block 0xac, offset 0x2b00\n\t0x2b00: 0x000c, 0x2b01: 0x000c,\n\t0x2b33: 0x000c, 0x2b34: 0x000c, 0x2b35: 0x000c,\n\t0x2b36: 0x000c, 0x2b39: 0x000c, 0x2b3a: 0x000c,\n\t// Block 0xad, offset 0x2b40\n\t0x2b40: 0x000c, 0x2b41: 0x000c, 0x2b42: 0x000c,\n\t0x2b67: 0x000c, 0x2b68: 0x000c, 0x2b69: 0x000c,\n\t0x2b6a: 0x000c, 0x2b6b: 0x000c, 0x2b6d: 0x000c, 0x2b6e: 0x000c, 0x2b6f: 0x000c,\n\t0x2b70: 0x000c, 0x2b71: 0x000c, 0x2b72: 0x000c, 0x2b73: 0x000c, 0x2b74: 0x000c,\n\t// Block 0xae, offset 0x2b80\n\t0x2bb3: 0x000c,\n\t// Block 0xaf, offset 0x2bc0\n\t0x2bc0: 0x000c, 0x2bc1: 0x000c,\n\t0x2bf6: 0x000c, 0x2bf7: 0x000c, 0x2bf8: 0x000c, 0x2bf9: 0x000c, 0x2bfa: 0x000c, 0x2bfb: 0x000c,\n\t0x2bfc: 0x000c, 0x2bfd: 0x000c, 0x2bfe: 0x000c,\n\t// Block 0xb0, offset 0x2c00\n\t0x2c09: 0x000c, 0x2c0a: 0x000c, 0x2c0b: 0x000c,\n\t0x2c0c: 0x000c, 0x2c0f: 0x000c,\n\t// Block 0xb1, offset 0x2c40\n\t0x2c6f: 0x000c,\n\t0x2c70: 0x000c, 0x2c71: 0x000c, 0x2c74: 0x000c,\n\t0x2c76: 0x000c, 0x2c77: 0x000c,\n\t0x2c7e: 0x000c,\n\t// Block 0xb2, offset 0x2c80\n\t0x2c9f: 0x000c, 0x2ca3: 0x000c,\n\t0x2ca4: 0x000c, 0x2ca5: 0x000c, 0x2ca6: 0x000c, 0x2ca7: 0x000c, 0x2ca8: 0x000c, 0x2ca9: 0x000c,\n\t0x2caa: 0x000c,\n\t// Block 0xb3, offset 0x2cc0\n\t0x2cc0: 0x000c,\n\t0x2ce6: 0x000c, 0x2ce7: 0x000c, 0x2ce8: 0x000c, 0x2ce9: 0x000c,\n\t0x2cea: 0x000c, 0x2ceb: 0x000c, 0x2cec: 0x000c,\n\t0x2cf0: 0x000c, 0x2cf1: 0x000c, 0x2cf2: 0x000c, 0x2cf3: 0x000c, 0x2cf4: 0x000c,\n\t// Block 0xb4, offset 0x2d00\n\t0x2d38: 0x000c, 0x2d39: 0x000c, 0x2d3a: 0x000c, 0x2d3b: 0x000c,\n\t0x2d3c: 0x000c, 0x2d3d: 0x000c, 0x2d3e: 0x000c, 0x2d3f: 0x000c,\n\t// Block 0xb5, offset 0x2d40\n\t0x2d42: 0x000c, 0x2d43: 0x000c, 0x2d44: 0x000c,\n\t0x2d46: 0x000c,\n\t0x2d5e: 0x000c,\n\t// Block 0xb6, offset 0x2d80\n\t0x2db3: 0x000c, 0x2db4: 0x000c, 0x2db5: 0x000c,\n\t0x2db6: 0x000c, 0x2db7: 0x000c, 0x2db8: 0x000c, 0x2dba: 0x000c,\n\t0x2dbf: 0x000c,\n\t// Block 0xb7, offset 0x2dc0\n\t0x2dc0: 0x000c, 0x2dc2: 0x000c, 0x2dc3: 0x000c,\n\t// Block 0xb8, offset 0x2e00\n\t0x2e32: 0x000c, 0x2e33: 0x000c, 0x2e34: 0x000c, 0x2e35: 0x000c,\n\t0x2e3c: 0x000c, 0x2e3d: 0x000c, 0x2e3f: 0x000c,\n\t// Block 0xb9, offset 0x2e40\n\t0x2e40: 0x000c,\n\t0x2e5c: 0x000c, 0x2e5d: 0x000c,\n\t// Block 0xba, offset 0x2e80\n\t0x2eb3: 0x000c, 0x2eb4: 0x000c, 0x2eb5: 0x000c,\n\t0x2eb6: 0x000c, 0x2eb7: 0x000c, 0x2eb8: 0x000c, 0x2eb9: 0x000c, 0x2eba: 0x000c,\n\t0x2ebd: 0x000c, 0x2ebf: 0x000c,\n\t// Block 0xbb, offset 0x2ec0\n\t0x2ec0: 0x000c,\n\t0x2ee0: 0x000a, 0x2ee1: 0x000a, 0x2ee2: 0x000a, 0x2ee3: 0x000a,\n\t0x2ee4: 0x000a, 0x2ee5: 0x000a, 0x2ee6: 0x000a, 0x2ee7: 0x000a, 0x2ee8: 0x000a, 0x2ee9: 0x000a,\n\t0x2eea: 0x000a, 0x2eeb: 0x000a, 0x2eec: 0x000a,\n\t// Block 0xbc, offset 0x2f00\n\t0x2f2b: 0x000c, 0x2f2d: 0x000c,\n\t0x2f30: 0x000c, 0x2f31: 0x000c, 0x2f32: 0x000c, 0x2f33: 0x000c, 0x2f34: 0x000c, 0x2f35: 0x000c,\n\t0x2f37: 0x000c,\n\t// Block 0xbd, offset 0x2f40\n\t0x2f5d: 0x000c,\n\t0x2f5e: 0x000c, 0x2f5f: 0x000c, 0x2f62: 0x000c, 0x2f63: 0x000c,\n\t0x2f64: 0x000c, 0x2f65: 0x000c, 0x2f67: 0x000c, 0x2f68: 0x000c, 0x2f69: 0x000c,\n\t0x2f6a: 0x000c, 0x2f6b: 0x000c,\n\t// Block 0xbe, offset 0x2f80\n\t0x2faf: 0x000c,\n\t0x2fb0: 0x000c, 0x2fb1: 0x000c, 0x2fb2: 0x000c, 0x2fb3: 0x000c, 0x2fb4: 0x000c, 0x2fb5: 0x000c,\n\t0x2fb6: 0x000c, 0x2fb7: 0x000c, 0x2fb9: 0x000c, 0x2fba: 0x000c,\n\t// Block 0xbf, offset 0x2fc0\n\t0x2ffb: 0x000c,\n\t0x2ffc: 0x000c, 0x2ffe: 0x000c,\n\t// Block 0xc0, offset 0x3000\n\t0x3003: 0x000c,\n\t// Block 0xc1, offset 0x3040\n\t0x3054: 0x000c, 0x3055: 0x000c, 0x3056: 0x000c, 0x3057: 0x000c,\n\t0x305a: 0x000c, 0x305b: 0x000c,\n\t0x3060: 0x000c,\n\t// Block 0xc2, offset 0x3080\n\t0x3081: 0x000c, 0x3082: 0x000c, 0x3083: 0x000c, 0x3084: 0x000c, 0x3085: 0x000c,\n\t0x3086: 0x000c, 0x3089: 0x000c, 0x308a: 0x000c,\n\t0x30b3: 0x000c, 0x30b4: 0x000c, 0x30b5: 0x000c,\n\t0x30b6: 0x000c, 0x30b7: 0x000c, 0x30b8: 0x000c, 0x30bb: 0x000c,\n\t0x30bc: 0x000c, 0x30bd: 0x000c, 0x30be: 0x000c,\n\t// Block 0xc3, offset 0x30c0\n\t0x30c7: 0x000c,\n\t0x30d1: 0x000c,\n\t0x30d2: 0x000c, 0x30d3: 0x000c, 0x30d4: 0x000c, 0x30d5: 0x000c, 0x30d6: 0x000c,\n\t0x30d9: 0x000c, 0x30da: 0x000c, 0x30db: 0x000c,\n\t// Block 0xc4, offset 0x3100\n\t0x310a: 0x000c, 0x310b: 0x000c,\n\t0x310c: 0x000c, 0x310d: 0x000c, 0x310e: 0x000c, 0x310f: 0x000c, 0x3110: 0x000c, 0x3111: 0x000c,\n\t0x3112: 0x000c, 0x3113: 0x000c, 0x3114: 0x000c, 0x3115: 0x000c, 0x3116: 0x000c,\n\t0x3118: 0x000c, 0x3119: 0x000c,\n\t// Block 0xc5, offset 0x3140\n\t0x3170: 0x000c, 0x3171: 0x000c, 0x3172: 0x000c, 0x3173: 0x000c, 0x3174: 0x000c, 0x3175: 0x000c,\n\t0x3176: 0x000c, 0x3178: 0x000c, 0x3179: 0x000c, 0x317a: 0x000c, 0x317b: 0x000c,\n\t0x317c: 0x000c, 0x317d: 0x000c,\n\t// Block 0xc6, offset 0x3180\n\t0x3192: 0x000c, 0x3193: 0x000c, 0x3194: 0x000c, 0x3195: 0x000c, 0x3196: 0x000c, 0x3197: 0x000c,\n\t0x3198: 0x000c, 0x3199: 0x000c, 0x319a: 0x000c, 0x319b: 0x000c, 0x319c: 0x000c, 0x319d: 0x000c,\n\t0x319e: 0x000c, 0x319f: 0x000c, 0x31a0: 0x000c, 0x31a1: 0x000c, 0x31a2: 0x000c, 0x31a3: 0x000c,\n\t0x31a4: 0x000c, 0x31a5: 0x000c, 0x31a6: 0x000c, 0x31a7: 0x000c,\n\t0x31aa: 0x000c, 0x31ab: 0x000c, 0x31ac: 0x000c, 0x31ad: 0x000c, 0x31ae: 0x000c, 0x31af: 0x000c,\n\t0x31b0: 0x000c, 0x31b2: 0x000c, 0x31b3: 0x000c, 0x31b5: 0x000c,\n\t0x31b6: 0x000c,\n\t// Block 0xc7, offset 0x31c0\n\t0x31f1: 0x000c, 0x31f2: 0x000c, 0x31f3: 0x000c, 0x31f4: 0x000c, 0x31f5: 0x000c,\n\t0x31f6: 0x000c, 0x31fa: 0x000c,\n\t0x31fc: 0x000c, 0x31fd: 0x000c, 0x31ff: 0x000c,\n\t// Block 0xc8, offset 0x3200\n\t0x3200: 0x000c, 0x3201: 0x000c, 0x3202: 0x000c, 0x3203: 0x000c, 0x3204: 0x000c, 0x3205: 0x000c,\n\t0x3207: 0x000c,\n\t// Block 0xc9, offset 0x3240\n\t0x3250: 0x000c, 0x3251: 0x000c,\n\t0x3255: 0x000c, 0x3257: 0x000c,\n\t// Block 0xca, offset 0x3280\n\t0x32b3: 0x000c, 0x32b4: 0x000c,\n\t// Block 0xcb, offset 0x32c0\n\t0x32c0: 0x000c, 0x32c1: 0x000c,\n\t0x32f6: 0x000c, 0x32f7: 0x000c, 0x32f8: 0x000c, 0x32f9: 0x000c, 0x32fa: 0x000c,\n\t// Block 0xcc, offset 0x3300\n\t0x3300: 0x000c, 0x3302: 0x000c,\n\t// Block 0xcd, offset 0x3340\n\t0x3355: 0x000a, 0x3356: 0x000a, 0x3357: 0x000a,\n\t0x3358: 0x000a, 0x3359: 0x000a, 0x335a: 0x000a, 0x335b: 0x000a, 0x335c: 0x000a, 0x335d: 0x0004,\n\t0x335e: 0x0004, 0x335f: 0x0004, 0x3360: 0x0004, 0x3361: 0x000a, 0x3362: 0x000a, 0x3363: 0x000a,\n\t0x3364: 0x000a, 0x3365: 0x000a, 0x3366: 0x000a, 0x3367: 0x000a, 0x3368: 0x000a, 0x3369: 0x000a,\n\t0x336a: 0x000a, 0x336b: 0x000a, 0x336c: 0x000a, 0x336d: 0x000a, 0x336e: 0x000a, 0x336f: 0x000a,\n\t0x3370: 0x000a, 0x3371: 0x000a,\n\t// Block 0xce, offset 0x3380\n\t0x3380: 0x000c,\n\t0x3387: 0x000c, 0x3388: 0x000c, 0x3389: 0x000c, 0x338a: 0x000c, 0x338b: 0x000c,\n\t0x338c: 0x000c, 0x338d: 0x000c, 0x338e: 0x000c, 0x338f: 0x000c, 0x3390: 0x000c, 0x3391: 0x000c,\n\t0x3392: 0x000c, 0x3393: 0x000c, 0x3394: 0x000c, 0x3395: 0x000c,\n\t// Block 0xcf, offset 0x33c0\n\t0x33f0: 0x000c, 0x33f1: 0x000c, 0x33f2: 0x000c, 0x33f3: 0x000c, 0x33f4: 0x000c,\n\t// Block 0xd0, offset 0x3400\n\t0x3430: 0x000c, 0x3431: 0x000c, 0x3432: 0x000c, 0x3433: 0x000c, 0x3434: 0x000c, 0x3435: 0x000c,\n\t0x3436: 0x000c,\n\t// Block 0xd1, offset 0x3440\n\t0x344f: 0x000c,\n\t// Block 0xd2, offset 0x3480\n\t0x348f: 0x000c, 0x3490: 0x000c, 0x3491: 0x000c,\n\t0x3492: 0x000c,\n\t// Block 0xd3, offset 0x34c0\n\t0x34e2: 0x000a,\n\t0x34e4: 0x000c,\n\t// Block 0xd4, offset 0x3500\n\t0x351d: 0x000c,\n\t0x351e: 0x000c, 0x3520: 0x000b, 0x3521: 0x000b, 0x3522: 0x000b, 0x3523: 0x000b,\n\t// Block 0xd5, offset 0x3540\n\t0x3540: 0x000c, 0x3541: 0x000c, 0x3542: 0x000c, 0x3543: 0x000c, 0x3544: 0x000c, 0x3545: 0x000c,\n\t0x3546: 0x000c, 0x3547: 0x000c, 0x3548: 0x000c, 0x3549: 0x000c, 0x354a: 0x000c, 0x354b: 0x000c,\n\t0x354c: 0x000c, 0x354d: 0x000c, 0x354e: 0x000c, 0x354f: 0x000c, 0x3550: 0x000c, 0x3551: 0x000c,\n\t0x3552: 0x000c, 0x3553: 0x000c, 0x3554: 0x000c, 0x3555: 0x000c, 0x3556: 0x000c, 0x3557: 0x000c,\n\t0x3558: 0x000c, 0x3559: 0x000c, 0x355a: 0x000c, 0x355b: 0x000c, 0x355c: 0x000c, 0x355d: 0x000c,\n\t0x355e: 0x000c, 0x355f: 0x000c, 0x3560: 0x000c, 0x3561: 0x000c, 0x3562: 0x000c, 0x3563: 0x000c,\n\t0x3564: 0x000c, 0x3565: 0x000c, 0x3566: 0x000c, 0x3567: 0x000c, 0x3568: 0x000c, 0x3569: 0x000c,\n\t0x356a: 0x000c, 0x356b: 0x000c, 0x356c: 0x000c, 0x356d: 0x000c,\n\t0x3570: 0x000c, 0x3571: 0x000c, 0x3572: 0x000c, 0x3573: 0x000c, 0x3574: 0x000c, 0x3575: 0x000c,\n\t0x3576: 0x000c, 0x3577: 0x000c, 0x3578: 0x000c, 0x3579: 0x000c, 0x357a: 0x000c, 0x357b: 0x000c,\n\t0x357c: 0x000c, 0x357d: 0x000c, 0x357e: 0x000c, 0x357f: 0x000c,\n\t// Block 0xd6, offset 0x3580\n\t0x3580: 0x000c, 0x3581: 0x000c, 0x3582: 0x000c, 0x3583: 0x000c, 0x3584: 0x000c, 0x3585: 0x000c,\n\t0x3586: 0x000c,\n\t// Block 0xd7, offset 0x35c0\n\t0x35e7: 0x000c, 0x35e8: 0x000c, 0x35e9: 0x000c,\n\t0x35f3: 0x000b, 0x35f4: 0x000b, 0x35f5: 0x000b,\n\t0x35f6: 0x000b, 0x35f7: 0x000b, 0x35f8: 0x000b, 0x35f9: 0x000b, 0x35fa: 0x000b, 0x35fb: 0x000c,\n\t0x35fc: 0x000c, 0x35fd: 0x000c, 0x35fe: 0x000c, 0x35ff: 0x000c,\n\t// Block 0xd8, offset 0x3600\n\t0x3600: 0x000c, 0x3601: 0x000c, 0x3602: 0x000c, 0x3605: 0x000c,\n\t0x3606: 0x000c, 0x3607: 0x000c, 0x3608: 0x000c, 0x3609: 0x000c, 0x360a: 0x000c, 0x360b: 0x000c,\n\t0x362a: 0x000c, 0x362b: 0x000c, 0x362c: 0x000c, 0x362d: 0x000c,\n\t// Block 0xd9, offset 0x3640\n\t0x3669: 0x000a,\n\t0x366a: 0x000a,\n\t// Block 0xda, offset 0x3680\n\t0x3680: 0x000a, 0x3681: 0x000a, 0x3682: 0x000c, 0x3683: 0x000c, 0x3684: 0x000c, 0x3685: 0x000a,\n\t// Block 0xdb, offset 0x36c0\n\t0x36c0: 0x000a, 0x36c1: 0x000a, 0x36c2: 0x000a, 0x36c3: 0x000a, 0x36c4: 0x000a, 0x36c5: 0x000a,\n\t0x36c6: 0x000a, 0x36c7: 0x000a, 0x36c8: 0x000a, 0x36c9: 0x000a, 0x36ca: 0x000a, 0x36cb: 0x000a,\n\t0x36cc: 0x000a, 0x36cd: 0x000a, 0x36ce: 0x000a, 0x36cf: 0x000a, 0x36d0: 0x000a, 0x36d1: 0x000a,\n\t0x36d2: 0x000a, 0x36d3: 0x000a, 0x36d4: 0x000a, 0x36d5: 0x000a, 0x36d6: 0x000a,\n\t// Block 0xdc, offset 0x3700\n\t0x371b: 0x000a,\n\t// Block 0xdd, offset 0x3740\n\t0x3755: 0x000a,\n\t// Block 0xde, offset 0x3780\n\t0x378f: 0x000a,\n\t// Block 0xdf, offset 0x37c0\n\t0x37c9: 0x000a,\n\t// Block 0xe0, offset 0x3800\n\t0x3803: 0x000a,\n\t0x380e: 0x0002, 0x380f: 0x0002, 0x3810: 0x0002, 0x3811: 0x0002,\n\t0x3812: 0x0002, 0x3813: 0x0002, 0x3814: 0x0002, 0x3815: 0x0002, 0x3816: 0x0002, 0x3817: 0x0002,\n\t0x3818: 0x0002, 0x3819: 0x0002, 0x381a: 0x0002, 0x381b: 0x0002, 0x381c: 0x0002, 0x381d: 0x0002,\n\t0x381e: 0x0002, 0x381f: 0x0002, 0x3820: 0x0002, 0x3821: 0x0002, 0x3822: 0x0002, 0x3823: 0x0002,\n\t0x3824: 0x0002, 0x3825: 0x0002, 0x3826: 0x0002, 0x3827: 0x0002, 0x3828: 0x0002, 0x3829: 0x0002,\n\t0x382a: 0x0002, 0x382b: 0x0002, 0x382c: 0x0002, 0x382d: 0x0002, 0x382e: 0x0002, 0x382f: 0x0002,\n\t0x3830: 0x0002, 0x3831: 0x0002, 0x3832: 0x0002, 0x3833: 0x0002, 0x3834: 0x0002, 0x3835: 0x0002,\n\t0x3836: 0x0002, 0x3837: 0x0002, 0x3838: 0x0002, 0x3839: 0x0002, 0x383a: 0x0002, 0x383b: 0x0002,\n\t0x383c: 0x0002, 0x383d: 0x0002, 0x383e: 0x0002, 0x383f: 0x0002,\n\t// Block 0xe1, offset 0x3840\n\t0x3840: 0x000c, 0x3841: 0x000c, 0x3842: 0x000c, 0x3843: 0x000c, 0x3844: 0x000c, 0x3845: 0x000c,\n\t0x3846: 0x000c, 0x3847: 0x000c, 0x3848: 0x000c, 0x3849: 0x000c, 0x384a: 0x000c, 0x384b: 0x000c,\n\t0x384c: 0x000c, 0x384d: 0x000c, 0x384e: 0x000c, 0x384f: 0x000c, 0x3850: 0x000c, 0x3851: 0x000c,\n\t0x3852: 0x000c, 0x3853: 0x000c, 0x3854: 0x000c, 0x3855: 0x000c, 0x3856: 0x000c, 0x3857: 0x000c,\n\t0x3858: 0x000c, 0x3859: 0x000c, 0x385a: 0x000c, 0x385b: 0x000c, 0x385c: 0x000c, 0x385d: 0x000c,\n\t0x385e: 0x000c, 0x385f: 0x000c, 0x3860: 0x000c, 0x3861: 0x000c, 0x3862: 0x000c, 0x3863: 0x000c,\n\t0x3864: 0x000c, 0x3865: 0x000c, 0x3866: 0x000c, 0x3867: 0x000c, 0x3868: 0x000c, 0x3869: 0x000c,\n\t0x386a: 0x000c, 0x386b: 0x000c, 0x386c: 0x000c, 0x386d: 0x000c, 0x386e: 0x000c, 0x386f: 0x000c,\n\t0x3870: 0x000c, 0x3871: 0x000c, 0x3872: 0x000c, 0x3873: 0x000c, 0x3874: 0x000c, 0x3875: 0x000c,\n\t0x3876: 0x000c, 0x387b: 0x000c,\n\t0x387c: 0x000c, 0x387d: 0x000c, 0x387e: 0x000c, 0x387f: 0x000c,\n\t// Block 0xe2, offset 0x3880\n\t0x3880: 0x000c, 0x3881: 0x000c, 0x3882: 0x000c, 0x3883: 0x000c, 0x3884: 0x000c, 0x3885: 0x000c,\n\t0x3886: 0x000c, 0x3887: 0x000c, 0x3888: 0x000c, 0x3889: 0x000c, 0x388a: 0x000c, 0x388b: 0x000c,\n\t0x388c: 0x000c, 0x388d: 0x000c, 0x388e: 0x000c, 0x388f: 0x000c, 0x3890: 0x000c, 0x3891: 0x000c,\n\t0x3892: 0x000c, 0x3893: 0x000c, 0x3894: 0x000c, 0x3895: 0x000c, 0x3896: 0x000c, 0x3897: 0x000c,\n\t0x3898: 0x000c, 0x3899: 0x000c, 0x389a: 0x000c, 0x389b: 0x000c, 0x389c: 0x000c, 0x389d: 0x000c,\n\t0x389e: 0x000c, 0x389f: 0x000c, 0x38a0: 0x000c, 0x38a1: 0x000c, 0x38a2: 0x000c, 0x38a3: 0x000c,\n\t0x38a4: 0x000c, 0x38a5: 0x000c, 0x38a6: 0x000c, 0x38a7: 0x000c, 0x38a8: 0x000c, 0x38a9: 0x000c,\n\t0x38aa: 0x000c, 0x38ab: 0x000c, 0x38ac: 0x000c,\n\t0x38b5: 0x000c,\n\t// Block 0xe3, offset 0x38c0\n\t0x38c4: 0x000c,\n\t0x38db: 0x000c, 0x38dc: 0x000c, 0x38dd: 0x000c,\n\t0x38de: 0x000c, 0x38df: 0x000c, 0x38e1: 0x000c, 0x38e2: 0x000c, 0x38e3: 0x000c,\n\t0x38e4: 0x000c, 0x38e5: 0x000c, 0x38e6: 0x000c, 0x38e7: 0x000c, 0x38e8: 0x000c, 0x38e9: 0x000c,\n\t0x38ea: 0x000c, 0x38eb: 0x000c, 0x38ec: 0x000c, 0x38ed: 0x000c, 0x38ee: 0x000c, 0x38ef: 0x000c,\n\t// Block 0xe4, offset 0x3900\n\t0x3900: 0x000c, 0x3901: 0x000c, 0x3902: 0x000c, 0x3903: 0x000c, 0x3904: 0x000c, 0x3905: 0x000c,\n\t0x3906: 0x000c, 0x3908: 0x000c, 0x3909: 0x000c, 0x390a: 0x000c, 0x390b: 0x000c,\n\t0x390c: 0x000c, 0x390d: 0x000c, 0x390e: 0x000c, 0x390f: 0x000c, 0x3910: 0x000c, 0x3911: 0x000c,\n\t0x3912: 0x000c, 0x3913: 0x000c, 0x3914: 0x000c, 0x3915: 0x000c, 0x3916: 0x000c, 0x3917: 0x000c,\n\t0x3918: 0x000c, 0x391b: 0x000c, 0x391c: 0x000c, 0x391d: 0x000c,\n\t0x391e: 0x000c, 0x391f: 0x000c, 0x3920: 0x000c, 0x3921: 0x000c, 0x3923: 0x000c,\n\t0x3924: 0x000c, 0x3926: 0x000c, 0x3927: 0x000c, 0x3928: 0x000c, 0x3929: 0x000c,\n\t0x392a: 0x000c,\n\t// Block 0xe5, offset 0x3940\n\t0x396e: 0x000c,\n\t// Block 0xe6, offset 0x3980\n\t0x39ac: 0x000c, 0x39ad: 0x000c, 0x39ae: 0x000c, 0x39af: 0x000c,\n\t0x39bf: 0x0004,\n\t// Block 0xe7, offset 0x39c0\n\t0x39ec: 0x000c, 0x39ed: 0x000c, 0x39ee: 0x000c, 0x39ef: 0x000c,\n\t// Block 0xe8, offset 0x3a00\n\t0x3a00: 0x0001, 0x3a01: 0x0001, 0x3a02: 0x0001, 0x3a03: 0x0001, 0x3a04: 0x0001, 0x3a05: 0x0001,\n\t0x3a06: 0x0001, 0x3a07: 0x0001, 0x3a08: 0x0001, 0x3a09: 0x0001, 0x3a0a: 0x0001, 0x3a0b: 0x0001,\n\t0x3a0c: 0x0001, 0x3a0d: 0x0001, 0x3a0e: 0x0001, 0x3a0f: 0x0001, 0x3a10: 0x000c, 0x3a11: 0x000c,\n\t0x3a12: 0x000c, 0x3a13: 0x000c, 0x3a14: 0x000c, 0x3a15: 0x000c, 0x3a16: 0x000c, 0x3a17: 0x0001,\n\t0x3a18: 0x0001, 0x3a19: 0x0001, 0x3a1a: 0x0001, 0x3a1b: 0x0001, 0x3a1c: 0x0001, 0x3a1d: 0x0001,\n\t0x3a1e: 0x0001, 0x3a1f: 0x0001, 0x3a20: 0x0001, 0x3a21: 0x0001, 0x3a22: 0x0001, 0x3a23: 0x0001,\n\t0x3a24: 0x0001, 0x3a25: 0x0001, 0x3a26: 0x0001, 0x3a27: 0x0001, 0x3a28: 0x0001, 0x3a29: 0x0001,\n\t0x3a2a: 0x0001, 0x3a2b: 0x0001, 0x3a2c: 0x0001, 0x3a2d: 0x0001, 0x3a2e: 0x0001, 0x3a2f: 0x0001,\n\t0x3a30: 0x0001, 0x3a31: 0x0001, 0x3a32: 0x0001, 0x3a33: 0x0001, 0x3a34: 0x0001, 0x3a35: 0x0001,\n\t0x3a36: 0x0001, 0x3a37: 0x0001, 0x3a38: 0x0001, 0x3a39: 0x0001, 0x3a3a: 0x0001, 0x3a3b: 0x0001,\n\t0x3a3c: 0x0001, 0x3a3d: 0x0001, 0x3a3e: 0x0001, 0x3a3f: 0x0001,\n\t// Block 0xe9, offset 0x3a40\n\t0x3a40: 0x0001, 0x3a41: 0x0001, 0x3a42: 0x0001, 0x3a43: 0x0001, 0x3a44: 0x000c, 0x3a45: 0x000c,\n\t0x3a46: 0x000c, 0x3a47: 0x000c, 0x3a48: 0x000c, 0x3a49: 0x000c, 0x3a4a: 0x000c, 0x3a4b: 0x0001,\n\t0x3a4c: 0x0001, 0x3a4d: 0x0001, 0x3a4e: 0x0001, 0x3a4f: 0x0001, 0x3a50: 0x0001, 0x3a51: 0x0001,\n\t0x3a52: 0x0001, 0x3a53: 0x0001, 0x3a54: 0x0001, 0x3a55: 0x0001, 0x3a56: 0x0001, 0x3a57: 0x0001,\n\t0x3a58: 0x0001, 0x3a59: 0x0001, 0x3a5a: 0x0001, 0x3a5b: 0x0001, 0x3a5c: 0x0001, 0x3a5d: 0x0001,\n\t0x3a5e: 0x0001, 0x3a5f: 0x0001, 0x3a60: 0x0001, 0x3a61: 0x0001, 0x3a62: 0x0001, 0x3a63: 0x0001,\n\t0x3a64: 0x0001, 0x3a65: 0x0001, 0x3a66: 0x0001, 0x3a67: 0x0001, 0x3a68: 0x0001, 0x3a69: 0x0001,\n\t0x3a6a: 0x0001, 0x3a6b: 0x0001, 0x3a6c: 0x0001, 0x3a6d: 0x0001, 0x3a6e: 0x0001, 0x3a6f: 0x0001,\n\t0x3a70: 0x0001, 0x3a71: 0x0001, 0x3a72: 0x0001, 0x3a73: 0x0001, 0x3a74: 0x0001, 0x3a75: 0x0001,\n\t0x3a76: 0x0001, 0x3a77: 0x0001, 0x3a78: 0x0001, 0x3a79: 0x0001, 0x3a7a: 0x0001, 0x3a7b: 0x0001,\n\t0x3a7c: 0x0001, 0x3a7d: 0x0001, 0x3a7e: 0x0001, 0x3a7f: 0x0001,\n\t// Block 0xea, offset 0x3a80\n\t0x3a80: 0x0001, 0x3a81: 0x0001, 0x3a82: 0x0001, 0x3a83: 0x0001, 0x3a84: 0x0001, 0x3a85: 0x0001,\n\t0x3a86: 0x0001, 0x3a87: 0x0001, 0x3a88: 0x0001, 0x3a89: 0x0001, 0x3a8a: 0x0001, 0x3a8b: 0x0001,\n\t0x3a8c: 0x0001, 0x3a8d: 0x0001, 0x3a8e: 0x0001, 0x3a8f: 0x0001, 0x3a90: 0x0001, 0x3a91: 0x0001,\n\t0x3a92: 0x0001, 0x3a93: 0x0001, 0x3a94: 0x0001, 0x3a95: 0x0001, 0x3a96: 0x0001, 0x3a97: 0x0001,\n\t0x3a98: 0x0001, 0x3a99: 0x0001, 0x3a9a: 0x0001, 0x3a9b: 0x0001, 0x3a9c: 0x0001, 0x3a9d: 0x0001,\n\t0x3a9e: 0x0001, 0x3a9f: 0x0001, 0x3aa0: 0x0001, 0x3aa1: 0x0001, 0x3aa2: 0x0001, 0x3aa3: 0x0001,\n\t0x3aa4: 0x0001, 0x3aa5: 0x0001, 0x3aa6: 0x0001, 0x3aa7: 0x0001, 0x3aa8: 0x0001, 0x3aa9: 0x0001,\n\t0x3aaa: 0x0001, 0x3aab: 0x0001, 0x3aac: 0x0001, 0x3aad: 0x0001, 0x3aae: 0x0001, 0x3aaf: 0x0001,\n\t0x3ab0: 0x0001, 0x3ab1: 0x000d, 0x3ab2: 0x000d, 0x3ab3: 0x000d, 0x3ab4: 0x000d, 0x3ab5: 0x000d,\n\t0x3ab6: 0x000d, 0x3ab7: 0x000d, 0x3ab8: 0x000d, 0x3ab9: 0x000d, 0x3aba: 0x000d, 0x3abb: 0x000d,\n\t0x3abc: 0x000d, 0x3abd: 0x000d, 0x3abe: 0x000d, 0x3abf: 0x000d,\n\t// Block 0xeb, offset 0x3ac0\n\t0x3ac0: 0x000d, 0x3ac1: 0x000d, 0x3ac2: 0x000d, 0x3ac3: 0x000d, 0x3ac4: 0x000d, 0x3ac5: 0x000d,\n\t0x3ac6: 0x000d, 0x3ac7: 0x000d, 0x3ac8: 0x000d, 0x3ac9: 0x000d, 0x3aca: 0x000d, 0x3acb: 0x000d,\n\t0x3acc: 0x000d, 0x3acd: 0x000d, 0x3ace: 0x000d, 0x3acf: 0x000d, 0x3ad0: 0x000d, 0x3ad1: 0x000d,\n\t0x3ad2: 0x000d, 0x3ad3: 0x000d, 0x3ad4: 0x000d, 0x3ad5: 0x000d, 0x3ad6: 0x000d, 0x3ad7: 0x000d,\n\t0x3ad8: 0x000d, 0x3ad9: 0x000d, 0x3ada: 0x000d, 0x3adb: 0x000d, 0x3adc: 0x000d, 0x3add: 0x000d,\n\t0x3ade: 0x000d, 0x3adf: 0x000d, 0x3ae0: 0x000d, 0x3ae1: 0x000d, 0x3ae2: 0x000d, 0x3ae3: 0x000d,\n\t0x3ae4: 0x000d, 0x3ae5: 0x000d, 0x3ae6: 0x000d, 0x3ae7: 0x000d, 0x3ae8: 0x000d, 0x3ae9: 0x000d,\n\t0x3aea: 0x000d, 0x3aeb: 0x000d, 0x3aec: 0x000d, 0x3aed: 0x000d, 0x3aee: 0x000d, 0x3aef: 0x000d,\n\t0x3af0: 0x000d, 0x3af1: 0x000d, 0x3af2: 0x000d, 0x3af3: 0x000d, 0x3af4: 0x000d, 0x3af5: 0x0001,\n\t0x3af6: 0x0001, 0x3af7: 0x0001, 0x3af8: 0x0001, 0x3af9: 0x0001, 0x3afa: 0x0001, 0x3afb: 0x0001,\n\t0x3afc: 0x0001, 0x3afd: 0x0001, 0x3afe: 0x0001, 0x3aff: 0x0001,\n\t// Block 0xec, offset 0x3b00\n\t0x3b00: 0x0001, 0x3b01: 0x000d, 0x3b02: 0x000d, 0x3b03: 0x000d, 0x3b04: 0x000d, 0x3b05: 0x000d,\n\t0x3b06: 0x000d, 0x3b07: 0x000d, 0x3b08: 0x000d, 0x3b09: 0x000d, 0x3b0a: 0x000d, 0x3b0b: 0x000d,\n\t0x3b0c: 0x000d, 0x3b0d: 0x000d, 0x3b0e: 0x000d, 0x3b0f: 0x000d, 0x3b10: 0x000d, 0x3b11: 0x000d,\n\t0x3b12: 0x000d, 0x3b13: 0x000d, 0x3b14: 0x000d, 0x3b15: 0x000d, 0x3b16: 0x000d, 0x3b17: 0x000d,\n\t0x3b18: 0x000d, 0x3b19: 0x000d, 0x3b1a: 0x000d, 0x3b1b: 0x000d, 0x3b1c: 0x000d, 0x3b1d: 0x000d,\n\t0x3b1e: 0x000d, 0x3b1f: 0x000d, 0x3b20: 0x000d, 0x3b21: 0x000d, 0x3b22: 0x000d, 0x3b23: 0x000d,\n\t0x3b24: 0x000d, 0x3b25: 0x000d, 0x3b26: 0x000d, 0x3b27: 0x000d, 0x3b28: 0x000d, 0x3b29: 0x000d,\n\t0x3b2a: 0x000d, 0x3b2b: 0x000d, 0x3b2c: 0x000d, 0x3b2d: 0x000d, 0x3b2e: 0x000d, 0x3b2f: 0x000d,\n\t0x3b30: 0x000d, 0x3b31: 0x000d, 0x3b32: 0x000d, 0x3b33: 0x000d, 0x3b34: 0x000d, 0x3b35: 0x000d,\n\t0x3b36: 0x000d, 0x3b37: 0x000d, 0x3b38: 0x000d, 0x3b39: 0x000d, 0x3b3a: 0x000d, 0x3b3b: 0x000d,\n\t0x3b3c: 0x000d, 0x3b3d: 0x000d, 0x3b3e: 0x0001, 0x3b3f: 0x0001,\n\t// Block 0xed, offset 0x3b40\n\t0x3b40: 0x000d, 0x3b41: 0x000d, 0x3b42: 0x000d, 0x3b43: 0x000d, 0x3b44: 0x000d, 0x3b45: 0x000d,\n\t0x3b46: 0x000d, 0x3b47: 0x000d, 0x3b48: 0x000d, 0x3b49: 0x000d, 0x3b4a: 0x000d, 0x3b4b: 0x000d,\n\t0x3b4c: 0x000d, 0x3b4d: 0x000d, 0x3b4e: 0x000d, 0x3b4f: 0x000d, 0x3b50: 0x000d, 0x3b51: 0x000d,\n\t0x3b52: 0x000d, 0x3b53: 0x000d, 0x3b54: 0x000d, 0x3b55: 0x000d, 0x3b56: 0x000d, 0x3b57: 0x000d,\n\t0x3b58: 0x000d, 0x3b59: 0x000d, 0x3b5a: 0x000d, 0x3b5b: 0x000d, 0x3b5c: 0x000d, 0x3b5d: 0x000d,\n\t0x3b5e: 0x000d, 0x3b5f: 0x000d, 0x3b60: 0x000d, 0x3b61: 0x000d, 0x3b62: 0x000d, 0x3b63: 0x000d,\n\t0x3b64: 0x000d, 0x3b65: 0x000d, 0x3b66: 0x000d, 0x3b67: 0x000d, 0x3b68: 0x000d, 0x3b69: 0x000d,\n\t0x3b6a: 0x000d, 0x3b6b: 0x000d, 0x3b6c: 0x000d, 0x3b6d: 0x000d, 0x3b6e: 0x000d, 0x3b6f: 0x000d,\n\t0x3b70: 0x000a, 0x3b71: 0x000a, 0x3b72: 0x000d, 0x3b73: 0x000d, 0x3b74: 0x000d, 0x3b75: 0x000d,\n\t0x3b76: 0x000d, 0x3b77: 0x000d, 0x3b78: 0x000d, 0x3b79: 0x000d, 0x3b7a: 0x000d, 0x3b7b: 0x000d,\n\t0x3b7c: 0x000d, 0x3b7d: 0x000d, 0x3b7e: 0x000d, 0x3b7f: 0x000d,\n\t// Block 0xee, offset 0x3b80\n\t0x3b80: 0x000a, 0x3b81: 0x000a, 0x3b82: 0x000a, 0x3b83: 0x000a, 0x3b84: 0x000a, 0x3b85: 0x000a,\n\t0x3b86: 0x000a, 0x3b87: 0x000a, 0x3b88: 0x000a, 0x3b89: 0x000a, 0x3b8a: 0x000a, 0x3b8b: 0x000a,\n\t0x3b8c: 0x000a, 0x3b8d: 0x000a, 0x3b8e: 0x000a, 0x3b8f: 0x000a, 0x3b90: 0x000a, 0x3b91: 0x000a,\n\t0x3b92: 0x000a, 0x3b93: 0x000a, 0x3b94: 0x000a, 0x3b95: 0x000a, 0x3b96: 0x000a, 0x3b97: 0x000a,\n\t0x3b98: 0x000a, 0x3b99: 0x000a, 0x3b9a: 0x000a, 0x3b9b: 0x000a, 0x3b9c: 0x000a, 0x3b9d: 0x000a,\n\t0x3b9e: 0x000a, 0x3b9f: 0x000a, 0x3ba0: 0x000a, 0x3ba1: 0x000a, 0x3ba2: 0x000a, 0x3ba3: 0x000a,\n\t0x3ba4: 0x000a, 0x3ba5: 0x000a, 0x3ba6: 0x000a, 0x3ba7: 0x000a, 0x3ba8: 0x000a, 0x3ba9: 0x000a,\n\t0x3baa: 0x000a, 0x3bab: 0x000a,\n\t0x3bb0: 0x000a, 0x3bb1: 0x000a, 0x3bb2: 0x000a, 0x3bb3: 0x000a, 0x3bb4: 0x000a, 0x3bb5: 0x000a,\n\t0x3bb6: 0x000a, 0x3bb7: 0x000a, 0x3bb8: 0x000a, 0x3bb9: 0x000a, 0x3bba: 0x000a, 0x3bbb: 0x000a,\n\t0x3bbc: 0x000a, 0x3bbd: 0x000a, 0x3bbe: 0x000a, 0x3bbf: 0x000a,\n\t// Block 0xef, offset 0x3bc0\n\t0x3bc0: 0x000a, 0x3bc1: 0x000a, 0x3bc2: 0x000a, 0x3bc3: 0x000a, 0x3bc4: 0x000a, 0x3bc5: 0x000a,\n\t0x3bc6: 0x000a, 0x3bc7: 0x000a, 0x3bc8: 0x000a, 0x3bc9: 0x000a, 0x3bca: 0x000a, 0x3bcb: 0x000a,\n\t0x3bcc: 0x000a, 0x3bcd: 0x000a, 0x3bce: 0x000a, 0x3bcf: 0x000a, 0x3bd0: 0x000a, 0x3bd1: 0x000a,\n\t0x3bd2: 0x000a, 0x3bd3: 0x000a,\n\t0x3be0: 0x000a, 0x3be1: 0x000a, 0x3be2: 0x000a, 0x3be3: 0x000a,\n\t0x3be4: 0x000a, 0x3be5: 0x000a, 0x3be6: 0x000a, 0x3be7: 0x000a, 0x3be8: 0x000a, 0x3be9: 0x000a,\n\t0x3bea: 0x000a, 0x3beb: 0x000a, 0x3bec: 0x000a, 0x3bed: 0x000a, 0x3bee: 0x000a,\n\t0x3bf1: 0x000a, 0x3bf2: 0x000a, 0x3bf3: 0x000a, 0x3bf4: 0x000a, 0x3bf5: 0x000a,\n\t0x3bf6: 0x000a, 0x3bf7: 0x000a, 0x3bf8: 0x000a, 0x3bf9: 0x000a, 0x3bfa: 0x000a, 0x3bfb: 0x000a,\n\t0x3bfc: 0x000a, 0x3bfd: 0x000a, 0x3bfe: 0x000a, 0x3bff: 0x000a,\n\t// Block 0xf0, offset 0x3c00\n\t0x3c01: 0x000a, 0x3c02: 0x000a, 0x3c03: 0x000a, 0x3c04: 0x000a, 0x3c05: 0x000a,\n\t0x3c06: 0x000a, 0x3c07: 0x000a, 0x3c08: 0x000a, 0x3c09: 0x000a, 0x3c0a: 0x000a, 0x3c0b: 0x000a,\n\t0x3c0c: 0x000a, 0x3c0d: 0x000a, 0x3c0e: 0x000a, 0x3c0f: 0x000a, 0x3c11: 0x000a,\n\t0x3c12: 0x000a, 0x3c13: 0x000a, 0x3c14: 0x000a, 0x3c15: 0x000a, 0x3c16: 0x000a, 0x3c17: 0x000a,\n\t0x3c18: 0x000a, 0x3c19: 0x000a, 0x3c1a: 0x000a, 0x3c1b: 0x000a, 0x3c1c: 0x000a, 0x3c1d: 0x000a,\n\t0x3c1e: 0x000a, 0x3c1f: 0x000a, 0x3c20: 0x000a, 0x3c21: 0x000a, 0x3c22: 0x000a, 0x3c23: 0x000a,\n\t0x3c24: 0x000a, 0x3c25: 0x000a, 0x3c26: 0x000a, 0x3c27: 0x000a, 0x3c28: 0x000a, 0x3c29: 0x000a,\n\t0x3c2a: 0x000a, 0x3c2b: 0x000a, 0x3c2c: 0x000a, 0x3c2d: 0x000a, 0x3c2e: 0x000a, 0x3c2f: 0x000a,\n\t0x3c30: 0x000a, 0x3c31: 0x000a, 0x3c32: 0x000a, 0x3c33: 0x000a, 0x3c34: 0x000a, 0x3c35: 0x000a,\n\t// Block 0xf1, offset 0x3c40\n\t0x3c40: 0x0002, 0x3c41: 0x0002, 0x3c42: 0x0002, 0x3c43: 0x0002, 0x3c44: 0x0002, 0x3c45: 0x0002,\n\t0x3c46: 0x0002, 0x3c47: 0x0002, 0x3c48: 0x0002, 0x3c49: 0x0002, 0x3c4a: 0x0002, 0x3c4b: 0x000a,\n\t0x3c4c: 0x000a, 0x3c4d: 0x000a, 0x3c4e: 0x000a, 0x3c4f: 0x000a,\n\t0x3c6f: 0x000a,\n\t// Block 0xf2, offset 0x3c80\n\t0x3caa: 0x000a, 0x3cab: 0x000a, 0x3cac: 0x000a, 0x3cad: 0x000a, 0x3cae: 0x000a, 0x3caf: 0x000a,\n\t// Block 0xf3, offset 0x3cc0\n\t0x3ced: 0x000a,\n\t// Block 0xf4, offset 0x3d00\n\t0x3d20: 0x000a, 0x3d21: 0x000a, 0x3d22: 0x000a, 0x3d23: 0x000a,\n\t0x3d24: 0x000a, 0x3d25: 0x000a,\n\t// Block 0xf5, offset 0x3d40\n\t0x3d40: 0x000a, 0x3d41: 0x000a, 0x3d42: 0x000a, 0x3d43: 0x000a, 0x3d44: 0x000a, 0x3d45: 0x000a,\n\t0x3d46: 0x000a, 0x3d47: 0x000a, 0x3d48: 0x000a, 0x3d49: 0x000a, 0x3d4a: 0x000a, 0x3d4b: 0x000a,\n\t0x3d4c: 0x000a, 0x3d4d: 0x000a, 0x3d4e: 0x000a, 0x3d4f: 0x000a, 0x3d50: 0x000a, 0x3d51: 0x000a,\n\t0x3d52: 0x000a, 0x3d53: 0x000a, 0x3d54: 0x000a, 0x3d55: 0x000a, 0x3d56: 0x000a, 0x3d57: 0x000a,\n\t0x3d5c: 0x000a, 0x3d5d: 0x000a,\n\t0x3d5e: 0x000a, 0x3d5f: 0x000a, 0x3d60: 0x000a, 0x3d61: 0x000a, 0x3d62: 0x000a, 0x3d63: 0x000a,\n\t0x3d64: 0x000a, 0x3d65: 0x000a, 0x3d66: 0x000a, 0x3d67: 0x000a, 0x3d68: 0x000a, 0x3d69: 0x000a,\n\t0x3d6a: 0x000a, 0x3d6b: 0x000a, 0x3d6c: 0x000a,\n\t0x3d70: 0x000a, 0x3d71: 0x000a, 0x3d72: 0x000a, 0x3d73: 0x000a, 0x3d74: 0x000a, 0x3d75: 0x000a,\n\t0x3d76: 0x000a, 0x3d77: 0x000a, 0x3d78: 0x000a, 0x3d79: 0x000a, 0x3d7a: 0x000a, 0x3d7b: 0x000a,\n\t0x3d7c: 0x000a,\n\t// Block 0xf6, offset 0x3d80\n\t0x3d80: 0x000a, 0x3d81: 0x000a, 0x3d82: 0x000a, 0x3d83: 0x000a, 0x3d84: 0x000a, 0x3d85: 0x000a,\n\t0x3d86: 0x000a, 0x3d87: 0x000a, 0x3d88: 0x000a, 0x3d89: 0x000a, 0x3d8a: 0x000a, 0x3d8b: 0x000a,\n\t0x3d8c: 0x000a, 0x3d8d: 0x000a, 0x3d8e: 0x000a, 0x3d8f: 0x000a, 0x3d90: 0x000a, 0x3d91: 0x000a,\n\t0x3d92: 0x000a, 0x3d93: 0x000a, 0x3d94: 0x000a, 0x3d95: 0x000a, 0x3d96: 0x000a, 0x3d97: 0x000a,\n\t0x3d98: 0x000a, 0x3d99: 0x000a, 0x3d9a: 0x000a, 0x3d9b: 0x000a, 0x3d9c: 0x000a, 0x3d9d: 0x000a,\n\t0x3d9e: 0x000a, 0x3d9f: 0x000a, 0x3da0: 0x000a, 0x3da1: 0x000a, 0x3da2: 0x000a, 0x3da3: 0x000a,\n\t0x3da4: 0x000a, 0x3da5: 0x000a, 0x3da6: 0x000a, 0x3da7: 0x000a, 0x3da8: 0x000a, 0x3da9: 0x000a,\n\t0x3daa: 0x000a, 0x3dab: 0x000a, 0x3dac: 0x000a, 0x3dad: 0x000a, 0x3dae: 0x000a, 0x3daf: 0x000a,\n\t0x3db0: 0x000a, 0x3db1: 0x000a, 0x3db2: 0x000a, 0x3db3: 0x000a, 0x3db4: 0x000a, 0x3db5: 0x000a,\n\t0x3db6: 0x000a, 0x3dbb: 0x000a,\n\t0x3dbc: 0x000a, 0x3dbd: 0x000a, 0x3dbe: 0x000a, 0x3dbf: 0x000a,\n\t// Block 0xf7, offset 0x3dc0\n\t0x3dc0: 0x000a, 0x3dc1: 0x000a, 0x3dc2: 0x000a, 0x3dc3: 0x000a, 0x3dc4: 0x000a, 0x3dc5: 0x000a,\n\t0x3dc6: 0x000a, 0x3dc7: 0x000a, 0x3dc8: 0x000a, 0x3dc9: 0x000a, 0x3dca: 0x000a, 0x3dcb: 0x000a,\n\t0x3dcc: 0x000a, 0x3dcd: 0x000a, 0x3dce: 0x000a, 0x3dcf: 0x000a, 0x3dd0: 0x000a, 0x3dd1: 0x000a,\n\t0x3dd2: 0x000a, 0x3dd3: 0x000a, 0x3dd4: 0x000a, 0x3dd5: 0x000a, 0x3dd6: 0x000a, 0x3dd7: 0x000a,\n\t0x3dd8: 0x000a, 0x3dd9: 0x000a,\n\t0x3de0: 0x000a, 0x3de1: 0x000a, 0x3de2: 0x000a, 0x3de3: 0x000a,\n\t0x3de4: 0x000a, 0x3de5: 0x000a, 0x3de6: 0x000a, 0x3de7: 0x000a, 0x3de8: 0x000a, 0x3de9: 0x000a,\n\t0x3dea: 0x000a, 0x3deb: 0x000a,\n\t0x3df0: 0x000a,\n\t// Block 0xf8, offset 0x3e00\n\t0x3e00: 0x000a, 0x3e01: 0x000a, 0x3e02: 0x000a, 0x3e03: 0x000a, 0x3e04: 0x000a, 0x3e05: 0x000a,\n\t0x3e06: 0x000a, 0x3e07: 0x000a, 0x3e08: 0x000a, 0x3e09: 0x000a, 0x3e0a: 0x000a, 0x3e0b: 0x000a,\n\t0x3e10: 0x000a, 0x3e11: 0x000a,\n\t0x3e12: 0x000a, 0x3e13: 0x000a, 0x3e14: 0x000a, 0x3e15: 0x000a, 0x3e16: 0x000a, 0x3e17: 0x000a,\n\t0x3e18: 0x000a, 0x3e19: 0x000a, 0x3e1a: 0x000a, 0x3e1b: 0x000a, 0x3e1c: 0x000a, 0x3e1d: 0x000a,\n\t0x3e1e: 0x000a, 0x3e1f: 0x000a, 0x3e20: 0x000a, 0x3e21: 0x000a, 0x3e22: 0x000a, 0x3e23: 0x000a,\n\t0x3e24: 0x000a, 0x3e25: 0x000a, 0x3e26: 0x000a, 0x3e27: 0x000a, 0x3e28: 0x000a, 0x3e29: 0x000a,\n\t0x3e2a: 0x000a, 0x3e2b: 0x000a, 0x3e2c: 0x000a, 0x3e2d: 0x000a, 0x3e2e: 0x000a, 0x3e2f: 0x000a,\n\t0x3e30: 0x000a, 0x3e31: 0x000a, 0x3e32: 0x000a, 0x3e33: 0x000a, 0x3e34: 0x000a, 0x3e35: 0x000a,\n\t0x3e36: 0x000a, 0x3e37: 0x000a, 0x3e38: 0x000a, 0x3e39: 0x000a, 0x3e3a: 0x000a, 0x3e3b: 0x000a,\n\t0x3e3c: 0x000a, 0x3e3d: 0x000a, 0x3e3e: 0x000a, 0x3e3f: 0x000a,\n\t// Block 0xf9, offset 0x3e40\n\t0x3e40: 0x000a, 0x3e41: 0x000a, 0x3e42: 0x000a, 0x3e43: 0x000a, 0x3e44: 0x000a, 0x3e45: 0x000a,\n\t0x3e46: 0x000a, 0x3e47: 0x000a,\n\t0x3e50: 0x000a, 0x3e51: 0x000a,\n\t0x3e52: 0x000a, 0x3e53: 0x000a, 0x3e54: 0x000a, 0x3e55: 0x000a, 0x3e56: 0x000a, 0x3e57: 0x000a,\n\t0x3e58: 0x000a, 0x3e59: 0x000a,\n\t0x3e60: 0x000a, 0x3e61: 0x000a, 0x3e62: 0x000a, 0x3e63: 0x000a,\n\t0x3e64: 0x000a, 0x3e65: 0x000a, 0x3e66: 0x000a, 0x3e67: 0x000a, 0x3e68: 0x000a, 0x3e69: 0x000a,\n\t0x3e6a: 0x000a, 0x3e6b: 0x000a, 0x3e6c: 0x000a, 0x3e6d: 0x000a, 0x3e6e: 0x000a, 0x3e6f: 0x000a,\n\t0x3e70: 0x000a, 0x3e71: 0x000a, 0x3e72: 0x000a, 0x3e73: 0x000a, 0x3e74: 0x000a, 0x3e75: 0x000a,\n\t0x3e76: 0x000a, 0x3e77: 0x000a, 0x3e78: 0x000a, 0x3e79: 0x000a, 0x3e7a: 0x000a, 0x3e7b: 0x000a,\n\t0x3e7c: 0x000a, 0x3e7d: 0x000a, 0x3e7e: 0x000a, 0x3e7f: 0x000a,\n\t// Block 0xfa, offset 0x3e80\n\t0x3e80: 0x000a, 0x3e81: 0x000a, 0x3e82: 0x000a, 0x3e83: 0x000a, 0x3e84: 0x000a, 0x3e85: 0x000a,\n\t0x3e86: 0x000a, 0x3e87: 0x000a,\n\t0x3e90: 0x000a, 0x3e91: 0x000a,\n\t0x3e92: 0x000a, 0x3e93: 0x000a, 0x3e94: 0x000a, 0x3e95: 0x000a, 0x3e96: 0x000a, 0x3e97: 0x000a,\n\t0x3e98: 0x000a, 0x3e99: 0x000a, 0x3e9a: 0x000a, 0x3e9b: 0x000a, 0x3e9c: 0x000a, 0x3e9d: 0x000a,\n\t0x3e9e: 0x000a, 0x3e9f: 0x000a, 0x3ea0: 0x000a, 0x3ea1: 0x000a, 0x3ea2: 0x000a, 0x3ea3: 0x000a,\n\t0x3ea4: 0x000a, 0x3ea5: 0x000a, 0x3ea6: 0x000a, 0x3ea7: 0x000a, 0x3ea8: 0x000a, 0x3ea9: 0x000a,\n\t0x3eaa: 0x000a, 0x3eab: 0x000a, 0x3eac: 0x000a, 0x3ead: 0x000a,\n\t0x3eb0: 0x000a, 0x3eb1: 0x000a,\n\t// Block 0xfb, offset 0x3ec0\n\t0x3ec0: 0x000a, 0x3ec1: 0x000a, 0x3ec2: 0x000a, 0x3ec3: 0x000a, 0x3ec4: 0x000a, 0x3ec5: 0x000a,\n\t0x3ec6: 0x000a, 0x3ec7: 0x000a, 0x3ec8: 0x000a, 0x3ec9: 0x000a, 0x3eca: 0x000a, 0x3ecb: 0x000a,\n\t0x3ecc: 0x000a, 0x3ecd: 0x000a, 0x3ece: 0x000a, 0x3ecf: 0x000a, 0x3ed0: 0x000a, 0x3ed1: 0x000a,\n\t0x3ed2: 0x000a, 0x3ed3: 0x000a,\n\t0x3ee0: 0x000a, 0x3ee1: 0x000a, 0x3ee2: 0x000a, 0x3ee3: 0x000a,\n\t0x3ee4: 0x000a, 0x3ee5: 0x000a, 0x3ee6: 0x000a, 0x3ee7: 0x000a, 0x3ee8: 0x000a, 0x3ee9: 0x000a,\n\t0x3eea: 0x000a, 0x3eeb: 0x000a, 0x3eec: 0x000a, 0x3eed: 0x000a,\n\t0x3ef0: 0x000a, 0x3ef1: 0x000a, 0x3ef2: 0x000a, 0x3ef3: 0x000a, 0x3ef4: 0x000a, 0x3ef5: 0x000a,\n\t0x3ef6: 0x000a, 0x3ef7: 0x000a, 0x3ef8: 0x000a, 0x3ef9: 0x000a, 0x3efa: 0x000a, 0x3efb: 0x000a,\n\t0x3efc: 0x000a,\n\t// Block 0xfc, offset 0x3f00\n\t0x3f00: 0x000a, 0x3f01: 0x000a, 0x3f02: 0x000a, 0x3f03: 0x000a, 0x3f04: 0x000a, 0x3f05: 0x000a,\n\t0x3f06: 0x000a, 0x3f07: 0x000a, 0x3f08: 0x000a,\n\t0x3f10: 0x000a, 0x3f11: 0x000a,\n\t0x3f12: 0x000a, 0x3f13: 0x000a, 0x3f14: 0x000a, 0x3f15: 0x000a, 0x3f16: 0x000a, 0x3f17: 0x000a,\n\t0x3f18: 0x000a, 0x3f19: 0x000a, 0x3f1a: 0x000a, 0x3f1b: 0x000a, 0x3f1c: 0x000a, 0x3f1d: 0x000a,\n\t0x3f1e: 0x000a, 0x3f1f: 0x000a, 0x3f20: 0x000a, 0x3f21: 0x000a, 0x3f22: 0x000a, 0x3f23: 0x000a,\n\t0x3f24: 0x000a, 0x3f25: 0x000a, 0x3f26: 0x000a, 0x3f27: 0x000a, 0x3f28: 0x000a, 0x3f29: 0x000a,\n\t0x3f2a: 0x000a, 0x3f2b: 0x000a, 0x3f2c: 0x000a, 0x3f2d: 0x000a, 0x3f2e: 0x000a, 0x3f2f: 0x000a,\n\t0x3f30: 0x000a, 0x3f31: 0x000a, 0x3f32: 0x000a, 0x3f33: 0x000a, 0x3f34: 0x000a, 0x3f35: 0x000a,\n\t0x3f36: 0x000a, 0x3f37: 0x000a, 0x3f38: 0x000a, 0x3f39: 0x000a, 0x3f3a: 0x000a, 0x3f3b: 0x000a,\n\t0x3f3c: 0x000a, 0x3f3d: 0x000a, 0x3f3f: 0x000a,\n\t// Block 0xfd, offset 0x3f40\n\t0x3f40: 0x000a, 0x3f41: 0x000a, 0x3f42: 0x000a, 0x3f43: 0x000a, 0x3f44: 0x000a, 0x3f45: 0x000a,\n\t0x3f4e: 0x000a, 0x3f4f: 0x000a, 0x3f50: 0x000a, 0x3f51: 0x000a,\n\t0x3f52: 0x000a, 0x3f53: 0x000a, 0x3f54: 0x000a, 0x3f55: 0x000a, 0x3f56: 0x000a, 0x3f57: 0x000a,\n\t0x3f58: 0x000a, 0x3f59: 0x000a, 0x3f5a: 0x000a, 0x3f5b: 0x000a,\n\t0x3f60: 0x000a, 0x3f61: 0x000a, 0x3f62: 0x000a, 0x3f63: 0x000a,\n\t0x3f64: 0x000a, 0x3f65: 0x000a, 0x3f66: 0x000a, 0x3f67: 0x000a, 0x3f68: 0x000a,\n\t0x3f70: 0x000a, 0x3f71: 0x000a, 0x3f72: 0x000a, 0x3f73: 0x000a, 0x3f74: 0x000a, 0x3f75: 0x000a,\n\t0x3f76: 0x000a, 0x3f77: 0x000a, 0x3f78: 0x000a,\n\t// Block 0xfe, offset 0x3f80\n\t0x3f80: 0x000a, 0x3f81: 0x000a, 0x3f82: 0x000a, 0x3f83: 0x000a, 0x3f84: 0x000a, 0x3f85: 0x000a,\n\t0x3f86: 0x000a, 0x3f87: 0x000a, 0x3f88: 0x000a, 0x3f89: 0x000a, 0x3f8a: 0x000a, 0x3f8b: 0x000a,\n\t0x3f8c: 0x000a, 0x3f8d: 0x000a, 0x3f8e: 0x000a, 0x3f8f: 0x000a, 0x3f90: 0x000a, 0x3f91: 0x000a,\n\t0x3f92: 0x000a, 0x3f94: 0x000a, 0x3f95: 0x000a, 0x3f96: 0x000a, 0x3f97: 0x000a,\n\t0x3f98: 0x000a, 0x3f99: 0x000a, 0x3f9a: 0x000a, 0x3f9b: 0x000a, 0x3f9c: 0x000a, 0x3f9d: 0x000a,\n\t0x3f9e: 0x000a, 0x3f9f: 0x000a, 0x3fa0: 0x000a, 0x3fa1: 0x000a, 0x3fa2: 0x000a, 0x3fa3: 0x000a,\n\t0x3fa4: 0x000a, 0x3fa5: 0x000a, 0x3fa6: 0x000a, 0x3fa7: 0x000a, 0x3fa8: 0x000a, 0x3fa9: 0x000a,\n\t0x3faa: 0x000a, 0x3fab: 0x000a, 0x3fac: 0x000a, 0x3fad: 0x000a, 0x3fae: 0x000a, 0x3faf: 0x000a,\n\t0x3fb0: 0x000a, 0x3fb1: 0x000a, 0x3fb2: 0x000a, 0x3fb3: 0x000a, 0x3fb4: 0x000a, 0x3fb5: 0x000a,\n\t0x3fb6: 0x000a, 0x3fb7: 0x000a, 0x3fb8: 0x000a, 0x3fb9: 0x000a, 0x3fba: 0x000a, 0x3fbb: 0x000a,\n\t0x3fbc: 0x000a, 0x3fbd: 0x000a, 0x3fbe: 0x000a, 0x3fbf: 0x000a,\n\t// Block 0xff, offset 0x3fc0\n\t0x3fc0: 0x000a, 0x3fc1: 0x000a, 0x3fc2: 0x000a, 0x3fc3: 0x000a, 0x3fc4: 0x000a, 0x3fc5: 0x000a,\n\t0x3fc6: 0x000a, 0x3fc7: 0x000a, 0x3fc8: 0x000a, 0x3fc9: 0x000a, 0x3fca: 0x000a,\n\t0x3ff0: 0x0002, 0x3ff1: 0x0002, 0x3ff2: 0x0002, 0x3ff3: 0x0002, 0x3ff4: 0x0002, 0x3ff5: 0x0002,\n\t0x3ff6: 0x0002, 0x3ff7: 0x0002, 0x3ff8: 0x0002, 0x3ff9: 0x0002,\n\t// Block 0x100, offset 0x4000\n\t0x403e: 0x000b, 0x403f: 0x000b,\n\t// Block 0x101, offset 0x4040\n\t0x4040: 0x000b, 0x4041: 0x000b, 0x4042: 0x000b, 0x4043: 0x000b, 0x4044: 0x000b, 0x4045: 0x000b,\n\t0x4046: 0x000b, 0x4047: 0x000b, 0x4048: 0x000b, 0x4049: 0x000b, 0x404a: 0x000b, 0x404b: 0x000b,\n\t0x404c: 0x000b, 0x404d: 0x000b, 0x404e: 0x000b, 0x404f: 0x000b, 0x4050: 0x000b, 0x4051: 0x000b,\n\t0x4052: 0x000b, 0x4053: 0x000b, 0x4054: 0x000b, 0x4055: 0x000b, 0x4056: 0x000b, 0x4057: 0x000b,\n\t0x4058: 0x000b, 0x4059: 0x000b, 0x405a: 0x000b, 0x405b: 0x000b, 0x405c: 0x000b, 0x405d: 0x000b,\n\t0x405e: 0x000b, 0x405f: 0x000b, 0x4060: 0x000b, 0x4061: 0x000b, 0x4062: 0x000b, 0x4063: 0x000b,\n\t0x4064: 0x000b, 0x4065: 0x000b, 0x4066: 0x000b, 0x4067: 0x000b, 0x4068: 0x000b, 0x4069: 0x000b,\n\t0x406a: 0x000b, 0x406b: 0x000b, 0x406c: 0x000b, 0x406d: 0x000b, 0x406e: 0x000b, 0x406f: 0x000b,\n\t0x4070: 0x000b, 0x4071: 0x000b, 0x4072: 0x000b, 0x4073: 0x000b, 0x4074: 0x000b, 0x4075: 0x000b,\n\t0x4076: 0x000b, 0x4077: 0x000b, 0x4078: 0x000b, 0x4079: 0x000b, 0x407a: 0x000b, 0x407b: 0x000b,\n\t0x407c: 0x000b, 0x407d: 0x000b, 0x407e: 0x000b, 0x407f: 0x000b,\n\t// Block 0x102, offset 0x4080\n\t0x4080: 0x000c, 0x4081: 0x000c, 0x4082: 0x000c, 0x4083: 0x000c, 0x4084: 0x000c, 0x4085: 0x000c,\n\t0x4086: 0x000c, 0x4087: 0x000c, 0x4088: 0x000c, 0x4089: 0x000c, 0x408a: 0x000c, 0x408b: 0x000c,\n\t0x408c: 0x000c, 0x408d: 0x000c, 0x408e: 0x000c, 0x408f: 0x000c, 0x4090: 0x000c, 0x4091: 0x000c,\n\t0x4092: 0x000c, 0x4093: 0x000c, 0x4094: 0x000c, 0x4095: 0x000c, 0x4096: 0x000c, 0x4097: 0x000c,\n\t0x4098: 0x000c, 0x4099: 0x000c, 0x409a: 0x000c, 0x409b: 0x000c, 0x409c: 0x000c, 0x409d: 0x000c,\n\t0x409e: 0x000c, 0x409f: 0x000c, 0x40a0: 0x000c, 0x40a1: 0x000c, 0x40a2: 0x000c, 0x40a3: 0x000c,\n\t0x40a4: 0x000c, 0x40a5: 0x000c, 0x40a6: 0x000c, 0x40a7: 0x000c, 0x40a8: 0x000c, 0x40a9: 0x000c,\n\t0x40aa: 0x000c, 0x40ab: 0x000c, 0x40ac: 0x000c, 0x40ad: 0x000c, 0x40ae: 0x000c, 0x40af: 0x000c,\n\t0x40b0: 0x000b, 0x40b1: 0x000b, 0x40b2: 0x000b, 0x40b3: 0x000b, 0x40b4: 0x000b, 0x40b5: 0x000b,\n\t0x40b6: 0x000b, 0x40b7: 0x000b, 0x40b8: 0x000b, 0x40b9: 0x000b, 0x40ba: 0x000b, 0x40bb: 0x000b,\n\t0x40bc: 0x000b, 0x40bd: 0x000b, 0x40be: 0x000b, 0x40bf: 0x000b,\n}\n\n// bidiIndex: 26 blocks, 1664 entries, 3328 bytes\n// Block 0 is the zero block.\nvar bidiIndex = [1664]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x02,\n\t0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08,\n\t0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b,\n\t0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06,\n\t0xea: 0x07, 0xef: 0x08,\n\t0xf0: 0x13, 0xf1: 0x14, 0xf2: 0x14, 0xf3: 0x16, 0xf4: 0x17,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b,\n\t0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22,\n\t0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x136: 0x28, 0x137: 0x29,\n\t0x138: 0x2a, 0x139: 0x2b, 0x13a: 0x2c, 0x13b: 0x2d, 0x13c: 0x2e, 0x13d: 0x2f, 0x13e: 0x30, 0x13f: 0x31,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x32, 0x141: 0x33, 0x142: 0x34,\n\t0x14d: 0x35, 0x14e: 0x36,\n\t0x150: 0x37,\n\t0x15a: 0x38, 0x15c: 0x39, 0x15d: 0x3a, 0x15e: 0x3b, 0x15f: 0x3c,\n\t0x160: 0x3d, 0x162: 0x3e, 0x164: 0x3f, 0x165: 0x40, 0x167: 0x41,\n\t0x168: 0x42, 0x169: 0x43, 0x16a: 0x44, 0x16b: 0x45, 0x16c: 0x46, 0x16d: 0x47, 0x16e: 0x48, 0x16f: 0x49,\n\t0x170: 0x4a, 0x173: 0x4b, 0x177: 0x05,\n\t0x17e: 0x4c, 0x17f: 0x4d,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x4e, 0x181: 0x4f, 0x182: 0x50, 0x183: 0x51, 0x184: 0x52, 0x185: 0x53, 0x186: 0x54, 0x187: 0x55,\n\t0x188: 0x56, 0x189: 0x55, 0x18a: 0x55, 0x18b: 0x55, 0x18c: 0x57, 0x18d: 0x58, 0x18e: 0x59, 0x18f: 0x55,\n\t0x190: 0x5a, 0x191: 0x5b, 0x192: 0x5c, 0x193: 0x5d, 0x194: 0x55, 0x195: 0x55, 0x196: 0x55, 0x197: 0x55,\n\t0x198: 0x55, 0x199: 0x55, 0x19a: 0x5e, 0x19b: 0x55, 0x19c: 0x55, 0x19d: 0x5f, 0x19e: 0x55, 0x19f: 0x60,\n\t0x1a4: 0x55, 0x1a5: 0x55, 0x1a6: 0x61, 0x1a7: 0x62,\n\t0x1a8: 0x55, 0x1a9: 0x55, 0x1aa: 0x55, 0x1ab: 0x55, 0x1ac: 0x55, 0x1ad: 0x63, 0x1ae: 0x64, 0x1af: 0x55,\n\t0x1b3: 0x65, 0x1b5: 0x66, 0x1b7: 0x67,\n\t0x1b8: 0x68, 0x1b9: 0x69, 0x1ba: 0x6a, 0x1bb: 0x6b, 0x1bc: 0x55, 0x1bd: 0x55, 0x1be: 0x55, 0x1bf: 0x6c,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x6d, 0x1c2: 0x6e, 0x1c3: 0x6f, 0x1c7: 0x70,\n\t0x1c8: 0x71, 0x1c9: 0x72, 0x1ca: 0x73, 0x1cb: 0x74, 0x1cd: 0x75, 0x1cf: 0x76,\n\t// Block 0x8, offset 0x200\n\t0x237: 0x55,\n\t// Block 0x9, offset 0x240\n\t0x252: 0x77, 0x253: 0x78,\n\t0x258: 0x79, 0x259: 0x7a, 0x25a: 0x7b, 0x25b: 0x7c, 0x25c: 0x7d, 0x25e: 0x7e,\n\t0x260: 0x7f, 0x261: 0x80, 0x263: 0x81, 0x264: 0x82, 0x265: 0x83, 0x266: 0x84, 0x267: 0x85,\n\t0x268: 0x86, 0x269: 0x87, 0x26a: 0x88, 0x26b: 0x89, 0x26d: 0x8a, 0x26f: 0x8b,\n\t// Block 0xa, offset 0x280\n\t0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x0e, 0x2af: 0x0e,\n\t0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8e, 0x2b5: 0x8f, 0x2b6: 0x0e, 0x2b7: 0x90,\n\t0x2b8: 0x91, 0x2b9: 0x92, 0x2ba: 0x0e, 0x2bb: 0x93, 0x2bc: 0x94, 0x2bd: 0x95, 0x2bf: 0x96,\n\t// Block 0xb, offset 0x2c0\n\t0x2c4: 0x97, 0x2c5: 0x55, 0x2c6: 0x98, 0x2c7: 0x99,\n\t0x2cb: 0x9a, 0x2cd: 0x9b,\n\t0x2e0: 0x9c, 0x2e1: 0x9c, 0x2e2: 0x9c, 0x2e3: 0x9c, 0x2e4: 0x9d, 0x2e5: 0x9c, 0x2e6: 0x9c, 0x2e7: 0x9c,\n\t0x2e8: 0x9e, 0x2e9: 0x9c, 0x2ea: 0x9c, 0x2eb: 0x9f, 0x2ec: 0xa0, 0x2ed: 0x9c, 0x2ee: 0x9c, 0x2ef: 0x9c,\n\t0x2f0: 0x9c, 0x2f1: 0x9c, 0x2f2: 0x9c, 0x2f3: 0x9c, 0x2f4: 0xa1, 0x2f5: 0x9c, 0x2f6: 0x9c, 0x2f7: 0x9c,\n\t0x2f8: 0x9c, 0x2f9: 0xa2, 0x2fa: 0xa3, 0x2fb: 0xa4, 0x2fc: 0xa5, 0x2fd: 0xa6, 0x2fe: 0xa7, 0x2ff: 0x9c,\n\t// Block 0xc, offset 0x300\n\t0x300: 0xa8, 0x301: 0xa9, 0x302: 0xaa, 0x303: 0x21, 0x304: 0xab, 0x305: 0xac, 0x306: 0xad, 0x307: 0xae,\n\t0x308: 0xaf, 0x309: 0x28, 0x30b: 0xb0, 0x30c: 0x26, 0x30d: 0xb1,\n\t0x310: 0xb2, 0x311: 0xb3, 0x312: 0xb4, 0x313: 0xb5, 0x316: 0xb6, 0x317: 0xb7,\n\t0x318: 0xb8, 0x319: 0xb9, 0x31a: 0xba, 0x31c: 0xbb,\n\t0x320: 0xbc, 0x324: 0xbd, 0x325: 0xbe, 0x327: 0xbf,\n\t0x328: 0xc0, 0x329: 0xc1, 0x32a: 0xc2,\n\t0x330: 0xc3, 0x332: 0xc4, 0x334: 0xc5, 0x335: 0xc6, 0x336: 0xc7,\n\t0x33b: 0xc8, 0x33c: 0xc9, 0x33d: 0xca, 0x33f: 0xcb,\n\t// Block 0xd, offset 0x340\n\t0x351: 0xcc,\n\t// Block 0xe, offset 0x380\n\t0x3ab: 0xcd, 0x3ac: 0xce,\n\t0x3bd: 0xcf, 0x3be: 0xd0, 0x3bf: 0xd1,\n\t// Block 0xf, offset 0x3c0\n\t0x3f2: 0xd2,\n\t// Block 0x10, offset 0x400\n\t0x43c: 0xd3, 0x43d: 0xd4,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xd5, 0x446: 0xd6, 0x447: 0xd7,\n\t0x448: 0x55, 0x449: 0xd8, 0x44c: 0x55, 0x44d: 0xd9,\n\t0x45b: 0xda, 0x45c: 0xdb, 0x45d: 0xdc, 0x45e: 0xdd, 0x45f: 0xde,\n\t0x468: 0xdf, 0x469: 0xe0, 0x46a: 0xe1,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xe2, 0x482: 0xcf, 0x484: 0xce,\n\t0x48a: 0xe3, 0x48b: 0xe4,\n\t0x493: 0xe5,\n\t0x4a0: 0x9c, 0x4a1: 0x9c, 0x4a2: 0x9c, 0x4a3: 0xe6, 0x4a4: 0x9c, 0x4a5: 0xe7, 0x4a6: 0x9c, 0x4a7: 0x9c,\n\t0x4a8: 0x9c, 0x4a9: 0x9c, 0x4aa: 0x9c, 0x4ab: 0x9c, 0x4ac: 0x9c, 0x4ad: 0x9c, 0x4ae: 0x9c, 0x4af: 0x9c,\n\t0x4b0: 0x9c, 0x4b1: 0xe8, 0x4b2: 0xe9, 0x4b3: 0x9c, 0x4b4: 0xea, 0x4b5: 0x9c, 0x4b6: 0x9c, 0x4b7: 0x9c,\n\t0x4b8: 0x0e, 0x4b9: 0x0e, 0x4ba: 0x0e, 0x4bb: 0xeb, 0x4bc: 0x9c, 0x4bd: 0x9c, 0x4be: 0x9c, 0x4bf: 0x9c,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0xec, 0x4c1: 0x55, 0x4c2: 0xed, 0x4c3: 0xee, 0x4c4: 0xef, 0x4c5: 0xf0, 0x4c6: 0xf1,\n\t0x4c9: 0xf2, 0x4cc: 0x55, 0x4cd: 0x55, 0x4ce: 0x55, 0x4cf: 0x55,\n\t0x4d0: 0x55, 0x4d1: 0x55, 0x4d2: 0x55, 0x4d3: 0x55, 0x4d4: 0x55, 0x4d5: 0x55, 0x4d6: 0x55, 0x4d7: 0x55,\n\t0x4d8: 0x55, 0x4d9: 0x55, 0x4da: 0x55, 0x4db: 0xf3, 0x4dc: 0x55, 0x4dd: 0xf4, 0x4de: 0x55, 0x4df: 0xf5,\n\t0x4e0: 0xf6, 0x4e1: 0xf7, 0x4e2: 0xf8, 0x4e4: 0x55, 0x4e5: 0x55, 0x4e6: 0x55, 0x4e7: 0x55,\n\t0x4e8: 0x55, 0x4e9: 0xf9, 0x4ea: 0xfa, 0x4eb: 0xfb, 0x4ec: 0x55, 0x4ed: 0x55, 0x4ee: 0xfc, 0x4ef: 0xfd,\n\t0x4ff: 0xfe,\n\t// Block 0x14, offset 0x500\n\t0x53f: 0xfe,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x09, 0x551: 0x0a, 0x553: 0x0b, 0x556: 0x0c,\n\t0x55b: 0x0d, 0x55c: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n\t0x57f: 0x12,\n\t// Block 0x16, offset 0x580\n\t0x58f: 0x12,\n\t0x59f: 0x12,\n\t0x5af: 0x12,\n\t0x5bf: 0x12,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0xff, 0x5c1: 0xff, 0x5c2: 0xff, 0x5c3: 0xff, 0x5c4: 0x05, 0x5c5: 0x05, 0x5c6: 0x05, 0x5c7: 0x100,\n\t0x5c8: 0xff, 0x5c9: 0xff, 0x5ca: 0xff, 0x5cb: 0xff, 0x5cc: 0xff, 0x5cd: 0xff, 0x5ce: 0xff, 0x5cf: 0xff,\n\t0x5d0: 0xff, 0x5d1: 0xff, 0x5d2: 0xff, 0x5d3: 0xff, 0x5d4: 0xff, 0x5d5: 0xff, 0x5d6: 0xff, 0x5d7: 0xff,\n\t0x5d8: 0xff, 0x5d9: 0xff, 0x5da: 0xff, 0x5db: 0xff, 0x5dc: 0xff, 0x5dd: 0xff, 0x5de: 0xff, 0x5df: 0xff,\n\t0x5e0: 0xff, 0x5e1: 0xff, 0x5e2: 0xff, 0x5e3: 0xff, 0x5e4: 0xff, 0x5e5: 0xff, 0x5e6: 0xff, 0x5e7: 0xff,\n\t0x5e8: 0xff, 0x5e9: 0xff, 0x5ea: 0xff, 0x5eb: 0xff, 0x5ec: 0xff, 0x5ed: 0xff, 0x5ee: 0xff, 0x5ef: 0xff,\n\t0x5f0: 0xff, 0x5f1: 0xff, 0x5f2: 0xff, 0x5f3: 0xff, 0x5f4: 0xff, 0x5f5: 0xff, 0x5f6: 0xff, 0x5f7: 0xff,\n\t0x5f8: 0xff, 0x5f9: 0xff, 0x5fa: 0xff, 0x5fb: 0xff, 0x5fc: 0xff, 0x5fd: 0xff, 0x5fe: 0xff, 0x5ff: 0xff,\n\t// Block 0x18, offset 0x600\n\t0x60f: 0x12,\n\t0x61f: 0x12,\n\t0x620: 0x15,\n\t0x62f: 0x12,\n\t0x63f: 0x12,\n\t// Block 0x19, offset 0x640\n\t0x64f: 0x12,\n}\n\n// Total table size 19960 bytes (19KiB); checksum: F50EF68C\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build !go1.10\n\npackage bidi\n\n// UnicodeVersion is the Unicode version from which the tables in this package are derived.\nconst UnicodeVersion = \"9.0.0\"\n\n// xorMasks contains masks to be xor-ed with brackets to get the reverse\n// version.\nvar xorMasks = []int32{ // 8 elements\n\t0, 1, 6, 7, 3, 15, 29, 63,\n} // Size: 56 bytes\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookup(s []byte) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupUnsafe(s []byte) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *bidiTrie) lookupString(s string) (v uint8, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn bidiValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := bidiIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = bidiIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = bidiIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *bidiTrie) lookupStringUnsafe(s string) uint8 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn bidiValues[c0]\n\t}\n\ti := bidiIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = bidiIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// bidiTrie. Total size: 15744 bytes (15.38 KiB). Checksum: b4c3b70954803b86.\ntype bidiTrie struct{}\n\nfunc newBidiTrie(i int) *bidiTrie {\n\treturn &bidiTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *bidiTrie) lookupValue(n uint32, b byte) uint8 {\n\tswitch {\n\tdefault:\n\t\treturn uint8(bidiValues[n<<6+uint32(b)])\n\t}\n}\n\n// bidiValues: 222 blocks, 14208 entries, 14208 bytes\n// The third block is the zero block.\nvar bidiValues = [14208]uint8{\n\t// Block 0x0, offset 0x0\n\t0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b,\n\t0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008,\n\t0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b,\n\t0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b,\n\t0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007,\n\t0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004,\n\t0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a,\n\t0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006,\n\t0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002,\n\t0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a,\n\t0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a,\n\t// Block 0x1, offset 0x40\n\t0x40: 0x000a,\n\t0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a,\n\t0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a,\n\t0x7b: 0x005a,\n\t0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007,\n\t0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b,\n\t0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b,\n\t0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b,\n\t0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b,\n\t0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004,\n\t0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a,\n\t0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a,\n\t0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a,\n\t0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a,\n\t0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a,\n\t// Block 0x4, offset 0x100\n\t0x117: 0x000a,\n\t0x137: 0x000a,\n\t// Block 0x5, offset 0x140\n\t0x179: 0x000a, 0x17a: 0x000a,\n\t// Block 0x6, offset 0x180\n\t0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a,\n\t0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a,\n\t0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a,\n\t0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a,\n\t0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a,\n\t0x19e: 0x000a, 0x19f: 0x000a,\n\t0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a,\n\t0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a,\n\t0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a,\n\t0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a,\n\t0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c,\n\t0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c,\n\t0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c,\n\t0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c,\n\t0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c,\n\t0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c,\n\t0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c,\n\t0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c,\n\t0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c,\n\t0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c,\n\t0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c,\n\t0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c,\n\t0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c,\n\t0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c,\n\t0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c,\n\t0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c,\n\t0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c,\n\t0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c,\n\t0x234: 0x000a, 0x235: 0x000a,\n\t0x23e: 0x000a,\n\t// Block 0x9, offset 0x240\n\t0x244: 0x000a, 0x245: 0x000a,\n\t0x247: 0x000a,\n\t// Block 0xa, offset 0x280\n\t0x2b6: 0x000a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c,\n\t0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c,\n\t// Block 0xc, offset 0x300\n\t0x30a: 0x000a,\n\t0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c,\n\t0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c,\n\t0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c,\n\t0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c,\n\t0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c,\n\t0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c,\n\t0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c,\n\t0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c,\n\t0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c,\n\t// Block 0xd, offset 0x340\n\t0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c,\n\t0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001,\n\t0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001,\n\t0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001,\n\t0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001,\n\t0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001,\n\t0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001,\n\t0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001,\n\t0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001,\n\t0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001,\n\t0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001,\n\t// Block 0xe, offset 0x380\n\t0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005,\n\t0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d,\n\t0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c,\n\t0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c,\n\t0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d,\n\t0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d,\n\t0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d,\n\t0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d,\n\t0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d,\n\t0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d,\n\t0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d,\n\t// Block 0xf, offset 0x3c0\n\t0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d,\n\t0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c,\n\t0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c,\n\t0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c,\n\t0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c,\n\t0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005,\n\t0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005,\n\t0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d,\n\t0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d,\n\t0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d,\n\t0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d,\n\t0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d,\n\t0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d,\n\t0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d,\n\t0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d,\n\t0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d,\n\t0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d,\n\t0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d,\n\t0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d,\n\t0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d,\n\t0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d,\n\t0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d,\n\t0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d,\n\t0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c,\n\t0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005,\n\t0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c,\n\t0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a,\n\t0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d,\n\t0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002,\n\t0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d,\n\t0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d,\n\t0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d,\n\t0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c,\n\t0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d,\n\t0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d,\n\t0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d,\n\t0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d,\n\t0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d,\n\t0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c,\n\t0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c,\n\t0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c,\n\t0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d,\n\t0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d,\n\t0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d,\n\t0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d,\n\t0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d,\n\t0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d,\n\t0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d,\n\t0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d,\n\t0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d,\n\t0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d,\n\t0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d,\n\t0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d,\n\t0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d,\n\t0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d,\n\t0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d,\n\t0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c,\n\t0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c,\n\t0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d,\n\t0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d,\n\t0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001,\n\t0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001,\n\t0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001,\n\t0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001,\n\t0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001,\n\t0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001,\n\t0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001,\n\t0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c,\n\t0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001,\n\t0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001,\n\t0x57c: 0x0001, 0x57d: 0x0001, 0x57e: 0x0001, 0x57f: 0x0001,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001,\n\t0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001,\n\t0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001,\n\t0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c,\n\t0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c,\n\t0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c,\n\t0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c,\n\t0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001,\n\t0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001,\n\t0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001,\n\t0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001,\n\t0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001,\n\t0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001,\n\t0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001,\n\t0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001,\n\t0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x0001, 0x5e1: 0x0001, 0x5e2: 0x0001, 0x5e3: 0x0001,\n\t0x5e4: 0x0001, 0x5e5: 0x0001, 0x5e6: 0x0001, 0x5e7: 0x0001, 0x5e8: 0x0001, 0x5e9: 0x0001,\n\t0x5ea: 0x0001, 0x5eb: 0x0001, 0x5ec: 0x0001, 0x5ed: 0x0001, 0x5ee: 0x0001, 0x5ef: 0x0001,\n\t0x5f0: 0x0001, 0x5f1: 0x0001, 0x5f2: 0x0001, 0x5f3: 0x0001, 0x5f4: 0x0001, 0x5f5: 0x0001,\n\t0x5f6: 0x0001, 0x5f7: 0x0001, 0x5f8: 0x0001, 0x5f9: 0x0001, 0x5fa: 0x0001, 0x5fb: 0x0001,\n\t0x5fc: 0x0001, 0x5fd: 0x0001, 0x5fe: 0x0001, 0x5ff: 0x0001,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x0001, 0x601: 0x0001, 0x602: 0x0001, 0x603: 0x0001, 0x604: 0x0001, 0x605: 0x0001,\n\t0x606: 0x0001, 0x607: 0x0001, 0x608: 0x0001, 0x609: 0x0001, 0x60a: 0x0001, 0x60b: 0x0001,\n\t0x60c: 0x0001, 0x60d: 0x0001, 0x60e: 0x0001, 0x60f: 0x0001, 0x610: 0x0001, 0x611: 0x0001,\n\t0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001,\n\t0x618: 0x0001, 0x619: 0x0001, 0x61a: 0x0001, 0x61b: 0x0001, 0x61c: 0x0001, 0x61d: 0x0001,\n\t0x61e: 0x0001, 0x61f: 0x0001, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d,\n\t0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d,\n\t0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d,\n\t0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d,\n\t0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d,\n\t0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d,\n\t0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000d, 0x64b: 0x000d,\n\t0x64c: 0x000d, 0x64d: 0x000d, 0x64e: 0x000d, 0x64f: 0x000d, 0x650: 0x000d, 0x651: 0x000d,\n\t0x652: 0x000d, 0x653: 0x000d, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c,\n\t0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c,\n\t0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c,\n\t0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c,\n\t0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c,\n\t0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c,\n\t0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c,\n\t0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c,\n\t0x6ba: 0x000c,\n\t0x6bc: 0x000c,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c,\n\t0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c,\n\t0x6cd: 0x000c, 0x6d1: 0x000c,\n\t0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c,\n\t0x6e2: 0x000c, 0x6e3: 0x000c,\n\t// Block 0x1c, offset 0x700\n\t0x701: 0x000c,\n\t0x73c: 0x000c,\n\t// Block 0x1d, offset 0x740\n\t0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c,\n\t0x74d: 0x000c,\n\t0x762: 0x000c, 0x763: 0x000c,\n\t0x772: 0x0004, 0x773: 0x0004,\n\t0x77b: 0x0004,\n\t// Block 0x1e, offset 0x780\n\t0x781: 0x000c, 0x782: 0x000c,\n\t0x7bc: 0x000c,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x000c, 0x7c2: 0x000c,\n\t0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c,\n\t0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c,\n\t0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c,\n\t// Block 0x20, offset 0x800\n\t0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c,\n\t0x807: 0x000c, 0x808: 0x000c,\n\t0x80d: 0x000c,\n\t0x822: 0x000c, 0x823: 0x000c,\n\t0x831: 0x0004,\n\t// Block 0x21, offset 0x840\n\t0x841: 0x000c,\n\t0x87c: 0x000c, 0x87f: 0x000c,\n\t// Block 0x22, offset 0x880\n\t0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c,\n\t0x88d: 0x000c,\n\t0x896: 0x000c,\n\t0x8a2: 0x000c, 0x8a3: 0x000c,\n\t// Block 0x23, offset 0x8c0\n\t0x8c2: 0x000c,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x000c,\n\t0x90d: 0x000c,\n\t0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a,\n\t0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x000c,\n\t0x97e: 0x000c, 0x97f: 0x000c,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x000c,\n\t0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c,\n\t0x98c: 0x000c, 0x98d: 0x000c,\n\t0x995: 0x000c, 0x996: 0x000c,\n\t0x9a2: 0x000c, 0x9a3: 0x000c,\n\t0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a,\n\t0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a,\n\t// Block 0x27, offset 0x9c0\n\t0x9cc: 0x000c, 0x9cd: 0x000c,\n\t0x9e2: 0x000c, 0x9e3: 0x000c,\n\t// Block 0x28, offset 0xa00\n\t0xa01: 0x000c,\n\t// Block 0x29, offset 0xa40\n\t0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c,\n\t0xa4d: 0x000c,\n\t0xa62: 0x000c, 0xa63: 0x000c,\n\t// Block 0x2a, offset 0xa80\n\t0xa8a: 0x000c,\n\t0xa92: 0x000c, 0xa93: 0x000c, 0xa94: 0x000c, 0xa96: 0x000c,\n\t// Block 0x2b, offset 0xac0\n\t0xaf1: 0x000c, 0xaf4: 0x000c, 0xaf5: 0x000c,\n\t0xaf6: 0x000c, 0xaf7: 0x000c, 0xaf8: 0x000c, 0xaf9: 0x000c, 0xafa: 0x000c,\n\t0xaff: 0x0004,\n\t// Block 0x2c, offset 0xb00\n\t0xb07: 0x000c, 0xb08: 0x000c, 0xb09: 0x000c, 0xb0a: 0x000c, 0xb0b: 0x000c,\n\t0xb0c: 0x000c, 0xb0d: 0x000c, 0xb0e: 0x000c,\n\t// Block 0x2d, offset 0xb40\n\t0xb71: 0x000c, 0xb74: 0x000c, 0xb75: 0x000c,\n\t0xb76: 0x000c, 0xb77: 0x000c, 0xb78: 0x000c, 0xb79: 0x000c, 0xb7b: 0x000c,\n\t0xb7c: 0x000c,\n\t// Block 0x2e, offset 0xb80\n\t0xb88: 0x000c, 0xb89: 0x000c, 0xb8a: 0x000c, 0xb8b: 0x000c,\n\t0xb8c: 0x000c, 0xb8d: 0x000c,\n\t// Block 0x2f, offset 0xbc0\n\t0xbd8: 0x000c, 0xbd9: 0x000c,\n\t0xbf5: 0x000c,\n\t0xbf7: 0x000c, 0xbf9: 0x000c, 0xbfa: 0x003a, 0xbfb: 0x002a,\n\t0xbfc: 0x003a, 0xbfd: 0x002a,\n\t// Block 0x30, offset 0xc00\n\t0xc31: 0x000c, 0xc32: 0x000c, 0xc33: 0x000c, 0xc34: 0x000c, 0xc35: 0x000c,\n\t0xc36: 0x000c, 0xc37: 0x000c, 0xc38: 0x000c, 0xc39: 0x000c, 0xc3a: 0x000c, 0xc3b: 0x000c,\n\t0xc3c: 0x000c, 0xc3d: 0x000c, 0xc3e: 0x000c,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x000c, 0xc41: 0x000c, 0xc42: 0x000c, 0xc43: 0x000c, 0xc44: 0x000c,\n\t0xc46: 0x000c, 0xc47: 0x000c,\n\t0xc4d: 0x000c, 0xc4e: 0x000c, 0xc4f: 0x000c, 0xc50: 0x000c, 0xc51: 0x000c,\n\t0xc52: 0x000c, 0xc53: 0x000c, 0xc54: 0x000c, 0xc55: 0x000c, 0xc56: 0x000c, 0xc57: 0x000c,\n\t0xc59: 0x000c, 0xc5a: 0x000c, 0xc5b: 0x000c, 0xc5c: 0x000c, 0xc5d: 0x000c,\n\t0xc5e: 0x000c, 0xc5f: 0x000c, 0xc60: 0x000c, 0xc61: 0x000c, 0xc62: 0x000c, 0xc63: 0x000c,\n\t0xc64: 0x000c, 0xc65: 0x000c, 0xc66: 0x000c, 0xc67: 0x000c, 0xc68: 0x000c, 0xc69: 0x000c,\n\t0xc6a: 0x000c, 0xc6b: 0x000c, 0xc6c: 0x000c, 0xc6d: 0x000c, 0xc6e: 0x000c, 0xc6f: 0x000c,\n\t0xc70: 0x000c, 0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c,\n\t0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c,\n\t0xc7c: 0x000c,\n\t// Block 0x32, offset 0xc80\n\t0xc86: 0x000c,\n\t// Block 0x33, offset 0xcc0\n\t0xced: 0x000c, 0xcee: 0x000c, 0xcef: 0x000c,\n\t0xcf0: 0x000c, 0xcf2: 0x000c, 0xcf3: 0x000c, 0xcf4: 0x000c, 0xcf5: 0x000c,\n\t0xcf6: 0x000c, 0xcf7: 0x000c, 0xcf9: 0x000c, 0xcfa: 0x000c,\n\t0xcfd: 0x000c, 0xcfe: 0x000c,\n\t// Block 0x34, offset 0xd00\n\t0xd18: 0x000c, 0xd19: 0x000c,\n\t0xd1e: 0x000c, 0xd1f: 0x000c, 0xd20: 0x000c,\n\t0xd31: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c,\n\t// Block 0x35, offset 0xd40\n\t0xd42: 0x000c, 0xd45: 0x000c,\n\t0xd46: 0x000c,\n\t0xd4d: 0x000c,\n\t0xd5d: 0x000c,\n\t// Block 0x36, offset 0xd80\n\t0xd9d: 0x000c,\n\t0xd9e: 0x000c, 0xd9f: 0x000c,\n\t// Block 0x37, offset 0xdc0\n\t0xdd0: 0x000a, 0xdd1: 0x000a,\n\t0xdd2: 0x000a, 0xdd3: 0x000a, 0xdd4: 0x000a, 0xdd5: 0x000a, 0xdd6: 0x000a, 0xdd7: 0x000a,\n\t0xdd8: 0x000a, 0xdd9: 0x000a,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x000a,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x0009,\n\t0xe5b: 0x007a, 0xe5c: 0x006a,\n\t// Block 0x3a, offset 0xe80\n\t0xe92: 0x000c, 0xe93: 0x000c, 0xe94: 0x000c,\n\t0xeb2: 0x000c, 0xeb3: 0x000c, 0xeb4: 0x000c,\n\t// Block 0x3b, offset 0xec0\n\t0xed2: 0x000c, 0xed3: 0x000c,\n\t0xef2: 0x000c, 0xef3: 0x000c,\n\t// Block 0x3c, offset 0xf00\n\t0xf34: 0x000c, 0xf35: 0x000c,\n\t0xf37: 0x000c, 0xf38: 0x000c, 0xf39: 0x000c, 0xf3a: 0x000c, 0xf3b: 0x000c,\n\t0xf3c: 0x000c, 0xf3d: 0x000c,\n\t// Block 0x3d, offset 0xf40\n\t0xf46: 0x000c, 0xf49: 0x000c, 0xf4a: 0x000c, 0xf4b: 0x000c,\n\t0xf4c: 0x000c, 0xf4d: 0x000c, 0xf4e: 0x000c, 0xf4f: 0x000c, 0xf50: 0x000c, 0xf51: 0x000c,\n\t0xf52: 0x000c, 0xf53: 0x000c,\n\t0xf5b: 0x0004, 0xf5d: 0x000c,\n\t0xf70: 0x000a, 0xf71: 0x000a, 0xf72: 0x000a, 0xf73: 0x000a, 0xf74: 0x000a, 0xf75: 0x000a,\n\t0xf76: 0x000a, 0xf77: 0x000a, 0xf78: 0x000a, 0xf79: 0x000a,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x000a, 0xf81: 0x000a, 0xf82: 0x000a, 0xf83: 0x000a, 0xf84: 0x000a, 0xf85: 0x000a,\n\t0xf86: 0x000a, 0xf87: 0x000a, 0xf88: 0x000a, 0xf89: 0x000a, 0xf8a: 0x000a, 0xf8b: 0x000c,\n\t0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000b,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc5: 0x000c,\n\t0xfc6: 0x000c,\n\t0xfe9: 0x000c,\n\t// Block 0x40, offset 0x1000\n\t0x1020: 0x000c, 0x1021: 0x000c, 0x1022: 0x000c,\n\t0x1027: 0x000c, 0x1028: 0x000c,\n\t0x1032: 0x000c,\n\t0x1039: 0x000c, 0x103a: 0x000c, 0x103b: 0x000c,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x000a, 0x1044: 0x000a, 0x1045: 0x000a,\n\t// Block 0x42, offset 0x1080\n\t0x109e: 0x000a, 0x109f: 0x000a, 0x10a0: 0x000a, 0x10a1: 0x000a, 0x10a2: 0x000a, 0x10a3: 0x000a,\n\t0x10a4: 0x000a, 0x10a5: 0x000a, 0x10a6: 0x000a, 0x10a7: 0x000a, 0x10a8: 0x000a, 0x10a9: 0x000a,\n\t0x10aa: 0x000a, 0x10ab: 0x000a, 0x10ac: 0x000a, 0x10ad: 0x000a, 0x10ae: 0x000a, 0x10af: 0x000a,\n\t0x10b0: 0x000a, 0x10b1: 0x000a, 0x10b2: 0x000a, 0x10b3: 0x000a, 0x10b4: 0x000a, 0x10b5: 0x000a,\n\t0x10b6: 0x000a, 0x10b7: 0x000a, 0x10b8: 0x000a, 0x10b9: 0x000a, 0x10ba: 0x000a, 0x10bb: 0x000a,\n\t0x10bc: 0x000a, 0x10bd: 0x000a, 0x10be: 0x000a, 0x10bf: 0x000a,\n\t// Block 0x43, offset 0x10c0\n\t0x10d7: 0x000c,\n\t0x10d8: 0x000c, 0x10db: 0x000c,\n\t// Block 0x44, offset 0x1100\n\t0x1116: 0x000c,\n\t0x1118: 0x000c, 0x1119: 0x000c, 0x111a: 0x000c, 0x111b: 0x000c, 0x111c: 0x000c, 0x111d: 0x000c,\n\t0x111e: 0x000c, 0x1120: 0x000c, 0x1122: 0x000c,\n\t0x1125: 0x000c, 0x1126: 0x000c, 0x1127: 0x000c, 0x1128: 0x000c, 0x1129: 0x000c,\n\t0x112a: 0x000c, 0x112b: 0x000c, 0x112c: 0x000c,\n\t0x1133: 0x000c, 0x1134: 0x000c, 0x1135: 0x000c,\n\t0x1136: 0x000c, 0x1137: 0x000c, 0x1138: 0x000c, 0x1139: 0x000c, 0x113a: 0x000c, 0x113b: 0x000c,\n\t0x113c: 0x000c, 0x113f: 0x000c,\n\t// Block 0x45, offset 0x1140\n\t0x1170: 0x000c, 0x1171: 0x000c, 0x1172: 0x000c, 0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c,\n\t0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c,\n\t0x117c: 0x000c, 0x117d: 0x000c, 0x117e: 0x000c,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x000c, 0x1181: 0x000c, 0x1182: 0x000c, 0x1183: 0x000c,\n\t0x11b4: 0x000c,\n\t0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c,\n\t0x11bc: 0x000c,\n\t// Block 0x47, offset 0x11c0\n\t0x11c2: 0x000c,\n\t0x11eb: 0x000c, 0x11ec: 0x000c, 0x11ed: 0x000c, 0x11ee: 0x000c, 0x11ef: 0x000c,\n\t0x11f0: 0x000c, 0x11f1: 0x000c, 0x11f2: 0x000c, 0x11f3: 0x000c,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x000c, 0x1201: 0x000c,\n\t0x1222: 0x000c, 0x1223: 0x000c,\n\t0x1224: 0x000c, 0x1225: 0x000c, 0x1228: 0x000c, 0x1229: 0x000c,\n\t0x122b: 0x000c, 0x122c: 0x000c, 0x122d: 0x000c,\n\t// Block 0x49, offset 0x1240\n\t0x1266: 0x000c, 0x1268: 0x000c, 0x1269: 0x000c,\n\t0x126d: 0x000c, 0x126f: 0x000c,\n\t0x1270: 0x000c, 0x1271: 0x000c,\n\t// Block 0x4a, offset 0x1280\n\t0x12ac: 0x000c, 0x12ad: 0x000c, 0x12ae: 0x000c, 0x12af: 0x000c,\n\t0x12b0: 0x000c, 0x12b1: 0x000c, 0x12b2: 0x000c, 0x12b3: 0x000c,\n\t0x12b6: 0x000c, 0x12b7: 0x000c,\n\t// Block 0x4b, offset 0x12c0\n\t0x12d0: 0x000c, 0x12d1: 0x000c,\n\t0x12d2: 0x000c, 0x12d4: 0x000c, 0x12d5: 0x000c, 0x12d6: 0x000c, 0x12d7: 0x000c,\n\t0x12d8: 0x000c, 0x12d9: 0x000c, 0x12da: 0x000c, 0x12db: 0x000c, 0x12dc: 0x000c, 0x12dd: 0x000c,\n\t0x12de: 0x000c, 0x12df: 0x000c, 0x12e0: 0x000c, 0x12e2: 0x000c, 0x12e3: 0x000c,\n\t0x12e4: 0x000c, 0x12e5: 0x000c, 0x12e6: 0x000c, 0x12e7: 0x000c, 0x12e8: 0x000c,\n\t0x12ed: 0x000c,\n\t0x12f4: 0x000c,\n\t0x12f8: 0x000c, 0x12f9: 0x000c,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x000c, 0x1301: 0x000c, 0x1302: 0x000c, 0x1303: 0x000c, 0x1304: 0x000c, 0x1305: 0x000c,\n\t0x1306: 0x000c, 0x1307: 0x000c, 0x1308: 0x000c, 0x1309: 0x000c, 0x130a: 0x000c, 0x130b: 0x000c,\n\t0x130c: 0x000c, 0x130d: 0x000c, 0x130e: 0x000c, 0x130f: 0x000c, 0x1310: 0x000c, 0x1311: 0x000c,\n\t0x1312: 0x000c, 0x1313: 0x000c, 0x1314: 0x000c, 0x1315: 0x000c, 0x1316: 0x000c, 0x1317: 0x000c,\n\t0x1318: 0x000c, 0x1319: 0x000c, 0x131a: 0x000c, 0x131b: 0x000c, 0x131c: 0x000c, 0x131d: 0x000c,\n\t0x131e: 0x000c, 0x131f: 0x000c, 0x1320: 0x000c, 0x1321: 0x000c, 0x1322: 0x000c, 0x1323: 0x000c,\n\t0x1324: 0x000c, 0x1325: 0x000c, 0x1326: 0x000c, 0x1327: 0x000c, 0x1328: 0x000c, 0x1329: 0x000c,\n\t0x132a: 0x000c, 0x132b: 0x000c, 0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c,\n\t0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c, 0x1334: 0x000c, 0x1335: 0x000c,\n\t0x133b: 0x000c,\n\t0x133c: 0x000c, 0x133d: 0x000c, 0x133e: 0x000c, 0x133f: 0x000c,\n\t// Block 0x4d, offset 0x1340\n\t0x137d: 0x000a, 0x137f: 0x000a,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x000a, 0x1381: 0x000a,\n\t0x138d: 0x000a, 0x138e: 0x000a, 0x138f: 0x000a,\n\t0x139d: 0x000a,\n\t0x139e: 0x000a, 0x139f: 0x000a,\n\t0x13ad: 0x000a, 0x13ae: 0x000a, 0x13af: 0x000a,\n\t0x13bd: 0x000a, 0x13be: 0x000a,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x0009, 0x13c1: 0x0009, 0x13c2: 0x0009, 0x13c3: 0x0009, 0x13c4: 0x0009, 0x13c5: 0x0009,\n\t0x13c6: 0x0009, 0x13c7: 0x0009, 0x13c8: 0x0009, 0x13c9: 0x0009, 0x13ca: 0x0009, 0x13cb: 0x000b,\n\t0x13cc: 0x000b, 0x13cd: 0x000b, 0x13cf: 0x0001, 0x13d0: 0x000a, 0x13d1: 0x000a,\n\t0x13d2: 0x000a, 0x13d3: 0x000a, 0x13d4: 0x000a, 0x13d5: 0x000a, 0x13d6: 0x000a, 0x13d7: 0x000a,\n\t0x13d8: 0x000a, 0x13d9: 0x000a, 0x13da: 0x000a, 0x13db: 0x000a, 0x13dc: 0x000a, 0x13dd: 0x000a,\n\t0x13de: 0x000a, 0x13df: 0x000a, 0x13e0: 0x000a, 0x13e1: 0x000a, 0x13e2: 0x000a, 0x13e3: 0x000a,\n\t0x13e4: 0x000a, 0x13e5: 0x000a, 0x13e6: 0x000a, 0x13e7: 0x000a, 0x13e8: 0x0009, 0x13e9: 0x0007,\n\t0x13ea: 0x000e, 0x13eb: 0x000e, 0x13ec: 0x000e, 0x13ed: 0x000e, 0x13ee: 0x000e, 0x13ef: 0x0006,\n\t0x13f0: 0x0004, 0x13f1: 0x0004, 0x13f2: 0x0004, 0x13f3: 0x0004, 0x13f4: 0x0004, 0x13f5: 0x000a,\n\t0x13f6: 0x000a, 0x13f7: 0x000a, 0x13f8: 0x000a, 0x13f9: 0x000a, 0x13fa: 0x000a, 0x13fb: 0x000a,\n\t0x13fc: 0x000a, 0x13fd: 0x000a, 0x13fe: 0x000a, 0x13ff: 0x000a,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x000a, 0x1401: 0x000a, 0x1402: 0x000a, 0x1403: 0x000a, 0x1404: 0x0006, 0x1405: 0x009a,\n\t0x1406: 0x008a, 0x1407: 0x000a, 0x1408: 0x000a, 0x1409: 0x000a, 0x140a: 0x000a, 0x140b: 0x000a,\n\t0x140c: 0x000a, 0x140d: 0x000a, 0x140e: 0x000a, 0x140f: 0x000a, 0x1410: 0x000a, 0x1411: 0x000a,\n\t0x1412: 0x000a, 0x1413: 0x000a, 0x1414: 0x000a, 0x1415: 0x000a, 0x1416: 0x000a, 0x1417: 0x000a,\n\t0x1418: 0x000a, 0x1419: 0x000a, 0x141a: 0x000a, 0x141b: 0x000a, 0x141c: 0x000a, 0x141d: 0x000a,\n\t0x141e: 0x000a, 0x141f: 0x0009, 0x1420: 0x000b, 0x1421: 0x000b, 0x1422: 0x000b, 0x1423: 0x000b,\n\t0x1424: 0x000b, 0x1425: 0x000b, 0x1426: 0x000e, 0x1427: 0x000e, 0x1428: 0x000e, 0x1429: 0x000e,\n\t0x142a: 0x000b, 0x142b: 0x000b, 0x142c: 0x000b, 0x142d: 0x000b, 0x142e: 0x000b, 0x142f: 0x000b,\n\t0x1430: 0x0002, 0x1434: 0x0002, 0x1435: 0x0002,\n\t0x1436: 0x0002, 0x1437: 0x0002, 0x1438: 0x0002, 0x1439: 0x0002, 0x143a: 0x0003, 0x143b: 0x0003,\n\t0x143c: 0x000a, 0x143d: 0x009a, 0x143e: 0x008a,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x0002, 0x1441: 0x0002, 0x1442: 0x0002, 0x1443: 0x0002, 0x1444: 0x0002, 0x1445: 0x0002,\n\t0x1446: 0x0002, 0x1447: 0x0002, 0x1448: 0x0002, 0x1449: 0x0002, 0x144a: 0x0003, 0x144b: 0x0003,\n\t0x144c: 0x000a, 0x144d: 0x009a, 0x144e: 0x008a,\n\t0x1460: 0x0004, 0x1461: 0x0004, 0x1462: 0x0004, 0x1463: 0x0004,\n\t0x1464: 0x0004, 0x1465: 0x0004, 0x1466: 0x0004, 0x1467: 0x0004, 0x1468: 0x0004, 0x1469: 0x0004,\n\t0x146a: 0x0004, 0x146b: 0x0004, 0x146c: 0x0004, 0x146d: 0x0004, 0x146e: 0x0004, 0x146f: 0x0004,\n\t0x1470: 0x0004, 0x1471: 0x0004, 0x1472: 0x0004, 0x1473: 0x0004, 0x1474: 0x0004, 0x1475: 0x0004,\n\t0x1476: 0x0004, 0x1477: 0x0004, 0x1478: 0x0004, 0x1479: 0x0004, 0x147a: 0x0004, 0x147b: 0x0004,\n\t0x147c: 0x0004, 0x147d: 0x0004, 0x147e: 0x0004, 0x147f: 0x0004,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x0004, 0x1481: 0x0004, 0x1482: 0x0004, 0x1483: 0x0004, 0x1484: 0x0004, 0x1485: 0x0004,\n\t0x1486: 0x0004, 0x1487: 0x0004, 0x1488: 0x0004, 0x1489: 0x0004, 0x148a: 0x0004, 0x148b: 0x0004,\n\t0x148c: 0x0004, 0x148d: 0x0004, 0x148e: 0x0004, 0x148f: 0x0004, 0x1490: 0x000c, 0x1491: 0x000c,\n\t0x1492: 0x000c, 0x1493: 0x000c, 0x1494: 0x000c, 0x1495: 0x000c, 0x1496: 0x000c, 0x1497: 0x000c,\n\t0x1498: 0x000c, 0x1499: 0x000c, 0x149a: 0x000c, 0x149b: 0x000c, 0x149c: 0x000c, 0x149d: 0x000c,\n\t0x149e: 0x000c, 0x149f: 0x000c, 0x14a0: 0x000c, 0x14a1: 0x000c, 0x14a2: 0x000c, 0x14a3: 0x000c,\n\t0x14a4: 0x000c, 0x14a5: 0x000c, 0x14a6: 0x000c, 0x14a7: 0x000c, 0x14a8: 0x000c, 0x14a9: 0x000c,\n\t0x14aa: 0x000c, 0x14ab: 0x000c, 0x14ac: 0x000c, 0x14ad: 0x000c, 0x14ae: 0x000c, 0x14af: 0x000c,\n\t0x14b0: 0x000c,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x000a, 0x14c1: 0x000a, 0x14c3: 0x000a, 0x14c4: 0x000a, 0x14c5: 0x000a,\n\t0x14c6: 0x000a, 0x14c8: 0x000a, 0x14c9: 0x000a,\n\t0x14d4: 0x000a, 0x14d6: 0x000a, 0x14d7: 0x000a,\n\t0x14d8: 0x000a,\n\t0x14de: 0x000a, 0x14df: 0x000a, 0x14e0: 0x000a, 0x14e1: 0x000a, 0x14e2: 0x000a, 0x14e3: 0x000a,\n\t0x14e5: 0x000a, 0x14e7: 0x000a, 0x14e9: 0x000a,\n\t0x14ee: 0x0004,\n\t0x14fa: 0x000a, 0x14fb: 0x000a,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x000a, 0x1501: 0x000a, 0x1502: 0x000a, 0x1503: 0x000a, 0x1504: 0x000a,\n\t0x150a: 0x000a, 0x150b: 0x000a,\n\t0x150c: 0x000a, 0x150d: 0x000a, 0x1510: 0x000a, 0x1511: 0x000a,\n\t0x1512: 0x000a, 0x1513: 0x000a, 0x1514: 0x000a, 0x1515: 0x000a, 0x1516: 0x000a, 0x1517: 0x000a,\n\t0x1518: 0x000a, 0x1519: 0x000a, 0x151a: 0x000a, 0x151b: 0x000a, 0x151c: 0x000a, 0x151d: 0x000a,\n\t0x151e: 0x000a, 0x151f: 0x000a,\n\t// Block 0x55, offset 0x1540\n\t0x1549: 0x000a, 0x154a: 0x000a, 0x154b: 0x000a,\n\t0x1550: 0x000a, 0x1551: 0x000a,\n\t0x1552: 0x000a, 0x1553: 0x000a, 0x1554: 0x000a, 0x1555: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a,\n\t0x1558: 0x000a, 0x1559: 0x000a, 0x155a: 0x000a, 0x155b: 0x000a, 0x155c: 0x000a, 0x155d: 0x000a,\n\t0x155e: 0x000a, 0x155f: 0x000a, 0x1560: 0x000a, 0x1561: 0x000a, 0x1562: 0x000a, 0x1563: 0x000a,\n\t0x1564: 0x000a, 0x1565: 0x000a, 0x1566: 0x000a, 0x1567: 0x000a, 0x1568: 0x000a, 0x1569: 0x000a,\n\t0x156a: 0x000a, 0x156b: 0x000a, 0x156c: 0x000a, 0x156d: 0x000a, 0x156e: 0x000a, 0x156f: 0x000a,\n\t0x1570: 0x000a, 0x1571: 0x000a, 0x1572: 0x000a, 0x1573: 0x000a, 0x1574: 0x000a, 0x1575: 0x000a,\n\t0x1576: 0x000a, 0x1577: 0x000a, 0x1578: 0x000a, 0x1579: 0x000a, 0x157a: 0x000a, 0x157b: 0x000a,\n\t0x157c: 0x000a, 0x157d: 0x000a, 0x157e: 0x000a, 0x157f: 0x000a,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x000a, 0x1581: 0x000a, 0x1582: 0x000a, 0x1583: 0x000a, 0x1584: 0x000a, 0x1585: 0x000a,\n\t0x1586: 0x000a, 0x1587: 0x000a, 0x1588: 0x000a, 0x1589: 0x000a, 0x158a: 0x000a, 0x158b: 0x000a,\n\t0x158c: 0x000a, 0x158d: 0x000a, 0x158e: 0x000a, 0x158f: 0x000a, 0x1590: 0x000a, 0x1591: 0x000a,\n\t0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a,\n\t0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a,\n\t0x159e: 0x000a, 0x159f: 0x000a, 0x15a0: 0x000a, 0x15a1: 0x000a, 0x15a2: 0x000a, 0x15a3: 0x000a,\n\t0x15a4: 0x000a, 0x15a5: 0x000a, 0x15a6: 0x000a, 0x15a7: 0x000a, 0x15a8: 0x000a, 0x15a9: 0x000a,\n\t0x15aa: 0x000a, 0x15ab: 0x000a, 0x15ac: 0x000a, 0x15ad: 0x000a, 0x15ae: 0x000a, 0x15af: 0x000a,\n\t0x15b0: 0x000a, 0x15b1: 0x000a, 0x15b2: 0x000a, 0x15b3: 0x000a, 0x15b4: 0x000a, 0x15b5: 0x000a,\n\t0x15b6: 0x000a, 0x15b7: 0x000a, 0x15b8: 0x000a, 0x15b9: 0x000a, 0x15ba: 0x000a, 0x15bb: 0x000a,\n\t0x15bc: 0x000a, 0x15bd: 0x000a, 0x15be: 0x000a, 0x15bf: 0x000a,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x000a, 0x15c1: 0x000a, 0x15c2: 0x000a, 0x15c3: 0x000a, 0x15c4: 0x000a, 0x15c5: 0x000a,\n\t0x15c6: 0x000a, 0x15c7: 0x000a, 0x15c8: 0x000a, 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a,\n\t0x15cc: 0x000a, 0x15cd: 0x000a, 0x15ce: 0x000a, 0x15cf: 0x000a, 0x15d0: 0x000a, 0x15d1: 0x000a,\n\t0x15d2: 0x0003, 0x15d3: 0x0004, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a,\n\t0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a,\n\t0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a,\n\t0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a,\n\t0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a,\n\t0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a,\n\t0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a,\n\t0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a,\n\t0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x003a, 0x1609: 0x002a, 0x160a: 0x003a, 0x160b: 0x002a,\n\t0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a,\n\t0x1612: 0x000a, 0x1613: 0x000a, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a,\n\t0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a,\n\t0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a,\n\t0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x009a,\n\t0x162a: 0x008a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a,\n\t0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a,\n\t// Block 0x59, offset 0x1640\n\t0x167b: 0x000a,\n\t0x167c: 0x000a, 0x167d: 0x000a, 0x167e: 0x000a, 0x167f: 0x000a,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x000a, 0x1681: 0x000a, 0x1682: 0x000a, 0x1683: 0x000a, 0x1684: 0x000a, 0x1685: 0x000a,\n\t0x1686: 0x000a, 0x1687: 0x000a, 0x1688: 0x000a, 0x1689: 0x000a, 0x168a: 0x000a, 0x168b: 0x000a,\n\t0x168c: 0x000a, 0x168d: 0x000a, 0x168e: 0x000a, 0x168f: 0x000a, 0x1690: 0x000a, 0x1691: 0x000a,\n\t0x1692: 0x000a, 0x1693: 0x000a, 0x1694: 0x000a, 0x1696: 0x000a, 0x1697: 0x000a,\n\t0x1698: 0x000a, 0x1699: 0x000a, 0x169a: 0x000a, 0x169b: 0x000a, 0x169c: 0x000a, 0x169d: 0x000a,\n\t0x169e: 0x000a, 0x169f: 0x000a, 0x16a0: 0x000a, 0x16a1: 0x000a, 0x16a2: 0x000a, 0x16a3: 0x000a,\n\t0x16a4: 0x000a, 0x16a5: 0x000a, 0x16a6: 0x000a, 0x16a7: 0x000a, 0x16a8: 0x000a, 0x16a9: 0x000a,\n\t0x16aa: 0x000a, 0x16ab: 0x000a, 0x16ac: 0x000a, 0x16ad: 0x000a, 0x16ae: 0x000a, 0x16af: 0x000a,\n\t0x16b0: 0x000a, 0x16b1: 0x000a, 0x16b2: 0x000a, 0x16b3: 0x000a, 0x16b4: 0x000a, 0x16b5: 0x000a,\n\t0x16b6: 0x000a, 0x16b7: 0x000a, 0x16b8: 0x000a, 0x16b9: 0x000a, 0x16ba: 0x000a, 0x16bb: 0x000a,\n\t0x16bc: 0x000a, 0x16bd: 0x000a, 0x16be: 0x000a, 0x16bf: 0x000a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x000a, 0x16c1: 0x000a, 0x16c2: 0x000a, 0x16c3: 0x000a, 0x16c4: 0x000a, 0x16c5: 0x000a,\n\t0x16c6: 0x000a, 0x16c7: 0x000a, 0x16c8: 0x000a, 0x16c9: 0x000a, 0x16ca: 0x000a, 0x16cb: 0x000a,\n\t0x16cc: 0x000a, 0x16cd: 0x000a, 0x16ce: 0x000a, 0x16cf: 0x000a, 0x16d0: 0x000a, 0x16d1: 0x000a,\n\t0x16d2: 0x000a, 0x16d3: 0x000a, 0x16d4: 0x000a, 0x16d5: 0x000a, 0x16d6: 0x000a, 0x16d7: 0x000a,\n\t0x16d8: 0x000a, 0x16d9: 0x000a, 0x16da: 0x000a, 0x16db: 0x000a, 0x16dc: 0x000a, 0x16dd: 0x000a,\n\t0x16de: 0x000a, 0x16df: 0x000a, 0x16e0: 0x000a, 0x16e1: 0x000a, 0x16e2: 0x000a, 0x16e3: 0x000a,\n\t0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a, 0x16e7: 0x000a, 0x16e8: 0x000a, 0x16e9: 0x000a,\n\t0x16ea: 0x000a, 0x16eb: 0x000a, 0x16ec: 0x000a, 0x16ed: 0x000a, 0x16ee: 0x000a, 0x16ef: 0x000a,\n\t0x16f0: 0x000a, 0x16f1: 0x000a, 0x16f2: 0x000a, 0x16f3: 0x000a, 0x16f4: 0x000a, 0x16f5: 0x000a,\n\t0x16f6: 0x000a, 0x16f7: 0x000a, 0x16f8: 0x000a, 0x16f9: 0x000a, 0x16fa: 0x000a, 0x16fb: 0x000a,\n\t0x16fc: 0x000a, 0x16fd: 0x000a, 0x16fe: 0x000a,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a,\n\t0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a, 0x170b: 0x000a,\n\t0x170c: 0x000a, 0x170d: 0x000a, 0x170e: 0x000a, 0x170f: 0x000a, 0x1710: 0x000a, 0x1711: 0x000a,\n\t0x1712: 0x000a, 0x1713: 0x000a, 0x1714: 0x000a, 0x1715: 0x000a, 0x1716: 0x000a, 0x1717: 0x000a,\n\t0x1718: 0x000a, 0x1719: 0x000a, 0x171a: 0x000a, 0x171b: 0x000a, 0x171c: 0x000a, 0x171d: 0x000a,\n\t0x171e: 0x000a, 0x171f: 0x000a, 0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a,\n\t0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a,\n\t0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x000a, 0x1749: 0x000a, 0x174a: 0x000a,\n\t0x1760: 0x000a, 0x1761: 0x000a, 0x1762: 0x000a, 0x1763: 0x000a,\n\t0x1764: 0x000a, 0x1765: 0x000a, 0x1766: 0x000a, 0x1767: 0x000a, 0x1768: 0x000a, 0x1769: 0x000a,\n\t0x176a: 0x000a, 0x176b: 0x000a, 0x176c: 0x000a, 0x176d: 0x000a, 0x176e: 0x000a, 0x176f: 0x000a,\n\t0x1770: 0x000a, 0x1771: 0x000a, 0x1772: 0x000a, 0x1773: 0x000a, 0x1774: 0x000a, 0x1775: 0x000a,\n\t0x1776: 0x000a, 0x1777: 0x000a, 0x1778: 0x000a, 0x1779: 0x000a, 0x177a: 0x000a, 0x177b: 0x000a,\n\t0x177c: 0x000a, 0x177d: 0x000a, 0x177e: 0x000a, 0x177f: 0x000a,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x000a, 0x1781: 0x000a, 0x1782: 0x000a, 0x1783: 0x000a, 0x1784: 0x000a, 0x1785: 0x000a,\n\t0x1786: 0x000a, 0x1787: 0x000a, 0x1788: 0x0002, 0x1789: 0x0002, 0x178a: 0x0002, 0x178b: 0x0002,\n\t0x178c: 0x0002, 0x178d: 0x0002, 0x178e: 0x0002, 0x178f: 0x0002, 0x1790: 0x0002, 0x1791: 0x0002,\n\t0x1792: 0x0002, 0x1793: 0x0002, 0x1794: 0x0002, 0x1795: 0x0002, 0x1796: 0x0002, 0x1797: 0x0002,\n\t0x1798: 0x0002, 0x1799: 0x0002, 0x179a: 0x0002, 0x179b: 0x0002,\n\t// Block 0x5f, offset 0x17c0\n\t0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ec: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a,\n\t0x17f0: 0x000a, 0x17f1: 0x000a, 0x17f2: 0x000a, 0x17f3: 0x000a, 0x17f4: 0x000a, 0x17f5: 0x000a,\n\t0x17f6: 0x000a, 0x17f7: 0x000a, 0x17f8: 0x000a, 0x17f9: 0x000a, 0x17fa: 0x000a, 0x17fb: 0x000a,\n\t0x17fc: 0x000a, 0x17fd: 0x000a, 0x17fe: 0x000a, 0x17ff: 0x000a,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x000a, 0x1801: 0x000a, 0x1802: 0x000a, 0x1803: 0x000a, 0x1804: 0x000a, 0x1805: 0x000a,\n\t0x1806: 0x000a, 0x1807: 0x000a, 0x1808: 0x000a, 0x1809: 0x000a, 0x180a: 0x000a, 0x180b: 0x000a,\n\t0x180c: 0x000a, 0x180d: 0x000a, 0x180e: 0x000a, 0x180f: 0x000a, 0x1810: 0x000a, 0x1811: 0x000a,\n\t0x1812: 0x000a, 0x1813: 0x000a, 0x1814: 0x000a, 0x1815: 0x000a, 0x1816: 0x000a, 0x1817: 0x000a,\n\t0x1818: 0x000a, 0x1819: 0x000a, 0x181a: 0x000a, 0x181b: 0x000a, 0x181c: 0x000a, 0x181d: 0x000a,\n\t0x181e: 0x000a, 0x181f: 0x000a, 0x1820: 0x000a, 0x1821: 0x000a, 0x1822: 0x000a, 0x1823: 0x000a,\n\t0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x000a, 0x1829: 0x000a,\n\t0x182a: 0x000a, 0x182b: 0x000a, 0x182d: 0x000a, 0x182e: 0x000a, 0x182f: 0x000a,\n\t0x1830: 0x000a, 0x1831: 0x000a, 0x1832: 0x000a, 0x1833: 0x000a, 0x1834: 0x000a, 0x1835: 0x000a,\n\t0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a,\n\t0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a,\n\t// Block 0x61, offset 0x1840\n\t0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x000a,\n\t0x1846: 0x000a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a,\n\t0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a,\n\t0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a,\n\t0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a,\n\t0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a,\n\t0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x000a, 0x1867: 0x000a, 0x1868: 0x003a, 0x1869: 0x002a,\n\t0x186a: 0x003a, 0x186b: 0x002a, 0x186c: 0x003a, 0x186d: 0x002a, 0x186e: 0x003a, 0x186f: 0x002a,\n\t0x1870: 0x003a, 0x1871: 0x002a, 0x1872: 0x003a, 0x1873: 0x002a, 0x1874: 0x003a, 0x1875: 0x002a,\n\t0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a,\n\t0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a,\n\t// Block 0x62, offset 0x1880\n\t0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x000a, 0x1884: 0x000a, 0x1885: 0x009a,\n\t0x1886: 0x008a, 0x1887: 0x000a, 0x1888: 0x000a, 0x1889: 0x000a, 0x188a: 0x000a, 0x188b: 0x000a,\n\t0x188c: 0x000a, 0x188d: 0x000a, 0x188e: 0x000a, 0x188f: 0x000a, 0x1890: 0x000a, 0x1891: 0x000a,\n\t0x1892: 0x000a, 0x1893: 0x000a, 0x1894: 0x000a, 0x1895: 0x000a, 0x1896: 0x000a, 0x1897: 0x000a,\n\t0x1898: 0x000a, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a,\n\t0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a,\n\t0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x003a, 0x18a7: 0x002a, 0x18a8: 0x003a, 0x18a9: 0x002a,\n\t0x18aa: 0x003a, 0x18ab: 0x002a, 0x18ac: 0x003a, 0x18ad: 0x002a, 0x18ae: 0x003a, 0x18af: 0x002a,\n\t0x18b0: 0x000a, 0x18b1: 0x000a, 0x18b2: 0x000a, 0x18b3: 0x000a, 0x18b4: 0x000a, 0x18b5: 0x000a,\n\t0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a,\n\t0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a,\n\t// Block 0x63, offset 0x18c0\n\t0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x007a, 0x18c4: 0x006a, 0x18c5: 0x009a,\n\t0x18c6: 0x008a, 0x18c7: 0x00ba, 0x18c8: 0x00aa, 0x18c9: 0x009a, 0x18ca: 0x008a, 0x18cb: 0x007a,\n\t0x18cc: 0x006a, 0x18cd: 0x00da, 0x18ce: 0x002a, 0x18cf: 0x003a, 0x18d0: 0x00ca, 0x18d1: 0x009a,\n\t0x18d2: 0x008a, 0x18d3: 0x007a, 0x18d4: 0x006a, 0x18d5: 0x009a, 0x18d6: 0x008a, 0x18d7: 0x00ba,\n\t0x18d8: 0x00aa, 0x18d9: 0x000a, 0x18da: 0x000a, 0x18db: 0x000a, 0x18dc: 0x000a, 0x18dd: 0x000a,\n\t0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a,\n\t0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x000a, 0x18e7: 0x000a, 0x18e8: 0x000a, 0x18e9: 0x000a,\n\t0x18ea: 0x000a, 0x18eb: 0x000a, 0x18ec: 0x000a, 0x18ed: 0x000a, 0x18ee: 0x000a, 0x18ef: 0x000a,\n\t0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a,\n\t0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a,\n\t0x18fc: 0x000a, 0x18fd: 0x000a, 0x18fe: 0x000a, 0x18ff: 0x000a,\n\t// Block 0x64, offset 0x1900\n\t0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x000a, 0x1904: 0x000a, 0x1905: 0x000a,\n\t0x1906: 0x000a, 0x1907: 0x000a, 0x1908: 0x000a, 0x1909: 0x000a, 0x190a: 0x000a, 0x190b: 0x000a,\n\t0x190c: 0x000a, 0x190d: 0x000a, 0x190e: 0x000a, 0x190f: 0x000a, 0x1910: 0x000a, 0x1911: 0x000a,\n\t0x1912: 0x000a, 0x1913: 0x000a, 0x1914: 0x000a, 0x1915: 0x000a, 0x1916: 0x000a, 0x1917: 0x000a,\n\t0x1918: 0x003a, 0x1919: 0x002a, 0x191a: 0x003a, 0x191b: 0x002a, 0x191c: 0x000a, 0x191d: 0x000a,\n\t0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a,\n\t0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a,\n\t0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a,\n\t0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a, 0x1934: 0x000a, 0x1935: 0x000a,\n\t0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a,\n\t0x193c: 0x003a, 0x193d: 0x002a, 0x193e: 0x000a, 0x193f: 0x000a,\n\t// Block 0x65, offset 0x1940\n\t0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a,\n\t0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a,\n\t0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a,\n\t0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a, 0x1956: 0x000a, 0x1957: 0x000a,\n\t0x1958: 0x000a, 0x1959: 0x000a, 0x195a: 0x000a, 0x195b: 0x000a, 0x195c: 0x000a, 0x195d: 0x000a,\n\t0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a,\n\t0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a,\n\t0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a,\n\t0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a,\n\t0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a,\n\t0x197c: 0x000a, 0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a,\n\t// Block 0x66, offset 0x1980\n\t0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a,\n\t0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x1989: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a,\n\t0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a,\n\t0x1992: 0x000a, 0x1993: 0x000a, 0x1994: 0x000a, 0x1995: 0x000a,\n\t0x1998: 0x000a, 0x1999: 0x000a, 0x199a: 0x000a, 0x199b: 0x000a, 0x199c: 0x000a, 0x199d: 0x000a,\n\t0x199e: 0x000a, 0x199f: 0x000a, 0x19a0: 0x000a, 0x19a1: 0x000a, 0x19a2: 0x000a, 0x19a3: 0x000a,\n\t0x19a4: 0x000a, 0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a,\n\t0x19aa: 0x000a, 0x19ab: 0x000a, 0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a,\n\t0x19b0: 0x000a, 0x19b1: 0x000a, 0x19b2: 0x000a, 0x19b3: 0x000a, 0x19b4: 0x000a, 0x19b5: 0x000a,\n\t0x19b6: 0x000a, 0x19b7: 0x000a, 0x19b8: 0x000a, 0x19b9: 0x000a,\n\t0x19bd: 0x000a, 0x19be: 0x000a, 0x19bf: 0x000a,\n\t// Block 0x67, offset 0x19c0\n\t0x19c0: 0x000a, 0x19c1: 0x000a, 0x19c2: 0x000a, 0x19c3: 0x000a, 0x19c4: 0x000a, 0x19c5: 0x000a,\n\t0x19c6: 0x000a, 0x19c7: 0x000a, 0x19c8: 0x000a, 0x19ca: 0x000a, 0x19cb: 0x000a,\n\t0x19cc: 0x000a, 0x19cd: 0x000a, 0x19ce: 0x000a, 0x19cf: 0x000a, 0x19d0: 0x000a, 0x19d1: 0x000a,\n\t0x19ec: 0x000a, 0x19ed: 0x000a, 0x19ee: 0x000a, 0x19ef: 0x000a,\n\t// Block 0x68, offset 0x1a00\n\t0x1a25: 0x000a, 0x1a26: 0x000a, 0x1a27: 0x000a, 0x1a28: 0x000a, 0x1a29: 0x000a,\n\t0x1a2a: 0x000a, 0x1a2f: 0x000c,\n\t0x1a30: 0x000c, 0x1a31: 0x000c,\n\t0x1a39: 0x000a, 0x1a3a: 0x000a, 0x1a3b: 0x000a,\n\t0x1a3c: 0x000a, 0x1a3d: 0x000a, 0x1a3e: 0x000a, 0x1a3f: 0x000a,\n\t// Block 0x69, offset 0x1a40\n\t0x1a7f: 0x000c,\n\t// Block 0x6a, offset 0x1a80\n\t0x1aa0: 0x000c, 0x1aa1: 0x000c, 0x1aa2: 0x000c, 0x1aa3: 0x000c,\n\t0x1aa4: 0x000c, 0x1aa5: 0x000c, 0x1aa6: 0x000c, 0x1aa7: 0x000c, 0x1aa8: 0x000c, 0x1aa9: 0x000c,\n\t0x1aaa: 0x000c, 0x1aab: 0x000c, 0x1aac: 0x000c, 0x1aad: 0x000c, 0x1aae: 0x000c, 0x1aaf: 0x000c,\n\t0x1ab0: 0x000c, 0x1ab1: 0x000c, 0x1ab2: 0x000c, 0x1ab3: 0x000c, 0x1ab4: 0x000c, 0x1ab5: 0x000c,\n\t0x1ab6: 0x000c, 0x1ab7: 0x000c, 0x1ab8: 0x000c, 0x1ab9: 0x000c, 0x1aba: 0x000c, 0x1abb: 0x000c,\n\t0x1abc: 0x000c, 0x1abd: 0x000c, 0x1abe: 0x000c, 0x1abf: 0x000c,\n\t// Block 0x6b, offset 0x1ac0\n\t0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a,\n\t0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a,\n\t0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a, 0x1acf: 0x000a, 0x1ad0: 0x000a, 0x1ad1: 0x000a,\n\t0x1ad2: 0x000a, 0x1ad3: 0x000a, 0x1ad4: 0x000a, 0x1ad5: 0x000a, 0x1ad6: 0x000a, 0x1ad7: 0x000a,\n\t0x1ad8: 0x000a, 0x1ad9: 0x000a, 0x1ada: 0x000a, 0x1adb: 0x000a, 0x1adc: 0x000a, 0x1add: 0x000a,\n\t0x1ade: 0x000a, 0x1adf: 0x000a, 0x1ae0: 0x000a, 0x1ae1: 0x000a, 0x1ae2: 0x003a, 0x1ae3: 0x002a,\n\t0x1ae4: 0x003a, 0x1ae5: 0x002a, 0x1ae6: 0x003a, 0x1ae7: 0x002a, 0x1ae8: 0x003a, 0x1ae9: 0x002a,\n\t0x1aea: 0x000a, 0x1aeb: 0x000a, 0x1aec: 0x000a, 0x1aed: 0x000a, 0x1aee: 0x000a, 0x1aef: 0x000a,\n\t0x1af0: 0x000a, 0x1af1: 0x000a, 0x1af2: 0x000a, 0x1af3: 0x000a, 0x1af4: 0x000a, 0x1af5: 0x000a,\n\t0x1af6: 0x000a, 0x1af7: 0x000a, 0x1af8: 0x000a, 0x1af9: 0x000a, 0x1afa: 0x000a, 0x1afb: 0x000a,\n\t0x1afc: 0x000a, 0x1afd: 0x000a, 0x1afe: 0x000a, 0x1aff: 0x000a,\n\t// Block 0x6c, offset 0x1b00\n\t0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a,\n\t// Block 0x6d, offset 0x1b40\n\t0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a,\n\t0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a,\n\t0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a,\n\t0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a,\n\t0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a,\n\t0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a,\n\t0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a,\n\t0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a,\n\t0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a, 0x1b74: 0x000a, 0x1b75: 0x000a,\n\t0x1b76: 0x000a, 0x1b77: 0x000a, 0x1b78: 0x000a, 0x1b79: 0x000a, 0x1b7a: 0x000a, 0x1b7b: 0x000a,\n\t0x1b7c: 0x000a, 0x1b7d: 0x000a, 0x1b7e: 0x000a, 0x1b7f: 0x000a,\n\t// Block 0x6e, offset 0x1b80\n\t0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a,\n\t0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a,\n\t0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a,\n\t0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a, 0x1b96: 0x000a, 0x1b97: 0x000a,\n\t0x1b98: 0x000a, 0x1b99: 0x000a, 0x1b9a: 0x000a, 0x1b9b: 0x000a, 0x1b9c: 0x000a, 0x1b9d: 0x000a,\n\t0x1b9e: 0x000a, 0x1b9f: 0x000a, 0x1ba0: 0x000a, 0x1ba1: 0x000a, 0x1ba2: 0x000a, 0x1ba3: 0x000a,\n\t0x1ba4: 0x000a, 0x1ba5: 0x000a, 0x1ba6: 0x000a, 0x1ba7: 0x000a, 0x1ba8: 0x000a, 0x1ba9: 0x000a,\n\t0x1baa: 0x000a, 0x1bab: 0x000a, 0x1bac: 0x000a, 0x1bad: 0x000a, 0x1bae: 0x000a, 0x1baf: 0x000a,\n\t0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a,\n\t// Block 0x6f, offset 0x1bc0\n\t0x1bc0: 0x000a, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a, 0x1bc5: 0x000a,\n\t0x1bc6: 0x000a, 0x1bc7: 0x000a, 0x1bc8: 0x000a, 0x1bc9: 0x000a, 0x1bca: 0x000a, 0x1bcb: 0x000a,\n\t0x1bcc: 0x000a, 0x1bcd: 0x000a, 0x1bce: 0x000a, 0x1bcf: 0x000a, 0x1bd0: 0x000a, 0x1bd1: 0x000a,\n\t0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x000a, 0x1bd5: 0x000a,\n\t0x1bf0: 0x000a, 0x1bf1: 0x000a, 0x1bf2: 0x000a, 0x1bf3: 0x000a, 0x1bf4: 0x000a, 0x1bf5: 0x000a,\n\t0x1bf6: 0x000a, 0x1bf7: 0x000a, 0x1bf8: 0x000a, 0x1bf9: 0x000a, 0x1bfa: 0x000a, 0x1bfb: 0x000a,\n\t// Block 0x70, offset 0x1c00\n\t0x1c00: 0x0009, 0x1c01: 0x000a, 0x1c02: 0x000a, 0x1c03: 0x000a, 0x1c04: 0x000a,\n\t0x1c08: 0x003a, 0x1c09: 0x002a, 0x1c0a: 0x003a, 0x1c0b: 0x002a,\n\t0x1c0c: 0x003a, 0x1c0d: 0x002a, 0x1c0e: 0x003a, 0x1c0f: 0x002a, 0x1c10: 0x003a, 0x1c11: 0x002a,\n\t0x1c12: 0x000a, 0x1c13: 0x000a, 0x1c14: 0x003a, 0x1c15: 0x002a, 0x1c16: 0x003a, 0x1c17: 0x002a,\n\t0x1c18: 0x003a, 0x1c19: 0x002a, 0x1c1a: 0x003a, 0x1c1b: 0x002a, 0x1c1c: 0x000a, 0x1c1d: 0x000a,\n\t0x1c1e: 0x000a, 0x1c1f: 0x000a, 0x1c20: 0x000a,\n\t0x1c2a: 0x000c, 0x1c2b: 0x000c, 0x1c2c: 0x000c, 0x1c2d: 0x000c,\n\t0x1c30: 0x000a,\n\t0x1c36: 0x000a, 0x1c37: 0x000a,\n\t0x1c3d: 0x000a, 0x1c3e: 0x000a, 0x1c3f: 0x000a,\n\t// Block 0x71, offset 0x1c40\n\t0x1c59: 0x000c, 0x1c5a: 0x000c, 0x1c5b: 0x000a, 0x1c5c: 0x000a,\n\t0x1c60: 0x000a,\n\t// Block 0x72, offset 0x1c80\n\t0x1cbb: 0x000a,\n\t// Block 0x73, offset 0x1cc0\n\t0x1cc0: 0x000a, 0x1cc1: 0x000a, 0x1cc2: 0x000a, 0x1cc3: 0x000a, 0x1cc4: 0x000a, 0x1cc5: 0x000a,\n\t0x1cc6: 0x000a, 0x1cc7: 0x000a, 0x1cc8: 0x000a, 0x1cc9: 0x000a, 0x1cca: 0x000a, 0x1ccb: 0x000a,\n\t0x1ccc: 0x000a, 0x1ccd: 0x000a, 0x1cce: 0x000a, 0x1ccf: 0x000a, 0x1cd0: 0x000a, 0x1cd1: 0x000a,\n\t0x1cd2: 0x000a, 0x1cd3: 0x000a, 0x1cd4: 0x000a, 0x1cd5: 0x000a, 0x1cd6: 0x000a, 0x1cd7: 0x000a,\n\t0x1cd8: 0x000a, 0x1cd9: 0x000a, 0x1cda: 0x000a, 0x1cdb: 0x000a, 0x1cdc: 0x000a, 0x1cdd: 0x000a,\n\t0x1cde: 0x000a, 0x1cdf: 0x000a, 0x1ce0: 0x000a, 0x1ce1: 0x000a, 0x1ce2: 0x000a, 0x1ce3: 0x000a,\n\t// Block 0x74, offset 0x1d00\n\t0x1d1d: 0x000a,\n\t0x1d1e: 0x000a,\n\t// Block 0x75, offset 0x1d40\n\t0x1d50: 0x000a, 0x1d51: 0x000a,\n\t0x1d52: 0x000a, 0x1d53: 0x000a, 0x1d54: 0x000a, 0x1d55: 0x000a, 0x1d56: 0x000a, 0x1d57: 0x000a,\n\t0x1d58: 0x000a, 0x1d59: 0x000a, 0x1d5a: 0x000a, 0x1d5b: 0x000a, 0x1d5c: 0x000a, 0x1d5d: 0x000a,\n\t0x1d5e: 0x000a, 0x1d5f: 0x000a,\n\t0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a,\n\t// Block 0x76, offset 0x1d80\n\t0x1db1: 0x000a, 0x1db2: 0x000a, 0x1db3: 0x000a, 0x1db4: 0x000a, 0x1db5: 0x000a,\n\t0x1db6: 0x000a, 0x1db7: 0x000a, 0x1db8: 0x000a, 0x1db9: 0x000a, 0x1dba: 0x000a, 0x1dbb: 0x000a,\n\t0x1dbc: 0x000a, 0x1dbd: 0x000a, 0x1dbe: 0x000a, 0x1dbf: 0x000a,\n\t// Block 0x77, offset 0x1dc0\n\t0x1dcc: 0x000a, 0x1dcd: 0x000a, 0x1dce: 0x000a, 0x1dcf: 0x000a,\n\t// Block 0x78, offset 0x1e00\n\t0x1e37: 0x000a, 0x1e38: 0x000a, 0x1e39: 0x000a, 0x1e3a: 0x000a,\n\t// Block 0x79, offset 0x1e40\n\t0x1e5e: 0x000a, 0x1e5f: 0x000a,\n\t0x1e7f: 0x000a,\n\t// Block 0x7a, offset 0x1e80\n\t0x1e90: 0x000a, 0x1e91: 0x000a,\n\t0x1e92: 0x000a, 0x1e93: 0x000a, 0x1e94: 0x000a, 0x1e95: 0x000a, 0x1e96: 0x000a, 0x1e97: 0x000a,\n\t0x1e98: 0x000a, 0x1e99: 0x000a, 0x1e9a: 0x000a, 0x1e9b: 0x000a, 0x1e9c: 0x000a, 0x1e9d: 0x000a,\n\t0x1e9e: 0x000a, 0x1e9f: 0x000a, 0x1ea0: 0x000a, 0x1ea1: 0x000a, 0x1ea2: 0x000a, 0x1ea3: 0x000a,\n\t0x1ea4: 0x000a, 0x1ea5: 0x000a, 0x1ea6: 0x000a, 0x1ea7: 0x000a, 0x1ea8: 0x000a, 0x1ea9: 0x000a,\n\t0x1eaa: 0x000a, 0x1eab: 0x000a, 0x1eac: 0x000a, 0x1ead: 0x000a, 0x1eae: 0x000a, 0x1eaf: 0x000a,\n\t0x1eb0: 0x000a, 0x1eb1: 0x000a, 0x1eb2: 0x000a, 0x1eb3: 0x000a, 0x1eb4: 0x000a, 0x1eb5: 0x000a,\n\t0x1eb6: 0x000a, 0x1eb7: 0x000a, 0x1eb8: 0x000a, 0x1eb9: 0x000a, 0x1eba: 0x000a, 0x1ebb: 0x000a,\n\t0x1ebc: 0x000a, 0x1ebd: 0x000a, 0x1ebe: 0x000a, 0x1ebf: 0x000a,\n\t// Block 0x7b, offset 0x1ec0\n\t0x1ec0: 0x000a, 0x1ec1: 0x000a, 0x1ec2: 0x000a, 0x1ec3: 0x000a, 0x1ec4: 0x000a, 0x1ec5: 0x000a,\n\t0x1ec6: 0x000a,\n\t// Block 0x7c, offset 0x1f00\n\t0x1f0d: 0x000a, 0x1f0e: 0x000a, 0x1f0f: 0x000a,\n\t// Block 0x7d, offset 0x1f40\n\t0x1f6f: 0x000c,\n\t0x1f70: 0x000c, 0x1f71: 0x000c, 0x1f72: 0x000c, 0x1f73: 0x000a, 0x1f74: 0x000c, 0x1f75: 0x000c,\n\t0x1f76: 0x000c, 0x1f77: 0x000c, 0x1f78: 0x000c, 0x1f79: 0x000c, 0x1f7a: 0x000c, 0x1f7b: 0x000c,\n\t0x1f7c: 0x000c, 0x1f7d: 0x000c, 0x1f7e: 0x000a, 0x1f7f: 0x000a,\n\t// Block 0x7e, offset 0x1f80\n\t0x1f9e: 0x000c, 0x1f9f: 0x000c,\n\t// Block 0x7f, offset 0x1fc0\n\t0x1ff0: 0x000c, 0x1ff1: 0x000c,\n\t// Block 0x80, offset 0x2000\n\t0x2000: 0x000a, 0x2001: 0x000a, 0x2002: 0x000a, 0x2003: 0x000a, 0x2004: 0x000a, 0x2005: 0x000a,\n\t0x2006: 0x000a, 0x2007: 0x000a, 0x2008: 0x000a, 0x2009: 0x000a, 0x200a: 0x000a, 0x200b: 0x000a,\n\t0x200c: 0x000a, 0x200d: 0x000a, 0x200e: 0x000a, 0x200f: 0x000a, 0x2010: 0x000a, 0x2011: 0x000a,\n\t0x2012: 0x000a, 0x2013: 0x000a, 0x2014: 0x000a, 0x2015: 0x000a, 0x2016: 0x000a, 0x2017: 0x000a,\n\t0x2018: 0x000a, 0x2019: 0x000a, 0x201a: 0x000a, 0x201b: 0x000a, 0x201c: 0x000a, 0x201d: 0x000a,\n\t0x201e: 0x000a, 0x201f: 0x000a, 0x2020: 0x000a, 0x2021: 0x000a,\n\t// Block 0x81, offset 0x2040\n\t0x2048: 0x000a,\n\t// Block 0x82, offset 0x2080\n\t0x2082: 0x000c,\n\t0x2086: 0x000c, 0x208b: 0x000c,\n\t0x20a5: 0x000c, 0x20a6: 0x000c, 0x20a8: 0x000a, 0x20a9: 0x000a,\n\t0x20aa: 0x000a, 0x20ab: 0x000a,\n\t0x20b8: 0x0004, 0x20b9: 0x0004,\n\t// Block 0x83, offset 0x20c0\n\t0x20f4: 0x000a, 0x20f5: 0x000a,\n\t0x20f6: 0x000a, 0x20f7: 0x000a,\n\t// Block 0x84, offset 0x2100\n\t0x2104: 0x000c, 0x2105: 0x000c,\n\t0x2120: 0x000c, 0x2121: 0x000c, 0x2122: 0x000c, 0x2123: 0x000c,\n\t0x2124: 0x000c, 0x2125: 0x000c, 0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c,\n\t0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c, 0x212e: 0x000c, 0x212f: 0x000c,\n\t0x2130: 0x000c, 0x2131: 0x000c,\n\t// Block 0x85, offset 0x2140\n\t0x2166: 0x000c, 0x2167: 0x000c, 0x2168: 0x000c, 0x2169: 0x000c,\n\t0x216a: 0x000c, 0x216b: 0x000c, 0x216c: 0x000c, 0x216d: 0x000c,\n\t// Block 0x86, offset 0x2180\n\t0x2187: 0x000c, 0x2188: 0x000c, 0x2189: 0x000c, 0x218a: 0x000c, 0x218b: 0x000c,\n\t0x218c: 0x000c, 0x218d: 0x000c, 0x218e: 0x000c, 0x218f: 0x000c, 0x2190: 0x000c, 0x2191: 0x000c,\n\t// Block 0x87, offset 0x21c0\n\t0x21c0: 0x000c, 0x21c1: 0x000c, 0x21c2: 0x000c,\n\t0x21f3: 0x000c,\n\t0x21f6: 0x000c, 0x21f7: 0x000c, 0x21f8: 0x000c, 0x21f9: 0x000c,\n\t0x21fc: 0x000c,\n\t// Block 0x88, offset 0x2200\n\t0x2225: 0x000c,\n\t// Block 0x89, offset 0x2240\n\t0x2269: 0x000c,\n\t0x226a: 0x000c, 0x226b: 0x000c, 0x226c: 0x000c, 0x226d: 0x000c, 0x226e: 0x000c,\n\t0x2271: 0x000c, 0x2272: 0x000c, 0x2275: 0x000c,\n\t0x2276: 0x000c,\n\t// Block 0x8a, offset 0x2280\n\t0x2283: 0x000c,\n\t0x228c: 0x000c,\n\t0x22bc: 0x000c,\n\t// Block 0x8b, offset 0x22c0\n\t0x22f0: 0x000c, 0x22f2: 0x000c, 0x22f3: 0x000c, 0x22f4: 0x000c,\n\t0x22f7: 0x000c, 0x22f8: 0x000c,\n\t0x22fe: 0x000c, 0x22ff: 0x000c,\n\t// Block 0x8c, offset 0x2300\n\t0x2301: 0x000c,\n\t0x232c: 0x000c, 0x232d: 0x000c,\n\t0x2336: 0x000c,\n\t// Block 0x8d, offset 0x2340\n\t0x2365: 0x000c, 0x2368: 0x000c,\n\t0x236d: 0x000c,\n\t// Block 0x8e, offset 0x2380\n\t0x239d: 0x0001,\n\t0x239e: 0x000c, 0x239f: 0x0001, 0x23a0: 0x0001, 0x23a1: 0x0001, 0x23a2: 0x0001, 0x23a3: 0x0001,\n\t0x23a4: 0x0001, 0x23a5: 0x0001, 0x23a6: 0x0001, 0x23a7: 0x0001, 0x23a8: 0x0001, 0x23a9: 0x0003,\n\t0x23aa: 0x0001, 0x23ab: 0x0001, 0x23ac: 0x0001, 0x23ad: 0x0001, 0x23ae: 0x0001, 0x23af: 0x0001,\n\t0x23b0: 0x0001, 0x23b1: 0x0001, 0x23b2: 0x0001, 0x23b3: 0x0001, 0x23b4: 0x0001, 0x23b5: 0x0001,\n\t0x23b6: 0x0001, 0x23b7: 0x0001, 0x23b8: 0x0001, 0x23b9: 0x0001, 0x23ba: 0x0001, 0x23bb: 0x0001,\n\t0x23bc: 0x0001, 0x23bd: 0x0001, 0x23be: 0x0001, 0x23bf: 0x0001,\n\t// Block 0x8f, offset 0x23c0\n\t0x23c0: 0x0001, 0x23c1: 0x0001, 0x23c2: 0x0001, 0x23c3: 0x0001, 0x23c4: 0x0001, 0x23c5: 0x0001,\n\t0x23c6: 0x0001, 0x23c7: 0x0001, 0x23c8: 0x0001, 0x23c9: 0x0001, 0x23ca: 0x0001, 0x23cb: 0x0001,\n\t0x23cc: 0x0001, 0x23cd: 0x0001, 0x23ce: 0x0001, 0x23cf: 0x0001, 0x23d0: 0x000d, 0x23d1: 0x000d,\n\t0x23d2: 0x000d, 0x23d3: 0x000d, 0x23d4: 0x000d, 0x23d5: 0x000d, 0x23d6: 0x000d, 0x23d7: 0x000d,\n\t0x23d8: 0x000d, 0x23d9: 0x000d, 0x23da: 0x000d, 0x23db: 0x000d, 0x23dc: 0x000d, 0x23dd: 0x000d,\n\t0x23de: 0x000d, 0x23df: 0x000d, 0x23e0: 0x000d, 0x23e1: 0x000d, 0x23e2: 0x000d, 0x23e3: 0x000d,\n\t0x23e4: 0x000d, 0x23e5: 0x000d, 0x23e6: 0x000d, 0x23e7: 0x000d, 0x23e8: 0x000d, 0x23e9: 0x000d,\n\t0x23ea: 0x000d, 0x23eb: 0x000d, 0x23ec: 0x000d, 0x23ed: 0x000d, 0x23ee: 0x000d, 0x23ef: 0x000d,\n\t0x23f0: 0x000d, 0x23f1: 0x000d, 0x23f2: 0x000d, 0x23f3: 0x000d, 0x23f4: 0x000d, 0x23f5: 0x000d,\n\t0x23f6: 0x000d, 0x23f7: 0x000d, 0x23f8: 0x000d, 0x23f9: 0x000d, 0x23fa: 0x000d, 0x23fb: 0x000d,\n\t0x23fc: 0x000d, 0x23fd: 0x000d, 0x23fe: 0x000d, 0x23ff: 0x000d,\n\t// Block 0x90, offset 0x2400\n\t0x2400: 0x000d, 0x2401: 0x000d, 0x2402: 0x000d, 0x2403: 0x000d, 0x2404: 0x000d, 0x2405: 0x000d,\n\t0x2406: 0x000d, 0x2407: 0x000d, 0x2408: 0x000d, 0x2409: 0x000d, 0x240a: 0x000d, 0x240b: 0x000d,\n\t0x240c: 0x000d, 0x240d: 0x000d, 0x240e: 0x000d, 0x240f: 0x000d, 0x2410: 0x000d, 0x2411: 0x000d,\n\t0x2412: 0x000d, 0x2413: 0x000d, 0x2414: 0x000d, 0x2415: 0x000d, 0x2416: 0x000d, 0x2417: 0x000d,\n\t0x2418: 0x000d, 0x2419: 0x000d, 0x241a: 0x000d, 0x241b: 0x000d, 0x241c: 0x000d, 0x241d: 0x000d,\n\t0x241e: 0x000d, 0x241f: 0x000d, 0x2420: 0x000d, 0x2421: 0x000d, 0x2422: 0x000d, 0x2423: 0x000d,\n\t0x2424: 0x000d, 0x2425: 0x000d, 0x2426: 0x000d, 0x2427: 0x000d, 0x2428: 0x000d, 0x2429: 0x000d,\n\t0x242a: 0x000d, 0x242b: 0x000d, 0x242c: 0x000d, 0x242d: 0x000d, 0x242e: 0x000d, 0x242f: 0x000d,\n\t0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d,\n\t0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d,\n\t0x243c: 0x000d, 0x243d: 0x000d, 0x243e: 0x000a, 0x243f: 0x000a,\n\t// Block 0x91, offset 0x2440\n\t0x2440: 0x000d, 0x2441: 0x000d, 0x2442: 0x000d, 0x2443: 0x000d, 0x2444: 0x000d, 0x2445: 0x000d,\n\t0x2446: 0x000d, 0x2447: 0x000d, 0x2448: 0x000d, 0x2449: 0x000d, 0x244a: 0x000d, 0x244b: 0x000d,\n\t0x244c: 0x000d, 0x244d: 0x000d, 0x244e: 0x000d, 0x244f: 0x000d, 0x2450: 0x000b, 0x2451: 0x000b,\n\t0x2452: 0x000b, 0x2453: 0x000b, 0x2454: 0x000b, 0x2455: 0x000b, 0x2456: 0x000b, 0x2457: 0x000b,\n\t0x2458: 0x000b, 0x2459: 0x000b, 0x245a: 0x000b, 0x245b: 0x000b, 0x245c: 0x000b, 0x245d: 0x000b,\n\t0x245e: 0x000b, 0x245f: 0x000b, 0x2460: 0x000b, 0x2461: 0x000b, 0x2462: 0x000b, 0x2463: 0x000b,\n\t0x2464: 0x000b, 0x2465: 0x000b, 0x2466: 0x000b, 0x2467: 0x000b, 0x2468: 0x000b, 0x2469: 0x000b,\n\t0x246a: 0x000b, 0x246b: 0x000b, 0x246c: 0x000b, 0x246d: 0x000b, 0x246e: 0x000b, 0x246f: 0x000b,\n\t0x2470: 0x000d, 0x2471: 0x000d, 0x2472: 0x000d, 0x2473: 0x000d, 0x2474: 0x000d, 0x2475: 0x000d,\n\t0x2476: 0x000d, 0x2477: 0x000d, 0x2478: 0x000d, 0x2479: 0x000d, 0x247a: 0x000d, 0x247b: 0x000d,\n\t0x247c: 0x000d, 0x247d: 0x000a, 0x247e: 0x000d, 0x247f: 0x000d,\n\t// Block 0x92, offset 0x2480\n\t0x2480: 0x000c, 0x2481: 0x000c, 0x2482: 0x000c, 0x2483: 0x000c, 0x2484: 0x000c, 0x2485: 0x000c,\n\t0x2486: 0x000c, 0x2487: 0x000c, 0x2488: 0x000c, 0x2489: 0x000c, 0x248a: 0x000c, 0x248b: 0x000c,\n\t0x248c: 0x000c, 0x248d: 0x000c, 0x248e: 0x000c, 0x248f: 0x000c, 0x2490: 0x000a, 0x2491: 0x000a,\n\t0x2492: 0x000a, 0x2493: 0x000a, 0x2494: 0x000a, 0x2495: 0x000a, 0x2496: 0x000a, 0x2497: 0x000a,\n\t0x2498: 0x000a, 0x2499: 0x000a,\n\t0x24a0: 0x000c, 0x24a1: 0x000c, 0x24a2: 0x000c, 0x24a3: 0x000c,\n\t0x24a4: 0x000c, 0x24a5: 0x000c, 0x24a6: 0x000c, 0x24a7: 0x000c, 0x24a8: 0x000c, 0x24a9: 0x000c,\n\t0x24aa: 0x000c, 0x24ab: 0x000c, 0x24ac: 0x000c, 0x24ad: 0x000c, 0x24ae: 0x000c, 0x24af: 0x000c,\n\t0x24b0: 0x000a, 0x24b1: 0x000a, 0x24b2: 0x000a, 0x24b3: 0x000a, 0x24b4: 0x000a, 0x24b5: 0x000a,\n\t0x24b6: 0x000a, 0x24b7: 0x000a, 0x24b8: 0x000a, 0x24b9: 0x000a, 0x24ba: 0x000a, 0x24bb: 0x000a,\n\t0x24bc: 0x000a, 0x24bd: 0x000a, 0x24be: 0x000a, 0x24bf: 0x000a,\n\t// Block 0x93, offset 0x24c0\n\t0x24c0: 0x000a, 0x24c1: 0x000a, 0x24c2: 0x000a, 0x24c3: 0x000a, 0x24c4: 0x000a, 0x24c5: 0x000a,\n\t0x24c6: 0x000a, 0x24c7: 0x000a, 0x24c8: 0x000a, 0x24c9: 0x000a, 0x24ca: 0x000a, 0x24cb: 0x000a,\n\t0x24cc: 0x000a, 0x24cd: 0x000a, 0x24ce: 0x000a, 0x24cf: 0x000a, 0x24d0: 0x0006, 0x24d1: 0x000a,\n\t0x24d2: 0x0006, 0x24d4: 0x000a, 0x24d5: 0x0006, 0x24d6: 0x000a, 0x24d7: 0x000a,\n\t0x24d8: 0x000a, 0x24d9: 0x009a, 0x24da: 0x008a, 0x24db: 0x007a, 0x24dc: 0x006a, 0x24dd: 0x009a,\n\t0x24de: 0x008a, 0x24df: 0x0004, 0x24e0: 0x000a, 0x24e1: 0x000a, 0x24e2: 0x0003, 0x24e3: 0x0003,\n\t0x24e4: 0x000a, 0x24e5: 0x000a, 0x24e6: 0x000a, 0x24e8: 0x000a, 0x24e9: 0x0004,\n\t0x24ea: 0x0004, 0x24eb: 0x000a,\n\t0x24f0: 0x000d, 0x24f1: 0x000d, 0x24f2: 0x000d, 0x24f3: 0x000d, 0x24f4: 0x000d, 0x24f5: 0x000d,\n\t0x24f6: 0x000d, 0x24f7: 0x000d, 0x24f8: 0x000d, 0x24f9: 0x000d, 0x24fa: 0x000d, 0x24fb: 0x000d,\n\t0x24fc: 0x000d, 0x24fd: 0x000d, 0x24fe: 0x000d, 0x24ff: 0x000d,\n\t// Block 0x94, offset 0x2500\n\t0x2500: 0x000d, 0x2501: 0x000d, 0x2502: 0x000d, 0x2503: 0x000d, 0x2504: 0x000d, 0x2505: 0x000d,\n\t0x2506: 0x000d, 0x2507: 0x000d, 0x2508: 0x000d, 0x2509: 0x000d, 0x250a: 0x000d, 0x250b: 0x000d,\n\t0x250c: 0x000d, 0x250d: 0x000d, 0x250e: 0x000d, 0x250f: 0x000d, 0x2510: 0x000d, 0x2511: 0x000d,\n\t0x2512: 0x000d, 0x2513: 0x000d, 0x2514: 0x000d, 0x2515: 0x000d, 0x2516: 0x000d, 0x2517: 0x000d,\n\t0x2518: 0x000d, 0x2519: 0x000d, 0x251a: 0x000d, 0x251b: 0x000d, 0x251c: 0x000d, 0x251d: 0x000d,\n\t0x251e: 0x000d, 0x251f: 0x000d, 0x2520: 0x000d, 0x2521: 0x000d, 0x2522: 0x000d, 0x2523: 0x000d,\n\t0x2524: 0x000d, 0x2525: 0x000d, 0x2526: 0x000d, 0x2527: 0x000d, 0x2528: 0x000d, 0x2529: 0x000d,\n\t0x252a: 0x000d, 0x252b: 0x000d, 0x252c: 0x000d, 0x252d: 0x000d, 0x252e: 0x000d, 0x252f: 0x000d,\n\t0x2530: 0x000d, 0x2531: 0x000d, 0x2532: 0x000d, 0x2533: 0x000d, 0x2534: 0x000d, 0x2535: 0x000d,\n\t0x2536: 0x000d, 0x2537: 0x000d, 0x2538: 0x000d, 0x2539: 0x000d, 0x253a: 0x000d, 0x253b: 0x000d,\n\t0x253c: 0x000d, 0x253d: 0x000d, 0x253e: 0x000d, 0x253f: 0x000b,\n\t// Block 0x95, offset 0x2540\n\t0x2541: 0x000a, 0x2542: 0x000a, 0x2543: 0x0004, 0x2544: 0x0004, 0x2545: 0x0004,\n\t0x2546: 0x000a, 0x2547: 0x000a, 0x2548: 0x003a, 0x2549: 0x002a, 0x254a: 0x000a, 0x254b: 0x0003,\n\t0x254c: 0x0006, 0x254d: 0x0003, 0x254e: 0x0006, 0x254f: 0x0006, 0x2550: 0x0002, 0x2551: 0x0002,\n\t0x2552: 0x0002, 0x2553: 0x0002, 0x2554: 0x0002, 0x2555: 0x0002, 0x2556: 0x0002, 0x2557: 0x0002,\n\t0x2558: 0x0002, 0x2559: 0x0002, 0x255a: 0x0006, 0x255b: 0x000a, 0x255c: 0x000a, 0x255d: 0x000a,\n\t0x255e: 0x000a, 0x255f: 0x000a, 0x2560: 0x000a,\n\t0x257b: 0x005a,\n\t0x257c: 0x000a, 0x257d: 0x004a, 0x257e: 0x000a, 0x257f: 0x000a,\n\t// Block 0x96, offset 0x2580\n\t0x2580: 0x000a,\n\t0x259b: 0x005a, 0x259c: 0x000a, 0x259d: 0x004a,\n\t0x259e: 0x000a, 0x259f: 0x00fa, 0x25a0: 0x00ea, 0x25a1: 0x000a, 0x25a2: 0x003a, 0x25a3: 0x002a,\n\t0x25a4: 0x000a, 0x25a5: 0x000a,\n\t// Block 0x97, offset 0x25c0\n\t0x25e0: 0x0004, 0x25e1: 0x0004, 0x25e2: 0x000a, 0x25e3: 0x000a,\n\t0x25e4: 0x000a, 0x25e5: 0x0004, 0x25e6: 0x0004, 0x25e8: 0x000a, 0x25e9: 0x000a,\n\t0x25ea: 0x000a, 0x25eb: 0x000a, 0x25ec: 0x000a, 0x25ed: 0x000a, 0x25ee: 0x000a,\n\t0x25f0: 0x000b, 0x25f1: 0x000b, 0x25f2: 0x000b, 0x25f3: 0x000b, 0x25f4: 0x000b, 0x25f5: 0x000b,\n\t0x25f6: 0x000b, 0x25f7: 0x000b, 0x25f8: 0x000b, 0x25f9: 0x000a, 0x25fa: 0x000a, 0x25fb: 0x000a,\n\t0x25fc: 0x000a, 0x25fd: 0x000a, 0x25fe: 0x000b, 0x25ff: 0x000b,\n\t// Block 0x98, offset 0x2600\n\t0x2601: 0x000a,\n\t// Block 0x99, offset 0x2640\n\t0x2640: 0x000a, 0x2641: 0x000a, 0x2642: 0x000a, 0x2643: 0x000a, 0x2644: 0x000a, 0x2645: 0x000a,\n\t0x2646: 0x000a, 0x2647: 0x000a, 0x2648: 0x000a, 0x2649: 0x000a, 0x264a: 0x000a, 0x264b: 0x000a,\n\t0x264c: 0x000a, 0x2650: 0x000a, 0x2651: 0x000a,\n\t0x2652: 0x000a, 0x2653: 0x000a, 0x2654: 0x000a, 0x2655: 0x000a, 0x2656: 0x000a, 0x2657: 0x000a,\n\t0x2658: 0x000a, 0x2659: 0x000a, 0x265a: 0x000a, 0x265b: 0x000a,\n\t0x2660: 0x000a,\n\t// Block 0x9a, offset 0x2680\n\t0x26bd: 0x000c,\n\t// Block 0x9b, offset 0x26c0\n\t0x26e0: 0x000c, 0x26e1: 0x0002, 0x26e2: 0x0002, 0x26e3: 0x0002,\n\t0x26e4: 0x0002, 0x26e5: 0x0002, 0x26e6: 0x0002, 0x26e7: 0x0002, 0x26e8: 0x0002, 0x26e9: 0x0002,\n\t0x26ea: 0x0002, 0x26eb: 0x0002, 0x26ec: 0x0002, 0x26ed: 0x0002, 0x26ee: 0x0002, 0x26ef: 0x0002,\n\t0x26f0: 0x0002, 0x26f1: 0x0002, 0x26f2: 0x0002, 0x26f3: 0x0002, 0x26f4: 0x0002, 0x26f5: 0x0002,\n\t0x26f6: 0x0002, 0x26f7: 0x0002, 0x26f8: 0x0002, 0x26f9: 0x0002, 0x26fa: 0x0002, 0x26fb: 0x0002,\n\t// Block 0x9c, offset 0x2700\n\t0x2736: 0x000c, 0x2737: 0x000c, 0x2738: 0x000c, 0x2739: 0x000c, 0x273a: 0x000c,\n\t// Block 0x9d, offset 0x2740\n\t0x2740: 0x0001, 0x2741: 0x0001, 0x2742: 0x0001, 0x2743: 0x0001, 0x2744: 0x0001, 0x2745: 0x0001,\n\t0x2746: 0x0001, 0x2747: 0x0001, 0x2748: 0x0001, 0x2749: 0x0001, 0x274a: 0x0001, 0x274b: 0x0001,\n\t0x274c: 0x0001, 0x274d: 0x0001, 0x274e: 0x0001, 0x274f: 0x0001, 0x2750: 0x0001, 0x2751: 0x0001,\n\t0x2752: 0x0001, 0x2753: 0x0001, 0x2754: 0x0001, 0x2755: 0x0001, 0x2756: 0x0001, 0x2757: 0x0001,\n\t0x2758: 0x0001, 0x2759: 0x0001, 0x275a: 0x0001, 0x275b: 0x0001, 0x275c: 0x0001, 0x275d: 0x0001,\n\t0x275e: 0x0001, 0x275f: 0x0001, 0x2760: 0x0001, 0x2761: 0x0001, 0x2762: 0x0001, 0x2763: 0x0001,\n\t0x2764: 0x0001, 0x2765: 0x0001, 0x2766: 0x0001, 0x2767: 0x0001, 0x2768: 0x0001, 0x2769: 0x0001,\n\t0x276a: 0x0001, 0x276b: 0x0001, 0x276c: 0x0001, 0x276d: 0x0001, 0x276e: 0x0001, 0x276f: 0x0001,\n\t0x2770: 0x0001, 0x2771: 0x0001, 0x2772: 0x0001, 0x2773: 0x0001, 0x2774: 0x0001, 0x2775: 0x0001,\n\t0x2776: 0x0001, 0x2777: 0x0001, 0x2778: 0x0001, 0x2779: 0x0001, 0x277a: 0x0001, 0x277b: 0x0001,\n\t0x277c: 0x0001, 0x277d: 0x0001, 0x277e: 0x0001, 0x277f: 0x0001,\n\t// Block 0x9e, offset 0x2780\n\t0x2780: 0x0001, 0x2781: 0x0001, 0x2782: 0x0001, 0x2783: 0x0001, 0x2784: 0x0001, 0x2785: 0x0001,\n\t0x2786: 0x0001, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001,\n\t0x278c: 0x0001, 0x278d: 0x0001, 0x278e: 0x0001, 0x278f: 0x0001, 0x2790: 0x0001, 0x2791: 0x0001,\n\t0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001,\n\t0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001,\n\t0x279e: 0x0001, 0x279f: 0x000a, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001,\n\t0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001,\n\t0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001,\n\t0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001,\n\t0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x0001, 0x27b9: 0x0001, 0x27ba: 0x0001, 0x27bb: 0x0001,\n\t0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x0001,\n\t// Block 0x9f, offset 0x27c0\n\t0x27c0: 0x0001, 0x27c1: 0x000c, 0x27c2: 0x000c, 0x27c3: 0x000c, 0x27c4: 0x0001, 0x27c5: 0x000c,\n\t0x27c6: 0x000c, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001,\n\t0x27cc: 0x000c, 0x27cd: 0x000c, 0x27ce: 0x000c, 0x27cf: 0x000c, 0x27d0: 0x0001, 0x27d1: 0x0001,\n\t0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001,\n\t0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001,\n\t0x27de: 0x0001, 0x27df: 0x0001, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001,\n\t0x27e4: 0x0001, 0x27e5: 0x0001, 0x27e6: 0x0001, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001,\n\t0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001,\n\t0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001,\n\t0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x000c, 0x27f9: 0x000c, 0x27fa: 0x000c, 0x27fb: 0x0001,\n\t0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x000c,\n\t// Block 0xa0, offset 0x2800\n\t0x2800: 0x0001, 0x2801: 0x0001, 0x2802: 0x0001, 0x2803: 0x0001, 0x2804: 0x0001, 0x2805: 0x0001,\n\t0x2806: 0x0001, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001,\n\t0x280c: 0x0001, 0x280d: 0x0001, 0x280e: 0x0001, 0x280f: 0x0001, 0x2810: 0x0001, 0x2811: 0x0001,\n\t0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001,\n\t0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001,\n\t0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001,\n\t0x2824: 0x0001, 0x2825: 0x000c, 0x2826: 0x000c, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001,\n\t0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001,\n\t0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001,\n\t0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x0001, 0x2839: 0x0001, 0x283a: 0x0001, 0x283b: 0x0001,\n\t0x283c: 0x0001, 0x283d: 0x0001, 0x283e: 0x0001, 0x283f: 0x0001,\n\t// Block 0xa1, offset 0x2840\n\t0x2840: 0x0001, 0x2841: 0x0001, 0x2842: 0x0001, 0x2843: 0x0001, 0x2844: 0x0001, 0x2845: 0x0001,\n\t0x2846: 0x0001, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001,\n\t0x284c: 0x0001, 0x284d: 0x0001, 0x284e: 0x0001, 0x284f: 0x0001, 0x2850: 0x0001, 0x2851: 0x0001,\n\t0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001,\n\t0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001,\n\t0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0001, 0x2861: 0x0001, 0x2862: 0x0001, 0x2863: 0x0001,\n\t0x2864: 0x0001, 0x2865: 0x0001, 0x2866: 0x0001, 0x2867: 0x0001, 0x2868: 0x0001, 0x2869: 0x0001,\n\t0x286a: 0x0001, 0x286b: 0x0001, 0x286c: 0x0001, 0x286d: 0x0001, 0x286e: 0x0001, 0x286f: 0x0001,\n\t0x2870: 0x0001, 0x2871: 0x0001, 0x2872: 0x0001, 0x2873: 0x0001, 0x2874: 0x0001, 0x2875: 0x0001,\n\t0x2876: 0x0001, 0x2877: 0x0001, 0x2878: 0x0001, 0x2879: 0x000a, 0x287a: 0x000a, 0x287b: 0x000a,\n\t0x287c: 0x000a, 0x287d: 0x000a, 0x287e: 0x000a, 0x287f: 0x000a,\n\t// Block 0xa2, offset 0x2880\n\t0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001,\n\t0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001,\n\t0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001,\n\t0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001,\n\t0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001,\n\t0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0005, 0x28a1: 0x0005, 0x28a2: 0x0005, 0x28a3: 0x0005,\n\t0x28a4: 0x0005, 0x28a5: 0x0005, 0x28a6: 0x0005, 0x28a7: 0x0005, 0x28a8: 0x0005, 0x28a9: 0x0005,\n\t0x28aa: 0x0005, 0x28ab: 0x0005, 0x28ac: 0x0005, 0x28ad: 0x0005, 0x28ae: 0x0005, 0x28af: 0x0005,\n\t0x28b0: 0x0005, 0x28b1: 0x0005, 0x28b2: 0x0005, 0x28b3: 0x0005, 0x28b4: 0x0005, 0x28b5: 0x0005,\n\t0x28b6: 0x0005, 0x28b7: 0x0005, 0x28b8: 0x0005, 0x28b9: 0x0005, 0x28ba: 0x0005, 0x28bb: 0x0005,\n\t0x28bc: 0x0005, 0x28bd: 0x0005, 0x28be: 0x0005, 0x28bf: 0x0001,\n\t// Block 0xa3, offset 0x28c0\n\t0x28c1: 0x000c,\n\t0x28f8: 0x000c, 0x28f9: 0x000c, 0x28fa: 0x000c, 0x28fb: 0x000c,\n\t0x28fc: 0x000c, 0x28fd: 0x000c, 0x28fe: 0x000c, 0x28ff: 0x000c,\n\t// Block 0xa4, offset 0x2900\n\t0x2900: 0x000c, 0x2901: 0x000c, 0x2902: 0x000c, 0x2903: 0x000c, 0x2904: 0x000c, 0x2905: 0x000c,\n\t0x2906: 0x000c,\n\t0x2912: 0x000a, 0x2913: 0x000a, 0x2914: 0x000a, 0x2915: 0x000a, 0x2916: 0x000a, 0x2917: 0x000a,\n\t0x2918: 0x000a, 0x2919: 0x000a, 0x291a: 0x000a, 0x291b: 0x000a, 0x291c: 0x000a, 0x291d: 0x000a,\n\t0x291e: 0x000a, 0x291f: 0x000a, 0x2920: 0x000a, 0x2921: 0x000a, 0x2922: 0x000a, 0x2923: 0x000a,\n\t0x2924: 0x000a, 0x2925: 0x000a,\n\t0x293f: 0x000c,\n\t// Block 0xa5, offset 0x2940\n\t0x2940: 0x000c, 0x2941: 0x000c,\n\t0x2973: 0x000c, 0x2974: 0x000c, 0x2975: 0x000c,\n\t0x2976: 0x000c, 0x2979: 0x000c, 0x297a: 0x000c,\n\t// Block 0xa6, offset 0x2980\n\t0x2980: 0x000c, 0x2981: 0x000c, 0x2982: 0x000c,\n\t0x29a7: 0x000c, 0x29a8: 0x000c, 0x29a9: 0x000c,\n\t0x29aa: 0x000c, 0x29ab: 0x000c, 0x29ad: 0x000c, 0x29ae: 0x000c, 0x29af: 0x000c,\n\t0x29b0: 0x000c, 0x29b1: 0x000c, 0x29b2: 0x000c, 0x29b3: 0x000c, 0x29b4: 0x000c,\n\t// Block 0xa7, offset 0x29c0\n\t0x29f3: 0x000c,\n\t// Block 0xa8, offset 0x2a00\n\t0x2a00: 0x000c, 0x2a01: 0x000c,\n\t0x2a36: 0x000c, 0x2a37: 0x000c, 0x2a38: 0x000c, 0x2a39: 0x000c, 0x2a3a: 0x000c, 0x2a3b: 0x000c,\n\t0x2a3c: 0x000c, 0x2a3d: 0x000c, 0x2a3e: 0x000c,\n\t// Block 0xa9, offset 0x2a40\n\t0x2a4a: 0x000c, 0x2a4b: 0x000c,\n\t0x2a4c: 0x000c,\n\t// Block 0xaa, offset 0x2a80\n\t0x2aaf: 0x000c,\n\t0x2ab0: 0x000c, 0x2ab1: 0x000c, 0x2ab4: 0x000c,\n\t0x2ab6: 0x000c, 0x2ab7: 0x000c,\n\t0x2abe: 0x000c,\n\t// Block 0xab, offset 0x2ac0\n\t0x2adf: 0x000c, 0x2ae3: 0x000c,\n\t0x2ae4: 0x000c, 0x2ae5: 0x000c, 0x2ae6: 0x000c, 0x2ae7: 0x000c, 0x2ae8: 0x000c, 0x2ae9: 0x000c,\n\t0x2aea: 0x000c,\n\t// Block 0xac, offset 0x2b00\n\t0x2b00: 0x000c, 0x2b01: 0x000c,\n\t0x2b3c: 0x000c,\n\t// Block 0xad, offset 0x2b40\n\t0x2b40: 0x000c,\n\t0x2b66: 0x000c, 0x2b67: 0x000c, 0x2b68: 0x000c, 0x2b69: 0x000c,\n\t0x2b6a: 0x000c, 0x2b6b: 0x000c, 0x2b6c: 0x000c,\n\t0x2b70: 0x000c, 0x2b71: 0x000c, 0x2b72: 0x000c, 0x2b73: 0x000c, 0x2b74: 0x000c,\n\t// Block 0xae, offset 0x2b80\n\t0x2bb8: 0x000c, 0x2bb9: 0x000c, 0x2bba: 0x000c, 0x2bbb: 0x000c,\n\t0x2bbc: 0x000c, 0x2bbd: 0x000c, 0x2bbe: 0x000c, 0x2bbf: 0x000c,\n\t// Block 0xaf, offset 0x2bc0\n\t0x2bc2: 0x000c, 0x2bc3: 0x000c, 0x2bc4: 0x000c,\n\t0x2bc6: 0x000c,\n\t// Block 0xb0, offset 0x2c00\n\t0x2c33: 0x000c, 0x2c34: 0x000c, 0x2c35: 0x000c,\n\t0x2c36: 0x000c, 0x2c37: 0x000c, 0x2c38: 0x000c, 0x2c3a: 0x000c,\n\t0x2c3f: 0x000c,\n\t// Block 0xb1, offset 0x2c40\n\t0x2c40: 0x000c, 0x2c42: 0x000c, 0x2c43: 0x000c,\n\t// Block 0xb2, offset 0x2c80\n\t0x2cb2: 0x000c, 0x2cb3: 0x000c, 0x2cb4: 0x000c, 0x2cb5: 0x000c,\n\t0x2cbc: 0x000c, 0x2cbd: 0x000c, 0x2cbf: 0x000c,\n\t// Block 0xb3, offset 0x2cc0\n\t0x2cc0: 0x000c,\n\t0x2cdc: 0x000c, 0x2cdd: 0x000c,\n\t// Block 0xb4, offset 0x2d00\n\t0x2d33: 0x000c, 0x2d34: 0x000c, 0x2d35: 0x000c,\n\t0x2d36: 0x000c, 0x2d37: 0x000c, 0x2d38: 0x000c, 0x2d39: 0x000c, 0x2d3a: 0x000c,\n\t0x2d3d: 0x000c, 0x2d3f: 0x000c,\n\t// Block 0xb5, offset 0x2d40\n\t0x2d40: 0x000c,\n\t0x2d60: 0x000a, 0x2d61: 0x000a, 0x2d62: 0x000a, 0x2d63: 0x000a,\n\t0x2d64: 0x000a, 0x2d65: 0x000a, 0x2d66: 0x000a, 0x2d67: 0x000a, 0x2d68: 0x000a, 0x2d69: 0x000a,\n\t0x2d6a: 0x000a, 0x2d6b: 0x000a, 0x2d6c: 0x000a,\n\t// Block 0xb6, offset 0x2d80\n\t0x2dab: 0x000c, 0x2dad: 0x000c,\n\t0x2db0: 0x000c, 0x2db1: 0x000c, 0x2db2: 0x000c, 0x2db3: 0x000c, 0x2db4: 0x000c, 0x2db5: 0x000c,\n\t0x2db7: 0x000c,\n\t// Block 0xb7, offset 0x2dc0\n\t0x2ddd: 0x000c,\n\t0x2dde: 0x000c, 0x2ddf: 0x000c, 0x2de2: 0x000c, 0x2de3: 0x000c,\n\t0x2de4: 0x000c, 0x2de5: 0x000c, 0x2de7: 0x000c, 0x2de8: 0x000c, 0x2de9: 0x000c,\n\t0x2dea: 0x000c, 0x2deb: 0x000c,\n\t// Block 0xb8, offset 0x2e00\n\t0x2e30: 0x000c, 0x2e31: 0x000c, 0x2e32: 0x000c, 0x2e33: 0x000c, 0x2e34: 0x000c, 0x2e35: 0x000c,\n\t0x2e36: 0x000c, 0x2e38: 0x000c, 0x2e39: 0x000c, 0x2e3a: 0x000c, 0x2e3b: 0x000c,\n\t0x2e3c: 0x000c, 0x2e3d: 0x000c,\n\t// Block 0xb9, offset 0x2e40\n\t0x2e52: 0x000c, 0x2e53: 0x000c, 0x2e54: 0x000c, 0x2e55: 0x000c, 0x2e56: 0x000c, 0x2e57: 0x000c,\n\t0x2e58: 0x000c, 0x2e59: 0x000c, 0x2e5a: 0x000c, 0x2e5b: 0x000c, 0x2e5c: 0x000c, 0x2e5d: 0x000c,\n\t0x2e5e: 0x000c, 0x2e5f: 0x000c, 0x2e60: 0x000c, 0x2e61: 0x000c, 0x2e62: 0x000c, 0x2e63: 0x000c,\n\t0x2e64: 0x000c, 0x2e65: 0x000c, 0x2e66: 0x000c, 0x2e67: 0x000c,\n\t0x2e6a: 0x000c, 0x2e6b: 0x000c, 0x2e6c: 0x000c, 0x2e6d: 0x000c, 0x2e6e: 0x000c, 0x2e6f: 0x000c,\n\t0x2e70: 0x000c, 0x2e72: 0x000c, 0x2e73: 0x000c, 0x2e75: 0x000c,\n\t0x2e76: 0x000c,\n\t// Block 0xba, offset 0x2e80\n\t0x2eb0: 0x000c, 0x2eb1: 0x000c, 0x2eb2: 0x000c, 0x2eb3: 0x000c, 0x2eb4: 0x000c,\n\t// Block 0xbb, offset 0x2ec0\n\t0x2ef0: 0x000c, 0x2ef1: 0x000c, 0x2ef2: 0x000c, 0x2ef3: 0x000c, 0x2ef4: 0x000c, 0x2ef5: 0x000c,\n\t0x2ef6: 0x000c,\n\t// Block 0xbc, offset 0x2f00\n\t0x2f0f: 0x000c, 0x2f10: 0x000c, 0x2f11: 0x000c,\n\t0x2f12: 0x000c,\n\t// Block 0xbd, offset 0x2f40\n\t0x2f5d: 0x000c,\n\t0x2f5e: 0x000c, 0x2f60: 0x000b, 0x2f61: 0x000b, 0x2f62: 0x000b, 0x2f63: 0x000b,\n\t// Block 0xbe, offset 0x2f80\n\t0x2fa7: 0x000c, 0x2fa8: 0x000c, 0x2fa9: 0x000c,\n\t0x2fb3: 0x000b, 0x2fb4: 0x000b, 0x2fb5: 0x000b,\n\t0x2fb6: 0x000b, 0x2fb7: 0x000b, 0x2fb8: 0x000b, 0x2fb9: 0x000b, 0x2fba: 0x000b, 0x2fbb: 0x000c,\n\t0x2fbc: 0x000c, 0x2fbd: 0x000c, 0x2fbe: 0x000c, 0x2fbf: 0x000c,\n\t// Block 0xbf, offset 0x2fc0\n\t0x2fc0: 0x000c, 0x2fc1: 0x000c, 0x2fc2: 0x000c, 0x2fc5: 0x000c,\n\t0x2fc6: 0x000c, 0x2fc7: 0x000c, 0x2fc8: 0x000c, 0x2fc9: 0x000c, 0x2fca: 0x000c, 0x2fcb: 0x000c,\n\t0x2fea: 0x000c, 0x2feb: 0x000c, 0x2fec: 0x000c, 0x2fed: 0x000c,\n\t// Block 0xc0, offset 0x3000\n\t0x3000: 0x000a, 0x3001: 0x000a, 0x3002: 0x000c, 0x3003: 0x000c, 0x3004: 0x000c, 0x3005: 0x000a,\n\t// Block 0xc1, offset 0x3040\n\t0x3040: 0x000a, 0x3041: 0x000a, 0x3042: 0x000a, 0x3043: 0x000a, 0x3044: 0x000a, 0x3045: 0x000a,\n\t0x3046: 0x000a, 0x3047: 0x000a, 0x3048: 0x000a, 0x3049: 0x000a, 0x304a: 0x000a, 0x304b: 0x000a,\n\t0x304c: 0x000a, 0x304d: 0x000a, 0x304e: 0x000a, 0x304f: 0x000a, 0x3050: 0x000a, 0x3051: 0x000a,\n\t0x3052: 0x000a, 0x3053: 0x000a, 0x3054: 0x000a, 0x3055: 0x000a, 0x3056: 0x000a,\n\t// Block 0xc2, offset 0x3080\n\t0x309b: 0x000a,\n\t// Block 0xc3, offset 0x30c0\n\t0x30d5: 0x000a,\n\t// Block 0xc4, offset 0x3100\n\t0x310f: 0x000a,\n\t// Block 0xc5, offset 0x3140\n\t0x3149: 0x000a,\n\t// Block 0xc6, offset 0x3180\n\t0x3183: 0x000a,\n\t0x318e: 0x0002, 0x318f: 0x0002, 0x3190: 0x0002, 0x3191: 0x0002,\n\t0x3192: 0x0002, 0x3193: 0x0002, 0x3194: 0x0002, 0x3195: 0x0002, 0x3196: 0x0002, 0x3197: 0x0002,\n\t0x3198: 0x0002, 0x3199: 0x0002, 0x319a: 0x0002, 0x319b: 0x0002, 0x319c: 0x0002, 0x319d: 0x0002,\n\t0x319e: 0x0002, 0x319f: 0x0002, 0x31a0: 0x0002, 0x31a1: 0x0002, 0x31a2: 0x0002, 0x31a3: 0x0002,\n\t0x31a4: 0x0002, 0x31a5: 0x0002, 0x31a6: 0x0002, 0x31a7: 0x0002, 0x31a8: 0x0002, 0x31a9: 0x0002,\n\t0x31aa: 0x0002, 0x31ab: 0x0002, 0x31ac: 0x0002, 0x31ad: 0x0002, 0x31ae: 0x0002, 0x31af: 0x0002,\n\t0x31b0: 0x0002, 0x31b1: 0x0002, 0x31b2: 0x0002, 0x31b3: 0x0002, 0x31b4: 0x0002, 0x31b5: 0x0002,\n\t0x31b6: 0x0002, 0x31b7: 0x0002, 0x31b8: 0x0002, 0x31b9: 0x0002, 0x31ba: 0x0002, 0x31bb: 0x0002,\n\t0x31bc: 0x0002, 0x31bd: 0x0002, 0x31be: 0x0002, 0x31bf: 0x0002,\n\t// Block 0xc7, offset 0x31c0\n\t0x31c0: 0x000c, 0x31c1: 0x000c, 0x31c2: 0x000c, 0x31c3: 0x000c, 0x31c4: 0x000c, 0x31c5: 0x000c,\n\t0x31c6: 0x000c, 0x31c7: 0x000c, 0x31c8: 0x000c, 0x31c9: 0x000c, 0x31ca: 0x000c, 0x31cb: 0x000c,\n\t0x31cc: 0x000c, 0x31cd: 0x000c, 0x31ce: 0x000c, 0x31cf: 0x000c, 0x31d0: 0x000c, 0x31d1: 0x000c,\n\t0x31d2: 0x000c, 0x31d3: 0x000c, 0x31d4: 0x000c, 0x31d5: 0x000c, 0x31d6: 0x000c, 0x31d7: 0x000c,\n\t0x31d8: 0x000c, 0x31d9: 0x000c, 0x31da: 0x000c, 0x31db: 0x000c, 0x31dc: 0x000c, 0x31dd: 0x000c,\n\t0x31de: 0x000c, 0x31df: 0x000c, 0x31e0: 0x000c, 0x31e1: 0x000c, 0x31e2: 0x000c, 0x31e3: 0x000c,\n\t0x31e4: 0x000c, 0x31e5: 0x000c, 0x31e6: 0x000c, 0x31e7: 0x000c, 0x31e8: 0x000c, 0x31e9: 0x000c,\n\t0x31ea: 0x000c, 0x31eb: 0x000c, 0x31ec: 0x000c, 0x31ed: 0x000c, 0x31ee: 0x000c, 0x31ef: 0x000c,\n\t0x31f0: 0x000c, 0x31f1: 0x000c, 0x31f2: 0x000c, 0x31f3: 0x000c, 0x31f4: 0x000c, 0x31f5: 0x000c,\n\t0x31f6: 0x000c, 0x31fb: 0x000c,\n\t0x31fc: 0x000c, 0x31fd: 0x000c, 0x31fe: 0x000c, 0x31ff: 0x000c,\n\t// Block 0xc8, offset 0x3200\n\t0x3200: 0x000c, 0x3201: 0x000c, 0x3202: 0x000c, 0x3203: 0x000c, 0x3204: 0x000c, 0x3205: 0x000c,\n\t0x3206: 0x000c, 0x3207: 0x000c, 0x3208: 0x000c, 0x3209: 0x000c, 0x320a: 0x000c, 0x320b: 0x000c,\n\t0x320c: 0x000c, 0x320d: 0x000c, 0x320e: 0x000c, 0x320f: 0x000c, 0x3210: 0x000c, 0x3211: 0x000c,\n\t0x3212: 0x000c, 0x3213: 0x000c, 0x3214: 0x000c, 0x3215: 0x000c, 0x3216: 0x000c, 0x3217: 0x000c,\n\t0x3218: 0x000c, 0x3219: 0x000c, 0x321a: 0x000c, 0x321b: 0x000c, 0x321c: 0x000c, 0x321d: 0x000c,\n\t0x321e: 0x000c, 0x321f: 0x000c, 0x3220: 0x000c, 0x3221: 0x000c, 0x3222: 0x000c, 0x3223: 0x000c,\n\t0x3224: 0x000c, 0x3225: 0x000c, 0x3226: 0x000c, 0x3227: 0x000c, 0x3228: 0x000c, 0x3229: 0x000c,\n\t0x322a: 0x000c, 0x322b: 0x000c, 0x322c: 0x000c,\n\t0x3235: 0x000c,\n\t// Block 0xc9, offset 0x3240\n\t0x3244: 0x000c,\n\t0x325b: 0x000c, 0x325c: 0x000c, 0x325d: 0x000c,\n\t0x325e: 0x000c, 0x325f: 0x000c, 0x3261: 0x000c, 0x3262: 0x000c, 0x3263: 0x000c,\n\t0x3264: 0x000c, 0x3265: 0x000c, 0x3266: 0x000c, 0x3267: 0x000c, 0x3268: 0x000c, 0x3269: 0x000c,\n\t0x326a: 0x000c, 0x326b: 0x000c, 0x326c: 0x000c, 0x326d: 0x000c, 0x326e: 0x000c, 0x326f: 0x000c,\n\t// Block 0xca, offset 0x3280\n\t0x3280: 0x000c, 0x3281: 0x000c, 0x3282: 0x000c, 0x3283: 0x000c, 0x3284: 0x000c, 0x3285: 0x000c,\n\t0x3286: 0x000c, 0x3288: 0x000c, 0x3289: 0x000c, 0x328a: 0x000c, 0x328b: 0x000c,\n\t0x328c: 0x000c, 0x328d: 0x000c, 0x328e: 0x000c, 0x328f: 0x000c, 0x3290: 0x000c, 0x3291: 0x000c,\n\t0x3292: 0x000c, 0x3293: 0x000c, 0x3294: 0x000c, 0x3295: 0x000c, 0x3296: 0x000c, 0x3297: 0x000c,\n\t0x3298: 0x000c, 0x329b: 0x000c, 0x329c: 0x000c, 0x329d: 0x000c,\n\t0x329e: 0x000c, 0x329f: 0x000c, 0x32a0: 0x000c, 0x32a1: 0x000c, 0x32a3: 0x000c,\n\t0x32a4: 0x000c, 0x32a6: 0x000c, 0x32a7: 0x000c, 0x32a8: 0x000c, 0x32a9: 0x000c,\n\t0x32aa: 0x000c,\n\t// Block 0xcb, offset 0x32c0\n\t0x32c0: 0x0001, 0x32c1: 0x0001, 0x32c2: 0x0001, 0x32c3: 0x0001, 0x32c4: 0x0001, 0x32c5: 0x0001,\n\t0x32c6: 0x0001, 0x32c7: 0x0001, 0x32c8: 0x0001, 0x32c9: 0x0001, 0x32ca: 0x0001, 0x32cb: 0x0001,\n\t0x32cc: 0x0001, 0x32cd: 0x0001, 0x32ce: 0x0001, 0x32cf: 0x0001, 0x32d0: 0x000c, 0x32d1: 0x000c,\n\t0x32d2: 0x000c, 0x32d3: 0x000c, 0x32d4: 0x000c, 0x32d5: 0x000c, 0x32d6: 0x000c, 0x32d7: 0x0001,\n\t0x32d8: 0x0001, 0x32d9: 0x0001, 0x32da: 0x0001, 0x32db: 0x0001, 0x32dc: 0x0001, 0x32dd: 0x0001,\n\t0x32de: 0x0001, 0x32df: 0x0001, 0x32e0: 0x0001, 0x32e1: 0x0001, 0x32e2: 0x0001, 0x32e3: 0x0001,\n\t0x32e4: 0x0001, 0x32e5: 0x0001, 0x32e6: 0x0001, 0x32e7: 0x0001, 0x32e8: 0x0001, 0x32e9: 0x0001,\n\t0x32ea: 0x0001, 0x32eb: 0x0001, 0x32ec: 0x0001, 0x32ed: 0x0001, 0x32ee: 0x0001, 0x32ef: 0x0001,\n\t0x32f0: 0x0001, 0x32f1: 0x0001, 0x32f2: 0x0001, 0x32f3: 0x0001, 0x32f4: 0x0001, 0x32f5: 0x0001,\n\t0x32f6: 0x0001, 0x32f7: 0x0001, 0x32f8: 0x0001, 0x32f9: 0x0001, 0x32fa: 0x0001, 0x32fb: 0x0001,\n\t0x32fc: 0x0001, 0x32fd: 0x0001, 0x32fe: 0x0001, 0x32ff: 0x0001,\n\t// Block 0xcc, offset 0x3300\n\t0x3300: 0x0001, 0x3301: 0x0001, 0x3302: 0x0001, 0x3303: 0x0001, 0x3304: 0x000c, 0x3305: 0x000c,\n\t0x3306: 0x000c, 0x3307: 0x000c, 0x3308: 0x000c, 0x3309: 0x000c, 0x330a: 0x000c, 0x330b: 0x0001,\n\t0x330c: 0x0001, 0x330d: 0x0001, 0x330e: 0x0001, 0x330f: 0x0001, 0x3310: 0x0001, 0x3311: 0x0001,\n\t0x3312: 0x0001, 0x3313: 0x0001, 0x3314: 0x0001, 0x3315: 0x0001, 0x3316: 0x0001, 0x3317: 0x0001,\n\t0x3318: 0x0001, 0x3319: 0x0001, 0x331a: 0x0001, 0x331b: 0x0001, 0x331c: 0x0001, 0x331d: 0x0001,\n\t0x331e: 0x0001, 0x331f: 0x0001, 0x3320: 0x0001, 0x3321: 0x0001, 0x3322: 0x0001, 0x3323: 0x0001,\n\t0x3324: 0x0001, 0x3325: 0x0001, 0x3326: 0x0001, 0x3327: 0x0001, 0x3328: 0x0001, 0x3329: 0x0001,\n\t0x332a: 0x0001, 0x332b: 0x0001, 0x332c: 0x0001, 0x332d: 0x0001, 0x332e: 0x0001, 0x332f: 0x0001,\n\t0x3330: 0x0001, 0x3331: 0x0001, 0x3332: 0x0001, 0x3333: 0x0001, 0x3334: 0x0001, 0x3335: 0x0001,\n\t0x3336: 0x0001, 0x3337: 0x0001, 0x3338: 0x0001, 0x3339: 0x0001, 0x333a: 0x0001, 0x333b: 0x0001,\n\t0x333c: 0x0001, 0x333d: 0x0001, 0x333e: 0x0001, 0x333f: 0x0001,\n\t// Block 0xcd, offset 0x3340\n\t0x3340: 0x000d, 0x3341: 0x000d, 0x3342: 0x000d, 0x3343: 0x000d, 0x3344: 0x000d, 0x3345: 0x000d,\n\t0x3346: 0x000d, 0x3347: 0x000d, 0x3348: 0x000d, 0x3349: 0x000d, 0x334a: 0x000d, 0x334b: 0x000d,\n\t0x334c: 0x000d, 0x334d: 0x000d, 0x334e: 0x000d, 0x334f: 0x000d, 0x3350: 0x000d, 0x3351: 0x000d,\n\t0x3352: 0x000d, 0x3353: 0x000d, 0x3354: 0x000d, 0x3355: 0x000d, 0x3356: 0x000d, 0x3357: 0x000d,\n\t0x3358: 0x000d, 0x3359: 0x000d, 0x335a: 0x000d, 0x335b: 0x000d, 0x335c: 0x000d, 0x335d: 0x000d,\n\t0x335e: 0x000d, 0x335f: 0x000d, 0x3360: 0x000d, 0x3361: 0x000d, 0x3362: 0x000d, 0x3363: 0x000d,\n\t0x3364: 0x000d, 0x3365: 0x000d, 0x3366: 0x000d, 0x3367: 0x000d, 0x3368: 0x000d, 0x3369: 0x000d,\n\t0x336a: 0x000d, 0x336b: 0x000d, 0x336c: 0x000d, 0x336d: 0x000d, 0x336e: 0x000d, 0x336f: 0x000d,\n\t0x3370: 0x000a, 0x3371: 0x000a, 0x3372: 0x000d, 0x3373: 0x000d, 0x3374: 0x000d, 0x3375: 0x000d,\n\t0x3376: 0x000d, 0x3377: 0x000d, 0x3378: 0x000d, 0x3379: 0x000d, 0x337a: 0x000d, 0x337b: 0x000d,\n\t0x337c: 0x000d, 0x337d: 0x000d, 0x337e: 0x000d, 0x337f: 0x000d,\n\t// Block 0xce, offset 0x3380\n\t0x3380: 0x000a, 0x3381: 0x000a, 0x3382: 0x000a, 0x3383: 0x000a, 0x3384: 0x000a, 0x3385: 0x000a,\n\t0x3386: 0x000a, 0x3387: 0x000a, 0x3388: 0x000a, 0x3389: 0x000a, 0x338a: 0x000a, 0x338b: 0x000a,\n\t0x338c: 0x000a, 0x338d: 0x000a, 0x338e: 0x000a, 0x338f: 0x000a, 0x3390: 0x000a, 0x3391: 0x000a,\n\t0x3392: 0x000a, 0x3393: 0x000a, 0x3394: 0x000a, 0x3395: 0x000a, 0x3396: 0x000a, 0x3397: 0x000a,\n\t0x3398: 0x000a, 0x3399: 0x000a, 0x339a: 0x000a, 0x339b: 0x000a, 0x339c: 0x000a, 0x339d: 0x000a,\n\t0x339e: 0x000a, 0x339f: 0x000a, 0x33a0: 0x000a, 0x33a1: 0x000a, 0x33a2: 0x000a, 0x33a3: 0x000a,\n\t0x33a4: 0x000a, 0x33a5: 0x000a, 0x33a6: 0x000a, 0x33a7: 0x000a, 0x33a8: 0x000a, 0x33a9: 0x000a,\n\t0x33aa: 0x000a, 0x33ab: 0x000a,\n\t0x33b0: 0x000a, 0x33b1: 0x000a, 0x33b2: 0x000a, 0x33b3: 0x000a, 0x33b4: 0x000a, 0x33b5: 0x000a,\n\t0x33b6: 0x000a, 0x33b7: 0x000a, 0x33b8: 0x000a, 0x33b9: 0x000a, 0x33ba: 0x000a, 0x33bb: 0x000a,\n\t0x33bc: 0x000a, 0x33bd: 0x000a, 0x33be: 0x000a, 0x33bf: 0x000a,\n\t// Block 0xcf, offset 0x33c0\n\t0x33c0: 0x000a, 0x33c1: 0x000a, 0x33c2: 0x000a, 0x33c3: 0x000a, 0x33c4: 0x000a, 0x33c5: 0x000a,\n\t0x33c6: 0x000a, 0x33c7: 0x000a, 0x33c8: 0x000a, 0x33c9: 0x000a, 0x33ca: 0x000a, 0x33cb: 0x000a,\n\t0x33cc: 0x000a, 0x33cd: 0x000a, 0x33ce: 0x000a, 0x33cf: 0x000a, 0x33d0: 0x000a, 0x33d1: 0x000a,\n\t0x33d2: 0x000a, 0x33d3: 0x000a,\n\t0x33e0: 0x000a, 0x33e1: 0x000a, 0x33e2: 0x000a, 0x33e3: 0x000a,\n\t0x33e4: 0x000a, 0x33e5: 0x000a, 0x33e6: 0x000a, 0x33e7: 0x000a, 0x33e8: 0x000a, 0x33e9: 0x000a,\n\t0x33ea: 0x000a, 0x33eb: 0x000a, 0x33ec: 0x000a, 0x33ed: 0x000a, 0x33ee: 0x000a,\n\t0x33f1: 0x000a, 0x33f2: 0x000a, 0x33f3: 0x000a, 0x33f4: 0x000a, 0x33f5: 0x000a,\n\t0x33f6: 0x000a, 0x33f7: 0x000a, 0x33f8: 0x000a, 0x33f9: 0x000a, 0x33fa: 0x000a, 0x33fb: 0x000a,\n\t0x33fc: 0x000a, 0x33fd: 0x000a, 0x33fe: 0x000a, 0x33ff: 0x000a,\n\t// Block 0xd0, offset 0x3400\n\t0x3401: 0x000a, 0x3402: 0x000a, 0x3403: 0x000a, 0x3404: 0x000a, 0x3405: 0x000a,\n\t0x3406: 0x000a, 0x3407: 0x000a, 0x3408: 0x000a, 0x3409: 0x000a, 0x340a: 0x000a, 0x340b: 0x000a,\n\t0x340c: 0x000a, 0x340d: 0x000a, 0x340e: 0x000a, 0x340f: 0x000a, 0x3411: 0x000a,\n\t0x3412: 0x000a, 0x3413: 0x000a, 0x3414: 0x000a, 0x3415: 0x000a, 0x3416: 0x000a, 0x3417: 0x000a,\n\t0x3418: 0x000a, 0x3419: 0x000a, 0x341a: 0x000a, 0x341b: 0x000a, 0x341c: 0x000a, 0x341d: 0x000a,\n\t0x341e: 0x000a, 0x341f: 0x000a, 0x3420: 0x000a, 0x3421: 0x000a, 0x3422: 0x000a, 0x3423: 0x000a,\n\t0x3424: 0x000a, 0x3425: 0x000a, 0x3426: 0x000a, 0x3427: 0x000a, 0x3428: 0x000a, 0x3429: 0x000a,\n\t0x342a: 0x000a, 0x342b: 0x000a, 0x342c: 0x000a, 0x342d: 0x000a, 0x342e: 0x000a, 0x342f: 0x000a,\n\t0x3430: 0x000a, 0x3431: 0x000a, 0x3432: 0x000a, 0x3433: 0x000a, 0x3434: 0x000a, 0x3435: 0x000a,\n\t// Block 0xd1, offset 0x3440\n\t0x3440: 0x0002, 0x3441: 0x0002, 0x3442: 0x0002, 0x3443: 0x0002, 0x3444: 0x0002, 0x3445: 0x0002,\n\t0x3446: 0x0002, 0x3447: 0x0002, 0x3448: 0x0002, 0x3449: 0x0002, 0x344a: 0x0002, 0x344b: 0x000a,\n\t0x344c: 0x000a,\n\t// Block 0xd2, offset 0x3480\n\t0x34aa: 0x000a, 0x34ab: 0x000a,\n\t// Block 0xd3, offset 0x34c0\n\t0x34c0: 0x000a, 0x34c1: 0x000a, 0x34c2: 0x000a, 0x34c3: 0x000a, 0x34c4: 0x000a, 0x34c5: 0x000a,\n\t0x34c6: 0x000a, 0x34c7: 0x000a, 0x34c8: 0x000a, 0x34c9: 0x000a, 0x34ca: 0x000a, 0x34cb: 0x000a,\n\t0x34cc: 0x000a, 0x34cd: 0x000a, 0x34ce: 0x000a, 0x34cf: 0x000a, 0x34d0: 0x000a, 0x34d1: 0x000a,\n\t0x34d2: 0x000a,\n\t0x34e0: 0x000a, 0x34e1: 0x000a, 0x34e2: 0x000a, 0x34e3: 0x000a,\n\t0x34e4: 0x000a, 0x34e5: 0x000a, 0x34e6: 0x000a, 0x34e7: 0x000a, 0x34e8: 0x000a, 0x34e9: 0x000a,\n\t0x34ea: 0x000a, 0x34eb: 0x000a, 0x34ec: 0x000a,\n\t0x34f0: 0x000a, 0x34f1: 0x000a, 0x34f2: 0x000a, 0x34f3: 0x000a, 0x34f4: 0x000a, 0x34f5: 0x000a,\n\t0x34f6: 0x000a,\n\t// Block 0xd4, offset 0x3500\n\t0x3500: 0x000a, 0x3501: 0x000a, 0x3502: 0x000a, 0x3503: 0x000a, 0x3504: 0x000a, 0x3505: 0x000a,\n\t0x3506: 0x000a, 0x3507: 0x000a, 0x3508: 0x000a, 0x3509: 0x000a, 0x350a: 0x000a, 0x350b: 0x000a,\n\t0x350c: 0x000a, 0x350d: 0x000a, 0x350e: 0x000a, 0x350f: 0x000a, 0x3510: 0x000a, 0x3511: 0x000a,\n\t0x3512: 0x000a, 0x3513: 0x000a, 0x3514: 0x000a,\n\t// Block 0xd5, offset 0x3540\n\t0x3540: 0x000a, 0x3541: 0x000a, 0x3542: 0x000a, 0x3543: 0x000a, 0x3544: 0x000a, 0x3545: 0x000a,\n\t0x3546: 0x000a, 0x3547: 0x000a, 0x3548: 0x000a, 0x3549: 0x000a, 0x354a: 0x000a, 0x354b: 0x000a,\n\t0x3550: 0x000a, 0x3551: 0x000a,\n\t0x3552: 0x000a, 0x3553: 0x000a, 0x3554: 0x000a, 0x3555: 0x000a, 0x3556: 0x000a, 0x3557: 0x000a,\n\t0x3558: 0x000a, 0x3559: 0x000a, 0x355a: 0x000a, 0x355b: 0x000a, 0x355c: 0x000a, 0x355d: 0x000a,\n\t0x355e: 0x000a, 0x355f: 0x000a, 0x3560: 0x000a, 0x3561: 0x000a, 0x3562: 0x000a, 0x3563: 0x000a,\n\t0x3564: 0x000a, 0x3565: 0x000a, 0x3566: 0x000a, 0x3567: 0x000a, 0x3568: 0x000a, 0x3569: 0x000a,\n\t0x356a: 0x000a, 0x356b: 0x000a, 0x356c: 0x000a, 0x356d: 0x000a, 0x356e: 0x000a, 0x356f: 0x000a,\n\t0x3570: 0x000a, 0x3571: 0x000a, 0x3572: 0x000a, 0x3573: 0x000a, 0x3574: 0x000a, 0x3575: 0x000a,\n\t0x3576: 0x000a, 0x3577: 0x000a, 0x3578: 0x000a, 0x3579: 0x000a, 0x357a: 0x000a, 0x357b: 0x000a,\n\t0x357c: 0x000a, 0x357d: 0x000a, 0x357e: 0x000a, 0x357f: 0x000a,\n\t// Block 0xd6, offset 0x3580\n\t0x3580: 0x000a, 0x3581: 0x000a, 0x3582: 0x000a, 0x3583: 0x000a, 0x3584: 0x000a, 0x3585: 0x000a,\n\t0x3586: 0x000a, 0x3587: 0x000a,\n\t0x3590: 0x000a, 0x3591: 0x000a,\n\t0x3592: 0x000a, 0x3593: 0x000a, 0x3594: 0x000a, 0x3595: 0x000a, 0x3596: 0x000a, 0x3597: 0x000a,\n\t0x3598: 0x000a, 0x3599: 0x000a,\n\t0x35a0: 0x000a, 0x35a1: 0x000a, 0x35a2: 0x000a, 0x35a3: 0x000a,\n\t0x35a4: 0x000a, 0x35a5: 0x000a, 0x35a6: 0x000a, 0x35a7: 0x000a, 0x35a8: 0x000a, 0x35a9: 0x000a,\n\t0x35aa: 0x000a, 0x35ab: 0x000a, 0x35ac: 0x000a, 0x35ad: 0x000a, 0x35ae: 0x000a, 0x35af: 0x000a,\n\t0x35b0: 0x000a, 0x35b1: 0x000a, 0x35b2: 0x000a, 0x35b3: 0x000a, 0x35b4: 0x000a, 0x35b5: 0x000a,\n\t0x35b6: 0x000a, 0x35b7: 0x000a, 0x35b8: 0x000a, 0x35b9: 0x000a, 0x35ba: 0x000a, 0x35bb: 0x000a,\n\t0x35bc: 0x000a, 0x35bd: 0x000a, 0x35be: 0x000a, 0x35bf: 0x000a,\n\t// Block 0xd7, offset 0x35c0\n\t0x35c0: 0x000a, 0x35c1: 0x000a, 0x35c2: 0x000a, 0x35c3: 0x000a, 0x35c4: 0x000a, 0x35c5: 0x000a,\n\t0x35c6: 0x000a, 0x35c7: 0x000a,\n\t0x35d0: 0x000a, 0x35d1: 0x000a,\n\t0x35d2: 0x000a, 0x35d3: 0x000a, 0x35d4: 0x000a, 0x35d5: 0x000a, 0x35d6: 0x000a, 0x35d7: 0x000a,\n\t0x35d8: 0x000a, 0x35d9: 0x000a, 0x35da: 0x000a, 0x35db: 0x000a, 0x35dc: 0x000a, 0x35dd: 0x000a,\n\t0x35de: 0x000a, 0x35df: 0x000a, 0x35e0: 0x000a, 0x35e1: 0x000a, 0x35e2: 0x000a, 0x35e3: 0x000a,\n\t0x35e4: 0x000a, 0x35e5: 0x000a, 0x35e6: 0x000a, 0x35e7: 0x000a, 0x35e8: 0x000a, 0x35e9: 0x000a,\n\t0x35ea: 0x000a, 0x35eb: 0x000a, 0x35ec: 0x000a, 0x35ed: 0x000a,\n\t// Block 0xd8, offset 0x3600\n\t0x3610: 0x000a, 0x3611: 0x000a,\n\t0x3612: 0x000a, 0x3613: 0x000a, 0x3614: 0x000a, 0x3615: 0x000a, 0x3616: 0x000a, 0x3617: 0x000a,\n\t0x3618: 0x000a, 0x3619: 0x000a, 0x361a: 0x000a, 0x361b: 0x000a, 0x361c: 0x000a, 0x361d: 0x000a,\n\t0x361e: 0x000a, 0x3620: 0x000a, 0x3621: 0x000a, 0x3622: 0x000a, 0x3623: 0x000a,\n\t0x3624: 0x000a, 0x3625: 0x000a, 0x3626: 0x000a, 0x3627: 0x000a,\n\t0x3630: 0x000a, 0x3633: 0x000a, 0x3634: 0x000a, 0x3635: 0x000a,\n\t0x3636: 0x000a, 0x3637: 0x000a, 0x3638: 0x000a, 0x3639: 0x000a, 0x363a: 0x000a, 0x363b: 0x000a,\n\t0x363c: 0x000a, 0x363d: 0x000a, 0x363e: 0x000a,\n\t// Block 0xd9, offset 0x3640\n\t0x3640: 0x000a, 0x3641: 0x000a, 0x3642: 0x000a, 0x3643: 0x000a, 0x3644: 0x000a, 0x3645: 0x000a,\n\t0x3646: 0x000a, 0x3647: 0x000a, 0x3648: 0x000a, 0x3649: 0x000a, 0x364a: 0x000a, 0x364b: 0x000a,\n\t0x3650: 0x000a, 0x3651: 0x000a,\n\t0x3652: 0x000a, 0x3653: 0x000a, 0x3654: 0x000a, 0x3655: 0x000a, 0x3656: 0x000a, 0x3657: 0x000a,\n\t0x3658: 0x000a, 0x3659: 0x000a, 0x365a: 0x000a, 0x365b: 0x000a, 0x365c: 0x000a, 0x365d: 0x000a,\n\t0x365e: 0x000a,\n\t// Block 0xda, offset 0x3680\n\t0x3680: 0x000a, 0x3681: 0x000a, 0x3682: 0x000a, 0x3683: 0x000a, 0x3684: 0x000a, 0x3685: 0x000a,\n\t0x3686: 0x000a, 0x3687: 0x000a, 0x3688: 0x000a, 0x3689: 0x000a, 0x368a: 0x000a, 0x368b: 0x000a,\n\t0x368c: 0x000a, 0x368d: 0x000a, 0x368e: 0x000a, 0x368f: 0x000a, 0x3690: 0x000a, 0x3691: 0x000a,\n\t// Block 0xdb, offset 0x36c0\n\t0x36fe: 0x000b, 0x36ff: 0x000b,\n\t// Block 0xdc, offset 0x3700\n\t0x3700: 0x000b, 0x3701: 0x000b, 0x3702: 0x000b, 0x3703: 0x000b, 0x3704: 0x000b, 0x3705: 0x000b,\n\t0x3706: 0x000b, 0x3707: 0x000b, 0x3708: 0x000b, 0x3709: 0x000b, 0x370a: 0x000b, 0x370b: 0x000b,\n\t0x370c: 0x000b, 0x370d: 0x000b, 0x370e: 0x000b, 0x370f: 0x000b, 0x3710: 0x000b, 0x3711: 0x000b,\n\t0x3712: 0x000b, 0x3713: 0x000b, 0x3714: 0x000b, 0x3715: 0x000b, 0x3716: 0x000b, 0x3717: 0x000b,\n\t0x3718: 0x000b, 0x3719: 0x000b, 0x371a: 0x000b, 0x371b: 0x000b, 0x371c: 0x000b, 0x371d: 0x000b,\n\t0x371e: 0x000b, 0x371f: 0x000b, 0x3720: 0x000b, 0x3721: 0x000b, 0x3722: 0x000b, 0x3723: 0x000b,\n\t0x3724: 0x000b, 0x3725: 0x000b, 0x3726: 0x000b, 0x3727: 0x000b, 0x3728: 0x000b, 0x3729: 0x000b,\n\t0x372a: 0x000b, 0x372b: 0x000b, 0x372c: 0x000b, 0x372d: 0x000b, 0x372e: 0x000b, 0x372f: 0x000b,\n\t0x3730: 0x000b, 0x3731: 0x000b, 0x3732: 0x000b, 0x3733: 0x000b, 0x3734: 0x000b, 0x3735: 0x000b,\n\t0x3736: 0x000b, 0x3737: 0x000b, 0x3738: 0x000b, 0x3739: 0x000b, 0x373a: 0x000b, 0x373b: 0x000b,\n\t0x373c: 0x000b, 0x373d: 0x000b, 0x373e: 0x000b, 0x373f: 0x000b,\n\t// Block 0xdd, offset 0x3740\n\t0x3740: 0x000c, 0x3741: 0x000c, 0x3742: 0x000c, 0x3743: 0x000c, 0x3744: 0x000c, 0x3745: 0x000c,\n\t0x3746: 0x000c, 0x3747: 0x000c, 0x3748: 0x000c, 0x3749: 0x000c, 0x374a: 0x000c, 0x374b: 0x000c,\n\t0x374c: 0x000c, 0x374d: 0x000c, 0x374e: 0x000c, 0x374f: 0x000c, 0x3750: 0x000c, 0x3751: 0x000c,\n\t0x3752: 0x000c, 0x3753: 0x000c, 0x3754: 0x000c, 0x3755: 0x000c, 0x3756: 0x000c, 0x3757: 0x000c,\n\t0x3758: 0x000c, 0x3759: 0x000c, 0x375a: 0x000c, 0x375b: 0x000c, 0x375c: 0x000c, 0x375d: 0x000c,\n\t0x375e: 0x000c, 0x375f: 0x000c, 0x3760: 0x000c, 0x3761: 0x000c, 0x3762: 0x000c, 0x3763: 0x000c,\n\t0x3764: 0x000c, 0x3765: 0x000c, 0x3766: 0x000c, 0x3767: 0x000c, 0x3768: 0x000c, 0x3769: 0x000c,\n\t0x376a: 0x000c, 0x376b: 0x000c, 0x376c: 0x000c, 0x376d: 0x000c, 0x376e: 0x000c, 0x376f: 0x000c,\n\t0x3770: 0x000b, 0x3771: 0x000b, 0x3772: 0x000b, 0x3773: 0x000b, 0x3774: 0x000b, 0x3775: 0x000b,\n\t0x3776: 0x000b, 0x3777: 0x000b, 0x3778: 0x000b, 0x3779: 0x000b, 0x377a: 0x000b, 0x377b: 0x000b,\n\t0x377c: 0x000b, 0x377d: 0x000b, 0x377e: 0x000b, 0x377f: 0x000b,\n}\n\n// bidiIndex: 24 blocks, 1536 entries, 1536 bytes\n// Block 0 is the zero block.\nvar bidiIndex = [1536]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x01, 0xc3: 0x02,\n\t0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08,\n\t0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b,\n\t0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06,\n\t0xea: 0x07, 0xef: 0x08,\n\t0xf0: 0x11, 0xf1: 0x12, 0xf2: 0x12, 0xf3: 0x14, 0xf4: 0x15,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b,\n\t0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22,\n\t0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x137: 0x28,\n\t0x138: 0x29, 0x139: 0x2a, 0x13a: 0x2b, 0x13b: 0x2c, 0x13c: 0x2d, 0x13d: 0x2e, 0x13e: 0x2f, 0x13f: 0x30,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x31, 0x141: 0x32, 0x142: 0x33,\n\t0x14d: 0x34, 0x14e: 0x35,\n\t0x150: 0x36,\n\t0x15a: 0x37, 0x15c: 0x38, 0x15d: 0x39, 0x15e: 0x3a, 0x15f: 0x3b,\n\t0x160: 0x3c, 0x162: 0x3d, 0x164: 0x3e, 0x165: 0x3f, 0x167: 0x40,\n\t0x168: 0x41, 0x169: 0x42, 0x16a: 0x43, 0x16c: 0x44, 0x16d: 0x45, 0x16e: 0x46, 0x16f: 0x47,\n\t0x170: 0x48, 0x173: 0x49, 0x177: 0x4a,\n\t0x17e: 0x4b, 0x17f: 0x4c,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x4d, 0x181: 0x4e, 0x182: 0x4f, 0x183: 0x50, 0x184: 0x51, 0x185: 0x52, 0x186: 0x53, 0x187: 0x54,\n\t0x188: 0x55, 0x189: 0x54, 0x18a: 0x54, 0x18b: 0x54, 0x18c: 0x56, 0x18d: 0x57, 0x18e: 0x58, 0x18f: 0x59,\n\t0x190: 0x5a, 0x191: 0x5b, 0x192: 0x5c, 0x193: 0x5d, 0x194: 0x54, 0x195: 0x54, 0x196: 0x54, 0x197: 0x54,\n\t0x198: 0x54, 0x199: 0x54, 0x19a: 0x5e, 0x19b: 0x54, 0x19c: 0x54, 0x19d: 0x5f, 0x19e: 0x54, 0x19f: 0x60,\n\t0x1a4: 0x54, 0x1a5: 0x54, 0x1a6: 0x61, 0x1a7: 0x62,\n\t0x1a8: 0x54, 0x1a9: 0x54, 0x1aa: 0x54, 0x1ab: 0x54, 0x1ac: 0x54, 0x1ad: 0x63, 0x1ae: 0x64, 0x1af: 0x65,\n\t0x1b3: 0x66, 0x1b5: 0x67, 0x1b7: 0x68,\n\t0x1b8: 0x69, 0x1b9: 0x6a, 0x1ba: 0x6b, 0x1bb: 0x6c, 0x1bc: 0x54, 0x1bd: 0x54, 0x1be: 0x54, 0x1bf: 0x6d,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x6e, 0x1c2: 0x6f, 0x1c3: 0x70, 0x1c7: 0x71,\n\t0x1c8: 0x72, 0x1c9: 0x73, 0x1ca: 0x74, 0x1cb: 0x75, 0x1cd: 0x76, 0x1cf: 0x77,\n\t// Block 0x8, offset 0x200\n\t0x237: 0x54,\n\t// Block 0x9, offset 0x240\n\t0x252: 0x78, 0x253: 0x79,\n\t0x258: 0x7a, 0x259: 0x7b, 0x25a: 0x7c, 0x25b: 0x7d, 0x25c: 0x7e, 0x25e: 0x7f,\n\t0x260: 0x80, 0x261: 0x81, 0x263: 0x82, 0x264: 0x83, 0x265: 0x84, 0x266: 0x85, 0x267: 0x86,\n\t0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26f: 0x8b,\n\t// Block 0xa, offset 0x280\n\t0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x0e, 0x2af: 0x0e,\n\t0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8e, 0x2b5: 0x0e, 0x2b6: 0x0e, 0x2b7: 0x8f,\n\t0x2b8: 0x90, 0x2b9: 0x91, 0x2ba: 0x0e, 0x2bb: 0x92, 0x2bc: 0x93, 0x2bd: 0x94, 0x2bf: 0x95,\n\t// Block 0xb, offset 0x2c0\n\t0x2c4: 0x96, 0x2c5: 0x54, 0x2c6: 0x97, 0x2c7: 0x98,\n\t0x2cb: 0x99, 0x2cd: 0x9a,\n\t0x2e0: 0x9b, 0x2e1: 0x9b, 0x2e2: 0x9b, 0x2e3: 0x9b, 0x2e4: 0x9c, 0x2e5: 0x9b, 0x2e6: 0x9b, 0x2e7: 0x9b,\n\t0x2e8: 0x9d, 0x2e9: 0x9b, 0x2ea: 0x9b, 0x2eb: 0x9e, 0x2ec: 0x9f, 0x2ed: 0x9b, 0x2ee: 0x9b, 0x2ef: 0x9b,\n\t0x2f0: 0x9b, 0x2f1: 0x9b, 0x2f2: 0x9b, 0x2f3: 0x9b, 0x2f4: 0x9b, 0x2f5: 0x9b, 0x2f6: 0x9b, 0x2f7: 0x9b,\n\t0x2f8: 0x9b, 0x2f9: 0xa0, 0x2fa: 0x9b, 0x2fb: 0x9b, 0x2fc: 0x9b, 0x2fd: 0x9b, 0x2fe: 0x9b, 0x2ff: 0x9b,\n\t// Block 0xc, offset 0x300\n\t0x300: 0xa1, 0x301: 0xa2, 0x302: 0xa3, 0x304: 0xa4, 0x305: 0xa5, 0x306: 0xa6, 0x307: 0xa7,\n\t0x308: 0xa8, 0x30b: 0xa9, 0x30c: 0xaa, 0x30d: 0xab,\n\t0x310: 0xac, 0x311: 0xad, 0x312: 0xae, 0x313: 0xaf, 0x316: 0xb0, 0x317: 0xb1,\n\t0x318: 0xb2, 0x319: 0xb3, 0x31a: 0xb4, 0x31c: 0xb5,\n\t0x330: 0xb6, 0x332: 0xb7,\n\t// Block 0xd, offset 0x340\n\t0x36b: 0xb8, 0x36c: 0xb9,\n\t0x37e: 0xba,\n\t// Block 0xe, offset 0x380\n\t0x3b2: 0xbb,\n\t// Block 0xf, offset 0x3c0\n\t0x3c5: 0xbc, 0x3c6: 0xbd,\n\t0x3c8: 0x54, 0x3c9: 0xbe, 0x3cc: 0x54, 0x3cd: 0xbf,\n\t0x3db: 0xc0, 0x3dc: 0xc1, 0x3dd: 0xc2, 0x3de: 0xc3, 0x3df: 0xc4,\n\t0x3e8: 0xc5, 0x3e9: 0xc6, 0x3ea: 0xc7,\n\t// Block 0x10, offset 0x400\n\t0x400: 0xc8,\n\t0x420: 0x9b, 0x421: 0x9b, 0x422: 0x9b, 0x423: 0xc9, 0x424: 0x9b, 0x425: 0xca, 0x426: 0x9b, 0x427: 0x9b,\n\t0x428: 0x9b, 0x429: 0x9b, 0x42a: 0x9b, 0x42b: 0x9b, 0x42c: 0x9b, 0x42d: 0x9b, 0x42e: 0x9b, 0x42f: 0x9b,\n\t0x430: 0x9b, 0x431: 0x9b, 0x432: 0x9b, 0x433: 0x9b, 0x434: 0x9b, 0x435: 0x9b, 0x436: 0x9b, 0x437: 0x9b,\n\t0x438: 0x0e, 0x439: 0x0e, 0x43a: 0x0e, 0x43b: 0xcb, 0x43c: 0x9b, 0x43d: 0x9b, 0x43e: 0x9b, 0x43f: 0x9b,\n\t// Block 0x11, offset 0x440\n\t0x440: 0xcc, 0x441: 0x54, 0x442: 0xcd, 0x443: 0xce, 0x444: 0xcf, 0x445: 0xd0,\n\t0x44c: 0x54, 0x44d: 0x54, 0x44e: 0x54, 0x44f: 0x54,\n\t0x450: 0x54, 0x451: 0x54, 0x452: 0x54, 0x453: 0x54, 0x454: 0x54, 0x455: 0x54, 0x456: 0x54, 0x457: 0x54,\n\t0x458: 0x54, 0x459: 0x54, 0x45a: 0x54, 0x45b: 0xd1, 0x45c: 0x54, 0x45d: 0x6c, 0x45e: 0x54, 0x45f: 0xd2,\n\t0x460: 0xd3, 0x461: 0xd4, 0x462: 0xd5, 0x464: 0xd6, 0x465: 0xd7, 0x466: 0xd8, 0x467: 0x36,\n\t0x47f: 0xd9,\n\t// Block 0x12, offset 0x480\n\t0x4bf: 0xd9,\n\t// Block 0x13, offset 0x4c0\n\t0x4d0: 0x09, 0x4d1: 0x0a, 0x4d6: 0x0b,\n\t0x4db: 0x0c, 0x4dd: 0x0d, 0x4de: 0x0e, 0x4df: 0x0f,\n\t0x4ef: 0x10,\n\t0x4ff: 0x10,\n\t// Block 0x14, offset 0x500\n\t0x50f: 0x10,\n\t0x51f: 0x10,\n\t0x52f: 0x10,\n\t0x53f: 0x10,\n\t// Block 0x15, offset 0x540\n\t0x540: 0xda, 0x541: 0xda, 0x542: 0xda, 0x543: 0xda, 0x544: 0x05, 0x545: 0x05, 0x546: 0x05, 0x547: 0xdb,\n\t0x548: 0xda, 0x549: 0xda, 0x54a: 0xda, 0x54b: 0xda, 0x54c: 0xda, 0x54d: 0xda, 0x54e: 0xda, 0x54f: 0xda,\n\t0x550: 0xda, 0x551: 0xda, 0x552: 0xda, 0x553: 0xda, 0x554: 0xda, 0x555: 0xda, 0x556: 0xda, 0x557: 0xda,\n\t0x558: 0xda, 0x559: 0xda, 0x55a: 0xda, 0x55b: 0xda, 0x55c: 0xda, 0x55d: 0xda, 0x55e: 0xda, 0x55f: 0xda,\n\t0x560: 0xda, 0x561: 0xda, 0x562: 0xda, 0x563: 0xda, 0x564: 0xda, 0x565: 0xda, 0x566: 0xda, 0x567: 0xda,\n\t0x568: 0xda, 0x569: 0xda, 0x56a: 0xda, 0x56b: 0xda, 0x56c: 0xda, 0x56d: 0xda, 0x56e: 0xda, 0x56f: 0xda,\n\t0x570: 0xda, 0x571: 0xda, 0x572: 0xda, 0x573: 0xda, 0x574: 0xda, 0x575: 0xda, 0x576: 0xda, 0x577: 0xda,\n\t0x578: 0xda, 0x579: 0xda, 0x57a: 0xda, 0x57b: 0xda, 0x57c: 0xda, 0x57d: 0xda, 0x57e: 0xda, 0x57f: 0xda,\n\t// Block 0x16, offset 0x580\n\t0x58f: 0x10,\n\t0x59f: 0x10,\n\t0x5a0: 0x13,\n\t0x5af: 0x10,\n\t0x5bf: 0x10,\n\t// Block 0x17, offset 0x5c0\n\t0x5cf: 0x10,\n}\n\n// Total table size 15800 bytes (15KiB); checksum: F50EF68C\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/bidi/trieval.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\npackage bidi\n\n// Class is the Unicode BiDi class. Each rune has a single class.\ntype Class uint\n\nconst (\n\tL       Class = iota // LeftToRight\n\tR                    // RightToLeft\n\tEN                   // EuropeanNumber\n\tES                   // EuropeanSeparator\n\tET                   // EuropeanTerminator\n\tAN                   // ArabicNumber\n\tCS                   // CommonSeparator\n\tB                    // ParagraphSeparator\n\tS                    // SegmentSeparator\n\tWS                   // WhiteSpace\n\tON                   // OtherNeutral\n\tBN                   // BoundaryNeutral\n\tNSM                  // NonspacingMark\n\tAL                   // ArabicLetter\n\tControl              // Control LRO - PDI\n\n\tnumClass\n\n\tLRO // LeftToRightOverride\n\tRLO // RightToLeftOverride\n\tLRE // LeftToRightEmbedding\n\tRLE // RightToLeftEmbedding\n\tPDF // PopDirectionalFormat\n\tLRI // LeftToRightIsolate\n\tRLI // RightToLeftIsolate\n\tFSI // FirstStrongIsolate\n\tPDI // PopDirectionalIsolate\n\n\tunknownClass = ^Class(0)\n)\n\n// A trie entry has the following bits:\n// 7..5  XOR mask for brackets\n// 4     1: Bracket open, 0: Bracket close\n// 3..0  Class type\n\nconst (\n\topenMask     = 0x10\n\txorMaskShift = 5\n)\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/composition.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport \"unicode/utf8\"\n\nconst (\n\tmaxNonStarters = 30\n\t// The maximum number of characters needed for a buffer is\n\t// maxNonStarters + 1 for the starter + 1 for the GCJ\n\tmaxBufferSize    = maxNonStarters + 2\n\tmaxNFCExpansion  = 3  // NFC(0x1D160)\n\tmaxNFKCExpansion = 18 // NFKC(0xFDFA)\n\n\tmaxByteBufferSize = utf8.UTFMax * maxBufferSize // 128\n)\n\n// ssState is used for reporting the segment state after inserting a rune.\n// It is returned by streamSafe.next.\ntype ssState int\n\nconst (\n\t// Indicates a rune was successfully added to the segment.\n\tssSuccess ssState = iota\n\t// Indicates a rune starts a new segment and should not be added.\n\tssStarter\n\t// Indicates a rune caused a segment overflow and a CGJ should be inserted.\n\tssOverflow\n)\n\n// streamSafe implements the policy of when a CGJ should be inserted.\ntype streamSafe uint8\n\n// first inserts the first rune of a segment. It is a faster version of next if\n// it is known p represents the first rune in a segment.\nfunc (ss *streamSafe) first(p Properties) {\n\t*ss = streamSafe(p.nTrailingNonStarters())\n}\n\n// insert returns a ssState value to indicate whether a rune represented by p\n// can be inserted.\nfunc (ss *streamSafe) next(p Properties) ssState {\n\tif *ss > maxNonStarters {\n\t\tpanic(\"streamSafe was not reset\")\n\t}\n\tn := p.nLeadingNonStarters()\n\tif *ss += streamSafe(n); *ss > maxNonStarters {\n\t\t*ss = 0\n\t\treturn ssOverflow\n\t}\n\t// The Stream-Safe Text Processing prescribes that the counting can stop\n\t// as soon as a starter is encountered. However, there are some starters,\n\t// like Jamo V and T, that can combine with other runes, leaving their\n\t// successive non-starters appended to the previous, possibly causing an\n\t// overflow. We will therefore consider any rune with a non-zero nLead to\n\t// be a non-starter. Note that it always hold that if nLead > 0 then\n\t// nLead == nTrail.\n\tif n == 0 {\n\t\t*ss = streamSafe(p.nTrailingNonStarters())\n\t\treturn ssStarter\n\t}\n\treturn ssSuccess\n}\n\n// backwards is used for checking for overflow and segment starts\n// when traversing a string backwards. Users do not need to call first\n// for the first rune. The state of the streamSafe retains the count of\n// the non-starters loaded.\nfunc (ss *streamSafe) backwards(p Properties) ssState {\n\tif *ss > maxNonStarters {\n\t\tpanic(\"streamSafe was not reset\")\n\t}\n\tc := *ss + streamSafe(p.nTrailingNonStarters())\n\tif c > maxNonStarters {\n\t\treturn ssOverflow\n\t}\n\t*ss = c\n\tif p.nLeadingNonStarters() == 0 {\n\t\treturn ssStarter\n\t}\n\treturn ssSuccess\n}\n\nfunc (ss streamSafe) isMax() bool {\n\treturn ss == maxNonStarters\n}\n\n// GraphemeJoiner is inserted after maxNonStarters non-starter runes.\nconst GraphemeJoiner = \"\\u034F\"\n\n// reorderBuffer is used to normalize a single segment.  Characters inserted with\n// insert are decomposed and reordered based on CCC. The compose method can\n// be used to recombine characters.  Note that the byte buffer does not hold\n// the UTF-8 characters in order.  Only the rune array is maintained in sorted\n// order. flush writes the resulting segment to a byte array.\ntype reorderBuffer struct {\n\trune  [maxBufferSize]Properties // Per character info.\n\tbyte  [maxByteBufferSize]byte   // UTF-8 buffer. Referenced by runeInfo.pos.\n\tnbyte uint8                     // Number or bytes.\n\tss    streamSafe                // For limiting length of non-starter sequence.\n\tnrune int                       // Number of runeInfos.\n\tf     formInfo\n\n\tsrc      input\n\tnsrc     int\n\ttmpBytes input\n\n\tout    []byte\n\tflushF func(*reorderBuffer) bool\n}\n\nfunc (rb *reorderBuffer) init(f Form, src []byte) {\n\trb.f = *formTable[f]\n\trb.src.setBytes(src)\n\trb.nsrc = len(src)\n\trb.ss = 0\n}\n\nfunc (rb *reorderBuffer) initString(f Form, src string) {\n\trb.f = *formTable[f]\n\trb.src.setString(src)\n\trb.nsrc = len(src)\n\trb.ss = 0\n}\n\nfunc (rb *reorderBuffer) setFlusher(out []byte, f func(*reorderBuffer) bool) {\n\trb.out = out\n\trb.flushF = f\n}\n\n// reset discards all characters from the buffer.\nfunc (rb *reorderBuffer) reset() {\n\trb.nrune = 0\n\trb.nbyte = 0\n}\n\nfunc (rb *reorderBuffer) doFlush() bool {\n\tif rb.f.composing {\n\t\trb.compose()\n\t}\n\tres := rb.flushF(rb)\n\trb.reset()\n\treturn res\n}\n\n// appendFlush appends the normalized segment to rb.out.\nfunc appendFlush(rb *reorderBuffer) bool {\n\tfor i := 0; i < rb.nrune; i++ {\n\t\tstart := rb.rune[i].pos\n\t\tend := start + rb.rune[i].size\n\t\trb.out = append(rb.out, rb.byte[start:end]...)\n\t}\n\treturn true\n}\n\n// flush appends the normalized segment to out and resets rb.\nfunc (rb *reorderBuffer) flush(out []byte) []byte {\n\tfor i := 0; i < rb.nrune; i++ {\n\t\tstart := rb.rune[i].pos\n\t\tend := start + rb.rune[i].size\n\t\tout = append(out, rb.byte[start:end]...)\n\t}\n\trb.reset()\n\treturn out\n}\n\n// flushCopy copies the normalized segment to buf and resets rb.\n// It returns the number of bytes written to buf.\nfunc (rb *reorderBuffer) flushCopy(buf []byte) int {\n\tp := 0\n\tfor i := 0; i < rb.nrune; i++ {\n\t\trunep := rb.rune[i]\n\t\tp += copy(buf[p:], rb.byte[runep.pos:runep.pos+runep.size])\n\t}\n\trb.reset()\n\treturn p\n}\n\n// insertOrdered inserts a rune in the buffer, ordered by Canonical Combining Class.\n// It returns false if the buffer is not large enough to hold the rune.\n// It is used internally by insert and insertString only.\nfunc (rb *reorderBuffer) insertOrdered(info Properties) {\n\tn := rb.nrune\n\tb := rb.rune[:]\n\tcc := info.ccc\n\tif cc > 0 {\n\t\t// Find insertion position + move elements to make room.\n\t\tfor ; n > 0; n-- {\n\t\t\tif b[n-1].ccc <= cc {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tb[n] = b[n-1]\n\t\t}\n\t}\n\trb.nrune += 1\n\tpos := uint8(rb.nbyte)\n\trb.nbyte += utf8.UTFMax\n\tinfo.pos = pos\n\tb[n] = info\n}\n\n// insertErr is an error code returned by insert. Using this type instead\n// of error improves performance up to 20% for many of the benchmarks.\ntype insertErr int\n\nconst (\n\tiSuccess insertErr = -iota\n\tiShortDst\n\tiShortSrc\n)\n\n// insertFlush inserts the given rune in the buffer ordered by CCC.\n// If a decomposition with multiple segments are encountered, they leading\n// ones are flushed.\n// It returns a non-zero error code if the rune was not inserted.\nfunc (rb *reorderBuffer) insertFlush(src input, i int, info Properties) insertErr {\n\tif rune := src.hangul(i); rune != 0 {\n\t\trb.decomposeHangul(rune)\n\t\treturn iSuccess\n\t}\n\tif info.hasDecomposition() {\n\t\treturn rb.insertDecomposed(info.Decomposition())\n\t}\n\trb.insertSingle(src, i, info)\n\treturn iSuccess\n}\n\n// insertUnsafe inserts the given rune in the buffer ordered by CCC.\n// It is assumed there is sufficient space to hold the runes. It is the\n// responsibility of the caller to ensure this. This can be done by checking\n// the state returned by the streamSafe type.\nfunc (rb *reorderBuffer) insertUnsafe(src input, i int, info Properties) {\n\tif rune := src.hangul(i); rune != 0 {\n\t\trb.decomposeHangul(rune)\n\t}\n\tif info.hasDecomposition() {\n\t\t// TODO: inline.\n\t\trb.insertDecomposed(info.Decomposition())\n\t} else {\n\t\trb.insertSingle(src, i, info)\n\t}\n}\n\n// insertDecomposed inserts an entry in to the reorderBuffer for each rune\n// in dcomp. dcomp must be a sequence of decomposed UTF-8-encoded runes.\n// It flushes the buffer on each new segment start.\nfunc (rb *reorderBuffer) insertDecomposed(dcomp []byte) insertErr {\n\trb.tmpBytes.setBytes(dcomp)\n\t// As the streamSafe accounting already handles the counting for modifiers,\n\t// we don't have to call next. However, we do need to keep the accounting\n\t// intact when flushing the buffer.\n\tfor i := 0; i < len(dcomp); {\n\t\tinfo := rb.f.info(rb.tmpBytes, i)\n\t\tif info.BoundaryBefore() && rb.nrune > 0 && !rb.doFlush() {\n\t\t\treturn iShortDst\n\t\t}\n\t\ti += copy(rb.byte[rb.nbyte:], dcomp[i:i+int(info.size)])\n\t\trb.insertOrdered(info)\n\t}\n\treturn iSuccess\n}\n\n// insertSingle inserts an entry in the reorderBuffer for the rune at\n// position i. info is the runeInfo for the rune at position i.\nfunc (rb *reorderBuffer) insertSingle(src input, i int, info Properties) {\n\tsrc.copySlice(rb.byte[rb.nbyte:], i, i+int(info.size))\n\trb.insertOrdered(info)\n}\n\n// insertCGJ inserts a Combining Grapheme Joiner (0x034f) into rb.\nfunc (rb *reorderBuffer) insertCGJ() {\n\trb.insertSingle(input{str: GraphemeJoiner}, 0, Properties{size: uint8(len(GraphemeJoiner))})\n}\n\n// appendRune inserts a rune at the end of the buffer. It is used for Hangul.\nfunc (rb *reorderBuffer) appendRune(r rune) {\n\tbn := rb.nbyte\n\tsz := utf8.EncodeRune(rb.byte[bn:], rune(r))\n\trb.nbyte += utf8.UTFMax\n\trb.rune[rb.nrune] = Properties{pos: bn, size: uint8(sz)}\n\trb.nrune++\n}\n\n// assignRune sets a rune at position pos. It is used for Hangul and recomposition.\nfunc (rb *reorderBuffer) assignRune(pos int, r rune) {\n\tbn := rb.rune[pos].pos\n\tsz := utf8.EncodeRune(rb.byte[bn:], rune(r))\n\trb.rune[pos] = Properties{pos: bn, size: uint8(sz)}\n}\n\n// runeAt returns the rune at position n. It is used for Hangul and recomposition.\nfunc (rb *reorderBuffer) runeAt(n int) rune {\n\tinf := rb.rune[n]\n\tr, _ := utf8.DecodeRune(rb.byte[inf.pos : inf.pos+inf.size])\n\treturn r\n}\n\n// bytesAt returns the UTF-8 encoding of the rune at position n.\n// It is used for Hangul and recomposition.\nfunc (rb *reorderBuffer) bytesAt(n int) []byte {\n\tinf := rb.rune[n]\n\treturn rb.byte[inf.pos : int(inf.pos)+int(inf.size)]\n}\n\n// For Hangul we combine algorithmically, instead of using tables.\nconst (\n\thangulBase  = 0xAC00 // UTF-8(hangulBase) -> EA B0 80\n\thangulBase0 = 0xEA\n\thangulBase1 = 0xB0\n\thangulBase2 = 0x80\n\n\thangulEnd  = hangulBase + jamoLVTCount // UTF-8(0xD7A4) -> ED 9E A4\n\thangulEnd0 = 0xED\n\thangulEnd1 = 0x9E\n\thangulEnd2 = 0xA4\n\n\tjamoLBase  = 0x1100 // UTF-8(jamoLBase) -> E1 84 00\n\tjamoLBase0 = 0xE1\n\tjamoLBase1 = 0x84\n\tjamoLEnd   = 0x1113\n\tjamoVBase  = 0x1161\n\tjamoVEnd   = 0x1176\n\tjamoTBase  = 0x11A7\n\tjamoTEnd   = 0x11C3\n\n\tjamoTCount   = 28\n\tjamoVCount   = 21\n\tjamoVTCount  = 21 * 28\n\tjamoLVTCount = 19 * 21 * 28\n)\n\nconst hangulUTF8Size = 3\n\nfunc isHangul(b []byte) bool {\n\tif len(b) < hangulUTF8Size {\n\t\treturn false\n\t}\n\tb0 := b[0]\n\tif b0 < hangulBase0 {\n\t\treturn false\n\t}\n\tb1 := b[1]\n\tswitch {\n\tcase b0 == hangulBase0:\n\t\treturn b1 >= hangulBase1\n\tcase b0 < hangulEnd0:\n\t\treturn true\n\tcase b0 > hangulEnd0:\n\t\treturn false\n\tcase b1 < hangulEnd1:\n\t\treturn true\n\t}\n\treturn b1 == hangulEnd1 && b[2] < hangulEnd2\n}\n\nfunc isHangulString(b string) bool {\n\tif len(b) < hangulUTF8Size {\n\t\treturn false\n\t}\n\tb0 := b[0]\n\tif b0 < hangulBase0 {\n\t\treturn false\n\t}\n\tb1 := b[1]\n\tswitch {\n\tcase b0 == hangulBase0:\n\t\treturn b1 >= hangulBase1\n\tcase b0 < hangulEnd0:\n\t\treturn true\n\tcase b0 > hangulEnd0:\n\t\treturn false\n\tcase b1 < hangulEnd1:\n\t\treturn true\n\t}\n\treturn b1 == hangulEnd1 && b[2] < hangulEnd2\n}\n\n// Caller must ensure len(b) >= 2.\nfunc isJamoVT(b []byte) bool {\n\t// True if (rune & 0xff00) == jamoLBase\n\treturn b[0] == jamoLBase0 && (b[1]&0xFC) == jamoLBase1\n}\n\nfunc isHangulWithoutJamoT(b []byte) bool {\n\tc, _ := utf8.DecodeRune(b)\n\tc -= hangulBase\n\treturn c < jamoLVTCount && c%jamoTCount == 0\n}\n\n// decomposeHangul writes the decomposed Hangul to buf and returns the number\n// of bytes written.  len(buf) should be at least 9.\nfunc decomposeHangul(buf []byte, r rune) int {\n\tconst JamoUTF8Len = 3\n\tr -= hangulBase\n\tx := r % jamoTCount\n\tr /= jamoTCount\n\tutf8.EncodeRune(buf, jamoLBase+r/jamoVCount)\n\tutf8.EncodeRune(buf[JamoUTF8Len:], jamoVBase+r%jamoVCount)\n\tif x != 0 {\n\t\tutf8.EncodeRune(buf[2*JamoUTF8Len:], jamoTBase+x)\n\t\treturn 3 * JamoUTF8Len\n\t}\n\treturn 2 * JamoUTF8Len\n}\n\n// decomposeHangul algorithmically decomposes a Hangul rune into\n// its Jamo components.\n// See https://unicode.org/reports/tr15/#Hangul for details on decomposing Hangul.\nfunc (rb *reorderBuffer) decomposeHangul(r rune) {\n\tr -= hangulBase\n\tx := r % jamoTCount\n\tr /= jamoTCount\n\trb.appendRune(jamoLBase + r/jamoVCount)\n\trb.appendRune(jamoVBase + r%jamoVCount)\n\tif x != 0 {\n\t\trb.appendRune(jamoTBase + x)\n\t}\n}\n\n// combineHangul algorithmically combines Jamo character components into Hangul.\n// See https://unicode.org/reports/tr15/#Hangul for details on combining Hangul.\nfunc (rb *reorderBuffer) combineHangul(s, i, k int) {\n\tb := rb.rune[:]\n\tbn := rb.nrune\n\tfor ; i < bn; i++ {\n\t\tcccB := b[k-1].ccc\n\t\tcccC := b[i].ccc\n\t\tif cccB == 0 {\n\t\t\ts = k - 1\n\t\t}\n\t\tif s != k-1 && cccB >= cccC {\n\t\t\t// b[i] is blocked by greater-equal cccX below it\n\t\t\tb[k] = b[i]\n\t\t\tk++\n\t\t} else {\n\t\t\tl := rb.runeAt(s) // also used to compare to hangulBase\n\t\t\tv := rb.runeAt(i) // also used to compare to jamoT\n\t\t\tswitch {\n\t\t\tcase jamoLBase <= l && l < jamoLEnd &&\n\t\t\t\tjamoVBase <= v && v < jamoVEnd:\n\t\t\t\t// 11xx plus 116x to LV\n\t\t\t\trb.assignRune(s, hangulBase+\n\t\t\t\t\t(l-jamoLBase)*jamoVTCount+(v-jamoVBase)*jamoTCount)\n\t\t\tcase hangulBase <= l && l < hangulEnd &&\n\t\t\t\tjamoTBase < v && v < jamoTEnd &&\n\t\t\t\t((l-hangulBase)%jamoTCount) == 0:\n\t\t\t\t// ACxx plus 11Ax to LVT\n\t\t\t\trb.assignRune(s, l+v-jamoTBase)\n\t\t\tdefault:\n\t\t\t\tb[k] = b[i]\n\t\t\t\tk++\n\t\t\t}\n\t\t}\n\t}\n\trb.nrune = k\n}\n\n// compose recombines the runes in the buffer.\n// It should only be used to recompose a single segment, as it will not\n// handle alternations between Hangul and non-Hangul characters correctly.\nfunc (rb *reorderBuffer) compose() {\n\t// Lazily load the map used by the combine func below, but do\n\t// it outside of the loop.\n\trecompMapOnce.Do(buildRecompMap)\n\n\t// UAX #15, section X5 , including Corrigendum #5\n\t// \"In any character sequence beginning with starter S, a character C is\n\t//  blocked from S if and only if there is some character B between S\n\t//  and C, and either B is a starter or it has the same or higher\n\t//  combining class as C.\"\n\tbn := rb.nrune\n\tif bn == 0 {\n\t\treturn\n\t}\n\tk := 1\n\tb := rb.rune[:]\n\tfor s, i := 0, 1; i < bn; i++ {\n\t\tif isJamoVT(rb.bytesAt(i)) {\n\t\t\t// Redo from start in Hangul mode. Necessary to support\n\t\t\t// U+320E..U+321E in NFKC mode.\n\t\t\trb.combineHangul(s, i, k)\n\t\t\treturn\n\t\t}\n\t\tii := b[i]\n\t\t// We can only use combineForward as a filter if we later\n\t\t// get the info for the combined character. This is more\n\t\t// expensive than using the filter. Using combinesBackward()\n\t\t// is safe.\n\t\tif ii.combinesBackward() {\n\t\t\tcccB := b[k-1].ccc\n\t\t\tcccC := ii.ccc\n\t\t\tblocked := false // b[i] blocked by starter or greater or equal CCC?\n\t\t\tif cccB == 0 {\n\t\t\t\ts = k - 1\n\t\t\t} else {\n\t\t\t\tblocked = s != k-1 && cccB >= cccC\n\t\t\t}\n\t\t\tif !blocked {\n\t\t\t\tcombined := combine(rb.runeAt(s), rb.runeAt(i))\n\t\t\t\tif combined != 0 {\n\t\t\t\t\trb.assignRune(s, combined)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tb[k] = b[i]\n\t\tk++\n\t}\n\trb.nrune = k\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/forminfo.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport \"encoding/binary\"\n\n// This file contains Form-specific logic and wrappers for data in tables.go.\n\n// Rune info is stored in a separate trie per composing form. A composing form\n// and its corresponding decomposing form share the same trie.  Each trie maps\n// a rune to a uint16. The values take two forms.  For v >= 0x8000:\n//   bits\n//   15:    1 (inverse of NFD_QC bit of qcInfo)\n//   13..7: qcInfo (see below). isYesD is always true (no decomposition).\n//    6..0: ccc (compressed CCC value).\n// For v < 0x8000, the respective rune has a decomposition and v is an index\n// into a byte array of UTF-8 decomposition sequences and additional info and\n// has the form:\n//    <header> <decomp_byte>* [<tccc> [<lccc>]]\n// The header contains the number of bytes in the decomposition (excluding this\n// length byte). The two most significant bits of this length byte correspond\n// to bit 5 and 4 of qcInfo (see below).  The byte sequence itself starts at v+1.\n// The byte sequence is followed by a trailing and leading CCC if the values\n// for these are not zero.  The value of v determines which ccc are appended\n// to the sequences.  For v < firstCCC, there are none, for v >= firstCCC,\n// the sequence is followed by a trailing ccc, and for v >= firstLeadingCC\n// there is an additional leading ccc. The value of tccc itself is the\n// trailing CCC shifted left 2 bits. The two least-significant bits of tccc\n// are the number of trailing non-starters.\n\nconst (\n\tqcInfoMask      = 0x3F // to clear all but the relevant bits in a qcInfo\n\theaderLenMask   = 0x3F // extract the length value from the header byte\n\theaderFlagsMask = 0xC0 // extract the qcInfo bits from the header byte\n)\n\n// Properties provides access to normalization properties of a rune.\ntype Properties struct {\n\tpos   uint8  // start position in reorderBuffer; used in composition.go\n\tsize  uint8  // length of UTF-8 encoding of this rune\n\tccc   uint8  // leading canonical combining class (ccc if not decomposition)\n\ttccc  uint8  // trailing canonical combining class (ccc if not decomposition)\n\tnLead uint8  // number of leading non-starters.\n\tflags qcInfo // quick check flags\n\tindex uint16\n}\n\n// functions dispatchable per form\ntype lookupFunc func(b input, i int) Properties\n\n// formInfo holds Form-specific functions and tables.\ntype formInfo struct {\n\tform                     Form\n\tcomposing, compatibility bool // form type\n\tinfo                     lookupFunc\n\tnextMain                 iterFunc\n}\n\nvar formTable = []*formInfo{{\n\tform:          NFC,\n\tcomposing:     true,\n\tcompatibility: false,\n\tinfo:          lookupInfoNFC,\n\tnextMain:      nextComposed,\n}, {\n\tform:          NFD,\n\tcomposing:     false,\n\tcompatibility: false,\n\tinfo:          lookupInfoNFC,\n\tnextMain:      nextDecomposed,\n}, {\n\tform:          NFKC,\n\tcomposing:     true,\n\tcompatibility: true,\n\tinfo:          lookupInfoNFKC,\n\tnextMain:      nextComposed,\n}, {\n\tform:          NFKD,\n\tcomposing:     false,\n\tcompatibility: true,\n\tinfo:          lookupInfoNFKC,\n\tnextMain:      nextDecomposed,\n}}\n\n// We do not distinguish between boundaries for NFC, NFD, etc. to avoid\n// unexpected behavior for the user.  For example, in NFD, there is a boundary\n// after 'a'.  However, 'a' might combine with modifiers, so from the application's\n// perspective it is not a good boundary. We will therefore always use the\n// boundaries for the combining variants.\n\n// BoundaryBefore returns true if this rune starts a new segment and\n// cannot combine with any rune on the left.\nfunc (p Properties) BoundaryBefore() bool {\n\tif p.ccc == 0 && !p.combinesBackward() {\n\t\treturn true\n\t}\n\t// We assume that the CCC of the first character in a decomposition\n\t// is always non-zero if different from info.ccc and that we can return\n\t// false at this point. This is verified by maketables.\n\treturn false\n}\n\n// BoundaryAfter returns true if runes cannot combine with or otherwise\n// interact with this or previous runes.\nfunc (p Properties) BoundaryAfter() bool {\n\t// TODO: loosen these conditions.\n\treturn p.isInert()\n}\n\n// We pack quick check data in 4 bits:\n//\n//\t5:    Combines forward  (0 == false, 1 == true)\n//\t4..3: NFC_QC Yes(00), No (10), or Maybe (11)\n//\t2:    NFD_QC Yes (0) or No (1). No also means there is a decomposition.\n//\t1..0: Number of trailing non-starters.\n//\n// When all 4 bits are zero, the character is inert, meaning it is never\n// influenced by normalization.\ntype qcInfo uint8\n\nfunc (p Properties) isYesC() bool { return p.flags&0x10 == 0 }\nfunc (p Properties) isYesD() bool { return p.flags&0x4 == 0 }\n\nfunc (p Properties) combinesForward() bool  { return p.flags&0x20 != 0 }\nfunc (p Properties) combinesBackward() bool { return p.flags&0x8 != 0 } // == isMaybe\nfunc (p Properties) hasDecomposition() bool { return p.flags&0x4 != 0 } // == isNoD\n\nfunc (p Properties) isInert() bool {\n\treturn p.flags&qcInfoMask == 0 && p.ccc == 0\n}\n\nfunc (p Properties) multiSegment() bool {\n\treturn p.index >= firstMulti && p.index < endMulti\n}\n\nfunc (p Properties) nLeadingNonStarters() uint8 {\n\treturn p.nLead\n}\n\nfunc (p Properties) nTrailingNonStarters() uint8 {\n\treturn uint8(p.flags & 0x03)\n}\n\n// Decomposition returns the decomposition for the underlying rune\n// or nil if there is none.\nfunc (p Properties) Decomposition() []byte {\n\t// TODO: create the decomposition for Hangul?\n\tif p.index == 0 {\n\t\treturn nil\n\t}\n\ti := p.index\n\tn := decomps[i] & headerLenMask\n\ti++\n\treturn decomps[i : i+uint16(n)]\n}\n\n// Size returns the length of UTF-8 encoding of the rune.\nfunc (p Properties) Size() int {\n\treturn int(p.size)\n}\n\n// CCC returns the canonical combining class of the underlying rune.\nfunc (p Properties) CCC() uint8 {\n\tif p.index >= firstCCCZeroExcept {\n\t\treturn 0\n\t}\n\treturn ccc[p.ccc]\n}\n\n// LeadCCC returns the CCC of the first rune in the decomposition.\n// If there is no decomposition, LeadCCC equals CCC.\nfunc (p Properties) LeadCCC() uint8 {\n\treturn ccc[p.ccc]\n}\n\n// TrailCCC returns the CCC of the last rune in the decomposition.\n// If there is no decomposition, TrailCCC equals CCC.\nfunc (p Properties) TrailCCC() uint8 {\n\treturn ccc[p.tccc]\n}\n\nfunc buildRecompMap() {\n\trecompMap = make(map[uint32]rune, len(recompMapPacked)/8)\n\tvar buf [8]byte\n\tfor i := 0; i < len(recompMapPacked); i += 8 {\n\t\tcopy(buf[:], recompMapPacked[i:i+8])\n\t\tkey := binary.BigEndian.Uint32(buf[:4])\n\t\tval := binary.BigEndian.Uint32(buf[4:])\n\t\trecompMap[key] = rune(val)\n\t}\n}\n\n// Recomposition\n// We use 32-bit keys instead of 64-bit for the two codepoint keys.\n// This clips off the bits of three entries, but we know this will not\n// result in a collision. In the unlikely event that changes to\n// UnicodeData.txt introduce collisions, the compiler will catch it.\n// Note that the recomposition map for NFC and NFKC are identical.\n\n// combine returns the combined rune or 0 if it doesn't exist.\n//\n// The caller is responsible for calling\n// recompMapOnce.Do(buildRecompMap) sometime before this is called.\nfunc combine(a, b rune) rune {\n\tkey := uint32(uint16(a))<<16 + uint32(uint16(b))\n\tif recompMap == nil {\n\t\tpanic(\"caller error\") // see func comment\n\t}\n\treturn recompMap[key]\n}\n\nfunc lookupInfoNFC(b input, i int) Properties {\n\tv, sz := b.charinfoNFC(i)\n\treturn compInfo(v, sz)\n}\n\nfunc lookupInfoNFKC(b input, i int) Properties {\n\tv, sz := b.charinfoNFKC(i)\n\treturn compInfo(v, sz)\n}\n\n// Properties returns properties for the first rune in s.\nfunc (f Form) Properties(s []byte) Properties {\n\tif f == NFC || f == NFD {\n\t\treturn compInfo(nfcData.lookup(s))\n\t}\n\treturn compInfo(nfkcData.lookup(s))\n}\n\n// PropertiesString returns properties for the first rune in s.\nfunc (f Form) PropertiesString(s string) Properties {\n\tif f == NFC || f == NFD {\n\t\treturn compInfo(nfcData.lookupString(s))\n\t}\n\treturn compInfo(nfkcData.lookupString(s))\n}\n\n// compInfo converts the information contained in v and sz\n// to a Properties.  See the comment at the top of the file\n// for more information on the format.\nfunc compInfo(v uint16, sz int) Properties {\n\tif v == 0 {\n\t\treturn Properties{size: uint8(sz)}\n\t} else if v >= 0x8000 {\n\t\tp := Properties{\n\t\t\tsize:  uint8(sz),\n\t\t\tccc:   uint8(v),\n\t\t\ttccc:  uint8(v),\n\t\t\tflags: qcInfo(v >> 8),\n\t\t}\n\t\tif p.ccc > 0 || p.combinesBackward() {\n\t\t\tp.nLead = uint8(p.flags & 0x3)\n\t\t}\n\t\treturn p\n\t}\n\t// has decomposition\n\th := decomps[v]\n\tf := (qcInfo(h&headerFlagsMask) >> 2) | 0x4\n\tp := Properties{size: uint8(sz), flags: f, index: v}\n\tif v >= firstCCC {\n\t\tv += uint16(h&headerLenMask) + 1\n\t\tc := decomps[v]\n\t\tp.tccc = c >> 2\n\t\tp.flags |= qcInfo(c & 0x3)\n\t\tif v >= firstLeadingCCC {\n\t\t\tp.nLead = c & 0x3\n\t\t\tif v >= firstStarterWithNLead {\n\t\t\t\t// We were tricked. Remove the decomposition.\n\t\t\t\tp.flags &= 0x03\n\t\t\t\tp.index = 0\n\t\t\t\treturn p\n\t\t\t}\n\t\t\tp.ccc = decomps[v+1]\n\t\t}\n\t}\n\treturn p\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/input.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport \"unicode/utf8\"\n\ntype input struct {\n\tstr   string\n\tbytes []byte\n}\n\nfunc inputBytes(str []byte) input {\n\treturn input{bytes: str}\n}\n\nfunc inputString(str string) input {\n\treturn input{str: str}\n}\n\nfunc (in *input) setBytes(str []byte) {\n\tin.str = \"\"\n\tin.bytes = str\n}\n\nfunc (in *input) setString(str string) {\n\tin.str = str\n\tin.bytes = nil\n}\n\nfunc (in *input) _byte(p int) byte {\n\tif in.bytes == nil {\n\t\treturn in.str[p]\n\t}\n\treturn in.bytes[p]\n}\n\nfunc (in *input) skipASCII(p, max int) int {\n\tif in.bytes == nil {\n\t\tfor ; p < max && in.str[p] < utf8.RuneSelf; p++ {\n\t\t}\n\t} else {\n\t\tfor ; p < max && in.bytes[p] < utf8.RuneSelf; p++ {\n\t\t}\n\t}\n\treturn p\n}\n\nfunc (in *input) skipContinuationBytes(p int) int {\n\tif in.bytes == nil {\n\t\tfor ; p < len(in.str) && !utf8.RuneStart(in.str[p]); p++ {\n\t\t}\n\t} else {\n\t\tfor ; p < len(in.bytes) && !utf8.RuneStart(in.bytes[p]); p++ {\n\t\t}\n\t}\n\treturn p\n}\n\nfunc (in *input) appendSlice(buf []byte, b, e int) []byte {\n\tif in.bytes != nil {\n\t\treturn append(buf, in.bytes[b:e]...)\n\t}\n\tfor i := b; i < e; i++ {\n\t\tbuf = append(buf, in.str[i])\n\t}\n\treturn buf\n}\n\nfunc (in *input) copySlice(buf []byte, b, e int) int {\n\tif in.bytes == nil {\n\t\treturn copy(buf, in.str[b:e])\n\t}\n\treturn copy(buf, in.bytes[b:e])\n}\n\nfunc (in *input) charinfoNFC(p int) (uint16, int) {\n\tif in.bytes == nil {\n\t\treturn nfcData.lookupString(in.str[p:])\n\t}\n\treturn nfcData.lookup(in.bytes[p:])\n}\n\nfunc (in *input) charinfoNFKC(p int) (uint16, int) {\n\tif in.bytes == nil {\n\t\treturn nfkcData.lookupString(in.str[p:])\n\t}\n\treturn nfkcData.lookup(in.bytes[p:])\n}\n\nfunc (in *input) hangul(p int) (r rune) {\n\tvar size int\n\tif in.bytes == nil {\n\t\tif !isHangulString(in.str[p:]) {\n\t\t\treturn 0\n\t\t}\n\t\tr, size = utf8.DecodeRuneInString(in.str[p:])\n\t} else {\n\t\tif !isHangul(in.bytes[p:]) {\n\t\t\treturn 0\n\t\t}\n\t\tr, size = utf8.DecodeRune(in.bytes[p:])\n\t}\n\tif size != hangulUTF8Size {\n\t\treturn 0\n\t}\n\treturn r\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/iter.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport (\n\t\"fmt\"\n\t\"unicode/utf8\"\n)\n\n// MaxSegmentSize is the maximum size of a byte buffer needed to consider any\n// sequence of starter and non-starter runes for the purpose of normalization.\nconst MaxSegmentSize = maxByteBufferSize\n\n// An Iter iterates over a string or byte slice, while normalizing it\n// to a given Form.\ntype Iter struct {\n\trb     reorderBuffer\n\tbuf    [maxByteBufferSize]byte\n\tinfo   Properties // first character saved from previous iteration\n\tnext   iterFunc   // implementation of next depends on form\n\tasciiF iterFunc\n\n\tp        int    // current position in input source\n\tmultiSeg []byte // remainder of multi-segment decomposition\n}\n\ntype iterFunc func(*Iter) []byte\n\n// Init initializes i to iterate over src after normalizing it to Form f.\nfunc (i *Iter) Init(f Form, src []byte) {\n\ti.p = 0\n\tif len(src) == 0 {\n\t\ti.setDone()\n\t\ti.rb.nsrc = 0\n\t\treturn\n\t}\n\ti.multiSeg = nil\n\ti.rb.init(f, src)\n\ti.next = i.rb.f.nextMain\n\ti.asciiF = nextASCIIBytes\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.rb.ss.first(i.info)\n}\n\n// InitString initializes i to iterate over src after normalizing it to Form f.\nfunc (i *Iter) InitString(f Form, src string) {\n\ti.p = 0\n\tif len(src) == 0 {\n\t\ti.setDone()\n\t\ti.rb.nsrc = 0\n\t\treturn\n\t}\n\ti.multiSeg = nil\n\ti.rb.initString(f, src)\n\ti.next = i.rb.f.nextMain\n\ti.asciiF = nextASCIIString\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.rb.ss.first(i.info)\n}\n\n// Seek sets the segment to be returned by the next call to Next to start\n// at position p.  It is the responsibility of the caller to set p to the\n// start of a segment.\nfunc (i *Iter) Seek(offset int64, whence int) (int64, error) {\n\tvar abs int64\n\tswitch whence {\n\tcase 0:\n\t\tabs = offset\n\tcase 1:\n\t\tabs = int64(i.p) + offset\n\tcase 2:\n\t\tabs = int64(i.rb.nsrc) + offset\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"norm: invalid whence\")\n\t}\n\tif abs < 0 {\n\t\treturn 0, fmt.Errorf(\"norm: negative position\")\n\t}\n\tif int(abs) >= i.rb.nsrc {\n\t\ti.setDone()\n\t\treturn int64(i.p), nil\n\t}\n\ti.p = int(abs)\n\ti.multiSeg = nil\n\ti.next = i.rb.f.nextMain\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.rb.ss.first(i.info)\n\treturn abs, nil\n}\n\n// returnSlice returns a slice of the underlying input type as a byte slice.\n// If the underlying is of type []byte, it will simply return a slice.\n// If the underlying is of type string, it will copy the slice to the buffer\n// and return that.\nfunc (i *Iter) returnSlice(a, b int) []byte {\n\tif i.rb.src.bytes == nil {\n\t\treturn i.buf[:copy(i.buf[:], i.rb.src.str[a:b])]\n\t}\n\treturn i.rb.src.bytes[a:b]\n}\n\n// Pos returns the byte position at which the next call to Next will commence processing.\nfunc (i *Iter) Pos() int {\n\treturn i.p\n}\n\nfunc (i *Iter) setDone() {\n\ti.next = nextDone\n\ti.p = i.rb.nsrc\n}\n\n// Done returns true if there is no more input to process.\nfunc (i *Iter) Done() bool {\n\treturn i.p >= i.rb.nsrc\n}\n\n// Next returns f(i.input[i.Pos():n]), where n is a boundary of i.input.\n// For any input a and b for which f(a) == f(b), subsequent calls\n// to Next will return the same segments.\n// Modifying runes are grouped together with the preceding starter, if such a starter exists.\n// Although not guaranteed, n will typically be the smallest possible n.\nfunc (i *Iter) Next() []byte {\n\treturn i.next(i)\n}\n\nfunc nextASCIIBytes(i *Iter) []byte {\n\tp := i.p + 1\n\tif p >= i.rb.nsrc {\n\t\tp0 := i.p\n\t\ti.setDone()\n\t\treturn i.rb.src.bytes[p0:p]\n\t}\n\tif i.rb.src.bytes[p] < utf8.RuneSelf {\n\t\tp0 := i.p\n\t\ti.p = p\n\t\treturn i.rb.src.bytes[p0:p]\n\t}\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.next = i.rb.f.nextMain\n\treturn i.next(i)\n}\n\nfunc nextASCIIString(i *Iter) []byte {\n\tp := i.p + 1\n\tif p >= i.rb.nsrc {\n\t\ti.buf[0] = i.rb.src.str[i.p]\n\t\ti.setDone()\n\t\treturn i.buf[:1]\n\t}\n\tif i.rb.src.str[p] < utf8.RuneSelf {\n\t\ti.buf[0] = i.rb.src.str[i.p]\n\t\ti.p = p\n\t\treturn i.buf[:1]\n\t}\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.next = i.rb.f.nextMain\n\treturn i.next(i)\n}\n\nfunc nextHangul(i *Iter) []byte {\n\tp := i.p\n\tnext := p + hangulUTF8Size\n\tif next >= i.rb.nsrc {\n\t\ti.setDone()\n\t} else if i.rb.src.hangul(next) == 0 {\n\t\ti.rb.ss.next(i.info)\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\ti.next = i.rb.f.nextMain\n\t\treturn i.next(i)\n\t}\n\ti.p = next\n\treturn i.buf[:decomposeHangul(i.buf[:], i.rb.src.hangul(p))]\n}\n\nfunc nextDone(i *Iter) []byte {\n\treturn nil\n}\n\n// nextMulti is used for iterating over multi-segment decompositions\n// for decomposing normal forms.\nfunc nextMulti(i *Iter) []byte {\n\tj := 0\n\td := i.multiSeg\n\t// skip first rune\n\tfor j = 1; j < len(d) && !utf8.RuneStart(d[j]); j++ {\n\t}\n\tfor j < len(d) {\n\t\tinfo := i.rb.f.info(input{bytes: d}, j)\n\t\tif info.BoundaryBefore() {\n\t\t\ti.multiSeg = d[j:]\n\t\t\treturn d[:j]\n\t\t}\n\t\tj += int(info.size)\n\t}\n\t// treat last segment as normal decomposition\n\ti.next = i.rb.f.nextMain\n\treturn i.next(i)\n}\n\n// nextMultiNorm is used for iterating over multi-segment decompositions\n// for composing normal forms.\nfunc nextMultiNorm(i *Iter) []byte {\n\tj := 0\n\td := i.multiSeg\n\tfor j < len(d) {\n\t\tinfo := i.rb.f.info(input{bytes: d}, j)\n\t\tif info.BoundaryBefore() {\n\t\t\ti.rb.compose()\n\t\t\tseg := i.buf[:i.rb.flushCopy(i.buf[:])]\n\t\t\ti.rb.insertUnsafe(input{bytes: d}, j, info)\n\t\t\ti.multiSeg = d[j+int(info.size):]\n\t\t\treturn seg\n\t\t}\n\t\ti.rb.insertUnsafe(input{bytes: d}, j, info)\n\t\tj += int(info.size)\n\t}\n\ti.multiSeg = nil\n\ti.next = nextComposed\n\treturn doNormComposed(i)\n}\n\n// nextDecomposed is the implementation of Next for forms NFD and NFKD.\nfunc nextDecomposed(i *Iter) (next []byte) {\n\toutp := 0\n\tinCopyStart, outCopyStart := i.p, 0\n\tfor {\n\t\tif sz := int(i.info.size); sz <= 1 {\n\t\t\ti.rb.ss = 0\n\t\t\tp := i.p\n\t\t\ti.p++ // ASCII or illegal byte.  Either way, advance by 1.\n\t\t\tif i.p >= i.rb.nsrc {\n\t\t\t\ti.setDone()\n\t\t\t\treturn i.returnSlice(p, i.p)\n\t\t\t} else if i.rb.src._byte(i.p) < utf8.RuneSelf {\n\t\t\t\ti.next = i.asciiF\n\t\t\t\treturn i.returnSlice(p, i.p)\n\t\t\t}\n\t\t\toutp++\n\t\t} else if d := i.info.Decomposition(); d != nil {\n\t\t\t// Note: If leading CCC != 0, then len(d) == 2 and last is also non-zero.\n\t\t\t// Case 1: there is a leftover to copy.  In this case the decomposition\n\t\t\t// must begin with a modifier and should always be appended.\n\t\t\t// Case 2: no leftover. Simply return d if followed by a ccc == 0 value.\n\t\t\tp := outp + len(d)\n\t\t\tif outp > 0 {\n\t\t\t\ti.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p)\n\t\t\t\t// TODO: this condition should not be possible, but we leave it\n\t\t\t\t// in for defensive purposes.\n\t\t\t\tif p > len(i.buf) {\n\t\t\t\t\treturn i.buf[:outp]\n\t\t\t\t}\n\t\t\t} else if i.info.multiSegment() {\n\t\t\t\t// outp must be 0 as multi-segment decompositions always\n\t\t\t\t// start a new segment.\n\t\t\t\tif i.multiSeg == nil {\n\t\t\t\t\ti.multiSeg = d\n\t\t\t\t\ti.next = nextMulti\n\t\t\t\t\treturn nextMulti(i)\n\t\t\t\t}\n\t\t\t\t// We are in the last segment.  Treat as normal decomposition.\n\t\t\t\td = i.multiSeg\n\t\t\t\ti.multiSeg = nil\n\t\t\t\tp = len(d)\n\t\t\t}\n\t\t\tprevCC := i.info.tccc\n\t\t\tif i.p += sz; i.p >= i.rb.nsrc {\n\t\t\t\ti.setDone()\n\t\t\t\ti.info = Properties{} // Force BoundaryBefore to succeed.\n\t\t\t} else {\n\t\t\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\t\t}\n\t\t\tswitch i.rb.ss.next(i.info) {\n\t\t\tcase ssOverflow:\n\t\t\t\ti.next = nextCGJDecompose\n\t\t\t\tfallthrough\n\t\t\tcase ssStarter:\n\t\t\t\tif outp > 0 {\n\t\t\t\t\tcopy(i.buf[outp:], d)\n\t\t\t\t\treturn i.buf[:p]\n\t\t\t\t}\n\t\t\t\treturn d\n\t\t\t}\n\t\t\tcopy(i.buf[outp:], d)\n\t\t\toutp = p\n\t\t\tinCopyStart, outCopyStart = i.p, outp\n\t\t\tif i.info.ccc < prevCC {\n\t\t\t\tgoto doNorm\n\t\t\t}\n\t\t\tcontinue\n\t\t} else if r := i.rb.src.hangul(i.p); r != 0 {\n\t\t\toutp = decomposeHangul(i.buf[:], r)\n\t\t\ti.p += hangulUTF8Size\n\t\t\tinCopyStart, outCopyStart = i.p, outp\n\t\t\tif i.p >= i.rb.nsrc {\n\t\t\t\ti.setDone()\n\t\t\t\tbreak\n\t\t\t} else if i.rb.src.hangul(i.p) != 0 {\n\t\t\t\ti.next = nextHangul\n\t\t\t\treturn i.buf[:outp]\n\t\t\t}\n\t\t} else {\n\t\t\tp := outp + sz\n\t\t\tif p > len(i.buf) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\toutp = p\n\t\t\ti.p += sz\n\t\t}\n\t\tif i.p >= i.rb.nsrc {\n\t\t\ti.setDone()\n\t\t\tbreak\n\t\t}\n\t\tprevCC := i.info.tccc\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\tif v := i.rb.ss.next(i.info); v == ssStarter {\n\t\t\tbreak\n\t\t} else if v == ssOverflow {\n\t\t\ti.next = nextCGJDecompose\n\t\t\tbreak\n\t\t}\n\t\tif i.info.ccc < prevCC {\n\t\t\tgoto doNorm\n\t\t}\n\t}\n\tif outCopyStart == 0 {\n\t\treturn i.returnSlice(inCopyStart, i.p)\n\t} else if inCopyStart < i.p {\n\t\ti.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p)\n\t}\n\treturn i.buf[:outp]\ndoNorm:\n\t// Insert what we have decomposed so far in the reorderBuffer.\n\t// As we will only reorder, there will always be enough room.\n\ti.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p)\n\ti.rb.insertDecomposed(i.buf[0:outp])\n\treturn doNormDecomposed(i)\n}\n\nfunc doNormDecomposed(i *Iter) []byte {\n\tfor {\n\t\ti.rb.insertUnsafe(i.rb.src, i.p, i.info)\n\t\tif i.p += int(i.info.size); i.p >= i.rb.nsrc {\n\t\t\ti.setDone()\n\t\t\tbreak\n\t\t}\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\tif i.info.ccc == 0 {\n\t\t\tbreak\n\t\t}\n\t\tif s := i.rb.ss.next(i.info); s == ssOverflow {\n\t\t\ti.next = nextCGJDecompose\n\t\t\tbreak\n\t\t}\n\t}\n\t// new segment or too many combining characters: exit normalization\n\treturn i.buf[:i.rb.flushCopy(i.buf[:])]\n}\n\nfunc nextCGJDecompose(i *Iter) []byte {\n\ti.rb.ss = 0\n\ti.rb.insertCGJ()\n\ti.next = nextDecomposed\n\ti.rb.ss.first(i.info)\n\tbuf := doNormDecomposed(i)\n\treturn buf\n}\n\n// nextComposed is the implementation of Next for forms NFC and NFKC.\nfunc nextComposed(i *Iter) []byte {\n\toutp, startp := 0, i.p\n\tvar prevCC uint8\n\tfor {\n\t\tif !i.info.isYesC() {\n\t\t\tgoto doNorm\n\t\t}\n\t\tprevCC = i.info.tccc\n\t\tsz := int(i.info.size)\n\t\tif sz == 0 {\n\t\t\tsz = 1 // illegal rune: copy byte-by-byte\n\t\t}\n\t\tp := outp + sz\n\t\tif p > len(i.buf) {\n\t\t\tbreak\n\t\t}\n\t\toutp = p\n\t\ti.p += sz\n\t\tif i.p >= i.rb.nsrc {\n\t\t\ti.setDone()\n\t\t\tbreak\n\t\t} else if i.rb.src._byte(i.p) < utf8.RuneSelf {\n\t\t\ti.rb.ss = 0\n\t\t\ti.next = i.asciiF\n\t\t\tbreak\n\t\t}\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\tif v := i.rb.ss.next(i.info); v == ssStarter {\n\t\t\tbreak\n\t\t} else if v == ssOverflow {\n\t\t\ti.next = nextCGJCompose\n\t\t\tbreak\n\t\t}\n\t\tif i.info.ccc < prevCC {\n\t\t\tgoto doNorm\n\t\t}\n\t}\n\treturn i.returnSlice(startp, i.p)\ndoNorm:\n\t// reset to start position\n\ti.p = startp\n\ti.info = i.rb.f.info(i.rb.src, i.p)\n\ti.rb.ss.first(i.info)\n\tif i.info.multiSegment() {\n\t\td := i.info.Decomposition()\n\t\tinfo := i.rb.f.info(input{bytes: d}, 0)\n\t\ti.rb.insertUnsafe(input{bytes: d}, 0, info)\n\t\ti.multiSeg = d[int(info.size):]\n\t\ti.next = nextMultiNorm\n\t\treturn nextMultiNorm(i)\n\t}\n\ti.rb.ss.first(i.info)\n\ti.rb.insertUnsafe(i.rb.src, i.p, i.info)\n\treturn doNormComposed(i)\n}\n\nfunc doNormComposed(i *Iter) []byte {\n\t// First rune should already be inserted.\n\tfor {\n\t\tif i.p += int(i.info.size); i.p >= i.rb.nsrc {\n\t\t\ti.setDone()\n\t\t\tbreak\n\t\t}\n\t\ti.info = i.rb.f.info(i.rb.src, i.p)\n\t\tif s := i.rb.ss.next(i.info); s == ssStarter {\n\t\t\tbreak\n\t\t} else if s == ssOverflow {\n\t\t\ti.next = nextCGJCompose\n\t\t\tbreak\n\t\t}\n\t\ti.rb.insertUnsafe(i.rb.src, i.p, i.info)\n\t}\n\ti.rb.compose()\n\tseg := i.buf[:i.rb.flushCopy(i.buf[:])]\n\treturn seg\n}\n\nfunc nextCGJCompose(i *Iter) []byte {\n\ti.rb.ss = 0 // instead of first\n\ti.rb.insertCGJ()\n\ti.next = nextComposed\n\t// Note that we treat any rune with nLeadingNonStarters > 0 as a non-starter,\n\t// even if they are not. This is particularly dubious for U+FF9E and UFF9A.\n\t// If we ever change that, insert a check here.\n\ti.rb.ss.first(i.info)\n\ti.rb.insertUnsafe(i.rb.src, i.p, i.info)\n\treturn doNormComposed(i)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/normalize.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Note: the file data_test.go that is generated should not be checked in.\n//go:generate go run maketables.go triegen.go\n//go:generate go test -tags test\n\n// Package norm contains types and functions for normalizing Unicode strings.\npackage norm // import \"golang.org/x/text/unicode/norm\"\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/transform\"\n)\n\n// A Form denotes a canonical representation of Unicode code points.\n// The Unicode-defined normalization and equivalence forms are:\n//\n//\tNFC   Unicode Normalization Form C\n//\tNFD   Unicode Normalization Form D\n//\tNFKC  Unicode Normalization Form KC\n//\tNFKD  Unicode Normalization Form KD\n//\n// For a Form f, this documentation uses the notation f(x) to mean\n// the bytes or string x converted to the given form.\n// A position n in x is called a boundary if conversion to the form can\n// proceed independently on both sides:\n//\n//\tf(x) == append(f(x[0:n]), f(x[n:])...)\n//\n// References: https://unicode.org/reports/tr15/ and\n// https://unicode.org/notes/tn5/.\ntype Form int\n\nconst (\n\tNFC Form = iota\n\tNFD\n\tNFKC\n\tNFKD\n)\n\n// Bytes returns f(b). May return b if f(b) = b.\nfunc (f Form) Bytes(b []byte) []byte {\n\tsrc := inputBytes(b)\n\tft := formTable[f]\n\tn, ok := ft.quickSpan(src, 0, len(b), true)\n\tif ok {\n\t\treturn b\n\t}\n\tout := make([]byte, n, len(b))\n\tcopy(out, b[0:n])\n\trb := reorderBuffer{f: *ft, src: src, nsrc: len(b), out: out, flushF: appendFlush}\n\treturn doAppendInner(&rb, n)\n}\n\n// String returns f(s).\nfunc (f Form) String(s string) string {\n\tsrc := inputString(s)\n\tft := formTable[f]\n\tn, ok := ft.quickSpan(src, 0, len(s), true)\n\tif ok {\n\t\treturn s\n\t}\n\tout := make([]byte, n, len(s))\n\tcopy(out, s[0:n])\n\trb := reorderBuffer{f: *ft, src: src, nsrc: len(s), out: out, flushF: appendFlush}\n\treturn string(doAppendInner(&rb, n))\n}\n\n// IsNormal returns true if b == f(b).\nfunc (f Form) IsNormal(b []byte) bool {\n\tsrc := inputBytes(b)\n\tft := formTable[f]\n\tbp, ok := ft.quickSpan(src, 0, len(b), true)\n\tif ok {\n\t\treturn true\n\t}\n\trb := reorderBuffer{f: *ft, src: src, nsrc: len(b)}\n\trb.setFlusher(nil, cmpNormalBytes)\n\tfor bp < len(b) {\n\t\trb.out = b[bp:]\n\t\tif bp = decomposeSegment(&rb, bp, true); bp < 0 {\n\t\t\treturn false\n\t\t}\n\t\tbp, _ = rb.f.quickSpan(rb.src, bp, len(b), true)\n\t}\n\treturn true\n}\n\nfunc cmpNormalBytes(rb *reorderBuffer) bool {\n\tb := rb.out\n\tfor i := 0; i < rb.nrune; i++ {\n\t\tinfo := rb.rune[i]\n\t\tif int(info.size) > len(b) {\n\t\t\treturn false\n\t\t}\n\t\tp := info.pos\n\t\tpe := p + info.size\n\t\tfor ; p < pe; p++ {\n\t\t\tif b[0] != rb.byte[p] {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tb = b[1:]\n\t\t}\n\t}\n\treturn true\n}\n\n// IsNormalString returns true if s == f(s).\nfunc (f Form) IsNormalString(s string) bool {\n\tsrc := inputString(s)\n\tft := formTable[f]\n\tbp, ok := ft.quickSpan(src, 0, len(s), true)\n\tif ok {\n\t\treturn true\n\t}\n\trb := reorderBuffer{f: *ft, src: src, nsrc: len(s)}\n\trb.setFlusher(nil, func(rb *reorderBuffer) bool {\n\t\tfor i := 0; i < rb.nrune; i++ {\n\t\t\tinfo := rb.rune[i]\n\t\t\tif bp+int(info.size) > len(s) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tp := info.pos\n\t\t\tpe := p + info.size\n\t\t\tfor ; p < pe; p++ {\n\t\t\t\tif s[bp] != rb.byte[p] {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tbp++\n\t\t\t}\n\t\t}\n\t\treturn true\n\t})\n\tfor bp < len(s) {\n\t\tif bp = decomposeSegment(&rb, bp, true); bp < 0 {\n\t\t\treturn false\n\t\t}\n\t\tbp, _ = rb.f.quickSpan(rb.src, bp, len(s), true)\n\t}\n\treturn true\n}\n\n// patchTail fixes a case where a rune may be incorrectly normalized\n// if it is followed by illegal continuation bytes. It returns the\n// patched buffer and whether the decomposition is still in progress.\nfunc patchTail(rb *reorderBuffer) bool {\n\tinfo, p := lastRuneStart(&rb.f, rb.out)\n\tif p == -1 || info.size == 0 {\n\t\treturn true\n\t}\n\tend := p + int(info.size)\n\textra := len(rb.out) - end\n\tif extra > 0 {\n\t\t// Potentially allocating memory. However, this only\n\t\t// happens with ill-formed UTF-8.\n\t\tx := make([]byte, 0)\n\t\tx = append(x, rb.out[len(rb.out)-extra:]...)\n\t\trb.out = rb.out[:end]\n\t\tdecomposeToLastBoundary(rb)\n\t\trb.doFlush()\n\t\trb.out = append(rb.out, x...)\n\t\treturn false\n\t}\n\tbuf := rb.out[p:]\n\trb.out = rb.out[:p]\n\tdecomposeToLastBoundary(rb)\n\tif s := rb.ss.next(info); s == ssStarter {\n\t\trb.doFlush()\n\t\trb.ss.first(info)\n\t} else if s == ssOverflow {\n\t\trb.doFlush()\n\t\trb.insertCGJ()\n\t\trb.ss = 0\n\t}\n\trb.insertUnsafe(inputBytes(buf), 0, info)\n\treturn true\n}\n\nfunc appendQuick(rb *reorderBuffer, i int) int {\n\tif rb.nsrc == i {\n\t\treturn i\n\t}\n\tend, _ := rb.f.quickSpan(rb.src, i, rb.nsrc, true)\n\trb.out = rb.src.appendSlice(rb.out, i, end)\n\treturn end\n}\n\n// Append returns f(append(out, b...)).\n// The buffer out must be nil, empty, or equal to f(out).\nfunc (f Form) Append(out []byte, src ...byte) []byte {\n\treturn f.doAppend(out, inputBytes(src), len(src))\n}\n\nfunc (f Form) doAppend(out []byte, src input, n int) []byte {\n\tif n == 0 {\n\t\treturn out\n\t}\n\tft := formTable[f]\n\t// Attempt to do a quickSpan first so we can avoid initializing the reorderBuffer.\n\tif len(out) == 0 {\n\t\tp, _ := ft.quickSpan(src, 0, n, true)\n\t\tout = src.appendSlice(out, 0, p)\n\t\tif p == n {\n\t\t\treturn out\n\t\t}\n\t\trb := reorderBuffer{f: *ft, src: src, nsrc: n, out: out, flushF: appendFlush}\n\t\treturn doAppendInner(&rb, p)\n\t}\n\trb := reorderBuffer{f: *ft, src: src, nsrc: n}\n\treturn doAppend(&rb, out, 0)\n}\n\nfunc doAppend(rb *reorderBuffer, out []byte, p int) []byte {\n\trb.setFlusher(out, appendFlush)\n\tsrc, n := rb.src, rb.nsrc\n\tdoMerge := len(out) > 0\n\tif q := src.skipContinuationBytes(p); q > p {\n\t\t// Move leading non-starters to destination.\n\t\trb.out = src.appendSlice(rb.out, p, q)\n\t\tp = q\n\t\tdoMerge = patchTail(rb)\n\t}\n\tfd := &rb.f\n\tif doMerge {\n\t\tvar info Properties\n\t\tif p < n {\n\t\t\tinfo = fd.info(src, p)\n\t\t\tif !info.BoundaryBefore() || info.nLeadingNonStarters() > 0 {\n\t\t\t\tif p == 0 {\n\t\t\t\t\tdecomposeToLastBoundary(rb)\n\t\t\t\t}\n\t\t\t\tp = decomposeSegment(rb, p, true)\n\t\t\t}\n\t\t}\n\t\tif info.size == 0 {\n\t\t\trb.doFlush()\n\t\t\t// Append incomplete UTF-8 encoding.\n\t\t\treturn src.appendSlice(rb.out, p, n)\n\t\t}\n\t\tif rb.nrune > 0 {\n\t\t\treturn doAppendInner(rb, p)\n\t\t}\n\t}\n\tp = appendQuick(rb, p)\n\treturn doAppendInner(rb, p)\n}\n\nfunc doAppendInner(rb *reorderBuffer, p int) []byte {\n\tfor n := rb.nsrc; p < n; {\n\t\tp = decomposeSegment(rb, p, true)\n\t\tp = appendQuick(rb, p)\n\t}\n\treturn rb.out\n}\n\n// AppendString returns f(append(out, []byte(s))).\n// The buffer out must be nil, empty, or equal to f(out).\nfunc (f Form) AppendString(out []byte, src string) []byte {\n\treturn f.doAppend(out, inputString(src), len(src))\n}\n\n// QuickSpan returns a boundary n such that b[0:n] == f(b[0:n]).\n// It is not guaranteed to return the largest such n.\nfunc (f Form) QuickSpan(b []byte) int {\n\tn, _ := formTable[f].quickSpan(inputBytes(b), 0, len(b), true)\n\treturn n\n}\n\n// Span implements transform.SpanningTransformer. It returns a boundary n such\n// that b[0:n] == f(b[0:n]). It is not guaranteed to return the largest such n.\nfunc (f Form) Span(b []byte, atEOF bool) (n int, err error) {\n\tn, ok := formTable[f].quickSpan(inputBytes(b), 0, len(b), atEOF)\n\tif n < len(b) {\n\t\tif !ok {\n\t\t\terr = transform.ErrEndOfSpan\n\t\t} else {\n\t\t\terr = transform.ErrShortSrc\n\t\t}\n\t}\n\treturn n, err\n}\n\n// SpanString returns a boundary n such that s[0:n] == f(s[0:n]).\n// It is not guaranteed to return the largest such n.\nfunc (f Form) SpanString(s string, atEOF bool) (n int, err error) {\n\tn, ok := formTable[f].quickSpan(inputString(s), 0, len(s), atEOF)\n\tif n < len(s) {\n\t\tif !ok {\n\t\t\terr = transform.ErrEndOfSpan\n\t\t} else {\n\t\t\terr = transform.ErrShortSrc\n\t\t}\n\t}\n\treturn n, err\n}\n\n// quickSpan returns a boundary n such that src[0:n] == f(src[0:n]) and\n// whether any non-normalized parts were found. If atEOF is false, n will\n// not point past the last segment if this segment might be become\n// non-normalized by appending other runes.\nfunc (f *formInfo) quickSpan(src input, i, end int, atEOF bool) (n int, ok bool) {\n\tvar lastCC uint8\n\tss := streamSafe(0)\n\tlastSegStart := i\n\tfor n = end; i < n; {\n\t\tif j := src.skipASCII(i, n); i != j {\n\t\t\ti = j\n\t\t\tlastSegStart = i - 1\n\t\t\tlastCC = 0\n\t\t\tss = 0\n\t\t\tcontinue\n\t\t}\n\t\tinfo := f.info(src, i)\n\t\tif info.size == 0 {\n\t\t\tif atEOF {\n\t\t\t\t// include incomplete runes\n\t\t\t\treturn n, true\n\t\t\t}\n\t\t\treturn lastSegStart, true\n\t\t}\n\t\t// This block needs to be before the next, because it is possible to\n\t\t// have an overflow for runes that are starters (e.g. with U+FF9E).\n\t\tswitch ss.next(info) {\n\t\tcase ssStarter:\n\t\t\tlastSegStart = i\n\t\tcase ssOverflow:\n\t\t\treturn lastSegStart, false\n\t\tcase ssSuccess:\n\t\t\tif lastCC > info.ccc {\n\t\t\t\treturn lastSegStart, false\n\t\t\t}\n\t\t}\n\t\tif f.composing {\n\t\t\tif !info.isYesC() {\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tif !info.isYesD() {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tlastCC = info.ccc\n\t\ti += int(info.size)\n\t}\n\tif i == n {\n\t\tif !atEOF {\n\t\t\tn = lastSegStart\n\t\t}\n\t\treturn n, true\n\t}\n\treturn lastSegStart, false\n}\n\n// QuickSpanString returns a boundary n such that s[0:n] == f(s[0:n]).\n// It is not guaranteed to return the largest such n.\nfunc (f Form) QuickSpanString(s string) int {\n\tn, _ := formTable[f].quickSpan(inputString(s), 0, len(s), true)\n\treturn n\n}\n\n// FirstBoundary returns the position i of the first boundary in b\n// or -1 if b contains no boundary.\nfunc (f Form) FirstBoundary(b []byte) int {\n\treturn f.firstBoundary(inputBytes(b), len(b))\n}\n\nfunc (f Form) firstBoundary(src input, nsrc int) int {\n\ti := src.skipContinuationBytes(0)\n\tif i >= nsrc {\n\t\treturn -1\n\t}\n\tfd := formTable[f]\n\tss := streamSafe(0)\n\t// We should call ss.first here, but we can't as the first rune is\n\t// skipped already. This means FirstBoundary can't really determine\n\t// CGJ insertion points correctly. Luckily it doesn't have to.\n\tfor {\n\t\tinfo := fd.info(src, i)\n\t\tif info.size == 0 {\n\t\t\treturn -1\n\t\t}\n\t\tif s := ss.next(info); s != ssSuccess {\n\t\t\treturn i\n\t\t}\n\t\ti += int(info.size)\n\t\tif i >= nsrc {\n\t\t\tif !info.BoundaryAfter() && !ss.isMax() {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn nsrc\n\t\t}\n\t}\n}\n\n// FirstBoundaryInString returns the position i of the first boundary in s\n// or -1 if s contains no boundary.\nfunc (f Form) FirstBoundaryInString(s string) int {\n\treturn f.firstBoundary(inputString(s), len(s))\n}\n\n// NextBoundary reports the index of the boundary between the first and next\n// segment in b or -1 if atEOF is false and there are not enough bytes to\n// determine this boundary.\nfunc (f Form) NextBoundary(b []byte, atEOF bool) int {\n\treturn f.nextBoundary(inputBytes(b), len(b), atEOF)\n}\n\n// NextBoundaryInString reports the index of the boundary between the first and\n// next segment in b or -1 if atEOF is false and there are not enough bytes to\n// determine this boundary.\nfunc (f Form) NextBoundaryInString(s string, atEOF bool) int {\n\treturn f.nextBoundary(inputString(s), len(s), atEOF)\n}\n\nfunc (f Form) nextBoundary(src input, nsrc int, atEOF bool) int {\n\tif nsrc == 0 {\n\t\tif atEOF {\n\t\t\treturn 0\n\t\t}\n\t\treturn -1\n\t}\n\tfd := formTable[f]\n\tinfo := fd.info(src, 0)\n\tif info.size == 0 {\n\t\tif atEOF {\n\t\t\treturn 1\n\t\t}\n\t\treturn -1\n\t}\n\tss := streamSafe(0)\n\tss.first(info)\n\n\tfor i := int(info.size); i < nsrc; i += int(info.size) {\n\t\tinfo = fd.info(src, i)\n\t\tif info.size == 0 {\n\t\t\tif atEOF {\n\t\t\t\treturn i\n\t\t\t}\n\t\t\treturn -1\n\t\t}\n\t\t// TODO: Using streamSafe to determine the boundary isn't the same as\n\t\t// using BoundaryBefore. Determine which should be used.\n\t\tif s := ss.next(info); s != ssSuccess {\n\t\t\treturn i\n\t\t}\n\t}\n\tif !atEOF && !info.BoundaryAfter() && !ss.isMax() {\n\t\treturn -1\n\t}\n\treturn nsrc\n}\n\n// LastBoundary returns the position i of the last boundary in b\n// or -1 if b contains no boundary.\nfunc (f Form) LastBoundary(b []byte) int {\n\treturn lastBoundary(formTable[f], b)\n}\n\nfunc lastBoundary(fd *formInfo, b []byte) int {\n\ti := len(b)\n\tinfo, p := lastRuneStart(fd, b)\n\tif p == -1 {\n\t\treturn -1\n\t}\n\tif info.size == 0 { // ends with incomplete rune\n\t\tif p == 0 { // starts with incomplete rune\n\t\t\treturn -1\n\t\t}\n\t\ti = p\n\t\tinfo, p = lastRuneStart(fd, b[:i])\n\t\tif p == -1 { // incomplete UTF-8 encoding or non-starter bytes without a starter\n\t\t\treturn i\n\t\t}\n\t}\n\tif p+int(info.size) != i { // trailing non-starter bytes: illegal UTF-8\n\t\treturn i\n\t}\n\tif info.BoundaryAfter() {\n\t\treturn i\n\t}\n\tss := streamSafe(0)\n\tv := ss.backwards(info)\n\tfor i = p; i >= 0 && v != ssStarter; i = p {\n\t\tinfo, p = lastRuneStart(fd, b[:i])\n\t\tif v = ss.backwards(info); v == ssOverflow {\n\t\t\tbreak\n\t\t}\n\t\tif p+int(info.size) != i {\n\t\t\tif p == -1 { // no boundary found\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn i // boundary after an illegal UTF-8 encoding\n\t\t}\n\t}\n\treturn i\n}\n\n// decomposeSegment scans the first segment in src into rb. It inserts 0x034f\n// (Grapheme Joiner) when it encounters a sequence of more than 30 non-starters\n// and returns the number of bytes consumed from src or iShortDst or iShortSrc.\nfunc decomposeSegment(rb *reorderBuffer, sp int, atEOF bool) int {\n\t// Force one character to be consumed.\n\tinfo := rb.f.info(rb.src, sp)\n\tif info.size == 0 {\n\t\treturn 0\n\t}\n\tif s := rb.ss.next(info); s == ssStarter {\n\t\t// TODO: this could be removed if we don't support merging.\n\t\tif rb.nrune > 0 {\n\t\t\tgoto end\n\t\t}\n\t} else if s == ssOverflow {\n\t\trb.insertCGJ()\n\t\tgoto end\n\t}\n\tif err := rb.insertFlush(rb.src, sp, info); err != iSuccess {\n\t\treturn int(err)\n\t}\n\tfor {\n\t\tsp += int(info.size)\n\t\tif sp >= rb.nsrc {\n\t\t\tif !atEOF && !info.BoundaryAfter() {\n\t\t\t\treturn int(iShortSrc)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tinfo = rb.f.info(rb.src, sp)\n\t\tif info.size == 0 {\n\t\t\tif !atEOF {\n\t\t\t\treturn int(iShortSrc)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tif s := rb.ss.next(info); s == ssStarter {\n\t\t\tbreak\n\t\t} else if s == ssOverflow {\n\t\t\trb.insertCGJ()\n\t\t\tbreak\n\t\t}\n\t\tif err := rb.insertFlush(rb.src, sp, info); err != iSuccess {\n\t\t\treturn int(err)\n\t\t}\n\t}\nend:\n\tif !rb.doFlush() {\n\t\treturn int(iShortDst)\n\t}\n\treturn sp\n}\n\n// lastRuneStart returns the runeInfo and position of the last\n// rune in buf or the zero runeInfo and -1 if no rune was found.\nfunc lastRuneStart(fd *formInfo, buf []byte) (Properties, int) {\n\tp := len(buf) - 1\n\tfor ; p >= 0 && !utf8.RuneStart(buf[p]); p-- {\n\t}\n\tif p < 0 {\n\t\treturn Properties{}, -1\n\t}\n\treturn fd.info(inputBytes(buf), p), p\n}\n\n// decomposeToLastBoundary finds an open segment at the end of the buffer\n// and scans it into rb. Returns the buffer minus the last segment.\nfunc decomposeToLastBoundary(rb *reorderBuffer) {\n\tfd := &rb.f\n\tinfo, i := lastRuneStart(fd, rb.out)\n\tif int(info.size) != len(rb.out)-i {\n\t\t// illegal trailing continuation bytes\n\t\treturn\n\t}\n\tif info.BoundaryAfter() {\n\t\treturn\n\t}\n\tvar add [maxNonStarters + 1]Properties // stores runeInfo in reverse order\n\tpadd := 0\n\tss := streamSafe(0)\n\tp := len(rb.out)\n\tfor {\n\t\tadd[padd] = info\n\t\tv := ss.backwards(info)\n\t\tif v == ssOverflow {\n\t\t\t// Note that if we have an overflow, it the string we are appending to\n\t\t\t// is not correctly normalized. In this case the behavior is undefined.\n\t\t\tbreak\n\t\t}\n\t\tpadd++\n\t\tp -= int(info.size)\n\t\tif v == ssStarter || p < 0 {\n\t\t\tbreak\n\t\t}\n\t\tinfo, i = lastRuneStart(fd, rb.out[:p])\n\t\tif int(info.size) != p-i {\n\t\t\tbreak\n\t\t}\n\t}\n\trb.ss = ss\n\t// Copy bytes for insertion as we may need to overwrite rb.out.\n\tvar buf [maxBufferSize * utf8.UTFMax]byte\n\tcp := buf[:copy(buf[:], rb.out[p:])]\n\trb.out = rb.out[:p]\n\tfor padd--; padd >= 0; padd-- {\n\t\tinfo = add[padd]\n\t\trb.insertUnsafe(inputBytes(cp), 0, info)\n\t\tcp = cp[info.size:]\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/readwriter.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport \"io\"\n\ntype normWriter struct {\n\trb  reorderBuffer\n\tw   io.Writer\n\tbuf []byte\n}\n\n// Write implements the standard write interface.  If the last characters are\n// not at a normalization boundary, the bytes will be buffered for the next\n// write. The remaining bytes will be written on close.\nfunc (w *normWriter) Write(data []byte) (n int, err error) {\n\t// Process data in pieces to keep w.buf size bounded.\n\tconst chunk = 4000\n\n\tfor len(data) > 0 {\n\t\t// Normalize into w.buf.\n\t\tm := len(data)\n\t\tif m > chunk {\n\t\t\tm = chunk\n\t\t}\n\t\tw.rb.src = inputBytes(data[:m])\n\t\tw.rb.nsrc = m\n\t\tw.buf = doAppend(&w.rb, w.buf, 0)\n\t\tdata = data[m:]\n\t\tn += m\n\n\t\t// Write out complete prefix, save remainder.\n\t\t// Note that lastBoundary looks back at most 31 runes.\n\t\ti := lastBoundary(&w.rb.f, w.buf)\n\t\tif i == -1 {\n\t\t\ti = 0\n\t\t}\n\t\tif i > 0 {\n\t\t\tif _, err = w.w.Write(w.buf[:i]); err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tbn := copy(w.buf, w.buf[i:])\n\t\t\tw.buf = w.buf[:bn]\n\t\t}\n\t}\n\treturn n, err\n}\n\n// Close forces data that remains in the buffer to be written.\nfunc (w *normWriter) Close() error {\n\tif len(w.buf) > 0 {\n\t\t_, err := w.w.Write(w.buf)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// Writer returns a new writer that implements Write(b)\n// by writing f(b) to w. The returned writer may use an\n// internal buffer to maintain state across Write calls.\n// Calling its Close method writes any buffered data to w.\nfunc (f Form) Writer(w io.Writer) io.WriteCloser {\n\twr := &normWriter{rb: reorderBuffer{}, w: w}\n\twr.rb.init(f, nil)\n\treturn wr\n}\n\ntype normReader struct {\n\trb           reorderBuffer\n\tr            io.Reader\n\tinbuf        []byte\n\toutbuf       []byte\n\tbufStart     int\n\tlastBoundary int\n\terr          error\n}\n\n// Read implements the standard read interface.\nfunc (r *normReader) Read(p []byte) (int, error) {\n\tfor {\n\t\tif r.lastBoundary-r.bufStart > 0 {\n\t\t\tn := copy(p, r.outbuf[r.bufStart:r.lastBoundary])\n\t\t\tr.bufStart += n\n\t\t\tif r.lastBoundary-r.bufStart > 0 {\n\t\t\t\treturn n, nil\n\t\t\t}\n\t\t\treturn n, r.err\n\t\t}\n\t\tif r.err != nil {\n\t\t\treturn 0, r.err\n\t\t}\n\t\toutn := copy(r.outbuf, r.outbuf[r.lastBoundary:])\n\t\tr.outbuf = r.outbuf[0:outn]\n\t\tr.bufStart = 0\n\n\t\tn, err := r.r.Read(r.inbuf)\n\t\tr.rb.src = inputBytes(r.inbuf[0:n])\n\t\tr.rb.nsrc, r.err = n, err\n\t\tif n > 0 {\n\t\t\tr.outbuf = doAppend(&r.rb, r.outbuf, 0)\n\t\t}\n\t\tif err == io.EOF {\n\t\t\tr.lastBoundary = len(r.outbuf)\n\t\t} else {\n\t\t\tr.lastBoundary = lastBoundary(&r.rb.f, r.outbuf)\n\t\t\tif r.lastBoundary == -1 {\n\t\t\t\tr.lastBoundary = 0\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Reader returns a new reader that implements Read\n// by reading data from r and returning f(data).\nfunc (f Form) Reader(r io.Reader) io.Reader {\n\tconst chunk = 4000\n\tbuf := make([]byte, chunk)\n\trr := &normReader{rb: reorderBuffer{}, r: r, inbuf: buf}\n\trr.rb.init(f, buf)\n\treturn rr\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/tables10.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.10 && !go1.13\n\npackage norm\n\nimport \"sync\"\n\nconst (\n\t// Version is the Unicode edition from which the tables are derived.\n\tVersion = \"10.0.0\"\n\n\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform\n\t// may need to write atomically for any Form. Making a destination buffer at\n\t// least this size ensures that Transform can always make progress and that\n\t// the user does not need to grow the buffer on an ErrShortDst.\n\tMaxTransformChunkSize = 35 + maxNonStarters*4\n)\n\nvar ccc = [55]uint8{\n\t0, 1, 7, 8, 9, 10, 11, 12,\n\t13, 14, 15, 16, 17, 18, 19, 20,\n\t21, 22, 23, 24, 25, 26, 27, 28,\n\t29, 30, 31, 32, 33, 34, 35, 36,\n\t84, 91, 103, 107, 118, 122, 129, 130,\n\t132, 202, 214, 216, 218, 220, 222, 224,\n\t226, 228, 230, 232, 233, 234, 240,\n}\n\nconst (\n\tfirstMulti            = 0x186D\n\tfirstCCC              = 0x2C9E\n\tendMulti              = 0x2F60\n\tfirstLeadingCCC       = 0x49AE\n\tfirstCCCZeroExcept    = 0x4A78\n\tfirstStarterWithNLead = 0x4A9F\n\tlastDecomp            = 0x4AA1\n\tmaxDecomp             = 0x8000\n)\n\n// decomps: 19105 bytes\nvar decomps = [...]byte{\n\t// Bytes 0 - 3f\n\t0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,\n\t0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41,\n\t0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41,\n\t0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41,\n\t0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41,\n\t0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41,\n\t0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41,\n\t0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41,\n\t// Bytes 40 - 7f\n\t0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41,\n\t0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41,\n\t0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41,\n\t0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41,\n\t0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41,\n\t0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41,\n\t0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41,\n\t0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41,\n\t// Bytes 80 - bf\n\t0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41,\n\t0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41,\n\t0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41,\n\t0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41,\n\t0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41,\n\t0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41,\n\t0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41,\n\t0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42,\n\t// Bytes c0 - ff\n\t0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5,\n\t0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2,\n\t0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xB0, 0x42,\n\t0xC4, 0xA6, 0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1,\n\t0x42, 0xC5, 0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6,\n\t0x8E, 0x42, 0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42,\n\t0xC8, 0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90,\n\t0x42, 0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9,\n\t// Bytes 100 - 13f\n\t0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9, 0x99, 0x42,\n\t0xC9, 0x9B, 0x42, 0xC9, 0x9C, 0x42, 0xC9, 0x9F,\n\t0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA3, 0x42, 0xC9,\n\t0xA5, 0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA8, 0x42,\n\t0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42, 0xC9, 0xAB,\n\t0x42, 0xC9, 0xAD, 0x42, 0xC9, 0xAF, 0x42, 0xC9,\n\t0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42,\n\t0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5,\n\t// Bytes 140 - 17f\n\t0x42, 0xC9, 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9,\n\t0xBB, 0x42, 0xCA, 0x81, 0x42, 0xCA, 0x82, 0x42,\n\t0xCA, 0x83, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A,\n\t0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA,\n\t0x90, 0x42, 0xCA, 0x91, 0x42, 0xCA, 0x92, 0x42,\n\t0xCA, 0x95, 0x42, 0xCA, 0x9D, 0x42, 0xCA, 0x9F,\n\t0x42, 0xCA, 0xB9, 0x42, 0xCE, 0x91, 0x42, 0xCE,\n\t0x92, 0x42, 0xCE, 0x93, 0x42, 0xCE, 0x94, 0x42,\n\t// Bytes 180 - 1bf\n\t0xCE, 0x95, 0x42, 0xCE, 0x96, 0x42, 0xCE, 0x97,\n\t0x42, 0xCE, 0x98, 0x42, 0xCE, 0x99, 0x42, 0xCE,\n\t0x9A, 0x42, 0xCE, 0x9B, 0x42, 0xCE, 0x9C, 0x42,\n\t0xCE, 0x9D, 0x42, 0xCE, 0x9E, 0x42, 0xCE, 0x9F,\n\t0x42, 0xCE, 0xA0, 0x42, 0xCE, 0xA1, 0x42, 0xCE,\n\t0xA3, 0x42, 0xCE, 0xA4, 0x42, 0xCE, 0xA5, 0x42,\n\t0xCE, 0xA6, 0x42, 0xCE, 0xA7, 0x42, 0xCE, 0xA8,\n\t0x42, 0xCE, 0xA9, 0x42, 0xCE, 0xB1, 0x42, 0xCE,\n\t// Bytes 1c0 - 1ff\n\t0xB2, 0x42, 0xCE, 0xB3, 0x42, 0xCE, 0xB4, 0x42,\n\t0xCE, 0xB5, 0x42, 0xCE, 0xB6, 0x42, 0xCE, 0xB7,\n\t0x42, 0xCE, 0xB8, 0x42, 0xCE, 0xB9, 0x42, 0xCE,\n\t0xBA, 0x42, 0xCE, 0xBB, 0x42, 0xCE, 0xBC, 0x42,\n\t0xCE, 0xBD, 0x42, 0xCE, 0xBE, 0x42, 0xCE, 0xBF,\n\t0x42, 0xCF, 0x80, 0x42, 0xCF, 0x81, 0x42, 0xCF,\n\t0x82, 0x42, 0xCF, 0x83, 0x42, 0xCF, 0x84, 0x42,\n\t0xCF, 0x85, 0x42, 0xCF, 0x86, 0x42, 0xCF, 0x87,\n\t// Bytes 200 - 23f\n\t0x42, 0xCF, 0x88, 0x42, 0xCF, 0x89, 0x42, 0xCF,\n\t0x9C, 0x42, 0xCF, 0x9D, 0x42, 0xD0, 0xBD, 0x42,\n\t0xD1, 0x8A, 0x42, 0xD1, 0x8C, 0x42, 0xD7, 0x90,\n\t0x42, 0xD7, 0x91, 0x42, 0xD7, 0x92, 0x42, 0xD7,\n\t0x93, 0x42, 0xD7, 0x94, 0x42, 0xD7, 0x9B, 0x42,\n\t0xD7, 0x9C, 0x42, 0xD7, 0x9D, 0x42, 0xD7, 0xA2,\n\t0x42, 0xD7, 0xA8, 0x42, 0xD7, 0xAA, 0x42, 0xD8,\n\t0xA1, 0x42, 0xD8, 0xA7, 0x42, 0xD8, 0xA8, 0x42,\n\t// Bytes 240 - 27f\n\t0xD8, 0xA9, 0x42, 0xD8, 0xAA, 0x42, 0xD8, 0xAB,\n\t0x42, 0xD8, 0xAC, 0x42, 0xD8, 0xAD, 0x42, 0xD8,\n\t0xAE, 0x42, 0xD8, 0xAF, 0x42, 0xD8, 0xB0, 0x42,\n\t0xD8, 0xB1, 0x42, 0xD8, 0xB2, 0x42, 0xD8, 0xB3,\n\t0x42, 0xD8, 0xB4, 0x42, 0xD8, 0xB5, 0x42, 0xD8,\n\t0xB6, 0x42, 0xD8, 0xB7, 0x42, 0xD8, 0xB8, 0x42,\n\t0xD8, 0xB9, 0x42, 0xD8, 0xBA, 0x42, 0xD9, 0x81,\n\t0x42, 0xD9, 0x82, 0x42, 0xD9, 0x83, 0x42, 0xD9,\n\t// Bytes 280 - 2bf\n\t0x84, 0x42, 0xD9, 0x85, 0x42, 0xD9, 0x86, 0x42,\n\t0xD9, 0x87, 0x42, 0xD9, 0x88, 0x42, 0xD9, 0x89,\n\t0x42, 0xD9, 0x8A, 0x42, 0xD9, 0xAE, 0x42, 0xD9,\n\t0xAF, 0x42, 0xD9, 0xB1, 0x42, 0xD9, 0xB9, 0x42,\n\t0xD9, 0xBA, 0x42, 0xD9, 0xBB, 0x42, 0xD9, 0xBE,\n\t0x42, 0xD9, 0xBF, 0x42, 0xDA, 0x80, 0x42, 0xDA,\n\t0x83, 0x42, 0xDA, 0x84, 0x42, 0xDA, 0x86, 0x42,\n\t0xDA, 0x87, 0x42, 0xDA, 0x88, 0x42, 0xDA, 0x8C,\n\t// Bytes 2c0 - 2ff\n\t0x42, 0xDA, 0x8D, 0x42, 0xDA, 0x8E, 0x42, 0xDA,\n\t0x91, 0x42, 0xDA, 0x98, 0x42, 0xDA, 0xA1, 0x42,\n\t0xDA, 0xA4, 0x42, 0xDA, 0xA6, 0x42, 0xDA, 0xA9,\n\t0x42, 0xDA, 0xAD, 0x42, 0xDA, 0xAF, 0x42, 0xDA,\n\t0xB1, 0x42, 0xDA, 0xB3, 0x42, 0xDA, 0xBA, 0x42,\n\t0xDA, 0xBB, 0x42, 0xDA, 0xBE, 0x42, 0xDB, 0x81,\n\t0x42, 0xDB, 0x85, 0x42, 0xDB, 0x86, 0x42, 0xDB,\n\t0x87, 0x42, 0xDB, 0x88, 0x42, 0xDB, 0x89, 0x42,\n\t// Bytes 300 - 33f\n\t0xDB, 0x8B, 0x42, 0xDB, 0x8C, 0x42, 0xDB, 0x90,\n\t0x42, 0xDB, 0x92, 0x43, 0xE0, 0xBC, 0x8B, 0x43,\n\t0xE1, 0x83, 0x9C, 0x43, 0xE1, 0x84, 0x80, 0x43,\n\t0xE1, 0x84, 0x81, 0x43, 0xE1, 0x84, 0x82, 0x43,\n\t0xE1, 0x84, 0x83, 0x43, 0xE1, 0x84, 0x84, 0x43,\n\t0xE1, 0x84, 0x85, 0x43, 0xE1, 0x84, 0x86, 0x43,\n\t0xE1, 0x84, 0x87, 0x43, 0xE1, 0x84, 0x88, 0x43,\n\t0xE1, 0x84, 0x89, 0x43, 0xE1, 0x84, 0x8A, 0x43,\n\t// Bytes 340 - 37f\n\t0xE1, 0x84, 0x8B, 0x43, 0xE1, 0x84, 0x8C, 0x43,\n\t0xE1, 0x84, 0x8D, 0x43, 0xE1, 0x84, 0x8E, 0x43,\n\t0xE1, 0x84, 0x8F, 0x43, 0xE1, 0x84, 0x90, 0x43,\n\t0xE1, 0x84, 0x91, 0x43, 0xE1, 0x84, 0x92, 0x43,\n\t0xE1, 0x84, 0x94, 0x43, 0xE1, 0x84, 0x95, 0x43,\n\t0xE1, 0x84, 0x9A, 0x43, 0xE1, 0x84, 0x9C, 0x43,\n\t0xE1, 0x84, 0x9D, 0x43, 0xE1, 0x84, 0x9E, 0x43,\n\t0xE1, 0x84, 0xA0, 0x43, 0xE1, 0x84, 0xA1, 0x43,\n\t// Bytes 380 - 3bf\n\t0xE1, 0x84, 0xA2, 0x43, 0xE1, 0x84, 0xA3, 0x43,\n\t0xE1, 0x84, 0xA7, 0x43, 0xE1, 0x84, 0xA9, 0x43,\n\t0xE1, 0x84, 0xAB, 0x43, 0xE1, 0x84, 0xAC, 0x43,\n\t0xE1, 0x84, 0xAD, 0x43, 0xE1, 0x84, 0xAE, 0x43,\n\t0xE1, 0x84, 0xAF, 0x43, 0xE1, 0x84, 0xB2, 0x43,\n\t0xE1, 0x84, 0xB6, 0x43, 0xE1, 0x85, 0x80, 0x43,\n\t0xE1, 0x85, 0x87, 0x43, 0xE1, 0x85, 0x8C, 0x43,\n\t0xE1, 0x85, 0x97, 0x43, 0xE1, 0x85, 0x98, 0x43,\n\t// Bytes 3c0 - 3ff\n\t0xE1, 0x85, 0x99, 0x43, 0xE1, 0x85, 0xA0, 0x43,\n\t0xE1, 0x86, 0x84, 0x43, 0xE1, 0x86, 0x85, 0x43,\n\t0xE1, 0x86, 0x88, 0x43, 0xE1, 0x86, 0x91, 0x43,\n\t0xE1, 0x86, 0x92, 0x43, 0xE1, 0x86, 0x94, 0x43,\n\t0xE1, 0x86, 0x9E, 0x43, 0xE1, 0x86, 0xA1, 0x43,\n\t0xE1, 0x87, 0x87, 0x43, 0xE1, 0x87, 0x88, 0x43,\n\t0xE1, 0x87, 0x8C, 0x43, 0xE1, 0x87, 0x8E, 0x43,\n\t0xE1, 0x87, 0x93, 0x43, 0xE1, 0x87, 0x97, 0x43,\n\t// Bytes 400 - 43f\n\t0xE1, 0x87, 0x99, 0x43, 0xE1, 0x87, 0x9D, 0x43,\n\t0xE1, 0x87, 0x9F, 0x43, 0xE1, 0x87, 0xB1, 0x43,\n\t0xE1, 0x87, 0xB2, 0x43, 0xE1, 0xB4, 0x82, 0x43,\n\t0xE1, 0xB4, 0x96, 0x43, 0xE1, 0xB4, 0x97, 0x43,\n\t0xE1, 0xB4, 0x9C, 0x43, 0xE1, 0xB4, 0x9D, 0x43,\n\t0xE1, 0xB4, 0xA5, 0x43, 0xE1, 0xB5, 0xBB, 0x43,\n\t0xE1, 0xB6, 0x85, 0x43, 0xE2, 0x80, 0x82, 0x43,\n\t0xE2, 0x80, 0x83, 0x43, 0xE2, 0x80, 0x90, 0x43,\n\t// Bytes 440 - 47f\n\t0xE2, 0x80, 0x93, 0x43, 0xE2, 0x80, 0x94, 0x43,\n\t0xE2, 0x82, 0xA9, 0x43, 0xE2, 0x86, 0x90, 0x43,\n\t0xE2, 0x86, 0x91, 0x43, 0xE2, 0x86, 0x92, 0x43,\n\t0xE2, 0x86, 0x93, 0x43, 0xE2, 0x88, 0x82, 0x43,\n\t0xE2, 0x88, 0x87, 0x43, 0xE2, 0x88, 0x91, 0x43,\n\t0xE2, 0x88, 0x92, 0x43, 0xE2, 0x94, 0x82, 0x43,\n\t0xE2, 0x96, 0xA0, 0x43, 0xE2, 0x97, 0x8B, 0x43,\n\t0xE2, 0xA6, 0x85, 0x43, 0xE2, 0xA6, 0x86, 0x43,\n\t// Bytes 480 - 4bf\n\t0xE2, 0xB5, 0xA1, 0x43, 0xE3, 0x80, 0x81, 0x43,\n\t0xE3, 0x80, 0x82, 0x43, 0xE3, 0x80, 0x88, 0x43,\n\t0xE3, 0x80, 0x89, 0x43, 0xE3, 0x80, 0x8A, 0x43,\n\t0xE3, 0x80, 0x8B, 0x43, 0xE3, 0x80, 0x8C, 0x43,\n\t0xE3, 0x80, 0x8D, 0x43, 0xE3, 0x80, 0x8E, 0x43,\n\t0xE3, 0x80, 0x8F, 0x43, 0xE3, 0x80, 0x90, 0x43,\n\t0xE3, 0x80, 0x91, 0x43, 0xE3, 0x80, 0x92, 0x43,\n\t0xE3, 0x80, 0x94, 0x43, 0xE3, 0x80, 0x95, 0x43,\n\t// Bytes 4c0 - 4ff\n\t0xE3, 0x80, 0x96, 0x43, 0xE3, 0x80, 0x97, 0x43,\n\t0xE3, 0x82, 0xA1, 0x43, 0xE3, 0x82, 0xA2, 0x43,\n\t0xE3, 0x82, 0xA3, 0x43, 0xE3, 0x82, 0xA4, 0x43,\n\t0xE3, 0x82, 0xA5, 0x43, 0xE3, 0x82, 0xA6, 0x43,\n\t0xE3, 0x82, 0xA7, 0x43, 0xE3, 0x82, 0xA8, 0x43,\n\t0xE3, 0x82, 0xA9, 0x43, 0xE3, 0x82, 0xAA, 0x43,\n\t0xE3, 0x82, 0xAB, 0x43, 0xE3, 0x82, 0xAD, 0x43,\n\t0xE3, 0x82, 0xAF, 0x43, 0xE3, 0x82, 0xB1, 0x43,\n\t// Bytes 500 - 53f\n\t0xE3, 0x82, 0xB3, 0x43, 0xE3, 0x82, 0xB5, 0x43,\n\t0xE3, 0x82, 0xB7, 0x43, 0xE3, 0x82, 0xB9, 0x43,\n\t0xE3, 0x82, 0xBB, 0x43, 0xE3, 0x82, 0xBD, 0x43,\n\t0xE3, 0x82, 0xBF, 0x43, 0xE3, 0x83, 0x81, 0x43,\n\t0xE3, 0x83, 0x83, 0x43, 0xE3, 0x83, 0x84, 0x43,\n\t0xE3, 0x83, 0x86, 0x43, 0xE3, 0x83, 0x88, 0x43,\n\t0xE3, 0x83, 0x8A, 0x43, 0xE3, 0x83, 0x8B, 0x43,\n\t0xE3, 0x83, 0x8C, 0x43, 0xE3, 0x83, 0x8D, 0x43,\n\t// Bytes 540 - 57f\n\t0xE3, 0x83, 0x8E, 0x43, 0xE3, 0x83, 0x8F, 0x43,\n\t0xE3, 0x83, 0x92, 0x43, 0xE3, 0x83, 0x95, 0x43,\n\t0xE3, 0x83, 0x98, 0x43, 0xE3, 0x83, 0x9B, 0x43,\n\t0xE3, 0x83, 0x9E, 0x43, 0xE3, 0x83, 0x9F, 0x43,\n\t0xE3, 0x83, 0xA0, 0x43, 0xE3, 0x83, 0xA1, 0x43,\n\t0xE3, 0x83, 0xA2, 0x43, 0xE3, 0x83, 0xA3, 0x43,\n\t0xE3, 0x83, 0xA4, 0x43, 0xE3, 0x83, 0xA5, 0x43,\n\t0xE3, 0x83, 0xA6, 0x43, 0xE3, 0x83, 0xA7, 0x43,\n\t// Bytes 580 - 5bf\n\t0xE3, 0x83, 0xA8, 0x43, 0xE3, 0x83, 0xA9, 0x43,\n\t0xE3, 0x83, 0xAA, 0x43, 0xE3, 0x83, 0xAB, 0x43,\n\t0xE3, 0x83, 0xAC, 0x43, 0xE3, 0x83, 0xAD, 0x43,\n\t0xE3, 0x83, 0xAF, 0x43, 0xE3, 0x83, 0xB0, 0x43,\n\t0xE3, 0x83, 0xB1, 0x43, 0xE3, 0x83, 0xB2, 0x43,\n\t0xE3, 0x83, 0xB3, 0x43, 0xE3, 0x83, 0xBB, 0x43,\n\t0xE3, 0x83, 0xBC, 0x43, 0xE3, 0x92, 0x9E, 0x43,\n\t0xE3, 0x92, 0xB9, 0x43, 0xE3, 0x92, 0xBB, 0x43,\n\t// Bytes 5c0 - 5ff\n\t0xE3, 0x93, 0x9F, 0x43, 0xE3, 0x94, 0x95, 0x43,\n\t0xE3, 0x9B, 0xAE, 0x43, 0xE3, 0x9B, 0xBC, 0x43,\n\t0xE3, 0x9E, 0x81, 0x43, 0xE3, 0xA0, 0xAF, 0x43,\n\t0xE3, 0xA1, 0xA2, 0x43, 0xE3, 0xA1, 0xBC, 0x43,\n\t0xE3, 0xA3, 0x87, 0x43, 0xE3, 0xA3, 0xA3, 0x43,\n\t0xE3, 0xA4, 0x9C, 0x43, 0xE3, 0xA4, 0xBA, 0x43,\n\t0xE3, 0xA8, 0xAE, 0x43, 0xE3, 0xA9, 0xAC, 0x43,\n\t0xE3, 0xAB, 0xA4, 0x43, 0xE3, 0xAC, 0x88, 0x43,\n\t// Bytes 600 - 63f\n\t0xE3, 0xAC, 0x99, 0x43, 0xE3, 0xAD, 0x89, 0x43,\n\t0xE3, 0xAE, 0x9D, 0x43, 0xE3, 0xB0, 0x98, 0x43,\n\t0xE3, 0xB1, 0x8E, 0x43, 0xE3, 0xB4, 0xB3, 0x43,\n\t0xE3, 0xB6, 0x96, 0x43, 0xE3, 0xBA, 0xAC, 0x43,\n\t0xE3, 0xBA, 0xB8, 0x43, 0xE3, 0xBC, 0x9B, 0x43,\n\t0xE3, 0xBF, 0xBC, 0x43, 0xE4, 0x80, 0x88, 0x43,\n\t0xE4, 0x80, 0x98, 0x43, 0xE4, 0x80, 0xB9, 0x43,\n\t0xE4, 0x81, 0x86, 0x43, 0xE4, 0x82, 0x96, 0x43,\n\t// Bytes 640 - 67f\n\t0xE4, 0x83, 0xA3, 0x43, 0xE4, 0x84, 0xAF, 0x43,\n\t0xE4, 0x88, 0x82, 0x43, 0xE4, 0x88, 0xA7, 0x43,\n\t0xE4, 0x8A, 0xA0, 0x43, 0xE4, 0x8C, 0x81, 0x43,\n\t0xE4, 0x8C, 0xB4, 0x43, 0xE4, 0x8D, 0x99, 0x43,\n\t0xE4, 0x8F, 0x95, 0x43, 0xE4, 0x8F, 0x99, 0x43,\n\t0xE4, 0x90, 0x8B, 0x43, 0xE4, 0x91, 0xAB, 0x43,\n\t0xE4, 0x94, 0xAB, 0x43, 0xE4, 0x95, 0x9D, 0x43,\n\t0xE4, 0x95, 0xA1, 0x43, 0xE4, 0x95, 0xAB, 0x43,\n\t// Bytes 680 - 6bf\n\t0xE4, 0x97, 0x97, 0x43, 0xE4, 0x97, 0xB9, 0x43,\n\t0xE4, 0x98, 0xB5, 0x43, 0xE4, 0x9A, 0xBE, 0x43,\n\t0xE4, 0x9B, 0x87, 0x43, 0xE4, 0xA6, 0x95, 0x43,\n\t0xE4, 0xA7, 0xA6, 0x43, 0xE4, 0xA9, 0xAE, 0x43,\n\t0xE4, 0xA9, 0xB6, 0x43, 0xE4, 0xAA, 0xB2, 0x43,\n\t0xE4, 0xAC, 0xB3, 0x43, 0xE4, 0xAF, 0x8E, 0x43,\n\t0xE4, 0xB3, 0x8E, 0x43, 0xE4, 0xB3, 0xAD, 0x43,\n\t0xE4, 0xB3, 0xB8, 0x43, 0xE4, 0xB5, 0x96, 0x43,\n\t// Bytes 6c0 - 6ff\n\t0xE4, 0xB8, 0x80, 0x43, 0xE4, 0xB8, 0x81, 0x43,\n\t0xE4, 0xB8, 0x83, 0x43, 0xE4, 0xB8, 0x89, 0x43,\n\t0xE4, 0xB8, 0x8A, 0x43, 0xE4, 0xB8, 0x8B, 0x43,\n\t0xE4, 0xB8, 0x8D, 0x43, 0xE4, 0xB8, 0x99, 0x43,\n\t0xE4, 0xB8, 0xA6, 0x43, 0xE4, 0xB8, 0xA8, 0x43,\n\t0xE4, 0xB8, 0xAD, 0x43, 0xE4, 0xB8, 0xB2, 0x43,\n\t0xE4, 0xB8, 0xB6, 0x43, 0xE4, 0xB8, 0xB8, 0x43,\n\t0xE4, 0xB8, 0xB9, 0x43, 0xE4, 0xB8, 0xBD, 0x43,\n\t// Bytes 700 - 73f\n\t0xE4, 0xB8, 0xBF, 0x43, 0xE4, 0xB9, 0x81, 0x43,\n\t0xE4, 0xB9, 0x99, 0x43, 0xE4, 0xB9, 0x9D, 0x43,\n\t0xE4, 0xBA, 0x82, 0x43, 0xE4, 0xBA, 0x85, 0x43,\n\t0xE4, 0xBA, 0x86, 0x43, 0xE4, 0xBA, 0x8C, 0x43,\n\t0xE4, 0xBA, 0x94, 0x43, 0xE4, 0xBA, 0xA0, 0x43,\n\t0xE4, 0xBA, 0xA4, 0x43, 0xE4, 0xBA, 0xAE, 0x43,\n\t0xE4, 0xBA, 0xBA, 0x43, 0xE4, 0xBB, 0x80, 0x43,\n\t0xE4, 0xBB, 0x8C, 0x43, 0xE4, 0xBB, 0xA4, 0x43,\n\t// Bytes 740 - 77f\n\t0xE4, 0xBC, 0x81, 0x43, 0xE4, 0xBC, 0x91, 0x43,\n\t0xE4, 0xBD, 0xA0, 0x43, 0xE4, 0xBE, 0x80, 0x43,\n\t0xE4, 0xBE, 0x86, 0x43, 0xE4, 0xBE, 0x8B, 0x43,\n\t0xE4, 0xBE, 0xAE, 0x43, 0xE4, 0xBE, 0xBB, 0x43,\n\t0xE4, 0xBE, 0xBF, 0x43, 0xE5, 0x80, 0x82, 0x43,\n\t0xE5, 0x80, 0xAB, 0x43, 0xE5, 0x81, 0xBA, 0x43,\n\t0xE5, 0x82, 0x99, 0x43, 0xE5, 0x83, 0x8F, 0x43,\n\t0xE5, 0x83, 0x9A, 0x43, 0xE5, 0x83, 0xA7, 0x43,\n\t// Bytes 780 - 7bf\n\t0xE5, 0x84, 0xAA, 0x43, 0xE5, 0x84, 0xBF, 0x43,\n\t0xE5, 0x85, 0x80, 0x43, 0xE5, 0x85, 0x85, 0x43,\n\t0xE5, 0x85, 0x8D, 0x43, 0xE5, 0x85, 0x94, 0x43,\n\t0xE5, 0x85, 0xA4, 0x43, 0xE5, 0x85, 0xA5, 0x43,\n\t0xE5, 0x85, 0xA7, 0x43, 0xE5, 0x85, 0xA8, 0x43,\n\t0xE5, 0x85, 0xA9, 0x43, 0xE5, 0x85, 0xAB, 0x43,\n\t0xE5, 0x85, 0xAD, 0x43, 0xE5, 0x85, 0xB7, 0x43,\n\t0xE5, 0x86, 0x80, 0x43, 0xE5, 0x86, 0x82, 0x43,\n\t// Bytes 7c0 - 7ff\n\t0xE5, 0x86, 0x8D, 0x43, 0xE5, 0x86, 0x92, 0x43,\n\t0xE5, 0x86, 0x95, 0x43, 0xE5, 0x86, 0x96, 0x43,\n\t0xE5, 0x86, 0x97, 0x43, 0xE5, 0x86, 0x99, 0x43,\n\t0xE5, 0x86, 0xA4, 0x43, 0xE5, 0x86, 0xAB, 0x43,\n\t0xE5, 0x86, 0xAC, 0x43, 0xE5, 0x86, 0xB5, 0x43,\n\t0xE5, 0x86, 0xB7, 0x43, 0xE5, 0x87, 0x89, 0x43,\n\t0xE5, 0x87, 0x8C, 0x43, 0xE5, 0x87, 0x9C, 0x43,\n\t0xE5, 0x87, 0x9E, 0x43, 0xE5, 0x87, 0xA0, 0x43,\n\t// Bytes 800 - 83f\n\t0xE5, 0x87, 0xB5, 0x43, 0xE5, 0x88, 0x80, 0x43,\n\t0xE5, 0x88, 0x83, 0x43, 0xE5, 0x88, 0x87, 0x43,\n\t0xE5, 0x88, 0x97, 0x43, 0xE5, 0x88, 0x9D, 0x43,\n\t0xE5, 0x88, 0xA9, 0x43, 0xE5, 0x88, 0xBA, 0x43,\n\t0xE5, 0x88, 0xBB, 0x43, 0xE5, 0x89, 0x86, 0x43,\n\t0xE5, 0x89, 0x8D, 0x43, 0xE5, 0x89, 0xB2, 0x43,\n\t0xE5, 0x89, 0xB7, 0x43, 0xE5, 0x8A, 0x89, 0x43,\n\t0xE5, 0x8A, 0x9B, 0x43, 0xE5, 0x8A, 0xA3, 0x43,\n\t// Bytes 840 - 87f\n\t0xE5, 0x8A, 0xB3, 0x43, 0xE5, 0x8A, 0xB4, 0x43,\n\t0xE5, 0x8B, 0x87, 0x43, 0xE5, 0x8B, 0x89, 0x43,\n\t0xE5, 0x8B, 0x92, 0x43, 0xE5, 0x8B, 0x9E, 0x43,\n\t0xE5, 0x8B, 0xA4, 0x43, 0xE5, 0x8B, 0xB5, 0x43,\n\t0xE5, 0x8B, 0xB9, 0x43, 0xE5, 0x8B, 0xBA, 0x43,\n\t0xE5, 0x8C, 0x85, 0x43, 0xE5, 0x8C, 0x86, 0x43,\n\t0xE5, 0x8C, 0x95, 0x43, 0xE5, 0x8C, 0x97, 0x43,\n\t0xE5, 0x8C, 0x9A, 0x43, 0xE5, 0x8C, 0xB8, 0x43,\n\t// Bytes 880 - 8bf\n\t0xE5, 0x8C, 0xBB, 0x43, 0xE5, 0x8C, 0xBF, 0x43,\n\t0xE5, 0x8D, 0x81, 0x43, 0xE5, 0x8D, 0x84, 0x43,\n\t0xE5, 0x8D, 0x85, 0x43, 0xE5, 0x8D, 0x89, 0x43,\n\t0xE5, 0x8D, 0x91, 0x43, 0xE5, 0x8D, 0x94, 0x43,\n\t0xE5, 0x8D, 0x9A, 0x43, 0xE5, 0x8D, 0x9C, 0x43,\n\t0xE5, 0x8D, 0xA9, 0x43, 0xE5, 0x8D, 0xB0, 0x43,\n\t0xE5, 0x8D, 0xB3, 0x43, 0xE5, 0x8D, 0xB5, 0x43,\n\t0xE5, 0x8D, 0xBD, 0x43, 0xE5, 0x8D, 0xBF, 0x43,\n\t// Bytes 8c0 - 8ff\n\t0xE5, 0x8E, 0x82, 0x43, 0xE5, 0x8E, 0xB6, 0x43,\n\t0xE5, 0x8F, 0x83, 0x43, 0xE5, 0x8F, 0x88, 0x43,\n\t0xE5, 0x8F, 0x8A, 0x43, 0xE5, 0x8F, 0x8C, 0x43,\n\t0xE5, 0x8F, 0x9F, 0x43, 0xE5, 0x8F, 0xA3, 0x43,\n\t0xE5, 0x8F, 0xA5, 0x43, 0xE5, 0x8F, 0xAB, 0x43,\n\t0xE5, 0x8F, 0xAF, 0x43, 0xE5, 0x8F, 0xB1, 0x43,\n\t0xE5, 0x8F, 0xB3, 0x43, 0xE5, 0x90, 0x86, 0x43,\n\t0xE5, 0x90, 0x88, 0x43, 0xE5, 0x90, 0x8D, 0x43,\n\t// Bytes 900 - 93f\n\t0xE5, 0x90, 0x8F, 0x43, 0xE5, 0x90, 0x9D, 0x43,\n\t0xE5, 0x90, 0xB8, 0x43, 0xE5, 0x90, 0xB9, 0x43,\n\t0xE5, 0x91, 0x82, 0x43, 0xE5, 0x91, 0x88, 0x43,\n\t0xE5, 0x91, 0xA8, 0x43, 0xE5, 0x92, 0x9E, 0x43,\n\t0xE5, 0x92, 0xA2, 0x43, 0xE5, 0x92, 0xBD, 0x43,\n\t0xE5, 0x93, 0xB6, 0x43, 0xE5, 0x94, 0x90, 0x43,\n\t0xE5, 0x95, 0x8F, 0x43, 0xE5, 0x95, 0x93, 0x43,\n\t0xE5, 0x95, 0x95, 0x43, 0xE5, 0x95, 0xA3, 0x43,\n\t// Bytes 940 - 97f\n\t0xE5, 0x96, 0x84, 0x43, 0xE5, 0x96, 0x87, 0x43,\n\t0xE5, 0x96, 0x99, 0x43, 0xE5, 0x96, 0x9D, 0x43,\n\t0xE5, 0x96, 0xAB, 0x43, 0xE5, 0x96, 0xB3, 0x43,\n\t0xE5, 0x96, 0xB6, 0x43, 0xE5, 0x97, 0x80, 0x43,\n\t0xE5, 0x97, 0x82, 0x43, 0xE5, 0x97, 0xA2, 0x43,\n\t0xE5, 0x98, 0x86, 0x43, 0xE5, 0x99, 0x91, 0x43,\n\t0xE5, 0x99, 0xA8, 0x43, 0xE5, 0x99, 0xB4, 0x43,\n\t0xE5, 0x9B, 0x97, 0x43, 0xE5, 0x9B, 0x9B, 0x43,\n\t// Bytes 980 - 9bf\n\t0xE5, 0x9B, 0xB9, 0x43, 0xE5, 0x9C, 0x96, 0x43,\n\t0xE5, 0x9C, 0x97, 0x43, 0xE5, 0x9C, 0x9F, 0x43,\n\t0xE5, 0x9C, 0xB0, 0x43, 0xE5, 0x9E, 0x8B, 0x43,\n\t0xE5, 0x9F, 0x8E, 0x43, 0xE5, 0x9F, 0xB4, 0x43,\n\t0xE5, 0xA0, 0x8D, 0x43, 0xE5, 0xA0, 0xB1, 0x43,\n\t0xE5, 0xA0, 0xB2, 0x43, 0xE5, 0xA1, 0x80, 0x43,\n\t0xE5, 0xA1, 0x9A, 0x43, 0xE5, 0xA1, 0x9E, 0x43,\n\t0xE5, 0xA2, 0xA8, 0x43, 0xE5, 0xA2, 0xAC, 0x43,\n\t// Bytes 9c0 - 9ff\n\t0xE5, 0xA2, 0xB3, 0x43, 0xE5, 0xA3, 0x98, 0x43,\n\t0xE5, 0xA3, 0x9F, 0x43, 0xE5, 0xA3, 0xAB, 0x43,\n\t0xE5, 0xA3, 0xAE, 0x43, 0xE5, 0xA3, 0xB0, 0x43,\n\t0xE5, 0xA3, 0xB2, 0x43, 0xE5, 0xA3, 0xB7, 0x43,\n\t0xE5, 0xA4, 0x82, 0x43, 0xE5, 0xA4, 0x86, 0x43,\n\t0xE5, 0xA4, 0x8A, 0x43, 0xE5, 0xA4, 0x95, 0x43,\n\t0xE5, 0xA4, 0x9A, 0x43, 0xE5, 0xA4, 0x9C, 0x43,\n\t0xE5, 0xA4, 0xA2, 0x43, 0xE5, 0xA4, 0xA7, 0x43,\n\t// Bytes a00 - a3f\n\t0xE5, 0xA4, 0xA9, 0x43, 0xE5, 0xA5, 0x84, 0x43,\n\t0xE5, 0xA5, 0x88, 0x43, 0xE5, 0xA5, 0x91, 0x43,\n\t0xE5, 0xA5, 0x94, 0x43, 0xE5, 0xA5, 0xA2, 0x43,\n\t0xE5, 0xA5, 0xB3, 0x43, 0xE5, 0xA7, 0x98, 0x43,\n\t0xE5, 0xA7, 0xAC, 0x43, 0xE5, 0xA8, 0x9B, 0x43,\n\t0xE5, 0xA8, 0xA7, 0x43, 0xE5, 0xA9, 0xA2, 0x43,\n\t0xE5, 0xA9, 0xA6, 0x43, 0xE5, 0xAA, 0xB5, 0x43,\n\t0xE5, 0xAC, 0x88, 0x43, 0xE5, 0xAC, 0xA8, 0x43,\n\t// Bytes a40 - a7f\n\t0xE5, 0xAC, 0xBE, 0x43, 0xE5, 0xAD, 0x90, 0x43,\n\t0xE5, 0xAD, 0x97, 0x43, 0xE5, 0xAD, 0xA6, 0x43,\n\t0xE5, 0xAE, 0x80, 0x43, 0xE5, 0xAE, 0x85, 0x43,\n\t0xE5, 0xAE, 0x97, 0x43, 0xE5, 0xAF, 0x83, 0x43,\n\t0xE5, 0xAF, 0x98, 0x43, 0xE5, 0xAF, 0xA7, 0x43,\n\t0xE5, 0xAF, 0xAE, 0x43, 0xE5, 0xAF, 0xB3, 0x43,\n\t0xE5, 0xAF, 0xB8, 0x43, 0xE5, 0xAF, 0xBF, 0x43,\n\t0xE5, 0xB0, 0x86, 0x43, 0xE5, 0xB0, 0x8F, 0x43,\n\t// Bytes a80 - abf\n\t0xE5, 0xB0, 0xA2, 0x43, 0xE5, 0xB0, 0xB8, 0x43,\n\t0xE5, 0xB0, 0xBF, 0x43, 0xE5, 0xB1, 0xA0, 0x43,\n\t0xE5, 0xB1, 0xA2, 0x43, 0xE5, 0xB1, 0xA4, 0x43,\n\t0xE5, 0xB1, 0xA5, 0x43, 0xE5, 0xB1, 0xAE, 0x43,\n\t0xE5, 0xB1, 0xB1, 0x43, 0xE5, 0xB2, 0x8D, 0x43,\n\t0xE5, 0xB3, 0x80, 0x43, 0xE5, 0xB4, 0x99, 0x43,\n\t0xE5, 0xB5, 0x83, 0x43, 0xE5, 0xB5, 0x90, 0x43,\n\t0xE5, 0xB5, 0xAB, 0x43, 0xE5, 0xB5, 0xAE, 0x43,\n\t// Bytes ac0 - aff\n\t0xE5, 0xB5, 0xBC, 0x43, 0xE5, 0xB6, 0xB2, 0x43,\n\t0xE5, 0xB6, 0xBA, 0x43, 0xE5, 0xB7, 0x9B, 0x43,\n\t0xE5, 0xB7, 0xA1, 0x43, 0xE5, 0xB7, 0xA2, 0x43,\n\t0xE5, 0xB7, 0xA5, 0x43, 0xE5, 0xB7, 0xA6, 0x43,\n\t0xE5, 0xB7, 0xB1, 0x43, 0xE5, 0xB7, 0xBD, 0x43,\n\t0xE5, 0xB7, 0xBE, 0x43, 0xE5, 0xB8, 0xA8, 0x43,\n\t0xE5, 0xB8, 0xBD, 0x43, 0xE5, 0xB9, 0xA9, 0x43,\n\t0xE5, 0xB9, 0xB2, 0x43, 0xE5, 0xB9, 0xB4, 0x43,\n\t// Bytes b00 - b3f\n\t0xE5, 0xB9, 0xBA, 0x43, 0xE5, 0xB9, 0xBC, 0x43,\n\t0xE5, 0xB9, 0xBF, 0x43, 0xE5, 0xBA, 0xA6, 0x43,\n\t0xE5, 0xBA, 0xB0, 0x43, 0xE5, 0xBA, 0xB3, 0x43,\n\t0xE5, 0xBA, 0xB6, 0x43, 0xE5, 0xBB, 0x89, 0x43,\n\t0xE5, 0xBB, 0x8A, 0x43, 0xE5, 0xBB, 0x92, 0x43,\n\t0xE5, 0xBB, 0x93, 0x43, 0xE5, 0xBB, 0x99, 0x43,\n\t0xE5, 0xBB, 0xAC, 0x43, 0xE5, 0xBB, 0xB4, 0x43,\n\t0xE5, 0xBB, 0xBE, 0x43, 0xE5, 0xBC, 0x84, 0x43,\n\t// Bytes b40 - b7f\n\t0xE5, 0xBC, 0x8B, 0x43, 0xE5, 0xBC, 0x93, 0x43,\n\t0xE5, 0xBC, 0xA2, 0x43, 0xE5, 0xBD, 0x90, 0x43,\n\t0xE5, 0xBD, 0x93, 0x43, 0xE5, 0xBD, 0xA1, 0x43,\n\t0xE5, 0xBD, 0xA2, 0x43, 0xE5, 0xBD, 0xA9, 0x43,\n\t0xE5, 0xBD, 0xAB, 0x43, 0xE5, 0xBD, 0xB3, 0x43,\n\t0xE5, 0xBE, 0x8B, 0x43, 0xE5, 0xBE, 0x8C, 0x43,\n\t0xE5, 0xBE, 0x97, 0x43, 0xE5, 0xBE, 0x9A, 0x43,\n\t0xE5, 0xBE, 0xA9, 0x43, 0xE5, 0xBE, 0xAD, 0x43,\n\t// Bytes b80 - bbf\n\t0xE5, 0xBF, 0x83, 0x43, 0xE5, 0xBF, 0x8D, 0x43,\n\t0xE5, 0xBF, 0x97, 0x43, 0xE5, 0xBF, 0xB5, 0x43,\n\t0xE5, 0xBF, 0xB9, 0x43, 0xE6, 0x80, 0x92, 0x43,\n\t0xE6, 0x80, 0x9C, 0x43, 0xE6, 0x81, 0xB5, 0x43,\n\t0xE6, 0x82, 0x81, 0x43, 0xE6, 0x82, 0x94, 0x43,\n\t0xE6, 0x83, 0x87, 0x43, 0xE6, 0x83, 0x98, 0x43,\n\t0xE6, 0x83, 0xA1, 0x43, 0xE6, 0x84, 0x88, 0x43,\n\t0xE6, 0x85, 0x84, 0x43, 0xE6, 0x85, 0x88, 0x43,\n\t// Bytes bc0 - bff\n\t0xE6, 0x85, 0x8C, 0x43, 0xE6, 0x85, 0x8E, 0x43,\n\t0xE6, 0x85, 0xA0, 0x43, 0xE6, 0x85, 0xA8, 0x43,\n\t0xE6, 0x85, 0xBA, 0x43, 0xE6, 0x86, 0x8E, 0x43,\n\t0xE6, 0x86, 0x90, 0x43, 0xE6, 0x86, 0xA4, 0x43,\n\t0xE6, 0x86, 0xAF, 0x43, 0xE6, 0x86, 0xB2, 0x43,\n\t0xE6, 0x87, 0x9E, 0x43, 0xE6, 0x87, 0xB2, 0x43,\n\t0xE6, 0x87, 0xB6, 0x43, 0xE6, 0x88, 0x80, 0x43,\n\t0xE6, 0x88, 0x88, 0x43, 0xE6, 0x88, 0x90, 0x43,\n\t// Bytes c00 - c3f\n\t0xE6, 0x88, 0x9B, 0x43, 0xE6, 0x88, 0xAE, 0x43,\n\t0xE6, 0x88, 0xB4, 0x43, 0xE6, 0x88, 0xB6, 0x43,\n\t0xE6, 0x89, 0x8B, 0x43, 0xE6, 0x89, 0x93, 0x43,\n\t0xE6, 0x89, 0x9D, 0x43, 0xE6, 0x8A, 0x95, 0x43,\n\t0xE6, 0x8A, 0xB1, 0x43, 0xE6, 0x8B, 0x89, 0x43,\n\t0xE6, 0x8B, 0x8F, 0x43, 0xE6, 0x8B, 0x93, 0x43,\n\t0xE6, 0x8B, 0x94, 0x43, 0xE6, 0x8B, 0xBC, 0x43,\n\t0xE6, 0x8B, 0xBE, 0x43, 0xE6, 0x8C, 0x87, 0x43,\n\t// Bytes c40 - c7f\n\t0xE6, 0x8C, 0xBD, 0x43, 0xE6, 0x8D, 0x90, 0x43,\n\t0xE6, 0x8D, 0x95, 0x43, 0xE6, 0x8D, 0xA8, 0x43,\n\t0xE6, 0x8D, 0xBB, 0x43, 0xE6, 0x8E, 0x83, 0x43,\n\t0xE6, 0x8E, 0xA0, 0x43, 0xE6, 0x8E, 0xA9, 0x43,\n\t0xE6, 0x8F, 0x84, 0x43, 0xE6, 0x8F, 0x85, 0x43,\n\t0xE6, 0x8F, 0xA4, 0x43, 0xE6, 0x90, 0x9C, 0x43,\n\t0xE6, 0x90, 0xA2, 0x43, 0xE6, 0x91, 0x92, 0x43,\n\t0xE6, 0x91, 0xA9, 0x43, 0xE6, 0x91, 0xB7, 0x43,\n\t// Bytes c80 - cbf\n\t0xE6, 0x91, 0xBE, 0x43, 0xE6, 0x92, 0x9A, 0x43,\n\t0xE6, 0x92, 0x9D, 0x43, 0xE6, 0x93, 0x84, 0x43,\n\t0xE6, 0x94, 0xAF, 0x43, 0xE6, 0x94, 0xB4, 0x43,\n\t0xE6, 0x95, 0x8F, 0x43, 0xE6, 0x95, 0x96, 0x43,\n\t0xE6, 0x95, 0xAC, 0x43, 0xE6, 0x95, 0xB8, 0x43,\n\t0xE6, 0x96, 0x87, 0x43, 0xE6, 0x96, 0x97, 0x43,\n\t0xE6, 0x96, 0x99, 0x43, 0xE6, 0x96, 0xA4, 0x43,\n\t0xE6, 0x96, 0xB0, 0x43, 0xE6, 0x96, 0xB9, 0x43,\n\t// Bytes cc0 - cff\n\t0xE6, 0x97, 0x85, 0x43, 0xE6, 0x97, 0xA0, 0x43,\n\t0xE6, 0x97, 0xA2, 0x43, 0xE6, 0x97, 0xA3, 0x43,\n\t0xE6, 0x97, 0xA5, 0x43, 0xE6, 0x98, 0x93, 0x43,\n\t0xE6, 0x98, 0xA0, 0x43, 0xE6, 0x99, 0x89, 0x43,\n\t0xE6, 0x99, 0xB4, 0x43, 0xE6, 0x9A, 0x88, 0x43,\n\t0xE6, 0x9A, 0x91, 0x43, 0xE6, 0x9A, 0x9C, 0x43,\n\t0xE6, 0x9A, 0xB4, 0x43, 0xE6, 0x9B, 0x86, 0x43,\n\t0xE6, 0x9B, 0xB0, 0x43, 0xE6, 0x9B, 0xB4, 0x43,\n\t// Bytes d00 - d3f\n\t0xE6, 0x9B, 0xB8, 0x43, 0xE6, 0x9C, 0x80, 0x43,\n\t0xE6, 0x9C, 0x88, 0x43, 0xE6, 0x9C, 0x89, 0x43,\n\t0xE6, 0x9C, 0x97, 0x43, 0xE6, 0x9C, 0x9B, 0x43,\n\t0xE6, 0x9C, 0xA1, 0x43, 0xE6, 0x9C, 0xA8, 0x43,\n\t0xE6, 0x9D, 0x8E, 0x43, 0xE6, 0x9D, 0x93, 0x43,\n\t0xE6, 0x9D, 0x96, 0x43, 0xE6, 0x9D, 0x9E, 0x43,\n\t0xE6, 0x9D, 0xBB, 0x43, 0xE6, 0x9E, 0x85, 0x43,\n\t0xE6, 0x9E, 0x97, 0x43, 0xE6, 0x9F, 0xB3, 0x43,\n\t// Bytes d40 - d7f\n\t0xE6, 0x9F, 0xBA, 0x43, 0xE6, 0xA0, 0x97, 0x43,\n\t0xE6, 0xA0, 0x9F, 0x43, 0xE6, 0xA0, 0xAA, 0x43,\n\t0xE6, 0xA1, 0x92, 0x43, 0xE6, 0xA2, 0x81, 0x43,\n\t0xE6, 0xA2, 0x85, 0x43, 0xE6, 0xA2, 0x8E, 0x43,\n\t0xE6, 0xA2, 0xA8, 0x43, 0xE6, 0xA4, 0x94, 0x43,\n\t0xE6, 0xA5, 0x82, 0x43, 0xE6, 0xA6, 0xA3, 0x43,\n\t0xE6, 0xA7, 0xAA, 0x43, 0xE6, 0xA8, 0x82, 0x43,\n\t0xE6, 0xA8, 0x93, 0x43, 0xE6, 0xAA, 0xA8, 0x43,\n\t// Bytes d80 - dbf\n\t0xE6, 0xAB, 0x93, 0x43, 0xE6, 0xAB, 0x9B, 0x43,\n\t0xE6, 0xAC, 0x84, 0x43, 0xE6, 0xAC, 0xA0, 0x43,\n\t0xE6, 0xAC, 0xA1, 0x43, 0xE6, 0xAD, 0x94, 0x43,\n\t0xE6, 0xAD, 0xA2, 0x43, 0xE6, 0xAD, 0xA3, 0x43,\n\t0xE6, 0xAD, 0xB2, 0x43, 0xE6, 0xAD, 0xB7, 0x43,\n\t0xE6, 0xAD, 0xB9, 0x43, 0xE6, 0xAE, 0x9F, 0x43,\n\t0xE6, 0xAE, 0xAE, 0x43, 0xE6, 0xAE, 0xB3, 0x43,\n\t0xE6, 0xAE, 0xBA, 0x43, 0xE6, 0xAE, 0xBB, 0x43,\n\t// Bytes dc0 - dff\n\t0xE6, 0xAF, 0x8B, 0x43, 0xE6, 0xAF, 0x8D, 0x43,\n\t0xE6, 0xAF, 0x94, 0x43, 0xE6, 0xAF, 0x9B, 0x43,\n\t0xE6, 0xB0, 0x8F, 0x43, 0xE6, 0xB0, 0x94, 0x43,\n\t0xE6, 0xB0, 0xB4, 0x43, 0xE6, 0xB1, 0x8E, 0x43,\n\t0xE6, 0xB1, 0xA7, 0x43, 0xE6, 0xB2, 0x88, 0x43,\n\t0xE6, 0xB2, 0xBF, 0x43, 0xE6, 0xB3, 0x8C, 0x43,\n\t0xE6, 0xB3, 0x8D, 0x43, 0xE6, 0xB3, 0xA5, 0x43,\n\t0xE6, 0xB3, 0xA8, 0x43, 0xE6, 0xB4, 0x96, 0x43,\n\t// Bytes e00 - e3f\n\t0xE6, 0xB4, 0x9B, 0x43, 0xE6, 0xB4, 0x9E, 0x43,\n\t0xE6, 0xB4, 0xB4, 0x43, 0xE6, 0xB4, 0xBE, 0x43,\n\t0xE6, 0xB5, 0x81, 0x43, 0xE6, 0xB5, 0xA9, 0x43,\n\t0xE6, 0xB5, 0xAA, 0x43, 0xE6, 0xB5, 0xB7, 0x43,\n\t0xE6, 0xB5, 0xB8, 0x43, 0xE6, 0xB6, 0x85, 0x43,\n\t0xE6, 0xB7, 0x8B, 0x43, 0xE6, 0xB7, 0x9A, 0x43,\n\t0xE6, 0xB7, 0xAA, 0x43, 0xE6, 0xB7, 0xB9, 0x43,\n\t0xE6, 0xB8, 0x9A, 0x43, 0xE6, 0xB8, 0xAF, 0x43,\n\t// Bytes e40 - e7f\n\t0xE6, 0xB9, 0xAE, 0x43, 0xE6, 0xBA, 0x80, 0x43,\n\t0xE6, 0xBA, 0x9C, 0x43, 0xE6, 0xBA, 0xBA, 0x43,\n\t0xE6, 0xBB, 0x87, 0x43, 0xE6, 0xBB, 0x8B, 0x43,\n\t0xE6, 0xBB, 0x91, 0x43, 0xE6, 0xBB, 0x9B, 0x43,\n\t0xE6, 0xBC, 0x8F, 0x43, 0xE6, 0xBC, 0x94, 0x43,\n\t0xE6, 0xBC, 0xA2, 0x43, 0xE6, 0xBC, 0xA3, 0x43,\n\t0xE6, 0xBD, 0xAE, 0x43, 0xE6, 0xBF, 0x86, 0x43,\n\t0xE6, 0xBF, 0xAB, 0x43, 0xE6, 0xBF, 0xBE, 0x43,\n\t// Bytes e80 - ebf\n\t0xE7, 0x80, 0x9B, 0x43, 0xE7, 0x80, 0x9E, 0x43,\n\t0xE7, 0x80, 0xB9, 0x43, 0xE7, 0x81, 0x8A, 0x43,\n\t0xE7, 0x81, 0xAB, 0x43, 0xE7, 0x81, 0xB0, 0x43,\n\t0xE7, 0x81, 0xB7, 0x43, 0xE7, 0x81, 0xBD, 0x43,\n\t0xE7, 0x82, 0x99, 0x43, 0xE7, 0x82, 0xAD, 0x43,\n\t0xE7, 0x83, 0x88, 0x43, 0xE7, 0x83, 0x99, 0x43,\n\t0xE7, 0x84, 0xA1, 0x43, 0xE7, 0x85, 0x85, 0x43,\n\t0xE7, 0x85, 0x89, 0x43, 0xE7, 0x85, 0xAE, 0x43,\n\t// Bytes ec0 - eff\n\t0xE7, 0x86, 0x9C, 0x43, 0xE7, 0x87, 0x8E, 0x43,\n\t0xE7, 0x87, 0x90, 0x43, 0xE7, 0x88, 0x90, 0x43,\n\t0xE7, 0x88, 0x9B, 0x43, 0xE7, 0x88, 0xA8, 0x43,\n\t0xE7, 0x88, 0xAA, 0x43, 0xE7, 0x88, 0xAB, 0x43,\n\t0xE7, 0x88, 0xB5, 0x43, 0xE7, 0x88, 0xB6, 0x43,\n\t0xE7, 0x88, 0xBB, 0x43, 0xE7, 0x88, 0xBF, 0x43,\n\t0xE7, 0x89, 0x87, 0x43, 0xE7, 0x89, 0x90, 0x43,\n\t0xE7, 0x89, 0x99, 0x43, 0xE7, 0x89, 0x9B, 0x43,\n\t// Bytes f00 - f3f\n\t0xE7, 0x89, 0xA2, 0x43, 0xE7, 0x89, 0xB9, 0x43,\n\t0xE7, 0x8A, 0x80, 0x43, 0xE7, 0x8A, 0x95, 0x43,\n\t0xE7, 0x8A, 0xAC, 0x43, 0xE7, 0x8A, 0xAF, 0x43,\n\t0xE7, 0x8B, 0x80, 0x43, 0xE7, 0x8B, 0xBC, 0x43,\n\t0xE7, 0x8C, 0xAA, 0x43, 0xE7, 0x8D, 0xB5, 0x43,\n\t0xE7, 0x8D, 0xBA, 0x43, 0xE7, 0x8E, 0x84, 0x43,\n\t0xE7, 0x8E, 0x87, 0x43, 0xE7, 0x8E, 0x89, 0x43,\n\t0xE7, 0x8E, 0x8B, 0x43, 0xE7, 0x8E, 0xA5, 0x43,\n\t// Bytes f40 - f7f\n\t0xE7, 0x8E, 0xB2, 0x43, 0xE7, 0x8F, 0x9E, 0x43,\n\t0xE7, 0x90, 0x86, 0x43, 0xE7, 0x90, 0x89, 0x43,\n\t0xE7, 0x90, 0xA2, 0x43, 0xE7, 0x91, 0x87, 0x43,\n\t0xE7, 0x91, 0x9C, 0x43, 0xE7, 0x91, 0xA9, 0x43,\n\t0xE7, 0x91, 0xB1, 0x43, 0xE7, 0x92, 0x85, 0x43,\n\t0xE7, 0x92, 0x89, 0x43, 0xE7, 0x92, 0x98, 0x43,\n\t0xE7, 0x93, 0x8A, 0x43, 0xE7, 0x93, 0x9C, 0x43,\n\t0xE7, 0x93, 0xA6, 0x43, 0xE7, 0x94, 0x86, 0x43,\n\t// Bytes f80 - fbf\n\t0xE7, 0x94, 0x98, 0x43, 0xE7, 0x94, 0x9F, 0x43,\n\t0xE7, 0x94, 0xA4, 0x43, 0xE7, 0x94, 0xA8, 0x43,\n\t0xE7, 0x94, 0xB0, 0x43, 0xE7, 0x94, 0xB2, 0x43,\n\t0xE7, 0x94, 0xB3, 0x43, 0xE7, 0x94, 0xB7, 0x43,\n\t0xE7, 0x94, 0xBB, 0x43, 0xE7, 0x94, 0xBE, 0x43,\n\t0xE7, 0x95, 0x99, 0x43, 0xE7, 0x95, 0xA5, 0x43,\n\t0xE7, 0x95, 0xB0, 0x43, 0xE7, 0x96, 0x8B, 0x43,\n\t0xE7, 0x96, 0x92, 0x43, 0xE7, 0x97, 0xA2, 0x43,\n\t// Bytes fc0 - fff\n\t0xE7, 0x98, 0x90, 0x43, 0xE7, 0x98, 0x9D, 0x43,\n\t0xE7, 0x98, 0x9F, 0x43, 0xE7, 0x99, 0x82, 0x43,\n\t0xE7, 0x99, 0xA9, 0x43, 0xE7, 0x99, 0xB6, 0x43,\n\t0xE7, 0x99, 0xBD, 0x43, 0xE7, 0x9A, 0xAE, 0x43,\n\t0xE7, 0x9A, 0xBF, 0x43, 0xE7, 0x9B, 0x8A, 0x43,\n\t0xE7, 0x9B, 0x9B, 0x43, 0xE7, 0x9B, 0xA3, 0x43,\n\t0xE7, 0x9B, 0xA7, 0x43, 0xE7, 0x9B, 0xAE, 0x43,\n\t0xE7, 0x9B, 0xB4, 0x43, 0xE7, 0x9C, 0x81, 0x43,\n\t// Bytes 1000 - 103f\n\t0xE7, 0x9C, 0x9E, 0x43, 0xE7, 0x9C, 0x9F, 0x43,\n\t0xE7, 0x9D, 0x80, 0x43, 0xE7, 0x9D, 0x8A, 0x43,\n\t0xE7, 0x9E, 0x8B, 0x43, 0xE7, 0x9E, 0xA7, 0x43,\n\t0xE7, 0x9F, 0x9B, 0x43, 0xE7, 0x9F, 0xA2, 0x43,\n\t0xE7, 0x9F, 0xB3, 0x43, 0xE7, 0xA1, 0x8E, 0x43,\n\t0xE7, 0xA1, 0xAB, 0x43, 0xE7, 0xA2, 0x8C, 0x43,\n\t0xE7, 0xA2, 0x91, 0x43, 0xE7, 0xA3, 0x8A, 0x43,\n\t0xE7, 0xA3, 0x8C, 0x43, 0xE7, 0xA3, 0xBB, 0x43,\n\t// Bytes 1040 - 107f\n\t0xE7, 0xA4, 0xAA, 0x43, 0xE7, 0xA4, 0xBA, 0x43,\n\t0xE7, 0xA4, 0xBC, 0x43, 0xE7, 0xA4, 0xBE, 0x43,\n\t0xE7, 0xA5, 0x88, 0x43, 0xE7, 0xA5, 0x89, 0x43,\n\t0xE7, 0xA5, 0x90, 0x43, 0xE7, 0xA5, 0x96, 0x43,\n\t0xE7, 0xA5, 0x9D, 0x43, 0xE7, 0xA5, 0x9E, 0x43,\n\t0xE7, 0xA5, 0xA5, 0x43, 0xE7, 0xA5, 0xBF, 0x43,\n\t0xE7, 0xA6, 0x81, 0x43, 0xE7, 0xA6, 0x8D, 0x43,\n\t0xE7, 0xA6, 0x8E, 0x43, 0xE7, 0xA6, 0x8F, 0x43,\n\t// Bytes 1080 - 10bf\n\t0xE7, 0xA6, 0xAE, 0x43, 0xE7, 0xA6, 0xB8, 0x43,\n\t0xE7, 0xA6, 0xBE, 0x43, 0xE7, 0xA7, 0x8A, 0x43,\n\t0xE7, 0xA7, 0x98, 0x43, 0xE7, 0xA7, 0xAB, 0x43,\n\t0xE7, 0xA8, 0x9C, 0x43, 0xE7, 0xA9, 0x80, 0x43,\n\t0xE7, 0xA9, 0x8A, 0x43, 0xE7, 0xA9, 0x8F, 0x43,\n\t0xE7, 0xA9, 0xB4, 0x43, 0xE7, 0xA9, 0xBA, 0x43,\n\t0xE7, 0xAA, 0x81, 0x43, 0xE7, 0xAA, 0xB1, 0x43,\n\t0xE7, 0xAB, 0x8B, 0x43, 0xE7, 0xAB, 0xAE, 0x43,\n\t// Bytes 10c0 - 10ff\n\t0xE7, 0xAB, 0xB9, 0x43, 0xE7, 0xAC, 0xA0, 0x43,\n\t0xE7, 0xAE, 0x8F, 0x43, 0xE7, 0xAF, 0x80, 0x43,\n\t0xE7, 0xAF, 0x86, 0x43, 0xE7, 0xAF, 0x89, 0x43,\n\t0xE7, 0xB0, 0xBE, 0x43, 0xE7, 0xB1, 0xA0, 0x43,\n\t0xE7, 0xB1, 0xB3, 0x43, 0xE7, 0xB1, 0xBB, 0x43,\n\t0xE7, 0xB2, 0x92, 0x43, 0xE7, 0xB2, 0xBE, 0x43,\n\t0xE7, 0xB3, 0x92, 0x43, 0xE7, 0xB3, 0x96, 0x43,\n\t0xE7, 0xB3, 0xA3, 0x43, 0xE7, 0xB3, 0xA7, 0x43,\n\t// Bytes 1100 - 113f\n\t0xE7, 0xB3, 0xA8, 0x43, 0xE7, 0xB3, 0xB8, 0x43,\n\t0xE7, 0xB4, 0x80, 0x43, 0xE7, 0xB4, 0x90, 0x43,\n\t0xE7, 0xB4, 0xA2, 0x43, 0xE7, 0xB4, 0xAF, 0x43,\n\t0xE7, 0xB5, 0x82, 0x43, 0xE7, 0xB5, 0x9B, 0x43,\n\t0xE7, 0xB5, 0xA3, 0x43, 0xE7, 0xB6, 0xA0, 0x43,\n\t0xE7, 0xB6, 0xBE, 0x43, 0xE7, 0xB7, 0x87, 0x43,\n\t0xE7, 0xB7, 0xB4, 0x43, 0xE7, 0xB8, 0x82, 0x43,\n\t0xE7, 0xB8, 0x89, 0x43, 0xE7, 0xB8, 0xB7, 0x43,\n\t// Bytes 1140 - 117f\n\t0xE7, 0xB9, 0x81, 0x43, 0xE7, 0xB9, 0x85, 0x43,\n\t0xE7, 0xBC, 0xB6, 0x43, 0xE7, 0xBC, 0xBE, 0x43,\n\t0xE7, 0xBD, 0x91, 0x43, 0xE7, 0xBD, 0xB2, 0x43,\n\t0xE7, 0xBD, 0xB9, 0x43, 0xE7, 0xBD, 0xBA, 0x43,\n\t0xE7, 0xBE, 0x85, 0x43, 0xE7, 0xBE, 0x8A, 0x43,\n\t0xE7, 0xBE, 0x95, 0x43, 0xE7, 0xBE, 0x9A, 0x43,\n\t0xE7, 0xBE, 0xBD, 0x43, 0xE7, 0xBF, 0xBA, 0x43,\n\t0xE8, 0x80, 0x81, 0x43, 0xE8, 0x80, 0x85, 0x43,\n\t// Bytes 1180 - 11bf\n\t0xE8, 0x80, 0x8C, 0x43, 0xE8, 0x80, 0x92, 0x43,\n\t0xE8, 0x80, 0xB3, 0x43, 0xE8, 0x81, 0x86, 0x43,\n\t0xE8, 0x81, 0xA0, 0x43, 0xE8, 0x81, 0xAF, 0x43,\n\t0xE8, 0x81, 0xB0, 0x43, 0xE8, 0x81, 0xBE, 0x43,\n\t0xE8, 0x81, 0xBF, 0x43, 0xE8, 0x82, 0x89, 0x43,\n\t0xE8, 0x82, 0x8B, 0x43, 0xE8, 0x82, 0xAD, 0x43,\n\t0xE8, 0x82, 0xB2, 0x43, 0xE8, 0x84, 0x83, 0x43,\n\t0xE8, 0x84, 0xBE, 0x43, 0xE8, 0x87, 0x98, 0x43,\n\t// Bytes 11c0 - 11ff\n\t0xE8, 0x87, 0xA3, 0x43, 0xE8, 0x87, 0xA8, 0x43,\n\t0xE8, 0x87, 0xAA, 0x43, 0xE8, 0x87, 0xAD, 0x43,\n\t0xE8, 0x87, 0xB3, 0x43, 0xE8, 0x87, 0xBC, 0x43,\n\t0xE8, 0x88, 0x81, 0x43, 0xE8, 0x88, 0x84, 0x43,\n\t0xE8, 0x88, 0x8C, 0x43, 0xE8, 0x88, 0x98, 0x43,\n\t0xE8, 0x88, 0x9B, 0x43, 0xE8, 0x88, 0x9F, 0x43,\n\t0xE8, 0x89, 0xAE, 0x43, 0xE8, 0x89, 0xAF, 0x43,\n\t0xE8, 0x89, 0xB2, 0x43, 0xE8, 0x89, 0xB8, 0x43,\n\t// Bytes 1200 - 123f\n\t0xE8, 0x89, 0xB9, 0x43, 0xE8, 0x8A, 0x8B, 0x43,\n\t0xE8, 0x8A, 0x91, 0x43, 0xE8, 0x8A, 0x9D, 0x43,\n\t0xE8, 0x8A, 0xB1, 0x43, 0xE8, 0x8A, 0xB3, 0x43,\n\t0xE8, 0x8A, 0xBD, 0x43, 0xE8, 0x8B, 0xA5, 0x43,\n\t0xE8, 0x8B, 0xA6, 0x43, 0xE8, 0x8C, 0x9D, 0x43,\n\t0xE8, 0x8C, 0xA3, 0x43, 0xE8, 0x8C, 0xB6, 0x43,\n\t0xE8, 0x8D, 0x92, 0x43, 0xE8, 0x8D, 0x93, 0x43,\n\t0xE8, 0x8D, 0xA3, 0x43, 0xE8, 0x8E, 0xAD, 0x43,\n\t// Bytes 1240 - 127f\n\t0xE8, 0x8E, 0xBD, 0x43, 0xE8, 0x8F, 0x89, 0x43,\n\t0xE8, 0x8F, 0x8A, 0x43, 0xE8, 0x8F, 0x8C, 0x43,\n\t0xE8, 0x8F, 0x9C, 0x43, 0xE8, 0x8F, 0xA7, 0x43,\n\t0xE8, 0x8F, 0xAF, 0x43, 0xE8, 0x8F, 0xB1, 0x43,\n\t0xE8, 0x90, 0xBD, 0x43, 0xE8, 0x91, 0x89, 0x43,\n\t0xE8, 0x91, 0x97, 0x43, 0xE8, 0x93, 0xAE, 0x43,\n\t0xE8, 0x93, 0xB1, 0x43, 0xE8, 0x93, 0xB3, 0x43,\n\t0xE8, 0x93, 0xBC, 0x43, 0xE8, 0x94, 0x96, 0x43,\n\t// Bytes 1280 - 12bf\n\t0xE8, 0x95, 0xA4, 0x43, 0xE8, 0x97, 0x8D, 0x43,\n\t0xE8, 0x97, 0xBA, 0x43, 0xE8, 0x98, 0x86, 0x43,\n\t0xE8, 0x98, 0x92, 0x43, 0xE8, 0x98, 0xAD, 0x43,\n\t0xE8, 0x98, 0xBF, 0x43, 0xE8, 0x99, 0x8D, 0x43,\n\t0xE8, 0x99, 0x90, 0x43, 0xE8, 0x99, 0x9C, 0x43,\n\t0xE8, 0x99, 0xA7, 0x43, 0xE8, 0x99, 0xA9, 0x43,\n\t0xE8, 0x99, 0xAB, 0x43, 0xE8, 0x9A, 0x88, 0x43,\n\t0xE8, 0x9A, 0xA9, 0x43, 0xE8, 0x9B, 0xA2, 0x43,\n\t// Bytes 12c0 - 12ff\n\t0xE8, 0x9C, 0x8E, 0x43, 0xE8, 0x9C, 0xA8, 0x43,\n\t0xE8, 0x9D, 0xAB, 0x43, 0xE8, 0x9D, 0xB9, 0x43,\n\t0xE8, 0x9E, 0x86, 0x43, 0xE8, 0x9E, 0xBA, 0x43,\n\t0xE8, 0x9F, 0xA1, 0x43, 0xE8, 0xA0, 0x81, 0x43,\n\t0xE8, 0xA0, 0x9F, 0x43, 0xE8, 0xA1, 0x80, 0x43,\n\t0xE8, 0xA1, 0x8C, 0x43, 0xE8, 0xA1, 0xA0, 0x43,\n\t0xE8, 0xA1, 0xA3, 0x43, 0xE8, 0xA3, 0x82, 0x43,\n\t0xE8, 0xA3, 0x8F, 0x43, 0xE8, 0xA3, 0x97, 0x43,\n\t// Bytes 1300 - 133f\n\t0xE8, 0xA3, 0x9E, 0x43, 0xE8, 0xA3, 0xA1, 0x43,\n\t0xE8, 0xA3, 0xB8, 0x43, 0xE8, 0xA3, 0xBA, 0x43,\n\t0xE8, 0xA4, 0x90, 0x43, 0xE8, 0xA5, 0x81, 0x43,\n\t0xE8, 0xA5, 0xA4, 0x43, 0xE8, 0xA5, 0xBE, 0x43,\n\t0xE8, 0xA6, 0x86, 0x43, 0xE8, 0xA6, 0x8B, 0x43,\n\t0xE8, 0xA6, 0x96, 0x43, 0xE8, 0xA7, 0x92, 0x43,\n\t0xE8, 0xA7, 0xA3, 0x43, 0xE8, 0xA8, 0x80, 0x43,\n\t0xE8, 0xAA, 0xA0, 0x43, 0xE8, 0xAA, 0xAA, 0x43,\n\t// Bytes 1340 - 137f\n\t0xE8, 0xAA, 0xBF, 0x43, 0xE8, 0xAB, 0x8B, 0x43,\n\t0xE8, 0xAB, 0x92, 0x43, 0xE8, 0xAB, 0x96, 0x43,\n\t0xE8, 0xAB, 0xAD, 0x43, 0xE8, 0xAB, 0xB8, 0x43,\n\t0xE8, 0xAB, 0xBE, 0x43, 0xE8, 0xAC, 0x81, 0x43,\n\t0xE8, 0xAC, 0xB9, 0x43, 0xE8, 0xAD, 0x98, 0x43,\n\t0xE8, 0xAE, 0x80, 0x43, 0xE8, 0xAE, 0x8A, 0x43,\n\t0xE8, 0xB0, 0xB7, 0x43, 0xE8, 0xB1, 0x86, 0x43,\n\t0xE8, 0xB1, 0x88, 0x43, 0xE8, 0xB1, 0x95, 0x43,\n\t// Bytes 1380 - 13bf\n\t0xE8, 0xB1, 0xB8, 0x43, 0xE8, 0xB2, 0x9D, 0x43,\n\t0xE8, 0xB2, 0xA1, 0x43, 0xE8, 0xB2, 0xA9, 0x43,\n\t0xE8, 0xB2, 0xAB, 0x43, 0xE8, 0xB3, 0x81, 0x43,\n\t0xE8, 0xB3, 0x82, 0x43, 0xE8, 0xB3, 0x87, 0x43,\n\t0xE8, 0xB3, 0x88, 0x43, 0xE8, 0xB3, 0x93, 0x43,\n\t0xE8, 0xB4, 0x88, 0x43, 0xE8, 0xB4, 0x9B, 0x43,\n\t0xE8, 0xB5, 0xA4, 0x43, 0xE8, 0xB5, 0xB0, 0x43,\n\t0xE8, 0xB5, 0xB7, 0x43, 0xE8, 0xB6, 0xB3, 0x43,\n\t// Bytes 13c0 - 13ff\n\t0xE8, 0xB6, 0xBC, 0x43, 0xE8, 0xB7, 0x8B, 0x43,\n\t0xE8, 0xB7, 0xAF, 0x43, 0xE8, 0xB7, 0xB0, 0x43,\n\t0xE8, 0xBA, 0xAB, 0x43, 0xE8, 0xBB, 0x8A, 0x43,\n\t0xE8, 0xBB, 0x94, 0x43, 0xE8, 0xBC, 0xA6, 0x43,\n\t0xE8, 0xBC, 0xAA, 0x43, 0xE8, 0xBC, 0xB8, 0x43,\n\t0xE8, 0xBC, 0xBB, 0x43, 0xE8, 0xBD, 0xA2, 0x43,\n\t0xE8, 0xBE, 0x9B, 0x43, 0xE8, 0xBE, 0x9E, 0x43,\n\t0xE8, 0xBE, 0xB0, 0x43, 0xE8, 0xBE, 0xB5, 0x43,\n\t// Bytes 1400 - 143f\n\t0xE8, 0xBE, 0xB6, 0x43, 0xE9, 0x80, 0xA3, 0x43,\n\t0xE9, 0x80, 0xB8, 0x43, 0xE9, 0x81, 0x8A, 0x43,\n\t0xE9, 0x81, 0xA9, 0x43, 0xE9, 0x81, 0xB2, 0x43,\n\t0xE9, 0x81, 0xBC, 0x43, 0xE9, 0x82, 0x8F, 0x43,\n\t0xE9, 0x82, 0x91, 0x43, 0xE9, 0x82, 0x94, 0x43,\n\t0xE9, 0x83, 0x8E, 0x43, 0xE9, 0x83, 0x9E, 0x43,\n\t0xE9, 0x83, 0xB1, 0x43, 0xE9, 0x83, 0xBD, 0x43,\n\t0xE9, 0x84, 0x91, 0x43, 0xE9, 0x84, 0x9B, 0x43,\n\t// Bytes 1440 - 147f\n\t0xE9, 0x85, 0x89, 0x43, 0xE9, 0x85, 0x8D, 0x43,\n\t0xE9, 0x85, 0xAA, 0x43, 0xE9, 0x86, 0x99, 0x43,\n\t0xE9, 0x86, 0xB4, 0x43, 0xE9, 0x87, 0x86, 0x43,\n\t0xE9, 0x87, 0x8C, 0x43, 0xE9, 0x87, 0x8F, 0x43,\n\t0xE9, 0x87, 0x91, 0x43, 0xE9, 0x88, 0xB4, 0x43,\n\t0xE9, 0x88, 0xB8, 0x43, 0xE9, 0x89, 0xB6, 0x43,\n\t0xE9, 0x89, 0xBC, 0x43, 0xE9, 0x8B, 0x97, 0x43,\n\t0xE9, 0x8B, 0x98, 0x43, 0xE9, 0x8C, 0x84, 0x43,\n\t// Bytes 1480 - 14bf\n\t0xE9, 0x8D, 0x8A, 0x43, 0xE9, 0x8F, 0xB9, 0x43,\n\t0xE9, 0x90, 0x95, 0x43, 0xE9, 0x95, 0xB7, 0x43,\n\t0xE9, 0x96, 0x80, 0x43, 0xE9, 0x96, 0x8B, 0x43,\n\t0xE9, 0x96, 0xAD, 0x43, 0xE9, 0x96, 0xB7, 0x43,\n\t0xE9, 0x98, 0x9C, 0x43, 0xE9, 0x98, 0xAE, 0x43,\n\t0xE9, 0x99, 0x8B, 0x43, 0xE9, 0x99, 0x8D, 0x43,\n\t0xE9, 0x99, 0xB5, 0x43, 0xE9, 0x99, 0xB8, 0x43,\n\t0xE9, 0x99, 0xBC, 0x43, 0xE9, 0x9A, 0x86, 0x43,\n\t// Bytes 14c0 - 14ff\n\t0xE9, 0x9A, 0xA3, 0x43, 0xE9, 0x9A, 0xB6, 0x43,\n\t0xE9, 0x9A, 0xB7, 0x43, 0xE9, 0x9A, 0xB8, 0x43,\n\t0xE9, 0x9A, 0xB9, 0x43, 0xE9, 0x9B, 0x83, 0x43,\n\t0xE9, 0x9B, 0xA2, 0x43, 0xE9, 0x9B, 0xA3, 0x43,\n\t0xE9, 0x9B, 0xA8, 0x43, 0xE9, 0x9B, 0xB6, 0x43,\n\t0xE9, 0x9B, 0xB7, 0x43, 0xE9, 0x9C, 0xA3, 0x43,\n\t0xE9, 0x9C, 0xB2, 0x43, 0xE9, 0x9D, 0x88, 0x43,\n\t0xE9, 0x9D, 0x91, 0x43, 0xE9, 0x9D, 0x96, 0x43,\n\t// Bytes 1500 - 153f\n\t0xE9, 0x9D, 0x9E, 0x43, 0xE9, 0x9D, 0xA2, 0x43,\n\t0xE9, 0x9D, 0xA9, 0x43, 0xE9, 0x9F, 0x8B, 0x43,\n\t0xE9, 0x9F, 0x9B, 0x43, 0xE9, 0x9F, 0xA0, 0x43,\n\t0xE9, 0x9F, 0xAD, 0x43, 0xE9, 0x9F, 0xB3, 0x43,\n\t0xE9, 0x9F, 0xBF, 0x43, 0xE9, 0xA0, 0x81, 0x43,\n\t0xE9, 0xA0, 0x85, 0x43, 0xE9, 0xA0, 0x8B, 0x43,\n\t0xE9, 0xA0, 0x98, 0x43, 0xE9, 0xA0, 0xA9, 0x43,\n\t0xE9, 0xA0, 0xBB, 0x43, 0xE9, 0xA1, 0x9E, 0x43,\n\t// Bytes 1540 - 157f\n\t0xE9, 0xA2, 0xA8, 0x43, 0xE9, 0xA3, 0x9B, 0x43,\n\t0xE9, 0xA3, 0x9F, 0x43, 0xE9, 0xA3, 0xA2, 0x43,\n\t0xE9, 0xA3, 0xAF, 0x43, 0xE9, 0xA3, 0xBC, 0x43,\n\t0xE9, 0xA4, 0xA8, 0x43, 0xE9, 0xA4, 0xA9, 0x43,\n\t0xE9, 0xA6, 0x96, 0x43, 0xE9, 0xA6, 0x99, 0x43,\n\t0xE9, 0xA6, 0xA7, 0x43, 0xE9, 0xA6, 0xAC, 0x43,\n\t0xE9, 0xA7, 0x82, 0x43, 0xE9, 0xA7, 0xB1, 0x43,\n\t0xE9, 0xA7, 0xBE, 0x43, 0xE9, 0xA9, 0xAA, 0x43,\n\t// Bytes 1580 - 15bf\n\t0xE9, 0xAA, 0xA8, 0x43, 0xE9, 0xAB, 0x98, 0x43,\n\t0xE9, 0xAB, 0x9F, 0x43, 0xE9, 0xAC, 0x92, 0x43,\n\t0xE9, 0xAC, 0xA5, 0x43, 0xE9, 0xAC, 0xAF, 0x43,\n\t0xE9, 0xAC, 0xB2, 0x43, 0xE9, 0xAC, 0xBC, 0x43,\n\t0xE9, 0xAD, 0x9A, 0x43, 0xE9, 0xAD, 0xAF, 0x43,\n\t0xE9, 0xB1, 0x80, 0x43, 0xE9, 0xB1, 0x97, 0x43,\n\t0xE9, 0xB3, 0xA5, 0x43, 0xE9, 0xB3, 0xBD, 0x43,\n\t0xE9, 0xB5, 0xA7, 0x43, 0xE9, 0xB6, 0xB4, 0x43,\n\t// Bytes 15c0 - 15ff\n\t0xE9, 0xB7, 0xBA, 0x43, 0xE9, 0xB8, 0x9E, 0x43,\n\t0xE9, 0xB9, 0xB5, 0x43, 0xE9, 0xB9, 0xBF, 0x43,\n\t0xE9, 0xBA, 0x97, 0x43, 0xE9, 0xBA, 0x9F, 0x43,\n\t0xE9, 0xBA, 0xA5, 0x43, 0xE9, 0xBA, 0xBB, 0x43,\n\t0xE9, 0xBB, 0x83, 0x43, 0xE9, 0xBB, 0x8D, 0x43,\n\t0xE9, 0xBB, 0x8E, 0x43, 0xE9, 0xBB, 0x91, 0x43,\n\t0xE9, 0xBB, 0xB9, 0x43, 0xE9, 0xBB, 0xBD, 0x43,\n\t0xE9, 0xBB, 0xBE, 0x43, 0xE9, 0xBC, 0x85, 0x43,\n\t// Bytes 1600 - 163f\n\t0xE9, 0xBC, 0x8E, 0x43, 0xE9, 0xBC, 0x8F, 0x43,\n\t0xE9, 0xBC, 0x93, 0x43, 0xE9, 0xBC, 0x96, 0x43,\n\t0xE9, 0xBC, 0xA0, 0x43, 0xE9, 0xBC, 0xBB, 0x43,\n\t0xE9, 0xBD, 0x83, 0x43, 0xE9, 0xBD, 0x8A, 0x43,\n\t0xE9, 0xBD, 0x92, 0x43, 0xE9, 0xBE, 0x8D, 0x43,\n\t0xE9, 0xBE, 0x8E, 0x43, 0xE9, 0xBE, 0x9C, 0x43,\n\t0xE9, 0xBE, 0x9F, 0x43, 0xE9, 0xBE, 0xA0, 0x43,\n\t0xEA, 0x9C, 0xA7, 0x43, 0xEA, 0x9D, 0xAF, 0x43,\n\t// Bytes 1640 - 167f\n\t0xEA, 0xAC, 0xB7, 0x43, 0xEA, 0xAD, 0x92, 0x44,\n\t0xF0, 0xA0, 0x84, 0xA2, 0x44, 0xF0, 0xA0, 0x94,\n\t0x9C, 0x44, 0xF0, 0xA0, 0x94, 0xA5, 0x44, 0xF0,\n\t0xA0, 0x95, 0x8B, 0x44, 0xF0, 0xA0, 0x98, 0xBA,\n\t0x44, 0xF0, 0xA0, 0xA0, 0x84, 0x44, 0xF0, 0xA0,\n\t0xA3, 0x9E, 0x44, 0xF0, 0xA0, 0xA8, 0xAC, 0x44,\n\t0xF0, 0xA0, 0xAD, 0xA3, 0x44, 0xF0, 0xA1, 0x93,\n\t0xA4, 0x44, 0xF0, 0xA1, 0x9A, 0xA8, 0x44, 0xF0,\n\t// Bytes 1680 - 16bf\n\t0xA1, 0x9B, 0xAA, 0x44, 0xF0, 0xA1, 0xA7, 0x88,\n\t0x44, 0xF0, 0xA1, 0xAC, 0x98, 0x44, 0xF0, 0xA1,\n\t0xB4, 0x8B, 0x44, 0xF0, 0xA1, 0xB7, 0xA4, 0x44,\n\t0xF0, 0xA1, 0xB7, 0xA6, 0x44, 0xF0, 0xA2, 0x86,\n\t0x83, 0x44, 0xF0, 0xA2, 0x86, 0x9F, 0x44, 0xF0,\n\t0xA2, 0x8C, 0xB1, 0x44, 0xF0, 0xA2, 0x9B, 0x94,\n\t0x44, 0xF0, 0xA2, 0xA1, 0x84, 0x44, 0xF0, 0xA2,\n\t0xA1, 0x8A, 0x44, 0xF0, 0xA2, 0xAC, 0x8C, 0x44,\n\t// Bytes 16c0 - 16ff\n\t0xF0, 0xA2, 0xAF, 0xB1, 0x44, 0xF0, 0xA3, 0x80,\n\t0x8A, 0x44, 0xF0, 0xA3, 0x8A, 0xB8, 0x44, 0xF0,\n\t0xA3, 0x8D, 0x9F, 0x44, 0xF0, 0xA3, 0x8E, 0x93,\n\t0x44, 0xF0, 0xA3, 0x8E, 0x9C, 0x44, 0xF0, 0xA3,\n\t0x8F, 0x83, 0x44, 0xF0, 0xA3, 0x8F, 0x95, 0x44,\n\t0xF0, 0xA3, 0x91, 0xAD, 0x44, 0xF0, 0xA3, 0x9A,\n\t0xA3, 0x44, 0xF0, 0xA3, 0xA2, 0xA7, 0x44, 0xF0,\n\t0xA3, 0xAA, 0x8D, 0x44, 0xF0, 0xA3, 0xAB, 0xBA,\n\t// Bytes 1700 - 173f\n\t0x44, 0xF0, 0xA3, 0xB2, 0xBC, 0x44, 0xF0, 0xA3,\n\t0xB4, 0x9E, 0x44, 0xF0, 0xA3, 0xBB, 0x91, 0x44,\n\t0xF0, 0xA3, 0xBD, 0x9E, 0x44, 0xF0, 0xA3, 0xBE,\n\t0x8E, 0x44, 0xF0, 0xA4, 0x89, 0xA3, 0x44, 0xF0,\n\t0xA4, 0x8B, 0xAE, 0x44, 0xF0, 0xA4, 0x8E, 0xAB,\n\t0x44, 0xF0, 0xA4, 0x98, 0x88, 0x44, 0xF0, 0xA4,\n\t0x9C, 0xB5, 0x44, 0xF0, 0xA4, 0xA0, 0x94, 0x44,\n\t0xF0, 0xA4, 0xB0, 0xB6, 0x44, 0xF0, 0xA4, 0xB2,\n\t// Bytes 1740 - 177f\n\t0x92, 0x44, 0xF0, 0xA4, 0xBE, 0xA1, 0x44, 0xF0,\n\t0xA4, 0xBE, 0xB8, 0x44, 0xF0, 0xA5, 0x81, 0x84,\n\t0x44, 0xF0, 0xA5, 0x83, 0xB2, 0x44, 0xF0, 0xA5,\n\t0x83, 0xB3, 0x44, 0xF0, 0xA5, 0x84, 0x99, 0x44,\n\t0xF0, 0xA5, 0x84, 0xB3, 0x44, 0xF0, 0xA5, 0x89,\n\t0x89, 0x44, 0xF0, 0xA5, 0x90, 0x9D, 0x44, 0xF0,\n\t0xA5, 0x98, 0xA6, 0x44, 0xF0, 0xA5, 0x9A, 0x9A,\n\t0x44, 0xF0, 0xA5, 0x9B, 0x85, 0x44, 0xF0, 0xA5,\n\t// Bytes 1780 - 17bf\n\t0xA5, 0xBC, 0x44, 0xF0, 0xA5, 0xAA, 0xA7, 0x44,\n\t0xF0, 0xA5, 0xAE, 0xAB, 0x44, 0xF0, 0xA5, 0xB2,\n\t0x80, 0x44, 0xF0, 0xA5, 0xB3, 0x90, 0x44, 0xF0,\n\t0xA5, 0xBE, 0x86, 0x44, 0xF0, 0xA6, 0x87, 0x9A,\n\t0x44, 0xF0, 0xA6, 0x88, 0xA8, 0x44, 0xF0, 0xA6,\n\t0x89, 0x87, 0x44, 0xF0, 0xA6, 0x8B, 0x99, 0x44,\n\t0xF0, 0xA6, 0x8C, 0xBE, 0x44, 0xF0, 0xA6, 0x93,\n\t0x9A, 0x44, 0xF0, 0xA6, 0x94, 0xA3, 0x44, 0xF0,\n\t// Bytes 17c0 - 17ff\n\t0xA6, 0x96, 0xA8, 0x44, 0xF0, 0xA6, 0x9E, 0xA7,\n\t0x44, 0xF0, 0xA6, 0x9E, 0xB5, 0x44, 0xF0, 0xA6,\n\t0xAC, 0xBC, 0x44, 0xF0, 0xA6, 0xB0, 0xB6, 0x44,\n\t0xF0, 0xA6, 0xB3, 0x95, 0x44, 0xF0, 0xA6, 0xB5,\n\t0xAB, 0x44, 0xF0, 0xA6, 0xBC, 0xAC, 0x44, 0xF0,\n\t0xA6, 0xBE, 0xB1, 0x44, 0xF0, 0xA7, 0x83, 0x92,\n\t0x44, 0xF0, 0xA7, 0x8F, 0x8A, 0x44, 0xF0, 0xA7,\n\t0x99, 0xA7, 0x44, 0xF0, 0xA7, 0xA2, 0xAE, 0x44,\n\t// Bytes 1800 - 183f\n\t0xF0, 0xA7, 0xA5, 0xA6, 0x44, 0xF0, 0xA7, 0xB2,\n\t0xA8, 0x44, 0xF0, 0xA7, 0xBB, 0x93, 0x44, 0xF0,\n\t0xA7, 0xBC, 0xAF, 0x44, 0xF0, 0xA8, 0x97, 0x92,\n\t0x44, 0xF0, 0xA8, 0x97, 0xAD, 0x44, 0xF0, 0xA8,\n\t0x9C, 0xAE, 0x44, 0xF0, 0xA8, 0xAF, 0xBA, 0x44,\n\t0xF0, 0xA8, 0xB5, 0xB7, 0x44, 0xF0, 0xA9, 0x85,\n\t0x85, 0x44, 0xF0, 0xA9, 0x87, 0x9F, 0x44, 0xF0,\n\t0xA9, 0x88, 0x9A, 0x44, 0xF0, 0xA9, 0x90, 0x8A,\n\t// Bytes 1840 - 187f\n\t0x44, 0xF0, 0xA9, 0x92, 0x96, 0x44, 0xF0, 0xA9,\n\t0x96, 0xB6, 0x44, 0xF0, 0xA9, 0xAC, 0xB0, 0x44,\n\t0xF0, 0xAA, 0x83, 0x8E, 0x44, 0xF0, 0xAA, 0x84,\n\t0x85, 0x44, 0xF0, 0xAA, 0x88, 0x8E, 0x44, 0xF0,\n\t0xAA, 0x8A, 0x91, 0x44, 0xF0, 0xAA, 0x8E, 0x92,\n\t0x44, 0xF0, 0xAA, 0x98, 0x80, 0x42, 0x21, 0x21,\n\t0x42, 0x21, 0x3F, 0x42, 0x2E, 0x2E, 0x42, 0x30,\n\t0x2C, 0x42, 0x30, 0x2E, 0x42, 0x31, 0x2C, 0x42,\n\t// Bytes 1880 - 18bf\n\t0x31, 0x2E, 0x42, 0x31, 0x30, 0x42, 0x31, 0x31,\n\t0x42, 0x31, 0x32, 0x42, 0x31, 0x33, 0x42, 0x31,\n\t0x34, 0x42, 0x31, 0x35, 0x42, 0x31, 0x36, 0x42,\n\t0x31, 0x37, 0x42, 0x31, 0x38, 0x42, 0x31, 0x39,\n\t0x42, 0x32, 0x2C, 0x42, 0x32, 0x2E, 0x42, 0x32,\n\t0x30, 0x42, 0x32, 0x31, 0x42, 0x32, 0x32, 0x42,\n\t0x32, 0x33, 0x42, 0x32, 0x34, 0x42, 0x32, 0x35,\n\t0x42, 0x32, 0x36, 0x42, 0x32, 0x37, 0x42, 0x32,\n\t// Bytes 18c0 - 18ff\n\t0x38, 0x42, 0x32, 0x39, 0x42, 0x33, 0x2C, 0x42,\n\t0x33, 0x2E, 0x42, 0x33, 0x30, 0x42, 0x33, 0x31,\n\t0x42, 0x33, 0x32, 0x42, 0x33, 0x33, 0x42, 0x33,\n\t0x34, 0x42, 0x33, 0x35, 0x42, 0x33, 0x36, 0x42,\n\t0x33, 0x37, 0x42, 0x33, 0x38, 0x42, 0x33, 0x39,\n\t0x42, 0x34, 0x2C, 0x42, 0x34, 0x2E, 0x42, 0x34,\n\t0x30, 0x42, 0x34, 0x31, 0x42, 0x34, 0x32, 0x42,\n\t0x34, 0x33, 0x42, 0x34, 0x34, 0x42, 0x34, 0x35,\n\t// Bytes 1900 - 193f\n\t0x42, 0x34, 0x36, 0x42, 0x34, 0x37, 0x42, 0x34,\n\t0x38, 0x42, 0x34, 0x39, 0x42, 0x35, 0x2C, 0x42,\n\t0x35, 0x2E, 0x42, 0x35, 0x30, 0x42, 0x36, 0x2C,\n\t0x42, 0x36, 0x2E, 0x42, 0x37, 0x2C, 0x42, 0x37,\n\t0x2E, 0x42, 0x38, 0x2C, 0x42, 0x38, 0x2E, 0x42,\n\t0x39, 0x2C, 0x42, 0x39, 0x2E, 0x42, 0x3D, 0x3D,\n\t0x42, 0x3F, 0x21, 0x42, 0x3F, 0x3F, 0x42, 0x41,\n\t0x55, 0x42, 0x42, 0x71, 0x42, 0x43, 0x44, 0x42,\n\t// Bytes 1940 - 197f\n\t0x44, 0x4A, 0x42, 0x44, 0x5A, 0x42, 0x44, 0x7A,\n\t0x42, 0x47, 0x42, 0x42, 0x47, 0x79, 0x42, 0x48,\n\t0x50, 0x42, 0x48, 0x56, 0x42, 0x48, 0x67, 0x42,\n\t0x48, 0x7A, 0x42, 0x49, 0x49, 0x42, 0x49, 0x4A,\n\t0x42, 0x49, 0x55, 0x42, 0x49, 0x56, 0x42, 0x49,\n\t0x58, 0x42, 0x4B, 0x42, 0x42, 0x4B, 0x4B, 0x42,\n\t0x4B, 0x4D, 0x42, 0x4C, 0x4A, 0x42, 0x4C, 0x6A,\n\t0x42, 0x4D, 0x42, 0x42, 0x4D, 0x43, 0x42, 0x4D,\n\t// Bytes 1980 - 19bf\n\t0x44, 0x42, 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42,\n\t0x4E, 0x4A, 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F,\n\t0x42, 0x50, 0x48, 0x42, 0x50, 0x52, 0x42, 0x50,\n\t0x61, 0x42, 0x52, 0x73, 0x42, 0x53, 0x44, 0x42,\n\t0x53, 0x4D, 0x42, 0x53, 0x53, 0x42, 0x53, 0x76,\n\t0x42, 0x54, 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57,\n\t0x43, 0x42, 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42,\n\t0x58, 0x49, 0x42, 0x63, 0x63, 0x42, 0x63, 0x64,\n\t// Bytes 19c0 - 19ff\n\t0x42, 0x63, 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64,\n\t0x61, 0x42, 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42,\n\t0x64, 0x7A, 0x42, 0x65, 0x56, 0x42, 0x66, 0x66,\n\t0x42, 0x66, 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66,\n\t0x6D, 0x42, 0x68, 0x61, 0x42, 0x69, 0x69, 0x42,\n\t0x69, 0x6A, 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76,\n\t0x42, 0x69, 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B,\n\t0x56, 0x42, 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42,\n\t// Bytes 1a00 - 1a3f\n\t0x6B, 0x6C, 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74,\n\t0x42, 0x6C, 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C,\n\t0x6E, 0x42, 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42,\n\t0x6D, 0x33, 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56,\n\t0x42, 0x6D, 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D,\n\t0x67, 0x42, 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42,\n\t0x6D, 0x73, 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46,\n\t0x42, 0x6E, 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E,\n\t// Bytes 1a40 - 1a7f\n\t0x6A, 0x42, 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42,\n\t0x6F, 0x56, 0x42, 0x70, 0x41, 0x42, 0x70, 0x46,\n\t0x42, 0x70, 0x56, 0x42, 0x70, 0x57, 0x42, 0x70,\n\t0x63, 0x42, 0x70, 0x73, 0x42, 0x73, 0x72, 0x42,\n\t0x73, 0x74, 0x42, 0x76, 0x69, 0x42, 0x78, 0x69,\n\t0x43, 0x28, 0x31, 0x29, 0x43, 0x28, 0x32, 0x29,\n\t0x43, 0x28, 0x33, 0x29, 0x43, 0x28, 0x34, 0x29,\n\t0x43, 0x28, 0x35, 0x29, 0x43, 0x28, 0x36, 0x29,\n\t// Bytes 1a80 - 1abf\n\t0x43, 0x28, 0x37, 0x29, 0x43, 0x28, 0x38, 0x29,\n\t0x43, 0x28, 0x39, 0x29, 0x43, 0x28, 0x41, 0x29,\n\t0x43, 0x28, 0x42, 0x29, 0x43, 0x28, 0x43, 0x29,\n\t0x43, 0x28, 0x44, 0x29, 0x43, 0x28, 0x45, 0x29,\n\t0x43, 0x28, 0x46, 0x29, 0x43, 0x28, 0x47, 0x29,\n\t0x43, 0x28, 0x48, 0x29, 0x43, 0x28, 0x49, 0x29,\n\t0x43, 0x28, 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29,\n\t0x43, 0x28, 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29,\n\t// Bytes 1ac0 - 1aff\n\t0x43, 0x28, 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29,\n\t0x43, 0x28, 0x50, 0x29, 0x43, 0x28, 0x51, 0x29,\n\t0x43, 0x28, 0x52, 0x29, 0x43, 0x28, 0x53, 0x29,\n\t0x43, 0x28, 0x54, 0x29, 0x43, 0x28, 0x55, 0x29,\n\t0x43, 0x28, 0x56, 0x29, 0x43, 0x28, 0x57, 0x29,\n\t0x43, 0x28, 0x58, 0x29, 0x43, 0x28, 0x59, 0x29,\n\t0x43, 0x28, 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29,\n\t0x43, 0x28, 0x62, 0x29, 0x43, 0x28, 0x63, 0x29,\n\t// Bytes 1b00 - 1b3f\n\t0x43, 0x28, 0x64, 0x29, 0x43, 0x28, 0x65, 0x29,\n\t0x43, 0x28, 0x66, 0x29, 0x43, 0x28, 0x67, 0x29,\n\t0x43, 0x28, 0x68, 0x29, 0x43, 0x28, 0x69, 0x29,\n\t0x43, 0x28, 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29,\n\t0x43, 0x28, 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29,\n\t0x43, 0x28, 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29,\n\t0x43, 0x28, 0x70, 0x29, 0x43, 0x28, 0x71, 0x29,\n\t0x43, 0x28, 0x72, 0x29, 0x43, 0x28, 0x73, 0x29,\n\t// Bytes 1b40 - 1b7f\n\t0x43, 0x28, 0x74, 0x29, 0x43, 0x28, 0x75, 0x29,\n\t0x43, 0x28, 0x76, 0x29, 0x43, 0x28, 0x77, 0x29,\n\t0x43, 0x28, 0x78, 0x29, 0x43, 0x28, 0x79, 0x29,\n\t0x43, 0x28, 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E,\n\t0x43, 0x31, 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E,\n\t0x43, 0x31, 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E,\n\t0x43, 0x31, 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E,\n\t0x43, 0x31, 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E,\n\t// Bytes 1b80 - 1bbf\n\t0x43, 0x31, 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E,\n\t0x43, 0x32, 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D,\n\t0x43, 0x3D, 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E,\n\t0x43, 0x46, 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A,\n\t0x43, 0x47, 0x50, 0x61, 0x43, 0x49, 0x49, 0x49,\n\t0x43, 0x4C, 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7,\n\t0x43, 0x4D, 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61,\n\t0x43, 0x4D, 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D,\n\t// Bytes 1bc0 - 1bff\n\t0x43, 0x50, 0x50, 0x56, 0x43, 0x50, 0x54, 0x45,\n\t0x43, 0x54, 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A,\n\t0x43, 0x56, 0x49, 0x49, 0x43, 0x58, 0x49, 0x49,\n\t0x43, 0x61, 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73,\n\t0x43, 0x61, 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72,\n\t0x43, 0x63, 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75,\n\t0x43, 0x63, 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32,\n\t0x43, 0x63, 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32,\n\t// Bytes 1c00 - 1c3f\n\t0x43, 0x64, 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67,\n\t0x43, 0x66, 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C,\n\t0x43, 0x67, 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61,\n\t0x43, 0x69, 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A,\n\t0x43, 0x6B, 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32,\n\t0x43, 0x6B, 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9,\n\t0x43, 0x6C, 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7,\n\t0x43, 0x6D, 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32,\n\t// Bytes 1c40 - 1c7f\n\t0x43, 0x6D, 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C,\n\t0x43, 0x72, 0x61, 0x64, 0x43, 0x76, 0x69, 0x69,\n\t0x43, 0x78, 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43,\n\t0x43, 0xC2, 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E,\n\t0x43, 0xCE, 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46,\n\t0x43, 0xCE, 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57,\n\t0x43, 0xCE, 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C,\n\t0x43, 0xCE, 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73,\n\t// Bytes 1c80 - 1cbf\n\t0x44, 0x28, 0x31, 0x30, 0x29, 0x44, 0x28, 0x31,\n\t0x31, 0x29, 0x44, 0x28, 0x31, 0x32, 0x29, 0x44,\n\t0x28, 0x31, 0x33, 0x29, 0x44, 0x28, 0x31, 0x34,\n\t0x29, 0x44, 0x28, 0x31, 0x35, 0x29, 0x44, 0x28,\n\t0x31, 0x36, 0x29, 0x44, 0x28, 0x31, 0x37, 0x29,\n\t0x44, 0x28, 0x31, 0x38, 0x29, 0x44, 0x28, 0x31,\n\t0x39, 0x29, 0x44, 0x28, 0x32, 0x30, 0x29, 0x44,\n\t0x30, 0xE7, 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81,\n\t// Bytes 1cc0 - 1cff\n\t0x84, 0x44, 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31,\n\t0xE6, 0x9C, 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9,\n\t0x44, 0x32, 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6,\n\t0x9C, 0x88, 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44,\n\t0x33, 0xE6, 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C,\n\t0x88, 0x44, 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34,\n\t0xE6, 0x97, 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88,\n\t0x44, 0x34, 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6,\n\t// Bytes 1d00 - 1d3f\n\t0x97, 0xA5, 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44,\n\t0x35, 0xE7, 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97,\n\t0xA5, 0x44, 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36,\n\t0xE7, 0x82, 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5,\n\t0x44, 0x37, 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7,\n\t0x82, 0xB9, 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44,\n\t0x38, 0xE6, 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82,\n\t0xB9, 0x44, 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39,\n\t// Bytes 1d40 - 1d7f\n\t0xE6, 0x9C, 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9,\n\t0x44, 0x56, 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E,\n\t0x6D, 0x2E, 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44,\n\t0x70, 0x2E, 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69,\n\t0x69, 0x44, 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5,\n\t0xB4, 0xD5, 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB,\n\t0x44, 0xD5, 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4,\n\t0xD5, 0xB6, 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44,\n\t// Bytes 1d80 - 1dbf\n\t0xD7, 0x90, 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9,\n\t0xB4, 0x44, 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xA8, 0xD8, 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8,\n\t0xD8, 0xB2, 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44,\n\t0xD8, 0xA8, 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9,\n\t0x87, 0x44, 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8,\n\t0xA8, 0xD9, 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC,\n\t// Bytes 1dc0 - 1dff\n\t0x44, 0xD8, 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA,\n\t0xD8, 0xAE, 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44,\n\t0xD8, 0xAA, 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9,\n\t0x85, 0x44, 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAA, 0xD9, 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB,\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44,\n\t0xD8, 0xAB, 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9,\n\t// Bytes 1e00 - 1e3f\n\t0x85, 0x44, 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAB, 0xD9, 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC,\n\t0xD8, 0xAD, 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44,\n\t0xD8, 0xAC, 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9,\n\t0x8A, 0x44, 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xAD, 0xD9, 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE,\n\t// Bytes 1e40 - 1e7f\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44,\n\t0xD8, 0xAE, 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9,\n\t0x89, 0x44, 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB3, 0xD8, 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB3, 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8,\n\t// Bytes 1e80 - 1ebf\n\t0xB4, 0xD8, 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB4, 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44,\n\t// Bytes 1ec0 - 1eff\n\t0xD8, 0xB5, 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8,\n\t0xB6, 0xD8, 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1,\n\t0x44, 0xD8, 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6,\n\t0xD9, 0x89, 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44,\n\t0xD8, 0xB7, 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9,\n\t0x85, 0x44, 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8,\n\t0xB7, 0xD9, 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85,\n\t// Bytes 1f00 - 1f3f\n\t0x44, 0xD8, 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44,\n\t0xD8, 0xB9, 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8,\n\t0xBA, 0xD9, 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A,\n\t0x44, 0xD9, 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x81, 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9,\n\t// Bytes 1f40 - 1f7f\n\t0x89, 0x44, 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9,\n\t0x82, 0xD8, 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85,\n\t0x44, 0xD9, 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x83, 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x83, 0xD9, 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85,\n\t0x44, 0xD9, 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83,\n\t// Bytes 1f80 - 1fbf\n\t0xD9, 0x8A, 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x84, 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x84, 0xD9, 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87,\n\t0x44, 0xD9, 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x85, 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9,\n\t// Bytes 1fc0 - 1fff\n\t0x85, 0xD9, 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89,\n\t0x44, 0xD9, 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86,\n\t0xD8, 0xAC, 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44,\n\t0xD9, 0x86, 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8,\n\t0xB1, 0x44, 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9,\n\t0x86, 0xD9, 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86,\n\t0x44, 0xD9, 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86,\n\t0xD9, 0x89, 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44,\n\t// Bytes 2000 - 203f\n\t0xD9, 0x87, 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9,\n\t0x85, 0x44, 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9,\n\t0x87, 0xD9, 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4,\n\t0x44, 0xD9, 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x8A, 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8,\n\t0xB2, 0x44, 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9,\n\t0x8A, 0xD9, 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87,\n\t// Bytes 2040 - 207f\n\t0x44, 0xD9, 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44,\n\t0xDB, 0x87, 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84,\n\t0x80, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x86, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28,\n\t// Bytes 2080 - 20bf\n\t0xE1, 0x84, 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x8C, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x91, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29,\n\t0x45, 0x28, 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28,\n\t0xE4, 0xB8, 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8,\n\t0x89, 0x29, 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29,\n\t// Bytes 20c0 - 20ff\n\t0x45, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28,\n\t0xE4, 0xBA, 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB,\n\t0xA3, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29,\n\t0x45, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28,\n\t0xE5, 0x85, 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85,\n\t0xAD, 0x29, 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29,\n\t0x45, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28,\n\t0xE5, 0x8D, 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90,\n\t// Bytes 2100 - 213f\n\t0x8D, 0x29, 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29,\n\t0x45, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28,\n\t0xE5, 0x9C, 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD,\n\t0xA6, 0x29, 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29,\n\t0x45, 0x28, 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28,\n\t0xE6, 0x9C, 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C,\n\t0xA8, 0x29, 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29,\n\t0x45, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28,\n\t// Bytes 2140 - 217f\n\t0xE7, 0x81, 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89,\n\t0xB9, 0x29, 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29,\n\t0x45, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28,\n\t0xE7, 0xA5, 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5,\n\t0xAD, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29,\n\t0x45, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28,\n\t0xE8, 0xB2, 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3,\n\t0x87, 0x29, 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29,\n\t// Bytes 2180 - 21bf\n\t0x45, 0x30, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6,\n\t0x9C, 0x88, 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x31, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7,\n\t0x82, 0xB9, 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5,\n\t0x45, 0x31, 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6,\n\t// Bytes 21c0 - 21ff\n\t0x97, 0xA5, 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x36, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t// Bytes 2200 - 223f\n\t0x38, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x34, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x38, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39,\n\t// Bytes 2240 - 227f\n\t0x45, 0x32, 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x30, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6,\n\t// Bytes 2280 - 22bf\n\t0x97, 0xA5, 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5,\n\t0x45, 0x32, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x38, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33,\n\t0x45, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6,\n\t0x97, 0xA5, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34,\n\t0x45, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t// Bytes 22c0 - 22ff\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81,\n\t0x84, 0x35, 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36,\n\t0x45, 0x35, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37,\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88,\n\t0x95, 0x6D, 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D,\n\t0x45, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31,\n\t0xE2, 0x81, 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2,\n\t0x88, 0x95, 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88,\n\t// Bytes 2300 - 233f\n\t0x95, 0x73, 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85,\n\t0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46,\n\t0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE,\n\t// Bytes 2340 - 237f\n\t0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC,\n\t0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46,\n\t0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8,\n\t0xAA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8,\n\t// Bytes 2380 - 23bf\n\t0xAD, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89,\n\t0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAD, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC,\n\t0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8,\n\t0xAC, 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89,\n\t// Bytes 23c0 - 23ff\n\t0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8,\n\t0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3,\n\t0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8,\n\t0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE,\n\t0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t// Bytes 2400 - 243f\n\t0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5,\n\t0xD9, 0x84, 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9,\n\t0x84, 0xDB, 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46,\n\t0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8,\n\t// Bytes 2440 - 247f\n\t0xB7, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8,\n\t0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8,\n\t0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81,\n\t// Bytes 2480 - 24bf\n\t0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9,\n\t0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84,\n\t0xDB, 0x92, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85,\n\t0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x83, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84,\n\t0xD8, 0xAC, 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8,\n\t// Bytes 24c0 - 24ff\n\t0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9,\n\t0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9,\n\t0x84, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC,\n\t// Bytes 2500 - 253f\n\t0xD8, 0xAE, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9,\n\t0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9,\n\t0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85,\n\t0xD8, 0xAE, 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9,\n\t// Bytes 2540 - 257f\n\t0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46,\n\t0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9,\n\t0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A,\n\t// Bytes 2580 - 25bf\n\t0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8,\n\t0xA7, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46,\n\t// Bytes 25c0 - 25ff\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xD9, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,\n\t0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9,\n\t// Bytes 2600 - 263f\n\t0x8A, 0xD9, 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xDB, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xDB, 0x90, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB,\n\t0x95, 0x46, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2,\n\t0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46,\n\t0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0,\n\t0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD,\n\t// Bytes 2640 - 267f\n\t0x80, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82,\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7,\n\t0x46, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46,\n\t0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0,\n\t0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,\n\t0x9C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1,\n\t// Bytes 2680 - 26bf\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x46, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46,\n\t0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2,\n\t0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81,\n\t0xBB, 0xE3, 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88,\n\t0xE3, 0x82, 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3,\n\t// Bytes 26c0 - 26ff\n\t0x83, 0xAD, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82,\n\t0xB3, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88,\n\t0x46, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46,\n\t0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3,\n\t0x83, 0x9B, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83,\n\t0x9F, 0xE3, 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA,\n\t0xE3, 0x83, 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3,\n\t0x83, 0xA0, 0x46, 0xE5, 0xA4, 0xA7, 0xE6, 0xAD,\n\t// Bytes 2700 - 273f\n\t0xA3, 0x46, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90,\n\t0x46, 0xE6, 0x98, 0x8E, 0xE6, 0xB2, 0xBB, 0x46,\n\t0xE6, 0x98, 0xAD, 0xE5, 0x92, 0x8C, 0x47, 0x72,\n\t0x61, 0x64, 0xE2, 0x88, 0x95, 0x73, 0x47, 0xE3,\n\t0x80, 0x94, 0x53, 0xE3, 0x80, 0x95, 0x48, 0x28,\n\t0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x29,\n\t0x48, 0x28, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1,\n\t// Bytes 2740 - 277f\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x85, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x86, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x87,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x89, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,\n\t0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0x29,\n\t// Bytes 2780 - 27bf\n\t0x48, 0x28, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1,\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x8F, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x90, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x91,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x92, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x72, 0x61,\n\t0x64, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x48, 0xD8,\n\t0xA7, 0xD9, 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0x48,\n\t// Bytes 27c0 - 27ff\n\t0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87,\n\t0x48, 0xD8, 0xB1, 0xD8, 0xB3, 0xD9, 0x88, 0xD9,\n\t0x84, 0x48, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7,\n\t0xD9, 0x84, 0x48, 0xD8, 0xB5, 0xD9, 0x84, 0xD8,\n\t0xB9, 0xD9, 0x85, 0x48, 0xD8, 0xB9, 0xD9, 0x84,\n\t0xD9, 0x8A, 0xD9, 0x87, 0x48, 0xD9, 0x85, 0xD8,\n\t0xAD, 0xD9, 0x85, 0xD8, 0xAF, 0x48, 0xD9, 0x88,\n\t0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x49, 0xE2,\n\t// Bytes 2800 - 283f\n\t0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x49, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2,\n\t0x80, 0xB5, 0x49, 0xE2, 0x88, 0xAB, 0xE2, 0x88,\n\t0xAB, 0xE2, 0x88, 0xAB, 0x49, 0xE2, 0x88, 0xAE,\n\t0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x49, 0xE3,\n\t0x80, 0x94, 0xE4, 0xB8, 0x89, 0xE3, 0x80, 0x95,\n\t0x49, 0xE3, 0x80, 0x94, 0xE4, 0xBA, 0x8C, 0xE3,\n\t0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0x8B,\n\t// Bytes 2840 - 287f\n\t0x9D, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94,\n\t0xE5, 0xAE, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3,\n\t0x80, 0x94, 0xE6, 0x89, 0x93, 0xE3, 0x80, 0x95,\n\t0x49, 0xE3, 0x80, 0x94, 0xE6, 0x95, 0x97, 0xE3,\n\t0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x9C,\n\t0xAC, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94,\n\t0xE7, 0x82, 0xB9, 0xE3, 0x80, 0x95, 0x49, 0xE3,\n\t0x80, 0x94, 0xE7, 0x9B, 0x97, 0xE3, 0x80, 0x95,\n\t// Bytes 2880 - 28bf\n\t0x49, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xAB, 0x49, 0xE3, 0x82, 0xA4, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x81, 0x49, 0xE3, 0x82, 0xA6,\n\t0xE3, 0x82, 0xA9, 0xE3, 0x83, 0xB3, 0x49, 0xE3,\n\t0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9,\n\t0x49, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xA0, 0x49, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xAA, 0x49, 0xE3, 0x82, 0xB1,\n\t// Bytes 28c0 - 28ff\n\t0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0x49, 0xE3,\n\t0x82, 0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A,\n\t0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x83, 0x81, 0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0x49, 0xE3, 0x83, 0x86,\n\t0xE3, 0x82, 0x99, 0xE3, 0x82, 0xB7, 0x49, 0xE3,\n\t0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB,\n\t0x49, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, 0xE3,\n\t// Bytes 2900 - 293f\n\t0x83, 0x88, 0x49, 0xE3, 0x83, 0x8F, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x92,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3,\n\t0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3,\n\t0x49, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3,\n\t0x83, 0xB3, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x82, 0xBD, 0x49, 0xE3, 0x83, 0x98,\n\t0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x84, 0x49, 0xE3,\n\t// Bytes 2940 - 297f\n\t0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB,\n\t0x49, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xB3, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9E,\n\t0xE3, 0x83, 0x83, 0xE3, 0x83, 0x8F, 0x49, 0xE3,\n\t0x83, 0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF,\n\t0x49, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xAB, 0x49, 0xE3, 0x83, 0xA6, 0xE3, 0x82,\n\t// Bytes 2980 - 29bf\n\t0xA2, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83, 0xAF,\n\t0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE2,\n\t0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0xE2, 0x80, 0xB2, 0x4C, 0xE2, 0x88, 0xAB, 0xE2,\n\t0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB,\n\t0x4C, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0x95, 0xE3, 0x82, 0xA1, 0x4C, 0xE3, 0x82,\n\t0xA8, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3,\n\t// Bytes 29c0 - 29ff\n\t0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x9E, 0x4C, 0xE3, 0x82, 0xAB,\n\t0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83,\n\t0x88, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD,\n\t0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3,\n\t0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B,\n\t// Bytes 2a00 - 2a3f\n\t0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC,\n\t0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3,\n\t0x83, 0xA9, 0xE3, 0x83, 0xA0, 0x4C, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0x8D, 0x4C, 0xE3, 0x82, 0xB5, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t// Bytes 2a40 - 2a7f\n\t0xBC, 0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0x84, 0x4C, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x83, 0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x98, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF,\n\t0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3,\n\t// Bytes 2a80 - 2abf\n\t0x83, 0x8B, 0xE3, 0x83, 0x92, 0x4C, 0xE3, 0x83,\n\t0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x9B, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0x4C,\n\t0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xAD, 0x4C, 0xE3, 0x83, 0x9F,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83,\n\t0xB3, 0x4C, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC,\n\t// Bytes 2ac0 - 2aff\n\t0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x83, 0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88,\n\t0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,\n\t0x4C, 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4,\n\t0xBC, 0x9A, 0xE7, 0xA4, 0xBE, 0x4E, 0x28, 0xE1,\n\t0x84, 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92,\n\t0xE1, 0x85, 0xAE, 0x29, 0x4F, 0xD8, 0xAC, 0xD9,\n\t// Bytes 2b00 - 2b3f\n\t0x84, 0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7,\n\t0xD9, 0x84, 0xD9, 0x87, 0x4F, 0xE3, 0x82, 0xA2,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xA2,\n\t0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x82, 0xA2, 0x4F, 0xE3, 0x82, 0xAD,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83,\n\t0x83, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xB5,\n\t// Bytes 2b40 - 2b7f\n\t0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0xA0, 0x4F, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x98,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x9B,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x83, 0x9E,\n\t// Bytes 2b80 - 2bbf\n\t0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83,\n\t0xA7, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xA1,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0x88, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAB, 0x51, 0x28, 0xE1, 0x84,\n\t0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1,\n\t0x85, 0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x52, 0xE3,\n\t// Bytes 2bc0 - 2bff\n\t0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xBC, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xA9, 0xE3, 0x83, 0xA0, 0x52, 0xE3, 0x82, 0xAD,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t// Bytes 2c00 - 2c3f\n\t0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3,\n\t0x83, 0xB3, 0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x83,\n\t0xAB, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3,\n\t0x82, 0xA4, 0xE3, 0x83, 0xAD, 0x52, 0xE3, 0x83,\n\t0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88,\n\t0x52, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3,\n\t0x82, 0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88,\n\t// Bytes 2c40 - 2c7f\n\t0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x95, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7,\n\t0xE3, 0x82, 0xA7, 0xE3, 0x83, 0xAB, 0x52, 0xE3,\n\t0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAB, 0x52, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xB3, 0x61, 0xD8, 0xB5, 0xD9,\n\t// Bytes 2c80 - 2cbf\n\t0x84, 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84,\n\t0xD9, 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9,\n\t0x84, 0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88,\n\t0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x06, 0xE0,\n\t0xA7, 0x87, 0xE0, 0xA6, 0xBE, 0x01, 0x06, 0xE0,\n\t0xA7, 0x87, 0xE0, 0xA7, 0x97, 0x01, 0x06, 0xE0,\n\t0xAD, 0x87, 0xE0, 0xAC, 0xBE, 0x01, 0x06, 0xE0,\n\t0xAD, 0x87, 0xE0, 0xAD, 0x96, 0x01, 0x06, 0xE0,\n\t// Bytes 2cc0 - 2cff\n\t0xAD, 0x87, 0xE0, 0xAD, 0x97, 0x01, 0x06, 0xE0,\n\t0xAE, 0x92, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0,\n\t0xAF, 0x86, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0,\n\t0xAF, 0x86, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0,\n\t0xAF, 0x87, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0,\n\t0xB3, 0x86, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0,\n\t0xB3, 0x86, 0xE0, 0xB3, 0x96, 0x01, 0x06, 0xE0,\n\t// Bytes 2d00 - 2d3f\n\t0xB5, 0x86, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB5, 0x86, 0xE0, 0xB5, 0x97, 0x01, 0x06, 0xE0,\n\t0xB5, 0x87, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB7, 0x99, 0xE0, 0xB7, 0x9F, 0x01, 0x06, 0xE1,\n\t0x80, 0xA5, 0xE1, 0x80, 0xAE, 0x01, 0x06, 0xE1,\n\t0xAC, 0x85, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x87, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x89, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t// Bytes 2d40 - 2d7f\n\t0xAC, 0x8B, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x8D, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x91, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBA, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBC, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBE, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBF, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAD, 0x82, 0xE1, 0xAC, 0xB5, 0x01, 0x08, 0xF0,\n\t// Bytes 2d80 - 2dbf\n\t0x91, 0x84, 0xB1, 0xF0, 0x91, 0x84, 0xA7, 0x01,\n\t0x08, 0xF0, 0x91, 0x84, 0xB2, 0xF0, 0x91, 0x84,\n\t0xA7, 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0,\n\t0x91, 0x8C, 0xBE, 0x01, 0x08, 0xF0, 0x91, 0x8D,\n\t0x87, 0xF0, 0x91, 0x8D, 0x97, 0x01, 0x08, 0xF0,\n\t0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xB0, 0x01,\n\t0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92,\n\t0xBA, 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0,\n\t// Bytes 2dc0 - 2dff\n\t0x91, 0x92, 0xBD, 0x01, 0x08, 0xF0, 0x91, 0x96,\n\t0xB8, 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0,\n\t0x91, 0x96, 0xB9, 0xF0, 0x91, 0x96, 0xAF, 0x01,\n\t0x09, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0,\n\t0xB3, 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99, 0xE0,\n\t0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0x12, 0x44, 0x44,\n\t0x5A, 0xCC, 0x8C, 0xC9, 0x44, 0x44, 0x7A, 0xCC,\n\t0x8C, 0xC9, 0x44, 0x64, 0x7A, 0xCC, 0x8C, 0xC9,\n\t// Bytes 2e00 - 2e3f\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xC9,\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xC9,\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xB5,\n\t0x46, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x01,\n\t// Bytes 2e40 - 2e7f\n\t0x46, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, 0x01,\n\t0x46, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x01,\n\t// Bytes 2e80 - 2ebf\n\t0x46, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x01,\n\t0x49, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3,\n\t0x82, 0x99, 0x0D, 0x4C, 0xE1, 0x84, 0x8C, 0xE1,\n\t0x85, 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4,\n\t0x01, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D, 0x4C,\n\t0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t// Bytes 2ec0 - 2eff\n\t0x9B, 0xE3, 0x82, 0x9A, 0x0D, 0x4C, 0xE3, 0x83,\n\t0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3,\n\t0x82, 0x99, 0x0D, 0x4F, 0xE1, 0x84, 0x8E, 0xE1,\n\t0x85, 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80,\n\t0xE1, 0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3, 0x82,\n\t0xB7, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3,\n\t// Bytes 2f00 - 2f3f\n\t0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3,\n\t0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D, 0x4F,\n\t0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x52, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,\n\t0xE3, 0x82, 0x99, 0x0D, 0x52, 0xE3, 0x83, 0x95,\n\t// Bytes 2f40 - 2f7f\n\t0xE3, 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83,\n\t0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x86, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x01,\n\t0x86, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0x01,\n\t0x03, 0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, 0xCC,\n\t0xB8, 0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, 0x03,\n\t0x41, 0xCC, 0x80, 0xC9, 0x03, 0x41, 0xCC, 0x81,\n\t0xC9, 0x03, 0x41, 0xCC, 0x83, 0xC9, 0x03, 0x41,\n\t// Bytes 2f80 - 2fbf\n\t0xCC, 0x84, 0xC9, 0x03, 0x41, 0xCC, 0x89, 0xC9,\n\t0x03, 0x41, 0xCC, 0x8C, 0xC9, 0x03, 0x41, 0xCC,\n\t0x8F, 0xC9, 0x03, 0x41, 0xCC, 0x91, 0xC9, 0x03,\n\t0x41, 0xCC, 0xA5, 0xB5, 0x03, 0x41, 0xCC, 0xA8,\n\t0xA5, 0x03, 0x42, 0xCC, 0x87, 0xC9, 0x03, 0x42,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x42, 0xCC, 0xB1, 0xB5,\n\t0x03, 0x43, 0xCC, 0x81, 0xC9, 0x03, 0x43, 0xCC,\n\t0x82, 0xC9, 0x03, 0x43, 0xCC, 0x87, 0xC9, 0x03,\n\t// Bytes 2fc0 - 2fff\n\t0x43, 0xCC, 0x8C, 0xC9, 0x03, 0x44, 0xCC, 0x87,\n\t0xC9, 0x03, 0x44, 0xCC, 0x8C, 0xC9, 0x03, 0x44,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x44, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x44, 0xCC, 0xAD, 0xB5, 0x03, 0x44, 0xCC,\n\t0xB1, 0xB5, 0x03, 0x45, 0xCC, 0x80, 0xC9, 0x03,\n\t0x45, 0xCC, 0x81, 0xC9, 0x03, 0x45, 0xCC, 0x83,\n\t0xC9, 0x03, 0x45, 0xCC, 0x86, 0xC9, 0x03, 0x45,\n\t0xCC, 0x87, 0xC9, 0x03, 0x45, 0xCC, 0x88, 0xC9,\n\t// Bytes 3000 - 303f\n\t0x03, 0x45, 0xCC, 0x89, 0xC9, 0x03, 0x45, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x45, 0xCC, 0x8F, 0xC9, 0x03,\n\t0x45, 0xCC, 0x91, 0xC9, 0x03, 0x45, 0xCC, 0xA8,\n\t0xA5, 0x03, 0x45, 0xCC, 0xAD, 0xB5, 0x03, 0x45,\n\t0xCC, 0xB0, 0xB5, 0x03, 0x46, 0xCC, 0x87, 0xC9,\n\t0x03, 0x47, 0xCC, 0x81, 0xC9, 0x03, 0x47, 0xCC,\n\t0x82, 0xC9, 0x03, 0x47, 0xCC, 0x84, 0xC9, 0x03,\n\t0x47, 0xCC, 0x86, 0xC9, 0x03, 0x47, 0xCC, 0x87,\n\t// Bytes 3040 - 307f\n\t0xC9, 0x03, 0x47, 0xCC, 0x8C, 0xC9, 0x03, 0x47,\n\t0xCC, 0xA7, 0xA5, 0x03, 0x48, 0xCC, 0x82, 0xC9,\n\t0x03, 0x48, 0xCC, 0x87, 0xC9, 0x03, 0x48, 0xCC,\n\t0x88, 0xC9, 0x03, 0x48, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x48, 0xCC, 0xA3, 0xB5, 0x03, 0x48, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x48, 0xCC, 0xAE, 0xB5, 0x03, 0x49,\n\t0xCC, 0x80, 0xC9, 0x03, 0x49, 0xCC, 0x81, 0xC9,\n\t0x03, 0x49, 0xCC, 0x82, 0xC9, 0x03, 0x49, 0xCC,\n\t// Bytes 3080 - 30bf\n\t0x83, 0xC9, 0x03, 0x49, 0xCC, 0x84, 0xC9, 0x03,\n\t0x49, 0xCC, 0x86, 0xC9, 0x03, 0x49, 0xCC, 0x87,\n\t0xC9, 0x03, 0x49, 0xCC, 0x89, 0xC9, 0x03, 0x49,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x49, 0xCC, 0x8F, 0xC9,\n\t0x03, 0x49, 0xCC, 0x91, 0xC9, 0x03, 0x49, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x49, 0xCC, 0xA8, 0xA5, 0x03,\n\t0x49, 0xCC, 0xB0, 0xB5, 0x03, 0x4A, 0xCC, 0x82,\n\t0xC9, 0x03, 0x4B, 0xCC, 0x81, 0xC9, 0x03, 0x4B,\n\t// Bytes 30c0 - 30ff\n\t0xCC, 0x8C, 0xC9, 0x03, 0x4B, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x4B, 0xCC, 0xA7, 0xA5, 0x03, 0x4B, 0xCC,\n\t0xB1, 0xB5, 0x03, 0x4C, 0xCC, 0x81, 0xC9, 0x03,\n\t0x4C, 0xCC, 0x8C, 0xC9, 0x03, 0x4C, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x4C, 0xCC, 0xAD, 0xB5, 0x03, 0x4C,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x4D, 0xCC, 0x81, 0xC9,\n\t0x03, 0x4D, 0xCC, 0x87, 0xC9, 0x03, 0x4D, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x4E, 0xCC, 0x80, 0xC9, 0x03,\n\t// Bytes 3100 - 313f\n\t0x4E, 0xCC, 0x81, 0xC9, 0x03, 0x4E, 0xCC, 0x83,\n\t0xC9, 0x03, 0x4E, 0xCC, 0x87, 0xC9, 0x03, 0x4E,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x4E, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x4E, 0xCC, 0xA7, 0xA5, 0x03, 0x4E, 0xCC,\n\t0xAD, 0xB5, 0x03, 0x4E, 0xCC, 0xB1, 0xB5, 0x03,\n\t0x4F, 0xCC, 0x80, 0xC9, 0x03, 0x4F, 0xCC, 0x81,\n\t0xC9, 0x03, 0x4F, 0xCC, 0x86, 0xC9, 0x03, 0x4F,\n\t0xCC, 0x89, 0xC9, 0x03, 0x4F, 0xCC, 0x8B, 0xC9,\n\t// Bytes 3140 - 317f\n\t0x03, 0x4F, 0xCC, 0x8C, 0xC9, 0x03, 0x4F, 0xCC,\n\t0x8F, 0xC9, 0x03, 0x4F, 0xCC, 0x91, 0xC9, 0x03,\n\t0x50, 0xCC, 0x81, 0xC9, 0x03, 0x50, 0xCC, 0x87,\n\t0xC9, 0x03, 0x52, 0xCC, 0x81, 0xC9, 0x03, 0x52,\n\t0xCC, 0x87, 0xC9, 0x03, 0x52, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x52, 0xCC, 0x8F, 0xC9, 0x03, 0x52, 0xCC,\n\t0x91, 0xC9, 0x03, 0x52, 0xCC, 0xA7, 0xA5, 0x03,\n\t0x52, 0xCC, 0xB1, 0xB5, 0x03, 0x53, 0xCC, 0x82,\n\t// Bytes 3180 - 31bf\n\t0xC9, 0x03, 0x53, 0xCC, 0x87, 0xC9, 0x03, 0x53,\n\t0xCC, 0xA6, 0xB5, 0x03, 0x53, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x54, 0xCC, 0x87, 0xC9, 0x03, 0x54, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x54, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x54, 0xCC, 0xA6, 0xB5, 0x03, 0x54, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x54, 0xCC, 0xAD, 0xB5, 0x03, 0x54,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x55, 0xCC, 0x80, 0xC9,\n\t0x03, 0x55, 0xCC, 0x81, 0xC9, 0x03, 0x55, 0xCC,\n\t// Bytes 31c0 - 31ff\n\t0x82, 0xC9, 0x03, 0x55, 0xCC, 0x86, 0xC9, 0x03,\n\t0x55, 0xCC, 0x89, 0xC9, 0x03, 0x55, 0xCC, 0x8A,\n\t0xC9, 0x03, 0x55, 0xCC, 0x8B, 0xC9, 0x03, 0x55,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x55, 0xCC, 0x8F, 0xC9,\n\t0x03, 0x55, 0xCC, 0x91, 0xC9, 0x03, 0x55, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x55, 0xCC, 0xA4, 0xB5, 0x03,\n\t0x55, 0xCC, 0xA8, 0xA5, 0x03, 0x55, 0xCC, 0xAD,\n\t0xB5, 0x03, 0x55, 0xCC, 0xB0, 0xB5, 0x03, 0x56,\n\t// Bytes 3200 - 323f\n\t0xCC, 0x83, 0xC9, 0x03, 0x56, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x57, 0xCC, 0x80, 0xC9, 0x03, 0x57, 0xCC,\n\t0x81, 0xC9, 0x03, 0x57, 0xCC, 0x82, 0xC9, 0x03,\n\t0x57, 0xCC, 0x87, 0xC9, 0x03, 0x57, 0xCC, 0x88,\n\t0xC9, 0x03, 0x57, 0xCC, 0xA3, 0xB5, 0x03, 0x58,\n\t0xCC, 0x87, 0xC9, 0x03, 0x58, 0xCC, 0x88, 0xC9,\n\t0x03, 0x59, 0xCC, 0x80, 0xC9, 0x03, 0x59, 0xCC,\n\t0x81, 0xC9, 0x03, 0x59, 0xCC, 0x82, 0xC9, 0x03,\n\t// Bytes 3240 - 327f\n\t0x59, 0xCC, 0x83, 0xC9, 0x03, 0x59, 0xCC, 0x84,\n\t0xC9, 0x03, 0x59, 0xCC, 0x87, 0xC9, 0x03, 0x59,\n\t0xCC, 0x88, 0xC9, 0x03, 0x59, 0xCC, 0x89, 0xC9,\n\t0x03, 0x59, 0xCC, 0xA3, 0xB5, 0x03, 0x5A, 0xCC,\n\t0x81, 0xC9, 0x03, 0x5A, 0xCC, 0x82, 0xC9, 0x03,\n\t0x5A, 0xCC, 0x87, 0xC9, 0x03, 0x5A, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x5A, 0xCC, 0xA3, 0xB5, 0x03, 0x5A,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x61, 0xCC, 0x80, 0xC9,\n\t// Bytes 3280 - 32bf\n\t0x03, 0x61, 0xCC, 0x81, 0xC9, 0x03, 0x61, 0xCC,\n\t0x83, 0xC9, 0x03, 0x61, 0xCC, 0x84, 0xC9, 0x03,\n\t0x61, 0xCC, 0x89, 0xC9, 0x03, 0x61, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x61, 0xCC, 0x8F, 0xC9, 0x03, 0x61,\n\t0xCC, 0x91, 0xC9, 0x03, 0x61, 0xCC, 0xA5, 0xB5,\n\t0x03, 0x61, 0xCC, 0xA8, 0xA5, 0x03, 0x62, 0xCC,\n\t0x87, 0xC9, 0x03, 0x62, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x62, 0xCC, 0xB1, 0xB5, 0x03, 0x63, 0xCC, 0x81,\n\t// Bytes 32c0 - 32ff\n\t0xC9, 0x03, 0x63, 0xCC, 0x82, 0xC9, 0x03, 0x63,\n\t0xCC, 0x87, 0xC9, 0x03, 0x63, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x64, 0xCC, 0x87, 0xC9, 0x03, 0x64, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x64, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x64, 0xCC, 0xA7, 0xA5, 0x03, 0x64, 0xCC, 0xAD,\n\t0xB5, 0x03, 0x64, 0xCC, 0xB1, 0xB5, 0x03, 0x65,\n\t0xCC, 0x80, 0xC9, 0x03, 0x65, 0xCC, 0x81, 0xC9,\n\t0x03, 0x65, 0xCC, 0x83, 0xC9, 0x03, 0x65, 0xCC,\n\t// Bytes 3300 - 333f\n\t0x86, 0xC9, 0x03, 0x65, 0xCC, 0x87, 0xC9, 0x03,\n\t0x65, 0xCC, 0x88, 0xC9, 0x03, 0x65, 0xCC, 0x89,\n\t0xC9, 0x03, 0x65, 0xCC, 0x8C, 0xC9, 0x03, 0x65,\n\t0xCC, 0x8F, 0xC9, 0x03, 0x65, 0xCC, 0x91, 0xC9,\n\t0x03, 0x65, 0xCC, 0xA8, 0xA5, 0x03, 0x65, 0xCC,\n\t0xAD, 0xB5, 0x03, 0x65, 0xCC, 0xB0, 0xB5, 0x03,\n\t0x66, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC, 0x81,\n\t0xC9, 0x03, 0x67, 0xCC, 0x82, 0xC9, 0x03, 0x67,\n\t// Bytes 3340 - 337f\n\t0xCC, 0x84, 0xC9, 0x03, 0x67, 0xCC, 0x86, 0xC9,\n\t0x03, 0x67, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x67, 0xCC, 0xA7, 0xA5, 0x03,\n\t0x68, 0xCC, 0x82, 0xC9, 0x03, 0x68, 0xCC, 0x87,\n\t0xC9, 0x03, 0x68, 0xCC, 0x88, 0xC9, 0x03, 0x68,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x68, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x68, 0xCC, 0xA7, 0xA5, 0x03, 0x68, 0xCC,\n\t0xAE, 0xB5, 0x03, 0x68, 0xCC, 0xB1, 0xB5, 0x03,\n\t// Bytes 3380 - 33bf\n\t0x69, 0xCC, 0x80, 0xC9, 0x03, 0x69, 0xCC, 0x81,\n\t0xC9, 0x03, 0x69, 0xCC, 0x82, 0xC9, 0x03, 0x69,\n\t0xCC, 0x83, 0xC9, 0x03, 0x69, 0xCC, 0x84, 0xC9,\n\t0x03, 0x69, 0xCC, 0x86, 0xC9, 0x03, 0x69, 0xCC,\n\t0x89, 0xC9, 0x03, 0x69, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x69, 0xCC, 0x8F, 0xC9, 0x03, 0x69, 0xCC, 0x91,\n\t0xC9, 0x03, 0x69, 0xCC, 0xA3, 0xB5, 0x03, 0x69,\n\t0xCC, 0xA8, 0xA5, 0x03, 0x69, 0xCC, 0xB0, 0xB5,\n\t// Bytes 33c0 - 33ff\n\t0x03, 0x6A, 0xCC, 0x82, 0xC9, 0x03, 0x6A, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0x81, 0xC9, 0x03,\n\t0x6B, 0xCC, 0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x6B, 0xCC, 0xA7, 0xA5, 0x03, 0x6B,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x6C, 0xCC, 0x81, 0xC9,\n\t0x03, 0x6C, 0xCC, 0x8C, 0xC9, 0x03, 0x6C, 0xCC,\n\t0xA7, 0xA5, 0x03, 0x6C, 0xCC, 0xAD, 0xB5, 0x03,\n\t0x6C, 0xCC, 0xB1, 0xB5, 0x03, 0x6D, 0xCC, 0x81,\n\t// Bytes 3400 - 343f\n\t0xC9, 0x03, 0x6D, 0xCC, 0x87, 0xC9, 0x03, 0x6D,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x6E, 0xCC, 0x80, 0xC9,\n\t0x03, 0x6E, 0xCC, 0x81, 0xC9, 0x03, 0x6E, 0xCC,\n\t0x83, 0xC9, 0x03, 0x6E, 0xCC, 0x87, 0xC9, 0x03,\n\t0x6E, 0xCC, 0x8C, 0xC9, 0x03, 0x6E, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x6E, 0xCC, 0xA7, 0xA5, 0x03, 0x6E,\n\t0xCC, 0xAD, 0xB5, 0x03, 0x6E, 0xCC, 0xB1, 0xB5,\n\t0x03, 0x6F, 0xCC, 0x80, 0xC9, 0x03, 0x6F, 0xCC,\n\t// Bytes 3440 - 347f\n\t0x81, 0xC9, 0x03, 0x6F, 0xCC, 0x86, 0xC9, 0x03,\n\t0x6F, 0xCC, 0x89, 0xC9, 0x03, 0x6F, 0xCC, 0x8B,\n\t0xC9, 0x03, 0x6F, 0xCC, 0x8C, 0xC9, 0x03, 0x6F,\n\t0xCC, 0x8F, 0xC9, 0x03, 0x6F, 0xCC, 0x91, 0xC9,\n\t0x03, 0x70, 0xCC, 0x81, 0xC9, 0x03, 0x70, 0xCC,\n\t0x87, 0xC9, 0x03, 0x72, 0xCC, 0x81, 0xC9, 0x03,\n\t0x72, 0xCC, 0x87, 0xC9, 0x03, 0x72, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x72, 0xCC, 0x8F, 0xC9, 0x03, 0x72,\n\t// Bytes 3480 - 34bf\n\t0xCC, 0x91, 0xC9, 0x03, 0x72, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x72, 0xCC, 0xB1, 0xB5, 0x03, 0x73, 0xCC,\n\t0x82, 0xC9, 0x03, 0x73, 0xCC, 0x87, 0xC9, 0x03,\n\t0x73, 0xCC, 0xA6, 0xB5, 0x03, 0x73, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x74, 0xCC, 0x87, 0xC9, 0x03, 0x74,\n\t0xCC, 0x88, 0xC9, 0x03, 0x74, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x74, 0xCC, 0xA3, 0xB5, 0x03, 0x74, 0xCC,\n\t0xA6, 0xB5, 0x03, 0x74, 0xCC, 0xA7, 0xA5, 0x03,\n\t// Bytes 34c0 - 34ff\n\t0x74, 0xCC, 0xAD, 0xB5, 0x03, 0x74, 0xCC, 0xB1,\n\t0xB5, 0x03, 0x75, 0xCC, 0x80, 0xC9, 0x03, 0x75,\n\t0xCC, 0x81, 0xC9, 0x03, 0x75, 0xCC, 0x82, 0xC9,\n\t0x03, 0x75, 0xCC, 0x86, 0xC9, 0x03, 0x75, 0xCC,\n\t0x89, 0xC9, 0x03, 0x75, 0xCC, 0x8A, 0xC9, 0x03,\n\t0x75, 0xCC, 0x8B, 0xC9, 0x03, 0x75, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x75, 0xCC, 0x8F, 0xC9, 0x03, 0x75,\n\t0xCC, 0x91, 0xC9, 0x03, 0x75, 0xCC, 0xA3, 0xB5,\n\t// Bytes 3500 - 353f\n\t0x03, 0x75, 0xCC, 0xA4, 0xB5, 0x03, 0x75, 0xCC,\n\t0xA8, 0xA5, 0x03, 0x75, 0xCC, 0xAD, 0xB5, 0x03,\n\t0x75, 0xCC, 0xB0, 0xB5, 0x03, 0x76, 0xCC, 0x83,\n\t0xC9, 0x03, 0x76, 0xCC, 0xA3, 0xB5, 0x03, 0x77,\n\t0xCC, 0x80, 0xC9, 0x03, 0x77, 0xCC, 0x81, 0xC9,\n\t0x03, 0x77, 0xCC, 0x82, 0xC9, 0x03, 0x77, 0xCC,\n\t0x87, 0xC9, 0x03, 0x77, 0xCC, 0x88, 0xC9, 0x03,\n\t0x77, 0xCC, 0x8A, 0xC9, 0x03, 0x77, 0xCC, 0xA3,\n\t// Bytes 3540 - 357f\n\t0xB5, 0x03, 0x78, 0xCC, 0x87, 0xC9, 0x03, 0x78,\n\t0xCC, 0x88, 0xC9, 0x03, 0x79, 0xCC, 0x80, 0xC9,\n\t0x03, 0x79, 0xCC, 0x81, 0xC9, 0x03, 0x79, 0xCC,\n\t0x82, 0xC9, 0x03, 0x79, 0xCC, 0x83, 0xC9, 0x03,\n\t0x79, 0xCC, 0x84, 0xC9, 0x03, 0x79, 0xCC, 0x87,\n\t0xC9, 0x03, 0x79, 0xCC, 0x88, 0xC9, 0x03, 0x79,\n\t0xCC, 0x89, 0xC9, 0x03, 0x79, 0xCC, 0x8A, 0xC9,\n\t0x03, 0x79, 0xCC, 0xA3, 0xB5, 0x03, 0x7A, 0xCC,\n\t// Bytes 3580 - 35bf\n\t0x81, 0xC9, 0x03, 0x7A, 0xCC, 0x82, 0xC9, 0x03,\n\t0x7A, 0xCC, 0x87, 0xC9, 0x03, 0x7A, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x7A, 0xCC, 0xA3, 0xB5, 0x03, 0x7A,\n\t0xCC, 0xB1, 0xB5, 0x04, 0xC2, 0xA8, 0xCC, 0x80,\n\t0xCA, 0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x04,\n\t0xC2, 0xA8, 0xCD, 0x82, 0xCA, 0x04, 0xC3, 0x86,\n\t0xCC, 0x81, 0xC9, 0x04, 0xC3, 0x86, 0xCC, 0x84,\n\t0xC9, 0x04, 0xC3, 0x98, 0xCC, 0x81, 0xC9, 0x04,\n\t// Bytes 35c0 - 35ff\n\t0xC3, 0xA6, 0xCC, 0x81, 0xC9, 0x04, 0xC3, 0xA6,\n\t0xCC, 0x84, 0xC9, 0x04, 0xC3, 0xB8, 0xCC, 0x81,\n\t0xC9, 0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xC9, 0x04,\n\t0xC6, 0xB7, 0xCC, 0x8C, 0xC9, 0x04, 0xCA, 0x92,\n\t0xCC, 0x8C, 0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x80,\n\t0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x81, 0xC9, 0x04,\n\t0xCE, 0x91, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0x91,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0x91, 0xCD, 0x85,\n\t// Bytes 3600 - 363f\n\t0xD9, 0x04, 0xCE, 0x95, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0x95, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x97,\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x97, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0x97, 0xCD, 0x85, 0xD9, 0x04,\n\t0xCE, 0x99, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x99,\n\t0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x84,\n\t0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x86, 0xC9, 0x04,\n\t0xCE, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0x9F,\n\t// Bytes 3640 - 367f\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x9F, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xC9, 0x04,\n\t0xCE, 0xA5, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA5,\n\t0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x84,\n\t0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xC9, 0x04,\n\t0xCE, 0xA5, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0xA9,\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA9, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xD9, 0x04,\n\t// Bytes 3680 - 36bf\n\t0xCE, 0xB1, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB1,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB1, 0xCD, 0x85,\n\t0xD9, 0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0xB5, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xB7,\n\t0xCD, 0x85, 0xD9, 0x04, 0xCE, 0xB9, 0xCC, 0x80,\n\t0xC9, 0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x04,\n\t0xCE, 0xB9, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB9,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB9, 0xCD, 0x82,\n\t// Bytes 36c0 - 36ff\n\t0xC9, 0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0xBF, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x81,\n\t0xCC, 0x93, 0xC9, 0x04, 0xCF, 0x81, 0xCC, 0x94,\n\t0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCF, 0x85, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x85,\n\t0xCC, 0x84, 0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x86,\n\t0xC9, 0x04, 0xCF, 0x85, 0xCD, 0x82, 0xC9, 0x04,\n\t0xCF, 0x89, 0xCD, 0x85, 0xD9, 0x04, 0xCF, 0x92,\n\t// Bytes 3700 - 373f\n\t0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x92, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0x86, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0x90, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x90,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x93, 0xCC, 0x81,\n\t0xC9, 0x04, 0xD0, 0x95, 0xCC, 0x80, 0xC9, 0x04,\n\t0xD0, 0x95, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x95,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x88, 0xC9, 0x04,\n\t// Bytes 3740 - 377f\n\t0xD0, 0x97, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x98,\n\t0xCC, 0x80, 0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x84,\n\t0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x86, 0xC9, 0x04,\n\t0xD0, 0x98, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x9A,\n\t0xCC, 0x81, 0xC9, 0x04, 0xD0, 0x9E, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xC9, 0x04,\n\t0xD0, 0xA3, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xA3,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x8B,\n\t// Bytes 3780 - 37bf\n\t0xC9, 0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xAB, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xAD,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xB3, 0xCC, 0x81, 0xC9, 0x04, 0xD0, 0xB5,\n\t0xCC, 0x80, 0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xB6, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB6,\n\t// Bytes 37c0 - 37ff\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB7, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xC9, 0x04,\n\t0xD0, 0xB8, 0xCC, 0x84, 0xC9, 0x04, 0xD0, 0xB8,\n\t0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xC9, 0x04,\n\t0xD0, 0xBE, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x83,\n\t0xCC, 0x84, 0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x88, 0xC9, 0x04,\n\t// Bytes 3800 - 383f\n\t0xD1, 0x83, 0xCC, 0x8B, 0xC9, 0x04, 0xD1, 0x87,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x8B, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD1, 0x96, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0xB4,\n\t0xCC, 0x8F, 0xC9, 0x04, 0xD1, 0xB5, 0xCC, 0x8F,\n\t0xC9, 0x04, 0xD3, 0x98, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD3, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA8,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA9, 0xCC, 0x88,\n\t// Bytes 3840 - 387f\n\t0xC9, 0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xC9, 0x04,\n\t0xD8, 0xA7, 0xD9, 0x94, 0xC9, 0x04, 0xD8, 0xA7,\n\t0xD9, 0x95, 0xB5, 0x04, 0xD9, 0x88, 0xD9, 0x94,\n\t0xC9, 0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xC9, 0x04,\n\t0xDB, 0x81, 0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x92,\n\t0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x95, 0xD9, 0x94,\n\t0xC9, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xCA,\n\t0x05, 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05,\n\t// Bytes 3880 - 38bf\n\t0x41, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x41,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x41, 0xCC,\n\t0x86, 0xCC, 0x80, 0xCA, 0x05, 0x41, 0xCC, 0x86,\n\t0xCC, 0x81, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC,\n\t0x83, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x89,\n\t0xCA, 0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xCA,\n\t0x05, 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05,\n\t0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x41,\n\t// Bytes 38c0 - 38ff\n\t0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x41, 0xCC,\n\t0xA3, 0xCC, 0x86, 0xCA, 0x05, 0x43, 0xCC, 0xA7,\n\t0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC,\n\t0x80, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x81,\n\t0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xCA,\n\t0x05, 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05,\n\t0x45, 0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x45,\n\t0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC,\n\t// Bytes 3900 - 393f\n\t0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x45, 0xCC, 0xA7,\n\t0xCC, 0x86, 0xCA, 0x05, 0x49, 0xCC, 0x88, 0xCC,\n\t0x81, 0xCA, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, 0x84,\n\t0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xCA,\n\t0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05,\n\t0x4F, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x4F,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x4F, 0xCC,\n\t0x83, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x83,\n\t// Bytes 3940 - 397f\n\t0xCC, 0x84, 0xCA, 0x05, 0x4F, 0xCC, 0x83, 0xCC,\n\t0x88, 0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x80,\n\t0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xCA,\n\t0x05, 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05,\n\t0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x4F,\n\t0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x4F, 0xCC,\n\t0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x9B,\n\t0xCC, 0x83, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC,\n\t// Bytes 3980 - 39bf\n\t0x89, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3,\n\t0xB6, 0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA,\n\t0x05, 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05,\n\t0x52, 0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x53,\n\t0xCC, 0x81, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC,\n\t0x8C, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC, 0xA3,\n\t0xCC, 0x87, 0xCA, 0x05, 0x55, 0xCC, 0x83, 0xCC,\n\t0x81, 0xCA, 0x05, 0x55, 0xCC, 0x84, 0xCC, 0x88,\n\t// Bytes 39c0 - 39ff\n\t0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x05, 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05,\n\t0x55, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x55,\n\t0xCC, 0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x55, 0xCC,\n\t0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x55, 0xCC, 0x9B,\n\t0xCC, 0x81, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC,\n\t0x83, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6,\n\t// Bytes 3a00 - 3a3f\n\t0x05, 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05,\n\t0x61, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x61,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x61, 0xCC,\n\t0x82, 0xCC, 0x89, 0xCA, 0x05, 0x61, 0xCC, 0x86,\n\t0xCC, 0x80, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC,\n\t0x81, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x83,\n\t0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xCA,\n\t0x05, 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05,\n\t// Bytes 3a40 - 3a7f\n\t0x61, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x61,\n\t0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x61, 0xCC,\n\t0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x61, 0xCC, 0xA3,\n\t0xCC, 0x86, 0xCA, 0x05, 0x63, 0xCC, 0xA7, 0xCC,\n\t0x81, 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x80,\n\t0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xCA,\n\t0x05, 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05,\n\t0x65, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x65,\n\t// Bytes 3a80 - 3abf\n\t0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x65, 0xCC,\n\t0x84, 0xCC, 0x81, 0xCA, 0x05, 0x65, 0xCC, 0xA3,\n\t0xCC, 0x82, 0xCA, 0x05, 0x65, 0xCC, 0xA7, 0xCC,\n\t0x86, 0xCA, 0x05, 0x69, 0xCC, 0x88, 0xCC, 0x81,\n\t0xCA, 0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xCA,\n\t0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05,\n\t0x6F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x6F,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x6F, 0xCC,\n\t// Bytes 3ac0 - 3aff\n\t0x82, 0xCC, 0x89, 0xCA, 0x05, 0x6F, 0xCC, 0x83,\n\t0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC,\n\t0x84, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x88,\n\t0xCA, 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xCA,\n\t0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05,\n\t0x6F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05, 0x6F,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x6F, 0xCC,\n\t0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x6F, 0xCC, 0x9B,\n\t// Bytes 3b00 - 3b3f\n\t0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC,\n\t0x83, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6,\n\t0x05, 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05,\n\t0x6F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05, 0x72,\n\t0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x73, 0xCC,\n\t0x81, 0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0x8C,\n\t0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0xA3, 0xCC,\n\t// Bytes 3b40 - 3b7f\n\t0x87, 0xCA, 0x05, 0x75, 0xCC, 0x83, 0xCC, 0x81,\n\t0xCA, 0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xCA,\n\t0x05, 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCA, 0x05,\n\t0x75, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05, 0x75,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x75, 0xCC,\n\t0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x75, 0xCC, 0x9B,\n\t0xCC, 0x80, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC,\n\t0x81, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x83,\n\t// Bytes 3b80 - 3bbf\n\t0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xCA,\n\t0x05, 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6, 0x05,\n\t0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0xCA, 0x05, 0xE1,\n\t0xBE, 0xBF, 0xCC, 0x81, 0xCA, 0x05, 0xE1, 0xBE,\n\t0xBF, 0xCD, 0x82, 0xCA, 0x05, 0xE1, 0xBF, 0xBE,\n\t0xCC, 0x80, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCC,\n\t0x81, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, 0x82,\n\t0xCA, 0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0x05,\n\t// Bytes 3bc0 - 3bff\n\t0x05, 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x87, 0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87,\n\t0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x94,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, 0x05,\n\t// Bytes 3c00 - 3c3f\n\t0xE2, 0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x88, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x85,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t// Bytes 3c40 - 3c7f\n\t0x89, 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0xB3, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB6,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t// Bytes 3c80 - 3cbf\n\t0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x86,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0xAB, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB2,\n\t// Bytes 3cc0 - 3cff\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0x05,\n\t0x06, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t// Bytes 3d00 - 3d3f\n\t0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t// Bytes 3d40 - 3d7f\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t// Bytes 3d80 - 3dbf\n\t0x06, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t// Bytes 3dc0 - 3dff\n\t0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t// Bytes 3e00 - 3e3f\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t// Bytes 3e40 - 3e7f\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xCA,\n\t// Bytes 3e80 - 3ebf\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t// Bytes 3ec0 - 3eff\n\t0x06, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t0x06, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0x85,\n\t0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0x11,\n\t// Bytes 3f00 - 3f3f\n\t0x06, 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 3f40 - 3f7f\n\t0x06, 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 3f80 - 3fbf\n\t0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0x0D,\n\t// Bytes 3fc0 - 3fff\n\t0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4000 - 403f\n\t0x06, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4040 - 407f\n\t0x06, 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4080 - 40bf\n\t0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 40c0 - 40ff\n\t0x06, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t// Bytes 4100 - 413f\n\t0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCD,\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC,\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t// Bytes 4140 - 417f\n\t0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCD,\n\t// Bytes 4180 - 41bf\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC,\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t// Bytes 41c0 - 41ff\n\t0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCD,\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC,\n\t// Bytes 4200 - 423f\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t0x08, 0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, 0x82,\n\t// Bytes 4240 - 427f\n\t0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82, 0x9B, 0xF0,\n\t0x91, 0x82, 0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82,\n\t0xA5, 0xF0, 0x91, 0x82, 0xBA, 0x09, 0x42, 0xC2,\n\t0xB4, 0x01, 0x43, 0x20, 0xCC, 0x81, 0xC9, 0x43,\n\t0x20, 0xCC, 0x83, 0xC9, 0x43, 0x20, 0xCC, 0x84,\n\t0xC9, 0x43, 0x20, 0xCC, 0x85, 0xC9, 0x43, 0x20,\n\t0xCC, 0x86, 0xC9, 0x43, 0x20, 0xCC, 0x87, 0xC9,\n\t0x43, 0x20, 0xCC, 0x88, 0xC9, 0x43, 0x20, 0xCC,\n\t// Bytes 4280 - 42bf\n\t0x8A, 0xC9, 0x43, 0x20, 0xCC, 0x8B, 0xC9, 0x43,\n\t0x20, 0xCC, 0x93, 0xC9, 0x43, 0x20, 0xCC, 0x94,\n\t0xC9, 0x43, 0x20, 0xCC, 0xA7, 0xA5, 0x43, 0x20,\n\t0xCC, 0xA8, 0xA5, 0x43, 0x20, 0xCC, 0xB3, 0xB5,\n\t0x43, 0x20, 0xCD, 0x82, 0xC9, 0x43, 0x20, 0xCD,\n\t0x85, 0xD9, 0x43, 0x20, 0xD9, 0x8B, 0x59, 0x43,\n\t0x20, 0xD9, 0x8C, 0x5D, 0x43, 0x20, 0xD9, 0x8D,\n\t0x61, 0x43, 0x20, 0xD9, 0x8E, 0x65, 0x43, 0x20,\n\t// Bytes 42c0 - 42ff\n\t0xD9, 0x8F, 0x69, 0x43, 0x20, 0xD9, 0x90, 0x6D,\n\t0x43, 0x20, 0xD9, 0x91, 0x71, 0x43, 0x20, 0xD9,\n\t0x92, 0x75, 0x43, 0x41, 0xCC, 0x8A, 0xC9, 0x43,\n\t0x73, 0xCC, 0x87, 0xC9, 0x44, 0x20, 0xE3, 0x82,\n\t0x99, 0x0D, 0x44, 0x20, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x44, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x44, 0xCE,\n\t0x91, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0x95, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0x97, 0xCC, 0x81, 0xC9,\n\t// Bytes 4300 - 433f\n\t0x44, 0xCE, 0x99, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0x9F, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC, 0x88, 0xC9,\n\t0x44, 0xCE, 0xA9, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0xB1, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xB5, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xC9,\n\t0x44, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0xBF, 0xCC, 0x81, 0xC9, 0x44, 0xCF, 0x85, 0xCC,\n\t// Bytes 4340 - 437f\n\t0x81, 0xC9, 0x44, 0xCF, 0x89, 0xCC, 0x81, 0xC9,\n\t0x44, 0xD7, 0x90, 0xD6, 0xB7, 0x31, 0x44, 0xD7,\n\t0x90, 0xD6, 0xB8, 0x35, 0x44, 0xD7, 0x90, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x91, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x91, 0xD6, 0xBF, 0x49, 0x44, 0xD7,\n\t0x92, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x93, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x95, 0xD6, 0xB9, 0x39, 0x44, 0xD7,\n\t// Bytes 4380 - 43bf\n\t0x95, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x96, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x98, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x99, 0xD6, 0xB4, 0x25, 0x44, 0xD7,\n\t0x99, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9A, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x9B, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x9B, 0xD6, 0xBF, 0x49, 0x44, 0xD7,\n\t0x9C, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9E, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x41,\n\t// Bytes 43c0 - 43ff\n\t0x44, 0xD7, 0xA1, 0xD6, 0xBC, 0x41, 0x44, 0xD7,\n\t0xA3, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6, 0xBF, 0x49,\n\t0x44, 0xD7, 0xA6, 0xD6, 0xBC, 0x41, 0x44, 0xD7,\n\t0xA7, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA8, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0xA9, 0xD7, 0x81, 0x4D, 0x44, 0xD7,\n\t0xA9, 0xD7, 0x82, 0x51, 0x44, 0xD7, 0xAA, 0xD6,\n\t// Bytes 4400 - 443f\n\t0xBC, 0x41, 0x44, 0xD7, 0xB2, 0xD6, 0xB7, 0x31,\n\t0x44, 0xD8, 0xA7, 0xD9, 0x8B, 0x59, 0x44, 0xD8,\n\t0xA7, 0xD9, 0x93, 0xC9, 0x44, 0xD8, 0xA7, 0xD9,\n\t0x94, 0xC9, 0x44, 0xD8, 0xA7, 0xD9, 0x95, 0xB5,\n\t0x44, 0xD8, 0xB0, 0xD9, 0xB0, 0x79, 0x44, 0xD8,\n\t0xB1, 0xD9, 0xB0, 0x79, 0x44, 0xD9, 0x80, 0xD9,\n\t0x8B, 0x59, 0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x65,\n\t0x44, 0xD9, 0x80, 0xD9, 0x8F, 0x69, 0x44, 0xD9,\n\t// Bytes 4440 - 447f\n\t0x80, 0xD9, 0x90, 0x6D, 0x44, 0xD9, 0x80, 0xD9,\n\t0x91, 0x71, 0x44, 0xD9, 0x80, 0xD9, 0x92, 0x75,\n\t0x44, 0xD9, 0x87, 0xD9, 0xB0, 0x79, 0x44, 0xD9,\n\t0x88, 0xD9, 0x94, 0xC9, 0x44, 0xD9, 0x89, 0xD9,\n\t0xB0, 0x79, 0x44, 0xD9, 0x8A, 0xD9, 0x94, 0xC9,\n\t0x44, 0xDB, 0x92, 0xD9, 0x94, 0xC9, 0x44, 0xDB,\n\t0x95, 0xD9, 0x94, 0xC9, 0x45, 0x20, 0xCC, 0x88,\n\t0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCC,\n\t// Bytes 4480 - 44bf\n\t0x81, 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCD, 0x82,\n\t0xCA, 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x45, 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x45,\n\t0x20, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x45, 0x20,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCA, 0x45, 0x20, 0xCC, 0x94,\n\t0xCD, 0x82, 0xCA, 0x45, 0x20, 0xD9, 0x8C, 0xD9,\n\t0x91, 0x72, 0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91,\n\t// Bytes 44c0 - 44ff\n\t0x72, 0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x72,\n\t0x45, 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x72, 0x45,\n\t0x20, 0xD9, 0x90, 0xD9, 0x91, 0x72, 0x45, 0x20,\n\t0xD9, 0x91, 0xD9, 0xB0, 0x7A, 0x45, 0xE2, 0xAB,\n\t0x9D, 0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9, 0xCC,\n\t0x88, 0xCC, 0x81, 0xCA, 0x46, 0xCF, 0x85, 0xCC,\n\t0x88, 0xCC, 0x81, 0xCA, 0x46, 0xD7, 0xA9, 0xD6,\n\t0xBC, 0xD7, 0x81, 0x4E, 0x46, 0xD7, 0xA9, 0xD6,\n\t// Bytes 4500 - 453f\n\t0xBC, 0xD7, 0x82, 0x52, 0x46, 0xD9, 0x80, 0xD9,\n\t0x8E, 0xD9, 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9,\n\t0x8F, 0xD9, 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9,\n\t0x90, 0xD9, 0x91, 0x72, 0x46, 0xE0, 0xA4, 0x95,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x96,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x97,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x9C,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA1,\n\t// Bytes 4540 - 457f\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA2,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAB,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAF,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA1,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA2,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xAF,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x96,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x97,\n\t// Bytes 4580 - 45bf\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x9C,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xAB,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB2,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB8,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA1,\n\t0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA2,\n\t0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0, 0xBE, 0xB2,\n\t0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE0, 0xBE, 0xB3,\n\t// Bytes 45c0 - 45ff\n\t0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE3, 0x83, 0x86,\n\t0xE3, 0x82, 0x99, 0x0D, 0x48, 0xF0, 0x9D, 0x85,\n\t0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xAD, 0x48, 0xF0,\n\t0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xAD,\n\t0x48, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xAD, 0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xAD, 0x49, 0xE0, 0xBE, 0xB2,\n\t0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x49,\n\t// Bytes 4600 - 463f\n\t0xE0, 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE,\n\t0x80, 0x9E, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE,\n\t0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0,\n\t0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,\n\t0x9D, 0x85, 0xB0, 0xAE, 0x4C, 0xF0, 0x9D, 0x85,\n\t0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,\n\t// Bytes 4640 - 467f\n\t0xB1, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xAE,\n\t0x4C, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE, 0x4C, 0xF0,\n\t0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,\n\t0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0, 0x9D, 0x86,\n\t0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,\n\t0xAE, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0,\n\t// Bytes 4680 - 46bf\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE,\n\t0x83, 0x41, 0xCC, 0x82, 0xC9, 0x83, 0x41, 0xCC,\n\t0x86, 0xC9, 0x83, 0x41, 0xCC, 0x87, 0xC9, 0x83,\n\t0x41, 0xCC, 0x88, 0xC9, 0x83, 0x41, 0xCC, 0x8A,\n\t0xC9, 0x83, 0x41, 0xCC, 0xA3, 0xB5, 0x83, 0x43,\n\t0xCC, 0xA7, 0xA5, 0x83, 0x45, 0xCC, 0x82, 0xC9,\n\t0x83, 0x45, 0xCC, 0x84, 0xC9, 0x83, 0x45, 0xCC,\n\t0xA3, 0xB5, 0x83, 0x45, 0xCC, 0xA7, 0xA5, 0x83,\n\t// Bytes 46c0 - 46ff\n\t0x49, 0xCC, 0x88, 0xC9, 0x83, 0x4C, 0xCC, 0xA3,\n\t0xB5, 0x83, 0x4F, 0xCC, 0x82, 0xC9, 0x83, 0x4F,\n\t0xCC, 0x83, 0xC9, 0x83, 0x4F, 0xCC, 0x84, 0xC9,\n\t0x83, 0x4F, 0xCC, 0x87, 0xC9, 0x83, 0x4F, 0xCC,\n\t0x88, 0xC9, 0x83, 0x4F, 0xCC, 0x9B, 0xAD, 0x83,\n\t0x4F, 0xCC, 0xA3, 0xB5, 0x83, 0x4F, 0xCC, 0xA8,\n\t0xA5, 0x83, 0x52, 0xCC, 0xA3, 0xB5, 0x83, 0x53,\n\t0xCC, 0x81, 0xC9, 0x83, 0x53, 0xCC, 0x8C, 0xC9,\n\t// Bytes 4700 - 473f\n\t0x83, 0x53, 0xCC, 0xA3, 0xB5, 0x83, 0x55, 0xCC,\n\t0x83, 0xC9, 0x83, 0x55, 0xCC, 0x84, 0xC9, 0x83,\n\t0x55, 0xCC, 0x88, 0xC9, 0x83, 0x55, 0xCC, 0x9B,\n\t0xAD, 0x83, 0x61, 0xCC, 0x82, 0xC9, 0x83, 0x61,\n\t0xCC, 0x86, 0xC9, 0x83, 0x61, 0xCC, 0x87, 0xC9,\n\t0x83, 0x61, 0xCC, 0x88, 0xC9, 0x83, 0x61, 0xCC,\n\t0x8A, 0xC9, 0x83, 0x61, 0xCC, 0xA3, 0xB5, 0x83,\n\t0x63, 0xCC, 0xA7, 0xA5, 0x83, 0x65, 0xCC, 0x82,\n\t// Bytes 4740 - 477f\n\t0xC9, 0x83, 0x65, 0xCC, 0x84, 0xC9, 0x83, 0x65,\n\t0xCC, 0xA3, 0xB5, 0x83, 0x65, 0xCC, 0xA7, 0xA5,\n\t0x83, 0x69, 0xCC, 0x88, 0xC9, 0x83, 0x6C, 0xCC,\n\t0xA3, 0xB5, 0x83, 0x6F, 0xCC, 0x82, 0xC9, 0x83,\n\t0x6F, 0xCC, 0x83, 0xC9, 0x83, 0x6F, 0xCC, 0x84,\n\t0xC9, 0x83, 0x6F, 0xCC, 0x87, 0xC9, 0x83, 0x6F,\n\t0xCC, 0x88, 0xC9, 0x83, 0x6F, 0xCC, 0x9B, 0xAD,\n\t0x83, 0x6F, 0xCC, 0xA3, 0xB5, 0x83, 0x6F, 0xCC,\n\t// Bytes 4780 - 47bf\n\t0xA8, 0xA5, 0x83, 0x72, 0xCC, 0xA3, 0xB5, 0x83,\n\t0x73, 0xCC, 0x81, 0xC9, 0x83, 0x73, 0xCC, 0x8C,\n\t0xC9, 0x83, 0x73, 0xCC, 0xA3, 0xB5, 0x83, 0x75,\n\t0xCC, 0x83, 0xC9, 0x83, 0x75, 0xCC, 0x84, 0xC9,\n\t0x83, 0x75, 0xCC, 0x88, 0xC9, 0x83, 0x75, 0xCC,\n\t0x9B, 0xAD, 0x84, 0xCE, 0x91, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x91, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0x95, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x95, 0xCC,\n\t// Bytes 47c0 - 47ff\n\t0x94, 0xC9, 0x84, 0xCE, 0x97, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x97, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0x99, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x99, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0x9F, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x9F, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0xA5, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xA9, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCE, 0xB1, 0xCC, 0x80, 0xC9, 0x84, 0xCE,\n\t// Bytes 4800 - 483f\n\t0xB1, 0xCC, 0x81, 0xC9, 0x84, 0xCE, 0xB1, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCE, 0xB1, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCE, 0xB1, 0xCD, 0x82, 0xC9, 0x84, 0xCE,\n\t0xB5, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB5, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCC, 0x80, 0xC9,\n\t0x84, 0xCE, 0xB7, 0xCC, 0x81, 0xC9, 0x84, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB7, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xC9,\n\t// Bytes 4840 - 487f\n\t0x84, 0xCE, 0xB9, 0xCC, 0x88, 0xC9, 0x84, 0xCE,\n\t0xB9, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB9, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xBF, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0xBF, 0xCC, 0x94, 0xC9, 0x84, 0xCF,\n\t0x85, 0xCC, 0x88, 0xC9, 0x84, 0xCF, 0x85, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCF, 0x85, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCF, 0x89, 0xCC, 0x80, 0xC9, 0x84, 0xCF,\n\t0x89, 0xCC, 0x81, 0xC9, 0x84, 0xCF, 0x89, 0xCC,\n\t// Bytes 4880 - 48bf\n\t0x93, 0xC9, 0x84, 0xCF, 0x89, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCF, 0x89, 0xCD, 0x82, 0xC9, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t// Bytes 48c0 - 48ff\n\t0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t// Bytes 4900 - 493f\n\t0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t// Bytes 4940 - 497f\n\t0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCF,\n\t// Bytes 4980 - 49bf\n\t0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x42, 0xCC,\n\t0x80, 0xC9, 0x32, 0x42, 0xCC, 0x81, 0xC9, 0x32,\n\t0x42, 0xCC, 0x93, 0xC9, 0x32, 0x43, 0xE1, 0x85,\n\t// Bytes 49c0 - 49ff\n\t0xA1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xA5, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xA9, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00, 0x43,\n\t// Bytes 4a00 - 4a3f\n\t0xE1, 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xAD, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xB1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xB5, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA, 0x01,\n\t// Bytes 4a40 - 4a7f\n\t0x00, 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00, 0x43,\n\t0xE1, 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x86,\n\t0xB0, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1, 0x01,\n\t0x00, 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00, 0x43,\n\t0xE1, 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1, 0x86,\n\t0xB4, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5, 0x01,\n\t0x00, 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x32,\n\t0x43, 0xE3, 0x82, 0x99, 0x0D, 0x03, 0x43, 0xE3,\n\t// Bytes 4a80 - 4abf\n\t0x82, 0x9A, 0x0D, 0x03, 0x46, 0xE0, 0xBD, 0xB1,\n\t0xE0, 0xBD, 0xB2, 0x9E, 0x26, 0x46, 0xE0, 0xBD,\n\t0xB1, 0xE0, 0xBD, 0xB4, 0xA2, 0x26, 0x46, 0xE0,\n\t0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x26, 0x00,\n\t0x01,\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfcTrie. Total size: 10442 bytes (10.20 KiB). Checksum: 4ba400a9d8208e03.\ntype nfcTrie struct{}\n\nfunc newNfcTrie(i int) *nfcTrie {\n\treturn &nfcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 45:\n\t\treturn uint16(nfcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 45\n\t\treturn uint16(nfcSparse.lookup(n, b))\n\t}\n}\n\n// nfcValues: 47 blocks, 3008 entries, 6016 bytes\n// The third block is the zero block.\nvar nfcValues = [3008]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c,\n\t0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb,\n\t0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104,\n\t0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd,\n\t0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235,\n\t0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285,\n\t0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3,\n\t0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750,\n\t0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f,\n\t0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3,\n\t0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 0x104: 0x2f9c, 0x105: 0x32a8,\n\t0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6,\n\t0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5,\n\t0x112: 0x46b0, 0x113: 0x4741, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302,\n\t0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339,\n\t0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352,\n\t0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e,\n\t0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6,\n\t0x130: 0x308c, 0x134: 0x30b4, 0x135: 0x33c0,\n\t0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc,\n\t0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8,\n\t// Block 0x5, offset 0x140\n\t0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118,\n\t0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f,\n\t0x14c: 0x46d3, 0x14d: 0x4764, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c,\n\t0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483,\n\t0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d,\n\t0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba,\n\t0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796,\n\t0x16a: 0x470a, 0x16b: 0x479b, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2,\n\t0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528,\n\t0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267,\n\t0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0xa000,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x8100, 0x185: 0x8100,\n\t0x186: 0x8100,\n\t0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140,\n\t0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8,\n\t0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50,\n\t0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5,\n\t0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf,\n\t0x1aa: 0x46ec, 0x1ab: 0x477d, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd,\n\t0x1b0: 0x33c5, 0x1b4: 0x3028, 0x1b5: 0x3334,\n\t0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46,\n\t0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316,\n\t0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac,\n\t0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479,\n\t0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6,\n\t0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5,\n\t0x1de: 0x305a, 0x1df: 0x3366,\n\t0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b,\n\t0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769,\n\t0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,\n\t0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,\n\t0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932,\n\t0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d,\n\t0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d,\n\t0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d,\n\t0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d,\n\t0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d,\n\t0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,\n\t0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 0x245: 0x9936,\n\t0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,\n\t0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,\n\t0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,\n\t0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135,\n\t0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132,\n\t0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132,\n\t0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132,\n\t0x274: 0x0170,\n\t0x27a: 0x8100,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x8100, 0x285: 0x35a1,\n\t0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625,\n\t0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 0x2af: 0x36a9,\n\t0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x3721, 0x2c1: 0x372d, 0x2c3: 0x371b,\n\t0x2c6: 0xa000, 0x2c7: 0x3709,\n\t0x2cc: 0x375d, 0x2cd: 0x3745, 0x2ce: 0x376f, 0x2d0: 0xa000,\n\t0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000,\n\t0x2d8: 0xa000, 0x2d9: 0x3751, 0x2da: 0xa000,\n\t0x2de: 0xa000, 0x2e3: 0xa000,\n\t0x2e7: 0xa000,\n\t0x2eb: 0xa000, 0x2ed: 0xa000,\n\t0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000,\n\t0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x37d5, 0x2fa: 0xa000,\n\t0x2fe: 0xa000,\n\t// Block 0xc, offset 0x300\n\t0x301: 0x3733, 0x302: 0x37b7,\n\t0x310: 0x370f, 0x311: 0x3793,\n\t0x312: 0x3715, 0x313: 0x3799, 0x316: 0x3727, 0x317: 0x37ab,\n\t0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3829, 0x31b: 0x382f, 0x31c: 0x3739, 0x31d: 0x37bd,\n\t0x31e: 0x373f, 0x31f: 0x37c3, 0x322: 0x374b, 0x323: 0x37cf,\n\t0x324: 0x3757, 0x325: 0x37db, 0x326: 0x3763, 0x327: 0x37e7, 0x328: 0xa000, 0x329: 0xa000,\n\t0x32a: 0x3835, 0x32b: 0x383b, 0x32c: 0x378d, 0x32d: 0x3811, 0x32e: 0x3769, 0x32f: 0x37ed,\n\t0x330: 0x3775, 0x331: 0x37f9, 0x332: 0x377b, 0x333: 0x37ff, 0x334: 0x3781, 0x335: 0x3805,\n\t0x338: 0x3787, 0x339: 0x380b,\n\t// Block 0xd, offset 0x340\n\t0x351: 0x812d,\n\t0x352: 0x8132, 0x353: 0x8132, 0x354: 0x8132, 0x355: 0x8132, 0x356: 0x812d, 0x357: 0x8132,\n\t0x358: 0x8132, 0x359: 0x8132, 0x35a: 0x812e, 0x35b: 0x812d, 0x35c: 0x8132, 0x35d: 0x8132,\n\t0x35e: 0x8132, 0x35f: 0x8132, 0x360: 0x8132, 0x361: 0x8132, 0x362: 0x812d, 0x363: 0x812d,\n\t0x364: 0x812d, 0x365: 0x812d, 0x366: 0x812d, 0x367: 0x812d, 0x368: 0x8132, 0x369: 0x8132,\n\t0x36a: 0x812d, 0x36b: 0x8132, 0x36c: 0x8132, 0x36d: 0x812e, 0x36e: 0x8131, 0x36f: 0x8132,\n\t0x370: 0x8105, 0x371: 0x8106, 0x372: 0x8107, 0x373: 0x8108, 0x374: 0x8109, 0x375: 0x810a,\n\t0x376: 0x810b, 0x377: 0x810c, 0x378: 0x810d, 0x379: 0x810e, 0x37a: 0x810e, 0x37b: 0x810f,\n\t0x37c: 0x8110, 0x37d: 0x8111, 0x37f: 0x8112,\n\t// Block 0xe, offset 0x380\n\t0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8116,\n\t0x38c: 0x8117, 0x38d: 0x8118, 0x38e: 0x8119, 0x38f: 0x811a, 0x390: 0x811b, 0x391: 0x811c,\n\t0x392: 0x811d, 0x393: 0x9932, 0x394: 0x9932, 0x395: 0x992d, 0x396: 0x812d, 0x397: 0x8132,\n\t0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x8132, 0x39b: 0x8132, 0x39c: 0x812d, 0x39d: 0x8132,\n\t0x39e: 0x8132, 0x39f: 0x812d,\n\t0x3b0: 0x811e,\n\t// Block 0xf, offset 0x3c0\n\t0x3c5: 0xa000,\n\t0x3c6: 0x2d26, 0x3c7: 0xa000, 0x3c8: 0x2d2e, 0x3c9: 0xa000, 0x3ca: 0x2d36, 0x3cb: 0xa000,\n\t0x3cc: 0x2d3e, 0x3cd: 0xa000, 0x3ce: 0x2d46, 0x3d1: 0xa000,\n\t0x3d2: 0x2d4e,\n\t0x3f4: 0x8102, 0x3f5: 0x9900,\n\t0x3fa: 0xa000, 0x3fb: 0x2d56,\n\t0x3fc: 0xa000, 0x3fd: 0x2d5e, 0x3fe: 0xa000, 0x3ff: 0xa000,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x8132, 0x401: 0x8132, 0x402: 0x812d, 0x403: 0x8132, 0x404: 0x8132, 0x405: 0x8132,\n\t0x406: 0x8132, 0x407: 0x8132, 0x408: 0x8132, 0x409: 0x8132, 0x40a: 0x812d, 0x40b: 0x8132,\n\t0x40c: 0x8132, 0x40d: 0x8135, 0x40e: 0x812a, 0x40f: 0x812d, 0x410: 0x8129, 0x411: 0x8132,\n\t0x412: 0x8132, 0x413: 0x8132, 0x414: 0x8132, 0x415: 0x8132, 0x416: 0x8132, 0x417: 0x8132,\n\t0x418: 0x8132, 0x419: 0x8132, 0x41a: 0x8132, 0x41b: 0x8132, 0x41c: 0x8132, 0x41d: 0x8132,\n\t0x41e: 0x8132, 0x41f: 0x8132, 0x420: 0x8132, 0x421: 0x8132, 0x422: 0x8132, 0x423: 0x8132,\n\t0x424: 0x8132, 0x425: 0x8132, 0x426: 0x8132, 0x427: 0x8132, 0x428: 0x8132, 0x429: 0x8132,\n\t0x42a: 0x8132, 0x42b: 0x8132, 0x42c: 0x8132, 0x42d: 0x8132, 0x42e: 0x8132, 0x42f: 0x8132,\n\t0x430: 0x8132, 0x431: 0x8132, 0x432: 0x8132, 0x433: 0x8132, 0x434: 0x8132, 0x435: 0x8132,\n\t0x436: 0x8133, 0x437: 0x8131, 0x438: 0x8131, 0x439: 0x812d, 0x43b: 0x8132,\n\t0x43c: 0x8134, 0x43d: 0x812d, 0x43e: 0x8132, 0x43f: 0x812d,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x2f97, 0x441: 0x32a3, 0x442: 0x2fa1, 0x443: 0x32ad, 0x444: 0x2fa6, 0x445: 0x32b2,\n\t0x446: 0x2fab, 0x447: 0x32b7, 0x448: 0x38cc, 0x449: 0x3a5b, 0x44a: 0x2fc4, 0x44b: 0x32d0,\n\t0x44c: 0x2fce, 0x44d: 0x32da, 0x44e: 0x2fdd, 0x44f: 0x32e9, 0x450: 0x2fd3, 0x451: 0x32df,\n\t0x452: 0x2fd8, 0x453: 0x32e4, 0x454: 0x38ef, 0x455: 0x3a7e, 0x456: 0x38f6, 0x457: 0x3a85,\n\t0x458: 0x3019, 0x459: 0x3325, 0x45a: 0x301e, 0x45b: 0x332a, 0x45c: 0x3904, 0x45d: 0x3a93,\n\t0x45e: 0x3023, 0x45f: 0x332f, 0x460: 0x3032, 0x461: 0x333e, 0x462: 0x3050, 0x463: 0x335c,\n\t0x464: 0x305f, 0x465: 0x336b, 0x466: 0x3055, 0x467: 0x3361, 0x468: 0x3064, 0x469: 0x3370,\n\t0x46a: 0x3069, 0x46b: 0x3375, 0x46c: 0x30af, 0x46d: 0x33bb, 0x46e: 0x390b, 0x46f: 0x3a9a,\n\t0x470: 0x30b9, 0x471: 0x33ca, 0x472: 0x30c3, 0x473: 0x33d4, 0x474: 0x30cd, 0x475: 0x33de,\n\t0x476: 0x46c4, 0x477: 0x4755, 0x478: 0x3912, 0x479: 0x3aa1, 0x47a: 0x30e6, 0x47b: 0x33f7,\n\t0x47c: 0x30e1, 0x47d: 0x33f2, 0x47e: 0x30eb, 0x47f: 0x33fc,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x30f0, 0x481: 0x3401, 0x482: 0x30f5, 0x483: 0x3406, 0x484: 0x3109, 0x485: 0x341a,\n\t0x486: 0x3113, 0x487: 0x3424, 0x488: 0x3122, 0x489: 0x3433, 0x48a: 0x311d, 0x48b: 0x342e,\n\t0x48c: 0x3935, 0x48d: 0x3ac4, 0x48e: 0x3943, 0x48f: 0x3ad2, 0x490: 0x394a, 0x491: 0x3ad9,\n\t0x492: 0x3951, 0x493: 0x3ae0, 0x494: 0x314f, 0x495: 0x3460, 0x496: 0x3154, 0x497: 0x3465,\n\t0x498: 0x315e, 0x499: 0x346f, 0x49a: 0x46f1, 0x49b: 0x4782, 0x49c: 0x3997, 0x49d: 0x3b26,\n\t0x49e: 0x3177, 0x49f: 0x3488, 0x4a0: 0x3181, 0x4a1: 0x3492, 0x4a2: 0x4700, 0x4a3: 0x4791,\n\t0x4a4: 0x399e, 0x4a5: 0x3b2d, 0x4a6: 0x39a5, 0x4a7: 0x3b34, 0x4a8: 0x39ac, 0x4a9: 0x3b3b,\n\t0x4aa: 0x3190, 0x4ab: 0x34a1, 0x4ac: 0x319a, 0x4ad: 0x34b0, 0x4ae: 0x31ae, 0x4af: 0x34c4,\n\t0x4b0: 0x31a9, 0x4b1: 0x34bf, 0x4b2: 0x31ea, 0x4b3: 0x3500, 0x4b4: 0x31f9, 0x4b5: 0x350f,\n\t0x4b6: 0x31f4, 0x4b7: 0x350a, 0x4b8: 0x39b3, 0x4b9: 0x3b42, 0x4ba: 0x39ba, 0x4bb: 0x3b49,\n\t0x4bc: 0x31fe, 0x4bd: 0x3514, 0x4be: 0x3203, 0x4bf: 0x3519,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x3208, 0x4c1: 0x351e, 0x4c2: 0x320d, 0x4c3: 0x3523, 0x4c4: 0x321c, 0x4c5: 0x3532,\n\t0x4c6: 0x3217, 0x4c7: 0x352d, 0x4c8: 0x3221, 0x4c9: 0x353c, 0x4ca: 0x3226, 0x4cb: 0x3541,\n\t0x4cc: 0x322b, 0x4cd: 0x3546, 0x4ce: 0x3249, 0x4cf: 0x3564, 0x4d0: 0x3262, 0x4d1: 0x3582,\n\t0x4d2: 0x3271, 0x4d3: 0x3591, 0x4d4: 0x3276, 0x4d5: 0x3596, 0x4d6: 0x337a, 0x4d7: 0x34a6,\n\t0x4d8: 0x3537, 0x4d9: 0x3573, 0x4db: 0x35d1,\n\t0x4e0: 0x46a1, 0x4e1: 0x4732, 0x4e2: 0x2f83, 0x4e3: 0x328f,\n\t0x4e4: 0x3878, 0x4e5: 0x3a07, 0x4e6: 0x3871, 0x4e7: 0x3a00, 0x4e8: 0x3886, 0x4e9: 0x3a15,\n\t0x4ea: 0x387f, 0x4eb: 0x3a0e, 0x4ec: 0x38be, 0x4ed: 0x3a4d, 0x4ee: 0x3894, 0x4ef: 0x3a23,\n\t0x4f0: 0x388d, 0x4f1: 0x3a1c, 0x4f2: 0x38a2, 0x4f3: 0x3a31, 0x4f4: 0x389b, 0x4f5: 0x3a2a,\n\t0x4f6: 0x38c5, 0x4f7: 0x3a54, 0x4f8: 0x46b5, 0x4f9: 0x4746, 0x4fa: 0x3000, 0x4fb: 0x330c,\n\t0x4fc: 0x2fec, 0x4fd: 0x32f8, 0x4fe: 0x38da, 0x4ff: 0x3a69,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x38d3, 0x501: 0x3a62, 0x502: 0x38e8, 0x503: 0x3a77, 0x504: 0x38e1, 0x505: 0x3a70,\n\t0x506: 0x38fd, 0x507: 0x3a8c, 0x508: 0x3091, 0x509: 0x339d, 0x50a: 0x30a5, 0x50b: 0x33b1,\n\t0x50c: 0x46e7, 0x50d: 0x4778, 0x50e: 0x3136, 0x50f: 0x3447, 0x510: 0x3920, 0x511: 0x3aaf,\n\t0x512: 0x3919, 0x513: 0x3aa8, 0x514: 0x392e, 0x515: 0x3abd, 0x516: 0x3927, 0x517: 0x3ab6,\n\t0x518: 0x3989, 0x519: 0x3b18, 0x51a: 0x396d, 0x51b: 0x3afc, 0x51c: 0x3966, 0x51d: 0x3af5,\n\t0x51e: 0x397b, 0x51f: 0x3b0a, 0x520: 0x3974, 0x521: 0x3b03, 0x522: 0x3982, 0x523: 0x3b11,\n\t0x524: 0x31e5, 0x525: 0x34fb, 0x526: 0x31c7, 0x527: 0x34dd, 0x528: 0x39e4, 0x529: 0x3b73,\n\t0x52a: 0x39dd, 0x52b: 0x3b6c, 0x52c: 0x39f2, 0x52d: 0x3b81, 0x52e: 0x39eb, 0x52f: 0x3b7a,\n\t0x530: 0x39f9, 0x531: 0x3b88, 0x532: 0x3230, 0x533: 0x354b, 0x534: 0x3258, 0x535: 0x3578,\n\t0x536: 0x3253, 0x537: 0x356e, 0x538: 0x323f, 0x539: 0x355a,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x4804, 0x541: 0x480a, 0x542: 0x491e, 0x543: 0x4936, 0x544: 0x4926, 0x545: 0x493e,\n\t0x546: 0x492e, 0x547: 0x4946, 0x548: 0x47aa, 0x549: 0x47b0, 0x54a: 0x488e, 0x54b: 0x48a6,\n\t0x54c: 0x4896, 0x54d: 0x48ae, 0x54e: 0x489e, 0x54f: 0x48b6, 0x550: 0x4816, 0x551: 0x481c,\n\t0x552: 0x3db8, 0x553: 0x3dc8, 0x554: 0x3dc0, 0x555: 0x3dd0,\n\t0x558: 0x47b6, 0x559: 0x47bc, 0x55a: 0x3ce8, 0x55b: 0x3cf8, 0x55c: 0x3cf0, 0x55d: 0x3d00,\n\t0x560: 0x482e, 0x561: 0x4834, 0x562: 0x494e, 0x563: 0x4966,\n\t0x564: 0x4956, 0x565: 0x496e, 0x566: 0x495e, 0x567: 0x4976, 0x568: 0x47c2, 0x569: 0x47c8,\n\t0x56a: 0x48be, 0x56b: 0x48d6, 0x56c: 0x48c6, 0x56d: 0x48de, 0x56e: 0x48ce, 0x56f: 0x48e6,\n\t0x570: 0x4846, 0x571: 0x484c, 0x572: 0x3e18, 0x573: 0x3e30, 0x574: 0x3e20, 0x575: 0x3e38,\n\t0x576: 0x3e28, 0x577: 0x3e40, 0x578: 0x47ce, 0x579: 0x47d4, 0x57a: 0x3d18, 0x57b: 0x3d30,\n\t0x57c: 0x3d20, 0x57d: 0x3d38, 0x57e: 0x3d28, 0x57f: 0x3d40,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x4852, 0x581: 0x4858, 0x582: 0x3e48, 0x583: 0x3e58, 0x584: 0x3e50, 0x585: 0x3e60,\n\t0x588: 0x47da, 0x589: 0x47e0, 0x58a: 0x3d48, 0x58b: 0x3d58,\n\t0x58c: 0x3d50, 0x58d: 0x3d60, 0x590: 0x4864, 0x591: 0x486a,\n\t0x592: 0x3e80, 0x593: 0x3e98, 0x594: 0x3e88, 0x595: 0x3ea0, 0x596: 0x3e90, 0x597: 0x3ea8,\n\t0x599: 0x47e6, 0x59b: 0x3d68, 0x59d: 0x3d70,\n\t0x59f: 0x3d78, 0x5a0: 0x487c, 0x5a1: 0x4882, 0x5a2: 0x497e, 0x5a3: 0x4996,\n\t0x5a4: 0x4986, 0x5a5: 0x499e, 0x5a6: 0x498e, 0x5a7: 0x49a6, 0x5a8: 0x47ec, 0x5a9: 0x47f2,\n\t0x5aa: 0x48ee, 0x5ab: 0x4906, 0x5ac: 0x48f6, 0x5ad: 0x490e, 0x5ae: 0x48fe, 0x5af: 0x4916,\n\t0x5b0: 0x47f8, 0x5b1: 0x431e, 0x5b2: 0x3691, 0x5b3: 0x4324, 0x5b4: 0x4822, 0x5b5: 0x432a,\n\t0x5b6: 0x36a3, 0x5b7: 0x4330, 0x5b8: 0x36c1, 0x5b9: 0x4336, 0x5ba: 0x36d9, 0x5bb: 0x433c,\n\t0x5bc: 0x4870, 0x5bd: 0x4342,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x3da0, 0x5c1: 0x3da8, 0x5c2: 0x4184, 0x5c3: 0x41a2, 0x5c4: 0x418e, 0x5c5: 0x41ac,\n\t0x5c6: 0x4198, 0x5c7: 0x41b6, 0x5c8: 0x3cd8, 0x5c9: 0x3ce0, 0x5ca: 0x40d0, 0x5cb: 0x40ee,\n\t0x5cc: 0x40da, 0x5cd: 0x40f8, 0x5ce: 0x40e4, 0x5cf: 0x4102, 0x5d0: 0x3de8, 0x5d1: 0x3df0,\n\t0x5d2: 0x41c0, 0x5d3: 0x41de, 0x5d4: 0x41ca, 0x5d5: 0x41e8, 0x5d6: 0x41d4, 0x5d7: 0x41f2,\n\t0x5d8: 0x3d08, 0x5d9: 0x3d10, 0x5da: 0x410c, 0x5db: 0x412a, 0x5dc: 0x4116, 0x5dd: 0x4134,\n\t0x5de: 0x4120, 0x5df: 0x413e, 0x5e0: 0x3ec0, 0x5e1: 0x3ec8, 0x5e2: 0x41fc, 0x5e3: 0x421a,\n\t0x5e4: 0x4206, 0x5e5: 0x4224, 0x5e6: 0x4210, 0x5e7: 0x422e, 0x5e8: 0x3d80, 0x5e9: 0x3d88,\n\t0x5ea: 0x4148, 0x5eb: 0x4166, 0x5ec: 0x4152, 0x5ed: 0x4170, 0x5ee: 0x415c, 0x5ef: 0x417a,\n\t0x5f0: 0x3685, 0x5f1: 0x367f, 0x5f2: 0x3d90, 0x5f3: 0x368b, 0x5f4: 0x3d98,\n\t0x5f6: 0x4810, 0x5f7: 0x3db0, 0x5f8: 0x35f5, 0x5f9: 0x35ef, 0x5fa: 0x35e3, 0x5fb: 0x42ee,\n\t0x5fc: 0x35fb, 0x5fd: 0x8100, 0x5fe: 0x01d3, 0x5ff: 0xa100,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x8100, 0x601: 0x35a7, 0x602: 0x3dd8, 0x603: 0x369d, 0x604: 0x3de0,\n\t0x606: 0x483a, 0x607: 0x3df8, 0x608: 0x3601, 0x609: 0x42f4, 0x60a: 0x360d, 0x60b: 0x42fa,\n\t0x60c: 0x3619, 0x60d: 0x3b8f, 0x60e: 0x3b96, 0x60f: 0x3b9d, 0x610: 0x36b5, 0x611: 0x36af,\n\t0x612: 0x3e00, 0x613: 0x44e4, 0x616: 0x36bb, 0x617: 0x3e10,\n\t0x618: 0x3631, 0x619: 0x362b, 0x61a: 0x361f, 0x61b: 0x4300, 0x61d: 0x3ba4,\n\t0x61e: 0x3bab, 0x61f: 0x3bb2, 0x620: 0x36eb, 0x621: 0x36e5, 0x622: 0x3e68, 0x623: 0x44ec,\n\t0x624: 0x36cd, 0x625: 0x36d3, 0x626: 0x36f1, 0x627: 0x3e78, 0x628: 0x3661, 0x629: 0x365b,\n\t0x62a: 0x364f, 0x62b: 0x430c, 0x62c: 0x3649, 0x62d: 0x359b, 0x62e: 0x42e8, 0x62f: 0x0081,\n\t0x632: 0x3eb0, 0x633: 0x36f7, 0x634: 0x3eb8,\n\t0x636: 0x4888, 0x637: 0x3ed0, 0x638: 0x363d, 0x639: 0x4306, 0x63a: 0x366d, 0x63b: 0x4318,\n\t0x63c: 0x3679, 0x63d: 0x4256, 0x63e: 0xa100,\n\t// Block 0x19, offset 0x640\n\t0x641: 0x3c06, 0x643: 0xa000, 0x644: 0x3c0d, 0x645: 0xa000,\n\t0x647: 0x3c14, 0x648: 0xa000, 0x649: 0x3c1b,\n\t0x64d: 0xa000,\n\t0x660: 0x2f65, 0x661: 0xa000, 0x662: 0x3c29,\n\t0x664: 0xa000, 0x665: 0xa000,\n\t0x66d: 0x3c22, 0x66e: 0x2f60, 0x66f: 0x2f6a,\n\t0x670: 0x3c30, 0x671: 0x3c37, 0x672: 0xa000, 0x673: 0xa000, 0x674: 0x3c3e, 0x675: 0x3c45,\n\t0x676: 0xa000, 0x677: 0xa000, 0x678: 0x3c4c, 0x679: 0x3c53, 0x67a: 0xa000, 0x67b: 0xa000,\n\t0x67c: 0xa000, 0x67d: 0xa000,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x3c5a, 0x681: 0x3c61, 0x682: 0xa000, 0x683: 0xa000, 0x684: 0x3c76, 0x685: 0x3c7d,\n\t0x686: 0xa000, 0x687: 0xa000, 0x688: 0x3c84, 0x689: 0x3c8b,\n\t0x691: 0xa000,\n\t0x692: 0xa000,\n\t0x6a2: 0xa000,\n\t0x6a8: 0xa000, 0x6a9: 0xa000,\n\t0x6ab: 0xa000, 0x6ac: 0x3ca0, 0x6ad: 0x3ca7, 0x6ae: 0x3cae, 0x6af: 0x3cb5,\n\t0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0xa000, 0x6b5: 0xa000,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c6: 0xa000, 0x6cb: 0xa000,\n\t0x6cc: 0x3f08, 0x6cd: 0xa000, 0x6ce: 0x3f10, 0x6cf: 0xa000, 0x6d0: 0x3f18, 0x6d1: 0xa000,\n\t0x6d2: 0x3f20, 0x6d3: 0xa000, 0x6d4: 0x3f28, 0x6d5: 0xa000, 0x6d6: 0x3f30, 0x6d7: 0xa000,\n\t0x6d8: 0x3f38, 0x6d9: 0xa000, 0x6da: 0x3f40, 0x6db: 0xa000, 0x6dc: 0x3f48, 0x6dd: 0xa000,\n\t0x6de: 0x3f50, 0x6df: 0xa000, 0x6e0: 0x3f58, 0x6e1: 0xa000, 0x6e2: 0x3f60,\n\t0x6e4: 0xa000, 0x6e5: 0x3f68, 0x6e6: 0xa000, 0x6e7: 0x3f70, 0x6e8: 0xa000, 0x6e9: 0x3f78,\n\t0x6ef: 0xa000,\n\t0x6f0: 0x3f80, 0x6f1: 0x3f88, 0x6f2: 0xa000, 0x6f3: 0x3f90, 0x6f4: 0x3f98, 0x6f5: 0xa000,\n\t0x6f6: 0x3fa0, 0x6f7: 0x3fa8, 0x6f8: 0xa000, 0x6f9: 0x3fb0, 0x6fa: 0x3fb8, 0x6fb: 0xa000,\n\t0x6fc: 0x3fc0, 0x6fd: 0x3fc8,\n\t// Block 0x1c, offset 0x700\n\t0x714: 0x3f00,\n\t0x719: 0x9903, 0x71a: 0x9903, 0x71b: 0x8100, 0x71c: 0x8100, 0x71d: 0xa000,\n\t0x71e: 0x3fd0,\n\t0x726: 0xa000,\n\t0x72b: 0xa000, 0x72c: 0x3fe0, 0x72d: 0xa000, 0x72e: 0x3fe8, 0x72f: 0xa000,\n\t0x730: 0x3ff0, 0x731: 0xa000, 0x732: 0x3ff8, 0x733: 0xa000, 0x734: 0x4000, 0x735: 0xa000,\n\t0x736: 0x4008, 0x737: 0xa000, 0x738: 0x4010, 0x739: 0xa000, 0x73a: 0x4018, 0x73b: 0xa000,\n\t0x73c: 0x4020, 0x73d: 0xa000, 0x73e: 0x4028, 0x73f: 0xa000,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x4030, 0x741: 0xa000, 0x742: 0x4038, 0x744: 0xa000, 0x745: 0x4040,\n\t0x746: 0xa000, 0x747: 0x4048, 0x748: 0xa000, 0x749: 0x4050,\n\t0x74f: 0xa000, 0x750: 0x4058, 0x751: 0x4060,\n\t0x752: 0xa000, 0x753: 0x4068, 0x754: 0x4070, 0x755: 0xa000, 0x756: 0x4078, 0x757: 0x4080,\n\t0x758: 0xa000, 0x759: 0x4088, 0x75a: 0x4090, 0x75b: 0xa000, 0x75c: 0x4098, 0x75d: 0x40a0,\n\t0x76f: 0xa000,\n\t0x770: 0xa000, 0x771: 0xa000, 0x772: 0xa000, 0x774: 0x3fd8,\n\t0x777: 0x40a8, 0x778: 0x40b0, 0x779: 0x40b8, 0x77a: 0x40c0,\n\t0x77d: 0xa000, 0x77e: 0x40c8,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x1377, 0x781: 0x0cfb, 0x782: 0x13d3, 0x783: 0x139f, 0x784: 0x0e57, 0x785: 0x06eb,\n\t0x786: 0x08df, 0x787: 0x162b, 0x788: 0x162b, 0x789: 0x0a0b, 0x78a: 0x145f, 0x78b: 0x0943,\n\t0x78c: 0x0a07, 0x78d: 0x0bef, 0x78e: 0x0fcf, 0x78f: 0x115f, 0x790: 0x1297, 0x791: 0x12d3,\n\t0x792: 0x1307, 0x793: 0x141b, 0x794: 0x0d73, 0x795: 0x0dff, 0x796: 0x0eab, 0x797: 0x0f43,\n\t0x798: 0x125f, 0x799: 0x1447, 0x79a: 0x1573, 0x79b: 0x070f, 0x79c: 0x08b3, 0x79d: 0x0d87,\n\t0x79e: 0x0ecf, 0x79f: 0x1293, 0x7a0: 0x15c3, 0x7a1: 0x0ab3, 0x7a2: 0x0e77, 0x7a3: 0x1283,\n\t0x7a4: 0x1317, 0x7a5: 0x0c23, 0x7a6: 0x11bb, 0x7a7: 0x12df, 0x7a8: 0x0b1f, 0x7a9: 0x0d0f,\n\t0x7aa: 0x0e17, 0x7ab: 0x0f1b, 0x7ac: 0x1427, 0x7ad: 0x074f, 0x7ae: 0x07e7, 0x7af: 0x0853,\n\t0x7b0: 0x0c8b, 0x7b1: 0x0d7f, 0x7b2: 0x0ecb, 0x7b3: 0x0fef, 0x7b4: 0x1177, 0x7b5: 0x128b,\n\t0x7b6: 0x12a3, 0x7b7: 0x13c7, 0x7b8: 0x14ef, 0x7b9: 0x15a3, 0x7ba: 0x15bf, 0x7bb: 0x102b,\n\t0x7bc: 0x106b, 0x7bd: 0x1123, 0x7be: 0x1243, 0x7bf: 0x147b,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x15cb, 0x7c1: 0x134b, 0x7c2: 0x09c7, 0x7c3: 0x0b3b, 0x7c4: 0x10db, 0x7c5: 0x119b,\n\t0x7c6: 0x0eff, 0x7c7: 0x1033, 0x7c8: 0x1397, 0x7c9: 0x14e7, 0x7ca: 0x09c3, 0x7cb: 0x0a8f,\n\t0x7cc: 0x0d77, 0x7cd: 0x0e2b, 0x7ce: 0x0e5f, 0x7cf: 0x1113, 0x7d0: 0x113b, 0x7d1: 0x14a7,\n\t0x7d2: 0x084f, 0x7d3: 0x11a7, 0x7d4: 0x07f3, 0x7d5: 0x07ef, 0x7d6: 0x1097, 0x7d7: 0x1127,\n\t0x7d8: 0x125b, 0x7d9: 0x14af, 0x7da: 0x1367, 0x7db: 0x0c27, 0x7dc: 0x0d73, 0x7dd: 0x1357,\n\t0x7de: 0x06f7, 0x7df: 0x0a63, 0x7e0: 0x0b93, 0x7e1: 0x0f2f, 0x7e2: 0x0faf, 0x7e3: 0x0873,\n\t0x7e4: 0x103b, 0x7e5: 0x075f, 0x7e6: 0x0b77, 0x7e7: 0x06d7, 0x7e8: 0x0deb, 0x7e9: 0x0ca3,\n\t0x7ea: 0x110f, 0x7eb: 0x08c7, 0x7ec: 0x09b3, 0x7ed: 0x0ffb, 0x7ee: 0x1263, 0x7ef: 0x133b,\n\t0x7f0: 0x0db7, 0x7f1: 0x13f7, 0x7f2: 0x0de3, 0x7f3: 0x0c37, 0x7f4: 0x121b, 0x7f5: 0x0c57,\n\t0x7f6: 0x0fab, 0x7f7: 0x072b, 0x7f8: 0x07a7, 0x7f9: 0x07eb, 0x7fa: 0x0d53, 0x7fb: 0x10fb,\n\t0x7fc: 0x11f3, 0x7fd: 0x1347, 0x7fe: 0x145b, 0x7ff: 0x085b,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x090f, 0x801: 0x0a17, 0x802: 0x0b2f, 0x803: 0x0cbf, 0x804: 0x0e7b, 0x805: 0x103f,\n\t0x806: 0x1497, 0x807: 0x157b, 0x808: 0x15cf, 0x809: 0x15e7, 0x80a: 0x0837, 0x80b: 0x0cf3,\n\t0x80c: 0x0da3, 0x80d: 0x13eb, 0x80e: 0x0afb, 0x80f: 0x0bd7, 0x810: 0x0bf3, 0x811: 0x0c83,\n\t0x812: 0x0e6b, 0x813: 0x0eb7, 0x814: 0x0f67, 0x815: 0x108b, 0x816: 0x112f, 0x817: 0x1193,\n\t0x818: 0x13db, 0x819: 0x126b, 0x81a: 0x1403, 0x81b: 0x147f, 0x81c: 0x080f, 0x81d: 0x083b,\n\t0x81e: 0x0923, 0x81f: 0x0ea7, 0x820: 0x12f3, 0x821: 0x133b, 0x822: 0x0b1b, 0x823: 0x0b8b,\n\t0x824: 0x0c4f, 0x825: 0x0daf, 0x826: 0x10d7, 0x827: 0x0f23, 0x828: 0x073b, 0x829: 0x097f,\n\t0x82a: 0x0a63, 0x82b: 0x0ac7, 0x82c: 0x0b97, 0x82d: 0x0f3f, 0x82e: 0x0f5b, 0x82f: 0x116b,\n\t0x830: 0x118b, 0x831: 0x1463, 0x832: 0x14e3, 0x833: 0x14f3, 0x834: 0x152f, 0x835: 0x0753,\n\t0x836: 0x107f, 0x837: 0x144f, 0x838: 0x14cb, 0x839: 0x0baf, 0x83a: 0x0717, 0x83b: 0x0777,\n\t0x83c: 0x0a67, 0x83d: 0x0a87, 0x83e: 0x0caf, 0x83f: 0x0d73,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0ec3, 0x841: 0x0fcb, 0x842: 0x1277, 0x843: 0x1417, 0x844: 0x1623, 0x845: 0x0ce3,\n\t0x846: 0x14a3, 0x847: 0x0833, 0x848: 0x0d2f, 0x849: 0x0d3b, 0x84a: 0x0e0f, 0x84b: 0x0e47,\n\t0x84c: 0x0f4b, 0x84d: 0x0fa7, 0x84e: 0x1027, 0x84f: 0x110b, 0x850: 0x153b, 0x851: 0x07af,\n\t0x852: 0x0c03, 0x853: 0x14b3, 0x854: 0x0767, 0x855: 0x0aab, 0x856: 0x0e2f, 0x857: 0x13df,\n\t0x858: 0x0b67, 0x859: 0x0bb7, 0x85a: 0x0d43, 0x85b: 0x0f2f, 0x85c: 0x14bb, 0x85d: 0x0817,\n\t0x85e: 0x08ff, 0x85f: 0x0a97, 0x860: 0x0cd3, 0x861: 0x0d1f, 0x862: 0x0d5f, 0x863: 0x0df3,\n\t0x864: 0x0f47, 0x865: 0x0fbb, 0x866: 0x1157, 0x867: 0x12f7, 0x868: 0x1303, 0x869: 0x1457,\n\t0x86a: 0x14d7, 0x86b: 0x0883, 0x86c: 0x0e4b, 0x86d: 0x0903, 0x86e: 0x0ec7, 0x86f: 0x0f6b,\n\t0x870: 0x1287, 0x871: 0x14bf, 0x872: 0x15ab, 0x873: 0x15d3, 0x874: 0x0d37, 0x875: 0x0e27,\n\t0x876: 0x11c3, 0x877: 0x10b7, 0x878: 0x10c3, 0x879: 0x10e7, 0x87a: 0x0f17, 0x87b: 0x0e9f,\n\t0x87c: 0x1363, 0x87d: 0x0733, 0x87e: 0x122b, 0x87f: 0x081b,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x080b, 0x881: 0x0b0b, 0x882: 0x0c2b, 0x883: 0x10f3, 0x884: 0x0a53, 0x885: 0x0e03,\n\t0x886: 0x0cef, 0x887: 0x13e7, 0x888: 0x12e7, 0x889: 0x14ab, 0x88a: 0x1323, 0x88b: 0x0b27,\n\t0x88c: 0x0787, 0x88d: 0x095b, 0x890: 0x09af,\n\t0x892: 0x0cdf, 0x895: 0x07f7, 0x896: 0x0f1f, 0x897: 0x0fe3,\n\t0x898: 0x1047, 0x899: 0x1063, 0x89a: 0x1067, 0x89b: 0x107b, 0x89c: 0x14fb, 0x89d: 0x10eb,\n\t0x89e: 0x116f, 0x8a0: 0x128f, 0x8a2: 0x1353,\n\t0x8a5: 0x1407, 0x8a6: 0x1433,\n\t0x8aa: 0x154f, 0x8ab: 0x1553, 0x8ac: 0x1557, 0x8ad: 0x15bb, 0x8ae: 0x142b, 0x8af: 0x14c7,\n\t0x8b0: 0x0757, 0x8b1: 0x077b, 0x8b2: 0x078f, 0x8b3: 0x084b, 0x8b4: 0x0857, 0x8b5: 0x0897,\n\t0x8b6: 0x094b, 0x8b7: 0x0967, 0x8b8: 0x096f, 0x8b9: 0x09ab, 0x8ba: 0x09b7, 0x8bb: 0x0a93,\n\t0x8bc: 0x0a9b, 0x8bd: 0x0ba3, 0x8be: 0x0bcb, 0x8bf: 0x0bd3,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0beb, 0x8c1: 0x0c97, 0x8c2: 0x0cc7, 0x8c3: 0x0ce7, 0x8c4: 0x0d57, 0x8c5: 0x0e1b,\n\t0x8c6: 0x0e37, 0x8c7: 0x0e67, 0x8c8: 0x0ebb, 0x8c9: 0x0edb, 0x8ca: 0x0f4f, 0x8cb: 0x102f,\n\t0x8cc: 0x104b, 0x8cd: 0x1053, 0x8ce: 0x104f, 0x8cf: 0x1057, 0x8d0: 0x105b, 0x8d1: 0x105f,\n\t0x8d2: 0x1073, 0x8d3: 0x1077, 0x8d4: 0x109b, 0x8d5: 0x10af, 0x8d6: 0x10cb, 0x8d7: 0x112f,\n\t0x8d8: 0x1137, 0x8d9: 0x113f, 0x8da: 0x1153, 0x8db: 0x117b, 0x8dc: 0x11cb, 0x8dd: 0x11ff,\n\t0x8de: 0x11ff, 0x8df: 0x1267, 0x8e0: 0x130f, 0x8e1: 0x1327, 0x8e2: 0x135b, 0x8e3: 0x135f,\n\t0x8e4: 0x13a3, 0x8e5: 0x13a7, 0x8e6: 0x13ff, 0x8e7: 0x1407, 0x8e8: 0x14db, 0x8e9: 0x151f,\n\t0x8ea: 0x1537, 0x8eb: 0x0b9b, 0x8ec: 0x171e, 0x8ed: 0x11e3,\n\t0x8f0: 0x06df, 0x8f1: 0x07e3, 0x8f2: 0x07a3, 0x8f3: 0x074b, 0x8f4: 0x078b, 0x8f5: 0x07b7,\n\t0x8f6: 0x0847, 0x8f7: 0x0863, 0x8f8: 0x094b, 0x8f9: 0x0937, 0x8fa: 0x0947, 0x8fb: 0x0963,\n\t0x8fc: 0x09af, 0x8fd: 0x09bf, 0x8fe: 0x0a03, 0x8ff: 0x0a0f,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0a2b, 0x901: 0x0a3b, 0x902: 0x0b23, 0x903: 0x0b2b, 0x904: 0x0b5b, 0x905: 0x0b7b,\n\t0x906: 0x0bab, 0x907: 0x0bc3, 0x908: 0x0bb3, 0x909: 0x0bd3, 0x90a: 0x0bc7, 0x90b: 0x0beb,\n\t0x90c: 0x0c07, 0x90d: 0x0c5f, 0x90e: 0x0c6b, 0x90f: 0x0c73, 0x910: 0x0c9b, 0x911: 0x0cdf,\n\t0x912: 0x0d0f, 0x913: 0x0d13, 0x914: 0x0d27, 0x915: 0x0da7, 0x916: 0x0db7, 0x917: 0x0e0f,\n\t0x918: 0x0e5b, 0x919: 0x0e53, 0x91a: 0x0e67, 0x91b: 0x0e83, 0x91c: 0x0ebb, 0x91d: 0x1013,\n\t0x91e: 0x0edf, 0x91f: 0x0f13, 0x920: 0x0f1f, 0x921: 0x0f5f, 0x922: 0x0f7b, 0x923: 0x0f9f,\n\t0x924: 0x0fc3, 0x925: 0x0fc7, 0x926: 0x0fe3, 0x927: 0x0fe7, 0x928: 0x0ff7, 0x929: 0x100b,\n\t0x92a: 0x1007, 0x92b: 0x1037, 0x92c: 0x10b3, 0x92d: 0x10cb, 0x92e: 0x10e3, 0x92f: 0x111b,\n\t0x930: 0x112f, 0x931: 0x114b, 0x932: 0x117b, 0x933: 0x122f, 0x934: 0x1257, 0x935: 0x12cb,\n\t0x936: 0x1313, 0x937: 0x131f, 0x938: 0x1327, 0x939: 0x133f, 0x93a: 0x1353, 0x93b: 0x1343,\n\t0x93c: 0x135b, 0x93d: 0x1357, 0x93e: 0x134f, 0x93f: 0x135f,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x136b, 0x941: 0x13a7, 0x942: 0x13e3, 0x943: 0x1413, 0x944: 0x144b, 0x945: 0x146b,\n\t0x946: 0x14b7, 0x947: 0x14db, 0x948: 0x14fb, 0x949: 0x150f, 0x94a: 0x151f, 0x94b: 0x152b,\n\t0x94c: 0x1537, 0x94d: 0x158b, 0x94e: 0x162b, 0x94f: 0x16b5, 0x950: 0x16b0, 0x951: 0x16e2,\n\t0x952: 0x0607, 0x953: 0x062f, 0x954: 0x0633, 0x955: 0x1764, 0x956: 0x1791, 0x957: 0x1809,\n\t0x958: 0x1617, 0x959: 0x1627,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x06fb, 0x981: 0x06f3, 0x982: 0x0703, 0x983: 0x1647, 0x984: 0x0747, 0x985: 0x0757,\n\t0x986: 0x075b, 0x987: 0x0763, 0x988: 0x076b, 0x989: 0x076f, 0x98a: 0x077b, 0x98b: 0x0773,\n\t0x98c: 0x05b3, 0x98d: 0x165b, 0x98e: 0x078f, 0x98f: 0x0793, 0x990: 0x0797, 0x991: 0x07b3,\n\t0x992: 0x164c, 0x993: 0x05b7, 0x994: 0x079f, 0x995: 0x07bf, 0x996: 0x1656, 0x997: 0x07cf,\n\t0x998: 0x07d7, 0x999: 0x0737, 0x99a: 0x07df, 0x99b: 0x07e3, 0x99c: 0x1831, 0x99d: 0x07ff,\n\t0x99e: 0x0807, 0x99f: 0x05bf, 0x9a0: 0x081f, 0x9a1: 0x0823, 0x9a2: 0x082b, 0x9a3: 0x082f,\n\t0x9a4: 0x05c3, 0x9a5: 0x0847, 0x9a6: 0x084b, 0x9a7: 0x0857, 0x9a8: 0x0863, 0x9a9: 0x0867,\n\t0x9aa: 0x086b, 0x9ab: 0x0873, 0x9ac: 0x0893, 0x9ad: 0x0897, 0x9ae: 0x089f, 0x9af: 0x08af,\n\t0x9b0: 0x08b7, 0x9b1: 0x08bb, 0x9b2: 0x08bb, 0x9b3: 0x08bb, 0x9b4: 0x166a, 0x9b5: 0x0e93,\n\t0x9b6: 0x08cf, 0x9b7: 0x08d7, 0x9b8: 0x166f, 0x9b9: 0x08e3, 0x9ba: 0x08eb, 0x9bb: 0x08f3,\n\t0x9bc: 0x091b, 0x9bd: 0x0907, 0x9be: 0x0913, 0x9bf: 0x0917,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x091f, 0x9c1: 0x0927, 0x9c2: 0x092b, 0x9c3: 0x0933, 0x9c4: 0x093b, 0x9c5: 0x093f,\n\t0x9c6: 0x093f, 0x9c7: 0x0947, 0x9c8: 0x094f, 0x9c9: 0x0953, 0x9ca: 0x095f, 0x9cb: 0x0983,\n\t0x9cc: 0x0967, 0x9cd: 0x0987, 0x9ce: 0x096b, 0x9cf: 0x0973, 0x9d0: 0x080b, 0x9d1: 0x09cf,\n\t0x9d2: 0x0997, 0x9d3: 0x099b, 0x9d4: 0x099f, 0x9d5: 0x0993, 0x9d6: 0x09a7, 0x9d7: 0x09a3,\n\t0x9d8: 0x09bb, 0x9d9: 0x1674, 0x9da: 0x09d7, 0x9db: 0x09db, 0x9dc: 0x09e3, 0x9dd: 0x09ef,\n\t0x9de: 0x09f7, 0x9df: 0x0a13, 0x9e0: 0x1679, 0x9e1: 0x167e, 0x9e2: 0x0a1f, 0x9e3: 0x0a23,\n\t0x9e4: 0x0a27, 0x9e5: 0x0a1b, 0x9e6: 0x0a2f, 0x9e7: 0x05c7, 0x9e8: 0x05cb, 0x9e9: 0x0a37,\n\t0x9ea: 0x0a3f, 0x9eb: 0x0a3f, 0x9ec: 0x1683, 0x9ed: 0x0a5b, 0x9ee: 0x0a5f, 0x9ef: 0x0a63,\n\t0x9f0: 0x0a6b, 0x9f1: 0x1688, 0x9f2: 0x0a73, 0x9f3: 0x0a77, 0x9f4: 0x0b4f, 0x9f5: 0x0a7f,\n\t0x9f6: 0x05cf, 0x9f7: 0x0a8b, 0x9f8: 0x0a9b, 0x9f9: 0x0aa7, 0x9fa: 0x0aa3, 0x9fb: 0x1692,\n\t0x9fc: 0x0aaf, 0x9fd: 0x1697, 0x9fe: 0x0abb, 0x9ff: 0x0ab7,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0abf, 0xa01: 0x0acf, 0xa02: 0x0ad3, 0xa03: 0x05d3, 0xa04: 0x0ae3, 0xa05: 0x0aeb,\n\t0xa06: 0x0aef, 0xa07: 0x0af3, 0xa08: 0x05d7, 0xa09: 0x169c, 0xa0a: 0x05db, 0xa0b: 0x0b0f,\n\t0xa0c: 0x0b13, 0xa0d: 0x0b17, 0xa0e: 0x0b1f, 0xa0f: 0x1863, 0xa10: 0x0b37, 0xa11: 0x16a6,\n\t0xa12: 0x16a6, 0xa13: 0x11d7, 0xa14: 0x0b47, 0xa15: 0x0b47, 0xa16: 0x05df, 0xa17: 0x16c9,\n\t0xa18: 0x179b, 0xa19: 0x0b57, 0xa1a: 0x0b5f, 0xa1b: 0x05e3, 0xa1c: 0x0b73, 0xa1d: 0x0b83,\n\t0xa1e: 0x0b87, 0xa1f: 0x0b8f, 0xa20: 0x0b9f, 0xa21: 0x05eb, 0xa22: 0x05e7, 0xa23: 0x0ba3,\n\t0xa24: 0x16ab, 0xa25: 0x0ba7, 0xa26: 0x0bbb, 0xa27: 0x0bbf, 0xa28: 0x0bc3, 0xa29: 0x0bbf,\n\t0xa2a: 0x0bcf, 0xa2b: 0x0bd3, 0xa2c: 0x0be3, 0xa2d: 0x0bdb, 0xa2e: 0x0bdf, 0xa2f: 0x0be7,\n\t0xa30: 0x0beb, 0xa31: 0x0bef, 0xa32: 0x0bfb, 0xa33: 0x0bff, 0xa34: 0x0c17, 0xa35: 0x0c1f,\n\t0xa36: 0x0c2f, 0xa37: 0x0c43, 0xa38: 0x16ba, 0xa39: 0x0c3f, 0xa3a: 0x0c33, 0xa3b: 0x0c4b,\n\t0xa3c: 0x0c53, 0xa3d: 0x0c67, 0xa3e: 0x16bf, 0xa3f: 0x0c6f,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0c63, 0xa41: 0x0c5b, 0xa42: 0x05ef, 0xa43: 0x0c77, 0xa44: 0x0c7f, 0xa45: 0x0c87,\n\t0xa46: 0x0c7b, 0xa47: 0x05f3, 0xa48: 0x0c97, 0xa49: 0x0c9f, 0xa4a: 0x16c4, 0xa4b: 0x0ccb,\n\t0xa4c: 0x0cff, 0xa4d: 0x0cdb, 0xa4e: 0x05ff, 0xa4f: 0x0ce7, 0xa50: 0x05fb, 0xa51: 0x05f7,\n\t0xa52: 0x07c3, 0xa53: 0x07c7, 0xa54: 0x0d03, 0xa55: 0x0ceb, 0xa56: 0x11ab, 0xa57: 0x0663,\n\t0xa58: 0x0d0f, 0xa59: 0x0d13, 0xa5a: 0x0d17, 0xa5b: 0x0d2b, 0xa5c: 0x0d23, 0xa5d: 0x16dd,\n\t0xa5e: 0x0603, 0xa5f: 0x0d3f, 0xa60: 0x0d33, 0xa61: 0x0d4f, 0xa62: 0x0d57, 0xa63: 0x16e7,\n\t0xa64: 0x0d5b, 0xa65: 0x0d47, 0xa66: 0x0d63, 0xa67: 0x0607, 0xa68: 0x0d67, 0xa69: 0x0d6b,\n\t0xa6a: 0x0d6f, 0xa6b: 0x0d7b, 0xa6c: 0x16ec, 0xa6d: 0x0d83, 0xa6e: 0x060b, 0xa6f: 0x0d8f,\n\t0xa70: 0x16f1, 0xa71: 0x0d93, 0xa72: 0x060f, 0xa73: 0x0d9f, 0xa74: 0x0dab, 0xa75: 0x0db7,\n\t0xa76: 0x0dbb, 0xa77: 0x16f6, 0xa78: 0x168d, 0xa79: 0x16fb, 0xa7a: 0x0ddb, 0xa7b: 0x1700,\n\t0xa7c: 0x0de7, 0xa7d: 0x0def, 0xa7e: 0x0ddf, 0xa7f: 0x0dfb,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x0e0b, 0xa81: 0x0e1b, 0xa82: 0x0e0f, 0xa83: 0x0e13, 0xa84: 0x0e1f, 0xa85: 0x0e23,\n\t0xa86: 0x1705, 0xa87: 0x0e07, 0xa88: 0x0e3b, 0xa89: 0x0e3f, 0xa8a: 0x0613, 0xa8b: 0x0e53,\n\t0xa8c: 0x0e4f, 0xa8d: 0x170a, 0xa8e: 0x0e33, 0xa8f: 0x0e6f, 0xa90: 0x170f, 0xa91: 0x1714,\n\t0xa92: 0x0e73, 0xa93: 0x0e87, 0xa94: 0x0e83, 0xa95: 0x0e7f, 0xa96: 0x0617, 0xa97: 0x0e8b,\n\t0xa98: 0x0e9b, 0xa99: 0x0e97, 0xa9a: 0x0ea3, 0xa9b: 0x1651, 0xa9c: 0x0eb3, 0xa9d: 0x1719,\n\t0xa9e: 0x0ebf, 0xa9f: 0x1723, 0xaa0: 0x0ed3, 0xaa1: 0x0edf, 0xaa2: 0x0ef3, 0xaa3: 0x1728,\n\t0xaa4: 0x0f07, 0xaa5: 0x0f0b, 0xaa6: 0x172d, 0xaa7: 0x1732, 0xaa8: 0x0f27, 0xaa9: 0x0f37,\n\t0xaaa: 0x061b, 0xaab: 0x0f3b, 0xaac: 0x061f, 0xaad: 0x061f, 0xaae: 0x0f53, 0xaaf: 0x0f57,\n\t0xab0: 0x0f5f, 0xab1: 0x0f63, 0xab2: 0x0f6f, 0xab3: 0x0623, 0xab4: 0x0f87, 0xab5: 0x1737,\n\t0xab6: 0x0fa3, 0xab7: 0x173c, 0xab8: 0x0faf, 0xab9: 0x16a1, 0xaba: 0x0fbf, 0xabb: 0x1741,\n\t0xabc: 0x1746, 0xabd: 0x174b, 0xabe: 0x0627, 0xabf: 0x062b,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x0ff7, 0xac1: 0x1755, 0xac2: 0x1750, 0xac3: 0x175a, 0xac4: 0x175f, 0xac5: 0x0fff,\n\t0xac6: 0x1003, 0xac7: 0x1003, 0xac8: 0x100b, 0xac9: 0x0633, 0xaca: 0x100f, 0xacb: 0x0637,\n\t0xacc: 0x063b, 0xacd: 0x1769, 0xace: 0x1023, 0xacf: 0x102b, 0xad0: 0x1037, 0xad1: 0x063f,\n\t0xad2: 0x176e, 0xad3: 0x105b, 0xad4: 0x1773, 0xad5: 0x1778, 0xad6: 0x107b, 0xad7: 0x1093,\n\t0xad8: 0x0643, 0xad9: 0x109b, 0xada: 0x109f, 0xadb: 0x10a3, 0xadc: 0x177d, 0xadd: 0x1782,\n\t0xade: 0x1782, 0xadf: 0x10bb, 0xae0: 0x0647, 0xae1: 0x1787, 0xae2: 0x10cf, 0xae3: 0x10d3,\n\t0xae4: 0x064b, 0xae5: 0x178c, 0xae6: 0x10ef, 0xae7: 0x064f, 0xae8: 0x10ff, 0xae9: 0x10f7,\n\t0xaea: 0x1107, 0xaeb: 0x1796, 0xaec: 0x111f, 0xaed: 0x0653, 0xaee: 0x112b, 0xaef: 0x1133,\n\t0xaf0: 0x1143, 0xaf1: 0x0657, 0xaf2: 0x17a0, 0xaf3: 0x17a5, 0xaf4: 0x065b, 0xaf5: 0x17aa,\n\t0xaf6: 0x115b, 0xaf7: 0x17af, 0xaf8: 0x1167, 0xaf9: 0x1173, 0xafa: 0x117b, 0xafb: 0x17b4,\n\t0xafc: 0x17b9, 0xafd: 0x118f, 0xafe: 0x17be, 0xaff: 0x1197,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x16ce, 0xb01: 0x065f, 0xb02: 0x11af, 0xb03: 0x11b3, 0xb04: 0x0667, 0xb05: 0x11b7,\n\t0xb06: 0x0a33, 0xb07: 0x17c3, 0xb08: 0x17c8, 0xb09: 0x16d3, 0xb0a: 0x16d8, 0xb0b: 0x11d7,\n\t0xb0c: 0x11db, 0xb0d: 0x13f3, 0xb0e: 0x066b, 0xb0f: 0x1207, 0xb10: 0x1203, 0xb11: 0x120b,\n\t0xb12: 0x083f, 0xb13: 0x120f, 0xb14: 0x1213, 0xb15: 0x1217, 0xb16: 0x121f, 0xb17: 0x17cd,\n\t0xb18: 0x121b, 0xb19: 0x1223, 0xb1a: 0x1237, 0xb1b: 0x123b, 0xb1c: 0x1227, 0xb1d: 0x123f,\n\t0xb1e: 0x1253, 0xb1f: 0x1267, 0xb20: 0x1233, 0xb21: 0x1247, 0xb22: 0x124b, 0xb23: 0x124f,\n\t0xb24: 0x17d2, 0xb25: 0x17dc, 0xb26: 0x17d7, 0xb27: 0x066f, 0xb28: 0x126f, 0xb29: 0x1273,\n\t0xb2a: 0x127b, 0xb2b: 0x17f0, 0xb2c: 0x127f, 0xb2d: 0x17e1, 0xb2e: 0x0673, 0xb2f: 0x0677,\n\t0xb30: 0x17e6, 0xb31: 0x17eb, 0xb32: 0x067b, 0xb33: 0x129f, 0xb34: 0x12a3, 0xb35: 0x12a7,\n\t0xb36: 0x12ab, 0xb37: 0x12b7, 0xb38: 0x12b3, 0xb39: 0x12bf, 0xb3a: 0x12bb, 0xb3b: 0x12cb,\n\t0xb3c: 0x12c3, 0xb3d: 0x12c7, 0xb3e: 0x12cf, 0xb3f: 0x067f,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x12d7, 0xb41: 0x12db, 0xb42: 0x0683, 0xb43: 0x12eb, 0xb44: 0x12ef, 0xb45: 0x17f5,\n\t0xb46: 0x12fb, 0xb47: 0x12ff, 0xb48: 0x0687, 0xb49: 0x130b, 0xb4a: 0x05bb, 0xb4b: 0x17fa,\n\t0xb4c: 0x17ff, 0xb4d: 0x068b, 0xb4e: 0x068f, 0xb4f: 0x1337, 0xb50: 0x134f, 0xb51: 0x136b,\n\t0xb52: 0x137b, 0xb53: 0x1804, 0xb54: 0x138f, 0xb55: 0x1393, 0xb56: 0x13ab, 0xb57: 0x13b7,\n\t0xb58: 0x180e, 0xb59: 0x1660, 0xb5a: 0x13c3, 0xb5b: 0x13bf, 0xb5c: 0x13cb, 0xb5d: 0x1665,\n\t0xb5e: 0x13d7, 0xb5f: 0x13e3, 0xb60: 0x1813, 0xb61: 0x1818, 0xb62: 0x1423, 0xb63: 0x142f,\n\t0xb64: 0x1437, 0xb65: 0x181d, 0xb66: 0x143b, 0xb67: 0x1467, 0xb68: 0x1473, 0xb69: 0x1477,\n\t0xb6a: 0x146f, 0xb6b: 0x1483, 0xb6c: 0x1487, 0xb6d: 0x1822, 0xb6e: 0x1493, 0xb6f: 0x0693,\n\t0xb70: 0x149b, 0xb71: 0x1827, 0xb72: 0x0697, 0xb73: 0x14d3, 0xb74: 0x0ac3, 0xb75: 0x14eb,\n\t0xb76: 0x182c, 0xb77: 0x1836, 0xb78: 0x069b, 0xb79: 0x069f, 0xb7a: 0x1513, 0xb7b: 0x183b,\n\t0xb7c: 0x06a3, 0xb7d: 0x1840, 0xb7e: 0x152b, 0xb7f: 0x152b,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x1533, 0xb81: 0x1845, 0xb82: 0x154b, 0xb83: 0x06a7, 0xb84: 0x155b, 0xb85: 0x1567,\n\t0xb86: 0x156f, 0xb87: 0x1577, 0xb88: 0x06ab, 0xb89: 0x184a, 0xb8a: 0x158b, 0xb8b: 0x15a7,\n\t0xb8c: 0x15b3, 0xb8d: 0x06af, 0xb8e: 0x06b3, 0xb8f: 0x15b7, 0xb90: 0x184f, 0xb91: 0x06b7,\n\t0xb92: 0x1854, 0xb93: 0x1859, 0xb94: 0x185e, 0xb95: 0x15db, 0xb96: 0x06bb, 0xb97: 0x15ef,\n\t0xb98: 0x15f7, 0xb99: 0x15fb, 0xb9a: 0x1603, 0xb9b: 0x160b, 0xb9c: 0x1613, 0xb9d: 0x1868,\n}\n\n// nfcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x2d, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2e, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x2f, 0xcb: 0x30, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x31,\n\t0xd0: 0x09, 0xd1: 0x32, 0xd2: 0x33, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x34,\n\t0xd8: 0x35, 0xd9: 0x0c, 0xdb: 0x36, 0xdc: 0x37, 0xdd: 0x38, 0xdf: 0x39,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x3a, 0x121: 0x3b, 0x123: 0x3c, 0x124: 0x3d, 0x125: 0x3e, 0x126: 0x3f, 0x127: 0x40,\n\t0x128: 0x41, 0x129: 0x42, 0x12a: 0x43, 0x12b: 0x44, 0x12c: 0x3f, 0x12d: 0x45, 0x12e: 0x46, 0x12f: 0x47,\n\t0x131: 0x48, 0x132: 0x49, 0x133: 0x4a, 0x134: 0x4b, 0x135: 0x4c, 0x137: 0x4d,\n\t0x138: 0x4e, 0x139: 0x4f, 0x13a: 0x50, 0x13b: 0x51, 0x13c: 0x52, 0x13d: 0x53, 0x13e: 0x54, 0x13f: 0x55,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x56, 0x142: 0x57, 0x144: 0x58, 0x145: 0x59, 0x146: 0x5a, 0x147: 0x5b,\n\t0x14d: 0x5c,\n\t0x15c: 0x5d, 0x15f: 0x5e,\n\t0x162: 0x5f, 0x164: 0x60,\n\t0x168: 0x61, 0x169: 0x62, 0x16a: 0x63, 0x16c: 0x0d, 0x16d: 0x64, 0x16e: 0x65, 0x16f: 0x66,\n\t0x170: 0x67, 0x173: 0x68, 0x177: 0x0e,\n\t0x178: 0x0f, 0x179: 0x10, 0x17a: 0x11, 0x17b: 0x12, 0x17c: 0x13, 0x17d: 0x14, 0x17e: 0x15, 0x17f: 0x16,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x69, 0x183: 0x6a, 0x184: 0x6b, 0x186: 0x6c, 0x187: 0x6d,\n\t0x188: 0x6e, 0x189: 0x17, 0x18a: 0x18, 0x18b: 0x6f, 0x18c: 0x70,\n\t0x1ab: 0x71,\n\t0x1b3: 0x72, 0x1b5: 0x73, 0x1b7: 0x74,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x75, 0x1c1: 0x19, 0x1c2: 0x1a, 0x1c3: 0x1b, 0x1c4: 0x76, 0x1c5: 0x77,\n\t0x1c9: 0x78, 0x1cc: 0x79, 0x1cd: 0x7a,\n\t// Block 0x8, offset 0x200\n\t0x219: 0x7b, 0x21a: 0x7c, 0x21b: 0x7d,\n\t0x220: 0x7e, 0x223: 0x7f, 0x224: 0x80, 0x225: 0x81, 0x226: 0x82, 0x227: 0x83,\n\t0x22a: 0x84, 0x22b: 0x85, 0x22f: 0x86,\n\t0x230: 0x87, 0x231: 0x88, 0x232: 0x89, 0x233: 0x8a, 0x234: 0x8b, 0x235: 0x8c, 0x236: 0x8d, 0x237: 0x87,\n\t0x238: 0x88, 0x239: 0x89, 0x23a: 0x8a, 0x23b: 0x8b, 0x23c: 0x8c, 0x23d: 0x8d, 0x23e: 0x87, 0x23f: 0x88,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x89, 0x241: 0x8a, 0x242: 0x8b, 0x243: 0x8c, 0x244: 0x8d, 0x245: 0x87, 0x246: 0x88, 0x247: 0x89,\n\t0x248: 0x8a, 0x249: 0x8b, 0x24a: 0x8c, 0x24b: 0x8d, 0x24c: 0x87, 0x24d: 0x88, 0x24e: 0x89, 0x24f: 0x8a,\n\t0x250: 0x8b, 0x251: 0x8c, 0x252: 0x8d, 0x253: 0x87, 0x254: 0x88, 0x255: 0x89, 0x256: 0x8a, 0x257: 0x8b,\n\t0x258: 0x8c, 0x259: 0x8d, 0x25a: 0x87, 0x25b: 0x88, 0x25c: 0x89, 0x25d: 0x8a, 0x25e: 0x8b, 0x25f: 0x8c,\n\t0x260: 0x8d, 0x261: 0x87, 0x262: 0x88, 0x263: 0x89, 0x264: 0x8a, 0x265: 0x8b, 0x266: 0x8c, 0x267: 0x8d,\n\t0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26c: 0x8b, 0x26d: 0x8c, 0x26e: 0x8d, 0x26f: 0x87,\n\t0x270: 0x88, 0x271: 0x89, 0x272: 0x8a, 0x273: 0x8b, 0x274: 0x8c, 0x275: 0x8d, 0x276: 0x87, 0x277: 0x88,\n\t0x278: 0x89, 0x279: 0x8a, 0x27a: 0x8b, 0x27b: 0x8c, 0x27c: 0x8d, 0x27d: 0x87, 0x27e: 0x88, 0x27f: 0x89,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x8a, 0x281: 0x8b, 0x282: 0x8c, 0x283: 0x8d, 0x284: 0x87, 0x285: 0x88, 0x286: 0x89, 0x287: 0x8a,\n\t0x288: 0x8b, 0x289: 0x8c, 0x28a: 0x8d, 0x28b: 0x87, 0x28c: 0x88, 0x28d: 0x89, 0x28e: 0x8a, 0x28f: 0x8b,\n\t0x290: 0x8c, 0x291: 0x8d, 0x292: 0x87, 0x293: 0x88, 0x294: 0x89, 0x295: 0x8a, 0x296: 0x8b, 0x297: 0x8c,\n\t0x298: 0x8d, 0x299: 0x87, 0x29a: 0x88, 0x29b: 0x89, 0x29c: 0x8a, 0x29d: 0x8b, 0x29e: 0x8c, 0x29f: 0x8d,\n\t0x2a0: 0x87, 0x2a1: 0x88, 0x2a2: 0x89, 0x2a3: 0x8a, 0x2a4: 0x8b, 0x2a5: 0x8c, 0x2a6: 0x8d, 0x2a7: 0x87,\n\t0x2a8: 0x88, 0x2a9: 0x89, 0x2aa: 0x8a, 0x2ab: 0x8b, 0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x87, 0x2af: 0x88,\n\t0x2b0: 0x89, 0x2b1: 0x8a, 0x2b2: 0x8b, 0x2b3: 0x8c, 0x2b4: 0x8d, 0x2b5: 0x87, 0x2b6: 0x88, 0x2b7: 0x89,\n\t0x2b8: 0x8a, 0x2b9: 0x8b, 0x2ba: 0x8c, 0x2bb: 0x8d, 0x2bc: 0x87, 0x2bd: 0x88, 0x2be: 0x89, 0x2bf: 0x8a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x8b, 0x2c1: 0x8c, 0x2c2: 0x8d, 0x2c3: 0x87, 0x2c4: 0x88, 0x2c5: 0x89, 0x2c6: 0x8a, 0x2c7: 0x8b,\n\t0x2c8: 0x8c, 0x2c9: 0x8d, 0x2ca: 0x87, 0x2cb: 0x88, 0x2cc: 0x89, 0x2cd: 0x8a, 0x2ce: 0x8b, 0x2cf: 0x8c,\n\t0x2d0: 0x8d, 0x2d1: 0x87, 0x2d2: 0x88, 0x2d3: 0x89, 0x2d4: 0x8a, 0x2d5: 0x8b, 0x2d6: 0x8c, 0x2d7: 0x8d,\n\t0x2d8: 0x87, 0x2d9: 0x88, 0x2da: 0x89, 0x2db: 0x8a, 0x2dc: 0x8b, 0x2dd: 0x8c, 0x2de: 0x8e,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x1c, 0x325: 0x1d, 0x326: 0x1e, 0x327: 0x1f,\n\t0x328: 0x20, 0x329: 0x21, 0x32a: 0x22, 0x32b: 0x23, 0x32c: 0x8f, 0x32d: 0x90, 0x32e: 0x91,\n\t0x331: 0x92, 0x332: 0x93, 0x333: 0x94, 0x334: 0x95,\n\t0x338: 0x96, 0x339: 0x97, 0x33a: 0x98, 0x33b: 0x99, 0x33e: 0x9a, 0x33f: 0x9b,\n\t// Block 0xd, offset 0x340\n\t0x347: 0x9c,\n\t0x34b: 0x9d, 0x34d: 0x9e,\n\t0x368: 0x9f, 0x36b: 0xa0,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xa1, 0x382: 0xa2, 0x384: 0xa3, 0x385: 0x82, 0x387: 0xa4,\n\t0x388: 0xa5, 0x38b: 0xa6, 0x38c: 0x3f, 0x38d: 0xa7,\n\t0x391: 0xa8, 0x392: 0xa9, 0x393: 0xaa, 0x396: 0xab, 0x397: 0xac,\n\t0x398: 0x73, 0x39a: 0xad, 0x39c: 0xae,\n\t0x3a8: 0xaf, 0x3a9: 0xb0, 0x3aa: 0xb1,\n\t0x3b0: 0x73, 0x3b5: 0xb2,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xb3, 0x3ec: 0xb4,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xb5,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xb6, 0x446: 0xb7, 0x447: 0xb8,\n\t0x449: 0xb9,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xba,\n\t0x4a3: 0xbb, 0x4a5: 0xbc,\n\t// Block 0x13, offset 0x4c0\n\t0x4c8: 0xbd,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x24, 0x521: 0x25, 0x522: 0x26, 0x523: 0x27, 0x524: 0x28, 0x525: 0x29, 0x526: 0x2a, 0x527: 0x2b,\n\t0x528: 0x2c,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfcSparseOffset: 145 entries, 290 bytes\nvar nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x62, 0x67, 0x69, 0x7a, 0x82, 0x89, 0x8c, 0x93, 0x97, 0x9b, 0x9d, 0x9f, 0xa8, 0xac, 0xb3, 0xb8, 0xbb, 0xc5, 0xc8, 0xcf, 0xd7, 0xda, 0xdc, 0xde, 0xe0, 0xe5, 0xf6, 0x102, 0x104, 0x10a, 0x10c, 0x10e, 0x110, 0x112, 0x114, 0x116, 0x119, 0x11c, 0x11e, 0x121, 0x124, 0x128, 0x12d, 0x136, 0x138, 0x13b, 0x13d, 0x148, 0x14c, 0x15a, 0x15d, 0x163, 0x169, 0x174, 0x178, 0x17a, 0x17c, 0x17e, 0x180, 0x182, 0x188, 0x18c, 0x18e, 0x190, 0x198, 0x19c, 0x19f, 0x1a1, 0x1a3, 0x1a5, 0x1a8, 0x1aa, 0x1ac, 0x1ae, 0x1b0, 0x1b6, 0x1b9, 0x1bb, 0x1c2, 0x1c8, 0x1ce, 0x1d6, 0x1dc, 0x1e2, 0x1e8, 0x1ec, 0x1fa, 0x203, 0x206, 0x209, 0x20b, 0x20e, 0x210, 0x214, 0x219, 0x21b, 0x21d, 0x222, 0x228, 0x22a, 0x22c, 0x22e, 0x234, 0x237, 0x23a, 0x242, 0x249, 0x24c, 0x24f, 0x251, 0x259, 0x25c, 0x263, 0x266, 0x26c, 0x26e, 0x271, 0x273, 0x275, 0x277, 0x279, 0x27c, 0x27e, 0x280, 0x282, 0x28f, 0x299, 0x29b, 0x29d, 0x2a3, 0x2a5, 0x2a8}\n\n// nfcSparseValues: 682 entries, 2728 bytes\nvar nfcSparseValues = [682]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0xa100, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8100, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb8, hi: 0xb8},\n\t// Block 0x1, offset 0x5\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46e2, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4714, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t// Block 0x3, offset 0xb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x98, hi: 0x9d},\n\t// Block 0x4, offset 0xd\n\t{value: 0x0006, lo: 0x0a},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x85, hi: 0x85},\n\t{value: 0xa000, lo: 0x89, hi: 0x89},\n\t{value: 0x4840, lo: 0x8a, hi: 0x8a},\n\t{value: 0x485e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x36c7, lo: 0x8c, hi: 0x8c},\n\t{value: 0x36df, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4876, lo: 0x8e, hi: 0x8e},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x36fd, lo: 0x93, hi: 0x94},\n\t// Block 0x5, offset 0x18\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37a5, lo: 0x90, hi: 0x90},\n\t{value: 0x37b1, lo: 0x91, hi: 0x91},\n\t{value: 0x379f, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3817, lo: 0x97, hi: 0x97},\n\t{value: 0x37e1, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37c9, lo: 0x9d, hi: 0x9d},\n\t{value: 0x37f3, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x381d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3823, lo: 0xb7, hi: 0xb7},\n\t// Block 0x6, offset 0x28\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x83, hi: 0x87},\n\t// Block 0x7, offset 0x2a\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8113, lo: 0x81, hi: 0x82},\n\t{value: 0x8132, lo: 0x84, hi: 0x84},\n\t{value: 0x812d, lo: 0x85, hi: 0x85},\n\t{value: 0x810d, lo: 0x87, hi: 0x87},\n\t// Block 0x8, offset 0x2f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x97},\n\t{value: 0x8119, lo: 0x98, hi: 0x98},\n\t{value: 0x811a, lo: 0x99, hi: 0x99},\n\t{value: 0x811b, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3841, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3847, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3853, lo: 0xa4, hi: 0xa4},\n\t{value: 0x384d, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3859, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x9, offset 0x3a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x386b, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x385f, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3865, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8132, lo: 0x96, hi: 0x9c},\n\t{value: 0x8132, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t// Block 0xa, offset 0x49\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x811f, lo: 0x91, hi: 0x91},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8132, lo: 0xba, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8132, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8132, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb, offset 0x56\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8132, lo: 0x80, hi: 0x80},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x83},\n\t{value: 0x812d, lo: 0x84, hi: 0x85},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x812d, lo: 0x88, hi: 0x89},\n\t{value: 0x8132, lo: 0x8a, hi: 0x8a},\n\t// Block 0xc, offset 0x5e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xab, hi: 0xb1},\n\t{value: 0x812d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb3},\n\t// Block 0xd, offset 0x62\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0x96, hi: 0x99},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8132, lo: 0xa9, hi: 0xad},\n\t// Block 0xe, offset 0x67\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x99, hi: 0x9b},\n\t// Block 0xf, offset 0x69\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x8132, lo: 0x94, hi: 0xa1},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8132, lo: 0xaa, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xaf},\n\t{value: 0x8116, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8117, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8118, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x812d, lo: 0xb9, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbf},\n\t// Block 0x10, offset 0x7a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3ed8, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ee0, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3ee8, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9902, lo: 0xbc, hi: 0xbc},\n\t// Block 0x11, offset 0x82\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x91, hi: 0x91},\n\t{value: 0x812d, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x93, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x94},\n\t{value: 0x451c, lo: 0x98, hi: 0x9f},\n\t// Block 0x12, offset 0x89\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x13, offset 0x8c\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2c9e, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x455c, lo: 0x9c, hi: 0x9d},\n\t{value: 0x456c, lo: 0x9f, hi: 0x9f},\n\t// Block 0x14, offset 0x93\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4594, lo: 0xb3, hi: 0xb3},\n\t{value: 0x459c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x15, offset 0x97\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4574, lo: 0x99, hi: 0x9b},\n\t{value: 0x458c, lo: 0x9e, hi: 0x9e},\n\t// Block 0x16, offset 0x9b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x17, offset 0x9d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t// Block 0x18, offset 0x9f\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cb6, lo: 0x88, hi: 0x88},\n\t{value: 0x2cae, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cbe, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45a4, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45ac, lo: 0x9d, hi: 0x9d},\n\t// Block 0x19, offset 0xa8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cc6, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1a, offset 0xac\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cce, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2cde, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cd6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1b, offset 0xb3\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ef0, lo: 0x88, hi: 0x88},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8120, lo: 0x95, hi: 0x96},\n\t// Block 0x1c, offset 0xb8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1d, offset 0xbb\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2ce6, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cee, lo: 0x87, hi: 0x87},\n\t{value: 0x2cf6, lo: 0x88, hi: 0x88},\n\t{value: 0x2f50, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2dd8, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1e, offset 0xc5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1f, offset 0xc8\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cfe, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d0e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d06, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x20, offset 0xcf\n\t{value: 0x6bea, lo: 0x07},\n\t{value: 0x9904, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ef8, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f58, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2de3, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d16, lo: 0x9e, hi: 0x9f},\n\t// Block 0x21, offset 0xd7\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8122, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x22, offset 0xda\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8123, lo: 0x88, hi: 0x8b},\n\t// Block 0x23, offset 0xdc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8124, lo: 0xb8, hi: 0xb9},\n\t// Block 0x24, offset 0xde\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8125, lo: 0x88, hi: 0x8b},\n\t// Block 0x25, offset 0xe0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x812d, lo: 0x98, hi: 0x99},\n\t{value: 0x812d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812b, lo: 0xb9, hi: 0xb9},\n\t// Block 0x26, offset 0xe5\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2644, lo: 0x83, hi: 0x83},\n\t{value: 0x264b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2652, lo: 0x92, hi: 0x92},\n\t{value: 0x2659, lo: 0x97, hi: 0x97},\n\t{value: 0x2660, lo: 0x9c, hi: 0x9c},\n\t{value: 0x263d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8126, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8127, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a84, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8128, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a8d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45b4, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8200, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45bc, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8200, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8127, lo: 0xba, hi: 0xbd},\n\t// Block 0x27, offset 0xf6\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8127, lo: 0x80, hi: 0x80},\n\t{value: 0x4a96, lo: 0x81, hi: 0x81},\n\t{value: 0x8132, lo: 0x82, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0x86, hi: 0x87},\n\t{value: 0x266e, lo: 0x93, hi: 0x93},\n\t{value: 0x2675, lo: 0x9d, hi: 0x9d},\n\t{value: 0x267c, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2683, lo: 0xa7, hi: 0xa7},\n\t{value: 0x268a, lo: 0xac, hi: 0xac},\n\t{value: 0x2667, lo: 0xb9, hi: 0xb9},\n\t// Block 0x28, offset 0x102\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x86, hi: 0x86},\n\t// Block 0x29, offset 0x104\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d1e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x2a, offset 0x10a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2b, offset 0x10c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x10e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x110\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x112\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x114\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x116\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x94, hi: 0x94},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x119\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x11c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8131, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x11e\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812e, lo: 0xb9, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x121\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x97, hi: 0x97},\n\t{value: 0x812d, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x124\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8132, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x128\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812d, lo: 0xb5, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x37, offset 0x12d\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d66, lo: 0x80, hi: 0x80},\n\t{value: 0x2d6e, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d76, lo: 0x83, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xac},\n\t{value: 0x8132, lo: 0xad, hi: 0xb3},\n\t// Block 0x38, offset 0x136\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xaa, hi: 0xab},\n\t// Block 0x39, offset 0x138\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8104, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3a, offset 0x13b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3b, offset 0x13d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812d, lo: 0x95, hi: 0x99},\n\t{value: 0x8132, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812d, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t{value: 0x8132, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3c, offset 0x148\n\t{value: 0x0004, lo: 0x03},\n\t{value: 0x0433, lo: 0x80, hi: 0x81},\n\t{value: 0x8100, lo: 0x97, hi: 0x97},\n\t{value: 0x8100, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3d, offset 0x14c\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8132, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8132, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8132, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812d, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t// Block 0x3e, offset 0x15a\n\t{value: 0x427b, lo: 0x02},\n\t{value: 0x01b8, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0057, lo: 0xaa, hi: 0xab},\n\t// Block 0x3f, offset 0x15d\n\t{value: 0x0007, lo: 0x05},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bb9, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bc7, lo: 0xae, hi: 0xae},\n\t// Block 0x40, offset 0x163\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3bce, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bd5, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x41, offset 0x169\n\t{value: 0x6408, lo: 0x0a},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3be3, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3bea, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3bf1, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3bf8, lo: 0xa4, hi: 0xa5},\n\t{value: 0x3bff, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x42, offset 0x174\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c68, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3c92, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cbc, lo: 0xaa, hi: 0xad},\n\t// Block 0x43, offset 0x178\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048b, lo: 0xa9, hi: 0xaa},\n\t// Block 0x44, offset 0x17a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44dd, lo: 0x9c, hi: 0x9c},\n\t// Block 0x45, offset 0x17c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xaf, hi: 0xb1},\n\t// Block 0x46, offset 0x17e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x47, offset 0x180\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa0, hi: 0xbf},\n\t// Block 0x48, offset 0x182\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812c, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8131, lo: 0xab, hi: 0xab},\n\t{value: 0x8133, lo: 0xac, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x812f, lo: 0xae, hi: 0xaf},\n\t// Block 0x49, offset 0x188\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4a9f, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4a9f, lo: 0xb5, hi: 0xb6},\n\t{value: 0x4a9f, lo: 0xba, hi: 0xbf},\n\t// Block 0x4a, offset 0x18c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4a9f, lo: 0x8f, hi: 0xa3},\n\t// Block 0x4b, offset 0x18e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xae, hi: 0xbe},\n\t// Block 0x4c, offset 0x190\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x8100, lo: 0x84, hi: 0x84},\n\t{value: 0x8100, lo: 0x87, hi: 0x87},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t{value: 0x8100, lo: 0x9e, hi: 0x9e},\n\t{value: 0x8100, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8100, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8100, lo: 0xbb, hi: 0xbb},\n\t// Block 0x4d, offset 0x198\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8100, lo: 0x80, hi: 0x80},\n\t{value: 0x8100, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8100, lo: 0x8e, hi: 0x8e},\n\t// Block 0x4e, offset 0x19c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb4, hi: 0xbd},\n\t// Block 0x4f, offset 0x19f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9f},\n\t// Block 0x50, offset 0x1a1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb1},\n\t// Block 0x51, offset 0x1a3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t// Block 0x52, offset 0x1a5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xa0, hi: 0xb1},\n\t// Block 0x53, offset 0x1a8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xab, hi: 0xad},\n\t// Block 0x54, offset 0x1aa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x93, hi: 0x93},\n\t// Block 0x55, offset 0x1ac\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb3, hi: 0xb3},\n\t// Block 0x56, offset 0x1ae\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t// Block 0x57, offset 0x1b0\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbf},\n\t// Block 0x58, offset 0x1b6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t// Block 0x59, offset 0x1b9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xad, hi: 0xad},\n\t// Block 0x5a, offset 0x1bb\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x5b, offset 0x1c2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x5c, offset 0x1c8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x5d, offset 0x1ce\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x5e, offset 0x1d6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x5f, offset 0x1dc\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x60, offset 0x1e2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x61, offset 0x1e8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x62, offset 0x1ec\n\t{value: 0x0006, lo: 0x0d},\n\t{value: 0x4390, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8115, lo: 0x9e, hi: 0x9e},\n\t{value: 0x4402, lo: 0x9f, hi: 0x9f},\n\t{value: 0x43f0, lo: 0xaa, hi: 0xab},\n\t{value: 0x44f4, lo: 0xac, hi: 0xac},\n\t{value: 0x44fc, lo: 0xad, hi: 0xad},\n\t{value: 0x4348, lo: 0xae, hi: 0xb1},\n\t{value: 0x4366, lo: 0xb2, hi: 0xb4},\n\t{value: 0x437e, lo: 0xb5, hi: 0xb6},\n\t{value: 0x438a, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4396, lo: 0xb9, hi: 0xbb},\n\t{value: 0x43ae, lo: 0xbc, hi: 0xbc},\n\t{value: 0x43b4, lo: 0xbe, hi: 0xbe},\n\t// Block 0x63, offset 0x1fa\n\t{value: 0x0006, lo: 0x08},\n\t{value: 0x43ba, lo: 0x80, hi: 0x81},\n\t{value: 0x43c6, lo: 0x83, hi: 0x84},\n\t{value: 0x43d8, lo: 0x86, hi: 0x89},\n\t{value: 0x43fc, lo: 0x8a, hi: 0x8a},\n\t{value: 0x4378, lo: 0x8b, hi: 0x8b},\n\t{value: 0x4360, lo: 0x8c, hi: 0x8c},\n\t{value: 0x43a8, lo: 0x8d, hi: 0x8d},\n\t{value: 0x43d2, lo: 0x8e, hi: 0x8e},\n\t// Block 0x64, offset 0x203\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0xa4, hi: 0xa5},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb1},\n\t// Block 0x65, offset 0x206\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x9b, hi: 0x9d},\n\t{value: 0x8200, lo: 0x9e, hi: 0xa3},\n\t// Block 0x66, offset 0x209\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t// Block 0x67, offset 0x20b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x99, hi: 0x99},\n\t{value: 0x8200, lo: 0xb2, hi: 0xb4},\n\t// Block 0x68, offset 0x20e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xbc, hi: 0xbd},\n\t// Block 0x69, offset 0x210\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa6},\n\t{value: 0x812d, lo: 0xa7, hi: 0xad},\n\t{value: 0x8132, lo: 0xae, hi: 0xaf},\n\t// Block 0x6a, offset 0x214\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8100, lo: 0x89, hi: 0x8c},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb2},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb6, hi: 0xbf},\n\t// Block 0x6b, offset 0x219\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x81, hi: 0x8c},\n\t// Block 0x6c, offset 0x21b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xb5, hi: 0xba},\n\t// Block 0x6d, offset 0x21d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x4a9f, lo: 0x9e, hi: 0x9f},\n\t{value: 0x4a9f, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4a9f, lo: 0xa5, hi: 0xa6},\n\t{value: 0x4a9f, lo: 0xaa, hi: 0xaf},\n\t// Block 0x6e, offset 0x222\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x4a9f, lo: 0x82, hi: 0x87},\n\t{value: 0x4a9f, lo: 0x8a, hi: 0x8f},\n\t{value: 0x4a9f, lo: 0x92, hi: 0x97},\n\t{value: 0x4a9f, lo: 0x9a, hi: 0x9c},\n\t{value: 0x8100, lo: 0xa3, hi: 0xa3},\n\t// Block 0x6f, offset 0x228\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x70, offset 0x22a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xa0, hi: 0xa0},\n\t// Block 0x71, offset 0x22c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb6, hi: 0xba},\n\t// Block 0x72, offset 0x22e\n\t{value: 0x002c, lo: 0x05},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x73, offset 0x234\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t// Block 0x74, offset 0x237\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x75, offset 0x23a\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4238, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4242, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x424c, lo: 0xab, hi: 0xab},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x76, offset 0x242\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8132, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d7e, lo: 0xae, hi: 0xae},\n\t{value: 0x2d88, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8104, lo: 0xb3, hi: 0xb4},\n\t// Block 0x77, offset 0x249\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x78, offset 0x24c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8102, lo: 0xb6, hi: 0xb6},\n\t// Block 0x79, offset 0x24f\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8102, lo: 0xa9, hi: 0xaa},\n\t// Block 0x7a, offset 0x251\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d92, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d9c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8132, lo: 0xa6, hi: 0xac},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t// Block 0x7b, offset 0x259\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x86, hi: 0x86},\n\t// Block 0x7c, offset 0x25c\n\t{value: 0x6b5a, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2db0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2da6, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dba, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7d, offset 0x263\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x83, hi: 0x83},\n\t// Block 0x7e, offset 0x266\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dc4, lo: 0xba, hi: 0xba},\n\t{value: 0x2dce, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7f, offset 0x26c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0x80, hi: 0x80},\n\t// Block 0x80, offset 0x26e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x81, offset 0x271\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xab, hi: 0xab},\n\t// Block 0x82, offset 0x273\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x83, offset 0x275\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x87, hi: 0x87},\n\t// Block 0x84, offset 0x277\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x99, hi: 0x99},\n\t// Block 0x85, offset 0x279\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0x82, hi: 0x82},\n\t{value: 0x8104, lo: 0x84, hi: 0x85},\n\t// Block 0x86, offset 0x27c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x87, offset 0x27e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb6},\n\t// Block 0x88, offset 0x280\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x89, offset 0x282\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45cc, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45d6, lo: 0x9f, hi: 0x9f},\n\t{value: 0x460a, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4618, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4626, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4634, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4642, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812b, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8130, lo: 0xad, hi: 0xad},\n\t{value: 0x812b, lo: 0xae, hi: 0xb2},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8a, offset 0x28f\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812d, lo: 0x80, hi: 0x82},\n\t{value: 0x8132, lo: 0x85, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8132, lo: 0xaa, hi: 0xad},\n\t{value: 0x45e0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x45ea, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4650, lo: 0xbd, hi: 0xbd},\n\t{value: 0x466c, lo: 0xbe, hi: 0xbe},\n\t{value: 0x465e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x8b, offset 0x299\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x467a, lo: 0x80, hi: 0x80},\n\t// Block 0x8c, offset 0x29b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x82, hi: 0x84},\n\t// Block 0x8d, offset 0x29d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0x80, hi: 0x86},\n\t{value: 0x8132, lo: 0x88, hi: 0x98},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8132, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa6, hi: 0xaa},\n\t// Block 0x8e, offset 0x2a3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x90, hi: 0x96},\n\t// Block 0x8f, offset 0x2a5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x84, hi: 0x89},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x90, offset 0x2a8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x93, hi: 0x93},\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfkcTrie. Total size: 17104 bytes (16.70 KiB). Checksum: d985061cf5307b35.\ntype nfkcTrie struct{}\n\nfunc newNfkcTrie(i int) *nfkcTrie {\n\treturn &nfkcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 91:\n\t\treturn uint16(nfkcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 91\n\t\treturn uint16(nfkcSparse.lookup(n, b))\n\t}\n}\n\n// nfkcValues: 93 blocks, 5952 entries, 11904 bytes\n// The third block is the zero block.\nvar nfkcValues = [5952]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c,\n\t0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb,\n\t0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104,\n\t0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd,\n\t0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235,\n\t0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285,\n\t0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3,\n\t0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750,\n\t0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f,\n\t0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3,\n\t0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 0x104: 0x2f9c, 0x105: 0x32a8,\n\t0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6,\n\t0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5,\n\t0x112: 0x46b0, 0x113: 0x4741, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302,\n\t0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339,\n\t0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352,\n\t0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e,\n\t0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6,\n\t0x130: 0x308c, 0x132: 0x195d, 0x133: 0x19e7, 0x134: 0x30b4, 0x135: 0x33c0,\n\t0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc,\n\t0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8, 0x13f: 0x1bac,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x1c34, 0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118,\n\t0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f, 0x149: 0x1c5c,\n\t0x14c: 0x46d3, 0x14d: 0x4764, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c,\n\t0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483,\n\t0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d,\n\t0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba,\n\t0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796,\n\t0x16a: 0x470a, 0x16b: 0x479b, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2,\n\t0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528,\n\t0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267,\n\t0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0x00a7,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x2dee, 0x185: 0x2df4,\n\t0x186: 0x2dfa, 0x187: 0x1972, 0x188: 0x1975, 0x189: 0x1a08, 0x18a: 0x1987, 0x18b: 0x198a,\n\t0x18c: 0x1a3e, 0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140,\n\t0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8,\n\t0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50,\n\t0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5,\n\t0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf,\n\t0x1aa: 0x46ec, 0x1ab: 0x477d, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd,\n\t0x1b0: 0x33c5, 0x1b1: 0x1942, 0x1b2: 0x1945, 0x1b3: 0x19cf, 0x1b4: 0x3028, 0x1b5: 0x3334,\n\t0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46,\n\t0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316,\n\t0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac,\n\t0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479,\n\t0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6,\n\t0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5,\n\t0x1de: 0x305a, 0x1df: 0x3366,\n\t0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b,\n\t0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769,\n\t0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,\n\t0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,\n\t0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932,\n\t0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d,\n\t0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d,\n\t0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d,\n\t0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d,\n\t0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d,\n\t0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,\n\t0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 0x245: 0x9936,\n\t0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,\n\t0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,\n\t0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,\n\t0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135,\n\t0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132,\n\t0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132,\n\t0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132,\n\t0x274: 0x0170,\n\t0x27a: 0x42a5,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x425a, 0x285: 0x447b,\n\t0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625,\n\t0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 0x2af: 0x36a9,\n\t0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c1: 0xa000, 0x2c5: 0xa000,\n\t0x2c9: 0xa000, 0x2ca: 0x4840, 0x2cb: 0x485e,\n\t0x2cc: 0x36c7, 0x2cd: 0x36df, 0x2ce: 0x4876, 0x2d0: 0x01be, 0x2d1: 0x01d0,\n\t0x2d2: 0x01ac, 0x2d3: 0x430c, 0x2d4: 0x4312, 0x2d5: 0x01fa, 0x2d6: 0x01e8,\n\t0x2f0: 0x01d6, 0x2f1: 0x01eb, 0x2f2: 0x01ee, 0x2f4: 0x0188, 0x2f5: 0x01c7,\n\t0x2f9: 0x01a6,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x3721, 0x301: 0x372d, 0x303: 0x371b,\n\t0x306: 0xa000, 0x307: 0x3709,\n\t0x30c: 0x375d, 0x30d: 0x3745, 0x30e: 0x376f, 0x310: 0xa000,\n\t0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000,\n\t0x318: 0xa000, 0x319: 0x3751, 0x31a: 0xa000,\n\t0x31e: 0xa000, 0x323: 0xa000,\n\t0x327: 0xa000,\n\t0x32b: 0xa000, 0x32d: 0xa000,\n\t0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000,\n\t0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x37d5, 0x33a: 0xa000,\n\t0x33e: 0xa000,\n\t// Block 0xd, offset 0x340\n\t0x341: 0x3733, 0x342: 0x37b7,\n\t0x350: 0x370f, 0x351: 0x3793,\n\t0x352: 0x3715, 0x353: 0x3799, 0x356: 0x3727, 0x357: 0x37ab,\n\t0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3829, 0x35b: 0x382f, 0x35c: 0x3739, 0x35d: 0x37bd,\n\t0x35e: 0x373f, 0x35f: 0x37c3, 0x362: 0x374b, 0x363: 0x37cf,\n\t0x364: 0x3757, 0x365: 0x37db, 0x366: 0x3763, 0x367: 0x37e7, 0x368: 0xa000, 0x369: 0xa000,\n\t0x36a: 0x3835, 0x36b: 0x383b, 0x36c: 0x378d, 0x36d: 0x3811, 0x36e: 0x3769, 0x36f: 0x37ed,\n\t0x370: 0x3775, 0x371: 0x37f9, 0x372: 0x377b, 0x373: 0x37ff, 0x374: 0x3781, 0x375: 0x3805,\n\t0x378: 0x3787, 0x379: 0x380b,\n\t// Block 0xe, offset 0x380\n\t0x387: 0x1d61,\n\t0x391: 0x812d,\n\t0x392: 0x8132, 0x393: 0x8132, 0x394: 0x8132, 0x395: 0x8132, 0x396: 0x812d, 0x397: 0x8132,\n\t0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x812e, 0x39b: 0x812d, 0x39c: 0x8132, 0x39d: 0x8132,\n\t0x39e: 0x8132, 0x39f: 0x8132, 0x3a0: 0x8132, 0x3a1: 0x8132, 0x3a2: 0x812d, 0x3a3: 0x812d,\n\t0x3a4: 0x812d, 0x3a5: 0x812d, 0x3a6: 0x812d, 0x3a7: 0x812d, 0x3a8: 0x8132, 0x3a9: 0x8132,\n\t0x3aa: 0x812d, 0x3ab: 0x8132, 0x3ac: 0x8132, 0x3ad: 0x812e, 0x3ae: 0x8131, 0x3af: 0x8132,\n\t0x3b0: 0x8105, 0x3b1: 0x8106, 0x3b2: 0x8107, 0x3b3: 0x8108, 0x3b4: 0x8109, 0x3b5: 0x810a,\n\t0x3b6: 0x810b, 0x3b7: 0x810c, 0x3b8: 0x810d, 0x3b9: 0x810e, 0x3ba: 0x810e, 0x3bb: 0x810f,\n\t0x3bc: 0x8110, 0x3bd: 0x8111, 0x3bf: 0x8112,\n\t// Block 0xf, offset 0x3c0\n\t0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8116,\n\t0x3cc: 0x8117, 0x3cd: 0x8118, 0x3ce: 0x8119, 0x3cf: 0x811a, 0x3d0: 0x811b, 0x3d1: 0x811c,\n\t0x3d2: 0x811d, 0x3d3: 0x9932, 0x3d4: 0x9932, 0x3d5: 0x992d, 0x3d6: 0x812d, 0x3d7: 0x8132,\n\t0x3d8: 0x8132, 0x3d9: 0x8132, 0x3da: 0x8132, 0x3db: 0x8132, 0x3dc: 0x812d, 0x3dd: 0x8132,\n\t0x3de: 0x8132, 0x3df: 0x812d,\n\t0x3f0: 0x811e, 0x3f5: 0x1d84,\n\t0x3f6: 0x2013, 0x3f7: 0x204f, 0x3f8: 0x204a,\n\t// Block 0x10, offset 0x400\n\t0x405: 0xa000,\n\t0x406: 0x2d26, 0x407: 0xa000, 0x408: 0x2d2e, 0x409: 0xa000, 0x40a: 0x2d36, 0x40b: 0xa000,\n\t0x40c: 0x2d3e, 0x40d: 0xa000, 0x40e: 0x2d46, 0x411: 0xa000,\n\t0x412: 0x2d4e,\n\t0x434: 0x8102, 0x435: 0x9900,\n\t0x43a: 0xa000, 0x43b: 0x2d56,\n\t0x43c: 0xa000, 0x43d: 0x2d5e, 0x43e: 0xa000, 0x43f: 0xa000,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0069, 0x441: 0x006b, 0x442: 0x006f, 0x443: 0x0083, 0x444: 0x00f5, 0x445: 0x00f8,\n\t0x446: 0x0413, 0x447: 0x0085, 0x448: 0x0089, 0x449: 0x008b, 0x44a: 0x0104, 0x44b: 0x0107,\n\t0x44c: 0x010a, 0x44d: 0x008f, 0x44f: 0x0097, 0x450: 0x009b, 0x451: 0x00e0,\n\t0x452: 0x009f, 0x453: 0x00fe, 0x454: 0x0417, 0x455: 0x041b, 0x456: 0x00a1, 0x457: 0x00a9,\n\t0x458: 0x00ab, 0x459: 0x0423, 0x45a: 0x012b, 0x45b: 0x00ad, 0x45c: 0x0427, 0x45d: 0x01be,\n\t0x45e: 0x01c1, 0x45f: 0x01c4, 0x460: 0x01fa, 0x461: 0x01fd, 0x462: 0x0093, 0x463: 0x00a5,\n\t0x464: 0x00ab, 0x465: 0x00ad, 0x466: 0x01be, 0x467: 0x01c1, 0x468: 0x01eb, 0x469: 0x01fa,\n\t0x46a: 0x01fd,\n\t0x478: 0x020c,\n\t// Block 0x12, offset 0x480\n\t0x49b: 0x00fb, 0x49c: 0x0087, 0x49d: 0x0101,\n\t0x49e: 0x00d4, 0x49f: 0x010a, 0x4a0: 0x008d, 0x4a1: 0x010d, 0x4a2: 0x0110, 0x4a3: 0x0116,\n\t0x4a4: 0x011c, 0x4a5: 0x011f, 0x4a6: 0x0122, 0x4a7: 0x042b, 0x4a8: 0x016a, 0x4a9: 0x0128,\n\t0x4aa: 0x042f, 0x4ab: 0x016d, 0x4ac: 0x0131, 0x4ad: 0x012e, 0x4ae: 0x0134, 0x4af: 0x0137,\n\t0x4b0: 0x013a, 0x4b1: 0x013d, 0x4b2: 0x0140, 0x4b3: 0x014c, 0x4b4: 0x014f, 0x4b5: 0x00ec,\n\t0x4b6: 0x0152, 0x4b7: 0x0155, 0x4b8: 0x041f, 0x4b9: 0x0158, 0x4ba: 0x015b, 0x4bb: 0x00b5,\n\t0x4bc: 0x015e, 0x4bd: 0x0161, 0x4be: 0x0164, 0x4bf: 0x01d0,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x8132, 0x4c1: 0x8132, 0x4c2: 0x812d, 0x4c3: 0x8132, 0x4c4: 0x8132, 0x4c5: 0x8132,\n\t0x4c6: 0x8132, 0x4c7: 0x8132, 0x4c8: 0x8132, 0x4c9: 0x8132, 0x4ca: 0x812d, 0x4cb: 0x8132,\n\t0x4cc: 0x8132, 0x4cd: 0x8135, 0x4ce: 0x812a, 0x4cf: 0x812d, 0x4d0: 0x8129, 0x4d1: 0x8132,\n\t0x4d2: 0x8132, 0x4d3: 0x8132, 0x4d4: 0x8132, 0x4d5: 0x8132, 0x4d6: 0x8132, 0x4d7: 0x8132,\n\t0x4d8: 0x8132, 0x4d9: 0x8132, 0x4da: 0x8132, 0x4db: 0x8132, 0x4dc: 0x8132, 0x4dd: 0x8132,\n\t0x4de: 0x8132, 0x4df: 0x8132, 0x4e0: 0x8132, 0x4e1: 0x8132, 0x4e2: 0x8132, 0x4e3: 0x8132,\n\t0x4e4: 0x8132, 0x4e5: 0x8132, 0x4e6: 0x8132, 0x4e7: 0x8132, 0x4e8: 0x8132, 0x4e9: 0x8132,\n\t0x4ea: 0x8132, 0x4eb: 0x8132, 0x4ec: 0x8132, 0x4ed: 0x8132, 0x4ee: 0x8132, 0x4ef: 0x8132,\n\t0x4f0: 0x8132, 0x4f1: 0x8132, 0x4f2: 0x8132, 0x4f3: 0x8132, 0x4f4: 0x8132, 0x4f5: 0x8132,\n\t0x4f6: 0x8133, 0x4f7: 0x8131, 0x4f8: 0x8131, 0x4f9: 0x812d, 0x4fb: 0x8132,\n\t0x4fc: 0x8134, 0x4fd: 0x812d, 0x4fe: 0x8132, 0x4ff: 0x812d,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x2f97, 0x501: 0x32a3, 0x502: 0x2fa1, 0x503: 0x32ad, 0x504: 0x2fa6, 0x505: 0x32b2,\n\t0x506: 0x2fab, 0x507: 0x32b7, 0x508: 0x38cc, 0x509: 0x3a5b, 0x50a: 0x2fc4, 0x50b: 0x32d0,\n\t0x50c: 0x2fce, 0x50d: 0x32da, 0x50e: 0x2fdd, 0x50f: 0x32e9, 0x510: 0x2fd3, 0x511: 0x32df,\n\t0x512: 0x2fd8, 0x513: 0x32e4, 0x514: 0x38ef, 0x515: 0x3a7e, 0x516: 0x38f6, 0x517: 0x3a85,\n\t0x518: 0x3019, 0x519: 0x3325, 0x51a: 0x301e, 0x51b: 0x332a, 0x51c: 0x3904, 0x51d: 0x3a93,\n\t0x51e: 0x3023, 0x51f: 0x332f, 0x520: 0x3032, 0x521: 0x333e, 0x522: 0x3050, 0x523: 0x335c,\n\t0x524: 0x305f, 0x525: 0x336b, 0x526: 0x3055, 0x527: 0x3361, 0x528: 0x3064, 0x529: 0x3370,\n\t0x52a: 0x3069, 0x52b: 0x3375, 0x52c: 0x30af, 0x52d: 0x33bb, 0x52e: 0x390b, 0x52f: 0x3a9a,\n\t0x530: 0x30b9, 0x531: 0x33ca, 0x532: 0x30c3, 0x533: 0x33d4, 0x534: 0x30cd, 0x535: 0x33de,\n\t0x536: 0x46c4, 0x537: 0x4755, 0x538: 0x3912, 0x539: 0x3aa1, 0x53a: 0x30e6, 0x53b: 0x33f7,\n\t0x53c: 0x30e1, 0x53d: 0x33f2, 0x53e: 0x30eb, 0x53f: 0x33fc,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x30f0, 0x541: 0x3401, 0x542: 0x30f5, 0x543: 0x3406, 0x544: 0x3109, 0x545: 0x341a,\n\t0x546: 0x3113, 0x547: 0x3424, 0x548: 0x3122, 0x549: 0x3433, 0x54a: 0x311d, 0x54b: 0x342e,\n\t0x54c: 0x3935, 0x54d: 0x3ac4, 0x54e: 0x3943, 0x54f: 0x3ad2, 0x550: 0x394a, 0x551: 0x3ad9,\n\t0x552: 0x3951, 0x553: 0x3ae0, 0x554: 0x314f, 0x555: 0x3460, 0x556: 0x3154, 0x557: 0x3465,\n\t0x558: 0x315e, 0x559: 0x346f, 0x55a: 0x46f1, 0x55b: 0x4782, 0x55c: 0x3997, 0x55d: 0x3b26,\n\t0x55e: 0x3177, 0x55f: 0x3488, 0x560: 0x3181, 0x561: 0x3492, 0x562: 0x4700, 0x563: 0x4791,\n\t0x564: 0x399e, 0x565: 0x3b2d, 0x566: 0x39a5, 0x567: 0x3b34, 0x568: 0x39ac, 0x569: 0x3b3b,\n\t0x56a: 0x3190, 0x56b: 0x34a1, 0x56c: 0x319a, 0x56d: 0x34b0, 0x56e: 0x31ae, 0x56f: 0x34c4,\n\t0x570: 0x31a9, 0x571: 0x34bf, 0x572: 0x31ea, 0x573: 0x3500, 0x574: 0x31f9, 0x575: 0x350f,\n\t0x576: 0x31f4, 0x577: 0x350a, 0x578: 0x39b3, 0x579: 0x3b42, 0x57a: 0x39ba, 0x57b: 0x3b49,\n\t0x57c: 0x31fe, 0x57d: 0x3514, 0x57e: 0x3203, 0x57f: 0x3519,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3208, 0x581: 0x351e, 0x582: 0x320d, 0x583: 0x3523, 0x584: 0x321c, 0x585: 0x3532,\n\t0x586: 0x3217, 0x587: 0x352d, 0x588: 0x3221, 0x589: 0x353c, 0x58a: 0x3226, 0x58b: 0x3541,\n\t0x58c: 0x322b, 0x58d: 0x3546, 0x58e: 0x3249, 0x58f: 0x3564, 0x590: 0x3262, 0x591: 0x3582,\n\t0x592: 0x3271, 0x593: 0x3591, 0x594: 0x3276, 0x595: 0x3596, 0x596: 0x337a, 0x597: 0x34a6,\n\t0x598: 0x3537, 0x599: 0x3573, 0x59a: 0x1be0, 0x59b: 0x42d7,\n\t0x5a0: 0x46a1, 0x5a1: 0x4732, 0x5a2: 0x2f83, 0x5a3: 0x328f,\n\t0x5a4: 0x3878, 0x5a5: 0x3a07, 0x5a6: 0x3871, 0x5a7: 0x3a00, 0x5a8: 0x3886, 0x5a9: 0x3a15,\n\t0x5aa: 0x387f, 0x5ab: 0x3a0e, 0x5ac: 0x38be, 0x5ad: 0x3a4d, 0x5ae: 0x3894, 0x5af: 0x3a23,\n\t0x5b0: 0x388d, 0x5b1: 0x3a1c, 0x5b2: 0x38a2, 0x5b3: 0x3a31, 0x5b4: 0x389b, 0x5b5: 0x3a2a,\n\t0x5b6: 0x38c5, 0x5b7: 0x3a54, 0x5b8: 0x46b5, 0x5b9: 0x4746, 0x5ba: 0x3000, 0x5bb: 0x330c,\n\t0x5bc: 0x2fec, 0x5bd: 0x32f8, 0x5be: 0x38da, 0x5bf: 0x3a69,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x38d3, 0x5c1: 0x3a62, 0x5c2: 0x38e8, 0x5c3: 0x3a77, 0x5c4: 0x38e1, 0x5c5: 0x3a70,\n\t0x5c6: 0x38fd, 0x5c7: 0x3a8c, 0x5c8: 0x3091, 0x5c9: 0x339d, 0x5ca: 0x30a5, 0x5cb: 0x33b1,\n\t0x5cc: 0x46e7, 0x5cd: 0x4778, 0x5ce: 0x3136, 0x5cf: 0x3447, 0x5d0: 0x3920, 0x5d1: 0x3aaf,\n\t0x5d2: 0x3919, 0x5d3: 0x3aa8, 0x5d4: 0x392e, 0x5d5: 0x3abd, 0x5d6: 0x3927, 0x5d7: 0x3ab6,\n\t0x5d8: 0x3989, 0x5d9: 0x3b18, 0x5da: 0x396d, 0x5db: 0x3afc, 0x5dc: 0x3966, 0x5dd: 0x3af5,\n\t0x5de: 0x397b, 0x5df: 0x3b0a, 0x5e0: 0x3974, 0x5e1: 0x3b03, 0x5e2: 0x3982, 0x5e3: 0x3b11,\n\t0x5e4: 0x31e5, 0x5e5: 0x34fb, 0x5e6: 0x31c7, 0x5e7: 0x34dd, 0x5e8: 0x39e4, 0x5e9: 0x3b73,\n\t0x5ea: 0x39dd, 0x5eb: 0x3b6c, 0x5ec: 0x39f2, 0x5ed: 0x3b81, 0x5ee: 0x39eb, 0x5ef: 0x3b7a,\n\t0x5f0: 0x39f9, 0x5f1: 0x3b88, 0x5f2: 0x3230, 0x5f3: 0x354b, 0x5f4: 0x3258, 0x5f5: 0x3578,\n\t0x5f6: 0x3253, 0x5f7: 0x356e, 0x5f8: 0x323f, 0x5f9: 0x355a,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x4804, 0x601: 0x480a, 0x602: 0x491e, 0x603: 0x4936, 0x604: 0x4926, 0x605: 0x493e,\n\t0x606: 0x492e, 0x607: 0x4946, 0x608: 0x47aa, 0x609: 0x47b0, 0x60a: 0x488e, 0x60b: 0x48a6,\n\t0x60c: 0x4896, 0x60d: 0x48ae, 0x60e: 0x489e, 0x60f: 0x48b6, 0x610: 0x4816, 0x611: 0x481c,\n\t0x612: 0x3db8, 0x613: 0x3dc8, 0x614: 0x3dc0, 0x615: 0x3dd0,\n\t0x618: 0x47b6, 0x619: 0x47bc, 0x61a: 0x3ce8, 0x61b: 0x3cf8, 0x61c: 0x3cf0, 0x61d: 0x3d00,\n\t0x620: 0x482e, 0x621: 0x4834, 0x622: 0x494e, 0x623: 0x4966,\n\t0x624: 0x4956, 0x625: 0x496e, 0x626: 0x495e, 0x627: 0x4976, 0x628: 0x47c2, 0x629: 0x47c8,\n\t0x62a: 0x48be, 0x62b: 0x48d6, 0x62c: 0x48c6, 0x62d: 0x48de, 0x62e: 0x48ce, 0x62f: 0x48e6,\n\t0x630: 0x4846, 0x631: 0x484c, 0x632: 0x3e18, 0x633: 0x3e30, 0x634: 0x3e20, 0x635: 0x3e38,\n\t0x636: 0x3e28, 0x637: 0x3e40, 0x638: 0x47ce, 0x639: 0x47d4, 0x63a: 0x3d18, 0x63b: 0x3d30,\n\t0x63c: 0x3d20, 0x63d: 0x3d38, 0x63e: 0x3d28, 0x63f: 0x3d40,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x4852, 0x641: 0x4858, 0x642: 0x3e48, 0x643: 0x3e58, 0x644: 0x3e50, 0x645: 0x3e60,\n\t0x648: 0x47da, 0x649: 0x47e0, 0x64a: 0x3d48, 0x64b: 0x3d58,\n\t0x64c: 0x3d50, 0x64d: 0x3d60, 0x650: 0x4864, 0x651: 0x486a,\n\t0x652: 0x3e80, 0x653: 0x3e98, 0x654: 0x3e88, 0x655: 0x3ea0, 0x656: 0x3e90, 0x657: 0x3ea8,\n\t0x659: 0x47e6, 0x65b: 0x3d68, 0x65d: 0x3d70,\n\t0x65f: 0x3d78, 0x660: 0x487c, 0x661: 0x4882, 0x662: 0x497e, 0x663: 0x4996,\n\t0x664: 0x4986, 0x665: 0x499e, 0x666: 0x498e, 0x667: 0x49a6, 0x668: 0x47ec, 0x669: 0x47f2,\n\t0x66a: 0x48ee, 0x66b: 0x4906, 0x66c: 0x48f6, 0x66d: 0x490e, 0x66e: 0x48fe, 0x66f: 0x4916,\n\t0x670: 0x47f8, 0x671: 0x431e, 0x672: 0x3691, 0x673: 0x4324, 0x674: 0x4822, 0x675: 0x432a,\n\t0x676: 0x36a3, 0x677: 0x4330, 0x678: 0x36c1, 0x679: 0x4336, 0x67a: 0x36d9, 0x67b: 0x433c,\n\t0x67c: 0x4870, 0x67d: 0x4342,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x3da0, 0x681: 0x3da8, 0x682: 0x4184, 0x683: 0x41a2, 0x684: 0x418e, 0x685: 0x41ac,\n\t0x686: 0x4198, 0x687: 0x41b6, 0x688: 0x3cd8, 0x689: 0x3ce0, 0x68a: 0x40d0, 0x68b: 0x40ee,\n\t0x68c: 0x40da, 0x68d: 0x40f8, 0x68e: 0x40e4, 0x68f: 0x4102, 0x690: 0x3de8, 0x691: 0x3df0,\n\t0x692: 0x41c0, 0x693: 0x41de, 0x694: 0x41ca, 0x695: 0x41e8, 0x696: 0x41d4, 0x697: 0x41f2,\n\t0x698: 0x3d08, 0x699: 0x3d10, 0x69a: 0x410c, 0x69b: 0x412a, 0x69c: 0x4116, 0x69d: 0x4134,\n\t0x69e: 0x4120, 0x69f: 0x413e, 0x6a0: 0x3ec0, 0x6a1: 0x3ec8, 0x6a2: 0x41fc, 0x6a3: 0x421a,\n\t0x6a4: 0x4206, 0x6a5: 0x4224, 0x6a6: 0x4210, 0x6a7: 0x422e, 0x6a8: 0x3d80, 0x6a9: 0x3d88,\n\t0x6aa: 0x4148, 0x6ab: 0x4166, 0x6ac: 0x4152, 0x6ad: 0x4170, 0x6ae: 0x415c, 0x6af: 0x417a,\n\t0x6b0: 0x3685, 0x6b1: 0x367f, 0x6b2: 0x3d90, 0x6b3: 0x368b, 0x6b4: 0x3d98,\n\t0x6b6: 0x4810, 0x6b7: 0x3db0, 0x6b8: 0x35f5, 0x6b9: 0x35ef, 0x6ba: 0x35e3, 0x6bb: 0x42ee,\n\t0x6bc: 0x35fb, 0x6bd: 0x4287, 0x6be: 0x01d3, 0x6bf: 0x4287,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x42a0, 0x6c1: 0x4482, 0x6c2: 0x3dd8, 0x6c3: 0x369d, 0x6c4: 0x3de0,\n\t0x6c6: 0x483a, 0x6c7: 0x3df8, 0x6c8: 0x3601, 0x6c9: 0x42f4, 0x6ca: 0x360d, 0x6cb: 0x42fa,\n\t0x6cc: 0x3619, 0x6cd: 0x4489, 0x6ce: 0x4490, 0x6cf: 0x4497, 0x6d0: 0x36b5, 0x6d1: 0x36af,\n\t0x6d2: 0x3e00, 0x6d3: 0x44e4, 0x6d6: 0x36bb, 0x6d7: 0x3e10,\n\t0x6d8: 0x3631, 0x6d9: 0x362b, 0x6da: 0x361f, 0x6db: 0x4300, 0x6dd: 0x449e,\n\t0x6de: 0x44a5, 0x6df: 0x44ac, 0x6e0: 0x36eb, 0x6e1: 0x36e5, 0x6e2: 0x3e68, 0x6e3: 0x44ec,\n\t0x6e4: 0x36cd, 0x6e5: 0x36d3, 0x6e6: 0x36f1, 0x6e7: 0x3e78, 0x6e8: 0x3661, 0x6e9: 0x365b,\n\t0x6ea: 0x364f, 0x6eb: 0x430c, 0x6ec: 0x3649, 0x6ed: 0x4474, 0x6ee: 0x447b, 0x6ef: 0x0081,\n\t0x6f2: 0x3eb0, 0x6f3: 0x36f7, 0x6f4: 0x3eb8,\n\t0x6f6: 0x4888, 0x6f7: 0x3ed0, 0x6f8: 0x363d, 0x6f9: 0x4306, 0x6fa: 0x366d, 0x6fb: 0x4318,\n\t0x6fc: 0x3679, 0x6fd: 0x425a, 0x6fe: 0x428c,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x1bd8, 0x701: 0x1bdc, 0x702: 0x0047, 0x703: 0x1c54, 0x705: 0x1be8,\n\t0x706: 0x1bec, 0x707: 0x00e9, 0x709: 0x1c58, 0x70a: 0x008f, 0x70b: 0x0051,\n\t0x70c: 0x0051, 0x70d: 0x0051, 0x70e: 0x0091, 0x70f: 0x00da, 0x710: 0x0053, 0x711: 0x0053,\n\t0x712: 0x0059, 0x713: 0x0099, 0x715: 0x005d, 0x716: 0x198d,\n\t0x719: 0x0061, 0x71a: 0x0063, 0x71b: 0x0065, 0x71c: 0x0065, 0x71d: 0x0065,\n\t0x720: 0x199f, 0x721: 0x1bc8, 0x722: 0x19a8,\n\t0x724: 0x0075, 0x726: 0x01b8, 0x728: 0x0075,\n\t0x72a: 0x0057, 0x72b: 0x42d2, 0x72c: 0x0045, 0x72d: 0x0047, 0x72f: 0x008b,\n\t0x730: 0x004b, 0x731: 0x004d, 0x733: 0x005b, 0x734: 0x009f, 0x735: 0x0215,\n\t0x736: 0x0218, 0x737: 0x021b, 0x738: 0x021e, 0x739: 0x0093, 0x73b: 0x1b98,\n\t0x73c: 0x01e8, 0x73d: 0x01c1, 0x73e: 0x0179, 0x73f: 0x01a0,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x0463, 0x745: 0x0049,\n\t0x746: 0x0089, 0x747: 0x008b, 0x748: 0x0093, 0x749: 0x0095,\n\t0x750: 0x222e, 0x751: 0x223a,\n\t0x752: 0x22ee, 0x753: 0x2216, 0x754: 0x229a, 0x755: 0x2222, 0x756: 0x22a0, 0x757: 0x22b8,\n\t0x758: 0x22c4, 0x759: 0x2228, 0x75a: 0x22ca, 0x75b: 0x2234, 0x75c: 0x22be, 0x75d: 0x22d0,\n\t0x75e: 0x22d6, 0x75f: 0x1cbc, 0x760: 0x0053, 0x761: 0x195a, 0x762: 0x1ba4, 0x763: 0x1963,\n\t0x764: 0x006d, 0x765: 0x19ab, 0x766: 0x1bd0, 0x767: 0x1d48, 0x768: 0x1966, 0x769: 0x0071,\n\t0x76a: 0x19b7, 0x76b: 0x1bd4, 0x76c: 0x0059, 0x76d: 0x0047, 0x76e: 0x0049, 0x76f: 0x005b,\n\t0x770: 0x0093, 0x771: 0x19e4, 0x772: 0x1c18, 0x773: 0x19ed, 0x774: 0x00ad, 0x775: 0x1a62,\n\t0x776: 0x1c4c, 0x777: 0x1d5c, 0x778: 0x19f0, 0x779: 0x00b1, 0x77a: 0x1a65, 0x77b: 0x1c50,\n\t0x77c: 0x0099, 0x77d: 0x0087, 0x77e: 0x0089, 0x77f: 0x009b,\n\t// Block 0x1e, offset 0x780\n\t0x781: 0x3c06, 0x783: 0xa000, 0x784: 0x3c0d, 0x785: 0xa000,\n\t0x787: 0x3c14, 0x788: 0xa000, 0x789: 0x3c1b,\n\t0x78d: 0xa000,\n\t0x7a0: 0x2f65, 0x7a1: 0xa000, 0x7a2: 0x3c29,\n\t0x7a4: 0xa000, 0x7a5: 0xa000,\n\t0x7ad: 0x3c22, 0x7ae: 0x2f60, 0x7af: 0x2f6a,\n\t0x7b0: 0x3c30, 0x7b1: 0x3c37, 0x7b2: 0xa000, 0x7b3: 0xa000, 0x7b4: 0x3c3e, 0x7b5: 0x3c45,\n\t0x7b6: 0xa000, 0x7b7: 0xa000, 0x7b8: 0x3c4c, 0x7b9: 0x3c53, 0x7ba: 0xa000, 0x7bb: 0xa000,\n\t0x7bc: 0xa000, 0x7bd: 0xa000,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x3c5a, 0x7c1: 0x3c61, 0x7c2: 0xa000, 0x7c3: 0xa000, 0x7c4: 0x3c76, 0x7c5: 0x3c7d,\n\t0x7c6: 0xa000, 0x7c7: 0xa000, 0x7c8: 0x3c84, 0x7c9: 0x3c8b,\n\t0x7d1: 0xa000,\n\t0x7d2: 0xa000,\n\t0x7e2: 0xa000,\n\t0x7e8: 0xa000, 0x7e9: 0xa000,\n\t0x7eb: 0xa000, 0x7ec: 0x3ca0, 0x7ed: 0x3ca7, 0x7ee: 0x3cae, 0x7ef: 0x3cb5,\n\t0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0xa000, 0x7f5: 0xa000,\n\t// Block 0x20, offset 0x800\n\t0x820: 0x0023, 0x821: 0x0025, 0x822: 0x0027, 0x823: 0x0029,\n\t0x824: 0x002b, 0x825: 0x002d, 0x826: 0x002f, 0x827: 0x0031, 0x828: 0x0033, 0x829: 0x1882,\n\t0x82a: 0x1885, 0x82b: 0x1888, 0x82c: 0x188b, 0x82d: 0x188e, 0x82e: 0x1891, 0x82f: 0x1894,\n\t0x830: 0x1897, 0x831: 0x189a, 0x832: 0x189d, 0x833: 0x18a6, 0x834: 0x1a68, 0x835: 0x1a6c,\n\t0x836: 0x1a70, 0x837: 0x1a74, 0x838: 0x1a78, 0x839: 0x1a7c, 0x83a: 0x1a80, 0x83b: 0x1a84,\n\t0x83c: 0x1a88, 0x83d: 0x1c80, 0x83e: 0x1c85, 0x83f: 0x1c8a,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x1c8f, 0x841: 0x1c94, 0x842: 0x1c99, 0x843: 0x1c9e, 0x844: 0x1ca3, 0x845: 0x1ca8,\n\t0x846: 0x1cad, 0x847: 0x1cb2, 0x848: 0x187f, 0x849: 0x18a3, 0x84a: 0x18c7, 0x84b: 0x18eb,\n\t0x84c: 0x190f, 0x84d: 0x1918, 0x84e: 0x191e, 0x84f: 0x1924, 0x850: 0x192a, 0x851: 0x1b60,\n\t0x852: 0x1b64, 0x853: 0x1b68, 0x854: 0x1b6c, 0x855: 0x1b70, 0x856: 0x1b74, 0x857: 0x1b78,\n\t0x858: 0x1b7c, 0x859: 0x1b80, 0x85a: 0x1b84, 0x85b: 0x1b88, 0x85c: 0x1af4, 0x85d: 0x1af8,\n\t0x85e: 0x1afc, 0x85f: 0x1b00, 0x860: 0x1b04, 0x861: 0x1b08, 0x862: 0x1b0c, 0x863: 0x1b10,\n\t0x864: 0x1b14, 0x865: 0x1b18, 0x866: 0x1b1c, 0x867: 0x1b20, 0x868: 0x1b24, 0x869: 0x1b28,\n\t0x86a: 0x1b2c, 0x86b: 0x1b30, 0x86c: 0x1b34, 0x86d: 0x1b38, 0x86e: 0x1b3c, 0x86f: 0x1b40,\n\t0x870: 0x1b44, 0x871: 0x1b48, 0x872: 0x1b4c, 0x873: 0x1b50, 0x874: 0x1b54, 0x875: 0x1b58,\n\t0x876: 0x0043, 0x877: 0x0045, 0x878: 0x0047, 0x879: 0x0049, 0x87a: 0x004b, 0x87b: 0x004d,\n\t0x87c: 0x004f, 0x87d: 0x0051, 0x87e: 0x0053, 0x87f: 0x0055,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x06bf, 0x881: 0x06e3, 0x882: 0x06ef, 0x883: 0x06ff, 0x884: 0x0707, 0x885: 0x0713,\n\t0x886: 0x071b, 0x887: 0x0723, 0x888: 0x072f, 0x889: 0x0783, 0x88a: 0x079b, 0x88b: 0x07ab,\n\t0x88c: 0x07bb, 0x88d: 0x07cb, 0x88e: 0x07db, 0x88f: 0x07fb, 0x890: 0x07ff, 0x891: 0x0803,\n\t0x892: 0x0837, 0x893: 0x085f, 0x894: 0x086f, 0x895: 0x0877, 0x896: 0x087b, 0x897: 0x0887,\n\t0x898: 0x08a3, 0x899: 0x08a7, 0x89a: 0x08bf, 0x89b: 0x08c3, 0x89c: 0x08cb, 0x89d: 0x08db,\n\t0x89e: 0x0977, 0x89f: 0x098b, 0x8a0: 0x09cb, 0x8a1: 0x09df, 0x8a2: 0x09e7, 0x8a3: 0x09eb,\n\t0x8a4: 0x09fb, 0x8a5: 0x0a17, 0x8a6: 0x0a43, 0x8a7: 0x0a4f, 0x8a8: 0x0a6f, 0x8a9: 0x0a7b,\n\t0x8aa: 0x0a7f, 0x8ab: 0x0a83, 0x8ac: 0x0a9b, 0x8ad: 0x0a9f, 0x8ae: 0x0acb, 0x8af: 0x0ad7,\n\t0x8b0: 0x0adf, 0x8b1: 0x0ae7, 0x8b2: 0x0af7, 0x8b3: 0x0aff, 0x8b4: 0x0b07, 0x8b5: 0x0b33,\n\t0x8b6: 0x0b37, 0x8b7: 0x0b3f, 0x8b8: 0x0b43, 0x8b9: 0x0b4b, 0x8ba: 0x0b53, 0x8bb: 0x0b63,\n\t0x8bc: 0x0b7f, 0x8bd: 0x0bf7, 0x8be: 0x0c0b, 0x8bf: 0x0c0f,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0c8f, 0x8c1: 0x0c93, 0x8c2: 0x0ca7, 0x8c3: 0x0cab, 0x8c4: 0x0cb3, 0x8c5: 0x0cbb,\n\t0x8c6: 0x0cc3, 0x8c7: 0x0ccf, 0x8c8: 0x0cf7, 0x8c9: 0x0d07, 0x8ca: 0x0d1b, 0x8cb: 0x0d8b,\n\t0x8cc: 0x0d97, 0x8cd: 0x0da7, 0x8ce: 0x0db3, 0x8cf: 0x0dbf, 0x8d0: 0x0dc7, 0x8d1: 0x0dcb,\n\t0x8d2: 0x0dcf, 0x8d3: 0x0dd3, 0x8d4: 0x0dd7, 0x8d5: 0x0e8f, 0x8d6: 0x0ed7, 0x8d7: 0x0ee3,\n\t0x8d8: 0x0ee7, 0x8d9: 0x0eeb, 0x8da: 0x0eef, 0x8db: 0x0ef7, 0x8dc: 0x0efb, 0x8dd: 0x0f0f,\n\t0x8de: 0x0f2b, 0x8df: 0x0f33, 0x8e0: 0x0f73, 0x8e1: 0x0f77, 0x8e2: 0x0f7f, 0x8e3: 0x0f83,\n\t0x8e4: 0x0f8b, 0x8e5: 0x0f8f, 0x8e6: 0x0fb3, 0x8e7: 0x0fb7, 0x8e8: 0x0fd3, 0x8e9: 0x0fd7,\n\t0x8ea: 0x0fdb, 0x8eb: 0x0fdf, 0x8ec: 0x0ff3, 0x8ed: 0x1017, 0x8ee: 0x101b, 0x8ef: 0x101f,\n\t0x8f0: 0x1043, 0x8f1: 0x1083, 0x8f2: 0x1087, 0x8f3: 0x10a7, 0x8f4: 0x10b7, 0x8f5: 0x10bf,\n\t0x8f6: 0x10df, 0x8f7: 0x1103, 0x8f8: 0x1147, 0x8f9: 0x114f, 0x8fa: 0x1163, 0x8fb: 0x116f,\n\t0x8fc: 0x1177, 0x8fd: 0x117f, 0x8fe: 0x1183, 0x8ff: 0x1187,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x119f, 0x901: 0x11a3, 0x902: 0x11bf, 0x903: 0x11c7, 0x904: 0x11cf, 0x905: 0x11d3,\n\t0x906: 0x11df, 0x907: 0x11e7, 0x908: 0x11eb, 0x909: 0x11ef, 0x90a: 0x11f7, 0x90b: 0x11fb,\n\t0x90c: 0x129b, 0x90d: 0x12af, 0x90e: 0x12e3, 0x90f: 0x12e7, 0x910: 0x12ef, 0x911: 0x131b,\n\t0x912: 0x1323, 0x913: 0x132b, 0x914: 0x1333, 0x915: 0x136f, 0x916: 0x1373, 0x917: 0x137b,\n\t0x918: 0x137f, 0x919: 0x1383, 0x91a: 0x13af, 0x91b: 0x13b3, 0x91c: 0x13bb, 0x91d: 0x13cf,\n\t0x91e: 0x13d3, 0x91f: 0x13ef, 0x920: 0x13f7, 0x921: 0x13fb, 0x922: 0x141f, 0x923: 0x143f,\n\t0x924: 0x1453, 0x925: 0x1457, 0x926: 0x145f, 0x927: 0x148b, 0x928: 0x148f, 0x929: 0x149f,\n\t0x92a: 0x14c3, 0x92b: 0x14cf, 0x92c: 0x14df, 0x92d: 0x14f7, 0x92e: 0x14ff, 0x92f: 0x1503,\n\t0x930: 0x1507, 0x931: 0x150b, 0x932: 0x1517, 0x933: 0x151b, 0x934: 0x1523, 0x935: 0x153f,\n\t0x936: 0x1543, 0x937: 0x1547, 0x938: 0x155f, 0x939: 0x1563, 0x93a: 0x156b, 0x93b: 0x157f,\n\t0x93c: 0x1583, 0x93d: 0x1587, 0x93e: 0x158f, 0x93f: 0x1593,\n\t// Block 0x25, offset 0x940\n\t0x946: 0xa000, 0x94b: 0xa000,\n\t0x94c: 0x3f08, 0x94d: 0xa000, 0x94e: 0x3f10, 0x94f: 0xa000, 0x950: 0x3f18, 0x951: 0xa000,\n\t0x952: 0x3f20, 0x953: 0xa000, 0x954: 0x3f28, 0x955: 0xa000, 0x956: 0x3f30, 0x957: 0xa000,\n\t0x958: 0x3f38, 0x959: 0xa000, 0x95a: 0x3f40, 0x95b: 0xa000, 0x95c: 0x3f48, 0x95d: 0xa000,\n\t0x95e: 0x3f50, 0x95f: 0xa000, 0x960: 0x3f58, 0x961: 0xa000, 0x962: 0x3f60,\n\t0x964: 0xa000, 0x965: 0x3f68, 0x966: 0xa000, 0x967: 0x3f70, 0x968: 0xa000, 0x969: 0x3f78,\n\t0x96f: 0xa000,\n\t0x970: 0x3f80, 0x971: 0x3f88, 0x972: 0xa000, 0x973: 0x3f90, 0x974: 0x3f98, 0x975: 0xa000,\n\t0x976: 0x3fa0, 0x977: 0x3fa8, 0x978: 0xa000, 0x979: 0x3fb0, 0x97a: 0x3fb8, 0x97b: 0xa000,\n\t0x97c: 0x3fc0, 0x97d: 0x3fc8,\n\t// Block 0x26, offset 0x980\n\t0x994: 0x3f00,\n\t0x999: 0x9903, 0x99a: 0x9903, 0x99b: 0x42dc, 0x99c: 0x42e2, 0x99d: 0xa000,\n\t0x99e: 0x3fd0, 0x99f: 0x26b4,\n\t0x9a6: 0xa000,\n\t0x9ab: 0xa000, 0x9ac: 0x3fe0, 0x9ad: 0xa000, 0x9ae: 0x3fe8, 0x9af: 0xa000,\n\t0x9b0: 0x3ff0, 0x9b1: 0xa000, 0x9b2: 0x3ff8, 0x9b3: 0xa000, 0x9b4: 0x4000, 0x9b5: 0xa000,\n\t0x9b6: 0x4008, 0x9b7: 0xa000, 0x9b8: 0x4010, 0x9b9: 0xa000, 0x9ba: 0x4018, 0x9bb: 0xa000,\n\t0x9bc: 0x4020, 0x9bd: 0xa000, 0x9be: 0x4028, 0x9bf: 0xa000,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x4030, 0x9c1: 0xa000, 0x9c2: 0x4038, 0x9c4: 0xa000, 0x9c5: 0x4040,\n\t0x9c6: 0xa000, 0x9c7: 0x4048, 0x9c8: 0xa000, 0x9c9: 0x4050,\n\t0x9cf: 0xa000, 0x9d0: 0x4058, 0x9d1: 0x4060,\n\t0x9d2: 0xa000, 0x9d3: 0x4068, 0x9d4: 0x4070, 0x9d5: 0xa000, 0x9d6: 0x4078, 0x9d7: 0x4080,\n\t0x9d8: 0xa000, 0x9d9: 0x4088, 0x9da: 0x4090, 0x9db: 0xa000, 0x9dc: 0x4098, 0x9dd: 0x40a0,\n\t0x9ef: 0xa000,\n\t0x9f0: 0xa000, 0x9f1: 0xa000, 0x9f2: 0xa000, 0x9f4: 0x3fd8,\n\t0x9f7: 0x40a8, 0x9f8: 0x40b0, 0x9f9: 0x40b8, 0x9fa: 0x40c0,\n\t0x9fd: 0xa000, 0x9fe: 0x40c8, 0x9ff: 0x26c9,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0367, 0xa01: 0x032b, 0xa02: 0x032f, 0xa03: 0x0333, 0xa04: 0x037b, 0xa05: 0x0337,\n\t0xa06: 0x033b, 0xa07: 0x033f, 0xa08: 0x0343, 0xa09: 0x0347, 0xa0a: 0x034b, 0xa0b: 0x034f,\n\t0xa0c: 0x0353, 0xa0d: 0x0357, 0xa0e: 0x035b, 0xa0f: 0x49bd, 0xa10: 0x49c3, 0xa11: 0x49c9,\n\t0xa12: 0x49cf, 0xa13: 0x49d5, 0xa14: 0x49db, 0xa15: 0x49e1, 0xa16: 0x49e7, 0xa17: 0x49ed,\n\t0xa18: 0x49f3, 0xa19: 0x49f9, 0xa1a: 0x49ff, 0xa1b: 0x4a05, 0xa1c: 0x4a0b, 0xa1d: 0x4a11,\n\t0xa1e: 0x4a17, 0xa1f: 0x4a1d, 0xa20: 0x4a23, 0xa21: 0x4a29, 0xa22: 0x4a2f, 0xa23: 0x4a35,\n\t0xa24: 0x03c3, 0xa25: 0x035f, 0xa26: 0x0363, 0xa27: 0x03e7, 0xa28: 0x03eb, 0xa29: 0x03ef,\n\t0xa2a: 0x03f3, 0xa2b: 0x03f7, 0xa2c: 0x03fb, 0xa2d: 0x03ff, 0xa2e: 0x036b, 0xa2f: 0x0403,\n\t0xa30: 0x0407, 0xa31: 0x036f, 0xa32: 0x0373, 0xa33: 0x0377, 0xa34: 0x037f, 0xa35: 0x0383,\n\t0xa36: 0x0387, 0xa37: 0x038b, 0xa38: 0x038f, 0xa39: 0x0393, 0xa3a: 0x0397, 0xa3b: 0x039b,\n\t0xa3c: 0x039f, 0xa3d: 0x03a3, 0xa3e: 0x03a7, 0xa3f: 0x03ab,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x03af, 0xa41: 0x03b3, 0xa42: 0x040b, 0xa43: 0x040f, 0xa44: 0x03b7, 0xa45: 0x03bb,\n\t0xa46: 0x03bf, 0xa47: 0x03c7, 0xa48: 0x03cb, 0xa49: 0x03cf, 0xa4a: 0x03d3, 0xa4b: 0x03d7,\n\t0xa4c: 0x03db, 0xa4d: 0x03df, 0xa4e: 0x03e3,\n\t0xa52: 0x06bf, 0xa53: 0x071b, 0xa54: 0x06cb, 0xa55: 0x097b, 0xa56: 0x06cf, 0xa57: 0x06e7,\n\t0xa58: 0x06d3, 0xa59: 0x0f93, 0xa5a: 0x0707, 0xa5b: 0x06db, 0xa5c: 0x06c3, 0xa5d: 0x09ff,\n\t0xa5e: 0x098f, 0xa5f: 0x072f,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x2054, 0xa81: 0x205a, 0xa82: 0x2060, 0xa83: 0x2066, 0xa84: 0x206c, 0xa85: 0x2072,\n\t0xa86: 0x2078, 0xa87: 0x207e, 0xa88: 0x2084, 0xa89: 0x208a, 0xa8a: 0x2090, 0xa8b: 0x2096,\n\t0xa8c: 0x209c, 0xa8d: 0x20a2, 0xa8e: 0x2726, 0xa8f: 0x272f, 0xa90: 0x2738, 0xa91: 0x2741,\n\t0xa92: 0x274a, 0xa93: 0x2753, 0xa94: 0x275c, 0xa95: 0x2765, 0xa96: 0x276e, 0xa97: 0x2780,\n\t0xa98: 0x2789, 0xa99: 0x2792, 0xa9a: 0x279b, 0xa9b: 0x27a4, 0xa9c: 0x2777, 0xa9d: 0x2bac,\n\t0xa9e: 0x2aed, 0xaa0: 0x20a8, 0xaa1: 0x20c0, 0xaa2: 0x20b4, 0xaa3: 0x2108,\n\t0xaa4: 0x20c6, 0xaa5: 0x20e4, 0xaa6: 0x20ae, 0xaa7: 0x20de, 0xaa8: 0x20ba, 0xaa9: 0x20f0,\n\t0xaaa: 0x2120, 0xaab: 0x213e, 0xaac: 0x2138, 0xaad: 0x212c, 0xaae: 0x217a, 0xaaf: 0x210e,\n\t0xab0: 0x211a, 0xab1: 0x2132, 0xab2: 0x2126, 0xab3: 0x2150, 0xab4: 0x20fc, 0xab5: 0x2144,\n\t0xab6: 0x216e, 0xab7: 0x2156, 0xab8: 0x20ea, 0xab9: 0x20cc, 0xaba: 0x2102, 0xabb: 0x2114,\n\t0xabc: 0x214a, 0xabd: 0x20d2, 0xabe: 0x2174, 0xabf: 0x20f6,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x215c, 0xac1: 0x20d8, 0xac2: 0x2162, 0xac3: 0x2168, 0xac4: 0x092f, 0xac5: 0x0b03,\n\t0xac6: 0x0ca7, 0xac7: 0x10c7,\n\t0xad0: 0x1bc4, 0xad1: 0x18a9,\n\t0xad2: 0x18ac, 0xad3: 0x18af, 0xad4: 0x18b2, 0xad5: 0x18b5, 0xad6: 0x18b8, 0xad7: 0x18bb,\n\t0xad8: 0x18be, 0xad9: 0x18c1, 0xada: 0x18ca, 0xadb: 0x18cd, 0xadc: 0x18d0, 0xadd: 0x18d3,\n\t0xade: 0x18d6, 0xadf: 0x18d9, 0xae0: 0x0313, 0xae1: 0x031b, 0xae2: 0x031f, 0xae3: 0x0327,\n\t0xae4: 0x032b, 0xae5: 0x032f, 0xae6: 0x0337, 0xae7: 0x033f, 0xae8: 0x0343, 0xae9: 0x034b,\n\t0xaea: 0x034f, 0xaeb: 0x0353, 0xaec: 0x0357, 0xaed: 0x035b, 0xaee: 0x2e18, 0xaef: 0x2e20,\n\t0xaf0: 0x2e28, 0xaf1: 0x2e30, 0xaf2: 0x2e38, 0xaf3: 0x2e40, 0xaf4: 0x2e48, 0xaf5: 0x2e50,\n\t0xaf6: 0x2e60, 0xaf7: 0x2e68, 0xaf8: 0x2e70, 0xaf9: 0x2e78, 0xafa: 0x2e80, 0xafb: 0x2e88,\n\t0xafc: 0x2ed3, 0xafd: 0x2e9b, 0xafe: 0x2e58,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x06bf, 0xb01: 0x071b, 0xb02: 0x06cb, 0xb03: 0x097b, 0xb04: 0x071f, 0xb05: 0x07af,\n\t0xb06: 0x06c7, 0xb07: 0x07ab, 0xb08: 0x070b, 0xb09: 0x0887, 0xb0a: 0x0d07, 0xb0b: 0x0e8f,\n\t0xb0c: 0x0dd7, 0xb0d: 0x0d1b, 0xb0e: 0x145f, 0xb0f: 0x098b, 0xb10: 0x0ccf, 0xb11: 0x0d4b,\n\t0xb12: 0x0d0b, 0xb13: 0x104b, 0xb14: 0x08fb, 0xb15: 0x0f03, 0xb16: 0x1387, 0xb17: 0x105f,\n\t0xb18: 0x0843, 0xb19: 0x108f, 0xb1a: 0x0f9b, 0xb1b: 0x0a17, 0xb1c: 0x140f, 0xb1d: 0x077f,\n\t0xb1e: 0x08ab, 0xb1f: 0x0df7, 0xb20: 0x1527, 0xb21: 0x0743, 0xb22: 0x07d3, 0xb23: 0x0d9b,\n\t0xb24: 0x06cf, 0xb25: 0x06e7, 0xb26: 0x06d3, 0xb27: 0x0adb, 0xb28: 0x08ef, 0xb29: 0x087f,\n\t0xb2a: 0x0a57, 0xb2b: 0x0a4b, 0xb2c: 0x0feb, 0xb2d: 0x073f, 0xb2e: 0x139b, 0xb2f: 0x089b,\n\t0xb30: 0x09f3, 0xb31: 0x18dc, 0xb32: 0x18df, 0xb33: 0x18e2, 0xb34: 0x18e5, 0xb35: 0x18ee,\n\t0xb36: 0x18f1, 0xb37: 0x18f4, 0xb38: 0x18f7, 0xb39: 0x18fa, 0xb3a: 0x18fd, 0xb3b: 0x1900,\n\t0xb3c: 0x1903, 0xb3d: 0x1906, 0xb3e: 0x1909, 0xb3f: 0x1912,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x1cc6, 0xb41: 0x1cd5, 0xb42: 0x1ce4, 0xb43: 0x1cf3, 0xb44: 0x1d02, 0xb45: 0x1d11,\n\t0xb46: 0x1d20, 0xb47: 0x1d2f, 0xb48: 0x1d3e, 0xb49: 0x218c, 0xb4a: 0x219e, 0xb4b: 0x21b0,\n\t0xb4c: 0x1954, 0xb4d: 0x1c04, 0xb4e: 0x19d2, 0xb4f: 0x1ba8, 0xb50: 0x04cb, 0xb51: 0x04d3,\n\t0xb52: 0x04db, 0xb53: 0x04e3, 0xb54: 0x04eb, 0xb55: 0x04ef, 0xb56: 0x04f3, 0xb57: 0x04f7,\n\t0xb58: 0x04fb, 0xb59: 0x04ff, 0xb5a: 0x0503, 0xb5b: 0x0507, 0xb5c: 0x050b, 0xb5d: 0x050f,\n\t0xb5e: 0x0513, 0xb5f: 0x0517, 0xb60: 0x051b, 0xb61: 0x0523, 0xb62: 0x0527, 0xb63: 0x052b,\n\t0xb64: 0x052f, 0xb65: 0x0533, 0xb66: 0x0537, 0xb67: 0x053b, 0xb68: 0x053f, 0xb69: 0x0543,\n\t0xb6a: 0x0547, 0xb6b: 0x054b, 0xb6c: 0x054f, 0xb6d: 0x0553, 0xb6e: 0x0557, 0xb6f: 0x055b,\n\t0xb70: 0x055f, 0xb71: 0x0563, 0xb72: 0x0567, 0xb73: 0x056f, 0xb74: 0x0577, 0xb75: 0x057f,\n\t0xb76: 0x0583, 0xb77: 0x0587, 0xb78: 0x058b, 0xb79: 0x058f, 0xb7a: 0x0593, 0xb7b: 0x0597,\n\t0xb7c: 0x059b, 0xb7d: 0x059f, 0xb7e: 0x05a3,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x2b0c, 0xb81: 0x29a8, 0xb82: 0x2b1c, 0xb83: 0x2880, 0xb84: 0x2ee4, 0xb85: 0x288a,\n\t0xb86: 0x2894, 0xb87: 0x2f28, 0xb88: 0x29b5, 0xb89: 0x289e, 0xb8a: 0x28a8, 0xb8b: 0x28b2,\n\t0xb8c: 0x29dc, 0xb8d: 0x29e9, 0xb8e: 0x29c2, 0xb8f: 0x29cf, 0xb90: 0x2ea9, 0xb91: 0x29f6,\n\t0xb92: 0x2a03, 0xb93: 0x2bbe, 0xb94: 0x26bb, 0xb95: 0x2bd1, 0xb96: 0x2be4, 0xb97: 0x2b2c,\n\t0xb98: 0x2a10, 0xb99: 0x2bf7, 0xb9a: 0x2c0a, 0xb9b: 0x2a1d, 0xb9c: 0x28bc, 0xb9d: 0x28c6,\n\t0xb9e: 0x2eb7, 0xb9f: 0x2a2a, 0xba0: 0x2b3c, 0xba1: 0x2ef5, 0xba2: 0x28d0, 0xba3: 0x28da,\n\t0xba4: 0x2a37, 0xba5: 0x28e4, 0xba6: 0x28ee, 0xba7: 0x26d0, 0xba8: 0x26d7, 0xba9: 0x28f8,\n\t0xbaa: 0x2902, 0xbab: 0x2c1d, 0xbac: 0x2a44, 0xbad: 0x2b4c, 0xbae: 0x2c30, 0xbaf: 0x2a51,\n\t0xbb0: 0x2916, 0xbb1: 0x290c, 0xbb2: 0x2f3c, 0xbb3: 0x2a5e, 0xbb4: 0x2c43, 0xbb5: 0x2920,\n\t0xbb6: 0x2b5c, 0xbb7: 0x292a, 0xbb8: 0x2a78, 0xbb9: 0x2934, 0xbba: 0x2a85, 0xbbb: 0x2f06,\n\t0xbbc: 0x2a6b, 0xbbd: 0x2b6c, 0xbbe: 0x2a92, 0xbbf: 0x26de,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x2f17, 0xbc1: 0x293e, 0xbc2: 0x2948, 0xbc3: 0x2a9f, 0xbc4: 0x2952, 0xbc5: 0x295c,\n\t0xbc6: 0x2966, 0xbc7: 0x2b7c, 0xbc8: 0x2aac, 0xbc9: 0x26e5, 0xbca: 0x2c56, 0xbcb: 0x2e90,\n\t0xbcc: 0x2b8c, 0xbcd: 0x2ab9, 0xbce: 0x2ec5, 0xbcf: 0x2970, 0xbd0: 0x297a, 0xbd1: 0x2ac6,\n\t0xbd2: 0x26ec, 0xbd3: 0x2ad3, 0xbd4: 0x2b9c, 0xbd5: 0x26f3, 0xbd6: 0x2c69, 0xbd7: 0x2984,\n\t0xbd8: 0x1cb7, 0xbd9: 0x1ccb, 0xbda: 0x1cda, 0xbdb: 0x1ce9, 0xbdc: 0x1cf8, 0xbdd: 0x1d07,\n\t0xbde: 0x1d16, 0xbdf: 0x1d25, 0xbe0: 0x1d34, 0xbe1: 0x1d43, 0xbe2: 0x2192, 0xbe3: 0x21a4,\n\t0xbe4: 0x21b6, 0xbe5: 0x21c2, 0xbe6: 0x21ce, 0xbe7: 0x21da, 0xbe8: 0x21e6, 0xbe9: 0x21f2,\n\t0xbea: 0x21fe, 0xbeb: 0x220a, 0xbec: 0x2246, 0xbed: 0x2252, 0xbee: 0x225e, 0xbef: 0x226a,\n\t0xbf0: 0x2276, 0xbf1: 0x1c14, 0xbf2: 0x19c6, 0xbf3: 0x1936, 0xbf4: 0x1be4, 0xbf5: 0x1a47,\n\t0xbf6: 0x1a56, 0xbf7: 0x19cc, 0xbf8: 0x1bfc, 0xbf9: 0x1c00, 0xbfa: 0x1960, 0xbfb: 0x2701,\n\t0xbfc: 0x270f, 0xbfd: 0x26fa, 0xbfe: 0x2708, 0xbff: 0x2ae0,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x1a4a, 0xc01: 0x1a32, 0xc02: 0x1c60, 0xc03: 0x1a1a, 0xc04: 0x19f3, 0xc05: 0x1969,\n\t0xc06: 0x1978, 0xc07: 0x1948, 0xc08: 0x1bf0, 0xc09: 0x1d52, 0xc0a: 0x1a4d, 0xc0b: 0x1a35,\n\t0xc0c: 0x1c64, 0xc0d: 0x1c70, 0xc0e: 0x1a26, 0xc0f: 0x19fc, 0xc10: 0x1957, 0xc11: 0x1c1c,\n\t0xc12: 0x1bb0, 0xc13: 0x1b9c, 0xc14: 0x1bcc, 0xc15: 0x1c74, 0xc16: 0x1a29, 0xc17: 0x19c9,\n\t0xc18: 0x19ff, 0xc19: 0x19de, 0xc1a: 0x1a41, 0xc1b: 0x1c78, 0xc1c: 0x1a2c, 0xc1d: 0x19c0,\n\t0xc1e: 0x1a02, 0xc1f: 0x1c3c, 0xc20: 0x1bf4, 0xc21: 0x1a14, 0xc22: 0x1c24, 0xc23: 0x1c40,\n\t0xc24: 0x1bf8, 0xc25: 0x1a17, 0xc26: 0x1c28, 0xc27: 0x22e8, 0xc28: 0x22fc, 0xc29: 0x1996,\n\t0xc2a: 0x1c20, 0xc2b: 0x1bb4, 0xc2c: 0x1ba0, 0xc2d: 0x1c48, 0xc2e: 0x2716, 0xc2f: 0x27ad,\n\t0xc30: 0x1a59, 0xc31: 0x1a44, 0xc32: 0x1c7c, 0xc33: 0x1a2f, 0xc34: 0x1a50, 0xc35: 0x1a38,\n\t0xc36: 0x1c68, 0xc37: 0x1a1d, 0xc38: 0x19f6, 0xc39: 0x1981, 0xc3a: 0x1a53, 0xc3b: 0x1a3b,\n\t0xc3c: 0x1c6c, 0xc3d: 0x1a20, 0xc3e: 0x19f9, 0xc3f: 0x1984,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1c2c, 0xc41: 0x1bb8, 0xc42: 0x1d4d, 0xc43: 0x1939, 0xc44: 0x19ba, 0xc45: 0x19bd,\n\t0xc46: 0x22f5, 0xc47: 0x1b94, 0xc48: 0x19c3, 0xc49: 0x194b, 0xc4a: 0x19e1, 0xc4b: 0x194e,\n\t0xc4c: 0x19ea, 0xc4d: 0x196c, 0xc4e: 0x196f, 0xc4f: 0x1a05, 0xc50: 0x1a0b, 0xc51: 0x1a0e,\n\t0xc52: 0x1c30, 0xc53: 0x1a11, 0xc54: 0x1a23, 0xc55: 0x1c38, 0xc56: 0x1c44, 0xc57: 0x1990,\n\t0xc58: 0x1d57, 0xc59: 0x1bbc, 0xc5a: 0x1993, 0xc5b: 0x1a5c, 0xc5c: 0x19a5, 0xc5d: 0x19b4,\n\t0xc5e: 0x22e2, 0xc5f: 0x22dc, 0xc60: 0x1cc1, 0xc61: 0x1cd0, 0xc62: 0x1cdf, 0xc63: 0x1cee,\n\t0xc64: 0x1cfd, 0xc65: 0x1d0c, 0xc66: 0x1d1b, 0xc67: 0x1d2a, 0xc68: 0x1d39, 0xc69: 0x2186,\n\t0xc6a: 0x2198, 0xc6b: 0x21aa, 0xc6c: 0x21bc, 0xc6d: 0x21c8, 0xc6e: 0x21d4, 0xc6f: 0x21e0,\n\t0xc70: 0x21ec, 0xc71: 0x21f8, 0xc72: 0x2204, 0xc73: 0x2240, 0xc74: 0x224c, 0xc75: 0x2258,\n\t0xc76: 0x2264, 0xc77: 0x2270, 0xc78: 0x227c, 0xc79: 0x2282, 0xc7a: 0x2288, 0xc7b: 0x228e,\n\t0xc7c: 0x2294, 0xc7d: 0x22a6, 0xc7e: 0x22ac, 0xc7f: 0x1c10,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x1377, 0xc81: 0x0cfb, 0xc82: 0x13d3, 0xc83: 0x139f, 0xc84: 0x0e57, 0xc85: 0x06eb,\n\t0xc86: 0x08df, 0xc87: 0x162b, 0xc88: 0x162b, 0xc89: 0x0a0b, 0xc8a: 0x145f, 0xc8b: 0x0943,\n\t0xc8c: 0x0a07, 0xc8d: 0x0bef, 0xc8e: 0x0fcf, 0xc8f: 0x115f, 0xc90: 0x1297, 0xc91: 0x12d3,\n\t0xc92: 0x1307, 0xc93: 0x141b, 0xc94: 0x0d73, 0xc95: 0x0dff, 0xc96: 0x0eab, 0xc97: 0x0f43,\n\t0xc98: 0x125f, 0xc99: 0x1447, 0xc9a: 0x1573, 0xc9b: 0x070f, 0xc9c: 0x08b3, 0xc9d: 0x0d87,\n\t0xc9e: 0x0ecf, 0xc9f: 0x1293, 0xca0: 0x15c3, 0xca1: 0x0ab3, 0xca2: 0x0e77, 0xca3: 0x1283,\n\t0xca4: 0x1317, 0xca5: 0x0c23, 0xca6: 0x11bb, 0xca7: 0x12df, 0xca8: 0x0b1f, 0xca9: 0x0d0f,\n\t0xcaa: 0x0e17, 0xcab: 0x0f1b, 0xcac: 0x1427, 0xcad: 0x074f, 0xcae: 0x07e7, 0xcaf: 0x0853,\n\t0xcb0: 0x0c8b, 0xcb1: 0x0d7f, 0xcb2: 0x0ecb, 0xcb3: 0x0fef, 0xcb4: 0x1177, 0xcb5: 0x128b,\n\t0xcb6: 0x12a3, 0xcb7: 0x13c7, 0xcb8: 0x14ef, 0xcb9: 0x15a3, 0xcba: 0x15bf, 0xcbb: 0x102b,\n\t0xcbc: 0x106b, 0xcbd: 0x1123, 0xcbe: 0x1243, 0xcbf: 0x147b,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x15cb, 0xcc1: 0x134b, 0xcc2: 0x09c7, 0xcc3: 0x0b3b, 0xcc4: 0x10db, 0xcc5: 0x119b,\n\t0xcc6: 0x0eff, 0xcc7: 0x1033, 0xcc8: 0x1397, 0xcc9: 0x14e7, 0xcca: 0x09c3, 0xccb: 0x0a8f,\n\t0xccc: 0x0d77, 0xccd: 0x0e2b, 0xcce: 0x0e5f, 0xccf: 0x1113, 0xcd0: 0x113b, 0xcd1: 0x14a7,\n\t0xcd2: 0x084f, 0xcd3: 0x11a7, 0xcd4: 0x07f3, 0xcd5: 0x07ef, 0xcd6: 0x1097, 0xcd7: 0x1127,\n\t0xcd8: 0x125b, 0xcd9: 0x14af, 0xcda: 0x1367, 0xcdb: 0x0c27, 0xcdc: 0x0d73, 0xcdd: 0x1357,\n\t0xcde: 0x06f7, 0xcdf: 0x0a63, 0xce0: 0x0b93, 0xce1: 0x0f2f, 0xce2: 0x0faf, 0xce3: 0x0873,\n\t0xce4: 0x103b, 0xce5: 0x075f, 0xce6: 0x0b77, 0xce7: 0x06d7, 0xce8: 0x0deb, 0xce9: 0x0ca3,\n\t0xcea: 0x110f, 0xceb: 0x08c7, 0xcec: 0x09b3, 0xced: 0x0ffb, 0xcee: 0x1263, 0xcef: 0x133b,\n\t0xcf0: 0x0db7, 0xcf1: 0x13f7, 0xcf2: 0x0de3, 0xcf3: 0x0c37, 0xcf4: 0x121b, 0xcf5: 0x0c57,\n\t0xcf6: 0x0fab, 0xcf7: 0x072b, 0xcf8: 0x07a7, 0xcf9: 0x07eb, 0xcfa: 0x0d53, 0xcfb: 0x10fb,\n\t0xcfc: 0x11f3, 0xcfd: 0x1347, 0xcfe: 0x145b, 0xcff: 0x085b,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x090f, 0xd01: 0x0a17, 0xd02: 0x0b2f, 0xd03: 0x0cbf, 0xd04: 0x0e7b, 0xd05: 0x103f,\n\t0xd06: 0x1497, 0xd07: 0x157b, 0xd08: 0x15cf, 0xd09: 0x15e7, 0xd0a: 0x0837, 0xd0b: 0x0cf3,\n\t0xd0c: 0x0da3, 0xd0d: 0x13eb, 0xd0e: 0x0afb, 0xd0f: 0x0bd7, 0xd10: 0x0bf3, 0xd11: 0x0c83,\n\t0xd12: 0x0e6b, 0xd13: 0x0eb7, 0xd14: 0x0f67, 0xd15: 0x108b, 0xd16: 0x112f, 0xd17: 0x1193,\n\t0xd18: 0x13db, 0xd19: 0x126b, 0xd1a: 0x1403, 0xd1b: 0x147f, 0xd1c: 0x080f, 0xd1d: 0x083b,\n\t0xd1e: 0x0923, 0xd1f: 0x0ea7, 0xd20: 0x12f3, 0xd21: 0x133b, 0xd22: 0x0b1b, 0xd23: 0x0b8b,\n\t0xd24: 0x0c4f, 0xd25: 0x0daf, 0xd26: 0x10d7, 0xd27: 0x0f23, 0xd28: 0x073b, 0xd29: 0x097f,\n\t0xd2a: 0x0a63, 0xd2b: 0x0ac7, 0xd2c: 0x0b97, 0xd2d: 0x0f3f, 0xd2e: 0x0f5b, 0xd2f: 0x116b,\n\t0xd30: 0x118b, 0xd31: 0x1463, 0xd32: 0x14e3, 0xd33: 0x14f3, 0xd34: 0x152f, 0xd35: 0x0753,\n\t0xd36: 0x107f, 0xd37: 0x144f, 0xd38: 0x14cb, 0xd39: 0x0baf, 0xd3a: 0x0717, 0xd3b: 0x0777,\n\t0xd3c: 0x0a67, 0xd3d: 0x0a87, 0xd3e: 0x0caf, 0xd3f: 0x0d73,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x0ec3, 0xd41: 0x0fcb, 0xd42: 0x1277, 0xd43: 0x1417, 0xd44: 0x1623, 0xd45: 0x0ce3,\n\t0xd46: 0x14a3, 0xd47: 0x0833, 0xd48: 0x0d2f, 0xd49: 0x0d3b, 0xd4a: 0x0e0f, 0xd4b: 0x0e47,\n\t0xd4c: 0x0f4b, 0xd4d: 0x0fa7, 0xd4e: 0x1027, 0xd4f: 0x110b, 0xd50: 0x153b, 0xd51: 0x07af,\n\t0xd52: 0x0c03, 0xd53: 0x14b3, 0xd54: 0x0767, 0xd55: 0x0aab, 0xd56: 0x0e2f, 0xd57: 0x13df,\n\t0xd58: 0x0b67, 0xd59: 0x0bb7, 0xd5a: 0x0d43, 0xd5b: 0x0f2f, 0xd5c: 0x14bb, 0xd5d: 0x0817,\n\t0xd5e: 0x08ff, 0xd5f: 0x0a97, 0xd60: 0x0cd3, 0xd61: 0x0d1f, 0xd62: 0x0d5f, 0xd63: 0x0df3,\n\t0xd64: 0x0f47, 0xd65: 0x0fbb, 0xd66: 0x1157, 0xd67: 0x12f7, 0xd68: 0x1303, 0xd69: 0x1457,\n\t0xd6a: 0x14d7, 0xd6b: 0x0883, 0xd6c: 0x0e4b, 0xd6d: 0x0903, 0xd6e: 0x0ec7, 0xd6f: 0x0f6b,\n\t0xd70: 0x1287, 0xd71: 0x14bf, 0xd72: 0x15ab, 0xd73: 0x15d3, 0xd74: 0x0d37, 0xd75: 0x0e27,\n\t0xd76: 0x11c3, 0xd77: 0x10b7, 0xd78: 0x10c3, 0xd79: 0x10e7, 0xd7a: 0x0f17, 0xd7b: 0x0e9f,\n\t0xd7c: 0x1363, 0xd7d: 0x0733, 0xd7e: 0x122b, 0xd7f: 0x081b,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x080b, 0xd81: 0x0b0b, 0xd82: 0x0c2b, 0xd83: 0x10f3, 0xd84: 0x0a53, 0xd85: 0x0e03,\n\t0xd86: 0x0cef, 0xd87: 0x13e7, 0xd88: 0x12e7, 0xd89: 0x14ab, 0xd8a: 0x1323, 0xd8b: 0x0b27,\n\t0xd8c: 0x0787, 0xd8d: 0x095b, 0xd90: 0x09af,\n\t0xd92: 0x0cdf, 0xd95: 0x07f7, 0xd96: 0x0f1f, 0xd97: 0x0fe3,\n\t0xd98: 0x1047, 0xd99: 0x1063, 0xd9a: 0x1067, 0xd9b: 0x107b, 0xd9c: 0x14fb, 0xd9d: 0x10eb,\n\t0xd9e: 0x116f, 0xda0: 0x128f, 0xda2: 0x1353,\n\t0xda5: 0x1407, 0xda6: 0x1433,\n\t0xdaa: 0x154f, 0xdab: 0x1553, 0xdac: 0x1557, 0xdad: 0x15bb, 0xdae: 0x142b, 0xdaf: 0x14c7,\n\t0xdb0: 0x0757, 0xdb1: 0x077b, 0xdb2: 0x078f, 0xdb3: 0x084b, 0xdb4: 0x0857, 0xdb5: 0x0897,\n\t0xdb6: 0x094b, 0xdb7: 0x0967, 0xdb8: 0x096f, 0xdb9: 0x09ab, 0xdba: 0x09b7, 0xdbb: 0x0a93,\n\t0xdbc: 0x0a9b, 0xdbd: 0x0ba3, 0xdbe: 0x0bcb, 0xdbf: 0x0bd3,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0beb, 0xdc1: 0x0c97, 0xdc2: 0x0cc7, 0xdc3: 0x0ce7, 0xdc4: 0x0d57, 0xdc5: 0x0e1b,\n\t0xdc6: 0x0e37, 0xdc7: 0x0e67, 0xdc8: 0x0ebb, 0xdc9: 0x0edb, 0xdca: 0x0f4f, 0xdcb: 0x102f,\n\t0xdcc: 0x104b, 0xdcd: 0x1053, 0xdce: 0x104f, 0xdcf: 0x1057, 0xdd0: 0x105b, 0xdd1: 0x105f,\n\t0xdd2: 0x1073, 0xdd3: 0x1077, 0xdd4: 0x109b, 0xdd5: 0x10af, 0xdd6: 0x10cb, 0xdd7: 0x112f,\n\t0xdd8: 0x1137, 0xdd9: 0x113f, 0xdda: 0x1153, 0xddb: 0x117b, 0xddc: 0x11cb, 0xddd: 0x11ff,\n\t0xdde: 0x11ff, 0xddf: 0x1267, 0xde0: 0x130f, 0xde1: 0x1327, 0xde2: 0x135b, 0xde3: 0x135f,\n\t0xde4: 0x13a3, 0xde5: 0x13a7, 0xde6: 0x13ff, 0xde7: 0x1407, 0xde8: 0x14db, 0xde9: 0x151f,\n\t0xdea: 0x1537, 0xdeb: 0x0b9b, 0xdec: 0x171e, 0xded: 0x11e3,\n\t0xdf0: 0x06df, 0xdf1: 0x07e3, 0xdf2: 0x07a3, 0xdf3: 0x074b, 0xdf4: 0x078b, 0xdf5: 0x07b7,\n\t0xdf6: 0x0847, 0xdf7: 0x0863, 0xdf8: 0x094b, 0xdf9: 0x0937, 0xdfa: 0x0947, 0xdfb: 0x0963,\n\t0xdfc: 0x09af, 0xdfd: 0x09bf, 0xdfe: 0x0a03, 0xdff: 0x0a0f,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x0a2b, 0xe01: 0x0a3b, 0xe02: 0x0b23, 0xe03: 0x0b2b, 0xe04: 0x0b5b, 0xe05: 0x0b7b,\n\t0xe06: 0x0bab, 0xe07: 0x0bc3, 0xe08: 0x0bb3, 0xe09: 0x0bd3, 0xe0a: 0x0bc7, 0xe0b: 0x0beb,\n\t0xe0c: 0x0c07, 0xe0d: 0x0c5f, 0xe0e: 0x0c6b, 0xe0f: 0x0c73, 0xe10: 0x0c9b, 0xe11: 0x0cdf,\n\t0xe12: 0x0d0f, 0xe13: 0x0d13, 0xe14: 0x0d27, 0xe15: 0x0da7, 0xe16: 0x0db7, 0xe17: 0x0e0f,\n\t0xe18: 0x0e5b, 0xe19: 0x0e53, 0xe1a: 0x0e67, 0xe1b: 0x0e83, 0xe1c: 0x0ebb, 0xe1d: 0x1013,\n\t0xe1e: 0x0edf, 0xe1f: 0x0f13, 0xe20: 0x0f1f, 0xe21: 0x0f5f, 0xe22: 0x0f7b, 0xe23: 0x0f9f,\n\t0xe24: 0x0fc3, 0xe25: 0x0fc7, 0xe26: 0x0fe3, 0xe27: 0x0fe7, 0xe28: 0x0ff7, 0xe29: 0x100b,\n\t0xe2a: 0x1007, 0xe2b: 0x1037, 0xe2c: 0x10b3, 0xe2d: 0x10cb, 0xe2e: 0x10e3, 0xe2f: 0x111b,\n\t0xe30: 0x112f, 0xe31: 0x114b, 0xe32: 0x117b, 0xe33: 0x122f, 0xe34: 0x1257, 0xe35: 0x12cb,\n\t0xe36: 0x1313, 0xe37: 0x131f, 0xe38: 0x1327, 0xe39: 0x133f, 0xe3a: 0x1353, 0xe3b: 0x1343,\n\t0xe3c: 0x135b, 0xe3d: 0x1357, 0xe3e: 0x134f, 0xe3f: 0x135f,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x136b, 0xe41: 0x13a7, 0xe42: 0x13e3, 0xe43: 0x1413, 0xe44: 0x144b, 0xe45: 0x146b,\n\t0xe46: 0x14b7, 0xe47: 0x14db, 0xe48: 0x14fb, 0xe49: 0x150f, 0xe4a: 0x151f, 0xe4b: 0x152b,\n\t0xe4c: 0x1537, 0xe4d: 0x158b, 0xe4e: 0x162b, 0xe4f: 0x16b5, 0xe50: 0x16b0, 0xe51: 0x16e2,\n\t0xe52: 0x0607, 0xe53: 0x062f, 0xe54: 0x0633, 0xe55: 0x1764, 0xe56: 0x1791, 0xe57: 0x1809,\n\t0xe58: 0x1617, 0xe59: 0x1627,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x19d5, 0xe81: 0x19d8, 0xe82: 0x19db, 0xe83: 0x1c08, 0xe84: 0x1c0c, 0xe85: 0x1a5f,\n\t0xe86: 0x1a5f,\n\t0xe93: 0x1d75, 0xe94: 0x1d66, 0xe95: 0x1d6b, 0xe96: 0x1d7a, 0xe97: 0x1d70,\n\t0xe9d: 0x4390,\n\t0xe9e: 0x8115, 0xe9f: 0x4402, 0xea0: 0x022d, 0xea1: 0x0215, 0xea2: 0x021e, 0xea3: 0x0221,\n\t0xea4: 0x0224, 0xea5: 0x0227, 0xea6: 0x022a, 0xea7: 0x0230, 0xea8: 0x0233, 0xea9: 0x0017,\n\t0xeaa: 0x43f0, 0xeab: 0x43f6, 0xeac: 0x44f4, 0xead: 0x44fc, 0xeae: 0x4348, 0xeaf: 0x434e,\n\t0xeb0: 0x4354, 0xeb1: 0x435a, 0xeb2: 0x4366, 0xeb3: 0x436c, 0xeb4: 0x4372, 0xeb5: 0x437e,\n\t0xeb6: 0x4384, 0xeb8: 0x438a, 0xeb9: 0x4396, 0xeba: 0x439c, 0xebb: 0x43a2,\n\t0xebc: 0x43ae, 0xebe: 0x43b4,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x43ba, 0xec1: 0x43c0, 0xec3: 0x43c6, 0xec4: 0x43cc,\n\t0xec6: 0x43d8, 0xec7: 0x43de, 0xec8: 0x43e4, 0xec9: 0x43ea, 0xeca: 0x43fc, 0xecb: 0x4378,\n\t0xecc: 0x4360, 0xecd: 0x43a8, 0xece: 0x43d2, 0xecf: 0x1d7f, 0xed0: 0x0299, 0xed1: 0x0299,\n\t0xed2: 0x02a2, 0xed3: 0x02a2, 0xed4: 0x02a2, 0xed5: 0x02a2, 0xed6: 0x02a5, 0xed7: 0x02a5,\n\t0xed8: 0x02a5, 0xed9: 0x02a5, 0xeda: 0x02ab, 0xedb: 0x02ab, 0xedc: 0x02ab, 0xedd: 0x02ab,\n\t0xede: 0x029f, 0xedf: 0x029f, 0xee0: 0x029f, 0xee1: 0x029f, 0xee2: 0x02a8, 0xee3: 0x02a8,\n\t0xee4: 0x02a8, 0xee5: 0x02a8, 0xee6: 0x029c, 0xee7: 0x029c, 0xee8: 0x029c, 0xee9: 0x029c,\n\t0xeea: 0x02cf, 0xeeb: 0x02cf, 0xeec: 0x02cf, 0xeed: 0x02cf, 0xeee: 0x02d2, 0xeef: 0x02d2,\n\t0xef0: 0x02d2, 0xef1: 0x02d2, 0xef2: 0x02b1, 0xef3: 0x02b1, 0xef4: 0x02b1, 0xef5: 0x02b1,\n\t0xef6: 0x02ae, 0xef7: 0x02ae, 0xef8: 0x02ae, 0xef9: 0x02ae, 0xefa: 0x02b4, 0xefb: 0x02b4,\n\t0xefc: 0x02b4, 0xefd: 0x02b4, 0xefe: 0x02b7, 0xeff: 0x02b7,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x02b7, 0xf01: 0x02b7, 0xf02: 0x02c0, 0xf03: 0x02c0, 0xf04: 0x02bd, 0xf05: 0x02bd,\n\t0xf06: 0x02c3, 0xf07: 0x02c3, 0xf08: 0x02ba, 0xf09: 0x02ba, 0xf0a: 0x02c9, 0xf0b: 0x02c9,\n\t0xf0c: 0x02c6, 0xf0d: 0x02c6, 0xf0e: 0x02d5, 0xf0f: 0x02d5, 0xf10: 0x02d5, 0xf11: 0x02d5,\n\t0xf12: 0x02db, 0xf13: 0x02db, 0xf14: 0x02db, 0xf15: 0x02db, 0xf16: 0x02e1, 0xf17: 0x02e1,\n\t0xf18: 0x02e1, 0xf19: 0x02e1, 0xf1a: 0x02de, 0xf1b: 0x02de, 0xf1c: 0x02de, 0xf1d: 0x02de,\n\t0xf1e: 0x02e4, 0xf1f: 0x02e4, 0xf20: 0x02e7, 0xf21: 0x02e7, 0xf22: 0x02e7, 0xf23: 0x02e7,\n\t0xf24: 0x446e, 0xf25: 0x446e, 0xf26: 0x02ed, 0xf27: 0x02ed, 0xf28: 0x02ed, 0xf29: 0x02ed,\n\t0xf2a: 0x02ea, 0xf2b: 0x02ea, 0xf2c: 0x02ea, 0xf2d: 0x02ea, 0xf2e: 0x0308, 0xf2f: 0x0308,\n\t0xf30: 0x4468, 0xf31: 0x4468,\n\t// Block 0x3d, offset 0xf40\n\t0xf53: 0x02d8, 0xf54: 0x02d8, 0xf55: 0x02d8, 0xf56: 0x02d8, 0xf57: 0x02f6,\n\t0xf58: 0x02f6, 0xf59: 0x02f3, 0xf5a: 0x02f3, 0xf5b: 0x02f9, 0xf5c: 0x02f9, 0xf5d: 0x204f,\n\t0xf5e: 0x02ff, 0xf5f: 0x02ff, 0xf60: 0x02f0, 0xf61: 0x02f0, 0xf62: 0x02fc, 0xf63: 0x02fc,\n\t0xf64: 0x0305, 0xf65: 0x0305, 0xf66: 0x0305, 0xf67: 0x0305, 0xf68: 0x028d, 0xf69: 0x028d,\n\t0xf6a: 0x25aa, 0xf6b: 0x25aa, 0xf6c: 0x261a, 0xf6d: 0x261a, 0xf6e: 0x25e9, 0xf6f: 0x25e9,\n\t0xf70: 0x2605, 0xf71: 0x2605, 0xf72: 0x25fe, 0xf73: 0x25fe, 0xf74: 0x260c, 0xf75: 0x260c,\n\t0xf76: 0x2613, 0xf77: 0x2613, 0xf78: 0x2613, 0xf79: 0x25f0, 0xf7a: 0x25f0, 0xf7b: 0x25f0,\n\t0xf7c: 0x0302, 0xf7d: 0x0302, 0xf7e: 0x0302, 0xf7f: 0x0302,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x25b1, 0xf81: 0x25b8, 0xf82: 0x25d4, 0xf83: 0x25f0, 0xf84: 0x25f7, 0xf85: 0x1d89,\n\t0xf86: 0x1d8e, 0xf87: 0x1d93, 0xf88: 0x1da2, 0xf89: 0x1db1, 0xf8a: 0x1db6, 0xf8b: 0x1dbb,\n\t0xf8c: 0x1dc0, 0xf8d: 0x1dc5, 0xf8e: 0x1dd4, 0xf8f: 0x1de3, 0xf90: 0x1de8, 0xf91: 0x1ded,\n\t0xf92: 0x1dfc, 0xf93: 0x1e0b, 0xf94: 0x1e10, 0xf95: 0x1e15, 0xf96: 0x1e1a, 0xf97: 0x1e29,\n\t0xf98: 0x1e2e, 0xf99: 0x1e3d, 0xf9a: 0x1e42, 0xf9b: 0x1e47, 0xf9c: 0x1e56, 0xf9d: 0x1e5b,\n\t0xf9e: 0x1e60, 0xf9f: 0x1e6a, 0xfa0: 0x1ea6, 0xfa1: 0x1eb5, 0xfa2: 0x1ec4, 0xfa3: 0x1ec9,\n\t0xfa4: 0x1ece, 0xfa5: 0x1ed8, 0xfa6: 0x1ee7, 0xfa7: 0x1eec, 0xfa8: 0x1efb, 0xfa9: 0x1f00,\n\t0xfaa: 0x1f05, 0xfab: 0x1f14, 0xfac: 0x1f19, 0xfad: 0x1f28, 0xfae: 0x1f2d, 0xfaf: 0x1f32,\n\t0xfb0: 0x1f37, 0xfb1: 0x1f3c, 0xfb2: 0x1f41, 0xfb3: 0x1f46, 0xfb4: 0x1f4b, 0xfb5: 0x1f50,\n\t0xfb6: 0x1f55, 0xfb7: 0x1f5a, 0xfb8: 0x1f5f, 0xfb9: 0x1f64, 0xfba: 0x1f69, 0xfbb: 0x1f6e,\n\t0xfbc: 0x1f73, 0xfbd: 0x1f78, 0xfbe: 0x1f7d, 0xfbf: 0x1f87,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x1f8c, 0xfc1: 0x1f91, 0xfc2: 0x1f96, 0xfc3: 0x1fa0, 0xfc4: 0x1fa5, 0xfc5: 0x1faf,\n\t0xfc6: 0x1fb4, 0xfc7: 0x1fb9, 0xfc8: 0x1fbe, 0xfc9: 0x1fc3, 0xfca: 0x1fc8, 0xfcb: 0x1fcd,\n\t0xfcc: 0x1fd2, 0xfcd: 0x1fd7, 0xfce: 0x1fe6, 0xfcf: 0x1ff5, 0xfd0: 0x1ffa, 0xfd1: 0x1fff,\n\t0xfd2: 0x2004, 0xfd3: 0x2009, 0xfd4: 0x200e, 0xfd5: 0x2018, 0xfd6: 0x201d, 0xfd7: 0x2022,\n\t0xfd8: 0x2031, 0xfd9: 0x2040, 0xfda: 0x2045, 0xfdb: 0x4420, 0xfdc: 0x4426, 0xfdd: 0x445c,\n\t0xfde: 0x44b3, 0xfdf: 0x44ba, 0xfe0: 0x44c1, 0xfe1: 0x44c8, 0xfe2: 0x44cf, 0xfe3: 0x44d6,\n\t0xfe4: 0x25c6, 0xfe5: 0x25cd, 0xfe6: 0x25d4, 0xfe7: 0x25db, 0xfe8: 0x25f0, 0xfe9: 0x25f7,\n\t0xfea: 0x1d98, 0xfeb: 0x1d9d, 0xfec: 0x1da2, 0xfed: 0x1da7, 0xfee: 0x1db1, 0xfef: 0x1db6,\n\t0xff0: 0x1dca, 0xff1: 0x1dcf, 0xff2: 0x1dd4, 0xff3: 0x1dd9, 0xff4: 0x1de3, 0xff5: 0x1de8,\n\t0xff6: 0x1df2, 0xff7: 0x1df7, 0xff8: 0x1dfc, 0xff9: 0x1e01, 0xffa: 0x1e0b, 0xffb: 0x1e10,\n\t0xffc: 0x1f3c, 0xffd: 0x1f41, 0xffe: 0x1f50, 0xfff: 0x1f55,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x1f5a, 0x1001: 0x1f6e, 0x1002: 0x1f73, 0x1003: 0x1f78, 0x1004: 0x1f7d, 0x1005: 0x1f96,\n\t0x1006: 0x1fa0, 0x1007: 0x1fa5, 0x1008: 0x1faa, 0x1009: 0x1fbe, 0x100a: 0x1fdc, 0x100b: 0x1fe1,\n\t0x100c: 0x1fe6, 0x100d: 0x1feb, 0x100e: 0x1ff5, 0x100f: 0x1ffa, 0x1010: 0x445c, 0x1011: 0x2027,\n\t0x1012: 0x202c, 0x1013: 0x2031, 0x1014: 0x2036, 0x1015: 0x2040, 0x1016: 0x2045, 0x1017: 0x25b1,\n\t0x1018: 0x25b8, 0x1019: 0x25bf, 0x101a: 0x25d4, 0x101b: 0x25e2, 0x101c: 0x1d89, 0x101d: 0x1d8e,\n\t0x101e: 0x1d93, 0x101f: 0x1da2, 0x1020: 0x1dac, 0x1021: 0x1dbb, 0x1022: 0x1dc0, 0x1023: 0x1dc5,\n\t0x1024: 0x1dd4, 0x1025: 0x1dde, 0x1026: 0x1dfc, 0x1027: 0x1e15, 0x1028: 0x1e1a, 0x1029: 0x1e29,\n\t0x102a: 0x1e2e, 0x102b: 0x1e3d, 0x102c: 0x1e47, 0x102d: 0x1e56, 0x102e: 0x1e5b, 0x102f: 0x1e60,\n\t0x1030: 0x1e6a, 0x1031: 0x1ea6, 0x1032: 0x1eab, 0x1033: 0x1eb5, 0x1034: 0x1ec4, 0x1035: 0x1ec9,\n\t0x1036: 0x1ece, 0x1037: 0x1ed8, 0x1038: 0x1ee7, 0x1039: 0x1efb, 0x103a: 0x1f00, 0x103b: 0x1f05,\n\t0x103c: 0x1f14, 0x103d: 0x1f19, 0x103e: 0x1f28, 0x103f: 0x1f2d,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x1f32, 0x1041: 0x1f37, 0x1042: 0x1f46, 0x1043: 0x1f4b, 0x1044: 0x1f5f, 0x1045: 0x1f64,\n\t0x1046: 0x1f69, 0x1047: 0x1f6e, 0x1048: 0x1f73, 0x1049: 0x1f87, 0x104a: 0x1f8c, 0x104b: 0x1f91,\n\t0x104c: 0x1f96, 0x104d: 0x1f9b, 0x104e: 0x1faf, 0x104f: 0x1fb4, 0x1050: 0x1fb9, 0x1051: 0x1fbe,\n\t0x1052: 0x1fcd, 0x1053: 0x1fd2, 0x1054: 0x1fd7, 0x1055: 0x1fe6, 0x1056: 0x1ff0, 0x1057: 0x1fff,\n\t0x1058: 0x2004, 0x1059: 0x4450, 0x105a: 0x2018, 0x105b: 0x201d, 0x105c: 0x2022, 0x105d: 0x2031,\n\t0x105e: 0x203b, 0x105f: 0x25d4, 0x1060: 0x25e2, 0x1061: 0x1da2, 0x1062: 0x1dac, 0x1063: 0x1dd4,\n\t0x1064: 0x1dde, 0x1065: 0x1dfc, 0x1066: 0x1e06, 0x1067: 0x1e6a, 0x1068: 0x1e6f, 0x1069: 0x1e92,\n\t0x106a: 0x1e97, 0x106b: 0x1f6e, 0x106c: 0x1f73, 0x106d: 0x1f96, 0x106e: 0x1fe6, 0x106f: 0x1ff0,\n\t0x1070: 0x2031, 0x1071: 0x203b, 0x1072: 0x4504, 0x1073: 0x450c, 0x1074: 0x4514, 0x1075: 0x1ef1,\n\t0x1076: 0x1ef6, 0x1077: 0x1f0a, 0x1078: 0x1f0f, 0x1079: 0x1f1e, 0x107a: 0x1f23, 0x107b: 0x1e74,\n\t0x107c: 0x1e79, 0x107d: 0x1e9c, 0x107e: 0x1ea1, 0x107f: 0x1e33,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x1e38, 0x1081: 0x1e1f, 0x1082: 0x1e24, 0x1083: 0x1e4c, 0x1084: 0x1e51, 0x1085: 0x1eba,\n\t0x1086: 0x1ebf, 0x1087: 0x1edd, 0x1088: 0x1ee2, 0x1089: 0x1e7e, 0x108a: 0x1e83, 0x108b: 0x1e88,\n\t0x108c: 0x1e92, 0x108d: 0x1e8d, 0x108e: 0x1e65, 0x108f: 0x1eb0, 0x1090: 0x1ed3, 0x1091: 0x1ef1,\n\t0x1092: 0x1ef6, 0x1093: 0x1f0a, 0x1094: 0x1f0f, 0x1095: 0x1f1e, 0x1096: 0x1f23, 0x1097: 0x1e74,\n\t0x1098: 0x1e79, 0x1099: 0x1e9c, 0x109a: 0x1ea1, 0x109b: 0x1e33, 0x109c: 0x1e38, 0x109d: 0x1e1f,\n\t0x109e: 0x1e24, 0x109f: 0x1e4c, 0x10a0: 0x1e51, 0x10a1: 0x1eba, 0x10a2: 0x1ebf, 0x10a3: 0x1edd,\n\t0x10a4: 0x1ee2, 0x10a5: 0x1e7e, 0x10a6: 0x1e83, 0x10a7: 0x1e88, 0x10a8: 0x1e92, 0x10a9: 0x1e8d,\n\t0x10aa: 0x1e65, 0x10ab: 0x1eb0, 0x10ac: 0x1ed3, 0x10ad: 0x1e7e, 0x10ae: 0x1e83, 0x10af: 0x1e88,\n\t0x10b0: 0x1e92, 0x10b1: 0x1e6f, 0x10b2: 0x1e97, 0x10b3: 0x1eec, 0x10b4: 0x1e56, 0x10b5: 0x1e5b,\n\t0x10b6: 0x1e60, 0x10b7: 0x1e7e, 0x10b8: 0x1e83, 0x10b9: 0x1e88, 0x10ba: 0x1eec, 0x10bb: 0x1efb,\n\t0x10bc: 0x4408, 0x10bd: 0x4408,\n\t// Block 0x43, offset 0x10c0\n\t0x10d0: 0x2311, 0x10d1: 0x2326,\n\t0x10d2: 0x2326, 0x10d3: 0x232d, 0x10d4: 0x2334, 0x10d5: 0x2349, 0x10d6: 0x2350, 0x10d7: 0x2357,\n\t0x10d8: 0x237a, 0x10d9: 0x237a, 0x10da: 0x239d, 0x10db: 0x2396, 0x10dc: 0x23b2, 0x10dd: 0x23a4,\n\t0x10de: 0x23ab, 0x10df: 0x23ce, 0x10e0: 0x23ce, 0x10e1: 0x23c7, 0x10e2: 0x23d5, 0x10e3: 0x23d5,\n\t0x10e4: 0x23ff, 0x10e5: 0x23ff, 0x10e6: 0x241b, 0x10e7: 0x23e3, 0x10e8: 0x23e3, 0x10e9: 0x23dc,\n\t0x10ea: 0x23f1, 0x10eb: 0x23f1, 0x10ec: 0x23f8, 0x10ed: 0x23f8, 0x10ee: 0x2422, 0x10ef: 0x2430,\n\t0x10f0: 0x2430, 0x10f1: 0x2437, 0x10f2: 0x2437, 0x10f3: 0x243e, 0x10f4: 0x2445, 0x10f5: 0x244c,\n\t0x10f6: 0x2453, 0x10f7: 0x2453, 0x10f8: 0x245a, 0x10f9: 0x2468, 0x10fa: 0x2476, 0x10fb: 0x246f,\n\t0x10fc: 0x247d, 0x10fd: 0x247d, 0x10fe: 0x2492, 0x10ff: 0x2499,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0x24ca, 0x1101: 0x24d8, 0x1102: 0x24d1, 0x1103: 0x24b5, 0x1104: 0x24b5, 0x1105: 0x24df,\n\t0x1106: 0x24df, 0x1107: 0x24e6, 0x1108: 0x24e6, 0x1109: 0x2510, 0x110a: 0x2517, 0x110b: 0x251e,\n\t0x110c: 0x24f4, 0x110d: 0x2502, 0x110e: 0x2525, 0x110f: 0x252c,\n\t0x1112: 0x24fb, 0x1113: 0x2580, 0x1114: 0x2587, 0x1115: 0x255d, 0x1116: 0x2564, 0x1117: 0x2548,\n\t0x1118: 0x2548, 0x1119: 0x254f, 0x111a: 0x2579, 0x111b: 0x2572, 0x111c: 0x259c, 0x111d: 0x259c,\n\t0x111e: 0x230a, 0x111f: 0x231f, 0x1120: 0x2318, 0x1121: 0x2342, 0x1122: 0x233b, 0x1123: 0x2365,\n\t0x1124: 0x235e, 0x1125: 0x2388, 0x1126: 0x236c, 0x1127: 0x2381, 0x1128: 0x23b9, 0x1129: 0x2406,\n\t0x112a: 0x23ea, 0x112b: 0x2429, 0x112c: 0x24c3, 0x112d: 0x24ed, 0x112e: 0x2595, 0x112f: 0x258e,\n\t0x1130: 0x25a3, 0x1131: 0x253a, 0x1132: 0x24a0, 0x1133: 0x256b, 0x1134: 0x2492, 0x1135: 0x24ca,\n\t0x1136: 0x2461, 0x1137: 0x24ae, 0x1138: 0x2541, 0x1139: 0x2533, 0x113a: 0x24bc, 0x113b: 0x24a7,\n\t0x113c: 0x24bc, 0x113d: 0x2541, 0x113e: 0x2373, 0x113f: 0x238f,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0x2509, 0x1141: 0x2484, 0x1142: 0x2303, 0x1143: 0x24a7, 0x1144: 0x244c, 0x1145: 0x241b,\n\t0x1146: 0x23c0, 0x1147: 0x2556,\n\t0x1170: 0x2414, 0x1171: 0x248b, 0x1172: 0x27bf, 0x1173: 0x27b6, 0x1174: 0x27ec, 0x1175: 0x27da,\n\t0x1176: 0x27c8, 0x1177: 0x27e3, 0x1178: 0x27f5, 0x1179: 0x240d, 0x117a: 0x2c7c, 0x117b: 0x2afc,\n\t0x117c: 0x27d1,\n\t// Block 0x46, offset 0x1180\n\t0x1190: 0x0019, 0x1191: 0x0483,\n\t0x1192: 0x0487, 0x1193: 0x0035, 0x1194: 0x0037, 0x1195: 0x0003, 0x1196: 0x003f, 0x1197: 0x04bf,\n\t0x1198: 0x04c3, 0x1199: 0x1b5c,\n\t0x11a0: 0x8132, 0x11a1: 0x8132, 0x11a2: 0x8132, 0x11a3: 0x8132,\n\t0x11a4: 0x8132, 0x11a5: 0x8132, 0x11a6: 0x8132, 0x11a7: 0x812d, 0x11a8: 0x812d, 0x11a9: 0x812d,\n\t0x11aa: 0x812d, 0x11ab: 0x812d, 0x11ac: 0x812d, 0x11ad: 0x812d, 0x11ae: 0x8132, 0x11af: 0x8132,\n\t0x11b0: 0x1873, 0x11b1: 0x0443, 0x11b2: 0x043f, 0x11b3: 0x007f, 0x11b4: 0x007f, 0x11b5: 0x0011,\n\t0x11b6: 0x0013, 0x11b7: 0x00b7, 0x11b8: 0x00bb, 0x11b9: 0x04b7, 0x11ba: 0x04bb, 0x11bb: 0x04ab,\n\t0x11bc: 0x04af, 0x11bd: 0x0493, 0x11be: 0x0497, 0x11bf: 0x048b,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0x048f, 0x11c1: 0x049b, 0x11c2: 0x049f, 0x11c3: 0x04a3, 0x11c4: 0x04a7,\n\t0x11c7: 0x0077, 0x11c8: 0x007b, 0x11c9: 0x4269, 0x11ca: 0x4269, 0x11cb: 0x4269,\n\t0x11cc: 0x4269, 0x11cd: 0x007f, 0x11ce: 0x007f, 0x11cf: 0x007f, 0x11d0: 0x0019, 0x11d1: 0x0483,\n\t0x11d2: 0x001d, 0x11d4: 0x0037, 0x11d5: 0x0035, 0x11d6: 0x003f, 0x11d7: 0x0003,\n\t0x11d8: 0x0443, 0x11d9: 0x0011, 0x11da: 0x0013, 0x11db: 0x00b7, 0x11dc: 0x00bb, 0x11dd: 0x04b7,\n\t0x11de: 0x04bb, 0x11df: 0x0007, 0x11e0: 0x000d, 0x11e1: 0x0015, 0x11e2: 0x0017, 0x11e3: 0x001b,\n\t0x11e4: 0x0039, 0x11e5: 0x003d, 0x11e6: 0x003b, 0x11e8: 0x0079, 0x11e9: 0x0009,\n\t0x11ea: 0x000b, 0x11eb: 0x0041,\n\t0x11f0: 0x42aa, 0x11f1: 0x442c, 0x11f2: 0x42af, 0x11f4: 0x42b4,\n\t0x11f6: 0x42b9, 0x11f7: 0x4432, 0x11f8: 0x42be, 0x11f9: 0x4438, 0x11fa: 0x42c3, 0x11fb: 0x443e,\n\t0x11fc: 0x42c8, 0x11fd: 0x4444, 0x11fe: 0x42cd, 0x11ff: 0x444a,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x0236, 0x1201: 0x440e, 0x1202: 0x440e, 0x1203: 0x4414, 0x1204: 0x4414, 0x1205: 0x4456,\n\t0x1206: 0x4456, 0x1207: 0x441a, 0x1208: 0x441a, 0x1209: 0x4462, 0x120a: 0x4462, 0x120b: 0x4462,\n\t0x120c: 0x4462, 0x120d: 0x0239, 0x120e: 0x0239, 0x120f: 0x023c, 0x1210: 0x023c, 0x1211: 0x023c,\n\t0x1212: 0x023c, 0x1213: 0x023f, 0x1214: 0x023f, 0x1215: 0x0242, 0x1216: 0x0242, 0x1217: 0x0242,\n\t0x1218: 0x0242, 0x1219: 0x0245, 0x121a: 0x0245, 0x121b: 0x0245, 0x121c: 0x0245, 0x121d: 0x0248,\n\t0x121e: 0x0248, 0x121f: 0x0248, 0x1220: 0x0248, 0x1221: 0x024b, 0x1222: 0x024b, 0x1223: 0x024b,\n\t0x1224: 0x024b, 0x1225: 0x024e, 0x1226: 0x024e, 0x1227: 0x024e, 0x1228: 0x024e, 0x1229: 0x0251,\n\t0x122a: 0x0251, 0x122b: 0x0254, 0x122c: 0x0254, 0x122d: 0x0257, 0x122e: 0x0257, 0x122f: 0x025a,\n\t0x1230: 0x025a, 0x1231: 0x025d, 0x1232: 0x025d, 0x1233: 0x025d, 0x1234: 0x025d, 0x1235: 0x0260,\n\t0x1236: 0x0260, 0x1237: 0x0260, 0x1238: 0x0260, 0x1239: 0x0263, 0x123a: 0x0263, 0x123b: 0x0263,\n\t0x123c: 0x0263, 0x123d: 0x0266, 0x123e: 0x0266, 0x123f: 0x0266,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x0266, 0x1241: 0x0269, 0x1242: 0x0269, 0x1243: 0x0269, 0x1244: 0x0269, 0x1245: 0x026c,\n\t0x1246: 0x026c, 0x1247: 0x026c, 0x1248: 0x026c, 0x1249: 0x026f, 0x124a: 0x026f, 0x124b: 0x026f,\n\t0x124c: 0x026f, 0x124d: 0x0272, 0x124e: 0x0272, 0x124f: 0x0272, 0x1250: 0x0272, 0x1251: 0x0275,\n\t0x1252: 0x0275, 0x1253: 0x0275, 0x1254: 0x0275, 0x1255: 0x0278, 0x1256: 0x0278, 0x1257: 0x0278,\n\t0x1258: 0x0278, 0x1259: 0x027b, 0x125a: 0x027b, 0x125b: 0x027b, 0x125c: 0x027b, 0x125d: 0x027e,\n\t0x125e: 0x027e, 0x125f: 0x027e, 0x1260: 0x027e, 0x1261: 0x0281, 0x1262: 0x0281, 0x1263: 0x0281,\n\t0x1264: 0x0281, 0x1265: 0x0284, 0x1266: 0x0284, 0x1267: 0x0284, 0x1268: 0x0284, 0x1269: 0x0287,\n\t0x126a: 0x0287, 0x126b: 0x0287, 0x126c: 0x0287, 0x126d: 0x028a, 0x126e: 0x028a, 0x126f: 0x028d,\n\t0x1270: 0x028d, 0x1271: 0x0290, 0x1272: 0x0290, 0x1273: 0x0290, 0x1274: 0x0290, 0x1275: 0x2e00,\n\t0x1276: 0x2e00, 0x1277: 0x2e08, 0x1278: 0x2e08, 0x1279: 0x2e10, 0x127a: 0x2e10, 0x127b: 0x1f82,\n\t0x127c: 0x1f82,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x0081, 0x1281: 0x0083, 0x1282: 0x0085, 0x1283: 0x0087, 0x1284: 0x0089, 0x1285: 0x008b,\n\t0x1286: 0x008d, 0x1287: 0x008f, 0x1288: 0x0091, 0x1289: 0x0093, 0x128a: 0x0095, 0x128b: 0x0097,\n\t0x128c: 0x0099, 0x128d: 0x009b, 0x128e: 0x009d, 0x128f: 0x009f, 0x1290: 0x00a1, 0x1291: 0x00a3,\n\t0x1292: 0x00a5, 0x1293: 0x00a7, 0x1294: 0x00a9, 0x1295: 0x00ab, 0x1296: 0x00ad, 0x1297: 0x00af,\n\t0x1298: 0x00b1, 0x1299: 0x00b3, 0x129a: 0x00b5, 0x129b: 0x00b7, 0x129c: 0x00b9, 0x129d: 0x00bb,\n\t0x129e: 0x00bd, 0x129f: 0x0477, 0x12a0: 0x047b, 0x12a1: 0x0487, 0x12a2: 0x049b, 0x12a3: 0x049f,\n\t0x12a4: 0x0483, 0x12a5: 0x05ab, 0x12a6: 0x05a3, 0x12a7: 0x04c7, 0x12a8: 0x04cf, 0x12a9: 0x04d7,\n\t0x12aa: 0x04df, 0x12ab: 0x04e7, 0x12ac: 0x056b, 0x12ad: 0x0573, 0x12ae: 0x057b, 0x12af: 0x051f,\n\t0x12b0: 0x05af, 0x12b1: 0x04cb, 0x12b2: 0x04d3, 0x12b3: 0x04db, 0x12b4: 0x04e3, 0x12b5: 0x04eb,\n\t0x12b6: 0x04ef, 0x12b7: 0x04f3, 0x12b8: 0x04f7, 0x12b9: 0x04fb, 0x12ba: 0x04ff, 0x12bb: 0x0503,\n\t0x12bc: 0x0507, 0x12bd: 0x050b, 0x12be: 0x050f, 0x12bf: 0x0513,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x0517, 0x12c1: 0x051b, 0x12c2: 0x0523, 0x12c3: 0x0527, 0x12c4: 0x052b, 0x12c5: 0x052f,\n\t0x12c6: 0x0533, 0x12c7: 0x0537, 0x12c8: 0x053b, 0x12c9: 0x053f, 0x12ca: 0x0543, 0x12cb: 0x0547,\n\t0x12cc: 0x054b, 0x12cd: 0x054f, 0x12ce: 0x0553, 0x12cf: 0x0557, 0x12d0: 0x055b, 0x12d1: 0x055f,\n\t0x12d2: 0x0563, 0x12d3: 0x0567, 0x12d4: 0x056f, 0x12d5: 0x0577, 0x12d6: 0x057f, 0x12d7: 0x0583,\n\t0x12d8: 0x0587, 0x12d9: 0x058b, 0x12da: 0x058f, 0x12db: 0x0593, 0x12dc: 0x0597, 0x12dd: 0x05a7,\n\t0x12de: 0x4a78, 0x12df: 0x4a7e, 0x12e0: 0x03c3, 0x12e1: 0x0313, 0x12e2: 0x0317, 0x12e3: 0x4a3b,\n\t0x12e4: 0x031b, 0x12e5: 0x4a41, 0x12e6: 0x4a47, 0x12e7: 0x031f, 0x12e8: 0x0323, 0x12e9: 0x0327,\n\t0x12ea: 0x4a4d, 0x12eb: 0x4a53, 0x12ec: 0x4a59, 0x12ed: 0x4a5f, 0x12ee: 0x4a65, 0x12ef: 0x4a6b,\n\t0x12f0: 0x0367, 0x12f1: 0x032b, 0x12f2: 0x032f, 0x12f3: 0x0333, 0x12f4: 0x037b, 0x12f5: 0x0337,\n\t0x12f6: 0x033b, 0x12f7: 0x033f, 0x12f8: 0x0343, 0x12f9: 0x0347, 0x12fa: 0x034b, 0x12fb: 0x034f,\n\t0x12fc: 0x0353, 0x12fd: 0x0357, 0x12fe: 0x035b,\n\t// Block 0x4c, offset 0x1300\n\t0x1302: 0x49bd, 0x1303: 0x49c3, 0x1304: 0x49c9, 0x1305: 0x49cf,\n\t0x1306: 0x49d5, 0x1307: 0x49db, 0x130a: 0x49e1, 0x130b: 0x49e7,\n\t0x130c: 0x49ed, 0x130d: 0x49f3, 0x130e: 0x49f9, 0x130f: 0x49ff,\n\t0x1312: 0x4a05, 0x1313: 0x4a0b, 0x1314: 0x4a11, 0x1315: 0x4a17, 0x1316: 0x4a1d, 0x1317: 0x4a23,\n\t0x131a: 0x4a29, 0x131b: 0x4a2f, 0x131c: 0x4a35,\n\t0x1320: 0x00bf, 0x1321: 0x00c2, 0x1322: 0x00cb, 0x1323: 0x4264,\n\t0x1324: 0x00c8, 0x1325: 0x00c5, 0x1326: 0x0447, 0x1328: 0x046b, 0x1329: 0x044b,\n\t0x132a: 0x044f, 0x132b: 0x0453, 0x132c: 0x0457, 0x132d: 0x046f, 0x132e: 0x0473,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x0063, 0x1341: 0x0065, 0x1342: 0x0067, 0x1343: 0x0069, 0x1344: 0x006b, 0x1345: 0x006d,\n\t0x1346: 0x006f, 0x1347: 0x0071, 0x1348: 0x0073, 0x1349: 0x0075, 0x134a: 0x0083, 0x134b: 0x0085,\n\t0x134c: 0x0087, 0x134d: 0x0089, 0x134e: 0x008b, 0x134f: 0x008d, 0x1350: 0x008f, 0x1351: 0x0091,\n\t0x1352: 0x0093, 0x1353: 0x0095, 0x1354: 0x0097, 0x1355: 0x0099, 0x1356: 0x009b, 0x1357: 0x009d,\n\t0x1358: 0x009f, 0x1359: 0x00a1, 0x135a: 0x00a3, 0x135b: 0x00a5, 0x135c: 0x00a7, 0x135d: 0x00a9,\n\t0x135e: 0x00ab, 0x135f: 0x00ad, 0x1360: 0x00af, 0x1361: 0x00b1, 0x1362: 0x00b3, 0x1363: 0x00b5,\n\t0x1364: 0x00dd, 0x1365: 0x00f2, 0x1368: 0x0173, 0x1369: 0x0176,\n\t0x136a: 0x0179, 0x136b: 0x017c, 0x136c: 0x017f, 0x136d: 0x0182, 0x136e: 0x0185, 0x136f: 0x0188,\n\t0x1370: 0x018b, 0x1371: 0x018e, 0x1372: 0x0191, 0x1373: 0x0194, 0x1374: 0x0197, 0x1375: 0x019a,\n\t0x1376: 0x019d, 0x1377: 0x01a0, 0x1378: 0x01a3, 0x1379: 0x0188, 0x137a: 0x01a6, 0x137b: 0x01a9,\n\t0x137c: 0x01ac, 0x137d: 0x01af, 0x137e: 0x01b2, 0x137f: 0x01b5,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x01fd, 0x1381: 0x0200, 0x1382: 0x0203, 0x1383: 0x045b, 0x1384: 0x01c7, 0x1385: 0x01d0,\n\t0x1386: 0x01d6, 0x1387: 0x01fa, 0x1388: 0x01eb, 0x1389: 0x01e8, 0x138a: 0x0206, 0x138b: 0x0209,\n\t0x138e: 0x0021, 0x138f: 0x0023, 0x1390: 0x0025, 0x1391: 0x0027,\n\t0x1392: 0x0029, 0x1393: 0x002b, 0x1394: 0x002d, 0x1395: 0x002f, 0x1396: 0x0031, 0x1397: 0x0033,\n\t0x1398: 0x0021, 0x1399: 0x0023, 0x139a: 0x0025, 0x139b: 0x0027, 0x139c: 0x0029, 0x139d: 0x002b,\n\t0x139e: 0x002d, 0x139f: 0x002f, 0x13a0: 0x0031, 0x13a1: 0x0033, 0x13a2: 0x0021, 0x13a3: 0x0023,\n\t0x13a4: 0x0025, 0x13a5: 0x0027, 0x13a6: 0x0029, 0x13a7: 0x002b, 0x13a8: 0x002d, 0x13a9: 0x002f,\n\t0x13aa: 0x0031, 0x13ab: 0x0033, 0x13ac: 0x0021, 0x13ad: 0x0023, 0x13ae: 0x0025, 0x13af: 0x0027,\n\t0x13b0: 0x0029, 0x13b1: 0x002b, 0x13b2: 0x002d, 0x13b3: 0x002f, 0x13b4: 0x0031, 0x13b5: 0x0033,\n\t0x13b6: 0x0021, 0x13b7: 0x0023, 0x13b8: 0x0025, 0x13b9: 0x0027, 0x13ba: 0x0029, 0x13bb: 0x002b,\n\t0x13bc: 0x002d, 0x13bd: 0x002f, 0x13be: 0x0031, 0x13bf: 0x0033,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x0239, 0x13c1: 0x023c, 0x13c2: 0x0248, 0x13c3: 0x0251, 0x13c5: 0x028a,\n\t0x13c6: 0x025a, 0x13c7: 0x024b, 0x13c8: 0x0269, 0x13c9: 0x0290, 0x13ca: 0x027b, 0x13cb: 0x027e,\n\t0x13cc: 0x0281, 0x13cd: 0x0284, 0x13ce: 0x025d, 0x13cf: 0x026f, 0x13d0: 0x0275, 0x13d1: 0x0263,\n\t0x13d2: 0x0278, 0x13d3: 0x0257, 0x13d4: 0x0260, 0x13d5: 0x0242, 0x13d6: 0x0245, 0x13d7: 0x024e,\n\t0x13d8: 0x0254, 0x13d9: 0x0266, 0x13da: 0x026c, 0x13db: 0x0272, 0x13dc: 0x0293, 0x13dd: 0x02e4,\n\t0x13de: 0x02cc, 0x13df: 0x0296, 0x13e1: 0x023c, 0x13e2: 0x0248,\n\t0x13e4: 0x0287, 0x13e7: 0x024b, 0x13e9: 0x0290,\n\t0x13ea: 0x027b, 0x13eb: 0x027e, 0x13ec: 0x0281, 0x13ed: 0x0284, 0x13ee: 0x025d, 0x13ef: 0x026f,\n\t0x13f0: 0x0275, 0x13f1: 0x0263, 0x13f2: 0x0278, 0x13f4: 0x0260, 0x13f5: 0x0242,\n\t0x13f6: 0x0245, 0x13f7: 0x024e, 0x13f9: 0x0266, 0x13fb: 0x0272,\n\t// Block 0x50, offset 0x1400\n\t0x1402: 0x0248,\n\t0x1407: 0x024b, 0x1409: 0x0290, 0x140b: 0x027e,\n\t0x140d: 0x0284, 0x140e: 0x025d, 0x140f: 0x026f, 0x1411: 0x0263,\n\t0x1412: 0x0278, 0x1414: 0x0260, 0x1417: 0x024e,\n\t0x1419: 0x0266, 0x141b: 0x0272, 0x141d: 0x02e4,\n\t0x141f: 0x0296, 0x1421: 0x023c, 0x1422: 0x0248,\n\t0x1424: 0x0287, 0x1427: 0x024b, 0x1428: 0x0269, 0x1429: 0x0290,\n\t0x142a: 0x027b, 0x142c: 0x0281, 0x142d: 0x0284, 0x142e: 0x025d, 0x142f: 0x026f,\n\t0x1430: 0x0275, 0x1431: 0x0263, 0x1432: 0x0278, 0x1434: 0x0260, 0x1435: 0x0242,\n\t0x1436: 0x0245, 0x1437: 0x024e, 0x1439: 0x0266, 0x143a: 0x026c, 0x143b: 0x0272,\n\t0x143c: 0x0293, 0x143e: 0x02cc,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x0239, 0x1441: 0x023c, 0x1442: 0x0248, 0x1443: 0x0251, 0x1444: 0x0287, 0x1445: 0x028a,\n\t0x1446: 0x025a, 0x1447: 0x024b, 0x1448: 0x0269, 0x1449: 0x0290, 0x144b: 0x027e,\n\t0x144c: 0x0281, 0x144d: 0x0284, 0x144e: 0x025d, 0x144f: 0x026f, 0x1450: 0x0275, 0x1451: 0x0263,\n\t0x1452: 0x0278, 0x1453: 0x0257, 0x1454: 0x0260, 0x1455: 0x0242, 0x1456: 0x0245, 0x1457: 0x024e,\n\t0x1458: 0x0254, 0x1459: 0x0266, 0x145a: 0x026c, 0x145b: 0x0272,\n\t0x1461: 0x023c, 0x1462: 0x0248, 0x1463: 0x0251,\n\t0x1465: 0x028a, 0x1466: 0x025a, 0x1467: 0x024b, 0x1468: 0x0269, 0x1469: 0x0290,\n\t0x146b: 0x027e, 0x146c: 0x0281, 0x146d: 0x0284, 0x146e: 0x025d, 0x146f: 0x026f,\n\t0x1470: 0x0275, 0x1471: 0x0263, 0x1472: 0x0278, 0x1473: 0x0257, 0x1474: 0x0260, 0x1475: 0x0242,\n\t0x1476: 0x0245, 0x1477: 0x024e, 0x1478: 0x0254, 0x1479: 0x0266, 0x147a: 0x026c, 0x147b: 0x0272,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x1879, 0x1481: 0x1876, 0x1482: 0x187c, 0x1483: 0x18a0, 0x1484: 0x18c4, 0x1485: 0x18e8,\n\t0x1486: 0x190c, 0x1487: 0x1915, 0x1488: 0x191b, 0x1489: 0x1921, 0x148a: 0x1927,\n\t0x1490: 0x1a8c, 0x1491: 0x1a90,\n\t0x1492: 0x1a94, 0x1493: 0x1a98, 0x1494: 0x1a9c, 0x1495: 0x1aa0, 0x1496: 0x1aa4, 0x1497: 0x1aa8,\n\t0x1498: 0x1aac, 0x1499: 0x1ab0, 0x149a: 0x1ab4, 0x149b: 0x1ab8, 0x149c: 0x1abc, 0x149d: 0x1ac0,\n\t0x149e: 0x1ac4, 0x149f: 0x1ac8, 0x14a0: 0x1acc, 0x14a1: 0x1ad0, 0x14a2: 0x1ad4, 0x14a3: 0x1ad8,\n\t0x14a4: 0x1adc, 0x14a5: 0x1ae0, 0x14a6: 0x1ae4, 0x14a7: 0x1ae8, 0x14a8: 0x1aec, 0x14a9: 0x1af0,\n\t0x14aa: 0x271e, 0x14ab: 0x0047, 0x14ac: 0x0065, 0x14ad: 0x193c, 0x14ae: 0x19b1,\n\t0x14b0: 0x0043, 0x14b1: 0x0045, 0x14b2: 0x0047, 0x14b3: 0x0049, 0x14b4: 0x004b, 0x14b5: 0x004d,\n\t0x14b6: 0x004f, 0x14b7: 0x0051, 0x14b8: 0x0053, 0x14b9: 0x0055, 0x14ba: 0x0057, 0x14bb: 0x0059,\n\t0x14bc: 0x005b, 0x14bd: 0x005d, 0x14be: 0x005f, 0x14bf: 0x0061,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x26ad, 0x14c1: 0x26c2, 0x14c2: 0x0503,\n\t0x14d0: 0x0c0f, 0x14d1: 0x0a47,\n\t0x14d2: 0x08d3, 0x14d3: 0x45c4, 0x14d4: 0x071b, 0x14d5: 0x09ef, 0x14d6: 0x132f, 0x14d7: 0x09ff,\n\t0x14d8: 0x0727, 0x14d9: 0x0cd7, 0x14da: 0x0eaf, 0x14db: 0x0caf, 0x14dc: 0x0827, 0x14dd: 0x0b6b,\n\t0x14de: 0x07bf, 0x14df: 0x0cb7, 0x14e0: 0x0813, 0x14e1: 0x1117, 0x14e2: 0x0f83, 0x14e3: 0x138b,\n\t0x14e4: 0x09d3, 0x14e5: 0x090b, 0x14e6: 0x0e63, 0x14e7: 0x0c1b, 0x14e8: 0x0c47, 0x14e9: 0x06bf,\n\t0x14ea: 0x06cb, 0x14eb: 0x140b, 0x14ec: 0x0adb, 0x14ed: 0x06e7, 0x14ee: 0x08ef, 0x14ef: 0x0c3b,\n\t0x14f0: 0x13b3, 0x14f1: 0x0c13, 0x14f2: 0x106f, 0x14f3: 0x10ab, 0x14f4: 0x08f7, 0x14f5: 0x0e43,\n\t0x14f6: 0x0d0b, 0x14f7: 0x0d07, 0x14f8: 0x0f97, 0x14f9: 0x082b, 0x14fa: 0x0957, 0x14fb: 0x1443,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x06fb, 0x1501: 0x06f3, 0x1502: 0x0703, 0x1503: 0x1647, 0x1504: 0x0747, 0x1505: 0x0757,\n\t0x1506: 0x075b, 0x1507: 0x0763, 0x1508: 0x076b, 0x1509: 0x076f, 0x150a: 0x077b, 0x150b: 0x0773,\n\t0x150c: 0x05b3, 0x150d: 0x165b, 0x150e: 0x078f, 0x150f: 0x0793, 0x1510: 0x0797, 0x1511: 0x07b3,\n\t0x1512: 0x164c, 0x1513: 0x05b7, 0x1514: 0x079f, 0x1515: 0x07bf, 0x1516: 0x1656, 0x1517: 0x07cf,\n\t0x1518: 0x07d7, 0x1519: 0x0737, 0x151a: 0x07df, 0x151b: 0x07e3, 0x151c: 0x1831, 0x151d: 0x07ff,\n\t0x151e: 0x0807, 0x151f: 0x05bf, 0x1520: 0x081f, 0x1521: 0x0823, 0x1522: 0x082b, 0x1523: 0x082f,\n\t0x1524: 0x05c3, 0x1525: 0x0847, 0x1526: 0x084b, 0x1527: 0x0857, 0x1528: 0x0863, 0x1529: 0x0867,\n\t0x152a: 0x086b, 0x152b: 0x0873, 0x152c: 0x0893, 0x152d: 0x0897, 0x152e: 0x089f, 0x152f: 0x08af,\n\t0x1530: 0x08b7, 0x1531: 0x08bb, 0x1532: 0x08bb, 0x1533: 0x08bb, 0x1534: 0x166a, 0x1535: 0x0e93,\n\t0x1536: 0x08cf, 0x1537: 0x08d7, 0x1538: 0x166f, 0x1539: 0x08e3, 0x153a: 0x08eb, 0x153b: 0x08f3,\n\t0x153c: 0x091b, 0x153d: 0x0907, 0x153e: 0x0913, 0x153f: 0x0917,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x091f, 0x1541: 0x0927, 0x1542: 0x092b, 0x1543: 0x0933, 0x1544: 0x093b, 0x1545: 0x093f,\n\t0x1546: 0x093f, 0x1547: 0x0947, 0x1548: 0x094f, 0x1549: 0x0953, 0x154a: 0x095f, 0x154b: 0x0983,\n\t0x154c: 0x0967, 0x154d: 0x0987, 0x154e: 0x096b, 0x154f: 0x0973, 0x1550: 0x080b, 0x1551: 0x09cf,\n\t0x1552: 0x0997, 0x1553: 0x099b, 0x1554: 0x099f, 0x1555: 0x0993, 0x1556: 0x09a7, 0x1557: 0x09a3,\n\t0x1558: 0x09bb, 0x1559: 0x1674, 0x155a: 0x09d7, 0x155b: 0x09db, 0x155c: 0x09e3, 0x155d: 0x09ef,\n\t0x155e: 0x09f7, 0x155f: 0x0a13, 0x1560: 0x1679, 0x1561: 0x167e, 0x1562: 0x0a1f, 0x1563: 0x0a23,\n\t0x1564: 0x0a27, 0x1565: 0x0a1b, 0x1566: 0x0a2f, 0x1567: 0x05c7, 0x1568: 0x05cb, 0x1569: 0x0a37,\n\t0x156a: 0x0a3f, 0x156b: 0x0a3f, 0x156c: 0x1683, 0x156d: 0x0a5b, 0x156e: 0x0a5f, 0x156f: 0x0a63,\n\t0x1570: 0x0a6b, 0x1571: 0x1688, 0x1572: 0x0a73, 0x1573: 0x0a77, 0x1574: 0x0b4f, 0x1575: 0x0a7f,\n\t0x1576: 0x05cf, 0x1577: 0x0a8b, 0x1578: 0x0a9b, 0x1579: 0x0aa7, 0x157a: 0x0aa3, 0x157b: 0x1692,\n\t0x157c: 0x0aaf, 0x157d: 0x1697, 0x157e: 0x0abb, 0x157f: 0x0ab7,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x0abf, 0x1581: 0x0acf, 0x1582: 0x0ad3, 0x1583: 0x05d3, 0x1584: 0x0ae3, 0x1585: 0x0aeb,\n\t0x1586: 0x0aef, 0x1587: 0x0af3, 0x1588: 0x05d7, 0x1589: 0x169c, 0x158a: 0x05db, 0x158b: 0x0b0f,\n\t0x158c: 0x0b13, 0x158d: 0x0b17, 0x158e: 0x0b1f, 0x158f: 0x1863, 0x1590: 0x0b37, 0x1591: 0x16a6,\n\t0x1592: 0x16a6, 0x1593: 0x11d7, 0x1594: 0x0b47, 0x1595: 0x0b47, 0x1596: 0x05df, 0x1597: 0x16c9,\n\t0x1598: 0x179b, 0x1599: 0x0b57, 0x159a: 0x0b5f, 0x159b: 0x05e3, 0x159c: 0x0b73, 0x159d: 0x0b83,\n\t0x159e: 0x0b87, 0x159f: 0x0b8f, 0x15a0: 0x0b9f, 0x15a1: 0x05eb, 0x15a2: 0x05e7, 0x15a3: 0x0ba3,\n\t0x15a4: 0x16ab, 0x15a5: 0x0ba7, 0x15a6: 0x0bbb, 0x15a7: 0x0bbf, 0x15a8: 0x0bc3, 0x15a9: 0x0bbf,\n\t0x15aa: 0x0bcf, 0x15ab: 0x0bd3, 0x15ac: 0x0be3, 0x15ad: 0x0bdb, 0x15ae: 0x0bdf, 0x15af: 0x0be7,\n\t0x15b0: 0x0beb, 0x15b1: 0x0bef, 0x15b2: 0x0bfb, 0x15b3: 0x0bff, 0x15b4: 0x0c17, 0x15b5: 0x0c1f,\n\t0x15b6: 0x0c2f, 0x15b7: 0x0c43, 0x15b8: 0x16ba, 0x15b9: 0x0c3f, 0x15ba: 0x0c33, 0x15bb: 0x0c4b,\n\t0x15bc: 0x0c53, 0x15bd: 0x0c67, 0x15be: 0x16bf, 0x15bf: 0x0c6f,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x0c63, 0x15c1: 0x0c5b, 0x15c2: 0x05ef, 0x15c3: 0x0c77, 0x15c4: 0x0c7f, 0x15c5: 0x0c87,\n\t0x15c6: 0x0c7b, 0x15c7: 0x05f3, 0x15c8: 0x0c97, 0x15c9: 0x0c9f, 0x15ca: 0x16c4, 0x15cb: 0x0ccb,\n\t0x15cc: 0x0cff, 0x15cd: 0x0cdb, 0x15ce: 0x05ff, 0x15cf: 0x0ce7, 0x15d0: 0x05fb, 0x15d1: 0x05f7,\n\t0x15d2: 0x07c3, 0x15d3: 0x07c7, 0x15d4: 0x0d03, 0x15d5: 0x0ceb, 0x15d6: 0x11ab, 0x15d7: 0x0663,\n\t0x15d8: 0x0d0f, 0x15d9: 0x0d13, 0x15da: 0x0d17, 0x15db: 0x0d2b, 0x15dc: 0x0d23, 0x15dd: 0x16dd,\n\t0x15de: 0x0603, 0x15df: 0x0d3f, 0x15e0: 0x0d33, 0x15e1: 0x0d4f, 0x15e2: 0x0d57, 0x15e3: 0x16e7,\n\t0x15e4: 0x0d5b, 0x15e5: 0x0d47, 0x15e6: 0x0d63, 0x15e7: 0x0607, 0x15e8: 0x0d67, 0x15e9: 0x0d6b,\n\t0x15ea: 0x0d6f, 0x15eb: 0x0d7b, 0x15ec: 0x16ec, 0x15ed: 0x0d83, 0x15ee: 0x060b, 0x15ef: 0x0d8f,\n\t0x15f0: 0x16f1, 0x15f1: 0x0d93, 0x15f2: 0x060f, 0x15f3: 0x0d9f, 0x15f4: 0x0dab, 0x15f5: 0x0db7,\n\t0x15f6: 0x0dbb, 0x15f7: 0x16f6, 0x15f8: 0x168d, 0x15f9: 0x16fb, 0x15fa: 0x0ddb, 0x15fb: 0x1700,\n\t0x15fc: 0x0de7, 0x15fd: 0x0def, 0x15fe: 0x0ddf, 0x15ff: 0x0dfb,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x0e0b, 0x1601: 0x0e1b, 0x1602: 0x0e0f, 0x1603: 0x0e13, 0x1604: 0x0e1f, 0x1605: 0x0e23,\n\t0x1606: 0x1705, 0x1607: 0x0e07, 0x1608: 0x0e3b, 0x1609: 0x0e3f, 0x160a: 0x0613, 0x160b: 0x0e53,\n\t0x160c: 0x0e4f, 0x160d: 0x170a, 0x160e: 0x0e33, 0x160f: 0x0e6f, 0x1610: 0x170f, 0x1611: 0x1714,\n\t0x1612: 0x0e73, 0x1613: 0x0e87, 0x1614: 0x0e83, 0x1615: 0x0e7f, 0x1616: 0x0617, 0x1617: 0x0e8b,\n\t0x1618: 0x0e9b, 0x1619: 0x0e97, 0x161a: 0x0ea3, 0x161b: 0x1651, 0x161c: 0x0eb3, 0x161d: 0x1719,\n\t0x161e: 0x0ebf, 0x161f: 0x1723, 0x1620: 0x0ed3, 0x1621: 0x0edf, 0x1622: 0x0ef3, 0x1623: 0x1728,\n\t0x1624: 0x0f07, 0x1625: 0x0f0b, 0x1626: 0x172d, 0x1627: 0x1732, 0x1628: 0x0f27, 0x1629: 0x0f37,\n\t0x162a: 0x061b, 0x162b: 0x0f3b, 0x162c: 0x061f, 0x162d: 0x061f, 0x162e: 0x0f53, 0x162f: 0x0f57,\n\t0x1630: 0x0f5f, 0x1631: 0x0f63, 0x1632: 0x0f6f, 0x1633: 0x0623, 0x1634: 0x0f87, 0x1635: 0x1737,\n\t0x1636: 0x0fa3, 0x1637: 0x173c, 0x1638: 0x0faf, 0x1639: 0x16a1, 0x163a: 0x0fbf, 0x163b: 0x1741,\n\t0x163c: 0x1746, 0x163d: 0x174b, 0x163e: 0x0627, 0x163f: 0x062b,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0ff7, 0x1641: 0x1755, 0x1642: 0x1750, 0x1643: 0x175a, 0x1644: 0x175f, 0x1645: 0x0fff,\n\t0x1646: 0x1003, 0x1647: 0x1003, 0x1648: 0x100b, 0x1649: 0x0633, 0x164a: 0x100f, 0x164b: 0x0637,\n\t0x164c: 0x063b, 0x164d: 0x1769, 0x164e: 0x1023, 0x164f: 0x102b, 0x1650: 0x1037, 0x1651: 0x063f,\n\t0x1652: 0x176e, 0x1653: 0x105b, 0x1654: 0x1773, 0x1655: 0x1778, 0x1656: 0x107b, 0x1657: 0x1093,\n\t0x1658: 0x0643, 0x1659: 0x109b, 0x165a: 0x109f, 0x165b: 0x10a3, 0x165c: 0x177d, 0x165d: 0x1782,\n\t0x165e: 0x1782, 0x165f: 0x10bb, 0x1660: 0x0647, 0x1661: 0x1787, 0x1662: 0x10cf, 0x1663: 0x10d3,\n\t0x1664: 0x064b, 0x1665: 0x178c, 0x1666: 0x10ef, 0x1667: 0x064f, 0x1668: 0x10ff, 0x1669: 0x10f7,\n\t0x166a: 0x1107, 0x166b: 0x1796, 0x166c: 0x111f, 0x166d: 0x0653, 0x166e: 0x112b, 0x166f: 0x1133,\n\t0x1670: 0x1143, 0x1671: 0x0657, 0x1672: 0x17a0, 0x1673: 0x17a5, 0x1674: 0x065b, 0x1675: 0x17aa,\n\t0x1676: 0x115b, 0x1677: 0x17af, 0x1678: 0x1167, 0x1679: 0x1173, 0x167a: 0x117b, 0x167b: 0x17b4,\n\t0x167c: 0x17b9, 0x167d: 0x118f, 0x167e: 0x17be, 0x167f: 0x1197,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x16ce, 0x1681: 0x065f, 0x1682: 0x11af, 0x1683: 0x11b3, 0x1684: 0x0667, 0x1685: 0x11b7,\n\t0x1686: 0x0a33, 0x1687: 0x17c3, 0x1688: 0x17c8, 0x1689: 0x16d3, 0x168a: 0x16d8, 0x168b: 0x11d7,\n\t0x168c: 0x11db, 0x168d: 0x13f3, 0x168e: 0x066b, 0x168f: 0x1207, 0x1690: 0x1203, 0x1691: 0x120b,\n\t0x1692: 0x083f, 0x1693: 0x120f, 0x1694: 0x1213, 0x1695: 0x1217, 0x1696: 0x121f, 0x1697: 0x17cd,\n\t0x1698: 0x121b, 0x1699: 0x1223, 0x169a: 0x1237, 0x169b: 0x123b, 0x169c: 0x1227, 0x169d: 0x123f,\n\t0x169e: 0x1253, 0x169f: 0x1267, 0x16a0: 0x1233, 0x16a1: 0x1247, 0x16a2: 0x124b, 0x16a3: 0x124f,\n\t0x16a4: 0x17d2, 0x16a5: 0x17dc, 0x16a6: 0x17d7, 0x16a7: 0x066f, 0x16a8: 0x126f, 0x16a9: 0x1273,\n\t0x16aa: 0x127b, 0x16ab: 0x17f0, 0x16ac: 0x127f, 0x16ad: 0x17e1, 0x16ae: 0x0673, 0x16af: 0x0677,\n\t0x16b0: 0x17e6, 0x16b1: 0x17eb, 0x16b2: 0x067b, 0x16b3: 0x129f, 0x16b4: 0x12a3, 0x16b5: 0x12a7,\n\t0x16b6: 0x12ab, 0x16b7: 0x12b7, 0x16b8: 0x12b3, 0x16b9: 0x12bf, 0x16ba: 0x12bb, 0x16bb: 0x12cb,\n\t0x16bc: 0x12c3, 0x16bd: 0x12c7, 0x16be: 0x12cf, 0x16bf: 0x067f,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x12d7, 0x16c1: 0x12db, 0x16c2: 0x0683, 0x16c3: 0x12eb, 0x16c4: 0x12ef, 0x16c5: 0x17f5,\n\t0x16c6: 0x12fb, 0x16c7: 0x12ff, 0x16c8: 0x0687, 0x16c9: 0x130b, 0x16ca: 0x05bb, 0x16cb: 0x17fa,\n\t0x16cc: 0x17ff, 0x16cd: 0x068b, 0x16ce: 0x068f, 0x16cf: 0x1337, 0x16d0: 0x134f, 0x16d1: 0x136b,\n\t0x16d2: 0x137b, 0x16d3: 0x1804, 0x16d4: 0x138f, 0x16d5: 0x1393, 0x16d6: 0x13ab, 0x16d7: 0x13b7,\n\t0x16d8: 0x180e, 0x16d9: 0x1660, 0x16da: 0x13c3, 0x16db: 0x13bf, 0x16dc: 0x13cb, 0x16dd: 0x1665,\n\t0x16de: 0x13d7, 0x16df: 0x13e3, 0x16e0: 0x1813, 0x16e1: 0x1818, 0x16e2: 0x1423, 0x16e3: 0x142f,\n\t0x16e4: 0x1437, 0x16e5: 0x181d, 0x16e6: 0x143b, 0x16e7: 0x1467, 0x16e8: 0x1473, 0x16e9: 0x1477,\n\t0x16ea: 0x146f, 0x16eb: 0x1483, 0x16ec: 0x1487, 0x16ed: 0x1822, 0x16ee: 0x1493, 0x16ef: 0x0693,\n\t0x16f0: 0x149b, 0x16f1: 0x1827, 0x16f2: 0x0697, 0x16f3: 0x14d3, 0x16f4: 0x0ac3, 0x16f5: 0x14eb,\n\t0x16f6: 0x182c, 0x16f7: 0x1836, 0x16f8: 0x069b, 0x16f9: 0x069f, 0x16fa: 0x1513, 0x16fb: 0x183b,\n\t0x16fc: 0x06a3, 0x16fd: 0x1840, 0x16fe: 0x152b, 0x16ff: 0x152b,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x1533, 0x1701: 0x1845, 0x1702: 0x154b, 0x1703: 0x06a7, 0x1704: 0x155b, 0x1705: 0x1567,\n\t0x1706: 0x156f, 0x1707: 0x1577, 0x1708: 0x06ab, 0x1709: 0x184a, 0x170a: 0x158b, 0x170b: 0x15a7,\n\t0x170c: 0x15b3, 0x170d: 0x06af, 0x170e: 0x06b3, 0x170f: 0x15b7, 0x1710: 0x184f, 0x1711: 0x06b7,\n\t0x1712: 0x1854, 0x1713: 0x1859, 0x1714: 0x185e, 0x1715: 0x15db, 0x1716: 0x06bb, 0x1717: 0x15ef,\n\t0x1718: 0x15f7, 0x1719: 0x15fb, 0x171a: 0x1603, 0x171b: 0x160b, 0x171c: 0x1613, 0x171d: 0x1868,\n}\n\n// nfkcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfkcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x5b, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5c, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x5d, 0xcb: 0x5e, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,\n\t0xd0: 0x0a, 0xd1: 0x5f, 0xd2: 0x60, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x61,\n\t0xd8: 0x62, 0xd9: 0x0d, 0xdb: 0x63, 0xdc: 0x64, 0xdd: 0x65, 0xdf: 0x66,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x67, 0x121: 0x68, 0x123: 0x69, 0x124: 0x6a, 0x125: 0x6b, 0x126: 0x6c, 0x127: 0x6d,\n\t0x128: 0x6e, 0x129: 0x6f, 0x12a: 0x70, 0x12b: 0x71, 0x12c: 0x6c, 0x12d: 0x72, 0x12e: 0x73, 0x12f: 0x74,\n\t0x131: 0x75, 0x132: 0x76, 0x133: 0x77, 0x134: 0x78, 0x135: 0x79, 0x137: 0x7a,\n\t0x138: 0x7b, 0x139: 0x7c, 0x13a: 0x7d, 0x13b: 0x7e, 0x13c: 0x7f, 0x13d: 0x80, 0x13e: 0x81, 0x13f: 0x82,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x83, 0x142: 0x84, 0x143: 0x85, 0x144: 0x86, 0x145: 0x87, 0x146: 0x88, 0x147: 0x89,\n\t0x14d: 0x8a,\n\t0x15c: 0x8b, 0x15f: 0x8c,\n\t0x162: 0x8d, 0x164: 0x8e,\n\t0x168: 0x8f, 0x169: 0x90, 0x16a: 0x91, 0x16c: 0x0e, 0x16d: 0x92, 0x16e: 0x93, 0x16f: 0x94,\n\t0x170: 0x95, 0x173: 0x96, 0x174: 0x97, 0x175: 0x0f, 0x176: 0x10, 0x177: 0x11,\n\t0x178: 0x12, 0x179: 0x13, 0x17a: 0x14, 0x17b: 0x15, 0x17c: 0x16, 0x17d: 0x17, 0x17e: 0x18, 0x17f: 0x19,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x98, 0x181: 0x99, 0x182: 0x9a, 0x183: 0x9b, 0x184: 0x1a, 0x185: 0x1b, 0x186: 0x9c, 0x187: 0x9d,\n\t0x188: 0x9e, 0x189: 0x1c, 0x18a: 0x1d, 0x18b: 0x9f, 0x18c: 0xa0,\n\t0x191: 0x1e, 0x192: 0x1f, 0x193: 0xa1,\n\t0x1a8: 0xa2, 0x1a9: 0xa3, 0x1ab: 0xa4,\n\t0x1b1: 0xa5, 0x1b3: 0xa6, 0x1b5: 0xa7, 0x1b7: 0xa8,\n\t0x1ba: 0xa9, 0x1bb: 0xaa, 0x1bc: 0x20, 0x1bd: 0x21, 0x1be: 0x22, 0x1bf: 0xab,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0xac, 0x1c1: 0x23, 0x1c2: 0x24, 0x1c3: 0x25, 0x1c4: 0xad, 0x1c5: 0x26, 0x1c6: 0x27,\n\t0x1c8: 0x28, 0x1c9: 0x29, 0x1ca: 0x2a, 0x1cb: 0x2b, 0x1cc: 0x2c, 0x1cd: 0x2d, 0x1ce: 0x2e, 0x1cf: 0x2f,\n\t// Block 0x8, offset 0x200\n\t0x219: 0xae, 0x21a: 0xaf, 0x21b: 0xb0, 0x21d: 0xb1, 0x21f: 0xb2,\n\t0x220: 0xb3, 0x223: 0xb4, 0x224: 0xb5, 0x225: 0xb6, 0x226: 0xb7, 0x227: 0xb8,\n\t0x22a: 0xb9, 0x22b: 0xba, 0x22d: 0xbb, 0x22f: 0xbc,\n\t0x230: 0xbd, 0x231: 0xbe, 0x232: 0xbf, 0x233: 0xc0, 0x234: 0xc1, 0x235: 0xc2, 0x236: 0xc3, 0x237: 0xbd,\n\t0x238: 0xbe, 0x239: 0xbf, 0x23a: 0xc0, 0x23b: 0xc1, 0x23c: 0xc2, 0x23d: 0xc3, 0x23e: 0xbd, 0x23f: 0xbe,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xbf, 0x241: 0xc0, 0x242: 0xc1, 0x243: 0xc2, 0x244: 0xc3, 0x245: 0xbd, 0x246: 0xbe, 0x247: 0xbf,\n\t0x248: 0xc0, 0x249: 0xc1, 0x24a: 0xc2, 0x24b: 0xc3, 0x24c: 0xbd, 0x24d: 0xbe, 0x24e: 0xbf, 0x24f: 0xc0,\n\t0x250: 0xc1, 0x251: 0xc2, 0x252: 0xc3, 0x253: 0xbd, 0x254: 0xbe, 0x255: 0xbf, 0x256: 0xc0, 0x257: 0xc1,\n\t0x258: 0xc2, 0x259: 0xc3, 0x25a: 0xbd, 0x25b: 0xbe, 0x25c: 0xbf, 0x25d: 0xc0, 0x25e: 0xc1, 0x25f: 0xc2,\n\t0x260: 0xc3, 0x261: 0xbd, 0x262: 0xbe, 0x263: 0xbf, 0x264: 0xc0, 0x265: 0xc1, 0x266: 0xc2, 0x267: 0xc3,\n\t0x268: 0xbd, 0x269: 0xbe, 0x26a: 0xbf, 0x26b: 0xc0, 0x26c: 0xc1, 0x26d: 0xc2, 0x26e: 0xc3, 0x26f: 0xbd,\n\t0x270: 0xbe, 0x271: 0xbf, 0x272: 0xc0, 0x273: 0xc1, 0x274: 0xc2, 0x275: 0xc3, 0x276: 0xbd, 0x277: 0xbe,\n\t0x278: 0xbf, 0x279: 0xc0, 0x27a: 0xc1, 0x27b: 0xc2, 0x27c: 0xc3, 0x27d: 0xbd, 0x27e: 0xbe, 0x27f: 0xbf,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xc0, 0x281: 0xc1, 0x282: 0xc2, 0x283: 0xc3, 0x284: 0xbd, 0x285: 0xbe, 0x286: 0xbf, 0x287: 0xc0,\n\t0x288: 0xc1, 0x289: 0xc2, 0x28a: 0xc3, 0x28b: 0xbd, 0x28c: 0xbe, 0x28d: 0xbf, 0x28e: 0xc0, 0x28f: 0xc1,\n\t0x290: 0xc2, 0x291: 0xc3, 0x292: 0xbd, 0x293: 0xbe, 0x294: 0xbf, 0x295: 0xc0, 0x296: 0xc1, 0x297: 0xc2,\n\t0x298: 0xc3, 0x299: 0xbd, 0x29a: 0xbe, 0x29b: 0xbf, 0x29c: 0xc0, 0x29d: 0xc1, 0x29e: 0xc2, 0x29f: 0xc3,\n\t0x2a0: 0xbd, 0x2a1: 0xbe, 0x2a2: 0xbf, 0x2a3: 0xc0, 0x2a4: 0xc1, 0x2a5: 0xc2, 0x2a6: 0xc3, 0x2a7: 0xbd,\n\t0x2a8: 0xbe, 0x2a9: 0xbf, 0x2aa: 0xc0, 0x2ab: 0xc1, 0x2ac: 0xc2, 0x2ad: 0xc3, 0x2ae: 0xbd, 0x2af: 0xbe,\n\t0x2b0: 0xbf, 0x2b1: 0xc0, 0x2b2: 0xc1, 0x2b3: 0xc2, 0x2b4: 0xc3, 0x2b5: 0xbd, 0x2b6: 0xbe, 0x2b7: 0xbf,\n\t0x2b8: 0xc0, 0x2b9: 0xc1, 0x2ba: 0xc2, 0x2bb: 0xc3, 0x2bc: 0xbd, 0x2bd: 0xbe, 0x2be: 0xbf, 0x2bf: 0xc0,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xc1, 0x2c1: 0xc2, 0x2c2: 0xc3, 0x2c3: 0xbd, 0x2c4: 0xbe, 0x2c5: 0xbf, 0x2c6: 0xc0, 0x2c7: 0xc1,\n\t0x2c8: 0xc2, 0x2c9: 0xc3, 0x2ca: 0xbd, 0x2cb: 0xbe, 0x2cc: 0xbf, 0x2cd: 0xc0, 0x2ce: 0xc1, 0x2cf: 0xc2,\n\t0x2d0: 0xc3, 0x2d1: 0xbd, 0x2d2: 0xbe, 0x2d3: 0xbf, 0x2d4: 0xc0, 0x2d5: 0xc1, 0x2d6: 0xc2, 0x2d7: 0xc3,\n\t0x2d8: 0xbd, 0x2d9: 0xbe, 0x2da: 0xbf, 0x2db: 0xc0, 0x2dc: 0xc1, 0x2dd: 0xc2, 0x2de: 0xc4,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x30, 0x325: 0x31, 0x326: 0x32, 0x327: 0x33,\n\t0x328: 0x34, 0x329: 0x35, 0x32a: 0x36, 0x32b: 0x37, 0x32c: 0x38, 0x32d: 0x39, 0x32e: 0x3a, 0x32f: 0x3b,\n\t0x330: 0x3c, 0x331: 0x3d, 0x332: 0x3e, 0x333: 0x3f, 0x334: 0x40, 0x335: 0x41, 0x336: 0x42, 0x337: 0x43,\n\t0x338: 0x44, 0x339: 0x45, 0x33a: 0x46, 0x33b: 0x47, 0x33c: 0xc5, 0x33d: 0x48, 0x33e: 0x49, 0x33f: 0x4a,\n\t// Block 0xd, offset 0x340\n\t0x347: 0xc6,\n\t0x34b: 0xc7, 0x34d: 0xc8,\n\t0x368: 0xc9, 0x36b: 0xca,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xcb, 0x382: 0xcc, 0x384: 0xcd, 0x385: 0xb7, 0x387: 0xce,\n\t0x388: 0xcf, 0x38b: 0xd0, 0x38c: 0x6c, 0x38d: 0xd1,\n\t0x391: 0xd2, 0x392: 0xd3, 0x393: 0xd4, 0x396: 0xd5, 0x397: 0xd6,\n\t0x398: 0xd7, 0x39a: 0xd8, 0x39c: 0xd9,\n\t0x3a8: 0xda, 0x3a9: 0xdb, 0x3aa: 0xdc,\n\t0x3b0: 0xd7, 0x3b5: 0xdd,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xde, 0x3ec: 0xdf,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xe0,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xe1, 0x446: 0xe2, 0x447: 0xe3,\n\t0x449: 0xe4,\n\t0x450: 0xe5, 0x451: 0xe6, 0x452: 0xe7, 0x453: 0xe8, 0x454: 0xe9, 0x455: 0xea, 0x456: 0xeb, 0x457: 0xec,\n\t0x458: 0xed, 0x459: 0xee, 0x45a: 0x4b, 0x45b: 0xef, 0x45c: 0xf0, 0x45d: 0xf1, 0x45e: 0xf2, 0x45f: 0x4c,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xf3,\n\t0x4a3: 0xf4, 0x4a5: 0xf5,\n\t0x4b8: 0x4d, 0x4b9: 0x4e, 0x4ba: 0x4f,\n\t// Block 0x13, offset 0x4c0\n\t0x4c4: 0x50, 0x4c5: 0xf6, 0x4c6: 0xf7,\n\t0x4c8: 0x51, 0x4c9: 0xf8,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x52, 0x521: 0x53, 0x522: 0x54, 0x523: 0x55, 0x524: 0x56, 0x525: 0x57, 0x526: 0x58, 0x527: 0x59,\n\t0x528: 0x5a,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfkcSparseOffset: 158 entries, 316 bytes\nvar nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x6f, 0x74, 0x76, 0x87, 0x8f, 0x96, 0x99, 0xa0, 0xa4, 0xa8, 0xaa, 0xac, 0xb5, 0xb9, 0xc0, 0xc5, 0xc8, 0xd2, 0xd5, 0xdc, 0xe4, 0xe8, 0xea, 0xed, 0xf1, 0xf7, 0x108, 0x114, 0x116, 0x11c, 0x11e, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12a, 0x12d, 0x130, 0x132, 0x135, 0x138, 0x13c, 0x141, 0x14a, 0x14c, 0x14f, 0x151, 0x15c, 0x167, 0x175, 0x183, 0x193, 0x1a1, 0x1a8, 0x1ae, 0x1bd, 0x1c1, 0x1c3, 0x1c7, 0x1c9, 0x1cc, 0x1ce, 0x1d1, 0x1d3, 0x1d6, 0x1d8, 0x1da, 0x1dc, 0x1e8, 0x1f2, 0x1fc, 0x1ff, 0x203, 0x205, 0x207, 0x209, 0x20b, 0x20e, 0x210, 0x212, 0x214, 0x216, 0x21c, 0x21f, 0x223, 0x225, 0x22c, 0x232, 0x238, 0x240, 0x246, 0x24c, 0x252, 0x256, 0x258, 0x25a, 0x25c, 0x25e, 0x264, 0x267, 0x26a, 0x272, 0x279, 0x27c, 0x27f, 0x281, 0x289, 0x28c, 0x293, 0x296, 0x29c, 0x29e, 0x2a0, 0x2a3, 0x2a5, 0x2a7, 0x2a9, 0x2ab, 0x2ae, 0x2b0, 0x2b2, 0x2b4, 0x2c1, 0x2cb, 0x2cd, 0x2cf, 0x2d3, 0x2d8, 0x2e4, 0x2e9, 0x2f2, 0x2f8, 0x2fd, 0x301, 0x306, 0x30a, 0x31a, 0x328, 0x336, 0x344, 0x34a, 0x34c, 0x34f, 0x359, 0x35b}\n\n// nfkcSparseValues: 869 entries, 3476 bytes\nvar nfkcSparseValues = [869]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x0001, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4278, lo: 0xa8, hi: 0xa8},\n\t{value: 0x0083, lo: 0xaa, hi: 0xaa},\n\t{value: 0x4264, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0025, lo: 0xb2, hi: 0xb3},\n\t{value: 0x425a, lo: 0xb4, hi: 0xb4},\n\t{value: 0x01dc, lo: 0xb5, hi: 0xb5},\n\t{value: 0x4291, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0023, lo: 0xb9, hi: 0xb9},\n\t{value: 0x009f, lo: 0xba, hi: 0xba},\n\t{value: 0x221c, lo: 0xbc, hi: 0xbc},\n\t{value: 0x2210, lo: 0xbd, hi: 0xbd},\n\t{value: 0x22b2, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1, offset 0xe\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46e2, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4714, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x12\n\t{value: 0x0003, lo: 0x08},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x0091, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0119, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0095, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00a5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0143, lo: 0xb4, hi: 0xb6},\n\t{value: 0x00af, lo: 0xb7, hi: 0xb7},\n\t{value: 0x00b3, lo: 0xb8, hi: 0xb8},\n\t// Block 0x3, offset 0x1b\n\t{value: 0x000a, lo: 0x09},\n\t{value: 0x426e, lo: 0x98, hi: 0x98},\n\t{value: 0x4273, lo: 0x99, hi: 0x9a},\n\t{value: 0x4296, lo: 0x9b, hi: 0x9b},\n\t{value: 0x425f, lo: 0x9c, hi: 0x9c},\n\t{value: 0x4282, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0113, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0099, lo: 0xa1, hi: 0xa1},\n\t{value: 0x00a7, lo: 0xa2, hi: 0xa3},\n\t{value: 0x0167, lo: 0xa4, hi: 0xa4},\n\t// Block 0x4, offset 0x25\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37a5, lo: 0x90, hi: 0x90},\n\t{value: 0x37b1, lo: 0x91, hi: 0x91},\n\t{value: 0x379f, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3817, lo: 0x97, hi: 0x97},\n\t{value: 0x37e1, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37c9, lo: 0x9d, hi: 0x9d},\n\t{value: 0x37f3, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x381d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3823, lo: 0xb7, hi: 0xb7},\n\t// Block 0x5, offset 0x35\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x83, hi: 0x87},\n\t// Block 0x6, offset 0x37\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8113, lo: 0x81, hi: 0x82},\n\t{value: 0x8132, lo: 0x84, hi: 0x84},\n\t{value: 0x812d, lo: 0x85, hi: 0x85},\n\t{value: 0x810d, lo: 0x87, hi: 0x87},\n\t// Block 0x7, offset 0x3c\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x97},\n\t{value: 0x8119, lo: 0x98, hi: 0x98},\n\t{value: 0x811a, lo: 0x99, hi: 0x99},\n\t{value: 0x811b, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3841, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3847, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3853, lo: 0xa4, hi: 0xa4},\n\t{value: 0x384d, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3859, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x8, offset 0x47\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x386b, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x385f, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3865, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8132, lo: 0x96, hi: 0x9c},\n\t{value: 0x8132, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t// Block 0x9, offset 0x56\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x811f, lo: 0x91, hi: 0x91},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8132, lo: 0xba, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8132, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8132, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa, offset 0x63\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8132, lo: 0x80, hi: 0x80},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x83},\n\t{value: 0x812d, lo: 0x84, hi: 0x85},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x812d, lo: 0x88, hi: 0x89},\n\t{value: 0x8132, lo: 0x8a, hi: 0x8a},\n\t// Block 0xb, offset 0x6b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xab, hi: 0xb1},\n\t{value: 0x812d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb3},\n\t// Block 0xc, offset 0x6f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0x96, hi: 0x99},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8132, lo: 0xa9, hi: 0xad},\n\t// Block 0xd, offset 0x74\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x99, hi: 0x9b},\n\t// Block 0xe, offset 0x76\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x8132, lo: 0x94, hi: 0xa1},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8132, lo: 0xaa, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xaf},\n\t{value: 0x8116, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8117, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8118, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x812d, lo: 0xb9, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbf},\n\t// Block 0xf, offset 0x87\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3ed8, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ee0, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3ee8, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9902, lo: 0xbc, hi: 0xbc},\n\t// Block 0x10, offset 0x8f\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x91, hi: 0x91},\n\t{value: 0x812d, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x93, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x94},\n\t{value: 0x451c, lo: 0x98, hi: 0x9f},\n\t// Block 0x11, offset 0x96\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x12, offset 0x99\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2c9e, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x455c, lo: 0x9c, hi: 0x9d},\n\t{value: 0x456c, lo: 0x9f, hi: 0x9f},\n\t// Block 0x13, offset 0xa0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4594, lo: 0xb3, hi: 0xb3},\n\t{value: 0x459c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x14, offset 0xa4\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4574, lo: 0x99, hi: 0x9b},\n\t{value: 0x458c, lo: 0x9e, hi: 0x9e},\n\t// Block 0x15, offset 0xa8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x16, offset 0xaa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t// Block 0x17, offset 0xac\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cb6, lo: 0x88, hi: 0x88},\n\t{value: 0x2cae, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cbe, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45a4, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45ac, lo: 0x9d, hi: 0x9d},\n\t// Block 0x18, offset 0xb5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cc6, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x19, offset 0xb9\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cce, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2cde, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cd6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1a, offset 0xc0\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ef0, lo: 0x88, hi: 0x88},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8120, lo: 0x95, hi: 0x96},\n\t// Block 0x1b, offset 0xc5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1c, offset 0xc8\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2ce6, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cee, lo: 0x87, hi: 0x87},\n\t{value: 0x2cf6, lo: 0x88, hi: 0x88},\n\t{value: 0x2f50, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2dd8, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1d, offset 0xd2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1e, offset 0xd5\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cfe, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d0e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d06, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1f, offset 0xdc\n\t{value: 0x6bea, lo: 0x07},\n\t{value: 0x9904, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ef8, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f58, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2de3, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d16, lo: 0x9e, hi: 0x9f},\n\t// Block 0x20, offset 0xe4\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2621, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8122, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x21, offset 0xe8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8123, lo: 0x88, hi: 0x8b},\n\t// Block 0x22, offset 0xea\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2636, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8124, lo: 0xb8, hi: 0xb9},\n\t// Block 0x23, offset 0xed\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8125, lo: 0x88, hi: 0x8b},\n\t{value: 0x2628, lo: 0x9c, hi: 0x9c},\n\t{value: 0x262f, lo: 0x9d, hi: 0x9d},\n\t// Block 0x24, offset 0xf1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x030b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812d, lo: 0x98, hi: 0x99},\n\t{value: 0x812d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812b, lo: 0xb9, hi: 0xb9},\n\t// Block 0x25, offset 0xf7\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2644, lo: 0x83, hi: 0x83},\n\t{value: 0x264b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2652, lo: 0x92, hi: 0x92},\n\t{value: 0x2659, lo: 0x97, hi: 0x97},\n\t{value: 0x2660, lo: 0x9c, hi: 0x9c},\n\t{value: 0x263d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8126, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8127, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a84, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8128, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a8d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45b4, lo: 0xb6, hi: 0xb6},\n\t{value: 0x45f4, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45bc, lo: 0xb8, hi: 0xb8},\n\t{value: 0x45ff, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8127, lo: 0xba, hi: 0xbd},\n\t// Block 0x26, offset 0x108\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8127, lo: 0x80, hi: 0x80},\n\t{value: 0x4a96, lo: 0x81, hi: 0x81},\n\t{value: 0x8132, lo: 0x82, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0x86, hi: 0x87},\n\t{value: 0x266e, lo: 0x93, hi: 0x93},\n\t{value: 0x2675, lo: 0x9d, hi: 0x9d},\n\t{value: 0x267c, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2683, lo: 0xa7, hi: 0xa7},\n\t{value: 0x268a, lo: 0xac, hi: 0xac},\n\t{value: 0x2667, lo: 0xb9, hi: 0xb9},\n\t// Block 0x27, offset 0x114\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x86, hi: 0x86},\n\t// Block 0x28, offset 0x116\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d1e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x29, offset 0x11c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2a, offset 0x11e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x030f, lo: 0xbc, hi: 0xbc},\n\t// Block 0x2b, offset 0x120\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x122\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x124\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x126\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x128\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x12a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x94, hi: 0x94},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x12d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x130\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8131, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x132\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812e, lo: 0xb9, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x135\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x97, hi: 0x97},\n\t{value: 0x812d, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x138\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8132, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x13c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812d, lo: 0xb5, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x37, offset 0x141\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d66, lo: 0x80, hi: 0x80},\n\t{value: 0x2d6e, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d76, lo: 0x83, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xac},\n\t{value: 0x8132, lo: 0xad, hi: 0xb3},\n\t// Block 0x38, offset 0x14a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xaa, hi: 0xab},\n\t// Block 0x39, offset 0x14c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8104, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3a, offset 0x14f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3b, offset 0x151\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812d, lo: 0x95, hi: 0x99},\n\t{value: 0x8132, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812d, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t{value: 0x8132, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3c, offset 0x15c\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0043, lo: 0xac, hi: 0xac},\n\t{value: 0x00d1, lo: 0xad, hi: 0xad},\n\t{value: 0x0045, lo: 0xae, hi: 0xae},\n\t{value: 0x0049, lo: 0xb0, hi: 0xb1},\n\t{value: 0x00e6, lo: 0xb2, hi: 0xb2},\n\t{value: 0x004f, lo: 0xb3, hi: 0xba},\n\t{value: 0x005f, lo: 0xbc, hi: 0xbc},\n\t{value: 0x00ef, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0061, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0065, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x167\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0001, lo: 0x80, hi: 0x8a},\n\t{value: 0x043b, lo: 0x91, hi: 0x91},\n\t{value: 0x429b, lo: 0x97, hi: 0x97},\n\t{value: 0x001d, lo: 0xa4, hi: 0xa4},\n\t{value: 0x1873, lo: 0xa5, hi: 0xa5},\n\t{value: 0x1b5c, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0001, lo: 0xaf, hi: 0xaf},\n\t{value: 0x2691, lo: 0xb3, hi: 0xb3},\n\t{value: 0x27fe, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2698, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2808, lo: 0xb7, hi: 0xb7},\n\t{value: 0x186d, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4269, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3e, offset 0x175\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x1933, lo: 0x87, hi: 0x87},\n\t{value: 0x1930, lo: 0x88, hi: 0x88},\n\t{value: 0x1870, lo: 0x89, hi: 0x89},\n\t{value: 0x298e, lo: 0x97, hi: 0x97},\n\t{value: 0x0001, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0093, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb4, hi: 0xb9},\n\t{value: 0x0017, lo: 0xba, hi: 0xba},\n\t{value: 0x0467, lo: 0xbb, hi: 0xbb},\n\t{value: 0x003b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0011, lo: 0xbd, hi: 0xbe},\n\t{value: 0x009d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3f, offset 0x183\n\t{value: 0x0002, lo: 0x0f},\n\t{value: 0x0021, lo: 0x80, hi: 0x89},\n\t{value: 0x0017, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0467, lo: 0x8b, hi: 0x8b},\n\t{value: 0x003b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0011, lo: 0x8d, hi: 0x8e},\n\t{value: 0x0083, lo: 0x90, hi: 0x90},\n\t{value: 0x008b, lo: 0x91, hi: 0x91},\n\t{value: 0x009f, lo: 0x92, hi: 0x92},\n\t{value: 0x00b1, lo: 0x93, hi: 0x93},\n\t{value: 0x0104, lo: 0x94, hi: 0x94},\n\t{value: 0x0091, lo: 0x95, hi: 0x95},\n\t{value: 0x0097, lo: 0x96, hi: 0x99},\n\t{value: 0x00a1, lo: 0x9a, hi: 0x9a},\n\t{value: 0x00a7, lo: 0x9b, hi: 0x9c},\n\t{value: 0x1999, lo: 0xa8, hi: 0xa8},\n\t// Block 0x40, offset 0x193\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8132, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8132, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8132, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812d, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t// Block 0x41, offset 0x1a1\n\t{value: 0x0007, lo: 0x06},\n\t{value: 0x2180, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bb9, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bc7, lo: 0xae, hi: 0xae},\n\t// Block 0x42, offset 0x1a8\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3bce, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bd5, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x43, offset 0x1ae\n\t{value: 0x0173, lo: 0x0e},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3be3, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3bea, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3bf1, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3bf8, lo: 0xa4, hi: 0xa4},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3bff, lo: 0xa6, hi: 0xa6},\n\t{value: 0x269f, lo: 0xac, hi: 0xad},\n\t{value: 0x26a6, lo: 0xaf, hi: 0xaf},\n\t{value: 0x281c, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x44, offset 0x1bd\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c68, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3c92, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cbc, lo: 0xaa, hi: 0xad},\n\t// Block 0x45, offset 0x1c1\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048b, lo: 0xa9, hi: 0xaa},\n\t// Block 0x46, offset 0x1c3\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0057, lo: 0x80, hi: 0x8f},\n\t{value: 0x0083, lo: 0x90, hi: 0xa9},\n\t{value: 0x0021, lo: 0xaa, hi: 0xaa},\n\t// Block 0x47, offset 0x1c7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x299b, lo: 0x8c, hi: 0x8c},\n\t// Block 0x48, offset 0x1c9\n\t{value: 0x0263, lo: 0x02},\n\t{value: 0x1b8c, lo: 0xb4, hi: 0xb4},\n\t{value: 0x192d, lo: 0xb5, hi: 0xb6},\n\t// Block 0x49, offset 0x1cc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44dd, lo: 0x9c, hi: 0x9c},\n\t// Block 0x4a, offset 0x1ce\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0095, lo: 0xbc, hi: 0xbc},\n\t{value: 0x006d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x4b, offset 0x1d1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xaf, hi: 0xb1},\n\t// Block 0x4c, offset 0x1d3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x047f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x4d, offset 0x1d6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa0, hi: 0xbf},\n\t// Block 0x4e, offset 0x1d8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0dc3, lo: 0x9f, hi: 0x9f},\n\t// Block 0x4f, offset 0x1da\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x162f, lo: 0xb3, hi: 0xb3},\n\t// Block 0x50, offset 0x1dc\n\t{value: 0x0004, lo: 0x0b},\n\t{value: 0x1597, lo: 0x80, hi: 0x82},\n\t{value: 0x15af, lo: 0x83, hi: 0x83},\n\t{value: 0x15c7, lo: 0x84, hi: 0x85},\n\t{value: 0x15d7, lo: 0x86, hi: 0x89},\n\t{value: 0x15eb, lo: 0x8a, hi: 0x8c},\n\t{value: 0x15ff, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1607, lo: 0x8e, hi: 0x8e},\n\t{value: 0x160f, lo: 0x8f, hi: 0x90},\n\t{value: 0x161b, lo: 0x91, hi: 0x93},\n\t{value: 0x162b, lo: 0x94, hi: 0x94},\n\t{value: 0x1633, lo: 0x95, hi: 0x95},\n\t// Block 0x51, offset 0x1e8\n\t{value: 0x0004, lo: 0x09},\n\t{value: 0x0001, lo: 0x80, hi: 0x80},\n\t{value: 0x812c, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8131, lo: 0xab, hi: 0xab},\n\t{value: 0x8133, lo: 0xac, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x812f, lo: 0xae, hi: 0xae},\n\t{value: 0x812f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x04b3, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0887, lo: 0xb8, hi: 0xba},\n\t// Block 0x52, offset 0x1f2\n\t{value: 0x0006, lo: 0x09},\n\t{value: 0x0313, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0317, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a3b, lo: 0xb3, hi: 0xb3},\n\t{value: 0x031b, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a41, lo: 0xb5, hi: 0xb6},\n\t{value: 0x031f, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0323, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0327, lo: 0xb9, hi: 0xb9},\n\t{value: 0x4a4d, lo: 0xba, hi: 0xbf},\n\t// Block 0x53, offset 0x1fc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb4, hi: 0xbd},\n\t// Block 0x54, offset 0x1ff\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x020f, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0212, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9f},\n\t// Block 0x55, offset 0x203\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb1},\n\t// Block 0x56, offset 0x205\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x163b, lo: 0xb0, hi: 0xb0},\n\t// Block 0x57, offset 0x207\n\t{value: 0x000c, lo: 0x01},\n\t{value: 0x00d7, lo: 0xb8, hi: 0xb9},\n\t// Block 0x58, offset 0x209\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t// Block 0x59, offset 0x20b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xa0, hi: 0xb1},\n\t// Block 0x5a, offset 0x20e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xab, hi: 0xad},\n\t// Block 0x5b, offset 0x210\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x93, hi: 0x93},\n\t// Block 0x5c, offset 0x212\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb3, hi: 0xb3},\n\t// Block 0x5d, offset 0x214\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t// Block 0x5e, offset 0x216\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbf},\n\t// Block 0x5f, offset 0x21c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t// Block 0x60, offset 0x21f\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x1637, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0125, lo: 0x9e, hi: 0x9e},\n\t{value: 0x1643, lo: 0x9f, hi: 0x9f},\n\t// Block 0x61, offset 0x223\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xad, hi: 0xad},\n\t// Block 0x62, offset 0x225\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x63, offset 0x22c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x64, offset 0x232\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x65, offset 0x238\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x66, offset 0x240\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x67, offset 0x246\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x68, offset 0x24c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x69, offset 0x252\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x6a, offset 0x256\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0003, lo: 0x81, hi: 0xbf},\n\t// Block 0x6b, offset 0x258\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x6c, offset 0x25a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xa0, hi: 0xa0},\n\t// Block 0x6d, offset 0x25c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb6, hi: 0xba},\n\t// Block 0x6e, offset 0x25e\n\t{value: 0x002c, lo: 0x05},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x6f, offset 0x264\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t// Block 0x70, offset 0x267\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x71, offset 0x26a\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4238, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4242, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x424c, lo: 0xab, hi: 0xab},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x72, offset 0x272\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8132, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d7e, lo: 0xae, hi: 0xae},\n\t{value: 0x2d88, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8104, lo: 0xb3, hi: 0xb4},\n\t// Block 0x73, offset 0x279\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x74, offset 0x27c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8102, lo: 0xb6, hi: 0xb6},\n\t// Block 0x75, offset 0x27f\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8102, lo: 0xa9, hi: 0xaa},\n\t// Block 0x76, offset 0x281\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d92, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d9c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8132, lo: 0xa6, hi: 0xac},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t// Block 0x77, offset 0x289\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x86, hi: 0x86},\n\t// Block 0x78, offset 0x28c\n\t{value: 0x6b5a, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2db0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2da6, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dba, lo: 0xbe, hi: 0xbe},\n\t// Block 0x79, offset 0x293\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x83, hi: 0x83},\n\t// Block 0x7a, offset 0x296\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dc4, lo: 0xba, hi: 0xba},\n\t{value: 0x2dce, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7b, offset 0x29c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0x80, hi: 0x80},\n\t// Block 0x7c, offset 0x29e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7d, offset 0x2a0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x7e, offset 0x2a3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xab, hi: 0xab},\n\t// Block 0x7f, offset 0x2a5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x80, offset 0x2a7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x87, hi: 0x87},\n\t// Block 0x81, offset 0x2a9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x99, hi: 0x99},\n\t// Block 0x82, offset 0x2ab\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0x82, hi: 0x82},\n\t{value: 0x8104, lo: 0x84, hi: 0x85},\n\t// Block 0x83, offset 0x2ae\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x84, offset 0x2b0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb6},\n\t// Block 0x85, offset 0x2b2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x86, offset 0x2b4\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45cc, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45d6, lo: 0x9f, hi: 0x9f},\n\t{value: 0x460a, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4618, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4626, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4634, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4642, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812b, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8130, lo: 0xad, hi: 0xad},\n\t{value: 0x812b, lo: 0xae, hi: 0xb2},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbf},\n\t// Block 0x87, offset 0x2c1\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812d, lo: 0x80, hi: 0x82},\n\t{value: 0x8132, lo: 0x85, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8132, lo: 0xaa, hi: 0xad},\n\t{value: 0x45e0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x45ea, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4650, lo: 0xbd, hi: 0xbd},\n\t{value: 0x466c, lo: 0xbe, hi: 0xbe},\n\t{value: 0x465e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x88, offset 0x2cb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x467a, lo: 0x80, hi: 0x80},\n\t// Block 0x89, offset 0x2cd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x82, hi: 0x84},\n\t// Block 0x8a, offset 0x2cf\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0043, lo: 0x80, hi: 0x99},\n\t{value: 0x0083, lo: 0x9a, hi: 0xb3},\n\t{value: 0x0043, lo: 0xb4, hi: 0xbf},\n\t// Block 0x8b, offset 0x2d3\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x005b, lo: 0x80, hi: 0x8d},\n\t{value: 0x0083, lo: 0x8e, hi: 0x94},\n\t{value: 0x0093, lo: 0x96, hi: 0xa7},\n\t{value: 0x0043, lo: 0xa8, hi: 0xbf},\n\t// Block 0x8c, offset 0x2d8\n\t{value: 0x0002, lo: 0x0b},\n\t{value: 0x0073, lo: 0x80, hi: 0x81},\n\t{value: 0x0083, lo: 0x82, hi: 0x9b},\n\t{value: 0x0043, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0047, lo: 0x9e, hi: 0x9f},\n\t{value: 0x004f, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0055, lo: 0xa5, hi: 0xa6},\n\t{value: 0x005d, lo: 0xa9, hi: 0xac},\n\t{value: 0x0067, lo: 0xae, hi: 0xb5},\n\t{value: 0x0083, lo: 0xb6, hi: 0xb9},\n\t{value: 0x008d, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0091, lo: 0xbd, hi: 0xbf},\n\t// Block 0x8d, offset 0x2e4\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x0097, lo: 0x80, hi: 0x83},\n\t{value: 0x00a1, lo: 0x85, hi: 0x8f},\n\t{value: 0x0043, lo: 0x90, hi: 0xa9},\n\t{value: 0x0083, lo: 0xaa, hi: 0xbf},\n\t// Block 0x8e, offset 0x2e9\n\t{value: 0x0002, lo: 0x08},\n\t{value: 0x00af, lo: 0x80, hi: 0x83},\n\t{value: 0x0043, lo: 0x84, hi: 0x85},\n\t{value: 0x0049, lo: 0x87, hi: 0x8a},\n\t{value: 0x0055, lo: 0x8d, hi: 0x94},\n\t{value: 0x0067, lo: 0x96, hi: 0x9c},\n\t{value: 0x0083, lo: 0x9e, hi: 0xb7},\n\t{value: 0x0043, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0049, lo: 0xbb, hi: 0xbe},\n\t// Block 0x8f, offset 0x2f2\n\t{value: 0x0002, lo: 0x05},\n\t{value: 0x0053, lo: 0x80, hi: 0x84},\n\t{value: 0x005f, lo: 0x86, hi: 0x86},\n\t{value: 0x0067, lo: 0x8a, hi: 0x90},\n\t{value: 0x0083, lo: 0x92, hi: 0xab},\n\t{value: 0x0043, lo: 0xac, hi: 0xbf},\n\t// Block 0x90, offset 0x2f8\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x006b, lo: 0x80, hi: 0x85},\n\t{value: 0x0083, lo: 0x86, hi: 0x9f},\n\t{value: 0x0043, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0083, lo: 0xba, hi: 0xbf},\n\t// Block 0x91, offset 0x2fd\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x008f, lo: 0x80, hi: 0x93},\n\t{value: 0x0043, lo: 0x94, hi: 0xad},\n\t{value: 0x0083, lo: 0xae, hi: 0xbf},\n\t// Block 0x92, offset 0x301\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x00a7, lo: 0x80, hi: 0x87},\n\t{value: 0x0043, lo: 0x88, hi: 0xa1},\n\t{value: 0x0083, lo: 0xa2, hi: 0xbb},\n\t{value: 0x0043, lo: 0xbc, hi: 0xbf},\n\t// Block 0x93, offset 0x306\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x004b, lo: 0x80, hi: 0x95},\n\t{value: 0x0083, lo: 0x96, hi: 0xaf},\n\t{value: 0x0043, lo: 0xb0, hi: 0xbf},\n\t// Block 0x94, offset 0x30a\n\t{value: 0x0003, lo: 0x0f},\n\t{value: 0x01b8, lo: 0x80, hi: 0x80},\n\t{value: 0x045f, lo: 0x81, hi: 0x81},\n\t{value: 0x01bb, lo: 0x82, hi: 0x9a},\n\t{value: 0x045b, lo: 0x9b, hi: 0x9b},\n\t{value: 0x01c7, lo: 0x9c, hi: 0x9c},\n\t{value: 0x01d0, lo: 0x9d, hi: 0x9d},\n\t{value: 0x01d6, lo: 0x9e, hi: 0x9e},\n\t{value: 0x01fa, lo: 0x9f, hi: 0x9f},\n\t{value: 0x01eb, lo: 0xa0, hi: 0xa0},\n\t{value: 0x01e8, lo: 0xa1, hi: 0xa1},\n\t{value: 0x0173, lo: 0xa2, hi: 0xb2},\n\t{value: 0x0188, lo: 0xb3, hi: 0xb3},\n\t{value: 0x01a6, lo: 0xb4, hi: 0xba},\n\t{value: 0x045f, lo: 0xbb, hi: 0xbb},\n\t{value: 0x01bb, lo: 0xbc, hi: 0xbf},\n\t// Block 0x95, offset 0x31a\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01c7, lo: 0x80, hi: 0x94},\n\t{value: 0x045b, lo: 0x95, hi: 0x95},\n\t{value: 0x01c7, lo: 0x96, hi: 0x96},\n\t{value: 0x01d0, lo: 0x97, hi: 0x97},\n\t{value: 0x01d6, lo: 0x98, hi: 0x98},\n\t{value: 0x01fa, lo: 0x99, hi: 0x99},\n\t{value: 0x01eb, lo: 0x9a, hi: 0x9a},\n\t{value: 0x01e8, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0173, lo: 0x9c, hi: 0xac},\n\t{value: 0x0188, lo: 0xad, hi: 0xad},\n\t{value: 0x01a6, lo: 0xae, hi: 0xb4},\n\t{value: 0x045f, lo: 0xb5, hi: 0xb5},\n\t{value: 0x01bb, lo: 0xb6, hi: 0xbf},\n\t// Block 0x96, offset 0x328\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01d9, lo: 0x80, hi: 0x8e},\n\t{value: 0x045b, lo: 0x8f, hi: 0x8f},\n\t{value: 0x01c7, lo: 0x90, hi: 0x90},\n\t{value: 0x01d0, lo: 0x91, hi: 0x91},\n\t{value: 0x01d6, lo: 0x92, hi: 0x92},\n\t{value: 0x01fa, lo: 0x93, hi: 0x93},\n\t{value: 0x01eb, lo: 0x94, hi: 0x94},\n\t{value: 0x01e8, lo: 0x95, hi: 0x95},\n\t{value: 0x0173, lo: 0x96, hi: 0xa6},\n\t{value: 0x0188, lo: 0xa7, hi: 0xa7},\n\t{value: 0x01a6, lo: 0xa8, hi: 0xae},\n\t{value: 0x045f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x01bb, lo: 0xb0, hi: 0xbf},\n\t// Block 0x97, offset 0x336\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01eb, lo: 0x80, hi: 0x88},\n\t{value: 0x045b, lo: 0x89, hi: 0x89},\n\t{value: 0x01c7, lo: 0x8a, hi: 0x8a},\n\t{value: 0x01d0, lo: 0x8b, hi: 0x8b},\n\t{value: 0x01d6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x01fa, lo: 0x8d, hi: 0x8d},\n\t{value: 0x01eb, lo: 0x8e, hi: 0x8e},\n\t{value: 0x01e8, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0173, lo: 0x90, hi: 0xa0},\n\t{value: 0x0188, lo: 0xa1, hi: 0xa1},\n\t{value: 0x01a6, lo: 0xa2, hi: 0xa8},\n\t{value: 0x045f, lo: 0xa9, hi: 0xa9},\n\t{value: 0x01bb, lo: 0xaa, hi: 0xbf},\n\t// Block 0x98, offset 0x344\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0x80, hi: 0x86},\n\t{value: 0x8132, lo: 0x88, hi: 0x98},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8132, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa6, hi: 0xaa},\n\t// Block 0x99, offset 0x34a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x90, hi: 0x96},\n\t// Block 0x9a, offset 0x34c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x84, hi: 0x89},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x9b, offset 0x34f\n\t{value: 0x0002, lo: 0x09},\n\t{value: 0x0063, lo: 0x80, hi: 0x89},\n\t{value: 0x1951, lo: 0x8a, hi: 0x8a},\n\t{value: 0x1981, lo: 0x8b, hi: 0x8b},\n\t{value: 0x199c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x19a2, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1bc0, lo: 0x8e, hi: 0x8e},\n\t{value: 0x19ae, lo: 0x8f, hi: 0x8f},\n\t{value: 0x197b, lo: 0xaa, hi: 0xaa},\n\t{value: 0x197e, lo: 0xab, hi: 0xab},\n\t// Block 0x9c, offset 0x359\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x193f, lo: 0x90, hi: 0x90},\n\t// Block 0x9d, offset 0x35b\n\t{value: 0x0028, lo: 0x09},\n\t{value: 0x2862, lo: 0x80, hi: 0x80},\n\t{value: 0x2826, lo: 0x81, hi: 0x81},\n\t{value: 0x2830, lo: 0x82, hi: 0x82},\n\t{value: 0x2844, lo: 0x83, hi: 0x84},\n\t{value: 0x284e, lo: 0x85, hi: 0x86},\n\t{value: 0x283a, lo: 0x87, hi: 0x87},\n\t{value: 0x2858, lo: 0x88, hi: 0x88},\n\t{value: 0x0b6f, lo: 0x90, hi: 0x90},\n\t{value: 0x08e7, lo: 0x91, hi: 0x91},\n}\n\n// recompMap: 7520 bytes (entries only)\nvar recompMap map[uint32]rune\nvar recompMapOnce sync.Once\n\nconst recompMapPacked = \"\" +\n\t\"\\x00A\\x03\\x00\\x00\\x00\\x00\\xc0\" + // 0x00410300: 0x000000C0\n\t\"\\x00A\\x03\\x01\\x00\\x00\\x00\\xc1\" + // 0x00410301: 0x000000C1\n\t\"\\x00A\\x03\\x02\\x00\\x00\\x00\\xc2\" + // 0x00410302: 0x000000C2\n\t\"\\x00A\\x03\\x03\\x00\\x00\\x00\\xc3\" + // 0x00410303: 0x000000C3\n\t\"\\x00A\\x03\\b\\x00\\x00\\x00\\xc4\" + // 0x00410308: 0x000000C4\n\t\"\\x00A\\x03\\n\\x00\\x00\\x00\\xc5\" + // 0x0041030A: 0x000000C5\n\t\"\\x00C\\x03'\\x00\\x00\\x00\\xc7\" + // 0x00430327: 0x000000C7\n\t\"\\x00E\\x03\\x00\\x00\\x00\\x00\\xc8\" + // 0x00450300: 0x000000C8\n\t\"\\x00E\\x03\\x01\\x00\\x00\\x00\\xc9\" + // 0x00450301: 0x000000C9\n\t\"\\x00E\\x03\\x02\\x00\\x00\\x00\\xca\" + // 0x00450302: 0x000000CA\n\t\"\\x00E\\x03\\b\\x00\\x00\\x00\\xcb\" + // 0x00450308: 0x000000CB\n\t\"\\x00I\\x03\\x00\\x00\\x00\\x00\\xcc\" + // 0x00490300: 0x000000CC\n\t\"\\x00I\\x03\\x01\\x00\\x00\\x00\\xcd\" + // 0x00490301: 0x000000CD\n\t\"\\x00I\\x03\\x02\\x00\\x00\\x00\\xce\" + // 0x00490302: 0x000000CE\n\t\"\\x00I\\x03\\b\\x00\\x00\\x00\\xcf\" + // 0x00490308: 0x000000CF\n\t\"\\x00N\\x03\\x03\\x00\\x00\\x00\\xd1\" + // 0x004E0303: 0x000000D1\n\t\"\\x00O\\x03\\x00\\x00\\x00\\x00\\xd2\" + // 0x004F0300: 0x000000D2\n\t\"\\x00O\\x03\\x01\\x00\\x00\\x00\\xd3\" + // 0x004F0301: 0x000000D3\n\t\"\\x00O\\x03\\x02\\x00\\x00\\x00\\xd4\" + // 0x004F0302: 0x000000D4\n\t\"\\x00O\\x03\\x03\\x00\\x00\\x00\\xd5\" + // 0x004F0303: 0x000000D5\n\t\"\\x00O\\x03\\b\\x00\\x00\\x00\\xd6\" + // 0x004F0308: 0x000000D6\n\t\"\\x00U\\x03\\x00\\x00\\x00\\x00\\xd9\" + // 0x00550300: 0x000000D9\n\t\"\\x00U\\x03\\x01\\x00\\x00\\x00\\xda\" + // 0x00550301: 0x000000DA\n\t\"\\x00U\\x03\\x02\\x00\\x00\\x00\\xdb\" + // 0x00550302: 0x000000DB\n\t\"\\x00U\\x03\\b\\x00\\x00\\x00\\xdc\" + // 0x00550308: 0x000000DC\n\t\"\\x00Y\\x03\\x01\\x00\\x00\\x00\\xdd\" + // 0x00590301: 0x000000DD\n\t\"\\x00a\\x03\\x00\\x00\\x00\\x00\\xe0\" + // 0x00610300: 0x000000E0\n\t\"\\x00a\\x03\\x01\\x00\\x00\\x00\\xe1\" + // 0x00610301: 0x000000E1\n\t\"\\x00a\\x03\\x02\\x00\\x00\\x00\\xe2\" + // 0x00610302: 0x000000E2\n\t\"\\x00a\\x03\\x03\\x00\\x00\\x00\\xe3\" + // 0x00610303: 0x000000E3\n\t\"\\x00a\\x03\\b\\x00\\x00\\x00\\xe4\" + // 0x00610308: 0x000000E4\n\t\"\\x00a\\x03\\n\\x00\\x00\\x00\\xe5\" + // 0x0061030A: 0x000000E5\n\t\"\\x00c\\x03'\\x00\\x00\\x00\\xe7\" + // 0x00630327: 0x000000E7\n\t\"\\x00e\\x03\\x00\\x00\\x00\\x00\\xe8\" + // 0x00650300: 0x000000E8\n\t\"\\x00e\\x03\\x01\\x00\\x00\\x00\\xe9\" + // 0x00650301: 0x000000E9\n\t\"\\x00e\\x03\\x02\\x00\\x00\\x00\\xea\" + // 0x00650302: 0x000000EA\n\t\"\\x00e\\x03\\b\\x00\\x00\\x00\\xeb\" + // 0x00650308: 0x000000EB\n\t\"\\x00i\\x03\\x00\\x00\\x00\\x00\\xec\" + // 0x00690300: 0x000000EC\n\t\"\\x00i\\x03\\x01\\x00\\x00\\x00\\xed\" + // 0x00690301: 0x000000ED\n\t\"\\x00i\\x03\\x02\\x00\\x00\\x00\\xee\" + // 0x00690302: 0x000000EE\n\t\"\\x00i\\x03\\b\\x00\\x00\\x00\\xef\" + // 0x00690308: 0x000000EF\n\t\"\\x00n\\x03\\x03\\x00\\x00\\x00\\xf1\" + // 0x006E0303: 0x000000F1\n\t\"\\x00o\\x03\\x00\\x00\\x00\\x00\\xf2\" + // 0x006F0300: 0x000000F2\n\t\"\\x00o\\x03\\x01\\x00\\x00\\x00\\xf3\" + // 0x006F0301: 0x000000F3\n\t\"\\x00o\\x03\\x02\\x00\\x00\\x00\\xf4\" + // 0x006F0302: 0x000000F4\n\t\"\\x00o\\x03\\x03\\x00\\x00\\x00\\xf5\" + // 0x006F0303: 0x000000F5\n\t\"\\x00o\\x03\\b\\x00\\x00\\x00\\xf6\" + // 0x006F0308: 0x000000F6\n\t\"\\x00u\\x03\\x00\\x00\\x00\\x00\\xf9\" + // 0x00750300: 0x000000F9\n\t\"\\x00u\\x03\\x01\\x00\\x00\\x00\\xfa\" + // 0x00750301: 0x000000FA\n\t\"\\x00u\\x03\\x02\\x00\\x00\\x00\\xfb\" + // 0x00750302: 0x000000FB\n\t\"\\x00u\\x03\\b\\x00\\x00\\x00\\xfc\" + // 0x00750308: 0x000000FC\n\t\"\\x00y\\x03\\x01\\x00\\x00\\x00\\xfd\" + // 0x00790301: 0x000000FD\n\t\"\\x00y\\x03\\b\\x00\\x00\\x00\\xff\" + // 0x00790308: 0x000000FF\n\t\"\\x00A\\x03\\x04\\x00\\x00\\x01\\x00\" + // 0x00410304: 0x00000100\n\t\"\\x00a\\x03\\x04\\x00\\x00\\x01\\x01\" + // 0x00610304: 0x00000101\n\t\"\\x00A\\x03\\x06\\x00\\x00\\x01\\x02\" + // 0x00410306: 0x00000102\n\t\"\\x00a\\x03\\x06\\x00\\x00\\x01\\x03\" + // 0x00610306: 0x00000103\n\t\"\\x00A\\x03(\\x00\\x00\\x01\\x04\" + // 0x00410328: 0x00000104\n\t\"\\x00a\\x03(\\x00\\x00\\x01\\x05\" + // 0x00610328: 0x00000105\n\t\"\\x00C\\x03\\x01\\x00\\x00\\x01\\x06\" + // 0x00430301: 0x00000106\n\t\"\\x00c\\x03\\x01\\x00\\x00\\x01\\a\" + // 0x00630301: 0x00000107\n\t\"\\x00C\\x03\\x02\\x00\\x00\\x01\\b\" + // 0x00430302: 0x00000108\n\t\"\\x00c\\x03\\x02\\x00\\x00\\x01\\t\" + // 0x00630302: 0x00000109\n\t\"\\x00C\\x03\\a\\x00\\x00\\x01\\n\" + // 0x00430307: 0x0000010A\n\t\"\\x00c\\x03\\a\\x00\\x00\\x01\\v\" + // 0x00630307: 0x0000010B\n\t\"\\x00C\\x03\\f\\x00\\x00\\x01\\f\" + // 0x0043030C: 0x0000010C\n\t\"\\x00c\\x03\\f\\x00\\x00\\x01\\r\" + // 0x0063030C: 0x0000010D\n\t\"\\x00D\\x03\\f\\x00\\x00\\x01\\x0e\" + // 0x0044030C: 0x0000010E\n\t\"\\x00d\\x03\\f\\x00\\x00\\x01\\x0f\" + // 0x0064030C: 0x0000010F\n\t\"\\x00E\\x03\\x04\\x00\\x00\\x01\\x12\" + // 0x00450304: 0x00000112\n\t\"\\x00e\\x03\\x04\\x00\\x00\\x01\\x13\" + // 0x00650304: 0x00000113\n\t\"\\x00E\\x03\\x06\\x00\\x00\\x01\\x14\" + // 0x00450306: 0x00000114\n\t\"\\x00e\\x03\\x06\\x00\\x00\\x01\\x15\" + // 0x00650306: 0x00000115\n\t\"\\x00E\\x03\\a\\x00\\x00\\x01\\x16\" + // 0x00450307: 0x00000116\n\t\"\\x00e\\x03\\a\\x00\\x00\\x01\\x17\" + // 0x00650307: 0x00000117\n\t\"\\x00E\\x03(\\x00\\x00\\x01\\x18\" + // 0x00450328: 0x00000118\n\t\"\\x00e\\x03(\\x00\\x00\\x01\\x19\" + // 0x00650328: 0x00000119\n\t\"\\x00E\\x03\\f\\x00\\x00\\x01\\x1a\" + // 0x0045030C: 0x0000011A\n\t\"\\x00e\\x03\\f\\x00\\x00\\x01\\x1b\" + // 0x0065030C: 0x0000011B\n\t\"\\x00G\\x03\\x02\\x00\\x00\\x01\\x1c\" + // 0x00470302: 0x0000011C\n\t\"\\x00g\\x03\\x02\\x00\\x00\\x01\\x1d\" + // 0x00670302: 0x0000011D\n\t\"\\x00G\\x03\\x06\\x00\\x00\\x01\\x1e\" + // 0x00470306: 0x0000011E\n\t\"\\x00g\\x03\\x06\\x00\\x00\\x01\\x1f\" + // 0x00670306: 0x0000011F\n\t\"\\x00G\\x03\\a\\x00\\x00\\x01 \" + // 0x00470307: 0x00000120\n\t\"\\x00g\\x03\\a\\x00\\x00\\x01!\" + // 0x00670307: 0x00000121\n\t\"\\x00G\\x03'\\x00\\x00\\x01\\\"\" + // 0x00470327: 0x00000122\n\t\"\\x00g\\x03'\\x00\\x00\\x01#\" + // 0x00670327: 0x00000123\n\t\"\\x00H\\x03\\x02\\x00\\x00\\x01$\" + // 0x00480302: 0x00000124\n\t\"\\x00h\\x03\\x02\\x00\\x00\\x01%\" + // 0x00680302: 0x00000125\n\t\"\\x00I\\x03\\x03\\x00\\x00\\x01(\" + // 0x00490303: 0x00000128\n\t\"\\x00i\\x03\\x03\\x00\\x00\\x01)\" + // 0x00690303: 0x00000129\n\t\"\\x00I\\x03\\x04\\x00\\x00\\x01*\" + // 0x00490304: 0x0000012A\n\t\"\\x00i\\x03\\x04\\x00\\x00\\x01+\" + // 0x00690304: 0x0000012B\n\t\"\\x00I\\x03\\x06\\x00\\x00\\x01,\" + // 0x00490306: 0x0000012C\n\t\"\\x00i\\x03\\x06\\x00\\x00\\x01-\" + // 0x00690306: 0x0000012D\n\t\"\\x00I\\x03(\\x00\\x00\\x01.\" + // 0x00490328: 0x0000012E\n\t\"\\x00i\\x03(\\x00\\x00\\x01/\" + // 0x00690328: 0x0000012F\n\t\"\\x00I\\x03\\a\\x00\\x00\\x010\" + // 0x00490307: 0x00000130\n\t\"\\x00J\\x03\\x02\\x00\\x00\\x014\" + // 0x004A0302: 0x00000134\n\t\"\\x00j\\x03\\x02\\x00\\x00\\x015\" + // 0x006A0302: 0x00000135\n\t\"\\x00K\\x03'\\x00\\x00\\x016\" + // 0x004B0327: 0x00000136\n\t\"\\x00k\\x03'\\x00\\x00\\x017\" + // 0x006B0327: 0x00000137\n\t\"\\x00L\\x03\\x01\\x00\\x00\\x019\" + // 0x004C0301: 0x00000139\n\t\"\\x00l\\x03\\x01\\x00\\x00\\x01:\" + // 0x006C0301: 0x0000013A\n\t\"\\x00L\\x03'\\x00\\x00\\x01;\" + // 0x004C0327: 0x0000013B\n\t\"\\x00l\\x03'\\x00\\x00\\x01<\" + // 0x006C0327: 0x0000013C\n\t\"\\x00L\\x03\\f\\x00\\x00\\x01=\" + // 0x004C030C: 0x0000013D\n\t\"\\x00l\\x03\\f\\x00\\x00\\x01>\" + // 0x006C030C: 0x0000013E\n\t\"\\x00N\\x03\\x01\\x00\\x00\\x01C\" + // 0x004E0301: 0x00000143\n\t\"\\x00n\\x03\\x01\\x00\\x00\\x01D\" + // 0x006E0301: 0x00000144\n\t\"\\x00N\\x03'\\x00\\x00\\x01E\" + // 0x004E0327: 0x00000145\n\t\"\\x00n\\x03'\\x00\\x00\\x01F\" + // 0x006E0327: 0x00000146\n\t\"\\x00N\\x03\\f\\x00\\x00\\x01G\" + // 0x004E030C: 0x00000147\n\t\"\\x00n\\x03\\f\\x00\\x00\\x01H\" + // 0x006E030C: 0x00000148\n\t\"\\x00O\\x03\\x04\\x00\\x00\\x01L\" + // 0x004F0304: 0x0000014C\n\t\"\\x00o\\x03\\x04\\x00\\x00\\x01M\" + // 0x006F0304: 0x0000014D\n\t\"\\x00O\\x03\\x06\\x00\\x00\\x01N\" + // 0x004F0306: 0x0000014E\n\t\"\\x00o\\x03\\x06\\x00\\x00\\x01O\" + // 0x006F0306: 0x0000014F\n\t\"\\x00O\\x03\\v\\x00\\x00\\x01P\" + // 0x004F030B: 0x00000150\n\t\"\\x00o\\x03\\v\\x00\\x00\\x01Q\" + // 0x006F030B: 0x00000151\n\t\"\\x00R\\x03\\x01\\x00\\x00\\x01T\" + // 0x00520301: 0x00000154\n\t\"\\x00r\\x03\\x01\\x00\\x00\\x01U\" + // 0x00720301: 0x00000155\n\t\"\\x00R\\x03'\\x00\\x00\\x01V\" + // 0x00520327: 0x00000156\n\t\"\\x00r\\x03'\\x00\\x00\\x01W\" + // 0x00720327: 0x00000157\n\t\"\\x00R\\x03\\f\\x00\\x00\\x01X\" + // 0x0052030C: 0x00000158\n\t\"\\x00r\\x03\\f\\x00\\x00\\x01Y\" + // 0x0072030C: 0x00000159\n\t\"\\x00S\\x03\\x01\\x00\\x00\\x01Z\" + // 0x00530301: 0x0000015A\n\t\"\\x00s\\x03\\x01\\x00\\x00\\x01[\" + // 0x00730301: 0x0000015B\n\t\"\\x00S\\x03\\x02\\x00\\x00\\x01\\\\\" + // 0x00530302: 0x0000015C\n\t\"\\x00s\\x03\\x02\\x00\\x00\\x01]\" + // 0x00730302: 0x0000015D\n\t\"\\x00S\\x03'\\x00\\x00\\x01^\" + // 0x00530327: 0x0000015E\n\t\"\\x00s\\x03'\\x00\\x00\\x01_\" + // 0x00730327: 0x0000015F\n\t\"\\x00S\\x03\\f\\x00\\x00\\x01`\" + // 0x0053030C: 0x00000160\n\t\"\\x00s\\x03\\f\\x00\\x00\\x01a\" + // 0x0073030C: 0x00000161\n\t\"\\x00T\\x03'\\x00\\x00\\x01b\" + // 0x00540327: 0x00000162\n\t\"\\x00t\\x03'\\x00\\x00\\x01c\" + // 0x00740327: 0x00000163\n\t\"\\x00T\\x03\\f\\x00\\x00\\x01d\" + // 0x0054030C: 0x00000164\n\t\"\\x00t\\x03\\f\\x00\\x00\\x01e\" + // 0x0074030C: 0x00000165\n\t\"\\x00U\\x03\\x03\\x00\\x00\\x01h\" + // 0x00550303: 0x00000168\n\t\"\\x00u\\x03\\x03\\x00\\x00\\x01i\" + // 0x00750303: 0x00000169\n\t\"\\x00U\\x03\\x04\\x00\\x00\\x01j\" + // 0x00550304: 0x0000016A\n\t\"\\x00u\\x03\\x04\\x00\\x00\\x01k\" + // 0x00750304: 0x0000016B\n\t\"\\x00U\\x03\\x06\\x00\\x00\\x01l\" + // 0x00550306: 0x0000016C\n\t\"\\x00u\\x03\\x06\\x00\\x00\\x01m\" + // 0x00750306: 0x0000016D\n\t\"\\x00U\\x03\\n\\x00\\x00\\x01n\" + // 0x0055030A: 0x0000016E\n\t\"\\x00u\\x03\\n\\x00\\x00\\x01o\" + // 0x0075030A: 0x0000016F\n\t\"\\x00U\\x03\\v\\x00\\x00\\x01p\" + // 0x0055030B: 0x00000170\n\t\"\\x00u\\x03\\v\\x00\\x00\\x01q\" + // 0x0075030B: 0x00000171\n\t\"\\x00U\\x03(\\x00\\x00\\x01r\" + // 0x00550328: 0x00000172\n\t\"\\x00u\\x03(\\x00\\x00\\x01s\" + // 0x00750328: 0x00000173\n\t\"\\x00W\\x03\\x02\\x00\\x00\\x01t\" + // 0x00570302: 0x00000174\n\t\"\\x00w\\x03\\x02\\x00\\x00\\x01u\" + // 0x00770302: 0x00000175\n\t\"\\x00Y\\x03\\x02\\x00\\x00\\x01v\" + // 0x00590302: 0x00000176\n\t\"\\x00y\\x03\\x02\\x00\\x00\\x01w\" + // 0x00790302: 0x00000177\n\t\"\\x00Y\\x03\\b\\x00\\x00\\x01x\" + // 0x00590308: 0x00000178\n\t\"\\x00Z\\x03\\x01\\x00\\x00\\x01y\" + // 0x005A0301: 0x00000179\n\t\"\\x00z\\x03\\x01\\x00\\x00\\x01z\" + // 0x007A0301: 0x0000017A\n\t\"\\x00Z\\x03\\a\\x00\\x00\\x01{\" + // 0x005A0307: 0x0000017B\n\t\"\\x00z\\x03\\a\\x00\\x00\\x01|\" + // 0x007A0307: 0x0000017C\n\t\"\\x00Z\\x03\\f\\x00\\x00\\x01}\" + // 0x005A030C: 0x0000017D\n\t\"\\x00z\\x03\\f\\x00\\x00\\x01~\" + // 0x007A030C: 0x0000017E\n\t\"\\x00O\\x03\\x1b\\x00\\x00\\x01\\xa0\" + // 0x004F031B: 0x000001A0\n\t\"\\x00o\\x03\\x1b\\x00\\x00\\x01\\xa1\" + // 0x006F031B: 0x000001A1\n\t\"\\x00U\\x03\\x1b\\x00\\x00\\x01\\xaf\" + // 0x0055031B: 0x000001AF\n\t\"\\x00u\\x03\\x1b\\x00\\x00\\x01\\xb0\" + // 0x0075031B: 0x000001B0\n\t\"\\x00A\\x03\\f\\x00\\x00\\x01\\xcd\" + // 0x0041030C: 0x000001CD\n\t\"\\x00a\\x03\\f\\x00\\x00\\x01\\xce\" + // 0x0061030C: 0x000001CE\n\t\"\\x00I\\x03\\f\\x00\\x00\\x01\\xcf\" + // 0x0049030C: 0x000001CF\n\t\"\\x00i\\x03\\f\\x00\\x00\\x01\\xd0\" + // 0x0069030C: 0x000001D0\n\t\"\\x00O\\x03\\f\\x00\\x00\\x01\\xd1\" + // 0x004F030C: 0x000001D1\n\t\"\\x00o\\x03\\f\\x00\\x00\\x01\\xd2\" + // 0x006F030C: 0x000001D2\n\t\"\\x00U\\x03\\f\\x00\\x00\\x01\\xd3\" + // 0x0055030C: 0x000001D3\n\t\"\\x00u\\x03\\f\\x00\\x00\\x01\\xd4\" + // 0x0075030C: 0x000001D4\n\t\"\\x00\\xdc\\x03\\x04\\x00\\x00\\x01\\xd5\" + // 0x00DC0304: 0x000001D5\n\t\"\\x00\\xfc\\x03\\x04\\x00\\x00\\x01\\xd6\" + // 0x00FC0304: 0x000001D6\n\t\"\\x00\\xdc\\x03\\x01\\x00\\x00\\x01\\xd7\" + // 0x00DC0301: 0x000001D7\n\t\"\\x00\\xfc\\x03\\x01\\x00\\x00\\x01\\xd8\" + // 0x00FC0301: 0x000001D8\n\t\"\\x00\\xdc\\x03\\f\\x00\\x00\\x01\\xd9\" + // 0x00DC030C: 0x000001D9\n\t\"\\x00\\xfc\\x03\\f\\x00\\x00\\x01\\xda\" + // 0x00FC030C: 0x000001DA\n\t\"\\x00\\xdc\\x03\\x00\\x00\\x00\\x01\\xdb\" + // 0x00DC0300: 0x000001DB\n\t\"\\x00\\xfc\\x03\\x00\\x00\\x00\\x01\\xdc\" + // 0x00FC0300: 0x000001DC\n\t\"\\x00\\xc4\\x03\\x04\\x00\\x00\\x01\\xde\" + // 0x00C40304: 0x000001DE\n\t\"\\x00\\xe4\\x03\\x04\\x00\\x00\\x01\\xdf\" + // 0x00E40304: 0x000001DF\n\t\"\\x02&\\x03\\x04\\x00\\x00\\x01\\xe0\" + // 0x02260304: 0x000001E0\n\t\"\\x02'\\x03\\x04\\x00\\x00\\x01\\xe1\" + // 0x02270304: 0x000001E1\n\t\"\\x00\\xc6\\x03\\x04\\x00\\x00\\x01\\xe2\" + // 0x00C60304: 0x000001E2\n\t\"\\x00\\xe6\\x03\\x04\\x00\\x00\\x01\\xe3\" + // 0x00E60304: 0x000001E3\n\t\"\\x00G\\x03\\f\\x00\\x00\\x01\\xe6\" + // 0x0047030C: 0x000001E6\n\t\"\\x00g\\x03\\f\\x00\\x00\\x01\\xe7\" + // 0x0067030C: 0x000001E7\n\t\"\\x00K\\x03\\f\\x00\\x00\\x01\\xe8\" + // 0x004B030C: 0x000001E8\n\t\"\\x00k\\x03\\f\\x00\\x00\\x01\\xe9\" + // 0x006B030C: 0x000001E9\n\t\"\\x00O\\x03(\\x00\\x00\\x01\\xea\" + // 0x004F0328: 0x000001EA\n\t\"\\x00o\\x03(\\x00\\x00\\x01\\xeb\" + // 0x006F0328: 0x000001EB\n\t\"\\x01\\xea\\x03\\x04\\x00\\x00\\x01\\xec\" + // 0x01EA0304: 0x000001EC\n\t\"\\x01\\xeb\\x03\\x04\\x00\\x00\\x01\\xed\" + // 0x01EB0304: 0x000001ED\n\t\"\\x01\\xb7\\x03\\f\\x00\\x00\\x01\\xee\" + // 0x01B7030C: 0x000001EE\n\t\"\\x02\\x92\\x03\\f\\x00\\x00\\x01\\xef\" + // 0x0292030C: 0x000001EF\n\t\"\\x00j\\x03\\f\\x00\\x00\\x01\\xf0\" + // 0x006A030C: 0x000001F0\n\t\"\\x00G\\x03\\x01\\x00\\x00\\x01\\xf4\" + // 0x00470301: 0x000001F4\n\t\"\\x00g\\x03\\x01\\x00\\x00\\x01\\xf5\" + // 0x00670301: 0x000001F5\n\t\"\\x00N\\x03\\x00\\x00\\x00\\x01\\xf8\" + // 0x004E0300: 0x000001F8\n\t\"\\x00n\\x03\\x00\\x00\\x00\\x01\\xf9\" + // 0x006E0300: 0x000001F9\n\t\"\\x00\\xc5\\x03\\x01\\x00\\x00\\x01\\xfa\" + // 0x00C50301: 0x000001FA\n\t\"\\x00\\xe5\\x03\\x01\\x00\\x00\\x01\\xfb\" + // 0x00E50301: 0x000001FB\n\t\"\\x00\\xc6\\x03\\x01\\x00\\x00\\x01\\xfc\" + // 0x00C60301: 0x000001FC\n\t\"\\x00\\xe6\\x03\\x01\\x00\\x00\\x01\\xfd\" + // 0x00E60301: 0x000001FD\n\t\"\\x00\\xd8\\x03\\x01\\x00\\x00\\x01\\xfe\" + // 0x00D80301: 0x000001FE\n\t\"\\x00\\xf8\\x03\\x01\\x00\\x00\\x01\\xff\" + // 0x00F80301: 0x000001FF\n\t\"\\x00A\\x03\\x0f\\x00\\x00\\x02\\x00\" + // 0x0041030F: 0x00000200\n\t\"\\x00a\\x03\\x0f\\x00\\x00\\x02\\x01\" + // 0x0061030F: 0x00000201\n\t\"\\x00A\\x03\\x11\\x00\\x00\\x02\\x02\" + // 0x00410311: 0x00000202\n\t\"\\x00a\\x03\\x11\\x00\\x00\\x02\\x03\" + // 0x00610311: 0x00000203\n\t\"\\x00E\\x03\\x0f\\x00\\x00\\x02\\x04\" + // 0x0045030F: 0x00000204\n\t\"\\x00e\\x03\\x0f\\x00\\x00\\x02\\x05\" + // 0x0065030F: 0x00000205\n\t\"\\x00E\\x03\\x11\\x00\\x00\\x02\\x06\" + // 0x00450311: 0x00000206\n\t\"\\x00e\\x03\\x11\\x00\\x00\\x02\\a\" + // 0x00650311: 0x00000207\n\t\"\\x00I\\x03\\x0f\\x00\\x00\\x02\\b\" + // 0x0049030F: 0x00000208\n\t\"\\x00i\\x03\\x0f\\x00\\x00\\x02\\t\" + // 0x0069030F: 0x00000209\n\t\"\\x00I\\x03\\x11\\x00\\x00\\x02\\n\" + // 0x00490311: 0x0000020A\n\t\"\\x00i\\x03\\x11\\x00\\x00\\x02\\v\" + // 0x00690311: 0x0000020B\n\t\"\\x00O\\x03\\x0f\\x00\\x00\\x02\\f\" + // 0x004F030F: 0x0000020C\n\t\"\\x00o\\x03\\x0f\\x00\\x00\\x02\\r\" + // 0x006F030F: 0x0000020D\n\t\"\\x00O\\x03\\x11\\x00\\x00\\x02\\x0e\" + // 0x004F0311: 0x0000020E\n\t\"\\x00o\\x03\\x11\\x00\\x00\\x02\\x0f\" + // 0x006F0311: 0x0000020F\n\t\"\\x00R\\x03\\x0f\\x00\\x00\\x02\\x10\" + // 0x0052030F: 0x00000210\n\t\"\\x00r\\x03\\x0f\\x00\\x00\\x02\\x11\" + // 0x0072030F: 0x00000211\n\t\"\\x00R\\x03\\x11\\x00\\x00\\x02\\x12\" + // 0x00520311: 0x00000212\n\t\"\\x00r\\x03\\x11\\x00\\x00\\x02\\x13\" + // 0x00720311: 0x00000213\n\t\"\\x00U\\x03\\x0f\\x00\\x00\\x02\\x14\" + // 0x0055030F: 0x00000214\n\t\"\\x00u\\x03\\x0f\\x00\\x00\\x02\\x15\" + // 0x0075030F: 0x00000215\n\t\"\\x00U\\x03\\x11\\x00\\x00\\x02\\x16\" + // 0x00550311: 0x00000216\n\t\"\\x00u\\x03\\x11\\x00\\x00\\x02\\x17\" + // 0x00750311: 0x00000217\n\t\"\\x00S\\x03&\\x00\\x00\\x02\\x18\" + // 0x00530326: 0x00000218\n\t\"\\x00s\\x03&\\x00\\x00\\x02\\x19\" + // 0x00730326: 0x00000219\n\t\"\\x00T\\x03&\\x00\\x00\\x02\\x1a\" + // 0x00540326: 0x0000021A\n\t\"\\x00t\\x03&\\x00\\x00\\x02\\x1b\" + // 0x00740326: 0x0000021B\n\t\"\\x00H\\x03\\f\\x00\\x00\\x02\\x1e\" + // 0x0048030C: 0x0000021E\n\t\"\\x00h\\x03\\f\\x00\\x00\\x02\\x1f\" + // 0x0068030C: 0x0000021F\n\t\"\\x00A\\x03\\a\\x00\\x00\\x02&\" + // 0x00410307: 0x00000226\n\t\"\\x00a\\x03\\a\\x00\\x00\\x02'\" + // 0x00610307: 0x00000227\n\t\"\\x00E\\x03'\\x00\\x00\\x02(\" + // 0x00450327: 0x00000228\n\t\"\\x00e\\x03'\\x00\\x00\\x02)\" + // 0x00650327: 0x00000229\n\t\"\\x00\\xd6\\x03\\x04\\x00\\x00\\x02*\" + // 0x00D60304: 0x0000022A\n\t\"\\x00\\xf6\\x03\\x04\\x00\\x00\\x02+\" + // 0x00F60304: 0x0000022B\n\t\"\\x00\\xd5\\x03\\x04\\x00\\x00\\x02,\" + // 0x00D50304: 0x0000022C\n\t\"\\x00\\xf5\\x03\\x04\\x00\\x00\\x02-\" + // 0x00F50304: 0x0000022D\n\t\"\\x00O\\x03\\a\\x00\\x00\\x02.\" + // 0x004F0307: 0x0000022E\n\t\"\\x00o\\x03\\a\\x00\\x00\\x02/\" + // 0x006F0307: 0x0000022F\n\t\"\\x02.\\x03\\x04\\x00\\x00\\x020\" + // 0x022E0304: 0x00000230\n\t\"\\x02/\\x03\\x04\\x00\\x00\\x021\" + // 0x022F0304: 0x00000231\n\t\"\\x00Y\\x03\\x04\\x00\\x00\\x022\" + // 0x00590304: 0x00000232\n\t\"\\x00y\\x03\\x04\\x00\\x00\\x023\" + // 0x00790304: 0x00000233\n\t\"\\x00\\xa8\\x03\\x01\\x00\\x00\\x03\\x85\" + // 0x00A80301: 0x00000385\n\t\"\\x03\\x91\\x03\\x01\\x00\\x00\\x03\\x86\" + // 0x03910301: 0x00000386\n\t\"\\x03\\x95\\x03\\x01\\x00\\x00\\x03\\x88\" + // 0x03950301: 0x00000388\n\t\"\\x03\\x97\\x03\\x01\\x00\\x00\\x03\\x89\" + // 0x03970301: 0x00000389\n\t\"\\x03\\x99\\x03\\x01\\x00\\x00\\x03\\x8a\" + // 0x03990301: 0x0000038A\n\t\"\\x03\\x9f\\x03\\x01\\x00\\x00\\x03\\x8c\" + // 0x039F0301: 0x0000038C\n\t\"\\x03\\xa5\\x03\\x01\\x00\\x00\\x03\\x8e\" + // 0x03A50301: 0x0000038E\n\t\"\\x03\\xa9\\x03\\x01\\x00\\x00\\x03\\x8f\" + // 0x03A90301: 0x0000038F\n\t\"\\x03\\xca\\x03\\x01\\x00\\x00\\x03\\x90\" + // 0x03CA0301: 0x00000390\n\t\"\\x03\\x99\\x03\\b\\x00\\x00\\x03\\xaa\" + // 0x03990308: 0x000003AA\n\t\"\\x03\\xa5\\x03\\b\\x00\\x00\\x03\\xab\" + // 0x03A50308: 0x000003AB\n\t\"\\x03\\xb1\\x03\\x01\\x00\\x00\\x03\\xac\" + // 0x03B10301: 0x000003AC\n\t\"\\x03\\xb5\\x03\\x01\\x00\\x00\\x03\\xad\" + // 0x03B50301: 0x000003AD\n\t\"\\x03\\xb7\\x03\\x01\\x00\\x00\\x03\\xae\" + // 0x03B70301: 0x000003AE\n\t\"\\x03\\xb9\\x03\\x01\\x00\\x00\\x03\\xaf\" + // 0x03B90301: 0x000003AF\n\t\"\\x03\\xcb\\x03\\x01\\x00\\x00\\x03\\xb0\" + // 0x03CB0301: 0x000003B0\n\t\"\\x03\\xb9\\x03\\b\\x00\\x00\\x03\\xca\" + // 0x03B90308: 0x000003CA\n\t\"\\x03\\xc5\\x03\\b\\x00\\x00\\x03\\xcb\" + // 0x03C50308: 0x000003CB\n\t\"\\x03\\xbf\\x03\\x01\\x00\\x00\\x03\\xcc\" + // 0x03BF0301: 0x000003CC\n\t\"\\x03\\xc5\\x03\\x01\\x00\\x00\\x03\\xcd\" + // 0x03C50301: 0x000003CD\n\t\"\\x03\\xc9\\x03\\x01\\x00\\x00\\x03\\xce\" + // 0x03C90301: 0x000003CE\n\t\"\\x03\\xd2\\x03\\x01\\x00\\x00\\x03\\xd3\" + // 0x03D20301: 0x000003D3\n\t\"\\x03\\xd2\\x03\\b\\x00\\x00\\x03\\xd4\" + // 0x03D20308: 0x000003D4\n\t\"\\x04\\x15\\x03\\x00\\x00\\x00\\x04\\x00\" + // 0x04150300: 0x00000400\n\t\"\\x04\\x15\\x03\\b\\x00\\x00\\x04\\x01\" + // 0x04150308: 0x00000401\n\t\"\\x04\\x13\\x03\\x01\\x00\\x00\\x04\\x03\" + // 0x04130301: 0x00000403\n\t\"\\x04\\x06\\x03\\b\\x00\\x00\\x04\\a\" + // 0x04060308: 0x00000407\n\t\"\\x04\\x1a\\x03\\x01\\x00\\x00\\x04\\f\" + // 0x041A0301: 0x0000040C\n\t\"\\x04\\x18\\x03\\x00\\x00\\x00\\x04\\r\" + // 0x04180300: 0x0000040D\n\t\"\\x04#\\x03\\x06\\x00\\x00\\x04\\x0e\" + // 0x04230306: 0x0000040E\n\t\"\\x04\\x18\\x03\\x06\\x00\\x00\\x04\\x19\" + // 0x04180306: 0x00000419\n\t\"\\x048\\x03\\x06\\x00\\x00\\x049\" + // 0x04380306: 0x00000439\n\t\"\\x045\\x03\\x00\\x00\\x00\\x04P\" + // 0x04350300: 0x00000450\n\t\"\\x045\\x03\\b\\x00\\x00\\x04Q\" + // 0x04350308: 0x00000451\n\t\"\\x043\\x03\\x01\\x00\\x00\\x04S\" + // 0x04330301: 0x00000453\n\t\"\\x04V\\x03\\b\\x00\\x00\\x04W\" + // 0x04560308: 0x00000457\n\t\"\\x04:\\x03\\x01\\x00\\x00\\x04\\\\\" + // 0x043A0301: 0x0000045C\n\t\"\\x048\\x03\\x00\\x00\\x00\\x04]\" + // 0x04380300: 0x0000045D\n\t\"\\x04C\\x03\\x06\\x00\\x00\\x04^\" + // 0x04430306: 0x0000045E\n\t\"\\x04t\\x03\\x0f\\x00\\x00\\x04v\" + // 0x0474030F: 0x00000476\n\t\"\\x04u\\x03\\x0f\\x00\\x00\\x04w\" + // 0x0475030F: 0x00000477\n\t\"\\x04\\x16\\x03\\x06\\x00\\x00\\x04\\xc1\" + // 0x04160306: 0x000004C1\n\t\"\\x046\\x03\\x06\\x00\\x00\\x04\\xc2\" + // 0x04360306: 0x000004C2\n\t\"\\x04\\x10\\x03\\x06\\x00\\x00\\x04\\xd0\" + // 0x04100306: 0x000004D0\n\t\"\\x040\\x03\\x06\\x00\\x00\\x04\\xd1\" + // 0x04300306: 0x000004D1\n\t\"\\x04\\x10\\x03\\b\\x00\\x00\\x04\\xd2\" + // 0x04100308: 0x000004D2\n\t\"\\x040\\x03\\b\\x00\\x00\\x04\\xd3\" + // 0x04300308: 0x000004D3\n\t\"\\x04\\x15\\x03\\x06\\x00\\x00\\x04\\xd6\" + // 0x04150306: 0x000004D6\n\t\"\\x045\\x03\\x06\\x00\\x00\\x04\\xd7\" + // 0x04350306: 0x000004D7\n\t\"\\x04\\xd8\\x03\\b\\x00\\x00\\x04\\xda\" + // 0x04D80308: 0x000004DA\n\t\"\\x04\\xd9\\x03\\b\\x00\\x00\\x04\\xdb\" + // 0x04D90308: 0x000004DB\n\t\"\\x04\\x16\\x03\\b\\x00\\x00\\x04\\xdc\" + // 0x04160308: 0x000004DC\n\t\"\\x046\\x03\\b\\x00\\x00\\x04\\xdd\" + // 0x04360308: 0x000004DD\n\t\"\\x04\\x17\\x03\\b\\x00\\x00\\x04\\xde\" + // 0x04170308: 0x000004DE\n\t\"\\x047\\x03\\b\\x00\\x00\\x04\\xdf\" + // 0x04370308: 0x000004DF\n\t\"\\x04\\x18\\x03\\x04\\x00\\x00\\x04\\xe2\" + // 0x04180304: 0x000004E2\n\t\"\\x048\\x03\\x04\\x00\\x00\\x04\\xe3\" + // 0x04380304: 0x000004E3\n\t\"\\x04\\x18\\x03\\b\\x00\\x00\\x04\\xe4\" + // 0x04180308: 0x000004E4\n\t\"\\x048\\x03\\b\\x00\\x00\\x04\\xe5\" + // 0x04380308: 0x000004E5\n\t\"\\x04\\x1e\\x03\\b\\x00\\x00\\x04\\xe6\" + // 0x041E0308: 0x000004E6\n\t\"\\x04>\\x03\\b\\x00\\x00\\x04\\xe7\" + // 0x043E0308: 0x000004E7\n\t\"\\x04\\xe8\\x03\\b\\x00\\x00\\x04\\xea\" + // 0x04E80308: 0x000004EA\n\t\"\\x04\\xe9\\x03\\b\\x00\\x00\\x04\\xeb\" + // 0x04E90308: 0x000004EB\n\t\"\\x04-\\x03\\b\\x00\\x00\\x04\\xec\" + // 0x042D0308: 0x000004EC\n\t\"\\x04M\\x03\\b\\x00\\x00\\x04\\xed\" + // 0x044D0308: 0x000004ED\n\t\"\\x04#\\x03\\x04\\x00\\x00\\x04\\xee\" + // 0x04230304: 0x000004EE\n\t\"\\x04C\\x03\\x04\\x00\\x00\\x04\\xef\" + // 0x04430304: 0x000004EF\n\t\"\\x04#\\x03\\b\\x00\\x00\\x04\\xf0\" + // 0x04230308: 0x000004F0\n\t\"\\x04C\\x03\\b\\x00\\x00\\x04\\xf1\" + // 0x04430308: 0x000004F1\n\t\"\\x04#\\x03\\v\\x00\\x00\\x04\\xf2\" + // 0x0423030B: 0x000004F2\n\t\"\\x04C\\x03\\v\\x00\\x00\\x04\\xf3\" + // 0x0443030B: 0x000004F3\n\t\"\\x04'\\x03\\b\\x00\\x00\\x04\\xf4\" + // 0x04270308: 0x000004F4\n\t\"\\x04G\\x03\\b\\x00\\x00\\x04\\xf5\" + // 0x04470308: 0x000004F5\n\t\"\\x04+\\x03\\b\\x00\\x00\\x04\\xf8\" + // 0x042B0308: 0x000004F8\n\t\"\\x04K\\x03\\b\\x00\\x00\\x04\\xf9\" + // 0x044B0308: 0x000004F9\n\t\"\\x06'\\x06S\\x00\\x00\\x06\\\"\" + // 0x06270653: 0x00000622\n\t\"\\x06'\\x06T\\x00\\x00\\x06#\" + // 0x06270654: 0x00000623\n\t\"\\x06H\\x06T\\x00\\x00\\x06$\" + // 0x06480654: 0x00000624\n\t\"\\x06'\\x06U\\x00\\x00\\x06%\" + // 0x06270655: 0x00000625\n\t\"\\x06J\\x06T\\x00\\x00\\x06&\" + // 0x064A0654: 0x00000626\n\t\"\\x06\\xd5\\x06T\\x00\\x00\\x06\\xc0\" + // 0x06D50654: 0x000006C0\n\t\"\\x06\\xc1\\x06T\\x00\\x00\\x06\\xc2\" + // 0x06C10654: 0x000006C2\n\t\"\\x06\\xd2\\x06T\\x00\\x00\\x06\\xd3\" + // 0x06D20654: 0x000006D3\n\t\"\\t(\\t<\\x00\\x00\\t)\" + // 0x0928093C: 0x00000929\n\t\"\\t0\\t<\\x00\\x00\\t1\" + // 0x0930093C: 0x00000931\n\t\"\\t3\\t<\\x00\\x00\\t4\" + // 0x0933093C: 0x00000934\n\t\"\\t\\xc7\\t\\xbe\\x00\\x00\\t\\xcb\" + // 0x09C709BE: 0x000009CB\n\t\"\\t\\xc7\\t\\xd7\\x00\\x00\\t\\xcc\" + // 0x09C709D7: 0x000009CC\n\t\"\\vG\\vV\\x00\\x00\\vH\" + // 0x0B470B56: 0x00000B48\n\t\"\\vG\\v>\\x00\\x00\\vK\" + // 0x0B470B3E: 0x00000B4B\n\t\"\\vG\\vW\\x00\\x00\\vL\" + // 0x0B470B57: 0x00000B4C\n\t\"\\v\\x92\\v\\xd7\\x00\\x00\\v\\x94\" + // 0x0B920BD7: 0x00000B94\n\t\"\\v\\xc6\\v\\xbe\\x00\\x00\\v\\xca\" + // 0x0BC60BBE: 0x00000BCA\n\t\"\\v\\xc7\\v\\xbe\\x00\\x00\\v\\xcb\" + // 0x0BC70BBE: 0x00000BCB\n\t\"\\v\\xc6\\v\\xd7\\x00\\x00\\v\\xcc\" + // 0x0BC60BD7: 0x00000BCC\n\t\"\\fF\\fV\\x00\\x00\\fH\" + // 0x0C460C56: 0x00000C48\n\t\"\\f\\xbf\\f\\xd5\\x00\\x00\\f\\xc0\" + // 0x0CBF0CD5: 0x00000CC0\n\t\"\\f\\xc6\\f\\xd5\\x00\\x00\\f\\xc7\" + // 0x0CC60CD5: 0x00000CC7\n\t\"\\f\\xc6\\f\\xd6\\x00\\x00\\f\\xc8\" + // 0x0CC60CD6: 0x00000CC8\n\t\"\\f\\xc6\\f\\xc2\\x00\\x00\\f\\xca\" + // 0x0CC60CC2: 0x00000CCA\n\t\"\\f\\xca\\f\\xd5\\x00\\x00\\f\\xcb\" + // 0x0CCA0CD5: 0x00000CCB\n\t\"\\rF\\r>\\x00\\x00\\rJ\" + // 0x0D460D3E: 0x00000D4A\n\t\"\\rG\\r>\\x00\\x00\\rK\" + // 0x0D470D3E: 0x00000D4B\n\t\"\\rF\\rW\\x00\\x00\\rL\" + // 0x0D460D57: 0x00000D4C\n\t\"\\r\\xd9\\r\\xca\\x00\\x00\\r\\xda\" + // 0x0DD90DCA: 0x00000DDA\n\t\"\\r\\xd9\\r\\xcf\\x00\\x00\\r\\xdc\" + // 0x0DD90DCF: 0x00000DDC\n\t\"\\r\\xdc\\r\\xca\\x00\\x00\\r\\xdd\" + // 0x0DDC0DCA: 0x00000DDD\n\t\"\\r\\xd9\\r\\xdf\\x00\\x00\\r\\xde\" + // 0x0DD90DDF: 0x00000DDE\n\t\"\\x10%\\x10.\\x00\\x00\\x10&\" + // 0x1025102E: 0x00001026\n\t\"\\x1b\\x05\\x1b5\\x00\\x00\\x1b\\x06\" + // 0x1B051B35: 0x00001B06\n\t\"\\x1b\\a\\x1b5\\x00\\x00\\x1b\\b\" + // 0x1B071B35: 0x00001B08\n\t\"\\x1b\\t\\x1b5\\x00\\x00\\x1b\\n\" + // 0x1B091B35: 0x00001B0A\n\t\"\\x1b\\v\\x1b5\\x00\\x00\\x1b\\f\" + // 0x1B0B1B35: 0x00001B0C\n\t\"\\x1b\\r\\x1b5\\x00\\x00\\x1b\\x0e\" + // 0x1B0D1B35: 0x00001B0E\n\t\"\\x1b\\x11\\x1b5\\x00\\x00\\x1b\\x12\" + // 0x1B111B35: 0x00001B12\n\t\"\\x1b:\\x1b5\\x00\\x00\\x1b;\" + // 0x1B3A1B35: 0x00001B3B\n\t\"\\x1b<\\x1b5\\x00\\x00\\x1b=\" + // 0x1B3C1B35: 0x00001B3D\n\t\"\\x1b>\\x1b5\\x00\\x00\\x1b@\" + // 0x1B3E1B35: 0x00001B40\n\t\"\\x1b?\\x1b5\\x00\\x00\\x1bA\" + // 0x1B3F1B35: 0x00001B41\n\t\"\\x1bB\\x1b5\\x00\\x00\\x1bC\" + // 0x1B421B35: 0x00001B43\n\t\"\\x00A\\x03%\\x00\\x00\\x1e\\x00\" + // 0x00410325: 0x00001E00\n\t\"\\x00a\\x03%\\x00\\x00\\x1e\\x01\" + // 0x00610325: 0x00001E01\n\t\"\\x00B\\x03\\a\\x00\\x00\\x1e\\x02\" + // 0x00420307: 0x00001E02\n\t\"\\x00b\\x03\\a\\x00\\x00\\x1e\\x03\" + // 0x00620307: 0x00001E03\n\t\"\\x00B\\x03#\\x00\\x00\\x1e\\x04\" + // 0x00420323: 0x00001E04\n\t\"\\x00b\\x03#\\x00\\x00\\x1e\\x05\" + // 0x00620323: 0x00001E05\n\t\"\\x00B\\x031\\x00\\x00\\x1e\\x06\" + // 0x00420331: 0x00001E06\n\t\"\\x00b\\x031\\x00\\x00\\x1e\\a\" + // 0x00620331: 0x00001E07\n\t\"\\x00\\xc7\\x03\\x01\\x00\\x00\\x1e\\b\" + // 0x00C70301: 0x00001E08\n\t\"\\x00\\xe7\\x03\\x01\\x00\\x00\\x1e\\t\" + // 0x00E70301: 0x00001E09\n\t\"\\x00D\\x03\\a\\x00\\x00\\x1e\\n\" + // 0x00440307: 0x00001E0A\n\t\"\\x00d\\x03\\a\\x00\\x00\\x1e\\v\" + // 0x00640307: 0x00001E0B\n\t\"\\x00D\\x03#\\x00\\x00\\x1e\\f\" + // 0x00440323: 0x00001E0C\n\t\"\\x00d\\x03#\\x00\\x00\\x1e\\r\" + // 0x00640323: 0x00001E0D\n\t\"\\x00D\\x031\\x00\\x00\\x1e\\x0e\" + // 0x00440331: 0x00001E0E\n\t\"\\x00d\\x031\\x00\\x00\\x1e\\x0f\" + // 0x00640331: 0x00001E0F\n\t\"\\x00D\\x03'\\x00\\x00\\x1e\\x10\" + // 0x00440327: 0x00001E10\n\t\"\\x00d\\x03'\\x00\\x00\\x1e\\x11\" + // 0x00640327: 0x00001E11\n\t\"\\x00D\\x03-\\x00\\x00\\x1e\\x12\" + // 0x0044032D: 0x00001E12\n\t\"\\x00d\\x03-\\x00\\x00\\x1e\\x13\" + // 0x0064032D: 0x00001E13\n\t\"\\x01\\x12\\x03\\x00\\x00\\x00\\x1e\\x14\" + // 0x01120300: 0x00001E14\n\t\"\\x01\\x13\\x03\\x00\\x00\\x00\\x1e\\x15\" + // 0x01130300: 0x00001E15\n\t\"\\x01\\x12\\x03\\x01\\x00\\x00\\x1e\\x16\" + // 0x01120301: 0x00001E16\n\t\"\\x01\\x13\\x03\\x01\\x00\\x00\\x1e\\x17\" + // 0x01130301: 0x00001E17\n\t\"\\x00E\\x03-\\x00\\x00\\x1e\\x18\" + // 0x0045032D: 0x00001E18\n\t\"\\x00e\\x03-\\x00\\x00\\x1e\\x19\" + // 0x0065032D: 0x00001E19\n\t\"\\x00E\\x030\\x00\\x00\\x1e\\x1a\" + // 0x00450330: 0x00001E1A\n\t\"\\x00e\\x030\\x00\\x00\\x1e\\x1b\" + // 0x00650330: 0x00001E1B\n\t\"\\x02(\\x03\\x06\\x00\\x00\\x1e\\x1c\" + // 0x02280306: 0x00001E1C\n\t\"\\x02)\\x03\\x06\\x00\\x00\\x1e\\x1d\" + // 0x02290306: 0x00001E1D\n\t\"\\x00F\\x03\\a\\x00\\x00\\x1e\\x1e\" + // 0x00460307: 0x00001E1E\n\t\"\\x00f\\x03\\a\\x00\\x00\\x1e\\x1f\" + // 0x00660307: 0x00001E1F\n\t\"\\x00G\\x03\\x04\\x00\\x00\\x1e \" + // 0x00470304: 0x00001E20\n\t\"\\x00g\\x03\\x04\\x00\\x00\\x1e!\" + // 0x00670304: 0x00001E21\n\t\"\\x00H\\x03\\a\\x00\\x00\\x1e\\\"\" + // 0x00480307: 0x00001E22\n\t\"\\x00h\\x03\\a\\x00\\x00\\x1e#\" + // 0x00680307: 0x00001E23\n\t\"\\x00H\\x03#\\x00\\x00\\x1e$\" + // 0x00480323: 0x00001E24\n\t\"\\x00h\\x03#\\x00\\x00\\x1e%\" + // 0x00680323: 0x00001E25\n\t\"\\x00H\\x03\\b\\x00\\x00\\x1e&\" + // 0x00480308: 0x00001E26\n\t\"\\x00h\\x03\\b\\x00\\x00\\x1e'\" + // 0x00680308: 0x00001E27\n\t\"\\x00H\\x03'\\x00\\x00\\x1e(\" + // 0x00480327: 0x00001E28\n\t\"\\x00h\\x03'\\x00\\x00\\x1e)\" + // 0x00680327: 0x00001E29\n\t\"\\x00H\\x03.\\x00\\x00\\x1e*\" + // 0x0048032E: 0x00001E2A\n\t\"\\x00h\\x03.\\x00\\x00\\x1e+\" + // 0x0068032E: 0x00001E2B\n\t\"\\x00I\\x030\\x00\\x00\\x1e,\" + // 0x00490330: 0x00001E2C\n\t\"\\x00i\\x030\\x00\\x00\\x1e-\" + // 0x00690330: 0x00001E2D\n\t\"\\x00\\xcf\\x03\\x01\\x00\\x00\\x1e.\" + // 0x00CF0301: 0x00001E2E\n\t\"\\x00\\xef\\x03\\x01\\x00\\x00\\x1e/\" + // 0x00EF0301: 0x00001E2F\n\t\"\\x00K\\x03\\x01\\x00\\x00\\x1e0\" + // 0x004B0301: 0x00001E30\n\t\"\\x00k\\x03\\x01\\x00\\x00\\x1e1\" + // 0x006B0301: 0x00001E31\n\t\"\\x00K\\x03#\\x00\\x00\\x1e2\" + // 0x004B0323: 0x00001E32\n\t\"\\x00k\\x03#\\x00\\x00\\x1e3\" + // 0x006B0323: 0x00001E33\n\t\"\\x00K\\x031\\x00\\x00\\x1e4\" + // 0x004B0331: 0x00001E34\n\t\"\\x00k\\x031\\x00\\x00\\x1e5\" + // 0x006B0331: 0x00001E35\n\t\"\\x00L\\x03#\\x00\\x00\\x1e6\" + // 0x004C0323: 0x00001E36\n\t\"\\x00l\\x03#\\x00\\x00\\x1e7\" + // 0x006C0323: 0x00001E37\n\t\"\\x1e6\\x03\\x04\\x00\\x00\\x1e8\" + // 0x1E360304: 0x00001E38\n\t\"\\x1e7\\x03\\x04\\x00\\x00\\x1e9\" + // 0x1E370304: 0x00001E39\n\t\"\\x00L\\x031\\x00\\x00\\x1e:\" + // 0x004C0331: 0x00001E3A\n\t\"\\x00l\\x031\\x00\\x00\\x1e;\" + // 0x006C0331: 0x00001E3B\n\t\"\\x00L\\x03-\\x00\\x00\\x1e<\" + // 0x004C032D: 0x00001E3C\n\t\"\\x00l\\x03-\\x00\\x00\\x1e=\" + // 0x006C032D: 0x00001E3D\n\t\"\\x00M\\x03\\x01\\x00\\x00\\x1e>\" + // 0x004D0301: 0x00001E3E\n\t\"\\x00m\\x03\\x01\\x00\\x00\\x1e?\" + // 0x006D0301: 0x00001E3F\n\t\"\\x00M\\x03\\a\\x00\\x00\\x1e@\" + // 0x004D0307: 0x00001E40\n\t\"\\x00m\\x03\\a\\x00\\x00\\x1eA\" + // 0x006D0307: 0x00001E41\n\t\"\\x00M\\x03#\\x00\\x00\\x1eB\" + // 0x004D0323: 0x00001E42\n\t\"\\x00m\\x03#\\x00\\x00\\x1eC\" + // 0x006D0323: 0x00001E43\n\t\"\\x00N\\x03\\a\\x00\\x00\\x1eD\" + // 0x004E0307: 0x00001E44\n\t\"\\x00n\\x03\\a\\x00\\x00\\x1eE\" + // 0x006E0307: 0x00001E45\n\t\"\\x00N\\x03#\\x00\\x00\\x1eF\" + // 0x004E0323: 0x00001E46\n\t\"\\x00n\\x03#\\x00\\x00\\x1eG\" + // 0x006E0323: 0x00001E47\n\t\"\\x00N\\x031\\x00\\x00\\x1eH\" + // 0x004E0331: 0x00001E48\n\t\"\\x00n\\x031\\x00\\x00\\x1eI\" + // 0x006E0331: 0x00001E49\n\t\"\\x00N\\x03-\\x00\\x00\\x1eJ\" + // 0x004E032D: 0x00001E4A\n\t\"\\x00n\\x03-\\x00\\x00\\x1eK\" + // 0x006E032D: 0x00001E4B\n\t\"\\x00\\xd5\\x03\\x01\\x00\\x00\\x1eL\" + // 0x00D50301: 0x00001E4C\n\t\"\\x00\\xf5\\x03\\x01\\x00\\x00\\x1eM\" + // 0x00F50301: 0x00001E4D\n\t\"\\x00\\xd5\\x03\\b\\x00\\x00\\x1eN\" + // 0x00D50308: 0x00001E4E\n\t\"\\x00\\xf5\\x03\\b\\x00\\x00\\x1eO\" + // 0x00F50308: 0x00001E4F\n\t\"\\x01L\\x03\\x00\\x00\\x00\\x1eP\" + // 0x014C0300: 0x00001E50\n\t\"\\x01M\\x03\\x00\\x00\\x00\\x1eQ\" + // 0x014D0300: 0x00001E51\n\t\"\\x01L\\x03\\x01\\x00\\x00\\x1eR\" + // 0x014C0301: 0x00001E52\n\t\"\\x01M\\x03\\x01\\x00\\x00\\x1eS\" + // 0x014D0301: 0x00001E53\n\t\"\\x00P\\x03\\x01\\x00\\x00\\x1eT\" + // 0x00500301: 0x00001E54\n\t\"\\x00p\\x03\\x01\\x00\\x00\\x1eU\" + // 0x00700301: 0x00001E55\n\t\"\\x00P\\x03\\a\\x00\\x00\\x1eV\" + // 0x00500307: 0x00001E56\n\t\"\\x00p\\x03\\a\\x00\\x00\\x1eW\" + // 0x00700307: 0x00001E57\n\t\"\\x00R\\x03\\a\\x00\\x00\\x1eX\" + // 0x00520307: 0x00001E58\n\t\"\\x00r\\x03\\a\\x00\\x00\\x1eY\" + // 0x00720307: 0x00001E59\n\t\"\\x00R\\x03#\\x00\\x00\\x1eZ\" + // 0x00520323: 0x00001E5A\n\t\"\\x00r\\x03#\\x00\\x00\\x1e[\" + // 0x00720323: 0x00001E5B\n\t\"\\x1eZ\\x03\\x04\\x00\\x00\\x1e\\\\\" + // 0x1E5A0304: 0x00001E5C\n\t\"\\x1e[\\x03\\x04\\x00\\x00\\x1e]\" + // 0x1E5B0304: 0x00001E5D\n\t\"\\x00R\\x031\\x00\\x00\\x1e^\" + // 0x00520331: 0x00001E5E\n\t\"\\x00r\\x031\\x00\\x00\\x1e_\" + // 0x00720331: 0x00001E5F\n\t\"\\x00S\\x03\\a\\x00\\x00\\x1e`\" + // 0x00530307: 0x00001E60\n\t\"\\x00s\\x03\\a\\x00\\x00\\x1ea\" + // 0x00730307: 0x00001E61\n\t\"\\x00S\\x03#\\x00\\x00\\x1eb\" + // 0x00530323: 0x00001E62\n\t\"\\x00s\\x03#\\x00\\x00\\x1ec\" + // 0x00730323: 0x00001E63\n\t\"\\x01Z\\x03\\a\\x00\\x00\\x1ed\" + // 0x015A0307: 0x00001E64\n\t\"\\x01[\\x03\\a\\x00\\x00\\x1ee\" + // 0x015B0307: 0x00001E65\n\t\"\\x01`\\x03\\a\\x00\\x00\\x1ef\" + // 0x01600307: 0x00001E66\n\t\"\\x01a\\x03\\a\\x00\\x00\\x1eg\" + // 0x01610307: 0x00001E67\n\t\"\\x1eb\\x03\\a\\x00\\x00\\x1eh\" + // 0x1E620307: 0x00001E68\n\t\"\\x1ec\\x03\\a\\x00\\x00\\x1ei\" + // 0x1E630307: 0x00001E69\n\t\"\\x00T\\x03\\a\\x00\\x00\\x1ej\" + // 0x00540307: 0x00001E6A\n\t\"\\x00t\\x03\\a\\x00\\x00\\x1ek\" + // 0x00740307: 0x00001E6B\n\t\"\\x00T\\x03#\\x00\\x00\\x1el\" + // 0x00540323: 0x00001E6C\n\t\"\\x00t\\x03#\\x00\\x00\\x1em\" + // 0x00740323: 0x00001E6D\n\t\"\\x00T\\x031\\x00\\x00\\x1en\" + // 0x00540331: 0x00001E6E\n\t\"\\x00t\\x031\\x00\\x00\\x1eo\" + // 0x00740331: 0x00001E6F\n\t\"\\x00T\\x03-\\x00\\x00\\x1ep\" + // 0x0054032D: 0x00001E70\n\t\"\\x00t\\x03-\\x00\\x00\\x1eq\" + // 0x0074032D: 0x00001E71\n\t\"\\x00U\\x03$\\x00\\x00\\x1er\" + // 0x00550324: 0x00001E72\n\t\"\\x00u\\x03$\\x00\\x00\\x1es\" + // 0x00750324: 0x00001E73\n\t\"\\x00U\\x030\\x00\\x00\\x1et\" + // 0x00550330: 0x00001E74\n\t\"\\x00u\\x030\\x00\\x00\\x1eu\" + // 0x00750330: 0x00001E75\n\t\"\\x00U\\x03-\\x00\\x00\\x1ev\" + // 0x0055032D: 0x00001E76\n\t\"\\x00u\\x03-\\x00\\x00\\x1ew\" + // 0x0075032D: 0x00001E77\n\t\"\\x01h\\x03\\x01\\x00\\x00\\x1ex\" + // 0x01680301: 0x00001E78\n\t\"\\x01i\\x03\\x01\\x00\\x00\\x1ey\" + // 0x01690301: 0x00001E79\n\t\"\\x01j\\x03\\b\\x00\\x00\\x1ez\" + // 0x016A0308: 0x00001E7A\n\t\"\\x01k\\x03\\b\\x00\\x00\\x1e{\" + // 0x016B0308: 0x00001E7B\n\t\"\\x00V\\x03\\x03\\x00\\x00\\x1e|\" + // 0x00560303: 0x00001E7C\n\t\"\\x00v\\x03\\x03\\x00\\x00\\x1e}\" + // 0x00760303: 0x00001E7D\n\t\"\\x00V\\x03#\\x00\\x00\\x1e~\" + // 0x00560323: 0x00001E7E\n\t\"\\x00v\\x03#\\x00\\x00\\x1e\\u007f\" + // 0x00760323: 0x00001E7F\n\t\"\\x00W\\x03\\x00\\x00\\x00\\x1e\\x80\" + // 0x00570300: 0x00001E80\n\t\"\\x00w\\x03\\x00\\x00\\x00\\x1e\\x81\" + // 0x00770300: 0x00001E81\n\t\"\\x00W\\x03\\x01\\x00\\x00\\x1e\\x82\" + // 0x00570301: 0x00001E82\n\t\"\\x00w\\x03\\x01\\x00\\x00\\x1e\\x83\" + // 0x00770301: 0x00001E83\n\t\"\\x00W\\x03\\b\\x00\\x00\\x1e\\x84\" + // 0x00570308: 0x00001E84\n\t\"\\x00w\\x03\\b\\x00\\x00\\x1e\\x85\" + // 0x00770308: 0x00001E85\n\t\"\\x00W\\x03\\a\\x00\\x00\\x1e\\x86\" + // 0x00570307: 0x00001E86\n\t\"\\x00w\\x03\\a\\x00\\x00\\x1e\\x87\" + // 0x00770307: 0x00001E87\n\t\"\\x00W\\x03#\\x00\\x00\\x1e\\x88\" + // 0x00570323: 0x00001E88\n\t\"\\x00w\\x03#\\x00\\x00\\x1e\\x89\" + // 0x00770323: 0x00001E89\n\t\"\\x00X\\x03\\a\\x00\\x00\\x1e\\x8a\" + // 0x00580307: 0x00001E8A\n\t\"\\x00x\\x03\\a\\x00\\x00\\x1e\\x8b\" + // 0x00780307: 0x00001E8B\n\t\"\\x00X\\x03\\b\\x00\\x00\\x1e\\x8c\" + // 0x00580308: 0x00001E8C\n\t\"\\x00x\\x03\\b\\x00\\x00\\x1e\\x8d\" + // 0x00780308: 0x00001E8D\n\t\"\\x00Y\\x03\\a\\x00\\x00\\x1e\\x8e\" + // 0x00590307: 0x00001E8E\n\t\"\\x00y\\x03\\a\\x00\\x00\\x1e\\x8f\" + // 0x00790307: 0x00001E8F\n\t\"\\x00Z\\x03\\x02\\x00\\x00\\x1e\\x90\" + // 0x005A0302: 0x00001E90\n\t\"\\x00z\\x03\\x02\\x00\\x00\\x1e\\x91\" + // 0x007A0302: 0x00001E91\n\t\"\\x00Z\\x03#\\x00\\x00\\x1e\\x92\" + // 0x005A0323: 0x00001E92\n\t\"\\x00z\\x03#\\x00\\x00\\x1e\\x93\" + // 0x007A0323: 0x00001E93\n\t\"\\x00Z\\x031\\x00\\x00\\x1e\\x94\" + // 0x005A0331: 0x00001E94\n\t\"\\x00z\\x031\\x00\\x00\\x1e\\x95\" + // 0x007A0331: 0x00001E95\n\t\"\\x00h\\x031\\x00\\x00\\x1e\\x96\" + // 0x00680331: 0x00001E96\n\t\"\\x00t\\x03\\b\\x00\\x00\\x1e\\x97\" + // 0x00740308: 0x00001E97\n\t\"\\x00w\\x03\\n\\x00\\x00\\x1e\\x98\" + // 0x0077030A: 0x00001E98\n\t\"\\x00y\\x03\\n\\x00\\x00\\x1e\\x99\" + // 0x0079030A: 0x00001E99\n\t\"\\x01\\u007f\\x03\\a\\x00\\x00\\x1e\\x9b\" + // 0x017F0307: 0x00001E9B\n\t\"\\x00A\\x03#\\x00\\x00\\x1e\\xa0\" + // 0x00410323: 0x00001EA0\n\t\"\\x00a\\x03#\\x00\\x00\\x1e\\xa1\" + // 0x00610323: 0x00001EA1\n\t\"\\x00A\\x03\\t\\x00\\x00\\x1e\\xa2\" + // 0x00410309: 0x00001EA2\n\t\"\\x00a\\x03\\t\\x00\\x00\\x1e\\xa3\" + // 0x00610309: 0x00001EA3\n\t\"\\x00\\xc2\\x03\\x01\\x00\\x00\\x1e\\xa4\" + // 0x00C20301: 0x00001EA4\n\t\"\\x00\\xe2\\x03\\x01\\x00\\x00\\x1e\\xa5\" + // 0x00E20301: 0x00001EA5\n\t\"\\x00\\xc2\\x03\\x00\\x00\\x00\\x1e\\xa6\" + // 0x00C20300: 0x00001EA6\n\t\"\\x00\\xe2\\x03\\x00\\x00\\x00\\x1e\\xa7\" + // 0x00E20300: 0x00001EA7\n\t\"\\x00\\xc2\\x03\\t\\x00\\x00\\x1e\\xa8\" + // 0x00C20309: 0x00001EA8\n\t\"\\x00\\xe2\\x03\\t\\x00\\x00\\x1e\\xa9\" + // 0x00E20309: 0x00001EA9\n\t\"\\x00\\xc2\\x03\\x03\\x00\\x00\\x1e\\xaa\" + // 0x00C20303: 0x00001EAA\n\t\"\\x00\\xe2\\x03\\x03\\x00\\x00\\x1e\\xab\" + // 0x00E20303: 0x00001EAB\n\t\"\\x1e\\xa0\\x03\\x02\\x00\\x00\\x1e\\xac\" + // 0x1EA00302: 0x00001EAC\n\t\"\\x1e\\xa1\\x03\\x02\\x00\\x00\\x1e\\xad\" + // 0x1EA10302: 0x00001EAD\n\t\"\\x01\\x02\\x03\\x01\\x00\\x00\\x1e\\xae\" + // 0x01020301: 0x00001EAE\n\t\"\\x01\\x03\\x03\\x01\\x00\\x00\\x1e\\xaf\" + // 0x01030301: 0x00001EAF\n\t\"\\x01\\x02\\x03\\x00\\x00\\x00\\x1e\\xb0\" + // 0x01020300: 0x00001EB0\n\t\"\\x01\\x03\\x03\\x00\\x00\\x00\\x1e\\xb1\" + // 0x01030300: 0x00001EB1\n\t\"\\x01\\x02\\x03\\t\\x00\\x00\\x1e\\xb2\" + // 0x01020309: 0x00001EB2\n\t\"\\x01\\x03\\x03\\t\\x00\\x00\\x1e\\xb3\" + // 0x01030309: 0x00001EB3\n\t\"\\x01\\x02\\x03\\x03\\x00\\x00\\x1e\\xb4\" + // 0x01020303: 0x00001EB4\n\t\"\\x01\\x03\\x03\\x03\\x00\\x00\\x1e\\xb5\" + // 0x01030303: 0x00001EB5\n\t\"\\x1e\\xa0\\x03\\x06\\x00\\x00\\x1e\\xb6\" + // 0x1EA00306: 0x00001EB6\n\t\"\\x1e\\xa1\\x03\\x06\\x00\\x00\\x1e\\xb7\" + // 0x1EA10306: 0x00001EB7\n\t\"\\x00E\\x03#\\x00\\x00\\x1e\\xb8\" + // 0x00450323: 0x00001EB8\n\t\"\\x00e\\x03#\\x00\\x00\\x1e\\xb9\" + // 0x00650323: 0x00001EB9\n\t\"\\x00E\\x03\\t\\x00\\x00\\x1e\\xba\" + // 0x00450309: 0x00001EBA\n\t\"\\x00e\\x03\\t\\x00\\x00\\x1e\\xbb\" + // 0x00650309: 0x00001EBB\n\t\"\\x00E\\x03\\x03\\x00\\x00\\x1e\\xbc\" + // 0x00450303: 0x00001EBC\n\t\"\\x00e\\x03\\x03\\x00\\x00\\x1e\\xbd\" + // 0x00650303: 0x00001EBD\n\t\"\\x00\\xca\\x03\\x01\\x00\\x00\\x1e\\xbe\" + // 0x00CA0301: 0x00001EBE\n\t\"\\x00\\xea\\x03\\x01\\x00\\x00\\x1e\\xbf\" + // 0x00EA0301: 0x00001EBF\n\t\"\\x00\\xca\\x03\\x00\\x00\\x00\\x1e\\xc0\" + // 0x00CA0300: 0x00001EC0\n\t\"\\x00\\xea\\x03\\x00\\x00\\x00\\x1e\\xc1\" + // 0x00EA0300: 0x00001EC1\n\t\"\\x00\\xca\\x03\\t\\x00\\x00\\x1e\\xc2\" + // 0x00CA0309: 0x00001EC2\n\t\"\\x00\\xea\\x03\\t\\x00\\x00\\x1e\\xc3\" + // 0x00EA0309: 0x00001EC3\n\t\"\\x00\\xca\\x03\\x03\\x00\\x00\\x1e\\xc4\" + // 0x00CA0303: 0x00001EC4\n\t\"\\x00\\xea\\x03\\x03\\x00\\x00\\x1e\\xc5\" + // 0x00EA0303: 0x00001EC5\n\t\"\\x1e\\xb8\\x03\\x02\\x00\\x00\\x1e\\xc6\" + // 0x1EB80302: 0x00001EC6\n\t\"\\x1e\\xb9\\x03\\x02\\x00\\x00\\x1e\\xc7\" + // 0x1EB90302: 0x00001EC7\n\t\"\\x00I\\x03\\t\\x00\\x00\\x1e\\xc8\" + // 0x00490309: 0x00001EC8\n\t\"\\x00i\\x03\\t\\x00\\x00\\x1e\\xc9\" + // 0x00690309: 0x00001EC9\n\t\"\\x00I\\x03#\\x00\\x00\\x1e\\xca\" + // 0x00490323: 0x00001ECA\n\t\"\\x00i\\x03#\\x00\\x00\\x1e\\xcb\" + // 0x00690323: 0x00001ECB\n\t\"\\x00O\\x03#\\x00\\x00\\x1e\\xcc\" + // 0x004F0323: 0x00001ECC\n\t\"\\x00o\\x03#\\x00\\x00\\x1e\\xcd\" + // 0x006F0323: 0x00001ECD\n\t\"\\x00O\\x03\\t\\x00\\x00\\x1e\\xce\" + // 0x004F0309: 0x00001ECE\n\t\"\\x00o\\x03\\t\\x00\\x00\\x1e\\xcf\" + // 0x006F0309: 0x00001ECF\n\t\"\\x00\\xd4\\x03\\x01\\x00\\x00\\x1e\\xd0\" + // 0x00D40301: 0x00001ED0\n\t\"\\x00\\xf4\\x03\\x01\\x00\\x00\\x1e\\xd1\" + // 0x00F40301: 0x00001ED1\n\t\"\\x00\\xd4\\x03\\x00\\x00\\x00\\x1e\\xd2\" + // 0x00D40300: 0x00001ED2\n\t\"\\x00\\xf4\\x03\\x00\\x00\\x00\\x1e\\xd3\" + // 0x00F40300: 0x00001ED3\n\t\"\\x00\\xd4\\x03\\t\\x00\\x00\\x1e\\xd4\" + // 0x00D40309: 0x00001ED4\n\t\"\\x00\\xf4\\x03\\t\\x00\\x00\\x1e\\xd5\" + // 0x00F40309: 0x00001ED5\n\t\"\\x00\\xd4\\x03\\x03\\x00\\x00\\x1e\\xd6\" + // 0x00D40303: 0x00001ED6\n\t\"\\x00\\xf4\\x03\\x03\\x00\\x00\\x1e\\xd7\" + // 0x00F40303: 0x00001ED7\n\t\"\\x1e\\xcc\\x03\\x02\\x00\\x00\\x1e\\xd8\" + // 0x1ECC0302: 0x00001ED8\n\t\"\\x1e\\xcd\\x03\\x02\\x00\\x00\\x1e\\xd9\" + // 0x1ECD0302: 0x00001ED9\n\t\"\\x01\\xa0\\x03\\x01\\x00\\x00\\x1e\\xda\" + // 0x01A00301: 0x00001EDA\n\t\"\\x01\\xa1\\x03\\x01\\x00\\x00\\x1e\\xdb\" + // 0x01A10301: 0x00001EDB\n\t\"\\x01\\xa0\\x03\\x00\\x00\\x00\\x1e\\xdc\" + // 0x01A00300: 0x00001EDC\n\t\"\\x01\\xa1\\x03\\x00\\x00\\x00\\x1e\\xdd\" + // 0x01A10300: 0x00001EDD\n\t\"\\x01\\xa0\\x03\\t\\x00\\x00\\x1e\\xde\" + // 0x01A00309: 0x00001EDE\n\t\"\\x01\\xa1\\x03\\t\\x00\\x00\\x1e\\xdf\" + // 0x01A10309: 0x00001EDF\n\t\"\\x01\\xa0\\x03\\x03\\x00\\x00\\x1e\\xe0\" + // 0x01A00303: 0x00001EE0\n\t\"\\x01\\xa1\\x03\\x03\\x00\\x00\\x1e\\xe1\" + // 0x01A10303: 0x00001EE1\n\t\"\\x01\\xa0\\x03#\\x00\\x00\\x1e\\xe2\" + // 0x01A00323: 0x00001EE2\n\t\"\\x01\\xa1\\x03#\\x00\\x00\\x1e\\xe3\" + // 0x01A10323: 0x00001EE3\n\t\"\\x00U\\x03#\\x00\\x00\\x1e\\xe4\" + // 0x00550323: 0x00001EE4\n\t\"\\x00u\\x03#\\x00\\x00\\x1e\\xe5\" + // 0x00750323: 0x00001EE5\n\t\"\\x00U\\x03\\t\\x00\\x00\\x1e\\xe6\" + // 0x00550309: 0x00001EE6\n\t\"\\x00u\\x03\\t\\x00\\x00\\x1e\\xe7\" + // 0x00750309: 0x00001EE7\n\t\"\\x01\\xaf\\x03\\x01\\x00\\x00\\x1e\\xe8\" + // 0x01AF0301: 0x00001EE8\n\t\"\\x01\\xb0\\x03\\x01\\x00\\x00\\x1e\\xe9\" + // 0x01B00301: 0x00001EE9\n\t\"\\x01\\xaf\\x03\\x00\\x00\\x00\\x1e\\xea\" + // 0x01AF0300: 0x00001EEA\n\t\"\\x01\\xb0\\x03\\x00\\x00\\x00\\x1e\\xeb\" + // 0x01B00300: 0x00001EEB\n\t\"\\x01\\xaf\\x03\\t\\x00\\x00\\x1e\\xec\" + // 0x01AF0309: 0x00001EEC\n\t\"\\x01\\xb0\\x03\\t\\x00\\x00\\x1e\\xed\" + // 0x01B00309: 0x00001EED\n\t\"\\x01\\xaf\\x03\\x03\\x00\\x00\\x1e\\xee\" + // 0x01AF0303: 0x00001EEE\n\t\"\\x01\\xb0\\x03\\x03\\x00\\x00\\x1e\\xef\" + // 0x01B00303: 0x00001EEF\n\t\"\\x01\\xaf\\x03#\\x00\\x00\\x1e\\xf0\" + // 0x01AF0323: 0x00001EF0\n\t\"\\x01\\xb0\\x03#\\x00\\x00\\x1e\\xf1\" + // 0x01B00323: 0x00001EF1\n\t\"\\x00Y\\x03\\x00\\x00\\x00\\x1e\\xf2\" + // 0x00590300: 0x00001EF2\n\t\"\\x00y\\x03\\x00\\x00\\x00\\x1e\\xf3\" + // 0x00790300: 0x00001EF3\n\t\"\\x00Y\\x03#\\x00\\x00\\x1e\\xf4\" + // 0x00590323: 0x00001EF4\n\t\"\\x00y\\x03#\\x00\\x00\\x1e\\xf5\" + // 0x00790323: 0x00001EF5\n\t\"\\x00Y\\x03\\t\\x00\\x00\\x1e\\xf6\" + // 0x00590309: 0x00001EF6\n\t\"\\x00y\\x03\\t\\x00\\x00\\x1e\\xf7\" + // 0x00790309: 0x00001EF7\n\t\"\\x00Y\\x03\\x03\\x00\\x00\\x1e\\xf8\" + // 0x00590303: 0x00001EF8\n\t\"\\x00y\\x03\\x03\\x00\\x00\\x1e\\xf9\" + // 0x00790303: 0x00001EF9\n\t\"\\x03\\xb1\\x03\\x13\\x00\\x00\\x1f\\x00\" + // 0x03B10313: 0x00001F00\n\t\"\\x03\\xb1\\x03\\x14\\x00\\x00\\x1f\\x01\" + // 0x03B10314: 0x00001F01\n\t\"\\x1f\\x00\\x03\\x00\\x00\\x00\\x1f\\x02\" + // 0x1F000300: 0x00001F02\n\t\"\\x1f\\x01\\x03\\x00\\x00\\x00\\x1f\\x03\" + // 0x1F010300: 0x00001F03\n\t\"\\x1f\\x00\\x03\\x01\\x00\\x00\\x1f\\x04\" + // 0x1F000301: 0x00001F04\n\t\"\\x1f\\x01\\x03\\x01\\x00\\x00\\x1f\\x05\" + // 0x1F010301: 0x00001F05\n\t\"\\x1f\\x00\\x03B\\x00\\x00\\x1f\\x06\" + // 0x1F000342: 0x00001F06\n\t\"\\x1f\\x01\\x03B\\x00\\x00\\x1f\\a\" + // 0x1F010342: 0x00001F07\n\t\"\\x03\\x91\\x03\\x13\\x00\\x00\\x1f\\b\" + // 0x03910313: 0x00001F08\n\t\"\\x03\\x91\\x03\\x14\\x00\\x00\\x1f\\t\" + // 0x03910314: 0x00001F09\n\t\"\\x1f\\b\\x03\\x00\\x00\\x00\\x1f\\n\" + // 0x1F080300: 0x00001F0A\n\t\"\\x1f\\t\\x03\\x00\\x00\\x00\\x1f\\v\" + // 0x1F090300: 0x00001F0B\n\t\"\\x1f\\b\\x03\\x01\\x00\\x00\\x1f\\f\" + // 0x1F080301: 0x00001F0C\n\t\"\\x1f\\t\\x03\\x01\\x00\\x00\\x1f\\r\" + // 0x1F090301: 0x00001F0D\n\t\"\\x1f\\b\\x03B\\x00\\x00\\x1f\\x0e\" + // 0x1F080342: 0x00001F0E\n\t\"\\x1f\\t\\x03B\\x00\\x00\\x1f\\x0f\" + // 0x1F090342: 0x00001F0F\n\t\"\\x03\\xb5\\x03\\x13\\x00\\x00\\x1f\\x10\" + // 0x03B50313: 0x00001F10\n\t\"\\x03\\xb5\\x03\\x14\\x00\\x00\\x1f\\x11\" + // 0x03B50314: 0x00001F11\n\t\"\\x1f\\x10\\x03\\x00\\x00\\x00\\x1f\\x12\" + // 0x1F100300: 0x00001F12\n\t\"\\x1f\\x11\\x03\\x00\\x00\\x00\\x1f\\x13\" + // 0x1F110300: 0x00001F13\n\t\"\\x1f\\x10\\x03\\x01\\x00\\x00\\x1f\\x14\" + // 0x1F100301: 0x00001F14\n\t\"\\x1f\\x11\\x03\\x01\\x00\\x00\\x1f\\x15\" + // 0x1F110301: 0x00001F15\n\t\"\\x03\\x95\\x03\\x13\\x00\\x00\\x1f\\x18\" + // 0x03950313: 0x00001F18\n\t\"\\x03\\x95\\x03\\x14\\x00\\x00\\x1f\\x19\" + // 0x03950314: 0x00001F19\n\t\"\\x1f\\x18\\x03\\x00\\x00\\x00\\x1f\\x1a\" + // 0x1F180300: 0x00001F1A\n\t\"\\x1f\\x19\\x03\\x00\\x00\\x00\\x1f\\x1b\" + // 0x1F190300: 0x00001F1B\n\t\"\\x1f\\x18\\x03\\x01\\x00\\x00\\x1f\\x1c\" + // 0x1F180301: 0x00001F1C\n\t\"\\x1f\\x19\\x03\\x01\\x00\\x00\\x1f\\x1d\" + // 0x1F190301: 0x00001F1D\n\t\"\\x03\\xb7\\x03\\x13\\x00\\x00\\x1f \" + // 0x03B70313: 0x00001F20\n\t\"\\x03\\xb7\\x03\\x14\\x00\\x00\\x1f!\" + // 0x03B70314: 0x00001F21\n\t\"\\x1f \\x03\\x00\\x00\\x00\\x1f\\\"\" + // 0x1F200300: 0x00001F22\n\t\"\\x1f!\\x03\\x00\\x00\\x00\\x1f#\" + // 0x1F210300: 0x00001F23\n\t\"\\x1f \\x03\\x01\\x00\\x00\\x1f$\" + // 0x1F200301: 0x00001F24\n\t\"\\x1f!\\x03\\x01\\x00\\x00\\x1f%\" + // 0x1F210301: 0x00001F25\n\t\"\\x1f \\x03B\\x00\\x00\\x1f&\" + // 0x1F200342: 0x00001F26\n\t\"\\x1f!\\x03B\\x00\\x00\\x1f'\" + // 0x1F210342: 0x00001F27\n\t\"\\x03\\x97\\x03\\x13\\x00\\x00\\x1f(\" + // 0x03970313: 0x00001F28\n\t\"\\x03\\x97\\x03\\x14\\x00\\x00\\x1f)\" + // 0x03970314: 0x00001F29\n\t\"\\x1f(\\x03\\x00\\x00\\x00\\x1f*\" + // 0x1F280300: 0x00001F2A\n\t\"\\x1f)\\x03\\x00\\x00\\x00\\x1f+\" + // 0x1F290300: 0x00001F2B\n\t\"\\x1f(\\x03\\x01\\x00\\x00\\x1f,\" + // 0x1F280301: 0x00001F2C\n\t\"\\x1f)\\x03\\x01\\x00\\x00\\x1f-\" + // 0x1F290301: 0x00001F2D\n\t\"\\x1f(\\x03B\\x00\\x00\\x1f.\" + // 0x1F280342: 0x00001F2E\n\t\"\\x1f)\\x03B\\x00\\x00\\x1f/\" + // 0x1F290342: 0x00001F2F\n\t\"\\x03\\xb9\\x03\\x13\\x00\\x00\\x1f0\" + // 0x03B90313: 0x00001F30\n\t\"\\x03\\xb9\\x03\\x14\\x00\\x00\\x1f1\" + // 0x03B90314: 0x00001F31\n\t\"\\x1f0\\x03\\x00\\x00\\x00\\x1f2\" + // 0x1F300300: 0x00001F32\n\t\"\\x1f1\\x03\\x00\\x00\\x00\\x1f3\" + // 0x1F310300: 0x00001F33\n\t\"\\x1f0\\x03\\x01\\x00\\x00\\x1f4\" + // 0x1F300301: 0x00001F34\n\t\"\\x1f1\\x03\\x01\\x00\\x00\\x1f5\" + // 0x1F310301: 0x00001F35\n\t\"\\x1f0\\x03B\\x00\\x00\\x1f6\" + // 0x1F300342: 0x00001F36\n\t\"\\x1f1\\x03B\\x00\\x00\\x1f7\" + // 0x1F310342: 0x00001F37\n\t\"\\x03\\x99\\x03\\x13\\x00\\x00\\x1f8\" + // 0x03990313: 0x00001F38\n\t\"\\x03\\x99\\x03\\x14\\x00\\x00\\x1f9\" + // 0x03990314: 0x00001F39\n\t\"\\x1f8\\x03\\x00\\x00\\x00\\x1f:\" + // 0x1F380300: 0x00001F3A\n\t\"\\x1f9\\x03\\x00\\x00\\x00\\x1f;\" + // 0x1F390300: 0x00001F3B\n\t\"\\x1f8\\x03\\x01\\x00\\x00\\x1f<\" + // 0x1F380301: 0x00001F3C\n\t\"\\x1f9\\x03\\x01\\x00\\x00\\x1f=\" + // 0x1F390301: 0x00001F3D\n\t\"\\x1f8\\x03B\\x00\\x00\\x1f>\" + // 0x1F380342: 0x00001F3E\n\t\"\\x1f9\\x03B\\x00\\x00\\x1f?\" + // 0x1F390342: 0x00001F3F\n\t\"\\x03\\xbf\\x03\\x13\\x00\\x00\\x1f@\" + // 0x03BF0313: 0x00001F40\n\t\"\\x03\\xbf\\x03\\x14\\x00\\x00\\x1fA\" + // 0x03BF0314: 0x00001F41\n\t\"\\x1f@\\x03\\x00\\x00\\x00\\x1fB\" + // 0x1F400300: 0x00001F42\n\t\"\\x1fA\\x03\\x00\\x00\\x00\\x1fC\" + // 0x1F410300: 0x00001F43\n\t\"\\x1f@\\x03\\x01\\x00\\x00\\x1fD\" + // 0x1F400301: 0x00001F44\n\t\"\\x1fA\\x03\\x01\\x00\\x00\\x1fE\" + // 0x1F410301: 0x00001F45\n\t\"\\x03\\x9f\\x03\\x13\\x00\\x00\\x1fH\" + // 0x039F0313: 0x00001F48\n\t\"\\x03\\x9f\\x03\\x14\\x00\\x00\\x1fI\" + // 0x039F0314: 0x00001F49\n\t\"\\x1fH\\x03\\x00\\x00\\x00\\x1fJ\" + // 0x1F480300: 0x00001F4A\n\t\"\\x1fI\\x03\\x00\\x00\\x00\\x1fK\" + // 0x1F490300: 0x00001F4B\n\t\"\\x1fH\\x03\\x01\\x00\\x00\\x1fL\" + // 0x1F480301: 0x00001F4C\n\t\"\\x1fI\\x03\\x01\\x00\\x00\\x1fM\" + // 0x1F490301: 0x00001F4D\n\t\"\\x03\\xc5\\x03\\x13\\x00\\x00\\x1fP\" + // 0x03C50313: 0x00001F50\n\t\"\\x03\\xc5\\x03\\x14\\x00\\x00\\x1fQ\" + // 0x03C50314: 0x00001F51\n\t\"\\x1fP\\x03\\x00\\x00\\x00\\x1fR\" + // 0x1F500300: 0x00001F52\n\t\"\\x1fQ\\x03\\x00\\x00\\x00\\x1fS\" + // 0x1F510300: 0x00001F53\n\t\"\\x1fP\\x03\\x01\\x00\\x00\\x1fT\" + // 0x1F500301: 0x00001F54\n\t\"\\x1fQ\\x03\\x01\\x00\\x00\\x1fU\" + // 0x1F510301: 0x00001F55\n\t\"\\x1fP\\x03B\\x00\\x00\\x1fV\" + // 0x1F500342: 0x00001F56\n\t\"\\x1fQ\\x03B\\x00\\x00\\x1fW\" + // 0x1F510342: 0x00001F57\n\t\"\\x03\\xa5\\x03\\x14\\x00\\x00\\x1fY\" + // 0x03A50314: 0x00001F59\n\t\"\\x1fY\\x03\\x00\\x00\\x00\\x1f[\" + // 0x1F590300: 0x00001F5B\n\t\"\\x1fY\\x03\\x01\\x00\\x00\\x1f]\" + // 0x1F590301: 0x00001F5D\n\t\"\\x1fY\\x03B\\x00\\x00\\x1f_\" + // 0x1F590342: 0x00001F5F\n\t\"\\x03\\xc9\\x03\\x13\\x00\\x00\\x1f`\" + // 0x03C90313: 0x00001F60\n\t\"\\x03\\xc9\\x03\\x14\\x00\\x00\\x1fa\" + // 0x03C90314: 0x00001F61\n\t\"\\x1f`\\x03\\x00\\x00\\x00\\x1fb\" + // 0x1F600300: 0x00001F62\n\t\"\\x1fa\\x03\\x00\\x00\\x00\\x1fc\" + // 0x1F610300: 0x00001F63\n\t\"\\x1f`\\x03\\x01\\x00\\x00\\x1fd\" + // 0x1F600301: 0x00001F64\n\t\"\\x1fa\\x03\\x01\\x00\\x00\\x1fe\" + // 0x1F610301: 0x00001F65\n\t\"\\x1f`\\x03B\\x00\\x00\\x1ff\" + // 0x1F600342: 0x00001F66\n\t\"\\x1fa\\x03B\\x00\\x00\\x1fg\" + // 0x1F610342: 0x00001F67\n\t\"\\x03\\xa9\\x03\\x13\\x00\\x00\\x1fh\" + // 0x03A90313: 0x00001F68\n\t\"\\x03\\xa9\\x03\\x14\\x00\\x00\\x1fi\" + // 0x03A90314: 0x00001F69\n\t\"\\x1fh\\x03\\x00\\x00\\x00\\x1fj\" + // 0x1F680300: 0x00001F6A\n\t\"\\x1fi\\x03\\x00\\x00\\x00\\x1fk\" + // 0x1F690300: 0x00001F6B\n\t\"\\x1fh\\x03\\x01\\x00\\x00\\x1fl\" + // 0x1F680301: 0x00001F6C\n\t\"\\x1fi\\x03\\x01\\x00\\x00\\x1fm\" + // 0x1F690301: 0x00001F6D\n\t\"\\x1fh\\x03B\\x00\\x00\\x1fn\" + // 0x1F680342: 0x00001F6E\n\t\"\\x1fi\\x03B\\x00\\x00\\x1fo\" + // 0x1F690342: 0x00001F6F\n\t\"\\x03\\xb1\\x03\\x00\\x00\\x00\\x1fp\" + // 0x03B10300: 0x00001F70\n\t\"\\x03\\xb5\\x03\\x00\\x00\\x00\\x1fr\" + // 0x03B50300: 0x00001F72\n\t\"\\x03\\xb7\\x03\\x00\\x00\\x00\\x1ft\" + // 0x03B70300: 0x00001F74\n\t\"\\x03\\xb9\\x03\\x00\\x00\\x00\\x1fv\" + // 0x03B90300: 0x00001F76\n\t\"\\x03\\xbf\\x03\\x00\\x00\\x00\\x1fx\" + // 0x03BF0300: 0x00001F78\n\t\"\\x03\\xc5\\x03\\x00\\x00\\x00\\x1fz\" + // 0x03C50300: 0x00001F7A\n\t\"\\x03\\xc9\\x03\\x00\\x00\\x00\\x1f|\" + // 0x03C90300: 0x00001F7C\n\t\"\\x1f\\x00\\x03E\\x00\\x00\\x1f\\x80\" + // 0x1F000345: 0x00001F80\n\t\"\\x1f\\x01\\x03E\\x00\\x00\\x1f\\x81\" + // 0x1F010345: 0x00001F81\n\t\"\\x1f\\x02\\x03E\\x00\\x00\\x1f\\x82\" + // 0x1F020345: 0x00001F82\n\t\"\\x1f\\x03\\x03E\\x00\\x00\\x1f\\x83\" + // 0x1F030345: 0x00001F83\n\t\"\\x1f\\x04\\x03E\\x00\\x00\\x1f\\x84\" + // 0x1F040345: 0x00001F84\n\t\"\\x1f\\x05\\x03E\\x00\\x00\\x1f\\x85\" + // 0x1F050345: 0x00001F85\n\t\"\\x1f\\x06\\x03E\\x00\\x00\\x1f\\x86\" + // 0x1F060345: 0x00001F86\n\t\"\\x1f\\a\\x03E\\x00\\x00\\x1f\\x87\" + // 0x1F070345: 0x00001F87\n\t\"\\x1f\\b\\x03E\\x00\\x00\\x1f\\x88\" + // 0x1F080345: 0x00001F88\n\t\"\\x1f\\t\\x03E\\x00\\x00\\x1f\\x89\" + // 0x1F090345: 0x00001F89\n\t\"\\x1f\\n\\x03E\\x00\\x00\\x1f\\x8a\" + // 0x1F0A0345: 0x00001F8A\n\t\"\\x1f\\v\\x03E\\x00\\x00\\x1f\\x8b\" + // 0x1F0B0345: 0x00001F8B\n\t\"\\x1f\\f\\x03E\\x00\\x00\\x1f\\x8c\" + // 0x1F0C0345: 0x00001F8C\n\t\"\\x1f\\r\\x03E\\x00\\x00\\x1f\\x8d\" + // 0x1F0D0345: 0x00001F8D\n\t\"\\x1f\\x0e\\x03E\\x00\\x00\\x1f\\x8e\" + // 0x1F0E0345: 0x00001F8E\n\t\"\\x1f\\x0f\\x03E\\x00\\x00\\x1f\\x8f\" + // 0x1F0F0345: 0x00001F8F\n\t\"\\x1f \\x03E\\x00\\x00\\x1f\\x90\" + // 0x1F200345: 0x00001F90\n\t\"\\x1f!\\x03E\\x00\\x00\\x1f\\x91\" + // 0x1F210345: 0x00001F91\n\t\"\\x1f\\\"\\x03E\\x00\\x00\\x1f\\x92\" + // 0x1F220345: 0x00001F92\n\t\"\\x1f#\\x03E\\x00\\x00\\x1f\\x93\" + // 0x1F230345: 0x00001F93\n\t\"\\x1f$\\x03E\\x00\\x00\\x1f\\x94\" + // 0x1F240345: 0x00001F94\n\t\"\\x1f%\\x03E\\x00\\x00\\x1f\\x95\" + // 0x1F250345: 0x00001F95\n\t\"\\x1f&\\x03E\\x00\\x00\\x1f\\x96\" + // 0x1F260345: 0x00001F96\n\t\"\\x1f'\\x03E\\x00\\x00\\x1f\\x97\" + // 0x1F270345: 0x00001F97\n\t\"\\x1f(\\x03E\\x00\\x00\\x1f\\x98\" + // 0x1F280345: 0x00001F98\n\t\"\\x1f)\\x03E\\x00\\x00\\x1f\\x99\" + // 0x1F290345: 0x00001F99\n\t\"\\x1f*\\x03E\\x00\\x00\\x1f\\x9a\" + // 0x1F2A0345: 0x00001F9A\n\t\"\\x1f+\\x03E\\x00\\x00\\x1f\\x9b\" + // 0x1F2B0345: 0x00001F9B\n\t\"\\x1f,\\x03E\\x00\\x00\\x1f\\x9c\" + // 0x1F2C0345: 0x00001F9C\n\t\"\\x1f-\\x03E\\x00\\x00\\x1f\\x9d\" + // 0x1F2D0345: 0x00001F9D\n\t\"\\x1f.\\x03E\\x00\\x00\\x1f\\x9e\" + // 0x1F2E0345: 0x00001F9E\n\t\"\\x1f/\\x03E\\x00\\x00\\x1f\\x9f\" + // 0x1F2F0345: 0x00001F9F\n\t\"\\x1f`\\x03E\\x00\\x00\\x1f\\xa0\" + // 0x1F600345: 0x00001FA0\n\t\"\\x1fa\\x03E\\x00\\x00\\x1f\\xa1\" + // 0x1F610345: 0x00001FA1\n\t\"\\x1fb\\x03E\\x00\\x00\\x1f\\xa2\" + // 0x1F620345: 0x00001FA2\n\t\"\\x1fc\\x03E\\x00\\x00\\x1f\\xa3\" + // 0x1F630345: 0x00001FA3\n\t\"\\x1fd\\x03E\\x00\\x00\\x1f\\xa4\" + // 0x1F640345: 0x00001FA4\n\t\"\\x1fe\\x03E\\x00\\x00\\x1f\\xa5\" + // 0x1F650345: 0x00001FA5\n\t\"\\x1ff\\x03E\\x00\\x00\\x1f\\xa6\" + // 0x1F660345: 0x00001FA6\n\t\"\\x1fg\\x03E\\x00\\x00\\x1f\\xa7\" + // 0x1F670345: 0x00001FA7\n\t\"\\x1fh\\x03E\\x00\\x00\\x1f\\xa8\" + // 0x1F680345: 0x00001FA8\n\t\"\\x1fi\\x03E\\x00\\x00\\x1f\\xa9\" + // 0x1F690345: 0x00001FA9\n\t\"\\x1fj\\x03E\\x00\\x00\\x1f\\xaa\" + // 0x1F6A0345: 0x00001FAA\n\t\"\\x1fk\\x03E\\x00\\x00\\x1f\\xab\" + // 0x1F6B0345: 0x00001FAB\n\t\"\\x1fl\\x03E\\x00\\x00\\x1f\\xac\" + // 0x1F6C0345: 0x00001FAC\n\t\"\\x1fm\\x03E\\x00\\x00\\x1f\\xad\" + // 0x1F6D0345: 0x00001FAD\n\t\"\\x1fn\\x03E\\x00\\x00\\x1f\\xae\" + // 0x1F6E0345: 0x00001FAE\n\t\"\\x1fo\\x03E\\x00\\x00\\x1f\\xaf\" + // 0x1F6F0345: 0x00001FAF\n\t\"\\x03\\xb1\\x03\\x06\\x00\\x00\\x1f\\xb0\" + // 0x03B10306: 0x00001FB0\n\t\"\\x03\\xb1\\x03\\x04\\x00\\x00\\x1f\\xb1\" + // 0x03B10304: 0x00001FB1\n\t\"\\x1fp\\x03E\\x00\\x00\\x1f\\xb2\" + // 0x1F700345: 0x00001FB2\n\t\"\\x03\\xb1\\x03E\\x00\\x00\\x1f\\xb3\" + // 0x03B10345: 0x00001FB3\n\t\"\\x03\\xac\\x03E\\x00\\x00\\x1f\\xb4\" + // 0x03AC0345: 0x00001FB4\n\t\"\\x03\\xb1\\x03B\\x00\\x00\\x1f\\xb6\" + // 0x03B10342: 0x00001FB6\n\t\"\\x1f\\xb6\\x03E\\x00\\x00\\x1f\\xb7\" + // 0x1FB60345: 0x00001FB7\n\t\"\\x03\\x91\\x03\\x06\\x00\\x00\\x1f\\xb8\" + // 0x03910306: 0x00001FB8\n\t\"\\x03\\x91\\x03\\x04\\x00\\x00\\x1f\\xb9\" + // 0x03910304: 0x00001FB9\n\t\"\\x03\\x91\\x03\\x00\\x00\\x00\\x1f\\xba\" + // 0x03910300: 0x00001FBA\n\t\"\\x03\\x91\\x03E\\x00\\x00\\x1f\\xbc\" + // 0x03910345: 0x00001FBC\n\t\"\\x00\\xa8\\x03B\\x00\\x00\\x1f\\xc1\" + // 0x00A80342: 0x00001FC1\n\t\"\\x1ft\\x03E\\x00\\x00\\x1f\\xc2\" + // 0x1F740345: 0x00001FC2\n\t\"\\x03\\xb7\\x03E\\x00\\x00\\x1f\\xc3\" + // 0x03B70345: 0x00001FC3\n\t\"\\x03\\xae\\x03E\\x00\\x00\\x1f\\xc4\" + // 0x03AE0345: 0x00001FC4\n\t\"\\x03\\xb7\\x03B\\x00\\x00\\x1f\\xc6\" + // 0x03B70342: 0x00001FC6\n\t\"\\x1f\\xc6\\x03E\\x00\\x00\\x1f\\xc7\" + // 0x1FC60345: 0x00001FC7\n\t\"\\x03\\x95\\x03\\x00\\x00\\x00\\x1f\\xc8\" + // 0x03950300: 0x00001FC8\n\t\"\\x03\\x97\\x03\\x00\\x00\\x00\\x1f\\xca\" + // 0x03970300: 0x00001FCA\n\t\"\\x03\\x97\\x03E\\x00\\x00\\x1f\\xcc\" + // 0x03970345: 0x00001FCC\n\t\"\\x1f\\xbf\\x03\\x00\\x00\\x00\\x1f\\xcd\" + // 0x1FBF0300: 0x00001FCD\n\t\"\\x1f\\xbf\\x03\\x01\\x00\\x00\\x1f\\xce\" + // 0x1FBF0301: 0x00001FCE\n\t\"\\x1f\\xbf\\x03B\\x00\\x00\\x1f\\xcf\" + // 0x1FBF0342: 0x00001FCF\n\t\"\\x03\\xb9\\x03\\x06\\x00\\x00\\x1f\\xd0\" + // 0x03B90306: 0x00001FD0\n\t\"\\x03\\xb9\\x03\\x04\\x00\\x00\\x1f\\xd1\" + // 0x03B90304: 0x00001FD1\n\t\"\\x03\\xca\\x03\\x00\\x00\\x00\\x1f\\xd2\" + // 0x03CA0300: 0x00001FD2\n\t\"\\x03\\xb9\\x03B\\x00\\x00\\x1f\\xd6\" + // 0x03B90342: 0x00001FD6\n\t\"\\x03\\xca\\x03B\\x00\\x00\\x1f\\xd7\" + // 0x03CA0342: 0x00001FD7\n\t\"\\x03\\x99\\x03\\x06\\x00\\x00\\x1f\\xd8\" + // 0x03990306: 0x00001FD8\n\t\"\\x03\\x99\\x03\\x04\\x00\\x00\\x1f\\xd9\" + // 0x03990304: 0x00001FD9\n\t\"\\x03\\x99\\x03\\x00\\x00\\x00\\x1f\\xda\" + // 0x03990300: 0x00001FDA\n\t\"\\x1f\\xfe\\x03\\x00\\x00\\x00\\x1f\\xdd\" + // 0x1FFE0300: 0x00001FDD\n\t\"\\x1f\\xfe\\x03\\x01\\x00\\x00\\x1f\\xde\" + // 0x1FFE0301: 0x00001FDE\n\t\"\\x1f\\xfe\\x03B\\x00\\x00\\x1f\\xdf\" + // 0x1FFE0342: 0x00001FDF\n\t\"\\x03\\xc5\\x03\\x06\\x00\\x00\\x1f\\xe0\" + // 0x03C50306: 0x00001FE0\n\t\"\\x03\\xc5\\x03\\x04\\x00\\x00\\x1f\\xe1\" + // 0x03C50304: 0x00001FE1\n\t\"\\x03\\xcb\\x03\\x00\\x00\\x00\\x1f\\xe2\" + // 0x03CB0300: 0x00001FE2\n\t\"\\x03\\xc1\\x03\\x13\\x00\\x00\\x1f\\xe4\" + // 0x03C10313: 0x00001FE4\n\t\"\\x03\\xc1\\x03\\x14\\x00\\x00\\x1f\\xe5\" + // 0x03C10314: 0x00001FE5\n\t\"\\x03\\xc5\\x03B\\x00\\x00\\x1f\\xe6\" + // 0x03C50342: 0x00001FE6\n\t\"\\x03\\xcb\\x03B\\x00\\x00\\x1f\\xe7\" + // 0x03CB0342: 0x00001FE7\n\t\"\\x03\\xa5\\x03\\x06\\x00\\x00\\x1f\\xe8\" + // 0x03A50306: 0x00001FE8\n\t\"\\x03\\xa5\\x03\\x04\\x00\\x00\\x1f\\xe9\" + // 0x03A50304: 0x00001FE9\n\t\"\\x03\\xa5\\x03\\x00\\x00\\x00\\x1f\\xea\" + // 0x03A50300: 0x00001FEA\n\t\"\\x03\\xa1\\x03\\x14\\x00\\x00\\x1f\\xec\" + // 0x03A10314: 0x00001FEC\n\t\"\\x00\\xa8\\x03\\x00\\x00\\x00\\x1f\\xed\" + // 0x00A80300: 0x00001FED\n\t\"\\x1f|\\x03E\\x00\\x00\\x1f\\xf2\" + // 0x1F7C0345: 0x00001FF2\n\t\"\\x03\\xc9\\x03E\\x00\\x00\\x1f\\xf3\" + // 0x03C90345: 0x00001FF3\n\t\"\\x03\\xce\\x03E\\x00\\x00\\x1f\\xf4\" + // 0x03CE0345: 0x00001FF4\n\t\"\\x03\\xc9\\x03B\\x00\\x00\\x1f\\xf6\" + // 0x03C90342: 0x00001FF6\n\t\"\\x1f\\xf6\\x03E\\x00\\x00\\x1f\\xf7\" + // 0x1FF60345: 0x00001FF7\n\t\"\\x03\\x9f\\x03\\x00\\x00\\x00\\x1f\\xf8\" + // 0x039F0300: 0x00001FF8\n\t\"\\x03\\xa9\\x03\\x00\\x00\\x00\\x1f\\xfa\" + // 0x03A90300: 0x00001FFA\n\t\"\\x03\\xa9\\x03E\\x00\\x00\\x1f\\xfc\" + // 0x03A90345: 0x00001FFC\n\t\"!\\x90\\x038\\x00\\x00!\\x9a\" + // 0x21900338: 0x0000219A\n\t\"!\\x92\\x038\\x00\\x00!\\x9b\" + // 0x21920338: 0x0000219B\n\t\"!\\x94\\x038\\x00\\x00!\\xae\" + // 0x21940338: 0x000021AE\n\t\"!\\xd0\\x038\\x00\\x00!\\xcd\" + // 0x21D00338: 0x000021CD\n\t\"!\\xd4\\x038\\x00\\x00!\\xce\" + // 0x21D40338: 0x000021CE\n\t\"!\\xd2\\x038\\x00\\x00!\\xcf\" + // 0x21D20338: 0x000021CF\n\t\"\\\"\\x03\\x038\\x00\\x00\\\"\\x04\" + // 0x22030338: 0x00002204\n\t\"\\\"\\b\\x038\\x00\\x00\\\"\\t\" + // 0x22080338: 0x00002209\n\t\"\\\"\\v\\x038\\x00\\x00\\\"\\f\" + // 0x220B0338: 0x0000220C\n\t\"\\\"#\\x038\\x00\\x00\\\"$\" + // 0x22230338: 0x00002224\n\t\"\\\"%\\x038\\x00\\x00\\\"&\" + // 0x22250338: 0x00002226\n\t\"\\\"<\\x038\\x00\\x00\\\"A\" + // 0x223C0338: 0x00002241\n\t\"\\\"C\\x038\\x00\\x00\\\"D\" + // 0x22430338: 0x00002244\n\t\"\\\"E\\x038\\x00\\x00\\\"G\" + // 0x22450338: 0x00002247\n\t\"\\\"H\\x038\\x00\\x00\\\"I\" + // 0x22480338: 0x00002249\n\t\"\\x00=\\x038\\x00\\x00\\\"`\" + // 0x003D0338: 0x00002260\n\t\"\\\"a\\x038\\x00\\x00\\\"b\" + // 0x22610338: 0x00002262\n\t\"\\\"M\\x038\\x00\\x00\\\"m\" + // 0x224D0338: 0x0000226D\n\t\"\\x00<\\x038\\x00\\x00\\\"n\" + // 0x003C0338: 0x0000226E\n\t\"\\x00>\\x038\\x00\\x00\\\"o\" + // 0x003E0338: 0x0000226F\n\t\"\\\"d\\x038\\x00\\x00\\\"p\" + // 0x22640338: 0x00002270\n\t\"\\\"e\\x038\\x00\\x00\\\"q\" + // 0x22650338: 0x00002271\n\t\"\\\"r\\x038\\x00\\x00\\\"t\" + // 0x22720338: 0x00002274\n\t\"\\\"s\\x038\\x00\\x00\\\"u\" + // 0x22730338: 0x00002275\n\t\"\\\"v\\x038\\x00\\x00\\\"x\" + // 0x22760338: 0x00002278\n\t\"\\\"w\\x038\\x00\\x00\\\"y\" + // 0x22770338: 0x00002279\n\t\"\\\"z\\x038\\x00\\x00\\\"\\x80\" + // 0x227A0338: 0x00002280\n\t\"\\\"{\\x038\\x00\\x00\\\"\\x81\" + // 0x227B0338: 0x00002281\n\t\"\\\"\\x82\\x038\\x00\\x00\\\"\\x84\" + // 0x22820338: 0x00002284\n\t\"\\\"\\x83\\x038\\x00\\x00\\\"\\x85\" + // 0x22830338: 0x00002285\n\t\"\\\"\\x86\\x038\\x00\\x00\\\"\\x88\" + // 0x22860338: 0x00002288\n\t\"\\\"\\x87\\x038\\x00\\x00\\\"\\x89\" + // 0x22870338: 0x00002289\n\t\"\\\"\\xa2\\x038\\x00\\x00\\\"\\xac\" + // 0x22A20338: 0x000022AC\n\t\"\\\"\\xa8\\x038\\x00\\x00\\\"\\xad\" + // 0x22A80338: 0x000022AD\n\t\"\\\"\\xa9\\x038\\x00\\x00\\\"\\xae\" + // 0x22A90338: 0x000022AE\n\t\"\\\"\\xab\\x038\\x00\\x00\\\"\\xaf\" + // 0x22AB0338: 0x000022AF\n\t\"\\\"|\\x038\\x00\\x00\\\"\\xe0\" + // 0x227C0338: 0x000022E0\n\t\"\\\"}\\x038\\x00\\x00\\\"\\xe1\" + // 0x227D0338: 0x000022E1\n\t\"\\\"\\x91\\x038\\x00\\x00\\\"\\xe2\" + // 0x22910338: 0x000022E2\n\t\"\\\"\\x92\\x038\\x00\\x00\\\"\\xe3\" + // 0x22920338: 0x000022E3\n\t\"\\\"\\xb2\\x038\\x00\\x00\\\"\\xea\" + // 0x22B20338: 0x000022EA\n\t\"\\\"\\xb3\\x038\\x00\\x00\\\"\\xeb\" + // 0x22B30338: 0x000022EB\n\t\"\\\"\\xb4\\x038\\x00\\x00\\\"\\xec\" + // 0x22B40338: 0x000022EC\n\t\"\\\"\\xb5\\x038\\x00\\x00\\\"\\xed\" + // 0x22B50338: 0x000022ED\n\t\"0K0\\x99\\x00\\x000L\" + // 0x304B3099: 0x0000304C\n\t\"0M0\\x99\\x00\\x000N\" + // 0x304D3099: 0x0000304E\n\t\"0O0\\x99\\x00\\x000P\" + // 0x304F3099: 0x00003050\n\t\"0Q0\\x99\\x00\\x000R\" + // 0x30513099: 0x00003052\n\t\"0S0\\x99\\x00\\x000T\" + // 0x30533099: 0x00003054\n\t\"0U0\\x99\\x00\\x000V\" + // 0x30553099: 0x00003056\n\t\"0W0\\x99\\x00\\x000X\" + // 0x30573099: 0x00003058\n\t\"0Y0\\x99\\x00\\x000Z\" + // 0x30593099: 0x0000305A\n\t\"0[0\\x99\\x00\\x000\\\\\" + // 0x305B3099: 0x0000305C\n\t\"0]0\\x99\\x00\\x000^\" + // 0x305D3099: 0x0000305E\n\t\"0_0\\x99\\x00\\x000`\" + // 0x305F3099: 0x00003060\n\t\"0a0\\x99\\x00\\x000b\" + // 0x30613099: 0x00003062\n\t\"0d0\\x99\\x00\\x000e\" + // 0x30643099: 0x00003065\n\t\"0f0\\x99\\x00\\x000g\" + // 0x30663099: 0x00003067\n\t\"0h0\\x99\\x00\\x000i\" + // 0x30683099: 0x00003069\n\t\"0o0\\x99\\x00\\x000p\" + // 0x306F3099: 0x00003070\n\t\"0o0\\x9a\\x00\\x000q\" + // 0x306F309A: 0x00003071\n\t\"0r0\\x99\\x00\\x000s\" + // 0x30723099: 0x00003073\n\t\"0r0\\x9a\\x00\\x000t\" + // 0x3072309A: 0x00003074\n\t\"0u0\\x99\\x00\\x000v\" + // 0x30753099: 0x00003076\n\t\"0u0\\x9a\\x00\\x000w\" + // 0x3075309A: 0x00003077\n\t\"0x0\\x99\\x00\\x000y\" + // 0x30783099: 0x00003079\n\t\"0x0\\x9a\\x00\\x000z\" + // 0x3078309A: 0x0000307A\n\t\"0{0\\x99\\x00\\x000|\" + // 0x307B3099: 0x0000307C\n\t\"0{0\\x9a\\x00\\x000}\" + // 0x307B309A: 0x0000307D\n\t\"0F0\\x99\\x00\\x000\\x94\" + // 0x30463099: 0x00003094\n\t\"0\\x9d0\\x99\\x00\\x000\\x9e\" + // 0x309D3099: 0x0000309E\n\t\"0\\xab0\\x99\\x00\\x000\\xac\" + // 0x30AB3099: 0x000030AC\n\t\"0\\xad0\\x99\\x00\\x000\\xae\" + // 0x30AD3099: 0x000030AE\n\t\"0\\xaf0\\x99\\x00\\x000\\xb0\" + // 0x30AF3099: 0x000030B0\n\t\"0\\xb10\\x99\\x00\\x000\\xb2\" + // 0x30B13099: 0x000030B2\n\t\"0\\xb30\\x99\\x00\\x000\\xb4\" + // 0x30B33099: 0x000030B4\n\t\"0\\xb50\\x99\\x00\\x000\\xb6\" + // 0x30B53099: 0x000030B6\n\t\"0\\xb70\\x99\\x00\\x000\\xb8\" + // 0x30B73099: 0x000030B8\n\t\"0\\xb90\\x99\\x00\\x000\\xba\" + // 0x30B93099: 0x000030BA\n\t\"0\\xbb0\\x99\\x00\\x000\\xbc\" + // 0x30BB3099: 0x000030BC\n\t\"0\\xbd0\\x99\\x00\\x000\\xbe\" + // 0x30BD3099: 0x000030BE\n\t\"0\\xbf0\\x99\\x00\\x000\\xc0\" + // 0x30BF3099: 0x000030C0\n\t\"0\\xc10\\x99\\x00\\x000\\xc2\" + // 0x30C13099: 0x000030C2\n\t\"0\\xc40\\x99\\x00\\x000\\xc5\" + // 0x30C43099: 0x000030C5\n\t\"0\\xc60\\x99\\x00\\x000\\xc7\" + // 0x30C63099: 0x000030C7\n\t\"0\\xc80\\x99\\x00\\x000\\xc9\" + // 0x30C83099: 0x000030C9\n\t\"0\\xcf0\\x99\\x00\\x000\\xd0\" + // 0x30CF3099: 0x000030D0\n\t\"0\\xcf0\\x9a\\x00\\x000\\xd1\" + // 0x30CF309A: 0x000030D1\n\t\"0\\xd20\\x99\\x00\\x000\\xd3\" + // 0x30D23099: 0x000030D3\n\t\"0\\xd20\\x9a\\x00\\x000\\xd4\" + // 0x30D2309A: 0x000030D4\n\t\"0\\xd50\\x99\\x00\\x000\\xd6\" + // 0x30D53099: 0x000030D6\n\t\"0\\xd50\\x9a\\x00\\x000\\xd7\" + // 0x30D5309A: 0x000030D7\n\t\"0\\xd80\\x99\\x00\\x000\\xd9\" + // 0x30D83099: 0x000030D9\n\t\"0\\xd80\\x9a\\x00\\x000\\xda\" + // 0x30D8309A: 0x000030DA\n\t\"0\\xdb0\\x99\\x00\\x000\\xdc\" + // 0x30DB3099: 0x000030DC\n\t\"0\\xdb0\\x9a\\x00\\x000\\xdd\" + // 0x30DB309A: 0x000030DD\n\t\"0\\xa60\\x99\\x00\\x000\\xf4\" + // 0x30A63099: 0x000030F4\n\t\"0\\xef0\\x99\\x00\\x000\\xf7\" + // 0x30EF3099: 0x000030F7\n\t\"0\\xf00\\x99\\x00\\x000\\xf8\" + // 0x30F03099: 0x000030F8\n\t\"0\\xf10\\x99\\x00\\x000\\xf9\" + // 0x30F13099: 0x000030F9\n\t\"0\\xf20\\x99\\x00\\x000\\xfa\" + // 0x30F23099: 0x000030FA\n\t\"0\\xfd0\\x99\\x00\\x000\\xfe\" + // 0x30FD3099: 0x000030FE\n\t\"\\x10\\x99\\x10\\xba\\x00\\x01\\x10\\x9a\" + // 0x109910BA: 0x0001109A\n\t\"\\x10\\x9b\\x10\\xba\\x00\\x01\\x10\\x9c\" + // 0x109B10BA: 0x0001109C\n\t\"\\x10\\xa5\\x10\\xba\\x00\\x01\\x10\\xab\" + // 0x10A510BA: 0x000110AB\n\t\"\\x111\\x11'\\x00\\x01\\x11.\" + // 0x11311127: 0x0001112E\n\t\"\\x112\\x11'\\x00\\x01\\x11/\" + // 0x11321127: 0x0001112F\n\t\"\\x13G\\x13>\\x00\\x01\\x13K\" + // 0x1347133E: 0x0001134B\n\t\"\\x13G\\x13W\\x00\\x01\\x13L\" + // 0x13471357: 0x0001134C\n\t\"\\x14\\xb9\\x14\\xba\\x00\\x01\\x14\\xbb\" + // 0x14B914BA: 0x000114BB\n\t\"\\x14\\xb9\\x14\\xb0\\x00\\x01\\x14\\xbc\" + // 0x14B914B0: 0x000114BC\n\t\"\\x14\\xb9\\x14\\xbd\\x00\\x01\\x14\\xbe\" + // 0x14B914BD: 0x000114BE\n\t\"\\x15\\xb8\\x15\\xaf\\x00\\x01\\x15\\xba\" + // 0x15B815AF: 0x000115BA\n\t\"\\x15\\xb9\\x15\\xaf\\x00\\x01\\x15\\xbb\" + // 0x15B915AF: 0x000115BB\n\t\"\"\n\t// Total size of tables: 53KB (54226 bytes)\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/tables11.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.13 && !go1.14\n\npackage norm\n\nimport \"sync\"\n\nconst (\n\t// Version is the Unicode edition from which the tables are derived.\n\tVersion = \"11.0.0\"\n\n\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform\n\t// may need to write atomically for any Form. Making a destination buffer at\n\t// least this size ensures that Transform can always make progress and that\n\t// the user does not need to grow the buffer on an ErrShortDst.\n\tMaxTransformChunkSize = 35 + maxNonStarters*4\n)\n\nvar ccc = [55]uint8{\n\t0, 1, 7, 8, 9, 10, 11, 12,\n\t13, 14, 15, 16, 17, 18, 19, 20,\n\t21, 22, 23, 24, 25, 26, 27, 28,\n\t29, 30, 31, 32, 33, 34, 35, 36,\n\t84, 91, 103, 107, 118, 122, 129, 130,\n\t132, 202, 214, 216, 218, 220, 222, 224,\n\t226, 228, 230, 232, 233, 234, 240,\n}\n\nconst (\n\tfirstMulti            = 0x186D\n\tfirstCCC              = 0x2C9E\n\tendMulti              = 0x2F60\n\tfirstLeadingCCC       = 0x49AE\n\tfirstCCCZeroExcept    = 0x4A78\n\tfirstStarterWithNLead = 0x4A9F\n\tlastDecomp            = 0x4AA1\n\tmaxDecomp             = 0x8000\n)\n\n// decomps: 19105 bytes\nvar decomps = [...]byte{\n\t// Bytes 0 - 3f\n\t0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,\n\t0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41,\n\t0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41,\n\t0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41,\n\t0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41,\n\t0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41,\n\t0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41,\n\t0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41,\n\t// Bytes 40 - 7f\n\t0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41,\n\t0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41,\n\t0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41,\n\t0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41,\n\t0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41,\n\t0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41,\n\t0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41,\n\t0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41,\n\t// Bytes 80 - bf\n\t0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41,\n\t0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41,\n\t0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41,\n\t0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41,\n\t0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41,\n\t0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41,\n\t0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41,\n\t0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42,\n\t// Bytes c0 - ff\n\t0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5,\n\t0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2,\n\t0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xB0, 0x42,\n\t0xC4, 0xA6, 0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1,\n\t0x42, 0xC5, 0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6,\n\t0x8E, 0x42, 0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42,\n\t0xC8, 0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90,\n\t0x42, 0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9,\n\t// Bytes 100 - 13f\n\t0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9, 0x99, 0x42,\n\t0xC9, 0x9B, 0x42, 0xC9, 0x9C, 0x42, 0xC9, 0x9F,\n\t0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA3, 0x42, 0xC9,\n\t0xA5, 0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA8, 0x42,\n\t0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42, 0xC9, 0xAB,\n\t0x42, 0xC9, 0xAD, 0x42, 0xC9, 0xAF, 0x42, 0xC9,\n\t0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42,\n\t0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5,\n\t// Bytes 140 - 17f\n\t0x42, 0xC9, 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9,\n\t0xBB, 0x42, 0xCA, 0x81, 0x42, 0xCA, 0x82, 0x42,\n\t0xCA, 0x83, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A,\n\t0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA,\n\t0x90, 0x42, 0xCA, 0x91, 0x42, 0xCA, 0x92, 0x42,\n\t0xCA, 0x95, 0x42, 0xCA, 0x9D, 0x42, 0xCA, 0x9F,\n\t0x42, 0xCA, 0xB9, 0x42, 0xCE, 0x91, 0x42, 0xCE,\n\t0x92, 0x42, 0xCE, 0x93, 0x42, 0xCE, 0x94, 0x42,\n\t// Bytes 180 - 1bf\n\t0xCE, 0x95, 0x42, 0xCE, 0x96, 0x42, 0xCE, 0x97,\n\t0x42, 0xCE, 0x98, 0x42, 0xCE, 0x99, 0x42, 0xCE,\n\t0x9A, 0x42, 0xCE, 0x9B, 0x42, 0xCE, 0x9C, 0x42,\n\t0xCE, 0x9D, 0x42, 0xCE, 0x9E, 0x42, 0xCE, 0x9F,\n\t0x42, 0xCE, 0xA0, 0x42, 0xCE, 0xA1, 0x42, 0xCE,\n\t0xA3, 0x42, 0xCE, 0xA4, 0x42, 0xCE, 0xA5, 0x42,\n\t0xCE, 0xA6, 0x42, 0xCE, 0xA7, 0x42, 0xCE, 0xA8,\n\t0x42, 0xCE, 0xA9, 0x42, 0xCE, 0xB1, 0x42, 0xCE,\n\t// Bytes 1c0 - 1ff\n\t0xB2, 0x42, 0xCE, 0xB3, 0x42, 0xCE, 0xB4, 0x42,\n\t0xCE, 0xB5, 0x42, 0xCE, 0xB6, 0x42, 0xCE, 0xB7,\n\t0x42, 0xCE, 0xB8, 0x42, 0xCE, 0xB9, 0x42, 0xCE,\n\t0xBA, 0x42, 0xCE, 0xBB, 0x42, 0xCE, 0xBC, 0x42,\n\t0xCE, 0xBD, 0x42, 0xCE, 0xBE, 0x42, 0xCE, 0xBF,\n\t0x42, 0xCF, 0x80, 0x42, 0xCF, 0x81, 0x42, 0xCF,\n\t0x82, 0x42, 0xCF, 0x83, 0x42, 0xCF, 0x84, 0x42,\n\t0xCF, 0x85, 0x42, 0xCF, 0x86, 0x42, 0xCF, 0x87,\n\t// Bytes 200 - 23f\n\t0x42, 0xCF, 0x88, 0x42, 0xCF, 0x89, 0x42, 0xCF,\n\t0x9C, 0x42, 0xCF, 0x9D, 0x42, 0xD0, 0xBD, 0x42,\n\t0xD1, 0x8A, 0x42, 0xD1, 0x8C, 0x42, 0xD7, 0x90,\n\t0x42, 0xD7, 0x91, 0x42, 0xD7, 0x92, 0x42, 0xD7,\n\t0x93, 0x42, 0xD7, 0x94, 0x42, 0xD7, 0x9B, 0x42,\n\t0xD7, 0x9C, 0x42, 0xD7, 0x9D, 0x42, 0xD7, 0xA2,\n\t0x42, 0xD7, 0xA8, 0x42, 0xD7, 0xAA, 0x42, 0xD8,\n\t0xA1, 0x42, 0xD8, 0xA7, 0x42, 0xD8, 0xA8, 0x42,\n\t// Bytes 240 - 27f\n\t0xD8, 0xA9, 0x42, 0xD8, 0xAA, 0x42, 0xD8, 0xAB,\n\t0x42, 0xD8, 0xAC, 0x42, 0xD8, 0xAD, 0x42, 0xD8,\n\t0xAE, 0x42, 0xD8, 0xAF, 0x42, 0xD8, 0xB0, 0x42,\n\t0xD8, 0xB1, 0x42, 0xD8, 0xB2, 0x42, 0xD8, 0xB3,\n\t0x42, 0xD8, 0xB4, 0x42, 0xD8, 0xB5, 0x42, 0xD8,\n\t0xB6, 0x42, 0xD8, 0xB7, 0x42, 0xD8, 0xB8, 0x42,\n\t0xD8, 0xB9, 0x42, 0xD8, 0xBA, 0x42, 0xD9, 0x81,\n\t0x42, 0xD9, 0x82, 0x42, 0xD9, 0x83, 0x42, 0xD9,\n\t// Bytes 280 - 2bf\n\t0x84, 0x42, 0xD9, 0x85, 0x42, 0xD9, 0x86, 0x42,\n\t0xD9, 0x87, 0x42, 0xD9, 0x88, 0x42, 0xD9, 0x89,\n\t0x42, 0xD9, 0x8A, 0x42, 0xD9, 0xAE, 0x42, 0xD9,\n\t0xAF, 0x42, 0xD9, 0xB1, 0x42, 0xD9, 0xB9, 0x42,\n\t0xD9, 0xBA, 0x42, 0xD9, 0xBB, 0x42, 0xD9, 0xBE,\n\t0x42, 0xD9, 0xBF, 0x42, 0xDA, 0x80, 0x42, 0xDA,\n\t0x83, 0x42, 0xDA, 0x84, 0x42, 0xDA, 0x86, 0x42,\n\t0xDA, 0x87, 0x42, 0xDA, 0x88, 0x42, 0xDA, 0x8C,\n\t// Bytes 2c0 - 2ff\n\t0x42, 0xDA, 0x8D, 0x42, 0xDA, 0x8E, 0x42, 0xDA,\n\t0x91, 0x42, 0xDA, 0x98, 0x42, 0xDA, 0xA1, 0x42,\n\t0xDA, 0xA4, 0x42, 0xDA, 0xA6, 0x42, 0xDA, 0xA9,\n\t0x42, 0xDA, 0xAD, 0x42, 0xDA, 0xAF, 0x42, 0xDA,\n\t0xB1, 0x42, 0xDA, 0xB3, 0x42, 0xDA, 0xBA, 0x42,\n\t0xDA, 0xBB, 0x42, 0xDA, 0xBE, 0x42, 0xDB, 0x81,\n\t0x42, 0xDB, 0x85, 0x42, 0xDB, 0x86, 0x42, 0xDB,\n\t0x87, 0x42, 0xDB, 0x88, 0x42, 0xDB, 0x89, 0x42,\n\t// Bytes 300 - 33f\n\t0xDB, 0x8B, 0x42, 0xDB, 0x8C, 0x42, 0xDB, 0x90,\n\t0x42, 0xDB, 0x92, 0x43, 0xE0, 0xBC, 0x8B, 0x43,\n\t0xE1, 0x83, 0x9C, 0x43, 0xE1, 0x84, 0x80, 0x43,\n\t0xE1, 0x84, 0x81, 0x43, 0xE1, 0x84, 0x82, 0x43,\n\t0xE1, 0x84, 0x83, 0x43, 0xE1, 0x84, 0x84, 0x43,\n\t0xE1, 0x84, 0x85, 0x43, 0xE1, 0x84, 0x86, 0x43,\n\t0xE1, 0x84, 0x87, 0x43, 0xE1, 0x84, 0x88, 0x43,\n\t0xE1, 0x84, 0x89, 0x43, 0xE1, 0x84, 0x8A, 0x43,\n\t// Bytes 340 - 37f\n\t0xE1, 0x84, 0x8B, 0x43, 0xE1, 0x84, 0x8C, 0x43,\n\t0xE1, 0x84, 0x8D, 0x43, 0xE1, 0x84, 0x8E, 0x43,\n\t0xE1, 0x84, 0x8F, 0x43, 0xE1, 0x84, 0x90, 0x43,\n\t0xE1, 0x84, 0x91, 0x43, 0xE1, 0x84, 0x92, 0x43,\n\t0xE1, 0x84, 0x94, 0x43, 0xE1, 0x84, 0x95, 0x43,\n\t0xE1, 0x84, 0x9A, 0x43, 0xE1, 0x84, 0x9C, 0x43,\n\t0xE1, 0x84, 0x9D, 0x43, 0xE1, 0x84, 0x9E, 0x43,\n\t0xE1, 0x84, 0xA0, 0x43, 0xE1, 0x84, 0xA1, 0x43,\n\t// Bytes 380 - 3bf\n\t0xE1, 0x84, 0xA2, 0x43, 0xE1, 0x84, 0xA3, 0x43,\n\t0xE1, 0x84, 0xA7, 0x43, 0xE1, 0x84, 0xA9, 0x43,\n\t0xE1, 0x84, 0xAB, 0x43, 0xE1, 0x84, 0xAC, 0x43,\n\t0xE1, 0x84, 0xAD, 0x43, 0xE1, 0x84, 0xAE, 0x43,\n\t0xE1, 0x84, 0xAF, 0x43, 0xE1, 0x84, 0xB2, 0x43,\n\t0xE1, 0x84, 0xB6, 0x43, 0xE1, 0x85, 0x80, 0x43,\n\t0xE1, 0x85, 0x87, 0x43, 0xE1, 0x85, 0x8C, 0x43,\n\t0xE1, 0x85, 0x97, 0x43, 0xE1, 0x85, 0x98, 0x43,\n\t// Bytes 3c0 - 3ff\n\t0xE1, 0x85, 0x99, 0x43, 0xE1, 0x85, 0xA0, 0x43,\n\t0xE1, 0x86, 0x84, 0x43, 0xE1, 0x86, 0x85, 0x43,\n\t0xE1, 0x86, 0x88, 0x43, 0xE1, 0x86, 0x91, 0x43,\n\t0xE1, 0x86, 0x92, 0x43, 0xE1, 0x86, 0x94, 0x43,\n\t0xE1, 0x86, 0x9E, 0x43, 0xE1, 0x86, 0xA1, 0x43,\n\t0xE1, 0x87, 0x87, 0x43, 0xE1, 0x87, 0x88, 0x43,\n\t0xE1, 0x87, 0x8C, 0x43, 0xE1, 0x87, 0x8E, 0x43,\n\t0xE1, 0x87, 0x93, 0x43, 0xE1, 0x87, 0x97, 0x43,\n\t// Bytes 400 - 43f\n\t0xE1, 0x87, 0x99, 0x43, 0xE1, 0x87, 0x9D, 0x43,\n\t0xE1, 0x87, 0x9F, 0x43, 0xE1, 0x87, 0xB1, 0x43,\n\t0xE1, 0x87, 0xB2, 0x43, 0xE1, 0xB4, 0x82, 0x43,\n\t0xE1, 0xB4, 0x96, 0x43, 0xE1, 0xB4, 0x97, 0x43,\n\t0xE1, 0xB4, 0x9C, 0x43, 0xE1, 0xB4, 0x9D, 0x43,\n\t0xE1, 0xB4, 0xA5, 0x43, 0xE1, 0xB5, 0xBB, 0x43,\n\t0xE1, 0xB6, 0x85, 0x43, 0xE2, 0x80, 0x82, 0x43,\n\t0xE2, 0x80, 0x83, 0x43, 0xE2, 0x80, 0x90, 0x43,\n\t// Bytes 440 - 47f\n\t0xE2, 0x80, 0x93, 0x43, 0xE2, 0x80, 0x94, 0x43,\n\t0xE2, 0x82, 0xA9, 0x43, 0xE2, 0x86, 0x90, 0x43,\n\t0xE2, 0x86, 0x91, 0x43, 0xE2, 0x86, 0x92, 0x43,\n\t0xE2, 0x86, 0x93, 0x43, 0xE2, 0x88, 0x82, 0x43,\n\t0xE2, 0x88, 0x87, 0x43, 0xE2, 0x88, 0x91, 0x43,\n\t0xE2, 0x88, 0x92, 0x43, 0xE2, 0x94, 0x82, 0x43,\n\t0xE2, 0x96, 0xA0, 0x43, 0xE2, 0x97, 0x8B, 0x43,\n\t0xE2, 0xA6, 0x85, 0x43, 0xE2, 0xA6, 0x86, 0x43,\n\t// Bytes 480 - 4bf\n\t0xE2, 0xB5, 0xA1, 0x43, 0xE3, 0x80, 0x81, 0x43,\n\t0xE3, 0x80, 0x82, 0x43, 0xE3, 0x80, 0x88, 0x43,\n\t0xE3, 0x80, 0x89, 0x43, 0xE3, 0x80, 0x8A, 0x43,\n\t0xE3, 0x80, 0x8B, 0x43, 0xE3, 0x80, 0x8C, 0x43,\n\t0xE3, 0x80, 0x8D, 0x43, 0xE3, 0x80, 0x8E, 0x43,\n\t0xE3, 0x80, 0x8F, 0x43, 0xE3, 0x80, 0x90, 0x43,\n\t0xE3, 0x80, 0x91, 0x43, 0xE3, 0x80, 0x92, 0x43,\n\t0xE3, 0x80, 0x94, 0x43, 0xE3, 0x80, 0x95, 0x43,\n\t// Bytes 4c0 - 4ff\n\t0xE3, 0x80, 0x96, 0x43, 0xE3, 0x80, 0x97, 0x43,\n\t0xE3, 0x82, 0xA1, 0x43, 0xE3, 0x82, 0xA2, 0x43,\n\t0xE3, 0x82, 0xA3, 0x43, 0xE3, 0x82, 0xA4, 0x43,\n\t0xE3, 0x82, 0xA5, 0x43, 0xE3, 0x82, 0xA6, 0x43,\n\t0xE3, 0x82, 0xA7, 0x43, 0xE3, 0x82, 0xA8, 0x43,\n\t0xE3, 0x82, 0xA9, 0x43, 0xE3, 0x82, 0xAA, 0x43,\n\t0xE3, 0x82, 0xAB, 0x43, 0xE3, 0x82, 0xAD, 0x43,\n\t0xE3, 0x82, 0xAF, 0x43, 0xE3, 0x82, 0xB1, 0x43,\n\t// Bytes 500 - 53f\n\t0xE3, 0x82, 0xB3, 0x43, 0xE3, 0x82, 0xB5, 0x43,\n\t0xE3, 0x82, 0xB7, 0x43, 0xE3, 0x82, 0xB9, 0x43,\n\t0xE3, 0x82, 0xBB, 0x43, 0xE3, 0x82, 0xBD, 0x43,\n\t0xE3, 0x82, 0xBF, 0x43, 0xE3, 0x83, 0x81, 0x43,\n\t0xE3, 0x83, 0x83, 0x43, 0xE3, 0x83, 0x84, 0x43,\n\t0xE3, 0x83, 0x86, 0x43, 0xE3, 0x83, 0x88, 0x43,\n\t0xE3, 0x83, 0x8A, 0x43, 0xE3, 0x83, 0x8B, 0x43,\n\t0xE3, 0x83, 0x8C, 0x43, 0xE3, 0x83, 0x8D, 0x43,\n\t// Bytes 540 - 57f\n\t0xE3, 0x83, 0x8E, 0x43, 0xE3, 0x83, 0x8F, 0x43,\n\t0xE3, 0x83, 0x92, 0x43, 0xE3, 0x83, 0x95, 0x43,\n\t0xE3, 0x83, 0x98, 0x43, 0xE3, 0x83, 0x9B, 0x43,\n\t0xE3, 0x83, 0x9E, 0x43, 0xE3, 0x83, 0x9F, 0x43,\n\t0xE3, 0x83, 0xA0, 0x43, 0xE3, 0x83, 0xA1, 0x43,\n\t0xE3, 0x83, 0xA2, 0x43, 0xE3, 0x83, 0xA3, 0x43,\n\t0xE3, 0x83, 0xA4, 0x43, 0xE3, 0x83, 0xA5, 0x43,\n\t0xE3, 0x83, 0xA6, 0x43, 0xE3, 0x83, 0xA7, 0x43,\n\t// Bytes 580 - 5bf\n\t0xE3, 0x83, 0xA8, 0x43, 0xE3, 0x83, 0xA9, 0x43,\n\t0xE3, 0x83, 0xAA, 0x43, 0xE3, 0x83, 0xAB, 0x43,\n\t0xE3, 0x83, 0xAC, 0x43, 0xE3, 0x83, 0xAD, 0x43,\n\t0xE3, 0x83, 0xAF, 0x43, 0xE3, 0x83, 0xB0, 0x43,\n\t0xE3, 0x83, 0xB1, 0x43, 0xE3, 0x83, 0xB2, 0x43,\n\t0xE3, 0x83, 0xB3, 0x43, 0xE3, 0x83, 0xBB, 0x43,\n\t0xE3, 0x83, 0xBC, 0x43, 0xE3, 0x92, 0x9E, 0x43,\n\t0xE3, 0x92, 0xB9, 0x43, 0xE3, 0x92, 0xBB, 0x43,\n\t// Bytes 5c0 - 5ff\n\t0xE3, 0x93, 0x9F, 0x43, 0xE3, 0x94, 0x95, 0x43,\n\t0xE3, 0x9B, 0xAE, 0x43, 0xE3, 0x9B, 0xBC, 0x43,\n\t0xE3, 0x9E, 0x81, 0x43, 0xE3, 0xA0, 0xAF, 0x43,\n\t0xE3, 0xA1, 0xA2, 0x43, 0xE3, 0xA1, 0xBC, 0x43,\n\t0xE3, 0xA3, 0x87, 0x43, 0xE3, 0xA3, 0xA3, 0x43,\n\t0xE3, 0xA4, 0x9C, 0x43, 0xE3, 0xA4, 0xBA, 0x43,\n\t0xE3, 0xA8, 0xAE, 0x43, 0xE3, 0xA9, 0xAC, 0x43,\n\t0xE3, 0xAB, 0xA4, 0x43, 0xE3, 0xAC, 0x88, 0x43,\n\t// Bytes 600 - 63f\n\t0xE3, 0xAC, 0x99, 0x43, 0xE3, 0xAD, 0x89, 0x43,\n\t0xE3, 0xAE, 0x9D, 0x43, 0xE3, 0xB0, 0x98, 0x43,\n\t0xE3, 0xB1, 0x8E, 0x43, 0xE3, 0xB4, 0xB3, 0x43,\n\t0xE3, 0xB6, 0x96, 0x43, 0xE3, 0xBA, 0xAC, 0x43,\n\t0xE3, 0xBA, 0xB8, 0x43, 0xE3, 0xBC, 0x9B, 0x43,\n\t0xE3, 0xBF, 0xBC, 0x43, 0xE4, 0x80, 0x88, 0x43,\n\t0xE4, 0x80, 0x98, 0x43, 0xE4, 0x80, 0xB9, 0x43,\n\t0xE4, 0x81, 0x86, 0x43, 0xE4, 0x82, 0x96, 0x43,\n\t// Bytes 640 - 67f\n\t0xE4, 0x83, 0xA3, 0x43, 0xE4, 0x84, 0xAF, 0x43,\n\t0xE4, 0x88, 0x82, 0x43, 0xE4, 0x88, 0xA7, 0x43,\n\t0xE4, 0x8A, 0xA0, 0x43, 0xE4, 0x8C, 0x81, 0x43,\n\t0xE4, 0x8C, 0xB4, 0x43, 0xE4, 0x8D, 0x99, 0x43,\n\t0xE4, 0x8F, 0x95, 0x43, 0xE4, 0x8F, 0x99, 0x43,\n\t0xE4, 0x90, 0x8B, 0x43, 0xE4, 0x91, 0xAB, 0x43,\n\t0xE4, 0x94, 0xAB, 0x43, 0xE4, 0x95, 0x9D, 0x43,\n\t0xE4, 0x95, 0xA1, 0x43, 0xE4, 0x95, 0xAB, 0x43,\n\t// Bytes 680 - 6bf\n\t0xE4, 0x97, 0x97, 0x43, 0xE4, 0x97, 0xB9, 0x43,\n\t0xE4, 0x98, 0xB5, 0x43, 0xE4, 0x9A, 0xBE, 0x43,\n\t0xE4, 0x9B, 0x87, 0x43, 0xE4, 0xA6, 0x95, 0x43,\n\t0xE4, 0xA7, 0xA6, 0x43, 0xE4, 0xA9, 0xAE, 0x43,\n\t0xE4, 0xA9, 0xB6, 0x43, 0xE4, 0xAA, 0xB2, 0x43,\n\t0xE4, 0xAC, 0xB3, 0x43, 0xE4, 0xAF, 0x8E, 0x43,\n\t0xE4, 0xB3, 0x8E, 0x43, 0xE4, 0xB3, 0xAD, 0x43,\n\t0xE4, 0xB3, 0xB8, 0x43, 0xE4, 0xB5, 0x96, 0x43,\n\t// Bytes 6c0 - 6ff\n\t0xE4, 0xB8, 0x80, 0x43, 0xE4, 0xB8, 0x81, 0x43,\n\t0xE4, 0xB8, 0x83, 0x43, 0xE4, 0xB8, 0x89, 0x43,\n\t0xE4, 0xB8, 0x8A, 0x43, 0xE4, 0xB8, 0x8B, 0x43,\n\t0xE4, 0xB8, 0x8D, 0x43, 0xE4, 0xB8, 0x99, 0x43,\n\t0xE4, 0xB8, 0xA6, 0x43, 0xE4, 0xB8, 0xA8, 0x43,\n\t0xE4, 0xB8, 0xAD, 0x43, 0xE4, 0xB8, 0xB2, 0x43,\n\t0xE4, 0xB8, 0xB6, 0x43, 0xE4, 0xB8, 0xB8, 0x43,\n\t0xE4, 0xB8, 0xB9, 0x43, 0xE4, 0xB8, 0xBD, 0x43,\n\t// Bytes 700 - 73f\n\t0xE4, 0xB8, 0xBF, 0x43, 0xE4, 0xB9, 0x81, 0x43,\n\t0xE4, 0xB9, 0x99, 0x43, 0xE4, 0xB9, 0x9D, 0x43,\n\t0xE4, 0xBA, 0x82, 0x43, 0xE4, 0xBA, 0x85, 0x43,\n\t0xE4, 0xBA, 0x86, 0x43, 0xE4, 0xBA, 0x8C, 0x43,\n\t0xE4, 0xBA, 0x94, 0x43, 0xE4, 0xBA, 0xA0, 0x43,\n\t0xE4, 0xBA, 0xA4, 0x43, 0xE4, 0xBA, 0xAE, 0x43,\n\t0xE4, 0xBA, 0xBA, 0x43, 0xE4, 0xBB, 0x80, 0x43,\n\t0xE4, 0xBB, 0x8C, 0x43, 0xE4, 0xBB, 0xA4, 0x43,\n\t// Bytes 740 - 77f\n\t0xE4, 0xBC, 0x81, 0x43, 0xE4, 0xBC, 0x91, 0x43,\n\t0xE4, 0xBD, 0xA0, 0x43, 0xE4, 0xBE, 0x80, 0x43,\n\t0xE4, 0xBE, 0x86, 0x43, 0xE4, 0xBE, 0x8B, 0x43,\n\t0xE4, 0xBE, 0xAE, 0x43, 0xE4, 0xBE, 0xBB, 0x43,\n\t0xE4, 0xBE, 0xBF, 0x43, 0xE5, 0x80, 0x82, 0x43,\n\t0xE5, 0x80, 0xAB, 0x43, 0xE5, 0x81, 0xBA, 0x43,\n\t0xE5, 0x82, 0x99, 0x43, 0xE5, 0x83, 0x8F, 0x43,\n\t0xE5, 0x83, 0x9A, 0x43, 0xE5, 0x83, 0xA7, 0x43,\n\t// Bytes 780 - 7bf\n\t0xE5, 0x84, 0xAA, 0x43, 0xE5, 0x84, 0xBF, 0x43,\n\t0xE5, 0x85, 0x80, 0x43, 0xE5, 0x85, 0x85, 0x43,\n\t0xE5, 0x85, 0x8D, 0x43, 0xE5, 0x85, 0x94, 0x43,\n\t0xE5, 0x85, 0xA4, 0x43, 0xE5, 0x85, 0xA5, 0x43,\n\t0xE5, 0x85, 0xA7, 0x43, 0xE5, 0x85, 0xA8, 0x43,\n\t0xE5, 0x85, 0xA9, 0x43, 0xE5, 0x85, 0xAB, 0x43,\n\t0xE5, 0x85, 0xAD, 0x43, 0xE5, 0x85, 0xB7, 0x43,\n\t0xE5, 0x86, 0x80, 0x43, 0xE5, 0x86, 0x82, 0x43,\n\t// Bytes 7c0 - 7ff\n\t0xE5, 0x86, 0x8D, 0x43, 0xE5, 0x86, 0x92, 0x43,\n\t0xE5, 0x86, 0x95, 0x43, 0xE5, 0x86, 0x96, 0x43,\n\t0xE5, 0x86, 0x97, 0x43, 0xE5, 0x86, 0x99, 0x43,\n\t0xE5, 0x86, 0xA4, 0x43, 0xE5, 0x86, 0xAB, 0x43,\n\t0xE5, 0x86, 0xAC, 0x43, 0xE5, 0x86, 0xB5, 0x43,\n\t0xE5, 0x86, 0xB7, 0x43, 0xE5, 0x87, 0x89, 0x43,\n\t0xE5, 0x87, 0x8C, 0x43, 0xE5, 0x87, 0x9C, 0x43,\n\t0xE5, 0x87, 0x9E, 0x43, 0xE5, 0x87, 0xA0, 0x43,\n\t// Bytes 800 - 83f\n\t0xE5, 0x87, 0xB5, 0x43, 0xE5, 0x88, 0x80, 0x43,\n\t0xE5, 0x88, 0x83, 0x43, 0xE5, 0x88, 0x87, 0x43,\n\t0xE5, 0x88, 0x97, 0x43, 0xE5, 0x88, 0x9D, 0x43,\n\t0xE5, 0x88, 0xA9, 0x43, 0xE5, 0x88, 0xBA, 0x43,\n\t0xE5, 0x88, 0xBB, 0x43, 0xE5, 0x89, 0x86, 0x43,\n\t0xE5, 0x89, 0x8D, 0x43, 0xE5, 0x89, 0xB2, 0x43,\n\t0xE5, 0x89, 0xB7, 0x43, 0xE5, 0x8A, 0x89, 0x43,\n\t0xE5, 0x8A, 0x9B, 0x43, 0xE5, 0x8A, 0xA3, 0x43,\n\t// Bytes 840 - 87f\n\t0xE5, 0x8A, 0xB3, 0x43, 0xE5, 0x8A, 0xB4, 0x43,\n\t0xE5, 0x8B, 0x87, 0x43, 0xE5, 0x8B, 0x89, 0x43,\n\t0xE5, 0x8B, 0x92, 0x43, 0xE5, 0x8B, 0x9E, 0x43,\n\t0xE5, 0x8B, 0xA4, 0x43, 0xE5, 0x8B, 0xB5, 0x43,\n\t0xE5, 0x8B, 0xB9, 0x43, 0xE5, 0x8B, 0xBA, 0x43,\n\t0xE5, 0x8C, 0x85, 0x43, 0xE5, 0x8C, 0x86, 0x43,\n\t0xE5, 0x8C, 0x95, 0x43, 0xE5, 0x8C, 0x97, 0x43,\n\t0xE5, 0x8C, 0x9A, 0x43, 0xE5, 0x8C, 0xB8, 0x43,\n\t// Bytes 880 - 8bf\n\t0xE5, 0x8C, 0xBB, 0x43, 0xE5, 0x8C, 0xBF, 0x43,\n\t0xE5, 0x8D, 0x81, 0x43, 0xE5, 0x8D, 0x84, 0x43,\n\t0xE5, 0x8D, 0x85, 0x43, 0xE5, 0x8D, 0x89, 0x43,\n\t0xE5, 0x8D, 0x91, 0x43, 0xE5, 0x8D, 0x94, 0x43,\n\t0xE5, 0x8D, 0x9A, 0x43, 0xE5, 0x8D, 0x9C, 0x43,\n\t0xE5, 0x8D, 0xA9, 0x43, 0xE5, 0x8D, 0xB0, 0x43,\n\t0xE5, 0x8D, 0xB3, 0x43, 0xE5, 0x8D, 0xB5, 0x43,\n\t0xE5, 0x8D, 0xBD, 0x43, 0xE5, 0x8D, 0xBF, 0x43,\n\t// Bytes 8c0 - 8ff\n\t0xE5, 0x8E, 0x82, 0x43, 0xE5, 0x8E, 0xB6, 0x43,\n\t0xE5, 0x8F, 0x83, 0x43, 0xE5, 0x8F, 0x88, 0x43,\n\t0xE5, 0x8F, 0x8A, 0x43, 0xE5, 0x8F, 0x8C, 0x43,\n\t0xE5, 0x8F, 0x9F, 0x43, 0xE5, 0x8F, 0xA3, 0x43,\n\t0xE5, 0x8F, 0xA5, 0x43, 0xE5, 0x8F, 0xAB, 0x43,\n\t0xE5, 0x8F, 0xAF, 0x43, 0xE5, 0x8F, 0xB1, 0x43,\n\t0xE5, 0x8F, 0xB3, 0x43, 0xE5, 0x90, 0x86, 0x43,\n\t0xE5, 0x90, 0x88, 0x43, 0xE5, 0x90, 0x8D, 0x43,\n\t// Bytes 900 - 93f\n\t0xE5, 0x90, 0x8F, 0x43, 0xE5, 0x90, 0x9D, 0x43,\n\t0xE5, 0x90, 0xB8, 0x43, 0xE5, 0x90, 0xB9, 0x43,\n\t0xE5, 0x91, 0x82, 0x43, 0xE5, 0x91, 0x88, 0x43,\n\t0xE5, 0x91, 0xA8, 0x43, 0xE5, 0x92, 0x9E, 0x43,\n\t0xE5, 0x92, 0xA2, 0x43, 0xE5, 0x92, 0xBD, 0x43,\n\t0xE5, 0x93, 0xB6, 0x43, 0xE5, 0x94, 0x90, 0x43,\n\t0xE5, 0x95, 0x8F, 0x43, 0xE5, 0x95, 0x93, 0x43,\n\t0xE5, 0x95, 0x95, 0x43, 0xE5, 0x95, 0xA3, 0x43,\n\t// Bytes 940 - 97f\n\t0xE5, 0x96, 0x84, 0x43, 0xE5, 0x96, 0x87, 0x43,\n\t0xE5, 0x96, 0x99, 0x43, 0xE5, 0x96, 0x9D, 0x43,\n\t0xE5, 0x96, 0xAB, 0x43, 0xE5, 0x96, 0xB3, 0x43,\n\t0xE5, 0x96, 0xB6, 0x43, 0xE5, 0x97, 0x80, 0x43,\n\t0xE5, 0x97, 0x82, 0x43, 0xE5, 0x97, 0xA2, 0x43,\n\t0xE5, 0x98, 0x86, 0x43, 0xE5, 0x99, 0x91, 0x43,\n\t0xE5, 0x99, 0xA8, 0x43, 0xE5, 0x99, 0xB4, 0x43,\n\t0xE5, 0x9B, 0x97, 0x43, 0xE5, 0x9B, 0x9B, 0x43,\n\t// Bytes 980 - 9bf\n\t0xE5, 0x9B, 0xB9, 0x43, 0xE5, 0x9C, 0x96, 0x43,\n\t0xE5, 0x9C, 0x97, 0x43, 0xE5, 0x9C, 0x9F, 0x43,\n\t0xE5, 0x9C, 0xB0, 0x43, 0xE5, 0x9E, 0x8B, 0x43,\n\t0xE5, 0x9F, 0x8E, 0x43, 0xE5, 0x9F, 0xB4, 0x43,\n\t0xE5, 0xA0, 0x8D, 0x43, 0xE5, 0xA0, 0xB1, 0x43,\n\t0xE5, 0xA0, 0xB2, 0x43, 0xE5, 0xA1, 0x80, 0x43,\n\t0xE5, 0xA1, 0x9A, 0x43, 0xE5, 0xA1, 0x9E, 0x43,\n\t0xE5, 0xA2, 0xA8, 0x43, 0xE5, 0xA2, 0xAC, 0x43,\n\t// Bytes 9c0 - 9ff\n\t0xE5, 0xA2, 0xB3, 0x43, 0xE5, 0xA3, 0x98, 0x43,\n\t0xE5, 0xA3, 0x9F, 0x43, 0xE5, 0xA3, 0xAB, 0x43,\n\t0xE5, 0xA3, 0xAE, 0x43, 0xE5, 0xA3, 0xB0, 0x43,\n\t0xE5, 0xA3, 0xB2, 0x43, 0xE5, 0xA3, 0xB7, 0x43,\n\t0xE5, 0xA4, 0x82, 0x43, 0xE5, 0xA4, 0x86, 0x43,\n\t0xE5, 0xA4, 0x8A, 0x43, 0xE5, 0xA4, 0x95, 0x43,\n\t0xE5, 0xA4, 0x9A, 0x43, 0xE5, 0xA4, 0x9C, 0x43,\n\t0xE5, 0xA4, 0xA2, 0x43, 0xE5, 0xA4, 0xA7, 0x43,\n\t// Bytes a00 - a3f\n\t0xE5, 0xA4, 0xA9, 0x43, 0xE5, 0xA5, 0x84, 0x43,\n\t0xE5, 0xA5, 0x88, 0x43, 0xE5, 0xA5, 0x91, 0x43,\n\t0xE5, 0xA5, 0x94, 0x43, 0xE5, 0xA5, 0xA2, 0x43,\n\t0xE5, 0xA5, 0xB3, 0x43, 0xE5, 0xA7, 0x98, 0x43,\n\t0xE5, 0xA7, 0xAC, 0x43, 0xE5, 0xA8, 0x9B, 0x43,\n\t0xE5, 0xA8, 0xA7, 0x43, 0xE5, 0xA9, 0xA2, 0x43,\n\t0xE5, 0xA9, 0xA6, 0x43, 0xE5, 0xAA, 0xB5, 0x43,\n\t0xE5, 0xAC, 0x88, 0x43, 0xE5, 0xAC, 0xA8, 0x43,\n\t// Bytes a40 - a7f\n\t0xE5, 0xAC, 0xBE, 0x43, 0xE5, 0xAD, 0x90, 0x43,\n\t0xE5, 0xAD, 0x97, 0x43, 0xE5, 0xAD, 0xA6, 0x43,\n\t0xE5, 0xAE, 0x80, 0x43, 0xE5, 0xAE, 0x85, 0x43,\n\t0xE5, 0xAE, 0x97, 0x43, 0xE5, 0xAF, 0x83, 0x43,\n\t0xE5, 0xAF, 0x98, 0x43, 0xE5, 0xAF, 0xA7, 0x43,\n\t0xE5, 0xAF, 0xAE, 0x43, 0xE5, 0xAF, 0xB3, 0x43,\n\t0xE5, 0xAF, 0xB8, 0x43, 0xE5, 0xAF, 0xBF, 0x43,\n\t0xE5, 0xB0, 0x86, 0x43, 0xE5, 0xB0, 0x8F, 0x43,\n\t// Bytes a80 - abf\n\t0xE5, 0xB0, 0xA2, 0x43, 0xE5, 0xB0, 0xB8, 0x43,\n\t0xE5, 0xB0, 0xBF, 0x43, 0xE5, 0xB1, 0xA0, 0x43,\n\t0xE5, 0xB1, 0xA2, 0x43, 0xE5, 0xB1, 0xA4, 0x43,\n\t0xE5, 0xB1, 0xA5, 0x43, 0xE5, 0xB1, 0xAE, 0x43,\n\t0xE5, 0xB1, 0xB1, 0x43, 0xE5, 0xB2, 0x8D, 0x43,\n\t0xE5, 0xB3, 0x80, 0x43, 0xE5, 0xB4, 0x99, 0x43,\n\t0xE5, 0xB5, 0x83, 0x43, 0xE5, 0xB5, 0x90, 0x43,\n\t0xE5, 0xB5, 0xAB, 0x43, 0xE5, 0xB5, 0xAE, 0x43,\n\t// Bytes ac0 - aff\n\t0xE5, 0xB5, 0xBC, 0x43, 0xE5, 0xB6, 0xB2, 0x43,\n\t0xE5, 0xB6, 0xBA, 0x43, 0xE5, 0xB7, 0x9B, 0x43,\n\t0xE5, 0xB7, 0xA1, 0x43, 0xE5, 0xB7, 0xA2, 0x43,\n\t0xE5, 0xB7, 0xA5, 0x43, 0xE5, 0xB7, 0xA6, 0x43,\n\t0xE5, 0xB7, 0xB1, 0x43, 0xE5, 0xB7, 0xBD, 0x43,\n\t0xE5, 0xB7, 0xBE, 0x43, 0xE5, 0xB8, 0xA8, 0x43,\n\t0xE5, 0xB8, 0xBD, 0x43, 0xE5, 0xB9, 0xA9, 0x43,\n\t0xE5, 0xB9, 0xB2, 0x43, 0xE5, 0xB9, 0xB4, 0x43,\n\t// Bytes b00 - b3f\n\t0xE5, 0xB9, 0xBA, 0x43, 0xE5, 0xB9, 0xBC, 0x43,\n\t0xE5, 0xB9, 0xBF, 0x43, 0xE5, 0xBA, 0xA6, 0x43,\n\t0xE5, 0xBA, 0xB0, 0x43, 0xE5, 0xBA, 0xB3, 0x43,\n\t0xE5, 0xBA, 0xB6, 0x43, 0xE5, 0xBB, 0x89, 0x43,\n\t0xE5, 0xBB, 0x8A, 0x43, 0xE5, 0xBB, 0x92, 0x43,\n\t0xE5, 0xBB, 0x93, 0x43, 0xE5, 0xBB, 0x99, 0x43,\n\t0xE5, 0xBB, 0xAC, 0x43, 0xE5, 0xBB, 0xB4, 0x43,\n\t0xE5, 0xBB, 0xBE, 0x43, 0xE5, 0xBC, 0x84, 0x43,\n\t// Bytes b40 - b7f\n\t0xE5, 0xBC, 0x8B, 0x43, 0xE5, 0xBC, 0x93, 0x43,\n\t0xE5, 0xBC, 0xA2, 0x43, 0xE5, 0xBD, 0x90, 0x43,\n\t0xE5, 0xBD, 0x93, 0x43, 0xE5, 0xBD, 0xA1, 0x43,\n\t0xE5, 0xBD, 0xA2, 0x43, 0xE5, 0xBD, 0xA9, 0x43,\n\t0xE5, 0xBD, 0xAB, 0x43, 0xE5, 0xBD, 0xB3, 0x43,\n\t0xE5, 0xBE, 0x8B, 0x43, 0xE5, 0xBE, 0x8C, 0x43,\n\t0xE5, 0xBE, 0x97, 0x43, 0xE5, 0xBE, 0x9A, 0x43,\n\t0xE5, 0xBE, 0xA9, 0x43, 0xE5, 0xBE, 0xAD, 0x43,\n\t// Bytes b80 - bbf\n\t0xE5, 0xBF, 0x83, 0x43, 0xE5, 0xBF, 0x8D, 0x43,\n\t0xE5, 0xBF, 0x97, 0x43, 0xE5, 0xBF, 0xB5, 0x43,\n\t0xE5, 0xBF, 0xB9, 0x43, 0xE6, 0x80, 0x92, 0x43,\n\t0xE6, 0x80, 0x9C, 0x43, 0xE6, 0x81, 0xB5, 0x43,\n\t0xE6, 0x82, 0x81, 0x43, 0xE6, 0x82, 0x94, 0x43,\n\t0xE6, 0x83, 0x87, 0x43, 0xE6, 0x83, 0x98, 0x43,\n\t0xE6, 0x83, 0xA1, 0x43, 0xE6, 0x84, 0x88, 0x43,\n\t0xE6, 0x85, 0x84, 0x43, 0xE6, 0x85, 0x88, 0x43,\n\t// Bytes bc0 - bff\n\t0xE6, 0x85, 0x8C, 0x43, 0xE6, 0x85, 0x8E, 0x43,\n\t0xE6, 0x85, 0xA0, 0x43, 0xE6, 0x85, 0xA8, 0x43,\n\t0xE6, 0x85, 0xBA, 0x43, 0xE6, 0x86, 0x8E, 0x43,\n\t0xE6, 0x86, 0x90, 0x43, 0xE6, 0x86, 0xA4, 0x43,\n\t0xE6, 0x86, 0xAF, 0x43, 0xE6, 0x86, 0xB2, 0x43,\n\t0xE6, 0x87, 0x9E, 0x43, 0xE6, 0x87, 0xB2, 0x43,\n\t0xE6, 0x87, 0xB6, 0x43, 0xE6, 0x88, 0x80, 0x43,\n\t0xE6, 0x88, 0x88, 0x43, 0xE6, 0x88, 0x90, 0x43,\n\t// Bytes c00 - c3f\n\t0xE6, 0x88, 0x9B, 0x43, 0xE6, 0x88, 0xAE, 0x43,\n\t0xE6, 0x88, 0xB4, 0x43, 0xE6, 0x88, 0xB6, 0x43,\n\t0xE6, 0x89, 0x8B, 0x43, 0xE6, 0x89, 0x93, 0x43,\n\t0xE6, 0x89, 0x9D, 0x43, 0xE6, 0x8A, 0x95, 0x43,\n\t0xE6, 0x8A, 0xB1, 0x43, 0xE6, 0x8B, 0x89, 0x43,\n\t0xE6, 0x8B, 0x8F, 0x43, 0xE6, 0x8B, 0x93, 0x43,\n\t0xE6, 0x8B, 0x94, 0x43, 0xE6, 0x8B, 0xBC, 0x43,\n\t0xE6, 0x8B, 0xBE, 0x43, 0xE6, 0x8C, 0x87, 0x43,\n\t// Bytes c40 - c7f\n\t0xE6, 0x8C, 0xBD, 0x43, 0xE6, 0x8D, 0x90, 0x43,\n\t0xE6, 0x8D, 0x95, 0x43, 0xE6, 0x8D, 0xA8, 0x43,\n\t0xE6, 0x8D, 0xBB, 0x43, 0xE6, 0x8E, 0x83, 0x43,\n\t0xE6, 0x8E, 0xA0, 0x43, 0xE6, 0x8E, 0xA9, 0x43,\n\t0xE6, 0x8F, 0x84, 0x43, 0xE6, 0x8F, 0x85, 0x43,\n\t0xE6, 0x8F, 0xA4, 0x43, 0xE6, 0x90, 0x9C, 0x43,\n\t0xE6, 0x90, 0xA2, 0x43, 0xE6, 0x91, 0x92, 0x43,\n\t0xE6, 0x91, 0xA9, 0x43, 0xE6, 0x91, 0xB7, 0x43,\n\t// Bytes c80 - cbf\n\t0xE6, 0x91, 0xBE, 0x43, 0xE6, 0x92, 0x9A, 0x43,\n\t0xE6, 0x92, 0x9D, 0x43, 0xE6, 0x93, 0x84, 0x43,\n\t0xE6, 0x94, 0xAF, 0x43, 0xE6, 0x94, 0xB4, 0x43,\n\t0xE6, 0x95, 0x8F, 0x43, 0xE6, 0x95, 0x96, 0x43,\n\t0xE6, 0x95, 0xAC, 0x43, 0xE6, 0x95, 0xB8, 0x43,\n\t0xE6, 0x96, 0x87, 0x43, 0xE6, 0x96, 0x97, 0x43,\n\t0xE6, 0x96, 0x99, 0x43, 0xE6, 0x96, 0xA4, 0x43,\n\t0xE6, 0x96, 0xB0, 0x43, 0xE6, 0x96, 0xB9, 0x43,\n\t// Bytes cc0 - cff\n\t0xE6, 0x97, 0x85, 0x43, 0xE6, 0x97, 0xA0, 0x43,\n\t0xE6, 0x97, 0xA2, 0x43, 0xE6, 0x97, 0xA3, 0x43,\n\t0xE6, 0x97, 0xA5, 0x43, 0xE6, 0x98, 0x93, 0x43,\n\t0xE6, 0x98, 0xA0, 0x43, 0xE6, 0x99, 0x89, 0x43,\n\t0xE6, 0x99, 0xB4, 0x43, 0xE6, 0x9A, 0x88, 0x43,\n\t0xE6, 0x9A, 0x91, 0x43, 0xE6, 0x9A, 0x9C, 0x43,\n\t0xE6, 0x9A, 0xB4, 0x43, 0xE6, 0x9B, 0x86, 0x43,\n\t0xE6, 0x9B, 0xB0, 0x43, 0xE6, 0x9B, 0xB4, 0x43,\n\t// Bytes d00 - d3f\n\t0xE6, 0x9B, 0xB8, 0x43, 0xE6, 0x9C, 0x80, 0x43,\n\t0xE6, 0x9C, 0x88, 0x43, 0xE6, 0x9C, 0x89, 0x43,\n\t0xE6, 0x9C, 0x97, 0x43, 0xE6, 0x9C, 0x9B, 0x43,\n\t0xE6, 0x9C, 0xA1, 0x43, 0xE6, 0x9C, 0xA8, 0x43,\n\t0xE6, 0x9D, 0x8E, 0x43, 0xE6, 0x9D, 0x93, 0x43,\n\t0xE6, 0x9D, 0x96, 0x43, 0xE6, 0x9D, 0x9E, 0x43,\n\t0xE6, 0x9D, 0xBB, 0x43, 0xE6, 0x9E, 0x85, 0x43,\n\t0xE6, 0x9E, 0x97, 0x43, 0xE6, 0x9F, 0xB3, 0x43,\n\t// Bytes d40 - d7f\n\t0xE6, 0x9F, 0xBA, 0x43, 0xE6, 0xA0, 0x97, 0x43,\n\t0xE6, 0xA0, 0x9F, 0x43, 0xE6, 0xA0, 0xAA, 0x43,\n\t0xE6, 0xA1, 0x92, 0x43, 0xE6, 0xA2, 0x81, 0x43,\n\t0xE6, 0xA2, 0x85, 0x43, 0xE6, 0xA2, 0x8E, 0x43,\n\t0xE6, 0xA2, 0xA8, 0x43, 0xE6, 0xA4, 0x94, 0x43,\n\t0xE6, 0xA5, 0x82, 0x43, 0xE6, 0xA6, 0xA3, 0x43,\n\t0xE6, 0xA7, 0xAA, 0x43, 0xE6, 0xA8, 0x82, 0x43,\n\t0xE6, 0xA8, 0x93, 0x43, 0xE6, 0xAA, 0xA8, 0x43,\n\t// Bytes d80 - dbf\n\t0xE6, 0xAB, 0x93, 0x43, 0xE6, 0xAB, 0x9B, 0x43,\n\t0xE6, 0xAC, 0x84, 0x43, 0xE6, 0xAC, 0xA0, 0x43,\n\t0xE6, 0xAC, 0xA1, 0x43, 0xE6, 0xAD, 0x94, 0x43,\n\t0xE6, 0xAD, 0xA2, 0x43, 0xE6, 0xAD, 0xA3, 0x43,\n\t0xE6, 0xAD, 0xB2, 0x43, 0xE6, 0xAD, 0xB7, 0x43,\n\t0xE6, 0xAD, 0xB9, 0x43, 0xE6, 0xAE, 0x9F, 0x43,\n\t0xE6, 0xAE, 0xAE, 0x43, 0xE6, 0xAE, 0xB3, 0x43,\n\t0xE6, 0xAE, 0xBA, 0x43, 0xE6, 0xAE, 0xBB, 0x43,\n\t// Bytes dc0 - dff\n\t0xE6, 0xAF, 0x8B, 0x43, 0xE6, 0xAF, 0x8D, 0x43,\n\t0xE6, 0xAF, 0x94, 0x43, 0xE6, 0xAF, 0x9B, 0x43,\n\t0xE6, 0xB0, 0x8F, 0x43, 0xE6, 0xB0, 0x94, 0x43,\n\t0xE6, 0xB0, 0xB4, 0x43, 0xE6, 0xB1, 0x8E, 0x43,\n\t0xE6, 0xB1, 0xA7, 0x43, 0xE6, 0xB2, 0x88, 0x43,\n\t0xE6, 0xB2, 0xBF, 0x43, 0xE6, 0xB3, 0x8C, 0x43,\n\t0xE6, 0xB3, 0x8D, 0x43, 0xE6, 0xB3, 0xA5, 0x43,\n\t0xE6, 0xB3, 0xA8, 0x43, 0xE6, 0xB4, 0x96, 0x43,\n\t// Bytes e00 - e3f\n\t0xE6, 0xB4, 0x9B, 0x43, 0xE6, 0xB4, 0x9E, 0x43,\n\t0xE6, 0xB4, 0xB4, 0x43, 0xE6, 0xB4, 0xBE, 0x43,\n\t0xE6, 0xB5, 0x81, 0x43, 0xE6, 0xB5, 0xA9, 0x43,\n\t0xE6, 0xB5, 0xAA, 0x43, 0xE6, 0xB5, 0xB7, 0x43,\n\t0xE6, 0xB5, 0xB8, 0x43, 0xE6, 0xB6, 0x85, 0x43,\n\t0xE6, 0xB7, 0x8B, 0x43, 0xE6, 0xB7, 0x9A, 0x43,\n\t0xE6, 0xB7, 0xAA, 0x43, 0xE6, 0xB7, 0xB9, 0x43,\n\t0xE6, 0xB8, 0x9A, 0x43, 0xE6, 0xB8, 0xAF, 0x43,\n\t// Bytes e40 - e7f\n\t0xE6, 0xB9, 0xAE, 0x43, 0xE6, 0xBA, 0x80, 0x43,\n\t0xE6, 0xBA, 0x9C, 0x43, 0xE6, 0xBA, 0xBA, 0x43,\n\t0xE6, 0xBB, 0x87, 0x43, 0xE6, 0xBB, 0x8B, 0x43,\n\t0xE6, 0xBB, 0x91, 0x43, 0xE6, 0xBB, 0x9B, 0x43,\n\t0xE6, 0xBC, 0x8F, 0x43, 0xE6, 0xBC, 0x94, 0x43,\n\t0xE6, 0xBC, 0xA2, 0x43, 0xE6, 0xBC, 0xA3, 0x43,\n\t0xE6, 0xBD, 0xAE, 0x43, 0xE6, 0xBF, 0x86, 0x43,\n\t0xE6, 0xBF, 0xAB, 0x43, 0xE6, 0xBF, 0xBE, 0x43,\n\t// Bytes e80 - ebf\n\t0xE7, 0x80, 0x9B, 0x43, 0xE7, 0x80, 0x9E, 0x43,\n\t0xE7, 0x80, 0xB9, 0x43, 0xE7, 0x81, 0x8A, 0x43,\n\t0xE7, 0x81, 0xAB, 0x43, 0xE7, 0x81, 0xB0, 0x43,\n\t0xE7, 0x81, 0xB7, 0x43, 0xE7, 0x81, 0xBD, 0x43,\n\t0xE7, 0x82, 0x99, 0x43, 0xE7, 0x82, 0xAD, 0x43,\n\t0xE7, 0x83, 0x88, 0x43, 0xE7, 0x83, 0x99, 0x43,\n\t0xE7, 0x84, 0xA1, 0x43, 0xE7, 0x85, 0x85, 0x43,\n\t0xE7, 0x85, 0x89, 0x43, 0xE7, 0x85, 0xAE, 0x43,\n\t// Bytes ec0 - eff\n\t0xE7, 0x86, 0x9C, 0x43, 0xE7, 0x87, 0x8E, 0x43,\n\t0xE7, 0x87, 0x90, 0x43, 0xE7, 0x88, 0x90, 0x43,\n\t0xE7, 0x88, 0x9B, 0x43, 0xE7, 0x88, 0xA8, 0x43,\n\t0xE7, 0x88, 0xAA, 0x43, 0xE7, 0x88, 0xAB, 0x43,\n\t0xE7, 0x88, 0xB5, 0x43, 0xE7, 0x88, 0xB6, 0x43,\n\t0xE7, 0x88, 0xBB, 0x43, 0xE7, 0x88, 0xBF, 0x43,\n\t0xE7, 0x89, 0x87, 0x43, 0xE7, 0x89, 0x90, 0x43,\n\t0xE7, 0x89, 0x99, 0x43, 0xE7, 0x89, 0x9B, 0x43,\n\t// Bytes f00 - f3f\n\t0xE7, 0x89, 0xA2, 0x43, 0xE7, 0x89, 0xB9, 0x43,\n\t0xE7, 0x8A, 0x80, 0x43, 0xE7, 0x8A, 0x95, 0x43,\n\t0xE7, 0x8A, 0xAC, 0x43, 0xE7, 0x8A, 0xAF, 0x43,\n\t0xE7, 0x8B, 0x80, 0x43, 0xE7, 0x8B, 0xBC, 0x43,\n\t0xE7, 0x8C, 0xAA, 0x43, 0xE7, 0x8D, 0xB5, 0x43,\n\t0xE7, 0x8D, 0xBA, 0x43, 0xE7, 0x8E, 0x84, 0x43,\n\t0xE7, 0x8E, 0x87, 0x43, 0xE7, 0x8E, 0x89, 0x43,\n\t0xE7, 0x8E, 0x8B, 0x43, 0xE7, 0x8E, 0xA5, 0x43,\n\t// Bytes f40 - f7f\n\t0xE7, 0x8E, 0xB2, 0x43, 0xE7, 0x8F, 0x9E, 0x43,\n\t0xE7, 0x90, 0x86, 0x43, 0xE7, 0x90, 0x89, 0x43,\n\t0xE7, 0x90, 0xA2, 0x43, 0xE7, 0x91, 0x87, 0x43,\n\t0xE7, 0x91, 0x9C, 0x43, 0xE7, 0x91, 0xA9, 0x43,\n\t0xE7, 0x91, 0xB1, 0x43, 0xE7, 0x92, 0x85, 0x43,\n\t0xE7, 0x92, 0x89, 0x43, 0xE7, 0x92, 0x98, 0x43,\n\t0xE7, 0x93, 0x8A, 0x43, 0xE7, 0x93, 0x9C, 0x43,\n\t0xE7, 0x93, 0xA6, 0x43, 0xE7, 0x94, 0x86, 0x43,\n\t// Bytes f80 - fbf\n\t0xE7, 0x94, 0x98, 0x43, 0xE7, 0x94, 0x9F, 0x43,\n\t0xE7, 0x94, 0xA4, 0x43, 0xE7, 0x94, 0xA8, 0x43,\n\t0xE7, 0x94, 0xB0, 0x43, 0xE7, 0x94, 0xB2, 0x43,\n\t0xE7, 0x94, 0xB3, 0x43, 0xE7, 0x94, 0xB7, 0x43,\n\t0xE7, 0x94, 0xBB, 0x43, 0xE7, 0x94, 0xBE, 0x43,\n\t0xE7, 0x95, 0x99, 0x43, 0xE7, 0x95, 0xA5, 0x43,\n\t0xE7, 0x95, 0xB0, 0x43, 0xE7, 0x96, 0x8B, 0x43,\n\t0xE7, 0x96, 0x92, 0x43, 0xE7, 0x97, 0xA2, 0x43,\n\t// Bytes fc0 - fff\n\t0xE7, 0x98, 0x90, 0x43, 0xE7, 0x98, 0x9D, 0x43,\n\t0xE7, 0x98, 0x9F, 0x43, 0xE7, 0x99, 0x82, 0x43,\n\t0xE7, 0x99, 0xA9, 0x43, 0xE7, 0x99, 0xB6, 0x43,\n\t0xE7, 0x99, 0xBD, 0x43, 0xE7, 0x9A, 0xAE, 0x43,\n\t0xE7, 0x9A, 0xBF, 0x43, 0xE7, 0x9B, 0x8A, 0x43,\n\t0xE7, 0x9B, 0x9B, 0x43, 0xE7, 0x9B, 0xA3, 0x43,\n\t0xE7, 0x9B, 0xA7, 0x43, 0xE7, 0x9B, 0xAE, 0x43,\n\t0xE7, 0x9B, 0xB4, 0x43, 0xE7, 0x9C, 0x81, 0x43,\n\t// Bytes 1000 - 103f\n\t0xE7, 0x9C, 0x9E, 0x43, 0xE7, 0x9C, 0x9F, 0x43,\n\t0xE7, 0x9D, 0x80, 0x43, 0xE7, 0x9D, 0x8A, 0x43,\n\t0xE7, 0x9E, 0x8B, 0x43, 0xE7, 0x9E, 0xA7, 0x43,\n\t0xE7, 0x9F, 0x9B, 0x43, 0xE7, 0x9F, 0xA2, 0x43,\n\t0xE7, 0x9F, 0xB3, 0x43, 0xE7, 0xA1, 0x8E, 0x43,\n\t0xE7, 0xA1, 0xAB, 0x43, 0xE7, 0xA2, 0x8C, 0x43,\n\t0xE7, 0xA2, 0x91, 0x43, 0xE7, 0xA3, 0x8A, 0x43,\n\t0xE7, 0xA3, 0x8C, 0x43, 0xE7, 0xA3, 0xBB, 0x43,\n\t// Bytes 1040 - 107f\n\t0xE7, 0xA4, 0xAA, 0x43, 0xE7, 0xA4, 0xBA, 0x43,\n\t0xE7, 0xA4, 0xBC, 0x43, 0xE7, 0xA4, 0xBE, 0x43,\n\t0xE7, 0xA5, 0x88, 0x43, 0xE7, 0xA5, 0x89, 0x43,\n\t0xE7, 0xA5, 0x90, 0x43, 0xE7, 0xA5, 0x96, 0x43,\n\t0xE7, 0xA5, 0x9D, 0x43, 0xE7, 0xA5, 0x9E, 0x43,\n\t0xE7, 0xA5, 0xA5, 0x43, 0xE7, 0xA5, 0xBF, 0x43,\n\t0xE7, 0xA6, 0x81, 0x43, 0xE7, 0xA6, 0x8D, 0x43,\n\t0xE7, 0xA6, 0x8E, 0x43, 0xE7, 0xA6, 0x8F, 0x43,\n\t// Bytes 1080 - 10bf\n\t0xE7, 0xA6, 0xAE, 0x43, 0xE7, 0xA6, 0xB8, 0x43,\n\t0xE7, 0xA6, 0xBE, 0x43, 0xE7, 0xA7, 0x8A, 0x43,\n\t0xE7, 0xA7, 0x98, 0x43, 0xE7, 0xA7, 0xAB, 0x43,\n\t0xE7, 0xA8, 0x9C, 0x43, 0xE7, 0xA9, 0x80, 0x43,\n\t0xE7, 0xA9, 0x8A, 0x43, 0xE7, 0xA9, 0x8F, 0x43,\n\t0xE7, 0xA9, 0xB4, 0x43, 0xE7, 0xA9, 0xBA, 0x43,\n\t0xE7, 0xAA, 0x81, 0x43, 0xE7, 0xAA, 0xB1, 0x43,\n\t0xE7, 0xAB, 0x8B, 0x43, 0xE7, 0xAB, 0xAE, 0x43,\n\t// Bytes 10c0 - 10ff\n\t0xE7, 0xAB, 0xB9, 0x43, 0xE7, 0xAC, 0xA0, 0x43,\n\t0xE7, 0xAE, 0x8F, 0x43, 0xE7, 0xAF, 0x80, 0x43,\n\t0xE7, 0xAF, 0x86, 0x43, 0xE7, 0xAF, 0x89, 0x43,\n\t0xE7, 0xB0, 0xBE, 0x43, 0xE7, 0xB1, 0xA0, 0x43,\n\t0xE7, 0xB1, 0xB3, 0x43, 0xE7, 0xB1, 0xBB, 0x43,\n\t0xE7, 0xB2, 0x92, 0x43, 0xE7, 0xB2, 0xBE, 0x43,\n\t0xE7, 0xB3, 0x92, 0x43, 0xE7, 0xB3, 0x96, 0x43,\n\t0xE7, 0xB3, 0xA3, 0x43, 0xE7, 0xB3, 0xA7, 0x43,\n\t// Bytes 1100 - 113f\n\t0xE7, 0xB3, 0xA8, 0x43, 0xE7, 0xB3, 0xB8, 0x43,\n\t0xE7, 0xB4, 0x80, 0x43, 0xE7, 0xB4, 0x90, 0x43,\n\t0xE7, 0xB4, 0xA2, 0x43, 0xE7, 0xB4, 0xAF, 0x43,\n\t0xE7, 0xB5, 0x82, 0x43, 0xE7, 0xB5, 0x9B, 0x43,\n\t0xE7, 0xB5, 0xA3, 0x43, 0xE7, 0xB6, 0xA0, 0x43,\n\t0xE7, 0xB6, 0xBE, 0x43, 0xE7, 0xB7, 0x87, 0x43,\n\t0xE7, 0xB7, 0xB4, 0x43, 0xE7, 0xB8, 0x82, 0x43,\n\t0xE7, 0xB8, 0x89, 0x43, 0xE7, 0xB8, 0xB7, 0x43,\n\t// Bytes 1140 - 117f\n\t0xE7, 0xB9, 0x81, 0x43, 0xE7, 0xB9, 0x85, 0x43,\n\t0xE7, 0xBC, 0xB6, 0x43, 0xE7, 0xBC, 0xBE, 0x43,\n\t0xE7, 0xBD, 0x91, 0x43, 0xE7, 0xBD, 0xB2, 0x43,\n\t0xE7, 0xBD, 0xB9, 0x43, 0xE7, 0xBD, 0xBA, 0x43,\n\t0xE7, 0xBE, 0x85, 0x43, 0xE7, 0xBE, 0x8A, 0x43,\n\t0xE7, 0xBE, 0x95, 0x43, 0xE7, 0xBE, 0x9A, 0x43,\n\t0xE7, 0xBE, 0xBD, 0x43, 0xE7, 0xBF, 0xBA, 0x43,\n\t0xE8, 0x80, 0x81, 0x43, 0xE8, 0x80, 0x85, 0x43,\n\t// Bytes 1180 - 11bf\n\t0xE8, 0x80, 0x8C, 0x43, 0xE8, 0x80, 0x92, 0x43,\n\t0xE8, 0x80, 0xB3, 0x43, 0xE8, 0x81, 0x86, 0x43,\n\t0xE8, 0x81, 0xA0, 0x43, 0xE8, 0x81, 0xAF, 0x43,\n\t0xE8, 0x81, 0xB0, 0x43, 0xE8, 0x81, 0xBE, 0x43,\n\t0xE8, 0x81, 0xBF, 0x43, 0xE8, 0x82, 0x89, 0x43,\n\t0xE8, 0x82, 0x8B, 0x43, 0xE8, 0x82, 0xAD, 0x43,\n\t0xE8, 0x82, 0xB2, 0x43, 0xE8, 0x84, 0x83, 0x43,\n\t0xE8, 0x84, 0xBE, 0x43, 0xE8, 0x87, 0x98, 0x43,\n\t// Bytes 11c0 - 11ff\n\t0xE8, 0x87, 0xA3, 0x43, 0xE8, 0x87, 0xA8, 0x43,\n\t0xE8, 0x87, 0xAA, 0x43, 0xE8, 0x87, 0xAD, 0x43,\n\t0xE8, 0x87, 0xB3, 0x43, 0xE8, 0x87, 0xBC, 0x43,\n\t0xE8, 0x88, 0x81, 0x43, 0xE8, 0x88, 0x84, 0x43,\n\t0xE8, 0x88, 0x8C, 0x43, 0xE8, 0x88, 0x98, 0x43,\n\t0xE8, 0x88, 0x9B, 0x43, 0xE8, 0x88, 0x9F, 0x43,\n\t0xE8, 0x89, 0xAE, 0x43, 0xE8, 0x89, 0xAF, 0x43,\n\t0xE8, 0x89, 0xB2, 0x43, 0xE8, 0x89, 0xB8, 0x43,\n\t// Bytes 1200 - 123f\n\t0xE8, 0x89, 0xB9, 0x43, 0xE8, 0x8A, 0x8B, 0x43,\n\t0xE8, 0x8A, 0x91, 0x43, 0xE8, 0x8A, 0x9D, 0x43,\n\t0xE8, 0x8A, 0xB1, 0x43, 0xE8, 0x8A, 0xB3, 0x43,\n\t0xE8, 0x8A, 0xBD, 0x43, 0xE8, 0x8B, 0xA5, 0x43,\n\t0xE8, 0x8B, 0xA6, 0x43, 0xE8, 0x8C, 0x9D, 0x43,\n\t0xE8, 0x8C, 0xA3, 0x43, 0xE8, 0x8C, 0xB6, 0x43,\n\t0xE8, 0x8D, 0x92, 0x43, 0xE8, 0x8D, 0x93, 0x43,\n\t0xE8, 0x8D, 0xA3, 0x43, 0xE8, 0x8E, 0xAD, 0x43,\n\t// Bytes 1240 - 127f\n\t0xE8, 0x8E, 0xBD, 0x43, 0xE8, 0x8F, 0x89, 0x43,\n\t0xE8, 0x8F, 0x8A, 0x43, 0xE8, 0x8F, 0x8C, 0x43,\n\t0xE8, 0x8F, 0x9C, 0x43, 0xE8, 0x8F, 0xA7, 0x43,\n\t0xE8, 0x8F, 0xAF, 0x43, 0xE8, 0x8F, 0xB1, 0x43,\n\t0xE8, 0x90, 0xBD, 0x43, 0xE8, 0x91, 0x89, 0x43,\n\t0xE8, 0x91, 0x97, 0x43, 0xE8, 0x93, 0xAE, 0x43,\n\t0xE8, 0x93, 0xB1, 0x43, 0xE8, 0x93, 0xB3, 0x43,\n\t0xE8, 0x93, 0xBC, 0x43, 0xE8, 0x94, 0x96, 0x43,\n\t// Bytes 1280 - 12bf\n\t0xE8, 0x95, 0xA4, 0x43, 0xE8, 0x97, 0x8D, 0x43,\n\t0xE8, 0x97, 0xBA, 0x43, 0xE8, 0x98, 0x86, 0x43,\n\t0xE8, 0x98, 0x92, 0x43, 0xE8, 0x98, 0xAD, 0x43,\n\t0xE8, 0x98, 0xBF, 0x43, 0xE8, 0x99, 0x8D, 0x43,\n\t0xE8, 0x99, 0x90, 0x43, 0xE8, 0x99, 0x9C, 0x43,\n\t0xE8, 0x99, 0xA7, 0x43, 0xE8, 0x99, 0xA9, 0x43,\n\t0xE8, 0x99, 0xAB, 0x43, 0xE8, 0x9A, 0x88, 0x43,\n\t0xE8, 0x9A, 0xA9, 0x43, 0xE8, 0x9B, 0xA2, 0x43,\n\t// Bytes 12c0 - 12ff\n\t0xE8, 0x9C, 0x8E, 0x43, 0xE8, 0x9C, 0xA8, 0x43,\n\t0xE8, 0x9D, 0xAB, 0x43, 0xE8, 0x9D, 0xB9, 0x43,\n\t0xE8, 0x9E, 0x86, 0x43, 0xE8, 0x9E, 0xBA, 0x43,\n\t0xE8, 0x9F, 0xA1, 0x43, 0xE8, 0xA0, 0x81, 0x43,\n\t0xE8, 0xA0, 0x9F, 0x43, 0xE8, 0xA1, 0x80, 0x43,\n\t0xE8, 0xA1, 0x8C, 0x43, 0xE8, 0xA1, 0xA0, 0x43,\n\t0xE8, 0xA1, 0xA3, 0x43, 0xE8, 0xA3, 0x82, 0x43,\n\t0xE8, 0xA3, 0x8F, 0x43, 0xE8, 0xA3, 0x97, 0x43,\n\t// Bytes 1300 - 133f\n\t0xE8, 0xA3, 0x9E, 0x43, 0xE8, 0xA3, 0xA1, 0x43,\n\t0xE8, 0xA3, 0xB8, 0x43, 0xE8, 0xA3, 0xBA, 0x43,\n\t0xE8, 0xA4, 0x90, 0x43, 0xE8, 0xA5, 0x81, 0x43,\n\t0xE8, 0xA5, 0xA4, 0x43, 0xE8, 0xA5, 0xBE, 0x43,\n\t0xE8, 0xA6, 0x86, 0x43, 0xE8, 0xA6, 0x8B, 0x43,\n\t0xE8, 0xA6, 0x96, 0x43, 0xE8, 0xA7, 0x92, 0x43,\n\t0xE8, 0xA7, 0xA3, 0x43, 0xE8, 0xA8, 0x80, 0x43,\n\t0xE8, 0xAA, 0xA0, 0x43, 0xE8, 0xAA, 0xAA, 0x43,\n\t// Bytes 1340 - 137f\n\t0xE8, 0xAA, 0xBF, 0x43, 0xE8, 0xAB, 0x8B, 0x43,\n\t0xE8, 0xAB, 0x92, 0x43, 0xE8, 0xAB, 0x96, 0x43,\n\t0xE8, 0xAB, 0xAD, 0x43, 0xE8, 0xAB, 0xB8, 0x43,\n\t0xE8, 0xAB, 0xBE, 0x43, 0xE8, 0xAC, 0x81, 0x43,\n\t0xE8, 0xAC, 0xB9, 0x43, 0xE8, 0xAD, 0x98, 0x43,\n\t0xE8, 0xAE, 0x80, 0x43, 0xE8, 0xAE, 0x8A, 0x43,\n\t0xE8, 0xB0, 0xB7, 0x43, 0xE8, 0xB1, 0x86, 0x43,\n\t0xE8, 0xB1, 0x88, 0x43, 0xE8, 0xB1, 0x95, 0x43,\n\t// Bytes 1380 - 13bf\n\t0xE8, 0xB1, 0xB8, 0x43, 0xE8, 0xB2, 0x9D, 0x43,\n\t0xE8, 0xB2, 0xA1, 0x43, 0xE8, 0xB2, 0xA9, 0x43,\n\t0xE8, 0xB2, 0xAB, 0x43, 0xE8, 0xB3, 0x81, 0x43,\n\t0xE8, 0xB3, 0x82, 0x43, 0xE8, 0xB3, 0x87, 0x43,\n\t0xE8, 0xB3, 0x88, 0x43, 0xE8, 0xB3, 0x93, 0x43,\n\t0xE8, 0xB4, 0x88, 0x43, 0xE8, 0xB4, 0x9B, 0x43,\n\t0xE8, 0xB5, 0xA4, 0x43, 0xE8, 0xB5, 0xB0, 0x43,\n\t0xE8, 0xB5, 0xB7, 0x43, 0xE8, 0xB6, 0xB3, 0x43,\n\t// Bytes 13c0 - 13ff\n\t0xE8, 0xB6, 0xBC, 0x43, 0xE8, 0xB7, 0x8B, 0x43,\n\t0xE8, 0xB7, 0xAF, 0x43, 0xE8, 0xB7, 0xB0, 0x43,\n\t0xE8, 0xBA, 0xAB, 0x43, 0xE8, 0xBB, 0x8A, 0x43,\n\t0xE8, 0xBB, 0x94, 0x43, 0xE8, 0xBC, 0xA6, 0x43,\n\t0xE8, 0xBC, 0xAA, 0x43, 0xE8, 0xBC, 0xB8, 0x43,\n\t0xE8, 0xBC, 0xBB, 0x43, 0xE8, 0xBD, 0xA2, 0x43,\n\t0xE8, 0xBE, 0x9B, 0x43, 0xE8, 0xBE, 0x9E, 0x43,\n\t0xE8, 0xBE, 0xB0, 0x43, 0xE8, 0xBE, 0xB5, 0x43,\n\t// Bytes 1400 - 143f\n\t0xE8, 0xBE, 0xB6, 0x43, 0xE9, 0x80, 0xA3, 0x43,\n\t0xE9, 0x80, 0xB8, 0x43, 0xE9, 0x81, 0x8A, 0x43,\n\t0xE9, 0x81, 0xA9, 0x43, 0xE9, 0x81, 0xB2, 0x43,\n\t0xE9, 0x81, 0xBC, 0x43, 0xE9, 0x82, 0x8F, 0x43,\n\t0xE9, 0x82, 0x91, 0x43, 0xE9, 0x82, 0x94, 0x43,\n\t0xE9, 0x83, 0x8E, 0x43, 0xE9, 0x83, 0x9E, 0x43,\n\t0xE9, 0x83, 0xB1, 0x43, 0xE9, 0x83, 0xBD, 0x43,\n\t0xE9, 0x84, 0x91, 0x43, 0xE9, 0x84, 0x9B, 0x43,\n\t// Bytes 1440 - 147f\n\t0xE9, 0x85, 0x89, 0x43, 0xE9, 0x85, 0x8D, 0x43,\n\t0xE9, 0x85, 0xAA, 0x43, 0xE9, 0x86, 0x99, 0x43,\n\t0xE9, 0x86, 0xB4, 0x43, 0xE9, 0x87, 0x86, 0x43,\n\t0xE9, 0x87, 0x8C, 0x43, 0xE9, 0x87, 0x8F, 0x43,\n\t0xE9, 0x87, 0x91, 0x43, 0xE9, 0x88, 0xB4, 0x43,\n\t0xE9, 0x88, 0xB8, 0x43, 0xE9, 0x89, 0xB6, 0x43,\n\t0xE9, 0x89, 0xBC, 0x43, 0xE9, 0x8B, 0x97, 0x43,\n\t0xE9, 0x8B, 0x98, 0x43, 0xE9, 0x8C, 0x84, 0x43,\n\t// Bytes 1480 - 14bf\n\t0xE9, 0x8D, 0x8A, 0x43, 0xE9, 0x8F, 0xB9, 0x43,\n\t0xE9, 0x90, 0x95, 0x43, 0xE9, 0x95, 0xB7, 0x43,\n\t0xE9, 0x96, 0x80, 0x43, 0xE9, 0x96, 0x8B, 0x43,\n\t0xE9, 0x96, 0xAD, 0x43, 0xE9, 0x96, 0xB7, 0x43,\n\t0xE9, 0x98, 0x9C, 0x43, 0xE9, 0x98, 0xAE, 0x43,\n\t0xE9, 0x99, 0x8B, 0x43, 0xE9, 0x99, 0x8D, 0x43,\n\t0xE9, 0x99, 0xB5, 0x43, 0xE9, 0x99, 0xB8, 0x43,\n\t0xE9, 0x99, 0xBC, 0x43, 0xE9, 0x9A, 0x86, 0x43,\n\t// Bytes 14c0 - 14ff\n\t0xE9, 0x9A, 0xA3, 0x43, 0xE9, 0x9A, 0xB6, 0x43,\n\t0xE9, 0x9A, 0xB7, 0x43, 0xE9, 0x9A, 0xB8, 0x43,\n\t0xE9, 0x9A, 0xB9, 0x43, 0xE9, 0x9B, 0x83, 0x43,\n\t0xE9, 0x9B, 0xA2, 0x43, 0xE9, 0x9B, 0xA3, 0x43,\n\t0xE9, 0x9B, 0xA8, 0x43, 0xE9, 0x9B, 0xB6, 0x43,\n\t0xE9, 0x9B, 0xB7, 0x43, 0xE9, 0x9C, 0xA3, 0x43,\n\t0xE9, 0x9C, 0xB2, 0x43, 0xE9, 0x9D, 0x88, 0x43,\n\t0xE9, 0x9D, 0x91, 0x43, 0xE9, 0x9D, 0x96, 0x43,\n\t// Bytes 1500 - 153f\n\t0xE9, 0x9D, 0x9E, 0x43, 0xE9, 0x9D, 0xA2, 0x43,\n\t0xE9, 0x9D, 0xA9, 0x43, 0xE9, 0x9F, 0x8B, 0x43,\n\t0xE9, 0x9F, 0x9B, 0x43, 0xE9, 0x9F, 0xA0, 0x43,\n\t0xE9, 0x9F, 0xAD, 0x43, 0xE9, 0x9F, 0xB3, 0x43,\n\t0xE9, 0x9F, 0xBF, 0x43, 0xE9, 0xA0, 0x81, 0x43,\n\t0xE9, 0xA0, 0x85, 0x43, 0xE9, 0xA0, 0x8B, 0x43,\n\t0xE9, 0xA0, 0x98, 0x43, 0xE9, 0xA0, 0xA9, 0x43,\n\t0xE9, 0xA0, 0xBB, 0x43, 0xE9, 0xA1, 0x9E, 0x43,\n\t// Bytes 1540 - 157f\n\t0xE9, 0xA2, 0xA8, 0x43, 0xE9, 0xA3, 0x9B, 0x43,\n\t0xE9, 0xA3, 0x9F, 0x43, 0xE9, 0xA3, 0xA2, 0x43,\n\t0xE9, 0xA3, 0xAF, 0x43, 0xE9, 0xA3, 0xBC, 0x43,\n\t0xE9, 0xA4, 0xA8, 0x43, 0xE9, 0xA4, 0xA9, 0x43,\n\t0xE9, 0xA6, 0x96, 0x43, 0xE9, 0xA6, 0x99, 0x43,\n\t0xE9, 0xA6, 0xA7, 0x43, 0xE9, 0xA6, 0xAC, 0x43,\n\t0xE9, 0xA7, 0x82, 0x43, 0xE9, 0xA7, 0xB1, 0x43,\n\t0xE9, 0xA7, 0xBE, 0x43, 0xE9, 0xA9, 0xAA, 0x43,\n\t// Bytes 1580 - 15bf\n\t0xE9, 0xAA, 0xA8, 0x43, 0xE9, 0xAB, 0x98, 0x43,\n\t0xE9, 0xAB, 0x9F, 0x43, 0xE9, 0xAC, 0x92, 0x43,\n\t0xE9, 0xAC, 0xA5, 0x43, 0xE9, 0xAC, 0xAF, 0x43,\n\t0xE9, 0xAC, 0xB2, 0x43, 0xE9, 0xAC, 0xBC, 0x43,\n\t0xE9, 0xAD, 0x9A, 0x43, 0xE9, 0xAD, 0xAF, 0x43,\n\t0xE9, 0xB1, 0x80, 0x43, 0xE9, 0xB1, 0x97, 0x43,\n\t0xE9, 0xB3, 0xA5, 0x43, 0xE9, 0xB3, 0xBD, 0x43,\n\t0xE9, 0xB5, 0xA7, 0x43, 0xE9, 0xB6, 0xB4, 0x43,\n\t// Bytes 15c0 - 15ff\n\t0xE9, 0xB7, 0xBA, 0x43, 0xE9, 0xB8, 0x9E, 0x43,\n\t0xE9, 0xB9, 0xB5, 0x43, 0xE9, 0xB9, 0xBF, 0x43,\n\t0xE9, 0xBA, 0x97, 0x43, 0xE9, 0xBA, 0x9F, 0x43,\n\t0xE9, 0xBA, 0xA5, 0x43, 0xE9, 0xBA, 0xBB, 0x43,\n\t0xE9, 0xBB, 0x83, 0x43, 0xE9, 0xBB, 0x8D, 0x43,\n\t0xE9, 0xBB, 0x8E, 0x43, 0xE9, 0xBB, 0x91, 0x43,\n\t0xE9, 0xBB, 0xB9, 0x43, 0xE9, 0xBB, 0xBD, 0x43,\n\t0xE9, 0xBB, 0xBE, 0x43, 0xE9, 0xBC, 0x85, 0x43,\n\t// Bytes 1600 - 163f\n\t0xE9, 0xBC, 0x8E, 0x43, 0xE9, 0xBC, 0x8F, 0x43,\n\t0xE9, 0xBC, 0x93, 0x43, 0xE9, 0xBC, 0x96, 0x43,\n\t0xE9, 0xBC, 0xA0, 0x43, 0xE9, 0xBC, 0xBB, 0x43,\n\t0xE9, 0xBD, 0x83, 0x43, 0xE9, 0xBD, 0x8A, 0x43,\n\t0xE9, 0xBD, 0x92, 0x43, 0xE9, 0xBE, 0x8D, 0x43,\n\t0xE9, 0xBE, 0x8E, 0x43, 0xE9, 0xBE, 0x9C, 0x43,\n\t0xE9, 0xBE, 0x9F, 0x43, 0xE9, 0xBE, 0xA0, 0x43,\n\t0xEA, 0x9C, 0xA7, 0x43, 0xEA, 0x9D, 0xAF, 0x43,\n\t// Bytes 1640 - 167f\n\t0xEA, 0xAC, 0xB7, 0x43, 0xEA, 0xAD, 0x92, 0x44,\n\t0xF0, 0xA0, 0x84, 0xA2, 0x44, 0xF0, 0xA0, 0x94,\n\t0x9C, 0x44, 0xF0, 0xA0, 0x94, 0xA5, 0x44, 0xF0,\n\t0xA0, 0x95, 0x8B, 0x44, 0xF0, 0xA0, 0x98, 0xBA,\n\t0x44, 0xF0, 0xA0, 0xA0, 0x84, 0x44, 0xF0, 0xA0,\n\t0xA3, 0x9E, 0x44, 0xF0, 0xA0, 0xA8, 0xAC, 0x44,\n\t0xF0, 0xA0, 0xAD, 0xA3, 0x44, 0xF0, 0xA1, 0x93,\n\t0xA4, 0x44, 0xF0, 0xA1, 0x9A, 0xA8, 0x44, 0xF0,\n\t// Bytes 1680 - 16bf\n\t0xA1, 0x9B, 0xAA, 0x44, 0xF0, 0xA1, 0xA7, 0x88,\n\t0x44, 0xF0, 0xA1, 0xAC, 0x98, 0x44, 0xF0, 0xA1,\n\t0xB4, 0x8B, 0x44, 0xF0, 0xA1, 0xB7, 0xA4, 0x44,\n\t0xF0, 0xA1, 0xB7, 0xA6, 0x44, 0xF0, 0xA2, 0x86,\n\t0x83, 0x44, 0xF0, 0xA2, 0x86, 0x9F, 0x44, 0xF0,\n\t0xA2, 0x8C, 0xB1, 0x44, 0xF0, 0xA2, 0x9B, 0x94,\n\t0x44, 0xF0, 0xA2, 0xA1, 0x84, 0x44, 0xF0, 0xA2,\n\t0xA1, 0x8A, 0x44, 0xF0, 0xA2, 0xAC, 0x8C, 0x44,\n\t// Bytes 16c0 - 16ff\n\t0xF0, 0xA2, 0xAF, 0xB1, 0x44, 0xF0, 0xA3, 0x80,\n\t0x8A, 0x44, 0xF0, 0xA3, 0x8A, 0xB8, 0x44, 0xF0,\n\t0xA3, 0x8D, 0x9F, 0x44, 0xF0, 0xA3, 0x8E, 0x93,\n\t0x44, 0xF0, 0xA3, 0x8E, 0x9C, 0x44, 0xF0, 0xA3,\n\t0x8F, 0x83, 0x44, 0xF0, 0xA3, 0x8F, 0x95, 0x44,\n\t0xF0, 0xA3, 0x91, 0xAD, 0x44, 0xF0, 0xA3, 0x9A,\n\t0xA3, 0x44, 0xF0, 0xA3, 0xA2, 0xA7, 0x44, 0xF0,\n\t0xA3, 0xAA, 0x8D, 0x44, 0xF0, 0xA3, 0xAB, 0xBA,\n\t// Bytes 1700 - 173f\n\t0x44, 0xF0, 0xA3, 0xB2, 0xBC, 0x44, 0xF0, 0xA3,\n\t0xB4, 0x9E, 0x44, 0xF0, 0xA3, 0xBB, 0x91, 0x44,\n\t0xF0, 0xA3, 0xBD, 0x9E, 0x44, 0xF0, 0xA3, 0xBE,\n\t0x8E, 0x44, 0xF0, 0xA4, 0x89, 0xA3, 0x44, 0xF0,\n\t0xA4, 0x8B, 0xAE, 0x44, 0xF0, 0xA4, 0x8E, 0xAB,\n\t0x44, 0xF0, 0xA4, 0x98, 0x88, 0x44, 0xF0, 0xA4,\n\t0x9C, 0xB5, 0x44, 0xF0, 0xA4, 0xA0, 0x94, 0x44,\n\t0xF0, 0xA4, 0xB0, 0xB6, 0x44, 0xF0, 0xA4, 0xB2,\n\t// Bytes 1740 - 177f\n\t0x92, 0x44, 0xF0, 0xA4, 0xBE, 0xA1, 0x44, 0xF0,\n\t0xA4, 0xBE, 0xB8, 0x44, 0xF0, 0xA5, 0x81, 0x84,\n\t0x44, 0xF0, 0xA5, 0x83, 0xB2, 0x44, 0xF0, 0xA5,\n\t0x83, 0xB3, 0x44, 0xF0, 0xA5, 0x84, 0x99, 0x44,\n\t0xF0, 0xA5, 0x84, 0xB3, 0x44, 0xF0, 0xA5, 0x89,\n\t0x89, 0x44, 0xF0, 0xA5, 0x90, 0x9D, 0x44, 0xF0,\n\t0xA5, 0x98, 0xA6, 0x44, 0xF0, 0xA5, 0x9A, 0x9A,\n\t0x44, 0xF0, 0xA5, 0x9B, 0x85, 0x44, 0xF0, 0xA5,\n\t// Bytes 1780 - 17bf\n\t0xA5, 0xBC, 0x44, 0xF0, 0xA5, 0xAA, 0xA7, 0x44,\n\t0xF0, 0xA5, 0xAE, 0xAB, 0x44, 0xF0, 0xA5, 0xB2,\n\t0x80, 0x44, 0xF0, 0xA5, 0xB3, 0x90, 0x44, 0xF0,\n\t0xA5, 0xBE, 0x86, 0x44, 0xF0, 0xA6, 0x87, 0x9A,\n\t0x44, 0xF0, 0xA6, 0x88, 0xA8, 0x44, 0xF0, 0xA6,\n\t0x89, 0x87, 0x44, 0xF0, 0xA6, 0x8B, 0x99, 0x44,\n\t0xF0, 0xA6, 0x8C, 0xBE, 0x44, 0xF0, 0xA6, 0x93,\n\t0x9A, 0x44, 0xF0, 0xA6, 0x94, 0xA3, 0x44, 0xF0,\n\t// Bytes 17c0 - 17ff\n\t0xA6, 0x96, 0xA8, 0x44, 0xF0, 0xA6, 0x9E, 0xA7,\n\t0x44, 0xF0, 0xA6, 0x9E, 0xB5, 0x44, 0xF0, 0xA6,\n\t0xAC, 0xBC, 0x44, 0xF0, 0xA6, 0xB0, 0xB6, 0x44,\n\t0xF0, 0xA6, 0xB3, 0x95, 0x44, 0xF0, 0xA6, 0xB5,\n\t0xAB, 0x44, 0xF0, 0xA6, 0xBC, 0xAC, 0x44, 0xF0,\n\t0xA6, 0xBE, 0xB1, 0x44, 0xF0, 0xA7, 0x83, 0x92,\n\t0x44, 0xF0, 0xA7, 0x8F, 0x8A, 0x44, 0xF0, 0xA7,\n\t0x99, 0xA7, 0x44, 0xF0, 0xA7, 0xA2, 0xAE, 0x44,\n\t// Bytes 1800 - 183f\n\t0xF0, 0xA7, 0xA5, 0xA6, 0x44, 0xF0, 0xA7, 0xB2,\n\t0xA8, 0x44, 0xF0, 0xA7, 0xBB, 0x93, 0x44, 0xF0,\n\t0xA7, 0xBC, 0xAF, 0x44, 0xF0, 0xA8, 0x97, 0x92,\n\t0x44, 0xF0, 0xA8, 0x97, 0xAD, 0x44, 0xF0, 0xA8,\n\t0x9C, 0xAE, 0x44, 0xF0, 0xA8, 0xAF, 0xBA, 0x44,\n\t0xF0, 0xA8, 0xB5, 0xB7, 0x44, 0xF0, 0xA9, 0x85,\n\t0x85, 0x44, 0xF0, 0xA9, 0x87, 0x9F, 0x44, 0xF0,\n\t0xA9, 0x88, 0x9A, 0x44, 0xF0, 0xA9, 0x90, 0x8A,\n\t// Bytes 1840 - 187f\n\t0x44, 0xF0, 0xA9, 0x92, 0x96, 0x44, 0xF0, 0xA9,\n\t0x96, 0xB6, 0x44, 0xF0, 0xA9, 0xAC, 0xB0, 0x44,\n\t0xF0, 0xAA, 0x83, 0x8E, 0x44, 0xF0, 0xAA, 0x84,\n\t0x85, 0x44, 0xF0, 0xAA, 0x88, 0x8E, 0x44, 0xF0,\n\t0xAA, 0x8A, 0x91, 0x44, 0xF0, 0xAA, 0x8E, 0x92,\n\t0x44, 0xF0, 0xAA, 0x98, 0x80, 0x42, 0x21, 0x21,\n\t0x42, 0x21, 0x3F, 0x42, 0x2E, 0x2E, 0x42, 0x30,\n\t0x2C, 0x42, 0x30, 0x2E, 0x42, 0x31, 0x2C, 0x42,\n\t// Bytes 1880 - 18bf\n\t0x31, 0x2E, 0x42, 0x31, 0x30, 0x42, 0x31, 0x31,\n\t0x42, 0x31, 0x32, 0x42, 0x31, 0x33, 0x42, 0x31,\n\t0x34, 0x42, 0x31, 0x35, 0x42, 0x31, 0x36, 0x42,\n\t0x31, 0x37, 0x42, 0x31, 0x38, 0x42, 0x31, 0x39,\n\t0x42, 0x32, 0x2C, 0x42, 0x32, 0x2E, 0x42, 0x32,\n\t0x30, 0x42, 0x32, 0x31, 0x42, 0x32, 0x32, 0x42,\n\t0x32, 0x33, 0x42, 0x32, 0x34, 0x42, 0x32, 0x35,\n\t0x42, 0x32, 0x36, 0x42, 0x32, 0x37, 0x42, 0x32,\n\t// Bytes 18c0 - 18ff\n\t0x38, 0x42, 0x32, 0x39, 0x42, 0x33, 0x2C, 0x42,\n\t0x33, 0x2E, 0x42, 0x33, 0x30, 0x42, 0x33, 0x31,\n\t0x42, 0x33, 0x32, 0x42, 0x33, 0x33, 0x42, 0x33,\n\t0x34, 0x42, 0x33, 0x35, 0x42, 0x33, 0x36, 0x42,\n\t0x33, 0x37, 0x42, 0x33, 0x38, 0x42, 0x33, 0x39,\n\t0x42, 0x34, 0x2C, 0x42, 0x34, 0x2E, 0x42, 0x34,\n\t0x30, 0x42, 0x34, 0x31, 0x42, 0x34, 0x32, 0x42,\n\t0x34, 0x33, 0x42, 0x34, 0x34, 0x42, 0x34, 0x35,\n\t// Bytes 1900 - 193f\n\t0x42, 0x34, 0x36, 0x42, 0x34, 0x37, 0x42, 0x34,\n\t0x38, 0x42, 0x34, 0x39, 0x42, 0x35, 0x2C, 0x42,\n\t0x35, 0x2E, 0x42, 0x35, 0x30, 0x42, 0x36, 0x2C,\n\t0x42, 0x36, 0x2E, 0x42, 0x37, 0x2C, 0x42, 0x37,\n\t0x2E, 0x42, 0x38, 0x2C, 0x42, 0x38, 0x2E, 0x42,\n\t0x39, 0x2C, 0x42, 0x39, 0x2E, 0x42, 0x3D, 0x3D,\n\t0x42, 0x3F, 0x21, 0x42, 0x3F, 0x3F, 0x42, 0x41,\n\t0x55, 0x42, 0x42, 0x71, 0x42, 0x43, 0x44, 0x42,\n\t// Bytes 1940 - 197f\n\t0x44, 0x4A, 0x42, 0x44, 0x5A, 0x42, 0x44, 0x7A,\n\t0x42, 0x47, 0x42, 0x42, 0x47, 0x79, 0x42, 0x48,\n\t0x50, 0x42, 0x48, 0x56, 0x42, 0x48, 0x67, 0x42,\n\t0x48, 0x7A, 0x42, 0x49, 0x49, 0x42, 0x49, 0x4A,\n\t0x42, 0x49, 0x55, 0x42, 0x49, 0x56, 0x42, 0x49,\n\t0x58, 0x42, 0x4B, 0x42, 0x42, 0x4B, 0x4B, 0x42,\n\t0x4B, 0x4D, 0x42, 0x4C, 0x4A, 0x42, 0x4C, 0x6A,\n\t0x42, 0x4D, 0x42, 0x42, 0x4D, 0x43, 0x42, 0x4D,\n\t// Bytes 1980 - 19bf\n\t0x44, 0x42, 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42,\n\t0x4E, 0x4A, 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F,\n\t0x42, 0x50, 0x48, 0x42, 0x50, 0x52, 0x42, 0x50,\n\t0x61, 0x42, 0x52, 0x73, 0x42, 0x53, 0x44, 0x42,\n\t0x53, 0x4D, 0x42, 0x53, 0x53, 0x42, 0x53, 0x76,\n\t0x42, 0x54, 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57,\n\t0x43, 0x42, 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42,\n\t0x58, 0x49, 0x42, 0x63, 0x63, 0x42, 0x63, 0x64,\n\t// Bytes 19c0 - 19ff\n\t0x42, 0x63, 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64,\n\t0x61, 0x42, 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42,\n\t0x64, 0x7A, 0x42, 0x65, 0x56, 0x42, 0x66, 0x66,\n\t0x42, 0x66, 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66,\n\t0x6D, 0x42, 0x68, 0x61, 0x42, 0x69, 0x69, 0x42,\n\t0x69, 0x6A, 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76,\n\t0x42, 0x69, 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B,\n\t0x56, 0x42, 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42,\n\t// Bytes 1a00 - 1a3f\n\t0x6B, 0x6C, 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74,\n\t0x42, 0x6C, 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C,\n\t0x6E, 0x42, 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42,\n\t0x6D, 0x33, 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56,\n\t0x42, 0x6D, 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D,\n\t0x67, 0x42, 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42,\n\t0x6D, 0x73, 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46,\n\t0x42, 0x6E, 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E,\n\t// Bytes 1a40 - 1a7f\n\t0x6A, 0x42, 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42,\n\t0x6F, 0x56, 0x42, 0x70, 0x41, 0x42, 0x70, 0x46,\n\t0x42, 0x70, 0x56, 0x42, 0x70, 0x57, 0x42, 0x70,\n\t0x63, 0x42, 0x70, 0x73, 0x42, 0x73, 0x72, 0x42,\n\t0x73, 0x74, 0x42, 0x76, 0x69, 0x42, 0x78, 0x69,\n\t0x43, 0x28, 0x31, 0x29, 0x43, 0x28, 0x32, 0x29,\n\t0x43, 0x28, 0x33, 0x29, 0x43, 0x28, 0x34, 0x29,\n\t0x43, 0x28, 0x35, 0x29, 0x43, 0x28, 0x36, 0x29,\n\t// Bytes 1a80 - 1abf\n\t0x43, 0x28, 0x37, 0x29, 0x43, 0x28, 0x38, 0x29,\n\t0x43, 0x28, 0x39, 0x29, 0x43, 0x28, 0x41, 0x29,\n\t0x43, 0x28, 0x42, 0x29, 0x43, 0x28, 0x43, 0x29,\n\t0x43, 0x28, 0x44, 0x29, 0x43, 0x28, 0x45, 0x29,\n\t0x43, 0x28, 0x46, 0x29, 0x43, 0x28, 0x47, 0x29,\n\t0x43, 0x28, 0x48, 0x29, 0x43, 0x28, 0x49, 0x29,\n\t0x43, 0x28, 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29,\n\t0x43, 0x28, 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29,\n\t// Bytes 1ac0 - 1aff\n\t0x43, 0x28, 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29,\n\t0x43, 0x28, 0x50, 0x29, 0x43, 0x28, 0x51, 0x29,\n\t0x43, 0x28, 0x52, 0x29, 0x43, 0x28, 0x53, 0x29,\n\t0x43, 0x28, 0x54, 0x29, 0x43, 0x28, 0x55, 0x29,\n\t0x43, 0x28, 0x56, 0x29, 0x43, 0x28, 0x57, 0x29,\n\t0x43, 0x28, 0x58, 0x29, 0x43, 0x28, 0x59, 0x29,\n\t0x43, 0x28, 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29,\n\t0x43, 0x28, 0x62, 0x29, 0x43, 0x28, 0x63, 0x29,\n\t// Bytes 1b00 - 1b3f\n\t0x43, 0x28, 0x64, 0x29, 0x43, 0x28, 0x65, 0x29,\n\t0x43, 0x28, 0x66, 0x29, 0x43, 0x28, 0x67, 0x29,\n\t0x43, 0x28, 0x68, 0x29, 0x43, 0x28, 0x69, 0x29,\n\t0x43, 0x28, 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29,\n\t0x43, 0x28, 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29,\n\t0x43, 0x28, 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29,\n\t0x43, 0x28, 0x70, 0x29, 0x43, 0x28, 0x71, 0x29,\n\t0x43, 0x28, 0x72, 0x29, 0x43, 0x28, 0x73, 0x29,\n\t// Bytes 1b40 - 1b7f\n\t0x43, 0x28, 0x74, 0x29, 0x43, 0x28, 0x75, 0x29,\n\t0x43, 0x28, 0x76, 0x29, 0x43, 0x28, 0x77, 0x29,\n\t0x43, 0x28, 0x78, 0x29, 0x43, 0x28, 0x79, 0x29,\n\t0x43, 0x28, 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E,\n\t0x43, 0x31, 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E,\n\t0x43, 0x31, 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E,\n\t0x43, 0x31, 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E,\n\t0x43, 0x31, 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E,\n\t// Bytes 1b80 - 1bbf\n\t0x43, 0x31, 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E,\n\t0x43, 0x32, 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D,\n\t0x43, 0x3D, 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E,\n\t0x43, 0x46, 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A,\n\t0x43, 0x47, 0x50, 0x61, 0x43, 0x49, 0x49, 0x49,\n\t0x43, 0x4C, 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7,\n\t0x43, 0x4D, 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61,\n\t0x43, 0x4D, 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D,\n\t// Bytes 1bc0 - 1bff\n\t0x43, 0x50, 0x50, 0x56, 0x43, 0x50, 0x54, 0x45,\n\t0x43, 0x54, 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A,\n\t0x43, 0x56, 0x49, 0x49, 0x43, 0x58, 0x49, 0x49,\n\t0x43, 0x61, 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73,\n\t0x43, 0x61, 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72,\n\t0x43, 0x63, 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75,\n\t0x43, 0x63, 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32,\n\t0x43, 0x63, 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32,\n\t// Bytes 1c00 - 1c3f\n\t0x43, 0x64, 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67,\n\t0x43, 0x66, 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C,\n\t0x43, 0x67, 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61,\n\t0x43, 0x69, 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A,\n\t0x43, 0x6B, 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32,\n\t0x43, 0x6B, 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9,\n\t0x43, 0x6C, 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7,\n\t0x43, 0x6D, 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32,\n\t// Bytes 1c40 - 1c7f\n\t0x43, 0x6D, 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C,\n\t0x43, 0x72, 0x61, 0x64, 0x43, 0x76, 0x69, 0x69,\n\t0x43, 0x78, 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43,\n\t0x43, 0xC2, 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E,\n\t0x43, 0xCE, 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46,\n\t0x43, 0xCE, 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57,\n\t0x43, 0xCE, 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C,\n\t0x43, 0xCE, 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73,\n\t// Bytes 1c80 - 1cbf\n\t0x44, 0x28, 0x31, 0x30, 0x29, 0x44, 0x28, 0x31,\n\t0x31, 0x29, 0x44, 0x28, 0x31, 0x32, 0x29, 0x44,\n\t0x28, 0x31, 0x33, 0x29, 0x44, 0x28, 0x31, 0x34,\n\t0x29, 0x44, 0x28, 0x31, 0x35, 0x29, 0x44, 0x28,\n\t0x31, 0x36, 0x29, 0x44, 0x28, 0x31, 0x37, 0x29,\n\t0x44, 0x28, 0x31, 0x38, 0x29, 0x44, 0x28, 0x31,\n\t0x39, 0x29, 0x44, 0x28, 0x32, 0x30, 0x29, 0x44,\n\t0x30, 0xE7, 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81,\n\t// Bytes 1cc0 - 1cff\n\t0x84, 0x44, 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31,\n\t0xE6, 0x9C, 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9,\n\t0x44, 0x32, 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6,\n\t0x9C, 0x88, 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44,\n\t0x33, 0xE6, 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C,\n\t0x88, 0x44, 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34,\n\t0xE6, 0x97, 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88,\n\t0x44, 0x34, 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6,\n\t// Bytes 1d00 - 1d3f\n\t0x97, 0xA5, 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44,\n\t0x35, 0xE7, 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97,\n\t0xA5, 0x44, 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36,\n\t0xE7, 0x82, 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5,\n\t0x44, 0x37, 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7,\n\t0x82, 0xB9, 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44,\n\t0x38, 0xE6, 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82,\n\t0xB9, 0x44, 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39,\n\t// Bytes 1d40 - 1d7f\n\t0xE6, 0x9C, 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9,\n\t0x44, 0x56, 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E,\n\t0x6D, 0x2E, 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44,\n\t0x70, 0x2E, 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69,\n\t0x69, 0x44, 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5,\n\t0xB4, 0xD5, 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB,\n\t0x44, 0xD5, 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4,\n\t0xD5, 0xB6, 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44,\n\t// Bytes 1d80 - 1dbf\n\t0xD7, 0x90, 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9,\n\t0xB4, 0x44, 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xA8, 0xD8, 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8,\n\t0xD8, 0xB2, 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44,\n\t0xD8, 0xA8, 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9,\n\t0x87, 0x44, 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8,\n\t0xA8, 0xD9, 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC,\n\t// Bytes 1dc0 - 1dff\n\t0x44, 0xD8, 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA,\n\t0xD8, 0xAE, 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44,\n\t0xD8, 0xAA, 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9,\n\t0x85, 0x44, 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAA, 0xD9, 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB,\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44,\n\t0xD8, 0xAB, 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9,\n\t// Bytes 1e00 - 1e3f\n\t0x85, 0x44, 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAB, 0xD9, 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC,\n\t0xD8, 0xAD, 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44,\n\t0xD8, 0xAC, 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9,\n\t0x8A, 0x44, 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xAD, 0xD9, 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE,\n\t// Bytes 1e40 - 1e7f\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44,\n\t0xD8, 0xAE, 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9,\n\t0x89, 0x44, 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB3, 0xD8, 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB3, 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8,\n\t// Bytes 1e80 - 1ebf\n\t0xB4, 0xD8, 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB4, 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44,\n\t// Bytes 1ec0 - 1eff\n\t0xD8, 0xB5, 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8,\n\t0xB6, 0xD8, 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1,\n\t0x44, 0xD8, 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6,\n\t0xD9, 0x89, 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44,\n\t0xD8, 0xB7, 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9,\n\t0x85, 0x44, 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8,\n\t0xB7, 0xD9, 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85,\n\t// Bytes 1f00 - 1f3f\n\t0x44, 0xD8, 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44,\n\t0xD8, 0xB9, 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8,\n\t0xBA, 0xD9, 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A,\n\t0x44, 0xD9, 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x81, 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9,\n\t// Bytes 1f40 - 1f7f\n\t0x89, 0x44, 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9,\n\t0x82, 0xD8, 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85,\n\t0x44, 0xD9, 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x83, 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x83, 0xD9, 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85,\n\t0x44, 0xD9, 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83,\n\t// Bytes 1f80 - 1fbf\n\t0xD9, 0x8A, 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x84, 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x84, 0xD9, 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87,\n\t0x44, 0xD9, 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x85, 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9,\n\t// Bytes 1fc0 - 1fff\n\t0x85, 0xD9, 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89,\n\t0x44, 0xD9, 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86,\n\t0xD8, 0xAC, 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44,\n\t0xD9, 0x86, 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8,\n\t0xB1, 0x44, 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9,\n\t0x86, 0xD9, 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86,\n\t0x44, 0xD9, 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86,\n\t0xD9, 0x89, 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44,\n\t// Bytes 2000 - 203f\n\t0xD9, 0x87, 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9,\n\t0x85, 0x44, 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9,\n\t0x87, 0xD9, 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4,\n\t0x44, 0xD9, 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x8A, 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8,\n\t0xB2, 0x44, 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9,\n\t0x8A, 0xD9, 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87,\n\t// Bytes 2040 - 207f\n\t0x44, 0xD9, 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44,\n\t0xDB, 0x87, 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84,\n\t0x80, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x86, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28,\n\t// Bytes 2080 - 20bf\n\t0xE1, 0x84, 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x8C, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x91, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29,\n\t0x45, 0x28, 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28,\n\t0xE4, 0xB8, 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8,\n\t0x89, 0x29, 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29,\n\t// Bytes 20c0 - 20ff\n\t0x45, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28,\n\t0xE4, 0xBA, 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB,\n\t0xA3, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29,\n\t0x45, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28,\n\t0xE5, 0x85, 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85,\n\t0xAD, 0x29, 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29,\n\t0x45, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28,\n\t0xE5, 0x8D, 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90,\n\t// Bytes 2100 - 213f\n\t0x8D, 0x29, 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29,\n\t0x45, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28,\n\t0xE5, 0x9C, 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD,\n\t0xA6, 0x29, 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29,\n\t0x45, 0x28, 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28,\n\t0xE6, 0x9C, 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C,\n\t0xA8, 0x29, 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29,\n\t0x45, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28,\n\t// Bytes 2140 - 217f\n\t0xE7, 0x81, 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89,\n\t0xB9, 0x29, 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29,\n\t0x45, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28,\n\t0xE7, 0xA5, 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5,\n\t0xAD, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29,\n\t0x45, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28,\n\t0xE8, 0xB2, 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3,\n\t0x87, 0x29, 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29,\n\t// Bytes 2180 - 21bf\n\t0x45, 0x30, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6,\n\t0x9C, 0x88, 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x31, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7,\n\t0x82, 0xB9, 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5,\n\t0x45, 0x31, 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6,\n\t// Bytes 21c0 - 21ff\n\t0x97, 0xA5, 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x36, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t// Bytes 2200 - 223f\n\t0x38, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x34, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x38, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39,\n\t// Bytes 2240 - 227f\n\t0x45, 0x32, 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x30, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6,\n\t// Bytes 2280 - 22bf\n\t0x97, 0xA5, 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5,\n\t0x45, 0x32, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x38, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33,\n\t0x45, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6,\n\t0x97, 0xA5, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34,\n\t0x45, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t// Bytes 22c0 - 22ff\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81,\n\t0x84, 0x35, 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36,\n\t0x45, 0x35, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37,\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88,\n\t0x95, 0x6D, 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D,\n\t0x45, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31,\n\t0xE2, 0x81, 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2,\n\t0x88, 0x95, 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88,\n\t// Bytes 2300 - 233f\n\t0x95, 0x73, 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85,\n\t0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46,\n\t0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE,\n\t// Bytes 2340 - 237f\n\t0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC,\n\t0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46,\n\t0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8,\n\t0xAA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8,\n\t// Bytes 2380 - 23bf\n\t0xAD, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89,\n\t0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAD, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC,\n\t0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8,\n\t0xAC, 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89,\n\t// Bytes 23c0 - 23ff\n\t0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8,\n\t0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3,\n\t0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8,\n\t0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE,\n\t0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t// Bytes 2400 - 243f\n\t0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5,\n\t0xD9, 0x84, 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9,\n\t0x84, 0xDB, 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46,\n\t0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8,\n\t// Bytes 2440 - 247f\n\t0xB7, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8,\n\t0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8,\n\t0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81,\n\t// Bytes 2480 - 24bf\n\t0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9,\n\t0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84,\n\t0xDB, 0x92, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85,\n\t0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x83, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84,\n\t0xD8, 0xAC, 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8,\n\t// Bytes 24c0 - 24ff\n\t0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9,\n\t0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9,\n\t0x84, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC,\n\t// Bytes 2500 - 253f\n\t0xD8, 0xAE, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9,\n\t0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9,\n\t0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85,\n\t0xD8, 0xAE, 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9,\n\t// Bytes 2540 - 257f\n\t0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46,\n\t0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9,\n\t0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A,\n\t// Bytes 2580 - 25bf\n\t0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8,\n\t0xA7, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46,\n\t// Bytes 25c0 - 25ff\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xD9, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,\n\t0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9,\n\t// Bytes 2600 - 263f\n\t0x8A, 0xD9, 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xDB, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xDB, 0x90, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB,\n\t0x95, 0x46, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2,\n\t0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46,\n\t0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0,\n\t0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD,\n\t// Bytes 2640 - 267f\n\t0x80, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82,\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7,\n\t0x46, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46,\n\t0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0,\n\t0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,\n\t0x9C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1,\n\t// Bytes 2680 - 26bf\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x46, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46,\n\t0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2,\n\t0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81,\n\t0xBB, 0xE3, 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88,\n\t0xE3, 0x82, 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3,\n\t// Bytes 26c0 - 26ff\n\t0x83, 0xAD, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82,\n\t0xB3, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88,\n\t0x46, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46,\n\t0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3,\n\t0x83, 0x9B, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83,\n\t0x9F, 0xE3, 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA,\n\t0xE3, 0x83, 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3,\n\t0x83, 0xA0, 0x46, 0xE5, 0xA4, 0xA7, 0xE6, 0xAD,\n\t// Bytes 2700 - 273f\n\t0xA3, 0x46, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90,\n\t0x46, 0xE6, 0x98, 0x8E, 0xE6, 0xB2, 0xBB, 0x46,\n\t0xE6, 0x98, 0xAD, 0xE5, 0x92, 0x8C, 0x47, 0x72,\n\t0x61, 0x64, 0xE2, 0x88, 0x95, 0x73, 0x47, 0xE3,\n\t0x80, 0x94, 0x53, 0xE3, 0x80, 0x95, 0x48, 0x28,\n\t0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x29,\n\t0x48, 0x28, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1,\n\t// Bytes 2740 - 277f\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x85, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x86, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x87,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x89, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,\n\t0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0x29,\n\t// Bytes 2780 - 27bf\n\t0x48, 0x28, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1,\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x8F, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x90, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x91,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x92, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x72, 0x61,\n\t0x64, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x48, 0xD8,\n\t0xA7, 0xD9, 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0x48,\n\t// Bytes 27c0 - 27ff\n\t0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87,\n\t0x48, 0xD8, 0xB1, 0xD8, 0xB3, 0xD9, 0x88, 0xD9,\n\t0x84, 0x48, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7,\n\t0xD9, 0x84, 0x48, 0xD8, 0xB5, 0xD9, 0x84, 0xD8,\n\t0xB9, 0xD9, 0x85, 0x48, 0xD8, 0xB9, 0xD9, 0x84,\n\t0xD9, 0x8A, 0xD9, 0x87, 0x48, 0xD9, 0x85, 0xD8,\n\t0xAD, 0xD9, 0x85, 0xD8, 0xAF, 0x48, 0xD9, 0x88,\n\t0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x49, 0xE2,\n\t// Bytes 2800 - 283f\n\t0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x49, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2,\n\t0x80, 0xB5, 0x49, 0xE2, 0x88, 0xAB, 0xE2, 0x88,\n\t0xAB, 0xE2, 0x88, 0xAB, 0x49, 0xE2, 0x88, 0xAE,\n\t0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x49, 0xE3,\n\t0x80, 0x94, 0xE4, 0xB8, 0x89, 0xE3, 0x80, 0x95,\n\t0x49, 0xE3, 0x80, 0x94, 0xE4, 0xBA, 0x8C, 0xE3,\n\t0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0x8B,\n\t// Bytes 2840 - 287f\n\t0x9D, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94,\n\t0xE5, 0xAE, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3,\n\t0x80, 0x94, 0xE6, 0x89, 0x93, 0xE3, 0x80, 0x95,\n\t0x49, 0xE3, 0x80, 0x94, 0xE6, 0x95, 0x97, 0xE3,\n\t0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x9C,\n\t0xAC, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94,\n\t0xE7, 0x82, 0xB9, 0xE3, 0x80, 0x95, 0x49, 0xE3,\n\t0x80, 0x94, 0xE7, 0x9B, 0x97, 0xE3, 0x80, 0x95,\n\t// Bytes 2880 - 28bf\n\t0x49, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xAB, 0x49, 0xE3, 0x82, 0xA4, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x81, 0x49, 0xE3, 0x82, 0xA6,\n\t0xE3, 0x82, 0xA9, 0xE3, 0x83, 0xB3, 0x49, 0xE3,\n\t0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9,\n\t0x49, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xA0, 0x49, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xAA, 0x49, 0xE3, 0x82, 0xB1,\n\t// Bytes 28c0 - 28ff\n\t0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0x49, 0xE3,\n\t0x82, 0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A,\n\t0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x83, 0x81, 0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0x49, 0xE3, 0x83, 0x86,\n\t0xE3, 0x82, 0x99, 0xE3, 0x82, 0xB7, 0x49, 0xE3,\n\t0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB,\n\t0x49, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, 0xE3,\n\t// Bytes 2900 - 293f\n\t0x83, 0x88, 0x49, 0xE3, 0x83, 0x8F, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x92,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3,\n\t0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3,\n\t0x49, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3,\n\t0x83, 0xB3, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x82, 0xBD, 0x49, 0xE3, 0x83, 0x98,\n\t0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x84, 0x49, 0xE3,\n\t// Bytes 2940 - 297f\n\t0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB,\n\t0x49, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xB3, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9E,\n\t0xE3, 0x83, 0x83, 0xE3, 0x83, 0x8F, 0x49, 0xE3,\n\t0x83, 0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF,\n\t0x49, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xAB, 0x49, 0xE3, 0x83, 0xA6, 0xE3, 0x82,\n\t// Bytes 2980 - 29bf\n\t0xA2, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83, 0xAF,\n\t0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE2,\n\t0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0xE2, 0x80, 0xB2, 0x4C, 0xE2, 0x88, 0xAB, 0xE2,\n\t0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB,\n\t0x4C, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0x95, 0xE3, 0x82, 0xA1, 0x4C, 0xE3, 0x82,\n\t0xA8, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3,\n\t// Bytes 29c0 - 29ff\n\t0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x9E, 0x4C, 0xE3, 0x82, 0xAB,\n\t0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83,\n\t0x88, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD,\n\t0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3,\n\t0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B,\n\t// Bytes 2a00 - 2a3f\n\t0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC,\n\t0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3,\n\t0x83, 0xA9, 0xE3, 0x83, 0xA0, 0x4C, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0x8D, 0x4C, 0xE3, 0x82, 0xB5, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t// Bytes 2a40 - 2a7f\n\t0xBC, 0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0x84, 0x4C, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x83, 0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x98, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF,\n\t0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3,\n\t// Bytes 2a80 - 2abf\n\t0x83, 0x8B, 0xE3, 0x83, 0x92, 0x4C, 0xE3, 0x83,\n\t0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x9B, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0x4C,\n\t0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xAD, 0x4C, 0xE3, 0x83, 0x9F,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83,\n\t0xB3, 0x4C, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC,\n\t// Bytes 2ac0 - 2aff\n\t0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x83, 0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88,\n\t0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,\n\t0x4C, 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4,\n\t0xBC, 0x9A, 0xE7, 0xA4, 0xBE, 0x4E, 0x28, 0xE1,\n\t0x84, 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92,\n\t0xE1, 0x85, 0xAE, 0x29, 0x4F, 0xD8, 0xAC, 0xD9,\n\t// Bytes 2b00 - 2b3f\n\t0x84, 0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7,\n\t0xD9, 0x84, 0xD9, 0x87, 0x4F, 0xE3, 0x82, 0xA2,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xA2,\n\t0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x82, 0xA2, 0x4F, 0xE3, 0x82, 0xAD,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83,\n\t0x83, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xB5,\n\t// Bytes 2b40 - 2b7f\n\t0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0xA0, 0x4F, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x98,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x9B,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x83, 0x9E,\n\t// Bytes 2b80 - 2bbf\n\t0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83,\n\t0xA7, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xA1,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0x88, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAB, 0x51, 0x28, 0xE1, 0x84,\n\t0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1,\n\t0x85, 0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x52, 0xE3,\n\t// Bytes 2bc0 - 2bff\n\t0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xBC, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xA9, 0xE3, 0x83, 0xA0, 0x52, 0xE3, 0x82, 0xAD,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t// Bytes 2c00 - 2c3f\n\t0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3,\n\t0x83, 0xB3, 0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x83,\n\t0xAB, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3,\n\t0x82, 0xA4, 0xE3, 0x83, 0xAD, 0x52, 0xE3, 0x83,\n\t0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88,\n\t0x52, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3,\n\t0x82, 0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88,\n\t// Bytes 2c40 - 2c7f\n\t0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x95, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7,\n\t0xE3, 0x82, 0xA7, 0xE3, 0x83, 0xAB, 0x52, 0xE3,\n\t0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAB, 0x52, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xB3, 0x61, 0xD8, 0xB5, 0xD9,\n\t// Bytes 2c80 - 2cbf\n\t0x84, 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84,\n\t0xD9, 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9,\n\t0x84, 0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88,\n\t0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x06, 0xE0,\n\t0xA7, 0x87, 0xE0, 0xA6, 0xBE, 0x01, 0x06, 0xE0,\n\t0xA7, 0x87, 0xE0, 0xA7, 0x97, 0x01, 0x06, 0xE0,\n\t0xAD, 0x87, 0xE0, 0xAC, 0xBE, 0x01, 0x06, 0xE0,\n\t0xAD, 0x87, 0xE0, 0xAD, 0x96, 0x01, 0x06, 0xE0,\n\t// Bytes 2cc0 - 2cff\n\t0xAD, 0x87, 0xE0, 0xAD, 0x97, 0x01, 0x06, 0xE0,\n\t0xAE, 0x92, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0,\n\t0xAF, 0x86, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0,\n\t0xAF, 0x86, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0,\n\t0xAF, 0x87, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0,\n\t0xB3, 0x86, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0,\n\t0xB3, 0x86, 0xE0, 0xB3, 0x96, 0x01, 0x06, 0xE0,\n\t// Bytes 2d00 - 2d3f\n\t0xB5, 0x86, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB5, 0x86, 0xE0, 0xB5, 0x97, 0x01, 0x06, 0xE0,\n\t0xB5, 0x87, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB7, 0x99, 0xE0, 0xB7, 0x9F, 0x01, 0x06, 0xE1,\n\t0x80, 0xA5, 0xE1, 0x80, 0xAE, 0x01, 0x06, 0xE1,\n\t0xAC, 0x85, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x87, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x89, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t// Bytes 2d40 - 2d7f\n\t0xAC, 0x8B, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x8D, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x91, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBA, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBC, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBE, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBF, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAD, 0x82, 0xE1, 0xAC, 0xB5, 0x01, 0x08, 0xF0,\n\t// Bytes 2d80 - 2dbf\n\t0x91, 0x84, 0xB1, 0xF0, 0x91, 0x84, 0xA7, 0x01,\n\t0x08, 0xF0, 0x91, 0x84, 0xB2, 0xF0, 0x91, 0x84,\n\t0xA7, 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0,\n\t0x91, 0x8C, 0xBE, 0x01, 0x08, 0xF0, 0x91, 0x8D,\n\t0x87, 0xF0, 0x91, 0x8D, 0x97, 0x01, 0x08, 0xF0,\n\t0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xB0, 0x01,\n\t0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92,\n\t0xBA, 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0,\n\t// Bytes 2dc0 - 2dff\n\t0x91, 0x92, 0xBD, 0x01, 0x08, 0xF0, 0x91, 0x96,\n\t0xB8, 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0,\n\t0x91, 0x96, 0xB9, 0xF0, 0x91, 0x96, 0xAF, 0x01,\n\t0x09, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0,\n\t0xB3, 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99, 0xE0,\n\t0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0x12, 0x44, 0x44,\n\t0x5A, 0xCC, 0x8C, 0xC9, 0x44, 0x44, 0x7A, 0xCC,\n\t0x8C, 0xC9, 0x44, 0x64, 0x7A, 0xCC, 0x8C, 0xC9,\n\t// Bytes 2e00 - 2e3f\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xC9,\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xC9,\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xB5,\n\t0x46, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x01,\n\t// Bytes 2e40 - 2e7f\n\t0x46, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, 0x01,\n\t0x46, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x01,\n\t// Bytes 2e80 - 2ebf\n\t0x46, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x01,\n\t0x49, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3,\n\t0x82, 0x99, 0x0D, 0x4C, 0xE1, 0x84, 0x8C, 0xE1,\n\t0x85, 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4,\n\t0x01, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D, 0x4C,\n\t0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t// Bytes 2ec0 - 2eff\n\t0x9B, 0xE3, 0x82, 0x9A, 0x0D, 0x4C, 0xE3, 0x83,\n\t0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3,\n\t0x82, 0x99, 0x0D, 0x4F, 0xE1, 0x84, 0x8E, 0xE1,\n\t0x85, 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80,\n\t0xE1, 0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3, 0x82,\n\t0xB7, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3,\n\t// Bytes 2f00 - 2f3f\n\t0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3,\n\t0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D, 0x4F,\n\t0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x52, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,\n\t0xE3, 0x82, 0x99, 0x0D, 0x52, 0xE3, 0x83, 0x95,\n\t// Bytes 2f40 - 2f7f\n\t0xE3, 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83,\n\t0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x86, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x01,\n\t0x86, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0x01,\n\t0x03, 0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, 0xCC,\n\t0xB8, 0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, 0x03,\n\t0x41, 0xCC, 0x80, 0xC9, 0x03, 0x41, 0xCC, 0x81,\n\t0xC9, 0x03, 0x41, 0xCC, 0x83, 0xC9, 0x03, 0x41,\n\t// Bytes 2f80 - 2fbf\n\t0xCC, 0x84, 0xC9, 0x03, 0x41, 0xCC, 0x89, 0xC9,\n\t0x03, 0x41, 0xCC, 0x8C, 0xC9, 0x03, 0x41, 0xCC,\n\t0x8F, 0xC9, 0x03, 0x41, 0xCC, 0x91, 0xC9, 0x03,\n\t0x41, 0xCC, 0xA5, 0xB5, 0x03, 0x41, 0xCC, 0xA8,\n\t0xA5, 0x03, 0x42, 0xCC, 0x87, 0xC9, 0x03, 0x42,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x42, 0xCC, 0xB1, 0xB5,\n\t0x03, 0x43, 0xCC, 0x81, 0xC9, 0x03, 0x43, 0xCC,\n\t0x82, 0xC9, 0x03, 0x43, 0xCC, 0x87, 0xC9, 0x03,\n\t// Bytes 2fc0 - 2fff\n\t0x43, 0xCC, 0x8C, 0xC9, 0x03, 0x44, 0xCC, 0x87,\n\t0xC9, 0x03, 0x44, 0xCC, 0x8C, 0xC9, 0x03, 0x44,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x44, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x44, 0xCC, 0xAD, 0xB5, 0x03, 0x44, 0xCC,\n\t0xB1, 0xB5, 0x03, 0x45, 0xCC, 0x80, 0xC9, 0x03,\n\t0x45, 0xCC, 0x81, 0xC9, 0x03, 0x45, 0xCC, 0x83,\n\t0xC9, 0x03, 0x45, 0xCC, 0x86, 0xC9, 0x03, 0x45,\n\t0xCC, 0x87, 0xC9, 0x03, 0x45, 0xCC, 0x88, 0xC9,\n\t// Bytes 3000 - 303f\n\t0x03, 0x45, 0xCC, 0x89, 0xC9, 0x03, 0x45, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x45, 0xCC, 0x8F, 0xC9, 0x03,\n\t0x45, 0xCC, 0x91, 0xC9, 0x03, 0x45, 0xCC, 0xA8,\n\t0xA5, 0x03, 0x45, 0xCC, 0xAD, 0xB5, 0x03, 0x45,\n\t0xCC, 0xB0, 0xB5, 0x03, 0x46, 0xCC, 0x87, 0xC9,\n\t0x03, 0x47, 0xCC, 0x81, 0xC9, 0x03, 0x47, 0xCC,\n\t0x82, 0xC9, 0x03, 0x47, 0xCC, 0x84, 0xC9, 0x03,\n\t0x47, 0xCC, 0x86, 0xC9, 0x03, 0x47, 0xCC, 0x87,\n\t// Bytes 3040 - 307f\n\t0xC9, 0x03, 0x47, 0xCC, 0x8C, 0xC9, 0x03, 0x47,\n\t0xCC, 0xA7, 0xA5, 0x03, 0x48, 0xCC, 0x82, 0xC9,\n\t0x03, 0x48, 0xCC, 0x87, 0xC9, 0x03, 0x48, 0xCC,\n\t0x88, 0xC9, 0x03, 0x48, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x48, 0xCC, 0xA3, 0xB5, 0x03, 0x48, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x48, 0xCC, 0xAE, 0xB5, 0x03, 0x49,\n\t0xCC, 0x80, 0xC9, 0x03, 0x49, 0xCC, 0x81, 0xC9,\n\t0x03, 0x49, 0xCC, 0x82, 0xC9, 0x03, 0x49, 0xCC,\n\t// Bytes 3080 - 30bf\n\t0x83, 0xC9, 0x03, 0x49, 0xCC, 0x84, 0xC9, 0x03,\n\t0x49, 0xCC, 0x86, 0xC9, 0x03, 0x49, 0xCC, 0x87,\n\t0xC9, 0x03, 0x49, 0xCC, 0x89, 0xC9, 0x03, 0x49,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x49, 0xCC, 0x8F, 0xC9,\n\t0x03, 0x49, 0xCC, 0x91, 0xC9, 0x03, 0x49, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x49, 0xCC, 0xA8, 0xA5, 0x03,\n\t0x49, 0xCC, 0xB0, 0xB5, 0x03, 0x4A, 0xCC, 0x82,\n\t0xC9, 0x03, 0x4B, 0xCC, 0x81, 0xC9, 0x03, 0x4B,\n\t// Bytes 30c0 - 30ff\n\t0xCC, 0x8C, 0xC9, 0x03, 0x4B, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x4B, 0xCC, 0xA7, 0xA5, 0x03, 0x4B, 0xCC,\n\t0xB1, 0xB5, 0x03, 0x4C, 0xCC, 0x81, 0xC9, 0x03,\n\t0x4C, 0xCC, 0x8C, 0xC9, 0x03, 0x4C, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x4C, 0xCC, 0xAD, 0xB5, 0x03, 0x4C,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x4D, 0xCC, 0x81, 0xC9,\n\t0x03, 0x4D, 0xCC, 0x87, 0xC9, 0x03, 0x4D, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x4E, 0xCC, 0x80, 0xC9, 0x03,\n\t// Bytes 3100 - 313f\n\t0x4E, 0xCC, 0x81, 0xC9, 0x03, 0x4E, 0xCC, 0x83,\n\t0xC9, 0x03, 0x4E, 0xCC, 0x87, 0xC9, 0x03, 0x4E,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x4E, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x4E, 0xCC, 0xA7, 0xA5, 0x03, 0x4E, 0xCC,\n\t0xAD, 0xB5, 0x03, 0x4E, 0xCC, 0xB1, 0xB5, 0x03,\n\t0x4F, 0xCC, 0x80, 0xC9, 0x03, 0x4F, 0xCC, 0x81,\n\t0xC9, 0x03, 0x4F, 0xCC, 0x86, 0xC9, 0x03, 0x4F,\n\t0xCC, 0x89, 0xC9, 0x03, 0x4F, 0xCC, 0x8B, 0xC9,\n\t// Bytes 3140 - 317f\n\t0x03, 0x4F, 0xCC, 0x8C, 0xC9, 0x03, 0x4F, 0xCC,\n\t0x8F, 0xC9, 0x03, 0x4F, 0xCC, 0x91, 0xC9, 0x03,\n\t0x50, 0xCC, 0x81, 0xC9, 0x03, 0x50, 0xCC, 0x87,\n\t0xC9, 0x03, 0x52, 0xCC, 0x81, 0xC9, 0x03, 0x52,\n\t0xCC, 0x87, 0xC9, 0x03, 0x52, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x52, 0xCC, 0x8F, 0xC9, 0x03, 0x52, 0xCC,\n\t0x91, 0xC9, 0x03, 0x52, 0xCC, 0xA7, 0xA5, 0x03,\n\t0x52, 0xCC, 0xB1, 0xB5, 0x03, 0x53, 0xCC, 0x82,\n\t// Bytes 3180 - 31bf\n\t0xC9, 0x03, 0x53, 0xCC, 0x87, 0xC9, 0x03, 0x53,\n\t0xCC, 0xA6, 0xB5, 0x03, 0x53, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x54, 0xCC, 0x87, 0xC9, 0x03, 0x54, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x54, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x54, 0xCC, 0xA6, 0xB5, 0x03, 0x54, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x54, 0xCC, 0xAD, 0xB5, 0x03, 0x54,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x55, 0xCC, 0x80, 0xC9,\n\t0x03, 0x55, 0xCC, 0x81, 0xC9, 0x03, 0x55, 0xCC,\n\t// Bytes 31c0 - 31ff\n\t0x82, 0xC9, 0x03, 0x55, 0xCC, 0x86, 0xC9, 0x03,\n\t0x55, 0xCC, 0x89, 0xC9, 0x03, 0x55, 0xCC, 0x8A,\n\t0xC9, 0x03, 0x55, 0xCC, 0x8B, 0xC9, 0x03, 0x55,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x55, 0xCC, 0x8F, 0xC9,\n\t0x03, 0x55, 0xCC, 0x91, 0xC9, 0x03, 0x55, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x55, 0xCC, 0xA4, 0xB5, 0x03,\n\t0x55, 0xCC, 0xA8, 0xA5, 0x03, 0x55, 0xCC, 0xAD,\n\t0xB5, 0x03, 0x55, 0xCC, 0xB0, 0xB5, 0x03, 0x56,\n\t// Bytes 3200 - 323f\n\t0xCC, 0x83, 0xC9, 0x03, 0x56, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x57, 0xCC, 0x80, 0xC9, 0x03, 0x57, 0xCC,\n\t0x81, 0xC9, 0x03, 0x57, 0xCC, 0x82, 0xC9, 0x03,\n\t0x57, 0xCC, 0x87, 0xC9, 0x03, 0x57, 0xCC, 0x88,\n\t0xC9, 0x03, 0x57, 0xCC, 0xA3, 0xB5, 0x03, 0x58,\n\t0xCC, 0x87, 0xC9, 0x03, 0x58, 0xCC, 0x88, 0xC9,\n\t0x03, 0x59, 0xCC, 0x80, 0xC9, 0x03, 0x59, 0xCC,\n\t0x81, 0xC9, 0x03, 0x59, 0xCC, 0x82, 0xC9, 0x03,\n\t// Bytes 3240 - 327f\n\t0x59, 0xCC, 0x83, 0xC9, 0x03, 0x59, 0xCC, 0x84,\n\t0xC9, 0x03, 0x59, 0xCC, 0x87, 0xC9, 0x03, 0x59,\n\t0xCC, 0x88, 0xC9, 0x03, 0x59, 0xCC, 0x89, 0xC9,\n\t0x03, 0x59, 0xCC, 0xA3, 0xB5, 0x03, 0x5A, 0xCC,\n\t0x81, 0xC9, 0x03, 0x5A, 0xCC, 0x82, 0xC9, 0x03,\n\t0x5A, 0xCC, 0x87, 0xC9, 0x03, 0x5A, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x5A, 0xCC, 0xA3, 0xB5, 0x03, 0x5A,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x61, 0xCC, 0x80, 0xC9,\n\t// Bytes 3280 - 32bf\n\t0x03, 0x61, 0xCC, 0x81, 0xC9, 0x03, 0x61, 0xCC,\n\t0x83, 0xC9, 0x03, 0x61, 0xCC, 0x84, 0xC9, 0x03,\n\t0x61, 0xCC, 0x89, 0xC9, 0x03, 0x61, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x61, 0xCC, 0x8F, 0xC9, 0x03, 0x61,\n\t0xCC, 0x91, 0xC9, 0x03, 0x61, 0xCC, 0xA5, 0xB5,\n\t0x03, 0x61, 0xCC, 0xA8, 0xA5, 0x03, 0x62, 0xCC,\n\t0x87, 0xC9, 0x03, 0x62, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x62, 0xCC, 0xB1, 0xB5, 0x03, 0x63, 0xCC, 0x81,\n\t// Bytes 32c0 - 32ff\n\t0xC9, 0x03, 0x63, 0xCC, 0x82, 0xC9, 0x03, 0x63,\n\t0xCC, 0x87, 0xC9, 0x03, 0x63, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x64, 0xCC, 0x87, 0xC9, 0x03, 0x64, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x64, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x64, 0xCC, 0xA7, 0xA5, 0x03, 0x64, 0xCC, 0xAD,\n\t0xB5, 0x03, 0x64, 0xCC, 0xB1, 0xB5, 0x03, 0x65,\n\t0xCC, 0x80, 0xC9, 0x03, 0x65, 0xCC, 0x81, 0xC9,\n\t0x03, 0x65, 0xCC, 0x83, 0xC9, 0x03, 0x65, 0xCC,\n\t// Bytes 3300 - 333f\n\t0x86, 0xC9, 0x03, 0x65, 0xCC, 0x87, 0xC9, 0x03,\n\t0x65, 0xCC, 0x88, 0xC9, 0x03, 0x65, 0xCC, 0x89,\n\t0xC9, 0x03, 0x65, 0xCC, 0x8C, 0xC9, 0x03, 0x65,\n\t0xCC, 0x8F, 0xC9, 0x03, 0x65, 0xCC, 0x91, 0xC9,\n\t0x03, 0x65, 0xCC, 0xA8, 0xA5, 0x03, 0x65, 0xCC,\n\t0xAD, 0xB5, 0x03, 0x65, 0xCC, 0xB0, 0xB5, 0x03,\n\t0x66, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC, 0x81,\n\t0xC9, 0x03, 0x67, 0xCC, 0x82, 0xC9, 0x03, 0x67,\n\t// Bytes 3340 - 337f\n\t0xCC, 0x84, 0xC9, 0x03, 0x67, 0xCC, 0x86, 0xC9,\n\t0x03, 0x67, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x67, 0xCC, 0xA7, 0xA5, 0x03,\n\t0x68, 0xCC, 0x82, 0xC9, 0x03, 0x68, 0xCC, 0x87,\n\t0xC9, 0x03, 0x68, 0xCC, 0x88, 0xC9, 0x03, 0x68,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x68, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x68, 0xCC, 0xA7, 0xA5, 0x03, 0x68, 0xCC,\n\t0xAE, 0xB5, 0x03, 0x68, 0xCC, 0xB1, 0xB5, 0x03,\n\t// Bytes 3380 - 33bf\n\t0x69, 0xCC, 0x80, 0xC9, 0x03, 0x69, 0xCC, 0x81,\n\t0xC9, 0x03, 0x69, 0xCC, 0x82, 0xC9, 0x03, 0x69,\n\t0xCC, 0x83, 0xC9, 0x03, 0x69, 0xCC, 0x84, 0xC9,\n\t0x03, 0x69, 0xCC, 0x86, 0xC9, 0x03, 0x69, 0xCC,\n\t0x89, 0xC9, 0x03, 0x69, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x69, 0xCC, 0x8F, 0xC9, 0x03, 0x69, 0xCC, 0x91,\n\t0xC9, 0x03, 0x69, 0xCC, 0xA3, 0xB5, 0x03, 0x69,\n\t0xCC, 0xA8, 0xA5, 0x03, 0x69, 0xCC, 0xB0, 0xB5,\n\t// Bytes 33c0 - 33ff\n\t0x03, 0x6A, 0xCC, 0x82, 0xC9, 0x03, 0x6A, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0x81, 0xC9, 0x03,\n\t0x6B, 0xCC, 0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x6B, 0xCC, 0xA7, 0xA5, 0x03, 0x6B,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x6C, 0xCC, 0x81, 0xC9,\n\t0x03, 0x6C, 0xCC, 0x8C, 0xC9, 0x03, 0x6C, 0xCC,\n\t0xA7, 0xA5, 0x03, 0x6C, 0xCC, 0xAD, 0xB5, 0x03,\n\t0x6C, 0xCC, 0xB1, 0xB5, 0x03, 0x6D, 0xCC, 0x81,\n\t// Bytes 3400 - 343f\n\t0xC9, 0x03, 0x6D, 0xCC, 0x87, 0xC9, 0x03, 0x6D,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x6E, 0xCC, 0x80, 0xC9,\n\t0x03, 0x6E, 0xCC, 0x81, 0xC9, 0x03, 0x6E, 0xCC,\n\t0x83, 0xC9, 0x03, 0x6E, 0xCC, 0x87, 0xC9, 0x03,\n\t0x6E, 0xCC, 0x8C, 0xC9, 0x03, 0x6E, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x6E, 0xCC, 0xA7, 0xA5, 0x03, 0x6E,\n\t0xCC, 0xAD, 0xB5, 0x03, 0x6E, 0xCC, 0xB1, 0xB5,\n\t0x03, 0x6F, 0xCC, 0x80, 0xC9, 0x03, 0x6F, 0xCC,\n\t// Bytes 3440 - 347f\n\t0x81, 0xC9, 0x03, 0x6F, 0xCC, 0x86, 0xC9, 0x03,\n\t0x6F, 0xCC, 0x89, 0xC9, 0x03, 0x6F, 0xCC, 0x8B,\n\t0xC9, 0x03, 0x6F, 0xCC, 0x8C, 0xC9, 0x03, 0x6F,\n\t0xCC, 0x8F, 0xC9, 0x03, 0x6F, 0xCC, 0x91, 0xC9,\n\t0x03, 0x70, 0xCC, 0x81, 0xC9, 0x03, 0x70, 0xCC,\n\t0x87, 0xC9, 0x03, 0x72, 0xCC, 0x81, 0xC9, 0x03,\n\t0x72, 0xCC, 0x87, 0xC9, 0x03, 0x72, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x72, 0xCC, 0x8F, 0xC9, 0x03, 0x72,\n\t// Bytes 3480 - 34bf\n\t0xCC, 0x91, 0xC9, 0x03, 0x72, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x72, 0xCC, 0xB1, 0xB5, 0x03, 0x73, 0xCC,\n\t0x82, 0xC9, 0x03, 0x73, 0xCC, 0x87, 0xC9, 0x03,\n\t0x73, 0xCC, 0xA6, 0xB5, 0x03, 0x73, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x74, 0xCC, 0x87, 0xC9, 0x03, 0x74,\n\t0xCC, 0x88, 0xC9, 0x03, 0x74, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x74, 0xCC, 0xA3, 0xB5, 0x03, 0x74, 0xCC,\n\t0xA6, 0xB5, 0x03, 0x74, 0xCC, 0xA7, 0xA5, 0x03,\n\t// Bytes 34c0 - 34ff\n\t0x74, 0xCC, 0xAD, 0xB5, 0x03, 0x74, 0xCC, 0xB1,\n\t0xB5, 0x03, 0x75, 0xCC, 0x80, 0xC9, 0x03, 0x75,\n\t0xCC, 0x81, 0xC9, 0x03, 0x75, 0xCC, 0x82, 0xC9,\n\t0x03, 0x75, 0xCC, 0x86, 0xC9, 0x03, 0x75, 0xCC,\n\t0x89, 0xC9, 0x03, 0x75, 0xCC, 0x8A, 0xC9, 0x03,\n\t0x75, 0xCC, 0x8B, 0xC9, 0x03, 0x75, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x75, 0xCC, 0x8F, 0xC9, 0x03, 0x75,\n\t0xCC, 0x91, 0xC9, 0x03, 0x75, 0xCC, 0xA3, 0xB5,\n\t// Bytes 3500 - 353f\n\t0x03, 0x75, 0xCC, 0xA4, 0xB5, 0x03, 0x75, 0xCC,\n\t0xA8, 0xA5, 0x03, 0x75, 0xCC, 0xAD, 0xB5, 0x03,\n\t0x75, 0xCC, 0xB0, 0xB5, 0x03, 0x76, 0xCC, 0x83,\n\t0xC9, 0x03, 0x76, 0xCC, 0xA3, 0xB5, 0x03, 0x77,\n\t0xCC, 0x80, 0xC9, 0x03, 0x77, 0xCC, 0x81, 0xC9,\n\t0x03, 0x77, 0xCC, 0x82, 0xC9, 0x03, 0x77, 0xCC,\n\t0x87, 0xC9, 0x03, 0x77, 0xCC, 0x88, 0xC9, 0x03,\n\t0x77, 0xCC, 0x8A, 0xC9, 0x03, 0x77, 0xCC, 0xA3,\n\t// Bytes 3540 - 357f\n\t0xB5, 0x03, 0x78, 0xCC, 0x87, 0xC9, 0x03, 0x78,\n\t0xCC, 0x88, 0xC9, 0x03, 0x79, 0xCC, 0x80, 0xC9,\n\t0x03, 0x79, 0xCC, 0x81, 0xC9, 0x03, 0x79, 0xCC,\n\t0x82, 0xC9, 0x03, 0x79, 0xCC, 0x83, 0xC9, 0x03,\n\t0x79, 0xCC, 0x84, 0xC9, 0x03, 0x79, 0xCC, 0x87,\n\t0xC9, 0x03, 0x79, 0xCC, 0x88, 0xC9, 0x03, 0x79,\n\t0xCC, 0x89, 0xC9, 0x03, 0x79, 0xCC, 0x8A, 0xC9,\n\t0x03, 0x79, 0xCC, 0xA3, 0xB5, 0x03, 0x7A, 0xCC,\n\t// Bytes 3580 - 35bf\n\t0x81, 0xC9, 0x03, 0x7A, 0xCC, 0x82, 0xC9, 0x03,\n\t0x7A, 0xCC, 0x87, 0xC9, 0x03, 0x7A, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x7A, 0xCC, 0xA3, 0xB5, 0x03, 0x7A,\n\t0xCC, 0xB1, 0xB5, 0x04, 0xC2, 0xA8, 0xCC, 0x80,\n\t0xCA, 0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x04,\n\t0xC2, 0xA8, 0xCD, 0x82, 0xCA, 0x04, 0xC3, 0x86,\n\t0xCC, 0x81, 0xC9, 0x04, 0xC3, 0x86, 0xCC, 0x84,\n\t0xC9, 0x04, 0xC3, 0x98, 0xCC, 0x81, 0xC9, 0x04,\n\t// Bytes 35c0 - 35ff\n\t0xC3, 0xA6, 0xCC, 0x81, 0xC9, 0x04, 0xC3, 0xA6,\n\t0xCC, 0x84, 0xC9, 0x04, 0xC3, 0xB8, 0xCC, 0x81,\n\t0xC9, 0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xC9, 0x04,\n\t0xC6, 0xB7, 0xCC, 0x8C, 0xC9, 0x04, 0xCA, 0x92,\n\t0xCC, 0x8C, 0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x80,\n\t0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x81, 0xC9, 0x04,\n\t0xCE, 0x91, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0x91,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0x91, 0xCD, 0x85,\n\t// Bytes 3600 - 363f\n\t0xD9, 0x04, 0xCE, 0x95, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0x95, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x97,\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x97, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0x97, 0xCD, 0x85, 0xD9, 0x04,\n\t0xCE, 0x99, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x99,\n\t0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x84,\n\t0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x86, 0xC9, 0x04,\n\t0xCE, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0x9F,\n\t// Bytes 3640 - 367f\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x9F, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xC9, 0x04,\n\t0xCE, 0xA5, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA5,\n\t0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x84,\n\t0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xC9, 0x04,\n\t0xCE, 0xA5, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0xA9,\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA9, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xD9, 0x04,\n\t// Bytes 3680 - 36bf\n\t0xCE, 0xB1, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB1,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB1, 0xCD, 0x85,\n\t0xD9, 0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0xB5, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xB7,\n\t0xCD, 0x85, 0xD9, 0x04, 0xCE, 0xB9, 0xCC, 0x80,\n\t0xC9, 0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x04,\n\t0xCE, 0xB9, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB9,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB9, 0xCD, 0x82,\n\t// Bytes 36c0 - 36ff\n\t0xC9, 0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0xBF, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x81,\n\t0xCC, 0x93, 0xC9, 0x04, 0xCF, 0x81, 0xCC, 0x94,\n\t0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCF, 0x85, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x85,\n\t0xCC, 0x84, 0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x86,\n\t0xC9, 0x04, 0xCF, 0x85, 0xCD, 0x82, 0xC9, 0x04,\n\t0xCF, 0x89, 0xCD, 0x85, 0xD9, 0x04, 0xCF, 0x92,\n\t// Bytes 3700 - 373f\n\t0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x92, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0x86, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0x90, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x90,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x93, 0xCC, 0x81,\n\t0xC9, 0x04, 0xD0, 0x95, 0xCC, 0x80, 0xC9, 0x04,\n\t0xD0, 0x95, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x95,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x88, 0xC9, 0x04,\n\t// Bytes 3740 - 377f\n\t0xD0, 0x97, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x98,\n\t0xCC, 0x80, 0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x84,\n\t0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x86, 0xC9, 0x04,\n\t0xD0, 0x98, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x9A,\n\t0xCC, 0x81, 0xC9, 0x04, 0xD0, 0x9E, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xC9, 0x04,\n\t0xD0, 0xA3, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xA3,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x8B,\n\t// Bytes 3780 - 37bf\n\t0xC9, 0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xAB, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xAD,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xB3, 0xCC, 0x81, 0xC9, 0x04, 0xD0, 0xB5,\n\t0xCC, 0x80, 0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xB6, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB6,\n\t// Bytes 37c0 - 37ff\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB7, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xC9, 0x04,\n\t0xD0, 0xB8, 0xCC, 0x84, 0xC9, 0x04, 0xD0, 0xB8,\n\t0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xC9, 0x04,\n\t0xD0, 0xBE, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x83,\n\t0xCC, 0x84, 0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x88, 0xC9, 0x04,\n\t// Bytes 3800 - 383f\n\t0xD1, 0x83, 0xCC, 0x8B, 0xC9, 0x04, 0xD1, 0x87,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x8B, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD1, 0x96, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0xB4,\n\t0xCC, 0x8F, 0xC9, 0x04, 0xD1, 0xB5, 0xCC, 0x8F,\n\t0xC9, 0x04, 0xD3, 0x98, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD3, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA8,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA9, 0xCC, 0x88,\n\t// Bytes 3840 - 387f\n\t0xC9, 0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xC9, 0x04,\n\t0xD8, 0xA7, 0xD9, 0x94, 0xC9, 0x04, 0xD8, 0xA7,\n\t0xD9, 0x95, 0xB5, 0x04, 0xD9, 0x88, 0xD9, 0x94,\n\t0xC9, 0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xC9, 0x04,\n\t0xDB, 0x81, 0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x92,\n\t0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x95, 0xD9, 0x94,\n\t0xC9, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xCA,\n\t0x05, 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05,\n\t// Bytes 3880 - 38bf\n\t0x41, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x41,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x41, 0xCC,\n\t0x86, 0xCC, 0x80, 0xCA, 0x05, 0x41, 0xCC, 0x86,\n\t0xCC, 0x81, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC,\n\t0x83, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x89,\n\t0xCA, 0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xCA,\n\t0x05, 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05,\n\t0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x41,\n\t// Bytes 38c0 - 38ff\n\t0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x41, 0xCC,\n\t0xA3, 0xCC, 0x86, 0xCA, 0x05, 0x43, 0xCC, 0xA7,\n\t0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC,\n\t0x80, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x81,\n\t0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xCA,\n\t0x05, 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05,\n\t0x45, 0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x45,\n\t0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC,\n\t// Bytes 3900 - 393f\n\t0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x45, 0xCC, 0xA7,\n\t0xCC, 0x86, 0xCA, 0x05, 0x49, 0xCC, 0x88, 0xCC,\n\t0x81, 0xCA, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, 0x84,\n\t0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xCA,\n\t0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05,\n\t0x4F, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x4F,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x4F, 0xCC,\n\t0x83, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x83,\n\t// Bytes 3940 - 397f\n\t0xCC, 0x84, 0xCA, 0x05, 0x4F, 0xCC, 0x83, 0xCC,\n\t0x88, 0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x80,\n\t0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xCA,\n\t0x05, 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05,\n\t0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x4F,\n\t0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x4F, 0xCC,\n\t0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x9B,\n\t0xCC, 0x83, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC,\n\t// Bytes 3980 - 39bf\n\t0x89, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3,\n\t0xB6, 0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA,\n\t0x05, 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05,\n\t0x52, 0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x53,\n\t0xCC, 0x81, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC,\n\t0x8C, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC, 0xA3,\n\t0xCC, 0x87, 0xCA, 0x05, 0x55, 0xCC, 0x83, 0xCC,\n\t0x81, 0xCA, 0x05, 0x55, 0xCC, 0x84, 0xCC, 0x88,\n\t// Bytes 39c0 - 39ff\n\t0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x05, 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05,\n\t0x55, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x55,\n\t0xCC, 0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x55, 0xCC,\n\t0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x55, 0xCC, 0x9B,\n\t0xCC, 0x81, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC,\n\t0x83, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6,\n\t// Bytes 3a00 - 3a3f\n\t0x05, 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05,\n\t0x61, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x61,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x61, 0xCC,\n\t0x82, 0xCC, 0x89, 0xCA, 0x05, 0x61, 0xCC, 0x86,\n\t0xCC, 0x80, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC,\n\t0x81, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x83,\n\t0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xCA,\n\t0x05, 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05,\n\t// Bytes 3a40 - 3a7f\n\t0x61, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x61,\n\t0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x61, 0xCC,\n\t0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x61, 0xCC, 0xA3,\n\t0xCC, 0x86, 0xCA, 0x05, 0x63, 0xCC, 0xA7, 0xCC,\n\t0x81, 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x80,\n\t0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xCA,\n\t0x05, 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05,\n\t0x65, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x65,\n\t// Bytes 3a80 - 3abf\n\t0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x65, 0xCC,\n\t0x84, 0xCC, 0x81, 0xCA, 0x05, 0x65, 0xCC, 0xA3,\n\t0xCC, 0x82, 0xCA, 0x05, 0x65, 0xCC, 0xA7, 0xCC,\n\t0x86, 0xCA, 0x05, 0x69, 0xCC, 0x88, 0xCC, 0x81,\n\t0xCA, 0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xCA,\n\t0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05,\n\t0x6F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x6F,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x6F, 0xCC,\n\t// Bytes 3ac0 - 3aff\n\t0x82, 0xCC, 0x89, 0xCA, 0x05, 0x6F, 0xCC, 0x83,\n\t0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC,\n\t0x84, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x88,\n\t0xCA, 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xCA,\n\t0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05,\n\t0x6F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05, 0x6F,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x6F, 0xCC,\n\t0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x6F, 0xCC, 0x9B,\n\t// Bytes 3b00 - 3b3f\n\t0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC,\n\t0x83, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6,\n\t0x05, 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05,\n\t0x6F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05, 0x72,\n\t0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x73, 0xCC,\n\t0x81, 0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0x8C,\n\t0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0xA3, 0xCC,\n\t// Bytes 3b40 - 3b7f\n\t0x87, 0xCA, 0x05, 0x75, 0xCC, 0x83, 0xCC, 0x81,\n\t0xCA, 0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xCA,\n\t0x05, 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCA, 0x05,\n\t0x75, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05, 0x75,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x75, 0xCC,\n\t0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x75, 0xCC, 0x9B,\n\t0xCC, 0x80, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC,\n\t0x81, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x83,\n\t// Bytes 3b80 - 3bbf\n\t0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xCA,\n\t0x05, 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6, 0x05,\n\t0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0xCA, 0x05, 0xE1,\n\t0xBE, 0xBF, 0xCC, 0x81, 0xCA, 0x05, 0xE1, 0xBE,\n\t0xBF, 0xCD, 0x82, 0xCA, 0x05, 0xE1, 0xBF, 0xBE,\n\t0xCC, 0x80, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCC,\n\t0x81, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, 0x82,\n\t0xCA, 0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0x05,\n\t// Bytes 3bc0 - 3bff\n\t0x05, 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x87, 0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87,\n\t0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x94,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, 0x05,\n\t// Bytes 3c00 - 3c3f\n\t0xE2, 0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x88, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x85,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t// Bytes 3c40 - 3c7f\n\t0x89, 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0xB3, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB6,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t// Bytes 3c80 - 3cbf\n\t0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x86,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0xAB, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB2,\n\t// Bytes 3cc0 - 3cff\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0x05,\n\t0x06, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t// Bytes 3d00 - 3d3f\n\t0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t// Bytes 3d40 - 3d7f\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t// Bytes 3d80 - 3dbf\n\t0x06, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t// Bytes 3dc0 - 3dff\n\t0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t// Bytes 3e00 - 3e3f\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t// Bytes 3e40 - 3e7f\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xCA,\n\t// Bytes 3e80 - 3ebf\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t// Bytes 3ec0 - 3eff\n\t0x06, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t0x06, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0x85,\n\t0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0x11,\n\t// Bytes 3f00 - 3f3f\n\t0x06, 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 3f40 - 3f7f\n\t0x06, 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 3f80 - 3fbf\n\t0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0x0D,\n\t// Bytes 3fc0 - 3fff\n\t0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4000 - 403f\n\t0x06, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4040 - 407f\n\t0x06, 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4080 - 40bf\n\t0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 40c0 - 40ff\n\t0x06, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t// Bytes 4100 - 413f\n\t0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCD,\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC,\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t// Bytes 4140 - 417f\n\t0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCD,\n\t// Bytes 4180 - 41bf\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC,\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t// Bytes 41c0 - 41ff\n\t0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCD,\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC,\n\t// Bytes 4200 - 423f\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t0x08, 0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, 0x82,\n\t// Bytes 4240 - 427f\n\t0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82, 0x9B, 0xF0,\n\t0x91, 0x82, 0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82,\n\t0xA5, 0xF0, 0x91, 0x82, 0xBA, 0x09, 0x42, 0xC2,\n\t0xB4, 0x01, 0x43, 0x20, 0xCC, 0x81, 0xC9, 0x43,\n\t0x20, 0xCC, 0x83, 0xC9, 0x43, 0x20, 0xCC, 0x84,\n\t0xC9, 0x43, 0x20, 0xCC, 0x85, 0xC9, 0x43, 0x20,\n\t0xCC, 0x86, 0xC9, 0x43, 0x20, 0xCC, 0x87, 0xC9,\n\t0x43, 0x20, 0xCC, 0x88, 0xC9, 0x43, 0x20, 0xCC,\n\t// Bytes 4280 - 42bf\n\t0x8A, 0xC9, 0x43, 0x20, 0xCC, 0x8B, 0xC9, 0x43,\n\t0x20, 0xCC, 0x93, 0xC9, 0x43, 0x20, 0xCC, 0x94,\n\t0xC9, 0x43, 0x20, 0xCC, 0xA7, 0xA5, 0x43, 0x20,\n\t0xCC, 0xA8, 0xA5, 0x43, 0x20, 0xCC, 0xB3, 0xB5,\n\t0x43, 0x20, 0xCD, 0x82, 0xC9, 0x43, 0x20, 0xCD,\n\t0x85, 0xD9, 0x43, 0x20, 0xD9, 0x8B, 0x59, 0x43,\n\t0x20, 0xD9, 0x8C, 0x5D, 0x43, 0x20, 0xD9, 0x8D,\n\t0x61, 0x43, 0x20, 0xD9, 0x8E, 0x65, 0x43, 0x20,\n\t// Bytes 42c0 - 42ff\n\t0xD9, 0x8F, 0x69, 0x43, 0x20, 0xD9, 0x90, 0x6D,\n\t0x43, 0x20, 0xD9, 0x91, 0x71, 0x43, 0x20, 0xD9,\n\t0x92, 0x75, 0x43, 0x41, 0xCC, 0x8A, 0xC9, 0x43,\n\t0x73, 0xCC, 0x87, 0xC9, 0x44, 0x20, 0xE3, 0x82,\n\t0x99, 0x0D, 0x44, 0x20, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x44, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x44, 0xCE,\n\t0x91, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0x95, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0x97, 0xCC, 0x81, 0xC9,\n\t// Bytes 4300 - 433f\n\t0x44, 0xCE, 0x99, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0x9F, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC, 0x88, 0xC9,\n\t0x44, 0xCE, 0xA9, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0xB1, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xB5, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xC9,\n\t0x44, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0xBF, 0xCC, 0x81, 0xC9, 0x44, 0xCF, 0x85, 0xCC,\n\t// Bytes 4340 - 437f\n\t0x81, 0xC9, 0x44, 0xCF, 0x89, 0xCC, 0x81, 0xC9,\n\t0x44, 0xD7, 0x90, 0xD6, 0xB7, 0x31, 0x44, 0xD7,\n\t0x90, 0xD6, 0xB8, 0x35, 0x44, 0xD7, 0x90, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x91, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x91, 0xD6, 0xBF, 0x49, 0x44, 0xD7,\n\t0x92, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x93, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x95, 0xD6, 0xB9, 0x39, 0x44, 0xD7,\n\t// Bytes 4380 - 43bf\n\t0x95, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x96, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x98, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x99, 0xD6, 0xB4, 0x25, 0x44, 0xD7,\n\t0x99, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9A, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x9B, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x9B, 0xD6, 0xBF, 0x49, 0x44, 0xD7,\n\t0x9C, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9E, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x41,\n\t// Bytes 43c0 - 43ff\n\t0x44, 0xD7, 0xA1, 0xD6, 0xBC, 0x41, 0x44, 0xD7,\n\t0xA3, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6, 0xBF, 0x49,\n\t0x44, 0xD7, 0xA6, 0xD6, 0xBC, 0x41, 0x44, 0xD7,\n\t0xA7, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA8, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0xA9, 0xD7, 0x81, 0x4D, 0x44, 0xD7,\n\t0xA9, 0xD7, 0x82, 0x51, 0x44, 0xD7, 0xAA, 0xD6,\n\t// Bytes 4400 - 443f\n\t0xBC, 0x41, 0x44, 0xD7, 0xB2, 0xD6, 0xB7, 0x31,\n\t0x44, 0xD8, 0xA7, 0xD9, 0x8B, 0x59, 0x44, 0xD8,\n\t0xA7, 0xD9, 0x93, 0xC9, 0x44, 0xD8, 0xA7, 0xD9,\n\t0x94, 0xC9, 0x44, 0xD8, 0xA7, 0xD9, 0x95, 0xB5,\n\t0x44, 0xD8, 0xB0, 0xD9, 0xB0, 0x79, 0x44, 0xD8,\n\t0xB1, 0xD9, 0xB0, 0x79, 0x44, 0xD9, 0x80, 0xD9,\n\t0x8B, 0x59, 0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x65,\n\t0x44, 0xD9, 0x80, 0xD9, 0x8F, 0x69, 0x44, 0xD9,\n\t// Bytes 4440 - 447f\n\t0x80, 0xD9, 0x90, 0x6D, 0x44, 0xD9, 0x80, 0xD9,\n\t0x91, 0x71, 0x44, 0xD9, 0x80, 0xD9, 0x92, 0x75,\n\t0x44, 0xD9, 0x87, 0xD9, 0xB0, 0x79, 0x44, 0xD9,\n\t0x88, 0xD9, 0x94, 0xC9, 0x44, 0xD9, 0x89, 0xD9,\n\t0xB0, 0x79, 0x44, 0xD9, 0x8A, 0xD9, 0x94, 0xC9,\n\t0x44, 0xDB, 0x92, 0xD9, 0x94, 0xC9, 0x44, 0xDB,\n\t0x95, 0xD9, 0x94, 0xC9, 0x45, 0x20, 0xCC, 0x88,\n\t0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCC,\n\t// Bytes 4480 - 44bf\n\t0x81, 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCD, 0x82,\n\t0xCA, 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x45, 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x45,\n\t0x20, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x45, 0x20,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCA, 0x45, 0x20, 0xCC, 0x94,\n\t0xCD, 0x82, 0xCA, 0x45, 0x20, 0xD9, 0x8C, 0xD9,\n\t0x91, 0x72, 0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91,\n\t// Bytes 44c0 - 44ff\n\t0x72, 0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x72,\n\t0x45, 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x72, 0x45,\n\t0x20, 0xD9, 0x90, 0xD9, 0x91, 0x72, 0x45, 0x20,\n\t0xD9, 0x91, 0xD9, 0xB0, 0x7A, 0x45, 0xE2, 0xAB,\n\t0x9D, 0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9, 0xCC,\n\t0x88, 0xCC, 0x81, 0xCA, 0x46, 0xCF, 0x85, 0xCC,\n\t0x88, 0xCC, 0x81, 0xCA, 0x46, 0xD7, 0xA9, 0xD6,\n\t0xBC, 0xD7, 0x81, 0x4E, 0x46, 0xD7, 0xA9, 0xD6,\n\t// Bytes 4500 - 453f\n\t0xBC, 0xD7, 0x82, 0x52, 0x46, 0xD9, 0x80, 0xD9,\n\t0x8E, 0xD9, 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9,\n\t0x8F, 0xD9, 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9,\n\t0x90, 0xD9, 0x91, 0x72, 0x46, 0xE0, 0xA4, 0x95,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x96,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x97,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x9C,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA1,\n\t// Bytes 4540 - 457f\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA2,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAB,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAF,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA1,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA2,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xAF,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x96,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x97,\n\t// Bytes 4580 - 45bf\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x9C,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xAB,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB2,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB8,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA1,\n\t0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA2,\n\t0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0, 0xBE, 0xB2,\n\t0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE0, 0xBE, 0xB3,\n\t// Bytes 45c0 - 45ff\n\t0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE3, 0x83, 0x86,\n\t0xE3, 0x82, 0x99, 0x0D, 0x48, 0xF0, 0x9D, 0x85,\n\t0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xAD, 0x48, 0xF0,\n\t0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xAD,\n\t0x48, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xAD, 0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xAD, 0x49, 0xE0, 0xBE, 0xB2,\n\t0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x49,\n\t// Bytes 4600 - 463f\n\t0xE0, 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE,\n\t0x80, 0x9E, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE,\n\t0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0,\n\t0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,\n\t0x9D, 0x85, 0xB0, 0xAE, 0x4C, 0xF0, 0x9D, 0x85,\n\t0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,\n\t// Bytes 4640 - 467f\n\t0xB1, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xAE,\n\t0x4C, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE, 0x4C, 0xF0,\n\t0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,\n\t0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0, 0x9D, 0x86,\n\t0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,\n\t0xAE, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0,\n\t// Bytes 4680 - 46bf\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE,\n\t0x83, 0x41, 0xCC, 0x82, 0xC9, 0x83, 0x41, 0xCC,\n\t0x86, 0xC9, 0x83, 0x41, 0xCC, 0x87, 0xC9, 0x83,\n\t0x41, 0xCC, 0x88, 0xC9, 0x83, 0x41, 0xCC, 0x8A,\n\t0xC9, 0x83, 0x41, 0xCC, 0xA3, 0xB5, 0x83, 0x43,\n\t0xCC, 0xA7, 0xA5, 0x83, 0x45, 0xCC, 0x82, 0xC9,\n\t0x83, 0x45, 0xCC, 0x84, 0xC9, 0x83, 0x45, 0xCC,\n\t0xA3, 0xB5, 0x83, 0x45, 0xCC, 0xA7, 0xA5, 0x83,\n\t// Bytes 46c0 - 46ff\n\t0x49, 0xCC, 0x88, 0xC9, 0x83, 0x4C, 0xCC, 0xA3,\n\t0xB5, 0x83, 0x4F, 0xCC, 0x82, 0xC9, 0x83, 0x4F,\n\t0xCC, 0x83, 0xC9, 0x83, 0x4F, 0xCC, 0x84, 0xC9,\n\t0x83, 0x4F, 0xCC, 0x87, 0xC9, 0x83, 0x4F, 0xCC,\n\t0x88, 0xC9, 0x83, 0x4F, 0xCC, 0x9B, 0xAD, 0x83,\n\t0x4F, 0xCC, 0xA3, 0xB5, 0x83, 0x4F, 0xCC, 0xA8,\n\t0xA5, 0x83, 0x52, 0xCC, 0xA3, 0xB5, 0x83, 0x53,\n\t0xCC, 0x81, 0xC9, 0x83, 0x53, 0xCC, 0x8C, 0xC9,\n\t// Bytes 4700 - 473f\n\t0x83, 0x53, 0xCC, 0xA3, 0xB5, 0x83, 0x55, 0xCC,\n\t0x83, 0xC9, 0x83, 0x55, 0xCC, 0x84, 0xC9, 0x83,\n\t0x55, 0xCC, 0x88, 0xC9, 0x83, 0x55, 0xCC, 0x9B,\n\t0xAD, 0x83, 0x61, 0xCC, 0x82, 0xC9, 0x83, 0x61,\n\t0xCC, 0x86, 0xC9, 0x83, 0x61, 0xCC, 0x87, 0xC9,\n\t0x83, 0x61, 0xCC, 0x88, 0xC9, 0x83, 0x61, 0xCC,\n\t0x8A, 0xC9, 0x83, 0x61, 0xCC, 0xA3, 0xB5, 0x83,\n\t0x63, 0xCC, 0xA7, 0xA5, 0x83, 0x65, 0xCC, 0x82,\n\t// Bytes 4740 - 477f\n\t0xC9, 0x83, 0x65, 0xCC, 0x84, 0xC9, 0x83, 0x65,\n\t0xCC, 0xA3, 0xB5, 0x83, 0x65, 0xCC, 0xA7, 0xA5,\n\t0x83, 0x69, 0xCC, 0x88, 0xC9, 0x83, 0x6C, 0xCC,\n\t0xA3, 0xB5, 0x83, 0x6F, 0xCC, 0x82, 0xC9, 0x83,\n\t0x6F, 0xCC, 0x83, 0xC9, 0x83, 0x6F, 0xCC, 0x84,\n\t0xC9, 0x83, 0x6F, 0xCC, 0x87, 0xC9, 0x83, 0x6F,\n\t0xCC, 0x88, 0xC9, 0x83, 0x6F, 0xCC, 0x9B, 0xAD,\n\t0x83, 0x6F, 0xCC, 0xA3, 0xB5, 0x83, 0x6F, 0xCC,\n\t// Bytes 4780 - 47bf\n\t0xA8, 0xA5, 0x83, 0x72, 0xCC, 0xA3, 0xB5, 0x83,\n\t0x73, 0xCC, 0x81, 0xC9, 0x83, 0x73, 0xCC, 0x8C,\n\t0xC9, 0x83, 0x73, 0xCC, 0xA3, 0xB5, 0x83, 0x75,\n\t0xCC, 0x83, 0xC9, 0x83, 0x75, 0xCC, 0x84, 0xC9,\n\t0x83, 0x75, 0xCC, 0x88, 0xC9, 0x83, 0x75, 0xCC,\n\t0x9B, 0xAD, 0x84, 0xCE, 0x91, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x91, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0x95, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x95, 0xCC,\n\t// Bytes 47c0 - 47ff\n\t0x94, 0xC9, 0x84, 0xCE, 0x97, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x97, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0x99, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x99, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0x9F, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x9F, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0xA5, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xA9, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCE, 0xB1, 0xCC, 0x80, 0xC9, 0x84, 0xCE,\n\t// Bytes 4800 - 483f\n\t0xB1, 0xCC, 0x81, 0xC9, 0x84, 0xCE, 0xB1, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCE, 0xB1, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCE, 0xB1, 0xCD, 0x82, 0xC9, 0x84, 0xCE,\n\t0xB5, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB5, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCC, 0x80, 0xC9,\n\t0x84, 0xCE, 0xB7, 0xCC, 0x81, 0xC9, 0x84, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB7, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xC9,\n\t// Bytes 4840 - 487f\n\t0x84, 0xCE, 0xB9, 0xCC, 0x88, 0xC9, 0x84, 0xCE,\n\t0xB9, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB9, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xBF, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0xBF, 0xCC, 0x94, 0xC9, 0x84, 0xCF,\n\t0x85, 0xCC, 0x88, 0xC9, 0x84, 0xCF, 0x85, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCF, 0x85, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCF, 0x89, 0xCC, 0x80, 0xC9, 0x84, 0xCF,\n\t0x89, 0xCC, 0x81, 0xC9, 0x84, 0xCF, 0x89, 0xCC,\n\t// Bytes 4880 - 48bf\n\t0x93, 0xC9, 0x84, 0xCF, 0x89, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCF, 0x89, 0xCD, 0x82, 0xC9, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t// Bytes 48c0 - 48ff\n\t0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t// Bytes 4900 - 493f\n\t0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t// Bytes 4940 - 497f\n\t0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCF,\n\t// Bytes 4980 - 49bf\n\t0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x42, 0xCC,\n\t0x80, 0xC9, 0x32, 0x42, 0xCC, 0x81, 0xC9, 0x32,\n\t0x42, 0xCC, 0x93, 0xC9, 0x32, 0x43, 0xE1, 0x85,\n\t// Bytes 49c0 - 49ff\n\t0xA1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xA5, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xA9, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00, 0x43,\n\t// Bytes 4a00 - 4a3f\n\t0xE1, 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xAD, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xB1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xB5, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA, 0x01,\n\t// Bytes 4a40 - 4a7f\n\t0x00, 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00, 0x43,\n\t0xE1, 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x86,\n\t0xB0, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1, 0x01,\n\t0x00, 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00, 0x43,\n\t0xE1, 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1, 0x86,\n\t0xB4, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5, 0x01,\n\t0x00, 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x32,\n\t0x43, 0xE3, 0x82, 0x99, 0x0D, 0x03, 0x43, 0xE3,\n\t// Bytes 4a80 - 4abf\n\t0x82, 0x9A, 0x0D, 0x03, 0x46, 0xE0, 0xBD, 0xB1,\n\t0xE0, 0xBD, 0xB2, 0x9E, 0x26, 0x46, 0xE0, 0xBD,\n\t0xB1, 0xE0, 0xBD, 0xB4, 0xA2, 0x26, 0x46, 0xE0,\n\t0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x26, 0x00,\n\t0x01,\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfcTrie. Total size: 10586 bytes (10.34 KiB). Checksum: dd926e82067bee11.\ntype nfcTrie struct{}\n\nfunc newNfcTrie(i int) *nfcTrie {\n\treturn &nfcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 46:\n\t\treturn uint16(nfcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 46\n\t\treturn uint16(nfcSparse.lookup(n, b))\n\t}\n}\n\n// nfcValues: 48 blocks, 3072 entries, 6144 bytes\n// The third block is the zero block.\nvar nfcValues = [3072]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c,\n\t0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb,\n\t0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104,\n\t0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd,\n\t0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235,\n\t0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285,\n\t0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3,\n\t0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750,\n\t0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f,\n\t0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3,\n\t0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 0x104: 0x2f9c, 0x105: 0x32a8,\n\t0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6,\n\t0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5,\n\t0x112: 0x46b0, 0x113: 0x4741, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302,\n\t0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339,\n\t0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352,\n\t0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e,\n\t0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6,\n\t0x130: 0x308c, 0x134: 0x30b4, 0x135: 0x33c0,\n\t0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc,\n\t0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8,\n\t// Block 0x5, offset 0x140\n\t0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118,\n\t0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f,\n\t0x14c: 0x46d3, 0x14d: 0x4764, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c,\n\t0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483,\n\t0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d,\n\t0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba,\n\t0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796,\n\t0x16a: 0x470a, 0x16b: 0x479b, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2,\n\t0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528,\n\t0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267,\n\t0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0xa000,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x8100, 0x185: 0x8100,\n\t0x186: 0x8100,\n\t0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140,\n\t0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8,\n\t0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50,\n\t0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5,\n\t0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf,\n\t0x1aa: 0x46ec, 0x1ab: 0x477d, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd,\n\t0x1b0: 0x33c5, 0x1b4: 0x3028, 0x1b5: 0x3334,\n\t0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46,\n\t0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316,\n\t0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac,\n\t0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479,\n\t0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6,\n\t0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5,\n\t0x1de: 0x305a, 0x1df: 0x3366,\n\t0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b,\n\t0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769,\n\t0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,\n\t0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,\n\t0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932,\n\t0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d,\n\t0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d,\n\t0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d,\n\t0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d,\n\t0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d,\n\t0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,\n\t0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 0x245: 0x9936,\n\t0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,\n\t0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,\n\t0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,\n\t0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135,\n\t0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132,\n\t0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132,\n\t0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132,\n\t0x274: 0x0170,\n\t0x27a: 0x8100,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x8100, 0x285: 0x35a1,\n\t0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625,\n\t0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 0x2af: 0x36a9,\n\t0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x3721, 0x2c1: 0x372d, 0x2c3: 0x371b,\n\t0x2c6: 0xa000, 0x2c7: 0x3709,\n\t0x2cc: 0x375d, 0x2cd: 0x3745, 0x2ce: 0x376f, 0x2d0: 0xa000,\n\t0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000,\n\t0x2d8: 0xa000, 0x2d9: 0x3751, 0x2da: 0xa000,\n\t0x2de: 0xa000, 0x2e3: 0xa000,\n\t0x2e7: 0xa000,\n\t0x2eb: 0xa000, 0x2ed: 0xa000,\n\t0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000,\n\t0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x37d5, 0x2fa: 0xa000,\n\t0x2fe: 0xa000,\n\t// Block 0xc, offset 0x300\n\t0x301: 0x3733, 0x302: 0x37b7,\n\t0x310: 0x370f, 0x311: 0x3793,\n\t0x312: 0x3715, 0x313: 0x3799, 0x316: 0x3727, 0x317: 0x37ab,\n\t0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3829, 0x31b: 0x382f, 0x31c: 0x3739, 0x31d: 0x37bd,\n\t0x31e: 0x373f, 0x31f: 0x37c3, 0x322: 0x374b, 0x323: 0x37cf,\n\t0x324: 0x3757, 0x325: 0x37db, 0x326: 0x3763, 0x327: 0x37e7, 0x328: 0xa000, 0x329: 0xa000,\n\t0x32a: 0x3835, 0x32b: 0x383b, 0x32c: 0x378d, 0x32d: 0x3811, 0x32e: 0x3769, 0x32f: 0x37ed,\n\t0x330: 0x3775, 0x331: 0x37f9, 0x332: 0x377b, 0x333: 0x37ff, 0x334: 0x3781, 0x335: 0x3805,\n\t0x338: 0x3787, 0x339: 0x380b,\n\t// Block 0xd, offset 0x340\n\t0x351: 0x812d,\n\t0x352: 0x8132, 0x353: 0x8132, 0x354: 0x8132, 0x355: 0x8132, 0x356: 0x812d, 0x357: 0x8132,\n\t0x358: 0x8132, 0x359: 0x8132, 0x35a: 0x812e, 0x35b: 0x812d, 0x35c: 0x8132, 0x35d: 0x8132,\n\t0x35e: 0x8132, 0x35f: 0x8132, 0x360: 0x8132, 0x361: 0x8132, 0x362: 0x812d, 0x363: 0x812d,\n\t0x364: 0x812d, 0x365: 0x812d, 0x366: 0x812d, 0x367: 0x812d, 0x368: 0x8132, 0x369: 0x8132,\n\t0x36a: 0x812d, 0x36b: 0x8132, 0x36c: 0x8132, 0x36d: 0x812e, 0x36e: 0x8131, 0x36f: 0x8132,\n\t0x370: 0x8105, 0x371: 0x8106, 0x372: 0x8107, 0x373: 0x8108, 0x374: 0x8109, 0x375: 0x810a,\n\t0x376: 0x810b, 0x377: 0x810c, 0x378: 0x810d, 0x379: 0x810e, 0x37a: 0x810e, 0x37b: 0x810f,\n\t0x37c: 0x8110, 0x37d: 0x8111, 0x37f: 0x8112,\n\t// Block 0xe, offset 0x380\n\t0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8116,\n\t0x38c: 0x8117, 0x38d: 0x8118, 0x38e: 0x8119, 0x38f: 0x811a, 0x390: 0x811b, 0x391: 0x811c,\n\t0x392: 0x811d, 0x393: 0x9932, 0x394: 0x9932, 0x395: 0x992d, 0x396: 0x812d, 0x397: 0x8132,\n\t0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x8132, 0x39b: 0x8132, 0x39c: 0x812d, 0x39d: 0x8132,\n\t0x39e: 0x8132, 0x39f: 0x812d,\n\t0x3b0: 0x811e,\n\t// Block 0xf, offset 0x3c0\n\t0x3d3: 0x812d, 0x3d4: 0x8132, 0x3d5: 0x8132, 0x3d6: 0x8132, 0x3d7: 0x8132,\n\t0x3d8: 0x8132, 0x3d9: 0x8132, 0x3da: 0x8132, 0x3db: 0x8132, 0x3dc: 0x8132, 0x3dd: 0x8132,\n\t0x3de: 0x8132, 0x3df: 0x8132, 0x3e0: 0x8132, 0x3e1: 0x8132, 0x3e3: 0x812d,\n\t0x3e4: 0x8132, 0x3e5: 0x8132, 0x3e6: 0x812d, 0x3e7: 0x8132, 0x3e8: 0x8132, 0x3e9: 0x812d,\n\t0x3ea: 0x8132, 0x3eb: 0x8132, 0x3ec: 0x8132, 0x3ed: 0x812d, 0x3ee: 0x812d, 0x3ef: 0x812d,\n\t0x3f0: 0x8116, 0x3f1: 0x8117, 0x3f2: 0x8118, 0x3f3: 0x8132, 0x3f4: 0x8132, 0x3f5: 0x8132,\n\t0x3f6: 0x812d, 0x3f7: 0x8132, 0x3f8: 0x8132, 0x3f9: 0x812d, 0x3fa: 0x812d, 0x3fb: 0x8132,\n\t0x3fc: 0x8132, 0x3fd: 0x8132, 0x3fe: 0x8132, 0x3ff: 0x8132,\n\t// Block 0x10, offset 0x400\n\t0x405: 0xa000,\n\t0x406: 0x2d26, 0x407: 0xa000, 0x408: 0x2d2e, 0x409: 0xa000, 0x40a: 0x2d36, 0x40b: 0xa000,\n\t0x40c: 0x2d3e, 0x40d: 0xa000, 0x40e: 0x2d46, 0x411: 0xa000,\n\t0x412: 0x2d4e,\n\t0x434: 0x8102, 0x435: 0x9900,\n\t0x43a: 0xa000, 0x43b: 0x2d56,\n\t0x43c: 0xa000, 0x43d: 0x2d5e, 0x43e: 0xa000, 0x43f: 0xa000,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x8132, 0x441: 0x8132, 0x442: 0x812d, 0x443: 0x8132, 0x444: 0x8132, 0x445: 0x8132,\n\t0x446: 0x8132, 0x447: 0x8132, 0x448: 0x8132, 0x449: 0x8132, 0x44a: 0x812d, 0x44b: 0x8132,\n\t0x44c: 0x8132, 0x44d: 0x8135, 0x44e: 0x812a, 0x44f: 0x812d, 0x450: 0x8129, 0x451: 0x8132,\n\t0x452: 0x8132, 0x453: 0x8132, 0x454: 0x8132, 0x455: 0x8132, 0x456: 0x8132, 0x457: 0x8132,\n\t0x458: 0x8132, 0x459: 0x8132, 0x45a: 0x8132, 0x45b: 0x8132, 0x45c: 0x8132, 0x45d: 0x8132,\n\t0x45e: 0x8132, 0x45f: 0x8132, 0x460: 0x8132, 0x461: 0x8132, 0x462: 0x8132, 0x463: 0x8132,\n\t0x464: 0x8132, 0x465: 0x8132, 0x466: 0x8132, 0x467: 0x8132, 0x468: 0x8132, 0x469: 0x8132,\n\t0x46a: 0x8132, 0x46b: 0x8132, 0x46c: 0x8132, 0x46d: 0x8132, 0x46e: 0x8132, 0x46f: 0x8132,\n\t0x470: 0x8132, 0x471: 0x8132, 0x472: 0x8132, 0x473: 0x8132, 0x474: 0x8132, 0x475: 0x8132,\n\t0x476: 0x8133, 0x477: 0x8131, 0x478: 0x8131, 0x479: 0x812d, 0x47b: 0x8132,\n\t0x47c: 0x8134, 0x47d: 0x812d, 0x47e: 0x8132, 0x47f: 0x812d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x2f97, 0x481: 0x32a3, 0x482: 0x2fa1, 0x483: 0x32ad, 0x484: 0x2fa6, 0x485: 0x32b2,\n\t0x486: 0x2fab, 0x487: 0x32b7, 0x488: 0x38cc, 0x489: 0x3a5b, 0x48a: 0x2fc4, 0x48b: 0x32d0,\n\t0x48c: 0x2fce, 0x48d: 0x32da, 0x48e: 0x2fdd, 0x48f: 0x32e9, 0x490: 0x2fd3, 0x491: 0x32df,\n\t0x492: 0x2fd8, 0x493: 0x32e4, 0x494: 0x38ef, 0x495: 0x3a7e, 0x496: 0x38f6, 0x497: 0x3a85,\n\t0x498: 0x3019, 0x499: 0x3325, 0x49a: 0x301e, 0x49b: 0x332a, 0x49c: 0x3904, 0x49d: 0x3a93,\n\t0x49e: 0x3023, 0x49f: 0x332f, 0x4a0: 0x3032, 0x4a1: 0x333e, 0x4a2: 0x3050, 0x4a3: 0x335c,\n\t0x4a4: 0x305f, 0x4a5: 0x336b, 0x4a6: 0x3055, 0x4a7: 0x3361, 0x4a8: 0x3064, 0x4a9: 0x3370,\n\t0x4aa: 0x3069, 0x4ab: 0x3375, 0x4ac: 0x30af, 0x4ad: 0x33bb, 0x4ae: 0x390b, 0x4af: 0x3a9a,\n\t0x4b0: 0x30b9, 0x4b1: 0x33ca, 0x4b2: 0x30c3, 0x4b3: 0x33d4, 0x4b4: 0x30cd, 0x4b5: 0x33de,\n\t0x4b6: 0x46c4, 0x4b7: 0x4755, 0x4b8: 0x3912, 0x4b9: 0x3aa1, 0x4ba: 0x30e6, 0x4bb: 0x33f7,\n\t0x4bc: 0x30e1, 0x4bd: 0x33f2, 0x4be: 0x30eb, 0x4bf: 0x33fc,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x30f0, 0x4c1: 0x3401, 0x4c2: 0x30f5, 0x4c3: 0x3406, 0x4c4: 0x3109, 0x4c5: 0x341a,\n\t0x4c6: 0x3113, 0x4c7: 0x3424, 0x4c8: 0x3122, 0x4c9: 0x3433, 0x4ca: 0x311d, 0x4cb: 0x342e,\n\t0x4cc: 0x3935, 0x4cd: 0x3ac4, 0x4ce: 0x3943, 0x4cf: 0x3ad2, 0x4d0: 0x394a, 0x4d1: 0x3ad9,\n\t0x4d2: 0x3951, 0x4d3: 0x3ae0, 0x4d4: 0x314f, 0x4d5: 0x3460, 0x4d6: 0x3154, 0x4d7: 0x3465,\n\t0x4d8: 0x315e, 0x4d9: 0x346f, 0x4da: 0x46f1, 0x4db: 0x4782, 0x4dc: 0x3997, 0x4dd: 0x3b26,\n\t0x4de: 0x3177, 0x4df: 0x3488, 0x4e0: 0x3181, 0x4e1: 0x3492, 0x4e2: 0x4700, 0x4e3: 0x4791,\n\t0x4e4: 0x399e, 0x4e5: 0x3b2d, 0x4e6: 0x39a5, 0x4e7: 0x3b34, 0x4e8: 0x39ac, 0x4e9: 0x3b3b,\n\t0x4ea: 0x3190, 0x4eb: 0x34a1, 0x4ec: 0x319a, 0x4ed: 0x34b0, 0x4ee: 0x31ae, 0x4ef: 0x34c4,\n\t0x4f0: 0x31a9, 0x4f1: 0x34bf, 0x4f2: 0x31ea, 0x4f3: 0x3500, 0x4f4: 0x31f9, 0x4f5: 0x350f,\n\t0x4f6: 0x31f4, 0x4f7: 0x350a, 0x4f8: 0x39b3, 0x4f9: 0x3b42, 0x4fa: 0x39ba, 0x4fb: 0x3b49,\n\t0x4fc: 0x31fe, 0x4fd: 0x3514, 0x4fe: 0x3203, 0x4ff: 0x3519,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x3208, 0x501: 0x351e, 0x502: 0x320d, 0x503: 0x3523, 0x504: 0x321c, 0x505: 0x3532,\n\t0x506: 0x3217, 0x507: 0x352d, 0x508: 0x3221, 0x509: 0x353c, 0x50a: 0x3226, 0x50b: 0x3541,\n\t0x50c: 0x322b, 0x50d: 0x3546, 0x50e: 0x3249, 0x50f: 0x3564, 0x510: 0x3262, 0x511: 0x3582,\n\t0x512: 0x3271, 0x513: 0x3591, 0x514: 0x3276, 0x515: 0x3596, 0x516: 0x337a, 0x517: 0x34a6,\n\t0x518: 0x3537, 0x519: 0x3573, 0x51b: 0x35d1,\n\t0x520: 0x46a1, 0x521: 0x4732, 0x522: 0x2f83, 0x523: 0x328f,\n\t0x524: 0x3878, 0x525: 0x3a07, 0x526: 0x3871, 0x527: 0x3a00, 0x528: 0x3886, 0x529: 0x3a15,\n\t0x52a: 0x387f, 0x52b: 0x3a0e, 0x52c: 0x38be, 0x52d: 0x3a4d, 0x52e: 0x3894, 0x52f: 0x3a23,\n\t0x530: 0x388d, 0x531: 0x3a1c, 0x532: 0x38a2, 0x533: 0x3a31, 0x534: 0x389b, 0x535: 0x3a2a,\n\t0x536: 0x38c5, 0x537: 0x3a54, 0x538: 0x46b5, 0x539: 0x4746, 0x53a: 0x3000, 0x53b: 0x330c,\n\t0x53c: 0x2fec, 0x53d: 0x32f8, 0x53e: 0x38da, 0x53f: 0x3a69,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x38d3, 0x541: 0x3a62, 0x542: 0x38e8, 0x543: 0x3a77, 0x544: 0x38e1, 0x545: 0x3a70,\n\t0x546: 0x38fd, 0x547: 0x3a8c, 0x548: 0x3091, 0x549: 0x339d, 0x54a: 0x30a5, 0x54b: 0x33b1,\n\t0x54c: 0x46e7, 0x54d: 0x4778, 0x54e: 0x3136, 0x54f: 0x3447, 0x550: 0x3920, 0x551: 0x3aaf,\n\t0x552: 0x3919, 0x553: 0x3aa8, 0x554: 0x392e, 0x555: 0x3abd, 0x556: 0x3927, 0x557: 0x3ab6,\n\t0x558: 0x3989, 0x559: 0x3b18, 0x55a: 0x396d, 0x55b: 0x3afc, 0x55c: 0x3966, 0x55d: 0x3af5,\n\t0x55e: 0x397b, 0x55f: 0x3b0a, 0x560: 0x3974, 0x561: 0x3b03, 0x562: 0x3982, 0x563: 0x3b11,\n\t0x564: 0x31e5, 0x565: 0x34fb, 0x566: 0x31c7, 0x567: 0x34dd, 0x568: 0x39e4, 0x569: 0x3b73,\n\t0x56a: 0x39dd, 0x56b: 0x3b6c, 0x56c: 0x39f2, 0x56d: 0x3b81, 0x56e: 0x39eb, 0x56f: 0x3b7a,\n\t0x570: 0x39f9, 0x571: 0x3b88, 0x572: 0x3230, 0x573: 0x354b, 0x574: 0x3258, 0x575: 0x3578,\n\t0x576: 0x3253, 0x577: 0x356e, 0x578: 0x323f, 0x579: 0x355a,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x4804, 0x581: 0x480a, 0x582: 0x491e, 0x583: 0x4936, 0x584: 0x4926, 0x585: 0x493e,\n\t0x586: 0x492e, 0x587: 0x4946, 0x588: 0x47aa, 0x589: 0x47b0, 0x58a: 0x488e, 0x58b: 0x48a6,\n\t0x58c: 0x4896, 0x58d: 0x48ae, 0x58e: 0x489e, 0x58f: 0x48b6, 0x590: 0x4816, 0x591: 0x481c,\n\t0x592: 0x3db8, 0x593: 0x3dc8, 0x594: 0x3dc0, 0x595: 0x3dd0,\n\t0x598: 0x47b6, 0x599: 0x47bc, 0x59a: 0x3ce8, 0x59b: 0x3cf8, 0x59c: 0x3cf0, 0x59d: 0x3d00,\n\t0x5a0: 0x482e, 0x5a1: 0x4834, 0x5a2: 0x494e, 0x5a3: 0x4966,\n\t0x5a4: 0x4956, 0x5a5: 0x496e, 0x5a6: 0x495e, 0x5a7: 0x4976, 0x5a8: 0x47c2, 0x5a9: 0x47c8,\n\t0x5aa: 0x48be, 0x5ab: 0x48d6, 0x5ac: 0x48c6, 0x5ad: 0x48de, 0x5ae: 0x48ce, 0x5af: 0x48e6,\n\t0x5b0: 0x4846, 0x5b1: 0x484c, 0x5b2: 0x3e18, 0x5b3: 0x3e30, 0x5b4: 0x3e20, 0x5b5: 0x3e38,\n\t0x5b6: 0x3e28, 0x5b7: 0x3e40, 0x5b8: 0x47ce, 0x5b9: 0x47d4, 0x5ba: 0x3d18, 0x5bb: 0x3d30,\n\t0x5bc: 0x3d20, 0x5bd: 0x3d38, 0x5be: 0x3d28, 0x5bf: 0x3d40,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x4852, 0x5c1: 0x4858, 0x5c2: 0x3e48, 0x5c3: 0x3e58, 0x5c4: 0x3e50, 0x5c5: 0x3e60,\n\t0x5c8: 0x47da, 0x5c9: 0x47e0, 0x5ca: 0x3d48, 0x5cb: 0x3d58,\n\t0x5cc: 0x3d50, 0x5cd: 0x3d60, 0x5d0: 0x4864, 0x5d1: 0x486a,\n\t0x5d2: 0x3e80, 0x5d3: 0x3e98, 0x5d4: 0x3e88, 0x5d5: 0x3ea0, 0x5d6: 0x3e90, 0x5d7: 0x3ea8,\n\t0x5d9: 0x47e6, 0x5db: 0x3d68, 0x5dd: 0x3d70,\n\t0x5df: 0x3d78, 0x5e0: 0x487c, 0x5e1: 0x4882, 0x5e2: 0x497e, 0x5e3: 0x4996,\n\t0x5e4: 0x4986, 0x5e5: 0x499e, 0x5e6: 0x498e, 0x5e7: 0x49a6, 0x5e8: 0x47ec, 0x5e9: 0x47f2,\n\t0x5ea: 0x48ee, 0x5eb: 0x4906, 0x5ec: 0x48f6, 0x5ed: 0x490e, 0x5ee: 0x48fe, 0x5ef: 0x4916,\n\t0x5f0: 0x47f8, 0x5f1: 0x431e, 0x5f2: 0x3691, 0x5f3: 0x4324, 0x5f4: 0x4822, 0x5f5: 0x432a,\n\t0x5f6: 0x36a3, 0x5f7: 0x4330, 0x5f8: 0x36c1, 0x5f9: 0x4336, 0x5fa: 0x36d9, 0x5fb: 0x433c,\n\t0x5fc: 0x4870, 0x5fd: 0x4342,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3da0, 0x601: 0x3da8, 0x602: 0x4184, 0x603: 0x41a2, 0x604: 0x418e, 0x605: 0x41ac,\n\t0x606: 0x4198, 0x607: 0x41b6, 0x608: 0x3cd8, 0x609: 0x3ce0, 0x60a: 0x40d0, 0x60b: 0x40ee,\n\t0x60c: 0x40da, 0x60d: 0x40f8, 0x60e: 0x40e4, 0x60f: 0x4102, 0x610: 0x3de8, 0x611: 0x3df0,\n\t0x612: 0x41c0, 0x613: 0x41de, 0x614: 0x41ca, 0x615: 0x41e8, 0x616: 0x41d4, 0x617: 0x41f2,\n\t0x618: 0x3d08, 0x619: 0x3d10, 0x61a: 0x410c, 0x61b: 0x412a, 0x61c: 0x4116, 0x61d: 0x4134,\n\t0x61e: 0x4120, 0x61f: 0x413e, 0x620: 0x3ec0, 0x621: 0x3ec8, 0x622: 0x41fc, 0x623: 0x421a,\n\t0x624: 0x4206, 0x625: 0x4224, 0x626: 0x4210, 0x627: 0x422e, 0x628: 0x3d80, 0x629: 0x3d88,\n\t0x62a: 0x4148, 0x62b: 0x4166, 0x62c: 0x4152, 0x62d: 0x4170, 0x62e: 0x415c, 0x62f: 0x417a,\n\t0x630: 0x3685, 0x631: 0x367f, 0x632: 0x3d90, 0x633: 0x368b, 0x634: 0x3d98,\n\t0x636: 0x4810, 0x637: 0x3db0, 0x638: 0x35f5, 0x639: 0x35ef, 0x63a: 0x35e3, 0x63b: 0x42ee,\n\t0x63c: 0x35fb, 0x63d: 0x8100, 0x63e: 0x01d3, 0x63f: 0xa100,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x8100, 0x641: 0x35a7, 0x642: 0x3dd8, 0x643: 0x369d, 0x644: 0x3de0,\n\t0x646: 0x483a, 0x647: 0x3df8, 0x648: 0x3601, 0x649: 0x42f4, 0x64a: 0x360d, 0x64b: 0x42fa,\n\t0x64c: 0x3619, 0x64d: 0x3b8f, 0x64e: 0x3b96, 0x64f: 0x3b9d, 0x650: 0x36b5, 0x651: 0x36af,\n\t0x652: 0x3e00, 0x653: 0x44e4, 0x656: 0x36bb, 0x657: 0x3e10,\n\t0x658: 0x3631, 0x659: 0x362b, 0x65a: 0x361f, 0x65b: 0x4300, 0x65d: 0x3ba4,\n\t0x65e: 0x3bab, 0x65f: 0x3bb2, 0x660: 0x36eb, 0x661: 0x36e5, 0x662: 0x3e68, 0x663: 0x44ec,\n\t0x664: 0x36cd, 0x665: 0x36d3, 0x666: 0x36f1, 0x667: 0x3e78, 0x668: 0x3661, 0x669: 0x365b,\n\t0x66a: 0x364f, 0x66b: 0x430c, 0x66c: 0x3649, 0x66d: 0x359b, 0x66e: 0x42e8, 0x66f: 0x0081,\n\t0x672: 0x3eb0, 0x673: 0x36f7, 0x674: 0x3eb8,\n\t0x676: 0x4888, 0x677: 0x3ed0, 0x678: 0x363d, 0x679: 0x4306, 0x67a: 0x366d, 0x67b: 0x4318,\n\t0x67c: 0x3679, 0x67d: 0x4256, 0x67e: 0xa100,\n\t// Block 0x1a, offset 0x680\n\t0x681: 0x3c06, 0x683: 0xa000, 0x684: 0x3c0d, 0x685: 0xa000,\n\t0x687: 0x3c14, 0x688: 0xa000, 0x689: 0x3c1b,\n\t0x68d: 0xa000,\n\t0x6a0: 0x2f65, 0x6a1: 0xa000, 0x6a2: 0x3c29,\n\t0x6a4: 0xa000, 0x6a5: 0xa000,\n\t0x6ad: 0x3c22, 0x6ae: 0x2f60, 0x6af: 0x2f6a,\n\t0x6b0: 0x3c30, 0x6b1: 0x3c37, 0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0x3c3e, 0x6b5: 0x3c45,\n\t0x6b6: 0xa000, 0x6b7: 0xa000, 0x6b8: 0x3c4c, 0x6b9: 0x3c53, 0x6ba: 0xa000, 0x6bb: 0xa000,\n\t0x6bc: 0xa000, 0x6bd: 0xa000,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3c5a, 0x6c1: 0x3c61, 0x6c2: 0xa000, 0x6c3: 0xa000, 0x6c4: 0x3c76, 0x6c5: 0x3c7d,\n\t0x6c6: 0xa000, 0x6c7: 0xa000, 0x6c8: 0x3c84, 0x6c9: 0x3c8b,\n\t0x6d1: 0xa000,\n\t0x6d2: 0xa000,\n\t0x6e2: 0xa000,\n\t0x6e8: 0xa000, 0x6e9: 0xa000,\n\t0x6eb: 0xa000, 0x6ec: 0x3ca0, 0x6ed: 0x3ca7, 0x6ee: 0x3cae, 0x6ef: 0x3cb5,\n\t0x6f2: 0xa000, 0x6f3: 0xa000, 0x6f4: 0xa000, 0x6f5: 0xa000,\n\t// Block 0x1c, offset 0x700\n\t0x706: 0xa000, 0x70b: 0xa000,\n\t0x70c: 0x3f08, 0x70d: 0xa000, 0x70e: 0x3f10, 0x70f: 0xa000, 0x710: 0x3f18, 0x711: 0xa000,\n\t0x712: 0x3f20, 0x713: 0xa000, 0x714: 0x3f28, 0x715: 0xa000, 0x716: 0x3f30, 0x717: 0xa000,\n\t0x718: 0x3f38, 0x719: 0xa000, 0x71a: 0x3f40, 0x71b: 0xa000, 0x71c: 0x3f48, 0x71d: 0xa000,\n\t0x71e: 0x3f50, 0x71f: 0xa000, 0x720: 0x3f58, 0x721: 0xa000, 0x722: 0x3f60,\n\t0x724: 0xa000, 0x725: 0x3f68, 0x726: 0xa000, 0x727: 0x3f70, 0x728: 0xa000, 0x729: 0x3f78,\n\t0x72f: 0xa000,\n\t0x730: 0x3f80, 0x731: 0x3f88, 0x732: 0xa000, 0x733: 0x3f90, 0x734: 0x3f98, 0x735: 0xa000,\n\t0x736: 0x3fa0, 0x737: 0x3fa8, 0x738: 0xa000, 0x739: 0x3fb0, 0x73a: 0x3fb8, 0x73b: 0xa000,\n\t0x73c: 0x3fc0, 0x73d: 0x3fc8,\n\t// Block 0x1d, offset 0x740\n\t0x754: 0x3f00,\n\t0x759: 0x9903, 0x75a: 0x9903, 0x75b: 0x8100, 0x75c: 0x8100, 0x75d: 0xa000,\n\t0x75e: 0x3fd0,\n\t0x766: 0xa000,\n\t0x76b: 0xa000, 0x76c: 0x3fe0, 0x76d: 0xa000, 0x76e: 0x3fe8, 0x76f: 0xa000,\n\t0x770: 0x3ff0, 0x771: 0xa000, 0x772: 0x3ff8, 0x773: 0xa000, 0x774: 0x4000, 0x775: 0xa000,\n\t0x776: 0x4008, 0x777: 0xa000, 0x778: 0x4010, 0x779: 0xa000, 0x77a: 0x4018, 0x77b: 0xa000,\n\t0x77c: 0x4020, 0x77d: 0xa000, 0x77e: 0x4028, 0x77f: 0xa000,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x4030, 0x781: 0xa000, 0x782: 0x4038, 0x784: 0xa000, 0x785: 0x4040,\n\t0x786: 0xa000, 0x787: 0x4048, 0x788: 0xa000, 0x789: 0x4050,\n\t0x78f: 0xa000, 0x790: 0x4058, 0x791: 0x4060,\n\t0x792: 0xa000, 0x793: 0x4068, 0x794: 0x4070, 0x795: 0xa000, 0x796: 0x4078, 0x797: 0x4080,\n\t0x798: 0xa000, 0x799: 0x4088, 0x79a: 0x4090, 0x79b: 0xa000, 0x79c: 0x4098, 0x79d: 0x40a0,\n\t0x7af: 0xa000,\n\t0x7b0: 0xa000, 0x7b1: 0xa000, 0x7b2: 0xa000, 0x7b4: 0x3fd8,\n\t0x7b7: 0x40a8, 0x7b8: 0x40b0, 0x7b9: 0x40b8, 0x7ba: 0x40c0,\n\t0x7bd: 0xa000, 0x7be: 0x40c8,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x1377, 0x7c1: 0x0cfb, 0x7c2: 0x13d3, 0x7c3: 0x139f, 0x7c4: 0x0e57, 0x7c5: 0x06eb,\n\t0x7c6: 0x08df, 0x7c7: 0x162b, 0x7c8: 0x162b, 0x7c9: 0x0a0b, 0x7ca: 0x145f, 0x7cb: 0x0943,\n\t0x7cc: 0x0a07, 0x7cd: 0x0bef, 0x7ce: 0x0fcf, 0x7cf: 0x115f, 0x7d0: 0x1297, 0x7d1: 0x12d3,\n\t0x7d2: 0x1307, 0x7d3: 0x141b, 0x7d4: 0x0d73, 0x7d5: 0x0dff, 0x7d6: 0x0eab, 0x7d7: 0x0f43,\n\t0x7d8: 0x125f, 0x7d9: 0x1447, 0x7da: 0x1573, 0x7db: 0x070f, 0x7dc: 0x08b3, 0x7dd: 0x0d87,\n\t0x7de: 0x0ecf, 0x7df: 0x1293, 0x7e0: 0x15c3, 0x7e1: 0x0ab3, 0x7e2: 0x0e77, 0x7e3: 0x1283,\n\t0x7e4: 0x1317, 0x7e5: 0x0c23, 0x7e6: 0x11bb, 0x7e7: 0x12df, 0x7e8: 0x0b1f, 0x7e9: 0x0d0f,\n\t0x7ea: 0x0e17, 0x7eb: 0x0f1b, 0x7ec: 0x1427, 0x7ed: 0x074f, 0x7ee: 0x07e7, 0x7ef: 0x0853,\n\t0x7f0: 0x0c8b, 0x7f1: 0x0d7f, 0x7f2: 0x0ecb, 0x7f3: 0x0fef, 0x7f4: 0x1177, 0x7f5: 0x128b,\n\t0x7f6: 0x12a3, 0x7f7: 0x13c7, 0x7f8: 0x14ef, 0x7f9: 0x15a3, 0x7fa: 0x15bf, 0x7fb: 0x102b,\n\t0x7fc: 0x106b, 0x7fd: 0x1123, 0x7fe: 0x1243, 0x7ff: 0x147b,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x15cb, 0x801: 0x134b, 0x802: 0x09c7, 0x803: 0x0b3b, 0x804: 0x10db, 0x805: 0x119b,\n\t0x806: 0x0eff, 0x807: 0x1033, 0x808: 0x1397, 0x809: 0x14e7, 0x80a: 0x09c3, 0x80b: 0x0a8f,\n\t0x80c: 0x0d77, 0x80d: 0x0e2b, 0x80e: 0x0e5f, 0x80f: 0x1113, 0x810: 0x113b, 0x811: 0x14a7,\n\t0x812: 0x084f, 0x813: 0x11a7, 0x814: 0x07f3, 0x815: 0x07ef, 0x816: 0x1097, 0x817: 0x1127,\n\t0x818: 0x125b, 0x819: 0x14af, 0x81a: 0x1367, 0x81b: 0x0c27, 0x81c: 0x0d73, 0x81d: 0x1357,\n\t0x81e: 0x06f7, 0x81f: 0x0a63, 0x820: 0x0b93, 0x821: 0x0f2f, 0x822: 0x0faf, 0x823: 0x0873,\n\t0x824: 0x103b, 0x825: 0x075f, 0x826: 0x0b77, 0x827: 0x06d7, 0x828: 0x0deb, 0x829: 0x0ca3,\n\t0x82a: 0x110f, 0x82b: 0x08c7, 0x82c: 0x09b3, 0x82d: 0x0ffb, 0x82e: 0x1263, 0x82f: 0x133b,\n\t0x830: 0x0db7, 0x831: 0x13f7, 0x832: 0x0de3, 0x833: 0x0c37, 0x834: 0x121b, 0x835: 0x0c57,\n\t0x836: 0x0fab, 0x837: 0x072b, 0x838: 0x07a7, 0x839: 0x07eb, 0x83a: 0x0d53, 0x83b: 0x10fb,\n\t0x83c: 0x11f3, 0x83d: 0x1347, 0x83e: 0x145b, 0x83f: 0x085b,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x090f, 0x841: 0x0a17, 0x842: 0x0b2f, 0x843: 0x0cbf, 0x844: 0x0e7b, 0x845: 0x103f,\n\t0x846: 0x1497, 0x847: 0x157b, 0x848: 0x15cf, 0x849: 0x15e7, 0x84a: 0x0837, 0x84b: 0x0cf3,\n\t0x84c: 0x0da3, 0x84d: 0x13eb, 0x84e: 0x0afb, 0x84f: 0x0bd7, 0x850: 0x0bf3, 0x851: 0x0c83,\n\t0x852: 0x0e6b, 0x853: 0x0eb7, 0x854: 0x0f67, 0x855: 0x108b, 0x856: 0x112f, 0x857: 0x1193,\n\t0x858: 0x13db, 0x859: 0x126b, 0x85a: 0x1403, 0x85b: 0x147f, 0x85c: 0x080f, 0x85d: 0x083b,\n\t0x85e: 0x0923, 0x85f: 0x0ea7, 0x860: 0x12f3, 0x861: 0x133b, 0x862: 0x0b1b, 0x863: 0x0b8b,\n\t0x864: 0x0c4f, 0x865: 0x0daf, 0x866: 0x10d7, 0x867: 0x0f23, 0x868: 0x073b, 0x869: 0x097f,\n\t0x86a: 0x0a63, 0x86b: 0x0ac7, 0x86c: 0x0b97, 0x86d: 0x0f3f, 0x86e: 0x0f5b, 0x86f: 0x116b,\n\t0x870: 0x118b, 0x871: 0x1463, 0x872: 0x14e3, 0x873: 0x14f3, 0x874: 0x152f, 0x875: 0x0753,\n\t0x876: 0x107f, 0x877: 0x144f, 0x878: 0x14cb, 0x879: 0x0baf, 0x87a: 0x0717, 0x87b: 0x0777,\n\t0x87c: 0x0a67, 0x87d: 0x0a87, 0x87e: 0x0caf, 0x87f: 0x0d73,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0ec3, 0x881: 0x0fcb, 0x882: 0x1277, 0x883: 0x1417, 0x884: 0x1623, 0x885: 0x0ce3,\n\t0x886: 0x14a3, 0x887: 0x0833, 0x888: 0x0d2f, 0x889: 0x0d3b, 0x88a: 0x0e0f, 0x88b: 0x0e47,\n\t0x88c: 0x0f4b, 0x88d: 0x0fa7, 0x88e: 0x1027, 0x88f: 0x110b, 0x890: 0x153b, 0x891: 0x07af,\n\t0x892: 0x0c03, 0x893: 0x14b3, 0x894: 0x0767, 0x895: 0x0aab, 0x896: 0x0e2f, 0x897: 0x13df,\n\t0x898: 0x0b67, 0x899: 0x0bb7, 0x89a: 0x0d43, 0x89b: 0x0f2f, 0x89c: 0x14bb, 0x89d: 0x0817,\n\t0x89e: 0x08ff, 0x89f: 0x0a97, 0x8a0: 0x0cd3, 0x8a1: 0x0d1f, 0x8a2: 0x0d5f, 0x8a3: 0x0df3,\n\t0x8a4: 0x0f47, 0x8a5: 0x0fbb, 0x8a6: 0x1157, 0x8a7: 0x12f7, 0x8a8: 0x1303, 0x8a9: 0x1457,\n\t0x8aa: 0x14d7, 0x8ab: 0x0883, 0x8ac: 0x0e4b, 0x8ad: 0x0903, 0x8ae: 0x0ec7, 0x8af: 0x0f6b,\n\t0x8b0: 0x1287, 0x8b1: 0x14bf, 0x8b2: 0x15ab, 0x8b3: 0x15d3, 0x8b4: 0x0d37, 0x8b5: 0x0e27,\n\t0x8b6: 0x11c3, 0x8b7: 0x10b7, 0x8b8: 0x10c3, 0x8b9: 0x10e7, 0x8ba: 0x0f17, 0x8bb: 0x0e9f,\n\t0x8bc: 0x1363, 0x8bd: 0x0733, 0x8be: 0x122b, 0x8bf: 0x081b,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x080b, 0x8c1: 0x0b0b, 0x8c2: 0x0c2b, 0x8c3: 0x10f3, 0x8c4: 0x0a53, 0x8c5: 0x0e03,\n\t0x8c6: 0x0cef, 0x8c7: 0x13e7, 0x8c8: 0x12e7, 0x8c9: 0x14ab, 0x8ca: 0x1323, 0x8cb: 0x0b27,\n\t0x8cc: 0x0787, 0x8cd: 0x095b, 0x8d0: 0x09af,\n\t0x8d2: 0x0cdf, 0x8d5: 0x07f7, 0x8d6: 0x0f1f, 0x8d7: 0x0fe3,\n\t0x8d8: 0x1047, 0x8d9: 0x1063, 0x8da: 0x1067, 0x8db: 0x107b, 0x8dc: 0x14fb, 0x8dd: 0x10eb,\n\t0x8de: 0x116f, 0x8e0: 0x128f, 0x8e2: 0x1353,\n\t0x8e5: 0x1407, 0x8e6: 0x1433,\n\t0x8ea: 0x154f, 0x8eb: 0x1553, 0x8ec: 0x1557, 0x8ed: 0x15bb, 0x8ee: 0x142b, 0x8ef: 0x14c7,\n\t0x8f0: 0x0757, 0x8f1: 0x077b, 0x8f2: 0x078f, 0x8f3: 0x084b, 0x8f4: 0x0857, 0x8f5: 0x0897,\n\t0x8f6: 0x094b, 0x8f7: 0x0967, 0x8f8: 0x096f, 0x8f9: 0x09ab, 0x8fa: 0x09b7, 0x8fb: 0x0a93,\n\t0x8fc: 0x0a9b, 0x8fd: 0x0ba3, 0x8fe: 0x0bcb, 0x8ff: 0x0bd3,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0beb, 0x901: 0x0c97, 0x902: 0x0cc7, 0x903: 0x0ce7, 0x904: 0x0d57, 0x905: 0x0e1b,\n\t0x906: 0x0e37, 0x907: 0x0e67, 0x908: 0x0ebb, 0x909: 0x0edb, 0x90a: 0x0f4f, 0x90b: 0x102f,\n\t0x90c: 0x104b, 0x90d: 0x1053, 0x90e: 0x104f, 0x90f: 0x1057, 0x910: 0x105b, 0x911: 0x105f,\n\t0x912: 0x1073, 0x913: 0x1077, 0x914: 0x109b, 0x915: 0x10af, 0x916: 0x10cb, 0x917: 0x112f,\n\t0x918: 0x1137, 0x919: 0x113f, 0x91a: 0x1153, 0x91b: 0x117b, 0x91c: 0x11cb, 0x91d: 0x11ff,\n\t0x91e: 0x11ff, 0x91f: 0x1267, 0x920: 0x130f, 0x921: 0x1327, 0x922: 0x135b, 0x923: 0x135f,\n\t0x924: 0x13a3, 0x925: 0x13a7, 0x926: 0x13ff, 0x927: 0x1407, 0x928: 0x14db, 0x929: 0x151f,\n\t0x92a: 0x1537, 0x92b: 0x0b9b, 0x92c: 0x171e, 0x92d: 0x11e3,\n\t0x930: 0x06df, 0x931: 0x07e3, 0x932: 0x07a3, 0x933: 0x074b, 0x934: 0x078b, 0x935: 0x07b7,\n\t0x936: 0x0847, 0x937: 0x0863, 0x938: 0x094b, 0x939: 0x0937, 0x93a: 0x0947, 0x93b: 0x0963,\n\t0x93c: 0x09af, 0x93d: 0x09bf, 0x93e: 0x0a03, 0x93f: 0x0a0f,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0a2b, 0x941: 0x0a3b, 0x942: 0x0b23, 0x943: 0x0b2b, 0x944: 0x0b5b, 0x945: 0x0b7b,\n\t0x946: 0x0bab, 0x947: 0x0bc3, 0x948: 0x0bb3, 0x949: 0x0bd3, 0x94a: 0x0bc7, 0x94b: 0x0beb,\n\t0x94c: 0x0c07, 0x94d: 0x0c5f, 0x94e: 0x0c6b, 0x94f: 0x0c73, 0x950: 0x0c9b, 0x951: 0x0cdf,\n\t0x952: 0x0d0f, 0x953: 0x0d13, 0x954: 0x0d27, 0x955: 0x0da7, 0x956: 0x0db7, 0x957: 0x0e0f,\n\t0x958: 0x0e5b, 0x959: 0x0e53, 0x95a: 0x0e67, 0x95b: 0x0e83, 0x95c: 0x0ebb, 0x95d: 0x1013,\n\t0x95e: 0x0edf, 0x95f: 0x0f13, 0x960: 0x0f1f, 0x961: 0x0f5f, 0x962: 0x0f7b, 0x963: 0x0f9f,\n\t0x964: 0x0fc3, 0x965: 0x0fc7, 0x966: 0x0fe3, 0x967: 0x0fe7, 0x968: 0x0ff7, 0x969: 0x100b,\n\t0x96a: 0x1007, 0x96b: 0x1037, 0x96c: 0x10b3, 0x96d: 0x10cb, 0x96e: 0x10e3, 0x96f: 0x111b,\n\t0x970: 0x112f, 0x971: 0x114b, 0x972: 0x117b, 0x973: 0x122f, 0x974: 0x1257, 0x975: 0x12cb,\n\t0x976: 0x1313, 0x977: 0x131f, 0x978: 0x1327, 0x979: 0x133f, 0x97a: 0x1353, 0x97b: 0x1343,\n\t0x97c: 0x135b, 0x97d: 0x1357, 0x97e: 0x134f, 0x97f: 0x135f,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x136b, 0x981: 0x13a7, 0x982: 0x13e3, 0x983: 0x1413, 0x984: 0x144b, 0x985: 0x146b,\n\t0x986: 0x14b7, 0x987: 0x14db, 0x988: 0x14fb, 0x989: 0x150f, 0x98a: 0x151f, 0x98b: 0x152b,\n\t0x98c: 0x1537, 0x98d: 0x158b, 0x98e: 0x162b, 0x98f: 0x16b5, 0x990: 0x16b0, 0x991: 0x16e2,\n\t0x992: 0x0607, 0x993: 0x062f, 0x994: 0x0633, 0x995: 0x1764, 0x996: 0x1791, 0x997: 0x1809,\n\t0x998: 0x1617, 0x999: 0x1627,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x06fb, 0x9c1: 0x06f3, 0x9c2: 0x0703, 0x9c3: 0x1647, 0x9c4: 0x0747, 0x9c5: 0x0757,\n\t0x9c6: 0x075b, 0x9c7: 0x0763, 0x9c8: 0x076b, 0x9c9: 0x076f, 0x9ca: 0x077b, 0x9cb: 0x0773,\n\t0x9cc: 0x05b3, 0x9cd: 0x165b, 0x9ce: 0x078f, 0x9cf: 0x0793, 0x9d0: 0x0797, 0x9d1: 0x07b3,\n\t0x9d2: 0x164c, 0x9d3: 0x05b7, 0x9d4: 0x079f, 0x9d5: 0x07bf, 0x9d6: 0x1656, 0x9d7: 0x07cf,\n\t0x9d8: 0x07d7, 0x9d9: 0x0737, 0x9da: 0x07df, 0x9db: 0x07e3, 0x9dc: 0x1831, 0x9dd: 0x07ff,\n\t0x9de: 0x0807, 0x9df: 0x05bf, 0x9e0: 0x081f, 0x9e1: 0x0823, 0x9e2: 0x082b, 0x9e3: 0x082f,\n\t0x9e4: 0x05c3, 0x9e5: 0x0847, 0x9e6: 0x084b, 0x9e7: 0x0857, 0x9e8: 0x0863, 0x9e9: 0x0867,\n\t0x9ea: 0x086b, 0x9eb: 0x0873, 0x9ec: 0x0893, 0x9ed: 0x0897, 0x9ee: 0x089f, 0x9ef: 0x08af,\n\t0x9f0: 0x08b7, 0x9f1: 0x08bb, 0x9f2: 0x08bb, 0x9f3: 0x08bb, 0x9f4: 0x166a, 0x9f5: 0x0e93,\n\t0x9f6: 0x08cf, 0x9f7: 0x08d7, 0x9f8: 0x166f, 0x9f9: 0x08e3, 0x9fa: 0x08eb, 0x9fb: 0x08f3,\n\t0x9fc: 0x091b, 0x9fd: 0x0907, 0x9fe: 0x0913, 0x9ff: 0x0917,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x091f, 0xa01: 0x0927, 0xa02: 0x092b, 0xa03: 0x0933, 0xa04: 0x093b, 0xa05: 0x093f,\n\t0xa06: 0x093f, 0xa07: 0x0947, 0xa08: 0x094f, 0xa09: 0x0953, 0xa0a: 0x095f, 0xa0b: 0x0983,\n\t0xa0c: 0x0967, 0xa0d: 0x0987, 0xa0e: 0x096b, 0xa0f: 0x0973, 0xa10: 0x080b, 0xa11: 0x09cf,\n\t0xa12: 0x0997, 0xa13: 0x099b, 0xa14: 0x099f, 0xa15: 0x0993, 0xa16: 0x09a7, 0xa17: 0x09a3,\n\t0xa18: 0x09bb, 0xa19: 0x1674, 0xa1a: 0x09d7, 0xa1b: 0x09db, 0xa1c: 0x09e3, 0xa1d: 0x09ef,\n\t0xa1e: 0x09f7, 0xa1f: 0x0a13, 0xa20: 0x1679, 0xa21: 0x167e, 0xa22: 0x0a1f, 0xa23: 0x0a23,\n\t0xa24: 0x0a27, 0xa25: 0x0a1b, 0xa26: 0x0a2f, 0xa27: 0x05c7, 0xa28: 0x05cb, 0xa29: 0x0a37,\n\t0xa2a: 0x0a3f, 0xa2b: 0x0a3f, 0xa2c: 0x1683, 0xa2d: 0x0a5b, 0xa2e: 0x0a5f, 0xa2f: 0x0a63,\n\t0xa30: 0x0a6b, 0xa31: 0x1688, 0xa32: 0x0a73, 0xa33: 0x0a77, 0xa34: 0x0b4f, 0xa35: 0x0a7f,\n\t0xa36: 0x05cf, 0xa37: 0x0a8b, 0xa38: 0x0a9b, 0xa39: 0x0aa7, 0xa3a: 0x0aa3, 0xa3b: 0x1692,\n\t0xa3c: 0x0aaf, 0xa3d: 0x1697, 0xa3e: 0x0abb, 0xa3f: 0x0ab7,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0abf, 0xa41: 0x0acf, 0xa42: 0x0ad3, 0xa43: 0x05d3, 0xa44: 0x0ae3, 0xa45: 0x0aeb,\n\t0xa46: 0x0aef, 0xa47: 0x0af3, 0xa48: 0x05d7, 0xa49: 0x169c, 0xa4a: 0x05db, 0xa4b: 0x0b0f,\n\t0xa4c: 0x0b13, 0xa4d: 0x0b17, 0xa4e: 0x0b1f, 0xa4f: 0x1863, 0xa50: 0x0b37, 0xa51: 0x16a6,\n\t0xa52: 0x16a6, 0xa53: 0x11d7, 0xa54: 0x0b47, 0xa55: 0x0b47, 0xa56: 0x05df, 0xa57: 0x16c9,\n\t0xa58: 0x179b, 0xa59: 0x0b57, 0xa5a: 0x0b5f, 0xa5b: 0x05e3, 0xa5c: 0x0b73, 0xa5d: 0x0b83,\n\t0xa5e: 0x0b87, 0xa5f: 0x0b8f, 0xa60: 0x0b9f, 0xa61: 0x05eb, 0xa62: 0x05e7, 0xa63: 0x0ba3,\n\t0xa64: 0x16ab, 0xa65: 0x0ba7, 0xa66: 0x0bbb, 0xa67: 0x0bbf, 0xa68: 0x0bc3, 0xa69: 0x0bbf,\n\t0xa6a: 0x0bcf, 0xa6b: 0x0bd3, 0xa6c: 0x0be3, 0xa6d: 0x0bdb, 0xa6e: 0x0bdf, 0xa6f: 0x0be7,\n\t0xa70: 0x0beb, 0xa71: 0x0bef, 0xa72: 0x0bfb, 0xa73: 0x0bff, 0xa74: 0x0c17, 0xa75: 0x0c1f,\n\t0xa76: 0x0c2f, 0xa77: 0x0c43, 0xa78: 0x16ba, 0xa79: 0x0c3f, 0xa7a: 0x0c33, 0xa7b: 0x0c4b,\n\t0xa7c: 0x0c53, 0xa7d: 0x0c67, 0xa7e: 0x16bf, 0xa7f: 0x0c6f,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x0c63, 0xa81: 0x0c5b, 0xa82: 0x05ef, 0xa83: 0x0c77, 0xa84: 0x0c7f, 0xa85: 0x0c87,\n\t0xa86: 0x0c7b, 0xa87: 0x05f3, 0xa88: 0x0c97, 0xa89: 0x0c9f, 0xa8a: 0x16c4, 0xa8b: 0x0ccb,\n\t0xa8c: 0x0cff, 0xa8d: 0x0cdb, 0xa8e: 0x05ff, 0xa8f: 0x0ce7, 0xa90: 0x05fb, 0xa91: 0x05f7,\n\t0xa92: 0x07c3, 0xa93: 0x07c7, 0xa94: 0x0d03, 0xa95: 0x0ceb, 0xa96: 0x11ab, 0xa97: 0x0663,\n\t0xa98: 0x0d0f, 0xa99: 0x0d13, 0xa9a: 0x0d17, 0xa9b: 0x0d2b, 0xa9c: 0x0d23, 0xa9d: 0x16dd,\n\t0xa9e: 0x0603, 0xa9f: 0x0d3f, 0xaa0: 0x0d33, 0xaa1: 0x0d4f, 0xaa2: 0x0d57, 0xaa3: 0x16e7,\n\t0xaa4: 0x0d5b, 0xaa5: 0x0d47, 0xaa6: 0x0d63, 0xaa7: 0x0607, 0xaa8: 0x0d67, 0xaa9: 0x0d6b,\n\t0xaaa: 0x0d6f, 0xaab: 0x0d7b, 0xaac: 0x16ec, 0xaad: 0x0d83, 0xaae: 0x060b, 0xaaf: 0x0d8f,\n\t0xab0: 0x16f1, 0xab1: 0x0d93, 0xab2: 0x060f, 0xab3: 0x0d9f, 0xab4: 0x0dab, 0xab5: 0x0db7,\n\t0xab6: 0x0dbb, 0xab7: 0x16f6, 0xab8: 0x168d, 0xab9: 0x16fb, 0xaba: 0x0ddb, 0xabb: 0x1700,\n\t0xabc: 0x0de7, 0xabd: 0x0def, 0xabe: 0x0ddf, 0xabf: 0x0dfb,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x0e0b, 0xac1: 0x0e1b, 0xac2: 0x0e0f, 0xac3: 0x0e13, 0xac4: 0x0e1f, 0xac5: 0x0e23,\n\t0xac6: 0x1705, 0xac7: 0x0e07, 0xac8: 0x0e3b, 0xac9: 0x0e3f, 0xaca: 0x0613, 0xacb: 0x0e53,\n\t0xacc: 0x0e4f, 0xacd: 0x170a, 0xace: 0x0e33, 0xacf: 0x0e6f, 0xad0: 0x170f, 0xad1: 0x1714,\n\t0xad2: 0x0e73, 0xad3: 0x0e87, 0xad4: 0x0e83, 0xad5: 0x0e7f, 0xad6: 0x0617, 0xad7: 0x0e8b,\n\t0xad8: 0x0e9b, 0xad9: 0x0e97, 0xada: 0x0ea3, 0xadb: 0x1651, 0xadc: 0x0eb3, 0xadd: 0x1719,\n\t0xade: 0x0ebf, 0xadf: 0x1723, 0xae0: 0x0ed3, 0xae1: 0x0edf, 0xae2: 0x0ef3, 0xae3: 0x1728,\n\t0xae4: 0x0f07, 0xae5: 0x0f0b, 0xae6: 0x172d, 0xae7: 0x1732, 0xae8: 0x0f27, 0xae9: 0x0f37,\n\t0xaea: 0x061b, 0xaeb: 0x0f3b, 0xaec: 0x061f, 0xaed: 0x061f, 0xaee: 0x0f53, 0xaef: 0x0f57,\n\t0xaf0: 0x0f5f, 0xaf1: 0x0f63, 0xaf2: 0x0f6f, 0xaf3: 0x0623, 0xaf4: 0x0f87, 0xaf5: 0x1737,\n\t0xaf6: 0x0fa3, 0xaf7: 0x173c, 0xaf8: 0x0faf, 0xaf9: 0x16a1, 0xafa: 0x0fbf, 0xafb: 0x1741,\n\t0xafc: 0x1746, 0xafd: 0x174b, 0xafe: 0x0627, 0xaff: 0x062b,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x0ff7, 0xb01: 0x1755, 0xb02: 0x1750, 0xb03: 0x175a, 0xb04: 0x175f, 0xb05: 0x0fff,\n\t0xb06: 0x1003, 0xb07: 0x1003, 0xb08: 0x100b, 0xb09: 0x0633, 0xb0a: 0x100f, 0xb0b: 0x0637,\n\t0xb0c: 0x063b, 0xb0d: 0x1769, 0xb0e: 0x1023, 0xb0f: 0x102b, 0xb10: 0x1037, 0xb11: 0x063f,\n\t0xb12: 0x176e, 0xb13: 0x105b, 0xb14: 0x1773, 0xb15: 0x1778, 0xb16: 0x107b, 0xb17: 0x1093,\n\t0xb18: 0x0643, 0xb19: 0x109b, 0xb1a: 0x109f, 0xb1b: 0x10a3, 0xb1c: 0x177d, 0xb1d: 0x1782,\n\t0xb1e: 0x1782, 0xb1f: 0x10bb, 0xb20: 0x0647, 0xb21: 0x1787, 0xb22: 0x10cf, 0xb23: 0x10d3,\n\t0xb24: 0x064b, 0xb25: 0x178c, 0xb26: 0x10ef, 0xb27: 0x064f, 0xb28: 0x10ff, 0xb29: 0x10f7,\n\t0xb2a: 0x1107, 0xb2b: 0x1796, 0xb2c: 0x111f, 0xb2d: 0x0653, 0xb2e: 0x112b, 0xb2f: 0x1133,\n\t0xb30: 0x1143, 0xb31: 0x0657, 0xb32: 0x17a0, 0xb33: 0x17a5, 0xb34: 0x065b, 0xb35: 0x17aa,\n\t0xb36: 0x115b, 0xb37: 0x17af, 0xb38: 0x1167, 0xb39: 0x1173, 0xb3a: 0x117b, 0xb3b: 0x17b4,\n\t0xb3c: 0x17b9, 0xb3d: 0x118f, 0xb3e: 0x17be, 0xb3f: 0x1197,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x16ce, 0xb41: 0x065f, 0xb42: 0x11af, 0xb43: 0x11b3, 0xb44: 0x0667, 0xb45: 0x11b7,\n\t0xb46: 0x0a33, 0xb47: 0x17c3, 0xb48: 0x17c8, 0xb49: 0x16d3, 0xb4a: 0x16d8, 0xb4b: 0x11d7,\n\t0xb4c: 0x11db, 0xb4d: 0x13f3, 0xb4e: 0x066b, 0xb4f: 0x1207, 0xb50: 0x1203, 0xb51: 0x120b,\n\t0xb52: 0x083f, 0xb53: 0x120f, 0xb54: 0x1213, 0xb55: 0x1217, 0xb56: 0x121f, 0xb57: 0x17cd,\n\t0xb58: 0x121b, 0xb59: 0x1223, 0xb5a: 0x1237, 0xb5b: 0x123b, 0xb5c: 0x1227, 0xb5d: 0x123f,\n\t0xb5e: 0x1253, 0xb5f: 0x1267, 0xb60: 0x1233, 0xb61: 0x1247, 0xb62: 0x124b, 0xb63: 0x124f,\n\t0xb64: 0x17d2, 0xb65: 0x17dc, 0xb66: 0x17d7, 0xb67: 0x066f, 0xb68: 0x126f, 0xb69: 0x1273,\n\t0xb6a: 0x127b, 0xb6b: 0x17f0, 0xb6c: 0x127f, 0xb6d: 0x17e1, 0xb6e: 0x0673, 0xb6f: 0x0677,\n\t0xb70: 0x17e6, 0xb71: 0x17eb, 0xb72: 0x067b, 0xb73: 0x129f, 0xb74: 0x12a3, 0xb75: 0x12a7,\n\t0xb76: 0x12ab, 0xb77: 0x12b7, 0xb78: 0x12b3, 0xb79: 0x12bf, 0xb7a: 0x12bb, 0xb7b: 0x12cb,\n\t0xb7c: 0x12c3, 0xb7d: 0x12c7, 0xb7e: 0x12cf, 0xb7f: 0x067f,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x12d7, 0xb81: 0x12db, 0xb82: 0x0683, 0xb83: 0x12eb, 0xb84: 0x12ef, 0xb85: 0x17f5,\n\t0xb86: 0x12fb, 0xb87: 0x12ff, 0xb88: 0x0687, 0xb89: 0x130b, 0xb8a: 0x05bb, 0xb8b: 0x17fa,\n\t0xb8c: 0x17ff, 0xb8d: 0x068b, 0xb8e: 0x068f, 0xb8f: 0x1337, 0xb90: 0x134f, 0xb91: 0x136b,\n\t0xb92: 0x137b, 0xb93: 0x1804, 0xb94: 0x138f, 0xb95: 0x1393, 0xb96: 0x13ab, 0xb97: 0x13b7,\n\t0xb98: 0x180e, 0xb99: 0x1660, 0xb9a: 0x13c3, 0xb9b: 0x13bf, 0xb9c: 0x13cb, 0xb9d: 0x1665,\n\t0xb9e: 0x13d7, 0xb9f: 0x13e3, 0xba0: 0x1813, 0xba1: 0x1818, 0xba2: 0x1423, 0xba3: 0x142f,\n\t0xba4: 0x1437, 0xba5: 0x181d, 0xba6: 0x143b, 0xba7: 0x1467, 0xba8: 0x1473, 0xba9: 0x1477,\n\t0xbaa: 0x146f, 0xbab: 0x1483, 0xbac: 0x1487, 0xbad: 0x1822, 0xbae: 0x1493, 0xbaf: 0x0693,\n\t0xbb0: 0x149b, 0xbb1: 0x1827, 0xbb2: 0x0697, 0xbb3: 0x14d3, 0xbb4: 0x0ac3, 0xbb5: 0x14eb,\n\t0xbb6: 0x182c, 0xbb7: 0x1836, 0xbb8: 0x069b, 0xbb9: 0x069f, 0xbba: 0x1513, 0xbbb: 0x183b,\n\t0xbbc: 0x06a3, 0xbbd: 0x1840, 0xbbe: 0x152b, 0xbbf: 0x152b,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x1533, 0xbc1: 0x1845, 0xbc2: 0x154b, 0xbc3: 0x06a7, 0xbc4: 0x155b, 0xbc5: 0x1567,\n\t0xbc6: 0x156f, 0xbc7: 0x1577, 0xbc8: 0x06ab, 0xbc9: 0x184a, 0xbca: 0x158b, 0xbcb: 0x15a7,\n\t0xbcc: 0x15b3, 0xbcd: 0x06af, 0xbce: 0x06b3, 0xbcf: 0x15b7, 0xbd0: 0x184f, 0xbd1: 0x06b7,\n\t0xbd2: 0x1854, 0xbd3: 0x1859, 0xbd4: 0x185e, 0xbd5: 0x15db, 0xbd6: 0x06bb, 0xbd7: 0x15ef,\n\t0xbd8: 0x15f7, 0xbd9: 0x15fb, 0xbda: 0x1603, 0xbdb: 0x160b, 0xbdc: 0x1613, 0xbdd: 0x1868,\n}\n\n// nfcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x2e, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2f, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x30, 0xcb: 0x31, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x32,\n\t0xd0: 0x09, 0xd1: 0x33, 0xd2: 0x34, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x35,\n\t0xd8: 0x36, 0xd9: 0x0c, 0xdb: 0x37, 0xdc: 0x38, 0xdd: 0x39, 0xdf: 0x3a,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x3b, 0x121: 0x3c, 0x123: 0x0d, 0x124: 0x3d, 0x125: 0x3e, 0x126: 0x3f, 0x127: 0x40,\n\t0x128: 0x41, 0x129: 0x42, 0x12a: 0x43, 0x12b: 0x44, 0x12c: 0x3f, 0x12d: 0x45, 0x12e: 0x46, 0x12f: 0x47,\n\t0x131: 0x48, 0x132: 0x49, 0x133: 0x4a, 0x134: 0x4b, 0x135: 0x4c, 0x137: 0x4d,\n\t0x138: 0x4e, 0x139: 0x4f, 0x13a: 0x50, 0x13b: 0x51, 0x13c: 0x52, 0x13d: 0x53, 0x13e: 0x54, 0x13f: 0x55,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x56, 0x142: 0x57, 0x144: 0x58, 0x145: 0x59, 0x146: 0x5a, 0x147: 0x5b,\n\t0x14d: 0x5c,\n\t0x15c: 0x5d, 0x15f: 0x5e,\n\t0x162: 0x5f, 0x164: 0x60,\n\t0x168: 0x61, 0x169: 0x62, 0x16a: 0x63, 0x16c: 0x0e, 0x16d: 0x64, 0x16e: 0x65, 0x16f: 0x66,\n\t0x170: 0x67, 0x173: 0x68, 0x177: 0x0f,\n\t0x178: 0x10, 0x179: 0x11, 0x17a: 0x12, 0x17b: 0x13, 0x17c: 0x14, 0x17d: 0x15, 0x17e: 0x16, 0x17f: 0x17,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x69, 0x183: 0x6a, 0x184: 0x6b, 0x186: 0x6c, 0x187: 0x6d,\n\t0x188: 0x6e, 0x189: 0x18, 0x18a: 0x19, 0x18b: 0x6f, 0x18c: 0x70,\n\t0x1ab: 0x71,\n\t0x1b3: 0x72, 0x1b5: 0x73, 0x1b7: 0x74,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x75, 0x1c1: 0x1a, 0x1c2: 0x1b, 0x1c3: 0x1c, 0x1c4: 0x76, 0x1c5: 0x77,\n\t0x1c9: 0x78, 0x1cc: 0x79, 0x1cd: 0x7a,\n\t// Block 0x8, offset 0x200\n\t0x219: 0x7b, 0x21a: 0x7c, 0x21b: 0x7d,\n\t0x220: 0x7e, 0x223: 0x7f, 0x224: 0x80, 0x225: 0x81, 0x226: 0x82, 0x227: 0x83,\n\t0x22a: 0x84, 0x22b: 0x85, 0x22f: 0x86,\n\t0x230: 0x87, 0x231: 0x88, 0x232: 0x89, 0x233: 0x8a, 0x234: 0x8b, 0x235: 0x8c, 0x236: 0x8d, 0x237: 0x87,\n\t0x238: 0x88, 0x239: 0x89, 0x23a: 0x8a, 0x23b: 0x8b, 0x23c: 0x8c, 0x23d: 0x8d, 0x23e: 0x87, 0x23f: 0x88,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x89, 0x241: 0x8a, 0x242: 0x8b, 0x243: 0x8c, 0x244: 0x8d, 0x245: 0x87, 0x246: 0x88, 0x247: 0x89,\n\t0x248: 0x8a, 0x249: 0x8b, 0x24a: 0x8c, 0x24b: 0x8d, 0x24c: 0x87, 0x24d: 0x88, 0x24e: 0x89, 0x24f: 0x8a,\n\t0x250: 0x8b, 0x251: 0x8c, 0x252: 0x8d, 0x253: 0x87, 0x254: 0x88, 0x255: 0x89, 0x256: 0x8a, 0x257: 0x8b,\n\t0x258: 0x8c, 0x259: 0x8d, 0x25a: 0x87, 0x25b: 0x88, 0x25c: 0x89, 0x25d: 0x8a, 0x25e: 0x8b, 0x25f: 0x8c,\n\t0x260: 0x8d, 0x261: 0x87, 0x262: 0x88, 0x263: 0x89, 0x264: 0x8a, 0x265: 0x8b, 0x266: 0x8c, 0x267: 0x8d,\n\t0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26c: 0x8b, 0x26d: 0x8c, 0x26e: 0x8d, 0x26f: 0x87,\n\t0x270: 0x88, 0x271: 0x89, 0x272: 0x8a, 0x273: 0x8b, 0x274: 0x8c, 0x275: 0x8d, 0x276: 0x87, 0x277: 0x88,\n\t0x278: 0x89, 0x279: 0x8a, 0x27a: 0x8b, 0x27b: 0x8c, 0x27c: 0x8d, 0x27d: 0x87, 0x27e: 0x88, 0x27f: 0x89,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x8a, 0x281: 0x8b, 0x282: 0x8c, 0x283: 0x8d, 0x284: 0x87, 0x285: 0x88, 0x286: 0x89, 0x287: 0x8a,\n\t0x288: 0x8b, 0x289: 0x8c, 0x28a: 0x8d, 0x28b: 0x87, 0x28c: 0x88, 0x28d: 0x89, 0x28e: 0x8a, 0x28f: 0x8b,\n\t0x290: 0x8c, 0x291: 0x8d, 0x292: 0x87, 0x293: 0x88, 0x294: 0x89, 0x295: 0x8a, 0x296: 0x8b, 0x297: 0x8c,\n\t0x298: 0x8d, 0x299: 0x87, 0x29a: 0x88, 0x29b: 0x89, 0x29c: 0x8a, 0x29d: 0x8b, 0x29e: 0x8c, 0x29f: 0x8d,\n\t0x2a0: 0x87, 0x2a1: 0x88, 0x2a2: 0x89, 0x2a3: 0x8a, 0x2a4: 0x8b, 0x2a5: 0x8c, 0x2a6: 0x8d, 0x2a7: 0x87,\n\t0x2a8: 0x88, 0x2a9: 0x89, 0x2aa: 0x8a, 0x2ab: 0x8b, 0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x87, 0x2af: 0x88,\n\t0x2b0: 0x89, 0x2b1: 0x8a, 0x2b2: 0x8b, 0x2b3: 0x8c, 0x2b4: 0x8d, 0x2b5: 0x87, 0x2b6: 0x88, 0x2b7: 0x89,\n\t0x2b8: 0x8a, 0x2b9: 0x8b, 0x2ba: 0x8c, 0x2bb: 0x8d, 0x2bc: 0x87, 0x2bd: 0x88, 0x2be: 0x89, 0x2bf: 0x8a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x8b, 0x2c1: 0x8c, 0x2c2: 0x8d, 0x2c3: 0x87, 0x2c4: 0x88, 0x2c5: 0x89, 0x2c6: 0x8a, 0x2c7: 0x8b,\n\t0x2c8: 0x8c, 0x2c9: 0x8d, 0x2ca: 0x87, 0x2cb: 0x88, 0x2cc: 0x89, 0x2cd: 0x8a, 0x2ce: 0x8b, 0x2cf: 0x8c,\n\t0x2d0: 0x8d, 0x2d1: 0x87, 0x2d2: 0x88, 0x2d3: 0x89, 0x2d4: 0x8a, 0x2d5: 0x8b, 0x2d6: 0x8c, 0x2d7: 0x8d,\n\t0x2d8: 0x87, 0x2d9: 0x88, 0x2da: 0x89, 0x2db: 0x8a, 0x2dc: 0x8b, 0x2dd: 0x8c, 0x2de: 0x8e,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x1d, 0x325: 0x1e, 0x326: 0x1f, 0x327: 0x20,\n\t0x328: 0x21, 0x329: 0x22, 0x32a: 0x23, 0x32b: 0x24, 0x32c: 0x8f, 0x32d: 0x90, 0x32e: 0x91,\n\t0x331: 0x92, 0x332: 0x93, 0x333: 0x94, 0x334: 0x95,\n\t0x338: 0x96, 0x339: 0x97, 0x33a: 0x98, 0x33b: 0x99, 0x33e: 0x9a, 0x33f: 0x9b,\n\t// Block 0xd, offset 0x340\n\t0x347: 0x9c,\n\t0x34b: 0x9d, 0x34d: 0x9e,\n\t0x368: 0x9f, 0x36b: 0xa0,\n\t0x374: 0xa1,\n\t0x37d: 0xa2,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xa3, 0x382: 0xa4, 0x384: 0xa5, 0x385: 0x82, 0x387: 0xa6,\n\t0x388: 0xa7, 0x38b: 0xa8, 0x38c: 0xa9, 0x38d: 0xaa,\n\t0x391: 0xab, 0x392: 0xac, 0x393: 0xad, 0x396: 0xae, 0x397: 0xaf,\n\t0x398: 0x73, 0x39a: 0xb0, 0x39c: 0xb1,\n\t0x3a0: 0xb2,\n\t0x3a8: 0xb3, 0x3a9: 0xb4, 0x3aa: 0xb5,\n\t0x3b0: 0x73, 0x3b5: 0xb6, 0x3b6: 0xb7,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xb8, 0x3ec: 0xb9,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xba,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xbb, 0x446: 0xbc, 0x447: 0xbd,\n\t0x449: 0xbe,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xbf,\n\t0x4a3: 0xc0, 0x4a5: 0xc1,\n\t// Block 0x13, offset 0x4c0\n\t0x4c8: 0xc2,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x25, 0x521: 0x26, 0x522: 0x27, 0x523: 0x28, 0x524: 0x29, 0x525: 0x2a, 0x526: 0x2b, 0x527: 0x2c,\n\t0x528: 0x2d,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfcSparseOffset: 149 entries, 298 bytes\nvar nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x63, 0x68, 0x6a, 0x72, 0x79, 0x7c, 0x84, 0x88, 0x8c, 0x8e, 0x90, 0x99, 0x9d, 0xa4, 0xa9, 0xac, 0xb6, 0xb9, 0xc0, 0xc8, 0xcb, 0xcd, 0xcf, 0xd1, 0xd6, 0xe7, 0xf3, 0xf5, 0xfb, 0xfd, 0xff, 0x101, 0x103, 0x105, 0x107, 0x10a, 0x10d, 0x10f, 0x112, 0x115, 0x119, 0x11e, 0x127, 0x129, 0x12c, 0x12e, 0x139, 0x13d, 0x14b, 0x14e, 0x154, 0x15a, 0x165, 0x169, 0x16b, 0x16d, 0x16f, 0x171, 0x173, 0x179, 0x17d, 0x17f, 0x181, 0x189, 0x18d, 0x190, 0x192, 0x194, 0x196, 0x199, 0x19b, 0x19d, 0x19f, 0x1a1, 0x1a7, 0x1aa, 0x1ac, 0x1b3, 0x1b9, 0x1bf, 0x1c7, 0x1cd, 0x1d3, 0x1d9, 0x1dd, 0x1eb, 0x1f4, 0x1f7, 0x1fa, 0x1fc, 0x1ff, 0x201, 0x205, 0x20a, 0x20c, 0x20e, 0x213, 0x219, 0x21b, 0x21d, 0x21f, 0x225, 0x228, 0x22a, 0x230, 0x233, 0x23b, 0x242, 0x245, 0x248, 0x24a, 0x24d, 0x255, 0x259, 0x260, 0x263, 0x269, 0x26b, 0x26e, 0x270, 0x273, 0x275, 0x277, 0x279, 0x27c, 0x27e, 0x280, 0x282, 0x284, 0x291, 0x29b, 0x29d, 0x29f, 0x2a5, 0x2a7, 0x2aa}\n\n// nfcSparseValues: 684 entries, 2736 bytes\nvar nfcSparseValues = [684]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0xa100, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8100, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb8, hi: 0xb8},\n\t// Block 0x1, offset 0x5\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46e2, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4714, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t// Block 0x3, offset 0xb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x98, hi: 0x9d},\n\t// Block 0x4, offset 0xd\n\t{value: 0x0006, lo: 0x0a},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x85, hi: 0x85},\n\t{value: 0xa000, lo: 0x89, hi: 0x89},\n\t{value: 0x4840, lo: 0x8a, hi: 0x8a},\n\t{value: 0x485e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x36c7, lo: 0x8c, hi: 0x8c},\n\t{value: 0x36df, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4876, lo: 0x8e, hi: 0x8e},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x36fd, lo: 0x93, hi: 0x94},\n\t// Block 0x5, offset 0x18\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37a5, lo: 0x90, hi: 0x90},\n\t{value: 0x37b1, lo: 0x91, hi: 0x91},\n\t{value: 0x379f, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3817, lo: 0x97, hi: 0x97},\n\t{value: 0x37e1, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37c9, lo: 0x9d, hi: 0x9d},\n\t{value: 0x37f3, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x381d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3823, lo: 0xb7, hi: 0xb7},\n\t// Block 0x6, offset 0x28\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x83, hi: 0x87},\n\t// Block 0x7, offset 0x2a\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8113, lo: 0x81, hi: 0x82},\n\t{value: 0x8132, lo: 0x84, hi: 0x84},\n\t{value: 0x812d, lo: 0x85, hi: 0x85},\n\t{value: 0x810d, lo: 0x87, hi: 0x87},\n\t// Block 0x8, offset 0x2f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x97},\n\t{value: 0x8119, lo: 0x98, hi: 0x98},\n\t{value: 0x811a, lo: 0x99, hi: 0x99},\n\t{value: 0x811b, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3841, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3847, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3853, lo: 0xa4, hi: 0xa4},\n\t{value: 0x384d, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3859, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x9, offset 0x3a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x386b, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x385f, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3865, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8132, lo: 0x96, hi: 0x9c},\n\t{value: 0x8132, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t// Block 0xa, offset 0x49\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x811f, lo: 0x91, hi: 0x91},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8132, lo: 0xba, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8132, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8132, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb, offset 0x56\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8132, lo: 0x80, hi: 0x80},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x83},\n\t{value: 0x812d, lo: 0x84, hi: 0x85},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x812d, lo: 0x88, hi: 0x89},\n\t{value: 0x8132, lo: 0x8a, hi: 0x8a},\n\t// Block 0xc, offset 0x5e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xab, hi: 0xb1},\n\t{value: 0x812d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb3},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0xd, offset 0x63\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0x96, hi: 0x99},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8132, lo: 0xa9, hi: 0xad},\n\t// Block 0xe, offset 0x68\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x99, hi: 0x9b},\n\t// Block 0xf, offset 0x6a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3ed8, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ee0, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3ee8, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9902, lo: 0xbc, hi: 0xbc},\n\t// Block 0x10, offset 0x72\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x91, hi: 0x91},\n\t{value: 0x812d, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x93, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x94},\n\t{value: 0x451c, lo: 0x98, hi: 0x9f},\n\t// Block 0x11, offset 0x79\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x12, offset 0x7c\n\t{value: 0x0008, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2c9e, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x455c, lo: 0x9c, hi: 0x9d},\n\t{value: 0x456c, lo: 0x9f, hi: 0x9f},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbe},\n\t// Block 0x13, offset 0x84\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4594, lo: 0xb3, hi: 0xb3},\n\t{value: 0x459c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x14, offset 0x88\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4574, lo: 0x99, hi: 0x9b},\n\t{value: 0x458c, lo: 0x9e, hi: 0x9e},\n\t// Block 0x15, offset 0x8c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x16, offset 0x8e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t// Block 0x17, offset 0x90\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cb6, lo: 0x88, hi: 0x88},\n\t{value: 0x2cae, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cbe, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45a4, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45ac, lo: 0x9d, hi: 0x9d},\n\t// Block 0x18, offset 0x99\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cc6, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x19, offset 0x9d\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cce, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2cde, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cd6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1a, offset 0xa4\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ef0, lo: 0x88, hi: 0x88},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8120, lo: 0x95, hi: 0x96},\n\t// Block 0x1b, offset 0xa9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1c, offset 0xac\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2ce6, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cee, lo: 0x87, hi: 0x87},\n\t{value: 0x2cf6, lo: 0x88, hi: 0x88},\n\t{value: 0x2f50, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2dd8, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1d, offset 0xb6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1e, offset 0xb9\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cfe, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d0e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d06, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1f, offset 0xc0\n\t{value: 0x6bea, lo: 0x07},\n\t{value: 0x9904, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ef8, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f58, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2de3, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d16, lo: 0x9e, hi: 0x9f},\n\t// Block 0x20, offset 0xc8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8122, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x21, offset 0xcb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8123, lo: 0x88, hi: 0x8b},\n\t// Block 0x22, offset 0xcd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8124, lo: 0xb8, hi: 0xb9},\n\t// Block 0x23, offset 0xcf\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8125, lo: 0x88, hi: 0x8b},\n\t// Block 0x24, offset 0xd1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x812d, lo: 0x98, hi: 0x99},\n\t{value: 0x812d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812b, lo: 0xb9, hi: 0xb9},\n\t// Block 0x25, offset 0xd6\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2644, lo: 0x83, hi: 0x83},\n\t{value: 0x264b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2652, lo: 0x92, hi: 0x92},\n\t{value: 0x2659, lo: 0x97, hi: 0x97},\n\t{value: 0x2660, lo: 0x9c, hi: 0x9c},\n\t{value: 0x263d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8126, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8127, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a84, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8128, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a8d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45b4, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8200, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45bc, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8200, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8127, lo: 0xba, hi: 0xbd},\n\t// Block 0x26, offset 0xe7\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8127, lo: 0x80, hi: 0x80},\n\t{value: 0x4a96, lo: 0x81, hi: 0x81},\n\t{value: 0x8132, lo: 0x82, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0x86, hi: 0x87},\n\t{value: 0x266e, lo: 0x93, hi: 0x93},\n\t{value: 0x2675, lo: 0x9d, hi: 0x9d},\n\t{value: 0x267c, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2683, lo: 0xa7, hi: 0xa7},\n\t{value: 0x268a, lo: 0xac, hi: 0xac},\n\t{value: 0x2667, lo: 0xb9, hi: 0xb9},\n\t// Block 0x27, offset 0xf3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x86, hi: 0x86},\n\t// Block 0x28, offset 0xf5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d1e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x29, offset 0xfb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2a, offset 0xfd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2b, offset 0xff\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2c, offset 0x101\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2d, offset 0x103\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2e, offset 0x105\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9f},\n\t// Block 0x2f, offset 0x107\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x94, hi: 0x94},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x30, offset 0x10a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9d},\n\t// Block 0x31, offset 0x10d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8131, lo: 0xa9, hi: 0xa9},\n\t// Block 0x32, offset 0x10f\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812e, lo: 0xb9, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbb},\n\t// Block 0x33, offset 0x112\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x97, hi: 0x97},\n\t{value: 0x812d, lo: 0x98, hi: 0x98},\n\t// Block 0x34, offset 0x115\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8132, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x35, offset 0x119\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812d, lo: 0xb5, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x36, offset 0x11e\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d66, lo: 0x80, hi: 0x80},\n\t{value: 0x2d6e, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d76, lo: 0x83, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xac},\n\t{value: 0x8132, lo: 0xad, hi: 0xb3},\n\t// Block 0x37, offset 0x127\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xaa, hi: 0xab},\n\t// Block 0x38, offset 0x129\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8104, lo: 0xb2, hi: 0xb3},\n\t// Block 0x39, offset 0x12c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3a, offset 0x12e\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812d, lo: 0x95, hi: 0x99},\n\t{value: 0x8132, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812d, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t{value: 0x8132, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3b, offset 0x139\n\t{value: 0x0004, lo: 0x03},\n\t{value: 0x0433, lo: 0x80, hi: 0x81},\n\t{value: 0x8100, lo: 0x97, hi: 0x97},\n\t{value: 0x8100, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3c, offset 0x13d\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8132, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8132, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8132, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812d, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t// Block 0x3d, offset 0x14b\n\t{value: 0x427b, lo: 0x02},\n\t{value: 0x01b8, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0057, lo: 0xaa, hi: 0xab},\n\t// Block 0x3e, offset 0x14e\n\t{value: 0x0007, lo: 0x05},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bb9, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bc7, lo: 0xae, hi: 0xae},\n\t// Block 0x3f, offset 0x154\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3bce, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bd5, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x40, offset 0x15a\n\t{value: 0x6408, lo: 0x0a},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3be3, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3bea, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3bf1, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3bf8, lo: 0xa4, hi: 0xa5},\n\t{value: 0x3bff, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x41, offset 0x165\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c68, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3c92, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cbc, lo: 0xaa, hi: 0xad},\n\t// Block 0x42, offset 0x169\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048b, lo: 0xa9, hi: 0xaa},\n\t// Block 0x43, offset 0x16b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44dd, lo: 0x9c, hi: 0x9c},\n\t// Block 0x44, offset 0x16d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xaf, hi: 0xb1},\n\t// Block 0x45, offset 0x16f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x46, offset 0x171\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa0, hi: 0xbf},\n\t// Block 0x47, offset 0x173\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812c, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8131, lo: 0xab, hi: 0xab},\n\t{value: 0x8133, lo: 0xac, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x812f, lo: 0xae, hi: 0xaf},\n\t// Block 0x48, offset 0x179\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4a9f, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4a9f, lo: 0xb5, hi: 0xb6},\n\t{value: 0x4a9f, lo: 0xba, hi: 0xbf},\n\t// Block 0x49, offset 0x17d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4a9f, lo: 0x8f, hi: 0xa3},\n\t// Block 0x4a, offset 0x17f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xae, hi: 0xbe},\n\t// Block 0x4b, offset 0x181\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x8100, lo: 0x84, hi: 0x84},\n\t{value: 0x8100, lo: 0x87, hi: 0x87},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t{value: 0x8100, lo: 0x9e, hi: 0x9e},\n\t{value: 0x8100, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8100, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8100, lo: 0xbb, hi: 0xbb},\n\t// Block 0x4c, offset 0x189\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8100, lo: 0x80, hi: 0x80},\n\t{value: 0x8100, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8100, lo: 0x8e, hi: 0x8e},\n\t// Block 0x4d, offset 0x18d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb4, hi: 0xbd},\n\t// Block 0x4e, offset 0x190\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9f},\n\t// Block 0x4f, offset 0x192\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb1},\n\t// Block 0x50, offset 0x194\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t// Block 0x51, offset 0x196\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xa0, hi: 0xb1},\n\t// Block 0x52, offset 0x199\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xab, hi: 0xad},\n\t// Block 0x53, offset 0x19b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x93, hi: 0x93},\n\t// Block 0x54, offset 0x19d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb3, hi: 0xb3},\n\t// Block 0x55, offset 0x19f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t// Block 0x56, offset 0x1a1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbf},\n\t// Block 0x57, offset 0x1a7\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t// Block 0x58, offset 0x1aa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xad, hi: 0xad},\n\t// Block 0x59, offset 0x1ac\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x5a, offset 0x1b3\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x5b, offset 0x1b9\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x5c, offset 0x1bf\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x5d, offset 0x1c7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x5e, offset 0x1cd\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x5f, offset 0x1d3\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x60, offset 0x1d9\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x61, offset 0x1dd\n\t{value: 0x0006, lo: 0x0d},\n\t{value: 0x4390, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8115, lo: 0x9e, hi: 0x9e},\n\t{value: 0x4402, lo: 0x9f, hi: 0x9f},\n\t{value: 0x43f0, lo: 0xaa, hi: 0xab},\n\t{value: 0x44f4, lo: 0xac, hi: 0xac},\n\t{value: 0x44fc, lo: 0xad, hi: 0xad},\n\t{value: 0x4348, lo: 0xae, hi: 0xb1},\n\t{value: 0x4366, lo: 0xb2, hi: 0xb4},\n\t{value: 0x437e, lo: 0xb5, hi: 0xb6},\n\t{value: 0x438a, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4396, lo: 0xb9, hi: 0xbb},\n\t{value: 0x43ae, lo: 0xbc, hi: 0xbc},\n\t{value: 0x43b4, lo: 0xbe, hi: 0xbe},\n\t// Block 0x62, offset 0x1eb\n\t{value: 0x0006, lo: 0x08},\n\t{value: 0x43ba, lo: 0x80, hi: 0x81},\n\t{value: 0x43c6, lo: 0x83, hi: 0x84},\n\t{value: 0x43d8, lo: 0x86, hi: 0x89},\n\t{value: 0x43fc, lo: 0x8a, hi: 0x8a},\n\t{value: 0x4378, lo: 0x8b, hi: 0x8b},\n\t{value: 0x4360, lo: 0x8c, hi: 0x8c},\n\t{value: 0x43a8, lo: 0x8d, hi: 0x8d},\n\t{value: 0x43d2, lo: 0x8e, hi: 0x8e},\n\t// Block 0x63, offset 0x1f4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0xa4, hi: 0xa5},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb1},\n\t// Block 0x64, offset 0x1f7\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x9b, hi: 0x9d},\n\t{value: 0x8200, lo: 0x9e, hi: 0xa3},\n\t// Block 0x65, offset 0x1fa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t// Block 0x66, offset 0x1fc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x99, hi: 0x99},\n\t{value: 0x8200, lo: 0xb2, hi: 0xb4},\n\t// Block 0x67, offset 0x1ff\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xbc, hi: 0xbd},\n\t// Block 0x68, offset 0x201\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa6},\n\t{value: 0x812d, lo: 0xa7, hi: 0xad},\n\t{value: 0x8132, lo: 0xae, hi: 0xaf},\n\t// Block 0x69, offset 0x205\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8100, lo: 0x89, hi: 0x8c},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb2},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb6, hi: 0xbf},\n\t// Block 0x6a, offset 0x20a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x81, hi: 0x8c},\n\t// Block 0x6b, offset 0x20c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xb5, hi: 0xba},\n\t// Block 0x6c, offset 0x20e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x4a9f, lo: 0x9e, hi: 0x9f},\n\t{value: 0x4a9f, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4a9f, lo: 0xa5, hi: 0xa6},\n\t{value: 0x4a9f, lo: 0xaa, hi: 0xaf},\n\t// Block 0x6d, offset 0x213\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x4a9f, lo: 0x82, hi: 0x87},\n\t{value: 0x4a9f, lo: 0x8a, hi: 0x8f},\n\t{value: 0x4a9f, lo: 0x92, hi: 0x97},\n\t{value: 0x4a9f, lo: 0x9a, hi: 0x9c},\n\t{value: 0x8100, lo: 0xa3, hi: 0xa3},\n\t// Block 0x6e, offset 0x219\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x6f, offset 0x21b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xa0, hi: 0xa0},\n\t// Block 0x70, offset 0x21d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb6, hi: 0xba},\n\t// Block 0x71, offset 0x21f\n\t{value: 0x002c, lo: 0x05},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x72, offset 0x225\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t// Block 0x73, offset 0x228\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa7},\n\t// Block 0x74, offset 0x22a\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x8132, lo: 0x88, hi: 0x8a},\n\t{value: 0x812d, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8132, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812d, lo: 0x8d, hi: 0x90},\n\t// Block 0x75, offset 0x230\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x76, offset 0x233\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4238, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4242, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x424c, lo: 0xab, hi: 0xab},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x77, offset 0x23b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8132, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d7e, lo: 0xae, hi: 0xae},\n\t{value: 0x2d88, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8104, lo: 0xb3, hi: 0xb4},\n\t// Block 0x78, offset 0x242\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x79, offset 0x245\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8102, lo: 0xb6, hi: 0xb6},\n\t// Block 0x7a, offset 0x248\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8102, lo: 0xa9, hi: 0xaa},\n\t// Block 0x7b, offset 0x24a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7c, offset 0x24d\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d92, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d9c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8132, lo: 0xa6, hi: 0xac},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t// Block 0x7d, offset 0x255\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x86, hi: 0x86},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9e},\n\t// Block 0x7e, offset 0x259\n\t{value: 0x6b5a, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2db0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2da6, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dba, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7f, offset 0x260\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x83, hi: 0x83},\n\t// Block 0x80, offset 0x263\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dc4, lo: 0xba, hi: 0xba},\n\t{value: 0x2dce, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x81, offset 0x269\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0x80, hi: 0x80},\n\t// Block 0x82, offset 0x26b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x83, offset 0x26e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xab, hi: 0xab},\n\t// Block 0x84, offset 0x270\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8102, lo: 0xba, hi: 0xba},\n\t// Block 0x85, offset 0x273\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x86, offset 0x275\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x87, hi: 0x87},\n\t// Block 0x87, offset 0x277\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x99, hi: 0x99},\n\t// Block 0x88, offset 0x279\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0x82, hi: 0x82},\n\t{value: 0x8104, lo: 0x84, hi: 0x85},\n\t// Block 0x89, offset 0x27c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x97, hi: 0x97},\n\t// Block 0x8a, offset 0x27e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x8b, offset 0x280\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb6},\n\t// Block 0x8c, offset 0x282\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x8d, offset 0x284\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45cc, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45d6, lo: 0x9f, hi: 0x9f},\n\t{value: 0x460a, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4618, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4626, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4634, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4642, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812b, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8130, lo: 0xad, hi: 0xad},\n\t{value: 0x812b, lo: 0xae, hi: 0xb2},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8e, offset 0x291\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812d, lo: 0x80, hi: 0x82},\n\t{value: 0x8132, lo: 0x85, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8132, lo: 0xaa, hi: 0xad},\n\t{value: 0x45e0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x45ea, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4650, lo: 0xbd, hi: 0xbd},\n\t{value: 0x466c, lo: 0xbe, hi: 0xbe},\n\t{value: 0x465e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x8f, offset 0x29b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x467a, lo: 0x80, hi: 0x80},\n\t// Block 0x90, offset 0x29d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x82, hi: 0x84},\n\t// Block 0x91, offset 0x29f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0x80, hi: 0x86},\n\t{value: 0x8132, lo: 0x88, hi: 0x98},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8132, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa6, hi: 0xaa},\n\t// Block 0x92, offset 0x2a5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x90, hi: 0x96},\n\t// Block 0x93, offset 0x2a7\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x84, hi: 0x89},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x94, offset 0x2aa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x93, hi: 0x93},\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfkcTrie. Total size: 17248 bytes (16.84 KiB). Checksum: 4fb368372b6b1b27.\ntype nfkcTrie struct{}\n\nfunc newNfkcTrie(i int) *nfkcTrie {\n\treturn &nfkcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 92:\n\t\treturn uint16(nfkcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 92\n\t\treturn uint16(nfkcSparse.lookup(n, b))\n\t}\n}\n\n// nfkcValues: 94 blocks, 6016 entries, 12032 bytes\n// The third block is the zero block.\nvar nfkcValues = [6016]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c,\n\t0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb,\n\t0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104,\n\t0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd,\n\t0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235,\n\t0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285,\n\t0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3,\n\t0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750,\n\t0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f,\n\t0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3,\n\t0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 0x104: 0x2f9c, 0x105: 0x32a8,\n\t0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6,\n\t0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5,\n\t0x112: 0x46b0, 0x113: 0x4741, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302,\n\t0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339,\n\t0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352,\n\t0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e,\n\t0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6,\n\t0x130: 0x308c, 0x132: 0x195d, 0x133: 0x19e7, 0x134: 0x30b4, 0x135: 0x33c0,\n\t0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc,\n\t0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8, 0x13f: 0x1bac,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x1c34, 0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118,\n\t0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f, 0x149: 0x1c5c,\n\t0x14c: 0x46d3, 0x14d: 0x4764, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c,\n\t0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483,\n\t0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d,\n\t0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba,\n\t0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796,\n\t0x16a: 0x470a, 0x16b: 0x479b, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2,\n\t0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528,\n\t0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267,\n\t0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0x00a7,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x2dee, 0x185: 0x2df4,\n\t0x186: 0x2dfa, 0x187: 0x1972, 0x188: 0x1975, 0x189: 0x1a08, 0x18a: 0x1987, 0x18b: 0x198a,\n\t0x18c: 0x1a3e, 0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140,\n\t0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8,\n\t0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50,\n\t0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5,\n\t0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf,\n\t0x1aa: 0x46ec, 0x1ab: 0x477d, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd,\n\t0x1b0: 0x33c5, 0x1b1: 0x1942, 0x1b2: 0x1945, 0x1b3: 0x19cf, 0x1b4: 0x3028, 0x1b5: 0x3334,\n\t0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46,\n\t0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316,\n\t0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac,\n\t0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479,\n\t0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6,\n\t0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5,\n\t0x1de: 0x305a, 0x1df: 0x3366,\n\t0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b,\n\t0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769,\n\t0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,\n\t0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,\n\t0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932,\n\t0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d,\n\t0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d,\n\t0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d,\n\t0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d,\n\t0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d,\n\t0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,\n\t0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 0x245: 0x9936,\n\t0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,\n\t0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,\n\t0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,\n\t0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135,\n\t0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132,\n\t0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132,\n\t0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132,\n\t0x274: 0x0170,\n\t0x27a: 0x42a5,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x425a, 0x285: 0x447b,\n\t0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625,\n\t0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 0x2af: 0x36a9,\n\t0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c1: 0xa000, 0x2c5: 0xa000,\n\t0x2c9: 0xa000, 0x2ca: 0x4840, 0x2cb: 0x485e,\n\t0x2cc: 0x36c7, 0x2cd: 0x36df, 0x2ce: 0x4876, 0x2d0: 0x01be, 0x2d1: 0x01d0,\n\t0x2d2: 0x01ac, 0x2d3: 0x430c, 0x2d4: 0x4312, 0x2d5: 0x01fa, 0x2d6: 0x01e8,\n\t0x2f0: 0x01d6, 0x2f1: 0x01eb, 0x2f2: 0x01ee, 0x2f4: 0x0188, 0x2f5: 0x01c7,\n\t0x2f9: 0x01a6,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x3721, 0x301: 0x372d, 0x303: 0x371b,\n\t0x306: 0xa000, 0x307: 0x3709,\n\t0x30c: 0x375d, 0x30d: 0x3745, 0x30e: 0x376f, 0x310: 0xa000,\n\t0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000,\n\t0x318: 0xa000, 0x319: 0x3751, 0x31a: 0xa000,\n\t0x31e: 0xa000, 0x323: 0xa000,\n\t0x327: 0xa000,\n\t0x32b: 0xa000, 0x32d: 0xa000,\n\t0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000,\n\t0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x37d5, 0x33a: 0xa000,\n\t0x33e: 0xa000,\n\t// Block 0xd, offset 0x340\n\t0x341: 0x3733, 0x342: 0x37b7,\n\t0x350: 0x370f, 0x351: 0x3793,\n\t0x352: 0x3715, 0x353: 0x3799, 0x356: 0x3727, 0x357: 0x37ab,\n\t0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3829, 0x35b: 0x382f, 0x35c: 0x3739, 0x35d: 0x37bd,\n\t0x35e: 0x373f, 0x35f: 0x37c3, 0x362: 0x374b, 0x363: 0x37cf,\n\t0x364: 0x3757, 0x365: 0x37db, 0x366: 0x3763, 0x367: 0x37e7, 0x368: 0xa000, 0x369: 0xa000,\n\t0x36a: 0x3835, 0x36b: 0x383b, 0x36c: 0x378d, 0x36d: 0x3811, 0x36e: 0x3769, 0x36f: 0x37ed,\n\t0x370: 0x3775, 0x371: 0x37f9, 0x372: 0x377b, 0x373: 0x37ff, 0x374: 0x3781, 0x375: 0x3805,\n\t0x378: 0x3787, 0x379: 0x380b,\n\t// Block 0xe, offset 0x380\n\t0x387: 0x1d61,\n\t0x391: 0x812d,\n\t0x392: 0x8132, 0x393: 0x8132, 0x394: 0x8132, 0x395: 0x8132, 0x396: 0x812d, 0x397: 0x8132,\n\t0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x812e, 0x39b: 0x812d, 0x39c: 0x8132, 0x39d: 0x8132,\n\t0x39e: 0x8132, 0x39f: 0x8132, 0x3a0: 0x8132, 0x3a1: 0x8132, 0x3a2: 0x812d, 0x3a3: 0x812d,\n\t0x3a4: 0x812d, 0x3a5: 0x812d, 0x3a6: 0x812d, 0x3a7: 0x812d, 0x3a8: 0x8132, 0x3a9: 0x8132,\n\t0x3aa: 0x812d, 0x3ab: 0x8132, 0x3ac: 0x8132, 0x3ad: 0x812e, 0x3ae: 0x8131, 0x3af: 0x8132,\n\t0x3b0: 0x8105, 0x3b1: 0x8106, 0x3b2: 0x8107, 0x3b3: 0x8108, 0x3b4: 0x8109, 0x3b5: 0x810a,\n\t0x3b6: 0x810b, 0x3b7: 0x810c, 0x3b8: 0x810d, 0x3b9: 0x810e, 0x3ba: 0x810e, 0x3bb: 0x810f,\n\t0x3bc: 0x8110, 0x3bd: 0x8111, 0x3bf: 0x8112,\n\t// Block 0xf, offset 0x3c0\n\t0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8116,\n\t0x3cc: 0x8117, 0x3cd: 0x8118, 0x3ce: 0x8119, 0x3cf: 0x811a, 0x3d0: 0x811b, 0x3d1: 0x811c,\n\t0x3d2: 0x811d, 0x3d3: 0x9932, 0x3d4: 0x9932, 0x3d5: 0x992d, 0x3d6: 0x812d, 0x3d7: 0x8132,\n\t0x3d8: 0x8132, 0x3d9: 0x8132, 0x3da: 0x8132, 0x3db: 0x8132, 0x3dc: 0x812d, 0x3dd: 0x8132,\n\t0x3de: 0x8132, 0x3df: 0x812d,\n\t0x3f0: 0x811e, 0x3f5: 0x1d84,\n\t0x3f6: 0x2013, 0x3f7: 0x204f, 0x3f8: 0x204a,\n\t// Block 0x10, offset 0x400\n\t0x413: 0x812d, 0x414: 0x8132, 0x415: 0x8132, 0x416: 0x8132, 0x417: 0x8132,\n\t0x418: 0x8132, 0x419: 0x8132, 0x41a: 0x8132, 0x41b: 0x8132, 0x41c: 0x8132, 0x41d: 0x8132,\n\t0x41e: 0x8132, 0x41f: 0x8132, 0x420: 0x8132, 0x421: 0x8132, 0x423: 0x812d,\n\t0x424: 0x8132, 0x425: 0x8132, 0x426: 0x812d, 0x427: 0x8132, 0x428: 0x8132, 0x429: 0x812d,\n\t0x42a: 0x8132, 0x42b: 0x8132, 0x42c: 0x8132, 0x42d: 0x812d, 0x42e: 0x812d, 0x42f: 0x812d,\n\t0x430: 0x8116, 0x431: 0x8117, 0x432: 0x8118, 0x433: 0x8132, 0x434: 0x8132, 0x435: 0x8132,\n\t0x436: 0x812d, 0x437: 0x8132, 0x438: 0x8132, 0x439: 0x812d, 0x43a: 0x812d, 0x43b: 0x8132,\n\t0x43c: 0x8132, 0x43d: 0x8132, 0x43e: 0x8132, 0x43f: 0x8132,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xa000,\n\t0x446: 0x2d26, 0x447: 0xa000, 0x448: 0x2d2e, 0x449: 0xa000, 0x44a: 0x2d36, 0x44b: 0xa000,\n\t0x44c: 0x2d3e, 0x44d: 0xa000, 0x44e: 0x2d46, 0x451: 0xa000,\n\t0x452: 0x2d4e,\n\t0x474: 0x8102, 0x475: 0x9900,\n\t0x47a: 0xa000, 0x47b: 0x2d56,\n\t0x47c: 0xa000, 0x47d: 0x2d5e, 0x47e: 0xa000, 0x47f: 0xa000,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0069, 0x481: 0x006b, 0x482: 0x006f, 0x483: 0x0083, 0x484: 0x00f5, 0x485: 0x00f8,\n\t0x486: 0x0413, 0x487: 0x0085, 0x488: 0x0089, 0x489: 0x008b, 0x48a: 0x0104, 0x48b: 0x0107,\n\t0x48c: 0x010a, 0x48d: 0x008f, 0x48f: 0x0097, 0x490: 0x009b, 0x491: 0x00e0,\n\t0x492: 0x009f, 0x493: 0x00fe, 0x494: 0x0417, 0x495: 0x041b, 0x496: 0x00a1, 0x497: 0x00a9,\n\t0x498: 0x00ab, 0x499: 0x0423, 0x49a: 0x012b, 0x49b: 0x00ad, 0x49c: 0x0427, 0x49d: 0x01be,\n\t0x49e: 0x01c1, 0x49f: 0x01c4, 0x4a0: 0x01fa, 0x4a1: 0x01fd, 0x4a2: 0x0093, 0x4a3: 0x00a5,\n\t0x4a4: 0x00ab, 0x4a5: 0x00ad, 0x4a6: 0x01be, 0x4a7: 0x01c1, 0x4a8: 0x01eb, 0x4a9: 0x01fa,\n\t0x4aa: 0x01fd,\n\t0x4b8: 0x020c,\n\t// Block 0x13, offset 0x4c0\n\t0x4db: 0x00fb, 0x4dc: 0x0087, 0x4dd: 0x0101,\n\t0x4de: 0x00d4, 0x4df: 0x010a, 0x4e0: 0x008d, 0x4e1: 0x010d, 0x4e2: 0x0110, 0x4e3: 0x0116,\n\t0x4e4: 0x011c, 0x4e5: 0x011f, 0x4e6: 0x0122, 0x4e7: 0x042b, 0x4e8: 0x016a, 0x4e9: 0x0128,\n\t0x4ea: 0x042f, 0x4eb: 0x016d, 0x4ec: 0x0131, 0x4ed: 0x012e, 0x4ee: 0x0134, 0x4ef: 0x0137,\n\t0x4f0: 0x013a, 0x4f1: 0x013d, 0x4f2: 0x0140, 0x4f3: 0x014c, 0x4f4: 0x014f, 0x4f5: 0x00ec,\n\t0x4f6: 0x0152, 0x4f7: 0x0155, 0x4f8: 0x041f, 0x4f9: 0x0158, 0x4fa: 0x015b, 0x4fb: 0x00b5,\n\t0x4fc: 0x015e, 0x4fd: 0x0161, 0x4fe: 0x0164, 0x4ff: 0x01d0,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x8132, 0x501: 0x8132, 0x502: 0x812d, 0x503: 0x8132, 0x504: 0x8132, 0x505: 0x8132,\n\t0x506: 0x8132, 0x507: 0x8132, 0x508: 0x8132, 0x509: 0x8132, 0x50a: 0x812d, 0x50b: 0x8132,\n\t0x50c: 0x8132, 0x50d: 0x8135, 0x50e: 0x812a, 0x50f: 0x812d, 0x510: 0x8129, 0x511: 0x8132,\n\t0x512: 0x8132, 0x513: 0x8132, 0x514: 0x8132, 0x515: 0x8132, 0x516: 0x8132, 0x517: 0x8132,\n\t0x518: 0x8132, 0x519: 0x8132, 0x51a: 0x8132, 0x51b: 0x8132, 0x51c: 0x8132, 0x51d: 0x8132,\n\t0x51e: 0x8132, 0x51f: 0x8132, 0x520: 0x8132, 0x521: 0x8132, 0x522: 0x8132, 0x523: 0x8132,\n\t0x524: 0x8132, 0x525: 0x8132, 0x526: 0x8132, 0x527: 0x8132, 0x528: 0x8132, 0x529: 0x8132,\n\t0x52a: 0x8132, 0x52b: 0x8132, 0x52c: 0x8132, 0x52d: 0x8132, 0x52e: 0x8132, 0x52f: 0x8132,\n\t0x530: 0x8132, 0x531: 0x8132, 0x532: 0x8132, 0x533: 0x8132, 0x534: 0x8132, 0x535: 0x8132,\n\t0x536: 0x8133, 0x537: 0x8131, 0x538: 0x8131, 0x539: 0x812d, 0x53b: 0x8132,\n\t0x53c: 0x8134, 0x53d: 0x812d, 0x53e: 0x8132, 0x53f: 0x812d,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x2f97, 0x541: 0x32a3, 0x542: 0x2fa1, 0x543: 0x32ad, 0x544: 0x2fa6, 0x545: 0x32b2,\n\t0x546: 0x2fab, 0x547: 0x32b7, 0x548: 0x38cc, 0x549: 0x3a5b, 0x54a: 0x2fc4, 0x54b: 0x32d0,\n\t0x54c: 0x2fce, 0x54d: 0x32da, 0x54e: 0x2fdd, 0x54f: 0x32e9, 0x550: 0x2fd3, 0x551: 0x32df,\n\t0x552: 0x2fd8, 0x553: 0x32e4, 0x554: 0x38ef, 0x555: 0x3a7e, 0x556: 0x38f6, 0x557: 0x3a85,\n\t0x558: 0x3019, 0x559: 0x3325, 0x55a: 0x301e, 0x55b: 0x332a, 0x55c: 0x3904, 0x55d: 0x3a93,\n\t0x55e: 0x3023, 0x55f: 0x332f, 0x560: 0x3032, 0x561: 0x333e, 0x562: 0x3050, 0x563: 0x335c,\n\t0x564: 0x305f, 0x565: 0x336b, 0x566: 0x3055, 0x567: 0x3361, 0x568: 0x3064, 0x569: 0x3370,\n\t0x56a: 0x3069, 0x56b: 0x3375, 0x56c: 0x30af, 0x56d: 0x33bb, 0x56e: 0x390b, 0x56f: 0x3a9a,\n\t0x570: 0x30b9, 0x571: 0x33ca, 0x572: 0x30c3, 0x573: 0x33d4, 0x574: 0x30cd, 0x575: 0x33de,\n\t0x576: 0x46c4, 0x577: 0x4755, 0x578: 0x3912, 0x579: 0x3aa1, 0x57a: 0x30e6, 0x57b: 0x33f7,\n\t0x57c: 0x30e1, 0x57d: 0x33f2, 0x57e: 0x30eb, 0x57f: 0x33fc,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x30f0, 0x581: 0x3401, 0x582: 0x30f5, 0x583: 0x3406, 0x584: 0x3109, 0x585: 0x341a,\n\t0x586: 0x3113, 0x587: 0x3424, 0x588: 0x3122, 0x589: 0x3433, 0x58a: 0x311d, 0x58b: 0x342e,\n\t0x58c: 0x3935, 0x58d: 0x3ac4, 0x58e: 0x3943, 0x58f: 0x3ad2, 0x590: 0x394a, 0x591: 0x3ad9,\n\t0x592: 0x3951, 0x593: 0x3ae0, 0x594: 0x314f, 0x595: 0x3460, 0x596: 0x3154, 0x597: 0x3465,\n\t0x598: 0x315e, 0x599: 0x346f, 0x59a: 0x46f1, 0x59b: 0x4782, 0x59c: 0x3997, 0x59d: 0x3b26,\n\t0x59e: 0x3177, 0x59f: 0x3488, 0x5a0: 0x3181, 0x5a1: 0x3492, 0x5a2: 0x4700, 0x5a3: 0x4791,\n\t0x5a4: 0x399e, 0x5a5: 0x3b2d, 0x5a6: 0x39a5, 0x5a7: 0x3b34, 0x5a8: 0x39ac, 0x5a9: 0x3b3b,\n\t0x5aa: 0x3190, 0x5ab: 0x34a1, 0x5ac: 0x319a, 0x5ad: 0x34b0, 0x5ae: 0x31ae, 0x5af: 0x34c4,\n\t0x5b0: 0x31a9, 0x5b1: 0x34bf, 0x5b2: 0x31ea, 0x5b3: 0x3500, 0x5b4: 0x31f9, 0x5b5: 0x350f,\n\t0x5b6: 0x31f4, 0x5b7: 0x350a, 0x5b8: 0x39b3, 0x5b9: 0x3b42, 0x5ba: 0x39ba, 0x5bb: 0x3b49,\n\t0x5bc: 0x31fe, 0x5bd: 0x3514, 0x5be: 0x3203, 0x5bf: 0x3519,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x3208, 0x5c1: 0x351e, 0x5c2: 0x320d, 0x5c3: 0x3523, 0x5c4: 0x321c, 0x5c5: 0x3532,\n\t0x5c6: 0x3217, 0x5c7: 0x352d, 0x5c8: 0x3221, 0x5c9: 0x353c, 0x5ca: 0x3226, 0x5cb: 0x3541,\n\t0x5cc: 0x322b, 0x5cd: 0x3546, 0x5ce: 0x3249, 0x5cf: 0x3564, 0x5d0: 0x3262, 0x5d1: 0x3582,\n\t0x5d2: 0x3271, 0x5d3: 0x3591, 0x5d4: 0x3276, 0x5d5: 0x3596, 0x5d6: 0x337a, 0x5d7: 0x34a6,\n\t0x5d8: 0x3537, 0x5d9: 0x3573, 0x5da: 0x1be0, 0x5db: 0x42d7,\n\t0x5e0: 0x46a1, 0x5e1: 0x4732, 0x5e2: 0x2f83, 0x5e3: 0x328f,\n\t0x5e4: 0x3878, 0x5e5: 0x3a07, 0x5e6: 0x3871, 0x5e7: 0x3a00, 0x5e8: 0x3886, 0x5e9: 0x3a15,\n\t0x5ea: 0x387f, 0x5eb: 0x3a0e, 0x5ec: 0x38be, 0x5ed: 0x3a4d, 0x5ee: 0x3894, 0x5ef: 0x3a23,\n\t0x5f0: 0x388d, 0x5f1: 0x3a1c, 0x5f2: 0x38a2, 0x5f3: 0x3a31, 0x5f4: 0x389b, 0x5f5: 0x3a2a,\n\t0x5f6: 0x38c5, 0x5f7: 0x3a54, 0x5f8: 0x46b5, 0x5f9: 0x4746, 0x5fa: 0x3000, 0x5fb: 0x330c,\n\t0x5fc: 0x2fec, 0x5fd: 0x32f8, 0x5fe: 0x38da, 0x5ff: 0x3a69,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x38d3, 0x601: 0x3a62, 0x602: 0x38e8, 0x603: 0x3a77, 0x604: 0x38e1, 0x605: 0x3a70,\n\t0x606: 0x38fd, 0x607: 0x3a8c, 0x608: 0x3091, 0x609: 0x339d, 0x60a: 0x30a5, 0x60b: 0x33b1,\n\t0x60c: 0x46e7, 0x60d: 0x4778, 0x60e: 0x3136, 0x60f: 0x3447, 0x610: 0x3920, 0x611: 0x3aaf,\n\t0x612: 0x3919, 0x613: 0x3aa8, 0x614: 0x392e, 0x615: 0x3abd, 0x616: 0x3927, 0x617: 0x3ab6,\n\t0x618: 0x3989, 0x619: 0x3b18, 0x61a: 0x396d, 0x61b: 0x3afc, 0x61c: 0x3966, 0x61d: 0x3af5,\n\t0x61e: 0x397b, 0x61f: 0x3b0a, 0x620: 0x3974, 0x621: 0x3b03, 0x622: 0x3982, 0x623: 0x3b11,\n\t0x624: 0x31e5, 0x625: 0x34fb, 0x626: 0x31c7, 0x627: 0x34dd, 0x628: 0x39e4, 0x629: 0x3b73,\n\t0x62a: 0x39dd, 0x62b: 0x3b6c, 0x62c: 0x39f2, 0x62d: 0x3b81, 0x62e: 0x39eb, 0x62f: 0x3b7a,\n\t0x630: 0x39f9, 0x631: 0x3b88, 0x632: 0x3230, 0x633: 0x354b, 0x634: 0x3258, 0x635: 0x3578,\n\t0x636: 0x3253, 0x637: 0x356e, 0x638: 0x323f, 0x639: 0x355a,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x4804, 0x641: 0x480a, 0x642: 0x491e, 0x643: 0x4936, 0x644: 0x4926, 0x645: 0x493e,\n\t0x646: 0x492e, 0x647: 0x4946, 0x648: 0x47aa, 0x649: 0x47b0, 0x64a: 0x488e, 0x64b: 0x48a6,\n\t0x64c: 0x4896, 0x64d: 0x48ae, 0x64e: 0x489e, 0x64f: 0x48b6, 0x650: 0x4816, 0x651: 0x481c,\n\t0x652: 0x3db8, 0x653: 0x3dc8, 0x654: 0x3dc0, 0x655: 0x3dd0,\n\t0x658: 0x47b6, 0x659: 0x47bc, 0x65a: 0x3ce8, 0x65b: 0x3cf8, 0x65c: 0x3cf0, 0x65d: 0x3d00,\n\t0x660: 0x482e, 0x661: 0x4834, 0x662: 0x494e, 0x663: 0x4966,\n\t0x664: 0x4956, 0x665: 0x496e, 0x666: 0x495e, 0x667: 0x4976, 0x668: 0x47c2, 0x669: 0x47c8,\n\t0x66a: 0x48be, 0x66b: 0x48d6, 0x66c: 0x48c6, 0x66d: 0x48de, 0x66e: 0x48ce, 0x66f: 0x48e6,\n\t0x670: 0x4846, 0x671: 0x484c, 0x672: 0x3e18, 0x673: 0x3e30, 0x674: 0x3e20, 0x675: 0x3e38,\n\t0x676: 0x3e28, 0x677: 0x3e40, 0x678: 0x47ce, 0x679: 0x47d4, 0x67a: 0x3d18, 0x67b: 0x3d30,\n\t0x67c: 0x3d20, 0x67d: 0x3d38, 0x67e: 0x3d28, 0x67f: 0x3d40,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x4852, 0x681: 0x4858, 0x682: 0x3e48, 0x683: 0x3e58, 0x684: 0x3e50, 0x685: 0x3e60,\n\t0x688: 0x47da, 0x689: 0x47e0, 0x68a: 0x3d48, 0x68b: 0x3d58,\n\t0x68c: 0x3d50, 0x68d: 0x3d60, 0x690: 0x4864, 0x691: 0x486a,\n\t0x692: 0x3e80, 0x693: 0x3e98, 0x694: 0x3e88, 0x695: 0x3ea0, 0x696: 0x3e90, 0x697: 0x3ea8,\n\t0x699: 0x47e6, 0x69b: 0x3d68, 0x69d: 0x3d70,\n\t0x69f: 0x3d78, 0x6a0: 0x487c, 0x6a1: 0x4882, 0x6a2: 0x497e, 0x6a3: 0x4996,\n\t0x6a4: 0x4986, 0x6a5: 0x499e, 0x6a6: 0x498e, 0x6a7: 0x49a6, 0x6a8: 0x47ec, 0x6a9: 0x47f2,\n\t0x6aa: 0x48ee, 0x6ab: 0x4906, 0x6ac: 0x48f6, 0x6ad: 0x490e, 0x6ae: 0x48fe, 0x6af: 0x4916,\n\t0x6b0: 0x47f8, 0x6b1: 0x431e, 0x6b2: 0x3691, 0x6b3: 0x4324, 0x6b4: 0x4822, 0x6b5: 0x432a,\n\t0x6b6: 0x36a3, 0x6b7: 0x4330, 0x6b8: 0x36c1, 0x6b9: 0x4336, 0x6ba: 0x36d9, 0x6bb: 0x433c,\n\t0x6bc: 0x4870, 0x6bd: 0x4342,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3da0, 0x6c1: 0x3da8, 0x6c2: 0x4184, 0x6c3: 0x41a2, 0x6c4: 0x418e, 0x6c5: 0x41ac,\n\t0x6c6: 0x4198, 0x6c7: 0x41b6, 0x6c8: 0x3cd8, 0x6c9: 0x3ce0, 0x6ca: 0x40d0, 0x6cb: 0x40ee,\n\t0x6cc: 0x40da, 0x6cd: 0x40f8, 0x6ce: 0x40e4, 0x6cf: 0x4102, 0x6d0: 0x3de8, 0x6d1: 0x3df0,\n\t0x6d2: 0x41c0, 0x6d3: 0x41de, 0x6d4: 0x41ca, 0x6d5: 0x41e8, 0x6d6: 0x41d4, 0x6d7: 0x41f2,\n\t0x6d8: 0x3d08, 0x6d9: 0x3d10, 0x6da: 0x410c, 0x6db: 0x412a, 0x6dc: 0x4116, 0x6dd: 0x4134,\n\t0x6de: 0x4120, 0x6df: 0x413e, 0x6e0: 0x3ec0, 0x6e1: 0x3ec8, 0x6e2: 0x41fc, 0x6e3: 0x421a,\n\t0x6e4: 0x4206, 0x6e5: 0x4224, 0x6e6: 0x4210, 0x6e7: 0x422e, 0x6e8: 0x3d80, 0x6e9: 0x3d88,\n\t0x6ea: 0x4148, 0x6eb: 0x4166, 0x6ec: 0x4152, 0x6ed: 0x4170, 0x6ee: 0x415c, 0x6ef: 0x417a,\n\t0x6f0: 0x3685, 0x6f1: 0x367f, 0x6f2: 0x3d90, 0x6f3: 0x368b, 0x6f4: 0x3d98,\n\t0x6f6: 0x4810, 0x6f7: 0x3db0, 0x6f8: 0x35f5, 0x6f9: 0x35ef, 0x6fa: 0x35e3, 0x6fb: 0x42ee,\n\t0x6fc: 0x35fb, 0x6fd: 0x4287, 0x6fe: 0x01d3, 0x6ff: 0x4287,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x42a0, 0x701: 0x4482, 0x702: 0x3dd8, 0x703: 0x369d, 0x704: 0x3de0,\n\t0x706: 0x483a, 0x707: 0x3df8, 0x708: 0x3601, 0x709: 0x42f4, 0x70a: 0x360d, 0x70b: 0x42fa,\n\t0x70c: 0x3619, 0x70d: 0x4489, 0x70e: 0x4490, 0x70f: 0x4497, 0x710: 0x36b5, 0x711: 0x36af,\n\t0x712: 0x3e00, 0x713: 0x44e4, 0x716: 0x36bb, 0x717: 0x3e10,\n\t0x718: 0x3631, 0x719: 0x362b, 0x71a: 0x361f, 0x71b: 0x4300, 0x71d: 0x449e,\n\t0x71e: 0x44a5, 0x71f: 0x44ac, 0x720: 0x36eb, 0x721: 0x36e5, 0x722: 0x3e68, 0x723: 0x44ec,\n\t0x724: 0x36cd, 0x725: 0x36d3, 0x726: 0x36f1, 0x727: 0x3e78, 0x728: 0x3661, 0x729: 0x365b,\n\t0x72a: 0x364f, 0x72b: 0x430c, 0x72c: 0x3649, 0x72d: 0x4474, 0x72e: 0x447b, 0x72f: 0x0081,\n\t0x732: 0x3eb0, 0x733: 0x36f7, 0x734: 0x3eb8,\n\t0x736: 0x4888, 0x737: 0x3ed0, 0x738: 0x363d, 0x739: 0x4306, 0x73a: 0x366d, 0x73b: 0x4318,\n\t0x73c: 0x3679, 0x73d: 0x425a, 0x73e: 0x428c,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x1bd8, 0x741: 0x1bdc, 0x742: 0x0047, 0x743: 0x1c54, 0x745: 0x1be8,\n\t0x746: 0x1bec, 0x747: 0x00e9, 0x749: 0x1c58, 0x74a: 0x008f, 0x74b: 0x0051,\n\t0x74c: 0x0051, 0x74d: 0x0051, 0x74e: 0x0091, 0x74f: 0x00da, 0x750: 0x0053, 0x751: 0x0053,\n\t0x752: 0x0059, 0x753: 0x0099, 0x755: 0x005d, 0x756: 0x198d,\n\t0x759: 0x0061, 0x75a: 0x0063, 0x75b: 0x0065, 0x75c: 0x0065, 0x75d: 0x0065,\n\t0x760: 0x199f, 0x761: 0x1bc8, 0x762: 0x19a8,\n\t0x764: 0x0075, 0x766: 0x01b8, 0x768: 0x0075,\n\t0x76a: 0x0057, 0x76b: 0x42d2, 0x76c: 0x0045, 0x76d: 0x0047, 0x76f: 0x008b,\n\t0x770: 0x004b, 0x771: 0x004d, 0x773: 0x005b, 0x774: 0x009f, 0x775: 0x0215,\n\t0x776: 0x0218, 0x777: 0x021b, 0x778: 0x021e, 0x779: 0x0093, 0x77b: 0x1b98,\n\t0x77c: 0x01e8, 0x77d: 0x01c1, 0x77e: 0x0179, 0x77f: 0x01a0,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x0463, 0x785: 0x0049,\n\t0x786: 0x0089, 0x787: 0x008b, 0x788: 0x0093, 0x789: 0x0095,\n\t0x790: 0x222e, 0x791: 0x223a,\n\t0x792: 0x22ee, 0x793: 0x2216, 0x794: 0x229a, 0x795: 0x2222, 0x796: 0x22a0, 0x797: 0x22b8,\n\t0x798: 0x22c4, 0x799: 0x2228, 0x79a: 0x22ca, 0x79b: 0x2234, 0x79c: 0x22be, 0x79d: 0x22d0,\n\t0x79e: 0x22d6, 0x79f: 0x1cbc, 0x7a0: 0x0053, 0x7a1: 0x195a, 0x7a2: 0x1ba4, 0x7a3: 0x1963,\n\t0x7a4: 0x006d, 0x7a5: 0x19ab, 0x7a6: 0x1bd0, 0x7a7: 0x1d48, 0x7a8: 0x1966, 0x7a9: 0x0071,\n\t0x7aa: 0x19b7, 0x7ab: 0x1bd4, 0x7ac: 0x0059, 0x7ad: 0x0047, 0x7ae: 0x0049, 0x7af: 0x005b,\n\t0x7b0: 0x0093, 0x7b1: 0x19e4, 0x7b2: 0x1c18, 0x7b3: 0x19ed, 0x7b4: 0x00ad, 0x7b5: 0x1a62,\n\t0x7b6: 0x1c4c, 0x7b7: 0x1d5c, 0x7b8: 0x19f0, 0x7b9: 0x00b1, 0x7ba: 0x1a65, 0x7bb: 0x1c50,\n\t0x7bc: 0x0099, 0x7bd: 0x0087, 0x7be: 0x0089, 0x7bf: 0x009b,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x3c06, 0x7c3: 0xa000, 0x7c4: 0x3c0d, 0x7c5: 0xa000,\n\t0x7c7: 0x3c14, 0x7c8: 0xa000, 0x7c9: 0x3c1b,\n\t0x7cd: 0xa000,\n\t0x7e0: 0x2f65, 0x7e1: 0xa000, 0x7e2: 0x3c29,\n\t0x7e4: 0xa000, 0x7e5: 0xa000,\n\t0x7ed: 0x3c22, 0x7ee: 0x2f60, 0x7ef: 0x2f6a,\n\t0x7f0: 0x3c30, 0x7f1: 0x3c37, 0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0x3c3e, 0x7f5: 0x3c45,\n\t0x7f6: 0xa000, 0x7f7: 0xa000, 0x7f8: 0x3c4c, 0x7f9: 0x3c53, 0x7fa: 0xa000, 0x7fb: 0xa000,\n\t0x7fc: 0xa000, 0x7fd: 0xa000,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3c5a, 0x801: 0x3c61, 0x802: 0xa000, 0x803: 0xa000, 0x804: 0x3c76, 0x805: 0x3c7d,\n\t0x806: 0xa000, 0x807: 0xa000, 0x808: 0x3c84, 0x809: 0x3c8b,\n\t0x811: 0xa000,\n\t0x812: 0xa000,\n\t0x822: 0xa000,\n\t0x828: 0xa000, 0x829: 0xa000,\n\t0x82b: 0xa000, 0x82c: 0x3ca0, 0x82d: 0x3ca7, 0x82e: 0x3cae, 0x82f: 0x3cb5,\n\t0x832: 0xa000, 0x833: 0xa000, 0x834: 0xa000, 0x835: 0xa000,\n\t// Block 0x21, offset 0x840\n\t0x860: 0x0023, 0x861: 0x0025, 0x862: 0x0027, 0x863: 0x0029,\n\t0x864: 0x002b, 0x865: 0x002d, 0x866: 0x002f, 0x867: 0x0031, 0x868: 0x0033, 0x869: 0x1882,\n\t0x86a: 0x1885, 0x86b: 0x1888, 0x86c: 0x188b, 0x86d: 0x188e, 0x86e: 0x1891, 0x86f: 0x1894,\n\t0x870: 0x1897, 0x871: 0x189a, 0x872: 0x189d, 0x873: 0x18a6, 0x874: 0x1a68, 0x875: 0x1a6c,\n\t0x876: 0x1a70, 0x877: 0x1a74, 0x878: 0x1a78, 0x879: 0x1a7c, 0x87a: 0x1a80, 0x87b: 0x1a84,\n\t0x87c: 0x1a88, 0x87d: 0x1c80, 0x87e: 0x1c85, 0x87f: 0x1c8a,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x1c8f, 0x881: 0x1c94, 0x882: 0x1c99, 0x883: 0x1c9e, 0x884: 0x1ca3, 0x885: 0x1ca8,\n\t0x886: 0x1cad, 0x887: 0x1cb2, 0x888: 0x187f, 0x889: 0x18a3, 0x88a: 0x18c7, 0x88b: 0x18eb,\n\t0x88c: 0x190f, 0x88d: 0x1918, 0x88e: 0x191e, 0x88f: 0x1924, 0x890: 0x192a, 0x891: 0x1b60,\n\t0x892: 0x1b64, 0x893: 0x1b68, 0x894: 0x1b6c, 0x895: 0x1b70, 0x896: 0x1b74, 0x897: 0x1b78,\n\t0x898: 0x1b7c, 0x899: 0x1b80, 0x89a: 0x1b84, 0x89b: 0x1b88, 0x89c: 0x1af4, 0x89d: 0x1af8,\n\t0x89e: 0x1afc, 0x89f: 0x1b00, 0x8a0: 0x1b04, 0x8a1: 0x1b08, 0x8a2: 0x1b0c, 0x8a3: 0x1b10,\n\t0x8a4: 0x1b14, 0x8a5: 0x1b18, 0x8a6: 0x1b1c, 0x8a7: 0x1b20, 0x8a8: 0x1b24, 0x8a9: 0x1b28,\n\t0x8aa: 0x1b2c, 0x8ab: 0x1b30, 0x8ac: 0x1b34, 0x8ad: 0x1b38, 0x8ae: 0x1b3c, 0x8af: 0x1b40,\n\t0x8b0: 0x1b44, 0x8b1: 0x1b48, 0x8b2: 0x1b4c, 0x8b3: 0x1b50, 0x8b4: 0x1b54, 0x8b5: 0x1b58,\n\t0x8b6: 0x0043, 0x8b7: 0x0045, 0x8b8: 0x0047, 0x8b9: 0x0049, 0x8ba: 0x004b, 0x8bb: 0x004d,\n\t0x8bc: 0x004f, 0x8bd: 0x0051, 0x8be: 0x0053, 0x8bf: 0x0055,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x06bf, 0x8c1: 0x06e3, 0x8c2: 0x06ef, 0x8c3: 0x06ff, 0x8c4: 0x0707, 0x8c5: 0x0713,\n\t0x8c6: 0x071b, 0x8c7: 0x0723, 0x8c8: 0x072f, 0x8c9: 0x0783, 0x8ca: 0x079b, 0x8cb: 0x07ab,\n\t0x8cc: 0x07bb, 0x8cd: 0x07cb, 0x8ce: 0x07db, 0x8cf: 0x07fb, 0x8d0: 0x07ff, 0x8d1: 0x0803,\n\t0x8d2: 0x0837, 0x8d3: 0x085f, 0x8d4: 0x086f, 0x8d5: 0x0877, 0x8d6: 0x087b, 0x8d7: 0x0887,\n\t0x8d8: 0x08a3, 0x8d9: 0x08a7, 0x8da: 0x08bf, 0x8db: 0x08c3, 0x8dc: 0x08cb, 0x8dd: 0x08db,\n\t0x8de: 0x0977, 0x8df: 0x098b, 0x8e0: 0x09cb, 0x8e1: 0x09df, 0x8e2: 0x09e7, 0x8e3: 0x09eb,\n\t0x8e4: 0x09fb, 0x8e5: 0x0a17, 0x8e6: 0x0a43, 0x8e7: 0x0a4f, 0x8e8: 0x0a6f, 0x8e9: 0x0a7b,\n\t0x8ea: 0x0a7f, 0x8eb: 0x0a83, 0x8ec: 0x0a9b, 0x8ed: 0x0a9f, 0x8ee: 0x0acb, 0x8ef: 0x0ad7,\n\t0x8f0: 0x0adf, 0x8f1: 0x0ae7, 0x8f2: 0x0af7, 0x8f3: 0x0aff, 0x8f4: 0x0b07, 0x8f5: 0x0b33,\n\t0x8f6: 0x0b37, 0x8f7: 0x0b3f, 0x8f8: 0x0b43, 0x8f9: 0x0b4b, 0x8fa: 0x0b53, 0x8fb: 0x0b63,\n\t0x8fc: 0x0b7f, 0x8fd: 0x0bf7, 0x8fe: 0x0c0b, 0x8ff: 0x0c0f,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0c8f, 0x901: 0x0c93, 0x902: 0x0ca7, 0x903: 0x0cab, 0x904: 0x0cb3, 0x905: 0x0cbb,\n\t0x906: 0x0cc3, 0x907: 0x0ccf, 0x908: 0x0cf7, 0x909: 0x0d07, 0x90a: 0x0d1b, 0x90b: 0x0d8b,\n\t0x90c: 0x0d97, 0x90d: 0x0da7, 0x90e: 0x0db3, 0x90f: 0x0dbf, 0x910: 0x0dc7, 0x911: 0x0dcb,\n\t0x912: 0x0dcf, 0x913: 0x0dd3, 0x914: 0x0dd7, 0x915: 0x0e8f, 0x916: 0x0ed7, 0x917: 0x0ee3,\n\t0x918: 0x0ee7, 0x919: 0x0eeb, 0x91a: 0x0eef, 0x91b: 0x0ef7, 0x91c: 0x0efb, 0x91d: 0x0f0f,\n\t0x91e: 0x0f2b, 0x91f: 0x0f33, 0x920: 0x0f73, 0x921: 0x0f77, 0x922: 0x0f7f, 0x923: 0x0f83,\n\t0x924: 0x0f8b, 0x925: 0x0f8f, 0x926: 0x0fb3, 0x927: 0x0fb7, 0x928: 0x0fd3, 0x929: 0x0fd7,\n\t0x92a: 0x0fdb, 0x92b: 0x0fdf, 0x92c: 0x0ff3, 0x92d: 0x1017, 0x92e: 0x101b, 0x92f: 0x101f,\n\t0x930: 0x1043, 0x931: 0x1083, 0x932: 0x1087, 0x933: 0x10a7, 0x934: 0x10b7, 0x935: 0x10bf,\n\t0x936: 0x10df, 0x937: 0x1103, 0x938: 0x1147, 0x939: 0x114f, 0x93a: 0x1163, 0x93b: 0x116f,\n\t0x93c: 0x1177, 0x93d: 0x117f, 0x93e: 0x1183, 0x93f: 0x1187,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x119f, 0x941: 0x11a3, 0x942: 0x11bf, 0x943: 0x11c7, 0x944: 0x11cf, 0x945: 0x11d3,\n\t0x946: 0x11df, 0x947: 0x11e7, 0x948: 0x11eb, 0x949: 0x11ef, 0x94a: 0x11f7, 0x94b: 0x11fb,\n\t0x94c: 0x129b, 0x94d: 0x12af, 0x94e: 0x12e3, 0x94f: 0x12e7, 0x950: 0x12ef, 0x951: 0x131b,\n\t0x952: 0x1323, 0x953: 0x132b, 0x954: 0x1333, 0x955: 0x136f, 0x956: 0x1373, 0x957: 0x137b,\n\t0x958: 0x137f, 0x959: 0x1383, 0x95a: 0x13af, 0x95b: 0x13b3, 0x95c: 0x13bb, 0x95d: 0x13cf,\n\t0x95e: 0x13d3, 0x95f: 0x13ef, 0x960: 0x13f7, 0x961: 0x13fb, 0x962: 0x141f, 0x963: 0x143f,\n\t0x964: 0x1453, 0x965: 0x1457, 0x966: 0x145f, 0x967: 0x148b, 0x968: 0x148f, 0x969: 0x149f,\n\t0x96a: 0x14c3, 0x96b: 0x14cf, 0x96c: 0x14df, 0x96d: 0x14f7, 0x96e: 0x14ff, 0x96f: 0x1503,\n\t0x970: 0x1507, 0x971: 0x150b, 0x972: 0x1517, 0x973: 0x151b, 0x974: 0x1523, 0x975: 0x153f,\n\t0x976: 0x1543, 0x977: 0x1547, 0x978: 0x155f, 0x979: 0x1563, 0x97a: 0x156b, 0x97b: 0x157f,\n\t0x97c: 0x1583, 0x97d: 0x1587, 0x97e: 0x158f, 0x97f: 0x1593,\n\t// Block 0x26, offset 0x980\n\t0x986: 0xa000, 0x98b: 0xa000,\n\t0x98c: 0x3f08, 0x98d: 0xa000, 0x98e: 0x3f10, 0x98f: 0xa000, 0x990: 0x3f18, 0x991: 0xa000,\n\t0x992: 0x3f20, 0x993: 0xa000, 0x994: 0x3f28, 0x995: 0xa000, 0x996: 0x3f30, 0x997: 0xa000,\n\t0x998: 0x3f38, 0x999: 0xa000, 0x99a: 0x3f40, 0x99b: 0xa000, 0x99c: 0x3f48, 0x99d: 0xa000,\n\t0x99e: 0x3f50, 0x99f: 0xa000, 0x9a0: 0x3f58, 0x9a1: 0xa000, 0x9a2: 0x3f60,\n\t0x9a4: 0xa000, 0x9a5: 0x3f68, 0x9a6: 0xa000, 0x9a7: 0x3f70, 0x9a8: 0xa000, 0x9a9: 0x3f78,\n\t0x9af: 0xa000,\n\t0x9b0: 0x3f80, 0x9b1: 0x3f88, 0x9b2: 0xa000, 0x9b3: 0x3f90, 0x9b4: 0x3f98, 0x9b5: 0xa000,\n\t0x9b6: 0x3fa0, 0x9b7: 0x3fa8, 0x9b8: 0xa000, 0x9b9: 0x3fb0, 0x9ba: 0x3fb8, 0x9bb: 0xa000,\n\t0x9bc: 0x3fc0, 0x9bd: 0x3fc8,\n\t// Block 0x27, offset 0x9c0\n\t0x9d4: 0x3f00,\n\t0x9d9: 0x9903, 0x9da: 0x9903, 0x9db: 0x42dc, 0x9dc: 0x42e2, 0x9dd: 0xa000,\n\t0x9de: 0x3fd0, 0x9df: 0x26b4,\n\t0x9e6: 0xa000,\n\t0x9eb: 0xa000, 0x9ec: 0x3fe0, 0x9ed: 0xa000, 0x9ee: 0x3fe8, 0x9ef: 0xa000,\n\t0x9f0: 0x3ff0, 0x9f1: 0xa000, 0x9f2: 0x3ff8, 0x9f3: 0xa000, 0x9f4: 0x4000, 0x9f5: 0xa000,\n\t0x9f6: 0x4008, 0x9f7: 0xa000, 0x9f8: 0x4010, 0x9f9: 0xa000, 0x9fa: 0x4018, 0x9fb: 0xa000,\n\t0x9fc: 0x4020, 0x9fd: 0xa000, 0x9fe: 0x4028, 0x9ff: 0xa000,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x4030, 0xa01: 0xa000, 0xa02: 0x4038, 0xa04: 0xa000, 0xa05: 0x4040,\n\t0xa06: 0xa000, 0xa07: 0x4048, 0xa08: 0xa000, 0xa09: 0x4050,\n\t0xa0f: 0xa000, 0xa10: 0x4058, 0xa11: 0x4060,\n\t0xa12: 0xa000, 0xa13: 0x4068, 0xa14: 0x4070, 0xa15: 0xa000, 0xa16: 0x4078, 0xa17: 0x4080,\n\t0xa18: 0xa000, 0xa19: 0x4088, 0xa1a: 0x4090, 0xa1b: 0xa000, 0xa1c: 0x4098, 0xa1d: 0x40a0,\n\t0xa2f: 0xa000,\n\t0xa30: 0xa000, 0xa31: 0xa000, 0xa32: 0xa000, 0xa34: 0x3fd8,\n\t0xa37: 0x40a8, 0xa38: 0x40b0, 0xa39: 0x40b8, 0xa3a: 0x40c0,\n\t0xa3d: 0xa000, 0xa3e: 0x40c8, 0xa3f: 0x26c9,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0367, 0xa41: 0x032b, 0xa42: 0x032f, 0xa43: 0x0333, 0xa44: 0x037b, 0xa45: 0x0337,\n\t0xa46: 0x033b, 0xa47: 0x033f, 0xa48: 0x0343, 0xa49: 0x0347, 0xa4a: 0x034b, 0xa4b: 0x034f,\n\t0xa4c: 0x0353, 0xa4d: 0x0357, 0xa4e: 0x035b, 0xa4f: 0x49bd, 0xa50: 0x49c3, 0xa51: 0x49c9,\n\t0xa52: 0x49cf, 0xa53: 0x49d5, 0xa54: 0x49db, 0xa55: 0x49e1, 0xa56: 0x49e7, 0xa57: 0x49ed,\n\t0xa58: 0x49f3, 0xa59: 0x49f9, 0xa5a: 0x49ff, 0xa5b: 0x4a05, 0xa5c: 0x4a0b, 0xa5d: 0x4a11,\n\t0xa5e: 0x4a17, 0xa5f: 0x4a1d, 0xa60: 0x4a23, 0xa61: 0x4a29, 0xa62: 0x4a2f, 0xa63: 0x4a35,\n\t0xa64: 0x03c3, 0xa65: 0x035f, 0xa66: 0x0363, 0xa67: 0x03e7, 0xa68: 0x03eb, 0xa69: 0x03ef,\n\t0xa6a: 0x03f3, 0xa6b: 0x03f7, 0xa6c: 0x03fb, 0xa6d: 0x03ff, 0xa6e: 0x036b, 0xa6f: 0x0403,\n\t0xa70: 0x0407, 0xa71: 0x036f, 0xa72: 0x0373, 0xa73: 0x0377, 0xa74: 0x037f, 0xa75: 0x0383,\n\t0xa76: 0x0387, 0xa77: 0x038b, 0xa78: 0x038f, 0xa79: 0x0393, 0xa7a: 0x0397, 0xa7b: 0x039b,\n\t0xa7c: 0x039f, 0xa7d: 0x03a3, 0xa7e: 0x03a7, 0xa7f: 0x03ab,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x03af, 0xa81: 0x03b3, 0xa82: 0x040b, 0xa83: 0x040f, 0xa84: 0x03b7, 0xa85: 0x03bb,\n\t0xa86: 0x03bf, 0xa87: 0x03c7, 0xa88: 0x03cb, 0xa89: 0x03cf, 0xa8a: 0x03d3, 0xa8b: 0x03d7,\n\t0xa8c: 0x03db, 0xa8d: 0x03df, 0xa8e: 0x03e3,\n\t0xa92: 0x06bf, 0xa93: 0x071b, 0xa94: 0x06cb, 0xa95: 0x097b, 0xa96: 0x06cf, 0xa97: 0x06e7,\n\t0xa98: 0x06d3, 0xa99: 0x0f93, 0xa9a: 0x0707, 0xa9b: 0x06db, 0xa9c: 0x06c3, 0xa9d: 0x09ff,\n\t0xa9e: 0x098f, 0xa9f: 0x072f,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x2054, 0xac1: 0x205a, 0xac2: 0x2060, 0xac3: 0x2066, 0xac4: 0x206c, 0xac5: 0x2072,\n\t0xac6: 0x2078, 0xac7: 0x207e, 0xac8: 0x2084, 0xac9: 0x208a, 0xaca: 0x2090, 0xacb: 0x2096,\n\t0xacc: 0x209c, 0xacd: 0x20a2, 0xace: 0x2726, 0xacf: 0x272f, 0xad0: 0x2738, 0xad1: 0x2741,\n\t0xad2: 0x274a, 0xad3: 0x2753, 0xad4: 0x275c, 0xad5: 0x2765, 0xad6: 0x276e, 0xad7: 0x2780,\n\t0xad8: 0x2789, 0xad9: 0x2792, 0xada: 0x279b, 0xadb: 0x27a4, 0xadc: 0x2777, 0xadd: 0x2bac,\n\t0xade: 0x2aed, 0xae0: 0x20a8, 0xae1: 0x20c0, 0xae2: 0x20b4, 0xae3: 0x2108,\n\t0xae4: 0x20c6, 0xae5: 0x20e4, 0xae6: 0x20ae, 0xae7: 0x20de, 0xae8: 0x20ba, 0xae9: 0x20f0,\n\t0xaea: 0x2120, 0xaeb: 0x213e, 0xaec: 0x2138, 0xaed: 0x212c, 0xaee: 0x217a, 0xaef: 0x210e,\n\t0xaf0: 0x211a, 0xaf1: 0x2132, 0xaf2: 0x2126, 0xaf3: 0x2150, 0xaf4: 0x20fc, 0xaf5: 0x2144,\n\t0xaf6: 0x216e, 0xaf7: 0x2156, 0xaf8: 0x20ea, 0xaf9: 0x20cc, 0xafa: 0x2102, 0xafb: 0x2114,\n\t0xafc: 0x214a, 0xafd: 0x20d2, 0xafe: 0x2174, 0xaff: 0x20f6,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x215c, 0xb01: 0x20d8, 0xb02: 0x2162, 0xb03: 0x2168, 0xb04: 0x092f, 0xb05: 0x0b03,\n\t0xb06: 0x0ca7, 0xb07: 0x10c7,\n\t0xb10: 0x1bc4, 0xb11: 0x18a9,\n\t0xb12: 0x18ac, 0xb13: 0x18af, 0xb14: 0x18b2, 0xb15: 0x18b5, 0xb16: 0x18b8, 0xb17: 0x18bb,\n\t0xb18: 0x18be, 0xb19: 0x18c1, 0xb1a: 0x18ca, 0xb1b: 0x18cd, 0xb1c: 0x18d0, 0xb1d: 0x18d3,\n\t0xb1e: 0x18d6, 0xb1f: 0x18d9, 0xb20: 0x0313, 0xb21: 0x031b, 0xb22: 0x031f, 0xb23: 0x0327,\n\t0xb24: 0x032b, 0xb25: 0x032f, 0xb26: 0x0337, 0xb27: 0x033f, 0xb28: 0x0343, 0xb29: 0x034b,\n\t0xb2a: 0x034f, 0xb2b: 0x0353, 0xb2c: 0x0357, 0xb2d: 0x035b, 0xb2e: 0x2e18, 0xb2f: 0x2e20,\n\t0xb30: 0x2e28, 0xb31: 0x2e30, 0xb32: 0x2e38, 0xb33: 0x2e40, 0xb34: 0x2e48, 0xb35: 0x2e50,\n\t0xb36: 0x2e60, 0xb37: 0x2e68, 0xb38: 0x2e70, 0xb39: 0x2e78, 0xb3a: 0x2e80, 0xb3b: 0x2e88,\n\t0xb3c: 0x2ed3, 0xb3d: 0x2e9b, 0xb3e: 0x2e58,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x06bf, 0xb41: 0x071b, 0xb42: 0x06cb, 0xb43: 0x097b, 0xb44: 0x071f, 0xb45: 0x07af,\n\t0xb46: 0x06c7, 0xb47: 0x07ab, 0xb48: 0x070b, 0xb49: 0x0887, 0xb4a: 0x0d07, 0xb4b: 0x0e8f,\n\t0xb4c: 0x0dd7, 0xb4d: 0x0d1b, 0xb4e: 0x145f, 0xb4f: 0x098b, 0xb50: 0x0ccf, 0xb51: 0x0d4b,\n\t0xb52: 0x0d0b, 0xb53: 0x104b, 0xb54: 0x08fb, 0xb55: 0x0f03, 0xb56: 0x1387, 0xb57: 0x105f,\n\t0xb58: 0x0843, 0xb59: 0x108f, 0xb5a: 0x0f9b, 0xb5b: 0x0a17, 0xb5c: 0x140f, 0xb5d: 0x077f,\n\t0xb5e: 0x08ab, 0xb5f: 0x0df7, 0xb60: 0x1527, 0xb61: 0x0743, 0xb62: 0x07d3, 0xb63: 0x0d9b,\n\t0xb64: 0x06cf, 0xb65: 0x06e7, 0xb66: 0x06d3, 0xb67: 0x0adb, 0xb68: 0x08ef, 0xb69: 0x087f,\n\t0xb6a: 0x0a57, 0xb6b: 0x0a4b, 0xb6c: 0x0feb, 0xb6d: 0x073f, 0xb6e: 0x139b, 0xb6f: 0x089b,\n\t0xb70: 0x09f3, 0xb71: 0x18dc, 0xb72: 0x18df, 0xb73: 0x18e2, 0xb74: 0x18e5, 0xb75: 0x18ee,\n\t0xb76: 0x18f1, 0xb77: 0x18f4, 0xb78: 0x18f7, 0xb79: 0x18fa, 0xb7a: 0x18fd, 0xb7b: 0x1900,\n\t0xb7c: 0x1903, 0xb7d: 0x1906, 0xb7e: 0x1909, 0xb7f: 0x1912,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x1cc6, 0xb81: 0x1cd5, 0xb82: 0x1ce4, 0xb83: 0x1cf3, 0xb84: 0x1d02, 0xb85: 0x1d11,\n\t0xb86: 0x1d20, 0xb87: 0x1d2f, 0xb88: 0x1d3e, 0xb89: 0x218c, 0xb8a: 0x219e, 0xb8b: 0x21b0,\n\t0xb8c: 0x1954, 0xb8d: 0x1c04, 0xb8e: 0x19d2, 0xb8f: 0x1ba8, 0xb90: 0x04cb, 0xb91: 0x04d3,\n\t0xb92: 0x04db, 0xb93: 0x04e3, 0xb94: 0x04eb, 0xb95: 0x04ef, 0xb96: 0x04f3, 0xb97: 0x04f7,\n\t0xb98: 0x04fb, 0xb99: 0x04ff, 0xb9a: 0x0503, 0xb9b: 0x0507, 0xb9c: 0x050b, 0xb9d: 0x050f,\n\t0xb9e: 0x0513, 0xb9f: 0x0517, 0xba0: 0x051b, 0xba1: 0x0523, 0xba2: 0x0527, 0xba3: 0x052b,\n\t0xba4: 0x052f, 0xba5: 0x0533, 0xba6: 0x0537, 0xba7: 0x053b, 0xba8: 0x053f, 0xba9: 0x0543,\n\t0xbaa: 0x0547, 0xbab: 0x054b, 0xbac: 0x054f, 0xbad: 0x0553, 0xbae: 0x0557, 0xbaf: 0x055b,\n\t0xbb0: 0x055f, 0xbb1: 0x0563, 0xbb2: 0x0567, 0xbb3: 0x056f, 0xbb4: 0x0577, 0xbb5: 0x057f,\n\t0xbb6: 0x0583, 0xbb7: 0x0587, 0xbb8: 0x058b, 0xbb9: 0x058f, 0xbba: 0x0593, 0xbbb: 0x0597,\n\t0xbbc: 0x059b, 0xbbd: 0x059f, 0xbbe: 0x05a3,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x2b0c, 0xbc1: 0x29a8, 0xbc2: 0x2b1c, 0xbc3: 0x2880, 0xbc4: 0x2ee4, 0xbc5: 0x288a,\n\t0xbc6: 0x2894, 0xbc7: 0x2f28, 0xbc8: 0x29b5, 0xbc9: 0x289e, 0xbca: 0x28a8, 0xbcb: 0x28b2,\n\t0xbcc: 0x29dc, 0xbcd: 0x29e9, 0xbce: 0x29c2, 0xbcf: 0x29cf, 0xbd0: 0x2ea9, 0xbd1: 0x29f6,\n\t0xbd2: 0x2a03, 0xbd3: 0x2bbe, 0xbd4: 0x26bb, 0xbd5: 0x2bd1, 0xbd6: 0x2be4, 0xbd7: 0x2b2c,\n\t0xbd8: 0x2a10, 0xbd9: 0x2bf7, 0xbda: 0x2c0a, 0xbdb: 0x2a1d, 0xbdc: 0x28bc, 0xbdd: 0x28c6,\n\t0xbde: 0x2eb7, 0xbdf: 0x2a2a, 0xbe0: 0x2b3c, 0xbe1: 0x2ef5, 0xbe2: 0x28d0, 0xbe3: 0x28da,\n\t0xbe4: 0x2a37, 0xbe5: 0x28e4, 0xbe6: 0x28ee, 0xbe7: 0x26d0, 0xbe8: 0x26d7, 0xbe9: 0x28f8,\n\t0xbea: 0x2902, 0xbeb: 0x2c1d, 0xbec: 0x2a44, 0xbed: 0x2b4c, 0xbee: 0x2c30, 0xbef: 0x2a51,\n\t0xbf0: 0x2916, 0xbf1: 0x290c, 0xbf2: 0x2f3c, 0xbf3: 0x2a5e, 0xbf4: 0x2c43, 0xbf5: 0x2920,\n\t0xbf6: 0x2b5c, 0xbf7: 0x292a, 0xbf8: 0x2a78, 0xbf9: 0x2934, 0xbfa: 0x2a85, 0xbfb: 0x2f06,\n\t0xbfc: 0x2a6b, 0xbfd: 0x2b6c, 0xbfe: 0x2a92, 0xbff: 0x26de,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x2f17, 0xc01: 0x293e, 0xc02: 0x2948, 0xc03: 0x2a9f, 0xc04: 0x2952, 0xc05: 0x295c,\n\t0xc06: 0x2966, 0xc07: 0x2b7c, 0xc08: 0x2aac, 0xc09: 0x26e5, 0xc0a: 0x2c56, 0xc0b: 0x2e90,\n\t0xc0c: 0x2b8c, 0xc0d: 0x2ab9, 0xc0e: 0x2ec5, 0xc0f: 0x2970, 0xc10: 0x297a, 0xc11: 0x2ac6,\n\t0xc12: 0x26ec, 0xc13: 0x2ad3, 0xc14: 0x2b9c, 0xc15: 0x26f3, 0xc16: 0x2c69, 0xc17: 0x2984,\n\t0xc18: 0x1cb7, 0xc19: 0x1ccb, 0xc1a: 0x1cda, 0xc1b: 0x1ce9, 0xc1c: 0x1cf8, 0xc1d: 0x1d07,\n\t0xc1e: 0x1d16, 0xc1f: 0x1d25, 0xc20: 0x1d34, 0xc21: 0x1d43, 0xc22: 0x2192, 0xc23: 0x21a4,\n\t0xc24: 0x21b6, 0xc25: 0x21c2, 0xc26: 0x21ce, 0xc27: 0x21da, 0xc28: 0x21e6, 0xc29: 0x21f2,\n\t0xc2a: 0x21fe, 0xc2b: 0x220a, 0xc2c: 0x2246, 0xc2d: 0x2252, 0xc2e: 0x225e, 0xc2f: 0x226a,\n\t0xc30: 0x2276, 0xc31: 0x1c14, 0xc32: 0x19c6, 0xc33: 0x1936, 0xc34: 0x1be4, 0xc35: 0x1a47,\n\t0xc36: 0x1a56, 0xc37: 0x19cc, 0xc38: 0x1bfc, 0xc39: 0x1c00, 0xc3a: 0x1960, 0xc3b: 0x2701,\n\t0xc3c: 0x270f, 0xc3d: 0x26fa, 0xc3e: 0x2708, 0xc3f: 0x2ae0,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1a4a, 0xc41: 0x1a32, 0xc42: 0x1c60, 0xc43: 0x1a1a, 0xc44: 0x19f3, 0xc45: 0x1969,\n\t0xc46: 0x1978, 0xc47: 0x1948, 0xc48: 0x1bf0, 0xc49: 0x1d52, 0xc4a: 0x1a4d, 0xc4b: 0x1a35,\n\t0xc4c: 0x1c64, 0xc4d: 0x1c70, 0xc4e: 0x1a26, 0xc4f: 0x19fc, 0xc50: 0x1957, 0xc51: 0x1c1c,\n\t0xc52: 0x1bb0, 0xc53: 0x1b9c, 0xc54: 0x1bcc, 0xc55: 0x1c74, 0xc56: 0x1a29, 0xc57: 0x19c9,\n\t0xc58: 0x19ff, 0xc59: 0x19de, 0xc5a: 0x1a41, 0xc5b: 0x1c78, 0xc5c: 0x1a2c, 0xc5d: 0x19c0,\n\t0xc5e: 0x1a02, 0xc5f: 0x1c3c, 0xc60: 0x1bf4, 0xc61: 0x1a14, 0xc62: 0x1c24, 0xc63: 0x1c40,\n\t0xc64: 0x1bf8, 0xc65: 0x1a17, 0xc66: 0x1c28, 0xc67: 0x22e8, 0xc68: 0x22fc, 0xc69: 0x1996,\n\t0xc6a: 0x1c20, 0xc6b: 0x1bb4, 0xc6c: 0x1ba0, 0xc6d: 0x1c48, 0xc6e: 0x2716, 0xc6f: 0x27ad,\n\t0xc70: 0x1a59, 0xc71: 0x1a44, 0xc72: 0x1c7c, 0xc73: 0x1a2f, 0xc74: 0x1a50, 0xc75: 0x1a38,\n\t0xc76: 0x1c68, 0xc77: 0x1a1d, 0xc78: 0x19f6, 0xc79: 0x1981, 0xc7a: 0x1a53, 0xc7b: 0x1a3b,\n\t0xc7c: 0x1c6c, 0xc7d: 0x1a20, 0xc7e: 0x19f9, 0xc7f: 0x1984,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x1c2c, 0xc81: 0x1bb8, 0xc82: 0x1d4d, 0xc83: 0x1939, 0xc84: 0x19ba, 0xc85: 0x19bd,\n\t0xc86: 0x22f5, 0xc87: 0x1b94, 0xc88: 0x19c3, 0xc89: 0x194b, 0xc8a: 0x19e1, 0xc8b: 0x194e,\n\t0xc8c: 0x19ea, 0xc8d: 0x196c, 0xc8e: 0x196f, 0xc8f: 0x1a05, 0xc90: 0x1a0b, 0xc91: 0x1a0e,\n\t0xc92: 0x1c30, 0xc93: 0x1a11, 0xc94: 0x1a23, 0xc95: 0x1c38, 0xc96: 0x1c44, 0xc97: 0x1990,\n\t0xc98: 0x1d57, 0xc99: 0x1bbc, 0xc9a: 0x1993, 0xc9b: 0x1a5c, 0xc9c: 0x19a5, 0xc9d: 0x19b4,\n\t0xc9e: 0x22e2, 0xc9f: 0x22dc, 0xca0: 0x1cc1, 0xca1: 0x1cd0, 0xca2: 0x1cdf, 0xca3: 0x1cee,\n\t0xca4: 0x1cfd, 0xca5: 0x1d0c, 0xca6: 0x1d1b, 0xca7: 0x1d2a, 0xca8: 0x1d39, 0xca9: 0x2186,\n\t0xcaa: 0x2198, 0xcab: 0x21aa, 0xcac: 0x21bc, 0xcad: 0x21c8, 0xcae: 0x21d4, 0xcaf: 0x21e0,\n\t0xcb0: 0x21ec, 0xcb1: 0x21f8, 0xcb2: 0x2204, 0xcb3: 0x2240, 0xcb4: 0x224c, 0xcb5: 0x2258,\n\t0xcb6: 0x2264, 0xcb7: 0x2270, 0xcb8: 0x227c, 0xcb9: 0x2282, 0xcba: 0x2288, 0xcbb: 0x228e,\n\t0xcbc: 0x2294, 0xcbd: 0x22a6, 0xcbe: 0x22ac, 0xcbf: 0x1c10,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x1377, 0xcc1: 0x0cfb, 0xcc2: 0x13d3, 0xcc3: 0x139f, 0xcc4: 0x0e57, 0xcc5: 0x06eb,\n\t0xcc6: 0x08df, 0xcc7: 0x162b, 0xcc8: 0x162b, 0xcc9: 0x0a0b, 0xcca: 0x145f, 0xccb: 0x0943,\n\t0xccc: 0x0a07, 0xccd: 0x0bef, 0xcce: 0x0fcf, 0xccf: 0x115f, 0xcd0: 0x1297, 0xcd1: 0x12d3,\n\t0xcd2: 0x1307, 0xcd3: 0x141b, 0xcd4: 0x0d73, 0xcd5: 0x0dff, 0xcd6: 0x0eab, 0xcd7: 0x0f43,\n\t0xcd8: 0x125f, 0xcd9: 0x1447, 0xcda: 0x1573, 0xcdb: 0x070f, 0xcdc: 0x08b3, 0xcdd: 0x0d87,\n\t0xcde: 0x0ecf, 0xcdf: 0x1293, 0xce0: 0x15c3, 0xce1: 0x0ab3, 0xce2: 0x0e77, 0xce3: 0x1283,\n\t0xce4: 0x1317, 0xce5: 0x0c23, 0xce6: 0x11bb, 0xce7: 0x12df, 0xce8: 0x0b1f, 0xce9: 0x0d0f,\n\t0xcea: 0x0e17, 0xceb: 0x0f1b, 0xcec: 0x1427, 0xced: 0x074f, 0xcee: 0x07e7, 0xcef: 0x0853,\n\t0xcf0: 0x0c8b, 0xcf1: 0x0d7f, 0xcf2: 0x0ecb, 0xcf3: 0x0fef, 0xcf4: 0x1177, 0xcf5: 0x128b,\n\t0xcf6: 0x12a3, 0xcf7: 0x13c7, 0xcf8: 0x14ef, 0xcf9: 0x15a3, 0xcfa: 0x15bf, 0xcfb: 0x102b,\n\t0xcfc: 0x106b, 0xcfd: 0x1123, 0xcfe: 0x1243, 0xcff: 0x147b,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x15cb, 0xd01: 0x134b, 0xd02: 0x09c7, 0xd03: 0x0b3b, 0xd04: 0x10db, 0xd05: 0x119b,\n\t0xd06: 0x0eff, 0xd07: 0x1033, 0xd08: 0x1397, 0xd09: 0x14e7, 0xd0a: 0x09c3, 0xd0b: 0x0a8f,\n\t0xd0c: 0x0d77, 0xd0d: 0x0e2b, 0xd0e: 0x0e5f, 0xd0f: 0x1113, 0xd10: 0x113b, 0xd11: 0x14a7,\n\t0xd12: 0x084f, 0xd13: 0x11a7, 0xd14: 0x07f3, 0xd15: 0x07ef, 0xd16: 0x1097, 0xd17: 0x1127,\n\t0xd18: 0x125b, 0xd19: 0x14af, 0xd1a: 0x1367, 0xd1b: 0x0c27, 0xd1c: 0x0d73, 0xd1d: 0x1357,\n\t0xd1e: 0x06f7, 0xd1f: 0x0a63, 0xd20: 0x0b93, 0xd21: 0x0f2f, 0xd22: 0x0faf, 0xd23: 0x0873,\n\t0xd24: 0x103b, 0xd25: 0x075f, 0xd26: 0x0b77, 0xd27: 0x06d7, 0xd28: 0x0deb, 0xd29: 0x0ca3,\n\t0xd2a: 0x110f, 0xd2b: 0x08c7, 0xd2c: 0x09b3, 0xd2d: 0x0ffb, 0xd2e: 0x1263, 0xd2f: 0x133b,\n\t0xd30: 0x0db7, 0xd31: 0x13f7, 0xd32: 0x0de3, 0xd33: 0x0c37, 0xd34: 0x121b, 0xd35: 0x0c57,\n\t0xd36: 0x0fab, 0xd37: 0x072b, 0xd38: 0x07a7, 0xd39: 0x07eb, 0xd3a: 0x0d53, 0xd3b: 0x10fb,\n\t0xd3c: 0x11f3, 0xd3d: 0x1347, 0xd3e: 0x145b, 0xd3f: 0x085b,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x090f, 0xd41: 0x0a17, 0xd42: 0x0b2f, 0xd43: 0x0cbf, 0xd44: 0x0e7b, 0xd45: 0x103f,\n\t0xd46: 0x1497, 0xd47: 0x157b, 0xd48: 0x15cf, 0xd49: 0x15e7, 0xd4a: 0x0837, 0xd4b: 0x0cf3,\n\t0xd4c: 0x0da3, 0xd4d: 0x13eb, 0xd4e: 0x0afb, 0xd4f: 0x0bd7, 0xd50: 0x0bf3, 0xd51: 0x0c83,\n\t0xd52: 0x0e6b, 0xd53: 0x0eb7, 0xd54: 0x0f67, 0xd55: 0x108b, 0xd56: 0x112f, 0xd57: 0x1193,\n\t0xd58: 0x13db, 0xd59: 0x126b, 0xd5a: 0x1403, 0xd5b: 0x147f, 0xd5c: 0x080f, 0xd5d: 0x083b,\n\t0xd5e: 0x0923, 0xd5f: 0x0ea7, 0xd60: 0x12f3, 0xd61: 0x133b, 0xd62: 0x0b1b, 0xd63: 0x0b8b,\n\t0xd64: 0x0c4f, 0xd65: 0x0daf, 0xd66: 0x10d7, 0xd67: 0x0f23, 0xd68: 0x073b, 0xd69: 0x097f,\n\t0xd6a: 0x0a63, 0xd6b: 0x0ac7, 0xd6c: 0x0b97, 0xd6d: 0x0f3f, 0xd6e: 0x0f5b, 0xd6f: 0x116b,\n\t0xd70: 0x118b, 0xd71: 0x1463, 0xd72: 0x14e3, 0xd73: 0x14f3, 0xd74: 0x152f, 0xd75: 0x0753,\n\t0xd76: 0x107f, 0xd77: 0x144f, 0xd78: 0x14cb, 0xd79: 0x0baf, 0xd7a: 0x0717, 0xd7b: 0x0777,\n\t0xd7c: 0x0a67, 0xd7d: 0x0a87, 0xd7e: 0x0caf, 0xd7f: 0x0d73,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0ec3, 0xd81: 0x0fcb, 0xd82: 0x1277, 0xd83: 0x1417, 0xd84: 0x1623, 0xd85: 0x0ce3,\n\t0xd86: 0x14a3, 0xd87: 0x0833, 0xd88: 0x0d2f, 0xd89: 0x0d3b, 0xd8a: 0x0e0f, 0xd8b: 0x0e47,\n\t0xd8c: 0x0f4b, 0xd8d: 0x0fa7, 0xd8e: 0x1027, 0xd8f: 0x110b, 0xd90: 0x153b, 0xd91: 0x07af,\n\t0xd92: 0x0c03, 0xd93: 0x14b3, 0xd94: 0x0767, 0xd95: 0x0aab, 0xd96: 0x0e2f, 0xd97: 0x13df,\n\t0xd98: 0x0b67, 0xd99: 0x0bb7, 0xd9a: 0x0d43, 0xd9b: 0x0f2f, 0xd9c: 0x14bb, 0xd9d: 0x0817,\n\t0xd9e: 0x08ff, 0xd9f: 0x0a97, 0xda0: 0x0cd3, 0xda1: 0x0d1f, 0xda2: 0x0d5f, 0xda3: 0x0df3,\n\t0xda4: 0x0f47, 0xda5: 0x0fbb, 0xda6: 0x1157, 0xda7: 0x12f7, 0xda8: 0x1303, 0xda9: 0x1457,\n\t0xdaa: 0x14d7, 0xdab: 0x0883, 0xdac: 0x0e4b, 0xdad: 0x0903, 0xdae: 0x0ec7, 0xdaf: 0x0f6b,\n\t0xdb0: 0x1287, 0xdb1: 0x14bf, 0xdb2: 0x15ab, 0xdb3: 0x15d3, 0xdb4: 0x0d37, 0xdb5: 0x0e27,\n\t0xdb6: 0x11c3, 0xdb7: 0x10b7, 0xdb8: 0x10c3, 0xdb9: 0x10e7, 0xdba: 0x0f17, 0xdbb: 0x0e9f,\n\t0xdbc: 0x1363, 0xdbd: 0x0733, 0xdbe: 0x122b, 0xdbf: 0x081b,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x080b, 0xdc1: 0x0b0b, 0xdc2: 0x0c2b, 0xdc3: 0x10f3, 0xdc4: 0x0a53, 0xdc5: 0x0e03,\n\t0xdc6: 0x0cef, 0xdc7: 0x13e7, 0xdc8: 0x12e7, 0xdc9: 0x14ab, 0xdca: 0x1323, 0xdcb: 0x0b27,\n\t0xdcc: 0x0787, 0xdcd: 0x095b, 0xdd0: 0x09af,\n\t0xdd2: 0x0cdf, 0xdd5: 0x07f7, 0xdd6: 0x0f1f, 0xdd7: 0x0fe3,\n\t0xdd8: 0x1047, 0xdd9: 0x1063, 0xdda: 0x1067, 0xddb: 0x107b, 0xddc: 0x14fb, 0xddd: 0x10eb,\n\t0xdde: 0x116f, 0xde0: 0x128f, 0xde2: 0x1353,\n\t0xde5: 0x1407, 0xde6: 0x1433,\n\t0xdea: 0x154f, 0xdeb: 0x1553, 0xdec: 0x1557, 0xded: 0x15bb, 0xdee: 0x142b, 0xdef: 0x14c7,\n\t0xdf0: 0x0757, 0xdf1: 0x077b, 0xdf2: 0x078f, 0xdf3: 0x084b, 0xdf4: 0x0857, 0xdf5: 0x0897,\n\t0xdf6: 0x094b, 0xdf7: 0x0967, 0xdf8: 0x096f, 0xdf9: 0x09ab, 0xdfa: 0x09b7, 0xdfb: 0x0a93,\n\t0xdfc: 0x0a9b, 0xdfd: 0x0ba3, 0xdfe: 0x0bcb, 0xdff: 0x0bd3,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x0beb, 0xe01: 0x0c97, 0xe02: 0x0cc7, 0xe03: 0x0ce7, 0xe04: 0x0d57, 0xe05: 0x0e1b,\n\t0xe06: 0x0e37, 0xe07: 0x0e67, 0xe08: 0x0ebb, 0xe09: 0x0edb, 0xe0a: 0x0f4f, 0xe0b: 0x102f,\n\t0xe0c: 0x104b, 0xe0d: 0x1053, 0xe0e: 0x104f, 0xe0f: 0x1057, 0xe10: 0x105b, 0xe11: 0x105f,\n\t0xe12: 0x1073, 0xe13: 0x1077, 0xe14: 0x109b, 0xe15: 0x10af, 0xe16: 0x10cb, 0xe17: 0x112f,\n\t0xe18: 0x1137, 0xe19: 0x113f, 0xe1a: 0x1153, 0xe1b: 0x117b, 0xe1c: 0x11cb, 0xe1d: 0x11ff,\n\t0xe1e: 0x11ff, 0xe1f: 0x1267, 0xe20: 0x130f, 0xe21: 0x1327, 0xe22: 0x135b, 0xe23: 0x135f,\n\t0xe24: 0x13a3, 0xe25: 0x13a7, 0xe26: 0x13ff, 0xe27: 0x1407, 0xe28: 0x14db, 0xe29: 0x151f,\n\t0xe2a: 0x1537, 0xe2b: 0x0b9b, 0xe2c: 0x171e, 0xe2d: 0x11e3,\n\t0xe30: 0x06df, 0xe31: 0x07e3, 0xe32: 0x07a3, 0xe33: 0x074b, 0xe34: 0x078b, 0xe35: 0x07b7,\n\t0xe36: 0x0847, 0xe37: 0x0863, 0xe38: 0x094b, 0xe39: 0x0937, 0xe3a: 0x0947, 0xe3b: 0x0963,\n\t0xe3c: 0x09af, 0xe3d: 0x09bf, 0xe3e: 0x0a03, 0xe3f: 0x0a0f,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x0a2b, 0xe41: 0x0a3b, 0xe42: 0x0b23, 0xe43: 0x0b2b, 0xe44: 0x0b5b, 0xe45: 0x0b7b,\n\t0xe46: 0x0bab, 0xe47: 0x0bc3, 0xe48: 0x0bb3, 0xe49: 0x0bd3, 0xe4a: 0x0bc7, 0xe4b: 0x0beb,\n\t0xe4c: 0x0c07, 0xe4d: 0x0c5f, 0xe4e: 0x0c6b, 0xe4f: 0x0c73, 0xe50: 0x0c9b, 0xe51: 0x0cdf,\n\t0xe52: 0x0d0f, 0xe53: 0x0d13, 0xe54: 0x0d27, 0xe55: 0x0da7, 0xe56: 0x0db7, 0xe57: 0x0e0f,\n\t0xe58: 0x0e5b, 0xe59: 0x0e53, 0xe5a: 0x0e67, 0xe5b: 0x0e83, 0xe5c: 0x0ebb, 0xe5d: 0x1013,\n\t0xe5e: 0x0edf, 0xe5f: 0x0f13, 0xe60: 0x0f1f, 0xe61: 0x0f5f, 0xe62: 0x0f7b, 0xe63: 0x0f9f,\n\t0xe64: 0x0fc3, 0xe65: 0x0fc7, 0xe66: 0x0fe3, 0xe67: 0x0fe7, 0xe68: 0x0ff7, 0xe69: 0x100b,\n\t0xe6a: 0x1007, 0xe6b: 0x1037, 0xe6c: 0x10b3, 0xe6d: 0x10cb, 0xe6e: 0x10e3, 0xe6f: 0x111b,\n\t0xe70: 0x112f, 0xe71: 0x114b, 0xe72: 0x117b, 0xe73: 0x122f, 0xe74: 0x1257, 0xe75: 0x12cb,\n\t0xe76: 0x1313, 0xe77: 0x131f, 0xe78: 0x1327, 0xe79: 0x133f, 0xe7a: 0x1353, 0xe7b: 0x1343,\n\t0xe7c: 0x135b, 0xe7d: 0x1357, 0xe7e: 0x134f, 0xe7f: 0x135f,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x136b, 0xe81: 0x13a7, 0xe82: 0x13e3, 0xe83: 0x1413, 0xe84: 0x144b, 0xe85: 0x146b,\n\t0xe86: 0x14b7, 0xe87: 0x14db, 0xe88: 0x14fb, 0xe89: 0x150f, 0xe8a: 0x151f, 0xe8b: 0x152b,\n\t0xe8c: 0x1537, 0xe8d: 0x158b, 0xe8e: 0x162b, 0xe8f: 0x16b5, 0xe90: 0x16b0, 0xe91: 0x16e2,\n\t0xe92: 0x0607, 0xe93: 0x062f, 0xe94: 0x0633, 0xe95: 0x1764, 0xe96: 0x1791, 0xe97: 0x1809,\n\t0xe98: 0x1617, 0xe99: 0x1627,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x19d5, 0xec1: 0x19d8, 0xec2: 0x19db, 0xec3: 0x1c08, 0xec4: 0x1c0c, 0xec5: 0x1a5f,\n\t0xec6: 0x1a5f,\n\t0xed3: 0x1d75, 0xed4: 0x1d66, 0xed5: 0x1d6b, 0xed6: 0x1d7a, 0xed7: 0x1d70,\n\t0xedd: 0x4390,\n\t0xede: 0x8115, 0xedf: 0x4402, 0xee0: 0x022d, 0xee1: 0x0215, 0xee2: 0x021e, 0xee3: 0x0221,\n\t0xee4: 0x0224, 0xee5: 0x0227, 0xee6: 0x022a, 0xee7: 0x0230, 0xee8: 0x0233, 0xee9: 0x0017,\n\t0xeea: 0x43f0, 0xeeb: 0x43f6, 0xeec: 0x44f4, 0xeed: 0x44fc, 0xeee: 0x4348, 0xeef: 0x434e,\n\t0xef0: 0x4354, 0xef1: 0x435a, 0xef2: 0x4366, 0xef3: 0x436c, 0xef4: 0x4372, 0xef5: 0x437e,\n\t0xef6: 0x4384, 0xef8: 0x438a, 0xef9: 0x4396, 0xefa: 0x439c, 0xefb: 0x43a2,\n\t0xefc: 0x43ae, 0xefe: 0x43b4,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x43ba, 0xf01: 0x43c0, 0xf03: 0x43c6, 0xf04: 0x43cc,\n\t0xf06: 0x43d8, 0xf07: 0x43de, 0xf08: 0x43e4, 0xf09: 0x43ea, 0xf0a: 0x43fc, 0xf0b: 0x4378,\n\t0xf0c: 0x4360, 0xf0d: 0x43a8, 0xf0e: 0x43d2, 0xf0f: 0x1d7f, 0xf10: 0x0299, 0xf11: 0x0299,\n\t0xf12: 0x02a2, 0xf13: 0x02a2, 0xf14: 0x02a2, 0xf15: 0x02a2, 0xf16: 0x02a5, 0xf17: 0x02a5,\n\t0xf18: 0x02a5, 0xf19: 0x02a5, 0xf1a: 0x02ab, 0xf1b: 0x02ab, 0xf1c: 0x02ab, 0xf1d: 0x02ab,\n\t0xf1e: 0x029f, 0xf1f: 0x029f, 0xf20: 0x029f, 0xf21: 0x029f, 0xf22: 0x02a8, 0xf23: 0x02a8,\n\t0xf24: 0x02a8, 0xf25: 0x02a8, 0xf26: 0x029c, 0xf27: 0x029c, 0xf28: 0x029c, 0xf29: 0x029c,\n\t0xf2a: 0x02cf, 0xf2b: 0x02cf, 0xf2c: 0x02cf, 0xf2d: 0x02cf, 0xf2e: 0x02d2, 0xf2f: 0x02d2,\n\t0xf30: 0x02d2, 0xf31: 0x02d2, 0xf32: 0x02b1, 0xf33: 0x02b1, 0xf34: 0x02b1, 0xf35: 0x02b1,\n\t0xf36: 0x02ae, 0xf37: 0x02ae, 0xf38: 0x02ae, 0xf39: 0x02ae, 0xf3a: 0x02b4, 0xf3b: 0x02b4,\n\t0xf3c: 0x02b4, 0xf3d: 0x02b4, 0xf3e: 0x02b7, 0xf3f: 0x02b7,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x02b7, 0xf41: 0x02b7, 0xf42: 0x02c0, 0xf43: 0x02c0, 0xf44: 0x02bd, 0xf45: 0x02bd,\n\t0xf46: 0x02c3, 0xf47: 0x02c3, 0xf48: 0x02ba, 0xf49: 0x02ba, 0xf4a: 0x02c9, 0xf4b: 0x02c9,\n\t0xf4c: 0x02c6, 0xf4d: 0x02c6, 0xf4e: 0x02d5, 0xf4f: 0x02d5, 0xf50: 0x02d5, 0xf51: 0x02d5,\n\t0xf52: 0x02db, 0xf53: 0x02db, 0xf54: 0x02db, 0xf55: 0x02db, 0xf56: 0x02e1, 0xf57: 0x02e1,\n\t0xf58: 0x02e1, 0xf59: 0x02e1, 0xf5a: 0x02de, 0xf5b: 0x02de, 0xf5c: 0x02de, 0xf5d: 0x02de,\n\t0xf5e: 0x02e4, 0xf5f: 0x02e4, 0xf60: 0x02e7, 0xf61: 0x02e7, 0xf62: 0x02e7, 0xf63: 0x02e7,\n\t0xf64: 0x446e, 0xf65: 0x446e, 0xf66: 0x02ed, 0xf67: 0x02ed, 0xf68: 0x02ed, 0xf69: 0x02ed,\n\t0xf6a: 0x02ea, 0xf6b: 0x02ea, 0xf6c: 0x02ea, 0xf6d: 0x02ea, 0xf6e: 0x0308, 0xf6f: 0x0308,\n\t0xf70: 0x4468, 0xf71: 0x4468,\n\t// Block 0x3e, offset 0xf80\n\t0xf93: 0x02d8, 0xf94: 0x02d8, 0xf95: 0x02d8, 0xf96: 0x02d8, 0xf97: 0x02f6,\n\t0xf98: 0x02f6, 0xf99: 0x02f3, 0xf9a: 0x02f3, 0xf9b: 0x02f9, 0xf9c: 0x02f9, 0xf9d: 0x204f,\n\t0xf9e: 0x02ff, 0xf9f: 0x02ff, 0xfa0: 0x02f0, 0xfa1: 0x02f0, 0xfa2: 0x02fc, 0xfa3: 0x02fc,\n\t0xfa4: 0x0305, 0xfa5: 0x0305, 0xfa6: 0x0305, 0xfa7: 0x0305, 0xfa8: 0x028d, 0xfa9: 0x028d,\n\t0xfaa: 0x25aa, 0xfab: 0x25aa, 0xfac: 0x261a, 0xfad: 0x261a, 0xfae: 0x25e9, 0xfaf: 0x25e9,\n\t0xfb0: 0x2605, 0xfb1: 0x2605, 0xfb2: 0x25fe, 0xfb3: 0x25fe, 0xfb4: 0x260c, 0xfb5: 0x260c,\n\t0xfb6: 0x2613, 0xfb7: 0x2613, 0xfb8: 0x2613, 0xfb9: 0x25f0, 0xfba: 0x25f0, 0xfbb: 0x25f0,\n\t0xfbc: 0x0302, 0xfbd: 0x0302, 0xfbe: 0x0302, 0xfbf: 0x0302,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x25b1, 0xfc1: 0x25b8, 0xfc2: 0x25d4, 0xfc3: 0x25f0, 0xfc4: 0x25f7, 0xfc5: 0x1d89,\n\t0xfc6: 0x1d8e, 0xfc7: 0x1d93, 0xfc8: 0x1da2, 0xfc9: 0x1db1, 0xfca: 0x1db6, 0xfcb: 0x1dbb,\n\t0xfcc: 0x1dc0, 0xfcd: 0x1dc5, 0xfce: 0x1dd4, 0xfcf: 0x1de3, 0xfd0: 0x1de8, 0xfd1: 0x1ded,\n\t0xfd2: 0x1dfc, 0xfd3: 0x1e0b, 0xfd4: 0x1e10, 0xfd5: 0x1e15, 0xfd6: 0x1e1a, 0xfd7: 0x1e29,\n\t0xfd8: 0x1e2e, 0xfd9: 0x1e3d, 0xfda: 0x1e42, 0xfdb: 0x1e47, 0xfdc: 0x1e56, 0xfdd: 0x1e5b,\n\t0xfde: 0x1e60, 0xfdf: 0x1e6a, 0xfe0: 0x1ea6, 0xfe1: 0x1eb5, 0xfe2: 0x1ec4, 0xfe3: 0x1ec9,\n\t0xfe4: 0x1ece, 0xfe5: 0x1ed8, 0xfe6: 0x1ee7, 0xfe7: 0x1eec, 0xfe8: 0x1efb, 0xfe9: 0x1f00,\n\t0xfea: 0x1f05, 0xfeb: 0x1f14, 0xfec: 0x1f19, 0xfed: 0x1f28, 0xfee: 0x1f2d, 0xfef: 0x1f32,\n\t0xff0: 0x1f37, 0xff1: 0x1f3c, 0xff2: 0x1f41, 0xff3: 0x1f46, 0xff4: 0x1f4b, 0xff5: 0x1f50,\n\t0xff6: 0x1f55, 0xff7: 0x1f5a, 0xff8: 0x1f5f, 0xff9: 0x1f64, 0xffa: 0x1f69, 0xffb: 0x1f6e,\n\t0xffc: 0x1f73, 0xffd: 0x1f78, 0xffe: 0x1f7d, 0xfff: 0x1f87,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x1f8c, 0x1001: 0x1f91, 0x1002: 0x1f96, 0x1003: 0x1fa0, 0x1004: 0x1fa5, 0x1005: 0x1faf,\n\t0x1006: 0x1fb4, 0x1007: 0x1fb9, 0x1008: 0x1fbe, 0x1009: 0x1fc3, 0x100a: 0x1fc8, 0x100b: 0x1fcd,\n\t0x100c: 0x1fd2, 0x100d: 0x1fd7, 0x100e: 0x1fe6, 0x100f: 0x1ff5, 0x1010: 0x1ffa, 0x1011: 0x1fff,\n\t0x1012: 0x2004, 0x1013: 0x2009, 0x1014: 0x200e, 0x1015: 0x2018, 0x1016: 0x201d, 0x1017: 0x2022,\n\t0x1018: 0x2031, 0x1019: 0x2040, 0x101a: 0x2045, 0x101b: 0x4420, 0x101c: 0x4426, 0x101d: 0x445c,\n\t0x101e: 0x44b3, 0x101f: 0x44ba, 0x1020: 0x44c1, 0x1021: 0x44c8, 0x1022: 0x44cf, 0x1023: 0x44d6,\n\t0x1024: 0x25c6, 0x1025: 0x25cd, 0x1026: 0x25d4, 0x1027: 0x25db, 0x1028: 0x25f0, 0x1029: 0x25f7,\n\t0x102a: 0x1d98, 0x102b: 0x1d9d, 0x102c: 0x1da2, 0x102d: 0x1da7, 0x102e: 0x1db1, 0x102f: 0x1db6,\n\t0x1030: 0x1dca, 0x1031: 0x1dcf, 0x1032: 0x1dd4, 0x1033: 0x1dd9, 0x1034: 0x1de3, 0x1035: 0x1de8,\n\t0x1036: 0x1df2, 0x1037: 0x1df7, 0x1038: 0x1dfc, 0x1039: 0x1e01, 0x103a: 0x1e0b, 0x103b: 0x1e10,\n\t0x103c: 0x1f3c, 0x103d: 0x1f41, 0x103e: 0x1f50, 0x103f: 0x1f55,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x1f5a, 0x1041: 0x1f6e, 0x1042: 0x1f73, 0x1043: 0x1f78, 0x1044: 0x1f7d, 0x1045: 0x1f96,\n\t0x1046: 0x1fa0, 0x1047: 0x1fa5, 0x1048: 0x1faa, 0x1049: 0x1fbe, 0x104a: 0x1fdc, 0x104b: 0x1fe1,\n\t0x104c: 0x1fe6, 0x104d: 0x1feb, 0x104e: 0x1ff5, 0x104f: 0x1ffa, 0x1050: 0x445c, 0x1051: 0x2027,\n\t0x1052: 0x202c, 0x1053: 0x2031, 0x1054: 0x2036, 0x1055: 0x2040, 0x1056: 0x2045, 0x1057: 0x25b1,\n\t0x1058: 0x25b8, 0x1059: 0x25bf, 0x105a: 0x25d4, 0x105b: 0x25e2, 0x105c: 0x1d89, 0x105d: 0x1d8e,\n\t0x105e: 0x1d93, 0x105f: 0x1da2, 0x1060: 0x1dac, 0x1061: 0x1dbb, 0x1062: 0x1dc0, 0x1063: 0x1dc5,\n\t0x1064: 0x1dd4, 0x1065: 0x1dde, 0x1066: 0x1dfc, 0x1067: 0x1e15, 0x1068: 0x1e1a, 0x1069: 0x1e29,\n\t0x106a: 0x1e2e, 0x106b: 0x1e3d, 0x106c: 0x1e47, 0x106d: 0x1e56, 0x106e: 0x1e5b, 0x106f: 0x1e60,\n\t0x1070: 0x1e6a, 0x1071: 0x1ea6, 0x1072: 0x1eab, 0x1073: 0x1eb5, 0x1074: 0x1ec4, 0x1075: 0x1ec9,\n\t0x1076: 0x1ece, 0x1077: 0x1ed8, 0x1078: 0x1ee7, 0x1079: 0x1efb, 0x107a: 0x1f00, 0x107b: 0x1f05,\n\t0x107c: 0x1f14, 0x107d: 0x1f19, 0x107e: 0x1f28, 0x107f: 0x1f2d,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x1f32, 0x1081: 0x1f37, 0x1082: 0x1f46, 0x1083: 0x1f4b, 0x1084: 0x1f5f, 0x1085: 0x1f64,\n\t0x1086: 0x1f69, 0x1087: 0x1f6e, 0x1088: 0x1f73, 0x1089: 0x1f87, 0x108a: 0x1f8c, 0x108b: 0x1f91,\n\t0x108c: 0x1f96, 0x108d: 0x1f9b, 0x108e: 0x1faf, 0x108f: 0x1fb4, 0x1090: 0x1fb9, 0x1091: 0x1fbe,\n\t0x1092: 0x1fcd, 0x1093: 0x1fd2, 0x1094: 0x1fd7, 0x1095: 0x1fe6, 0x1096: 0x1ff0, 0x1097: 0x1fff,\n\t0x1098: 0x2004, 0x1099: 0x4450, 0x109a: 0x2018, 0x109b: 0x201d, 0x109c: 0x2022, 0x109d: 0x2031,\n\t0x109e: 0x203b, 0x109f: 0x25d4, 0x10a0: 0x25e2, 0x10a1: 0x1da2, 0x10a2: 0x1dac, 0x10a3: 0x1dd4,\n\t0x10a4: 0x1dde, 0x10a5: 0x1dfc, 0x10a6: 0x1e06, 0x10a7: 0x1e6a, 0x10a8: 0x1e6f, 0x10a9: 0x1e92,\n\t0x10aa: 0x1e97, 0x10ab: 0x1f6e, 0x10ac: 0x1f73, 0x10ad: 0x1f96, 0x10ae: 0x1fe6, 0x10af: 0x1ff0,\n\t0x10b0: 0x2031, 0x10b1: 0x203b, 0x10b2: 0x4504, 0x10b3: 0x450c, 0x10b4: 0x4514, 0x10b5: 0x1ef1,\n\t0x10b6: 0x1ef6, 0x10b7: 0x1f0a, 0x10b8: 0x1f0f, 0x10b9: 0x1f1e, 0x10ba: 0x1f23, 0x10bb: 0x1e74,\n\t0x10bc: 0x1e79, 0x10bd: 0x1e9c, 0x10be: 0x1ea1, 0x10bf: 0x1e33,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x1e38, 0x10c1: 0x1e1f, 0x10c2: 0x1e24, 0x10c3: 0x1e4c, 0x10c4: 0x1e51, 0x10c5: 0x1eba,\n\t0x10c6: 0x1ebf, 0x10c7: 0x1edd, 0x10c8: 0x1ee2, 0x10c9: 0x1e7e, 0x10ca: 0x1e83, 0x10cb: 0x1e88,\n\t0x10cc: 0x1e92, 0x10cd: 0x1e8d, 0x10ce: 0x1e65, 0x10cf: 0x1eb0, 0x10d0: 0x1ed3, 0x10d1: 0x1ef1,\n\t0x10d2: 0x1ef6, 0x10d3: 0x1f0a, 0x10d4: 0x1f0f, 0x10d5: 0x1f1e, 0x10d6: 0x1f23, 0x10d7: 0x1e74,\n\t0x10d8: 0x1e79, 0x10d9: 0x1e9c, 0x10da: 0x1ea1, 0x10db: 0x1e33, 0x10dc: 0x1e38, 0x10dd: 0x1e1f,\n\t0x10de: 0x1e24, 0x10df: 0x1e4c, 0x10e0: 0x1e51, 0x10e1: 0x1eba, 0x10e2: 0x1ebf, 0x10e3: 0x1edd,\n\t0x10e4: 0x1ee2, 0x10e5: 0x1e7e, 0x10e6: 0x1e83, 0x10e7: 0x1e88, 0x10e8: 0x1e92, 0x10e9: 0x1e8d,\n\t0x10ea: 0x1e65, 0x10eb: 0x1eb0, 0x10ec: 0x1ed3, 0x10ed: 0x1e7e, 0x10ee: 0x1e83, 0x10ef: 0x1e88,\n\t0x10f0: 0x1e92, 0x10f1: 0x1e6f, 0x10f2: 0x1e97, 0x10f3: 0x1eec, 0x10f4: 0x1e56, 0x10f5: 0x1e5b,\n\t0x10f6: 0x1e60, 0x10f7: 0x1e7e, 0x10f8: 0x1e83, 0x10f9: 0x1e88, 0x10fa: 0x1eec, 0x10fb: 0x1efb,\n\t0x10fc: 0x4408, 0x10fd: 0x4408,\n\t// Block 0x44, offset 0x1100\n\t0x1110: 0x2311, 0x1111: 0x2326,\n\t0x1112: 0x2326, 0x1113: 0x232d, 0x1114: 0x2334, 0x1115: 0x2349, 0x1116: 0x2350, 0x1117: 0x2357,\n\t0x1118: 0x237a, 0x1119: 0x237a, 0x111a: 0x239d, 0x111b: 0x2396, 0x111c: 0x23b2, 0x111d: 0x23a4,\n\t0x111e: 0x23ab, 0x111f: 0x23ce, 0x1120: 0x23ce, 0x1121: 0x23c7, 0x1122: 0x23d5, 0x1123: 0x23d5,\n\t0x1124: 0x23ff, 0x1125: 0x23ff, 0x1126: 0x241b, 0x1127: 0x23e3, 0x1128: 0x23e3, 0x1129: 0x23dc,\n\t0x112a: 0x23f1, 0x112b: 0x23f1, 0x112c: 0x23f8, 0x112d: 0x23f8, 0x112e: 0x2422, 0x112f: 0x2430,\n\t0x1130: 0x2430, 0x1131: 0x2437, 0x1132: 0x2437, 0x1133: 0x243e, 0x1134: 0x2445, 0x1135: 0x244c,\n\t0x1136: 0x2453, 0x1137: 0x2453, 0x1138: 0x245a, 0x1139: 0x2468, 0x113a: 0x2476, 0x113b: 0x246f,\n\t0x113c: 0x247d, 0x113d: 0x247d, 0x113e: 0x2492, 0x113f: 0x2499,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0x24ca, 0x1141: 0x24d8, 0x1142: 0x24d1, 0x1143: 0x24b5, 0x1144: 0x24b5, 0x1145: 0x24df,\n\t0x1146: 0x24df, 0x1147: 0x24e6, 0x1148: 0x24e6, 0x1149: 0x2510, 0x114a: 0x2517, 0x114b: 0x251e,\n\t0x114c: 0x24f4, 0x114d: 0x2502, 0x114e: 0x2525, 0x114f: 0x252c,\n\t0x1152: 0x24fb, 0x1153: 0x2580, 0x1154: 0x2587, 0x1155: 0x255d, 0x1156: 0x2564, 0x1157: 0x2548,\n\t0x1158: 0x2548, 0x1159: 0x254f, 0x115a: 0x2579, 0x115b: 0x2572, 0x115c: 0x259c, 0x115d: 0x259c,\n\t0x115e: 0x230a, 0x115f: 0x231f, 0x1160: 0x2318, 0x1161: 0x2342, 0x1162: 0x233b, 0x1163: 0x2365,\n\t0x1164: 0x235e, 0x1165: 0x2388, 0x1166: 0x236c, 0x1167: 0x2381, 0x1168: 0x23b9, 0x1169: 0x2406,\n\t0x116a: 0x23ea, 0x116b: 0x2429, 0x116c: 0x24c3, 0x116d: 0x24ed, 0x116e: 0x2595, 0x116f: 0x258e,\n\t0x1170: 0x25a3, 0x1171: 0x253a, 0x1172: 0x24a0, 0x1173: 0x256b, 0x1174: 0x2492, 0x1175: 0x24ca,\n\t0x1176: 0x2461, 0x1177: 0x24ae, 0x1178: 0x2541, 0x1179: 0x2533, 0x117a: 0x24bc, 0x117b: 0x24a7,\n\t0x117c: 0x24bc, 0x117d: 0x2541, 0x117e: 0x2373, 0x117f: 0x238f,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x2509, 0x1181: 0x2484, 0x1182: 0x2303, 0x1183: 0x24a7, 0x1184: 0x244c, 0x1185: 0x241b,\n\t0x1186: 0x23c0, 0x1187: 0x2556,\n\t0x11b0: 0x2414, 0x11b1: 0x248b, 0x11b2: 0x27bf, 0x11b3: 0x27b6, 0x11b4: 0x27ec, 0x11b5: 0x27da,\n\t0x11b6: 0x27c8, 0x11b7: 0x27e3, 0x11b8: 0x27f5, 0x11b9: 0x240d, 0x11ba: 0x2c7c, 0x11bb: 0x2afc,\n\t0x11bc: 0x27d1,\n\t// Block 0x47, offset 0x11c0\n\t0x11d0: 0x0019, 0x11d1: 0x0483,\n\t0x11d2: 0x0487, 0x11d3: 0x0035, 0x11d4: 0x0037, 0x11d5: 0x0003, 0x11d6: 0x003f, 0x11d7: 0x04bf,\n\t0x11d8: 0x04c3, 0x11d9: 0x1b5c,\n\t0x11e0: 0x8132, 0x11e1: 0x8132, 0x11e2: 0x8132, 0x11e3: 0x8132,\n\t0x11e4: 0x8132, 0x11e5: 0x8132, 0x11e6: 0x8132, 0x11e7: 0x812d, 0x11e8: 0x812d, 0x11e9: 0x812d,\n\t0x11ea: 0x812d, 0x11eb: 0x812d, 0x11ec: 0x812d, 0x11ed: 0x812d, 0x11ee: 0x8132, 0x11ef: 0x8132,\n\t0x11f0: 0x1873, 0x11f1: 0x0443, 0x11f2: 0x043f, 0x11f3: 0x007f, 0x11f4: 0x007f, 0x11f5: 0x0011,\n\t0x11f6: 0x0013, 0x11f7: 0x00b7, 0x11f8: 0x00bb, 0x11f9: 0x04b7, 0x11fa: 0x04bb, 0x11fb: 0x04ab,\n\t0x11fc: 0x04af, 0x11fd: 0x0493, 0x11fe: 0x0497, 0x11ff: 0x048b,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x048f, 0x1201: 0x049b, 0x1202: 0x049f, 0x1203: 0x04a3, 0x1204: 0x04a7,\n\t0x1207: 0x0077, 0x1208: 0x007b, 0x1209: 0x4269, 0x120a: 0x4269, 0x120b: 0x4269,\n\t0x120c: 0x4269, 0x120d: 0x007f, 0x120e: 0x007f, 0x120f: 0x007f, 0x1210: 0x0019, 0x1211: 0x0483,\n\t0x1212: 0x001d, 0x1214: 0x0037, 0x1215: 0x0035, 0x1216: 0x003f, 0x1217: 0x0003,\n\t0x1218: 0x0443, 0x1219: 0x0011, 0x121a: 0x0013, 0x121b: 0x00b7, 0x121c: 0x00bb, 0x121d: 0x04b7,\n\t0x121e: 0x04bb, 0x121f: 0x0007, 0x1220: 0x000d, 0x1221: 0x0015, 0x1222: 0x0017, 0x1223: 0x001b,\n\t0x1224: 0x0039, 0x1225: 0x003d, 0x1226: 0x003b, 0x1228: 0x0079, 0x1229: 0x0009,\n\t0x122a: 0x000b, 0x122b: 0x0041,\n\t0x1230: 0x42aa, 0x1231: 0x442c, 0x1232: 0x42af, 0x1234: 0x42b4,\n\t0x1236: 0x42b9, 0x1237: 0x4432, 0x1238: 0x42be, 0x1239: 0x4438, 0x123a: 0x42c3, 0x123b: 0x443e,\n\t0x123c: 0x42c8, 0x123d: 0x4444, 0x123e: 0x42cd, 0x123f: 0x444a,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x0236, 0x1241: 0x440e, 0x1242: 0x440e, 0x1243: 0x4414, 0x1244: 0x4414, 0x1245: 0x4456,\n\t0x1246: 0x4456, 0x1247: 0x441a, 0x1248: 0x441a, 0x1249: 0x4462, 0x124a: 0x4462, 0x124b: 0x4462,\n\t0x124c: 0x4462, 0x124d: 0x0239, 0x124e: 0x0239, 0x124f: 0x023c, 0x1250: 0x023c, 0x1251: 0x023c,\n\t0x1252: 0x023c, 0x1253: 0x023f, 0x1254: 0x023f, 0x1255: 0x0242, 0x1256: 0x0242, 0x1257: 0x0242,\n\t0x1258: 0x0242, 0x1259: 0x0245, 0x125a: 0x0245, 0x125b: 0x0245, 0x125c: 0x0245, 0x125d: 0x0248,\n\t0x125e: 0x0248, 0x125f: 0x0248, 0x1260: 0x0248, 0x1261: 0x024b, 0x1262: 0x024b, 0x1263: 0x024b,\n\t0x1264: 0x024b, 0x1265: 0x024e, 0x1266: 0x024e, 0x1267: 0x024e, 0x1268: 0x024e, 0x1269: 0x0251,\n\t0x126a: 0x0251, 0x126b: 0x0254, 0x126c: 0x0254, 0x126d: 0x0257, 0x126e: 0x0257, 0x126f: 0x025a,\n\t0x1270: 0x025a, 0x1271: 0x025d, 0x1272: 0x025d, 0x1273: 0x025d, 0x1274: 0x025d, 0x1275: 0x0260,\n\t0x1276: 0x0260, 0x1277: 0x0260, 0x1278: 0x0260, 0x1279: 0x0263, 0x127a: 0x0263, 0x127b: 0x0263,\n\t0x127c: 0x0263, 0x127d: 0x0266, 0x127e: 0x0266, 0x127f: 0x0266,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x0266, 0x1281: 0x0269, 0x1282: 0x0269, 0x1283: 0x0269, 0x1284: 0x0269, 0x1285: 0x026c,\n\t0x1286: 0x026c, 0x1287: 0x026c, 0x1288: 0x026c, 0x1289: 0x026f, 0x128a: 0x026f, 0x128b: 0x026f,\n\t0x128c: 0x026f, 0x128d: 0x0272, 0x128e: 0x0272, 0x128f: 0x0272, 0x1290: 0x0272, 0x1291: 0x0275,\n\t0x1292: 0x0275, 0x1293: 0x0275, 0x1294: 0x0275, 0x1295: 0x0278, 0x1296: 0x0278, 0x1297: 0x0278,\n\t0x1298: 0x0278, 0x1299: 0x027b, 0x129a: 0x027b, 0x129b: 0x027b, 0x129c: 0x027b, 0x129d: 0x027e,\n\t0x129e: 0x027e, 0x129f: 0x027e, 0x12a0: 0x027e, 0x12a1: 0x0281, 0x12a2: 0x0281, 0x12a3: 0x0281,\n\t0x12a4: 0x0281, 0x12a5: 0x0284, 0x12a6: 0x0284, 0x12a7: 0x0284, 0x12a8: 0x0284, 0x12a9: 0x0287,\n\t0x12aa: 0x0287, 0x12ab: 0x0287, 0x12ac: 0x0287, 0x12ad: 0x028a, 0x12ae: 0x028a, 0x12af: 0x028d,\n\t0x12b0: 0x028d, 0x12b1: 0x0290, 0x12b2: 0x0290, 0x12b3: 0x0290, 0x12b4: 0x0290, 0x12b5: 0x2e00,\n\t0x12b6: 0x2e00, 0x12b7: 0x2e08, 0x12b8: 0x2e08, 0x12b9: 0x2e10, 0x12ba: 0x2e10, 0x12bb: 0x1f82,\n\t0x12bc: 0x1f82,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x0081, 0x12c1: 0x0083, 0x12c2: 0x0085, 0x12c3: 0x0087, 0x12c4: 0x0089, 0x12c5: 0x008b,\n\t0x12c6: 0x008d, 0x12c7: 0x008f, 0x12c8: 0x0091, 0x12c9: 0x0093, 0x12ca: 0x0095, 0x12cb: 0x0097,\n\t0x12cc: 0x0099, 0x12cd: 0x009b, 0x12ce: 0x009d, 0x12cf: 0x009f, 0x12d0: 0x00a1, 0x12d1: 0x00a3,\n\t0x12d2: 0x00a5, 0x12d3: 0x00a7, 0x12d4: 0x00a9, 0x12d5: 0x00ab, 0x12d6: 0x00ad, 0x12d7: 0x00af,\n\t0x12d8: 0x00b1, 0x12d9: 0x00b3, 0x12da: 0x00b5, 0x12db: 0x00b7, 0x12dc: 0x00b9, 0x12dd: 0x00bb,\n\t0x12de: 0x00bd, 0x12df: 0x0477, 0x12e0: 0x047b, 0x12e1: 0x0487, 0x12e2: 0x049b, 0x12e3: 0x049f,\n\t0x12e4: 0x0483, 0x12e5: 0x05ab, 0x12e6: 0x05a3, 0x12e7: 0x04c7, 0x12e8: 0x04cf, 0x12e9: 0x04d7,\n\t0x12ea: 0x04df, 0x12eb: 0x04e7, 0x12ec: 0x056b, 0x12ed: 0x0573, 0x12ee: 0x057b, 0x12ef: 0x051f,\n\t0x12f0: 0x05af, 0x12f1: 0x04cb, 0x12f2: 0x04d3, 0x12f3: 0x04db, 0x12f4: 0x04e3, 0x12f5: 0x04eb,\n\t0x12f6: 0x04ef, 0x12f7: 0x04f3, 0x12f8: 0x04f7, 0x12f9: 0x04fb, 0x12fa: 0x04ff, 0x12fb: 0x0503,\n\t0x12fc: 0x0507, 0x12fd: 0x050b, 0x12fe: 0x050f, 0x12ff: 0x0513,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x0517, 0x1301: 0x051b, 0x1302: 0x0523, 0x1303: 0x0527, 0x1304: 0x052b, 0x1305: 0x052f,\n\t0x1306: 0x0533, 0x1307: 0x0537, 0x1308: 0x053b, 0x1309: 0x053f, 0x130a: 0x0543, 0x130b: 0x0547,\n\t0x130c: 0x054b, 0x130d: 0x054f, 0x130e: 0x0553, 0x130f: 0x0557, 0x1310: 0x055b, 0x1311: 0x055f,\n\t0x1312: 0x0563, 0x1313: 0x0567, 0x1314: 0x056f, 0x1315: 0x0577, 0x1316: 0x057f, 0x1317: 0x0583,\n\t0x1318: 0x0587, 0x1319: 0x058b, 0x131a: 0x058f, 0x131b: 0x0593, 0x131c: 0x0597, 0x131d: 0x05a7,\n\t0x131e: 0x4a78, 0x131f: 0x4a7e, 0x1320: 0x03c3, 0x1321: 0x0313, 0x1322: 0x0317, 0x1323: 0x4a3b,\n\t0x1324: 0x031b, 0x1325: 0x4a41, 0x1326: 0x4a47, 0x1327: 0x031f, 0x1328: 0x0323, 0x1329: 0x0327,\n\t0x132a: 0x4a4d, 0x132b: 0x4a53, 0x132c: 0x4a59, 0x132d: 0x4a5f, 0x132e: 0x4a65, 0x132f: 0x4a6b,\n\t0x1330: 0x0367, 0x1331: 0x032b, 0x1332: 0x032f, 0x1333: 0x0333, 0x1334: 0x037b, 0x1335: 0x0337,\n\t0x1336: 0x033b, 0x1337: 0x033f, 0x1338: 0x0343, 0x1339: 0x0347, 0x133a: 0x034b, 0x133b: 0x034f,\n\t0x133c: 0x0353, 0x133d: 0x0357, 0x133e: 0x035b,\n\t// Block 0x4d, offset 0x1340\n\t0x1342: 0x49bd, 0x1343: 0x49c3, 0x1344: 0x49c9, 0x1345: 0x49cf,\n\t0x1346: 0x49d5, 0x1347: 0x49db, 0x134a: 0x49e1, 0x134b: 0x49e7,\n\t0x134c: 0x49ed, 0x134d: 0x49f3, 0x134e: 0x49f9, 0x134f: 0x49ff,\n\t0x1352: 0x4a05, 0x1353: 0x4a0b, 0x1354: 0x4a11, 0x1355: 0x4a17, 0x1356: 0x4a1d, 0x1357: 0x4a23,\n\t0x135a: 0x4a29, 0x135b: 0x4a2f, 0x135c: 0x4a35,\n\t0x1360: 0x00bf, 0x1361: 0x00c2, 0x1362: 0x00cb, 0x1363: 0x4264,\n\t0x1364: 0x00c8, 0x1365: 0x00c5, 0x1366: 0x0447, 0x1368: 0x046b, 0x1369: 0x044b,\n\t0x136a: 0x044f, 0x136b: 0x0453, 0x136c: 0x0457, 0x136d: 0x046f, 0x136e: 0x0473,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0063, 0x1381: 0x0065, 0x1382: 0x0067, 0x1383: 0x0069, 0x1384: 0x006b, 0x1385: 0x006d,\n\t0x1386: 0x006f, 0x1387: 0x0071, 0x1388: 0x0073, 0x1389: 0x0075, 0x138a: 0x0083, 0x138b: 0x0085,\n\t0x138c: 0x0087, 0x138d: 0x0089, 0x138e: 0x008b, 0x138f: 0x008d, 0x1390: 0x008f, 0x1391: 0x0091,\n\t0x1392: 0x0093, 0x1393: 0x0095, 0x1394: 0x0097, 0x1395: 0x0099, 0x1396: 0x009b, 0x1397: 0x009d,\n\t0x1398: 0x009f, 0x1399: 0x00a1, 0x139a: 0x00a3, 0x139b: 0x00a5, 0x139c: 0x00a7, 0x139d: 0x00a9,\n\t0x139e: 0x00ab, 0x139f: 0x00ad, 0x13a0: 0x00af, 0x13a1: 0x00b1, 0x13a2: 0x00b3, 0x13a3: 0x00b5,\n\t0x13a4: 0x00dd, 0x13a5: 0x00f2, 0x13a8: 0x0173, 0x13a9: 0x0176,\n\t0x13aa: 0x0179, 0x13ab: 0x017c, 0x13ac: 0x017f, 0x13ad: 0x0182, 0x13ae: 0x0185, 0x13af: 0x0188,\n\t0x13b0: 0x018b, 0x13b1: 0x018e, 0x13b2: 0x0191, 0x13b3: 0x0194, 0x13b4: 0x0197, 0x13b5: 0x019a,\n\t0x13b6: 0x019d, 0x13b7: 0x01a0, 0x13b8: 0x01a3, 0x13b9: 0x0188, 0x13ba: 0x01a6, 0x13bb: 0x01a9,\n\t0x13bc: 0x01ac, 0x13bd: 0x01af, 0x13be: 0x01b2, 0x13bf: 0x01b5,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x01fd, 0x13c1: 0x0200, 0x13c2: 0x0203, 0x13c3: 0x045b, 0x13c4: 0x01c7, 0x13c5: 0x01d0,\n\t0x13c6: 0x01d6, 0x13c7: 0x01fa, 0x13c8: 0x01eb, 0x13c9: 0x01e8, 0x13ca: 0x0206, 0x13cb: 0x0209,\n\t0x13ce: 0x0021, 0x13cf: 0x0023, 0x13d0: 0x0025, 0x13d1: 0x0027,\n\t0x13d2: 0x0029, 0x13d3: 0x002b, 0x13d4: 0x002d, 0x13d5: 0x002f, 0x13d6: 0x0031, 0x13d7: 0x0033,\n\t0x13d8: 0x0021, 0x13d9: 0x0023, 0x13da: 0x0025, 0x13db: 0x0027, 0x13dc: 0x0029, 0x13dd: 0x002b,\n\t0x13de: 0x002d, 0x13df: 0x002f, 0x13e0: 0x0031, 0x13e1: 0x0033, 0x13e2: 0x0021, 0x13e3: 0x0023,\n\t0x13e4: 0x0025, 0x13e5: 0x0027, 0x13e6: 0x0029, 0x13e7: 0x002b, 0x13e8: 0x002d, 0x13e9: 0x002f,\n\t0x13ea: 0x0031, 0x13eb: 0x0033, 0x13ec: 0x0021, 0x13ed: 0x0023, 0x13ee: 0x0025, 0x13ef: 0x0027,\n\t0x13f0: 0x0029, 0x13f1: 0x002b, 0x13f2: 0x002d, 0x13f3: 0x002f, 0x13f4: 0x0031, 0x13f5: 0x0033,\n\t0x13f6: 0x0021, 0x13f7: 0x0023, 0x13f8: 0x0025, 0x13f9: 0x0027, 0x13fa: 0x0029, 0x13fb: 0x002b,\n\t0x13fc: 0x002d, 0x13fd: 0x002f, 0x13fe: 0x0031, 0x13ff: 0x0033,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x0239, 0x1401: 0x023c, 0x1402: 0x0248, 0x1403: 0x0251, 0x1405: 0x028a,\n\t0x1406: 0x025a, 0x1407: 0x024b, 0x1408: 0x0269, 0x1409: 0x0290, 0x140a: 0x027b, 0x140b: 0x027e,\n\t0x140c: 0x0281, 0x140d: 0x0284, 0x140e: 0x025d, 0x140f: 0x026f, 0x1410: 0x0275, 0x1411: 0x0263,\n\t0x1412: 0x0278, 0x1413: 0x0257, 0x1414: 0x0260, 0x1415: 0x0242, 0x1416: 0x0245, 0x1417: 0x024e,\n\t0x1418: 0x0254, 0x1419: 0x0266, 0x141a: 0x026c, 0x141b: 0x0272, 0x141c: 0x0293, 0x141d: 0x02e4,\n\t0x141e: 0x02cc, 0x141f: 0x0296, 0x1421: 0x023c, 0x1422: 0x0248,\n\t0x1424: 0x0287, 0x1427: 0x024b, 0x1429: 0x0290,\n\t0x142a: 0x027b, 0x142b: 0x027e, 0x142c: 0x0281, 0x142d: 0x0284, 0x142e: 0x025d, 0x142f: 0x026f,\n\t0x1430: 0x0275, 0x1431: 0x0263, 0x1432: 0x0278, 0x1434: 0x0260, 0x1435: 0x0242,\n\t0x1436: 0x0245, 0x1437: 0x024e, 0x1439: 0x0266, 0x143b: 0x0272,\n\t// Block 0x51, offset 0x1440\n\t0x1442: 0x0248,\n\t0x1447: 0x024b, 0x1449: 0x0290, 0x144b: 0x027e,\n\t0x144d: 0x0284, 0x144e: 0x025d, 0x144f: 0x026f, 0x1451: 0x0263,\n\t0x1452: 0x0278, 0x1454: 0x0260, 0x1457: 0x024e,\n\t0x1459: 0x0266, 0x145b: 0x0272, 0x145d: 0x02e4,\n\t0x145f: 0x0296, 0x1461: 0x023c, 0x1462: 0x0248,\n\t0x1464: 0x0287, 0x1467: 0x024b, 0x1468: 0x0269, 0x1469: 0x0290,\n\t0x146a: 0x027b, 0x146c: 0x0281, 0x146d: 0x0284, 0x146e: 0x025d, 0x146f: 0x026f,\n\t0x1470: 0x0275, 0x1471: 0x0263, 0x1472: 0x0278, 0x1474: 0x0260, 0x1475: 0x0242,\n\t0x1476: 0x0245, 0x1477: 0x024e, 0x1479: 0x0266, 0x147a: 0x026c, 0x147b: 0x0272,\n\t0x147c: 0x0293, 0x147e: 0x02cc,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x0239, 0x1481: 0x023c, 0x1482: 0x0248, 0x1483: 0x0251, 0x1484: 0x0287, 0x1485: 0x028a,\n\t0x1486: 0x025a, 0x1487: 0x024b, 0x1488: 0x0269, 0x1489: 0x0290, 0x148b: 0x027e,\n\t0x148c: 0x0281, 0x148d: 0x0284, 0x148e: 0x025d, 0x148f: 0x026f, 0x1490: 0x0275, 0x1491: 0x0263,\n\t0x1492: 0x0278, 0x1493: 0x0257, 0x1494: 0x0260, 0x1495: 0x0242, 0x1496: 0x0245, 0x1497: 0x024e,\n\t0x1498: 0x0254, 0x1499: 0x0266, 0x149a: 0x026c, 0x149b: 0x0272,\n\t0x14a1: 0x023c, 0x14a2: 0x0248, 0x14a3: 0x0251,\n\t0x14a5: 0x028a, 0x14a6: 0x025a, 0x14a7: 0x024b, 0x14a8: 0x0269, 0x14a9: 0x0290,\n\t0x14ab: 0x027e, 0x14ac: 0x0281, 0x14ad: 0x0284, 0x14ae: 0x025d, 0x14af: 0x026f,\n\t0x14b0: 0x0275, 0x14b1: 0x0263, 0x14b2: 0x0278, 0x14b3: 0x0257, 0x14b4: 0x0260, 0x14b5: 0x0242,\n\t0x14b6: 0x0245, 0x14b7: 0x024e, 0x14b8: 0x0254, 0x14b9: 0x0266, 0x14ba: 0x026c, 0x14bb: 0x0272,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x1879, 0x14c1: 0x1876, 0x14c2: 0x187c, 0x14c3: 0x18a0, 0x14c4: 0x18c4, 0x14c5: 0x18e8,\n\t0x14c6: 0x190c, 0x14c7: 0x1915, 0x14c8: 0x191b, 0x14c9: 0x1921, 0x14ca: 0x1927,\n\t0x14d0: 0x1a8c, 0x14d1: 0x1a90,\n\t0x14d2: 0x1a94, 0x14d3: 0x1a98, 0x14d4: 0x1a9c, 0x14d5: 0x1aa0, 0x14d6: 0x1aa4, 0x14d7: 0x1aa8,\n\t0x14d8: 0x1aac, 0x14d9: 0x1ab0, 0x14da: 0x1ab4, 0x14db: 0x1ab8, 0x14dc: 0x1abc, 0x14dd: 0x1ac0,\n\t0x14de: 0x1ac4, 0x14df: 0x1ac8, 0x14e0: 0x1acc, 0x14e1: 0x1ad0, 0x14e2: 0x1ad4, 0x14e3: 0x1ad8,\n\t0x14e4: 0x1adc, 0x14e5: 0x1ae0, 0x14e6: 0x1ae4, 0x14e7: 0x1ae8, 0x14e8: 0x1aec, 0x14e9: 0x1af0,\n\t0x14ea: 0x271e, 0x14eb: 0x0047, 0x14ec: 0x0065, 0x14ed: 0x193c, 0x14ee: 0x19b1,\n\t0x14f0: 0x0043, 0x14f1: 0x0045, 0x14f2: 0x0047, 0x14f3: 0x0049, 0x14f4: 0x004b, 0x14f5: 0x004d,\n\t0x14f6: 0x004f, 0x14f7: 0x0051, 0x14f8: 0x0053, 0x14f9: 0x0055, 0x14fa: 0x0057, 0x14fb: 0x0059,\n\t0x14fc: 0x005b, 0x14fd: 0x005d, 0x14fe: 0x005f, 0x14ff: 0x0061,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x26ad, 0x1501: 0x26c2, 0x1502: 0x0503,\n\t0x1510: 0x0c0f, 0x1511: 0x0a47,\n\t0x1512: 0x08d3, 0x1513: 0x45c4, 0x1514: 0x071b, 0x1515: 0x09ef, 0x1516: 0x132f, 0x1517: 0x09ff,\n\t0x1518: 0x0727, 0x1519: 0x0cd7, 0x151a: 0x0eaf, 0x151b: 0x0caf, 0x151c: 0x0827, 0x151d: 0x0b6b,\n\t0x151e: 0x07bf, 0x151f: 0x0cb7, 0x1520: 0x0813, 0x1521: 0x1117, 0x1522: 0x0f83, 0x1523: 0x138b,\n\t0x1524: 0x09d3, 0x1525: 0x090b, 0x1526: 0x0e63, 0x1527: 0x0c1b, 0x1528: 0x0c47, 0x1529: 0x06bf,\n\t0x152a: 0x06cb, 0x152b: 0x140b, 0x152c: 0x0adb, 0x152d: 0x06e7, 0x152e: 0x08ef, 0x152f: 0x0c3b,\n\t0x1530: 0x13b3, 0x1531: 0x0c13, 0x1532: 0x106f, 0x1533: 0x10ab, 0x1534: 0x08f7, 0x1535: 0x0e43,\n\t0x1536: 0x0d0b, 0x1537: 0x0d07, 0x1538: 0x0f97, 0x1539: 0x082b, 0x153a: 0x0957, 0x153b: 0x1443,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x06fb, 0x1541: 0x06f3, 0x1542: 0x0703, 0x1543: 0x1647, 0x1544: 0x0747, 0x1545: 0x0757,\n\t0x1546: 0x075b, 0x1547: 0x0763, 0x1548: 0x076b, 0x1549: 0x076f, 0x154a: 0x077b, 0x154b: 0x0773,\n\t0x154c: 0x05b3, 0x154d: 0x165b, 0x154e: 0x078f, 0x154f: 0x0793, 0x1550: 0x0797, 0x1551: 0x07b3,\n\t0x1552: 0x164c, 0x1553: 0x05b7, 0x1554: 0x079f, 0x1555: 0x07bf, 0x1556: 0x1656, 0x1557: 0x07cf,\n\t0x1558: 0x07d7, 0x1559: 0x0737, 0x155a: 0x07df, 0x155b: 0x07e3, 0x155c: 0x1831, 0x155d: 0x07ff,\n\t0x155e: 0x0807, 0x155f: 0x05bf, 0x1560: 0x081f, 0x1561: 0x0823, 0x1562: 0x082b, 0x1563: 0x082f,\n\t0x1564: 0x05c3, 0x1565: 0x0847, 0x1566: 0x084b, 0x1567: 0x0857, 0x1568: 0x0863, 0x1569: 0x0867,\n\t0x156a: 0x086b, 0x156b: 0x0873, 0x156c: 0x0893, 0x156d: 0x0897, 0x156e: 0x089f, 0x156f: 0x08af,\n\t0x1570: 0x08b7, 0x1571: 0x08bb, 0x1572: 0x08bb, 0x1573: 0x08bb, 0x1574: 0x166a, 0x1575: 0x0e93,\n\t0x1576: 0x08cf, 0x1577: 0x08d7, 0x1578: 0x166f, 0x1579: 0x08e3, 0x157a: 0x08eb, 0x157b: 0x08f3,\n\t0x157c: 0x091b, 0x157d: 0x0907, 0x157e: 0x0913, 0x157f: 0x0917,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x091f, 0x1581: 0x0927, 0x1582: 0x092b, 0x1583: 0x0933, 0x1584: 0x093b, 0x1585: 0x093f,\n\t0x1586: 0x093f, 0x1587: 0x0947, 0x1588: 0x094f, 0x1589: 0x0953, 0x158a: 0x095f, 0x158b: 0x0983,\n\t0x158c: 0x0967, 0x158d: 0x0987, 0x158e: 0x096b, 0x158f: 0x0973, 0x1590: 0x080b, 0x1591: 0x09cf,\n\t0x1592: 0x0997, 0x1593: 0x099b, 0x1594: 0x099f, 0x1595: 0x0993, 0x1596: 0x09a7, 0x1597: 0x09a3,\n\t0x1598: 0x09bb, 0x1599: 0x1674, 0x159a: 0x09d7, 0x159b: 0x09db, 0x159c: 0x09e3, 0x159d: 0x09ef,\n\t0x159e: 0x09f7, 0x159f: 0x0a13, 0x15a0: 0x1679, 0x15a1: 0x167e, 0x15a2: 0x0a1f, 0x15a3: 0x0a23,\n\t0x15a4: 0x0a27, 0x15a5: 0x0a1b, 0x15a6: 0x0a2f, 0x15a7: 0x05c7, 0x15a8: 0x05cb, 0x15a9: 0x0a37,\n\t0x15aa: 0x0a3f, 0x15ab: 0x0a3f, 0x15ac: 0x1683, 0x15ad: 0x0a5b, 0x15ae: 0x0a5f, 0x15af: 0x0a63,\n\t0x15b0: 0x0a6b, 0x15b1: 0x1688, 0x15b2: 0x0a73, 0x15b3: 0x0a77, 0x15b4: 0x0b4f, 0x15b5: 0x0a7f,\n\t0x15b6: 0x05cf, 0x15b7: 0x0a8b, 0x15b8: 0x0a9b, 0x15b9: 0x0aa7, 0x15ba: 0x0aa3, 0x15bb: 0x1692,\n\t0x15bc: 0x0aaf, 0x15bd: 0x1697, 0x15be: 0x0abb, 0x15bf: 0x0ab7,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x0abf, 0x15c1: 0x0acf, 0x15c2: 0x0ad3, 0x15c3: 0x05d3, 0x15c4: 0x0ae3, 0x15c5: 0x0aeb,\n\t0x15c6: 0x0aef, 0x15c7: 0x0af3, 0x15c8: 0x05d7, 0x15c9: 0x169c, 0x15ca: 0x05db, 0x15cb: 0x0b0f,\n\t0x15cc: 0x0b13, 0x15cd: 0x0b17, 0x15ce: 0x0b1f, 0x15cf: 0x1863, 0x15d0: 0x0b37, 0x15d1: 0x16a6,\n\t0x15d2: 0x16a6, 0x15d3: 0x11d7, 0x15d4: 0x0b47, 0x15d5: 0x0b47, 0x15d6: 0x05df, 0x15d7: 0x16c9,\n\t0x15d8: 0x179b, 0x15d9: 0x0b57, 0x15da: 0x0b5f, 0x15db: 0x05e3, 0x15dc: 0x0b73, 0x15dd: 0x0b83,\n\t0x15de: 0x0b87, 0x15df: 0x0b8f, 0x15e0: 0x0b9f, 0x15e1: 0x05eb, 0x15e2: 0x05e7, 0x15e3: 0x0ba3,\n\t0x15e4: 0x16ab, 0x15e5: 0x0ba7, 0x15e6: 0x0bbb, 0x15e7: 0x0bbf, 0x15e8: 0x0bc3, 0x15e9: 0x0bbf,\n\t0x15ea: 0x0bcf, 0x15eb: 0x0bd3, 0x15ec: 0x0be3, 0x15ed: 0x0bdb, 0x15ee: 0x0bdf, 0x15ef: 0x0be7,\n\t0x15f0: 0x0beb, 0x15f1: 0x0bef, 0x15f2: 0x0bfb, 0x15f3: 0x0bff, 0x15f4: 0x0c17, 0x15f5: 0x0c1f,\n\t0x15f6: 0x0c2f, 0x15f7: 0x0c43, 0x15f8: 0x16ba, 0x15f9: 0x0c3f, 0x15fa: 0x0c33, 0x15fb: 0x0c4b,\n\t0x15fc: 0x0c53, 0x15fd: 0x0c67, 0x15fe: 0x16bf, 0x15ff: 0x0c6f,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x0c63, 0x1601: 0x0c5b, 0x1602: 0x05ef, 0x1603: 0x0c77, 0x1604: 0x0c7f, 0x1605: 0x0c87,\n\t0x1606: 0x0c7b, 0x1607: 0x05f3, 0x1608: 0x0c97, 0x1609: 0x0c9f, 0x160a: 0x16c4, 0x160b: 0x0ccb,\n\t0x160c: 0x0cff, 0x160d: 0x0cdb, 0x160e: 0x05ff, 0x160f: 0x0ce7, 0x1610: 0x05fb, 0x1611: 0x05f7,\n\t0x1612: 0x07c3, 0x1613: 0x07c7, 0x1614: 0x0d03, 0x1615: 0x0ceb, 0x1616: 0x11ab, 0x1617: 0x0663,\n\t0x1618: 0x0d0f, 0x1619: 0x0d13, 0x161a: 0x0d17, 0x161b: 0x0d2b, 0x161c: 0x0d23, 0x161d: 0x16dd,\n\t0x161e: 0x0603, 0x161f: 0x0d3f, 0x1620: 0x0d33, 0x1621: 0x0d4f, 0x1622: 0x0d57, 0x1623: 0x16e7,\n\t0x1624: 0x0d5b, 0x1625: 0x0d47, 0x1626: 0x0d63, 0x1627: 0x0607, 0x1628: 0x0d67, 0x1629: 0x0d6b,\n\t0x162a: 0x0d6f, 0x162b: 0x0d7b, 0x162c: 0x16ec, 0x162d: 0x0d83, 0x162e: 0x060b, 0x162f: 0x0d8f,\n\t0x1630: 0x16f1, 0x1631: 0x0d93, 0x1632: 0x060f, 0x1633: 0x0d9f, 0x1634: 0x0dab, 0x1635: 0x0db7,\n\t0x1636: 0x0dbb, 0x1637: 0x16f6, 0x1638: 0x168d, 0x1639: 0x16fb, 0x163a: 0x0ddb, 0x163b: 0x1700,\n\t0x163c: 0x0de7, 0x163d: 0x0def, 0x163e: 0x0ddf, 0x163f: 0x0dfb,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0e0b, 0x1641: 0x0e1b, 0x1642: 0x0e0f, 0x1643: 0x0e13, 0x1644: 0x0e1f, 0x1645: 0x0e23,\n\t0x1646: 0x1705, 0x1647: 0x0e07, 0x1648: 0x0e3b, 0x1649: 0x0e3f, 0x164a: 0x0613, 0x164b: 0x0e53,\n\t0x164c: 0x0e4f, 0x164d: 0x170a, 0x164e: 0x0e33, 0x164f: 0x0e6f, 0x1650: 0x170f, 0x1651: 0x1714,\n\t0x1652: 0x0e73, 0x1653: 0x0e87, 0x1654: 0x0e83, 0x1655: 0x0e7f, 0x1656: 0x0617, 0x1657: 0x0e8b,\n\t0x1658: 0x0e9b, 0x1659: 0x0e97, 0x165a: 0x0ea3, 0x165b: 0x1651, 0x165c: 0x0eb3, 0x165d: 0x1719,\n\t0x165e: 0x0ebf, 0x165f: 0x1723, 0x1660: 0x0ed3, 0x1661: 0x0edf, 0x1662: 0x0ef3, 0x1663: 0x1728,\n\t0x1664: 0x0f07, 0x1665: 0x0f0b, 0x1666: 0x172d, 0x1667: 0x1732, 0x1668: 0x0f27, 0x1669: 0x0f37,\n\t0x166a: 0x061b, 0x166b: 0x0f3b, 0x166c: 0x061f, 0x166d: 0x061f, 0x166e: 0x0f53, 0x166f: 0x0f57,\n\t0x1670: 0x0f5f, 0x1671: 0x0f63, 0x1672: 0x0f6f, 0x1673: 0x0623, 0x1674: 0x0f87, 0x1675: 0x1737,\n\t0x1676: 0x0fa3, 0x1677: 0x173c, 0x1678: 0x0faf, 0x1679: 0x16a1, 0x167a: 0x0fbf, 0x167b: 0x1741,\n\t0x167c: 0x1746, 0x167d: 0x174b, 0x167e: 0x0627, 0x167f: 0x062b,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x0ff7, 0x1681: 0x1755, 0x1682: 0x1750, 0x1683: 0x175a, 0x1684: 0x175f, 0x1685: 0x0fff,\n\t0x1686: 0x1003, 0x1687: 0x1003, 0x1688: 0x100b, 0x1689: 0x0633, 0x168a: 0x100f, 0x168b: 0x0637,\n\t0x168c: 0x063b, 0x168d: 0x1769, 0x168e: 0x1023, 0x168f: 0x102b, 0x1690: 0x1037, 0x1691: 0x063f,\n\t0x1692: 0x176e, 0x1693: 0x105b, 0x1694: 0x1773, 0x1695: 0x1778, 0x1696: 0x107b, 0x1697: 0x1093,\n\t0x1698: 0x0643, 0x1699: 0x109b, 0x169a: 0x109f, 0x169b: 0x10a3, 0x169c: 0x177d, 0x169d: 0x1782,\n\t0x169e: 0x1782, 0x169f: 0x10bb, 0x16a0: 0x0647, 0x16a1: 0x1787, 0x16a2: 0x10cf, 0x16a3: 0x10d3,\n\t0x16a4: 0x064b, 0x16a5: 0x178c, 0x16a6: 0x10ef, 0x16a7: 0x064f, 0x16a8: 0x10ff, 0x16a9: 0x10f7,\n\t0x16aa: 0x1107, 0x16ab: 0x1796, 0x16ac: 0x111f, 0x16ad: 0x0653, 0x16ae: 0x112b, 0x16af: 0x1133,\n\t0x16b0: 0x1143, 0x16b1: 0x0657, 0x16b2: 0x17a0, 0x16b3: 0x17a5, 0x16b4: 0x065b, 0x16b5: 0x17aa,\n\t0x16b6: 0x115b, 0x16b7: 0x17af, 0x16b8: 0x1167, 0x16b9: 0x1173, 0x16ba: 0x117b, 0x16bb: 0x17b4,\n\t0x16bc: 0x17b9, 0x16bd: 0x118f, 0x16be: 0x17be, 0x16bf: 0x1197,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x16ce, 0x16c1: 0x065f, 0x16c2: 0x11af, 0x16c3: 0x11b3, 0x16c4: 0x0667, 0x16c5: 0x11b7,\n\t0x16c6: 0x0a33, 0x16c7: 0x17c3, 0x16c8: 0x17c8, 0x16c9: 0x16d3, 0x16ca: 0x16d8, 0x16cb: 0x11d7,\n\t0x16cc: 0x11db, 0x16cd: 0x13f3, 0x16ce: 0x066b, 0x16cf: 0x1207, 0x16d0: 0x1203, 0x16d1: 0x120b,\n\t0x16d2: 0x083f, 0x16d3: 0x120f, 0x16d4: 0x1213, 0x16d5: 0x1217, 0x16d6: 0x121f, 0x16d7: 0x17cd,\n\t0x16d8: 0x121b, 0x16d9: 0x1223, 0x16da: 0x1237, 0x16db: 0x123b, 0x16dc: 0x1227, 0x16dd: 0x123f,\n\t0x16de: 0x1253, 0x16df: 0x1267, 0x16e0: 0x1233, 0x16e1: 0x1247, 0x16e2: 0x124b, 0x16e3: 0x124f,\n\t0x16e4: 0x17d2, 0x16e5: 0x17dc, 0x16e6: 0x17d7, 0x16e7: 0x066f, 0x16e8: 0x126f, 0x16e9: 0x1273,\n\t0x16ea: 0x127b, 0x16eb: 0x17f0, 0x16ec: 0x127f, 0x16ed: 0x17e1, 0x16ee: 0x0673, 0x16ef: 0x0677,\n\t0x16f0: 0x17e6, 0x16f1: 0x17eb, 0x16f2: 0x067b, 0x16f3: 0x129f, 0x16f4: 0x12a3, 0x16f5: 0x12a7,\n\t0x16f6: 0x12ab, 0x16f7: 0x12b7, 0x16f8: 0x12b3, 0x16f9: 0x12bf, 0x16fa: 0x12bb, 0x16fb: 0x12cb,\n\t0x16fc: 0x12c3, 0x16fd: 0x12c7, 0x16fe: 0x12cf, 0x16ff: 0x067f,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x12d7, 0x1701: 0x12db, 0x1702: 0x0683, 0x1703: 0x12eb, 0x1704: 0x12ef, 0x1705: 0x17f5,\n\t0x1706: 0x12fb, 0x1707: 0x12ff, 0x1708: 0x0687, 0x1709: 0x130b, 0x170a: 0x05bb, 0x170b: 0x17fa,\n\t0x170c: 0x17ff, 0x170d: 0x068b, 0x170e: 0x068f, 0x170f: 0x1337, 0x1710: 0x134f, 0x1711: 0x136b,\n\t0x1712: 0x137b, 0x1713: 0x1804, 0x1714: 0x138f, 0x1715: 0x1393, 0x1716: 0x13ab, 0x1717: 0x13b7,\n\t0x1718: 0x180e, 0x1719: 0x1660, 0x171a: 0x13c3, 0x171b: 0x13bf, 0x171c: 0x13cb, 0x171d: 0x1665,\n\t0x171e: 0x13d7, 0x171f: 0x13e3, 0x1720: 0x1813, 0x1721: 0x1818, 0x1722: 0x1423, 0x1723: 0x142f,\n\t0x1724: 0x1437, 0x1725: 0x181d, 0x1726: 0x143b, 0x1727: 0x1467, 0x1728: 0x1473, 0x1729: 0x1477,\n\t0x172a: 0x146f, 0x172b: 0x1483, 0x172c: 0x1487, 0x172d: 0x1822, 0x172e: 0x1493, 0x172f: 0x0693,\n\t0x1730: 0x149b, 0x1731: 0x1827, 0x1732: 0x0697, 0x1733: 0x14d3, 0x1734: 0x0ac3, 0x1735: 0x14eb,\n\t0x1736: 0x182c, 0x1737: 0x1836, 0x1738: 0x069b, 0x1739: 0x069f, 0x173a: 0x1513, 0x173b: 0x183b,\n\t0x173c: 0x06a3, 0x173d: 0x1840, 0x173e: 0x152b, 0x173f: 0x152b,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x1533, 0x1741: 0x1845, 0x1742: 0x154b, 0x1743: 0x06a7, 0x1744: 0x155b, 0x1745: 0x1567,\n\t0x1746: 0x156f, 0x1747: 0x1577, 0x1748: 0x06ab, 0x1749: 0x184a, 0x174a: 0x158b, 0x174b: 0x15a7,\n\t0x174c: 0x15b3, 0x174d: 0x06af, 0x174e: 0x06b3, 0x174f: 0x15b7, 0x1750: 0x184f, 0x1751: 0x06b7,\n\t0x1752: 0x1854, 0x1753: 0x1859, 0x1754: 0x185e, 0x1755: 0x15db, 0x1756: 0x06bb, 0x1757: 0x15ef,\n\t0x1758: 0x15f7, 0x1759: 0x15fb, 0x175a: 0x1603, 0x175b: 0x160b, 0x175c: 0x1613, 0x175d: 0x1868,\n}\n\n// nfkcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfkcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x5c, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5d, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x5e, 0xcb: 0x5f, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,\n\t0xd0: 0x0a, 0xd1: 0x60, 0xd2: 0x61, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x62,\n\t0xd8: 0x63, 0xd9: 0x0d, 0xdb: 0x64, 0xdc: 0x65, 0xdd: 0x66, 0xdf: 0x67,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x68, 0x121: 0x69, 0x123: 0x0e, 0x124: 0x6a, 0x125: 0x6b, 0x126: 0x6c, 0x127: 0x6d,\n\t0x128: 0x6e, 0x129: 0x6f, 0x12a: 0x70, 0x12b: 0x71, 0x12c: 0x6c, 0x12d: 0x72, 0x12e: 0x73, 0x12f: 0x74,\n\t0x131: 0x75, 0x132: 0x76, 0x133: 0x77, 0x134: 0x78, 0x135: 0x79, 0x137: 0x7a,\n\t0x138: 0x7b, 0x139: 0x7c, 0x13a: 0x7d, 0x13b: 0x7e, 0x13c: 0x7f, 0x13d: 0x80, 0x13e: 0x81, 0x13f: 0x82,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x83, 0x142: 0x84, 0x143: 0x85, 0x144: 0x86, 0x145: 0x87, 0x146: 0x88, 0x147: 0x89,\n\t0x14d: 0x8a,\n\t0x15c: 0x8b, 0x15f: 0x8c,\n\t0x162: 0x8d, 0x164: 0x8e,\n\t0x168: 0x8f, 0x169: 0x90, 0x16a: 0x91, 0x16c: 0x0f, 0x16d: 0x92, 0x16e: 0x93, 0x16f: 0x94,\n\t0x170: 0x95, 0x173: 0x96, 0x174: 0x97, 0x175: 0x10, 0x176: 0x11, 0x177: 0x12,\n\t0x178: 0x13, 0x179: 0x14, 0x17a: 0x15, 0x17b: 0x16, 0x17c: 0x17, 0x17d: 0x18, 0x17e: 0x19, 0x17f: 0x1a,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x98, 0x181: 0x99, 0x182: 0x9a, 0x183: 0x9b, 0x184: 0x1b, 0x185: 0x1c, 0x186: 0x9c, 0x187: 0x9d,\n\t0x188: 0x9e, 0x189: 0x1d, 0x18a: 0x1e, 0x18b: 0x9f, 0x18c: 0xa0,\n\t0x191: 0x1f, 0x192: 0x20, 0x193: 0xa1,\n\t0x1a8: 0xa2, 0x1a9: 0xa3, 0x1ab: 0xa4,\n\t0x1b1: 0xa5, 0x1b3: 0xa6, 0x1b5: 0xa7, 0x1b7: 0xa8,\n\t0x1ba: 0xa9, 0x1bb: 0xaa, 0x1bc: 0x21, 0x1bd: 0x22, 0x1be: 0x23, 0x1bf: 0xab,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0xac, 0x1c1: 0x24, 0x1c2: 0x25, 0x1c3: 0x26, 0x1c4: 0xad, 0x1c5: 0x27, 0x1c6: 0x28,\n\t0x1c8: 0x29, 0x1c9: 0x2a, 0x1ca: 0x2b, 0x1cb: 0x2c, 0x1cc: 0x2d, 0x1cd: 0x2e, 0x1ce: 0x2f, 0x1cf: 0x30,\n\t// Block 0x8, offset 0x200\n\t0x219: 0xae, 0x21a: 0xaf, 0x21b: 0xb0, 0x21d: 0xb1, 0x21f: 0xb2,\n\t0x220: 0xb3, 0x223: 0xb4, 0x224: 0xb5, 0x225: 0xb6, 0x226: 0xb7, 0x227: 0xb8,\n\t0x22a: 0xb9, 0x22b: 0xba, 0x22d: 0xbb, 0x22f: 0xbc,\n\t0x230: 0xbd, 0x231: 0xbe, 0x232: 0xbf, 0x233: 0xc0, 0x234: 0xc1, 0x235: 0xc2, 0x236: 0xc3, 0x237: 0xbd,\n\t0x238: 0xbe, 0x239: 0xbf, 0x23a: 0xc0, 0x23b: 0xc1, 0x23c: 0xc2, 0x23d: 0xc3, 0x23e: 0xbd, 0x23f: 0xbe,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xbf, 0x241: 0xc0, 0x242: 0xc1, 0x243: 0xc2, 0x244: 0xc3, 0x245: 0xbd, 0x246: 0xbe, 0x247: 0xbf,\n\t0x248: 0xc0, 0x249: 0xc1, 0x24a: 0xc2, 0x24b: 0xc3, 0x24c: 0xbd, 0x24d: 0xbe, 0x24e: 0xbf, 0x24f: 0xc0,\n\t0x250: 0xc1, 0x251: 0xc2, 0x252: 0xc3, 0x253: 0xbd, 0x254: 0xbe, 0x255: 0xbf, 0x256: 0xc0, 0x257: 0xc1,\n\t0x258: 0xc2, 0x259: 0xc3, 0x25a: 0xbd, 0x25b: 0xbe, 0x25c: 0xbf, 0x25d: 0xc0, 0x25e: 0xc1, 0x25f: 0xc2,\n\t0x260: 0xc3, 0x261: 0xbd, 0x262: 0xbe, 0x263: 0xbf, 0x264: 0xc0, 0x265: 0xc1, 0x266: 0xc2, 0x267: 0xc3,\n\t0x268: 0xbd, 0x269: 0xbe, 0x26a: 0xbf, 0x26b: 0xc0, 0x26c: 0xc1, 0x26d: 0xc2, 0x26e: 0xc3, 0x26f: 0xbd,\n\t0x270: 0xbe, 0x271: 0xbf, 0x272: 0xc0, 0x273: 0xc1, 0x274: 0xc2, 0x275: 0xc3, 0x276: 0xbd, 0x277: 0xbe,\n\t0x278: 0xbf, 0x279: 0xc0, 0x27a: 0xc1, 0x27b: 0xc2, 0x27c: 0xc3, 0x27d: 0xbd, 0x27e: 0xbe, 0x27f: 0xbf,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xc0, 0x281: 0xc1, 0x282: 0xc2, 0x283: 0xc3, 0x284: 0xbd, 0x285: 0xbe, 0x286: 0xbf, 0x287: 0xc0,\n\t0x288: 0xc1, 0x289: 0xc2, 0x28a: 0xc3, 0x28b: 0xbd, 0x28c: 0xbe, 0x28d: 0xbf, 0x28e: 0xc0, 0x28f: 0xc1,\n\t0x290: 0xc2, 0x291: 0xc3, 0x292: 0xbd, 0x293: 0xbe, 0x294: 0xbf, 0x295: 0xc0, 0x296: 0xc1, 0x297: 0xc2,\n\t0x298: 0xc3, 0x299: 0xbd, 0x29a: 0xbe, 0x29b: 0xbf, 0x29c: 0xc0, 0x29d: 0xc1, 0x29e: 0xc2, 0x29f: 0xc3,\n\t0x2a0: 0xbd, 0x2a1: 0xbe, 0x2a2: 0xbf, 0x2a3: 0xc0, 0x2a4: 0xc1, 0x2a5: 0xc2, 0x2a6: 0xc3, 0x2a7: 0xbd,\n\t0x2a8: 0xbe, 0x2a9: 0xbf, 0x2aa: 0xc0, 0x2ab: 0xc1, 0x2ac: 0xc2, 0x2ad: 0xc3, 0x2ae: 0xbd, 0x2af: 0xbe,\n\t0x2b0: 0xbf, 0x2b1: 0xc0, 0x2b2: 0xc1, 0x2b3: 0xc2, 0x2b4: 0xc3, 0x2b5: 0xbd, 0x2b6: 0xbe, 0x2b7: 0xbf,\n\t0x2b8: 0xc0, 0x2b9: 0xc1, 0x2ba: 0xc2, 0x2bb: 0xc3, 0x2bc: 0xbd, 0x2bd: 0xbe, 0x2be: 0xbf, 0x2bf: 0xc0,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xc1, 0x2c1: 0xc2, 0x2c2: 0xc3, 0x2c3: 0xbd, 0x2c4: 0xbe, 0x2c5: 0xbf, 0x2c6: 0xc0, 0x2c7: 0xc1,\n\t0x2c8: 0xc2, 0x2c9: 0xc3, 0x2ca: 0xbd, 0x2cb: 0xbe, 0x2cc: 0xbf, 0x2cd: 0xc0, 0x2ce: 0xc1, 0x2cf: 0xc2,\n\t0x2d0: 0xc3, 0x2d1: 0xbd, 0x2d2: 0xbe, 0x2d3: 0xbf, 0x2d4: 0xc0, 0x2d5: 0xc1, 0x2d6: 0xc2, 0x2d7: 0xc3,\n\t0x2d8: 0xbd, 0x2d9: 0xbe, 0x2da: 0xbf, 0x2db: 0xc0, 0x2dc: 0xc1, 0x2dd: 0xc2, 0x2de: 0xc4,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x31, 0x325: 0x32, 0x326: 0x33, 0x327: 0x34,\n\t0x328: 0x35, 0x329: 0x36, 0x32a: 0x37, 0x32b: 0x38, 0x32c: 0x39, 0x32d: 0x3a, 0x32e: 0x3b, 0x32f: 0x3c,\n\t0x330: 0x3d, 0x331: 0x3e, 0x332: 0x3f, 0x333: 0x40, 0x334: 0x41, 0x335: 0x42, 0x336: 0x43, 0x337: 0x44,\n\t0x338: 0x45, 0x339: 0x46, 0x33a: 0x47, 0x33b: 0x48, 0x33c: 0xc5, 0x33d: 0x49, 0x33e: 0x4a, 0x33f: 0x4b,\n\t// Block 0xd, offset 0x340\n\t0x347: 0xc6,\n\t0x34b: 0xc7, 0x34d: 0xc8,\n\t0x368: 0xc9, 0x36b: 0xca,\n\t0x374: 0xcb,\n\t0x37d: 0xcc,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xcd, 0x382: 0xce, 0x384: 0xcf, 0x385: 0xb7, 0x387: 0xd0,\n\t0x388: 0xd1, 0x38b: 0xd2, 0x38c: 0xd3, 0x38d: 0xd4,\n\t0x391: 0xd5, 0x392: 0xd6, 0x393: 0xd7, 0x396: 0xd8, 0x397: 0xd9,\n\t0x398: 0xda, 0x39a: 0xdb, 0x39c: 0xdc,\n\t0x3a0: 0xdd,\n\t0x3a8: 0xde, 0x3a9: 0xdf, 0x3aa: 0xe0,\n\t0x3b0: 0xda, 0x3b5: 0xe1, 0x3b6: 0xe2,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xe3, 0x3ec: 0xe4,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xe5,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xe6, 0x446: 0xe7, 0x447: 0xe8,\n\t0x449: 0xe9,\n\t0x450: 0xea, 0x451: 0xeb, 0x452: 0xec, 0x453: 0xed, 0x454: 0xee, 0x455: 0xef, 0x456: 0xf0, 0x457: 0xf1,\n\t0x458: 0xf2, 0x459: 0xf3, 0x45a: 0x4c, 0x45b: 0xf4, 0x45c: 0xf5, 0x45d: 0xf6, 0x45e: 0xf7, 0x45f: 0x4d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xf8,\n\t0x4a3: 0xf9, 0x4a5: 0xfa,\n\t0x4b8: 0x4e, 0x4b9: 0x4f, 0x4ba: 0x50,\n\t// Block 0x13, offset 0x4c0\n\t0x4c4: 0x51, 0x4c5: 0xfb, 0x4c6: 0xfc,\n\t0x4c8: 0x52, 0x4c9: 0xfd,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x53, 0x521: 0x54, 0x522: 0x55, 0x523: 0x56, 0x524: 0x57, 0x525: 0x58, 0x526: 0x59, 0x527: 0x5a,\n\t0x528: 0x5b,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfkcSparseOffset: 162 entries, 324 bytes\nvar nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x70, 0x75, 0x77, 0x7f, 0x86, 0x89, 0x91, 0x95, 0x99, 0x9b, 0x9d, 0xa6, 0xaa, 0xb1, 0xb6, 0xb9, 0xc3, 0xc6, 0xcd, 0xd5, 0xd9, 0xdb, 0xde, 0xe2, 0xe8, 0xf9, 0x105, 0x107, 0x10d, 0x10f, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11b, 0x11e, 0x121, 0x123, 0x126, 0x129, 0x12d, 0x132, 0x13b, 0x13d, 0x140, 0x142, 0x14d, 0x158, 0x166, 0x174, 0x184, 0x192, 0x199, 0x19f, 0x1ae, 0x1b2, 0x1b4, 0x1b8, 0x1ba, 0x1bd, 0x1bf, 0x1c2, 0x1c4, 0x1c7, 0x1c9, 0x1cb, 0x1cd, 0x1d9, 0x1e3, 0x1ed, 0x1f0, 0x1f4, 0x1f6, 0x1f8, 0x1fa, 0x1fc, 0x1ff, 0x201, 0x203, 0x205, 0x207, 0x20d, 0x210, 0x214, 0x216, 0x21d, 0x223, 0x229, 0x231, 0x237, 0x23d, 0x243, 0x247, 0x249, 0x24b, 0x24d, 0x24f, 0x255, 0x258, 0x25a, 0x260, 0x263, 0x26b, 0x272, 0x275, 0x278, 0x27a, 0x27d, 0x285, 0x289, 0x290, 0x293, 0x299, 0x29b, 0x29d, 0x2a0, 0x2a2, 0x2a5, 0x2a7, 0x2a9, 0x2ab, 0x2ae, 0x2b0, 0x2b2, 0x2b4, 0x2b6, 0x2c3, 0x2cd, 0x2cf, 0x2d1, 0x2d5, 0x2da, 0x2e6, 0x2eb, 0x2f4, 0x2fa, 0x2ff, 0x303, 0x308, 0x30c, 0x31c, 0x32a, 0x338, 0x346, 0x34c, 0x34e, 0x351, 0x35b, 0x35d}\n\n// nfkcSparseValues: 871 entries, 3484 bytes\nvar nfkcSparseValues = [871]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x0001, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4278, lo: 0xa8, hi: 0xa8},\n\t{value: 0x0083, lo: 0xaa, hi: 0xaa},\n\t{value: 0x4264, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0025, lo: 0xb2, hi: 0xb3},\n\t{value: 0x425a, lo: 0xb4, hi: 0xb4},\n\t{value: 0x01dc, lo: 0xb5, hi: 0xb5},\n\t{value: 0x4291, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0023, lo: 0xb9, hi: 0xb9},\n\t{value: 0x009f, lo: 0xba, hi: 0xba},\n\t{value: 0x221c, lo: 0xbc, hi: 0xbc},\n\t{value: 0x2210, lo: 0xbd, hi: 0xbd},\n\t{value: 0x22b2, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1, offset 0xe\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46e2, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4714, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x12\n\t{value: 0x0003, lo: 0x08},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x0091, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0119, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0095, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00a5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0143, lo: 0xb4, hi: 0xb6},\n\t{value: 0x00af, lo: 0xb7, hi: 0xb7},\n\t{value: 0x00b3, lo: 0xb8, hi: 0xb8},\n\t// Block 0x3, offset 0x1b\n\t{value: 0x000a, lo: 0x09},\n\t{value: 0x426e, lo: 0x98, hi: 0x98},\n\t{value: 0x4273, lo: 0x99, hi: 0x9a},\n\t{value: 0x4296, lo: 0x9b, hi: 0x9b},\n\t{value: 0x425f, lo: 0x9c, hi: 0x9c},\n\t{value: 0x4282, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0113, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0099, lo: 0xa1, hi: 0xa1},\n\t{value: 0x00a7, lo: 0xa2, hi: 0xa3},\n\t{value: 0x0167, lo: 0xa4, hi: 0xa4},\n\t// Block 0x4, offset 0x25\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37a5, lo: 0x90, hi: 0x90},\n\t{value: 0x37b1, lo: 0x91, hi: 0x91},\n\t{value: 0x379f, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3817, lo: 0x97, hi: 0x97},\n\t{value: 0x37e1, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37c9, lo: 0x9d, hi: 0x9d},\n\t{value: 0x37f3, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x381d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3823, lo: 0xb7, hi: 0xb7},\n\t// Block 0x5, offset 0x35\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x83, hi: 0x87},\n\t// Block 0x6, offset 0x37\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8113, lo: 0x81, hi: 0x82},\n\t{value: 0x8132, lo: 0x84, hi: 0x84},\n\t{value: 0x812d, lo: 0x85, hi: 0x85},\n\t{value: 0x810d, lo: 0x87, hi: 0x87},\n\t// Block 0x7, offset 0x3c\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x97},\n\t{value: 0x8119, lo: 0x98, hi: 0x98},\n\t{value: 0x811a, lo: 0x99, hi: 0x99},\n\t{value: 0x811b, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3841, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3847, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3853, lo: 0xa4, hi: 0xa4},\n\t{value: 0x384d, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3859, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x8, offset 0x47\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x386b, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x385f, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3865, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8132, lo: 0x96, hi: 0x9c},\n\t{value: 0x8132, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t// Block 0x9, offset 0x56\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x811f, lo: 0x91, hi: 0x91},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8132, lo: 0xba, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8132, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8132, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa, offset 0x63\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8132, lo: 0x80, hi: 0x80},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x83},\n\t{value: 0x812d, lo: 0x84, hi: 0x85},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x812d, lo: 0x88, hi: 0x89},\n\t{value: 0x8132, lo: 0x8a, hi: 0x8a},\n\t// Block 0xb, offset 0x6b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xab, hi: 0xb1},\n\t{value: 0x812d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb3},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0xc, offset 0x70\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0x96, hi: 0x99},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8132, lo: 0xa9, hi: 0xad},\n\t// Block 0xd, offset 0x75\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x99, hi: 0x9b},\n\t// Block 0xe, offset 0x77\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3ed8, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ee0, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3ee8, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9902, lo: 0xbc, hi: 0xbc},\n\t// Block 0xf, offset 0x7f\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x91, hi: 0x91},\n\t{value: 0x812d, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x93, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x94},\n\t{value: 0x451c, lo: 0x98, hi: 0x9f},\n\t// Block 0x10, offset 0x86\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x11, offset 0x89\n\t{value: 0x0008, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2c9e, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x455c, lo: 0x9c, hi: 0x9d},\n\t{value: 0x456c, lo: 0x9f, hi: 0x9f},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbe},\n\t// Block 0x12, offset 0x91\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4594, lo: 0xb3, hi: 0xb3},\n\t{value: 0x459c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x13, offset 0x95\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4574, lo: 0x99, hi: 0x9b},\n\t{value: 0x458c, lo: 0x9e, hi: 0x9e},\n\t// Block 0x14, offset 0x99\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x15, offset 0x9b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t// Block 0x16, offset 0x9d\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cb6, lo: 0x88, hi: 0x88},\n\t{value: 0x2cae, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cbe, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45a4, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45ac, lo: 0x9d, hi: 0x9d},\n\t// Block 0x17, offset 0xa6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cc6, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x18, offset 0xaa\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cce, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2cde, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cd6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x19, offset 0xb1\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ef0, lo: 0x88, hi: 0x88},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8120, lo: 0x95, hi: 0x96},\n\t// Block 0x1a, offset 0xb6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1b, offset 0xb9\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2ce6, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cee, lo: 0x87, hi: 0x87},\n\t{value: 0x2cf6, lo: 0x88, hi: 0x88},\n\t{value: 0x2f50, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2dd8, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1c, offset 0xc3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1d, offset 0xc6\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cfe, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d0e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d06, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1e, offset 0xcd\n\t{value: 0x6bea, lo: 0x07},\n\t{value: 0x9904, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ef8, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f58, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2de3, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d16, lo: 0x9e, hi: 0x9f},\n\t// Block 0x1f, offset 0xd5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2621, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8122, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x20, offset 0xd9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8123, lo: 0x88, hi: 0x8b},\n\t// Block 0x21, offset 0xdb\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2636, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8124, lo: 0xb8, hi: 0xb9},\n\t// Block 0x22, offset 0xde\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8125, lo: 0x88, hi: 0x8b},\n\t{value: 0x2628, lo: 0x9c, hi: 0x9c},\n\t{value: 0x262f, lo: 0x9d, hi: 0x9d},\n\t// Block 0x23, offset 0xe2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x030b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812d, lo: 0x98, hi: 0x99},\n\t{value: 0x812d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812b, lo: 0xb9, hi: 0xb9},\n\t// Block 0x24, offset 0xe8\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2644, lo: 0x83, hi: 0x83},\n\t{value: 0x264b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2652, lo: 0x92, hi: 0x92},\n\t{value: 0x2659, lo: 0x97, hi: 0x97},\n\t{value: 0x2660, lo: 0x9c, hi: 0x9c},\n\t{value: 0x263d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8126, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8127, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a84, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8128, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a8d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45b4, lo: 0xb6, hi: 0xb6},\n\t{value: 0x45f4, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45bc, lo: 0xb8, hi: 0xb8},\n\t{value: 0x45ff, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8127, lo: 0xba, hi: 0xbd},\n\t// Block 0x25, offset 0xf9\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8127, lo: 0x80, hi: 0x80},\n\t{value: 0x4a96, lo: 0x81, hi: 0x81},\n\t{value: 0x8132, lo: 0x82, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0x86, hi: 0x87},\n\t{value: 0x266e, lo: 0x93, hi: 0x93},\n\t{value: 0x2675, lo: 0x9d, hi: 0x9d},\n\t{value: 0x267c, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2683, lo: 0xa7, hi: 0xa7},\n\t{value: 0x268a, lo: 0xac, hi: 0xac},\n\t{value: 0x2667, lo: 0xb9, hi: 0xb9},\n\t// Block 0x26, offset 0x105\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x86, hi: 0x86},\n\t// Block 0x27, offset 0x107\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d1e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x28, offset 0x10d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t// Block 0x29, offset 0x10f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x030f, lo: 0xbc, hi: 0xbc},\n\t// Block 0x2a, offset 0x111\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2b, offset 0x113\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2c, offset 0x115\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2d, offset 0x117\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2e, offset 0x119\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9f},\n\t// Block 0x2f, offset 0x11b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x94, hi: 0x94},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x30, offset 0x11e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9d},\n\t// Block 0x31, offset 0x121\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8131, lo: 0xa9, hi: 0xa9},\n\t// Block 0x32, offset 0x123\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812e, lo: 0xb9, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbb},\n\t// Block 0x33, offset 0x126\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x97, hi: 0x97},\n\t{value: 0x812d, lo: 0x98, hi: 0x98},\n\t// Block 0x34, offset 0x129\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8132, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x35, offset 0x12d\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812d, lo: 0xb5, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x36, offset 0x132\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d66, lo: 0x80, hi: 0x80},\n\t{value: 0x2d6e, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d76, lo: 0x83, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xac},\n\t{value: 0x8132, lo: 0xad, hi: 0xb3},\n\t// Block 0x37, offset 0x13b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xaa, hi: 0xab},\n\t// Block 0x38, offset 0x13d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8104, lo: 0xb2, hi: 0xb3},\n\t// Block 0x39, offset 0x140\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3a, offset 0x142\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812d, lo: 0x95, hi: 0x99},\n\t{value: 0x8132, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812d, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t{value: 0x8132, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3b, offset 0x14d\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0043, lo: 0xac, hi: 0xac},\n\t{value: 0x00d1, lo: 0xad, hi: 0xad},\n\t{value: 0x0045, lo: 0xae, hi: 0xae},\n\t{value: 0x0049, lo: 0xb0, hi: 0xb1},\n\t{value: 0x00e6, lo: 0xb2, hi: 0xb2},\n\t{value: 0x004f, lo: 0xb3, hi: 0xba},\n\t{value: 0x005f, lo: 0xbc, hi: 0xbc},\n\t{value: 0x00ef, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0061, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0065, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3c, offset 0x158\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0001, lo: 0x80, hi: 0x8a},\n\t{value: 0x043b, lo: 0x91, hi: 0x91},\n\t{value: 0x429b, lo: 0x97, hi: 0x97},\n\t{value: 0x001d, lo: 0xa4, hi: 0xa4},\n\t{value: 0x1873, lo: 0xa5, hi: 0xa5},\n\t{value: 0x1b5c, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0001, lo: 0xaf, hi: 0xaf},\n\t{value: 0x2691, lo: 0xb3, hi: 0xb3},\n\t{value: 0x27fe, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2698, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2808, lo: 0xb7, hi: 0xb7},\n\t{value: 0x186d, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4269, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3d, offset 0x166\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x1933, lo: 0x87, hi: 0x87},\n\t{value: 0x1930, lo: 0x88, hi: 0x88},\n\t{value: 0x1870, lo: 0x89, hi: 0x89},\n\t{value: 0x298e, lo: 0x97, hi: 0x97},\n\t{value: 0x0001, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0093, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb4, hi: 0xb9},\n\t{value: 0x0017, lo: 0xba, hi: 0xba},\n\t{value: 0x0467, lo: 0xbb, hi: 0xbb},\n\t{value: 0x003b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0011, lo: 0xbd, hi: 0xbe},\n\t{value: 0x009d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3e, offset 0x174\n\t{value: 0x0002, lo: 0x0f},\n\t{value: 0x0021, lo: 0x80, hi: 0x89},\n\t{value: 0x0017, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0467, lo: 0x8b, hi: 0x8b},\n\t{value: 0x003b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0011, lo: 0x8d, hi: 0x8e},\n\t{value: 0x0083, lo: 0x90, hi: 0x90},\n\t{value: 0x008b, lo: 0x91, hi: 0x91},\n\t{value: 0x009f, lo: 0x92, hi: 0x92},\n\t{value: 0x00b1, lo: 0x93, hi: 0x93},\n\t{value: 0x0104, lo: 0x94, hi: 0x94},\n\t{value: 0x0091, lo: 0x95, hi: 0x95},\n\t{value: 0x0097, lo: 0x96, hi: 0x99},\n\t{value: 0x00a1, lo: 0x9a, hi: 0x9a},\n\t{value: 0x00a7, lo: 0x9b, hi: 0x9c},\n\t{value: 0x1999, lo: 0xa8, hi: 0xa8},\n\t// Block 0x3f, offset 0x184\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8132, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8132, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8132, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812d, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t// Block 0x40, offset 0x192\n\t{value: 0x0007, lo: 0x06},\n\t{value: 0x2180, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bb9, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bc7, lo: 0xae, hi: 0xae},\n\t// Block 0x41, offset 0x199\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3bce, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bd5, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x42, offset 0x19f\n\t{value: 0x0173, lo: 0x0e},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3be3, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3bea, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3bf1, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3bf8, lo: 0xa4, hi: 0xa4},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3bff, lo: 0xa6, hi: 0xa6},\n\t{value: 0x269f, lo: 0xac, hi: 0xad},\n\t{value: 0x26a6, lo: 0xaf, hi: 0xaf},\n\t{value: 0x281c, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x43, offset 0x1ae\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c68, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3c92, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cbc, lo: 0xaa, hi: 0xad},\n\t// Block 0x44, offset 0x1b2\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048b, lo: 0xa9, hi: 0xaa},\n\t// Block 0x45, offset 0x1b4\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0057, lo: 0x80, hi: 0x8f},\n\t{value: 0x0083, lo: 0x90, hi: 0xa9},\n\t{value: 0x0021, lo: 0xaa, hi: 0xaa},\n\t// Block 0x46, offset 0x1b8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x299b, lo: 0x8c, hi: 0x8c},\n\t// Block 0x47, offset 0x1ba\n\t{value: 0x0263, lo: 0x02},\n\t{value: 0x1b8c, lo: 0xb4, hi: 0xb4},\n\t{value: 0x192d, lo: 0xb5, hi: 0xb6},\n\t// Block 0x48, offset 0x1bd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44dd, lo: 0x9c, hi: 0x9c},\n\t// Block 0x49, offset 0x1bf\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0095, lo: 0xbc, hi: 0xbc},\n\t{value: 0x006d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x4a, offset 0x1c2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xaf, hi: 0xb1},\n\t// Block 0x4b, offset 0x1c4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x047f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x4c, offset 0x1c7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa0, hi: 0xbf},\n\t// Block 0x4d, offset 0x1c9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0dc3, lo: 0x9f, hi: 0x9f},\n\t// Block 0x4e, offset 0x1cb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x162f, lo: 0xb3, hi: 0xb3},\n\t// Block 0x4f, offset 0x1cd\n\t{value: 0x0004, lo: 0x0b},\n\t{value: 0x1597, lo: 0x80, hi: 0x82},\n\t{value: 0x15af, lo: 0x83, hi: 0x83},\n\t{value: 0x15c7, lo: 0x84, hi: 0x85},\n\t{value: 0x15d7, lo: 0x86, hi: 0x89},\n\t{value: 0x15eb, lo: 0x8a, hi: 0x8c},\n\t{value: 0x15ff, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1607, lo: 0x8e, hi: 0x8e},\n\t{value: 0x160f, lo: 0x8f, hi: 0x90},\n\t{value: 0x161b, lo: 0x91, hi: 0x93},\n\t{value: 0x162b, lo: 0x94, hi: 0x94},\n\t{value: 0x1633, lo: 0x95, hi: 0x95},\n\t// Block 0x50, offset 0x1d9\n\t{value: 0x0004, lo: 0x09},\n\t{value: 0x0001, lo: 0x80, hi: 0x80},\n\t{value: 0x812c, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8131, lo: 0xab, hi: 0xab},\n\t{value: 0x8133, lo: 0xac, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x812f, lo: 0xae, hi: 0xae},\n\t{value: 0x812f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x04b3, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0887, lo: 0xb8, hi: 0xba},\n\t// Block 0x51, offset 0x1e3\n\t{value: 0x0006, lo: 0x09},\n\t{value: 0x0313, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0317, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a3b, lo: 0xb3, hi: 0xb3},\n\t{value: 0x031b, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a41, lo: 0xb5, hi: 0xb6},\n\t{value: 0x031f, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0323, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0327, lo: 0xb9, hi: 0xb9},\n\t{value: 0x4a4d, lo: 0xba, hi: 0xbf},\n\t// Block 0x52, offset 0x1ed\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb4, hi: 0xbd},\n\t// Block 0x53, offset 0x1f0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x020f, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0212, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9f},\n\t// Block 0x54, offset 0x1f4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb1},\n\t// Block 0x55, offset 0x1f6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x163b, lo: 0xb0, hi: 0xb0},\n\t// Block 0x56, offset 0x1f8\n\t{value: 0x000c, lo: 0x01},\n\t{value: 0x00d7, lo: 0xb8, hi: 0xb9},\n\t// Block 0x57, offset 0x1fa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t// Block 0x58, offset 0x1fc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xa0, hi: 0xb1},\n\t// Block 0x59, offset 0x1ff\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xab, hi: 0xad},\n\t// Block 0x5a, offset 0x201\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x93, hi: 0x93},\n\t// Block 0x5b, offset 0x203\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb3, hi: 0xb3},\n\t// Block 0x5c, offset 0x205\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t// Block 0x5d, offset 0x207\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbf},\n\t// Block 0x5e, offset 0x20d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t// Block 0x5f, offset 0x210\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x1637, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0125, lo: 0x9e, hi: 0x9e},\n\t{value: 0x1643, lo: 0x9f, hi: 0x9f},\n\t// Block 0x60, offset 0x214\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xad, hi: 0xad},\n\t// Block 0x61, offset 0x216\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x62, offset 0x21d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x63, offset 0x223\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x64, offset 0x229\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x65, offset 0x231\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x66, offset 0x237\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x67, offset 0x23d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x68, offset 0x243\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x69, offset 0x247\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0003, lo: 0x81, hi: 0xbf},\n\t// Block 0x6a, offset 0x249\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x6b, offset 0x24b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xa0, hi: 0xa0},\n\t// Block 0x6c, offset 0x24d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb6, hi: 0xba},\n\t// Block 0x6d, offset 0x24f\n\t{value: 0x002c, lo: 0x05},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x6e, offset 0x255\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t// Block 0x6f, offset 0x258\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa7},\n\t// Block 0x70, offset 0x25a\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x8132, lo: 0x88, hi: 0x8a},\n\t{value: 0x812d, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8132, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812d, lo: 0x8d, hi: 0x90},\n\t// Block 0x71, offset 0x260\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x72, offset 0x263\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4238, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4242, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x424c, lo: 0xab, hi: 0xab},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x73, offset 0x26b\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8132, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d7e, lo: 0xae, hi: 0xae},\n\t{value: 0x2d88, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8104, lo: 0xb3, hi: 0xb4},\n\t// Block 0x74, offset 0x272\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x75, offset 0x275\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8102, lo: 0xb6, hi: 0xb6},\n\t// Block 0x76, offset 0x278\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8102, lo: 0xa9, hi: 0xaa},\n\t// Block 0x77, offset 0x27a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x78, offset 0x27d\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d92, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d9c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8132, lo: 0xa6, hi: 0xac},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t// Block 0x79, offset 0x285\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x86, hi: 0x86},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9e},\n\t// Block 0x7a, offset 0x289\n\t{value: 0x6b5a, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2db0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2da6, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dba, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7b, offset 0x290\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x83, hi: 0x83},\n\t// Block 0x7c, offset 0x293\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dc4, lo: 0xba, hi: 0xba},\n\t{value: 0x2dce, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7d, offset 0x299\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0x80, hi: 0x80},\n\t// Block 0x7e, offset 0x29b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7f, offset 0x29d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x80, offset 0x2a0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xab, hi: 0xab},\n\t// Block 0x81, offset 0x2a2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8102, lo: 0xba, hi: 0xba},\n\t// Block 0x82, offset 0x2a5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x83, offset 0x2a7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x87, hi: 0x87},\n\t// Block 0x84, offset 0x2a9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x99, hi: 0x99},\n\t// Block 0x85, offset 0x2ab\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0x82, hi: 0x82},\n\t{value: 0x8104, lo: 0x84, hi: 0x85},\n\t// Block 0x86, offset 0x2ae\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x97, hi: 0x97},\n\t// Block 0x87, offset 0x2b0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x88, offset 0x2b2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb6},\n\t// Block 0x89, offset 0x2b4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x8a, offset 0x2b6\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45cc, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45d6, lo: 0x9f, hi: 0x9f},\n\t{value: 0x460a, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4618, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4626, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4634, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4642, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812b, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8130, lo: 0xad, hi: 0xad},\n\t{value: 0x812b, lo: 0xae, hi: 0xb2},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8b, offset 0x2c3\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812d, lo: 0x80, hi: 0x82},\n\t{value: 0x8132, lo: 0x85, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8132, lo: 0xaa, hi: 0xad},\n\t{value: 0x45e0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x45ea, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4650, lo: 0xbd, hi: 0xbd},\n\t{value: 0x466c, lo: 0xbe, hi: 0xbe},\n\t{value: 0x465e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x8c, offset 0x2cd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x467a, lo: 0x80, hi: 0x80},\n\t// Block 0x8d, offset 0x2cf\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x82, hi: 0x84},\n\t// Block 0x8e, offset 0x2d1\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0043, lo: 0x80, hi: 0x99},\n\t{value: 0x0083, lo: 0x9a, hi: 0xb3},\n\t{value: 0x0043, lo: 0xb4, hi: 0xbf},\n\t// Block 0x8f, offset 0x2d5\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x005b, lo: 0x80, hi: 0x8d},\n\t{value: 0x0083, lo: 0x8e, hi: 0x94},\n\t{value: 0x0093, lo: 0x96, hi: 0xa7},\n\t{value: 0x0043, lo: 0xa8, hi: 0xbf},\n\t// Block 0x90, offset 0x2da\n\t{value: 0x0002, lo: 0x0b},\n\t{value: 0x0073, lo: 0x80, hi: 0x81},\n\t{value: 0x0083, lo: 0x82, hi: 0x9b},\n\t{value: 0x0043, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0047, lo: 0x9e, hi: 0x9f},\n\t{value: 0x004f, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0055, lo: 0xa5, hi: 0xa6},\n\t{value: 0x005d, lo: 0xa9, hi: 0xac},\n\t{value: 0x0067, lo: 0xae, hi: 0xb5},\n\t{value: 0x0083, lo: 0xb6, hi: 0xb9},\n\t{value: 0x008d, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0091, lo: 0xbd, hi: 0xbf},\n\t// Block 0x91, offset 0x2e6\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x0097, lo: 0x80, hi: 0x83},\n\t{value: 0x00a1, lo: 0x85, hi: 0x8f},\n\t{value: 0x0043, lo: 0x90, hi: 0xa9},\n\t{value: 0x0083, lo: 0xaa, hi: 0xbf},\n\t// Block 0x92, offset 0x2eb\n\t{value: 0x0002, lo: 0x08},\n\t{value: 0x00af, lo: 0x80, hi: 0x83},\n\t{value: 0x0043, lo: 0x84, hi: 0x85},\n\t{value: 0x0049, lo: 0x87, hi: 0x8a},\n\t{value: 0x0055, lo: 0x8d, hi: 0x94},\n\t{value: 0x0067, lo: 0x96, hi: 0x9c},\n\t{value: 0x0083, lo: 0x9e, hi: 0xb7},\n\t{value: 0x0043, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0049, lo: 0xbb, hi: 0xbe},\n\t// Block 0x93, offset 0x2f4\n\t{value: 0x0002, lo: 0x05},\n\t{value: 0x0053, lo: 0x80, hi: 0x84},\n\t{value: 0x005f, lo: 0x86, hi: 0x86},\n\t{value: 0x0067, lo: 0x8a, hi: 0x90},\n\t{value: 0x0083, lo: 0x92, hi: 0xab},\n\t{value: 0x0043, lo: 0xac, hi: 0xbf},\n\t// Block 0x94, offset 0x2fa\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x006b, lo: 0x80, hi: 0x85},\n\t{value: 0x0083, lo: 0x86, hi: 0x9f},\n\t{value: 0x0043, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0083, lo: 0xba, hi: 0xbf},\n\t// Block 0x95, offset 0x2ff\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x008f, lo: 0x80, hi: 0x93},\n\t{value: 0x0043, lo: 0x94, hi: 0xad},\n\t{value: 0x0083, lo: 0xae, hi: 0xbf},\n\t// Block 0x96, offset 0x303\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x00a7, lo: 0x80, hi: 0x87},\n\t{value: 0x0043, lo: 0x88, hi: 0xa1},\n\t{value: 0x0083, lo: 0xa2, hi: 0xbb},\n\t{value: 0x0043, lo: 0xbc, hi: 0xbf},\n\t// Block 0x97, offset 0x308\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x004b, lo: 0x80, hi: 0x95},\n\t{value: 0x0083, lo: 0x96, hi: 0xaf},\n\t{value: 0x0043, lo: 0xb0, hi: 0xbf},\n\t// Block 0x98, offset 0x30c\n\t{value: 0x0003, lo: 0x0f},\n\t{value: 0x01b8, lo: 0x80, hi: 0x80},\n\t{value: 0x045f, lo: 0x81, hi: 0x81},\n\t{value: 0x01bb, lo: 0x82, hi: 0x9a},\n\t{value: 0x045b, lo: 0x9b, hi: 0x9b},\n\t{value: 0x01c7, lo: 0x9c, hi: 0x9c},\n\t{value: 0x01d0, lo: 0x9d, hi: 0x9d},\n\t{value: 0x01d6, lo: 0x9e, hi: 0x9e},\n\t{value: 0x01fa, lo: 0x9f, hi: 0x9f},\n\t{value: 0x01eb, lo: 0xa0, hi: 0xa0},\n\t{value: 0x01e8, lo: 0xa1, hi: 0xa1},\n\t{value: 0x0173, lo: 0xa2, hi: 0xb2},\n\t{value: 0x0188, lo: 0xb3, hi: 0xb3},\n\t{value: 0x01a6, lo: 0xb4, hi: 0xba},\n\t{value: 0x045f, lo: 0xbb, hi: 0xbb},\n\t{value: 0x01bb, lo: 0xbc, hi: 0xbf},\n\t// Block 0x99, offset 0x31c\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01c7, lo: 0x80, hi: 0x94},\n\t{value: 0x045b, lo: 0x95, hi: 0x95},\n\t{value: 0x01c7, lo: 0x96, hi: 0x96},\n\t{value: 0x01d0, lo: 0x97, hi: 0x97},\n\t{value: 0x01d6, lo: 0x98, hi: 0x98},\n\t{value: 0x01fa, lo: 0x99, hi: 0x99},\n\t{value: 0x01eb, lo: 0x9a, hi: 0x9a},\n\t{value: 0x01e8, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0173, lo: 0x9c, hi: 0xac},\n\t{value: 0x0188, lo: 0xad, hi: 0xad},\n\t{value: 0x01a6, lo: 0xae, hi: 0xb4},\n\t{value: 0x045f, lo: 0xb5, hi: 0xb5},\n\t{value: 0x01bb, lo: 0xb6, hi: 0xbf},\n\t// Block 0x9a, offset 0x32a\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01d9, lo: 0x80, hi: 0x8e},\n\t{value: 0x045b, lo: 0x8f, hi: 0x8f},\n\t{value: 0x01c7, lo: 0x90, hi: 0x90},\n\t{value: 0x01d0, lo: 0x91, hi: 0x91},\n\t{value: 0x01d6, lo: 0x92, hi: 0x92},\n\t{value: 0x01fa, lo: 0x93, hi: 0x93},\n\t{value: 0x01eb, lo: 0x94, hi: 0x94},\n\t{value: 0x01e8, lo: 0x95, hi: 0x95},\n\t{value: 0x0173, lo: 0x96, hi: 0xa6},\n\t{value: 0x0188, lo: 0xa7, hi: 0xa7},\n\t{value: 0x01a6, lo: 0xa8, hi: 0xae},\n\t{value: 0x045f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x01bb, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9b, offset 0x338\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01eb, lo: 0x80, hi: 0x88},\n\t{value: 0x045b, lo: 0x89, hi: 0x89},\n\t{value: 0x01c7, lo: 0x8a, hi: 0x8a},\n\t{value: 0x01d0, lo: 0x8b, hi: 0x8b},\n\t{value: 0x01d6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x01fa, lo: 0x8d, hi: 0x8d},\n\t{value: 0x01eb, lo: 0x8e, hi: 0x8e},\n\t{value: 0x01e8, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0173, lo: 0x90, hi: 0xa0},\n\t{value: 0x0188, lo: 0xa1, hi: 0xa1},\n\t{value: 0x01a6, lo: 0xa2, hi: 0xa8},\n\t{value: 0x045f, lo: 0xa9, hi: 0xa9},\n\t{value: 0x01bb, lo: 0xaa, hi: 0xbf},\n\t// Block 0x9c, offset 0x346\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0x80, hi: 0x86},\n\t{value: 0x8132, lo: 0x88, hi: 0x98},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8132, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa6, hi: 0xaa},\n\t// Block 0x9d, offset 0x34c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x90, hi: 0x96},\n\t// Block 0x9e, offset 0x34e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x84, hi: 0x89},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x9f, offset 0x351\n\t{value: 0x0002, lo: 0x09},\n\t{value: 0x0063, lo: 0x80, hi: 0x89},\n\t{value: 0x1951, lo: 0x8a, hi: 0x8a},\n\t{value: 0x1981, lo: 0x8b, hi: 0x8b},\n\t{value: 0x199c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x19a2, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1bc0, lo: 0x8e, hi: 0x8e},\n\t{value: 0x19ae, lo: 0x8f, hi: 0x8f},\n\t{value: 0x197b, lo: 0xaa, hi: 0xaa},\n\t{value: 0x197e, lo: 0xab, hi: 0xab},\n\t// Block 0xa0, offset 0x35b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x193f, lo: 0x90, hi: 0x90},\n\t// Block 0xa1, offset 0x35d\n\t{value: 0x0028, lo: 0x09},\n\t{value: 0x2862, lo: 0x80, hi: 0x80},\n\t{value: 0x2826, lo: 0x81, hi: 0x81},\n\t{value: 0x2830, lo: 0x82, hi: 0x82},\n\t{value: 0x2844, lo: 0x83, hi: 0x84},\n\t{value: 0x284e, lo: 0x85, hi: 0x86},\n\t{value: 0x283a, lo: 0x87, hi: 0x87},\n\t{value: 0x2858, lo: 0x88, hi: 0x88},\n\t{value: 0x0b6f, lo: 0x90, hi: 0x90},\n\t{value: 0x08e7, lo: 0x91, hi: 0x91},\n}\n\n// recompMap: 7520 bytes (entries only)\nvar recompMap map[uint32]rune\nvar recompMapOnce sync.Once\n\nconst recompMapPacked = \"\" +\n\t\"\\x00A\\x03\\x00\\x00\\x00\\x00\\xc0\" + // 0x00410300: 0x000000C0\n\t\"\\x00A\\x03\\x01\\x00\\x00\\x00\\xc1\" + // 0x00410301: 0x000000C1\n\t\"\\x00A\\x03\\x02\\x00\\x00\\x00\\xc2\" + // 0x00410302: 0x000000C2\n\t\"\\x00A\\x03\\x03\\x00\\x00\\x00\\xc3\" + // 0x00410303: 0x000000C3\n\t\"\\x00A\\x03\\b\\x00\\x00\\x00\\xc4\" + // 0x00410308: 0x000000C4\n\t\"\\x00A\\x03\\n\\x00\\x00\\x00\\xc5\" + // 0x0041030A: 0x000000C5\n\t\"\\x00C\\x03'\\x00\\x00\\x00\\xc7\" + // 0x00430327: 0x000000C7\n\t\"\\x00E\\x03\\x00\\x00\\x00\\x00\\xc8\" + // 0x00450300: 0x000000C8\n\t\"\\x00E\\x03\\x01\\x00\\x00\\x00\\xc9\" + // 0x00450301: 0x000000C9\n\t\"\\x00E\\x03\\x02\\x00\\x00\\x00\\xca\" + // 0x00450302: 0x000000CA\n\t\"\\x00E\\x03\\b\\x00\\x00\\x00\\xcb\" + // 0x00450308: 0x000000CB\n\t\"\\x00I\\x03\\x00\\x00\\x00\\x00\\xcc\" + // 0x00490300: 0x000000CC\n\t\"\\x00I\\x03\\x01\\x00\\x00\\x00\\xcd\" + // 0x00490301: 0x000000CD\n\t\"\\x00I\\x03\\x02\\x00\\x00\\x00\\xce\" + // 0x00490302: 0x000000CE\n\t\"\\x00I\\x03\\b\\x00\\x00\\x00\\xcf\" + // 0x00490308: 0x000000CF\n\t\"\\x00N\\x03\\x03\\x00\\x00\\x00\\xd1\" + // 0x004E0303: 0x000000D1\n\t\"\\x00O\\x03\\x00\\x00\\x00\\x00\\xd2\" + // 0x004F0300: 0x000000D2\n\t\"\\x00O\\x03\\x01\\x00\\x00\\x00\\xd3\" + // 0x004F0301: 0x000000D3\n\t\"\\x00O\\x03\\x02\\x00\\x00\\x00\\xd4\" + // 0x004F0302: 0x000000D4\n\t\"\\x00O\\x03\\x03\\x00\\x00\\x00\\xd5\" + // 0x004F0303: 0x000000D5\n\t\"\\x00O\\x03\\b\\x00\\x00\\x00\\xd6\" + // 0x004F0308: 0x000000D6\n\t\"\\x00U\\x03\\x00\\x00\\x00\\x00\\xd9\" + // 0x00550300: 0x000000D9\n\t\"\\x00U\\x03\\x01\\x00\\x00\\x00\\xda\" + // 0x00550301: 0x000000DA\n\t\"\\x00U\\x03\\x02\\x00\\x00\\x00\\xdb\" + // 0x00550302: 0x000000DB\n\t\"\\x00U\\x03\\b\\x00\\x00\\x00\\xdc\" + // 0x00550308: 0x000000DC\n\t\"\\x00Y\\x03\\x01\\x00\\x00\\x00\\xdd\" + // 0x00590301: 0x000000DD\n\t\"\\x00a\\x03\\x00\\x00\\x00\\x00\\xe0\" + // 0x00610300: 0x000000E0\n\t\"\\x00a\\x03\\x01\\x00\\x00\\x00\\xe1\" + // 0x00610301: 0x000000E1\n\t\"\\x00a\\x03\\x02\\x00\\x00\\x00\\xe2\" + // 0x00610302: 0x000000E2\n\t\"\\x00a\\x03\\x03\\x00\\x00\\x00\\xe3\" + // 0x00610303: 0x000000E3\n\t\"\\x00a\\x03\\b\\x00\\x00\\x00\\xe4\" + // 0x00610308: 0x000000E4\n\t\"\\x00a\\x03\\n\\x00\\x00\\x00\\xe5\" + // 0x0061030A: 0x000000E5\n\t\"\\x00c\\x03'\\x00\\x00\\x00\\xe7\" + // 0x00630327: 0x000000E7\n\t\"\\x00e\\x03\\x00\\x00\\x00\\x00\\xe8\" + // 0x00650300: 0x000000E8\n\t\"\\x00e\\x03\\x01\\x00\\x00\\x00\\xe9\" + // 0x00650301: 0x000000E9\n\t\"\\x00e\\x03\\x02\\x00\\x00\\x00\\xea\" + // 0x00650302: 0x000000EA\n\t\"\\x00e\\x03\\b\\x00\\x00\\x00\\xeb\" + // 0x00650308: 0x000000EB\n\t\"\\x00i\\x03\\x00\\x00\\x00\\x00\\xec\" + // 0x00690300: 0x000000EC\n\t\"\\x00i\\x03\\x01\\x00\\x00\\x00\\xed\" + // 0x00690301: 0x000000ED\n\t\"\\x00i\\x03\\x02\\x00\\x00\\x00\\xee\" + // 0x00690302: 0x000000EE\n\t\"\\x00i\\x03\\b\\x00\\x00\\x00\\xef\" + // 0x00690308: 0x000000EF\n\t\"\\x00n\\x03\\x03\\x00\\x00\\x00\\xf1\" + // 0x006E0303: 0x000000F1\n\t\"\\x00o\\x03\\x00\\x00\\x00\\x00\\xf2\" + // 0x006F0300: 0x000000F2\n\t\"\\x00o\\x03\\x01\\x00\\x00\\x00\\xf3\" + // 0x006F0301: 0x000000F3\n\t\"\\x00o\\x03\\x02\\x00\\x00\\x00\\xf4\" + // 0x006F0302: 0x000000F4\n\t\"\\x00o\\x03\\x03\\x00\\x00\\x00\\xf5\" + // 0x006F0303: 0x000000F5\n\t\"\\x00o\\x03\\b\\x00\\x00\\x00\\xf6\" + // 0x006F0308: 0x000000F6\n\t\"\\x00u\\x03\\x00\\x00\\x00\\x00\\xf9\" + // 0x00750300: 0x000000F9\n\t\"\\x00u\\x03\\x01\\x00\\x00\\x00\\xfa\" + // 0x00750301: 0x000000FA\n\t\"\\x00u\\x03\\x02\\x00\\x00\\x00\\xfb\" + // 0x00750302: 0x000000FB\n\t\"\\x00u\\x03\\b\\x00\\x00\\x00\\xfc\" + // 0x00750308: 0x000000FC\n\t\"\\x00y\\x03\\x01\\x00\\x00\\x00\\xfd\" + // 0x00790301: 0x000000FD\n\t\"\\x00y\\x03\\b\\x00\\x00\\x00\\xff\" + // 0x00790308: 0x000000FF\n\t\"\\x00A\\x03\\x04\\x00\\x00\\x01\\x00\" + // 0x00410304: 0x00000100\n\t\"\\x00a\\x03\\x04\\x00\\x00\\x01\\x01\" + // 0x00610304: 0x00000101\n\t\"\\x00A\\x03\\x06\\x00\\x00\\x01\\x02\" + // 0x00410306: 0x00000102\n\t\"\\x00a\\x03\\x06\\x00\\x00\\x01\\x03\" + // 0x00610306: 0x00000103\n\t\"\\x00A\\x03(\\x00\\x00\\x01\\x04\" + // 0x00410328: 0x00000104\n\t\"\\x00a\\x03(\\x00\\x00\\x01\\x05\" + // 0x00610328: 0x00000105\n\t\"\\x00C\\x03\\x01\\x00\\x00\\x01\\x06\" + // 0x00430301: 0x00000106\n\t\"\\x00c\\x03\\x01\\x00\\x00\\x01\\a\" + // 0x00630301: 0x00000107\n\t\"\\x00C\\x03\\x02\\x00\\x00\\x01\\b\" + // 0x00430302: 0x00000108\n\t\"\\x00c\\x03\\x02\\x00\\x00\\x01\\t\" + // 0x00630302: 0x00000109\n\t\"\\x00C\\x03\\a\\x00\\x00\\x01\\n\" + // 0x00430307: 0x0000010A\n\t\"\\x00c\\x03\\a\\x00\\x00\\x01\\v\" + // 0x00630307: 0x0000010B\n\t\"\\x00C\\x03\\f\\x00\\x00\\x01\\f\" + // 0x0043030C: 0x0000010C\n\t\"\\x00c\\x03\\f\\x00\\x00\\x01\\r\" + // 0x0063030C: 0x0000010D\n\t\"\\x00D\\x03\\f\\x00\\x00\\x01\\x0e\" + // 0x0044030C: 0x0000010E\n\t\"\\x00d\\x03\\f\\x00\\x00\\x01\\x0f\" + // 0x0064030C: 0x0000010F\n\t\"\\x00E\\x03\\x04\\x00\\x00\\x01\\x12\" + // 0x00450304: 0x00000112\n\t\"\\x00e\\x03\\x04\\x00\\x00\\x01\\x13\" + // 0x00650304: 0x00000113\n\t\"\\x00E\\x03\\x06\\x00\\x00\\x01\\x14\" + // 0x00450306: 0x00000114\n\t\"\\x00e\\x03\\x06\\x00\\x00\\x01\\x15\" + // 0x00650306: 0x00000115\n\t\"\\x00E\\x03\\a\\x00\\x00\\x01\\x16\" + // 0x00450307: 0x00000116\n\t\"\\x00e\\x03\\a\\x00\\x00\\x01\\x17\" + // 0x00650307: 0x00000117\n\t\"\\x00E\\x03(\\x00\\x00\\x01\\x18\" + // 0x00450328: 0x00000118\n\t\"\\x00e\\x03(\\x00\\x00\\x01\\x19\" + // 0x00650328: 0x00000119\n\t\"\\x00E\\x03\\f\\x00\\x00\\x01\\x1a\" + // 0x0045030C: 0x0000011A\n\t\"\\x00e\\x03\\f\\x00\\x00\\x01\\x1b\" + // 0x0065030C: 0x0000011B\n\t\"\\x00G\\x03\\x02\\x00\\x00\\x01\\x1c\" + // 0x00470302: 0x0000011C\n\t\"\\x00g\\x03\\x02\\x00\\x00\\x01\\x1d\" + // 0x00670302: 0x0000011D\n\t\"\\x00G\\x03\\x06\\x00\\x00\\x01\\x1e\" + // 0x00470306: 0x0000011E\n\t\"\\x00g\\x03\\x06\\x00\\x00\\x01\\x1f\" + // 0x00670306: 0x0000011F\n\t\"\\x00G\\x03\\a\\x00\\x00\\x01 \" + // 0x00470307: 0x00000120\n\t\"\\x00g\\x03\\a\\x00\\x00\\x01!\" + // 0x00670307: 0x00000121\n\t\"\\x00G\\x03'\\x00\\x00\\x01\\\"\" + // 0x00470327: 0x00000122\n\t\"\\x00g\\x03'\\x00\\x00\\x01#\" + // 0x00670327: 0x00000123\n\t\"\\x00H\\x03\\x02\\x00\\x00\\x01$\" + // 0x00480302: 0x00000124\n\t\"\\x00h\\x03\\x02\\x00\\x00\\x01%\" + // 0x00680302: 0x00000125\n\t\"\\x00I\\x03\\x03\\x00\\x00\\x01(\" + // 0x00490303: 0x00000128\n\t\"\\x00i\\x03\\x03\\x00\\x00\\x01)\" + // 0x00690303: 0x00000129\n\t\"\\x00I\\x03\\x04\\x00\\x00\\x01*\" + // 0x00490304: 0x0000012A\n\t\"\\x00i\\x03\\x04\\x00\\x00\\x01+\" + // 0x00690304: 0x0000012B\n\t\"\\x00I\\x03\\x06\\x00\\x00\\x01,\" + // 0x00490306: 0x0000012C\n\t\"\\x00i\\x03\\x06\\x00\\x00\\x01-\" + // 0x00690306: 0x0000012D\n\t\"\\x00I\\x03(\\x00\\x00\\x01.\" + // 0x00490328: 0x0000012E\n\t\"\\x00i\\x03(\\x00\\x00\\x01/\" + // 0x00690328: 0x0000012F\n\t\"\\x00I\\x03\\a\\x00\\x00\\x010\" + // 0x00490307: 0x00000130\n\t\"\\x00J\\x03\\x02\\x00\\x00\\x014\" + // 0x004A0302: 0x00000134\n\t\"\\x00j\\x03\\x02\\x00\\x00\\x015\" + // 0x006A0302: 0x00000135\n\t\"\\x00K\\x03'\\x00\\x00\\x016\" + // 0x004B0327: 0x00000136\n\t\"\\x00k\\x03'\\x00\\x00\\x017\" + // 0x006B0327: 0x00000137\n\t\"\\x00L\\x03\\x01\\x00\\x00\\x019\" + // 0x004C0301: 0x00000139\n\t\"\\x00l\\x03\\x01\\x00\\x00\\x01:\" + // 0x006C0301: 0x0000013A\n\t\"\\x00L\\x03'\\x00\\x00\\x01;\" + // 0x004C0327: 0x0000013B\n\t\"\\x00l\\x03'\\x00\\x00\\x01<\" + // 0x006C0327: 0x0000013C\n\t\"\\x00L\\x03\\f\\x00\\x00\\x01=\" + // 0x004C030C: 0x0000013D\n\t\"\\x00l\\x03\\f\\x00\\x00\\x01>\" + // 0x006C030C: 0x0000013E\n\t\"\\x00N\\x03\\x01\\x00\\x00\\x01C\" + // 0x004E0301: 0x00000143\n\t\"\\x00n\\x03\\x01\\x00\\x00\\x01D\" + // 0x006E0301: 0x00000144\n\t\"\\x00N\\x03'\\x00\\x00\\x01E\" + // 0x004E0327: 0x00000145\n\t\"\\x00n\\x03'\\x00\\x00\\x01F\" + // 0x006E0327: 0x00000146\n\t\"\\x00N\\x03\\f\\x00\\x00\\x01G\" + // 0x004E030C: 0x00000147\n\t\"\\x00n\\x03\\f\\x00\\x00\\x01H\" + // 0x006E030C: 0x00000148\n\t\"\\x00O\\x03\\x04\\x00\\x00\\x01L\" + // 0x004F0304: 0x0000014C\n\t\"\\x00o\\x03\\x04\\x00\\x00\\x01M\" + // 0x006F0304: 0x0000014D\n\t\"\\x00O\\x03\\x06\\x00\\x00\\x01N\" + // 0x004F0306: 0x0000014E\n\t\"\\x00o\\x03\\x06\\x00\\x00\\x01O\" + // 0x006F0306: 0x0000014F\n\t\"\\x00O\\x03\\v\\x00\\x00\\x01P\" + // 0x004F030B: 0x00000150\n\t\"\\x00o\\x03\\v\\x00\\x00\\x01Q\" + // 0x006F030B: 0x00000151\n\t\"\\x00R\\x03\\x01\\x00\\x00\\x01T\" + // 0x00520301: 0x00000154\n\t\"\\x00r\\x03\\x01\\x00\\x00\\x01U\" + // 0x00720301: 0x00000155\n\t\"\\x00R\\x03'\\x00\\x00\\x01V\" + // 0x00520327: 0x00000156\n\t\"\\x00r\\x03'\\x00\\x00\\x01W\" + // 0x00720327: 0x00000157\n\t\"\\x00R\\x03\\f\\x00\\x00\\x01X\" + // 0x0052030C: 0x00000158\n\t\"\\x00r\\x03\\f\\x00\\x00\\x01Y\" + // 0x0072030C: 0x00000159\n\t\"\\x00S\\x03\\x01\\x00\\x00\\x01Z\" + // 0x00530301: 0x0000015A\n\t\"\\x00s\\x03\\x01\\x00\\x00\\x01[\" + // 0x00730301: 0x0000015B\n\t\"\\x00S\\x03\\x02\\x00\\x00\\x01\\\\\" + // 0x00530302: 0x0000015C\n\t\"\\x00s\\x03\\x02\\x00\\x00\\x01]\" + // 0x00730302: 0x0000015D\n\t\"\\x00S\\x03'\\x00\\x00\\x01^\" + // 0x00530327: 0x0000015E\n\t\"\\x00s\\x03'\\x00\\x00\\x01_\" + // 0x00730327: 0x0000015F\n\t\"\\x00S\\x03\\f\\x00\\x00\\x01`\" + // 0x0053030C: 0x00000160\n\t\"\\x00s\\x03\\f\\x00\\x00\\x01a\" + // 0x0073030C: 0x00000161\n\t\"\\x00T\\x03'\\x00\\x00\\x01b\" + // 0x00540327: 0x00000162\n\t\"\\x00t\\x03'\\x00\\x00\\x01c\" + // 0x00740327: 0x00000163\n\t\"\\x00T\\x03\\f\\x00\\x00\\x01d\" + // 0x0054030C: 0x00000164\n\t\"\\x00t\\x03\\f\\x00\\x00\\x01e\" + // 0x0074030C: 0x00000165\n\t\"\\x00U\\x03\\x03\\x00\\x00\\x01h\" + // 0x00550303: 0x00000168\n\t\"\\x00u\\x03\\x03\\x00\\x00\\x01i\" + // 0x00750303: 0x00000169\n\t\"\\x00U\\x03\\x04\\x00\\x00\\x01j\" + // 0x00550304: 0x0000016A\n\t\"\\x00u\\x03\\x04\\x00\\x00\\x01k\" + // 0x00750304: 0x0000016B\n\t\"\\x00U\\x03\\x06\\x00\\x00\\x01l\" + // 0x00550306: 0x0000016C\n\t\"\\x00u\\x03\\x06\\x00\\x00\\x01m\" + // 0x00750306: 0x0000016D\n\t\"\\x00U\\x03\\n\\x00\\x00\\x01n\" + // 0x0055030A: 0x0000016E\n\t\"\\x00u\\x03\\n\\x00\\x00\\x01o\" + // 0x0075030A: 0x0000016F\n\t\"\\x00U\\x03\\v\\x00\\x00\\x01p\" + // 0x0055030B: 0x00000170\n\t\"\\x00u\\x03\\v\\x00\\x00\\x01q\" + // 0x0075030B: 0x00000171\n\t\"\\x00U\\x03(\\x00\\x00\\x01r\" + // 0x00550328: 0x00000172\n\t\"\\x00u\\x03(\\x00\\x00\\x01s\" + // 0x00750328: 0x00000173\n\t\"\\x00W\\x03\\x02\\x00\\x00\\x01t\" + // 0x00570302: 0x00000174\n\t\"\\x00w\\x03\\x02\\x00\\x00\\x01u\" + // 0x00770302: 0x00000175\n\t\"\\x00Y\\x03\\x02\\x00\\x00\\x01v\" + // 0x00590302: 0x00000176\n\t\"\\x00y\\x03\\x02\\x00\\x00\\x01w\" + // 0x00790302: 0x00000177\n\t\"\\x00Y\\x03\\b\\x00\\x00\\x01x\" + // 0x00590308: 0x00000178\n\t\"\\x00Z\\x03\\x01\\x00\\x00\\x01y\" + // 0x005A0301: 0x00000179\n\t\"\\x00z\\x03\\x01\\x00\\x00\\x01z\" + // 0x007A0301: 0x0000017A\n\t\"\\x00Z\\x03\\a\\x00\\x00\\x01{\" + // 0x005A0307: 0x0000017B\n\t\"\\x00z\\x03\\a\\x00\\x00\\x01|\" + // 0x007A0307: 0x0000017C\n\t\"\\x00Z\\x03\\f\\x00\\x00\\x01}\" + // 0x005A030C: 0x0000017D\n\t\"\\x00z\\x03\\f\\x00\\x00\\x01~\" + // 0x007A030C: 0x0000017E\n\t\"\\x00O\\x03\\x1b\\x00\\x00\\x01\\xa0\" + // 0x004F031B: 0x000001A0\n\t\"\\x00o\\x03\\x1b\\x00\\x00\\x01\\xa1\" + // 0x006F031B: 0x000001A1\n\t\"\\x00U\\x03\\x1b\\x00\\x00\\x01\\xaf\" + // 0x0055031B: 0x000001AF\n\t\"\\x00u\\x03\\x1b\\x00\\x00\\x01\\xb0\" + // 0x0075031B: 0x000001B0\n\t\"\\x00A\\x03\\f\\x00\\x00\\x01\\xcd\" + // 0x0041030C: 0x000001CD\n\t\"\\x00a\\x03\\f\\x00\\x00\\x01\\xce\" + // 0x0061030C: 0x000001CE\n\t\"\\x00I\\x03\\f\\x00\\x00\\x01\\xcf\" + // 0x0049030C: 0x000001CF\n\t\"\\x00i\\x03\\f\\x00\\x00\\x01\\xd0\" + // 0x0069030C: 0x000001D0\n\t\"\\x00O\\x03\\f\\x00\\x00\\x01\\xd1\" + // 0x004F030C: 0x000001D1\n\t\"\\x00o\\x03\\f\\x00\\x00\\x01\\xd2\" + // 0x006F030C: 0x000001D2\n\t\"\\x00U\\x03\\f\\x00\\x00\\x01\\xd3\" + // 0x0055030C: 0x000001D3\n\t\"\\x00u\\x03\\f\\x00\\x00\\x01\\xd4\" + // 0x0075030C: 0x000001D4\n\t\"\\x00\\xdc\\x03\\x04\\x00\\x00\\x01\\xd5\" + // 0x00DC0304: 0x000001D5\n\t\"\\x00\\xfc\\x03\\x04\\x00\\x00\\x01\\xd6\" + // 0x00FC0304: 0x000001D6\n\t\"\\x00\\xdc\\x03\\x01\\x00\\x00\\x01\\xd7\" + // 0x00DC0301: 0x000001D7\n\t\"\\x00\\xfc\\x03\\x01\\x00\\x00\\x01\\xd8\" + // 0x00FC0301: 0x000001D8\n\t\"\\x00\\xdc\\x03\\f\\x00\\x00\\x01\\xd9\" + // 0x00DC030C: 0x000001D9\n\t\"\\x00\\xfc\\x03\\f\\x00\\x00\\x01\\xda\" + // 0x00FC030C: 0x000001DA\n\t\"\\x00\\xdc\\x03\\x00\\x00\\x00\\x01\\xdb\" + // 0x00DC0300: 0x000001DB\n\t\"\\x00\\xfc\\x03\\x00\\x00\\x00\\x01\\xdc\" + // 0x00FC0300: 0x000001DC\n\t\"\\x00\\xc4\\x03\\x04\\x00\\x00\\x01\\xde\" + // 0x00C40304: 0x000001DE\n\t\"\\x00\\xe4\\x03\\x04\\x00\\x00\\x01\\xdf\" + // 0x00E40304: 0x000001DF\n\t\"\\x02&\\x03\\x04\\x00\\x00\\x01\\xe0\" + // 0x02260304: 0x000001E0\n\t\"\\x02'\\x03\\x04\\x00\\x00\\x01\\xe1\" + // 0x02270304: 0x000001E1\n\t\"\\x00\\xc6\\x03\\x04\\x00\\x00\\x01\\xe2\" + // 0x00C60304: 0x000001E2\n\t\"\\x00\\xe6\\x03\\x04\\x00\\x00\\x01\\xe3\" + // 0x00E60304: 0x000001E3\n\t\"\\x00G\\x03\\f\\x00\\x00\\x01\\xe6\" + // 0x0047030C: 0x000001E6\n\t\"\\x00g\\x03\\f\\x00\\x00\\x01\\xe7\" + // 0x0067030C: 0x000001E7\n\t\"\\x00K\\x03\\f\\x00\\x00\\x01\\xe8\" + // 0x004B030C: 0x000001E8\n\t\"\\x00k\\x03\\f\\x00\\x00\\x01\\xe9\" + // 0x006B030C: 0x000001E9\n\t\"\\x00O\\x03(\\x00\\x00\\x01\\xea\" + // 0x004F0328: 0x000001EA\n\t\"\\x00o\\x03(\\x00\\x00\\x01\\xeb\" + // 0x006F0328: 0x000001EB\n\t\"\\x01\\xea\\x03\\x04\\x00\\x00\\x01\\xec\" + // 0x01EA0304: 0x000001EC\n\t\"\\x01\\xeb\\x03\\x04\\x00\\x00\\x01\\xed\" + // 0x01EB0304: 0x000001ED\n\t\"\\x01\\xb7\\x03\\f\\x00\\x00\\x01\\xee\" + // 0x01B7030C: 0x000001EE\n\t\"\\x02\\x92\\x03\\f\\x00\\x00\\x01\\xef\" + // 0x0292030C: 0x000001EF\n\t\"\\x00j\\x03\\f\\x00\\x00\\x01\\xf0\" + // 0x006A030C: 0x000001F0\n\t\"\\x00G\\x03\\x01\\x00\\x00\\x01\\xf4\" + // 0x00470301: 0x000001F4\n\t\"\\x00g\\x03\\x01\\x00\\x00\\x01\\xf5\" + // 0x00670301: 0x000001F5\n\t\"\\x00N\\x03\\x00\\x00\\x00\\x01\\xf8\" + // 0x004E0300: 0x000001F8\n\t\"\\x00n\\x03\\x00\\x00\\x00\\x01\\xf9\" + // 0x006E0300: 0x000001F9\n\t\"\\x00\\xc5\\x03\\x01\\x00\\x00\\x01\\xfa\" + // 0x00C50301: 0x000001FA\n\t\"\\x00\\xe5\\x03\\x01\\x00\\x00\\x01\\xfb\" + // 0x00E50301: 0x000001FB\n\t\"\\x00\\xc6\\x03\\x01\\x00\\x00\\x01\\xfc\" + // 0x00C60301: 0x000001FC\n\t\"\\x00\\xe6\\x03\\x01\\x00\\x00\\x01\\xfd\" + // 0x00E60301: 0x000001FD\n\t\"\\x00\\xd8\\x03\\x01\\x00\\x00\\x01\\xfe\" + // 0x00D80301: 0x000001FE\n\t\"\\x00\\xf8\\x03\\x01\\x00\\x00\\x01\\xff\" + // 0x00F80301: 0x000001FF\n\t\"\\x00A\\x03\\x0f\\x00\\x00\\x02\\x00\" + // 0x0041030F: 0x00000200\n\t\"\\x00a\\x03\\x0f\\x00\\x00\\x02\\x01\" + // 0x0061030F: 0x00000201\n\t\"\\x00A\\x03\\x11\\x00\\x00\\x02\\x02\" + // 0x00410311: 0x00000202\n\t\"\\x00a\\x03\\x11\\x00\\x00\\x02\\x03\" + // 0x00610311: 0x00000203\n\t\"\\x00E\\x03\\x0f\\x00\\x00\\x02\\x04\" + // 0x0045030F: 0x00000204\n\t\"\\x00e\\x03\\x0f\\x00\\x00\\x02\\x05\" + // 0x0065030F: 0x00000205\n\t\"\\x00E\\x03\\x11\\x00\\x00\\x02\\x06\" + // 0x00450311: 0x00000206\n\t\"\\x00e\\x03\\x11\\x00\\x00\\x02\\a\" + // 0x00650311: 0x00000207\n\t\"\\x00I\\x03\\x0f\\x00\\x00\\x02\\b\" + // 0x0049030F: 0x00000208\n\t\"\\x00i\\x03\\x0f\\x00\\x00\\x02\\t\" + // 0x0069030F: 0x00000209\n\t\"\\x00I\\x03\\x11\\x00\\x00\\x02\\n\" + // 0x00490311: 0x0000020A\n\t\"\\x00i\\x03\\x11\\x00\\x00\\x02\\v\" + // 0x00690311: 0x0000020B\n\t\"\\x00O\\x03\\x0f\\x00\\x00\\x02\\f\" + // 0x004F030F: 0x0000020C\n\t\"\\x00o\\x03\\x0f\\x00\\x00\\x02\\r\" + // 0x006F030F: 0x0000020D\n\t\"\\x00O\\x03\\x11\\x00\\x00\\x02\\x0e\" + // 0x004F0311: 0x0000020E\n\t\"\\x00o\\x03\\x11\\x00\\x00\\x02\\x0f\" + // 0x006F0311: 0x0000020F\n\t\"\\x00R\\x03\\x0f\\x00\\x00\\x02\\x10\" + // 0x0052030F: 0x00000210\n\t\"\\x00r\\x03\\x0f\\x00\\x00\\x02\\x11\" + // 0x0072030F: 0x00000211\n\t\"\\x00R\\x03\\x11\\x00\\x00\\x02\\x12\" + // 0x00520311: 0x00000212\n\t\"\\x00r\\x03\\x11\\x00\\x00\\x02\\x13\" + // 0x00720311: 0x00000213\n\t\"\\x00U\\x03\\x0f\\x00\\x00\\x02\\x14\" + // 0x0055030F: 0x00000214\n\t\"\\x00u\\x03\\x0f\\x00\\x00\\x02\\x15\" + // 0x0075030F: 0x00000215\n\t\"\\x00U\\x03\\x11\\x00\\x00\\x02\\x16\" + // 0x00550311: 0x00000216\n\t\"\\x00u\\x03\\x11\\x00\\x00\\x02\\x17\" + // 0x00750311: 0x00000217\n\t\"\\x00S\\x03&\\x00\\x00\\x02\\x18\" + // 0x00530326: 0x00000218\n\t\"\\x00s\\x03&\\x00\\x00\\x02\\x19\" + // 0x00730326: 0x00000219\n\t\"\\x00T\\x03&\\x00\\x00\\x02\\x1a\" + // 0x00540326: 0x0000021A\n\t\"\\x00t\\x03&\\x00\\x00\\x02\\x1b\" + // 0x00740326: 0x0000021B\n\t\"\\x00H\\x03\\f\\x00\\x00\\x02\\x1e\" + // 0x0048030C: 0x0000021E\n\t\"\\x00h\\x03\\f\\x00\\x00\\x02\\x1f\" + // 0x0068030C: 0x0000021F\n\t\"\\x00A\\x03\\a\\x00\\x00\\x02&\" + // 0x00410307: 0x00000226\n\t\"\\x00a\\x03\\a\\x00\\x00\\x02'\" + // 0x00610307: 0x00000227\n\t\"\\x00E\\x03'\\x00\\x00\\x02(\" + // 0x00450327: 0x00000228\n\t\"\\x00e\\x03'\\x00\\x00\\x02)\" + // 0x00650327: 0x00000229\n\t\"\\x00\\xd6\\x03\\x04\\x00\\x00\\x02*\" + // 0x00D60304: 0x0000022A\n\t\"\\x00\\xf6\\x03\\x04\\x00\\x00\\x02+\" + // 0x00F60304: 0x0000022B\n\t\"\\x00\\xd5\\x03\\x04\\x00\\x00\\x02,\" + // 0x00D50304: 0x0000022C\n\t\"\\x00\\xf5\\x03\\x04\\x00\\x00\\x02-\" + // 0x00F50304: 0x0000022D\n\t\"\\x00O\\x03\\a\\x00\\x00\\x02.\" + // 0x004F0307: 0x0000022E\n\t\"\\x00o\\x03\\a\\x00\\x00\\x02/\" + // 0x006F0307: 0x0000022F\n\t\"\\x02.\\x03\\x04\\x00\\x00\\x020\" + // 0x022E0304: 0x00000230\n\t\"\\x02/\\x03\\x04\\x00\\x00\\x021\" + // 0x022F0304: 0x00000231\n\t\"\\x00Y\\x03\\x04\\x00\\x00\\x022\" + // 0x00590304: 0x00000232\n\t\"\\x00y\\x03\\x04\\x00\\x00\\x023\" + // 0x00790304: 0x00000233\n\t\"\\x00\\xa8\\x03\\x01\\x00\\x00\\x03\\x85\" + // 0x00A80301: 0x00000385\n\t\"\\x03\\x91\\x03\\x01\\x00\\x00\\x03\\x86\" + // 0x03910301: 0x00000386\n\t\"\\x03\\x95\\x03\\x01\\x00\\x00\\x03\\x88\" + // 0x03950301: 0x00000388\n\t\"\\x03\\x97\\x03\\x01\\x00\\x00\\x03\\x89\" + // 0x03970301: 0x00000389\n\t\"\\x03\\x99\\x03\\x01\\x00\\x00\\x03\\x8a\" + // 0x03990301: 0x0000038A\n\t\"\\x03\\x9f\\x03\\x01\\x00\\x00\\x03\\x8c\" + // 0x039F0301: 0x0000038C\n\t\"\\x03\\xa5\\x03\\x01\\x00\\x00\\x03\\x8e\" + // 0x03A50301: 0x0000038E\n\t\"\\x03\\xa9\\x03\\x01\\x00\\x00\\x03\\x8f\" + // 0x03A90301: 0x0000038F\n\t\"\\x03\\xca\\x03\\x01\\x00\\x00\\x03\\x90\" + // 0x03CA0301: 0x00000390\n\t\"\\x03\\x99\\x03\\b\\x00\\x00\\x03\\xaa\" + // 0x03990308: 0x000003AA\n\t\"\\x03\\xa5\\x03\\b\\x00\\x00\\x03\\xab\" + // 0x03A50308: 0x000003AB\n\t\"\\x03\\xb1\\x03\\x01\\x00\\x00\\x03\\xac\" + // 0x03B10301: 0x000003AC\n\t\"\\x03\\xb5\\x03\\x01\\x00\\x00\\x03\\xad\" + // 0x03B50301: 0x000003AD\n\t\"\\x03\\xb7\\x03\\x01\\x00\\x00\\x03\\xae\" + // 0x03B70301: 0x000003AE\n\t\"\\x03\\xb9\\x03\\x01\\x00\\x00\\x03\\xaf\" + // 0x03B90301: 0x000003AF\n\t\"\\x03\\xcb\\x03\\x01\\x00\\x00\\x03\\xb0\" + // 0x03CB0301: 0x000003B0\n\t\"\\x03\\xb9\\x03\\b\\x00\\x00\\x03\\xca\" + // 0x03B90308: 0x000003CA\n\t\"\\x03\\xc5\\x03\\b\\x00\\x00\\x03\\xcb\" + // 0x03C50308: 0x000003CB\n\t\"\\x03\\xbf\\x03\\x01\\x00\\x00\\x03\\xcc\" + // 0x03BF0301: 0x000003CC\n\t\"\\x03\\xc5\\x03\\x01\\x00\\x00\\x03\\xcd\" + // 0x03C50301: 0x000003CD\n\t\"\\x03\\xc9\\x03\\x01\\x00\\x00\\x03\\xce\" + // 0x03C90301: 0x000003CE\n\t\"\\x03\\xd2\\x03\\x01\\x00\\x00\\x03\\xd3\" + // 0x03D20301: 0x000003D3\n\t\"\\x03\\xd2\\x03\\b\\x00\\x00\\x03\\xd4\" + // 0x03D20308: 0x000003D4\n\t\"\\x04\\x15\\x03\\x00\\x00\\x00\\x04\\x00\" + // 0x04150300: 0x00000400\n\t\"\\x04\\x15\\x03\\b\\x00\\x00\\x04\\x01\" + // 0x04150308: 0x00000401\n\t\"\\x04\\x13\\x03\\x01\\x00\\x00\\x04\\x03\" + // 0x04130301: 0x00000403\n\t\"\\x04\\x06\\x03\\b\\x00\\x00\\x04\\a\" + // 0x04060308: 0x00000407\n\t\"\\x04\\x1a\\x03\\x01\\x00\\x00\\x04\\f\" + // 0x041A0301: 0x0000040C\n\t\"\\x04\\x18\\x03\\x00\\x00\\x00\\x04\\r\" + // 0x04180300: 0x0000040D\n\t\"\\x04#\\x03\\x06\\x00\\x00\\x04\\x0e\" + // 0x04230306: 0x0000040E\n\t\"\\x04\\x18\\x03\\x06\\x00\\x00\\x04\\x19\" + // 0x04180306: 0x00000419\n\t\"\\x048\\x03\\x06\\x00\\x00\\x049\" + // 0x04380306: 0x00000439\n\t\"\\x045\\x03\\x00\\x00\\x00\\x04P\" + // 0x04350300: 0x00000450\n\t\"\\x045\\x03\\b\\x00\\x00\\x04Q\" + // 0x04350308: 0x00000451\n\t\"\\x043\\x03\\x01\\x00\\x00\\x04S\" + // 0x04330301: 0x00000453\n\t\"\\x04V\\x03\\b\\x00\\x00\\x04W\" + // 0x04560308: 0x00000457\n\t\"\\x04:\\x03\\x01\\x00\\x00\\x04\\\\\" + // 0x043A0301: 0x0000045C\n\t\"\\x048\\x03\\x00\\x00\\x00\\x04]\" + // 0x04380300: 0x0000045D\n\t\"\\x04C\\x03\\x06\\x00\\x00\\x04^\" + // 0x04430306: 0x0000045E\n\t\"\\x04t\\x03\\x0f\\x00\\x00\\x04v\" + // 0x0474030F: 0x00000476\n\t\"\\x04u\\x03\\x0f\\x00\\x00\\x04w\" + // 0x0475030F: 0x00000477\n\t\"\\x04\\x16\\x03\\x06\\x00\\x00\\x04\\xc1\" + // 0x04160306: 0x000004C1\n\t\"\\x046\\x03\\x06\\x00\\x00\\x04\\xc2\" + // 0x04360306: 0x000004C2\n\t\"\\x04\\x10\\x03\\x06\\x00\\x00\\x04\\xd0\" + // 0x04100306: 0x000004D0\n\t\"\\x040\\x03\\x06\\x00\\x00\\x04\\xd1\" + // 0x04300306: 0x000004D1\n\t\"\\x04\\x10\\x03\\b\\x00\\x00\\x04\\xd2\" + // 0x04100308: 0x000004D2\n\t\"\\x040\\x03\\b\\x00\\x00\\x04\\xd3\" + // 0x04300308: 0x000004D3\n\t\"\\x04\\x15\\x03\\x06\\x00\\x00\\x04\\xd6\" + // 0x04150306: 0x000004D6\n\t\"\\x045\\x03\\x06\\x00\\x00\\x04\\xd7\" + // 0x04350306: 0x000004D7\n\t\"\\x04\\xd8\\x03\\b\\x00\\x00\\x04\\xda\" + // 0x04D80308: 0x000004DA\n\t\"\\x04\\xd9\\x03\\b\\x00\\x00\\x04\\xdb\" + // 0x04D90308: 0x000004DB\n\t\"\\x04\\x16\\x03\\b\\x00\\x00\\x04\\xdc\" + // 0x04160308: 0x000004DC\n\t\"\\x046\\x03\\b\\x00\\x00\\x04\\xdd\" + // 0x04360308: 0x000004DD\n\t\"\\x04\\x17\\x03\\b\\x00\\x00\\x04\\xde\" + // 0x04170308: 0x000004DE\n\t\"\\x047\\x03\\b\\x00\\x00\\x04\\xdf\" + // 0x04370308: 0x000004DF\n\t\"\\x04\\x18\\x03\\x04\\x00\\x00\\x04\\xe2\" + // 0x04180304: 0x000004E2\n\t\"\\x048\\x03\\x04\\x00\\x00\\x04\\xe3\" + // 0x04380304: 0x000004E3\n\t\"\\x04\\x18\\x03\\b\\x00\\x00\\x04\\xe4\" + // 0x04180308: 0x000004E4\n\t\"\\x048\\x03\\b\\x00\\x00\\x04\\xe5\" + // 0x04380308: 0x000004E5\n\t\"\\x04\\x1e\\x03\\b\\x00\\x00\\x04\\xe6\" + // 0x041E0308: 0x000004E6\n\t\"\\x04>\\x03\\b\\x00\\x00\\x04\\xe7\" + // 0x043E0308: 0x000004E7\n\t\"\\x04\\xe8\\x03\\b\\x00\\x00\\x04\\xea\" + // 0x04E80308: 0x000004EA\n\t\"\\x04\\xe9\\x03\\b\\x00\\x00\\x04\\xeb\" + // 0x04E90308: 0x000004EB\n\t\"\\x04-\\x03\\b\\x00\\x00\\x04\\xec\" + // 0x042D0308: 0x000004EC\n\t\"\\x04M\\x03\\b\\x00\\x00\\x04\\xed\" + // 0x044D0308: 0x000004ED\n\t\"\\x04#\\x03\\x04\\x00\\x00\\x04\\xee\" + // 0x04230304: 0x000004EE\n\t\"\\x04C\\x03\\x04\\x00\\x00\\x04\\xef\" + // 0x04430304: 0x000004EF\n\t\"\\x04#\\x03\\b\\x00\\x00\\x04\\xf0\" + // 0x04230308: 0x000004F0\n\t\"\\x04C\\x03\\b\\x00\\x00\\x04\\xf1\" + // 0x04430308: 0x000004F1\n\t\"\\x04#\\x03\\v\\x00\\x00\\x04\\xf2\" + // 0x0423030B: 0x000004F2\n\t\"\\x04C\\x03\\v\\x00\\x00\\x04\\xf3\" + // 0x0443030B: 0x000004F3\n\t\"\\x04'\\x03\\b\\x00\\x00\\x04\\xf4\" + // 0x04270308: 0x000004F4\n\t\"\\x04G\\x03\\b\\x00\\x00\\x04\\xf5\" + // 0x04470308: 0x000004F5\n\t\"\\x04+\\x03\\b\\x00\\x00\\x04\\xf8\" + // 0x042B0308: 0x000004F8\n\t\"\\x04K\\x03\\b\\x00\\x00\\x04\\xf9\" + // 0x044B0308: 0x000004F9\n\t\"\\x06'\\x06S\\x00\\x00\\x06\\\"\" + // 0x06270653: 0x00000622\n\t\"\\x06'\\x06T\\x00\\x00\\x06#\" + // 0x06270654: 0x00000623\n\t\"\\x06H\\x06T\\x00\\x00\\x06$\" + // 0x06480654: 0x00000624\n\t\"\\x06'\\x06U\\x00\\x00\\x06%\" + // 0x06270655: 0x00000625\n\t\"\\x06J\\x06T\\x00\\x00\\x06&\" + // 0x064A0654: 0x00000626\n\t\"\\x06\\xd5\\x06T\\x00\\x00\\x06\\xc0\" + // 0x06D50654: 0x000006C0\n\t\"\\x06\\xc1\\x06T\\x00\\x00\\x06\\xc2\" + // 0x06C10654: 0x000006C2\n\t\"\\x06\\xd2\\x06T\\x00\\x00\\x06\\xd3\" + // 0x06D20654: 0x000006D3\n\t\"\\t(\\t<\\x00\\x00\\t)\" + // 0x0928093C: 0x00000929\n\t\"\\t0\\t<\\x00\\x00\\t1\" + // 0x0930093C: 0x00000931\n\t\"\\t3\\t<\\x00\\x00\\t4\" + // 0x0933093C: 0x00000934\n\t\"\\t\\xc7\\t\\xbe\\x00\\x00\\t\\xcb\" + // 0x09C709BE: 0x000009CB\n\t\"\\t\\xc7\\t\\xd7\\x00\\x00\\t\\xcc\" + // 0x09C709D7: 0x000009CC\n\t\"\\vG\\vV\\x00\\x00\\vH\" + // 0x0B470B56: 0x00000B48\n\t\"\\vG\\v>\\x00\\x00\\vK\" + // 0x0B470B3E: 0x00000B4B\n\t\"\\vG\\vW\\x00\\x00\\vL\" + // 0x0B470B57: 0x00000B4C\n\t\"\\v\\x92\\v\\xd7\\x00\\x00\\v\\x94\" + // 0x0B920BD7: 0x00000B94\n\t\"\\v\\xc6\\v\\xbe\\x00\\x00\\v\\xca\" + // 0x0BC60BBE: 0x00000BCA\n\t\"\\v\\xc7\\v\\xbe\\x00\\x00\\v\\xcb\" + // 0x0BC70BBE: 0x00000BCB\n\t\"\\v\\xc6\\v\\xd7\\x00\\x00\\v\\xcc\" + // 0x0BC60BD7: 0x00000BCC\n\t\"\\fF\\fV\\x00\\x00\\fH\" + // 0x0C460C56: 0x00000C48\n\t\"\\f\\xbf\\f\\xd5\\x00\\x00\\f\\xc0\" + // 0x0CBF0CD5: 0x00000CC0\n\t\"\\f\\xc6\\f\\xd5\\x00\\x00\\f\\xc7\" + // 0x0CC60CD5: 0x00000CC7\n\t\"\\f\\xc6\\f\\xd6\\x00\\x00\\f\\xc8\" + // 0x0CC60CD6: 0x00000CC8\n\t\"\\f\\xc6\\f\\xc2\\x00\\x00\\f\\xca\" + // 0x0CC60CC2: 0x00000CCA\n\t\"\\f\\xca\\f\\xd5\\x00\\x00\\f\\xcb\" + // 0x0CCA0CD5: 0x00000CCB\n\t\"\\rF\\r>\\x00\\x00\\rJ\" + // 0x0D460D3E: 0x00000D4A\n\t\"\\rG\\r>\\x00\\x00\\rK\" + // 0x0D470D3E: 0x00000D4B\n\t\"\\rF\\rW\\x00\\x00\\rL\" + // 0x0D460D57: 0x00000D4C\n\t\"\\r\\xd9\\r\\xca\\x00\\x00\\r\\xda\" + // 0x0DD90DCA: 0x00000DDA\n\t\"\\r\\xd9\\r\\xcf\\x00\\x00\\r\\xdc\" + // 0x0DD90DCF: 0x00000DDC\n\t\"\\r\\xdc\\r\\xca\\x00\\x00\\r\\xdd\" + // 0x0DDC0DCA: 0x00000DDD\n\t\"\\r\\xd9\\r\\xdf\\x00\\x00\\r\\xde\" + // 0x0DD90DDF: 0x00000DDE\n\t\"\\x10%\\x10.\\x00\\x00\\x10&\" + // 0x1025102E: 0x00001026\n\t\"\\x1b\\x05\\x1b5\\x00\\x00\\x1b\\x06\" + // 0x1B051B35: 0x00001B06\n\t\"\\x1b\\a\\x1b5\\x00\\x00\\x1b\\b\" + // 0x1B071B35: 0x00001B08\n\t\"\\x1b\\t\\x1b5\\x00\\x00\\x1b\\n\" + // 0x1B091B35: 0x00001B0A\n\t\"\\x1b\\v\\x1b5\\x00\\x00\\x1b\\f\" + // 0x1B0B1B35: 0x00001B0C\n\t\"\\x1b\\r\\x1b5\\x00\\x00\\x1b\\x0e\" + // 0x1B0D1B35: 0x00001B0E\n\t\"\\x1b\\x11\\x1b5\\x00\\x00\\x1b\\x12\" + // 0x1B111B35: 0x00001B12\n\t\"\\x1b:\\x1b5\\x00\\x00\\x1b;\" + // 0x1B3A1B35: 0x00001B3B\n\t\"\\x1b<\\x1b5\\x00\\x00\\x1b=\" + // 0x1B3C1B35: 0x00001B3D\n\t\"\\x1b>\\x1b5\\x00\\x00\\x1b@\" + // 0x1B3E1B35: 0x00001B40\n\t\"\\x1b?\\x1b5\\x00\\x00\\x1bA\" + // 0x1B3F1B35: 0x00001B41\n\t\"\\x1bB\\x1b5\\x00\\x00\\x1bC\" + // 0x1B421B35: 0x00001B43\n\t\"\\x00A\\x03%\\x00\\x00\\x1e\\x00\" + // 0x00410325: 0x00001E00\n\t\"\\x00a\\x03%\\x00\\x00\\x1e\\x01\" + // 0x00610325: 0x00001E01\n\t\"\\x00B\\x03\\a\\x00\\x00\\x1e\\x02\" + // 0x00420307: 0x00001E02\n\t\"\\x00b\\x03\\a\\x00\\x00\\x1e\\x03\" + // 0x00620307: 0x00001E03\n\t\"\\x00B\\x03#\\x00\\x00\\x1e\\x04\" + // 0x00420323: 0x00001E04\n\t\"\\x00b\\x03#\\x00\\x00\\x1e\\x05\" + // 0x00620323: 0x00001E05\n\t\"\\x00B\\x031\\x00\\x00\\x1e\\x06\" + // 0x00420331: 0x00001E06\n\t\"\\x00b\\x031\\x00\\x00\\x1e\\a\" + // 0x00620331: 0x00001E07\n\t\"\\x00\\xc7\\x03\\x01\\x00\\x00\\x1e\\b\" + // 0x00C70301: 0x00001E08\n\t\"\\x00\\xe7\\x03\\x01\\x00\\x00\\x1e\\t\" + // 0x00E70301: 0x00001E09\n\t\"\\x00D\\x03\\a\\x00\\x00\\x1e\\n\" + // 0x00440307: 0x00001E0A\n\t\"\\x00d\\x03\\a\\x00\\x00\\x1e\\v\" + // 0x00640307: 0x00001E0B\n\t\"\\x00D\\x03#\\x00\\x00\\x1e\\f\" + // 0x00440323: 0x00001E0C\n\t\"\\x00d\\x03#\\x00\\x00\\x1e\\r\" + // 0x00640323: 0x00001E0D\n\t\"\\x00D\\x031\\x00\\x00\\x1e\\x0e\" + // 0x00440331: 0x00001E0E\n\t\"\\x00d\\x031\\x00\\x00\\x1e\\x0f\" + // 0x00640331: 0x00001E0F\n\t\"\\x00D\\x03'\\x00\\x00\\x1e\\x10\" + // 0x00440327: 0x00001E10\n\t\"\\x00d\\x03'\\x00\\x00\\x1e\\x11\" + // 0x00640327: 0x00001E11\n\t\"\\x00D\\x03-\\x00\\x00\\x1e\\x12\" + // 0x0044032D: 0x00001E12\n\t\"\\x00d\\x03-\\x00\\x00\\x1e\\x13\" + // 0x0064032D: 0x00001E13\n\t\"\\x01\\x12\\x03\\x00\\x00\\x00\\x1e\\x14\" + // 0x01120300: 0x00001E14\n\t\"\\x01\\x13\\x03\\x00\\x00\\x00\\x1e\\x15\" + // 0x01130300: 0x00001E15\n\t\"\\x01\\x12\\x03\\x01\\x00\\x00\\x1e\\x16\" + // 0x01120301: 0x00001E16\n\t\"\\x01\\x13\\x03\\x01\\x00\\x00\\x1e\\x17\" + // 0x01130301: 0x00001E17\n\t\"\\x00E\\x03-\\x00\\x00\\x1e\\x18\" + // 0x0045032D: 0x00001E18\n\t\"\\x00e\\x03-\\x00\\x00\\x1e\\x19\" + // 0x0065032D: 0x00001E19\n\t\"\\x00E\\x030\\x00\\x00\\x1e\\x1a\" + // 0x00450330: 0x00001E1A\n\t\"\\x00e\\x030\\x00\\x00\\x1e\\x1b\" + // 0x00650330: 0x00001E1B\n\t\"\\x02(\\x03\\x06\\x00\\x00\\x1e\\x1c\" + // 0x02280306: 0x00001E1C\n\t\"\\x02)\\x03\\x06\\x00\\x00\\x1e\\x1d\" + // 0x02290306: 0x00001E1D\n\t\"\\x00F\\x03\\a\\x00\\x00\\x1e\\x1e\" + // 0x00460307: 0x00001E1E\n\t\"\\x00f\\x03\\a\\x00\\x00\\x1e\\x1f\" + // 0x00660307: 0x00001E1F\n\t\"\\x00G\\x03\\x04\\x00\\x00\\x1e \" + // 0x00470304: 0x00001E20\n\t\"\\x00g\\x03\\x04\\x00\\x00\\x1e!\" + // 0x00670304: 0x00001E21\n\t\"\\x00H\\x03\\a\\x00\\x00\\x1e\\\"\" + // 0x00480307: 0x00001E22\n\t\"\\x00h\\x03\\a\\x00\\x00\\x1e#\" + // 0x00680307: 0x00001E23\n\t\"\\x00H\\x03#\\x00\\x00\\x1e$\" + // 0x00480323: 0x00001E24\n\t\"\\x00h\\x03#\\x00\\x00\\x1e%\" + // 0x00680323: 0x00001E25\n\t\"\\x00H\\x03\\b\\x00\\x00\\x1e&\" + // 0x00480308: 0x00001E26\n\t\"\\x00h\\x03\\b\\x00\\x00\\x1e'\" + // 0x00680308: 0x00001E27\n\t\"\\x00H\\x03'\\x00\\x00\\x1e(\" + // 0x00480327: 0x00001E28\n\t\"\\x00h\\x03'\\x00\\x00\\x1e)\" + // 0x00680327: 0x00001E29\n\t\"\\x00H\\x03.\\x00\\x00\\x1e*\" + // 0x0048032E: 0x00001E2A\n\t\"\\x00h\\x03.\\x00\\x00\\x1e+\" + // 0x0068032E: 0x00001E2B\n\t\"\\x00I\\x030\\x00\\x00\\x1e,\" + // 0x00490330: 0x00001E2C\n\t\"\\x00i\\x030\\x00\\x00\\x1e-\" + // 0x00690330: 0x00001E2D\n\t\"\\x00\\xcf\\x03\\x01\\x00\\x00\\x1e.\" + // 0x00CF0301: 0x00001E2E\n\t\"\\x00\\xef\\x03\\x01\\x00\\x00\\x1e/\" + // 0x00EF0301: 0x00001E2F\n\t\"\\x00K\\x03\\x01\\x00\\x00\\x1e0\" + // 0x004B0301: 0x00001E30\n\t\"\\x00k\\x03\\x01\\x00\\x00\\x1e1\" + // 0x006B0301: 0x00001E31\n\t\"\\x00K\\x03#\\x00\\x00\\x1e2\" + // 0x004B0323: 0x00001E32\n\t\"\\x00k\\x03#\\x00\\x00\\x1e3\" + // 0x006B0323: 0x00001E33\n\t\"\\x00K\\x031\\x00\\x00\\x1e4\" + // 0x004B0331: 0x00001E34\n\t\"\\x00k\\x031\\x00\\x00\\x1e5\" + // 0x006B0331: 0x00001E35\n\t\"\\x00L\\x03#\\x00\\x00\\x1e6\" + // 0x004C0323: 0x00001E36\n\t\"\\x00l\\x03#\\x00\\x00\\x1e7\" + // 0x006C0323: 0x00001E37\n\t\"\\x1e6\\x03\\x04\\x00\\x00\\x1e8\" + // 0x1E360304: 0x00001E38\n\t\"\\x1e7\\x03\\x04\\x00\\x00\\x1e9\" + // 0x1E370304: 0x00001E39\n\t\"\\x00L\\x031\\x00\\x00\\x1e:\" + // 0x004C0331: 0x00001E3A\n\t\"\\x00l\\x031\\x00\\x00\\x1e;\" + // 0x006C0331: 0x00001E3B\n\t\"\\x00L\\x03-\\x00\\x00\\x1e<\" + // 0x004C032D: 0x00001E3C\n\t\"\\x00l\\x03-\\x00\\x00\\x1e=\" + // 0x006C032D: 0x00001E3D\n\t\"\\x00M\\x03\\x01\\x00\\x00\\x1e>\" + // 0x004D0301: 0x00001E3E\n\t\"\\x00m\\x03\\x01\\x00\\x00\\x1e?\" + // 0x006D0301: 0x00001E3F\n\t\"\\x00M\\x03\\a\\x00\\x00\\x1e@\" + // 0x004D0307: 0x00001E40\n\t\"\\x00m\\x03\\a\\x00\\x00\\x1eA\" + // 0x006D0307: 0x00001E41\n\t\"\\x00M\\x03#\\x00\\x00\\x1eB\" + // 0x004D0323: 0x00001E42\n\t\"\\x00m\\x03#\\x00\\x00\\x1eC\" + // 0x006D0323: 0x00001E43\n\t\"\\x00N\\x03\\a\\x00\\x00\\x1eD\" + // 0x004E0307: 0x00001E44\n\t\"\\x00n\\x03\\a\\x00\\x00\\x1eE\" + // 0x006E0307: 0x00001E45\n\t\"\\x00N\\x03#\\x00\\x00\\x1eF\" + // 0x004E0323: 0x00001E46\n\t\"\\x00n\\x03#\\x00\\x00\\x1eG\" + // 0x006E0323: 0x00001E47\n\t\"\\x00N\\x031\\x00\\x00\\x1eH\" + // 0x004E0331: 0x00001E48\n\t\"\\x00n\\x031\\x00\\x00\\x1eI\" + // 0x006E0331: 0x00001E49\n\t\"\\x00N\\x03-\\x00\\x00\\x1eJ\" + // 0x004E032D: 0x00001E4A\n\t\"\\x00n\\x03-\\x00\\x00\\x1eK\" + // 0x006E032D: 0x00001E4B\n\t\"\\x00\\xd5\\x03\\x01\\x00\\x00\\x1eL\" + // 0x00D50301: 0x00001E4C\n\t\"\\x00\\xf5\\x03\\x01\\x00\\x00\\x1eM\" + // 0x00F50301: 0x00001E4D\n\t\"\\x00\\xd5\\x03\\b\\x00\\x00\\x1eN\" + // 0x00D50308: 0x00001E4E\n\t\"\\x00\\xf5\\x03\\b\\x00\\x00\\x1eO\" + // 0x00F50308: 0x00001E4F\n\t\"\\x01L\\x03\\x00\\x00\\x00\\x1eP\" + // 0x014C0300: 0x00001E50\n\t\"\\x01M\\x03\\x00\\x00\\x00\\x1eQ\" + // 0x014D0300: 0x00001E51\n\t\"\\x01L\\x03\\x01\\x00\\x00\\x1eR\" + // 0x014C0301: 0x00001E52\n\t\"\\x01M\\x03\\x01\\x00\\x00\\x1eS\" + // 0x014D0301: 0x00001E53\n\t\"\\x00P\\x03\\x01\\x00\\x00\\x1eT\" + // 0x00500301: 0x00001E54\n\t\"\\x00p\\x03\\x01\\x00\\x00\\x1eU\" + // 0x00700301: 0x00001E55\n\t\"\\x00P\\x03\\a\\x00\\x00\\x1eV\" + // 0x00500307: 0x00001E56\n\t\"\\x00p\\x03\\a\\x00\\x00\\x1eW\" + // 0x00700307: 0x00001E57\n\t\"\\x00R\\x03\\a\\x00\\x00\\x1eX\" + // 0x00520307: 0x00001E58\n\t\"\\x00r\\x03\\a\\x00\\x00\\x1eY\" + // 0x00720307: 0x00001E59\n\t\"\\x00R\\x03#\\x00\\x00\\x1eZ\" + // 0x00520323: 0x00001E5A\n\t\"\\x00r\\x03#\\x00\\x00\\x1e[\" + // 0x00720323: 0x00001E5B\n\t\"\\x1eZ\\x03\\x04\\x00\\x00\\x1e\\\\\" + // 0x1E5A0304: 0x00001E5C\n\t\"\\x1e[\\x03\\x04\\x00\\x00\\x1e]\" + // 0x1E5B0304: 0x00001E5D\n\t\"\\x00R\\x031\\x00\\x00\\x1e^\" + // 0x00520331: 0x00001E5E\n\t\"\\x00r\\x031\\x00\\x00\\x1e_\" + // 0x00720331: 0x00001E5F\n\t\"\\x00S\\x03\\a\\x00\\x00\\x1e`\" + // 0x00530307: 0x00001E60\n\t\"\\x00s\\x03\\a\\x00\\x00\\x1ea\" + // 0x00730307: 0x00001E61\n\t\"\\x00S\\x03#\\x00\\x00\\x1eb\" + // 0x00530323: 0x00001E62\n\t\"\\x00s\\x03#\\x00\\x00\\x1ec\" + // 0x00730323: 0x00001E63\n\t\"\\x01Z\\x03\\a\\x00\\x00\\x1ed\" + // 0x015A0307: 0x00001E64\n\t\"\\x01[\\x03\\a\\x00\\x00\\x1ee\" + // 0x015B0307: 0x00001E65\n\t\"\\x01`\\x03\\a\\x00\\x00\\x1ef\" + // 0x01600307: 0x00001E66\n\t\"\\x01a\\x03\\a\\x00\\x00\\x1eg\" + // 0x01610307: 0x00001E67\n\t\"\\x1eb\\x03\\a\\x00\\x00\\x1eh\" + // 0x1E620307: 0x00001E68\n\t\"\\x1ec\\x03\\a\\x00\\x00\\x1ei\" + // 0x1E630307: 0x00001E69\n\t\"\\x00T\\x03\\a\\x00\\x00\\x1ej\" + // 0x00540307: 0x00001E6A\n\t\"\\x00t\\x03\\a\\x00\\x00\\x1ek\" + // 0x00740307: 0x00001E6B\n\t\"\\x00T\\x03#\\x00\\x00\\x1el\" + // 0x00540323: 0x00001E6C\n\t\"\\x00t\\x03#\\x00\\x00\\x1em\" + // 0x00740323: 0x00001E6D\n\t\"\\x00T\\x031\\x00\\x00\\x1en\" + // 0x00540331: 0x00001E6E\n\t\"\\x00t\\x031\\x00\\x00\\x1eo\" + // 0x00740331: 0x00001E6F\n\t\"\\x00T\\x03-\\x00\\x00\\x1ep\" + // 0x0054032D: 0x00001E70\n\t\"\\x00t\\x03-\\x00\\x00\\x1eq\" + // 0x0074032D: 0x00001E71\n\t\"\\x00U\\x03$\\x00\\x00\\x1er\" + // 0x00550324: 0x00001E72\n\t\"\\x00u\\x03$\\x00\\x00\\x1es\" + // 0x00750324: 0x00001E73\n\t\"\\x00U\\x030\\x00\\x00\\x1et\" + // 0x00550330: 0x00001E74\n\t\"\\x00u\\x030\\x00\\x00\\x1eu\" + // 0x00750330: 0x00001E75\n\t\"\\x00U\\x03-\\x00\\x00\\x1ev\" + // 0x0055032D: 0x00001E76\n\t\"\\x00u\\x03-\\x00\\x00\\x1ew\" + // 0x0075032D: 0x00001E77\n\t\"\\x01h\\x03\\x01\\x00\\x00\\x1ex\" + // 0x01680301: 0x00001E78\n\t\"\\x01i\\x03\\x01\\x00\\x00\\x1ey\" + // 0x01690301: 0x00001E79\n\t\"\\x01j\\x03\\b\\x00\\x00\\x1ez\" + // 0x016A0308: 0x00001E7A\n\t\"\\x01k\\x03\\b\\x00\\x00\\x1e{\" + // 0x016B0308: 0x00001E7B\n\t\"\\x00V\\x03\\x03\\x00\\x00\\x1e|\" + // 0x00560303: 0x00001E7C\n\t\"\\x00v\\x03\\x03\\x00\\x00\\x1e}\" + // 0x00760303: 0x00001E7D\n\t\"\\x00V\\x03#\\x00\\x00\\x1e~\" + // 0x00560323: 0x00001E7E\n\t\"\\x00v\\x03#\\x00\\x00\\x1e\\u007f\" + // 0x00760323: 0x00001E7F\n\t\"\\x00W\\x03\\x00\\x00\\x00\\x1e\\x80\" + // 0x00570300: 0x00001E80\n\t\"\\x00w\\x03\\x00\\x00\\x00\\x1e\\x81\" + // 0x00770300: 0x00001E81\n\t\"\\x00W\\x03\\x01\\x00\\x00\\x1e\\x82\" + // 0x00570301: 0x00001E82\n\t\"\\x00w\\x03\\x01\\x00\\x00\\x1e\\x83\" + // 0x00770301: 0x00001E83\n\t\"\\x00W\\x03\\b\\x00\\x00\\x1e\\x84\" + // 0x00570308: 0x00001E84\n\t\"\\x00w\\x03\\b\\x00\\x00\\x1e\\x85\" + // 0x00770308: 0x00001E85\n\t\"\\x00W\\x03\\a\\x00\\x00\\x1e\\x86\" + // 0x00570307: 0x00001E86\n\t\"\\x00w\\x03\\a\\x00\\x00\\x1e\\x87\" + // 0x00770307: 0x00001E87\n\t\"\\x00W\\x03#\\x00\\x00\\x1e\\x88\" + // 0x00570323: 0x00001E88\n\t\"\\x00w\\x03#\\x00\\x00\\x1e\\x89\" + // 0x00770323: 0x00001E89\n\t\"\\x00X\\x03\\a\\x00\\x00\\x1e\\x8a\" + // 0x00580307: 0x00001E8A\n\t\"\\x00x\\x03\\a\\x00\\x00\\x1e\\x8b\" + // 0x00780307: 0x00001E8B\n\t\"\\x00X\\x03\\b\\x00\\x00\\x1e\\x8c\" + // 0x00580308: 0x00001E8C\n\t\"\\x00x\\x03\\b\\x00\\x00\\x1e\\x8d\" + // 0x00780308: 0x00001E8D\n\t\"\\x00Y\\x03\\a\\x00\\x00\\x1e\\x8e\" + // 0x00590307: 0x00001E8E\n\t\"\\x00y\\x03\\a\\x00\\x00\\x1e\\x8f\" + // 0x00790307: 0x00001E8F\n\t\"\\x00Z\\x03\\x02\\x00\\x00\\x1e\\x90\" + // 0x005A0302: 0x00001E90\n\t\"\\x00z\\x03\\x02\\x00\\x00\\x1e\\x91\" + // 0x007A0302: 0x00001E91\n\t\"\\x00Z\\x03#\\x00\\x00\\x1e\\x92\" + // 0x005A0323: 0x00001E92\n\t\"\\x00z\\x03#\\x00\\x00\\x1e\\x93\" + // 0x007A0323: 0x00001E93\n\t\"\\x00Z\\x031\\x00\\x00\\x1e\\x94\" + // 0x005A0331: 0x00001E94\n\t\"\\x00z\\x031\\x00\\x00\\x1e\\x95\" + // 0x007A0331: 0x00001E95\n\t\"\\x00h\\x031\\x00\\x00\\x1e\\x96\" + // 0x00680331: 0x00001E96\n\t\"\\x00t\\x03\\b\\x00\\x00\\x1e\\x97\" + // 0x00740308: 0x00001E97\n\t\"\\x00w\\x03\\n\\x00\\x00\\x1e\\x98\" + // 0x0077030A: 0x00001E98\n\t\"\\x00y\\x03\\n\\x00\\x00\\x1e\\x99\" + // 0x0079030A: 0x00001E99\n\t\"\\x01\\u007f\\x03\\a\\x00\\x00\\x1e\\x9b\" + // 0x017F0307: 0x00001E9B\n\t\"\\x00A\\x03#\\x00\\x00\\x1e\\xa0\" + // 0x00410323: 0x00001EA0\n\t\"\\x00a\\x03#\\x00\\x00\\x1e\\xa1\" + // 0x00610323: 0x00001EA1\n\t\"\\x00A\\x03\\t\\x00\\x00\\x1e\\xa2\" + // 0x00410309: 0x00001EA2\n\t\"\\x00a\\x03\\t\\x00\\x00\\x1e\\xa3\" + // 0x00610309: 0x00001EA3\n\t\"\\x00\\xc2\\x03\\x01\\x00\\x00\\x1e\\xa4\" + // 0x00C20301: 0x00001EA4\n\t\"\\x00\\xe2\\x03\\x01\\x00\\x00\\x1e\\xa5\" + // 0x00E20301: 0x00001EA5\n\t\"\\x00\\xc2\\x03\\x00\\x00\\x00\\x1e\\xa6\" + // 0x00C20300: 0x00001EA6\n\t\"\\x00\\xe2\\x03\\x00\\x00\\x00\\x1e\\xa7\" + // 0x00E20300: 0x00001EA7\n\t\"\\x00\\xc2\\x03\\t\\x00\\x00\\x1e\\xa8\" + // 0x00C20309: 0x00001EA8\n\t\"\\x00\\xe2\\x03\\t\\x00\\x00\\x1e\\xa9\" + // 0x00E20309: 0x00001EA9\n\t\"\\x00\\xc2\\x03\\x03\\x00\\x00\\x1e\\xaa\" + // 0x00C20303: 0x00001EAA\n\t\"\\x00\\xe2\\x03\\x03\\x00\\x00\\x1e\\xab\" + // 0x00E20303: 0x00001EAB\n\t\"\\x1e\\xa0\\x03\\x02\\x00\\x00\\x1e\\xac\" + // 0x1EA00302: 0x00001EAC\n\t\"\\x1e\\xa1\\x03\\x02\\x00\\x00\\x1e\\xad\" + // 0x1EA10302: 0x00001EAD\n\t\"\\x01\\x02\\x03\\x01\\x00\\x00\\x1e\\xae\" + // 0x01020301: 0x00001EAE\n\t\"\\x01\\x03\\x03\\x01\\x00\\x00\\x1e\\xaf\" + // 0x01030301: 0x00001EAF\n\t\"\\x01\\x02\\x03\\x00\\x00\\x00\\x1e\\xb0\" + // 0x01020300: 0x00001EB0\n\t\"\\x01\\x03\\x03\\x00\\x00\\x00\\x1e\\xb1\" + // 0x01030300: 0x00001EB1\n\t\"\\x01\\x02\\x03\\t\\x00\\x00\\x1e\\xb2\" + // 0x01020309: 0x00001EB2\n\t\"\\x01\\x03\\x03\\t\\x00\\x00\\x1e\\xb3\" + // 0x01030309: 0x00001EB3\n\t\"\\x01\\x02\\x03\\x03\\x00\\x00\\x1e\\xb4\" + // 0x01020303: 0x00001EB4\n\t\"\\x01\\x03\\x03\\x03\\x00\\x00\\x1e\\xb5\" + // 0x01030303: 0x00001EB5\n\t\"\\x1e\\xa0\\x03\\x06\\x00\\x00\\x1e\\xb6\" + // 0x1EA00306: 0x00001EB6\n\t\"\\x1e\\xa1\\x03\\x06\\x00\\x00\\x1e\\xb7\" + // 0x1EA10306: 0x00001EB7\n\t\"\\x00E\\x03#\\x00\\x00\\x1e\\xb8\" + // 0x00450323: 0x00001EB8\n\t\"\\x00e\\x03#\\x00\\x00\\x1e\\xb9\" + // 0x00650323: 0x00001EB9\n\t\"\\x00E\\x03\\t\\x00\\x00\\x1e\\xba\" + // 0x00450309: 0x00001EBA\n\t\"\\x00e\\x03\\t\\x00\\x00\\x1e\\xbb\" + // 0x00650309: 0x00001EBB\n\t\"\\x00E\\x03\\x03\\x00\\x00\\x1e\\xbc\" + // 0x00450303: 0x00001EBC\n\t\"\\x00e\\x03\\x03\\x00\\x00\\x1e\\xbd\" + // 0x00650303: 0x00001EBD\n\t\"\\x00\\xca\\x03\\x01\\x00\\x00\\x1e\\xbe\" + // 0x00CA0301: 0x00001EBE\n\t\"\\x00\\xea\\x03\\x01\\x00\\x00\\x1e\\xbf\" + // 0x00EA0301: 0x00001EBF\n\t\"\\x00\\xca\\x03\\x00\\x00\\x00\\x1e\\xc0\" + // 0x00CA0300: 0x00001EC0\n\t\"\\x00\\xea\\x03\\x00\\x00\\x00\\x1e\\xc1\" + // 0x00EA0300: 0x00001EC1\n\t\"\\x00\\xca\\x03\\t\\x00\\x00\\x1e\\xc2\" + // 0x00CA0309: 0x00001EC2\n\t\"\\x00\\xea\\x03\\t\\x00\\x00\\x1e\\xc3\" + // 0x00EA0309: 0x00001EC3\n\t\"\\x00\\xca\\x03\\x03\\x00\\x00\\x1e\\xc4\" + // 0x00CA0303: 0x00001EC4\n\t\"\\x00\\xea\\x03\\x03\\x00\\x00\\x1e\\xc5\" + // 0x00EA0303: 0x00001EC5\n\t\"\\x1e\\xb8\\x03\\x02\\x00\\x00\\x1e\\xc6\" + // 0x1EB80302: 0x00001EC6\n\t\"\\x1e\\xb9\\x03\\x02\\x00\\x00\\x1e\\xc7\" + // 0x1EB90302: 0x00001EC7\n\t\"\\x00I\\x03\\t\\x00\\x00\\x1e\\xc8\" + // 0x00490309: 0x00001EC8\n\t\"\\x00i\\x03\\t\\x00\\x00\\x1e\\xc9\" + // 0x00690309: 0x00001EC9\n\t\"\\x00I\\x03#\\x00\\x00\\x1e\\xca\" + // 0x00490323: 0x00001ECA\n\t\"\\x00i\\x03#\\x00\\x00\\x1e\\xcb\" + // 0x00690323: 0x00001ECB\n\t\"\\x00O\\x03#\\x00\\x00\\x1e\\xcc\" + // 0x004F0323: 0x00001ECC\n\t\"\\x00o\\x03#\\x00\\x00\\x1e\\xcd\" + // 0x006F0323: 0x00001ECD\n\t\"\\x00O\\x03\\t\\x00\\x00\\x1e\\xce\" + // 0x004F0309: 0x00001ECE\n\t\"\\x00o\\x03\\t\\x00\\x00\\x1e\\xcf\" + // 0x006F0309: 0x00001ECF\n\t\"\\x00\\xd4\\x03\\x01\\x00\\x00\\x1e\\xd0\" + // 0x00D40301: 0x00001ED0\n\t\"\\x00\\xf4\\x03\\x01\\x00\\x00\\x1e\\xd1\" + // 0x00F40301: 0x00001ED1\n\t\"\\x00\\xd4\\x03\\x00\\x00\\x00\\x1e\\xd2\" + // 0x00D40300: 0x00001ED2\n\t\"\\x00\\xf4\\x03\\x00\\x00\\x00\\x1e\\xd3\" + // 0x00F40300: 0x00001ED3\n\t\"\\x00\\xd4\\x03\\t\\x00\\x00\\x1e\\xd4\" + // 0x00D40309: 0x00001ED4\n\t\"\\x00\\xf4\\x03\\t\\x00\\x00\\x1e\\xd5\" + // 0x00F40309: 0x00001ED5\n\t\"\\x00\\xd4\\x03\\x03\\x00\\x00\\x1e\\xd6\" + // 0x00D40303: 0x00001ED6\n\t\"\\x00\\xf4\\x03\\x03\\x00\\x00\\x1e\\xd7\" + // 0x00F40303: 0x00001ED7\n\t\"\\x1e\\xcc\\x03\\x02\\x00\\x00\\x1e\\xd8\" + // 0x1ECC0302: 0x00001ED8\n\t\"\\x1e\\xcd\\x03\\x02\\x00\\x00\\x1e\\xd9\" + // 0x1ECD0302: 0x00001ED9\n\t\"\\x01\\xa0\\x03\\x01\\x00\\x00\\x1e\\xda\" + // 0x01A00301: 0x00001EDA\n\t\"\\x01\\xa1\\x03\\x01\\x00\\x00\\x1e\\xdb\" + // 0x01A10301: 0x00001EDB\n\t\"\\x01\\xa0\\x03\\x00\\x00\\x00\\x1e\\xdc\" + // 0x01A00300: 0x00001EDC\n\t\"\\x01\\xa1\\x03\\x00\\x00\\x00\\x1e\\xdd\" + // 0x01A10300: 0x00001EDD\n\t\"\\x01\\xa0\\x03\\t\\x00\\x00\\x1e\\xde\" + // 0x01A00309: 0x00001EDE\n\t\"\\x01\\xa1\\x03\\t\\x00\\x00\\x1e\\xdf\" + // 0x01A10309: 0x00001EDF\n\t\"\\x01\\xa0\\x03\\x03\\x00\\x00\\x1e\\xe0\" + // 0x01A00303: 0x00001EE0\n\t\"\\x01\\xa1\\x03\\x03\\x00\\x00\\x1e\\xe1\" + // 0x01A10303: 0x00001EE1\n\t\"\\x01\\xa0\\x03#\\x00\\x00\\x1e\\xe2\" + // 0x01A00323: 0x00001EE2\n\t\"\\x01\\xa1\\x03#\\x00\\x00\\x1e\\xe3\" + // 0x01A10323: 0x00001EE3\n\t\"\\x00U\\x03#\\x00\\x00\\x1e\\xe4\" + // 0x00550323: 0x00001EE4\n\t\"\\x00u\\x03#\\x00\\x00\\x1e\\xe5\" + // 0x00750323: 0x00001EE5\n\t\"\\x00U\\x03\\t\\x00\\x00\\x1e\\xe6\" + // 0x00550309: 0x00001EE6\n\t\"\\x00u\\x03\\t\\x00\\x00\\x1e\\xe7\" + // 0x00750309: 0x00001EE7\n\t\"\\x01\\xaf\\x03\\x01\\x00\\x00\\x1e\\xe8\" + // 0x01AF0301: 0x00001EE8\n\t\"\\x01\\xb0\\x03\\x01\\x00\\x00\\x1e\\xe9\" + // 0x01B00301: 0x00001EE9\n\t\"\\x01\\xaf\\x03\\x00\\x00\\x00\\x1e\\xea\" + // 0x01AF0300: 0x00001EEA\n\t\"\\x01\\xb0\\x03\\x00\\x00\\x00\\x1e\\xeb\" + // 0x01B00300: 0x00001EEB\n\t\"\\x01\\xaf\\x03\\t\\x00\\x00\\x1e\\xec\" + // 0x01AF0309: 0x00001EEC\n\t\"\\x01\\xb0\\x03\\t\\x00\\x00\\x1e\\xed\" + // 0x01B00309: 0x00001EED\n\t\"\\x01\\xaf\\x03\\x03\\x00\\x00\\x1e\\xee\" + // 0x01AF0303: 0x00001EEE\n\t\"\\x01\\xb0\\x03\\x03\\x00\\x00\\x1e\\xef\" + // 0x01B00303: 0x00001EEF\n\t\"\\x01\\xaf\\x03#\\x00\\x00\\x1e\\xf0\" + // 0x01AF0323: 0x00001EF0\n\t\"\\x01\\xb0\\x03#\\x00\\x00\\x1e\\xf1\" + // 0x01B00323: 0x00001EF1\n\t\"\\x00Y\\x03\\x00\\x00\\x00\\x1e\\xf2\" + // 0x00590300: 0x00001EF2\n\t\"\\x00y\\x03\\x00\\x00\\x00\\x1e\\xf3\" + // 0x00790300: 0x00001EF3\n\t\"\\x00Y\\x03#\\x00\\x00\\x1e\\xf4\" + // 0x00590323: 0x00001EF4\n\t\"\\x00y\\x03#\\x00\\x00\\x1e\\xf5\" + // 0x00790323: 0x00001EF5\n\t\"\\x00Y\\x03\\t\\x00\\x00\\x1e\\xf6\" + // 0x00590309: 0x00001EF6\n\t\"\\x00y\\x03\\t\\x00\\x00\\x1e\\xf7\" + // 0x00790309: 0x00001EF7\n\t\"\\x00Y\\x03\\x03\\x00\\x00\\x1e\\xf8\" + // 0x00590303: 0x00001EF8\n\t\"\\x00y\\x03\\x03\\x00\\x00\\x1e\\xf9\" + // 0x00790303: 0x00001EF9\n\t\"\\x03\\xb1\\x03\\x13\\x00\\x00\\x1f\\x00\" + // 0x03B10313: 0x00001F00\n\t\"\\x03\\xb1\\x03\\x14\\x00\\x00\\x1f\\x01\" + // 0x03B10314: 0x00001F01\n\t\"\\x1f\\x00\\x03\\x00\\x00\\x00\\x1f\\x02\" + // 0x1F000300: 0x00001F02\n\t\"\\x1f\\x01\\x03\\x00\\x00\\x00\\x1f\\x03\" + // 0x1F010300: 0x00001F03\n\t\"\\x1f\\x00\\x03\\x01\\x00\\x00\\x1f\\x04\" + // 0x1F000301: 0x00001F04\n\t\"\\x1f\\x01\\x03\\x01\\x00\\x00\\x1f\\x05\" + // 0x1F010301: 0x00001F05\n\t\"\\x1f\\x00\\x03B\\x00\\x00\\x1f\\x06\" + // 0x1F000342: 0x00001F06\n\t\"\\x1f\\x01\\x03B\\x00\\x00\\x1f\\a\" + // 0x1F010342: 0x00001F07\n\t\"\\x03\\x91\\x03\\x13\\x00\\x00\\x1f\\b\" + // 0x03910313: 0x00001F08\n\t\"\\x03\\x91\\x03\\x14\\x00\\x00\\x1f\\t\" + // 0x03910314: 0x00001F09\n\t\"\\x1f\\b\\x03\\x00\\x00\\x00\\x1f\\n\" + // 0x1F080300: 0x00001F0A\n\t\"\\x1f\\t\\x03\\x00\\x00\\x00\\x1f\\v\" + // 0x1F090300: 0x00001F0B\n\t\"\\x1f\\b\\x03\\x01\\x00\\x00\\x1f\\f\" + // 0x1F080301: 0x00001F0C\n\t\"\\x1f\\t\\x03\\x01\\x00\\x00\\x1f\\r\" + // 0x1F090301: 0x00001F0D\n\t\"\\x1f\\b\\x03B\\x00\\x00\\x1f\\x0e\" + // 0x1F080342: 0x00001F0E\n\t\"\\x1f\\t\\x03B\\x00\\x00\\x1f\\x0f\" + // 0x1F090342: 0x00001F0F\n\t\"\\x03\\xb5\\x03\\x13\\x00\\x00\\x1f\\x10\" + // 0x03B50313: 0x00001F10\n\t\"\\x03\\xb5\\x03\\x14\\x00\\x00\\x1f\\x11\" + // 0x03B50314: 0x00001F11\n\t\"\\x1f\\x10\\x03\\x00\\x00\\x00\\x1f\\x12\" + // 0x1F100300: 0x00001F12\n\t\"\\x1f\\x11\\x03\\x00\\x00\\x00\\x1f\\x13\" + // 0x1F110300: 0x00001F13\n\t\"\\x1f\\x10\\x03\\x01\\x00\\x00\\x1f\\x14\" + // 0x1F100301: 0x00001F14\n\t\"\\x1f\\x11\\x03\\x01\\x00\\x00\\x1f\\x15\" + // 0x1F110301: 0x00001F15\n\t\"\\x03\\x95\\x03\\x13\\x00\\x00\\x1f\\x18\" + // 0x03950313: 0x00001F18\n\t\"\\x03\\x95\\x03\\x14\\x00\\x00\\x1f\\x19\" + // 0x03950314: 0x00001F19\n\t\"\\x1f\\x18\\x03\\x00\\x00\\x00\\x1f\\x1a\" + // 0x1F180300: 0x00001F1A\n\t\"\\x1f\\x19\\x03\\x00\\x00\\x00\\x1f\\x1b\" + // 0x1F190300: 0x00001F1B\n\t\"\\x1f\\x18\\x03\\x01\\x00\\x00\\x1f\\x1c\" + // 0x1F180301: 0x00001F1C\n\t\"\\x1f\\x19\\x03\\x01\\x00\\x00\\x1f\\x1d\" + // 0x1F190301: 0x00001F1D\n\t\"\\x03\\xb7\\x03\\x13\\x00\\x00\\x1f \" + // 0x03B70313: 0x00001F20\n\t\"\\x03\\xb7\\x03\\x14\\x00\\x00\\x1f!\" + // 0x03B70314: 0x00001F21\n\t\"\\x1f \\x03\\x00\\x00\\x00\\x1f\\\"\" + // 0x1F200300: 0x00001F22\n\t\"\\x1f!\\x03\\x00\\x00\\x00\\x1f#\" + // 0x1F210300: 0x00001F23\n\t\"\\x1f \\x03\\x01\\x00\\x00\\x1f$\" + // 0x1F200301: 0x00001F24\n\t\"\\x1f!\\x03\\x01\\x00\\x00\\x1f%\" + // 0x1F210301: 0x00001F25\n\t\"\\x1f \\x03B\\x00\\x00\\x1f&\" + // 0x1F200342: 0x00001F26\n\t\"\\x1f!\\x03B\\x00\\x00\\x1f'\" + // 0x1F210342: 0x00001F27\n\t\"\\x03\\x97\\x03\\x13\\x00\\x00\\x1f(\" + // 0x03970313: 0x00001F28\n\t\"\\x03\\x97\\x03\\x14\\x00\\x00\\x1f)\" + // 0x03970314: 0x00001F29\n\t\"\\x1f(\\x03\\x00\\x00\\x00\\x1f*\" + // 0x1F280300: 0x00001F2A\n\t\"\\x1f)\\x03\\x00\\x00\\x00\\x1f+\" + // 0x1F290300: 0x00001F2B\n\t\"\\x1f(\\x03\\x01\\x00\\x00\\x1f,\" + // 0x1F280301: 0x00001F2C\n\t\"\\x1f)\\x03\\x01\\x00\\x00\\x1f-\" + // 0x1F290301: 0x00001F2D\n\t\"\\x1f(\\x03B\\x00\\x00\\x1f.\" + // 0x1F280342: 0x00001F2E\n\t\"\\x1f)\\x03B\\x00\\x00\\x1f/\" + // 0x1F290342: 0x00001F2F\n\t\"\\x03\\xb9\\x03\\x13\\x00\\x00\\x1f0\" + // 0x03B90313: 0x00001F30\n\t\"\\x03\\xb9\\x03\\x14\\x00\\x00\\x1f1\" + // 0x03B90314: 0x00001F31\n\t\"\\x1f0\\x03\\x00\\x00\\x00\\x1f2\" + // 0x1F300300: 0x00001F32\n\t\"\\x1f1\\x03\\x00\\x00\\x00\\x1f3\" + // 0x1F310300: 0x00001F33\n\t\"\\x1f0\\x03\\x01\\x00\\x00\\x1f4\" + // 0x1F300301: 0x00001F34\n\t\"\\x1f1\\x03\\x01\\x00\\x00\\x1f5\" + // 0x1F310301: 0x00001F35\n\t\"\\x1f0\\x03B\\x00\\x00\\x1f6\" + // 0x1F300342: 0x00001F36\n\t\"\\x1f1\\x03B\\x00\\x00\\x1f7\" + // 0x1F310342: 0x00001F37\n\t\"\\x03\\x99\\x03\\x13\\x00\\x00\\x1f8\" + // 0x03990313: 0x00001F38\n\t\"\\x03\\x99\\x03\\x14\\x00\\x00\\x1f9\" + // 0x03990314: 0x00001F39\n\t\"\\x1f8\\x03\\x00\\x00\\x00\\x1f:\" + // 0x1F380300: 0x00001F3A\n\t\"\\x1f9\\x03\\x00\\x00\\x00\\x1f;\" + // 0x1F390300: 0x00001F3B\n\t\"\\x1f8\\x03\\x01\\x00\\x00\\x1f<\" + // 0x1F380301: 0x00001F3C\n\t\"\\x1f9\\x03\\x01\\x00\\x00\\x1f=\" + // 0x1F390301: 0x00001F3D\n\t\"\\x1f8\\x03B\\x00\\x00\\x1f>\" + // 0x1F380342: 0x00001F3E\n\t\"\\x1f9\\x03B\\x00\\x00\\x1f?\" + // 0x1F390342: 0x00001F3F\n\t\"\\x03\\xbf\\x03\\x13\\x00\\x00\\x1f@\" + // 0x03BF0313: 0x00001F40\n\t\"\\x03\\xbf\\x03\\x14\\x00\\x00\\x1fA\" + // 0x03BF0314: 0x00001F41\n\t\"\\x1f@\\x03\\x00\\x00\\x00\\x1fB\" + // 0x1F400300: 0x00001F42\n\t\"\\x1fA\\x03\\x00\\x00\\x00\\x1fC\" + // 0x1F410300: 0x00001F43\n\t\"\\x1f@\\x03\\x01\\x00\\x00\\x1fD\" + // 0x1F400301: 0x00001F44\n\t\"\\x1fA\\x03\\x01\\x00\\x00\\x1fE\" + // 0x1F410301: 0x00001F45\n\t\"\\x03\\x9f\\x03\\x13\\x00\\x00\\x1fH\" + // 0x039F0313: 0x00001F48\n\t\"\\x03\\x9f\\x03\\x14\\x00\\x00\\x1fI\" + // 0x039F0314: 0x00001F49\n\t\"\\x1fH\\x03\\x00\\x00\\x00\\x1fJ\" + // 0x1F480300: 0x00001F4A\n\t\"\\x1fI\\x03\\x00\\x00\\x00\\x1fK\" + // 0x1F490300: 0x00001F4B\n\t\"\\x1fH\\x03\\x01\\x00\\x00\\x1fL\" + // 0x1F480301: 0x00001F4C\n\t\"\\x1fI\\x03\\x01\\x00\\x00\\x1fM\" + // 0x1F490301: 0x00001F4D\n\t\"\\x03\\xc5\\x03\\x13\\x00\\x00\\x1fP\" + // 0x03C50313: 0x00001F50\n\t\"\\x03\\xc5\\x03\\x14\\x00\\x00\\x1fQ\" + // 0x03C50314: 0x00001F51\n\t\"\\x1fP\\x03\\x00\\x00\\x00\\x1fR\" + // 0x1F500300: 0x00001F52\n\t\"\\x1fQ\\x03\\x00\\x00\\x00\\x1fS\" + // 0x1F510300: 0x00001F53\n\t\"\\x1fP\\x03\\x01\\x00\\x00\\x1fT\" + // 0x1F500301: 0x00001F54\n\t\"\\x1fQ\\x03\\x01\\x00\\x00\\x1fU\" + // 0x1F510301: 0x00001F55\n\t\"\\x1fP\\x03B\\x00\\x00\\x1fV\" + // 0x1F500342: 0x00001F56\n\t\"\\x1fQ\\x03B\\x00\\x00\\x1fW\" + // 0x1F510342: 0x00001F57\n\t\"\\x03\\xa5\\x03\\x14\\x00\\x00\\x1fY\" + // 0x03A50314: 0x00001F59\n\t\"\\x1fY\\x03\\x00\\x00\\x00\\x1f[\" + // 0x1F590300: 0x00001F5B\n\t\"\\x1fY\\x03\\x01\\x00\\x00\\x1f]\" + // 0x1F590301: 0x00001F5D\n\t\"\\x1fY\\x03B\\x00\\x00\\x1f_\" + // 0x1F590342: 0x00001F5F\n\t\"\\x03\\xc9\\x03\\x13\\x00\\x00\\x1f`\" + // 0x03C90313: 0x00001F60\n\t\"\\x03\\xc9\\x03\\x14\\x00\\x00\\x1fa\" + // 0x03C90314: 0x00001F61\n\t\"\\x1f`\\x03\\x00\\x00\\x00\\x1fb\" + // 0x1F600300: 0x00001F62\n\t\"\\x1fa\\x03\\x00\\x00\\x00\\x1fc\" + // 0x1F610300: 0x00001F63\n\t\"\\x1f`\\x03\\x01\\x00\\x00\\x1fd\" + // 0x1F600301: 0x00001F64\n\t\"\\x1fa\\x03\\x01\\x00\\x00\\x1fe\" + // 0x1F610301: 0x00001F65\n\t\"\\x1f`\\x03B\\x00\\x00\\x1ff\" + // 0x1F600342: 0x00001F66\n\t\"\\x1fa\\x03B\\x00\\x00\\x1fg\" + // 0x1F610342: 0x00001F67\n\t\"\\x03\\xa9\\x03\\x13\\x00\\x00\\x1fh\" + // 0x03A90313: 0x00001F68\n\t\"\\x03\\xa9\\x03\\x14\\x00\\x00\\x1fi\" + // 0x03A90314: 0x00001F69\n\t\"\\x1fh\\x03\\x00\\x00\\x00\\x1fj\" + // 0x1F680300: 0x00001F6A\n\t\"\\x1fi\\x03\\x00\\x00\\x00\\x1fk\" + // 0x1F690300: 0x00001F6B\n\t\"\\x1fh\\x03\\x01\\x00\\x00\\x1fl\" + // 0x1F680301: 0x00001F6C\n\t\"\\x1fi\\x03\\x01\\x00\\x00\\x1fm\" + // 0x1F690301: 0x00001F6D\n\t\"\\x1fh\\x03B\\x00\\x00\\x1fn\" + // 0x1F680342: 0x00001F6E\n\t\"\\x1fi\\x03B\\x00\\x00\\x1fo\" + // 0x1F690342: 0x00001F6F\n\t\"\\x03\\xb1\\x03\\x00\\x00\\x00\\x1fp\" + // 0x03B10300: 0x00001F70\n\t\"\\x03\\xb5\\x03\\x00\\x00\\x00\\x1fr\" + // 0x03B50300: 0x00001F72\n\t\"\\x03\\xb7\\x03\\x00\\x00\\x00\\x1ft\" + // 0x03B70300: 0x00001F74\n\t\"\\x03\\xb9\\x03\\x00\\x00\\x00\\x1fv\" + // 0x03B90300: 0x00001F76\n\t\"\\x03\\xbf\\x03\\x00\\x00\\x00\\x1fx\" + // 0x03BF0300: 0x00001F78\n\t\"\\x03\\xc5\\x03\\x00\\x00\\x00\\x1fz\" + // 0x03C50300: 0x00001F7A\n\t\"\\x03\\xc9\\x03\\x00\\x00\\x00\\x1f|\" + // 0x03C90300: 0x00001F7C\n\t\"\\x1f\\x00\\x03E\\x00\\x00\\x1f\\x80\" + // 0x1F000345: 0x00001F80\n\t\"\\x1f\\x01\\x03E\\x00\\x00\\x1f\\x81\" + // 0x1F010345: 0x00001F81\n\t\"\\x1f\\x02\\x03E\\x00\\x00\\x1f\\x82\" + // 0x1F020345: 0x00001F82\n\t\"\\x1f\\x03\\x03E\\x00\\x00\\x1f\\x83\" + // 0x1F030345: 0x00001F83\n\t\"\\x1f\\x04\\x03E\\x00\\x00\\x1f\\x84\" + // 0x1F040345: 0x00001F84\n\t\"\\x1f\\x05\\x03E\\x00\\x00\\x1f\\x85\" + // 0x1F050345: 0x00001F85\n\t\"\\x1f\\x06\\x03E\\x00\\x00\\x1f\\x86\" + // 0x1F060345: 0x00001F86\n\t\"\\x1f\\a\\x03E\\x00\\x00\\x1f\\x87\" + // 0x1F070345: 0x00001F87\n\t\"\\x1f\\b\\x03E\\x00\\x00\\x1f\\x88\" + // 0x1F080345: 0x00001F88\n\t\"\\x1f\\t\\x03E\\x00\\x00\\x1f\\x89\" + // 0x1F090345: 0x00001F89\n\t\"\\x1f\\n\\x03E\\x00\\x00\\x1f\\x8a\" + // 0x1F0A0345: 0x00001F8A\n\t\"\\x1f\\v\\x03E\\x00\\x00\\x1f\\x8b\" + // 0x1F0B0345: 0x00001F8B\n\t\"\\x1f\\f\\x03E\\x00\\x00\\x1f\\x8c\" + // 0x1F0C0345: 0x00001F8C\n\t\"\\x1f\\r\\x03E\\x00\\x00\\x1f\\x8d\" + // 0x1F0D0345: 0x00001F8D\n\t\"\\x1f\\x0e\\x03E\\x00\\x00\\x1f\\x8e\" + // 0x1F0E0345: 0x00001F8E\n\t\"\\x1f\\x0f\\x03E\\x00\\x00\\x1f\\x8f\" + // 0x1F0F0345: 0x00001F8F\n\t\"\\x1f \\x03E\\x00\\x00\\x1f\\x90\" + // 0x1F200345: 0x00001F90\n\t\"\\x1f!\\x03E\\x00\\x00\\x1f\\x91\" + // 0x1F210345: 0x00001F91\n\t\"\\x1f\\\"\\x03E\\x00\\x00\\x1f\\x92\" + // 0x1F220345: 0x00001F92\n\t\"\\x1f#\\x03E\\x00\\x00\\x1f\\x93\" + // 0x1F230345: 0x00001F93\n\t\"\\x1f$\\x03E\\x00\\x00\\x1f\\x94\" + // 0x1F240345: 0x00001F94\n\t\"\\x1f%\\x03E\\x00\\x00\\x1f\\x95\" + // 0x1F250345: 0x00001F95\n\t\"\\x1f&\\x03E\\x00\\x00\\x1f\\x96\" + // 0x1F260345: 0x00001F96\n\t\"\\x1f'\\x03E\\x00\\x00\\x1f\\x97\" + // 0x1F270345: 0x00001F97\n\t\"\\x1f(\\x03E\\x00\\x00\\x1f\\x98\" + // 0x1F280345: 0x00001F98\n\t\"\\x1f)\\x03E\\x00\\x00\\x1f\\x99\" + // 0x1F290345: 0x00001F99\n\t\"\\x1f*\\x03E\\x00\\x00\\x1f\\x9a\" + // 0x1F2A0345: 0x00001F9A\n\t\"\\x1f+\\x03E\\x00\\x00\\x1f\\x9b\" + // 0x1F2B0345: 0x00001F9B\n\t\"\\x1f,\\x03E\\x00\\x00\\x1f\\x9c\" + // 0x1F2C0345: 0x00001F9C\n\t\"\\x1f-\\x03E\\x00\\x00\\x1f\\x9d\" + // 0x1F2D0345: 0x00001F9D\n\t\"\\x1f.\\x03E\\x00\\x00\\x1f\\x9e\" + // 0x1F2E0345: 0x00001F9E\n\t\"\\x1f/\\x03E\\x00\\x00\\x1f\\x9f\" + // 0x1F2F0345: 0x00001F9F\n\t\"\\x1f`\\x03E\\x00\\x00\\x1f\\xa0\" + // 0x1F600345: 0x00001FA0\n\t\"\\x1fa\\x03E\\x00\\x00\\x1f\\xa1\" + // 0x1F610345: 0x00001FA1\n\t\"\\x1fb\\x03E\\x00\\x00\\x1f\\xa2\" + // 0x1F620345: 0x00001FA2\n\t\"\\x1fc\\x03E\\x00\\x00\\x1f\\xa3\" + // 0x1F630345: 0x00001FA3\n\t\"\\x1fd\\x03E\\x00\\x00\\x1f\\xa4\" + // 0x1F640345: 0x00001FA4\n\t\"\\x1fe\\x03E\\x00\\x00\\x1f\\xa5\" + // 0x1F650345: 0x00001FA5\n\t\"\\x1ff\\x03E\\x00\\x00\\x1f\\xa6\" + // 0x1F660345: 0x00001FA6\n\t\"\\x1fg\\x03E\\x00\\x00\\x1f\\xa7\" + // 0x1F670345: 0x00001FA7\n\t\"\\x1fh\\x03E\\x00\\x00\\x1f\\xa8\" + // 0x1F680345: 0x00001FA8\n\t\"\\x1fi\\x03E\\x00\\x00\\x1f\\xa9\" + // 0x1F690345: 0x00001FA9\n\t\"\\x1fj\\x03E\\x00\\x00\\x1f\\xaa\" + // 0x1F6A0345: 0x00001FAA\n\t\"\\x1fk\\x03E\\x00\\x00\\x1f\\xab\" + // 0x1F6B0345: 0x00001FAB\n\t\"\\x1fl\\x03E\\x00\\x00\\x1f\\xac\" + // 0x1F6C0345: 0x00001FAC\n\t\"\\x1fm\\x03E\\x00\\x00\\x1f\\xad\" + // 0x1F6D0345: 0x00001FAD\n\t\"\\x1fn\\x03E\\x00\\x00\\x1f\\xae\" + // 0x1F6E0345: 0x00001FAE\n\t\"\\x1fo\\x03E\\x00\\x00\\x1f\\xaf\" + // 0x1F6F0345: 0x00001FAF\n\t\"\\x03\\xb1\\x03\\x06\\x00\\x00\\x1f\\xb0\" + // 0x03B10306: 0x00001FB0\n\t\"\\x03\\xb1\\x03\\x04\\x00\\x00\\x1f\\xb1\" + // 0x03B10304: 0x00001FB1\n\t\"\\x1fp\\x03E\\x00\\x00\\x1f\\xb2\" + // 0x1F700345: 0x00001FB2\n\t\"\\x03\\xb1\\x03E\\x00\\x00\\x1f\\xb3\" + // 0x03B10345: 0x00001FB3\n\t\"\\x03\\xac\\x03E\\x00\\x00\\x1f\\xb4\" + // 0x03AC0345: 0x00001FB4\n\t\"\\x03\\xb1\\x03B\\x00\\x00\\x1f\\xb6\" + // 0x03B10342: 0x00001FB6\n\t\"\\x1f\\xb6\\x03E\\x00\\x00\\x1f\\xb7\" + // 0x1FB60345: 0x00001FB7\n\t\"\\x03\\x91\\x03\\x06\\x00\\x00\\x1f\\xb8\" + // 0x03910306: 0x00001FB8\n\t\"\\x03\\x91\\x03\\x04\\x00\\x00\\x1f\\xb9\" + // 0x03910304: 0x00001FB9\n\t\"\\x03\\x91\\x03\\x00\\x00\\x00\\x1f\\xba\" + // 0x03910300: 0x00001FBA\n\t\"\\x03\\x91\\x03E\\x00\\x00\\x1f\\xbc\" + // 0x03910345: 0x00001FBC\n\t\"\\x00\\xa8\\x03B\\x00\\x00\\x1f\\xc1\" + // 0x00A80342: 0x00001FC1\n\t\"\\x1ft\\x03E\\x00\\x00\\x1f\\xc2\" + // 0x1F740345: 0x00001FC2\n\t\"\\x03\\xb7\\x03E\\x00\\x00\\x1f\\xc3\" + // 0x03B70345: 0x00001FC3\n\t\"\\x03\\xae\\x03E\\x00\\x00\\x1f\\xc4\" + // 0x03AE0345: 0x00001FC4\n\t\"\\x03\\xb7\\x03B\\x00\\x00\\x1f\\xc6\" + // 0x03B70342: 0x00001FC6\n\t\"\\x1f\\xc6\\x03E\\x00\\x00\\x1f\\xc7\" + // 0x1FC60345: 0x00001FC7\n\t\"\\x03\\x95\\x03\\x00\\x00\\x00\\x1f\\xc8\" + // 0x03950300: 0x00001FC8\n\t\"\\x03\\x97\\x03\\x00\\x00\\x00\\x1f\\xca\" + // 0x03970300: 0x00001FCA\n\t\"\\x03\\x97\\x03E\\x00\\x00\\x1f\\xcc\" + // 0x03970345: 0x00001FCC\n\t\"\\x1f\\xbf\\x03\\x00\\x00\\x00\\x1f\\xcd\" + // 0x1FBF0300: 0x00001FCD\n\t\"\\x1f\\xbf\\x03\\x01\\x00\\x00\\x1f\\xce\" + // 0x1FBF0301: 0x00001FCE\n\t\"\\x1f\\xbf\\x03B\\x00\\x00\\x1f\\xcf\" + // 0x1FBF0342: 0x00001FCF\n\t\"\\x03\\xb9\\x03\\x06\\x00\\x00\\x1f\\xd0\" + // 0x03B90306: 0x00001FD0\n\t\"\\x03\\xb9\\x03\\x04\\x00\\x00\\x1f\\xd1\" + // 0x03B90304: 0x00001FD1\n\t\"\\x03\\xca\\x03\\x00\\x00\\x00\\x1f\\xd2\" + // 0x03CA0300: 0x00001FD2\n\t\"\\x03\\xb9\\x03B\\x00\\x00\\x1f\\xd6\" + // 0x03B90342: 0x00001FD6\n\t\"\\x03\\xca\\x03B\\x00\\x00\\x1f\\xd7\" + // 0x03CA0342: 0x00001FD7\n\t\"\\x03\\x99\\x03\\x06\\x00\\x00\\x1f\\xd8\" + // 0x03990306: 0x00001FD8\n\t\"\\x03\\x99\\x03\\x04\\x00\\x00\\x1f\\xd9\" + // 0x03990304: 0x00001FD9\n\t\"\\x03\\x99\\x03\\x00\\x00\\x00\\x1f\\xda\" + // 0x03990300: 0x00001FDA\n\t\"\\x1f\\xfe\\x03\\x00\\x00\\x00\\x1f\\xdd\" + // 0x1FFE0300: 0x00001FDD\n\t\"\\x1f\\xfe\\x03\\x01\\x00\\x00\\x1f\\xde\" + // 0x1FFE0301: 0x00001FDE\n\t\"\\x1f\\xfe\\x03B\\x00\\x00\\x1f\\xdf\" + // 0x1FFE0342: 0x00001FDF\n\t\"\\x03\\xc5\\x03\\x06\\x00\\x00\\x1f\\xe0\" + // 0x03C50306: 0x00001FE0\n\t\"\\x03\\xc5\\x03\\x04\\x00\\x00\\x1f\\xe1\" + // 0x03C50304: 0x00001FE1\n\t\"\\x03\\xcb\\x03\\x00\\x00\\x00\\x1f\\xe2\" + // 0x03CB0300: 0x00001FE2\n\t\"\\x03\\xc1\\x03\\x13\\x00\\x00\\x1f\\xe4\" + // 0x03C10313: 0x00001FE4\n\t\"\\x03\\xc1\\x03\\x14\\x00\\x00\\x1f\\xe5\" + // 0x03C10314: 0x00001FE5\n\t\"\\x03\\xc5\\x03B\\x00\\x00\\x1f\\xe6\" + // 0x03C50342: 0x00001FE6\n\t\"\\x03\\xcb\\x03B\\x00\\x00\\x1f\\xe7\" + // 0x03CB0342: 0x00001FE7\n\t\"\\x03\\xa5\\x03\\x06\\x00\\x00\\x1f\\xe8\" + // 0x03A50306: 0x00001FE8\n\t\"\\x03\\xa5\\x03\\x04\\x00\\x00\\x1f\\xe9\" + // 0x03A50304: 0x00001FE9\n\t\"\\x03\\xa5\\x03\\x00\\x00\\x00\\x1f\\xea\" + // 0x03A50300: 0x00001FEA\n\t\"\\x03\\xa1\\x03\\x14\\x00\\x00\\x1f\\xec\" + // 0x03A10314: 0x00001FEC\n\t\"\\x00\\xa8\\x03\\x00\\x00\\x00\\x1f\\xed\" + // 0x00A80300: 0x00001FED\n\t\"\\x1f|\\x03E\\x00\\x00\\x1f\\xf2\" + // 0x1F7C0345: 0x00001FF2\n\t\"\\x03\\xc9\\x03E\\x00\\x00\\x1f\\xf3\" + // 0x03C90345: 0x00001FF3\n\t\"\\x03\\xce\\x03E\\x00\\x00\\x1f\\xf4\" + // 0x03CE0345: 0x00001FF4\n\t\"\\x03\\xc9\\x03B\\x00\\x00\\x1f\\xf6\" + // 0x03C90342: 0x00001FF6\n\t\"\\x1f\\xf6\\x03E\\x00\\x00\\x1f\\xf7\" + // 0x1FF60345: 0x00001FF7\n\t\"\\x03\\x9f\\x03\\x00\\x00\\x00\\x1f\\xf8\" + // 0x039F0300: 0x00001FF8\n\t\"\\x03\\xa9\\x03\\x00\\x00\\x00\\x1f\\xfa\" + // 0x03A90300: 0x00001FFA\n\t\"\\x03\\xa9\\x03E\\x00\\x00\\x1f\\xfc\" + // 0x03A90345: 0x00001FFC\n\t\"!\\x90\\x038\\x00\\x00!\\x9a\" + // 0x21900338: 0x0000219A\n\t\"!\\x92\\x038\\x00\\x00!\\x9b\" + // 0x21920338: 0x0000219B\n\t\"!\\x94\\x038\\x00\\x00!\\xae\" + // 0x21940338: 0x000021AE\n\t\"!\\xd0\\x038\\x00\\x00!\\xcd\" + // 0x21D00338: 0x000021CD\n\t\"!\\xd4\\x038\\x00\\x00!\\xce\" + // 0x21D40338: 0x000021CE\n\t\"!\\xd2\\x038\\x00\\x00!\\xcf\" + // 0x21D20338: 0x000021CF\n\t\"\\\"\\x03\\x038\\x00\\x00\\\"\\x04\" + // 0x22030338: 0x00002204\n\t\"\\\"\\b\\x038\\x00\\x00\\\"\\t\" + // 0x22080338: 0x00002209\n\t\"\\\"\\v\\x038\\x00\\x00\\\"\\f\" + // 0x220B0338: 0x0000220C\n\t\"\\\"#\\x038\\x00\\x00\\\"$\" + // 0x22230338: 0x00002224\n\t\"\\\"%\\x038\\x00\\x00\\\"&\" + // 0x22250338: 0x00002226\n\t\"\\\"<\\x038\\x00\\x00\\\"A\" + // 0x223C0338: 0x00002241\n\t\"\\\"C\\x038\\x00\\x00\\\"D\" + // 0x22430338: 0x00002244\n\t\"\\\"E\\x038\\x00\\x00\\\"G\" + // 0x22450338: 0x00002247\n\t\"\\\"H\\x038\\x00\\x00\\\"I\" + // 0x22480338: 0x00002249\n\t\"\\x00=\\x038\\x00\\x00\\\"`\" + // 0x003D0338: 0x00002260\n\t\"\\\"a\\x038\\x00\\x00\\\"b\" + // 0x22610338: 0x00002262\n\t\"\\\"M\\x038\\x00\\x00\\\"m\" + // 0x224D0338: 0x0000226D\n\t\"\\x00<\\x038\\x00\\x00\\\"n\" + // 0x003C0338: 0x0000226E\n\t\"\\x00>\\x038\\x00\\x00\\\"o\" + // 0x003E0338: 0x0000226F\n\t\"\\\"d\\x038\\x00\\x00\\\"p\" + // 0x22640338: 0x00002270\n\t\"\\\"e\\x038\\x00\\x00\\\"q\" + // 0x22650338: 0x00002271\n\t\"\\\"r\\x038\\x00\\x00\\\"t\" + // 0x22720338: 0x00002274\n\t\"\\\"s\\x038\\x00\\x00\\\"u\" + // 0x22730338: 0x00002275\n\t\"\\\"v\\x038\\x00\\x00\\\"x\" + // 0x22760338: 0x00002278\n\t\"\\\"w\\x038\\x00\\x00\\\"y\" + // 0x22770338: 0x00002279\n\t\"\\\"z\\x038\\x00\\x00\\\"\\x80\" + // 0x227A0338: 0x00002280\n\t\"\\\"{\\x038\\x00\\x00\\\"\\x81\" + // 0x227B0338: 0x00002281\n\t\"\\\"\\x82\\x038\\x00\\x00\\\"\\x84\" + // 0x22820338: 0x00002284\n\t\"\\\"\\x83\\x038\\x00\\x00\\\"\\x85\" + // 0x22830338: 0x00002285\n\t\"\\\"\\x86\\x038\\x00\\x00\\\"\\x88\" + // 0x22860338: 0x00002288\n\t\"\\\"\\x87\\x038\\x00\\x00\\\"\\x89\" + // 0x22870338: 0x00002289\n\t\"\\\"\\xa2\\x038\\x00\\x00\\\"\\xac\" + // 0x22A20338: 0x000022AC\n\t\"\\\"\\xa8\\x038\\x00\\x00\\\"\\xad\" + // 0x22A80338: 0x000022AD\n\t\"\\\"\\xa9\\x038\\x00\\x00\\\"\\xae\" + // 0x22A90338: 0x000022AE\n\t\"\\\"\\xab\\x038\\x00\\x00\\\"\\xaf\" + // 0x22AB0338: 0x000022AF\n\t\"\\\"|\\x038\\x00\\x00\\\"\\xe0\" + // 0x227C0338: 0x000022E0\n\t\"\\\"}\\x038\\x00\\x00\\\"\\xe1\" + // 0x227D0338: 0x000022E1\n\t\"\\\"\\x91\\x038\\x00\\x00\\\"\\xe2\" + // 0x22910338: 0x000022E2\n\t\"\\\"\\x92\\x038\\x00\\x00\\\"\\xe3\" + // 0x22920338: 0x000022E3\n\t\"\\\"\\xb2\\x038\\x00\\x00\\\"\\xea\" + // 0x22B20338: 0x000022EA\n\t\"\\\"\\xb3\\x038\\x00\\x00\\\"\\xeb\" + // 0x22B30338: 0x000022EB\n\t\"\\\"\\xb4\\x038\\x00\\x00\\\"\\xec\" + // 0x22B40338: 0x000022EC\n\t\"\\\"\\xb5\\x038\\x00\\x00\\\"\\xed\" + // 0x22B50338: 0x000022ED\n\t\"0K0\\x99\\x00\\x000L\" + // 0x304B3099: 0x0000304C\n\t\"0M0\\x99\\x00\\x000N\" + // 0x304D3099: 0x0000304E\n\t\"0O0\\x99\\x00\\x000P\" + // 0x304F3099: 0x00003050\n\t\"0Q0\\x99\\x00\\x000R\" + // 0x30513099: 0x00003052\n\t\"0S0\\x99\\x00\\x000T\" + // 0x30533099: 0x00003054\n\t\"0U0\\x99\\x00\\x000V\" + // 0x30553099: 0x00003056\n\t\"0W0\\x99\\x00\\x000X\" + // 0x30573099: 0x00003058\n\t\"0Y0\\x99\\x00\\x000Z\" + // 0x30593099: 0x0000305A\n\t\"0[0\\x99\\x00\\x000\\\\\" + // 0x305B3099: 0x0000305C\n\t\"0]0\\x99\\x00\\x000^\" + // 0x305D3099: 0x0000305E\n\t\"0_0\\x99\\x00\\x000`\" + // 0x305F3099: 0x00003060\n\t\"0a0\\x99\\x00\\x000b\" + // 0x30613099: 0x00003062\n\t\"0d0\\x99\\x00\\x000e\" + // 0x30643099: 0x00003065\n\t\"0f0\\x99\\x00\\x000g\" + // 0x30663099: 0x00003067\n\t\"0h0\\x99\\x00\\x000i\" + // 0x30683099: 0x00003069\n\t\"0o0\\x99\\x00\\x000p\" + // 0x306F3099: 0x00003070\n\t\"0o0\\x9a\\x00\\x000q\" + // 0x306F309A: 0x00003071\n\t\"0r0\\x99\\x00\\x000s\" + // 0x30723099: 0x00003073\n\t\"0r0\\x9a\\x00\\x000t\" + // 0x3072309A: 0x00003074\n\t\"0u0\\x99\\x00\\x000v\" + // 0x30753099: 0x00003076\n\t\"0u0\\x9a\\x00\\x000w\" + // 0x3075309A: 0x00003077\n\t\"0x0\\x99\\x00\\x000y\" + // 0x30783099: 0x00003079\n\t\"0x0\\x9a\\x00\\x000z\" + // 0x3078309A: 0x0000307A\n\t\"0{0\\x99\\x00\\x000|\" + // 0x307B3099: 0x0000307C\n\t\"0{0\\x9a\\x00\\x000}\" + // 0x307B309A: 0x0000307D\n\t\"0F0\\x99\\x00\\x000\\x94\" + // 0x30463099: 0x00003094\n\t\"0\\x9d0\\x99\\x00\\x000\\x9e\" + // 0x309D3099: 0x0000309E\n\t\"0\\xab0\\x99\\x00\\x000\\xac\" + // 0x30AB3099: 0x000030AC\n\t\"0\\xad0\\x99\\x00\\x000\\xae\" + // 0x30AD3099: 0x000030AE\n\t\"0\\xaf0\\x99\\x00\\x000\\xb0\" + // 0x30AF3099: 0x000030B0\n\t\"0\\xb10\\x99\\x00\\x000\\xb2\" + // 0x30B13099: 0x000030B2\n\t\"0\\xb30\\x99\\x00\\x000\\xb4\" + // 0x30B33099: 0x000030B4\n\t\"0\\xb50\\x99\\x00\\x000\\xb6\" + // 0x30B53099: 0x000030B6\n\t\"0\\xb70\\x99\\x00\\x000\\xb8\" + // 0x30B73099: 0x000030B8\n\t\"0\\xb90\\x99\\x00\\x000\\xba\" + // 0x30B93099: 0x000030BA\n\t\"0\\xbb0\\x99\\x00\\x000\\xbc\" + // 0x30BB3099: 0x000030BC\n\t\"0\\xbd0\\x99\\x00\\x000\\xbe\" + // 0x30BD3099: 0x000030BE\n\t\"0\\xbf0\\x99\\x00\\x000\\xc0\" + // 0x30BF3099: 0x000030C0\n\t\"0\\xc10\\x99\\x00\\x000\\xc2\" + // 0x30C13099: 0x000030C2\n\t\"0\\xc40\\x99\\x00\\x000\\xc5\" + // 0x30C43099: 0x000030C5\n\t\"0\\xc60\\x99\\x00\\x000\\xc7\" + // 0x30C63099: 0x000030C7\n\t\"0\\xc80\\x99\\x00\\x000\\xc9\" + // 0x30C83099: 0x000030C9\n\t\"0\\xcf0\\x99\\x00\\x000\\xd0\" + // 0x30CF3099: 0x000030D0\n\t\"0\\xcf0\\x9a\\x00\\x000\\xd1\" + // 0x30CF309A: 0x000030D1\n\t\"0\\xd20\\x99\\x00\\x000\\xd3\" + // 0x30D23099: 0x000030D3\n\t\"0\\xd20\\x9a\\x00\\x000\\xd4\" + // 0x30D2309A: 0x000030D4\n\t\"0\\xd50\\x99\\x00\\x000\\xd6\" + // 0x30D53099: 0x000030D6\n\t\"0\\xd50\\x9a\\x00\\x000\\xd7\" + // 0x30D5309A: 0x000030D7\n\t\"0\\xd80\\x99\\x00\\x000\\xd9\" + // 0x30D83099: 0x000030D9\n\t\"0\\xd80\\x9a\\x00\\x000\\xda\" + // 0x30D8309A: 0x000030DA\n\t\"0\\xdb0\\x99\\x00\\x000\\xdc\" + // 0x30DB3099: 0x000030DC\n\t\"0\\xdb0\\x9a\\x00\\x000\\xdd\" + // 0x30DB309A: 0x000030DD\n\t\"0\\xa60\\x99\\x00\\x000\\xf4\" + // 0x30A63099: 0x000030F4\n\t\"0\\xef0\\x99\\x00\\x000\\xf7\" + // 0x30EF3099: 0x000030F7\n\t\"0\\xf00\\x99\\x00\\x000\\xf8\" + // 0x30F03099: 0x000030F8\n\t\"0\\xf10\\x99\\x00\\x000\\xf9\" + // 0x30F13099: 0x000030F9\n\t\"0\\xf20\\x99\\x00\\x000\\xfa\" + // 0x30F23099: 0x000030FA\n\t\"0\\xfd0\\x99\\x00\\x000\\xfe\" + // 0x30FD3099: 0x000030FE\n\t\"\\x10\\x99\\x10\\xba\\x00\\x01\\x10\\x9a\" + // 0x109910BA: 0x0001109A\n\t\"\\x10\\x9b\\x10\\xba\\x00\\x01\\x10\\x9c\" + // 0x109B10BA: 0x0001109C\n\t\"\\x10\\xa5\\x10\\xba\\x00\\x01\\x10\\xab\" + // 0x10A510BA: 0x000110AB\n\t\"\\x111\\x11'\\x00\\x01\\x11.\" + // 0x11311127: 0x0001112E\n\t\"\\x112\\x11'\\x00\\x01\\x11/\" + // 0x11321127: 0x0001112F\n\t\"\\x13G\\x13>\\x00\\x01\\x13K\" + // 0x1347133E: 0x0001134B\n\t\"\\x13G\\x13W\\x00\\x01\\x13L\" + // 0x13471357: 0x0001134C\n\t\"\\x14\\xb9\\x14\\xba\\x00\\x01\\x14\\xbb\" + // 0x14B914BA: 0x000114BB\n\t\"\\x14\\xb9\\x14\\xb0\\x00\\x01\\x14\\xbc\" + // 0x14B914B0: 0x000114BC\n\t\"\\x14\\xb9\\x14\\xbd\\x00\\x01\\x14\\xbe\" + // 0x14B914BD: 0x000114BE\n\t\"\\x15\\xb8\\x15\\xaf\\x00\\x01\\x15\\xba\" + // 0x15B815AF: 0x000115BA\n\t\"\\x15\\xb9\\x15\\xaf\\x00\\x01\\x15\\xbb\" + // 0x15B915AF: 0x000115BB\n\t\"\"\n\t// Total size of tables: 53KB (54514 bytes)\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/tables12.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.14 && !go1.16\n\npackage norm\n\nimport \"sync\"\n\nconst (\n\t// Version is the Unicode edition from which the tables are derived.\n\tVersion = \"12.0.0\"\n\n\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform\n\t// may need to write atomically for any Form. Making a destination buffer at\n\t// least this size ensures that Transform can always make progress and that\n\t// the user does not need to grow the buffer on an ErrShortDst.\n\tMaxTransformChunkSize = 35 + maxNonStarters*4\n)\n\nvar ccc = [55]uint8{\n\t0, 1, 7, 8, 9, 10, 11, 12,\n\t13, 14, 15, 16, 17, 18, 19, 20,\n\t21, 22, 23, 24, 25, 26, 27, 28,\n\t29, 30, 31, 32, 33, 34, 35, 36,\n\t84, 91, 103, 107, 118, 122, 129, 130,\n\t132, 202, 214, 216, 218, 220, 222, 224,\n\t226, 228, 230, 232, 233, 234, 240,\n}\n\nconst (\n\tfirstMulti            = 0x186D\n\tfirstCCC              = 0x2CA1\n\tendMulti              = 0x2F63\n\tfirstLeadingCCC       = 0x49B1\n\tfirstCCCZeroExcept    = 0x4A7B\n\tfirstStarterWithNLead = 0x4AA2\n\tlastDecomp            = 0x4AA4\n\tmaxDecomp             = 0x8000\n)\n\n// decomps: 19108 bytes\nvar decomps = [...]byte{\n\t// Bytes 0 - 3f\n\t0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,\n\t0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41,\n\t0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41,\n\t0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41,\n\t0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41,\n\t0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41,\n\t0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41,\n\t0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41,\n\t// Bytes 40 - 7f\n\t0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41,\n\t0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41,\n\t0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41,\n\t0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41,\n\t0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41,\n\t0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41,\n\t0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41,\n\t0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41,\n\t// Bytes 80 - bf\n\t0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41,\n\t0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41,\n\t0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41,\n\t0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41,\n\t0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41,\n\t0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41,\n\t0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41,\n\t0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42,\n\t// Bytes c0 - ff\n\t0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5,\n\t0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2,\n\t0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xB0, 0x42,\n\t0xC4, 0xA6, 0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1,\n\t0x42, 0xC5, 0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6,\n\t0x8E, 0x42, 0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42,\n\t0xC8, 0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90,\n\t0x42, 0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9,\n\t// Bytes 100 - 13f\n\t0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9, 0x99, 0x42,\n\t0xC9, 0x9B, 0x42, 0xC9, 0x9C, 0x42, 0xC9, 0x9F,\n\t0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA3, 0x42, 0xC9,\n\t0xA5, 0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA8, 0x42,\n\t0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42, 0xC9, 0xAB,\n\t0x42, 0xC9, 0xAD, 0x42, 0xC9, 0xAF, 0x42, 0xC9,\n\t0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42,\n\t0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5,\n\t// Bytes 140 - 17f\n\t0x42, 0xC9, 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9,\n\t0xBB, 0x42, 0xCA, 0x81, 0x42, 0xCA, 0x82, 0x42,\n\t0xCA, 0x83, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A,\n\t0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA,\n\t0x90, 0x42, 0xCA, 0x91, 0x42, 0xCA, 0x92, 0x42,\n\t0xCA, 0x95, 0x42, 0xCA, 0x9D, 0x42, 0xCA, 0x9F,\n\t0x42, 0xCA, 0xB9, 0x42, 0xCE, 0x91, 0x42, 0xCE,\n\t0x92, 0x42, 0xCE, 0x93, 0x42, 0xCE, 0x94, 0x42,\n\t// Bytes 180 - 1bf\n\t0xCE, 0x95, 0x42, 0xCE, 0x96, 0x42, 0xCE, 0x97,\n\t0x42, 0xCE, 0x98, 0x42, 0xCE, 0x99, 0x42, 0xCE,\n\t0x9A, 0x42, 0xCE, 0x9B, 0x42, 0xCE, 0x9C, 0x42,\n\t0xCE, 0x9D, 0x42, 0xCE, 0x9E, 0x42, 0xCE, 0x9F,\n\t0x42, 0xCE, 0xA0, 0x42, 0xCE, 0xA1, 0x42, 0xCE,\n\t0xA3, 0x42, 0xCE, 0xA4, 0x42, 0xCE, 0xA5, 0x42,\n\t0xCE, 0xA6, 0x42, 0xCE, 0xA7, 0x42, 0xCE, 0xA8,\n\t0x42, 0xCE, 0xA9, 0x42, 0xCE, 0xB1, 0x42, 0xCE,\n\t// Bytes 1c0 - 1ff\n\t0xB2, 0x42, 0xCE, 0xB3, 0x42, 0xCE, 0xB4, 0x42,\n\t0xCE, 0xB5, 0x42, 0xCE, 0xB6, 0x42, 0xCE, 0xB7,\n\t0x42, 0xCE, 0xB8, 0x42, 0xCE, 0xB9, 0x42, 0xCE,\n\t0xBA, 0x42, 0xCE, 0xBB, 0x42, 0xCE, 0xBC, 0x42,\n\t0xCE, 0xBD, 0x42, 0xCE, 0xBE, 0x42, 0xCE, 0xBF,\n\t0x42, 0xCF, 0x80, 0x42, 0xCF, 0x81, 0x42, 0xCF,\n\t0x82, 0x42, 0xCF, 0x83, 0x42, 0xCF, 0x84, 0x42,\n\t0xCF, 0x85, 0x42, 0xCF, 0x86, 0x42, 0xCF, 0x87,\n\t// Bytes 200 - 23f\n\t0x42, 0xCF, 0x88, 0x42, 0xCF, 0x89, 0x42, 0xCF,\n\t0x9C, 0x42, 0xCF, 0x9D, 0x42, 0xD0, 0xBD, 0x42,\n\t0xD1, 0x8A, 0x42, 0xD1, 0x8C, 0x42, 0xD7, 0x90,\n\t0x42, 0xD7, 0x91, 0x42, 0xD7, 0x92, 0x42, 0xD7,\n\t0x93, 0x42, 0xD7, 0x94, 0x42, 0xD7, 0x9B, 0x42,\n\t0xD7, 0x9C, 0x42, 0xD7, 0x9D, 0x42, 0xD7, 0xA2,\n\t0x42, 0xD7, 0xA8, 0x42, 0xD7, 0xAA, 0x42, 0xD8,\n\t0xA1, 0x42, 0xD8, 0xA7, 0x42, 0xD8, 0xA8, 0x42,\n\t// Bytes 240 - 27f\n\t0xD8, 0xA9, 0x42, 0xD8, 0xAA, 0x42, 0xD8, 0xAB,\n\t0x42, 0xD8, 0xAC, 0x42, 0xD8, 0xAD, 0x42, 0xD8,\n\t0xAE, 0x42, 0xD8, 0xAF, 0x42, 0xD8, 0xB0, 0x42,\n\t0xD8, 0xB1, 0x42, 0xD8, 0xB2, 0x42, 0xD8, 0xB3,\n\t0x42, 0xD8, 0xB4, 0x42, 0xD8, 0xB5, 0x42, 0xD8,\n\t0xB6, 0x42, 0xD8, 0xB7, 0x42, 0xD8, 0xB8, 0x42,\n\t0xD8, 0xB9, 0x42, 0xD8, 0xBA, 0x42, 0xD9, 0x81,\n\t0x42, 0xD9, 0x82, 0x42, 0xD9, 0x83, 0x42, 0xD9,\n\t// Bytes 280 - 2bf\n\t0x84, 0x42, 0xD9, 0x85, 0x42, 0xD9, 0x86, 0x42,\n\t0xD9, 0x87, 0x42, 0xD9, 0x88, 0x42, 0xD9, 0x89,\n\t0x42, 0xD9, 0x8A, 0x42, 0xD9, 0xAE, 0x42, 0xD9,\n\t0xAF, 0x42, 0xD9, 0xB1, 0x42, 0xD9, 0xB9, 0x42,\n\t0xD9, 0xBA, 0x42, 0xD9, 0xBB, 0x42, 0xD9, 0xBE,\n\t0x42, 0xD9, 0xBF, 0x42, 0xDA, 0x80, 0x42, 0xDA,\n\t0x83, 0x42, 0xDA, 0x84, 0x42, 0xDA, 0x86, 0x42,\n\t0xDA, 0x87, 0x42, 0xDA, 0x88, 0x42, 0xDA, 0x8C,\n\t// Bytes 2c0 - 2ff\n\t0x42, 0xDA, 0x8D, 0x42, 0xDA, 0x8E, 0x42, 0xDA,\n\t0x91, 0x42, 0xDA, 0x98, 0x42, 0xDA, 0xA1, 0x42,\n\t0xDA, 0xA4, 0x42, 0xDA, 0xA6, 0x42, 0xDA, 0xA9,\n\t0x42, 0xDA, 0xAD, 0x42, 0xDA, 0xAF, 0x42, 0xDA,\n\t0xB1, 0x42, 0xDA, 0xB3, 0x42, 0xDA, 0xBA, 0x42,\n\t0xDA, 0xBB, 0x42, 0xDA, 0xBE, 0x42, 0xDB, 0x81,\n\t0x42, 0xDB, 0x85, 0x42, 0xDB, 0x86, 0x42, 0xDB,\n\t0x87, 0x42, 0xDB, 0x88, 0x42, 0xDB, 0x89, 0x42,\n\t// Bytes 300 - 33f\n\t0xDB, 0x8B, 0x42, 0xDB, 0x8C, 0x42, 0xDB, 0x90,\n\t0x42, 0xDB, 0x92, 0x43, 0xE0, 0xBC, 0x8B, 0x43,\n\t0xE1, 0x83, 0x9C, 0x43, 0xE1, 0x84, 0x80, 0x43,\n\t0xE1, 0x84, 0x81, 0x43, 0xE1, 0x84, 0x82, 0x43,\n\t0xE1, 0x84, 0x83, 0x43, 0xE1, 0x84, 0x84, 0x43,\n\t0xE1, 0x84, 0x85, 0x43, 0xE1, 0x84, 0x86, 0x43,\n\t0xE1, 0x84, 0x87, 0x43, 0xE1, 0x84, 0x88, 0x43,\n\t0xE1, 0x84, 0x89, 0x43, 0xE1, 0x84, 0x8A, 0x43,\n\t// Bytes 340 - 37f\n\t0xE1, 0x84, 0x8B, 0x43, 0xE1, 0x84, 0x8C, 0x43,\n\t0xE1, 0x84, 0x8D, 0x43, 0xE1, 0x84, 0x8E, 0x43,\n\t0xE1, 0x84, 0x8F, 0x43, 0xE1, 0x84, 0x90, 0x43,\n\t0xE1, 0x84, 0x91, 0x43, 0xE1, 0x84, 0x92, 0x43,\n\t0xE1, 0x84, 0x94, 0x43, 0xE1, 0x84, 0x95, 0x43,\n\t0xE1, 0x84, 0x9A, 0x43, 0xE1, 0x84, 0x9C, 0x43,\n\t0xE1, 0x84, 0x9D, 0x43, 0xE1, 0x84, 0x9E, 0x43,\n\t0xE1, 0x84, 0xA0, 0x43, 0xE1, 0x84, 0xA1, 0x43,\n\t// Bytes 380 - 3bf\n\t0xE1, 0x84, 0xA2, 0x43, 0xE1, 0x84, 0xA3, 0x43,\n\t0xE1, 0x84, 0xA7, 0x43, 0xE1, 0x84, 0xA9, 0x43,\n\t0xE1, 0x84, 0xAB, 0x43, 0xE1, 0x84, 0xAC, 0x43,\n\t0xE1, 0x84, 0xAD, 0x43, 0xE1, 0x84, 0xAE, 0x43,\n\t0xE1, 0x84, 0xAF, 0x43, 0xE1, 0x84, 0xB2, 0x43,\n\t0xE1, 0x84, 0xB6, 0x43, 0xE1, 0x85, 0x80, 0x43,\n\t0xE1, 0x85, 0x87, 0x43, 0xE1, 0x85, 0x8C, 0x43,\n\t0xE1, 0x85, 0x97, 0x43, 0xE1, 0x85, 0x98, 0x43,\n\t// Bytes 3c0 - 3ff\n\t0xE1, 0x85, 0x99, 0x43, 0xE1, 0x85, 0xA0, 0x43,\n\t0xE1, 0x86, 0x84, 0x43, 0xE1, 0x86, 0x85, 0x43,\n\t0xE1, 0x86, 0x88, 0x43, 0xE1, 0x86, 0x91, 0x43,\n\t0xE1, 0x86, 0x92, 0x43, 0xE1, 0x86, 0x94, 0x43,\n\t0xE1, 0x86, 0x9E, 0x43, 0xE1, 0x86, 0xA1, 0x43,\n\t0xE1, 0x87, 0x87, 0x43, 0xE1, 0x87, 0x88, 0x43,\n\t0xE1, 0x87, 0x8C, 0x43, 0xE1, 0x87, 0x8E, 0x43,\n\t0xE1, 0x87, 0x93, 0x43, 0xE1, 0x87, 0x97, 0x43,\n\t// Bytes 400 - 43f\n\t0xE1, 0x87, 0x99, 0x43, 0xE1, 0x87, 0x9D, 0x43,\n\t0xE1, 0x87, 0x9F, 0x43, 0xE1, 0x87, 0xB1, 0x43,\n\t0xE1, 0x87, 0xB2, 0x43, 0xE1, 0xB4, 0x82, 0x43,\n\t0xE1, 0xB4, 0x96, 0x43, 0xE1, 0xB4, 0x97, 0x43,\n\t0xE1, 0xB4, 0x9C, 0x43, 0xE1, 0xB4, 0x9D, 0x43,\n\t0xE1, 0xB4, 0xA5, 0x43, 0xE1, 0xB5, 0xBB, 0x43,\n\t0xE1, 0xB6, 0x85, 0x43, 0xE2, 0x80, 0x82, 0x43,\n\t0xE2, 0x80, 0x83, 0x43, 0xE2, 0x80, 0x90, 0x43,\n\t// Bytes 440 - 47f\n\t0xE2, 0x80, 0x93, 0x43, 0xE2, 0x80, 0x94, 0x43,\n\t0xE2, 0x82, 0xA9, 0x43, 0xE2, 0x86, 0x90, 0x43,\n\t0xE2, 0x86, 0x91, 0x43, 0xE2, 0x86, 0x92, 0x43,\n\t0xE2, 0x86, 0x93, 0x43, 0xE2, 0x88, 0x82, 0x43,\n\t0xE2, 0x88, 0x87, 0x43, 0xE2, 0x88, 0x91, 0x43,\n\t0xE2, 0x88, 0x92, 0x43, 0xE2, 0x94, 0x82, 0x43,\n\t0xE2, 0x96, 0xA0, 0x43, 0xE2, 0x97, 0x8B, 0x43,\n\t0xE2, 0xA6, 0x85, 0x43, 0xE2, 0xA6, 0x86, 0x43,\n\t// Bytes 480 - 4bf\n\t0xE2, 0xB5, 0xA1, 0x43, 0xE3, 0x80, 0x81, 0x43,\n\t0xE3, 0x80, 0x82, 0x43, 0xE3, 0x80, 0x88, 0x43,\n\t0xE3, 0x80, 0x89, 0x43, 0xE3, 0x80, 0x8A, 0x43,\n\t0xE3, 0x80, 0x8B, 0x43, 0xE3, 0x80, 0x8C, 0x43,\n\t0xE3, 0x80, 0x8D, 0x43, 0xE3, 0x80, 0x8E, 0x43,\n\t0xE3, 0x80, 0x8F, 0x43, 0xE3, 0x80, 0x90, 0x43,\n\t0xE3, 0x80, 0x91, 0x43, 0xE3, 0x80, 0x92, 0x43,\n\t0xE3, 0x80, 0x94, 0x43, 0xE3, 0x80, 0x95, 0x43,\n\t// Bytes 4c0 - 4ff\n\t0xE3, 0x80, 0x96, 0x43, 0xE3, 0x80, 0x97, 0x43,\n\t0xE3, 0x82, 0xA1, 0x43, 0xE3, 0x82, 0xA2, 0x43,\n\t0xE3, 0x82, 0xA3, 0x43, 0xE3, 0x82, 0xA4, 0x43,\n\t0xE3, 0x82, 0xA5, 0x43, 0xE3, 0x82, 0xA6, 0x43,\n\t0xE3, 0x82, 0xA7, 0x43, 0xE3, 0x82, 0xA8, 0x43,\n\t0xE3, 0x82, 0xA9, 0x43, 0xE3, 0x82, 0xAA, 0x43,\n\t0xE3, 0x82, 0xAB, 0x43, 0xE3, 0x82, 0xAD, 0x43,\n\t0xE3, 0x82, 0xAF, 0x43, 0xE3, 0x82, 0xB1, 0x43,\n\t// Bytes 500 - 53f\n\t0xE3, 0x82, 0xB3, 0x43, 0xE3, 0x82, 0xB5, 0x43,\n\t0xE3, 0x82, 0xB7, 0x43, 0xE3, 0x82, 0xB9, 0x43,\n\t0xE3, 0x82, 0xBB, 0x43, 0xE3, 0x82, 0xBD, 0x43,\n\t0xE3, 0x82, 0xBF, 0x43, 0xE3, 0x83, 0x81, 0x43,\n\t0xE3, 0x83, 0x83, 0x43, 0xE3, 0x83, 0x84, 0x43,\n\t0xE3, 0x83, 0x86, 0x43, 0xE3, 0x83, 0x88, 0x43,\n\t0xE3, 0x83, 0x8A, 0x43, 0xE3, 0x83, 0x8B, 0x43,\n\t0xE3, 0x83, 0x8C, 0x43, 0xE3, 0x83, 0x8D, 0x43,\n\t// Bytes 540 - 57f\n\t0xE3, 0x83, 0x8E, 0x43, 0xE3, 0x83, 0x8F, 0x43,\n\t0xE3, 0x83, 0x92, 0x43, 0xE3, 0x83, 0x95, 0x43,\n\t0xE3, 0x83, 0x98, 0x43, 0xE3, 0x83, 0x9B, 0x43,\n\t0xE3, 0x83, 0x9E, 0x43, 0xE3, 0x83, 0x9F, 0x43,\n\t0xE3, 0x83, 0xA0, 0x43, 0xE3, 0x83, 0xA1, 0x43,\n\t0xE3, 0x83, 0xA2, 0x43, 0xE3, 0x83, 0xA3, 0x43,\n\t0xE3, 0x83, 0xA4, 0x43, 0xE3, 0x83, 0xA5, 0x43,\n\t0xE3, 0x83, 0xA6, 0x43, 0xE3, 0x83, 0xA7, 0x43,\n\t// Bytes 580 - 5bf\n\t0xE3, 0x83, 0xA8, 0x43, 0xE3, 0x83, 0xA9, 0x43,\n\t0xE3, 0x83, 0xAA, 0x43, 0xE3, 0x83, 0xAB, 0x43,\n\t0xE3, 0x83, 0xAC, 0x43, 0xE3, 0x83, 0xAD, 0x43,\n\t0xE3, 0x83, 0xAF, 0x43, 0xE3, 0x83, 0xB0, 0x43,\n\t0xE3, 0x83, 0xB1, 0x43, 0xE3, 0x83, 0xB2, 0x43,\n\t0xE3, 0x83, 0xB3, 0x43, 0xE3, 0x83, 0xBB, 0x43,\n\t0xE3, 0x83, 0xBC, 0x43, 0xE3, 0x92, 0x9E, 0x43,\n\t0xE3, 0x92, 0xB9, 0x43, 0xE3, 0x92, 0xBB, 0x43,\n\t// Bytes 5c0 - 5ff\n\t0xE3, 0x93, 0x9F, 0x43, 0xE3, 0x94, 0x95, 0x43,\n\t0xE3, 0x9B, 0xAE, 0x43, 0xE3, 0x9B, 0xBC, 0x43,\n\t0xE3, 0x9E, 0x81, 0x43, 0xE3, 0xA0, 0xAF, 0x43,\n\t0xE3, 0xA1, 0xA2, 0x43, 0xE3, 0xA1, 0xBC, 0x43,\n\t0xE3, 0xA3, 0x87, 0x43, 0xE3, 0xA3, 0xA3, 0x43,\n\t0xE3, 0xA4, 0x9C, 0x43, 0xE3, 0xA4, 0xBA, 0x43,\n\t0xE3, 0xA8, 0xAE, 0x43, 0xE3, 0xA9, 0xAC, 0x43,\n\t0xE3, 0xAB, 0xA4, 0x43, 0xE3, 0xAC, 0x88, 0x43,\n\t// Bytes 600 - 63f\n\t0xE3, 0xAC, 0x99, 0x43, 0xE3, 0xAD, 0x89, 0x43,\n\t0xE3, 0xAE, 0x9D, 0x43, 0xE3, 0xB0, 0x98, 0x43,\n\t0xE3, 0xB1, 0x8E, 0x43, 0xE3, 0xB4, 0xB3, 0x43,\n\t0xE3, 0xB6, 0x96, 0x43, 0xE3, 0xBA, 0xAC, 0x43,\n\t0xE3, 0xBA, 0xB8, 0x43, 0xE3, 0xBC, 0x9B, 0x43,\n\t0xE3, 0xBF, 0xBC, 0x43, 0xE4, 0x80, 0x88, 0x43,\n\t0xE4, 0x80, 0x98, 0x43, 0xE4, 0x80, 0xB9, 0x43,\n\t0xE4, 0x81, 0x86, 0x43, 0xE4, 0x82, 0x96, 0x43,\n\t// Bytes 640 - 67f\n\t0xE4, 0x83, 0xA3, 0x43, 0xE4, 0x84, 0xAF, 0x43,\n\t0xE4, 0x88, 0x82, 0x43, 0xE4, 0x88, 0xA7, 0x43,\n\t0xE4, 0x8A, 0xA0, 0x43, 0xE4, 0x8C, 0x81, 0x43,\n\t0xE4, 0x8C, 0xB4, 0x43, 0xE4, 0x8D, 0x99, 0x43,\n\t0xE4, 0x8F, 0x95, 0x43, 0xE4, 0x8F, 0x99, 0x43,\n\t0xE4, 0x90, 0x8B, 0x43, 0xE4, 0x91, 0xAB, 0x43,\n\t0xE4, 0x94, 0xAB, 0x43, 0xE4, 0x95, 0x9D, 0x43,\n\t0xE4, 0x95, 0xA1, 0x43, 0xE4, 0x95, 0xAB, 0x43,\n\t// Bytes 680 - 6bf\n\t0xE4, 0x97, 0x97, 0x43, 0xE4, 0x97, 0xB9, 0x43,\n\t0xE4, 0x98, 0xB5, 0x43, 0xE4, 0x9A, 0xBE, 0x43,\n\t0xE4, 0x9B, 0x87, 0x43, 0xE4, 0xA6, 0x95, 0x43,\n\t0xE4, 0xA7, 0xA6, 0x43, 0xE4, 0xA9, 0xAE, 0x43,\n\t0xE4, 0xA9, 0xB6, 0x43, 0xE4, 0xAA, 0xB2, 0x43,\n\t0xE4, 0xAC, 0xB3, 0x43, 0xE4, 0xAF, 0x8E, 0x43,\n\t0xE4, 0xB3, 0x8E, 0x43, 0xE4, 0xB3, 0xAD, 0x43,\n\t0xE4, 0xB3, 0xB8, 0x43, 0xE4, 0xB5, 0x96, 0x43,\n\t// Bytes 6c0 - 6ff\n\t0xE4, 0xB8, 0x80, 0x43, 0xE4, 0xB8, 0x81, 0x43,\n\t0xE4, 0xB8, 0x83, 0x43, 0xE4, 0xB8, 0x89, 0x43,\n\t0xE4, 0xB8, 0x8A, 0x43, 0xE4, 0xB8, 0x8B, 0x43,\n\t0xE4, 0xB8, 0x8D, 0x43, 0xE4, 0xB8, 0x99, 0x43,\n\t0xE4, 0xB8, 0xA6, 0x43, 0xE4, 0xB8, 0xA8, 0x43,\n\t0xE4, 0xB8, 0xAD, 0x43, 0xE4, 0xB8, 0xB2, 0x43,\n\t0xE4, 0xB8, 0xB6, 0x43, 0xE4, 0xB8, 0xB8, 0x43,\n\t0xE4, 0xB8, 0xB9, 0x43, 0xE4, 0xB8, 0xBD, 0x43,\n\t// Bytes 700 - 73f\n\t0xE4, 0xB8, 0xBF, 0x43, 0xE4, 0xB9, 0x81, 0x43,\n\t0xE4, 0xB9, 0x99, 0x43, 0xE4, 0xB9, 0x9D, 0x43,\n\t0xE4, 0xBA, 0x82, 0x43, 0xE4, 0xBA, 0x85, 0x43,\n\t0xE4, 0xBA, 0x86, 0x43, 0xE4, 0xBA, 0x8C, 0x43,\n\t0xE4, 0xBA, 0x94, 0x43, 0xE4, 0xBA, 0xA0, 0x43,\n\t0xE4, 0xBA, 0xA4, 0x43, 0xE4, 0xBA, 0xAE, 0x43,\n\t0xE4, 0xBA, 0xBA, 0x43, 0xE4, 0xBB, 0x80, 0x43,\n\t0xE4, 0xBB, 0x8C, 0x43, 0xE4, 0xBB, 0xA4, 0x43,\n\t// Bytes 740 - 77f\n\t0xE4, 0xBC, 0x81, 0x43, 0xE4, 0xBC, 0x91, 0x43,\n\t0xE4, 0xBD, 0xA0, 0x43, 0xE4, 0xBE, 0x80, 0x43,\n\t0xE4, 0xBE, 0x86, 0x43, 0xE4, 0xBE, 0x8B, 0x43,\n\t0xE4, 0xBE, 0xAE, 0x43, 0xE4, 0xBE, 0xBB, 0x43,\n\t0xE4, 0xBE, 0xBF, 0x43, 0xE5, 0x80, 0x82, 0x43,\n\t0xE5, 0x80, 0xAB, 0x43, 0xE5, 0x81, 0xBA, 0x43,\n\t0xE5, 0x82, 0x99, 0x43, 0xE5, 0x83, 0x8F, 0x43,\n\t0xE5, 0x83, 0x9A, 0x43, 0xE5, 0x83, 0xA7, 0x43,\n\t// Bytes 780 - 7bf\n\t0xE5, 0x84, 0xAA, 0x43, 0xE5, 0x84, 0xBF, 0x43,\n\t0xE5, 0x85, 0x80, 0x43, 0xE5, 0x85, 0x85, 0x43,\n\t0xE5, 0x85, 0x8D, 0x43, 0xE5, 0x85, 0x94, 0x43,\n\t0xE5, 0x85, 0xA4, 0x43, 0xE5, 0x85, 0xA5, 0x43,\n\t0xE5, 0x85, 0xA7, 0x43, 0xE5, 0x85, 0xA8, 0x43,\n\t0xE5, 0x85, 0xA9, 0x43, 0xE5, 0x85, 0xAB, 0x43,\n\t0xE5, 0x85, 0xAD, 0x43, 0xE5, 0x85, 0xB7, 0x43,\n\t0xE5, 0x86, 0x80, 0x43, 0xE5, 0x86, 0x82, 0x43,\n\t// Bytes 7c0 - 7ff\n\t0xE5, 0x86, 0x8D, 0x43, 0xE5, 0x86, 0x92, 0x43,\n\t0xE5, 0x86, 0x95, 0x43, 0xE5, 0x86, 0x96, 0x43,\n\t0xE5, 0x86, 0x97, 0x43, 0xE5, 0x86, 0x99, 0x43,\n\t0xE5, 0x86, 0xA4, 0x43, 0xE5, 0x86, 0xAB, 0x43,\n\t0xE5, 0x86, 0xAC, 0x43, 0xE5, 0x86, 0xB5, 0x43,\n\t0xE5, 0x86, 0xB7, 0x43, 0xE5, 0x87, 0x89, 0x43,\n\t0xE5, 0x87, 0x8C, 0x43, 0xE5, 0x87, 0x9C, 0x43,\n\t0xE5, 0x87, 0x9E, 0x43, 0xE5, 0x87, 0xA0, 0x43,\n\t// Bytes 800 - 83f\n\t0xE5, 0x87, 0xB5, 0x43, 0xE5, 0x88, 0x80, 0x43,\n\t0xE5, 0x88, 0x83, 0x43, 0xE5, 0x88, 0x87, 0x43,\n\t0xE5, 0x88, 0x97, 0x43, 0xE5, 0x88, 0x9D, 0x43,\n\t0xE5, 0x88, 0xA9, 0x43, 0xE5, 0x88, 0xBA, 0x43,\n\t0xE5, 0x88, 0xBB, 0x43, 0xE5, 0x89, 0x86, 0x43,\n\t0xE5, 0x89, 0x8D, 0x43, 0xE5, 0x89, 0xB2, 0x43,\n\t0xE5, 0x89, 0xB7, 0x43, 0xE5, 0x8A, 0x89, 0x43,\n\t0xE5, 0x8A, 0x9B, 0x43, 0xE5, 0x8A, 0xA3, 0x43,\n\t// Bytes 840 - 87f\n\t0xE5, 0x8A, 0xB3, 0x43, 0xE5, 0x8A, 0xB4, 0x43,\n\t0xE5, 0x8B, 0x87, 0x43, 0xE5, 0x8B, 0x89, 0x43,\n\t0xE5, 0x8B, 0x92, 0x43, 0xE5, 0x8B, 0x9E, 0x43,\n\t0xE5, 0x8B, 0xA4, 0x43, 0xE5, 0x8B, 0xB5, 0x43,\n\t0xE5, 0x8B, 0xB9, 0x43, 0xE5, 0x8B, 0xBA, 0x43,\n\t0xE5, 0x8C, 0x85, 0x43, 0xE5, 0x8C, 0x86, 0x43,\n\t0xE5, 0x8C, 0x95, 0x43, 0xE5, 0x8C, 0x97, 0x43,\n\t0xE5, 0x8C, 0x9A, 0x43, 0xE5, 0x8C, 0xB8, 0x43,\n\t// Bytes 880 - 8bf\n\t0xE5, 0x8C, 0xBB, 0x43, 0xE5, 0x8C, 0xBF, 0x43,\n\t0xE5, 0x8D, 0x81, 0x43, 0xE5, 0x8D, 0x84, 0x43,\n\t0xE5, 0x8D, 0x85, 0x43, 0xE5, 0x8D, 0x89, 0x43,\n\t0xE5, 0x8D, 0x91, 0x43, 0xE5, 0x8D, 0x94, 0x43,\n\t0xE5, 0x8D, 0x9A, 0x43, 0xE5, 0x8D, 0x9C, 0x43,\n\t0xE5, 0x8D, 0xA9, 0x43, 0xE5, 0x8D, 0xB0, 0x43,\n\t0xE5, 0x8D, 0xB3, 0x43, 0xE5, 0x8D, 0xB5, 0x43,\n\t0xE5, 0x8D, 0xBD, 0x43, 0xE5, 0x8D, 0xBF, 0x43,\n\t// Bytes 8c0 - 8ff\n\t0xE5, 0x8E, 0x82, 0x43, 0xE5, 0x8E, 0xB6, 0x43,\n\t0xE5, 0x8F, 0x83, 0x43, 0xE5, 0x8F, 0x88, 0x43,\n\t0xE5, 0x8F, 0x8A, 0x43, 0xE5, 0x8F, 0x8C, 0x43,\n\t0xE5, 0x8F, 0x9F, 0x43, 0xE5, 0x8F, 0xA3, 0x43,\n\t0xE5, 0x8F, 0xA5, 0x43, 0xE5, 0x8F, 0xAB, 0x43,\n\t0xE5, 0x8F, 0xAF, 0x43, 0xE5, 0x8F, 0xB1, 0x43,\n\t0xE5, 0x8F, 0xB3, 0x43, 0xE5, 0x90, 0x86, 0x43,\n\t0xE5, 0x90, 0x88, 0x43, 0xE5, 0x90, 0x8D, 0x43,\n\t// Bytes 900 - 93f\n\t0xE5, 0x90, 0x8F, 0x43, 0xE5, 0x90, 0x9D, 0x43,\n\t0xE5, 0x90, 0xB8, 0x43, 0xE5, 0x90, 0xB9, 0x43,\n\t0xE5, 0x91, 0x82, 0x43, 0xE5, 0x91, 0x88, 0x43,\n\t0xE5, 0x91, 0xA8, 0x43, 0xE5, 0x92, 0x9E, 0x43,\n\t0xE5, 0x92, 0xA2, 0x43, 0xE5, 0x92, 0xBD, 0x43,\n\t0xE5, 0x93, 0xB6, 0x43, 0xE5, 0x94, 0x90, 0x43,\n\t0xE5, 0x95, 0x8F, 0x43, 0xE5, 0x95, 0x93, 0x43,\n\t0xE5, 0x95, 0x95, 0x43, 0xE5, 0x95, 0xA3, 0x43,\n\t// Bytes 940 - 97f\n\t0xE5, 0x96, 0x84, 0x43, 0xE5, 0x96, 0x87, 0x43,\n\t0xE5, 0x96, 0x99, 0x43, 0xE5, 0x96, 0x9D, 0x43,\n\t0xE5, 0x96, 0xAB, 0x43, 0xE5, 0x96, 0xB3, 0x43,\n\t0xE5, 0x96, 0xB6, 0x43, 0xE5, 0x97, 0x80, 0x43,\n\t0xE5, 0x97, 0x82, 0x43, 0xE5, 0x97, 0xA2, 0x43,\n\t0xE5, 0x98, 0x86, 0x43, 0xE5, 0x99, 0x91, 0x43,\n\t0xE5, 0x99, 0xA8, 0x43, 0xE5, 0x99, 0xB4, 0x43,\n\t0xE5, 0x9B, 0x97, 0x43, 0xE5, 0x9B, 0x9B, 0x43,\n\t// Bytes 980 - 9bf\n\t0xE5, 0x9B, 0xB9, 0x43, 0xE5, 0x9C, 0x96, 0x43,\n\t0xE5, 0x9C, 0x97, 0x43, 0xE5, 0x9C, 0x9F, 0x43,\n\t0xE5, 0x9C, 0xB0, 0x43, 0xE5, 0x9E, 0x8B, 0x43,\n\t0xE5, 0x9F, 0x8E, 0x43, 0xE5, 0x9F, 0xB4, 0x43,\n\t0xE5, 0xA0, 0x8D, 0x43, 0xE5, 0xA0, 0xB1, 0x43,\n\t0xE5, 0xA0, 0xB2, 0x43, 0xE5, 0xA1, 0x80, 0x43,\n\t0xE5, 0xA1, 0x9A, 0x43, 0xE5, 0xA1, 0x9E, 0x43,\n\t0xE5, 0xA2, 0xA8, 0x43, 0xE5, 0xA2, 0xAC, 0x43,\n\t// Bytes 9c0 - 9ff\n\t0xE5, 0xA2, 0xB3, 0x43, 0xE5, 0xA3, 0x98, 0x43,\n\t0xE5, 0xA3, 0x9F, 0x43, 0xE5, 0xA3, 0xAB, 0x43,\n\t0xE5, 0xA3, 0xAE, 0x43, 0xE5, 0xA3, 0xB0, 0x43,\n\t0xE5, 0xA3, 0xB2, 0x43, 0xE5, 0xA3, 0xB7, 0x43,\n\t0xE5, 0xA4, 0x82, 0x43, 0xE5, 0xA4, 0x86, 0x43,\n\t0xE5, 0xA4, 0x8A, 0x43, 0xE5, 0xA4, 0x95, 0x43,\n\t0xE5, 0xA4, 0x9A, 0x43, 0xE5, 0xA4, 0x9C, 0x43,\n\t0xE5, 0xA4, 0xA2, 0x43, 0xE5, 0xA4, 0xA7, 0x43,\n\t// Bytes a00 - a3f\n\t0xE5, 0xA4, 0xA9, 0x43, 0xE5, 0xA5, 0x84, 0x43,\n\t0xE5, 0xA5, 0x88, 0x43, 0xE5, 0xA5, 0x91, 0x43,\n\t0xE5, 0xA5, 0x94, 0x43, 0xE5, 0xA5, 0xA2, 0x43,\n\t0xE5, 0xA5, 0xB3, 0x43, 0xE5, 0xA7, 0x98, 0x43,\n\t0xE5, 0xA7, 0xAC, 0x43, 0xE5, 0xA8, 0x9B, 0x43,\n\t0xE5, 0xA8, 0xA7, 0x43, 0xE5, 0xA9, 0xA2, 0x43,\n\t0xE5, 0xA9, 0xA6, 0x43, 0xE5, 0xAA, 0xB5, 0x43,\n\t0xE5, 0xAC, 0x88, 0x43, 0xE5, 0xAC, 0xA8, 0x43,\n\t// Bytes a40 - a7f\n\t0xE5, 0xAC, 0xBE, 0x43, 0xE5, 0xAD, 0x90, 0x43,\n\t0xE5, 0xAD, 0x97, 0x43, 0xE5, 0xAD, 0xA6, 0x43,\n\t0xE5, 0xAE, 0x80, 0x43, 0xE5, 0xAE, 0x85, 0x43,\n\t0xE5, 0xAE, 0x97, 0x43, 0xE5, 0xAF, 0x83, 0x43,\n\t0xE5, 0xAF, 0x98, 0x43, 0xE5, 0xAF, 0xA7, 0x43,\n\t0xE5, 0xAF, 0xAE, 0x43, 0xE5, 0xAF, 0xB3, 0x43,\n\t0xE5, 0xAF, 0xB8, 0x43, 0xE5, 0xAF, 0xBF, 0x43,\n\t0xE5, 0xB0, 0x86, 0x43, 0xE5, 0xB0, 0x8F, 0x43,\n\t// Bytes a80 - abf\n\t0xE5, 0xB0, 0xA2, 0x43, 0xE5, 0xB0, 0xB8, 0x43,\n\t0xE5, 0xB0, 0xBF, 0x43, 0xE5, 0xB1, 0xA0, 0x43,\n\t0xE5, 0xB1, 0xA2, 0x43, 0xE5, 0xB1, 0xA4, 0x43,\n\t0xE5, 0xB1, 0xA5, 0x43, 0xE5, 0xB1, 0xAE, 0x43,\n\t0xE5, 0xB1, 0xB1, 0x43, 0xE5, 0xB2, 0x8D, 0x43,\n\t0xE5, 0xB3, 0x80, 0x43, 0xE5, 0xB4, 0x99, 0x43,\n\t0xE5, 0xB5, 0x83, 0x43, 0xE5, 0xB5, 0x90, 0x43,\n\t0xE5, 0xB5, 0xAB, 0x43, 0xE5, 0xB5, 0xAE, 0x43,\n\t// Bytes ac0 - aff\n\t0xE5, 0xB5, 0xBC, 0x43, 0xE5, 0xB6, 0xB2, 0x43,\n\t0xE5, 0xB6, 0xBA, 0x43, 0xE5, 0xB7, 0x9B, 0x43,\n\t0xE5, 0xB7, 0xA1, 0x43, 0xE5, 0xB7, 0xA2, 0x43,\n\t0xE5, 0xB7, 0xA5, 0x43, 0xE5, 0xB7, 0xA6, 0x43,\n\t0xE5, 0xB7, 0xB1, 0x43, 0xE5, 0xB7, 0xBD, 0x43,\n\t0xE5, 0xB7, 0xBE, 0x43, 0xE5, 0xB8, 0xA8, 0x43,\n\t0xE5, 0xB8, 0xBD, 0x43, 0xE5, 0xB9, 0xA9, 0x43,\n\t0xE5, 0xB9, 0xB2, 0x43, 0xE5, 0xB9, 0xB4, 0x43,\n\t// Bytes b00 - b3f\n\t0xE5, 0xB9, 0xBA, 0x43, 0xE5, 0xB9, 0xBC, 0x43,\n\t0xE5, 0xB9, 0xBF, 0x43, 0xE5, 0xBA, 0xA6, 0x43,\n\t0xE5, 0xBA, 0xB0, 0x43, 0xE5, 0xBA, 0xB3, 0x43,\n\t0xE5, 0xBA, 0xB6, 0x43, 0xE5, 0xBB, 0x89, 0x43,\n\t0xE5, 0xBB, 0x8A, 0x43, 0xE5, 0xBB, 0x92, 0x43,\n\t0xE5, 0xBB, 0x93, 0x43, 0xE5, 0xBB, 0x99, 0x43,\n\t0xE5, 0xBB, 0xAC, 0x43, 0xE5, 0xBB, 0xB4, 0x43,\n\t0xE5, 0xBB, 0xBE, 0x43, 0xE5, 0xBC, 0x84, 0x43,\n\t// Bytes b40 - b7f\n\t0xE5, 0xBC, 0x8B, 0x43, 0xE5, 0xBC, 0x93, 0x43,\n\t0xE5, 0xBC, 0xA2, 0x43, 0xE5, 0xBD, 0x90, 0x43,\n\t0xE5, 0xBD, 0x93, 0x43, 0xE5, 0xBD, 0xA1, 0x43,\n\t0xE5, 0xBD, 0xA2, 0x43, 0xE5, 0xBD, 0xA9, 0x43,\n\t0xE5, 0xBD, 0xAB, 0x43, 0xE5, 0xBD, 0xB3, 0x43,\n\t0xE5, 0xBE, 0x8B, 0x43, 0xE5, 0xBE, 0x8C, 0x43,\n\t0xE5, 0xBE, 0x97, 0x43, 0xE5, 0xBE, 0x9A, 0x43,\n\t0xE5, 0xBE, 0xA9, 0x43, 0xE5, 0xBE, 0xAD, 0x43,\n\t// Bytes b80 - bbf\n\t0xE5, 0xBF, 0x83, 0x43, 0xE5, 0xBF, 0x8D, 0x43,\n\t0xE5, 0xBF, 0x97, 0x43, 0xE5, 0xBF, 0xB5, 0x43,\n\t0xE5, 0xBF, 0xB9, 0x43, 0xE6, 0x80, 0x92, 0x43,\n\t0xE6, 0x80, 0x9C, 0x43, 0xE6, 0x81, 0xB5, 0x43,\n\t0xE6, 0x82, 0x81, 0x43, 0xE6, 0x82, 0x94, 0x43,\n\t0xE6, 0x83, 0x87, 0x43, 0xE6, 0x83, 0x98, 0x43,\n\t0xE6, 0x83, 0xA1, 0x43, 0xE6, 0x84, 0x88, 0x43,\n\t0xE6, 0x85, 0x84, 0x43, 0xE6, 0x85, 0x88, 0x43,\n\t// Bytes bc0 - bff\n\t0xE6, 0x85, 0x8C, 0x43, 0xE6, 0x85, 0x8E, 0x43,\n\t0xE6, 0x85, 0xA0, 0x43, 0xE6, 0x85, 0xA8, 0x43,\n\t0xE6, 0x85, 0xBA, 0x43, 0xE6, 0x86, 0x8E, 0x43,\n\t0xE6, 0x86, 0x90, 0x43, 0xE6, 0x86, 0xA4, 0x43,\n\t0xE6, 0x86, 0xAF, 0x43, 0xE6, 0x86, 0xB2, 0x43,\n\t0xE6, 0x87, 0x9E, 0x43, 0xE6, 0x87, 0xB2, 0x43,\n\t0xE6, 0x87, 0xB6, 0x43, 0xE6, 0x88, 0x80, 0x43,\n\t0xE6, 0x88, 0x88, 0x43, 0xE6, 0x88, 0x90, 0x43,\n\t// Bytes c00 - c3f\n\t0xE6, 0x88, 0x9B, 0x43, 0xE6, 0x88, 0xAE, 0x43,\n\t0xE6, 0x88, 0xB4, 0x43, 0xE6, 0x88, 0xB6, 0x43,\n\t0xE6, 0x89, 0x8B, 0x43, 0xE6, 0x89, 0x93, 0x43,\n\t0xE6, 0x89, 0x9D, 0x43, 0xE6, 0x8A, 0x95, 0x43,\n\t0xE6, 0x8A, 0xB1, 0x43, 0xE6, 0x8B, 0x89, 0x43,\n\t0xE6, 0x8B, 0x8F, 0x43, 0xE6, 0x8B, 0x93, 0x43,\n\t0xE6, 0x8B, 0x94, 0x43, 0xE6, 0x8B, 0xBC, 0x43,\n\t0xE6, 0x8B, 0xBE, 0x43, 0xE6, 0x8C, 0x87, 0x43,\n\t// Bytes c40 - c7f\n\t0xE6, 0x8C, 0xBD, 0x43, 0xE6, 0x8D, 0x90, 0x43,\n\t0xE6, 0x8D, 0x95, 0x43, 0xE6, 0x8D, 0xA8, 0x43,\n\t0xE6, 0x8D, 0xBB, 0x43, 0xE6, 0x8E, 0x83, 0x43,\n\t0xE6, 0x8E, 0xA0, 0x43, 0xE6, 0x8E, 0xA9, 0x43,\n\t0xE6, 0x8F, 0x84, 0x43, 0xE6, 0x8F, 0x85, 0x43,\n\t0xE6, 0x8F, 0xA4, 0x43, 0xE6, 0x90, 0x9C, 0x43,\n\t0xE6, 0x90, 0xA2, 0x43, 0xE6, 0x91, 0x92, 0x43,\n\t0xE6, 0x91, 0xA9, 0x43, 0xE6, 0x91, 0xB7, 0x43,\n\t// Bytes c80 - cbf\n\t0xE6, 0x91, 0xBE, 0x43, 0xE6, 0x92, 0x9A, 0x43,\n\t0xE6, 0x92, 0x9D, 0x43, 0xE6, 0x93, 0x84, 0x43,\n\t0xE6, 0x94, 0xAF, 0x43, 0xE6, 0x94, 0xB4, 0x43,\n\t0xE6, 0x95, 0x8F, 0x43, 0xE6, 0x95, 0x96, 0x43,\n\t0xE6, 0x95, 0xAC, 0x43, 0xE6, 0x95, 0xB8, 0x43,\n\t0xE6, 0x96, 0x87, 0x43, 0xE6, 0x96, 0x97, 0x43,\n\t0xE6, 0x96, 0x99, 0x43, 0xE6, 0x96, 0xA4, 0x43,\n\t0xE6, 0x96, 0xB0, 0x43, 0xE6, 0x96, 0xB9, 0x43,\n\t// Bytes cc0 - cff\n\t0xE6, 0x97, 0x85, 0x43, 0xE6, 0x97, 0xA0, 0x43,\n\t0xE6, 0x97, 0xA2, 0x43, 0xE6, 0x97, 0xA3, 0x43,\n\t0xE6, 0x97, 0xA5, 0x43, 0xE6, 0x98, 0x93, 0x43,\n\t0xE6, 0x98, 0xA0, 0x43, 0xE6, 0x99, 0x89, 0x43,\n\t0xE6, 0x99, 0xB4, 0x43, 0xE6, 0x9A, 0x88, 0x43,\n\t0xE6, 0x9A, 0x91, 0x43, 0xE6, 0x9A, 0x9C, 0x43,\n\t0xE6, 0x9A, 0xB4, 0x43, 0xE6, 0x9B, 0x86, 0x43,\n\t0xE6, 0x9B, 0xB0, 0x43, 0xE6, 0x9B, 0xB4, 0x43,\n\t// Bytes d00 - d3f\n\t0xE6, 0x9B, 0xB8, 0x43, 0xE6, 0x9C, 0x80, 0x43,\n\t0xE6, 0x9C, 0x88, 0x43, 0xE6, 0x9C, 0x89, 0x43,\n\t0xE6, 0x9C, 0x97, 0x43, 0xE6, 0x9C, 0x9B, 0x43,\n\t0xE6, 0x9C, 0xA1, 0x43, 0xE6, 0x9C, 0xA8, 0x43,\n\t0xE6, 0x9D, 0x8E, 0x43, 0xE6, 0x9D, 0x93, 0x43,\n\t0xE6, 0x9D, 0x96, 0x43, 0xE6, 0x9D, 0x9E, 0x43,\n\t0xE6, 0x9D, 0xBB, 0x43, 0xE6, 0x9E, 0x85, 0x43,\n\t0xE6, 0x9E, 0x97, 0x43, 0xE6, 0x9F, 0xB3, 0x43,\n\t// Bytes d40 - d7f\n\t0xE6, 0x9F, 0xBA, 0x43, 0xE6, 0xA0, 0x97, 0x43,\n\t0xE6, 0xA0, 0x9F, 0x43, 0xE6, 0xA0, 0xAA, 0x43,\n\t0xE6, 0xA1, 0x92, 0x43, 0xE6, 0xA2, 0x81, 0x43,\n\t0xE6, 0xA2, 0x85, 0x43, 0xE6, 0xA2, 0x8E, 0x43,\n\t0xE6, 0xA2, 0xA8, 0x43, 0xE6, 0xA4, 0x94, 0x43,\n\t0xE6, 0xA5, 0x82, 0x43, 0xE6, 0xA6, 0xA3, 0x43,\n\t0xE6, 0xA7, 0xAA, 0x43, 0xE6, 0xA8, 0x82, 0x43,\n\t0xE6, 0xA8, 0x93, 0x43, 0xE6, 0xAA, 0xA8, 0x43,\n\t// Bytes d80 - dbf\n\t0xE6, 0xAB, 0x93, 0x43, 0xE6, 0xAB, 0x9B, 0x43,\n\t0xE6, 0xAC, 0x84, 0x43, 0xE6, 0xAC, 0xA0, 0x43,\n\t0xE6, 0xAC, 0xA1, 0x43, 0xE6, 0xAD, 0x94, 0x43,\n\t0xE6, 0xAD, 0xA2, 0x43, 0xE6, 0xAD, 0xA3, 0x43,\n\t0xE6, 0xAD, 0xB2, 0x43, 0xE6, 0xAD, 0xB7, 0x43,\n\t0xE6, 0xAD, 0xB9, 0x43, 0xE6, 0xAE, 0x9F, 0x43,\n\t0xE6, 0xAE, 0xAE, 0x43, 0xE6, 0xAE, 0xB3, 0x43,\n\t0xE6, 0xAE, 0xBA, 0x43, 0xE6, 0xAE, 0xBB, 0x43,\n\t// Bytes dc0 - dff\n\t0xE6, 0xAF, 0x8B, 0x43, 0xE6, 0xAF, 0x8D, 0x43,\n\t0xE6, 0xAF, 0x94, 0x43, 0xE6, 0xAF, 0x9B, 0x43,\n\t0xE6, 0xB0, 0x8F, 0x43, 0xE6, 0xB0, 0x94, 0x43,\n\t0xE6, 0xB0, 0xB4, 0x43, 0xE6, 0xB1, 0x8E, 0x43,\n\t0xE6, 0xB1, 0xA7, 0x43, 0xE6, 0xB2, 0x88, 0x43,\n\t0xE6, 0xB2, 0xBF, 0x43, 0xE6, 0xB3, 0x8C, 0x43,\n\t0xE6, 0xB3, 0x8D, 0x43, 0xE6, 0xB3, 0xA5, 0x43,\n\t0xE6, 0xB3, 0xA8, 0x43, 0xE6, 0xB4, 0x96, 0x43,\n\t// Bytes e00 - e3f\n\t0xE6, 0xB4, 0x9B, 0x43, 0xE6, 0xB4, 0x9E, 0x43,\n\t0xE6, 0xB4, 0xB4, 0x43, 0xE6, 0xB4, 0xBE, 0x43,\n\t0xE6, 0xB5, 0x81, 0x43, 0xE6, 0xB5, 0xA9, 0x43,\n\t0xE6, 0xB5, 0xAA, 0x43, 0xE6, 0xB5, 0xB7, 0x43,\n\t0xE6, 0xB5, 0xB8, 0x43, 0xE6, 0xB6, 0x85, 0x43,\n\t0xE6, 0xB7, 0x8B, 0x43, 0xE6, 0xB7, 0x9A, 0x43,\n\t0xE6, 0xB7, 0xAA, 0x43, 0xE6, 0xB7, 0xB9, 0x43,\n\t0xE6, 0xB8, 0x9A, 0x43, 0xE6, 0xB8, 0xAF, 0x43,\n\t// Bytes e40 - e7f\n\t0xE6, 0xB9, 0xAE, 0x43, 0xE6, 0xBA, 0x80, 0x43,\n\t0xE6, 0xBA, 0x9C, 0x43, 0xE6, 0xBA, 0xBA, 0x43,\n\t0xE6, 0xBB, 0x87, 0x43, 0xE6, 0xBB, 0x8B, 0x43,\n\t0xE6, 0xBB, 0x91, 0x43, 0xE6, 0xBB, 0x9B, 0x43,\n\t0xE6, 0xBC, 0x8F, 0x43, 0xE6, 0xBC, 0x94, 0x43,\n\t0xE6, 0xBC, 0xA2, 0x43, 0xE6, 0xBC, 0xA3, 0x43,\n\t0xE6, 0xBD, 0xAE, 0x43, 0xE6, 0xBF, 0x86, 0x43,\n\t0xE6, 0xBF, 0xAB, 0x43, 0xE6, 0xBF, 0xBE, 0x43,\n\t// Bytes e80 - ebf\n\t0xE7, 0x80, 0x9B, 0x43, 0xE7, 0x80, 0x9E, 0x43,\n\t0xE7, 0x80, 0xB9, 0x43, 0xE7, 0x81, 0x8A, 0x43,\n\t0xE7, 0x81, 0xAB, 0x43, 0xE7, 0x81, 0xB0, 0x43,\n\t0xE7, 0x81, 0xB7, 0x43, 0xE7, 0x81, 0xBD, 0x43,\n\t0xE7, 0x82, 0x99, 0x43, 0xE7, 0x82, 0xAD, 0x43,\n\t0xE7, 0x83, 0x88, 0x43, 0xE7, 0x83, 0x99, 0x43,\n\t0xE7, 0x84, 0xA1, 0x43, 0xE7, 0x85, 0x85, 0x43,\n\t0xE7, 0x85, 0x89, 0x43, 0xE7, 0x85, 0xAE, 0x43,\n\t// Bytes ec0 - eff\n\t0xE7, 0x86, 0x9C, 0x43, 0xE7, 0x87, 0x8E, 0x43,\n\t0xE7, 0x87, 0x90, 0x43, 0xE7, 0x88, 0x90, 0x43,\n\t0xE7, 0x88, 0x9B, 0x43, 0xE7, 0x88, 0xA8, 0x43,\n\t0xE7, 0x88, 0xAA, 0x43, 0xE7, 0x88, 0xAB, 0x43,\n\t0xE7, 0x88, 0xB5, 0x43, 0xE7, 0x88, 0xB6, 0x43,\n\t0xE7, 0x88, 0xBB, 0x43, 0xE7, 0x88, 0xBF, 0x43,\n\t0xE7, 0x89, 0x87, 0x43, 0xE7, 0x89, 0x90, 0x43,\n\t0xE7, 0x89, 0x99, 0x43, 0xE7, 0x89, 0x9B, 0x43,\n\t// Bytes f00 - f3f\n\t0xE7, 0x89, 0xA2, 0x43, 0xE7, 0x89, 0xB9, 0x43,\n\t0xE7, 0x8A, 0x80, 0x43, 0xE7, 0x8A, 0x95, 0x43,\n\t0xE7, 0x8A, 0xAC, 0x43, 0xE7, 0x8A, 0xAF, 0x43,\n\t0xE7, 0x8B, 0x80, 0x43, 0xE7, 0x8B, 0xBC, 0x43,\n\t0xE7, 0x8C, 0xAA, 0x43, 0xE7, 0x8D, 0xB5, 0x43,\n\t0xE7, 0x8D, 0xBA, 0x43, 0xE7, 0x8E, 0x84, 0x43,\n\t0xE7, 0x8E, 0x87, 0x43, 0xE7, 0x8E, 0x89, 0x43,\n\t0xE7, 0x8E, 0x8B, 0x43, 0xE7, 0x8E, 0xA5, 0x43,\n\t// Bytes f40 - f7f\n\t0xE7, 0x8E, 0xB2, 0x43, 0xE7, 0x8F, 0x9E, 0x43,\n\t0xE7, 0x90, 0x86, 0x43, 0xE7, 0x90, 0x89, 0x43,\n\t0xE7, 0x90, 0xA2, 0x43, 0xE7, 0x91, 0x87, 0x43,\n\t0xE7, 0x91, 0x9C, 0x43, 0xE7, 0x91, 0xA9, 0x43,\n\t0xE7, 0x91, 0xB1, 0x43, 0xE7, 0x92, 0x85, 0x43,\n\t0xE7, 0x92, 0x89, 0x43, 0xE7, 0x92, 0x98, 0x43,\n\t0xE7, 0x93, 0x8A, 0x43, 0xE7, 0x93, 0x9C, 0x43,\n\t0xE7, 0x93, 0xA6, 0x43, 0xE7, 0x94, 0x86, 0x43,\n\t// Bytes f80 - fbf\n\t0xE7, 0x94, 0x98, 0x43, 0xE7, 0x94, 0x9F, 0x43,\n\t0xE7, 0x94, 0xA4, 0x43, 0xE7, 0x94, 0xA8, 0x43,\n\t0xE7, 0x94, 0xB0, 0x43, 0xE7, 0x94, 0xB2, 0x43,\n\t0xE7, 0x94, 0xB3, 0x43, 0xE7, 0x94, 0xB7, 0x43,\n\t0xE7, 0x94, 0xBB, 0x43, 0xE7, 0x94, 0xBE, 0x43,\n\t0xE7, 0x95, 0x99, 0x43, 0xE7, 0x95, 0xA5, 0x43,\n\t0xE7, 0x95, 0xB0, 0x43, 0xE7, 0x96, 0x8B, 0x43,\n\t0xE7, 0x96, 0x92, 0x43, 0xE7, 0x97, 0xA2, 0x43,\n\t// Bytes fc0 - fff\n\t0xE7, 0x98, 0x90, 0x43, 0xE7, 0x98, 0x9D, 0x43,\n\t0xE7, 0x98, 0x9F, 0x43, 0xE7, 0x99, 0x82, 0x43,\n\t0xE7, 0x99, 0xA9, 0x43, 0xE7, 0x99, 0xB6, 0x43,\n\t0xE7, 0x99, 0xBD, 0x43, 0xE7, 0x9A, 0xAE, 0x43,\n\t0xE7, 0x9A, 0xBF, 0x43, 0xE7, 0x9B, 0x8A, 0x43,\n\t0xE7, 0x9B, 0x9B, 0x43, 0xE7, 0x9B, 0xA3, 0x43,\n\t0xE7, 0x9B, 0xA7, 0x43, 0xE7, 0x9B, 0xAE, 0x43,\n\t0xE7, 0x9B, 0xB4, 0x43, 0xE7, 0x9C, 0x81, 0x43,\n\t// Bytes 1000 - 103f\n\t0xE7, 0x9C, 0x9E, 0x43, 0xE7, 0x9C, 0x9F, 0x43,\n\t0xE7, 0x9D, 0x80, 0x43, 0xE7, 0x9D, 0x8A, 0x43,\n\t0xE7, 0x9E, 0x8B, 0x43, 0xE7, 0x9E, 0xA7, 0x43,\n\t0xE7, 0x9F, 0x9B, 0x43, 0xE7, 0x9F, 0xA2, 0x43,\n\t0xE7, 0x9F, 0xB3, 0x43, 0xE7, 0xA1, 0x8E, 0x43,\n\t0xE7, 0xA1, 0xAB, 0x43, 0xE7, 0xA2, 0x8C, 0x43,\n\t0xE7, 0xA2, 0x91, 0x43, 0xE7, 0xA3, 0x8A, 0x43,\n\t0xE7, 0xA3, 0x8C, 0x43, 0xE7, 0xA3, 0xBB, 0x43,\n\t// Bytes 1040 - 107f\n\t0xE7, 0xA4, 0xAA, 0x43, 0xE7, 0xA4, 0xBA, 0x43,\n\t0xE7, 0xA4, 0xBC, 0x43, 0xE7, 0xA4, 0xBE, 0x43,\n\t0xE7, 0xA5, 0x88, 0x43, 0xE7, 0xA5, 0x89, 0x43,\n\t0xE7, 0xA5, 0x90, 0x43, 0xE7, 0xA5, 0x96, 0x43,\n\t0xE7, 0xA5, 0x9D, 0x43, 0xE7, 0xA5, 0x9E, 0x43,\n\t0xE7, 0xA5, 0xA5, 0x43, 0xE7, 0xA5, 0xBF, 0x43,\n\t0xE7, 0xA6, 0x81, 0x43, 0xE7, 0xA6, 0x8D, 0x43,\n\t0xE7, 0xA6, 0x8E, 0x43, 0xE7, 0xA6, 0x8F, 0x43,\n\t// Bytes 1080 - 10bf\n\t0xE7, 0xA6, 0xAE, 0x43, 0xE7, 0xA6, 0xB8, 0x43,\n\t0xE7, 0xA6, 0xBE, 0x43, 0xE7, 0xA7, 0x8A, 0x43,\n\t0xE7, 0xA7, 0x98, 0x43, 0xE7, 0xA7, 0xAB, 0x43,\n\t0xE7, 0xA8, 0x9C, 0x43, 0xE7, 0xA9, 0x80, 0x43,\n\t0xE7, 0xA9, 0x8A, 0x43, 0xE7, 0xA9, 0x8F, 0x43,\n\t0xE7, 0xA9, 0xB4, 0x43, 0xE7, 0xA9, 0xBA, 0x43,\n\t0xE7, 0xAA, 0x81, 0x43, 0xE7, 0xAA, 0xB1, 0x43,\n\t0xE7, 0xAB, 0x8B, 0x43, 0xE7, 0xAB, 0xAE, 0x43,\n\t// Bytes 10c0 - 10ff\n\t0xE7, 0xAB, 0xB9, 0x43, 0xE7, 0xAC, 0xA0, 0x43,\n\t0xE7, 0xAE, 0x8F, 0x43, 0xE7, 0xAF, 0x80, 0x43,\n\t0xE7, 0xAF, 0x86, 0x43, 0xE7, 0xAF, 0x89, 0x43,\n\t0xE7, 0xB0, 0xBE, 0x43, 0xE7, 0xB1, 0xA0, 0x43,\n\t0xE7, 0xB1, 0xB3, 0x43, 0xE7, 0xB1, 0xBB, 0x43,\n\t0xE7, 0xB2, 0x92, 0x43, 0xE7, 0xB2, 0xBE, 0x43,\n\t0xE7, 0xB3, 0x92, 0x43, 0xE7, 0xB3, 0x96, 0x43,\n\t0xE7, 0xB3, 0xA3, 0x43, 0xE7, 0xB3, 0xA7, 0x43,\n\t// Bytes 1100 - 113f\n\t0xE7, 0xB3, 0xA8, 0x43, 0xE7, 0xB3, 0xB8, 0x43,\n\t0xE7, 0xB4, 0x80, 0x43, 0xE7, 0xB4, 0x90, 0x43,\n\t0xE7, 0xB4, 0xA2, 0x43, 0xE7, 0xB4, 0xAF, 0x43,\n\t0xE7, 0xB5, 0x82, 0x43, 0xE7, 0xB5, 0x9B, 0x43,\n\t0xE7, 0xB5, 0xA3, 0x43, 0xE7, 0xB6, 0xA0, 0x43,\n\t0xE7, 0xB6, 0xBE, 0x43, 0xE7, 0xB7, 0x87, 0x43,\n\t0xE7, 0xB7, 0xB4, 0x43, 0xE7, 0xB8, 0x82, 0x43,\n\t0xE7, 0xB8, 0x89, 0x43, 0xE7, 0xB8, 0xB7, 0x43,\n\t// Bytes 1140 - 117f\n\t0xE7, 0xB9, 0x81, 0x43, 0xE7, 0xB9, 0x85, 0x43,\n\t0xE7, 0xBC, 0xB6, 0x43, 0xE7, 0xBC, 0xBE, 0x43,\n\t0xE7, 0xBD, 0x91, 0x43, 0xE7, 0xBD, 0xB2, 0x43,\n\t0xE7, 0xBD, 0xB9, 0x43, 0xE7, 0xBD, 0xBA, 0x43,\n\t0xE7, 0xBE, 0x85, 0x43, 0xE7, 0xBE, 0x8A, 0x43,\n\t0xE7, 0xBE, 0x95, 0x43, 0xE7, 0xBE, 0x9A, 0x43,\n\t0xE7, 0xBE, 0xBD, 0x43, 0xE7, 0xBF, 0xBA, 0x43,\n\t0xE8, 0x80, 0x81, 0x43, 0xE8, 0x80, 0x85, 0x43,\n\t// Bytes 1180 - 11bf\n\t0xE8, 0x80, 0x8C, 0x43, 0xE8, 0x80, 0x92, 0x43,\n\t0xE8, 0x80, 0xB3, 0x43, 0xE8, 0x81, 0x86, 0x43,\n\t0xE8, 0x81, 0xA0, 0x43, 0xE8, 0x81, 0xAF, 0x43,\n\t0xE8, 0x81, 0xB0, 0x43, 0xE8, 0x81, 0xBE, 0x43,\n\t0xE8, 0x81, 0xBF, 0x43, 0xE8, 0x82, 0x89, 0x43,\n\t0xE8, 0x82, 0x8B, 0x43, 0xE8, 0x82, 0xAD, 0x43,\n\t0xE8, 0x82, 0xB2, 0x43, 0xE8, 0x84, 0x83, 0x43,\n\t0xE8, 0x84, 0xBE, 0x43, 0xE8, 0x87, 0x98, 0x43,\n\t// Bytes 11c0 - 11ff\n\t0xE8, 0x87, 0xA3, 0x43, 0xE8, 0x87, 0xA8, 0x43,\n\t0xE8, 0x87, 0xAA, 0x43, 0xE8, 0x87, 0xAD, 0x43,\n\t0xE8, 0x87, 0xB3, 0x43, 0xE8, 0x87, 0xBC, 0x43,\n\t0xE8, 0x88, 0x81, 0x43, 0xE8, 0x88, 0x84, 0x43,\n\t0xE8, 0x88, 0x8C, 0x43, 0xE8, 0x88, 0x98, 0x43,\n\t0xE8, 0x88, 0x9B, 0x43, 0xE8, 0x88, 0x9F, 0x43,\n\t0xE8, 0x89, 0xAE, 0x43, 0xE8, 0x89, 0xAF, 0x43,\n\t0xE8, 0x89, 0xB2, 0x43, 0xE8, 0x89, 0xB8, 0x43,\n\t// Bytes 1200 - 123f\n\t0xE8, 0x89, 0xB9, 0x43, 0xE8, 0x8A, 0x8B, 0x43,\n\t0xE8, 0x8A, 0x91, 0x43, 0xE8, 0x8A, 0x9D, 0x43,\n\t0xE8, 0x8A, 0xB1, 0x43, 0xE8, 0x8A, 0xB3, 0x43,\n\t0xE8, 0x8A, 0xBD, 0x43, 0xE8, 0x8B, 0xA5, 0x43,\n\t0xE8, 0x8B, 0xA6, 0x43, 0xE8, 0x8C, 0x9D, 0x43,\n\t0xE8, 0x8C, 0xA3, 0x43, 0xE8, 0x8C, 0xB6, 0x43,\n\t0xE8, 0x8D, 0x92, 0x43, 0xE8, 0x8D, 0x93, 0x43,\n\t0xE8, 0x8D, 0xA3, 0x43, 0xE8, 0x8E, 0xAD, 0x43,\n\t// Bytes 1240 - 127f\n\t0xE8, 0x8E, 0xBD, 0x43, 0xE8, 0x8F, 0x89, 0x43,\n\t0xE8, 0x8F, 0x8A, 0x43, 0xE8, 0x8F, 0x8C, 0x43,\n\t0xE8, 0x8F, 0x9C, 0x43, 0xE8, 0x8F, 0xA7, 0x43,\n\t0xE8, 0x8F, 0xAF, 0x43, 0xE8, 0x8F, 0xB1, 0x43,\n\t0xE8, 0x90, 0xBD, 0x43, 0xE8, 0x91, 0x89, 0x43,\n\t0xE8, 0x91, 0x97, 0x43, 0xE8, 0x93, 0xAE, 0x43,\n\t0xE8, 0x93, 0xB1, 0x43, 0xE8, 0x93, 0xB3, 0x43,\n\t0xE8, 0x93, 0xBC, 0x43, 0xE8, 0x94, 0x96, 0x43,\n\t// Bytes 1280 - 12bf\n\t0xE8, 0x95, 0xA4, 0x43, 0xE8, 0x97, 0x8D, 0x43,\n\t0xE8, 0x97, 0xBA, 0x43, 0xE8, 0x98, 0x86, 0x43,\n\t0xE8, 0x98, 0x92, 0x43, 0xE8, 0x98, 0xAD, 0x43,\n\t0xE8, 0x98, 0xBF, 0x43, 0xE8, 0x99, 0x8D, 0x43,\n\t0xE8, 0x99, 0x90, 0x43, 0xE8, 0x99, 0x9C, 0x43,\n\t0xE8, 0x99, 0xA7, 0x43, 0xE8, 0x99, 0xA9, 0x43,\n\t0xE8, 0x99, 0xAB, 0x43, 0xE8, 0x9A, 0x88, 0x43,\n\t0xE8, 0x9A, 0xA9, 0x43, 0xE8, 0x9B, 0xA2, 0x43,\n\t// Bytes 12c0 - 12ff\n\t0xE8, 0x9C, 0x8E, 0x43, 0xE8, 0x9C, 0xA8, 0x43,\n\t0xE8, 0x9D, 0xAB, 0x43, 0xE8, 0x9D, 0xB9, 0x43,\n\t0xE8, 0x9E, 0x86, 0x43, 0xE8, 0x9E, 0xBA, 0x43,\n\t0xE8, 0x9F, 0xA1, 0x43, 0xE8, 0xA0, 0x81, 0x43,\n\t0xE8, 0xA0, 0x9F, 0x43, 0xE8, 0xA1, 0x80, 0x43,\n\t0xE8, 0xA1, 0x8C, 0x43, 0xE8, 0xA1, 0xA0, 0x43,\n\t0xE8, 0xA1, 0xA3, 0x43, 0xE8, 0xA3, 0x82, 0x43,\n\t0xE8, 0xA3, 0x8F, 0x43, 0xE8, 0xA3, 0x97, 0x43,\n\t// Bytes 1300 - 133f\n\t0xE8, 0xA3, 0x9E, 0x43, 0xE8, 0xA3, 0xA1, 0x43,\n\t0xE8, 0xA3, 0xB8, 0x43, 0xE8, 0xA3, 0xBA, 0x43,\n\t0xE8, 0xA4, 0x90, 0x43, 0xE8, 0xA5, 0x81, 0x43,\n\t0xE8, 0xA5, 0xA4, 0x43, 0xE8, 0xA5, 0xBE, 0x43,\n\t0xE8, 0xA6, 0x86, 0x43, 0xE8, 0xA6, 0x8B, 0x43,\n\t0xE8, 0xA6, 0x96, 0x43, 0xE8, 0xA7, 0x92, 0x43,\n\t0xE8, 0xA7, 0xA3, 0x43, 0xE8, 0xA8, 0x80, 0x43,\n\t0xE8, 0xAA, 0xA0, 0x43, 0xE8, 0xAA, 0xAA, 0x43,\n\t// Bytes 1340 - 137f\n\t0xE8, 0xAA, 0xBF, 0x43, 0xE8, 0xAB, 0x8B, 0x43,\n\t0xE8, 0xAB, 0x92, 0x43, 0xE8, 0xAB, 0x96, 0x43,\n\t0xE8, 0xAB, 0xAD, 0x43, 0xE8, 0xAB, 0xB8, 0x43,\n\t0xE8, 0xAB, 0xBE, 0x43, 0xE8, 0xAC, 0x81, 0x43,\n\t0xE8, 0xAC, 0xB9, 0x43, 0xE8, 0xAD, 0x98, 0x43,\n\t0xE8, 0xAE, 0x80, 0x43, 0xE8, 0xAE, 0x8A, 0x43,\n\t0xE8, 0xB0, 0xB7, 0x43, 0xE8, 0xB1, 0x86, 0x43,\n\t0xE8, 0xB1, 0x88, 0x43, 0xE8, 0xB1, 0x95, 0x43,\n\t// Bytes 1380 - 13bf\n\t0xE8, 0xB1, 0xB8, 0x43, 0xE8, 0xB2, 0x9D, 0x43,\n\t0xE8, 0xB2, 0xA1, 0x43, 0xE8, 0xB2, 0xA9, 0x43,\n\t0xE8, 0xB2, 0xAB, 0x43, 0xE8, 0xB3, 0x81, 0x43,\n\t0xE8, 0xB3, 0x82, 0x43, 0xE8, 0xB3, 0x87, 0x43,\n\t0xE8, 0xB3, 0x88, 0x43, 0xE8, 0xB3, 0x93, 0x43,\n\t0xE8, 0xB4, 0x88, 0x43, 0xE8, 0xB4, 0x9B, 0x43,\n\t0xE8, 0xB5, 0xA4, 0x43, 0xE8, 0xB5, 0xB0, 0x43,\n\t0xE8, 0xB5, 0xB7, 0x43, 0xE8, 0xB6, 0xB3, 0x43,\n\t// Bytes 13c0 - 13ff\n\t0xE8, 0xB6, 0xBC, 0x43, 0xE8, 0xB7, 0x8B, 0x43,\n\t0xE8, 0xB7, 0xAF, 0x43, 0xE8, 0xB7, 0xB0, 0x43,\n\t0xE8, 0xBA, 0xAB, 0x43, 0xE8, 0xBB, 0x8A, 0x43,\n\t0xE8, 0xBB, 0x94, 0x43, 0xE8, 0xBC, 0xA6, 0x43,\n\t0xE8, 0xBC, 0xAA, 0x43, 0xE8, 0xBC, 0xB8, 0x43,\n\t0xE8, 0xBC, 0xBB, 0x43, 0xE8, 0xBD, 0xA2, 0x43,\n\t0xE8, 0xBE, 0x9B, 0x43, 0xE8, 0xBE, 0x9E, 0x43,\n\t0xE8, 0xBE, 0xB0, 0x43, 0xE8, 0xBE, 0xB5, 0x43,\n\t// Bytes 1400 - 143f\n\t0xE8, 0xBE, 0xB6, 0x43, 0xE9, 0x80, 0xA3, 0x43,\n\t0xE9, 0x80, 0xB8, 0x43, 0xE9, 0x81, 0x8A, 0x43,\n\t0xE9, 0x81, 0xA9, 0x43, 0xE9, 0x81, 0xB2, 0x43,\n\t0xE9, 0x81, 0xBC, 0x43, 0xE9, 0x82, 0x8F, 0x43,\n\t0xE9, 0x82, 0x91, 0x43, 0xE9, 0x82, 0x94, 0x43,\n\t0xE9, 0x83, 0x8E, 0x43, 0xE9, 0x83, 0x9E, 0x43,\n\t0xE9, 0x83, 0xB1, 0x43, 0xE9, 0x83, 0xBD, 0x43,\n\t0xE9, 0x84, 0x91, 0x43, 0xE9, 0x84, 0x9B, 0x43,\n\t// Bytes 1440 - 147f\n\t0xE9, 0x85, 0x89, 0x43, 0xE9, 0x85, 0x8D, 0x43,\n\t0xE9, 0x85, 0xAA, 0x43, 0xE9, 0x86, 0x99, 0x43,\n\t0xE9, 0x86, 0xB4, 0x43, 0xE9, 0x87, 0x86, 0x43,\n\t0xE9, 0x87, 0x8C, 0x43, 0xE9, 0x87, 0x8F, 0x43,\n\t0xE9, 0x87, 0x91, 0x43, 0xE9, 0x88, 0xB4, 0x43,\n\t0xE9, 0x88, 0xB8, 0x43, 0xE9, 0x89, 0xB6, 0x43,\n\t0xE9, 0x89, 0xBC, 0x43, 0xE9, 0x8B, 0x97, 0x43,\n\t0xE9, 0x8B, 0x98, 0x43, 0xE9, 0x8C, 0x84, 0x43,\n\t// Bytes 1480 - 14bf\n\t0xE9, 0x8D, 0x8A, 0x43, 0xE9, 0x8F, 0xB9, 0x43,\n\t0xE9, 0x90, 0x95, 0x43, 0xE9, 0x95, 0xB7, 0x43,\n\t0xE9, 0x96, 0x80, 0x43, 0xE9, 0x96, 0x8B, 0x43,\n\t0xE9, 0x96, 0xAD, 0x43, 0xE9, 0x96, 0xB7, 0x43,\n\t0xE9, 0x98, 0x9C, 0x43, 0xE9, 0x98, 0xAE, 0x43,\n\t0xE9, 0x99, 0x8B, 0x43, 0xE9, 0x99, 0x8D, 0x43,\n\t0xE9, 0x99, 0xB5, 0x43, 0xE9, 0x99, 0xB8, 0x43,\n\t0xE9, 0x99, 0xBC, 0x43, 0xE9, 0x9A, 0x86, 0x43,\n\t// Bytes 14c0 - 14ff\n\t0xE9, 0x9A, 0xA3, 0x43, 0xE9, 0x9A, 0xB6, 0x43,\n\t0xE9, 0x9A, 0xB7, 0x43, 0xE9, 0x9A, 0xB8, 0x43,\n\t0xE9, 0x9A, 0xB9, 0x43, 0xE9, 0x9B, 0x83, 0x43,\n\t0xE9, 0x9B, 0xA2, 0x43, 0xE9, 0x9B, 0xA3, 0x43,\n\t0xE9, 0x9B, 0xA8, 0x43, 0xE9, 0x9B, 0xB6, 0x43,\n\t0xE9, 0x9B, 0xB7, 0x43, 0xE9, 0x9C, 0xA3, 0x43,\n\t0xE9, 0x9C, 0xB2, 0x43, 0xE9, 0x9D, 0x88, 0x43,\n\t0xE9, 0x9D, 0x91, 0x43, 0xE9, 0x9D, 0x96, 0x43,\n\t// Bytes 1500 - 153f\n\t0xE9, 0x9D, 0x9E, 0x43, 0xE9, 0x9D, 0xA2, 0x43,\n\t0xE9, 0x9D, 0xA9, 0x43, 0xE9, 0x9F, 0x8B, 0x43,\n\t0xE9, 0x9F, 0x9B, 0x43, 0xE9, 0x9F, 0xA0, 0x43,\n\t0xE9, 0x9F, 0xAD, 0x43, 0xE9, 0x9F, 0xB3, 0x43,\n\t0xE9, 0x9F, 0xBF, 0x43, 0xE9, 0xA0, 0x81, 0x43,\n\t0xE9, 0xA0, 0x85, 0x43, 0xE9, 0xA0, 0x8B, 0x43,\n\t0xE9, 0xA0, 0x98, 0x43, 0xE9, 0xA0, 0xA9, 0x43,\n\t0xE9, 0xA0, 0xBB, 0x43, 0xE9, 0xA1, 0x9E, 0x43,\n\t// Bytes 1540 - 157f\n\t0xE9, 0xA2, 0xA8, 0x43, 0xE9, 0xA3, 0x9B, 0x43,\n\t0xE9, 0xA3, 0x9F, 0x43, 0xE9, 0xA3, 0xA2, 0x43,\n\t0xE9, 0xA3, 0xAF, 0x43, 0xE9, 0xA3, 0xBC, 0x43,\n\t0xE9, 0xA4, 0xA8, 0x43, 0xE9, 0xA4, 0xA9, 0x43,\n\t0xE9, 0xA6, 0x96, 0x43, 0xE9, 0xA6, 0x99, 0x43,\n\t0xE9, 0xA6, 0xA7, 0x43, 0xE9, 0xA6, 0xAC, 0x43,\n\t0xE9, 0xA7, 0x82, 0x43, 0xE9, 0xA7, 0xB1, 0x43,\n\t0xE9, 0xA7, 0xBE, 0x43, 0xE9, 0xA9, 0xAA, 0x43,\n\t// Bytes 1580 - 15bf\n\t0xE9, 0xAA, 0xA8, 0x43, 0xE9, 0xAB, 0x98, 0x43,\n\t0xE9, 0xAB, 0x9F, 0x43, 0xE9, 0xAC, 0x92, 0x43,\n\t0xE9, 0xAC, 0xA5, 0x43, 0xE9, 0xAC, 0xAF, 0x43,\n\t0xE9, 0xAC, 0xB2, 0x43, 0xE9, 0xAC, 0xBC, 0x43,\n\t0xE9, 0xAD, 0x9A, 0x43, 0xE9, 0xAD, 0xAF, 0x43,\n\t0xE9, 0xB1, 0x80, 0x43, 0xE9, 0xB1, 0x97, 0x43,\n\t0xE9, 0xB3, 0xA5, 0x43, 0xE9, 0xB3, 0xBD, 0x43,\n\t0xE9, 0xB5, 0xA7, 0x43, 0xE9, 0xB6, 0xB4, 0x43,\n\t// Bytes 15c0 - 15ff\n\t0xE9, 0xB7, 0xBA, 0x43, 0xE9, 0xB8, 0x9E, 0x43,\n\t0xE9, 0xB9, 0xB5, 0x43, 0xE9, 0xB9, 0xBF, 0x43,\n\t0xE9, 0xBA, 0x97, 0x43, 0xE9, 0xBA, 0x9F, 0x43,\n\t0xE9, 0xBA, 0xA5, 0x43, 0xE9, 0xBA, 0xBB, 0x43,\n\t0xE9, 0xBB, 0x83, 0x43, 0xE9, 0xBB, 0x8D, 0x43,\n\t0xE9, 0xBB, 0x8E, 0x43, 0xE9, 0xBB, 0x91, 0x43,\n\t0xE9, 0xBB, 0xB9, 0x43, 0xE9, 0xBB, 0xBD, 0x43,\n\t0xE9, 0xBB, 0xBE, 0x43, 0xE9, 0xBC, 0x85, 0x43,\n\t// Bytes 1600 - 163f\n\t0xE9, 0xBC, 0x8E, 0x43, 0xE9, 0xBC, 0x8F, 0x43,\n\t0xE9, 0xBC, 0x93, 0x43, 0xE9, 0xBC, 0x96, 0x43,\n\t0xE9, 0xBC, 0xA0, 0x43, 0xE9, 0xBC, 0xBB, 0x43,\n\t0xE9, 0xBD, 0x83, 0x43, 0xE9, 0xBD, 0x8A, 0x43,\n\t0xE9, 0xBD, 0x92, 0x43, 0xE9, 0xBE, 0x8D, 0x43,\n\t0xE9, 0xBE, 0x8E, 0x43, 0xE9, 0xBE, 0x9C, 0x43,\n\t0xE9, 0xBE, 0x9F, 0x43, 0xE9, 0xBE, 0xA0, 0x43,\n\t0xEA, 0x9C, 0xA7, 0x43, 0xEA, 0x9D, 0xAF, 0x43,\n\t// Bytes 1640 - 167f\n\t0xEA, 0xAC, 0xB7, 0x43, 0xEA, 0xAD, 0x92, 0x44,\n\t0xF0, 0xA0, 0x84, 0xA2, 0x44, 0xF0, 0xA0, 0x94,\n\t0x9C, 0x44, 0xF0, 0xA0, 0x94, 0xA5, 0x44, 0xF0,\n\t0xA0, 0x95, 0x8B, 0x44, 0xF0, 0xA0, 0x98, 0xBA,\n\t0x44, 0xF0, 0xA0, 0xA0, 0x84, 0x44, 0xF0, 0xA0,\n\t0xA3, 0x9E, 0x44, 0xF0, 0xA0, 0xA8, 0xAC, 0x44,\n\t0xF0, 0xA0, 0xAD, 0xA3, 0x44, 0xF0, 0xA1, 0x93,\n\t0xA4, 0x44, 0xF0, 0xA1, 0x9A, 0xA8, 0x44, 0xF0,\n\t// Bytes 1680 - 16bf\n\t0xA1, 0x9B, 0xAA, 0x44, 0xF0, 0xA1, 0xA7, 0x88,\n\t0x44, 0xF0, 0xA1, 0xAC, 0x98, 0x44, 0xF0, 0xA1,\n\t0xB4, 0x8B, 0x44, 0xF0, 0xA1, 0xB7, 0xA4, 0x44,\n\t0xF0, 0xA1, 0xB7, 0xA6, 0x44, 0xF0, 0xA2, 0x86,\n\t0x83, 0x44, 0xF0, 0xA2, 0x86, 0x9F, 0x44, 0xF0,\n\t0xA2, 0x8C, 0xB1, 0x44, 0xF0, 0xA2, 0x9B, 0x94,\n\t0x44, 0xF0, 0xA2, 0xA1, 0x84, 0x44, 0xF0, 0xA2,\n\t0xA1, 0x8A, 0x44, 0xF0, 0xA2, 0xAC, 0x8C, 0x44,\n\t// Bytes 16c0 - 16ff\n\t0xF0, 0xA2, 0xAF, 0xB1, 0x44, 0xF0, 0xA3, 0x80,\n\t0x8A, 0x44, 0xF0, 0xA3, 0x8A, 0xB8, 0x44, 0xF0,\n\t0xA3, 0x8D, 0x9F, 0x44, 0xF0, 0xA3, 0x8E, 0x93,\n\t0x44, 0xF0, 0xA3, 0x8E, 0x9C, 0x44, 0xF0, 0xA3,\n\t0x8F, 0x83, 0x44, 0xF0, 0xA3, 0x8F, 0x95, 0x44,\n\t0xF0, 0xA3, 0x91, 0xAD, 0x44, 0xF0, 0xA3, 0x9A,\n\t0xA3, 0x44, 0xF0, 0xA3, 0xA2, 0xA7, 0x44, 0xF0,\n\t0xA3, 0xAA, 0x8D, 0x44, 0xF0, 0xA3, 0xAB, 0xBA,\n\t// Bytes 1700 - 173f\n\t0x44, 0xF0, 0xA3, 0xB2, 0xBC, 0x44, 0xF0, 0xA3,\n\t0xB4, 0x9E, 0x44, 0xF0, 0xA3, 0xBB, 0x91, 0x44,\n\t0xF0, 0xA3, 0xBD, 0x9E, 0x44, 0xF0, 0xA3, 0xBE,\n\t0x8E, 0x44, 0xF0, 0xA4, 0x89, 0xA3, 0x44, 0xF0,\n\t0xA4, 0x8B, 0xAE, 0x44, 0xF0, 0xA4, 0x8E, 0xAB,\n\t0x44, 0xF0, 0xA4, 0x98, 0x88, 0x44, 0xF0, 0xA4,\n\t0x9C, 0xB5, 0x44, 0xF0, 0xA4, 0xA0, 0x94, 0x44,\n\t0xF0, 0xA4, 0xB0, 0xB6, 0x44, 0xF0, 0xA4, 0xB2,\n\t// Bytes 1740 - 177f\n\t0x92, 0x44, 0xF0, 0xA4, 0xBE, 0xA1, 0x44, 0xF0,\n\t0xA4, 0xBE, 0xB8, 0x44, 0xF0, 0xA5, 0x81, 0x84,\n\t0x44, 0xF0, 0xA5, 0x83, 0xB2, 0x44, 0xF0, 0xA5,\n\t0x83, 0xB3, 0x44, 0xF0, 0xA5, 0x84, 0x99, 0x44,\n\t0xF0, 0xA5, 0x84, 0xB3, 0x44, 0xF0, 0xA5, 0x89,\n\t0x89, 0x44, 0xF0, 0xA5, 0x90, 0x9D, 0x44, 0xF0,\n\t0xA5, 0x98, 0xA6, 0x44, 0xF0, 0xA5, 0x9A, 0x9A,\n\t0x44, 0xF0, 0xA5, 0x9B, 0x85, 0x44, 0xF0, 0xA5,\n\t// Bytes 1780 - 17bf\n\t0xA5, 0xBC, 0x44, 0xF0, 0xA5, 0xAA, 0xA7, 0x44,\n\t0xF0, 0xA5, 0xAE, 0xAB, 0x44, 0xF0, 0xA5, 0xB2,\n\t0x80, 0x44, 0xF0, 0xA5, 0xB3, 0x90, 0x44, 0xF0,\n\t0xA5, 0xBE, 0x86, 0x44, 0xF0, 0xA6, 0x87, 0x9A,\n\t0x44, 0xF0, 0xA6, 0x88, 0xA8, 0x44, 0xF0, 0xA6,\n\t0x89, 0x87, 0x44, 0xF0, 0xA6, 0x8B, 0x99, 0x44,\n\t0xF0, 0xA6, 0x8C, 0xBE, 0x44, 0xF0, 0xA6, 0x93,\n\t0x9A, 0x44, 0xF0, 0xA6, 0x94, 0xA3, 0x44, 0xF0,\n\t// Bytes 17c0 - 17ff\n\t0xA6, 0x96, 0xA8, 0x44, 0xF0, 0xA6, 0x9E, 0xA7,\n\t0x44, 0xF0, 0xA6, 0x9E, 0xB5, 0x44, 0xF0, 0xA6,\n\t0xAC, 0xBC, 0x44, 0xF0, 0xA6, 0xB0, 0xB6, 0x44,\n\t0xF0, 0xA6, 0xB3, 0x95, 0x44, 0xF0, 0xA6, 0xB5,\n\t0xAB, 0x44, 0xF0, 0xA6, 0xBC, 0xAC, 0x44, 0xF0,\n\t0xA6, 0xBE, 0xB1, 0x44, 0xF0, 0xA7, 0x83, 0x92,\n\t0x44, 0xF0, 0xA7, 0x8F, 0x8A, 0x44, 0xF0, 0xA7,\n\t0x99, 0xA7, 0x44, 0xF0, 0xA7, 0xA2, 0xAE, 0x44,\n\t// Bytes 1800 - 183f\n\t0xF0, 0xA7, 0xA5, 0xA6, 0x44, 0xF0, 0xA7, 0xB2,\n\t0xA8, 0x44, 0xF0, 0xA7, 0xBB, 0x93, 0x44, 0xF0,\n\t0xA7, 0xBC, 0xAF, 0x44, 0xF0, 0xA8, 0x97, 0x92,\n\t0x44, 0xF0, 0xA8, 0x97, 0xAD, 0x44, 0xF0, 0xA8,\n\t0x9C, 0xAE, 0x44, 0xF0, 0xA8, 0xAF, 0xBA, 0x44,\n\t0xF0, 0xA8, 0xB5, 0xB7, 0x44, 0xF0, 0xA9, 0x85,\n\t0x85, 0x44, 0xF0, 0xA9, 0x87, 0x9F, 0x44, 0xF0,\n\t0xA9, 0x88, 0x9A, 0x44, 0xF0, 0xA9, 0x90, 0x8A,\n\t// Bytes 1840 - 187f\n\t0x44, 0xF0, 0xA9, 0x92, 0x96, 0x44, 0xF0, 0xA9,\n\t0x96, 0xB6, 0x44, 0xF0, 0xA9, 0xAC, 0xB0, 0x44,\n\t0xF0, 0xAA, 0x83, 0x8E, 0x44, 0xF0, 0xAA, 0x84,\n\t0x85, 0x44, 0xF0, 0xAA, 0x88, 0x8E, 0x44, 0xF0,\n\t0xAA, 0x8A, 0x91, 0x44, 0xF0, 0xAA, 0x8E, 0x92,\n\t0x44, 0xF0, 0xAA, 0x98, 0x80, 0x42, 0x21, 0x21,\n\t0x42, 0x21, 0x3F, 0x42, 0x2E, 0x2E, 0x42, 0x30,\n\t0x2C, 0x42, 0x30, 0x2E, 0x42, 0x31, 0x2C, 0x42,\n\t// Bytes 1880 - 18bf\n\t0x31, 0x2E, 0x42, 0x31, 0x30, 0x42, 0x31, 0x31,\n\t0x42, 0x31, 0x32, 0x42, 0x31, 0x33, 0x42, 0x31,\n\t0x34, 0x42, 0x31, 0x35, 0x42, 0x31, 0x36, 0x42,\n\t0x31, 0x37, 0x42, 0x31, 0x38, 0x42, 0x31, 0x39,\n\t0x42, 0x32, 0x2C, 0x42, 0x32, 0x2E, 0x42, 0x32,\n\t0x30, 0x42, 0x32, 0x31, 0x42, 0x32, 0x32, 0x42,\n\t0x32, 0x33, 0x42, 0x32, 0x34, 0x42, 0x32, 0x35,\n\t0x42, 0x32, 0x36, 0x42, 0x32, 0x37, 0x42, 0x32,\n\t// Bytes 18c0 - 18ff\n\t0x38, 0x42, 0x32, 0x39, 0x42, 0x33, 0x2C, 0x42,\n\t0x33, 0x2E, 0x42, 0x33, 0x30, 0x42, 0x33, 0x31,\n\t0x42, 0x33, 0x32, 0x42, 0x33, 0x33, 0x42, 0x33,\n\t0x34, 0x42, 0x33, 0x35, 0x42, 0x33, 0x36, 0x42,\n\t0x33, 0x37, 0x42, 0x33, 0x38, 0x42, 0x33, 0x39,\n\t0x42, 0x34, 0x2C, 0x42, 0x34, 0x2E, 0x42, 0x34,\n\t0x30, 0x42, 0x34, 0x31, 0x42, 0x34, 0x32, 0x42,\n\t0x34, 0x33, 0x42, 0x34, 0x34, 0x42, 0x34, 0x35,\n\t// Bytes 1900 - 193f\n\t0x42, 0x34, 0x36, 0x42, 0x34, 0x37, 0x42, 0x34,\n\t0x38, 0x42, 0x34, 0x39, 0x42, 0x35, 0x2C, 0x42,\n\t0x35, 0x2E, 0x42, 0x35, 0x30, 0x42, 0x36, 0x2C,\n\t0x42, 0x36, 0x2E, 0x42, 0x37, 0x2C, 0x42, 0x37,\n\t0x2E, 0x42, 0x38, 0x2C, 0x42, 0x38, 0x2E, 0x42,\n\t0x39, 0x2C, 0x42, 0x39, 0x2E, 0x42, 0x3D, 0x3D,\n\t0x42, 0x3F, 0x21, 0x42, 0x3F, 0x3F, 0x42, 0x41,\n\t0x55, 0x42, 0x42, 0x71, 0x42, 0x43, 0x44, 0x42,\n\t// Bytes 1940 - 197f\n\t0x44, 0x4A, 0x42, 0x44, 0x5A, 0x42, 0x44, 0x7A,\n\t0x42, 0x47, 0x42, 0x42, 0x47, 0x79, 0x42, 0x48,\n\t0x50, 0x42, 0x48, 0x56, 0x42, 0x48, 0x67, 0x42,\n\t0x48, 0x7A, 0x42, 0x49, 0x49, 0x42, 0x49, 0x4A,\n\t0x42, 0x49, 0x55, 0x42, 0x49, 0x56, 0x42, 0x49,\n\t0x58, 0x42, 0x4B, 0x42, 0x42, 0x4B, 0x4B, 0x42,\n\t0x4B, 0x4D, 0x42, 0x4C, 0x4A, 0x42, 0x4C, 0x6A,\n\t0x42, 0x4D, 0x42, 0x42, 0x4D, 0x43, 0x42, 0x4D,\n\t// Bytes 1980 - 19bf\n\t0x44, 0x42, 0x4D, 0x52, 0x42, 0x4D, 0x56, 0x42,\n\t0x4D, 0x57, 0x42, 0x4E, 0x4A, 0x42, 0x4E, 0x6A,\n\t0x42, 0x4E, 0x6F, 0x42, 0x50, 0x48, 0x42, 0x50,\n\t0x52, 0x42, 0x50, 0x61, 0x42, 0x52, 0x73, 0x42,\n\t0x53, 0x44, 0x42, 0x53, 0x4D, 0x42, 0x53, 0x53,\n\t0x42, 0x53, 0x76, 0x42, 0x54, 0x4D, 0x42, 0x56,\n\t0x49, 0x42, 0x57, 0x43, 0x42, 0x57, 0x5A, 0x42,\n\t0x57, 0x62, 0x42, 0x58, 0x49, 0x42, 0x63, 0x63,\n\t// Bytes 19c0 - 19ff\n\t0x42, 0x63, 0x64, 0x42, 0x63, 0x6D, 0x42, 0x64,\n\t0x42, 0x42, 0x64, 0x61, 0x42, 0x64, 0x6C, 0x42,\n\t0x64, 0x6D, 0x42, 0x64, 0x7A, 0x42, 0x65, 0x56,\n\t0x42, 0x66, 0x66, 0x42, 0x66, 0x69, 0x42, 0x66,\n\t0x6C, 0x42, 0x66, 0x6D, 0x42, 0x68, 0x61, 0x42,\n\t0x69, 0x69, 0x42, 0x69, 0x6A, 0x42, 0x69, 0x6E,\n\t0x42, 0x69, 0x76, 0x42, 0x69, 0x78, 0x42, 0x6B,\n\t0x41, 0x42, 0x6B, 0x56, 0x42, 0x6B, 0x57, 0x42,\n\t// Bytes 1a00 - 1a3f\n\t0x6B, 0x67, 0x42, 0x6B, 0x6C, 0x42, 0x6B, 0x6D,\n\t0x42, 0x6B, 0x74, 0x42, 0x6C, 0x6A, 0x42, 0x6C,\n\t0x6D, 0x42, 0x6C, 0x6E, 0x42, 0x6C, 0x78, 0x42,\n\t0x6D, 0x32, 0x42, 0x6D, 0x33, 0x42, 0x6D, 0x41,\n\t0x42, 0x6D, 0x56, 0x42, 0x6D, 0x57, 0x42, 0x6D,\n\t0x62, 0x42, 0x6D, 0x67, 0x42, 0x6D, 0x6C, 0x42,\n\t0x6D, 0x6D, 0x42, 0x6D, 0x73, 0x42, 0x6E, 0x41,\n\t0x42, 0x6E, 0x46, 0x42, 0x6E, 0x56, 0x42, 0x6E,\n\t// Bytes 1a40 - 1a7f\n\t0x57, 0x42, 0x6E, 0x6A, 0x42, 0x6E, 0x6D, 0x42,\n\t0x6E, 0x73, 0x42, 0x6F, 0x56, 0x42, 0x70, 0x41,\n\t0x42, 0x70, 0x46, 0x42, 0x70, 0x56, 0x42, 0x70,\n\t0x57, 0x42, 0x70, 0x63, 0x42, 0x70, 0x73, 0x42,\n\t0x73, 0x72, 0x42, 0x73, 0x74, 0x42, 0x76, 0x69,\n\t0x42, 0x78, 0x69, 0x43, 0x28, 0x31, 0x29, 0x43,\n\t0x28, 0x32, 0x29, 0x43, 0x28, 0x33, 0x29, 0x43,\n\t0x28, 0x34, 0x29, 0x43, 0x28, 0x35, 0x29, 0x43,\n\t// Bytes 1a80 - 1abf\n\t0x28, 0x36, 0x29, 0x43, 0x28, 0x37, 0x29, 0x43,\n\t0x28, 0x38, 0x29, 0x43, 0x28, 0x39, 0x29, 0x43,\n\t0x28, 0x41, 0x29, 0x43, 0x28, 0x42, 0x29, 0x43,\n\t0x28, 0x43, 0x29, 0x43, 0x28, 0x44, 0x29, 0x43,\n\t0x28, 0x45, 0x29, 0x43, 0x28, 0x46, 0x29, 0x43,\n\t0x28, 0x47, 0x29, 0x43, 0x28, 0x48, 0x29, 0x43,\n\t0x28, 0x49, 0x29, 0x43, 0x28, 0x4A, 0x29, 0x43,\n\t0x28, 0x4B, 0x29, 0x43, 0x28, 0x4C, 0x29, 0x43,\n\t// Bytes 1ac0 - 1aff\n\t0x28, 0x4D, 0x29, 0x43, 0x28, 0x4E, 0x29, 0x43,\n\t0x28, 0x4F, 0x29, 0x43, 0x28, 0x50, 0x29, 0x43,\n\t0x28, 0x51, 0x29, 0x43, 0x28, 0x52, 0x29, 0x43,\n\t0x28, 0x53, 0x29, 0x43, 0x28, 0x54, 0x29, 0x43,\n\t0x28, 0x55, 0x29, 0x43, 0x28, 0x56, 0x29, 0x43,\n\t0x28, 0x57, 0x29, 0x43, 0x28, 0x58, 0x29, 0x43,\n\t0x28, 0x59, 0x29, 0x43, 0x28, 0x5A, 0x29, 0x43,\n\t0x28, 0x61, 0x29, 0x43, 0x28, 0x62, 0x29, 0x43,\n\t// Bytes 1b00 - 1b3f\n\t0x28, 0x63, 0x29, 0x43, 0x28, 0x64, 0x29, 0x43,\n\t0x28, 0x65, 0x29, 0x43, 0x28, 0x66, 0x29, 0x43,\n\t0x28, 0x67, 0x29, 0x43, 0x28, 0x68, 0x29, 0x43,\n\t0x28, 0x69, 0x29, 0x43, 0x28, 0x6A, 0x29, 0x43,\n\t0x28, 0x6B, 0x29, 0x43, 0x28, 0x6C, 0x29, 0x43,\n\t0x28, 0x6D, 0x29, 0x43, 0x28, 0x6E, 0x29, 0x43,\n\t0x28, 0x6F, 0x29, 0x43, 0x28, 0x70, 0x29, 0x43,\n\t0x28, 0x71, 0x29, 0x43, 0x28, 0x72, 0x29, 0x43,\n\t// Bytes 1b40 - 1b7f\n\t0x28, 0x73, 0x29, 0x43, 0x28, 0x74, 0x29, 0x43,\n\t0x28, 0x75, 0x29, 0x43, 0x28, 0x76, 0x29, 0x43,\n\t0x28, 0x77, 0x29, 0x43, 0x28, 0x78, 0x29, 0x43,\n\t0x28, 0x79, 0x29, 0x43, 0x28, 0x7A, 0x29, 0x43,\n\t0x2E, 0x2E, 0x2E, 0x43, 0x31, 0x30, 0x2E, 0x43,\n\t0x31, 0x31, 0x2E, 0x43, 0x31, 0x32, 0x2E, 0x43,\n\t0x31, 0x33, 0x2E, 0x43, 0x31, 0x34, 0x2E, 0x43,\n\t0x31, 0x35, 0x2E, 0x43, 0x31, 0x36, 0x2E, 0x43,\n\t// Bytes 1b80 - 1bbf\n\t0x31, 0x37, 0x2E, 0x43, 0x31, 0x38, 0x2E, 0x43,\n\t0x31, 0x39, 0x2E, 0x43, 0x32, 0x30, 0x2E, 0x43,\n\t0x3A, 0x3A, 0x3D, 0x43, 0x3D, 0x3D, 0x3D, 0x43,\n\t0x43, 0x6F, 0x2E, 0x43, 0x46, 0x41, 0x58, 0x43,\n\t0x47, 0x48, 0x7A, 0x43, 0x47, 0x50, 0x61, 0x43,\n\t0x49, 0x49, 0x49, 0x43, 0x4C, 0x54, 0x44, 0x43,\n\t0x4C, 0xC2, 0xB7, 0x43, 0x4D, 0x48, 0x7A, 0x43,\n\t0x4D, 0x50, 0x61, 0x43, 0x4D, 0xCE, 0xA9, 0x43,\n\t// Bytes 1bc0 - 1bff\n\t0x50, 0x50, 0x4D, 0x43, 0x50, 0x50, 0x56, 0x43,\n\t0x50, 0x54, 0x45, 0x43, 0x54, 0x45, 0x4C, 0x43,\n\t0x54, 0x48, 0x7A, 0x43, 0x56, 0x49, 0x49, 0x43,\n\t0x58, 0x49, 0x49, 0x43, 0x61, 0x2F, 0x63, 0x43,\n\t0x61, 0x2F, 0x73, 0x43, 0x61, 0xCA, 0xBE, 0x43,\n\t0x62, 0x61, 0x72, 0x43, 0x63, 0x2F, 0x6F, 0x43,\n\t0x63, 0x2F, 0x75, 0x43, 0x63, 0x61, 0x6C, 0x43,\n\t0x63, 0x6D, 0x32, 0x43, 0x63, 0x6D, 0x33, 0x43,\n\t// Bytes 1c00 - 1c3f\n\t0x64, 0x6D, 0x32, 0x43, 0x64, 0x6D, 0x33, 0x43,\n\t0x65, 0x72, 0x67, 0x43, 0x66, 0x66, 0x69, 0x43,\n\t0x66, 0x66, 0x6C, 0x43, 0x67, 0x61, 0x6C, 0x43,\n\t0x68, 0x50, 0x61, 0x43, 0x69, 0x69, 0x69, 0x43,\n\t0x6B, 0x48, 0x7A, 0x43, 0x6B, 0x50, 0x61, 0x43,\n\t0x6B, 0x6D, 0x32, 0x43, 0x6B, 0x6D, 0x33, 0x43,\n\t0x6B, 0xCE, 0xA9, 0x43, 0x6C, 0x6F, 0x67, 0x43,\n\t0x6C, 0xC2, 0xB7, 0x43, 0x6D, 0x69, 0x6C, 0x43,\n\t// Bytes 1c40 - 1c7f\n\t0x6D, 0x6D, 0x32, 0x43, 0x6D, 0x6D, 0x33, 0x43,\n\t0x6D, 0x6F, 0x6C, 0x43, 0x72, 0x61, 0x64, 0x43,\n\t0x76, 0x69, 0x69, 0x43, 0x78, 0x69, 0x69, 0x43,\n\t0xC2, 0xB0, 0x43, 0x43, 0xC2, 0xB0, 0x46, 0x43,\n\t0xCA, 0xBC, 0x6E, 0x43, 0xCE, 0xBC, 0x41, 0x43,\n\t0xCE, 0xBC, 0x46, 0x43, 0xCE, 0xBC, 0x56, 0x43,\n\t0xCE, 0xBC, 0x57, 0x43, 0xCE, 0xBC, 0x67, 0x43,\n\t0xCE, 0xBC, 0x6C, 0x43, 0xCE, 0xBC, 0x6D, 0x43,\n\t// Bytes 1c80 - 1cbf\n\t0xCE, 0xBC, 0x73, 0x44, 0x28, 0x31, 0x30, 0x29,\n\t0x44, 0x28, 0x31, 0x31, 0x29, 0x44, 0x28, 0x31,\n\t0x32, 0x29, 0x44, 0x28, 0x31, 0x33, 0x29, 0x44,\n\t0x28, 0x31, 0x34, 0x29, 0x44, 0x28, 0x31, 0x35,\n\t0x29, 0x44, 0x28, 0x31, 0x36, 0x29, 0x44, 0x28,\n\t0x31, 0x37, 0x29, 0x44, 0x28, 0x31, 0x38, 0x29,\n\t0x44, 0x28, 0x31, 0x39, 0x29, 0x44, 0x28, 0x32,\n\t0x30, 0x29, 0x44, 0x30, 0xE7, 0x82, 0xB9, 0x44,\n\t// Bytes 1cc0 - 1cff\n\t0x31, 0xE2, 0x81, 0x84, 0x44, 0x31, 0xE6, 0x97,\n\t0xA5, 0x44, 0x31, 0xE6, 0x9C, 0x88, 0x44, 0x31,\n\t0xE7, 0x82, 0xB9, 0x44, 0x32, 0xE6, 0x97, 0xA5,\n\t0x44, 0x32, 0xE6, 0x9C, 0x88, 0x44, 0x32, 0xE7,\n\t0x82, 0xB9, 0x44, 0x33, 0xE6, 0x97, 0xA5, 0x44,\n\t0x33, 0xE6, 0x9C, 0x88, 0x44, 0x33, 0xE7, 0x82,\n\t0xB9, 0x44, 0x34, 0xE6, 0x97, 0xA5, 0x44, 0x34,\n\t0xE6, 0x9C, 0x88, 0x44, 0x34, 0xE7, 0x82, 0xB9,\n\t// Bytes 1d00 - 1d3f\n\t0x44, 0x35, 0xE6, 0x97, 0xA5, 0x44, 0x35, 0xE6,\n\t0x9C, 0x88, 0x44, 0x35, 0xE7, 0x82, 0xB9, 0x44,\n\t0x36, 0xE6, 0x97, 0xA5, 0x44, 0x36, 0xE6, 0x9C,\n\t0x88, 0x44, 0x36, 0xE7, 0x82, 0xB9, 0x44, 0x37,\n\t0xE6, 0x97, 0xA5, 0x44, 0x37, 0xE6, 0x9C, 0x88,\n\t0x44, 0x37, 0xE7, 0x82, 0xB9, 0x44, 0x38, 0xE6,\n\t0x97, 0xA5, 0x44, 0x38, 0xE6, 0x9C, 0x88, 0x44,\n\t0x38, 0xE7, 0x82, 0xB9, 0x44, 0x39, 0xE6, 0x97,\n\t// Bytes 1d40 - 1d7f\n\t0xA5, 0x44, 0x39, 0xE6, 0x9C, 0x88, 0x44, 0x39,\n\t0xE7, 0x82, 0xB9, 0x44, 0x56, 0x49, 0x49, 0x49,\n\t0x44, 0x61, 0x2E, 0x6D, 0x2E, 0x44, 0x6B, 0x63,\n\t0x61, 0x6C, 0x44, 0x70, 0x2E, 0x6D, 0x2E, 0x44,\n\t0x76, 0x69, 0x69, 0x69, 0x44, 0xD5, 0xA5, 0xD6,\n\t0x82, 0x44, 0xD5, 0xB4, 0xD5, 0xA5, 0x44, 0xD5,\n\t0xB4, 0xD5, 0xAB, 0x44, 0xD5, 0xB4, 0xD5, 0xAD,\n\t0x44, 0xD5, 0xB4, 0xD5, 0xB6, 0x44, 0xD5, 0xBE,\n\t// Bytes 1d80 - 1dbf\n\t0xD5, 0xB6, 0x44, 0xD7, 0x90, 0xD7, 0x9C, 0x44,\n\t0xD8, 0xA7, 0xD9, 0xB4, 0x44, 0xD8, 0xA8, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xA8, 0xD8, 0xAD, 0x44, 0xD8,\n\t0xA8, 0xD8, 0xAE, 0x44, 0xD8, 0xA8, 0xD8, 0xB1,\n\t0x44, 0xD8, 0xA8, 0xD8, 0xB2, 0x44, 0xD8, 0xA8,\n\t0xD9, 0x85, 0x44, 0xD8, 0xA8, 0xD9, 0x86, 0x44,\n\t0xD8, 0xA8, 0xD9, 0x87, 0x44, 0xD8, 0xA8, 0xD9,\n\t0x89, 0x44, 0xD8, 0xA8, 0xD9, 0x8A, 0x44, 0xD8,\n\t// Bytes 1dc0 - 1dff\n\t0xAA, 0xD8, 0xAC, 0x44, 0xD8, 0xAA, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xAA, 0xD8, 0xAE, 0x44, 0xD8, 0xAA,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xAA, 0xD8, 0xB2, 0x44,\n\t0xD8, 0xAA, 0xD9, 0x85, 0x44, 0xD8, 0xAA, 0xD9,\n\t0x86, 0x44, 0xD8, 0xAA, 0xD9, 0x87, 0x44, 0xD8,\n\t0xAA, 0xD9, 0x89, 0x44, 0xD8, 0xAA, 0xD9, 0x8A,\n\t0x44, 0xD8, 0xAB, 0xD8, 0xAC, 0x44, 0xD8, 0xAB,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xAB, 0xD8, 0xB2, 0x44,\n\t// Bytes 1e00 - 1e3f\n\t0xD8, 0xAB, 0xD9, 0x85, 0x44, 0xD8, 0xAB, 0xD9,\n\t0x86, 0x44, 0xD8, 0xAB, 0xD9, 0x87, 0x44, 0xD8,\n\t0xAB, 0xD9, 0x89, 0x44, 0xD8, 0xAB, 0xD9, 0x8A,\n\t0x44, 0xD8, 0xAC, 0xD8, 0xAD, 0x44, 0xD8, 0xAC,\n\t0xD9, 0x85, 0x44, 0xD8, 0xAC, 0xD9, 0x89, 0x44,\n\t0xD8, 0xAC, 0xD9, 0x8A, 0x44, 0xD8, 0xAD, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xAD, 0xD9, 0x85, 0x44, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x44, 0xD8, 0xAD, 0xD9, 0x8A,\n\t// Bytes 1e40 - 1e7f\n\t0x44, 0xD8, 0xAE, 0xD8, 0xAC, 0x44, 0xD8, 0xAE,\n\t0xD8, 0xAD, 0x44, 0xD8, 0xAE, 0xD9, 0x85, 0x44,\n\t0xD8, 0xAE, 0xD9, 0x89, 0x44, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x44, 0xD8, 0xB3, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xB3, 0xD8, 0xAD, 0x44, 0xD8, 0xB3, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xB3, 0xD8, 0xB1, 0x44, 0xD8, 0xB3,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB3, 0xD9, 0x87, 0x44,\n\t0xD8, 0xB3, 0xD9, 0x89, 0x44, 0xD8, 0xB3, 0xD9,\n\t// Bytes 1e80 - 1ebf\n\t0x8A, 0x44, 0xD8, 0xB4, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xB4, 0xD8, 0xAD, 0x44, 0xD8, 0xB4, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xB4, 0xD8, 0xB1, 0x44, 0xD8, 0xB4,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB4, 0xD9, 0x87, 0x44,\n\t0xD8, 0xB4, 0xD9, 0x89, 0x44, 0xD8, 0xB4, 0xD9,\n\t0x8A, 0x44, 0xD8, 0xB5, 0xD8, 0xAD, 0x44, 0xD8,\n\t0xB5, 0xD8, 0xAE, 0x44, 0xD8, 0xB5, 0xD8, 0xB1,\n\t0x44, 0xD8, 0xB5, 0xD9, 0x85, 0x44, 0xD8, 0xB5,\n\t// Bytes 1ec0 - 1eff\n\t0xD9, 0x89, 0x44, 0xD8, 0xB5, 0xD9, 0x8A, 0x44,\n\t0xD8, 0xB6, 0xD8, 0xAC, 0x44, 0xD8, 0xB6, 0xD8,\n\t0xAD, 0x44, 0xD8, 0xB6, 0xD8, 0xAE, 0x44, 0xD8,\n\t0xB6, 0xD8, 0xB1, 0x44, 0xD8, 0xB6, 0xD9, 0x85,\n\t0x44, 0xD8, 0xB6, 0xD9, 0x89, 0x44, 0xD8, 0xB6,\n\t0xD9, 0x8A, 0x44, 0xD8, 0xB7, 0xD8, 0xAD, 0x44,\n\t0xD8, 0xB7, 0xD9, 0x85, 0x44, 0xD8, 0xB7, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB7, 0xD9, 0x8A, 0x44, 0xD8,\n\t// Bytes 1f00 - 1f3f\n\t0xB8, 0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD8, 0xAC,\n\t0x44, 0xD8, 0xB9, 0xD9, 0x85, 0x44, 0xD8, 0xB9,\n\t0xD9, 0x89, 0x44, 0xD8, 0xB9, 0xD9, 0x8A, 0x44,\n\t0xD8, 0xBA, 0xD8, 0xAC, 0x44, 0xD8, 0xBA, 0xD9,\n\t0x85, 0x44, 0xD8, 0xBA, 0xD9, 0x89, 0x44, 0xD8,\n\t0xBA, 0xD9, 0x8A, 0x44, 0xD9, 0x81, 0xD8, 0xAC,\n\t0x44, 0xD9, 0x81, 0xD8, 0xAD, 0x44, 0xD9, 0x81,\n\t0xD8, 0xAE, 0x44, 0xD9, 0x81, 0xD9, 0x85, 0x44,\n\t// Bytes 1f40 - 1f7f\n\t0xD9, 0x81, 0xD9, 0x89, 0x44, 0xD9, 0x81, 0xD9,\n\t0x8A, 0x44, 0xD9, 0x82, 0xD8, 0xAD, 0x44, 0xD9,\n\t0x82, 0xD9, 0x85, 0x44, 0xD9, 0x82, 0xD9, 0x89,\n\t0x44, 0xD9, 0x82, 0xD9, 0x8A, 0x44, 0xD9, 0x83,\n\t0xD8, 0xA7, 0x44, 0xD9, 0x83, 0xD8, 0xAC, 0x44,\n\t0xD9, 0x83, 0xD8, 0xAD, 0x44, 0xD9, 0x83, 0xD8,\n\t0xAE, 0x44, 0xD9, 0x83, 0xD9, 0x84, 0x44, 0xD9,\n\t0x83, 0xD9, 0x85, 0x44, 0xD9, 0x83, 0xD9, 0x89,\n\t// Bytes 1f80 - 1fbf\n\t0x44, 0xD9, 0x83, 0xD9, 0x8A, 0x44, 0xD9, 0x84,\n\t0xD8, 0xA7, 0x44, 0xD9, 0x84, 0xD8, 0xAC, 0x44,\n\t0xD9, 0x84, 0xD8, 0xAD, 0x44, 0xD9, 0x84, 0xD8,\n\t0xAE, 0x44, 0xD9, 0x84, 0xD9, 0x85, 0x44, 0xD9,\n\t0x84, 0xD9, 0x87, 0x44, 0xD9, 0x84, 0xD9, 0x89,\n\t0x44, 0xD9, 0x84, 0xD9, 0x8A, 0x44, 0xD9, 0x85,\n\t0xD8, 0xA7, 0x44, 0xD9, 0x85, 0xD8, 0xAC, 0x44,\n\t0xD9, 0x85, 0xD8, 0xAD, 0x44, 0xD9, 0x85, 0xD8,\n\t// Bytes 1fc0 - 1fff\n\t0xAE, 0x44, 0xD9, 0x85, 0xD9, 0x85, 0x44, 0xD9,\n\t0x85, 0xD9, 0x89, 0x44, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x44, 0xD9, 0x86, 0xD8, 0xAC, 0x44, 0xD9, 0x86,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x86, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x86, 0xD8, 0xB1, 0x44, 0xD9, 0x86, 0xD8,\n\t0xB2, 0x44, 0xD9, 0x86, 0xD9, 0x85, 0x44, 0xD9,\n\t0x86, 0xD9, 0x86, 0x44, 0xD9, 0x86, 0xD9, 0x87,\n\t0x44, 0xD9, 0x86, 0xD9, 0x89, 0x44, 0xD9, 0x86,\n\t// Bytes 2000 - 203f\n\t0xD9, 0x8A, 0x44, 0xD9, 0x87, 0xD8, 0xAC, 0x44,\n\t0xD9, 0x87, 0xD9, 0x85, 0x44, 0xD9, 0x87, 0xD9,\n\t0x89, 0x44, 0xD9, 0x87, 0xD9, 0x8A, 0x44, 0xD9,\n\t0x88, 0xD9, 0xB4, 0x44, 0xD9, 0x8A, 0xD8, 0xAC,\n\t0x44, 0xD9, 0x8A, 0xD8, 0xAD, 0x44, 0xD9, 0x8A,\n\t0xD8, 0xAE, 0x44, 0xD9, 0x8A, 0xD8, 0xB1, 0x44,\n\t0xD9, 0x8A, 0xD8, 0xB2, 0x44, 0xD9, 0x8A, 0xD9,\n\t0x85, 0x44, 0xD9, 0x8A, 0xD9, 0x86, 0x44, 0xD9,\n\t// Bytes 2040 - 207f\n\t0x8A, 0xD9, 0x87, 0x44, 0xD9, 0x8A, 0xD9, 0x89,\n\t0x44, 0xD9, 0x8A, 0xD9, 0x8A, 0x44, 0xD9, 0x8A,\n\t0xD9, 0xB4, 0x44, 0xDB, 0x87, 0xD9, 0xB4, 0x45,\n\t0x28, 0xE1, 0x84, 0x80, 0x29, 0x45, 0x28, 0xE1,\n\t0x84, 0x82, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x83,\n\t0x29, 0x45, 0x28, 0xE1, 0x84, 0x85, 0x29, 0x45,\n\t0x28, 0xE1, 0x84, 0x86, 0x29, 0x45, 0x28, 0xE1,\n\t0x84, 0x87, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x89,\n\t// Bytes 2080 - 20bf\n\t0x29, 0x45, 0x28, 0xE1, 0x84, 0x8B, 0x29, 0x45,\n\t0x28, 0xE1, 0x84, 0x8C, 0x29, 0x45, 0x28, 0xE1,\n\t0x84, 0x8E, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8F,\n\t0x29, 0x45, 0x28, 0xE1, 0x84, 0x90, 0x29, 0x45,\n\t0x28, 0xE1, 0x84, 0x91, 0x29, 0x45, 0x28, 0xE1,\n\t0x84, 0x92, 0x29, 0x45, 0x28, 0xE4, 0xB8, 0x80,\n\t0x29, 0x45, 0x28, 0xE4, 0xB8, 0x83, 0x29, 0x45,\n\t0x28, 0xE4, 0xB8, 0x89, 0x29, 0x45, 0x28, 0xE4,\n\t// Bytes 20c0 - 20ff\n\t0xB9, 0x9D, 0x29, 0x45, 0x28, 0xE4, 0xBA, 0x8C,\n\t0x29, 0x45, 0x28, 0xE4, 0xBA, 0x94, 0x29, 0x45,\n\t0x28, 0xE4, 0xBB, 0xA3, 0x29, 0x45, 0x28, 0xE4,\n\t0xBC, 0x81, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x91,\n\t0x29, 0x45, 0x28, 0xE5, 0x85, 0xAB, 0x29, 0x45,\n\t0x28, 0xE5, 0x85, 0xAD, 0x29, 0x45, 0x28, 0xE5,\n\t0x8A, 0xB4, 0x29, 0x45, 0x28, 0xE5, 0x8D, 0x81,\n\t0x29, 0x45, 0x28, 0xE5, 0x8D, 0x94, 0x29, 0x45,\n\t// Bytes 2100 - 213f\n\t0x28, 0xE5, 0x90, 0x8D, 0x29, 0x45, 0x28, 0xE5,\n\t0x91, 0xBC, 0x29, 0x45, 0x28, 0xE5, 0x9B, 0x9B,\n\t0x29, 0x45, 0x28, 0xE5, 0x9C, 0x9F, 0x29, 0x45,\n\t0x28, 0xE5, 0xAD, 0xA6, 0x29, 0x45, 0x28, 0xE6,\n\t0x97, 0xA5, 0x29, 0x45, 0x28, 0xE6, 0x9C, 0x88,\n\t0x29, 0x45, 0x28, 0xE6, 0x9C, 0x89, 0x29, 0x45,\n\t0x28, 0xE6, 0x9C, 0xA8, 0x29, 0x45, 0x28, 0xE6,\n\t0xA0, 0xAA, 0x29, 0x45, 0x28, 0xE6, 0xB0, 0xB4,\n\t// Bytes 2140 - 217f\n\t0x29, 0x45, 0x28, 0xE7, 0x81, 0xAB, 0x29, 0x45,\n\t0x28, 0xE7, 0x89, 0xB9, 0x29, 0x45, 0x28, 0xE7,\n\t0x9B, 0xA3, 0x29, 0x45, 0x28, 0xE7, 0xA4, 0xBE,\n\t0x29, 0x45, 0x28, 0xE7, 0xA5, 0x9D, 0x29, 0x45,\n\t0x28, 0xE7, 0xA5, 0xAD, 0x29, 0x45, 0x28, 0xE8,\n\t0x87, 0xAA, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xB3,\n\t0x29, 0x45, 0x28, 0xE8, 0xB2, 0xA1, 0x29, 0x45,\n\t0x28, 0xE8, 0xB3, 0x87, 0x29, 0x45, 0x28, 0xE9,\n\t// Bytes 2180 - 21bf\n\t0x87, 0x91, 0x29, 0x45, 0x30, 0xE2, 0x81, 0x84,\n\t0x33, 0x45, 0x31, 0x30, 0xE6, 0x97, 0xA5, 0x45,\n\t0x31, 0x30, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x30,\n\t0xE7, 0x82, 0xB9, 0x45, 0x31, 0x31, 0xE6, 0x97,\n\t0xA5, 0x45, 0x31, 0x31, 0xE6, 0x9C, 0x88, 0x45,\n\t0x31, 0x31, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x32,\n\t0xE6, 0x97, 0xA5, 0x45, 0x31, 0x32, 0xE6, 0x9C,\n\t0x88, 0x45, 0x31, 0x32, 0xE7, 0x82, 0xB9, 0x45,\n\t// Bytes 21c0 - 21ff\n\t0x31, 0x33, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x33,\n\t0xE7, 0x82, 0xB9, 0x45, 0x31, 0x34, 0xE6, 0x97,\n\t0xA5, 0x45, 0x31, 0x34, 0xE7, 0x82, 0xB9, 0x45,\n\t0x31, 0x35, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x35,\n\t0xE7, 0x82, 0xB9, 0x45, 0x31, 0x36, 0xE6, 0x97,\n\t0xA5, 0x45, 0x31, 0x36, 0xE7, 0x82, 0xB9, 0x45,\n\t0x31, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x37,\n\t0xE7, 0x82, 0xB9, 0x45, 0x31, 0x38, 0xE6, 0x97,\n\t// Bytes 2200 - 223f\n\t0xA5, 0x45, 0x31, 0x38, 0xE7, 0x82, 0xB9, 0x45,\n\t0x31, 0x39, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x39,\n\t0xE7, 0x82, 0xB9, 0x45, 0x31, 0xE2, 0x81, 0x84,\n\t0x32, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x33, 0x45,\n\t0x31, 0xE2, 0x81, 0x84, 0x34, 0x45, 0x31, 0xE2,\n\t0x81, 0x84, 0x35, 0x45, 0x31, 0xE2, 0x81, 0x84,\n\t0x36, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x37, 0x45,\n\t0x31, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x31, 0xE2,\n\t// Bytes 2240 - 227f\n\t0x81, 0x84, 0x39, 0x45, 0x32, 0x30, 0xE6, 0x97,\n\t0xA5, 0x45, 0x32, 0x30, 0xE7, 0x82, 0xB9, 0x45,\n\t0x32, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x31,\n\t0xE7, 0x82, 0xB9, 0x45, 0x32, 0x32, 0xE6, 0x97,\n\t0xA5, 0x45, 0x32, 0x32, 0xE7, 0x82, 0xB9, 0x45,\n\t0x32, 0x33, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x33,\n\t0xE7, 0x82, 0xB9, 0x45, 0x32, 0x34, 0xE6, 0x97,\n\t0xA5, 0x45, 0x32, 0x34, 0xE7, 0x82, 0xB9, 0x45,\n\t// Bytes 2280 - 22bf\n\t0x32, 0x35, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x36,\n\t0xE6, 0x97, 0xA5, 0x45, 0x32, 0x37, 0xE6, 0x97,\n\t0xA5, 0x45, 0x32, 0x38, 0xE6, 0x97, 0xA5, 0x45,\n\t0x32, 0x39, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0xE2,\n\t0x81, 0x84, 0x33, 0x45, 0x32, 0xE2, 0x81, 0x84,\n\t0x35, 0x45, 0x33, 0x30, 0xE6, 0x97, 0xA5, 0x45,\n\t0x33, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0xE2,\n\t0x81, 0x84, 0x34, 0x45, 0x33, 0xE2, 0x81, 0x84,\n\t// Bytes 22c0 - 22ff\n\t0x35, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x38, 0x45,\n\t0x34, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x35, 0xE2,\n\t0x81, 0x84, 0x36, 0x45, 0x35, 0xE2, 0x81, 0x84,\n\t0x38, 0x45, 0x37, 0xE2, 0x81, 0x84, 0x38, 0x45,\n\t0x41, 0xE2, 0x88, 0x95, 0x6D, 0x45, 0x56, 0xE2,\n\t0x88, 0x95, 0x6D, 0x45, 0x6D, 0xE2, 0x88, 0x95,\n\t0x73, 0x46, 0x31, 0xE2, 0x81, 0x84, 0x31, 0x30,\n\t0x46, 0x43, 0xE2, 0x88, 0x95, 0x6B, 0x67, 0x46,\n\t// Bytes 2300 - 233f\n\t0x6D, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x46, 0xD8,\n\t0xA8, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xA8,\n\t0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD8, 0xAA, 0xD8,\n\t0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAC,\n\t0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAC,\n\t0x46, 0xD8, 0xAA, 0xD8, 0xAD, 0xD9, 0x85, 0x46,\n\t0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD8,\n\t// Bytes 2340 - 237f\n\t0xAA, 0xD8, 0xAE, 0xD9, 0x89, 0x46, 0xD8, 0xAA,\n\t0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD8, 0xAA, 0xD9,\n\t0x85, 0xD8, 0xAC, 0x46, 0xD8, 0xAA, 0xD9, 0x85,\n\t0xD8, 0xAD, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8,\n\t0xAE, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x89,\n\t0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xAC,\n\t// Bytes 2380 - 23bf\n\t0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xAC, 0xD9,\n\t0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x89,\n\t0x46, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xB3, 0xD8, 0xAC, 0xD8, 0xAD, 0x46, 0xD8,\n\t0xB3, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD8, 0xB3,\n\t0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xB3, 0xD8,\n\t// Bytes 23c0 - 23ff\n\t0xAE, 0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAE,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD9, 0x85, 0xD8,\n\t0xAC, 0x46, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAD,\n\t0x46, 0xD8, 0xB3, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t0xD8, 0xB4, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xB4, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xB4,\n\t0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD9,\n\t0x85, 0xD8, 0xAE, 0x46, 0xD8, 0xB4, 0xD9, 0x85,\n\t// Bytes 2400 - 243f\n\t0xD9, 0x85, 0x46, 0xD8, 0xB5, 0xD8, 0xAD, 0xD8,\n\t0xAD, 0x46, 0xD8, 0xB5, 0xD8, 0xAD, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89, 0x46,\n\t0xD8, 0xB5, 0xD9, 0x84, 0xDB, 0x92, 0x46, 0xD8,\n\t0xB5, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB6,\n\t0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xB6, 0xD8,\n\t0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB6, 0xD8, 0xAE,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB7, 0xD9, 0x85, 0xD8,\n\t// Bytes 2440 - 247f\n\t0xAD, 0x46, 0xD8, 0xB7, 0xD9, 0x85, 0xD9, 0x85,\n\t0x46, 0xD8, 0xB7, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xB9, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD8,\n\t0xB9, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB9,\n\t0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xB9, 0xD9,\n\t0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xBA, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x8A,\n\t// Bytes 2480 - 24bf\n\t0x46, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x85, 0x46,\n\t0xD9, 0x81, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9,\n\t0x82, 0xD9, 0x84, 0xDB, 0x92, 0x46, 0xD9, 0x82,\n\t0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x82, 0xD9,\n\t0x85, 0xD9, 0x85, 0x46, 0xD9, 0x82, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x83, 0xD9, 0x85, 0xD9,\n\t0x85, 0x46, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x84, 0xD8, 0xAC, 0xD8, 0xAC, 0x46,\n\t// Bytes 24c0 - 24ff\n\t0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD9,\n\t0x84, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x84,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x84, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAE, 0xD9,\n\t0x85, 0x46, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xAD,\n\t0x46, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAD, 0x46, 0xD9,\n\t// Bytes 2500 - 253f\n\t0x85, 0xD8, 0xAC, 0xD8, 0xAE, 0x46, 0xD9, 0x85,\n\t0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, 0xAD,\n\t0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD9,\n\t0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9,\n\t0x85, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD9, 0x85,\n\t// Bytes 2540 - 257f\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x86, 0xD8, 0xAC,\n\t0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9,\n\t0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x85, 0x46,\n\t0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD9,\n\t0x86, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x86,\n\t0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD9,\n\t// Bytes 2580 - 25bf\n\t0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x87, 0xD9, 0x85,\n\t0xD8, 0xAC, 0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD9,\n\t0x85, 0x46, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xD8, 0xA7, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xD8, 0xAC, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t// Bytes 25c0 - 25ff\n\t0xD8, 0xAD, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8,\n\t0xAE, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xB1,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xB2, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xD9, 0x86, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xD9, 0x87, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xD9, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xD9, 0x89, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,\n\t// Bytes 2600 - 263f\n\t0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x86,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x87, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x88, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xDB, 0x90, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xDB, 0x95, 0x46, 0xE0, 0xB9, 0x8D,\n\t0xE0, 0xB8, 0xB2, 0x46, 0xE0, 0xBA, 0xAB, 0xE0,\n\t0xBA, 0x99, 0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA,\n\t0xA1, 0x46, 0xE0, 0xBB, 0x8D, 0xE0, 0xBA, 0xB2,\n\t// Bytes 2640 - 267f\n\t0x46, 0xE0, 0xBD, 0x80, 0xE0, 0xBE, 0xB5, 0x46,\n\t0xE0, 0xBD, 0x82, 0xE0, 0xBE, 0xB7, 0x46, 0xE0,\n\t0xBD, 0x8C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD,\n\t0x91, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x96,\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x9B, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0x90, 0xE0, 0xBE,\n\t0xB5, 0x46, 0xE0, 0xBE, 0x92, 0xE0, 0xBE, 0xB7,\n\t0x46, 0xE0, 0xBE, 0x9C, 0xE0, 0xBE, 0xB7, 0x46,\n\t// Bytes 2680 - 26bf\n\t0xE0, 0xBE, 0xA1, 0xE0, 0xBE, 0xB7, 0x46, 0xE0,\n\t0xBE, 0xA6, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,\n\t0xAB, 0xE0, 0xBE, 0xB7, 0x46, 0xE2, 0x80, 0xB2,\n\t0xE2, 0x80, 0xB2, 0x46, 0xE2, 0x80, 0xB5, 0xE2,\n\t0x80, 0xB5, 0x46, 0xE2, 0x88, 0xAB, 0xE2, 0x88,\n\t0xAB, 0x46, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE,\n\t0x46, 0xE3, 0x81, 0xBB, 0xE3, 0x81, 0x8B, 0x46,\n\t0xE3, 0x82, 0x88, 0xE3, 0x82, 0x8A, 0x46, 0xE3,\n\t// Bytes 26c0 - 26ff\n\t0x82, 0xAD, 0xE3, 0x83, 0xAD, 0x46, 0xE3, 0x82,\n\t0xB3, 0xE3, 0x82, 0xB3, 0x46, 0xE3, 0x82, 0xB3,\n\t0xE3, 0x83, 0x88, 0x46, 0xE3, 0x83, 0x88, 0xE3,\n\t0x83, 0xB3, 0x46, 0xE3, 0x83, 0x8A, 0xE3, 0x83,\n\t0x8E, 0x46, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xB3,\n\t0x46, 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xAA, 0x46,\n\t0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xA9, 0x46, 0xE3,\n\t0x83, 0xAC, 0xE3, 0x83, 0xA0, 0x46, 0xE5, 0xA4,\n\t// Bytes 2700 - 273f\n\t0xA7, 0xE6, 0xAD, 0xA3, 0x46, 0xE5, 0xB9, 0xB3,\n\t0xE6, 0x88, 0x90, 0x46, 0xE6, 0x98, 0x8E, 0xE6,\n\t0xB2, 0xBB, 0x46, 0xE6, 0x98, 0xAD, 0xE5, 0x92,\n\t0x8C, 0x47, 0x72, 0x61, 0x64, 0xE2, 0x88, 0x95,\n\t0x73, 0x47, 0xE3, 0x80, 0x94, 0x53, 0xE3, 0x80,\n\t0x95, 0x48, 0x28, 0xE1, 0x84, 0x80, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x82, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x83,\n\t// Bytes 2740 - 277f\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x85, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,\n\t0x84, 0x86, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x29,\n\t0x48, 0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1,\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x8C, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8C, 0xE1,\n\t// Bytes 2780 - 27bf\n\t0x85, 0xAE, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8E,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x8F, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,\n\t0x84, 0x90, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x29,\n\t0x48, 0x72, 0x61, 0x64, 0xE2, 0x88, 0x95, 0x73,\n\t0x32, 0x48, 0xD8, 0xA7, 0xD9, 0x83, 0xD8, 0xA8,\n\t// Bytes 27c0 - 27ff\n\t0xD8, 0xB1, 0x48, 0xD8, 0xA7, 0xD9, 0x84, 0xD9,\n\t0x84, 0xD9, 0x87, 0x48, 0xD8, 0xB1, 0xD8, 0xB3,\n\t0xD9, 0x88, 0xD9, 0x84, 0x48, 0xD8, 0xB1, 0xDB,\n\t0x8C, 0xD8, 0xA7, 0xD9, 0x84, 0x48, 0xD8, 0xB5,\n\t0xD9, 0x84, 0xD8, 0xB9, 0xD9, 0x85, 0x48, 0xD8,\n\t0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x87, 0x48,\n\t0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAF,\n\t0x48, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, 0x84, 0xD9,\n\t// Bytes 2800 - 283f\n\t0x85, 0x49, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0xE2, 0x80, 0xB2, 0x49, 0xE2, 0x80, 0xB5, 0xE2,\n\t0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x49, 0xE2, 0x88,\n\t0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x49,\n\t0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0xE2, 0x88,\n\t0xAE, 0x49, 0xE3, 0x80, 0x94, 0xE4, 0xB8, 0x89,\n\t0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE4,\n\t0xBA, 0x8C, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,\n\t// Bytes 2840 - 287f\n\t0x94, 0xE5, 0x8B, 0x9D, 0xE3, 0x80, 0x95, 0x49,\n\t0xE3, 0x80, 0x94, 0xE5, 0xAE, 0x89, 0xE3, 0x80,\n\t0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x89, 0x93,\n\t0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6,\n\t0x95, 0x97, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,\n\t0x94, 0xE6, 0x9C, 0xAC, 0xE3, 0x80, 0x95, 0x49,\n\t0xE3, 0x80, 0x94, 0xE7, 0x82, 0xB9, 0xE3, 0x80,\n\t0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7, 0x9B, 0x97,\n\t// Bytes 2880 - 28bf\n\t0xE3, 0x80, 0x95, 0x49, 0xE3, 0x82, 0xA2, 0xE3,\n\t0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0x49,\n\t0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA9, 0xE3, 0x83,\n\t0xB3, 0x49, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82, 0xAA, 0xE3,\n\t0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x49, 0xE3, 0x82,\n\t0xAB, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAA, 0x49,\n\t// Bytes 28c0 - 28ff\n\t0xE3, 0x82, 0xB1, 0xE3, 0x83, 0xBC, 0xE3, 0x82,\n\t0xB9, 0x49, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x83, 0x8A, 0x49, 0xE3, 0x82, 0xBB, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x83, 0x81, 0x49, 0xE3, 0x82,\n\t0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0x49,\n\t0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0xE3, 0x82,\n\t0xB7, 0x49, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x8E, 0xE3,\n\t// Bytes 2900 - 293f\n\t0x83, 0x83, 0xE3, 0x83, 0x88, 0x49, 0xE3, 0x83,\n\t0x8F, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0x84, 0x49,\n\t0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xAB, 0x49, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x82, 0xB3, 0x49, 0xE3, 0x83, 0x95, 0xE3,\n\t0x83, 0xA9, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83,\n\t0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xBD, 0x49,\n\t0xE3, 0x83, 0x98, 0xE3, 0x83, 0xAB, 0xE3, 0x83,\n\t// Bytes 2940 - 297f\n\t0x84, 0x49, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9B, 0xE3,\n\t0x83, 0xBC, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83,\n\t0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAB, 0x49,\n\t0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x83, 0xE3, 0x83,\n\t0x8F, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x82, 0xAF, 0x49, 0xE3, 0x83, 0xA4, 0xE3,\n\t0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83,\n\t// Bytes 2980 - 29bf\n\t0xA6, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3, 0x49,\n\t0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3, 0x83,\n\t0x88, 0x4C, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x4C, 0xE2,\n\t0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB,\n\t0xE2, 0x88, 0xAB, 0x4C, 0xE3, 0x82, 0xA2, 0xE3,\n\t0x83, 0xAB, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA1,\n\t0x4C, 0xE3, 0x82, 0xA8, 0xE3, 0x83, 0xBC, 0xE3,\n\t// Bytes 29c0 - 29ff\n\t0x82, 0xAB, 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82,\n\t0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAD, 0xE3,\n\t0x83, 0xB3, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9E, 0x4C,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xA9, 0xE3, 0x83,\n\t0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x82, 0xAB,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAA, 0xE3, 0x83,\n\t0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99,\n\t// Bytes 2a00 - 2a3f\n\t0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xBC, 0x4C, 0xE3,\n\t0x82, 0xAD, 0xE3, 0x83, 0xA5, 0xE3, 0x83, 0xAA,\n\t0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAF, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0,\n\t0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3,\n\t0x83, 0xBC, 0xE3, 0x83, 0x8D, 0x4C, 0xE3, 0x82,\n\t0xB5, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF, 0xE3,\n\t0x83, 0xAB, 0x4C, 0xE3, 0x82, 0xBF, 0xE3, 0x82,\n\t// Bytes 2a40 - 2a7f\n\t0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0x4C,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0x84, 0x4C, 0xE3, 0x83, 0x92,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xAF, 0xE3, 0x83,\n\t0xAB, 0x4C, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA3,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0x4C, 0xE3,\n\t0x83, 0x98, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x82, 0xBF, 0x4C, 0xE3, 0x83, 0x98, 0xE3,\n\t// Bytes 2a80 - 2abf\n\t0x82, 0x9A, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0x92,\n\t0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83,\n\t0x9B, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0x88, 0x4C, 0xE3, 0x83, 0x9E, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0x4C,\n\t0xE3, 0x83, 0x9F, 0xE3, 0x82, 0xAF, 0xE3, 0x83,\n\t0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3, 0x83, 0xA1,\n\t// Bytes 2ac0 - 2aff\n\t0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83,\n\t0xAB, 0x4C, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x83,\n\t0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x83, 0xBC, 0x4C, 0xE6, 0xA0, 0xAA, 0xE5,\n\t0xBC, 0x8F, 0xE4, 0xBC, 0x9A, 0xE7, 0xA4, 0xBE,\n\t0x4E, 0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA9,\n\t0xE1, 0x84, 0x92, 0xE1, 0x85, 0xAE, 0x29, 0x4F,\n\t// Bytes 2b00 - 2b3f\n\t0xD8, 0xAC, 0xD9, 0x84, 0x20, 0xD8, 0xAC, 0xD9,\n\t0x84, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x87, 0x4F,\n\t0xE3, 0x82, 0xA2, 0xE3, 0x83, 0x8F, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0x4F,\n\t0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3, 0xE3, 0x83,\n\t0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA2, 0x4F,\n\t0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x83,\n\t0xAF, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x4F,\n\t// Bytes 2b40 - 2b7f\n\t0xE3, 0x82, 0xB5, 0xE3, 0x83, 0xB3, 0xE3, 0x83,\n\t0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x4F,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xAB, 0x4F,\n\t0xE3, 0x83, 0x98, 0xE3, 0x82, 0xAF, 0xE3, 0x82,\n\t0xBF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x4F,\n\t0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0x4F,\n\t// Bytes 2b80 - 2bbf\n\t0xE3, 0x83, 0x9E, 0xE3, 0x83, 0xB3, 0xE3, 0x82,\n\t0xB7, 0xE3, 0x83, 0xA7, 0xE3, 0x83, 0xB3, 0x4F,\n\t0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x4F,\n\t0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x51,\n\t0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA9, 0xE1,\n\t0x84, 0x8C, 0xE1, 0x85, 0xA5, 0xE1, 0x86, 0xAB,\n\t// Bytes 2bc0 - 2bff\n\t0x29, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xBF, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xBC, 0x52, 0xE3, 0x82, 0xAD,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0x52,\n\t0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x83,\n\t0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3,\n\t0x83, 0xAB, 0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x82,\n\t// Bytes 2c00 - 2c3f\n\t0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0xE3,\n\t0x83, 0x88, 0xE3, 0x83, 0xB3, 0x52, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xBB, 0xE3,\n\t0x82, 0x99, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAD,\n\t0x52, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3,\n\t0x83, 0xBC, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0x52, 0xE3, 0x83, 0x92, 0xE3,\n\t0x82, 0x9A, 0xE3, 0x82, 0xA2, 0xE3, 0x82, 0xB9,\n\t// Bytes 2c40 - 2c7f\n\t0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52, 0xE3,\n\t0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x83,\n\t0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xA7, 0xE3, 0x83,\n\t0xAB, 0x52, 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xAA,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0xAC,\n\t0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82,\n\t0xB1, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3, 0x61,\n\t// Bytes 2c80 - 2cbf\n\t0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89, 0x20, 0xD8,\n\t0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87, 0x20,\n\t0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x87,\n\t0x20, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, 0x84, 0xD9,\n\t0x85, 0x06, 0xE0, 0xA7, 0x87, 0xE0, 0xA6, 0xBE,\n\t0x01, 0x06, 0xE0, 0xA7, 0x87, 0xE0, 0xA7, 0x97,\n\t0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0, 0xAC, 0xBE,\n\t0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0, 0xAD, 0x96,\n\t// Bytes 2cc0 - 2cff\n\t0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0, 0xAD, 0x97,\n\t0x01, 0x06, 0xE0, 0xAE, 0x92, 0xE0, 0xAF, 0x97,\n\t0x01, 0x06, 0xE0, 0xAF, 0x86, 0xE0, 0xAE, 0xBE,\n\t0x01, 0x06, 0xE0, 0xAF, 0x86, 0xE0, 0xAF, 0x97,\n\t0x01, 0x06, 0xE0, 0xAF, 0x87, 0xE0, 0xAE, 0xBE,\n\t0x01, 0x06, 0xE0, 0xB2, 0xBF, 0xE0, 0xB3, 0x95,\n\t0x01, 0x06, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x95,\n\t0x01, 0x06, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x96,\n\t// Bytes 2d00 - 2d3f\n\t0x01, 0x06, 0xE0, 0xB5, 0x86, 0xE0, 0xB4, 0xBE,\n\t0x01, 0x06, 0xE0, 0xB5, 0x86, 0xE0, 0xB5, 0x97,\n\t0x01, 0x06, 0xE0, 0xB5, 0x87, 0xE0, 0xB4, 0xBE,\n\t0x01, 0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x9F,\n\t0x01, 0x06, 0xE1, 0x80, 0xA5, 0xE1, 0x80, 0xAE,\n\t0x01, 0x06, 0xE1, 0xAC, 0x85, 0xE1, 0xAC, 0xB5,\n\t0x01, 0x06, 0xE1, 0xAC, 0x87, 0xE1, 0xAC, 0xB5,\n\t0x01, 0x06, 0xE1, 0xAC, 0x89, 0xE1, 0xAC, 0xB5,\n\t// Bytes 2d40 - 2d7f\n\t0x01, 0x06, 0xE1, 0xAC, 0x8B, 0xE1, 0xAC, 0xB5,\n\t0x01, 0x06, 0xE1, 0xAC, 0x8D, 0xE1, 0xAC, 0xB5,\n\t0x01, 0x06, 0xE1, 0xAC, 0x91, 0xE1, 0xAC, 0xB5,\n\t0x01, 0x06, 0xE1, 0xAC, 0xBA, 0xE1, 0xAC, 0xB5,\n\t0x01, 0x06, 0xE1, 0xAC, 0xBC, 0xE1, 0xAC, 0xB5,\n\t0x01, 0x06, 0xE1, 0xAC, 0xBE, 0xE1, 0xAC, 0xB5,\n\t0x01, 0x06, 0xE1, 0xAC, 0xBF, 0xE1, 0xAC, 0xB5,\n\t0x01, 0x06, 0xE1, 0xAD, 0x82, 0xE1, 0xAC, 0xB5,\n\t// Bytes 2d80 - 2dbf\n\t0x01, 0x08, 0xF0, 0x91, 0x84, 0xB1, 0xF0, 0x91,\n\t0x84, 0xA7, 0x01, 0x08, 0xF0, 0x91, 0x84, 0xB2,\n\t0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08, 0xF0, 0x91,\n\t0x8D, 0x87, 0xF0, 0x91, 0x8C, 0xBE, 0x01, 0x08,\n\t0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91, 0x8D, 0x97,\n\t0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91,\n\t0x92, 0xB0, 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9,\n\t0xF0, 0x91, 0x92, 0xBA, 0x01, 0x08, 0xF0, 0x91,\n\t// Bytes 2dc0 - 2dff\n\t0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBD, 0x01, 0x08,\n\t0xF0, 0x91, 0x96, 0xB8, 0xF0, 0x91, 0x96, 0xAF,\n\t0x01, 0x08, 0xF0, 0x91, 0x96, 0xB9, 0xF0, 0x91,\n\t0x96, 0xAF, 0x01, 0x09, 0xE0, 0xB3, 0x86, 0xE0,\n\t0xB3, 0x82, 0xE0, 0xB3, 0x95, 0x02, 0x09, 0xE0,\n\t0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0xE0, 0xB7, 0x8A,\n\t0x12, 0x44, 0x44, 0x5A, 0xCC, 0x8C, 0xC9, 0x44,\n\t0x44, 0x7A, 0xCC, 0x8C, 0xC9, 0x44, 0x64, 0x7A,\n\t// Bytes 2e00 - 2e3f\n\t0xCC, 0x8C, 0xC9, 0x46, 0xD9, 0x84, 0xD8, 0xA7,\n\t0xD9, 0x93, 0xC9, 0x46, 0xD9, 0x84, 0xD8, 0xA7,\n\t0xD9, 0x94, 0xC9, 0x46, 0xD9, 0x84, 0xD8, 0xA7,\n\t0xD9, 0x95, 0xB5, 0x46, 0xE1, 0x84, 0x80, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x82, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x83, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x85, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x86, 0xE1,\n\t// Bytes 2e40 - 2e7f\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x87, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x89, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x8B, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x8B, 0xE1,\n\t0x85, 0xAE, 0x01, 0x46, 0xE1, 0x84, 0x8C, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x8E, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x8F, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x90, 0xE1,\n\t// Bytes 2e80 - 2ebf\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x91, 0xE1,\n\t0x85, 0xA1, 0x01, 0x46, 0xE1, 0x84, 0x92, 0xE1,\n\t0x85, 0xA1, 0x01, 0x49, 0xE3, 0x83, 0xA1, 0xE3,\n\t0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D, 0x4C, 0xE1,\n\t0x84, 0x8C, 0xE1, 0x85, 0xAE, 0xE1, 0x84, 0x8B,\n\t0xE1, 0x85, 0xB4, 0x01, 0x4C, 0xE3, 0x82, 0xAD,\n\t0xE3, 0x82, 0x99, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0x99, 0x0D, 0x4C, 0xE3, 0x82, 0xB3, 0xE3, 0x83,\n\t// Bytes 2ec0 - 2eff\n\t0xBC, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x4C, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE1,\n\t0x84, 0x8E, 0xE1, 0x85, 0xA1, 0xE1, 0x86, 0xB7,\n\t0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA9, 0x01, 0x4F,\n\t0xE3, 0x82, 0xA4, 0xE3, 0x83, 0x8B, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x4F, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xAA, 0xE3,\n\t// Bytes 2f00 - 2f3f\n\t0x83, 0xB3, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99,\n\t0x0D, 0x4F, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB7, 0xE3, 0x82,\n\t0x99, 0x0D, 0x4F, 0xE3, 0x83, 0x9B, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3,\n\t0x82, 0x99, 0x0D, 0x52, 0xE3, 0x82, 0xA8, 0xE3,\n\t0x82, 0xB9, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D, 0x52,\n\t// Bytes 2f40 - 2f7f\n\t0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA1, 0xE3, 0x83,\n\t0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3,\n\t0x82, 0x99, 0x0D, 0x86, 0xE0, 0xB3, 0x86, 0xE0,\n\t0xB3, 0x82, 0x01, 0x86, 0xE0, 0xB7, 0x99, 0xE0,\n\t0xB7, 0x8F, 0x01, 0x03, 0x3C, 0xCC, 0xB8, 0x05,\n\t0x03, 0x3D, 0xCC, 0xB8, 0x05, 0x03, 0x3E, 0xCC,\n\t0xB8, 0x05, 0x03, 0x41, 0xCC, 0x80, 0xC9, 0x03,\n\t0x41, 0xCC, 0x81, 0xC9, 0x03, 0x41, 0xCC, 0x83,\n\t// Bytes 2f80 - 2fbf\n\t0xC9, 0x03, 0x41, 0xCC, 0x84, 0xC9, 0x03, 0x41,\n\t0xCC, 0x89, 0xC9, 0x03, 0x41, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x41, 0xCC, 0x8F, 0xC9, 0x03, 0x41, 0xCC,\n\t0x91, 0xC9, 0x03, 0x41, 0xCC, 0xA5, 0xB5, 0x03,\n\t0x41, 0xCC, 0xA8, 0xA5, 0x03, 0x42, 0xCC, 0x87,\n\t0xC9, 0x03, 0x42, 0xCC, 0xA3, 0xB5, 0x03, 0x42,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x43, 0xCC, 0x81, 0xC9,\n\t0x03, 0x43, 0xCC, 0x82, 0xC9, 0x03, 0x43, 0xCC,\n\t// Bytes 2fc0 - 2fff\n\t0x87, 0xC9, 0x03, 0x43, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x44, 0xCC, 0x87, 0xC9, 0x03, 0x44, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x44, 0xCC, 0xA3, 0xB5, 0x03, 0x44,\n\t0xCC, 0xA7, 0xA5, 0x03, 0x44, 0xCC, 0xAD, 0xB5,\n\t0x03, 0x44, 0xCC, 0xB1, 0xB5, 0x03, 0x45, 0xCC,\n\t0x80, 0xC9, 0x03, 0x45, 0xCC, 0x81, 0xC9, 0x03,\n\t0x45, 0xCC, 0x83, 0xC9, 0x03, 0x45, 0xCC, 0x86,\n\t0xC9, 0x03, 0x45, 0xCC, 0x87, 0xC9, 0x03, 0x45,\n\t// Bytes 3000 - 303f\n\t0xCC, 0x88, 0xC9, 0x03, 0x45, 0xCC, 0x89, 0xC9,\n\t0x03, 0x45, 0xCC, 0x8C, 0xC9, 0x03, 0x45, 0xCC,\n\t0x8F, 0xC9, 0x03, 0x45, 0xCC, 0x91, 0xC9, 0x03,\n\t0x45, 0xCC, 0xA8, 0xA5, 0x03, 0x45, 0xCC, 0xAD,\n\t0xB5, 0x03, 0x45, 0xCC, 0xB0, 0xB5, 0x03, 0x46,\n\t0xCC, 0x87, 0xC9, 0x03, 0x47, 0xCC, 0x81, 0xC9,\n\t0x03, 0x47, 0xCC, 0x82, 0xC9, 0x03, 0x47, 0xCC,\n\t0x84, 0xC9, 0x03, 0x47, 0xCC, 0x86, 0xC9, 0x03,\n\t// Bytes 3040 - 307f\n\t0x47, 0xCC, 0x87, 0xC9, 0x03, 0x47, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x47, 0xCC, 0xA7, 0xA5, 0x03, 0x48,\n\t0xCC, 0x82, 0xC9, 0x03, 0x48, 0xCC, 0x87, 0xC9,\n\t0x03, 0x48, 0xCC, 0x88, 0xC9, 0x03, 0x48, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x48, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x48, 0xCC, 0xA7, 0xA5, 0x03, 0x48, 0xCC, 0xAE,\n\t0xB5, 0x03, 0x49, 0xCC, 0x80, 0xC9, 0x03, 0x49,\n\t0xCC, 0x81, 0xC9, 0x03, 0x49, 0xCC, 0x82, 0xC9,\n\t// Bytes 3080 - 30bf\n\t0x03, 0x49, 0xCC, 0x83, 0xC9, 0x03, 0x49, 0xCC,\n\t0x84, 0xC9, 0x03, 0x49, 0xCC, 0x86, 0xC9, 0x03,\n\t0x49, 0xCC, 0x87, 0xC9, 0x03, 0x49, 0xCC, 0x89,\n\t0xC9, 0x03, 0x49, 0xCC, 0x8C, 0xC9, 0x03, 0x49,\n\t0xCC, 0x8F, 0xC9, 0x03, 0x49, 0xCC, 0x91, 0xC9,\n\t0x03, 0x49, 0xCC, 0xA3, 0xB5, 0x03, 0x49, 0xCC,\n\t0xA8, 0xA5, 0x03, 0x49, 0xCC, 0xB0, 0xB5, 0x03,\n\t0x4A, 0xCC, 0x82, 0xC9, 0x03, 0x4B, 0xCC, 0x81,\n\t// Bytes 30c0 - 30ff\n\t0xC9, 0x03, 0x4B, 0xCC, 0x8C, 0xC9, 0x03, 0x4B,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x4B, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x4B, 0xCC, 0xB1, 0xB5, 0x03, 0x4C, 0xCC,\n\t0x81, 0xC9, 0x03, 0x4C, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x4C, 0xCC, 0xA7, 0xA5, 0x03, 0x4C, 0xCC, 0xAD,\n\t0xB5, 0x03, 0x4C, 0xCC, 0xB1, 0xB5, 0x03, 0x4D,\n\t0xCC, 0x81, 0xC9, 0x03, 0x4D, 0xCC, 0x87, 0xC9,\n\t0x03, 0x4D, 0xCC, 0xA3, 0xB5, 0x03, 0x4E, 0xCC,\n\t// Bytes 3100 - 313f\n\t0x80, 0xC9, 0x03, 0x4E, 0xCC, 0x81, 0xC9, 0x03,\n\t0x4E, 0xCC, 0x83, 0xC9, 0x03, 0x4E, 0xCC, 0x87,\n\t0xC9, 0x03, 0x4E, 0xCC, 0x8C, 0xC9, 0x03, 0x4E,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x4E, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x4E, 0xCC, 0xAD, 0xB5, 0x03, 0x4E, 0xCC,\n\t0xB1, 0xB5, 0x03, 0x4F, 0xCC, 0x80, 0xC9, 0x03,\n\t0x4F, 0xCC, 0x81, 0xC9, 0x03, 0x4F, 0xCC, 0x86,\n\t0xC9, 0x03, 0x4F, 0xCC, 0x89, 0xC9, 0x03, 0x4F,\n\t// Bytes 3140 - 317f\n\t0xCC, 0x8B, 0xC9, 0x03, 0x4F, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x4F, 0xCC, 0x8F, 0xC9, 0x03, 0x4F, 0xCC,\n\t0x91, 0xC9, 0x03, 0x50, 0xCC, 0x81, 0xC9, 0x03,\n\t0x50, 0xCC, 0x87, 0xC9, 0x03, 0x52, 0xCC, 0x81,\n\t0xC9, 0x03, 0x52, 0xCC, 0x87, 0xC9, 0x03, 0x52,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x52, 0xCC, 0x8F, 0xC9,\n\t0x03, 0x52, 0xCC, 0x91, 0xC9, 0x03, 0x52, 0xCC,\n\t0xA7, 0xA5, 0x03, 0x52, 0xCC, 0xB1, 0xB5, 0x03,\n\t// Bytes 3180 - 31bf\n\t0x53, 0xCC, 0x82, 0xC9, 0x03, 0x53, 0xCC, 0x87,\n\t0xC9, 0x03, 0x53, 0xCC, 0xA6, 0xB5, 0x03, 0x53,\n\t0xCC, 0xA7, 0xA5, 0x03, 0x54, 0xCC, 0x87, 0xC9,\n\t0x03, 0x54, 0xCC, 0x8C, 0xC9, 0x03, 0x54, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x54, 0xCC, 0xA6, 0xB5, 0x03,\n\t0x54, 0xCC, 0xA7, 0xA5, 0x03, 0x54, 0xCC, 0xAD,\n\t0xB5, 0x03, 0x54, 0xCC, 0xB1, 0xB5, 0x03, 0x55,\n\t0xCC, 0x80, 0xC9, 0x03, 0x55, 0xCC, 0x81, 0xC9,\n\t// Bytes 31c0 - 31ff\n\t0x03, 0x55, 0xCC, 0x82, 0xC9, 0x03, 0x55, 0xCC,\n\t0x86, 0xC9, 0x03, 0x55, 0xCC, 0x89, 0xC9, 0x03,\n\t0x55, 0xCC, 0x8A, 0xC9, 0x03, 0x55, 0xCC, 0x8B,\n\t0xC9, 0x03, 0x55, 0xCC, 0x8C, 0xC9, 0x03, 0x55,\n\t0xCC, 0x8F, 0xC9, 0x03, 0x55, 0xCC, 0x91, 0xC9,\n\t0x03, 0x55, 0xCC, 0xA3, 0xB5, 0x03, 0x55, 0xCC,\n\t0xA4, 0xB5, 0x03, 0x55, 0xCC, 0xA8, 0xA5, 0x03,\n\t0x55, 0xCC, 0xAD, 0xB5, 0x03, 0x55, 0xCC, 0xB0,\n\t// Bytes 3200 - 323f\n\t0xB5, 0x03, 0x56, 0xCC, 0x83, 0xC9, 0x03, 0x56,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x57, 0xCC, 0x80, 0xC9,\n\t0x03, 0x57, 0xCC, 0x81, 0xC9, 0x03, 0x57, 0xCC,\n\t0x82, 0xC9, 0x03, 0x57, 0xCC, 0x87, 0xC9, 0x03,\n\t0x57, 0xCC, 0x88, 0xC9, 0x03, 0x57, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x58, 0xCC, 0x87, 0xC9, 0x03, 0x58,\n\t0xCC, 0x88, 0xC9, 0x03, 0x59, 0xCC, 0x80, 0xC9,\n\t0x03, 0x59, 0xCC, 0x81, 0xC9, 0x03, 0x59, 0xCC,\n\t// Bytes 3240 - 327f\n\t0x82, 0xC9, 0x03, 0x59, 0xCC, 0x83, 0xC9, 0x03,\n\t0x59, 0xCC, 0x84, 0xC9, 0x03, 0x59, 0xCC, 0x87,\n\t0xC9, 0x03, 0x59, 0xCC, 0x88, 0xC9, 0x03, 0x59,\n\t0xCC, 0x89, 0xC9, 0x03, 0x59, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x5A, 0xCC, 0x81, 0xC9, 0x03, 0x5A, 0xCC,\n\t0x82, 0xC9, 0x03, 0x5A, 0xCC, 0x87, 0xC9, 0x03,\n\t0x5A, 0xCC, 0x8C, 0xC9, 0x03, 0x5A, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x5A, 0xCC, 0xB1, 0xB5, 0x03, 0x61,\n\t// Bytes 3280 - 32bf\n\t0xCC, 0x80, 0xC9, 0x03, 0x61, 0xCC, 0x81, 0xC9,\n\t0x03, 0x61, 0xCC, 0x83, 0xC9, 0x03, 0x61, 0xCC,\n\t0x84, 0xC9, 0x03, 0x61, 0xCC, 0x89, 0xC9, 0x03,\n\t0x61, 0xCC, 0x8C, 0xC9, 0x03, 0x61, 0xCC, 0x8F,\n\t0xC9, 0x03, 0x61, 0xCC, 0x91, 0xC9, 0x03, 0x61,\n\t0xCC, 0xA5, 0xB5, 0x03, 0x61, 0xCC, 0xA8, 0xA5,\n\t0x03, 0x62, 0xCC, 0x87, 0xC9, 0x03, 0x62, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x62, 0xCC, 0xB1, 0xB5, 0x03,\n\t// Bytes 32c0 - 32ff\n\t0x63, 0xCC, 0x81, 0xC9, 0x03, 0x63, 0xCC, 0x82,\n\t0xC9, 0x03, 0x63, 0xCC, 0x87, 0xC9, 0x03, 0x63,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x64, 0xCC, 0x87, 0xC9,\n\t0x03, 0x64, 0xCC, 0x8C, 0xC9, 0x03, 0x64, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x64, 0xCC, 0xA7, 0xA5, 0x03,\n\t0x64, 0xCC, 0xAD, 0xB5, 0x03, 0x64, 0xCC, 0xB1,\n\t0xB5, 0x03, 0x65, 0xCC, 0x80, 0xC9, 0x03, 0x65,\n\t0xCC, 0x81, 0xC9, 0x03, 0x65, 0xCC, 0x83, 0xC9,\n\t// Bytes 3300 - 333f\n\t0x03, 0x65, 0xCC, 0x86, 0xC9, 0x03, 0x65, 0xCC,\n\t0x87, 0xC9, 0x03, 0x65, 0xCC, 0x88, 0xC9, 0x03,\n\t0x65, 0xCC, 0x89, 0xC9, 0x03, 0x65, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x65, 0xCC, 0x8F, 0xC9, 0x03, 0x65,\n\t0xCC, 0x91, 0xC9, 0x03, 0x65, 0xCC, 0xA8, 0xA5,\n\t0x03, 0x65, 0xCC, 0xAD, 0xB5, 0x03, 0x65, 0xCC,\n\t0xB0, 0xB5, 0x03, 0x66, 0xCC, 0x87, 0xC9, 0x03,\n\t0x67, 0xCC, 0x81, 0xC9, 0x03, 0x67, 0xCC, 0x82,\n\t// Bytes 3340 - 337f\n\t0xC9, 0x03, 0x67, 0xCC, 0x84, 0xC9, 0x03, 0x67,\n\t0xCC, 0x86, 0xC9, 0x03, 0x67, 0xCC, 0x87, 0xC9,\n\t0x03, 0x67, 0xCC, 0x8C, 0xC9, 0x03, 0x67, 0xCC,\n\t0xA7, 0xA5, 0x03, 0x68, 0xCC, 0x82, 0xC9, 0x03,\n\t0x68, 0xCC, 0x87, 0xC9, 0x03, 0x68, 0xCC, 0x88,\n\t0xC9, 0x03, 0x68, 0xCC, 0x8C, 0xC9, 0x03, 0x68,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x68, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x68, 0xCC, 0xAE, 0xB5, 0x03, 0x68, 0xCC,\n\t// Bytes 3380 - 33bf\n\t0xB1, 0xB5, 0x03, 0x69, 0xCC, 0x80, 0xC9, 0x03,\n\t0x69, 0xCC, 0x81, 0xC9, 0x03, 0x69, 0xCC, 0x82,\n\t0xC9, 0x03, 0x69, 0xCC, 0x83, 0xC9, 0x03, 0x69,\n\t0xCC, 0x84, 0xC9, 0x03, 0x69, 0xCC, 0x86, 0xC9,\n\t0x03, 0x69, 0xCC, 0x89, 0xC9, 0x03, 0x69, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x69, 0xCC, 0x8F, 0xC9, 0x03,\n\t0x69, 0xCC, 0x91, 0xC9, 0x03, 0x69, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x69, 0xCC, 0xA8, 0xA5, 0x03, 0x69,\n\t// Bytes 33c0 - 33ff\n\t0xCC, 0xB0, 0xB5, 0x03, 0x6A, 0xCC, 0x82, 0xC9,\n\t0x03, 0x6A, 0xCC, 0x8C, 0xC9, 0x03, 0x6B, 0xCC,\n\t0x81, 0xC9, 0x03, 0x6B, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x6B, 0xCC, 0xA3, 0xB5, 0x03, 0x6B, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x6B, 0xCC, 0xB1, 0xB5, 0x03, 0x6C,\n\t0xCC, 0x81, 0xC9, 0x03, 0x6C, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x6C, 0xCC, 0xA7, 0xA5, 0x03, 0x6C, 0xCC,\n\t0xAD, 0xB5, 0x03, 0x6C, 0xCC, 0xB1, 0xB5, 0x03,\n\t// Bytes 3400 - 343f\n\t0x6D, 0xCC, 0x81, 0xC9, 0x03, 0x6D, 0xCC, 0x87,\n\t0xC9, 0x03, 0x6D, 0xCC, 0xA3, 0xB5, 0x03, 0x6E,\n\t0xCC, 0x80, 0xC9, 0x03, 0x6E, 0xCC, 0x81, 0xC9,\n\t0x03, 0x6E, 0xCC, 0x83, 0xC9, 0x03, 0x6E, 0xCC,\n\t0x87, 0xC9, 0x03, 0x6E, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x6E, 0xCC, 0xA3, 0xB5, 0x03, 0x6E, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x6E, 0xCC, 0xAD, 0xB5, 0x03, 0x6E,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x6F, 0xCC, 0x80, 0xC9,\n\t// Bytes 3440 - 347f\n\t0x03, 0x6F, 0xCC, 0x81, 0xC9, 0x03, 0x6F, 0xCC,\n\t0x86, 0xC9, 0x03, 0x6F, 0xCC, 0x89, 0xC9, 0x03,\n\t0x6F, 0xCC, 0x8B, 0xC9, 0x03, 0x6F, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x6F, 0xCC, 0x8F, 0xC9, 0x03, 0x6F,\n\t0xCC, 0x91, 0xC9, 0x03, 0x70, 0xCC, 0x81, 0xC9,\n\t0x03, 0x70, 0xCC, 0x87, 0xC9, 0x03, 0x72, 0xCC,\n\t0x81, 0xC9, 0x03, 0x72, 0xCC, 0x87, 0xC9, 0x03,\n\t0x72, 0xCC, 0x8C, 0xC9, 0x03, 0x72, 0xCC, 0x8F,\n\t// Bytes 3480 - 34bf\n\t0xC9, 0x03, 0x72, 0xCC, 0x91, 0xC9, 0x03, 0x72,\n\t0xCC, 0xA7, 0xA5, 0x03, 0x72, 0xCC, 0xB1, 0xB5,\n\t0x03, 0x73, 0xCC, 0x82, 0xC9, 0x03, 0x73, 0xCC,\n\t0x87, 0xC9, 0x03, 0x73, 0xCC, 0xA6, 0xB5, 0x03,\n\t0x73, 0xCC, 0xA7, 0xA5, 0x03, 0x74, 0xCC, 0x87,\n\t0xC9, 0x03, 0x74, 0xCC, 0x88, 0xC9, 0x03, 0x74,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x74, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x74, 0xCC, 0xA6, 0xB5, 0x03, 0x74, 0xCC,\n\t// Bytes 34c0 - 34ff\n\t0xA7, 0xA5, 0x03, 0x74, 0xCC, 0xAD, 0xB5, 0x03,\n\t0x74, 0xCC, 0xB1, 0xB5, 0x03, 0x75, 0xCC, 0x80,\n\t0xC9, 0x03, 0x75, 0xCC, 0x81, 0xC9, 0x03, 0x75,\n\t0xCC, 0x82, 0xC9, 0x03, 0x75, 0xCC, 0x86, 0xC9,\n\t0x03, 0x75, 0xCC, 0x89, 0xC9, 0x03, 0x75, 0xCC,\n\t0x8A, 0xC9, 0x03, 0x75, 0xCC, 0x8B, 0xC9, 0x03,\n\t0x75, 0xCC, 0x8C, 0xC9, 0x03, 0x75, 0xCC, 0x8F,\n\t0xC9, 0x03, 0x75, 0xCC, 0x91, 0xC9, 0x03, 0x75,\n\t// Bytes 3500 - 353f\n\t0xCC, 0xA3, 0xB5, 0x03, 0x75, 0xCC, 0xA4, 0xB5,\n\t0x03, 0x75, 0xCC, 0xA8, 0xA5, 0x03, 0x75, 0xCC,\n\t0xAD, 0xB5, 0x03, 0x75, 0xCC, 0xB0, 0xB5, 0x03,\n\t0x76, 0xCC, 0x83, 0xC9, 0x03, 0x76, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x77, 0xCC, 0x80, 0xC9, 0x03, 0x77,\n\t0xCC, 0x81, 0xC9, 0x03, 0x77, 0xCC, 0x82, 0xC9,\n\t0x03, 0x77, 0xCC, 0x87, 0xC9, 0x03, 0x77, 0xCC,\n\t0x88, 0xC9, 0x03, 0x77, 0xCC, 0x8A, 0xC9, 0x03,\n\t// Bytes 3540 - 357f\n\t0x77, 0xCC, 0xA3, 0xB5, 0x03, 0x78, 0xCC, 0x87,\n\t0xC9, 0x03, 0x78, 0xCC, 0x88, 0xC9, 0x03, 0x79,\n\t0xCC, 0x80, 0xC9, 0x03, 0x79, 0xCC, 0x81, 0xC9,\n\t0x03, 0x79, 0xCC, 0x82, 0xC9, 0x03, 0x79, 0xCC,\n\t0x83, 0xC9, 0x03, 0x79, 0xCC, 0x84, 0xC9, 0x03,\n\t0x79, 0xCC, 0x87, 0xC9, 0x03, 0x79, 0xCC, 0x88,\n\t0xC9, 0x03, 0x79, 0xCC, 0x89, 0xC9, 0x03, 0x79,\n\t0xCC, 0x8A, 0xC9, 0x03, 0x79, 0xCC, 0xA3, 0xB5,\n\t// Bytes 3580 - 35bf\n\t0x03, 0x7A, 0xCC, 0x81, 0xC9, 0x03, 0x7A, 0xCC,\n\t0x82, 0xC9, 0x03, 0x7A, 0xCC, 0x87, 0xC9, 0x03,\n\t0x7A, 0xCC, 0x8C, 0xC9, 0x03, 0x7A, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x7A, 0xCC, 0xB1, 0xB5, 0x04, 0xC2,\n\t0xA8, 0xCC, 0x80, 0xCA, 0x04, 0xC2, 0xA8, 0xCC,\n\t0x81, 0xCA, 0x04, 0xC2, 0xA8, 0xCD, 0x82, 0xCA,\n\t0x04, 0xC3, 0x86, 0xCC, 0x81, 0xC9, 0x04, 0xC3,\n\t0x86, 0xCC, 0x84, 0xC9, 0x04, 0xC3, 0x98, 0xCC,\n\t// Bytes 35c0 - 35ff\n\t0x81, 0xC9, 0x04, 0xC3, 0xA6, 0xCC, 0x81, 0xC9,\n\t0x04, 0xC3, 0xA6, 0xCC, 0x84, 0xC9, 0x04, 0xC3,\n\t0xB8, 0xCC, 0x81, 0xC9, 0x04, 0xC5, 0xBF, 0xCC,\n\t0x87, 0xC9, 0x04, 0xC6, 0xB7, 0xCC, 0x8C, 0xC9,\n\t0x04, 0xCA, 0x92, 0xCC, 0x8C, 0xC9, 0x04, 0xCE,\n\t0x91, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x91, 0xCC,\n\t0x81, 0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x84, 0xC9,\n\t0x04, 0xCE, 0x91, 0xCC, 0x86, 0xC9, 0x04, 0xCE,\n\t// Bytes 3600 - 363f\n\t0x91, 0xCD, 0x85, 0xD9, 0x04, 0xCE, 0x95, 0xCC,\n\t0x80, 0xC9, 0x04, 0xCE, 0x95, 0xCC, 0x81, 0xC9,\n\t0x04, 0xCE, 0x97, 0xCC, 0x80, 0xC9, 0x04, 0xCE,\n\t0x97, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x97, 0xCD,\n\t0x85, 0xD9, 0x04, 0xCE, 0x99, 0xCC, 0x80, 0xC9,\n\t0x04, 0xCE, 0x99, 0xCC, 0x81, 0xC9, 0x04, 0xCE,\n\t0x99, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0x99, 0xCC,\n\t0x86, 0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x88, 0xC9,\n\t// Bytes 3640 - 367f\n\t0x04, 0xCE, 0x9F, 0xCC, 0x80, 0xC9, 0x04, 0xCE,\n\t0x9F, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xA1, 0xCC,\n\t0x94, 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x80, 0xC9,\n\t0x04, 0xCE, 0xA5, 0xCC, 0x81, 0xC9, 0x04, 0xCE,\n\t0xA5, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xA5, 0xCC,\n\t0x86, 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x88, 0xC9,\n\t0x04, 0xCE, 0xA9, 0xCC, 0x80, 0xC9, 0x04, 0xCE,\n\t0xA9, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xA9, 0xCD,\n\t// Bytes 3680 - 36bf\n\t0x85, 0xD9, 0x04, 0xCE, 0xB1, 0xCC, 0x84, 0xC9,\n\t0x04, 0xCE, 0xB1, 0xCC, 0x86, 0xC9, 0x04, 0xCE,\n\t0xB1, 0xCD, 0x85, 0xD9, 0x04, 0xCE, 0xB5, 0xCC,\n\t0x80, 0xC9, 0x04, 0xCE, 0xB5, 0xCC, 0x81, 0xC9,\n\t0x04, 0xCE, 0xB7, 0xCD, 0x85, 0xD9, 0x04, 0xCE,\n\t0xB9, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xB9, 0xCC,\n\t0x81, 0xC9, 0x04, 0xCE, 0xB9, 0xCC, 0x84, 0xC9,\n\t0x04, 0xCE, 0xB9, 0xCC, 0x86, 0xC9, 0x04, 0xCE,\n\t// Bytes 36c0 - 36ff\n\t0xB9, 0xCD, 0x82, 0xC9, 0x04, 0xCE, 0xBF, 0xCC,\n\t0x80, 0xC9, 0x04, 0xCE, 0xBF, 0xCC, 0x81, 0xC9,\n\t0x04, 0xCF, 0x81, 0xCC, 0x93, 0xC9, 0x04, 0xCF,\n\t0x81, 0xCC, 0x94, 0xC9, 0x04, 0xCF, 0x85, 0xCC,\n\t0x80, 0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x81, 0xC9,\n\t0x04, 0xCF, 0x85, 0xCC, 0x84, 0xC9, 0x04, 0xCF,\n\t0x85, 0xCC, 0x86, 0xC9, 0x04, 0xCF, 0x85, 0xCD,\n\t0x82, 0xC9, 0x04, 0xCF, 0x89, 0xCD, 0x85, 0xD9,\n\t// Bytes 3700 - 373f\n\t0x04, 0xCF, 0x92, 0xCC, 0x81, 0xC9, 0x04, 0xCF,\n\t0x92, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x86, 0xCC,\n\t0x88, 0xC9, 0x04, 0xD0, 0x90, 0xCC, 0x86, 0xC9,\n\t0x04, 0xD0, 0x90, 0xCC, 0x88, 0xC9, 0x04, 0xD0,\n\t0x93, 0xCC, 0x81, 0xC9, 0x04, 0xD0, 0x95, 0xCC,\n\t0x80, 0xC9, 0x04, 0xD0, 0x95, 0xCC, 0x86, 0xC9,\n\t0x04, 0xD0, 0x95, 0xCC, 0x88, 0xC9, 0x04, 0xD0,\n\t0x96, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x96, 0xCC,\n\t// Bytes 3740 - 377f\n\t0x88, 0xC9, 0x04, 0xD0, 0x97, 0xCC, 0x88, 0xC9,\n\t0x04, 0xD0, 0x98, 0xCC, 0x80, 0xC9, 0x04, 0xD0,\n\t0x98, 0xCC, 0x84, 0xC9, 0x04, 0xD0, 0x98, 0xCC,\n\t0x86, 0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x88, 0xC9,\n\t0x04, 0xD0, 0x9A, 0xCC, 0x81, 0xC9, 0x04, 0xD0,\n\t0x9E, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xA3, 0xCC,\n\t0x84, 0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x86, 0xC9,\n\t0x04, 0xD0, 0xA3, 0xCC, 0x88, 0xC9, 0x04, 0xD0,\n\t// Bytes 3780 - 37bf\n\t0xA3, 0xCC, 0x8B, 0xC9, 0x04, 0xD0, 0xA7, 0xCC,\n\t0x88, 0xC9, 0x04, 0xD0, 0xAB, 0xCC, 0x88, 0xC9,\n\t0x04, 0xD0, 0xAD, 0xCC, 0x88, 0xC9, 0x04, 0xD0,\n\t0xB0, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB0, 0xCC,\n\t0x88, 0xC9, 0x04, 0xD0, 0xB3, 0xCC, 0x81, 0xC9,\n\t0x04, 0xD0, 0xB5, 0xCC, 0x80, 0xC9, 0x04, 0xD0,\n\t0xB5, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB5, 0xCC,\n\t0x88, 0xC9, 0x04, 0xD0, 0xB6, 0xCC, 0x86, 0xC9,\n\t// Bytes 37c0 - 37ff\n\t0x04, 0xD0, 0xB6, 0xCC, 0x88, 0xC9, 0x04, 0xD0,\n\t0xB7, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB8, 0xCC,\n\t0x80, 0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x84, 0xC9,\n\t0x04, 0xD0, 0xB8, 0xCC, 0x86, 0xC9, 0x04, 0xD0,\n\t0xB8, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xBA, 0xCC,\n\t0x81, 0xC9, 0x04, 0xD0, 0xBE, 0xCC, 0x88, 0xC9,\n\t0x04, 0xD1, 0x83, 0xCC, 0x84, 0xC9, 0x04, 0xD1,\n\t0x83, 0xCC, 0x86, 0xC9, 0x04, 0xD1, 0x83, 0xCC,\n\t// Bytes 3800 - 383f\n\t0x88, 0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x8B, 0xC9,\n\t0x04, 0xD1, 0x87, 0xCC, 0x88, 0xC9, 0x04, 0xD1,\n\t0x8B, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x8D, 0xCC,\n\t0x88, 0xC9, 0x04, 0xD1, 0x96, 0xCC, 0x88, 0xC9,\n\t0x04, 0xD1, 0xB4, 0xCC, 0x8F, 0xC9, 0x04, 0xD1,\n\t0xB5, 0xCC, 0x8F, 0xC9, 0x04, 0xD3, 0x98, 0xCC,\n\t0x88, 0xC9, 0x04, 0xD3, 0x99, 0xCC, 0x88, 0xC9,\n\t0x04, 0xD3, 0xA8, 0xCC, 0x88, 0xC9, 0x04, 0xD3,\n\t// Bytes 3840 - 387f\n\t0xA9, 0xCC, 0x88, 0xC9, 0x04, 0xD8, 0xA7, 0xD9,\n\t0x93, 0xC9, 0x04, 0xD8, 0xA7, 0xD9, 0x94, 0xC9,\n\t0x04, 0xD8, 0xA7, 0xD9, 0x95, 0xB5, 0x04, 0xD9,\n\t0x88, 0xD9, 0x94, 0xC9, 0x04, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xC9, 0x04, 0xDB, 0x81, 0xD9, 0x94, 0xC9,\n\t0x04, 0xDB, 0x92, 0xD9, 0x94, 0xC9, 0x04, 0xDB,\n\t0x95, 0xD9, 0x94, 0xC9, 0x05, 0x41, 0xCC, 0x82,\n\t0xCC, 0x80, 0xCA, 0x05, 0x41, 0xCC, 0x82, 0xCC,\n\t// Bytes 3880 - 38bf\n\t0x81, 0xCA, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x83,\n\t0xCA, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x89, 0xCA,\n\t0x05, 0x41, 0xCC, 0x86, 0xCC, 0x80, 0xCA, 0x05,\n\t0x41, 0xCC, 0x86, 0xCC, 0x81, 0xCA, 0x05, 0x41,\n\t0xCC, 0x86, 0xCC, 0x83, 0xCA, 0x05, 0x41, 0xCC,\n\t0x86, 0xCC, 0x89, 0xCA, 0x05, 0x41, 0xCC, 0x87,\n\t0xCC, 0x84, 0xCA, 0x05, 0x41, 0xCC, 0x88, 0xCC,\n\t0x84, 0xCA, 0x05, 0x41, 0xCC, 0x8A, 0xCC, 0x81,\n\t// Bytes 38c0 - 38ff\n\t0xCA, 0x05, 0x41, 0xCC, 0xA3, 0xCC, 0x82, 0xCA,\n\t0x05, 0x41, 0xCC, 0xA3, 0xCC, 0x86, 0xCA, 0x05,\n\t0x43, 0xCC, 0xA7, 0xCC, 0x81, 0xCA, 0x05, 0x45,\n\t0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05, 0x45, 0xCC,\n\t0x82, 0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC, 0x82,\n\t0xCC, 0x83, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC,\n\t0x89, 0xCA, 0x05, 0x45, 0xCC, 0x84, 0xCC, 0x80,\n\t0xCA, 0x05, 0x45, 0xCC, 0x84, 0xCC, 0x81, 0xCA,\n\t// Bytes 3900 - 393f\n\t0x05, 0x45, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05,\n\t0x45, 0xCC, 0xA7, 0xCC, 0x86, 0xCA, 0x05, 0x49,\n\t0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05, 0x4C, 0xCC,\n\t0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x4F, 0xCC, 0x82,\n\t0xCC, 0x80, 0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC,\n\t0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x83,\n\t0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x89, 0xCA,\n\t0x05, 0x4F, 0xCC, 0x83, 0xCC, 0x81, 0xCA, 0x05,\n\t// Bytes 3940 - 397f\n\t0x4F, 0xCC, 0x83, 0xCC, 0x84, 0xCA, 0x05, 0x4F,\n\t0xCC, 0x83, 0xCC, 0x88, 0xCA, 0x05, 0x4F, 0xCC,\n\t0x84, 0xCC, 0x80, 0xCA, 0x05, 0x4F, 0xCC, 0x84,\n\t0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x87, 0xCC,\n\t0x84, 0xCA, 0x05, 0x4F, 0xCC, 0x88, 0xCC, 0x84,\n\t0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x80, 0xCA,\n\t0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x81, 0xCA, 0x05,\n\t0x4F, 0xCC, 0x9B, 0xCC, 0x83, 0xCA, 0x05, 0x4F,\n\t// Bytes 3980 - 39bf\n\t0xCC, 0x9B, 0xCC, 0x89, 0xCA, 0x05, 0x4F, 0xCC,\n\t0x9B, 0xCC, 0xA3, 0xB6, 0x05, 0x4F, 0xCC, 0xA3,\n\t0xCC, 0x82, 0xCA, 0x05, 0x4F, 0xCC, 0xA8, 0xCC,\n\t0x84, 0xCA, 0x05, 0x52, 0xCC, 0xA3, 0xCC, 0x84,\n\t0xCA, 0x05, 0x53, 0xCC, 0x81, 0xCC, 0x87, 0xCA,\n\t0x05, 0x53, 0xCC, 0x8C, 0xCC, 0x87, 0xCA, 0x05,\n\t0x53, 0xCC, 0xA3, 0xCC, 0x87, 0xCA, 0x05, 0x55,\n\t0xCC, 0x83, 0xCC, 0x81, 0xCA, 0x05, 0x55, 0xCC,\n\t// Bytes 39c0 - 39ff\n\t0x84, 0xCC, 0x88, 0xCA, 0x05, 0x55, 0xCC, 0x88,\n\t0xCC, 0x80, 0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC,\n\t0x81, 0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x84,\n\t0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x8C, 0xCA,\n\t0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05,\n\t0x55, 0xCC, 0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x55,\n\t0xCC, 0x9B, 0xCC, 0x83, 0xCA, 0x05, 0x55, 0xCC,\n\t0x9B, 0xCC, 0x89, 0xCA, 0x05, 0x55, 0xCC, 0x9B,\n\t// Bytes 3a00 - 3a3f\n\t0xCC, 0xA3, 0xB6, 0x05, 0x61, 0xCC, 0x82, 0xCC,\n\t0x80, 0xCA, 0x05, 0x61, 0xCC, 0x82, 0xCC, 0x81,\n\t0xCA, 0x05, 0x61, 0xCC, 0x82, 0xCC, 0x83, 0xCA,\n\t0x05, 0x61, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05,\n\t0x61, 0xCC, 0x86, 0xCC, 0x80, 0xCA, 0x05, 0x61,\n\t0xCC, 0x86, 0xCC, 0x81, 0xCA, 0x05, 0x61, 0xCC,\n\t0x86, 0xCC, 0x83, 0xCA, 0x05, 0x61, 0xCC, 0x86,\n\t0xCC, 0x89, 0xCA, 0x05, 0x61, 0xCC, 0x87, 0xCC,\n\t// Bytes 3a40 - 3a7f\n\t0x84, 0xCA, 0x05, 0x61, 0xCC, 0x88, 0xCC, 0x84,\n\t0xCA, 0x05, 0x61, 0xCC, 0x8A, 0xCC, 0x81, 0xCA,\n\t0x05, 0x61, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05,\n\t0x61, 0xCC, 0xA3, 0xCC, 0x86, 0xCA, 0x05, 0x63,\n\t0xCC, 0xA7, 0xCC, 0x81, 0xCA, 0x05, 0x65, 0xCC,\n\t0x82, 0xCC, 0x80, 0xCA, 0x05, 0x65, 0xCC, 0x82,\n\t0xCC, 0x81, 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC,\n\t0x83, 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x89,\n\t// Bytes 3a80 - 3abf\n\t0xCA, 0x05, 0x65, 0xCC, 0x84, 0xCC, 0x80, 0xCA,\n\t0x05, 0x65, 0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05,\n\t0x65, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x65,\n\t0xCC, 0xA7, 0xCC, 0x86, 0xCA, 0x05, 0x69, 0xCC,\n\t0x88, 0xCC, 0x81, 0xCA, 0x05, 0x6C, 0xCC, 0xA3,\n\t0xCC, 0x84, 0xCA, 0x05, 0x6F, 0xCC, 0x82, 0xCC,\n\t0x80, 0xCA, 0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x81,\n\t0xCA, 0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x83, 0xCA,\n\t// Bytes 3ac0 - 3aff\n\t0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05,\n\t0x6F, 0xCC, 0x83, 0xCC, 0x81, 0xCA, 0x05, 0x6F,\n\t0xCC, 0x83, 0xCC, 0x84, 0xCA, 0x05, 0x6F, 0xCC,\n\t0x83, 0xCC, 0x88, 0xCA, 0x05, 0x6F, 0xCC, 0x84,\n\t0xCC, 0x80, 0xCA, 0x05, 0x6F, 0xCC, 0x84, 0xCC,\n\t0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x87, 0xCC, 0x84,\n\t0xCA, 0x05, 0x6F, 0xCC, 0x88, 0xCC, 0x84, 0xCA,\n\t0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05,\n\t// Bytes 3b00 - 3b3f\n\t0x6F, 0xCC, 0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x6F,\n\t0xCC, 0x9B, 0xCC, 0x83, 0xCA, 0x05, 0x6F, 0xCC,\n\t0x9B, 0xCC, 0x89, 0xCA, 0x05, 0x6F, 0xCC, 0x9B,\n\t0xCC, 0xA3, 0xB6, 0x05, 0x6F, 0xCC, 0xA3, 0xCC,\n\t0x82, 0xCA, 0x05, 0x6F, 0xCC, 0xA8, 0xCC, 0x84,\n\t0xCA, 0x05, 0x72, 0xCC, 0xA3, 0xCC, 0x84, 0xCA,\n\t0x05, 0x73, 0xCC, 0x81, 0xCC, 0x87, 0xCA, 0x05,\n\t0x73, 0xCC, 0x8C, 0xCC, 0x87, 0xCA, 0x05, 0x73,\n\t// Bytes 3b40 - 3b7f\n\t0xCC, 0xA3, 0xCC, 0x87, 0xCA, 0x05, 0x75, 0xCC,\n\t0x83, 0xCC, 0x81, 0xCA, 0x05, 0x75, 0xCC, 0x84,\n\t0xCC, 0x88, 0xCA, 0x05, 0x75, 0xCC, 0x88, 0xCC,\n\t0x80, 0xCA, 0x05, 0x75, 0xCC, 0x88, 0xCC, 0x81,\n\t0xCA, 0x05, 0x75, 0xCC, 0x88, 0xCC, 0x84, 0xCA,\n\t0x05, 0x75, 0xCC, 0x88, 0xCC, 0x8C, 0xCA, 0x05,\n\t0x75, 0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x75,\n\t0xCC, 0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x75, 0xCC,\n\t// Bytes 3b80 - 3bbf\n\t0x9B, 0xCC, 0x83, 0xCA, 0x05, 0x75, 0xCC, 0x9B,\n\t0xCC, 0x89, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC,\n\t0xA3, 0xB6, 0x05, 0xE1, 0xBE, 0xBF, 0xCC, 0x80,\n\t0xCA, 0x05, 0xE1, 0xBE, 0xBF, 0xCC, 0x81, 0xCA,\n\t0x05, 0xE1, 0xBE, 0xBF, 0xCD, 0x82, 0xCA, 0x05,\n\t0xE1, 0xBF, 0xBE, 0xCC, 0x80, 0xCA, 0x05, 0xE1,\n\t0xBF, 0xBE, 0xCC, 0x81, 0xCA, 0x05, 0xE1, 0xBF,\n\t0xBE, 0xCD, 0x82, 0xCA, 0x05, 0xE2, 0x86, 0x90,\n\t// Bytes 3bc0 - 3bff\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x86, 0x92, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x86, 0x94, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x87, 0x90, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x87, 0x92, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x87, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x88, 0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88,\n\t0x88, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x8B,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0xA3, 0xCC,\n\t// Bytes 3c00 - 3c3f\n\t0xB8, 0x05, 0x05, 0xE2, 0x88, 0xA5, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x88, 0xBC, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0x83, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0x85, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x89, 0x88, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0x8D, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xA1,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xA4, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0xA5, 0xCC, 0xB8,\n\t// Bytes 3c40 - 3c7f\n\t0x05, 0x05, 0xE2, 0x89, 0xB2, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xB3, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xB6, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x89, 0xB7, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0xBA, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBB,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBC, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBD, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0x82, 0xCC, 0xB8, 0x05,\n\t// Bytes 3c80 - 3cbf\n\t0x05, 0xE2, 0x8A, 0x83, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x8A, 0x86, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0x87, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0x91, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x92,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xA2, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xA8, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0xA9, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x8A, 0xAB, 0xCC, 0xB8, 0x05, 0x05,\n\t// Bytes 3cc0 - 3cff\n\t0xE2, 0x8A, 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0xB3, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0xB4, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB5,\n\t0xCC, 0xB8, 0x05, 0x06, 0xCE, 0x91, 0xCC, 0x93,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0x91, 0xCC, 0x94,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0x95, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x95, 0xCC, 0x93,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x95, 0xCC, 0x94,\n\t// Bytes 3d00 - 3d3f\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x95, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x97, 0xCC, 0x93,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0x97, 0xCC, 0x94,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0x99, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x99, 0xCC, 0x93,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x99, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCA, 0x06, 0xCE, 0x99, 0xCC, 0x94,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x99, 0xCC, 0x94,\n\t// Bytes 3d40 - 3d7f\n\t0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x99, 0xCC, 0x94,\n\t0xCD, 0x82, 0xCA, 0x06, 0xCE, 0x9F, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x9F, 0xCC, 0x93,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCE, 0x9F, 0xCC, 0x94,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0x9F, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xA5, 0xCC, 0x94,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xA5, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xA5, 0xCC, 0x94,\n\t// Bytes 3d80 - 3dbf\n\t0xCD, 0x82, 0xCA, 0x06, 0xCE, 0xA9, 0xCC, 0x93,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xA9, 0xCC, 0x94,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCC, 0x93,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCC, 0x94,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB1, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB5, 0xCC, 0x93,\n\t// Bytes 3dc0 - 3dff\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB5, 0xCC, 0x93,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB5, 0xCC, 0x94,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB5, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB7, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB7, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB7, 0xCC, 0x93,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB7, 0xCC, 0x94,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB7, 0xCD, 0x82,\n\t// Bytes 3e00 - 3e3f\n\t0xCD, 0x85, 0xDA, 0x06, 0xCE, 0xB9, 0xCC, 0x88,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x88,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x88,\n\t0xCD, 0x82, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x93,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x94,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x94,\n\t// Bytes 3e40 - 3e7f\n\t0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xB9, 0xCC, 0x94,\n\t0xCD, 0x82, 0xCA, 0x06, 0xCE, 0xBF, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xBF, 0xCC, 0x93,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCE, 0xBF, 0xCC, 0x94,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCE, 0xBF, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x88,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x88,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x88,\n\t// Bytes 3e80 - 3ebf\n\t0xCD, 0x82, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x93,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x94,\n\t0xCC, 0x80, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCA, 0x06, 0xCF, 0x85, 0xCC, 0x94,\n\t0xCD, 0x82, 0xCA, 0x06, 0xCF, 0x89, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCF, 0x89, 0xCC, 0x81,\n\t// Bytes 3ec0 - 3eff\n\t0xCD, 0x85, 0xDA, 0x06, 0xCF, 0x89, 0xCC, 0x93,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCF, 0x89, 0xCC, 0x94,\n\t0xCD, 0x85, 0xDA, 0x06, 0xCF, 0x89, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDA, 0x06, 0xE0, 0xA4, 0xA8, 0xE0,\n\t0xA4, 0xBC, 0x09, 0x06, 0xE0, 0xA4, 0xB0, 0xE0,\n\t0xA4, 0xBC, 0x09, 0x06, 0xE0, 0xA4, 0xB3, 0xE0,\n\t0xA4, 0xBC, 0x09, 0x06, 0xE0, 0xB1, 0x86, 0xE0,\n\t0xB1, 0x96, 0x85, 0x06, 0xE0, 0xB7, 0x99, 0xE0,\n\t// Bytes 3f00 - 3f3f\n\t0xB7, 0x8A, 0x11, 0x06, 0xE3, 0x81, 0x86, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x8B, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x8D, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x8F, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x91, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x93, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x95, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x97, 0xE3,\n\t// Bytes 3f40 - 3f7f\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x99, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x9B, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x9D, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0x9F, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xA1, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xA4, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xA6, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xA8, 0xE3,\n\t// Bytes 3f80 - 3fbf\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xAF, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xAF, 0xE3,\n\t0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x81, 0xB2, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xB2, 0xE3,\n\t0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x81, 0xB5, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xB5, 0xE3,\n\t0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x81, 0xB8, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xB8, 0xE3,\n\t// Bytes 3fc0 - 3fff\n\t0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x81, 0xBB, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x81, 0xBB, 0xE3,\n\t0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x82, 0x9D, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xA6, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xAB, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xAF, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB1, 0xE3,\n\t// Bytes 4000 - 403f\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB3, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB5, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB7, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xB9, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xBB, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xBD, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x82, 0xBF, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x81, 0xE3,\n\t// Bytes 4040 - 407f\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x84, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x86, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x88, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x8F, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x8F, 0xE3,\n\t0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0x92, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x92, 0xE3,\n\t0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0x95, 0xE3,\n\t// Bytes 4080 - 40bf\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x95, 0xE3,\n\t0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0x98, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x98, 0xE3,\n\t0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0x9B, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0x9B, 0xE3,\n\t0x82, 0x9A, 0x0D, 0x06, 0xE3, 0x83, 0xAF, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0xB0, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0xB1, 0xE3,\n\t// Bytes 40c0 - 40ff\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0xB2, 0xE3,\n\t0x82, 0x99, 0x0D, 0x06, 0xE3, 0x83, 0xBD, 0xE3,\n\t0x82, 0x99, 0x0D, 0x08, 0xCE, 0x91, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08,\n\t0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x94,\n\t// Bytes 4100 - 413f\n\t0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08,\n\t0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08,\n\t0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,\n\t// Bytes 4140 - 417f\n\t0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08,\n\t0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9,\n\t// Bytes 4180 - 41bf\n\t0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08,\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08,\n\t0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82,\n\t// Bytes 41c0 - 41ff\n\t0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08,\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08,\n\t// Bytes 4200 - 423f\n\t0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08,\n\t0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDB, 0x08, 0xF0, 0x91, 0x82, 0x99,\n\t// Bytes 4240 - 427f\n\t0xF0, 0x91, 0x82, 0xBA, 0x09, 0x08, 0xF0, 0x91,\n\t0x82, 0x9B, 0xF0, 0x91, 0x82, 0xBA, 0x09, 0x08,\n\t0xF0, 0x91, 0x82, 0xA5, 0xF0, 0x91, 0x82, 0xBA,\n\t0x09, 0x42, 0xC2, 0xB4, 0x01, 0x43, 0x20, 0xCC,\n\t0x81, 0xC9, 0x43, 0x20, 0xCC, 0x83, 0xC9, 0x43,\n\t0x20, 0xCC, 0x84, 0xC9, 0x43, 0x20, 0xCC, 0x85,\n\t0xC9, 0x43, 0x20, 0xCC, 0x86, 0xC9, 0x43, 0x20,\n\t0xCC, 0x87, 0xC9, 0x43, 0x20, 0xCC, 0x88, 0xC9,\n\t// Bytes 4280 - 42bf\n\t0x43, 0x20, 0xCC, 0x8A, 0xC9, 0x43, 0x20, 0xCC,\n\t0x8B, 0xC9, 0x43, 0x20, 0xCC, 0x93, 0xC9, 0x43,\n\t0x20, 0xCC, 0x94, 0xC9, 0x43, 0x20, 0xCC, 0xA7,\n\t0xA5, 0x43, 0x20, 0xCC, 0xA8, 0xA5, 0x43, 0x20,\n\t0xCC, 0xB3, 0xB5, 0x43, 0x20, 0xCD, 0x82, 0xC9,\n\t0x43, 0x20, 0xCD, 0x85, 0xD9, 0x43, 0x20, 0xD9,\n\t0x8B, 0x59, 0x43, 0x20, 0xD9, 0x8C, 0x5D, 0x43,\n\t0x20, 0xD9, 0x8D, 0x61, 0x43, 0x20, 0xD9, 0x8E,\n\t// Bytes 42c0 - 42ff\n\t0x65, 0x43, 0x20, 0xD9, 0x8F, 0x69, 0x43, 0x20,\n\t0xD9, 0x90, 0x6D, 0x43, 0x20, 0xD9, 0x91, 0x71,\n\t0x43, 0x20, 0xD9, 0x92, 0x75, 0x43, 0x41, 0xCC,\n\t0x8A, 0xC9, 0x43, 0x73, 0xCC, 0x87, 0xC9, 0x44,\n\t0x20, 0xE3, 0x82, 0x99, 0x0D, 0x44, 0x20, 0xE3,\n\t0x82, 0x9A, 0x0D, 0x44, 0xC2, 0xA8, 0xCC, 0x81,\n\t0xCA, 0x44, 0xCE, 0x91, 0xCC, 0x81, 0xC9, 0x44,\n\t0xCE, 0x95, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0x97,\n\t// Bytes 4300 - 433f\n\t0xCC, 0x81, 0xC9, 0x44, 0xCE, 0x99, 0xCC, 0x81,\n\t0xC9, 0x44, 0xCE, 0x9F, 0xCC, 0x81, 0xC9, 0x44,\n\t0xCE, 0xA5, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xA5,\n\t0xCC, 0x88, 0xC9, 0x44, 0xCE, 0xA9, 0xCC, 0x81,\n\t0xC9, 0x44, 0xCE, 0xB1, 0xCC, 0x81, 0xC9, 0x44,\n\t0xCE, 0xB5, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xB7,\n\t0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xB9, 0xCC, 0x81,\n\t0xC9, 0x44, 0xCE, 0xBF, 0xCC, 0x81, 0xC9, 0x44,\n\t// Bytes 4340 - 437f\n\t0xCF, 0x85, 0xCC, 0x81, 0xC9, 0x44, 0xCF, 0x89,\n\t0xCC, 0x81, 0xC9, 0x44, 0xD7, 0x90, 0xD6, 0xB7,\n\t0x31, 0x44, 0xD7, 0x90, 0xD6, 0xB8, 0x35, 0x44,\n\t0xD7, 0x90, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x91,\n\t0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x91, 0xD6, 0xBF,\n\t0x49, 0x44, 0xD7, 0x92, 0xD6, 0xBC, 0x41, 0x44,\n\t0xD7, 0x93, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x94,\n\t0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x95, 0xD6, 0xB9,\n\t// Bytes 4380 - 43bf\n\t0x39, 0x44, 0xD7, 0x95, 0xD6, 0xBC, 0x41, 0x44,\n\t0xD7, 0x96, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x98,\n\t0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x99, 0xD6, 0xB4,\n\t0x25, 0x44, 0xD7, 0x99, 0xD6, 0xBC, 0x41, 0x44,\n\t0xD7, 0x9A, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9B,\n\t0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9B, 0xD6, 0xBF,\n\t0x49, 0x44, 0xD7, 0x9C, 0xD6, 0xBC, 0x41, 0x44,\n\t0xD7, 0x9E, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA0,\n\t// Bytes 43c0 - 43ff\n\t0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA1, 0xD6, 0xBC,\n\t0x41, 0x44, 0xD7, 0xA3, 0xD6, 0xBC, 0x41, 0x44,\n\t0xD7, 0xA4, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA4,\n\t0xD6, 0xBF, 0x49, 0x44, 0xD7, 0xA6, 0xD6, 0xBC,\n\t0x41, 0x44, 0xD7, 0xA7, 0xD6, 0xBC, 0x41, 0x44,\n\t0xD7, 0xA8, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA9,\n\t0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA9, 0xD7, 0x81,\n\t0x4D, 0x44, 0xD7, 0xA9, 0xD7, 0x82, 0x51, 0x44,\n\t// Bytes 4400 - 443f\n\t0xD7, 0xAA, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xB2,\n\t0xD6, 0xB7, 0x31, 0x44, 0xD8, 0xA7, 0xD9, 0x8B,\n\t0x59, 0x44, 0xD8, 0xA7, 0xD9, 0x93, 0xC9, 0x44,\n\t0xD8, 0xA7, 0xD9, 0x94, 0xC9, 0x44, 0xD8, 0xA7,\n\t0xD9, 0x95, 0xB5, 0x44, 0xD8, 0xB0, 0xD9, 0xB0,\n\t0x79, 0x44, 0xD8, 0xB1, 0xD9, 0xB0, 0x79, 0x44,\n\t0xD9, 0x80, 0xD9, 0x8B, 0x59, 0x44, 0xD9, 0x80,\n\t0xD9, 0x8E, 0x65, 0x44, 0xD9, 0x80, 0xD9, 0x8F,\n\t// Bytes 4440 - 447f\n\t0x69, 0x44, 0xD9, 0x80, 0xD9, 0x90, 0x6D, 0x44,\n\t0xD9, 0x80, 0xD9, 0x91, 0x71, 0x44, 0xD9, 0x80,\n\t0xD9, 0x92, 0x75, 0x44, 0xD9, 0x87, 0xD9, 0xB0,\n\t0x79, 0x44, 0xD9, 0x88, 0xD9, 0x94, 0xC9, 0x44,\n\t0xD9, 0x89, 0xD9, 0xB0, 0x79, 0x44, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xC9, 0x44, 0xDB, 0x92, 0xD9, 0x94,\n\t0xC9, 0x44, 0xDB, 0x95, 0xD9, 0x94, 0xC9, 0x45,\n\t0x20, 0xCC, 0x88, 0xCC, 0x80, 0xCA, 0x45, 0x20,\n\t// Bytes 4480 - 44bf\n\t0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x45, 0x20, 0xCC,\n\t0x88, 0xCD, 0x82, 0xCA, 0x45, 0x20, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCA, 0x45, 0x20, 0xCC, 0x93, 0xCD, 0x82,\n\t0xCA, 0x45, 0x20, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x45, 0x20, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x45,\n\t0x20, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x45, 0x20,\n\t0xD9, 0x8C, 0xD9, 0x91, 0x72, 0x45, 0x20, 0xD9,\n\t// Bytes 44c0 - 44ff\n\t0x8D, 0xD9, 0x91, 0x72, 0x45, 0x20, 0xD9, 0x8E,\n\t0xD9, 0x91, 0x72, 0x45, 0x20, 0xD9, 0x8F, 0xD9,\n\t0x91, 0x72, 0x45, 0x20, 0xD9, 0x90, 0xD9, 0x91,\n\t0x72, 0x45, 0x20, 0xD9, 0x91, 0xD9, 0xB0, 0x7A,\n\t0x45, 0xE2, 0xAB, 0x9D, 0xCC, 0xB8, 0x05, 0x46,\n\t0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x46,\n\t0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x46,\n\t0xD7, 0xA9, 0xD6, 0xBC, 0xD7, 0x81, 0x4E, 0x46,\n\t// Bytes 4500 - 453f\n\t0xD7, 0xA9, 0xD6, 0xBC, 0xD7, 0x82, 0x52, 0x46,\n\t0xD9, 0x80, 0xD9, 0x8E, 0xD9, 0x91, 0x72, 0x46,\n\t0xD9, 0x80, 0xD9, 0x8F, 0xD9, 0x91, 0x72, 0x46,\n\t0xD9, 0x80, 0xD9, 0x90, 0xD9, 0x91, 0x72, 0x46,\n\t0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA4, 0x96, 0xE0, 0xA4, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA4, 0x9C, 0xE0, 0xA4, 0xBC, 0x09, 0x46,\n\t// Bytes 4540 - 457f\n\t0xE0, 0xA4, 0xA1, 0xE0, 0xA4, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA4, 0xA2, 0xE0, 0xA4, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA4, 0xAB, 0xE0, 0xA4, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA6, 0xA1, 0xE0, 0xA6, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA6, 0xA2, 0xE0, 0xA6, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA6, 0xAF, 0xE0, 0xA6, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA8, 0x96, 0xE0, 0xA8, 0xBC, 0x09, 0x46,\n\t// Bytes 4580 - 45bf\n\t0xE0, 0xA8, 0x97, 0xE0, 0xA8, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA8, 0x9C, 0xE0, 0xA8, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA8, 0xAB, 0xE0, 0xA8, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA8, 0xB2, 0xE0, 0xA8, 0xBC, 0x09, 0x46,\n\t0xE0, 0xA8, 0xB8, 0xE0, 0xA8, 0xBC, 0x09, 0x46,\n\t0xE0, 0xAC, 0xA1, 0xE0, 0xAC, 0xBC, 0x09, 0x46,\n\t0xE0, 0xAC, 0xA2, 0xE0, 0xAC, 0xBC, 0x09, 0x46,\n\t0xE0, 0xBE, 0xB2, 0xE0, 0xBE, 0x80, 0x9D, 0x46,\n\t// Bytes 45c0 - 45ff\n\t0xE0, 0xBE, 0xB3, 0xE0, 0xBE, 0x80, 0x9D, 0x46,\n\t0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x0D, 0x48,\n\t0xF0, 0x9D, 0x85, 0x97, 0xF0, 0x9D, 0x85, 0xA5,\n\t0xAD, 0x48, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xAD, 0x48, 0xF0, 0x9D, 0x86, 0xB9,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xAD, 0x48, 0xF0, 0x9D,\n\t0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xAD, 0x49,\n\t0xE0, 0xBE, 0xB2, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE,\n\t// Bytes 4600 - 463f\n\t0x80, 0x9E, 0x49, 0xE0, 0xBE, 0xB3, 0xE0, 0xBD,\n\t0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x4C, 0xF0, 0x9D,\n\t0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,\n\t0x85, 0xAE, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, 0x98,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF,\n\t0xAE, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB0, 0xAE, 0x4C,\n\t0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5,\n\t// Bytes 4640 - 467f\n\t0xF0, 0x9D, 0x85, 0xB1, 0xAE, 0x4C, 0xF0, 0x9D,\n\t0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,\n\t0x85, 0xB2, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, 0xB9,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE,\n\t0xAE, 0x4C, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE, 0x4C,\n\t0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5,\n\t0xF0, 0x9D, 0x85, 0xAE, 0xAE, 0x4C, 0xF0, 0x9D,\n\t// Bytes 4680 - 46bf\n\t0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,\n\t0x85, 0xAF, 0xAE, 0x83, 0x41, 0xCC, 0x82, 0xC9,\n\t0x83, 0x41, 0xCC, 0x86, 0xC9, 0x83, 0x41, 0xCC,\n\t0x87, 0xC9, 0x83, 0x41, 0xCC, 0x88, 0xC9, 0x83,\n\t0x41, 0xCC, 0x8A, 0xC9, 0x83, 0x41, 0xCC, 0xA3,\n\t0xB5, 0x83, 0x43, 0xCC, 0xA7, 0xA5, 0x83, 0x45,\n\t0xCC, 0x82, 0xC9, 0x83, 0x45, 0xCC, 0x84, 0xC9,\n\t0x83, 0x45, 0xCC, 0xA3, 0xB5, 0x83, 0x45, 0xCC,\n\t// Bytes 46c0 - 46ff\n\t0xA7, 0xA5, 0x83, 0x49, 0xCC, 0x88, 0xC9, 0x83,\n\t0x4C, 0xCC, 0xA3, 0xB5, 0x83, 0x4F, 0xCC, 0x82,\n\t0xC9, 0x83, 0x4F, 0xCC, 0x83, 0xC9, 0x83, 0x4F,\n\t0xCC, 0x84, 0xC9, 0x83, 0x4F, 0xCC, 0x87, 0xC9,\n\t0x83, 0x4F, 0xCC, 0x88, 0xC9, 0x83, 0x4F, 0xCC,\n\t0x9B, 0xAD, 0x83, 0x4F, 0xCC, 0xA3, 0xB5, 0x83,\n\t0x4F, 0xCC, 0xA8, 0xA5, 0x83, 0x52, 0xCC, 0xA3,\n\t0xB5, 0x83, 0x53, 0xCC, 0x81, 0xC9, 0x83, 0x53,\n\t// Bytes 4700 - 473f\n\t0xCC, 0x8C, 0xC9, 0x83, 0x53, 0xCC, 0xA3, 0xB5,\n\t0x83, 0x55, 0xCC, 0x83, 0xC9, 0x83, 0x55, 0xCC,\n\t0x84, 0xC9, 0x83, 0x55, 0xCC, 0x88, 0xC9, 0x83,\n\t0x55, 0xCC, 0x9B, 0xAD, 0x83, 0x61, 0xCC, 0x82,\n\t0xC9, 0x83, 0x61, 0xCC, 0x86, 0xC9, 0x83, 0x61,\n\t0xCC, 0x87, 0xC9, 0x83, 0x61, 0xCC, 0x88, 0xC9,\n\t0x83, 0x61, 0xCC, 0x8A, 0xC9, 0x83, 0x61, 0xCC,\n\t0xA3, 0xB5, 0x83, 0x63, 0xCC, 0xA7, 0xA5, 0x83,\n\t// Bytes 4740 - 477f\n\t0x65, 0xCC, 0x82, 0xC9, 0x83, 0x65, 0xCC, 0x84,\n\t0xC9, 0x83, 0x65, 0xCC, 0xA3, 0xB5, 0x83, 0x65,\n\t0xCC, 0xA7, 0xA5, 0x83, 0x69, 0xCC, 0x88, 0xC9,\n\t0x83, 0x6C, 0xCC, 0xA3, 0xB5, 0x83, 0x6F, 0xCC,\n\t0x82, 0xC9, 0x83, 0x6F, 0xCC, 0x83, 0xC9, 0x83,\n\t0x6F, 0xCC, 0x84, 0xC9, 0x83, 0x6F, 0xCC, 0x87,\n\t0xC9, 0x83, 0x6F, 0xCC, 0x88, 0xC9, 0x83, 0x6F,\n\t0xCC, 0x9B, 0xAD, 0x83, 0x6F, 0xCC, 0xA3, 0xB5,\n\t// Bytes 4780 - 47bf\n\t0x83, 0x6F, 0xCC, 0xA8, 0xA5, 0x83, 0x72, 0xCC,\n\t0xA3, 0xB5, 0x83, 0x73, 0xCC, 0x81, 0xC9, 0x83,\n\t0x73, 0xCC, 0x8C, 0xC9, 0x83, 0x73, 0xCC, 0xA3,\n\t0xB5, 0x83, 0x75, 0xCC, 0x83, 0xC9, 0x83, 0x75,\n\t0xCC, 0x84, 0xC9, 0x83, 0x75, 0xCC, 0x88, 0xC9,\n\t0x83, 0x75, 0xCC, 0x9B, 0xAD, 0x84, 0xCE, 0x91,\n\t0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x91, 0xCC, 0x94,\n\t0xC9, 0x84, 0xCE, 0x95, 0xCC, 0x93, 0xC9, 0x84,\n\t// Bytes 47c0 - 47ff\n\t0xCE, 0x95, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0x97,\n\t0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x97, 0xCC, 0x94,\n\t0xC9, 0x84, 0xCE, 0x99, 0xCC, 0x93, 0xC9, 0x84,\n\t0xCE, 0x99, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0x9F,\n\t0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x9F, 0xCC, 0x94,\n\t0xC9, 0x84, 0xCE, 0xA5, 0xCC, 0x94, 0xC9, 0x84,\n\t0xCE, 0xA9, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xA9,\n\t0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xB1, 0xCC, 0x80,\n\t// Bytes 4800 - 483f\n\t0xC9, 0x84, 0xCE, 0xB1, 0xCC, 0x81, 0xC9, 0x84,\n\t0xCE, 0xB1, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB1,\n\t0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xB1, 0xCD, 0x82,\n\t0xC9, 0x84, 0xCE, 0xB5, 0xCC, 0x93, 0xC9, 0x84,\n\t0xCE, 0xB5, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xB7,\n\t0xCC, 0x80, 0xC9, 0x84, 0xCE, 0xB7, 0xCC, 0x81,\n\t0xC9, 0x84, 0xCE, 0xB7, 0xCC, 0x93, 0xC9, 0x84,\n\t0xCE, 0xB7, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xB7,\n\t// Bytes 4840 - 487f\n\t0xCD, 0x82, 0xC9, 0x84, 0xCE, 0xB9, 0xCC, 0x88,\n\t0xC9, 0x84, 0xCE, 0xB9, 0xCC, 0x93, 0xC9, 0x84,\n\t0xCE, 0xB9, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xBF,\n\t0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xBF, 0xCC, 0x94,\n\t0xC9, 0x84, 0xCF, 0x85, 0xCC, 0x88, 0xC9, 0x84,\n\t0xCF, 0x85, 0xCC, 0x93, 0xC9, 0x84, 0xCF, 0x85,\n\t0xCC, 0x94, 0xC9, 0x84, 0xCF, 0x89, 0xCC, 0x80,\n\t0xC9, 0x84, 0xCF, 0x89, 0xCC, 0x81, 0xC9, 0x84,\n\t// Bytes 4880 - 48bf\n\t0xCF, 0x89, 0xCC, 0x93, 0xC9, 0x84, 0xCF, 0x89,\n\t0xCC, 0x94, 0xC9, 0x84, 0xCF, 0x89, 0xCD, 0x82,\n\t0xC9, 0x86, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCA, 0x86, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCA, 0x86, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x82,\n\t0xCA, 0x86, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCA, 0x86, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCA, 0x86, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82,\n\t// Bytes 48c0 - 48ff\n\t0xCA, 0x86, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCA, 0x86, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCA, 0x86, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82,\n\t0xCA, 0x86, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCA, 0x86, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCA, 0x86, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCA, 0x86, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCA, 0x86, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81,\n\t// Bytes 4900 - 493f\n\t0xCA, 0x86, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82,\n\t0xCA, 0x86, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCA, 0x86, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCA, 0x86, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCA, 0x86, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCA, 0x86, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCA, 0x86, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82,\n\t0xCA, 0x86, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80,\n\t// Bytes 4940 - 497f\n\t0xCA, 0x86, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCA, 0x86, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCA, 0x86, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCA, 0x86, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCA, 0x86, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82,\n\t0xCA, 0x86, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCA, 0x86, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCA, 0x86, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82,\n\t// Bytes 4980 - 49bf\n\t0xCA, 0x86, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCA, 0x86, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCA, 0x86, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82,\n\t0xCA, 0x86, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCA, 0x86, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCA, 0x86, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCA, 0x42, 0xCC, 0x80, 0xC9, 0x32, 0x42, 0xCC,\n\t0x81, 0xC9, 0x32, 0x42, 0xCC, 0x93, 0xC9, 0x32,\n\t// Bytes 49c0 - 49ff\n\t0x43, 0xE1, 0x85, 0xA1, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xA2, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA3,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xA4, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xA5, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xA6, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA7,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xA8, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xA9, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xAA, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAB,\n\t// Bytes 4a00 - 4a3f\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xAC, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xAD, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xAE, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAF,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xB0, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xB1, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xB2, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB3,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xB4, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xB5, 0x01, 0x00, 0x43, 0xE1,\n\t// Bytes 4a40 - 4a7f\n\t0x86, 0xAA, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAC,\n\t0x01, 0x00, 0x43, 0xE1, 0x86, 0xAD, 0x01, 0x00,\n\t0x43, 0xE1, 0x86, 0xB0, 0x01, 0x00, 0x43, 0xE1,\n\t0x86, 0xB1, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB2,\n\t0x01, 0x00, 0x43, 0xE1, 0x86, 0xB3, 0x01, 0x00,\n\t0x43, 0xE1, 0x86, 0xB4, 0x01, 0x00, 0x43, 0xE1,\n\t0x86, 0xB5, 0x01, 0x00, 0x44, 0xCC, 0x88, 0xCC,\n\t0x81, 0xCA, 0x32, 0x43, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4a80 - 4abf\n\t0x03, 0x43, 0xE3, 0x82, 0x9A, 0x0D, 0x03, 0x46,\n\t0xE0, 0xBD, 0xB1, 0xE0, 0xBD, 0xB2, 0x9E, 0x26,\n\t0x46, 0xE0, 0xBD, 0xB1, 0xE0, 0xBD, 0xB4, 0xA2,\n\t0x26, 0x46, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80,\n\t0x9E, 0x26, 0x00, 0x01,\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfcTrie. Total size: 10610 bytes (10.36 KiB). Checksum: 95e8869a9f81e5e6.\ntype nfcTrie struct{}\n\nfunc newNfcTrie(i int) *nfcTrie {\n\treturn &nfcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 46:\n\t\treturn uint16(nfcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 46\n\t\treturn uint16(nfcSparse.lookup(n, b))\n\t}\n}\n\n// nfcValues: 48 blocks, 3072 entries, 6144 bytes\n// The third block is the zero block.\nvar nfcValues = [3072]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f72, 0xc1: 0x2f77, 0xc2: 0x468b, 0xc3: 0x2f7c, 0xc4: 0x469a, 0xc5: 0x469f,\n\t0xc6: 0xa000, 0xc7: 0x46a9, 0xc8: 0x2fe5, 0xc9: 0x2fea, 0xca: 0x46ae, 0xcb: 0x2ffe,\n\t0xcc: 0x3071, 0xcd: 0x3076, 0xce: 0x307b, 0xcf: 0x46c2, 0xd1: 0x3107,\n\t0xd2: 0x312a, 0xd3: 0x312f, 0xd4: 0x46cc, 0xd5: 0x46d1, 0xd6: 0x46e0,\n\t0xd8: 0xa000, 0xd9: 0x31b6, 0xda: 0x31bb, 0xdb: 0x31c0, 0xdc: 0x4712, 0xdd: 0x3238,\n\t0xe0: 0x327e, 0xe1: 0x3283, 0xe2: 0x471c, 0xe3: 0x3288,\n\t0xe4: 0x472b, 0xe5: 0x4730, 0xe6: 0xa000, 0xe7: 0x473a, 0xe8: 0x32f1, 0xe9: 0x32f6,\n\t0xea: 0x473f, 0xeb: 0x330a, 0xec: 0x3382, 0xed: 0x3387, 0xee: 0x338c, 0xef: 0x4753,\n\t0xf1: 0x3418, 0xf2: 0x343b, 0xf3: 0x3440, 0xf4: 0x475d, 0xf5: 0x4762,\n\t0xf6: 0x4771, 0xf8: 0xa000, 0xf9: 0x34cc, 0xfa: 0x34d1, 0xfb: 0x34d6,\n\t0xfc: 0x47a3, 0xfd: 0x3553, 0xff: 0x356c,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f81, 0x101: 0x328d, 0x102: 0x4690, 0x103: 0x4721, 0x104: 0x2f9f, 0x105: 0x32ab,\n\t0x106: 0x2fb3, 0x107: 0x32bf, 0x108: 0x2fb8, 0x109: 0x32c4, 0x10a: 0x2fbd, 0x10b: 0x32c9,\n\t0x10c: 0x2fc2, 0x10d: 0x32ce, 0x10e: 0x2fcc, 0x10f: 0x32d8,\n\t0x112: 0x46b3, 0x113: 0x4744, 0x114: 0x2ff4, 0x115: 0x3300, 0x116: 0x2ff9, 0x117: 0x3305,\n\t0x118: 0x3017, 0x119: 0x3323, 0x11a: 0x3008, 0x11b: 0x3314, 0x11c: 0x3030, 0x11d: 0x333c,\n\t0x11e: 0x303a, 0x11f: 0x3346, 0x120: 0x303f, 0x121: 0x334b, 0x122: 0x3049, 0x123: 0x3355,\n\t0x124: 0x304e, 0x125: 0x335a, 0x128: 0x3080, 0x129: 0x3391,\n\t0x12a: 0x3085, 0x12b: 0x3396, 0x12c: 0x308a, 0x12d: 0x339b, 0x12e: 0x30ad, 0x12f: 0x33b9,\n\t0x130: 0x308f, 0x134: 0x30b7, 0x135: 0x33c3,\n\t0x136: 0x30cb, 0x137: 0x33dc, 0x139: 0x30d5, 0x13a: 0x33e6, 0x13b: 0x30df,\n\t0x13c: 0x33f0, 0x13d: 0x30da, 0x13e: 0x33eb,\n\t// Block 0x5, offset 0x140\n\t0x143: 0x3102, 0x144: 0x3413, 0x145: 0x311b,\n\t0x146: 0x342c, 0x147: 0x3111, 0x148: 0x3422,\n\t0x14c: 0x46d6, 0x14d: 0x4767, 0x14e: 0x3134, 0x14f: 0x3445, 0x150: 0x313e, 0x151: 0x344f,\n\t0x154: 0x315c, 0x155: 0x346d, 0x156: 0x3175, 0x157: 0x3486,\n\t0x158: 0x3166, 0x159: 0x3477, 0x15a: 0x46f9, 0x15b: 0x478a, 0x15c: 0x317f, 0x15d: 0x3490,\n\t0x15e: 0x318e, 0x15f: 0x349f, 0x160: 0x46fe, 0x161: 0x478f, 0x162: 0x31a7, 0x163: 0x34bd,\n\t0x164: 0x3198, 0x165: 0x34ae, 0x168: 0x4708, 0x169: 0x4799,\n\t0x16a: 0x470d, 0x16b: 0x479e, 0x16c: 0x31c5, 0x16d: 0x34db, 0x16e: 0x31cf, 0x16f: 0x34e5,\n\t0x170: 0x31d4, 0x171: 0x34ea, 0x172: 0x31f2, 0x173: 0x3508, 0x174: 0x3215, 0x175: 0x352b,\n\t0x176: 0x323d, 0x177: 0x3558, 0x178: 0x3251, 0x179: 0x3260, 0x17a: 0x3580, 0x17b: 0x326a,\n\t0x17c: 0x358a, 0x17d: 0x326f, 0x17e: 0x358f, 0x17f: 0xa000,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x8100, 0x185: 0x8100,\n\t0x186: 0x8100,\n\t0x18d: 0x2f8b, 0x18e: 0x3297, 0x18f: 0x3099, 0x190: 0x33a5, 0x191: 0x3143,\n\t0x192: 0x3454, 0x193: 0x31d9, 0x194: 0x34ef, 0x195: 0x39d2, 0x196: 0x3b61, 0x197: 0x39cb,\n\t0x198: 0x3b5a, 0x199: 0x39d9, 0x19a: 0x3b68, 0x19b: 0x39c4, 0x19c: 0x3b53,\n\t0x19e: 0x38b3, 0x19f: 0x3a42, 0x1a0: 0x38ac, 0x1a1: 0x3a3b, 0x1a2: 0x35b6, 0x1a3: 0x35c8,\n\t0x1a6: 0x3044, 0x1a7: 0x3350, 0x1a8: 0x30c1, 0x1a9: 0x33d2,\n\t0x1aa: 0x46ef, 0x1ab: 0x4780, 0x1ac: 0x3993, 0x1ad: 0x3b22, 0x1ae: 0x35da, 0x1af: 0x35e0,\n\t0x1b0: 0x33c8, 0x1b4: 0x302b, 0x1b5: 0x3337,\n\t0x1b8: 0x30fd, 0x1b9: 0x340e, 0x1ba: 0x38ba, 0x1bb: 0x3a49,\n\t0x1bc: 0x35b0, 0x1bd: 0x35c2, 0x1be: 0x35bc, 0x1bf: 0x35ce,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2f90, 0x1c1: 0x329c, 0x1c2: 0x2f95, 0x1c3: 0x32a1, 0x1c4: 0x300d, 0x1c5: 0x3319,\n\t0x1c6: 0x3012, 0x1c7: 0x331e, 0x1c8: 0x309e, 0x1c9: 0x33aa, 0x1ca: 0x30a3, 0x1cb: 0x33af,\n\t0x1cc: 0x3148, 0x1cd: 0x3459, 0x1ce: 0x314d, 0x1cf: 0x345e, 0x1d0: 0x316b, 0x1d1: 0x347c,\n\t0x1d2: 0x3170, 0x1d3: 0x3481, 0x1d4: 0x31de, 0x1d5: 0x34f4, 0x1d6: 0x31e3, 0x1d7: 0x34f9,\n\t0x1d8: 0x3189, 0x1d9: 0x349a, 0x1da: 0x31a2, 0x1db: 0x34b8,\n\t0x1de: 0x305d, 0x1df: 0x3369,\n\t0x1e6: 0x4695, 0x1e7: 0x4726, 0x1e8: 0x46bd, 0x1e9: 0x474e,\n\t0x1ea: 0x3962, 0x1eb: 0x3af1, 0x1ec: 0x393f, 0x1ed: 0x3ace, 0x1ee: 0x46db, 0x1ef: 0x476c,\n\t0x1f0: 0x395b, 0x1f1: 0x3aea, 0x1f2: 0x3247, 0x1f3: 0x3562,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,\n\t0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,\n\t0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932,\n\t0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d,\n\t0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d,\n\t0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d,\n\t0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d,\n\t0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d,\n\t0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,\n\t0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49b1, 0x241: 0x49b6, 0x242: 0x9932, 0x243: 0x49bb, 0x244: 0x4a74, 0x245: 0x9936,\n\t0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,\n\t0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,\n\t0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,\n\t0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135,\n\t0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132,\n\t0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132,\n\t0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132,\n\t0x274: 0x0170,\n\t0x27a: 0x8100,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x8100, 0x285: 0x35a4,\n\t0x286: 0x35ec, 0x287: 0x00ce, 0x288: 0x360a, 0x289: 0x3616, 0x28a: 0x3628,\n\t0x28c: 0x3646, 0x28e: 0x3658, 0x28f: 0x3676, 0x290: 0x3e0b, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x363a, 0x2ab: 0x366a, 0x2ac: 0x4801, 0x2ad: 0x369a, 0x2ae: 0x482b, 0x2af: 0x36ac,\n\t0x2b0: 0x3e73, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x3724, 0x2c1: 0x3730, 0x2c3: 0x371e,\n\t0x2c6: 0xa000, 0x2c7: 0x370c,\n\t0x2cc: 0x3760, 0x2cd: 0x3748, 0x2ce: 0x3772, 0x2d0: 0xa000,\n\t0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000,\n\t0x2d8: 0xa000, 0x2d9: 0x3754, 0x2da: 0xa000,\n\t0x2de: 0xa000, 0x2e3: 0xa000,\n\t0x2e7: 0xa000,\n\t0x2eb: 0xa000, 0x2ed: 0xa000,\n\t0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000,\n\t0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x37d8, 0x2fa: 0xa000,\n\t0x2fe: 0xa000,\n\t// Block 0xc, offset 0x300\n\t0x301: 0x3736, 0x302: 0x37ba,\n\t0x310: 0x3712, 0x311: 0x3796,\n\t0x312: 0x3718, 0x313: 0x379c, 0x316: 0x372a, 0x317: 0x37ae,\n\t0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x382c, 0x31b: 0x3832, 0x31c: 0x373c, 0x31d: 0x37c0,\n\t0x31e: 0x3742, 0x31f: 0x37c6, 0x322: 0x374e, 0x323: 0x37d2,\n\t0x324: 0x375a, 0x325: 0x37de, 0x326: 0x3766, 0x327: 0x37ea, 0x328: 0xa000, 0x329: 0xa000,\n\t0x32a: 0x3838, 0x32b: 0x383e, 0x32c: 0x3790, 0x32d: 0x3814, 0x32e: 0x376c, 0x32f: 0x37f0,\n\t0x330: 0x3778, 0x331: 0x37fc, 0x332: 0x377e, 0x333: 0x3802, 0x334: 0x3784, 0x335: 0x3808,\n\t0x338: 0x378a, 0x339: 0x380e,\n\t// Block 0xd, offset 0x340\n\t0x351: 0x812d,\n\t0x352: 0x8132, 0x353: 0x8132, 0x354: 0x8132, 0x355: 0x8132, 0x356: 0x812d, 0x357: 0x8132,\n\t0x358: 0x8132, 0x359: 0x8132, 0x35a: 0x812e, 0x35b: 0x812d, 0x35c: 0x8132, 0x35d: 0x8132,\n\t0x35e: 0x8132, 0x35f: 0x8132, 0x360: 0x8132, 0x361: 0x8132, 0x362: 0x812d, 0x363: 0x812d,\n\t0x364: 0x812d, 0x365: 0x812d, 0x366: 0x812d, 0x367: 0x812d, 0x368: 0x8132, 0x369: 0x8132,\n\t0x36a: 0x812d, 0x36b: 0x8132, 0x36c: 0x8132, 0x36d: 0x812e, 0x36e: 0x8131, 0x36f: 0x8132,\n\t0x370: 0x8105, 0x371: 0x8106, 0x372: 0x8107, 0x373: 0x8108, 0x374: 0x8109, 0x375: 0x810a,\n\t0x376: 0x810b, 0x377: 0x810c, 0x378: 0x810d, 0x379: 0x810e, 0x37a: 0x810e, 0x37b: 0x810f,\n\t0x37c: 0x8110, 0x37d: 0x8111, 0x37f: 0x8112,\n\t// Block 0xe, offset 0x380\n\t0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8116,\n\t0x38c: 0x8117, 0x38d: 0x8118, 0x38e: 0x8119, 0x38f: 0x811a, 0x390: 0x811b, 0x391: 0x811c,\n\t0x392: 0x811d, 0x393: 0x9932, 0x394: 0x9932, 0x395: 0x992d, 0x396: 0x812d, 0x397: 0x8132,\n\t0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x8132, 0x39b: 0x8132, 0x39c: 0x812d, 0x39d: 0x8132,\n\t0x39e: 0x8132, 0x39f: 0x812d,\n\t0x3b0: 0x811e,\n\t// Block 0xf, offset 0x3c0\n\t0x3d3: 0x812d, 0x3d4: 0x8132, 0x3d5: 0x8132, 0x3d6: 0x8132, 0x3d7: 0x8132,\n\t0x3d8: 0x8132, 0x3d9: 0x8132, 0x3da: 0x8132, 0x3db: 0x8132, 0x3dc: 0x8132, 0x3dd: 0x8132,\n\t0x3de: 0x8132, 0x3df: 0x8132, 0x3e0: 0x8132, 0x3e1: 0x8132, 0x3e3: 0x812d,\n\t0x3e4: 0x8132, 0x3e5: 0x8132, 0x3e6: 0x812d, 0x3e7: 0x8132, 0x3e8: 0x8132, 0x3e9: 0x812d,\n\t0x3ea: 0x8132, 0x3eb: 0x8132, 0x3ec: 0x8132, 0x3ed: 0x812d, 0x3ee: 0x812d, 0x3ef: 0x812d,\n\t0x3f0: 0x8116, 0x3f1: 0x8117, 0x3f2: 0x8118, 0x3f3: 0x8132, 0x3f4: 0x8132, 0x3f5: 0x8132,\n\t0x3f6: 0x812d, 0x3f7: 0x8132, 0x3f8: 0x8132, 0x3f9: 0x812d, 0x3fa: 0x812d, 0x3fb: 0x8132,\n\t0x3fc: 0x8132, 0x3fd: 0x8132, 0x3fe: 0x8132, 0x3ff: 0x8132,\n\t// Block 0x10, offset 0x400\n\t0x405: 0xa000,\n\t0x406: 0x2d29, 0x407: 0xa000, 0x408: 0x2d31, 0x409: 0xa000, 0x40a: 0x2d39, 0x40b: 0xa000,\n\t0x40c: 0x2d41, 0x40d: 0xa000, 0x40e: 0x2d49, 0x411: 0xa000,\n\t0x412: 0x2d51,\n\t0x434: 0x8102, 0x435: 0x9900,\n\t0x43a: 0xa000, 0x43b: 0x2d59,\n\t0x43c: 0xa000, 0x43d: 0x2d61, 0x43e: 0xa000, 0x43f: 0xa000,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x8132, 0x441: 0x8132, 0x442: 0x812d, 0x443: 0x8132, 0x444: 0x8132, 0x445: 0x8132,\n\t0x446: 0x8132, 0x447: 0x8132, 0x448: 0x8132, 0x449: 0x8132, 0x44a: 0x812d, 0x44b: 0x8132,\n\t0x44c: 0x8132, 0x44d: 0x8135, 0x44e: 0x812a, 0x44f: 0x812d, 0x450: 0x8129, 0x451: 0x8132,\n\t0x452: 0x8132, 0x453: 0x8132, 0x454: 0x8132, 0x455: 0x8132, 0x456: 0x8132, 0x457: 0x8132,\n\t0x458: 0x8132, 0x459: 0x8132, 0x45a: 0x8132, 0x45b: 0x8132, 0x45c: 0x8132, 0x45d: 0x8132,\n\t0x45e: 0x8132, 0x45f: 0x8132, 0x460: 0x8132, 0x461: 0x8132, 0x462: 0x8132, 0x463: 0x8132,\n\t0x464: 0x8132, 0x465: 0x8132, 0x466: 0x8132, 0x467: 0x8132, 0x468: 0x8132, 0x469: 0x8132,\n\t0x46a: 0x8132, 0x46b: 0x8132, 0x46c: 0x8132, 0x46d: 0x8132, 0x46e: 0x8132, 0x46f: 0x8132,\n\t0x470: 0x8132, 0x471: 0x8132, 0x472: 0x8132, 0x473: 0x8132, 0x474: 0x8132, 0x475: 0x8132,\n\t0x476: 0x8133, 0x477: 0x8131, 0x478: 0x8131, 0x479: 0x812d, 0x47b: 0x8132,\n\t0x47c: 0x8134, 0x47d: 0x812d, 0x47e: 0x8132, 0x47f: 0x812d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x2f9a, 0x481: 0x32a6, 0x482: 0x2fa4, 0x483: 0x32b0, 0x484: 0x2fa9, 0x485: 0x32b5,\n\t0x486: 0x2fae, 0x487: 0x32ba, 0x488: 0x38cf, 0x489: 0x3a5e, 0x48a: 0x2fc7, 0x48b: 0x32d3,\n\t0x48c: 0x2fd1, 0x48d: 0x32dd, 0x48e: 0x2fe0, 0x48f: 0x32ec, 0x490: 0x2fd6, 0x491: 0x32e2,\n\t0x492: 0x2fdb, 0x493: 0x32e7, 0x494: 0x38f2, 0x495: 0x3a81, 0x496: 0x38f9, 0x497: 0x3a88,\n\t0x498: 0x301c, 0x499: 0x3328, 0x49a: 0x3021, 0x49b: 0x332d, 0x49c: 0x3907, 0x49d: 0x3a96,\n\t0x49e: 0x3026, 0x49f: 0x3332, 0x4a0: 0x3035, 0x4a1: 0x3341, 0x4a2: 0x3053, 0x4a3: 0x335f,\n\t0x4a4: 0x3062, 0x4a5: 0x336e, 0x4a6: 0x3058, 0x4a7: 0x3364, 0x4a8: 0x3067, 0x4a9: 0x3373,\n\t0x4aa: 0x306c, 0x4ab: 0x3378, 0x4ac: 0x30b2, 0x4ad: 0x33be, 0x4ae: 0x390e, 0x4af: 0x3a9d,\n\t0x4b0: 0x30bc, 0x4b1: 0x33cd, 0x4b2: 0x30c6, 0x4b3: 0x33d7, 0x4b4: 0x30d0, 0x4b5: 0x33e1,\n\t0x4b6: 0x46c7, 0x4b7: 0x4758, 0x4b8: 0x3915, 0x4b9: 0x3aa4, 0x4ba: 0x30e9, 0x4bb: 0x33fa,\n\t0x4bc: 0x30e4, 0x4bd: 0x33f5, 0x4be: 0x30ee, 0x4bf: 0x33ff,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x30f3, 0x4c1: 0x3404, 0x4c2: 0x30f8, 0x4c3: 0x3409, 0x4c4: 0x310c, 0x4c5: 0x341d,\n\t0x4c6: 0x3116, 0x4c7: 0x3427, 0x4c8: 0x3125, 0x4c9: 0x3436, 0x4ca: 0x3120, 0x4cb: 0x3431,\n\t0x4cc: 0x3938, 0x4cd: 0x3ac7, 0x4ce: 0x3946, 0x4cf: 0x3ad5, 0x4d0: 0x394d, 0x4d1: 0x3adc,\n\t0x4d2: 0x3954, 0x4d3: 0x3ae3, 0x4d4: 0x3152, 0x4d5: 0x3463, 0x4d6: 0x3157, 0x4d7: 0x3468,\n\t0x4d8: 0x3161, 0x4d9: 0x3472, 0x4da: 0x46f4, 0x4db: 0x4785, 0x4dc: 0x399a, 0x4dd: 0x3b29,\n\t0x4de: 0x317a, 0x4df: 0x348b, 0x4e0: 0x3184, 0x4e1: 0x3495, 0x4e2: 0x4703, 0x4e3: 0x4794,\n\t0x4e4: 0x39a1, 0x4e5: 0x3b30, 0x4e6: 0x39a8, 0x4e7: 0x3b37, 0x4e8: 0x39af, 0x4e9: 0x3b3e,\n\t0x4ea: 0x3193, 0x4eb: 0x34a4, 0x4ec: 0x319d, 0x4ed: 0x34b3, 0x4ee: 0x31b1, 0x4ef: 0x34c7,\n\t0x4f0: 0x31ac, 0x4f1: 0x34c2, 0x4f2: 0x31ed, 0x4f3: 0x3503, 0x4f4: 0x31fc, 0x4f5: 0x3512,\n\t0x4f6: 0x31f7, 0x4f7: 0x350d, 0x4f8: 0x39b6, 0x4f9: 0x3b45, 0x4fa: 0x39bd, 0x4fb: 0x3b4c,\n\t0x4fc: 0x3201, 0x4fd: 0x3517, 0x4fe: 0x3206, 0x4ff: 0x351c,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x320b, 0x501: 0x3521, 0x502: 0x3210, 0x503: 0x3526, 0x504: 0x321f, 0x505: 0x3535,\n\t0x506: 0x321a, 0x507: 0x3530, 0x508: 0x3224, 0x509: 0x353f, 0x50a: 0x3229, 0x50b: 0x3544,\n\t0x50c: 0x322e, 0x50d: 0x3549, 0x50e: 0x324c, 0x50f: 0x3567, 0x510: 0x3265, 0x511: 0x3585,\n\t0x512: 0x3274, 0x513: 0x3594, 0x514: 0x3279, 0x515: 0x3599, 0x516: 0x337d, 0x517: 0x34a9,\n\t0x518: 0x353a, 0x519: 0x3576, 0x51b: 0x35d4,\n\t0x520: 0x46a4, 0x521: 0x4735, 0x522: 0x2f86, 0x523: 0x3292,\n\t0x524: 0x387b, 0x525: 0x3a0a, 0x526: 0x3874, 0x527: 0x3a03, 0x528: 0x3889, 0x529: 0x3a18,\n\t0x52a: 0x3882, 0x52b: 0x3a11, 0x52c: 0x38c1, 0x52d: 0x3a50, 0x52e: 0x3897, 0x52f: 0x3a26,\n\t0x530: 0x3890, 0x531: 0x3a1f, 0x532: 0x38a5, 0x533: 0x3a34, 0x534: 0x389e, 0x535: 0x3a2d,\n\t0x536: 0x38c8, 0x537: 0x3a57, 0x538: 0x46b8, 0x539: 0x4749, 0x53a: 0x3003, 0x53b: 0x330f,\n\t0x53c: 0x2fef, 0x53d: 0x32fb, 0x53e: 0x38dd, 0x53f: 0x3a6c,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x38d6, 0x541: 0x3a65, 0x542: 0x38eb, 0x543: 0x3a7a, 0x544: 0x38e4, 0x545: 0x3a73,\n\t0x546: 0x3900, 0x547: 0x3a8f, 0x548: 0x3094, 0x549: 0x33a0, 0x54a: 0x30a8, 0x54b: 0x33b4,\n\t0x54c: 0x46ea, 0x54d: 0x477b, 0x54e: 0x3139, 0x54f: 0x344a, 0x550: 0x3923, 0x551: 0x3ab2,\n\t0x552: 0x391c, 0x553: 0x3aab, 0x554: 0x3931, 0x555: 0x3ac0, 0x556: 0x392a, 0x557: 0x3ab9,\n\t0x558: 0x398c, 0x559: 0x3b1b, 0x55a: 0x3970, 0x55b: 0x3aff, 0x55c: 0x3969, 0x55d: 0x3af8,\n\t0x55e: 0x397e, 0x55f: 0x3b0d, 0x560: 0x3977, 0x561: 0x3b06, 0x562: 0x3985, 0x563: 0x3b14,\n\t0x564: 0x31e8, 0x565: 0x34fe, 0x566: 0x31ca, 0x567: 0x34e0, 0x568: 0x39e7, 0x569: 0x3b76,\n\t0x56a: 0x39e0, 0x56b: 0x3b6f, 0x56c: 0x39f5, 0x56d: 0x3b84, 0x56e: 0x39ee, 0x56f: 0x3b7d,\n\t0x570: 0x39fc, 0x571: 0x3b8b, 0x572: 0x3233, 0x573: 0x354e, 0x574: 0x325b, 0x575: 0x357b,\n\t0x576: 0x3256, 0x577: 0x3571, 0x578: 0x3242, 0x579: 0x355d,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x4807, 0x581: 0x480d, 0x582: 0x4921, 0x583: 0x4939, 0x584: 0x4929, 0x585: 0x4941,\n\t0x586: 0x4931, 0x587: 0x4949, 0x588: 0x47ad, 0x589: 0x47b3, 0x58a: 0x4891, 0x58b: 0x48a9,\n\t0x58c: 0x4899, 0x58d: 0x48b1, 0x58e: 0x48a1, 0x58f: 0x48b9, 0x590: 0x4819, 0x591: 0x481f,\n\t0x592: 0x3dbb, 0x593: 0x3dcb, 0x594: 0x3dc3, 0x595: 0x3dd3,\n\t0x598: 0x47b9, 0x599: 0x47bf, 0x59a: 0x3ceb, 0x59b: 0x3cfb, 0x59c: 0x3cf3, 0x59d: 0x3d03,\n\t0x5a0: 0x4831, 0x5a1: 0x4837, 0x5a2: 0x4951, 0x5a3: 0x4969,\n\t0x5a4: 0x4959, 0x5a5: 0x4971, 0x5a6: 0x4961, 0x5a7: 0x4979, 0x5a8: 0x47c5, 0x5a9: 0x47cb,\n\t0x5aa: 0x48c1, 0x5ab: 0x48d9, 0x5ac: 0x48c9, 0x5ad: 0x48e1, 0x5ae: 0x48d1, 0x5af: 0x48e9,\n\t0x5b0: 0x4849, 0x5b1: 0x484f, 0x5b2: 0x3e1b, 0x5b3: 0x3e33, 0x5b4: 0x3e23, 0x5b5: 0x3e3b,\n\t0x5b6: 0x3e2b, 0x5b7: 0x3e43, 0x5b8: 0x47d1, 0x5b9: 0x47d7, 0x5ba: 0x3d1b, 0x5bb: 0x3d33,\n\t0x5bc: 0x3d23, 0x5bd: 0x3d3b, 0x5be: 0x3d2b, 0x5bf: 0x3d43,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x4855, 0x5c1: 0x485b, 0x5c2: 0x3e4b, 0x5c3: 0x3e5b, 0x5c4: 0x3e53, 0x5c5: 0x3e63,\n\t0x5c8: 0x47dd, 0x5c9: 0x47e3, 0x5ca: 0x3d4b, 0x5cb: 0x3d5b,\n\t0x5cc: 0x3d53, 0x5cd: 0x3d63, 0x5d0: 0x4867, 0x5d1: 0x486d,\n\t0x5d2: 0x3e83, 0x5d3: 0x3e9b, 0x5d4: 0x3e8b, 0x5d5: 0x3ea3, 0x5d6: 0x3e93, 0x5d7: 0x3eab,\n\t0x5d9: 0x47e9, 0x5db: 0x3d6b, 0x5dd: 0x3d73,\n\t0x5df: 0x3d7b, 0x5e0: 0x487f, 0x5e1: 0x4885, 0x5e2: 0x4981, 0x5e3: 0x4999,\n\t0x5e4: 0x4989, 0x5e5: 0x49a1, 0x5e6: 0x4991, 0x5e7: 0x49a9, 0x5e8: 0x47ef, 0x5e9: 0x47f5,\n\t0x5ea: 0x48f1, 0x5eb: 0x4909, 0x5ec: 0x48f9, 0x5ed: 0x4911, 0x5ee: 0x4901, 0x5ef: 0x4919,\n\t0x5f0: 0x47fb, 0x5f1: 0x4321, 0x5f2: 0x3694, 0x5f3: 0x4327, 0x5f4: 0x4825, 0x5f5: 0x432d,\n\t0x5f6: 0x36a6, 0x5f7: 0x4333, 0x5f8: 0x36c4, 0x5f9: 0x4339, 0x5fa: 0x36dc, 0x5fb: 0x433f,\n\t0x5fc: 0x4873, 0x5fd: 0x4345,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3da3, 0x601: 0x3dab, 0x602: 0x4187, 0x603: 0x41a5, 0x604: 0x4191, 0x605: 0x41af,\n\t0x606: 0x419b, 0x607: 0x41b9, 0x608: 0x3cdb, 0x609: 0x3ce3, 0x60a: 0x40d3, 0x60b: 0x40f1,\n\t0x60c: 0x40dd, 0x60d: 0x40fb, 0x60e: 0x40e7, 0x60f: 0x4105, 0x610: 0x3deb, 0x611: 0x3df3,\n\t0x612: 0x41c3, 0x613: 0x41e1, 0x614: 0x41cd, 0x615: 0x41eb, 0x616: 0x41d7, 0x617: 0x41f5,\n\t0x618: 0x3d0b, 0x619: 0x3d13, 0x61a: 0x410f, 0x61b: 0x412d, 0x61c: 0x4119, 0x61d: 0x4137,\n\t0x61e: 0x4123, 0x61f: 0x4141, 0x620: 0x3ec3, 0x621: 0x3ecb, 0x622: 0x41ff, 0x623: 0x421d,\n\t0x624: 0x4209, 0x625: 0x4227, 0x626: 0x4213, 0x627: 0x4231, 0x628: 0x3d83, 0x629: 0x3d8b,\n\t0x62a: 0x414b, 0x62b: 0x4169, 0x62c: 0x4155, 0x62d: 0x4173, 0x62e: 0x415f, 0x62f: 0x417d,\n\t0x630: 0x3688, 0x631: 0x3682, 0x632: 0x3d93, 0x633: 0x368e, 0x634: 0x3d9b,\n\t0x636: 0x4813, 0x637: 0x3db3, 0x638: 0x35f8, 0x639: 0x35f2, 0x63a: 0x35e6, 0x63b: 0x42f1,\n\t0x63c: 0x35fe, 0x63d: 0x8100, 0x63e: 0x01d3, 0x63f: 0xa100,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x8100, 0x641: 0x35aa, 0x642: 0x3ddb, 0x643: 0x36a0, 0x644: 0x3de3,\n\t0x646: 0x483d, 0x647: 0x3dfb, 0x648: 0x3604, 0x649: 0x42f7, 0x64a: 0x3610, 0x64b: 0x42fd,\n\t0x64c: 0x361c, 0x64d: 0x3b92, 0x64e: 0x3b99, 0x64f: 0x3ba0, 0x650: 0x36b8, 0x651: 0x36b2,\n\t0x652: 0x3e03, 0x653: 0x44e7, 0x656: 0x36be, 0x657: 0x3e13,\n\t0x658: 0x3634, 0x659: 0x362e, 0x65a: 0x3622, 0x65b: 0x4303, 0x65d: 0x3ba7,\n\t0x65e: 0x3bae, 0x65f: 0x3bb5, 0x660: 0x36ee, 0x661: 0x36e8, 0x662: 0x3e6b, 0x663: 0x44ef,\n\t0x664: 0x36d0, 0x665: 0x36d6, 0x666: 0x36f4, 0x667: 0x3e7b, 0x668: 0x3664, 0x669: 0x365e,\n\t0x66a: 0x3652, 0x66b: 0x430f, 0x66c: 0x364c, 0x66d: 0x359e, 0x66e: 0x42eb, 0x66f: 0x0081,\n\t0x672: 0x3eb3, 0x673: 0x36fa, 0x674: 0x3ebb,\n\t0x676: 0x488b, 0x677: 0x3ed3, 0x678: 0x3640, 0x679: 0x4309, 0x67a: 0x3670, 0x67b: 0x431b,\n\t0x67c: 0x367c, 0x67d: 0x4259, 0x67e: 0xa100,\n\t// Block 0x1a, offset 0x680\n\t0x681: 0x3c09, 0x683: 0xa000, 0x684: 0x3c10, 0x685: 0xa000,\n\t0x687: 0x3c17, 0x688: 0xa000, 0x689: 0x3c1e,\n\t0x68d: 0xa000,\n\t0x6a0: 0x2f68, 0x6a1: 0xa000, 0x6a2: 0x3c2c,\n\t0x6a4: 0xa000, 0x6a5: 0xa000,\n\t0x6ad: 0x3c25, 0x6ae: 0x2f63, 0x6af: 0x2f6d,\n\t0x6b0: 0x3c33, 0x6b1: 0x3c3a, 0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0x3c41, 0x6b5: 0x3c48,\n\t0x6b6: 0xa000, 0x6b7: 0xa000, 0x6b8: 0x3c4f, 0x6b9: 0x3c56, 0x6ba: 0xa000, 0x6bb: 0xa000,\n\t0x6bc: 0xa000, 0x6bd: 0xa000,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3c5d, 0x6c1: 0x3c64, 0x6c2: 0xa000, 0x6c3: 0xa000, 0x6c4: 0x3c79, 0x6c5: 0x3c80,\n\t0x6c6: 0xa000, 0x6c7: 0xa000, 0x6c8: 0x3c87, 0x6c9: 0x3c8e,\n\t0x6d1: 0xa000,\n\t0x6d2: 0xa000,\n\t0x6e2: 0xa000,\n\t0x6e8: 0xa000, 0x6e9: 0xa000,\n\t0x6eb: 0xa000, 0x6ec: 0x3ca3, 0x6ed: 0x3caa, 0x6ee: 0x3cb1, 0x6ef: 0x3cb8,\n\t0x6f2: 0xa000, 0x6f3: 0xa000, 0x6f4: 0xa000, 0x6f5: 0xa000,\n\t// Block 0x1c, offset 0x700\n\t0x706: 0xa000, 0x70b: 0xa000,\n\t0x70c: 0x3f0b, 0x70d: 0xa000, 0x70e: 0x3f13, 0x70f: 0xa000, 0x710: 0x3f1b, 0x711: 0xa000,\n\t0x712: 0x3f23, 0x713: 0xa000, 0x714: 0x3f2b, 0x715: 0xa000, 0x716: 0x3f33, 0x717: 0xa000,\n\t0x718: 0x3f3b, 0x719: 0xa000, 0x71a: 0x3f43, 0x71b: 0xa000, 0x71c: 0x3f4b, 0x71d: 0xa000,\n\t0x71e: 0x3f53, 0x71f: 0xa000, 0x720: 0x3f5b, 0x721: 0xa000, 0x722: 0x3f63,\n\t0x724: 0xa000, 0x725: 0x3f6b, 0x726: 0xa000, 0x727: 0x3f73, 0x728: 0xa000, 0x729: 0x3f7b,\n\t0x72f: 0xa000,\n\t0x730: 0x3f83, 0x731: 0x3f8b, 0x732: 0xa000, 0x733: 0x3f93, 0x734: 0x3f9b, 0x735: 0xa000,\n\t0x736: 0x3fa3, 0x737: 0x3fab, 0x738: 0xa000, 0x739: 0x3fb3, 0x73a: 0x3fbb, 0x73b: 0xa000,\n\t0x73c: 0x3fc3, 0x73d: 0x3fcb,\n\t// Block 0x1d, offset 0x740\n\t0x754: 0x3f03,\n\t0x759: 0x9903, 0x75a: 0x9903, 0x75b: 0x8100, 0x75c: 0x8100, 0x75d: 0xa000,\n\t0x75e: 0x3fd3,\n\t0x766: 0xa000,\n\t0x76b: 0xa000, 0x76c: 0x3fe3, 0x76d: 0xa000, 0x76e: 0x3feb, 0x76f: 0xa000,\n\t0x770: 0x3ff3, 0x771: 0xa000, 0x772: 0x3ffb, 0x773: 0xa000, 0x774: 0x4003, 0x775: 0xa000,\n\t0x776: 0x400b, 0x777: 0xa000, 0x778: 0x4013, 0x779: 0xa000, 0x77a: 0x401b, 0x77b: 0xa000,\n\t0x77c: 0x4023, 0x77d: 0xa000, 0x77e: 0x402b, 0x77f: 0xa000,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x4033, 0x781: 0xa000, 0x782: 0x403b, 0x784: 0xa000, 0x785: 0x4043,\n\t0x786: 0xa000, 0x787: 0x404b, 0x788: 0xa000, 0x789: 0x4053,\n\t0x78f: 0xa000, 0x790: 0x405b, 0x791: 0x4063,\n\t0x792: 0xa000, 0x793: 0x406b, 0x794: 0x4073, 0x795: 0xa000, 0x796: 0x407b, 0x797: 0x4083,\n\t0x798: 0xa000, 0x799: 0x408b, 0x79a: 0x4093, 0x79b: 0xa000, 0x79c: 0x409b, 0x79d: 0x40a3,\n\t0x7af: 0xa000,\n\t0x7b0: 0xa000, 0x7b1: 0xa000, 0x7b2: 0xa000, 0x7b4: 0x3fdb,\n\t0x7b7: 0x40ab, 0x7b8: 0x40b3, 0x7b9: 0x40bb, 0x7ba: 0x40c3,\n\t0x7bd: 0xa000, 0x7be: 0x40cb,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x1377, 0x7c1: 0x0cfb, 0x7c2: 0x13d3, 0x7c3: 0x139f, 0x7c4: 0x0e57, 0x7c5: 0x06eb,\n\t0x7c6: 0x08df, 0x7c7: 0x162b, 0x7c8: 0x162b, 0x7c9: 0x0a0b, 0x7ca: 0x145f, 0x7cb: 0x0943,\n\t0x7cc: 0x0a07, 0x7cd: 0x0bef, 0x7ce: 0x0fcf, 0x7cf: 0x115f, 0x7d0: 0x1297, 0x7d1: 0x12d3,\n\t0x7d2: 0x1307, 0x7d3: 0x141b, 0x7d4: 0x0d73, 0x7d5: 0x0dff, 0x7d6: 0x0eab, 0x7d7: 0x0f43,\n\t0x7d8: 0x125f, 0x7d9: 0x1447, 0x7da: 0x1573, 0x7db: 0x070f, 0x7dc: 0x08b3, 0x7dd: 0x0d87,\n\t0x7de: 0x0ecf, 0x7df: 0x1293, 0x7e0: 0x15c3, 0x7e1: 0x0ab3, 0x7e2: 0x0e77, 0x7e3: 0x1283,\n\t0x7e4: 0x1317, 0x7e5: 0x0c23, 0x7e6: 0x11bb, 0x7e7: 0x12df, 0x7e8: 0x0b1f, 0x7e9: 0x0d0f,\n\t0x7ea: 0x0e17, 0x7eb: 0x0f1b, 0x7ec: 0x1427, 0x7ed: 0x074f, 0x7ee: 0x07e7, 0x7ef: 0x0853,\n\t0x7f0: 0x0c8b, 0x7f1: 0x0d7f, 0x7f2: 0x0ecb, 0x7f3: 0x0fef, 0x7f4: 0x1177, 0x7f5: 0x128b,\n\t0x7f6: 0x12a3, 0x7f7: 0x13c7, 0x7f8: 0x14ef, 0x7f9: 0x15a3, 0x7fa: 0x15bf, 0x7fb: 0x102b,\n\t0x7fc: 0x106b, 0x7fd: 0x1123, 0x7fe: 0x1243, 0x7ff: 0x147b,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x15cb, 0x801: 0x134b, 0x802: 0x09c7, 0x803: 0x0b3b, 0x804: 0x10db, 0x805: 0x119b,\n\t0x806: 0x0eff, 0x807: 0x1033, 0x808: 0x1397, 0x809: 0x14e7, 0x80a: 0x09c3, 0x80b: 0x0a8f,\n\t0x80c: 0x0d77, 0x80d: 0x0e2b, 0x80e: 0x0e5f, 0x80f: 0x1113, 0x810: 0x113b, 0x811: 0x14a7,\n\t0x812: 0x084f, 0x813: 0x11a7, 0x814: 0x07f3, 0x815: 0x07ef, 0x816: 0x1097, 0x817: 0x1127,\n\t0x818: 0x125b, 0x819: 0x14af, 0x81a: 0x1367, 0x81b: 0x0c27, 0x81c: 0x0d73, 0x81d: 0x1357,\n\t0x81e: 0x06f7, 0x81f: 0x0a63, 0x820: 0x0b93, 0x821: 0x0f2f, 0x822: 0x0faf, 0x823: 0x0873,\n\t0x824: 0x103b, 0x825: 0x075f, 0x826: 0x0b77, 0x827: 0x06d7, 0x828: 0x0deb, 0x829: 0x0ca3,\n\t0x82a: 0x110f, 0x82b: 0x08c7, 0x82c: 0x09b3, 0x82d: 0x0ffb, 0x82e: 0x1263, 0x82f: 0x133b,\n\t0x830: 0x0db7, 0x831: 0x13f7, 0x832: 0x0de3, 0x833: 0x0c37, 0x834: 0x121b, 0x835: 0x0c57,\n\t0x836: 0x0fab, 0x837: 0x072b, 0x838: 0x07a7, 0x839: 0x07eb, 0x83a: 0x0d53, 0x83b: 0x10fb,\n\t0x83c: 0x11f3, 0x83d: 0x1347, 0x83e: 0x145b, 0x83f: 0x085b,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x090f, 0x841: 0x0a17, 0x842: 0x0b2f, 0x843: 0x0cbf, 0x844: 0x0e7b, 0x845: 0x103f,\n\t0x846: 0x1497, 0x847: 0x157b, 0x848: 0x15cf, 0x849: 0x15e7, 0x84a: 0x0837, 0x84b: 0x0cf3,\n\t0x84c: 0x0da3, 0x84d: 0x13eb, 0x84e: 0x0afb, 0x84f: 0x0bd7, 0x850: 0x0bf3, 0x851: 0x0c83,\n\t0x852: 0x0e6b, 0x853: 0x0eb7, 0x854: 0x0f67, 0x855: 0x108b, 0x856: 0x112f, 0x857: 0x1193,\n\t0x858: 0x13db, 0x859: 0x126b, 0x85a: 0x1403, 0x85b: 0x147f, 0x85c: 0x080f, 0x85d: 0x083b,\n\t0x85e: 0x0923, 0x85f: 0x0ea7, 0x860: 0x12f3, 0x861: 0x133b, 0x862: 0x0b1b, 0x863: 0x0b8b,\n\t0x864: 0x0c4f, 0x865: 0x0daf, 0x866: 0x10d7, 0x867: 0x0f23, 0x868: 0x073b, 0x869: 0x097f,\n\t0x86a: 0x0a63, 0x86b: 0x0ac7, 0x86c: 0x0b97, 0x86d: 0x0f3f, 0x86e: 0x0f5b, 0x86f: 0x116b,\n\t0x870: 0x118b, 0x871: 0x1463, 0x872: 0x14e3, 0x873: 0x14f3, 0x874: 0x152f, 0x875: 0x0753,\n\t0x876: 0x107f, 0x877: 0x144f, 0x878: 0x14cb, 0x879: 0x0baf, 0x87a: 0x0717, 0x87b: 0x0777,\n\t0x87c: 0x0a67, 0x87d: 0x0a87, 0x87e: 0x0caf, 0x87f: 0x0d73,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0ec3, 0x881: 0x0fcb, 0x882: 0x1277, 0x883: 0x1417, 0x884: 0x1623, 0x885: 0x0ce3,\n\t0x886: 0x14a3, 0x887: 0x0833, 0x888: 0x0d2f, 0x889: 0x0d3b, 0x88a: 0x0e0f, 0x88b: 0x0e47,\n\t0x88c: 0x0f4b, 0x88d: 0x0fa7, 0x88e: 0x1027, 0x88f: 0x110b, 0x890: 0x153b, 0x891: 0x07af,\n\t0x892: 0x0c03, 0x893: 0x14b3, 0x894: 0x0767, 0x895: 0x0aab, 0x896: 0x0e2f, 0x897: 0x13df,\n\t0x898: 0x0b67, 0x899: 0x0bb7, 0x89a: 0x0d43, 0x89b: 0x0f2f, 0x89c: 0x14bb, 0x89d: 0x0817,\n\t0x89e: 0x08ff, 0x89f: 0x0a97, 0x8a0: 0x0cd3, 0x8a1: 0x0d1f, 0x8a2: 0x0d5f, 0x8a3: 0x0df3,\n\t0x8a4: 0x0f47, 0x8a5: 0x0fbb, 0x8a6: 0x1157, 0x8a7: 0x12f7, 0x8a8: 0x1303, 0x8a9: 0x1457,\n\t0x8aa: 0x14d7, 0x8ab: 0x0883, 0x8ac: 0x0e4b, 0x8ad: 0x0903, 0x8ae: 0x0ec7, 0x8af: 0x0f6b,\n\t0x8b0: 0x1287, 0x8b1: 0x14bf, 0x8b2: 0x15ab, 0x8b3: 0x15d3, 0x8b4: 0x0d37, 0x8b5: 0x0e27,\n\t0x8b6: 0x11c3, 0x8b7: 0x10b7, 0x8b8: 0x10c3, 0x8b9: 0x10e7, 0x8ba: 0x0f17, 0x8bb: 0x0e9f,\n\t0x8bc: 0x1363, 0x8bd: 0x0733, 0x8be: 0x122b, 0x8bf: 0x081b,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x080b, 0x8c1: 0x0b0b, 0x8c2: 0x0c2b, 0x8c3: 0x10f3, 0x8c4: 0x0a53, 0x8c5: 0x0e03,\n\t0x8c6: 0x0cef, 0x8c7: 0x13e7, 0x8c8: 0x12e7, 0x8c9: 0x14ab, 0x8ca: 0x1323, 0x8cb: 0x0b27,\n\t0x8cc: 0x0787, 0x8cd: 0x095b, 0x8d0: 0x09af,\n\t0x8d2: 0x0cdf, 0x8d5: 0x07f7, 0x8d6: 0x0f1f, 0x8d7: 0x0fe3,\n\t0x8d8: 0x1047, 0x8d9: 0x1063, 0x8da: 0x1067, 0x8db: 0x107b, 0x8dc: 0x14fb, 0x8dd: 0x10eb,\n\t0x8de: 0x116f, 0x8e0: 0x128f, 0x8e2: 0x1353,\n\t0x8e5: 0x1407, 0x8e6: 0x1433,\n\t0x8ea: 0x154f, 0x8eb: 0x1553, 0x8ec: 0x1557, 0x8ed: 0x15bb, 0x8ee: 0x142b, 0x8ef: 0x14c7,\n\t0x8f0: 0x0757, 0x8f1: 0x077b, 0x8f2: 0x078f, 0x8f3: 0x084b, 0x8f4: 0x0857, 0x8f5: 0x0897,\n\t0x8f6: 0x094b, 0x8f7: 0x0967, 0x8f8: 0x096f, 0x8f9: 0x09ab, 0x8fa: 0x09b7, 0x8fb: 0x0a93,\n\t0x8fc: 0x0a9b, 0x8fd: 0x0ba3, 0x8fe: 0x0bcb, 0x8ff: 0x0bd3,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0beb, 0x901: 0x0c97, 0x902: 0x0cc7, 0x903: 0x0ce7, 0x904: 0x0d57, 0x905: 0x0e1b,\n\t0x906: 0x0e37, 0x907: 0x0e67, 0x908: 0x0ebb, 0x909: 0x0edb, 0x90a: 0x0f4f, 0x90b: 0x102f,\n\t0x90c: 0x104b, 0x90d: 0x1053, 0x90e: 0x104f, 0x90f: 0x1057, 0x910: 0x105b, 0x911: 0x105f,\n\t0x912: 0x1073, 0x913: 0x1077, 0x914: 0x109b, 0x915: 0x10af, 0x916: 0x10cb, 0x917: 0x112f,\n\t0x918: 0x1137, 0x919: 0x113f, 0x91a: 0x1153, 0x91b: 0x117b, 0x91c: 0x11cb, 0x91d: 0x11ff,\n\t0x91e: 0x11ff, 0x91f: 0x1267, 0x920: 0x130f, 0x921: 0x1327, 0x922: 0x135b, 0x923: 0x135f,\n\t0x924: 0x13a3, 0x925: 0x13a7, 0x926: 0x13ff, 0x927: 0x1407, 0x928: 0x14db, 0x929: 0x151f,\n\t0x92a: 0x1537, 0x92b: 0x0b9b, 0x92c: 0x171e, 0x92d: 0x11e3,\n\t0x930: 0x06df, 0x931: 0x07e3, 0x932: 0x07a3, 0x933: 0x074b, 0x934: 0x078b, 0x935: 0x07b7,\n\t0x936: 0x0847, 0x937: 0x0863, 0x938: 0x094b, 0x939: 0x0937, 0x93a: 0x0947, 0x93b: 0x0963,\n\t0x93c: 0x09af, 0x93d: 0x09bf, 0x93e: 0x0a03, 0x93f: 0x0a0f,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0a2b, 0x941: 0x0a3b, 0x942: 0x0b23, 0x943: 0x0b2b, 0x944: 0x0b5b, 0x945: 0x0b7b,\n\t0x946: 0x0bab, 0x947: 0x0bc3, 0x948: 0x0bb3, 0x949: 0x0bd3, 0x94a: 0x0bc7, 0x94b: 0x0beb,\n\t0x94c: 0x0c07, 0x94d: 0x0c5f, 0x94e: 0x0c6b, 0x94f: 0x0c73, 0x950: 0x0c9b, 0x951: 0x0cdf,\n\t0x952: 0x0d0f, 0x953: 0x0d13, 0x954: 0x0d27, 0x955: 0x0da7, 0x956: 0x0db7, 0x957: 0x0e0f,\n\t0x958: 0x0e5b, 0x959: 0x0e53, 0x95a: 0x0e67, 0x95b: 0x0e83, 0x95c: 0x0ebb, 0x95d: 0x1013,\n\t0x95e: 0x0edf, 0x95f: 0x0f13, 0x960: 0x0f1f, 0x961: 0x0f5f, 0x962: 0x0f7b, 0x963: 0x0f9f,\n\t0x964: 0x0fc3, 0x965: 0x0fc7, 0x966: 0x0fe3, 0x967: 0x0fe7, 0x968: 0x0ff7, 0x969: 0x100b,\n\t0x96a: 0x1007, 0x96b: 0x1037, 0x96c: 0x10b3, 0x96d: 0x10cb, 0x96e: 0x10e3, 0x96f: 0x111b,\n\t0x970: 0x112f, 0x971: 0x114b, 0x972: 0x117b, 0x973: 0x122f, 0x974: 0x1257, 0x975: 0x12cb,\n\t0x976: 0x1313, 0x977: 0x131f, 0x978: 0x1327, 0x979: 0x133f, 0x97a: 0x1353, 0x97b: 0x1343,\n\t0x97c: 0x135b, 0x97d: 0x1357, 0x97e: 0x134f, 0x97f: 0x135f,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x136b, 0x981: 0x13a7, 0x982: 0x13e3, 0x983: 0x1413, 0x984: 0x144b, 0x985: 0x146b,\n\t0x986: 0x14b7, 0x987: 0x14db, 0x988: 0x14fb, 0x989: 0x150f, 0x98a: 0x151f, 0x98b: 0x152b,\n\t0x98c: 0x1537, 0x98d: 0x158b, 0x98e: 0x162b, 0x98f: 0x16b5, 0x990: 0x16b0, 0x991: 0x16e2,\n\t0x992: 0x0607, 0x993: 0x062f, 0x994: 0x0633, 0x995: 0x1764, 0x996: 0x1791, 0x997: 0x1809,\n\t0x998: 0x1617, 0x999: 0x1627,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x06fb, 0x9c1: 0x06f3, 0x9c2: 0x0703, 0x9c3: 0x1647, 0x9c4: 0x0747, 0x9c5: 0x0757,\n\t0x9c6: 0x075b, 0x9c7: 0x0763, 0x9c8: 0x076b, 0x9c9: 0x076f, 0x9ca: 0x077b, 0x9cb: 0x0773,\n\t0x9cc: 0x05b3, 0x9cd: 0x165b, 0x9ce: 0x078f, 0x9cf: 0x0793, 0x9d0: 0x0797, 0x9d1: 0x07b3,\n\t0x9d2: 0x164c, 0x9d3: 0x05b7, 0x9d4: 0x079f, 0x9d5: 0x07bf, 0x9d6: 0x1656, 0x9d7: 0x07cf,\n\t0x9d8: 0x07d7, 0x9d9: 0x0737, 0x9da: 0x07df, 0x9db: 0x07e3, 0x9dc: 0x1831, 0x9dd: 0x07ff,\n\t0x9de: 0x0807, 0x9df: 0x05bf, 0x9e0: 0x081f, 0x9e1: 0x0823, 0x9e2: 0x082b, 0x9e3: 0x082f,\n\t0x9e4: 0x05c3, 0x9e5: 0x0847, 0x9e6: 0x084b, 0x9e7: 0x0857, 0x9e8: 0x0863, 0x9e9: 0x0867,\n\t0x9ea: 0x086b, 0x9eb: 0x0873, 0x9ec: 0x0893, 0x9ed: 0x0897, 0x9ee: 0x089f, 0x9ef: 0x08af,\n\t0x9f0: 0x08b7, 0x9f1: 0x08bb, 0x9f2: 0x08bb, 0x9f3: 0x08bb, 0x9f4: 0x166a, 0x9f5: 0x0e93,\n\t0x9f6: 0x08cf, 0x9f7: 0x08d7, 0x9f8: 0x166f, 0x9f9: 0x08e3, 0x9fa: 0x08eb, 0x9fb: 0x08f3,\n\t0x9fc: 0x091b, 0x9fd: 0x0907, 0x9fe: 0x0913, 0x9ff: 0x0917,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x091f, 0xa01: 0x0927, 0xa02: 0x092b, 0xa03: 0x0933, 0xa04: 0x093b, 0xa05: 0x093f,\n\t0xa06: 0x093f, 0xa07: 0x0947, 0xa08: 0x094f, 0xa09: 0x0953, 0xa0a: 0x095f, 0xa0b: 0x0983,\n\t0xa0c: 0x0967, 0xa0d: 0x0987, 0xa0e: 0x096b, 0xa0f: 0x0973, 0xa10: 0x080b, 0xa11: 0x09cf,\n\t0xa12: 0x0997, 0xa13: 0x099b, 0xa14: 0x099f, 0xa15: 0x0993, 0xa16: 0x09a7, 0xa17: 0x09a3,\n\t0xa18: 0x09bb, 0xa19: 0x1674, 0xa1a: 0x09d7, 0xa1b: 0x09db, 0xa1c: 0x09e3, 0xa1d: 0x09ef,\n\t0xa1e: 0x09f7, 0xa1f: 0x0a13, 0xa20: 0x1679, 0xa21: 0x167e, 0xa22: 0x0a1f, 0xa23: 0x0a23,\n\t0xa24: 0x0a27, 0xa25: 0x0a1b, 0xa26: 0x0a2f, 0xa27: 0x05c7, 0xa28: 0x05cb, 0xa29: 0x0a37,\n\t0xa2a: 0x0a3f, 0xa2b: 0x0a3f, 0xa2c: 0x1683, 0xa2d: 0x0a5b, 0xa2e: 0x0a5f, 0xa2f: 0x0a63,\n\t0xa30: 0x0a6b, 0xa31: 0x1688, 0xa32: 0x0a73, 0xa33: 0x0a77, 0xa34: 0x0b4f, 0xa35: 0x0a7f,\n\t0xa36: 0x05cf, 0xa37: 0x0a8b, 0xa38: 0x0a9b, 0xa39: 0x0aa7, 0xa3a: 0x0aa3, 0xa3b: 0x1692,\n\t0xa3c: 0x0aaf, 0xa3d: 0x1697, 0xa3e: 0x0abb, 0xa3f: 0x0ab7,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0abf, 0xa41: 0x0acf, 0xa42: 0x0ad3, 0xa43: 0x05d3, 0xa44: 0x0ae3, 0xa45: 0x0aeb,\n\t0xa46: 0x0aef, 0xa47: 0x0af3, 0xa48: 0x05d7, 0xa49: 0x169c, 0xa4a: 0x05db, 0xa4b: 0x0b0f,\n\t0xa4c: 0x0b13, 0xa4d: 0x0b17, 0xa4e: 0x0b1f, 0xa4f: 0x1863, 0xa50: 0x0b37, 0xa51: 0x16a6,\n\t0xa52: 0x16a6, 0xa53: 0x11d7, 0xa54: 0x0b47, 0xa55: 0x0b47, 0xa56: 0x05df, 0xa57: 0x16c9,\n\t0xa58: 0x179b, 0xa59: 0x0b57, 0xa5a: 0x0b5f, 0xa5b: 0x05e3, 0xa5c: 0x0b73, 0xa5d: 0x0b83,\n\t0xa5e: 0x0b87, 0xa5f: 0x0b8f, 0xa60: 0x0b9f, 0xa61: 0x05eb, 0xa62: 0x05e7, 0xa63: 0x0ba3,\n\t0xa64: 0x16ab, 0xa65: 0x0ba7, 0xa66: 0x0bbb, 0xa67: 0x0bbf, 0xa68: 0x0bc3, 0xa69: 0x0bbf,\n\t0xa6a: 0x0bcf, 0xa6b: 0x0bd3, 0xa6c: 0x0be3, 0xa6d: 0x0bdb, 0xa6e: 0x0bdf, 0xa6f: 0x0be7,\n\t0xa70: 0x0beb, 0xa71: 0x0bef, 0xa72: 0x0bfb, 0xa73: 0x0bff, 0xa74: 0x0c17, 0xa75: 0x0c1f,\n\t0xa76: 0x0c2f, 0xa77: 0x0c43, 0xa78: 0x16ba, 0xa79: 0x0c3f, 0xa7a: 0x0c33, 0xa7b: 0x0c4b,\n\t0xa7c: 0x0c53, 0xa7d: 0x0c67, 0xa7e: 0x16bf, 0xa7f: 0x0c6f,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x0c63, 0xa81: 0x0c5b, 0xa82: 0x05ef, 0xa83: 0x0c77, 0xa84: 0x0c7f, 0xa85: 0x0c87,\n\t0xa86: 0x0c7b, 0xa87: 0x05f3, 0xa88: 0x0c97, 0xa89: 0x0c9f, 0xa8a: 0x16c4, 0xa8b: 0x0ccb,\n\t0xa8c: 0x0cff, 0xa8d: 0x0cdb, 0xa8e: 0x05ff, 0xa8f: 0x0ce7, 0xa90: 0x05fb, 0xa91: 0x05f7,\n\t0xa92: 0x07c3, 0xa93: 0x07c7, 0xa94: 0x0d03, 0xa95: 0x0ceb, 0xa96: 0x11ab, 0xa97: 0x0663,\n\t0xa98: 0x0d0f, 0xa99: 0x0d13, 0xa9a: 0x0d17, 0xa9b: 0x0d2b, 0xa9c: 0x0d23, 0xa9d: 0x16dd,\n\t0xa9e: 0x0603, 0xa9f: 0x0d3f, 0xaa0: 0x0d33, 0xaa1: 0x0d4f, 0xaa2: 0x0d57, 0xaa3: 0x16e7,\n\t0xaa4: 0x0d5b, 0xaa5: 0x0d47, 0xaa6: 0x0d63, 0xaa7: 0x0607, 0xaa8: 0x0d67, 0xaa9: 0x0d6b,\n\t0xaaa: 0x0d6f, 0xaab: 0x0d7b, 0xaac: 0x16ec, 0xaad: 0x0d83, 0xaae: 0x060b, 0xaaf: 0x0d8f,\n\t0xab0: 0x16f1, 0xab1: 0x0d93, 0xab2: 0x060f, 0xab3: 0x0d9f, 0xab4: 0x0dab, 0xab5: 0x0db7,\n\t0xab6: 0x0dbb, 0xab7: 0x16f6, 0xab8: 0x168d, 0xab9: 0x16fb, 0xaba: 0x0ddb, 0xabb: 0x1700,\n\t0xabc: 0x0de7, 0xabd: 0x0def, 0xabe: 0x0ddf, 0xabf: 0x0dfb,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x0e0b, 0xac1: 0x0e1b, 0xac2: 0x0e0f, 0xac3: 0x0e13, 0xac4: 0x0e1f, 0xac5: 0x0e23,\n\t0xac6: 0x1705, 0xac7: 0x0e07, 0xac8: 0x0e3b, 0xac9: 0x0e3f, 0xaca: 0x0613, 0xacb: 0x0e53,\n\t0xacc: 0x0e4f, 0xacd: 0x170a, 0xace: 0x0e33, 0xacf: 0x0e6f, 0xad0: 0x170f, 0xad1: 0x1714,\n\t0xad2: 0x0e73, 0xad3: 0x0e87, 0xad4: 0x0e83, 0xad5: 0x0e7f, 0xad6: 0x0617, 0xad7: 0x0e8b,\n\t0xad8: 0x0e9b, 0xad9: 0x0e97, 0xada: 0x0ea3, 0xadb: 0x1651, 0xadc: 0x0eb3, 0xadd: 0x1719,\n\t0xade: 0x0ebf, 0xadf: 0x1723, 0xae0: 0x0ed3, 0xae1: 0x0edf, 0xae2: 0x0ef3, 0xae3: 0x1728,\n\t0xae4: 0x0f07, 0xae5: 0x0f0b, 0xae6: 0x172d, 0xae7: 0x1732, 0xae8: 0x0f27, 0xae9: 0x0f37,\n\t0xaea: 0x061b, 0xaeb: 0x0f3b, 0xaec: 0x061f, 0xaed: 0x061f, 0xaee: 0x0f53, 0xaef: 0x0f57,\n\t0xaf0: 0x0f5f, 0xaf1: 0x0f63, 0xaf2: 0x0f6f, 0xaf3: 0x0623, 0xaf4: 0x0f87, 0xaf5: 0x1737,\n\t0xaf6: 0x0fa3, 0xaf7: 0x173c, 0xaf8: 0x0faf, 0xaf9: 0x16a1, 0xafa: 0x0fbf, 0xafb: 0x1741,\n\t0xafc: 0x1746, 0xafd: 0x174b, 0xafe: 0x0627, 0xaff: 0x062b,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x0ff7, 0xb01: 0x1755, 0xb02: 0x1750, 0xb03: 0x175a, 0xb04: 0x175f, 0xb05: 0x0fff,\n\t0xb06: 0x1003, 0xb07: 0x1003, 0xb08: 0x100b, 0xb09: 0x0633, 0xb0a: 0x100f, 0xb0b: 0x0637,\n\t0xb0c: 0x063b, 0xb0d: 0x1769, 0xb0e: 0x1023, 0xb0f: 0x102b, 0xb10: 0x1037, 0xb11: 0x063f,\n\t0xb12: 0x176e, 0xb13: 0x105b, 0xb14: 0x1773, 0xb15: 0x1778, 0xb16: 0x107b, 0xb17: 0x1093,\n\t0xb18: 0x0643, 0xb19: 0x109b, 0xb1a: 0x109f, 0xb1b: 0x10a3, 0xb1c: 0x177d, 0xb1d: 0x1782,\n\t0xb1e: 0x1782, 0xb1f: 0x10bb, 0xb20: 0x0647, 0xb21: 0x1787, 0xb22: 0x10cf, 0xb23: 0x10d3,\n\t0xb24: 0x064b, 0xb25: 0x178c, 0xb26: 0x10ef, 0xb27: 0x064f, 0xb28: 0x10ff, 0xb29: 0x10f7,\n\t0xb2a: 0x1107, 0xb2b: 0x1796, 0xb2c: 0x111f, 0xb2d: 0x0653, 0xb2e: 0x112b, 0xb2f: 0x1133,\n\t0xb30: 0x1143, 0xb31: 0x0657, 0xb32: 0x17a0, 0xb33: 0x17a5, 0xb34: 0x065b, 0xb35: 0x17aa,\n\t0xb36: 0x115b, 0xb37: 0x17af, 0xb38: 0x1167, 0xb39: 0x1173, 0xb3a: 0x117b, 0xb3b: 0x17b4,\n\t0xb3c: 0x17b9, 0xb3d: 0x118f, 0xb3e: 0x17be, 0xb3f: 0x1197,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x16ce, 0xb41: 0x065f, 0xb42: 0x11af, 0xb43: 0x11b3, 0xb44: 0x0667, 0xb45: 0x11b7,\n\t0xb46: 0x0a33, 0xb47: 0x17c3, 0xb48: 0x17c8, 0xb49: 0x16d3, 0xb4a: 0x16d8, 0xb4b: 0x11d7,\n\t0xb4c: 0x11db, 0xb4d: 0x13f3, 0xb4e: 0x066b, 0xb4f: 0x1207, 0xb50: 0x1203, 0xb51: 0x120b,\n\t0xb52: 0x083f, 0xb53: 0x120f, 0xb54: 0x1213, 0xb55: 0x1217, 0xb56: 0x121f, 0xb57: 0x17cd,\n\t0xb58: 0x121b, 0xb59: 0x1223, 0xb5a: 0x1237, 0xb5b: 0x123b, 0xb5c: 0x1227, 0xb5d: 0x123f,\n\t0xb5e: 0x1253, 0xb5f: 0x1267, 0xb60: 0x1233, 0xb61: 0x1247, 0xb62: 0x124b, 0xb63: 0x124f,\n\t0xb64: 0x17d2, 0xb65: 0x17dc, 0xb66: 0x17d7, 0xb67: 0x066f, 0xb68: 0x126f, 0xb69: 0x1273,\n\t0xb6a: 0x127b, 0xb6b: 0x17f0, 0xb6c: 0x127f, 0xb6d: 0x17e1, 0xb6e: 0x0673, 0xb6f: 0x0677,\n\t0xb70: 0x17e6, 0xb71: 0x17eb, 0xb72: 0x067b, 0xb73: 0x129f, 0xb74: 0x12a3, 0xb75: 0x12a7,\n\t0xb76: 0x12ab, 0xb77: 0x12b7, 0xb78: 0x12b3, 0xb79: 0x12bf, 0xb7a: 0x12bb, 0xb7b: 0x12cb,\n\t0xb7c: 0x12c3, 0xb7d: 0x12c7, 0xb7e: 0x12cf, 0xb7f: 0x067f,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x12d7, 0xb81: 0x12db, 0xb82: 0x0683, 0xb83: 0x12eb, 0xb84: 0x12ef, 0xb85: 0x17f5,\n\t0xb86: 0x12fb, 0xb87: 0x12ff, 0xb88: 0x0687, 0xb89: 0x130b, 0xb8a: 0x05bb, 0xb8b: 0x17fa,\n\t0xb8c: 0x17ff, 0xb8d: 0x068b, 0xb8e: 0x068f, 0xb8f: 0x1337, 0xb90: 0x134f, 0xb91: 0x136b,\n\t0xb92: 0x137b, 0xb93: 0x1804, 0xb94: 0x138f, 0xb95: 0x1393, 0xb96: 0x13ab, 0xb97: 0x13b7,\n\t0xb98: 0x180e, 0xb99: 0x1660, 0xb9a: 0x13c3, 0xb9b: 0x13bf, 0xb9c: 0x13cb, 0xb9d: 0x1665,\n\t0xb9e: 0x13d7, 0xb9f: 0x13e3, 0xba0: 0x1813, 0xba1: 0x1818, 0xba2: 0x1423, 0xba3: 0x142f,\n\t0xba4: 0x1437, 0xba5: 0x181d, 0xba6: 0x143b, 0xba7: 0x1467, 0xba8: 0x1473, 0xba9: 0x1477,\n\t0xbaa: 0x146f, 0xbab: 0x1483, 0xbac: 0x1487, 0xbad: 0x1822, 0xbae: 0x1493, 0xbaf: 0x0693,\n\t0xbb0: 0x149b, 0xbb1: 0x1827, 0xbb2: 0x0697, 0xbb3: 0x14d3, 0xbb4: 0x0ac3, 0xbb5: 0x14eb,\n\t0xbb6: 0x182c, 0xbb7: 0x1836, 0xbb8: 0x069b, 0xbb9: 0x069f, 0xbba: 0x1513, 0xbbb: 0x183b,\n\t0xbbc: 0x06a3, 0xbbd: 0x1840, 0xbbe: 0x152b, 0xbbf: 0x152b,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x1533, 0xbc1: 0x1845, 0xbc2: 0x154b, 0xbc3: 0x06a7, 0xbc4: 0x155b, 0xbc5: 0x1567,\n\t0xbc6: 0x156f, 0xbc7: 0x1577, 0xbc8: 0x06ab, 0xbc9: 0x184a, 0xbca: 0x158b, 0xbcb: 0x15a7,\n\t0xbcc: 0x15b3, 0xbcd: 0x06af, 0xbce: 0x06b3, 0xbcf: 0x15b7, 0xbd0: 0x184f, 0xbd1: 0x06b7,\n\t0xbd2: 0x1854, 0xbd3: 0x1859, 0xbd4: 0x185e, 0xbd5: 0x15db, 0xbd6: 0x06bb, 0xbd7: 0x15ef,\n\t0xbd8: 0x15f7, 0xbd9: 0x15fb, 0xbda: 0x1603, 0xbdb: 0x160b, 0xbdc: 0x1613, 0xbdd: 0x1868,\n}\n\n// nfcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x2e, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2f, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x30, 0xcb: 0x31, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x32,\n\t0xd0: 0x09, 0xd1: 0x33, 0xd2: 0x34, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x35,\n\t0xd8: 0x36, 0xd9: 0x0c, 0xdb: 0x37, 0xdc: 0x38, 0xdd: 0x39, 0xdf: 0x3a,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x3b, 0x121: 0x3c, 0x123: 0x0d, 0x124: 0x3d, 0x125: 0x3e, 0x126: 0x3f, 0x127: 0x40,\n\t0x128: 0x41, 0x129: 0x42, 0x12a: 0x43, 0x12b: 0x44, 0x12c: 0x3f, 0x12d: 0x45, 0x12e: 0x46, 0x12f: 0x47,\n\t0x131: 0x48, 0x132: 0x49, 0x133: 0x4a, 0x134: 0x4b, 0x135: 0x4c, 0x137: 0x4d,\n\t0x138: 0x4e, 0x139: 0x4f, 0x13a: 0x50, 0x13b: 0x51, 0x13c: 0x52, 0x13d: 0x53, 0x13e: 0x54, 0x13f: 0x55,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x56, 0x142: 0x57, 0x144: 0x58, 0x145: 0x59, 0x146: 0x5a, 0x147: 0x5b,\n\t0x14d: 0x5c,\n\t0x15c: 0x5d, 0x15f: 0x5e,\n\t0x162: 0x5f, 0x164: 0x60,\n\t0x168: 0x61, 0x169: 0x62, 0x16a: 0x63, 0x16c: 0x0e, 0x16d: 0x64, 0x16e: 0x65, 0x16f: 0x66,\n\t0x170: 0x67, 0x173: 0x68, 0x177: 0x0f,\n\t0x178: 0x10, 0x179: 0x11, 0x17a: 0x12, 0x17b: 0x13, 0x17c: 0x14, 0x17d: 0x15, 0x17e: 0x16, 0x17f: 0x17,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x69, 0x183: 0x6a, 0x184: 0x6b, 0x186: 0x6c, 0x187: 0x6d,\n\t0x188: 0x6e, 0x189: 0x18, 0x18a: 0x19, 0x18b: 0x6f, 0x18c: 0x70,\n\t0x1ab: 0x71,\n\t0x1b3: 0x72, 0x1b5: 0x73, 0x1b7: 0x74,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x75, 0x1c1: 0x1a, 0x1c2: 0x1b, 0x1c3: 0x1c, 0x1c4: 0x76, 0x1c5: 0x77,\n\t0x1c9: 0x78, 0x1cc: 0x79, 0x1cd: 0x7a,\n\t// Block 0x8, offset 0x200\n\t0x219: 0x7b, 0x21a: 0x7c, 0x21b: 0x7d,\n\t0x220: 0x7e, 0x223: 0x7f, 0x224: 0x80, 0x225: 0x81, 0x226: 0x82, 0x227: 0x83,\n\t0x22a: 0x84, 0x22b: 0x85, 0x22f: 0x86,\n\t0x230: 0x87, 0x231: 0x88, 0x232: 0x89, 0x233: 0x8a, 0x234: 0x8b, 0x235: 0x8c, 0x236: 0x8d, 0x237: 0x87,\n\t0x238: 0x88, 0x239: 0x89, 0x23a: 0x8a, 0x23b: 0x8b, 0x23c: 0x8c, 0x23d: 0x8d, 0x23e: 0x87, 0x23f: 0x88,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x89, 0x241: 0x8a, 0x242: 0x8b, 0x243: 0x8c, 0x244: 0x8d, 0x245: 0x87, 0x246: 0x88, 0x247: 0x89,\n\t0x248: 0x8a, 0x249: 0x8b, 0x24a: 0x8c, 0x24b: 0x8d, 0x24c: 0x87, 0x24d: 0x88, 0x24e: 0x89, 0x24f: 0x8a,\n\t0x250: 0x8b, 0x251: 0x8c, 0x252: 0x8d, 0x253: 0x87, 0x254: 0x88, 0x255: 0x89, 0x256: 0x8a, 0x257: 0x8b,\n\t0x258: 0x8c, 0x259: 0x8d, 0x25a: 0x87, 0x25b: 0x88, 0x25c: 0x89, 0x25d: 0x8a, 0x25e: 0x8b, 0x25f: 0x8c,\n\t0x260: 0x8d, 0x261: 0x87, 0x262: 0x88, 0x263: 0x89, 0x264: 0x8a, 0x265: 0x8b, 0x266: 0x8c, 0x267: 0x8d,\n\t0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26c: 0x8b, 0x26d: 0x8c, 0x26e: 0x8d, 0x26f: 0x87,\n\t0x270: 0x88, 0x271: 0x89, 0x272: 0x8a, 0x273: 0x8b, 0x274: 0x8c, 0x275: 0x8d, 0x276: 0x87, 0x277: 0x88,\n\t0x278: 0x89, 0x279: 0x8a, 0x27a: 0x8b, 0x27b: 0x8c, 0x27c: 0x8d, 0x27d: 0x87, 0x27e: 0x88, 0x27f: 0x89,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x8a, 0x281: 0x8b, 0x282: 0x8c, 0x283: 0x8d, 0x284: 0x87, 0x285: 0x88, 0x286: 0x89, 0x287: 0x8a,\n\t0x288: 0x8b, 0x289: 0x8c, 0x28a: 0x8d, 0x28b: 0x87, 0x28c: 0x88, 0x28d: 0x89, 0x28e: 0x8a, 0x28f: 0x8b,\n\t0x290: 0x8c, 0x291: 0x8d, 0x292: 0x87, 0x293: 0x88, 0x294: 0x89, 0x295: 0x8a, 0x296: 0x8b, 0x297: 0x8c,\n\t0x298: 0x8d, 0x299: 0x87, 0x29a: 0x88, 0x29b: 0x89, 0x29c: 0x8a, 0x29d: 0x8b, 0x29e: 0x8c, 0x29f: 0x8d,\n\t0x2a0: 0x87, 0x2a1: 0x88, 0x2a2: 0x89, 0x2a3: 0x8a, 0x2a4: 0x8b, 0x2a5: 0x8c, 0x2a6: 0x8d, 0x2a7: 0x87,\n\t0x2a8: 0x88, 0x2a9: 0x89, 0x2aa: 0x8a, 0x2ab: 0x8b, 0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x87, 0x2af: 0x88,\n\t0x2b0: 0x89, 0x2b1: 0x8a, 0x2b2: 0x8b, 0x2b3: 0x8c, 0x2b4: 0x8d, 0x2b5: 0x87, 0x2b6: 0x88, 0x2b7: 0x89,\n\t0x2b8: 0x8a, 0x2b9: 0x8b, 0x2ba: 0x8c, 0x2bb: 0x8d, 0x2bc: 0x87, 0x2bd: 0x88, 0x2be: 0x89, 0x2bf: 0x8a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x8b, 0x2c1: 0x8c, 0x2c2: 0x8d, 0x2c3: 0x87, 0x2c4: 0x88, 0x2c5: 0x89, 0x2c6: 0x8a, 0x2c7: 0x8b,\n\t0x2c8: 0x8c, 0x2c9: 0x8d, 0x2ca: 0x87, 0x2cb: 0x88, 0x2cc: 0x89, 0x2cd: 0x8a, 0x2ce: 0x8b, 0x2cf: 0x8c,\n\t0x2d0: 0x8d, 0x2d1: 0x87, 0x2d2: 0x88, 0x2d3: 0x89, 0x2d4: 0x8a, 0x2d5: 0x8b, 0x2d6: 0x8c, 0x2d7: 0x8d,\n\t0x2d8: 0x87, 0x2d9: 0x88, 0x2da: 0x89, 0x2db: 0x8a, 0x2dc: 0x8b, 0x2dd: 0x8c, 0x2de: 0x8e,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x1d, 0x325: 0x1e, 0x326: 0x1f, 0x327: 0x20,\n\t0x328: 0x21, 0x329: 0x22, 0x32a: 0x23, 0x32b: 0x24, 0x32c: 0x8f, 0x32d: 0x90, 0x32e: 0x91,\n\t0x331: 0x92, 0x332: 0x93, 0x333: 0x94, 0x334: 0x95,\n\t0x338: 0x96, 0x339: 0x97, 0x33a: 0x98, 0x33b: 0x99, 0x33e: 0x9a, 0x33f: 0x9b,\n\t// Block 0xd, offset 0x340\n\t0x347: 0x9c,\n\t0x34b: 0x9d, 0x34d: 0x9e,\n\t0x368: 0x9f, 0x36b: 0xa0,\n\t0x374: 0xa1,\n\t0x37d: 0xa2,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xa3, 0x382: 0xa4, 0x384: 0xa5, 0x385: 0x82, 0x387: 0xa6,\n\t0x388: 0xa7, 0x38b: 0xa8, 0x38c: 0xa9, 0x38d: 0xaa,\n\t0x391: 0xab, 0x392: 0xac, 0x393: 0xad, 0x396: 0xae, 0x397: 0xaf,\n\t0x398: 0x73, 0x39a: 0xb0, 0x39c: 0xb1,\n\t0x3a0: 0xb2, 0x3a7: 0xb3,\n\t0x3a8: 0xb4, 0x3a9: 0xb5, 0x3aa: 0xb6,\n\t0x3b0: 0x73, 0x3b5: 0xb7, 0x3b6: 0xb8,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xb9, 0x3ec: 0xba,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xbb,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xbc, 0x446: 0xbd, 0x447: 0xbe,\n\t0x449: 0xbf,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xc0, 0x484: 0xba,\n\t0x48b: 0xc1,\n\t0x4a3: 0xc2, 0x4a5: 0xc3,\n\t// Block 0x13, offset 0x4c0\n\t0x4c8: 0xc4,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x25, 0x521: 0x26, 0x522: 0x27, 0x523: 0x28, 0x524: 0x29, 0x525: 0x2a, 0x526: 0x2b, 0x527: 0x2c,\n\t0x528: 0x2d,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfcSparseOffset: 151 entries, 302 bytes\nvar nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x63, 0x68, 0x6a, 0x72, 0x79, 0x7c, 0x84, 0x88, 0x8c, 0x8e, 0x90, 0x99, 0x9d, 0xa4, 0xa9, 0xac, 0xb6, 0xb9, 0xc0, 0xc8, 0xcb, 0xcd, 0xd0, 0xd2, 0xd7, 0xe8, 0xf4, 0xf6, 0xfc, 0xfe, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10b, 0x10e, 0x110, 0x113, 0x116, 0x11a, 0x11f, 0x128, 0x12a, 0x12d, 0x12f, 0x13a, 0x13e, 0x14c, 0x14f, 0x155, 0x15b, 0x166, 0x16a, 0x16c, 0x16e, 0x170, 0x172, 0x174, 0x17a, 0x17e, 0x180, 0x182, 0x18a, 0x18e, 0x191, 0x193, 0x195, 0x197, 0x19a, 0x19c, 0x19e, 0x1a0, 0x1a2, 0x1a8, 0x1ab, 0x1ad, 0x1b4, 0x1ba, 0x1c0, 0x1c8, 0x1ce, 0x1d4, 0x1da, 0x1de, 0x1ec, 0x1f5, 0x1f8, 0x1fb, 0x1fd, 0x200, 0x202, 0x206, 0x20b, 0x20d, 0x20f, 0x214, 0x21a, 0x21c, 0x21e, 0x220, 0x226, 0x229, 0x22b, 0x231, 0x234, 0x23c, 0x243, 0x246, 0x249, 0x24b, 0x24e, 0x256, 0x25a, 0x261, 0x264, 0x26a, 0x26c, 0x26f, 0x271, 0x274, 0x276, 0x278, 0x27a, 0x27c, 0x27f, 0x281, 0x283, 0x285, 0x287, 0x294, 0x29e, 0x2a0, 0x2a2, 0x2a8, 0x2aa, 0x2ac, 0x2af}\n\n// nfcSparseValues: 689 entries, 2756 bytes\nvar nfcSparseValues = [689]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0xa100, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8100, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb8, hi: 0xb8},\n\t// Block 0x1, offset 0x5\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46e5, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4717, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t// Block 0x3, offset 0xb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x98, hi: 0x9d},\n\t// Block 0x4, offset 0xd\n\t{value: 0x0006, lo: 0x0a},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x85, hi: 0x85},\n\t{value: 0xa000, lo: 0x89, hi: 0x89},\n\t{value: 0x4843, lo: 0x8a, hi: 0x8a},\n\t{value: 0x4861, lo: 0x8b, hi: 0x8b},\n\t{value: 0x36ca, lo: 0x8c, hi: 0x8c},\n\t{value: 0x36e2, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4879, lo: 0x8e, hi: 0x8e},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3700, lo: 0x93, hi: 0x94},\n\t// Block 0x5, offset 0x18\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37a8, lo: 0x90, hi: 0x90},\n\t{value: 0x37b4, lo: 0x91, hi: 0x91},\n\t{value: 0x37a2, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x381a, lo: 0x97, hi: 0x97},\n\t{value: 0x37e4, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37cc, lo: 0x9d, hi: 0x9d},\n\t{value: 0x37f6, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3820, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3826, lo: 0xb7, hi: 0xb7},\n\t// Block 0x6, offset 0x28\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x83, hi: 0x87},\n\t// Block 0x7, offset 0x2a\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8113, lo: 0x81, hi: 0x82},\n\t{value: 0x8132, lo: 0x84, hi: 0x84},\n\t{value: 0x812d, lo: 0x85, hi: 0x85},\n\t{value: 0x810d, lo: 0x87, hi: 0x87},\n\t// Block 0x8, offset 0x2f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x97},\n\t{value: 0x8119, lo: 0x98, hi: 0x98},\n\t{value: 0x811a, lo: 0x99, hi: 0x99},\n\t{value: 0x811b, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3844, lo: 0xa2, hi: 0xa2},\n\t{value: 0x384a, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3856, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3850, lo: 0xa5, hi: 0xa5},\n\t{value: 0x385c, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x9, offset 0x3a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x386e, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x3862, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3868, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8132, lo: 0x96, hi: 0x9c},\n\t{value: 0x8132, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t// Block 0xa, offset 0x49\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x811f, lo: 0x91, hi: 0x91},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8132, lo: 0xba, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8132, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8132, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb, offset 0x56\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8132, lo: 0x80, hi: 0x80},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x83},\n\t{value: 0x812d, lo: 0x84, hi: 0x85},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x812d, lo: 0x88, hi: 0x89},\n\t{value: 0x8132, lo: 0x8a, hi: 0x8a},\n\t// Block 0xc, offset 0x5e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xab, hi: 0xb1},\n\t{value: 0x812d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb3},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0xd, offset 0x63\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0x96, hi: 0x99},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8132, lo: 0xa9, hi: 0xad},\n\t// Block 0xe, offset 0x68\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x99, hi: 0x9b},\n\t// Block 0xf, offset 0x6a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3edb, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ee3, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3eeb, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9902, lo: 0xbc, hi: 0xbc},\n\t// Block 0x10, offset 0x72\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x91, hi: 0x91},\n\t{value: 0x812d, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x93, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x94},\n\t{value: 0x451f, lo: 0x98, hi: 0x9f},\n\t// Block 0x11, offset 0x79\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x12, offset 0x7c\n\t{value: 0x0008, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2ca1, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x455f, lo: 0x9c, hi: 0x9d},\n\t{value: 0x456f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbe},\n\t// Block 0x13, offset 0x84\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4597, lo: 0xb3, hi: 0xb3},\n\t{value: 0x459f, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x14, offset 0x88\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4577, lo: 0x99, hi: 0x9b},\n\t{value: 0x458f, lo: 0x9e, hi: 0x9e},\n\t// Block 0x15, offset 0x8c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x16, offset 0x8e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t// Block 0x17, offset 0x90\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cb9, lo: 0x88, hi: 0x88},\n\t{value: 0x2cb1, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cc1, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45a7, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45af, lo: 0x9d, hi: 0x9d},\n\t// Block 0x18, offset 0x99\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cc9, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x19, offset 0x9d\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cd1, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2ce1, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cd9, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1a, offset 0xa4\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ef3, lo: 0x88, hi: 0x88},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8120, lo: 0x95, hi: 0x96},\n\t// Block 0x1b, offset 0xa9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1c, offset 0xac\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2ce9, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cf1, lo: 0x87, hi: 0x87},\n\t{value: 0x2cf9, lo: 0x88, hi: 0x88},\n\t{value: 0x2f53, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2ddb, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1d, offset 0xb6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1e, offset 0xb9\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2d01, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d11, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d09, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1f, offset 0xc0\n\t{value: 0x6be7, lo: 0x07},\n\t{value: 0x9904, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3efb, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f5b, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2de6, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d19, lo: 0x9e, hi: 0x9f},\n\t// Block 0x20, offset 0xc8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8122, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x21, offset 0xcb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8123, lo: 0x88, hi: 0x8b},\n\t// Block 0x22, offset 0xcd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8124, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x23, offset 0xd0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8125, lo: 0x88, hi: 0x8b},\n\t// Block 0x24, offset 0xd2\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x812d, lo: 0x98, hi: 0x99},\n\t{value: 0x812d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812b, lo: 0xb9, hi: 0xb9},\n\t// Block 0x25, offset 0xd7\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2647, lo: 0x83, hi: 0x83},\n\t{value: 0x264e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2655, lo: 0x92, hi: 0x92},\n\t{value: 0x265c, lo: 0x97, hi: 0x97},\n\t{value: 0x2663, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2640, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8126, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8127, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a87, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8128, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a90, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45b7, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8200, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45bf, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8200, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8127, lo: 0xba, hi: 0xbd},\n\t// Block 0x26, offset 0xe8\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8127, lo: 0x80, hi: 0x80},\n\t{value: 0x4a99, lo: 0x81, hi: 0x81},\n\t{value: 0x8132, lo: 0x82, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0x86, hi: 0x87},\n\t{value: 0x2671, lo: 0x93, hi: 0x93},\n\t{value: 0x2678, lo: 0x9d, hi: 0x9d},\n\t{value: 0x267f, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2686, lo: 0xa7, hi: 0xa7},\n\t{value: 0x268d, lo: 0xac, hi: 0xac},\n\t{value: 0x266a, lo: 0xb9, hi: 0xb9},\n\t// Block 0x27, offset 0xf4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x86, hi: 0x86},\n\t// Block 0x28, offset 0xf6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d21, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x29, offset 0xfc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2a, offset 0xfe\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2b, offset 0x100\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2c, offset 0x102\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2d, offset 0x104\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2e, offset 0x106\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9f},\n\t// Block 0x2f, offset 0x108\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x94, hi: 0x94},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x30, offset 0x10b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9d},\n\t// Block 0x31, offset 0x10e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8131, lo: 0xa9, hi: 0xa9},\n\t// Block 0x32, offset 0x110\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812e, lo: 0xb9, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbb},\n\t// Block 0x33, offset 0x113\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x97, hi: 0x97},\n\t{value: 0x812d, lo: 0x98, hi: 0x98},\n\t// Block 0x34, offset 0x116\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8132, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x35, offset 0x11a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812d, lo: 0xb5, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x36, offset 0x11f\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d69, lo: 0x80, hi: 0x80},\n\t{value: 0x2d71, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d79, lo: 0x83, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xac},\n\t{value: 0x8132, lo: 0xad, hi: 0xb3},\n\t// Block 0x37, offset 0x128\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xaa, hi: 0xab},\n\t// Block 0x38, offset 0x12a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8104, lo: 0xb2, hi: 0xb3},\n\t// Block 0x39, offset 0x12d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3a, offset 0x12f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812d, lo: 0x95, hi: 0x99},\n\t{value: 0x8132, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812d, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t{value: 0x8132, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3b, offset 0x13a\n\t{value: 0x0004, lo: 0x03},\n\t{value: 0x0433, lo: 0x80, hi: 0x81},\n\t{value: 0x8100, lo: 0x97, hi: 0x97},\n\t{value: 0x8100, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3c, offset 0x13e\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8132, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8132, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8132, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812d, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t// Block 0x3d, offset 0x14c\n\t{value: 0x427e, lo: 0x02},\n\t{value: 0x01b8, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0057, lo: 0xaa, hi: 0xab},\n\t// Block 0x3e, offset 0x14f\n\t{value: 0x0007, lo: 0x05},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bbc, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bca, lo: 0xae, hi: 0xae},\n\t// Block 0x3f, offset 0x155\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3bd1, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bd8, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x40, offset 0x15b\n\t{value: 0x6405, lo: 0x0a},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3be6, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3bed, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3bf4, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3bfb, lo: 0xa4, hi: 0xa5},\n\t{value: 0x3c02, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x41, offset 0x166\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c6b, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3c95, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cbf, lo: 0xaa, hi: 0xad},\n\t// Block 0x42, offset 0x16a\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048b, lo: 0xa9, hi: 0xaa},\n\t// Block 0x43, offset 0x16c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44e0, lo: 0x9c, hi: 0x9c},\n\t// Block 0x44, offset 0x16e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xaf, hi: 0xb1},\n\t// Block 0x45, offset 0x170\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x46, offset 0x172\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa0, hi: 0xbf},\n\t// Block 0x47, offset 0x174\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812c, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8131, lo: 0xab, hi: 0xab},\n\t{value: 0x8133, lo: 0xac, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x812f, lo: 0xae, hi: 0xaf},\n\t// Block 0x48, offset 0x17a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4aa2, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4aa2, lo: 0xb5, hi: 0xb6},\n\t{value: 0x4aa2, lo: 0xba, hi: 0xbf},\n\t// Block 0x49, offset 0x17e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4aa2, lo: 0x8f, hi: 0xa3},\n\t// Block 0x4a, offset 0x180\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xae, hi: 0xbe},\n\t// Block 0x4b, offset 0x182\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x8100, lo: 0x84, hi: 0x84},\n\t{value: 0x8100, lo: 0x87, hi: 0x87},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t{value: 0x8100, lo: 0x9e, hi: 0x9e},\n\t{value: 0x8100, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8100, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8100, lo: 0xbb, hi: 0xbb},\n\t// Block 0x4c, offset 0x18a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8100, lo: 0x80, hi: 0x80},\n\t{value: 0x8100, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8100, lo: 0x8e, hi: 0x8e},\n\t// Block 0x4d, offset 0x18e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb4, hi: 0xbd},\n\t// Block 0x4e, offset 0x191\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9f},\n\t// Block 0x4f, offset 0x193\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb1},\n\t// Block 0x50, offset 0x195\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t// Block 0x51, offset 0x197\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xa0, hi: 0xb1},\n\t// Block 0x52, offset 0x19a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xab, hi: 0xad},\n\t// Block 0x53, offset 0x19c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x93, hi: 0x93},\n\t// Block 0x54, offset 0x19e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb3, hi: 0xb3},\n\t// Block 0x55, offset 0x1a0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t// Block 0x56, offset 0x1a2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbf},\n\t// Block 0x57, offset 0x1a8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t// Block 0x58, offset 0x1ab\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xad, hi: 0xad},\n\t// Block 0x59, offset 0x1ad\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x5a, offset 0x1b4\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x5b, offset 0x1ba\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x5c, offset 0x1c0\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x5d, offset 0x1c8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x5e, offset 0x1ce\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x5f, offset 0x1d4\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x60, offset 0x1da\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x61, offset 0x1de\n\t{value: 0x0006, lo: 0x0d},\n\t{value: 0x4393, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8115, lo: 0x9e, hi: 0x9e},\n\t{value: 0x4405, lo: 0x9f, hi: 0x9f},\n\t{value: 0x43f3, lo: 0xaa, hi: 0xab},\n\t{value: 0x44f7, lo: 0xac, hi: 0xac},\n\t{value: 0x44ff, lo: 0xad, hi: 0xad},\n\t{value: 0x434b, lo: 0xae, hi: 0xb1},\n\t{value: 0x4369, lo: 0xb2, hi: 0xb4},\n\t{value: 0x4381, lo: 0xb5, hi: 0xb6},\n\t{value: 0x438d, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4399, lo: 0xb9, hi: 0xbb},\n\t{value: 0x43b1, lo: 0xbc, hi: 0xbc},\n\t{value: 0x43b7, lo: 0xbe, hi: 0xbe},\n\t// Block 0x62, offset 0x1ec\n\t{value: 0x0006, lo: 0x08},\n\t{value: 0x43bd, lo: 0x80, hi: 0x81},\n\t{value: 0x43c9, lo: 0x83, hi: 0x84},\n\t{value: 0x43db, lo: 0x86, hi: 0x89},\n\t{value: 0x43ff, lo: 0x8a, hi: 0x8a},\n\t{value: 0x437b, lo: 0x8b, hi: 0x8b},\n\t{value: 0x4363, lo: 0x8c, hi: 0x8c},\n\t{value: 0x43ab, lo: 0x8d, hi: 0x8d},\n\t{value: 0x43d5, lo: 0x8e, hi: 0x8e},\n\t// Block 0x63, offset 0x1f5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0xa4, hi: 0xa5},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb1},\n\t// Block 0x64, offset 0x1f8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x9b, hi: 0x9d},\n\t{value: 0x8200, lo: 0x9e, hi: 0xa3},\n\t// Block 0x65, offset 0x1fb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t// Block 0x66, offset 0x1fd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x99, hi: 0x99},\n\t{value: 0x8200, lo: 0xb2, hi: 0xb4},\n\t// Block 0x67, offset 0x200\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xbc, hi: 0xbd},\n\t// Block 0x68, offset 0x202\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa6},\n\t{value: 0x812d, lo: 0xa7, hi: 0xad},\n\t{value: 0x8132, lo: 0xae, hi: 0xaf},\n\t// Block 0x69, offset 0x206\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8100, lo: 0x89, hi: 0x8c},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb2},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb6, hi: 0xbf},\n\t// Block 0x6a, offset 0x20b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x81, hi: 0x8c},\n\t// Block 0x6b, offset 0x20d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xb5, hi: 0xba},\n\t// Block 0x6c, offset 0x20f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x4aa2, lo: 0x9e, hi: 0x9f},\n\t{value: 0x4aa2, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4aa2, lo: 0xa5, hi: 0xa6},\n\t{value: 0x4aa2, lo: 0xaa, hi: 0xaf},\n\t// Block 0x6d, offset 0x214\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x4aa2, lo: 0x82, hi: 0x87},\n\t{value: 0x4aa2, lo: 0x8a, hi: 0x8f},\n\t{value: 0x4aa2, lo: 0x92, hi: 0x97},\n\t{value: 0x4aa2, lo: 0x9a, hi: 0x9c},\n\t{value: 0x8100, lo: 0xa3, hi: 0xa3},\n\t// Block 0x6e, offset 0x21a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x6f, offset 0x21c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xa0, hi: 0xa0},\n\t// Block 0x70, offset 0x21e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb6, hi: 0xba},\n\t// Block 0x71, offset 0x220\n\t{value: 0x002c, lo: 0x05},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x72, offset 0x226\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t// Block 0x73, offset 0x229\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa7},\n\t// Block 0x74, offset 0x22b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x8132, lo: 0x88, hi: 0x8a},\n\t{value: 0x812d, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8132, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812d, lo: 0x8d, hi: 0x90},\n\t// Block 0x75, offset 0x231\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x76, offset 0x234\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x423b, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4245, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x424f, lo: 0xab, hi: 0xab},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x77, offset 0x23c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8132, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d81, lo: 0xae, hi: 0xae},\n\t{value: 0x2d8b, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8104, lo: 0xb3, hi: 0xb4},\n\t// Block 0x78, offset 0x243\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x79, offset 0x246\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8102, lo: 0xb6, hi: 0xb6},\n\t// Block 0x7a, offset 0x249\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8102, lo: 0xa9, hi: 0xaa},\n\t// Block 0x7b, offset 0x24b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7c, offset 0x24e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d95, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d9f, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8132, lo: 0xa6, hi: 0xac},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t// Block 0x7d, offset 0x256\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x86, hi: 0x86},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9e},\n\t// Block 0x7e, offset 0x25a\n\t{value: 0x6b57, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2db3, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2da9, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dbd, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7f, offset 0x261\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x83, hi: 0x83},\n\t// Block 0x80, offset 0x264\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dc7, lo: 0xba, hi: 0xba},\n\t{value: 0x2dd1, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x81, offset 0x26a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0x80, hi: 0x80},\n\t// Block 0x82, offset 0x26c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x83, offset 0x26f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xab, hi: 0xab},\n\t// Block 0x84, offset 0x271\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8102, lo: 0xba, hi: 0xba},\n\t// Block 0x85, offset 0x274\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t// Block 0x86, offset 0x276\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x87, offset 0x278\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x87, hi: 0x87},\n\t// Block 0x88, offset 0x27a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x99, hi: 0x99},\n\t// Block 0x89, offset 0x27c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0x82, hi: 0x82},\n\t{value: 0x8104, lo: 0x84, hi: 0x85},\n\t// Block 0x8a, offset 0x27f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x97, hi: 0x97},\n\t// Block 0x8b, offset 0x281\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x8c, offset 0x283\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb6},\n\t// Block 0x8d, offset 0x285\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x8e, offset 0x287\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45cf, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45d9, lo: 0x9f, hi: 0x9f},\n\t{value: 0x460d, lo: 0xa0, hi: 0xa0},\n\t{value: 0x461b, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4629, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4637, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4645, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812b, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8130, lo: 0xad, hi: 0xad},\n\t{value: 0x812b, lo: 0xae, hi: 0xb2},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8f, offset 0x294\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812d, lo: 0x80, hi: 0x82},\n\t{value: 0x8132, lo: 0x85, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8132, lo: 0xaa, hi: 0xad},\n\t{value: 0x45e3, lo: 0xbb, hi: 0xbb},\n\t{value: 0x45ed, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4653, lo: 0xbd, hi: 0xbd},\n\t{value: 0x466f, lo: 0xbe, hi: 0xbe},\n\t{value: 0x4661, lo: 0xbf, hi: 0xbf},\n\t// Block 0x90, offset 0x29e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x467d, lo: 0x80, hi: 0x80},\n\t// Block 0x91, offset 0x2a0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x82, hi: 0x84},\n\t// Block 0x92, offset 0x2a2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0x80, hi: 0x86},\n\t{value: 0x8132, lo: 0x88, hi: 0x98},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8132, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa6, hi: 0xaa},\n\t// Block 0x93, offset 0x2a8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xac, hi: 0xaf},\n\t// Block 0x94, offset 0x2aa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x90, hi: 0x96},\n\t// Block 0x95, offset 0x2ac\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x84, hi: 0x89},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x96, offset 0x2af\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x93, hi: 0x93},\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfkcTrie. Total size: 18684 bytes (18.25 KiB). Checksum: 113e23c477adfabd.\ntype nfkcTrie struct{}\n\nfunc newNfkcTrie(i int) *nfkcTrie {\n\treturn &nfkcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 92:\n\t\treturn uint16(nfkcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 92\n\t\treturn uint16(nfkcSparse.lookup(n, b))\n\t}\n}\n\n// nfkcValues: 94 blocks, 6016 entries, 12032 bytes\n// The third block is the zero block.\nvar nfkcValues = [6016]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f72, 0xc1: 0x2f77, 0xc2: 0x468b, 0xc3: 0x2f7c, 0xc4: 0x469a, 0xc5: 0x469f,\n\t0xc6: 0xa000, 0xc7: 0x46a9, 0xc8: 0x2fe5, 0xc9: 0x2fea, 0xca: 0x46ae, 0xcb: 0x2ffe,\n\t0xcc: 0x3071, 0xcd: 0x3076, 0xce: 0x307b, 0xcf: 0x46c2, 0xd1: 0x3107,\n\t0xd2: 0x312a, 0xd3: 0x312f, 0xd4: 0x46cc, 0xd5: 0x46d1, 0xd6: 0x46e0,\n\t0xd8: 0xa000, 0xd9: 0x31b6, 0xda: 0x31bb, 0xdb: 0x31c0, 0xdc: 0x4712, 0xdd: 0x3238,\n\t0xe0: 0x327e, 0xe1: 0x3283, 0xe2: 0x471c, 0xe3: 0x3288,\n\t0xe4: 0x472b, 0xe5: 0x4730, 0xe6: 0xa000, 0xe7: 0x473a, 0xe8: 0x32f1, 0xe9: 0x32f6,\n\t0xea: 0x473f, 0xeb: 0x330a, 0xec: 0x3382, 0xed: 0x3387, 0xee: 0x338c, 0xef: 0x4753,\n\t0xf1: 0x3418, 0xf2: 0x343b, 0xf3: 0x3440, 0xf4: 0x475d, 0xf5: 0x4762,\n\t0xf6: 0x4771, 0xf8: 0xa000, 0xf9: 0x34cc, 0xfa: 0x34d1, 0xfb: 0x34d6,\n\t0xfc: 0x47a3, 0xfd: 0x3553, 0xff: 0x356c,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f81, 0x101: 0x328d, 0x102: 0x4690, 0x103: 0x4721, 0x104: 0x2f9f, 0x105: 0x32ab,\n\t0x106: 0x2fb3, 0x107: 0x32bf, 0x108: 0x2fb8, 0x109: 0x32c4, 0x10a: 0x2fbd, 0x10b: 0x32c9,\n\t0x10c: 0x2fc2, 0x10d: 0x32ce, 0x10e: 0x2fcc, 0x10f: 0x32d8,\n\t0x112: 0x46b3, 0x113: 0x4744, 0x114: 0x2ff4, 0x115: 0x3300, 0x116: 0x2ff9, 0x117: 0x3305,\n\t0x118: 0x3017, 0x119: 0x3323, 0x11a: 0x3008, 0x11b: 0x3314, 0x11c: 0x3030, 0x11d: 0x333c,\n\t0x11e: 0x303a, 0x11f: 0x3346, 0x120: 0x303f, 0x121: 0x334b, 0x122: 0x3049, 0x123: 0x3355,\n\t0x124: 0x304e, 0x125: 0x335a, 0x128: 0x3080, 0x129: 0x3391,\n\t0x12a: 0x3085, 0x12b: 0x3396, 0x12c: 0x308a, 0x12d: 0x339b, 0x12e: 0x30ad, 0x12f: 0x33b9,\n\t0x130: 0x308f, 0x132: 0x195d, 0x133: 0x19ea, 0x134: 0x30b7, 0x135: 0x33c3,\n\t0x136: 0x30cb, 0x137: 0x33dc, 0x139: 0x30d5, 0x13a: 0x33e6, 0x13b: 0x30df,\n\t0x13c: 0x33f0, 0x13d: 0x30da, 0x13e: 0x33eb, 0x13f: 0x1baf,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x1c37, 0x143: 0x3102, 0x144: 0x3413, 0x145: 0x311b,\n\t0x146: 0x342c, 0x147: 0x3111, 0x148: 0x3422, 0x149: 0x1c5f,\n\t0x14c: 0x46d6, 0x14d: 0x4767, 0x14e: 0x3134, 0x14f: 0x3445, 0x150: 0x313e, 0x151: 0x344f,\n\t0x154: 0x315c, 0x155: 0x346d, 0x156: 0x3175, 0x157: 0x3486,\n\t0x158: 0x3166, 0x159: 0x3477, 0x15a: 0x46f9, 0x15b: 0x478a, 0x15c: 0x317f, 0x15d: 0x3490,\n\t0x15e: 0x318e, 0x15f: 0x349f, 0x160: 0x46fe, 0x161: 0x478f, 0x162: 0x31a7, 0x163: 0x34bd,\n\t0x164: 0x3198, 0x165: 0x34ae, 0x168: 0x4708, 0x169: 0x4799,\n\t0x16a: 0x470d, 0x16b: 0x479e, 0x16c: 0x31c5, 0x16d: 0x34db, 0x16e: 0x31cf, 0x16f: 0x34e5,\n\t0x170: 0x31d4, 0x171: 0x34ea, 0x172: 0x31f2, 0x173: 0x3508, 0x174: 0x3215, 0x175: 0x352b,\n\t0x176: 0x323d, 0x177: 0x3558, 0x178: 0x3251, 0x179: 0x3260, 0x17a: 0x3580, 0x17b: 0x326a,\n\t0x17c: 0x358a, 0x17d: 0x326f, 0x17e: 0x358f, 0x17f: 0x00a7,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x2df1, 0x185: 0x2df7,\n\t0x186: 0x2dfd, 0x187: 0x1972, 0x188: 0x1975, 0x189: 0x1a0b, 0x18a: 0x198a, 0x18b: 0x198d,\n\t0x18c: 0x1a41, 0x18d: 0x2f8b, 0x18e: 0x3297, 0x18f: 0x3099, 0x190: 0x33a5, 0x191: 0x3143,\n\t0x192: 0x3454, 0x193: 0x31d9, 0x194: 0x34ef, 0x195: 0x39d2, 0x196: 0x3b61, 0x197: 0x39cb,\n\t0x198: 0x3b5a, 0x199: 0x39d9, 0x19a: 0x3b68, 0x19b: 0x39c4, 0x19c: 0x3b53,\n\t0x19e: 0x38b3, 0x19f: 0x3a42, 0x1a0: 0x38ac, 0x1a1: 0x3a3b, 0x1a2: 0x35b6, 0x1a3: 0x35c8,\n\t0x1a6: 0x3044, 0x1a7: 0x3350, 0x1a8: 0x30c1, 0x1a9: 0x33d2,\n\t0x1aa: 0x46ef, 0x1ab: 0x4780, 0x1ac: 0x3993, 0x1ad: 0x3b22, 0x1ae: 0x35da, 0x1af: 0x35e0,\n\t0x1b0: 0x33c8, 0x1b1: 0x1942, 0x1b2: 0x1945, 0x1b3: 0x19d2, 0x1b4: 0x302b, 0x1b5: 0x3337,\n\t0x1b8: 0x30fd, 0x1b9: 0x340e, 0x1ba: 0x38ba, 0x1bb: 0x3a49,\n\t0x1bc: 0x35b0, 0x1bd: 0x35c2, 0x1be: 0x35bc, 0x1bf: 0x35ce,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2f90, 0x1c1: 0x329c, 0x1c2: 0x2f95, 0x1c3: 0x32a1, 0x1c4: 0x300d, 0x1c5: 0x3319,\n\t0x1c6: 0x3012, 0x1c7: 0x331e, 0x1c8: 0x309e, 0x1c9: 0x33aa, 0x1ca: 0x30a3, 0x1cb: 0x33af,\n\t0x1cc: 0x3148, 0x1cd: 0x3459, 0x1ce: 0x314d, 0x1cf: 0x345e, 0x1d0: 0x316b, 0x1d1: 0x347c,\n\t0x1d2: 0x3170, 0x1d3: 0x3481, 0x1d4: 0x31de, 0x1d5: 0x34f4, 0x1d6: 0x31e3, 0x1d7: 0x34f9,\n\t0x1d8: 0x3189, 0x1d9: 0x349a, 0x1da: 0x31a2, 0x1db: 0x34b8,\n\t0x1de: 0x305d, 0x1df: 0x3369,\n\t0x1e6: 0x4695, 0x1e7: 0x4726, 0x1e8: 0x46bd, 0x1e9: 0x474e,\n\t0x1ea: 0x3962, 0x1eb: 0x3af1, 0x1ec: 0x393f, 0x1ed: 0x3ace, 0x1ee: 0x46db, 0x1ef: 0x476c,\n\t0x1f0: 0x395b, 0x1f1: 0x3aea, 0x1f2: 0x3247, 0x1f3: 0x3562,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,\n\t0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,\n\t0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932,\n\t0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d,\n\t0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d,\n\t0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d,\n\t0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d,\n\t0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d,\n\t0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,\n\t0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49b1, 0x241: 0x49b6, 0x242: 0x9932, 0x243: 0x49bb, 0x244: 0x4a74, 0x245: 0x9936,\n\t0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,\n\t0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,\n\t0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,\n\t0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135,\n\t0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132,\n\t0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132,\n\t0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132,\n\t0x274: 0x0170,\n\t0x27a: 0x42a8,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x425d, 0x285: 0x447e,\n\t0x286: 0x35ec, 0x287: 0x00ce, 0x288: 0x360a, 0x289: 0x3616, 0x28a: 0x3628,\n\t0x28c: 0x3646, 0x28e: 0x3658, 0x28f: 0x3676, 0x290: 0x3e0b, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x363a, 0x2ab: 0x366a, 0x2ac: 0x4801, 0x2ad: 0x369a, 0x2ae: 0x482b, 0x2af: 0x36ac,\n\t0x2b0: 0x3e73, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c1: 0xa000, 0x2c5: 0xa000,\n\t0x2c9: 0xa000, 0x2ca: 0x4843, 0x2cb: 0x4861,\n\t0x2cc: 0x36ca, 0x2cd: 0x36e2, 0x2ce: 0x4879, 0x2d0: 0x01be, 0x2d1: 0x01d0,\n\t0x2d2: 0x01ac, 0x2d3: 0x430f, 0x2d4: 0x4315, 0x2d5: 0x01fa, 0x2d6: 0x01e8,\n\t0x2f0: 0x01d6, 0x2f1: 0x01eb, 0x2f2: 0x01ee, 0x2f4: 0x0188, 0x2f5: 0x01c7,\n\t0x2f9: 0x01a6,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x3724, 0x301: 0x3730, 0x303: 0x371e,\n\t0x306: 0xa000, 0x307: 0x370c,\n\t0x30c: 0x3760, 0x30d: 0x3748, 0x30e: 0x3772, 0x310: 0xa000,\n\t0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000,\n\t0x318: 0xa000, 0x319: 0x3754, 0x31a: 0xa000,\n\t0x31e: 0xa000, 0x323: 0xa000,\n\t0x327: 0xa000,\n\t0x32b: 0xa000, 0x32d: 0xa000,\n\t0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000,\n\t0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x37d8, 0x33a: 0xa000,\n\t0x33e: 0xa000,\n\t// Block 0xd, offset 0x340\n\t0x341: 0x3736, 0x342: 0x37ba,\n\t0x350: 0x3712, 0x351: 0x3796,\n\t0x352: 0x3718, 0x353: 0x379c, 0x356: 0x372a, 0x357: 0x37ae,\n\t0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x382c, 0x35b: 0x3832, 0x35c: 0x373c, 0x35d: 0x37c0,\n\t0x35e: 0x3742, 0x35f: 0x37c6, 0x362: 0x374e, 0x363: 0x37d2,\n\t0x364: 0x375a, 0x365: 0x37de, 0x366: 0x3766, 0x367: 0x37ea, 0x368: 0xa000, 0x369: 0xa000,\n\t0x36a: 0x3838, 0x36b: 0x383e, 0x36c: 0x3790, 0x36d: 0x3814, 0x36e: 0x376c, 0x36f: 0x37f0,\n\t0x370: 0x3778, 0x371: 0x37fc, 0x372: 0x377e, 0x373: 0x3802, 0x374: 0x3784, 0x375: 0x3808,\n\t0x378: 0x378a, 0x379: 0x380e,\n\t// Block 0xe, offset 0x380\n\t0x387: 0x1d64,\n\t0x391: 0x812d,\n\t0x392: 0x8132, 0x393: 0x8132, 0x394: 0x8132, 0x395: 0x8132, 0x396: 0x812d, 0x397: 0x8132,\n\t0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x812e, 0x39b: 0x812d, 0x39c: 0x8132, 0x39d: 0x8132,\n\t0x39e: 0x8132, 0x39f: 0x8132, 0x3a0: 0x8132, 0x3a1: 0x8132, 0x3a2: 0x812d, 0x3a3: 0x812d,\n\t0x3a4: 0x812d, 0x3a5: 0x812d, 0x3a6: 0x812d, 0x3a7: 0x812d, 0x3a8: 0x8132, 0x3a9: 0x8132,\n\t0x3aa: 0x812d, 0x3ab: 0x8132, 0x3ac: 0x8132, 0x3ad: 0x812e, 0x3ae: 0x8131, 0x3af: 0x8132,\n\t0x3b0: 0x8105, 0x3b1: 0x8106, 0x3b2: 0x8107, 0x3b3: 0x8108, 0x3b4: 0x8109, 0x3b5: 0x810a,\n\t0x3b6: 0x810b, 0x3b7: 0x810c, 0x3b8: 0x810d, 0x3b9: 0x810e, 0x3ba: 0x810e, 0x3bb: 0x810f,\n\t0x3bc: 0x8110, 0x3bd: 0x8111, 0x3bf: 0x8112,\n\t// Block 0xf, offset 0x3c0\n\t0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8116,\n\t0x3cc: 0x8117, 0x3cd: 0x8118, 0x3ce: 0x8119, 0x3cf: 0x811a, 0x3d0: 0x811b, 0x3d1: 0x811c,\n\t0x3d2: 0x811d, 0x3d3: 0x9932, 0x3d4: 0x9932, 0x3d5: 0x992d, 0x3d6: 0x812d, 0x3d7: 0x8132,\n\t0x3d8: 0x8132, 0x3d9: 0x8132, 0x3da: 0x8132, 0x3db: 0x8132, 0x3dc: 0x812d, 0x3dd: 0x8132,\n\t0x3de: 0x8132, 0x3df: 0x812d,\n\t0x3f0: 0x811e, 0x3f5: 0x1d87,\n\t0x3f6: 0x2016, 0x3f7: 0x2052, 0x3f8: 0x204d,\n\t// Block 0x10, offset 0x400\n\t0x413: 0x812d, 0x414: 0x8132, 0x415: 0x8132, 0x416: 0x8132, 0x417: 0x8132,\n\t0x418: 0x8132, 0x419: 0x8132, 0x41a: 0x8132, 0x41b: 0x8132, 0x41c: 0x8132, 0x41d: 0x8132,\n\t0x41e: 0x8132, 0x41f: 0x8132, 0x420: 0x8132, 0x421: 0x8132, 0x423: 0x812d,\n\t0x424: 0x8132, 0x425: 0x8132, 0x426: 0x812d, 0x427: 0x8132, 0x428: 0x8132, 0x429: 0x812d,\n\t0x42a: 0x8132, 0x42b: 0x8132, 0x42c: 0x8132, 0x42d: 0x812d, 0x42e: 0x812d, 0x42f: 0x812d,\n\t0x430: 0x8116, 0x431: 0x8117, 0x432: 0x8118, 0x433: 0x8132, 0x434: 0x8132, 0x435: 0x8132,\n\t0x436: 0x812d, 0x437: 0x8132, 0x438: 0x8132, 0x439: 0x812d, 0x43a: 0x812d, 0x43b: 0x8132,\n\t0x43c: 0x8132, 0x43d: 0x8132, 0x43e: 0x8132, 0x43f: 0x8132,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xa000,\n\t0x446: 0x2d29, 0x447: 0xa000, 0x448: 0x2d31, 0x449: 0xa000, 0x44a: 0x2d39, 0x44b: 0xa000,\n\t0x44c: 0x2d41, 0x44d: 0xa000, 0x44e: 0x2d49, 0x451: 0xa000,\n\t0x452: 0x2d51,\n\t0x474: 0x8102, 0x475: 0x9900,\n\t0x47a: 0xa000, 0x47b: 0x2d59,\n\t0x47c: 0xa000, 0x47d: 0x2d61, 0x47e: 0xa000, 0x47f: 0xa000,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0069, 0x481: 0x006b, 0x482: 0x006f, 0x483: 0x0083, 0x484: 0x00f5, 0x485: 0x00f8,\n\t0x486: 0x0413, 0x487: 0x0085, 0x488: 0x0089, 0x489: 0x008b, 0x48a: 0x0104, 0x48b: 0x0107,\n\t0x48c: 0x010a, 0x48d: 0x008f, 0x48f: 0x0097, 0x490: 0x009b, 0x491: 0x00e0,\n\t0x492: 0x009f, 0x493: 0x00fe, 0x494: 0x0417, 0x495: 0x041b, 0x496: 0x00a1, 0x497: 0x00a9,\n\t0x498: 0x00ab, 0x499: 0x0423, 0x49a: 0x012b, 0x49b: 0x00ad, 0x49c: 0x0427, 0x49d: 0x01be,\n\t0x49e: 0x01c1, 0x49f: 0x01c4, 0x4a0: 0x01fa, 0x4a1: 0x01fd, 0x4a2: 0x0093, 0x4a3: 0x00a5,\n\t0x4a4: 0x00ab, 0x4a5: 0x00ad, 0x4a6: 0x01be, 0x4a7: 0x01c1, 0x4a8: 0x01eb, 0x4a9: 0x01fa,\n\t0x4aa: 0x01fd,\n\t0x4b8: 0x020c,\n\t// Block 0x13, offset 0x4c0\n\t0x4db: 0x00fb, 0x4dc: 0x0087, 0x4dd: 0x0101,\n\t0x4de: 0x00d4, 0x4df: 0x010a, 0x4e0: 0x008d, 0x4e1: 0x010d, 0x4e2: 0x0110, 0x4e3: 0x0116,\n\t0x4e4: 0x011c, 0x4e5: 0x011f, 0x4e6: 0x0122, 0x4e7: 0x042b, 0x4e8: 0x016a, 0x4e9: 0x0128,\n\t0x4ea: 0x042f, 0x4eb: 0x016d, 0x4ec: 0x0131, 0x4ed: 0x012e, 0x4ee: 0x0134, 0x4ef: 0x0137,\n\t0x4f0: 0x013a, 0x4f1: 0x013d, 0x4f2: 0x0140, 0x4f3: 0x014c, 0x4f4: 0x014f, 0x4f5: 0x00ec,\n\t0x4f6: 0x0152, 0x4f7: 0x0155, 0x4f8: 0x041f, 0x4f9: 0x0158, 0x4fa: 0x015b, 0x4fb: 0x00b5,\n\t0x4fc: 0x015e, 0x4fd: 0x0161, 0x4fe: 0x0164, 0x4ff: 0x01d0,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x8132, 0x501: 0x8132, 0x502: 0x812d, 0x503: 0x8132, 0x504: 0x8132, 0x505: 0x8132,\n\t0x506: 0x8132, 0x507: 0x8132, 0x508: 0x8132, 0x509: 0x8132, 0x50a: 0x812d, 0x50b: 0x8132,\n\t0x50c: 0x8132, 0x50d: 0x8135, 0x50e: 0x812a, 0x50f: 0x812d, 0x510: 0x8129, 0x511: 0x8132,\n\t0x512: 0x8132, 0x513: 0x8132, 0x514: 0x8132, 0x515: 0x8132, 0x516: 0x8132, 0x517: 0x8132,\n\t0x518: 0x8132, 0x519: 0x8132, 0x51a: 0x8132, 0x51b: 0x8132, 0x51c: 0x8132, 0x51d: 0x8132,\n\t0x51e: 0x8132, 0x51f: 0x8132, 0x520: 0x8132, 0x521: 0x8132, 0x522: 0x8132, 0x523: 0x8132,\n\t0x524: 0x8132, 0x525: 0x8132, 0x526: 0x8132, 0x527: 0x8132, 0x528: 0x8132, 0x529: 0x8132,\n\t0x52a: 0x8132, 0x52b: 0x8132, 0x52c: 0x8132, 0x52d: 0x8132, 0x52e: 0x8132, 0x52f: 0x8132,\n\t0x530: 0x8132, 0x531: 0x8132, 0x532: 0x8132, 0x533: 0x8132, 0x534: 0x8132, 0x535: 0x8132,\n\t0x536: 0x8133, 0x537: 0x8131, 0x538: 0x8131, 0x539: 0x812d, 0x53b: 0x8132,\n\t0x53c: 0x8134, 0x53d: 0x812d, 0x53e: 0x8132, 0x53f: 0x812d,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x2f9a, 0x541: 0x32a6, 0x542: 0x2fa4, 0x543: 0x32b0, 0x544: 0x2fa9, 0x545: 0x32b5,\n\t0x546: 0x2fae, 0x547: 0x32ba, 0x548: 0x38cf, 0x549: 0x3a5e, 0x54a: 0x2fc7, 0x54b: 0x32d3,\n\t0x54c: 0x2fd1, 0x54d: 0x32dd, 0x54e: 0x2fe0, 0x54f: 0x32ec, 0x550: 0x2fd6, 0x551: 0x32e2,\n\t0x552: 0x2fdb, 0x553: 0x32e7, 0x554: 0x38f2, 0x555: 0x3a81, 0x556: 0x38f9, 0x557: 0x3a88,\n\t0x558: 0x301c, 0x559: 0x3328, 0x55a: 0x3021, 0x55b: 0x332d, 0x55c: 0x3907, 0x55d: 0x3a96,\n\t0x55e: 0x3026, 0x55f: 0x3332, 0x560: 0x3035, 0x561: 0x3341, 0x562: 0x3053, 0x563: 0x335f,\n\t0x564: 0x3062, 0x565: 0x336e, 0x566: 0x3058, 0x567: 0x3364, 0x568: 0x3067, 0x569: 0x3373,\n\t0x56a: 0x306c, 0x56b: 0x3378, 0x56c: 0x30b2, 0x56d: 0x33be, 0x56e: 0x390e, 0x56f: 0x3a9d,\n\t0x570: 0x30bc, 0x571: 0x33cd, 0x572: 0x30c6, 0x573: 0x33d7, 0x574: 0x30d0, 0x575: 0x33e1,\n\t0x576: 0x46c7, 0x577: 0x4758, 0x578: 0x3915, 0x579: 0x3aa4, 0x57a: 0x30e9, 0x57b: 0x33fa,\n\t0x57c: 0x30e4, 0x57d: 0x33f5, 0x57e: 0x30ee, 0x57f: 0x33ff,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x30f3, 0x581: 0x3404, 0x582: 0x30f8, 0x583: 0x3409, 0x584: 0x310c, 0x585: 0x341d,\n\t0x586: 0x3116, 0x587: 0x3427, 0x588: 0x3125, 0x589: 0x3436, 0x58a: 0x3120, 0x58b: 0x3431,\n\t0x58c: 0x3938, 0x58d: 0x3ac7, 0x58e: 0x3946, 0x58f: 0x3ad5, 0x590: 0x394d, 0x591: 0x3adc,\n\t0x592: 0x3954, 0x593: 0x3ae3, 0x594: 0x3152, 0x595: 0x3463, 0x596: 0x3157, 0x597: 0x3468,\n\t0x598: 0x3161, 0x599: 0x3472, 0x59a: 0x46f4, 0x59b: 0x4785, 0x59c: 0x399a, 0x59d: 0x3b29,\n\t0x59e: 0x317a, 0x59f: 0x348b, 0x5a0: 0x3184, 0x5a1: 0x3495, 0x5a2: 0x4703, 0x5a3: 0x4794,\n\t0x5a4: 0x39a1, 0x5a5: 0x3b30, 0x5a6: 0x39a8, 0x5a7: 0x3b37, 0x5a8: 0x39af, 0x5a9: 0x3b3e,\n\t0x5aa: 0x3193, 0x5ab: 0x34a4, 0x5ac: 0x319d, 0x5ad: 0x34b3, 0x5ae: 0x31b1, 0x5af: 0x34c7,\n\t0x5b0: 0x31ac, 0x5b1: 0x34c2, 0x5b2: 0x31ed, 0x5b3: 0x3503, 0x5b4: 0x31fc, 0x5b5: 0x3512,\n\t0x5b6: 0x31f7, 0x5b7: 0x350d, 0x5b8: 0x39b6, 0x5b9: 0x3b45, 0x5ba: 0x39bd, 0x5bb: 0x3b4c,\n\t0x5bc: 0x3201, 0x5bd: 0x3517, 0x5be: 0x3206, 0x5bf: 0x351c,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x320b, 0x5c1: 0x3521, 0x5c2: 0x3210, 0x5c3: 0x3526, 0x5c4: 0x321f, 0x5c5: 0x3535,\n\t0x5c6: 0x321a, 0x5c7: 0x3530, 0x5c8: 0x3224, 0x5c9: 0x353f, 0x5ca: 0x3229, 0x5cb: 0x3544,\n\t0x5cc: 0x322e, 0x5cd: 0x3549, 0x5ce: 0x324c, 0x5cf: 0x3567, 0x5d0: 0x3265, 0x5d1: 0x3585,\n\t0x5d2: 0x3274, 0x5d3: 0x3594, 0x5d4: 0x3279, 0x5d5: 0x3599, 0x5d6: 0x337d, 0x5d7: 0x34a9,\n\t0x5d8: 0x353a, 0x5d9: 0x3576, 0x5da: 0x1be3, 0x5db: 0x42da,\n\t0x5e0: 0x46a4, 0x5e1: 0x4735, 0x5e2: 0x2f86, 0x5e3: 0x3292,\n\t0x5e4: 0x387b, 0x5e5: 0x3a0a, 0x5e6: 0x3874, 0x5e7: 0x3a03, 0x5e8: 0x3889, 0x5e9: 0x3a18,\n\t0x5ea: 0x3882, 0x5eb: 0x3a11, 0x5ec: 0x38c1, 0x5ed: 0x3a50, 0x5ee: 0x3897, 0x5ef: 0x3a26,\n\t0x5f0: 0x3890, 0x5f1: 0x3a1f, 0x5f2: 0x38a5, 0x5f3: 0x3a34, 0x5f4: 0x389e, 0x5f5: 0x3a2d,\n\t0x5f6: 0x38c8, 0x5f7: 0x3a57, 0x5f8: 0x46b8, 0x5f9: 0x4749, 0x5fa: 0x3003, 0x5fb: 0x330f,\n\t0x5fc: 0x2fef, 0x5fd: 0x32fb, 0x5fe: 0x38dd, 0x5ff: 0x3a6c,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x38d6, 0x601: 0x3a65, 0x602: 0x38eb, 0x603: 0x3a7a, 0x604: 0x38e4, 0x605: 0x3a73,\n\t0x606: 0x3900, 0x607: 0x3a8f, 0x608: 0x3094, 0x609: 0x33a0, 0x60a: 0x30a8, 0x60b: 0x33b4,\n\t0x60c: 0x46ea, 0x60d: 0x477b, 0x60e: 0x3139, 0x60f: 0x344a, 0x610: 0x3923, 0x611: 0x3ab2,\n\t0x612: 0x391c, 0x613: 0x3aab, 0x614: 0x3931, 0x615: 0x3ac0, 0x616: 0x392a, 0x617: 0x3ab9,\n\t0x618: 0x398c, 0x619: 0x3b1b, 0x61a: 0x3970, 0x61b: 0x3aff, 0x61c: 0x3969, 0x61d: 0x3af8,\n\t0x61e: 0x397e, 0x61f: 0x3b0d, 0x620: 0x3977, 0x621: 0x3b06, 0x622: 0x3985, 0x623: 0x3b14,\n\t0x624: 0x31e8, 0x625: 0x34fe, 0x626: 0x31ca, 0x627: 0x34e0, 0x628: 0x39e7, 0x629: 0x3b76,\n\t0x62a: 0x39e0, 0x62b: 0x3b6f, 0x62c: 0x39f5, 0x62d: 0x3b84, 0x62e: 0x39ee, 0x62f: 0x3b7d,\n\t0x630: 0x39fc, 0x631: 0x3b8b, 0x632: 0x3233, 0x633: 0x354e, 0x634: 0x325b, 0x635: 0x357b,\n\t0x636: 0x3256, 0x637: 0x3571, 0x638: 0x3242, 0x639: 0x355d,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x4807, 0x641: 0x480d, 0x642: 0x4921, 0x643: 0x4939, 0x644: 0x4929, 0x645: 0x4941,\n\t0x646: 0x4931, 0x647: 0x4949, 0x648: 0x47ad, 0x649: 0x47b3, 0x64a: 0x4891, 0x64b: 0x48a9,\n\t0x64c: 0x4899, 0x64d: 0x48b1, 0x64e: 0x48a1, 0x64f: 0x48b9, 0x650: 0x4819, 0x651: 0x481f,\n\t0x652: 0x3dbb, 0x653: 0x3dcb, 0x654: 0x3dc3, 0x655: 0x3dd3,\n\t0x658: 0x47b9, 0x659: 0x47bf, 0x65a: 0x3ceb, 0x65b: 0x3cfb, 0x65c: 0x3cf3, 0x65d: 0x3d03,\n\t0x660: 0x4831, 0x661: 0x4837, 0x662: 0x4951, 0x663: 0x4969,\n\t0x664: 0x4959, 0x665: 0x4971, 0x666: 0x4961, 0x667: 0x4979, 0x668: 0x47c5, 0x669: 0x47cb,\n\t0x66a: 0x48c1, 0x66b: 0x48d9, 0x66c: 0x48c9, 0x66d: 0x48e1, 0x66e: 0x48d1, 0x66f: 0x48e9,\n\t0x670: 0x4849, 0x671: 0x484f, 0x672: 0x3e1b, 0x673: 0x3e33, 0x674: 0x3e23, 0x675: 0x3e3b,\n\t0x676: 0x3e2b, 0x677: 0x3e43, 0x678: 0x47d1, 0x679: 0x47d7, 0x67a: 0x3d1b, 0x67b: 0x3d33,\n\t0x67c: 0x3d23, 0x67d: 0x3d3b, 0x67e: 0x3d2b, 0x67f: 0x3d43,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x4855, 0x681: 0x485b, 0x682: 0x3e4b, 0x683: 0x3e5b, 0x684: 0x3e53, 0x685: 0x3e63,\n\t0x688: 0x47dd, 0x689: 0x47e3, 0x68a: 0x3d4b, 0x68b: 0x3d5b,\n\t0x68c: 0x3d53, 0x68d: 0x3d63, 0x690: 0x4867, 0x691: 0x486d,\n\t0x692: 0x3e83, 0x693: 0x3e9b, 0x694: 0x3e8b, 0x695: 0x3ea3, 0x696: 0x3e93, 0x697: 0x3eab,\n\t0x699: 0x47e9, 0x69b: 0x3d6b, 0x69d: 0x3d73,\n\t0x69f: 0x3d7b, 0x6a0: 0x487f, 0x6a1: 0x4885, 0x6a2: 0x4981, 0x6a3: 0x4999,\n\t0x6a4: 0x4989, 0x6a5: 0x49a1, 0x6a6: 0x4991, 0x6a7: 0x49a9, 0x6a8: 0x47ef, 0x6a9: 0x47f5,\n\t0x6aa: 0x48f1, 0x6ab: 0x4909, 0x6ac: 0x48f9, 0x6ad: 0x4911, 0x6ae: 0x4901, 0x6af: 0x4919,\n\t0x6b0: 0x47fb, 0x6b1: 0x4321, 0x6b2: 0x3694, 0x6b3: 0x4327, 0x6b4: 0x4825, 0x6b5: 0x432d,\n\t0x6b6: 0x36a6, 0x6b7: 0x4333, 0x6b8: 0x36c4, 0x6b9: 0x4339, 0x6ba: 0x36dc, 0x6bb: 0x433f,\n\t0x6bc: 0x4873, 0x6bd: 0x4345,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3da3, 0x6c1: 0x3dab, 0x6c2: 0x4187, 0x6c3: 0x41a5, 0x6c4: 0x4191, 0x6c5: 0x41af,\n\t0x6c6: 0x419b, 0x6c7: 0x41b9, 0x6c8: 0x3cdb, 0x6c9: 0x3ce3, 0x6ca: 0x40d3, 0x6cb: 0x40f1,\n\t0x6cc: 0x40dd, 0x6cd: 0x40fb, 0x6ce: 0x40e7, 0x6cf: 0x4105, 0x6d0: 0x3deb, 0x6d1: 0x3df3,\n\t0x6d2: 0x41c3, 0x6d3: 0x41e1, 0x6d4: 0x41cd, 0x6d5: 0x41eb, 0x6d6: 0x41d7, 0x6d7: 0x41f5,\n\t0x6d8: 0x3d0b, 0x6d9: 0x3d13, 0x6da: 0x410f, 0x6db: 0x412d, 0x6dc: 0x4119, 0x6dd: 0x4137,\n\t0x6de: 0x4123, 0x6df: 0x4141, 0x6e0: 0x3ec3, 0x6e1: 0x3ecb, 0x6e2: 0x41ff, 0x6e3: 0x421d,\n\t0x6e4: 0x4209, 0x6e5: 0x4227, 0x6e6: 0x4213, 0x6e7: 0x4231, 0x6e8: 0x3d83, 0x6e9: 0x3d8b,\n\t0x6ea: 0x414b, 0x6eb: 0x4169, 0x6ec: 0x4155, 0x6ed: 0x4173, 0x6ee: 0x415f, 0x6ef: 0x417d,\n\t0x6f0: 0x3688, 0x6f1: 0x3682, 0x6f2: 0x3d93, 0x6f3: 0x368e, 0x6f4: 0x3d9b,\n\t0x6f6: 0x4813, 0x6f7: 0x3db3, 0x6f8: 0x35f8, 0x6f9: 0x35f2, 0x6fa: 0x35e6, 0x6fb: 0x42f1,\n\t0x6fc: 0x35fe, 0x6fd: 0x428a, 0x6fe: 0x01d3, 0x6ff: 0x428a,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x42a3, 0x701: 0x4485, 0x702: 0x3ddb, 0x703: 0x36a0, 0x704: 0x3de3,\n\t0x706: 0x483d, 0x707: 0x3dfb, 0x708: 0x3604, 0x709: 0x42f7, 0x70a: 0x3610, 0x70b: 0x42fd,\n\t0x70c: 0x361c, 0x70d: 0x448c, 0x70e: 0x4493, 0x70f: 0x449a, 0x710: 0x36b8, 0x711: 0x36b2,\n\t0x712: 0x3e03, 0x713: 0x44e7, 0x716: 0x36be, 0x717: 0x3e13,\n\t0x718: 0x3634, 0x719: 0x362e, 0x71a: 0x3622, 0x71b: 0x4303, 0x71d: 0x44a1,\n\t0x71e: 0x44a8, 0x71f: 0x44af, 0x720: 0x36ee, 0x721: 0x36e8, 0x722: 0x3e6b, 0x723: 0x44ef,\n\t0x724: 0x36d0, 0x725: 0x36d6, 0x726: 0x36f4, 0x727: 0x3e7b, 0x728: 0x3664, 0x729: 0x365e,\n\t0x72a: 0x3652, 0x72b: 0x430f, 0x72c: 0x364c, 0x72d: 0x4477, 0x72e: 0x447e, 0x72f: 0x0081,\n\t0x732: 0x3eb3, 0x733: 0x36fa, 0x734: 0x3ebb,\n\t0x736: 0x488b, 0x737: 0x3ed3, 0x738: 0x3640, 0x739: 0x4309, 0x73a: 0x3670, 0x73b: 0x431b,\n\t0x73c: 0x367c, 0x73d: 0x425d, 0x73e: 0x428f,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x1bdb, 0x741: 0x1bdf, 0x742: 0x0047, 0x743: 0x1c57, 0x745: 0x1beb,\n\t0x746: 0x1bef, 0x747: 0x00e9, 0x749: 0x1c5b, 0x74a: 0x008f, 0x74b: 0x0051,\n\t0x74c: 0x0051, 0x74d: 0x0051, 0x74e: 0x0091, 0x74f: 0x00da, 0x750: 0x0053, 0x751: 0x0053,\n\t0x752: 0x0059, 0x753: 0x0099, 0x755: 0x005d, 0x756: 0x1990,\n\t0x759: 0x0061, 0x75a: 0x0063, 0x75b: 0x0065, 0x75c: 0x0065, 0x75d: 0x0065,\n\t0x760: 0x19a2, 0x761: 0x1bcb, 0x762: 0x19ab,\n\t0x764: 0x0075, 0x766: 0x01b8, 0x768: 0x0075,\n\t0x76a: 0x0057, 0x76b: 0x42d5, 0x76c: 0x0045, 0x76d: 0x0047, 0x76f: 0x008b,\n\t0x770: 0x004b, 0x771: 0x004d, 0x773: 0x005b, 0x774: 0x009f, 0x775: 0x0215,\n\t0x776: 0x0218, 0x777: 0x021b, 0x778: 0x021e, 0x779: 0x0093, 0x77b: 0x1b9b,\n\t0x77c: 0x01e8, 0x77d: 0x01c1, 0x77e: 0x0179, 0x77f: 0x01a0,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x0463, 0x785: 0x0049,\n\t0x786: 0x0089, 0x787: 0x008b, 0x788: 0x0093, 0x789: 0x0095,\n\t0x790: 0x2231, 0x791: 0x223d,\n\t0x792: 0x22f1, 0x793: 0x2219, 0x794: 0x229d, 0x795: 0x2225, 0x796: 0x22a3, 0x797: 0x22bb,\n\t0x798: 0x22c7, 0x799: 0x222b, 0x79a: 0x22cd, 0x79b: 0x2237, 0x79c: 0x22c1, 0x79d: 0x22d3,\n\t0x79e: 0x22d9, 0x79f: 0x1cbf, 0x7a0: 0x0053, 0x7a1: 0x195a, 0x7a2: 0x1ba7, 0x7a3: 0x1963,\n\t0x7a4: 0x006d, 0x7a5: 0x19ae, 0x7a6: 0x1bd3, 0x7a7: 0x1d4b, 0x7a8: 0x1966, 0x7a9: 0x0071,\n\t0x7aa: 0x19ba, 0x7ab: 0x1bd7, 0x7ac: 0x0059, 0x7ad: 0x0047, 0x7ae: 0x0049, 0x7af: 0x005b,\n\t0x7b0: 0x0093, 0x7b1: 0x19e7, 0x7b2: 0x1c1b, 0x7b3: 0x19f0, 0x7b4: 0x00ad, 0x7b5: 0x1a65,\n\t0x7b6: 0x1c4f, 0x7b7: 0x1d5f, 0x7b8: 0x19f3, 0x7b9: 0x00b1, 0x7ba: 0x1a68, 0x7bb: 0x1c53,\n\t0x7bc: 0x0099, 0x7bd: 0x0087, 0x7be: 0x0089, 0x7bf: 0x009b,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x3c09, 0x7c3: 0xa000, 0x7c4: 0x3c10, 0x7c5: 0xa000,\n\t0x7c7: 0x3c17, 0x7c8: 0xa000, 0x7c9: 0x3c1e,\n\t0x7cd: 0xa000,\n\t0x7e0: 0x2f68, 0x7e1: 0xa000, 0x7e2: 0x3c2c,\n\t0x7e4: 0xa000, 0x7e5: 0xa000,\n\t0x7ed: 0x3c25, 0x7ee: 0x2f63, 0x7ef: 0x2f6d,\n\t0x7f0: 0x3c33, 0x7f1: 0x3c3a, 0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0x3c41, 0x7f5: 0x3c48,\n\t0x7f6: 0xa000, 0x7f7: 0xa000, 0x7f8: 0x3c4f, 0x7f9: 0x3c56, 0x7fa: 0xa000, 0x7fb: 0xa000,\n\t0x7fc: 0xa000, 0x7fd: 0xa000,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3c5d, 0x801: 0x3c64, 0x802: 0xa000, 0x803: 0xa000, 0x804: 0x3c79, 0x805: 0x3c80,\n\t0x806: 0xa000, 0x807: 0xa000, 0x808: 0x3c87, 0x809: 0x3c8e,\n\t0x811: 0xa000,\n\t0x812: 0xa000,\n\t0x822: 0xa000,\n\t0x828: 0xa000, 0x829: 0xa000,\n\t0x82b: 0xa000, 0x82c: 0x3ca3, 0x82d: 0x3caa, 0x82e: 0x3cb1, 0x82f: 0x3cb8,\n\t0x832: 0xa000, 0x833: 0xa000, 0x834: 0xa000, 0x835: 0xa000,\n\t// Block 0x21, offset 0x840\n\t0x860: 0x0023, 0x861: 0x0025, 0x862: 0x0027, 0x863: 0x0029,\n\t0x864: 0x002b, 0x865: 0x002d, 0x866: 0x002f, 0x867: 0x0031, 0x868: 0x0033, 0x869: 0x1882,\n\t0x86a: 0x1885, 0x86b: 0x1888, 0x86c: 0x188b, 0x86d: 0x188e, 0x86e: 0x1891, 0x86f: 0x1894,\n\t0x870: 0x1897, 0x871: 0x189a, 0x872: 0x189d, 0x873: 0x18a6, 0x874: 0x1a6b, 0x875: 0x1a6f,\n\t0x876: 0x1a73, 0x877: 0x1a77, 0x878: 0x1a7b, 0x879: 0x1a7f, 0x87a: 0x1a83, 0x87b: 0x1a87,\n\t0x87c: 0x1a8b, 0x87d: 0x1c83, 0x87e: 0x1c88, 0x87f: 0x1c8d,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x1c92, 0x881: 0x1c97, 0x882: 0x1c9c, 0x883: 0x1ca1, 0x884: 0x1ca6, 0x885: 0x1cab,\n\t0x886: 0x1cb0, 0x887: 0x1cb5, 0x888: 0x187f, 0x889: 0x18a3, 0x88a: 0x18c7, 0x88b: 0x18eb,\n\t0x88c: 0x190f, 0x88d: 0x1918, 0x88e: 0x191e, 0x88f: 0x1924, 0x890: 0x192a, 0x891: 0x1b63,\n\t0x892: 0x1b67, 0x893: 0x1b6b, 0x894: 0x1b6f, 0x895: 0x1b73, 0x896: 0x1b77, 0x897: 0x1b7b,\n\t0x898: 0x1b7f, 0x899: 0x1b83, 0x89a: 0x1b87, 0x89b: 0x1b8b, 0x89c: 0x1af7, 0x89d: 0x1afb,\n\t0x89e: 0x1aff, 0x89f: 0x1b03, 0x8a0: 0x1b07, 0x8a1: 0x1b0b, 0x8a2: 0x1b0f, 0x8a3: 0x1b13,\n\t0x8a4: 0x1b17, 0x8a5: 0x1b1b, 0x8a6: 0x1b1f, 0x8a7: 0x1b23, 0x8a8: 0x1b27, 0x8a9: 0x1b2b,\n\t0x8aa: 0x1b2f, 0x8ab: 0x1b33, 0x8ac: 0x1b37, 0x8ad: 0x1b3b, 0x8ae: 0x1b3f, 0x8af: 0x1b43,\n\t0x8b0: 0x1b47, 0x8b1: 0x1b4b, 0x8b2: 0x1b4f, 0x8b3: 0x1b53, 0x8b4: 0x1b57, 0x8b5: 0x1b5b,\n\t0x8b6: 0x0043, 0x8b7: 0x0045, 0x8b8: 0x0047, 0x8b9: 0x0049, 0x8ba: 0x004b, 0x8bb: 0x004d,\n\t0x8bc: 0x004f, 0x8bd: 0x0051, 0x8be: 0x0053, 0x8bf: 0x0055,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x06bf, 0x8c1: 0x06e3, 0x8c2: 0x06ef, 0x8c3: 0x06ff, 0x8c4: 0x0707, 0x8c5: 0x0713,\n\t0x8c6: 0x071b, 0x8c7: 0x0723, 0x8c8: 0x072f, 0x8c9: 0x0783, 0x8ca: 0x079b, 0x8cb: 0x07ab,\n\t0x8cc: 0x07bb, 0x8cd: 0x07cb, 0x8ce: 0x07db, 0x8cf: 0x07fb, 0x8d0: 0x07ff, 0x8d1: 0x0803,\n\t0x8d2: 0x0837, 0x8d3: 0x085f, 0x8d4: 0x086f, 0x8d5: 0x0877, 0x8d6: 0x087b, 0x8d7: 0x0887,\n\t0x8d8: 0x08a3, 0x8d9: 0x08a7, 0x8da: 0x08bf, 0x8db: 0x08c3, 0x8dc: 0x08cb, 0x8dd: 0x08db,\n\t0x8de: 0x0977, 0x8df: 0x098b, 0x8e0: 0x09cb, 0x8e1: 0x09df, 0x8e2: 0x09e7, 0x8e3: 0x09eb,\n\t0x8e4: 0x09fb, 0x8e5: 0x0a17, 0x8e6: 0x0a43, 0x8e7: 0x0a4f, 0x8e8: 0x0a6f, 0x8e9: 0x0a7b,\n\t0x8ea: 0x0a7f, 0x8eb: 0x0a83, 0x8ec: 0x0a9b, 0x8ed: 0x0a9f, 0x8ee: 0x0acb, 0x8ef: 0x0ad7,\n\t0x8f0: 0x0adf, 0x8f1: 0x0ae7, 0x8f2: 0x0af7, 0x8f3: 0x0aff, 0x8f4: 0x0b07, 0x8f5: 0x0b33,\n\t0x8f6: 0x0b37, 0x8f7: 0x0b3f, 0x8f8: 0x0b43, 0x8f9: 0x0b4b, 0x8fa: 0x0b53, 0x8fb: 0x0b63,\n\t0x8fc: 0x0b7f, 0x8fd: 0x0bf7, 0x8fe: 0x0c0b, 0x8ff: 0x0c0f,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0c8f, 0x901: 0x0c93, 0x902: 0x0ca7, 0x903: 0x0cab, 0x904: 0x0cb3, 0x905: 0x0cbb,\n\t0x906: 0x0cc3, 0x907: 0x0ccf, 0x908: 0x0cf7, 0x909: 0x0d07, 0x90a: 0x0d1b, 0x90b: 0x0d8b,\n\t0x90c: 0x0d97, 0x90d: 0x0da7, 0x90e: 0x0db3, 0x90f: 0x0dbf, 0x910: 0x0dc7, 0x911: 0x0dcb,\n\t0x912: 0x0dcf, 0x913: 0x0dd3, 0x914: 0x0dd7, 0x915: 0x0e8f, 0x916: 0x0ed7, 0x917: 0x0ee3,\n\t0x918: 0x0ee7, 0x919: 0x0eeb, 0x91a: 0x0eef, 0x91b: 0x0ef7, 0x91c: 0x0efb, 0x91d: 0x0f0f,\n\t0x91e: 0x0f2b, 0x91f: 0x0f33, 0x920: 0x0f73, 0x921: 0x0f77, 0x922: 0x0f7f, 0x923: 0x0f83,\n\t0x924: 0x0f8b, 0x925: 0x0f8f, 0x926: 0x0fb3, 0x927: 0x0fb7, 0x928: 0x0fd3, 0x929: 0x0fd7,\n\t0x92a: 0x0fdb, 0x92b: 0x0fdf, 0x92c: 0x0ff3, 0x92d: 0x1017, 0x92e: 0x101b, 0x92f: 0x101f,\n\t0x930: 0x1043, 0x931: 0x1083, 0x932: 0x1087, 0x933: 0x10a7, 0x934: 0x10b7, 0x935: 0x10bf,\n\t0x936: 0x10df, 0x937: 0x1103, 0x938: 0x1147, 0x939: 0x114f, 0x93a: 0x1163, 0x93b: 0x116f,\n\t0x93c: 0x1177, 0x93d: 0x117f, 0x93e: 0x1183, 0x93f: 0x1187,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x119f, 0x941: 0x11a3, 0x942: 0x11bf, 0x943: 0x11c7, 0x944: 0x11cf, 0x945: 0x11d3,\n\t0x946: 0x11df, 0x947: 0x11e7, 0x948: 0x11eb, 0x949: 0x11ef, 0x94a: 0x11f7, 0x94b: 0x11fb,\n\t0x94c: 0x129b, 0x94d: 0x12af, 0x94e: 0x12e3, 0x94f: 0x12e7, 0x950: 0x12ef, 0x951: 0x131b,\n\t0x952: 0x1323, 0x953: 0x132b, 0x954: 0x1333, 0x955: 0x136f, 0x956: 0x1373, 0x957: 0x137b,\n\t0x958: 0x137f, 0x959: 0x1383, 0x95a: 0x13af, 0x95b: 0x13b3, 0x95c: 0x13bb, 0x95d: 0x13cf,\n\t0x95e: 0x13d3, 0x95f: 0x13ef, 0x960: 0x13f7, 0x961: 0x13fb, 0x962: 0x141f, 0x963: 0x143f,\n\t0x964: 0x1453, 0x965: 0x1457, 0x966: 0x145f, 0x967: 0x148b, 0x968: 0x148f, 0x969: 0x149f,\n\t0x96a: 0x14c3, 0x96b: 0x14cf, 0x96c: 0x14df, 0x96d: 0x14f7, 0x96e: 0x14ff, 0x96f: 0x1503,\n\t0x970: 0x1507, 0x971: 0x150b, 0x972: 0x1517, 0x973: 0x151b, 0x974: 0x1523, 0x975: 0x153f,\n\t0x976: 0x1543, 0x977: 0x1547, 0x978: 0x155f, 0x979: 0x1563, 0x97a: 0x156b, 0x97b: 0x157f,\n\t0x97c: 0x1583, 0x97d: 0x1587, 0x97e: 0x158f, 0x97f: 0x1593,\n\t// Block 0x26, offset 0x980\n\t0x986: 0xa000, 0x98b: 0xa000,\n\t0x98c: 0x3f0b, 0x98d: 0xa000, 0x98e: 0x3f13, 0x98f: 0xa000, 0x990: 0x3f1b, 0x991: 0xa000,\n\t0x992: 0x3f23, 0x993: 0xa000, 0x994: 0x3f2b, 0x995: 0xa000, 0x996: 0x3f33, 0x997: 0xa000,\n\t0x998: 0x3f3b, 0x999: 0xa000, 0x99a: 0x3f43, 0x99b: 0xa000, 0x99c: 0x3f4b, 0x99d: 0xa000,\n\t0x99e: 0x3f53, 0x99f: 0xa000, 0x9a0: 0x3f5b, 0x9a1: 0xa000, 0x9a2: 0x3f63,\n\t0x9a4: 0xa000, 0x9a5: 0x3f6b, 0x9a6: 0xa000, 0x9a7: 0x3f73, 0x9a8: 0xa000, 0x9a9: 0x3f7b,\n\t0x9af: 0xa000,\n\t0x9b0: 0x3f83, 0x9b1: 0x3f8b, 0x9b2: 0xa000, 0x9b3: 0x3f93, 0x9b4: 0x3f9b, 0x9b5: 0xa000,\n\t0x9b6: 0x3fa3, 0x9b7: 0x3fab, 0x9b8: 0xa000, 0x9b9: 0x3fb3, 0x9ba: 0x3fbb, 0x9bb: 0xa000,\n\t0x9bc: 0x3fc3, 0x9bd: 0x3fcb,\n\t// Block 0x27, offset 0x9c0\n\t0x9d4: 0x3f03,\n\t0x9d9: 0x9903, 0x9da: 0x9903, 0x9db: 0x42df, 0x9dc: 0x42e5, 0x9dd: 0xa000,\n\t0x9de: 0x3fd3, 0x9df: 0x26b7,\n\t0x9e6: 0xa000,\n\t0x9eb: 0xa000, 0x9ec: 0x3fe3, 0x9ed: 0xa000, 0x9ee: 0x3feb, 0x9ef: 0xa000,\n\t0x9f0: 0x3ff3, 0x9f1: 0xa000, 0x9f2: 0x3ffb, 0x9f3: 0xa000, 0x9f4: 0x4003, 0x9f5: 0xa000,\n\t0x9f6: 0x400b, 0x9f7: 0xa000, 0x9f8: 0x4013, 0x9f9: 0xa000, 0x9fa: 0x401b, 0x9fb: 0xa000,\n\t0x9fc: 0x4023, 0x9fd: 0xa000, 0x9fe: 0x402b, 0x9ff: 0xa000,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x4033, 0xa01: 0xa000, 0xa02: 0x403b, 0xa04: 0xa000, 0xa05: 0x4043,\n\t0xa06: 0xa000, 0xa07: 0x404b, 0xa08: 0xa000, 0xa09: 0x4053,\n\t0xa0f: 0xa000, 0xa10: 0x405b, 0xa11: 0x4063,\n\t0xa12: 0xa000, 0xa13: 0x406b, 0xa14: 0x4073, 0xa15: 0xa000, 0xa16: 0x407b, 0xa17: 0x4083,\n\t0xa18: 0xa000, 0xa19: 0x408b, 0xa1a: 0x4093, 0xa1b: 0xa000, 0xa1c: 0x409b, 0xa1d: 0x40a3,\n\t0xa2f: 0xa000,\n\t0xa30: 0xa000, 0xa31: 0xa000, 0xa32: 0xa000, 0xa34: 0x3fdb,\n\t0xa37: 0x40ab, 0xa38: 0x40b3, 0xa39: 0x40bb, 0xa3a: 0x40c3,\n\t0xa3d: 0xa000, 0xa3e: 0x40cb, 0xa3f: 0x26cc,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0367, 0xa41: 0x032b, 0xa42: 0x032f, 0xa43: 0x0333, 0xa44: 0x037b, 0xa45: 0x0337,\n\t0xa46: 0x033b, 0xa47: 0x033f, 0xa48: 0x0343, 0xa49: 0x0347, 0xa4a: 0x034b, 0xa4b: 0x034f,\n\t0xa4c: 0x0353, 0xa4d: 0x0357, 0xa4e: 0x035b, 0xa4f: 0x49c0, 0xa50: 0x49c6, 0xa51: 0x49cc,\n\t0xa52: 0x49d2, 0xa53: 0x49d8, 0xa54: 0x49de, 0xa55: 0x49e4, 0xa56: 0x49ea, 0xa57: 0x49f0,\n\t0xa58: 0x49f6, 0xa59: 0x49fc, 0xa5a: 0x4a02, 0xa5b: 0x4a08, 0xa5c: 0x4a0e, 0xa5d: 0x4a14,\n\t0xa5e: 0x4a1a, 0xa5f: 0x4a20, 0xa60: 0x4a26, 0xa61: 0x4a2c, 0xa62: 0x4a32, 0xa63: 0x4a38,\n\t0xa64: 0x03c3, 0xa65: 0x035f, 0xa66: 0x0363, 0xa67: 0x03e7, 0xa68: 0x03eb, 0xa69: 0x03ef,\n\t0xa6a: 0x03f3, 0xa6b: 0x03f7, 0xa6c: 0x03fb, 0xa6d: 0x03ff, 0xa6e: 0x036b, 0xa6f: 0x0403,\n\t0xa70: 0x0407, 0xa71: 0x036f, 0xa72: 0x0373, 0xa73: 0x0377, 0xa74: 0x037f, 0xa75: 0x0383,\n\t0xa76: 0x0387, 0xa77: 0x038b, 0xa78: 0x038f, 0xa79: 0x0393, 0xa7a: 0x0397, 0xa7b: 0x039b,\n\t0xa7c: 0x039f, 0xa7d: 0x03a3, 0xa7e: 0x03a7, 0xa7f: 0x03ab,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x03af, 0xa81: 0x03b3, 0xa82: 0x040b, 0xa83: 0x040f, 0xa84: 0x03b7, 0xa85: 0x03bb,\n\t0xa86: 0x03bf, 0xa87: 0x03c7, 0xa88: 0x03cb, 0xa89: 0x03cf, 0xa8a: 0x03d3, 0xa8b: 0x03d7,\n\t0xa8c: 0x03db, 0xa8d: 0x03df, 0xa8e: 0x03e3,\n\t0xa92: 0x06bf, 0xa93: 0x071b, 0xa94: 0x06cb, 0xa95: 0x097b, 0xa96: 0x06cf, 0xa97: 0x06e7,\n\t0xa98: 0x06d3, 0xa99: 0x0f93, 0xa9a: 0x0707, 0xa9b: 0x06db, 0xa9c: 0x06c3, 0xa9d: 0x09ff,\n\t0xa9e: 0x098f, 0xa9f: 0x072f,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x2057, 0xac1: 0x205d, 0xac2: 0x2063, 0xac3: 0x2069, 0xac4: 0x206f, 0xac5: 0x2075,\n\t0xac6: 0x207b, 0xac7: 0x2081, 0xac8: 0x2087, 0xac9: 0x208d, 0xaca: 0x2093, 0xacb: 0x2099,\n\t0xacc: 0x209f, 0xacd: 0x20a5, 0xace: 0x2729, 0xacf: 0x2732, 0xad0: 0x273b, 0xad1: 0x2744,\n\t0xad2: 0x274d, 0xad3: 0x2756, 0xad4: 0x275f, 0xad5: 0x2768, 0xad6: 0x2771, 0xad7: 0x2783,\n\t0xad8: 0x278c, 0xad9: 0x2795, 0xada: 0x279e, 0xadb: 0x27a7, 0xadc: 0x277a, 0xadd: 0x2baf,\n\t0xade: 0x2af0, 0xae0: 0x20ab, 0xae1: 0x20c3, 0xae2: 0x20b7, 0xae3: 0x210b,\n\t0xae4: 0x20c9, 0xae5: 0x20e7, 0xae6: 0x20b1, 0xae7: 0x20e1, 0xae8: 0x20bd, 0xae9: 0x20f3,\n\t0xaea: 0x2123, 0xaeb: 0x2141, 0xaec: 0x213b, 0xaed: 0x212f, 0xaee: 0x217d, 0xaef: 0x2111,\n\t0xaf0: 0x211d, 0xaf1: 0x2135, 0xaf2: 0x2129, 0xaf3: 0x2153, 0xaf4: 0x20ff, 0xaf5: 0x2147,\n\t0xaf6: 0x2171, 0xaf7: 0x2159, 0xaf8: 0x20ed, 0xaf9: 0x20cf, 0xafa: 0x2105, 0xafb: 0x2117,\n\t0xafc: 0x214d, 0xafd: 0x20d5, 0xafe: 0x2177, 0xaff: 0x20f9,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x215f, 0xb01: 0x20db, 0xb02: 0x2165, 0xb03: 0x216b, 0xb04: 0x092f, 0xb05: 0x0b03,\n\t0xb06: 0x0ca7, 0xb07: 0x10c7,\n\t0xb10: 0x1bc7, 0xb11: 0x18a9,\n\t0xb12: 0x18ac, 0xb13: 0x18af, 0xb14: 0x18b2, 0xb15: 0x18b5, 0xb16: 0x18b8, 0xb17: 0x18bb,\n\t0xb18: 0x18be, 0xb19: 0x18c1, 0xb1a: 0x18ca, 0xb1b: 0x18cd, 0xb1c: 0x18d0, 0xb1d: 0x18d3,\n\t0xb1e: 0x18d6, 0xb1f: 0x18d9, 0xb20: 0x0313, 0xb21: 0x031b, 0xb22: 0x031f, 0xb23: 0x0327,\n\t0xb24: 0x032b, 0xb25: 0x032f, 0xb26: 0x0337, 0xb27: 0x033f, 0xb28: 0x0343, 0xb29: 0x034b,\n\t0xb2a: 0x034f, 0xb2b: 0x0353, 0xb2c: 0x0357, 0xb2d: 0x035b, 0xb2e: 0x2e1b, 0xb2f: 0x2e23,\n\t0xb30: 0x2e2b, 0xb31: 0x2e33, 0xb32: 0x2e3b, 0xb33: 0x2e43, 0xb34: 0x2e4b, 0xb35: 0x2e53,\n\t0xb36: 0x2e63, 0xb37: 0x2e6b, 0xb38: 0x2e73, 0xb39: 0x2e7b, 0xb3a: 0x2e83, 0xb3b: 0x2e8b,\n\t0xb3c: 0x2ed6, 0xb3d: 0x2e9e, 0xb3e: 0x2e5b,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x06bf, 0xb41: 0x071b, 0xb42: 0x06cb, 0xb43: 0x097b, 0xb44: 0x071f, 0xb45: 0x07af,\n\t0xb46: 0x06c7, 0xb47: 0x07ab, 0xb48: 0x070b, 0xb49: 0x0887, 0xb4a: 0x0d07, 0xb4b: 0x0e8f,\n\t0xb4c: 0x0dd7, 0xb4d: 0x0d1b, 0xb4e: 0x145f, 0xb4f: 0x098b, 0xb50: 0x0ccf, 0xb51: 0x0d4b,\n\t0xb52: 0x0d0b, 0xb53: 0x104b, 0xb54: 0x08fb, 0xb55: 0x0f03, 0xb56: 0x1387, 0xb57: 0x105f,\n\t0xb58: 0x0843, 0xb59: 0x108f, 0xb5a: 0x0f9b, 0xb5b: 0x0a17, 0xb5c: 0x140f, 0xb5d: 0x077f,\n\t0xb5e: 0x08ab, 0xb5f: 0x0df7, 0xb60: 0x1527, 0xb61: 0x0743, 0xb62: 0x07d3, 0xb63: 0x0d9b,\n\t0xb64: 0x06cf, 0xb65: 0x06e7, 0xb66: 0x06d3, 0xb67: 0x0adb, 0xb68: 0x08ef, 0xb69: 0x087f,\n\t0xb6a: 0x0a57, 0xb6b: 0x0a4b, 0xb6c: 0x0feb, 0xb6d: 0x073f, 0xb6e: 0x139b, 0xb6f: 0x089b,\n\t0xb70: 0x09f3, 0xb71: 0x18dc, 0xb72: 0x18df, 0xb73: 0x18e2, 0xb74: 0x18e5, 0xb75: 0x18ee,\n\t0xb76: 0x18f1, 0xb77: 0x18f4, 0xb78: 0x18f7, 0xb79: 0x18fa, 0xb7a: 0x18fd, 0xb7b: 0x1900,\n\t0xb7c: 0x1903, 0xb7d: 0x1906, 0xb7e: 0x1909, 0xb7f: 0x1912,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x1cc9, 0xb81: 0x1cd8, 0xb82: 0x1ce7, 0xb83: 0x1cf6, 0xb84: 0x1d05, 0xb85: 0x1d14,\n\t0xb86: 0x1d23, 0xb87: 0x1d32, 0xb88: 0x1d41, 0xb89: 0x218f, 0xb8a: 0x21a1, 0xb8b: 0x21b3,\n\t0xb8c: 0x1954, 0xb8d: 0x1c07, 0xb8e: 0x19d5, 0xb8f: 0x1bab, 0xb90: 0x04cb, 0xb91: 0x04d3,\n\t0xb92: 0x04db, 0xb93: 0x04e3, 0xb94: 0x04eb, 0xb95: 0x04ef, 0xb96: 0x04f3, 0xb97: 0x04f7,\n\t0xb98: 0x04fb, 0xb99: 0x04ff, 0xb9a: 0x0503, 0xb9b: 0x0507, 0xb9c: 0x050b, 0xb9d: 0x050f,\n\t0xb9e: 0x0513, 0xb9f: 0x0517, 0xba0: 0x051b, 0xba1: 0x0523, 0xba2: 0x0527, 0xba3: 0x052b,\n\t0xba4: 0x052f, 0xba5: 0x0533, 0xba6: 0x0537, 0xba7: 0x053b, 0xba8: 0x053f, 0xba9: 0x0543,\n\t0xbaa: 0x0547, 0xbab: 0x054b, 0xbac: 0x054f, 0xbad: 0x0553, 0xbae: 0x0557, 0xbaf: 0x055b,\n\t0xbb0: 0x055f, 0xbb1: 0x0563, 0xbb2: 0x0567, 0xbb3: 0x056f, 0xbb4: 0x0577, 0xbb5: 0x057f,\n\t0xbb6: 0x0583, 0xbb7: 0x0587, 0xbb8: 0x058b, 0xbb9: 0x058f, 0xbba: 0x0593, 0xbbb: 0x0597,\n\t0xbbc: 0x059b, 0xbbd: 0x059f, 0xbbe: 0x05a3,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x2b0f, 0xbc1: 0x29ab, 0xbc2: 0x2b1f, 0xbc3: 0x2883, 0xbc4: 0x2ee7, 0xbc5: 0x288d,\n\t0xbc6: 0x2897, 0xbc7: 0x2f2b, 0xbc8: 0x29b8, 0xbc9: 0x28a1, 0xbca: 0x28ab, 0xbcb: 0x28b5,\n\t0xbcc: 0x29df, 0xbcd: 0x29ec, 0xbce: 0x29c5, 0xbcf: 0x29d2, 0xbd0: 0x2eac, 0xbd1: 0x29f9,\n\t0xbd2: 0x2a06, 0xbd3: 0x2bc1, 0xbd4: 0x26be, 0xbd5: 0x2bd4, 0xbd6: 0x2be7, 0xbd7: 0x2b2f,\n\t0xbd8: 0x2a13, 0xbd9: 0x2bfa, 0xbda: 0x2c0d, 0xbdb: 0x2a20, 0xbdc: 0x28bf, 0xbdd: 0x28c9,\n\t0xbde: 0x2eba, 0xbdf: 0x2a2d, 0xbe0: 0x2b3f, 0xbe1: 0x2ef8, 0xbe2: 0x28d3, 0xbe3: 0x28dd,\n\t0xbe4: 0x2a3a, 0xbe5: 0x28e7, 0xbe6: 0x28f1, 0xbe7: 0x26d3, 0xbe8: 0x26da, 0xbe9: 0x28fb,\n\t0xbea: 0x2905, 0xbeb: 0x2c20, 0xbec: 0x2a47, 0xbed: 0x2b4f, 0xbee: 0x2c33, 0xbef: 0x2a54,\n\t0xbf0: 0x2919, 0xbf1: 0x290f, 0xbf2: 0x2f3f, 0xbf3: 0x2a61, 0xbf4: 0x2c46, 0xbf5: 0x2923,\n\t0xbf6: 0x2b5f, 0xbf7: 0x292d, 0xbf8: 0x2a7b, 0xbf9: 0x2937, 0xbfa: 0x2a88, 0xbfb: 0x2f09,\n\t0xbfc: 0x2a6e, 0xbfd: 0x2b6f, 0xbfe: 0x2a95, 0xbff: 0x26e1,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x2f1a, 0xc01: 0x2941, 0xc02: 0x294b, 0xc03: 0x2aa2, 0xc04: 0x2955, 0xc05: 0x295f,\n\t0xc06: 0x2969, 0xc07: 0x2b7f, 0xc08: 0x2aaf, 0xc09: 0x26e8, 0xc0a: 0x2c59, 0xc0b: 0x2e93,\n\t0xc0c: 0x2b8f, 0xc0d: 0x2abc, 0xc0e: 0x2ec8, 0xc0f: 0x2973, 0xc10: 0x297d, 0xc11: 0x2ac9,\n\t0xc12: 0x26ef, 0xc13: 0x2ad6, 0xc14: 0x2b9f, 0xc15: 0x26f6, 0xc16: 0x2c6c, 0xc17: 0x2987,\n\t0xc18: 0x1cba, 0xc19: 0x1cce, 0xc1a: 0x1cdd, 0xc1b: 0x1cec, 0xc1c: 0x1cfb, 0xc1d: 0x1d0a,\n\t0xc1e: 0x1d19, 0xc1f: 0x1d28, 0xc20: 0x1d37, 0xc21: 0x1d46, 0xc22: 0x2195, 0xc23: 0x21a7,\n\t0xc24: 0x21b9, 0xc25: 0x21c5, 0xc26: 0x21d1, 0xc27: 0x21dd, 0xc28: 0x21e9, 0xc29: 0x21f5,\n\t0xc2a: 0x2201, 0xc2b: 0x220d, 0xc2c: 0x2249, 0xc2d: 0x2255, 0xc2e: 0x2261, 0xc2f: 0x226d,\n\t0xc30: 0x2279, 0xc31: 0x1c17, 0xc32: 0x19c9, 0xc33: 0x1936, 0xc34: 0x1be7, 0xc35: 0x1a4a,\n\t0xc36: 0x1a59, 0xc37: 0x19cf, 0xc38: 0x1bff, 0xc39: 0x1c03, 0xc3a: 0x1960, 0xc3b: 0x2704,\n\t0xc3c: 0x2712, 0xc3d: 0x26fd, 0xc3e: 0x270b, 0xc3f: 0x2ae3,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1a4d, 0xc41: 0x1a35, 0xc42: 0x1c63, 0xc43: 0x1a1d, 0xc44: 0x19f6, 0xc45: 0x1969,\n\t0xc46: 0x1978, 0xc47: 0x1948, 0xc48: 0x1bf3, 0xc49: 0x1d55, 0xc4a: 0x1a50, 0xc4b: 0x1a38,\n\t0xc4c: 0x1c67, 0xc4d: 0x1c73, 0xc4e: 0x1a29, 0xc4f: 0x19ff, 0xc50: 0x1957, 0xc51: 0x1c1f,\n\t0xc52: 0x1bb3, 0xc53: 0x1b9f, 0xc54: 0x1bcf, 0xc55: 0x1c77, 0xc56: 0x1a2c, 0xc57: 0x19cc,\n\t0xc58: 0x1a02, 0xc59: 0x19e1, 0xc5a: 0x1a44, 0xc5b: 0x1c7b, 0xc5c: 0x1a2f, 0xc5d: 0x19c3,\n\t0xc5e: 0x1a05, 0xc5f: 0x1c3f, 0xc60: 0x1bf7, 0xc61: 0x1a17, 0xc62: 0x1c27, 0xc63: 0x1c43,\n\t0xc64: 0x1bfb, 0xc65: 0x1a1a, 0xc66: 0x1c2b, 0xc67: 0x22eb, 0xc68: 0x22ff, 0xc69: 0x1999,\n\t0xc6a: 0x1c23, 0xc6b: 0x1bb7, 0xc6c: 0x1ba3, 0xc6d: 0x1c4b, 0xc6e: 0x2719, 0xc6f: 0x27b0,\n\t0xc70: 0x1a5c, 0xc71: 0x1a47, 0xc72: 0x1c7f, 0xc73: 0x1a32, 0xc74: 0x1a53, 0xc75: 0x1a3b,\n\t0xc76: 0x1c6b, 0xc77: 0x1a20, 0xc78: 0x19f9, 0xc79: 0x1984, 0xc7a: 0x1a56, 0xc7b: 0x1a3e,\n\t0xc7c: 0x1c6f, 0xc7d: 0x1a23, 0xc7e: 0x19fc, 0xc7f: 0x1987,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x1c2f, 0xc81: 0x1bbb, 0xc82: 0x1d50, 0xc83: 0x1939, 0xc84: 0x19bd, 0xc85: 0x19c0,\n\t0xc86: 0x22f8, 0xc87: 0x1b97, 0xc88: 0x19c6, 0xc89: 0x194b, 0xc8a: 0x19e4, 0xc8b: 0x194e,\n\t0xc8c: 0x19ed, 0xc8d: 0x196c, 0xc8e: 0x196f, 0xc8f: 0x1a08, 0xc90: 0x1a0e, 0xc91: 0x1a11,\n\t0xc92: 0x1c33, 0xc93: 0x1a14, 0xc94: 0x1a26, 0xc95: 0x1c3b, 0xc96: 0x1c47, 0xc97: 0x1993,\n\t0xc98: 0x1d5a, 0xc99: 0x1bbf, 0xc9a: 0x1996, 0xc9b: 0x1a5f, 0xc9c: 0x19a8, 0xc9d: 0x19b7,\n\t0xc9e: 0x22e5, 0xc9f: 0x22df, 0xca0: 0x1cc4, 0xca1: 0x1cd3, 0xca2: 0x1ce2, 0xca3: 0x1cf1,\n\t0xca4: 0x1d00, 0xca5: 0x1d0f, 0xca6: 0x1d1e, 0xca7: 0x1d2d, 0xca8: 0x1d3c, 0xca9: 0x2189,\n\t0xcaa: 0x219b, 0xcab: 0x21ad, 0xcac: 0x21bf, 0xcad: 0x21cb, 0xcae: 0x21d7, 0xcaf: 0x21e3,\n\t0xcb0: 0x21ef, 0xcb1: 0x21fb, 0xcb2: 0x2207, 0xcb3: 0x2243, 0xcb4: 0x224f, 0xcb5: 0x225b,\n\t0xcb6: 0x2267, 0xcb7: 0x2273, 0xcb8: 0x227f, 0xcb9: 0x2285, 0xcba: 0x228b, 0xcbb: 0x2291,\n\t0xcbc: 0x2297, 0xcbd: 0x22a9, 0xcbe: 0x22af, 0xcbf: 0x1c13,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x1377, 0xcc1: 0x0cfb, 0xcc2: 0x13d3, 0xcc3: 0x139f, 0xcc4: 0x0e57, 0xcc5: 0x06eb,\n\t0xcc6: 0x08df, 0xcc7: 0x162b, 0xcc8: 0x162b, 0xcc9: 0x0a0b, 0xcca: 0x145f, 0xccb: 0x0943,\n\t0xccc: 0x0a07, 0xccd: 0x0bef, 0xcce: 0x0fcf, 0xccf: 0x115f, 0xcd0: 0x1297, 0xcd1: 0x12d3,\n\t0xcd2: 0x1307, 0xcd3: 0x141b, 0xcd4: 0x0d73, 0xcd5: 0x0dff, 0xcd6: 0x0eab, 0xcd7: 0x0f43,\n\t0xcd8: 0x125f, 0xcd9: 0x1447, 0xcda: 0x1573, 0xcdb: 0x070f, 0xcdc: 0x08b3, 0xcdd: 0x0d87,\n\t0xcde: 0x0ecf, 0xcdf: 0x1293, 0xce0: 0x15c3, 0xce1: 0x0ab3, 0xce2: 0x0e77, 0xce3: 0x1283,\n\t0xce4: 0x1317, 0xce5: 0x0c23, 0xce6: 0x11bb, 0xce7: 0x12df, 0xce8: 0x0b1f, 0xce9: 0x0d0f,\n\t0xcea: 0x0e17, 0xceb: 0x0f1b, 0xcec: 0x1427, 0xced: 0x074f, 0xcee: 0x07e7, 0xcef: 0x0853,\n\t0xcf0: 0x0c8b, 0xcf1: 0x0d7f, 0xcf2: 0x0ecb, 0xcf3: 0x0fef, 0xcf4: 0x1177, 0xcf5: 0x128b,\n\t0xcf6: 0x12a3, 0xcf7: 0x13c7, 0xcf8: 0x14ef, 0xcf9: 0x15a3, 0xcfa: 0x15bf, 0xcfb: 0x102b,\n\t0xcfc: 0x106b, 0xcfd: 0x1123, 0xcfe: 0x1243, 0xcff: 0x147b,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x15cb, 0xd01: 0x134b, 0xd02: 0x09c7, 0xd03: 0x0b3b, 0xd04: 0x10db, 0xd05: 0x119b,\n\t0xd06: 0x0eff, 0xd07: 0x1033, 0xd08: 0x1397, 0xd09: 0x14e7, 0xd0a: 0x09c3, 0xd0b: 0x0a8f,\n\t0xd0c: 0x0d77, 0xd0d: 0x0e2b, 0xd0e: 0x0e5f, 0xd0f: 0x1113, 0xd10: 0x113b, 0xd11: 0x14a7,\n\t0xd12: 0x084f, 0xd13: 0x11a7, 0xd14: 0x07f3, 0xd15: 0x07ef, 0xd16: 0x1097, 0xd17: 0x1127,\n\t0xd18: 0x125b, 0xd19: 0x14af, 0xd1a: 0x1367, 0xd1b: 0x0c27, 0xd1c: 0x0d73, 0xd1d: 0x1357,\n\t0xd1e: 0x06f7, 0xd1f: 0x0a63, 0xd20: 0x0b93, 0xd21: 0x0f2f, 0xd22: 0x0faf, 0xd23: 0x0873,\n\t0xd24: 0x103b, 0xd25: 0x075f, 0xd26: 0x0b77, 0xd27: 0x06d7, 0xd28: 0x0deb, 0xd29: 0x0ca3,\n\t0xd2a: 0x110f, 0xd2b: 0x08c7, 0xd2c: 0x09b3, 0xd2d: 0x0ffb, 0xd2e: 0x1263, 0xd2f: 0x133b,\n\t0xd30: 0x0db7, 0xd31: 0x13f7, 0xd32: 0x0de3, 0xd33: 0x0c37, 0xd34: 0x121b, 0xd35: 0x0c57,\n\t0xd36: 0x0fab, 0xd37: 0x072b, 0xd38: 0x07a7, 0xd39: 0x07eb, 0xd3a: 0x0d53, 0xd3b: 0x10fb,\n\t0xd3c: 0x11f3, 0xd3d: 0x1347, 0xd3e: 0x145b, 0xd3f: 0x085b,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x090f, 0xd41: 0x0a17, 0xd42: 0x0b2f, 0xd43: 0x0cbf, 0xd44: 0x0e7b, 0xd45: 0x103f,\n\t0xd46: 0x1497, 0xd47: 0x157b, 0xd48: 0x15cf, 0xd49: 0x15e7, 0xd4a: 0x0837, 0xd4b: 0x0cf3,\n\t0xd4c: 0x0da3, 0xd4d: 0x13eb, 0xd4e: 0x0afb, 0xd4f: 0x0bd7, 0xd50: 0x0bf3, 0xd51: 0x0c83,\n\t0xd52: 0x0e6b, 0xd53: 0x0eb7, 0xd54: 0x0f67, 0xd55: 0x108b, 0xd56: 0x112f, 0xd57: 0x1193,\n\t0xd58: 0x13db, 0xd59: 0x126b, 0xd5a: 0x1403, 0xd5b: 0x147f, 0xd5c: 0x080f, 0xd5d: 0x083b,\n\t0xd5e: 0x0923, 0xd5f: 0x0ea7, 0xd60: 0x12f3, 0xd61: 0x133b, 0xd62: 0x0b1b, 0xd63: 0x0b8b,\n\t0xd64: 0x0c4f, 0xd65: 0x0daf, 0xd66: 0x10d7, 0xd67: 0x0f23, 0xd68: 0x073b, 0xd69: 0x097f,\n\t0xd6a: 0x0a63, 0xd6b: 0x0ac7, 0xd6c: 0x0b97, 0xd6d: 0x0f3f, 0xd6e: 0x0f5b, 0xd6f: 0x116b,\n\t0xd70: 0x118b, 0xd71: 0x1463, 0xd72: 0x14e3, 0xd73: 0x14f3, 0xd74: 0x152f, 0xd75: 0x0753,\n\t0xd76: 0x107f, 0xd77: 0x144f, 0xd78: 0x14cb, 0xd79: 0x0baf, 0xd7a: 0x0717, 0xd7b: 0x0777,\n\t0xd7c: 0x0a67, 0xd7d: 0x0a87, 0xd7e: 0x0caf, 0xd7f: 0x0d73,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0ec3, 0xd81: 0x0fcb, 0xd82: 0x1277, 0xd83: 0x1417, 0xd84: 0x1623, 0xd85: 0x0ce3,\n\t0xd86: 0x14a3, 0xd87: 0x0833, 0xd88: 0x0d2f, 0xd89: 0x0d3b, 0xd8a: 0x0e0f, 0xd8b: 0x0e47,\n\t0xd8c: 0x0f4b, 0xd8d: 0x0fa7, 0xd8e: 0x1027, 0xd8f: 0x110b, 0xd90: 0x153b, 0xd91: 0x07af,\n\t0xd92: 0x0c03, 0xd93: 0x14b3, 0xd94: 0x0767, 0xd95: 0x0aab, 0xd96: 0x0e2f, 0xd97: 0x13df,\n\t0xd98: 0x0b67, 0xd99: 0x0bb7, 0xd9a: 0x0d43, 0xd9b: 0x0f2f, 0xd9c: 0x14bb, 0xd9d: 0x0817,\n\t0xd9e: 0x08ff, 0xd9f: 0x0a97, 0xda0: 0x0cd3, 0xda1: 0x0d1f, 0xda2: 0x0d5f, 0xda3: 0x0df3,\n\t0xda4: 0x0f47, 0xda5: 0x0fbb, 0xda6: 0x1157, 0xda7: 0x12f7, 0xda8: 0x1303, 0xda9: 0x1457,\n\t0xdaa: 0x14d7, 0xdab: 0x0883, 0xdac: 0x0e4b, 0xdad: 0x0903, 0xdae: 0x0ec7, 0xdaf: 0x0f6b,\n\t0xdb0: 0x1287, 0xdb1: 0x14bf, 0xdb2: 0x15ab, 0xdb3: 0x15d3, 0xdb4: 0x0d37, 0xdb5: 0x0e27,\n\t0xdb6: 0x11c3, 0xdb7: 0x10b7, 0xdb8: 0x10c3, 0xdb9: 0x10e7, 0xdba: 0x0f17, 0xdbb: 0x0e9f,\n\t0xdbc: 0x1363, 0xdbd: 0x0733, 0xdbe: 0x122b, 0xdbf: 0x081b,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x080b, 0xdc1: 0x0b0b, 0xdc2: 0x0c2b, 0xdc3: 0x10f3, 0xdc4: 0x0a53, 0xdc5: 0x0e03,\n\t0xdc6: 0x0cef, 0xdc7: 0x13e7, 0xdc8: 0x12e7, 0xdc9: 0x14ab, 0xdca: 0x1323, 0xdcb: 0x0b27,\n\t0xdcc: 0x0787, 0xdcd: 0x095b, 0xdd0: 0x09af,\n\t0xdd2: 0x0cdf, 0xdd5: 0x07f7, 0xdd6: 0x0f1f, 0xdd7: 0x0fe3,\n\t0xdd8: 0x1047, 0xdd9: 0x1063, 0xdda: 0x1067, 0xddb: 0x107b, 0xddc: 0x14fb, 0xddd: 0x10eb,\n\t0xdde: 0x116f, 0xde0: 0x128f, 0xde2: 0x1353,\n\t0xde5: 0x1407, 0xde6: 0x1433,\n\t0xdea: 0x154f, 0xdeb: 0x1553, 0xdec: 0x1557, 0xded: 0x15bb, 0xdee: 0x142b, 0xdef: 0x14c7,\n\t0xdf0: 0x0757, 0xdf1: 0x077b, 0xdf2: 0x078f, 0xdf3: 0x084b, 0xdf4: 0x0857, 0xdf5: 0x0897,\n\t0xdf6: 0x094b, 0xdf7: 0x0967, 0xdf8: 0x096f, 0xdf9: 0x09ab, 0xdfa: 0x09b7, 0xdfb: 0x0a93,\n\t0xdfc: 0x0a9b, 0xdfd: 0x0ba3, 0xdfe: 0x0bcb, 0xdff: 0x0bd3,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x0beb, 0xe01: 0x0c97, 0xe02: 0x0cc7, 0xe03: 0x0ce7, 0xe04: 0x0d57, 0xe05: 0x0e1b,\n\t0xe06: 0x0e37, 0xe07: 0x0e67, 0xe08: 0x0ebb, 0xe09: 0x0edb, 0xe0a: 0x0f4f, 0xe0b: 0x102f,\n\t0xe0c: 0x104b, 0xe0d: 0x1053, 0xe0e: 0x104f, 0xe0f: 0x1057, 0xe10: 0x105b, 0xe11: 0x105f,\n\t0xe12: 0x1073, 0xe13: 0x1077, 0xe14: 0x109b, 0xe15: 0x10af, 0xe16: 0x10cb, 0xe17: 0x112f,\n\t0xe18: 0x1137, 0xe19: 0x113f, 0xe1a: 0x1153, 0xe1b: 0x117b, 0xe1c: 0x11cb, 0xe1d: 0x11ff,\n\t0xe1e: 0x11ff, 0xe1f: 0x1267, 0xe20: 0x130f, 0xe21: 0x1327, 0xe22: 0x135b, 0xe23: 0x135f,\n\t0xe24: 0x13a3, 0xe25: 0x13a7, 0xe26: 0x13ff, 0xe27: 0x1407, 0xe28: 0x14db, 0xe29: 0x151f,\n\t0xe2a: 0x1537, 0xe2b: 0x0b9b, 0xe2c: 0x171e, 0xe2d: 0x11e3,\n\t0xe30: 0x06df, 0xe31: 0x07e3, 0xe32: 0x07a3, 0xe33: 0x074b, 0xe34: 0x078b, 0xe35: 0x07b7,\n\t0xe36: 0x0847, 0xe37: 0x0863, 0xe38: 0x094b, 0xe39: 0x0937, 0xe3a: 0x0947, 0xe3b: 0x0963,\n\t0xe3c: 0x09af, 0xe3d: 0x09bf, 0xe3e: 0x0a03, 0xe3f: 0x0a0f,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x0a2b, 0xe41: 0x0a3b, 0xe42: 0x0b23, 0xe43: 0x0b2b, 0xe44: 0x0b5b, 0xe45: 0x0b7b,\n\t0xe46: 0x0bab, 0xe47: 0x0bc3, 0xe48: 0x0bb3, 0xe49: 0x0bd3, 0xe4a: 0x0bc7, 0xe4b: 0x0beb,\n\t0xe4c: 0x0c07, 0xe4d: 0x0c5f, 0xe4e: 0x0c6b, 0xe4f: 0x0c73, 0xe50: 0x0c9b, 0xe51: 0x0cdf,\n\t0xe52: 0x0d0f, 0xe53: 0x0d13, 0xe54: 0x0d27, 0xe55: 0x0da7, 0xe56: 0x0db7, 0xe57: 0x0e0f,\n\t0xe58: 0x0e5b, 0xe59: 0x0e53, 0xe5a: 0x0e67, 0xe5b: 0x0e83, 0xe5c: 0x0ebb, 0xe5d: 0x1013,\n\t0xe5e: 0x0edf, 0xe5f: 0x0f13, 0xe60: 0x0f1f, 0xe61: 0x0f5f, 0xe62: 0x0f7b, 0xe63: 0x0f9f,\n\t0xe64: 0x0fc3, 0xe65: 0x0fc7, 0xe66: 0x0fe3, 0xe67: 0x0fe7, 0xe68: 0x0ff7, 0xe69: 0x100b,\n\t0xe6a: 0x1007, 0xe6b: 0x1037, 0xe6c: 0x10b3, 0xe6d: 0x10cb, 0xe6e: 0x10e3, 0xe6f: 0x111b,\n\t0xe70: 0x112f, 0xe71: 0x114b, 0xe72: 0x117b, 0xe73: 0x122f, 0xe74: 0x1257, 0xe75: 0x12cb,\n\t0xe76: 0x1313, 0xe77: 0x131f, 0xe78: 0x1327, 0xe79: 0x133f, 0xe7a: 0x1353, 0xe7b: 0x1343,\n\t0xe7c: 0x135b, 0xe7d: 0x1357, 0xe7e: 0x134f, 0xe7f: 0x135f,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x136b, 0xe81: 0x13a7, 0xe82: 0x13e3, 0xe83: 0x1413, 0xe84: 0x144b, 0xe85: 0x146b,\n\t0xe86: 0x14b7, 0xe87: 0x14db, 0xe88: 0x14fb, 0xe89: 0x150f, 0xe8a: 0x151f, 0xe8b: 0x152b,\n\t0xe8c: 0x1537, 0xe8d: 0x158b, 0xe8e: 0x162b, 0xe8f: 0x16b5, 0xe90: 0x16b0, 0xe91: 0x16e2,\n\t0xe92: 0x0607, 0xe93: 0x062f, 0xe94: 0x0633, 0xe95: 0x1764, 0xe96: 0x1791, 0xe97: 0x1809,\n\t0xe98: 0x1617, 0xe99: 0x1627,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x19d8, 0xec1: 0x19db, 0xec2: 0x19de, 0xec3: 0x1c0b, 0xec4: 0x1c0f, 0xec5: 0x1a62,\n\t0xec6: 0x1a62,\n\t0xed3: 0x1d78, 0xed4: 0x1d69, 0xed5: 0x1d6e, 0xed6: 0x1d7d, 0xed7: 0x1d73,\n\t0xedd: 0x4393,\n\t0xede: 0x8115, 0xedf: 0x4405, 0xee0: 0x022d, 0xee1: 0x0215, 0xee2: 0x021e, 0xee3: 0x0221,\n\t0xee4: 0x0224, 0xee5: 0x0227, 0xee6: 0x022a, 0xee7: 0x0230, 0xee8: 0x0233, 0xee9: 0x0017,\n\t0xeea: 0x43f3, 0xeeb: 0x43f9, 0xeec: 0x44f7, 0xeed: 0x44ff, 0xeee: 0x434b, 0xeef: 0x4351,\n\t0xef0: 0x4357, 0xef1: 0x435d, 0xef2: 0x4369, 0xef3: 0x436f, 0xef4: 0x4375, 0xef5: 0x4381,\n\t0xef6: 0x4387, 0xef8: 0x438d, 0xef9: 0x4399, 0xefa: 0x439f, 0xefb: 0x43a5,\n\t0xefc: 0x43b1, 0xefe: 0x43b7,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x43bd, 0xf01: 0x43c3, 0xf03: 0x43c9, 0xf04: 0x43cf,\n\t0xf06: 0x43db, 0xf07: 0x43e1, 0xf08: 0x43e7, 0xf09: 0x43ed, 0xf0a: 0x43ff, 0xf0b: 0x437b,\n\t0xf0c: 0x4363, 0xf0d: 0x43ab, 0xf0e: 0x43d5, 0xf0f: 0x1d82, 0xf10: 0x0299, 0xf11: 0x0299,\n\t0xf12: 0x02a2, 0xf13: 0x02a2, 0xf14: 0x02a2, 0xf15: 0x02a2, 0xf16: 0x02a5, 0xf17: 0x02a5,\n\t0xf18: 0x02a5, 0xf19: 0x02a5, 0xf1a: 0x02ab, 0xf1b: 0x02ab, 0xf1c: 0x02ab, 0xf1d: 0x02ab,\n\t0xf1e: 0x029f, 0xf1f: 0x029f, 0xf20: 0x029f, 0xf21: 0x029f, 0xf22: 0x02a8, 0xf23: 0x02a8,\n\t0xf24: 0x02a8, 0xf25: 0x02a8, 0xf26: 0x029c, 0xf27: 0x029c, 0xf28: 0x029c, 0xf29: 0x029c,\n\t0xf2a: 0x02cf, 0xf2b: 0x02cf, 0xf2c: 0x02cf, 0xf2d: 0x02cf, 0xf2e: 0x02d2, 0xf2f: 0x02d2,\n\t0xf30: 0x02d2, 0xf31: 0x02d2, 0xf32: 0x02b1, 0xf33: 0x02b1, 0xf34: 0x02b1, 0xf35: 0x02b1,\n\t0xf36: 0x02ae, 0xf37: 0x02ae, 0xf38: 0x02ae, 0xf39: 0x02ae, 0xf3a: 0x02b4, 0xf3b: 0x02b4,\n\t0xf3c: 0x02b4, 0xf3d: 0x02b4, 0xf3e: 0x02b7, 0xf3f: 0x02b7,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x02b7, 0xf41: 0x02b7, 0xf42: 0x02c0, 0xf43: 0x02c0, 0xf44: 0x02bd, 0xf45: 0x02bd,\n\t0xf46: 0x02c3, 0xf47: 0x02c3, 0xf48: 0x02ba, 0xf49: 0x02ba, 0xf4a: 0x02c9, 0xf4b: 0x02c9,\n\t0xf4c: 0x02c6, 0xf4d: 0x02c6, 0xf4e: 0x02d5, 0xf4f: 0x02d5, 0xf50: 0x02d5, 0xf51: 0x02d5,\n\t0xf52: 0x02db, 0xf53: 0x02db, 0xf54: 0x02db, 0xf55: 0x02db, 0xf56: 0x02e1, 0xf57: 0x02e1,\n\t0xf58: 0x02e1, 0xf59: 0x02e1, 0xf5a: 0x02de, 0xf5b: 0x02de, 0xf5c: 0x02de, 0xf5d: 0x02de,\n\t0xf5e: 0x02e4, 0xf5f: 0x02e4, 0xf60: 0x02e7, 0xf61: 0x02e7, 0xf62: 0x02e7, 0xf63: 0x02e7,\n\t0xf64: 0x4471, 0xf65: 0x4471, 0xf66: 0x02ed, 0xf67: 0x02ed, 0xf68: 0x02ed, 0xf69: 0x02ed,\n\t0xf6a: 0x02ea, 0xf6b: 0x02ea, 0xf6c: 0x02ea, 0xf6d: 0x02ea, 0xf6e: 0x0308, 0xf6f: 0x0308,\n\t0xf70: 0x446b, 0xf71: 0x446b,\n\t// Block 0x3e, offset 0xf80\n\t0xf93: 0x02d8, 0xf94: 0x02d8, 0xf95: 0x02d8, 0xf96: 0x02d8, 0xf97: 0x02f6,\n\t0xf98: 0x02f6, 0xf99: 0x02f3, 0xf9a: 0x02f3, 0xf9b: 0x02f9, 0xf9c: 0x02f9, 0xf9d: 0x2052,\n\t0xf9e: 0x02ff, 0xf9f: 0x02ff, 0xfa0: 0x02f0, 0xfa1: 0x02f0, 0xfa2: 0x02fc, 0xfa3: 0x02fc,\n\t0xfa4: 0x0305, 0xfa5: 0x0305, 0xfa6: 0x0305, 0xfa7: 0x0305, 0xfa8: 0x028d, 0xfa9: 0x028d,\n\t0xfaa: 0x25ad, 0xfab: 0x25ad, 0xfac: 0x261d, 0xfad: 0x261d, 0xfae: 0x25ec, 0xfaf: 0x25ec,\n\t0xfb0: 0x2608, 0xfb1: 0x2608, 0xfb2: 0x2601, 0xfb3: 0x2601, 0xfb4: 0x260f, 0xfb5: 0x260f,\n\t0xfb6: 0x2616, 0xfb7: 0x2616, 0xfb8: 0x2616, 0xfb9: 0x25f3, 0xfba: 0x25f3, 0xfbb: 0x25f3,\n\t0xfbc: 0x0302, 0xfbd: 0x0302, 0xfbe: 0x0302, 0xfbf: 0x0302,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x25b4, 0xfc1: 0x25bb, 0xfc2: 0x25d7, 0xfc3: 0x25f3, 0xfc4: 0x25fa, 0xfc5: 0x1d8c,\n\t0xfc6: 0x1d91, 0xfc7: 0x1d96, 0xfc8: 0x1da5, 0xfc9: 0x1db4, 0xfca: 0x1db9, 0xfcb: 0x1dbe,\n\t0xfcc: 0x1dc3, 0xfcd: 0x1dc8, 0xfce: 0x1dd7, 0xfcf: 0x1de6, 0xfd0: 0x1deb, 0xfd1: 0x1df0,\n\t0xfd2: 0x1dff, 0xfd3: 0x1e0e, 0xfd4: 0x1e13, 0xfd5: 0x1e18, 0xfd6: 0x1e1d, 0xfd7: 0x1e2c,\n\t0xfd8: 0x1e31, 0xfd9: 0x1e40, 0xfda: 0x1e45, 0xfdb: 0x1e4a, 0xfdc: 0x1e59, 0xfdd: 0x1e5e,\n\t0xfde: 0x1e63, 0xfdf: 0x1e6d, 0xfe0: 0x1ea9, 0xfe1: 0x1eb8, 0xfe2: 0x1ec7, 0xfe3: 0x1ecc,\n\t0xfe4: 0x1ed1, 0xfe5: 0x1edb, 0xfe6: 0x1eea, 0xfe7: 0x1eef, 0xfe8: 0x1efe, 0xfe9: 0x1f03,\n\t0xfea: 0x1f08, 0xfeb: 0x1f17, 0xfec: 0x1f1c, 0xfed: 0x1f2b, 0xfee: 0x1f30, 0xfef: 0x1f35,\n\t0xff0: 0x1f3a, 0xff1: 0x1f3f, 0xff2: 0x1f44, 0xff3: 0x1f49, 0xff4: 0x1f4e, 0xff5: 0x1f53,\n\t0xff6: 0x1f58, 0xff7: 0x1f5d, 0xff8: 0x1f62, 0xff9: 0x1f67, 0xffa: 0x1f6c, 0xffb: 0x1f71,\n\t0xffc: 0x1f76, 0xffd: 0x1f7b, 0xffe: 0x1f80, 0xfff: 0x1f8a,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x1f8f, 0x1001: 0x1f94, 0x1002: 0x1f99, 0x1003: 0x1fa3, 0x1004: 0x1fa8, 0x1005: 0x1fb2,\n\t0x1006: 0x1fb7, 0x1007: 0x1fbc, 0x1008: 0x1fc1, 0x1009: 0x1fc6, 0x100a: 0x1fcb, 0x100b: 0x1fd0,\n\t0x100c: 0x1fd5, 0x100d: 0x1fda, 0x100e: 0x1fe9, 0x100f: 0x1ff8, 0x1010: 0x1ffd, 0x1011: 0x2002,\n\t0x1012: 0x2007, 0x1013: 0x200c, 0x1014: 0x2011, 0x1015: 0x201b, 0x1016: 0x2020, 0x1017: 0x2025,\n\t0x1018: 0x2034, 0x1019: 0x2043, 0x101a: 0x2048, 0x101b: 0x4423, 0x101c: 0x4429, 0x101d: 0x445f,\n\t0x101e: 0x44b6, 0x101f: 0x44bd, 0x1020: 0x44c4, 0x1021: 0x44cb, 0x1022: 0x44d2, 0x1023: 0x44d9,\n\t0x1024: 0x25c9, 0x1025: 0x25d0, 0x1026: 0x25d7, 0x1027: 0x25de, 0x1028: 0x25f3, 0x1029: 0x25fa,\n\t0x102a: 0x1d9b, 0x102b: 0x1da0, 0x102c: 0x1da5, 0x102d: 0x1daa, 0x102e: 0x1db4, 0x102f: 0x1db9,\n\t0x1030: 0x1dcd, 0x1031: 0x1dd2, 0x1032: 0x1dd7, 0x1033: 0x1ddc, 0x1034: 0x1de6, 0x1035: 0x1deb,\n\t0x1036: 0x1df5, 0x1037: 0x1dfa, 0x1038: 0x1dff, 0x1039: 0x1e04, 0x103a: 0x1e0e, 0x103b: 0x1e13,\n\t0x103c: 0x1f3f, 0x103d: 0x1f44, 0x103e: 0x1f53, 0x103f: 0x1f58,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x1f5d, 0x1041: 0x1f71, 0x1042: 0x1f76, 0x1043: 0x1f7b, 0x1044: 0x1f80, 0x1045: 0x1f99,\n\t0x1046: 0x1fa3, 0x1047: 0x1fa8, 0x1048: 0x1fad, 0x1049: 0x1fc1, 0x104a: 0x1fdf, 0x104b: 0x1fe4,\n\t0x104c: 0x1fe9, 0x104d: 0x1fee, 0x104e: 0x1ff8, 0x104f: 0x1ffd, 0x1050: 0x445f, 0x1051: 0x202a,\n\t0x1052: 0x202f, 0x1053: 0x2034, 0x1054: 0x2039, 0x1055: 0x2043, 0x1056: 0x2048, 0x1057: 0x25b4,\n\t0x1058: 0x25bb, 0x1059: 0x25c2, 0x105a: 0x25d7, 0x105b: 0x25e5, 0x105c: 0x1d8c, 0x105d: 0x1d91,\n\t0x105e: 0x1d96, 0x105f: 0x1da5, 0x1060: 0x1daf, 0x1061: 0x1dbe, 0x1062: 0x1dc3, 0x1063: 0x1dc8,\n\t0x1064: 0x1dd7, 0x1065: 0x1de1, 0x1066: 0x1dff, 0x1067: 0x1e18, 0x1068: 0x1e1d, 0x1069: 0x1e2c,\n\t0x106a: 0x1e31, 0x106b: 0x1e40, 0x106c: 0x1e4a, 0x106d: 0x1e59, 0x106e: 0x1e5e, 0x106f: 0x1e63,\n\t0x1070: 0x1e6d, 0x1071: 0x1ea9, 0x1072: 0x1eae, 0x1073: 0x1eb8, 0x1074: 0x1ec7, 0x1075: 0x1ecc,\n\t0x1076: 0x1ed1, 0x1077: 0x1edb, 0x1078: 0x1eea, 0x1079: 0x1efe, 0x107a: 0x1f03, 0x107b: 0x1f08,\n\t0x107c: 0x1f17, 0x107d: 0x1f1c, 0x107e: 0x1f2b, 0x107f: 0x1f30,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x1f35, 0x1081: 0x1f3a, 0x1082: 0x1f49, 0x1083: 0x1f4e, 0x1084: 0x1f62, 0x1085: 0x1f67,\n\t0x1086: 0x1f6c, 0x1087: 0x1f71, 0x1088: 0x1f76, 0x1089: 0x1f8a, 0x108a: 0x1f8f, 0x108b: 0x1f94,\n\t0x108c: 0x1f99, 0x108d: 0x1f9e, 0x108e: 0x1fb2, 0x108f: 0x1fb7, 0x1090: 0x1fbc, 0x1091: 0x1fc1,\n\t0x1092: 0x1fd0, 0x1093: 0x1fd5, 0x1094: 0x1fda, 0x1095: 0x1fe9, 0x1096: 0x1ff3, 0x1097: 0x2002,\n\t0x1098: 0x2007, 0x1099: 0x4453, 0x109a: 0x201b, 0x109b: 0x2020, 0x109c: 0x2025, 0x109d: 0x2034,\n\t0x109e: 0x203e, 0x109f: 0x25d7, 0x10a0: 0x25e5, 0x10a1: 0x1da5, 0x10a2: 0x1daf, 0x10a3: 0x1dd7,\n\t0x10a4: 0x1de1, 0x10a5: 0x1dff, 0x10a6: 0x1e09, 0x10a7: 0x1e6d, 0x10a8: 0x1e72, 0x10a9: 0x1e95,\n\t0x10aa: 0x1e9a, 0x10ab: 0x1f71, 0x10ac: 0x1f76, 0x10ad: 0x1f99, 0x10ae: 0x1fe9, 0x10af: 0x1ff3,\n\t0x10b0: 0x2034, 0x10b1: 0x203e, 0x10b2: 0x4507, 0x10b3: 0x450f, 0x10b4: 0x4517, 0x10b5: 0x1ef4,\n\t0x10b6: 0x1ef9, 0x10b7: 0x1f0d, 0x10b8: 0x1f12, 0x10b9: 0x1f21, 0x10ba: 0x1f26, 0x10bb: 0x1e77,\n\t0x10bc: 0x1e7c, 0x10bd: 0x1e9f, 0x10be: 0x1ea4, 0x10bf: 0x1e36,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x1e3b, 0x10c1: 0x1e22, 0x10c2: 0x1e27, 0x10c3: 0x1e4f, 0x10c4: 0x1e54, 0x10c5: 0x1ebd,\n\t0x10c6: 0x1ec2, 0x10c7: 0x1ee0, 0x10c8: 0x1ee5, 0x10c9: 0x1e81, 0x10ca: 0x1e86, 0x10cb: 0x1e8b,\n\t0x10cc: 0x1e95, 0x10cd: 0x1e90, 0x10ce: 0x1e68, 0x10cf: 0x1eb3, 0x10d0: 0x1ed6, 0x10d1: 0x1ef4,\n\t0x10d2: 0x1ef9, 0x10d3: 0x1f0d, 0x10d4: 0x1f12, 0x10d5: 0x1f21, 0x10d6: 0x1f26, 0x10d7: 0x1e77,\n\t0x10d8: 0x1e7c, 0x10d9: 0x1e9f, 0x10da: 0x1ea4, 0x10db: 0x1e36, 0x10dc: 0x1e3b, 0x10dd: 0x1e22,\n\t0x10de: 0x1e27, 0x10df: 0x1e4f, 0x10e0: 0x1e54, 0x10e1: 0x1ebd, 0x10e2: 0x1ec2, 0x10e3: 0x1ee0,\n\t0x10e4: 0x1ee5, 0x10e5: 0x1e81, 0x10e6: 0x1e86, 0x10e7: 0x1e8b, 0x10e8: 0x1e95, 0x10e9: 0x1e90,\n\t0x10ea: 0x1e68, 0x10eb: 0x1eb3, 0x10ec: 0x1ed6, 0x10ed: 0x1e81, 0x10ee: 0x1e86, 0x10ef: 0x1e8b,\n\t0x10f0: 0x1e95, 0x10f1: 0x1e72, 0x10f2: 0x1e9a, 0x10f3: 0x1eef, 0x10f4: 0x1e59, 0x10f5: 0x1e5e,\n\t0x10f6: 0x1e63, 0x10f7: 0x1e81, 0x10f8: 0x1e86, 0x10f9: 0x1e8b, 0x10fa: 0x1eef, 0x10fb: 0x1efe,\n\t0x10fc: 0x440b, 0x10fd: 0x440b,\n\t// Block 0x44, offset 0x1100\n\t0x1110: 0x2314, 0x1111: 0x2329,\n\t0x1112: 0x2329, 0x1113: 0x2330, 0x1114: 0x2337, 0x1115: 0x234c, 0x1116: 0x2353, 0x1117: 0x235a,\n\t0x1118: 0x237d, 0x1119: 0x237d, 0x111a: 0x23a0, 0x111b: 0x2399, 0x111c: 0x23b5, 0x111d: 0x23a7,\n\t0x111e: 0x23ae, 0x111f: 0x23d1, 0x1120: 0x23d1, 0x1121: 0x23ca, 0x1122: 0x23d8, 0x1123: 0x23d8,\n\t0x1124: 0x2402, 0x1125: 0x2402, 0x1126: 0x241e, 0x1127: 0x23e6, 0x1128: 0x23e6, 0x1129: 0x23df,\n\t0x112a: 0x23f4, 0x112b: 0x23f4, 0x112c: 0x23fb, 0x112d: 0x23fb, 0x112e: 0x2425, 0x112f: 0x2433,\n\t0x1130: 0x2433, 0x1131: 0x243a, 0x1132: 0x243a, 0x1133: 0x2441, 0x1134: 0x2448, 0x1135: 0x244f,\n\t0x1136: 0x2456, 0x1137: 0x2456, 0x1138: 0x245d, 0x1139: 0x246b, 0x113a: 0x2479, 0x113b: 0x2472,\n\t0x113c: 0x2480, 0x113d: 0x2480, 0x113e: 0x2495, 0x113f: 0x249c,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0x24cd, 0x1141: 0x24db, 0x1142: 0x24d4, 0x1143: 0x24b8, 0x1144: 0x24b8, 0x1145: 0x24e2,\n\t0x1146: 0x24e2, 0x1147: 0x24e9, 0x1148: 0x24e9, 0x1149: 0x2513, 0x114a: 0x251a, 0x114b: 0x2521,\n\t0x114c: 0x24f7, 0x114d: 0x2505, 0x114e: 0x2528, 0x114f: 0x252f,\n\t0x1152: 0x24fe, 0x1153: 0x2583, 0x1154: 0x258a, 0x1155: 0x2560, 0x1156: 0x2567, 0x1157: 0x254b,\n\t0x1158: 0x254b, 0x1159: 0x2552, 0x115a: 0x257c, 0x115b: 0x2575, 0x115c: 0x259f, 0x115d: 0x259f,\n\t0x115e: 0x230d, 0x115f: 0x2322, 0x1160: 0x231b, 0x1161: 0x2345, 0x1162: 0x233e, 0x1163: 0x2368,\n\t0x1164: 0x2361, 0x1165: 0x238b, 0x1166: 0x236f, 0x1167: 0x2384, 0x1168: 0x23bc, 0x1169: 0x2409,\n\t0x116a: 0x23ed, 0x116b: 0x242c, 0x116c: 0x24c6, 0x116d: 0x24f0, 0x116e: 0x2598, 0x116f: 0x2591,\n\t0x1170: 0x25a6, 0x1171: 0x253d, 0x1172: 0x24a3, 0x1173: 0x256e, 0x1174: 0x2495, 0x1175: 0x24cd,\n\t0x1176: 0x2464, 0x1177: 0x24b1, 0x1178: 0x2544, 0x1179: 0x2536, 0x117a: 0x24bf, 0x117b: 0x24aa,\n\t0x117c: 0x24bf, 0x117d: 0x2544, 0x117e: 0x2376, 0x117f: 0x2392,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x250c, 0x1181: 0x2487, 0x1182: 0x2306, 0x1183: 0x24aa, 0x1184: 0x244f, 0x1185: 0x241e,\n\t0x1186: 0x23c3, 0x1187: 0x2559,\n\t0x11b0: 0x2417, 0x11b1: 0x248e, 0x11b2: 0x27c2, 0x11b3: 0x27b9, 0x11b4: 0x27ef, 0x11b5: 0x27dd,\n\t0x11b6: 0x27cb, 0x11b7: 0x27e6, 0x11b8: 0x27f8, 0x11b9: 0x2410, 0x11ba: 0x2c7f, 0x11bb: 0x2aff,\n\t0x11bc: 0x27d4,\n\t// Block 0x47, offset 0x11c0\n\t0x11d0: 0x0019, 0x11d1: 0x0483,\n\t0x11d2: 0x0487, 0x11d3: 0x0035, 0x11d4: 0x0037, 0x11d5: 0x0003, 0x11d6: 0x003f, 0x11d7: 0x04bf,\n\t0x11d8: 0x04c3, 0x11d9: 0x1b5f,\n\t0x11e0: 0x8132, 0x11e1: 0x8132, 0x11e2: 0x8132, 0x11e3: 0x8132,\n\t0x11e4: 0x8132, 0x11e5: 0x8132, 0x11e6: 0x8132, 0x11e7: 0x812d, 0x11e8: 0x812d, 0x11e9: 0x812d,\n\t0x11ea: 0x812d, 0x11eb: 0x812d, 0x11ec: 0x812d, 0x11ed: 0x812d, 0x11ee: 0x8132, 0x11ef: 0x8132,\n\t0x11f0: 0x1873, 0x11f1: 0x0443, 0x11f2: 0x043f, 0x11f3: 0x007f, 0x11f4: 0x007f, 0x11f5: 0x0011,\n\t0x11f6: 0x0013, 0x11f7: 0x00b7, 0x11f8: 0x00bb, 0x11f9: 0x04b7, 0x11fa: 0x04bb, 0x11fb: 0x04ab,\n\t0x11fc: 0x04af, 0x11fd: 0x0493, 0x11fe: 0x0497, 0x11ff: 0x048b,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x048f, 0x1201: 0x049b, 0x1202: 0x049f, 0x1203: 0x04a3, 0x1204: 0x04a7,\n\t0x1207: 0x0077, 0x1208: 0x007b, 0x1209: 0x426c, 0x120a: 0x426c, 0x120b: 0x426c,\n\t0x120c: 0x426c, 0x120d: 0x007f, 0x120e: 0x007f, 0x120f: 0x007f, 0x1210: 0x0019, 0x1211: 0x0483,\n\t0x1212: 0x001d, 0x1214: 0x0037, 0x1215: 0x0035, 0x1216: 0x003f, 0x1217: 0x0003,\n\t0x1218: 0x0443, 0x1219: 0x0011, 0x121a: 0x0013, 0x121b: 0x00b7, 0x121c: 0x00bb, 0x121d: 0x04b7,\n\t0x121e: 0x04bb, 0x121f: 0x0007, 0x1220: 0x000d, 0x1221: 0x0015, 0x1222: 0x0017, 0x1223: 0x001b,\n\t0x1224: 0x0039, 0x1225: 0x003d, 0x1226: 0x003b, 0x1228: 0x0079, 0x1229: 0x0009,\n\t0x122a: 0x000b, 0x122b: 0x0041,\n\t0x1230: 0x42ad, 0x1231: 0x442f, 0x1232: 0x42b2, 0x1234: 0x42b7,\n\t0x1236: 0x42bc, 0x1237: 0x4435, 0x1238: 0x42c1, 0x1239: 0x443b, 0x123a: 0x42c6, 0x123b: 0x4441,\n\t0x123c: 0x42cb, 0x123d: 0x4447, 0x123e: 0x42d0, 0x123f: 0x444d,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x0236, 0x1241: 0x4411, 0x1242: 0x4411, 0x1243: 0x4417, 0x1244: 0x4417, 0x1245: 0x4459,\n\t0x1246: 0x4459, 0x1247: 0x441d, 0x1248: 0x441d, 0x1249: 0x4465, 0x124a: 0x4465, 0x124b: 0x4465,\n\t0x124c: 0x4465, 0x124d: 0x0239, 0x124e: 0x0239, 0x124f: 0x023c, 0x1250: 0x023c, 0x1251: 0x023c,\n\t0x1252: 0x023c, 0x1253: 0x023f, 0x1254: 0x023f, 0x1255: 0x0242, 0x1256: 0x0242, 0x1257: 0x0242,\n\t0x1258: 0x0242, 0x1259: 0x0245, 0x125a: 0x0245, 0x125b: 0x0245, 0x125c: 0x0245, 0x125d: 0x0248,\n\t0x125e: 0x0248, 0x125f: 0x0248, 0x1260: 0x0248, 0x1261: 0x024b, 0x1262: 0x024b, 0x1263: 0x024b,\n\t0x1264: 0x024b, 0x1265: 0x024e, 0x1266: 0x024e, 0x1267: 0x024e, 0x1268: 0x024e, 0x1269: 0x0251,\n\t0x126a: 0x0251, 0x126b: 0x0254, 0x126c: 0x0254, 0x126d: 0x0257, 0x126e: 0x0257, 0x126f: 0x025a,\n\t0x1270: 0x025a, 0x1271: 0x025d, 0x1272: 0x025d, 0x1273: 0x025d, 0x1274: 0x025d, 0x1275: 0x0260,\n\t0x1276: 0x0260, 0x1277: 0x0260, 0x1278: 0x0260, 0x1279: 0x0263, 0x127a: 0x0263, 0x127b: 0x0263,\n\t0x127c: 0x0263, 0x127d: 0x0266, 0x127e: 0x0266, 0x127f: 0x0266,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x0266, 0x1281: 0x0269, 0x1282: 0x0269, 0x1283: 0x0269, 0x1284: 0x0269, 0x1285: 0x026c,\n\t0x1286: 0x026c, 0x1287: 0x026c, 0x1288: 0x026c, 0x1289: 0x026f, 0x128a: 0x026f, 0x128b: 0x026f,\n\t0x128c: 0x026f, 0x128d: 0x0272, 0x128e: 0x0272, 0x128f: 0x0272, 0x1290: 0x0272, 0x1291: 0x0275,\n\t0x1292: 0x0275, 0x1293: 0x0275, 0x1294: 0x0275, 0x1295: 0x0278, 0x1296: 0x0278, 0x1297: 0x0278,\n\t0x1298: 0x0278, 0x1299: 0x027b, 0x129a: 0x027b, 0x129b: 0x027b, 0x129c: 0x027b, 0x129d: 0x027e,\n\t0x129e: 0x027e, 0x129f: 0x027e, 0x12a0: 0x027e, 0x12a1: 0x0281, 0x12a2: 0x0281, 0x12a3: 0x0281,\n\t0x12a4: 0x0281, 0x12a5: 0x0284, 0x12a6: 0x0284, 0x12a7: 0x0284, 0x12a8: 0x0284, 0x12a9: 0x0287,\n\t0x12aa: 0x0287, 0x12ab: 0x0287, 0x12ac: 0x0287, 0x12ad: 0x028a, 0x12ae: 0x028a, 0x12af: 0x028d,\n\t0x12b0: 0x028d, 0x12b1: 0x0290, 0x12b2: 0x0290, 0x12b3: 0x0290, 0x12b4: 0x0290, 0x12b5: 0x2e03,\n\t0x12b6: 0x2e03, 0x12b7: 0x2e0b, 0x12b8: 0x2e0b, 0x12b9: 0x2e13, 0x12ba: 0x2e13, 0x12bb: 0x1f85,\n\t0x12bc: 0x1f85,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x0081, 0x12c1: 0x0083, 0x12c2: 0x0085, 0x12c3: 0x0087, 0x12c4: 0x0089, 0x12c5: 0x008b,\n\t0x12c6: 0x008d, 0x12c7: 0x008f, 0x12c8: 0x0091, 0x12c9: 0x0093, 0x12ca: 0x0095, 0x12cb: 0x0097,\n\t0x12cc: 0x0099, 0x12cd: 0x009b, 0x12ce: 0x009d, 0x12cf: 0x009f, 0x12d0: 0x00a1, 0x12d1: 0x00a3,\n\t0x12d2: 0x00a5, 0x12d3: 0x00a7, 0x12d4: 0x00a9, 0x12d5: 0x00ab, 0x12d6: 0x00ad, 0x12d7: 0x00af,\n\t0x12d8: 0x00b1, 0x12d9: 0x00b3, 0x12da: 0x00b5, 0x12db: 0x00b7, 0x12dc: 0x00b9, 0x12dd: 0x00bb,\n\t0x12de: 0x00bd, 0x12df: 0x0477, 0x12e0: 0x047b, 0x12e1: 0x0487, 0x12e2: 0x049b, 0x12e3: 0x049f,\n\t0x12e4: 0x0483, 0x12e5: 0x05ab, 0x12e6: 0x05a3, 0x12e7: 0x04c7, 0x12e8: 0x04cf, 0x12e9: 0x04d7,\n\t0x12ea: 0x04df, 0x12eb: 0x04e7, 0x12ec: 0x056b, 0x12ed: 0x0573, 0x12ee: 0x057b, 0x12ef: 0x051f,\n\t0x12f0: 0x05af, 0x12f1: 0x04cb, 0x12f2: 0x04d3, 0x12f3: 0x04db, 0x12f4: 0x04e3, 0x12f5: 0x04eb,\n\t0x12f6: 0x04ef, 0x12f7: 0x04f3, 0x12f8: 0x04f7, 0x12f9: 0x04fb, 0x12fa: 0x04ff, 0x12fb: 0x0503,\n\t0x12fc: 0x0507, 0x12fd: 0x050b, 0x12fe: 0x050f, 0x12ff: 0x0513,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x0517, 0x1301: 0x051b, 0x1302: 0x0523, 0x1303: 0x0527, 0x1304: 0x052b, 0x1305: 0x052f,\n\t0x1306: 0x0533, 0x1307: 0x0537, 0x1308: 0x053b, 0x1309: 0x053f, 0x130a: 0x0543, 0x130b: 0x0547,\n\t0x130c: 0x054b, 0x130d: 0x054f, 0x130e: 0x0553, 0x130f: 0x0557, 0x1310: 0x055b, 0x1311: 0x055f,\n\t0x1312: 0x0563, 0x1313: 0x0567, 0x1314: 0x056f, 0x1315: 0x0577, 0x1316: 0x057f, 0x1317: 0x0583,\n\t0x1318: 0x0587, 0x1319: 0x058b, 0x131a: 0x058f, 0x131b: 0x0593, 0x131c: 0x0597, 0x131d: 0x05a7,\n\t0x131e: 0x4a7b, 0x131f: 0x4a81, 0x1320: 0x03c3, 0x1321: 0x0313, 0x1322: 0x0317, 0x1323: 0x4a3e,\n\t0x1324: 0x031b, 0x1325: 0x4a44, 0x1326: 0x4a4a, 0x1327: 0x031f, 0x1328: 0x0323, 0x1329: 0x0327,\n\t0x132a: 0x4a50, 0x132b: 0x4a56, 0x132c: 0x4a5c, 0x132d: 0x4a62, 0x132e: 0x4a68, 0x132f: 0x4a6e,\n\t0x1330: 0x0367, 0x1331: 0x032b, 0x1332: 0x032f, 0x1333: 0x0333, 0x1334: 0x037b, 0x1335: 0x0337,\n\t0x1336: 0x033b, 0x1337: 0x033f, 0x1338: 0x0343, 0x1339: 0x0347, 0x133a: 0x034b, 0x133b: 0x034f,\n\t0x133c: 0x0353, 0x133d: 0x0357, 0x133e: 0x035b,\n\t// Block 0x4d, offset 0x1340\n\t0x1342: 0x49c0, 0x1343: 0x49c6, 0x1344: 0x49cc, 0x1345: 0x49d2,\n\t0x1346: 0x49d8, 0x1347: 0x49de, 0x134a: 0x49e4, 0x134b: 0x49ea,\n\t0x134c: 0x49f0, 0x134d: 0x49f6, 0x134e: 0x49fc, 0x134f: 0x4a02,\n\t0x1352: 0x4a08, 0x1353: 0x4a0e, 0x1354: 0x4a14, 0x1355: 0x4a1a, 0x1356: 0x4a20, 0x1357: 0x4a26,\n\t0x135a: 0x4a2c, 0x135b: 0x4a32, 0x135c: 0x4a38,\n\t0x1360: 0x00bf, 0x1361: 0x00c2, 0x1362: 0x00cb, 0x1363: 0x4267,\n\t0x1364: 0x00c8, 0x1365: 0x00c5, 0x1366: 0x0447, 0x1368: 0x046b, 0x1369: 0x044b,\n\t0x136a: 0x044f, 0x136b: 0x0453, 0x136c: 0x0457, 0x136d: 0x046f, 0x136e: 0x0473,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0063, 0x1381: 0x0065, 0x1382: 0x0067, 0x1383: 0x0069, 0x1384: 0x006b, 0x1385: 0x006d,\n\t0x1386: 0x006f, 0x1387: 0x0071, 0x1388: 0x0073, 0x1389: 0x0075, 0x138a: 0x0083, 0x138b: 0x0085,\n\t0x138c: 0x0087, 0x138d: 0x0089, 0x138e: 0x008b, 0x138f: 0x008d, 0x1390: 0x008f, 0x1391: 0x0091,\n\t0x1392: 0x0093, 0x1393: 0x0095, 0x1394: 0x0097, 0x1395: 0x0099, 0x1396: 0x009b, 0x1397: 0x009d,\n\t0x1398: 0x009f, 0x1399: 0x00a1, 0x139a: 0x00a3, 0x139b: 0x00a5, 0x139c: 0x00a7, 0x139d: 0x00a9,\n\t0x139e: 0x00ab, 0x139f: 0x00ad, 0x13a0: 0x00af, 0x13a1: 0x00b1, 0x13a2: 0x00b3, 0x13a3: 0x00b5,\n\t0x13a4: 0x00dd, 0x13a5: 0x00f2, 0x13a8: 0x0173, 0x13a9: 0x0176,\n\t0x13aa: 0x0179, 0x13ab: 0x017c, 0x13ac: 0x017f, 0x13ad: 0x0182, 0x13ae: 0x0185, 0x13af: 0x0188,\n\t0x13b0: 0x018b, 0x13b1: 0x018e, 0x13b2: 0x0191, 0x13b3: 0x0194, 0x13b4: 0x0197, 0x13b5: 0x019a,\n\t0x13b6: 0x019d, 0x13b7: 0x01a0, 0x13b8: 0x01a3, 0x13b9: 0x0188, 0x13ba: 0x01a6, 0x13bb: 0x01a9,\n\t0x13bc: 0x01ac, 0x13bd: 0x01af, 0x13be: 0x01b2, 0x13bf: 0x01b5,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x01fd, 0x13c1: 0x0200, 0x13c2: 0x0203, 0x13c3: 0x045b, 0x13c4: 0x01c7, 0x13c5: 0x01d0,\n\t0x13c6: 0x01d6, 0x13c7: 0x01fa, 0x13c8: 0x01eb, 0x13c9: 0x01e8, 0x13ca: 0x0206, 0x13cb: 0x0209,\n\t0x13ce: 0x0021, 0x13cf: 0x0023, 0x13d0: 0x0025, 0x13d1: 0x0027,\n\t0x13d2: 0x0029, 0x13d3: 0x002b, 0x13d4: 0x002d, 0x13d5: 0x002f, 0x13d6: 0x0031, 0x13d7: 0x0033,\n\t0x13d8: 0x0021, 0x13d9: 0x0023, 0x13da: 0x0025, 0x13db: 0x0027, 0x13dc: 0x0029, 0x13dd: 0x002b,\n\t0x13de: 0x002d, 0x13df: 0x002f, 0x13e0: 0x0031, 0x13e1: 0x0033, 0x13e2: 0x0021, 0x13e3: 0x0023,\n\t0x13e4: 0x0025, 0x13e5: 0x0027, 0x13e6: 0x0029, 0x13e7: 0x002b, 0x13e8: 0x002d, 0x13e9: 0x002f,\n\t0x13ea: 0x0031, 0x13eb: 0x0033, 0x13ec: 0x0021, 0x13ed: 0x0023, 0x13ee: 0x0025, 0x13ef: 0x0027,\n\t0x13f0: 0x0029, 0x13f1: 0x002b, 0x13f2: 0x002d, 0x13f3: 0x002f, 0x13f4: 0x0031, 0x13f5: 0x0033,\n\t0x13f6: 0x0021, 0x13f7: 0x0023, 0x13f8: 0x0025, 0x13f9: 0x0027, 0x13fa: 0x0029, 0x13fb: 0x002b,\n\t0x13fc: 0x002d, 0x13fd: 0x002f, 0x13fe: 0x0031, 0x13ff: 0x0033,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x0239, 0x1401: 0x023c, 0x1402: 0x0248, 0x1403: 0x0251, 0x1405: 0x028a,\n\t0x1406: 0x025a, 0x1407: 0x024b, 0x1408: 0x0269, 0x1409: 0x0290, 0x140a: 0x027b, 0x140b: 0x027e,\n\t0x140c: 0x0281, 0x140d: 0x0284, 0x140e: 0x025d, 0x140f: 0x026f, 0x1410: 0x0275, 0x1411: 0x0263,\n\t0x1412: 0x0278, 0x1413: 0x0257, 0x1414: 0x0260, 0x1415: 0x0242, 0x1416: 0x0245, 0x1417: 0x024e,\n\t0x1418: 0x0254, 0x1419: 0x0266, 0x141a: 0x026c, 0x141b: 0x0272, 0x141c: 0x0293, 0x141d: 0x02e4,\n\t0x141e: 0x02cc, 0x141f: 0x0296, 0x1421: 0x023c, 0x1422: 0x0248,\n\t0x1424: 0x0287, 0x1427: 0x024b, 0x1429: 0x0290,\n\t0x142a: 0x027b, 0x142b: 0x027e, 0x142c: 0x0281, 0x142d: 0x0284, 0x142e: 0x025d, 0x142f: 0x026f,\n\t0x1430: 0x0275, 0x1431: 0x0263, 0x1432: 0x0278, 0x1434: 0x0260, 0x1435: 0x0242,\n\t0x1436: 0x0245, 0x1437: 0x024e, 0x1439: 0x0266, 0x143b: 0x0272,\n\t// Block 0x51, offset 0x1440\n\t0x1442: 0x0248,\n\t0x1447: 0x024b, 0x1449: 0x0290, 0x144b: 0x027e,\n\t0x144d: 0x0284, 0x144e: 0x025d, 0x144f: 0x026f, 0x1451: 0x0263,\n\t0x1452: 0x0278, 0x1454: 0x0260, 0x1457: 0x024e,\n\t0x1459: 0x0266, 0x145b: 0x0272, 0x145d: 0x02e4,\n\t0x145f: 0x0296, 0x1461: 0x023c, 0x1462: 0x0248,\n\t0x1464: 0x0287, 0x1467: 0x024b, 0x1468: 0x0269, 0x1469: 0x0290,\n\t0x146a: 0x027b, 0x146c: 0x0281, 0x146d: 0x0284, 0x146e: 0x025d, 0x146f: 0x026f,\n\t0x1470: 0x0275, 0x1471: 0x0263, 0x1472: 0x0278, 0x1474: 0x0260, 0x1475: 0x0242,\n\t0x1476: 0x0245, 0x1477: 0x024e, 0x1479: 0x0266, 0x147a: 0x026c, 0x147b: 0x0272,\n\t0x147c: 0x0293, 0x147e: 0x02cc,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x0239, 0x1481: 0x023c, 0x1482: 0x0248, 0x1483: 0x0251, 0x1484: 0x0287, 0x1485: 0x028a,\n\t0x1486: 0x025a, 0x1487: 0x024b, 0x1488: 0x0269, 0x1489: 0x0290, 0x148b: 0x027e,\n\t0x148c: 0x0281, 0x148d: 0x0284, 0x148e: 0x025d, 0x148f: 0x026f, 0x1490: 0x0275, 0x1491: 0x0263,\n\t0x1492: 0x0278, 0x1493: 0x0257, 0x1494: 0x0260, 0x1495: 0x0242, 0x1496: 0x0245, 0x1497: 0x024e,\n\t0x1498: 0x0254, 0x1499: 0x0266, 0x149a: 0x026c, 0x149b: 0x0272,\n\t0x14a1: 0x023c, 0x14a2: 0x0248, 0x14a3: 0x0251,\n\t0x14a5: 0x028a, 0x14a6: 0x025a, 0x14a7: 0x024b, 0x14a8: 0x0269, 0x14a9: 0x0290,\n\t0x14ab: 0x027e, 0x14ac: 0x0281, 0x14ad: 0x0284, 0x14ae: 0x025d, 0x14af: 0x026f,\n\t0x14b0: 0x0275, 0x14b1: 0x0263, 0x14b2: 0x0278, 0x14b3: 0x0257, 0x14b4: 0x0260, 0x14b5: 0x0242,\n\t0x14b6: 0x0245, 0x14b7: 0x024e, 0x14b8: 0x0254, 0x14b9: 0x0266, 0x14ba: 0x026c, 0x14bb: 0x0272,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x1879, 0x14c1: 0x1876, 0x14c2: 0x187c, 0x14c3: 0x18a0, 0x14c4: 0x18c4, 0x14c5: 0x18e8,\n\t0x14c6: 0x190c, 0x14c7: 0x1915, 0x14c8: 0x191b, 0x14c9: 0x1921, 0x14ca: 0x1927,\n\t0x14d0: 0x1a8f, 0x14d1: 0x1a93,\n\t0x14d2: 0x1a97, 0x14d3: 0x1a9b, 0x14d4: 0x1a9f, 0x14d5: 0x1aa3, 0x14d6: 0x1aa7, 0x14d7: 0x1aab,\n\t0x14d8: 0x1aaf, 0x14d9: 0x1ab3, 0x14da: 0x1ab7, 0x14db: 0x1abb, 0x14dc: 0x1abf, 0x14dd: 0x1ac3,\n\t0x14de: 0x1ac7, 0x14df: 0x1acb, 0x14e0: 0x1acf, 0x14e1: 0x1ad3, 0x14e2: 0x1ad7, 0x14e3: 0x1adb,\n\t0x14e4: 0x1adf, 0x14e5: 0x1ae3, 0x14e6: 0x1ae7, 0x14e7: 0x1aeb, 0x14e8: 0x1aef, 0x14e9: 0x1af3,\n\t0x14ea: 0x2721, 0x14eb: 0x0047, 0x14ec: 0x0065, 0x14ed: 0x193c, 0x14ee: 0x19b4,\n\t0x14f0: 0x0043, 0x14f1: 0x0045, 0x14f2: 0x0047, 0x14f3: 0x0049, 0x14f4: 0x004b, 0x14f5: 0x004d,\n\t0x14f6: 0x004f, 0x14f7: 0x0051, 0x14f8: 0x0053, 0x14f9: 0x0055, 0x14fa: 0x0057, 0x14fb: 0x0059,\n\t0x14fc: 0x005b, 0x14fd: 0x005d, 0x14fe: 0x005f, 0x14ff: 0x0061,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x26b0, 0x1501: 0x26c5, 0x1502: 0x0503,\n\t0x1510: 0x0c0f, 0x1511: 0x0a47,\n\t0x1512: 0x08d3, 0x1513: 0x45c7, 0x1514: 0x071b, 0x1515: 0x09ef, 0x1516: 0x132f, 0x1517: 0x09ff,\n\t0x1518: 0x0727, 0x1519: 0x0cd7, 0x151a: 0x0eaf, 0x151b: 0x0caf, 0x151c: 0x0827, 0x151d: 0x0b6b,\n\t0x151e: 0x07bf, 0x151f: 0x0cb7, 0x1520: 0x0813, 0x1521: 0x1117, 0x1522: 0x0f83, 0x1523: 0x138b,\n\t0x1524: 0x09d3, 0x1525: 0x090b, 0x1526: 0x0e63, 0x1527: 0x0c1b, 0x1528: 0x0c47, 0x1529: 0x06bf,\n\t0x152a: 0x06cb, 0x152b: 0x140b, 0x152c: 0x0adb, 0x152d: 0x06e7, 0x152e: 0x08ef, 0x152f: 0x0c3b,\n\t0x1530: 0x13b3, 0x1531: 0x0c13, 0x1532: 0x106f, 0x1533: 0x10ab, 0x1534: 0x08f7, 0x1535: 0x0e43,\n\t0x1536: 0x0d0b, 0x1537: 0x0d07, 0x1538: 0x0f97, 0x1539: 0x082b, 0x153a: 0x0957, 0x153b: 0x1443,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x06fb, 0x1541: 0x06f3, 0x1542: 0x0703, 0x1543: 0x1647, 0x1544: 0x0747, 0x1545: 0x0757,\n\t0x1546: 0x075b, 0x1547: 0x0763, 0x1548: 0x076b, 0x1549: 0x076f, 0x154a: 0x077b, 0x154b: 0x0773,\n\t0x154c: 0x05b3, 0x154d: 0x165b, 0x154e: 0x078f, 0x154f: 0x0793, 0x1550: 0x0797, 0x1551: 0x07b3,\n\t0x1552: 0x164c, 0x1553: 0x05b7, 0x1554: 0x079f, 0x1555: 0x07bf, 0x1556: 0x1656, 0x1557: 0x07cf,\n\t0x1558: 0x07d7, 0x1559: 0x0737, 0x155a: 0x07df, 0x155b: 0x07e3, 0x155c: 0x1831, 0x155d: 0x07ff,\n\t0x155e: 0x0807, 0x155f: 0x05bf, 0x1560: 0x081f, 0x1561: 0x0823, 0x1562: 0x082b, 0x1563: 0x082f,\n\t0x1564: 0x05c3, 0x1565: 0x0847, 0x1566: 0x084b, 0x1567: 0x0857, 0x1568: 0x0863, 0x1569: 0x0867,\n\t0x156a: 0x086b, 0x156b: 0x0873, 0x156c: 0x0893, 0x156d: 0x0897, 0x156e: 0x089f, 0x156f: 0x08af,\n\t0x1570: 0x08b7, 0x1571: 0x08bb, 0x1572: 0x08bb, 0x1573: 0x08bb, 0x1574: 0x166a, 0x1575: 0x0e93,\n\t0x1576: 0x08cf, 0x1577: 0x08d7, 0x1578: 0x166f, 0x1579: 0x08e3, 0x157a: 0x08eb, 0x157b: 0x08f3,\n\t0x157c: 0x091b, 0x157d: 0x0907, 0x157e: 0x0913, 0x157f: 0x0917,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x091f, 0x1581: 0x0927, 0x1582: 0x092b, 0x1583: 0x0933, 0x1584: 0x093b, 0x1585: 0x093f,\n\t0x1586: 0x093f, 0x1587: 0x0947, 0x1588: 0x094f, 0x1589: 0x0953, 0x158a: 0x095f, 0x158b: 0x0983,\n\t0x158c: 0x0967, 0x158d: 0x0987, 0x158e: 0x096b, 0x158f: 0x0973, 0x1590: 0x080b, 0x1591: 0x09cf,\n\t0x1592: 0x0997, 0x1593: 0x099b, 0x1594: 0x099f, 0x1595: 0x0993, 0x1596: 0x09a7, 0x1597: 0x09a3,\n\t0x1598: 0x09bb, 0x1599: 0x1674, 0x159a: 0x09d7, 0x159b: 0x09db, 0x159c: 0x09e3, 0x159d: 0x09ef,\n\t0x159e: 0x09f7, 0x159f: 0x0a13, 0x15a0: 0x1679, 0x15a1: 0x167e, 0x15a2: 0x0a1f, 0x15a3: 0x0a23,\n\t0x15a4: 0x0a27, 0x15a5: 0x0a1b, 0x15a6: 0x0a2f, 0x15a7: 0x05c7, 0x15a8: 0x05cb, 0x15a9: 0x0a37,\n\t0x15aa: 0x0a3f, 0x15ab: 0x0a3f, 0x15ac: 0x1683, 0x15ad: 0x0a5b, 0x15ae: 0x0a5f, 0x15af: 0x0a63,\n\t0x15b0: 0x0a6b, 0x15b1: 0x1688, 0x15b2: 0x0a73, 0x15b3: 0x0a77, 0x15b4: 0x0b4f, 0x15b5: 0x0a7f,\n\t0x15b6: 0x05cf, 0x15b7: 0x0a8b, 0x15b8: 0x0a9b, 0x15b9: 0x0aa7, 0x15ba: 0x0aa3, 0x15bb: 0x1692,\n\t0x15bc: 0x0aaf, 0x15bd: 0x1697, 0x15be: 0x0abb, 0x15bf: 0x0ab7,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x0abf, 0x15c1: 0x0acf, 0x15c2: 0x0ad3, 0x15c3: 0x05d3, 0x15c4: 0x0ae3, 0x15c5: 0x0aeb,\n\t0x15c6: 0x0aef, 0x15c7: 0x0af3, 0x15c8: 0x05d7, 0x15c9: 0x169c, 0x15ca: 0x05db, 0x15cb: 0x0b0f,\n\t0x15cc: 0x0b13, 0x15cd: 0x0b17, 0x15ce: 0x0b1f, 0x15cf: 0x1863, 0x15d0: 0x0b37, 0x15d1: 0x16a6,\n\t0x15d2: 0x16a6, 0x15d3: 0x11d7, 0x15d4: 0x0b47, 0x15d5: 0x0b47, 0x15d6: 0x05df, 0x15d7: 0x16c9,\n\t0x15d8: 0x179b, 0x15d9: 0x0b57, 0x15da: 0x0b5f, 0x15db: 0x05e3, 0x15dc: 0x0b73, 0x15dd: 0x0b83,\n\t0x15de: 0x0b87, 0x15df: 0x0b8f, 0x15e0: 0x0b9f, 0x15e1: 0x05eb, 0x15e2: 0x05e7, 0x15e3: 0x0ba3,\n\t0x15e4: 0x16ab, 0x15e5: 0x0ba7, 0x15e6: 0x0bbb, 0x15e7: 0x0bbf, 0x15e8: 0x0bc3, 0x15e9: 0x0bbf,\n\t0x15ea: 0x0bcf, 0x15eb: 0x0bd3, 0x15ec: 0x0be3, 0x15ed: 0x0bdb, 0x15ee: 0x0bdf, 0x15ef: 0x0be7,\n\t0x15f0: 0x0beb, 0x15f1: 0x0bef, 0x15f2: 0x0bfb, 0x15f3: 0x0bff, 0x15f4: 0x0c17, 0x15f5: 0x0c1f,\n\t0x15f6: 0x0c2f, 0x15f7: 0x0c43, 0x15f8: 0x16ba, 0x15f9: 0x0c3f, 0x15fa: 0x0c33, 0x15fb: 0x0c4b,\n\t0x15fc: 0x0c53, 0x15fd: 0x0c67, 0x15fe: 0x16bf, 0x15ff: 0x0c6f,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x0c63, 0x1601: 0x0c5b, 0x1602: 0x05ef, 0x1603: 0x0c77, 0x1604: 0x0c7f, 0x1605: 0x0c87,\n\t0x1606: 0x0c7b, 0x1607: 0x05f3, 0x1608: 0x0c97, 0x1609: 0x0c9f, 0x160a: 0x16c4, 0x160b: 0x0ccb,\n\t0x160c: 0x0cff, 0x160d: 0x0cdb, 0x160e: 0x05ff, 0x160f: 0x0ce7, 0x1610: 0x05fb, 0x1611: 0x05f7,\n\t0x1612: 0x07c3, 0x1613: 0x07c7, 0x1614: 0x0d03, 0x1615: 0x0ceb, 0x1616: 0x11ab, 0x1617: 0x0663,\n\t0x1618: 0x0d0f, 0x1619: 0x0d13, 0x161a: 0x0d17, 0x161b: 0x0d2b, 0x161c: 0x0d23, 0x161d: 0x16dd,\n\t0x161e: 0x0603, 0x161f: 0x0d3f, 0x1620: 0x0d33, 0x1621: 0x0d4f, 0x1622: 0x0d57, 0x1623: 0x16e7,\n\t0x1624: 0x0d5b, 0x1625: 0x0d47, 0x1626: 0x0d63, 0x1627: 0x0607, 0x1628: 0x0d67, 0x1629: 0x0d6b,\n\t0x162a: 0x0d6f, 0x162b: 0x0d7b, 0x162c: 0x16ec, 0x162d: 0x0d83, 0x162e: 0x060b, 0x162f: 0x0d8f,\n\t0x1630: 0x16f1, 0x1631: 0x0d93, 0x1632: 0x060f, 0x1633: 0x0d9f, 0x1634: 0x0dab, 0x1635: 0x0db7,\n\t0x1636: 0x0dbb, 0x1637: 0x16f6, 0x1638: 0x168d, 0x1639: 0x16fb, 0x163a: 0x0ddb, 0x163b: 0x1700,\n\t0x163c: 0x0de7, 0x163d: 0x0def, 0x163e: 0x0ddf, 0x163f: 0x0dfb,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0e0b, 0x1641: 0x0e1b, 0x1642: 0x0e0f, 0x1643: 0x0e13, 0x1644: 0x0e1f, 0x1645: 0x0e23,\n\t0x1646: 0x1705, 0x1647: 0x0e07, 0x1648: 0x0e3b, 0x1649: 0x0e3f, 0x164a: 0x0613, 0x164b: 0x0e53,\n\t0x164c: 0x0e4f, 0x164d: 0x170a, 0x164e: 0x0e33, 0x164f: 0x0e6f, 0x1650: 0x170f, 0x1651: 0x1714,\n\t0x1652: 0x0e73, 0x1653: 0x0e87, 0x1654: 0x0e83, 0x1655: 0x0e7f, 0x1656: 0x0617, 0x1657: 0x0e8b,\n\t0x1658: 0x0e9b, 0x1659: 0x0e97, 0x165a: 0x0ea3, 0x165b: 0x1651, 0x165c: 0x0eb3, 0x165d: 0x1719,\n\t0x165e: 0x0ebf, 0x165f: 0x1723, 0x1660: 0x0ed3, 0x1661: 0x0edf, 0x1662: 0x0ef3, 0x1663: 0x1728,\n\t0x1664: 0x0f07, 0x1665: 0x0f0b, 0x1666: 0x172d, 0x1667: 0x1732, 0x1668: 0x0f27, 0x1669: 0x0f37,\n\t0x166a: 0x061b, 0x166b: 0x0f3b, 0x166c: 0x061f, 0x166d: 0x061f, 0x166e: 0x0f53, 0x166f: 0x0f57,\n\t0x1670: 0x0f5f, 0x1671: 0x0f63, 0x1672: 0x0f6f, 0x1673: 0x0623, 0x1674: 0x0f87, 0x1675: 0x1737,\n\t0x1676: 0x0fa3, 0x1677: 0x173c, 0x1678: 0x0faf, 0x1679: 0x16a1, 0x167a: 0x0fbf, 0x167b: 0x1741,\n\t0x167c: 0x1746, 0x167d: 0x174b, 0x167e: 0x0627, 0x167f: 0x062b,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x0ff7, 0x1681: 0x1755, 0x1682: 0x1750, 0x1683: 0x175a, 0x1684: 0x175f, 0x1685: 0x0fff,\n\t0x1686: 0x1003, 0x1687: 0x1003, 0x1688: 0x100b, 0x1689: 0x0633, 0x168a: 0x100f, 0x168b: 0x0637,\n\t0x168c: 0x063b, 0x168d: 0x1769, 0x168e: 0x1023, 0x168f: 0x102b, 0x1690: 0x1037, 0x1691: 0x063f,\n\t0x1692: 0x176e, 0x1693: 0x105b, 0x1694: 0x1773, 0x1695: 0x1778, 0x1696: 0x107b, 0x1697: 0x1093,\n\t0x1698: 0x0643, 0x1699: 0x109b, 0x169a: 0x109f, 0x169b: 0x10a3, 0x169c: 0x177d, 0x169d: 0x1782,\n\t0x169e: 0x1782, 0x169f: 0x10bb, 0x16a0: 0x0647, 0x16a1: 0x1787, 0x16a2: 0x10cf, 0x16a3: 0x10d3,\n\t0x16a4: 0x064b, 0x16a5: 0x178c, 0x16a6: 0x10ef, 0x16a7: 0x064f, 0x16a8: 0x10ff, 0x16a9: 0x10f7,\n\t0x16aa: 0x1107, 0x16ab: 0x1796, 0x16ac: 0x111f, 0x16ad: 0x0653, 0x16ae: 0x112b, 0x16af: 0x1133,\n\t0x16b0: 0x1143, 0x16b1: 0x0657, 0x16b2: 0x17a0, 0x16b3: 0x17a5, 0x16b4: 0x065b, 0x16b5: 0x17aa,\n\t0x16b6: 0x115b, 0x16b7: 0x17af, 0x16b8: 0x1167, 0x16b9: 0x1173, 0x16ba: 0x117b, 0x16bb: 0x17b4,\n\t0x16bc: 0x17b9, 0x16bd: 0x118f, 0x16be: 0x17be, 0x16bf: 0x1197,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x16ce, 0x16c1: 0x065f, 0x16c2: 0x11af, 0x16c3: 0x11b3, 0x16c4: 0x0667, 0x16c5: 0x11b7,\n\t0x16c6: 0x0a33, 0x16c7: 0x17c3, 0x16c8: 0x17c8, 0x16c9: 0x16d3, 0x16ca: 0x16d8, 0x16cb: 0x11d7,\n\t0x16cc: 0x11db, 0x16cd: 0x13f3, 0x16ce: 0x066b, 0x16cf: 0x1207, 0x16d0: 0x1203, 0x16d1: 0x120b,\n\t0x16d2: 0x083f, 0x16d3: 0x120f, 0x16d4: 0x1213, 0x16d5: 0x1217, 0x16d6: 0x121f, 0x16d7: 0x17cd,\n\t0x16d8: 0x121b, 0x16d9: 0x1223, 0x16da: 0x1237, 0x16db: 0x123b, 0x16dc: 0x1227, 0x16dd: 0x123f,\n\t0x16de: 0x1253, 0x16df: 0x1267, 0x16e0: 0x1233, 0x16e1: 0x1247, 0x16e2: 0x124b, 0x16e3: 0x124f,\n\t0x16e4: 0x17d2, 0x16e5: 0x17dc, 0x16e6: 0x17d7, 0x16e7: 0x066f, 0x16e8: 0x126f, 0x16e9: 0x1273,\n\t0x16ea: 0x127b, 0x16eb: 0x17f0, 0x16ec: 0x127f, 0x16ed: 0x17e1, 0x16ee: 0x0673, 0x16ef: 0x0677,\n\t0x16f0: 0x17e6, 0x16f1: 0x17eb, 0x16f2: 0x067b, 0x16f3: 0x129f, 0x16f4: 0x12a3, 0x16f5: 0x12a7,\n\t0x16f6: 0x12ab, 0x16f7: 0x12b7, 0x16f8: 0x12b3, 0x16f9: 0x12bf, 0x16fa: 0x12bb, 0x16fb: 0x12cb,\n\t0x16fc: 0x12c3, 0x16fd: 0x12c7, 0x16fe: 0x12cf, 0x16ff: 0x067f,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x12d7, 0x1701: 0x12db, 0x1702: 0x0683, 0x1703: 0x12eb, 0x1704: 0x12ef, 0x1705: 0x17f5,\n\t0x1706: 0x12fb, 0x1707: 0x12ff, 0x1708: 0x0687, 0x1709: 0x130b, 0x170a: 0x05bb, 0x170b: 0x17fa,\n\t0x170c: 0x17ff, 0x170d: 0x068b, 0x170e: 0x068f, 0x170f: 0x1337, 0x1710: 0x134f, 0x1711: 0x136b,\n\t0x1712: 0x137b, 0x1713: 0x1804, 0x1714: 0x138f, 0x1715: 0x1393, 0x1716: 0x13ab, 0x1717: 0x13b7,\n\t0x1718: 0x180e, 0x1719: 0x1660, 0x171a: 0x13c3, 0x171b: 0x13bf, 0x171c: 0x13cb, 0x171d: 0x1665,\n\t0x171e: 0x13d7, 0x171f: 0x13e3, 0x1720: 0x1813, 0x1721: 0x1818, 0x1722: 0x1423, 0x1723: 0x142f,\n\t0x1724: 0x1437, 0x1725: 0x181d, 0x1726: 0x143b, 0x1727: 0x1467, 0x1728: 0x1473, 0x1729: 0x1477,\n\t0x172a: 0x146f, 0x172b: 0x1483, 0x172c: 0x1487, 0x172d: 0x1822, 0x172e: 0x1493, 0x172f: 0x0693,\n\t0x1730: 0x149b, 0x1731: 0x1827, 0x1732: 0x0697, 0x1733: 0x14d3, 0x1734: 0x0ac3, 0x1735: 0x14eb,\n\t0x1736: 0x182c, 0x1737: 0x1836, 0x1738: 0x069b, 0x1739: 0x069f, 0x173a: 0x1513, 0x173b: 0x183b,\n\t0x173c: 0x06a3, 0x173d: 0x1840, 0x173e: 0x152b, 0x173f: 0x152b,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x1533, 0x1741: 0x1845, 0x1742: 0x154b, 0x1743: 0x06a7, 0x1744: 0x155b, 0x1745: 0x1567,\n\t0x1746: 0x156f, 0x1747: 0x1577, 0x1748: 0x06ab, 0x1749: 0x184a, 0x174a: 0x158b, 0x174b: 0x15a7,\n\t0x174c: 0x15b3, 0x174d: 0x06af, 0x174e: 0x06b3, 0x174f: 0x15b7, 0x1750: 0x184f, 0x1751: 0x06b7,\n\t0x1752: 0x1854, 0x1753: 0x1859, 0x1754: 0x185e, 0x1755: 0x15db, 0x1756: 0x06bb, 0x1757: 0x15ef,\n\t0x1758: 0x15f7, 0x1759: 0x15fb, 0x175a: 0x1603, 0x175b: 0x160b, 0x175c: 0x1613, 0x175d: 0x1868,\n}\n\n// nfkcIndex: 22 blocks, 1408 entries, 2816 bytes\n// Block 0 is the zero block.\nvar nfkcIndex = [1408]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x5c, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5d, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x5e, 0xcb: 0x5f, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,\n\t0xd0: 0x0a, 0xd1: 0x60, 0xd2: 0x61, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x62,\n\t0xd8: 0x63, 0xd9: 0x0d, 0xdb: 0x64, 0xdc: 0x65, 0xdd: 0x66, 0xdf: 0x67,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x68, 0x121: 0x69, 0x123: 0x0e, 0x124: 0x6a, 0x125: 0x6b, 0x126: 0x6c, 0x127: 0x6d,\n\t0x128: 0x6e, 0x129: 0x6f, 0x12a: 0x70, 0x12b: 0x71, 0x12c: 0x6c, 0x12d: 0x72, 0x12e: 0x73, 0x12f: 0x74,\n\t0x131: 0x75, 0x132: 0x76, 0x133: 0x77, 0x134: 0x78, 0x135: 0x79, 0x137: 0x7a,\n\t0x138: 0x7b, 0x139: 0x7c, 0x13a: 0x7d, 0x13b: 0x7e, 0x13c: 0x7f, 0x13d: 0x80, 0x13e: 0x81, 0x13f: 0x82,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x83, 0x142: 0x84, 0x143: 0x85, 0x144: 0x86, 0x145: 0x87, 0x146: 0x88, 0x147: 0x89,\n\t0x14d: 0x8a,\n\t0x15c: 0x8b, 0x15f: 0x8c,\n\t0x162: 0x8d, 0x164: 0x8e,\n\t0x168: 0x8f, 0x169: 0x90, 0x16a: 0x91, 0x16c: 0x0f, 0x16d: 0x92, 0x16e: 0x93, 0x16f: 0x94,\n\t0x170: 0x95, 0x173: 0x96, 0x174: 0x97, 0x175: 0x10, 0x176: 0x11, 0x177: 0x12,\n\t0x178: 0x13, 0x179: 0x14, 0x17a: 0x15, 0x17b: 0x16, 0x17c: 0x17, 0x17d: 0x18, 0x17e: 0x19, 0x17f: 0x1a,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x98, 0x181: 0x99, 0x182: 0x9a, 0x183: 0x9b, 0x184: 0x1b, 0x185: 0x1c, 0x186: 0x9c, 0x187: 0x9d,\n\t0x188: 0x9e, 0x189: 0x1d, 0x18a: 0x1e, 0x18b: 0x9f, 0x18c: 0xa0,\n\t0x191: 0x1f, 0x192: 0x20, 0x193: 0xa1,\n\t0x1a8: 0xa2, 0x1a9: 0xa3, 0x1ab: 0xa4,\n\t0x1b1: 0xa5, 0x1b3: 0xa6, 0x1b5: 0xa7, 0x1b7: 0xa8,\n\t0x1ba: 0xa9, 0x1bb: 0xaa, 0x1bc: 0x21, 0x1bd: 0x22, 0x1be: 0x23, 0x1bf: 0xab,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0xac, 0x1c1: 0x24, 0x1c2: 0x25, 0x1c3: 0x26, 0x1c4: 0xad, 0x1c5: 0x27, 0x1c6: 0x28,\n\t0x1c8: 0x29, 0x1c9: 0x2a, 0x1ca: 0x2b, 0x1cb: 0x2c, 0x1cc: 0x2d, 0x1cd: 0x2e, 0x1ce: 0x2f, 0x1cf: 0x30,\n\t// Block 0x8, offset 0x200\n\t0x219: 0xae, 0x21a: 0xaf, 0x21b: 0xb0, 0x21d: 0xb1, 0x21f: 0xb2,\n\t0x220: 0xb3, 0x223: 0xb4, 0x224: 0xb5, 0x225: 0xb6, 0x226: 0xb7, 0x227: 0xb8,\n\t0x22a: 0xb9, 0x22b: 0xba, 0x22d: 0xbb, 0x22f: 0xbc,\n\t0x230: 0xbd, 0x231: 0xbe, 0x232: 0xbf, 0x233: 0xc0, 0x234: 0xc1, 0x235: 0xc2, 0x236: 0xc3, 0x237: 0xbd,\n\t0x238: 0xbe, 0x239: 0xbf, 0x23a: 0xc0, 0x23b: 0xc1, 0x23c: 0xc2, 0x23d: 0xc3, 0x23e: 0xbd, 0x23f: 0xbe,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xbf, 0x241: 0xc0, 0x242: 0xc1, 0x243: 0xc2, 0x244: 0xc3, 0x245: 0xbd, 0x246: 0xbe, 0x247: 0xbf,\n\t0x248: 0xc0, 0x249: 0xc1, 0x24a: 0xc2, 0x24b: 0xc3, 0x24c: 0xbd, 0x24d: 0xbe, 0x24e: 0xbf, 0x24f: 0xc0,\n\t0x250: 0xc1, 0x251: 0xc2, 0x252: 0xc3, 0x253: 0xbd, 0x254: 0xbe, 0x255: 0xbf, 0x256: 0xc0, 0x257: 0xc1,\n\t0x258: 0xc2, 0x259: 0xc3, 0x25a: 0xbd, 0x25b: 0xbe, 0x25c: 0xbf, 0x25d: 0xc0, 0x25e: 0xc1, 0x25f: 0xc2,\n\t0x260: 0xc3, 0x261: 0xbd, 0x262: 0xbe, 0x263: 0xbf, 0x264: 0xc0, 0x265: 0xc1, 0x266: 0xc2, 0x267: 0xc3,\n\t0x268: 0xbd, 0x269: 0xbe, 0x26a: 0xbf, 0x26b: 0xc0, 0x26c: 0xc1, 0x26d: 0xc2, 0x26e: 0xc3, 0x26f: 0xbd,\n\t0x270: 0xbe, 0x271: 0xbf, 0x272: 0xc0, 0x273: 0xc1, 0x274: 0xc2, 0x275: 0xc3, 0x276: 0xbd, 0x277: 0xbe,\n\t0x278: 0xbf, 0x279: 0xc0, 0x27a: 0xc1, 0x27b: 0xc2, 0x27c: 0xc3, 0x27d: 0xbd, 0x27e: 0xbe, 0x27f: 0xbf,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xc0, 0x281: 0xc1, 0x282: 0xc2, 0x283: 0xc3, 0x284: 0xbd, 0x285: 0xbe, 0x286: 0xbf, 0x287: 0xc0,\n\t0x288: 0xc1, 0x289: 0xc2, 0x28a: 0xc3, 0x28b: 0xbd, 0x28c: 0xbe, 0x28d: 0xbf, 0x28e: 0xc0, 0x28f: 0xc1,\n\t0x290: 0xc2, 0x291: 0xc3, 0x292: 0xbd, 0x293: 0xbe, 0x294: 0xbf, 0x295: 0xc0, 0x296: 0xc1, 0x297: 0xc2,\n\t0x298: 0xc3, 0x299: 0xbd, 0x29a: 0xbe, 0x29b: 0xbf, 0x29c: 0xc0, 0x29d: 0xc1, 0x29e: 0xc2, 0x29f: 0xc3,\n\t0x2a0: 0xbd, 0x2a1: 0xbe, 0x2a2: 0xbf, 0x2a3: 0xc0, 0x2a4: 0xc1, 0x2a5: 0xc2, 0x2a6: 0xc3, 0x2a7: 0xbd,\n\t0x2a8: 0xbe, 0x2a9: 0xbf, 0x2aa: 0xc0, 0x2ab: 0xc1, 0x2ac: 0xc2, 0x2ad: 0xc3, 0x2ae: 0xbd, 0x2af: 0xbe,\n\t0x2b0: 0xbf, 0x2b1: 0xc0, 0x2b2: 0xc1, 0x2b3: 0xc2, 0x2b4: 0xc3, 0x2b5: 0xbd, 0x2b6: 0xbe, 0x2b7: 0xbf,\n\t0x2b8: 0xc0, 0x2b9: 0xc1, 0x2ba: 0xc2, 0x2bb: 0xc3, 0x2bc: 0xbd, 0x2bd: 0xbe, 0x2be: 0xbf, 0x2bf: 0xc0,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xc1, 0x2c1: 0xc2, 0x2c2: 0xc3, 0x2c3: 0xbd, 0x2c4: 0xbe, 0x2c5: 0xbf, 0x2c6: 0xc0, 0x2c7: 0xc1,\n\t0x2c8: 0xc2, 0x2c9: 0xc3, 0x2ca: 0xbd, 0x2cb: 0xbe, 0x2cc: 0xbf, 0x2cd: 0xc0, 0x2ce: 0xc1, 0x2cf: 0xc2,\n\t0x2d0: 0xc3, 0x2d1: 0xbd, 0x2d2: 0xbe, 0x2d3: 0xbf, 0x2d4: 0xc0, 0x2d5: 0xc1, 0x2d6: 0xc2, 0x2d7: 0xc3,\n\t0x2d8: 0xbd, 0x2d9: 0xbe, 0x2da: 0xbf, 0x2db: 0xc0, 0x2dc: 0xc1, 0x2dd: 0xc2, 0x2de: 0xc4,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x31, 0x325: 0x32, 0x326: 0x33, 0x327: 0x34,\n\t0x328: 0x35, 0x329: 0x36, 0x32a: 0x37, 0x32b: 0x38, 0x32c: 0x39, 0x32d: 0x3a, 0x32e: 0x3b, 0x32f: 0x3c,\n\t0x330: 0x3d, 0x331: 0x3e, 0x332: 0x3f, 0x333: 0x40, 0x334: 0x41, 0x335: 0x42, 0x336: 0x43, 0x337: 0x44,\n\t0x338: 0x45, 0x339: 0x46, 0x33a: 0x47, 0x33b: 0x48, 0x33c: 0xc5, 0x33d: 0x49, 0x33e: 0x4a, 0x33f: 0x4b,\n\t// Block 0xd, offset 0x340\n\t0x347: 0xc6,\n\t0x34b: 0xc7, 0x34d: 0xc8,\n\t0x368: 0xc9, 0x36b: 0xca,\n\t0x374: 0xcb,\n\t0x37d: 0xcc,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xcd, 0x382: 0xce, 0x384: 0xcf, 0x385: 0xb7, 0x387: 0xd0,\n\t0x388: 0xd1, 0x38b: 0xd2, 0x38c: 0xd3, 0x38d: 0xd4,\n\t0x391: 0xd5, 0x392: 0xd6, 0x393: 0xd7, 0x396: 0xd8, 0x397: 0xd9,\n\t0x398: 0xda, 0x39a: 0xdb, 0x39c: 0xdc,\n\t0x3a0: 0xdd, 0x3a7: 0xde,\n\t0x3a8: 0xdf, 0x3a9: 0xe0, 0x3aa: 0xe1,\n\t0x3b0: 0xda, 0x3b5: 0xe2, 0x3b6: 0xe3,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xe4, 0x3ec: 0xe5,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xe6,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xe7, 0x446: 0xe8, 0x447: 0xe9,\n\t0x449: 0xea,\n\t0x450: 0xeb, 0x451: 0xec, 0x452: 0xed, 0x453: 0xee, 0x454: 0xef, 0x455: 0xf0, 0x456: 0xf1, 0x457: 0xf2,\n\t0x458: 0xf3, 0x459: 0xf4, 0x45a: 0x4c, 0x45b: 0xf5, 0x45c: 0xf6, 0x45d: 0xf7, 0x45e: 0xf8, 0x45f: 0x4d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xf9, 0x484: 0xe5,\n\t0x48b: 0xfa,\n\t0x4a3: 0xfb, 0x4a5: 0xfc,\n\t0x4b8: 0x4e, 0x4b9: 0x4f, 0x4ba: 0x50,\n\t// Block 0x13, offset 0x4c0\n\t0x4c4: 0x51, 0x4c5: 0xfd, 0x4c6: 0xfe,\n\t0x4c8: 0x52, 0x4c9: 0xff,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x53, 0x521: 0x54, 0x522: 0x55, 0x523: 0x56, 0x524: 0x57, 0x525: 0x58, 0x526: 0x59, 0x527: 0x5a,\n\t0x528: 0x5b,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfkcSparseOffset: 164 entries, 328 bytes\nvar nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x70, 0x75, 0x77, 0x7f, 0x86, 0x89, 0x91, 0x95, 0x99, 0x9b, 0x9d, 0xa6, 0xaa, 0xb1, 0xb6, 0xb9, 0xc3, 0xc6, 0xcd, 0xd5, 0xd9, 0xdb, 0xdf, 0xe3, 0xe9, 0xfa, 0x106, 0x108, 0x10e, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11a, 0x11c, 0x11f, 0x122, 0x124, 0x127, 0x12a, 0x12e, 0x133, 0x13c, 0x13e, 0x141, 0x143, 0x14e, 0x159, 0x167, 0x175, 0x185, 0x193, 0x19a, 0x1a0, 0x1af, 0x1b3, 0x1b5, 0x1b9, 0x1bb, 0x1be, 0x1c0, 0x1c3, 0x1c5, 0x1c8, 0x1ca, 0x1cc, 0x1ce, 0x1da, 0x1e4, 0x1ee, 0x1f1, 0x1f5, 0x1f7, 0x1f9, 0x1fb, 0x1fd, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20e, 0x211, 0x215, 0x217, 0x21e, 0x224, 0x22a, 0x232, 0x238, 0x23e, 0x244, 0x248, 0x24a, 0x24c, 0x24e, 0x250, 0x256, 0x259, 0x25b, 0x261, 0x264, 0x26c, 0x273, 0x276, 0x279, 0x27b, 0x27e, 0x286, 0x28a, 0x291, 0x294, 0x29a, 0x29c, 0x29e, 0x2a1, 0x2a3, 0x2a6, 0x2a8, 0x2aa, 0x2ac, 0x2ae, 0x2b1, 0x2b3, 0x2b5, 0x2b7, 0x2b9, 0x2c6, 0x2d0, 0x2d2, 0x2d4, 0x2d8, 0x2dd, 0x2e9, 0x2ee, 0x2f7, 0x2fd, 0x302, 0x306, 0x30b, 0x30f, 0x31f, 0x32d, 0x33b, 0x349, 0x34f, 0x351, 0x353, 0x356, 0x361, 0x363}\n\n// nfkcSparseValues: 877 entries, 3508 bytes\nvar nfkcSparseValues = [877]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x0001, lo: 0xa0, hi: 0xa0},\n\t{value: 0x427b, lo: 0xa8, hi: 0xa8},\n\t{value: 0x0083, lo: 0xaa, hi: 0xaa},\n\t{value: 0x4267, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0025, lo: 0xb2, hi: 0xb3},\n\t{value: 0x425d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x01dc, lo: 0xb5, hi: 0xb5},\n\t{value: 0x4294, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0023, lo: 0xb9, hi: 0xb9},\n\t{value: 0x009f, lo: 0xba, hi: 0xba},\n\t{value: 0x221f, lo: 0xbc, hi: 0xbc},\n\t{value: 0x2213, lo: 0xbd, hi: 0xbd},\n\t{value: 0x22b5, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1, offset 0xe\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46e5, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4717, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x12\n\t{value: 0x0003, lo: 0x08},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x0091, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0119, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0095, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00a5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0143, lo: 0xb4, hi: 0xb6},\n\t{value: 0x00af, lo: 0xb7, hi: 0xb7},\n\t{value: 0x00b3, lo: 0xb8, hi: 0xb8},\n\t// Block 0x3, offset 0x1b\n\t{value: 0x000a, lo: 0x09},\n\t{value: 0x4271, lo: 0x98, hi: 0x98},\n\t{value: 0x4276, lo: 0x99, hi: 0x9a},\n\t{value: 0x4299, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4262, lo: 0x9c, hi: 0x9c},\n\t{value: 0x4285, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0113, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0099, lo: 0xa1, hi: 0xa1},\n\t{value: 0x00a7, lo: 0xa2, hi: 0xa3},\n\t{value: 0x0167, lo: 0xa4, hi: 0xa4},\n\t// Block 0x4, offset 0x25\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37a8, lo: 0x90, hi: 0x90},\n\t{value: 0x37b4, lo: 0x91, hi: 0x91},\n\t{value: 0x37a2, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x381a, lo: 0x97, hi: 0x97},\n\t{value: 0x37e4, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37cc, lo: 0x9d, hi: 0x9d},\n\t{value: 0x37f6, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3820, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3826, lo: 0xb7, hi: 0xb7},\n\t// Block 0x5, offset 0x35\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x83, hi: 0x87},\n\t// Block 0x6, offset 0x37\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8113, lo: 0x81, hi: 0x82},\n\t{value: 0x8132, lo: 0x84, hi: 0x84},\n\t{value: 0x812d, lo: 0x85, hi: 0x85},\n\t{value: 0x810d, lo: 0x87, hi: 0x87},\n\t// Block 0x7, offset 0x3c\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x97},\n\t{value: 0x8119, lo: 0x98, hi: 0x98},\n\t{value: 0x811a, lo: 0x99, hi: 0x99},\n\t{value: 0x811b, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3844, lo: 0xa2, hi: 0xa2},\n\t{value: 0x384a, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3856, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3850, lo: 0xa5, hi: 0xa5},\n\t{value: 0x385c, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x8, offset 0x47\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x386e, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x3862, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3868, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8132, lo: 0x96, hi: 0x9c},\n\t{value: 0x8132, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t// Block 0x9, offset 0x56\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x811f, lo: 0x91, hi: 0x91},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8132, lo: 0xba, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8132, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8132, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa, offset 0x63\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8132, lo: 0x80, hi: 0x80},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x83},\n\t{value: 0x812d, lo: 0x84, hi: 0x85},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x812d, lo: 0x88, hi: 0x89},\n\t{value: 0x8132, lo: 0x8a, hi: 0x8a},\n\t// Block 0xb, offset 0x6b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xab, hi: 0xb1},\n\t{value: 0x812d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb3},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0xc, offset 0x70\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0x96, hi: 0x99},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8132, lo: 0xa9, hi: 0xad},\n\t// Block 0xd, offset 0x75\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x99, hi: 0x9b},\n\t// Block 0xe, offset 0x77\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3edb, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ee3, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3eeb, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9902, lo: 0xbc, hi: 0xbc},\n\t// Block 0xf, offset 0x7f\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x91, hi: 0x91},\n\t{value: 0x812d, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x93, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x94},\n\t{value: 0x451f, lo: 0x98, hi: 0x9f},\n\t// Block 0x10, offset 0x86\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x11, offset 0x89\n\t{value: 0x0008, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2ca1, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x455f, lo: 0x9c, hi: 0x9d},\n\t{value: 0x456f, lo: 0x9f, hi: 0x9f},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbe},\n\t// Block 0x12, offset 0x91\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4597, lo: 0xb3, hi: 0xb3},\n\t{value: 0x459f, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x13, offset 0x95\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4577, lo: 0x99, hi: 0x9b},\n\t{value: 0x458f, lo: 0x9e, hi: 0x9e},\n\t// Block 0x14, offset 0x99\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x15, offset 0x9b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t// Block 0x16, offset 0x9d\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cb9, lo: 0x88, hi: 0x88},\n\t{value: 0x2cb1, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cc1, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45a7, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45af, lo: 0x9d, hi: 0x9d},\n\t// Block 0x17, offset 0xa6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cc9, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x18, offset 0xaa\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cd1, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2ce1, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cd9, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x19, offset 0xb1\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ef3, lo: 0x88, hi: 0x88},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8120, lo: 0x95, hi: 0x96},\n\t// Block 0x1a, offset 0xb6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1b, offset 0xb9\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2ce9, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cf1, lo: 0x87, hi: 0x87},\n\t{value: 0x2cf9, lo: 0x88, hi: 0x88},\n\t{value: 0x2f53, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2ddb, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1c, offset 0xc3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1d, offset 0xc6\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2d01, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d11, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d09, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1e, offset 0xcd\n\t{value: 0x6be7, lo: 0x07},\n\t{value: 0x9904, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3efb, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f5b, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2de6, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d19, lo: 0x9e, hi: 0x9f},\n\t// Block 0x1f, offset 0xd5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2624, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8122, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x20, offset 0xd9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8123, lo: 0x88, hi: 0x8b},\n\t// Block 0x21, offset 0xdb\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2639, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8124, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x22, offset 0xdf\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8125, lo: 0x88, hi: 0x8b},\n\t{value: 0x262b, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2632, lo: 0x9d, hi: 0x9d},\n\t// Block 0x23, offset 0xe3\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x030b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812d, lo: 0x98, hi: 0x99},\n\t{value: 0x812d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812b, lo: 0xb9, hi: 0xb9},\n\t// Block 0x24, offset 0xe9\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2647, lo: 0x83, hi: 0x83},\n\t{value: 0x264e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2655, lo: 0x92, hi: 0x92},\n\t{value: 0x265c, lo: 0x97, hi: 0x97},\n\t{value: 0x2663, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2640, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8126, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8127, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a87, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8128, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a90, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45b7, lo: 0xb6, hi: 0xb6},\n\t{value: 0x45f7, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45bf, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4602, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8127, lo: 0xba, hi: 0xbd},\n\t// Block 0x25, offset 0xfa\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8127, lo: 0x80, hi: 0x80},\n\t{value: 0x4a99, lo: 0x81, hi: 0x81},\n\t{value: 0x8132, lo: 0x82, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0x86, hi: 0x87},\n\t{value: 0x2671, lo: 0x93, hi: 0x93},\n\t{value: 0x2678, lo: 0x9d, hi: 0x9d},\n\t{value: 0x267f, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2686, lo: 0xa7, hi: 0xa7},\n\t{value: 0x268d, lo: 0xac, hi: 0xac},\n\t{value: 0x266a, lo: 0xb9, hi: 0xb9},\n\t// Block 0x26, offset 0x106\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x86, hi: 0x86},\n\t// Block 0x27, offset 0x108\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d21, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x28, offset 0x10e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t// Block 0x29, offset 0x110\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x030f, lo: 0xbc, hi: 0xbc},\n\t// Block 0x2a, offset 0x112\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2b, offset 0x114\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2c, offset 0x116\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2d, offset 0x118\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2e, offset 0x11a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9f},\n\t// Block 0x2f, offset 0x11c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x94, hi: 0x94},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x30, offset 0x11f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9d},\n\t// Block 0x31, offset 0x122\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8131, lo: 0xa9, hi: 0xa9},\n\t// Block 0x32, offset 0x124\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812e, lo: 0xb9, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbb},\n\t// Block 0x33, offset 0x127\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x97, hi: 0x97},\n\t{value: 0x812d, lo: 0x98, hi: 0x98},\n\t// Block 0x34, offset 0x12a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8132, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x35, offset 0x12e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812d, lo: 0xb5, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x36, offset 0x133\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d69, lo: 0x80, hi: 0x80},\n\t{value: 0x2d71, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d79, lo: 0x83, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xac},\n\t{value: 0x8132, lo: 0xad, hi: 0xb3},\n\t// Block 0x37, offset 0x13c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xaa, hi: 0xab},\n\t// Block 0x38, offset 0x13e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8104, lo: 0xb2, hi: 0xb3},\n\t// Block 0x39, offset 0x141\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3a, offset 0x143\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812d, lo: 0x95, hi: 0x99},\n\t{value: 0x8132, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812d, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t{value: 0x8132, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3b, offset 0x14e\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0043, lo: 0xac, hi: 0xac},\n\t{value: 0x00d1, lo: 0xad, hi: 0xad},\n\t{value: 0x0045, lo: 0xae, hi: 0xae},\n\t{value: 0x0049, lo: 0xb0, hi: 0xb1},\n\t{value: 0x00e6, lo: 0xb2, hi: 0xb2},\n\t{value: 0x004f, lo: 0xb3, hi: 0xba},\n\t{value: 0x005f, lo: 0xbc, hi: 0xbc},\n\t{value: 0x00ef, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0061, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0065, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3c, offset 0x159\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0001, lo: 0x80, hi: 0x8a},\n\t{value: 0x043b, lo: 0x91, hi: 0x91},\n\t{value: 0x429e, lo: 0x97, hi: 0x97},\n\t{value: 0x001d, lo: 0xa4, hi: 0xa4},\n\t{value: 0x1873, lo: 0xa5, hi: 0xa5},\n\t{value: 0x1b5f, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0001, lo: 0xaf, hi: 0xaf},\n\t{value: 0x2694, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2801, lo: 0xb4, hi: 0xb4},\n\t{value: 0x269b, lo: 0xb6, hi: 0xb6},\n\t{value: 0x280b, lo: 0xb7, hi: 0xb7},\n\t{value: 0x186d, lo: 0xbc, hi: 0xbc},\n\t{value: 0x426c, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3d, offset 0x167\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x1933, lo: 0x87, hi: 0x87},\n\t{value: 0x1930, lo: 0x88, hi: 0x88},\n\t{value: 0x1870, lo: 0x89, hi: 0x89},\n\t{value: 0x2991, lo: 0x97, hi: 0x97},\n\t{value: 0x0001, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0093, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb4, hi: 0xb9},\n\t{value: 0x0017, lo: 0xba, hi: 0xba},\n\t{value: 0x0467, lo: 0xbb, hi: 0xbb},\n\t{value: 0x003b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0011, lo: 0xbd, hi: 0xbe},\n\t{value: 0x009d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3e, offset 0x175\n\t{value: 0x0002, lo: 0x0f},\n\t{value: 0x0021, lo: 0x80, hi: 0x89},\n\t{value: 0x0017, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0467, lo: 0x8b, hi: 0x8b},\n\t{value: 0x003b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0011, lo: 0x8d, hi: 0x8e},\n\t{value: 0x0083, lo: 0x90, hi: 0x90},\n\t{value: 0x008b, lo: 0x91, hi: 0x91},\n\t{value: 0x009f, lo: 0x92, hi: 0x92},\n\t{value: 0x00b1, lo: 0x93, hi: 0x93},\n\t{value: 0x0104, lo: 0x94, hi: 0x94},\n\t{value: 0x0091, lo: 0x95, hi: 0x95},\n\t{value: 0x0097, lo: 0x96, hi: 0x99},\n\t{value: 0x00a1, lo: 0x9a, hi: 0x9a},\n\t{value: 0x00a7, lo: 0x9b, hi: 0x9c},\n\t{value: 0x199c, lo: 0xa8, hi: 0xa8},\n\t// Block 0x3f, offset 0x185\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8132, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8132, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8132, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812d, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t// Block 0x40, offset 0x193\n\t{value: 0x0007, lo: 0x06},\n\t{value: 0x2183, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bbc, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bca, lo: 0xae, hi: 0xae},\n\t// Block 0x41, offset 0x19a\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3bd1, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bd8, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x42, offset 0x1a0\n\t{value: 0x0173, lo: 0x0e},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3be6, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3bed, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3bf4, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3bfb, lo: 0xa4, hi: 0xa4},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3c02, lo: 0xa6, hi: 0xa6},\n\t{value: 0x26a2, lo: 0xac, hi: 0xad},\n\t{value: 0x26a9, lo: 0xaf, hi: 0xaf},\n\t{value: 0x281f, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x43, offset 0x1af\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c6b, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3c95, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cbf, lo: 0xaa, hi: 0xad},\n\t// Block 0x44, offset 0x1b3\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048b, lo: 0xa9, hi: 0xaa},\n\t// Block 0x45, offset 0x1b5\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0057, lo: 0x80, hi: 0x8f},\n\t{value: 0x0083, lo: 0x90, hi: 0xa9},\n\t{value: 0x0021, lo: 0xaa, hi: 0xaa},\n\t// Block 0x46, offset 0x1b9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x299e, lo: 0x8c, hi: 0x8c},\n\t// Block 0x47, offset 0x1bb\n\t{value: 0x0266, lo: 0x02},\n\t{value: 0x1b8f, lo: 0xb4, hi: 0xb4},\n\t{value: 0x192d, lo: 0xb5, hi: 0xb6},\n\t// Block 0x48, offset 0x1be\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44e0, lo: 0x9c, hi: 0x9c},\n\t// Block 0x49, offset 0x1c0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0095, lo: 0xbc, hi: 0xbc},\n\t{value: 0x006d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x4a, offset 0x1c3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xaf, hi: 0xb1},\n\t// Block 0x4b, offset 0x1c5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x047f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x4c, offset 0x1c8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa0, hi: 0xbf},\n\t// Block 0x4d, offset 0x1ca\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0dc3, lo: 0x9f, hi: 0x9f},\n\t// Block 0x4e, offset 0x1cc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x162f, lo: 0xb3, hi: 0xb3},\n\t// Block 0x4f, offset 0x1ce\n\t{value: 0x0004, lo: 0x0b},\n\t{value: 0x1597, lo: 0x80, hi: 0x82},\n\t{value: 0x15af, lo: 0x83, hi: 0x83},\n\t{value: 0x15c7, lo: 0x84, hi: 0x85},\n\t{value: 0x15d7, lo: 0x86, hi: 0x89},\n\t{value: 0x15eb, lo: 0x8a, hi: 0x8c},\n\t{value: 0x15ff, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1607, lo: 0x8e, hi: 0x8e},\n\t{value: 0x160f, lo: 0x8f, hi: 0x90},\n\t{value: 0x161b, lo: 0x91, hi: 0x93},\n\t{value: 0x162b, lo: 0x94, hi: 0x94},\n\t{value: 0x1633, lo: 0x95, hi: 0x95},\n\t// Block 0x50, offset 0x1da\n\t{value: 0x0004, lo: 0x09},\n\t{value: 0x0001, lo: 0x80, hi: 0x80},\n\t{value: 0x812c, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8131, lo: 0xab, hi: 0xab},\n\t{value: 0x8133, lo: 0xac, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x812f, lo: 0xae, hi: 0xae},\n\t{value: 0x812f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x04b3, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0887, lo: 0xb8, hi: 0xba},\n\t// Block 0x51, offset 0x1e4\n\t{value: 0x0006, lo: 0x09},\n\t{value: 0x0313, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0317, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a3e, lo: 0xb3, hi: 0xb3},\n\t{value: 0x031b, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a44, lo: 0xb5, hi: 0xb6},\n\t{value: 0x031f, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0323, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0327, lo: 0xb9, hi: 0xb9},\n\t{value: 0x4a50, lo: 0xba, hi: 0xbf},\n\t// Block 0x52, offset 0x1ee\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb4, hi: 0xbd},\n\t// Block 0x53, offset 0x1f1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x020f, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0212, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9f},\n\t// Block 0x54, offset 0x1f5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb1},\n\t// Block 0x55, offset 0x1f7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x163b, lo: 0xb0, hi: 0xb0},\n\t// Block 0x56, offset 0x1f9\n\t{value: 0x000c, lo: 0x01},\n\t{value: 0x00d7, lo: 0xb8, hi: 0xb9},\n\t// Block 0x57, offset 0x1fb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t// Block 0x58, offset 0x1fd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xa0, hi: 0xb1},\n\t// Block 0x59, offset 0x200\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xab, hi: 0xad},\n\t// Block 0x5a, offset 0x202\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x93, hi: 0x93},\n\t// Block 0x5b, offset 0x204\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb3, hi: 0xb3},\n\t// Block 0x5c, offset 0x206\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t// Block 0x5d, offset 0x208\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbf},\n\t// Block 0x5e, offset 0x20e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t// Block 0x5f, offset 0x211\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x1637, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0125, lo: 0x9e, hi: 0x9e},\n\t{value: 0x1643, lo: 0x9f, hi: 0x9f},\n\t// Block 0x60, offset 0x215\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xad, hi: 0xad},\n\t// Block 0x61, offset 0x217\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x62, offset 0x21e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x63, offset 0x224\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x64, offset 0x22a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x65, offset 0x232\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x66, offset 0x238\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x67, offset 0x23e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x68, offset 0x244\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x69, offset 0x248\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0003, lo: 0x81, hi: 0xbf},\n\t// Block 0x6a, offset 0x24a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x6b, offset 0x24c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xa0, hi: 0xa0},\n\t// Block 0x6c, offset 0x24e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb6, hi: 0xba},\n\t// Block 0x6d, offset 0x250\n\t{value: 0x002c, lo: 0x05},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x6e, offset 0x256\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t// Block 0x6f, offset 0x259\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa7},\n\t// Block 0x70, offset 0x25b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x8132, lo: 0x88, hi: 0x8a},\n\t{value: 0x812d, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8132, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812d, lo: 0x8d, hi: 0x90},\n\t// Block 0x71, offset 0x261\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x72, offset 0x264\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x423b, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4245, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x424f, lo: 0xab, hi: 0xab},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x73, offset 0x26c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8132, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d81, lo: 0xae, hi: 0xae},\n\t{value: 0x2d8b, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8104, lo: 0xb3, hi: 0xb4},\n\t// Block 0x74, offset 0x273\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x75, offset 0x276\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8102, lo: 0xb6, hi: 0xb6},\n\t// Block 0x76, offset 0x279\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8102, lo: 0xa9, hi: 0xaa},\n\t// Block 0x77, offset 0x27b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x78, offset 0x27e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d95, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d9f, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8132, lo: 0xa6, hi: 0xac},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t// Block 0x79, offset 0x286\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x86, hi: 0x86},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9e},\n\t// Block 0x7a, offset 0x28a\n\t{value: 0x6b57, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2db3, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2da9, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dbd, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7b, offset 0x291\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x83, hi: 0x83},\n\t// Block 0x7c, offset 0x294\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dc7, lo: 0xba, hi: 0xba},\n\t{value: 0x2dd1, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7d, offset 0x29a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0x80, hi: 0x80},\n\t// Block 0x7e, offset 0x29c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7f, offset 0x29e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x80, offset 0x2a1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xab, hi: 0xab},\n\t// Block 0x81, offset 0x2a3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8102, lo: 0xba, hi: 0xba},\n\t// Block 0x82, offset 0x2a6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t// Block 0x83, offset 0x2a8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x84, offset 0x2aa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x87, hi: 0x87},\n\t// Block 0x85, offset 0x2ac\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x99, hi: 0x99},\n\t// Block 0x86, offset 0x2ae\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0x82, hi: 0x82},\n\t{value: 0x8104, lo: 0x84, hi: 0x85},\n\t// Block 0x87, offset 0x2b1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x97, hi: 0x97},\n\t// Block 0x88, offset 0x2b3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x89, offset 0x2b5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb6},\n\t// Block 0x8a, offset 0x2b7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x8b, offset 0x2b9\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45cf, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45d9, lo: 0x9f, hi: 0x9f},\n\t{value: 0x460d, lo: 0xa0, hi: 0xa0},\n\t{value: 0x461b, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4629, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4637, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4645, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812b, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8130, lo: 0xad, hi: 0xad},\n\t{value: 0x812b, lo: 0xae, hi: 0xb2},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbf},\n\t// Block 0x8c, offset 0x2c6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812d, lo: 0x80, hi: 0x82},\n\t{value: 0x8132, lo: 0x85, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8132, lo: 0xaa, hi: 0xad},\n\t{value: 0x45e3, lo: 0xbb, hi: 0xbb},\n\t{value: 0x45ed, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4653, lo: 0xbd, hi: 0xbd},\n\t{value: 0x466f, lo: 0xbe, hi: 0xbe},\n\t{value: 0x4661, lo: 0xbf, hi: 0xbf},\n\t// Block 0x8d, offset 0x2d0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x467d, lo: 0x80, hi: 0x80},\n\t// Block 0x8e, offset 0x2d2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x82, hi: 0x84},\n\t// Block 0x8f, offset 0x2d4\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0043, lo: 0x80, hi: 0x99},\n\t{value: 0x0083, lo: 0x9a, hi: 0xb3},\n\t{value: 0x0043, lo: 0xb4, hi: 0xbf},\n\t// Block 0x90, offset 0x2d8\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x005b, lo: 0x80, hi: 0x8d},\n\t{value: 0x0083, lo: 0x8e, hi: 0x94},\n\t{value: 0x0093, lo: 0x96, hi: 0xa7},\n\t{value: 0x0043, lo: 0xa8, hi: 0xbf},\n\t// Block 0x91, offset 0x2dd\n\t{value: 0x0002, lo: 0x0b},\n\t{value: 0x0073, lo: 0x80, hi: 0x81},\n\t{value: 0x0083, lo: 0x82, hi: 0x9b},\n\t{value: 0x0043, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0047, lo: 0x9e, hi: 0x9f},\n\t{value: 0x004f, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0055, lo: 0xa5, hi: 0xa6},\n\t{value: 0x005d, lo: 0xa9, hi: 0xac},\n\t{value: 0x0067, lo: 0xae, hi: 0xb5},\n\t{value: 0x0083, lo: 0xb6, hi: 0xb9},\n\t{value: 0x008d, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0091, lo: 0xbd, hi: 0xbf},\n\t// Block 0x92, offset 0x2e9\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x0097, lo: 0x80, hi: 0x83},\n\t{value: 0x00a1, lo: 0x85, hi: 0x8f},\n\t{value: 0x0043, lo: 0x90, hi: 0xa9},\n\t{value: 0x0083, lo: 0xaa, hi: 0xbf},\n\t// Block 0x93, offset 0x2ee\n\t{value: 0x0002, lo: 0x08},\n\t{value: 0x00af, lo: 0x80, hi: 0x83},\n\t{value: 0x0043, lo: 0x84, hi: 0x85},\n\t{value: 0x0049, lo: 0x87, hi: 0x8a},\n\t{value: 0x0055, lo: 0x8d, hi: 0x94},\n\t{value: 0x0067, lo: 0x96, hi: 0x9c},\n\t{value: 0x0083, lo: 0x9e, hi: 0xb7},\n\t{value: 0x0043, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0049, lo: 0xbb, hi: 0xbe},\n\t// Block 0x94, offset 0x2f7\n\t{value: 0x0002, lo: 0x05},\n\t{value: 0x0053, lo: 0x80, hi: 0x84},\n\t{value: 0x005f, lo: 0x86, hi: 0x86},\n\t{value: 0x0067, lo: 0x8a, hi: 0x90},\n\t{value: 0x0083, lo: 0x92, hi: 0xab},\n\t{value: 0x0043, lo: 0xac, hi: 0xbf},\n\t// Block 0x95, offset 0x2fd\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x006b, lo: 0x80, hi: 0x85},\n\t{value: 0x0083, lo: 0x86, hi: 0x9f},\n\t{value: 0x0043, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0083, lo: 0xba, hi: 0xbf},\n\t// Block 0x96, offset 0x302\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x008f, lo: 0x80, hi: 0x93},\n\t{value: 0x0043, lo: 0x94, hi: 0xad},\n\t{value: 0x0083, lo: 0xae, hi: 0xbf},\n\t// Block 0x97, offset 0x306\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x00a7, lo: 0x80, hi: 0x87},\n\t{value: 0x0043, lo: 0x88, hi: 0xa1},\n\t{value: 0x0083, lo: 0xa2, hi: 0xbb},\n\t{value: 0x0043, lo: 0xbc, hi: 0xbf},\n\t// Block 0x98, offset 0x30b\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x004b, lo: 0x80, hi: 0x95},\n\t{value: 0x0083, lo: 0x96, hi: 0xaf},\n\t{value: 0x0043, lo: 0xb0, hi: 0xbf},\n\t// Block 0x99, offset 0x30f\n\t{value: 0x0003, lo: 0x0f},\n\t{value: 0x01b8, lo: 0x80, hi: 0x80},\n\t{value: 0x045f, lo: 0x81, hi: 0x81},\n\t{value: 0x01bb, lo: 0x82, hi: 0x9a},\n\t{value: 0x045b, lo: 0x9b, hi: 0x9b},\n\t{value: 0x01c7, lo: 0x9c, hi: 0x9c},\n\t{value: 0x01d0, lo: 0x9d, hi: 0x9d},\n\t{value: 0x01d6, lo: 0x9e, hi: 0x9e},\n\t{value: 0x01fa, lo: 0x9f, hi: 0x9f},\n\t{value: 0x01eb, lo: 0xa0, hi: 0xa0},\n\t{value: 0x01e8, lo: 0xa1, hi: 0xa1},\n\t{value: 0x0173, lo: 0xa2, hi: 0xb2},\n\t{value: 0x0188, lo: 0xb3, hi: 0xb3},\n\t{value: 0x01a6, lo: 0xb4, hi: 0xba},\n\t{value: 0x045f, lo: 0xbb, hi: 0xbb},\n\t{value: 0x01bb, lo: 0xbc, hi: 0xbf},\n\t// Block 0x9a, offset 0x31f\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01c7, lo: 0x80, hi: 0x94},\n\t{value: 0x045b, lo: 0x95, hi: 0x95},\n\t{value: 0x01c7, lo: 0x96, hi: 0x96},\n\t{value: 0x01d0, lo: 0x97, hi: 0x97},\n\t{value: 0x01d6, lo: 0x98, hi: 0x98},\n\t{value: 0x01fa, lo: 0x99, hi: 0x99},\n\t{value: 0x01eb, lo: 0x9a, hi: 0x9a},\n\t{value: 0x01e8, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0173, lo: 0x9c, hi: 0xac},\n\t{value: 0x0188, lo: 0xad, hi: 0xad},\n\t{value: 0x01a6, lo: 0xae, hi: 0xb4},\n\t{value: 0x045f, lo: 0xb5, hi: 0xb5},\n\t{value: 0x01bb, lo: 0xb6, hi: 0xbf},\n\t// Block 0x9b, offset 0x32d\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01d9, lo: 0x80, hi: 0x8e},\n\t{value: 0x045b, lo: 0x8f, hi: 0x8f},\n\t{value: 0x01c7, lo: 0x90, hi: 0x90},\n\t{value: 0x01d0, lo: 0x91, hi: 0x91},\n\t{value: 0x01d6, lo: 0x92, hi: 0x92},\n\t{value: 0x01fa, lo: 0x93, hi: 0x93},\n\t{value: 0x01eb, lo: 0x94, hi: 0x94},\n\t{value: 0x01e8, lo: 0x95, hi: 0x95},\n\t{value: 0x0173, lo: 0x96, hi: 0xa6},\n\t{value: 0x0188, lo: 0xa7, hi: 0xa7},\n\t{value: 0x01a6, lo: 0xa8, hi: 0xae},\n\t{value: 0x045f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x01bb, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9c, offset 0x33b\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01eb, lo: 0x80, hi: 0x88},\n\t{value: 0x045b, lo: 0x89, hi: 0x89},\n\t{value: 0x01c7, lo: 0x8a, hi: 0x8a},\n\t{value: 0x01d0, lo: 0x8b, hi: 0x8b},\n\t{value: 0x01d6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x01fa, lo: 0x8d, hi: 0x8d},\n\t{value: 0x01eb, lo: 0x8e, hi: 0x8e},\n\t{value: 0x01e8, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0173, lo: 0x90, hi: 0xa0},\n\t{value: 0x0188, lo: 0xa1, hi: 0xa1},\n\t{value: 0x01a6, lo: 0xa2, hi: 0xa8},\n\t{value: 0x045f, lo: 0xa9, hi: 0xa9},\n\t{value: 0x01bb, lo: 0xaa, hi: 0xbf},\n\t// Block 0x9d, offset 0x349\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0x80, hi: 0x86},\n\t{value: 0x8132, lo: 0x88, hi: 0x98},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8132, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa6, hi: 0xaa},\n\t// Block 0x9e, offset 0x34f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xac, hi: 0xaf},\n\t// Block 0x9f, offset 0x351\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x90, hi: 0x96},\n\t// Block 0xa0, offset 0x353\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x84, hi: 0x89},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0xa1, offset 0x356\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0063, lo: 0x80, hi: 0x89},\n\t{value: 0x1951, lo: 0x8a, hi: 0x8a},\n\t{value: 0x1984, lo: 0x8b, hi: 0x8b},\n\t{value: 0x199f, lo: 0x8c, hi: 0x8c},\n\t{value: 0x19a5, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1bc3, lo: 0x8e, hi: 0x8e},\n\t{value: 0x19b1, lo: 0x8f, hi: 0x8f},\n\t{value: 0x197b, lo: 0xaa, hi: 0xaa},\n\t{value: 0x197e, lo: 0xab, hi: 0xab},\n\t{value: 0x1981, lo: 0xac, hi: 0xac},\n\t// Block 0xa2, offset 0x361\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x193f, lo: 0x90, hi: 0x90},\n\t// Block 0xa3, offset 0x363\n\t{value: 0x0028, lo: 0x09},\n\t{value: 0x2865, lo: 0x80, hi: 0x80},\n\t{value: 0x2829, lo: 0x81, hi: 0x81},\n\t{value: 0x2833, lo: 0x82, hi: 0x82},\n\t{value: 0x2847, lo: 0x83, hi: 0x84},\n\t{value: 0x2851, lo: 0x85, hi: 0x86},\n\t{value: 0x283d, lo: 0x87, hi: 0x87},\n\t{value: 0x285b, lo: 0x88, hi: 0x88},\n\t{value: 0x0b6f, lo: 0x90, hi: 0x90},\n\t{value: 0x08e7, lo: 0x91, hi: 0x91},\n}\n\n// recompMap: 7520 bytes (entries only)\nvar recompMap map[uint32]rune\nvar recompMapOnce sync.Once\n\nconst recompMapPacked = \"\" +\n\t\"\\x00A\\x03\\x00\\x00\\x00\\x00\\xc0\" + // 0x00410300: 0x000000C0\n\t\"\\x00A\\x03\\x01\\x00\\x00\\x00\\xc1\" + // 0x00410301: 0x000000C1\n\t\"\\x00A\\x03\\x02\\x00\\x00\\x00\\xc2\" + // 0x00410302: 0x000000C2\n\t\"\\x00A\\x03\\x03\\x00\\x00\\x00\\xc3\" + // 0x00410303: 0x000000C3\n\t\"\\x00A\\x03\\b\\x00\\x00\\x00\\xc4\" + // 0x00410308: 0x000000C4\n\t\"\\x00A\\x03\\n\\x00\\x00\\x00\\xc5\" + // 0x0041030A: 0x000000C5\n\t\"\\x00C\\x03'\\x00\\x00\\x00\\xc7\" + // 0x00430327: 0x000000C7\n\t\"\\x00E\\x03\\x00\\x00\\x00\\x00\\xc8\" + // 0x00450300: 0x000000C8\n\t\"\\x00E\\x03\\x01\\x00\\x00\\x00\\xc9\" + // 0x00450301: 0x000000C9\n\t\"\\x00E\\x03\\x02\\x00\\x00\\x00\\xca\" + // 0x00450302: 0x000000CA\n\t\"\\x00E\\x03\\b\\x00\\x00\\x00\\xcb\" + // 0x00450308: 0x000000CB\n\t\"\\x00I\\x03\\x00\\x00\\x00\\x00\\xcc\" + // 0x00490300: 0x000000CC\n\t\"\\x00I\\x03\\x01\\x00\\x00\\x00\\xcd\" + // 0x00490301: 0x000000CD\n\t\"\\x00I\\x03\\x02\\x00\\x00\\x00\\xce\" + // 0x00490302: 0x000000CE\n\t\"\\x00I\\x03\\b\\x00\\x00\\x00\\xcf\" + // 0x00490308: 0x000000CF\n\t\"\\x00N\\x03\\x03\\x00\\x00\\x00\\xd1\" + // 0x004E0303: 0x000000D1\n\t\"\\x00O\\x03\\x00\\x00\\x00\\x00\\xd2\" + // 0x004F0300: 0x000000D2\n\t\"\\x00O\\x03\\x01\\x00\\x00\\x00\\xd3\" + // 0x004F0301: 0x000000D3\n\t\"\\x00O\\x03\\x02\\x00\\x00\\x00\\xd4\" + // 0x004F0302: 0x000000D4\n\t\"\\x00O\\x03\\x03\\x00\\x00\\x00\\xd5\" + // 0x004F0303: 0x000000D5\n\t\"\\x00O\\x03\\b\\x00\\x00\\x00\\xd6\" + // 0x004F0308: 0x000000D6\n\t\"\\x00U\\x03\\x00\\x00\\x00\\x00\\xd9\" + // 0x00550300: 0x000000D9\n\t\"\\x00U\\x03\\x01\\x00\\x00\\x00\\xda\" + // 0x00550301: 0x000000DA\n\t\"\\x00U\\x03\\x02\\x00\\x00\\x00\\xdb\" + // 0x00550302: 0x000000DB\n\t\"\\x00U\\x03\\b\\x00\\x00\\x00\\xdc\" + // 0x00550308: 0x000000DC\n\t\"\\x00Y\\x03\\x01\\x00\\x00\\x00\\xdd\" + // 0x00590301: 0x000000DD\n\t\"\\x00a\\x03\\x00\\x00\\x00\\x00\\xe0\" + // 0x00610300: 0x000000E0\n\t\"\\x00a\\x03\\x01\\x00\\x00\\x00\\xe1\" + // 0x00610301: 0x000000E1\n\t\"\\x00a\\x03\\x02\\x00\\x00\\x00\\xe2\" + // 0x00610302: 0x000000E2\n\t\"\\x00a\\x03\\x03\\x00\\x00\\x00\\xe3\" + // 0x00610303: 0x000000E3\n\t\"\\x00a\\x03\\b\\x00\\x00\\x00\\xe4\" + // 0x00610308: 0x000000E4\n\t\"\\x00a\\x03\\n\\x00\\x00\\x00\\xe5\" + // 0x0061030A: 0x000000E5\n\t\"\\x00c\\x03'\\x00\\x00\\x00\\xe7\" + // 0x00630327: 0x000000E7\n\t\"\\x00e\\x03\\x00\\x00\\x00\\x00\\xe8\" + // 0x00650300: 0x000000E8\n\t\"\\x00e\\x03\\x01\\x00\\x00\\x00\\xe9\" + // 0x00650301: 0x000000E9\n\t\"\\x00e\\x03\\x02\\x00\\x00\\x00\\xea\" + // 0x00650302: 0x000000EA\n\t\"\\x00e\\x03\\b\\x00\\x00\\x00\\xeb\" + // 0x00650308: 0x000000EB\n\t\"\\x00i\\x03\\x00\\x00\\x00\\x00\\xec\" + // 0x00690300: 0x000000EC\n\t\"\\x00i\\x03\\x01\\x00\\x00\\x00\\xed\" + // 0x00690301: 0x000000ED\n\t\"\\x00i\\x03\\x02\\x00\\x00\\x00\\xee\" + // 0x00690302: 0x000000EE\n\t\"\\x00i\\x03\\b\\x00\\x00\\x00\\xef\" + // 0x00690308: 0x000000EF\n\t\"\\x00n\\x03\\x03\\x00\\x00\\x00\\xf1\" + // 0x006E0303: 0x000000F1\n\t\"\\x00o\\x03\\x00\\x00\\x00\\x00\\xf2\" + // 0x006F0300: 0x000000F2\n\t\"\\x00o\\x03\\x01\\x00\\x00\\x00\\xf3\" + // 0x006F0301: 0x000000F3\n\t\"\\x00o\\x03\\x02\\x00\\x00\\x00\\xf4\" + // 0x006F0302: 0x000000F4\n\t\"\\x00o\\x03\\x03\\x00\\x00\\x00\\xf5\" + // 0x006F0303: 0x000000F5\n\t\"\\x00o\\x03\\b\\x00\\x00\\x00\\xf6\" + // 0x006F0308: 0x000000F6\n\t\"\\x00u\\x03\\x00\\x00\\x00\\x00\\xf9\" + // 0x00750300: 0x000000F9\n\t\"\\x00u\\x03\\x01\\x00\\x00\\x00\\xfa\" + // 0x00750301: 0x000000FA\n\t\"\\x00u\\x03\\x02\\x00\\x00\\x00\\xfb\" + // 0x00750302: 0x000000FB\n\t\"\\x00u\\x03\\b\\x00\\x00\\x00\\xfc\" + // 0x00750308: 0x000000FC\n\t\"\\x00y\\x03\\x01\\x00\\x00\\x00\\xfd\" + // 0x00790301: 0x000000FD\n\t\"\\x00y\\x03\\b\\x00\\x00\\x00\\xff\" + // 0x00790308: 0x000000FF\n\t\"\\x00A\\x03\\x04\\x00\\x00\\x01\\x00\" + // 0x00410304: 0x00000100\n\t\"\\x00a\\x03\\x04\\x00\\x00\\x01\\x01\" + // 0x00610304: 0x00000101\n\t\"\\x00A\\x03\\x06\\x00\\x00\\x01\\x02\" + // 0x00410306: 0x00000102\n\t\"\\x00a\\x03\\x06\\x00\\x00\\x01\\x03\" + // 0x00610306: 0x00000103\n\t\"\\x00A\\x03(\\x00\\x00\\x01\\x04\" + // 0x00410328: 0x00000104\n\t\"\\x00a\\x03(\\x00\\x00\\x01\\x05\" + // 0x00610328: 0x00000105\n\t\"\\x00C\\x03\\x01\\x00\\x00\\x01\\x06\" + // 0x00430301: 0x00000106\n\t\"\\x00c\\x03\\x01\\x00\\x00\\x01\\a\" + // 0x00630301: 0x00000107\n\t\"\\x00C\\x03\\x02\\x00\\x00\\x01\\b\" + // 0x00430302: 0x00000108\n\t\"\\x00c\\x03\\x02\\x00\\x00\\x01\\t\" + // 0x00630302: 0x00000109\n\t\"\\x00C\\x03\\a\\x00\\x00\\x01\\n\" + // 0x00430307: 0x0000010A\n\t\"\\x00c\\x03\\a\\x00\\x00\\x01\\v\" + // 0x00630307: 0x0000010B\n\t\"\\x00C\\x03\\f\\x00\\x00\\x01\\f\" + // 0x0043030C: 0x0000010C\n\t\"\\x00c\\x03\\f\\x00\\x00\\x01\\r\" + // 0x0063030C: 0x0000010D\n\t\"\\x00D\\x03\\f\\x00\\x00\\x01\\x0e\" + // 0x0044030C: 0x0000010E\n\t\"\\x00d\\x03\\f\\x00\\x00\\x01\\x0f\" + // 0x0064030C: 0x0000010F\n\t\"\\x00E\\x03\\x04\\x00\\x00\\x01\\x12\" + // 0x00450304: 0x00000112\n\t\"\\x00e\\x03\\x04\\x00\\x00\\x01\\x13\" + // 0x00650304: 0x00000113\n\t\"\\x00E\\x03\\x06\\x00\\x00\\x01\\x14\" + // 0x00450306: 0x00000114\n\t\"\\x00e\\x03\\x06\\x00\\x00\\x01\\x15\" + // 0x00650306: 0x00000115\n\t\"\\x00E\\x03\\a\\x00\\x00\\x01\\x16\" + // 0x00450307: 0x00000116\n\t\"\\x00e\\x03\\a\\x00\\x00\\x01\\x17\" + // 0x00650307: 0x00000117\n\t\"\\x00E\\x03(\\x00\\x00\\x01\\x18\" + // 0x00450328: 0x00000118\n\t\"\\x00e\\x03(\\x00\\x00\\x01\\x19\" + // 0x00650328: 0x00000119\n\t\"\\x00E\\x03\\f\\x00\\x00\\x01\\x1a\" + // 0x0045030C: 0x0000011A\n\t\"\\x00e\\x03\\f\\x00\\x00\\x01\\x1b\" + // 0x0065030C: 0x0000011B\n\t\"\\x00G\\x03\\x02\\x00\\x00\\x01\\x1c\" + // 0x00470302: 0x0000011C\n\t\"\\x00g\\x03\\x02\\x00\\x00\\x01\\x1d\" + // 0x00670302: 0x0000011D\n\t\"\\x00G\\x03\\x06\\x00\\x00\\x01\\x1e\" + // 0x00470306: 0x0000011E\n\t\"\\x00g\\x03\\x06\\x00\\x00\\x01\\x1f\" + // 0x00670306: 0x0000011F\n\t\"\\x00G\\x03\\a\\x00\\x00\\x01 \" + // 0x00470307: 0x00000120\n\t\"\\x00g\\x03\\a\\x00\\x00\\x01!\" + // 0x00670307: 0x00000121\n\t\"\\x00G\\x03'\\x00\\x00\\x01\\\"\" + // 0x00470327: 0x00000122\n\t\"\\x00g\\x03'\\x00\\x00\\x01#\" + // 0x00670327: 0x00000123\n\t\"\\x00H\\x03\\x02\\x00\\x00\\x01$\" + // 0x00480302: 0x00000124\n\t\"\\x00h\\x03\\x02\\x00\\x00\\x01%\" + // 0x00680302: 0x00000125\n\t\"\\x00I\\x03\\x03\\x00\\x00\\x01(\" + // 0x00490303: 0x00000128\n\t\"\\x00i\\x03\\x03\\x00\\x00\\x01)\" + // 0x00690303: 0x00000129\n\t\"\\x00I\\x03\\x04\\x00\\x00\\x01*\" + // 0x00490304: 0x0000012A\n\t\"\\x00i\\x03\\x04\\x00\\x00\\x01+\" + // 0x00690304: 0x0000012B\n\t\"\\x00I\\x03\\x06\\x00\\x00\\x01,\" + // 0x00490306: 0x0000012C\n\t\"\\x00i\\x03\\x06\\x00\\x00\\x01-\" + // 0x00690306: 0x0000012D\n\t\"\\x00I\\x03(\\x00\\x00\\x01.\" + // 0x00490328: 0x0000012E\n\t\"\\x00i\\x03(\\x00\\x00\\x01/\" + // 0x00690328: 0x0000012F\n\t\"\\x00I\\x03\\a\\x00\\x00\\x010\" + // 0x00490307: 0x00000130\n\t\"\\x00J\\x03\\x02\\x00\\x00\\x014\" + // 0x004A0302: 0x00000134\n\t\"\\x00j\\x03\\x02\\x00\\x00\\x015\" + // 0x006A0302: 0x00000135\n\t\"\\x00K\\x03'\\x00\\x00\\x016\" + // 0x004B0327: 0x00000136\n\t\"\\x00k\\x03'\\x00\\x00\\x017\" + // 0x006B0327: 0x00000137\n\t\"\\x00L\\x03\\x01\\x00\\x00\\x019\" + // 0x004C0301: 0x00000139\n\t\"\\x00l\\x03\\x01\\x00\\x00\\x01:\" + // 0x006C0301: 0x0000013A\n\t\"\\x00L\\x03'\\x00\\x00\\x01;\" + // 0x004C0327: 0x0000013B\n\t\"\\x00l\\x03'\\x00\\x00\\x01<\" + // 0x006C0327: 0x0000013C\n\t\"\\x00L\\x03\\f\\x00\\x00\\x01=\" + // 0x004C030C: 0x0000013D\n\t\"\\x00l\\x03\\f\\x00\\x00\\x01>\" + // 0x006C030C: 0x0000013E\n\t\"\\x00N\\x03\\x01\\x00\\x00\\x01C\" + // 0x004E0301: 0x00000143\n\t\"\\x00n\\x03\\x01\\x00\\x00\\x01D\" + // 0x006E0301: 0x00000144\n\t\"\\x00N\\x03'\\x00\\x00\\x01E\" + // 0x004E0327: 0x00000145\n\t\"\\x00n\\x03'\\x00\\x00\\x01F\" + // 0x006E0327: 0x00000146\n\t\"\\x00N\\x03\\f\\x00\\x00\\x01G\" + // 0x004E030C: 0x00000147\n\t\"\\x00n\\x03\\f\\x00\\x00\\x01H\" + // 0x006E030C: 0x00000148\n\t\"\\x00O\\x03\\x04\\x00\\x00\\x01L\" + // 0x004F0304: 0x0000014C\n\t\"\\x00o\\x03\\x04\\x00\\x00\\x01M\" + // 0x006F0304: 0x0000014D\n\t\"\\x00O\\x03\\x06\\x00\\x00\\x01N\" + // 0x004F0306: 0x0000014E\n\t\"\\x00o\\x03\\x06\\x00\\x00\\x01O\" + // 0x006F0306: 0x0000014F\n\t\"\\x00O\\x03\\v\\x00\\x00\\x01P\" + // 0x004F030B: 0x00000150\n\t\"\\x00o\\x03\\v\\x00\\x00\\x01Q\" + // 0x006F030B: 0x00000151\n\t\"\\x00R\\x03\\x01\\x00\\x00\\x01T\" + // 0x00520301: 0x00000154\n\t\"\\x00r\\x03\\x01\\x00\\x00\\x01U\" + // 0x00720301: 0x00000155\n\t\"\\x00R\\x03'\\x00\\x00\\x01V\" + // 0x00520327: 0x00000156\n\t\"\\x00r\\x03'\\x00\\x00\\x01W\" + // 0x00720327: 0x00000157\n\t\"\\x00R\\x03\\f\\x00\\x00\\x01X\" + // 0x0052030C: 0x00000158\n\t\"\\x00r\\x03\\f\\x00\\x00\\x01Y\" + // 0x0072030C: 0x00000159\n\t\"\\x00S\\x03\\x01\\x00\\x00\\x01Z\" + // 0x00530301: 0x0000015A\n\t\"\\x00s\\x03\\x01\\x00\\x00\\x01[\" + // 0x00730301: 0x0000015B\n\t\"\\x00S\\x03\\x02\\x00\\x00\\x01\\\\\" + // 0x00530302: 0x0000015C\n\t\"\\x00s\\x03\\x02\\x00\\x00\\x01]\" + // 0x00730302: 0x0000015D\n\t\"\\x00S\\x03'\\x00\\x00\\x01^\" + // 0x00530327: 0x0000015E\n\t\"\\x00s\\x03'\\x00\\x00\\x01_\" + // 0x00730327: 0x0000015F\n\t\"\\x00S\\x03\\f\\x00\\x00\\x01`\" + // 0x0053030C: 0x00000160\n\t\"\\x00s\\x03\\f\\x00\\x00\\x01a\" + // 0x0073030C: 0x00000161\n\t\"\\x00T\\x03'\\x00\\x00\\x01b\" + // 0x00540327: 0x00000162\n\t\"\\x00t\\x03'\\x00\\x00\\x01c\" + // 0x00740327: 0x00000163\n\t\"\\x00T\\x03\\f\\x00\\x00\\x01d\" + // 0x0054030C: 0x00000164\n\t\"\\x00t\\x03\\f\\x00\\x00\\x01e\" + // 0x0074030C: 0x00000165\n\t\"\\x00U\\x03\\x03\\x00\\x00\\x01h\" + // 0x00550303: 0x00000168\n\t\"\\x00u\\x03\\x03\\x00\\x00\\x01i\" + // 0x00750303: 0x00000169\n\t\"\\x00U\\x03\\x04\\x00\\x00\\x01j\" + // 0x00550304: 0x0000016A\n\t\"\\x00u\\x03\\x04\\x00\\x00\\x01k\" + // 0x00750304: 0x0000016B\n\t\"\\x00U\\x03\\x06\\x00\\x00\\x01l\" + // 0x00550306: 0x0000016C\n\t\"\\x00u\\x03\\x06\\x00\\x00\\x01m\" + // 0x00750306: 0x0000016D\n\t\"\\x00U\\x03\\n\\x00\\x00\\x01n\" + // 0x0055030A: 0x0000016E\n\t\"\\x00u\\x03\\n\\x00\\x00\\x01o\" + // 0x0075030A: 0x0000016F\n\t\"\\x00U\\x03\\v\\x00\\x00\\x01p\" + // 0x0055030B: 0x00000170\n\t\"\\x00u\\x03\\v\\x00\\x00\\x01q\" + // 0x0075030B: 0x00000171\n\t\"\\x00U\\x03(\\x00\\x00\\x01r\" + // 0x00550328: 0x00000172\n\t\"\\x00u\\x03(\\x00\\x00\\x01s\" + // 0x00750328: 0x00000173\n\t\"\\x00W\\x03\\x02\\x00\\x00\\x01t\" + // 0x00570302: 0x00000174\n\t\"\\x00w\\x03\\x02\\x00\\x00\\x01u\" + // 0x00770302: 0x00000175\n\t\"\\x00Y\\x03\\x02\\x00\\x00\\x01v\" + // 0x00590302: 0x00000176\n\t\"\\x00y\\x03\\x02\\x00\\x00\\x01w\" + // 0x00790302: 0x00000177\n\t\"\\x00Y\\x03\\b\\x00\\x00\\x01x\" + // 0x00590308: 0x00000178\n\t\"\\x00Z\\x03\\x01\\x00\\x00\\x01y\" + // 0x005A0301: 0x00000179\n\t\"\\x00z\\x03\\x01\\x00\\x00\\x01z\" + // 0x007A0301: 0x0000017A\n\t\"\\x00Z\\x03\\a\\x00\\x00\\x01{\" + // 0x005A0307: 0x0000017B\n\t\"\\x00z\\x03\\a\\x00\\x00\\x01|\" + // 0x007A0307: 0x0000017C\n\t\"\\x00Z\\x03\\f\\x00\\x00\\x01}\" + // 0x005A030C: 0x0000017D\n\t\"\\x00z\\x03\\f\\x00\\x00\\x01~\" + // 0x007A030C: 0x0000017E\n\t\"\\x00O\\x03\\x1b\\x00\\x00\\x01\\xa0\" + // 0x004F031B: 0x000001A0\n\t\"\\x00o\\x03\\x1b\\x00\\x00\\x01\\xa1\" + // 0x006F031B: 0x000001A1\n\t\"\\x00U\\x03\\x1b\\x00\\x00\\x01\\xaf\" + // 0x0055031B: 0x000001AF\n\t\"\\x00u\\x03\\x1b\\x00\\x00\\x01\\xb0\" + // 0x0075031B: 0x000001B0\n\t\"\\x00A\\x03\\f\\x00\\x00\\x01\\xcd\" + // 0x0041030C: 0x000001CD\n\t\"\\x00a\\x03\\f\\x00\\x00\\x01\\xce\" + // 0x0061030C: 0x000001CE\n\t\"\\x00I\\x03\\f\\x00\\x00\\x01\\xcf\" + // 0x0049030C: 0x000001CF\n\t\"\\x00i\\x03\\f\\x00\\x00\\x01\\xd0\" + // 0x0069030C: 0x000001D0\n\t\"\\x00O\\x03\\f\\x00\\x00\\x01\\xd1\" + // 0x004F030C: 0x000001D1\n\t\"\\x00o\\x03\\f\\x00\\x00\\x01\\xd2\" + // 0x006F030C: 0x000001D2\n\t\"\\x00U\\x03\\f\\x00\\x00\\x01\\xd3\" + // 0x0055030C: 0x000001D3\n\t\"\\x00u\\x03\\f\\x00\\x00\\x01\\xd4\" + // 0x0075030C: 0x000001D4\n\t\"\\x00\\xdc\\x03\\x04\\x00\\x00\\x01\\xd5\" + // 0x00DC0304: 0x000001D5\n\t\"\\x00\\xfc\\x03\\x04\\x00\\x00\\x01\\xd6\" + // 0x00FC0304: 0x000001D6\n\t\"\\x00\\xdc\\x03\\x01\\x00\\x00\\x01\\xd7\" + // 0x00DC0301: 0x000001D7\n\t\"\\x00\\xfc\\x03\\x01\\x00\\x00\\x01\\xd8\" + // 0x00FC0301: 0x000001D8\n\t\"\\x00\\xdc\\x03\\f\\x00\\x00\\x01\\xd9\" + // 0x00DC030C: 0x000001D9\n\t\"\\x00\\xfc\\x03\\f\\x00\\x00\\x01\\xda\" + // 0x00FC030C: 0x000001DA\n\t\"\\x00\\xdc\\x03\\x00\\x00\\x00\\x01\\xdb\" + // 0x00DC0300: 0x000001DB\n\t\"\\x00\\xfc\\x03\\x00\\x00\\x00\\x01\\xdc\" + // 0x00FC0300: 0x000001DC\n\t\"\\x00\\xc4\\x03\\x04\\x00\\x00\\x01\\xde\" + // 0x00C40304: 0x000001DE\n\t\"\\x00\\xe4\\x03\\x04\\x00\\x00\\x01\\xdf\" + // 0x00E40304: 0x000001DF\n\t\"\\x02&\\x03\\x04\\x00\\x00\\x01\\xe0\" + // 0x02260304: 0x000001E0\n\t\"\\x02'\\x03\\x04\\x00\\x00\\x01\\xe1\" + // 0x02270304: 0x000001E1\n\t\"\\x00\\xc6\\x03\\x04\\x00\\x00\\x01\\xe2\" + // 0x00C60304: 0x000001E2\n\t\"\\x00\\xe6\\x03\\x04\\x00\\x00\\x01\\xe3\" + // 0x00E60304: 0x000001E3\n\t\"\\x00G\\x03\\f\\x00\\x00\\x01\\xe6\" + // 0x0047030C: 0x000001E6\n\t\"\\x00g\\x03\\f\\x00\\x00\\x01\\xe7\" + // 0x0067030C: 0x000001E7\n\t\"\\x00K\\x03\\f\\x00\\x00\\x01\\xe8\" + // 0x004B030C: 0x000001E8\n\t\"\\x00k\\x03\\f\\x00\\x00\\x01\\xe9\" + // 0x006B030C: 0x000001E9\n\t\"\\x00O\\x03(\\x00\\x00\\x01\\xea\" + // 0x004F0328: 0x000001EA\n\t\"\\x00o\\x03(\\x00\\x00\\x01\\xeb\" + // 0x006F0328: 0x000001EB\n\t\"\\x01\\xea\\x03\\x04\\x00\\x00\\x01\\xec\" + // 0x01EA0304: 0x000001EC\n\t\"\\x01\\xeb\\x03\\x04\\x00\\x00\\x01\\xed\" + // 0x01EB0304: 0x000001ED\n\t\"\\x01\\xb7\\x03\\f\\x00\\x00\\x01\\xee\" + // 0x01B7030C: 0x000001EE\n\t\"\\x02\\x92\\x03\\f\\x00\\x00\\x01\\xef\" + // 0x0292030C: 0x000001EF\n\t\"\\x00j\\x03\\f\\x00\\x00\\x01\\xf0\" + // 0x006A030C: 0x000001F0\n\t\"\\x00G\\x03\\x01\\x00\\x00\\x01\\xf4\" + // 0x00470301: 0x000001F4\n\t\"\\x00g\\x03\\x01\\x00\\x00\\x01\\xf5\" + // 0x00670301: 0x000001F5\n\t\"\\x00N\\x03\\x00\\x00\\x00\\x01\\xf8\" + // 0x004E0300: 0x000001F8\n\t\"\\x00n\\x03\\x00\\x00\\x00\\x01\\xf9\" + // 0x006E0300: 0x000001F9\n\t\"\\x00\\xc5\\x03\\x01\\x00\\x00\\x01\\xfa\" + // 0x00C50301: 0x000001FA\n\t\"\\x00\\xe5\\x03\\x01\\x00\\x00\\x01\\xfb\" + // 0x00E50301: 0x000001FB\n\t\"\\x00\\xc6\\x03\\x01\\x00\\x00\\x01\\xfc\" + // 0x00C60301: 0x000001FC\n\t\"\\x00\\xe6\\x03\\x01\\x00\\x00\\x01\\xfd\" + // 0x00E60301: 0x000001FD\n\t\"\\x00\\xd8\\x03\\x01\\x00\\x00\\x01\\xfe\" + // 0x00D80301: 0x000001FE\n\t\"\\x00\\xf8\\x03\\x01\\x00\\x00\\x01\\xff\" + // 0x00F80301: 0x000001FF\n\t\"\\x00A\\x03\\x0f\\x00\\x00\\x02\\x00\" + // 0x0041030F: 0x00000200\n\t\"\\x00a\\x03\\x0f\\x00\\x00\\x02\\x01\" + // 0x0061030F: 0x00000201\n\t\"\\x00A\\x03\\x11\\x00\\x00\\x02\\x02\" + // 0x00410311: 0x00000202\n\t\"\\x00a\\x03\\x11\\x00\\x00\\x02\\x03\" + // 0x00610311: 0x00000203\n\t\"\\x00E\\x03\\x0f\\x00\\x00\\x02\\x04\" + // 0x0045030F: 0x00000204\n\t\"\\x00e\\x03\\x0f\\x00\\x00\\x02\\x05\" + // 0x0065030F: 0x00000205\n\t\"\\x00E\\x03\\x11\\x00\\x00\\x02\\x06\" + // 0x00450311: 0x00000206\n\t\"\\x00e\\x03\\x11\\x00\\x00\\x02\\a\" + // 0x00650311: 0x00000207\n\t\"\\x00I\\x03\\x0f\\x00\\x00\\x02\\b\" + // 0x0049030F: 0x00000208\n\t\"\\x00i\\x03\\x0f\\x00\\x00\\x02\\t\" + // 0x0069030F: 0x00000209\n\t\"\\x00I\\x03\\x11\\x00\\x00\\x02\\n\" + // 0x00490311: 0x0000020A\n\t\"\\x00i\\x03\\x11\\x00\\x00\\x02\\v\" + // 0x00690311: 0x0000020B\n\t\"\\x00O\\x03\\x0f\\x00\\x00\\x02\\f\" + // 0x004F030F: 0x0000020C\n\t\"\\x00o\\x03\\x0f\\x00\\x00\\x02\\r\" + // 0x006F030F: 0x0000020D\n\t\"\\x00O\\x03\\x11\\x00\\x00\\x02\\x0e\" + // 0x004F0311: 0x0000020E\n\t\"\\x00o\\x03\\x11\\x00\\x00\\x02\\x0f\" + // 0x006F0311: 0x0000020F\n\t\"\\x00R\\x03\\x0f\\x00\\x00\\x02\\x10\" + // 0x0052030F: 0x00000210\n\t\"\\x00r\\x03\\x0f\\x00\\x00\\x02\\x11\" + // 0x0072030F: 0x00000211\n\t\"\\x00R\\x03\\x11\\x00\\x00\\x02\\x12\" + // 0x00520311: 0x00000212\n\t\"\\x00r\\x03\\x11\\x00\\x00\\x02\\x13\" + // 0x00720311: 0x00000213\n\t\"\\x00U\\x03\\x0f\\x00\\x00\\x02\\x14\" + // 0x0055030F: 0x00000214\n\t\"\\x00u\\x03\\x0f\\x00\\x00\\x02\\x15\" + // 0x0075030F: 0x00000215\n\t\"\\x00U\\x03\\x11\\x00\\x00\\x02\\x16\" + // 0x00550311: 0x00000216\n\t\"\\x00u\\x03\\x11\\x00\\x00\\x02\\x17\" + // 0x00750311: 0x00000217\n\t\"\\x00S\\x03&\\x00\\x00\\x02\\x18\" + // 0x00530326: 0x00000218\n\t\"\\x00s\\x03&\\x00\\x00\\x02\\x19\" + // 0x00730326: 0x00000219\n\t\"\\x00T\\x03&\\x00\\x00\\x02\\x1a\" + // 0x00540326: 0x0000021A\n\t\"\\x00t\\x03&\\x00\\x00\\x02\\x1b\" + // 0x00740326: 0x0000021B\n\t\"\\x00H\\x03\\f\\x00\\x00\\x02\\x1e\" + // 0x0048030C: 0x0000021E\n\t\"\\x00h\\x03\\f\\x00\\x00\\x02\\x1f\" + // 0x0068030C: 0x0000021F\n\t\"\\x00A\\x03\\a\\x00\\x00\\x02&\" + // 0x00410307: 0x00000226\n\t\"\\x00a\\x03\\a\\x00\\x00\\x02'\" + // 0x00610307: 0x00000227\n\t\"\\x00E\\x03'\\x00\\x00\\x02(\" + // 0x00450327: 0x00000228\n\t\"\\x00e\\x03'\\x00\\x00\\x02)\" + // 0x00650327: 0x00000229\n\t\"\\x00\\xd6\\x03\\x04\\x00\\x00\\x02*\" + // 0x00D60304: 0x0000022A\n\t\"\\x00\\xf6\\x03\\x04\\x00\\x00\\x02+\" + // 0x00F60304: 0x0000022B\n\t\"\\x00\\xd5\\x03\\x04\\x00\\x00\\x02,\" + // 0x00D50304: 0x0000022C\n\t\"\\x00\\xf5\\x03\\x04\\x00\\x00\\x02-\" + // 0x00F50304: 0x0000022D\n\t\"\\x00O\\x03\\a\\x00\\x00\\x02.\" + // 0x004F0307: 0x0000022E\n\t\"\\x00o\\x03\\a\\x00\\x00\\x02/\" + // 0x006F0307: 0x0000022F\n\t\"\\x02.\\x03\\x04\\x00\\x00\\x020\" + // 0x022E0304: 0x00000230\n\t\"\\x02/\\x03\\x04\\x00\\x00\\x021\" + // 0x022F0304: 0x00000231\n\t\"\\x00Y\\x03\\x04\\x00\\x00\\x022\" + // 0x00590304: 0x00000232\n\t\"\\x00y\\x03\\x04\\x00\\x00\\x023\" + // 0x00790304: 0x00000233\n\t\"\\x00\\xa8\\x03\\x01\\x00\\x00\\x03\\x85\" + // 0x00A80301: 0x00000385\n\t\"\\x03\\x91\\x03\\x01\\x00\\x00\\x03\\x86\" + // 0x03910301: 0x00000386\n\t\"\\x03\\x95\\x03\\x01\\x00\\x00\\x03\\x88\" + // 0x03950301: 0x00000388\n\t\"\\x03\\x97\\x03\\x01\\x00\\x00\\x03\\x89\" + // 0x03970301: 0x00000389\n\t\"\\x03\\x99\\x03\\x01\\x00\\x00\\x03\\x8a\" + // 0x03990301: 0x0000038A\n\t\"\\x03\\x9f\\x03\\x01\\x00\\x00\\x03\\x8c\" + // 0x039F0301: 0x0000038C\n\t\"\\x03\\xa5\\x03\\x01\\x00\\x00\\x03\\x8e\" + // 0x03A50301: 0x0000038E\n\t\"\\x03\\xa9\\x03\\x01\\x00\\x00\\x03\\x8f\" + // 0x03A90301: 0x0000038F\n\t\"\\x03\\xca\\x03\\x01\\x00\\x00\\x03\\x90\" + // 0x03CA0301: 0x00000390\n\t\"\\x03\\x99\\x03\\b\\x00\\x00\\x03\\xaa\" + // 0x03990308: 0x000003AA\n\t\"\\x03\\xa5\\x03\\b\\x00\\x00\\x03\\xab\" + // 0x03A50308: 0x000003AB\n\t\"\\x03\\xb1\\x03\\x01\\x00\\x00\\x03\\xac\" + // 0x03B10301: 0x000003AC\n\t\"\\x03\\xb5\\x03\\x01\\x00\\x00\\x03\\xad\" + // 0x03B50301: 0x000003AD\n\t\"\\x03\\xb7\\x03\\x01\\x00\\x00\\x03\\xae\" + // 0x03B70301: 0x000003AE\n\t\"\\x03\\xb9\\x03\\x01\\x00\\x00\\x03\\xaf\" + // 0x03B90301: 0x000003AF\n\t\"\\x03\\xcb\\x03\\x01\\x00\\x00\\x03\\xb0\" + // 0x03CB0301: 0x000003B0\n\t\"\\x03\\xb9\\x03\\b\\x00\\x00\\x03\\xca\" + // 0x03B90308: 0x000003CA\n\t\"\\x03\\xc5\\x03\\b\\x00\\x00\\x03\\xcb\" + // 0x03C50308: 0x000003CB\n\t\"\\x03\\xbf\\x03\\x01\\x00\\x00\\x03\\xcc\" + // 0x03BF0301: 0x000003CC\n\t\"\\x03\\xc5\\x03\\x01\\x00\\x00\\x03\\xcd\" + // 0x03C50301: 0x000003CD\n\t\"\\x03\\xc9\\x03\\x01\\x00\\x00\\x03\\xce\" + // 0x03C90301: 0x000003CE\n\t\"\\x03\\xd2\\x03\\x01\\x00\\x00\\x03\\xd3\" + // 0x03D20301: 0x000003D3\n\t\"\\x03\\xd2\\x03\\b\\x00\\x00\\x03\\xd4\" + // 0x03D20308: 0x000003D4\n\t\"\\x04\\x15\\x03\\x00\\x00\\x00\\x04\\x00\" + // 0x04150300: 0x00000400\n\t\"\\x04\\x15\\x03\\b\\x00\\x00\\x04\\x01\" + // 0x04150308: 0x00000401\n\t\"\\x04\\x13\\x03\\x01\\x00\\x00\\x04\\x03\" + // 0x04130301: 0x00000403\n\t\"\\x04\\x06\\x03\\b\\x00\\x00\\x04\\a\" + // 0x04060308: 0x00000407\n\t\"\\x04\\x1a\\x03\\x01\\x00\\x00\\x04\\f\" + // 0x041A0301: 0x0000040C\n\t\"\\x04\\x18\\x03\\x00\\x00\\x00\\x04\\r\" + // 0x04180300: 0x0000040D\n\t\"\\x04#\\x03\\x06\\x00\\x00\\x04\\x0e\" + // 0x04230306: 0x0000040E\n\t\"\\x04\\x18\\x03\\x06\\x00\\x00\\x04\\x19\" + // 0x04180306: 0x00000419\n\t\"\\x048\\x03\\x06\\x00\\x00\\x049\" + // 0x04380306: 0x00000439\n\t\"\\x045\\x03\\x00\\x00\\x00\\x04P\" + // 0x04350300: 0x00000450\n\t\"\\x045\\x03\\b\\x00\\x00\\x04Q\" + // 0x04350308: 0x00000451\n\t\"\\x043\\x03\\x01\\x00\\x00\\x04S\" + // 0x04330301: 0x00000453\n\t\"\\x04V\\x03\\b\\x00\\x00\\x04W\" + // 0x04560308: 0x00000457\n\t\"\\x04:\\x03\\x01\\x00\\x00\\x04\\\\\" + // 0x043A0301: 0x0000045C\n\t\"\\x048\\x03\\x00\\x00\\x00\\x04]\" + // 0x04380300: 0x0000045D\n\t\"\\x04C\\x03\\x06\\x00\\x00\\x04^\" + // 0x04430306: 0x0000045E\n\t\"\\x04t\\x03\\x0f\\x00\\x00\\x04v\" + // 0x0474030F: 0x00000476\n\t\"\\x04u\\x03\\x0f\\x00\\x00\\x04w\" + // 0x0475030F: 0x00000477\n\t\"\\x04\\x16\\x03\\x06\\x00\\x00\\x04\\xc1\" + // 0x04160306: 0x000004C1\n\t\"\\x046\\x03\\x06\\x00\\x00\\x04\\xc2\" + // 0x04360306: 0x000004C2\n\t\"\\x04\\x10\\x03\\x06\\x00\\x00\\x04\\xd0\" + // 0x04100306: 0x000004D0\n\t\"\\x040\\x03\\x06\\x00\\x00\\x04\\xd1\" + // 0x04300306: 0x000004D1\n\t\"\\x04\\x10\\x03\\b\\x00\\x00\\x04\\xd2\" + // 0x04100308: 0x000004D2\n\t\"\\x040\\x03\\b\\x00\\x00\\x04\\xd3\" + // 0x04300308: 0x000004D3\n\t\"\\x04\\x15\\x03\\x06\\x00\\x00\\x04\\xd6\" + // 0x04150306: 0x000004D6\n\t\"\\x045\\x03\\x06\\x00\\x00\\x04\\xd7\" + // 0x04350306: 0x000004D7\n\t\"\\x04\\xd8\\x03\\b\\x00\\x00\\x04\\xda\" + // 0x04D80308: 0x000004DA\n\t\"\\x04\\xd9\\x03\\b\\x00\\x00\\x04\\xdb\" + // 0x04D90308: 0x000004DB\n\t\"\\x04\\x16\\x03\\b\\x00\\x00\\x04\\xdc\" + // 0x04160308: 0x000004DC\n\t\"\\x046\\x03\\b\\x00\\x00\\x04\\xdd\" + // 0x04360308: 0x000004DD\n\t\"\\x04\\x17\\x03\\b\\x00\\x00\\x04\\xde\" + // 0x04170308: 0x000004DE\n\t\"\\x047\\x03\\b\\x00\\x00\\x04\\xdf\" + // 0x04370308: 0x000004DF\n\t\"\\x04\\x18\\x03\\x04\\x00\\x00\\x04\\xe2\" + // 0x04180304: 0x000004E2\n\t\"\\x048\\x03\\x04\\x00\\x00\\x04\\xe3\" + // 0x04380304: 0x000004E3\n\t\"\\x04\\x18\\x03\\b\\x00\\x00\\x04\\xe4\" + // 0x04180308: 0x000004E4\n\t\"\\x048\\x03\\b\\x00\\x00\\x04\\xe5\" + // 0x04380308: 0x000004E5\n\t\"\\x04\\x1e\\x03\\b\\x00\\x00\\x04\\xe6\" + // 0x041E0308: 0x000004E6\n\t\"\\x04>\\x03\\b\\x00\\x00\\x04\\xe7\" + // 0x043E0308: 0x000004E7\n\t\"\\x04\\xe8\\x03\\b\\x00\\x00\\x04\\xea\" + // 0x04E80308: 0x000004EA\n\t\"\\x04\\xe9\\x03\\b\\x00\\x00\\x04\\xeb\" + // 0x04E90308: 0x000004EB\n\t\"\\x04-\\x03\\b\\x00\\x00\\x04\\xec\" + // 0x042D0308: 0x000004EC\n\t\"\\x04M\\x03\\b\\x00\\x00\\x04\\xed\" + // 0x044D0308: 0x000004ED\n\t\"\\x04#\\x03\\x04\\x00\\x00\\x04\\xee\" + // 0x04230304: 0x000004EE\n\t\"\\x04C\\x03\\x04\\x00\\x00\\x04\\xef\" + // 0x04430304: 0x000004EF\n\t\"\\x04#\\x03\\b\\x00\\x00\\x04\\xf0\" + // 0x04230308: 0x000004F0\n\t\"\\x04C\\x03\\b\\x00\\x00\\x04\\xf1\" + // 0x04430308: 0x000004F1\n\t\"\\x04#\\x03\\v\\x00\\x00\\x04\\xf2\" + // 0x0423030B: 0x000004F2\n\t\"\\x04C\\x03\\v\\x00\\x00\\x04\\xf3\" + // 0x0443030B: 0x000004F3\n\t\"\\x04'\\x03\\b\\x00\\x00\\x04\\xf4\" + // 0x04270308: 0x000004F4\n\t\"\\x04G\\x03\\b\\x00\\x00\\x04\\xf5\" + // 0x04470308: 0x000004F5\n\t\"\\x04+\\x03\\b\\x00\\x00\\x04\\xf8\" + // 0x042B0308: 0x000004F8\n\t\"\\x04K\\x03\\b\\x00\\x00\\x04\\xf9\" + // 0x044B0308: 0x000004F9\n\t\"\\x06'\\x06S\\x00\\x00\\x06\\\"\" + // 0x06270653: 0x00000622\n\t\"\\x06'\\x06T\\x00\\x00\\x06#\" + // 0x06270654: 0x00000623\n\t\"\\x06H\\x06T\\x00\\x00\\x06$\" + // 0x06480654: 0x00000624\n\t\"\\x06'\\x06U\\x00\\x00\\x06%\" + // 0x06270655: 0x00000625\n\t\"\\x06J\\x06T\\x00\\x00\\x06&\" + // 0x064A0654: 0x00000626\n\t\"\\x06\\xd5\\x06T\\x00\\x00\\x06\\xc0\" + // 0x06D50654: 0x000006C0\n\t\"\\x06\\xc1\\x06T\\x00\\x00\\x06\\xc2\" + // 0x06C10654: 0x000006C2\n\t\"\\x06\\xd2\\x06T\\x00\\x00\\x06\\xd3\" + // 0x06D20654: 0x000006D3\n\t\"\\t(\\t<\\x00\\x00\\t)\" + // 0x0928093C: 0x00000929\n\t\"\\t0\\t<\\x00\\x00\\t1\" + // 0x0930093C: 0x00000931\n\t\"\\t3\\t<\\x00\\x00\\t4\" + // 0x0933093C: 0x00000934\n\t\"\\t\\xc7\\t\\xbe\\x00\\x00\\t\\xcb\" + // 0x09C709BE: 0x000009CB\n\t\"\\t\\xc7\\t\\xd7\\x00\\x00\\t\\xcc\" + // 0x09C709D7: 0x000009CC\n\t\"\\vG\\vV\\x00\\x00\\vH\" + // 0x0B470B56: 0x00000B48\n\t\"\\vG\\v>\\x00\\x00\\vK\" + // 0x0B470B3E: 0x00000B4B\n\t\"\\vG\\vW\\x00\\x00\\vL\" + // 0x0B470B57: 0x00000B4C\n\t\"\\v\\x92\\v\\xd7\\x00\\x00\\v\\x94\" + // 0x0B920BD7: 0x00000B94\n\t\"\\v\\xc6\\v\\xbe\\x00\\x00\\v\\xca\" + // 0x0BC60BBE: 0x00000BCA\n\t\"\\v\\xc7\\v\\xbe\\x00\\x00\\v\\xcb\" + // 0x0BC70BBE: 0x00000BCB\n\t\"\\v\\xc6\\v\\xd7\\x00\\x00\\v\\xcc\" + // 0x0BC60BD7: 0x00000BCC\n\t\"\\fF\\fV\\x00\\x00\\fH\" + // 0x0C460C56: 0x00000C48\n\t\"\\f\\xbf\\f\\xd5\\x00\\x00\\f\\xc0\" + // 0x0CBF0CD5: 0x00000CC0\n\t\"\\f\\xc6\\f\\xd5\\x00\\x00\\f\\xc7\" + // 0x0CC60CD5: 0x00000CC7\n\t\"\\f\\xc6\\f\\xd6\\x00\\x00\\f\\xc8\" + // 0x0CC60CD6: 0x00000CC8\n\t\"\\f\\xc6\\f\\xc2\\x00\\x00\\f\\xca\" + // 0x0CC60CC2: 0x00000CCA\n\t\"\\f\\xca\\f\\xd5\\x00\\x00\\f\\xcb\" + // 0x0CCA0CD5: 0x00000CCB\n\t\"\\rF\\r>\\x00\\x00\\rJ\" + // 0x0D460D3E: 0x00000D4A\n\t\"\\rG\\r>\\x00\\x00\\rK\" + // 0x0D470D3E: 0x00000D4B\n\t\"\\rF\\rW\\x00\\x00\\rL\" + // 0x0D460D57: 0x00000D4C\n\t\"\\r\\xd9\\r\\xca\\x00\\x00\\r\\xda\" + // 0x0DD90DCA: 0x00000DDA\n\t\"\\r\\xd9\\r\\xcf\\x00\\x00\\r\\xdc\" + // 0x0DD90DCF: 0x00000DDC\n\t\"\\r\\xdc\\r\\xca\\x00\\x00\\r\\xdd\" + // 0x0DDC0DCA: 0x00000DDD\n\t\"\\r\\xd9\\r\\xdf\\x00\\x00\\r\\xde\" + // 0x0DD90DDF: 0x00000DDE\n\t\"\\x10%\\x10.\\x00\\x00\\x10&\" + // 0x1025102E: 0x00001026\n\t\"\\x1b\\x05\\x1b5\\x00\\x00\\x1b\\x06\" + // 0x1B051B35: 0x00001B06\n\t\"\\x1b\\a\\x1b5\\x00\\x00\\x1b\\b\" + // 0x1B071B35: 0x00001B08\n\t\"\\x1b\\t\\x1b5\\x00\\x00\\x1b\\n\" + // 0x1B091B35: 0x00001B0A\n\t\"\\x1b\\v\\x1b5\\x00\\x00\\x1b\\f\" + // 0x1B0B1B35: 0x00001B0C\n\t\"\\x1b\\r\\x1b5\\x00\\x00\\x1b\\x0e\" + // 0x1B0D1B35: 0x00001B0E\n\t\"\\x1b\\x11\\x1b5\\x00\\x00\\x1b\\x12\" + // 0x1B111B35: 0x00001B12\n\t\"\\x1b:\\x1b5\\x00\\x00\\x1b;\" + // 0x1B3A1B35: 0x00001B3B\n\t\"\\x1b<\\x1b5\\x00\\x00\\x1b=\" + // 0x1B3C1B35: 0x00001B3D\n\t\"\\x1b>\\x1b5\\x00\\x00\\x1b@\" + // 0x1B3E1B35: 0x00001B40\n\t\"\\x1b?\\x1b5\\x00\\x00\\x1bA\" + // 0x1B3F1B35: 0x00001B41\n\t\"\\x1bB\\x1b5\\x00\\x00\\x1bC\" + // 0x1B421B35: 0x00001B43\n\t\"\\x00A\\x03%\\x00\\x00\\x1e\\x00\" + // 0x00410325: 0x00001E00\n\t\"\\x00a\\x03%\\x00\\x00\\x1e\\x01\" + // 0x00610325: 0x00001E01\n\t\"\\x00B\\x03\\a\\x00\\x00\\x1e\\x02\" + // 0x00420307: 0x00001E02\n\t\"\\x00b\\x03\\a\\x00\\x00\\x1e\\x03\" + // 0x00620307: 0x00001E03\n\t\"\\x00B\\x03#\\x00\\x00\\x1e\\x04\" + // 0x00420323: 0x00001E04\n\t\"\\x00b\\x03#\\x00\\x00\\x1e\\x05\" + // 0x00620323: 0x00001E05\n\t\"\\x00B\\x031\\x00\\x00\\x1e\\x06\" + // 0x00420331: 0x00001E06\n\t\"\\x00b\\x031\\x00\\x00\\x1e\\a\" + // 0x00620331: 0x00001E07\n\t\"\\x00\\xc7\\x03\\x01\\x00\\x00\\x1e\\b\" + // 0x00C70301: 0x00001E08\n\t\"\\x00\\xe7\\x03\\x01\\x00\\x00\\x1e\\t\" + // 0x00E70301: 0x00001E09\n\t\"\\x00D\\x03\\a\\x00\\x00\\x1e\\n\" + // 0x00440307: 0x00001E0A\n\t\"\\x00d\\x03\\a\\x00\\x00\\x1e\\v\" + // 0x00640307: 0x00001E0B\n\t\"\\x00D\\x03#\\x00\\x00\\x1e\\f\" + // 0x00440323: 0x00001E0C\n\t\"\\x00d\\x03#\\x00\\x00\\x1e\\r\" + // 0x00640323: 0x00001E0D\n\t\"\\x00D\\x031\\x00\\x00\\x1e\\x0e\" + // 0x00440331: 0x00001E0E\n\t\"\\x00d\\x031\\x00\\x00\\x1e\\x0f\" + // 0x00640331: 0x00001E0F\n\t\"\\x00D\\x03'\\x00\\x00\\x1e\\x10\" + // 0x00440327: 0x00001E10\n\t\"\\x00d\\x03'\\x00\\x00\\x1e\\x11\" + // 0x00640327: 0x00001E11\n\t\"\\x00D\\x03-\\x00\\x00\\x1e\\x12\" + // 0x0044032D: 0x00001E12\n\t\"\\x00d\\x03-\\x00\\x00\\x1e\\x13\" + // 0x0064032D: 0x00001E13\n\t\"\\x01\\x12\\x03\\x00\\x00\\x00\\x1e\\x14\" + // 0x01120300: 0x00001E14\n\t\"\\x01\\x13\\x03\\x00\\x00\\x00\\x1e\\x15\" + // 0x01130300: 0x00001E15\n\t\"\\x01\\x12\\x03\\x01\\x00\\x00\\x1e\\x16\" + // 0x01120301: 0x00001E16\n\t\"\\x01\\x13\\x03\\x01\\x00\\x00\\x1e\\x17\" + // 0x01130301: 0x00001E17\n\t\"\\x00E\\x03-\\x00\\x00\\x1e\\x18\" + // 0x0045032D: 0x00001E18\n\t\"\\x00e\\x03-\\x00\\x00\\x1e\\x19\" + // 0x0065032D: 0x00001E19\n\t\"\\x00E\\x030\\x00\\x00\\x1e\\x1a\" + // 0x00450330: 0x00001E1A\n\t\"\\x00e\\x030\\x00\\x00\\x1e\\x1b\" + // 0x00650330: 0x00001E1B\n\t\"\\x02(\\x03\\x06\\x00\\x00\\x1e\\x1c\" + // 0x02280306: 0x00001E1C\n\t\"\\x02)\\x03\\x06\\x00\\x00\\x1e\\x1d\" + // 0x02290306: 0x00001E1D\n\t\"\\x00F\\x03\\a\\x00\\x00\\x1e\\x1e\" + // 0x00460307: 0x00001E1E\n\t\"\\x00f\\x03\\a\\x00\\x00\\x1e\\x1f\" + // 0x00660307: 0x00001E1F\n\t\"\\x00G\\x03\\x04\\x00\\x00\\x1e \" + // 0x00470304: 0x00001E20\n\t\"\\x00g\\x03\\x04\\x00\\x00\\x1e!\" + // 0x00670304: 0x00001E21\n\t\"\\x00H\\x03\\a\\x00\\x00\\x1e\\\"\" + // 0x00480307: 0x00001E22\n\t\"\\x00h\\x03\\a\\x00\\x00\\x1e#\" + // 0x00680307: 0x00001E23\n\t\"\\x00H\\x03#\\x00\\x00\\x1e$\" + // 0x00480323: 0x00001E24\n\t\"\\x00h\\x03#\\x00\\x00\\x1e%\" + // 0x00680323: 0x00001E25\n\t\"\\x00H\\x03\\b\\x00\\x00\\x1e&\" + // 0x00480308: 0x00001E26\n\t\"\\x00h\\x03\\b\\x00\\x00\\x1e'\" + // 0x00680308: 0x00001E27\n\t\"\\x00H\\x03'\\x00\\x00\\x1e(\" + // 0x00480327: 0x00001E28\n\t\"\\x00h\\x03'\\x00\\x00\\x1e)\" + // 0x00680327: 0x00001E29\n\t\"\\x00H\\x03.\\x00\\x00\\x1e*\" + // 0x0048032E: 0x00001E2A\n\t\"\\x00h\\x03.\\x00\\x00\\x1e+\" + // 0x0068032E: 0x00001E2B\n\t\"\\x00I\\x030\\x00\\x00\\x1e,\" + // 0x00490330: 0x00001E2C\n\t\"\\x00i\\x030\\x00\\x00\\x1e-\" + // 0x00690330: 0x00001E2D\n\t\"\\x00\\xcf\\x03\\x01\\x00\\x00\\x1e.\" + // 0x00CF0301: 0x00001E2E\n\t\"\\x00\\xef\\x03\\x01\\x00\\x00\\x1e/\" + // 0x00EF0301: 0x00001E2F\n\t\"\\x00K\\x03\\x01\\x00\\x00\\x1e0\" + // 0x004B0301: 0x00001E30\n\t\"\\x00k\\x03\\x01\\x00\\x00\\x1e1\" + // 0x006B0301: 0x00001E31\n\t\"\\x00K\\x03#\\x00\\x00\\x1e2\" + // 0x004B0323: 0x00001E32\n\t\"\\x00k\\x03#\\x00\\x00\\x1e3\" + // 0x006B0323: 0x00001E33\n\t\"\\x00K\\x031\\x00\\x00\\x1e4\" + // 0x004B0331: 0x00001E34\n\t\"\\x00k\\x031\\x00\\x00\\x1e5\" + // 0x006B0331: 0x00001E35\n\t\"\\x00L\\x03#\\x00\\x00\\x1e6\" + // 0x004C0323: 0x00001E36\n\t\"\\x00l\\x03#\\x00\\x00\\x1e7\" + // 0x006C0323: 0x00001E37\n\t\"\\x1e6\\x03\\x04\\x00\\x00\\x1e8\" + // 0x1E360304: 0x00001E38\n\t\"\\x1e7\\x03\\x04\\x00\\x00\\x1e9\" + // 0x1E370304: 0x00001E39\n\t\"\\x00L\\x031\\x00\\x00\\x1e:\" + // 0x004C0331: 0x00001E3A\n\t\"\\x00l\\x031\\x00\\x00\\x1e;\" + // 0x006C0331: 0x00001E3B\n\t\"\\x00L\\x03-\\x00\\x00\\x1e<\" + // 0x004C032D: 0x00001E3C\n\t\"\\x00l\\x03-\\x00\\x00\\x1e=\" + // 0x006C032D: 0x00001E3D\n\t\"\\x00M\\x03\\x01\\x00\\x00\\x1e>\" + // 0x004D0301: 0x00001E3E\n\t\"\\x00m\\x03\\x01\\x00\\x00\\x1e?\" + // 0x006D0301: 0x00001E3F\n\t\"\\x00M\\x03\\a\\x00\\x00\\x1e@\" + // 0x004D0307: 0x00001E40\n\t\"\\x00m\\x03\\a\\x00\\x00\\x1eA\" + // 0x006D0307: 0x00001E41\n\t\"\\x00M\\x03#\\x00\\x00\\x1eB\" + // 0x004D0323: 0x00001E42\n\t\"\\x00m\\x03#\\x00\\x00\\x1eC\" + // 0x006D0323: 0x00001E43\n\t\"\\x00N\\x03\\a\\x00\\x00\\x1eD\" + // 0x004E0307: 0x00001E44\n\t\"\\x00n\\x03\\a\\x00\\x00\\x1eE\" + // 0x006E0307: 0x00001E45\n\t\"\\x00N\\x03#\\x00\\x00\\x1eF\" + // 0x004E0323: 0x00001E46\n\t\"\\x00n\\x03#\\x00\\x00\\x1eG\" + // 0x006E0323: 0x00001E47\n\t\"\\x00N\\x031\\x00\\x00\\x1eH\" + // 0x004E0331: 0x00001E48\n\t\"\\x00n\\x031\\x00\\x00\\x1eI\" + // 0x006E0331: 0x00001E49\n\t\"\\x00N\\x03-\\x00\\x00\\x1eJ\" + // 0x004E032D: 0x00001E4A\n\t\"\\x00n\\x03-\\x00\\x00\\x1eK\" + // 0x006E032D: 0x00001E4B\n\t\"\\x00\\xd5\\x03\\x01\\x00\\x00\\x1eL\" + // 0x00D50301: 0x00001E4C\n\t\"\\x00\\xf5\\x03\\x01\\x00\\x00\\x1eM\" + // 0x00F50301: 0x00001E4D\n\t\"\\x00\\xd5\\x03\\b\\x00\\x00\\x1eN\" + // 0x00D50308: 0x00001E4E\n\t\"\\x00\\xf5\\x03\\b\\x00\\x00\\x1eO\" + // 0x00F50308: 0x00001E4F\n\t\"\\x01L\\x03\\x00\\x00\\x00\\x1eP\" + // 0x014C0300: 0x00001E50\n\t\"\\x01M\\x03\\x00\\x00\\x00\\x1eQ\" + // 0x014D0300: 0x00001E51\n\t\"\\x01L\\x03\\x01\\x00\\x00\\x1eR\" + // 0x014C0301: 0x00001E52\n\t\"\\x01M\\x03\\x01\\x00\\x00\\x1eS\" + // 0x014D0301: 0x00001E53\n\t\"\\x00P\\x03\\x01\\x00\\x00\\x1eT\" + // 0x00500301: 0x00001E54\n\t\"\\x00p\\x03\\x01\\x00\\x00\\x1eU\" + // 0x00700301: 0x00001E55\n\t\"\\x00P\\x03\\a\\x00\\x00\\x1eV\" + // 0x00500307: 0x00001E56\n\t\"\\x00p\\x03\\a\\x00\\x00\\x1eW\" + // 0x00700307: 0x00001E57\n\t\"\\x00R\\x03\\a\\x00\\x00\\x1eX\" + // 0x00520307: 0x00001E58\n\t\"\\x00r\\x03\\a\\x00\\x00\\x1eY\" + // 0x00720307: 0x00001E59\n\t\"\\x00R\\x03#\\x00\\x00\\x1eZ\" + // 0x00520323: 0x00001E5A\n\t\"\\x00r\\x03#\\x00\\x00\\x1e[\" + // 0x00720323: 0x00001E5B\n\t\"\\x1eZ\\x03\\x04\\x00\\x00\\x1e\\\\\" + // 0x1E5A0304: 0x00001E5C\n\t\"\\x1e[\\x03\\x04\\x00\\x00\\x1e]\" + // 0x1E5B0304: 0x00001E5D\n\t\"\\x00R\\x031\\x00\\x00\\x1e^\" + // 0x00520331: 0x00001E5E\n\t\"\\x00r\\x031\\x00\\x00\\x1e_\" + // 0x00720331: 0x00001E5F\n\t\"\\x00S\\x03\\a\\x00\\x00\\x1e`\" + // 0x00530307: 0x00001E60\n\t\"\\x00s\\x03\\a\\x00\\x00\\x1ea\" + // 0x00730307: 0x00001E61\n\t\"\\x00S\\x03#\\x00\\x00\\x1eb\" + // 0x00530323: 0x00001E62\n\t\"\\x00s\\x03#\\x00\\x00\\x1ec\" + // 0x00730323: 0x00001E63\n\t\"\\x01Z\\x03\\a\\x00\\x00\\x1ed\" + // 0x015A0307: 0x00001E64\n\t\"\\x01[\\x03\\a\\x00\\x00\\x1ee\" + // 0x015B0307: 0x00001E65\n\t\"\\x01`\\x03\\a\\x00\\x00\\x1ef\" + // 0x01600307: 0x00001E66\n\t\"\\x01a\\x03\\a\\x00\\x00\\x1eg\" + // 0x01610307: 0x00001E67\n\t\"\\x1eb\\x03\\a\\x00\\x00\\x1eh\" + // 0x1E620307: 0x00001E68\n\t\"\\x1ec\\x03\\a\\x00\\x00\\x1ei\" + // 0x1E630307: 0x00001E69\n\t\"\\x00T\\x03\\a\\x00\\x00\\x1ej\" + // 0x00540307: 0x00001E6A\n\t\"\\x00t\\x03\\a\\x00\\x00\\x1ek\" + // 0x00740307: 0x00001E6B\n\t\"\\x00T\\x03#\\x00\\x00\\x1el\" + // 0x00540323: 0x00001E6C\n\t\"\\x00t\\x03#\\x00\\x00\\x1em\" + // 0x00740323: 0x00001E6D\n\t\"\\x00T\\x031\\x00\\x00\\x1en\" + // 0x00540331: 0x00001E6E\n\t\"\\x00t\\x031\\x00\\x00\\x1eo\" + // 0x00740331: 0x00001E6F\n\t\"\\x00T\\x03-\\x00\\x00\\x1ep\" + // 0x0054032D: 0x00001E70\n\t\"\\x00t\\x03-\\x00\\x00\\x1eq\" + // 0x0074032D: 0x00001E71\n\t\"\\x00U\\x03$\\x00\\x00\\x1er\" + // 0x00550324: 0x00001E72\n\t\"\\x00u\\x03$\\x00\\x00\\x1es\" + // 0x00750324: 0x00001E73\n\t\"\\x00U\\x030\\x00\\x00\\x1et\" + // 0x00550330: 0x00001E74\n\t\"\\x00u\\x030\\x00\\x00\\x1eu\" + // 0x00750330: 0x00001E75\n\t\"\\x00U\\x03-\\x00\\x00\\x1ev\" + // 0x0055032D: 0x00001E76\n\t\"\\x00u\\x03-\\x00\\x00\\x1ew\" + // 0x0075032D: 0x00001E77\n\t\"\\x01h\\x03\\x01\\x00\\x00\\x1ex\" + // 0x01680301: 0x00001E78\n\t\"\\x01i\\x03\\x01\\x00\\x00\\x1ey\" + // 0x01690301: 0x00001E79\n\t\"\\x01j\\x03\\b\\x00\\x00\\x1ez\" + // 0x016A0308: 0x00001E7A\n\t\"\\x01k\\x03\\b\\x00\\x00\\x1e{\" + // 0x016B0308: 0x00001E7B\n\t\"\\x00V\\x03\\x03\\x00\\x00\\x1e|\" + // 0x00560303: 0x00001E7C\n\t\"\\x00v\\x03\\x03\\x00\\x00\\x1e}\" + // 0x00760303: 0x00001E7D\n\t\"\\x00V\\x03#\\x00\\x00\\x1e~\" + // 0x00560323: 0x00001E7E\n\t\"\\x00v\\x03#\\x00\\x00\\x1e\\u007f\" + // 0x00760323: 0x00001E7F\n\t\"\\x00W\\x03\\x00\\x00\\x00\\x1e\\x80\" + // 0x00570300: 0x00001E80\n\t\"\\x00w\\x03\\x00\\x00\\x00\\x1e\\x81\" + // 0x00770300: 0x00001E81\n\t\"\\x00W\\x03\\x01\\x00\\x00\\x1e\\x82\" + // 0x00570301: 0x00001E82\n\t\"\\x00w\\x03\\x01\\x00\\x00\\x1e\\x83\" + // 0x00770301: 0x00001E83\n\t\"\\x00W\\x03\\b\\x00\\x00\\x1e\\x84\" + // 0x00570308: 0x00001E84\n\t\"\\x00w\\x03\\b\\x00\\x00\\x1e\\x85\" + // 0x00770308: 0x00001E85\n\t\"\\x00W\\x03\\a\\x00\\x00\\x1e\\x86\" + // 0x00570307: 0x00001E86\n\t\"\\x00w\\x03\\a\\x00\\x00\\x1e\\x87\" + // 0x00770307: 0x00001E87\n\t\"\\x00W\\x03#\\x00\\x00\\x1e\\x88\" + // 0x00570323: 0x00001E88\n\t\"\\x00w\\x03#\\x00\\x00\\x1e\\x89\" + // 0x00770323: 0x00001E89\n\t\"\\x00X\\x03\\a\\x00\\x00\\x1e\\x8a\" + // 0x00580307: 0x00001E8A\n\t\"\\x00x\\x03\\a\\x00\\x00\\x1e\\x8b\" + // 0x00780307: 0x00001E8B\n\t\"\\x00X\\x03\\b\\x00\\x00\\x1e\\x8c\" + // 0x00580308: 0x00001E8C\n\t\"\\x00x\\x03\\b\\x00\\x00\\x1e\\x8d\" + // 0x00780308: 0x00001E8D\n\t\"\\x00Y\\x03\\a\\x00\\x00\\x1e\\x8e\" + // 0x00590307: 0x00001E8E\n\t\"\\x00y\\x03\\a\\x00\\x00\\x1e\\x8f\" + // 0x00790307: 0x00001E8F\n\t\"\\x00Z\\x03\\x02\\x00\\x00\\x1e\\x90\" + // 0x005A0302: 0x00001E90\n\t\"\\x00z\\x03\\x02\\x00\\x00\\x1e\\x91\" + // 0x007A0302: 0x00001E91\n\t\"\\x00Z\\x03#\\x00\\x00\\x1e\\x92\" + // 0x005A0323: 0x00001E92\n\t\"\\x00z\\x03#\\x00\\x00\\x1e\\x93\" + // 0x007A0323: 0x00001E93\n\t\"\\x00Z\\x031\\x00\\x00\\x1e\\x94\" + // 0x005A0331: 0x00001E94\n\t\"\\x00z\\x031\\x00\\x00\\x1e\\x95\" + // 0x007A0331: 0x00001E95\n\t\"\\x00h\\x031\\x00\\x00\\x1e\\x96\" + // 0x00680331: 0x00001E96\n\t\"\\x00t\\x03\\b\\x00\\x00\\x1e\\x97\" + // 0x00740308: 0x00001E97\n\t\"\\x00w\\x03\\n\\x00\\x00\\x1e\\x98\" + // 0x0077030A: 0x00001E98\n\t\"\\x00y\\x03\\n\\x00\\x00\\x1e\\x99\" + // 0x0079030A: 0x00001E99\n\t\"\\x01\\u007f\\x03\\a\\x00\\x00\\x1e\\x9b\" + // 0x017F0307: 0x00001E9B\n\t\"\\x00A\\x03#\\x00\\x00\\x1e\\xa0\" + // 0x00410323: 0x00001EA0\n\t\"\\x00a\\x03#\\x00\\x00\\x1e\\xa1\" + // 0x00610323: 0x00001EA1\n\t\"\\x00A\\x03\\t\\x00\\x00\\x1e\\xa2\" + // 0x00410309: 0x00001EA2\n\t\"\\x00a\\x03\\t\\x00\\x00\\x1e\\xa3\" + // 0x00610309: 0x00001EA3\n\t\"\\x00\\xc2\\x03\\x01\\x00\\x00\\x1e\\xa4\" + // 0x00C20301: 0x00001EA4\n\t\"\\x00\\xe2\\x03\\x01\\x00\\x00\\x1e\\xa5\" + // 0x00E20301: 0x00001EA5\n\t\"\\x00\\xc2\\x03\\x00\\x00\\x00\\x1e\\xa6\" + // 0x00C20300: 0x00001EA6\n\t\"\\x00\\xe2\\x03\\x00\\x00\\x00\\x1e\\xa7\" + // 0x00E20300: 0x00001EA7\n\t\"\\x00\\xc2\\x03\\t\\x00\\x00\\x1e\\xa8\" + // 0x00C20309: 0x00001EA8\n\t\"\\x00\\xe2\\x03\\t\\x00\\x00\\x1e\\xa9\" + // 0x00E20309: 0x00001EA9\n\t\"\\x00\\xc2\\x03\\x03\\x00\\x00\\x1e\\xaa\" + // 0x00C20303: 0x00001EAA\n\t\"\\x00\\xe2\\x03\\x03\\x00\\x00\\x1e\\xab\" + // 0x00E20303: 0x00001EAB\n\t\"\\x1e\\xa0\\x03\\x02\\x00\\x00\\x1e\\xac\" + // 0x1EA00302: 0x00001EAC\n\t\"\\x1e\\xa1\\x03\\x02\\x00\\x00\\x1e\\xad\" + // 0x1EA10302: 0x00001EAD\n\t\"\\x01\\x02\\x03\\x01\\x00\\x00\\x1e\\xae\" + // 0x01020301: 0x00001EAE\n\t\"\\x01\\x03\\x03\\x01\\x00\\x00\\x1e\\xaf\" + // 0x01030301: 0x00001EAF\n\t\"\\x01\\x02\\x03\\x00\\x00\\x00\\x1e\\xb0\" + // 0x01020300: 0x00001EB0\n\t\"\\x01\\x03\\x03\\x00\\x00\\x00\\x1e\\xb1\" + // 0x01030300: 0x00001EB1\n\t\"\\x01\\x02\\x03\\t\\x00\\x00\\x1e\\xb2\" + // 0x01020309: 0x00001EB2\n\t\"\\x01\\x03\\x03\\t\\x00\\x00\\x1e\\xb3\" + // 0x01030309: 0x00001EB3\n\t\"\\x01\\x02\\x03\\x03\\x00\\x00\\x1e\\xb4\" + // 0x01020303: 0x00001EB4\n\t\"\\x01\\x03\\x03\\x03\\x00\\x00\\x1e\\xb5\" + // 0x01030303: 0x00001EB5\n\t\"\\x1e\\xa0\\x03\\x06\\x00\\x00\\x1e\\xb6\" + // 0x1EA00306: 0x00001EB6\n\t\"\\x1e\\xa1\\x03\\x06\\x00\\x00\\x1e\\xb7\" + // 0x1EA10306: 0x00001EB7\n\t\"\\x00E\\x03#\\x00\\x00\\x1e\\xb8\" + // 0x00450323: 0x00001EB8\n\t\"\\x00e\\x03#\\x00\\x00\\x1e\\xb9\" + // 0x00650323: 0x00001EB9\n\t\"\\x00E\\x03\\t\\x00\\x00\\x1e\\xba\" + // 0x00450309: 0x00001EBA\n\t\"\\x00e\\x03\\t\\x00\\x00\\x1e\\xbb\" + // 0x00650309: 0x00001EBB\n\t\"\\x00E\\x03\\x03\\x00\\x00\\x1e\\xbc\" + // 0x00450303: 0x00001EBC\n\t\"\\x00e\\x03\\x03\\x00\\x00\\x1e\\xbd\" + // 0x00650303: 0x00001EBD\n\t\"\\x00\\xca\\x03\\x01\\x00\\x00\\x1e\\xbe\" + // 0x00CA0301: 0x00001EBE\n\t\"\\x00\\xea\\x03\\x01\\x00\\x00\\x1e\\xbf\" + // 0x00EA0301: 0x00001EBF\n\t\"\\x00\\xca\\x03\\x00\\x00\\x00\\x1e\\xc0\" + // 0x00CA0300: 0x00001EC0\n\t\"\\x00\\xea\\x03\\x00\\x00\\x00\\x1e\\xc1\" + // 0x00EA0300: 0x00001EC1\n\t\"\\x00\\xca\\x03\\t\\x00\\x00\\x1e\\xc2\" + // 0x00CA0309: 0x00001EC2\n\t\"\\x00\\xea\\x03\\t\\x00\\x00\\x1e\\xc3\" + // 0x00EA0309: 0x00001EC3\n\t\"\\x00\\xca\\x03\\x03\\x00\\x00\\x1e\\xc4\" + // 0x00CA0303: 0x00001EC4\n\t\"\\x00\\xea\\x03\\x03\\x00\\x00\\x1e\\xc5\" + // 0x00EA0303: 0x00001EC5\n\t\"\\x1e\\xb8\\x03\\x02\\x00\\x00\\x1e\\xc6\" + // 0x1EB80302: 0x00001EC6\n\t\"\\x1e\\xb9\\x03\\x02\\x00\\x00\\x1e\\xc7\" + // 0x1EB90302: 0x00001EC7\n\t\"\\x00I\\x03\\t\\x00\\x00\\x1e\\xc8\" + // 0x00490309: 0x00001EC8\n\t\"\\x00i\\x03\\t\\x00\\x00\\x1e\\xc9\" + // 0x00690309: 0x00001EC9\n\t\"\\x00I\\x03#\\x00\\x00\\x1e\\xca\" + // 0x00490323: 0x00001ECA\n\t\"\\x00i\\x03#\\x00\\x00\\x1e\\xcb\" + // 0x00690323: 0x00001ECB\n\t\"\\x00O\\x03#\\x00\\x00\\x1e\\xcc\" + // 0x004F0323: 0x00001ECC\n\t\"\\x00o\\x03#\\x00\\x00\\x1e\\xcd\" + // 0x006F0323: 0x00001ECD\n\t\"\\x00O\\x03\\t\\x00\\x00\\x1e\\xce\" + // 0x004F0309: 0x00001ECE\n\t\"\\x00o\\x03\\t\\x00\\x00\\x1e\\xcf\" + // 0x006F0309: 0x00001ECF\n\t\"\\x00\\xd4\\x03\\x01\\x00\\x00\\x1e\\xd0\" + // 0x00D40301: 0x00001ED0\n\t\"\\x00\\xf4\\x03\\x01\\x00\\x00\\x1e\\xd1\" + // 0x00F40301: 0x00001ED1\n\t\"\\x00\\xd4\\x03\\x00\\x00\\x00\\x1e\\xd2\" + // 0x00D40300: 0x00001ED2\n\t\"\\x00\\xf4\\x03\\x00\\x00\\x00\\x1e\\xd3\" + // 0x00F40300: 0x00001ED3\n\t\"\\x00\\xd4\\x03\\t\\x00\\x00\\x1e\\xd4\" + // 0x00D40309: 0x00001ED4\n\t\"\\x00\\xf4\\x03\\t\\x00\\x00\\x1e\\xd5\" + // 0x00F40309: 0x00001ED5\n\t\"\\x00\\xd4\\x03\\x03\\x00\\x00\\x1e\\xd6\" + // 0x00D40303: 0x00001ED6\n\t\"\\x00\\xf4\\x03\\x03\\x00\\x00\\x1e\\xd7\" + // 0x00F40303: 0x00001ED7\n\t\"\\x1e\\xcc\\x03\\x02\\x00\\x00\\x1e\\xd8\" + // 0x1ECC0302: 0x00001ED8\n\t\"\\x1e\\xcd\\x03\\x02\\x00\\x00\\x1e\\xd9\" + // 0x1ECD0302: 0x00001ED9\n\t\"\\x01\\xa0\\x03\\x01\\x00\\x00\\x1e\\xda\" + // 0x01A00301: 0x00001EDA\n\t\"\\x01\\xa1\\x03\\x01\\x00\\x00\\x1e\\xdb\" + // 0x01A10301: 0x00001EDB\n\t\"\\x01\\xa0\\x03\\x00\\x00\\x00\\x1e\\xdc\" + // 0x01A00300: 0x00001EDC\n\t\"\\x01\\xa1\\x03\\x00\\x00\\x00\\x1e\\xdd\" + // 0x01A10300: 0x00001EDD\n\t\"\\x01\\xa0\\x03\\t\\x00\\x00\\x1e\\xde\" + // 0x01A00309: 0x00001EDE\n\t\"\\x01\\xa1\\x03\\t\\x00\\x00\\x1e\\xdf\" + // 0x01A10309: 0x00001EDF\n\t\"\\x01\\xa0\\x03\\x03\\x00\\x00\\x1e\\xe0\" + // 0x01A00303: 0x00001EE0\n\t\"\\x01\\xa1\\x03\\x03\\x00\\x00\\x1e\\xe1\" + // 0x01A10303: 0x00001EE1\n\t\"\\x01\\xa0\\x03#\\x00\\x00\\x1e\\xe2\" + // 0x01A00323: 0x00001EE2\n\t\"\\x01\\xa1\\x03#\\x00\\x00\\x1e\\xe3\" + // 0x01A10323: 0x00001EE3\n\t\"\\x00U\\x03#\\x00\\x00\\x1e\\xe4\" + // 0x00550323: 0x00001EE4\n\t\"\\x00u\\x03#\\x00\\x00\\x1e\\xe5\" + // 0x00750323: 0x00001EE5\n\t\"\\x00U\\x03\\t\\x00\\x00\\x1e\\xe6\" + // 0x00550309: 0x00001EE6\n\t\"\\x00u\\x03\\t\\x00\\x00\\x1e\\xe7\" + // 0x00750309: 0x00001EE7\n\t\"\\x01\\xaf\\x03\\x01\\x00\\x00\\x1e\\xe8\" + // 0x01AF0301: 0x00001EE8\n\t\"\\x01\\xb0\\x03\\x01\\x00\\x00\\x1e\\xe9\" + // 0x01B00301: 0x00001EE9\n\t\"\\x01\\xaf\\x03\\x00\\x00\\x00\\x1e\\xea\" + // 0x01AF0300: 0x00001EEA\n\t\"\\x01\\xb0\\x03\\x00\\x00\\x00\\x1e\\xeb\" + // 0x01B00300: 0x00001EEB\n\t\"\\x01\\xaf\\x03\\t\\x00\\x00\\x1e\\xec\" + // 0x01AF0309: 0x00001EEC\n\t\"\\x01\\xb0\\x03\\t\\x00\\x00\\x1e\\xed\" + // 0x01B00309: 0x00001EED\n\t\"\\x01\\xaf\\x03\\x03\\x00\\x00\\x1e\\xee\" + // 0x01AF0303: 0x00001EEE\n\t\"\\x01\\xb0\\x03\\x03\\x00\\x00\\x1e\\xef\" + // 0x01B00303: 0x00001EEF\n\t\"\\x01\\xaf\\x03#\\x00\\x00\\x1e\\xf0\" + // 0x01AF0323: 0x00001EF0\n\t\"\\x01\\xb0\\x03#\\x00\\x00\\x1e\\xf1\" + // 0x01B00323: 0x00001EF1\n\t\"\\x00Y\\x03\\x00\\x00\\x00\\x1e\\xf2\" + // 0x00590300: 0x00001EF2\n\t\"\\x00y\\x03\\x00\\x00\\x00\\x1e\\xf3\" + // 0x00790300: 0x00001EF3\n\t\"\\x00Y\\x03#\\x00\\x00\\x1e\\xf4\" + // 0x00590323: 0x00001EF4\n\t\"\\x00y\\x03#\\x00\\x00\\x1e\\xf5\" + // 0x00790323: 0x00001EF5\n\t\"\\x00Y\\x03\\t\\x00\\x00\\x1e\\xf6\" + // 0x00590309: 0x00001EF6\n\t\"\\x00y\\x03\\t\\x00\\x00\\x1e\\xf7\" + // 0x00790309: 0x00001EF7\n\t\"\\x00Y\\x03\\x03\\x00\\x00\\x1e\\xf8\" + // 0x00590303: 0x00001EF8\n\t\"\\x00y\\x03\\x03\\x00\\x00\\x1e\\xf9\" + // 0x00790303: 0x00001EF9\n\t\"\\x03\\xb1\\x03\\x13\\x00\\x00\\x1f\\x00\" + // 0x03B10313: 0x00001F00\n\t\"\\x03\\xb1\\x03\\x14\\x00\\x00\\x1f\\x01\" + // 0x03B10314: 0x00001F01\n\t\"\\x1f\\x00\\x03\\x00\\x00\\x00\\x1f\\x02\" + // 0x1F000300: 0x00001F02\n\t\"\\x1f\\x01\\x03\\x00\\x00\\x00\\x1f\\x03\" + // 0x1F010300: 0x00001F03\n\t\"\\x1f\\x00\\x03\\x01\\x00\\x00\\x1f\\x04\" + // 0x1F000301: 0x00001F04\n\t\"\\x1f\\x01\\x03\\x01\\x00\\x00\\x1f\\x05\" + // 0x1F010301: 0x00001F05\n\t\"\\x1f\\x00\\x03B\\x00\\x00\\x1f\\x06\" + // 0x1F000342: 0x00001F06\n\t\"\\x1f\\x01\\x03B\\x00\\x00\\x1f\\a\" + // 0x1F010342: 0x00001F07\n\t\"\\x03\\x91\\x03\\x13\\x00\\x00\\x1f\\b\" + // 0x03910313: 0x00001F08\n\t\"\\x03\\x91\\x03\\x14\\x00\\x00\\x1f\\t\" + // 0x03910314: 0x00001F09\n\t\"\\x1f\\b\\x03\\x00\\x00\\x00\\x1f\\n\" + // 0x1F080300: 0x00001F0A\n\t\"\\x1f\\t\\x03\\x00\\x00\\x00\\x1f\\v\" + // 0x1F090300: 0x00001F0B\n\t\"\\x1f\\b\\x03\\x01\\x00\\x00\\x1f\\f\" + // 0x1F080301: 0x00001F0C\n\t\"\\x1f\\t\\x03\\x01\\x00\\x00\\x1f\\r\" + // 0x1F090301: 0x00001F0D\n\t\"\\x1f\\b\\x03B\\x00\\x00\\x1f\\x0e\" + // 0x1F080342: 0x00001F0E\n\t\"\\x1f\\t\\x03B\\x00\\x00\\x1f\\x0f\" + // 0x1F090342: 0x00001F0F\n\t\"\\x03\\xb5\\x03\\x13\\x00\\x00\\x1f\\x10\" + // 0x03B50313: 0x00001F10\n\t\"\\x03\\xb5\\x03\\x14\\x00\\x00\\x1f\\x11\" + // 0x03B50314: 0x00001F11\n\t\"\\x1f\\x10\\x03\\x00\\x00\\x00\\x1f\\x12\" + // 0x1F100300: 0x00001F12\n\t\"\\x1f\\x11\\x03\\x00\\x00\\x00\\x1f\\x13\" + // 0x1F110300: 0x00001F13\n\t\"\\x1f\\x10\\x03\\x01\\x00\\x00\\x1f\\x14\" + // 0x1F100301: 0x00001F14\n\t\"\\x1f\\x11\\x03\\x01\\x00\\x00\\x1f\\x15\" + // 0x1F110301: 0x00001F15\n\t\"\\x03\\x95\\x03\\x13\\x00\\x00\\x1f\\x18\" + // 0x03950313: 0x00001F18\n\t\"\\x03\\x95\\x03\\x14\\x00\\x00\\x1f\\x19\" + // 0x03950314: 0x00001F19\n\t\"\\x1f\\x18\\x03\\x00\\x00\\x00\\x1f\\x1a\" + // 0x1F180300: 0x00001F1A\n\t\"\\x1f\\x19\\x03\\x00\\x00\\x00\\x1f\\x1b\" + // 0x1F190300: 0x00001F1B\n\t\"\\x1f\\x18\\x03\\x01\\x00\\x00\\x1f\\x1c\" + // 0x1F180301: 0x00001F1C\n\t\"\\x1f\\x19\\x03\\x01\\x00\\x00\\x1f\\x1d\" + // 0x1F190301: 0x00001F1D\n\t\"\\x03\\xb7\\x03\\x13\\x00\\x00\\x1f \" + // 0x03B70313: 0x00001F20\n\t\"\\x03\\xb7\\x03\\x14\\x00\\x00\\x1f!\" + // 0x03B70314: 0x00001F21\n\t\"\\x1f \\x03\\x00\\x00\\x00\\x1f\\\"\" + // 0x1F200300: 0x00001F22\n\t\"\\x1f!\\x03\\x00\\x00\\x00\\x1f#\" + // 0x1F210300: 0x00001F23\n\t\"\\x1f \\x03\\x01\\x00\\x00\\x1f$\" + // 0x1F200301: 0x00001F24\n\t\"\\x1f!\\x03\\x01\\x00\\x00\\x1f%\" + // 0x1F210301: 0x00001F25\n\t\"\\x1f \\x03B\\x00\\x00\\x1f&\" + // 0x1F200342: 0x00001F26\n\t\"\\x1f!\\x03B\\x00\\x00\\x1f'\" + // 0x1F210342: 0x00001F27\n\t\"\\x03\\x97\\x03\\x13\\x00\\x00\\x1f(\" + // 0x03970313: 0x00001F28\n\t\"\\x03\\x97\\x03\\x14\\x00\\x00\\x1f)\" + // 0x03970314: 0x00001F29\n\t\"\\x1f(\\x03\\x00\\x00\\x00\\x1f*\" + // 0x1F280300: 0x00001F2A\n\t\"\\x1f)\\x03\\x00\\x00\\x00\\x1f+\" + // 0x1F290300: 0x00001F2B\n\t\"\\x1f(\\x03\\x01\\x00\\x00\\x1f,\" + // 0x1F280301: 0x00001F2C\n\t\"\\x1f)\\x03\\x01\\x00\\x00\\x1f-\" + // 0x1F290301: 0x00001F2D\n\t\"\\x1f(\\x03B\\x00\\x00\\x1f.\" + // 0x1F280342: 0x00001F2E\n\t\"\\x1f)\\x03B\\x00\\x00\\x1f/\" + // 0x1F290342: 0x00001F2F\n\t\"\\x03\\xb9\\x03\\x13\\x00\\x00\\x1f0\" + // 0x03B90313: 0x00001F30\n\t\"\\x03\\xb9\\x03\\x14\\x00\\x00\\x1f1\" + // 0x03B90314: 0x00001F31\n\t\"\\x1f0\\x03\\x00\\x00\\x00\\x1f2\" + // 0x1F300300: 0x00001F32\n\t\"\\x1f1\\x03\\x00\\x00\\x00\\x1f3\" + // 0x1F310300: 0x00001F33\n\t\"\\x1f0\\x03\\x01\\x00\\x00\\x1f4\" + // 0x1F300301: 0x00001F34\n\t\"\\x1f1\\x03\\x01\\x00\\x00\\x1f5\" + // 0x1F310301: 0x00001F35\n\t\"\\x1f0\\x03B\\x00\\x00\\x1f6\" + // 0x1F300342: 0x00001F36\n\t\"\\x1f1\\x03B\\x00\\x00\\x1f7\" + // 0x1F310342: 0x00001F37\n\t\"\\x03\\x99\\x03\\x13\\x00\\x00\\x1f8\" + // 0x03990313: 0x00001F38\n\t\"\\x03\\x99\\x03\\x14\\x00\\x00\\x1f9\" + // 0x03990314: 0x00001F39\n\t\"\\x1f8\\x03\\x00\\x00\\x00\\x1f:\" + // 0x1F380300: 0x00001F3A\n\t\"\\x1f9\\x03\\x00\\x00\\x00\\x1f;\" + // 0x1F390300: 0x00001F3B\n\t\"\\x1f8\\x03\\x01\\x00\\x00\\x1f<\" + // 0x1F380301: 0x00001F3C\n\t\"\\x1f9\\x03\\x01\\x00\\x00\\x1f=\" + // 0x1F390301: 0x00001F3D\n\t\"\\x1f8\\x03B\\x00\\x00\\x1f>\" + // 0x1F380342: 0x00001F3E\n\t\"\\x1f9\\x03B\\x00\\x00\\x1f?\" + // 0x1F390342: 0x00001F3F\n\t\"\\x03\\xbf\\x03\\x13\\x00\\x00\\x1f@\" + // 0x03BF0313: 0x00001F40\n\t\"\\x03\\xbf\\x03\\x14\\x00\\x00\\x1fA\" + // 0x03BF0314: 0x00001F41\n\t\"\\x1f@\\x03\\x00\\x00\\x00\\x1fB\" + // 0x1F400300: 0x00001F42\n\t\"\\x1fA\\x03\\x00\\x00\\x00\\x1fC\" + // 0x1F410300: 0x00001F43\n\t\"\\x1f@\\x03\\x01\\x00\\x00\\x1fD\" + // 0x1F400301: 0x00001F44\n\t\"\\x1fA\\x03\\x01\\x00\\x00\\x1fE\" + // 0x1F410301: 0x00001F45\n\t\"\\x03\\x9f\\x03\\x13\\x00\\x00\\x1fH\" + // 0x039F0313: 0x00001F48\n\t\"\\x03\\x9f\\x03\\x14\\x00\\x00\\x1fI\" + // 0x039F0314: 0x00001F49\n\t\"\\x1fH\\x03\\x00\\x00\\x00\\x1fJ\" + // 0x1F480300: 0x00001F4A\n\t\"\\x1fI\\x03\\x00\\x00\\x00\\x1fK\" + // 0x1F490300: 0x00001F4B\n\t\"\\x1fH\\x03\\x01\\x00\\x00\\x1fL\" + // 0x1F480301: 0x00001F4C\n\t\"\\x1fI\\x03\\x01\\x00\\x00\\x1fM\" + // 0x1F490301: 0x00001F4D\n\t\"\\x03\\xc5\\x03\\x13\\x00\\x00\\x1fP\" + // 0x03C50313: 0x00001F50\n\t\"\\x03\\xc5\\x03\\x14\\x00\\x00\\x1fQ\" + // 0x03C50314: 0x00001F51\n\t\"\\x1fP\\x03\\x00\\x00\\x00\\x1fR\" + // 0x1F500300: 0x00001F52\n\t\"\\x1fQ\\x03\\x00\\x00\\x00\\x1fS\" + // 0x1F510300: 0x00001F53\n\t\"\\x1fP\\x03\\x01\\x00\\x00\\x1fT\" + // 0x1F500301: 0x00001F54\n\t\"\\x1fQ\\x03\\x01\\x00\\x00\\x1fU\" + // 0x1F510301: 0x00001F55\n\t\"\\x1fP\\x03B\\x00\\x00\\x1fV\" + // 0x1F500342: 0x00001F56\n\t\"\\x1fQ\\x03B\\x00\\x00\\x1fW\" + // 0x1F510342: 0x00001F57\n\t\"\\x03\\xa5\\x03\\x14\\x00\\x00\\x1fY\" + // 0x03A50314: 0x00001F59\n\t\"\\x1fY\\x03\\x00\\x00\\x00\\x1f[\" + // 0x1F590300: 0x00001F5B\n\t\"\\x1fY\\x03\\x01\\x00\\x00\\x1f]\" + // 0x1F590301: 0x00001F5D\n\t\"\\x1fY\\x03B\\x00\\x00\\x1f_\" + // 0x1F590342: 0x00001F5F\n\t\"\\x03\\xc9\\x03\\x13\\x00\\x00\\x1f`\" + // 0x03C90313: 0x00001F60\n\t\"\\x03\\xc9\\x03\\x14\\x00\\x00\\x1fa\" + // 0x03C90314: 0x00001F61\n\t\"\\x1f`\\x03\\x00\\x00\\x00\\x1fb\" + // 0x1F600300: 0x00001F62\n\t\"\\x1fa\\x03\\x00\\x00\\x00\\x1fc\" + // 0x1F610300: 0x00001F63\n\t\"\\x1f`\\x03\\x01\\x00\\x00\\x1fd\" + // 0x1F600301: 0x00001F64\n\t\"\\x1fa\\x03\\x01\\x00\\x00\\x1fe\" + // 0x1F610301: 0x00001F65\n\t\"\\x1f`\\x03B\\x00\\x00\\x1ff\" + // 0x1F600342: 0x00001F66\n\t\"\\x1fa\\x03B\\x00\\x00\\x1fg\" + // 0x1F610342: 0x00001F67\n\t\"\\x03\\xa9\\x03\\x13\\x00\\x00\\x1fh\" + // 0x03A90313: 0x00001F68\n\t\"\\x03\\xa9\\x03\\x14\\x00\\x00\\x1fi\" + // 0x03A90314: 0x00001F69\n\t\"\\x1fh\\x03\\x00\\x00\\x00\\x1fj\" + // 0x1F680300: 0x00001F6A\n\t\"\\x1fi\\x03\\x00\\x00\\x00\\x1fk\" + // 0x1F690300: 0x00001F6B\n\t\"\\x1fh\\x03\\x01\\x00\\x00\\x1fl\" + // 0x1F680301: 0x00001F6C\n\t\"\\x1fi\\x03\\x01\\x00\\x00\\x1fm\" + // 0x1F690301: 0x00001F6D\n\t\"\\x1fh\\x03B\\x00\\x00\\x1fn\" + // 0x1F680342: 0x00001F6E\n\t\"\\x1fi\\x03B\\x00\\x00\\x1fo\" + // 0x1F690342: 0x00001F6F\n\t\"\\x03\\xb1\\x03\\x00\\x00\\x00\\x1fp\" + // 0x03B10300: 0x00001F70\n\t\"\\x03\\xb5\\x03\\x00\\x00\\x00\\x1fr\" + // 0x03B50300: 0x00001F72\n\t\"\\x03\\xb7\\x03\\x00\\x00\\x00\\x1ft\" + // 0x03B70300: 0x00001F74\n\t\"\\x03\\xb9\\x03\\x00\\x00\\x00\\x1fv\" + // 0x03B90300: 0x00001F76\n\t\"\\x03\\xbf\\x03\\x00\\x00\\x00\\x1fx\" + // 0x03BF0300: 0x00001F78\n\t\"\\x03\\xc5\\x03\\x00\\x00\\x00\\x1fz\" + // 0x03C50300: 0x00001F7A\n\t\"\\x03\\xc9\\x03\\x00\\x00\\x00\\x1f|\" + // 0x03C90300: 0x00001F7C\n\t\"\\x1f\\x00\\x03E\\x00\\x00\\x1f\\x80\" + // 0x1F000345: 0x00001F80\n\t\"\\x1f\\x01\\x03E\\x00\\x00\\x1f\\x81\" + // 0x1F010345: 0x00001F81\n\t\"\\x1f\\x02\\x03E\\x00\\x00\\x1f\\x82\" + // 0x1F020345: 0x00001F82\n\t\"\\x1f\\x03\\x03E\\x00\\x00\\x1f\\x83\" + // 0x1F030345: 0x00001F83\n\t\"\\x1f\\x04\\x03E\\x00\\x00\\x1f\\x84\" + // 0x1F040345: 0x00001F84\n\t\"\\x1f\\x05\\x03E\\x00\\x00\\x1f\\x85\" + // 0x1F050345: 0x00001F85\n\t\"\\x1f\\x06\\x03E\\x00\\x00\\x1f\\x86\" + // 0x1F060345: 0x00001F86\n\t\"\\x1f\\a\\x03E\\x00\\x00\\x1f\\x87\" + // 0x1F070345: 0x00001F87\n\t\"\\x1f\\b\\x03E\\x00\\x00\\x1f\\x88\" + // 0x1F080345: 0x00001F88\n\t\"\\x1f\\t\\x03E\\x00\\x00\\x1f\\x89\" + // 0x1F090345: 0x00001F89\n\t\"\\x1f\\n\\x03E\\x00\\x00\\x1f\\x8a\" + // 0x1F0A0345: 0x00001F8A\n\t\"\\x1f\\v\\x03E\\x00\\x00\\x1f\\x8b\" + // 0x1F0B0345: 0x00001F8B\n\t\"\\x1f\\f\\x03E\\x00\\x00\\x1f\\x8c\" + // 0x1F0C0345: 0x00001F8C\n\t\"\\x1f\\r\\x03E\\x00\\x00\\x1f\\x8d\" + // 0x1F0D0345: 0x00001F8D\n\t\"\\x1f\\x0e\\x03E\\x00\\x00\\x1f\\x8e\" + // 0x1F0E0345: 0x00001F8E\n\t\"\\x1f\\x0f\\x03E\\x00\\x00\\x1f\\x8f\" + // 0x1F0F0345: 0x00001F8F\n\t\"\\x1f \\x03E\\x00\\x00\\x1f\\x90\" + // 0x1F200345: 0x00001F90\n\t\"\\x1f!\\x03E\\x00\\x00\\x1f\\x91\" + // 0x1F210345: 0x00001F91\n\t\"\\x1f\\\"\\x03E\\x00\\x00\\x1f\\x92\" + // 0x1F220345: 0x00001F92\n\t\"\\x1f#\\x03E\\x00\\x00\\x1f\\x93\" + // 0x1F230345: 0x00001F93\n\t\"\\x1f$\\x03E\\x00\\x00\\x1f\\x94\" + // 0x1F240345: 0x00001F94\n\t\"\\x1f%\\x03E\\x00\\x00\\x1f\\x95\" + // 0x1F250345: 0x00001F95\n\t\"\\x1f&\\x03E\\x00\\x00\\x1f\\x96\" + // 0x1F260345: 0x00001F96\n\t\"\\x1f'\\x03E\\x00\\x00\\x1f\\x97\" + // 0x1F270345: 0x00001F97\n\t\"\\x1f(\\x03E\\x00\\x00\\x1f\\x98\" + // 0x1F280345: 0x00001F98\n\t\"\\x1f)\\x03E\\x00\\x00\\x1f\\x99\" + // 0x1F290345: 0x00001F99\n\t\"\\x1f*\\x03E\\x00\\x00\\x1f\\x9a\" + // 0x1F2A0345: 0x00001F9A\n\t\"\\x1f+\\x03E\\x00\\x00\\x1f\\x9b\" + // 0x1F2B0345: 0x00001F9B\n\t\"\\x1f,\\x03E\\x00\\x00\\x1f\\x9c\" + // 0x1F2C0345: 0x00001F9C\n\t\"\\x1f-\\x03E\\x00\\x00\\x1f\\x9d\" + // 0x1F2D0345: 0x00001F9D\n\t\"\\x1f.\\x03E\\x00\\x00\\x1f\\x9e\" + // 0x1F2E0345: 0x00001F9E\n\t\"\\x1f/\\x03E\\x00\\x00\\x1f\\x9f\" + // 0x1F2F0345: 0x00001F9F\n\t\"\\x1f`\\x03E\\x00\\x00\\x1f\\xa0\" + // 0x1F600345: 0x00001FA0\n\t\"\\x1fa\\x03E\\x00\\x00\\x1f\\xa1\" + // 0x1F610345: 0x00001FA1\n\t\"\\x1fb\\x03E\\x00\\x00\\x1f\\xa2\" + // 0x1F620345: 0x00001FA2\n\t\"\\x1fc\\x03E\\x00\\x00\\x1f\\xa3\" + // 0x1F630345: 0x00001FA3\n\t\"\\x1fd\\x03E\\x00\\x00\\x1f\\xa4\" + // 0x1F640345: 0x00001FA4\n\t\"\\x1fe\\x03E\\x00\\x00\\x1f\\xa5\" + // 0x1F650345: 0x00001FA5\n\t\"\\x1ff\\x03E\\x00\\x00\\x1f\\xa6\" + // 0x1F660345: 0x00001FA6\n\t\"\\x1fg\\x03E\\x00\\x00\\x1f\\xa7\" + // 0x1F670345: 0x00001FA7\n\t\"\\x1fh\\x03E\\x00\\x00\\x1f\\xa8\" + // 0x1F680345: 0x00001FA8\n\t\"\\x1fi\\x03E\\x00\\x00\\x1f\\xa9\" + // 0x1F690345: 0x00001FA9\n\t\"\\x1fj\\x03E\\x00\\x00\\x1f\\xaa\" + // 0x1F6A0345: 0x00001FAA\n\t\"\\x1fk\\x03E\\x00\\x00\\x1f\\xab\" + // 0x1F6B0345: 0x00001FAB\n\t\"\\x1fl\\x03E\\x00\\x00\\x1f\\xac\" + // 0x1F6C0345: 0x00001FAC\n\t\"\\x1fm\\x03E\\x00\\x00\\x1f\\xad\" + // 0x1F6D0345: 0x00001FAD\n\t\"\\x1fn\\x03E\\x00\\x00\\x1f\\xae\" + // 0x1F6E0345: 0x00001FAE\n\t\"\\x1fo\\x03E\\x00\\x00\\x1f\\xaf\" + // 0x1F6F0345: 0x00001FAF\n\t\"\\x03\\xb1\\x03\\x06\\x00\\x00\\x1f\\xb0\" + // 0x03B10306: 0x00001FB0\n\t\"\\x03\\xb1\\x03\\x04\\x00\\x00\\x1f\\xb1\" + // 0x03B10304: 0x00001FB1\n\t\"\\x1fp\\x03E\\x00\\x00\\x1f\\xb2\" + // 0x1F700345: 0x00001FB2\n\t\"\\x03\\xb1\\x03E\\x00\\x00\\x1f\\xb3\" + // 0x03B10345: 0x00001FB3\n\t\"\\x03\\xac\\x03E\\x00\\x00\\x1f\\xb4\" + // 0x03AC0345: 0x00001FB4\n\t\"\\x03\\xb1\\x03B\\x00\\x00\\x1f\\xb6\" + // 0x03B10342: 0x00001FB6\n\t\"\\x1f\\xb6\\x03E\\x00\\x00\\x1f\\xb7\" + // 0x1FB60345: 0x00001FB7\n\t\"\\x03\\x91\\x03\\x06\\x00\\x00\\x1f\\xb8\" + // 0x03910306: 0x00001FB8\n\t\"\\x03\\x91\\x03\\x04\\x00\\x00\\x1f\\xb9\" + // 0x03910304: 0x00001FB9\n\t\"\\x03\\x91\\x03\\x00\\x00\\x00\\x1f\\xba\" + // 0x03910300: 0x00001FBA\n\t\"\\x03\\x91\\x03E\\x00\\x00\\x1f\\xbc\" + // 0x03910345: 0x00001FBC\n\t\"\\x00\\xa8\\x03B\\x00\\x00\\x1f\\xc1\" + // 0x00A80342: 0x00001FC1\n\t\"\\x1ft\\x03E\\x00\\x00\\x1f\\xc2\" + // 0x1F740345: 0x00001FC2\n\t\"\\x03\\xb7\\x03E\\x00\\x00\\x1f\\xc3\" + // 0x03B70345: 0x00001FC3\n\t\"\\x03\\xae\\x03E\\x00\\x00\\x1f\\xc4\" + // 0x03AE0345: 0x00001FC4\n\t\"\\x03\\xb7\\x03B\\x00\\x00\\x1f\\xc6\" + // 0x03B70342: 0x00001FC6\n\t\"\\x1f\\xc6\\x03E\\x00\\x00\\x1f\\xc7\" + // 0x1FC60345: 0x00001FC7\n\t\"\\x03\\x95\\x03\\x00\\x00\\x00\\x1f\\xc8\" + // 0x03950300: 0x00001FC8\n\t\"\\x03\\x97\\x03\\x00\\x00\\x00\\x1f\\xca\" + // 0x03970300: 0x00001FCA\n\t\"\\x03\\x97\\x03E\\x00\\x00\\x1f\\xcc\" + // 0x03970345: 0x00001FCC\n\t\"\\x1f\\xbf\\x03\\x00\\x00\\x00\\x1f\\xcd\" + // 0x1FBF0300: 0x00001FCD\n\t\"\\x1f\\xbf\\x03\\x01\\x00\\x00\\x1f\\xce\" + // 0x1FBF0301: 0x00001FCE\n\t\"\\x1f\\xbf\\x03B\\x00\\x00\\x1f\\xcf\" + // 0x1FBF0342: 0x00001FCF\n\t\"\\x03\\xb9\\x03\\x06\\x00\\x00\\x1f\\xd0\" + // 0x03B90306: 0x00001FD0\n\t\"\\x03\\xb9\\x03\\x04\\x00\\x00\\x1f\\xd1\" + // 0x03B90304: 0x00001FD1\n\t\"\\x03\\xca\\x03\\x00\\x00\\x00\\x1f\\xd2\" + // 0x03CA0300: 0x00001FD2\n\t\"\\x03\\xb9\\x03B\\x00\\x00\\x1f\\xd6\" + // 0x03B90342: 0x00001FD6\n\t\"\\x03\\xca\\x03B\\x00\\x00\\x1f\\xd7\" + // 0x03CA0342: 0x00001FD7\n\t\"\\x03\\x99\\x03\\x06\\x00\\x00\\x1f\\xd8\" + // 0x03990306: 0x00001FD8\n\t\"\\x03\\x99\\x03\\x04\\x00\\x00\\x1f\\xd9\" + // 0x03990304: 0x00001FD9\n\t\"\\x03\\x99\\x03\\x00\\x00\\x00\\x1f\\xda\" + // 0x03990300: 0x00001FDA\n\t\"\\x1f\\xfe\\x03\\x00\\x00\\x00\\x1f\\xdd\" + // 0x1FFE0300: 0x00001FDD\n\t\"\\x1f\\xfe\\x03\\x01\\x00\\x00\\x1f\\xde\" + // 0x1FFE0301: 0x00001FDE\n\t\"\\x1f\\xfe\\x03B\\x00\\x00\\x1f\\xdf\" + // 0x1FFE0342: 0x00001FDF\n\t\"\\x03\\xc5\\x03\\x06\\x00\\x00\\x1f\\xe0\" + // 0x03C50306: 0x00001FE0\n\t\"\\x03\\xc5\\x03\\x04\\x00\\x00\\x1f\\xe1\" + // 0x03C50304: 0x00001FE1\n\t\"\\x03\\xcb\\x03\\x00\\x00\\x00\\x1f\\xe2\" + // 0x03CB0300: 0x00001FE2\n\t\"\\x03\\xc1\\x03\\x13\\x00\\x00\\x1f\\xe4\" + // 0x03C10313: 0x00001FE4\n\t\"\\x03\\xc1\\x03\\x14\\x00\\x00\\x1f\\xe5\" + // 0x03C10314: 0x00001FE5\n\t\"\\x03\\xc5\\x03B\\x00\\x00\\x1f\\xe6\" + // 0x03C50342: 0x00001FE6\n\t\"\\x03\\xcb\\x03B\\x00\\x00\\x1f\\xe7\" + // 0x03CB0342: 0x00001FE7\n\t\"\\x03\\xa5\\x03\\x06\\x00\\x00\\x1f\\xe8\" + // 0x03A50306: 0x00001FE8\n\t\"\\x03\\xa5\\x03\\x04\\x00\\x00\\x1f\\xe9\" + // 0x03A50304: 0x00001FE9\n\t\"\\x03\\xa5\\x03\\x00\\x00\\x00\\x1f\\xea\" + // 0x03A50300: 0x00001FEA\n\t\"\\x03\\xa1\\x03\\x14\\x00\\x00\\x1f\\xec\" + // 0x03A10314: 0x00001FEC\n\t\"\\x00\\xa8\\x03\\x00\\x00\\x00\\x1f\\xed\" + // 0x00A80300: 0x00001FED\n\t\"\\x1f|\\x03E\\x00\\x00\\x1f\\xf2\" + // 0x1F7C0345: 0x00001FF2\n\t\"\\x03\\xc9\\x03E\\x00\\x00\\x1f\\xf3\" + // 0x03C90345: 0x00001FF3\n\t\"\\x03\\xce\\x03E\\x00\\x00\\x1f\\xf4\" + // 0x03CE0345: 0x00001FF4\n\t\"\\x03\\xc9\\x03B\\x00\\x00\\x1f\\xf6\" + // 0x03C90342: 0x00001FF6\n\t\"\\x1f\\xf6\\x03E\\x00\\x00\\x1f\\xf7\" + // 0x1FF60345: 0x00001FF7\n\t\"\\x03\\x9f\\x03\\x00\\x00\\x00\\x1f\\xf8\" + // 0x039F0300: 0x00001FF8\n\t\"\\x03\\xa9\\x03\\x00\\x00\\x00\\x1f\\xfa\" + // 0x03A90300: 0x00001FFA\n\t\"\\x03\\xa9\\x03E\\x00\\x00\\x1f\\xfc\" + // 0x03A90345: 0x00001FFC\n\t\"!\\x90\\x038\\x00\\x00!\\x9a\" + // 0x21900338: 0x0000219A\n\t\"!\\x92\\x038\\x00\\x00!\\x9b\" + // 0x21920338: 0x0000219B\n\t\"!\\x94\\x038\\x00\\x00!\\xae\" + // 0x21940338: 0x000021AE\n\t\"!\\xd0\\x038\\x00\\x00!\\xcd\" + // 0x21D00338: 0x000021CD\n\t\"!\\xd4\\x038\\x00\\x00!\\xce\" + // 0x21D40338: 0x000021CE\n\t\"!\\xd2\\x038\\x00\\x00!\\xcf\" + // 0x21D20338: 0x000021CF\n\t\"\\\"\\x03\\x038\\x00\\x00\\\"\\x04\" + // 0x22030338: 0x00002204\n\t\"\\\"\\b\\x038\\x00\\x00\\\"\\t\" + // 0x22080338: 0x00002209\n\t\"\\\"\\v\\x038\\x00\\x00\\\"\\f\" + // 0x220B0338: 0x0000220C\n\t\"\\\"#\\x038\\x00\\x00\\\"$\" + // 0x22230338: 0x00002224\n\t\"\\\"%\\x038\\x00\\x00\\\"&\" + // 0x22250338: 0x00002226\n\t\"\\\"<\\x038\\x00\\x00\\\"A\" + // 0x223C0338: 0x00002241\n\t\"\\\"C\\x038\\x00\\x00\\\"D\" + // 0x22430338: 0x00002244\n\t\"\\\"E\\x038\\x00\\x00\\\"G\" + // 0x22450338: 0x00002247\n\t\"\\\"H\\x038\\x00\\x00\\\"I\" + // 0x22480338: 0x00002249\n\t\"\\x00=\\x038\\x00\\x00\\\"`\" + // 0x003D0338: 0x00002260\n\t\"\\\"a\\x038\\x00\\x00\\\"b\" + // 0x22610338: 0x00002262\n\t\"\\\"M\\x038\\x00\\x00\\\"m\" + // 0x224D0338: 0x0000226D\n\t\"\\x00<\\x038\\x00\\x00\\\"n\" + // 0x003C0338: 0x0000226E\n\t\"\\x00>\\x038\\x00\\x00\\\"o\" + // 0x003E0338: 0x0000226F\n\t\"\\\"d\\x038\\x00\\x00\\\"p\" + // 0x22640338: 0x00002270\n\t\"\\\"e\\x038\\x00\\x00\\\"q\" + // 0x22650338: 0x00002271\n\t\"\\\"r\\x038\\x00\\x00\\\"t\" + // 0x22720338: 0x00002274\n\t\"\\\"s\\x038\\x00\\x00\\\"u\" + // 0x22730338: 0x00002275\n\t\"\\\"v\\x038\\x00\\x00\\\"x\" + // 0x22760338: 0x00002278\n\t\"\\\"w\\x038\\x00\\x00\\\"y\" + // 0x22770338: 0x00002279\n\t\"\\\"z\\x038\\x00\\x00\\\"\\x80\" + // 0x227A0338: 0x00002280\n\t\"\\\"{\\x038\\x00\\x00\\\"\\x81\" + // 0x227B0338: 0x00002281\n\t\"\\\"\\x82\\x038\\x00\\x00\\\"\\x84\" + // 0x22820338: 0x00002284\n\t\"\\\"\\x83\\x038\\x00\\x00\\\"\\x85\" + // 0x22830338: 0x00002285\n\t\"\\\"\\x86\\x038\\x00\\x00\\\"\\x88\" + // 0x22860338: 0x00002288\n\t\"\\\"\\x87\\x038\\x00\\x00\\\"\\x89\" + // 0x22870338: 0x00002289\n\t\"\\\"\\xa2\\x038\\x00\\x00\\\"\\xac\" + // 0x22A20338: 0x000022AC\n\t\"\\\"\\xa8\\x038\\x00\\x00\\\"\\xad\" + // 0x22A80338: 0x000022AD\n\t\"\\\"\\xa9\\x038\\x00\\x00\\\"\\xae\" + // 0x22A90338: 0x000022AE\n\t\"\\\"\\xab\\x038\\x00\\x00\\\"\\xaf\" + // 0x22AB0338: 0x000022AF\n\t\"\\\"|\\x038\\x00\\x00\\\"\\xe0\" + // 0x227C0338: 0x000022E0\n\t\"\\\"}\\x038\\x00\\x00\\\"\\xe1\" + // 0x227D0338: 0x000022E1\n\t\"\\\"\\x91\\x038\\x00\\x00\\\"\\xe2\" + // 0x22910338: 0x000022E2\n\t\"\\\"\\x92\\x038\\x00\\x00\\\"\\xe3\" + // 0x22920338: 0x000022E3\n\t\"\\\"\\xb2\\x038\\x00\\x00\\\"\\xea\" + // 0x22B20338: 0x000022EA\n\t\"\\\"\\xb3\\x038\\x00\\x00\\\"\\xeb\" + // 0x22B30338: 0x000022EB\n\t\"\\\"\\xb4\\x038\\x00\\x00\\\"\\xec\" + // 0x22B40338: 0x000022EC\n\t\"\\\"\\xb5\\x038\\x00\\x00\\\"\\xed\" + // 0x22B50338: 0x000022ED\n\t\"0K0\\x99\\x00\\x000L\" + // 0x304B3099: 0x0000304C\n\t\"0M0\\x99\\x00\\x000N\" + // 0x304D3099: 0x0000304E\n\t\"0O0\\x99\\x00\\x000P\" + // 0x304F3099: 0x00003050\n\t\"0Q0\\x99\\x00\\x000R\" + // 0x30513099: 0x00003052\n\t\"0S0\\x99\\x00\\x000T\" + // 0x30533099: 0x00003054\n\t\"0U0\\x99\\x00\\x000V\" + // 0x30553099: 0x00003056\n\t\"0W0\\x99\\x00\\x000X\" + // 0x30573099: 0x00003058\n\t\"0Y0\\x99\\x00\\x000Z\" + // 0x30593099: 0x0000305A\n\t\"0[0\\x99\\x00\\x000\\\\\" + // 0x305B3099: 0x0000305C\n\t\"0]0\\x99\\x00\\x000^\" + // 0x305D3099: 0x0000305E\n\t\"0_0\\x99\\x00\\x000`\" + // 0x305F3099: 0x00003060\n\t\"0a0\\x99\\x00\\x000b\" + // 0x30613099: 0x00003062\n\t\"0d0\\x99\\x00\\x000e\" + // 0x30643099: 0x00003065\n\t\"0f0\\x99\\x00\\x000g\" + // 0x30663099: 0x00003067\n\t\"0h0\\x99\\x00\\x000i\" + // 0x30683099: 0x00003069\n\t\"0o0\\x99\\x00\\x000p\" + // 0x306F3099: 0x00003070\n\t\"0o0\\x9a\\x00\\x000q\" + // 0x306F309A: 0x00003071\n\t\"0r0\\x99\\x00\\x000s\" + // 0x30723099: 0x00003073\n\t\"0r0\\x9a\\x00\\x000t\" + // 0x3072309A: 0x00003074\n\t\"0u0\\x99\\x00\\x000v\" + // 0x30753099: 0x00003076\n\t\"0u0\\x9a\\x00\\x000w\" + // 0x3075309A: 0x00003077\n\t\"0x0\\x99\\x00\\x000y\" + // 0x30783099: 0x00003079\n\t\"0x0\\x9a\\x00\\x000z\" + // 0x3078309A: 0x0000307A\n\t\"0{0\\x99\\x00\\x000|\" + // 0x307B3099: 0x0000307C\n\t\"0{0\\x9a\\x00\\x000}\" + // 0x307B309A: 0x0000307D\n\t\"0F0\\x99\\x00\\x000\\x94\" + // 0x30463099: 0x00003094\n\t\"0\\x9d0\\x99\\x00\\x000\\x9e\" + // 0x309D3099: 0x0000309E\n\t\"0\\xab0\\x99\\x00\\x000\\xac\" + // 0x30AB3099: 0x000030AC\n\t\"0\\xad0\\x99\\x00\\x000\\xae\" + // 0x30AD3099: 0x000030AE\n\t\"0\\xaf0\\x99\\x00\\x000\\xb0\" + // 0x30AF3099: 0x000030B0\n\t\"0\\xb10\\x99\\x00\\x000\\xb2\" + // 0x30B13099: 0x000030B2\n\t\"0\\xb30\\x99\\x00\\x000\\xb4\" + // 0x30B33099: 0x000030B4\n\t\"0\\xb50\\x99\\x00\\x000\\xb6\" + // 0x30B53099: 0x000030B6\n\t\"0\\xb70\\x99\\x00\\x000\\xb8\" + // 0x30B73099: 0x000030B8\n\t\"0\\xb90\\x99\\x00\\x000\\xba\" + // 0x30B93099: 0x000030BA\n\t\"0\\xbb0\\x99\\x00\\x000\\xbc\" + // 0x30BB3099: 0x000030BC\n\t\"0\\xbd0\\x99\\x00\\x000\\xbe\" + // 0x30BD3099: 0x000030BE\n\t\"0\\xbf0\\x99\\x00\\x000\\xc0\" + // 0x30BF3099: 0x000030C0\n\t\"0\\xc10\\x99\\x00\\x000\\xc2\" + // 0x30C13099: 0x000030C2\n\t\"0\\xc40\\x99\\x00\\x000\\xc5\" + // 0x30C43099: 0x000030C5\n\t\"0\\xc60\\x99\\x00\\x000\\xc7\" + // 0x30C63099: 0x000030C7\n\t\"0\\xc80\\x99\\x00\\x000\\xc9\" + // 0x30C83099: 0x000030C9\n\t\"0\\xcf0\\x99\\x00\\x000\\xd0\" + // 0x30CF3099: 0x000030D0\n\t\"0\\xcf0\\x9a\\x00\\x000\\xd1\" + // 0x30CF309A: 0x000030D1\n\t\"0\\xd20\\x99\\x00\\x000\\xd3\" + // 0x30D23099: 0x000030D3\n\t\"0\\xd20\\x9a\\x00\\x000\\xd4\" + // 0x30D2309A: 0x000030D4\n\t\"0\\xd50\\x99\\x00\\x000\\xd6\" + // 0x30D53099: 0x000030D6\n\t\"0\\xd50\\x9a\\x00\\x000\\xd7\" + // 0x30D5309A: 0x000030D7\n\t\"0\\xd80\\x99\\x00\\x000\\xd9\" + // 0x30D83099: 0x000030D9\n\t\"0\\xd80\\x9a\\x00\\x000\\xda\" + // 0x30D8309A: 0x000030DA\n\t\"0\\xdb0\\x99\\x00\\x000\\xdc\" + // 0x30DB3099: 0x000030DC\n\t\"0\\xdb0\\x9a\\x00\\x000\\xdd\" + // 0x30DB309A: 0x000030DD\n\t\"0\\xa60\\x99\\x00\\x000\\xf4\" + // 0x30A63099: 0x000030F4\n\t\"0\\xef0\\x99\\x00\\x000\\xf7\" + // 0x30EF3099: 0x000030F7\n\t\"0\\xf00\\x99\\x00\\x000\\xf8\" + // 0x30F03099: 0x000030F8\n\t\"0\\xf10\\x99\\x00\\x000\\xf9\" + // 0x30F13099: 0x000030F9\n\t\"0\\xf20\\x99\\x00\\x000\\xfa\" + // 0x30F23099: 0x000030FA\n\t\"0\\xfd0\\x99\\x00\\x000\\xfe\" + // 0x30FD3099: 0x000030FE\n\t\"\\x10\\x99\\x10\\xba\\x00\\x01\\x10\\x9a\" + // 0x109910BA: 0x0001109A\n\t\"\\x10\\x9b\\x10\\xba\\x00\\x01\\x10\\x9c\" + // 0x109B10BA: 0x0001109C\n\t\"\\x10\\xa5\\x10\\xba\\x00\\x01\\x10\\xab\" + // 0x10A510BA: 0x000110AB\n\t\"\\x111\\x11'\\x00\\x01\\x11.\" + // 0x11311127: 0x0001112E\n\t\"\\x112\\x11'\\x00\\x01\\x11/\" + // 0x11321127: 0x0001112F\n\t\"\\x13G\\x13>\\x00\\x01\\x13K\" + // 0x1347133E: 0x0001134B\n\t\"\\x13G\\x13W\\x00\\x01\\x13L\" + // 0x13471357: 0x0001134C\n\t\"\\x14\\xb9\\x14\\xba\\x00\\x01\\x14\\xbb\" + // 0x14B914BA: 0x000114BB\n\t\"\\x14\\xb9\\x14\\xb0\\x00\\x01\\x14\\xbc\" + // 0x14B914B0: 0x000114BC\n\t\"\\x14\\xb9\\x14\\xbd\\x00\\x01\\x14\\xbe\" + // 0x14B914BD: 0x000114BE\n\t\"\\x15\\xb8\\x15\\xaf\\x00\\x01\\x15\\xba\" + // 0x15B815AF: 0x000115BA\n\t\"\\x15\\xb9\\x15\\xaf\\x00\\x01\\x15\\xbb\" + // 0x15B915AF: 0x000115BB\n\t\"\"\n\t// Total size of tables: 55KB (55977 bytes)\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/tables13.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.16 && !go1.21\n\npackage norm\n\nimport \"sync\"\n\nconst (\n\t// Version is the Unicode edition from which the tables are derived.\n\tVersion = \"13.0.0\"\n\n\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform\n\t// may need to write atomically for any Form. Making a destination buffer at\n\t// least this size ensures that Transform can always make progress and that\n\t// the user does not need to grow the buffer on an ErrShortDst.\n\tMaxTransformChunkSize = 35 + maxNonStarters*4\n)\n\nvar ccc = [56]uint8{\n\t0, 1, 6, 7, 8, 9, 10, 11,\n\t12, 13, 14, 15, 16, 17, 18, 19,\n\t20, 21, 22, 23, 24, 25, 26, 27,\n\t28, 29, 30, 31, 32, 33, 34, 35,\n\t36, 84, 91, 103, 107, 118, 122, 129,\n\t130, 132, 202, 214, 216, 218, 220, 222,\n\t224, 226, 228, 230, 232, 233, 234, 240,\n}\n\nconst (\n\tfirstMulti            = 0x1870\n\tfirstCCC              = 0x2CAB\n\tendMulti              = 0x2F77\n\tfirstLeadingCCC       = 0x49C5\n\tfirstCCCZeroExcept    = 0x4A8F\n\tfirstStarterWithNLead = 0x4AB6\n\tlastDecomp            = 0x4AB8\n\tmaxDecomp             = 0x8000\n)\n\n// decomps: 19128 bytes\nvar decomps = [...]byte{\n\t// Bytes 0 - 3f\n\t0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,\n\t0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41,\n\t0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41,\n\t0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41,\n\t0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41,\n\t0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41,\n\t0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41,\n\t0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41,\n\t// Bytes 40 - 7f\n\t0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41,\n\t0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41,\n\t0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41,\n\t0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41,\n\t0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41,\n\t0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41,\n\t0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41,\n\t0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41,\n\t// Bytes 80 - bf\n\t0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41,\n\t0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41,\n\t0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41,\n\t0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41,\n\t0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41,\n\t0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41,\n\t0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41,\n\t0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42,\n\t// Bytes c0 - ff\n\t0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5,\n\t0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2,\n\t0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xB0, 0x42,\n\t0xC4, 0xA6, 0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1,\n\t0x42, 0xC5, 0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6,\n\t0x8E, 0x42, 0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42,\n\t0xC8, 0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90,\n\t0x42, 0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9,\n\t// Bytes 100 - 13f\n\t0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9, 0x99, 0x42,\n\t0xC9, 0x9B, 0x42, 0xC9, 0x9C, 0x42, 0xC9, 0x9F,\n\t0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA3, 0x42, 0xC9,\n\t0xA5, 0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA8, 0x42,\n\t0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42, 0xC9, 0xAB,\n\t0x42, 0xC9, 0xAD, 0x42, 0xC9, 0xAF, 0x42, 0xC9,\n\t0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42,\n\t0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5,\n\t// Bytes 140 - 17f\n\t0x42, 0xC9, 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9,\n\t0xBB, 0x42, 0xCA, 0x81, 0x42, 0xCA, 0x82, 0x42,\n\t0xCA, 0x83, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A,\n\t0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA,\n\t0x8D, 0x42, 0xCA, 0x90, 0x42, 0xCA, 0x91, 0x42,\n\t0xCA, 0x92, 0x42, 0xCA, 0x95, 0x42, 0xCA, 0x9D,\n\t0x42, 0xCA, 0x9F, 0x42, 0xCA, 0xB9, 0x42, 0xCE,\n\t0x91, 0x42, 0xCE, 0x92, 0x42, 0xCE, 0x93, 0x42,\n\t// Bytes 180 - 1bf\n\t0xCE, 0x94, 0x42, 0xCE, 0x95, 0x42, 0xCE, 0x96,\n\t0x42, 0xCE, 0x97, 0x42, 0xCE, 0x98, 0x42, 0xCE,\n\t0x99, 0x42, 0xCE, 0x9A, 0x42, 0xCE, 0x9B, 0x42,\n\t0xCE, 0x9C, 0x42, 0xCE, 0x9D, 0x42, 0xCE, 0x9E,\n\t0x42, 0xCE, 0x9F, 0x42, 0xCE, 0xA0, 0x42, 0xCE,\n\t0xA1, 0x42, 0xCE, 0xA3, 0x42, 0xCE, 0xA4, 0x42,\n\t0xCE, 0xA5, 0x42, 0xCE, 0xA6, 0x42, 0xCE, 0xA7,\n\t0x42, 0xCE, 0xA8, 0x42, 0xCE, 0xA9, 0x42, 0xCE,\n\t// Bytes 1c0 - 1ff\n\t0xB1, 0x42, 0xCE, 0xB2, 0x42, 0xCE, 0xB3, 0x42,\n\t0xCE, 0xB4, 0x42, 0xCE, 0xB5, 0x42, 0xCE, 0xB6,\n\t0x42, 0xCE, 0xB7, 0x42, 0xCE, 0xB8, 0x42, 0xCE,\n\t0xB9, 0x42, 0xCE, 0xBA, 0x42, 0xCE, 0xBB, 0x42,\n\t0xCE, 0xBC, 0x42, 0xCE, 0xBD, 0x42, 0xCE, 0xBE,\n\t0x42, 0xCE, 0xBF, 0x42, 0xCF, 0x80, 0x42, 0xCF,\n\t0x81, 0x42, 0xCF, 0x82, 0x42, 0xCF, 0x83, 0x42,\n\t0xCF, 0x84, 0x42, 0xCF, 0x85, 0x42, 0xCF, 0x86,\n\t// Bytes 200 - 23f\n\t0x42, 0xCF, 0x87, 0x42, 0xCF, 0x88, 0x42, 0xCF,\n\t0x89, 0x42, 0xCF, 0x9C, 0x42, 0xCF, 0x9D, 0x42,\n\t0xD0, 0xBD, 0x42, 0xD1, 0x8A, 0x42, 0xD1, 0x8C,\n\t0x42, 0xD7, 0x90, 0x42, 0xD7, 0x91, 0x42, 0xD7,\n\t0x92, 0x42, 0xD7, 0x93, 0x42, 0xD7, 0x94, 0x42,\n\t0xD7, 0x9B, 0x42, 0xD7, 0x9C, 0x42, 0xD7, 0x9D,\n\t0x42, 0xD7, 0xA2, 0x42, 0xD7, 0xA8, 0x42, 0xD7,\n\t0xAA, 0x42, 0xD8, 0xA1, 0x42, 0xD8, 0xA7, 0x42,\n\t// Bytes 240 - 27f\n\t0xD8, 0xA8, 0x42, 0xD8, 0xA9, 0x42, 0xD8, 0xAA,\n\t0x42, 0xD8, 0xAB, 0x42, 0xD8, 0xAC, 0x42, 0xD8,\n\t0xAD, 0x42, 0xD8, 0xAE, 0x42, 0xD8, 0xAF, 0x42,\n\t0xD8, 0xB0, 0x42, 0xD8, 0xB1, 0x42, 0xD8, 0xB2,\n\t0x42, 0xD8, 0xB3, 0x42, 0xD8, 0xB4, 0x42, 0xD8,\n\t0xB5, 0x42, 0xD8, 0xB6, 0x42, 0xD8, 0xB7, 0x42,\n\t0xD8, 0xB8, 0x42, 0xD8, 0xB9, 0x42, 0xD8, 0xBA,\n\t0x42, 0xD9, 0x81, 0x42, 0xD9, 0x82, 0x42, 0xD9,\n\t// Bytes 280 - 2bf\n\t0x83, 0x42, 0xD9, 0x84, 0x42, 0xD9, 0x85, 0x42,\n\t0xD9, 0x86, 0x42, 0xD9, 0x87, 0x42, 0xD9, 0x88,\n\t0x42, 0xD9, 0x89, 0x42, 0xD9, 0x8A, 0x42, 0xD9,\n\t0xAE, 0x42, 0xD9, 0xAF, 0x42, 0xD9, 0xB1, 0x42,\n\t0xD9, 0xB9, 0x42, 0xD9, 0xBA, 0x42, 0xD9, 0xBB,\n\t0x42, 0xD9, 0xBE, 0x42, 0xD9, 0xBF, 0x42, 0xDA,\n\t0x80, 0x42, 0xDA, 0x83, 0x42, 0xDA, 0x84, 0x42,\n\t0xDA, 0x86, 0x42, 0xDA, 0x87, 0x42, 0xDA, 0x88,\n\t// Bytes 2c0 - 2ff\n\t0x42, 0xDA, 0x8C, 0x42, 0xDA, 0x8D, 0x42, 0xDA,\n\t0x8E, 0x42, 0xDA, 0x91, 0x42, 0xDA, 0x98, 0x42,\n\t0xDA, 0xA1, 0x42, 0xDA, 0xA4, 0x42, 0xDA, 0xA6,\n\t0x42, 0xDA, 0xA9, 0x42, 0xDA, 0xAD, 0x42, 0xDA,\n\t0xAF, 0x42, 0xDA, 0xB1, 0x42, 0xDA, 0xB3, 0x42,\n\t0xDA, 0xBA, 0x42, 0xDA, 0xBB, 0x42, 0xDA, 0xBE,\n\t0x42, 0xDB, 0x81, 0x42, 0xDB, 0x85, 0x42, 0xDB,\n\t0x86, 0x42, 0xDB, 0x87, 0x42, 0xDB, 0x88, 0x42,\n\t// Bytes 300 - 33f\n\t0xDB, 0x89, 0x42, 0xDB, 0x8B, 0x42, 0xDB, 0x8C,\n\t0x42, 0xDB, 0x90, 0x42, 0xDB, 0x92, 0x43, 0xE0,\n\t0xBC, 0x8B, 0x43, 0xE1, 0x83, 0x9C, 0x43, 0xE1,\n\t0x84, 0x80, 0x43, 0xE1, 0x84, 0x81, 0x43, 0xE1,\n\t0x84, 0x82, 0x43, 0xE1, 0x84, 0x83, 0x43, 0xE1,\n\t0x84, 0x84, 0x43, 0xE1, 0x84, 0x85, 0x43, 0xE1,\n\t0x84, 0x86, 0x43, 0xE1, 0x84, 0x87, 0x43, 0xE1,\n\t0x84, 0x88, 0x43, 0xE1, 0x84, 0x89, 0x43, 0xE1,\n\t// Bytes 340 - 37f\n\t0x84, 0x8A, 0x43, 0xE1, 0x84, 0x8B, 0x43, 0xE1,\n\t0x84, 0x8C, 0x43, 0xE1, 0x84, 0x8D, 0x43, 0xE1,\n\t0x84, 0x8E, 0x43, 0xE1, 0x84, 0x8F, 0x43, 0xE1,\n\t0x84, 0x90, 0x43, 0xE1, 0x84, 0x91, 0x43, 0xE1,\n\t0x84, 0x92, 0x43, 0xE1, 0x84, 0x94, 0x43, 0xE1,\n\t0x84, 0x95, 0x43, 0xE1, 0x84, 0x9A, 0x43, 0xE1,\n\t0x84, 0x9C, 0x43, 0xE1, 0x84, 0x9D, 0x43, 0xE1,\n\t0x84, 0x9E, 0x43, 0xE1, 0x84, 0xA0, 0x43, 0xE1,\n\t// Bytes 380 - 3bf\n\t0x84, 0xA1, 0x43, 0xE1, 0x84, 0xA2, 0x43, 0xE1,\n\t0x84, 0xA3, 0x43, 0xE1, 0x84, 0xA7, 0x43, 0xE1,\n\t0x84, 0xA9, 0x43, 0xE1, 0x84, 0xAB, 0x43, 0xE1,\n\t0x84, 0xAC, 0x43, 0xE1, 0x84, 0xAD, 0x43, 0xE1,\n\t0x84, 0xAE, 0x43, 0xE1, 0x84, 0xAF, 0x43, 0xE1,\n\t0x84, 0xB2, 0x43, 0xE1, 0x84, 0xB6, 0x43, 0xE1,\n\t0x85, 0x80, 0x43, 0xE1, 0x85, 0x87, 0x43, 0xE1,\n\t0x85, 0x8C, 0x43, 0xE1, 0x85, 0x97, 0x43, 0xE1,\n\t// Bytes 3c0 - 3ff\n\t0x85, 0x98, 0x43, 0xE1, 0x85, 0x99, 0x43, 0xE1,\n\t0x85, 0xA0, 0x43, 0xE1, 0x86, 0x84, 0x43, 0xE1,\n\t0x86, 0x85, 0x43, 0xE1, 0x86, 0x88, 0x43, 0xE1,\n\t0x86, 0x91, 0x43, 0xE1, 0x86, 0x92, 0x43, 0xE1,\n\t0x86, 0x94, 0x43, 0xE1, 0x86, 0x9E, 0x43, 0xE1,\n\t0x86, 0xA1, 0x43, 0xE1, 0x87, 0x87, 0x43, 0xE1,\n\t0x87, 0x88, 0x43, 0xE1, 0x87, 0x8C, 0x43, 0xE1,\n\t0x87, 0x8E, 0x43, 0xE1, 0x87, 0x93, 0x43, 0xE1,\n\t// Bytes 400 - 43f\n\t0x87, 0x97, 0x43, 0xE1, 0x87, 0x99, 0x43, 0xE1,\n\t0x87, 0x9D, 0x43, 0xE1, 0x87, 0x9F, 0x43, 0xE1,\n\t0x87, 0xB1, 0x43, 0xE1, 0x87, 0xB2, 0x43, 0xE1,\n\t0xB4, 0x82, 0x43, 0xE1, 0xB4, 0x96, 0x43, 0xE1,\n\t0xB4, 0x97, 0x43, 0xE1, 0xB4, 0x9C, 0x43, 0xE1,\n\t0xB4, 0x9D, 0x43, 0xE1, 0xB4, 0xA5, 0x43, 0xE1,\n\t0xB5, 0xBB, 0x43, 0xE1, 0xB6, 0x85, 0x43, 0xE2,\n\t0x80, 0x82, 0x43, 0xE2, 0x80, 0x83, 0x43, 0xE2,\n\t// Bytes 440 - 47f\n\t0x80, 0x90, 0x43, 0xE2, 0x80, 0x93, 0x43, 0xE2,\n\t0x80, 0x94, 0x43, 0xE2, 0x82, 0xA9, 0x43, 0xE2,\n\t0x86, 0x90, 0x43, 0xE2, 0x86, 0x91, 0x43, 0xE2,\n\t0x86, 0x92, 0x43, 0xE2, 0x86, 0x93, 0x43, 0xE2,\n\t0x88, 0x82, 0x43, 0xE2, 0x88, 0x87, 0x43, 0xE2,\n\t0x88, 0x91, 0x43, 0xE2, 0x88, 0x92, 0x43, 0xE2,\n\t0x94, 0x82, 0x43, 0xE2, 0x96, 0xA0, 0x43, 0xE2,\n\t0x97, 0x8B, 0x43, 0xE2, 0xA6, 0x85, 0x43, 0xE2,\n\t// Bytes 480 - 4bf\n\t0xA6, 0x86, 0x43, 0xE2, 0xB5, 0xA1, 0x43, 0xE3,\n\t0x80, 0x81, 0x43, 0xE3, 0x80, 0x82, 0x43, 0xE3,\n\t0x80, 0x88, 0x43, 0xE3, 0x80, 0x89, 0x43, 0xE3,\n\t0x80, 0x8A, 0x43, 0xE3, 0x80, 0x8B, 0x43, 0xE3,\n\t0x80, 0x8C, 0x43, 0xE3, 0x80, 0x8D, 0x43, 0xE3,\n\t0x80, 0x8E, 0x43, 0xE3, 0x80, 0x8F, 0x43, 0xE3,\n\t0x80, 0x90, 0x43, 0xE3, 0x80, 0x91, 0x43, 0xE3,\n\t0x80, 0x92, 0x43, 0xE3, 0x80, 0x94, 0x43, 0xE3,\n\t// Bytes 4c0 - 4ff\n\t0x80, 0x95, 0x43, 0xE3, 0x80, 0x96, 0x43, 0xE3,\n\t0x80, 0x97, 0x43, 0xE3, 0x82, 0xA1, 0x43, 0xE3,\n\t0x82, 0xA2, 0x43, 0xE3, 0x82, 0xA3, 0x43, 0xE3,\n\t0x82, 0xA4, 0x43, 0xE3, 0x82, 0xA5, 0x43, 0xE3,\n\t0x82, 0xA6, 0x43, 0xE3, 0x82, 0xA7, 0x43, 0xE3,\n\t0x82, 0xA8, 0x43, 0xE3, 0x82, 0xA9, 0x43, 0xE3,\n\t0x82, 0xAA, 0x43, 0xE3, 0x82, 0xAB, 0x43, 0xE3,\n\t0x82, 0xAD, 0x43, 0xE3, 0x82, 0xAF, 0x43, 0xE3,\n\t// Bytes 500 - 53f\n\t0x82, 0xB1, 0x43, 0xE3, 0x82, 0xB3, 0x43, 0xE3,\n\t0x82, 0xB5, 0x43, 0xE3, 0x82, 0xB7, 0x43, 0xE3,\n\t0x82, 0xB9, 0x43, 0xE3, 0x82, 0xBB, 0x43, 0xE3,\n\t0x82, 0xBD, 0x43, 0xE3, 0x82, 0xBF, 0x43, 0xE3,\n\t0x83, 0x81, 0x43, 0xE3, 0x83, 0x83, 0x43, 0xE3,\n\t0x83, 0x84, 0x43, 0xE3, 0x83, 0x86, 0x43, 0xE3,\n\t0x83, 0x88, 0x43, 0xE3, 0x83, 0x8A, 0x43, 0xE3,\n\t0x83, 0x8B, 0x43, 0xE3, 0x83, 0x8C, 0x43, 0xE3,\n\t// Bytes 540 - 57f\n\t0x83, 0x8D, 0x43, 0xE3, 0x83, 0x8E, 0x43, 0xE3,\n\t0x83, 0x8F, 0x43, 0xE3, 0x83, 0x92, 0x43, 0xE3,\n\t0x83, 0x95, 0x43, 0xE3, 0x83, 0x98, 0x43, 0xE3,\n\t0x83, 0x9B, 0x43, 0xE3, 0x83, 0x9E, 0x43, 0xE3,\n\t0x83, 0x9F, 0x43, 0xE3, 0x83, 0xA0, 0x43, 0xE3,\n\t0x83, 0xA1, 0x43, 0xE3, 0x83, 0xA2, 0x43, 0xE3,\n\t0x83, 0xA3, 0x43, 0xE3, 0x83, 0xA4, 0x43, 0xE3,\n\t0x83, 0xA5, 0x43, 0xE3, 0x83, 0xA6, 0x43, 0xE3,\n\t// Bytes 580 - 5bf\n\t0x83, 0xA7, 0x43, 0xE3, 0x83, 0xA8, 0x43, 0xE3,\n\t0x83, 0xA9, 0x43, 0xE3, 0x83, 0xAA, 0x43, 0xE3,\n\t0x83, 0xAB, 0x43, 0xE3, 0x83, 0xAC, 0x43, 0xE3,\n\t0x83, 0xAD, 0x43, 0xE3, 0x83, 0xAF, 0x43, 0xE3,\n\t0x83, 0xB0, 0x43, 0xE3, 0x83, 0xB1, 0x43, 0xE3,\n\t0x83, 0xB2, 0x43, 0xE3, 0x83, 0xB3, 0x43, 0xE3,\n\t0x83, 0xBB, 0x43, 0xE3, 0x83, 0xBC, 0x43, 0xE3,\n\t0x92, 0x9E, 0x43, 0xE3, 0x92, 0xB9, 0x43, 0xE3,\n\t// Bytes 5c0 - 5ff\n\t0x92, 0xBB, 0x43, 0xE3, 0x93, 0x9F, 0x43, 0xE3,\n\t0x94, 0x95, 0x43, 0xE3, 0x9B, 0xAE, 0x43, 0xE3,\n\t0x9B, 0xBC, 0x43, 0xE3, 0x9E, 0x81, 0x43, 0xE3,\n\t0xA0, 0xAF, 0x43, 0xE3, 0xA1, 0xA2, 0x43, 0xE3,\n\t0xA1, 0xBC, 0x43, 0xE3, 0xA3, 0x87, 0x43, 0xE3,\n\t0xA3, 0xA3, 0x43, 0xE3, 0xA4, 0x9C, 0x43, 0xE3,\n\t0xA4, 0xBA, 0x43, 0xE3, 0xA8, 0xAE, 0x43, 0xE3,\n\t0xA9, 0xAC, 0x43, 0xE3, 0xAB, 0xA4, 0x43, 0xE3,\n\t// Bytes 600 - 63f\n\t0xAC, 0x88, 0x43, 0xE3, 0xAC, 0x99, 0x43, 0xE3,\n\t0xAD, 0x89, 0x43, 0xE3, 0xAE, 0x9D, 0x43, 0xE3,\n\t0xB0, 0x98, 0x43, 0xE3, 0xB1, 0x8E, 0x43, 0xE3,\n\t0xB4, 0xB3, 0x43, 0xE3, 0xB6, 0x96, 0x43, 0xE3,\n\t0xBA, 0xAC, 0x43, 0xE3, 0xBA, 0xB8, 0x43, 0xE3,\n\t0xBC, 0x9B, 0x43, 0xE3, 0xBF, 0xBC, 0x43, 0xE4,\n\t0x80, 0x88, 0x43, 0xE4, 0x80, 0x98, 0x43, 0xE4,\n\t0x80, 0xB9, 0x43, 0xE4, 0x81, 0x86, 0x43, 0xE4,\n\t// Bytes 640 - 67f\n\t0x82, 0x96, 0x43, 0xE4, 0x83, 0xA3, 0x43, 0xE4,\n\t0x84, 0xAF, 0x43, 0xE4, 0x88, 0x82, 0x43, 0xE4,\n\t0x88, 0xA7, 0x43, 0xE4, 0x8A, 0xA0, 0x43, 0xE4,\n\t0x8C, 0x81, 0x43, 0xE4, 0x8C, 0xB4, 0x43, 0xE4,\n\t0x8D, 0x99, 0x43, 0xE4, 0x8F, 0x95, 0x43, 0xE4,\n\t0x8F, 0x99, 0x43, 0xE4, 0x90, 0x8B, 0x43, 0xE4,\n\t0x91, 0xAB, 0x43, 0xE4, 0x94, 0xAB, 0x43, 0xE4,\n\t0x95, 0x9D, 0x43, 0xE4, 0x95, 0xA1, 0x43, 0xE4,\n\t// Bytes 680 - 6bf\n\t0x95, 0xAB, 0x43, 0xE4, 0x97, 0x97, 0x43, 0xE4,\n\t0x97, 0xB9, 0x43, 0xE4, 0x98, 0xB5, 0x43, 0xE4,\n\t0x9A, 0xBE, 0x43, 0xE4, 0x9B, 0x87, 0x43, 0xE4,\n\t0xA6, 0x95, 0x43, 0xE4, 0xA7, 0xA6, 0x43, 0xE4,\n\t0xA9, 0xAE, 0x43, 0xE4, 0xA9, 0xB6, 0x43, 0xE4,\n\t0xAA, 0xB2, 0x43, 0xE4, 0xAC, 0xB3, 0x43, 0xE4,\n\t0xAF, 0x8E, 0x43, 0xE4, 0xB3, 0x8E, 0x43, 0xE4,\n\t0xB3, 0xAD, 0x43, 0xE4, 0xB3, 0xB8, 0x43, 0xE4,\n\t// Bytes 6c0 - 6ff\n\t0xB5, 0x96, 0x43, 0xE4, 0xB8, 0x80, 0x43, 0xE4,\n\t0xB8, 0x81, 0x43, 0xE4, 0xB8, 0x83, 0x43, 0xE4,\n\t0xB8, 0x89, 0x43, 0xE4, 0xB8, 0x8A, 0x43, 0xE4,\n\t0xB8, 0x8B, 0x43, 0xE4, 0xB8, 0x8D, 0x43, 0xE4,\n\t0xB8, 0x99, 0x43, 0xE4, 0xB8, 0xA6, 0x43, 0xE4,\n\t0xB8, 0xA8, 0x43, 0xE4, 0xB8, 0xAD, 0x43, 0xE4,\n\t0xB8, 0xB2, 0x43, 0xE4, 0xB8, 0xB6, 0x43, 0xE4,\n\t0xB8, 0xB8, 0x43, 0xE4, 0xB8, 0xB9, 0x43, 0xE4,\n\t// Bytes 700 - 73f\n\t0xB8, 0xBD, 0x43, 0xE4, 0xB8, 0xBF, 0x43, 0xE4,\n\t0xB9, 0x81, 0x43, 0xE4, 0xB9, 0x99, 0x43, 0xE4,\n\t0xB9, 0x9D, 0x43, 0xE4, 0xBA, 0x82, 0x43, 0xE4,\n\t0xBA, 0x85, 0x43, 0xE4, 0xBA, 0x86, 0x43, 0xE4,\n\t0xBA, 0x8C, 0x43, 0xE4, 0xBA, 0x94, 0x43, 0xE4,\n\t0xBA, 0xA0, 0x43, 0xE4, 0xBA, 0xA4, 0x43, 0xE4,\n\t0xBA, 0xAE, 0x43, 0xE4, 0xBA, 0xBA, 0x43, 0xE4,\n\t0xBB, 0x80, 0x43, 0xE4, 0xBB, 0x8C, 0x43, 0xE4,\n\t// Bytes 740 - 77f\n\t0xBB, 0xA4, 0x43, 0xE4, 0xBC, 0x81, 0x43, 0xE4,\n\t0xBC, 0x91, 0x43, 0xE4, 0xBD, 0xA0, 0x43, 0xE4,\n\t0xBE, 0x80, 0x43, 0xE4, 0xBE, 0x86, 0x43, 0xE4,\n\t0xBE, 0x8B, 0x43, 0xE4, 0xBE, 0xAE, 0x43, 0xE4,\n\t0xBE, 0xBB, 0x43, 0xE4, 0xBE, 0xBF, 0x43, 0xE5,\n\t0x80, 0x82, 0x43, 0xE5, 0x80, 0xAB, 0x43, 0xE5,\n\t0x81, 0xBA, 0x43, 0xE5, 0x82, 0x99, 0x43, 0xE5,\n\t0x83, 0x8F, 0x43, 0xE5, 0x83, 0x9A, 0x43, 0xE5,\n\t// Bytes 780 - 7bf\n\t0x83, 0xA7, 0x43, 0xE5, 0x84, 0xAA, 0x43, 0xE5,\n\t0x84, 0xBF, 0x43, 0xE5, 0x85, 0x80, 0x43, 0xE5,\n\t0x85, 0x85, 0x43, 0xE5, 0x85, 0x8D, 0x43, 0xE5,\n\t0x85, 0x94, 0x43, 0xE5, 0x85, 0xA4, 0x43, 0xE5,\n\t0x85, 0xA5, 0x43, 0xE5, 0x85, 0xA7, 0x43, 0xE5,\n\t0x85, 0xA8, 0x43, 0xE5, 0x85, 0xA9, 0x43, 0xE5,\n\t0x85, 0xAB, 0x43, 0xE5, 0x85, 0xAD, 0x43, 0xE5,\n\t0x85, 0xB7, 0x43, 0xE5, 0x86, 0x80, 0x43, 0xE5,\n\t// Bytes 7c0 - 7ff\n\t0x86, 0x82, 0x43, 0xE5, 0x86, 0x8D, 0x43, 0xE5,\n\t0x86, 0x92, 0x43, 0xE5, 0x86, 0x95, 0x43, 0xE5,\n\t0x86, 0x96, 0x43, 0xE5, 0x86, 0x97, 0x43, 0xE5,\n\t0x86, 0x99, 0x43, 0xE5, 0x86, 0xA4, 0x43, 0xE5,\n\t0x86, 0xAB, 0x43, 0xE5, 0x86, 0xAC, 0x43, 0xE5,\n\t0x86, 0xB5, 0x43, 0xE5, 0x86, 0xB7, 0x43, 0xE5,\n\t0x87, 0x89, 0x43, 0xE5, 0x87, 0x8C, 0x43, 0xE5,\n\t0x87, 0x9C, 0x43, 0xE5, 0x87, 0x9E, 0x43, 0xE5,\n\t// Bytes 800 - 83f\n\t0x87, 0xA0, 0x43, 0xE5, 0x87, 0xB5, 0x43, 0xE5,\n\t0x88, 0x80, 0x43, 0xE5, 0x88, 0x83, 0x43, 0xE5,\n\t0x88, 0x87, 0x43, 0xE5, 0x88, 0x97, 0x43, 0xE5,\n\t0x88, 0x9D, 0x43, 0xE5, 0x88, 0xA9, 0x43, 0xE5,\n\t0x88, 0xBA, 0x43, 0xE5, 0x88, 0xBB, 0x43, 0xE5,\n\t0x89, 0x86, 0x43, 0xE5, 0x89, 0x8D, 0x43, 0xE5,\n\t0x89, 0xB2, 0x43, 0xE5, 0x89, 0xB7, 0x43, 0xE5,\n\t0x8A, 0x89, 0x43, 0xE5, 0x8A, 0x9B, 0x43, 0xE5,\n\t// Bytes 840 - 87f\n\t0x8A, 0xA3, 0x43, 0xE5, 0x8A, 0xB3, 0x43, 0xE5,\n\t0x8A, 0xB4, 0x43, 0xE5, 0x8B, 0x87, 0x43, 0xE5,\n\t0x8B, 0x89, 0x43, 0xE5, 0x8B, 0x92, 0x43, 0xE5,\n\t0x8B, 0x9E, 0x43, 0xE5, 0x8B, 0xA4, 0x43, 0xE5,\n\t0x8B, 0xB5, 0x43, 0xE5, 0x8B, 0xB9, 0x43, 0xE5,\n\t0x8B, 0xBA, 0x43, 0xE5, 0x8C, 0x85, 0x43, 0xE5,\n\t0x8C, 0x86, 0x43, 0xE5, 0x8C, 0x95, 0x43, 0xE5,\n\t0x8C, 0x97, 0x43, 0xE5, 0x8C, 0x9A, 0x43, 0xE5,\n\t// Bytes 880 - 8bf\n\t0x8C, 0xB8, 0x43, 0xE5, 0x8C, 0xBB, 0x43, 0xE5,\n\t0x8C, 0xBF, 0x43, 0xE5, 0x8D, 0x81, 0x43, 0xE5,\n\t0x8D, 0x84, 0x43, 0xE5, 0x8D, 0x85, 0x43, 0xE5,\n\t0x8D, 0x89, 0x43, 0xE5, 0x8D, 0x91, 0x43, 0xE5,\n\t0x8D, 0x94, 0x43, 0xE5, 0x8D, 0x9A, 0x43, 0xE5,\n\t0x8D, 0x9C, 0x43, 0xE5, 0x8D, 0xA9, 0x43, 0xE5,\n\t0x8D, 0xB0, 0x43, 0xE5, 0x8D, 0xB3, 0x43, 0xE5,\n\t0x8D, 0xB5, 0x43, 0xE5, 0x8D, 0xBD, 0x43, 0xE5,\n\t// Bytes 8c0 - 8ff\n\t0x8D, 0xBF, 0x43, 0xE5, 0x8E, 0x82, 0x43, 0xE5,\n\t0x8E, 0xB6, 0x43, 0xE5, 0x8F, 0x83, 0x43, 0xE5,\n\t0x8F, 0x88, 0x43, 0xE5, 0x8F, 0x8A, 0x43, 0xE5,\n\t0x8F, 0x8C, 0x43, 0xE5, 0x8F, 0x9F, 0x43, 0xE5,\n\t0x8F, 0xA3, 0x43, 0xE5, 0x8F, 0xA5, 0x43, 0xE5,\n\t0x8F, 0xAB, 0x43, 0xE5, 0x8F, 0xAF, 0x43, 0xE5,\n\t0x8F, 0xB1, 0x43, 0xE5, 0x8F, 0xB3, 0x43, 0xE5,\n\t0x90, 0x86, 0x43, 0xE5, 0x90, 0x88, 0x43, 0xE5,\n\t// Bytes 900 - 93f\n\t0x90, 0x8D, 0x43, 0xE5, 0x90, 0x8F, 0x43, 0xE5,\n\t0x90, 0x9D, 0x43, 0xE5, 0x90, 0xB8, 0x43, 0xE5,\n\t0x90, 0xB9, 0x43, 0xE5, 0x91, 0x82, 0x43, 0xE5,\n\t0x91, 0x88, 0x43, 0xE5, 0x91, 0xA8, 0x43, 0xE5,\n\t0x92, 0x9E, 0x43, 0xE5, 0x92, 0xA2, 0x43, 0xE5,\n\t0x92, 0xBD, 0x43, 0xE5, 0x93, 0xB6, 0x43, 0xE5,\n\t0x94, 0x90, 0x43, 0xE5, 0x95, 0x8F, 0x43, 0xE5,\n\t0x95, 0x93, 0x43, 0xE5, 0x95, 0x95, 0x43, 0xE5,\n\t// Bytes 940 - 97f\n\t0x95, 0xA3, 0x43, 0xE5, 0x96, 0x84, 0x43, 0xE5,\n\t0x96, 0x87, 0x43, 0xE5, 0x96, 0x99, 0x43, 0xE5,\n\t0x96, 0x9D, 0x43, 0xE5, 0x96, 0xAB, 0x43, 0xE5,\n\t0x96, 0xB3, 0x43, 0xE5, 0x96, 0xB6, 0x43, 0xE5,\n\t0x97, 0x80, 0x43, 0xE5, 0x97, 0x82, 0x43, 0xE5,\n\t0x97, 0xA2, 0x43, 0xE5, 0x98, 0x86, 0x43, 0xE5,\n\t0x99, 0x91, 0x43, 0xE5, 0x99, 0xA8, 0x43, 0xE5,\n\t0x99, 0xB4, 0x43, 0xE5, 0x9B, 0x97, 0x43, 0xE5,\n\t// Bytes 980 - 9bf\n\t0x9B, 0x9B, 0x43, 0xE5, 0x9B, 0xB9, 0x43, 0xE5,\n\t0x9C, 0x96, 0x43, 0xE5, 0x9C, 0x97, 0x43, 0xE5,\n\t0x9C, 0x9F, 0x43, 0xE5, 0x9C, 0xB0, 0x43, 0xE5,\n\t0x9E, 0x8B, 0x43, 0xE5, 0x9F, 0x8E, 0x43, 0xE5,\n\t0x9F, 0xB4, 0x43, 0xE5, 0xA0, 0x8D, 0x43, 0xE5,\n\t0xA0, 0xB1, 0x43, 0xE5, 0xA0, 0xB2, 0x43, 0xE5,\n\t0xA1, 0x80, 0x43, 0xE5, 0xA1, 0x9A, 0x43, 0xE5,\n\t0xA1, 0x9E, 0x43, 0xE5, 0xA2, 0xA8, 0x43, 0xE5,\n\t// Bytes 9c0 - 9ff\n\t0xA2, 0xAC, 0x43, 0xE5, 0xA2, 0xB3, 0x43, 0xE5,\n\t0xA3, 0x98, 0x43, 0xE5, 0xA3, 0x9F, 0x43, 0xE5,\n\t0xA3, 0xAB, 0x43, 0xE5, 0xA3, 0xAE, 0x43, 0xE5,\n\t0xA3, 0xB0, 0x43, 0xE5, 0xA3, 0xB2, 0x43, 0xE5,\n\t0xA3, 0xB7, 0x43, 0xE5, 0xA4, 0x82, 0x43, 0xE5,\n\t0xA4, 0x86, 0x43, 0xE5, 0xA4, 0x8A, 0x43, 0xE5,\n\t0xA4, 0x95, 0x43, 0xE5, 0xA4, 0x9A, 0x43, 0xE5,\n\t0xA4, 0x9C, 0x43, 0xE5, 0xA4, 0xA2, 0x43, 0xE5,\n\t// Bytes a00 - a3f\n\t0xA4, 0xA7, 0x43, 0xE5, 0xA4, 0xA9, 0x43, 0xE5,\n\t0xA5, 0x84, 0x43, 0xE5, 0xA5, 0x88, 0x43, 0xE5,\n\t0xA5, 0x91, 0x43, 0xE5, 0xA5, 0x94, 0x43, 0xE5,\n\t0xA5, 0xA2, 0x43, 0xE5, 0xA5, 0xB3, 0x43, 0xE5,\n\t0xA7, 0x98, 0x43, 0xE5, 0xA7, 0xAC, 0x43, 0xE5,\n\t0xA8, 0x9B, 0x43, 0xE5, 0xA8, 0xA7, 0x43, 0xE5,\n\t0xA9, 0xA2, 0x43, 0xE5, 0xA9, 0xA6, 0x43, 0xE5,\n\t0xAA, 0xB5, 0x43, 0xE5, 0xAC, 0x88, 0x43, 0xE5,\n\t// Bytes a40 - a7f\n\t0xAC, 0xA8, 0x43, 0xE5, 0xAC, 0xBE, 0x43, 0xE5,\n\t0xAD, 0x90, 0x43, 0xE5, 0xAD, 0x97, 0x43, 0xE5,\n\t0xAD, 0xA6, 0x43, 0xE5, 0xAE, 0x80, 0x43, 0xE5,\n\t0xAE, 0x85, 0x43, 0xE5, 0xAE, 0x97, 0x43, 0xE5,\n\t0xAF, 0x83, 0x43, 0xE5, 0xAF, 0x98, 0x43, 0xE5,\n\t0xAF, 0xA7, 0x43, 0xE5, 0xAF, 0xAE, 0x43, 0xE5,\n\t0xAF, 0xB3, 0x43, 0xE5, 0xAF, 0xB8, 0x43, 0xE5,\n\t0xAF, 0xBF, 0x43, 0xE5, 0xB0, 0x86, 0x43, 0xE5,\n\t// Bytes a80 - abf\n\t0xB0, 0x8F, 0x43, 0xE5, 0xB0, 0xA2, 0x43, 0xE5,\n\t0xB0, 0xB8, 0x43, 0xE5, 0xB0, 0xBF, 0x43, 0xE5,\n\t0xB1, 0xA0, 0x43, 0xE5, 0xB1, 0xA2, 0x43, 0xE5,\n\t0xB1, 0xA4, 0x43, 0xE5, 0xB1, 0xA5, 0x43, 0xE5,\n\t0xB1, 0xAE, 0x43, 0xE5, 0xB1, 0xB1, 0x43, 0xE5,\n\t0xB2, 0x8D, 0x43, 0xE5, 0xB3, 0x80, 0x43, 0xE5,\n\t0xB4, 0x99, 0x43, 0xE5, 0xB5, 0x83, 0x43, 0xE5,\n\t0xB5, 0x90, 0x43, 0xE5, 0xB5, 0xAB, 0x43, 0xE5,\n\t// Bytes ac0 - aff\n\t0xB5, 0xAE, 0x43, 0xE5, 0xB5, 0xBC, 0x43, 0xE5,\n\t0xB6, 0xB2, 0x43, 0xE5, 0xB6, 0xBA, 0x43, 0xE5,\n\t0xB7, 0x9B, 0x43, 0xE5, 0xB7, 0xA1, 0x43, 0xE5,\n\t0xB7, 0xA2, 0x43, 0xE5, 0xB7, 0xA5, 0x43, 0xE5,\n\t0xB7, 0xA6, 0x43, 0xE5, 0xB7, 0xB1, 0x43, 0xE5,\n\t0xB7, 0xBD, 0x43, 0xE5, 0xB7, 0xBE, 0x43, 0xE5,\n\t0xB8, 0xA8, 0x43, 0xE5, 0xB8, 0xBD, 0x43, 0xE5,\n\t0xB9, 0xA9, 0x43, 0xE5, 0xB9, 0xB2, 0x43, 0xE5,\n\t// Bytes b00 - b3f\n\t0xB9, 0xB4, 0x43, 0xE5, 0xB9, 0xBA, 0x43, 0xE5,\n\t0xB9, 0xBC, 0x43, 0xE5, 0xB9, 0xBF, 0x43, 0xE5,\n\t0xBA, 0xA6, 0x43, 0xE5, 0xBA, 0xB0, 0x43, 0xE5,\n\t0xBA, 0xB3, 0x43, 0xE5, 0xBA, 0xB6, 0x43, 0xE5,\n\t0xBB, 0x89, 0x43, 0xE5, 0xBB, 0x8A, 0x43, 0xE5,\n\t0xBB, 0x92, 0x43, 0xE5, 0xBB, 0x93, 0x43, 0xE5,\n\t0xBB, 0x99, 0x43, 0xE5, 0xBB, 0xAC, 0x43, 0xE5,\n\t0xBB, 0xB4, 0x43, 0xE5, 0xBB, 0xBE, 0x43, 0xE5,\n\t// Bytes b40 - b7f\n\t0xBC, 0x84, 0x43, 0xE5, 0xBC, 0x8B, 0x43, 0xE5,\n\t0xBC, 0x93, 0x43, 0xE5, 0xBC, 0xA2, 0x43, 0xE5,\n\t0xBD, 0x90, 0x43, 0xE5, 0xBD, 0x93, 0x43, 0xE5,\n\t0xBD, 0xA1, 0x43, 0xE5, 0xBD, 0xA2, 0x43, 0xE5,\n\t0xBD, 0xA9, 0x43, 0xE5, 0xBD, 0xAB, 0x43, 0xE5,\n\t0xBD, 0xB3, 0x43, 0xE5, 0xBE, 0x8B, 0x43, 0xE5,\n\t0xBE, 0x8C, 0x43, 0xE5, 0xBE, 0x97, 0x43, 0xE5,\n\t0xBE, 0x9A, 0x43, 0xE5, 0xBE, 0xA9, 0x43, 0xE5,\n\t// Bytes b80 - bbf\n\t0xBE, 0xAD, 0x43, 0xE5, 0xBF, 0x83, 0x43, 0xE5,\n\t0xBF, 0x8D, 0x43, 0xE5, 0xBF, 0x97, 0x43, 0xE5,\n\t0xBF, 0xB5, 0x43, 0xE5, 0xBF, 0xB9, 0x43, 0xE6,\n\t0x80, 0x92, 0x43, 0xE6, 0x80, 0x9C, 0x43, 0xE6,\n\t0x81, 0xB5, 0x43, 0xE6, 0x82, 0x81, 0x43, 0xE6,\n\t0x82, 0x94, 0x43, 0xE6, 0x83, 0x87, 0x43, 0xE6,\n\t0x83, 0x98, 0x43, 0xE6, 0x83, 0xA1, 0x43, 0xE6,\n\t0x84, 0x88, 0x43, 0xE6, 0x85, 0x84, 0x43, 0xE6,\n\t// Bytes bc0 - bff\n\t0x85, 0x88, 0x43, 0xE6, 0x85, 0x8C, 0x43, 0xE6,\n\t0x85, 0x8E, 0x43, 0xE6, 0x85, 0xA0, 0x43, 0xE6,\n\t0x85, 0xA8, 0x43, 0xE6, 0x85, 0xBA, 0x43, 0xE6,\n\t0x86, 0x8E, 0x43, 0xE6, 0x86, 0x90, 0x43, 0xE6,\n\t0x86, 0xA4, 0x43, 0xE6, 0x86, 0xAF, 0x43, 0xE6,\n\t0x86, 0xB2, 0x43, 0xE6, 0x87, 0x9E, 0x43, 0xE6,\n\t0x87, 0xB2, 0x43, 0xE6, 0x87, 0xB6, 0x43, 0xE6,\n\t0x88, 0x80, 0x43, 0xE6, 0x88, 0x88, 0x43, 0xE6,\n\t// Bytes c00 - c3f\n\t0x88, 0x90, 0x43, 0xE6, 0x88, 0x9B, 0x43, 0xE6,\n\t0x88, 0xAE, 0x43, 0xE6, 0x88, 0xB4, 0x43, 0xE6,\n\t0x88, 0xB6, 0x43, 0xE6, 0x89, 0x8B, 0x43, 0xE6,\n\t0x89, 0x93, 0x43, 0xE6, 0x89, 0x9D, 0x43, 0xE6,\n\t0x8A, 0x95, 0x43, 0xE6, 0x8A, 0xB1, 0x43, 0xE6,\n\t0x8B, 0x89, 0x43, 0xE6, 0x8B, 0x8F, 0x43, 0xE6,\n\t0x8B, 0x93, 0x43, 0xE6, 0x8B, 0x94, 0x43, 0xE6,\n\t0x8B, 0xBC, 0x43, 0xE6, 0x8B, 0xBE, 0x43, 0xE6,\n\t// Bytes c40 - c7f\n\t0x8C, 0x87, 0x43, 0xE6, 0x8C, 0xBD, 0x43, 0xE6,\n\t0x8D, 0x90, 0x43, 0xE6, 0x8D, 0x95, 0x43, 0xE6,\n\t0x8D, 0xA8, 0x43, 0xE6, 0x8D, 0xBB, 0x43, 0xE6,\n\t0x8E, 0x83, 0x43, 0xE6, 0x8E, 0xA0, 0x43, 0xE6,\n\t0x8E, 0xA9, 0x43, 0xE6, 0x8F, 0x84, 0x43, 0xE6,\n\t0x8F, 0x85, 0x43, 0xE6, 0x8F, 0xA4, 0x43, 0xE6,\n\t0x90, 0x9C, 0x43, 0xE6, 0x90, 0xA2, 0x43, 0xE6,\n\t0x91, 0x92, 0x43, 0xE6, 0x91, 0xA9, 0x43, 0xE6,\n\t// Bytes c80 - cbf\n\t0x91, 0xB7, 0x43, 0xE6, 0x91, 0xBE, 0x43, 0xE6,\n\t0x92, 0x9A, 0x43, 0xE6, 0x92, 0x9D, 0x43, 0xE6,\n\t0x93, 0x84, 0x43, 0xE6, 0x94, 0xAF, 0x43, 0xE6,\n\t0x94, 0xB4, 0x43, 0xE6, 0x95, 0x8F, 0x43, 0xE6,\n\t0x95, 0x96, 0x43, 0xE6, 0x95, 0xAC, 0x43, 0xE6,\n\t0x95, 0xB8, 0x43, 0xE6, 0x96, 0x87, 0x43, 0xE6,\n\t0x96, 0x97, 0x43, 0xE6, 0x96, 0x99, 0x43, 0xE6,\n\t0x96, 0xA4, 0x43, 0xE6, 0x96, 0xB0, 0x43, 0xE6,\n\t// Bytes cc0 - cff\n\t0x96, 0xB9, 0x43, 0xE6, 0x97, 0x85, 0x43, 0xE6,\n\t0x97, 0xA0, 0x43, 0xE6, 0x97, 0xA2, 0x43, 0xE6,\n\t0x97, 0xA3, 0x43, 0xE6, 0x97, 0xA5, 0x43, 0xE6,\n\t0x98, 0x93, 0x43, 0xE6, 0x98, 0xA0, 0x43, 0xE6,\n\t0x99, 0x89, 0x43, 0xE6, 0x99, 0xB4, 0x43, 0xE6,\n\t0x9A, 0x88, 0x43, 0xE6, 0x9A, 0x91, 0x43, 0xE6,\n\t0x9A, 0x9C, 0x43, 0xE6, 0x9A, 0xB4, 0x43, 0xE6,\n\t0x9B, 0x86, 0x43, 0xE6, 0x9B, 0xB0, 0x43, 0xE6,\n\t// Bytes d00 - d3f\n\t0x9B, 0xB4, 0x43, 0xE6, 0x9B, 0xB8, 0x43, 0xE6,\n\t0x9C, 0x80, 0x43, 0xE6, 0x9C, 0x88, 0x43, 0xE6,\n\t0x9C, 0x89, 0x43, 0xE6, 0x9C, 0x97, 0x43, 0xE6,\n\t0x9C, 0x9B, 0x43, 0xE6, 0x9C, 0xA1, 0x43, 0xE6,\n\t0x9C, 0xA8, 0x43, 0xE6, 0x9D, 0x8E, 0x43, 0xE6,\n\t0x9D, 0x93, 0x43, 0xE6, 0x9D, 0x96, 0x43, 0xE6,\n\t0x9D, 0x9E, 0x43, 0xE6, 0x9D, 0xBB, 0x43, 0xE6,\n\t0x9E, 0x85, 0x43, 0xE6, 0x9E, 0x97, 0x43, 0xE6,\n\t// Bytes d40 - d7f\n\t0x9F, 0xB3, 0x43, 0xE6, 0x9F, 0xBA, 0x43, 0xE6,\n\t0xA0, 0x97, 0x43, 0xE6, 0xA0, 0x9F, 0x43, 0xE6,\n\t0xA0, 0xAA, 0x43, 0xE6, 0xA1, 0x92, 0x43, 0xE6,\n\t0xA2, 0x81, 0x43, 0xE6, 0xA2, 0x85, 0x43, 0xE6,\n\t0xA2, 0x8E, 0x43, 0xE6, 0xA2, 0xA8, 0x43, 0xE6,\n\t0xA4, 0x94, 0x43, 0xE6, 0xA5, 0x82, 0x43, 0xE6,\n\t0xA6, 0xA3, 0x43, 0xE6, 0xA7, 0xAA, 0x43, 0xE6,\n\t0xA8, 0x82, 0x43, 0xE6, 0xA8, 0x93, 0x43, 0xE6,\n\t// Bytes d80 - dbf\n\t0xAA, 0xA8, 0x43, 0xE6, 0xAB, 0x93, 0x43, 0xE6,\n\t0xAB, 0x9B, 0x43, 0xE6, 0xAC, 0x84, 0x43, 0xE6,\n\t0xAC, 0xA0, 0x43, 0xE6, 0xAC, 0xA1, 0x43, 0xE6,\n\t0xAD, 0x94, 0x43, 0xE6, 0xAD, 0xA2, 0x43, 0xE6,\n\t0xAD, 0xA3, 0x43, 0xE6, 0xAD, 0xB2, 0x43, 0xE6,\n\t0xAD, 0xB7, 0x43, 0xE6, 0xAD, 0xB9, 0x43, 0xE6,\n\t0xAE, 0x9F, 0x43, 0xE6, 0xAE, 0xAE, 0x43, 0xE6,\n\t0xAE, 0xB3, 0x43, 0xE6, 0xAE, 0xBA, 0x43, 0xE6,\n\t// Bytes dc0 - dff\n\t0xAE, 0xBB, 0x43, 0xE6, 0xAF, 0x8B, 0x43, 0xE6,\n\t0xAF, 0x8D, 0x43, 0xE6, 0xAF, 0x94, 0x43, 0xE6,\n\t0xAF, 0x9B, 0x43, 0xE6, 0xB0, 0x8F, 0x43, 0xE6,\n\t0xB0, 0x94, 0x43, 0xE6, 0xB0, 0xB4, 0x43, 0xE6,\n\t0xB1, 0x8E, 0x43, 0xE6, 0xB1, 0xA7, 0x43, 0xE6,\n\t0xB2, 0x88, 0x43, 0xE6, 0xB2, 0xBF, 0x43, 0xE6,\n\t0xB3, 0x8C, 0x43, 0xE6, 0xB3, 0x8D, 0x43, 0xE6,\n\t0xB3, 0xA5, 0x43, 0xE6, 0xB3, 0xA8, 0x43, 0xE6,\n\t// Bytes e00 - e3f\n\t0xB4, 0x96, 0x43, 0xE6, 0xB4, 0x9B, 0x43, 0xE6,\n\t0xB4, 0x9E, 0x43, 0xE6, 0xB4, 0xB4, 0x43, 0xE6,\n\t0xB4, 0xBE, 0x43, 0xE6, 0xB5, 0x81, 0x43, 0xE6,\n\t0xB5, 0xA9, 0x43, 0xE6, 0xB5, 0xAA, 0x43, 0xE6,\n\t0xB5, 0xB7, 0x43, 0xE6, 0xB5, 0xB8, 0x43, 0xE6,\n\t0xB6, 0x85, 0x43, 0xE6, 0xB7, 0x8B, 0x43, 0xE6,\n\t0xB7, 0x9A, 0x43, 0xE6, 0xB7, 0xAA, 0x43, 0xE6,\n\t0xB7, 0xB9, 0x43, 0xE6, 0xB8, 0x9A, 0x43, 0xE6,\n\t// Bytes e40 - e7f\n\t0xB8, 0xAF, 0x43, 0xE6, 0xB9, 0xAE, 0x43, 0xE6,\n\t0xBA, 0x80, 0x43, 0xE6, 0xBA, 0x9C, 0x43, 0xE6,\n\t0xBA, 0xBA, 0x43, 0xE6, 0xBB, 0x87, 0x43, 0xE6,\n\t0xBB, 0x8B, 0x43, 0xE6, 0xBB, 0x91, 0x43, 0xE6,\n\t0xBB, 0x9B, 0x43, 0xE6, 0xBC, 0x8F, 0x43, 0xE6,\n\t0xBC, 0x94, 0x43, 0xE6, 0xBC, 0xA2, 0x43, 0xE6,\n\t0xBC, 0xA3, 0x43, 0xE6, 0xBD, 0xAE, 0x43, 0xE6,\n\t0xBF, 0x86, 0x43, 0xE6, 0xBF, 0xAB, 0x43, 0xE6,\n\t// Bytes e80 - ebf\n\t0xBF, 0xBE, 0x43, 0xE7, 0x80, 0x9B, 0x43, 0xE7,\n\t0x80, 0x9E, 0x43, 0xE7, 0x80, 0xB9, 0x43, 0xE7,\n\t0x81, 0x8A, 0x43, 0xE7, 0x81, 0xAB, 0x43, 0xE7,\n\t0x81, 0xB0, 0x43, 0xE7, 0x81, 0xB7, 0x43, 0xE7,\n\t0x81, 0xBD, 0x43, 0xE7, 0x82, 0x99, 0x43, 0xE7,\n\t0x82, 0xAD, 0x43, 0xE7, 0x83, 0x88, 0x43, 0xE7,\n\t0x83, 0x99, 0x43, 0xE7, 0x84, 0xA1, 0x43, 0xE7,\n\t0x85, 0x85, 0x43, 0xE7, 0x85, 0x89, 0x43, 0xE7,\n\t// Bytes ec0 - eff\n\t0x85, 0xAE, 0x43, 0xE7, 0x86, 0x9C, 0x43, 0xE7,\n\t0x87, 0x8E, 0x43, 0xE7, 0x87, 0x90, 0x43, 0xE7,\n\t0x88, 0x90, 0x43, 0xE7, 0x88, 0x9B, 0x43, 0xE7,\n\t0x88, 0xA8, 0x43, 0xE7, 0x88, 0xAA, 0x43, 0xE7,\n\t0x88, 0xAB, 0x43, 0xE7, 0x88, 0xB5, 0x43, 0xE7,\n\t0x88, 0xB6, 0x43, 0xE7, 0x88, 0xBB, 0x43, 0xE7,\n\t0x88, 0xBF, 0x43, 0xE7, 0x89, 0x87, 0x43, 0xE7,\n\t0x89, 0x90, 0x43, 0xE7, 0x89, 0x99, 0x43, 0xE7,\n\t// Bytes f00 - f3f\n\t0x89, 0x9B, 0x43, 0xE7, 0x89, 0xA2, 0x43, 0xE7,\n\t0x89, 0xB9, 0x43, 0xE7, 0x8A, 0x80, 0x43, 0xE7,\n\t0x8A, 0x95, 0x43, 0xE7, 0x8A, 0xAC, 0x43, 0xE7,\n\t0x8A, 0xAF, 0x43, 0xE7, 0x8B, 0x80, 0x43, 0xE7,\n\t0x8B, 0xBC, 0x43, 0xE7, 0x8C, 0xAA, 0x43, 0xE7,\n\t0x8D, 0xB5, 0x43, 0xE7, 0x8D, 0xBA, 0x43, 0xE7,\n\t0x8E, 0x84, 0x43, 0xE7, 0x8E, 0x87, 0x43, 0xE7,\n\t0x8E, 0x89, 0x43, 0xE7, 0x8E, 0x8B, 0x43, 0xE7,\n\t// Bytes f40 - f7f\n\t0x8E, 0xA5, 0x43, 0xE7, 0x8E, 0xB2, 0x43, 0xE7,\n\t0x8F, 0x9E, 0x43, 0xE7, 0x90, 0x86, 0x43, 0xE7,\n\t0x90, 0x89, 0x43, 0xE7, 0x90, 0xA2, 0x43, 0xE7,\n\t0x91, 0x87, 0x43, 0xE7, 0x91, 0x9C, 0x43, 0xE7,\n\t0x91, 0xA9, 0x43, 0xE7, 0x91, 0xB1, 0x43, 0xE7,\n\t0x92, 0x85, 0x43, 0xE7, 0x92, 0x89, 0x43, 0xE7,\n\t0x92, 0x98, 0x43, 0xE7, 0x93, 0x8A, 0x43, 0xE7,\n\t0x93, 0x9C, 0x43, 0xE7, 0x93, 0xA6, 0x43, 0xE7,\n\t// Bytes f80 - fbf\n\t0x94, 0x86, 0x43, 0xE7, 0x94, 0x98, 0x43, 0xE7,\n\t0x94, 0x9F, 0x43, 0xE7, 0x94, 0xA4, 0x43, 0xE7,\n\t0x94, 0xA8, 0x43, 0xE7, 0x94, 0xB0, 0x43, 0xE7,\n\t0x94, 0xB2, 0x43, 0xE7, 0x94, 0xB3, 0x43, 0xE7,\n\t0x94, 0xB7, 0x43, 0xE7, 0x94, 0xBB, 0x43, 0xE7,\n\t0x94, 0xBE, 0x43, 0xE7, 0x95, 0x99, 0x43, 0xE7,\n\t0x95, 0xA5, 0x43, 0xE7, 0x95, 0xB0, 0x43, 0xE7,\n\t0x96, 0x8B, 0x43, 0xE7, 0x96, 0x92, 0x43, 0xE7,\n\t// Bytes fc0 - fff\n\t0x97, 0xA2, 0x43, 0xE7, 0x98, 0x90, 0x43, 0xE7,\n\t0x98, 0x9D, 0x43, 0xE7, 0x98, 0x9F, 0x43, 0xE7,\n\t0x99, 0x82, 0x43, 0xE7, 0x99, 0xA9, 0x43, 0xE7,\n\t0x99, 0xB6, 0x43, 0xE7, 0x99, 0xBD, 0x43, 0xE7,\n\t0x9A, 0xAE, 0x43, 0xE7, 0x9A, 0xBF, 0x43, 0xE7,\n\t0x9B, 0x8A, 0x43, 0xE7, 0x9B, 0x9B, 0x43, 0xE7,\n\t0x9B, 0xA3, 0x43, 0xE7, 0x9B, 0xA7, 0x43, 0xE7,\n\t0x9B, 0xAE, 0x43, 0xE7, 0x9B, 0xB4, 0x43, 0xE7,\n\t// Bytes 1000 - 103f\n\t0x9C, 0x81, 0x43, 0xE7, 0x9C, 0x9E, 0x43, 0xE7,\n\t0x9C, 0x9F, 0x43, 0xE7, 0x9D, 0x80, 0x43, 0xE7,\n\t0x9D, 0x8A, 0x43, 0xE7, 0x9E, 0x8B, 0x43, 0xE7,\n\t0x9E, 0xA7, 0x43, 0xE7, 0x9F, 0x9B, 0x43, 0xE7,\n\t0x9F, 0xA2, 0x43, 0xE7, 0x9F, 0xB3, 0x43, 0xE7,\n\t0xA1, 0x8E, 0x43, 0xE7, 0xA1, 0xAB, 0x43, 0xE7,\n\t0xA2, 0x8C, 0x43, 0xE7, 0xA2, 0x91, 0x43, 0xE7,\n\t0xA3, 0x8A, 0x43, 0xE7, 0xA3, 0x8C, 0x43, 0xE7,\n\t// Bytes 1040 - 107f\n\t0xA3, 0xBB, 0x43, 0xE7, 0xA4, 0xAA, 0x43, 0xE7,\n\t0xA4, 0xBA, 0x43, 0xE7, 0xA4, 0xBC, 0x43, 0xE7,\n\t0xA4, 0xBE, 0x43, 0xE7, 0xA5, 0x88, 0x43, 0xE7,\n\t0xA5, 0x89, 0x43, 0xE7, 0xA5, 0x90, 0x43, 0xE7,\n\t0xA5, 0x96, 0x43, 0xE7, 0xA5, 0x9D, 0x43, 0xE7,\n\t0xA5, 0x9E, 0x43, 0xE7, 0xA5, 0xA5, 0x43, 0xE7,\n\t0xA5, 0xBF, 0x43, 0xE7, 0xA6, 0x81, 0x43, 0xE7,\n\t0xA6, 0x8D, 0x43, 0xE7, 0xA6, 0x8E, 0x43, 0xE7,\n\t// Bytes 1080 - 10bf\n\t0xA6, 0x8F, 0x43, 0xE7, 0xA6, 0xAE, 0x43, 0xE7,\n\t0xA6, 0xB8, 0x43, 0xE7, 0xA6, 0xBE, 0x43, 0xE7,\n\t0xA7, 0x8A, 0x43, 0xE7, 0xA7, 0x98, 0x43, 0xE7,\n\t0xA7, 0xAB, 0x43, 0xE7, 0xA8, 0x9C, 0x43, 0xE7,\n\t0xA9, 0x80, 0x43, 0xE7, 0xA9, 0x8A, 0x43, 0xE7,\n\t0xA9, 0x8F, 0x43, 0xE7, 0xA9, 0xB4, 0x43, 0xE7,\n\t0xA9, 0xBA, 0x43, 0xE7, 0xAA, 0x81, 0x43, 0xE7,\n\t0xAA, 0xB1, 0x43, 0xE7, 0xAB, 0x8B, 0x43, 0xE7,\n\t// Bytes 10c0 - 10ff\n\t0xAB, 0xAE, 0x43, 0xE7, 0xAB, 0xB9, 0x43, 0xE7,\n\t0xAC, 0xA0, 0x43, 0xE7, 0xAE, 0x8F, 0x43, 0xE7,\n\t0xAF, 0x80, 0x43, 0xE7, 0xAF, 0x86, 0x43, 0xE7,\n\t0xAF, 0x89, 0x43, 0xE7, 0xB0, 0xBE, 0x43, 0xE7,\n\t0xB1, 0xA0, 0x43, 0xE7, 0xB1, 0xB3, 0x43, 0xE7,\n\t0xB1, 0xBB, 0x43, 0xE7, 0xB2, 0x92, 0x43, 0xE7,\n\t0xB2, 0xBE, 0x43, 0xE7, 0xB3, 0x92, 0x43, 0xE7,\n\t0xB3, 0x96, 0x43, 0xE7, 0xB3, 0xA3, 0x43, 0xE7,\n\t// Bytes 1100 - 113f\n\t0xB3, 0xA7, 0x43, 0xE7, 0xB3, 0xA8, 0x43, 0xE7,\n\t0xB3, 0xB8, 0x43, 0xE7, 0xB4, 0x80, 0x43, 0xE7,\n\t0xB4, 0x90, 0x43, 0xE7, 0xB4, 0xA2, 0x43, 0xE7,\n\t0xB4, 0xAF, 0x43, 0xE7, 0xB5, 0x82, 0x43, 0xE7,\n\t0xB5, 0x9B, 0x43, 0xE7, 0xB5, 0xA3, 0x43, 0xE7,\n\t0xB6, 0xA0, 0x43, 0xE7, 0xB6, 0xBE, 0x43, 0xE7,\n\t0xB7, 0x87, 0x43, 0xE7, 0xB7, 0xB4, 0x43, 0xE7,\n\t0xB8, 0x82, 0x43, 0xE7, 0xB8, 0x89, 0x43, 0xE7,\n\t// Bytes 1140 - 117f\n\t0xB8, 0xB7, 0x43, 0xE7, 0xB9, 0x81, 0x43, 0xE7,\n\t0xB9, 0x85, 0x43, 0xE7, 0xBC, 0xB6, 0x43, 0xE7,\n\t0xBC, 0xBE, 0x43, 0xE7, 0xBD, 0x91, 0x43, 0xE7,\n\t0xBD, 0xB2, 0x43, 0xE7, 0xBD, 0xB9, 0x43, 0xE7,\n\t0xBD, 0xBA, 0x43, 0xE7, 0xBE, 0x85, 0x43, 0xE7,\n\t0xBE, 0x8A, 0x43, 0xE7, 0xBE, 0x95, 0x43, 0xE7,\n\t0xBE, 0x9A, 0x43, 0xE7, 0xBE, 0xBD, 0x43, 0xE7,\n\t0xBF, 0xBA, 0x43, 0xE8, 0x80, 0x81, 0x43, 0xE8,\n\t// Bytes 1180 - 11bf\n\t0x80, 0x85, 0x43, 0xE8, 0x80, 0x8C, 0x43, 0xE8,\n\t0x80, 0x92, 0x43, 0xE8, 0x80, 0xB3, 0x43, 0xE8,\n\t0x81, 0x86, 0x43, 0xE8, 0x81, 0xA0, 0x43, 0xE8,\n\t0x81, 0xAF, 0x43, 0xE8, 0x81, 0xB0, 0x43, 0xE8,\n\t0x81, 0xBE, 0x43, 0xE8, 0x81, 0xBF, 0x43, 0xE8,\n\t0x82, 0x89, 0x43, 0xE8, 0x82, 0x8B, 0x43, 0xE8,\n\t0x82, 0xAD, 0x43, 0xE8, 0x82, 0xB2, 0x43, 0xE8,\n\t0x84, 0x83, 0x43, 0xE8, 0x84, 0xBE, 0x43, 0xE8,\n\t// Bytes 11c0 - 11ff\n\t0x87, 0x98, 0x43, 0xE8, 0x87, 0xA3, 0x43, 0xE8,\n\t0x87, 0xA8, 0x43, 0xE8, 0x87, 0xAA, 0x43, 0xE8,\n\t0x87, 0xAD, 0x43, 0xE8, 0x87, 0xB3, 0x43, 0xE8,\n\t0x87, 0xBC, 0x43, 0xE8, 0x88, 0x81, 0x43, 0xE8,\n\t0x88, 0x84, 0x43, 0xE8, 0x88, 0x8C, 0x43, 0xE8,\n\t0x88, 0x98, 0x43, 0xE8, 0x88, 0x9B, 0x43, 0xE8,\n\t0x88, 0x9F, 0x43, 0xE8, 0x89, 0xAE, 0x43, 0xE8,\n\t0x89, 0xAF, 0x43, 0xE8, 0x89, 0xB2, 0x43, 0xE8,\n\t// Bytes 1200 - 123f\n\t0x89, 0xB8, 0x43, 0xE8, 0x89, 0xB9, 0x43, 0xE8,\n\t0x8A, 0x8B, 0x43, 0xE8, 0x8A, 0x91, 0x43, 0xE8,\n\t0x8A, 0x9D, 0x43, 0xE8, 0x8A, 0xB1, 0x43, 0xE8,\n\t0x8A, 0xB3, 0x43, 0xE8, 0x8A, 0xBD, 0x43, 0xE8,\n\t0x8B, 0xA5, 0x43, 0xE8, 0x8B, 0xA6, 0x43, 0xE8,\n\t0x8C, 0x9D, 0x43, 0xE8, 0x8C, 0xA3, 0x43, 0xE8,\n\t0x8C, 0xB6, 0x43, 0xE8, 0x8D, 0x92, 0x43, 0xE8,\n\t0x8D, 0x93, 0x43, 0xE8, 0x8D, 0xA3, 0x43, 0xE8,\n\t// Bytes 1240 - 127f\n\t0x8E, 0xAD, 0x43, 0xE8, 0x8E, 0xBD, 0x43, 0xE8,\n\t0x8F, 0x89, 0x43, 0xE8, 0x8F, 0x8A, 0x43, 0xE8,\n\t0x8F, 0x8C, 0x43, 0xE8, 0x8F, 0x9C, 0x43, 0xE8,\n\t0x8F, 0xA7, 0x43, 0xE8, 0x8F, 0xAF, 0x43, 0xE8,\n\t0x8F, 0xB1, 0x43, 0xE8, 0x90, 0xBD, 0x43, 0xE8,\n\t0x91, 0x89, 0x43, 0xE8, 0x91, 0x97, 0x43, 0xE8,\n\t0x93, 0xAE, 0x43, 0xE8, 0x93, 0xB1, 0x43, 0xE8,\n\t0x93, 0xB3, 0x43, 0xE8, 0x93, 0xBC, 0x43, 0xE8,\n\t// Bytes 1280 - 12bf\n\t0x94, 0x96, 0x43, 0xE8, 0x95, 0xA4, 0x43, 0xE8,\n\t0x97, 0x8D, 0x43, 0xE8, 0x97, 0xBA, 0x43, 0xE8,\n\t0x98, 0x86, 0x43, 0xE8, 0x98, 0x92, 0x43, 0xE8,\n\t0x98, 0xAD, 0x43, 0xE8, 0x98, 0xBF, 0x43, 0xE8,\n\t0x99, 0x8D, 0x43, 0xE8, 0x99, 0x90, 0x43, 0xE8,\n\t0x99, 0x9C, 0x43, 0xE8, 0x99, 0xA7, 0x43, 0xE8,\n\t0x99, 0xA9, 0x43, 0xE8, 0x99, 0xAB, 0x43, 0xE8,\n\t0x9A, 0x88, 0x43, 0xE8, 0x9A, 0xA9, 0x43, 0xE8,\n\t// Bytes 12c0 - 12ff\n\t0x9B, 0xA2, 0x43, 0xE8, 0x9C, 0x8E, 0x43, 0xE8,\n\t0x9C, 0xA8, 0x43, 0xE8, 0x9D, 0xAB, 0x43, 0xE8,\n\t0x9D, 0xB9, 0x43, 0xE8, 0x9E, 0x86, 0x43, 0xE8,\n\t0x9E, 0xBA, 0x43, 0xE8, 0x9F, 0xA1, 0x43, 0xE8,\n\t0xA0, 0x81, 0x43, 0xE8, 0xA0, 0x9F, 0x43, 0xE8,\n\t0xA1, 0x80, 0x43, 0xE8, 0xA1, 0x8C, 0x43, 0xE8,\n\t0xA1, 0xA0, 0x43, 0xE8, 0xA1, 0xA3, 0x43, 0xE8,\n\t0xA3, 0x82, 0x43, 0xE8, 0xA3, 0x8F, 0x43, 0xE8,\n\t// Bytes 1300 - 133f\n\t0xA3, 0x97, 0x43, 0xE8, 0xA3, 0x9E, 0x43, 0xE8,\n\t0xA3, 0xA1, 0x43, 0xE8, 0xA3, 0xB8, 0x43, 0xE8,\n\t0xA3, 0xBA, 0x43, 0xE8, 0xA4, 0x90, 0x43, 0xE8,\n\t0xA5, 0x81, 0x43, 0xE8, 0xA5, 0xA4, 0x43, 0xE8,\n\t0xA5, 0xBE, 0x43, 0xE8, 0xA6, 0x86, 0x43, 0xE8,\n\t0xA6, 0x8B, 0x43, 0xE8, 0xA6, 0x96, 0x43, 0xE8,\n\t0xA7, 0x92, 0x43, 0xE8, 0xA7, 0xA3, 0x43, 0xE8,\n\t0xA8, 0x80, 0x43, 0xE8, 0xAA, 0xA0, 0x43, 0xE8,\n\t// Bytes 1340 - 137f\n\t0xAA, 0xAA, 0x43, 0xE8, 0xAA, 0xBF, 0x43, 0xE8,\n\t0xAB, 0x8B, 0x43, 0xE8, 0xAB, 0x92, 0x43, 0xE8,\n\t0xAB, 0x96, 0x43, 0xE8, 0xAB, 0xAD, 0x43, 0xE8,\n\t0xAB, 0xB8, 0x43, 0xE8, 0xAB, 0xBE, 0x43, 0xE8,\n\t0xAC, 0x81, 0x43, 0xE8, 0xAC, 0xB9, 0x43, 0xE8,\n\t0xAD, 0x98, 0x43, 0xE8, 0xAE, 0x80, 0x43, 0xE8,\n\t0xAE, 0x8A, 0x43, 0xE8, 0xB0, 0xB7, 0x43, 0xE8,\n\t0xB1, 0x86, 0x43, 0xE8, 0xB1, 0x88, 0x43, 0xE8,\n\t// Bytes 1380 - 13bf\n\t0xB1, 0x95, 0x43, 0xE8, 0xB1, 0xB8, 0x43, 0xE8,\n\t0xB2, 0x9D, 0x43, 0xE8, 0xB2, 0xA1, 0x43, 0xE8,\n\t0xB2, 0xA9, 0x43, 0xE8, 0xB2, 0xAB, 0x43, 0xE8,\n\t0xB3, 0x81, 0x43, 0xE8, 0xB3, 0x82, 0x43, 0xE8,\n\t0xB3, 0x87, 0x43, 0xE8, 0xB3, 0x88, 0x43, 0xE8,\n\t0xB3, 0x93, 0x43, 0xE8, 0xB4, 0x88, 0x43, 0xE8,\n\t0xB4, 0x9B, 0x43, 0xE8, 0xB5, 0xA4, 0x43, 0xE8,\n\t0xB5, 0xB0, 0x43, 0xE8, 0xB5, 0xB7, 0x43, 0xE8,\n\t// Bytes 13c0 - 13ff\n\t0xB6, 0xB3, 0x43, 0xE8, 0xB6, 0xBC, 0x43, 0xE8,\n\t0xB7, 0x8B, 0x43, 0xE8, 0xB7, 0xAF, 0x43, 0xE8,\n\t0xB7, 0xB0, 0x43, 0xE8, 0xBA, 0xAB, 0x43, 0xE8,\n\t0xBB, 0x8A, 0x43, 0xE8, 0xBB, 0x94, 0x43, 0xE8,\n\t0xBC, 0xA6, 0x43, 0xE8, 0xBC, 0xAA, 0x43, 0xE8,\n\t0xBC, 0xB8, 0x43, 0xE8, 0xBC, 0xBB, 0x43, 0xE8,\n\t0xBD, 0xA2, 0x43, 0xE8, 0xBE, 0x9B, 0x43, 0xE8,\n\t0xBE, 0x9E, 0x43, 0xE8, 0xBE, 0xB0, 0x43, 0xE8,\n\t// Bytes 1400 - 143f\n\t0xBE, 0xB5, 0x43, 0xE8, 0xBE, 0xB6, 0x43, 0xE9,\n\t0x80, 0xA3, 0x43, 0xE9, 0x80, 0xB8, 0x43, 0xE9,\n\t0x81, 0x8A, 0x43, 0xE9, 0x81, 0xA9, 0x43, 0xE9,\n\t0x81, 0xB2, 0x43, 0xE9, 0x81, 0xBC, 0x43, 0xE9,\n\t0x82, 0x8F, 0x43, 0xE9, 0x82, 0x91, 0x43, 0xE9,\n\t0x82, 0x94, 0x43, 0xE9, 0x83, 0x8E, 0x43, 0xE9,\n\t0x83, 0x9E, 0x43, 0xE9, 0x83, 0xB1, 0x43, 0xE9,\n\t0x83, 0xBD, 0x43, 0xE9, 0x84, 0x91, 0x43, 0xE9,\n\t// Bytes 1440 - 147f\n\t0x84, 0x9B, 0x43, 0xE9, 0x85, 0x89, 0x43, 0xE9,\n\t0x85, 0x8D, 0x43, 0xE9, 0x85, 0xAA, 0x43, 0xE9,\n\t0x86, 0x99, 0x43, 0xE9, 0x86, 0xB4, 0x43, 0xE9,\n\t0x87, 0x86, 0x43, 0xE9, 0x87, 0x8C, 0x43, 0xE9,\n\t0x87, 0x8F, 0x43, 0xE9, 0x87, 0x91, 0x43, 0xE9,\n\t0x88, 0xB4, 0x43, 0xE9, 0x88, 0xB8, 0x43, 0xE9,\n\t0x89, 0xB6, 0x43, 0xE9, 0x89, 0xBC, 0x43, 0xE9,\n\t0x8B, 0x97, 0x43, 0xE9, 0x8B, 0x98, 0x43, 0xE9,\n\t// Bytes 1480 - 14bf\n\t0x8C, 0x84, 0x43, 0xE9, 0x8D, 0x8A, 0x43, 0xE9,\n\t0x8F, 0xB9, 0x43, 0xE9, 0x90, 0x95, 0x43, 0xE9,\n\t0x95, 0xB7, 0x43, 0xE9, 0x96, 0x80, 0x43, 0xE9,\n\t0x96, 0x8B, 0x43, 0xE9, 0x96, 0xAD, 0x43, 0xE9,\n\t0x96, 0xB7, 0x43, 0xE9, 0x98, 0x9C, 0x43, 0xE9,\n\t0x98, 0xAE, 0x43, 0xE9, 0x99, 0x8B, 0x43, 0xE9,\n\t0x99, 0x8D, 0x43, 0xE9, 0x99, 0xB5, 0x43, 0xE9,\n\t0x99, 0xB8, 0x43, 0xE9, 0x99, 0xBC, 0x43, 0xE9,\n\t// Bytes 14c0 - 14ff\n\t0x9A, 0x86, 0x43, 0xE9, 0x9A, 0xA3, 0x43, 0xE9,\n\t0x9A, 0xB6, 0x43, 0xE9, 0x9A, 0xB7, 0x43, 0xE9,\n\t0x9A, 0xB8, 0x43, 0xE9, 0x9A, 0xB9, 0x43, 0xE9,\n\t0x9B, 0x83, 0x43, 0xE9, 0x9B, 0xA2, 0x43, 0xE9,\n\t0x9B, 0xA3, 0x43, 0xE9, 0x9B, 0xA8, 0x43, 0xE9,\n\t0x9B, 0xB6, 0x43, 0xE9, 0x9B, 0xB7, 0x43, 0xE9,\n\t0x9C, 0xA3, 0x43, 0xE9, 0x9C, 0xB2, 0x43, 0xE9,\n\t0x9D, 0x88, 0x43, 0xE9, 0x9D, 0x91, 0x43, 0xE9,\n\t// Bytes 1500 - 153f\n\t0x9D, 0x96, 0x43, 0xE9, 0x9D, 0x9E, 0x43, 0xE9,\n\t0x9D, 0xA2, 0x43, 0xE9, 0x9D, 0xA9, 0x43, 0xE9,\n\t0x9F, 0x8B, 0x43, 0xE9, 0x9F, 0x9B, 0x43, 0xE9,\n\t0x9F, 0xA0, 0x43, 0xE9, 0x9F, 0xAD, 0x43, 0xE9,\n\t0x9F, 0xB3, 0x43, 0xE9, 0x9F, 0xBF, 0x43, 0xE9,\n\t0xA0, 0x81, 0x43, 0xE9, 0xA0, 0x85, 0x43, 0xE9,\n\t0xA0, 0x8B, 0x43, 0xE9, 0xA0, 0x98, 0x43, 0xE9,\n\t0xA0, 0xA9, 0x43, 0xE9, 0xA0, 0xBB, 0x43, 0xE9,\n\t// Bytes 1540 - 157f\n\t0xA1, 0x9E, 0x43, 0xE9, 0xA2, 0xA8, 0x43, 0xE9,\n\t0xA3, 0x9B, 0x43, 0xE9, 0xA3, 0x9F, 0x43, 0xE9,\n\t0xA3, 0xA2, 0x43, 0xE9, 0xA3, 0xAF, 0x43, 0xE9,\n\t0xA3, 0xBC, 0x43, 0xE9, 0xA4, 0xA8, 0x43, 0xE9,\n\t0xA4, 0xA9, 0x43, 0xE9, 0xA6, 0x96, 0x43, 0xE9,\n\t0xA6, 0x99, 0x43, 0xE9, 0xA6, 0xA7, 0x43, 0xE9,\n\t0xA6, 0xAC, 0x43, 0xE9, 0xA7, 0x82, 0x43, 0xE9,\n\t0xA7, 0xB1, 0x43, 0xE9, 0xA7, 0xBE, 0x43, 0xE9,\n\t// Bytes 1580 - 15bf\n\t0xA9, 0xAA, 0x43, 0xE9, 0xAA, 0xA8, 0x43, 0xE9,\n\t0xAB, 0x98, 0x43, 0xE9, 0xAB, 0x9F, 0x43, 0xE9,\n\t0xAC, 0x92, 0x43, 0xE9, 0xAC, 0xA5, 0x43, 0xE9,\n\t0xAC, 0xAF, 0x43, 0xE9, 0xAC, 0xB2, 0x43, 0xE9,\n\t0xAC, 0xBC, 0x43, 0xE9, 0xAD, 0x9A, 0x43, 0xE9,\n\t0xAD, 0xAF, 0x43, 0xE9, 0xB1, 0x80, 0x43, 0xE9,\n\t0xB1, 0x97, 0x43, 0xE9, 0xB3, 0xA5, 0x43, 0xE9,\n\t0xB3, 0xBD, 0x43, 0xE9, 0xB5, 0xA7, 0x43, 0xE9,\n\t// Bytes 15c0 - 15ff\n\t0xB6, 0xB4, 0x43, 0xE9, 0xB7, 0xBA, 0x43, 0xE9,\n\t0xB8, 0x9E, 0x43, 0xE9, 0xB9, 0xB5, 0x43, 0xE9,\n\t0xB9, 0xBF, 0x43, 0xE9, 0xBA, 0x97, 0x43, 0xE9,\n\t0xBA, 0x9F, 0x43, 0xE9, 0xBA, 0xA5, 0x43, 0xE9,\n\t0xBA, 0xBB, 0x43, 0xE9, 0xBB, 0x83, 0x43, 0xE9,\n\t0xBB, 0x8D, 0x43, 0xE9, 0xBB, 0x8E, 0x43, 0xE9,\n\t0xBB, 0x91, 0x43, 0xE9, 0xBB, 0xB9, 0x43, 0xE9,\n\t0xBB, 0xBD, 0x43, 0xE9, 0xBB, 0xBE, 0x43, 0xE9,\n\t// Bytes 1600 - 163f\n\t0xBC, 0x85, 0x43, 0xE9, 0xBC, 0x8E, 0x43, 0xE9,\n\t0xBC, 0x8F, 0x43, 0xE9, 0xBC, 0x93, 0x43, 0xE9,\n\t0xBC, 0x96, 0x43, 0xE9, 0xBC, 0xA0, 0x43, 0xE9,\n\t0xBC, 0xBB, 0x43, 0xE9, 0xBD, 0x83, 0x43, 0xE9,\n\t0xBD, 0x8A, 0x43, 0xE9, 0xBD, 0x92, 0x43, 0xE9,\n\t0xBE, 0x8D, 0x43, 0xE9, 0xBE, 0x8E, 0x43, 0xE9,\n\t0xBE, 0x9C, 0x43, 0xE9, 0xBE, 0x9F, 0x43, 0xE9,\n\t0xBE, 0xA0, 0x43, 0xEA, 0x9C, 0xA7, 0x43, 0xEA,\n\t// Bytes 1640 - 167f\n\t0x9D, 0xAF, 0x43, 0xEA, 0xAC, 0xB7, 0x43, 0xEA,\n\t0xAD, 0x92, 0x44, 0xF0, 0xA0, 0x84, 0xA2, 0x44,\n\t0xF0, 0xA0, 0x94, 0x9C, 0x44, 0xF0, 0xA0, 0x94,\n\t0xA5, 0x44, 0xF0, 0xA0, 0x95, 0x8B, 0x44, 0xF0,\n\t0xA0, 0x98, 0xBA, 0x44, 0xF0, 0xA0, 0xA0, 0x84,\n\t0x44, 0xF0, 0xA0, 0xA3, 0x9E, 0x44, 0xF0, 0xA0,\n\t0xA8, 0xAC, 0x44, 0xF0, 0xA0, 0xAD, 0xA3, 0x44,\n\t0xF0, 0xA1, 0x93, 0xA4, 0x44, 0xF0, 0xA1, 0x9A,\n\t// Bytes 1680 - 16bf\n\t0xA8, 0x44, 0xF0, 0xA1, 0x9B, 0xAA, 0x44, 0xF0,\n\t0xA1, 0xA7, 0x88, 0x44, 0xF0, 0xA1, 0xAC, 0x98,\n\t0x44, 0xF0, 0xA1, 0xB4, 0x8B, 0x44, 0xF0, 0xA1,\n\t0xB7, 0xA4, 0x44, 0xF0, 0xA1, 0xB7, 0xA6, 0x44,\n\t0xF0, 0xA2, 0x86, 0x83, 0x44, 0xF0, 0xA2, 0x86,\n\t0x9F, 0x44, 0xF0, 0xA2, 0x8C, 0xB1, 0x44, 0xF0,\n\t0xA2, 0x9B, 0x94, 0x44, 0xF0, 0xA2, 0xA1, 0x84,\n\t0x44, 0xF0, 0xA2, 0xA1, 0x8A, 0x44, 0xF0, 0xA2,\n\t// Bytes 16c0 - 16ff\n\t0xAC, 0x8C, 0x44, 0xF0, 0xA2, 0xAF, 0xB1, 0x44,\n\t0xF0, 0xA3, 0x80, 0x8A, 0x44, 0xF0, 0xA3, 0x8A,\n\t0xB8, 0x44, 0xF0, 0xA3, 0x8D, 0x9F, 0x44, 0xF0,\n\t0xA3, 0x8E, 0x93, 0x44, 0xF0, 0xA3, 0x8E, 0x9C,\n\t0x44, 0xF0, 0xA3, 0x8F, 0x83, 0x44, 0xF0, 0xA3,\n\t0x8F, 0x95, 0x44, 0xF0, 0xA3, 0x91, 0xAD, 0x44,\n\t0xF0, 0xA3, 0x9A, 0xA3, 0x44, 0xF0, 0xA3, 0xA2,\n\t0xA7, 0x44, 0xF0, 0xA3, 0xAA, 0x8D, 0x44, 0xF0,\n\t// Bytes 1700 - 173f\n\t0xA3, 0xAB, 0xBA, 0x44, 0xF0, 0xA3, 0xB2, 0xBC,\n\t0x44, 0xF0, 0xA3, 0xB4, 0x9E, 0x44, 0xF0, 0xA3,\n\t0xBB, 0x91, 0x44, 0xF0, 0xA3, 0xBD, 0x9E, 0x44,\n\t0xF0, 0xA3, 0xBE, 0x8E, 0x44, 0xF0, 0xA4, 0x89,\n\t0xA3, 0x44, 0xF0, 0xA4, 0x8B, 0xAE, 0x44, 0xF0,\n\t0xA4, 0x8E, 0xAB, 0x44, 0xF0, 0xA4, 0x98, 0x88,\n\t0x44, 0xF0, 0xA4, 0x9C, 0xB5, 0x44, 0xF0, 0xA4,\n\t0xA0, 0x94, 0x44, 0xF0, 0xA4, 0xB0, 0xB6, 0x44,\n\t// Bytes 1740 - 177f\n\t0xF0, 0xA4, 0xB2, 0x92, 0x44, 0xF0, 0xA4, 0xBE,\n\t0xA1, 0x44, 0xF0, 0xA4, 0xBE, 0xB8, 0x44, 0xF0,\n\t0xA5, 0x81, 0x84, 0x44, 0xF0, 0xA5, 0x83, 0xB2,\n\t0x44, 0xF0, 0xA5, 0x83, 0xB3, 0x44, 0xF0, 0xA5,\n\t0x84, 0x99, 0x44, 0xF0, 0xA5, 0x84, 0xB3, 0x44,\n\t0xF0, 0xA5, 0x89, 0x89, 0x44, 0xF0, 0xA5, 0x90,\n\t0x9D, 0x44, 0xF0, 0xA5, 0x98, 0xA6, 0x44, 0xF0,\n\t0xA5, 0x9A, 0x9A, 0x44, 0xF0, 0xA5, 0x9B, 0x85,\n\t// Bytes 1780 - 17bf\n\t0x44, 0xF0, 0xA5, 0xA5, 0xBC, 0x44, 0xF0, 0xA5,\n\t0xAA, 0xA7, 0x44, 0xF0, 0xA5, 0xAE, 0xAB, 0x44,\n\t0xF0, 0xA5, 0xB2, 0x80, 0x44, 0xF0, 0xA5, 0xB3,\n\t0x90, 0x44, 0xF0, 0xA5, 0xBE, 0x86, 0x44, 0xF0,\n\t0xA6, 0x87, 0x9A, 0x44, 0xF0, 0xA6, 0x88, 0xA8,\n\t0x44, 0xF0, 0xA6, 0x89, 0x87, 0x44, 0xF0, 0xA6,\n\t0x8B, 0x99, 0x44, 0xF0, 0xA6, 0x8C, 0xBE, 0x44,\n\t0xF0, 0xA6, 0x93, 0x9A, 0x44, 0xF0, 0xA6, 0x94,\n\t// Bytes 17c0 - 17ff\n\t0xA3, 0x44, 0xF0, 0xA6, 0x96, 0xA8, 0x44, 0xF0,\n\t0xA6, 0x9E, 0xA7, 0x44, 0xF0, 0xA6, 0x9E, 0xB5,\n\t0x44, 0xF0, 0xA6, 0xAC, 0xBC, 0x44, 0xF0, 0xA6,\n\t0xB0, 0xB6, 0x44, 0xF0, 0xA6, 0xB3, 0x95, 0x44,\n\t0xF0, 0xA6, 0xB5, 0xAB, 0x44, 0xF0, 0xA6, 0xBC,\n\t0xAC, 0x44, 0xF0, 0xA6, 0xBE, 0xB1, 0x44, 0xF0,\n\t0xA7, 0x83, 0x92, 0x44, 0xF0, 0xA7, 0x8F, 0x8A,\n\t0x44, 0xF0, 0xA7, 0x99, 0xA7, 0x44, 0xF0, 0xA7,\n\t// Bytes 1800 - 183f\n\t0xA2, 0xAE, 0x44, 0xF0, 0xA7, 0xA5, 0xA6, 0x44,\n\t0xF0, 0xA7, 0xB2, 0xA8, 0x44, 0xF0, 0xA7, 0xBB,\n\t0x93, 0x44, 0xF0, 0xA7, 0xBC, 0xAF, 0x44, 0xF0,\n\t0xA8, 0x97, 0x92, 0x44, 0xF0, 0xA8, 0x97, 0xAD,\n\t0x44, 0xF0, 0xA8, 0x9C, 0xAE, 0x44, 0xF0, 0xA8,\n\t0xAF, 0xBA, 0x44, 0xF0, 0xA8, 0xB5, 0xB7, 0x44,\n\t0xF0, 0xA9, 0x85, 0x85, 0x44, 0xF0, 0xA9, 0x87,\n\t0x9F, 0x44, 0xF0, 0xA9, 0x88, 0x9A, 0x44, 0xF0,\n\t// Bytes 1840 - 187f\n\t0xA9, 0x90, 0x8A, 0x44, 0xF0, 0xA9, 0x92, 0x96,\n\t0x44, 0xF0, 0xA9, 0x96, 0xB6, 0x44, 0xF0, 0xA9,\n\t0xAC, 0xB0, 0x44, 0xF0, 0xAA, 0x83, 0x8E, 0x44,\n\t0xF0, 0xAA, 0x84, 0x85, 0x44, 0xF0, 0xAA, 0x88,\n\t0x8E, 0x44, 0xF0, 0xAA, 0x8A, 0x91, 0x44, 0xF0,\n\t0xAA, 0x8E, 0x92, 0x44, 0xF0, 0xAA, 0x98, 0x80,\n\t0x42, 0x21, 0x21, 0x42, 0x21, 0x3F, 0x42, 0x2E,\n\t0x2E, 0x42, 0x30, 0x2C, 0x42, 0x30, 0x2E, 0x42,\n\t// Bytes 1880 - 18bf\n\t0x31, 0x2C, 0x42, 0x31, 0x2E, 0x42, 0x31, 0x30,\n\t0x42, 0x31, 0x31, 0x42, 0x31, 0x32, 0x42, 0x31,\n\t0x33, 0x42, 0x31, 0x34, 0x42, 0x31, 0x35, 0x42,\n\t0x31, 0x36, 0x42, 0x31, 0x37, 0x42, 0x31, 0x38,\n\t0x42, 0x31, 0x39, 0x42, 0x32, 0x2C, 0x42, 0x32,\n\t0x2E, 0x42, 0x32, 0x30, 0x42, 0x32, 0x31, 0x42,\n\t0x32, 0x32, 0x42, 0x32, 0x33, 0x42, 0x32, 0x34,\n\t0x42, 0x32, 0x35, 0x42, 0x32, 0x36, 0x42, 0x32,\n\t// Bytes 18c0 - 18ff\n\t0x37, 0x42, 0x32, 0x38, 0x42, 0x32, 0x39, 0x42,\n\t0x33, 0x2C, 0x42, 0x33, 0x2E, 0x42, 0x33, 0x30,\n\t0x42, 0x33, 0x31, 0x42, 0x33, 0x32, 0x42, 0x33,\n\t0x33, 0x42, 0x33, 0x34, 0x42, 0x33, 0x35, 0x42,\n\t0x33, 0x36, 0x42, 0x33, 0x37, 0x42, 0x33, 0x38,\n\t0x42, 0x33, 0x39, 0x42, 0x34, 0x2C, 0x42, 0x34,\n\t0x2E, 0x42, 0x34, 0x30, 0x42, 0x34, 0x31, 0x42,\n\t0x34, 0x32, 0x42, 0x34, 0x33, 0x42, 0x34, 0x34,\n\t// Bytes 1900 - 193f\n\t0x42, 0x34, 0x35, 0x42, 0x34, 0x36, 0x42, 0x34,\n\t0x37, 0x42, 0x34, 0x38, 0x42, 0x34, 0x39, 0x42,\n\t0x35, 0x2C, 0x42, 0x35, 0x2E, 0x42, 0x35, 0x30,\n\t0x42, 0x36, 0x2C, 0x42, 0x36, 0x2E, 0x42, 0x37,\n\t0x2C, 0x42, 0x37, 0x2E, 0x42, 0x38, 0x2C, 0x42,\n\t0x38, 0x2E, 0x42, 0x39, 0x2C, 0x42, 0x39, 0x2E,\n\t0x42, 0x3D, 0x3D, 0x42, 0x3F, 0x21, 0x42, 0x3F,\n\t0x3F, 0x42, 0x41, 0x55, 0x42, 0x42, 0x71, 0x42,\n\t// Bytes 1940 - 197f\n\t0x43, 0x44, 0x42, 0x44, 0x4A, 0x42, 0x44, 0x5A,\n\t0x42, 0x44, 0x7A, 0x42, 0x47, 0x42, 0x42, 0x47,\n\t0x79, 0x42, 0x48, 0x50, 0x42, 0x48, 0x56, 0x42,\n\t0x48, 0x67, 0x42, 0x48, 0x7A, 0x42, 0x49, 0x49,\n\t0x42, 0x49, 0x4A, 0x42, 0x49, 0x55, 0x42, 0x49,\n\t0x56, 0x42, 0x49, 0x58, 0x42, 0x4B, 0x42, 0x42,\n\t0x4B, 0x4B, 0x42, 0x4B, 0x4D, 0x42, 0x4C, 0x4A,\n\t0x42, 0x4C, 0x6A, 0x42, 0x4D, 0x42, 0x42, 0x4D,\n\t// Bytes 1980 - 19bf\n\t0x43, 0x42, 0x4D, 0x44, 0x42, 0x4D, 0x52, 0x42,\n\t0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42, 0x4E, 0x4A,\n\t0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F, 0x42, 0x50,\n\t0x48, 0x42, 0x50, 0x52, 0x42, 0x50, 0x61, 0x42,\n\t0x52, 0x73, 0x42, 0x53, 0x44, 0x42, 0x53, 0x4D,\n\t0x42, 0x53, 0x53, 0x42, 0x53, 0x76, 0x42, 0x54,\n\t0x4D, 0x42, 0x56, 0x49, 0x42, 0x57, 0x43, 0x42,\n\t0x57, 0x5A, 0x42, 0x57, 0x62, 0x42, 0x58, 0x49,\n\t// Bytes 19c0 - 19ff\n\t0x42, 0x63, 0x63, 0x42, 0x63, 0x64, 0x42, 0x63,\n\t0x6D, 0x42, 0x64, 0x42, 0x42, 0x64, 0x61, 0x42,\n\t0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42, 0x64, 0x7A,\n\t0x42, 0x65, 0x56, 0x42, 0x66, 0x66, 0x42, 0x66,\n\t0x69, 0x42, 0x66, 0x6C, 0x42, 0x66, 0x6D, 0x42,\n\t0x68, 0x61, 0x42, 0x69, 0x69, 0x42, 0x69, 0x6A,\n\t0x42, 0x69, 0x6E, 0x42, 0x69, 0x76, 0x42, 0x69,\n\t0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B, 0x56, 0x42,\n\t// Bytes 1a00 - 1a3f\n\t0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42, 0x6B, 0x6C,\n\t0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74, 0x42, 0x6C,\n\t0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C, 0x6E, 0x42,\n\t0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42, 0x6D, 0x33,\n\t0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56, 0x42, 0x6D,\n\t0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D, 0x67, 0x42,\n\t0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42, 0x6D, 0x73,\n\t0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46, 0x42, 0x6E,\n\t// Bytes 1a40 - 1a7f\n\t0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E, 0x6A, 0x42,\n\t0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42, 0x6F, 0x56,\n\t0x42, 0x70, 0x41, 0x42, 0x70, 0x46, 0x42, 0x70,\n\t0x56, 0x42, 0x70, 0x57, 0x42, 0x70, 0x63, 0x42,\n\t0x70, 0x73, 0x42, 0x73, 0x72, 0x42, 0x73, 0x74,\n\t0x42, 0x76, 0x69, 0x42, 0x78, 0x69, 0x43, 0x28,\n\t0x31, 0x29, 0x43, 0x28, 0x32, 0x29, 0x43, 0x28,\n\t0x33, 0x29, 0x43, 0x28, 0x34, 0x29, 0x43, 0x28,\n\t// Bytes 1a80 - 1abf\n\t0x35, 0x29, 0x43, 0x28, 0x36, 0x29, 0x43, 0x28,\n\t0x37, 0x29, 0x43, 0x28, 0x38, 0x29, 0x43, 0x28,\n\t0x39, 0x29, 0x43, 0x28, 0x41, 0x29, 0x43, 0x28,\n\t0x42, 0x29, 0x43, 0x28, 0x43, 0x29, 0x43, 0x28,\n\t0x44, 0x29, 0x43, 0x28, 0x45, 0x29, 0x43, 0x28,\n\t0x46, 0x29, 0x43, 0x28, 0x47, 0x29, 0x43, 0x28,\n\t0x48, 0x29, 0x43, 0x28, 0x49, 0x29, 0x43, 0x28,\n\t0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29, 0x43, 0x28,\n\t// Bytes 1ac0 - 1aff\n\t0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29, 0x43, 0x28,\n\t0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29, 0x43, 0x28,\n\t0x50, 0x29, 0x43, 0x28, 0x51, 0x29, 0x43, 0x28,\n\t0x52, 0x29, 0x43, 0x28, 0x53, 0x29, 0x43, 0x28,\n\t0x54, 0x29, 0x43, 0x28, 0x55, 0x29, 0x43, 0x28,\n\t0x56, 0x29, 0x43, 0x28, 0x57, 0x29, 0x43, 0x28,\n\t0x58, 0x29, 0x43, 0x28, 0x59, 0x29, 0x43, 0x28,\n\t0x5A, 0x29, 0x43, 0x28, 0x61, 0x29, 0x43, 0x28,\n\t// Bytes 1b00 - 1b3f\n\t0x62, 0x29, 0x43, 0x28, 0x63, 0x29, 0x43, 0x28,\n\t0x64, 0x29, 0x43, 0x28, 0x65, 0x29, 0x43, 0x28,\n\t0x66, 0x29, 0x43, 0x28, 0x67, 0x29, 0x43, 0x28,\n\t0x68, 0x29, 0x43, 0x28, 0x69, 0x29, 0x43, 0x28,\n\t0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29, 0x43, 0x28,\n\t0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29, 0x43, 0x28,\n\t0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29, 0x43, 0x28,\n\t0x70, 0x29, 0x43, 0x28, 0x71, 0x29, 0x43, 0x28,\n\t// Bytes 1b40 - 1b7f\n\t0x72, 0x29, 0x43, 0x28, 0x73, 0x29, 0x43, 0x28,\n\t0x74, 0x29, 0x43, 0x28, 0x75, 0x29, 0x43, 0x28,\n\t0x76, 0x29, 0x43, 0x28, 0x77, 0x29, 0x43, 0x28,\n\t0x78, 0x29, 0x43, 0x28, 0x79, 0x29, 0x43, 0x28,\n\t0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E, 0x43, 0x31,\n\t0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E, 0x43, 0x31,\n\t0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E, 0x43, 0x31,\n\t0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E, 0x43, 0x31,\n\t// Bytes 1b80 - 1bbf\n\t0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E, 0x43, 0x31,\n\t0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E, 0x43, 0x32,\n\t0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D, 0x43, 0x3D,\n\t0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E, 0x43, 0x46,\n\t0x41, 0x58, 0x43, 0x47, 0x48, 0x7A, 0x43, 0x47,\n\t0x50, 0x61, 0x43, 0x49, 0x49, 0x49, 0x43, 0x4C,\n\t0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7, 0x43, 0x4D,\n\t0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61, 0x43, 0x4D,\n\t// Bytes 1bc0 - 1bff\n\t0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D, 0x43, 0x50,\n\t0x50, 0x56, 0x43, 0x50, 0x54, 0x45, 0x43, 0x54,\n\t0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A, 0x43, 0x56,\n\t0x49, 0x49, 0x43, 0x58, 0x49, 0x49, 0x43, 0x61,\n\t0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73, 0x43, 0x61,\n\t0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72, 0x43, 0x63,\n\t0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75, 0x43, 0x63,\n\t0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32, 0x43, 0x63,\n\t// Bytes 1c00 - 1c3f\n\t0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32, 0x43, 0x64,\n\t0x6D, 0x33, 0x43, 0x65, 0x72, 0x67, 0x43, 0x66,\n\t0x66, 0x69, 0x43, 0x66, 0x66, 0x6C, 0x43, 0x67,\n\t0x61, 0x6C, 0x43, 0x68, 0x50, 0x61, 0x43, 0x69,\n\t0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A, 0x43, 0x6B,\n\t0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32, 0x43, 0x6B,\n\t0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9, 0x43, 0x6C,\n\t0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7, 0x43, 0x6D,\n\t// Bytes 1c40 - 1c7f\n\t0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32, 0x43, 0x6D,\n\t0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C, 0x43, 0x72,\n\t0x61, 0x64, 0x43, 0x76, 0x69, 0x69, 0x43, 0x78,\n\t0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43, 0x43, 0xC2,\n\t0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E, 0x43, 0xCE,\n\t0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46, 0x43, 0xCE,\n\t0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57, 0x43, 0xCE,\n\t0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C, 0x43, 0xCE,\n\t// Bytes 1c80 - 1cbf\n\t0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73, 0x44, 0x28,\n\t0x31, 0x30, 0x29, 0x44, 0x28, 0x31, 0x31, 0x29,\n\t0x44, 0x28, 0x31, 0x32, 0x29, 0x44, 0x28, 0x31,\n\t0x33, 0x29, 0x44, 0x28, 0x31, 0x34, 0x29, 0x44,\n\t0x28, 0x31, 0x35, 0x29, 0x44, 0x28, 0x31, 0x36,\n\t0x29, 0x44, 0x28, 0x31, 0x37, 0x29, 0x44, 0x28,\n\t0x31, 0x38, 0x29, 0x44, 0x28, 0x31, 0x39, 0x29,\n\t0x44, 0x28, 0x32, 0x30, 0x29, 0x44, 0x30, 0xE7,\n\t// Bytes 1cc0 - 1cff\n\t0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81, 0x84, 0x44,\n\t0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31, 0xE6, 0x9C,\n\t0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9, 0x44, 0x32,\n\t0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6, 0x9C, 0x88,\n\t0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44, 0x33, 0xE6,\n\t0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C, 0x88, 0x44,\n\t0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34, 0xE6, 0x97,\n\t0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88, 0x44, 0x34,\n\t// Bytes 1d00 - 1d3f\n\t0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6, 0x97, 0xA5,\n\t0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44, 0x35, 0xE7,\n\t0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97, 0xA5, 0x44,\n\t0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36, 0xE7, 0x82,\n\t0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5, 0x44, 0x37,\n\t0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7, 0x82, 0xB9,\n\t0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44, 0x38, 0xE6,\n\t0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82, 0xB9, 0x44,\n\t// Bytes 1d40 - 1d7f\n\t0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39, 0xE6, 0x9C,\n\t0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9, 0x44, 0x56,\n\t0x49, 0x49, 0x49, 0x44, 0x61, 0x2E, 0x6D, 0x2E,\n\t0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44, 0x70, 0x2E,\n\t0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69, 0x69, 0x44,\n\t0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5, 0xB4, 0xD5,\n\t0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB, 0x44, 0xD5,\n\t0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4, 0xD5, 0xB6,\n\t// Bytes 1d80 - 1dbf\n\t0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44, 0xD7, 0x90,\n\t0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9, 0xB4, 0x44,\n\t0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8, 0xA8, 0xD8,\n\t0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE, 0x44, 0xD8,\n\t0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8, 0xD8, 0xB2,\n\t0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44, 0xD8, 0xA8,\n\t0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9, 0x87, 0x44,\n\t0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8, 0xA8, 0xD9,\n\t// Bytes 1dc0 - 1dff\n\t0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44, 0xD8, 0xAA,\n\t0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9, 0x85, 0x44,\n\t0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8, 0xAA, 0xD9,\n\t0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89, 0x44, 0xD8,\n\t0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB, 0xD8, 0xAC,\n\t0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44, 0xD8, 0xAB,\n\t// Bytes 1e00 - 1e3f\n\t0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9, 0x85, 0x44,\n\t0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8, 0xAB, 0xD9,\n\t0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89, 0x44, 0xD8,\n\t0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44, 0xD8, 0xAC,\n\t0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9, 0x8A, 0x44,\n\t0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8, 0xAD, 0xD9,\n\t0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89, 0x44, 0xD8,\n\t// Bytes 1e40 - 1e7f\n\t0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE, 0xD8, 0xAC,\n\t0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44, 0xD8, 0xAE,\n\t0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9, 0x89, 0x44,\n\t0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8, 0xB3, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD, 0x44, 0xD8,\n\t0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3, 0xD8, 0xB1,\n\t0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44, 0xD8, 0xB3,\n\t0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9, 0x89, 0x44,\n\t// Bytes 1e80 - 1ebf\n\t0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8, 0xB4, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD, 0x44, 0xD8,\n\t0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4, 0xD8, 0xB1,\n\t0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44, 0xD8, 0xB4,\n\t0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9, 0x89, 0x44,\n\t0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8, 0xB5, 0xD8,\n\t0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE, 0x44, 0xD8,\n\t0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5, 0xD9, 0x85,\n\t// Bytes 1ec0 - 1eff\n\t0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44, 0xD8, 0xB5,\n\t0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8, 0xAC, 0x44,\n\t0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8, 0xB6, 0xD8,\n\t0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1, 0x44, 0xD8,\n\t0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6, 0xD9, 0x89,\n\t0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44, 0xD8, 0xB7,\n\t0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8, 0xB7, 0xD9,\n\t// Bytes 1f00 - 1f3f\n\t0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85, 0x44, 0xD8,\n\t0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9, 0xD9, 0x85,\n\t0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44, 0xD8, 0xB9,\n\t0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8, 0xAC, 0x44,\n\t0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8, 0xBA, 0xD9,\n\t0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A, 0x44, 0xD9,\n\t0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81, 0xD8, 0xAD,\n\t0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44, 0xD9, 0x81,\n\t// Bytes 1f40 - 1f7f\n\t0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9, 0x89, 0x44,\n\t0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9, 0x82, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85, 0x44, 0xD9,\n\t0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82, 0xD9, 0x8A,\n\t0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44, 0xD9, 0x83,\n\t0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8, 0xAD, 0x44,\n\t0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9, 0x83, 0xD9,\n\t0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85, 0x44, 0xD9,\n\t// Bytes 1f80 - 1fbf\n\t0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83, 0xD9, 0x8A,\n\t0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44, 0xD9, 0x84,\n\t0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8, 0xAD, 0x44,\n\t0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9, 0x84, 0xD9,\n\t0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87, 0x44, 0xD9,\n\t0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84, 0xD9, 0x8A,\n\t0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44, 0xD9, 0x85,\n\t0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8, 0xAD, 0x44,\n\t// Bytes 1fc0 - 1fff\n\t0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9, 0x85, 0xD9,\n\t0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89, 0x44, 0xD9,\n\t0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86, 0xD8, 0xAC,\n\t0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44, 0xD9, 0x86,\n\t0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8, 0xB1, 0x44,\n\t0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9, 0x86, 0xD9,\n\t0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86, 0x44, 0xD9,\n\t0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86, 0xD9, 0x89,\n\t// Bytes 2000 - 203f\n\t0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44, 0xD9, 0x87,\n\t0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9, 0x85, 0x44,\n\t0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9, 0x87, 0xD9,\n\t0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4, 0x44, 0xD9,\n\t0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A, 0xD8, 0xAD,\n\t0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44, 0xD9, 0x8A,\n\t0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8, 0xB2, 0x44,\n\t0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9, 0x8A, 0xD9,\n\t// Bytes 2040 - 207f\n\t0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87, 0x44, 0xD9,\n\t0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A, 0xD9, 0x8A,\n\t0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44, 0xDB, 0x87,\n\t0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84, 0x80, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x82, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x83, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x85, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x86, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x87, 0x29, 0x45, 0x28,\n\t// Bytes 2080 - 20bf\n\t0xE1, 0x84, 0x89, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8C, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x90, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x91, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x92, 0x29, 0x45, 0x28,\n\t0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28, 0xE4, 0xB8,\n\t0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8, 0x89, 0x29,\n\t// Bytes 20c0 - 20ff\n\t0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29, 0x45, 0x28,\n\t0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28, 0xE4, 0xBA,\n\t0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB, 0xA3, 0x29,\n\t0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29, 0x45, 0x28,\n\t0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28, 0xE5, 0x85,\n\t0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85, 0xAD, 0x29,\n\t0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29, 0x45, 0x28,\n\t0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28, 0xE5, 0x8D,\n\t// Bytes 2100 - 213f\n\t0x94, 0x29, 0x45, 0x28, 0xE5, 0x90, 0x8D, 0x29,\n\t0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29, 0x45, 0x28,\n\t0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28, 0xE5, 0x9C,\n\t0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD, 0xA6, 0x29,\n\t0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29, 0x45, 0x28,\n\t0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28, 0xE6, 0x9C,\n\t0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C, 0xA8, 0x29,\n\t0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29, 0x45, 0x28,\n\t// Bytes 2140 - 217f\n\t0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28, 0xE7, 0x81,\n\t0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89, 0xB9, 0x29,\n\t0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29, 0x45, 0x28,\n\t0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28, 0xE7, 0xA5,\n\t0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5, 0xAD, 0x29,\n\t0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29, 0x45, 0x28,\n\t0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28, 0xE8, 0xB2,\n\t0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3, 0x87, 0x29,\n\t// Bytes 2180 - 21bf\n\t0x45, 0x28, 0xE9, 0x87, 0x91, 0x29, 0x45, 0x30,\n\t0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0x30, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6, 0x9C, 0x88,\n\t0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9, 0x45, 0x31,\n\t0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x31, 0xE6,\n\t0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x32, 0xE7,\n\t// Bytes 21c0 - 21ff\n\t0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6, 0x97, 0xA5,\n\t0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9, 0x45, 0x31,\n\t0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x34, 0xE7,\n\t0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6, 0x97, 0xA5,\n\t0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9, 0x45, 0x31,\n\t0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x36, 0xE7,\n\t0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6, 0x97, 0xA5,\n\t0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9, 0x45, 0x31,\n\t// Bytes 2200 - 223f\n\t0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x38, 0xE7,\n\t0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6, 0x97, 0xA5,\n\t0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x32, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x33, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x34,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x36, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x37, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x38,\n\t// Bytes 2240 - 227f\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x39, 0x45, 0x32,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x30, 0xE7,\n\t0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6, 0x97, 0xA5,\n\t0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9, 0x45, 0x32,\n\t0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x32, 0xE7,\n\t0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6, 0x97, 0xA5,\n\t0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9, 0x45, 0x32,\n\t0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x34, 0xE7,\n\t// Bytes 2280 - 22bf\n\t0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6, 0x97, 0xA5,\n\t0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x38, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6, 0x97, 0xA5,\n\t0x45, 0x32, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x32,\n\t0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, 0x30, 0xE6,\n\t0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6, 0x97, 0xA5,\n\t0x45, 0x33, 0xE2, 0x81, 0x84, 0x34, 0x45, 0x33,\n\t// Bytes 22c0 - 22ff\n\t0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, 0xE2, 0x81,\n\t0x84, 0x38, 0x45, 0x34, 0xE2, 0x81, 0x84, 0x35,\n\t0x45, 0x35, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x35,\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x37, 0xE2, 0x81,\n\t0x84, 0x38, 0x45, 0x41, 0xE2, 0x88, 0x95, 0x6D,\n\t0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D, 0x45, 0x6D,\n\t0xE2, 0x88, 0x95, 0x73, 0x46, 0x31, 0xE2, 0x81,\n\t0x84, 0x31, 0x30, 0x46, 0x43, 0xE2, 0x88, 0x95,\n\t// Bytes 2300 - 233f\n\t0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88, 0x95, 0x73,\n\t0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD8,\n\t0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD8, 0xAA,\n\t0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xAA, 0xD8,\n\t0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA, 0xD8, 0xAD,\n\t0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9,\n\t// Bytes 2340 - 237f\n\t0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x89,\n\t0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8,\n\t0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xAA,\n\t0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8, 0xAA, 0xD9,\n\t0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9,\n\t0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x8A,\n\t// Bytes 2380 - 23bf\n\t0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0x46,\n\t0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8,\n\t0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAD,\n\t0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xAD, 0xD9,\n\t0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8,\n\t0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC, 0xD9, 0x89,\n\t0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xAC, 0x46,\n\t// Bytes 23c0 - 23ff\n\t0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89, 0x46, 0xD8,\n\t0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD8, 0xB3,\n\t0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8, 0xB3, 0xD9,\n\t0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAC, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x85,\n\t0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8,\n\t// Bytes 2400 - 243f\n\t0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB5,\n\t0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8, 0xB5, 0xD8,\n\t0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5, 0xD9, 0x84,\n\t0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9, 0x84, 0xDB,\n\t0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85, 0xD9, 0x85,\n\t0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x89, 0x46,\n\t0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xB7,\n\t// Bytes 2440 - 247f\n\t0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB7, 0xD9,\n\t0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8, 0xAC, 0xD9,\n\t0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x85,\n\t0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x89, 0x46,\n\t0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xBA,\n\t0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xBA, 0xD9,\n\t// Bytes 2480 - 24bf\n\t0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81, 0xD8, 0xAE,\n\t0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9, 0x85, 0xD9,\n\t0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84, 0xDB, 0x92,\n\t0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8, 0xAD, 0x46,\n\t0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x83,\n\t0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, 0x83, 0xD9,\n\t0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAC,\n\t// Bytes 24c0 - 24ff\n\t0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8, 0xAC, 0xD9,\n\t0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x85, 0x46,\n\t0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD9,\n\t0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x84,\n\t0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD9,\n\t0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD8,\n\t// Bytes 2500 - 253f\n\t0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAE,\n\t0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x85, 0x46,\n\t0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9,\n\t0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD9, 0x85,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, 0xAE,\n\t0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8, 0xAE, 0xD9,\n\t0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x8A,\n\t// Bytes 2540 - 257f\n\t0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD, 0x46, 0xD9,\n\t0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x86,\n\t0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8,\n\t0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAD,\n\t0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8, 0xAD, 0xD9,\n\t0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x89, 0x46,\n\t// Bytes 2580 - 25bf\n\t0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9,\n\t0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD9, 0x87,\n\t0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD8,\n\t0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x85, 0xD9,\n\t0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC, 0x46, 0xD9,\n\t// Bytes 25c0 - 25ff\n\t0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,\n\t0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x86,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x87, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46, 0xD9, 0x8A,\n\t// Bytes 2600 - 263f\n\t0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB,\n\t0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x90,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x95, 0x46,\n\t0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2, 0x46, 0xE0,\n\t0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46, 0xE0, 0xBA,\n\t0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0, 0xBB, 0x8D,\n\t// Bytes 2640 - 267f\n\t0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD, 0x80, 0xE0,\n\t0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0, 0xBE, 0xB7,\n\t0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE, 0xB7, 0x46,\n\t0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7, 0x46, 0xE0,\n\t0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,\n\t0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBE, 0x92,\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0x9C, 0xE0,\n\t// Bytes 2680 - 26bf\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0, 0xBE, 0xB7,\n\t0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE, 0xB7, 0x46,\n\t0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x46, 0xE2,\n\t0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46, 0xE2, 0x88,\n\t0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2, 0x88, 0xAE,\n\t0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81, 0xBB, 0xE3,\n\t0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88, 0xE3, 0x82,\n\t// Bytes 26c0 - 26ff\n\t0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,\n\t0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0xB3, 0x46,\n\t0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88, 0x46, 0xE3,\n\t0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83,\n\t0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3, 0x83, 0x9B,\n\t0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83, 0x9F, 0xE3,\n\t0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA, 0xE3, 0x83,\n\t0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xA0,\n\t// Bytes 2700 - 273f\n\t0x46, 0xE4, 0xBB, 0xA4, 0xE5, 0x92, 0x8C, 0x46,\n\t0xE5, 0xA4, 0xA7, 0xE6, 0xAD, 0xA3, 0x46, 0xE5,\n\t0xB9, 0xB3, 0xE6, 0x88, 0x90, 0x46, 0xE6, 0x98,\n\t0x8E, 0xE6, 0xB2, 0xBB, 0x46, 0xE6, 0x98, 0xAD,\n\t0xE5, 0x92, 0x8C, 0x47, 0x72, 0x61, 0x64, 0xE2,\n\t0x88, 0x95, 0x73, 0x47, 0xE3, 0x80, 0x94, 0x53,\n\t0xE3, 0x80, 0x95, 0x48, 0x28, 0xE1, 0x84, 0x80,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t// Bytes 2740 - 277f\n\t0x82, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,\n\t0x84, 0x83, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x29,\n\t0x48, 0x28, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1,\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x89, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8B, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8C,\n\t// Bytes 2780 - 27bf\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x8C, 0xE1, 0x85, 0xAE, 0x29, 0x48, 0x28, 0xE1,\n\t0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x29,\n\t0x48, 0x28, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1,\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x92, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x72, 0x61, 0x64, 0xE2, 0x88,\n\t// Bytes 27c0 - 27ff\n\t0x95, 0x73, 0x32, 0x48, 0xD8, 0xA7, 0xD9, 0x83,\n\t0xD8, 0xA8, 0xD8, 0xB1, 0x48, 0xD8, 0xA7, 0xD9,\n\t0x84, 0xD9, 0x84, 0xD9, 0x87, 0x48, 0xD8, 0xB1,\n\t0xD8, 0xB3, 0xD9, 0x88, 0xD9, 0x84, 0x48, 0xD8,\n\t0xB1, 0xDB, 0x8C, 0xD8, 0xA7, 0xD9, 0x84, 0x48,\n\t0xD8, 0xB5, 0xD9, 0x84, 0xD8, 0xB9, 0xD9, 0x85,\n\t0x48, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9,\n\t0x87, 0x48, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85,\n\t// Bytes 2800 - 283f\n\t0xD8, 0xAF, 0x48, 0xD9, 0x88, 0xD8, 0xB3, 0xD9,\n\t0x84, 0xD9, 0x85, 0x49, 0xE2, 0x80, 0xB2, 0xE2,\n\t0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x49, 0xE2, 0x80,\n\t0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x49,\n\t0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88,\n\t0xAB, 0x49, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE,\n\t0xE2, 0x88, 0xAE, 0x49, 0xE3, 0x80, 0x94, 0xE4,\n\t0xB8, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,\n\t// Bytes 2840 - 287f\n\t0x94, 0xE4, 0xBA, 0x8C, 0xE3, 0x80, 0x95, 0x49,\n\t0xE3, 0x80, 0x94, 0xE5, 0x8B, 0x9D, 0xE3, 0x80,\n\t0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0xAE, 0x89,\n\t0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6,\n\t0x89, 0x93, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,\n\t0x94, 0xE6, 0x95, 0x97, 0xE3, 0x80, 0x95, 0x49,\n\t0xE3, 0x80, 0x94, 0xE6, 0x9C, 0xAC, 0xE3, 0x80,\n\t0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7, 0x82, 0xB9,\n\t// Bytes 2880 - 28bf\n\t0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7,\n\t0x9B, 0x97, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x82,\n\t0xA2, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49,\n\t0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83,\n\t0x81, 0x49, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA9,\n\t0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x82, 0xAA, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82,\n\t0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x49,\n\t// Bytes 28c0 - 28ff\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xA4, 0xE3, 0x83,\n\t0xAA, 0x49, 0xE3, 0x82, 0xB1, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82, 0xB3, 0xE3,\n\t0x83, 0xAB, 0xE3, 0x83, 0x8A, 0x49, 0xE3, 0x82,\n\t0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0x49,\n\t0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83,\n\t0x88, 0x49, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99,\n\t0xE3, 0x82, 0xB7, 0x49, 0xE3, 0x83, 0x88, 0xE3,\n\t// Bytes 2900 - 293f\n\t0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83,\n\t0x8E, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x49,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0xA4, 0xE3, 0x83,\n\t0x84, 0x49, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x92, 0xE3,\n\t0x82, 0x9A, 0xE3, 0x82, 0xB3, 0x49, 0xE3, 0x83,\n\t0x95, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xB3, 0x49,\n\t0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82,\n\t// Bytes 2940 - 297f\n\t0xBD, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x9B, 0xE3,\n\t0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83,\n\t0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xB3, 0x49,\n\t0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x83,\n\t0xAB, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x83,\n\t0xE3, 0x83, 0x8F, 0x49, 0xE3, 0x83, 0x9E, 0xE3,\n\t0x83, 0xAB, 0xE3, 0x82, 0xAF, 0x49, 0xE3, 0x83,\n\t// Bytes 2980 - 29bf\n\t0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49,\n\t0xE3, 0x83, 0xA6, 0xE3, 0x82, 0xA2, 0xE3, 0x83,\n\t0xB3, 0x49, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83,\n\t0xE3, 0x83, 0x88, 0x4C, 0xE2, 0x80, 0xB2, 0xE2,\n\t0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x4C, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2,\n\t0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x4C, 0xE3, 0x82,\n\t0xA2, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, 0xE3,\n\t// Bytes 29c0 - 29ff\n\t0x82, 0xA1, 0x4C, 0xE3, 0x82, 0xA8, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xBC, 0x4C,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3, 0x82, 0xAB,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3, 0xE3, 0x83,\n\t0x9E, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xA9,\n\t0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE3,\n\t0x82, 0xAB, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAA,\n\t// Bytes 2a00 - 2a3f\n\t0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xBC,\n\t0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xA5, 0xE3,\n\t0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3,\n\t0x83, 0xA0, 0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x83,\n\t0xAD, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x8D, 0x4C,\n\t0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xA4, 0xE3, 0x82,\n\t// Bytes 2a40 - 2a7f\n\t0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x82, 0xBF,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82,\n\t0xB9, 0x4C, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x84, 0x4C, 0xE3,\n\t0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xAF,\n\t0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0x95, 0xE3,\n\t0x82, 0xA3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,\n\t0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0xE3,\n\t// Bytes 2a80 - 2abf\n\t0x83, 0xBC, 0xE3, 0x82, 0xBF, 0x4C, 0xE3, 0x83,\n\t0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0x8B, 0xE3,\n\t0x83, 0x92, 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x4C,\n\t0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xAB, 0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x9E,\n\t0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83,\n\t0xAD, 0x4C, 0xE3, 0x83, 0x9F, 0xE3, 0x82, 0xAF,\n\t// Bytes 2ac0 - 2aff\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3,\n\t0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,\n\t0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAA, 0xE3,\n\t0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB,\n\t0x4C, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3,\n\t0x82, 0x9A, 0xE3, 0x83, 0xBC, 0x4C, 0xE6, 0xA0,\n\t0xAA, 0xE5, 0xBC, 0x8F, 0xE4, 0xBC, 0x9A, 0xE7,\n\t0xA4, 0xBE, 0x4E, 0x28, 0xE1, 0x84, 0x8B, 0xE1,\n\t// Bytes 2b00 - 2b3f\n\t0x85, 0xA9, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xAE,\n\t0x29, 0x4F, 0xD8, 0xAC, 0xD9, 0x84, 0x20, 0xD8,\n\t0xAC, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x84, 0xD9,\n\t0x87, 0x4F, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0x88, 0x4F, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82,\n\t0xA2, 0x4F, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,\n\t// Bytes 2b40 - 2b7f\n\t0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3, 0x83,\n\t0x88, 0x4F, 0xE3, 0x82, 0xB5, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xA0, 0x4F, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAC, 0xE3, 0x83,\n\t0xAB, 0x4F, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0xAF,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAB, 0x4F, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A,\n\t// Bytes 2b80 - 2bbf\n\t0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83,\n\t0x88, 0x4F, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xA7, 0xE3, 0x83,\n\t0xB3, 0x4F, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0x88, 0xE3, 0x83,\n\t0xB3, 0x4F, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xAB, 0x51, 0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85,\n\t// Bytes 2bc0 - 2bff\n\t0xA9, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA5, 0xE1,\n\t0x86, 0xAB, 0x29, 0x52, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xBF,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0x52, 0xE3,\n\t0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAF,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83,\n\t0xA0, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,\n\t0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t// Bytes 2c00 - 2c3f\n\t0x88, 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x82, 0xAF,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83,\n\t0xA0, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x52,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x82,\n\t0xBB, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA4, 0xE3,\n\t0x83, 0xAD, 0x52, 0xE3, 0x83, 0x8F, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBB, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x83, 0x88, 0x52, 0xE3, 0x83,\n\t// Bytes 2c40 - 2c7f\n\t0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA2, 0xE3,\n\t0x82, 0xB9, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB,\n\t0x52, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3,\n\t0x83, 0x83, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xA7,\n\t0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x9F, 0xE3,\n\t0x83, 0xAA, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x52, 0xE3,\n\t0x83, 0xAC, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88,\n\t// Bytes 2c80 - 2cbf\n\t0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xB3, 0x61, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89,\n\t0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9,\n\t0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A,\n\t0xD9, 0x87, 0x20, 0xD9, 0x88, 0xD8, 0xB3, 0xD9,\n\t0x84, 0xD9, 0x85, 0x06, 0xE0, 0xA7, 0x87, 0xE0,\n\t0xA6, 0xBE, 0x01, 0x06, 0xE0, 0xA7, 0x87, 0xE0,\n\t0xA7, 0x97, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0,\n\t// Bytes 2cc0 - 2cff\n\t0xAC, 0xBE, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0,\n\t0xAD, 0x96, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0,\n\t0xAD, 0x97, 0x01, 0x06, 0xE0, 0xAE, 0x92, 0xE0,\n\t0xAF, 0x97, 0x01, 0x06, 0xE0, 0xAF, 0x86, 0xE0,\n\t0xAE, 0xBE, 0x01, 0x06, 0xE0, 0xAF, 0x86, 0xE0,\n\t0xAF, 0x97, 0x01, 0x06, 0xE0, 0xAF, 0x87, 0xE0,\n\t0xAE, 0xBE, 0x01, 0x06, 0xE0, 0xB2, 0xBF, 0xE0,\n\t0xB3, 0x95, 0x01, 0x06, 0xE0, 0xB3, 0x86, 0xE0,\n\t// Bytes 2d00 - 2d3f\n\t0xB3, 0x95, 0x01, 0x06, 0xE0, 0xB3, 0x86, 0xE0,\n\t0xB3, 0x96, 0x01, 0x06, 0xE0, 0xB5, 0x86, 0xE0,\n\t0xB4, 0xBE, 0x01, 0x06, 0xE0, 0xB5, 0x86, 0xE0,\n\t0xB5, 0x97, 0x01, 0x06, 0xE0, 0xB5, 0x87, 0xE0,\n\t0xB4, 0xBE, 0x01, 0x06, 0xE0, 0xB7, 0x99, 0xE0,\n\t0xB7, 0x9F, 0x01, 0x06, 0xE1, 0x80, 0xA5, 0xE1,\n\t0x80, 0xAE, 0x01, 0x06, 0xE1, 0xAC, 0x85, 0xE1,\n\t0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x87, 0xE1,\n\t// Bytes 2d40 - 2d7f\n\t0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x89, 0xE1,\n\t0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x8B, 0xE1,\n\t0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x8D, 0xE1,\n\t0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x91, 0xE1,\n\t0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBA, 0xE1,\n\t0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBC, 0xE1,\n\t0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBE, 0xE1,\n\t0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBF, 0xE1,\n\t// Bytes 2d80 - 2dbf\n\t0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAD, 0x82, 0xE1,\n\t0xAC, 0xB5, 0x01, 0x08, 0xF0, 0x91, 0x84, 0xB1,\n\t0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08, 0xF0, 0x91,\n\t0x84, 0xB2, 0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08,\n\t0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91, 0x8C, 0xBE,\n\t0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91,\n\t0x8D, 0x97, 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9,\n\t0xF0, 0x91, 0x92, 0xB0, 0x01, 0x08, 0xF0, 0x91,\n\t// Bytes 2dc0 - 2dff\n\t0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBA, 0x01, 0x08,\n\t0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBD,\n\t0x01, 0x08, 0xF0, 0x91, 0x96, 0xB8, 0xF0, 0x91,\n\t0x96, 0xAF, 0x01, 0x08, 0xF0, 0x91, 0x96, 0xB9,\n\t0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0, 0x91,\n\t0xA4, 0xB5, 0xF0, 0x91, 0xA4, 0xB0, 0x01, 0x09,\n\t0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0, 0xB3,\n\t0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99, 0xE0, 0xB7,\n\t// Bytes 2e00 - 2e3f\n\t0x8F, 0xE0, 0xB7, 0x8A, 0x16, 0x44, 0x44, 0x5A,\n\t0xCC, 0x8C, 0xCD, 0x44, 0x44, 0x7A, 0xCC, 0x8C,\n\t0xCD, 0x44, 0x64, 0x7A, 0xCC, 0x8C, 0xCD, 0x46,\n\t0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x46,\n\t0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xCD, 0x46,\n\t0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xB9, 0x46,\n\t0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x01, 0x46,\n\t0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x01, 0x46,\n\t// Bytes 2e40 - 2e7f\n\t0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x01, 0x46,\n\t0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x01, 0x46,\n\t0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x01, 0x46,\n\t0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x01, 0x46,\n\t0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x01, 0x46,\n\t0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x01, 0x46,\n\t0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, 0x01, 0x46,\n\t0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x01, 0x46,\n\t// Bytes 2e80 - 2ebf\n\t0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x01, 0x46,\n\t0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x01, 0x46,\n\t0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x01, 0x46,\n\t0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x01, 0x46,\n\t0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x01, 0x49,\n\t0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0x99, 0x11, 0x4C, 0xE1, 0x84, 0x8C, 0xE1, 0x85,\n\t0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4, 0x01,\n\t// Bytes 2ec0 - 2eff\n\t0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3,\n\t0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11, 0x4C, 0xE3,\n\t0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x9B,\n\t0xE3, 0x82, 0x9A, 0x11, 0x4C, 0xE3, 0x83, 0xA4,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82,\n\t0x99, 0x11, 0x4F, 0xE1, 0x84, 0x8E, 0xE1, 0x85,\n\t0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80, 0xE1,\n\t0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, 0xA4, 0xE3,\n\t// Bytes 2f00 - 2f3f\n\t0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF,\n\t0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, 0x82, 0xB7,\n\t0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, 0x83,\n\t0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3,\n\t0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x52,\n\t// Bytes 2f40 - 2f7f\n\t0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3,\n\t0x82, 0x99, 0x11, 0x52, 0xE3, 0x83, 0x95, 0xE3,\n\t0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x86,\n\t0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x01, 0x86,\n\t0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0x01, 0x03,\n\t0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, 0xCC, 0xB8,\n\t// Bytes 2f80 - 2fbf\n\t0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, 0x03, 0x41,\n\t0xCC, 0x80, 0xCD, 0x03, 0x41, 0xCC, 0x81, 0xCD,\n\t0x03, 0x41, 0xCC, 0x83, 0xCD, 0x03, 0x41, 0xCC,\n\t0x84, 0xCD, 0x03, 0x41, 0xCC, 0x89, 0xCD, 0x03,\n\t0x41, 0xCC, 0x8C, 0xCD, 0x03, 0x41, 0xCC, 0x8F,\n\t0xCD, 0x03, 0x41, 0xCC, 0x91, 0xCD, 0x03, 0x41,\n\t0xCC, 0xA5, 0xB9, 0x03, 0x41, 0xCC, 0xA8, 0xA9,\n\t0x03, 0x42, 0xCC, 0x87, 0xCD, 0x03, 0x42, 0xCC,\n\t// Bytes 2fc0 - 2fff\n\t0xA3, 0xB9, 0x03, 0x42, 0xCC, 0xB1, 0xB9, 0x03,\n\t0x43, 0xCC, 0x81, 0xCD, 0x03, 0x43, 0xCC, 0x82,\n\t0xCD, 0x03, 0x43, 0xCC, 0x87, 0xCD, 0x03, 0x43,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC, 0x87, 0xCD,\n\t0x03, 0x44, 0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC,\n\t0xA3, 0xB9, 0x03, 0x44, 0xCC, 0xA7, 0xA9, 0x03,\n\t0x44, 0xCC, 0xAD, 0xB9, 0x03, 0x44, 0xCC, 0xB1,\n\t0xB9, 0x03, 0x45, 0xCC, 0x80, 0xCD, 0x03, 0x45,\n\t// Bytes 3000 - 303f\n\t0xCC, 0x81, 0xCD, 0x03, 0x45, 0xCC, 0x83, 0xCD,\n\t0x03, 0x45, 0xCC, 0x86, 0xCD, 0x03, 0x45, 0xCC,\n\t0x87, 0xCD, 0x03, 0x45, 0xCC, 0x88, 0xCD, 0x03,\n\t0x45, 0xCC, 0x89, 0xCD, 0x03, 0x45, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x45, 0xCC, 0x8F, 0xCD, 0x03, 0x45,\n\t0xCC, 0x91, 0xCD, 0x03, 0x45, 0xCC, 0xA8, 0xA9,\n\t0x03, 0x45, 0xCC, 0xAD, 0xB9, 0x03, 0x45, 0xCC,\n\t0xB0, 0xB9, 0x03, 0x46, 0xCC, 0x87, 0xCD, 0x03,\n\t// Bytes 3040 - 307f\n\t0x47, 0xCC, 0x81, 0xCD, 0x03, 0x47, 0xCC, 0x82,\n\t0xCD, 0x03, 0x47, 0xCC, 0x84, 0xCD, 0x03, 0x47,\n\t0xCC, 0x86, 0xCD, 0x03, 0x47, 0xCC, 0x87, 0xCD,\n\t0x03, 0x47, 0xCC, 0x8C, 0xCD, 0x03, 0x47, 0xCC,\n\t0xA7, 0xA9, 0x03, 0x48, 0xCC, 0x82, 0xCD, 0x03,\n\t0x48, 0xCC, 0x87, 0xCD, 0x03, 0x48, 0xCC, 0x88,\n\t0xCD, 0x03, 0x48, 0xCC, 0x8C, 0xCD, 0x03, 0x48,\n\t0xCC, 0xA3, 0xB9, 0x03, 0x48, 0xCC, 0xA7, 0xA9,\n\t// Bytes 3080 - 30bf\n\t0x03, 0x48, 0xCC, 0xAE, 0xB9, 0x03, 0x49, 0xCC,\n\t0x80, 0xCD, 0x03, 0x49, 0xCC, 0x81, 0xCD, 0x03,\n\t0x49, 0xCC, 0x82, 0xCD, 0x03, 0x49, 0xCC, 0x83,\n\t0xCD, 0x03, 0x49, 0xCC, 0x84, 0xCD, 0x03, 0x49,\n\t0xCC, 0x86, 0xCD, 0x03, 0x49, 0xCC, 0x87, 0xCD,\n\t0x03, 0x49, 0xCC, 0x89, 0xCD, 0x03, 0x49, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x49, 0xCC, 0x8F, 0xCD, 0x03,\n\t0x49, 0xCC, 0x91, 0xCD, 0x03, 0x49, 0xCC, 0xA3,\n\t// Bytes 30c0 - 30ff\n\t0xB9, 0x03, 0x49, 0xCC, 0xA8, 0xA9, 0x03, 0x49,\n\t0xCC, 0xB0, 0xB9, 0x03, 0x4A, 0xCC, 0x82, 0xCD,\n\t0x03, 0x4B, 0xCC, 0x81, 0xCD, 0x03, 0x4B, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x4B, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x4B, 0xCC, 0xA7, 0xA9, 0x03, 0x4B, 0xCC, 0xB1,\n\t0xB9, 0x03, 0x4C, 0xCC, 0x81, 0xCD, 0x03, 0x4C,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x4C, 0xCC, 0xA7, 0xA9,\n\t0x03, 0x4C, 0xCC, 0xAD, 0xB9, 0x03, 0x4C, 0xCC,\n\t// Bytes 3100 - 313f\n\t0xB1, 0xB9, 0x03, 0x4D, 0xCC, 0x81, 0xCD, 0x03,\n\t0x4D, 0xCC, 0x87, 0xCD, 0x03, 0x4D, 0xCC, 0xA3,\n\t0xB9, 0x03, 0x4E, 0xCC, 0x80, 0xCD, 0x03, 0x4E,\n\t0xCC, 0x81, 0xCD, 0x03, 0x4E, 0xCC, 0x83, 0xCD,\n\t0x03, 0x4E, 0xCC, 0x87, 0xCD, 0x03, 0x4E, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x4E, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x4E, 0xCC, 0xA7, 0xA9, 0x03, 0x4E, 0xCC, 0xAD,\n\t0xB9, 0x03, 0x4E, 0xCC, 0xB1, 0xB9, 0x03, 0x4F,\n\t// Bytes 3140 - 317f\n\t0xCC, 0x80, 0xCD, 0x03, 0x4F, 0xCC, 0x81, 0xCD,\n\t0x03, 0x4F, 0xCC, 0x86, 0xCD, 0x03, 0x4F, 0xCC,\n\t0x89, 0xCD, 0x03, 0x4F, 0xCC, 0x8B, 0xCD, 0x03,\n\t0x4F, 0xCC, 0x8C, 0xCD, 0x03, 0x4F, 0xCC, 0x8F,\n\t0xCD, 0x03, 0x4F, 0xCC, 0x91, 0xCD, 0x03, 0x50,\n\t0xCC, 0x81, 0xCD, 0x03, 0x50, 0xCC, 0x87, 0xCD,\n\t0x03, 0x52, 0xCC, 0x81, 0xCD, 0x03, 0x52, 0xCC,\n\t0x87, 0xCD, 0x03, 0x52, 0xCC, 0x8C, 0xCD, 0x03,\n\t// Bytes 3180 - 31bf\n\t0x52, 0xCC, 0x8F, 0xCD, 0x03, 0x52, 0xCC, 0x91,\n\t0xCD, 0x03, 0x52, 0xCC, 0xA7, 0xA9, 0x03, 0x52,\n\t0xCC, 0xB1, 0xB9, 0x03, 0x53, 0xCC, 0x82, 0xCD,\n\t0x03, 0x53, 0xCC, 0x87, 0xCD, 0x03, 0x53, 0xCC,\n\t0xA6, 0xB9, 0x03, 0x53, 0xCC, 0xA7, 0xA9, 0x03,\n\t0x54, 0xCC, 0x87, 0xCD, 0x03, 0x54, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x54, 0xCC, 0xA3, 0xB9, 0x03, 0x54,\n\t0xCC, 0xA6, 0xB9, 0x03, 0x54, 0xCC, 0xA7, 0xA9,\n\t// Bytes 31c0 - 31ff\n\t0x03, 0x54, 0xCC, 0xAD, 0xB9, 0x03, 0x54, 0xCC,\n\t0xB1, 0xB9, 0x03, 0x55, 0xCC, 0x80, 0xCD, 0x03,\n\t0x55, 0xCC, 0x81, 0xCD, 0x03, 0x55, 0xCC, 0x82,\n\t0xCD, 0x03, 0x55, 0xCC, 0x86, 0xCD, 0x03, 0x55,\n\t0xCC, 0x89, 0xCD, 0x03, 0x55, 0xCC, 0x8A, 0xCD,\n\t0x03, 0x55, 0xCC, 0x8B, 0xCD, 0x03, 0x55, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x55, 0xCC, 0x8F, 0xCD, 0x03,\n\t0x55, 0xCC, 0x91, 0xCD, 0x03, 0x55, 0xCC, 0xA3,\n\t// Bytes 3200 - 323f\n\t0xB9, 0x03, 0x55, 0xCC, 0xA4, 0xB9, 0x03, 0x55,\n\t0xCC, 0xA8, 0xA9, 0x03, 0x55, 0xCC, 0xAD, 0xB9,\n\t0x03, 0x55, 0xCC, 0xB0, 0xB9, 0x03, 0x56, 0xCC,\n\t0x83, 0xCD, 0x03, 0x56, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x57, 0xCC, 0x80, 0xCD, 0x03, 0x57, 0xCC, 0x81,\n\t0xCD, 0x03, 0x57, 0xCC, 0x82, 0xCD, 0x03, 0x57,\n\t0xCC, 0x87, 0xCD, 0x03, 0x57, 0xCC, 0x88, 0xCD,\n\t0x03, 0x57, 0xCC, 0xA3, 0xB9, 0x03, 0x58, 0xCC,\n\t// Bytes 3240 - 327f\n\t0x87, 0xCD, 0x03, 0x58, 0xCC, 0x88, 0xCD, 0x03,\n\t0x59, 0xCC, 0x80, 0xCD, 0x03, 0x59, 0xCC, 0x81,\n\t0xCD, 0x03, 0x59, 0xCC, 0x82, 0xCD, 0x03, 0x59,\n\t0xCC, 0x83, 0xCD, 0x03, 0x59, 0xCC, 0x84, 0xCD,\n\t0x03, 0x59, 0xCC, 0x87, 0xCD, 0x03, 0x59, 0xCC,\n\t0x88, 0xCD, 0x03, 0x59, 0xCC, 0x89, 0xCD, 0x03,\n\t0x59, 0xCC, 0xA3, 0xB9, 0x03, 0x5A, 0xCC, 0x81,\n\t0xCD, 0x03, 0x5A, 0xCC, 0x82, 0xCD, 0x03, 0x5A,\n\t// Bytes 3280 - 32bf\n\t0xCC, 0x87, 0xCD, 0x03, 0x5A, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x5A, 0xCC, 0xA3, 0xB9, 0x03, 0x5A, 0xCC,\n\t0xB1, 0xB9, 0x03, 0x61, 0xCC, 0x80, 0xCD, 0x03,\n\t0x61, 0xCC, 0x81, 0xCD, 0x03, 0x61, 0xCC, 0x83,\n\t0xCD, 0x03, 0x61, 0xCC, 0x84, 0xCD, 0x03, 0x61,\n\t0xCC, 0x89, 0xCD, 0x03, 0x61, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x61, 0xCC, 0x8F, 0xCD, 0x03, 0x61, 0xCC,\n\t0x91, 0xCD, 0x03, 0x61, 0xCC, 0xA5, 0xB9, 0x03,\n\t// Bytes 32c0 - 32ff\n\t0x61, 0xCC, 0xA8, 0xA9, 0x03, 0x62, 0xCC, 0x87,\n\t0xCD, 0x03, 0x62, 0xCC, 0xA3, 0xB9, 0x03, 0x62,\n\t0xCC, 0xB1, 0xB9, 0x03, 0x63, 0xCC, 0x81, 0xCD,\n\t0x03, 0x63, 0xCC, 0x82, 0xCD, 0x03, 0x63, 0xCC,\n\t0x87, 0xCD, 0x03, 0x63, 0xCC, 0x8C, 0xCD, 0x03,\n\t0x64, 0xCC, 0x87, 0xCD, 0x03, 0x64, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x64, 0xCC, 0xA3, 0xB9, 0x03, 0x64,\n\t0xCC, 0xA7, 0xA9, 0x03, 0x64, 0xCC, 0xAD, 0xB9,\n\t// Bytes 3300 - 333f\n\t0x03, 0x64, 0xCC, 0xB1, 0xB9, 0x03, 0x65, 0xCC,\n\t0x80, 0xCD, 0x03, 0x65, 0xCC, 0x81, 0xCD, 0x03,\n\t0x65, 0xCC, 0x83, 0xCD, 0x03, 0x65, 0xCC, 0x86,\n\t0xCD, 0x03, 0x65, 0xCC, 0x87, 0xCD, 0x03, 0x65,\n\t0xCC, 0x88, 0xCD, 0x03, 0x65, 0xCC, 0x89, 0xCD,\n\t0x03, 0x65, 0xCC, 0x8C, 0xCD, 0x03, 0x65, 0xCC,\n\t0x8F, 0xCD, 0x03, 0x65, 0xCC, 0x91, 0xCD, 0x03,\n\t0x65, 0xCC, 0xA8, 0xA9, 0x03, 0x65, 0xCC, 0xAD,\n\t// Bytes 3340 - 337f\n\t0xB9, 0x03, 0x65, 0xCC, 0xB0, 0xB9, 0x03, 0x66,\n\t0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC, 0x81, 0xCD,\n\t0x03, 0x67, 0xCC, 0x82, 0xCD, 0x03, 0x67, 0xCC,\n\t0x84, 0xCD, 0x03, 0x67, 0xCC, 0x86, 0xCD, 0x03,\n\t0x67, 0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x67, 0xCC, 0xA7, 0xA9, 0x03, 0x68,\n\t0xCC, 0x82, 0xCD, 0x03, 0x68, 0xCC, 0x87, 0xCD,\n\t0x03, 0x68, 0xCC, 0x88, 0xCD, 0x03, 0x68, 0xCC,\n\t// Bytes 3380 - 33bf\n\t0x8C, 0xCD, 0x03, 0x68, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x68, 0xCC, 0xA7, 0xA9, 0x03, 0x68, 0xCC, 0xAE,\n\t0xB9, 0x03, 0x68, 0xCC, 0xB1, 0xB9, 0x03, 0x69,\n\t0xCC, 0x80, 0xCD, 0x03, 0x69, 0xCC, 0x81, 0xCD,\n\t0x03, 0x69, 0xCC, 0x82, 0xCD, 0x03, 0x69, 0xCC,\n\t0x83, 0xCD, 0x03, 0x69, 0xCC, 0x84, 0xCD, 0x03,\n\t0x69, 0xCC, 0x86, 0xCD, 0x03, 0x69, 0xCC, 0x89,\n\t0xCD, 0x03, 0x69, 0xCC, 0x8C, 0xCD, 0x03, 0x69,\n\t// Bytes 33c0 - 33ff\n\t0xCC, 0x8F, 0xCD, 0x03, 0x69, 0xCC, 0x91, 0xCD,\n\t0x03, 0x69, 0xCC, 0xA3, 0xB9, 0x03, 0x69, 0xCC,\n\t0xA8, 0xA9, 0x03, 0x69, 0xCC, 0xB0, 0xB9, 0x03,\n\t0x6A, 0xCC, 0x82, 0xCD, 0x03, 0x6A, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x6B, 0xCC, 0x81, 0xCD, 0x03, 0x6B,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x6B, 0xCC, 0xA3, 0xB9,\n\t0x03, 0x6B, 0xCC, 0xA7, 0xA9, 0x03, 0x6B, 0xCC,\n\t0xB1, 0xB9, 0x03, 0x6C, 0xCC, 0x81, 0xCD, 0x03,\n\t// Bytes 3400 - 343f\n\t0x6C, 0xCC, 0x8C, 0xCD, 0x03, 0x6C, 0xCC, 0xA7,\n\t0xA9, 0x03, 0x6C, 0xCC, 0xAD, 0xB9, 0x03, 0x6C,\n\t0xCC, 0xB1, 0xB9, 0x03, 0x6D, 0xCC, 0x81, 0xCD,\n\t0x03, 0x6D, 0xCC, 0x87, 0xCD, 0x03, 0x6D, 0xCC,\n\t0xA3, 0xB9, 0x03, 0x6E, 0xCC, 0x80, 0xCD, 0x03,\n\t0x6E, 0xCC, 0x81, 0xCD, 0x03, 0x6E, 0xCC, 0x83,\n\t0xCD, 0x03, 0x6E, 0xCC, 0x87, 0xCD, 0x03, 0x6E,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x6E, 0xCC, 0xA3, 0xB9,\n\t// Bytes 3440 - 347f\n\t0x03, 0x6E, 0xCC, 0xA7, 0xA9, 0x03, 0x6E, 0xCC,\n\t0xAD, 0xB9, 0x03, 0x6E, 0xCC, 0xB1, 0xB9, 0x03,\n\t0x6F, 0xCC, 0x80, 0xCD, 0x03, 0x6F, 0xCC, 0x81,\n\t0xCD, 0x03, 0x6F, 0xCC, 0x86, 0xCD, 0x03, 0x6F,\n\t0xCC, 0x89, 0xCD, 0x03, 0x6F, 0xCC, 0x8B, 0xCD,\n\t0x03, 0x6F, 0xCC, 0x8C, 0xCD, 0x03, 0x6F, 0xCC,\n\t0x8F, 0xCD, 0x03, 0x6F, 0xCC, 0x91, 0xCD, 0x03,\n\t0x70, 0xCC, 0x81, 0xCD, 0x03, 0x70, 0xCC, 0x87,\n\t// Bytes 3480 - 34bf\n\t0xCD, 0x03, 0x72, 0xCC, 0x81, 0xCD, 0x03, 0x72,\n\t0xCC, 0x87, 0xCD, 0x03, 0x72, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x72, 0xCC, 0x8F, 0xCD, 0x03, 0x72, 0xCC,\n\t0x91, 0xCD, 0x03, 0x72, 0xCC, 0xA7, 0xA9, 0x03,\n\t0x72, 0xCC, 0xB1, 0xB9, 0x03, 0x73, 0xCC, 0x82,\n\t0xCD, 0x03, 0x73, 0xCC, 0x87, 0xCD, 0x03, 0x73,\n\t0xCC, 0xA6, 0xB9, 0x03, 0x73, 0xCC, 0xA7, 0xA9,\n\t0x03, 0x74, 0xCC, 0x87, 0xCD, 0x03, 0x74, 0xCC,\n\t// Bytes 34c0 - 34ff\n\t0x88, 0xCD, 0x03, 0x74, 0xCC, 0x8C, 0xCD, 0x03,\n\t0x74, 0xCC, 0xA3, 0xB9, 0x03, 0x74, 0xCC, 0xA6,\n\t0xB9, 0x03, 0x74, 0xCC, 0xA7, 0xA9, 0x03, 0x74,\n\t0xCC, 0xAD, 0xB9, 0x03, 0x74, 0xCC, 0xB1, 0xB9,\n\t0x03, 0x75, 0xCC, 0x80, 0xCD, 0x03, 0x75, 0xCC,\n\t0x81, 0xCD, 0x03, 0x75, 0xCC, 0x82, 0xCD, 0x03,\n\t0x75, 0xCC, 0x86, 0xCD, 0x03, 0x75, 0xCC, 0x89,\n\t0xCD, 0x03, 0x75, 0xCC, 0x8A, 0xCD, 0x03, 0x75,\n\t// Bytes 3500 - 353f\n\t0xCC, 0x8B, 0xCD, 0x03, 0x75, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x75, 0xCC, 0x8F, 0xCD, 0x03, 0x75, 0xCC,\n\t0x91, 0xCD, 0x03, 0x75, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x75, 0xCC, 0xA4, 0xB9, 0x03, 0x75, 0xCC, 0xA8,\n\t0xA9, 0x03, 0x75, 0xCC, 0xAD, 0xB9, 0x03, 0x75,\n\t0xCC, 0xB0, 0xB9, 0x03, 0x76, 0xCC, 0x83, 0xCD,\n\t0x03, 0x76, 0xCC, 0xA3, 0xB9, 0x03, 0x77, 0xCC,\n\t0x80, 0xCD, 0x03, 0x77, 0xCC, 0x81, 0xCD, 0x03,\n\t// Bytes 3540 - 357f\n\t0x77, 0xCC, 0x82, 0xCD, 0x03, 0x77, 0xCC, 0x87,\n\t0xCD, 0x03, 0x77, 0xCC, 0x88, 0xCD, 0x03, 0x77,\n\t0xCC, 0x8A, 0xCD, 0x03, 0x77, 0xCC, 0xA3, 0xB9,\n\t0x03, 0x78, 0xCC, 0x87, 0xCD, 0x03, 0x78, 0xCC,\n\t0x88, 0xCD, 0x03, 0x79, 0xCC, 0x80, 0xCD, 0x03,\n\t0x79, 0xCC, 0x81, 0xCD, 0x03, 0x79, 0xCC, 0x82,\n\t0xCD, 0x03, 0x79, 0xCC, 0x83, 0xCD, 0x03, 0x79,\n\t0xCC, 0x84, 0xCD, 0x03, 0x79, 0xCC, 0x87, 0xCD,\n\t// Bytes 3580 - 35bf\n\t0x03, 0x79, 0xCC, 0x88, 0xCD, 0x03, 0x79, 0xCC,\n\t0x89, 0xCD, 0x03, 0x79, 0xCC, 0x8A, 0xCD, 0x03,\n\t0x79, 0xCC, 0xA3, 0xB9, 0x03, 0x7A, 0xCC, 0x81,\n\t0xCD, 0x03, 0x7A, 0xCC, 0x82, 0xCD, 0x03, 0x7A,\n\t0xCC, 0x87, 0xCD, 0x03, 0x7A, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x7A, 0xCC, 0xA3, 0xB9, 0x03, 0x7A, 0xCC,\n\t0xB1, 0xB9, 0x04, 0xC2, 0xA8, 0xCC, 0x80, 0xCE,\n\t0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x04, 0xC2,\n\t// Bytes 35c0 - 35ff\n\t0xA8, 0xCD, 0x82, 0xCE, 0x04, 0xC3, 0x86, 0xCC,\n\t0x81, 0xCD, 0x04, 0xC3, 0x86, 0xCC, 0x84, 0xCD,\n\t0x04, 0xC3, 0x98, 0xCC, 0x81, 0xCD, 0x04, 0xC3,\n\t0xA6, 0xCC, 0x81, 0xCD, 0x04, 0xC3, 0xA6, 0xCC,\n\t0x84, 0xCD, 0x04, 0xC3, 0xB8, 0xCC, 0x81, 0xCD,\n\t0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xCD, 0x04, 0xC6,\n\t0xB7, 0xCC, 0x8C, 0xCD, 0x04, 0xCA, 0x92, 0xCC,\n\t0x8C, 0xCD, 0x04, 0xCE, 0x91, 0xCC, 0x80, 0xCD,\n\t// Bytes 3600 - 363f\n\t0x04, 0xCE, 0x91, 0xCC, 0x81, 0xCD, 0x04, 0xCE,\n\t0x91, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0x91, 0xCC,\n\t0x86, 0xCD, 0x04, 0xCE, 0x91, 0xCD, 0x85, 0xDD,\n\t0x04, 0xCE, 0x95, 0xCC, 0x80, 0xCD, 0x04, 0xCE,\n\t0x95, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0x97, 0xCC,\n\t0x80, 0xCD, 0x04, 0xCE, 0x97, 0xCC, 0x81, 0xCD,\n\t0x04, 0xCE, 0x97, 0xCD, 0x85, 0xDD, 0x04, 0xCE,\n\t0x99, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0x99, 0xCC,\n\t// Bytes 3640 - 367f\n\t0x81, 0xCD, 0x04, 0xCE, 0x99, 0xCC, 0x84, 0xCD,\n\t0x04, 0xCE, 0x99, 0xCC, 0x86, 0xCD, 0x04, 0xCE,\n\t0x99, 0xCC, 0x88, 0xCD, 0x04, 0xCE, 0x9F, 0xCC,\n\t0x80, 0xCD, 0x04, 0xCE, 0x9F, 0xCC, 0x81, 0xCD,\n\t0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xCD, 0x04, 0xCE,\n\t0xA5, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0xA5, 0xCC,\n\t0x81, 0xCD, 0x04, 0xCE, 0xA5, 0xCC, 0x84, 0xCD,\n\t0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xCD, 0x04, 0xCE,\n\t// Bytes 3680 - 36bf\n\t0xA5, 0xCC, 0x88, 0xCD, 0x04, 0xCE, 0xA9, 0xCC,\n\t0x80, 0xCD, 0x04, 0xCE, 0xA9, 0xCC, 0x81, 0xCD,\n\t0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xDD, 0x04, 0xCE,\n\t0xB1, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0xB1, 0xCC,\n\t0x86, 0xCD, 0x04, 0xCE, 0xB1, 0xCD, 0x85, 0xDD,\n\t0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xCD, 0x04, 0xCE,\n\t0xB5, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0xB7, 0xCD,\n\t0x85, 0xDD, 0x04, 0xCE, 0xB9, 0xCC, 0x80, 0xCD,\n\t// Bytes 36c0 - 36ff\n\t0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x04, 0xCE,\n\t0xB9, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0xB9, 0xCC,\n\t0x86, 0xCD, 0x04, 0xCE, 0xB9, 0xCD, 0x82, 0xCD,\n\t0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xCD, 0x04, 0xCE,\n\t0xBF, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x81, 0xCC,\n\t0x93, 0xCD, 0x04, 0xCF, 0x81, 0xCC, 0x94, 0xCD,\n\t0x04, 0xCF, 0x85, 0xCC, 0x80, 0xCD, 0x04, 0xCF,\n\t0x85, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x85, 0xCC,\n\t// Bytes 3700 - 373f\n\t0x84, 0xCD, 0x04, 0xCF, 0x85, 0xCC, 0x86, 0xCD,\n\t0x04, 0xCF, 0x85, 0xCD, 0x82, 0xCD, 0x04, 0xCF,\n\t0x89, 0xCD, 0x85, 0xDD, 0x04, 0xCF, 0x92, 0xCC,\n\t0x81, 0xCD, 0x04, 0xCF, 0x92, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD0, 0x86, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0x90, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0x90, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0x93, 0xCC, 0x81, 0xCD,\n\t0x04, 0xD0, 0x95, 0xCC, 0x80, 0xCD, 0x04, 0xD0,\n\t// Bytes 3740 - 377f\n\t0x95, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0x95, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0x96, 0xCC, 0x86, 0xCD,\n\t0x04, 0xD0, 0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0x97, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x98, 0xCC,\n\t0x80, 0xCD, 0x04, 0xD0, 0x98, 0xCC, 0x84, 0xCD,\n\t0x04, 0xD0, 0x98, 0xCC, 0x86, 0xCD, 0x04, 0xD0,\n\t0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x9A, 0xCC,\n\t0x81, 0xCD, 0x04, 0xD0, 0x9E, 0xCC, 0x88, 0xCD,\n\t// Bytes 3780 - 37bf\n\t0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xCD, 0x04, 0xD0,\n\t0xA3, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xA3, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0xA3, 0xCC, 0x8B, 0xCD,\n\t0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0xAB, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0xAD, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0xB0, 0xCC, 0x86, 0xCD,\n\t0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0xB3, 0xCC, 0x81, 0xCD, 0x04, 0xD0, 0xB5, 0xCC,\n\t// Bytes 37c0 - 37ff\n\t0x80, 0xCD, 0x04, 0xD0, 0xB5, 0xCC, 0x86, 0xCD,\n\t0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0xB6, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xB6, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0xB7, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xCD, 0x04, 0xD0,\n\t0xB8, 0xCC, 0x84, 0xCD, 0x04, 0xD0, 0xB8, 0xCC,\n\t0x86, 0xCD, 0x04, 0xD0, 0xB8, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xCD, 0x04, 0xD0,\n\t// Bytes 3800 - 383f\n\t0xBE, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0x83, 0xCC,\n\t0x84, 0xCD, 0x04, 0xD1, 0x83, 0xCC, 0x86, 0xCD,\n\t0x04, 0xD1, 0x83, 0xCC, 0x88, 0xCD, 0x04, 0xD1,\n\t0x83, 0xCC, 0x8B, 0xCD, 0x04, 0xD1, 0x87, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD1, 0x8B, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xCD, 0x04, 0xD1,\n\t0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0xB4, 0xCC,\n\t0x8F, 0xCD, 0x04, 0xD1, 0xB5, 0xCC, 0x8F, 0xCD,\n\t// Bytes 3840 - 387f\n\t0x04, 0xD3, 0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD3,\n\t0x99, 0xCC, 0x88, 0xCD, 0x04, 0xD3, 0xA8, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD3, 0xA9, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x04, 0xD8,\n\t0xA7, 0xD9, 0x94, 0xCD, 0x04, 0xD8, 0xA7, 0xD9,\n\t0x95, 0xB9, 0x04, 0xD9, 0x88, 0xD9, 0x94, 0xCD,\n\t0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xCD, 0x04, 0xDB,\n\t0x81, 0xD9, 0x94, 0xCD, 0x04, 0xDB, 0x92, 0xD9,\n\t// Bytes 3880 - 38bf\n\t0x94, 0xCD, 0x04, 0xDB, 0x95, 0xD9, 0x94, 0xCD,\n\t0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05,\n\t0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x41,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x41, 0xCC,\n\t0x82, 0xCC, 0x89, 0xCE, 0x05, 0x41, 0xCC, 0x86,\n\t0xCC, 0x80, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC,\n\t0x81, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x83,\n\t0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x89, 0xCE,\n\t// Bytes 38c0 - 38ff\n\t0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05,\n\t0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x41,\n\t0xCC, 0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x41, 0xCC,\n\t0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x41, 0xCC, 0xA3,\n\t0xCC, 0x86, 0xCE, 0x05, 0x43, 0xCC, 0xA7, 0xCC,\n\t0x81, 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x80,\n\t0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x81, 0xCE,\n\t0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05,\n\t// Bytes 3900 - 393f\n\t0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x45,\n\t0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05, 0x45, 0xCC,\n\t0x84, 0xCC, 0x81, 0xCE, 0x05, 0x45, 0xCC, 0xA3,\n\t0xCC, 0x82, 0xCE, 0x05, 0x45, 0xCC, 0xA7, 0xCC,\n\t0x86, 0xCE, 0x05, 0x49, 0xCC, 0x88, 0xCC, 0x81,\n\t0xCE, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, 0x84, 0xCE,\n\t0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05,\n\t0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x4F,\n\t// Bytes 3940 - 397f\n\t0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x4F, 0xCC,\n\t0x82, 0xCC, 0x89, 0xCE, 0x05, 0x4F, 0xCC, 0x83,\n\t0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, 0x83, 0xCC,\n\t0x84, 0xCE, 0x05, 0x4F, 0xCC, 0x83, 0xCC, 0x88,\n\t0xCE, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x80, 0xCE,\n\t0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05,\n\t0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x4F,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x4F, 0xCC,\n\t// Bytes 3980 - 39bf\n\t0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x4F, 0xCC, 0x9B,\n\t0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC,\n\t0x83, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA,\n\t0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05,\n\t0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05, 0x52,\n\t0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x53, 0xCC,\n\t0x81, 0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC, 0x8C,\n\t// Bytes 39c0 - 39ff\n\t0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC, 0xA3, 0xCC,\n\t0x87, 0xCE, 0x05, 0x55, 0xCC, 0x83, 0xCC, 0x81,\n\t0xCE, 0x05, 0x55, 0xCC, 0x84, 0xCC, 0x88, 0xCE,\n\t0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x05,\n\t0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05, 0x55,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x55, 0xCC,\n\t0x88, 0xCC, 0x8C, 0xCE, 0x05, 0x55, 0xCC, 0x9B,\n\t0xCC, 0x80, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC,\n\t// Bytes 3a00 - 3a3f\n\t0x81, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x83,\n\t0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x89, 0xCE,\n\t0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05,\n\t0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, 0x61,\n\t0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC,\n\t0x82, 0xCC, 0x83, 0xCE, 0x05, 0x61, 0xCC, 0x82,\n\t0xCC, 0x89, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC,\n\t0x80, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x81,\n\t// Bytes 3a40 - 3a7f\n\t0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x83, 0xCE,\n\t0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xCE, 0x05,\n\t0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x61,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x61, 0xCC,\n\t0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC, 0xA3,\n\t0xCC, 0x82, 0xCE, 0x05, 0x61, 0xCC, 0xA3, 0xCC,\n\t0x86, 0xCE, 0x05, 0x63, 0xCC, 0xA7, 0xCC, 0x81,\n\t0xCE, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x80, 0xCE,\n\t// Bytes 3a80 - 3abf\n\t0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05,\n\t0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x65,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x65, 0xCC,\n\t0x84, 0xCC, 0x80, 0xCE, 0x05, 0x65, 0xCC, 0x84,\n\t0xCC, 0x81, 0xCE, 0x05, 0x65, 0xCC, 0xA3, 0xCC,\n\t0x82, 0xCE, 0x05, 0x65, 0xCC, 0xA7, 0xCC, 0x86,\n\t0xCE, 0x05, 0x69, 0xCC, 0x88, 0xCC, 0x81, 0xCE,\n\t0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05,\n\t// Bytes 3ac0 - 3aff\n\t0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, 0x6F,\n\t0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x6F, 0xCC,\n\t0x82, 0xCC, 0x83, 0xCE, 0x05, 0x6F, 0xCC, 0x82,\n\t0xCC, 0x89, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC,\n\t0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x84,\n\t0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x88, 0xCE,\n\t0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05,\n\t0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05, 0x6F,\n\t// Bytes 3b00 - 3b3f\n\t0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC,\n\t0x88, 0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC, 0x9B,\n\t0xCC, 0x80, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC,\n\t0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x83,\n\t0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x89, 0xCE,\n\t0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05,\n\t0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x6F,\n\t0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05, 0x72, 0xCC,\n\t// Bytes 3b40 - 3b7f\n\t0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x73, 0xCC, 0x81,\n\t0xCC, 0x87, 0xCE, 0x05, 0x73, 0xCC, 0x8C, 0xCC,\n\t0x87, 0xCE, 0x05, 0x73, 0xCC, 0xA3, 0xCC, 0x87,\n\t0xCE, 0x05, 0x75, 0xCC, 0x83, 0xCC, 0x81, 0xCE,\n\t0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xCE, 0x05,\n\t0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x05, 0x75,\n\t0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05, 0x75, 0xCC,\n\t0x88, 0xCC, 0x84, 0xCE, 0x05, 0x75, 0xCC, 0x88,\n\t// Bytes 3b80 - 3bbf\n\t0xCC, 0x8C, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC,\n\t0x80, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x81,\n\t0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x83, 0xCE,\n\t0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xCE, 0x05,\n\t0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05, 0xE1,\n\t0xBE, 0xBF, 0xCC, 0x80, 0xCE, 0x05, 0xE1, 0xBE,\n\t0xBF, 0xCC, 0x81, 0xCE, 0x05, 0xE1, 0xBE, 0xBF,\n\t0xCD, 0x82, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCC,\n\t// Bytes 3bc0 - 3bff\n\t0x80, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCC, 0x81,\n\t0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, 0x82, 0xCE,\n\t0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87,\n\t0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x92,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x94, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, 0xCC, 0xB8,\n\t// Bytes 3c00 - 3c3f\n\t0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88,\n\t0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x83,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x85, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, 0xB8, 0x05,\n\t// Bytes 3c40 - 3c7f\n\t0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB3,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB6, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0x05, 0x05,\n\t// Bytes 3c80 - 3cbf\n\t0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x83,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x86, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t// Bytes 3cc0 - 3cff\n\t0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xAB,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB2, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0x05, 0x06,\n\t0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t// Bytes 3d00 - 3d3f\n\t0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t// Bytes 3d40 - 3d7f\n\t0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t// Bytes 3d80 - 3dbf\n\t0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t// Bytes 3dc0 - 3dff\n\t0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,\n\t// Bytes 3e00 - 3e3f\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t// Bytes 3e40 - 3e7f\n\t0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t// Bytes 3e80 - 3ebf\n\t0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,\n\t0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,\n\t// Bytes 3ec0 - 3eff\n\t0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,\n\t0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,\n\t0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,\n\t0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,\n\t0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,\n\t// Bytes 3f00 - 3f3f\n\t0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,\n\t0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0x89, 0x06,\n\t0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0x15, 0x06,\n\t0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 3f40 - 3f7f\n\t0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 3f80 - 3fbf\n\t0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 3fc0 - 3fff\n\t0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 4000 - 403f\n\t0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t// Bytes 4040 - 407f\n\t0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t// Bytes 4080 - 40bf\n\t0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x11, 0x06,\n\t// Bytes 40c0 - 40ff\n\t0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0x11, 0x06,\n\t0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0x11, 0x08,\n\t0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93,\n\t// Bytes 4100 - 413f\n\t0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,\n\t// Bytes 4140 - 417f\n\t0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9,\n\t// Bytes 4180 - 41bf\n\t0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80,\n\t// Bytes 41c0 - 41ff\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94,\n\t0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93,\n\t0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,\n\t// Bytes 4200 - 423f\n\t0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x93,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94,\n\t// Bytes 4240 - 427f\n\t0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,\n\t0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, 0x82, 0xBA,\n\t0x0D, 0x08, 0xF0, 0x91, 0x82, 0x9B, 0xF0, 0x91,\n\t0x82, 0xBA, 0x0D, 0x08, 0xF0, 0x91, 0x82, 0xA5,\n\t0xF0, 0x91, 0x82, 0xBA, 0x0D, 0x42, 0xC2, 0xB4,\n\t0x01, 0x43, 0x20, 0xCC, 0x81, 0xCD, 0x43, 0x20,\n\t0xCC, 0x83, 0xCD, 0x43, 0x20, 0xCC, 0x84, 0xCD,\n\t// Bytes 4280 - 42bf\n\t0x43, 0x20, 0xCC, 0x85, 0xCD, 0x43, 0x20, 0xCC,\n\t0x86, 0xCD, 0x43, 0x20, 0xCC, 0x87, 0xCD, 0x43,\n\t0x20, 0xCC, 0x88, 0xCD, 0x43, 0x20, 0xCC, 0x8A,\n\t0xCD, 0x43, 0x20, 0xCC, 0x8B, 0xCD, 0x43, 0x20,\n\t0xCC, 0x93, 0xCD, 0x43, 0x20, 0xCC, 0x94, 0xCD,\n\t0x43, 0x20, 0xCC, 0xA7, 0xA9, 0x43, 0x20, 0xCC,\n\t0xA8, 0xA9, 0x43, 0x20, 0xCC, 0xB3, 0xB9, 0x43,\n\t0x20, 0xCD, 0x82, 0xCD, 0x43, 0x20, 0xCD, 0x85,\n\t// Bytes 42c0 - 42ff\n\t0xDD, 0x43, 0x20, 0xD9, 0x8B, 0x5D, 0x43, 0x20,\n\t0xD9, 0x8C, 0x61, 0x43, 0x20, 0xD9, 0x8D, 0x65,\n\t0x43, 0x20, 0xD9, 0x8E, 0x69, 0x43, 0x20, 0xD9,\n\t0x8F, 0x6D, 0x43, 0x20, 0xD9, 0x90, 0x71, 0x43,\n\t0x20, 0xD9, 0x91, 0x75, 0x43, 0x20, 0xD9, 0x92,\n\t0x79, 0x43, 0x41, 0xCC, 0x8A, 0xCD, 0x43, 0x73,\n\t0xCC, 0x87, 0xCD, 0x44, 0x20, 0xE3, 0x82, 0x99,\n\t0x11, 0x44, 0x20, 0xE3, 0x82, 0x9A, 0x11, 0x44,\n\t// Bytes 4300 - 433f\n\t0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x44, 0xCE, 0x91,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x95, 0xCC, 0x81,\n\t0xCD, 0x44, 0xCE, 0x97, 0xCC, 0x81, 0xCD, 0x44,\n\t0xCE, 0x99, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x9F,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xA5, 0xCC, 0x81,\n\t0xCD, 0x44, 0xCE, 0xA5, 0xCC, 0x88, 0xCD, 0x44,\n\t0xCE, 0xA9, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB1,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB5, 0xCC, 0x81,\n\t// Bytes 4340 - 437f\n\t0xCD, 0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x44,\n\t0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xBF,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCF, 0x85, 0xCC, 0x81,\n\t0xCD, 0x44, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x44,\n\t0xD7, 0x90, 0xD6, 0xB7, 0x35, 0x44, 0xD7, 0x90,\n\t0xD6, 0xB8, 0x39, 0x44, 0xD7, 0x90, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x91, 0xD6, 0xBC, 0x45, 0x44,\n\t0xD7, 0x91, 0xD6, 0xBF, 0x4D, 0x44, 0xD7, 0x92,\n\t// Bytes 4380 - 43bf\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x93, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x45, 0x44,\n\t0xD7, 0x95, 0xD6, 0xB9, 0x3D, 0x44, 0xD7, 0x95,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x96, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x98, 0xD6, 0xBC, 0x45, 0x44,\n\t0xD7, 0x99, 0xD6, 0xB4, 0x29, 0x44, 0xD7, 0x99,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9A, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x9B, 0xD6, 0xBC, 0x45, 0x44,\n\t// Bytes 43c0 - 43ff\n\t0xD7, 0x9B, 0xD6, 0xBF, 0x4D, 0x44, 0xD7, 0x9C,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9E, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x45, 0x44,\n\t0xD7, 0xA1, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA3,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA4, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0xA4, 0xD6, 0xBF, 0x4D, 0x44,\n\t0xD7, 0xA6, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA7,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA8, 0xD6, 0xBC,\n\t// Bytes 4400 - 443f\n\t0x45, 0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x45, 0x44,\n\t0xD7, 0xA9, 0xD7, 0x81, 0x51, 0x44, 0xD7, 0xA9,\n\t0xD7, 0x82, 0x55, 0x44, 0xD7, 0xAA, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0xB2, 0xD6, 0xB7, 0x35, 0x44,\n\t0xD8, 0xA7, 0xD9, 0x8B, 0x5D, 0x44, 0xD8, 0xA7,\n\t0xD9, 0x93, 0xCD, 0x44, 0xD8, 0xA7, 0xD9, 0x94,\n\t0xCD, 0x44, 0xD8, 0xA7, 0xD9, 0x95, 0xB9, 0x44,\n\t0xD8, 0xB0, 0xD9, 0xB0, 0x7D, 0x44, 0xD8, 0xB1,\n\t// Bytes 4440 - 447f\n\t0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x80, 0xD9, 0x8B,\n\t0x5D, 0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x69, 0x44,\n\t0xD9, 0x80, 0xD9, 0x8F, 0x6D, 0x44, 0xD9, 0x80,\n\t0xD9, 0x90, 0x71, 0x44, 0xD9, 0x80, 0xD9, 0x91,\n\t0x75, 0x44, 0xD9, 0x80, 0xD9, 0x92, 0x79, 0x44,\n\t0xD9, 0x87, 0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x88,\n\t0xD9, 0x94, 0xCD, 0x44, 0xD9, 0x89, 0xD9, 0xB0,\n\t0x7D, 0x44, 0xD9, 0x8A, 0xD9, 0x94, 0xCD, 0x44,\n\t// Bytes 4480 - 44bf\n\t0xDB, 0x92, 0xD9, 0x94, 0xCD, 0x44, 0xDB, 0x95,\n\t0xD9, 0x94, 0xCD, 0x45, 0x20, 0xCC, 0x88, 0xCC,\n\t0x80, 0xCE, 0x45, 0x20, 0xCC, 0x88, 0xCC, 0x81,\n\t0xCE, 0x45, 0x20, 0xCC, 0x88, 0xCD, 0x82, 0xCE,\n\t0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x45,\n\t0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x45, 0x20,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x45, 0x20, 0xCC,\n\t0x94, 0xCC, 0x80, 0xCE, 0x45, 0x20, 0xCC, 0x94,\n\t// Bytes 44c0 - 44ff\n\t0xCC, 0x81, 0xCE, 0x45, 0x20, 0xCC, 0x94, 0xCD,\n\t0x82, 0xCE, 0x45, 0x20, 0xD9, 0x8C, 0xD9, 0x91,\n\t0x76, 0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91, 0x76,\n\t0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x76, 0x45,\n\t0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x76, 0x45, 0x20,\n\t0xD9, 0x90, 0xD9, 0x91, 0x76, 0x45, 0x20, 0xD9,\n\t0x91, 0xD9, 0xB0, 0x7E, 0x45, 0xE2, 0xAB, 0x9D,\n\t0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9, 0xCC, 0x88,\n\t// Bytes 4500 - 453f\n\t0xCC, 0x81, 0xCE, 0x46, 0xCF, 0x85, 0xCC, 0x88,\n\t0xCC, 0x81, 0xCE, 0x46, 0xD7, 0xA9, 0xD6, 0xBC,\n\t0xD7, 0x81, 0x52, 0x46, 0xD7, 0xA9, 0xD6, 0xBC,\n\t0xD7, 0x82, 0x56, 0x46, 0xD9, 0x80, 0xD9, 0x8E,\n\t0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80, 0xD9, 0x8F,\n\t0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80, 0xD9, 0x90,\n\t0xD9, 0x91, 0x76, 0x46, 0xE0, 0xA4, 0x95, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x96, 0xE0,\n\t// Bytes 4540 - 457f\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x97, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x9C, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xA1, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xA2, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xAB, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xAF, 0xE0,\n\t0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xA1, 0xE0,\n\t0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xA2, 0xE0,\n\t// Bytes 4580 - 45bf\n\t0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xAF, 0xE0,\n\t0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x96, 0xE0,\n\t0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x97, 0xE0,\n\t0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x9C, 0xE0,\n\t0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xAB, 0xE0,\n\t0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xB2, 0xE0,\n\t0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xB8, 0xE0,\n\t0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xAC, 0xA1, 0xE0,\n\t// Bytes 45c0 - 45ff\n\t0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xAC, 0xA2, 0xE0,\n\t0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xBE, 0xB2, 0xE0,\n\t0xBE, 0x80, 0xA1, 0x46, 0xE0, 0xBE, 0xB3, 0xE0,\n\t0xBE, 0x80, 0xA1, 0x46, 0xE3, 0x83, 0x86, 0xE3,\n\t0x82, 0x99, 0x11, 0x48, 0xF0, 0x9D, 0x85, 0x97,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x48, 0xF0, 0x9D,\n\t0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x48,\n\t0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5,\n\t// Bytes 4600 - 463f\n\t0xB1, 0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xB1, 0x49, 0xE0, 0xBE, 0xB2, 0xE0,\n\t0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xA2, 0x49, 0xE0,\n\t0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80,\n\t0xA2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xB2, 0x4C,\n\t0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5,\n\t0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x4C, 0xF0, 0x9D,\n\t// Bytes 4640 - 467f\n\t0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,\n\t0x85, 0xB0, 0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB1,\n\t0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xB2, 0x4C,\n\t0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5,\n\t0xF0, 0x9D, 0x85, 0xAE, 0xB2, 0x4C, 0xF0, 0x9D,\n\t0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,\n\t// Bytes 4680 - 46bf\n\t0x85, 0xAF, 0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xBA,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE,\n\t0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x83,\n\t0x41, 0xCC, 0x82, 0xCD, 0x83, 0x41, 0xCC, 0x86,\n\t0xCD, 0x83, 0x41, 0xCC, 0x87, 0xCD, 0x83, 0x41,\n\t0xCC, 0x88, 0xCD, 0x83, 0x41, 0xCC, 0x8A, 0xCD,\n\t0x83, 0x41, 0xCC, 0xA3, 0xB9, 0x83, 0x43, 0xCC,\n\t// Bytes 46c0 - 46ff\n\t0xA7, 0xA9, 0x83, 0x45, 0xCC, 0x82, 0xCD, 0x83,\n\t0x45, 0xCC, 0x84, 0xCD, 0x83, 0x45, 0xCC, 0xA3,\n\t0xB9, 0x83, 0x45, 0xCC, 0xA7, 0xA9, 0x83, 0x49,\n\t0xCC, 0x88, 0xCD, 0x83, 0x4C, 0xCC, 0xA3, 0xB9,\n\t0x83, 0x4F, 0xCC, 0x82, 0xCD, 0x83, 0x4F, 0xCC,\n\t0x83, 0xCD, 0x83, 0x4F, 0xCC, 0x84, 0xCD, 0x83,\n\t0x4F, 0xCC, 0x87, 0xCD, 0x83, 0x4F, 0xCC, 0x88,\n\t0xCD, 0x83, 0x4F, 0xCC, 0x9B, 0xB1, 0x83, 0x4F,\n\t// Bytes 4700 - 473f\n\t0xCC, 0xA3, 0xB9, 0x83, 0x4F, 0xCC, 0xA8, 0xA9,\n\t0x83, 0x52, 0xCC, 0xA3, 0xB9, 0x83, 0x53, 0xCC,\n\t0x81, 0xCD, 0x83, 0x53, 0xCC, 0x8C, 0xCD, 0x83,\n\t0x53, 0xCC, 0xA3, 0xB9, 0x83, 0x55, 0xCC, 0x83,\n\t0xCD, 0x83, 0x55, 0xCC, 0x84, 0xCD, 0x83, 0x55,\n\t0xCC, 0x88, 0xCD, 0x83, 0x55, 0xCC, 0x9B, 0xB1,\n\t0x83, 0x61, 0xCC, 0x82, 0xCD, 0x83, 0x61, 0xCC,\n\t0x86, 0xCD, 0x83, 0x61, 0xCC, 0x87, 0xCD, 0x83,\n\t// Bytes 4740 - 477f\n\t0x61, 0xCC, 0x88, 0xCD, 0x83, 0x61, 0xCC, 0x8A,\n\t0xCD, 0x83, 0x61, 0xCC, 0xA3, 0xB9, 0x83, 0x63,\n\t0xCC, 0xA7, 0xA9, 0x83, 0x65, 0xCC, 0x82, 0xCD,\n\t0x83, 0x65, 0xCC, 0x84, 0xCD, 0x83, 0x65, 0xCC,\n\t0xA3, 0xB9, 0x83, 0x65, 0xCC, 0xA7, 0xA9, 0x83,\n\t0x69, 0xCC, 0x88, 0xCD, 0x83, 0x6C, 0xCC, 0xA3,\n\t0xB9, 0x83, 0x6F, 0xCC, 0x82, 0xCD, 0x83, 0x6F,\n\t0xCC, 0x83, 0xCD, 0x83, 0x6F, 0xCC, 0x84, 0xCD,\n\t// Bytes 4780 - 47bf\n\t0x83, 0x6F, 0xCC, 0x87, 0xCD, 0x83, 0x6F, 0xCC,\n\t0x88, 0xCD, 0x83, 0x6F, 0xCC, 0x9B, 0xB1, 0x83,\n\t0x6F, 0xCC, 0xA3, 0xB9, 0x83, 0x6F, 0xCC, 0xA8,\n\t0xA9, 0x83, 0x72, 0xCC, 0xA3, 0xB9, 0x83, 0x73,\n\t0xCC, 0x81, 0xCD, 0x83, 0x73, 0xCC, 0x8C, 0xCD,\n\t0x83, 0x73, 0xCC, 0xA3, 0xB9, 0x83, 0x75, 0xCC,\n\t0x83, 0xCD, 0x83, 0x75, 0xCC, 0x84, 0xCD, 0x83,\n\t0x75, 0xCC, 0x88, 0xCD, 0x83, 0x75, 0xCC, 0x9B,\n\t// Bytes 47c0 - 47ff\n\t0xB1, 0x84, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x84,\n\t0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x95,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x95, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x84,\n\t0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x99,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x99, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCE, 0x9F, 0xCC, 0x93, 0xCD, 0x84,\n\t0xCE, 0x9F, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xA5,\n\t// Bytes 4800 - 483f\n\t0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xA9, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x84, 0xCE, 0xB1,\n\t0xCC, 0x81, 0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x84, 0xCE, 0xB5,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB5, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x84,\n\t// Bytes 4840 - 487f\n\t0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x84, 0xCE, 0xB7,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x84,\n\t0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x84, 0xCE, 0xB9,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB9, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCE, 0xBF, 0xCC, 0x93, 0xCD, 0x84,\n\t0xCE, 0xBF, 0xCC, 0x94, 0xCD, 0x84, 0xCF, 0x85,\n\t0xCC, 0x88, 0xCD, 0x84, 0xCF, 0x85, 0xCC, 0x93,\n\t// Bytes 4880 - 48bf\n\t0xCD, 0x84, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x84, 0xCF, 0x89,\n\t0xCC, 0x81, 0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x86, 0xCE, 0x91,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x91,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x91,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x91,\n\t// Bytes 48c0 - 48ff\n\t0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x91,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x91,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x97,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x97,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x97,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x97,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x97,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x97,\n\t// Bytes 4900 - 493f\n\t0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xA9,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xA9,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xA9,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xA9,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xA9,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xA9,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB1,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB1,\n\t// Bytes 4940 - 497f\n\t0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB1,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB1,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB1,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB1,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB7,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB7,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB7,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB7,\n\t// Bytes 4980 - 49bf\n\t0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB7,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB7,\n\t0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCF, 0x89,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCF, 0x89,\n\t0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCF, 0x89,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCF, 0x89,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCF, 0x89,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCF, 0x89,\n\t// Bytes 49c0 - 49ff\n\t0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x42, 0xCC, 0x80,\n\t0xCD, 0x33, 0x42, 0xCC, 0x81, 0xCD, 0x33, 0x42,\n\t0xCC, 0x93, 0xCD, 0x33, 0x43, 0xE1, 0x85, 0xA1,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA5,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00, 0x43, 0xE1,\n\t// Bytes 4a00 - 4a3f\n\t0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA9,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAD,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB1,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2, 0x01, 0x00,\n\t// Bytes 4a40 - 4a7f\n\t0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB5,\n\t0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA, 0x01, 0x00,\n\t0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00, 0x43, 0xE1,\n\t0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB0,\n\t0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1, 0x01, 0x00,\n\t0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00, 0x43, 0xE1,\n\t0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB4,\n\t// Bytes 4a80 - 4abf\n\t0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5, 0x01, 0x00,\n\t0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x33, 0x43,\n\t0xE3, 0x82, 0x99, 0x11, 0x04, 0x43, 0xE3, 0x82,\n\t0x9A, 0x11, 0x04, 0x46, 0xE0, 0xBD, 0xB1, 0xE0,\n\t0xBD, 0xB2, 0xA2, 0x27, 0x46, 0xE0, 0xBD, 0xB1,\n\t0xE0, 0xBD, 0xB4, 0xA6, 0x27, 0x46, 0xE0, 0xBD,\n\t0xB1, 0xE0, 0xBE, 0x80, 0xA2, 0x27, 0x00, 0x01,\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfcTrie. Total size: 10680 bytes (10.43 KiB). Checksum: a555db76d4becdd2.\ntype nfcTrie struct{}\n\nfunc newNfcTrie(i int) *nfcTrie {\n\treturn &nfcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 46:\n\t\treturn uint16(nfcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 46\n\t\treturn uint16(nfcSparse.lookup(n, b))\n\t}\n}\n\n// nfcValues: 48 blocks, 3072 entries, 6144 bytes\n// The third block is the zero block.\nvar nfcValues = [3072]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f86, 0xc1: 0x2f8b, 0xc2: 0x469f, 0xc3: 0x2f90, 0xc4: 0x46ae, 0xc5: 0x46b3,\n\t0xc6: 0xa000, 0xc7: 0x46bd, 0xc8: 0x2ff9, 0xc9: 0x2ffe, 0xca: 0x46c2, 0xcb: 0x3012,\n\t0xcc: 0x3085, 0xcd: 0x308a, 0xce: 0x308f, 0xcf: 0x46d6, 0xd1: 0x311b,\n\t0xd2: 0x313e, 0xd3: 0x3143, 0xd4: 0x46e0, 0xd5: 0x46e5, 0xd6: 0x46f4,\n\t0xd8: 0xa000, 0xd9: 0x31ca, 0xda: 0x31cf, 0xdb: 0x31d4, 0xdc: 0x4726, 0xdd: 0x324c,\n\t0xe0: 0x3292, 0xe1: 0x3297, 0xe2: 0x4730, 0xe3: 0x329c,\n\t0xe4: 0x473f, 0xe5: 0x4744, 0xe6: 0xa000, 0xe7: 0x474e, 0xe8: 0x3305, 0xe9: 0x330a,\n\t0xea: 0x4753, 0xeb: 0x331e, 0xec: 0x3396, 0xed: 0x339b, 0xee: 0x33a0, 0xef: 0x4767,\n\t0xf1: 0x342c, 0xf2: 0x344f, 0xf3: 0x3454, 0xf4: 0x4771, 0xf5: 0x4776,\n\t0xf6: 0x4785, 0xf8: 0xa000, 0xf9: 0x34e0, 0xfa: 0x34e5, 0xfb: 0x34ea,\n\t0xfc: 0x47b7, 0xfd: 0x3567, 0xff: 0x3580,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f95, 0x101: 0x32a1, 0x102: 0x46a4, 0x103: 0x4735, 0x104: 0x2fb3, 0x105: 0x32bf,\n\t0x106: 0x2fc7, 0x107: 0x32d3, 0x108: 0x2fcc, 0x109: 0x32d8, 0x10a: 0x2fd1, 0x10b: 0x32dd,\n\t0x10c: 0x2fd6, 0x10d: 0x32e2, 0x10e: 0x2fe0, 0x10f: 0x32ec,\n\t0x112: 0x46c7, 0x113: 0x4758, 0x114: 0x3008, 0x115: 0x3314, 0x116: 0x300d, 0x117: 0x3319,\n\t0x118: 0x302b, 0x119: 0x3337, 0x11a: 0x301c, 0x11b: 0x3328, 0x11c: 0x3044, 0x11d: 0x3350,\n\t0x11e: 0x304e, 0x11f: 0x335a, 0x120: 0x3053, 0x121: 0x335f, 0x122: 0x305d, 0x123: 0x3369,\n\t0x124: 0x3062, 0x125: 0x336e, 0x128: 0x3094, 0x129: 0x33a5,\n\t0x12a: 0x3099, 0x12b: 0x33aa, 0x12c: 0x309e, 0x12d: 0x33af, 0x12e: 0x30c1, 0x12f: 0x33cd,\n\t0x130: 0x30a3, 0x134: 0x30cb, 0x135: 0x33d7,\n\t0x136: 0x30df, 0x137: 0x33f0, 0x139: 0x30e9, 0x13a: 0x33fa, 0x13b: 0x30f3,\n\t0x13c: 0x3404, 0x13d: 0x30ee, 0x13e: 0x33ff,\n\t// Block 0x5, offset 0x140\n\t0x143: 0x3116, 0x144: 0x3427, 0x145: 0x312f,\n\t0x146: 0x3440, 0x147: 0x3125, 0x148: 0x3436,\n\t0x14c: 0x46ea, 0x14d: 0x477b, 0x14e: 0x3148, 0x14f: 0x3459, 0x150: 0x3152, 0x151: 0x3463,\n\t0x154: 0x3170, 0x155: 0x3481, 0x156: 0x3189, 0x157: 0x349a,\n\t0x158: 0x317a, 0x159: 0x348b, 0x15a: 0x470d, 0x15b: 0x479e, 0x15c: 0x3193, 0x15d: 0x34a4,\n\t0x15e: 0x31a2, 0x15f: 0x34b3, 0x160: 0x4712, 0x161: 0x47a3, 0x162: 0x31bb, 0x163: 0x34d1,\n\t0x164: 0x31ac, 0x165: 0x34c2, 0x168: 0x471c, 0x169: 0x47ad,\n\t0x16a: 0x4721, 0x16b: 0x47b2, 0x16c: 0x31d9, 0x16d: 0x34ef, 0x16e: 0x31e3, 0x16f: 0x34f9,\n\t0x170: 0x31e8, 0x171: 0x34fe, 0x172: 0x3206, 0x173: 0x351c, 0x174: 0x3229, 0x175: 0x353f,\n\t0x176: 0x3251, 0x177: 0x356c, 0x178: 0x3265, 0x179: 0x3274, 0x17a: 0x3594, 0x17b: 0x327e,\n\t0x17c: 0x359e, 0x17d: 0x3283, 0x17e: 0x35a3, 0x17f: 0xa000,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x8100, 0x185: 0x8100,\n\t0x186: 0x8100,\n\t0x18d: 0x2f9f, 0x18e: 0x32ab, 0x18f: 0x30ad, 0x190: 0x33b9, 0x191: 0x3157,\n\t0x192: 0x3468, 0x193: 0x31ed, 0x194: 0x3503, 0x195: 0x39e6, 0x196: 0x3b75, 0x197: 0x39df,\n\t0x198: 0x3b6e, 0x199: 0x39ed, 0x19a: 0x3b7c, 0x19b: 0x39d8, 0x19c: 0x3b67,\n\t0x19e: 0x38c7, 0x19f: 0x3a56, 0x1a0: 0x38c0, 0x1a1: 0x3a4f, 0x1a2: 0x35ca, 0x1a3: 0x35dc,\n\t0x1a6: 0x3058, 0x1a7: 0x3364, 0x1a8: 0x30d5, 0x1a9: 0x33e6,\n\t0x1aa: 0x4703, 0x1ab: 0x4794, 0x1ac: 0x39a7, 0x1ad: 0x3b36, 0x1ae: 0x35ee, 0x1af: 0x35f4,\n\t0x1b0: 0x33dc, 0x1b4: 0x303f, 0x1b5: 0x334b,\n\t0x1b8: 0x3111, 0x1b9: 0x3422, 0x1ba: 0x38ce, 0x1bb: 0x3a5d,\n\t0x1bc: 0x35c4, 0x1bd: 0x35d6, 0x1be: 0x35d0, 0x1bf: 0x35e2,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2fa4, 0x1c1: 0x32b0, 0x1c2: 0x2fa9, 0x1c3: 0x32b5, 0x1c4: 0x3021, 0x1c5: 0x332d,\n\t0x1c6: 0x3026, 0x1c7: 0x3332, 0x1c8: 0x30b2, 0x1c9: 0x33be, 0x1ca: 0x30b7, 0x1cb: 0x33c3,\n\t0x1cc: 0x315c, 0x1cd: 0x346d, 0x1ce: 0x3161, 0x1cf: 0x3472, 0x1d0: 0x317f, 0x1d1: 0x3490,\n\t0x1d2: 0x3184, 0x1d3: 0x3495, 0x1d4: 0x31f2, 0x1d5: 0x3508, 0x1d6: 0x31f7, 0x1d7: 0x350d,\n\t0x1d8: 0x319d, 0x1d9: 0x34ae, 0x1da: 0x31b6, 0x1db: 0x34cc,\n\t0x1de: 0x3071, 0x1df: 0x337d,\n\t0x1e6: 0x46a9, 0x1e7: 0x473a, 0x1e8: 0x46d1, 0x1e9: 0x4762,\n\t0x1ea: 0x3976, 0x1eb: 0x3b05, 0x1ec: 0x3953, 0x1ed: 0x3ae2, 0x1ee: 0x46ef, 0x1ef: 0x4780,\n\t0x1f0: 0x396f, 0x1f1: 0x3afe, 0x1f2: 0x325b, 0x1f3: 0x3576,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133,\n\t0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933,\n\t0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933,\n\t0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e,\n\t0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e,\n\t0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e,\n\t0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e,\n\t0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e,\n\t0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e,\n\t0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49c5, 0x241: 0x49ca, 0x242: 0x9933, 0x243: 0x49cf, 0x244: 0x4a88, 0x245: 0x9937,\n\t0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133,\n\t0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133,\n\t0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133,\n\t0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136,\n\t0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133,\n\t0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133,\n\t0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133,\n\t0x274: 0x0173,\n\t0x27a: 0x8100,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x8100, 0x285: 0x35b8,\n\t0x286: 0x3600, 0x287: 0x00ce, 0x288: 0x361e, 0x289: 0x362a, 0x28a: 0x363c,\n\t0x28c: 0x365a, 0x28e: 0x366c, 0x28f: 0x368a, 0x290: 0x3e1f, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x364e, 0x2ab: 0x367e, 0x2ac: 0x4815, 0x2ad: 0x36ae, 0x2ae: 0x483f, 0x2af: 0x36c0,\n\t0x2b0: 0x3e87, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x3738, 0x2c1: 0x3744, 0x2c3: 0x3732,\n\t0x2c6: 0xa000, 0x2c7: 0x3720,\n\t0x2cc: 0x3774, 0x2cd: 0x375c, 0x2ce: 0x3786, 0x2d0: 0xa000,\n\t0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000,\n\t0x2d8: 0xa000, 0x2d9: 0x3768, 0x2da: 0xa000,\n\t0x2de: 0xa000, 0x2e3: 0xa000,\n\t0x2e7: 0xa000,\n\t0x2eb: 0xa000, 0x2ed: 0xa000,\n\t0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000,\n\t0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x37ec, 0x2fa: 0xa000,\n\t0x2fe: 0xa000,\n\t// Block 0xc, offset 0x300\n\t0x301: 0x374a, 0x302: 0x37ce,\n\t0x310: 0x3726, 0x311: 0x37aa,\n\t0x312: 0x372c, 0x313: 0x37b0, 0x316: 0x373e, 0x317: 0x37c2,\n\t0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3840, 0x31b: 0x3846, 0x31c: 0x3750, 0x31d: 0x37d4,\n\t0x31e: 0x3756, 0x31f: 0x37da, 0x322: 0x3762, 0x323: 0x37e6,\n\t0x324: 0x376e, 0x325: 0x37f2, 0x326: 0x377a, 0x327: 0x37fe, 0x328: 0xa000, 0x329: 0xa000,\n\t0x32a: 0x384c, 0x32b: 0x3852, 0x32c: 0x37a4, 0x32d: 0x3828, 0x32e: 0x3780, 0x32f: 0x3804,\n\t0x330: 0x378c, 0x331: 0x3810, 0x332: 0x3792, 0x333: 0x3816, 0x334: 0x3798, 0x335: 0x381c,\n\t0x338: 0x379e, 0x339: 0x3822,\n\t// Block 0xd, offset 0x340\n\t0x351: 0x812e,\n\t0x352: 0x8133, 0x353: 0x8133, 0x354: 0x8133, 0x355: 0x8133, 0x356: 0x812e, 0x357: 0x8133,\n\t0x358: 0x8133, 0x359: 0x8133, 0x35a: 0x812f, 0x35b: 0x812e, 0x35c: 0x8133, 0x35d: 0x8133,\n\t0x35e: 0x8133, 0x35f: 0x8133, 0x360: 0x8133, 0x361: 0x8133, 0x362: 0x812e, 0x363: 0x812e,\n\t0x364: 0x812e, 0x365: 0x812e, 0x366: 0x812e, 0x367: 0x812e, 0x368: 0x8133, 0x369: 0x8133,\n\t0x36a: 0x812e, 0x36b: 0x8133, 0x36c: 0x8133, 0x36d: 0x812f, 0x36e: 0x8132, 0x36f: 0x8133,\n\t0x370: 0x8106, 0x371: 0x8107, 0x372: 0x8108, 0x373: 0x8109, 0x374: 0x810a, 0x375: 0x810b,\n\t0x376: 0x810c, 0x377: 0x810d, 0x378: 0x810e, 0x379: 0x810f, 0x37a: 0x810f, 0x37b: 0x8110,\n\t0x37c: 0x8111, 0x37d: 0x8112, 0x37f: 0x8113,\n\t// Block 0xe, offset 0x380\n\t0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8117,\n\t0x38c: 0x8118, 0x38d: 0x8119, 0x38e: 0x811a, 0x38f: 0x811b, 0x390: 0x811c, 0x391: 0x811d,\n\t0x392: 0x811e, 0x393: 0x9933, 0x394: 0x9933, 0x395: 0x992e, 0x396: 0x812e, 0x397: 0x8133,\n\t0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x8133, 0x39b: 0x8133, 0x39c: 0x812e, 0x39d: 0x8133,\n\t0x39e: 0x8133, 0x39f: 0x812e,\n\t0x3b0: 0x811f,\n\t// Block 0xf, offset 0x3c0\n\t0x3d3: 0x812e, 0x3d4: 0x8133, 0x3d5: 0x8133, 0x3d6: 0x8133, 0x3d7: 0x8133,\n\t0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x8133, 0x3dd: 0x8133,\n\t0x3de: 0x8133, 0x3df: 0x8133, 0x3e0: 0x8133, 0x3e1: 0x8133, 0x3e3: 0x812e,\n\t0x3e4: 0x8133, 0x3e5: 0x8133, 0x3e6: 0x812e, 0x3e7: 0x8133, 0x3e8: 0x8133, 0x3e9: 0x812e,\n\t0x3ea: 0x8133, 0x3eb: 0x8133, 0x3ec: 0x8133, 0x3ed: 0x812e, 0x3ee: 0x812e, 0x3ef: 0x812e,\n\t0x3f0: 0x8117, 0x3f1: 0x8118, 0x3f2: 0x8119, 0x3f3: 0x8133, 0x3f4: 0x8133, 0x3f5: 0x8133,\n\t0x3f6: 0x812e, 0x3f7: 0x8133, 0x3f8: 0x8133, 0x3f9: 0x812e, 0x3fa: 0x812e, 0x3fb: 0x8133,\n\t0x3fc: 0x8133, 0x3fd: 0x8133, 0x3fe: 0x8133, 0x3ff: 0x8133,\n\t// Block 0x10, offset 0x400\n\t0x405: 0xa000,\n\t0x406: 0x2d33, 0x407: 0xa000, 0x408: 0x2d3b, 0x409: 0xa000, 0x40a: 0x2d43, 0x40b: 0xa000,\n\t0x40c: 0x2d4b, 0x40d: 0xa000, 0x40e: 0x2d53, 0x411: 0xa000,\n\t0x412: 0x2d5b,\n\t0x434: 0x8103, 0x435: 0x9900,\n\t0x43a: 0xa000, 0x43b: 0x2d63,\n\t0x43c: 0xa000, 0x43d: 0x2d6b, 0x43e: 0xa000, 0x43f: 0xa000,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x8133, 0x441: 0x8133, 0x442: 0x812e, 0x443: 0x8133, 0x444: 0x8133, 0x445: 0x8133,\n\t0x446: 0x8133, 0x447: 0x8133, 0x448: 0x8133, 0x449: 0x8133, 0x44a: 0x812e, 0x44b: 0x8133,\n\t0x44c: 0x8133, 0x44d: 0x8136, 0x44e: 0x812b, 0x44f: 0x812e, 0x450: 0x812a, 0x451: 0x8133,\n\t0x452: 0x8133, 0x453: 0x8133, 0x454: 0x8133, 0x455: 0x8133, 0x456: 0x8133, 0x457: 0x8133,\n\t0x458: 0x8133, 0x459: 0x8133, 0x45a: 0x8133, 0x45b: 0x8133, 0x45c: 0x8133, 0x45d: 0x8133,\n\t0x45e: 0x8133, 0x45f: 0x8133, 0x460: 0x8133, 0x461: 0x8133, 0x462: 0x8133, 0x463: 0x8133,\n\t0x464: 0x8133, 0x465: 0x8133, 0x466: 0x8133, 0x467: 0x8133, 0x468: 0x8133, 0x469: 0x8133,\n\t0x46a: 0x8133, 0x46b: 0x8133, 0x46c: 0x8133, 0x46d: 0x8133, 0x46e: 0x8133, 0x46f: 0x8133,\n\t0x470: 0x8133, 0x471: 0x8133, 0x472: 0x8133, 0x473: 0x8133, 0x474: 0x8133, 0x475: 0x8133,\n\t0x476: 0x8134, 0x477: 0x8132, 0x478: 0x8132, 0x479: 0x812e, 0x47b: 0x8133,\n\t0x47c: 0x8135, 0x47d: 0x812e, 0x47e: 0x8133, 0x47f: 0x812e,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x2fae, 0x481: 0x32ba, 0x482: 0x2fb8, 0x483: 0x32c4, 0x484: 0x2fbd, 0x485: 0x32c9,\n\t0x486: 0x2fc2, 0x487: 0x32ce, 0x488: 0x38e3, 0x489: 0x3a72, 0x48a: 0x2fdb, 0x48b: 0x32e7,\n\t0x48c: 0x2fe5, 0x48d: 0x32f1, 0x48e: 0x2ff4, 0x48f: 0x3300, 0x490: 0x2fea, 0x491: 0x32f6,\n\t0x492: 0x2fef, 0x493: 0x32fb, 0x494: 0x3906, 0x495: 0x3a95, 0x496: 0x390d, 0x497: 0x3a9c,\n\t0x498: 0x3030, 0x499: 0x333c, 0x49a: 0x3035, 0x49b: 0x3341, 0x49c: 0x391b, 0x49d: 0x3aaa,\n\t0x49e: 0x303a, 0x49f: 0x3346, 0x4a0: 0x3049, 0x4a1: 0x3355, 0x4a2: 0x3067, 0x4a3: 0x3373,\n\t0x4a4: 0x3076, 0x4a5: 0x3382, 0x4a6: 0x306c, 0x4a7: 0x3378, 0x4a8: 0x307b, 0x4a9: 0x3387,\n\t0x4aa: 0x3080, 0x4ab: 0x338c, 0x4ac: 0x30c6, 0x4ad: 0x33d2, 0x4ae: 0x3922, 0x4af: 0x3ab1,\n\t0x4b0: 0x30d0, 0x4b1: 0x33e1, 0x4b2: 0x30da, 0x4b3: 0x33eb, 0x4b4: 0x30e4, 0x4b5: 0x33f5,\n\t0x4b6: 0x46db, 0x4b7: 0x476c, 0x4b8: 0x3929, 0x4b9: 0x3ab8, 0x4ba: 0x30fd, 0x4bb: 0x340e,\n\t0x4bc: 0x30f8, 0x4bd: 0x3409, 0x4be: 0x3102, 0x4bf: 0x3413,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x3107, 0x4c1: 0x3418, 0x4c2: 0x310c, 0x4c3: 0x341d, 0x4c4: 0x3120, 0x4c5: 0x3431,\n\t0x4c6: 0x312a, 0x4c7: 0x343b, 0x4c8: 0x3139, 0x4c9: 0x344a, 0x4ca: 0x3134, 0x4cb: 0x3445,\n\t0x4cc: 0x394c, 0x4cd: 0x3adb, 0x4ce: 0x395a, 0x4cf: 0x3ae9, 0x4d0: 0x3961, 0x4d1: 0x3af0,\n\t0x4d2: 0x3968, 0x4d3: 0x3af7, 0x4d4: 0x3166, 0x4d5: 0x3477, 0x4d6: 0x316b, 0x4d7: 0x347c,\n\t0x4d8: 0x3175, 0x4d9: 0x3486, 0x4da: 0x4708, 0x4db: 0x4799, 0x4dc: 0x39ae, 0x4dd: 0x3b3d,\n\t0x4de: 0x318e, 0x4df: 0x349f, 0x4e0: 0x3198, 0x4e1: 0x34a9, 0x4e2: 0x4717, 0x4e3: 0x47a8,\n\t0x4e4: 0x39b5, 0x4e5: 0x3b44, 0x4e6: 0x39bc, 0x4e7: 0x3b4b, 0x4e8: 0x39c3, 0x4e9: 0x3b52,\n\t0x4ea: 0x31a7, 0x4eb: 0x34b8, 0x4ec: 0x31b1, 0x4ed: 0x34c7, 0x4ee: 0x31c5, 0x4ef: 0x34db,\n\t0x4f0: 0x31c0, 0x4f1: 0x34d6, 0x4f2: 0x3201, 0x4f3: 0x3517, 0x4f4: 0x3210, 0x4f5: 0x3526,\n\t0x4f6: 0x320b, 0x4f7: 0x3521, 0x4f8: 0x39ca, 0x4f9: 0x3b59, 0x4fa: 0x39d1, 0x4fb: 0x3b60,\n\t0x4fc: 0x3215, 0x4fd: 0x352b, 0x4fe: 0x321a, 0x4ff: 0x3530,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x321f, 0x501: 0x3535, 0x502: 0x3224, 0x503: 0x353a, 0x504: 0x3233, 0x505: 0x3549,\n\t0x506: 0x322e, 0x507: 0x3544, 0x508: 0x3238, 0x509: 0x3553, 0x50a: 0x323d, 0x50b: 0x3558,\n\t0x50c: 0x3242, 0x50d: 0x355d, 0x50e: 0x3260, 0x50f: 0x357b, 0x510: 0x3279, 0x511: 0x3599,\n\t0x512: 0x3288, 0x513: 0x35a8, 0x514: 0x328d, 0x515: 0x35ad, 0x516: 0x3391, 0x517: 0x34bd,\n\t0x518: 0x354e, 0x519: 0x358a, 0x51b: 0x35e8,\n\t0x520: 0x46b8, 0x521: 0x4749, 0x522: 0x2f9a, 0x523: 0x32a6,\n\t0x524: 0x388f, 0x525: 0x3a1e, 0x526: 0x3888, 0x527: 0x3a17, 0x528: 0x389d, 0x529: 0x3a2c,\n\t0x52a: 0x3896, 0x52b: 0x3a25, 0x52c: 0x38d5, 0x52d: 0x3a64, 0x52e: 0x38ab, 0x52f: 0x3a3a,\n\t0x530: 0x38a4, 0x531: 0x3a33, 0x532: 0x38b9, 0x533: 0x3a48, 0x534: 0x38b2, 0x535: 0x3a41,\n\t0x536: 0x38dc, 0x537: 0x3a6b, 0x538: 0x46cc, 0x539: 0x475d, 0x53a: 0x3017, 0x53b: 0x3323,\n\t0x53c: 0x3003, 0x53d: 0x330f, 0x53e: 0x38f1, 0x53f: 0x3a80,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x38ea, 0x541: 0x3a79, 0x542: 0x38ff, 0x543: 0x3a8e, 0x544: 0x38f8, 0x545: 0x3a87,\n\t0x546: 0x3914, 0x547: 0x3aa3, 0x548: 0x30a8, 0x549: 0x33b4, 0x54a: 0x30bc, 0x54b: 0x33c8,\n\t0x54c: 0x46fe, 0x54d: 0x478f, 0x54e: 0x314d, 0x54f: 0x345e, 0x550: 0x3937, 0x551: 0x3ac6,\n\t0x552: 0x3930, 0x553: 0x3abf, 0x554: 0x3945, 0x555: 0x3ad4, 0x556: 0x393e, 0x557: 0x3acd,\n\t0x558: 0x39a0, 0x559: 0x3b2f, 0x55a: 0x3984, 0x55b: 0x3b13, 0x55c: 0x397d, 0x55d: 0x3b0c,\n\t0x55e: 0x3992, 0x55f: 0x3b21, 0x560: 0x398b, 0x561: 0x3b1a, 0x562: 0x3999, 0x563: 0x3b28,\n\t0x564: 0x31fc, 0x565: 0x3512, 0x566: 0x31de, 0x567: 0x34f4, 0x568: 0x39fb, 0x569: 0x3b8a,\n\t0x56a: 0x39f4, 0x56b: 0x3b83, 0x56c: 0x3a09, 0x56d: 0x3b98, 0x56e: 0x3a02, 0x56f: 0x3b91,\n\t0x570: 0x3a10, 0x571: 0x3b9f, 0x572: 0x3247, 0x573: 0x3562, 0x574: 0x326f, 0x575: 0x358f,\n\t0x576: 0x326a, 0x577: 0x3585, 0x578: 0x3256, 0x579: 0x3571,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x481b, 0x581: 0x4821, 0x582: 0x4935, 0x583: 0x494d, 0x584: 0x493d, 0x585: 0x4955,\n\t0x586: 0x4945, 0x587: 0x495d, 0x588: 0x47c1, 0x589: 0x47c7, 0x58a: 0x48a5, 0x58b: 0x48bd,\n\t0x58c: 0x48ad, 0x58d: 0x48c5, 0x58e: 0x48b5, 0x58f: 0x48cd, 0x590: 0x482d, 0x591: 0x4833,\n\t0x592: 0x3dcf, 0x593: 0x3ddf, 0x594: 0x3dd7, 0x595: 0x3de7,\n\t0x598: 0x47cd, 0x599: 0x47d3, 0x59a: 0x3cff, 0x59b: 0x3d0f, 0x59c: 0x3d07, 0x59d: 0x3d17,\n\t0x5a0: 0x4845, 0x5a1: 0x484b, 0x5a2: 0x4965, 0x5a3: 0x497d,\n\t0x5a4: 0x496d, 0x5a5: 0x4985, 0x5a6: 0x4975, 0x5a7: 0x498d, 0x5a8: 0x47d9, 0x5a9: 0x47df,\n\t0x5aa: 0x48d5, 0x5ab: 0x48ed, 0x5ac: 0x48dd, 0x5ad: 0x48f5, 0x5ae: 0x48e5, 0x5af: 0x48fd,\n\t0x5b0: 0x485d, 0x5b1: 0x4863, 0x5b2: 0x3e2f, 0x5b3: 0x3e47, 0x5b4: 0x3e37, 0x5b5: 0x3e4f,\n\t0x5b6: 0x3e3f, 0x5b7: 0x3e57, 0x5b8: 0x47e5, 0x5b9: 0x47eb, 0x5ba: 0x3d2f, 0x5bb: 0x3d47,\n\t0x5bc: 0x3d37, 0x5bd: 0x3d4f, 0x5be: 0x3d3f, 0x5bf: 0x3d57,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x4869, 0x5c1: 0x486f, 0x5c2: 0x3e5f, 0x5c3: 0x3e6f, 0x5c4: 0x3e67, 0x5c5: 0x3e77,\n\t0x5c8: 0x47f1, 0x5c9: 0x47f7, 0x5ca: 0x3d5f, 0x5cb: 0x3d6f,\n\t0x5cc: 0x3d67, 0x5cd: 0x3d77, 0x5d0: 0x487b, 0x5d1: 0x4881,\n\t0x5d2: 0x3e97, 0x5d3: 0x3eaf, 0x5d4: 0x3e9f, 0x5d5: 0x3eb7, 0x5d6: 0x3ea7, 0x5d7: 0x3ebf,\n\t0x5d9: 0x47fd, 0x5db: 0x3d7f, 0x5dd: 0x3d87,\n\t0x5df: 0x3d8f, 0x5e0: 0x4893, 0x5e1: 0x4899, 0x5e2: 0x4995, 0x5e3: 0x49ad,\n\t0x5e4: 0x499d, 0x5e5: 0x49b5, 0x5e6: 0x49a5, 0x5e7: 0x49bd, 0x5e8: 0x4803, 0x5e9: 0x4809,\n\t0x5ea: 0x4905, 0x5eb: 0x491d, 0x5ec: 0x490d, 0x5ed: 0x4925, 0x5ee: 0x4915, 0x5ef: 0x492d,\n\t0x5f0: 0x480f, 0x5f1: 0x4335, 0x5f2: 0x36a8, 0x5f3: 0x433b, 0x5f4: 0x4839, 0x5f5: 0x4341,\n\t0x5f6: 0x36ba, 0x5f7: 0x4347, 0x5f8: 0x36d8, 0x5f9: 0x434d, 0x5fa: 0x36f0, 0x5fb: 0x4353,\n\t0x5fc: 0x4887, 0x5fd: 0x4359,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3db7, 0x601: 0x3dbf, 0x602: 0x419b, 0x603: 0x41b9, 0x604: 0x41a5, 0x605: 0x41c3,\n\t0x606: 0x41af, 0x607: 0x41cd, 0x608: 0x3cef, 0x609: 0x3cf7, 0x60a: 0x40e7, 0x60b: 0x4105,\n\t0x60c: 0x40f1, 0x60d: 0x410f, 0x60e: 0x40fb, 0x60f: 0x4119, 0x610: 0x3dff, 0x611: 0x3e07,\n\t0x612: 0x41d7, 0x613: 0x41f5, 0x614: 0x41e1, 0x615: 0x41ff, 0x616: 0x41eb, 0x617: 0x4209,\n\t0x618: 0x3d1f, 0x619: 0x3d27, 0x61a: 0x4123, 0x61b: 0x4141, 0x61c: 0x412d, 0x61d: 0x414b,\n\t0x61e: 0x4137, 0x61f: 0x4155, 0x620: 0x3ed7, 0x621: 0x3edf, 0x622: 0x4213, 0x623: 0x4231,\n\t0x624: 0x421d, 0x625: 0x423b, 0x626: 0x4227, 0x627: 0x4245, 0x628: 0x3d97, 0x629: 0x3d9f,\n\t0x62a: 0x415f, 0x62b: 0x417d, 0x62c: 0x4169, 0x62d: 0x4187, 0x62e: 0x4173, 0x62f: 0x4191,\n\t0x630: 0x369c, 0x631: 0x3696, 0x632: 0x3da7, 0x633: 0x36a2, 0x634: 0x3daf,\n\t0x636: 0x4827, 0x637: 0x3dc7, 0x638: 0x360c, 0x639: 0x3606, 0x63a: 0x35fa, 0x63b: 0x4305,\n\t0x63c: 0x3612, 0x63d: 0x8100, 0x63e: 0x01d6, 0x63f: 0xa100,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x8100, 0x641: 0x35be, 0x642: 0x3def, 0x643: 0x36b4, 0x644: 0x3df7,\n\t0x646: 0x4851, 0x647: 0x3e0f, 0x648: 0x3618, 0x649: 0x430b, 0x64a: 0x3624, 0x64b: 0x4311,\n\t0x64c: 0x3630, 0x64d: 0x3ba6, 0x64e: 0x3bad, 0x64f: 0x3bb4, 0x650: 0x36cc, 0x651: 0x36c6,\n\t0x652: 0x3e17, 0x653: 0x44fb, 0x656: 0x36d2, 0x657: 0x3e27,\n\t0x658: 0x3648, 0x659: 0x3642, 0x65a: 0x3636, 0x65b: 0x4317, 0x65d: 0x3bbb,\n\t0x65e: 0x3bc2, 0x65f: 0x3bc9, 0x660: 0x3702, 0x661: 0x36fc, 0x662: 0x3e7f, 0x663: 0x4503,\n\t0x664: 0x36e4, 0x665: 0x36ea, 0x666: 0x3708, 0x667: 0x3e8f, 0x668: 0x3678, 0x669: 0x3672,\n\t0x66a: 0x3666, 0x66b: 0x4323, 0x66c: 0x3660, 0x66d: 0x35b2, 0x66e: 0x42ff, 0x66f: 0x0081,\n\t0x672: 0x3ec7, 0x673: 0x370e, 0x674: 0x3ecf,\n\t0x676: 0x489f, 0x677: 0x3ee7, 0x678: 0x3654, 0x679: 0x431d, 0x67a: 0x3684, 0x67b: 0x432f,\n\t0x67c: 0x3690, 0x67d: 0x426d, 0x67e: 0xa100,\n\t// Block 0x1a, offset 0x680\n\t0x681: 0x3c1d, 0x683: 0xa000, 0x684: 0x3c24, 0x685: 0xa000,\n\t0x687: 0x3c2b, 0x688: 0xa000, 0x689: 0x3c32,\n\t0x68d: 0xa000,\n\t0x6a0: 0x2f7c, 0x6a1: 0xa000, 0x6a2: 0x3c40,\n\t0x6a4: 0xa000, 0x6a5: 0xa000,\n\t0x6ad: 0x3c39, 0x6ae: 0x2f77, 0x6af: 0x2f81,\n\t0x6b0: 0x3c47, 0x6b1: 0x3c4e, 0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0x3c55, 0x6b5: 0x3c5c,\n\t0x6b6: 0xa000, 0x6b7: 0xa000, 0x6b8: 0x3c63, 0x6b9: 0x3c6a, 0x6ba: 0xa000, 0x6bb: 0xa000,\n\t0x6bc: 0xa000, 0x6bd: 0xa000,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3c71, 0x6c1: 0x3c78, 0x6c2: 0xa000, 0x6c3: 0xa000, 0x6c4: 0x3c8d, 0x6c5: 0x3c94,\n\t0x6c6: 0xa000, 0x6c7: 0xa000, 0x6c8: 0x3c9b, 0x6c9: 0x3ca2,\n\t0x6d1: 0xa000,\n\t0x6d2: 0xa000,\n\t0x6e2: 0xa000,\n\t0x6e8: 0xa000, 0x6e9: 0xa000,\n\t0x6eb: 0xa000, 0x6ec: 0x3cb7, 0x6ed: 0x3cbe, 0x6ee: 0x3cc5, 0x6ef: 0x3ccc,\n\t0x6f2: 0xa000, 0x6f3: 0xa000, 0x6f4: 0xa000, 0x6f5: 0xa000,\n\t// Block 0x1c, offset 0x700\n\t0x706: 0xa000, 0x70b: 0xa000,\n\t0x70c: 0x3f1f, 0x70d: 0xa000, 0x70e: 0x3f27, 0x70f: 0xa000, 0x710: 0x3f2f, 0x711: 0xa000,\n\t0x712: 0x3f37, 0x713: 0xa000, 0x714: 0x3f3f, 0x715: 0xa000, 0x716: 0x3f47, 0x717: 0xa000,\n\t0x718: 0x3f4f, 0x719: 0xa000, 0x71a: 0x3f57, 0x71b: 0xa000, 0x71c: 0x3f5f, 0x71d: 0xa000,\n\t0x71e: 0x3f67, 0x71f: 0xa000, 0x720: 0x3f6f, 0x721: 0xa000, 0x722: 0x3f77,\n\t0x724: 0xa000, 0x725: 0x3f7f, 0x726: 0xa000, 0x727: 0x3f87, 0x728: 0xa000, 0x729: 0x3f8f,\n\t0x72f: 0xa000,\n\t0x730: 0x3f97, 0x731: 0x3f9f, 0x732: 0xa000, 0x733: 0x3fa7, 0x734: 0x3faf, 0x735: 0xa000,\n\t0x736: 0x3fb7, 0x737: 0x3fbf, 0x738: 0xa000, 0x739: 0x3fc7, 0x73a: 0x3fcf, 0x73b: 0xa000,\n\t0x73c: 0x3fd7, 0x73d: 0x3fdf,\n\t// Block 0x1d, offset 0x740\n\t0x754: 0x3f17,\n\t0x759: 0x9904, 0x75a: 0x9904, 0x75b: 0x8100, 0x75c: 0x8100, 0x75d: 0xa000,\n\t0x75e: 0x3fe7,\n\t0x766: 0xa000,\n\t0x76b: 0xa000, 0x76c: 0x3ff7, 0x76d: 0xa000, 0x76e: 0x3fff, 0x76f: 0xa000,\n\t0x770: 0x4007, 0x771: 0xa000, 0x772: 0x400f, 0x773: 0xa000, 0x774: 0x4017, 0x775: 0xa000,\n\t0x776: 0x401f, 0x777: 0xa000, 0x778: 0x4027, 0x779: 0xa000, 0x77a: 0x402f, 0x77b: 0xa000,\n\t0x77c: 0x4037, 0x77d: 0xa000, 0x77e: 0x403f, 0x77f: 0xa000,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x4047, 0x781: 0xa000, 0x782: 0x404f, 0x784: 0xa000, 0x785: 0x4057,\n\t0x786: 0xa000, 0x787: 0x405f, 0x788: 0xa000, 0x789: 0x4067,\n\t0x78f: 0xa000, 0x790: 0x406f, 0x791: 0x4077,\n\t0x792: 0xa000, 0x793: 0x407f, 0x794: 0x4087, 0x795: 0xa000, 0x796: 0x408f, 0x797: 0x4097,\n\t0x798: 0xa000, 0x799: 0x409f, 0x79a: 0x40a7, 0x79b: 0xa000, 0x79c: 0x40af, 0x79d: 0x40b7,\n\t0x7af: 0xa000,\n\t0x7b0: 0xa000, 0x7b1: 0xa000, 0x7b2: 0xa000, 0x7b4: 0x3fef,\n\t0x7b7: 0x40bf, 0x7b8: 0x40c7, 0x7b9: 0x40cf, 0x7ba: 0x40d7,\n\t0x7bd: 0xa000, 0x7be: 0x40df,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x137a, 0x7c1: 0x0cfe, 0x7c2: 0x13d6, 0x7c3: 0x13a2, 0x7c4: 0x0e5a, 0x7c5: 0x06ee,\n\t0x7c6: 0x08e2, 0x7c7: 0x162e, 0x7c8: 0x162e, 0x7c9: 0x0a0e, 0x7ca: 0x1462, 0x7cb: 0x0946,\n\t0x7cc: 0x0a0a, 0x7cd: 0x0bf2, 0x7ce: 0x0fd2, 0x7cf: 0x1162, 0x7d0: 0x129a, 0x7d1: 0x12d6,\n\t0x7d2: 0x130a, 0x7d3: 0x141e, 0x7d4: 0x0d76, 0x7d5: 0x0e02, 0x7d6: 0x0eae, 0x7d7: 0x0f46,\n\t0x7d8: 0x1262, 0x7d9: 0x144a, 0x7da: 0x1576, 0x7db: 0x0712, 0x7dc: 0x08b6, 0x7dd: 0x0d8a,\n\t0x7de: 0x0ed2, 0x7df: 0x1296, 0x7e0: 0x15c6, 0x7e1: 0x0ab6, 0x7e2: 0x0e7a, 0x7e3: 0x1286,\n\t0x7e4: 0x131a, 0x7e5: 0x0c26, 0x7e6: 0x11be, 0x7e7: 0x12e2, 0x7e8: 0x0b22, 0x7e9: 0x0d12,\n\t0x7ea: 0x0e1a, 0x7eb: 0x0f1e, 0x7ec: 0x142a, 0x7ed: 0x0752, 0x7ee: 0x07ea, 0x7ef: 0x0856,\n\t0x7f0: 0x0c8e, 0x7f1: 0x0d82, 0x7f2: 0x0ece, 0x7f3: 0x0ff2, 0x7f4: 0x117a, 0x7f5: 0x128e,\n\t0x7f6: 0x12a6, 0x7f7: 0x13ca, 0x7f8: 0x14f2, 0x7f9: 0x15a6, 0x7fa: 0x15c2, 0x7fb: 0x102e,\n\t0x7fc: 0x106e, 0x7fd: 0x1126, 0x7fe: 0x1246, 0x7ff: 0x147e,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x15ce, 0x801: 0x134e, 0x802: 0x09ca, 0x803: 0x0b3e, 0x804: 0x10de, 0x805: 0x119e,\n\t0x806: 0x0f02, 0x807: 0x1036, 0x808: 0x139a, 0x809: 0x14ea, 0x80a: 0x09c6, 0x80b: 0x0a92,\n\t0x80c: 0x0d7a, 0x80d: 0x0e2e, 0x80e: 0x0e62, 0x80f: 0x1116, 0x810: 0x113e, 0x811: 0x14aa,\n\t0x812: 0x0852, 0x813: 0x11aa, 0x814: 0x07f6, 0x815: 0x07f2, 0x816: 0x109a, 0x817: 0x112a,\n\t0x818: 0x125e, 0x819: 0x14b2, 0x81a: 0x136a, 0x81b: 0x0c2a, 0x81c: 0x0d76, 0x81d: 0x135a,\n\t0x81e: 0x06fa, 0x81f: 0x0a66, 0x820: 0x0b96, 0x821: 0x0f32, 0x822: 0x0fb2, 0x823: 0x0876,\n\t0x824: 0x103e, 0x825: 0x0762, 0x826: 0x0b7a, 0x827: 0x06da, 0x828: 0x0dee, 0x829: 0x0ca6,\n\t0x82a: 0x1112, 0x82b: 0x08ca, 0x82c: 0x09b6, 0x82d: 0x0ffe, 0x82e: 0x1266, 0x82f: 0x133e,\n\t0x830: 0x0dba, 0x831: 0x13fa, 0x832: 0x0de6, 0x833: 0x0c3a, 0x834: 0x121e, 0x835: 0x0c5a,\n\t0x836: 0x0fae, 0x837: 0x072e, 0x838: 0x07aa, 0x839: 0x07ee, 0x83a: 0x0d56, 0x83b: 0x10fe,\n\t0x83c: 0x11f6, 0x83d: 0x134a, 0x83e: 0x145e, 0x83f: 0x085e,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0912, 0x841: 0x0a1a, 0x842: 0x0b32, 0x843: 0x0cc2, 0x844: 0x0e7e, 0x845: 0x1042,\n\t0x846: 0x149a, 0x847: 0x157e, 0x848: 0x15d2, 0x849: 0x15ea, 0x84a: 0x083a, 0x84b: 0x0cf6,\n\t0x84c: 0x0da6, 0x84d: 0x13ee, 0x84e: 0x0afe, 0x84f: 0x0bda, 0x850: 0x0bf6, 0x851: 0x0c86,\n\t0x852: 0x0e6e, 0x853: 0x0eba, 0x854: 0x0f6a, 0x855: 0x108e, 0x856: 0x1132, 0x857: 0x1196,\n\t0x858: 0x13de, 0x859: 0x126e, 0x85a: 0x1406, 0x85b: 0x1482, 0x85c: 0x0812, 0x85d: 0x083e,\n\t0x85e: 0x0926, 0x85f: 0x0eaa, 0x860: 0x12f6, 0x861: 0x133e, 0x862: 0x0b1e, 0x863: 0x0b8e,\n\t0x864: 0x0c52, 0x865: 0x0db2, 0x866: 0x10da, 0x867: 0x0f26, 0x868: 0x073e, 0x869: 0x0982,\n\t0x86a: 0x0a66, 0x86b: 0x0aca, 0x86c: 0x0b9a, 0x86d: 0x0f42, 0x86e: 0x0f5e, 0x86f: 0x116e,\n\t0x870: 0x118e, 0x871: 0x1466, 0x872: 0x14e6, 0x873: 0x14f6, 0x874: 0x1532, 0x875: 0x0756,\n\t0x876: 0x1082, 0x877: 0x1452, 0x878: 0x14ce, 0x879: 0x0bb2, 0x87a: 0x071a, 0x87b: 0x077a,\n\t0x87c: 0x0a6a, 0x87d: 0x0a8a, 0x87e: 0x0cb2, 0x87f: 0x0d76,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0ec6, 0x881: 0x0fce, 0x882: 0x127a, 0x883: 0x141a, 0x884: 0x1626, 0x885: 0x0ce6,\n\t0x886: 0x14a6, 0x887: 0x0836, 0x888: 0x0d32, 0x889: 0x0d3e, 0x88a: 0x0e12, 0x88b: 0x0e4a,\n\t0x88c: 0x0f4e, 0x88d: 0x0faa, 0x88e: 0x102a, 0x88f: 0x110e, 0x890: 0x153e, 0x891: 0x07b2,\n\t0x892: 0x0c06, 0x893: 0x14b6, 0x894: 0x076a, 0x895: 0x0aae, 0x896: 0x0e32, 0x897: 0x13e2,\n\t0x898: 0x0b6a, 0x899: 0x0bba, 0x89a: 0x0d46, 0x89b: 0x0f32, 0x89c: 0x14be, 0x89d: 0x081a,\n\t0x89e: 0x0902, 0x89f: 0x0a9a, 0x8a0: 0x0cd6, 0x8a1: 0x0d22, 0x8a2: 0x0d62, 0x8a3: 0x0df6,\n\t0x8a4: 0x0f4a, 0x8a5: 0x0fbe, 0x8a6: 0x115a, 0x8a7: 0x12fa, 0x8a8: 0x1306, 0x8a9: 0x145a,\n\t0x8aa: 0x14da, 0x8ab: 0x0886, 0x8ac: 0x0e4e, 0x8ad: 0x0906, 0x8ae: 0x0eca, 0x8af: 0x0f6e,\n\t0x8b0: 0x128a, 0x8b1: 0x14c2, 0x8b2: 0x15ae, 0x8b3: 0x15d6, 0x8b4: 0x0d3a, 0x8b5: 0x0e2a,\n\t0x8b6: 0x11c6, 0x8b7: 0x10ba, 0x8b8: 0x10c6, 0x8b9: 0x10ea, 0x8ba: 0x0f1a, 0x8bb: 0x0ea2,\n\t0x8bc: 0x1366, 0x8bd: 0x0736, 0x8be: 0x122e, 0x8bf: 0x081e,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x080e, 0x8c1: 0x0b0e, 0x8c2: 0x0c2e, 0x8c3: 0x10f6, 0x8c4: 0x0a56, 0x8c5: 0x0e06,\n\t0x8c6: 0x0cf2, 0x8c7: 0x13ea, 0x8c8: 0x12ea, 0x8c9: 0x14ae, 0x8ca: 0x1326, 0x8cb: 0x0b2a,\n\t0x8cc: 0x078a, 0x8cd: 0x095e, 0x8d0: 0x09b2,\n\t0x8d2: 0x0ce2, 0x8d5: 0x07fa, 0x8d6: 0x0f22, 0x8d7: 0x0fe6,\n\t0x8d8: 0x104a, 0x8d9: 0x1066, 0x8da: 0x106a, 0x8db: 0x107e, 0x8dc: 0x14fe, 0x8dd: 0x10ee,\n\t0x8de: 0x1172, 0x8e0: 0x1292, 0x8e2: 0x1356,\n\t0x8e5: 0x140a, 0x8e6: 0x1436,\n\t0x8ea: 0x1552, 0x8eb: 0x1556, 0x8ec: 0x155a, 0x8ed: 0x15be, 0x8ee: 0x142e, 0x8ef: 0x14ca,\n\t0x8f0: 0x075a, 0x8f1: 0x077e, 0x8f2: 0x0792, 0x8f3: 0x084e, 0x8f4: 0x085a, 0x8f5: 0x089a,\n\t0x8f6: 0x094e, 0x8f7: 0x096a, 0x8f8: 0x0972, 0x8f9: 0x09ae, 0x8fa: 0x09ba, 0x8fb: 0x0a96,\n\t0x8fc: 0x0a9e, 0x8fd: 0x0ba6, 0x8fe: 0x0bce, 0x8ff: 0x0bd6,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0bee, 0x901: 0x0c9a, 0x902: 0x0cca, 0x903: 0x0cea, 0x904: 0x0d5a, 0x905: 0x0e1e,\n\t0x906: 0x0e3a, 0x907: 0x0e6a, 0x908: 0x0ebe, 0x909: 0x0ede, 0x90a: 0x0f52, 0x90b: 0x1032,\n\t0x90c: 0x104e, 0x90d: 0x1056, 0x90e: 0x1052, 0x90f: 0x105a, 0x910: 0x105e, 0x911: 0x1062,\n\t0x912: 0x1076, 0x913: 0x107a, 0x914: 0x109e, 0x915: 0x10b2, 0x916: 0x10ce, 0x917: 0x1132,\n\t0x918: 0x113a, 0x919: 0x1142, 0x91a: 0x1156, 0x91b: 0x117e, 0x91c: 0x11ce, 0x91d: 0x1202,\n\t0x91e: 0x1202, 0x91f: 0x126a, 0x920: 0x1312, 0x921: 0x132a, 0x922: 0x135e, 0x923: 0x1362,\n\t0x924: 0x13a6, 0x925: 0x13aa, 0x926: 0x1402, 0x927: 0x140a, 0x928: 0x14de, 0x929: 0x1522,\n\t0x92a: 0x153a, 0x92b: 0x0b9e, 0x92c: 0x1721, 0x92d: 0x11e6,\n\t0x930: 0x06e2, 0x931: 0x07e6, 0x932: 0x07a6, 0x933: 0x074e, 0x934: 0x078e, 0x935: 0x07ba,\n\t0x936: 0x084a, 0x937: 0x0866, 0x938: 0x094e, 0x939: 0x093a, 0x93a: 0x094a, 0x93b: 0x0966,\n\t0x93c: 0x09b2, 0x93d: 0x09c2, 0x93e: 0x0a06, 0x93f: 0x0a12,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0a2e, 0x941: 0x0a3e, 0x942: 0x0b26, 0x943: 0x0b2e, 0x944: 0x0b5e, 0x945: 0x0b7e,\n\t0x946: 0x0bae, 0x947: 0x0bc6, 0x948: 0x0bb6, 0x949: 0x0bd6, 0x94a: 0x0bca, 0x94b: 0x0bee,\n\t0x94c: 0x0c0a, 0x94d: 0x0c62, 0x94e: 0x0c6e, 0x94f: 0x0c76, 0x950: 0x0c9e, 0x951: 0x0ce2,\n\t0x952: 0x0d12, 0x953: 0x0d16, 0x954: 0x0d2a, 0x955: 0x0daa, 0x956: 0x0dba, 0x957: 0x0e12,\n\t0x958: 0x0e5e, 0x959: 0x0e56, 0x95a: 0x0e6a, 0x95b: 0x0e86, 0x95c: 0x0ebe, 0x95d: 0x1016,\n\t0x95e: 0x0ee2, 0x95f: 0x0f16, 0x960: 0x0f22, 0x961: 0x0f62, 0x962: 0x0f7e, 0x963: 0x0fa2,\n\t0x964: 0x0fc6, 0x965: 0x0fca, 0x966: 0x0fe6, 0x967: 0x0fea, 0x968: 0x0ffa, 0x969: 0x100e,\n\t0x96a: 0x100a, 0x96b: 0x103a, 0x96c: 0x10b6, 0x96d: 0x10ce, 0x96e: 0x10e6, 0x96f: 0x111e,\n\t0x970: 0x1132, 0x971: 0x114e, 0x972: 0x117e, 0x973: 0x1232, 0x974: 0x125a, 0x975: 0x12ce,\n\t0x976: 0x1316, 0x977: 0x1322, 0x978: 0x132a, 0x979: 0x1342, 0x97a: 0x1356, 0x97b: 0x1346,\n\t0x97c: 0x135e, 0x97d: 0x135a, 0x97e: 0x1352, 0x97f: 0x1362,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x136e, 0x981: 0x13aa, 0x982: 0x13e6, 0x983: 0x1416, 0x984: 0x144e, 0x985: 0x146e,\n\t0x986: 0x14ba, 0x987: 0x14de, 0x988: 0x14fe, 0x989: 0x1512, 0x98a: 0x1522, 0x98b: 0x152e,\n\t0x98c: 0x153a, 0x98d: 0x158e, 0x98e: 0x162e, 0x98f: 0x16b8, 0x990: 0x16b3, 0x991: 0x16e5,\n\t0x992: 0x060a, 0x993: 0x0632, 0x994: 0x0636, 0x995: 0x1767, 0x996: 0x1794, 0x997: 0x180c,\n\t0x998: 0x161a, 0x999: 0x162a,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x06fe, 0x9c1: 0x06f6, 0x9c2: 0x0706, 0x9c3: 0x164a, 0x9c4: 0x074a, 0x9c5: 0x075a,\n\t0x9c6: 0x075e, 0x9c7: 0x0766, 0x9c8: 0x076e, 0x9c9: 0x0772, 0x9ca: 0x077e, 0x9cb: 0x0776,\n\t0x9cc: 0x05b6, 0x9cd: 0x165e, 0x9ce: 0x0792, 0x9cf: 0x0796, 0x9d0: 0x079a, 0x9d1: 0x07b6,\n\t0x9d2: 0x164f, 0x9d3: 0x05ba, 0x9d4: 0x07a2, 0x9d5: 0x07c2, 0x9d6: 0x1659, 0x9d7: 0x07d2,\n\t0x9d8: 0x07da, 0x9d9: 0x073a, 0x9da: 0x07e2, 0x9db: 0x07e6, 0x9dc: 0x1834, 0x9dd: 0x0802,\n\t0x9de: 0x080a, 0x9df: 0x05c2, 0x9e0: 0x0822, 0x9e1: 0x0826, 0x9e2: 0x082e, 0x9e3: 0x0832,\n\t0x9e4: 0x05c6, 0x9e5: 0x084a, 0x9e6: 0x084e, 0x9e7: 0x085a, 0x9e8: 0x0866, 0x9e9: 0x086a,\n\t0x9ea: 0x086e, 0x9eb: 0x0876, 0x9ec: 0x0896, 0x9ed: 0x089a, 0x9ee: 0x08a2, 0x9ef: 0x08b2,\n\t0x9f0: 0x08ba, 0x9f1: 0x08be, 0x9f2: 0x08be, 0x9f3: 0x08be, 0x9f4: 0x166d, 0x9f5: 0x0e96,\n\t0x9f6: 0x08d2, 0x9f7: 0x08da, 0x9f8: 0x1672, 0x9f9: 0x08e6, 0x9fa: 0x08ee, 0x9fb: 0x08f6,\n\t0x9fc: 0x091e, 0x9fd: 0x090a, 0x9fe: 0x0916, 0x9ff: 0x091a,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0922, 0xa01: 0x092a, 0xa02: 0x092e, 0xa03: 0x0936, 0xa04: 0x093e, 0xa05: 0x0942,\n\t0xa06: 0x0942, 0xa07: 0x094a, 0xa08: 0x0952, 0xa09: 0x0956, 0xa0a: 0x0962, 0xa0b: 0x0986,\n\t0xa0c: 0x096a, 0xa0d: 0x098a, 0xa0e: 0x096e, 0xa0f: 0x0976, 0xa10: 0x080e, 0xa11: 0x09d2,\n\t0xa12: 0x099a, 0xa13: 0x099e, 0xa14: 0x09a2, 0xa15: 0x0996, 0xa16: 0x09aa, 0xa17: 0x09a6,\n\t0xa18: 0x09be, 0xa19: 0x1677, 0xa1a: 0x09da, 0xa1b: 0x09de, 0xa1c: 0x09e6, 0xa1d: 0x09f2,\n\t0xa1e: 0x09fa, 0xa1f: 0x0a16, 0xa20: 0x167c, 0xa21: 0x1681, 0xa22: 0x0a22, 0xa23: 0x0a26,\n\t0xa24: 0x0a2a, 0xa25: 0x0a1e, 0xa26: 0x0a32, 0xa27: 0x05ca, 0xa28: 0x05ce, 0xa29: 0x0a3a,\n\t0xa2a: 0x0a42, 0xa2b: 0x0a42, 0xa2c: 0x1686, 0xa2d: 0x0a5e, 0xa2e: 0x0a62, 0xa2f: 0x0a66,\n\t0xa30: 0x0a6e, 0xa31: 0x168b, 0xa32: 0x0a76, 0xa33: 0x0a7a, 0xa34: 0x0b52, 0xa35: 0x0a82,\n\t0xa36: 0x05d2, 0xa37: 0x0a8e, 0xa38: 0x0a9e, 0xa39: 0x0aaa, 0xa3a: 0x0aa6, 0xa3b: 0x1695,\n\t0xa3c: 0x0ab2, 0xa3d: 0x169a, 0xa3e: 0x0abe, 0xa3f: 0x0aba,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0ac2, 0xa41: 0x0ad2, 0xa42: 0x0ad6, 0xa43: 0x05d6, 0xa44: 0x0ae6, 0xa45: 0x0aee,\n\t0xa46: 0x0af2, 0xa47: 0x0af6, 0xa48: 0x05da, 0xa49: 0x169f, 0xa4a: 0x05de, 0xa4b: 0x0b12,\n\t0xa4c: 0x0b16, 0xa4d: 0x0b1a, 0xa4e: 0x0b22, 0xa4f: 0x1866, 0xa50: 0x0b3a, 0xa51: 0x16a9,\n\t0xa52: 0x16a9, 0xa53: 0x11da, 0xa54: 0x0b4a, 0xa55: 0x0b4a, 0xa56: 0x05e2, 0xa57: 0x16cc,\n\t0xa58: 0x179e, 0xa59: 0x0b5a, 0xa5a: 0x0b62, 0xa5b: 0x05e6, 0xa5c: 0x0b76, 0xa5d: 0x0b86,\n\t0xa5e: 0x0b8a, 0xa5f: 0x0b92, 0xa60: 0x0ba2, 0xa61: 0x05ee, 0xa62: 0x05ea, 0xa63: 0x0ba6,\n\t0xa64: 0x16ae, 0xa65: 0x0baa, 0xa66: 0x0bbe, 0xa67: 0x0bc2, 0xa68: 0x0bc6, 0xa69: 0x0bc2,\n\t0xa6a: 0x0bd2, 0xa6b: 0x0bd6, 0xa6c: 0x0be6, 0xa6d: 0x0bde, 0xa6e: 0x0be2, 0xa6f: 0x0bea,\n\t0xa70: 0x0bee, 0xa71: 0x0bf2, 0xa72: 0x0bfe, 0xa73: 0x0c02, 0xa74: 0x0c1a, 0xa75: 0x0c22,\n\t0xa76: 0x0c32, 0xa77: 0x0c46, 0xa78: 0x16bd, 0xa79: 0x0c42, 0xa7a: 0x0c36, 0xa7b: 0x0c4e,\n\t0xa7c: 0x0c56, 0xa7d: 0x0c6a, 0xa7e: 0x16c2, 0xa7f: 0x0c72,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x0c66, 0xa81: 0x0c5e, 0xa82: 0x05f2, 0xa83: 0x0c7a, 0xa84: 0x0c82, 0xa85: 0x0c8a,\n\t0xa86: 0x0c7e, 0xa87: 0x05f6, 0xa88: 0x0c9a, 0xa89: 0x0ca2, 0xa8a: 0x16c7, 0xa8b: 0x0cce,\n\t0xa8c: 0x0d02, 0xa8d: 0x0cde, 0xa8e: 0x0602, 0xa8f: 0x0cea, 0xa90: 0x05fe, 0xa91: 0x05fa,\n\t0xa92: 0x07c6, 0xa93: 0x07ca, 0xa94: 0x0d06, 0xa95: 0x0cee, 0xa96: 0x11ae, 0xa97: 0x0666,\n\t0xa98: 0x0d12, 0xa99: 0x0d16, 0xa9a: 0x0d1a, 0xa9b: 0x0d2e, 0xa9c: 0x0d26, 0xa9d: 0x16e0,\n\t0xa9e: 0x0606, 0xa9f: 0x0d42, 0xaa0: 0x0d36, 0xaa1: 0x0d52, 0xaa2: 0x0d5a, 0xaa3: 0x16ea,\n\t0xaa4: 0x0d5e, 0xaa5: 0x0d4a, 0xaa6: 0x0d66, 0xaa7: 0x060a, 0xaa8: 0x0d6a, 0xaa9: 0x0d6e,\n\t0xaaa: 0x0d72, 0xaab: 0x0d7e, 0xaac: 0x16ef, 0xaad: 0x0d86, 0xaae: 0x060e, 0xaaf: 0x0d92,\n\t0xab0: 0x16f4, 0xab1: 0x0d96, 0xab2: 0x0612, 0xab3: 0x0da2, 0xab4: 0x0dae, 0xab5: 0x0dba,\n\t0xab6: 0x0dbe, 0xab7: 0x16f9, 0xab8: 0x1690, 0xab9: 0x16fe, 0xaba: 0x0dde, 0xabb: 0x1703,\n\t0xabc: 0x0dea, 0xabd: 0x0df2, 0xabe: 0x0de2, 0xabf: 0x0dfe,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x0e0e, 0xac1: 0x0e1e, 0xac2: 0x0e12, 0xac3: 0x0e16, 0xac4: 0x0e22, 0xac5: 0x0e26,\n\t0xac6: 0x1708, 0xac7: 0x0e0a, 0xac8: 0x0e3e, 0xac9: 0x0e42, 0xaca: 0x0616, 0xacb: 0x0e56,\n\t0xacc: 0x0e52, 0xacd: 0x170d, 0xace: 0x0e36, 0xacf: 0x0e72, 0xad0: 0x1712, 0xad1: 0x1717,\n\t0xad2: 0x0e76, 0xad3: 0x0e8a, 0xad4: 0x0e86, 0xad5: 0x0e82, 0xad6: 0x061a, 0xad7: 0x0e8e,\n\t0xad8: 0x0e9e, 0xad9: 0x0e9a, 0xada: 0x0ea6, 0xadb: 0x1654, 0xadc: 0x0eb6, 0xadd: 0x171c,\n\t0xade: 0x0ec2, 0xadf: 0x1726, 0xae0: 0x0ed6, 0xae1: 0x0ee2, 0xae2: 0x0ef6, 0xae3: 0x172b,\n\t0xae4: 0x0f0a, 0xae5: 0x0f0e, 0xae6: 0x1730, 0xae7: 0x1735, 0xae8: 0x0f2a, 0xae9: 0x0f3a,\n\t0xaea: 0x061e, 0xaeb: 0x0f3e, 0xaec: 0x0622, 0xaed: 0x0622, 0xaee: 0x0f56, 0xaef: 0x0f5a,\n\t0xaf0: 0x0f62, 0xaf1: 0x0f66, 0xaf2: 0x0f72, 0xaf3: 0x0626, 0xaf4: 0x0f8a, 0xaf5: 0x173a,\n\t0xaf6: 0x0fa6, 0xaf7: 0x173f, 0xaf8: 0x0fb2, 0xaf9: 0x16a4, 0xafa: 0x0fc2, 0xafb: 0x1744,\n\t0xafc: 0x1749, 0xafd: 0x174e, 0xafe: 0x062a, 0xaff: 0x062e,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x0ffa, 0xb01: 0x1758, 0xb02: 0x1753, 0xb03: 0x175d, 0xb04: 0x1762, 0xb05: 0x1002,\n\t0xb06: 0x1006, 0xb07: 0x1006, 0xb08: 0x100e, 0xb09: 0x0636, 0xb0a: 0x1012, 0xb0b: 0x063a,\n\t0xb0c: 0x063e, 0xb0d: 0x176c, 0xb0e: 0x1026, 0xb0f: 0x102e, 0xb10: 0x103a, 0xb11: 0x0642,\n\t0xb12: 0x1771, 0xb13: 0x105e, 0xb14: 0x1776, 0xb15: 0x177b, 0xb16: 0x107e, 0xb17: 0x1096,\n\t0xb18: 0x0646, 0xb19: 0x109e, 0xb1a: 0x10a2, 0xb1b: 0x10a6, 0xb1c: 0x1780, 0xb1d: 0x1785,\n\t0xb1e: 0x1785, 0xb1f: 0x10be, 0xb20: 0x064a, 0xb21: 0x178a, 0xb22: 0x10d2, 0xb23: 0x10d6,\n\t0xb24: 0x064e, 0xb25: 0x178f, 0xb26: 0x10f2, 0xb27: 0x0652, 0xb28: 0x1102, 0xb29: 0x10fa,\n\t0xb2a: 0x110a, 0xb2b: 0x1799, 0xb2c: 0x1122, 0xb2d: 0x0656, 0xb2e: 0x112e, 0xb2f: 0x1136,\n\t0xb30: 0x1146, 0xb31: 0x065a, 0xb32: 0x17a3, 0xb33: 0x17a8, 0xb34: 0x065e, 0xb35: 0x17ad,\n\t0xb36: 0x115e, 0xb37: 0x17b2, 0xb38: 0x116a, 0xb39: 0x1176, 0xb3a: 0x117e, 0xb3b: 0x17b7,\n\t0xb3c: 0x17bc, 0xb3d: 0x1192, 0xb3e: 0x17c1, 0xb3f: 0x119a,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x16d1, 0xb41: 0x0662, 0xb42: 0x11b2, 0xb43: 0x11b6, 0xb44: 0x066a, 0xb45: 0x11ba,\n\t0xb46: 0x0a36, 0xb47: 0x17c6, 0xb48: 0x17cb, 0xb49: 0x16d6, 0xb4a: 0x16db, 0xb4b: 0x11da,\n\t0xb4c: 0x11de, 0xb4d: 0x13f6, 0xb4e: 0x066e, 0xb4f: 0x120a, 0xb50: 0x1206, 0xb51: 0x120e,\n\t0xb52: 0x0842, 0xb53: 0x1212, 0xb54: 0x1216, 0xb55: 0x121a, 0xb56: 0x1222, 0xb57: 0x17d0,\n\t0xb58: 0x121e, 0xb59: 0x1226, 0xb5a: 0x123a, 0xb5b: 0x123e, 0xb5c: 0x122a, 0xb5d: 0x1242,\n\t0xb5e: 0x1256, 0xb5f: 0x126a, 0xb60: 0x1236, 0xb61: 0x124a, 0xb62: 0x124e, 0xb63: 0x1252,\n\t0xb64: 0x17d5, 0xb65: 0x17df, 0xb66: 0x17da, 0xb67: 0x0672, 0xb68: 0x1272, 0xb69: 0x1276,\n\t0xb6a: 0x127e, 0xb6b: 0x17f3, 0xb6c: 0x1282, 0xb6d: 0x17e4, 0xb6e: 0x0676, 0xb6f: 0x067a,\n\t0xb70: 0x17e9, 0xb71: 0x17ee, 0xb72: 0x067e, 0xb73: 0x12a2, 0xb74: 0x12a6, 0xb75: 0x12aa,\n\t0xb76: 0x12ae, 0xb77: 0x12ba, 0xb78: 0x12b6, 0xb79: 0x12c2, 0xb7a: 0x12be, 0xb7b: 0x12ce,\n\t0xb7c: 0x12c6, 0xb7d: 0x12ca, 0xb7e: 0x12d2, 0xb7f: 0x0682,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x12da, 0xb81: 0x12de, 0xb82: 0x0686, 0xb83: 0x12ee, 0xb84: 0x12f2, 0xb85: 0x17f8,\n\t0xb86: 0x12fe, 0xb87: 0x1302, 0xb88: 0x068a, 0xb89: 0x130e, 0xb8a: 0x05be, 0xb8b: 0x17fd,\n\t0xb8c: 0x1802, 0xb8d: 0x068e, 0xb8e: 0x0692, 0xb8f: 0x133a, 0xb90: 0x1352, 0xb91: 0x136e,\n\t0xb92: 0x137e, 0xb93: 0x1807, 0xb94: 0x1392, 0xb95: 0x1396, 0xb96: 0x13ae, 0xb97: 0x13ba,\n\t0xb98: 0x1811, 0xb99: 0x1663, 0xb9a: 0x13c6, 0xb9b: 0x13c2, 0xb9c: 0x13ce, 0xb9d: 0x1668,\n\t0xb9e: 0x13da, 0xb9f: 0x13e6, 0xba0: 0x1816, 0xba1: 0x181b, 0xba2: 0x1426, 0xba3: 0x1432,\n\t0xba4: 0x143a, 0xba5: 0x1820, 0xba6: 0x143e, 0xba7: 0x146a, 0xba8: 0x1476, 0xba9: 0x147a,\n\t0xbaa: 0x1472, 0xbab: 0x1486, 0xbac: 0x148a, 0xbad: 0x1825, 0xbae: 0x1496, 0xbaf: 0x0696,\n\t0xbb0: 0x149e, 0xbb1: 0x182a, 0xbb2: 0x069a, 0xbb3: 0x14d6, 0xbb4: 0x0ac6, 0xbb5: 0x14ee,\n\t0xbb6: 0x182f, 0xbb7: 0x1839, 0xbb8: 0x069e, 0xbb9: 0x06a2, 0xbba: 0x1516, 0xbbb: 0x183e,\n\t0xbbc: 0x06a6, 0xbbd: 0x1843, 0xbbe: 0x152e, 0xbbf: 0x152e,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x1536, 0xbc1: 0x1848, 0xbc2: 0x154e, 0xbc3: 0x06aa, 0xbc4: 0x155e, 0xbc5: 0x156a,\n\t0xbc6: 0x1572, 0xbc7: 0x157a, 0xbc8: 0x06ae, 0xbc9: 0x184d, 0xbca: 0x158e, 0xbcb: 0x15aa,\n\t0xbcc: 0x15b6, 0xbcd: 0x06b2, 0xbce: 0x06b6, 0xbcf: 0x15ba, 0xbd0: 0x1852, 0xbd1: 0x06ba,\n\t0xbd2: 0x1857, 0xbd3: 0x185c, 0xbd4: 0x1861, 0xbd5: 0x15de, 0xbd6: 0x06be, 0xbd7: 0x15f2,\n\t0xbd8: 0x15fa, 0xbd9: 0x15fe, 0xbda: 0x1606, 0xbdb: 0x160e, 0xbdc: 0x1616, 0xbdd: 0x186b,\n}\n\n// nfcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x2e, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2f, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x30, 0xcb: 0x31, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x32,\n\t0xd0: 0x09, 0xd1: 0x33, 0xd2: 0x34, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x35,\n\t0xd8: 0x36, 0xd9: 0x0c, 0xdb: 0x37, 0xdc: 0x38, 0xdd: 0x39, 0xdf: 0x3a,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x3b, 0x121: 0x3c, 0x123: 0x0d, 0x124: 0x3d, 0x125: 0x3e, 0x126: 0x3f, 0x127: 0x40,\n\t0x128: 0x41, 0x129: 0x42, 0x12a: 0x43, 0x12b: 0x44, 0x12c: 0x3f, 0x12d: 0x45, 0x12e: 0x46, 0x12f: 0x47,\n\t0x131: 0x48, 0x132: 0x49, 0x133: 0x4a, 0x134: 0x4b, 0x135: 0x4c, 0x137: 0x4d,\n\t0x138: 0x4e, 0x139: 0x4f, 0x13a: 0x50, 0x13b: 0x51, 0x13c: 0x52, 0x13d: 0x53, 0x13e: 0x54, 0x13f: 0x55,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x56, 0x142: 0x57, 0x144: 0x58, 0x145: 0x59, 0x146: 0x5a, 0x147: 0x5b,\n\t0x14d: 0x5c,\n\t0x15c: 0x5d, 0x15f: 0x5e,\n\t0x162: 0x5f, 0x164: 0x60,\n\t0x168: 0x61, 0x169: 0x62, 0x16a: 0x63, 0x16b: 0x64, 0x16c: 0x0e, 0x16d: 0x65, 0x16e: 0x66, 0x16f: 0x67,\n\t0x170: 0x68, 0x173: 0x69, 0x177: 0x0f,\n\t0x178: 0x10, 0x179: 0x11, 0x17a: 0x12, 0x17b: 0x13, 0x17c: 0x14, 0x17d: 0x15, 0x17e: 0x16, 0x17f: 0x17,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x6a, 0x183: 0x6b, 0x184: 0x6c, 0x186: 0x6d, 0x187: 0x6e,\n\t0x188: 0x6f, 0x189: 0x18, 0x18a: 0x19, 0x18b: 0x70, 0x18c: 0x71,\n\t0x1ab: 0x72,\n\t0x1b3: 0x73, 0x1b5: 0x74, 0x1b7: 0x75,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x76, 0x1c1: 0x1a, 0x1c2: 0x1b, 0x1c3: 0x1c, 0x1c4: 0x77, 0x1c5: 0x78,\n\t0x1c9: 0x79, 0x1cc: 0x7a, 0x1cd: 0x7b,\n\t// Block 0x8, offset 0x200\n\t0x219: 0x7c, 0x21a: 0x7d, 0x21b: 0x7e,\n\t0x220: 0x7f, 0x223: 0x80, 0x224: 0x81, 0x225: 0x82, 0x226: 0x83, 0x227: 0x84,\n\t0x22a: 0x85, 0x22b: 0x86, 0x22f: 0x87,\n\t0x230: 0x88, 0x231: 0x89, 0x232: 0x8a, 0x233: 0x8b, 0x234: 0x8c, 0x235: 0x8d, 0x236: 0x8e, 0x237: 0x88,\n\t0x238: 0x89, 0x239: 0x8a, 0x23a: 0x8b, 0x23b: 0x8c, 0x23c: 0x8d, 0x23d: 0x8e, 0x23e: 0x88, 0x23f: 0x89,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x8a, 0x241: 0x8b, 0x242: 0x8c, 0x243: 0x8d, 0x244: 0x8e, 0x245: 0x88, 0x246: 0x89, 0x247: 0x8a,\n\t0x248: 0x8b, 0x249: 0x8c, 0x24a: 0x8d, 0x24b: 0x8e, 0x24c: 0x88, 0x24d: 0x89, 0x24e: 0x8a, 0x24f: 0x8b,\n\t0x250: 0x8c, 0x251: 0x8d, 0x252: 0x8e, 0x253: 0x88, 0x254: 0x89, 0x255: 0x8a, 0x256: 0x8b, 0x257: 0x8c,\n\t0x258: 0x8d, 0x259: 0x8e, 0x25a: 0x88, 0x25b: 0x89, 0x25c: 0x8a, 0x25d: 0x8b, 0x25e: 0x8c, 0x25f: 0x8d,\n\t0x260: 0x8e, 0x261: 0x88, 0x262: 0x89, 0x263: 0x8a, 0x264: 0x8b, 0x265: 0x8c, 0x266: 0x8d, 0x267: 0x8e,\n\t0x268: 0x88, 0x269: 0x89, 0x26a: 0x8a, 0x26b: 0x8b, 0x26c: 0x8c, 0x26d: 0x8d, 0x26e: 0x8e, 0x26f: 0x88,\n\t0x270: 0x89, 0x271: 0x8a, 0x272: 0x8b, 0x273: 0x8c, 0x274: 0x8d, 0x275: 0x8e, 0x276: 0x88, 0x277: 0x89,\n\t0x278: 0x8a, 0x279: 0x8b, 0x27a: 0x8c, 0x27b: 0x8d, 0x27c: 0x8e, 0x27d: 0x88, 0x27e: 0x89, 0x27f: 0x8a,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x8b, 0x281: 0x8c, 0x282: 0x8d, 0x283: 0x8e, 0x284: 0x88, 0x285: 0x89, 0x286: 0x8a, 0x287: 0x8b,\n\t0x288: 0x8c, 0x289: 0x8d, 0x28a: 0x8e, 0x28b: 0x88, 0x28c: 0x89, 0x28d: 0x8a, 0x28e: 0x8b, 0x28f: 0x8c,\n\t0x290: 0x8d, 0x291: 0x8e, 0x292: 0x88, 0x293: 0x89, 0x294: 0x8a, 0x295: 0x8b, 0x296: 0x8c, 0x297: 0x8d,\n\t0x298: 0x8e, 0x299: 0x88, 0x29a: 0x89, 0x29b: 0x8a, 0x29c: 0x8b, 0x29d: 0x8c, 0x29e: 0x8d, 0x29f: 0x8e,\n\t0x2a0: 0x88, 0x2a1: 0x89, 0x2a2: 0x8a, 0x2a3: 0x8b, 0x2a4: 0x8c, 0x2a5: 0x8d, 0x2a6: 0x8e, 0x2a7: 0x88,\n\t0x2a8: 0x89, 0x2a9: 0x8a, 0x2aa: 0x8b, 0x2ab: 0x8c, 0x2ac: 0x8d, 0x2ad: 0x8e, 0x2ae: 0x88, 0x2af: 0x89,\n\t0x2b0: 0x8a, 0x2b1: 0x8b, 0x2b2: 0x8c, 0x2b3: 0x8d, 0x2b4: 0x8e, 0x2b5: 0x88, 0x2b6: 0x89, 0x2b7: 0x8a,\n\t0x2b8: 0x8b, 0x2b9: 0x8c, 0x2ba: 0x8d, 0x2bb: 0x8e, 0x2bc: 0x88, 0x2bd: 0x89, 0x2be: 0x8a, 0x2bf: 0x8b,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x8c, 0x2c1: 0x8d, 0x2c2: 0x8e, 0x2c3: 0x88, 0x2c4: 0x89, 0x2c5: 0x8a, 0x2c6: 0x8b, 0x2c7: 0x8c,\n\t0x2c8: 0x8d, 0x2c9: 0x8e, 0x2ca: 0x88, 0x2cb: 0x89, 0x2cc: 0x8a, 0x2cd: 0x8b, 0x2ce: 0x8c, 0x2cf: 0x8d,\n\t0x2d0: 0x8e, 0x2d1: 0x88, 0x2d2: 0x89, 0x2d3: 0x8a, 0x2d4: 0x8b, 0x2d5: 0x8c, 0x2d6: 0x8d, 0x2d7: 0x8e,\n\t0x2d8: 0x88, 0x2d9: 0x89, 0x2da: 0x8a, 0x2db: 0x8b, 0x2dc: 0x8c, 0x2dd: 0x8d, 0x2de: 0x8f,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x1d, 0x325: 0x1e, 0x326: 0x1f, 0x327: 0x20,\n\t0x328: 0x21, 0x329: 0x22, 0x32a: 0x23, 0x32b: 0x24, 0x32c: 0x90, 0x32d: 0x91, 0x32e: 0x92,\n\t0x331: 0x93, 0x332: 0x94, 0x333: 0x95, 0x334: 0x96,\n\t0x338: 0x97, 0x339: 0x98, 0x33a: 0x99, 0x33b: 0x9a, 0x33e: 0x9b, 0x33f: 0x9c,\n\t// Block 0xd, offset 0x340\n\t0x347: 0x9d,\n\t0x34b: 0x9e, 0x34d: 0x9f,\n\t0x368: 0xa0, 0x36b: 0xa1,\n\t0x374: 0xa2,\n\t0x37a: 0xa3, 0x37d: 0xa4,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xa5, 0x382: 0xa6, 0x384: 0xa7, 0x385: 0x83, 0x387: 0xa8,\n\t0x388: 0xa9, 0x38b: 0xaa, 0x38c: 0xab, 0x38d: 0xac,\n\t0x391: 0xad, 0x392: 0xae, 0x393: 0xaf, 0x396: 0xb0, 0x397: 0xb1,\n\t0x398: 0x74, 0x39a: 0xb2, 0x39c: 0xb3,\n\t0x3a0: 0xb4, 0x3a4: 0xb5, 0x3a5: 0xb6, 0x3a7: 0xb7,\n\t0x3a8: 0xb8, 0x3a9: 0xb9, 0x3aa: 0xba,\n\t0x3b0: 0x74, 0x3b5: 0xbb, 0x3b6: 0xbc,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xbd, 0x3ec: 0xbe,\n\t0x3ff: 0xbf,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xc0,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xc1, 0x446: 0xc2, 0x447: 0xc3,\n\t0x449: 0xc4,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xc5, 0x484: 0xbe,\n\t0x48b: 0xc6,\n\t0x4a3: 0xc7, 0x4a5: 0xc8,\n\t// Block 0x13, offset 0x4c0\n\t0x4c8: 0xc9,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x25, 0x521: 0x26, 0x522: 0x27, 0x523: 0x28, 0x524: 0x29, 0x525: 0x2a, 0x526: 0x2b, 0x527: 0x2c,\n\t0x528: 0x2d,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfcSparseOffset: 156 entries, 312 bytes\nvar nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x63, 0x68, 0x6a, 0x72, 0x79, 0x7c, 0x84, 0x88, 0x8c, 0x8e, 0x90, 0x99, 0x9d, 0xa4, 0xa9, 0xac, 0xb6, 0xb9, 0xc0, 0xc8, 0xcb, 0xcd, 0xd0, 0xd2, 0xd7, 0xe8, 0xf4, 0xf6, 0xfc, 0xfe, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10b, 0x10e, 0x110, 0x113, 0x116, 0x11a, 0x120, 0x122, 0x12b, 0x12d, 0x130, 0x132, 0x13d, 0x141, 0x14f, 0x152, 0x158, 0x15e, 0x169, 0x16d, 0x16f, 0x171, 0x173, 0x175, 0x177, 0x17d, 0x181, 0x183, 0x185, 0x18d, 0x191, 0x194, 0x196, 0x198, 0x19b, 0x19e, 0x1a0, 0x1a2, 0x1a4, 0x1a6, 0x1ac, 0x1af, 0x1b1, 0x1b8, 0x1be, 0x1c4, 0x1cc, 0x1d2, 0x1d8, 0x1de, 0x1e2, 0x1f0, 0x1f9, 0x1fc, 0x1ff, 0x201, 0x204, 0x206, 0x20a, 0x20f, 0x211, 0x213, 0x218, 0x21e, 0x220, 0x222, 0x224, 0x22a, 0x22d, 0x22f, 0x231, 0x237, 0x23a, 0x242, 0x249, 0x24c, 0x24f, 0x251, 0x254, 0x25c, 0x260, 0x267, 0x26a, 0x270, 0x272, 0x275, 0x277, 0x27a, 0x27f, 0x281, 0x283, 0x285, 0x287, 0x289, 0x28c, 0x28e, 0x290, 0x292, 0x294, 0x296, 0x2a3, 0x2ad, 0x2af, 0x2b1, 0x2b7, 0x2b9, 0x2bb, 0x2be}\n\n// nfcSparseValues: 704 entries, 2816 bytes\nvar nfcSparseValues = [704]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0xa100, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8100, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb8, hi: 0xb8},\n\t// Block 0x1, offset 0x5\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46f9, lo: 0xa0, hi: 0xa1},\n\t{value: 0x472b, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t// Block 0x3, offset 0xb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x98, hi: 0x9d},\n\t// Block 0x4, offset 0xd\n\t{value: 0x0006, lo: 0x0a},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x85, hi: 0x85},\n\t{value: 0xa000, lo: 0x89, hi: 0x89},\n\t{value: 0x4857, lo: 0x8a, hi: 0x8a},\n\t{value: 0x4875, lo: 0x8b, hi: 0x8b},\n\t{value: 0x36de, lo: 0x8c, hi: 0x8c},\n\t{value: 0x36f6, lo: 0x8d, hi: 0x8d},\n\t{value: 0x488d, lo: 0x8e, hi: 0x8e},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3714, lo: 0x93, hi: 0x94},\n\t// Block 0x5, offset 0x18\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37bc, lo: 0x90, hi: 0x90},\n\t{value: 0x37c8, lo: 0x91, hi: 0x91},\n\t{value: 0x37b6, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x382e, lo: 0x97, hi: 0x97},\n\t{value: 0x37f8, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37e0, lo: 0x9d, hi: 0x9d},\n\t{value: 0x380a, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3834, lo: 0xb6, hi: 0xb6},\n\t{value: 0x383a, lo: 0xb7, hi: 0xb7},\n\t// Block 0x6, offset 0x28\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x83, hi: 0x87},\n\t// Block 0x7, offset 0x2a\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8114, lo: 0x81, hi: 0x82},\n\t{value: 0x8133, lo: 0x84, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t{value: 0x810e, lo: 0x87, hi: 0x87},\n\t// Block 0x8, offset 0x2f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x97},\n\t{value: 0x811a, lo: 0x98, hi: 0x98},\n\t{value: 0x811b, lo: 0x99, hi: 0x99},\n\t{value: 0x811c, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3858, lo: 0xa2, hi: 0xa2},\n\t{value: 0x385e, lo: 0xa3, hi: 0xa3},\n\t{value: 0x386a, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3864, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3870, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x9, offset 0x3a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3882, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x3876, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x387c, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8133, lo: 0x96, hi: 0x9c},\n\t{value: 0x8133, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812e, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812e, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t// Block 0xa, offset 0x49\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x8120, lo: 0x91, hi: 0x91},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812e, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8133, lo: 0xba, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8133, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8133, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb, offset 0x56\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8133, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x812e, lo: 0x82, hi: 0x83},\n\t{value: 0x812e, lo: 0x84, hi: 0x85},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x812e, lo: 0x88, hi: 0x89},\n\t{value: 0x8133, lo: 0x8a, hi: 0x8a},\n\t// Block 0xc, offset 0x5e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0xab, hi: 0xb1},\n\t{value: 0x812e, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8133, lo: 0xb3, hi: 0xb3},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0xd, offset 0x63\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0x96, hi: 0x99},\n\t{value: 0x8133, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8133, lo: 0xa9, hi: 0xad},\n\t// Block 0xe, offset 0x68\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t// Block 0xf, offset 0x6a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3eef, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ef7, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3eff, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9903, lo: 0xbc, hi: 0xbc},\n\t// Block 0x10, offset 0x72\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x91, hi: 0x91},\n\t{value: 0x812e, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x93, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x94},\n\t{value: 0x4533, lo: 0x98, hi: 0x9f},\n\t// Block 0x11, offset 0x79\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x12, offset 0x7c\n\t{value: 0x0008, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cab, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x4573, lo: 0x9c, hi: 0x9d},\n\t{value: 0x4583, lo: 0x9f, hi: 0x9f},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbe},\n\t// Block 0x13, offset 0x84\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x45ab, lo: 0xb3, hi: 0xb3},\n\t{value: 0x45b3, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x14, offset 0x88\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x458b, lo: 0x99, hi: 0x9b},\n\t{value: 0x45a3, lo: 0x9e, hi: 0x9e},\n\t// Block 0x15, offset 0x8c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x16, offset 0x8e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t// Block 0x17, offset 0x90\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cc3, lo: 0x88, hi: 0x88},\n\t{value: 0x2cbb, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2ccb, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45bb, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45c3, lo: 0x9d, hi: 0x9d},\n\t// Block 0x18, offset 0x99\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cd3, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x19, offset 0x9d\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cdb, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2ceb, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2ce3, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1a, offset 0xa4\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3f07, lo: 0x88, hi: 0x88},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8121, lo: 0x95, hi: 0x96},\n\t// Block 0x1b, offset 0xa9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1c, offset 0xac\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2cf3, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cfb, lo: 0x87, hi: 0x87},\n\t{value: 0x2d03, lo: 0x88, hi: 0x88},\n\t{value: 0x2f67, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2def, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1d, offset 0xb6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1e, offset 0xb9\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2d0b, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d1b, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d13, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1f, offset 0xc0\n\t{value: 0x6bdd, lo: 0x07},\n\t{value: 0x9905, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3f0f, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f6f, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2dfa, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d23, lo: 0x9e, hi: 0x9f},\n\t// Block 0x20, offset 0xc8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8123, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x21, offset 0xcb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8124, lo: 0x88, hi: 0x8b},\n\t// Block 0x22, offset 0xcd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8125, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x23, offset 0xd0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8126, lo: 0x88, hi: 0x8b},\n\t// Block 0x24, offset 0xd2\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x812e, lo: 0x98, hi: 0x99},\n\t{value: 0x812e, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812c, lo: 0xb9, hi: 0xb9},\n\t// Block 0x25, offset 0xd7\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x264a, lo: 0x83, hi: 0x83},\n\t{value: 0x2651, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2658, lo: 0x92, hi: 0x92},\n\t{value: 0x265f, lo: 0x97, hi: 0x97},\n\t{value: 0x2666, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2643, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8127, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8128, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a9b, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8129, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4aa4, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45cb, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8200, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45d3, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8200, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8128, lo: 0xba, hi: 0xbd},\n\t// Block 0x26, offset 0xe8\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8128, lo: 0x80, hi: 0x80},\n\t{value: 0x4aad, lo: 0x81, hi: 0x81},\n\t{value: 0x8133, lo: 0x82, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0x86, hi: 0x87},\n\t{value: 0x2674, lo: 0x93, hi: 0x93},\n\t{value: 0x267b, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2682, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2689, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2690, lo: 0xac, hi: 0xac},\n\t{value: 0x266d, lo: 0xb9, hi: 0xb9},\n\t// Block 0x27, offset 0xf4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x86, hi: 0x86},\n\t// Block 0x28, offset 0xf6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d2b, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x29, offset 0xfc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2a, offset 0xfe\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2b, offset 0x100\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2c, offset 0x102\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2d, offset 0x104\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2e, offset 0x106\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9f},\n\t// Block 0x2f, offset 0x108\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x94, hi: 0x94},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x30, offset 0x10b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9d},\n\t// Block 0x31, offset 0x10e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t// Block 0x32, offset 0x110\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812f, lo: 0xb9, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbb},\n\t// Block 0x33, offset 0x113\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x97, hi: 0x97},\n\t{value: 0x812e, lo: 0x98, hi: 0x98},\n\t// Block 0x34, offset 0x116\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8133, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x35, offset 0x11a\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812e, lo: 0xb5, hi: 0xba},\n\t{value: 0x8133, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x120\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x80, hi: 0x80},\n\t// Block 0x37, offset 0x122\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d73, lo: 0x80, hi: 0x80},\n\t{value: 0x2d7b, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d83, lo: 0x83, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xab, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xac},\n\t{value: 0x8133, lo: 0xad, hi: 0xb3},\n\t// Block 0x38, offset 0x12b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xaa, hi: 0xab},\n\t// Block 0x39, offset 0x12d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8105, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3a, offset 0x130\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3b, offset 0x132\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812e, lo: 0x95, hi: 0x99},\n\t{value: 0x8133, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812e, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x8133, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3c, offset 0x13d\n\t{value: 0x0004, lo: 0x03},\n\t{value: 0x0436, lo: 0x80, hi: 0x81},\n\t{value: 0x8100, lo: 0x97, hi: 0x97},\n\t{value: 0x8100, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3d, offset 0x141\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8133, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8133, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8133, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812e, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8133, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t// Block 0x3e, offset 0x14f\n\t{value: 0x4292, lo: 0x02},\n\t{value: 0x01bb, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0057, lo: 0xaa, hi: 0xab},\n\t// Block 0x3f, offset 0x152\n\t{value: 0x0007, lo: 0x05},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bd0, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bde, lo: 0xae, hi: 0xae},\n\t// Block 0x40, offset 0x158\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3be5, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bec, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x41, offset 0x15e\n\t{value: 0x63f1, lo: 0x0a},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3bfa, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3c01, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3c08, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3c0f, lo: 0xa4, hi: 0xa5},\n\t{value: 0x3c16, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x42, offset 0x169\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c7f, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3ca9, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cd3, lo: 0xaa, hi: 0xad},\n\t// Block 0x43, offset 0x16d\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048e, lo: 0xa9, hi: 0xaa},\n\t// Block 0x44, offset 0x16f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44f4, lo: 0x9c, hi: 0x9c},\n\t// Block 0x45, offset 0x171\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xaf, hi: 0xb1},\n\t// Block 0x46, offset 0x173\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x47, offset 0x175\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa0, hi: 0xbf},\n\t// Block 0x48, offset 0x177\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x8134, lo: 0xac, hi: 0xac},\n\t{value: 0x812f, lo: 0xad, hi: 0xad},\n\t{value: 0x8130, lo: 0xae, hi: 0xaf},\n\t// Block 0x49, offset 0x17d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4ab6, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4ab6, lo: 0xb5, hi: 0xb6},\n\t{value: 0x4ab6, lo: 0xba, hi: 0xbf},\n\t// Block 0x4a, offset 0x181\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4ab6, lo: 0x8f, hi: 0xa3},\n\t// Block 0x4b, offset 0x183\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xae, hi: 0xbe},\n\t// Block 0x4c, offset 0x185\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x8100, lo: 0x84, hi: 0x84},\n\t{value: 0x8100, lo: 0x87, hi: 0x87},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t{value: 0x8100, lo: 0x9e, hi: 0x9e},\n\t{value: 0x8100, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8100, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8100, lo: 0xbb, hi: 0xbb},\n\t// Block 0x4d, offset 0x18d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8100, lo: 0x80, hi: 0x80},\n\t{value: 0x8100, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8100, lo: 0x8e, hi: 0x8e},\n\t// Block 0x4e, offset 0x191\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb4, hi: 0xbd},\n\t// Block 0x4f, offset 0x194\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9f},\n\t// Block 0x50, offset 0x196\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb1},\n\t// Block 0x51, offset 0x198\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xac, hi: 0xac},\n\t// Block 0x52, offset 0x19b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xa0, hi: 0xb1},\n\t// Block 0x53, offset 0x19e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xab, hi: 0xad},\n\t// Block 0x54, offset 0x1a0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x93, hi: 0x93},\n\t// Block 0x55, offset 0x1a2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb3, hi: 0xb3},\n\t// Block 0x56, offset 0x1a4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t// Block 0x57, offset 0x1a6\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbf},\n\t// Block 0x58, offset 0x1ac\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t// Block 0x59, offset 0x1af\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xad, hi: 0xad},\n\t// Block 0x5a, offset 0x1b1\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x5b, offset 0x1b8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x5c, offset 0x1be\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x5d, offset 0x1c4\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x5e, offset 0x1cc\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x5f, offset 0x1d2\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x60, offset 0x1d8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x61, offset 0x1de\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x62, offset 0x1e2\n\t{value: 0x0006, lo: 0x0d},\n\t{value: 0x43a7, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8116, lo: 0x9e, hi: 0x9e},\n\t{value: 0x4419, lo: 0x9f, hi: 0x9f},\n\t{value: 0x4407, lo: 0xaa, hi: 0xab},\n\t{value: 0x450b, lo: 0xac, hi: 0xac},\n\t{value: 0x4513, lo: 0xad, hi: 0xad},\n\t{value: 0x435f, lo: 0xae, hi: 0xb1},\n\t{value: 0x437d, lo: 0xb2, hi: 0xb4},\n\t{value: 0x4395, lo: 0xb5, hi: 0xb6},\n\t{value: 0x43a1, lo: 0xb8, hi: 0xb8},\n\t{value: 0x43ad, lo: 0xb9, hi: 0xbb},\n\t{value: 0x43c5, lo: 0xbc, hi: 0xbc},\n\t{value: 0x43cb, lo: 0xbe, hi: 0xbe},\n\t// Block 0x63, offset 0x1f0\n\t{value: 0x0006, lo: 0x08},\n\t{value: 0x43d1, lo: 0x80, hi: 0x81},\n\t{value: 0x43dd, lo: 0x83, hi: 0x84},\n\t{value: 0x43ef, lo: 0x86, hi: 0x89},\n\t{value: 0x4413, lo: 0x8a, hi: 0x8a},\n\t{value: 0x438f, lo: 0x8b, hi: 0x8b},\n\t{value: 0x4377, lo: 0x8c, hi: 0x8c},\n\t{value: 0x43bf, lo: 0x8d, hi: 0x8d},\n\t{value: 0x43e9, lo: 0x8e, hi: 0x8e},\n\t// Block 0x64, offset 0x1f9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0xa4, hi: 0xa5},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb1},\n\t// Block 0x65, offset 0x1fc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x9b, hi: 0x9d},\n\t{value: 0x8200, lo: 0x9e, hi: 0xa3},\n\t// Block 0x66, offset 0x1ff\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t// Block 0x67, offset 0x201\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x99, hi: 0x99},\n\t{value: 0x8200, lo: 0xb2, hi: 0xb4},\n\t// Block 0x68, offset 0x204\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xbc, hi: 0xbd},\n\t// Block 0x69, offset 0x206\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa6},\n\t{value: 0x812e, lo: 0xa7, hi: 0xad},\n\t{value: 0x8133, lo: 0xae, hi: 0xaf},\n\t// Block 0x6a, offset 0x20a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8100, lo: 0x89, hi: 0x8c},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb2},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb6, hi: 0xbf},\n\t// Block 0x6b, offset 0x20f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x81, hi: 0x8c},\n\t// Block 0x6c, offset 0x211\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xb5, hi: 0xba},\n\t// Block 0x6d, offset 0x213\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x4ab6, lo: 0x9e, hi: 0x9f},\n\t{value: 0x4ab6, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4ab6, lo: 0xa5, hi: 0xa6},\n\t{value: 0x4ab6, lo: 0xaa, hi: 0xaf},\n\t// Block 0x6e, offset 0x218\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x4ab6, lo: 0x82, hi: 0x87},\n\t{value: 0x4ab6, lo: 0x8a, hi: 0x8f},\n\t{value: 0x4ab6, lo: 0x92, hi: 0x97},\n\t{value: 0x4ab6, lo: 0x9a, hi: 0x9c},\n\t{value: 0x8100, lo: 0xa3, hi: 0xa3},\n\t// Block 0x6f, offset 0x21e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0x70, offset 0x220\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xa0, hi: 0xa0},\n\t// Block 0x71, offset 0x222\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb6, hi: 0xba},\n\t// Block 0x72, offset 0x224\n\t{value: 0x002d, lo: 0x05},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x73, offset 0x22a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812e, lo: 0xa6, hi: 0xa6},\n\t// Block 0x74, offset 0x22d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa7},\n\t// Block 0x75, offset 0x22f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t// Block 0x76, offset 0x231\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x8133, lo: 0x88, hi: 0x8a},\n\t{value: 0x812e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8133, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812e, lo: 0x8d, hi: 0x90},\n\t// Block 0x77, offset 0x237\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x78, offset 0x23a\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x424f, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4259, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x4263, lo: 0xab, hi: 0xab},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x79, offset 0x242\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8133, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d8b, lo: 0xae, hi: 0xae},\n\t{value: 0x2d95, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8105, lo: 0xb3, hi: 0xb4},\n\t// Block 0x7a, offset 0x249\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0x7b, offset 0x24c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8103, lo: 0xb6, hi: 0xb6},\n\t// Block 0x7c, offset 0x24f\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8103, lo: 0xa9, hi: 0xaa},\n\t// Block 0x7d, offset 0x251\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7e, offset 0x254\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d9f, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2da9, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8133, lo: 0xa6, hi: 0xac},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t// Block 0x7f, offset 0x25c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x86, hi: 0x86},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9e},\n\t// Block 0x80, offset 0x260\n\t{value: 0x6b4d, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2dbd, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2db3, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dc7, lo: 0xbe, hi: 0xbe},\n\t// Block 0x81, offset 0x267\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x82, offset 0x26a\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dd1, lo: 0xba, hi: 0xba},\n\t{value: 0x2ddb, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x83, offset 0x270\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x80, hi: 0x80},\n\t// Block 0x84, offset 0x272\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x85, offset 0x275\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xab, hi: 0xab},\n\t// Block 0x86, offset 0x277\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8103, lo: 0xba, hi: 0xba},\n\t// Block 0x87, offset 0x27a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2de5, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8105, lo: 0xbd, hi: 0xbe},\n\t// Block 0x88, offset 0x27f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x89, offset 0x281\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t// Block 0x8a, offset 0x283\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x8b, offset 0x285\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x87, hi: 0x87},\n\t// Block 0x8c, offset 0x287\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x99, hi: 0x99},\n\t// Block 0x8d, offset 0x289\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0x82, hi: 0x82},\n\t{value: 0x8105, lo: 0x84, hi: 0x85},\n\t// Block 0x8e, offset 0x28c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x97, hi: 0x97},\n\t// Block 0x8f, offset 0x28e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x90, offset 0x290\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb6},\n\t// Block 0x91, offset 0x292\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb0, hi: 0xb1},\n\t// Block 0x92, offset 0x294\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x93, offset 0x296\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45e3, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45ed, lo: 0x9f, hi: 0x9f},\n\t{value: 0x4621, lo: 0xa0, hi: 0xa0},\n\t{value: 0x462f, lo: 0xa1, hi: 0xa1},\n\t{value: 0x463d, lo: 0xa2, hi: 0xa2},\n\t{value: 0x464b, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4659, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812c, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8131, lo: 0xad, hi: 0xad},\n\t{value: 0x812c, lo: 0xae, hi: 0xb2},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbf},\n\t// Block 0x94, offset 0x2a3\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812e, lo: 0x80, hi: 0x82},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8133, lo: 0xaa, hi: 0xad},\n\t{value: 0x45f7, lo: 0xbb, hi: 0xbb},\n\t{value: 0x4601, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4667, lo: 0xbd, hi: 0xbd},\n\t{value: 0x4683, lo: 0xbe, hi: 0xbe},\n\t{value: 0x4675, lo: 0xbf, hi: 0xbf},\n\t// Block 0x95, offset 0x2ad\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4691, lo: 0x80, hi: 0x80},\n\t// Block 0x96, offset 0x2af\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x82, hi: 0x84},\n\t// Block 0x97, offset 0x2b1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0x80, hi: 0x86},\n\t{value: 0x8133, lo: 0x88, hi: 0x98},\n\t{value: 0x8133, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8133, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8133, lo: 0xa6, hi: 0xaa},\n\t// Block 0x98, offset 0x2b7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xac, hi: 0xaf},\n\t// Block 0x99, offset 0x2b9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x90, hi: 0x96},\n\t// Block 0x9a, offset 0x2bb\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x84, hi: 0x89},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0x9b, offset 0x2be\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x93, hi: 0x93},\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfkcTrie. Total size: 18768 bytes (18.33 KiB). Checksum: c51186dd2412943d.\ntype nfkcTrie struct{}\n\nfunc newNfkcTrie(i int) *nfkcTrie {\n\treturn &nfkcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 92:\n\t\treturn uint16(nfkcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 92\n\t\treturn uint16(nfkcSparse.lookup(n, b))\n\t}\n}\n\n// nfkcValues: 94 blocks, 6016 entries, 12032 bytes\n// The third block is the zero block.\nvar nfkcValues = [6016]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f86, 0xc1: 0x2f8b, 0xc2: 0x469f, 0xc3: 0x2f90, 0xc4: 0x46ae, 0xc5: 0x46b3,\n\t0xc6: 0xa000, 0xc7: 0x46bd, 0xc8: 0x2ff9, 0xc9: 0x2ffe, 0xca: 0x46c2, 0xcb: 0x3012,\n\t0xcc: 0x3085, 0xcd: 0x308a, 0xce: 0x308f, 0xcf: 0x46d6, 0xd1: 0x311b,\n\t0xd2: 0x313e, 0xd3: 0x3143, 0xd4: 0x46e0, 0xd5: 0x46e5, 0xd6: 0x46f4,\n\t0xd8: 0xa000, 0xd9: 0x31ca, 0xda: 0x31cf, 0xdb: 0x31d4, 0xdc: 0x4726, 0xdd: 0x324c,\n\t0xe0: 0x3292, 0xe1: 0x3297, 0xe2: 0x4730, 0xe3: 0x329c,\n\t0xe4: 0x473f, 0xe5: 0x4744, 0xe6: 0xa000, 0xe7: 0x474e, 0xe8: 0x3305, 0xe9: 0x330a,\n\t0xea: 0x4753, 0xeb: 0x331e, 0xec: 0x3396, 0xed: 0x339b, 0xee: 0x33a0, 0xef: 0x4767,\n\t0xf1: 0x342c, 0xf2: 0x344f, 0xf3: 0x3454, 0xf4: 0x4771, 0xf5: 0x4776,\n\t0xf6: 0x4785, 0xf8: 0xa000, 0xf9: 0x34e0, 0xfa: 0x34e5, 0xfb: 0x34ea,\n\t0xfc: 0x47b7, 0xfd: 0x3567, 0xff: 0x3580,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f95, 0x101: 0x32a1, 0x102: 0x46a4, 0x103: 0x4735, 0x104: 0x2fb3, 0x105: 0x32bf,\n\t0x106: 0x2fc7, 0x107: 0x32d3, 0x108: 0x2fcc, 0x109: 0x32d8, 0x10a: 0x2fd1, 0x10b: 0x32dd,\n\t0x10c: 0x2fd6, 0x10d: 0x32e2, 0x10e: 0x2fe0, 0x10f: 0x32ec,\n\t0x112: 0x46c7, 0x113: 0x4758, 0x114: 0x3008, 0x115: 0x3314, 0x116: 0x300d, 0x117: 0x3319,\n\t0x118: 0x302b, 0x119: 0x3337, 0x11a: 0x301c, 0x11b: 0x3328, 0x11c: 0x3044, 0x11d: 0x3350,\n\t0x11e: 0x304e, 0x11f: 0x335a, 0x120: 0x3053, 0x121: 0x335f, 0x122: 0x305d, 0x123: 0x3369,\n\t0x124: 0x3062, 0x125: 0x336e, 0x128: 0x3094, 0x129: 0x33a5,\n\t0x12a: 0x3099, 0x12b: 0x33aa, 0x12c: 0x309e, 0x12d: 0x33af, 0x12e: 0x30c1, 0x12f: 0x33cd,\n\t0x130: 0x30a3, 0x132: 0x1960, 0x133: 0x19ed, 0x134: 0x30cb, 0x135: 0x33d7,\n\t0x136: 0x30df, 0x137: 0x33f0, 0x139: 0x30e9, 0x13a: 0x33fa, 0x13b: 0x30f3,\n\t0x13c: 0x3404, 0x13d: 0x30ee, 0x13e: 0x33ff, 0x13f: 0x1bb2,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x1c3a, 0x143: 0x3116, 0x144: 0x3427, 0x145: 0x312f,\n\t0x146: 0x3440, 0x147: 0x3125, 0x148: 0x3436, 0x149: 0x1c62,\n\t0x14c: 0x46ea, 0x14d: 0x477b, 0x14e: 0x3148, 0x14f: 0x3459, 0x150: 0x3152, 0x151: 0x3463,\n\t0x154: 0x3170, 0x155: 0x3481, 0x156: 0x3189, 0x157: 0x349a,\n\t0x158: 0x317a, 0x159: 0x348b, 0x15a: 0x470d, 0x15b: 0x479e, 0x15c: 0x3193, 0x15d: 0x34a4,\n\t0x15e: 0x31a2, 0x15f: 0x34b3, 0x160: 0x4712, 0x161: 0x47a3, 0x162: 0x31bb, 0x163: 0x34d1,\n\t0x164: 0x31ac, 0x165: 0x34c2, 0x168: 0x471c, 0x169: 0x47ad,\n\t0x16a: 0x4721, 0x16b: 0x47b2, 0x16c: 0x31d9, 0x16d: 0x34ef, 0x16e: 0x31e3, 0x16f: 0x34f9,\n\t0x170: 0x31e8, 0x171: 0x34fe, 0x172: 0x3206, 0x173: 0x351c, 0x174: 0x3229, 0x175: 0x353f,\n\t0x176: 0x3251, 0x177: 0x356c, 0x178: 0x3265, 0x179: 0x3274, 0x17a: 0x3594, 0x17b: 0x327e,\n\t0x17c: 0x359e, 0x17d: 0x3283, 0x17e: 0x35a3, 0x17f: 0x00a7,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x2e05, 0x185: 0x2e0b,\n\t0x186: 0x2e11, 0x187: 0x1975, 0x188: 0x1978, 0x189: 0x1a0e, 0x18a: 0x198d, 0x18b: 0x1990,\n\t0x18c: 0x1a44, 0x18d: 0x2f9f, 0x18e: 0x32ab, 0x18f: 0x30ad, 0x190: 0x33b9, 0x191: 0x3157,\n\t0x192: 0x3468, 0x193: 0x31ed, 0x194: 0x3503, 0x195: 0x39e6, 0x196: 0x3b75, 0x197: 0x39df,\n\t0x198: 0x3b6e, 0x199: 0x39ed, 0x19a: 0x3b7c, 0x19b: 0x39d8, 0x19c: 0x3b67,\n\t0x19e: 0x38c7, 0x19f: 0x3a56, 0x1a0: 0x38c0, 0x1a1: 0x3a4f, 0x1a2: 0x35ca, 0x1a3: 0x35dc,\n\t0x1a6: 0x3058, 0x1a7: 0x3364, 0x1a8: 0x30d5, 0x1a9: 0x33e6,\n\t0x1aa: 0x4703, 0x1ab: 0x4794, 0x1ac: 0x39a7, 0x1ad: 0x3b36, 0x1ae: 0x35ee, 0x1af: 0x35f4,\n\t0x1b0: 0x33dc, 0x1b1: 0x1945, 0x1b2: 0x1948, 0x1b3: 0x19d5, 0x1b4: 0x303f, 0x1b5: 0x334b,\n\t0x1b8: 0x3111, 0x1b9: 0x3422, 0x1ba: 0x38ce, 0x1bb: 0x3a5d,\n\t0x1bc: 0x35c4, 0x1bd: 0x35d6, 0x1be: 0x35d0, 0x1bf: 0x35e2,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2fa4, 0x1c1: 0x32b0, 0x1c2: 0x2fa9, 0x1c3: 0x32b5, 0x1c4: 0x3021, 0x1c5: 0x332d,\n\t0x1c6: 0x3026, 0x1c7: 0x3332, 0x1c8: 0x30b2, 0x1c9: 0x33be, 0x1ca: 0x30b7, 0x1cb: 0x33c3,\n\t0x1cc: 0x315c, 0x1cd: 0x346d, 0x1ce: 0x3161, 0x1cf: 0x3472, 0x1d0: 0x317f, 0x1d1: 0x3490,\n\t0x1d2: 0x3184, 0x1d3: 0x3495, 0x1d4: 0x31f2, 0x1d5: 0x3508, 0x1d6: 0x31f7, 0x1d7: 0x350d,\n\t0x1d8: 0x319d, 0x1d9: 0x34ae, 0x1da: 0x31b6, 0x1db: 0x34cc,\n\t0x1de: 0x3071, 0x1df: 0x337d,\n\t0x1e6: 0x46a9, 0x1e7: 0x473a, 0x1e8: 0x46d1, 0x1e9: 0x4762,\n\t0x1ea: 0x3976, 0x1eb: 0x3b05, 0x1ec: 0x3953, 0x1ed: 0x3ae2, 0x1ee: 0x46ef, 0x1ef: 0x4780,\n\t0x1f0: 0x396f, 0x1f1: 0x3afe, 0x1f2: 0x325b, 0x1f3: 0x3576,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133,\n\t0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933,\n\t0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933,\n\t0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e,\n\t0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e,\n\t0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e,\n\t0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e,\n\t0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e,\n\t0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e,\n\t0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49c5, 0x241: 0x49ca, 0x242: 0x9933, 0x243: 0x49cf, 0x244: 0x4a88, 0x245: 0x9937,\n\t0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133,\n\t0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133,\n\t0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133,\n\t0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136,\n\t0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133,\n\t0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133,\n\t0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133,\n\t0x274: 0x0173,\n\t0x27a: 0x42bc,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x4271, 0x285: 0x4492,\n\t0x286: 0x3600, 0x287: 0x00ce, 0x288: 0x361e, 0x289: 0x362a, 0x28a: 0x363c,\n\t0x28c: 0x365a, 0x28e: 0x366c, 0x28f: 0x368a, 0x290: 0x3e1f, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x364e, 0x2ab: 0x367e, 0x2ac: 0x4815, 0x2ad: 0x36ae, 0x2ae: 0x483f, 0x2af: 0x36c0,\n\t0x2b0: 0x3e87, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c1: 0xa000, 0x2c5: 0xa000,\n\t0x2c9: 0xa000, 0x2ca: 0x4857, 0x2cb: 0x4875,\n\t0x2cc: 0x36de, 0x2cd: 0x36f6, 0x2ce: 0x488d, 0x2d0: 0x01c1, 0x2d1: 0x01d3,\n\t0x2d2: 0x01af, 0x2d3: 0x4323, 0x2d4: 0x4329, 0x2d5: 0x01fd, 0x2d6: 0x01eb,\n\t0x2f0: 0x01d9, 0x2f1: 0x01ee, 0x2f2: 0x01f1, 0x2f4: 0x018b, 0x2f5: 0x01ca,\n\t0x2f9: 0x01a9,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x3738, 0x301: 0x3744, 0x303: 0x3732,\n\t0x306: 0xa000, 0x307: 0x3720,\n\t0x30c: 0x3774, 0x30d: 0x375c, 0x30e: 0x3786, 0x310: 0xa000,\n\t0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000,\n\t0x318: 0xa000, 0x319: 0x3768, 0x31a: 0xa000,\n\t0x31e: 0xa000, 0x323: 0xa000,\n\t0x327: 0xa000,\n\t0x32b: 0xa000, 0x32d: 0xa000,\n\t0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000,\n\t0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x37ec, 0x33a: 0xa000,\n\t0x33e: 0xa000,\n\t// Block 0xd, offset 0x340\n\t0x341: 0x374a, 0x342: 0x37ce,\n\t0x350: 0x3726, 0x351: 0x37aa,\n\t0x352: 0x372c, 0x353: 0x37b0, 0x356: 0x373e, 0x357: 0x37c2,\n\t0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3840, 0x35b: 0x3846, 0x35c: 0x3750, 0x35d: 0x37d4,\n\t0x35e: 0x3756, 0x35f: 0x37da, 0x362: 0x3762, 0x363: 0x37e6,\n\t0x364: 0x376e, 0x365: 0x37f2, 0x366: 0x377a, 0x367: 0x37fe, 0x368: 0xa000, 0x369: 0xa000,\n\t0x36a: 0x384c, 0x36b: 0x3852, 0x36c: 0x37a4, 0x36d: 0x3828, 0x36e: 0x3780, 0x36f: 0x3804,\n\t0x370: 0x378c, 0x371: 0x3810, 0x372: 0x3792, 0x373: 0x3816, 0x374: 0x3798, 0x375: 0x381c,\n\t0x378: 0x379e, 0x379: 0x3822,\n\t// Block 0xe, offset 0x380\n\t0x387: 0x1d67,\n\t0x391: 0x812e,\n\t0x392: 0x8133, 0x393: 0x8133, 0x394: 0x8133, 0x395: 0x8133, 0x396: 0x812e, 0x397: 0x8133,\n\t0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x812f, 0x39b: 0x812e, 0x39c: 0x8133, 0x39d: 0x8133,\n\t0x39e: 0x8133, 0x39f: 0x8133, 0x3a0: 0x8133, 0x3a1: 0x8133, 0x3a2: 0x812e, 0x3a3: 0x812e,\n\t0x3a4: 0x812e, 0x3a5: 0x812e, 0x3a6: 0x812e, 0x3a7: 0x812e, 0x3a8: 0x8133, 0x3a9: 0x8133,\n\t0x3aa: 0x812e, 0x3ab: 0x8133, 0x3ac: 0x8133, 0x3ad: 0x812f, 0x3ae: 0x8132, 0x3af: 0x8133,\n\t0x3b0: 0x8106, 0x3b1: 0x8107, 0x3b2: 0x8108, 0x3b3: 0x8109, 0x3b4: 0x810a, 0x3b5: 0x810b,\n\t0x3b6: 0x810c, 0x3b7: 0x810d, 0x3b8: 0x810e, 0x3b9: 0x810f, 0x3ba: 0x810f, 0x3bb: 0x8110,\n\t0x3bc: 0x8111, 0x3bd: 0x8112, 0x3bf: 0x8113,\n\t// Block 0xf, offset 0x3c0\n\t0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8117,\n\t0x3cc: 0x8118, 0x3cd: 0x8119, 0x3ce: 0x811a, 0x3cf: 0x811b, 0x3d0: 0x811c, 0x3d1: 0x811d,\n\t0x3d2: 0x811e, 0x3d3: 0x9933, 0x3d4: 0x9933, 0x3d5: 0x992e, 0x3d6: 0x812e, 0x3d7: 0x8133,\n\t0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x812e, 0x3dd: 0x8133,\n\t0x3de: 0x8133, 0x3df: 0x812e,\n\t0x3f0: 0x811f, 0x3f5: 0x1d8a,\n\t0x3f6: 0x2019, 0x3f7: 0x2055, 0x3f8: 0x2050,\n\t// Block 0x10, offset 0x400\n\t0x413: 0x812e, 0x414: 0x8133, 0x415: 0x8133, 0x416: 0x8133, 0x417: 0x8133,\n\t0x418: 0x8133, 0x419: 0x8133, 0x41a: 0x8133, 0x41b: 0x8133, 0x41c: 0x8133, 0x41d: 0x8133,\n\t0x41e: 0x8133, 0x41f: 0x8133, 0x420: 0x8133, 0x421: 0x8133, 0x423: 0x812e,\n\t0x424: 0x8133, 0x425: 0x8133, 0x426: 0x812e, 0x427: 0x8133, 0x428: 0x8133, 0x429: 0x812e,\n\t0x42a: 0x8133, 0x42b: 0x8133, 0x42c: 0x8133, 0x42d: 0x812e, 0x42e: 0x812e, 0x42f: 0x812e,\n\t0x430: 0x8117, 0x431: 0x8118, 0x432: 0x8119, 0x433: 0x8133, 0x434: 0x8133, 0x435: 0x8133,\n\t0x436: 0x812e, 0x437: 0x8133, 0x438: 0x8133, 0x439: 0x812e, 0x43a: 0x812e, 0x43b: 0x8133,\n\t0x43c: 0x8133, 0x43d: 0x8133, 0x43e: 0x8133, 0x43f: 0x8133,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xa000,\n\t0x446: 0x2d33, 0x447: 0xa000, 0x448: 0x2d3b, 0x449: 0xa000, 0x44a: 0x2d43, 0x44b: 0xa000,\n\t0x44c: 0x2d4b, 0x44d: 0xa000, 0x44e: 0x2d53, 0x451: 0xa000,\n\t0x452: 0x2d5b,\n\t0x474: 0x8103, 0x475: 0x9900,\n\t0x47a: 0xa000, 0x47b: 0x2d63,\n\t0x47c: 0xa000, 0x47d: 0x2d6b, 0x47e: 0xa000, 0x47f: 0xa000,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0069, 0x481: 0x006b, 0x482: 0x006f, 0x483: 0x0083, 0x484: 0x00f5, 0x485: 0x00f8,\n\t0x486: 0x0416, 0x487: 0x0085, 0x488: 0x0089, 0x489: 0x008b, 0x48a: 0x0104, 0x48b: 0x0107,\n\t0x48c: 0x010a, 0x48d: 0x008f, 0x48f: 0x0097, 0x490: 0x009b, 0x491: 0x00e0,\n\t0x492: 0x009f, 0x493: 0x00fe, 0x494: 0x041a, 0x495: 0x041e, 0x496: 0x00a1, 0x497: 0x00a9,\n\t0x498: 0x00ab, 0x499: 0x0426, 0x49a: 0x012b, 0x49b: 0x00ad, 0x49c: 0x042a, 0x49d: 0x01c1,\n\t0x49e: 0x01c4, 0x49f: 0x01c7, 0x4a0: 0x01fd, 0x4a1: 0x0200, 0x4a2: 0x0093, 0x4a3: 0x00a5,\n\t0x4a4: 0x00ab, 0x4a5: 0x00ad, 0x4a6: 0x01c1, 0x4a7: 0x01c4, 0x4a8: 0x01ee, 0x4a9: 0x01fd,\n\t0x4aa: 0x0200,\n\t0x4b8: 0x020f,\n\t// Block 0x13, offset 0x4c0\n\t0x4db: 0x00fb, 0x4dc: 0x0087, 0x4dd: 0x0101,\n\t0x4de: 0x00d4, 0x4df: 0x010a, 0x4e0: 0x008d, 0x4e1: 0x010d, 0x4e2: 0x0110, 0x4e3: 0x0116,\n\t0x4e4: 0x011c, 0x4e5: 0x011f, 0x4e6: 0x0122, 0x4e7: 0x042e, 0x4e8: 0x016d, 0x4e9: 0x0128,\n\t0x4ea: 0x0432, 0x4eb: 0x0170, 0x4ec: 0x0131, 0x4ed: 0x012e, 0x4ee: 0x0134, 0x4ef: 0x0137,\n\t0x4f0: 0x013a, 0x4f1: 0x013d, 0x4f2: 0x0140, 0x4f3: 0x014c, 0x4f4: 0x014f, 0x4f5: 0x00ec,\n\t0x4f6: 0x0152, 0x4f7: 0x0155, 0x4f8: 0x0422, 0x4f9: 0x0158, 0x4fa: 0x015b, 0x4fb: 0x00b5,\n\t0x4fc: 0x0161, 0x4fd: 0x0164, 0x4fe: 0x0167, 0x4ff: 0x01d3,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x8133, 0x501: 0x8133, 0x502: 0x812e, 0x503: 0x8133, 0x504: 0x8133, 0x505: 0x8133,\n\t0x506: 0x8133, 0x507: 0x8133, 0x508: 0x8133, 0x509: 0x8133, 0x50a: 0x812e, 0x50b: 0x8133,\n\t0x50c: 0x8133, 0x50d: 0x8136, 0x50e: 0x812b, 0x50f: 0x812e, 0x510: 0x812a, 0x511: 0x8133,\n\t0x512: 0x8133, 0x513: 0x8133, 0x514: 0x8133, 0x515: 0x8133, 0x516: 0x8133, 0x517: 0x8133,\n\t0x518: 0x8133, 0x519: 0x8133, 0x51a: 0x8133, 0x51b: 0x8133, 0x51c: 0x8133, 0x51d: 0x8133,\n\t0x51e: 0x8133, 0x51f: 0x8133, 0x520: 0x8133, 0x521: 0x8133, 0x522: 0x8133, 0x523: 0x8133,\n\t0x524: 0x8133, 0x525: 0x8133, 0x526: 0x8133, 0x527: 0x8133, 0x528: 0x8133, 0x529: 0x8133,\n\t0x52a: 0x8133, 0x52b: 0x8133, 0x52c: 0x8133, 0x52d: 0x8133, 0x52e: 0x8133, 0x52f: 0x8133,\n\t0x530: 0x8133, 0x531: 0x8133, 0x532: 0x8133, 0x533: 0x8133, 0x534: 0x8133, 0x535: 0x8133,\n\t0x536: 0x8134, 0x537: 0x8132, 0x538: 0x8132, 0x539: 0x812e, 0x53b: 0x8133,\n\t0x53c: 0x8135, 0x53d: 0x812e, 0x53e: 0x8133, 0x53f: 0x812e,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x2fae, 0x541: 0x32ba, 0x542: 0x2fb8, 0x543: 0x32c4, 0x544: 0x2fbd, 0x545: 0x32c9,\n\t0x546: 0x2fc2, 0x547: 0x32ce, 0x548: 0x38e3, 0x549: 0x3a72, 0x54a: 0x2fdb, 0x54b: 0x32e7,\n\t0x54c: 0x2fe5, 0x54d: 0x32f1, 0x54e: 0x2ff4, 0x54f: 0x3300, 0x550: 0x2fea, 0x551: 0x32f6,\n\t0x552: 0x2fef, 0x553: 0x32fb, 0x554: 0x3906, 0x555: 0x3a95, 0x556: 0x390d, 0x557: 0x3a9c,\n\t0x558: 0x3030, 0x559: 0x333c, 0x55a: 0x3035, 0x55b: 0x3341, 0x55c: 0x391b, 0x55d: 0x3aaa,\n\t0x55e: 0x303a, 0x55f: 0x3346, 0x560: 0x3049, 0x561: 0x3355, 0x562: 0x3067, 0x563: 0x3373,\n\t0x564: 0x3076, 0x565: 0x3382, 0x566: 0x306c, 0x567: 0x3378, 0x568: 0x307b, 0x569: 0x3387,\n\t0x56a: 0x3080, 0x56b: 0x338c, 0x56c: 0x30c6, 0x56d: 0x33d2, 0x56e: 0x3922, 0x56f: 0x3ab1,\n\t0x570: 0x30d0, 0x571: 0x33e1, 0x572: 0x30da, 0x573: 0x33eb, 0x574: 0x30e4, 0x575: 0x33f5,\n\t0x576: 0x46db, 0x577: 0x476c, 0x578: 0x3929, 0x579: 0x3ab8, 0x57a: 0x30fd, 0x57b: 0x340e,\n\t0x57c: 0x30f8, 0x57d: 0x3409, 0x57e: 0x3102, 0x57f: 0x3413,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3107, 0x581: 0x3418, 0x582: 0x310c, 0x583: 0x341d, 0x584: 0x3120, 0x585: 0x3431,\n\t0x586: 0x312a, 0x587: 0x343b, 0x588: 0x3139, 0x589: 0x344a, 0x58a: 0x3134, 0x58b: 0x3445,\n\t0x58c: 0x394c, 0x58d: 0x3adb, 0x58e: 0x395a, 0x58f: 0x3ae9, 0x590: 0x3961, 0x591: 0x3af0,\n\t0x592: 0x3968, 0x593: 0x3af7, 0x594: 0x3166, 0x595: 0x3477, 0x596: 0x316b, 0x597: 0x347c,\n\t0x598: 0x3175, 0x599: 0x3486, 0x59a: 0x4708, 0x59b: 0x4799, 0x59c: 0x39ae, 0x59d: 0x3b3d,\n\t0x59e: 0x318e, 0x59f: 0x349f, 0x5a0: 0x3198, 0x5a1: 0x34a9, 0x5a2: 0x4717, 0x5a3: 0x47a8,\n\t0x5a4: 0x39b5, 0x5a5: 0x3b44, 0x5a6: 0x39bc, 0x5a7: 0x3b4b, 0x5a8: 0x39c3, 0x5a9: 0x3b52,\n\t0x5aa: 0x31a7, 0x5ab: 0x34b8, 0x5ac: 0x31b1, 0x5ad: 0x34c7, 0x5ae: 0x31c5, 0x5af: 0x34db,\n\t0x5b0: 0x31c0, 0x5b1: 0x34d6, 0x5b2: 0x3201, 0x5b3: 0x3517, 0x5b4: 0x3210, 0x5b5: 0x3526,\n\t0x5b6: 0x320b, 0x5b7: 0x3521, 0x5b8: 0x39ca, 0x5b9: 0x3b59, 0x5ba: 0x39d1, 0x5bb: 0x3b60,\n\t0x5bc: 0x3215, 0x5bd: 0x352b, 0x5be: 0x321a, 0x5bf: 0x3530,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x321f, 0x5c1: 0x3535, 0x5c2: 0x3224, 0x5c3: 0x353a, 0x5c4: 0x3233, 0x5c5: 0x3549,\n\t0x5c6: 0x322e, 0x5c7: 0x3544, 0x5c8: 0x3238, 0x5c9: 0x3553, 0x5ca: 0x323d, 0x5cb: 0x3558,\n\t0x5cc: 0x3242, 0x5cd: 0x355d, 0x5ce: 0x3260, 0x5cf: 0x357b, 0x5d0: 0x3279, 0x5d1: 0x3599,\n\t0x5d2: 0x3288, 0x5d3: 0x35a8, 0x5d4: 0x328d, 0x5d5: 0x35ad, 0x5d6: 0x3391, 0x5d7: 0x34bd,\n\t0x5d8: 0x354e, 0x5d9: 0x358a, 0x5da: 0x1be6, 0x5db: 0x42ee,\n\t0x5e0: 0x46b8, 0x5e1: 0x4749, 0x5e2: 0x2f9a, 0x5e3: 0x32a6,\n\t0x5e4: 0x388f, 0x5e5: 0x3a1e, 0x5e6: 0x3888, 0x5e7: 0x3a17, 0x5e8: 0x389d, 0x5e9: 0x3a2c,\n\t0x5ea: 0x3896, 0x5eb: 0x3a25, 0x5ec: 0x38d5, 0x5ed: 0x3a64, 0x5ee: 0x38ab, 0x5ef: 0x3a3a,\n\t0x5f0: 0x38a4, 0x5f1: 0x3a33, 0x5f2: 0x38b9, 0x5f3: 0x3a48, 0x5f4: 0x38b2, 0x5f5: 0x3a41,\n\t0x5f6: 0x38dc, 0x5f7: 0x3a6b, 0x5f8: 0x46cc, 0x5f9: 0x475d, 0x5fa: 0x3017, 0x5fb: 0x3323,\n\t0x5fc: 0x3003, 0x5fd: 0x330f, 0x5fe: 0x38f1, 0x5ff: 0x3a80,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x38ea, 0x601: 0x3a79, 0x602: 0x38ff, 0x603: 0x3a8e, 0x604: 0x38f8, 0x605: 0x3a87,\n\t0x606: 0x3914, 0x607: 0x3aa3, 0x608: 0x30a8, 0x609: 0x33b4, 0x60a: 0x30bc, 0x60b: 0x33c8,\n\t0x60c: 0x46fe, 0x60d: 0x478f, 0x60e: 0x314d, 0x60f: 0x345e, 0x610: 0x3937, 0x611: 0x3ac6,\n\t0x612: 0x3930, 0x613: 0x3abf, 0x614: 0x3945, 0x615: 0x3ad4, 0x616: 0x393e, 0x617: 0x3acd,\n\t0x618: 0x39a0, 0x619: 0x3b2f, 0x61a: 0x3984, 0x61b: 0x3b13, 0x61c: 0x397d, 0x61d: 0x3b0c,\n\t0x61e: 0x3992, 0x61f: 0x3b21, 0x620: 0x398b, 0x621: 0x3b1a, 0x622: 0x3999, 0x623: 0x3b28,\n\t0x624: 0x31fc, 0x625: 0x3512, 0x626: 0x31de, 0x627: 0x34f4, 0x628: 0x39fb, 0x629: 0x3b8a,\n\t0x62a: 0x39f4, 0x62b: 0x3b83, 0x62c: 0x3a09, 0x62d: 0x3b98, 0x62e: 0x3a02, 0x62f: 0x3b91,\n\t0x630: 0x3a10, 0x631: 0x3b9f, 0x632: 0x3247, 0x633: 0x3562, 0x634: 0x326f, 0x635: 0x358f,\n\t0x636: 0x326a, 0x637: 0x3585, 0x638: 0x3256, 0x639: 0x3571,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x481b, 0x641: 0x4821, 0x642: 0x4935, 0x643: 0x494d, 0x644: 0x493d, 0x645: 0x4955,\n\t0x646: 0x4945, 0x647: 0x495d, 0x648: 0x47c1, 0x649: 0x47c7, 0x64a: 0x48a5, 0x64b: 0x48bd,\n\t0x64c: 0x48ad, 0x64d: 0x48c5, 0x64e: 0x48b5, 0x64f: 0x48cd, 0x650: 0x482d, 0x651: 0x4833,\n\t0x652: 0x3dcf, 0x653: 0x3ddf, 0x654: 0x3dd7, 0x655: 0x3de7,\n\t0x658: 0x47cd, 0x659: 0x47d3, 0x65a: 0x3cff, 0x65b: 0x3d0f, 0x65c: 0x3d07, 0x65d: 0x3d17,\n\t0x660: 0x4845, 0x661: 0x484b, 0x662: 0x4965, 0x663: 0x497d,\n\t0x664: 0x496d, 0x665: 0x4985, 0x666: 0x4975, 0x667: 0x498d, 0x668: 0x47d9, 0x669: 0x47df,\n\t0x66a: 0x48d5, 0x66b: 0x48ed, 0x66c: 0x48dd, 0x66d: 0x48f5, 0x66e: 0x48e5, 0x66f: 0x48fd,\n\t0x670: 0x485d, 0x671: 0x4863, 0x672: 0x3e2f, 0x673: 0x3e47, 0x674: 0x3e37, 0x675: 0x3e4f,\n\t0x676: 0x3e3f, 0x677: 0x3e57, 0x678: 0x47e5, 0x679: 0x47eb, 0x67a: 0x3d2f, 0x67b: 0x3d47,\n\t0x67c: 0x3d37, 0x67d: 0x3d4f, 0x67e: 0x3d3f, 0x67f: 0x3d57,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x4869, 0x681: 0x486f, 0x682: 0x3e5f, 0x683: 0x3e6f, 0x684: 0x3e67, 0x685: 0x3e77,\n\t0x688: 0x47f1, 0x689: 0x47f7, 0x68a: 0x3d5f, 0x68b: 0x3d6f,\n\t0x68c: 0x3d67, 0x68d: 0x3d77, 0x690: 0x487b, 0x691: 0x4881,\n\t0x692: 0x3e97, 0x693: 0x3eaf, 0x694: 0x3e9f, 0x695: 0x3eb7, 0x696: 0x3ea7, 0x697: 0x3ebf,\n\t0x699: 0x47fd, 0x69b: 0x3d7f, 0x69d: 0x3d87,\n\t0x69f: 0x3d8f, 0x6a0: 0x4893, 0x6a1: 0x4899, 0x6a2: 0x4995, 0x6a3: 0x49ad,\n\t0x6a4: 0x499d, 0x6a5: 0x49b5, 0x6a6: 0x49a5, 0x6a7: 0x49bd, 0x6a8: 0x4803, 0x6a9: 0x4809,\n\t0x6aa: 0x4905, 0x6ab: 0x491d, 0x6ac: 0x490d, 0x6ad: 0x4925, 0x6ae: 0x4915, 0x6af: 0x492d,\n\t0x6b0: 0x480f, 0x6b1: 0x4335, 0x6b2: 0x36a8, 0x6b3: 0x433b, 0x6b4: 0x4839, 0x6b5: 0x4341,\n\t0x6b6: 0x36ba, 0x6b7: 0x4347, 0x6b8: 0x36d8, 0x6b9: 0x434d, 0x6ba: 0x36f0, 0x6bb: 0x4353,\n\t0x6bc: 0x4887, 0x6bd: 0x4359,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3db7, 0x6c1: 0x3dbf, 0x6c2: 0x419b, 0x6c3: 0x41b9, 0x6c4: 0x41a5, 0x6c5: 0x41c3,\n\t0x6c6: 0x41af, 0x6c7: 0x41cd, 0x6c8: 0x3cef, 0x6c9: 0x3cf7, 0x6ca: 0x40e7, 0x6cb: 0x4105,\n\t0x6cc: 0x40f1, 0x6cd: 0x410f, 0x6ce: 0x40fb, 0x6cf: 0x4119, 0x6d0: 0x3dff, 0x6d1: 0x3e07,\n\t0x6d2: 0x41d7, 0x6d3: 0x41f5, 0x6d4: 0x41e1, 0x6d5: 0x41ff, 0x6d6: 0x41eb, 0x6d7: 0x4209,\n\t0x6d8: 0x3d1f, 0x6d9: 0x3d27, 0x6da: 0x4123, 0x6db: 0x4141, 0x6dc: 0x412d, 0x6dd: 0x414b,\n\t0x6de: 0x4137, 0x6df: 0x4155, 0x6e0: 0x3ed7, 0x6e1: 0x3edf, 0x6e2: 0x4213, 0x6e3: 0x4231,\n\t0x6e4: 0x421d, 0x6e5: 0x423b, 0x6e6: 0x4227, 0x6e7: 0x4245, 0x6e8: 0x3d97, 0x6e9: 0x3d9f,\n\t0x6ea: 0x415f, 0x6eb: 0x417d, 0x6ec: 0x4169, 0x6ed: 0x4187, 0x6ee: 0x4173, 0x6ef: 0x4191,\n\t0x6f0: 0x369c, 0x6f1: 0x3696, 0x6f2: 0x3da7, 0x6f3: 0x36a2, 0x6f4: 0x3daf,\n\t0x6f6: 0x4827, 0x6f7: 0x3dc7, 0x6f8: 0x360c, 0x6f9: 0x3606, 0x6fa: 0x35fa, 0x6fb: 0x4305,\n\t0x6fc: 0x3612, 0x6fd: 0x429e, 0x6fe: 0x01d6, 0x6ff: 0x429e,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x42b7, 0x701: 0x4499, 0x702: 0x3def, 0x703: 0x36b4, 0x704: 0x3df7,\n\t0x706: 0x4851, 0x707: 0x3e0f, 0x708: 0x3618, 0x709: 0x430b, 0x70a: 0x3624, 0x70b: 0x4311,\n\t0x70c: 0x3630, 0x70d: 0x44a0, 0x70e: 0x44a7, 0x70f: 0x44ae, 0x710: 0x36cc, 0x711: 0x36c6,\n\t0x712: 0x3e17, 0x713: 0x44fb, 0x716: 0x36d2, 0x717: 0x3e27,\n\t0x718: 0x3648, 0x719: 0x3642, 0x71a: 0x3636, 0x71b: 0x4317, 0x71d: 0x44b5,\n\t0x71e: 0x44bc, 0x71f: 0x44c3, 0x720: 0x3702, 0x721: 0x36fc, 0x722: 0x3e7f, 0x723: 0x4503,\n\t0x724: 0x36e4, 0x725: 0x36ea, 0x726: 0x3708, 0x727: 0x3e8f, 0x728: 0x3678, 0x729: 0x3672,\n\t0x72a: 0x3666, 0x72b: 0x4323, 0x72c: 0x3660, 0x72d: 0x448b, 0x72e: 0x4492, 0x72f: 0x0081,\n\t0x732: 0x3ec7, 0x733: 0x370e, 0x734: 0x3ecf,\n\t0x736: 0x489f, 0x737: 0x3ee7, 0x738: 0x3654, 0x739: 0x431d, 0x73a: 0x3684, 0x73b: 0x432f,\n\t0x73c: 0x3690, 0x73d: 0x4271, 0x73e: 0x42a3,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x1bde, 0x741: 0x1be2, 0x742: 0x0047, 0x743: 0x1c5a, 0x745: 0x1bee,\n\t0x746: 0x1bf2, 0x747: 0x00e9, 0x749: 0x1c5e, 0x74a: 0x008f, 0x74b: 0x0051,\n\t0x74c: 0x0051, 0x74d: 0x0051, 0x74e: 0x0091, 0x74f: 0x00da, 0x750: 0x0053, 0x751: 0x0053,\n\t0x752: 0x0059, 0x753: 0x0099, 0x755: 0x005d, 0x756: 0x1993,\n\t0x759: 0x0061, 0x75a: 0x0063, 0x75b: 0x0065, 0x75c: 0x0065, 0x75d: 0x0065,\n\t0x760: 0x19a5, 0x761: 0x1bce, 0x762: 0x19ae,\n\t0x764: 0x0075, 0x766: 0x01bb, 0x768: 0x0075,\n\t0x76a: 0x0057, 0x76b: 0x42e9, 0x76c: 0x0045, 0x76d: 0x0047, 0x76f: 0x008b,\n\t0x770: 0x004b, 0x771: 0x004d, 0x773: 0x005b, 0x774: 0x009f, 0x775: 0x0218,\n\t0x776: 0x021b, 0x777: 0x021e, 0x778: 0x0221, 0x779: 0x0093, 0x77b: 0x1b9e,\n\t0x77c: 0x01eb, 0x77d: 0x01c4, 0x77e: 0x017c, 0x77f: 0x01a3,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x0466, 0x785: 0x0049,\n\t0x786: 0x0089, 0x787: 0x008b, 0x788: 0x0093, 0x789: 0x0095,\n\t0x790: 0x2234, 0x791: 0x2240,\n\t0x792: 0x22f4, 0x793: 0x221c, 0x794: 0x22a0, 0x795: 0x2228, 0x796: 0x22a6, 0x797: 0x22be,\n\t0x798: 0x22ca, 0x799: 0x222e, 0x79a: 0x22d0, 0x79b: 0x223a, 0x79c: 0x22c4, 0x79d: 0x22d6,\n\t0x79e: 0x22dc, 0x79f: 0x1cc2, 0x7a0: 0x0053, 0x7a1: 0x195d, 0x7a2: 0x1baa, 0x7a3: 0x1966,\n\t0x7a4: 0x006d, 0x7a5: 0x19b1, 0x7a6: 0x1bd6, 0x7a7: 0x1d4e, 0x7a8: 0x1969, 0x7a9: 0x0071,\n\t0x7aa: 0x19bd, 0x7ab: 0x1bda, 0x7ac: 0x0059, 0x7ad: 0x0047, 0x7ae: 0x0049, 0x7af: 0x005b,\n\t0x7b0: 0x0093, 0x7b1: 0x19ea, 0x7b2: 0x1c1e, 0x7b3: 0x19f3, 0x7b4: 0x00ad, 0x7b5: 0x1a68,\n\t0x7b6: 0x1c52, 0x7b7: 0x1d62, 0x7b8: 0x19f6, 0x7b9: 0x00b1, 0x7ba: 0x1a6b, 0x7bb: 0x1c56,\n\t0x7bc: 0x0099, 0x7bd: 0x0087, 0x7be: 0x0089, 0x7bf: 0x009b,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x3c1d, 0x7c3: 0xa000, 0x7c4: 0x3c24, 0x7c5: 0xa000,\n\t0x7c7: 0x3c2b, 0x7c8: 0xa000, 0x7c9: 0x3c32,\n\t0x7cd: 0xa000,\n\t0x7e0: 0x2f7c, 0x7e1: 0xa000, 0x7e2: 0x3c40,\n\t0x7e4: 0xa000, 0x7e5: 0xa000,\n\t0x7ed: 0x3c39, 0x7ee: 0x2f77, 0x7ef: 0x2f81,\n\t0x7f0: 0x3c47, 0x7f1: 0x3c4e, 0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0x3c55, 0x7f5: 0x3c5c,\n\t0x7f6: 0xa000, 0x7f7: 0xa000, 0x7f8: 0x3c63, 0x7f9: 0x3c6a, 0x7fa: 0xa000, 0x7fb: 0xa000,\n\t0x7fc: 0xa000, 0x7fd: 0xa000,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3c71, 0x801: 0x3c78, 0x802: 0xa000, 0x803: 0xa000, 0x804: 0x3c8d, 0x805: 0x3c94,\n\t0x806: 0xa000, 0x807: 0xa000, 0x808: 0x3c9b, 0x809: 0x3ca2,\n\t0x811: 0xa000,\n\t0x812: 0xa000,\n\t0x822: 0xa000,\n\t0x828: 0xa000, 0x829: 0xa000,\n\t0x82b: 0xa000, 0x82c: 0x3cb7, 0x82d: 0x3cbe, 0x82e: 0x3cc5, 0x82f: 0x3ccc,\n\t0x832: 0xa000, 0x833: 0xa000, 0x834: 0xa000, 0x835: 0xa000,\n\t// Block 0x21, offset 0x840\n\t0x860: 0x0023, 0x861: 0x0025, 0x862: 0x0027, 0x863: 0x0029,\n\t0x864: 0x002b, 0x865: 0x002d, 0x866: 0x002f, 0x867: 0x0031, 0x868: 0x0033, 0x869: 0x1885,\n\t0x86a: 0x1888, 0x86b: 0x188b, 0x86c: 0x188e, 0x86d: 0x1891, 0x86e: 0x1894, 0x86f: 0x1897,\n\t0x870: 0x189a, 0x871: 0x189d, 0x872: 0x18a0, 0x873: 0x18a9, 0x874: 0x1a6e, 0x875: 0x1a72,\n\t0x876: 0x1a76, 0x877: 0x1a7a, 0x878: 0x1a7e, 0x879: 0x1a82, 0x87a: 0x1a86, 0x87b: 0x1a8a,\n\t0x87c: 0x1a8e, 0x87d: 0x1c86, 0x87e: 0x1c8b, 0x87f: 0x1c90,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x1c95, 0x881: 0x1c9a, 0x882: 0x1c9f, 0x883: 0x1ca4, 0x884: 0x1ca9, 0x885: 0x1cae,\n\t0x886: 0x1cb3, 0x887: 0x1cb8, 0x888: 0x1882, 0x889: 0x18a6, 0x88a: 0x18ca, 0x88b: 0x18ee,\n\t0x88c: 0x1912, 0x88d: 0x191b, 0x88e: 0x1921, 0x88f: 0x1927, 0x890: 0x192d, 0x891: 0x1b66,\n\t0x892: 0x1b6a, 0x893: 0x1b6e, 0x894: 0x1b72, 0x895: 0x1b76, 0x896: 0x1b7a, 0x897: 0x1b7e,\n\t0x898: 0x1b82, 0x899: 0x1b86, 0x89a: 0x1b8a, 0x89b: 0x1b8e, 0x89c: 0x1afa, 0x89d: 0x1afe,\n\t0x89e: 0x1b02, 0x89f: 0x1b06, 0x8a0: 0x1b0a, 0x8a1: 0x1b0e, 0x8a2: 0x1b12, 0x8a3: 0x1b16,\n\t0x8a4: 0x1b1a, 0x8a5: 0x1b1e, 0x8a6: 0x1b22, 0x8a7: 0x1b26, 0x8a8: 0x1b2a, 0x8a9: 0x1b2e,\n\t0x8aa: 0x1b32, 0x8ab: 0x1b36, 0x8ac: 0x1b3a, 0x8ad: 0x1b3e, 0x8ae: 0x1b42, 0x8af: 0x1b46,\n\t0x8b0: 0x1b4a, 0x8b1: 0x1b4e, 0x8b2: 0x1b52, 0x8b3: 0x1b56, 0x8b4: 0x1b5a, 0x8b5: 0x1b5e,\n\t0x8b6: 0x0043, 0x8b7: 0x0045, 0x8b8: 0x0047, 0x8b9: 0x0049, 0x8ba: 0x004b, 0x8bb: 0x004d,\n\t0x8bc: 0x004f, 0x8bd: 0x0051, 0x8be: 0x0053, 0x8bf: 0x0055,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x06c2, 0x8c1: 0x06e6, 0x8c2: 0x06f2, 0x8c3: 0x0702, 0x8c4: 0x070a, 0x8c5: 0x0716,\n\t0x8c6: 0x071e, 0x8c7: 0x0726, 0x8c8: 0x0732, 0x8c9: 0x0786, 0x8ca: 0x079e, 0x8cb: 0x07ae,\n\t0x8cc: 0x07be, 0x8cd: 0x07ce, 0x8ce: 0x07de, 0x8cf: 0x07fe, 0x8d0: 0x0802, 0x8d1: 0x0806,\n\t0x8d2: 0x083a, 0x8d3: 0x0862, 0x8d4: 0x0872, 0x8d5: 0x087a, 0x8d6: 0x087e, 0x8d7: 0x088a,\n\t0x8d8: 0x08a6, 0x8d9: 0x08aa, 0x8da: 0x08c2, 0x8db: 0x08c6, 0x8dc: 0x08ce, 0x8dd: 0x08de,\n\t0x8de: 0x097a, 0x8df: 0x098e, 0x8e0: 0x09ce, 0x8e1: 0x09e2, 0x8e2: 0x09ea, 0x8e3: 0x09ee,\n\t0x8e4: 0x09fe, 0x8e5: 0x0a1a, 0x8e6: 0x0a46, 0x8e7: 0x0a52, 0x8e8: 0x0a72, 0x8e9: 0x0a7e,\n\t0x8ea: 0x0a82, 0x8eb: 0x0a86, 0x8ec: 0x0a9e, 0x8ed: 0x0aa2, 0x8ee: 0x0ace, 0x8ef: 0x0ada,\n\t0x8f0: 0x0ae2, 0x8f1: 0x0aea, 0x8f2: 0x0afa, 0x8f3: 0x0b02, 0x8f4: 0x0b0a, 0x8f5: 0x0b36,\n\t0x8f6: 0x0b3a, 0x8f7: 0x0b42, 0x8f8: 0x0b46, 0x8f9: 0x0b4e, 0x8fa: 0x0b56, 0x8fb: 0x0b66,\n\t0x8fc: 0x0b82, 0x8fd: 0x0bfa, 0x8fe: 0x0c0e, 0x8ff: 0x0c12,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0c92, 0x901: 0x0c96, 0x902: 0x0caa, 0x903: 0x0cae, 0x904: 0x0cb6, 0x905: 0x0cbe,\n\t0x906: 0x0cc6, 0x907: 0x0cd2, 0x908: 0x0cfa, 0x909: 0x0d0a, 0x90a: 0x0d1e, 0x90b: 0x0d8e,\n\t0x90c: 0x0d9a, 0x90d: 0x0daa, 0x90e: 0x0db6, 0x90f: 0x0dc2, 0x910: 0x0dca, 0x911: 0x0dce,\n\t0x912: 0x0dd2, 0x913: 0x0dd6, 0x914: 0x0dda, 0x915: 0x0e92, 0x916: 0x0eda, 0x917: 0x0ee6,\n\t0x918: 0x0eea, 0x919: 0x0eee, 0x91a: 0x0ef2, 0x91b: 0x0efa, 0x91c: 0x0efe, 0x91d: 0x0f12,\n\t0x91e: 0x0f2e, 0x91f: 0x0f36, 0x920: 0x0f76, 0x921: 0x0f7a, 0x922: 0x0f82, 0x923: 0x0f86,\n\t0x924: 0x0f8e, 0x925: 0x0f92, 0x926: 0x0fb6, 0x927: 0x0fba, 0x928: 0x0fd6, 0x929: 0x0fda,\n\t0x92a: 0x0fde, 0x92b: 0x0fe2, 0x92c: 0x0ff6, 0x92d: 0x101a, 0x92e: 0x101e, 0x92f: 0x1022,\n\t0x930: 0x1046, 0x931: 0x1086, 0x932: 0x108a, 0x933: 0x10aa, 0x934: 0x10ba, 0x935: 0x10c2,\n\t0x936: 0x10e2, 0x937: 0x1106, 0x938: 0x114a, 0x939: 0x1152, 0x93a: 0x1166, 0x93b: 0x1172,\n\t0x93c: 0x117a, 0x93d: 0x1182, 0x93e: 0x1186, 0x93f: 0x118a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x11a2, 0x941: 0x11a6, 0x942: 0x11c2, 0x943: 0x11ca, 0x944: 0x11d2, 0x945: 0x11d6,\n\t0x946: 0x11e2, 0x947: 0x11ea, 0x948: 0x11ee, 0x949: 0x11f2, 0x94a: 0x11fa, 0x94b: 0x11fe,\n\t0x94c: 0x129e, 0x94d: 0x12b2, 0x94e: 0x12e6, 0x94f: 0x12ea, 0x950: 0x12f2, 0x951: 0x131e,\n\t0x952: 0x1326, 0x953: 0x132e, 0x954: 0x1336, 0x955: 0x1372, 0x956: 0x1376, 0x957: 0x137e,\n\t0x958: 0x1382, 0x959: 0x1386, 0x95a: 0x13b2, 0x95b: 0x13b6, 0x95c: 0x13be, 0x95d: 0x13d2,\n\t0x95e: 0x13d6, 0x95f: 0x13f2, 0x960: 0x13fa, 0x961: 0x13fe, 0x962: 0x1422, 0x963: 0x1442,\n\t0x964: 0x1456, 0x965: 0x145a, 0x966: 0x1462, 0x967: 0x148e, 0x968: 0x1492, 0x969: 0x14a2,\n\t0x96a: 0x14c6, 0x96b: 0x14d2, 0x96c: 0x14e2, 0x96d: 0x14fa, 0x96e: 0x1502, 0x96f: 0x1506,\n\t0x970: 0x150a, 0x971: 0x150e, 0x972: 0x151a, 0x973: 0x151e, 0x974: 0x1526, 0x975: 0x1542,\n\t0x976: 0x1546, 0x977: 0x154a, 0x978: 0x1562, 0x979: 0x1566, 0x97a: 0x156e, 0x97b: 0x1582,\n\t0x97c: 0x1586, 0x97d: 0x158a, 0x97e: 0x1592, 0x97f: 0x1596,\n\t// Block 0x26, offset 0x980\n\t0x986: 0xa000, 0x98b: 0xa000,\n\t0x98c: 0x3f1f, 0x98d: 0xa000, 0x98e: 0x3f27, 0x98f: 0xa000, 0x990: 0x3f2f, 0x991: 0xa000,\n\t0x992: 0x3f37, 0x993: 0xa000, 0x994: 0x3f3f, 0x995: 0xa000, 0x996: 0x3f47, 0x997: 0xa000,\n\t0x998: 0x3f4f, 0x999: 0xa000, 0x99a: 0x3f57, 0x99b: 0xa000, 0x99c: 0x3f5f, 0x99d: 0xa000,\n\t0x99e: 0x3f67, 0x99f: 0xa000, 0x9a0: 0x3f6f, 0x9a1: 0xa000, 0x9a2: 0x3f77,\n\t0x9a4: 0xa000, 0x9a5: 0x3f7f, 0x9a6: 0xa000, 0x9a7: 0x3f87, 0x9a8: 0xa000, 0x9a9: 0x3f8f,\n\t0x9af: 0xa000,\n\t0x9b0: 0x3f97, 0x9b1: 0x3f9f, 0x9b2: 0xa000, 0x9b3: 0x3fa7, 0x9b4: 0x3faf, 0x9b5: 0xa000,\n\t0x9b6: 0x3fb7, 0x9b7: 0x3fbf, 0x9b8: 0xa000, 0x9b9: 0x3fc7, 0x9ba: 0x3fcf, 0x9bb: 0xa000,\n\t0x9bc: 0x3fd7, 0x9bd: 0x3fdf,\n\t// Block 0x27, offset 0x9c0\n\t0x9d4: 0x3f17,\n\t0x9d9: 0x9904, 0x9da: 0x9904, 0x9db: 0x42f3, 0x9dc: 0x42f9, 0x9dd: 0xa000,\n\t0x9de: 0x3fe7, 0x9df: 0x26ba,\n\t0x9e6: 0xa000,\n\t0x9eb: 0xa000, 0x9ec: 0x3ff7, 0x9ed: 0xa000, 0x9ee: 0x3fff, 0x9ef: 0xa000,\n\t0x9f0: 0x4007, 0x9f1: 0xa000, 0x9f2: 0x400f, 0x9f3: 0xa000, 0x9f4: 0x4017, 0x9f5: 0xa000,\n\t0x9f6: 0x401f, 0x9f7: 0xa000, 0x9f8: 0x4027, 0x9f9: 0xa000, 0x9fa: 0x402f, 0x9fb: 0xa000,\n\t0x9fc: 0x4037, 0x9fd: 0xa000, 0x9fe: 0x403f, 0x9ff: 0xa000,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x4047, 0xa01: 0xa000, 0xa02: 0x404f, 0xa04: 0xa000, 0xa05: 0x4057,\n\t0xa06: 0xa000, 0xa07: 0x405f, 0xa08: 0xa000, 0xa09: 0x4067,\n\t0xa0f: 0xa000, 0xa10: 0x406f, 0xa11: 0x4077,\n\t0xa12: 0xa000, 0xa13: 0x407f, 0xa14: 0x4087, 0xa15: 0xa000, 0xa16: 0x408f, 0xa17: 0x4097,\n\t0xa18: 0xa000, 0xa19: 0x409f, 0xa1a: 0x40a7, 0xa1b: 0xa000, 0xa1c: 0x40af, 0xa1d: 0x40b7,\n\t0xa2f: 0xa000,\n\t0xa30: 0xa000, 0xa31: 0xa000, 0xa32: 0xa000, 0xa34: 0x3fef,\n\t0xa37: 0x40bf, 0xa38: 0x40c7, 0xa39: 0x40cf, 0xa3a: 0x40d7,\n\t0xa3d: 0xa000, 0xa3e: 0x40df, 0xa3f: 0x26cf,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x036a, 0xa41: 0x032e, 0xa42: 0x0332, 0xa43: 0x0336, 0xa44: 0x037e, 0xa45: 0x033a,\n\t0xa46: 0x033e, 0xa47: 0x0342, 0xa48: 0x0346, 0xa49: 0x034a, 0xa4a: 0x034e, 0xa4b: 0x0352,\n\t0xa4c: 0x0356, 0xa4d: 0x035a, 0xa4e: 0x035e, 0xa4f: 0x49d4, 0xa50: 0x49da, 0xa51: 0x49e0,\n\t0xa52: 0x49e6, 0xa53: 0x49ec, 0xa54: 0x49f2, 0xa55: 0x49f8, 0xa56: 0x49fe, 0xa57: 0x4a04,\n\t0xa58: 0x4a0a, 0xa59: 0x4a10, 0xa5a: 0x4a16, 0xa5b: 0x4a1c, 0xa5c: 0x4a22, 0xa5d: 0x4a28,\n\t0xa5e: 0x4a2e, 0xa5f: 0x4a34, 0xa60: 0x4a3a, 0xa61: 0x4a40, 0xa62: 0x4a46, 0xa63: 0x4a4c,\n\t0xa64: 0x03c6, 0xa65: 0x0362, 0xa66: 0x0366, 0xa67: 0x03ea, 0xa68: 0x03ee, 0xa69: 0x03f2,\n\t0xa6a: 0x03f6, 0xa6b: 0x03fa, 0xa6c: 0x03fe, 0xa6d: 0x0402, 0xa6e: 0x036e, 0xa6f: 0x0406,\n\t0xa70: 0x040a, 0xa71: 0x0372, 0xa72: 0x0376, 0xa73: 0x037a, 0xa74: 0x0382, 0xa75: 0x0386,\n\t0xa76: 0x038a, 0xa77: 0x038e, 0xa78: 0x0392, 0xa79: 0x0396, 0xa7a: 0x039a, 0xa7b: 0x039e,\n\t0xa7c: 0x03a2, 0xa7d: 0x03a6, 0xa7e: 0x03aa, 0xa7f: 0x03ae,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x03b2, 0xa81: 0x03b6, 0xa82: 0x040e, 0xa83: 0x0412, 0xa84: 0x03ba, 0xa85: 0x03be,\n\t0xa86: 0x03c2, 0xa87: 0x03ca, 0xa88: 0x03ce, 0xa89: 0x03d2, 0xa8a: 0x03d6, 0xa8b: 0x03da,\n\t0xa8c: 0x03de, 0xa8d: 0x03e2, 0xa8e: 0x03e6,\n\t0xa92: 0x06c2, 0xa93: 0x071e, 0xa94: 0x06ce, 0xa95: 0x097e, 0xa96: 0x06d2, 0xa97: 0x06ea,\n\t0xa98: 0x06d6, 0xa99: 0x0f96, 0xa9a: 0x070a, 0xa9b: 0x06de, 0xa9c: 0x06c6, 0xa9d: 0x0a02,\n\t0xa9e: 0x0992, 0xa9f: 0x0732,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x205a, 0xac1: 0x2060, 0xac2: 0x2066, 0xac3: 0x206c, 0xac4: 0x2072, 0xac5: 0x2078,\n\t0xac6: 0x207e, 0xac7: 0x2084, 0xac8: 0x208a, 0xac9: 0x2090, 0xaca: 0x2096, 0xacb: 0x209c,\n\t0xacc: 0x20a2, 0xacd: 0x20a8, 0xace: 0x2733, 0xacf: 0x273c, 0xad0: 0x2745, 0xad1: 0x274e,\n\t0xad2: 0x2757, 0xad3: 0x2760, 0xad4: 0x2769, 0xad5: 0x2772, 0xad6: 0x277b, 0xad7: 0x278d,\n\t0xad8: 0x2796, 0xad9: 0x279f, 0xada: 0x27a8, 0xadb: 0x27b1, 0xadc: 0x2784, 0xadd: 0x2bb9,\n\t0xade: 0x2afa, 0xae0: 0x20ae, 0xae1: 0x20c6, 0xae2: 0x20ba, 0xae3: 0x210e,\n\t0xae4: 0x20cc, 0xae5: 0x20ea, 0xae6: 0x20b4, 0xae7: 0x20e4, 0xae8: 0x20c0, 0xae9: 0x20f6,\n\t0xaea: 0x2126, 0xaeb: 0x2144, 0xaec: 0x213e, 0xaed: 0x2132, 0xaee: 0x2180, 0xaef: 0x2114,\n\t0xaf0: 0x2120, 0xaf1: 0x2138, 0xaf2: 0x212c, 0xaf3: 0x2156, 0xaf4: 0x2102, 0xaf5: 0x214a,\n\t0xaf6: 0x2174, 0xaf7: 0x215c, 0xaf8: 0x20f0, 0xaf9: 0x20d2, 0xafa: 0x2108, 0xafb: 0x211a,\n\t0xafc: 0x2150, 0xafd: 0x20d8, 0xafe: 0x217a, 0xaff: 0x20fc,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x2162, 0xb01: 0x20de, 0xb02: 0x2168, 0xb03: 0x216e, 0xb04: 0x0932, 0xb05: 0x0b06,\n\t0xb06: 0x0caa, 0xb07: 0x10ca,\n\t0xb10: 0x1bca, 0xb11: 0x18ac,\n\t0xb12: 0x18af, 0xb13: 0x18b2, 0xb14: 0x18b5, 0xb15: 0x18b8, 0xb16: 0x18bb, 0xb17: 0x18be,\n\t0xb18: 0x18c1, 0xb19: 0x18c4, 0xb1a: 0x18cd, 0xb1b: 0x18d0, 0xb1c: 0x18d3, 0xb1d: 0x18d6,\n\t0xb1e: 0x18d9, 0xb1f: 0x18dc, 0xb20: 0x0316, 0xb21: 0x031e, 0xb22: 0x0322, 0xb23: 0x032a,\n\t0xb24: 0x032e, 0xb25: 0x0332, 0xb26: 0x033a, 0xb27: 0x0342, 0xb28: 0x0346, 0xb29: 0x034e,\n\t0xb2a: 0x0352, 0xb2b: 0x0356, 0xb2c: 0x035a, 0xb2d: 0x035e, 0xb2e: 0x2e2f, 0xb2f: 0x2e37,\n\t0xb30: 0x2e3f, 0xb31: 0x2e47, 0xb32: 0x2e4f, 0xb33: 0x2e57, 0xb34: 0x2e5f, 0xb35: 0x2e67,\n\t0xb36: 0x2e77, 0xb37: 0x2e7f, 0xb38: 0x2e87, 0xb39: 0x2e8f, 0xb3a: 0x2e97, 0xb3b: 0x2e9f,\n\t0xb3c: 0x2eea, 0xb3d: 0x2eb2, 0xb3e: 0x2e6f,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x06c2, 0xb41: 0x071e, 0xb42: 0x06ce, 0xb43: 0x097e, 0xb44: 0x0722, 0xb45: 0x07b2,\n\t0xb46: 0x06ca, 0xb47: 0x07ae, 0xb48: 0x070e, 0xb49: 0x088a, 0xb4a: 0x0d0a, 0xb4b: 0x0e92,\n\t0xb4c: 0x0dda, 0xb4d: 0x0d1e, 0xb4e: 0x1462, 0xb4f: 0x098e, 0xb50: 0x0cd2, 0xb51: 0x0d4e,\n\t0xb52: 0x0d0e, 0xb53: 0x104e, 0xb54: 0x08fe, 0xb55: 0x0f06, 0xb56: 0x138a, 0xb57: 0x1062,\n\t0xb58: 0x0846, 0xb59: 0x1092, 0xb5a: 0x0f9e, 0xb5b: 0x0a1a, 0xb5c: 0x1412, 0xb5d: 0x0782,\n\t0xb5e: 0x08ae, 0xb5f: 0x0dfa, 0xb60: 0x152a, 0xb61: 0x0746, 0xb62: 0x07d6, 0xb63: 0x0d9e,\n\t0xb64: 0x06d2, 0xb65: 0x06ea, 0xb66: 0x06d6, 0xb67: 0x0ade, 0xb68: 0x08f2, 0xb69: 0x0882,\n\t0xb6a: 0x0a5a, 0xb6b: 0x0a4e, 0xb6c: 0x0fee, 0xb6d: 0x0742, 0xb6e: 0x139e, 0xb6f: 0x089e,\n\t0xb70: 0x09f6, 0xb71: 0x18df, 0xb72: 0x18e2, 0xb73: 0x18e5, 0xb74: 0x18e8, 0xb75: 0x18f1,\n\t0xb76: 0x18f4, 0xb77: 0x18f7, 0xb78: 0x18fa, 0xb79: 0x18fd, 0xb7a: 0x1900, 0xb7b: 0x1903,\n\t0xb7c: 0x1906, 0xb7d: 0x1909, 0xb7e: 0x190c, 0xb7f: 0x1915,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x1ccc, 0xb81: 0x1cdb, 0xb82: 0x1cea, 0xb83: 0x1cf9, 0xb84: 0x1d08, 0xb85: 0x1d17,\n\t0xb86: 0x1d26, 0xb87: 0x1d35, 0xb88: 0x1d44, 0xb89: 0x2192, 0xb8a: 0x21a4, 0xb8b: 0x21b6,\n\t0xb8c: 0x1957, 0xb8d: 0x1c0a, 0xb8e: 0x19d8, 0xb8f: 0x1bae, 0xb90: 0x04ce, 0xb91: 0x04d6,\n\t0xb92: 0x04de, 0xb93: 0x04e6, 0xb94: 0x04ee, 0xb95: 0x04f2, 0xb96: 0x04f6, 0xb97: 0x04fa,\n\t0xb98: 0x04fe, 0xb99: 0x0502, 0xb9a: 0x0506, 0xb9b: 0x050a, 0xb9c: 0x050e, 0xb9d: 0x0512,\n\t0xb9e: 0x0516, 0xb9f: 0x051a, 0xba0: 0x051e, 0xba1: 0x0526, 0xba2: 0x052a, 0xba3: 0x052e,\n\t0xba4: 0x0532, 0xba5: 0x0536, 0xba6: 0x053a, 0xba7: 0x053e, 0xba8: 0x0542, 0xba9: 0x0546,\n\t0xbaa: 0x054a, 0xbab: 0x054e, 0xbac: 0x0552, 0xbad: 0x0556, 0xbae: 0x055a, 0xbaf: 0x055e,\n\t0xbb0: 0x0562, 0xbb1: 0x0566, 0xbb2: 0x056a, 0xbb3: 0x0572, 0xbb4: 0x057a, 0xbb5: 0x0582,\n\t0xbb6: 0x0586, 0xbb7: 0x058a, 0xbb8: 0x058e, 0xbb9: 0x0592, 0xbba: 0x0596, 0xbbb: 0x059a,\n\t0xbbc: 0x059e, 0xbbd: 0x05a2, 0xbbe: 0x05a6, 0xbbf: 0x2700,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x2b19, 0xbc1: 0x29b5, 0xbc2: 0x2b29, 0xbc3: 0x288d, 0xbc4: 0x2efb, 0xbc5: 0x2897,\n\t0xbc6: 0x28a1, 0xbc7: 0x2f3f, 0xbc8: 0x29c2, 0xbc9: 0x28ab, 0xbca: 0x28b5, 0xbcb: 0x28bf,\n\t0xbcc: 0x29e9, 0xbcd: 0x29f6, 0xbce: 0x29cf, 0xbcf: 0x29dc, 0xbd0: 0x2ec0, 0xbd1: 0x2a03,\n\t0xbd2: 0x2a10, 0xbd3: 0x2bcb, 0xbd4: 0x26c1, 0xbd5: 0x2bde, 0xbd6: 0x2bf1, 0xbd7: 0x2b39,\n\t0xbd8: 0x2a1d, 0xbd9: 0x2c04, 0xbda: 0x2c17, 0xbdb: 0x2a2a, 0xbdc: 0x28c9, 0xbdd: 0x28d3,\n\t0xbde: 0x2ece, 0xbdf: 0x2a37, 0xbe0: 0x2b49, 0xbe1: 0x2f0c, 0xbe2: 0x28dd, 0xbe3: 0x28e7,\n\t0xbe4: 0x2a44, 0xbe5: 0x28f1, 0xbe6: 0x28fb, 0xbe7: 0x26d6, 0xbe8: 0x26dd, 0xbe9: 0x2905,\n\t0xbea: 0x290f, 0xbeb: 0x2c2a, 0xbec: 0x2a51, 0xbed: 0x2b59, 0xbee: 0x2c3d, 0xbef: 0x2a5e,\n\t0xbf0: 0x2923, 0xbf1: 0x2919, 0xbf2: 0x2f53, 0xbf3: 0x2a6b, 0xbf4: 0x2c50, 0xbf5: 0x292d,\n\t0xbf6: 0x2b69, 0xbf7: 0x2937, 0xbf8: 0x2a85, 0xbf9: 0x2941, 0xbfa: 0x2a92, 0xbfb: 0x2f1d,\n\t0xbfc: 0x2a78, 0xbfd: 0x2b79, 0xbfe: 0x2a9f, 0xbff: 0x26e4,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x2f2e, 0xc01: 0x294b, 0xc02: 0x2955, 0xc03: 0x2aac, 0xc04: 0x295f, 0xc05: 0x2969,\n\t0xc06: 0x2973, 0xc07: 0x2b89, 0xc08: 0x2ab9, 0xc09: 0x26eb, 0xc0a: 0x2c63, 0xc0b: 0x2ea7,\n\t0xc0c: 0x2b99, 0xc0d: 0x2ac6, 0xc0e: 0x2edc, 0xc0f: 0x297d, 0xc10: 0x2987, 0xc11: 0x2ad3,\n\t0xc12: 0x26f2, 0xc13: 0x2ae0, 0xc14: 0x2ba9, 0xc15: 0x26f9, 0xc16: 0x2c76, 0xc17: 0x2991,\n\t0xc18: 0x1cbd, 0xc19: 0x1cd1, 0xc1a: 0x1ce0, 0xc1b: 0x1cef, 0xc1c: 0x1cfe, 0xc1d: 0x1d0d,\n\t0xc1e: 0x1d1c, 0xc1f: 0x1d2b, 0xc20: 0x1d3a, 0xc21: 0x1d49, 0xc22: 0x2198, 0xc23: 0x21aa,\n\t0xc24: 0x21bc, 0xc25: 0x21c8, 0xc26: 0x21d4, 0xc27: 0x21e0, 0xc28: 0x21ec, 0xc29: 0x21f8,\n\t0xc2a: 0x2204, 0xc2b: 0x2210, 0xc2c: 0x224c, 0xc2d: 0x2258, 0xc2e: 0x2264, 0xc2f: 0x2270,\n\t0xc30: 0x227c, 0xc31: 0x1c1a, 0xc32: 0x19cc, 0xc33: 0x1939, 0xc34: 0x1bea, 0xc35: 0x1a4d,\n\t0xc36: 0x1a5c, 0xc37: 0x19d2, 0xc38: 0x1c02, 0xc39: 0x1c06, 0xc3a: 0x1963, 0xc3b: 0x270e,\n\t0xc3c: 0x271c, 0xc3d: 0x2707, 0xc3e: 0x2715, 0xc3f: 0x2aed,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1a50, 0xc41: 0x1a38, 0xc42: 0x1c66, 0xc43: 0x1a20, 0xc44: 0x19f9, 0xc45: 0x196c,\n\t0xc46: 0x197b, 0xc47: 0x194b, 0xc48: 0x1bf6, 0xc49: 0x1d58, 0xc4a: 0x1a53, 0xc4b: 0x1a3b,\n\t0xc4c: 0x1c6a, 0xc4d: 0x1c76, 0xc4e: 0x1a2c, 0xc4f: 0x1a02, 0xc50: 0x195a, 0xc51: 0x1c22,\n\t0xc52: 0x1bb6, 0xc53: 0x1ba2, 0xc54: 0x1bd2, 0xc55: 0x1c7a, 0xc56: 0x1a2f, 0xc57: 0x19cf,\n\t0xc58: 0x1a05, 0xc59: 0x19e4, 0xc5a: 0x1a47, 0xc5b: 0x1c7e, 0xc5c: 0x1a32, 0xc5d: 0x19c6,\n\t0xc5e: 0x1a08, 0xc5f: 0x1c42, 0xc60: 0x1bfa, 0xc61: 0x1a1a, 0xc62: 0x1c2a, 0xc63: 0x1c46,\n\t0xc64: 0x1bfe, 0xc65: 0x1a1d, 0xc66: 0x1c2e, 0xc67: 0x22ee, 0xc68: 0x2302, 0xc69: 0x199c,\n\t0xc6a: 0x1c26, 0xc6b: 0x1bba, 0xc6c: 0x1ba6, 0xc6d: 0x1c4e, 0xc6e: 0x2723, 0xc6f: 0x27ba,\n\t0xc70: 0x1a5f, 0xc71: 0x1a4a, 0xc72: 0x1c82, 0xc73: 0x1a35, 0xc74: 0x1a56, 0xc75: 0x1a3e,\n\t0xc76: 0x1c6e, 0xc77: 0x1a23, 0xc78: 0x19fc, 0xc79: 0x1987, 0xc7a: 0x1a59, 0xc7b: 0x1a41,\n\t0xc7c: 0x1c72, 0xc7d: 0x1a26, 0xc7e: 0x19ff, 0xc7f: 0x198a,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x1c32, 0xc81: 0x1bbe, 0xc82: 0x1d53, 0xc83: 0x193c, 0xc84: 0x19c0, 0xc85: 0x19c3,\n\t0xc86: 0x22fb, 0xc87: 0x1b9a, 0xc88: 0x19c9, 0xc89: 0x194e, 0xc8a: 0x19e7, 0xc8b: 0x1951,\n\t0xc8c: 0x19f0, 0xc8d: 0x196f, 0xc8e: 0x1972, 0xc8f: 0x1a0b, 0xc90: 0x1a11, 0xc91: 0x1a14,\n\t0xc92: 0x1c36, 0xc93: 0x1a17, 0xc94: 0x1a29, 0xc95: 0x1c3e, 0xc96: 0x1c4a, 0xc97: 0x1996,\n\t0xc98: 0x1d5d, 0xc99: 0x1bc2, 0xc9a: 0x1999, 0xc9b: 0x1a62, 0xc9c: 0x19ab, 0xc9d: 0x19ba,\n\t0xc9e: 0x22e8, 0xc9f: 0x22e2, 0xca0: 0x1cc7, 0xca1: 0x1cd6, 0xca2: 0x1ce5, 0xca3: 0x1cf4,\n\t0xca4: 0x1d03, 0xca5: 0x1d12, 0xca6: 0x1d21, 0xca7: 0x1d30, 0xca8: 0x1d3f, 0xca9: 0x218c,\n\t0xcaa: 0x219e, 0xcab: 0x21b0, 0xcac: 0x21c2, 0xcad: 0x21ce, 0xcae: 0x21da, 0xcaf: 0x21e6,\n\t0xcb0: 0x21f2, 0xcb1: 0x21fe, 0xcb2: 0x220a, 0xcb3: 0x2246, 0xcb4: 0x2252, 0xcb5: 0x225e,\n\t0xcb6: 0x226a, 0xcb7: 0x2276, 0xcb8: 0x2282, 0xcb9: 0x2288, 0xcba: 0x228e, 0xcbb: 0x2294,\n\t0xcbc: 0x229a, 0xcbd: 0x22ac, 0xcbe: 0x22b2, 0xcbf: 0x1c16,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x137a, 0xcc1: 0x0cfe, 0xcc2: 0x13d6, 0xcc3: 0x13a2, 0xcc4: 0x0e5a, 0xcc5: 0x06ee,\n\t0xcc6: 0x08e2, 0xcc7: 0x162e, 0xcc8: 0x162e, 0xcc9: 0x0a0e, 0xcca: 0x1462, 0xccb: 0x0946,\n\t0xccc: 0x0a0a, 0xccd: 0x0bf2, 0xcce: 0x0fd2, 0xccf: 0x1162, 0xcd0: 0x129a, 0xcd1: 0x12d6,\n\t0xcd2: 0x130a, 0xcd3: 0x141e, 0xcd4: 0x0d76, 0xcd5: 0x0e02, 0xcd6: 0x0eae, 0xcd7: 0x0f46,\n\t0xcd8: 0x1262, 0xcd9: 0x144a, 0xcda: 0x1576, 0xcdb: 0x0712, 0xcdc: 0x08b6, 0xcdd: 0x0d8a,\n\t0xcde: 0x0ed2, 0xcdf: 0x1296, 0xce0: 0x15c6, 0xce1: 0x0ab6, 0xce2: 0x0e7a, 0xce3: 0x1286,\n\t0xce4: 0x131a, 0xce5: 0x0c26, 0xce6: 0x11be, 0xce7: 0x12e2, 0xce8: 0x0b22, 0xce9: 0x0d12,\n\t0xcea: 0x0e1a, 0xceb: 0x0f1e, 0xcec: 0x142a, 0xced: 0x0752, 0xcee: 0x07ea, 0xcef: 0x0856,\n\t0xcf0: 0x0c8e, 0xcf1: 0x0d82, 0xcf2: 0x0ece, 0xcf3: 0x0ff2, 0xcf4: 0x117a, 0xcf5: 0x128e,\n\t0xcf6: 0x12a6, 0xcf7: 0x13ca, 0xcf8: 0x14f2, 0xcf9: 0x15a6, 0xcfa: 0x15c2, 0xcfb: 0x102e,\n\t0xcfc: 0x106e, 0xcfd: 0x1126, 0xcfe: 0x1246, 0xcff: 0x147e,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x15ce, 0xd01: 0x134e, 0xd02: 0x09ca, 0xd03: 0x0b3e, 0xd04: 0x10de, 0xd05: 0x119e,\n\t0xd06: 0x0f02, 0xd07: 0x1036, 0xd08: 0x139a, 0xd09: 0x14ea, 0xd0a: 0x09c6, 0xd0b: 0x0a92,\n\t0xd0c: 0x0d7a, 0xd0d: 0x0e2e, 0xd0e: 0x0e62, 0xd0f: 0x1116, 0xd10: 0x113e, 0xd11: 0x14aa,\n\t0xd12: 0x0852, 0xd13: 0x11aa, 0xd14: 0x07f6, 0xd15: 0x07f2, 0xd16: 0x109a, 0xd17: 0x112a,\n\t0xd18: 0x125e, 0xd19: 0x14b2, 0xd1a: 0x136a, 0xd1b: 0x0c2a, 0xd1c: 0x0d76, 0xd1d: 0x135a,\n\t0xd1e: 0x06fa, 0xd1f: 0x0a66, 0xd20: 0x0b96, 0xd21: 0x0f32, 0xd22: 0x0fb2, 0xd23: 0x0876,\n\t0xd24: 0x103e, 0xd25: 0x0762, 0xd26: 0x0b7a, 0xd27: 0x06da, 0xd28: 0x0dee, 0xd29: 0x0ca6,\n\t0xd2a: 0x1112, 0xd2b: 0x08ca, 0xd2c: 0x09b6, 0xd2d: 0x0ffe, 0xd2e: 0x1266, 0xd2f: 0x133e,\n\t0xd30: 0x0dba, 0xd31: 0x13fa, 0xd32: 0x0de6, 0xd33: 0x0c3a, 0xd34: 0x121e, 0xd35: 0x0c5a,\n\t0xd36: 0x0fae, 0xd37: 0x072e, 0xd38: 0x07aa, 0xd39: 0x07ee, 0xd3a: 0x0d56, 0xd3b: 0x10fe,\n\t0xd3c: 0x11f6, 0xd3d: 0x134a, 0xd3e: 0x145e, 0xd3f: 0x085e,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x0912, 0xd41: 0x0a1a, 0xd42: 0x0b32, 0xd43: 0x0cc2, 0xd44: 0x0e7e, 0xd45: 0x1042,\n\t0xd46: 0x149a, 0xd47: 0x157e, 0xd48: 0x15d2, 0xd49: 0x15ea, 0xd4a: 0x083a, 0xd4b: 0x0cf6,\n\t0xd4c: 0x0da6, 0xd4d: 0x13ee, 0xd4e: 0x0afe, 0xd4f: 0x0bda, 0xd50: 0x0bf6, 0xd51: 0x0c86,\n\t0xd52: 0x0e6e, 0xd53: 0x0eba, 0xd54: 0x0f6a, 0xd55: 0x108e, 0xd56: 0x1132, 0xd57: 0x1196,\n\t0xd58: 0x13de, 0xd59: 0x126e, 0xd5a: 0x1406, 0xd5b: 0x1482, 0xd5c: 0x0812, 0xd5d: 0x083e,\n\t0xd5e: 0x0926, 0xd5f: 0x0eaa, 0xd60: 0x12f6, 0xd61: 0x133e, 0xd62: 0x0b1e, 0xd63: 0x0b8e,\n\t0xd64: 0x0c52, 0xd65: 0x0db2, 0xd66: 0x10da, 0xd67: 0x0f26, 0xd68: 0x073e, 0xd69: 0x0982,\n\t0xd6a: 0x0a66, 0xd6b: 0x0aca, 0xd6c: 0x0b9a, 0xd6d: 0x0f42, 0xd6e: 0x0f5e, 0xd6f: 0x116e,\n\t0xd70: 0x118e, 0xd71: 0x1466, 0xd72: 0x14e6, 0xd73: 0x14f6, 0xd74: 0x1532, 0xd75: 0x0756,\n\t0xd76: 0x1082, 0xd77: 0x1452, 0xd78: 0x14ce, 0xd79: 0x0bb2, 0xd7a: 0x071a, 0xd7b: 0x077a,\n\t0xd7c: 0x0a6a, 0xd7d: 0x0a8a, 0xd7e: 0x0cb2, 0xd7f: 0x0d76,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0ec6, 0xd81: 0x0fce, 0xd82: 0x127a, 0xd83: 0x141a, 0xd84: 0x1626, 0xd85: 0x0ce6,\n\t0xd86: 0x14a6, 0xd87: 0x0836, 0xd88: 0x0d32, 0xd89: 0x0d3e, 0xd8a: 0x0e12, 0xd8b: 0x0e4a,\n\t0xd8c: 0x0f4e, 0xd8d: 0x0faa, 0xd8e: 0x102a, 0xd8f: 0x110e, 0xd90: 0x153e, 0xd91: 0x07b2,\n\t0xd92: 0x0c06, 0xd93: 0x14b6, 0xd94: 0x076a, 0xd95: 0x0aae, 0xd96: 0x0e32, 0xd97: 0x13e2,\n\t0xd98: 0x0b6a, 0xd99: 0x0bba, 0xd9a: 0x0d46, 0xd9b: 0x0f32, 0xd9c: 0x14be, 0xd9d: 0x081a,\n\t0xd9e: 0x0902, 0xd9f: 0x0a9a, 0xda0: 0x0cd6, 0xda1: 0x0d22, 0xda2: 0x0d62, 0xda3: 0x0df6,\n\t0xda4: 0x0f4a, 0xda5: 0x0fbe, 0xda6: 0x115a, 0xda7: 0x12fa, 0xda8: 0x1306, 0xda9: 0x145a,\n\t0xdaa: 0x14da, 0xdab: 0x0886, 0xdac: 0x0e4e, 0xdad: 0x0906, 0xdae: 0x0eca, 0xdaf: 0x0f6e,\n\t0xdb0: 0x128a, 0xdb1: 0x14c2, 0xdb2: 0x15ae, 0xdb3: 0x15d6, 0xdb4: 0x0d3a, 0xdb5: 0x0e2a,\n\t0xdb6: 0x11c6, 0xdb7: 0x10ba, 0xdb8: 0x10c6, 0xdb9: 0x10ea, 0xdba: 0x0f1a, 0xdbb: 0x0ea2,\n\t0xdbc: 0x1366, 0xdbd: 0x0736, 0xdbe: 0x122e, 0xdbf: 0x081e,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x080e, 0xdc1: 0x0b0e, 0xdc2: 0x0c2e, 0xdc3: 0x10f6, 0xdc4: 0x0a56, 0xdc5: 0x0e06,\n\t0xdc6: 0x0cf2, 0xdc7: 0x13ea, 0xdc8: 0x12ea, 0xdc9: 0x14ae, 0xdca: 0x1326, 0xdcb: 0x0b2a,\n\t0xdcc: 0x078a, 0xdcd: 0x095e, 0xdd0: 0x09b2,\n\t0xdd2: 0x0ce2, 0xdd5: 0x07fa, 0xdd6: 0x0f22, 0xdd7: 0x0fe6,\n\t0xdd8: 0x104a, 0xdd9: 0x1066, 0xdda: 0x106a, 0xddb: 0x107e, 0xddc: 0x14fe, 0xddd: 0x10ee,\n\t0xdde: 0x1172, 0xde0: 0x1292, 0xde2: 0x1356,\n\t0xde5: 0x140a, 0xde6: 0x1436,\n\t0xdea: 0x1552, 0xdeb: 0x1556, 0xdec: 0x155a, 0xded: 0x15be, 0xdee: 0x142e, 0xdef: 0x14ca,\n\t0xdf0: 0x075a, 0xdf1: 0x077e, 0xdf2: 0x0792, 0xdf3: 0x084e, 0xdf4: 0x085a, 0xdf5: 0x089a,\n\t0xdf6: 0x094e, 0xdf7: 0x096a, 0xdf8: 0x0972, 0xdf9: 0x09ae, 0xdfa: 0x09ba, 0xdfb: 0x0a96,\n\t0xdfc: 0x0a9e, 0xdfd: 0x0ba6, 0xdfe: 0x0bce, 0xdff: 0x0bd6,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x0bee, 0xe01: 0x0c9a, 0xe02: 0x0cca, 0xe03: 0x0cea, 0xe04: 0x0d5a, 0xe05: 0x0e1e,\n\t0xe06: 0x0e3a, 0xe07: 0x0e6a, 0xe08: 0x0ebe, 0xe09: 0x0ede, 0xe0a: 0x0f52, 0xe0b: 0x1032,\n\t0xe0c: 0x104e, 0xe0d: 0x1056, 0xe0e: 0x1052, 0xe0f: 0x105a, 0xe10: 0x105e, 0xe11: 0x1062,\n\t0xe12: 0x1076, 0xe13: 0x107a, 0xe14: 0x109e, 0xe15: 0x10b2, 0xe16: 0x10ce, 0xe17: 0x1132,\n\t0xe18: 0x113a, 0xe19: 0x1142, 0xe1a: 0x1156, 0xe1b: 0x117e, 0xe1c: 0x11ce, 0xe1d: 0x1202,\n\t0xe1e: 0x1202, 0xe1f: 0x126a, 0xe20: 0x1312, 0xe21: 0x132a, 0xe22: 0x135e, 0xe23: 0x1362,\n\t0xe24: 0x13a6, 0xe25: 0x13aa, 0xe26: 0x1402, 0xe27: 0x140a, 0xe28: 0x14de, 0xe29: 0x1522,\n\t0xe2a: 0x153a, 0xe2b: 0x0b9e, 0xe2c: 0x1721, 0xe2d: 0x11e6,\n\t0xe30: 0x06e2, 0xe31: 0x07e6, 0xe32: 0x07a6, 0xe33: 0x074e, 0xe34: 0x078e, 0xe35: 0x07ba,\n\t0xe36: 0x084a, 0xe37: 0x0866, 0xe38: 0x094e, 0xe39: 0x093a, 0xe3a: 0x094a, 0xe3b: 0x0966,\n\t0xe3c: 0x09b2, 0xe3d: 0x09c2, 0xe3e: 0x0a06, 0xe3f: 0x0a12,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x0a2e, 0xe41: 0x0a3e, 0xe42: 0x0b26, 0xe43: 0x0b2e, 0xe44: 0x0b5e, 0xe45: 0x0b7e,\n\t0xe46: 0x0bae, 0xe47: 0x0bc6, 0xe48: 0x0bb6, 0xe49: 0x0bd6, 0xe4a: 0x0bca, 0xe4b: 0x0bee,\n\t0xe4c: 0x0c0a, 0xe4d: 0x0c62, 0xe4e: 0x0c6e, 0xe4f: 0x0c76, 0xe50: 0x0c9e, 0xe51: 0x0ce2,\n\t0xe52: 0x0d12, 0xe53: 0x0d16, 0xe54: 0x0d2a, 0xe55: 0x0daa, 0xe56: 0x0dba, 0xe57: 0x0e12,\n\t0xe58: 0x0e5e, 0xe59: 0x0e56, 0xe5a: 0x0e6a, 0xe5b: 0x0e86, 0xe5c: 0x0ebe, 0xe5d: 0x1016,\n\t0xe5e: 0x0ee2, 0xe5f: 0x0f16, 0xe60: 0x0f22, 0xe61: 0x0f62, 0xe62: 0x0f7e, 0xe63: 0x0fa2,\n\t0xe64: 0x0fc6, 0xe65: 0x0fca, 0xe66: 0x0fe6, 0xe67: 0x0fea, 0xe68: 0x0ffa, 0xe69: 0x100e,\n\t0xe6a: 0x100a, 0xe6b: 0x103a, 0xe6c: 0x10b6, 0xe6d: 0x10ce, 0xe6e: 0x10e6, 0xe6f: 0x111e,\n\t0xe70: 0x1132, 0xe71: 0x114e, 0xe72: 0x117e, 0xe73: 0x1232, 0xe74: 0x125a, 0xe75: 0x12ce,\n\t0xe76: 0x1316, 0xe77: 0x1322, 0xe78: 0x132a, 0xe79: 0x1342, 0xe7a: 0x1356, 0xe7b: 0x1346,\n\t0xe7c: 0x135e, 0xe7d: 0x135a, 0xe7e: 0x1352, 0xe7f: 0x1362,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x136e, 0xe81: 0x13aa, 0xe82: 0x13e6, 0xe83: 0x1416, 0xe84: 0x144e, 0xe85: 0x146e,\n\t0xe86: 0x14ba, 0xe87: 0x14de, 0xe88: 0x14fe, 0xe89: 0x1512, 0xe8a: 0x1522, 0xe8b: 0x152e,\n\t0xe8c: 0x153a, 0xe8d: 0x158e, 0xe8e: 0x162e, 0xe8f: 0x16b8, 0xe90: 0x16b3, 0xe91: 0x16e5,\n\t0xe92: 0x060a, 0xe93: 0x0632, 0xe94: 0x0636, 0xe95: 0x1767, 0xe96: 0x1794, 0xe97: 0x180c,\n\t0xe98: 0x161a, 0xe99: 0x162a,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x19db, 0xec1: 0x19de, 0xec2: 0x19e1, 0xec3: 0x1c0e, 0xec4: 0x1c12, 0xec5: 0x1a65,\n\t0xec6: 0x1a65,\n\t0xed3: 0x1d7b, 0xed4: 0x1d6c, 0xed5: 0x1d71, 0xed6: 0x1d80, 0xed7: 0x1d76,\n\t0xedd: 0x43a7,\n\t0xede: 0x8116, 0xedf: 0x4419, 0xee0: 0x0230, 0xee1: 0x0218, 0xee2: 0x0221, 0xee3: 0x0224,\n\t0xee4: 0x0227, 0xee5: 0x022a, 0xee6: 0x022d, 0xee7: 0x0233, 0xee8: 0x0236, 0xee9: 0x0017,\n\t0xeea: 0x4407, 0xeeb: 0x440d, 0xeec: 0x450b, 0xeed: 0x4513, 0xeee: 0x435f, 0xeef: 0x4365,\n\t0xef0: 0x436b, 0xef1: 0x4371, 0xef2: 0x437d, 0xef3: 0x4383, 0xef4: 0x4389, 0xef5: 0x4395,\n\t0xef6: 0x439b, 0xef8: 0x43a1, 0xef9: 0x43ad, 0xefa: 0x43b3, 0xefb: 0x43b9,\n\t0xefc: 0x43c5, 0xefe: 0x43cb,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x43d1, 0xf01: 0x43d7, 0xf03: 0x43dd, 0xf04: 0x43e3,\n\t0xf06: 0x43ef, 0xf07: 0x43f5, 0xf08: 0x43fb, 0xf09: 0x4401, 0xf0a: 0x4413, 0xf0b: 0x438f,\n\t0xf0c: 0x4377, 0xf0d: 0x43bf, 0xf0e: 0x43e9, 0xf0f: 0x1d85, 0xf10: 0x029c, 0xf11: 0x029c,\n\t0xf12: 0x02a5, 0xf13: 0x02a5, 0xf14: 0x02a5, 0xf15: 0x02a5, 0xf16: 0x02a8, 0xf17: 0x02a8,\n\t0xf18: 0x02a8, 0xf19: 0x02a8, 0xf1a: 0x02ae, 0xf1b: 0x02ae, 0xf1c: 0x02ae, 0xf1d: 0x02ae,\n\t0xf1e: 0x02a2, 0xf1f: 0x02a2, 0xf20: 0x02a2, 0xf21: 0x02a2, 0xf22: 0x02ab, 0xf23: 0x02ab,\n\t0xf24: 0x02ab, 0xf25: 0x02ab, 0xf26: 0x029f, 0xf27: 0x029f, 0xf28: 0x029f, 0xf29: 0x029f,\n\t0xf2a: 0x02d2, 0xf2b: 0x02d2, 0xf2c: 0x02d2, 0xf2d: 0x02d2, 0xf2e: 0x02d5, 0xf2f: 0x02d5,\n\t0xf30: 0x02d5, 0xf31: 0x02d5, 0xf32: 0x02b4, 0xf33: 0x02b4, 0xf34: 0x02b4, 0xf35: 0x02b4,\n\t0xf36: 0x02b1, 0xf37: 0x02b1, 0xf38: 0x02b1, 0xf39: 0x02b1, 0xf3a: 0x02b7, 0xf3b: 0x02b7,\n\t0xf3c: 0x02b7, 0xf3d: 0x02b7, 0xf3e: 0x02ba, 0xf3f: 0x02ba,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x02ba, 0xf41: 0x02ba, 0xf42: 0x02c3, 0xf43: 0x02c3, 0xf44: 0x02c0, 0xf45: 0x02c0,\n\t0xf46: 0x02c6, 0xf47: 0x02c6, 0xf48: 0x02bd, 0xf49: 0x02bd, 0xf4a: 0x02cc, 0xf4b: 0x02cc,\n\t0xf4c: 0x02c9, 0xf4d: 0x02c9, 0xf4e: 0x02d8, 0xf4f: 0x02d8, 0xf50: 0x02d8, 0xf51: 0x02d8,\n\t0xf52: 0x02de, 0xf53: 0x02de, 0xf54: 0x02de, 0xf55: 0x02de, 0xf56: 0x02e4, 0xf57: 0x02e4,\n\t0xf58: 0x02e4, 0xf59: 0x02e4, 0xf5a: 0x02e1, 0xf5b: 0x02e1, 0xf5c: 0x02e1, 0xf5d: 0x02e1,\n\t0xf5e: 0x02e7, 0xf5f: 0x02e7, 0xf60: 0x02ea, 0xf61: 0x02ea, 0xf62: 0x02ea, 0xf63: 0x02ea,\n\t0xf64: 0x4485, 0xf65: 0x4485, 0xf66: 0x02f0, 0xf67: 0x02f0, 0xf68: 0x02f0, 0xf69: 0x02f0,\n\t0xf6a: 0x02ed, 0xf6b: 0x02ed, 0xf6c: 0x02ed, 0xf6d: 0x02ed, 0xf6e: 0x030b, 0xf6f: 0x030b,\n\t0xf70: 0x447f, 0xf71: 0x447f,\n\t// Block 0x3e, offset 0xf80\n\t0xf93: 0x02db, 0xf94: 0x02db, 0xf95: 0x02db, 0xf96: 0x02db, 0xf97: 0x02f9,\n\t0xf98: 0x02f9, 0xf99: 0x02f6, 0xf9a: 0x02f6, 0xf9b: 0x02fc, 0xf9c: 0x02fc, 0xf9d: 0x2055,\n\t0xf9e: 0x0302, 0xf9f: 0x0302, 0xfa0: 0x02f3, 0xfa1: 0x02f3, 0xfa2: 0x02ff, 0xfa3: 0x02ff,\n\t0xfa4: 0x0308, 0xfa5: 0x0308, 0xfa6: 0x0308, 0xfa7: 0x0308, 0xfa8: 0x0290, 0xfa9: 0x0290,\n\t0xfaa: 0x25b0, 0xfab: 0x25b0, 0xfac: 0x2620, 0xfad: 0x2620, 0xfae: 0x25ef, 0xfaf: 0x25ef,\n\t0xfb0: 0x260b, 0xfb1: 0x260b, 0xfb2: 0x2604, 0xfb3: 0x2604, 0xfb4: 0x2612, 0xfb5: 0x2612,\n\t0xfb6: 0x2619, 0xfb7: 0x2619, 0xfb8: 0x2619, 0xfb9: 0x25f6, 0xfba: 0x25f6, 0xfbb: 0x25f6,\n\t0xfbc: 0x0305, 0xfbd: 0x0305, 0xfbe: 0x0305, 0xfbf: 0x0305,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x25b7, 0xfc1: 0x25be, 0xfc2: 0x25da, 0xfc3: 0x25f6, 0xfc4: 0x25fd, 0xfc5: 0x1d8f,\n\t0xfc6: 0x1d94, 0xfc7: 0x1d99, 0xfc8: 0x1da8, 0xfc9: 0x1db7, 0xfca: 0x1dbc, 0xfcb: 0x1dc1,\n\t0xfcc: 0x1dc6, 0xfcd: 0x1dcb, 0xfce: 0x1dda, 0xfcf: 0x1de9, 0xfd0: 0x1dee, 0xfd1: 0x1df3,\n\t0xfd2: 0x1e02, 0xfd3: 0x1e11, 0xfd4: 0x1e16, 0xfd5: 0x1e1b, 0xfd6: 0x1e20, 0xfd7: 0x1e2f,\n\t0xfd8: 0x1e34, 0xfd9: 0x1e43, 0xfda: 0x1e48, 0xfdb: 0x1e4d, 0xfdc: 0x1e5c, 0xfdd: 0x1e61,\n\t0xfde: 0x1e66, 0xfdf: 0x1e70, 0xfe0: 0x1eac, 0xfe1: 0x1ebb, 0xfe2: 0x1eca, 0xfe3: 0x1ecf,\n\t0xfe4: 0x1ed4, 0xfe5: 0x1ede, 0xfe6: 0x1eed, 0xfe7: 0x1ef2, 0xfe8: 0x1f01, 0xfe9: 0x1f06,\n\t0xfea: 0x1f0b, 0xfeb: 0x1f1a, 0xfec: 0x1f1f, 0xfed: 0x1f2e, 0xfee: 0x1f33, 0xfef: 0x1f38,\n\t0xff0: 0x1f3d, 0xff1: 0x1f42, 0xff2: 0x1f47, 0xff3: 0x1f4c, 0xff4: 0x1f51, 0xff5: 0x1f56,\n\t0xff6: 0x1f5b, 0xff7: 0x1f60, 0xff8: 0x1f65, 0xff9: 0x1f6a, 0xffa: 0x1f6f, 0xffb: 0x1f74,\n\t0xffc: 0x1f79, 0xffd: 0x1f7e, 0xffe: 0x1f83, 0xfff: 0x1f8d,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x1f92, 0x1001: 0x1f97, 0x1002: 0x1f9c, 0x1003: 0x1fa6, 0x1004: 0x1fab, 0x1005: 0x1fb5,\n\t0x1006: 0x1fba, 0x1007: 0x1fbf, 0x1008: 0x1fc4, 0x1009: 0x1fc9, 0x100a: 0x1fce, 0x100b: 0x1fd3,\n\t0x100c: 0x1fd8, 0x100d: 0x1fdd, 0x100e: 0x1fec, 0x100f: 0x1ffb, 0x1010: 0x2000, 0x1011: 0x2005,\n\t0x1012: 0x200a, 0x1013: 0x200f, 0x1014: 0x2014, 0x1015: 0x201e, 0x1016: 0x2023, 0x1017: 0x2028,\n\t0x1018: 0x2037, 0x1019: 0x2046, 0x101a: 0x204b, 0x101b: 0x4437, 0x101c: 0x443d, 0x101d: 0x4473,\n\t0x101e: 0x44ca, 0x101f: 0x44d1, 0x1020: 0x44d8, 0x1021: 0x44df, 0x1022: 0x44e6, 0x1023: 0x44ed,\n\t0x1024: 0x25cc, 0x1025: 0x25d3, 0x1026: 0x25da, 0x1027: 0x25e1, 0x1028: 0x25f6, 0x1029: 0x25fd,\n\t0x102a: 0x1d9e, 0x102b: 0x1da3, 0x102c: 0x1da8, 0x102d: 0x1dad, 0x102e: 0x1db7, 0x102f: 0x1dbc,\n\t0x1030: 0x1dd0, 0x1031: 0x1dd5, 0x1032: 0x1dda, 0x1033: 0x1ddf, 0x1034: 0x1de9, 0x1035: 0x1dee,\n\t0x1036: 0x1df8, 0x1037: 0x1dfd, 0x1038: 0x1e02, 0x1039: 0x1e07, 0x103a: 0x1e11, 0x103b: 0x1e16,\n\t0x103c: 0x1f42, 0x103d: 0x1f47, 0x103e: 0x1f56, 0x103f: 0x1f5b,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x1f60, 0x1041: 0x1f74, 0x1042: 0x1f79, 0x1043: 0x1f7e, 0x1044: 0x1f83, 0x1045: 0x1f9c,\n\t0x1046: 0x1fa6, 0x1047: 0x1fab, 0x1048: 0x1fb0, 0x1049: 0x1fc4, 0x104a: 0x1fe2, 0x104b: 0x1fe7,\n\t0x104c: 0x1fec, 0x104d: 0x1ff1, 0x104e: 0x1ffb, 0x104f: 0x2000, 0x1050: 0x4473, 0x1051: 0x202d,\n\t0x1052: 0x2032, 0x1053: 0x2037, 0x1054: 0x203c, 0x1055: 0x2046, 0x1056: 0x204b, 0x1057: 0x25b7,\n\t0x1058: 0x25be, 0x1059: 0x25c5, 0x105a: 0x25da, 0x105b: 0x25e8, 0x105c: 0x1d8f, 0x105d: 0x1d94,\n\t0x105e: 0x1d99, 0x105f: 0x1da8, 0x1060: 0x1db2, 0x1061: 0x1dc1, 0x1062: 0x1dc6, 0x1063: 0x1dcb,\n\t0x1064: 0x1dda, 0x1065: 0x1de4, 0x1066: 0x1e02, 0x1067: 0x1e1b, 0x1068: 0x1e20, 0x1069: 0x1e2f,\n\t0x106a: 0x1e34, 0x106b: 0x1e43, 0x106c: 0x1e4d, 0x106d: 0x1e5c, 0x106e: 0x1e61, 0x106f: 0x1e66,\n\t0x1070: 0x1e70, 0x1071: 0x1eac, 0x1072: 0x1eb1, 0x1073: 0x1ebb, 0x1074: 0x1eca, 0x1075: 0x1ecf,\n\t0x1076: 0x1ed4, 0x1077: 0x1ede, 0x1078: 0x1eed, 0x1079: 0x1f01, 0x107a: 0x1f06, 0x107b: 0x1f0b,\n\t0x107c: 0x1f1a, 0x107d: 0x1f1f, 0x107e: 0x1f2e, 0x107f: 0x1f33,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x1f38, 0x1081: 0x1f3d, 0x1082: 0x1f4c, 0x1083: 0x1f51, 0x1084: 0x1f65, 0x1085: 0x1f6a,\n\t0x1086: 0x1f6f, 0x1087: 0x1f74, 0x1088: 0x1f79, 0x1089: 0x1f8d, 0x108a: 0x1f92, 0x108b: 0x1f97,\n\t0x108c: 0x1f9c, 0x108d: 0x1fa1, 0x108e: 0x1fb5, 0x108f: 0x1fba, 0x1090: 0x1fbf, 0x1091: 0x1fc4,\n\t0x1092: 0x1fd3, 0x1093: 0x1fd8, 0x1094: 0x1fdd, 0x1095: 0x1fec, 0x1096: 0x1ff6, 0x1097: 0x2005,\n\t0x1098: 0x200a, 0x1099: 0x4467, 0x109a: 0x201e, 0x109b: 0x2023, 0x109c: 0x2028, 0x109d: 0x2037,\n\t0x109e: 0x2041, 0x109f: 0x25da, 0x10a0: 0x25e8, 0x10a1: 0x1da8, 0x10a2: 0x1db2, 0x10a3: 0x1dda,\n\t0x10a4: 0x1de4, 0x10a5: 0x1e02, 0x10a6: 0x1e0c, 0x10a7: 0x1e70, 0x10a8: 0x1e75, 0x10a9: 0x1e98,\n\t0x10aa: 0x1e9d, 0x10ab: 0x1f74, 0x10ac: 0x1f79, 0x10ad: 0x1f9c, 0x10ae: 0x1fec, 0x10af: 0x1ff6,\n\t0x10b0: 0x2037, 0x10b1: 0x2041, 0x10b2: 0x451b, 0x10b3: 0x4523, 0x10b4: 0x452b, 0x10b5: 0x1ef7,\n\t0x10b6: 0x1efc, 0x10b7: 0x1f10, 0x10b8: 0x1f15, 0x10b9: 0x1f24, 0x10ba: 0x1f29, 0x10bb: 0x1e7a,\n\t0x10bc: 0x1e7f, 0x10bd: 0x1ea2, 0x10be: 0x1ea7, 0x10bf: 0x1e39,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x1e3e, 0x10c1: 0x1e25, 0x10c2: 0x1e2a, 0x10c3: 0x1e52, 0x10c4: 0x1e57, 0x10c5: 0x1ec0,\n\t0x10c6: 0x1ec5, 0x10c7: 0x1ee3, 0x10c8: 0x1ee8, 0x10c9: 0x1e84, 0x10ca: 0x1e89, 0x10cb: 0x1e8e,\n\t0x10cc: 0x1e98, 0x10cd: 0x1e93, 0x10ce: 0x1e6b, 0x10cf: 0x1eb6, 0x10d0: 0x1ed9, 0x10d1: 0x1ef7,\n\t0x10d2: 0x1efc, 0x10d3: 0x1f10, 0x10d4: 0x1f15, 0x10d5: 0x1f24, 0x10d6: 0x1f29, 0x10d7: 0x1e7a,\n\t0x10d8: 0x1e7f, 0x10d9: 0x1ea2, 0x10da: 0x1ea7, 0x10db: 0x1e39, 0x10dc: 0x1e3e, 0x10dd: 0x1e25,\n\t0x10de: 0x1e2a, 0x10df: 0x1e52, 0x10e0: 0x1e57, 0x10e1: 0x1ec0, 0x10e2: 0x1ec5, 0x10e3: 0x1ee3,\n\t0x10e4: 0x1ee8, 0x10e5: 0x1e84, 0x10e6: 0x1e89, 0x10e7: 0x1e8e, 0x10e8: 0x1e98, 0x10e9: 0x1e93,\n\t0x10ea: 0x1e6b, 0x10eb: 0x1eb6, 0x10ec: 0x1ed9, 0x10ed: 0x1e84, 0x10ee: 0x1e89, 0x10ef: 0x1e8e,\n\t0x10f0: 0x1e98, 0x10f1: 0x1e75, 0x10f2: 0x1e9d, 0x10f3: 0x1ef2, 0x10f4: 0x1e5c, 0x10f5: 0x1e61,\n\t0x10f6: 0x1e66, 0x10f7: 0x1e84, 0x10f8: 0x1e89, 0x10f9: 0x1e8e, 0x10fa: 0x1ef2, 0x10fb: 0x1f01,\n\t0x10fc: 0x441f, 0x10fd: 0x441f,\n\t// Block 0x44, offset 0x1100\n\t0x1110: 0x2317, 0x1111: 0x232c,\n\t0x1112: 0x232c, 0x1113: 0x2333, 0x1114: 0x233a, 0x1115: 0x234f, 0x1116: 0x2356, 0x1117: 0x235d,\n\t0x1118: 0x2380, 0x1119: 0x2380, 0x111a: 0x23a3, 0x111b: 0x239c, 0x111c: 0x23b8, 0x111d: 0x23aa,\n\t0x111e: 0x23b1, 0x111f: 0x23d4, 0x1120: 0x23d4, 0x1121: 0x23cd, 0x1122: 0x23db, 0x1123: 0x23db,\n\t0x1124: 0x2405, 0x1125: 0x2405, 0x1126: 0x2421, 0x1127: 0x23e9, 0x1128: 0x23e9, 0x1129: 0x23e2,\n\t0x112a: 0x23f7, 0x112b: 0x23f7, 0x112c: 0x23fe, 0x112d: 0x23fe, 0x112e: 0x2428, 0x112f: 0x2436,\n\t0x1130: 0x2436, 0x1131: 0x243d, 0x1132: 0x243d, 0x1133: 0x2444, 0x1134: 0x244b, 0x1135: 0x2452,\n\t0x1136: 0x2459, 0x1137: 0x2459, 0x1138: 0x2460, 0x1139: 0x246e, 0x113a: 0x247c, 0x113b: 0x2475,\n\t0x113c: 0x2483, 0x113d: 0x2483, 0x113e: 0x2498, 0x113f: 0x249f,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0x24d0, 0x1141: 0x24de, 0x1142: 0x24d7, 0x1143: 0x24bb, 0x1144: 0x24bb, 0x1145: 0x24e5,\n\t0x1146: 0x24e5, 0x1147: 0x24ec, 0x1148: 0x24ec, 0x1149: 0x2516, 0x114a: 0x251d, 0x114b: 0x2524,\n\t0x114c: 0x24fa, 0x114d: 0x2508, 0x114e: 0x252b, 0x114f: 0x2532,\n\t0x1152: 0x2501, 0x1153: 0x2586, 0x1154: 0x258d, 0x1155: 0x2563, 0x1156: 0x256a, 0x1157: 0x254e,\n\t0x1158: 0x254e, 0x1159: 0x2555, 0x115a: 0x257f, 0x115b: 0x2578, 0x115c: 0x25a2, 0x115d: 0x25a2,\n\t0x115e: 0x2310, 0x115f: 0x2325, 0x1160: 0x231e, 0x1161: 0x2348, 0x1162: 0x2341, 0x1163: 0x236b,\n\t0x1164: 0x2364, 0x1165: 0x238e, 0x1166: 0x2372, 0x1167: 0x2387, 0x1168: 0x23bf, 0x1169: 0x240c,\n\t0x116a: 0x23f0, 0x116b: 0x242f, 0x116c: 0x24c9, 0x116d: 0x24f3, 0x116e: 0x259b, 0x116f: 0x2594,\n\t0x1170: 0x25a9, 0x1171: 0x2540, 0x1172: 0x24a6, 0x1173: 0x2571, 0x1174: 0x2498, 0x1175: 0x24d0,\n\t0x1176: 0x2467, 0x1177: 0x24b4, 0x1178: 0x2547, 0x1179: 0x2539, 0x117a: 0x24c2, 0x117b: 0x24ad,\n\t0x117c: 0x24c2, 0x117d: 0x2547, 0x117e: 0x2379, 0x117f: 0x2395,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x250f, 0x1181: 0x248a, 0x1182: 0x2309, 0x1183: 0x24ad, 0x1184: 0x2452, 0x1185: 0x2421,\n\t0x1186: 0x23c6, 0x1187: 0x255c,\n\t0x11b0: 0x241a, 0x11b1: 0x2491, 0x11b2: 0x27cc, 0x11b3: 0x27c3, 0x11b4: 0x27f9, 0x11b5: 0x27e7,\n\t0x11b6: 0x27d5, 0x11b7: 0x27f0, 0x11b8: 0x2802, 0x11b9: 0x2413, 0x11ba: 0x2c89, 0x11bb: 0x2b09,\n\t0x11bc: 0x27de,\n\t// Block 0x47, offset 0x11c0\n\t0x11d0: 0x0019, 0x11d1: 0x0486,\n\t0x11d2: 0x048a, 0x11d3: 0x0035, 0x11d4: 0x0037, 0x11d5: 0x0003, 0x11d6: 0x003f, 0x11d7: 0x04c2,\n\t0x11d8: 0x04c6, 0x11d9: 0x1b62,\n\t0x11e0: 0x8133, 0x11e1: 0x8133, 0x11e2: 0x8133, 0x11e3: 0x8133,\n\t0x11e4: 0x8133, 0x11e5: 0x8133, 0x11e6: 0x8133, 0x11e7: 0x812e, 0x11e8: 0x812e, 0x11e9: 0x812e,\n\t0x11ea: 0x812e, 0x11eb: 0x812e, 0x11ec: 0x812e, 0x11ed: 0x812e, 0x11ee: 0x8133, 0x11ef: 0x8133,\n\t0x11f0: 0x1876, 0x11f1: 0x0446, 0x11f2: 0x0442, 0x11f3: 0x007f, 0x11f4: 0x007f, 0x11f5: 0x0011,\n\t0x11f6: 0x0013, 0x11f7: 0x00b7, 0x11f8: 0x00bb, 0x11f9: 0x04ba, 0x11fa: 0x04be, 0x11fb: 0x04ae,\n\t0x11fc: 0x04b2, 0x11fd: 0x0496, 0x11fe: 0x049a, 0x11ff: 0x048e,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x0492, 0x1201: 0x049e, 0x1202: 0x04a2, 0x1203: 0x04a6, 0x1204: 0x04aa,\n\t0x1207: 0x0077, 0x1208: 0x007b, 0x1209: 0x4280, 0x120a: 0x4280, 0x120b: 0x4280,\n\t0x120c: 0x4280, 0x120d: 0x007f, 0x120e: 0x007f, 0x120f: 0x007f, 0x1210: 0x0019, 0x1211: 0x0486,\n\t0x1212: 0x001d, 0x1214: 0x0037, 0x1215: 0x0035, 0x1216: 0x003f, 0x1217: 0x0003,\n\t0x1218: 0x0446, 0x1219: 0x0011, 0x121a: 0x0013, 0x121b: 0x00b7, 0x121c: 0x00bb, 0x121d: 0x04ba,\n\t0x121e: 0x04be, 0x121f: 0x0007, 0x1220: 0x000d, 0x1221: 0x0015, 0x1222: 0x0017, 0x1223: 0x001b,\n\t0x1224: 0x0039, 0x1225: 0x003d, 0x1226: 0x003b, 0x1228: 0x0079, 0x1229: 0x0009,\n\t0x122a: 0x000b, 0x122b: 0x0041,\n\t0x1230: 0x42c1, 0x1231: 0x4443, 0x1232: 0x42c6, 0x1234: 0x42cb,\n\t0x1236: 0x42d0, 0x1237: 0x4449, 0x1238: 0x42d5, 0x1239: 0x444f, 0x123a: 0x42da, 0x123b: 0x4455,\n\t0x123c: 0x42df, 0x123d: 0x445b, 0x123e: 0x42e4, 0x123f: 0x4461,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x0239, 0x1241: 0x4425, 0x1242: 0x4425, 0x1243: 0x442b, 0x1244: 0x442b, 0x1245: 0x446d,\n\t0x1246: 0x446d, 0x1247: 0x4431, 0x1248: 0x4431, 0x1249: 0x4479, 0x124a: 0x4479, 0x124b: 0x4479,\n\t0x124c: 0x4479, 0x124d: 0x023c, 0x124e: 0x023c, 0x124f: 0x023f, 0x1250: 0x023f, 0x1251: 0x023f,\n\t0x1252: 0x023f, 0x1253: 0x0242, 0x1254: 0x0242, 0x1255: 0x0245, 0x1256: 0x0245, 0x1257: 0x0245,\n\t0x1258: 0x0245, 0x1259: 0x0248, 0x125a: 0x0248, 0x125b: 0x0248, 0x125c: 0x0248, 0x125d: 0x024b,\n\t0x125e: 0x024b, 0x125f: 0x024b, 0x1260: 0x024b, 0x1261: 0x024e, 0x1262: 0x024e, 0x1263: 0x024e,\n\t0x1264: 0x024e, 0x1265: 0x0251, 0x1266: 0x0251, 0x1267: 0x0251, 0x1268: 0x0251, 0x1269: 0x0254,\n\t0x126a: 0x0254, 0x126b: 0x0257, 0x126c: 0x0257, 0x126d: 0x025a, 0x126e: 0x025a, 0x126f: 0x025d,\n\t0x1270: 0x025d, 0x1271: 0x0260, 0x1272: 0x0260, 0x1273: 0x0260, 0x1274: 0x0260, 0x1275: 0x0263,\n\t0x1276: 0x0263, 0x1277: 0x0263, 0x1278: 0x0263, 0x1279: 0x0266, 0x127a: 0x0266, 0x127b: 0x0266,\n\t0x127c: 0x0266, 0x127d: 0x0269, 0x127e: 0x0269, 0x127f: 0x0269,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x0269, 0x1281: 0x026c, 0x1282: 0x026c, 0x1283: 0x026c, 0x1284: 0x026c, 0x1285: 0x026f,\n\t0x1286: 0x026f, 0x1287: 0x026f, 0x1288: 0x026f, 0x1289: 0x0272, 0x128a: 0x0272, 0x128b: 0x0272,\n\t0x128c: 0x0272, 0x128d: 0x0275, 0x128e: 0x0275, 0x128f: 0x0275, 0x1290: 0x0275, 0x1291: 0x0278,\n\t0x1292: 0x0278, 0x1293: 0x0278, 0x1294: 0x0278, 0x1295: 0x027b, 0x1296: 0x027b, 0x1297: 0x027b,\n\t0x1298: 0x027b, 0x1299: 0x027e, 0x129a: 0x027e, 0x129b: 0x027e, 0x129c: 0x027e, 0x129d: 0x0281,\n\t0x129e: 0x0281, 0x129f: 0x0281, 0x12a0: 0x0281, 0x12a1: 0x0284, 0x12a2: 0x0284, 0x12a3: 0x0284,\n\t0x12a4: 0x0284, 0x12a5: 0x0287, 0x12a6: 0x0287, 0x12a7: 0x0287, 0x12a8: 0x0287, 0x12a9: 0x028a,\n\t0x12aa: 0x028a, 0x12ab: 0x028a, 0x12ac: 0x028a, 0x12ad: 0x028d, 0x12ae: 0x028d, 0x12af: 0x0290,\n\t0x12b0: 0x0290, 0x12b1: 0x0293, 0x12b2: 0x0293, 0x12b3: 0x0293, 0x12b4: 0x0293, 0x12b5: 0x2e17,\n\t0x12b6: 0x2e17, 0x12b7: 0x2e1f, 0x12b8: 0x2e1f, 0x12b9: 0x2e27, 0x12ba: 0x2e27, 0x12bb: 0x1f88,\n\t0x12bc: 0x1f88,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x0081, 0x12c1: 0x0083, 0x12c2: 0x0085, 0x12c3: 0x0087, 0x12c4: 0x0089, 0x12c5: 0x008b,\n\t0x12c6: 0x008d, 0x12c7: 0x008f, 0x12c8: 0x0091, 0x12c9: 0x0093, 0x12ca: 0x0095, 0x12cb: 0x0097,\n\t0x12cc: 0x0099, 0x12cd: 0x009b, 0x12ce: 0x009d, 0x12cf: 0x009f, 0x12d0: 0x00a1, 0x12d1: 0x00a3,\n\t0x12d2: 0x00a5, 0x12d3: 0x00a7, 0x12d4: 0x00a9, 0x12d5: 0x00ab, 0x12d6: 0x00ad, 0x12d7: 0x00af,\n\t0x12d8: 0x00b1, 0x12d9: 0x00b3, 0x12da: 0x00b5, 0x12db: 0x00b7, 0x12dc: 0x00b9, 0x12dd: 0x00bb,\n\t0x12de: 0x00bd, 0x12df: 0x047a, 0x12e0: 0x047e, 0x12e1: 0x048a, 0x12e2: 0x049e, 0x12e3: 0x04a2,\n\t0x12e4: 0x0486, 0x12e5: 0x05ae, 0x12e6: 0x05a6, 0x12e7: 0x04ca, 0x12e8: 0x04d2, 0x12e9: 0x04da,\n\t0x12ea: 0x04e2, 0x12eb: 0x04ea, 0x12ec: 0x056e, 0x12ed: 0x0576, 0x12ee: 0x057e, 0x12ef: 0x0522,\n\t0x12f0: 0x05b2, 0x12f1: 0x04ce, 0x12f2: 0x04d6, 0x12f3: 0x04de, 0x12f4: 0x04e6, 0x12f5: 0x04ee,\n\t0x12f6: 0x04f2, 0x12f7: 0x04f6, 0x12f8: 0x04fa, 0x12f9: 0x04fe, 0x12fa: 0x0502, 0x12fb: 0x0506,\n\t0x12fc: 0x050a, 0x12fd: 0x050e, 0x12fe: 0x0512, 0x12ff: 0x0516,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x051a, 0x1301: 0x051e, 0x1302: 0x0526, 0x1303: 0x052a, 0x1304: 0x052e, 0x1305: 0x0532,\n\t0x1306: 0x0536, 0x1307: 0x053a, 0x1308: 0x053e, 0x1309: 0x0542, 0x130a: 0x0546, 0x130b: 0x054a,\n\t0x130c: 0x054e, 0x130d: 0x0552, 0x130e: 0x0556, 0x130f: 0x055a, 0x1310: 0x055e, 0x1311: 0x0562,\n\t0x1312: 0x0566, 0x1313: 0x056a, 0x1314: 0x0572, 0x1315: 0x057a, 0x1316: 0x0582, 0x1317: 0x0586,\n\t0x1318: 0x058a, 0x1319: 0x058e, 0x131a: 0x0592, 0x131b: 0x0596, 0x131c: 0x059a, 0x131d: 0x05aa,\n\t0x131e: 0x4a8f, 0x131f: 0x4a95, 0x1320: 0x03c6, 0x1321: 0x0316, 0x1322: 0x031a, 0x1323: 0x4a52,\n\t0x1324: 0x031e, 0x1325: 0x4a58, 0x1326: 0x4a5e, 0x1327: 0x0322, 0x1328: 0x0326, 0x1329: 0x032a,\n\t0x132a: 0x4a64, 0x132b: 0x4a6a, 0x132c: 0x4a70, 0x132d: 0x4a76, 0x132e: 0x4a7c, 0x132f: 0x4a82,\n\t0x1330: 0x036a, 0x1331: 0x032e, 0x1332: 0x0332, 0x1333: 0x0336, 0x1334: 0x037e, 0x1335: 0x033a,\n\t0x1336: 0x033e, 0x1337: 0x0342, 0x1338: 0x0346, 0x1339: 0x034a, 0x133a: 0x034e, 0x133b: 0x0352,\n\t0x133c: 0x0356, 0x133d: 0x035a, 0x133e: 0x035e,\n\t// Block 0x4d, offset 0x1340\n\t0x1342: 0x49d4, 0x1343: 0x49da, 0x1344: 0x49e0, 0x1345: 0x49e6,\n\t0x1346: 0x49ec, 0x1347: 0x49f2, 0x134a: 0x49f8, 0x134b: 0x49fe,\n\t0x134c: 0x4a04, 0x134d: 0x4a0a, 0x134e: 0x4a10, 0x134f: 0x4a16,\n\t0x1352: 0x4a1c, 0x1353: 0x4a22, 0x1354: 0x4a28, 0x1355: 0x4a2e, 0x1356: 0x4a34, 0x1357: 0x4a3a,\n\t0x135a: 0x4a40, 0x135b: 0x4a46, 0x135c: 0x4a4c,\n\t0x1360: 0x00bf, 0x1361: 0x00c2, 0x1362: 0x00cb, 0x1363: 0x427b,\n\t0x1364: 0x00c8, 0x1365: 0x00c5, 0x1366: 0x044a, 0x1368: 0x046e, 0x1369: 0x044e,\n\t0x136a: 0x0452, 0x136b: 0x0456, 0x136c: 0x045a, 0x136d: 0x0472, 0x136e: 0x0476,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0063, 0x1381: 0x0065, 0x1382: 0x0067, 0x1383: 0x0069, 0x1384: 0x006b, 0x1385: 0x006d,\n\t0x1386: 0x006f, 0x1387: 0x0071, 0x1388: 0x0073, 0x1389: 0x0075, 0x138a: 0x0083, 0x138b: 0x0085,\n\t0x138c: 0x0087, 0x138d: 0x0089, 0x138e: 0x008b, 0x138f: 0x008d, 0x1390: 0x008f, 0x1391: 0x0091,\n\t0x1392: 0x0093, 0x1393: 0x0095, 0x1394: 0x0097, 0x1395: 0x0099, 0x1396: 0x009b, 0x1397: 0x009d,\n\t0x1398: 0x009f, 0x1399: 0x00a1, 0x139a: 0x00a3, 0x139b: 0x00a5, 0x139c: 0x00a7, 0x139d: 0x00a9,\n\t0x139e: 0x00ab, 0x139f: 0x00ad, 0x13a0: 0x00af, 0x13a1: 0x00b1, 0x13a2: 0x00b3, 0x13a3: 0x00b5,\n\t0x13a4: 0x00dd, 0x13a5: 0x00f2, 0x13a8: 0x0176, 0x13a9: 0x0179,\n\t0x13aa: 0x017c, 0x13ab: 0x017f, 0x13ac: 0x0182, 0x13ad: 0x0185, 0x13ae: 0x0188, 0x13af: 0x018b,\n\t0x13b0: 0x018e, 0x13b1: 0x0191, 0x13b2: 0x0194, 0x13b3: 0x0197, 0x13b4: 0x019a, 0x13b5: 0x019d,\n\t0x13b6: 0x01a0, 0x13b7: 0x01a3, 0x13b8: 0x01a6, 0x13b9: 0x018b, 0x13ba: 0x01a9, 0x13bb: 0x01ac,\n\t0x13bc: 0x01af, 0x13bd: 0x01b2, 0x13be: 0x01b5, 0x13bf: 0x01b8,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x0200, 0x13c1: 0x0203, 0x13c2: 0x0206, 0x13c3: 0x045e, 0x13c4: 0x01ca, 0x13c5: 0x01d3,\n\t0x13c6: 0x01d9, 0x13c7: 0x01fd, 0x13c8: 0x01ee, 0x13c9: 0x01eb, 0x13ca: 0x0209, 0x13cb: 0x020c,\n\t0x13ce: 0x0021, 0x13cf: 0x0023, 0x13d0: 0x0025, 0x13d1: 0x0027,\n\t0x13d2: 0x0029, 0x13d3: 0x002b, 0x13d4: 0x002d, 0x13d5: 0x002f, 0x13d6: 0x0031, 0x13d7: 0x0033,\n\t0x13d8: 0x0021, 0x13d9: 0x0023, 0x13da: 0x0025, 0x13db: 0x0027, 0x13dc: 0x0029, 0x13dd: 0x002b,\n\t0x13de: 0x002d, 0x13df: 0x002f, 0x13e0: 0x0031, 0x13e1: 0x0033, 0x13e2: 0x0021, 0x13e3: 0x0023,\n\t0x13e4: 0x0025, 0x13e5: 0x0027, 0x13e6: 0x0029, 0x13e7: 0x002b, 0x13e8: 0x002d, 0x13e9: 0x002f,\n\t0x13ea: 0x0031, 0x13eb: 0x0033, 0x13ec: 0x0021, 0x13ed: 0x0023, 0x13ee: 0x0025, 0x13ef: 0x0027,\n\t0x13f0: 0x0029, 0x13f1: 0x002b, 0x13f2: 0x002d, 0x13f3: 0x002f, 0x13f4: 0x0031, 0x13f5: 0x0033,\n\t0x13f6: 0x0021, 0x13f7: 0x0023, 0x13f8: 0x0025, 0x13f9: 0x0027, 0x13fa: 0x0029, 0x13fb: 0x002b,\n\t0x13fc: 0x002d, 0x13fd: 0x002f, 0x13fe: 0x0031, 0x13ff: 0x0033,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x023c, 0x1401: 0x023f, 0x1402: 0x024b, 0x1403: 0x0254, 0x1405: 0x028d,\n\t0x1406: 0x025d, 0x1407: 0x024e, 0x1408: 0x026c, 0x1409: 0x0293, 0x140a: 0x027e, 0x140b: 0x0281,\n\t0x140c: 0x0284, 0x140d: 0x0287, 0x140e: 0x0260, 0x140f: 0x0272, 0x1410: 0x0278, 0x1411: 0x0266,\n\t0x1412: 0x027b, 0x1413: 0x025a, 0x1414: 0x0263, 0x1415: 0x0245, 0x1416: 0x0248, 0x1417: 0x0251,\n\t0x1418: 0x0257, 0x1419: 0x0269, 0x141a: 0x026f, 0x141b: 0x0275, 0x141c: 0x0296, 0x141d: 0x02e7,\n\t0x141e: 0x02cf, 0x141f: 0x0299, 0x1421: 0x023f, 0x1422: 0x024b,\n\t0x1424: 0x028a, 0x1427: 0x024e, 0x1429: 0x0293,\n\t0x142a: 0x027e, 0x142b: 0x0281, 0x142c: 0x0284, 0x142d: 0x0287, 0x142e: 0x0260, 0x142f: 0x0272,\n\t0x1430: 0x0278, 0x1431: 0x0266, 0x1432: 0x027b, 0x1434: 0x0263, 0x1435: 0x0245,\n\t0x1436: 0x0248, 0x1437: 0x0251, 0x1439: 0x0269, 0x143b: 0x0275,\n\t// Block 0x51, offset 0x1440\n\t0x1442: 0x024b,\n\t0x1447: 0x024e, 0x1449: 0x0293, 0x144b: 0x0281,\n\t0x144d: 0x0287, 0x144e: 0x0260, 0x144f: 0x0272, 0x1451: 0x0266,\n\t0x1452: 0x027b, 0x1454: 0x0263, 0x1457: 0x0251,\n\t0x1459: 0x0269, 0x145b: 0x0275, 0x145d: 0x02e7,\n\t0x145f: 0x0299, 0x1461: 0x023f, 0x1462: 0x024b,\n\t0x1464: 0x028a, 0x1467: 0x024e, 0x1468: 0x026c, 0x1469: 0x0293,\n\t0x146a: 0x027e, 0x146c: 0x0284, 0x146d: 0x0287, 0x146e: 0x0260, 0x146f: 0x0272,\n\t0x1470: 0x0278, 0x1471: 0x0266, 0x1472: 0x027b, 0x1474: 0x0263, 0x1475: 0x0245,\n\t0x1476: 0x0248, 0x1477: 0x0251, 0x1479: 0x0269, 0x147a: 0x026f, 0x147b: 0x0275,\n\t0x147c: 0x0296, 0x147e: 0x02cf,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x023c, 0x1481: 0x023f, 0x1482: 0x024b, 0x1483: 0x0254, 0x1484: 0x028a, 0x1485: 0x028d,\n\t0x1486: 0x025d, 0x1487: 0x024e, 0x1488: 0x026c, 0x1489: 0x0293, 0x148b: 0x0281,\n\t0x148c: 0x0284, 0x148d: 0x0287, 0x148e: 0x0260, 0x148f: 0x0272, 0x1490: 0x0278, 0x1491: 0x0266,\n\t0x1492: 0x027b, 0x1493: 0x025a, 0x1494: 0x0263, 0x1495: 0x0245, 0x1496: 0x0248, 0x1497: 0x0251,\n\t0x1498: 0x0257, 0x1499: 0x0269, 0x149a: 0x026f, 0x149b: 0x0275,\n\t0x14a1: 0x023f, 0x14a2: 0x024b, 0x14a3: 0x0254,\n\t0x14a5: 0x028d, 0x14a6: 0x025d, 0x14a7: 0x024e, 0x14a8: 0x026c, 0x14a9: 0x0293,\n\t0x14ab: 0x0281, 0x14ac: 0x0284, 0x14ad: 0x0287, 0x14ae: 0x0260, 0x14af: 0x0272,\n\t0x14b0: 0x0278, 0x14b1: 0x0266, 0x14b2: 0x027b, 0x14b3: 0x025a, 0x14b4: 0x0263, 0x14b5: 0x0245,\n\t0x14b6: 0x0248, 0x14b7: 0x0251, 0x14b8: 0x0257, 0x14b9: 0x0269, 0x14ba: 0x026f, 0x14bb: 0x0275,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x187c, 0x14c1: 0x1879, 0x14c2: 0x187f, 0x14c3: 0x18a3, 0x14c4: 0x18c7, 0x14c5: 0x18eb,\n\t0x14c6: 0x190f, 0x14c7: 0x1918, 0x14c8: 0x191e, 0x14c9: 0x1924, 0x14ca: 0x192a,\n\t0x14d0: 0x1a92, 0x14d1: 0x1a96,\n\t0x14d2: 0x1a9a, 0x14d3: 0x1a9e, 0x14d4: 0x1aa2, 0x14d5: 0x1aa6, 0x14d6: 0x1aaa, 0x14d7: 0x1aae,\n\t0x14d8: 0x1ab2, 0x14d9: 0x1ab6, 0x14da: 0x1aba, 0x14db: 0x1abe, 0x14dc: 0x1ac2, 0x14dd: 0x1ac6,\n\t0x14de: 0x1aca, 0x14df: 0x1ace, 0x14e0: 0x1ad2, 0x14e1: 0x1ad6, 0x14e2: 0x1ada, 0x14e3: 0x1ade,\n\t0x14e4: 0x1ae2, 0x14e5: 0x1ae6, 0x14e6: 0x1aea, 0x14e7: 0x1aee, 0x14e8: 0x1af2, 0x14e9: 0x1af6,\n\t0x14ea: 0x272b, 0x14eb: 0x0047, 0x14ec: 0x0065, 0x14ed: 0x193f, 0x14ee: 0x19b7,\n\t0x14f0: 0x0043, 0x14f1: 0x0045, 0x14f2: 0x0047, 0x14f3: 0x0049, 0x14f4: 0x004b, 0x14f5: 0x004d,\n\t0x14f6: 0x004f, 0x14f7: 0x0051, 0x14f8: 0x0053, 0x14f9: 0x0055, 0x14fa: 0x0057, 0x14fb: 0x0059,\n\t0x14fc: 0x005b, 0x14fd: 0x005d, 0x14fe: 0x005f, 0x14ff: 0x0061,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x26b3, 0x1501: 0x26c8, 0x1502: 0x0506,\n\t0x1510: 0x0c12, 0x1511: 0x0a4a,\n\t0x1512: 0x08d6, 0x1513: 0x45db, 0x1514: 0x071e, 0x1515: 0x09f2, 0x1516: 0x1332, 0x1517: 0x0a02,\n\t0x1518: 0x072a, 0x1519: 0x0cda, 0x151a: 0x0eb2, 0x151b: 0x0cb2, 0x151c: 0x082a, 0x151d: 0x0b6e,\n\t0x151e: 0x07c2, 0x151f: 0x0cba, 0x1520: 0x0816, 0x1521: 0x111a, 0x1522: 0x0f86, 0x1523: 0x138e,\n\t0x1524: 0x09d6, 0x1525: 0x090e, 0x1526: 0x0e66, 0x1527: 0x0c1e, 0x1528: 0x0c4a, 0x1529: 0x06c2,\n\t0x152a: 0x06ce, 0x152b: 0x140e, 0x152c: 0x0ade, 0x152d: 0x06ea, 0x152e: 0x08f2, 0x152f: 0x0c3e,\n\t0x1530: 0x13b6, 0x1531: 0x0c16, 0x1532: 0x1072, 0x1533: 0x10ae, 0x1534: 0x08fa, 0x1535: 0x0e46,\n\t0x1536: 0x0d0e, 0x1537: 0x0d0a, 0x1538: 0x0f9a, 0x1539: 0x082e, 0x153a: 0x095a, 0x153b: 0x1446,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x06fe, 0x1541: 0x06f6, 0x1542: 0x0706, 0x1543: 0x164a, 0x1544: 0x074a, 0x1545: 0x075a,\n\t0x1546: 0x075e, 0x1547: 0x0766, 0x1548: 0x076e, 0x1549: 0x0772, 0x154a: 0x077e, 0x154b: 0x0776,\n\t0x154c: 0x05b6, 0x154d: 0x165e, 0x154e: 0x0792, 0x154f: 0x0796, 0x1550: 0x079a, 0x1551: 0x07b6,\n\t0x1552: 0x164f, 0x1553: 0x05ba, 0x1554: 0x07a2, 0x1555: 0x07c2, 0x1556: 0x1659, 0x1557: 0x07d2,\n\t0x1558: 0x07da, 0x1559: 0x073a, 0x155a: 0x07e2, 0x155b: 0x07e6, 0x155c: 0x1834, 0x155d: 0x0802,\n\t0x155e: 0x080a, 0x155f: 0x05c2, 0x1560: 0x0822, 0x1561: 0x0826, 0x1562: 0x082e, 0x1563: 0x0832,\n\t0x1564: 0x05c6, 0x1565: 0x084a, 0x1566: 0x084e, 0x1567: 0x085a, 0x1568: 0x0866, 0x1569: 0x086a,\n\t0x156a: 0x086e, 0x156b: 0x0876, 0x156c: 0x0896, 0x156d: 0x089a, 0x156e: 0x08a2, 0x156f: 0x08b2,\n\t0x1570: 0x08ba, 0x1571: 0x08be, 0x1572: 0x08be, 0x1573: 0x08be, 0x1574: 0x166d, 0x1575: 0x0e96,\n\t0x1576: 0x08d2, 0x1577: 0x08da, 0x1578: 0x1672, 0x1579: 0x08e6, 0x157a: 0x08ee, 0x157b: 0x08f6,\n\t0x157c: 0x091e, 0x157d: 0x090a, 0x157e: 0x0916, 0x157f: 0x091a,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x0922, 0x1581: 0x092a, 0x1582: 0x092e, 0x1583: 0x0936, 0x1584: 0x093e, 0x1585: 0x0942,\n\t0x1586: 0x0942, 0x1587: 0x094a, 0x1588: 0x0952, 0x1589: 0x0956, 0x158a: 0x0962, 0x158b: 0x0986,\n\t0x158c: 0x096a, 0x158d: 0x098a, 0x158e: 0x096e, 0x158f: 0x0976, 0x1590: 0x080e, 0x1591: 0x09d2,\n\t0x1592: 0x099a, 0x1593: 0x099e, 0x1594: 0x09a2, 0x1595: 0x0996, 0x1596: 0x09aa, 0x1597: 0x09a6,\n\t0x1598: 0x09be, 0x1599: 0x1677, 0x159a: 0x09da, 0x159b: 0x09de, 0x159c: 0x09e6, 0x159d: 0x09f2,\n\t0x159e: 0x09fa, 0x159f: 0x0a16, 0x15a0: 0x167c, 0x15a1: 0x1681, 0x15a2: 0x0a22, 0x15a3: 0x0a26,\n\t0x15a4: 0x0a2a, 0x15a5: 0x0a1e, 0x15a6: 0x0a32, 0x15a7: 0x05ca, 0x15a8: 0x05ce, 0x15a9: 0x0a3a,\n\t0x15aa: 0x0a42, 0x15ab: 0x0a42, 0x15ac: 0x1686, 0x15ad: 0x0a5e, 0x15ae: 0x0a62, 0x15af: 0x0a66,\n\t0x15b0: 0x0a6e, 0x15b1: 0x168b, 0x15b2: 0x0a76, 0x15b3: 0x0a7a, 0x15b4: 0x0b52, 0x15b5: 0x0a82,\n\t0x15b6: 0x05d2, 0x15b7: 0x0a8e, 0x15b8: 0x0a9e, 0x15b9: 0x0aaa, 0x15ba: 0x0aa6, 0x15bb: 0x1695,\n\t0x15bc: 0x0ab2, 0x15bd: 0x169a, 0x15be: 0x0abe, 0x15bf: 0x0aba,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x0ac2, 0x15c1: 0x0ad2, 0x15c2: 0x0ad6, 0x15c3: 0x05d6, 0x15c4: 0x0ae6, 0x15c5: 0x0aee,\n\t0x15c6: 0x0af2, 0x15c7: 0x0af6, 0x15c8: 0x05da, 0x15c9: 0x169f, 0x15ca: 0x05de, 0x15cb: 0x0b12,\n\t0x15cc: 0x0b16, 0x15cd: 0x0b1a, 0x15ce: 0x0b22, 0x15cf: 0x1866, 0x15d0: 0x0b3a, 0x15d1: 0x16a9,\n\t0x15d2: 0x16a9, 0x15d3: 0x11da, 0x15d4: 0x0b4a, 0x15d5: 0x0b4a, 0x15d6: 0x05e2, 0x15d7: 0x16cc,\n\t0x15d8: 0x179e, 0x15d9: 0x0b5a, 0x15da: 0x0b62, 0x15db: 0x05e6, 0x15dc: 0x0b76, 0x15dd: 0x0b86,\n\t0x15de: 0x0b8a, 0x15df: 0x0b92, 0x15e0: 0x0ba2, 0x15e1: 0x05ee, 0x15e2: 0x05ea, 0x15e3: 0x0ba6,\n\t0x15e4: 0x16ae, 0x15e5: 0x0baa, 0x15e6: 0x0bbe, 0x15e7: 0x0bc2, 0x15e8: 0x0bc6, 0x15e9: 0x0bc2,\n\t0x15ea: 0x0bd2, 0x15eb: 0x0bd6, 0x15ec: 0x0be6, 0x15ed: 0x0bde, 0x15ee: 0x0be2, 0x15ef: 0x0bea,\n\t0x15f0: 0x0bee, 0x15f1: 0x0bf2, 0x15f2: 0x0bfe, 0x15f3: 0x0c02, 0x15f4: 0x0c1a, 0x15f5: 0x0c22,\n\t0x15f6: 0x0c32, 0x15f7: 0x0c46, 0x15f8: 0x16bd, 0x15f9: 0x0c42, 0x15fa: 0x0c36, 0x15fb: 0x0c4e,\n\t0x15fc: 0x0c56, 0x15fd: 0x0c6a, 0x15fe: 0x16c2, 0x15ff: 0x0c72,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x0c66, 0x1601: 0x0c5e, 0x1602: 0x05f2, 0x1603: 0x0c7a, 0x1604: 0x0c82, 0x1605: 0x0c8a,\n\t0x1606: 0x0c7e, 0x1607: 0x05f6, 0x1608: 0x0c9a, 0x1609: 0x0ca2, 0x160a: 0x16c7, 0x160b: 0x0cce,\n\t0x160c: 0x0d02, 0x160d: 0x0cde, 0x160e: 0x0602, 0x160f: 0x0cea, 0x1610: 0x05fe, 0x1611: 0x05fa,\n\t0x1612: 0x07c6, 0x1613: 0x07ca, 0x1614: 0x0d06, 0x1615: 0x0cee, 0x1616: 0x11ae, 0x1617: 0x0666,\n\t0x1618: 0x0d12, 0x1619: 0x0d16, 0x161a: 0x0d1a, 0x161b: 0x0d2e, 0x161c: 0x0d26, 0x161d: 0x16e0,\n\t0x161e: 0x0606, 0x161f: 0x0d42, 0x1620: 0x0d36, 0x1621: 0x0d52, 0x1622: 0x0d5a, 0x1623: 0x16ea,\n\t0x1624: 0x0d5e, 0x1625: 0x0d4a, 0x1626: 0x0d66, 0x1627: 0x060a, 0x1628: 0x0d6a, 0x1629: 0x0d6e,\n\t0x162a: 0x0d72, 0x162b: 0x0d7e, 0x162c: 0x16ef, 0x162d: 0x0d86, 0x162e: 0x060e, 0x162f: 0x0d92,\n\t0x1630: 0x16f4, 0x1631: 0x0d96, 0x1632: 0x0612, 0x1633: 0x0da2, 0x1634: 0x0dae, 0x1635: 0x0dba,\n\t0x1636: 0x0dbe, 0x1637: 0x16f9, 0x1638: 0x1690, 0x1639: 0x16fe, 0x163a: 0x0dde, 0x163b: 0x1703,\n\t0x163c: 0x0dea, 0x163d: 0x0df2, 0x163e: 0x0de2, 0x163f: 0x0dfe,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0e0e, 0x1641: 0x0e1e, 0x1642: 0x0e12, 0x1643: 0x0e16, 0x1644: 0x0e22, 0x1645: 0x0e26,\n\t0x1646: 0x1708, 0x1647: 0x0e0a, 0x1648: 0x0e3e, 0x1649: 0x0e42, 0x164a: 0x0616, 0x164b: 0x0e56,\n\t0x164c: 0x0e52, 0x164d: 0x170d, 0x164e: 0x0e36, 0x164f: 0x0e72, 0x1650: 0x1712, 0x1651: 0x1717,\n\t0x1652: 0x0e76, 0x1653: 0x0e8a, 0x1654: 0x0e86, 0x1655: 0x0e82, 0x1656: 0x061a, 0x1657: 0x0e8e,\n\t0x1658: 0x0e9e, 0x1659: 0x0e9a, 0x165a: 0x0ea6, 0x165b: 0x1654, 0x165c: 0x0eb6, 0x165d: 0x171c,\n\t0x165e: 0x0ec2, 0x165f: 0x1726, 0x1660: 0x0ed6, 0x1661: 0x0ee2, 0x1662: 0x0ef6, 0x1663: 0x172b,\n\t0x1664: 0x0f0a, 0x1665: 0x0f0e, 0x1666: 0x1730, 0x1667: 0x1735, 0x1668: 0x0f2a, 0x1669: 0x0f3a,\n\t0x166a: 0x061e, 0x166b: 0x0f3e, 0x166c: 0x0622, 0x166d: 0x0622, 0x166e: 0x0f56, 0x166f: 0x0f5a,\n\t0x1670: 0x0f62, 0x1671: 0x0f66, 0x1672: 0x0f72, 0x1673: 0x0626, 0x1674: 0x0f8a, 0x1675: 0x173a,\n\t0x1676: 0x0fa6, 0x1677: 0x173f, 0x1678: 0x0fb2, 0x1679: 0x16a4, 0x167a: 0x0fc2, 0x167b: 0x1744,\n\t0x167c: 0x1749, 0x167d: 0x174e, 0x167e: 0x062a, 0x167f: 0x062e,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x0ffa, 0x1681: 0x1758, 0x1682: 0x1753, 0x1683: 0x175d, 0x1684: 0x1762, 0x1685: 0x1002,\n\t0x1686: 0x1006, 0x1687: 0x1006, 0x1688: 0x100e, 0x1689: 0x0636, 0x168a: 0x1012, 0x168b: 0x063a,\n\t0x168c: 0x063e, 0x168d: 0x176c, 0x168e: 0x1026, 0x168f: 0x102e, 0x1690: 0x103a, 0x1691: 0x0642,\n\t0x1692: 0x1771, 0x1693: 0x105e, 0x1694: 0x1776, 0x1695: 0x177b, 0x1696: 0x107e, 0x1697: 0x1096,\n\t0x1698: 0x0646, 0x1699: 0x109e, 0x169a: 0x10a2, 0x169b: 0x10a6, 0x169c: 0x1780, 0x169d: 0x1785,\n\t0x169e: 0x1785, 0x169f: 0x10be, 0x16a0: 0x064a, 0x16a1: 0x178a, 0x16a2: 0x10d2, 0x16a3: 0x10d6,\n\t0x16a4: 0x064e, 0x16a5: 0x178f, 0x16a6: 0x10f2, 0x16a7: 0x0652, 0x16a8: 0x1102, 0x16a9: 0x10fa,\n\t0x16aa: 0x110a, 0x16ab: 0x1799, 0x16ac: 0x1122, 0x16ad: 0x0656, 0x16ae: 0x112e, 0x16af: 0x1136,\n\t0x16b0: 0x1146, 0x16b1: 0x065a, 0x16b2: 0x17a3, 0x16b3: 0x17a8, 0x16b4: 0x065e, 0x16b5: 0x17ad,\n\t0x16b6: 0x115e, 0x16b7: 0x17b2, 0x16b8: 0x116a, 0x16b9: 0x1176, 0x16ba: 0x117e, 0x16bb: 0x17b7,\n\t0x16bc: 0x17bc, 0x16bd: 0x1192, 0x16be: 0x17c1, 0x16bf: 0x119a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x16d1, 0x16c1: 0x0662, 0x16c2: 0x11b2, 0x16c3: 0x11b6, 0x16c4: 0x066a, 0x16c5: 0x11ba,\n\t0x16c6: 0x0a36, 0x16c7: 0x17c6, 0x16c8: 0x17cb, 0x16c9: 0x16d6, 0x16ca: 0x16db, 0x16cb: 0x11da,\n\t0x16cc: 0x11de, 0x16cd: 0x13f6, 0x16ce: 0x066e, 0x16cf: 0x120a, 0x16d0: 0x1206, 0x16d1: 0x120e,\n\t0x16d2: 0x0842, 0x16d3: 0x1212, 0x16d4: 0x1216, 0x16d5: 0x121a, 0x16d6: 0x1222, 0x16d7: 0x17d0,\n\t0x16d8: 0x121e, 0x16d9: 0x1226, 0x16da: 0x123a, 0x16db: 0x123e, 0x16dc: 0x122a, 0x16dd: 0x1242,\n\t0x16de: 0x1256, 0x16df: 0x126a, 0x16e0: 0x1236, 0x16e1: 0x124a, 0x16e2: 0x124e, 0x16e3: 0x1252,\n\t0x16e4: 0x17d5, 0x16e5: 0x17df, 0x16e6: 0x17da, 0x16e7: 0x0672, 0x16e8: 0x1272, 0x16e9: 0x1276,\n\t0x16ea: 0x127e, 0x16eb: 0x17f3, 0x16ec: 0x1282, 0x16ed: 0x17e4, 0x16ee: 0x0676, 0x16ef: 0x067a,\n\t0x16f0: 0x17e9, 0x16f1: 0x17ee, 0x16f2: 0x067e, 0x16f3: 0x12a2, 0x16f4: 0x12a6, 0x16f5: 0x12aa,\n\t0x16f6: 0x12ae, 0x16f7: 0x12ba, 0x16f8: 0x12b6, 0x16f9: 0x12c2, 0x16fa: 0x12be, 0x16fb: 0x12ce,\n\t0x16fc: 0x12c6, 0x16fd: 0x12ca, 0x16fe: 0x12d2, 0x16ff: 0x0682,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x12da, 0x1701: 0x12de, 0x1702: 0x0686, 0x1703: 0x12ee, 0x1704: 0x12f2, 0x1705: 0x17f8,\n\t0x1706: 0x12fe, 0x1707: 0x1302, 0x1708: 0x068a, 0x1709: 0x130e, 0x170a: 0x05be, 0x170b: 0x17fd,\n\t0x170c: 0x1802, 0x170d: 0x068e, 0x170e: 0x0692, 0x170f: 0x133a, 0x1710: 0x1352, 0x1711: 0x136e,\n\t0x1712: 0x137e, 0x1713: 0x1807, 0x1714: 0x1392, 0x1715: 0x1396, 0x1716: 0x13ae, 0x1717: 0x13ba,\n\t0x1718: 0x1811, 0x1719: 0x1663, 0x171a: 0x13c6, 0x171b: 0x13c2, 0x171c: 0x13ce, 0x171d: 0x1668,\n\t0x171e: 0x13da, 0x171f: 0x13e6, 0x1720: 0x1816, 0x1721: 0x181b, 0x1722: 0x1426, 0x1723: 0x1432,\n\t0x1724: 0x143a, 0x1725: 0x1820, 0x1726: 0x143e, 0x1727: 0x146a, 0x1728: 0x1476, 0x1729: 0x147a,\n\t0x172a: 0x1472, 0x172b: 0x1486, 0x172c: 0x148a, 0x172d: 0x1825, 0x172e: 0x1496, 0x172f: 0x0696,\n\t0x1730: 0x149e, 0x1731: 0x182a, 0x1732: 0x069a, 0x1733: 0x14d6, 0x1734: 0x0ac6, 0x1735: 0x14ee,\n\t0x1736: 0x182f, 0x1737: 0x1839, 0x1738: 0x069e, 0x1739: 0x06a2, 0x173a: 0x1516, 0x173b: 0x183e,\n\t0x173c: 0x06a6, 0x173d: 0x1843, 0x173e: 0x152e, 0x173f: 0x152e,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x1536, 0x1741: 0x1848, 0x1742: 0x154e, 0x1743: 0x06aa, 0x1744: 0x155e, 0x1745: 0x156a,\n\t0x1746: 0x1572, 0x1747: 0x157a, 0x1748: 0x06ae, 0x1749: 0x184d, 0x174a: 0x158e, 0x174b: 0x15aa,\n\t0x174c: 0x15b6, 0x174d: 0x06b2, 0x174e: 0x06b6, 0x174f: 0x15ba, 0x1750: 0x1852, 0x1751: 0x06ba,\n\t0x1752: 0x1857, 0x1753: 0x185c, 0x1754: 0x1861, 0x1755: 0x15de, 0x1756: 0x06be, 0x1757: 0x15f2,\n\t0x1758: 0x15fa, 0x1759: 0x15fe, 0x175a: 0x1606, 0x175b: 0x160e, 0x175c: 0x1616, 0x175d: 0x186b,\n}\n\n// nfkcIndex: 22 blocks, 1408 entries, 2816 bytes\n// Block 0 is the zero block.\nvar nfkcIndex = [1408]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x5c, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5d, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x5e, 0xcb: 0x5f, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,\n\t0xd0: 0x0a, 0xd1: 0x60, 0xd2: 0x61, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x62,\n\t0xd8: 0x63, 0xd9: 0x0d, 0xdb: 0x64, 0xdc: 0x65, 0xdd: 0x66, 0xdf: 0x67,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x68, 0x121: 0x69, 0x123: 0x0e, 0x124: 0x6a, 0x125: 0x6b, 0x126: 0x6c, 0x127: 0x6d,\n\t0x128: 0x6e, 0x129: 0x6f, 0x12a: 0x70, 0x12b: 0x71, 0x12c: 0x6c, 0x12d: 0x72, 0x12e: 0x73, 0x12f: 0x74,\n\t0x131: 0x75, 0x132: 0x76, 0x133: 0x77, 0x134: 0x78, 0x135: 0x79, 0x137: 0x7a,\n\t0x138: 0x7b, 0x139: 0x7c, 0x13a: 0x7d, 0x13b: 0x7e, 0x13c: 0x7f, 0x13d: 0x80, 0x13e: 0x81, 0x13f: 0x82,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x83, 0x142: 0x84, 0x143: 0x85, 0x144: 0x86, 0x145: 0x87, 0x146: 0x88, 0x147: 0x89,\n\t0x14d: 0x8a,\n\t0x15c: 0x8b, 0x15f: 0x8c,\n\t0x162: 0x8d, 0x164: 0x8e,\n\t0x168: 0x8f, 0x169: 0x90, 0x16a: 0x91, 0x16b: 0x92, 0x16c: 0x0f, 0x16d: 0x93, 0x16e: 0x94, 0x16f: 0x95,\n\t0x170: 0x96, 0x173: 0x97, 0x174: 0x98, 0x175: 0x10, 0x176: 0x11, 0x177: 0x12,\n\t0x178: 0x13, 0x179: 0x14, 0x17a: 0x15, 0x17b: 0x16, 0x17c: 0x17, 0x17d: 0x18, 0x17e: 0x19, 0x17f: 0x1a,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x99, 0x181: 0x9a, 0x182: 0x9b, 0x183: 0x9c, 0x184: 0x1b, 0x185: 0x1c, 0x186: 0x9d, 0x187: 0x9e,\n\t0x188: 0x9f, 0x189: 0x1d, 0x18a: 0x1e, 0x18b: 0xa0, 0x18c: 0xa1,\n\t0x191: 0x1f, 0x192: 0x20, 0x193: 0xa2,\n\t0x1a8: 0xa3, 0x1a9: 0xa4, 0x1ab: 0xa5,\n\t0x1b1: 0xa6, 0x1b3: 0xa7, 0x1b5: 0xa8, 0x1b7: 0xa9,\n\t0x1ba: 0xaa, 0x1bb: 0xab, 0x1bc: 0x21, 0x1bd: 0x22, 0x1be: 0x23, 0x1bf: 0xac,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0xad, 0x1c1: 0x24, 0x1c2: 0x25, 0x1c3: 0x26, 0x1c4: 0xae, 0x1c5: 0x27, 0x1c6: 0x28,\n\t0x1c8: 0x29, 0x1c9: 0x2a, 0x1ca: 0x2b, 0x1cb: 0x2c, 0x1cc: 0x2d, 0x1cd: 0x2e, 0x1ce: 0x2f, 0x1cf: 0x30,\n\t// Block 0x8, offset 0x200\n\t0x219: 0xaf, 0x21a: 0xb0, 0x21b: 0xb1, 0x21d: 0xb2, 0x21f: 0xb3,\n\t0x220: 0xb4, 0x223: 0xb5, 0x224: 0xb6, 0x225: 0xb7, 0x226: 0xb8, 0x227: 0xb9,\n\t0x22a: 0xba, 0x22b: 0xbb, 0x22d: 0xbc, 0x22f: 0xbd,\n\t0x230: 0xbe, 0x231: 0xbf, 0x232: 0xc0, 0x233: 0xc1, 0x234: 0xc2, 0x235: 0xc3, 0x236: 0xc4, 0x237: 0xbe,\n\t0x238: 0xbf, 0x239: 0xc0, 0x23a: 0xc1, 0x23b: 0xc2, 0x23c: 0xc3, 0x23d: 0xc4, 0x23e: 0xbe, 0x23f: 0xbf,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xc0, 0x241: 0xc1, 0x242: 0xc2, 0x243: 0xc3, 0x244: 0xc4, 0x245: 0xbe, 0x246: 0xbf, 0x247: 0xc0,\n\t0x248: 0xc1, 0x249: 0xc2, 0x24a: 0xc3, 0x24b: 0xc4, 0x24c: 0xbe, 0x24d: 0xbf, 0x24e: 0xc0, 0x24f: 0xc1,\n\t0x250: 0xc2, 0x251: 0xc3, 0x252: 0xc4, 0x253: 0xbe, 0x254: 0xbf, 0x255: 0xc0, 0x256: 0xc1, 0x257: 0xc2,\n\t0x258: 0xc3, 0x259: 0xc4, 0x25a: 0xbe, 0x25b: 0xbf, 0x25c: 0xc0, 0x25d: 0xc1, 0x25e: 0xc2, 0x25f: 0xc3,\n\t0x260: 0xc4, 0x261: 0xbe, 0x262: 0xbf, 0x263: 0xc0, 0x264: 0xc1, 0x265: 0xc2, 0x266: 0xc3, 0x267: 0xc4,\n\t0x268: 0xbe, 0x269: 0xbf, 0x26a: 0xc0, 0x26b: 0xc1, 0x26c: 0xc2, 0x26d: 0xc3, 0x26e: 0xc4, 0x26f: 0xbe,\n\t0x270: 0xbf, 0x271: 0xc0, 0x272: 0xc1, 0x273: 0xc2, 0x274: 0xc3, 0x275: 0xc4, 0x276: 0xbe, 0x277: 0xbf,\n\t0x278: 0xc0, 0x279: 0xc1, 0x27a: 0xc2, 0x27b: 0xc3, 0x27c: 0xc4, 0x27d: 0xbe, 0x27e: 0xbf, 0x27f: 0xc0,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xc1, 0x281: 0xc2, 0x282: 0xc3, 0x283: 0xc4, 0x284: 0xbe, 0x285: 0xbf, 0x286: 0xc0, 0x287: 0xc1,\n\t0x288: 0xc2, 0x289: 0xc3, 0x28a: 0xc4, 0x28b: 0xbe, 0x28c: 0xbf, 0x28d: 0xc0, 0x28e: 0xc1, 0x28f: 0xc2,\n\t0x290: 0xc3, 0x291: 0xc4, 0x292: 0xbe, 0x293: 0xbf, 0x294: 0xc0, 0x295: 0xc1, 0x296: 0xc2, 0x297: 0xc3,\n\t0x298: 0xc4, 0x299: 0xbe, 0x29a: 0xbf, 0x29b: 0xc0, 0x29c: 0xc1, 0x29d: 0xc2, 0x29e: 0xc3, 0x29f: 0xc4,\n\t0x2a0: 0xbe, 0x2a1: 0xbf, 0x2a2: 0xc0, 0x2a3: 0xc1, 0x2a4: 0xc2, 0x2a5: 0xc3, 0x2a6: 0xc4, 0x2a7: 0xbe,\n\t0x2a8: 0xbf, 0x2a9: 0xc0, 0x2aa: 0xc1, 0x2ab: 0xc2, 0x2ac: 0xc3, 0x2ad: 0xc4, 0x2ae: 0xbe, 0x2af: 0xbf,\n\t0x2b0: 0xc0, 0x2b1: 0xc1, 0x2b2: 0xc2, 0x2b3: 0xc3, 0x2b4: 0xc4, 0x2b5: 0xbe, 0x2b6: 0xbf, 0x2b7: 0xc0,\n\t0x2b8: 0xc1, 0x2b9: 0xc2, 0x2ba: 0xc3, 0x2bb: 0xc4, 0x2bc: 0xbe, 0x2bd: 0xbf, 0x2be: 0xc0, 0x2bf: 0xc1,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xc2, 0x2c1: 0xc3, 0x2c2: 0xc4, 0x2c3: 0xbe, 0x2c4: 0xbf, 0x2c5: 0xc0, 0x2c6: 0xc1, 0x2c7: 0xc2,\n\t0x2c8: 0xc3, 0x2c9: 0xc4, 0x2ca: 0xbe, 0x2cb: 0xbf, 0x2cc: 0xc0, 0x2cd: 0xc1, 0x2ce: 0xc2, 0x2cf: 0xc3,\n\t0x2d0: 0xc4, 0x2d1: 0xbe, 0x2d2: 0xbf, 0x2d3: 0xc0, 0x2d4: 0xc1, 0x2d5: 0xc2, 0x2d6: 0xc3, 0x2d7: 0xc4,\n\t0x2d8: 0xbe, 0x2d9: 0xbf, 0x2da: 0xc0, 0x2db: 0xc1, 0x2dc: 0xc2, 0x2dd: 0xc3, 0x2de: 0xc5,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x31, 0x325: 0x32, 0x326: 0x33, 0x327: 0x34,\n\t0x328: 0x35, 0x329: 0x36, 0x32a: 0x37, 0x32b: 0x38, 0x32c: 0x39, 0x32d: 0x3a, 0x32e: 0x3b, 0x32f: 0x3c,\n\t0x330: 0x3d, 0x331: 0x3e, 0x332: 0x3f, 0x333: 0x40, 0x334: 0x41, 0x335: 0x42, 0x336: 0x43, 0x337: 0x44,\n\t0x338: 0x45, 0x339: 0x46, 0x33a: 0x47, 0x33b: 0x48, 0x33c: 0xc6, 0x33d: 0x49, 0x33e: 0x4a, 0x33f: 0x4b,\n\t// Block 0xd, offset 0x340\n\t0x347: 0xc7,\n\t0x34b: 0xc8, 0x34d: 0xc9,\n\t0x368: 0xca, 0x36b: 0xcb,\n\t0x374: 0xcc,\n\t0x37a: 0xcd, 0x37d: 0xce,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xcf, 0x382: 0xd0, 0x384: 0xd1, 0x385: 0xb8, 0x387: 0xd2,\n\t0x388: 0xd3, 0x38b: 0xd4, 0x38c: 0xd5, 0x38d: 0xd6,\n\t0x391: 0xd7, 0x392: 0xd8, 0x393: 0xd9, 0x396: 0xda, 0x397: 0xdb,\n\t0x398: 0xdc, 0x39a: 0xdd, 0x39c: 0xde,\n\t0x3a0: 0xdf, 0x3a4: 0xe0, 0x3a5: 0xe1, 0x3a7: 0xe2,\n\t0x3a8: 0xe3, 0x3a9: 0xe4, 0x3aa: 0xe5,\n\t0x3b0: 0xdc, 0x3b5: 0xe6, 0x3b6: 0xe7,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xe8, 0x3ec: 0xe9,\n\t0x3ff: 0xea,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xeb,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xec, 0x446: 0xed, 0x447: 0xee,\n\t0x449: 0xef,\n\t0x450: 0xf0, 0x451: 0xf1, 0x452: 0xf2, 0x453: 0xf3, 0x454: 0xf4, 0x455: 0xf5, 0x456: 0xf6, 0x457: 0xf7,\n\t0x458: 0xf8, 0x459: 0xf9, 0x45a: 0x4c, 0x45b: 0xfa, 0x45c: 0xfb, 0x45d: 0xfc, 0x45e: 0xfd, 0x45f: 0x4d,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xfe, 0x484: 0xe9,\n\t0x48b: 0xff,\n\t0x4a3: 0x100, 0x4a5: 0x101,\n\t0x4b8: 0x4e, 0x4b9: 0x4f, 0x4ba: 0x50,\n\t// Block 0x13, offset 0x4c0\n\t0x4c4: 0x51, 0x4c5: 0x102, 0x4c6: 0x103,\n\t0x4c8: 0x52, 0x4c9: 0x104,\n\t0x4ef: 0x105,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x53, 0x521: 0x54, 0x522: 0x55, 0x523: 0x56, 0x524: 0x57, 0x525: 0x58, 0x526: 0x59, 0x527: 0x5a,\n\t0x528: 0x5b,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfkcSparseOffset: 170 entries, 340 bytes\nvar nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x70, 0x75, 0x77, 0x7f, 0x86, 0x89, 0x91, 0x95, 0x99, 0x9b, 0x9d, 0xa6, 0xaa, 0xb1, 0xb6, 0xb9, 0xc3, 0xc6, 0xcd, 0xd5, 0xd9, 0xdb, 0xdf, 0xe3, 0xe9, 0xfa, 0x106, 0x108, 0x10e, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11a, 0x11c, 0x11f, 0x122, 0x124, 0x127, 0x12a, 0x12e, 0x134, 0x136, 0x13f, 0x141, 0x144, 0x146, 0x151, 0x15c, 0x16a, 0x178, 0x188, 0x196, 0x19d, 0x1a3, 0x1b2, 0x1b6, 0x1b8, 0x1bc, 0x1be, 0x1c1, 0x1c3, 0x1c6, 0x1c8, 0x1cb, 0x1cd, 0x1cf, 0x1d1, 0x1dd, 0x1e7, 0x1f1, 0x1f4, 0x1f8, 0x1fa, 0x1fc, 0x1fe, 0x201, 0x204, 0x206, 0x208, 0x20a, 0x20c, 0x212, 0x215, 0x21a, 0x21c, 0x223, 0x229, 0x22f, 0x237, 0x23d, 0x243, 0x249, 0x24d, 0x24f, 0x251, 0x253, 0x255, 0x25b, 0x25e, 0x260, 0x262, 0x268, 0x26b, 0x273, 0x27a, 0x27d, 0x280, 0x282, 0x285, 0x28d, 0x291, 0x298, 0x29b, 0x2a1, 0x2a3, 0x2a5, 0x2a8, 0x2aa, 0x2ad, 0x2b2, 0x2b4, 0x2b6, 0x2b8, 0x2ba, 0x2bc, 0x2bf, 0x2c1, 0x2c3, 0x2c5, 0x2c7, 0x2c9, 0x2d6, 0x2e0, 0x2e2, 0x2e4, 0x2e8, 0x2ed, 0x2f9, 0x2fe, 0x307, 0x30d, 0x312, 0x316, 0x31b, 0x31f, 0x32f, 0x33d, 0x34b, 0x359, 0x35f, 0x361, 0x363, 0x366, 0x371, 0x373, 0x37d}\n\n// nfkcSparseValues: 895 entries, 3580 bytes\nvar nfkcSparseValues = [895]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x0001, lo: 0xa0, hi: 0xa0},\n\t{value: 0x428f, lo: 0xa8, hi: 0xa8},\n\t{value: 0x0083, lo: 0xaa, hi: 0xaa},\n\t{value: 0x427b, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0025, lo: 0xb2, hi: 0xb3},\n\t{value: 0x4271, lo: 0xb4, hi: 0xb4},\n\t{value: 0x01df, lo: 0xb5, hi: 0xb5},\n\t{value: 0x42a8, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0023, lo: 0xb9, hi: 0xb9},\n\t{value: 0x009f, lo: 0xba, hi: 0xba},\n\t{value: 0x2222, lo: 0xbc, hi: 0xbc},\n\t{value: 0x2216, lo: 0xbd, hi: 0xbd},\n\t{value: 0x22b8, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1, offset 0xe\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46f9, lo: 0xa0, hi: 0xa1},\n\t{value: 0x472b, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x12\n\t{value: 0x0003, lo: 0x08},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x0091, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0119, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0095, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00a5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0143, lo: 0xb4, hi: 0xb6},\n\t{value: 0x00af, lo: 0xb7, hi: 0xb7},\n\t{value: 0x00b3, lo: 0xb8, hi: 0xb8},\n\t// Block 0x3, offset 0x1b\n\t{value: 0x000a, lo: 0x09},\n\t{value: 0x4285, lo: 0x98, hi: 0x98},\n\t{value: 0x428a, lo: 0x99, hi: 0x9a},\n\t{value: 0x42ad, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4276, lo: 0x9c, hi: 0x9c},\n\t{value: 0x4299, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0113, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0099, lo: 0xa1, hi: 0xa1},\n\t{value: 0x00a7, lo: 0xa2, hi: 0xa3},\n\t{value: 0x016a, lo: 0xa4, hi: 0xa4},\n\t// Block 0x4, offset 0x25\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37bc, lo: 0x90, hi: 0x90},\n\t{value: 0x37c8, lo: 0x91, hi: 0x91},\n\t{value: 0x37b6, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x382e, lo: 0x97, hi: 0x97},\n\t{value: 0x37f8, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37e0, lo: 0x9d, hi: 0x9d},\n\t{value: 0x380a, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x3834, lo: 0xb6, hi: 0xb6},\n\t{value: 0x383a, lo: 0xb7, hi: 0xb7},\n\t// Block 0x5, offset 0x35\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x83, hi: 0x87},\n\t// Block 0x6, offset 0x37\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8114, lo: 0x81, hi: 0x82},\n\t{value: 0x8133, lo: 0x84, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t{value: 0x810e, lo: 0x87, hi: 0x87},\n\t// Block 0x7, offset 0x3c\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x97},\n\t{value: 0x811a, lo: 0x98, hi: 0x98},\n\t{value: 0x811b, lo: 0x99, hi: 0x99},\n\t{value: 0x811c, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3858, lo: 0xa2, hi: 0xa2},\n\t{value: 0x385e, lo: 0xa3, hi: 0xa3},\n\t{value: 0x386a, lo: 0xa4, hi: 0xa4},\n\t{value: 0x3864, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3870, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x8, offset 0x47\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x3882, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x3876, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x387c, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8133, lo: 0x96, hi: 0x9c},\n\t{value: 0x8133, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812e, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812e, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t// Block 0x9, offset 0x56\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x8120, lo: 0x91, hi: 0x91},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812e, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8133, lo: 0xba, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8133, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8133, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa, offset 0x63\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8133, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x812e, lo: 0x82, hi: 0x83},\n\t{value: 0x812e, lo: 0x84, hi: 0x85},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x812e, lo: 0x88, hi: 0x89},\n\t{value: 0x8133, lo: 0x8a, hi: 0x8a},\n\t// Block 0xb, offset 0x6b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0xab, hi: 0xb1},\n\t{value: 0x812e, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8133, lo: 0xb3, hi: 0xb3},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0xc, offset 0x70\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0x96, hi: 0x99},\n\t{value: 0x8133, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8133, lo: 0xa9, hi: 0xad},\n\t// Block 0xd, offset 0x75\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t// Block 0xe, offset 0x77\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3eef, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ef7, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3eff, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9903, lo: 0xbc, hi: 0xbc},\n\t// Block 0xf, offset 0x7f\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x91, hi: 0x91},\n\t{value: 0x812e, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x93, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x94},\n\t{value: 0x4533, lo: 0x98, hi: 0x9f},\n\t// Block 0x10, offset 0x86\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x11, offset 0x89\n\t{value: 0x0008, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cab, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x4573, lo: 0x9c, hi: 0x9d},\n\t{value: 0x4583, lo: 0x9f, hi: 0x9f},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbe},\n\t// Block 0x12, offset 0x91\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x45ab, lo: 0xb3, hi: 0xb3},\n\t{value: 0x45b3, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x13, offset 0x95\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x458b, lo: 0x99, hi: 0x9b},\n\t{value: 0x45a3, lo: 0x9e, hi: 0x9e},\n\t// Block 0x14, offset 0x99\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x15, offset 0x9b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t// Block 0x16, offset 0x9d\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cc3, lo: 0x88, hi: 0x88},\n\t{value: 0x2cbb, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2ccb, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45bb, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45c3, lo: 0x9d, hi: 0x9d},\n\t// Block 0x17, offset 0xa6\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cd3, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x18, offset 0xaa\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cdb, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2ceb, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2ce3, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x19, offset 0xb1\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3f07, lo: 0x88, hi: 0x88},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8121, lo: 0x95, hi: 0x96},\n\t// Block 0x1a, offset 0xb6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1b, offset 0xb9\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2cf3, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cfb, lo: 0x87, hi: 0x87},\n\t{value: 0x2d03, lo: 0x88, hi: 0x88},\n\t{value: 0x2f67, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2def, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1c, offset 0xc3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1d, offset 0xc6\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2d0b, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d1b, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d13, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1e, offset 0xcd\n\t{value: 0x6bdd, lo: 0x07},\n\t{value: 0x9905, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3f0f, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f6f, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2dfa, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d23, lo: 0x9e, hi: 0x9f},\n\t// Block 0x1f, offset 0xd5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2627, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8123, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x20, offset 0xd9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8124, lo: 0x88, hi: 0x8b},\n\t// Block 0x21, offset 0xdb\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x263c, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8125, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x22, offset 0xdf\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8126, lo: 0x88, hi: 0x8b},\n\t{value: 0x262e, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2635, lo: 0x9d, hi: 0x9d},\n\t// Block 0x23, offset 0xe3\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x030e, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812e, lo: 0x98, hi: 0x99},\n\t{value: 0x812e, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812c, lo: 0xb9, hi: 0xb9},\n\t// Block 0x24, offset 0xe9\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x264a, lo: 0x83, hi: 0x83},\n\t{value: 0x2651, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2658, lo: 0x92, hi: 0x92},\n\t{value: 0x265f, lo: 0x97, hi: 0x97},\n\t{value: 0x2666, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2643, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8127, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8128, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a9b, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8129, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4aa4, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45cb, lo: 0xb6, hi: 0xb6},\n\t{value: 0x460b, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45d3, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4616, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8128, lo: 0xba, hi: 0xbd},\n\t// Block 0x25, offset 0xfa\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8128, lo: 0x80, hi: 0x80},\n\t{value: 0x4aad, lo: 0x81, hi: 0x81},\n\t{value: 0x8133, lo: 0x82, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0x86, hi: 0x87},\n\t{value: 0x2674, lo: 0x93, hi: 0x93},\n\t{value: 0x267b, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2682, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2689, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2690, lo: 0xac, hi: 0xac},\n\t{value: 0x266d, lo: 0xb9, hi: 0xb9},\n\t// Block 0x26, offset 0x106\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x86, hi: 0x86},\n\t// Block 0x27, offset 0x108\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d2b, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x28, offset 0x10e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t// Block 0x29, offset 0x110\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0312, lo: 0xbc, hi: 0xbc},\n\t// Block 0x2a, offset 0x112\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2b, offset 0x114\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2c, offset 0x116\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2d, offset 0x118\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2e, offset 0x11a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9f},\n\t// Block 0x2f, offset 0x11c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x94, hi: 0x94},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x30, offset 0x11f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9d},\n\t// Block 0x31, offset 0x122\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t// Block 0x32, offset 0x124\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812f, lo: 0xb9, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbb},\n\t// Block 0x33, offset 0x127\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x97, hi: 0x97},\n\t{value: 0x812e, lo: 0x98, hi: 0x98},\n\t// Block 0x34, offset 0x12a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8133, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x35, offset 0x12e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812e, lo: 0xb5, hi: 0xba},\n\t{value: 0x8133, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x134\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x80, hi: 0x80},\n\t// Block 0x37, offset 0x136\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d73, lo: 0x80, hi: 0x80},\n\t{value: 0x2d7b, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d83, lo: 0x83, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xab, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xac},\n\t{value: 0x8133, lo: 0xad, hi: 0xb3},\n\t// Block 0x38, offset 0x13f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xaa, hi: 0xab},\n\t// Block 0x39, offset 0x141\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8105, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3a, offset 0x144\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3b, offset 0x146\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812e, lo: 0x95, hi: 0x99},\n\t{value: 0x8133, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812e, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x8133, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3c, offset 0x151\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0043, lo: 0xac, hi: 0xac},\n\t{value: 0x00d1, lo: 0xad, hi: 0xad},\n\t{value: 0x0045, lo: 0xae, hi: 0xae},\n\t{value: 0x0049, lo: 0xb0, hi: 0xb1},\n\t{value: 0x00e6, lo: 0xb2, hi: 0xb2},\n\t{value: 0x004f, lo: 0xb3, hi: 0xba},\n\t{value: 0x005f, lo: 0xbc, hi: 0xbc},\n\t{value: 0x00ef, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0061, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0065, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x15c\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0001, lo: 0x80, hi: 0x8a},\n\t{value: 0x043e, lo: 0x91, hi: 0x91},\n\t{value: 0x42b2, lo: 0x97, hi: 0x97},\n\t{value: 0x001d, lo: 0xa4, hi: 0xa4},\n\t{value: 0x1876, lo: 0xa5, hi: 0xa5},\n\t{value: 0x1b62, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0001, lo: 0xaf, hi: 0xaf},\n\t{value: 0x2697, lo: 0xb3, hi: 0xb3},\n\t{value: 0x280b, lo: 0xb4, hi: 0xb4},\n\t{value: 0x269e, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2815, lo: 0xb7, hi: 0xb7},\n\t{value: 0x1870, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4280, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3e, offset 0x16a\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x1936, lo: 0x87, hi: 0x87},\n\t{value: 0x1933, lo: 0x88, hi: 0x88},\n\t{value: 0x1873, lo: 0x89, hi: 0x89},\n\t{value: 0x299b, lo: 0x97, hi: 0x97},\n\t{value: 0x0001, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0093, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb4, hi: 0xb9},\n\t{value: 0x0017, lo: 0xba, hi: 0xba},\n\t{value: 0x046a, lo: 0xbb, hi: 0xbb},\n\t{value: 0x003b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0011, lo: 0xbd, hi: 0xbe},\n\t{value: 0x009d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3f, offset 0x178\n\t{value: 0x0002, lo: 0x0f},\n\t{value: 0x0021, lo: 0x80, hi: 0x89},\n\t{value: 0x0017, lo: 0x8a, hi: 0x8a},\n\t{value: 0x046a, lo: 0x8b, hi: 0x8b},\n\t{value: 0x003b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0011, lo: 0x8d, hi: 0x8e},\n\t{value: 0x0083, lo: 0x90, hi: 0x90},\n\t{value: 0x008b, lo: 0x91, hi: 0x91},\n\t{value: 0x009f, lo: 0x92, hi: 0x92},\n\t{value: 0x00b1, lo: 0x93, hi: 0x93},\n\t{value: 0x0104, lo: 0x94, hi: 0x94},\n\t{value: 0x0091, lo: 0x95, hi: 0x95},\n\t{value: 0x0097, lo: 0x96, hi: 0x99},\n\t{value: 0x00a1, lo: 0x9a, hi: 0x9a},\n\t{value: 0x00a7, lo: 0x9b, hi: 0x9c},\n\t{value: 0x199f, lo: 0xa8, hi: 0xa8},\n\t// Block 0x40, offset 0x188\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8133, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8133, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8133, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812e, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8133, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t// Block 0x41, offset 0x196\n\t{value: 0x0007, lo: 0x06},\n\t{value: 0x2186, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bd0, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bde, lo: 0xae, hi: 0xae},\n\t// Block 0x42, offset 0x19d\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3be5, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bec, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x43, offset 0x1a3\n\t{value: 0x017a, lo: 0x0e},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3bfa, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3c01, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3c08, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3c0f, lo: 0xa4, hi: 0xa4},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3c16, lo: 0xa6, hi: 0xa6},\n\t{value: 0x26a5, lo: 0xac, hi: 0xad},\n\t{value: 0x26ac, lo: 0xaf, hi: 0xaf},\n\t{value: 0x2829, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x44, offset 0x1b2\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c7f, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3ca9, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cd3, lo: 0xaa, hi: 0xad},\n\t// Block 0x45, offset 0x1b6\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048e, lo: 0xa9, hi: 0xaa},\n\t// Block 0x46, offset 0x1b8\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0057, lo: 0x80, hi: 0x8f},\n\t{value: 0x0083, lo: 0x90, hi: 0xa9},\n\t{value: 0x0021, lo: 0xaa, hi: 0xaa},\n\t// Block 0x47, offset 0x1bc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x29a8, lo: 0x8c, hi: 0x8c},\n\t// Block 0x48, offset 0x1be\n\t{value: 0x0266, lo: 0x02},\n\t{value: 0x1b92, lo: 0xb4, hi: 0xb4},\n\t{value: 0x1930, lo: 0xb5, hi: 0xb6},\n\t// Block 0x49, offset 0x1c1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44f4, lo: 0x9c, hi: 0x9c},\n\t// Block 0x4a, offset 0x1c3\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0095, lo: 0xbc, hi: 0xbc},\n\t{value: 0x006d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x4b, offset 0x1c6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xaf, hi: 0xb1},\n\t// Block 0x4c, offset 0x1c8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0482, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x4d, offset 0x1cb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa0, hi: 0xbf},\n\t// Block 0x4e, offset 0x1cd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0dc6, lo: 0x9f, hi: 0x9f},\n\t// Block 0x4f, offset 0x1cf\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x1632, lo: 0xb3, hi: 0xb3},\n\t// Block 0x50, offset 0x1d1\n\t{value: 0x0004, lo: 0x0b},\n\t{value: 0x159a, lo: 0x80, hi: 0x82},\n\t{value: 0x15b2, lo: 0x83, hi: 0x83},\n\t{value: 0x15ca, lo: 0x84, hi: 0x85},\n\t{value: 0x15da, lo: 0x86, hi: 0x89},\n\t{value: 0x15ee, lo: 0x8a, hi: 0x8c},\n\t{value: 0x1602, lo: 0x8d, hi: 0x8d},\n\t{value: 0x160a, lo: 0x8e, hi: 0x8e},\n\t{value: 0x1612, lo: 0x8f, hi: 0x90},\n\t{value: 0x161e, lo: 0x91, hi: 0x93},\n\t{value: 0x162e, lo: 0x94, hi: 0x94},\n\t{value: 0x1636, lo: 0x95, hi: 0x95},\n\t// Block 0x51, offset 0x1dd\n\t{value: 0x0004, lo: 0x09},\n\t{value: 0x0001, lo: 0x80, hi: 0x80},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x8134, lo: 0xac, hi: 0xac},\n\t{value: 0x812f, lo: 0xad, hi: 0xad},\n\t{value: 0x8130, lo: 0xae, hi: 0xae},\n\t{value: 0x8130, lo: 0xaf, hi: 0xaf},\n\t{value: 0x04b6, lo: 0xb6, hi: 0xb6},\n\t{value: 0x088a, lo: 0xb8, hi: 0xba},\n\t// Block 0x52, offset 0x1e7\n\t{value: 0x0006, lo: 0x09},\n\t{value: 0x0316, lo: 0xb1, hi: 0xb1},\n\t{value: 0x031a, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a52, lo: 0xb3, hi: 0xb3},\n\t{value: 0x031e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a58, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0322, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0326, lo: 0xb8, hi: 0xb8},\n\t{value: 0x032a, lo: 0xb9, hi: 0xb9},\n\t{value: 0x4a64, lo: 0xba, hi: 0xbf},\n\t// Block 0x53, offset 0x1f1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb4, hi: 0xbd},\n\t// Block 0x54, offset 0x1f4\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x0212, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0215, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9f},\n\t// Block 0x55, offset 0x1f8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb1},\n\t// Block 0x56, offset 0x1fa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x163e, lo: 0xb0, hi: 0xb0},\n\t// Block 0x57, offset 0x1fc\n\t{value: 0x000c, lo: 0x01},\n\t{value: 0x00d7, lo: 0xb8, hi: 0xb9},\n\t// Block 0x58, offset 0x1fe\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xac, hi: 0xac},\n\t// Block 0x59, offset 0x201\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xa0, hi: 0xb1},\n\t// Block 0x5a, offset 0x204\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xab, hi: 0xad},\n\t// Block 0x5b, offset 0x206\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x93, hi: 0x93},\n\t// Block 0x5c, offset 0x208\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb3, hi: 0xb3},\n\t// Block 0x5d, offset 0x20a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t// Block 0x5e, offset 0x20c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbf},\n\t// Block 0x5f, offset 0x212\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t// Block 0x60, offset 0x215\n\t{value: 0x0008, lo: 0x04},\n\t{value: 0x163a, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0125, lo: 0x9e, hi: 0x9e},\n\t{value: 0x1646, lo: 0x9f, hi: 0x9f},\n\t{value: 0x015e, lo: 0xa9, hi: 0xa9},\n\t// Block 0x61, offset 0x21a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xad, hi: 0xad},\n\t// Block 0x62, offset 0x21c\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x63, offset 0x223\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x64, offset 0x229\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x65, offset 0x22f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x66, offset 0x237\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x67, offset 0x23d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x68, offset 0x243\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x69, offset 0x249\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x6a, offset 0x24d\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0003, lo: 0x81, hi: 0xbf},\n\t// Block 0x6b, offset 0x24f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0x6c, offset 0x251\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xa0, hi: 0xa0},\n\t// Block 0x6d, offset 0x253\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb6, hi: 0xba},\n\t// Block 0x6e, offset 0x255\n\t{value: 0x002d, lo: 0x05},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x6f, offset 0x25b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812e, lo: 0xa6, hi: 0xa6},\n\t// Block 0x70, offset 0x25e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa7},\n\t// Block 0x71, offset 0x260\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t// Block 0x72, offset 0x262\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x8133, lo: 0x88, hi: 0x8a},\n\t{value: 0x812e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8133, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812e, lo: 0x8d, hi: 0x90},\n\t// Block 0x73, offset 0x268\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x74, offset 0x26b\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x424f, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4259, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x4263, lo: 0xab, hi: 0xab},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x75, offset 0x273\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8133, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d8b, lo: 0xae, hi: 0xae},\n\t{value: 0x2d95, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8105, lo: 0xb3, hi: 0xb4},\n\t// Block 0x76, offset 0x27a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0x77, offset 0x27d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8103, lo: 0xb6, hi: 0xb6},\n\t// Block 0x78, offset 0x280\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8103, lo: 0xa9, hi: 0xaa},\n\t// Block 0x79, offset 0x282\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7a, offset 0x285\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d9f, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2da9, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8133, lo: 0xa6, hi: 0xac},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t// Block 0x7b, offset 0x28d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x86, hi: 0x86},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9e},\n\t// Block 0x7c, offset 0x291\n\t{value: 0x6b4d, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2dbd, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2db3, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dc7, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7d, offset 0x298\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x7e, offset 0x29b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dd1, lo: 0xba, hi: 0xba},\n\t{value: 0x2ddb, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7f, offset 0x2a1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x80, hi: 0x80},\n\t// Block 0x80, offset 0x2a3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x81, offset 0x2a5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x82, offset 0x2a8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xab, hi: 0xab},\n\t// Block 0x83, offset 0x2aa\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8103, lo: 0xba, hi: 0xba},\n\t// Block 0x84, offset 0x2ad\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2de5, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8105, lo: 0xbd, hi: 0xbe},\n\t// Block 0x85, offset 0x2b2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x86, offset 0x2b4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t// Block 0x87, offset 0x2b6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x88, offset 0x2b8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x87, hi: 0x87},\n\t// Block 0x89, offset 0x2ba\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x99, hi: 0x99},\n\t// Block 0x8a, offset 0x2bc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0x82, hi: 0x82},\n\t{value: 0x8105, lo: 0x84, hi: 0x85},\n\t// Block 0x8b, offset 0x2bf\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x97, hi: 0x97},\n\t// Block 0x8c, offset 0x2c1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x8d, offset 0x2c3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb6},\n\t// Block 0x8e, offset 0x2c5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb0, hi: 0xb1},\n\t// Block 0x8f, offset 0x2c7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x90, offset 0x2c9\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45e3, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45ed, lo: 0x9f, hi: 0x9f},\n\t{value: 0x4621, lo: 0xa0, hi: 0xa0},\n\t{value: 0x462f, lo: 0xa1, hi: 0xa1},\n\t{value: 0x463d, lo: 0xa2, hi: 0xa2},\n\t{value: 0x464b, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4659, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812c, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8131, lo: 0xad, hi: 0xad},\n\t{value: 0x812c, lo: 0xae, hi: 0xb2},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbf},\n\t// Block 0x91, offset 0x2d6\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812e, lo: 0x80, hi: 0x82},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8133, lo: 0xaa, hi: 0xad},\n\t{value: 0x45f7, lo: 0xbb, hi: 0xbb},\n\t{value: 0x4601, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4667, lo: 0xbd, hi: 0xbd},\n\t{value: 0x4683, lo: 0xbe, hi: 0xbe},\n\t{value: 0x4675, lo: 0xbf, hi: 0xbf},\n\t// Block 0x92, offset 0x2e0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4691, lo: 0x80, hi: 0x80},\n\t// Block 0x93, offset 0x2e2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x82, hi: 0x84},\n\t// Block 0x94, offset 0x2e4\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0043, lo: 0x80, hi: 0x99},\n\t{value: 0x0083, lo: 0x9a, hi: 0xb3},\n\t{value: 0x0043, lo: 0xb4, hi: 0xbf},\n\t// Block 0x95, offset 0x2e8\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x005b, lo: 0x80, hi: 0x8d},\n\t{value: 0x0083, lo: 0x8e, hi: 0x94},\n\t{value: 0x0093, lo: 0x96, hi: 0xa7},\n\t{value: 0x0043, lo: 0xa8, hi: 0xbf},\n\t// Block 0x96, offset 0x2ed\n\t{value: 0x0002, lo: 0x0b},\n\t{value: 0x0073, lo: 0x80, hi: 0x81},\n\t{value: 0x0083, lo: 0x82, hi: 0x9b},\n\t{value: 0x0043, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0047, lo: 0x9e, hi: 0x9f},\n\t{value: 0x004f, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0055, lo: 0xa5, hi: 0xa6},\n\t{value: 0x005d, lo: 0xa9, hi: 0xac},\n\t{value: 0x0067, lo: 0xae, hi: 0xb5},\n\t{value: 0x0083, lo: 0xb6, hi: 0xb9},\n\t{value: 0x008d, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0091, lo: 0xbd, hi: 0xbf},\n\t// Block 0x97, offset 0x2f9\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x0097, lo: 0x80, hi: 0x83},\n\t{value: 0x00a1, lo: 0x85, hi: 0x8f},\n\t{value: 0x0043, lo: 0x90, hi: 0xa9},\n\t{value: 0x0083, lo: 0xaa, hi: 0xbf},\n\t// Block 0x98, offset 0x2fe\n\t{value: 0x0002, lo: 0x08},\n\t{value: 0x00af, lo: 0x80, hi: 0x83},\n\t{value: 0x0043, lo: 0x84, hi: 0x85},\n\t{value: 0x0049, lo: 0x87, hi: 0x8a},\n\t{value: 0x0055, lo: 0x8d, hi: 0x94},\n\t{value: 0x0067, lo: 0x96, hi: 0x9c},\n\t{value: 0x0083, lo: 0x9e, hi: 0xb7},\n\t{value: 0x0043, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0049, lo: 0xbb, hi: 0xbe},\n\t// Block 0x99, offset 0x307\n\t{value: 0x0002, lo: 0x05},\n\t{value: 0x0053, lo: 0x80, hi: 0x84},\n\t{value: 0x005f, lo: 0x86, hi: 0x86},\n\t{value: 0x0067, lo: 0x8a, hi: 0x90},\n\t{value: 0x0083, lo: 0x92, hi: 0xab},\n\t{value: 0x0043, lo: 0xac, hi: 0xbf},\n\t// Block 0x9a, offset 0x30d\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x006b, lo: 0x80, hi: 0x85},\n\t{value: 0x0083, lo: 0x86, hi: 0x9f},\n\t{value: 0x0043, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0083, lo: 0xba, hi: 0xbf},\n\t// Block 0x9b, offset 0x312\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x008f, lo: 0x80, hi: 0x93},\n\t{value: 0x0043, lo: 0x94, hi: 0xad},\n\t{value: 0x0083, lo: 0xae, hi: 0xbf},\n\t// Block 0x9c, offset 0x316\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x00a7, lo: 0x80, hi: 0x87},\n\t{value: 0x0043, lo: 0x88, hi: 0xa1},\n\t{value: 0x0083, lo: 0xa2, hi: 0xbb},\n\t{value: 0x0043, lo: 0xbc, hi: 0xbf},\n\t// Block 0x9d, offset 0x31b\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x004b, lo: 0x80, hi: 0x95},\n\t{value: 0x0083, lo: 0x96, hi: 0xaf},\n\t{value: 0x0043, lo: 0xb0, hi: 0xbf},\n\t// Block 0x9e, offset 0x31f\n\t{value: 0x0003, lo: 0x0f},\n\t{value: 0x01bb, lo: 0x80, hi: 0x80},\n\t{value: 0x0462, lo: 0x81, hi: 0x81},\n\t{value: 0x01be, lo: 0x82, hi: 0x9a},\n\t{value: 0x045e, lo: 0x9b, hi: 0x9b},\n\t{value: 0x01ca, lo: 0x9c, hi: 0x9c},\n\t{value: 0x01d3, lo: 0x9d, hi: 0x9d},\n\t{value: 0x01d9, lo: 0x9e, hi: 0x9e},\n\t{value: 0x01fd, lo: 0x9f, hi: 0x9f},\n\t{value: 0x01ee, lo: 0xa0, hi: 0xa0},\n\t{value: 0x01eb, lo: 0xa1, hi: 0xa1},\n\t{value: 0x0176, lo: 0xa2, hi: 0xb2},\n\t{value: 0x018b, lo: 0xb3, hi: 0xb3},\n\t{value: 0x01a9, lo: 0xb4, hi: 0xba},\n\t{value: 0x0462, lo: 0xbb, hi: 0xbb},\n\t{value: 0x01be, lo: 0xbc, hi: 0xbf},\n\t// Block 0x9f, offset 0x32f\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01ca, lo: 0x80, hi: 0x94},\n\t{value: 0x045e, lo: 0x95, hi: 0x95},\n\t{value: 0x01ca, lo: 0x96, hi: 0x96},\n\t{value: 0x01d3, lo: 0x97, hi: 0x97},\n\t{value: 0x01d9, lo: 0x98, hi: 0x98},\n\t{value: 0x01fd, lo: 0x99, hi: 0x99},\n\t{value: 0x01ee, lo: 0x9a, hi: 0x9a},\n\t{value: 0x01eb, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0176, lo: 0x9c, hi: 0xac},\n\t{value: 0x018b, lo: 0xad, hi: 0xad},\n\t{value: 0x01a9, lo: 0xae, hi: 0xb4},\n\t{value: 0x0462, lo: 0xb5, hi: 0xb5},\n\t{value: 0x01be, lo: 0xb6, hi: 0xbf},\n\t// Block 0xa0, offset 0x33d\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01dc, lo: 0x80, hi: 0x8e},\n\t{value: 0x045e, lo: 0x8f, hi: 0x8f},\n\t{value: 0x01ca, lo: 0x90, hi: 0x90},\n\t{value: 0x01d3, lo: 0x91, hi: 0x91},\n\t{value: 0x01d9, lo: 0x92, hi: 0x92},\n\t{value: 0x01fd, lo: 0x93, hi: 0x93},\n\t{value: 0x01ee, lo: 0x94, hi: 0x94},\n\t{value: 0x01eb, lo: 0x95, hi: 0x95},\n\t{value: 0x0176, lo: 0x96, hi: 0xa6},\n\t{value: 0x018b, lo: 0xa7, hi: 0xa7},\n\t{value: 0x01a9, lo: 0xa8, hi: 0xae},\n\t{value: 0x0462, lo: 0xaf, hi: 0xaf},\n\t{value: 0x01be, lo: 0xb0, hi: 0xbf},\n\t// Block 0xa1, offset 0x34b\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01ee, lo: 0x80, hi: 0x88},\n\t{value: 0x045e, lo: 0x89, hi: 0x89},\n\t{value: 0x01ca, lo: 0x8a, hi: 0x8a},\n\t{value: 0x01d3, lo: 0x8b, hi: 0x8b},\n\t{value: 0x01d9, lo: 0x8c, hi: 0x8c},\n\t{value: 0x01fd, lo: 0x8d, hi: 0x8d},\n\t{value: 0x01ee, lo: 0x8e, hi: 0x8e},\n\t{value: 0x01eb, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0176, lo: 0x90, hi: 0xa0},\n\t{value: 0x018b, lo: 0xa1, hi: 0xa1},\n\t{value: 0x01a9, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0462, lo: 0xa9, hi: 0xa9},\n\t{value: 0x01be, lo: 0xaa, hi: 0xbf},\n\t// Block 0xa2, offset 0x359\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0x80, hi: 0x86},\n\t{value: 0x8133, lo: 0x88, hi: 0x98},\n\t{value: 0x8133, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8133, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8133, lo: 0xa6, hi: 0xaa},\n\t// Block 0xa3, offset 0x35f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xac, hi: 0xaf},\n\t// Block 0xa4, offset 0x361\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x90, hi: 0x96},\n\t// Block 0xa5, offset 0x363\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x84, hi: 0x89},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0xa6, offset 0x366\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0063, lo: 0x80, hi: 0x89},\n\t{value: 0x1954, lo: 0x8a, hi: 0x8a},\n\t{value: 0x1987, lo: 0x8b, hi: 0x8b},\n\t{value: 0x19a2, lo: 0x8c, hi: 0x8c},\n\t{value: 0x19a8, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1bc6, lo: 0x8e, hi: 0x8e},\n\t{value: 0x19b4, lo: 0x8f, hi: 0x8f},\n\t{value: 0x197e, lo: 0xaa, hi: 0xaa},\n\t{value: 0x1981, lo: 0xab, hi: 0xab},\n\t{value: 0x1984, lo: 0xac, hi: 0xac},\n\t// Block 0xa7, offset 0x371\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x1942, lo: 0x90, hi: 0x90},\n\t// Block 0xa8, offset 0x373\n\t{value: 0x0028, lo: 0x09},\n\t{value: 0x286f, lo: 0x80, hi: 0x80},\n\t{value: 0x2833, lo: 0x81, hi: 0x81},\n\t{value: 0x283d, lo: 0x82, hi: 0x82},\n\t{value: 0x2851, lo: 0x83, hi: 0x84},\n\t{value: 0x285b, lo: 0x85, hi: 0x86},\n\t{value: 0x2847, lo: 0x87, hi: 0x87},\n\t{value: 0x2865, lo: 0x88, hi: 0x88},\n\t{value: 0x0b72, lo: 0x90, hi: 0x90},\n\t{value: 0x08ea, lo: 0x91, hi: 0x91},\n\t// Block 0xa9, offset 0x37d\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb9},\n}\n\n// recompMap: 7528 bytes (entries only)\nvar recompMap map[uint32]rune\nvar recompMapOnce sync.Once\n\nconst recompMapPacked = \"\" +\n\t\"\\x00A\\x03\\x00\\x00\\x00\\x00\\xc0\" + // 0x00410300: 0x000000C0\n\t\"\\x00A\\x03\\x01\\x00\\x00\\x00\\xc1\" + // 0x00410301: 0x000000C1\n\t\"\\x00A\\x03\\x02\\x00\\x00\\x00\\xc2\" + // 0x00410302: 0x000000C2\n\t\"\\x00A\\x03\\x03\\x00\\x00\\x00\\xc3\" + // 0x00410303: 0x000000C3\n\t\"\\x00A\\x03\\b\\x00\\x00\\x00\\xc4\" + // 0x00410308: 0x000000C4\n\t\"\\x00A\\x03\\n\\x00\\x00\\x00\\xc5\" + // 0x0041030A: 0x000000C5\n\t\"\\x00C\\x03'\\x00\\x00\\x00\\xc7\" + // 0x00430327: 0x000000C7\n\t\"\\x00E\\x03\\x00\\x00\\x00\\x00\\xc8\" + // 0x00450300: 0x000000C8\n\t\"\\x00E\\x03\\x01\\x00\\x00\\x00\\xc9\" + // 0x00450301: 0x000000C9\n\t\"\\x00E\\x03\\x02\\x00\\x00\\x00\\xca\" + // 0x00450302: 0x000000CA\n\t\"\\x00E\\x03\\b\\x00\\x00\\x00\\xcb\" + // 0x00450308: 0x000000CB\n\t\"\\x00I\\x03\\x00\\x00\\x00\\x00\\xcc\" + // 0x00490300: 0x000000CC\n\t\"\\x00I\\x03\\x01\\x00\\x00\\x00\\xcd\" + // 0x00490301: 0x000000CD\n\t\"\\x00I\\x03\\x02\\x00\\x00\\x00\\xce\" + // 0x00490302: 0x000000CE\n\t\"\\x00I\\x03\\b\\x00\\x00\\x00\\xcf\" + // 0x00490308: 0x000000CF\n\t\"\\x00N\\x03\\x03\\x00\\x00\\x00\\xd1\" + // 0x004E0303: 0x000000D1\n\t\"\\x00O\\x03\\x00\\x00\\x00\\x00\\xd2\" + // 0x004F0300: 0x000000D2\n\t\"\\x00O\\x03\\x01\\x00\\x00\\x00\\xd3\" + // 0x004F0301: 0x000000D3\n\t\"\\x00O\\x03\\x02\\x00\\x00\\x00\\xd4\" + // 0x004F0302: 0x000000D4\n\t\"\\x00O\\x03\\x03\\x00\\x00\\x00\\xd5\" + // 0x004F0303: 0x000000D5\n\t\"\\x00O\\x03\\b\\x00\\x00\\x00\\xd6\" + // 0x004F0308: 0x000000D6\n\t\"\\x00U\\x03\\x00\\x00\\x00\\x00\\xd9\" + // 0x00550300: 0x000000D9\n\t\"\\x00U\\x03\\x01\\x00\\x00\\x00\\xda\" + // 0x00550301: 0x000000DA\n\t\"\\x00U\\x03\\x02\\x00\\x00\\x00\\xdb\" + // 0x00550302: 0x000000DB\n\t\"\\x00U\\x03\\b\\x00\\x00\\x00\\xdc\" + // 0x00550308: 0x000000DC\n\t\"\\x00Y\\x03\\x01\\x00\\x00\\x00\\xdd\" + // 0x00590301: 0x000000DD\n\t\"\\x00a\\x03\\x00\\x00\\x00\\x00\\xe0\" + // 0x00610300: 0x000000E0\n\t\"\\x00a\\x03\\x01\\x00\\x00\\x00\\xe1\" + // 0x00610301: 0x000000E1\n\t\"\\x00a\\x03\\x02\\x00\\x00\\x00\\xe2\" + // 0x00610302: 0x000000E2\n\t\"\\x00a\\x03\\x03\\x00\\x00\\x00\\xe3\" + // 0x00610303: 0x000000E3\n\t\"\\x00a\\x03\\b\\x00\\x00\\x00\\xe4\" + // 0x00610308: 0x000000E4\n\t\"\\x00a\\x03\\n\\x00\\x00\\x00\\xe5\" + // 0x0061030A: 0x000000E5\n\t\"\\x00c\\x03'\\x00\\x00\\x00\\xe7\" + // 0x00630327: 0x000000E7\n\t\"\\x00e\\x03\\x00\\x00\\x00\\x00\\xe8\" + // 0x00650300: 0x000000E8\n\t\"\\x00e\\x03\\x01\\x00\\x00\\x00\\xe9\" + // 0x00650301: 0x000000E9\n\t\"\\x00e\\x03\\x02\\x00\\x00\\x00\\xea\" + // 0x00650302: 0x000000EA\n\t\"\\x00e\\x03\\b\\x00\\x00\\x00\\xeb\" + // 0x00650308: 0x000000EB\n\t\"\\x00i\\x03\\x00\\x00\\x00\\x00\\xec\" + // 0x00690300: 0x000000EC\n\t\"\\x00i\\x03\\x01\\x00\\x00\\x00\\xed\" + // 0x00690301: 0x000000ED\n\t\"\\x00i\\x03\\x02\\x00\\x00\\x00\\xee\" + // 0x00690302: 0x000000EE\n\t\"\\x00i\\x03\\b\\x00\\x00\\x00\\xef\" + // 0x00690308: 0x000000EF\n\t\"\\x00n\\x03\\x03\\x00\\x00\\x00\\xf1\" + // 0x006E0303: 0x000000F1\n\t\"\\x00o\\x03\\x00\\x00\\x00\\x00\\xf2\" + // 0x006F0300: 0x000000F2\n\t\"\\x00o\\x03\\x01\\x00\\x00\\x00\\xf3\" + // 0x006F0301: 0x000000F3\n\t\"\\x00o\\x03\\x02\\x00\\x00\\x00\\xf4\" + // 0x006F0302: 0x000000F4\n\t\"\\x00o\\x03\\x03\\x00\\x00\\x00\\xf5\" + // 0x006F0303: 0x000000F5\n\t\"\\x00o\\x03\\b\\x00\\x00\\x00\\xf6\" + // 0x006F0308: 0x000000F6\n\t\"\\x00u\\x03\\x00\\x00\\x00\\x00\\xf9\" + // 0x00750300: 0x000000F9\n\t\"\\x00u\\x03\\x01\\x00\\x00\\x00\\xfa\" + // 0x00750301: 0x000000FA\n\t\"\\x00u\\x03\\x02\\x00\\x00\\x00\\xfb\" + // 0x00750302: 0x000000FB\n\t\"\\x00u\\x03\\b\\x00\\x00\\x00\\xfc\" + // 0x00750308: 0x000000FC\n\t\"\\x00y\\x03\\x01\\x00\\x00\\x00\\xfd\" + // 0x00790301: 0x000000FD\n\t\"\\x00y\\x03\\b\\x00\\x00\\x00\\xff\" + // 0x00790308: 0x000000FF\n\t\"\\x00A\\x03\\x04\\x00\\x00\\x01\\x00\" + // 0x00410304: 0x00000100\n\t\"\\x00a\\x03\\x04\\x00\\x00\\x01\\x01\" + // 0x00610304: 0x00000101\n\t\"\\x00A\\x03\\x06\\x00\\x00\\x01\\x02\" + // 0x00410306: 0x00000102\n\t\"\\x00a\\x03\\x06\\x00\\x00\\x01\\x03\" + // 0x00610306: 0x00000103\n\t\"\\x00A\\x03(\\x00\\x00\\x01\\x04\" + // 0x00410328: 0x00000104\n\t\"\\x00a\\x03(\\x00\\x00\\x01\\x05\" + // 0x00610328: 0x00000105\n\t\"\\x00C\\x03\\x01\\x00\\x00\\x01\\x06\" + // 0x00430301: 0x00000106\n\t\"\\x00c\\x03\\x01\\x00\\x00\\x01\\a\" + // 0x00630301: 0x00000107\n\t\"\\x00C\\x03\\x02\\x00\\x00\\x01\\b\" + // 0x00430302: 0x00000108\n\t\"\\x00c\\x03\\x02\\x00\\x00\\x01\\t\" + // 0x00630302: 0x00000109\n\t\"\\x00C\\x03\\a\\x00\\x00\\x01\\n\" + // 0x00430307: 0x0000010A\n\t\"\\x00c\\x03\\a\\x00\\x00\\x01\\v\" + // 0x00630307: 0x0000010B\n\t\"\\x00C\\x03\\f\\x00\\x00\\x01\\f\" + // 0x0043030C: 0x0000010C\n\t\"\\x00c\\x03\\f\\x00\\x00\\x01\\r\" + // 0x0063030C: 0x0000010D\n\t\"\\x00D\\x03\\f\\x00\\x00\\x01\\x0e\" + // 0x0044030C: 0x0000010E\n\t\"\\x00d\\x03\\f\\x00\\x00\\x01\\x0f\" + // 0x0064030C: 0x0000010F\n\t\"\\x00E\\x03\\x04\\x00\\x00\\x01\\x12\" + // 0x00450304: 0x00000112\n\t\"\\x00e\\x03\\x04\\x00\\x00\\x01\\x13\" + // 0x00650304: 0x00000113\n\t\"\\x00E\\x03\\x06\\x00\\x00\\x01\\x14\" + // 0x00450306: 0x00000114\n\t\"\\x00e\\x03\\x06\\x00\\x00\\x01\\x15\" + // 0x00650306: 0x00000115\n\t\"\\x00E\\x03\\a\\x00\\x00\\x01\\x16\" + // 0x00450307: 0x00000116\n\t\"\\x00e\\x03\\a\\x00\\x00\\x01\\x17\" + // 0x00650307: 0x00000117\n\t\"\\x00E\\x03(\\x00\\x00\\x01\\x18\" + // 0x00450328: 0x00000118\n\t\"\\x00e\\x03(\\x00\\x00\\x01\\x19\" + // 0x00650328: 0x00000119\n\t\"\\x00E\\x03\\f\\x00\\x00\\x01\\x1a\" + // 0x0045030C: 0x0000011A\n\t\"\\x00e\\x03\\f\\x00\\x00\\x01\\x1b\" + // 0x0065030C: 0x0000011B\n\t\"\\x00G\\x03\\x02\\x00\\x00\\x01\\x1c\" + // 0x00470302: 0x0000011C\n\t\"\\x00g\\x03\\x02\\x00\\x00\\x01\\x1d\" + // 0x00670302: 0x0000011D\n\t\"\\x00G\\x03\\x06\\x00\\x00\\x01\\x1e\" + // 0x00470306: 0x0000011E\n\t\"\\x00g\\x03\\x06\\x00\\x00\\x01\\x1f\" + // 0x00670306: 0x0000011F\n\t\"\\x00G\\x03\\a\\x00\\x00\\x01 \" + // 0x00470307: 0x00000120\n\t\"\\x00g\\x03\\a\\x00\\x00\\x01!\" + // 0x00670307: 0x00000121\n\t\"\\x00G\\x03'\\x00\\x00\\x01\\\"\" + // 0x00470327: 0x00000122\n\t\"\\x00g\\x03'\\x00\\x00\\x01#\" + // 0x00670327: 0x00000123\n\t\"\\x00H\\x03\\x02\\x00\\x00\\x01$\" + // 0x00480302: 0x00000124\n\t\"\\x00h\\x03\\x02\\x00\\x00\\x01%\" + // 0x00680302: 0x00000125\n\t\"\\x00I\\x03\\x03\\x00\\x00\\x01(\" + // 0x00490303: 0x00000128\n\t\"\\x00i\\x03\\x03\\x00\\x00\\x01)\" + // 0x00690303: 0x00000129\n\t\"\\x00I\\x03\\x04\\x00\\x00\\x01*\" + // 0x00490304: 0x0000012A\n\t\"\\x00i\\x03\\x04\\x00\\x00\\x01+\" + // 0x00690304: 0x0000012B\n\t\"\\x00I\\x03\\x06\\x00\\x00\\x01,\" + // 0x00490306: 0x0000012C\n\t\"\\x00i\\x03\\x06\\x00\\x00\\x01-\" + // 0x00690306: 0x0000012D\n\t\"\\x00I\\x03(\\x00\\x00\\x01.\" + // 0x00490328: 0x0000012E\n\t\"\\x00i\\x03(\\x00\\x00\\x01/\" + // 0x00690328: 0x0000012F\n\t\"\\x00I\\x03\\a\\x00\\x00\\x010\" + // 0x00490307: 0x00000130\n\t\"\\x00J\\x03\\x02\\x00\\x00\\x014\" + // 0x004A0302: 0x00000134\n\t\"\\x00j\\x03\\x02\\x00\\x00\\x015\" + // 0x006A0302: 0x00000135\n\t\"\\x00K\\x03'\\x00\\x00\\x016\" + // 0x004B0327: 0x00000136\n\t\"\\x00k\\x03'\\x00\\x00\\x017\" + // 0x006B0327: 0x00000137\n\t\"\\x00L\\x03\\x01\\x00\\x00\\x019\" + // 0x004C0301: 0x00000139\n\t\"\\x00l\\x03\\x01\\x00\\x00\\x01:\" + // 0x006C0301: 0x0000013A\n\t\"\\x00L\\x03'\\x00\\x00\\x01;\" + // 0x004C0327: 0x0000013B\n\t\"\\x00l\\x03'\\x00\\x00\\x01<\" + // 0x006C0327: 0x0000013C\n\t\"\\x00L\\x03\\f\\x00\\x00\\x01=\" + // 0x004C030C: 0x0000013D\n\t\"\\x00l\\x03\\f\\x00\\x00\\x01>\" + // 0x006C030C: 0x0000013E\n\t\"\\x00N\\x03\\x01\\x00\\x00\\x01C\" + // 0x004E0301: 0x00000143\n\t\"\\x00n\\x03\\x01\\x00\\x00\\x01D\" + // 0x006E0301: 0x00000144\n\t\"\\x00N\\x03'\\x00\\x00\\x01E\" + // 0x004E0327: 0x00000145\n\t\"\\x00n\\x03'\\x00\\x00\\x01F\" + // 0x006E0327: 0x00000146\n\t\"\\x00N\\x03\\f\\x00\\x00\\x01G\" + // 0x004E030C: 0x00000147\n\t\"\\x00n\\x03\\f\\x00\\x00\\x01H\" + // 0x006E030C: 0x00000148\n\t\"\\x00O\\x03\\x04\\x00\\x00\\x01L\" + // 0x004F0304: 0x0000014C\n\t\"\\x00o\\x03\\x04\\x00\\x00\\x01M\" + // 0x006F0304: 0x0000014D\n\t\"\\x00O\\x03\\x06\\x00\\x00\\x01N\" + // 0x004F0306: 0x0000014E\n\t\"\\x00o\\x03\\x06\\x00\\x00\\x01O\" + // 0x006F0306: 0x0000014F\n\t\"\\x00O\\x03\\v\\x00\\x00\\x01P\" + // 0x004F030B: 0x00000150\n\t\"\\x00o\\x03\\v\\x00\\x00\\x01Q\" + // 0x006F030B: 0x00000151\n\t\"\\x00R\\x03\\x01\\x00\\x00\\x01T\" + // 0x00520301: 0x00000154\n\t\"\\x00r\\x03\\x01\\x00\\x00\\x01U\" + // 0x00720301: 0x00000155\n\t\"\\x00R\\x03'\\x00\\x00\\x01V\" + // 0x00520327: 0x00000156\n\t\"\\x00r\\x03'\\x00\\x00\\x01W\" + // 0x00720327: 0x00000157\n\t\"\\x00R\\x03\\f\\x00\\x00\\x01X\" + // 0x0052030C: 0x00000158\n\t\"\\x00r\\x03\\f\\x00\\x00\\x01Y\" + // 0x0072030C: 0x00000159\n\t\"\\x00S\\x03\\x01\\x00\\x00\\x01Z\" + // 0x00530301: 0x0000015A\n\t\"\\x00s\\x03\\x01\\x00\\x00\\x01[\" + // 0x00730301: 0x0000015B\n\t\"\\x00S\\x03\\x02\\x00\\x00\\x01\\\\\" + // 0x00530302: 0x0000015C\n\t\"\\x00s\\x03\\x02\\x00\\x00\\x01]\" + // 0x00730302: 0x0000015D\n\t\"\\x00S\\x03'\\x00\\x00\\x01^\" + // 0x00530327: 0x0000015E\n\t\"\\x00s\\x03'\\x00\\x00\\x01_\" + // 0x00730327: 0x0000015F\n\t\"\\x00S\\x03\\f\\x00\\x00\\x01`\" + // 0x0053030C: 0x00000160\n\t\"\\x00s\\x03\\f\\x00\\x00\\x01a\" + // 0x0073030C: 0x00000161\n\t\"\\x00T\\x03'\\x00\\x00\\x01b\" + // 0x00540327: 0x00000162\n\t\"\\x00t\\x03'\\x00\\x00\\x01c\" + // 0x00740327: 0x00000163\n\t\"\\x00T\\x03\\f\\x00\\x00\\x01d\" + // 0x0054030C: 0x00000164\n\t\"\\x00t\\x03\\f\\x00\\x00\\x01e\" + // 0x0074030C: 0x00000165\n\t\"\\x00U\\x03\\x03\\x00\\x00\\x01h\" + // 0x00550303: 0x00000168\n\t\"\\x00u\\x03\\x03\\x00\\x00\\x01i\" + // 0x00750303: 0x00000169\n\t\"\\x00U\\x03\\x04\\x00\\x00\\x01j\" + // 0x00550304: 0x0000016A\n\t\"\\x00u\\x03\\x04\\x00\\x00\\x01k\" + // 0x00750304: 0x0000016B\n\t\"\\x00U\\x03\\x06\\x00\\x00\\x01l\" + // 0x00550306: 0x0000016C\n\t\"\\x00u\\x03\\x06\\x00\\x00\\x01m\" + // 0x00750306: 0x0000016D\n\t\"\\x00U\\x03\\n\\x00\\x00\\x01n\" + // 0x0055030A: 0x0000016E\n\t\"\\x00u\\x03\\n\\x00\\x00\\x01o\" + // 0x0075030A: 0x0000016F\n\t\"\\x00U\\x03\\v\\x00\\x00\\x01p\" + // 0x0055030B: 0x00000170\n\t\"\\x00u\\x03\\v\\x00\\x00\\x01q\" + // 0x0075030B: 0x00000171\n\t\"\\x00U\\x03(\\x00\\x00\\x01r\" + // 0x00550328: 0x00000172\n\t\"\\x00u\\x03(\\x00\\x00\\x01s\" + // 0x00750328: 0x00000173\n\t\"\\x00W\\x03\\x02\\x00\\x00\\x01t\" + // 0x00570302: 0x00000174\n\t\"\\x00w\\x03\\x02\\x00\\x00\\x01u\" + // 0x00770302: 0x00000175\n\t\"\\x00Y\\x03\\x02\\x00\\x00\\x01v\" + // 0x00590302: 0x00000176\n\t\"\\x00y\\x03\\x02\\x00\\x00\\x01w\" + // 0x00790302: 0x00000177\n\t\"\\x00Y\\x03\\b\\x00\\x00\\x01x\" + // 0x00590308: 0x00000178\n\t\"\\x00Z\\x03\\x01\\x00\\x00\\x01y\" + // 0x005A0301: 0x00000179\n\t\"\\x00z\\x03\\x01\\x00\\x00\\x01z\" + // 0x007A0301: 0x0000017A\n\t\"\\x00Z\\x03\\a\\x00\\x00\\x01{\" + // 0x005A0307: 0x0000017B\n\t\"\\x00z\\x03\\a\\x00\\x00\\x01|\" + // 0x007A0307: 0x0000017C\n\t\"\\x00Z\\x03\\f\\x00\\x00\\x01}\" + // 0x005A030C: 0x0000017D\n\t\"\\x00z\\x03\\f\\x00\\x00\\x01~\" + // 0x007A030C: 0x0000017E\n\t\"\\x00O\\x03\\x1b\\x00\\x00\\x01\\xa0\" + // 0x004F031B: 0x000001A0\n\t\"\\x00o\\x03\\x1b\\x00\\x00\\x01\\xa1\" + // 0x006F031B: 0x000001A1\n\t\"\\x00U\\x03\\x1b\\x00\\x00\\x01\\xaf\" + // 0x0055031B: 0x000001AF\n\t\"\\x00u\\x03\\x1b\\x00\\x00\\x01\\xb0\" + // 0x0075031B: 0x000001B0\n\t\"\\x00A\\x03\\f\\x00\\x00\\x01\\xcd\" + // 0x0041030C: 0x000001CD\n\t\"\\x00a\\x03\\f\\x00\\x00\\x01\\xce\" + // 0x0061030C: 0x000001CE\n\t\"\\x00I\\x03\\f\\x00\\x00\\x01\\xcf\" + // 0x0049030C: 0x000001CF\n\t\"\\x00i\\x03\\f\\x00\\x00\\x01\\xd0\" + // 0x0069030C: 0x000001D0\n\t\"\\x00O\\x03\\f\\x00\\x00\\x01\\xd1\" + // 0x004F030C: 0x000001D1\n\t\"\\x00o\\x03\\f\\x00\\x00\\x01\\xd2\" + // 0x006F030C: 0x000001D2\n\t\"\\x00U\\x03\\f\\x00\\x00\\x01\\xd3\" + // 0x0055030C: 0x000001D3\n\t\"\\x00u\\x03\\f\\x00\\x00\\x01\\xd4\" + // 0x0075030C: 0x000001D4\n\t\"\\x00\\xdc\\x03\\x04\\x00\\x00\\x01\\xd5\" + // 0x00DC0304: 0x000001D5\n\t\"\\x00\\xfc\\x03\\x04\\x00\\x00\\x01\\xd6\" + // 0x00FC0304: 0x000001D6\n\t\"\\x00\\xdc\\x03\\x01\\x00\\x00\\x01\\xd7\" + // 0x00DC0301: 0x000001D7\n\t\"\\x00\\xfc\\x03\\x01\\x00\\x00\\x01\\xd8\" + // 0x00FC0301: 0x000001D8\n\t\"\\x00\\xdc\\x03\\f\\x00\\x00\\x01\\xd9\" + // 0x00DC030C: 0x000001D9\n\t\"\\x00\\xfc\\x03\\f\\x00\\x00\\x01\\xda\" + // 0x00FC030C: 0x000001DA\n\t\"\\x00\\xdc\\x03\\x00\\x00\\x00\\x01\\xdb\" + // 0x00DC0300: 0x000001DB\n\t\"\\x00\\xfc\\x03\\x00\\x00\\x00\\x01\\xdc\" + // 0x00FC0300: 0x000001DC\n\t\"\\x00\\xc4\\x03\\x04\\x00\\x00\\x01\\xde\" + // 0x00C40304: 0x000001DE\n\t\"\\x00\\xe4\\x03\\x04\\x00\\x00\\x01\\xdf\" + // 0x00E40304: 0x000001DF\n\t\"\\x02&\\x03\\x04\\x00\\x00\\x01\\xe0\" + // 0x02260304: 0x000001E0\n\t\"\\x02'\\x03\\x04\\x00\\x00\\x01\\xe1\" + // 0x02270304: 0x000001E1\n\t\"\\x00\\xc6\\x03\\x04\\x00\\x00\\x01\\xe2\" + // 0x00C60304: 0x000001E2\n\t\"\\x00\\xe6\\x03\\x04\\x00\\x00\\x01\\xe3\" + // 0x00E60304: 0x000001E3\n\t\"\\x00G\\x03\\f\\x00\\x00\\x01\\xe6\" + // 0x0047030C: 0x000001E6\n\t\"\\x00g\\x03\\f\\x00\\x00\\x01\\xe7\" + // 0x0067030C: 0x000001E7\n\t\"\\x00K\\x03\\f\\x00\\x00\\x01\\xe8\" + // 0x004B030C: 0x000001E8\n\t\"\\x00k\\x03\\f\\x00\\x00\\x01\\xe9\" + // 0x006B030C: 0x000001E9\n\t\"\\x00O\\x03(\\x00\\x00\\x01\\xea\" + // 0x004F0328: 0x000001EA\n\t\"\\x00o\\x03(\\x00\\x00\\x01\\xeb\" + // 0x006F0328: 0x000001EB\n\t\"\\x01\\xea\\x03\\x04\\x00\\x00\\x01\\xec\" + // 0x01EA0304: 0x000001EC\n\t\"\\x01\\xeb\\x03\\x04\\x00\\x00\\x01\\xed\" + // 0x01EB0304: 0x000001ED\n\t\"\\x01\\xb7\\x03\\f\\x00\\x00\\x01\\xee\" + // 0x01B7030C: 0x000001EE\n\t\"\\x02\\x92\\x03\\f\\x00\\x00\\x01\\xef\" + // 0x0292030C: 0x000001EF\n\t\"\\x00j\\x03\\f\\x00\\x00\\x01\\xf0\" + // 0x006A030C: 0x000001F0\n\t\"\\x00G\\x03\\x01\\x00\\x00\\x01\\xf4\" + // 0x00470301: 0x000001F4\n\t\"\\x00g\\x03\\x01\\x00\\x00\\x01\\xf5\" + // 0x00670301: 0x000001F5\n\t\"\\x00N\\x03\\x00\\x00\\x00\\x01\\xf8\" + // 0x004E0300: 0x000001F8\n\t\"\\x00n\\x03\\x00\\x00\\x00\\x01\\xf9\" + // 0x006E0300: 0x000001F9\n\t\"\\x00\\xc5\\x03\\x01\\x00\\x00\\x01\\xfa\" + // 0x00C50301: 0x000001FA\n\t\"\\x00\\xe5\\x03\\x01\\x00\\x00\\x01\\xfb\" + // 0x00E50301: 0x000001FB\n\t\"\\x00\\xc6\\x03\\x01\\x00\\x00\\x01\\xfc\" + // 0x00C60301: 0x000001FC\n\t\"\\x00\\xe6\\x03\\x01\\x00\\x00\\x01\\xfd\" + // 0x00E60301: 0x000001FD\n\t\"\\x00\\xd8\\x03\\x01\\x00\\x00\\x01\\xfe\" + // 0x00D80301: 0x000001FE\n\t\"\\x00\\xf8\\x03\\x01\\x00\\x00\\x01\\xff\" + // 0x00F80301: 0x000001FF\n\t\"\\x00A\\x03\\x0f\\x00\\x00\\x02\\x00\" + // 0x0041030F: 0x00000200\n\t\"\\x00a\\x03\\x0f\\x00\\x00\\x02\\x01\" + // 0x0061030F: 0x00000201\n\t\"\\x00A\\x03\\x11\\x00\\x00\\x02\\x02\" + // 0x00410311: 0x00000202\n\t\"\\x00a\\x03\\x11\\x00\\x00\\x02\\x03\" + // 0x00610311: 0x00000203\n\t\"\\x00E\\x03\\x0f\\x00\\x00\\x02\\x04\" + // 0x0045030F: 0x00000204\n\t\"\\x00e\\x03\\x0f\\x00\\x00\\x02\\x05\" + // 0x0065030F: 0x00000205\n\t\"\\x00E\\x03\\x11\\x00\\x00\\x02\\x06\" + // 0x00450311: 0x00000206\n\t\"\\x00e\\x03\\x11\\x00\\x00\\x02\\a\" + // 0x00650311: 0x00000207\n\t\"\\x00I\\x03\\x0f\\x00\\x00\\x02\\b\" + // 0x0049030F: 0x00000208\n\t\"\\x00i\\x03\\x0f\\x00\\x00\\x02\\t\" + // 0x0069030F: 0x00000209\n\t\"\\x00I\\x03\\x11\\x00\\x00\\x02\\n\" + // 0x00490311: 0x0000020A\n\t\"\\x00i\\x03\\x11\\x00\\x00\\x02\\v\" + // 0x00690311: 0x0000020B\n\t\"\\x00O\\x03\\x0f\\x00\\x00\\x02\\f\" + // 0x004F030F: 0x0000020C\n\t\"\\x00o\\x03\\x0f\\x00\\x00\\x02\\r\" + // 0x006F030F: 0x0000020D\n\t\"\\x00O\\x03\\x11\\x00\\x00\\x02\\x0e\" + // 0x004F0311: 0x0000020E\n\t\"\\x00o\\x03\\x11\\x00\\x00\\x02\\x0f\" + // 0x006F0311: 0x0000020F\n\t\"\\x00R\\x03\\x0f\\x00\\x00\\x02\\x10\" + // 0x0052030F: 0x00000210\n\t\"\\x00r\\x03\\x0f\\x00\\x00\\x02\\x11\" + // 0x0072030F: 0x00000211\n\t\"\\x00R\\x03\\x11\\x00\\x00\\x02\\x12\" + // 0x00520311: 0x00000212\n\t\"\\x00r\\x03\\x11\\x00\\x00\\x02\\x13\" + // 0x00720311: 0x00000213\n\t\"\\x00U\\x03\\x0f\\x00\\x00\\x02\\x14\" + // 0x0055030F: 0x00000214\n\t\"\\x00u\\x03\\x0f\\x00\\x00\\x02\\x15\" + // 0x0075030F: 0x00000215\n\t\"\\x00U\\x03\\x11\\x00\\x00\\x02\\x16\" + // 0x00550311: 0x00000216\n\t\"\\x00u\\x03\\x11\\x00\\x00\\x02\\x17\" + // 0x00750311: 0x00000217\n\t\"\\x00S\\x03&\\x00\\x00\\x02\\x18\" + // 0x00530326: 0x00000218\n\t\"\\x00s\\x03&\\x00\\x00\\x02\\x19\" + // 0x00730326: 0x00000219\n\t\"\\x00T\\x03&\\x00\\x00\\x02\\x1a\" + // 0x00540326: 0x0000021A\n\t\"\\x00t\\x03&\\x00\\x00\\x02\\x1b\" + // 0x00740326: 0x0000021B\n\t\"\\x00H\\x03\\f\\x00\\x00\\x02\\x1e\" + // 0x0048030C: 0x0000021E\n\t\"\\x00h\\x03\\f\\x00\\x00\\x02\\x1f\" + // 0x0068030C: 0x0000021F\n\t\"\\x00A\\x03\\a\\x00\\x00\\x02&\" + // 0x00410307: 0x00000226\n\t\"\\x00a\\x03\\a\\x00\\x00\\x02'\" + // 0x00610307: 0x00000227\n\t\"\\x00E\\x03'\\x00\\x00\\x02(\" + // 0x00450327: 0x00000228\n\t\"\\x00e\\x03'\\x00\\x00\\x02)\" + // 0x00650327: 0x00000229\n\t\"\\x00\\xd6\\x03\\x04\\x00\\x00\\x02*\" + // 0x00D60304: 0x0000022A\n\t\"\\x00\\xf6\\x03\\x04\\x00\\x00\\x02+\" + // 0x00F60304: 0x0000022B\n\t\"\\x00\\xd5\\x03\\x04\\x00\\x00\\x02,\" + // 0x00D50304: 0x0000022C\n\t\"\\x00\\xf5\\x03\\x04\\x00\\x00\\x02-\" + // 0x00F50304: 0x0000022D\n\t\"\\x00O\\x03\\a\\x00\\x00\\x02.\" + // 0x004F0307: 0x0000022E\n\t\"\\x00o\\x03\\a\\x00\\x00\\x02/\" + // 0x006F0307: 0x0000022F\n\t\"\\x02.\\x03\\x04\\x00\\x00\\x020\" + // 0x022E0304: 0x00000230\n\t\"\\x02/\\x03\\x04\\x00\\x00\\x021\" + // 0x022F0304: 0x00000231\n\t\"\\x00Y\\x03\\x04\\x00\\x00\\x022\" + // 0x00590304: 0x00000232\n\t\"\\x00y\\x03\\x04\\x00\\x00\\x023\" + // 0x00790304: 0x00000233\n\t\"\\x00\\xa8\\x03\\x01\\x00\\x00\\x03\\x85\" + // 0x00A80301: 0x00000385\n\t\"\\x03\\x91\\x03\\x01\\x00\\x00\\x03\\x86\" + // 0x03910301: 0x00000386\n\t\"\\x03\\x95\\x03\\x01\\x00\\x00\\x03\\x88\" + // 0x03950301: 0x00000388\n\t\"\\x03\\x97\\x03\\x01\\x00\\x00\\x03\\x89\" + // 0x03970301: 0x00000389\n\t\"\\x03\\x99\\x03\\x01\\x00\\x00\\x03\\x8a\" + // 0x03990301: 0x0000038A\n\t\"\\x03\\x9f\\x03\\x01\\x00\\x00\\x03\\x8c\" + // 0x039F0301: 0x0000038C\n\t\"\\x03\\xa5\\x03\\x01\\x00\\x00\\x03\\x8e\" + // 0x03A50301: 0x0000038E\n\t\"\\x03\\xa9\\x03\\x01\\x00\\x00\\x03\\x8f\" + // 0x03A90301: 0x0000038F\n\t\"\\x03\\xca\\x03\\x01\\x00\\x00\\x03\\x90\" + // 0x03CA0301: 0x00000390\n\t\"\\x03\\x99\\x03\\b\\x00\\x00\\x03\\xaa\" + // 0x03990308: 0x000003AA\n\t\"\\x03\\xa5\\x03\\b\\x00\\x00\\x03\\xab\" + // 0x03A50308: 0x000003AB\n\t\"\\x03\\xb1\\x03\\x01\\x00\\x00\\x03\\xac\" + // 0x03B10301: 0x000003AC\n\t\"\\x03\\xb5\\x03\\x01\\x00\\x00\\x03\\xad\" + // 0x03B50301: 0x000003AD\n\t\"\\x03\\xb7\\x03\\x01\\x00\\x00\\x03\\xae\" + // 0x03B70301: 0x000003AE\n\t\"\\x03\\xb9\\x03\\x01\\x00\\x00\\x03\\xaf\" + // 0x03B90301: 0x000003AF\n\t\"\\x03\\xcb\\x03\\x01\\x00\\x00\\x03\\xb0\" + // 0x03CB0301: 0x000003B0\n\t\"\\x03\\xb9\\x03\\b\\x00\\x00\\x03\\xca\" + // 0x03B90308: 0x000003CA\n\t\"\\x03\\xc5\\x03\\b\\x00\\x00\\x03\\xcb\" + // 0x03C50308: 0x000003CB\n\t\"\\x03\\xbf\\x03\\x01\\x00\\x00\\x03\\xcc\" + // 0x03BF0301: 0x000003CC\n\t\"\\x03\\xc5\\x03\\x01\\x00\\x00\\x03\\xcd\" + // 0x03C50301: 0x000003CD\n\t\"\\x03\\xc9\\x03\\x01\\x00\\x00\\x03\\xce\" + // 0x03C90301: 0x000003CE\n\t\"\\x03\\xd2\\x03\\x01\\x00\\x00\\x03\\xd3\" + // 0x03D20301: 0x000003D3\n\t\"\\x03\\xd2\\x03\\b\\x00\\x00\\x03\\xd4\" + // 0x03D20308: 0x000003D4\n\t\"\\x04\\x15\\x03\\x00\\x00\\x00\\x04\\x00\" + // 0x04150300: 0x00000400\n\t\"\\x04\\x15\\x03\\b\\x00\\x00\\x04\\x01\" + // 0x04150308: 0x00000401\n\t\"\\x04\\x13\\x03\\x01\\x00\\x00\\x04\\x03\" + // 0x04130301: 0x00000403\n\t\"\\x04\\x06\\x03\\b\\x00\\x00\\x04\\a\" + // 0x04060308: 0x00000407\n\t\"\\x04\\x1a\\x03\\x01\\x00\\x00\\x04\\f\" + // 0x041A0301: 0x0000040C\n\t\"\\x04\\x18\\x03\\x00\\x00\\x00\\x04\\r\" + // 0x04180300: 0x0000040D\n\t\"\\x04#\\x03\\x06\\x00\\x00\\x04\\x0e\" + // 0x04230306: 0x0000040E\n\t\"\\x04\\x18\\x03\\x06\\x00\\x00\\x04\\x19\" + // 0x04180306: 0x00000419\n\t\"\\x048\\x03\\x06\\x00\\x00\\x049\" + // 0x04380306: 0x00000439\n\t\"\\x045\\x03\\x00\\x00\\x00\\x04P\" + // 0x04350300: 0x00000450\n\t\"\\x045\\x03\\b\\x00\\x00\\x04Q\" + // 0x04350308: 0x00000451\n\t\"\\x043\\x03\\x01\\x00\\x00\\x04S\" + // 0x04330301: 0x00000453\n\t\"\\x04V\\x03\\b\\x00\\x00\\x04W\" + // 0x04560308: 0x00000457\n\t\"\\x04:\\x03\\x01\\x00\\x00\\x04\\\\\" + // 0x043A0301: 0x0000045C\n\t\"\\x048\\x03\\x00\\x00\\x00\\x04]\" + // 0x04380300: 0x0000045D\n\t\"\\x04C\\x03\\x06\\x00\\x00\\x04^\" + // 0x04430306: 0x0000045E\n\t\"\\x04t\\x03\\x0f\\x00\\x00\\x04v\" + // 0x0474030F: 0x00000476\n\t\"\\x04u\\x03\\x0f\\x00\\x00\\x04w\" + // 0x0475030F: 0x00000477\n\t\"\\x04\\x16\\x03\\x06\\x00\\x00\\x04\\xc1\" + // 0x04160306: 0x000004C1\n\t\"\\x046\\x03\\x06\\x00\\x00\\x04\\xc2\" + // 0x04360306: 0x000004C2\n\t\"\\x04\\x10\\x03\\x06\\x00\\x00\\x04\\xd0\" + // 0x04100306: 0x000004D0\n\t\"\\x040\\x03\\x06\\x00\\x00\\x04\\xd1\" + // 0x04300306: 0x000004D1\n\t\"\\x04\\x10\\x03\\b\\x00\\x00\\x04\\xd2\" + // 0x04100308: 0x000004D2\n\t\"\\x040\\x03\\b\\x00\\x00\\x04\\xd3\" + // 0x04300308: 0x000004D3\n\t\"\\x04\\x15\\x03\\x06\\x00\\x00\\x04\\xd6\" + // 0x04150306: 0x000004D6\n\t\"\\x045\\x03\\x06\\x00\\x00\\x04\\xd7\" + // 0x04350306: 0x000004D7\n\t\"\\x04\\xd8\\x03\\b\\x00\\x00\\x04\\xda\" + // 0x04D80308: 0x000004DA\n\t\"\\x04\\xd9\\x03\\b\\x00\\x00\\x04\\xdb\" + // 0x04D90308: 0x000004DB\n\t\"\\x04\\x16\\x03\\b\\x00\\x00\\x04\\xdc\" + // 0x04160308: 0x000004DC\n\t\"\\x046\\x03\\b\\x00\\x00\\x04\\xdd\" + // 0x04360308: 0x000004DD\n\t\"\\x04\\x17\\x03\\b\\x00\\x00\\x04\\xde\" + // 0x04170308: 0x000004DE\n\t\"\\x047\\x03\\b\\x00\\x00\\x04\\xdf\" + // 0x04370308: 0x000004DF\n\t\"\\x04\\x18\\x03\\x04\\x00\\x00\\x04\\xe2\" + // 0x04180304: 0x000004E2\n\t\"\\x048\\x03\\x04\\x00\\x00\\x04\\xe3\" + // 0x04380304: 0x000004E3\n\t\"\\x04\\x18\\x03\\b\\x00\\x00\\x04\\xe4\" + // 0x04180308: 0x000004E4\n\t\"\\x048\\x03\\b\\x00\\x00\\x04\\xe5\" + // 0x04380308: 0x000004E5\n\t\"\\x04\\x1e\\x03\\b\\x00\\x00\\x04\\xe6\" + // 0x041E0308: 0x000004E6\n\t\"\\x04>\\x03\\b\\x00\\x00\\x04\\xe7\" + // 0x043E0308: 0x000004E7\n\t\"\\x04\\xe8\\x03\\b\\x00\\x00\\x04\\xea\" + // 0x04E80308: 0x000004EA\n\t\"\\x04\\xe9\\x03\\b\\x00\\x00\\x04\\xeb\" + // 0x04E90308: 0x000004EB\n\t\"\\x04-\\x03\\b\\x00\\x00\\x04\\xec\" + // 0x042D0308: 0x000004EC\n\t\"\\x04M\\x03\\b\\x00\\x00\\x04\\xed\" + // 0x044D0308: 0x000004ED\n\t\"\\x04#\\x03\\x04\\x00\\x00\\x04\\xee\" + // 0x04230304: 0x000004EE\n\t\"\\x04C\\x03\\x04\\x00\\x00\\x04\\xef\" + // 0x04430304: 0x000004EF\n\t\"\\x04#\\x03\\b\\x00\\x00\\x04\\xf0\" + // 0x04230308: 0x000004F0\n\t\"\\x04C\\x03\\b\\x00\\x00\\x04\\xf1\" + // 0x04430308: 0x000004F1\n\t\"\\x04#\\x03\\v\\x00\\x00\\x04\\xf2\" + // 0x0423030B: 0x000004F2\n\t\"\\x04C\\x03\\v\\x00\\x00\\x04\\xf3\" + // 0x0443030B: 0x000004F3\n\t\"\\x04'\\x03\\b\\x00\\x00\\x04\\xf4\" + // 0x04270308: 0x000004F4\n\t\"\\x04G\\x03\\b\\x00\\x00\\x04\\xf5\" + // 0x04470308: 0x000004F5\n\t\"\\x04+\\x03\\b\\x00\\x00\\x04\\xf8\" + // 0x042B0308: 0x000004F8\n\t\"\\x04K\\x03\\b\\x00\\x00\\x04\\xf9\" + // 0x044B0308: 0x000004F9\n\t\"\\x06'\\x06S\\x00\\x00\\x06\\\"\" + // 0x06270653: 0x00000622\n\t\"\\x06'\\x06T\\x00\\x00\\x06#\" + // 0x06270654: 0x00000623\n\t\"\\x06H\\x06T\\x00\\x00\\x06$\" + // 0x06480654: 0x00000624\n\t\"\\x06'\\x06U\\x00\\x00\\x06%\" + // 0x06270655: 0x00000625\n\t\"\\x06J\\x06T\\x00\\x00\\x06&\" + // 0x064A0654: 0x00000626\n\t\"\\x06\\xd5\\x06T\\x00\\x00\\x06\\xc0\" + // 0x06D50654: 0x000006C0\n\t\"\\x06\\xc1\\x06T\\x00\\x00\\x06\\xc2\" + // 0x06C10654: 0x000006C2\n\t\"\\x06\\xd2\\x06T\\x00\\x00\\x06\\xd3\" + // 0x06D20654: 0x000006D3\n\t\"\\t(\\t<\\x00\\x00\\t)\" + // 0x0928093C: 0x00000929\n\t\"\\t0\\t<\\x00\\x00\\t1\" + // 0x0930093C: 0x00000931\n\t\"\\t3\\t<\\x00\\x00\\t4\" + // 0x0933093C: 0x00000934\n\t\"\\t\\xc7\\t\\xbe\\x00\\x00\\t\\xcb\" + // 0x09C709BE: 0x000009CB\n\t\"\\t\\xc7\\t\\xd7\\x00\\x00\\t\\xcc\" + // 0x09C709D7: 0x000009CC\n\t\"\\vG\\vV\\x00\\x00\\vH\" + // 0x0B470B56: 0x00000B48\n\t\"\\vG\\v>\\x00\\x00\\vK\" + // 0x0B470B3E: 0x00000B4B\n\t\"\\vG\\vW\\x00\\x00\\vL\" + // 0x0B470B57: 0x00000B4C\n\t\"\\v\\x92\\v\\xd7\\x00\\x00\\v\\x94\" + // 0x0B920BD7: 0x00000B94\n\t\"\\v\\xc6\\v\\xbe\\x00\\x00\\v\\xca\" + // 0x0BC60BBE: 0x00000BCA\n\t\"\\v\\xc7\\v\\xbe\\x00\\x00\\v\\xcb\" + // 0x0BC70BBE: 0x00000BCB\n\t\"\\v\\xc6\\v\\xd7\\x00\\x00\\v\\xcc\" + // 0x0BC60BD7: 0x00000BCC\n\t\"\\fF\\fV\\x00\\x00\\fH\" + // 0x0C460C56: 0x00000C48\n\t\"\\f\\xbf\\f\\xd5\\x00\\x00\\f\\xc0\" + // 0x0CBF0CD5: 0x00000CC0\n\t\"\\f\\xc6\\f\\xd5\\x00\\x00\\f\\xc7\" + // 0x0CC60CD5: 0x00000CC7\n\t\"\\f\\xc6\\f\\xd6\\x00\\x00\\f\\xc8\" + // 0x0CC60CD6: 0x00000CC8\n\t\"\\f\\xc6\\f\\xc2\\x00\\x00\\f\\xca\" + // 0x0CC60CC2: 0x00000CCA\n\t\"\\f\\xca\\f\\xd5\\x00\\x00\\f\\xcb\" + // 0x0CCA0CD5: 0x00000CCB\n\t\"\\rF\\r>\\x00\\x00\\rJ\" + // 0x0D460D3E: 0x00000D4A\n\t\"\\rG\\r>\\x00\\x00\\rK\" + // 0x0D470D3E: 0x00000D4B\n\t\"\\rF\\rW\\x00\\x00\\rL\" + // 0x0D460D57: 0x00000D4C\n\t\"\\r\\xd9\\r\\xca\\x00\\x00\\r\\xda\" + // 0x0DD90DCA: 0x00000DDA\n\t\"\\r\\xd9\\r\\xcf\\x00\\x00\\r\\xdc\" + // 0x0DD90DCF: 0x00000DDC\n\t\"\\r\\xdc\\r\\xca\\x00\\x00\\r\\xdd\" + // 0x0DDC0DCA: 0x00000DDD\n\t\"\\r\\xd9\\r\\xdf\\x00\\x00\\r\\xde\" + // 0x0DD90DDF: 0x00000DDE\n\t\"\\x10%\\x10.\\x00\\x00\\x10&\" + // 0x1025102E: 0x00001026\n\t\"\\x1b\\x05\\x1b5\\x00\\x00\\x1b\\x06\" + // 0x1B051B35: 0x00001B06\n\t\"\\x1b\\a\\x1b5\\x00\\x00\\x1b\\b\" + // 0x1B071B35: 0x00001B08\n\t\"\\x1b\\t\\x1b5\\x00\\x00\\x1b\\n\" + // 0x1B091B35: 0x00001B0A\n\t\"\\x1b\\v\\x1b5\\x00\\x00\\x1b\\f\" + // 0x1B0B1B35: 0x00001B0C\n\t\"\\x1b\\r\\x1b5\\x00\\x00\\x1b\\x0e\" + // 0x1B0D1B35: 0x00001B0E\n\t\"\\x1b\\x11\\x1b5\\x00\\x00\\x1b\\x12\" + // 0x1B111B35: 0x00001B12\n\t\"\\x1b:\\x1b5\\x00\\x00\\x1b;\" + // 0x1B3A1B35: 0x00001B3B\n\t\"\\x1b<\\x1b5\\x00\\x00\\x1b=\" + // 0x1B3C1B35: 0x00001B3D\n\t\"\\x1b>\\x1b5\\x00\\x00\\x1b@\" + // 0x1B3E1B35: 0x00001B40\n\t\"\\x1b?\\x1b5\\x00\\x00\\x1bA\" + // 0x1B3F1B35: 0x00001B41\n\t\"\\x1bB\\x1b5\\x00\\x00\\x1bC\" + // 0x1B421B35: 0x00001B43\n\t\"\\x00A\\x03%\\x00\\x00\\x1e\\x00\" + // 0x00410325: 0x00001E00\n\t\"\\x00a\\x03%\\x00\\x00\\x1e\\x01\" + // 0x00610325: 0x00001E01\n\t\"\\x00B\\x03\\a\\x00\\x00\\x1e\\x02\" + // 0x00420307: 0x00001E02\n\t\"\\x00b\\x03\\a\\x00\\x00\\x1e\\x03\" + // 0x00620307: 0x00001E03\n\t\"\\x00B\\x03#\\x00\\x00\\x1e\\x04\" + // 0x00420323: 0x00001E04\n\t\"\\x00b\\x03#\\x00\\x00\\x1e\\x05\" + // 0x00620323: 0x00001E05\n\t\"\\x00B\\x031\\x00\\x00\\x1e\\x06\" + // 0x00420331: 0x00001E06\n\t\"\\x00b\\x031\\x00\\x00\\x1e\\a\" + // 0x00620331: 0x00001E07\n\t\"\\x00\\xc7\\x03\\x01\\x00\\x00\\x1e\\b\" + // 0x00C70301: 0x00001E08\n\t\"\\x00\\xe7\\x03\\x01\\x00\\x00\\x1e\\t\" + // 0x00E70301: 0x00001E09\n\t\"\\x00D\\x03\\a\\x00\\x00\\x1e\\n\" + // 0x00440307: 0x00001E0A\n\t\"\\x00d\\x03\\a\\x00\\x00\\x1e\\v\" + // 0x00640307: 0x00001E0B\n\t\"\\x00D\\x03#\\x00\\x00\\x1e\\f\" + // 0x00440323: 0x00001E0C\n\t\"\\x00d\\x03#\\x00\\x00\\x1e\\r\" + // 0x00640323: 0x00001E0D\n\t\"\\x00D\\x031\\x00\\x00\\x1e\\x0e\" + // 0x00440331: 0x00001E0E\n\t\"\\x00d\\x031\\x00\\x00\\x1e\\x0f\" + // 0x00640331: 0x00001E0F\n\t\"\\x00D\\x03'\\x00\\x00\\x1e\\x10\" + // 0x00440327: 0x00001E10\n\t\"\\x00d\\x03'\\x00\\x00\\x1e\\x11\" + // 0x00640327: 0x00001E11\n\t\"\\x00D\\x03-\\x00\\x00\\x1e\\x12\" + // 0x0044032D: 0x00001E12\n\t\"\\x00d\\x03-\\x00\\x00\\x1e\\x13\" + // 0x0064032D: 0x00001E13\n\t\"\\x01\\x12\\x03\\x00\\x00\\x00\\x1e\\x14\" + // 0x01120300: 0x00001E14\n\t\"\\x01\\x13\\x03\\x00\\x00\\x00\\x1e\\x15\" + // 0x01130300: 0x00001E15\n\t\"\\x01\\x12\\x03\\x01\\x00\\x00\\x1e\\x16\" + // 0x01120301: 0x00001E16\n\t\"\\x01\\x13\\x03\\x01\\x00\\x00\\x1e\\x17\" + // 0x01130301: 0x00001E17\n\t\"\\x00E\\x03-\\x00\\x00\\x1e\\x18\" + // 0x0045032D: 0x00001E18\n\t\"\\x00e\\x03-\\x00\\x00\\x1e\\x19\" + // 0x0065032D: 0x00001E19\n\t\"\\x00E\\x030\\x00\\x00\\x1e\\x1a\" + // 0x00450330: 0x00001E1A\n\t\"\\x00e\\x030\\x00\\x00\\x1e\\x1b\" + // 0x00650330: 0x00001E1B\n\t\"\\x02(\\x03\\x06\\x00\\x00\\x1e\\x1c\" + // 0x02280306: 0x00001E1C\n\t\"\\x02)\\x03\\x06\\x00\\x00\\x1e\\x1d\" + // 0x02290306: 0x00001E1D\n\t\"\\x00F\\x03\\a\\x00\\x00\\x1e\\x1e\" + // 0x00460307: 0x00001E1E\n\t\"\\x00f\\x03\\a\\x00\\x00\\x1e\\x1f\" + // 0x00660307: 0x00001E1F\n\t\"\\x00G\\x03\\x04\\x00\\x00\\x1e \" + // 0x00470304: 0x00001E20\n\t\"\\x00g\\x03\\x04\\x00\\x00\\x1e!\" + // 0x00670304: 0x00001E21\n\t\"\\x00H\\x03\\a\\x00\\x00\\x1e\\\"\" + // 0x00480307: 0x00001E22\n\t\"\\x00h\\x03\\a\\x00\\x00\\x1e#\" + // 0x00680307: 0x00001E23\n\t\"\\x00H\\x03#\\x00\\x00\\x1e$\" + // 0x00480323: 0x00001E24\n\t\"\\x00h\\x03#\\x00\\x00\\x1e%\" + // 0x00680323: 0x00001E25\n\t\"\\x00H\\x03\\b\\x00\\x00\\x1e&\" + // 0x00480308: 0x00001E26\n\t\"\\x00h\\x03\\b\\x00\\x00\\x1e'\" + // 0x00680308: 0x00001E27\n\t\"\\x00H\\x03'\\x00\\x00\\x1e(\" + // 0x00480327: 0x00001E28\n\t\"\\x00h\\x03'\\x00\\x00\\x1e)\" + // 0x00680327: 0x00001E29\n\t\"\\x00H\\x03.\\x00\\x00\\x1e*\" + // 0x0048032E: 0x00001E2A\n\t\"\\x00h\\x03.\\x00\\x00\\x1e+\" + // 0x0068032E: 0x00001E2B\n\t\"\\x00I\\x030\\x00\\x00\\x1e,\" + // 0x00490330: 0x00001E2C\n\t\"\\x00i\\x030\\x00\\x00\\x1e-\" + // 0x00690330: 0x00001E2D\n\t\"\\x00\\xcf\\x03\\x01\\x00\\x00\\x1e.\" + // 0x00CF0301: 0x00001E2E\n\t\"\\x00\\xef\\x03\\x01\\x00\\x00\\x1e/\" + // 0x00EF0301: 0x00001E2F\n\t\"\\x00K\\x03\\x01\\x00\\x00\\x1e0\" + // 0x004B0301: 0x00001E30\n\t\"\\x00k\\x03\\x01\\x00\\x00\\x1e1\" + // 0x006B0301: 0x00001E31\n\t\"\\x00K\\x03#\\x00\\x00\\x1e2\" + // 0x004B0323: 0x00001E32\n\t\"\\x00k\\x03#\\x00\\x00\\x1e3\" + // 0x006B0323: 0x00001E33\n\t\"\\x00K\\x031\\x00\\x00\\x1e4\" + // 0x004B0331: 0x00001E34\n\t\"\\x00k\\x031\\x00\\x00\\x1e5\" + // 0x006B0331: 0x00001E35\n\t\"\\x00L\\x03#\\x00\\x00\\x1e6\" + // 0x004C0323: 0x00001E36\n\t\"\\x00l\\x03#\\x00\\x00\\x1e7\" + // 0x006C0323: 0x00001E37\n\t\"\\x1e6\\x03\\x04\\x00\\x00\\x1e8\" + // 0x1E360304: 0x00001E38\n\t\"\\x1e7\\x03\\x04\\x00\\x00\\x1e9\" + // 0x1E370304: 0x00001E39\n\t\"\\x00L\\x031\\x00\\x00\\x1e:\" + // 0x004C0331: 0x00001E3A\n\t\"\\x00l\\x031\\x00\\x00\\x1e;\" + // 0x006C0331: 0x00001E3B\n\t\"\\x00L\\x03-\\x00\\x00\\x1e<\" + // 0x004C032D: 0x00001E3C\n\t\"\\x00l\\x03-\\x00\\x00\\x1e=\" + // 0x006C032D: 0x00001E3D\n\t\"\\x00M\\x03\\x01\\x00\\x00\\x1e>\" + // 0x004D0301: 0x00001E3E\n\t\"\\x00m\\x03\\x01\\x00\\x00\\x1e?\" + // 0x006D0301: 0x00001E3F\n\t\"\\x00M\\x03\\a\\x00\\x00\\x1e@\" + // 0x004D0307: 0x00001E40\n\t\"\\x00m\\x03\\a\\x00\\x00\\x1eA\" + // 0x006D0307: 0x00001E41\n\t\"\\x00M\\x03#\\x00\\x00\\x1eB\" + // 0x004D0323: 0x00001E42\n\t\"\\x00m\\x03#\\x00\\x00\\x1eC\" + // 0x006D0323: 0x00001E43\n\t\"\\x00N\\x03\\a\\x00\\x00\\x1eD\" + // 0x004E0307: 0x00001E44\n\t\"\\x00n\\x03\\a\\x00\\x00\\x1eE\" + // 0x006E0307: 0x00001E45\n\t\"\\x00N\\x03#\\x00\\x00\\x1eF\" + // 0x004E0323: 0x00001E46\n\t\"\\x00n\\x03#\\x00\\x00\\x1eG\" + // 0x006E0323: 0x00001E47\n\t\"\\x00N\\x031\\x00\\x00\\x1eH\" + // 0x004E0331: 0x00001E48\n\t\"\\x00n\\x031\\x00\\x00\\x1eI\" + // 0x006E0331: 0x00001E49\n\t\"\\x00N\\x03-\\x00\\x00\\x1eJ\" + // 0x004E032D: 0x00001E4A\n\t\"\\x00n\\x03-\\x00\\x00\\x1eK\" + // 0x006E032D: 0x00001E4B\n\t\"\\x00\\xd5\\x03\\x01\\x00\\x00\\x1eL\" + // 0x00D50301: 0x00001E4C\n\t\"\\x00\\xf5\\x03\\x01\\x00\\x00\\x1eM\" + // 0x00F50301: 0x00001E4D\n\t\"\\x00\\xd5\\x03\\b\\x00\\x00\\x1eN\" + // 0x00D50308: 0x00001E4E\n\t\"\\x00\\xf5\\x03\\b\\x00\\x00\\x1eO\" + // 0x00F50308: 0x00001E4F\n\t\"\\x01L\\x03\\x00\\x00\\x00\\x1eP\" + // 0x014C0300: 0x00001E50\n\t\"\\x01M\\x03\\x00\\x00\\x00\\x1eQ\" + // 0x014D0300: 0x00001E51\n\t\"\\x01L\\x03\\x01\\x00\\x00\\x1eR\" + // 0x014C0301: 0x00001E52\n\t\"\\x01M\\x03\\x01\\x00\\x00\\x1eS\" + // 0x014D0301: 0x00001E53\n\t\"\\x00P\\x03\\x01\\x00\\x00\\x1eT\" + // 0x00500301: 0x00001E54\n\t\"\\x00p\\x03\\x01\\x00\\x00\\x1eU\" + // 0x00700301: 0x00001E55\n\t\"\\x00P\\x03\\a\\x00\\x00\\x1eV\" + // 0x00500307: 0x00001E56\n\t\"\\x00p\\x03\\a\\x00\\x00\\x1eW\" + // 0x00700307: 0x00001E57\n\t\"\\x00R\\x03\\a\\x00\\x00\\x1eX\" + // 0x00520307: 0x00001E58\n\t\"\\x00r\\x03\\a\\x00\\x00\\x1eY\" + // 0x00720307: 0x00001E59\n\t\"\\x00R\\x03#\\x00\\x00\\x1eZ\" + // 0x00520323: 0x00001E5A\n\t\"\\x00r\\x03#\\x00\\x00\\x1e[\" + // 0x00720323: 0x00001E5B\n\t\"\\x1eZ\\x03\\x04\\x00\\x00\\x1e\\\\\" + // 0x1E5A0304: 0x00001E5C\n\t\"\\x1e[\\x03\\x04\\x00\\x00\\x1e]\" + // 0x1E5B0304: 0x00001E5D\n\t\"\\x00R\\x031\\x00\\x00\\x1e^\" + // 0x00520331: 0x00001E5E\n\t\"\\x00r\\x031\\x00\\x00\\x1e_\" + // 0x00720331: 0x00001E5F\n\t\"\\x00S\\x03\\a\\x00\\x00\\x1e`\" + // 0x00530307: 0x00001E60\n\t\"\\x00s\\x03\\a\\x00\\x00\\x1ea\" + // 0x00730307: 0x00001E61\n\t\"\\x00S\\x03#\\x00\\x00\\x1eb\" + // 0x00530323: 0x00001E62\n\t\"\\x00s\\x03#\\x00\\x00\\x1ec\" + // 0x00730323: 0x00001E63\n\t\"\\x01Z\\x03\\a\\x00\\x00\\x1ed\" + // 0x015A0307: 0x00001E64\n\t\"\\x01[\\x03\\a\\x00\\x00\\x1ee\" + // 0x015B0307: 0x00001E65\n\t\"\\x01`\\x03\\a\\x00\\x00\\x1ef\" + // 0x01600307: 0x00001E66\n\t\"\\x01a\\x03\\a\\x00\\x00\\x1eg\" + // 0x01610307: 0x00001E67\n\t\"\\x1eb\\x03\\a\\x00\\x00\\x1eh\" + // 0x1E620307: 0x00001E68\n\t\"\\x1ec\\x03\\a\\x00\\x00\\x1ei\" + // 0x1E630307: 0x00001E69\n\t\"\\x00T\\x03\\a\\x00\\x00\\x1ej\" + // 0x00540307: 0x00001E6A\n\t\"\\x00t\\x03\\a\\x00\\x00\\x1ek\" + // 0x00740307: 0x00001E6B\n\t\"\\x00T\\x03#\\x00\\x00\\x1el\" + // 0x00540323: 0x00001E6C\n\t\"\\x00t\\x03#\\x00\\x00\\x1em\" + // 0x00740323: 0x00001E6D\n\t\"\\x00T\\x031\\x00\\x00\\x1en\" + // 0x00540331: 0x00001E6E\n\t\"\\x00t\\x031\\x00\\x00\\x1eo\" + // 0x00740331: 0x00001E6F\n\t\"\\x00T\\x03-\\x00\\x00\\x1ep\" + // 0x0054032D: 0x00001E70\n\t\"\\x00t\\x03-\\x00\\x00\\x1eq\" + // 0x0074032D: 0x00001E71\n\t\"\\x00U\\x03$\\x00\\x00\\x1er\" + // 0x00550324: 0x00001E72\n\t\"\\x00u\\x03$\\x00\\x00\\x1es\" + // 0x00750324: 0x00001E73\n\t\"\\x00U\\x030\\x00\\x00\\x1et\" + // 0x00550330: 0x00001E74\n\t\"\\x00u\\x030\\x00\\x00\\x1eu\" + // 0x00750330: 0x00001E75\n\t\"\\x00U\\x03-\\x00\\x00\\x1ev\" + // 0x0055032D: 0x00001E76\n\t\"\\x00u\\x03-\\x00\\x00\\x1ew\" + // 0x0075032D: 0x00001E77\n\t\"\\x01h\\x03\\x01\\x00\\x00\\x1ex\" + // 0x01680301: 0x00001E78\n\t\"\\x01i\\x03\\x01\\x00\\x00\\x1ey\" + // 0x01690301: 0x00001E79\n\t\"\\x01j\\x03\\b\\x00\\x00\\x1ez\" + // 0x016A0308: 0x00001E7A\n\t\"\\x01k\\x03\\b\\x00\\x00\\x1e{\" + // 0x016B0308: 0x00001E7B\n\t\"\\x00V\\x03\\x03\\x00\\x00\\x1e|\" + // 0x00560303: 0x00001E7C\n\t\"\\x00v\\x03\\x03\\x00\\x00\\x1e}\" + // 0x00760303: 0x00001E7D\n\t\"\\x00V\\x03#\\x00\\x00\\x1e~\" + // 0x00560323: 0x00001E7E\n\t\"\\x00v\\x03#\\x00\\x00\\x1e\\x7f\" + // 0x00760323: 0x00001E7F\n\t\"\\x00W\\x03\\x00\\x00\\x00\\x1e\\x80\" + // 0x00570300: 0x00001E80\n\t\"\\x00w\\x03\\x00\\x00\\x00\\x1e\\x81\" + // 0x00770300: 0x00001E81\n\t\"\\x00W\\x03\\x01\\x00\\x00\\x1e\\x82\" + // 0x00570301: 0x00001E82\n\t\"\\x00w\\x03\\x01\\x00\\x00\\x1e\\x83\" + // 0x00770301: 0x00001E83\n\t\"\\x00W\\x03\\b\\x00\\x00\\x1e\\x84\" + // 0x00570308: 0x00001E84\n\t\"\\x00w\\x03\\b\\x00\\x00\\x1e\\x85\" + // 0x00770308: 0x00001E85\n\t\"\\x00W\\x03\\a\\x00\\x00\\x1e\\x86\" + // 0x00570307: 0x00001E86\n\t\"\\x00w\\x03\\a\\x00\\x00\\x1e\\x87\" + // 0x00770307: 0x00001E87\n\t\"\\x00W\\x03#\\x00\\x00\\x1e\\x88\" + // 0x00570323: 0x00001E88\n\t\"\\x00w\\x03#\\x00\\x00\\x1e\\x89\" + // 0x00770323: 0x00001E89\n\t\"\\x00X\\x03\\a\\x00\\x00\\x1e\\x8a\" + // 0x00580307: 0x00001E8A\n\t\"\\x00x\\x03\\a\\x00\\x00\\x1e\\x8b\" + // 0x00780307: 0x00001E8B\n\t\"\\x00X\\x03\\b\\x00\\x00\\x1e\\x8c\" + // 0x00580308: 0x00001E8C\n\t\"\\x00x\\x03\\b\\x00\\x00\\x1e\\x8d\" + // 0x00780308: 0x00001E8D\n\t\"\\x00Y\\x03\\a\\x00\\x00\\x1e\\x8e\" + // 0x00590307: 0x00001E8E\n\t\"\\x00y\\x03\\a\\x00\\x00\\x1e\\x8f\" + // 0x00790307: 0x00001E8F\n\t\"\\x00Z\\x03\\x02\\x00\\x00\\x1e\\x90\" + // 0x005A0302: 0x00001E90\n\t\"\\x00z\\x03\\x02\\x00\\x00\\x1e\\x91\" + // 0x007A0302: 0x00001E91\n\t\"\\x00Z\\x03#\\x00\\x00\\x1e\\x92\" + // 0x005A0323: 0x00001E92\n\t\"\\x00z\\x03#\\x00\\x00\\x1e\\x93\" + // 0x007A0323: 0x00001E93\n\t\"\\x00Z\\x031\\x00\\x00\\x1e\\x94\" + // 0x005A0331: 0x00001E94\n\t\"\\x00z\\x031\\x00\\x00\\x1e\\x95\" + // 0x007A0331: 0x00001E95\n\t\"\\x00h\\x031\\x00\\x00\\x1e\\x96\" + // 0x00680331: 0x00001E96\n\t\"\\x00t\\x03\\b\\x00\\x00\\x1e\\x97\" + // 0x00740308: 0x00001E97\n\t\"\\x00w\\x03\\n\\x00\\x00\\x1e\\x98\" + // 0x0077030A: 0x00001E98\n\t\"\\x00y\\x03\\n\\x00\\x00\\x1e\\x99\" + // 0x0079030A: 0x00001E99\n\t\"\\x01\\x7f\\x03\\a\\x00\\x00\\x1e\\x9b\" + // 0x017F0307: 0x00001E9B\n\t\"\\x00A\\x03#\\x00\\x00\\x1e\\xa0\" + // 0x00410323: 0x00001EA0\n\t\"\\x00a\\x03#\\x00\\x00\\x1e\\xa1\" + // 0x00610323: 0x00001EA1\n\t\"\\x00A\\x03\\t\\x00\\x00\\x1e\\xa2\" + // 0x00410309: 0x00001EA2\n\t\"\\x00a\\x03\\t\\x00\\x00\\x1e\\xa3\" + // 0x00610309: 0x00001EA3\n\t\"\\x00\\xc2\\x03\\x01\\x00\\x00\\x1e\\xa4\" + // 0x00C20301: 0x00001EA4\n\t\"\\x00\\xe2\\x03\\x01\\x00\\x00\\x1e\\xa5\" + // 0x00E20301: 0x00001EA5\n\t\"\\x00\\xc2\\x03\\x00\\x00\\x00\\x1e\\xa6\" + // 0x00C20300: 0x00001EA6\n\t\"\\x00\\xe2\\x03\\x00\\x00\\x00\\x1e\\xa7\" + // 0x00E20300: 0x00001EA7\n\t\"\\x00\\xc2\\x03\\t\\x00\\x00\\x1e\\xa8\" + // 0x00C20309: 0x00001EA8\n\t\"\\x00\\xe2\\x03\\t\\x00\\x00\\x1e\\xa9\" + // 0x00E20309: 0x00001EA9\n\t\"\\x00\\xc2\\x03\\x03\\x00\\x00\\x1e\\xaa\" + // 0x00C20303: 0x00001EAA\n\t\"\\x00\\xe2\\x03\\x03\\x00\\x00\\x1e\\xab\" + // 0x00E20303: 0x00001EAB\n\t\"\\x1e\\xa0\\x03\\x02\\x00\\x00\\x1e\\xac\" + // 0x1EA00302: 0x00001EAC\n\t\"\\x1e\\xa1\\x03\\x02\\x00\\x00\\x1e\\xad\" + // 0x1EA10302: 0x00001EAD\n\t\"\\x01\\x02\\x03\\x01\\x00\\x00\\x1e\\xae\" + // 0x01020301: 0x00001EAE\n\t\"\\x01\\x03\\x03\\x01\\x00\\x00\\x1e\\xaf\" + // 0x01030301: 0x00001EAF\n\t\"\\x01\\x02\\x03\\x00\\x00\\x00\\x1e\\xb0\" + // 0x01020300: 0x00001EB0\n\t\"\\x01\\x03\\x03\\x00\\x00\\x00\\x1e\\xb1\" + // 0x01030300: 0x00001EB1\n\t\"\\x01\\x02\\x03\\t\\x00\\x00\\x1e\\xb2\" + // 0x01020309: 0x00001EB2\n\t\"\\x01\\x03\\x03\\t\\x00\\x00\\x1e\\xb3\" + // 0x01030309: 0x00001EB3\n\t\"\\x01\\x02\\x03\\x03\\x00\\x00\\x1e\\xb4\" + // 0x01020303: 0x00001EB4\n\t\"\\x01\\x03\\x03\\x03\\x00\\x00\\x1e\\xb5\" + // 0x01030303: 0x00001EB5\n\t\"\\x1e\\xa0\\x03\\x06\\x00\\x00\\x1e\\xb6\" + // 0x1EA00306: 0x00001EB6\n\t\"\\x1e\\xa1\\x03\\x06\\x00\\x00\\x1e\\xb7\" + // 0x1EA10306: 0x00001EB7\n\t\"\\x00E\\x03#\\x00\\x00\\x1e\\xb8\" + // 0x00450323: 0x00001EB8\n\t\"\\x00e\\x03#\\x00\\x00\\x1e\\xb9\" + // 0x00650323: 0x00001EB9\n\t\"\\x00E\\x03\\t\\x00\\x00\\x1e\\xba\" + // 0x00450309: 0x00001EBA\n\t\"\\x00e\\x03\\t\\x00\\x00\\x1e\\xbb\" + // 0x00650309: 0x00001EBB\n\t\"\\x00E\\x03\\x03\\x00\\x00\\x1e\\xbc\" + // 0x00450303: 0x00001EBC\n\t\"\\x00e\\x03\\x03\\x00\\x00\\x1e\\xbd\" + // 0x00650303: 0x00001EBD\n\t\"\\x00\\xca\\x03\\x01\\x00\\x00\\x1e\\xbe\" + // 0x00CA0301: 0x00001EBE\n\t\"\\x00\\xea\\x03\\x01\\x00\\x00\\x1e\\xbf\" + // 0x00EA0301: 0x00001EBF\n\t\"\\x00\\xca\\x03\\x00\\x00\\x00\\x1e\\xc0\" + // 0x00CA0300: 0x00001EC0\n\t\"\\x00\\xea\\x03\\x00\\x00\\x00\\x1e\\xc1\" + // 0x00EA0300: 0x00001EC1\n\t\"\\x00\\xca\\x03\\t\\x00\\x00\\x1e\\xc2\" + // 0x00CA0309: 0x00001EC2\n\t\"\\x00\\xea\\x03\\t\\x00\\x00\\x1e\\xc3\" + // 0x00EA0309: 0x00001EC3\n\t\"\\x00\\xca\\x03\\x03\\x00\\x00\\x1e\\xc4\" + // 0x00CA0303: 0x00001EC4\n\t\"\\x00\\xea\\x03\\x03\\x00\\x00\\x1e\\xc5\" + // 0x00EA0303: 0x00001EC5\n\t\"\\x1e\\xb8\\x03\\x02\\x00\\x00\\x1e\\xc6\" + // 0x1EB80302: 0x00001EC6\n\t\"\\x1e\\xb9\\x03\\x02\\x00\\x00\\x1e\\xc7\" + // 0x1EB90302: 0x00001EC7\n\t\"\\x00I\\x03\\t\\x00\\x00\\x1e\\xc8\" + // 0x00490309: 0x00001EC8\n\t\"\\x00i\\x03\\t\\x00\\x00\\x1e\\xc9\" + // 0x00690309: 0x00001EC9\n\t\"\\x00I\\x03#\\x00\\x00\\x1e\\xca\" + // 0x00490323: 0x00001ECA\n\t\"\\x00i\\x03#\\x00\\x00\\x1e\\xcb\" + // 0x00690323: 0x00001ECB\n\t\"\\x00O\\x03#\\x00\\x00\\x1e\\xcc\" + // 0x004F0323: 0x00001ECC\n\t\"\\x00o\\x03#\\x00\\x00\\x1e\\xcd\" + // 0x006F0323: 0x00001ECD\n\t\"\\x00O\\x03\\t\\x00\\x00\\x1e\\xce\" + // 0x004F0309: 0x00001ECE\n\t\"\\x00o\\x03\\t\\x00\\x00\\x1e\\xcf\" + // 0x006F0309: 0x00001ECF\n\t\"\\x00\\xd4\\x03\\x01\\x00\\x00\\x1e\\xd0\" + // 0x00D40301: 0x00001ED0\n\t\"\\x00\\xf4\\x03\\x01\\x00\\x00\\x1e\\xd1\" + // 0x00F40301: 0x00001ED1\n\t\"\\x00\\xd4\\x03\\x00\\x00\\x00\\x1e\\xd2\" + // 0x00D40300: 0x00001ED2\n\t\"\\x00\\xf4\\x03\\x00\\x00\\x00\\x1e\\xd3\" + // 0x00F40300: 0x00001ED3\n\t\"\\x00\\xd4\\x03\\t\\x00\\x00\\x1e\\xd4\" + // 0x00D40309: 0x00001ED4\n\t\"\\x00\\xf4\\x03\\t\\x00\\x00\\x1e\\xd5\" + // 0x00F40309: 0x00001ED5\n\t\"\\x00\\xd4\\x03\\x03\\x00\\x00\\x1e\\xd6\" + // 0x00D40303: 0x00001ED6\n\t\"\\x00\\xf4\\x03\\x03\\x00\\x00\\x1e\\xd7\" + // 0x00F40303: 0x00001ED7\n\t\"\\x1e\\xcc\\x03\\x02\\x00\\x00\\x1e\\xd8\" + // 0x1ECC0302: 0x00001ED8\n\t\"\\x1e\\xcd\\x03\\x02\\x00\\x00\\x1e\\xd9\" + // 0x1ECD0302: 0x00001ED9\n\t\"\\x01\\xa0\\x03\\x01\\x00\\x00\\x1e\\xda\" + // 0x01A00301: 0x00001EDA\n\t\"\\x01\\xa1\\x03\\x01\\x00\\x00\\x1e\\xdb\" + // 0x01A10301: 0x00001EDB\n\t\"\\x01\\xa0\\x03\\x00\\x00\\x00\\x1e\\xdc\" + // 0x01A00300: 0x00001EDC\n\t\"\\x01\\xa1\\x03\\x00\\x00\\x00\\x1e\\xdd\" + // 0x01A10300: 0x00001EDD\n\t\"\\x01\\xa0\\x03\\t\\x00\\x00\\x1e\\xde\" + // 0x01A00309: 0x00001EDE\n\t\"\\x01\\xa1\\x03\\t\\x00\\x00\\x1e\\xdf\" + // 0x01A10309: 0x00001EDF\n\t\"\\x01\\xa0\\x03\\x03\\x00\\x00\\x1e\\xe0\" + // 0x01A00303: 0x00001EE0\n\t\"\\x01\\xa1\\x03\\x03\\x00\\x00\\x1e\\xe1\" + // 0x01A10303: 0x00001EE1\n\t\"\\x01\\xa0\\x03#\\x00\\x00\\x1e\\xe2\" + // 0x01A00323: 0x00001EE2\n\t\"\\x01\\xa1\\x03#\\x00\\x00\\x1e\\xe3\" + // 0x01A10323: 0x00001EE3\n\t\"\\x00U\\x03#\\x00\\x00\\x1e\\xe4\" + // 0x00550323: 0x00001EE4\n\t\"\\x00u\\x03#\\x00\\x00\\x1e\\xe5\" + // 0x00750323: 0x00001EE5\n\t\"\\x00U\\x03\\t\\x00\\x00\\x1e\\xe6\" + // 0x00550309: 0x00001EE6\n\t\"\\x00u\\x03\\t\\x00\\x00\\x1e\\xe7\" + // 0x00750309: 0x00001EE7\n\t\"\\x01\\xaf\\x03\\x01\\x00\\x00\\x1e\\xe8\" + // 0x01AF0301: 0x00001EE8\n\t\"\\x01\\xb0\\x03\\x01\\x00\\x00\\x1e\\xe9\" + // 0x01B00301: 0x00001EE9\n\t\"\\x01\\xaf\\x03\\x00\\x00\\x00\\x1e\\xea\" + // 0x01AF0300: 0x00001EEA\n\t\"\\x01\\xb0\\x03\\x00\\x00\\x00\\x1e\\xeb\" + // 0x01B00300: 0x00001EEB\n\t\"\\x01\\xaf\\x03\\t\\x00\\x00\\x1e\\xec\" + // 0x01AF0309: 0x00001EEC\n\t\"\\x01\\xb0\\x03\\t\\x00\\x00\\x1e\\xed\" + // 0x01B00309: 0x00001EED\n\t\"\\x01\\xaf\\x03\\x03\\x00\\x00\\x1e\\xee\" + // 0x01AF0303: 0x00001EEE\n\t\"\\x01\\xb0\\x03\\x03\\x00\\x00\\x1e\\xef\" + // 0x01B00303: 0x00001EEF\n\t\"\\x01\\xaf\\x03#\\x00\\x00\\x1e\\xf0\" + // 0x01AF0323: 0x00001EF0\n\t\"\\x01\\xb0\\x03#\\x00\\x00\\x1e\\xf1\" + // 0x01B00323: 0x00001EF1\n\t\"\\x00Y\\x03\\x00\\x00\\x00\\x1e\\xf2\" + // 0x00590300: 0x00001EF2\n\t\"\\x00y\\x03\\x00\\x00\\x00\\x1e\\xf3\" + // 0x00790300: 0x00001EF3\n\t\"\\x00Y\\x03#\\x00\\x00\\x1e\\xf4\" + // 0x00590323: 0x00001EF4\n\t\"\\x00y\\x03#\\x00\\x00\\x1e\\xf5\" + // 0x00790323: 0x00001EF5\n\t\"\\x00Y\\x03\\t\\x00\\x00\\x1e\\xf6\" + // 0x00590309: 0x00001EF6\n\t\"\\x00y\\x03\\t\\x00\\x00\\x1e\\xf7\" + // 0x00790309: 0x00001EF7\n\t\"\\x00Y\\x03\\x03\\x00\\x00\\x1e\\xf8\" + // 0x00590303: 0x00001EF8\n\t\"\\x00y\\x03\\x03\\x00\\x00\\x1e\\xf9\" + // 0x00790303: 0x00001EF9\n\t\"\\x03\\xb1\\x03\\x13\\x00\\x00\\x1f\\x00\" + // 0x03B10313: 0x00001F00\n\t\"\\x03\\xb1\\x03\\x14\\x00\\x00\\x1f\\x01\" + // 0x03B10314: 0x00001F01\n\t\"\\x1f\\x00\\x03\\x00\\x00\\x00\\x1f\\x02\" + // 0x1F000300: 0x00001F02\n\t\"\\x1f\\x01\\x03\\x00\\x00\\x00\\x1f\\x03\" + // 0x1F010300: 0x00001F03\n\t\"\\x1f\\x00\\x03\\x01\\x00\\x00\\x1f\\x04\" + // 0x1F000301: 0x00001F04\n\t\"\\x1f\\x01\\x03\\x01\\x00\\x00\\x1f\\x05\" + // 0x1F010301: 0x00001F05\n\t\"\\x1f\\x00\\x03B\\x00\\x00\\x1f\\x06\" + // 0x1F000342: 0x00001F06\n\t\"\\x1f\\x01\\x03B\\x00\\x00\\x1f\\a\" + // 0x1F010342: 0x00001F07\n\t\"\\x03\\x91\\x03\\x13\\x00\\x00\\x1f\\b\" + // 0x03910313: 0x00001F08\n\t\"\\x03\\x91\\x03\\x14\\x00\\x00\\x1f\\t\" + // 0x03910314: 0x00001F09\n\t\"\\x1f\\b\\x03\\x00\\x00\\x00\\x1f\\n\" + // 0x1F080300: 0x00001F0A\n\t\"\\x1f\\t\\x03\\x00\\x00\\x00\\x1f\\v\" + // 0x1F090300: 0x00001F0B\n\t\"\\x1f\\b\\x03\\x01\\x00\\x00\\x1f\\f\" + // 0x1F080301: 0x00001F0C\n\t\"\\x1f\\t\\x03\\x01\\x00\\x00\\x1f\\r\" + // 0x1F090301: 0x00001F0D\n\t\"\\x1f\\b\\x03B\\x00\\x00\\x1f\\x0e\" + // 0x1F080342: 0x00001F0E\n\t\"\\x1f\\t\\x03B\\x00\\x00\\x1f\\x0f\" + // 0x1F090342: 0x00001F0F\n\t\"\\x03\\xb5\\x03\\x13\\x00\\x00\\x1f\\x10\" + // 0x03B50313: 0x00001F10\n\t\"\\x03\\xb5\\x03\\x14\\x00\\x00\\x1f\\x11\" + // 0x03B50314: 0x00001F11\n\t\"\\x1f\\x10\\x03\\x00\\x00\\x00\\x1f\\x12\" + // 0x1F100300: 0x00001F12\n\t\"\\x1f\\x11\\x03\\x00\\x00\\x00\\x1f\\x13\" + // 0x1F110300: 0x00001F13\n\t\"\\x1f\\x10\\x03\\x01\\x00\\x00\\x1f\\x14\" + // 0x1F100301: 0x00001F14\n\t\"\\x1f\\x11\\x03\\x01\\x00\\x00\\x1f\\x15\" + // 0x1F110301: 0x00001F15\n\t\"\\x03\\x95\\x03\\x13\\x00\\x00\\x1f\\x18\" + // 0x03950313: 0x00001F18\n\t\"\\x03\\x95\\x03\\x14\\x00\\x00\\x1f\\x19\" + // 0x03950314: 0x00001F19\n\t\"\\x1f\\x18\\x03\\x00\\x00\\x00\\x1f\\x1a\" + // 0x1F180300: 0x00001F1A\n\t\"\\x1f\\x19\\x03\\x00\\x00\\x00\\x1f\\x1b\" + // 0x1F190300: 0x00001F1B\n\t\"\\x1f\\x18\\x03\\x01\\x00\\x00\\x1f\\x1c\" + // 0x1F180301: 0x00001F1C\n\t\"\\x1f\\x19\\x03\\x01\\x00\\x00\\x1f\\x1d\" + // 0x1F190301: 0x00001F1D\n\t\"\\x03\\xb7\\x03\\x13\\x00\\x00\\x1f \" + // 0x03B70313: 0x00001F20\n\t\"\\x03\\xb7\\x03\\x14\\x00\\x00\\x1f!\" + // 0x03B70314: 0x00001F21\n\t\"\\x1f \\x03\\x00\\x00\\x00\\x1f\\\"\" + // 0x1F200300: 0x00001F22\n\t\"\\x1f!\\x03\\x00\\x00\\x00\\x1f#\" + // 0x1F210300: 0x00001F23\n\t\"\\x1f \\x03\\x01\\x00\\x00\\x1f$\" + // 0x1F200301: 0x00001F24\n\t\"\\x1f!\\x03\\x01\\x00\\x00\\x1f%\" + // 0x1F210301: 0x00001F25\n\t\"\\x1f \\x03B\\x00\\x00\\x1f&\" + // 0x1F200342: 0x00001F26\n\t\"\\x1f!\\x03B\\x00\\x00\\x1f'\" + // 0x1F210342: 0x00001F27\n\t\"\\x03\\x97\\x03\\x13\\x00\\x00\\x1f(\" + // 0x03970313: 0x00001F28\n\t\"\\x03\\x97\\x03\\x14\\x00\\x00\\x1f)\" + // 0x03970314: 0x00001F29\n\t\"\\x1f(\\x03\\x00\\x00\\x00\\x1f*\" + // 0x1F280300: 0x00001F2A\n\t\"\\x1f)\\x03\\x00\\x00\\x00\\x1f+\" + // 0x1F290300: 0x00001F2B\n\t\"\\x1f(\\x03\\x01\\x00\\x00\\x1f,\" + // 0x1F280301: 0x00001F2C\n\t\"\\x1f)\\x03\\x01\\x00\\x00\\x1f-\" + // 0x1F290301: 0x00001F2D\n\t\"\\x1f(\\x03B\\x00\\x00\\x1f.\" + // 0x1F280342: 0x00001F2E\n\t\"\\x1f)\\x03B\\x00\\x00\\x1f/\" + // 0x1F290342: 0x00001F2F\n\t\"\\x03\\xb9\\x03\\x13\\x00\\x00\\x1f0\" + // 0x03B90313: 0x00001F30\n\t\"\\x03\\xb9\\x03\\x14\\x00\\x00\\x1f1\" + // 0x03B90314: 0x00001F31\n\t\"\\x1f0\\x03\\x00\\x00\\x00\\x1f2\" + // 0x1F300300: 0x00001F32\n\t\"\\x1f1\\x03\\x00\\x00\\x00\\x1f3\" + // 0x1F310300: 0x00001F33\n\t\"\\x1f0\\x03\\x01\\x00\\x00\\x1f4\" + // 0x1F300301: 0x00001F34\n\t\"\\x1f1\\x03\\x01\\x00\\x00\\x1f5\" + // 0x1F310301: 0x00001F35\n\t\"\\x1f0\\x03B\\x00\\x00\\x1f6\" + // 0x1F300342: 0x00001F36\n\t\"\\x1f1\\x03B\\x00\\x00\\x1f7\" + // 0x1F310342: 0x00001F37\n\t\"\\x03\\x99\\x03\\x13\\x00\\x00\\x1f8\" + // 0x03990313: 0x00001F38\n\t\"\\x03\\x99\\x03\\x14\\x00\\x00\\x1f9\" + // 0x03990314: 0x00001F39\n\t\"\\x1f8\\x03\\x00\\x00\\x00\\x1f:\" + // 0x1F380300: 0x00001F3A\n\t\"\\x1f9\\x03\\x00\\x00\\x00\\x1f;\" + // 0x1F390300: 0x00001F3B\n\t\"\\x1f8\\x03\\x01\\x00\\x00\\x1f<\" + // 0x1F380301: 0x00001F3C\n\t\"\\x1f9\\x03\\x01\\x00\\x00\\x1f=\" + // 0x1F390301: 0x00001F3D\n\t\"\\x1f8\\x03B\\x00\\x00\\x1f>\" + // 0x1F380342: 0x00001F3E\n\t\"\\x1f9\\x03B\\x00\\x00\\x1f?\" + // 0x1F390342: 0x00001F3F\n\t\"\\x03\\xbf\\x03\\x13\\x00\\x00\\x1f@\" + // 0x03BF0313: 0x00001F40\n\t\"\\x03\\xbf\\x03\\x14\\x00\\x00\\x1fA\" + // 0x03BF0314: 0x00001F41\n\t\"\\x1f@\\x03\\x00\\x00\\x00\\x1fB\" + // 0x1F400300: 0x00001F42\n\t\"\\x1fA\\x03\\x00\\x00\\x00\\x1fC\" + // 0x1F410300: 0x00001F43\n\t\"\\x1f@\\x03\\x01\\x00\\x00\\x1fD\" + // 0x1F400301: 0x00001F44\n\t\"\\x1fA\\x03\\x01\\x00\\x00\\x1fE\" + // 0x1F410301: 0x00001F45\n\t\"\\x03\\x9f\\x03\\x13\\x00\\x00\\x1fH\" + // 0x039F0313: 0x00001F48\n\t\"\\x03\\x9f\\x03\\x14\\x00\\x00\\x1fI\" + // 0x039F0314: 0x00001F49\n\t\"\\x1fH\\x03\\x00\\x00\\x00\\x1fJ\" + // 0x1F480300: 0x00001F4A\n\t\"\\x1fI\\x03\\x00\\x00\\x00\\x1fK\" + // 0x1F490300: 0x00001F4B\n\t\"\\x1fH\\x03\\x01\\x00\\x00\\x1fL\" + // 0x1F480301: 0x00001F4C\n\t\"\\x1fI\\x03\\x01\\x00\\x00\\x1fM\" + // 0x1F490301: 0x00001F4D\n\t\"\\x03\\xc5\\x03\\x13\\x00\\x00\\x1fP\" + // 0x03C50313: 0x00001F50\n\t\"\\x03\\xc5\\x03\\x14\\x00\\x00\\x1fQ\" + // 0x03C50314: 0x00001F51\n\t\"\\x1fP\\x03\\x00\\x00\\x00\\x1fR\" + // 0x1F500300: 0x00001F52\n\t\"\\x1fQ\\x03\\x00\\x00\\x00\\x1fS\" + // 0x1F510300: 0x00001F53\n\t\"\\x1fP\\x03\\x01\\x00\\x00\\x1fT\" + // 0x1F500301: 0x00001F54\n\t\"\\x1fQ\\x03\\x01\\x00\\x00\\x1fU\" + // 0x1F510301: 0x00001F55\n\t\"\\x1fP\\x03B\\x00\\x00\\x1fV\" + // 0x1F500342: 0x00001F56\n\t\"\\x1fQ\\x03B\\x00\\x00\\x1fW\" + // 0x1F510342: 0x00001F57\n\t\"\\x03\\xa5\\x03\\x14\\x00\\x00\\x1fY\" + // 0x03A50314: 0x00001F59\n\t\"\\x1fY\\x03\\x00\\x00\\x00\\x1f[\" + // 0x1F590300: 0x00001F5B\n\t\"\\x1fY\\x03\\x01\\x00\\x00\\x1f]\" + // 0x1F590301: 0x00001F5D\n\t\"\\x1fY\\x03B\\x00\\x00\\x1f_\" + // 0x1F590342: 0x00001F5F\n\t\"\\x03\\xc9\\x03\\x13\\x00\\x00\\x1f`\" + // 0x03C90313: 0x00001F60\n\t\"\\x03\\xc9\\x03\\x14\\x00\\x00\\x1fa\" + // 0x03C90314: 0x00001F61\n\t\"\\x1f`\\x03\\x00\\x00\\x00\\x1fb\" + // 0x1F600300: 0x00001F62\n\t\"\\x1fa\\x03\\x00\\x00\\x00\\x1fc\" + // 0x1F610300: 0x00001F63\n\t\"\\x1f`\\x03\\x01\\x00\\x00\\x1fd\" + // 0x1F600301: 0x00001F64\n\t\"\\x1fa\\x03\\x01\\x00\\x00\\x1fe\" + // 0x1F610301: 0x00001F65\n\t\"\\x1f`\\x03B\\x00\\x00\\x1ff\" + // 0x1F600342: 0x00001F66\n\t\"\\x1fa\\x03B\\x00\\x00\\x1fg\" + // 0x1F610342: 0x00001F67\n\t\"\\x03\\xa9\\x03\\x13\\x00\\x00\\x1fh\" + // 0x03A90313: 0x00001F68\n\t\"\\x03\\xa9\\x03\\x14\\x00\\x00\\x1fi\" + // 0x03A90314: 0x00001F69\n\t\"\\x1fh\\x03\\x00\\x00\\x00\\x1fj\" + // 0x1F680300: 0x00001F6A\n\t\"\\x1fi\\x03\\x00\\x00\\x00\\x1fk\" + // 0x1F690300: 0x00001F6B\n\t\"\\x1fh\\x03\\x01\\x00\\x00\\x1fl\" + // 0x1F680301: 0x00001F6C\n\t\"\\x1fi\\x03\\x01\\x00\\x00\\x1fm\" + // 0x1F690301: 0x00001F6D\n\t\"\\x1fh\\x03B\\x00\\x00\\x1fn\" + // 0x1F680342: 0x00001F6E\n\t\"\\x1fi\\x03B\\x00\\x00\\x1fo\" + // 0x1F690342: 0x00001F6F\n\t\"\\x03\\xb1\\x03\\x00\\x00\\x00\\x1fp\" + // 0x03B10300: 0x00001F70\n\t\"\\x03\\xb5\\x03\\x00\\x00\\x00\\x1fr\" + // 0x03B50300: 0x00001F72\n\t\"\\x03\\xb7\\x03\\x00\\x00\\x00\\x1ft\" + // 0x03B70300: 0x00001F74\n\t\"\\x03\\xb9\\x03\\x00\\x00\\x00\\x1fv\" + // 0x03B90300: 0x00001F76\n\t\"\\x03\\xbf\\x03\\x00\\x00\\x00\\x1fx\" + // 0x03BF0300: 0x00001F78\n\t\"\\x03\\xc5\\x03\\x00\\x00\\x00\\x1fz\" + // 0x03C50300: 0x00001F7A\n\t\"\\x03\\xc9\\x03\\x00\\x00\\x00\\x1f|\" + // 0x03C90300: 0x00001F7C\n\t\"\\x1f\\x00\\x03E\\x00\\x00\\x1f\\x80\" + // 0x1F000345: 0x00001F80\n\t\"\\x1f\\x01\\x03E\\x00\\x00\\x1f\\x81\" + // 0x1F010345: 0x00001F81\n\t\"\\x1f\\x02\\x03E\\x00\\x00\\x1f\\x82\" + // 0x1F020345: 0x00001F82\n\t\"\\x1f\\x03\\x03E\\x00\\x00\\x1f\\x83\" + // 0x1F030345: 0x00001F83\n\t\"\\x1f\\x04\\x03E\\x00\\x00\\x1f\\x84\" + // 0x1F040345: 0x00001F84\n\t\"\\x1f\\x05\\x03E\\x00\\x00\\x1f\\x85\" + // 0x1F050345: 0x00001F85\n\t\"\\x1f\\x06\\x03E\\x00\\x00\\x1f\\x86\" + // 0x1F060345: 0x00001F86\n\t\"\\x1f\\a\\x03E\\x00\\x00\\x1f\\x87\" + // 0x1F070345: 0x00001F87\n\t\"\\x1f\\b\\x03E\\x00\\x00\\x1f\\x88\" + // 0x1F080345: 0x00001F88\n\t\"\\x1f\\t\\x03E\\x00\\x00\\x1f\\x89\" + // 0x1F090345: 0x00001F89\n\t\"\\x1f\\n\\x03E\\x00\\x00\\x1f\\x8a\" + // 0x1F0A0345: 0x00001F8A\n\t\"\\x1f\\v\\x03E\\x00\\x00\\x1f\\x8b\" + // 0x1F0B0345: 0x00001F8B\n\t\"\\x1f\\f\\x03E\\x00\\x00\\x1f\\x8c\" + // 0x1F0C0345: 0x00001F8C\n\t\"\\x1f\\r\\x03E\\x00\\x00\\x1f\\x8d\" + // 0x1F0D0345: 0x00001F8D\n\t\"\\x1f\\x0e\\x03E\\x00\\x00\\x1f\\x8e\" + // 0x1F0E0345: 0x00001F8E\n\t\"\\x1f\\x0f\\x03E\\x00\\x00\\x1f\\x8f\" + // 0x1F0F0345: 0x00001F8F\n\t\"\\x1f \\x03E\\x00\\x00\\x1f\\x90\" + // 0x1F200345: 0x00001F90\n\t\"\\x1f!\\x03E\\x00\\x00\\x1f\\x91\" + // 0x1F210345: 0x00001F91\n\t\"\\x1f\\\"\\x03E\\x00\\x00\\x1f\\x92\" + // 0x1F220345: 0x00001F92\n\t\"\\x1f#\\x03E\\x00\\x00\\x1f\\x93\" + // 0x1F230345: 0x00001F93\n\t\"\\x1f$\\x03E\\x00\\x00\\x1f\\x94\" + // 0x1F240345: 0x00001F94\n\t\"\\x1f%\\x03E\\x00\\x00\\x1f\\x95\" + // 0x1F250345: 0x00001F95\n\t\"\\x1f&\\x03E\\x00\\x00\\x1f\\x96\" + // 0x1F260345: 0x00001F96\n\t\"\\x1f'\\x03E\\x00\\x00\\x1f\\x97\" + // 0x1F270345: 0x00001F97\n\t\"\\x1f(\\x03E\\x00\\x00\\x1f\\x98\" + // 0x1F280345: 0x00001F98\n\t\"\\x1f)\\x03E\\x00\\x00\\x1f\\x99\" + // 0x1F290345: 0x00001F99\n\t\"\\x1f*\\x03E\\x00\\x00\\x1f\\x9a\" + // 0x1F2A0345: 0x00001F9A\n\t\"\\x1f+\\x03E\\x00\\x00\\x1f\\x9b\" + // 0x1F2B0345: 0x00001F9B\n\t\"\\x1f,\\x03E\\x00\\x00\\x1f\\x9c\" + // 0x1F2C0345: 0x00001F9C\n\t\"\\x1f-\\x03E\\x00\\x00\\x1f\\x9d\" + // 0x1F2D0345: 0x00001F9D\n\t\"\\x1f.\\x03E\\x00\\x00\\x1f\\x9e\" + // 0x1F2E0345: 0x00001F9E\n\t\"\\x1f/\\x03E\\x00\\x00\\x1f\\x9f\" + // 0x1F2F0345: 0x00001F9F\n\t\"\\x1f`\\x03E\\x00\\x00\\x1f\\xa0\" + // 0x1F600345: 0x00001FA0\n\t\"\\x1fa\\x03E\\x00\\x00\\x1f\\xa1\" + // 0x1F610345: 0x00001FA1\n\t\"\\x1fb\\x03E\\x00\\x00\\x1f\\xa2\" + // 0x1F620345: 0x00001FA2\n\t\"\\x1fc\\x03E\\x00\\x00\\x1f\\xa3\" + // 0x1F630345: 0x00001FA3\n\t\"\\x1fd\\x03E\\x00\\x00\\x1f\\xa4\" + // 0x1F640345: 0x00001FA4\n\t\"\\x1fe\\x03E\\x00\\x00\\x1f\\xa5\" + // 0x1F650345: 0x00001FA5\n\t\"\\x1ff\\x03E\\x00\\x00\\x1f\\xa6\" + // 0x1F660345: 0x00001FA6\n\t\"\\x1fg\\x03E\\x00\\x00\\x1f\\xa7\" + // 0x1F670345: 0x00001FA7\n\t\"\\x1fh\\x03E\\x00\\x00\\x1f\\xa8\" + // 0x1F680345: 0x00001FA8\n\t\"\\x1fi\\x03E\\x00\\x00\\x1f\\xa9\" + // 0x1F690345: 0x00001FA9\n\t\"\\x1fj\\x03E\\x00\\x00\\x1f\\xaa\" + // 0x1F6A0345: 0x00001FAA\n\t\"\\x1fk\\x03E\\x00\\x00\\x1f\\xab\" + // 0x1F6B0345: 0x00001FAB\n\t\"\\x1fl\\x03E\\x00\\x00\\x1f\\xac\" + // 0x1F6C0345: 0x00001FAC\n\t\"\\x1fm\\x03E\\x00\\x00\\x1f\\xad\" + // 0x1F6D0345: 0x00001FAD\n\t\"\\x1fn\\x03E\\x00\\x00\\x1f\\xae\" + // 0x1F6E0345: 0x00001FAE\n\t\"\\x1fo\\x03E\\x00\\x00\\x1f\\xaf\" + // 0x1F6F0345: 0x00001FAF\n\t\"\\x03\\xb1\\x03\\x06\\x00\\x00\\x1f\\xb0\" + // 0x03B10306: 0x00001FB0\n\t\"\\x03\\xb1\\x03\\x04\\x00\\x00\\x1f\\xb1\" + // 0x03B10304: 0x00001FB1\n\t\"\\x1fp\\x03E\\x00\\x00\\x1f\\xb2\" + // 0x1F700345: 0x00001FB2\n\t\"\\x03\\xb1\\x03E\\x00\\x00\\x1f\\xb3\" + // 0x03B10345: 0x00001FB3\n\t\"\\x03\\xac\\x03E\\x00\\x00\\x1f\\xb4\" + // 0x03AC0345: 0x00001FB4\n\t\"\\x03\\xb1\\x03B\\x00\\x00\\x1f\\xb6\" + // 0x03B10342: 0x00001FB6\n\t\"\\x1f\\xb6\\x03E\\x00\\x00\\x1f\\xb7\" + // 0x1FB60345: 0x00001FB7\n\t\"\\x03\\x91\\x03\\x06\\x00\\x00\\x1f\\xb8\" + // 0x03910306: 0x00001FB8\n\t\"\\x03\\x91\\x03\\x04\\x00\\x00\\x1f\\xb9\" + // 0x03910304: 0x00001FB9\n\t\"\\x03\\x91\\x03\\x00\\x00\\x00\\x1f\\xba\" + // 0x03910300: 0x00001FBA\n\t\"\\x03\\x91\\x03E\\x00\\x00\\x1f\\xbc\" + // 0x03910345: 0x00001FBC\n\t\"\\x00\\xa8\\x03B\\x00\\x00\\x1f\\xc1\" + // 0x00A80342: 0x00001FC1\n\t\"\\x1ft\\x03E\\x00\\x00\\x1f\\xc2\" + // 0x1F740345: 0x00001FC2\n\t\"\\x03\\xb7\\x03E\\x00\\x00\\x1f\\xc3\" + // 0x03B70345: 0x00001FC3\n\t\"\\x03\\xae\\x03E\\x00\\x00\\x1f\\xc4\" + // 0x03AE0345: 0x00001FC4\n\t\"\\x03\\xb7\\x03B\\x00\\x00\\x1f\\xc6\" + // 0x03B70342: 0x00001FC6\n\t\"\\x1f\\xc6\\x03E\\x00\\x00\\x1f\\xc7\" + // 0x1FC60345: 0x00001FC7\n\t\"\\x03\\x95\\x03\\x00\\x00\\x00\\x1f\\xc8\" + // 0x03950300: 0x00001FC8\n\t\"\\x03\\x97\\x03\\x00\\x00\\x00\\x1f\\xca\" + // 0x03970300: 0x00001FCA\n\t\"\\x03\\x97\\x03E\\x00\\x00\\x1f\\xcc\" + // 0x03970345: 0x00001FCC\n\t\"\\x1f\\xbf\\x03\\x00\\x00\\x00\\x1f\\xcd\" + // 0x1FBF0300: 0x00001FCD\n\t\"\\x1f\\xbf\\x03\\x01\\x00\\x00\\x1f\\xce\" + // 0x1FBF0301: 0x00001FCE\n\t\"\\x1f\\xbf\\x03B\\x00\\x00\\x1f\\xcf\" + // 0x1FBF0342: 0x00001FCF\n\t\"\\x03\\xb9\\x03\\x06\\x00\\x00\\x1f\\xd0\" + // 0x03B90306: 0x00001FD0\n\t\"\\x03\\xb9\\x03\\x04\\x00\\x00\\x1f\\xd1\" + // 0x03B90304: 0x00001FD1\n\t\"\\x03\\xca\\x03\\x00\\x00\\x00\\x1f\\xd2\" + // 0x03CA0300: 0x00001FD2\n\t\"\\x03\\xb9\\x03B\\x00\\x00\\x1f\\xd6\" + // 0x03B90342: 0x00001FD6\n\t\"\\x03\\xca\\x03B\\x00\\x00\\x1f\\xd7\" + // 0x03CA0342: 0x00001FD7\n\t\"\\x03\\x99\\x03\\x06\\x00\\x00\\x1f\\xd8\" + // 0x03990306: 0x00001FD8\n\t\"\\x03\\x99\\x03\\x04\\x00\\x00\\x1f\\xd9\" + // 0x03990304: 0x00001FD9\n\t\"\\x03\\x99\\x03\\x00\\x00\\x00\\x1f\\xda\" + // 0x03990300: 0x00001FDA\n\t\"\\x1f\\xfe\\x03\\x00\\x00\\x00\\x1f\\xdd\" + // 0x1FFE0300: 0x00001FDD\n\t\"\\x1f\\xfe\\x03\\x01\\x00\\x00\\x1f\\xde\" + // 0x1FFE0301: 0x00001FDE\n\t\"\\x1f\\xfe\\x03B\\x00\\x00\\x1f\\xdf\" + // 0x1FFE0342: 0x00001FDF\n\t\"\\x03\\xc5\\x03\\x06\\x00\\x00\\x1f\\xe0\" + // 0x03C50306: 0x00001FE0\n\t\"\\x03\\xc5\\x03\\x04\\x00\\x00\\x1f\\xe1\" + // 0x03C50304: 0x00001FE1\n\t\"\\x03\\xcb\\x03\\x00\\x00\\x00\\x1f\\xe2\" + // 0x03CB0300: 0x00001FE2\n\t\"\\x03\\xc1\\x03\\x13\\x00\\x00\\x1f\\xe4\" + // 0x03C10313: 0x00001FE4\n\t\"\\x03\\xc1\\x03\\x14\\x00\\x00\\x1f\\xe5\" + // 0x03C10314: 0x00001FE5\n\t\"\\x03\\xc5\\x03B\\x00\\x00\\x1f\\xe6\" + // 0x03C50342: 0x00001FE6\n\t\"\\x03\\xcb\\x03B\\x00\\x00\\x1f\\xe7\" + // 0x03CB0342: 0x00001FE7\n\t\"\\x03\\xa5\\x03\\x06\\x00\\x00\\x1f\\xe8\" + // 0x03A50306: 0x00001FE8\n\t\"\\x03\\xa5\\x03\\x04\\x00\\x00\\x1f\\xe9\" + // 0x03A50304: 0x00001FE9\n\t\"\\x03\\xa5\\x03\\x00\\x00\\x00\\x1f\\xea\" + // 0x03A50300: 0x00001FEA\n\t\"\\x03\\xa1\\x03\\x14\\x00\\x00\\x1f\\xec\" + // 0x03A10314: 0x00001FEC\n\t\"\\x00\\xa8\\x03\\x00\\x00\\x00\\x1f\\xed\" + // 0x00A80300: 0x00001FED\n\t\"\\x1f|\\x03E\\x00\\x00\\x1f\\xf2\" + // 0x1F7C0345: 0x00001FF2\n\t\"\\x03\\xc9\\x03E\\x00\\x00\\x1f\\xf3\" + // 0x03C90345: 0x00001FF3\n\t\"\\x03\\xce\\x03E\\x00\\x00\\x1f\\xf4\" + // 0x03CE0345: 0x00001FF4\n\t\"\\x03\\xc9\\x03B\\x00\\x00\\x1f\\xf6\" + // 0x03C90342: 0x00001FF6\n\t\"\\x1f\\xf6\\x03E\\x00\\x00\\x1f\\xf7\" + // 0x1FF60345: 0x00001FF7\n\t\"\\x03\\x9f\\x03\\x00\\x00\\x00\\x1f\\xf8\" + // 0x039F0300: 0x00001FF8\n\t\"\\x03\\xa9\\x03\\x00\\x00\\x00\\x1f\\xfa\" + // 0x03A90300: 0x00001FFA\n\t\"\\x03\\xa9\\x03E\\x00\\x00\\x1f\\xfc\" + // 0x03A90345: 0x00001FFC\n\t\"!\\x90\\x038\\x00\\x00!\\x9a\" + // 0x21900338: 0x0000219A\n\t\"!\\x92\\x038\\x00\\x00!\\x9b\" + // 0x21920338: 0x0000219B\n\t\"!\\x94\\x038\\x00\\x00!\\xae\" + // 0x21940338: 0x000021AE\n\t\"!\\xd0\\x038\\x00\\x00!\\xcd\" + // 0x21D00338: 0x000021CD\n\t\"!\\xd4\\x038\\x00\\x00!\\xce\" + // 0x21D40338: 0x000021CE\n\t\"!\\xd2\\x038\\x00\\x00!\\xcf\" + // 0x21D20338: 0x000021CF\n\t\"\\\"\\x03\\x038\\x00\\x00\\\"\\x04\" + // 0x22030338: 0x00002204\n\t\"\\\"\\b\\x038\\x00\\x00\\\"\\t\" + // 0x22080338: 0x00002209\n\t\"\\\"\\v\\x038\\x00\\x00\\\"\\f\" + // 0x220B0338: 0x0000220C\n\t\"\\\"#\\x038\\x00\\x00\\\"$\" + // 0x22230338: 0x00002224\n\t\"\\\"%\\x038\\x00\\x00\\\"&\" + // 0x22250338: 0x00002226\n\t\"\\\"<\\x038\\x00\\x00\\\"A\" + // 0x223C0338: 0x00002241\n\t\"\\\"C\\x038\\x00\\x00\\\"D\" + // 0x22430338: 0x00002244\n\t\"\\\"E\\x038\\x00\\x00\\\"G\" + // 0x22450338: 0x00002247\n\t\"\\\"H\\x038\\x00\\x00\\\"I\" + // 0x22480338: 0x00002249\n\t\"\\x00=\\x038\\x00\\x00\\\"`\" + // 0x003D0338: 0x00002260\n\t\"\\\"a\\x038\\x00\\x00\\\"b\" + // 0x22610338: 0x00002262\n\t\"\\\"M\\x038\\x00\\x00\\\"m\" + // 0x224D0338: 0x0000226D\n\t\"\\x00<\\x038\\x00\\x00\\\"n\" + // 0x003C0338: 0x0000226E\n\t\"\\x00>\\x038\\x00\\x00\\\"o\" + // 0x003E0338: 0x0000226F\n\t\"\\\"d\\x038\\x00\\x00\\\"p\" + // 0x22640338: 0x00002270\n\t\"\\\"e\\x038\\x00\\x00\\\"q\" + // 0x22650338: 0x00002271\n\t\"\\\"r\\x038\\x00\\x00\\\"t\" + // 0x22720338: 0x00002274\n\t\"\\\"s\\x038\\x00\\x00\\\"u\" + // 0x22730338: 0x00002275\n\t\"\\\"v\\x038\\x00\\x00\\\"x\" + // 0x22760338: 0x00002278\n\t\"\\\"w\\x038\\x00\\x00\\\"y\" + // 0x22770338: 0x00002279\n\t\"\\\"z\\x038\\x00\\x00\\\"\\x80\" + // 0x227A0338: 0x00002280\n\t\"\\\"{\\x038\\x00\\x00\\\"\\x81\" + // 0x227B0338: 0x00002281\n\t\"\\\"\\x82\\x038\\x00\\x00\\\"\\x84\" + // 0x22820338: 0x00002284\n\t\"\\\"\\x83\\x038\\x00\\x00\\\"\\x85\" + // 0x22830338: 0x00002285\n\t\"\\\"\\x86\\x038\\x00\\x00\\\"\\x88\" + // 0x22860338: 0x00002288\n\t\"\\\"\\x87\\x038\\x00\\x00\\\"\\x89\" + // 0x22870338: 0x00002289\n\t\"\\\"\\xa2\\x038\\x00\\x00\\\"\\xac\" + // 0x22A20338: 0x000022AC\n\t\"\\\"\\xa8\\x038\\x00\\x00\\\"\\xad\" + // 0x22A80338: 0x000022AD\n\t\"\\\"\\xa9\\x038\\x00\\x00\\\"\\xae\" + // 0x22A90338: 0x000022AE\n\t\"\\\"\\xab\\x038\\x00\\x00\\\"\\xaf\" + // 0x22AB0338: 0x000022AF\n\t\"\\\"|\\x038\\x00\\x00\\\"\\xe0\" + // 0x227C0338: 0x000022E0\n\t\"\\\"}\\x038\\x00\\x00\\\"\\xe1\" + // 0x227D0338: 0x000022E1\n\t\"\\\"\\x91\\x038\\x00\\x00\\\"\\xe2\" + // 0x22910338: 0x000022E2\n\t\"\\\"\\x92\\x038\\x00\\x00\\\"\\xe3\" + // 0x22920338: 0x000022E3\n\t\"\\\"\\xb2\\x038\\x00\\x00\\\"\\xea\" + // 0x22B20338: 0x000022EA\n\t\"\\\"\\xb3\\x038\\x00\\x00\\\"\\xeb\" + // 0x22B30338: 0x000022EB\n\t\"\\\"\\xb4\\x038\\x00\\x00\\\"\\xec\" + // 0x22B40338: 0x000022EC\n\t\"\\\"\\xb5\\x038\\x00\\x00\\\"\\xed\" + // 0x22B50338: 0x000022ED\n\t\"0K0\\x99\\x00\\x000L\" + // 0x304B3099: 0x0000304C\n\t\"0M0\\x99\\x00\\x000N\" + // 0x304D3099: 0x0000304E\n\t\"0O0\\x99\\x00\\x000P\" + // 0x304F3099: 0x00003050\n\t\"0Q0\\x99\\x00\\x000R\" + // 0x30513099: 0x00003052\n\t\"0S0\\x99\\x00\\x000T\" + // 0x30533099: 0x00003054\n\t\"0U0\\x99\\x00\\x000V\" + // 0x30553099: 0x00003056\n\t\"0W0\\x99\\x00\\x000X\" + // 0x30573099: 0x00003058\n\t\"0Y0\\x99\\x00\\x000Z\" + // 0x30593099: 0x0000305A\n\t\"0[0\\x99\\x00\\x000\\\\\" + // 0x305B3099: 0x0000305C\n\t\"0]0\\x99\\x00\\x000^\" + // 0x305D3099: 0x0000305E\n\t\"0_0\\x99\\x00\\x000`\" + // 0x305F3099: 0x00003060\n\t\"0a0\\x99\\x00\\x000b\" + // 0x30613099: 0x00003062\n\t\"0d0\\x99\\x00\\x000e\" + // 0x30643099: 0x00003065\n\t\"0f0\\x99\\x00\\x000g\" + // 0x30663099: 0x00003067\n\t\"0h0\\x99\\x00\\x000i\" + // 0x30683099: 0x00003069\n\t\"0o0\\x99\\x00\\x000p\" + // 0x306F3099: 0x00003070\n\t\"0o0\\x9a\\x00\\x000q\" + // 0x306F309A: 0x00003071\n\t\"0r0\\x99\\x00\\x000s\" + // 0x30723099: 0x00003073\n\t\"0r0\\x9a\\x00\\x000t\" + // 0x3072309A: 0x00003074\n\t\"0u0\\x99\\x00\\x000v\" + // 0x30753099: 0x00003076\n\t\"0u0\\x9a\\x00\\x000w\" + // 0x3075309A: 0x00003077\n\t\"0x0\\x99\\x00\\x000y\" + // 0x30783099: 0x00003079\n\t\"0x0\\x9a\\x00\\x000z\" + // 0x3078309A: 0x0000307A\n\t\"0{0\\x99\\x00\\x000|\" + // 0x307B3099: 0x0000307C\n\t\"0{0\\x9a\\x00\\x000}\" + // 0x307B309A: 0x0000307D\n\t\"0F0\\x99\\x00\\x000\\x94\" + // 0x30463099: 0x00003094\n\t\"0\\x9d0\\x99\\x00\\x000\\x9e\" + // 0x309D3099: 0x0000309E\n\t\"0\\xab0\\x99\\x00\\x000\\xac\" + // 0x30AB3099: 0x000030AC\n\t\"0\\xad0\\x99\\x00\\x000\\xae\" + // 0x30AD3099: 0x000030AE\n\t\"0\\xaf0\\x99\\x00\\x000\\xb0\" + // 0x30AF3099: 0x000030B0\n\t\"0\\xb10\\x99\\x00\\x000\\xb2\" + // 0x30B13099: 0x000030B2\n\t\"0\\xb30\\x99\\x00\\x000\\xb4\" + // 0x30B33099: 0x000030B4\n\t\"0\\xb50\\x99\\x00\\x000\\xb6\" + // 0x30B53099: 0x000030B6\n\t\"0\\xb70\\x99\\x00\\x000\\xb8\" + // 0x30B73099: 0x000030B8\n\t\"0\\xb90\\x99\\x00\\x000\\xba\" + // 0x30B93099: 0x000030BA\n\t\"0\\xbb0\\x99\\x00\\x000\\xbc\" + // 0x30BB3099: 0x000030BC\n\t\"0\\xbd0\\x99\\x00\\x000\\xbe\" + // 0x30BD3099: 0x000030BE\n\t\"0\\xbf0\\x99\\x00\\x000\\xc0\" + // 0x30BF3099: 0x000030C0\n\t\"0\\xc10\\x99\\x00\\x000\\xc2\" + // 0x30C13099: 0x000030C2\n\t\"0\\xc40\\x99\\x00\\x000\\xc5\" + // 0x30C43099: 0x000030C5\n\t\"0\\xc60\\x99\\x00\\x000\\xc7\" + // 0x30C63099: 0x000030C7\n\t\"0\\xc80\\x99\\x00\\x000\\xc9\" + // 0x30C83099: 0x000030C9\n\t\"0\\xcf0\\x99\\x00\\x000\\xd0\" + // 0x30CF3099: 0x000030D0\n\t\"0\\xcf0\\x9a\\x00\\x000\\xd1\" + // 0x30CF309A: 0x000030D1\n\t\"0\\xd20\\x99\\x00\\x000\\xd3\" + // 0x30D23099: 0x000030D3\n\t\"0\\xd20\\x9a\\x00\\x000\\xd4\" + // 0x30D2309A: 0x000030D4\n\t\"0\\xd50\\x99\\x00\\x000\\xd6\" + // 0x30D53099: 0x000030D6\n\t\"0\\xd50\\x9a\\x00\\x000\\xd7\" + // 0x30D5309A: 0x000030D7\n\t\"0\\xd80\\x99\\x00\\x000\\xd9\" + // 0x30D83099: 0x000030D9\n\t\"0\\xd80\\x9a\\x00\\x000\\xda\" + // 0x30D8309A: 0x000030DA\n\t\"0\\xdb0\\x99\\x00\\x000\\xdc\" + // 0x30DB3099: 0x000030DC\n\t\"0\\xdb0\\x9a\\x00\\x000\\xdd\" + // 0x30DB309A: 0x000030DD\n\t\"0\\xa60\\x99\\x00\\x000\\xf4\" + // 0x30A63099: 0x000030F4\n\t\"0\\xef0\\x99\\x00\\x000\\xf7\" + // 0x30EF3099: 0x000030F7\n\t\"0\\xf00\\x99\\x00\\x000\\xf8\" + // 0x30F03099: 0x000030F8\n\t\"0\\xf10\\x99\\x00\\x000\\xf9\" + // 0x30F13099: 0x000030F9\n\t\"0\\xf20\\x99\\x00\\x000\\xfa\" + // 0x30F23099: 0x000030FA\n\t\"0\\xfd0\\x99\\x00\\x000\\xfe\" + // 0x30FD3099: 0x000030FE\n\t\"\\x10\\x99\\x10\\xba\\x00\\x01\\x10\\x9a\" + // 0x109910BA: 0x0001109A\n\t\"\\x10\\x9b\\x10\\xba\\x00\\x01\\x10\\x9c\" + // 0x109B10BA: 0x0001109C\n\t\"\\x10\\xa5\\x10\\xba\\x00\\x01\\x10\\xab\" + // 0x10A510BA: 0x000110AB\n\t\"\\x111\\x11'\\x00\\x01\\x11.\" + // 0x11311127: 0x0001112E\n\t\"\\x112\\x11'\\x00\\x01\\x11/\" + // 0x11321127: 0x0001112F\n\t\"\\x13G\\x13>\\x00\\x01\\x13K\" + // 0x1347133E: 0x0001134B\n\t\"\\x13G\\x13W\\x00\\x01\\x13L\" + // 0x13471357: 0x0001134C\n\t\"\\x14\\xb9\\x14\\xba\\x00\\x01\\x14\\xbb\" + // 0x14B914BA: 0x000114BB\n\t\"\\x14\\xb9\\x14\\xb0\\x00\\x01\\x14\\xbc\" + // 0x14B914B0: 0x000114BC\n\t\"\\x14\\xb9\\x14\\xbd\\x00\\x01\\x14\\xbe\" + // 0x14B914BD: 0x000114BE\n\t\"\\x15\\xb8\\x15\\xaf\\x00\\x01\\x15\\xba\" + // 0x15B815AF: 0x000115BA\n\t\"\\x15\\xb9\\x15\\xaf\\x00\\x01\\x15\\xbb\" + // 0x15B915AF: 0x000115BB\n\t\"\\x195\\x190\\x00\\x01\\x198\" + // 0x19351930: 0x00011938\n\t\"\"\n\t// Total size of tables: 55KB (56160 bytes)\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/tables15.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build go1.21\n\npackage norm\n\nimport \"sync\"\n\nconst (\n\t// Version is the Unicode edition from which the tables are derived.\n\tVersion = \"15.0.0\"\n\n\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform\n\t// may need to write atomically for any Form. Making a destination buffer at\n\t// least this size ensures that Transform can always make progress and that\n\t// the user does not need to grow the buffer on an ErrShortDst.\n\tMaxTransformChunkSize = 35 + maxNonStarters*4\n)\n\nvar ccc = [56]uint8{\n\t0, 1, 6, 7, 8, 9, 10, 11,\n\t12, 13, 14, 15, 16, 17, 18, 19,\n\t20, 21, 22, 23, 24, 25, 26, 27,\n\t28, 29, 30, 31, 32, 33, 34, 35,\n\t36, 84, 91, 103, 107, 118, 122, 129,\n\t130, 132, 202, 214, 216, 218, 220, 222,\n\t224, 226, 228, 230, 232, 233, 234, 240,\n}\n\nconst (\n\tfirstMulti            = 0x199A\n\tfirstCCC              = 0x2DD5\n\tendMulti              = 0x30A1\n\tfirstLeadingCCC       = 0x4AEF\n\tfirstCCCZeroExcept    = 0x4BB9\n\tfirstStarterWithNLead = 0x4BE0\n\tlastDecomp            = 0x4BE2\n\tmaxDecomp             = 0x8000\n)\n\n// decomps: 19426 bytes\nvar decomps = [...]byte{\n\t// Bytes 0 - 3f\n\t0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,\n\t0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41,\n\t0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41,\n\t0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41,\n\t0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41,\n\t0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41,\n\t0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41,\n\t0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41,\n\t// Bytes 40 - 7f\n\t0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41,\n\t0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41,\n\t0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41,\n\t0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41,\n\t0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41,\n\t0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41,\n\t0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41,\n\t0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41,\n\t// Bytes 80 - bf\n\t0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41,\n\t0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41,\n\t0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41,\n\t0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41,\n\t0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41,\n\t0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41,\n\t0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41,\n\t0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42,\n\t// Bytes c0 - ff\n\t0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5,\n\t0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2,\n\t0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xA6, 0x42,\n\t0xC3, 0xB0, 0x42, 0xC3, 0xB8, 0x42, 0xC4, 0xA6,\n\t0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1, 0x42, 0xC5,\n\t0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6, 0x8E, 0x42,\n\t0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42, 0xC7, 0x80,\n\t0x42, 0xC7, 0x81, 0x42, 0xC7, 0x82, 0x42, 0xC8,\n\t// Bytes 100 - 13f\n\t0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90, 0x42,\n\t0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9, 0x93,\n\t0x42, 0xC9, 0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9,\n\t0x96, 0x42, 0xC9, 0x97, 0x42, 0xC9, 0x98, 0x42,\n\t0xC9, 0x99, 0x42, 0xC9, 0x9B, 0x42, 0xC9, 0x9C,\n\t0x42, 0xC9, 0x9E, 0x42, 0xC9, 0x9F, 0x42, 0xC9,\n\t0xA0, 0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA2, 0x42,\n\t0xC9, 0xA3, 0x42, 0xC9, 0xA4, 0x42, 0xC9, 0xA5,\n\t// Bytes 140 - 17f\n\t0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA7, 0x42, 0xC9,\n\t0xA8, 0x42, 0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42,\n\t0xC9, 0xAB, 0x42, 0xC9, 0xAC, 0x42, 0xC9, 0xAD,\n\t0x42, 0xC9, 0xAE, 0x42, 0xC9, 0xAF, 0x42, 0xC9,\n\t0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42,\n\t0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5,\n\t0x42, 0xC9, 0xB6, 0x42, 0xC9, 0xB7, 0x42, 0xC9,\n\t0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9, 0xBA, 0x42,\n\t// Bytes 180 - 1bf\n\t0xC9, 0xBB, 0x42, 0xC9, 0xBD, 0x42, 0xC9, 0xBE,\n\t0x42, 0xCA, 0x80, 0x42, 0xCA, 0x81, 0x42, 0xCA,\n\t0x82, 0x42, 0xCA, 0x83, 0x42, 0xCA, 0x84, 0x42,\n\t0xCA, 0x88, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A,\n\t0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA,\n\t0x8D, 0x42, 0xCA, 0x8E, 0x42, 0xCA, 0x8F, 0x42,\n\t0xCA, 0x90, 0x42, 0xCA, 0x91, 0x42, 0xCA, 0x92,\n\t0x42, 0xCA, 0x95, 0x42, 0xCA, 0x98, 0x42, 0xCA,\n\t// Bytes 1c0 - 1ff\n\t0x99, 0x42, 0xCA, 0x9B, 0x42, 0xCA, 0x9C, 0x42,\n\t0xCA, 0x9D, 0x42, 0xCA, 0x9F, 0x42, 0xCA, 0xA1,\n\t0x42, 0xCA, 0xA2, 0x42, 0xCA, 0xA3, 0x42, 0xCA,\n\t0xA4, 0x42, 0xCA, 0xA5, 0x42, 0xCA, 0xA6, 0x42,\n\t0xCA, 0xA7, 0x42, 0xCA, 0xA8, 0x42, 0xCA, 0xA9,\n\t0x42, 0xCA, 0xAA, 0x42, 0xCA, 0xAB, 0x42, 0xCA,\n\t0xB9, 0x42, 0xCB, 0x90, 0x42, 0xCB, 0x91, 0x42,\n\t0xCE, 0x91, 0x42, 0xCE, 0x92, 0x42, 0xCE, 0x93,\n\t// Bytes 200 - 23f\n\t0x42, 0xCE, 0x94, 0x42, 0xCE, 0x95, 0x42, 0xCE,\n\t0x96, 0x42, 0xCE, 0x97, 0x42, 0xCE, 0x98, 0x42,\n\t0xCE, 0x99, 0x42, 0xCE, 0x9A, 0x42, 0xCE, 0x9B,\n\t0x42, 0xCE, 0x9C, 0x42, 0xCE, 0x9D, 0x42, 0xCE,\n\t0x9E, 0x42, 0xCE, 0x9F, 0x42, 0xCE, 0xA0, 0x42,\n\t0xCE, 0xA1, 0x42, 0xCE, 0xA3, 0x42, 0xCE, 0xA4,\n\t0x42, 0xCE, 0xA5, 0x42, 0xCE, 0xA6, 0x42, 0xCE,\n\t0xA7, 0x42, 0xCE, 0xA8, 0x42, 0xCE, 0xA9, 0x42,\n\t// Bytes 240 - 27f\n\t0xCE, 0xB1, 0x42, 0xCE, 0xB2, 0x42, 0xCE, 0xB3,\n\t0x42, 0xCE, 0xB4, 0x42, 0xCE, 0xB5, 0x42, 0xCE,\n\t0xB6, 0x42, 0xCE, 0xB7, 0x42, 0xCE, 0xB8, 0x42,\n\t0xCE, 0xB9, 0x42, 0xCE, 0xBA, 0x42, 0xCE, 0xBB,\n\t0x42, 0xCE, 0xBC, 0x42, 0xCE, 0xBD, 0x42, 0xCE,\n\t0xBE, 0x42, 0xCE, 0xBF, 0x42, 0xCF, 0x80, 0x42,\n\t0xCF, 0x81, 0x42, 0xCF, 0x82, 0x42, 0xCF, 0x83,\n\t0x42, 0xCF, 0x84, 0x42, 0xCF, 0x85, 0x42, 0xCF,\n\t// Bytes 280 - 2bf\n\t0x86, 0x42, 0xCF, 0x87, 0x42, 0xCF, 0x88, 0x42,\n\t0xCF, 0x89, 0x42, 0xCF, 0x9C, 0x42, 0xCF, 0x9D,\n\t0x42, 0xD0, 0xB0, 0x42, 0xD0, 0xB1, 0x42, 0xD0,\n\t0xB2, 0x42, 0xD0, 0xB3, 0x42, 0xD0, 0xB4, 0x42,\n\t0xD0, 0xB5, 0x42, 0xD0, 0xB6, 0x42, 0xD0, 0xB7,\n\t0x42, 0xD0, 0xB8, 0x42, 0xD0, 0xBA, 0x42, 0xD0,\n\t0xBB, 0x42, 0xD0, 0xBC, 0x42, 0xD0, 0xBD, 0x42,\n\t0xD0, 0xBE, 0x42, 0xD0, 0xBF, 0x42, 0xD1, 0x80,\n\t// Bytes 2c0 - 2ff\n\t0x42, 0xD1, 0x81, 0x42, 0xD1, 0x82, 0x42, 0xD1,\n\t0x83, 0x42, 0xD1, 0x84, 0x42, 0xD1, 0x85, 0x42,\n\t0xD1, 0x86, 0x42, 0xD1, 0x87, 0x42, 0xD1, 0x88,\n\t0x42, 0xD1, 0x8A, 0x42, 0xD1, 0x8B, 0x42, 0xD1,\n\t0x8C, 0x42, 0xD1, 0x8D, 0x42, 0xD1, 0x8E, 0x42,\n\t0xD1, 0x95, 0x42, 0xD1, 0x96, 0x42, 0xD1, 0x98,\n\t0x42, 0xD1, 0x9F, 0x42, 0xD2, 0x91, 0x42, 0xD2,\n\t0xAB, 0x42, 0xD2, 0xAF, 0x42, 0xD2, 0xB1, 0x42,\n\t// Bytes 300 - 33f\n\t0xD3, 0x8F, 0x42, 0xD3, 0x99, 0x42, 0xD3, 0xA9,\n\t0x42, 0xD7, 0x90, 0x42, 0xD7, 0x91, 0x42, 0xD7,\n\t0x92, 0x42, 0xD7, 0x93, 0x42, 0xD7, 0x94, 0x42,\n\t0xD7, 0x9B, 0x42, 0xD7, 0x9C, 0x42, 0xD7, 0x9D,\n\t0x42, 0xD7, 0xA2, 0x42, 0xD7, 0xA8, 0x42, 0xD7,\n\t0xAA, 0x42, 0xD8, 0xA1, 0x42, 0xD8, 0xA7, 0x42,\n\t0xD8, 0xA8, 0x42, 0xD8, 0xA9, 0x42, 0xD8, 0xAA,\n\t0x42, 0xD8, 0xAB, 0x42, 0xD8, 0xAC, 0x42, 0xD8,\n\t// Bytes 340 - 37f\n\t0xAD, 0x42, 0xD8, 0xAE, 0x42, 0xD8, 0xAF, 0x42,\n\t0xD8, 0xB0, 0x42, 0xD8, 0xB1, 0x42, 0xD8, 0xB2,\n\t0x42, 0xD8, 0xB3, 0x42, 0xD8, 0xB4, 0x42, 0xD8,\n\t0xB5, 0x42, 0xD8, 0xB6, 0x42, 0xD8, 0xB7, 0x42,\n\t0xD8, 0xB8, 0x42, 0xD8, 0xB9, 0x42, 0xD8, 0xBA,\n\t0x42, 0xD9, 0x81, 0x42, 0xD9, 0x82, 0x42, 0xD9,\n\t0x83, 0x42, 0xD9, 0x84, 0x42, 0xD9, 0x85, 0x42,\n\t0xD9, 0x86, 0x42, 0xD9, 0x87, 0x42, 0xD9, 0x88,\n\t// Bytes 380 - 3bf\n\t0x42, 0xD9, 0x89, 0x42, 0xD9, 0x8A, 0x42, 0xD9,\n\t0xAE, 0x42, 0xD9, 0xAF, 0x42, 0xD9, 0xB1, 0x42,\n\t0xD9, 0xB9, 0x42, 0xD9, 0xBA, 0x42, 0xD9, 0xBB,\n\t0x42, 0xD9, 0xBE, 0x42, 0xD9, 0xBF, 0x42, 0xDA,\n\t0x80, 0x42, 0xDA, 0x83, 0x42, 0xDA, 0x84, 0x42,\n\t0xDA, 0x86, 0x42, 0xDA, 0x87, 0x42, 0xDA, 0x88,\n\t0x42, 0xDA, 0x8C, 0x42, 0xDA, 0x8D, 0x42, 0xDA,\n\t0x8E, 0x42, 0xDA, 0x91, 0x42, 0xDA, 0x98, 0x42,\n\t// Bytes 3c0 - 3ff\n\t0xDA, 0xA1, 0x42, 0xDA, 0xA4, 0x42, 0xDA, 0xA6,\n\t0x42, 0xDA, 0xA9, 0x42, 0xDA, 0xAD, 0x42, 0xDA,\n\t0xAF, 0x42, 0xDA, 0xB1, 0x42, 0xDA, 0xB3, 0x42,\n\t0xDA, 0xBA, 0x42, 0xDA, 0xBB, 0x42, 0xDA, 0xBE,\n\t0x42, 0xDB, 0x81, 0x42, 0xDB, 0x85, 0x42, 0xDB,\n\t0x86, 0x42, 0xDB, 0x87, 0x42, 0xDB, 0x88, 0x42,\n\t0xDB, 0x89, 0x42, 0xDB, 0x8B, 0x42, 0xDB, 0x8C,\n\t0x42, 0xDB, 0x90, 0x42, 0xDB, 0x92, 0x43, 0xE0,\n\t// Bytes 400 - 43f\n\t0xBC, 0x8B, 0x43, 0xE1, 0x83, 0x9C, 0x43, 0xE1,\n\t0x84, 0x80, 0x43, 0xE1, 0x84, 0x81, 0x43, 0xE1,\n\t0x84, 0x82, 0x43, 0xE1, 0x84, 0x83, 0x43, 0xE1,\n\t0x84, 0x84, 0x43, 0xE1, 0x84, 0x85, 0x43, 0xE1,\n\t0x84, 0x86, 0x43, 0xE1, 0x84, 0x87, 0x43, 0xE1,\n\t0x84, 0x88, 0x43, 0xE1, 0x84, 0x89, 0x43, 0xE1,\n\t0x84, 0x8A, 0x43, 0xE1, 0x84, 0x8B, 0x43, 0xE1,\n\t0x84, 0x8C, 0x43, 0xE1, 0x84, 0x8D, 0x43, 0xE1,\n\t// Bytes 440 - 47f\n\t0x84, 0x8E, 0x43, 0xE1, 0x84, 0x8F, 0x43, 0xE1,\n\t0x84, 0x90, 0x43, 0xE1, 0x84, 0x91, 0x43, 0xE1,\n\t0x84, 0x92, 0x43, 0xE1, 0x84, 0x94, 0x43, 0xE1,\n\t0x84, 0x95, 0x43, 0xE1, 0x84, 0x9A, 0x43, 0xE1,\n\t0x84, 0x9C, 0x43, 0xE1, 0x84, 0x9D, 0x43, 0xE1,\n\t0x84, 0x9E, 0x43, 0xE1, 0x84, 0xA0, 0x43, 0xE1,\n\t0x84, 0xA1, 0x43, 0xE1, 0x84, 0xA2, 0x43, 0xE1,\n\t0x84, 0xA3, 0x43, 0xE1, 0x84, 0xA7, 0x43, 0xE1,\n\t// Bytes 480 - 4bf\n\t0x84, 0xA9, 0x43, 0xE1, 0x84, 0xAB, 0x43, 0xE1,\n\t0x84, 0xAC, 0x43, 0xE1, 0x84, 0xAD, 0x43, 0xE1,\n\t0x84, 0xAE, 0x43, 0xE1, 0x84, 0xAF, 0x43, 0xE1,\n\t0x84, 0xB2, 0x43, 0xE1, 0x84, 0xB6, 0x43, 0xE1,\n\t0x85, 0x80, 0x43, 0xE1, 0x85, 0x87, 0x43, 0xE1,\n\t0x85, 0x8C, 0x43, 0xE1, 0x85, 0x97, 0x43, 0xE1,\n\t0x85, 0x98, 0x43, 0xE1, 0x85, 0x99, 0x43, 0xE1,\n\t0x85, 0xA0, 0x43, 0xE1, 0x86, 0x84, 0x43, 0xE1,\n\t// Bytes 4c0 - 4ff\n\t0x86, 0x85, 0x43, 0xE1, 0x86, 0x88, 0x43, 0xE1,\n\t0x86, 0x91, 0x43, 0xE1, 0x86, 0x92, 0x43, 0xE1,\n\t0x86, 0x94, 0x43, 0xE1, 0x86, 0x9E, 0x43, 0xE1,\n\t0x86, 0xA1, 0x43, 0xE1, 0x87, 0x87, 0x43, 0xE1,\n\t0x87, 0x88, 0x43, 0xE1, 0x87, 0x8C, 0x43, 0xE1,\n\t0x87, 0x8E, 0x43, 0xE1, 0x87, 0x93, 0x43, 0xE1,\n\t0x87, 0x97, 0x43, 0xE1, 0x87, 0x99, 0x43, 0xE1,\n\t0x87, 0x9D, 0x43, 0xE1, 0x87, 0x9F, 0x43, 0xE1,\n\t// Bytes 500 - 53f\n\t0x87, 0xB1, 0x43, 0xE1, 0x87, 0xB2, 0x43, 0xE1,\n\t0xB4, 0x82, 0x43, 0xE1, 0xB4, 0x96, 0x43, 0xE1,\n\t0xB4, 0x97, 0x43, 0xE1, 0xB4, 0x9C, 0x43, 0xE1,\n\t0xB4, 0x9D, 0x43, 0xE1, 0xB4, 0xA5, 0x43, 0xE1,\n\t0xB5, 0xBB, 0x43, 0xE1, 0xB6, 0x85, 0x43, 0xE1,\n\t0xB6, 0x91, 0x43, 0xE2, 0x80, 0x82, 0x43, 0xE2,\n\t0x80, 0x83, 0x43, 0xE2, 0x80, 0x90, 0x43, 0xE2,\n\t0x80, 0x93, 0x43, 0xE2, 0x80, 0x94, 0x43, 0xE2,\n\t// Bytes 540 - 57f\n\t0x82, 0xA9, 0x43, 0xE2, 0x86, 0x90, 0x43, 0xE2,\n\t0x86, 0x91, 0x43, 0xE2, 0x86, 0x92, 0x43, 0xE2,\n\t0x86, 0x93, 0x43, 0xE2, 0x88, 0x82, 0x43, 0xE2,\n\t0x88, 0x87, 0x43, 0xE2, 0x88, 0x91, 0x43, 0xE2,\n\t0x88, 0x92, 0x43, 0xE2, 0x94, 0x82, 0x43, 0xE2,\n\t0x96, 0xA0, 0x43, 0xE2, 0x97, 0x8B, 0x43, 0xE2,\n\t0xA6, 0x85, 0x43, 0xE2, 0xA6, 0x86, 0x43, 0xE2,\n\t0xB1, 0xB1, 0x43, 0xE2, 0xB5, 0xA1, 0x43, 0xE3,\n\t// Bytes 580 - 5bf\n\t0x80, 0x81, 0x43, 0xE3, 0x80, 0x82, 0x43, 0xE3,\n\t0x80, 0x88, 0x43, 0xE3, 0x80, 0x89, 0x43, 0xE3,\n\t0x80, 0x8A, 0x43, 0xE3, 0x80, 0x8B, 0x43, 0xE3,\n\t0x80, 0x8C, 0x43, 0xE3, 0x80, 0x8D, 0x43, 0xE3,\n\t0x80, 0x8E, 0x43, 0xE3, 0x80, 0x8F, 0x43, 0xE3,\n\t0x80, 0x90, 0x43, 0xE3, 0x80, 0x91, 0x43, 0xE3,\n\t0x80, 0x92, 0x43, 0xE3, 0x80, 0x94, 0x43, 0xE3,\n\t0x80, 0x95, 0x43, 0xE3, 0x80, 0x96, 0x43, 0xE3,\n\t// Bytes 5c0 - 5ff\n\t0x80, 0x97, 0x43, 0xE3, 0x82, 0xA1, 0x43, 0xE3,\n\t0x82, 0xA2, 0x43, 0xE3, 0x82, 0xA3, 0x43, 0xE3,\n\t0x82, 0xA4, 0x43, 0xE3, 0x82, 0xA5, 0x43, 0xE3,\n\t0x82, 0xA6, 0x43, 0xE3, 0x82, 0xA7, 0x43, 0xE3,\n\t0x82, 0xA8, 0x43, 0xE3, 0x82, 0xA9, 0x43, 0xE3,\n\t0x82, 0xAA, 0x43, 0xE3, 0x82, 0xAB, 0x43, 0xE3,\n\t0x82, 0xAD, 0x43, 0xE3, 0x82, 0xAF, 0x43, 0xE3,\n\t0x82, 0xB1, 0x43, 0xE3, 0x82, 0xB3, 0x43, 0xE3,\n\t// Bytes 600 - 63f\n\t0x82, 0xB5, 0x43, 0xE3, 0x82, 0xB7, 0x43, 0xE3,\n\t0x82, 0xB9, 0x43, 0xE3, 0x82, 0xBB, 0x43, 0xE3,\n\t0x82, 0xBD, 0x43, 0xE3, 0x82, 0xBF, 0x43, 0xE3,\n\t0x83, 0x81, 0x43, 0xE3, 0x83, 0x83, 0x43, 0xE3,\n\t0x83, 0x84, 0x43, 0xE3, 0x83, 0x86, 0x43, 0xE3,\n\t0x83, 0x88, 0x43, 0xE3, 0x83, 0x8A, 0x43, 0xE3,\n\t0x83, 0x8B, 0x43, 0xE3, 0x83, 0x8C, 0x43, 0xE3,\n\t0x83, 0x8D, 0x43, 0xE3, 0x83, 0x8E, 0x43, 0xE3,\n\t// Bytes 640 - 67f\n\t0x83, 0x8F, 0x43, 0xE3, 0x83, 0x92, 0x43, 0xE3,\n\t0x83, 0x95, 0x43, 0xE3, 0x83, 0x98, 0x43, 0xE3,\n\t0x83, 0x9B, 0x43, 0xE3, 0x83, 0x9E, 0x43, 0xE3,\n\t0x83, 0x9F, 0x43, 0xE3, 0x83, 0xA0, 0x43, 0xE3,\n\t0x83, 0xA1, 0x43, 0xE3, 0x83, 0xA2, 0x43, 0xE3,\n\t0x83, 0xA3, 0x43, 0xE3, 0x83, 0xA4, 0x43, 0xE3,\n\t0x83, 0xA5, 0x43, 0xE3, 0x83, 0xA6, 0x43, 0xE3,\n\t0x83, 0xA7, 0x43, 0xE3, 0x83, 0xA8, 0x43, 0xE3,\n\t// Bytes 680 - 6bf\n\t0x83, 0xA9, 0x43, 0xE3, 0x83, 0xAA, 0x43, 0xE3,\n\t0x83, 0xAB, 0x43, 0xE3, 0x83, 0xAC, 0x43, 0xE3,\n\t0x83, 0xAD, 0x43, 0xE3, 0x83, 0xAF, 0x43, 0xE3,\n\t0x83, 0xB0, 0x43, 0xE3, 0x83, 0xB1, 0x43, 0xE3,\n\t0x83, 0xB2, 0x43, 0xE3, 0x83, 0xB3, 0x43, 0xE3,\n\t0x83, 0xBB, 0x43, 0xE3, 0x83, 0xBC, 0x43, 0xE3,\n\t0x92, 0x9E, 0x43, 0xE3, 0x92, 0xB9, 0x43, 0xE3,\n\t0x92, 0xBB, 0x43, 0xE3, 0x93, 0x9F, 0x43, 0xE3,\n\t// Bytes 6c0 - 6ff\n\t0x94, 0x95, 0x43, 0xE3, 0x9B, 0xAE, 0x43, 0xE3,\n\t0x9B, 0xBC, 0x43, 0xE3, 0x9E, 0x81, 0x43, 0xE3,\n\t0xA0, 0xAF, 0x43, 0xE3, 0xA1, 0xA2, 0x43, 0xE3,\n\t0xA1, 0xBC, 0x43, 0xE3, 0xA3, 0x87, 0x43, 0xE3,\n\t0xA3, 0xA3, 0x43, 0xE3, 0xA4, 0x9C, 0x43, 0xE3,\n\t0xA4, 0xBA, 0x43, 0xE3, 0xA8, 0xAE, 0x43, 0xE3,\n\t0xA9, 0xAC, 0x43, 0xE3, 0xAB, 0xA4, 0x43, 0xE3,\n\t0xAC, 0x88, 0x43, 0xE3, 0xAC, 0x99, 0x43, 0xE3,\n\t// Bytes 700 - 73f\n\t0xAD, 0x89, 0x43, 0xE3, 0xAE, 0x9D, 0x43, 0xE3,\n\t0xB0, 0x98, 0x43, 0xE3, 0xB1, 0x8E, 0x43, 0xE3,\n\t0xB4, 0xB3, 0x43, 0xE3, 0xB6, 0x96, 0x43, 0xE3,\n\t0xBA, 0xAC, 0x43, 0xE3, 0xBA, 0xB8, 0x43, 0xE3,\n\t0xBC, 0x9B, 0x43, 0xE3, 0xBF, 0xBC, 0x43, 0xE4,\n\t0x80, 0x88, 0x43, 0xE4, 0x80, 0x98, 0x43, 0xE4,\n\t0x80, 0xB9, 0x43, 0xE4, 0x81, 0x86, 0x43, 0xE4,\n\t0x82, 0x96, 0x43, 0xE4, 0x83, 0xA3, 0x43, 0xE4,\n\t// Bytes 740 - 77f\n\t0x84, 0xAF, 0x43, 0xE4, 0x88, 0x82, 0x43, 0xE4,\n\t0x88, 0xA7, 0x43, 0xE4, 0x8A, 0xA0, 0x43, 0xE4,\n\t0x8C, 0x81, 0x43, 0xE4, 0x8C, 0xB4, 0x43, 0xE4,\n\t0x8D, 0x99, 0x43, 0xE4, 0x8F, 0x95, 0x43, 0xE4,\n\t0x8F, 0x99, 0x43, 0xE4, 0x90, 0x8B, 0x43, 0xE4,\n\t0x91, 0xAB, 0x43, 0xE4, 0x94, 0xAB, 0x43, 0xE4,\n\t0x95, 0x9D, 0x43, 0xE4, 0x95, 0xA1, 0x43, 0xE4,\n\t0x95, 0xAB, 0x43, 0xE4, 0x97, 0x97, 0x43, 0xE4,\n\t// Bytes 780 - 7bf\n\t0x97, 0xB9, 0x43, 0xE4, 0x98, 0xB5, 0x43, 0xE4,\n\t0x9A, 0xBE, 0x43, 0xE4, 0x9B, 0x87, 0x43, 0xE4,\n\t0xA6, 0x95, 0x43, 0xE4, 0xA7, 0xA6, 0x43, 0xE4,\n\t0xA9, 0xAE, 0x43, 0xE4, 0xA9, 0xB6, 0x43, 0xE4,\n\t0xAA, 0xB2, 0x43, 0xE4, 0xAC, 0xB3, 0x43, 0xE4,\n\t0xAF, 0x8E, 0x43, 0xE4, 0xB3, 0x8E, 0x43, 0xE4,\n\t0xB3, 0xAD, 0x43, 0xE4, 0xB3, 0xB8, 0x43, 0xE4,\n\t0xB5, 0x96, 0x43, 0xE4, 0xB8, 0x80, 0x43, 0xE4,\n\t// Bytes 7c0 - 7ff\n\t0xB8, 0x81, 0x43, 0xE4, 0xB8, 0x83, 0x43, 0xE4,\n\t0xB8, 0x89, 0x43, 0xE4, 0xB8, 0x8A, 0x43, 0xE4,\n\t0xB8, 0x8B, 0x43, 0xE4, 0xB8, 0x8D, 0x43, 0xE4,\n\t0xB8, 0x99, 0x43, 0xE4, 0xB8, 0xA6, 0x43, 0xE4,\n\t0xB8, 0xA8, 0x43, 0xE4, 0xB8, 0xAD, 0x43, 0xE4,\n\t0xB8, 0xB2, 0x43, 0xE4, 0xB8, 0xB6, 0x43, 0xE4,\n\t0xB8, 0xB8, 0x43, 0xE4, 0xB8, 0xB9, 0x43, 0xE4,\n\t0xB8, 0xBD, 0x43, 0xE4, 0xB8, 0xBF, 0x43, 0xE4,\n\t// Bytes 800 - 83f\n\t0xB9, 0x81, 0x43, 0xE4, 0xB9, 0x99, 0x43, 0xE4,\n\t0xB9, 0x9D, 0x43, 0xE4, 0xBA, 0x82, 0x43, 0xE4,\n\t0xBA, 0x85, 0x43, 0xE4, 0xBA, 0x86, 0x43, 0xE4,\n\t0xBA, 0x8C, 0x43, 0xE4, 0xBA, 0x94, 0x43, 0xE4,\n\t0xBA, 0xA0, 0x43, 0xE4, 0xBA, 0xA4, 0x43, 0xE4,\n\t0xBA, 0xAE, 0x43, 0xE4, 0xBA, 0xBA, 0x43, 0xE4,\n\t0xBB, 0x80, 0x43, 0xE4, 0xBB, 0x8C, 0x43, 0xE4,\n\t0xBB, 0xA4, 0x43, 0xE4, 0xBC, 0x81, 0x43, 0xE4,\n\t// Bytes 840 - 87f\n\t0xBC, 0x91, 0x43, 0xE4, 0xBD, 0xA0, 0x43, 0xE4,\n\t0xBE, 0x80, 0x43, 0xE4, 0xBE, 0x86, 0x43, 0xE4,\n\t0xBE, 0x8B, 0x43, 0xE4, 0xBE, 0xAE, 0x43, 0xE4,\n\t0xBE, 0xBB, 0x43, 0xE4, 0xBE, 0xBF, 0x43, 0xE5,\n\t0x80, 0x82, 0x43, 0xE5, 0x80, 0xAB, 0x43, 0xE5,\n\t0x81, 0xBA, 0x43, 0xE5, 0x82, 0x99, 0x43, 0xE5,\n\t0x83, 0x8F, 0x43, 0xE5, 0x83, 0x9A, 0x43, 0xE5,\n\t0x83, 0xA7, 0x43, 0xE5, 0x84, 0xAA, 0x43, 0xE5,\n\t// Bytes 880 - 8bf\n\t0x84, 0xBF, 0x43, 0xE5, 0x85, 0x80, 0x43, 0xE5,\n\t0x85, 0x85, 0x43, 0xE5, 0x85, 0x8D, 0x43, 0xE5,\n\t0x85, 0x94, 0x43, 0xE5, 0x85, 0xA4, 0x43, 0xE5,\n\t0x85, 0xA5, 0x43, 0xE5, 0x85, 0xA7, 0x43, 0xE5,\n\t0x85, 0xA8, 0x43, 0xE5, 0x85, 0xA9, 0x43, 0xE5,\n\t0x85, 0xAB, 0x43, 0xE5, 0x85, 0xAD, 0x43, 0xE5,\n\t0x85, 0xB7, 0x43, 0xE5, 0x86, 0x80, 0x43, 0xE5,\n\t0x86, 0x82, 0x43, 0xE5, 0x86, 0x8D, 0x43, 0xE5,\n\t// Bytes 8c0 - 8ff\n\t0x86, 0x92, 0x43, 0xE5, 0x86, 0x95, 0x43, 0xE5,\n\t0x86, 0x96, 0x43, 0xE5, 0x86, 0x97, 0x43, 0xE5,\n\t0x86, 0x99, 0x43, 0xE5, 0x86, 0xA4, 0x43, 0xE5,\n\t0x86, 0xAB, 0x43, 0xE5, 0x86, 0xAC, 0x43, 0xE5,\n\t0x86, 0xB5, 0x43, 0xE5, 0x86, 0xB7, 0x43, 0xE5,\n\t0x87, 0x89, 0x43, 0xE5, 0x87, 0x8C, 0x43, 0xE5,\n\t0x87, 0x9C, 0x43, 0xE5, 0x87, 0x9E, 0x43, 0xE5,\n\t0x87, 0xA0, 0x43, 0xE5, 0x87, 0xB5, 0x43, 0xE5,\n\t// Bytes 900 - 93f\n\t0x88, 0x80, 0x43, 0xE5, 0x88, 0x83, 0x43, 0xE5,\n\t0x88, 0x87, 0x43, 0xE5, 0x88, 0x97, 0x43, 0xE5,\n\t0x88, 0x9D, 0x43, 0xE5, 0x88, 0xA9, 0x43, 0xE5,\n\t0x88, 0xBA, 0x43, 0xE5, 0x88, 0xBB, 0x43, 0xE5,\n\t0x89, 0x86, 0x43, 0xE5, 0x89, 0x8D, 0x43, 0xE5,\n\t0x89, 0xB2, 0x43, 0xE5, 0x89, 0xB7, 0x43, 0xE5,\n\t0x8A, 0x89, 0x43, 0xE5, 0x8A, 0x9B, 0x43, 0xE5,\n\t0x8A, 0xA3, 0x43, 0xE5, 0x8A, 0xB3, 0x43, 0xE5,\n\t// Bytes 940 - 97f\n\t0x8A, 0xB4, 0x43, 0xE5, 0x8B, 0x87, 0x43, 0xE5,\n\t0x8B, 0x89, 0x43, 0xE5, 0x8B, 0x92, 0x43, 0xE5,\n\t0x8B, 0x9E, 0x43, 0xE5, 0x8B, 0xA4, 0x43, 0xE5,\n\t0x8B, 0xB5, 0x43, 0xE5, 0x8B, 0xB9, 0x43, 0xE5,\n\t0x8B, 0xBA, 0x43, 0xE5, 0x8C, 0x85, 0x43, 0xE5,\n\t0x8C, 0x86, 0x43, 0xE5, 0x8C, 0x95, 0x43, 0xE5,\n\t0x8C, 0x97, 0x43, 0xE5, 0x8C, 0x9A, 0x43, 0xE5,\n\t0x8C, 0xB8, 0x43, 0xE5, 0x8C, 0xBB, 0x43, 0xE5,\n\t// Bytes 980 - 9bf\n\t0x8C, 0xBF, 0x43, 0xE5, 0x8D, 0x81, 0x43, 0xE5,\n\t0x8D, 0x84, 0x43, 0xE5, 0x8D, 0x85, 0x43, 0xE5,\n\t0x8D, 0x89, 0x43, 0xE5, 0x8D, 0x91, 0x43, 0xE5,\n\t0x8D, 0x94, 0x43, 0xE5, 0x8D, 0x9A, 0x43, 0xE5,\n\t0x8D, 0x9C, 0x43, 0xE5, 0x8D, 0xA9, 0x43, 0xE5,\n\t0x8D, 0xB0, 0x43, 0xE5, 0x8D, 0xB3, 0x43, 0xE5,\n\t0x8D, 0xB5, 0x43, 0xE5, 0x8D, 0xBD, 0x43, 0xE5,\n\t0x8D, 0xBF, 0x43, 0xE5, 0x8E, 0x82, 0x43, 0xE5,\n\t// Bytes 9c0 - 9ff\n\t0x8E, 0xB6, 0x43, 0xE5, 0x8F, 0x83, 0x43, 0xE5,\n\t0x8F, 0x88, 0x43, 0xE5, 0x8F, 0x8A, 0x43, 0xE5,\n\t0x8F, 0x8C, 0x43, 0xE5, 0x8F, 0x9F, 0x43, 0xE5,\n\t0x8F, 0xA3, 0x43, 0xE5, 0x8F, 0xA5, 0x43, 0xE5,\n\t0x8F, 0xAB, 0x43, 0xE5, 0x8F, 0xAF, 0x43, 0xE5,\n\t0x8F, 0xB1, 0x43, 0xE5, 0x8F, 0xB3, 0x43, 0xE5,\n\t0x90, 0x86, 0x43, 0xE5, 0x90, 0x88, 0x43, 0xE5,\n\t0x90, 0x8D, 0x43, 0xE5, 0x90, 0x8F, 0x43, 0xE5,\n\t// Bytes a00 - a3f\n\t0x90, 0x9D, 0x43, 0xE5, 0x90, 0xB8, 0x43, 0xE5,\n\t0x90, 0xB9, 0x43, 0xE5, 0x91, 0x82, 0x43, 0xE5,\n\t0x91, 0x88, 0x43, 0xE5, 0x91, 0xA8, 0x43, 0xE5,\n\t0x92, 0x9E, 0x43, 0xE5, 0x92, 0xA2, 0x43, 0xE5,\n\t0x92, 0xBD, 0x43, 0xE5, 0x93, 0xB6, 0x43, 0xE5,\n\t0x94, 0x90, 0x43, 0xE5, 0x95, 0x8F, 0x43, 0xE5,\n\t0x95, 0x93, 0x43, 0xE5, 0x95, 0x95, 0x43, 0xE5,\n\t0x95, 0xA3, 0x43, 0xE5, 0x96, 0x84, 0x43, 0xE5,\n\t// Bytes a40 - a7f\n\t0x96, 0x87, 0x43, 0xE5, 0x96, 0x99, 0x43, 0xE5,\n\t0x96, 0x9D, 0x43, 0xE5, 0x96, 0xAB, 0x43, 0xE5,\n\t0x96, 0xB3, 0x43, 0xE5, 0x96, 0xB6, 0x43, 0xE5,\n\t0x97, 0x80, 0x43, 0xE5, 0x97, 0x82, 0x43, 0xE5,\n\t0x97, 0xA2, 0x43, 0xE5, 0x98, 0x86, 0x43, 0xE5,\n\t0x99, 0x91, 0x43, 0xE5, 0x99, 0xA8, 0x43, 0xE5,\n\t0x99, 0xB4, 0x43, 0xE5, 0x9B, 0x97, 0x43, 0xE5,\n\t0x9B, 0x9B, 0x43, 0xE5, 0x9B, 0xB9, 0x43, 0xE5,\n\t// Bytes a80 - abf\n\t0x9C, 0x96, 0x43, 0xE5, 0x9C, 0x97, 0x43, 0xE5,\n\t0x9C, 0x9F, 0x43, 0xE5, 0x9C, 0xB0, 0x43, 0xE5,\n\t0x9E, 0x8B, 0x43, 0xE5, 0x9F, 0x8E, 0x43, 0xE5,\n\t0x9F, 0xB4, 0x43, 0xE5, 0xA0, 0x8D, 0x43, 0xE5,\n\t0xA0, 0xB1, 0x43, 0xE5, 0xA0, 0xB2, 0x43, 0xE5,\n\t0xA1, 0x80, 0x43, 0xE5, 0xA1, 0x9A, 0x43, 0xE5,\n\t0xA1, 0x9E, 0x43, 0xE5, 0xA2, 0xA8, 0x43, 0xE5,\n\t0xA2, 0xAC, 0x43, 0xE5, 0xA2, 0xB3, 0x43, 0xE5,\n\t// Bytes ac0 - aff\n\t0xA3, 0x98, 0x43, 0xE5, 0xA3, 0x9F, 0x43, 0xE5,\n\t0xA3, 0xAB, 0x43, 0xE5, 0xA3, 0xAE, 0x43, 0xE5,\n\t0xA3, 0xB0, 0x43, 0xE5, 0xA3, 0xB2, 0x43, 0xE5,\n\t0xA3, 0xB7, 0x43, 0xE5, 0xA4, 0x82, 0x43, 0xE5,\n\t0xA4, 0x86, 0x43, 0xE5, 0xA4, 0x8A, 0x43, 0xE5,\n\t0xA4, 0x95, 0x43, 0xE5, 0xA4, 0x9A, 0x43, 0xE5,\n\t0xA4, 0x9C, 0x43, 0xE5, 0xA4, 0xA2, 0x43, 0xE5,\n\t0xA4, 0xA7, 0x43, 0xE5, 0xA4, 0xA9, 0x43, 0xE5,\n\t// Bytes b00 - b3f\n\t0xA5, 0x84, 0x43, 0xE5, 0xA5, 0x88, 0x43, 0xE5,\n\t0xA5, 0x91, 0x43, 0xE5, 0xA5, 0x94, 0x43, 0xE5,\n\t0xA5, 0xA2, 0x43, 0xE5, 0xA5, 0xB3, 0x43, 0xE5,\n\t0xA7, 0x98, 0x43, 0xE5, 0xA7, 0xAC, 0x43, 0xE5,\n\t0xA8, 0x9B, 0x43, 0xE5, 0xA8, 0xA7, 0x43, 0xE5,\n\t0xA9, 0xA2, 0x43, 0xE5, 0xA9, 0xA6, 0x43, 0xE5,\n\t0xAA, 0xB5, 0x43, 0xE5, 0xAC, 0x88, 0x43, 0xE5,\n\t0xAC, 0xA8, 0x43, 0xE5, 0xAC, 0xBE, 0x43, 0xE5,\n\t// Bytes b40 - b7f\n\t0xAD, 0x90, 0x43, 0xE5, 0xAD, 0x97, 0x43, 0xE5,\n\t0xAD, 0xA6, 0x43, 0xE5, 0xAE, 0x80, 0x43, 0xE5,\n\t0xAE, 0x85, 0x43, 0xE5, 0xAE, 0x97, 0x43, 0xE5,\n\t0xAF, 0x83, 0x43, 0xE5, 0xAF, 0x98, 0x43, 0xE5,\n\t0xAF, 0xA7, 0x43, 0xE5, 0xAF, 0xAE, 0x43, 0xE5,\n\t0xAF, 0xB3, 0x43, 0xE5, 0xAF, 0xB8, 0x43, 0xE5,\n\t0xAF, 0xBF, 0x43, 0xE5, 0xB0, 0x86, 0x43, 0xE5,\n\t0xB0, 0x8F, 0x43, 0xE5, 0xB0, 0xA2, 0x43, 0xE5,\n\t// Bytes b80 - bbf\n\t0xB0, 0xB8, 0x43, 0xE5, 0xB0, 0xBF, 0x43, 0xE5,\n\t0xB1, 0xA0, 0x43, 0xE5, 0xB1, 0xA2, 0x43, 0xE5,\n\t0xB1, 0xA4, 0x43, 0xE5, 0xB1, 0xA5, 0x43, 0xE5,\n\t0xB1, 0xAE, 0x43, 0xE5, 0xB1, 0xB1, 0x43, 0xE5,\n\t0xB2, 0x8D, 0x43, 0xE5, 0xB3, 0x80, 0x43, 0xE5,\n\t0xB4, 0x99, 0x43, 0xE5, 0xB5, 0x83, 0x43, 0xE5,\n\t0xB5, 0x90, 0x43, 0xE5, 0xB5, 0xAB, 0x43, 0xE5,\n\t0xB5, 0xAE, 0x43, 0xE5, 0xB5, 0xBC, 0x43, 0xE5,\n\t// Bytes bc0 - bff\n\t0xB6, 0xB2, 0x43, 0xE5, 0xB6, 0xBA, 0x43, 0xE5,\n\t0xB7, 0x9B, 0x43, 0xE5, 0xB7, 0xA1, 0x43, 0xE5,\n\t0xB7, 0xA2, 0x43, 0xE5, 0xB7, 0xA5, 0x43, 0xE5,\n\t0xB7, 0xA6, 0x43, 0xE5, 0xB7, 0xB1, 0x43, 0xE5,\n\t0xB7, 0xBD, 0x43, 0xE5, 0xB7, 0xBE, 0x43, 0xE5,\n\t0xB8, 0xA8, 0x43, 0xE5, 0xB8, 0xBD, 0x43, 0xE5,\n\t0xB9, 0xA9, 0x43, 0xE5, 0xB9, 0xB2, 0x43, 0xE5,\n\t0xB9, 0xB4, 0x43, 0xE5, 0xB9, 0xBA, 0x43, 0xE5,\n\t// Bytes c00 - c3f\n\t0xB9, 0xBC, 0x43, 0xE5, 0xB9, 0xBF, 0x43, 0xE5,\n\t0xBA, 0xA6, 0x43, 0xE5, 0xBA, 0xB0, 0x43, 0xE5,\n\t0xBA, 0xB3, 0x43, 0xE5, 0xBA, 0xB6, 0x43, 0xE5,\n\t0xBB, 0x89, 0x43, 0xE5, 0xBB, 0x8A, 0x43, 0xE5,\n\t0xBB, 0x92, 0x43, 0xE5, 0xBB, 0x93, 0x43, 0xE5,\n\t0xBB, 0x99, 0x43, 0xE5, 0xBB, 0xAC, 0x43, 0xE5,\n\t0xBB, 0xB4, 0x43, 0xE5, 0xBB, 0xBE, 0x43, 0xE5,\n\t0xBC, 0x84, 0x43, 0xE5, 0xBC, 0x8B, 0x43, 0xE5,\n\t// Bytes c40 - c7f\n\t0xBC, 0x93, 0x43, 0xE5, 0xBC, 0xA2, 0x43, 0xE5,\n\t0xBD, 0x90, 0x43, 0xE5, 0xBD, 0x93, 0x43, 0xE5,\n\t0xBD, 0xA1, 0x43, 0xE5, 0xBD, 0xA2, 0x43, 0xE5,\n\t0xBD, 0xA9, 0x43, 0xE5, 0xBD, 0xAB, 0x43, 0xE5,\n\t0xBD, 0xB3, 0x43, 0xE5, 0xBE, 0x8B, 0x43, 0xE5,\n\t0xBE, 0x8C, 0x43, 0xE5, 0xBE, 0x97, 0x43, 0xE5,\n\t0xBE, 0x9A, 0x43, 0xE5, 0xBE, 0xA9, 0x43, 0xE5,\n\t0xBE, 0xAD, 0x43, 0xE5, 0xBF, 0x83, 0x43, 0xE5,\n\t// Bytes c80 - cbf\n\t0xBF, 0x8D, 0x43, 0xE5, 0xBF, 0x97, 0x43, 0xE5,\n\t0xBF, 0xB5, 0x43, 0xE5, 0xBF, 0xB9, 0x43, 0xE6,\n\t0x80, 0x92, 0x43, 0xE6, 0x80, 0x9C, 0x43, 0xE6,\n\t0x81, 0xB5, 0x43, 0xE6, 0x82, 0x81, 0x43, 0xE6,\n\t0x82, 0x94, 0x43, 0xE6, 0x83, 0x87, 0x43, 0xE6,\n\t0x83, 0x98, 0x43, 0xE6, 0x83, 0xA1, 0x43, 0xE6,\n\t0x84, 0x88, 0x43, 0xE6, 0x85, 0x84, 0x43, 0xE6,\n\t0x85, 0x88, 0x43, 0xE6, 0x85, 0x8C, 0x43, 0xE6,\n\t// Bytes cc0 - cff\n\t0x85, 0x8E, 0x43, 0xE6, 0x85, 0xA0, 0x43, 0xE6,\n\t0x85, 0xA8, 0x43, 0xE6, 0x85, 0xBA, 0x43, 0xE6,\n\t0x86, 0x8E, 0x43, 0xE6, 0x86, 0x90, 0x43, 0xE6,\n\t0x86, 0xA4, 0x43, 0xE6, 0x86, 0xAF, 0x43, 0xE6,\n\t0x86, 0xB2, 0x43, 0xE6, 0x87, 0x9E, 0x43, 0xE6,\n\t0x87, 0xB2, 0x43, 0xE6, 0x87, 0xB6, 0x43, 0xE6,\n\t0x88, 0x80, 0x43, 0xE6, 0x88, 0x88, 0x43, 0xE6,\n\t0x88, 0x90, 0x43, 0xE6, 0x88, 0x9B, 0x43, 0xE6,\n\t// Bytes d00 - d3f\n\t0x88, 0xAE, 0x43, 0xE6, 0x88, 0xB4, 0x43, 0xE6,\n\t0x88, 0xB6, 0x43, 0xE6, 0x89, 0x8B, 0x43, 0xE6,\n\t0x89, 0x93, 0x43, 0xE6, 0x89, 0x9D, 0x43, 0xE6,\n\t0x8A, 0x95, 0x43, 0xE6, 0x8A, 0xB1, 0x43, 0xE6,\n\t0x8B, 0x89, 0x43, 0xE6, 0x8B, 0x8F, 0x43, 0xE6,\n\t0x8B, 0x93, 0x43, 0xE6, 0x8B, 0x94, 0x43, 0xE6,\n\t0x8B, 0xBC, 0x43, 0xE6, 0x8B, 0xBE, 0x43, 0xE6,\n\t0x8C, 0x87, 0x43, 0xE6, 0x8C, 0xBD, 0x43, 0xE6,\n\t// Bytes d40 - d7f\n\t0x8D, 0x90, 0x43, 0xE6, 0x8D, 0x95, 0x43, 0xE6,\n\t0x8D, 0xA8, 0x43, 0xE6, 0x8D, 0xBB, 0x43, 0xE6,\n\t0x8E, 0x83, 0x43, 0xE6, 0x8E, 0xA0, 0x43, 0xE6,\n\t0x8E, 0xA9, 0x43, 0xE6, 0x8F, 0x84, 0x43, 0xE6,\n\t0x8F, 0x85, 0x43, 0xE6, 0x8F, 0xA4, 0x43, 0xE6,\n\t0x90, 0x9C, 0x43, 0xE6, 0x90, 0xA2, 0x43, 0xE6,\n\t0x91, 0x92, 0x43, 0xE6, 0x91, 0xA9, 0x43, 0xE6,\n\t0x91, 0xB7, 0x43, 0xE6, 0x91, 0xBE, 0x43, 0xE6,\n\t// Bytes d80 - dbf\n\t0x92, 0x9A, 0x43, 0xE6, 0x92, 0x9D, 0x43, 0xE6,\n\t0x93, 0x84, 0x43, 0xE6, 0x94, 0xAF, 0x43, 0xE6,\n\t0x94, 0xB4, 0x43, 0xE6, 0x95, 0x8F, 0x43, 0xE6,\n\t0x95, 0x96, 0x43, 0xE6, 0x95, 0xAC, 0x43, 0xE6,\n\t0x95, 0xB8, 0x43, 0xE6, 0x96, 0x87, 0x43, 0xE6,\n\t0x96, 0x97, 0x43, 0xE6, 0x96, 0x99, 0x43, 0xE6,\n\t0x96, 0xA4, 0x43, 0xE6, 0x96, 0xB0, 0x43, 0xE6,\n\t0x96, 0xB9, 0x43, 0xE6, 0x97, 0x85, 0x43, 0xE6,\n\t// Bytes dc0 - dff\n\t0x97, 0xA0, 0x43, 0xE6, 0x97, 0xA2, 0x43, 0xE6,\n\t0x97, 0xA3, 0x43, 0xE6, 0x97, 0xA5, 0x43, 0xE6,\n\t0x98, 0x93, 0x43, 0xE6, 0x98, 0xA0, 0x43, 0xE6,\n\t0x99, 0x89, 0x43, 0xE6, 0x99, 0xB4, 0x43, 0xE6,\n\t0x9A, 0x88, 0x43, 0xE6, 0x9A, 0x91, 0x43, 0xE6,\n\t0x9A, 0x9C, 0x43, 0xE6, 0x9A, 0xB4, 0x43, 0xE6,\n\t0x9B, 0x86, 0x43, 0xE6, 0x9B, 0xB0, 0x43, 0xE6,\n\t0x9B, 0xB4, 0x43, 0xE6, 0x9B, 0xB8, 0x43, 0xE6,\n\t// Bytes e00 - e3f\n\t0x9C, 0x80, 0x43, 0xE6, 0x9C, 0x88, 0x43, 0xE6,\n\t0x9C, 0x89, 0x43, 0xE6, 0x9C, 0x97, 0x43, 0xE6,\n\t0x9C, 0x9B, 0x43, 0xE6, 0x9C, 0xA1, 0x43, 0xE6,\n\t0x9C, 0xA8, 0x43, 0xE6, 0x9D, 0x8E, 0x43, 0xE6,\n\t0x9D, 0x93, 0x43, 0xE6, 0x9D, 0x96, 0x43, 0xE6,\n\t0x9D, 0x9E, 0x43, 0xE6, 0x9D, 0xBB, 0x43, 0xE6,\n\t0x9E, 0x85, 0x43, 0xE6, 0x9E, 0x97, 0x43, 0xE6,\n\t0x9F, 0xB3, 0x43, 0xE6, 0x9F, 0xBA, 0x43, 0xE6,\n\t// Bytes e40 - e7f\n\t0xA0, 0x97, 0x43, 0xE6, 0xA0, 0x9F, 0x43, 0xE6,\n\t0xA0, 0xAA, 0x43, 0xE6, 0xA1, 0x92, 0x43, 0xE6,\n\t0xA2, 0x81, 0x43, 0xE6, 0xA2, 0x85, 0x43, 0xE6,\n\t0xA2, 0x8E, 0x43, 0xE6, 0xA2, 0xA8, 0x43, 0xE6,\n\t0xA4, 0x94, 0x43, 0xE6, 0xA5, 0x82, 0x43, 0xE6,\n\t0xA6, 0xA3, 0x43, 0xE6, 0xA7, 0xAA, 0x43, 0xE6,\n\t0xA8, 0x82, 0x43, 0xE6, 0xA8, 0x93, 0x43, 0xE6,\n\t0xAA, 0xA8, 0x43, 0xE6, 0xAB, 0x93, 0x43, 0xE6,\n\t// Bytes e80 - ebf\n\t0xAB, 0x9B, 0x43, 0xE6, 0xAC, 0x84, 0x43, 0xE6,\n\t0xAC, 0xA0, 0x43, 0xE6, 0xAC, 0xA1, 0x43, 0xE6,\n\t0xAD, 0x94, 0x43, 0xE6, 0xAD, 0xA2, 0x43, 0xE6,\n\t0xAD, 0xA3, 0x43, 0xE6, 0xAD, 0xB2, 0x43, 0xE6,\n\t0xAD, 0xB7, 0x43, 0xE6, 0xAD, 0xB9, 0x43, 0xE6,\n\t0xAE, 0x9F, 0x43, 0xE6, 0xAE, 0xAE, 0x43, 0xE6,\n\t0xAE, 0xB3, 0x43, 0xE6, 0xAE, 0xBA, 0x43, 0xE6,\n\t0xAE, 0xBB, 0x43, 0xE6, 0xAF, 0x8B, 0x43, 0xE6,\n\t// Bytes ec0 - eff\n\t0xAF, 0x8D, 0x43, 0xE6, 0xAF, 0x94, 0x43, 0xE6,\n\t0xAF, 0x9B, 0x43, 0xE6, 0xB0, 0x8F, 0x43, 0xE6,\n\t0xB0, 0x94, 0x43, 0xE6, 0xB0, 0xB4, 0x43, 0xE6,\n\t0xB1, 0x8E, 0x43, 0xE6, 0xB1, 0xA7, 0x43, 0xE6,\n\t0xB2, 0x88, 0x43, 0xE6, 0xB2, 0xBF, 0x43, 0xE6,\n\t0xB3, 0x8C, 0x43, 0xE6, 0xB3, 0x8D, 0x43, 0xE6,\n\t0xB3, 0xA5, 0x43, 0xE6, 0xB3, 0xA8, 0x43, 0xE6,\n\t0xB4, 0x96, 0x43, 0xE6, 0xB4, 0x9B, 0x43, 0xE6,\n\t// Bytes f00 - f3f\n\t0xB4, 0x9E, 0x43, 0xE6, 0xB4, 0xB4, 0x43, 0xE6,\n\t0xB4, 0xBE, 0x43, 0xE6, 0xB5, 0x81, 0x43, 0xE6,\n\t0xB5, 0xA9, 0x43, 0xE6, 0xB5, 0xAA, 0x43, 0xE6,\n\t0xB5, 0xB7, 0x43, 0xE6, 0xB5, 0xB8, 0x43, 0xE6,\n\t0xB6, 0x85, 0x43, 0xE6, 0xB7, 0x8B, 0x43, 0xE6,\n\t0xB7, 0x9A, 0x43, 0xE6, 0xB7, 0xAA, 0x43, 0xE6,\n\t0xB7, 0xB9, 0x43, 0xE6, 0xB8, 0x9A, 0x43, 0xE6,\n\t0xB8, 0xAF, 0x43, 0xE6, 0xB9, 0xAE, 0x43, 0xE6,\n\t// Bytes f40 - f7f\n\t0xBA, 0x80, 0x43, 0xE6, 0xBA, 0x9C, 0x43, 0xE6,\n\t0xBA, 0xBA, 0x43, 0xE6, 0xBB, 0x87, 0x43, 0xE6,\n\t0xBB, 0x8B, 0x43, 0xE6, 0xBB, 0x91, 0x43, 0xE6,\n\t0xBB, 0x9B, 0x43, 0xE6, 0xBC, 0x8F, 0x43, 0xE6,\n\t0xBC, 0x94, 0x43, 0xE6, 0xBC, 0xA2, 0x43, 0xE6,\n\t0xBC, 0xA3, 0x43, 0xE6, 0xBD, 0xAE, 0x43, 0xE6,\n\t0xBF, 0x86, 0x43, 0xE6, 0xBF, 0xAB, 0x43, 0xE6,\n\t0xBF, 0xBE, 0x43, 0xE7, 0x80, 0x9B, 0x43, 0xE7,\n\t// Bytes f80 - fbf\n\t0x80, 0x9E, 0x43, 0xE7, 0x80, 0xB9, 0x43, 0xE7,\n\t0x81, 0x8A, 0x43, 0xE7, 0x81, 0xAB, 0x43, 0xE7,\n\t0x81, 0xB0, 0x43, 0xE7, 0x81, 0xB7, 0x43, 0xE7,\n\t0x81, 0xBD, 0x43, 0xE7, 0x82, 0x99, 0x43, 0xE7,\n\t0x82, 0xAD, 0x43, 0xE7, 0x83, 0x88, 0x43, 0xE7,\n\t0x83, 0x99, 0x43, 0xE7, 0x84, 0xA1, 0x43, 0xE7,\n\t0x85, 0x85, 0x43, 0xE7, 0x85, 0x89, 0x43, 0xE7,\n\t0x85, 0xAE, 0x43, 0xE7, 0x86, 0x9C, 0x43, 0xE7,\n\t// Bytes fc0 - fff\n\t0x87, 0x8E, 0x43, 0xE7, 0x87, 0x90, 0x43, 0xE7,\n\t0x88, 0x90, 0x43, 0xE7, 0x88, 0x9B, 0x43, 0xE7,\n\t0x88, 0xA8, 0x43, 0xE7, 0x88, 0xAA, 0x43, 0xE7,\n\t0x88, 0xAB, 0x43, 0xE7, 0x88, 0xB5, 0x43, 0xE7,\n\t0x88, 0xB6, 0x43, 0xE7, 0x88, 0xBB, 0x43, 0xE7,\n\t0x88, 0xBF, 0x43, 0xE7, 0x89, 0x87, 0x43, 0xE7,\n\t0x89, 0x90, 0x43, 0xE7, 0x89, 0x99, 0x43, 0xE7,\n\t0x89, 0x9B, 0x43, 0xE7, 0x89, 0xA2, 0x43, 0xE7,\n\t// Bytes 1000 - 103f\n\t0x89, 0xB9, 0x43, 0xE7, 0x8A, 0x80, 0x43, 0xE7,\n\t0x8A, 0x95, 0x43, 0xE7, 0x8A, 0xAC, 0x43, 0xE7,\n\t0x8A, 0xAF, 0x43, 0xE7, 0x8B, 0x80, 0x43, 0xE7,\n\t0x8B, 0xBC, 0x43, 0xE7, 0x8C, 0xAA, 0x43, 0xE7,\n\t0x8D, 0xB5, 0x43, 0xE7, 0x8D, 0xBA, 0x43, 0xE7,\n\t0x8E, 0x84, 0x43, 0xE7, 0x8E, 0x87, 0x43, 0xE7,\n\t0x8E, 0x89, 0x43, 0xE7, 0x8E, 0x8B, 0x43, 0xE7,\n\t0x8E, 0xA5, 0x43, 0xE7, 0x8E, 0xB2, 0x43, 0xE7,\n\t// Bytes 1040 - 107f\n\t0x8F, 0x9E, 0x43, 0xE7, 0x90, 0x86, 0x43, 0xE7,\n\t0x90, 0x89, 0x43, 0xE7, 0x90, 0xA2, 0x43, 0xE7,\n\t0x91, 0x87, 0x43, 0xE7, 0x91, 0x9C, 0x43, 0xE7,\n\t0x91, 0xA9, 0x43, 0xE7, 0x91, 0xB1, 0x43, 0xE7,\n\t0x92, 0x85, 0x43, 0xE7, 0x92, 0x89, 0x43, 0xE7,\n\t0x92, 0x98, 0x43, 0xE7, 0x93, 0x8A, 0x43, 0xE7,\n\t0x93, 0x9C, 0x43, 0xE7, 0x93, 0xA6, 0x43, 0xE7,\n\t0x94, 0x86, 0x43, 0xE7, 0x94, 0x98, 0x43, 0xE7,\n\t// Bytes 1080 - 10bf\n\t0x94, 0x9F, 0x43, 0xE7, 0x94, 0xA4, 0x43, 0xE7,\n\t0x94, 0xA8, 0x43, 0xE7, 0x94, 0xB0, 0x43, 0xE7,\n\t0x94, 0xB2, 0x43, 0xE7, 0x94, 0xB3, 0x43, 0xE7,\n\t0x94, 0xB7, 0x43, 0xE7, 0x94, 0xBB, 0x43, 0xE7,\n\t0x94, 0xBE, 0x43, 0xE7, 0x95, 0x99, 0x43, 0xE7,\n\t0x95, 0xA5, 0x43, 0xE7, 0x95, 0xB0, 0x43, 0xE7,\n\t0x96, 0x8B, 0x43, 0xE7, 0x96, 0x92, 0x43, 0xE7,\n\t0x97, 0xA2, 0x43, 0xE7, 0x98, 0x90, 0x43, 0xE7,\n\t// Bytes 10c0 - 10ff\n\t0x98, 0x9D, 0x43, 0xE7, 0x98, 0x9F, 0x43, 0xE7,\n\t0x99, 0x82, 0x43, 0xE7, 0x99, 0xA9, 0x43, 0xE7,\n\t0x99, 0xB6, 0x43, 0xE7, 0x99, 0xBD, 0x43, 0xE7,\n\t0x9A, 0xAE, 0x43, 0xE7, 0x9A, 0xBF, 0x43, 0xE7,\n\t0x9B, 0x8A, 0x43, 0xE7, 0x9B, 0x9B, 0x43, 0xE7,\n\t0x9B, 0xA3, 0x43, 0xE7, 0x9B, 0xA7, 0x43, 0xE7,\n\t0x9B, 0xAE, 0x43, 0xE7, 0x9B, 0xB4, 0x43, 0xE7,\n\t0x9C, 0x81, 0x43, 0xE7, 0x9C, 0x9E, 0x43, 0xE7,\n\t// Bytes 1100 - 113f\n\t0x9C, 0x9F, 0x43, 0xE7, 0x9D, 0x80, 0x43, 0xE7,\n\t0x9D, 0x8A, 0x43, 0xE7, 0x9E, 0x8B, 0x43, 0xE7,\n\t0x9E, 0xA7, 0x43, 0xE7, 0x9F, 0x9B, 0x43, 0xE7,\n\t0x9F, 0xA2, 0x43, 0xE7, 0x9F, 0xB3, 0x43, 0xE7,\n\t0xA1, 0x8E, 0x43, 0xE7, 0xA1, 0xAB, 0x43, 0xE7,\n\t0xA2, 0x8C, 0x43, 0xE7, 0xA2, 0x91, 0x43, 0xE7,\n\t0xA3, 0x8A, 0x43, 0xE7, 0xA3, 0x8C, 0x43, 0xE7,\n\t0xA3, 0xBB, 0x43, 0xE7, 0xA4, 0xAA, 0x43, 0xE7,\n\t// Bytes 1140 - 117f\n\t0xA4, 0xBA, 0x43, 0xE7, 0xA4, 0xBC, 0x43, 0xE7,\n\t0xA4, 0xBE, 0x43, 0xE7, 0xA5, 0x88, 0x43, 0xE7,\n\t0xA5, 0x89, 0x43, 0xE7, 0xA5, 0x90, 0x43, 0xE7,\n\t0xA5, 0x96, 0x43, 0xE7, 0xA5, 0x9D, 0x43, 0xE7,\n\t0xA5, 0x9E, 0x43, 0xE7, 0xA5, 0xA5, 0x43, 0xE7,\n\t0xA5, 0xBF, 0x43, 0xE7, 0xA6, 0x81, 0x43, 0xE7,\n\t0xA6, 0x8D, 0x43, 0xE7, 0xA6, 0x8E, 0x43, 0xE7,\n\t0xA6, 0x8F, 0x43, 0xE7, 0xA6, 0xAE, 0x43, 0xE7,\n\t// Bytes 1180 - 11bf\n\t0xA6, 0xB8, 0x43, 0xE7, 0xA6, 0xBE, 0x43, 0xE7,\n\t0xA7, 0x8A, 0x43, 0xE7, 0xA7, 0x98, 0x43, 0xE7,\n\t0xA7, 0xAB, 0x43, 0xE7, 0xA8, 0x9C, 0x43, 0xE7,\n\t0xA9, 0x80, 0x43, 0xE7, 0xA9, 0x8A, 0x43, 0xE7,\n\t0xA9, 0x8F, 0x43, 0xE7, 0xA9, 0xB4, 0x43, 0xE7,\n\t0xA9, 0xBA, 0x43, 0xE7, 0xAA, 0x81, 0x43, 0xE7,\n\t0xAA, 0xB1, 0x43, 0xE7, 0xAB, 0x8B, 0x43, 0xE7,\n\t0xAB, 0xAE, 0x43, 0xE7, 0xAB, 0xB9, 0x43, 0xE7,\n\t// Bytes 11c0 - 11ff\n\t0xAC, 0xA0, 0x43, 0xE7, 0xAE, 0x8F, 0x43, 0xE7,\n\t0xAF, 0x80, 0x43, 0xE7, 0xAF, 0x86, 0x43, 0xE7,\n\t0xAF, 0x89, 0x43, 0xE7, 0xB0, 0xBE, 0x43, 0xE7,\n\t0xB1, 0xA0, 0x43, 0xE7, 0xB1, 0xB3, 0x43, 0xE7,\n\t0xB1, 0xBB, 0x43, 0xE7, 0xB2, 0x92, 0x43, 0xE7,\n\t0xB2, 0xBE, 0x43, 0xE7, 0xB3, 0x92, 0x43, 0xE7,\n\t0xB3, 0x96, 0x43, 0xE7, 0xB3, 0xA3, 0x43, 0xE7,\n\t0xB3, 0xA7, 0x43, 0xE7, 0xB3, 0xA8, 0x43, 0xE7,\n\t// Bytes 1200 - 123f\n\t0xB3, 0xB8, 0x43, 0xE7, 0xB4, 0x80, 0x43, 0xE7,\n\t0xB4, 0x90, 0x43, 0xE7, 0xB4, 0xA2, 0x43, 0xE7,\n\t0xB4, 0xAF, 0x43, 0xE7, 0xB5, 0x82, 0x43, 0xE7,\n\t0xB5, 0x9B, 0x43, 0xE7, 0xB5, 0xA3, 0x43, 0xE7,\n\t0xB6, 0xA0, 0x43, 0xE7, 0xB6, 0xBE, 0x43, 0xE7,\n\t0xB7, 0x87, 0x43, 0xE7, 0xB7, 0xB4, 0x43, 0xE7,\n\t0xB8, 0x82, 0x43, 0xE7, 0xB8, 0x89, 0x43, 0xE7,\n\t0xB8, 0xB7, 0x43, 0xE7, 0xB9, 0x81, 0x43, 0xE7,\n\t// Bytes 1240 - 127f\n\t0xB9, 0x85, 0x43, 0xE7, 0xBC, 0xB6, 0x43, 0xE7,\n\t0xBC, 0xBE, 0x43, 0xE7, 0xBD, 0x91, 0x43, 0xE7,\n\t0xBD, 0xB2, 0x43, 0xE7, 0xBD, 0xB9, 0x43, 0xE7,\n\t0xBD, 0xBA, 0x43, 0xE7, 0xBE, 0x85, 0x43, 0xE7,\n\t0xBE, 0x8A, 0x43, 0xE7, 0xBE, 0x95, 0x43, 0xE7,\n\t0xBE, 0x9A, 0x43, 0xE7, 0xBE, 0xBD, 0x43, 0xE7,\n\t0xBF, 0xBA, 0x43, 0xE8, 0x80, 0x81, 0x43, 0xE8,\n\t0x80, 0x85, 0x43, 0xE8, 0x80, 0x8C, 0x43, 0xE8,\n\t// Bytes 1280 - 12bf\n\t0x80, 0x92, 0x43, 0xE8, 0x80, 0xB3, 0x43, 0xE8,\n\t0x81, 0x86, 0x43, 0xE8, 0x81, 0xA0, 0x43, 0xE8,\n\t0x81, 0xAF, 0x43, 0xE8, 0x81, 0xB0, 0x43, 0xE8,\n\t0x81, 0xBE, 0x43, 0xE8, 0x81, 0xBF, 0x43, 0xE8,\n\t0x82, 0x89, 0x43, 0xE8, 0x82, 0x8B, 0x43, 0xE8,\n\t0x82, 0xAD, 0x43, 0xE8, 0x82, 0xB2, 0x43, 0xE8,\n\t0x84, 0x83, 0x43, 0xE8, 0x84, 0xBE, 0x43, 0xE8,\n\t0x87, 0x98, 0x43, 0xE8, 0x87, 0xA3, 0x43, 0xE8,\n\t// Bytes 12c0 - 12ff\n\t0x87, 0xA8, 0x43, 0xE8, 0x87, 0xAA, 0x43, 0xE8,\n\t0x87, 0xAD, 0x43, 0xE8, 0x87, 0xB3, 0x43, 0xE8,\n\t0x87, 0xBC, 0x43, 0xE8, 0x88, 0x81, 0x43, 0xE8,\n\t0x88, 0x84, 0x43, 0xE8, 0x88, 0x8C, 0x43, 0xE8,\n\t0x88, 0x98, 0x43, 0xE8, 0x88, 0x9B, 0x43, 0xE8,\n\t0x88, 0x9F, 0x43, 0xE8, 0x89, 0xAE, 0x43, 0xE8,\n\t0x89, 0xAF, 0x43, 0xE8, 0x89, 0xB2, 0x43, 0xE8,\n\t0x89, 0xB8, 0x43, 0xE8, 0x89, 0xB9, 0x43, 0xE8,\n\t// Bytes 1300 - 133f\n\t0x8A, 0x8B, 0x43, 0xE8, 0x8A, 0x91, 0x43, 0xE8,\n\t0x8A, 0x9D, 0x43, 0xE8, 0x8A, 0xB1, 0x43, 0xE8,\n\t0x8A, 0xB3, 0x43, 0xE8, 0x8A, 0xBD, 0x43, 0xE8,\n\t0x8B, 0xA5, 0x43, 0xE8, 0x8B, 0xA6, 0x43, 0xE8,\n\t0x8C, 0x9D, 0x43, 0xE8, 0x8C, 0xA3, 0x43, 0xE8,\n\t0x8C, 0xB6, 0x43, 0xE8, 0x8D, 0x92, 0x43, 0xE8,\n\t0x8D, 0x93, 0x43, 0xE8, 0x8D, 0xA3, 0x43, 0xE8,\n\t0x8E, 0xAD, 0x43, 0xE8, 0x8E, 0xBD, 0x43, 0xE8,\n\t// Bytes 1340 - 137f\n\t0x8F, 0x89, 0x43, 0xE8, 0x8F, 0x8A, 0x43, 0xE8,\n\t0x8F, 0x8C, 0x43, 0xE8, 0x8F, 0x9C, 0x43, 0xE8,\n\t0x8F, 0xA7, 0x43, 0xE8, 0x8F, 0xAF, 0x43, 0xE8,\n\t0x8F, 0xB1, 0x43, 0xE8, 0x90, 0xBD, 0x43, 0xE8,\n\t0x91, 0x89, 0x43, 0xE8, 0x91, 0x97, 0x43, 0xE8,\n\t0x93, 0xAE, 0x43, 0xE8, 0x93, 0xB1, 0x43, 0xE8,\n\t0x93, 0xB3, 0x43, 0xE8, 0x93, 0xBC, 0x43, 0xE8,\n\t0x94, 0x96, 0x43, 0xE8, 0x95, 0xA4, 0x43, 0xE8,\n\t// Bytes 1380 - 13bf\n\t0x97, 0x8D, 0x43, 0xE8, 0x97, 0xBA, 0x43, 0xE8,\n\t0x98, 0x86, 0x43, 0xE8, 0x98, 0x92, 0x43, 0xE8,\n\t0x98, 0xAD, 0x43, 0xE8, 0x98, 0xBF, 0x43, 0xE8,\n\t0x99, 0x8D, 0x43, 0xE8, 0x99, 0x90, 0x43, 0xE8,\n\t0x99, 0x9C, 0x43, 0xE8, 0x99, 0xA7, 0x43, 0xE8,\n\t0x99, 0xA9, 0x43, 0xE8, 0x99, 0xAB, 0x43, 0xE8,\n\t0x9A, 0x88, 0x43, 0xE8, 0x9A, 0xA9, 0x43, 0xE8,\n\t0x9B, 0xA2, 0x43, 0xE8, 0x9C, 0x8E, 0x43, 0xE8,\n\t// Bytes 13c0 - 13ff\n\t0x9C, 0xA8, 0x43, 0xE8, 0x9D, 0xAB, 0x43, 0xE8,\n\t0x9D, 0xB9, 0x43, 0xE8, 0x9E, 0x86, 0x43, 0xE8,\n\t0x9E, 0xBA, 0x43, 0xE8, 0x9F, 0xA1, 0x43, 0xE8,\n\t0xA0, 0x81, 0x43, 0xE8, 0xA0, 0x9F, 0x43, 0xE8,\n\t0xA1, 0x80, 0x43, 0xE8, 0xA1, 0x8C, 0x43, 0xE8,\n\t0xA1, 0xA0, 0x43, 0xE8, 0xA1, 0xA3, 0x43, 0xE8,\n\t0xA3, 0x82, 0x43, 0xE8, 0xA3, 0x8F, 0x43, 0xE8,\n\t0xA3, 0x97, 0x43, 0xE8, 0xA3, 0x9E, 0x43, 0xE8,\n\t// Bytes 1400 - 143f\n\t0xA3, 0xA1, 0x43, 0xE8, 0xA3, 0xB8, 0x43, 0xE8,\n\t0xA3, 0xBA, 0x43, 0xE8, 0xA4, 0x90, 0x43, 0xE8,\n\t0xA5, 0x81, 0x43, 0xE8, 0xA5, 0xA4, 0x43, 0xE8,\n\t0xA5, 0xBE, 0x43, 0xE8, 0xA6, 0x86, 0x43, 0xE8,\n\t0xA6, 0x8B, 0x43, 0xE8, 0xA6, 0x96, 0x43, 0xE8,\n\t0xA7, 0x92, 0x43, 0xE8, 0xA7, 0xA3, 0x43, 0xE8,\n\t0xA8, 0x80, 0x43, 0xE8, 0xAA, 0xA0, 0x43, 0xE8,\n\t0xAA, 0xAA, 0x43, 0xE8, 0xAA, 0xBF, 0x43, 0xE8,\n\t// Bytes 1440 - 147f\n\t0xAB, 0x8B, 0x43, 0xE8, 0xAB, 0x92, 0x43, 0xE8,\n\t0xAB, 0x96, 0x43, 0xE8, 0xAB, 0xAD, 0x43, 0xE8,\n\t0xAB, 0xB8, 0x43, 0xE8, 0xAB, 0xBE, 0x43, 0xE8,\n\t0xAC, 0x81, 0x43, 0xE8, 0xAC, 0xB9, 0x43, 0xE8,\n\t0xAD, 0x98, 0x43, 0xE8, 0xAE, 0x80, 0x43, 0xE8,\n\t0xAE, 0x8A, 0x43, 0xE8, 0xB0, 0xB7, 0x43, 0xE8,\n\t0xB1, 0x86, 0x43, 0xE8, 0xB1, 0x88, 0x43, 0xE8,\n\t0xB1, 0x95, 0x43, 0xE8, 0xB1, 0xB8, 0x43, 0xE8,\n\t// Bytes 1480 - 14bf\n\t0xB2, 0x9D, 0x43, 0xE8, 0xB2, 0xA1, 0x43, 0xE8,\n\t0xB2, 0xA9, 0x43, 0xE8, 0xB2, 0xAB, 0x43, 0xE8,\n\t0xB3, 0x81, 0x43, 0xE8, 0xB3, 0x82, 0x43, 0xE8,\n\t0xB3, 0x87, 0x43, 0xE8, 0xB3, 0x88, 0x43, 0xE8,\n\t0xB3, 0x93, 0x43, 0xE8, 0xB4, 0x88, 0x43, 0xE8,\n\t0xB4, 0x9B, 0x43, 0xE8, 0xB5, 0xA4, 0x43, 0xE8,\n\t0xB5, 0xB0, 0x43, 0xE8, 0xB5, 0xB7, 0x43, 0xE8,\n\t0xB6, 0xB3, 0x43, 0xE8, 0xB6, 0xBC, 0x43, 0xE8,\n\t// Bytes 14c0 - 14ff\n\t0xB7, 0x8B, 0x43, 0xE8, 0xB7, 0xAF, 0x43, 0xE8,\n\t0xB7, 0xB0, 0x43, 0xE8, 0xBA, 0xAB, 0x43, 0xE8,\n\t0xBB, 0x8A, 0x43, 0xE8, 0xBB, 0x94, 0x43, 0xE8,\n\t0xBC, 0xA6, 0x43, 0xE8, 0xBC, 0xAA, 0x43, 0xE8,\n\t0xBC, 0xB8, 0x43, 0xE8, 0xBC, 0xBB, 0x43, 0xE8,\n\t0xBD, 0xA2, 0x43, 0xE8, 0xBE, 0x9B, 0x43, 0xE8,\n\t0xBE, 0x9E, 0x43, 0xE8, 0xBE, 0xB0, 0x43, 0xE8,\n\t0xBE, 0xB5, 0x43, 0xE8, 0xBE, 0xB6, 0x43, 0xE9,\n\t// Bytes 1500 - 153f\n\t0x80, 0xA3, 0x43, 0xE9, 0x80, 0xB8, 0x43, 0xE9,\n\t0x81, 0x8A, 0x43, 0xE9, 0x81, 0xA9, 0x43, 0xE9,\n\t0x81, 0xB2, 0x43, 0xE9, 0x81, 0xBC, 0x43, 0xE9,\n\t0x82, 0x8F, 0x43, 0xE9, 0x82, 0x91, 0x43, 0xE9,\n\t0x82, 0x94, 0x43, 0xE9, 0x83, 0x8E, 0x43, 0xE9,\n\t0x83, 0x9E, 0x43, 0xE9, 0x83, 0xB1, 0x43, 0xE9,\n\t0x83, 0xBD, 0x43, 0xE9, 0x84, 0x91, 0x43, 0xE9,\n\t0x84, 0x9B, 0x43, 0xE9, 0x85, 0x89, 0x43, 0xE9,\n\t// Bytes 1540 - 157f\n\t0x85, 0x8D, 0x43, 0xE9, 0x85, 0xAA, 0x43, 0xE9,\n\t0x86, 0x99, 0x43, 0xE9, 0x86, 0xB4, 0x43, 0xE9,\n\t0x87, 0x86, 0x43, 0xE9, 0x87, 0x8C, 0x43, 0xE9,\n\t0x87, 0x8F, 0x43, 0xE9, 0x87, 0x91, 0x43, 0xE9,\n\t0x88, 0xB4, 0x43, 0xE9, 0x88, 0xB8, 0x43, 0xE9,\n\t0x89, 0xB6, 0x43, 0xE9, 0x89, 0xBC, 0x43, 0xE9,\n\t0x8B, 0x97, 0x43, 0xE9, 0x8B, 0x98, 0x43, 0xE9,\n\t0x8C, 0x84, 0x43, 0xE9, 0x8D, 0x8A, 0x43, 0xE9,\n\t// Bytes 1580 - 15bf\n\t0x8F, 0xB9, 0x43, 0xE9, 0x90, 0x95, 0x43, 0xE9,\n\t0x95, 0xB7, 0x43, 0xE9, 0x96, 0x80, 0x43, 0xE9,\n\t0x96, 0x8B, 0x43, 0xE9, 0x96, 0xAD, 0x43, 0xE9,\n\t0x96, 0xB7, 0x43, 0xE9, 0x98, 0x9C, 0x43, 0xE9,\n\t0x98, 0xAE, 0x43, 0xE9, 0x99, 0x8B, 0x43, 0xE9,\n\t0x99, 0x8D, 0x43, 0xE9, 0x99, 0xB5, 0x43, 0xE9,\n\t0x99, 0xB8, 0x43, 0xE9, 0x99, 0xBC, 0x43, 0xE9,\n\t0x9A, 0x86, 0x43, 0xE9, 0x9A, 0xA3, 0x43, 0xE9,\n\t// Bytes 15c0 - 15ff\n\t0x9A, 0xB6, 0x43, 0xE9, 0x9A, 0xB7, 0x43, 0xE9,\n\t0x9A, 0xB8, 0x43, 0xE9, 0x9A, 0xB9, 0x43, 0xE9,\n\t0x9B, 0x83, 0x43, 0xE9, 0x9B, 0xA2, 0x43, 0xE9,\n\t0x9B, 0xA3, 0x43, 0xE9, 0x9B, 0xA8, 0x43, 0xE9,\n\t0x9B, 0xB6, 0x43, 0xE9, 0x9B, 0xB7, 0x43, 0xE9,\n\t0x9C, 0xA3, 0x43, 0xE9, 0x9C, 0xB2, 0x43, 0xE9,\n\t0x9D, 0x88, 0x43, 0xE9, 0x9D, 0x91, 0x43, 0xE9,\n\t0x9D, 0x96, 0x43, 0xE9, 0x9D, 0x9E, 0x43, 0xE9,\n\t// Bytes 1600 - 163f\n\t0x9D, 0xA2, 0x43, 0xE9, 0x9D, 0xA9, 0x43, 0xE9,\n\t0x9F, 0x8B, 0x43, 0xE9, 0x9F, 0x9B, 0x43, 0xE9,\n\t0x9F, 0xA0, 0x43, 0xE9, 0x9F, 0xAD, 0x43, 0xE9,\n\t0x9F, 0xB3, 0x43, 0xE9, 0x9F, 0xBF, 0x43, 0xE9,\n\t0xA0, 0x81, 0x43, 0xE9, 0xA0, 0x85, 0x43, 0xE9,\n\t0xA0, 0x8B, 0x43, 0xE9, 0xA0, 0x98, 0x43, 0xE9,\n\t0xA0, 0xA9, 0x43, 0xE9, 0xA0, 0xBB, 0x43, 0xE9,\n\t0xA1, 0x9E, 0x43, 0xE9, 0xA2, 0xA8, 0x43, 0xE9,\n\t// Bytes 1640 - 167f\n\t0xA3, 0x9B, 0x43, 0xE9, 0xA3, 0x9F, 0x43, 0xE9,\n\t0xA3, 0xA2, 0x43, 0xE9, 0xA3, 0xAF, 0x43, 0xE9,\n\t0xA3, 0xBC, 0x43, 0xE9, 0xA4, 0xA8, 0x43, 0xE9,\n\t0xA4, 0xA9, 0x43, 0xE9, 0xA6, 0x96, 0x43, 0xE9,\n\t0xA6, 0x99, 0x43, 0xE9, 0xA6, 0xA7, 0x43, 0xE9,\n\t0xA6, 0xAC, 0x43, 0xE9, 0xA7, 0x82, 0x43, 0xE9,\n\t0xA7, 0xB1, 0x43, 0xE9, 0xA7, 0xBE, 0x43, 0xE9,\n\t0xA9, 0xAA, 0x43, 0xE9, 0xAA, 0xA8, 0x43, 0xE9,\n\t// Bytes 1680 - 16bf\n\t0xAB, 0x98, 0x43, 0xE9, 0xAB, 0x9F, 0x43, 0xE9,\n\t0xAC, 0x92, 0x43, 0xE9, 0xAC, 0xA5, 0x43, 0xE9,\n\t0xAC, 0xAF, 0x43, 0xE9, 0xAC, 0xB2, 0x43, 0xE9,\n\t0xAC, 0xBC, 0x43, 0xE9, 0xAD, 0x9A, 0x43, 0xE9,\n\t0xAD, 0xAF, 0x43, 0xE9, 0xB1, 0x80, 0x43, 0xE9,\n\t0xB1, 0x97, 0x43, 0xE9, 0xB3, 0xA5, 0x43, 0xE9,\n\t0xB3, 0xBD, 0x43, 0xE9, 0xB5, 0xA7, 0x43, 0xE9,\n\t0xB6, 0xB4, 0x43, 0xE9, 0xB7, 0xBA, 0x43, 0xE9,\n\t// Bytes 16c0 - 16ff\n\t0xB8, 0x9E, 0x43, 0xE9, 0xB9, 0xB5, 0x43, 0xE9,\n\t0xB9, 0xBF, 0x43, 0xE9, 0xBA, 0x97, 0x43, 0xE9,\n\t0xBA, 0x9F, 0x43, 0xE9, 0xBA, 0xA5, 0x43, 0xE9,\n\t0xBA, 0xBB, 0x43, 0xE9, 0xBB, 0x83, 0x43, 0xE9,\n\t0xBB, 0x8D, 0x43, 0xE9, 0xBB, 0x8E, 0x43, 0xE9,\n\t0xBB, 0x91, 0x43, 0xE9, 0xBB, 0xB9, 0x43, 0xE9,\n\t0xBB, 0xBD, 0x43, 0xE9, 0xBB, 0xBE, 0x43, 0xE9,\n\t0xBC, 0x85, 0x43, 0xE9, 0xBC, 0x8E, 0x43, 0xE9,\n\t// Bytes 1700 - 173f\n\t0xBC, 0x8F, 0x43, 0xE9, 0xBC, 0x93, 0x43, 0xE9,\n\t0xBC, 0x96, 0x43, 0xE9, 0xBC, 0xA0, 0x43, 0xE9,\n\t0xBC, 0xBB, 0x43, 0xE9, 0xBD, 0x83, 0x43, 0xE9,\n\t0xBD, 0x8A, 0x43, 0xE9, 0xBD, 0x92, 0x43, 0xE9,\n\t0xBE, 0x8D, 0x43, 0xE9, 0xBE, 0x8E, 0x43, 0xE9,\n\t0xBE, 0x9C, 0x43, 0xE9, 0xBE, 0x9F, 0x43, 0xE9,\n\t0xBE, 0xA0, 0x43, 0xEA, 0x99, 0x91, 0x43, 0xEA,\n\t0x9A, 0x89, 0x43, 0xEA, 0x9C, 0xA7, 0x43, 0xEA,\n\t// Bytes 1740 - 177f\n\t0x9D, 0xAF, 0x43, 0xEA, 0x9E, 0x8E, 0x43, 0xEA,\n\t0xAC, 0xB7, 0x43, 0xEA, 0xAD, 0x92, 0x43, 0xEA,\n\t0xAD, 0xA6, 0x43, 0xEA, 0xAD, 0xA7, 0x44, 0xF0,\n\t0x9D, 0xBC, 0x84, 0x44, 0xF0, 0x9D, 0xBC, 0x85,\n\t0x44, 0xF0, 0x9D, 0xBC, 0x86, 0x44, 0xF0, 0x9D,\n\t0xBC, 0x88, 0x44, 0xF0, 0x9D, 0xBC, 0x8A, 0x44,\n\t0xF0, 0x9D, 0xBC, 0x9E, 0x44, 0xF0, 0xA0, 0x84,\n\t0xA2, 0x44, 0xF0, 0xA0, 0x94, 0x9C, 0x44, 0xF0,\n\t// Bytes 1780 - 17bf\n\t0xA0, 0x94, 0xA5, 0x44, 0xF0, 0xA0, 0x95, 0x8B,\n\t0x44, 0xF0, 0xA0, 0x98, 0xBA, 0x44, 0xF0, 0xA0,\n\t0xA0, 0x84, 0x44, 0xF0, 0xA0, 0xA3, 0x9E, 0x44,\n\t0xF0, 0xA0, 0xA8, 0xAC, 0x44, 0xF0, 0xA0, 0xAD,\n\t0xA3, 0x44, 0xF0, 0xA1, 0x93, 0xA4, 0x44, 0xF0,\n\t0xA1, 0x9A, 0xA8, 0x44, 0xF0, 0xA1, 0x9B, 0xAA,\n\t0x44, 0xF0, 0xA1, 0xA7, 0x88, 0x44, 0xF0, 0xA1,\n\t0xAC, 0x98, 0x44, 0xF0, 0xA1, 0xB4, 0x8B, 0x44,\n\t// Bytes 17c0 - 17ff\n\t0xF0, 0xA1, 0xB7, 0xA4, 0x44, 0xF0, 0xA1, 0xB7,\n\t0xA6, 0x44, 0xF0, 0xA2, 0x86, 0x83, 0x44, 0xF0,\n\t0xA2, 0x86, 0x9F, 0x44, 0xF0, 0xA2, 0x8C, 0xB1,\n\t0x44, 0xF0, 0xA2, 0x9B, 0x94, 0x44, 0xF0, 0xA2,\n\t0xA1, 0x84, 0x44, 0xF0, 0xA2, 0xA1, 0x8A, 0x44,\n\t0xF0, 0xA2, 0xAC, 0x8C, 0x44, 0xF0, 0xA2, 0xAF,\n\t0xB1, 0x44, 0xF0, 0xA3, 0x80, 0x8A, 0x44, 0xF0,\n\t0xA3, 0x8A, 0xB8, 0x44, 0xF0, 0xA3, 0x8D, 0x9F,\n\t// Bytes 1800 - 183f\n\t0x44, 0xF0, 0xA3, 0x8E, 0x93, 0x44, 0xF0, 0xA3,\n\t0x8E, 0x9C, 0x44, 0xF0, 0xA3, 0x8F, 0x83, 0x44,\n\t0xF0, 0xA3, 0x8F, 0x95, 0x44, 0xF0, 0xA3, 0x91,\n\t0xAD, 0x44, 0xF0, 0xA3, 0x9A, 0xA3, 0x44, 0xF0,\n\t0xA3, 0xA2, 0xA7, 0x44, 0xF0, 0xA3, 0xAA, 0x8D,\n\t0x44, 0xF0, 0xA3, 0xAB, 0xBA, 0x44, 0xF0, 0xA3,\n\t0xB2, 0xBC, 0x44, 0xF0, 0xA3, 0xB4, 0x9E, 0x44,\n\t0xF0, 0xA3, 0xBB, 0x91, 0x44, 0xF0, 0xA3, 0xBD,\n\t// Bytes 1840 - 187f\n\t0x9E, 0x44, 0xF0, 0xA3, 0xBE, 0x8E, 0x44, 0xF0,\n\t0xA4, 0x89, 0xA3, 0x44, 0xF0, 0xA4, 0x8B, 0xAE,\n\t0x44, 0xF0, 0xA4, 0x8E, 0xAB, 0x44, 0xF0, 0xA4,\n\t0x98, 0x88, 0x44, 0xF0, 0xA4, 0x9C, 0xB5, 0x44,\n\t0xF0, 0xA4, 0xA0, 0x94, 0x44, 0xF0, 0xA4, 0xB0,\n\t0xB6, 0x44, 0xF0, 0xA4, 0xB2, 0x92, 0x44, 0xF0,\n\t0xA4, 0xBE, 0xA1, 0x44, 0xF0, 0xA4, 0xBE, 0xB8,\n\t0x44, 0xF0, 0xA5, 0x81, 0x84, 0x44, 0xF0, 0xA5,\n\t// Bytes 1880 - 18bf\n\t0x83, 0xB2, 0x44, 0xF0, 0xA5, 0x83, 0xB3, 0x44,\n\t0xF0, 0xA5, 0x84, 0x99, 0x44, 0xF0, 0xA5, 0x84,\n\t0xB3, 0x44, 0xF0, 0xA5, 0x89, 0x89, 0x44, 0xF0,\n\t0xA5, 0x90, 0x9D, 0x44, 0xF0, 0xA5, 0x98, 0xA6,\n\t0x44, 0xF0, 0xA5, 0x9A, 0x9A, 0x44, 0xF0, 0xA5,\n\t0x9B, 0x85, 0x44, 0xF0, 0xA5, 0xA5, 0xBC, 0x44,\n\t0xF0, 0xA5, 0xAA, 0xA7, 0x44, 0xF0, 0xA5, 0xAE,\n\t0xAB, 0x44, 0xF0, 0xA5, 0xB2, 0x80, 0x44, 0xF0,\n\t// Bytes 18c0 - 18ff\n\t0xA5, 0xB3, 0x90, 0x44, 0xF0, 0xA5, 0xBE, 0x86,\n\t0x44, 0xF0, 0xA6, 0x87, 0x9A, 0x44, 0xF0, 0xA6,\n\t0x88, 0xA8, 0x44, 0xF0, 0xA6, 0x89, 0x87, 0x44,\n\t0xF0, 0xA6, 0x8B, 0x99, 0x44, 0xF0, 0xA6, 0x8C,\n\t0xBE, 0x44, 0xF0, 0xA6, 0x93, 0x9A, 0x44, 0xF0,\n\t0xA6, 0x94, 0xA3, 0x44, 0xF0, 0xA6, 0x96, 0xA8,\n\t0x44, 0xF0, 0xA6, 0x9E, 0xA7, 0x44, 0xF0, 0xA6,\n\t0x9E, 0xB5, 0x44, 0xF0, 0xA6, 0xAC, 0xBC, 0x44,\n\t// Bytes 1900 - 193f\n\t0xF0, 0xA6, 0xB0, 0xB6, 0x44, 0xF0, 0xA6, 0xB3,\n\t0x95, 0x44, 0xF0, 0xA6, 0xB5, 0xAB, 0x44, 0xF0,\n\t0xA6, 0xBC, 0xAC, 0x44, 0xF0, 0xA6, 0xBE, 0xB1,\n\t0x44, 0xF0, 0xA7, 0x83, 0x92, 0x44, 0xF0, 0xA7,\n\t0x8F, 0x8A, 0x44, 0xF0, 0xA7, 0x99, 0xA7, 0x44,\n\t0xF0, 0xA7, 0xA2, 0xAE, 0x44, 0xF0, 0xA7, 0xA5,\n\t0xA6, 0x44, 0xF0, 0xA7, 0xB2, 0xA8, 0x44, 0xF0,\n\t0xA7, 0xBB, 0x93, 0x44, 0xF0, 0xA7, 0xBC, 0xAF,\n\t// Bytes 1940 - 197f\n\t0x44, 0xF0, 0xA8, 0x97, 0x92, 0x44, 0xF0, 0xA8,\n\t0x97, 0xAD, 0x44, 0xF0, 0xA8, 0x9C, 0xAE, 0x44,\n\t0xF0, 0xA8, 0xAF, 0xBA, 0x44, 0xF0, 0xA8, 0xB5,\n\t0xB7, 0x44, 0xF0, 0xA9, 0x85, 0x85, 0x44, 0xF0,\n\t0xA9, 0x87, 0x9F, 0x44, 0xF0, 0xA9, 0x88, 0x9A,\n\t0x44, 0xF0, 0xA9, 0x90, 0x8A, 0x44, 0xF0, 0xA9,\n\t0x92, 0x96, 0x44, 0xF0, 0xA9, 0x96, 0xB6, 0x44,\n\t0xF0, 0xA9, 0xAC, 0xB0, 0x44, 0xF0, 0xAA, 0x83,\n\t// Bytes 1980 - 19bf\n\t0x8E, 0x44, 0xF0, 0xAA, 0x84, 0x85, 0x44, 0xF0,\n\t0xAA, 0x88, 0x8E, 0x44, 0xF0, 0xAA, 0x8A, 0x91,\n\t0x44, 0xF0, 0xAA, 0x8E, 0x92, 0x44, 0xF0, 0xAA,\n\t0x98, 0x80, 0x42, 0x21, 0x21, 0x42, 0x21, 0x3F,\n\t0x42, 0x2E, 0x2E, 0x42, 0x30, 0x2C, 0x42, 0x30,\n\t0x2E, 0x42, 0x31, 0x2C, 0x42, 0x31, 0x2E, 0x42,\n\t0x31, 0x30, 0x42, 0x31, 0x31, 0x42, 0x31, 0x32,\n\t0x42, 0x31, 0x33, 0x42, 0x31, 0x34, 0x42, 0x31,\n\t// Bytes 19c0 - 19ff\n\t0x35, 0x42, 0x31, 0x36, 0x42, 0x31, 0x37, 0x42,\n\t0x31, 0x38, 0x42, 0x31, 0x39, 0x42, 0x32, 0x2C,\n\t0x42, 0x32, 0x2E, 0x42, 0x32, 0x30, 0x42, 0x32,\n\t0x31, 0x42, 0x32, 0x32, 0x42, 0x32, 0x33, 0x42,\n\t0x32, 0x34, 0x42, 0x32, 0x35, 0x42, 0x32, 0x36,\n\t0x42, 0x32, 0x37, 0x42, 0x32, 0x38, 0x42, 0x32,\n\t0x39, 0x42, 0x33, 0x2C, 0x42, 0x33, 0x2E, 0x42,\n\t0x33, 0x30, 0x42, 0x33, 0x31, 0x42, 0x33, 0x32,\n\t// Bytes 1a00 - 1a3f\n\t0x42, 0x33, 0x33, 0x42, 0x33, 0x34, 0x42, 0x33,\n\t0x35, 0x42, 0x33, 0x36, 0x42, 0x33, 0x37, 0x42,\n\t0x33, 0x38, 0x42, 0x33, 0x39, 0x42, 0x34, 0x2C,\n\t0x42, 0x34, 0x2E, 0x42, 0x34, 0x30, 0x42, 0x34,\n\t0x31, 0x42, 0x34, 0x32, 0x42, 0x34, 0x33, 0x42,\n\t0x34, 0x34, 0x42, 0x34, 0x35, 0x42, 0x34, 0x36,\n\t0x42, 0x34, 0x37, 0x42, 0x34, 0x38, 0x42, 0x34,\n\t0x39, 0x42, 0x35, 0x2C, 0x42, 0x35, 0x2E, 0x42,\n\t// Bytes 1a40 - 1a7f\n\t0x35, 0x30, 0x42, 0x36, 0x2C, 0x42, 0x36, 0x2E,\n\t0x42, 0x37, 0x2C, 0x42, 0x37, 0x2E, 0x42, 0x38,\n\t0x2C, 0x42, 0x38, 0x2E, 0x42, 0x39, 0x2C, 0x42,\n\t0x39, 0x2E, 0x42, 0x3D, 0x3D, 0x42, 0x3F, 0x21,\n\t0x42, 0x3F, 0x3F, 0x42, 0x41, 0x55, 0x42, 0x42,\n\t0x71, 0x42, 0x43, 0x44, 0x42, 0x44, 0x4A, 0x42,\n\t0x44, 0x5A, 0x42, 0x44, 0x7A, 0x42, 0x47, 0x42,\n\t0x42, 0x47, 0x79, 0x42, 0x48, 0x50, 0x42, 0x48,\n\t// Bytes 1a80 - 1abf\n\t0x56, 0x42, 0x48, 0x67, 0x42, 0x48, 0x7A, 0x42,\n\t0x49, 0x49, 0x42, 0x49, 0x4A, 0x42, 0x49, 0x55,\n\t0x42, 0x49, 0x56, 0x42, 0x49, 0x58, 0x42, 0x4B,\n\t0x42, 0x42, 0x4B, 0x4B, 0x42, 0x4B, 0x4D, 0x42,\n\t0x4C, 0x4A, 0x42, 0x4C, 0x6A, 0x42, 0x4D, 0x42,\n\t0x42, 0x4D, 0x43, 0x42, 0x4D, 0x44, 0x42, 0x4D,\n\t0x52, 0x42, 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42,\n\t0x4E, 0x4A, 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F,\n\t// Bytes 1ac0 - 1aff\n\t0x42, 0x50, 0x48, 0x42, 0x50, 0x52, 0x42, 0x50,\n\t0x61, 0x42, 0x52, 0x73, 0x42, 0x53, 0x44, 0x42,\n\t0x53, 0x4D, 0x42, 0x53, 0x53, 0x42, 0x53, 0x76,\n\t0x42, 0x54, 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57,\n\t0x43, 0x42, 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42,\n\t0x58, 0x49, 0x42, 0x63, 0x63, 0x42, 0x63, 0x64,\n\t0x42, 0x63, 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64,\n\t0x61, 0x42, 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42,\n\t// Bytes 1b00 - 1b3f\n\t0x64, 0x7A, 0x42, 0x65, 0x56, 0x42, 0x66, 0x66,\n\t0x42, 0x66, 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66,\n\t0x6D, 0x42, 0x68, 0x61, 0x42, 0x69, 0x69, 0x42,\n\t0x69, 0x6A, 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76,\n\t0x42, 0x69, 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B,\n\t0x56, 0x42, 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42,\n\t0x6B, 0x6C, 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74,\n\t0x42, 0x6C, 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C,\n\t// Bytes 1b40 - 1b7f\n\t0x6E, 0x42, 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42,\n\t0x6D, 0x33, 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56,\n\t0x42, 0x6D, 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D,\n\t0x67, 0x42, 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42,\n\t0x6D, 0x73, 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46,\n\t0x42, 0x6E, 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E,\n\t0x6A, 0x42, 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42,\n\t0x6F, 0x56, 0x42, 0x70, 0x41, 0x42, 0x70, 0x46,\n\t// Bytes 1b80 - 1bbf\n\t0x42, 0x70, 0x56, 0x42, 0x70, 0x57, 0x42, 0x70,\n\t0x63, 0x42, 0x70, 0x73, 0x42, 0x73, 0x72, 0x42,\n\t0x73, 0x74, 0x42, 0x76, 0x69, 0x42, 0x78, 0x69,\n\t0x43, 0x28, 0x31, 0x29, 0x43, 0x28, 0x32, 0x29,\n\t0x43, 0x28, 0x33, 0x29, 0x43, 0x28, 0x34, 0x29,\n\t0x43, 0x28, 0x35, 0x29, 0x43, 0x28, 0x36, 0x29,\n\t0x43, 0x28, 0x37, 0x29, 0x43, 0x28, 0x38, 0x29,\n\t0x43, 0x28, 0x39, 0x29, 0x43, 0x28, 0x41, 0x29,\n\t// Bytes 1bc0 - 1bff\n\t0x43, 0x28, 0x42, 0x29, 0x43, 0x28, 0x43, 0x29,\n\t0x43, 0x28, 0x44, 0x29, 0x43, 0x28, 0x45, 0x29,\n\t0x43, 0x28, 0x46, 0x29, 0x43, 0x28, 0x47, 0x29,\n\t0x43, 0x28, 0x48, 0x29, 0x43, 0x28, 0x49, 0x29,\n\t0x43, 0x28, 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29,\n\t0x43, 0x28, 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29,\n\t0x43, 0x28, 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29,\n\t0x43, 0x28, 0x50, 0x29, 0x43, 0x28, 0x51, 0x29,\n\t// Bytes 1c00 - 1c3f\n\t0x43, 0x28, 0x52, 0x29, 0x43, 0x28, 0x53, 0x29,\n\t0x43, 0x28, 0x54, 0x29, 0x43, 0x28, 0x55, 0x29,\n\t0x43, 0x28, 0x56, 0x29, 0x43, 0x28, 0x57, 0x29,\n\t0x43, 0x28, 0x58, 0x29, 0x43, 0x28, 0x59, 0x29,\n\t0x43, 0x28, 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29,\n\t0x43, 0x28, 0x62, 0x29, 0x43, 0x28, 0x63, 0x29,\n\t0x43, 0x28, 0x64, 0x29, 0x43, 0x28, 0x65, 0x29,\n\t0x43, 0x28, 0x66, 0x29, 0x43, 0x28, 0x67, 0x29,\n\t// Bytes 1c40 - 1c7f\n\t0x43, 0x28, 0x68, 0x29, 0x43, 0x28, 0x69, 0x29,\n\t0x43, 0x28, 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29,\n\t0x43, 0x28, 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29,\n\t0x43, 0x28, 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29,\n\t0x43, 0x28, 0x70, 0x29, 0x43, 0x28, 0x71, 0x29,\n\t0x43, 0x28, 0x72, 0x29, 0x43, 0x28, 0x73, 0x29,\n\t0x43, 0x28, 0x74, 0x29, 0x43, 0x28, 0x75, 0x29,\n\t0x43, 0x28, 0x76, 0x29, 0x43, 0x28, 0x77, 0x29,\n\t// Bytes 1c80 - 1cbf\n\t0x43, 0x28, 0x78, 0x29, 0x43, 0x28, 0x79, 0x29,\n\t0x43, 0x28, 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E,\n\t0x43, 0x31, 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E,\n\t0x43, 0x31, 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E,\n\t0x43, 0x31, 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E,\n\t0x43, 0x31, 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E,\n\t0x43, 0x31, 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E,\n\t0x43, 0x32, 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D,\n\t// Bytes 1cc0 - 1cff\n\t0x43, 0x3D, 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E,\n\t0x43, 0x46, 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A,\n\t0x43, 0x47, 0x50, 0x61, 0x43, 0x49, 0x49, 0x49,\n\t0x43, 0x4C, 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7,\n\t0x43, 0x4D, 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61,\n\t0x43, 0x4D, 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D,\n\t0x43, 0x50, 0x50, 0x56, 0x43, 0x50, 0x54, 0x45,\n\t0x43, 0x54, 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A,\n\t// Bytes 1d00 - 1d3f\n\t0x43, 0x56, 0x49, 0x49, 0x43, 0x58, 0x49, 0x49,\n\t0x43, 0x61, 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73,\n\t0x43, 0x61, 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72,\n\t0x43, 0x63, 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75,\n\t0x43, 0x63, 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32,\n\t0x43, 0x63, 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32,\n\t0x43, 0x64, 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67,\n\t0x43, 0x66, 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C,\n\t// Bytes 1d40 - 1d7f\n\t0x43, 0x67, 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61,\n\t0x43, 0x69, 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A,\n\t0x43, 0x6B, 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32,\n\t0x43, 0x6B, 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9,\n\t0x43, 0x6C, 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7,\n\t0x43, 0x6D, 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32,\n\t0x43, 0x6D, 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C,\n\t0x43, 0x72, 0x61, 0x64, 0x43, 0x76, 0x69, 0x69,\n\t// Bytes 1d80 - 1dbf\n\t0x43, 0x78, 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43,\n\t0x43, 0xC2, 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E,\n\t0x43, 0xCE, 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46,\n\t0x43, 0xCE, 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57,\n\t0x43, 0xCE, 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C,\n\t0x43, 0xCE, 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73,\n\t0x44, 0x28, 0x31, 0x30, 0x29, 0x44, 0x28, 0x31,\n\t0x31, 0x29, 0x44, 0x28, 0x31, 0x32, 0x29, 0x44,\n\t// Bytes 1dc0 - 1dff\n\t0x28, 0x31, 0x33, 0x29, 0x44, 0x28, 0x31, 0x34,\n\t0x29, 0x44, 0x28, 0x31, 0x35, 0x29, 0x44, 0x28,\n\t0x31, 0x36, 0x29, 0x44, 0x28, 0x31, 0x37, 0x29,\n\t0x44, 0x28, 0x31, 0x38, 0x29, 0x44, 0x28, 0x31,\n\t0x39, 0x29, 0x44, 0x28, 0x32, 0x30, 0x29, 0x44,\n\t0x30, 0xE7, 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81,\n\t0x84, 0x44, 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31,\n\t0xE6, 0x9C, 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9,\n\t// Bytes 1e00 - 1e3f\n\t0x44, 0x32, 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6,\n\t0x9C, 0x88, 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44,\n\t0x33, 0xE6, 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C,\n\t0x88, 0x44, 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34,\n\t0xE6, 0x97, 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88,\n\t0x44, 0x34, 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6,\n\t0x97, 0xA5, 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44,\n\t0x35, 0xE7, 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97,\n\t// Bytes 1e40 - 1e7f\n\t0xA5, 0x44, 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36,\n\t0xE7, 0x82, 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5,\n\t0x44, 0x37, 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7,\n\t0x82, 0xB9, 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44,\n\t0x38, 0xE6, 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82,\n\t0xB9, 0x44, 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39,\n\t0xE6, 0x9C, 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9,\n\t0x44, 0x56, 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E,\n\t// Bytes 1e80 - 1ebf\n\t0x6D, 0x2E, 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44,\n\t0x70, 0x2E, 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69,\n\t0x69, 0x44, 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5,\n\t0xB4, 0xD5, 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB,\n\t0x44, 0xD5, 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4,\n\t0xD5, 0xB6, 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44,\n\t0xD7, 0x90, 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9,\n\t0xB4, 0x44, 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8,\n\t// Bytes 1ec0 - 1eff\n\t0xA8, 0xD8, 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8,\n\t0xD8, 0xB2, 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44,\n\t0xD8, 0xA8, 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9,\n\t0x87, 0x44, 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8,\n\t0xA8, 0xD9, 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC,\n\t0x44, 0xD8, 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA,\n\t0xD8, 0xAE, 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44,\n\t// Bytes 1f00 - 1f3f\n\t0xD8, 0xAA, 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9,\n\t0x85, 0x44, 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAA, 0xD9, 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB,\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44,\n\t0xD8, 0xAB, 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9,\n\t0x85, 0x44, 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAB, 0xD9, 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89,\n\t// Bytes 1f40 - 1f7f\n\t0x44, 0xD8, 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC,\n\t0xD8, 0xAD, 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44,\n\t0xD8, 0xAC, 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9,\n\t0x8A, 0x44, 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xAD, 0xD9, 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE,\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44,\n\t0xD8, 0xAE, 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9,\n\t// Bytes 1f80 - 1fbf\n\t0x89, 0x44, 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB3, 0xD8, 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB3, 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB4, 0xD8, 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4,\n\t// Bytes 1fc0 - 1fff\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB4, 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44,\n\t0xD8, 0xB5, 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8,\n\t// Bytes 2000 - 203f\n\t0xB6, 0xD8, 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1,\n\t0x44, 0xD8, 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6,\n\t0xD9, 0x89, 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44,\n\t0xD8, 0xB7, 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9,\n\t0x85, 0x44, 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8,\n\t0xB7, 0xD9, 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85,\n\t0x44, 0xD8, 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44,\n\t// Bytes 2040 - 207f\n\t0xD8, 0xB9, 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8,\n\t0xBA, 0xD9, 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A,\n\t0x44, 0xD9, 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x81, 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9,\n\t0x89, 0x44, 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9,\n\t0x82, 0xD8, 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85,\n\t// Bytes 2080 - 20bf\n\t0x44, 0xD9, 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x83, 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x83, 0xD9, 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85,\n\t0x44, 0xD9, 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x84, 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8,\n\t// Bytes 20c0 - 20ff\n\t0xAD, 0x44, 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x84, 0xD9, 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87,\n\t0x44, 0xD9, 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x85, 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x85, 0xD9, 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89,\n\t0x44, 0xD9, 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86,\n\t// Bytes 2100 - 213f\n\t0xD8, 0xAC, 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44,\n\t0xD9, 0x86, 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8,\n\t0xB1, 0x44, 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9,\n\t0x86, 0xD9, 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86,\n\t0x44, 0xD9, 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86,\n\t0xD9, 0x89, 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44,\n\t0xD9, 0x87, 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9,\n\t0x85, 0x44, 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9,\n\t// Bytes 2140 - 217f\n\t0x87, 0xD9, 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4,\n\t0x44, 0xD9, 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x8A, 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8,\n\t0xB2, 0x44, 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9,\n\t0x8A, 0xD9, 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87,\n\t0x44, 0xD9, 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44,\n\t// Bytes 2180 - 21bf\n\t0xDB, 0x87, 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84,\n\t0x80, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x86, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x8C, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29,\n\t// Bytes 21c0 - 21ff\n\t0x45, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x91, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29,\n\t0x45, 0x28, 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28,\n\t0xE4, 0xB8, 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8,\n\t0x89, 0x29, 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29,\n\t0x45, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28,\n\t0xE4, 0xBA, 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB,\n\t// Bytes 2200 - 223f\n\t0xA3, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29,\n\t0x45, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28,\n\t0xE5, 0x85, 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85,\n\t0xAD, 0x29, 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29,\n\t0x45, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28,\n\t0xE5, 0x8D, 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90,\n\t0x8D, 0x29, 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29,\n\t0x45, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28,\n\t// Bytes 2240 - 227f\n\t0xE5, 0x9C, 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD,\n\t0xA6, 0x29, 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29,\n\t0x45, 0x28, 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28,\n\t0xE6, 0x9C, 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C,\n\t0xA8, 0x29, 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29,\n\t0x45, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28,\n\t0xE7, 0x81, 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89,\n\t0xB9, 0x29, 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29,\n\t// Bytes 2280 - 22bf\n\t0x45, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28,\n\t0xE7, 0xA5, 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5,\n\t0xAD, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29,\n\t0x45, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28,\n\t0xE8, 0xB2, 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3,\n\t0x87, 0x29, 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29,\n\t0x45, 0x30, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6,\n\t// Bytes 22c0 - 22ff\n\t0x9C, 0x88, 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x31, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7,\n\t0x82, 0xB9, 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5,\n\t0x45, 0x31, 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t// Bytes 2300 - 233f\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x36, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x38, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9,\n\t// Bytes 2340 - 237f\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x34, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x38, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39,\n\t0x45, 0x32, 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x30, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6,\n\t// Bytes 2380 - 23bf\n\t0x97, 0xA5, 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5,\n\t0x45, 0x32, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t// Bytes 23c0 - 23ff\n\t0x38, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33,\n\t0x45, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6,\n\t0x97, 0xA5, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34,\n\t0x45, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81,\n\t0x84, 0x35, 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36,\n\t// Bytes 2400 - 243f\n\t0x45, 0x35, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37,\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88,\n\t0x95, 0x6D, 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D,\n\t0x45, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31,\n\t0xE2, 0x81, 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2,\n\t0x88, 0x95, 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88,\n\t0x95, 0x73, 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9,\n\t// Bytes 2440 - 247f\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85,\n\t0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46,\n\t0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE,\n\t0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC,\n\t// Bytes 2480 - 24bf\n\t0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46,\n\t0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8,\n\t0xAA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89,\n\t0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t// Bytes 24c0 - 24ff\n\t0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAD, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC,\n\t0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8,\n\t0xAC, 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89,\n\t0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8,\n\t// Bytes 2500 - 253f\n\t0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3,\n\t0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8,\n\t0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE,\n\t0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5,\n\t// Bytes 2540 - 257f\n\t0xD9, 0x84, 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9,\n\t0x84, 0xDB, 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46,\n\t0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8,\n\t0xB7, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8,\n\t// Bytes 2580 - 25bf\n\t0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8,\n\t0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81,\n\t0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9,\n\t0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84,\n\t// Bytes 25c0 - 25ff\n\t0xDB, 0x92, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85,\n\t0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x83, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84,\n\t0xD8, 0xAC, 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8,\n\t0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9,\n\t// Bytes 2600 - 263f\n\t0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9,\n\t0x84, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC,\n\t0xD8, 0xAE, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9,\n\t0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A,\n\t// Bytes 2640 - 267f\n\t0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9,\n\t0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85,\n\t0xD8, 0xAE, 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9,\n\t0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46,\n\t// Bytes 2680 - 26bf\n\t0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9,\n\t0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t// Bytes 26c0 - 26ff\n\t0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8,\n\t0xA7, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A,\n\t// Bytes 2700 - 273f\n\t0xD9, 0x94, 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xD9, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,\n\t0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9,\n\t// Bytes 2740 - 277f\n\t0x94, 0xDB, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xDB, 0x90, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB,\n\t0x95, 0x46, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2,\n\t0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46,\n\t0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0,\n\t0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD,\n\t0x80, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82,\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0,\n\t// Bytes 2780 - 27bf\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7,\n\t0x46, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46,\n\t0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0,\n\t0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,\n\t0x9C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1,\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE,\n\t// Bytes 27c0 - 27ff\n\t0xB7, 0x46, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x46, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46,\n\t0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2,\n\t0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81,\n\t0xBB, 0xE3, 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88,\n\t0xE3, 0x82, 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xAD, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82,\n\t0xB3, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88,\n\t// Bytes 2800 - 283f\n\t0x46, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46,\n\t0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3,\n\t0x83, 0x9B, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83,\n\t0x9F, 0xE3, 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA,\n\t0xE3, 0x83, 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3,\n\t0x83, 0xA0, 0x46, 0xE4, 0xBB, 0xA4, 0xE5, 0x92,\n\t0x8C, 0x46, 0xE5, 0xA4, 0xA7, 0xE6, 0xAD, 0xA3,\n\t0x46, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90, 0x46,\n\t// Bytes 2840 - 287f\n\t0xE6, 0x98, 0x8E, 0xE6, 0xB2, 0xBB, 0x46, 0xE6,\n\t0x98, 0xAD, 0xE5, 0x92, 0x8C, 0x47, 0x72, 0x61,\n\t0x64, 0xE2, 0x88, 0x95, 0x73, 0x47, 0xE3, 0x80,\n\t0x94, 0x53, 0xE3, 0x80, 0x95, 0x48, 0x28, 0xE1,\n\t0x84, 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x29,\n\t0x48, 0x28, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1,\n\t// Bytes 2880 - 28bf\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x86, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x87, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x89,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,\n\t0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x29,\n\t// Bytes 28c0 - 28ff\n\t0x48, 0x28, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1,\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x90, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x91, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x92,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x72, 0x61, 0x64,\n\t0xE2, 0x88, 0x95, 0x73, 0x32, 0x48, 0xD8, 0xA7,\n\t0xD9, 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0x48, 0xD8,\n\t0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87, 0x48,\n\t// Bytes 2900 - 293f\n\t0xD8, 0xB1, 0xD8, 0xB3, 0xD9, 0x88, 0xD9, 0x84,\n\t0x48, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7, 0xD9,\n\t0x84, 0x48, 0xD8, 0xB5, 0xD9, 0x84, 0xD8, 0xB9,\n\t0xD9, 0x85, 0x48, 0xD8, 0xB9, 0xD9, 0x84, 0xD9,\n\t0x8A, 0xD9, 0x87, 0x48, 0xD9, 0x85, 0xD8, 0xAD,\n\t0xD9, 0x85, 0xD8, 0xAF, 0x48, 0xD9, 0x88, 0xD8,\n\t0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x49, 0xE2, 0x80,\n\t0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x49,\n\t// Bytes 2940 - 297f\n\t0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80,\n\t0xB5, 0x49, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB,\n\t0xE2, 0x88, 0xAB, 0x49, 0xE2, 0x88, 0xAE, 0xE2,\n\t0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x49, 0xE3, 0x80,\n\t0x94, 0xE4, 0xB8, 0x89, 0xE3, 0x80, 0x95, 0x49,\n\t0xE3, 0x80, 0x94, 0xE4, 0xBA, 0x8C, 0xE3, 0x80,\n\t0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0x8B, 0x9D,\n\t0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5,\n\t// Bytes 2980 - 29bf\n\t0xAE, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,\n\t0x94, 0xE6, 0x89, 0x93, 0xE3, 0x80, 0x95, 0x49,\n\t0xE3, 0x80, 0x94, 0xE6, 0x95, 0x97, 0xE3, 0x80,\n\t0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x9C, 0xAC,\n\t0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7,\n\t0x82, 0xB9, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,\n\t0x94, 0xE7, 0x9B, 0x97, 0xE3, 0x80, 0x95, 0x49,\n\t0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t// Bytes 29c0 - 29ff\n\t0xAB, 0x49, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x81, 0x49, 0xE3, 0x82, 0xA6, 0xE3,\n\t0x82, 0xA9, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x82,\n\t0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x49,\n\t0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xA0, 0x49, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x83, 0xAA, 0x49, 0xE3, 0x82, 0xB1, 0xE3,\n\t0x83, 0xBC, 0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82,\n\t// Bytes 2a00 - 2a3f\n\t0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A, 0x49,\n\t0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83,\n\t0x81, 0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0x49, 0xE3, 0x83, 0x86, 0xE3,\n\t0x82, 0x99, 0xE3, 0x82, 0xB7, 0x49, 0xE3, 0x83,\n\t0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49,\n\t0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, 0xE3, 0x83,\n\t0x88, 0x49, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0xA4,\n\t// Bytes 2a40 - 2a7f\n\t0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x92, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83,\n\t0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3, 0x49,\n\t0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3, 0x83,\n\t0xB3, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x82, 0xBD, 0x49, 0xE3, 0x83, 0x98, 0xE3,\n\t0x83, 0xAB, 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83,\n\t0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49,\n\t// Bytes 2a80 - 2abf\n\t0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xB3, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9E, 0xE3,\n\t0x83, 0x83, 0xE3, 0x83, 0x8F, 0x49, 0xE3, 0x83,\n\t0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF, 0x49,\n\t0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAB, 0x49, 0xE3, 0x83, 0xA6, 0xE3, 0x82, 0xA2,\n\t0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83, 0xAF, 0xE3,\n\t// Bytes 2ac0 - 2aff\n\t0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE2, 0x80,\n\t0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2,\n\t0x80, 0xB2, 0x4C, 0xE2, 0x88, 0xAB, 0xE2, 0x88,\n\t0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x4C,\n\t0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3, 0x83,\n\t0x95, 0xE3, 0x82, 0xA1, 0x4C, 0xE3, 0x82, 0xA8,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x83,\n\t0xBC, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99,\n\t// Bytes 2b00 - 2b3f\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3,\n\t0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x9E, 0x4C, 0xE3, 0x82, 0xAB, 0xE3,\n\t0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88,\n\t0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD, 0xE3,\n\t0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82,\n\t0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B, 0xE3,\n\t0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x83,\n\t// Bytes 2b40 - 2b7f\n\t0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xA9, 0xE3, 0x83, 0xA0, 0x4C, 0xE3, 0x82, 0xAF,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0x8D, 0x4C, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x8F, 0xE3,\n\t// Bytes 2b80 - 2bbf\n\t0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x84,\n\t0x4C, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83,\n\t0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0x88, 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF, 0x4C,\n\t0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0x8B, 0xE3, 0x83, 0x92, 0x4C, 0xE3, 0x83, 0x98,\n\t// Bytes 2bc0 - 2bff\n\t0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x82,\n\t0xB9, 0x4C, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0x4C, 0xE3,\n\t0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF,\n\t0xE3, 0x83, 0xAD, 0x4C, 0xE3, 0x83, 0x9F, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3,\n\t0x4C, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83,\n\t// Bytes 2c00 - 2c3f\n\t0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3,\n\t0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAB, 0xE3, 0x83,\n\t0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0x4C,\n\t0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4, 0xBC,\n\t0x9A, 0xE7, 0xA4, 0xBE, 0x4E, 0x28, 0xE1, 0x84,\n\t0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92, 0xE1,\n\t0x85, 0xAE, 0x29, 0x4F, 0xD8, 0xAC, 0xD9, 0x84,\n\t0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7, 0xD9,\n\t// Bytes 2c40 - 2c7f\n\t0x84, 0xD9, 0x87, 0x4F, 0xE3, 0x82, 0xA2, 0xE3,\n\t0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xA2, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x82, 0xA2, 0x4F, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83,\n\t0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xB5, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC,\n\t// Bytes 2c80 - 2cbf\n\t0xE3, 0x83, 0xA0, 0x4F, 0xE3, 0x83, 0x8F, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAC,\n\t0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x98, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x9B, 0xE3,\n\t0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x83, 0x9E, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xA7,\n\t// Bytes 2cc0 - 2cff\n\t0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xA1, 0xE3,\n\t0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x88,\n\t0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xAB, 0x51, 0x28, 0xE1, 0x84, 0x8B,\n\t0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1, 0x85,\n\t0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x52, 0xE3, 0x82,\n\t0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3,\n\t// Bytes 2d00 - 2d3f\n\t0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC,\n\t0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9,\n\t0xE3, 0x83, 0xA0, 0x52, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9,\n\t0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3, 0x83,\n\t// Bytes 2d40 - 2d7f\n\t0xB3, 0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xAD, 0x52, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82,\n\t0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0x52,\n\t0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82,\n\t0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88, 0xE3,\n\t0x83, 0xAB, 0x52, 0xE3, 0x83, 0x95, 0xE3, 0x82,\n\t// Bytes 2d80 - 2dbf\n\t0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7, 0xE3,\n\t0x82, 0xA7, 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83,\n\t0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB,\n\t0x52, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99,\n\t0xE3, 0x83, 0xB3, 0x61, 0xD8, 0xB5, 0xD9, 0x84,\n\t0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9,\n\t// Bytes 2dc0 - 2dff\n\t0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84,\n\t0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88, 0xD8,\n\t0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x06, 0xE0, 0xA7,\n\t0x87, 0xE0, 0xA6, 0xBE, 0x01, 0x06, 0xE0, 0xA7,\n\t0x87, 0xE0, 0xA7, 0x97, 0x01, 0x06, 0xE0, 0xAD,\n\t0x87, 0xE0, 0xAC, 0xBE, 0x01, 0x06, 0xE0, 0xAD,\n\t0x87, 0xE0, 0xAD, 0x96, 0x01, 0x06, 0xE0, 0xAD,\n\t0x87, 0xE0, 0xAD, 0x97, 0x01, 0x06, 0xE0, 0xAE,\n\t// Bytes 2e00 - 2e3f\n\t0x92, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0, 0xAF,\n\t0x86, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0, 0xAF,\n\t0x86, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0, 0xAF,\n\t0x87, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0, 0xB2,\n\t0xBF, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0, 0xB3,\n\t0x86, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0, 0xB3,\n\t0x86, 0xE0, 0xB3, 0x96, 0x01, 0x06, 0xE0, 0xB5,\n\t0x86, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0, 0xB5,\n\t// Bytes 2e40 - 2e7f\n\t0x86, 0xE0, 0xB5, 0x97, 0x01, 0x06, 0xE0, 0xB5,\n\t0x87, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0, 0xB7,\n\t0x99, 0xE0, 0xB7, 0x9F, 0x01, 0x06, 0xE1, 0x80,\n\t0xA5, 0xE1, 0x80, 0xAE, 0x01, 0x06, 0xE1, 0xAC,\n\t0x85, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC,\n\t0x87, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC,\n\t0x89, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC,\n\t0x8B, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC,\n\t// Bytes 2e80 - 2ebf\n\t0x8D, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC,\n\t0x91, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC,\n\t0xBA, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC,\n\t0xBC, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC,\n\t0xBE, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC,\n\t0xBF, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAD,\n\t0x82, 0xE1, 0xAC, 0xB5, 0x01, 0x08, 0xF0, 0x91,\n\t0x84, 0xB1, 0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08,\n\t// Bytes 2ec0 - 2eff\n\t0xF0, 0x91, 0x84, 0xB2, 0xF0, 0x91, 0x84, 0xA7,\n\t0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91,\n\t0x8C, 0xBE, 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87,\n\t0xF0, 0x91, 0x8D, 0x97, 0x01, 0x08, 0xF0, 0x91,\n\t0x92, 0xB9, 0xF0, 0x91, 0x92, 0xB0, 0x01, 0x08,\n\t0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBA,\n\t0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91,\n\t0x92, 0xBD, 0x01, 0x08, 0xF0, 0x91, 0x96, 0xB8,\n\t// Bytes 2f00 - 2f3f\n\t0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0, 0x91,\n\t0x96, 0xB9, 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08,\n\t0xF0, 0x91, 0xA4, 0xB5, 0xF0, 0x91, 0xA4, 0xB0,\n\t0x01, 0x09, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82,\n\t0xE0, 0xB3, 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99,\n\t0xE0, 0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0x16, 0x44,\n\t0x44, 0x5A, 0xCC, 0x8C, 0xCD, 0x44, 0x44, 0x7A,\n\t0xCC, 0x8C, 0xCD, 0x44, 0x64, 0x7A, 0xCC, 0x8C,\n\t// Bytes 2f40 - 2f7f\n\t0xCD, 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93,\n\t0xCD, 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94,\n\t0xCD, 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95,\n\t0xB9, 0x46, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1,\n\t0x01, 0x46, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1,\n\t0x01, 0x46, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1,\n\t0x01, 0x46, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1,\n\t0x01, 0x46, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1,\n\t// Bytes 2f80 - 2fbf\n\t0x01, 0x46, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1,\n\t0x01, 0x46, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1,\n\t0x01, 0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1,\n\t0x01, 0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE,\n\t0x01, 0x46, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1,\n\t0x01, 0x46, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1,\n\t0x01, 0x46, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1,\n\t0x01, 0x46, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1,\n\t// Bytes 2fc0 - 2fff\n\t0x01, 0x46, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1,\n\t0x01, 0x46, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1,\n\t0x01, 0x49, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB,\n\t0xE3, 0x82, 0x99, 0x11, 0x4C, 0xE1, 0x84, 0x8C,\n\t0xE1, 0x85, 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85,\n\t0xB4, 0x01, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82,\n\t0x99, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11,\n\t0x4C, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3,\n\t// Bytes 3000 - 303f\n\t0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x11, 0x4C, 0xE3,\n\t0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,\n\t0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE1, 0x84, 0x8E,\n\t0xE1, 0x85, 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84,\n\t0x80, 0xE1, 0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3,\n\t0x82, 0xB7, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3,\n\t// Bytes 3040 - 307f\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x4F,\n\t0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11,\n\t0x4F, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3,\n\t0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99,\n\t0x11, 0x52, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0x88, 0xE3, 0x82, 0x99, 0x11, 0x52, 0xE3, 0x83,\n\t// Bytes 3080 - 30bf\n\t0x95, 0xE3, 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3,\n\t0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99,\n\t0x11, 0x86, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82,\n\t0x01, 0x86, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F,\n\t0x01, 0x03, 0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D,\n\t0xCC, 0xB8, 0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05,\n\t0x03, 0x41, 0xCC, 0x80, 0xCD, 0x03, 0x41, 0xCC,\n\t0x81, 0xCD, 0x03, 0x41, 0xCC, 0x83, 0xCD, 0x03,\n\t// Bytes 30c0 - 30ff\n\t0x41, 0xCC, 0x84, 0xCD, 0x03, 0x41, 0xCC, 0x89,\n\t0xCD, 0x03, 0x41, 0xCC, 0x8C, 0xCD, 0x03, 0x41,\n\t0xCC, 0x8F, 0xCD, 0x03, 0x41, 0xCC, 0x91, 0xCD,\n\t0x03, 0x41, 0xCC, 0xA5, 0xB9, 0x03, 0x41, 0xCC,\n\t0xA8, 0xA9, 0x03, 0x42, 0xCC, 0x87, 0xCD, 0x03,\n\t0x42, 0xCC, 0xA3, 0xB9, 0x03, 0x42, 0xCC, 0xB1,\n\t0xB9, 0x03, 0x43, 0xCC, 0x81, 0xCD, 0x03, 0x43,\n\t0xCC, 0x82, 0xCD, 0x03, 0x43, 0xCC, 0x87, 0xCD,\n\t// Bytes 3100 - 313f\n\t0x03, 0x43, 0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC,\n\t0x87, 0xCD, 0x03, 0x44, 0xCC, 0x8C, 0xCD, 0x03,\n\t0x44, 0xCC, 0xA3, 0xB9, 0x03, 0x44, 0xCC, 0xA7,\n\t0xA9, 0x03, 0x44, 0xCC, 0xAD, 0xB9, 0x03, 0x44,\n\t0xCC, 0xB1, 0xB9, 0x03, 0x45, 0xCC, 0x80, 0xCD,\n\t0x03, 0x45, 0xCC, 0x81, 0xCD, 0x03, 0x45, 0xCC,\n\t0x83, 0xCD, 0x03, 0x45, 0xCC, 0x86, 0xCD, 0x03,\n\t0x45, 0xCC, 0x87, 0xCD, 0x03, 0x45, 0xCC, 0x88,\n\t// Bytes 3140 - 317f\n\t0xCD, 0x03, 0x45, 0xCC, 0x89, 0xCD, 0x03, 0x45,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x45, 0xCC, 0x8F, 0xCD,\n\t0x03, 0x45, 0xCC, 0x91, 0xCD, 0x03, 0x45, 0xCC,\n\t0xA8, 0xA9, 0x03, 0x45, 0xCC, 0xAD, 0xB9, 0x03,\n\t0x45, 0xCC, 0xB0, 0xB9, 0x03, 0x46, 0xCC, 0x87,\n\t0xCD, 0x03, 0x47, 0xCC, 0x81, 0xCD, 0x03, 0x47,\n\t0xCC, 0x82, 0xCD, 0x03, 0x47, 0xCC, 0x84, 0xCD,\n\t0x03, 0x47, 0xCC, 0x86, 0xCD, 0x03, 0x47, 0xCC,\n\t// Bytes 3180 - 31bf\n\t0x87, 0xCD, 0x03, 0x47, 0xCC, 0x8C, 0xCD, 0x03,\n\t0x47, 0xCC, 0xA7, 0xA9, 0x03, 0x48, 0xCC, 0x82,\n\t0xCD, 0x03, 0x48, 0xCC, 0x87, 0xCD, 0x03, 0x48,\n\t0xCC, 0x88, 0xCD, 0x03, 0x48, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x48, 0xCC, 0xA3, 0xB9, 0x03, 0x48, 0xCC,\n\t0xA7, 0xA9, 0x03, 0x48, 0xCC, 0xAE, 0xB9, 0x03,\n\t0x49, 0xCC, 0x80, 0xCD, 0x03, 0x49, 0xCC, 0x81,\n\t0xCD, 0x03, 0x49, 0xCC, 0x82, 0xCD, 0x03, 0x49,\n\t// Bytes 31c0 - 31ff\n\t0xCC, 0x83, 0xCD, 0x03, 0x49, 0xCC, 0x84, 0xCD,\n\t0x03, 0x49, 0xCC, 0x86, 0xCD, 0x03, 0x49, 0xCC,\n\t0x87, 0xCD, 0x03, 0x49, 0xCC, 0x89, 0xCD, 0x03,\n\t0x49, 0xCC, 0x8C, 0xCD, 0x03, 0x49, 0xCC, 0x8F,\n\t0xCD, 0x03, 0x49, 0xCC, 0x91, 0xCD, 0x03, 0x49,\n\t0xCC, 0xA3, 0xB9, 0x03, 0x49, 0xCC, 0xA8, 0xA9,\n\t0x03, 0x49, 0xCC, 0xB0, 0xB9, 0x03, 0x4A, 0xCC,\n\t0x82, 0xCD, 0x03, 0x4B, 0xCC, 0x81, 0xCD, 0x03,\n\t// Bytes 3200 - 323f\n\t0x4B, 0xCC, 0x8C, 0xCD, 0x03, 0x4B, 0xCC, 0xA3,\n\t0xB9, 0x03, 0x4B, 0xCC, 0xA7, 0xA9, 0x03, 0x4B,\n\t0xCC, 0xB1, 0xB9, 0x03, 0x4C, 0xCC, 0x81, 0xCD,\n\t0x03, 0x4C, 0xCC, 0x8C, 0xCD, 0x03, 0x4C, 0xCC,\n\t0xA7, 0xA9, 0x03, 0x4C, 0xCC, 0xAD, 0xB9, 0x03,\n\t0x4C, 0xCC, 0xB1, 0xB9, 0x03, 0x4D, 0xCC, 0x81,\n\t0xCD, 0x03, 0x4D, 0xCC, 0x87, 0xCD, 0x03, 0x4D,\n\t0xCC, 0xA3, 0xB9, 0x03, 0x4E, 0xCC, 0x80, 0xCD,\n\t// Bytes 3240 - 327f\n\t0x03, 0x4E, 0xCC, 0x81, 0xCD, 0x03, 0x4E, 0xCC,\n\t0x83, 0xCD, 0x03, 0x4E, 0xCC, 0x87, 0xCD, 0x03,\n\t0x4E, 0xCC, 0x8C, 0xCD, 0x03, 0x4E, 0xCC, 0xA3,\n\t0xB9, 0x03, 0x4E, 0xCC, 0xA7, 0xA9, 0x03, 0x4E,\n\t0xCC, 0xAD, 0xB9, 0x03, 0x4E, 0xCC, 0xB1, 0xB9,\n\t0x03, 0x4F, 0xCC, 0x80, 0xCD, 0x03, 0x4F, 0xCC,\n\t0x81, 0xCD, 0x03, 0x4F, 0xCC, 0x86, 0xCD, 0x03,\n\t0x4F, 0xCC, 0x89, 0xCD, 0x03, 0x4F, 0xCC, 0x8B,\n\t// Bytes 3280 - 32bf\n\t0xCD, 0x03, 0x4F, 0xCC, 0x8C, 0xCD, 0x03, 0x4F,\n\t0xCC, 0x8F, 0xCD, 0x03, 0x4F, 0xCC, 0x91, 0xCD,\n\t0x03, 0x50, 0xCC, 0x81, 0xCD, 0x03, 0x50, 0xCC,\n\t0x87, 0xCD, 0x03, 0x52, 0xCC, 0x81, 0xCD, 0x03,\n\t0x52, 0xCC, 0x87, 0xCD, 0x03, 0x52, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x52, 0xCC, 0x8F, 0xCD, 0x03, 0x52,\n\t0xCC, 0x91, 0xCD, 0x03, 0x52, 0xCC, 0xA7, 0xA9,\n\t0x03, 0x52, 0xCC, 0xB1, 0xB9, 0x03, 0x53, 0xCC,\n\t// Bytes 32c0 - 32ff\n\t0x82, 0xCD, 0x03, 0x53, 0xCC, 0x87, 0xCD, 0x03,\n\t0x53, 0xCC, 0xA6, 0xB9, 0x03, 0x53, 0xCC, 0xA7,\n\t0xA9, 0x03, 0x54, 0xCC, 0x87, 0xCD, 0x03, 0x54,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x54, 0xCC, 0xA3, 0xB9,\n\t0x03, 0x54, 0xCC, 0xA6, 0xB9, 0x03, 0x54, 0xCC,\n\t0xA7, 0xA9, 0x03, 0x54, 0xCC, 0xAD, 0xB9, 0x03,\n\t0x54, 0xCC, 0xB1, 0xB9, 0x03, 0x55, 0xCC, 0x80,\n\t0xCD, 0x03, 0x55, 0xCC, 0x81, 0xCD, 0x03, 0x55,\n\t// Bytes 3300 - 333f\n\t0xCC, 0x82, 0xCD, 0x03, 0x55, 0xCC, 0x86, 0xCD,\n\t0x03, 0x55, 0xCC, 0x89, 0xCD, 0x03, 0x55, 0xCC,\n\t0x8A, 0xCD, 0x03, 0x55, 0xCC, 0x8B, 0xCD, 0x03,\n\t0x55, 0xCC, 0x8C, 0xCD, 0x03, 0x55, 0xCC, 0x8F,\n\t0xCD, 0x03, 0x55, 0xCC, 0x91, 0xCD, 0x03, 0x55,\n\t0xCC, 0xA3, 0xB9, 0x03, 0x55, 0xCC, 0xA4, 0xB9,\n\t0x03, 0x55, 0xCC, 0xA8, 0xA9, 0x03, 0x55, 0xCC,\n\t0xAD, 0xB9, 0x03, 0x55, 0xCC, 0xB0, 0xB9, 0x03,\n\t// Bytes 3340 - 337f\n\t0x56, 0xCC, 0x83, 0xCD, 0x03, 0x56, 0xCC, 0xA3,\n\t0xB9, 0x03, 0x57, 0xCC, 0x80, 0xCD, 0x03, 0x57,\n\t0xCC, 0x81, 0xCD, 0x03, 0x57, 0xCC, 0x82, 0xCD,\n\t0x03, 0x57, 0xCC, 0x87, 0xCD, 0x03, 0x57, 0xCC,\n\t0x88, 0xCD, 0x03, 0x57, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x58, 0xCC, 0x87, 0xCD, 0x03, 0x58, 0xCC, 0x88,\n\t0xCD, 0x03, 0x59, 0xCC, 0x80, 0xCD, 0x03, 0x59,\n\t0xCC, 0x81, 0xCD, 0x03, 0x59, 0xCC, 0x82, 0xCD,\n\t// Bytes 3380 - 33bf\n\t0x03, 0x59, 0xCC, 0x83, 0xCD, 0x03, 0x59, 0xCC,\n\t0x84, 0xCD, 0x03, 0x59, 0xCC, 0x87, 0xCD, 0x03,\n\t0x59, 0xCC, 0x88, 0xCD, 0x03, 0x59, 0xCC, 0x89,\n\t0xCD, 0x03, 0x59, 0xCC, 0xA3, 0xB9, 0x03, 0x5A,\n\t0xCC, 0x81, 0xCD, 0x03, 0x5A, 0xCC, 0x82, 0xCD,\n\t0x03, 0x5A, 0xCC, 0x87, 0xCD, 0x03, 0x5A, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x5A, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x5A, 0xCC, 0xB1, 0xB9, 0x03, 0x61, 0xCC, 0x80,\n\t// Bytes 33c0 - 33ff\n\t0xCD, 0x03, 0x61, 0xCC, 0x81, 0xCD, 0x03, 0x61,\n\t0xCC, 0x83, 0xCD, 0x03, 0x61, 0xCC, 0x84, 0xCD,\n\t0x03, 0x61, 0xCC, 0x89, 0xCD, 0x03, 0x61, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x61, 0xCC, 0x8F, 0xCD, 0x03,\n\t0x61, 0xCC, 0x91, 0xCD, 0x03, 0x61, 0xCC, 0xA5,\n\t0xB9, 0x03, 0x61, 0xCC, 0xA8, 0xA9, 0x03, 0x62,\n\t0xCC, 0x87, 0xCD, 0x03, 0x62, 0xCC, 0xA3, 0xB9,\n\t0x03, 0x62, 0xCC, 0xB1, 0xB9, 0x03, 0x63, 0xCC,\n\t// Bytes 3400 - 343f\n\t0x81, 0xCD, 0x03, 0x63, 0xCC, 0x82, 0xCD, 0x03,\n\t0x63, 0xCC, 0x87, 0xCD, 0x03, 0x63, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x64, 0xCC, 0x87, 0xCD, 0x03, 0x64,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x64, 0xCC, 0xA3, 0xB9,\n\t0x03, 0x64, 0xCC, 0xA7, 0xA9, 0x03, 0x64, 0xCC,\n\t0xAD, 0xB9, 0x03, 0x64, 0xCC, 0xB1, 0xB9, 0x03,\n\t0x65, 0xCC, 0x80, 0xCD, 0x03, 0x65, 0xCC, 0x81,\n\t0xCD, 0x03, 0x65, 0xCC, 0x83, 0xCD, 0x03, 0x65,\n\t// Bytes 3440 - 347f\n\t0xCC, 0x86, 0xCD, 0x03, 0x65, 0xCC, 0x87, 0xCD,\n\t0x03, 0x65, 0xCC, 0x88, 0xCD, 0x03, 0x65, 0xCC,\n\t0x89, 0xCD, 0x03, 0x65, 0xCC, 0x8C, 0xCD, 0x03,\n\t0x65, 0xCC, 0x8F, 0xCD, 0x03, 0x65, 0xCC, 0x91,\n\t0xCD, 0x03, 0x65, 0xCC, 0xA8, 0xA9, 0x03, 0x65,\n\t0xCC, 0xAD, 0xB9, 0x03, 0x65, 0xCC, 0xB0, 0xB9,\n\t0x03, 0x66, 0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC,\n\t0x81, 0xCD, 0x03, 0x67, 0xCC, 0x82, 0xCD, 0x03,\n\t// Bytes 3480 - 34bf\n\t0x67, 0xCC, 0x84, 0xCD, 0x03, 0x67, 0xCC, 0x86,\n\t0xCD, 0x03, 0x67, 0xCC, 0x87, 0xCD, 0x03, 0x67,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x67, 0xCC, 0xA7, 0xA9,\n\t0x03, 0x68, 0xCC, 0x82, 0xCD, 0x03, 0x68, 0xCC,\n\t0x87, 0xCD, 0x03, 0x68, 0xCC, 0x88, 0xCD, 0x03,\n\t0x68, 0xCC, 0x8C, 0xCD, 0x03, 0x68, 0xCC, 0xA3,\n\t0xB9, 0x03, 0x68, 0xCC, 0xA7, 0xA9, 0x03, 0x68,\n\t0xCC, 0xAE, 0xB9, 0x03, 0x68, 0xCC, 0xB1, 0xB9,\n\t// Bytes 34c0 - 34ff\n\t0x03, 0x69, 0xCC, 0x80, 0xCD, 0x03, 0x69, 0xCC,\n\t0x81, 0xCD, 0x03, 0x69, 0xCC, 0x82, 0xCD, 0x03,\n\t0x69, 0xCC, 0x83, 0xCD, 0x03, 0x69, 0xCC, 0x84,\n\t0xCD, 0x03, 0x69, 0xCC, 0x86, 0xCD, 0x03, 0x69,\n\t0xCC, 0x89, 0xCD, 0x03, 0x69, 0xCC, 0x8C, 0xCD,\n\t0x03, 0x69, 0xCC, 0x8F, 0xCD, 0x03, 0x69, 0xCC,\n\t0x91, 0xCD, 0x03, 0x69, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x69, 0xCC, 0xA8, 0xA9, 0x03, 0x69, 0xCC, 0xB0,\n\t// Bytes 3500 - 353f\n\t0xB9, 0x03, 0x6A, 0xCC, 0x82, 0xCD, 0x03, 0x6A,\n\t0xCC, 0x8C, 0xCD, 0x03, 0x6B, 0xCC, 0x81, 0xCD,\n\t0x03, 0x6B, 0xCC, 0x8C, 0xCD, 0x03, 0x6B, 0xCC,\n\t0xA3, 0xB9, 0x03, 0x6B, 0xCC, 0xA7, 0xA9, 0x03,\n\t0x6B, 0xCC, 0xB1, 0xB9, 0x03, 0x6C, 0xCC, 0x81,\n\t0xCD, 0x03, 0x6C, 0xCC, 0x8C, 0xCD, 0x03, 0x6C,\n\t0xCC, 0xA7, 0xA9, 0x03, 0x6C, 0xCC, 0xAD, 0xB9,\n\t0x03, 0x6C, 0xCC, 0xB1, 0xB9, 0x03, 0x6D, 0xCC,\n\t// Bytes 3540 - 357f\n\t0x81, 0xCD, 0x03, 0x6D, 0xCC, 0x87, 0xCD, 0x03,\n\t0x6D, 0xCC, 0xA3, 0xB9, 0x03, 0x6E, 0xCC, 0x80,\n\t0xCD, 0x03, 0x6E, 0xCC, 0x81, 0xCD, 0x03, 0x6E,\n\t0xCC, 0x83, 0xCD, 0x03, 0x6E, 0xCC, 0x87, 0xCD,\n\t0x03, 0x6E, 0xCC, 0x8C, 0xCD, 0x03, 0x6E, 0xCC,\n\t0xA3, 0xB9, 0x03, 0x6E, 0xCC, 0xA7, 0xA9, 0x03,\n\t0x6E, 0xCC, 0xAD, 0xB9, 0x03, 0x6E, 0xCC, 0xB1,\n\t0xB9, 0x03, 0x6F, 0xCC, 0x80, 0xCD, 0x03, 0x6F,\n\t// Bytes 3580 - 35bf\n\t0xCC, 0x81, 0xCD, 0x03, 0x6F, 0xCC, 0x86, 0xCD,\n\t0x03, 0x6F, 0xCC, 0x89, 0xCD, 0x03, 0x6F, 0xCC,\n\t0x8B, 0xCD, 0x03, 0x6F, 0xCC, 0x8C, 0xCD, 0x03,\n\t0x6F, 0xCC, 0x8F, 0xCD, 0x03, 0x6F, 0xCC, 0x91,\n\t0xCD, 0x03, 0x70, 0xCC, 0x81, 0xCD, 0x03, 0x70,\n\t0xCC, 0x87, 0xCD, 0x03, 0x72, 0xCC, 0x81, 0xCD,\n\t0x03, 0x72, 0xCC, 0x87, 0xCD, 0x03, 0x72, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x72, 0xCC, 0x8F, 0xCD, 0x03,\n\t// Bytes 35c0 - 35ff\n\t0x72, 0xCC, 0x91, 0xCD, 0x03, 0x72, 0xCC, 0xA7,\n\t0xA9, 0x03, 0x72, 0xCC, 0xB1, 0xB9, 0x03, 0x73,\n\t0xCC, 0x82, 0xCD, 0x03, 0x73, 0xCC, 0x87, 0xCD,\n\t0x03, 0x73, 0xCC, 0xA6, 0xB9, 0x03, 0x73, 0xCC,\n\t0xA7, 0xA9, 0x03, 0x74, 0xCC, 0x87, 0xCD, 0x03,\n\t0x74, 0xCC, 0x88, 0xCD, 0x03, 0x74, 0xCC, 0x8C,\n\t0xCD, 0x03, 0x74, 0xCC, 0xA3, 0xB9, 0x03, 0x74,\n\t0xCC, 0xA6, 0xB9, 0x03, 0x74, 0xCC, 0xA7, 0xA9,\n\t// Bytes 3600 - 363f\n\t0x03, 0x74, 0xCC, 0xAD, 0xB9, 0x03, 0x74, 0xCC,\n\t0xB1, 0xB9, 0x03, 0x75, 0xCC, 0x80, 0xCD, 0x03,\n\t0x75, 0xCC, 0x81, 0xCD, 0x03, 0x75, 0xCC, 0x82,\n\t0xCD, 0x03, 0x75, 0xCC, 0x86, 0xCD, 0x03, 0x75,\n\t0xCC, 0x89, 0xCD, 0x03, 0x75, 0xCC, 0x8A, 0xCD,\n\t0x03, 0x75, 0xCC, 0x8B, 0xCD, 0x03, 0x75, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x75, 0xCC, 0x8F, 0xCD, 0x03,\n\t0x75, 0xCC, 0x91, 0xCD, 0x03, 0x75, 0xCC, 0xA3,\n\t// Bytes 3640 - 367f\n\t0xB9, 0x03, 0x75, 0xCC, 0xA4, 0xB9, 0x03, 0x75,\n\t0xCC, 0xA8, 0xA9, 0x03, 0x75, 0xCC, 0xAD, 0xB9,\n\t0x03, 0x75, 0xCC, 0xB0, 0xB9, 0x03, 0x76, 0xCC,\n\t0x83, 0xCD, 0x03, 0x76, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x77, 0xCC, 0x80, 0xCD, 0x03, 0x77, 0xCC, 0x81,\n\t0xCD, 0x03, 0x77, 0xCC, 0x82, 0xCD, 0x03, 0x77,\n\t0xCC, 0x87, 0xCD, 0x03, 0x77, 0xCC, 0x88, 0xCD,\n\t0x03, 0x77, 0xCC, 0x8A, 0xCD, 0x03, 0x77, 0xCC,\n\t// Bytes 3680 - 36bf\n\t0xA3, 0xB9, 0x03, 0x78, 0xCC, 0x87, 0xCD, 0x03,\n\t0x78, 0xCC, 0x88, 0xCD, 0x03, 0x79, 0xCC, 0x80,\n\t0xCD, 0x03, 0x79, 0xCC, 0x81, 0xCD, 0x03, 0x79,\n\t0xCC, 0x82, 0xCD, 0x03, 0x79, 0xCC, 0x83, 0xCD,\n\t0x03, 0x79, 0xCC, 0x84, 0xCD, 0x03, 0x79, 0xCC,\n\t0x87, 0xCD, 0x03, 0x79, 0xCC, 0x88, 0xCD, 0x03,\n\t0x79, 0xCC, 0x89, 0xCD, 0x03, 0x79, 0xCC, 0x8A,\n\t0xCD, 0x03, 0x79, 0xCC, 0xA3, 0xB9, 0x03, 0x7A,\n\t// Bytes 36c0 - 36ff\n\t0xCC, 0x81, 0xCD, 0x03, 0x7A, 0xCC, 0x82, 0xCD,\n\t0x03, 0x7A, 0xCC, 0x87, 0xCD, 0x03, 0x7A, 0xCC,\n\t0x8C, 0xCD, 0x03, 0x7A, 0xCC, 0xA3, 0xB9, 0x03,\n\t0x7A, 0xCC, 0xB1, 0xB9, 0x04, 0xC2, 0xA8, 0xCC,\n\t0x80, 0xCE, 0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCE,\n\t0x04, 0xC2, 0xA8, 0xCD, 0x82, 0xCE, 0x04, 0xC3,\n\t0x86, 0xCC, 0x81, 0xCD, 0x04, 0xC3, 0x86, 0xCC,\n\t0x84, 0xCD, 0x04, 0xC3, 0x98, 0xCC, 0x81, 0xCD,\n\t// Bytes 3700 - 373f\n\t0x04, 0xC3, 0xA6, 0xCC, 0x81, 0xCD, 0x04, 0xC3,\n\t0xA6, 0xCC, 0x84, 0xCD, 0x04, 0xC3, 0xB8, 0xCC,\n\t0x81, 0xCD, 0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xCD,\n\t0x04, 0xC6, 0xB7, 0xCC, 0x8C, 0xCD, 0x04, 0xCA,\n\t0x92, 0xCC, 0x8C, 0xCD, 0x04, 0xCE, 0x91, 0xCC,\n\t0x80, 0xCD, 0x04, 0xCE, 0x91, 0xCC, 0x81, 0xCD,\n\t0x04, 0xCE, 0x91, 0xCC, 0x84, 0xCD, 0x04, 0xCE,\n\t0x91, 0xCC, 0x86, 0xCD, 0x04, 0xCE, 0x91, 0xCD,\n\t// Bytes 3740 - 377f\n\t0x85, 0xDD, 0x04, 0xCE, 0x95, 0xCC, 0x80, 0xCD,\n\t0x04, 0xCE, 0x95, 0xCC, 0x81, 0xCD, 0x04, 0xCE,\n\t0x97, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0x97, 0xCC,\n\t0x81, 0xCD, 0x04, 0xCE, 0x97, 0xCD, 0x85, 0xDD,\n\t0x04, 0xCE, 0x99, 0xCC, 0x80, 0xCD, 0x04, 0xCE,\n\t0x99, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0x99, 0xCC,\n\t0x84, 0xCD, 0x04, 0xCE, 0x99, 0xCC, 0x86, 0xCD,\n\t0x04, 0xCE, 0x99, 0xCC, 0x88, 0xCD, 0x04, 0xCE,\n\t// Bytes 3780 - 37bf\n\t0x9F, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0x9F, 0xCC,\n\t0x81, 0xCD, 0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xCD,\n\t0x04, 0xCE, 0xA5, 0xCC, 0x80, 0xCD, 0x04, 0xCE,\n\t0xA5, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0xA5, 0xCC,\n\t0x84, 0xCD, 0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xCD,\n\t0x04, 0xCE, 0xA5, 0xCC, 0x88, 0xCD, 0x04, 0xCE,\n\t0xA9, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0xA9, 0xCC,\n\t0x81, 0xCD, 0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xDD,\n\t// Bytes 37c0 - 37ff\n\t0x04, 0xCE, 0xB1, 0xCC, 0x84, 0xCD, 0x04, 0xCE,\n\t0xB1, 0xCC, 0x86, 0xCD, 0x04, 0xCE, 0xB1, 0xCD,\n\t0x85, 0xDD, 0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xCD,\n\t0x04, 0xCE, 0xB5, 0xCC, 0x81, 0xCD, 0x04, 0xCE,\n\t0xB7, 0xCD, 0x85, 0xDD, 0x04, 0xCE, 0xB9, 0xCC,\n\t0x80, 0xCD, 0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xCD,\n\t0x04, 0xCE, 0xB9, 0xCC, 0x84, 0xCD, 0x04, 0xCE,\n\t0xB9, 0xCC, 0x86, 0xCD, 0x04, 0xCE, 0xB9, 0xCD,\n\t// Bytes 3800 - 383f\n\t0x82, 0xCD, 0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xCD,\n\t0x04, 0xCE, 0xBF, 0xCC, 0x81, 0xCD, 0x04, 0xCF,\n\t0x81, 0xCC, 0x93, 0xCD, 0x04, 0xCF, 0x81, 0xCC,\n\t0x94, 0xCD, 0x04, 0xCF, 0x85, 0xCC, 0x80, 0xCD,\n\t0x04, 0xCF, 0x85, 0xCC, 0x81, 0xCD, 0x04, 0xCF,\n\t0x85, 0xCC, 0x84, 0xCD, 0x04, 0xCF, 0x85, 0xCC,\n\t0x86, 0xCD, 0x04, 0xCF, 0x85, 0xCD, 0x82, 0xCD,\n\t0x04, 0xCF, 0x89, 0xCD, 0x85, 0xDD, 0x04, 0xCF,\n\t// Bytes 3840 - 387f\n\t0x92, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x92, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0x86, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD0, 0x90, 0xCC, 0x86, 0xCD, 0x04, 0xD0,\n\t0x90, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x93, 0xCC,\n\t0x81, 0xCD, 0x04, 0xD0, 0x95, 0xCC, 0x80, 0xCD,\n\t0x04, 0xD0, 0x95, 0xCC, 0x86, 0xCD, 0x04, 0xD0,\n\t0x95, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x96, 0xCC,\n\t0x86, 0xCD, 0x04, 0xD0, 0x96, 0xCC, 0x88, 0xCD,\n\t// Bytes 3880 - 38bf\n\t0x04, 0xD0, 0x97, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0x98, 0xCC, 0x80, 0xCD, 0x04, 0xD0, 0x98, 0xCC,\n\t0x84, 0xCD, 0x04, 0xD0, 0x98, 0xCC, 0x86, 0xCD,\n\t0x04, 0xD0, 0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0x9A, 0xCC, 0x81, 0xCD, 0x04, 0xD0, 0x9E, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xCD,\n\t0x04, 0xD0, 0xA3, 0xCC, 0x86, 0xCD, 0x04, 0xD0,\n\t0xA3, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0xA3, 0xCC,\n\t// Bytes 38c0 - 38ff\n\t0x8B, 0xCD, 0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD0, 0xAB, 0xCC, 0x88, 0xCD, 0x04, 0xD0,\n\t0xAD, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0xB0, 0xCC,\n\t0x86, 0xCD, 0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD0, 0xB3, 0xCC, 0x81, 0xCD, 0x04, 0xD0,\n\t0xB5, 0xCC, 0x80, 0xCD, 0x04, 0xD0, 0xB5, 0xCC,\n\t0x86, 0xCD, 0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD0, 0xB6, 0xCC, 0x86, 0xCD, 0x04, 0xD0,\n\t// Bytes 3900 - 393f\n\t0xB6, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0xB7, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xCD,\n\t0x04, 0xD0, 0xB8, 0xCC, 0x84, 0xCD, 0x04, 0xD0,\n\t0xB8, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xB8, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xCD,\n\t0x04, 0xD0, 0xBE, 0xCC, 0x88, 0xCD, 0x04, 0xD1,\n\t0x83, 0xCC, 0x84, 0xCD, 0x04, 0xD1, 0x83, 0xCC,\n\t0x86, 0xCD, 0x04, 0xD1, 0x83, 0xCC, 0x88, 0xCD,\n\t// Bytes 3940 - 397f\n\t0x04, 0xD1, 0x83, 0xCC, 0x8B, 0xCD, 0x04, 0xD1,\n\t0x87, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0x8B, 0xCC,\n\t0x88, 0xCD, 0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD1, 0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD1,\n\t0xB4, 0xCC, 0x8F, 0xCD, 0x04, 0xD1, 0xB5, 0xCC,\n\t0x8F, 0xCD, 0x04, 0xD3, 0x98, 0xCC, 0x88, 0xCD,\n\t0x04, 0xD3, 0x99, 0xCC, 0x88, 0xCD, 0x04, 0xD3,\n\t0xA8, 0xCC, 0x88, 0xCD, 0x04, 0xD3, 0xA9, 0xCC,\n\t// Bytes 3980 - 39bf\n\t0x88, 0xCD, 0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xCD,\n\t0x04, 0xD8, 0xA7, 0xD9, 0x94, 0xCD, 0x04, 0xD8,\n\t0xA7, 0xD9, 0x95, 0xB9, 0x04, 0xD9, 0x88, 0xD9,\n\t0x94, 0xCD, 0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xCD,\n\t0x04, 0xDB, 0x81, 0xD9, 0x94, 0xCD, 0x04, 0xDB,\n\t0x92, 0xD9, 0x94, 0xCD, 0x04, 0xDB, 0x95, 0xD9,\n\t0x94, 0xCD, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80,\n\t0xCE, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCE,\n\t// Bytes 39c0 - 39ff\n\t0x05, 0x41, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05,\n\t0x41, 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x41,\n\t0xCC, 0x86, 0xCC, 0x80, 0xCE, 0x05, 0x41, 0xCC,\n\t0x86, 0xCC, 0x81, 0xCE, 0x05, 0x41, 0xCC, 0x86,\n\t0xCC, 0x83, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC,\n\t0x89, 0xCE, 0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84,\n\t0xCE, 0x05, 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCE,\n\t0x05, 0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xCE, 0x05,\n\t// Bytes 3a00 - 3a3f\n\t0x41, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x41,\n\t0xCC, 0xA3, 0xCC, 0x86, 0xCE, 0x05, 0x43, 0xCC,\n\t0xA7, 0xCC, 0x81, 0xCE, 0x05, 0x45, 0xCC, 0x82,\n\t0xCC, 0x80, 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC,\n\t0x81, 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83,\n\t0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCE,\n\t0x05, 0x45, 0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05,\n\t0x45, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05, 0x45,\n\t// Bytes 3a40 - 3a7f\n\t0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x45, 0xCC,\n\t0xA7, 0xCC, 0x86, 0xCE, 0x05, 0x49, 0xCC, 0x88,\n\t0xCC, 0x81, 0xCE, 0x05, 0x4C, 0xCC, 0xA3, 0xCC,\n\t0x84, 0xCE, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80,\n\t0xCE, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCE,\n\t0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05,\n\t0x4F, 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x4F,\n\t0xCC, 0x83, 0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC,\n\t// Bytes 3a80 - 3abf\n\t0x83, 0xCC, 0x84, 0xCE, 0x05, 0x4F, 0xCC, 0x83,\n\t0xCC, 0x88, 0xCE, 0x05, 0x4F, 0xCC, 0x84, 0xCC,\n\t0x80, 0xCE, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81,\n\t0xCE, 0x05, 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCE,\n\t0x05, 0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05,\n\t0x4F, 0xCC, 0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x4F,\n\t0xCC, 0x9B, 0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC,\n\t0x9B, 0xCC, 0x83, 0xCE, 0x05, 0x4F, 0xCC, 0x9B,\n\t// Bytes 3ac0 - 3aff\n\t0xCC, 0x89, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC,\n\t0xA3, 0xBA, 0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82,\n\t0xCE, 0x05, 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCE,\n\t0x05, 0x52, 0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05,\n\t0x53, 0xCC, 0x81, 0xCC, 0x87, 0xCE, 0x05, 0x53,\n\t0xCC, 0x8C, 0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC,\n\t0xA3, 0xCC, 0x87, 0xCE, 0x05, 0x55, 0xCC, 0x83,\n\t0xCC, 0x81, 0xCE, 0x05, 0x55, 0xCC, 0x84, 0xCC,\n\t// Bytes 3b00 - 3b3f\n\t0x88, 0xCE, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80,\n\t0xCE, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCE,\n\t0x05, 0x55, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05,\n\t0x55, 0xCC, 0x88, 0xCC, 0x8C, 0xCE, 0x05, 0x55,\n\t0xCC, 0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x55, 0xCC,\n\t0x9B, 0xCC, 0x81, 0xCE, 0x05, 0x55, 0xCC, 0x9B,\n\t0xCC, 0x83, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC,\n\t0x89, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3,\n\t// Bytes 3b40 - 3b7f\n\t0xBA, 0x05, 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCE,\n\t0x05, 0x61, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05,\n\t0x61, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x61,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x61, 0xCC,\n\t0x86, 0xCC, 0x80, 0xCE, 0x05, 0x61, 0xCC, 0x86,\n\t0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC,\n\t0x83, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89,\n\t0xCE, 0x05, 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCE,\n\t// Bytes 3b80 - 3bbf\n\t0x05, 0x61, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05,\n\t0x61, 0xCC, 0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x61,\n\t0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x61, 0xCC,\n\t0xA3, 0xCC, 0x86, 0xCE, 0x05, 0x63, 0xCC, 0xA7,\n\t0xCC, 0x81, 0xCE, 0x05, 0x65, 0xCC, 0x82, 0xCC,\n\t0x80, 0xCE, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81,\n\t0xCE, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCE,\n\t0x05, 0x65, 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05,\n\t// Bytes 3bc0 - 3bff\n\t0x65, 0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05, 0x65,\n\t0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05, 0x65, 0xCC,\n\t0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x65, 0xCC, 0xA7,\n\t0xCC, 0x86, 0xCE, 0x05, 0x69, 0xCC, 0x88, 0xCC,\n\t0x81, 0xCE, 0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84,\n\t0xCE, 0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCE,\n\t0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05,\n\t0x6F, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x6F,\n\t// Bytes 3c00 - 3c3f\n\t0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x6F, 0xCC,\n\t0x83, 0xCC, 0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x83,\n\t0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC,\n\t0x88, 0xCE, 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80,\n\t0xCE, 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCE,\n\t0x05, 0x6F, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05,\n\t0x6F, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x6F,\n\t0xCC, 0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x6F, 0xCC,\n\t// Bytes 3c40 - 3c7f\n\t0x9B, 0xCC, 0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x9B,\n\t0xCC, 0x83, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC,\n\t0x89, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3,\n\t0xBA, 0x05, 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE,\n\t0x05, 0x6F, 0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05,\n\t0x72, 0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x73,\n\t0xCC, 0x81, 0xCC, 0x87, 0xCE, 0x05, 0x73, 0xCC,\n\t0x8C, 0xCC, 0x87, 0xCE, 0x05, 0x73, 0xCC, 0xA3,\n\t// Bytes 3c80 - 3cbf\n\t0xCC, 0x87, 0xCE, 0x05, 0x75, 0xCC, 0x83, 0xCC,\n\t0x81, 0xCE, 0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88,\n\t0xCE, 0x05, 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCE,\n\t0x05, 0x75, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05,\n\t0x75, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x75,\n\t0xCC, 0x88, 0xCC, 0x8C, 0xCE, 0x05, 0x75, 0xCC,\n\t0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x75, 0xCC, 0x9B,\n\t0xCC, 0x81, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC,\n\t// Bytes 3cc0 - 3cff\n\t0x83, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA,\n\t0x05, 0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0xCE, 0x05,\n\t0xE1, 0xBE, 0xBF, 0xCC, 0x81, 0xCE, 0x05, 0xE1,\n\t0xBE, 0xBF, 0xCD, 0x82, 0xCE, 0x05, 0xE1, 0xBF,\n\t0xBE, 0xCC, 0x80, 0xCE, 0x05, 0xE1, 0xBF, 0xBE,\n\t0xCC, 0x81, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCD,\n\t0x82, 0xCE, 0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8,\n\t// Bytes 3d00 - 3d3f\n\t0x05, 0x05, 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x87, 0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x87, 0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87,\n\t0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05,\n\t// Bytes 3d40 - 3d7f\n\t0x05, 0xE2, 0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x88, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x89, 0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0x85, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05,\n\t// Bytes 3d80 - 3dbf\n\t0xE2, 0x89, 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x89, 0xB3, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0xB6, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x8A, 0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t// Bytes 3dc0 - 3dff\n\t0x8A, 0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0x86, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x8A, 0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0xAB, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t// Bytes 3e00 - 3e3f\n\t0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8,\n\t0x05, 0x06, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80,\n\t// Bytes 3e40 - 3e7f\n\t0xCE, 0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82,\n\t0xCE, 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81,\n\t// Bytes 3e80 - 3ebf\n\t0xCE, 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCE, 0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82,\n\t// Bytes 3ec0 - 3eff\n\t0xCE, 0x06, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80,\n\t// Bytes 3f00 - 3f3f\n\t0xCE, 0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85,\n\t// Bytes 3f40 - 3f7f\n\t0xDE, 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82,\n\t0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82,\n\t0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81,\n\t// Bytes 3f80 - 3fbf\n\t0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCE, 0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82,\n\t// Bytes 3fc0 - 3fff\n\t0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82,\n\t0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80,\n\t0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82,\n\t0xCE, 0x06, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85,\n\t// Bytes 4000 - 403f\n\t0xDE, 0x06, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85,\n\t0xDE, 0x06, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDE, 0x06, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC,\n\t0x0D, 0x06, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC,\n\t0x0D, 0x06, 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC,\n\t0x0D, 0x06, 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96,\n\t0x89, 0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A,\n\t// Bytes 4040 - 407f\n\t0x15, 0x06, 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99,\n\t// Bytes 4080 - 40bf\n\t0x11, 0x06, 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99,\n\t// Bytes 40c0 - 40ff\n\t0x11, 0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A,\n\t0x11, 0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A,\n\t0x11, 0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A,\n\t0x11, 0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A,\n\t// Bytes 4100 - 413f\n\t0x11, 0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A,\n\t0x11, 0x06, 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99,\n\t// Bytes 4140 - 417f\n\t0x11, 0x06, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99,\n\t// Bytes 4180 - 41bf\n\t0x11, 0x06, 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A,\n\t0x11, 0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A,\n\t0x11, 0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99,\n\t// Bytes 41c0 - 41ff\n\t0x11, 0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A,\n\t0x11, 0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A,\n\t0x11, 0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A,\n\t0x11, 0x06, 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99,\n\t// Bytes 4200 - 423f\n\t0x11, 0x06, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99,\n\t0x11, 0x06, 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99,\n\t0x11, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93,\n\t0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81,\n\t// Bytes 4240 - 427f\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x94,\n\t0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,\n\t// Bytes 4280 - 42bf\n\t0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93,\n\t0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x94,\n\t// Bytes 42c0 - 42ff\n\t0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1,\n\t0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85,\n\t// Bytes 4300 - 433f\n\t0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93,\n\t0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7,\n\t0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x94,\n\t0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89,\n\t// Bytes 4340 - 437f\n\t0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85,\n\t0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82,\n\t0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94,\n\t0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,\n\t0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85,\n\t0xDF, 0x08, 0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91,\n\t// Bytes 4380 - 43bf\n\t0x82, 0xBA, 0x0D, 0x08, 0xF0, 0x91, 0x82, 0x9B,\n\t0xF0, 0x91, 0x82, 0xBA, 0x0D, 0x08, 0xF0, 0x91,\n\t0x82, 0xA5, 0xF0, 0x91, 0x82, 0xBA, 0x0D, 0x42,\n\t0xC2, 0xB4, 0x01, 0x43, 0x20, 0xCC, 0x81, 0xCD,\n\t0x43, 0x20, 0xCC, 0x83, 0xCD, 0x43, 0x20, 0xCC,\n\t0x84, 0xCD, 0x43, 0x20, 0xCC, 0x85, 0xCD, 0x43,\n\t0x20, 0xCC, 0x86, 0xCD, 0x43, 0x20, 0xCC, 0x87,\n\t0xCD, 0x43, 0x20, 0xCC, 0x88, 0xCD, 0x43, 0x20,\n\t// Bytes 43c0 - 43ff\n\t0xCC, 0x8A, 0xCD, 0x43, 0x20, 0xCC, 0x8B, 0xCD,\n\t0x43, 0x20, 0xCC, 0x93, 0xCD, 0x43, 0x20, 0xCC,\n\t0x94, 0xCD, 0x43, 0x20, 0xCC, 0xA7, 0xA9, 0x43,\n\t0x20, 0xCC, 0xA8, 0xA9, 0x43, 0x20, 0xCC, 0xB3,\n\t0xB9, 0x43, 0x20, 0xCD, 0x82, 0xCD, 0x43, 0x20,\n\t0xCD, 0x85, 0xDD, 0x43, 0x20, 0xD9, 0x8B, 0x5D,\n\t0x43, 0x20, 0xD9, 0x8C, 0x61, 0x43, 0x20, 0xD9,\n\t0x8D, 0x65, 0x43, 0x20, 0xD9, 0x8E, 0x69, 0x43,\n\t// Bytes 4400 - 443f\n\t0x20, 0xD9, 0x8F, 0x6D, 0x43, 0x20, 0xD9, 0x90,\n\t0x71, 0x43, 0x20, 0xD9, 0x91, 0x75, 0x43, 0x20,\n\t0xD9, 0x92, 0x79, 0x43, 0x41, 0xCC, 0x8A, 0xCD,\n\t0x43, 0x73, 0xCC, 0x87, 0xCD, 0x44, 0x20, 0xE3,\n\t0x82, 0x99, 0x11, 0x44, 0x20, 0xE3, 0x82, 0x9A,\n\t0x11, 0x44, 0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x44,\n\t0xCE, 0x91, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x95,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x97, 0xCC, 0x81,\n\t// Bytes 4440 - 447f\n\t0xCD, 0x44, 0xCE, 0x99, 0xCC, 0x81, 0xCD, 0x44,\n\t0xCE, 0x9F, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xA5,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xA5, 0xCC, 0x88,\n\t0xCD, 0x44, 0xCE, 0xA9, 0xCC, 0x81, 0xCD, 0x44,\n\t0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB5,\n\t0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB7, 0xCC, 0x81,\n\t0xCD, 0x44, 0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x44,\n\t0xCE, 0xBF, 0xCC, 0x81, 0xCD, 0x44, 0xCF, 0x85,\n\t// Bytes 4480 - 44bf\n\t0xCC, 0x81, 0xCD, 0x44, 0xCF, 0x89, 0xCC, 0x81,\n\t0xCD, 0x44, 0xD7, 0x90, 0xD6, 0xB7, 0x35, 0x44,\n\t0xD7, 0x90, 0xD6, 0xB8, 0x39, 0x44, 0xD7, 0x90,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x91, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x91, 0xD6, 0xBF, 0x4D, 0x44,\n\t0xD7, 0x92, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x93,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x94, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x95, 0xD6, 0xB9, 0x3D, 0x44,\n\t// Bytes 44c0 - 44ff\n\t0xD7, 0x95, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x96,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x98, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x99, 0xD6, 0xB4, 0x29, 0x44,\n\t0xD7, 0x99, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9A,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9B, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0x9B, 0xD6, 0xBF, 0x4D, 0x44,\n\t0xD7, 0x9C, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9E,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA0, 0xD6, 0xBC,\n\t// Bytes 4500 - 453f\n\t0x45, 0x44, 0xD7, 0xA1, 0xD6, 0xBC, 0x45, 0x44,\n\t0xD7, 0xA3, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA4,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA4, 0xD6, 0xBF,\n\t0x4D, 0x44, 0xD7, 0xA6, 0xD6, 0xBC, 0x45, 0x44,\n\t0xD7, 0xA7, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA8,\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA9, 0xD6, 0xBC,\n\t0x45, 0x44, 0xD7, 0xA9, 0xD7, 0x81, 0x51, 0x44,\n\t0xD7, 0xA9, 0xD7, 0x82, 0x55, 0x44, 0xD7, 0xAA,\n\t// Bytes 4540 - 457f\n\t0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xB2, 0xD6, 0xB7,\n\t0x35, 0x44, 0xD8, 0xA7, 0xD9, 0x8B, 0x5D, 0x44,\n\t0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x44, 0xD8, 0xA7,\n\t0xD9, 0x94, 0xCD, 0x44, 0xD8, 0xA7, 0xD9, 0x95,\n\t0xB9, 0x44, 0xD8, 0xB0, 0xD9, 0xB0, 0x7D, 0x44,\n\t0xD8, 0xB1, 0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x80,\n\t0xD9, 0x8B, 0x5D, 0x44, 0xD9, 0x80, 0xD9, 0x8E,\n\t0x69, 0x44, 0xD9, 0x80, 0xD9, 0x8F, 0x6D, 0x44,\n\t// Bytes 4580 - 45bf\n\t0xD9, 0x80, 0xD9, 0x90, 0x71, 0x44, 0xD9, 0x80,\n\t0xD9, 0x91, 0x75, 0x44, 0xD9, 0x80, 0xD9, 0x92,\n\t0x79, 0x44, 0xD9, 0x87, 0xD9, 0xB0, 0x7D, 0x44,\n\t0xD9, 0x88, 0xD9, 0x94, 0xCD, 0x44, 0xD9, 0x89,\n\t0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xCD, 0x44, 0xDB, 0x92, 0xD9, 0x94, 0xCD, 0x44,\n\t0xDB, 0x95, 0xD9, 0x94, 0xCD, 0x45, 0x20, 0xCC,\n\t0x88, 0xCC, 0x80, 0xCE, 0x45, 0x20, 0xCC, 0x88,\n\t// Bytes 45c0 - 45ff\n\t0xCC, 0x81, 0xCE, 0x45, 0x20, 0xCC, 0x88, 0xCD,\n\t0x82, 0xCE, 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80,\n\t0xCE, 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCE,\n\t0x45, 0x20, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x45,\n\t0x20, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x45, 0x20,\n\t0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x45, 0x20, 0xCC,\n\t0x94, 0xCD, 0x82, 0xCE, 0x45, 0x20, 0xD9, 0x8C,\n\t0xD9, 0x91, 0x76, 0x45, 0x20, 0xD9, 0x8D, 0xD9,\n\t// Bytes 4600 - 463f\n\t0x91, 0x76, 0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91,\n\t0x76, 0x45, 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x76,\n\t0x45, 0x20, 0xD9, 0x90, 0xD9, 0x91, 0x76, 0x45,\n\t0x20, 0xD9, 0x91, 0xD9, 0xB0, 0x7E, 0x45, 0xE2,\n\t0xAB, 0x9D, 0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9,\n\t0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x46, 0xCF, 0x85,\n\t0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x46, 0xD7, 0xA9,\n\t0xD6, 0xBC, 0xD7, 0x81, 0x52, 0x46, 0xD7, 0xA9,\n\t// Bytes 4640 - 467f\n\t0xD6, 0xBC, 0xD7, 0x82, 0x56, 0x46, 0xD9, 0x80,\n\t0xD9, 0x8E, 0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80,\n\t0xD9, 0x8F, 0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80,\n\t0xD9, 0x90, 0xD9, 0x91, 0x76, 0x46, 0xE0, 0xA4,\n\t0x95, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t0x96, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t0x97, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t0x9C, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t// Bytes 4680 - 46bf\n\t0xA1, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t0xA2, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t0xAB, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4,\n\t0xAF, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA6,\n\t0xA1, 0xE0, 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6,\n\t0xA2, 0xE0, 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6,\n\t0xAF, 0xE0, 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA8,\n\t0x96, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8,\n\t// Bytes 46c0 - 46ff\n\t0x97, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8,\n\t0x9C, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8,\n\t0xAB, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8,\n\t0xB2, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8,\n\t0xB8, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xAC,\n\t0xA1, 0xE0, 0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xAC,\n\t0xA2, 0xE0, 0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xBE,\n\t0xB2, 0xE0, 0xBE, 0x80, 0xA1, 0x46, 0xE0, 0xBE,\n\t// Bytes 4700 - 473f\n\t0xB3, 0xE0, 0xBE, 0x80, 0xA1, 0x46, 0xE3, 0x83,\n\t0x86, 0xE3, 0x82, 0x99, 0x11, 0x48, 0xF0, 0x9D,\n\t0x85, 0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x48,\n\t0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5,\n\t0xB1, 0x48, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xB1, 0x48, 0xF0, 0x9D, 0x86, 0xBA,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x49, 0xE0, 0xBE,\n\t0xB2, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xA2,\n\t// Bytes 4740 - 477f\n\t0x49, 0xE0, 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0,\n\t0xBE, 0x80, 0xA2, 0x4C, 0xF0, 0x9D, 0x85, 0x98,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE,\n\t0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x4C,\n\t0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5,\n\t0xF0, 0x9D, 0x85, 0xB0, 0xB2, 0x4C, 0xF0, 0x9D,\n\t0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,\n\t// Bytes 4780 - 47bf\n\t0x85, 0xB1, 0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98,\n\t0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2,\n\t0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D,\n\t0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xB2, 0x4C,\n\t0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5,\n\t0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x4C, 0xF0, 0x9D,\n\t0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,\n\t0x85, 0xAE, 0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xBA,\n\t// Bytes 47c0 - 47ff\n\t0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF,\n\t0xB2, 0x83, 0x41, 0xCC, 0x82, 0xCD, 0x83, 0x41,\n\t0xCC, 0x86, 0xCD, 0x83, 0x41, 0xCC, 0x87, 0xCD,\n\t0x83, 0x41, 0xCC, 0x88, 0xCD, 0x83, 0x41, 0xCC,\n\t0x8A, 0xCD, 0x83, 0x41, 0xCC, 0xA3, 0xB9, 0x83,\n\t0x43, 0xCC, 0xA7, 0xA9, 0x83, 0x45, 0xCC, 0x82,\n\t0xCD, 0x83, 0x45, 0xCC, 0x84, 0xCD, 0x83, 0x45,\n\t0xCC, 0xA3, 0xB9, 0x83, 0x45, 0xCC, 0xA7, 0xA9,\n\t// Bytes 4800 - 483f\n\t0x83, 0x49, 0xCC, 0x88, 0xCD, 0x83, 0x4C, 0xCC,\n\t0xA3, 0xB9, 0x83, 0x4F, 0xCC, 0x82, 0xCD, 0x83,\n\t0x4F, 0xCC, 0x83, 0xCD, 0x83, 0x4F, 0xCC, 0x84,\n\t0xCD, 0x83, 0x4F, 0xCC, 0x87, 0xCD, 0x83, 0x4F,\n\t0xCC, 0x88, 0xCD, 0x83, 0x4F, 0xCC, 0x9B, 0xB1,\n\t0x83, 0x4F, 0xCC, 0xA3, 0xB9, 0x83, 0x4F, 0xCC,\n\t0xA8, 0xA9, 0x83, 0x52, 0xCC, 0xA3, 0xB9, 0x83,\n\t0x53, 0xCC, 0x81, 0xCD, 0x83, 0x53, 0xCC, 0x8C,\n\t// Bytes 4840 - 487f\n\t0xCD, 0x83, 0x53, 0xCC, 0xA3, 0xB9, 0x83, 0x55,\n\t0xCC, 0x83, 0xCD, 0x83, 0x55, 0xCC, 0x84, 0xCD,\n\t0x83, 0x55, 0xCC, 0x88, 0xCD, 0x83, 0x55, 0xCC,\n\t0x9B, 0xB1, 0x83, 0x61, 0xCC, 0x82, 0xCD, 0x83,\n\t0x61, 0xCC, 0x86, 0xCD, 0x83, 0x61, 0xCC, 0x87,\n\t0xCD, 0x83, 0x61, 0xCC, 0x88, 0xCD, 0x83, 0x61,\n\t0xCC, 0x8A, 0xCD, 0x83, 0x61, 0xCC, 0xA3, 0xB9,\n\t0x83, 0x63, 0xCC, 0xA7, 0xA9, 0x83, 0x65, 0xCC,\n\t// Bytes 4880 - 48bf\n\t0x82, 0xCD, 0x83, 0x65, 0xCC, 0x84, 0xCD, 0x83,\n\t0x65, 0xCC, 0xA3, 0xB9, 0x83, 0x65, 0xCC, 0xA7,\n\t0xA9, 0x83, 0x69, 0xCC, 0x88, 0xCD, 0x83, 0x6C,\n\t0xCC, 0xA3, 0xB9, 0x83, 0x6F, 0xCC, 0x82, 0xCD,\n\t0x83, 0x6F, 0xCC, 0x83, 0xCD, 0x83, 0x6F, 0xCC,\n\t0x84, 0xCD, 0x83, 0x6F, 0xCC, 0x87, 0xCD, 0x83,\n\t0x6F, 0xCC, 0x88, 0xCD, 0x83, 0x6F, 0xCC, 0x9B,\n\t0xB1, 0x83, 0x6F, 0xCC, 0xA3, 0xB9, 0x83, 0x6F,\n\t// Bytes 48c0 - 48ff\n\t0xCC, 0xA8, 0xA9, 0x83, 0x72, 0xCC, 0xA3, 0xB9,\n\t0x83, 0x73, 0xCC, 0x81, 0xCD, 0x83, 0x73, 0xCC,\n\t0x8C, 0xCD, 0x83, 0x73, 0xCC, 0xA3, 0xB9, 0x83,\n\t0x75, 0xCC, 0x83, 0xCD, 0x83, 0x75, 0xCC, 0x84,\n\t0xCD, 0x83, 0x75, 0xCC, 0x88, 0xCD, 0x83, 0x75,\n\t0xCC, 0x9B, 0xB1, 0x84, 0xCE, 0x91, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCE, 0x95, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x95,\n\t// Bytes 4900 - 493f\n\t0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x97, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x99,\n\t0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x9F, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCE, 0x9F, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xA9,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xA9, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x84,\n\t// Bytes 4940 - 497f\n\t0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x84, 0xCE, 0xB1,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x84,\n\t0xCE, 0xB5, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB5,\n\t0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x80,\n\t0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x84,\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB7,\n\t0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xB7, 0xCD, 0x82,\n\t// Bytes 4980 - 49bf\n\t0xCD, 0x84, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x84,\n\t0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB9,\n\t0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xBF, 0xCC, 0x93,\n\t0xCD, 0x84, 0xCE, 0xBF, 0xCC, 0x94, 0xCD, 0x84,\n\t0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x84, 0xCF, 0x85,\n\t0xCC, 0x93, 0xCD, 0x84, 0xCF, 0x85, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x84,\n\t0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x84, 0xCF, 0x89,\n\t// Bytes 49c0 - 49ff\n\t0xCC, 0x93, 0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x94,\n\t0xCD, 0x84, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x86,\n\t0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86,\n\t// Bytes 4a00 - 4a3f\n\t0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86,\n\t// Bytes 4a40 - 4a7f\n\t0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86,\n\t// Bytes 4a80 - 4abf\n\t0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86,\n\t// Bytes 4ac0 - 4aff\n\t0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86,\n\t0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86,\n\t0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86,\n\t0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x42,\n\t0xCC, 0x80, 0xCD, 0x33, 0x42, 0xCC, 0x81, 0xCD,\n\t0x33, 0x42, 0xCC, 0x93, 0xCD, 0x33, 0x43, 0xE1,\n\t// Bytes 4b00 - 4b3f\n\t0x85, 0xA1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xA5, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xA9, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00,\n\t// Bytes 4b40 - 4b7f\n\t0x43, 0xE1, 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xB1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2,\n\t0x01, 0x00, 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00,\n\t0x43, 0xE1, 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1,\n\t0x85, 0xB5, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA,\n\t// Bytes 4b80 - 4bbf\n\t0x01, 0x00, 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00,\n\t0x43, 0xE1, 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1,\n\t0x86, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1,\n\t0x01, 0x00, 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00,\n\t0x43, 0xE1, 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1,\n\t0x86, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5,\n\t0x01, 0x00, 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCE,\n\t0x33, 0x43, 0xE3, 0x82, 0x99, 0x11, 0x04, 0x43,\n\t// Bytes 4bc0 - 4bff\n\t0xE3, 0x82, 0x9A, 0x11, 0x04, 0x46, 0xE0, 0xBD,\n\t0xB1, 0xE0, 0xBD, 0xB2, 0xA2, 0x27, 0x46, 0xE0,\n\t0xBD, 0xB1, 0xE0, 0xBD, 0xB4, 0xA6, 0x27, 0x46,\n\t0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xA2, 0x27,\n\t0x00, 0x01,\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfcTrie. Total size: 10798 bytes (10.54 KiB). Checksum: b5981cc85e3bd14.\ntype nfcTrie struct{}\n\nfunc newNfcTrie(i int) *nfcTrie {\n\treturn &nfcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 46:\n\t\treturn uint16(nfcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 46\n\t\treturn uint16(nfcSparse.lookup(n, b))\n\t}\n}\n\n// nfcValues: 48 blocks, 3072 entries, 6144 bytes\n// The third block is the zero block.\nvar nfcValues = [3072]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x30b0, 0xc1: 0x30b5, 0xc2: 0x47c9, 0xc3: 0x30ba, 0xc4: 0x47d8, 0xc5: 0x47dd,\n\t0xc6: 0xa000, 0xc7: 0x47e7, 0xc8: 0x3123, 0xc9: 0x3128, 0xca: 0x47ec, 0xcb: 0x313c,\n\t0xcc: 0x31af, 0xcd: 0x31b4, 0xce: 0x31b9, 0xcf: 0x4800, 0xd1: 0x3245,\n\t0xd2: 0x3268, 0xd3: 0x326d, 0xd4: 0x480a, 0xd5: 0x480f, 0xd6: 0x481e,\n\t0xd8: 0xa000, 0xd9: 0x32f4, 0xda: 0x32f9, 0xdb: 0x32fe, 0xdc: 0x4850, 0xdd: 0x3376,\n\t0xe0: 0x33bc, 0xe1: 0x33c1, 0xe2: 0x485a, 0xe3: 0x33c6,\n\t0xe4: 0x4869, 0xe5: 0x486e, 0xe6: 0xa000, 0xe7: 0x4878, 0xe8: 0x342f, 0xe9: 0x3434,\n\t0xea: 0x487d, 0xeb: 0x3448, 0xec: 0x34c0, 0xed: 0x34c5, 0xee: 0x34ca, 0xef: 0x4891,\n\t0xf1: 0x3556, 0xf2: 0x3579, 0xf3: 0x357e, 0xf4: 0x489b, 0xf5: 0x48a0,\n\t0xf6: 0x48af, 0xf8: 0xa000, 0xf9: 0x360a, 0xfa: 0x360f, 0xfb: 0x3614,\n\t0xfc: 0x48e1, 0xfd: 0x3691, 0xff: 0x36aa,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x30bf, 0x101: 0x33cb, 0x102: 0x47ce, 0x103: 0x485f, 0x104: 0x30dd, 0x105: 0x33e9,\n\t0x106: 0x30f1, 0x107: 0x33fd, 0x108: 0x30f6, 0x109: 0x3402, 0x10a: 0x30fb, 0x10b: 0x3407,\n\t0x10c: 0x3100, 0x10d: 0x340c, 0x10e: 0x310a, 0x10f: 0x3416,\n\t0x112: 0x47f1, 0x113: 0x4882, 0x114: 0x3132, 0x115: 0x343e, 0x116: 0x3137, 0x117: 0x3443,\n\t0x118: 0x3155, 0x119: 0x3461, 0x11a: 0x3146, 0x11b: 0x3452, 0x11c: 0x316e, 0x11d: 0x347a,\n\t0x11e: 0x3178, 0x11f: 0x3484, 0x120: 0x317d, 0x121: 0x3489, 0x122: 0x3187, 0x123: 0x3493,\n\t0x124: 0x318c, 0x125: 0x3498, 0x128: 0x31be, 0x129: 0x34cf,\n\t0x12a: 0x31c3, 0x12b: 0x34d4, 0x12c: 0x31c8, 0x12d: 0x34d9, 0x12e: 0x31eb, 0x12f: 0x34f7,\n\t0x130: 0x31cd, 0x134: 0x31f5, 0x135: 0x3501,\n\t0x136: 0x3209, 0x137: 0x351a, 0x139: 0x3213, 0x13a: 0x3524, 0x13b: 0x321d,\n\t0x13c: 0x352e, 0x13d: 0x3218, 0x13e: 0x3529,\n\t// Block 0x5, offset 0x140\n\t0x143: 0x3240, 0x144: 0x3551, 0x145: 0x3259,\n\t0x146: 0x356a, 0x147: 0x324f, 0x148: 0x3560,\n\t0x14c: 0x4814, 0x14d: 0x48a5, 0x14e: 0x3272, 0x14f: 0x3583, 0x150: 0x327c, 0x151: 0x358d,\n\t0x154: 0x329a, 0x155: 0x35ab, 0x156: 0x32b3, 0x157: 0x35c4,\n\t0x158: 0x32a4, 0x159: 0x35b5, 0x15a: 0x4837, 0x15b: 0x48c8, 0x15c: 0x32bd, 0x15d: 0x35ce,\n\t0x15e: 0x32cc, 0x15f: 0x35dd, 0x160: 0x483c, 0x161: 0x48cd, 0x162: 0x32e5, 0x163: 0x35fb,\n\t0x164: 0x32d6, 0x165: 0x35ec, 0x168: 0x4846, 0x169: 0x48d7,\n\t0x16a: 0x484b, 0x16b: 0x48dc, 0x16c: 0x3303, 0x16d: 0x3619, 0x16e: 0x330d, 0x16f: 0x3623,\n\t0x170: 0x3312, 0x171: 0x3628, 0x172: 0x3330, 0x173: 0x3646, 0x174: 0x3353, 0x175: 0x3669,\n\t0x176: 0x337b, 0x177: 0x3696, 0x178: 0x338f, 0x179: 0x339e, 0x17a: 0x36be, 0x17b: 0x33a8,\n\t0x17c: 0x36c8, 0x17d: 0x33ad, 0x17e: 0x36cd, 0x17f: 0xa000,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x8100, 0x185: 0x8100,\n\t0x186: 0x8100,\n\t0x18d: 0x30c9, 0x18e: 0x33d5, 0x18f: 0x31d7, 0x190: 0x34e3, 0x191: 0x3281,\n\t0x192: 0x3592, 0x193: 0x3317, 0x194: 0x362d, 0x195: 0x3b10, 0x196: 0x3c9f, 0x197: 0x3b09,\n\t0x198: 0x3c98, 0x199: 0x3b17, 0x19a: 0x3ca6, 0x19b: 0x3b02, 0x19c: 0x3c91,\n\t0x19e: 0x39f1, 0x19f: 0x3b80, 0x1a0: 0x39ea, 0x1a1: 0x3b79, 0x1a2: 0x36f4, 0x1a3: 0x3706,\n\t0x1a6: 0x3182, 0x1a7: 0x348e, 0x1a8: 0x31ff, 0x1a9: 0x3510,\n\t0x1aa: 0x482d, 0x1ab: 0x48be, 0x1ac: 0x3ad1, 0x1ad: 0x3c60, 0x1ae: 0x3718, 0x1af: 0x371e,\n\t0x1b0: 0x3506, 0x1b4: 0x3169, 0x1b5: 0x3475,\n\t0x1b8: 0x323b, 0x1b9: 0x354c, 0x1ba: 0x39f8, 0x1bb: 0x3b87,\n\t0x1bc: 0x36ee, 0x1bd: 0x3700, 0x1be: 0x36fa, 0x1bf: 0x370c,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x30ce, 0x1c1: 0x33da, 0x1c2: 0x30d3, 0x1c3: 0x33df, 0x1c4: 0x314b, 0x1c5: 0x3457,\n\t0x1c6: 0x3150, 0x1c7: 0x345c, 0x1c8: 0x31dc, 0x1c9: 0x34e8, 0x1ca: 0x31e1, 0x1cb: 0x34ed,\n\t0x1cc: 0x3286, 0x1cd: 0x3597, 0x1ce: 0x328b, 0x1cf: 0x359c, 0x1d0: 0x32a9, 0x1d1: 0x35ba,\n\t0x1d2: 0x32ae, 0x1d3: 0x35bf, 0x1d4: 0x331c, 0x1d5: 0x3632, 0x1d6: 0x3321, 0x1d7: 0x3637,\n\t0x1d8: 0x32c7, 0x1d9: 0x35d8, 0x1da: 0x32e0, 0x1db: 0x35f6,\n\t0x1de: 0x319b, 0x1df: 0x34a7,\n\t0x1e6: 0x47d3, 0x1e7: 0x4864, 0x1e8: 0x47fb, 0x1e9: 0x488c,\n\t0x1ea: 0x3aa0, 0x1eb: 0x3c2f, 0x1ec: 0x3a7d, 0x1ed: 0x3c0c, 0x1ee: 0x4819, 0x1ef: 0x48aa,\n\t0x1f0: 0x3a99, 0x1f1: 0x3c28, 0x1f2: 0x3385, 0x1f3: 0x36a0,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133,\n\t0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933,\n\t0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933,\n\t0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e,\n\t0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e,\n\t0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e,\n\t0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e,\n\t0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e,\n\t0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e,\n\t0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x4aef, 0x241: 0x4af4, 0x242: 0x9933, 0x243: 0x4af9, 0x244: 0x4bb2, 0x245: 0x9937,\n\t0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133,\n\t0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133,\n\t0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133,\n\t0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136,\n\t0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133,\n\t0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133,\n\t0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133,\n\t0x274: 0x01ee,\n\t0x27a: 0x8100,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x8100, 0x285: 0x36e2,\n\t0x286: 0x372a, 0x287: 0x00ce, 0x288: 0x3748, 0x289: 0x3754, 0x28a: 0x3766,\n\t0x28c: 0x3784, 0x28e: 0x3796, 0x28f: 0x37b4, 0x290: 0x3f49, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3778, 0x2ab: 0x37a8, 0x2ac: 0x493f, 0x2ad: 0x37d8, 0x2ae: 0x4969, 0x2af: 0x37ea,\n\t0x2b0: 0x3fb1, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x3862, 0x2c1: 0x386e, 0x2c3: 0x385c,\n\t0x2c6: 0xa000, 0x2c7: 0x384a,\n\t0x2cc: 0x389e, 0x2cd: 0x3886, 0x2ce: 0x38b0, 0x2d0: 0xa000,\n\t0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000,\n\t0x2d8: 0xa000, 0x2d9: 0x3892, 0x2da: 0xa000,\n\t0x2de: 0xa000, 0x2e3: 0xa000,\n\t0x2e7: 0xa000,\n\t0x2eb: 0xa000, 0x2ed: 0xa000,\n\t0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000,\n\t0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x3916, 0x2fa: 0xa000,\n\t0x2fe: 0xa000,\n\t// Block 0xc, offset 0x300\n\t0x301: 0x3874, 0x302: 0x38f8,\n\t0x310: 0x3850, 0x311: 0x38d4,\n\t0x312: 0x3856, 0x313: 0x38da, 0x316: 0x3868, 0x317: 0x38ec,\n\t0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x396a, 0x31b: 0x3970, 0x31c: 0x387a, 0x31d: 0x38fe,\n\t0x31e: 0x3880, 0x31f: 0x3904, 0x322: 0x388c, 0x323: 0x3910,\n\t0x324: 0x3898, 0x325: 0x391c, 0x326: 0x38a4, 0x327: 0x3928, 0x328: 0xa000, 0x329: 0xa000,\n\t0x32a: 0x3976, 0x32b: 0x397c, 0x32c: 0x38ce, 0x32d: 0x3952, 0x32e: 0x38aa, 0x32f: 0x392e,\n\t0x330: 0x38b6, 0x331: 0x393a, 0x332: 0x38bc, 0x333: 0x3940, 0x334: 0x38c2, 0x335: 0x3946,\n\t0x338: 0x38c8, 0x339: 0x394c,\n\t// Block 0xd, offset 0x340\n\t0x351: 0x812e,\n\t0x352: 0x8133, 0x353: 0x8133, 0x354: 0x8133, 0x355: 0x8133, 0x356: 0x812e, 0x357: 0x8133,\n\t0x358: 0x8133, 0x359: 0x8133, 0x35a: 0x812f, 0x35b: 0x812e, 0x35c: 0x8133, 0x35d: 0x8133,\n\t0x35e: 0x8133, 0x35f: 0x8133, 0x360: 0x8133, 0x361: 0x8133, 0x362: 0x812e, 0x363: 0x812e,\n\t0x364: 0x812e, 0x365: 0x812e, 0x366: 0x812e, 0x367: 0x812e, 0x368: 0x8133, 0x369: 0x8133,\n\t0x36a: 0x812e, 0x36b: 0x8133, 0x36c: 0x8133, 0x36d: 0x812f, 0x36e: 0x8132, 0x36f: 0x8133,\n\t0x370: 0x8106, 0x371: 0x8107, 0x372: 0x8108, 0x373: 0x8109, 0x374: 0x810a, 0x375: 0x810b,\n\t0x376: 0x810c, 0x377: 0x810d, 0x378: 0x810e, 0x379: 0x810f, 0x37a: 0x810f, 0x37b: 0x8110,\n\t0x37c: 0x8111, 0x37d: 0x8112, 0x37f: 0x8113,\n\t// Block 0xe, offset 0x380\n\t0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8117,\n\t0x38c: 0x8118, 0x38d: 0x8119, 0x38e: 0x811a, 0x38f: 0x811b, 0x390: 0x811c, 0x391: 0x811d,\n\t0x392: 0x811e, 0x393: 0x9933, 0x394: 0x9933, 0x395: 0x992e, 0x396: 0x812e, 0x397: 0x8133,\n\t0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x8133, 0x39b: 0x8133, 0x39c: 0x812e, 0x39d: 0x8133,\n\t0x39e: 0x8133, 0x39f: 0x812e,\n\t0x3b0: 0x811f,\n\t// Block 0xf, offset 0x3c0\n\t0x3ca: 0x8133, 0x3cb: 0x8133,\n\t0x3cc: 0x8133, 0x3cd: 0x8133, 0x3ce: 0x8133, 0x3cf: 0x812e, 0x3d0: 0x812e, 0x3d1: 0x812e,\n\t0x3d2: 0x812e, 0x3d3: 0x812e, 0x3d4: 0x8133, 0x3d5: 0x8133, 0x3d6: 0x8133, 0x3d7: 0x8133,\n\t0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x8133, 0x3dd: 0x8133,\n\t0x3de: 0x8133, 0x3df: 0x8133, 0x3e0: 0x8133, 0x3e1: 0x8133, 0x3e3: 0x812e,\n\t0x3e4: 0x8133, 0x3e5: 0x8133, 0x3e6: 0x812e, 0x3e7: 0x8133, 0x3e8: 0x8133, 0x3e9: 0x812e,\n\t0x3ea: 0x8133, 0x3eb: 0x8133, 0x3ec: 0x8133, 0x3ed: 0x812e, 0x3ee: 0x812e, 0x3ef: 0x812e,\n\t0x3f0: 0x8117, 0x3f1: 0x8118, 0x3f2: 0x8119, 0x3f3: 0x8133, 0x3f4: 0x8133, 0x3f5: 0x8133,\n\t0x3f6: 0x812e, 0x3f7: 0x8133, 0x3f8: 0x8133, 0x3f9: 0x812e, 0x3fa: 0x812e, 0x3fb: 0x8133,\n\t0x3fc: 0x8133, 0x3fd: 0x8133, 0x3fe: 0x8133, 0x3ff: 0x8133,\n\t// Block 0x10, offset 0x400\n\t0x405: 0xa000,\n\t0x406: 0x2e5d, 0x407: 0xa000, 0x408: 0x2e65, 0x409: 0xa000, 0x40a: 0x2e6d, 0x40b: 0xa000,\n\t0x40c: 0x2e75, 0x40d: 0xa000, 0x40e: 0x2e7d, 0x411: 0xa000,\n\t0x412: 0x2e85,\n\t0x434: 0x8103, 0x435: 0x9900,\n\t0x43a: 0xa000, 0x43b: 0x2e8d,\n\t0x43c: 0xa000, 0x43d: 0x2e95, 0x43e: 0xa000, 0x43f: 0xa000,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x8133, 0x441: 0x8133, 0x442: 0x812e, 0x443: 0x8133, 0x444: 0x8133, 0x445: 0x8133,\n\t0x446: 0x8133, 0x447: 0x8133, 0x448: 0x8133, 0x449: 0x8133, 0x44a: 0x812e, 0x44b: 0x8133,\n\t0x44c: 0x8133, 0x44d: 0x8136, 0x44e: 0x812b, 0x44f: 0x812e, 0x450: 0x812a, 0x451: 0x8133,\n\t0x452: 0x8133, 0x453: 0x8133, 0x454: 0x8133, 0x455: 0x8133, 0x456: 0x8133, 0x457: 0x8133,\n\t0x458: 0x8133, 0x459: 0x8133, 0x45a: 0x8133, 0x45b: 0x8133, 0x45c: 0x8133, 0x45d: 0x8133,\n\t0x45e: 0x8133, 0x45f: 0x8133, 0x460: 0x8133, 0x461: 0x8133, 0x462: 0x8133, 0x463: 0x8133,\n\t0x464: 0x8133, 0x465: 0x8133, 0x466: 0x8133, 0x467: 0x8133, 0x468: 0x8133, 0x469: 0x8133,\n\t0x46a: 0x8133, 0x46b: 0x8133, 0x46c: 0x8133, 0x46d: 0x8133, 0x46e: 0x8133, 0x46f: 0x8133,\n\t0x470: 0x8133, 0x471: 0x8133, 0x472: 0x8133, 0x473: 0x8133, 0x474: 0x8133, 0x475: 0x8133,\n\t0x476: 0x8134, 0x477: 0x8132, 0x478: 0x8132, 0x479: 0x812e, 0x47a: 0x812d, 0x47b: 0x8133,\n\t0x47c: 0x8135, 0x47d: 0x812e, 0x47e: 0x8133, 0x47f: 0x812e,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x30d8, 0x481: 0x33e4, 0x482: 0x30e2, 0x483: 0x33ee, 0x484: 0x30e7, 0x485: 0x33f3,\n\t0x486: 0x30ec, 0x487: 0x33f8, 0x488: 0x3a0d, 0x489: 0x3b9c, 0x48a: 0x3105, 0x48b: 0x3411,\n\t0x48c: 0x310f, 0x48d: 0x341b, 0x48e: 0x311e, 0x48f: 0x342a, 0x490: 0x3114, 0x491: 0x3420,\n\t0x492: 0x3119, 0x493: 0x3425, 0x494: 0x3a30, 0x495: 0x3bbf, 0x496: 0x3a37, 0x497: 0x3bc6,\n\t0x498: 0x315a, 0x499: 0x3466, 0x49a: 0x315f, 0x49b: 0x346b, 0x49c: 0x3a45, 0x49d: 0x3bd4,\n\t0x49e: 0x3164, 0x49f: 0x3470, 0x4a0: 0x3173, 0x4a1: 0x347f, 0x4a2: 0x3191, 0x4a3: 0x349d,\n\t0x4a4: 0x31a0, 0x4a5: 0x34ac, 0x4a6: 0x3196, 0x4a7: 0x34a2, 0x4a8: 0x31a5, 0x4a9: 0x34b1,\n\t0x4aa: 0x31aa, 0x4ab: 0x34b6, 0x4ac: 0x31f0, 0x4ad: 0x34fc, 0x4ae: 0x3a4c, 0x4af: 0x3bdb,\n\t0x4b0: 0x31fa, 0x4b1: 0x350b, 0x4b2: 0x3204, 0x4b3: 0x3515, 0x4b4: 0x320e, 0x4b5: 0x351f,\n\t0x4b6: 0x4805, 0x4b7: 0x4896, 0x4b8: 0x3a53, 0x4b9: 0x3be2, 0x4ba: 0x3227, 0x4bb: 0x3538,\n\t0x4bc: 0x3222, 0x4bd: 0x3533, 0x4be: 0x322c, 0x4bf: 0x353d,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x3231, 0x4c1: 0x3542, 0x4c2: 0x3236, 0x4c3: 0x3547, 0x4c4: 0x324a, 0x4c5: 0x355b,\n\t0x4c6: 0x3254, 0x4c7: 0x3565, 0x4c8: 0x3263, 0x4c9: 0x3574, 0x4ca: 0x325e, 0x4cb: 0x356f,\n\t0x4cc: 0x3a76, 0x4cd: 0x3c05, 0x4ce: 0x3a84, 0x4cf: 0x3c13, 0x4d0: 0x3a8b, 0x4d1: 0x3c1a,\n\t0x4d2: 0x3a92, 0x4d3: 0x3c21, 0x4d4: 0x3290, 0x4d5: 0x35a1, 0x4d6: 0x3295, 0x4d7: 0x35a6,\n\t0x4d8: 0x329f, 0x4d9: 0x35b0, 0x4da: 0x4832, 0x4db: 0x48c3, 0x4dc: 0x3ad8, 0x4dd: 0x3c67,\n\t0x4de: 0x32b8, 0x4df: 0x35c9, 0x4e0: 0x32c2, 0x4e1: 0x35d3, 0x4e2: 0x4841, 0x4e3: 0x48d2,\n\t0x4e4: 0x3adf, 0x4e5: 0x3c6e, 0x4e6: 0x3ae6, 0x4e7: 0x3c75, 0x4e8: 0x3aed, 0x4e9: 0x3c7c,\n\t0x4ea: 0x32d1, 0x4eb: 0x35e2, 0x4ec: 0x32db, 0x4ed: 0x35f1, 0x4ee: 0x32ef, 0x4ef: 0x3605,\n\t0x4f0: 0x32ea, 0x4f1: 0x3600, 0x4f2: 0x332b, 0x4f3: 0x3641, 0x4f4: 0x333a, 0x4f5: 0x3650,\n\t0x4f6: 0x3335, 0x4f7: 0x364b, 0x4f8: 0x3af4, 0x4f9: 0x3c83, 0x4fa: 0x3afb, 0x4fb: 0x3c8a,\n\t0x4fc: 0x333f, 0x4fd: 0x3655, 0x4fe: 0x3344, 0x4ff: 0x365a,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x3349, 0x501: 0x365f, 0x502: 0x334e, 0x503: 0x3664, 0x504: 0x335d, 0x505: 0x3673,\n\t0x506: 0x3358, 0x507: 0x366e, 0x508: 0x3362, 0x509: 0x367d, 0x50a: 0x3367, 0x50b: 0x3682,\n\t0x50c: 0x336c, 0x50d: 0x3687, 0x50e: 0x338a, 0x50f: 0x36a5, 0x510: 0x33a3, 0x511: 0x36c3,\n\t0x512: 0x33b2, 0x513: 0x36d2, 0x514: 0x33b7, 0x515: 0x36d7, 0x516: 0x34bb, 0x517: 0x35e7,\n\t0x518: 0x3678, 0x519: 0x36b4, 0x51b: 0x3712,\n\t0x520: 0x47e2, 0x521: 0x4873, 0x522: 0x30c4, 0x523: 0x33d0,\n\t0x524: 0x39b9, 0x525: 0x3b48, 0x526: 0x39b2, 0x527: 0x3b41, 0x528: 0x39c7, 0x529: 0x3b56,\n\t0x52a: 0x39c0, 0x52b: 0x3b4f, 0x52c: 0x39ff, 0x52d: 0x3b8e, 0x52e: 0x39d5, 0x52f: 0x3b64,\n\t0x530: 0x39ce, 0x531: 0x3b5d, 0x532: 0x39e3, 0x533: 0x3b72, 0x534: 0x39dc, 0x535: 0x3b6b,\n\t0x536: 0x3a06, 0x537: 0x3b95, 0x538: 0x47f6, 0x539: 0x4887, 0x53a: 0x3141, 0x53b: 0x344d,\n\t0x53c: 0x312d, 0x53d: 0x3439, 0x53e: 0x3a1b, 0x53f: 0x3baa,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x3a14, 0x541: 0x3ba3, 0x542: 0x3a29, 0x543: 0x3bb8, 0x544: 0x3a22, 0x545: 0x3bb1,\n\t0x546: 0x3a3e, 0x547: 0x3bcd, 0x548: 0x31d2, 0x549: 0x34de, 0x54a: 0x31e6, 0x54b: 0x34f2,\n\t0x54c: 0x4828, 0x54d: 0x48b9, 0x54e: 0x3277, 0x54f: 0x3588, 0x550: 0x3a61, 0x551: 0x3bf0,\n\t0x552: 0x3a5a, 0x553: 0x3be9, 0x554: 0x3a6f, 0x555: 0x3bfe, 0x556: 0x3a68, 0x557: 0x3bf7,\n\t0x558: 0x3aca, 0x559: 0x3c59, 0x55a: 0x3aae, 0x55b: 0x3c3d, 0x55c: 0x3aa7, 0x55d: 0x3c36,\n\t0x55e: 0x3abc, 0x55f: 0x3c4b, 0x560: 0x3ab5, 0x561: 0x3c44, 0x562: 0x3ac3, 0x563: 0x3c52,\n\t0x564: 0x3326, 0x565: 0x363c, 0x566: 0x3308, 0x567: 0x361e, 0x568: 0x3b25, 0x569: 0x3cb4,\n\t0x56a: 0x3b1e, 0x56b: 0x3cad, 0x56c: 0x3b33, 0x56d: 0x3cc2, 0x56e: 0x3b2c, 0x56f: 0x3cbb,\n\t0x570: 0x3b3a, 0x571: 0x3cc9, 0x572: 0x3371, 0x573: 0x368c, 0x574: 0x3399, 0x575: 0x36b9,\n\t0x576: 0x3394, 0x577: 0x36af, 0x578: 0x3380, 0x579: 0x369b,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x4945, 0x581: 0x494b, 0x582: 0x4a5f, 0x583: 0x4a77, 0x584: 0x4a67, 0x585: 0x4a7f,\n\t0x586: 0x4a6f, 0x587: 0x4a87, 0x588: 0x48eb, 0x589: 0x48f1, 0x58a: 0x49cf, 0x58b: 0x49e7,\n\t0x58c: 0x49d7, 0x58d: 0x49ef, 0x58e: 0x49df, 0x58f: 0x49f7, 0x590: 0x4957, 0x591: 0x495d,\n\t0x592: 0x3ef9, 0x593: 0x3f09, 0x594: 0x3f01, 0x595: 0x3f11,\n\t0x598: 0x48f7, 0x599: 0x48fd, 0x59a: 0x3e29, 0x59b: 0x3e39, 0x59c: 0x3e31, 0x59d: 0x3e41,\n\t0x5a0: 0x496f, 0x5a1: 0x4975, 0x5a2: 0x4a8f, 0x5a3: 0x4aa7,\n\t0x5a4: 0x4a97, 0x5a5: 0x4aaf, 0x5a6: 0x4a9f, 0x5a7: 0x4ab7, 0x5a8: 0x4903, 0x5a9: 0x4909,\n\t0x5aa: 0x49ff, 0x5ab: 0x4a17, 0x5ac: 0x4a07, 0x5ad: 0x4a1f, 0x5ae: 0x4a0f, 0x5af: 0x4a27,\n\t0x5b0: 0x4987, 0x5b1: 0x498d, 0x5b2: 0x3f59, 0x5b3: 0x3f71, 0x5b4: 0x3f61, 0x5b5: 0x3f79,\n\t0x5b6: 0x3f69, 0x5b7: 0x3f81, 0x5b8: 0x490f, 0x5b9: 0x4915, 0x5ba: 0x3e59, 0x5bb: 0x3e71,\n\t0x5bc: 0x3e61, 0x5bd: 0x3e79, 0x5be: 0x3e69, 0x5bf: 0x3e81,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x4993, 0x5c1: 0x4999, 0x5c2: 0x3f89, 0x5c3: 0x3f99, 0x5c4: 0x3f91, 0x5c5: 0x3fa1,\n\t0x5c8: 0x491b, 0x5c9: 0x4921, 0x5ca: 0x3e89, 0x5cb: 0x3e99,\n\t0x5cc: 0x3e91, 0x5cd: 0x3ea1, 0x5d0: 0x49a5, 0x5d1: 0x49ab,\n\t0x5d2: 0x3fc1, 0x5d3: 0x3fd9, 0x5d4: 0x3fc9, 0x5d5: 0x3fe1, 0x5d6: 0x3fd1, 0x5d7: 0x3fe9,\n\t0x5d9: 0x4927, 0x5db: 0x3ea9, 0x5dd: 0x3eb1,\n\t0x5df: 0x3eb9, 0x5e0: 0x49bd, 0x5e1: 0x49c3, 0x5e2: 0x4abf, 0x5e3: 0x4ad7,\n\t0x5e4: 0x4ac7, 0x5e5: 0x4adf, 0x5e6: 0x4acf, 0x5e7: 0x4ae7, 0x5e8: 0x492d, 0x5e9: 0x4933,\n\t0x5ea: 0x4a2f, 0x5eb: 0x4a47, 0x5ec: 0x4a37, 0x5ed: 0x4a4f, 0x5ee: 0x4a3f, 0x5ef: 0x4a57,\n\t0x5f0: 0x4939, 0x5f1: 0x445f, 0x5f2: 0x37d2, 0x5f3: 0x4465, 0x5f4: 0x4963, 0x5f5: 0x446b,\n\t0x5f6: 0x37e4, 0x5f7: 0x4471, 0x5f8: 0x3802, 0x5f9: 0x4477, 0x5fa: 0x381a, 0x5fb: 0x447d,\n\t0x5fc: 0x49b1, 0x5fd: 0x4483,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3ee1, 0x601: 0x3ee9, 0x602: 0x42c5, 0x603: 0x42e3, 0x604: 0x42cf, 0x605: 0x42ed,\n\t0x606: 0x42d9, 0x607: 0x42f7, 0x608: 0x3e19, 0x609: 0x3e21, 0x60a: 0x4211, 0x60b: 0x422f,\n\t0x60c: 0x421b, 0x60d: 0x4239, 0x60e: 0x4225, 0x60f: 0x4243, 0x610: 0x3f29, 0x611: 0x3f31,\n\t0x612: 0x4301, 0x613: 0x431f, 0x614: 0x430b, 0x615: 0x4329, 0x616: 0x4315, 0x617: 0x4333,\n\t0x618: 0x3e49, 0x619: 0x3e51, 0x61a: 0x424d, 0x61b: 0x426b, 0x61c: 0x4257, 0x61d: 0x4275,\n\t0x61e: 0x4261, 0x61f: 0x427f, 0x620: 0x4001, 0x621: 0x4009, 0x622: 0x433d, 0x623: 0x435b,\n\t0x624: 0x4347, 0x625: 0x4365, 0x626: 0x4351, 0x627: 0x436f, 0x628: 0x3ec1, 0x629: 0x3ec9,\n\t0x62a: 0x4289, 0x62b: 0x42a7, 0x62c: 0x4293, 0x62d: 0x42b1, 0x62e: 0x429d, 0x62f: 0x42bb,\n\t0x630: 0x37c6, 0x631: 0x37c0, 0x632: 0x3ed1, 0x633: 0x37cc, 0x634: 0x3ed9,\n\t0x636: 0x4951, 0x637: 0x3ef1, 0x638: 0x3736, 0x639: 0x3730, 0x63a: 0x3724, 0x63b: 0x442f,\n\t0x63c: 0x373c, 0x63d: 0x8100, 0x63e: 0x0257, 0x63f: 0xa100,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x8100, 0x641: 0x36e8, 0x642: 0x3f19, 0x643: 0x37de, 0x644: 0x3f21,\n\t0x646: 0x497b, 0x647: 0x3f39, 0x648: 0x3742, 0x649: 0x4435, 0x64a: 0x374e, 0x64b: 0x443b,\n\t0x64c: 0x375a, 0x64d: 0x3cd0, 0x64e: 0x3cd7, 0x64f: 0x3cde, 0x650: 0x37f6, 0x651: 0x37f0,\n\t0x652: 0x3f41, 0x653: 0x4625, 0x656: 0x37fc, 0x657: 0x3f51,\n\t0x658: 0x3772, 0x659: 0x376c, 0x65a: 0x3760, 0x65b: 0x4441, 0x65d: 0x3ce5,\n\t0x65e: 0x3cec, 0x65f: 0x3cf3, 0x660: 0x382c, 0x661: 0x3826, 0x662: 0x3fa9, 0x663: 0x462d,\n\t0x664: 0x380e, 0x665: 0x3814, 0x666: 0x3832, 0x667: 0x3fb9, 0x668: 0x37a2, 0x669: 0x379c,\n\t0x66a: 0x3790, 0x66b: 0x444d, 0x66c: 0x378a, 0x66d: 0x36dc, 0x66e: 0x4429, 0x66f: 0x0081,\n\t0x672: 0x3ff1, 0x673: 0x3838, 0x674: 0x3ff9,\n\t0x676: 0x49c9, 0x677: 0x4011, 0x678: 0x377e, 0x679: 0x4447, 0x67a: 0x37ae, 0x67b: 0x4459,\n\t0x67c: 0x37ba, 0x67d: 0x4397, 0x67e: 0xa100,\n\t// Block 0x1a, offset 0x680\n\t0x681: 0x3d47, 0x683: 0xa000, 0x684: 0x3d4e, 0x685: 0xa000,\n\t0x687: 0x3d55, 0x688: 0xa000, 0x689: 0x3d5c,\n\t0x68d: 0xa000,\n\t0x6a0: 0x30a6, 0x6a1: 0xa000, 0x6a2: 0x3d6a,\n\t0x6a4: 0xa000, 0x6a5: 0xa000,\n\t0x6ad: 0x3d63, 0x6ae: 0x30a1, 0x6af: 0x30ab,\n\t0x6b0: 0x3d71, 0x6b1: 0x3d78, 0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0x3d7f, 0x6b5: 0x3d86,\n\t0x6b6: 0xa000, 0x6b7: 0xa000, 0x6b8: 0x3d8d, 0x6b9: 0x3d94, 0x6ba: 0xa000, 0x6bb: 0xa000,\n\t0x6bc: 0xa000, 0x6bd: 0xa000,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3d9b, 0x6c1: 0x3da2, 0x6c2: 0xa000, 0x6c3: 0xa000, 0x6c4: 0x3db7, 0x6c5: 0x3dbe,\n\t0x6c6: 0xa000, 0x6c7: 0xa000, 0x6c8: 0x3dc5, 0x6c9: 0x3dcc,\n\t0x6d1: 0xa000,\n\t0x6d2: 0xa000,\n\t0x6e2: 0xa000,\n\t0x6e8: 0xa000, 0x6e9: 0xa000,\n\t0x6eb: 0xa000, 0x6ec: 0x3de1, 0x6ed: 0x3de8, 0x6ee: 0x3def, 0x6ef: 0x3df6,\n\t0x6f2: 0xa000, 0x6f3: 0xa000, 0x6f4: 0xa000, 0x6f5: 0xa000,\n\t// Block 0x1c, offset 0x700\n\t0x706: 0xa000, 0x70b: 0xa000,\n\t0x70c: 0x4049, 0x70d: 0xa000, 0x70e: 0x4051, 0x70f: 0xa000, 0x710: 0x4059, 0x711: 0xa000,\n\t0x712: 0x4061, 0x713: 0xa000, 0x714: 0x4069, 0x715: 0xa000, 0x716: 0x4071, 0x717: 0xa000,\n\t0x718: 0x4079, 0x719: 0xa000, 0x71a: 0x4081, 0x71b: 0xa000, 0x71c: 0x4089, 0x71d: 0xa000,\n\t0x71e: 0x4091, 0x71f: 0xa000, 0x720: 0x4099, 0x721: 0xa000, 0x722: 0x40a1,\n\t0x724: 0xa000, 0x725: 0x40a9, 0x726: 0xa000, 0x727: 0x40b1, 0x728: 0xa000, 0x729: 0x40b9,\n\t0x72f: 0xa000,\n\t0x730: 0x40c1, 0x731: 0x40c9, 0x732: 0xa000, 0x733: 0x40d1, 0x734: 0x40d9, 0x735: 0xa000,\n\t0x736: 0x40e1, 0x737: 0x40e9, 0x738: 0xa000, 0x739: 0x40f1, 0x73a: 0x40f9, 0x73b: 0xa000,\n\t0x73c: 0x4101, 0x73d: 0x4109,\n\t// Block 0x1d, offset 0x740\n\t0x754: 0x4041,\n\t0x759: 0x9904, 0x75a: 0x9904, 0x75b: 0x8100, 0x75c: 0x8100, 0x75d: 0xa000,\n\t0x75e: 0x4111,\n\t0x766: 0xa000,\n\t0x76b: 0xa000, 0x76c: 0x4121, 0x76d: 0xa000, 0x76e: 0x4129, 0x76f: 0xa000,\n\t0x770: 0x4131, 0x771: 0xa000, 0x772: 0x4139, 0x773: 0xa000, 0x774: 0x4141, 0x775: 0xa000,\n\t0x776: 0x4149, 0x777: 0xa000, 0x778: 0x4151, 0x779: 0xa000, 0x77a: 0x4159, 0x77b: 0xa000,\n\t0x77c: 0x4161, 0x77d: 0xa000, 0x77e: 0x4169, 0x77f: 0xa000,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x4171, 0x781: 0xa000, 0x782: 0x4179, 0x784: 0xa000, 0x785: 0x4181,\n\t0x786: 0xa000, 0x787: 0x4189, 0x788: 0xa000, 0x789: 0x4191,\n\t0x78f: 0xa000, 0x790: 0x4199, 0x791: 0x41a1,\n\t0x792: 0xa000, 0x793: 0x41a9, 0x794: 0x41b1, 0x795: 0xa000, 0x796: 0x41b9, 0x797: 0x41c1,\n\t0x798: 0xa000, 0x799: 0x41c9, 0x79a: 0x41d1, 0x79b: 0xa000, 0x79c: 0x41d9, 0x79d: 0x41e1,\n\t0x7af: 0xa000,\n\t0x7b0: 0xa000, 0x7b1: 0xa000, 0x7b2: 0xa000, 0x7b4: 0x4119,\n\t0x7b7: 0x41e9, 0x7b8: 0x41f1, 0x7b9: 0x41f9, 0x7ba: 0x4201,\n\t0x7bd: 0xa000, 0x7be: 0x4209,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x1472, 0x7c1: 0x0df6, 0x7c2: 0x14ce, 0x7c3: 0x149a, 0x7c4: 0x0f52, 0x7c5: 0x07e6,\n\t0x7c6: 0x09da, 0x7c7: 0x1726, 0x7c8: 0x1726, 0x7c9: 0x0b06, 0x7ca: 0x155a, 0x7cb: 0x0a3e,\n\t0x7cc: 0x0b02, 0x7cd: 0x0cea, 0x7ce: 0x10ca, 0x7cf: 0x125a, 0x7d0: 0x1392, 0x7d1: 0x13ce,\n\t0x7d2: 0x1402, 0x7d3: 0x1516, 0x7d4: 0x0e6e, 0x7d5: 0x0efa, 0x7d6: 0x0fa6, 0x7d7: 0x103e,\n\t0x7d8: 0x135a, 0x7d9: 0x1542, 0x7da: 0x166e, 0x7db: 0x080a, 0x7dc: 0x09ae, 0x7dd: 0x0e82,\n\t0x7de: 0x0fca, 0x7df: 0x138e, 0x7e0: 0x16be, 0x7e1: 0x0bae, 0x7e2: 0x0f72, 0x7e3: 0x137e,\n\t0x7e4: 0x1412, 0x7e5: 0x0d1e, 0x7e6: 0x12b6, 0x7e7: 0x13da, 0x7e8: 0x0c1a, 0x7e9: 0x0e0a,\n\t0x7ea: 0x0f12, 0x7eb: 0x1016, 0x7ec: 0x1522, 0x7ed: 0x084a, 0x7ee: 0x08e2, 0x7ef: 0x094e,\n\t0x7f0: 0x0d86, 0x7f1: 0x0e7a, 0x7f2: 0x0fc6, 0x7f3: 0x10ea, 0x7f4: 0x1272, 0x7f5: 0x1386,\n\t0x7f6: 0x139e, 0x7f7: 0x14c2, 0x7f8: 0x15ea, 0x7f9: 0x169e, 0x7fa: 0x16ba, 0x7fb: 0x1126,\n\t0x7fc: 0x1166, 0x7fd: 0x121e, 0x7fe: 0x133e, 0x7ff: 0x1576,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x16c6, 0x801: 0x1446, 0x802: 0x0ac2, 0x803: 0x0c36, 0x804: 0x11d6, 0x805: 0x1296,\n\t0x806: 0x0ffa, 0x807: 0x112e, 0x808: 0x1492, 0x809: 0x15e2, 0x80a: 0x0abe, 0x80b: 0x0b8a,\n\t0x80c: 0x0e72, 0x80d: 0x0f26, 0x80e: 0x0f5a, 0x80f: 0x120e, 0x810: 0x1236, 0x811: 0x15a2,\n\t0x812: 0x094a, 0x813: 0x12a2, 0x814: 0x08ee, 0x815: 0x08ea, 0x816: 0x1192, 0x817: 0x1222,\n\t0x818: 0x1356, 0x819: 0x15aa, 0x81a: 0x1462, 0x81b: 0x0d22, 0x81c: 0x0e6e, 0x81d: 0x1452,\n\t0x81e: 0x07f2, 0x81f: 0x0b5e, 0x820: 0x0c8e, 0x821: 0x102a, 0x822: 0x10aa, 0x823: 0x096e,\n\t0x824: 0x1136, 0x825: 0x085a, 0x826: 0x0c72, 0x827: 0x07d2, 0x828: 0x0ee6, 0x829: 0x0d9e,\n\t0x82a: 0x120a, 0x82b: 0x09c2, 0x82c: 0x0aae, 0x82d: 0x10f6, 0x82e: 0x135e, 0x82f: 0x1436,\n\t0x830: 0x0eb2, 0x831: 0x14f2, 0x832: 0x0ede, 0x833: 0x0d32, 0x834: 0x1316, 0x835: 0x0d52,\n\t0x836: 0x10a6, 0x837: 0x0826, 0x838: 0x08a2, 0x839: 0x08e6, 0x83a: 0x0e4e, 0x83b: 0x11f6,\n\t0x83c: 0x12ee, 0x83d: 0x1442, 0x83e: 0x1556, 0x83f: 0x0956,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x0a0a, 0x841: 0x0b12, 0x842: 0x0c2a, 0x843: 0x0dba, 0x844: 0x0f76, 0x845: 0x113a,\n\t0x846: 0x1592, 0x847: 0x1676, 0x848: 0x16ca, 0x849: 0x16e2, 0x84a: 0x0932, 0x84b: 0x0dee,\n\t0x84c: 0x0e9e, 0x84d: 0x14e6, 0x84e: 0x0bf6, 0x84f: 0x0cd2, 0x850: 0x0cee, 0x851: 0x0d7e,\n\t0x852: 0x0f66, 0x853: 0x0fb2, 0x854: 0x1062, 0x855: 0x1186, 0x856: 0x122a, 0x857: 0x128e,\n\t0x858: 0x14d6, 0x859: 0x1366, 0x85a: 0x14fe, 0x85b: 0x157a, 0x85c: 0x090a, 0x85d: 0x0936,\n\t0x85e: 0x0a1e, 0x85f: 0x0fa2, 0x860: 0x13ee, 0x861: 0x1436, 0x862: 0x0c16, 0x863: 0x0c86,\n\t0x864: 0x0d4a, 0x865: 0x0eaa, 0x866: 0x11d2, 0x867: 0x101e, 0x868: 0x0836, 0x869: 0x0a7a,\n\t0x86a: 0x0b5e, 0x86b: 0x0bc2, 0x86c: 0x0c92, 0x86d: 0x103a, 0x86e: 0x1056, 0x86f: 0x1266,\n\t0x870: 0x1286, 0x871: 0x155e, 0x872: 0x15de, 0x873: 0x15ee, 0x874: 0x162a, 0x875: 0x084e,\n\t0x876: 0x117a, 0x877: 0x154a, 0x878: 0x15c6, 0x879: 0x0caa, 0x87a: 0x0812, 0x87b: 0x0872,\n\t0x87c: 0x0b62, 0x87d: 0x0b82, 0x87e: 0x0daa, 0x87f: 0x0e6e,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0fbe, 0x881: 0x10c6, 0x882: 0x1372, 0x883: 0x1512, 0x884: 0x171e, 0x885: 0x0dde,\n\t0x886: 0x159e, 0x887: 0x092e, 0x888: 0x0e2a, 0x889: 0x0e36, 0x88a: 0x0f0a, 0x88b: 0x0f42,\n\t0x88c: 0x1046, 0x88d: 0x10a2, 0x88e: 0x1122, 0x88f: 0x1206, 0x890: 0x1636, 0x891: 0x08aa,\n\t0x892: 0x0cfe, 0x893: 0x15ae, 0x894: 0x0862, 0x895: 0x0ba6, 0x896: 0x0f2a, 0x897: 0x14da,\n\t0x898: 0x0c62, 0x899: 0x0cb2, 0x89a: 0x0e3e, 0x89b: 0x102a, 0x89c: 0x15b6, 0x89d: 0x0912,\n\t0x89e: 0x09fa, 0x89f: 0x0b92, 0x8a0: 0x0dce, 0x8a1: 0x0e1a, 0x8a2: 0x0e5a, 0x8a3: 0x0eee,\n\t0x8a4: 0x1042, 0x8a5: 0x10b6, 0x8a6: 0x1252, 0x8a7: 0x13f2, 0x8a8: 0x13fe, 0x8a9: 0x1552,\n\t0x8aa: 0x15d2, 0x8ab: 0x097e, 0x8ac: 0x0f46, 0x8ad: 0x09fe, 0x8ae: 0x0fc2, 0x8af: 0x1066,\n\t0x8b0: 0x1382, 0x8b1: 0x15ba, 0x8b2: 0x16a6, 0x8b3: 0x16ce, 0x8b4: 0x0e32, 0x8b5: 0x0f22,\n\t0x8b6: 0x12be, 0x8b7: 0x11b2, 0x8b8: 0x11be, 0x8b9: 0x11e2, 0x8ba: 0x1012, 0x8bb: 0x0f9a,\n\t0x8bc: 0x145e, 0x8bd: 0x082e, 0x8be: 0x1326, 0x8bf: 0x0916,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0906, 0x8c1: 0x0c06, 0x8c2: 0x0d26, 0x8c3: 0x11ee, 0x8c4: 0x0b4e, 0x8c5: 0x0efe,\n\t0x8c6: 0x0dea, 0x8c7: 0x14e2, 0x8c8: 0x13e2, 0x8c9: 0x15a6, 0x8ca: 0x141e, 0x8cb: 0x0c22,\n\t0x8cc: 0x0882, 0x8cd: 0x0a56, 0x8d0: 0x0aaa,\n\t0x8d2: 0x0dda, 0x8d5: 0x08f2, 0x8d6: 0x101a, 0x8d7: 0x10de,\n\t0x8d8: 0x1142, 0x8d9: 0x115e, 0x8da: 0x1162, 0x8db: 0x1176, 0x8dc: 0x15f6, 0x8dd: 0x11e6,\n\t0x8de: 0x126a, 0x8e0: 0x138a, 0x8e2: 0x144e,\n\t0x8e5: 0x1502, 0x8e6: 0x152e,\n\t0x8ea: 0x164a, 0x8eb: 0x164e, 0x8ec: 0x1652, 0x8ed: 0x16b6, 0x8ee: 0x1526, 0x8ef: 0x15c2,\n\t0x8f0: 0x0852, 0x8f1: 0x0876, 0x8f2: 0x088a, 0x8f3: 0x0946, 0x8f4: 0x0952, 0x8f5: 0x0992,\n\t0x8f6: 0x0a46, 0x8f7: 0x0a62, 0x8f8: 0x0a6a, 0x8f9: 0x0aa6, 0x8fa: 0x0ab2, 0x8fb: 0x0b8e,\n\t0x8fc: 0x0b96, 0x8fd: 0x0c9e, 0x8fe: 0x0cc6, 0x8ff: 0x0cce,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0ce6, 0x901: 0x0d92, 0x902: 0x0dc2, 0x903: 0x0de2, 0x904: 0x0e52, 0x905: 0x0f16,\n\t0x906: 0x0f32, 0x907: 0x0f62, 0x908: 0x0fb6, 0x909: 0x0fd6, 0x90a: 0x104a, 0x90b: 0x112a,\n\t0x90c: 0x1146, 0x90d: 0x114e, 0x90e: 0x114a, 0x90f: 0x1152, 0x910: 0x1156, 0x911: 0x115a,\n\t0x912: 0x116e, 0x913: 0x1172, 0x914: 0x1196, 0x915: 0x11aa, 0x916: 0x11c6, 0x917: 0x122a,\n\t0x918: 0x1232, 0x919: 0x123a, 0x91a: 0x124e, 0x91b: 0x1276, 0x91c: 0x12c6, 0x91d: 0x12fa,\n\t0x91e: 0x12fa, 0x91f: 0x1362, 0x920: 0x140a, 0x921: 0x1422, 0x922: 0x1456, 0x923: 0x145a,\n\t0x924: 0x149e, 0x925: 0x14a2, 0x926: 0x14fa, 0x927: 0x1502, 0x928: 0x15d6, 0x929: 0x161a,\n\t0x92a: 0x1632, 0x92b: 0x0c96, 0x92c: 0x184b, 0x92d: 0x12de,\n\t0x930: 0x07da, 0x931: 0x08de, 0x932: 0x089e, 0x933: 0x0846, 0x934: 0x0886, 0x935: 0x08b2,\n\t0x936: 0x0942, 0x937: 0x095e, 0x938: 0x0a46, 0x939: 0x0a32, 0x93a: 0x0a42, 0x93b: 0x0a5e,\n\t0x93c: 0x0aaa, 0x93d: 0x0aba, 0x93e: 0x0afe, 0x93f: 0x0b0a,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x0b26, 0x941: 0x0b36, 0x942: 0x0c1e, 0x943: 0x0c26, 0x944: 0x0c56, 0x945: 0x0c76,\n\t0x946: 0x0ca6, 0x947: 0x0cbe, 0x948: 0x0cae, 0x949: 0x0cce, 0x94a: 0x0cc2, 0x94b: 0x0ce6,\n\t0x94c: 0x0d02, 0x94d: 0x0d5a, 0x94e: 0x0d66, 0x94f: 0x0d6e, 0x950: 0x0d96, 0x951: 0x0dda,\n\t0x952: 0x0e0a, 0x953: 0x0e0e, 0x954: 0x0e22, 0x955: 0x0ea2, 0x956: 0x0eb2, 0x957: 0x0f0a,\n\t0x958: 0x0f56, 0x959: 0x0f4e, 0x95a: 0x0f62, 0x95b: 0x0f7e, 0x95c: 0x0fb6, 0x95d: 0x110e,\n\t0x95e: 0x0fda, 0x95f: 0x100e, 0x960: 0x101a, 0x961: 0x105a, 0x962: 0x1076, 0x963: 0x109a,\n\t0x964: 0x10be, 0x965: 0x10c2, 0x966: 0x10de, 0x967: 0x10e2, 0x968: 0x10f2, 0x969: 0x1106,\n\t0x96a: 0x1102, 0x96b: 0x1132, 0x96c: 0x11ae, 0x96d: 0x11c6, 0x96e: 0x11de, 0x96f: 0x1216,\n\t0x970: 0x122a, 0x971: 0x1246, 0x972: 0x1276, 0x973: 0x132a, 0x974: 0x1352, 0x975: 0x13c6,\n\t0x976: 0x140e, 0x977: 0x141a, 0x978: 0x1422, 0x979: 0x143a, 0x97a: 0x144e, 0x97b: 0x143e,\n\t0x97c: 0x1456, 0x97d: 0x1452, 0x97e: 0x144a, 0x97f: 0x145a,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x1466, 0x981: 0x14a2, 0x982: 0x14de, 0x983: 0x150e, 0x984: 0x1546, 0x985: 0x1566,\n\t0x986: 0x15b2, 0x987: 0x15d6, 0x988: 0x15f6, 0x989: 0x160a, 0x98a: 0x161a, 0x98b: 0x1626,\n\t0x98c: 0x1632, 0x98d: 0x1686, 0x98e: 0x1726, 0x98f: 0x17e2, 0x990: 0x17dd, 0x991: 0x180f,\n\t0x992: 0x0702, 0x993: 0x072a, 0x994: 0x072e, 0x995: 0x1891, 0x996: 0x18be, 0x997: 0x1936,\n\t0x998: 0x1712, 0x999: 0x1722,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x07f6, 0x9c1: 0x07ee, 0x9c2: 0x07fe, 0x9c3: 0x1774, 0x9c4: 0x0842, 0x9c5: 0x0852,\n\t0x9c6: 0x0856, 0x9c7: 0x085e, 0x9c8: 0x0866, 0x9c9: 0x086a, 0x9ca: 0x0876, 0x9cb: 0x086e,\n\t0x9cc: 0x06ae, 0x9cd: 0x1788, 0x9ce: 0x088a, 0x9cf: 0x088e, 0x9d0: 0x0892, 0x9d1: 0x08ae,\n\t0x9d2: 0x1779, 0x9d3: 0x06b2, 0x9d4: 0x089a, 0x9d5: 0x08ba, 0x9d6: 0x1783, 0x9d7: 0x08ca,\n\t0x9d8: 0x08d2, 0x9d9: 0x0832, 0x9da: 0x08da, 0x9db: 0x08de, 0x9dc: 0x195e, 0x9dd: 0x08fa,\n\t0x9de: 0x0902, 0x9df: 0x06ba, 0x9e0: 0x091a, 0x9e1: 0x091e, 0x9e2: 0x0926, 0x9e3: 0x092a,\n\t0x9e4: 0x06be, 0x9e5: 0x0942, 0x9e6: 0x0946, 0x9e7: 0x0952, 0x9e8: 0x095e, 0x9e9: 0x0962,\n\t0x9ea: 0x0966, 0x9eb: 0x096e, 0x9ec: 0x098e, 0x9ed: 0x0992, 0x9ee: 0x099a, 0x9ef: 0x09aa,\n\t0x9f0: 0x09b2, 0x9f1: 0x09b6, 0x9f2: 0x09b6, 0x9f3: 0x09b6, 0x9f4: 0x1797, 0x9f5: 0x0f8e,\n\t0x9f6: 0x09ca, 0x9f7: 0x09d2, 0x9f8: 0x179c, 0x9f9: 0x09de, 0x9fa: 0x09e6, 0x9fb: 0x09ee,\n\t0x9fc: 0x0a16, 0x9fd: 0x0a02, 0x9fe: 0x0a0e, 0x9ff: 0x0a12,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0a1a, 0xa01: 0x0a22, 0xa02: 0x0a26, 0xa03: 0x0a2e, 0xa04: 0x0a36, 0xa05: 0x0a3a,\n\t0xa06: 0x0a3a, 0xa07: 0x0a42, 0xa08: 0x0a4a, 0xa09: 0x0a4e, 0xa0a: 0x0a5a, 0xa0b: 0x0a7e,\n\t0xa0c: 0x0a62, 0xa0d: 0x0a82, 0xa0e: 0x0a66, 0xa0f: 0x0a6e, 0xa10: 0x0906, 0xa11: 0x0aca,\n\t0xa12: 0x0a92, 0xa13: 0x0a96, 0xa14: 0x0a9a, 0xa15: 0x0a8e, 0xa16: 0x0aa2, 0xa17: 0x0a9e,\n\t0xa18: 0x0ab6, 0xa19: 0x17a1, 0xa1a: 0x0ad2, 0xa1b: 0x0ad6, 0xa1c: 0x0ade, 0xa1d: 0x0aea,\n\t0xa1e: 0x0af2, 0xa1f: 0x0b0e, 0xa20: 0x17a6, 0xa21: 0x17ab, 0xa22: 0x0b1a, 0xa23: 0x0b1e,\n\t0xa24: 0x0b22, 0xa25: 0x0b16, 0xa26: 0x0b2a, 0xa27: 0x06c2, 0xa28: 0x06c6, 0xa29: 0x0b32,\n\t0xa2a: 0x0b3a, 0xa2b: 0x0b3a, 0xa2c: 0x17b0, 0xa2d: 0x0b56, 0xa2e: 0x0b5a, 0xa2f: 0x0b5e,\n\t0xa30: 0x0b66, 0xa31: 0x17b5, 0xa32: 0x0b6e, 0xa33: 0x0b72, 0xa34: 0x0c4a, 0xa35: 0x0b7a,\n\t0xa36: 0x06ca, 0xa37: 0x0b86, 0xa38: 0x0b96, 0xa39: 0x0ba2, 0xa3a: 0x0b9e, 0xa3b: 0x17bf,\n\t0xa3c: 0x0baa, 0xa3d: 0x17c4, 0xa3e: 0x0bb6, 0xa3f: 0x0bb2,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0bba, 0xa41: 0x0bca, 0xa42: 0x0bce, 0xa43: 0x06ce, 0xa44: 0x0bde, 0xa45: 0x0be6,\n\t0xa46: 0x0bea, 0xa47: 0x0bee, 0xa48: 0x06d2, 0xa49: 0x17c9, 0xa4a: 0x06d6, 0xa4b: 0x0c0a,\n\t0xa4c: 0x0c0e, 0xa4d: 0x0c12, 0xa4e: 0x0c1a, 0xa4f: 0x1990, 0xa50: 0x0c32, 0xa51: 0x17d3,\n\t0xa52: 0x17d3, 0xa53: 0x12d2, 0xa54: 0x0c42, 0xa55: 0x0c42, 0xa56: 0x06da, 0xa57: 0x17f6,\n\t0xa58: 0x18c8, 0xa59: 0x0c52, 0xa5a: 0x0c5a, 0xa5b: 0x06de, 0xa5c: 0x0c6e, 0xa5d: 0x0c7e,\n\t0xa5e: 0x0c82, 0xa5f: 0x0c8a, 0xa60: 0x0c9a, 0xa61: 0x06e6, 0xa62: 0x06e2, 0xa63: 0x0c9e,\n\t0xa64: 0x17d8, 0xa65: 0x0ca2, 0xa66: 0x0cb6, 0xa67: 0x0cba, 0xa68: 0x0cbe, 0xa69: 0x0cba,\n\t0xa6a: 0x0cca, 0xa6b: 0x0cce, 0xa6c: 0x0cde, 0xa6d: 0x0cd6, 0xa6e: 0x0cda, 0xa6f: 0x0ce2,\n\t0xa70: 0x0ce6, 0xa71: 0x0cea, 0xa72: 0x0cf6, 0xa73: 0x0cfa, 0xa74: 0x0d12, 0xa75: 0x0d1a,\n\t0xa76: 0x0d2a, 0xa77: 0x0d3e, 0xa78: 0x17e7, 0xa79: 0x0d3a, 0xa7a: 0x0d2e, 0xa7b: 0x0d46,\n\t0xa7c: 0x0d4e, 0xa7d: 0x0d62, 0xa7e: 0x17ec, 0xa7f: 0x0d6a,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x0d5e, 0xa81: 0x0d56, 0xa82: 0x06ea, 0xa83: 0x0d72, 0xa84: 0x0d7a, 0xa85: 0x0d82,\n\t0xa86: 0x0d76, 0xa87: 0x06ee, 0xa88: 0x0d92, 0xa89: 0x0d9a, 0xa8a: 0x17f1, 0xa8b: 0x0dc6,\n\t0xa8c: 0x0dfa, 0xa8d: 0x0dd6, 0xa8e: 0x06fa, 0xa8f: 0x0de2, 0xa90: 0x06f6, 0xa91: 0x06f2,\n\t0xa92: 0x08be, 0xa93: 0x08c2, 0xa94: 0x0dfe, 0xa95: 0x0de6, 0xa96: 0x12a6, 0xa97: 0x075e,\n\t0xa98: 0x0e0a, 0xa99: 0x0e0e, 0xa9a: 0x0e12, 0xa9b: 0x0e26, 0xa9c: 0x0e1e, 0xa9d: 0x180a,\n\t0xa9e: 0x06fe, 0xa9f: 0x0e3a, 0xaa0: 0x0e2e, 0xaa1: 0x0e4a, 0xaa2: 0x0e52, 0xaa3: 0x1814,\n\t0xaa4: 0x0e56, 0xaa5: 0x0e42, 0xaa6: 0x0e5e, 0xaa7: 0x0702, 0xaa8: 0x0e62, 0xaa9: 0x0e66,\n\t0xaaa: 0x0e6a, 0xaab: 0x0e76, 0xaac: 0x1819, 0xaad: 0x0e7e, 0xaae: 0x0706, 0xaaf: 0x0e8a,\n\t0xab0: 0x181e, 0xab1: 0x0e8e, 0xab2: 0x070a, 0xab3: 0x0e9a, 0xab4: 0x0ea6, 0xab5: 0x0eb2,\n\t0xab6: 0x0eb6, 0xab7: 0x1823, 0xab8: 0x17ba, 0xab9: 0x1828, 0xaba: 0x0ed6, 0xabb: 0x182d,\n\t0xabc: 0x0ee2, 0xabd: 0x0eea, 0xabe: 0x0eda, 0xabf: 0x0ef6,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x0f06, 0xac1: 0x0f16, 0xac2: 0x0f0a, 0xac3: 0x0f0e, 0xac4: 0x0f1a, 0xac5: 0x0f1e,\n\t0xac6: 0x1832, 0xac7: 0x0f02, 0xac8: 0x0f36, 0xac9: 0x0f3a, 0xaca: 0x070e, 0xacb: 0x0f4e,\n\t0xacc: 0x0f4a, 0xacd: 0x1837, 0xace: 0x0f2e, 0xacf: 0x0f6a, 0xad0: 0x183c, 0xad1: 0x1841,\n\t0xad2: 0x0f6e, 0xad3: 0x0f82, 0xad4: 0x0f7e, 0xad5: 0x0f7a, 0xad6: 0x0712, 0xad7: 0x0f86,\n\t0xad8: 0x0f96, 0xad9: 0x0f92, 0xada: 0x0f9e, 0xadb: 0x177e, 0xadc: 0x0fae, 0xadd: 0x1846,\n\t0xade: 0x0fba, 0xadf: 0x1850, 0xae0: 0x0fce, 0xae1: 0x0fda, 0xae2: 0x0fee, 0xae3: 0x1855,\n\t0xae4: 0x1002, 0xae5: 0x1006, 0xae6: 0x185a, 0xae7: 0x185f, 0xae8: 0x1022, 0xae9: 0x1032,\n\t0xaea: 0x0716, 0xaeb: 0x1036, 0xaec: 0x071a, 0xaed: 0x071a, 0xaee: 0x104e, 0xaef: 0x1052,\n\t0xaf0: 0x105a, 0xaf1: 0x105e, 0xaf2: 0x106a, 0xaf3: 0x071e, 0xaf4: 0x1082, 0xaf5: 0x1864,\n\t0xaf6: 0x109e, 0xaf7: 0x1869, 0xaf8: 0x10aa, 0xaf9: 0x17ce, 0xafa: 0x10ba, 0xafb: 0x186e,\n\t0xafc: 0x1873, 0xafd: 0x1878, 0xafe: 0x0722, 0xaff: 0x0726,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x10f2, 0xb01: 0x1882, 0xb02: 0x187d, 0xb03: 0x1887, 0xb04: 0x188c, 0xb05: 0x10fa,\n\t0xb06: 0x10fe, 0xb07: 0x10fe, 0xb08: 0x1106, 0xb09: 0x072e, 0xb0a: 0x110a, 0xb0b: 0x0732,\n\t0xb0c: 0x0736, 0xb0d: 0x1896, 0xb0e: 0x111e, 0xb0f: 0x1126, 0xb10: 0x1132, 0xb11: 0x073a,\n\t0xb12: 0x189b, 0xb13: 0x1156, 0xb14: 0x18a0, 0xb15: 0x18a5, 0xb16: 0x1176, 0xb17: 0x118e,\n\t0xb18: 0x073e, 0xb19: 0x1196, 0xb1a: 0x119a, 0xb1b: 0x119e, 0xb1c: 0x18aa, 0xb1d: 0x18af,\n\t0xb1e: 0x18af, 0xb1f: 0x11b6, 0xb20: 0x0742, 0xb21: 0x18b4, 0xb22: 0x11ca, 0xb23: 0x11ce,\n\t0xb24: 0x0746, 0xb25: 0x18b9, 0xb26: 0x11ea, 0xb27: 0x074a, 0xb28: 0x11fa, 0xb29: 0x11f2,\n\t0xb2a: 0x1202, 0xb2b: 0x18c3, 0xb2c: 0x121a, 0xb2d: 0x074e, 0xb2e: 0x1226, 0xb2f: 0x122e,\n\t0xb30: 0x123e, 0xb31: 0x0752, 0xb32: 0x18cd, 0xb33: 0x18d2, 0xb34: 0x0756, 0xb35: 0x18d7,\n\t0xb36: 0x1256, 0xb37: 0x18dc, 0xb38: 0x1262, 0xb39: 0x126e, 0xb3a: 0x1276, 0xb3b: 0x18e1,\n\t0xb3c: 0x18e6, 0xb3d: 0x128a, 0xb3e: 0x18eb, 0xb3f: 0x1292,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x17fb, 0xb41: 0x075a, 0xb42: 0x12aa, 0xb43: 0x12ae, 0xb44: 0x0762, 0xb45: 0x12b2,\n\t0xb46: 0x0b2e, 0xb47: 0x18f0, 0xb48: 0x18f5, 0xb49: 0x1800, 0xb4a: 0x1805, 0xb4b: 0x12d2,\n\t0xb4c: 0x12d6, 0xb4d: 0x14ee, 0xb4e: 0x0766, 0xb4f: 0x1302, 0xb50: 0x12fe, 0xb51: 0x1306,\n\t0xb52: 0x093a, 0xb53: 0x130a, 0xb54: 0x130e, 0xb55: 0x1312, 0xb56: 0x131a, 0xb57: 0x18fa,\n\t0xb58: 0x1316, 0xb59: 0x131e, 0xb5a: 0x1332, 0xb5b: 0x1336, 0xb5c: 0x1322, 0xb5d: 0x133a,\n\t0xb5e: 0x134e, 0xb5f: 0x1362, 0xb60: 0x132e, 0xb61: 0x1342, 0xb62: 0x1346, 0xb63: 0x134a,\n\t0xb64: 0x18ff, 0xb65: 0x1909, 0xb66: 0x1904, 0xb67: 0x076a, 0xb68: 0x136a, 0xb69: 0x136e,\n\t0xb6a: 0x1376, 0xb6b: 0x191d, 0xb6c: 0x137a, 0xb6d: 0x190e, 0xb6e: 0x076e, 0xb6f: 0x0772,\n\t0xb70: 0x1913, 0xb71: 0x1918, 0xb72: 0x0776, 0xb73: 0x139a, 0xb74: 0x139e, 0xb75: 0x13a2,\n\t0xb76: 0x13a6, 0xb77: 0x13b2, 0xb78: 0x13ae, 0xb79: 0x13ba, 0xb7a: 0x13b6, 0xb7b: 0x13c6,\n\t0xb7c: 0x13be, 0xb7d: 0x13c2, 0xb7e: 0x13ca, 0xb7f: 0x077a,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x13d2, 0xb81: 0x13d6, 0xb82: 0x077e, 0xb83: 0x13e6, 0xb84: 0x13ea, 0xb85: 0x1922,\n\t0xb86: 0x13f6, 0xb87: 0x13fa, 0xb88: 0x0782, 0xb89: 0x1406, 0xb8a: 0x06b6, 0xb8b: 0x1927,\n\t0xb8c: 0x192c, 0xb8d: 0x0786, 0xb8e: 0x078a, 0xb8f: 0x1432, 0xb90: 0x144a, 0xb91: 0x1466,\n\t0xb92: 0x1476, 0xb93: 0x1931, 0xb94: 0x148a, 0xb95: 0x148e, 0xb96: 0x14a6, 0xb97: 0x14b2,\n\t0xb98: 0x193b, 0xb99: 0x178d, 0xb9a: 0x14be, 0xb9b: 0x14ba, 0xb9c: 0x14c6, 0xb9d: 0x1792,\n\t0xb9e: 0x14d2, 0xb9f: 0x14de, 0xba0: 0x1940, 0xba1: 0x1945, 0xba2: 0x151e, 0xba3: 0x152a,\n\t0xba4: 0x1532, 0xba5: 0x194a, 0xba6: 0x1536, 0xba7: 0x1562, 0xba8: 0x156e, 0xba9: 0x1572,\n\t0xbaa: 0x156a, 0xbab: 0x157e, 0xbac: 0x1582, 0xbad: 0x194f, 0xbae: 0x158e, 0xbaf: 0x078e,\n\t0xbb0: 0x1596, 0xbb1: 0x1954, 0xbb2: 0x0792, 0xbb3: 0x15ce, 0xbb4: 0x0bbe, 0xbb5: 0x15e6,\n\t0xbb6: 0x1959, 0xbb7: 0x1963, 0xbb8: 0x0796, 0xbb9: 0x079a, 0xbba: 0x160e, 0xbbb: 0x1968,\n\t0xbbc: 0x079e, 0xbbd: 0x196d, 0xbbe: 0x1626, 0xbbf: 0x1626,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x162e, 0xbc1: 0x1972, 0xbc2: 0x1646, 0xbc3: 0x07a2, 0xbc4: 0x1656, 0xbc5: 0x1662,\n\t0xbc6: 0x166a, 0xbc7: 0x1672, 0xbc8: 0x07a6, 0xbc9: 0x1977, 0xbca: 0x1686, 0xbcb: 0x16a2,\n\t0xbcc: 0x16ae, 0xbcd: 0x07aa, 0xbce: 0x07ae, 0xbcf: 0x16b2, 0xbd0: 0x197c, 0xbd1: 0x07b2,\n\t0xbd2: 0x1981, 0xbd3: 0x1986, 0xbd4: 0x198b, 0xbd5: 0x16d6, 0xbd6: 0x07b6, 0xbd7: 0x16ea,\n\t0xbd8: 0x16f2, 0xbd9: 0x16f6, 0xbda: 0x16fe, 0xbdb: 0x1706, 0xbdc: 0x170e, 0xbdd: 0x1995,\n}\n\n// nfcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x2e, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2f, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x30, 0xcb: 0x31, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x32,\n\t0xd0: 0x09, 0xd1: 0x33, 0xd2: 0x34, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x35,\n\t0xd8: 0x36, 0xd9: 0x0c, 0xdb: 0x37, 0xdc: 0x38, 0xdd: 0x39, 0xdf: 0x3a,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x3b, 0x121: 0x3c, 0x122: 0x3d, 0x123: 0x0d, 0x124: 0x3e, 0x125: 0x3f, 0x126: 0x40, 0x127: 0x41,\n\t0x128: 0x42, 0x129: 0x43, 0x12a: 0x44, 0x12b: 0x45, 0x12c: 0x40, 0x12d: 0x46, 0x12e: 0x47, 0x12f: 0x48,\n\t0x130: 0x44, 0x131: 0x49, 0x132: 0x4a, 0x133: 0x4b, 0x134: 0x4c, 0x135: 0x4d, 0x137: 0x4e,\n\t0x138: 0x4f, 0x139: 0x50, 0x13a: 0x51, 0x13b: 0x52, 0x13c: 0x53, 0x13d: 0x54, 0x13e: 0x55, 0x13f: 0x56,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x57, 0x142: 0x58, 0x144: 0x59, 0x145: 0x5a, 0x146: 0x5b, 0x147: 0x5c,\n\t0x14d: 0x5d,\n\t0x15c: 0x5e, 0x15f: 0x5f,\n\t0x162: 0x60, 0x164: 0x61,\n\t0x168: 0x62, 0x169: 0x63, 0x16a: 0x64, 0x16b: 0x65, 0x16c: 0x0e, 0x16d: 0x66, 0x16e: 0x67, 0x16f: 0x68,\n\t0x170: 0x69, 0x173: 0x6a, 0x177: 0x0f,\n\t0x178: 0x10, 0x179: 0x11, 0x17a: 0x12, 0x17b: 0x13, 0x17c: 0x14, 0x17d: 0x15, 0x17e: 0x16, 0x17f: 0x17,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x6b, 0x183: 0x6c, 0x184: 0x6d, 0x186: 0x6e, 0x187: 0x6f,\n\t0x188: 0x70, 0x189: 0x18, 0x18a: 0x19, 0x18b: 0x71, 0x18c: 0x72,\n\t0x1ab: 0x73,\n\t0x1b3: 0x74, 0x1b5: 0x75, 0x1b7: 0x76,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x77, 0x1c1: 0x1a, 0x1c2: 0x1b, 0x1c3: 0x1c, 0x1c4: 0x78, 0x1c5: 0x79,\n\t0x1c9: 0x7a, 0x1cc: 0x7b, 0x1cd: 0x7c,\n\t// Block 0x8, offset 0x200\n\t0x219: 0x7d, 0x21a: 0x7e, 0x21b: 0x7f,\n\t0x220: 0x80, 0x223: 0x81, 0x224: 0x82, 0x225: 0x83, 0x226: 0x84, 0x227: 0x85,\n\t0x22a: 0x86, 0x22b: 0x87, 0x22f: 0x88,\n\t0x230: 0x89, 0x231: 0x8a, 0x232: 0x8b, 0x233: 0x8c, 0x234: 0x8d, 0x235: 0x8e, 0x236: 0x8f, 0x237: 0x89,\n\t0x238: 0x8a, 0x239: 0x8b, 0x23a: 0x8c, 0x23b: 0x8d, 0x23c: 0x8e, 0x23d: 0x8f, 0x23e: 0x89, 0x23f: 0x8a,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x8b, 0x241: 0x8c, 0x242: 0x8d, 0x243: 0x8e, 0x244: 0x8f, 0x245: 0x89, 0x246: 0x8a, 0x247: 0x8b,\n\t0x248: 0x8c, 0x249: 0x8d, 0x24a: 0x8e, 0x24b: 0x8f, 0x24c: 0x89, 0x24d: 0x8a, 0x24e: 0x8b, 0x24f: 0x8c,\n\t0x250: 0x8d, 0x251: 0x8e, 0x252: 0x8f, 0x253: 0x89, 0x254: 0x8a, 0x255: 0x8b, 0x256: 0x8c, 0x257: 0x8d,\n\t0x258: 0x8e, 0x259: 0x8f, 0x25a: 0x89, 0x25b: 0x8a, 0x25c: 0x8b, 0x25d: 0x8c, 0x25e: 0x8d, 0x25f: 0x8e,\n\t0x260: 0x8f, 0x261: 0x89, 0x262: 0x8a, 0x263: 0x8b, 0x264: 0x8c, 0x265: 0x8d, 0x266: 0x8e, 0x267: 0x8f,\n\t0x268: 0x89, 0x269: 0x8a, 0x26a: 0x8b, 0x26b: 0x8c, 0x26c: 0x8d, 0x26d: 0x8e, 0x26e: 0x8f, 0x26f: 0x89,\n\t0x270: 0x8a, 0x271: 0x8b, 0x272: 0x8c, 0x273: 0x8d, 0x274: 0x8e, 0x275: 0x8f, 0x276: 0x89, 0x277: 0x8a,\n\t0x278: 0x8b, 0x279: 0x8c, 0x27a: 0x8d, 0x27b: 0x8e, 0x27c: 0x8f, 0x27d: 0x89, 0x27e: 0x8a, 0x27f: 0x8b,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x8c, 0x281: 0x8d, 0x282: 0x8e, 0x283: 0x8f, 0x284: 0x89, 0x285: 0x8a, 0x286: 0x8b, 0x287: 0x8c,\n\t0x288: 0x8d, 0x289: 0x8e, 0x28a: 0x8f, 0x28b: 0x89, 0x28c: 0x8a, 0x28d: 0x8b, 0x28e: 0x8c, 0x28f: 0x8d,\n\t0x290: 0x8e, 0x291: 0x8f, 0x292: 0x89, 0x293: 0x8a, 0x294: 0x8b, 0x295: 0x8c, 0x296: 0x8d, 0x297: 0x8e,\n\t0x298: 0x8f, 0x299: 0x89, 0x29a: 0x8a, 0x29b: 0x8b, 0x29c: 0x8c, 0x29d: 0x8d, 0x29e: 0x8e, 0x29f: 0x8f,\n\t0x2a0: 0x89, 0x2a1: 0x8a, 0x2a2: 0x8b, 0x2a3: 0x8c, 0x2a4: 0x8d, 0x2a5: 0x8e, 0x2a6: 0x8f, 0x2a7: 0x89,\n\t0x2a8: 0x8a, 0x2a9: 0x8b, 0x2aa: 0x8c, 0x2ab: 0x8d, 0x2ac: 0x8e, 0x2ad: 0x8f, 0x2ae: 0x89, 0x2af: 0x8a,\n\t0x2b0: 0x8b, 0x2b1: 0x8c, 0x2b2: 0x8d, 0x2b3: 0x8e, 0x2b4: 0x8f, 0x2b5: 0x89, 0x2b6: 0x8a, 0x2b7: 0x8b,\n\t0x2b8: 0x8c, 0x2b9: 0x8d, 0x2ba: 0x8e, 0x2bb: 0x8f, 0x2bc: 0x89, 0x2bd: 0x8a, 0x2be: 0x8b, 0x2bf: 0x8c,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x8d, 0x2c1: 0x8e, 0x2c2: 0x8f, 0x2c3: 0x89, 0x2c4: 0x8a, 0x2c5: 0x8b, 0x2c6: 0x8c, 0x2c7: 0x8d,\n\t0x2c8: 0x8e, 0x2c9: 0x8f, 0x2ca: 0x89, 0x2cb: 0x8a, 0x2cc: 0x8b, 0x2cd: 0x8c, 0x2ce: 0x8d, 0x2cf: 0x8e,\n\t0x2d0: 0x8f, 0x2d1: 0x89, 0x2d2: 0x8a, 0x2d3: 0x8b, 0x2d4: 0x8c, 0x2d5: 0x8d, 0x2d6: 0x8e, 0x2d7: 0x8f,\n\t0x2d8: 0x89, 0x2d9: 0x8a, 0x2da: 0x8b, 0x2db: 0x8c, 0x2dc: 0x8d, 0x2dd: 0x8e, 0x2de: 0x90,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x1d, 0x325: 0x1e, 0x326: 0x1f, 0x327: 0x20,\n\t0x328: 0x21, 0x329: 0x22, 0x32a: 0x23, 0x32b: 0x24, 0x32c: 0x91, 0x32d: 0x92, 0x32e: 0x93,\n\t0x331: 0x94, 0x332: 0x95, 0x333: 0x96, 0x334: 0x97,\n\t0x338: 0x98, 0x339: 0x99, 0x33a: 0x9a, 0x33b: 0x9b, 0x33e: 0x9c, 0x33f: 0x9d,\n\t// Block 0xd, offset 0x340\n\t0x347: 0x9e,\n\t0x34b: 0x9f, 0x34d: 0xa0,\n\t0x368: 0xa1, 0x36b: 0xa2,\n\t0x374: 0xa3,\n\t0x37a: 0xa4, 0x37b: 0xa5, 0x37d: 0xa6, 0x37e: 0xa7,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xa8, 0x382: 0xa9, 0x384: 0xaa, 0x385: 0x84, 0x387: 0xab,\n\t0x388: 0xac, 0x38b: 0xad, 0x38c: 0xae, 0x38d: 0xaf,\n\t0x391: 0xb0, 0x392: 0xb1, 0x393: 0xb2, 0x396: 0xb3, 0x397: 0xb4,\n\t0x398: 0x75, 0x39a: 0xb5, 0x39c: 0xb6,\n\t0x3a0: 0xb7, 0x3a4: 0xb8, 0x3a5: 0xb9, 0x3a7: 0xba,\n\t0x3a8: 0xbb, 0x3a9: 0xbc, 0x3aa: 0xbd,\n\t0x3b0: 0x75, 0x3b5: 0xbe, 0x3b6: 0xbf,\n\t0x3bd: 0xc0,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xc1, 0x3ec: 0xc2,\n\t0x3ff: 0xc3,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xc4,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xc5, 0x446: 0xc6, 0x447: 0xc7,\n\t0x449: 0xc8,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xc9, 0x482: 0xca, 0x484: 0xc2,\n\t0x48a: 0xcb, 0x48b: 0xcc,\n\t0x493: 0xcd,\n\t0x4a3: 0xce, 0x4a5: 0xcf,\n\t// Block 0x13, offset 0x4c0\n\t0x4c8: 0xd0,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x25, 0x521: 0x26, 0x522: 0x27, 0x523: 0x28, 0x524: 0x29, 0x525: 0x2a, 0x526: 0x2b, 0x527: 0x2c,\n\t0x528: 0x2d,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfcSparseOffset: 163 entries, 326 bytes\nvar nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x63, 0x68, 0x6a, 0x6e, 0x76, 0x7d, 0x80, 0x88, 0x8c, 0x90, 0x92, 0x94, 0x9d, 0xa1, 0xa8, 0xad, 0xb0, 0xba, 0xbd, 0xc4, 0xcc, 0xcf, 0xd1, 0xd4, 0xd6, 0xdb, 0xec, 0xf8, 0xfa, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10a, 0x10c, 0x10f, 0x112, 0x114, 0x117, 0x11a, 0x11e, 0x124, 0x12b, 0x134, 0x136, 0x139, 0x13b, 0x146, 0x14a, 0x158, 0x15b, 0x161, 0x167, 0x172, 0x176, 0x178, 0x17a, 0x17c, 0x17e, 0x180, 0x186, 0x18a, 0x18c, 0x18e, 0x196, 0x19a, 0x19d, 0x19f, 0x1a1, 0x1a4, 0x1a7, 0x1a9, 0x1ab, 0x1ad, 0x1af, 0x1b5, 0x1b8, 0x1ba, 0x1c1, 0x1c7, 0x1cd, 0x1d5, 0x1db, 0x1e1, 0x1e7, 0x1eb, 0x1f9, 0x202, 0x205, 0x208, 0x20a, 0x20d, 0x20f, 0x213, 0x218, 0x21a, 0x21c, 0x221, 0x227, 0x229, 0x22b, 0x22d, 0x233, 0x236, 0x238, 0x23a, 0x23c, 0x242, 0x246, 0x24a, 0x252, 0x259, 0x25c, 0x25f, 0x261, 0x264, 0x26c, 0x270, 0x277, 0x27a, 0x280, 0x282, 0x285, 0x287, 0x28a, 0x28f, 0x291, 0x293, 0x295, 0x297, 0x299, 0x29c, 0x29e, 0x2a0, 0x2a2, 0x2a4, 0x2a6, 0x2a8, 0x2b5, 0x2bf, 0x2c1, 0x2c3, 0x2c9, 0x2cb, 0x2cd, 0x2cf, 0x2d3, 0x2d5, 0x2d8}\n\n// nfcSparseValues: 730 entries, 2920 bytes\nvar nfcSparseValues = [730]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0xa100, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8100, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb8, hi: 0xb8},\n\t// Block 0x1, offset 0x5\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x4823, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4855, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t// Block 0x3, offset 0xb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x98, hi: 0x9d},\n\t// Block 0x4, offset 0xd\n\t{value: 0x0006, lo: 0x0a},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x85, hi: 0x85},\n\t{value: 0xa000, lo: 0x89, hi: 0x89},\n\t{value: 0x4981, lo: 0x8a, hi: 0x8a},\n\t{value: 0x499f, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3808, lo: 0x8c, hi: 0x8c},\n\t{value: 0x3820, lo: 0x8d, hi: 0x8d},\n\t{value: 0x49b7, lo: 0x8e, hi: 0x8e},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x383e, lo: 0x93, hi: 0x94},\n\t// Block 0x5, offset 0x18\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x38e6, lo: 0x90, hi: 0x90},\n\t{value: 0x38f2, lo: 0x91, hi: 0x91},\n\t{value: 0x38e0, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3958, lo: 0x97, hi: 0x97},\n\t{value: 0x3922, lo: 0x9c, hi: 0x9c},\n\t{value: 0x390a, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3934, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x395e, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3964, lo: 0xb7, hi: 0xb7},\n\t// Block 0x6, offset 0x28\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x83, hi: 0x87},\n\t// Block 0x7, offset 0x2a\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8114, lo: 0x81, hi: 0x82},\n\t{value: 0x8133, lo: 0x84, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t{value: 0x810e, lo: 0x87, hi: 0x87},\n\t// Block 0x8, offset 0x2f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x97},\n\t{value: 0x811a, lo: 0x98, hi: 0x98},\n\t{value: 0x811b, lo: 0x99, hi: 0x99},\n\t{value: 0x811c, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3982, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3988, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3994, lo: 0xa4, hi: 0xa4},\n\t{value: 0x398e, lo: 0xa5, hi: 0xa5},\n\t{value: 0x399a, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x9, offset 0x3a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x39ac, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x39a0, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x39a6, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8133, lo: 0x96, hi: 0x9c},\n\t{value: 0x8133, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812e, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812e, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t// Block 0xa, offset 0x49\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x8120, lo: 0x91, hi: 0x91},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812e, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8133, lo: 0xba, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8133, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8133, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb, offset 0x56\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8133, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x812e, lo: 0x82, hi: 0x83},\n\t{value: 0x812e, lo: 0x84, hi: 0x85},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x812e, lo: 0x88, hi: 0x89},\n\t{value: 0x8133, lo: 0x8a, hi: 0x8a},\n\t// Block 0xc, offset 0x5e\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0xab, hi: 0xb1},\n\t{value: 0x812e, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8133, lo: 0xb3, hi: 0xb3},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0xd, offset 0x63\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0x96, hi: 0x99},\n\t{value: 0x8133, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8133, lo: 0xa9, hi: 0xad},\n\t// Block 0xe, offset 0x68\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t// Block 0xf, offset 0x6a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8133, lo: 0x98, hi: 0x98},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t{value: 0x8133, lo: 0x9c, hi: 0x9f},\n\t// Block 0x10, offset 0x6e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x4019, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x4021, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4029, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9903, lo: 0xbc, hi: 0xbc},\n\t// Block 0x11, offset 0x76\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x91, hi: 0x91},\n\t{value: 0x812e, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x93, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x94},\n\t{value: 0x465d, lo: 0x98, hi: 0x9f},\n\t// Block 0x12, offset 0x7d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x13, offset 0x80\n\t{value: 0x0008, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2dd5, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x469d, lo: 0x9c, hi: 0x9d},\n\t{value: 0x46ad, lo: 0x9f, hi: 0x9f},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbe},\n\t// Block 0x14, offset 0x88\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x46d5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x46dd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x15, offset 0x8c\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x46b5, lo: 0x99, hi: 0x9b},\n\t{value: 0x46cd, lo: 0x9e, hi: 0x9e},\n\t// Block 0x16, offset 0x90\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x17, offset 0x92\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t// Block 0x18, offset 0x94\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2ded, lo: 0x88, hi: 0x88},\n\t{value: 0x2de5, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2df5, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x46e5, lo: 0x9c, hi: 0x9c},\n\t{value: 0x46ed, lo: 0x9d, hi: 0x9d},\n\t// Block 0x19, offset 0x9d\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2dfd, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1a, offset 0xa1\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2e05, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2e15, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2e0d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1b, offset 0xa8\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x4031, lo: 0x88, hi: 0x88},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8121, lo: 0x95, hi: 0x96},\n\t// Block 0x1c, offset 0xad\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1d, offset 0xb0\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2e1d, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2e25, lo: 0x87, hi: 0x87},\n\t{value: 0x2e2d, lo: 0x88, hi: 0x88},\n\t{value: 0x3091, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2f19, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1e, offset 0xba\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1f, offset 0xbd\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2e35, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2e45, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2e3d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x20, offset 0xc4\n\t{value: 0x6ab3, lo: 0x07},\n\t{value: 0x9905, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4039, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3099, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2f24, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2e4d, lo: 0x9e, hi: 0x9f},\n\t// Block 0x21, offset 0xcc\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8123, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x22, offset 0xcf\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8124, lo: 0x88, hi: 0x8b},\n\t// Block 0x23, offset 0xd1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8125, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x24, offset 0xd4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8126, lo: 0x88, hi: 0x8b},\n\t// Block 0x25, offset 0xd6\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x812e, lo: 0x98, hi: 0x99},\n\t{value: 0x812e, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812c, lo: 0xb9, hi: 0xb9},\n\t// Block 0x26, offset 0xdb\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2774, lo: 0x83, hi: 0x83},\n\t{value: 0x277b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2782, lo: 0x92, hi: 0x92},\n\t{value: 0x2789, lo: 0x97, hi: 0x97},\n\t{value: 0x2790, lo: 0x9c, hi: 0x9c},\n\t{value: 0x276d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8127, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8128, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4bc5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8129, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4bce, lo: 0xb5, hi: 0xb5},\n\t{value: 0x46f5, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8200, lo: 0xb7, hi: 0xb7},\n\t{value: 0x46fd, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8200, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8128, lo: 0xba, hi: 0xbd},\n\t// Block 0x27, offset 0xec\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8128, lo: 0x80, hi: 0x80},\n\t{value: 0x4bd7, lo: 0x81, hi: 0x81},\n\t{value: 0x8133, lo: 0x82, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0x86, hi: 0x87},\n\t{value: 0x279e, lo: 0x93, hi: 0x93},\n\t{value: 0x27a5, lo: 0x9d, hi: 0x9d},\n\t{value: 0x27ac, lo: 0xa2, hi: 0xa2},\n\t{value: 0x27b3, lo: 0xa7, hi: 0xa7},\n\t{value: 0x27ba, lo: 0xac, hi: 0xac},\n\t{value: 0x2797, lo: 0xb9, hi: 0xb9},\n\t// Block 0x28, offset 0xf8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x86, hi: 0x86},\n\t// Block 0x29, offset 0xfa\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2e55, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x2a, offset 0x100\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2b, offset 0x102\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x104\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x106\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x108\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x10a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x10c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x94, hi: 0x95},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x10f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x112\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x114\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812f, lo: 0xb9, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x117\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x97, hi: 0x97},\n\t{value: 0x812e, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x11a\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8133, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x11e\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812e, lo: 0xb5, hi: 0xba},\n\t{value: 0x8133, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x37, offset 0x124\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x812e, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x82},\n\t{value: 0x812e, lo: 0x83, hi: 0x84},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8a},\n\t{value: 0x8133, lo: 0x8b, hi: 0x8e},\n\t// Block 0x38, offset 0x12b\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2e9d, lo: 0x80, hi: 0x80},\n\t{value: 0x2ea5, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2ead, lo: 0x83, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xab, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xac},\n\t{value: 0x8133, lo: 0xad, hi: 0xb3},\n\t// Block 0x39, offset 0x134\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xaa, hi: 0xab},\n\t// Block 0x3a, offset 0x136\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8105, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3b, offset 0x139\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3c, offset 0x13b\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812e, lo: 0x95, hi: 0x99},\n\t{value: 0x8133, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812e, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x8133, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3d, offset 0x146\n\t{value: 0x0004, lo: 0x03},\n\t{value: 0x052a, lo: 0x80, hi: 0x81},\n\t{value: 0x8100, lo: 0x97, hi: 0x97},\n\t{value: 0x8100, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3e, offset 0x14a\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8133, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8133, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8133, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812e, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8133, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t// Block 0x3f, offset 0x158\n\t{value: 0x43bc, lo: 0x02},\n\t{value: 0x023c, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0057, lo: 0xaa, hi: 0xab},\n\t// Block 0x40, offset 0x15b\n\t{value: 0x0007, lo: 0x05},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3cfa, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3d08, lo: 0xae, hi: 0xae},\n\t// Block 0x41, offset 0x161\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3d0f, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3d16, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x42, offset 0x167\n\t{value: 0x62c7, lo: 0x0a},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3d24, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3d2b, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3d32, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3d39, lo: 0xa4, hi: 0xa5},\n\t{value: 0x3d40, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x43, offset 0x172\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3da9, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3dd3, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3dfd, lo: 0xaa, hi: 0xad},\n\t// Block 0x44, offset 0x176\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x0586, lo: 0xa9, hi: 0xaa},\n\t// Block 0x45, offset 0x178\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x461e, lo: 0x9c, hi: 0x9c},\n\t// Block 0x46, offset 0x17a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xaf, hi: 0xb1},\n\t// Block 0x47, offset 0x17c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x48, offset 0x17e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa0, hi: 0xbf},\n\t// Block 0x49, offset 0x180\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x8134, lo: 0xac, hi: 0xac},\n\t{value: 0x812f, lo: 0xad, hi: 0xad},\n\t{value: 0x8130, lo: 0xae, hi: 0xaf},\n\t// Block 0x4a, offset 0x186\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4be0, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4be0, lo: 0xb5, hi: 0xb6},\n\t{value: 0x4be0, lo: 0xba, hi: 0xbf},\n\t// Block 0x4b, offset 0x18a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4be0, lo: 0x8f, hi: 0xa3},\n\t// Block 0x4c, offset 0x18c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xae, hi: 0xbe},\n\t// Block 0x4d, offset 0x18e\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x8100, lo: 0x84, hi: 0x84},\n\t{value: 0x8100, lo: 0x87, hi: 0x87},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t{value: 0x8100, lo: 0x9e, hi: 0x9e},\n\t{value: 0x8100, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8100, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8100, lo: 0xbb, hi: 0xbb},\n\t// Block 0x4e, offset 0x196\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8100, lo: 0x80, hi: 0x80},\n\t{value: 0x8100, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8100, lo: 0x8e, hi: 0x8e},\n\t// Block 0x4f, offset 0x19a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb4, hi: 0xbd},\n\t// Block 0x50, offset 0x19d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9f},\n\t// Block 0x51, offset 0x19f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb1},\n\t// Block 0x52, offset 0x1a1\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xac, hi: 0xac},\n\t// Block 0x53, offset 0x1a4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xa0, hi: 0xb1},\n\t// Block 0x54, offset 0x1a7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xab, hi: 0xad},\n\t// Block 0x55, offset 0x1a9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x93, hi: 0x93},\n\t// Block 0x56, offset 0x1ab\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb3, hi: 0xb3},\n\t// Block 0x57, offset 0x1ad\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t// Block 0x58, offset 0x1af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbf},\n\t// Block 0x59, offset 0x1b5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t// Block 0x5a, offset 0x1b8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xad, hi: 0xad},\n\t// Block 0x5b, offset 0x1ba\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x5c, offset 0x1c1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x5d, offset 0x1c7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x5e, offset 0x1cd\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x5f, offset 0x1d5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x60, offset 0x1db\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x61, offset 0x1e1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x62, offset 0x1e7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x63, offset 0x1eb\n\t{value: 0x0006, lo: 0x0d},\n\t{value: 0x44d1, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8116, lo: 0x9e, hi: 0x9e},\n\t{value: 0x4543, lo: 0x9f, hi: 0x9f},\n\t{value: 0x4531, lo: 0xaa, hi: 0xab},\n\t{value: 0x4635, lo: 0xac, hi: 0xac},\n\t{value: 0x463d, lo: 0xad, hi: 0xad},\n\t{value: 0x4489, lo: 0xae, hi: 0xb1},\n\t{value: 0x44a7, lo: 0xb2, hi: 0xb4},\n\t{value: 0x44bf, lo: 0xb5, hi: 0xb6},\n\t{value: 0x44cb, lo: 0xb8, hi: 0xb8},\n\t{value: 0x44d7, lo: 0xb9, hi: 0xbb},\n\t{value: 0x44ef, lo: 0xbc, hi: 0xbc},\n\t{value: 0x44f5, lo: 0xbe, hi: 0xbe},\n\t// Block 0x64, offset 0x1f9\n\t{value: 0x0006, lo: 0x08},\n\t{value: 0x44fb, lo: 0x80, hi: 0x81},\n\t{value: 0x4507, lo: 0x83, hi: 0x84},\n\t{value: 0x4519, lo: 0x86, hi: 0x89},\n\t{value: 0x453d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x44b9, lo: 0x8b, hi: 0x8b},\n\t{value: 0x44a1, lo: 0x8c, hi: 0x8c},\n\t{value: 0x44e9, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4513, lo: 0x8e, hi: 0x8e},\n\t// Block 0x65, offset 0x202\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0xa4, hi: 0xa5},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb1},\n\t// Block 0x66, offset 0x205\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x9b, hi: 0x9d},\n\t{value: 0x8200, lo: 0x9e, hi: 0xa3},\n\t// Block 0x67, offset 0x208\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t// Block 0x68, offset 0x20a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x99, hi: 0x99},\n\t{value: 0x8200, lo: 0xb2, hi: 0xb4},\n\t// Block 0x69, offset 0x20d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xbc, hi: 0xbd},\n\t// Block 0x6a, offset 0x20f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa6},\n\t{value: 0x812e, lo: 0xa7, hi: 0xad},\n\t{value: 0x8133, lo: 0xae, hi: 0xaf},\n\t// Block 0x6b, offset 0x213\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8100, lo: 0x89, hi: 0x8c},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb2},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb6, hi: 0xbf},\n\t// Block 0x6c, offset 0x218\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x81, hi: 0x8c},\n\t// Block 0x6d, offset 0x21a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xb5, hi: 0xba},\n\t// Block 0x6e, offset 0x21c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x4be0, lo: 0x9e, hi: 0x9f},\n\t{value: 0x4be0, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4be0, lo: 0xa5, hi: 0xa6},\n\t{value: 0x4be0, lo: 0xaa, hi: 0xaf},\n\t// Block 0x6f, offset 0x221\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x4be0, lo: 0x82, hi: 0x87},\n\t{value: 0x4be0, lo: 0x8a, hi: 0x8f},\n\t{value: 0x4be0, lo: 0x92, hi: 0x97},\n\t{value: 0x4be0, lo: 0x9a, hi: 0x9c},\n\t{value: 0x8100, lo: 0xa3, hi: 0xa3},\n\t// Block 0x70, offset 0x227\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0x71, offset 0x229\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xa0, hi: 0xa0},\n\t// Block 0x72, offset 0x22b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb6, hi: 0xba},\n\t// Block 0x73, offset 0x22d\n\t{value: 0x002d, lo: 0x05},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x74, offset 0x233\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812e, lo: 0xa6, hi: 0xa6},\n\t// Block 0x75, offset 0x236\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa7},\n\t// Block 0x76, offset 0x238\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t// Block 0x77, offset 0x23a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbf},\n\t// Block 0x78, offset 0x23c\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x8133, lo: 0x88, hi: 0x8a},\n\t{value: 0x812e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8133, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812e, lo: 0x8d, hi: 0x90},\n\t// Block 0x79, offset 0x242\n\t{value: 0x0005, lo: 0x03},\n\t{value: 0x8133, lo: 0x82, hi: 0x82},\n\t{value: 0x812e, lo: 0x83, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t// Block 0x7a, offset 0x246\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7b, offset 0x24a\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4379, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4383, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x438d, lo: 0xab, hi: 0xab},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x7c, offset 0x252\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8133, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2eb5, lo: 0xae, hi: 0xae},\n\t{value: 0x2ebf, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8105, lo: 0xb3, hi: 0xb4},\n\t// Block 0x7d, offset 0x259\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0x7e, offset 0x25c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8103, lo: 0xb6, hi: 0xb6},\n\t// Block 0x7f, offset 0x25f\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8103, lo: 0xa9, hi: 0xaa},\n\t// Block 0x80, offset 0x261\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x81, offset 0x264\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2ec9, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2ed3, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8133, lo: 0xa6, hi: 0xac},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t// Block 0x82, offset 0x26c\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x86, hi: 0x86},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9e},\n\t// Block 0x83, offset 0x270\n\t{value: 0x6a23, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2ee7, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2edd, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2ef1, lo: 0xbe, hi: 0xbe},\n\t// Block 0x84, offset 0x277\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x85, offset 0x27a\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2efb, lo: 0xba, hi: 0xba},\n\t{value: 0x2f05, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x86, offset 0x280\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x80, hi: 0x80},\n\t// Block 0x87, offset 0x282\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x88, offset 0x285\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xab, hi: 0xab},\n\t// Block 0x89, offset 0x287\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8103, lo: 0xba, hi: 0xba},\n\t// Block 0x8a, offset 0x28a\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2f0f, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8105, lo: 0xbd, hi: 0xbe},\n\t// Block 0x8b, offset 0x28f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x8c, offset 0x291\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t// Block 0x8d, offset 0x293\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x8e, offset 0x295\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x87, hi: 0x87},\n\t// Block 0x8f, offset 0x297\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x99, hi: 0x99},\n\t// Block 0x90, offset 0x299\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0x82, hi: 0x82},\n\t{value: 0x8105, lo: 0x84, hi: 0x85},\n\t// Block 0x91, offset 0x29c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x97, hi: 0x97},\n\t// Block 0x92, offset 0x29e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x81, hi: 0x82},\n\t// Block 0x93, offset 0x2a0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x94, offset 0x2a2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb6},\n\t// Block 0x95, offset 0x2a4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb0, hi: 0xb1},\n\t// Block 0x96, offset 0x2a6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x97, offset 0x2a8\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x470d, lo: 0x9e, hi: 0x9e},\n\t{value: 0x4717, lo: 0x9f, hi: 0x9f},\n\t{value: 0x474b, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4759, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4767, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4775, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4783, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812c, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8131, lo: 0xad, hi: 0xad},\n\t{value: 0x812c, lo: 0xae, hi: 0xb2},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbf},\n\t// Block 0x98, offset 0x2b5\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812e, lo: 0x80, hi: 0x82},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8133, lo: 0xaa, hi: 0xad},\n\t{value: 0x4721, lo: 0xbb, hi: 0xbb},\n\t{value: 0x472b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4791, lo: 0xbd, hi: 0xbd},\n\t{value: 0x47ad, lo: 0xbe, hi: 0xbe},\n\t{value: 0x479f, lo: 0xbf, hi: 0xbf},\n\t// Block 0x99, offset 0x2bf\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x47bb, lo: 0x80, hi: 0x80},\n\t// Block 0x9a, offset 0x2c1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x82, hi: 0x84},\n\t// Block 0x9b, offset 0x2c3\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0x80, hi: 0x86},\n\t{value: 0x8133, lo: 0x88, hi: 0x98},\n\t{value: 0x8133, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8133, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8133, lo: 0xa6, hi: 0xaa},\n\t// Block 0x9c, offset 0x2c9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t// Block 0x9d, offset 0x2cb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xae, hi: 0xae},\n\t// Block 0x9e, offset 0x2cd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xac, hi: 0xaf},\n\t// Block 0x9f, offset 0x2cf\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8134, lo: 0xac, hi: 0xad},\n\t{value: 0x812e, lo: 0xae, hi: 0xae},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t// Block 0xa0, offset 0x2d3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x90, hi: 0x96},\n\t// Block 0xa1, offset 0x2d5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x84, hi: 0x89},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0xa2, offset 0x2d8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x93, hi: 0x93},\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfkcTrie. Total size: 19260 bytes (18.81 KiB). Checksum: 1a0bbc4c8c24da49.\ntype nfkcTrie struct{}\n\nfunc newNfkcTrie(i int) *nfkcTrie {\n\treturn &nfkcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 95:\n\t\treturn uint16(nfkcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 95\n\t\treturn uint16(nfkcSparse.lookup(n, b))\n\t}\n}\n\n// nfkcValues: 97 blocks, 6208 entries, 12416 bytes\n// The third block is the zero block.\nvar nfkcValues = [6208]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x30b0, 0xc1: 0x30b5, 0xc2: 0x47c9, 0xc3: 0x30ba, 0xc4: 0x47d8, 0xc5: 0x47dd,\n\t0xc6: 0xa000, 0xc7: 0x47e7, 0xc8: 0x3123, 0xc9: 0x3128, 0xca: 0x47ec, 0xcb: 0x313c,\n\t0xcc: 0x31af, 0xcd: 0x31b4, 0xce: 0x31b9, 0xcf: 0x4800, 0xd1: 0x3245,\n\t0xd2: 0x3268, 0xd3: 0x326d, 0xd4: 0x480a, 0xd5: 0x480f, 0xd6: 0x481e,\n\t0xd8: 0xa000, 0xd9: 0x32f4, 0xda: 0x32f9, 0xdb: 0x32fe, 0xdc: 0x4850, 0xdd: 0x3376,\n\t0xe0: 0x33bc, 0xe1: 0x33c1, 0xe2: 0x485a, 0xe3: 0x33c6,\n\t0xe4: 0x4869, 0xe5: 0x486e, 0xe6: 0xa000, 0xe7: 0x4878, 0xe8: 0x342f, 0xe9: 0x3434,\n\t0xea: 0x487d, 0xeb: 0x3448, 0xec: 0x34c0, 0xed: 0x34c5, 0xee: 0x34ca, 0xef: 0x4891,\n\t0xf1: 0x3556, 0xf2: 0x3579, 0xf3: 0x357e, 0xf4: 0x489b, 0xf5: 0x48a0,\n\t0xf6: 0x48af, 0xf8: 0xa000, 0xf9: 0x360a, 0xfa: 0x360f, 0xfb: 0x3614,\n\t0xfc: 0x48e1, 0xfd: 0x3691, 0xff: 0x36aa,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x30bf, 0x101: 0x33cb, 0x102: 0x47ce, 0x103: 0x485f, 0x104: 0x30dd, 0x105: 0x33e9,\n\t0x106: 0x30f1, 0x107: 0x33fd, 0x108: 0x30f6, 0x109: 0x3402, 0x10a: 0x30fb, 0x10b: 0x3407,\n\t0x10c: 0x3100, 0x10d: 0x340c, 0x10e: 0x310a, 0x10f: 0x3416,\n\t0x112: 0x47f1, 0x113: 0x4882, 0x114: 0x3132, 0x115: 0x343e, 0x116: 0x3137, 0x117: 0x3443,\n\t0x118: 0x3155, 0x119: 0x3461, 0x11a: 0x3146, 0x11b: 0x3452, 0x11c: 0x316e, 0x11d: 0x347a,\n\t0x11e: 0x3178, 0x11f: 0x3484, 0x120: 0x317d, 0x121: 0x3489, 0x122: 0x3187, 0x123: 0x3493,\n\t0x124: 0x318c, 0x125: 0x3498, 0x128: 0x31be, 0x129: 0x34cf,\n\t0x12a: 0x31c3, 0x12b: 0x34d4, 0x12c: 0x31c8, 0x12d: 0x34d9, 0x12e: 0x31eb, 0x12f: 0x34f7,\n\t0x130: 0x31cd, 0x132: 0x1a8a, 0x133: 0x1b17, 0x134: 0x31f5, 0x135: 0x3501,\n\t0x136: 0x3209, 0x137: 0x351a, 0x139: 0x3213, 0x13a: 0x3524, 0x13b: 0x321d,\n\t0x13c: 0x352e, 0x13d: 0x3218, 0x13e: 0x3529, 0x13f: 0x1cdc,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x1d64, 0x143: 0x3240, 0x144: 0x3551, 0x145: 0x3259,\n\t0x146: 0x356a, 0x147: 0x324f, 0x148: 0x3560, 0x149: 0x1d8c,\n\t0x14c: 0x4814, 0x14d: 0x48a5, 0x14e: 0x3272, 0x14f: 0x3583, 0x150: 0x327c, 0x151: 0x358d,\n\t0x154: 0x329a, 0x155: 0x35ab, 0x156: 0x32b3, 0x157: 0x35c4,\n\t0x158: 0x32a4, 0x159: 0x35b5, 0x15a: 0x4837, 0x15b: 0x48c8, 0x15c: 0x32bd, 0x15d: 0x35ce,\n\t0x15e: 0x32cc, 0x15f: 0x35dd, 0x160: 0x483c, 0x161: 0x48cd, 0x162: 0x32e5, 0x163: 0x35fb,\n\t0x164: 0x32d6, 0x165: 0x35ec, 0x168: 0x4846, 0x169: 0x48d7,\n\t0x16a: 0x484b, 0x16b: 0x48dc, 0x16c: 0x3303, 0x16d: 0x3619, 0x16e: 0x330d, 0x16f: 0x3623,\n\t0x170: 0x3312, 0x171: 0x3628, 0x172: 0x3330, 0x173: 0x3646, 0x174: 0x3353, 0x175: 0x3669,\n\t0x176: 0x337b, 0x177: 0x3696, 0x178: 0x338f, 0x179: 0x339e, 0x17a: 0x36be, 0x17b: 0x33a8,\n\t0x17c: 0x36c8, 0x17d: 0x33ad, 0x17e: 0x36cd, 0x17f: 0x00a7,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x2f2f, 0x185: 0x2f35,\n\t0x186: 0x2f3b, 0x187: 0x1a9f, 0x188: 0x1aa2, 0x189: 0x1b38, 0x18a: 0x1ab7, 0x18b: 0x1aba,\n\t0x18c: 0x1b6e, 0x18d: 0x30c9, 0x18e: 0x33d5, 0x18f: 0x31d7, 0x190: 0x34e3, 0x191: 0x3281,\n\t0x192: 0x3592, 0x193: 0x3317, 0x194: 0x362d, 0x195: 0x3b10, 0x196: 0x3c9f, 0x197: 0x3b09,\n\t0x198: 0x3c98, 0x199: 0x3b17, 0x19a: 0x3ca6, 0x19b: 0x3b02, 0x19c: 0x3c91,\n\t0x19e: 0x39f1, 0x19f: 0x3b80, 0x1a0: 0x39ea, 0x1a1: 0x3b79, 0x1a2: 0x36f4, 0x1a3: 0x3706,\n\t0x1a6: 0x3182, 0x1a7: 0x348e, 0x1a8: 0x31ff, 0x1a9: 0x3510,\n\t0x1aa: 0x482d, 0x1ab: 0x48be, 0x1ac: 0x3ad1, 0x1ad: 0x3c60, 0x1ae: 0x3718, 0x1af: 0x371e,\n\t0x1b0: 0x3506, 0x1b1: 0x1a6f, 0x1b2: 0x1a72, 0x1b3: 0x1aff, 0x1b4: 0x3169, 0x1b5: 0x3475,\n\t0x1b8: 0x323b, 0x1b9: 0x354c, 0x1ba: 0x39f8, 0x1bb: 0x3b87,\n\t0x1bc: 0x36ee, 0x1bd: 0x3700, 0x1be: 0x36fa, 0x1bf: 0x370c,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x30ce, 0x1c1: 0x33da, 0x1c2: 0x30d3, 0x1c3: 0x33df, 0x1c4: 0x314b, 0x1c5: 0x3457,\n\t0x1c6: 0x3150, 0x1c7: 0x345c, 0x1c8: 0x31dc, 0x1c9: 0x34e8, 0x1ca: 0x31e1, 0x1cb: 0x34ed,\n\t0x1cc: 0x3286, 0x1cd: 0x3597, 0x1ce: 0x328b, 0x1cf: 0x359c, 0x1d0: 0x32a9, 0x1d1: 0x35ba,\n\t0x1d2: 0x32ae, 0x1d3: 0x35bf, 0x1d4: 0x331c, 0x1d5: 0x3632, 0x1d6: 0x3321, 0x1d7: 0x3637,\n\t0x1d8: 0x32c7, 0x1d9: 0x35d8, 0x1da: 0x32e0, 0x1db: 0x35f6,\n\t0x1de: 0x319b, 0x1df: 0x34a7,\n\t0x1e6: 0x47d3, 0x1e7: 0x4864, 0x1e8: 0x47fb, 0x1e9: 0x488c,\n\t0x1ea: 0x3aa0, 0x1eb: 0x3c2f, 0x1ec: 0x3a7d, 0x1ed: 0x3c0c, 0x1ee: 0x4819, 0x1ef: 0x48aa,\n\t0x1f0: 0x3a99, 0x1f1: 0x3c28, 0x1f2: 0x3385, 0x1f3: 0x36a0,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133,\n\t0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933,\n\t0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933,\n\t0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e,\n\t0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e,\n\t0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e,\n\t0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e,\n\t0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e,\n\t0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e,\n\t0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x4aef, 0x241: 0x4af4, 0x242: 0x9933, 0x243: 0x4af9, 0x244: 0x4bb2, 0x245: 0x9937,\n\t0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133,\n\t0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133,\n\t0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133,\n\t0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136,\n\t0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133,\n\t0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133,\n\t0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133,\n\t0x274: 0x01ee,\n\t0x27a: 0x43e6,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x439b, 0x285: 0x45bc,\n\t0x286: 0x372a, 0x287: 0x00ce, 0x288: 0x3748, 0x289: 0x3754, 0x28a: 0x3766,\n\t0x28c: 0x3784, 0x28e: 0x3796, 0x28f: 0x37b4, 0x290: 0x3f49, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3778, 0x2ab: 0x37a8, 0x2ac: 0x493f, 0x2ad: 0x37d8, 0x2ae: 0x4969, 0x2af: 0x37ea,\n\t0x2b0: 0x3fb1, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c1: 0xa000, 0x2c5: 0xa000,\n\t0x2c9: 0xa000, 0x2ca: 0x4981, 0x2cb: 0x499f,\n\t0x2cc: 0x3808, 0x2cd: 0x3820, 0x2ce: 0x49b7, 0x2d0: 0x0242, 0x2d1: 0x0254,\n\t0x2d2: 0x0230, 0x2d3: 0x444d, 0x2d4: 0x4453, 0x2d5: 0x027e, 0x2d6: 0x026c,\n\t0x2f0: 0x025a, 0x2f1: 0x026f, 0x2f2: 0x0272, 0x2f4: 0x020c, 0x2f5: 0x024b,\n\t0x2f9: 0x022a,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x3862, 0x301: 0x386e, 0x303: 0x385c,\n\t0x306: 0xa000, 0x307: 0x384a,\n\t0x30c: 0x389e, 0x30d: 0x3886, 0x30e: 0x38b0, 0x310: 0xa000,\n\t0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000,\n\t0x318: 0xa000, 0x319: 0x3892, 0x31a: 0xa000,\n\t0x31e: 0xa000, 0x323: 0xa000,\n\t0x327: 0xa000,\n\t0x32b: 0xa000, 0x32d: 0xa000,\n\t0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000,\n\t0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x3916, 0x33a: 0xa000,\n\t0x33e: 0xa000,\n\t// Block 0xd, offset 0x340\n\t0x341: 0x3874, 0x342: 0x38f8,\n\t0x350: 0x3850, 0x351: 0x38d4,\n\t0x352: 0x3856, 0x353: 0x38da, 0x356: 0x3868, 0x357: 0x38ec,\n\t0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x396a, 0x35b: 0x3970, 0x35c: 0x387a, 0x35d: 0x38fe,\n\t0x35e: 0x3880, 0x35f: 0x3904, 0x362: 0x388c, 0x363: 0x3910,\n\t0x364: 0x3898, 0x365: 0x391c, 0x366: 0x38a4, 0x367: 0x3928, 0x368: 0xa000, 0x369: 0xa000,\n\t0x36a: 0x3976, 0x36b: 0x397c, 0x36c: 0x38ce, 0x36d: 0x3952, 0x36e: 0x38aa, 0x36f: 0x392e,\n\t0x370: 0x38b6, 0x371: 0x393a, 0x372: 0x38bc, 0x373: 0x3940, 0x374: 0x38c2, 0x375: 0x3946,\n\t0x378: 0x38c8, 0x379: 0x394c,\n\t// Block 0xe, offset 0x380\n\t0x387: 0x1e91,\n\t0x391: 0x812e,\n\t0x392: 0x8133, 0x393: 0x8133, 0x394: 0x8133, 0x395: 0x8133, 0x396: 0x812e, 0x397: 0x8133,\n\t0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x812f, 0x39b: 0x812e, 0x39c: 0x8133, 0x39d: 0x8133,\n\t0x39e: 0x8133, 0x39f: 0x8133, 0x3a0: 0x8133, 0x3a1: 0x8133, 0x3a2: 0x812e, 0x3a3: 0x812e,\n\t0x3a4: 0x812e, 0x3a5: 0x812e, 0x3a6: 0x812e, 0x3a7: 0x812e, 0x3a8: 0x8133, 0x3a9: 0x8133,\n\t0x3aa: 0x812e, 0x3ab: 0x8133, 0x3ac: 0x8133, 0x3ad: 0x812f, 0x3ae: 0x8132, 0x3af: 0x8133,\n\t0x3b0: 0x8106, 0x3b1: 0x8107, 0x3b2: 0x8108, 0x3b3: 0x8109, 0x3b4: 0x810a, 0x3b5: 0x810b,\n\t0x3b6: 0x810c, 0x3b7: 0x810d, 0x3b8: 0x810e, 0x3b9: 0x810f, 0x3ba: 0x810f, 0x3bb: 0x8110,\n\t0x3bc: 0x8111, 0x3bd: 0x8112, 0x3bf: 0x8113,\n\t// Block 0xf, offset 0x3c0\n\t0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8117,\n\t0x3cc: 0x8118, 0x3cd: 0x8119, 0x3ce: 0x811a, 0x3cf: 0x811b, 0x3d0: 0x811c, 0x3d1: 0x811d,\n\t0x3d2: 0x811e, 0x3d3: 0x9933, 0x3d4: 0x9933, 0x3d5: 0x992e, 0x3d6: 0x812e, 0x3d7: 0x8133,\n\t0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x812e, 0x3dd: 0x8133,\n\t0x3de: 0x8133, 0x3df: 0x812e,\n\t0x3f0: 0x811f, 0x3f5: 0x1eb4,\n\t0x3f6: 0x2143, 0x3f7: 0x217f, 0x3f8: 0x217a,\n\t// Block 0x10, offset 0x400\n\t0x40a: 0x8133, 0x40b: 0x8133,\n\t0x40c: 0x8133, 0x40d: 0x8133, 0x40e: 0x8133, 0x40f: 0x812e, 0x410: 0x812e, 0x411: 0x812e,\n\t0x412: 0x812e, 0x413: 0x812e, 0x414: 0x8133, 0x415: 0x8133, 0x416: 0x8133, 0x417: 0x8133,\n\t0x418: 0x8133, 0x419: 0x8133, 0x41a: 0x8133, 0x41b: 0x8133, 0x41c: 0x8133, 0x41d: 0x8133,\n\t0x41e: 0x8133, 0x41f: 0x8133, 0x420: 0x8133, 0x421: 0x8133, 0x423: 0x812e,\n\t0x424: 0x8133, 0x425: 0x8133, 0x426: 0x812e, 0x427: 0x8133, 0x428: 0x8133, 0x429: 0x812e,\n\t0x42a: 0x8133, 0x42b: 0x8133, 0x42c: 0x8133, 0x42d: 0x812e, 0x42e: 0x812e, 0x42f: 0x812e,\n\t0x430: 0x8117, 0x431: 0x8118, 0x432: 0x8119, 0x433: 0x8133, 0x434: 0x8133, 0x435: 0x8133,\n\t0x436: 0x812e, 0x437: 0x8133, 0x438: 0x8133, 0x439: 0x812e, 0x43a: 0x812e, 0x43b: 0x8133,\n\t0x43c: 0x8133, 0x43d: 0x8133, 0x43e: 0x8133, 0x43f: 0x8133,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xa000,\n\t0x446: 0x2e5d, 0x447: 0xa000, 0x448: 0x2e65, 0x449: 0xa000, 0x44a: 0x2e6d, 0x44b: 0xa000,\n\t0x44c: 0x2e75, 0x44d: 0xa000, 0x44e: 0x2e7d, 0x451: 0xa000,\n\t0x452: 0x2e85,\n\t0x474: 0x8103, 0x475: 0x9900,\n\t0x47a: 0xa000, 0x47b: 0x2e8d,\n\t0x47c: 0xa000, 0x47d: 0x2e95, 0x47e: 0xa000, 0x47f: 0xa000,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x0069, 0x481: 0x006b, 0x482: 0x006f, 0x483: 0x0083, 0x484: 0x0104, 0x485: 0x0107,\n\t0x486: 0x0506, 0x487: 0x0085, 0x488: 0x0089, 0x489: 0x008b, 0x48a: 0x011f, 0x48b: 0x0122,\n\t0x48c: 0x0125, 0x48d: 0x008f, 0x48f: 0x0097, 0x490: 0x009b, 0x491: 0x00e6,\n\t0x492: 0x009f, 0x493: 0x0110, 0x494: 0x050a, 0x495: 0x050e, 0x496: 0x00a1, 0x497: 0x00a9,\n\t0x498: 0x00ab, 0x499: 0x0516, 0x49a: 0x015b, 0x49b: 0x00ad, 0x49c: 0x051a, 0x49d: 0x0242,\n\t0x49e: 0x0245, 0x49f: 0x0248, 0x4a0: 0x027e, 0x4a1: 0x0281, 0x4a2: 0x0093, 0x4a3: 0x00a5,\n\t0x4a4: 0x00ab, 0x4a5: 0x00ad, 0x4a6: 0x0242, 0x4a7: 0x0245, 0x4a8: 0x026f, 0x4a9: 0x027e,\n\t0x4aa: 0x0281,\n\t0x4b8: 0x02b4,\n\t// Block 0x13, offset 0x4c0\n\t0x4db: 0x010a, 0x4dc: 0x0087, 0x4dd: 0x0113,\n\t0x4de: 0x00d7, 0x4df: 0x0125, 0x4e0: 0x008d, 0x4e1: 0x012b, 0x4e2: 0x0131, 0x4e3: 0x013d,\n\t0x4e4: 0x0146, 0x4e5: 0x0149, 0x4e6: 0x014c, 0x4e7: 0x051e, 0x4e8: 0x01c7, 0x4e9: 0x0155,\n\t0x4ea: 0x0522, 0x4eb: 0x01ca, 0x4ec: 0x0161, 0x4ed: 0x015e, 0x4ee: 0x0164, 0x4ef: 0x0167,\n\t0x4f0: 0x016a, 0x4f1: 0x016d, 0x4f2: 0x0176, 0x4f3: 0x018e, 0x4f4: 0x0191, 0x4f5: 0x00f2,\n\t0x4f6: 0x019a, 0x4f7: 0x019d, 0x4f8: 0x0512, 0x4f9: 0x01a0, 0x4fa: 0x01a3, 0x4fb: 0x00b5,\n\t0x4fc: 0x01af, 0x4fd: 0x01b2, 0x4fe: 0x01b5, 0x4ff: 0x0254,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x8133, 0x501: 0x8133, 0x502: 0x812e, 0x503: 0x8133, 0x504: 0x8133, 0x505: 0x8133,\n\t0x506: 0x8133, 0x507: 0x8133, 0x508: 0x8133, 0x509: 0x8133, 0x50a: 0x812e, 0x50b: 0x8133,\n\t0x50c: 0x8133, 0x50d: 0x8136, 0x50e: 0x812b, 0x50f: 0x812e, 0x510: 0x812a, 0x511: 0x8133,\n\t0x512: 0x8133, 0x513: 0x8133, 0x514: 0x8133, 0x515: 0x8133, 0x516: 0x8133, 0x517: 0x8133,\n\t0x518: 0x8133, 0x519: 0x8133, 0x51a: 0x8133, 0x51b: 0x8133, 0x51c: 0x8133, 0x51d: 0x8133,\n\t0x51e: 0x8133, 0x51f: 0x8133, 0x520: 0x8133, 0x521: 0x8133, 0x522: 0x8133, 0x523: 0x8133,\n\t0x524: 0x8133, 0x525: 0x8133, 0x526: 0x8133, 0x527: 0x8133, 0x528: 0x8133, 0x529: 0x8133,\n\t0x52a: 0x8133, 0x52b: 0x8133, 0x52c: 0x8133, 0x52d: 0x8133, 0x52e: 0x8133, 0x52f: 0x8133,\n\t0x530: 0x8133, 0x531: 0x8133, 0x532: 0x8133, 0x533: 0x8133, 0x534: 0x8133, 0x535: 0x8133,\n\t0x536: 0x8134, 0x537: 0x8132, 0x538: 0x8132, 0x539: 0x812e, 0x53a: 0x812d, 0x53b: 0x8133,\n\t0x53c: 0x8135, 0x53d: 0x812e, 0x53e: 0x8133, 0x53f: 0x812e,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x30d8, 0x541: 0x33e4, 0x542: 0x30e2, 0x543: 0x33ee, 0x544: 0x30e7, 0x545: 0x33f3,\n\t0x546: 0x30ec, 0x547: 0x33f8, 0x548: 0x3a0d, 0x549: 0x3b9c, 0x54a: 0x3105, 0x54b: 0x3411,\n\t0x54c: 0x310f, 0x54d: 0x341b, 0x54e: 0x311e, 0x54f: 0x342a, 0x550: 0x3114, 0x551: 0x3420,\n\t0x552: 0x3119, 0x553: 0x3425, 0x554: 0x3a30, 0x555: 0x3bbf, 0x556: 0x3a37, 0x557: 0x3bc6,\n\t0x558: 0x315a, 0x559: 0x3466, 0x55a: 0x315f, 0x55b: 0x346b, 0x55c: 0x3a45, 0x55d: 0x3bd4,\n\t0x55e: 0x3164, 0x55f: 0x3470, 0x560: 0x3173, 0x561: 0x347f, 0x562: 0x3191, 0x563: 0x349d,\n\t0x564: 0x31a0, 0x565: 0x34ac, 0x566: 0x3196, 0x567: 0x34a2, 0x568: 0x31a5, 0x569: 0x34b1,\n\t0x56a: 0x31aa, 0x56b: 0x34b6, 0x56c: 0x31f0, 0x56d: 0x34fc, 0x56e: 0x3a4c, 0x56f: 0x3bdb,\n\t0x570: 0x31fa, 0x571: 0x350b, 0x572: 0x3204, 0x573: 0x3515, 0x574: 0x320e, 0x575: 0x351f,\n\t0x576: 0x4805, 0x577: 0x4896, 0x578: 0x3a53, 0x579: 0x3be2, 0x57a: 0x3227, 0x57b: 0x3538,\n\t0x57c: 0x3222, 0x57d: 0x3533, 0x57e: 0x322c, 0x57f: 0x353d,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3231, 0x581: 0x3542, 0x582: 0x3236, 0x583: 0x3547, 0x584: 0x324a, 0x585: 0x355b,\n\t0x586: 0x3254, 0x587: 0x3565, 0x588: 0x3263, 0x589: 0x3574, 0x58a: 0x325e, 0x58b: 0x356f,\n\t0x58c: 0x3a76, 0x58d: 0x3c05, 0x58e: 0x3a84, 0x58f: 0x3c13, 0x590: 0x3a8b, 0x591: 0x3c1a,\n\t0x592: 0x3a92, 0x593: 0x3c21, 0x594: 0x3290, 0x595: 0x35a1, 0x596: 0x3295, 0x597: 0x35a6,\n\t0x598: 0x329f, 0x599: 0x35b0, 0x59a: 0x4832, 0x59b: 0x48c3, 0x59c: 0x3ad8, 0x59d: 0x3c67,\n\t0x59e: 0x32b8, 0x59f: 0x35c9, 0x5a0: 0x32c2, 0x5a1: 0x35d3, 0x5a2: 0x4841, 0x5a3: 0x48d2,\n\t0x5a4: 0x3adf, 0x5a5: 0x3c6e, 0x5a6: 0x3ae6, 0x5a7: 0x3c75, 0x5a8: 0x3aed, 0x5a9: 0x3c7c,\n\t0x5aa: 0x32d1, 0x5ab: 0x35e2, 0x5ac: 0x32db, 0x5ad: 0x35f1, 0x5ae: 0x32ef, 0x5af: 0x3605,\n\t0x5b0: 0x32ea, 0x5b1: 0x3600, 0x5b2: 0x332b, 0x5b3: 0x3641, 0x5b4: 0x333a, 0x5b5: 0x3650,\n\t0x5b6: 0x3335, 0x5b7: 0x364b, 0x5b8: 0x3af4, 0x5b9: 0x3c83, 0x5ba: 0x3afb, 0x5bb: 0x3c8a,\n\t0x5bc: 0x333f, 0x5bd: 0x3655, 0x5be: 0x3344, 0x5bf: 0x365a,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x3349, 0x5c1: 0x365f, 0x5c2: 0x334e, 0x5c3: 0x3664, 0x5c4: 0x335d, 0x5c5: 0x3673,\n\t0x5c6: 0x3358, 0x5c7: 0x366e, 0x5c8: 0x3362, 0x5c9: 0x367d, 0x5ca: 0x3367, 0x5cb: 0x3682,\n\t0x5cc: 0x336c, 0x5cd: 0x3687, 0x5ce: 0x338a, 0x5cf: 0x36a5, 0x5d0: 0x33a3, 0x5d1: 0x36c3,\n\t0x5d2: 0x33b2, 0x5d3: 0x36d2, 0x5d4: 0x33b7, 0x5d5: 0x36d7, 0x5d6: 0x34bb, 0x5d7: 0x35e7,\n\t0x5d8: 0x3678, 0x5d9: 0x36b4, 0x5da: 0x1d10, 0x5db: 0x4418,\n\t0x5e0: 0x47e2, 0x5e1: 0x4873, 0x5e2: 0x30c4, 0x5e3: 0x33d0,\n\t0x5e4: 0x39b9, 0x5e5: 0x3b48, 0x5e6: 0x39b2, 0x5e7: 0x3b41, 0x5e8: 0x39c7, 0x5e9: 0x3b56,\n\t0x5ea: 0x39c0, 0x5eb: 0x3b4f, 0x5ec: 0x39ff, 0x5ed: 0x3b8e, 0x5ee: 0x39d5, 0x5ef: 0x3b64,\n\t0x5f0: 0x39ce, 0x5f1: 0x3b5d, 0x5f2: 0x39e3, 0x5f3: 0x3b72, 0x5f4: 0x39dc, 0x5f5: 0x3b6b,\n\t0x5f6: 0x3a06, 0x5f7: 0x3b95, 0x5f8: 0x47f6, 0x5f9: 0x4887, 0x5fa: 0x3141, 0x5fb: 0x344d,\n\t0x5fc: 0x312d, 0x5fd: 0x3439, 0x5fe: 0x3a1b, 0x5ff: 0x3baa,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x3a14, 0x601: 0x3ba3, 0x602: 0x3a29, 0x603: 0x3bb8, 0x604: 0x3a22, 0x605: 0x3bb1,\n\t0x606: 0x3a3e, 0x607: 0x3bcd, 0x608: 0x31d2, 0x609: 0x34de, 0x60a: 0x31e6, 0x60b: 0x34f2,\n\t0x60c: 0x4828, 0x60d: 0x48b9, 0x60e: 0x3277, 0x60f: 0x3588, 0x610: 0x3a61, 0x611: 0x3bf0,\n\t0x612: 0x3a5a, 0x613: 0x3be9, 0x614: 0x3a6f, 0x615: 0x3bfe, 0x616: 0x3a68, 0x617: 0x3bf7,\n\t0x618: 0x3aca, 0x619: 0x3c59, 0x61a: 0x3aae, 0x61b: 0x3c3d, 0x61c: 0x3aa7, 0x61d: 0x3c36,\n\t0x61e: 0x3abc, 0x61f: 0x3c4b, 0x620: 0x3ab5, 0x621: 0x3c44, 0x622: 0x3ac3, 0x623: 0x3c52,\n\t0x624: 0x3326, 0x625: 0x363c, 0x626: 0x3308, 0x627: 0x361e, 0x628: 0x3b25, 0x629: 0x3cb4,\n\t0x62a: 0x3b1e, 0x62b: 0x3cad, 0x62c: 0x3b33, 0x62d: 0x3cc2, 0x62e: 0x3b2c, 0x62f: 0x3cbb,\n\t0x630: 0x3b3a, 0x631: 0x3cc9, 0x632: 0x3371, 0x633: 0x368c, 0x634: 0x3399, 0x635: 0x36b9,\n\t0x636: 0x3394, 0x637: 0x36af, 0x638: 0x3380, 0x639: 0x369b,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x4945, 0x641: 0x494b, 0x642: 0x4a5f, 0x643: 0x4a77, 0x644: 0x4a67, 0x645: 0x4a7f,\n\t0x646: 0x4a6f, 0x647: 0x4a87, 0x648: 0x48eb, 0x649: 0x48f1, 0x64a: 0x49cf, 0x64b: 0x49e7,\n\t0x64c: 0x49d7, 0x64d: 0x49ef, 0x64e: 0x49df, 0x64f: 0x49f7, 0x650: 0x4957, 0x651: 0x495d,\n\t0x652: 0x3ef9, 0x653: 0x3f09, 0x654: 0x3f01, 0x655: 0x3f11,\n\t0x658: 0x48f7, 0x659: 0x48fd, 0x65a: 0x3e29, 0x65b: 0x3e39, 0x65c: 0x3e31, 0x65d: 0x3e41,\n\t0x660: 0x496f, 0x661: 0x4975, 0x662: 0x4a8f, 0x663: 0x4aa7,\n\t0x664: 0x4a97, 0x665: 0x4aaf, 0x666: 0x4a9f, 0x667: 0x4ab7, 0x668: 0x4903, 0x669: 0x4909,\n\t0x66a: 0x49ff, 0x66b: 0x4a17, 0x66c: 0x4a07, 0x66d: 0x4a1f, 0x66e: 0x4a0f, 0x66f: 0x4a27,\n\t0x670: 0x4987, 0x671: 0x498d, 0x672: 0x3f59, 0x673: 0x3f71, 0x674: 0x3f61, 0x675: 0x3f79,\n\t0x676: 0x3f69, 0x677: 0x3f81, 0x678: 0x490f, 0x679: 0x4915, 0x67a: 0x3e59, 0x67b: 0x3e71,\n\t0x67c: 0x3e61, 0x67d: 0x3e79, 0x67e: 0x3e69, 0x67f: 0x3e81,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x4993, 0x681: 0x4999, 0x682: 0x3f89, 0x683: 0x3f99, 0x684: 0x3f91, 0x685: 0x3fa1,\n\t0x688: 0x491b, 0x689: 0x4921, 0x68a: 0x3e89, 0x68b: 0x3e99,\n\t0x68c: 0x3e91, 0x68d: 0x3ea1, 0x690: 0x49a5, 0x691: 0x49ab,\n\t0x692: 0x3fc1, 0x693: 0x3fd9, 0x694: 0x3fc9, 0x695: 0x3fe1, 0x696: 0x3fd1, 0x697: 0x3fe9,\n\t0x699: 0x4927, 0x69b: 0x3ea9, 0x69d: 0x3eb1,\n\t0x69f: 0x3eb9, 0x6a0: 0x49bd, 0x6a1: 0x49c3, 0x6a2: 0x4abf, 0x6a3: 0x4ad7,\n\t0x6a4: 0x4ac7, 0x6a5: 0x4adf, 0x6a6: 0x4acf, 0x6a7: 0x4ae7, 0x6a8: 0x492d, 0x6a9: 0x4933,\n\t0x6aa: 0x4a2f, 0x6ab: 0x4a47, 0x6ac: 0x4a37, 0x6ad: 0x4a4f, 0x6ae: 0x4a3f, 0x6af: 0x4a57,\n\t0x6b0: 0x4939, 0x6b1: 0x445f, 0x6b2: 0x37d2, 0x6b3: 0x4465, 0x6b4: 0x4963, 0x6b5: 0x446b,\n\t0x6b6: 0x37e4, 0x6b7: 0x4471, 0x6b8: 0x3802, 0x6b9: 0x4477, 0x6ba: 0x381a, 0x6bb: 0x447d,\n\t0x6bc: 0x49b1, 0x6bd: 0x4483,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x3ee1, 0x6c1: 0x3ee9, 0x6c2: 0x42c5, 0x6c3: 0x42e3, 0x6c4: 0x42cf, 0x6c5: 0x42ed,\n\t0x6c6: 0x42d9, 0x6c7: 0x42f7, 0x6c8: 0x3e19, 0x6c9: 0x3e21, 0x6ca: 0x4211, 0x6cb: 0x422f,\n\t0x6cc: 0x421b, 0x6cd: 0x4239, 0x6ce: 0x4225, 0x6cf: 0x4243, 0x6d0: 0x3f29, 0x6d1: 0x3f31,\n\t0x6d2: 0x4301, 0x6d3: 0x431f, 0x6d4: 0x430b, 0x6d5: 0x4329, 0x6d6: 0x4315, 0x6d7: 0x4333,\n\t0x6d8: 0x3e49, 0x6d9: 0x3e51, 0x6da: 0x424d, 0x6db: 0x426b, 0x6dc: 0x4257, 0x6dd: 0x4275,\n\t0x6de: 0x4261, 0x6df: 0x427f, 0x6e0: 0x4001, 0x6e1: 0x4009, 0x6e2: 0x433d, 0x6e3: 0x435b,\n\t0x6e4: 0x4347, 0x6e5: 0x4365, 0x6e6: 0x4351, 0x6e7: 0x436f, 0x6e8: 0x3ec1, 0x6e9: 0x3ec9,\n\t0x6ea: 0x4289, 0x6eb: 0x42a7, 0x6ec: 0x4293, 0x6ed: 0x42b1, 0x6ee: 0x429d, 0x6ef: 0x42bb,\n\t0x6f0: 0x37c6, 0x6f1: 0x37c0, 0x6f2: 0x3ed1, 0x6f3: 0x37cc, 0x6f4: 0x3ed9,\n\t0x6f6: 0x4951, 0x6f7: 0x3ef1, 0x6f8: 0x3736, 0x6f9: 0x3730, 0x6fa: 0x3724, 0x6fb: 0x442f,\n\t0x6fc: 0x373c, 0x6fd: 0x43c8, 0x6fe: 0x0257, 0x6ff: 0x43c8,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x43e1, 0x701: 0x45c3, 0x702: 0x3f19, 0x703: 0x37de, 0x704: 0x3f21,\n\t0x706: 0x497b, 0x707: 0x3f39, 0x708: 0x3742, 0x709: 0x4435, 0x70a: 0x374e, 0x70b: 0x443b,\n\t0x70c: 0x375a, 0x70d: 0x45ca, 0x70e: 0x45d1, 0x70f: 0x45d8, 0x710: 0x37f6, 0x711: 0x37f0,\n\t0x712: 0x3f41, 0x713: 0x4625, 0x716: 0x37fc, 0x717: 0x3f51,\n\t0x718: 0x3772, 0x719: 0x376c, 0x71a: 0x3760, 0x71b: 0x4441, 0x71d: 0x45df,\n\t0x71e: 0x45e6, 0x71f: 0x45ed, 0x720: 0x382c, 0x721: 0x3826, 0x722: 0x3fa9, 0x723: 0x462d,\n\t0x724: 0x380e, 0x725: 0x3814, 0x726: 0x3832, 0x727: 0x3fb9, 0x728: 0x37a2, 0x729: 0x379c,\n\t0x72a: 0x3790, 0x72b: 0x444d, 0x72c: 0x378a, 0x72d: 0x45b5, 0x72e: 0x45bc, 0x72f: 0x0081,\n\t0x732: 0x3ff1, 0x733: 0x3838, 0x734: 0x3ff9,\n\t0x736: 0x49c9, 0x737: 0x4011, 0x738: 0x377e, 0x739: 0x4447, 0x73a: 0x37ae, 0x73b: 0x4459,\n\t0x73c: 0x37ba, 0x73d: 0x439b, 0x73e: 0x43cd,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x1d08, 0x741: 0x1d0c, 0x742: 0x0047, 0x743: 0x1d84, 0x745: 0x1d18,\n\t0x746: 0x1d1c, 0x747: 0x00ef, 0x749: 0x1d88, 0x74a: 0x008f, 0x74b: 0x0051,\n\t0x74c: 0x0051, 0x74d: 0x0051, 0x74e: 0x0091, 0x74f: 0x00e0, 0x750: 0x0053, 0x751: 0x0053,\n\t0x752: 0x0059, 0x753: 0x0099, 0x755: 0x005d, 0x756: 0x1abd,\n\t0x759: 0x0061, 0x75a: 0x0063, 0x75b: 0x0065, 0x75c: 0x0065, 0x75d: 0x0065,\n\t0x760: 0x1acf, 0x761: 0x1cf8, 0x762: 0x1ad8,\n\t0x764: 0x0075, 0x766: 0x023c, 0x768: 0x0075,\n\t0x76a: 0x0057, 0x76b: 0x4413, 0x76c: 0x0045, 0x76d: 0x0047, 0x76f: 0x008b,\n\t0x770: 0x004b, 0x771: 0x004d, 0x773: 0x005b, 0x774: 0x009f, 0x775: 0x0308,\n\t0x776: 0x030b, 0x777: 0x030e, 0x778: 0x0311, 0x779: 0x0093, 0x77b: 0x1cc8,\n\t0x77c: 0x026c, 0x77d: 0x0245, 0x77e: 0x01fd, 0x77f: 0x0224,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x055a, 0x785: 0x0049,\n\t0x786: 0x0089, 0x787: 0x008b, 0x788: 0x0093, 0x789: 0x0095,\n\t0x790: 0x235e, 0x791: 0x236a,\n\t0x792: 0x241e, 0x793: 0x2346, 0x794: 0x23ca, 0x795: 0x2352, 0x796: 0x23d0, 0x797: 0x23e8,\n\t0x798: 0x23f4, 0x799: 0x2358, 0x79a: 0x23fa, 0x79b: 0x2364, 0x79c: 0x23ee, 0x79d: 0x2400,\n\t0x79e: 0x2406, 0x79f: 0x1dec, 0x7a0: 0x0053, 0x7a1: 0x1a87, 0x7a2: 0x1cd4, 0x7a3: 0x1a90,\n\t0x7a4: 0x006d, 0x7a5: 0x1adb, 0x7a6: 0x1d00, 0x7a7: 0x1e78, 0x7a8: 0x1a93, 0x7a9: 0x0071,\n\t0x7aa: 0x1ae7, 0x7ab: 0x1d04, 0x7ac: 0x0059, 0x7ad: 0x0047, 0x7ae: 0x0049, 0x7af: 0x005b,\n\t0x7b0: 0x0093, 0x7b1: 0x1b14, 0x7b2: 0x1d48, 0x7b3: 0x1b1d, 0x7b4: 0x00ad, 0x7b5: 0x1b92,\n\t0x7b6: 0x1d7c, 0x7b7: 0x1e8c, 0x7b8: 0x1b20, 0x7b9: 0x00b1, 0x7ba: 0x1b95, 0x7bb: 0x1d80,\n\t0x7bc: 0x0099, 0x7bd: 0x0087, 0x7be: 0x0089, 0x7bf: 0x009b,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c1: 0x3d47, 0x7c3: 0xa000, 0x7c4: 0x3d4e, 0x7c5: 0xa000,\n\t0x7c7: 0x3d55, 0x7c8: 0xa000, 0x7c9: 0x3d5c,\n\t0x7cd: 0xa000,\n\t0x7e0: 0x30a6, 0x7e1: 0xa000, 0x7e2: 0x3d6a,\n\t0x7e4: 0xa000, 0x7e5: 0xa000,\n\t0x7ed: 0x3d63, 0x7ee: 0x30a1, 0x7ef: 0x30ab,\n\t0x7f0: 0x3d71, 0x7f1: 0x3d78, 0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0x3d7f, 0x7f5: 0x3d86,\n\t0x7f6: 0xa000, 0x7f7: 0xa000, 0x7f8: 0x3d8d, 0x7f9: 0x3d94, 0x7fa: 0xa000, 0x7fb: 0xa000,\n\t0x7fc: 0xa000, 0x7fd: 0xa000,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x3d9b, 0x801: 0x3da2, 0x802: 0xa000, 0x803: 0xa000, 0x804: 0x3db7, 0x805: 0x3dbe,\n\t0x806: 0xa000, 0x807: 0xa000, 0x808: 0x3dc5, 0x809: 0x3dcc,\n\t0x811: 0xa000,\n\t0x812: 0xa000,\n\t0x822: 0xa000,\n\t0x828: 0xa000, 0x829: 0xa000,\n\t0x82b: 0xa000, 0x82c: 0x3de1, 0x82d: 0x3de8, 0x82e: 0x3def, 0x82f: 0x3df6,\n\t0x832: 0xa000, 0x833: 0xa000, 0x834: 0xa000, 0x835: 0xa000,\n\t// Block 0x21, offset 0x840\n\t0x860: 0x0023, 0x861: 0x0025, 0x862: 0x0027, 0x863: 0x0029,\n\t0x864: 0x002b, 0x865: 0x002d, 0x866: 0x002f, 0x867: 0x0031, 0x868: 0x0033, 0x869: 0x19af,\n\t0x86a: 0x19b2, 0x86b: 0x19b5, 0x86c: 0x19b8, 0x86d: 0x19bb, 0x86e: 0x19be, 0x86f: 0x19c1,\n\t0x870: 0x19c4, 0x871: 0x19c7, 0x872: 0x19ca, 0x873: 0x19d3, 0x874: 0x1b98, 0x875: 0x1b9c,\n\t0x876: 0x1ba0, 0x877: 0x1ba4, 0x878: 0x1ba8, 0x879: 0x1bac, 0x87a: 0x1bb0, 0x87b: 0x1bb4,\n\t0x87c: 0x1bb8, 0x87d: 0x1db0, 0x87e: 0x1db5, 0x87f: 0x1dba,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x1dbf, 0x881: 0x1dc4, 0x882: 0x1dc9, 0x883: 0x1dce, 0x884: 0x1dd3, 0x885: 0x1dd8,\n\t0x886: 0x1ddd, 0x887: 0x1de2, 0x888: 0x19ac, 0x889: 0x19d0, 0x88a: 0x19f4, 0x88b: 0x1a18,\n\t0x88c: 0x1a3c, 0x88d: 0x1a45, 0x88e: 0x1a4b, 0x88f: 0x1a51, 0x890: 0x1a57, 0x891: 0x1c90,\n\t0x892: 0x1c94, 0x893: 0x1c98, 0x894: 0x1c9c, 0x895: 0x1ca0, 0x896: 0x1ca4, 0x897: 0x1ca8,\n\t0x898: 0x1cac, 0x899: 0x1cb0, 0x89a: 0x1cb4, 0x89b: 0x1cb8, 0x89c: 0x1c24, 0x89d: 0x1c28,\n\t0x89e: 0x1c2c, 0x89f: 0x1c30, 0x8a0: 0x1c34, 0x8a1: 0x1c38, 0x8a2: 0x1c3c, 0x8a3: 0x1c40,\n\t0x8a4: 0x1c44, 0x8a5: 0x1c48, 0x8a6: 0x1c4c, 0x8a7: 0x1c50, 0x8a8: 0x1c54, 0x8a9: 0x1c58,\n\t0x8aa: 0x1c5c, 0x8ab: 0x1c60, 0x8ac: 0x1c64, 0x8ad: 0x1c68, 0x8ae: 0x1c6c, 0x8af: 0x1c70,\n\t0x8b0: 0x1c74, 0x8b1: 0x1c78, 0x8b2: 0x1c7c, 0x8b3: 0x1c80, 0x8b4: 0x1c84, 0x8b5: 0x1c88,\n\t0x8b6: 0x0043, 0x8b7: 0x0045, 0x8b8: 0x0047, 0x8b9: 0x0049, 0x8ba: 0x004b, 0x8bb: 0x004d,\n\t0x8bc: 0x004f, 0x8bd: 0x0051, 0x8be: 0x0053, 0x8bf: 0x0055,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x07ba, 0x8c1: 0x07de, 0x8c2: 0x07ea, 0x8c3: 0x07fa, 0x8c4: 0x0802, 0x8c5: 0x080e,\n\t0x8c6: 0x0816, 0x8c7: 0x081e, 0x8c8: 0x082a, 0x8c9: 0x087e, 0x8ca: 0x0896, 0x8cb: 0x08a6,\n\t0x8cc: 0x08b6, 0x8cd: 0x08c6, 0x8ce: 0x08d6, 0x8cf: 0x08f6, 0x8d0: 0x08fa, 0x8d1: 0x08fe,\n\t0x8d2: 0x0932, 0x8d3: 0x095a, 0x8d4: 0x096a, 0x8d5: 0x0972, 0x8d6: 0x0976, 0x8d7: 0x0982,\n\t0x8d8: 0x099e, 0x8d9: 0x09a2, 0x8da: 0x09ba, 0x8db: 0x09be, 0x8dc: 0x09c6, 0x8dd: 0x09d6,\n\t0x8de: 0x0a72, 0x8df: 0x0a86, 0x8e0: 0x0ac6, 0x8e1: 0x0ada, 0x8e2: 0x0ae2, 0x8e3: 0x0ae6,\n\t0x8e4: 0x0af6, 0x8e5: 0x0b12, 0x8e6: 0x0b3e, 0x8e7: 0x0b4a, 0x8e8: 0x0b6a, 0x8e9: 0x0b76,\n\t0x8ea: 0x0b7a, 0x8eb: 0x0b7e, 0x8ec: 0x0b96, 0x8ed: 0x0b9a, 0x8ee: 0x0bc6, 0x8ef: 0x0bd2,\n\t0x8f0: 0x0bda, 0x8f1: 0x0be2, 0x8f2: 0x0bf2, 0x8f3: 0x0bfa, 0x8f4: 0x0c02, 0x8f5: 0x0c2e,\n\t0x8f6: 0x0c32, 0x8f7: 0x0c3a, 0x8f8: 0x0c3e, 0x8f9: 0x0c46, 0x8fa: 0x0c4e, 0x8fb: 0x0c5e,\n\t0x8fc: 0x0c7a, 0x8fd: 0x0cf2, 0x8fe: 0x0d06, 0x8ff: 0x0d0a,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x0d8a, 0x901: 0x0d8e, 0x902: 0x0da2, 0x903: 0x0da6, 0x904: 0x0dae, 0x905: 0x0db6,\n\t0x906: 0x0dbe, 0x907: 0x0dca, 0x908: 0x0df2, 0x909: 0x0e02, 0x90a: 0x0e16, 0x90b: 0x0e86,\n\t0x90c: 0x0e92, 0x90d: 0x0ea2, 0x90e: 0x0eae, 0x90f: 0x0eba, 0x910: 0x0ec2, 0x911: 0x0ec6,\n\t0x912: 0x0eca, 0x913: 0x0ece, 0x914: 0x0ed2, 0x915: 0x0f8a, 0x916: 0x0fd2, 0x917: 0x0fde,\n\t0x918: 0x0fe2, 0x919: 0x0fe6, 0x91a: 0x0fea, 0x91b: 0x0ff2, 0x91c: 0x0ff6, 0x91d: 0x100a,\n\t0x91e: 0x1026, 0x91f: 0x102e, 0x920: 0x106e, 0x921: 0x1072, 0x922: 0x107a, 0x923: 0x107e,\n\t0x924: 0x1086, 0x925: 0x108a, 0x926: 0x10ae, 0x927: 0x10b2, 0x928: 0x10ce, 0x929: 0x10d2,\n\t0x92a: 0x10d6, 0x92b: 0x10da, 0x92c: 0x10ee, 0x92d: 0x1112, 0x92e: 0x1116, 0x92f: 0x111a,\n\t0x930: 0x113e, 0x931: 0x117e, 0x932: 0x1182, 0x933: 0x11a2, 0x934: 0x11b2, 0x935: 0x11ba,\n\t0x936: 0x11da, 0x937: 0x11fe, 0x938: 0x1242, 0x939: 0x124a, 0x93a: 0x125e, 0x93b: 0x126a,\n\t0x93c: 0x1272, 0x93d: 0x127a, 0x93e: 0x127e, 0x93f: 0x1282,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x129a, 0x941: 0x129e, 0x942: 0x12ba, 0x943: 0x12c2, 0x944: 0x12ca, 0x945: 0x12ce,\n\t0x946: 0x12da, 0x947: 0x12e2, 0x948: 0x12e6, 0x949: 0x12ea, 0x94a: 0x12f2, 0x94b: 0x12f6,\n\t0x94c: 0x1396, 0x94d: 0x13aa, 0x94e: 0x13de, 0x94f: 0x13e2, 0x950: 0x13ea, 0x951: 0x1416,\n\t0x952: 0x141e, 0x953: 0x1426, 0x954: 0x142e, 0x955: 0x146a, 0x956: 0x146e, 0x957: 0x1476,\n\t0x958: 0x147a, 0x959: 0x147e, 0x95a: 0x14aa, 0x95b: 0x14ae, 0x95c: 0x14b6, 0x95d: 0x14ca,\n\t0x95e: 0x14ce, 0x95f: 0x14ea, 0x960: 0x14f2, 0x961: 0x14f6, 0x962: 0x151a, 0x963: 0x153a,\n\t0x964: 0x154e, 0x965: 0x1552, 0x966: 0x155a, 0x967: 0x1586, 0x968: 0x158a, 0x969: 0x159a,\n\t0x96a: 0x15be, 0x96b: 0x15ca, 0x96c: 0x15da, 0x96d: 0x15f2, 0x96e: 0x15fa, 0x96f: 0x15fe,\n\t0x970: 0x1602, 0x971: 0x1606, 0x972: 0x1612, 0x973: 0x1616, 0x974: 0x161e, 0x975: 0x163a,\n\t0x976: 0x163e, 0x977: 0x1642, 0x978: 0x165a, 0x979: 0x165e, 0x97a: 0x1666, 0x97b: 0x167a,\n\t0x97c: 0x167e, 0x97d: 0x1682, 0x97e: 0x168a, 0x97f: 0x168e,\n\t// Block 0x26, offset 0x980\n\t0x986: 0xa000, 0x98b: 0xa000,\n\t0x98c: 0x4049, 0x98d: 0xa000, 0x98e: 0x4051, 0x98f: 0xa000, 0x990: 0x4059, 0x991: 0xa000,\n\t0x992: 0x4061, 0x993: 0xa000, 0x994: 0x4069, 0x995: 0xa000, 0x996: 0x4071, 0x997: 0xa000,\n\t0x998: 0x4079, 0x999: 0xa000, 0x99a: 0x4081, 0x99b: 0xa000, 0x99c: 0x4089, 0x99d: 0xa000,\n\t0x99e: 0x4091, 0x99f: 0xa000, 0x9a0: 0x4099, 0x9a1: 0xa000, 0x9a2: 0x40a1,\n\t0x9a4: 0xa000, 0x9a5: 0x40a9, 0x9a6: 0xa000, 0x9a7: 0x40b1, 0x9a8: 0xa000, 0x9a9: 0x40b9,\n\t0x9af: 0xa000,\n\t0x9b0: 0x40c1, 0x9b1: 0x40c9, 0x9b2: 0xa000, 0x9b3: 0x40d1, 0x9b4: 0x40d9, 0x9b5: 0xa000,\n\t0x9b6: 0x40e1, 0x9b7: 0x40e9, 0x9b8: 0xa000, 0x9b9: 0x40f1, 0x9ba: 0x40f9, 0x9bb: 0xa000,\n\t0x9bc: 0x4101, 0x9bd: 0x4109,\n\t// Block 0x27, offset 0x9c0\n\t0x9d4: 0x4041,\n\t0x9d9: 0x9904, 0x9da: 0x9904, 0x9db: 0x441d, 0x9dc: 0x4423, 0x9dd: 0xa000,\n\t0x9de: 0x4111, 0x9df: 0x27e4,\n\t0x9e6: 0xa000,\n\t0x9eb: 0xa000, 0x9ec: 0x4121, 0x9ed: 0xa000, 0x9ee: 0x4129, 0x9ef: 0xa000,\n\t0x9f0: 0x4131, 0x9f1: 0xa000, 0x9f2: 0x4139, 0x9f3: 0xa000, 0x9f4: 0x4141, 0x9f5: 0xa000,\n\t0x9f6: 0x4149, 0x9f7: 0xa000, 0x9f8: 0x4151, 0x9f9: 0xa000, 0x9fa: 0x4159, 0x9fb: 0xa000,\n\t0x9fc: 0x4161, 0x9fd: 0xa000, 0x9fe: 0x4169, 0x9ff: 0xa000,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x4171, 0xa01: 0xa000, 0xa02: 0x4179, 0xa04: 0xa000, 0xa05: 0x4181,\n\t0xa06: 0xa000, 0xa07: 0x4189, 0xa08: 0xa000, 0xa09: 0x4191,\n\t0xa0f: 0xa000, 0xa10: 0x4199, 0xa11: 0x41a1,\n\t0xa12: 0xa000, 0xa13: 0x41a9, 0xa14: 0x41b1, 0xa15: 0xa000, 0xa16: 0x41b9, 0xa17: 0x41c1,\n\t0xa18: 0xa000, 0xa19: 0x41c9, 0xa1a: 0x41d1, 0xa1b: 0xa000, 0xa1c: 0x41d9, 0xa1d: 0x41e1,\n\t0xa2f: 0xa000,\n\t0xa30: 0xa000, 0xa31: 0xa000, 0xa32: 0xa000, 0xa34: 0x4119,\n\t0xa37: 0x41e9, 0xa38: 0x41f1, 0xa39: 0x41f9, 0xa3a: 0x4201,\n\t0xa3d: 0xa000, 0xa3e: 0x4209, 0xa3f: 0x27f9,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x045a, 0xa41: 0x041e, 0xa42: 0x0422, 0xa43: 0x0426, 0xa44: 0x046e, 0xa45: 0x042a,\n\t0xa46: 0x042e, 0xa47: 0x0432, 0xa48: 0x0436, 0xa49: 0x043a, 0xa4a: 0x043e, 0xa4b: 0x0442,\n\t0xa4c: 0x0446, 0xa4d: 0x044a, 0xa4e: 0x044e, 0xa4f: 0x4afe, 0xa50: 0x4b04, 0xa51: 0x4b0a,\n\t0xa52: 0x4b10, 0xa53: 0x4b16, 0xa54: 0x4b1c, 0xa55: 0x4b22, 0xa56: 0x4b28, 0xa57: 0x4b2e,\n\t0xa58: 0x4b34, 0xa59: 0x4b3a, 0xa5a: 0x4b40, 0xa5b: 0x4b46, 0xa5c: 0x4b4c, 0xa5d: 0x4b52,\n\t0xa5e: 0x4b58, 0xa5f: 0x4b5e, 0xa60: 0x4b64, 0xa61: 0x4b6a, 0xa62: 0x4b70, 0xa63: 0x4b76,\n\t0xa64: 0x04b6, 0xa65: 0x0452, 0xa66: 0x0456, 0xa67: 0x04da, 0xa68: 0x04de, 0xa69: 0x04e2,\n\t0xa6a: 0x04e6, 0xa6b: 0x04ea, 0xa6c: 0x04ee, 0xa6d: 0x04f2, 0xa6e: 0x045e, 0xa6f: 0x04f6,\n\t0xa70: 0x04fa, 0xa71: 0x0462, 0xa72: 0x0466, 0xa73: 0x046a, 0xa74: 0x0472, 0xa75: 0x0476,\n\t0xa76: 0x047a, 0xa77: 0x047e, 0xa78: 0x0482, 0xa79: 0x0486, 0xa7a: 0x048a, 0xa7b: 0x048e,\n\t0xa7c: 0x0492, 0xa7d: 0x0496, 0xa7e: 0x049a, 0xa7f: 0x049e,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x04a2, 0xa81: 0x04a6, 0xa82: 0x04fe, 0xa83: 0x0502, 0xa84: 0x04aa, 0xa85: 0x04ae,\n\t0xa86: 0x04b2, 0xa87: 0x04ba, 0xa88: 0x04be, 0xa89: 0x04c2, 0xa8a: 0x04c6, 0xa8b: 0x04ca,\n\t0xa8c: 0x04ce, 0xa8d: 0x04d2, 0xa8e: 0x04d6,\n\t0xa92: 0x07ba, 0xa93: 0x0816, 0xa94: 0x07c6, 0xa95: 0x0a76, 0xa96: 0x07ca, 0xa97: 0x07e2,\n\t0xa98: 0x07ce, 0xa99: 0x108e, 0xa9a: 0x0802, 0xa9b: 0x07d6, 0xa9c: 0x07be, 0xa9d: 0x0afa,\n\t0xa9e: 0x0a8a, 0xa9f: 0x082a,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x2184, 0xac1: 0x218a, 0xac2: 0x2190, 0xac3: 0x2196, 0xac4: 0x219c, 0xac5: 0x21a2,\n\t0xac6: 0x21a8, 0xac7: 0x21ae, 0xac8: 0x21b4, 0xac9: 0x21ba, 0xaca: 0x21c0, 0xacb: 0x21c6,\n\t0xacc: 0x21cc, 0xacd: 0x21d2, 0xace: 0x285d, 0xacf: 0x2866, 0xad0: 0x286f, 0xad1: 0x2878,\n\t0xad2: 0x2881, 0xad3: 0x288a, 0xad4: 0x2893, 0xad5: 0x289c, 0xad6: 0x28a5, 0xad7: 0x28b7,\n\t0xad8: 0x28c0, 0xad9: 0x28c9, 0xada: 0x28d2, 0xadb: 0x28db, 0xadc: 0x28ae, 0xadd: 0x2ce3,\n\t0xade: 0x2c24, 0xae0: 0x21d8, 0xae1: 0x21f0, 0xae2: 0x21e4, 0xae3: 0x2238,\n\t0xae4: 0x21f6, 0xae5: 0x2214, 0xae6: 0x21de, 0xae7: 0x220e, 0xae8: 0x21ea, 0xae9: 0x2220,\n\t0xaea: 0x2250, 0xaeb: 0x226e, 0xaec: 0x2268, 0xaed: 0x225c, 0xaee: 0x22aa, 0xaef: 0x223e,\n\t0xaf0: 0x224a, 0xaf1: 0x2262, 0xaf2: 0x2256, 0xaf3: 0x2280, 0xaf4: 0x222c, 0xaf5: 0x2274,\n\t0xaf6: 0x229e, 0xaf7: 0x2286, 0xaf8: 0x221a, 0xaf9: 0x21fc, 0xafa: 0x2232, 0xafb: 0x2244,\n\t0xafc: 0x227a, 0xafd: 0x2202, 0xafe: 0x22a4, 0xaff: 0x2226,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x228c, 0xb01: 0x2208, 0xb02: 0x2292, 0xb03: 0x2298, 0xb04: 0x0a2a, 0xb05: 0x0bfe,\n\t0xb06: 0x0da2, 0xb07: 0x11c2,\n\t0xb10: 0x1cf4, 0xb11: 0x19d6,\n\t0xb12: 0x19d9, 0xb13: 0x19dc, 0xb14: 0x19df, 0xb15: 0x19e2, 0xb16: 0x19e5, 0xb17: 0x19e8,\n\t0xb18: 0x19eb, 0xb19: 0x19ee, 0xb1a: 0x19f7, 0xb1b: 0x19fa, 0xb1c: 0x19fd, 0xb1d: 0x1a00,\n\t0xb1e: 0x1a03, 0xb1f: 0x1a06, 0xb20: 0x0406, 0xb21: 0x040e, 0xb22: 0x0412, 0xb23: 0x041a,\n\t0xb24: 0x041e, 0xb25: 0x0422, 0xb26: 0x042a, 0xb27: 0x0432, 0xb28: 0x0436, 0xb29: 0x043e,\n\t0xb2a: 0x0442, 0xb2b: 0x0446, 0xb2c: 0x044a, 0xb2d: 0x044e, 0xb2e: 0x2f59, 0xb2f: 0x2f61,\n\t0xb30: 0x2f69, 0xb31: 0x2f71, 0xb32: 0x2f79, 0xb33: 0x2f81, 0xb34: 0x2f89, 0xb35: 0x2f91,\n\t0xb36: 0x2fa1, 0xb37: 0x2fa9, 0xb38: 0x2fb1, 0xb39: 0x2fb9, 0xb3a: 0x2fc1, 0xb3b: 0x2fc9,\n\t0xb3c: 0x3014, 0xb3d: 0x2fdc, 0xb3e: 0x2f99,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x07ba, 0xb41: 0x0816, 0xb42: 0x07c6, 0xb43: 0x0a76, 0xb44: 0x081a, 0xb45: 0x08aa,\n\t0xb46: 0x07c2, 0xb47: 0x08a6, 0xb48: 0x0806, 0xb49: 0x0982, 0xb4a: 0x0e02, 0xb4b: 0x0f8a,\n\t0xb4c: 0x0ed2, 0xb4d: 0x0e16, 0xb4e: 0x155a, 0xb4f: 0x0a86, 0xb50: 0x0dca, 0xb51: 0x0e46,\n\t0xb52: 0x0e06, 0xb53: 0x1146, 0xb54: 0x09f6, 0xb55: 0x0ffe, 0xb56: 0x1482, 0xb57: 0x115a,\n\t0xb58: 0x093e, 0xb59: 0x118a, 0xb5a: 0x1096, 0xb5b: 0x0b12, 0xb5c: 0x150a, 0xb5d: 0x087a,\n\t0xb5e: 0x09a6, 0xb5f: 0x0ef2, 0xb60: 0x1622, 0xb61: 0x083e, 0xb62: 0x08ce, 0xb63: 0x0e96,\n\t0xb64: 0x07ca, 0xb65: 0x07e2, 0xb66: 0x07ce, 0xb67: 0x0bd6, 0xb68: 0x09ea, 0xb69: 0x097a,\n\t0xb6a: 0x0b52, 0xb6b: 0x0b46, 0xb6c: 0x10e6, 0xb6d: 0x083a, 0xb6e: 0x1496, 0xb6f: 0x0996,\n\t0xb70: 0x0aee, 0xb71: 0x1a09, 0xb72: 0x1a0c, 0xb73: 0x1a0f, 0xb74: 0x1a12, 0xb75: 0x1a1b,\n\t0xb76: 0x1a1e, 0xb77: 0x1a21, 0xb78: 0x1a24, 0xb79: 0x1a27, 0xb7a: 0x1a2a, 0xb7b: 0x1a2d,\n\t0xb7c: 0x1a30, 0xb7d: 0x1a33, 0xb7e: 0x1a36, 0xb7f: 0x1a3f,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x1df6, 0xb81: 0x1e05, 0xb82: 0x1e14, 0xb83: 0x1e23, 0xb84: 0x1e32, 0xb85: 0x1e41,\n\t0xb86: 0x1e50, 0xb87: 0x1e5f, 0xb88: 0x1e6e, 0xb89: 0x22bc, 0xb8a: 0x22ce, 0xb8b: 0x22e0,\n\t0xb8c: 0x1a81, 0xb8d: 0x1d34, 0xb8e: 0x1b02, 0xb8f: 0x1cd8, 0xb90: 0x05c6, 0xb91: 0x05ce,\n\t0xb92: 0x05d6, 0xb93: 0x05de, 0xb94: 0x05e6, 0xb95: 0x05ea, 0xb96: 0x05ee, 0xb97: 0x05f2,\n\t0xb98: 0x05f6, 0xb99: 0x05fa, 0xb9a: 0x05fe, 0xb9b: 0x0602, 0xb9c: 0x0606, 0xb9d: 0x060a,\n\t0xb9e: 0x060e, 0xb9f: 0x0612, 0xba0: 0x0616, 0xba1: 0x061e, 0xba2: 0x0622, 0xba3: 0x0626,\n\t0xba4: 0x062a, 0xba5: 0x062e, 0xba6: 0x0632, 0xba7: 0x0636, 0xba8: 0x063a, 0xba9: 0x063e,\n\t0xbaa: 0x0642, 0xbab: 0x0646, 0xbac: 0x064a, 0xbad: 0x064e, 0xbae: 0x0652, 0xbaf: 0x0656,\n\t0xbb0: 0x065a, 0xbb1: 0x065e, 0xbb2: 0x0662, 0xbb3: 0x066a, 0xbb4: 0x0672, 0xbb5: 0x067a,\n\t0xbb6: 0x067e, 0xbb7: 0x0682, 0xbb8: 0x0686, 0xbb9: 0x068a, 0xbba: 0x068e, 0xbbb: 0x0692,\n\t0xbbc: 0x0696, 0xbbd: 0x069a, 0xbbe: 0x069e, 0xbbf: 0x282a,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x2c43, 0xbc1: 0x2adf, 0xbc2: 0x2c53, 0xbc3: 0x29b7, 0xbc4: 0x3025, 0xbc5: 0x29c1,\n\t0xbc6: 0x29cb, 0xbc7: 0x3069, 0xbc8: 0x2aec, 0xbc9: 0x29d5, 0xbca: 0x29df, 0xbcb: 0x29e9,\n\t0xbcc: 0x2b13, 0xbcd: 0x2b20, 0xbce: 0x2af9, 0xbcf: 0x2b06, 0xbd0: 0x2fea, 0xbd1: 0x2b2d,\n\t0xbd2: 0x2b3a, 0xbd3: 0x2cf5, 0xbd4: 0x27eb, 0xbd5: 0x2d08, 0xbd6: 0x2d1b, 0xbd7: 0x2c63,\n\t0xbd8: 0x2b47, 0xbd9: 0x2d2e, 0xbda: 0x2d41, 0xbdb: 0x2b54, 0xbdc: 0x29f3, 0xbdd: 0x29fd,\n\t0xbde: 0x2ff8, 0xbdf: 0x2b61, 0xbe0: 0x2c73, 0xbe1: 0x3036, 0xbe2: 0x2a07, 0xbe3: 0x2a11,\n\t0xbe4: 0x2b6e, 0xbe5: 0x2a1b, 0xbe6: 0x2a25, 0xbe7: 0x2800, 0xbe8: 0x2807, 0xbe9: 0x2a2f,\n\t0xbea: 0x2a39, 0xbeb: 0x2d54, 0xbec: 0x2b7b, 0xbed: 0x2c83, 0xbee: 0x2d67, 0xbef: 0x2b88,\n\t0xbf0: 0x2a4d, 0xbf1: 0x2a43, 0xbf2: 0x307d, 0xbf3: 0x2b95, 0xbf4: 0x2d7a, 0xbf5: 0x2a57,\n\t0xbf6: 0x2c93, 0xbf7: 0x2a61, 0xbf8: 0x2baf, 0xbf9: 0x2a6b, 0xbfa: 0x2bbc, 0xbfb: 0x3047,\n\t0xbfc: 0x2ba2, 0xbfd: 0x2ca3, 0xbfe: 0x2bc9, 0xbff: 0x280e,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x3058, 0xc01: 0x2a75, 0xc02: 0x2a7f, 0xc03: 0x2bd6, 0xc04: 0x2a89, 0xc05: 0x2a93,\n\t0xc06: 0x2a9d, 0xc07: 0x2cb3, 0xc08: 0x2be3, 0xc09: 0x2815, 0xc0a: 0x2d8d, 0xc0b: 0x2fd1,\n\t0xc0c: 0x2cc3, 0xc0d: 0x2bf0, 0xc0e: 0x3006, 0xc0f: 0x2aa7, 0xc10: 0x2ab1, 0xc11: 0x2bfd,\n\t0xc12: 0x281c, 0xc13: 0x2c0a, 0xc14: 0x2cd3, 0xc15: 0x2823, 0xc16: 0x2da0, 0xc17: 0x2abb,\n\t0xc18: 0x1de7, 0xc19: 0x1dfb, 0xc1a: 0x1e0a, 0xc1b: 0x1e19, 0xc1c: 0x1e28, 0xc1d: 0x1e37,\n\t0xc1e: 0x1e46, 0xc1f: 0x1e55, 0xc20: 0x1e64, 0xc21: 0x1e73, 0xc22: 0x22c2, 0xc23: 0x22d4,\n\t0xc24: 0x22e6, 0xc25: 0x22f2, 0xc26: 0x22fe, 0xc27: 0x230a, 0xc28: 0x2316, 0xc29: 0x2322,\n\t0xc2a: 0x232e, 0xc2b: 0x233a, 0xc2c: 0x2376, 0xc2d: 0x2382, 0xc2e: 0x238e, 0xc2f: 0x239a,\n\t0xc30: 0x23a6, 0xc31: 0x1d44, 0xc32: 0x1af6, 0xc33: 0x1a63, 0xc34: 0x1d14, 0xc35: 0x1b77,\n\t0xc36: 0x1b86, 0xc37: 0x1afc, 0xc38: 0x1d2c, 0xc39: 0x1d30, 0xc3a: 0x1a8d, 0xc3b: 0x2838,\n\t0xc3c: 0x2846, 0xc3d: 0x2831, 0xc3e: 0x283f, 0xc3f: 0x2c17,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1b7a, 0xc41: 0x1b62, 0xc42: 0x1d90, 0xc43: 0x1b4a, 0xc44: 0x1b23, 0xc45: 0x1a96,\n\t0xc46: 0x1aa5, 0xc47: 0x1a75, 0xc48: 0x1d20, 0xc49: 0x1e82, 0xc4a: 0x1b7d, 0xc4b: 0x1b65,\n\t0xc4c: 0x1d94, 0xc4d: 0x1da0, 0xc4e: 0x1b56, 0xc4f: 0x1b2c, 0xc50: 0x1a84, 0xc51: 0x1d4c,\n\t0xc52: 0x1ce0, 0xc53: 0x1ccc, 0xc54: 0x1cfc, 0xc55: 0x1da4, 0xc56: 0x1b59, 0xc57: 0x1af9,\n\t0xc58: 0x1b2f, 0xc59: 0x1b0e, 0xc5a: 0x1b71, 0xc5b: 0x1da8, 0xc5c: 0x1b5c, 0xc5d: 0x1af0,\n\t0xc5e: 0x1b32, 0xc5f: 0x1d6c, 0xc60: 0x1d24, 0xc61: 0x1b44, 0xc62: 0x1d54, 0xc63: 0x1d70,\n\t0xc64: 0x1d28, 0xc65: 0x1b47, 0xc66: 0x1d58, 0xc67: 0x2418, 0xc68: 0x242c, 0xc69: 0x1ac6,\n\t0xc6a: 0x1d50, 0xc6b: 0x1ce4, 0xc6c: 0x1cd0, 0xc6d: 0x1d78, 0xc6e: 0x284d, 0xc6f: 0x28e4,\n\t0xc70: 0x1b89, 0xc71: 0x1b74, 0xc72: 0x1dac, 0xc73: 0x1b5f, 0xc74: 0x1b80, 0xc75: 0x1b68,\n\t0xc76: 0x1d98, 0xc77: 0x1b4d, 0xc78: 0x1b26, 0xc79: 0x1ab1, 0xc7a: 0x1b83, 0xc7b: 0x1b6b,\n\t0xc7c: 0x1d9c, 0xc7d: 0x1b50, 0xc7e: 0x1b29, 0xc7f: 0x1ab4,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x1d5c, 0xc81: 0x1ce8, 0xc82: 0x1e7d, 0xc83: 0x1a66, 0xc84: 0x1aea, 0xc85: 0x1aed,\n\t0xc86: 0x2425, 0xc87: 0x1cc4, 0xc88: 0x1af3, 0xc89: 0x1a78, 0xc8a: 0x1b11, 0xc8b: 0x1a7b,\n\t0xc8c: 0x1b1a, 0xc8d: 0x1a99, 0xc8e: 0x1a9c, 0xc8f: 0x1b35, 0xc90: 0x1b3b, 0xc91: 0x1b3e,\n\t0xc92: 0x1d60, 0xc93: 0x1b41, 0xc94: 0x1b53, 0xc95: 0x1d68, 0xc96: 0x1d74, 0xc97: 0x1ac0,\n\t0xc98: 0x1e87, 0xc99: 0x1cec, 0xc9a: 0x1ac3, 0xc9b: 0x1b8c, 0xc9c: 0x1ad5, 0xc9d: 0x1ae4,\n\t0xc9e: 0x2412, 0xc9f: 0x240c, 0xca0: 0x1df1, 0xca1: 0x1e00, 0xca2: 0x1e0f, 0xca3: 0x1e1e,\n\t0xca4: 0x1e2d, 0xca5: 0x1e3c, 0xca6: 0x1e4b, 0xca7: 0x1e5a, 0xca8: 0x1e69, 0xca9: 0x22b6,\n\t0xcaa: 0x22c8, 0xcab: 0x22da, 0xcac: 0x22ec, 0xcad: 0x22f8, 0xcae: 0x2304, 0xcaf: 0x2310,\n\t0xcb0: 0x231c, 0xcb1: 0x2328, 0xcb2: 0x2334, 0xcb3: 0x2370, 0xcb4: 0x237c, 0xcb5: 0x2388,\n\t0xcb6: 0x2394, 0xcb7: 0x23a0, 0xcb8: 0x23ac, 0xcb9: 0x23b2, 0xcba: 0x23b8, 0xcbb: 0x23be,\n\t0xcbc: 0x23c4, 0xcbd: 0x23d6, 0xcbe: 0x23dc, 0xcbf: 0x1d40,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x1472, 0xcc1: 0x0df6, 0xcc2: 0x14ce, 0xcc3: 0x149a, 0xcc4: 0x0f52, 0xcc5: 0x07e6,\n\t0xcc6: 0x09da, 0xcc7: 0x1726, 0xcc8: 0x1726, 0xcc9: 0x0b06, 0xcca: 0x155a, 0xccb: 0x0a3e,\n\t0xccc: 0x0b02, 0xccd: 0x0cea, 0xcce: 0x10ca, 0xccf: 0x125a, 0xcd0: 0x1392, 0xcd1: 0x13ce,\n\t0xcd2: 0x1402, 0xcd3: 0x1516, 0xcd4: 0x0e6e, 0xcd5: 0x0efa, 0xcd6: 0x0fa6, 0xcd7: 0x103e,\n\t0xcd8: 0x135a, 0xcd9: 0x1542, 0xcda: 0x166e, 0xcdb: 0x080a, 0xcdc: 0x09ae, 0xcdd: 0x0e82,\n\t0xcde: 0x0fca, 0xcdf: 0x138e, 0xce0: 0x16be, 0xce1: 0x0bae, 0xce2: 0x0f72, 0xce3: 0x137e,\n\t0xce4: 0x1412, 0xce5: 0x0d1e, 0xce6: 0x12b6, 0xce7: 0x13da, 0xce8: 0x0c1a, 0xce9: 0x0e0a,\n\t0xcea: 0x0f12, 0xceb: 0x1016, 0xcec: 0x1522, 0xced: 0x084a, 0xcee: 0x08e2, 0xcef: 0x094e,\n\t0xcf0: 0x0d86, 0xcf1: 0x0e7a, 0xcf2: 0x0fc6, 0xcf3: 0x10ea, 0xcf4: 0x1272, 0xcf5: 0x1386,\n\t0xcf6: 0x139e, 0xcf7: 0x14c2, 0xcf8: 0x15ea, 0xcf9: 0x169e, 0xcfa: 0x16ba, 0xcfb: 0x1126,\n\t0xcfc: 0x1166, 0xcfd: 0x121e, 0xcfe: 0x133e, 0xcff: 0x1576,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x16c6, 0xd01: 0x1446, 0xd02: 0x0ac2, 0xd03: 0x0c36, 0xd04: 0x11d6, 0xd05: 0x1296,\n\t0xd06: 0x0ffa, 0xd07: 0x112e, 0xd08: 0x1492, 0xd09: 0x15e2, 0xd0a: 0x0abe, 0xd0b: 0x0b8a,\n\t0xd0c: 0x0e72, 0xd0d: 0x0f26, 0xd0e: 0x0f5a, 0xd0f: 0x120e, 0xd10: 0x1236, 0xd11: 0x15a2,\n\t0xd12: 0x094a, 0xd13: 0x12a2, 0xd14: 0x08ee, 0xd15: 0x08ea, 0xd16: 0x1192, 0xd17: 0x1222,\n\t0xd18: 0x1356, 0xd19: 0x15aa, 0xd1a: 0x1462, 0xd1b: 0x0d22, 0xd1c: 0x0e6e, 0xd1d: 0x1452,\n\t0xd1e: 0x07f2, 0xd1f: 0x0b5e, 0xd20: 0x0c8e, 0xd21: 0x102a, 0xd22: 0x10aa, 0xd23: 0x096e,\n\t0xd24: 0x1136, 0xd25: 0x085a, 0xd26: 0x0c72, 0xd27: 0x07d2, 0xd28: 0x0ee6, 0xd29: 0x0d9e,\n\t0xd2a: 0x120a, 0xd2b: 0x09c2, 0xd2c: 0x0aae, 0xd2d: 0x10f6, 0xd2e: 0x135e, 0xd2f: 0x1436,\n\t0xd30: 0x0eb2, 0xd31: 0x14f2, 0xd32: 0x0ede, 0xd33: 0x0d32, 0xd34: 0x1316, 0xd35: 0x0d52,\n\t0xd36: 0x10a6, 0xd37: 0x0826, 0xd38: 0x08a2, 0xd39: 0x08e6, 0xd3a: 0x0e4e, 0xd3b: 0x11f6,\n\t0xd3c: 0x12ee, 0xd3d: 0x1442, 0xd3e: 0x1556, 0xd3f: 0x0956,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x0a0a, 0xd41: 0x0b12, 0xd42: 0x0c2a, 0xd43: 0x0dba, 0xd44: 0x0f76, 0xd45: 0x113a,\n\t0xd46: 0x1592, 0xd47: 0x1676, 0xd48: 0x16ca, 0xd49: 0x16e2, 0xd4a: 0x0932, 0xd4b: 0x0dee,\n\t0xd4c: 0x0e9e, 0xd4d: 0x14e6, 0xd4e: 0x0bf6, 0xd4f: 0x0cd2, 0xd50: 0x0cee, 0xd51: 0x0d7e,\n\t0xd52: 0x0f66, 0xd53: 0x0fb2, 0xd54: 0x1062, 0xd55: 0x1186, 0xd56: 0x122a, 0xd57: 0x128e,\n\t0xd58: 0x14d6, 0xd59: 0x1366, 0xd5a: 0x14fe, 0xd5b: 0x157a, 0xd5c: 0x090a, 0xd5d: 0x0936,\n\t0xd5e: 0x0a1e, 0xd5f: 0x0fa2, 0xd60: 0x13ee, 0xd61: 0x1436, 0xd62: 0x0c16, 0xd63: 0x0c86,\n\t0xd64: 0x0d4a, 0xd65: 0x0eaa, 0xd66: 0x11d2, 0xd67: 0x101e, 0xd68: 0x0836, 0xd69: 0x0a7a,\n\t0xd6a: 0x0b5e, 0xd6b: 0x0bc2, 0xd6c: 0x0c92, 0xd6d: 0x103a, 0xd6e: 0x1056, 0xd6f: 0x1266,\n\t0xd70: 0x1286, 0xd71: 0x155e, 0xd72: 0x15de, 0xd73: 0x15ee, 0xd74: 0x162a, 0xd75: 0x084e,\n\t0xd76: 0x117a, 0xd77: 0x154a, 0xd78: 0x15c6, 0xd79: 0x0caa, 0xd7a: 0x0812, 0xd7b: 0x0872,\n\t0xd7c: 0x0b62, 0xd7d: 0x0b82, 0xd7e: 0x0daa, 0xd7f: 0x0e6e,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0fbe, 0xd81: 0x10c6, 0xd82: 0x1372, 0xd83: 0x1512, 0xd84: 0x171e, 0xd85: 0x0dde,\n\t0xd86: 0x159e, 0xd87: 0x092e, 0xd88: 0x0e2a, 0xd89: 0x0e36, 0xd8a: 0x0f0a, 0xd8b: 0x0f42,\n\t0xd8c: 0x1046, 0xd8d: 0x10a2, 0xd8e: 0x1122, 0xd8f: 0x1206, 0xd90: 0x1636, 0xd91: 0x08aa,\n\t0xd92: 0x0cfe, 0xd93: 0x15ae, 0xd94: 0x0862, 0xd95: 0x0ba6, 0xd96: 0x0f2a, 0xd97: 0x14da,\n\t0xd98: 0x0c62, 0xd99: 0x0cb2, 0xd9a: 0x0e3e, 0xd9b: 0x102a, 0xd9c: 0x15b6, 0xd9d: 0x0912,\n\t0xd9e: 0x09fa, 0xd9f: 0x0b92, 0xda0: 0x0dce, 0xda1: 0x0e1a, 0xda2: 0x0e5a, 0xda3: 0x0eee,\n\t0xda4: 0x1042, 0xda5: 0x10b6, 0xda6: 0x1252, 0xda7: 0x13f2, 0xda8: 0x13fe, 0xda9: 0x1552,\n\t0xdaa: 0x15d2, 0xdab: 0x097e, 0xdac: 0x0f46, 0xdad: 0x09fe, 0xdae: 0x0fc2, 0xdaf: 0x1066,\n\t0xdb0: 0x1382, 0xdb1: 0x15ba, 0xdb2: 0x16a6, 0xdb3: 0x16ce, 0xdb4: 0x0e32, 0xdb5: 0x0f22,\n\t0xdb6: 0x12be, 0xdb7: 0x11b2, 0xdb8: 0x11be, 0xdb9: 0x11e2, 0xdba: 0x1012, 0xdbb: 0x0f9a,\n\t0xdbc: 0x145e, 0xdbd: 0x082e, 0xdbe: 0x1326, 0xdbf: 0x0916,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0906, 0xdc1: 0x0c06, 0xdc2: 0x0d26, 0xdc3: 0x11ee, 0xdc4: 0x0b4e, 0xdc5: 0x0efe,\n\t0xdc6: 0x0dea, 0xdc7: 0x14e2, 0xdc8: 0x13e2, 0xdc9: 0x15a6, 0xdca: 0x141e, 0xdcb: 0x0c22,\n\t0xdcc: 0x0882, 0xdcd: 0x0a56, 0xdd0: 0x0aaa,\n\t0xdd2: 0x0dda, 0xdd5: 0x08f2, 0xdd6: 0x101a, 0xdd7: 0x10de,\n\t0xdd8: 0x1142, 0xdd9: 0x115e, 0xdda: 0x1162, 0xddb: 0x1176, 0xddc: 0x15f6, 0xddd: 0x11e6,\n\t0xdde: 0x126a, 0xde0: 0x138a, 0xde2: 0x144e,\n\t0xde5: 0x1502, 0xde6: 0x152e,\n\t0xdea: 0x164a, 0xdeb: 0x164e, 0xdec: 0x1652, 0xded: 0x16b6, 0xdee: 0x1526, 0xdef: 0x15c2,\n\t0xdf0: 0x0852, 0xdf1: 0x0876, 0xdf2: 0x088a, 0xdf3: 0x0946, 0xdf4: 0x0952, 0xdf5: 0x0992,\n\t0xdf6: 0x0a46, 0xdf7: 0x0a62, 0xdf8: 0x0a6a, 0xdf9: 0x0aa6, 0xdfa: 0x0ab2, 0xdfb: 0x0b8e,\n\t0xdfc: 0x0b96, 0xdfd: 0x0c9e, 0xdfe: 0x0cc6, 0xdff: 0x0cce,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x0ce6, 0xe01: 0x0d92, 0xe02: 0x0dc2, 0xe03: 0x0de2, 0xe04: 0x0e52, 0xe05: 0x0f16,\n\t0xe06: 0x0f32, 0xe07: 0x0f62, 0xe08: 0x0fb6, 0xe09: 0x0fd6, 0xe0a: 0x104a, 0xe0b: 0x112a,\n\t0xe0c: 0x1146, 0xe0d: 0x114e, 0xe0e: 0x114a, 0xe0f: 0x1152, 0xe10: 0x1156, 0xe11: 0x115a,\n\t0xe12: 0x116e, 0xe13: 0x1172, 0xe14: 0x1196, 0xe15: 0x11aa, 0xe16: 0x11c6, 0xe17: 0x122a,\n\t0xe18: 0x1232, 0xe19: 0x123a, 0xe1a: 0x124e, 0xe1b: 0x1276, 0xe1c: 0x12c6, 0xe1d: 0x12fa,\n\t0xe1e: 0x12fa, 0xe1f: 0x1362, 0xe20: 0x140a, 0xe21: 0x1422, 0xe22: 0x1456, 0xe23: 0x145a,\n\t0xe24: 0x149e, 0xe25: 0x14a2, 0xe26: 0x14fa, 0xe27: 0x1502, 0xe28: 0x15d6, 0xe29: 0x161a,\n\t0xe2a: 0x1632, 0xe2b: 0x0c96, 0xe2c: 0x184b, 0xe2d: 0x12de,\n\t0xe30: 0x07da, 0xe31: 0x08de, 0xe32: 0x089e, 0xe33: 0x0846, 0xe34: 0x0886, 0xe35: 0x08b2,\n\t0xe36: 0x0942, 0xe37: 0x095e, 0xe38: 0x0a46, 0xe39: 0x0a32, 0xe3a: 0x0a42, 0xe3b: 0x0a5e,\n\t0xe3c: 0x0aaa, 0xe3d: 0x0aba, 0xe3e: 0x0afe, 0xe3f: 0x0b0a,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x0b26, 0xe41: 0x0b36, 0xe42: 0x0c1e, 0xe43: 0x0c26, 0xe44: 0x0c56, 0xe45: 0x0c76,\n\t0xe46: 0x0ca6, 0xe47: 0x0cbe, 0xe48: 0x0cae, 0xe49: 0x0cce, 0xe4a: 0x0cc2, 0xe4b: 0x0ce6,\n\t0xe4c: 0x0d02, 0xe4d: 0x0d5a, 0xe4e: 0x0d66, 0xe4f: 0x0d6e, 0xe50: 0x0d96, 0xe51: 0x0dda,\n\t0xe52: 0x0e0a, 0xe53: 0x0e0e, 0xe54: 0x0e22, 0xe55: 0x0ea2, 0xe56: 0x0eb2, 0xe57: 0x0f0a,\n\t0xe58: 0x0f56, 0xe59: 0x0f4e, 0xe5a: 0x0f62, 0xe5b: 0x0f7e, 0xe5c: 0x0fb6, 0xe5d: 0x110e,\n\t0xe5e: 0x0fda, 0xe5f: 0x100e, 0xe60: 0x101a, 0xe61: 0x105a, 0xe62: 0x1076, 0xe63: 0x109a,\n\t0xe64: 0x10be, 0xe65: 0x10c2, 0xe66: 0x10de, 0xe67: 0x10e2, 0xe68: 0x10f2, 0xe69: 0x1106,\n\t0xe6a: 0x1102, 0xe6b: 0x1132, 0xe6c: 0x11ae, 0xe6d: 0x11c6, 0xe6e: 0x11de, 0xe6f: 0x1216,\n\t0xe70: 0x122a, 0xe71: 0x1246, 0xe72: 0x1276, 0xe73: 0x132a, 0xe74: 0x1352, 0xe75: 0x13c6,\n\t0xe76: 0x140e, 0xe77: 0x141a, 0xe78: 0x1422, 0xe79: 0x143a, 0xe7a: 0x144e, 0xe7b: 0x143e,\n\t0xe7c: 0x1456, 0xe7d: 0x1452, 0xe7e: 0x144a, 0xe7f: 0x145a,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x1466, 0xe81: 0x14a2, 0xe82: 0x14de, 0xe83: 0x150e, 0xe84: 0x1546, 0xe85: 0x1566,\n\t0xe86: 0x15b2, 0xe87: 0x15d6, 0xe88: 0x15f6, 0xe89: 0x160a, 0xe8a: 0x161a, 0xe8b: 0x1626,\n\t0xe8c: 0x1632, 0xe8d: 0x1686, 0xe8e: 0x1726, 0xe8f: 0x17e2, 0xe90: 0x17dd, 0xe91: 0x180f,\n\t0xe92: 0x0702, 0xe93: 0x072a, 0xe94: 0x072e, 0xe95: 0x1891, 0xe96: 0x18be, 0xe97: 0x1936,\n\t0xe98: 0x1712, 0xe99: 0x1722,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x1b05, 0xec1: 0x1b08, 0xec2: 0x1b0b, 0xec3: 0x1d38, 0xec4: 0x1d3c, 0xec5: 0x1b8f,\n\t0xec6: 0x1b8f,\n\t0xed3: 0x1ea5, 0xed4: 0x1e96, 0xed5: 0x1e9b, 0xed6: 0x1eaa, 0xed7: 0x1ea0,\n\t0xedd: 0x44d1,\n\t0xede: 0x8116, 0xedf: 0x4543, 0xee0: 0x0320, 0xee1: 0x0308, 0xee2: 0x0311, 0xee3: 0x0314,\n\t0xee4: 0x0317, 0xee5: 0x031a, 0xee6: 0x031d, 0xee7: 0x0323, 0xee8: 0x0326, 0xee9: 0x0017,\n\t0xeea: 0x4531, 0xeeb: 0x4537, 0xeec: 0x4635, 0xeed: 0x463d, 0xeee: 0x4489, 0xeef: 0x448f,\n\t0xef0: 0x4495, 0xef1: 0x449b, 0xef2: 0x44a7, 0xef3: 0x44ad, 0xef4: 0x44b3, 0xef5: 0x44bf,\n\t0xef6: 0x44c5, 0xef8: 0x44cb, 0xef9: 0x44d7, 0xefa: 0x44dd, 0xefb: 0x44e3,\n\t0xefc: 0x44ef, 0xefe: 0x44f5,\n\t// Block 0x3c, offset 0xf00\n\t0xf00: 0x44fb, 0xf01: 0x4501, 0xf03: 0x4507, 0xf04: 0x450d,\n\t0xf06: 0x4519, 0xf07: 0x451f, 0xf08: 0x4525, 0xf09: 0x452b, 0xf0a: 0x453d, 0xf0b: 0x44b9,\n\t0xf0c: 0x44a1, 0xf0d: 0x44e9, 0xf0e: 0x4513, 0xf0f: 0x1eaf, 0xf10: 0x038c, 0xf11: 0x038c,\n\t0xf12: 0x0395, 0xf13: 0x0395, 0xf14: 0x0395, 0xf15: 0x0395, 0xf16: 0x0398, 0xf17: 0x0398,\n\t0xf18: 0x0398, 0xf19: 0x0398, 0xf1a: 0x039e, 0xf1b: 0x039e, 0xf1c: 0x039e, 0xf1d: 0x039e,\n\t0xf1e: 0x0392, 0xf1f: 0x0392, 0xf20: 0x0392, 0xf21: 0x0392, 0xf22: 0x039b, 0xf23: 0x039b,\n\t0xf24: 0x039b, 0xf25: 0x039b, 0xf26: 0x038f, 0xf27: 0x038f, 0xf28: 0x038f, 0xf29: 0x038f,\n\t0xf2a: 0x03c2, 0xf2b: 0x03c2, 0xf2c: 0x03c2, 0xf2d: 0x03c2, 0xf2e: 0x03c5, 0xf2f: 0x03c5,\n\t0xf30: 0x03c5, 0xf31: 0x03c5, 0xf32: 0x03a4, 0xf33: 0x03a4, 0xf34: 0x03a4, 0xf35: 0x03a4,\n\t0xf36: 0x03a1, 0xf37: 0x03a1, 0xf38: 0x03a1, 0xf39: 0x03a1, 0xf3a: 0x03a7, 0xf3b: 0x03a7,\n\t0xf3c: 0x03a7, 0xf3d: 0x03a7, 0xf3e: 0x03aa, 0xf3f: 0x03aa,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x03aa, 0xf41: 0x03aa, 0xf42: 0x03b3, 0xf43: 0x03b3, 0xf44: 0x03b0, 0xf45: 0x03b0,\n\t0xf46: 0x03b6, 0xf47: 0x03b6, 0xf48: 0x03ad, 0xf49: 0x03ad, 0xf4a: 0x03bc, 0xf4b: 0x03bc,\n\t0xf4c: 0x03b9, 0xf4d: 0x03b9, 0xf4e: 0x03c8, 0xf4f: 0x03c8, 0xf50: 0x03c8, 0xf51: 0x03c8,\n\t0xf52: 0x03ce, 0xf53: 0x03ce, 0xf54: 0x03ce, 0xf55: 0x03ce, 0xf56: 0x03d4, 0xf57: 0x03d4,\n\t0xf58: 0x03d4, 0xf59: 0x03d4, 0xf5a: 0x03d1, 0xf5b: 0x03d1, 0xf5c: 0x03d1, 0xf5d: 0x03d1,\n\t0xf5e: 0x03d7, 0xf5f: 0x03d7, 0xf60: 0x03da, 0xf61: 0x03da, 0xf62: 0x03da, 0xf63: 0x03da,\n\t0xf64: 0x45af, 0xf65: 0x45af, 0xf66: 0x03e0, 0xf67: 0x03e0, 0xf68: 0x03e0, 0xf69: 0x03e0,\n\t0xf6a: 0x03dd, 0xf6b: 0x03dd, 0xf6c: 0x03dd, 0xf6d: 0x03dd, 0xf6e: 0x03fb, 0xf6f: 0x03fb,\n\t0xf70: 0x45a9, 0xf71: 0x45a9,\n\t// Block 0x3e, offset 0xf80\n\t0xf93: 0x03cb, 0xf94: 0x03cb, 0xf95: 0x03cb, 0xf96: 0x03cb, 0xf97: 0x03e9,\n\t0xf98: 0x03e9, 0xf99: 0x03e6, 0xf9a: 0x03e6, 0xf9b: 0x03ec, 0xf9c: 0x03ec, 0xf9d: 0x217f,\n\t0xf9e: 0x03f2, 0xf9f: 0x03f2, 0xfa0: 0x03e3, 0xfa1: 0x03e3, 0xfa2: 0x03ef, 0xfa3: 0x03ef,\n\t0xfa4: 0x03f8, 0xfa5: 0x03f8, 0xfa6: 0x03f8, 0xfa7: 0x03f8, 0xfa8: 0x0380, 0xfa9: 0x0380,\n\t0xfaa: 0x26da, 0xfab: 0x26da, 0xfac: 0x274a, 0xfad: 0x274a, 0xfae: 0x2719, 0xfaf: 0x2719,\n\t0xfb0: 0x2735, 0xfb1: 0x2735, 0xfb2: 0x272e, 0xfb3: 0x272e, 0xfb4: 0x273c, 0xfb5: 0x273c,\n\t0xfb6: 0x2743, 0xfb7: 0x2743, 0xfb8: 0x2743, 0xfb9: 0x2720, 0xfba: 0x2720, 0xfbb: 0x2720,\n\t0xfbc: 0x03f5, 0xfbd: 0x03f5, 0xfbe: 0x03f5, 0xfbf: 0x03f5,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x26e1, 0xfc1: 0x26e8, 0xfc2: 0x2704, 0xfc3: 0x2720, 0xfc4: 0x2727, 0xfc5: 0x1eb9,\n\t0xfc6: 0x1ebe, 0xfc7: 0x1ec3, 0xfc8: 0x1ed2, 0xfc9: 0x1ee1, 0xfca: 0x1ee6, 0xfcb: 0x1eeb,\n\t0xfcc: 0x1ef0, 0xfcd: 0x1ef5, 0xfce: 0x1f04, 0xfcf: 0x1f13, 0xfd0: 0x1f18, 0xfd1: 0x1f1d,\n\t0xfd2: 0x1f2c, 0xfd3: 0x1f3b, 0xfd4: 0x1f40, 0xfd5: 0x1f45, 0xfd6: 0x1f4a, 0xfd7: 0x1f59,\n\t0xfd8: 0x1f5e, 0xfd9: 0x1f6d, 0xfda: 0x1f72, 0xfdb: 0x1f77, 0xfdc: 0x1f86, 0xfdd: 0x1f8b,\n\t0xfde: 0x1f90, 0xfdf: 0x1f9a, 0xfe0: 0x1fd6, 0xfe1: 0x1fe5, 0xfe2: 0x1ff4, 0xfe3: 0x1ff9,\n\t0xfe4: 0x1ffe, 0xfe5: 0x2008, 0xfe6: 0x2017, 0xfe7: 0x201c, 0xfe8: 0x202b, 0xfe9: 0x2030,\n\t0xfea: 0x2035, 0xfeb: 0x2044, 0xfec: 0x2049, 0xfed: 0x2058, 0xfee: 0x205d, 0xfef: 0x2062,\n\t0xff0: 0x2067, 0xff1: 0x206c, 0xff2: 0x2071, 0xff3: 0x2076, 0xff4: 0x207b, 0xff5: 0x2080,\n\t0xff6: 0x2085, 0xff7: 0x208a, 0xff8: 0x208f, 0xff9: 0x2094, 0xffa: 0x2099, 0xffb: 0x209e,\n\t0xffc: 0x20a3, 0xffd: 0x20a8, 0xffe: 0x20ad, 0xfff: 0x20b7,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x20bc, 0x1001: 0x20c1, 0x1002: 0x20c6, 0x1003: 0x20d0, 0x1004: 0x20d5, 0x1005: 0x20df,\n\t0x1006: 0x20e4, 0x1007: 0x20e9, 0x1008: 0x20ee, 0x1009: 0x20f3, 0x100a: 0x20f8, 0x100b: 0x20fd,\n\t0x100c: 0x2102, 0x100d: 0x2107, 0x100e: 0x2116, 0x100f: 0x2125, 0x1010: 0x212a, 0x1011: 0x212f,\n\t0x1012: 0x2134, 0x1013: 0x2139, 0x1014: 0x213e, 0x1015: 0x2148, 0x1016: 0x214d, 0x1017: 0x2152,\n\t0x1018: 0x2161, 0x1019: 0x2170, 0x101a: 0x2175, 0x101b: 0x4561, 0x101c: 0x4567, 0x101d: 0x459d,\n\t0x101e: 0x45f4, 0x101f: 0x45fb, 0x1020: 0x4602, 0x1021: 0x4609, 0x1022: 0x4610, 0x1023: 0x4617,\n\t0x1024: 0x26f6, 0x1025: 0x26fd, 0x1026: 0x2704, 0x1027: 0x270b, 0x1028: 0x2720, 0x1029: 0x2727,\n\t0x102a: 0x1ec8, 0x102b: 0x1ecd, 0x102c: 0x1ed2, 0x102d: 0x1ed7, 0x102e: 0x1ee1, 0x102f: 0x1ee6,\n\t0x1030: 0x1efa, 0x1031: 0x1eff, 0x1032: 0x1f04, 0x1033: 0x1f09, 0x1034: 0x1f13, 0x1035: 0x1f18,\n\t0x1036: 0x1f22, 0x1037: 0x1f27, 0x1038: 0x1f2c, 0x1039: 0x1f31, 0x103a: 0x1f3b, 0x103b: 0x1f40,\n\t0x103c: 0x206c, 0x103d: 0x2071, 0x103e: 0x2080, 0x103f: 0x2085,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x208a, 0x1041: 0x209e, 0x1042: 0x20a3, 0x1043: 0x20a8, 0x1044: 0x20ad, 0x1045: 0x20c6,\n\t0x1046: 0x20d0, 0x1047: 0x20d5, 0x1048: 0x20da, 0x1049: 0x20ee, 0x104a: 0x210c, 0x104b: 0x2111,\n\t0x104c: 0x2116, 0x104d: 0x211b, 0x104e: 0x2125, 0x104f: 0x212a, 0x1050: 0x459d, 0x1051: 0x2157,\n\t0x1052: 0x215c, 0x1053: 0x2161, 0x1054: 0x2166, 0x1055: 0x2170, 0x1056: 0x2175, 0x1057: 0x26e1,\n\t0x1058: 0x26e8, 0x1059: 0x26ef, 0x105a: 0x2704, 0x105b: 0x2712, 0x105c: 0x1eb9, 0x105d: 0x1ebe,\n\t0x105e: 0x1ec3, 0x105f: 0x1ed2, 0x1060: 0x1edc, 0x1061: 0x1eeb, 0x1062: 0x1ef0, 0x1063: 0x1ef5,\n\t0x1064: 0x1f04, 0x1065: 0x1f0e, 0x1066: 0x1f2c, 0x1067: 0x1f45, 0x1068: 0x1f4a, 0x1069: 0x1f59,\n\t0x106a: 0x1f5e, 0x106b: 0x1f6d, 0x106c: 0x1f77, 0x106d: 0x1f86, 0x106e: 0x1f8b, 0x106f: 0x1f90,\n\t0x1070: 0x1f9a, 0x1071: 0x1fd6, 0x1072: 0x1fdb, 0x1073: 0x1fe5, 0x1074: 0x1ff4, 0x1075: 0x1ff9,\n\t0x1076: 0x1ffe, 0x1077: 0x2008, 0x1078: 0x2017, 0x1079: 0x202b, 0x107a: 0x2030, 0x107b: 0x2035,\n\t0x107c: 0x2044, 0x107d: 0x2049, 0x107e: 0x2058, 0x107f: 0x205d,\n\t// Block 0x42, offset 0x1080\n\t0x1080: 0x2062, 0x1081: 0x2067, 0x1082: 0x2076, 0x1083: 0x207b, 0x1084: 0x208f, 0x1085: 0x2094,\n\t0x1086: 0x2099, 0x1087: 0x209e, 0x1088: 0x20a3, 0x1089: 0x20b7, 0x108a: 0x20bc, 0x108b: 0x20c1,\n\t0x108c: 0x20c6, 0x108d: 0x20cb, 0x108e: 0x20df, 0x108f: 0x20e4, 0x1090: 0x20e9, 0x1091: 0x20ee,\n\t0x1092: 0x20fd, 0x1093: 0x2102, 0x1094: 0x2107, 0x1095: 0x2116, 0x1096: 0x2120, 0x1097: 0x212f,\n\t0x1098: 0x2134, 0x1099: 0x4591, 0x109a: 0x2148, 0x109b: 0x214d, 0x109c: 0x2152, 0x109d: 0x2161,\n\t0x109e: 0x216b, 0x109f: 0x2704, 0x10a0: 0x2712, 0x10a1: 0x1ed2, 0x10a2: 0x1edc, 0x10a3: 0x1f04,\n\t0x10a4: 0x1f0e, 0x10a5: 0x1f2c, 0x10a6: 0x1f36, 0x10a7: 0x1f9a, 0x10a8: 0x1f9f, 0x10a9: 0x1fc2,\n\t0x10aa: 0x1fc7, 0x10ab: 0x209e, 0x10ac: 0x20a3, 0x10ad: 0x20c6, 0x10ae: 0x2116, 0x10af: 0x2120,\n\t0x10b0: 0x2161, 0x10b1: 0x216b, 0x10b2: 0x4645, 0x10b3: 0x464d, 0x10b4: 0x4655, 0x10b5: 0x2021,\n\t0x10b6: 0x2026, 0x10b7: 0x203a, 0x10b8: 0x203f, 0x10b9: 0x204e, 0x10ba: 0x2053, 0x10bb: 0x1fa4,\n\t0x10bc: 0x1fa9, 0x10bd: 0x1fcc, 0x10be: 0x1fd1, 0x10bf: 0x1f63,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x1f68, 0x10c1: 0x1f4f, 0x10c2: 0x1f54, 0x10c3: 0x1f7c, 0x10c4: 0x1f81, 0x10c5: 0x1fea,\n\t0x10c6: 0x1fef, 0x10c7: 0x200d, 0x10c8: 0x2012, 0x10c9: 0x1fae, 0x10ca: 0x1fb3, 0x10cb: 0x1fb8,\n\t0x10cc: 0x1fc2, 0x10cd: 0x1fbd, 0x10ce: 0x1f95, 0x10cf: 0x1fe0, 0x10d0: 0x2003, 0x10d1: 0x2021,\n\t0x10d2: 0x2026, 0x10d3: 0x203a, 0x10d4: 0x203f, 0x10d5: 0x204e, 0x10d6: 0x2053, 0x10d7: 0x1fa4,\n\t0x10d8: 0x1fa9, 0x10d9: 0x1fcc, 0x10da: 0x1fd1, 0x10db: 0x1f63, 0x10dc: 0x1f68, 0x10dd: 0x1f4f,\n\t0x10de: 0x1f54, 0x10df: 0x1f7c, 0x10e0: 0x1f81, 0x10e1: 0x1fea, 0x10e2: 0x1fef, 0x10e3: 0x200d,\n\t0x10e4: 0x2012, 0x10e5: 0x1fae, 0x10e6: 0x1fb3, 0x10e7: 0x1fb8, 0x10e8: 0x1fc2, 0x10e9: 0x1fbd,\n\t0x10ea: 0x1f95, 0x10eb: 0x1fe0, 0x10ec: 0x2003, 0x10ed: 0x1fae, 0x10ee: 0x1fb3, 0x10ef: 0x1fb8,\n\t0x10f0: 0x1fc2, 0x10f1: 0x1f9f, 0x10f2: 0x1fc7, 0x10f3: 0x201c, 0x10f4: 0x1f86, 0x10f5: 0x1f8b,\n\t0x10f6: 0x1f90, 0x10f7: 0x1fae, 0x10f8: 0x1fb3, 0x10f9: 0x1fb8, 0x10fa: 0x201c, 0x10fb: 0x202b,\n\t0x10fc: 0x4549, 0x10fd: 0x4549,\n\t// Block 0x44, offset 0x1100\n\t0x1110: 0x2441, 0x1111: 0x2456,\n\t0x1112: 0x2456, 0x1113: 0x245d, 0x1114: 0x2464, 0x1115: 0x2479, 0x1116: 0x2480, 0x1117: 0x2487,\n\t0x1118: 0x24aa, 0x1119: 0x24aa, 0x111a: 0x24cd, 0x111b: 0x24c6, 0x111c: 0x24e2, 0x111d: 0x24d4,\n\t0x111e: 0x24db, 0x111f: 0x24fe, 0x1120: 0x24fe, 0x1121: 0x24f7, 0x1122: 0x2505, 0x1123: 0x2505,\n\t0x1124: 0x252f, 0x1125: 0x252f, 0x1126: 0x254b, 0x1127: 0x2513, 0x1128: 0x2513, 0x1129: 0x250c,\n\t0x112a: 0x2521, 0x112b: 0x2521, 0x112c: 0x2528, 0x112d: 0x2528, 0x112e: 0x2552, 0x112f: 0x2560,\n\t0x1130: 0x2560, 0x1131: 0x2567, 0x1132: 0x2567, 0x1133: 0x256e, 0x1134: 0x2575, 0x1135: 0x257c,\n\t0x1136: 0x2583, 0x1137: 0x2583, 0x1138: 0x258a, 0x1139: 0x2598, 0x113a: 0x25a6, 0x113b: 0x259f,\n\t0x113c: 0x25ad, 0x113d: 0x25ad, 0x113e: 0x25c2, 0x113f: 0x25c9,\n\t// Block 0x45, offset 0x1140\n\t0x1140: 0x25fa, 0x1141: 0x2608, 0x1142: 0x2601, 0x1143: 0x25e5, 0x1144: 0x25e5, 0x1145: 0x260f,\n\t0x1146: 0x260f, 0x1147: 0x2616, 0x1148: 0x2616, 0x1149: 0x2640, 0x114a: 0x2647, 0x114b: 0x264e,\n\t0x114c: 0x2624, 0x114d: 0x2632, 0x114e: 0x2655, 0x114f: 0x265c,\n\t0x1152: 0x262b, 0x1153: 0x26b0, 0x1154: 0x26b7, 0x1155: 0x268d, 0x1156: 0x2694, 0x1157: 0x2678,\n\t0x1158: 0x2678, 0x1159: 0x267f, 0x115a: 0x26a9, 0x115b: 0x26a2, 0x115c: 0x26cc, 0x115d: 0x26cc,\n\t0x115e: 0x243a, 0x115f: 0x244f, 0x1160: 0x2448, 0x1161: 0x2472, 0x1162: 0x246b, 0x1163: 0x2495,\n\t0x1164: 0x248e, 0x1165: 0x24b8, 0x1166: 0x249c, 0x1167: 0x24b1, 0x1168: 0x24e9, 0x1169: 0x2536,\n\t0x116a: 0x251a, 0x116b: 0x2559, 0x116c: 0x25f3, 0x116d: 0x261d, 0x116e: 0x26c5, 0x116f: 0x26be,\n\t0x1170: 0x26d3, 0x1171: 0x266a, 0x1172: 0x25d0, 0x1173: 0x269b, 0x1174: 0x25c2, 0x1175: 0x25fa,\n\t0x1176: 0x2591, 0x1177: 0x25de, 0x1178: 0x2671, 0x1179: 0x2663, 0x117a: 0x25ec, 0x117b: 0x25d7,\n\t0x117c: 0x25ec, 0x117d: 0x2671, 0x117e: 0x24a3, 0x117f: 0x24bf,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x2639, 0x1181: 0x25b4, 0x1182: 0x2433, 0x1183: 0x25d7, 0x1184: 0x257c, 0x1185: 0x254b,\n\t0x1186: 0x24f0, 0x1187: 0x2686,\n\t0x11b0: 0x2544, 0x11b1: 0x25bb, 0x11b2: 0x28f6, 0x11b3: 0x28ed, 0x11b4: 0x2923, 0x11b5: 0x2911,\n\t0x11b6: 0x28ff, 0x11b7: 0x291a, 0x11b8: 0x292c, 0x11b9: 0x253d, 0x11ba: 0x2db3, 0x11bb: 0x2c33,\n\t0x11bc: 0x2908,\n\t// Block 0x47, offset 0x11c0\n\t0x11d0: 0x0019, 0x11d1: 0x057e,\n\t0x11d2: 0x0582, 0x11d3: 0x0035, 0x11d4: 0x0037, 0x11d5: 0x0003, 0x11d6: 0x003f, 0x11d7: 0x05ba,\n\t0x11d8: 0x05be, 0x11d9: 0x1c8c,\n\t0x11e0: 0x8133, 0x11e1: 0x8133, 0x11e2: 0x8133, 0x11e3: 0x8133,\n\t0x11e4: 0x8133, 0x11e5: 0x8133, 0x11e6: 0x8133, 0x11e7: 0x812e, 0x11e8: 0x812e, 0x11e9: 0x812e,\n\t0x11ea: 0x812e, 0x11eb: 0x812e, 0x11ec: 0x812e, 0x11ed: 0x812e, 0x11ee: 0x8133, 0x11ef: 0x8133,\n\t0x11f0: 0x19a0, 0x11f1: 0x053a, 0x11f2: 0x0536, 0x11f3: 0x007f, 0x11f4: 0x007f, 0x11f5: 0x0011,\n\t0x11f6: 0x0013, 0x11f7: 0x00b7, 0x11f8: 0x00bb, 0x11f9: 0x05b2, 0x11fa: 0x05b6, 0x11fb: 0x05a6,\n\t0x11fc: 0x05aa, 0x11fd: 0x058e, 0x11fe: 0x0592, 0x11ff: 0x0586,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x058a, 0x1201: 0x0596, 0x1202: 0x059a, 0x1203: 0x059e, 0x1204: 0x05a2,\n\t0x1207: 0x0077, 0x1208: 0x007b, 0x1209: 0x43aa, 0x120a: 0x43aa, 0x120b: 0x43aa,\n\t0x120c: 0x43aa, 0x120d: 0x007f, 0x120e: 0x007f, 0x120f: 0x007f, 0x1210: 0x0019, 0x1211: 0x057e,\n\t0x1212: 0x001d, 0x1214: 0x0037, 0x1215: 0x0035, 0x1216: 0x003f, 0x1217: 0x0003,\n\t0x1218: 0x053a, 0x1219: 0x0011, 0x121a: 0x0013, 0x121b: 0x00b7, 0x121c: 0x00bb, 0x121d: 0x05b2,\n\t0x121e: 0x05b6, 0x121f: 0x0007, 0x1220: 0x000d, 0x1221: 0x0015, 0x1222: 0x0017, 0x1223: 0x001b,\n\t0x1224: 0x0039, 0x1225: 0x003d, 0x1226: 0x003b, 0x1228: 0x0079, 0x1229: 0x0009,\n\t0x122a: 0x000b, 0x122b: 0x0041,\n\t0x1230: 0x43eb, 0x1231: 0x456d, 0x1232: 0x43f0, 0x1234: 0x43f5,\n\t0x1236: 0x43fa, 0x1237: 0x4573, 0x1238: 0x43ff, 0x1239: 0x4579, 0x123a: 0x4404, 0x123b: 0x457f,\n\t0x123c: 0x4409, 0x123d: 0x4585, 0x123e: 0x440e, 0x123f: 0x458b,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x0329, 0x1241: 0x454f, 0x1242: 0x454f, 0x1243: 0x4555, 0x1244: 0x4555, 0x1245: 0x4597,\n\t0x1246: 0x4597, 0x1247: 0x455b, 0x1248: 0x455b, 0x1249: 0x45a3, 0x124a: 0x45a3, 0x124b: 0x45a3,\n\t0x124c: 0x45a3, 0x124d: 0x032c, 0x124e: 0x032c, 0x124f: 0x032f, 0x1250: 0x032f, 0x1251: 0x032f,\n\t0x1252: 0x032f, 0x1253: 0x0332, 0x1254: 0x0332, 0x1255: 0x0335, 0x1256: 0x0335, 0x1257: 0x0335,\n\t0x1258: 0x0335, 0x1259: 0x0338, 0x125a: 0x0338, 0x125b: 0x0338, 0x125c: 0x0338, 0x125d: 0x033b,\n\t0x125e: 0x033b, 0x125f: 0x033b, 0x1260: 0x033b, 0x1261: 0x033e, 0x1262: 0x033e, 0x1263: 0x033e,\n\t0x1264: 0x033e, 0x1265: 0x0341, 0x1266: 0x0341, 0x1267: 0x0341, 0x1268: 0x0341, 0x1269: 0x0344,\n\t0x126a: 0x0344, 0x126b: 0x0347, 0x126c: 0x0347, 0x126d: 0x034a, 0x126e: 0x034a, 0x126f: 0x034d,\n\t0x1270: 0x034d, 0x1271: 0x0350, 0x1272: 0x0350, 0x1273: 0x0350, 0x1274: 0x0350, 0x1275: 0x0353,\n\t0x1276: 0x0353, 0x1277: 0x0353, 0x1278: 0x0353, 0x1279: 0x0356, 0x127a: 0x0356, 0x127b: 0x0356,\n\t0x127c: 0x0356, 0x127d: 0x0359, 0x127e: 0x0359, 0x127f: 0x0359,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x0359, 0x1281: 0x035c, 0x1282: 0x035c, 0x1283: 0x035c, 0x1284: 0x035c, 0x1285: 0x035f,\n\t0x1286: 0x035f, 0x1287: 0x035f, 0x1288: 0x035f, 0x1289: 0x0362, 0x128a: 0x0362, 0x128b: 0x0362,\n\t0x128c: 0x0362, 0x128d: 0x0365, 0x128e: 0x0365, 0x128f: 0x0365, 0x1290: 0x0365, 0x1291: 0x0368,\n\t0x1292: 0x0368, 0x1293: 0x0368, 0x1294: 0x0368, 0x1295: 0x036b, 0x1296: 0x036b, 0x1297: 0x036b,\n\t0x1298: 0x036b, 0x1299: 0x036e, 0x129a: 0x036e, 0x129b: 0x036e, 0x129c: 0x036e, 0x129d: 0x0371,\n\t0x129e: 0x0371, 0x129f: 0x0371, 0x12a0: 0x0371, 0x12a1: 0x0374, 0x12a2: 0x0374, 0x12a3: 0x0374,\n\t0x12a4: 0x0374, 0x12a5: 0x0377, 0x12a6: 0x0377, 0x12a7: 0x0377, 0x12a8: 0x0377, 0x12a9: 0x037a,\n\t0x12aa: 0x037a, 0x12ab: 0x037a, 0x12ac: 0x037a, 0x12ad: 0x037d, 0x12ae: 0x037d, 0x12af: 0x0380,\n\t0x12b0: 0x0380, 0x12b1: 0x0383, 0x12b2: 0x0383, 0x12b3: 0x0383, 0x12b4: 0x0383, 0x12b5: 0x2f41,\n\t0x12b6: 0x2f41, 0x12b7: 0x2f49, 0x12b8: 0x2f49, 0x12b9: 0x2f51, 0x12ba: 0x2f51, 0x12bb: 0x20b2,\n\t0x12bc: 0x20b2,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c0: 0x0081, 0x12c1: 0x0083, 0x12c2: 0x0085, 0x12c3: 0x0087, 0x12c4: 0x0089, 0x12c5: 0x008b,\n\t0x12c6: 0x008d, 0x12c7: 0x008f, 0x12c8: 0x0091, 0x12c9: 0x0093, 0x12ca: 0x0095, 0x12cb: 0x0097,\n\t0x12cc: 0x0099, 0x12cd: 0x009b, 0x12ce: 0x009d, 0x12cf: 0x009f, 0x12d0: 0x00a1, 0x12d1: 0x00a3,\n\t0x12d2: 0x00a5, 0x12d3: 0x00a7, 0x12d4: 0x00a9, 0x12d5: 0x00ab, 0x12d6: 0x00ad, 0x12d7: 0x00af,\n\t0x12d8: 0x00b1, 0x12d9: 0x00b3, 0x12da: 0x00b5, 0x12db: 0x00b7, 0x12dc: 0x00b9, 0x12dd: 0x00bb,\n\t0x12de: 0x00bd, 0x12df: 0x056e, 0x12e0: 0x0572, 0x12e1: 0x0582, 0x12e2: 0x0596, 0x12e3: 0x059a,\n\t0x12e4: 0x057e, 0x12e5: 0x06a6, 0x12e6: 0x069e, 0x12e7: 0x05c2, 0x12e8: 0x05ca, 0x12e9: 0x05d2,\n\t0x12ea: 0x05da, 0x12eb: 0x05e2, 0x12ec: 0x0666, 0x12ed: 0x066e, 0x12ee: 0x0676, 0x12ef: 0x061a,\n\t0x12f0: 0x06aa, 0x12f1: 0x05c6, 0x12f2: 0x05ce, 0x12f3: 0x05d6, 0x12f4: 0x05de, 0x12f5: 0x05e6,\n\t0x12f6: 0x05ea, 0x12f7: 0x05ee, 0x12f8: 0x05f2, 0x12f9: 0x05f6, 0x12fa: 0x05fa, 0x12fb: 0x05fe,\n\t0x12fc: 0x0602, 0x12fd: 0x0606, 0x12fe: 0x060a, 0x12ff: 0x060e,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x0612, 0x1301: 0x0616, 0x1302: 0x061e, 0x1303: 0x0622, 0x1304: 0x0626, 0x1305: 0x062a,\n\t0x1306: 0x062e, 0x1307: 0x0632, 0x1308: 0x0636, 0x1309: 0x063a, 0x130a: 0x063e, 0x130b: 0x0642,\n\t0x130c: 0x0646, 0x130d: 0x064a, 0x130e: 0x064e, 0x130f: 0x0652, 0x1310: 0x0656, 0x1311: 0x065a,\n\t0x1312: 0x065e, 0x1313: 0x0662, 0x1314: 0x066a, 0x1315: 0x0672, 0x1316: 0x067a, 0x1317: 0x067e,\n\t0x1318: 0x0682, 0x1319: 0x0686, 0x131a: 0x068a, 0x131b: 0x068e, 0x131c: 0x0692, 0x131d: 0x06a2,\n\t0x131e: 0x4bb9, 0x131f: 0x4bbf, 0x1320: 0x04b6, 0x1321: 0x0406, 0x1322: 0x040a, 0x1323: 0x4b7c,\n\t0x1324: 0x040e, 0x1325: 0x4b82, 0x1326: 0x4b88, 0x1327: 0x0412, 0x1328: 0x0416, 0x1329: 0x041a,\n\t0x132a: 0x4b8e, 0x132b: 0x4b94, 0x132c: 0x4b9a, 0x132d: 0x4ba0, 0x132e: 0x4ba6, 0x132f: 0x4bac,\n\t0x1330: 0x045a, 0x1331: 0x041e, 0x1332: 0x0422, 0x1333: 0x0426, 0x1334: 0x046e, 0x1335: 0x042a,\n\t0x1336: 0x042e, 0x1337: 0x0432, 0x1338: 0x0436, 0x1339: 0x043a, 0x133a: 0x043e, 0x133b: 0x0442,\n\t0x133c: 0x0446, 0x133d: 0x044a, 0x133e: 0x044e,\n\t// Block 0x4d, offset 0x1340\n\t0x1342: 0x4afe, 0x1343: 0x4b04, 0x1344: 0x4b0a, 0x1345: 0x4b10,\n\t0x1346: 0x4b16, 0x1347: 0x4b1c, 0x134a: 0x4b22, 0x134b: 0x4b28,\n\t0x134c: 0x4b2e, 0x134d: 0x4b34, 0x134e: 0x4b3a, 0x134f: 0x4b40,\n\t0x1352: 0x4b46, 0x1353: 0x4b4c, 0x1354: 0x4b52, 0x1355: 0x4b58, 0x1356: 0x4b5e, 0x1357: 0x4b64,\n\t0x135a: 0x4b6a, 0x135b: 0x4b70, 0x135c: 0x4b76,\n\t0x1360: 0x00bf, 0x1361: 0x00c2, 0x1362: 0x00cb, 0x1363: 0x43a5,\n\t0x1364: 0x00c8, 0x1365: 0x00c5, 0x1366: 0x053e, 0x1368: 0x0562, 0x1369: 0x0542,\n\t0x136a: 0x0546, 0x136b: 0x054a, 0x136c: 0x054e, 0x136d: 0x0566, 0x136e: 0x056a,\n\t// Block 0x4e, offset 0x1380\n\t0x1381: 0x01f1, 0x1382: 0x01f4, 0x1383: 0x00d4, 0x1384: 0x01be, 0x1385: 0x010d,\n\t0x1387: 0x01d3, 0x1388: 0x174e, 0x1389: 0x01d9, 0x138a: 0x01d6, 0x138b: 0x0116,\n\t0x138c: 0x0119, 0x138d: 0x0526, 0x138e: 0x011c, 0x138f: 0x0128, 0x1390: 0x01e5, 0x1391: 0x013a,\n\t0x1392: 0x0134, 0x1393: 0x012e, 0x1394: 0x01c1, 0x1395: 0x00e0, 0x1396: 0x01c4, 0x1397: 0x0143,\n\t0x1398: 0x0194, 0x1399: 0x01e8, 0x139a: 0x01eb, 0x139b: 0x0152, 0x139c: 0x1756, 0x139d: 0x1742,\n\t0x139e: 0x0158, 0x139f: 0x175b, 0x13a0: 0x01a9, 0x13a1: 0x1760, 0x13a2: 0x00da, 0x13a3: 0x0170,\n\t0x13a4: 0x0173, 0x13a5: 0x00a3, 0x13a6: 0x017c, 0x13a7: 0x1765, 0x13a8: 0x0182, 0x13a9: 0x0185,\n\t0x13aa: 0x0188, 0x13ab: 0x01e2, 0x13ac: 0x01dc, 0x13ad: 0x1752, 0x13ae: 0x01df, 0x13af: 0x0197,\n\t0x13b0: 0x0576, 0x13b2: 0x01ac, 0x13b3: 0x01cd, 0x13b4: 0x01d0, 0x13b5: 0x01bb,\n\t0x13b6: 0x00f5, 0x13b7: 0x00f8, 0x13b8: 0x00fb, 0x13b9: 0x176a, 0x13ba: 0x176f,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c0: 0x0063, 0x13c1: 0x0065, 0x13c2: 0x0067, 0x13c3: 0x0069, 0x13c4: 0x006b, 0x13c5: 0x006d,\n\t0x13c6: 0x006f, 0x13c7: 0x0071, 0x13c8: 0x0073, 0x13c9: 0x0075, 0x13ca: 0x0083, 0x13cb: 0x0085,\n\t0x13cc: 0x0087, 0x13cd: 0x0089, 0x13ce: 0x008b, 0x13cf: 0x008d, 0x13d0: 0x008f, 0x13d1: 0x0091,\n\t0x13d2: 0x0093, 0x13d3: 0x0095, 0x13d4: 0x0097, 0x13d5: 0x0099, 0x13d6: 0x009b, 0x13d7: 0x009d,\n\t0x13d8: 0x009f, 0x13d9: 0x00a1, 0x13da: 0x00a3, 0x13db: 0x00a5, 0x13dc: 0x00a7, 0x13dd: 0x00a9,\n\t0x13de: 0x00ab, 0x13df: 0x00ad, 0x13e0: 0x00af, 0x13e1: 0x00b1, 0x13e2: 0x00b3, 0x13e3: 0x00b5,\n\t0x13e4: 0x00e3, 0x13e5: 0x0101, 0x13e8: 0x01f7, 0x13e9: 0x01fa,\n\t0x13ea: 0x01fd, 0x13eb: 0x0200, 0x13ec: 0x0203, 0x13ed: 0x0206, 0x13ee: 0x0209, 0x13ef: 0x020c,\n\t0x13f0: 0x020f, 0x13f1: 0x0212, 0x13f2: 0x0215, 0x13f3: 0x0218, 0x13f4: 0x021b, 0x13f5: 0x021e,\n\t0x13f6: 0x0221, 0x13f7: 0x0224, 0x13f8: 0x0227, 0x13f9: 0x020c, 0x13fa: 0x022a, 0x13fb: 0x022d,\n\t0x13fc: 0x0230, 0x13fd: 0x0233, 0x13fe: 0x0236, 0x13ff: 0x0239,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x0281, 0x1401: 0x0284, 0x1402: 0x0287, 0x1403: 0x0552, 0x1404: 0x024b, 0x1405: 0x0254,\n\t0x1406: 0x025a, 0x1407: 0x027e, 0x1408: 0x026f, 0x1409: 0x026c, 0x140a: 0x028a, 0x140b: 0x028d,\n\t0x140e: 0x0021, 0x140f: 0x0023, 0x1410: 0x0025, 0x1411: 0x0027,\n\t0x1412: 0x0029, 0x1413: 0x002b, 0x1414: 0x002d, 0x1415: 0x002f, 0x1416: 0x0031, 0x1417: 0x0033,\n\t0x1418: 0x0021, 0x1419: 0x0023, 0x141a: 0x0025, 0x141b: 0x0027, 0x141c: 0x0029, 0x141d: 0x002b,\n\t0x141e: 0x002d, 0x141f: 0x002f, 0x1420: 0x0031, 0x1421: 0x0033, 0x1422: 0x0021, 0x1423: 0x0023,\n\t0x1424: 0x0025, 0x1425: 0x0027, 0x1426: 0x0029, 0x1427: 0x002b, 0x1428: 0x002d, 0x1429: 0x002f,\n\t0x142a: 0x0031, 0x142b: 0x0033, 0x142c: 0x0021, 0x142d: 0x0023, 0x142e: 0x0025, 0x142f: 0x0027,\n\t0x1430: 0x0029, 0x1431: 0x002b, 0x1432: 0x002d, 0x1433: 0x002f, 0x1434: 0x0031, 0x1435: 0x0033,\n\t0x1436: 0x0021, 0x1437: 0x0023, 0x1438: 0x0025, 0x1439: 0x0027, 0x143a: 0x0029, 0x143b: 0x002b,\n\t0x143c: 0x002d, 0x143d: 0x002f, 0x143e: 0x0031, 0x143f: 0x0033,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x8133, 0x1441: 0x8133, 0x1442: 0x8133, 0x1443: 0x8133, 0x1444: 0x8133, 0x1445: 0x8133,\n\t0x1446: 0x8133, 0x1448: 0x8133, 0x1449: 0x8133, 0x144a: 0x8133, 0x144b: 0x8133,\n\t0x144c: 0x8133, 0x144d: 0x8133, 0x144e: 0x8133, 0x144f: 0x8133, 0x1450: 0x8133, 0x1451: 0x8133,\n\t0x1452: 0x8133, 0x1453: 0x8133, 0x1454: 0x8133, 0x1455: 0x8133, 0x1456: 0x8133, 0x1457: 0x8133,\n\t0x1458: 0x8133, 0x145b: 0x8133, 0x145c: 0x8133, 0x145d: 0x8133,\n\t0x145e: 0x8133, 0x145f: 0x8133, 0x1460: 0x8133, 0x1461: 0x8133, 0x1463: 0x8133,\n\t0x1464: 0x8133, 0x1466: 0x8133, 0x1467: 0x8133, 0x1468: 0x8133, 0x1469: 0x8133,\n\t0x146a: 0x8133,\n\t0x1470: 0x0290, 0x1471: 0x0293, 0x1472: 0x0296, 0x1473: 0x0299, 0x1474: 0x029c, 0x1475: 0x029f,\n\t0x1476: 0x02a2, 0x1477: 0x02a5, 0x1478: 0x02a8, 0x1479: 0x02ab, 0x147a: 0x02ae, 0x147b: 0x02b1,\n\t0x147c: 0x02b7, 0x147d: 0x02ba, 0x147e: 0x02bd, 0x147f: 0x02c0,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x02c3, 0x1481: 0x02c6, 0x1482: 0x02c9, 0x1483: 0x02cc, 0x1484: 0x02cf, 0x1485: 0x02d2,\n\t0x1486: 0x02d5, 0x1487: 0x02db, 0x1488: 0x02e1, 0x1489: 0x02e4, 0x148a: 0x1736, 0x148b: 0x0302,\n\t0x148c: 0x02ea, 0x148d: 0x02ed, 0x148e: 0x0305, 0x148f: 0x02f9, 0x1490: 0x02ff, 0x1491: 0x0290,\n\t0x1492: 0x0293, 0x1493: 0x0296, 0x1494: 0x0299, 0x1495: 0x029c, 0x1496: 0x029f, 0x1497: 0x02a2,\n\t0x1498: 0x02a5, 0x1499: 0x02a8, 0x149a: 0x02ab, 0x149b: 0x02ae, 0x149c: 0x02b7, 0x149d: 0x02ba,\n\t0x149e: 0x02c0, 0x149f: 0x02c6, 0x14a0: 0x02c9, 0x14a1: 0x02cc, 0x14a2: 0x02cf, 0x14a3: 0x02d2,\n\t0x14a4: 0x02d5, 0x14a5: 0x02d8, 0x14a6: 0x02db, 0x14a7: 0x02f3, 0x14a8: 0x02ea, 0x14a9: 0x02e7,\n\t0x14aa: 0x02f0, 0x14ab: 0x02f6, 0x14ac: 0x1732, 0x14ad: 0x02fc,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x032c, 0x14c1: 0x032f, 0x14c2: 0x033b, 0x14c3: 0x0344, 0x14c5: 0x037d,\n\t0x14c6: 0x034d, 0x14c7: 0x033e, 0x14c8: 0x035c, 0x14c9: 0x0383, 0x14ca: 0x036e, 0x14cb: 0x0371,\n\t0x14cc: 0x0374, 0x14cd: 0x0377, 0x14ce: 0x0350, 0x14cf: 0x0362, 0x14d0: 0x0368, 0x14d1: 0x0356,\n\t0x14d2: 0x036b, 0x14d3: 0x034a, 0x14d4: 0x0353, 0x14d5: 0x0335, 0x14d6: 0x0338, 0x14d7: 0x0341,\n\t0x14d8: 0x0347, 0x14d9: 0x0359, 0x14da: 0x035f, 0x14db: 0x0365, 0x14dc: 0x0386, 0x14dd: 0x03d7,\n\t0x14de: 0x03bf, 0x14df: 0x0389, 0x14e1: 0x032f, 0x14e2: 0x033b,\n\t0x14e4: 0x037a, 0x14e7: 0x033e, 0x14e9: 0x0383,\n\t0x14ea: 0x036e, 0x14eb: 0x0371, 0x14ec: 0x0374, 0x14ed: 0x0377, 0x14ee: 0x0350, 0x14ef: 0x0362,\n\t0x14f0: 0x0368, 0x14f1: 0x0356, 0x14f2: 0x036b, 0x14f4: 0x0353, 0x14f5: 0x0335,\n\t0x14f6: 0x0338, 0x14f7: 0x0341, 0x14f9: 0x0359, 0x14fb: 0x0365,\n\t// Block 0x54, offset 0x1500\n\t0x1502: 0x033b,\n\t0x1507: 0x033e, 0x1509: 0x0383, 0x150b: 0x0371,\n\t0x150d: 0x0377, 0x150e: 0x0350, 0x150f: 0x0362, 0x1511: 0x0356,\n\t0x1512: 0x036b, 0x1514: 0x0353, 0x1517: 0x0341,\n\t0x1519: 0x0359, 0x151b: 0x0365, 0x151d: 0x03d7,\n\t0x151f: 0x0389, 0x1521: 0x032f, 0x1522: 0x033b,\n\t0x1524: 0x037a, 0x1527: 0x033e, 0x1528: 0x035c, 0x1529: 0x0383,\n\t0x152a: 0x036e, 0x152c: 0x0374, 0x152d: 0x0377, 0x152e: 0x0350, 0x152f: 0x0362,\n\t0x1530: 0x0368, 0x1531: 0x0356, 0x1532: 0x036b, 0x1534: 0x0353, 0x1535: 0x0335,\n\t0x1536: 0x0338, 0x1537: 0x0341, 0x1539: 0x0359, 0x153a: 0x035f, 0x153b: 0x0365,\n\t0x153c: 0x0386, 0x153e: 0x03bf,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x032c, 0x1541: 0x032f, 0x1542: 0x033b, 0x1543: 0x0344, 0x1544: 0x037a, 0x1545: 0x037d,\n\t0x1546: 0x034d, 0x1547: 0x033e, 0x1548: 0x035c, 0x1549: 0x0383, 0x154b: 0x0371,\n\t0x154c: 0x0374, 0x154d: 0x0377, 0x154e: 0x0350, 0x154f: 0x0362, 0x1550: 0x0368, 0x1551: 0x0356,\n\t0x1552: 0x036b, 0x1553: 0x034a, 0x1554: 0x0353, 0x1555: 0x0335, 0x1556: 0x0338, 0x1557: 0x0341,\n\t0x1558: 0x0347, 0x1559: 0x0359, 0x155a: 0x035f, 0x155b: 0x0365,\n\t0x1561: 0x032f, 0x1562: 0x033b, 0x1563: 0x0344,\n\t0x1565: 0x037d, 0x1566: 0x034d, 0x1567: 0x033e, 0x1568: 0x035c, 0x1569: 0x0383,\n\t0x156b: 0x0371, 0x156c: 0x0374, 0x156d: 0x0377, 0x156e: 0x0350, 0x156f: 0x0362,\n\t0x1570: 0x0368, 0x1571: 0x0356, 0x1572: 0x036b, 0x1573: 0x034a, 0x1574: 0x0353, 0x1575: 0x0335,\n\t0x1576: 0x0338, 0x1577: 0x0341, 0x1578: 0x0347, 0x1579: 0x0359, 0x157a: 0x035f, 0x157b: 0x0365,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x19a6, 0x1581: 0x19a3, 0x1582: 0x19a9, 0x1583: 0x19cd, 0x1584: 0x19f1, 0x1585: 0x1a15,\n\t0x1586: 0x1a39, 0x1587: 0x1a42, 0x1588: 0x1a48, 0x1589: 0x1a4e, 0x158a: 0x1a54,\n\t0x1590: 0x1bbc, 0x1591: 0x1bc0,\n\t0x1592: 0x1bc4, 0x1593: 0x1bc8, 0x1594: 0x1bcc, 0x1595: 0x1bd0, 0x1596: 0x1bd4, 0x1597: 0x1bd8,\n\t0x1598: 0x1bdc, 0x1599: 0x1be0, 0x159a: 0x1be4, 0x159b: 0x1be8, 0x159c: 0x1bec, 0x159d: 0x1bf0,\n\t0x159e: 0x1bf4, 0x159f: 0x1bf8, 0x15a0: 0x1bfc, 0x15a1: 0x1c00, 0x15a2: 0x1c04, 0x15a3: 0x1c08,\n\t0x15a4: 0x1c0c, 0x15a5: 0x1c10, 0x15a6: 0x1c14, 0x15a7: 0x1c18, 0x15a8: 0x1c1c, 0x15a9: 0x1c20,\n\t0x15aa: 0x2855, 0x15ab: 0x0047, 0x15ac: 0x0065, 0x15ad: 0x1a69, 0x15ae: 0x1ae1,\n\t0x15b0: 0x0043, 0x15b1: 0x0045, 0x15b2: 0x0047, 0x15b3: 0x0049, 0x15b4: 0x004b, 0x15b5: 0x004d,\n\t0x15b6: 0x004f, 0x15b7: 0x0051, 0x15b8: 0x0053, 0x15b9: 0x0055, 0x15ba: 0x0057, 0x15bb: 0x0059,\n\t0x15bc: 0x005b, 0x15bd: 0x005d, 0x15be: 0x005f, 0x15bf: 0x0061,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x27dd, 0x15c1: 0x27f2, 0x15c2: 0x05fe,\n\t0x15d0: 0x0d0a, 0x15d1: 0x0b42,\n\t0x15d2: 0x09ce, 0x15d3: 0x4705, 0x15d4: 0x0816, 0x15d5: 0x0aea, 0x15d6: 0x142a, 0x15d7: 0x0afa,\n\t0x15d8: 0x0822, 0x15d9: 0x0dd2, 0x15da: 0x0faa, 0x15db: 0x0daa, 0x15dc: 0x0922, 0x15dd: 0x0c66,\n\t0x15de: 0x08ba, 0x15df: 0x0db2, 0x15e0: 0x090e, 0x15e1: 0x1212, 0x15e2: 0x107e, 0x15e3: 0x1486,\n\t0x15e4: 0x0ace, 0x15e5: 0x0a06, 0x15e6: 0x0f5e, 0x15e7: 0x0d16, 0x15e8: 0x0d42, 0x15e9: 0x07ba,\n\t0x15ea: 0x07c6, 0x15eb: 0x1506, 0x15ec: 0x0bd6, 0x15ed: 0x07e2, 0x15ee: 0x09ea, 0x15ef: 0x0d36,\n\t0x15f0: 0x14ae, 0x15f1: 0x0d0e, 0x15f2: 0x116a, 0x15f3: 0x11a6, 0x15f4: 0x09f2, 0x15f5: 0x0f3e,\n\t0x15f6: 0x0e06, 0x15f7: 0x0e02, 0x15f8: 0x1092, 0x15f9: 0x0926, 0x15fa: 0x0a52, 0x15fb: 0x153e,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x07f6, 0x1601: 0x07ee, 0x1602: 0x07fe, 0x1603: 0x1774, 0x1604: 0x0842, 0x1605: 0x0852,\n\t0x1606: 0x0856, 0x1607: 0x085e, 0x1608: 0x0866, 0x1609: 0x086a, 0x160a: 0x0876, 0x160b: 0x086e,\n\t0x160c: 0x06ae, 0x160d: 0x1788, 0x160e: 0x088a, 0x160f: 0x088e, 0x1610: 0x0892, 0x1611: 0x08ae,\n\t0x1612: 0x1779, 0x1613: 0x06b2, 0x1614: 0x089a, 0x1615: 0x08ba, 0x1616: 0x1783, 0x1617: 0x08ca,\n\t0x1618: 0x08d2, 0x1619: 0x0832, 0x161a: 0x08da, 0x161b: 0x08de, 0x161c: 0x195e, 0x161d: 0x08fa,\n\t0x161e: 0x0902, 0x161f: 0x06ba, 0x1620: 0x091a, 0x1621: 0x091e, 0x1622: 0x0926, 0x1623: 0x092a,\n\t0x1624: 0x06be, 0x1625: 0x0942, 0x1626: 0x0946, 0x1627: 0x0952, 0x1628: 0x095e, 0x1629: 0x0962,\n\t0x162a: 0x0966, 0x162b: 0x096e, 0x162c: 0x098e, 0x162d: 0x0992, 0x162e: 0x099a, 0x162f: 0x09aa,\n\t0x1630: 0x09b2, 0x1631: 0x09b6, 0x1632: 0x09b6, 0x1633: 0x09b6, 0x1634: 0x1797, 0x1635: 0x0f8e,\n\t0x1636: 0x09ca, 0x1637: 0x09d2, 0x1638: 0x179c, 0x1639: 0x09de, 0x163a: 0x09e6, 0x163b: 0x09ee,\n\t0x163c: 0x0a16, 0x163d: 0x0a02, 0x163e: 0x0a0e, 0x163f: 0x0a12,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x0a1a, 0x1641: 0x0a22, 0x1642: 0x0a26, 0x1643: 0x0a2e, 0x1644: 0x0a36, 0x1645: 0x0a3a,\n\t0x1646: 0x0a3a, 0x1647: 0x0a42, 0x1648: 0x0a4a, 0x1649: 0x0a4e, 0x164a: 0x0a5a, 0x164b: 0x0a7e,\n\t0x164c: 0x0a62, 0x164d: 0x0a82, 0x164e: 0x0a66, 0x164f: 0x0a6e, 0x1650: 0x0906, 0x1651: 0x0aca,\n\t0x1652: 0x0a92, 0x1653: 0x0a96, 0x1654: 0x0a9a, 0x1655: 0x0a8e, 0x1656: 0x0aa2, 0x1657: 0x0a9e,\n\t0x1658: 0x0ab6, 0x1659: 0x17a1, 0x165a: 0x0ad2, 0x165b: 0x0ad6, 0x165c: 0x0ade, 0x165d: 0x0aea,\n\t0x165e: 0x0af2, 0x165f: 0x0b0e, 0x1660: 0x17a6, 0x1661: 0x17ab, 0x1662: 0x0b1a, 0x1663: 0x0b1e,\n\t0x1664: 0x0b22, 0x1665: 0x0b16, 0x1666: 0x0b2a, 0x1667: 0x06c2, 0x1668: 0x06c6, 0x1669: 0x0b32,\n\t0x166a: 0x0b3a, 0x166b: 0x0b3a, 0x166c: 0x17b0, 0x166d: 0x0b56, 0x166e: 0x0b5a, 0x166f: 0x0b5e,\n\t0x1670: 0x0b66, 0x1671: 0x17b5, 0x1672: 0x0b6e, 0x1673: 0x0b72, 0x1674: 0x0c4a, 0x1675: 0x0b7a,\n\t0x1676: 0x06ca, 0x1677: 0x0b86, 0x1678: 0x0b96, 0x1679: 0x0ba2, 0x167a: 0x0b9e, 0x167b: 0x17bf,\n\t0x167c: 0x0baa, 0x167d: 0x17c4, 0x167e: 0x0bb6, 0x167f: 0x0bb2,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x0bba, 0x1681: 0x0bca, 0x1682: 0x0bce, 0x1683: 0x06ce, 0x1684: 0x0bde, 0x1685: 0x0be6,\n\t0x1686: 0x0bea, 0x1687: 0x0bee, 0x1688: 0x06d2, 0x1689: 0x17c9, 0x168a: 0x06d6, 0x168b: 0x0c0a,\n\t0x168c: 0x0c0e, 0x168d: 0x0c12, 0x168e: 0x0c1a, 0x168f: 0x1990, 0x1690: 0x0c32, 0x1691: 0x17d3,\n\t0x1692: 0x17d3, 0x1693: 0x12d2, 0x1694: 0x0c42, 0x1695: 0x0c42, 0x1696: 0x06da, 0x1697: 0x17f6,\n\t0x1698: 0x18c8, 0x1699: 0x0c52, 0x169a: 0x0c5a, 0x169b: 0x06de, 0x169c: 0x0c6e, 0x169d: 0x0c7e,\n\t0x169e: 0x0c82, 0x169f: 0x0c8a, 0x16a0: 0x0c9a, 0x16a1: 0x06e6, 0x16a2: 0x06e2, 0x16a3: 0x0c9e,\n\t0x16a4: 0x17d8, 0x16a5: 0x0ca2, 0x16a6: 0x0cb6, 0x16a7: 0x0cba, 0x16a8: 0x0cbe, 0x16a9: 0x0cba,\n\t0x16aa: 0x0cca, 0x16ab: 0x0cce, 0x16ac: 0x0cde, 0x16ad: 0x0cd6, 0x16ae: 0x0cda, 0x16af: 0x0ce2,\n\t0x16b0: 0x0ce6, 0x16b1: 0x0cea, 0x16b2: 0x0cf6, 0x16b3: 0x0cfa, 0x16b4: 0x0d12, 0x16b5: 0x0d1a,\n\t0x16b6: 0x0d2a, 0x16b7: 0x0d3e, 0x16b8: 0x17e7, 0x16b9: 0x0d3a, 0x16ba: 0x0d2e, 0x16bb: 0x0d46,\n\t0x16bc: 0x0d4e, 0x16bd: 0x0d62, 0x16be: 0x17ec, 0x16bf: 0x0d6a,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x0d5e, 0x16c1: 0x0d56, 0x16c2: 0x06ea, 0x16c3: 0x0d72, 0x16c4: 0x0d7a, 0x16c5: 0x0d82,\n\t0x16c6: 0x0d76, 0x16c7: 0x06ee, 0x16c8: 0x0d92, 0x16c9: 0x0d9a, 0x16ca: 0x17f1, 0x16cb: 0x0dc6,\n\t0x16cc: 0x0dfa, 0x16cd: 0x0dd6, 0x16ce: 0x06fa, 0x16cf: 0x0de2, 0x16d0: 0x06f6, 0x16d1: 0x06f2,\n\t0x16d2: 0x08be, 0x16d3: 0x08c2, 0x16d4: 0x0dfe, 0x16d5: 0x0de6, 0x16d6: 0x12a6, 0x16d7: 0x075e,\n\t0x16d8: 0x0e0a, 0x16d9: 0x0e0e, 0x16da: 0x0e12, 0x16db: 0x0e26, 0x16dc: 0x0e1e, 0x16dd: 0x180a,\n\t0x16de: 0x06fe, 0x16df: 0x0e3a, 0x16e0: 0x0e2e, 0x16e1: 0x0e4a, 0x16e2: 0x0e52, 0x16e3: 0x1814,\n\t0x16e4: 0x0e56, 0x16e5: 0x0e42, 0x16e6: 0x0e5e, 0x16e7: 0x0702, 0x16e8: 0x0e62, 0x16e9: 0x0e66,\n\t0x16ea: 0x0e6a, 0x16eb: 0x0e76, 0x16ec: 0x1819, 0x16ed: 0x0e7e, 0x16ee: 0x0706, 0x16ef: 0x0e8a,\n\t0x16f0: 0x181e, 0x16f1: 0x0e8e, 0x16f2: 0x070a, 0x16f3: 0x0e9a, 0x16f4: 0x0ea6, 0x16f5: 0x0eb2,\n\t0x16f6: 0x0eb6, 0x16f7: 0x1823, 0x16f8: 0x17ba, 0x16f9: 0x1828, 0x16fa: 0x0ed6, 0x16fb: 0x182d,\n\t0x16fc: 0x0ee2, 0x16fd: 0x0eea, 0x16fe: 0x0eda, 0x16ff: 0x0ef6,\n\t// Block 0x5c, offset 0x1700\n\t0x1700: 0x0f06, 0x1701: 0x0f16, 0x1702: 0x0f0a, 0x1703: 0x0f0e, 0x1704: 0x0f1a, 0x1705: 0x0f1e,\n\t0x1706: 0x1832, 0x1707: 0x0f02, 0x1708: 0x0f36, 0x1709: 0x0f3a, 0x170a: 0x070e, 0x170b: 0x0f4e,\n\t0x170c: 0x0f4a, 0x170d: 0x1837, 0x170e: 0x0f2e, 0x170f: 0x0f6a, 0x1710: 0x183c, 0x1711: 0x1841,\n\t0x1712: 0x0f6e, 0x1713: 0x0f82, 0x1714: 0x0f7e, 0x1715: 0x0f7a, 0x1716: 0x0712, 0x1717: 0x0f86,\n\t0x1718: 0x0f96, 0x1719: 0x0f92, 0x171a: 0x0f9e, 0x171b: 0x177e, 0x171c: 0x0fae, 0x171d: 0x1846,\n\t0x171e: 0x0fba, 0x171f: 0x1850, 0x1720: 0x0fce, 0x1721: 0x0fda, 0x1722: 0x0fee, 0x1723: 0x1855,\n\t0x1724: 0x1002, 0x1725: 0x1006, 0x1726: 0x185a, 0x1727: 0x185f, 0x1728: 0x1022, 0x1729: 0x1032,\n\t0x172a: 0x0716, 0x172b: 0x1036, 0x172c: 0x071a, 0x172d: 0x071a, 0x172e: 0x104e, 0x172f: 0x1052,\n\t0x1730: 0x105a, 0x1731: 0x105e, 0x1732: 0x106a, 0x1733: 0x071e, 0x1734: 0x1082, 0x1735: 0x1864,\n\t0x1736: 0x109e, 0x1737: 0x1869, 0x1738: 0x10aa, 0x1739: 0x17ce, 0x173a: 0x10ba, 0x173b: 0x186e,\n\t0x173c: 0x1873, 0x173d: 0x1878, 0x173e: 0x0722, 0x173f: 0x0726,\n\t// Block 0x5d, offset 0x1740\n\t0x1740: 0x10f2, 0x1741: 0x1882, 0x1742: 0x187d, 0x1743: 0x1887, 0x1744: 0x188c, 0x1745: 0x10fa,\n\t0x1746: 0x10fe, 0x1747: 0x10fe, 0x1748: 0x1106, 0x1749: 0x072e, 0x174a: 0x110a, 0x174b: 0x0732,\n\t0x174c: 0x0736, 0x174d: 0x1896, 0x174e: 0x111e, 0x174f: 0x1126, 0x1750: 0x1132, 0x1751: 0x073a,\n\t0x1752: 0x189b, 0x1753: 0x1156, 0x1754: 0x18a0, 0x1755: 0x18a5, 0x1756: 0x1176, 0x1757: 0x118e,\n\t0x1758: 0x073e, 0x1759: 0x1196, 0x175a: 0x119a, 0x175b: 0x119e, 0x175c: 0x18aa, 0x175d: 0x18af,\n\t0x175e: 0x18af, 0x175f: 0x11b6, 0x1760: 0x0742, 0x1761: 0x18b4, 0x1762: 0x11ca, 0x1763: 0x11ce,\n\t0x1764: 0x0746, 0x1765: 0x18b9, 0x1766: 0x11ea, 0x1767: 0x074a, 0x1768: 0x11fa, 0x1769: 0x11f2,\n\t0x176a: 0x1202, 0x176b: 0x18c3, 0x176c: 0x121a, 0x176d: 0x074e, 0x176e: 0x1226, 0x176f: 0x122e,\n\t0x1770: 0x123e, 0x1771: 0x0752, 0x1772: 0x18cd, 0x1773: 0x18d2, 0x1774: 0x0756, 0x1775: 0x18d7,\n\t0x1776: 0x1256, 0x1777: 0x18dc, 0x1778: 0x1262, 0x1779: 0x126e, 0x177a: 0x1276, 0x177b: 0x18e1,\n\t0x177c: 0x18e6, 0x177d: 0x128a, 0x177e: 0x18eb, 0x177f: 0x1292,\n\t// Block 0x5e, offset 0x1780\n\t0x1780: 0x17fb, 0x1781: 0x075a, 0x1782: 0x12aa, 0x1783: 0x12ae, 0x1784: 0x0762, 0x1785: 0x12b2,\n\t0x1786: 0x0b2e, 0x1787: 0x18f0, 0x1788: 0x18f5, 0x1789: 0x1800, 0x178a: 0x1805, 0x178b: 0x12d2,\n\t0x178c: 0x12d6, 0x178d: 0x14ee, 0x178e: 0x0766, 0x178f: 0x1302, 0x1790: 0x12fe, 0x1791: 0x1306,\n\t0x1792: 0x093a, 0x1793: 0x130a, 0x1794: 0x130e, 0x1795: 0x1312, 0x1796: 0x131a, 0x1797: 0x18fa,\n\t0x1798: 0x1316, 0x1799: 0x131e, 0x179a: 0x1332, 0x179b: 0x1336, 0x179c: 0x1322, 0x179d: 0x133a,\n\t0x179e: 0x134e, 0x179f: 0x1362, 0x17a0: 0x132e, 0x17a1: 0x1342, 0x17a2: 0x1346, 0x17a3: 0x134a,\n\t0x17a4: 0x18ff, 0x17a5: 0x1909, 0x17a6: 0x1904, 0x17a7: 0x076a, 0x17a8: 0x136a, 0x17a9: 0x136e,\n\t0x17aa: 0x1376, 0x17ab: 0x191d, 0x17ac: 0x137a, 0x17ad: 0x190e, 0x17ae: 0x076e, 0x17af: 0x0772,\n\t0x17b0: 0x1913, 0x17b1: 0x1918, 0x17b2: 0x0776, 0x17b3: 0x139a, 0x17b4: 0x139e, 0x17b5: 0x13a2,\n\t0x17b6: 0x13a6, 0x17b7: 0x13b2, 0x17b8: 0x13ae, 0x17b9: 0x13ba, 0x17ba: 0x13b6, 0x17bb: 0x13c6,\n\t0x17bc: 0x13be, 0x17bd: 0x13c2, 0x17be: 0x13ca, 0x17bf: 0x077a,\n\t// Block 0x5f, offset 0x17c0\n\t0x17c0: 0x13d2, 0x17c1: 0x13d6, 0x17c2: 0x077e, 0x17c3: 0x13e6, 0x17c4: 0x13ea, 0x17c5: 0x1922,\n\t0x17c6: 0x13f6, 0x17c7: 0x13fa, 0x17c8: 0x0782, 0x17c9: 0x1406, 0x17ca: 0x06b6, 0x17cb: 0x1927,\n\t0x17cc: 0x192c, 0x17cd: 0x0786, 0x17ce: 0x078a, 0x17cf: 0x1432, 0x17d0: 0x144a, 0x17d1: 0x1466,\n\t0x17d2: 0x1476, 0x17d3: 0x1931, 0x17d4: 0x148a, 0x17d5: 0x148e, 0x17d6: 0x14a6, 0x17d7: 0x14b2,\n\t0x17d8: 0x193b, 0x17d9: 0x178d, 0x17da: 0x14be, 0x17db: 0x14ba, 0x17dc: 0x14c6, 0x17dd: 0x1792,\n\t0x17de: 0x14d2, 0x17df: 0x14de, 0x17e0: 0x1940, 0x17e1: 0x1945, 0x17e2: 0x151e, 0x17e3: 0x152a,\n\t0x17e4: 0x1532, 0x17e5: 0x194a, 0x17e6: 0x1536, 0x17e7: 0x1562, 0x17e8: 0x156e, 0x17e9: 0x1572,\n\t0x17ea: 0x156a, 0x17eb: 0x157e, 0x17ec: 0x1582, 0x17ed: 0x194f, 0x17ee: 0x158e, 0x17ef: 0x078e,\n\t0x17f0: 0x1596, 0x17f1: 0x1954, 0x17f2: 0x0792, 0x17f3: 0x15ce, 0x17f4: 0x0bbe, 0x17f5: 0x15e6,\n\t0x17f6: 0x1959, 0x17f7: 0x1963, 0x17f8: 0x0796, 0x17f9: 0x079a, 0x17fa: 0x160e, 0x17fb: 0x1968,\n\t0x17fc: 0x079e, 0x17fd: 0x196d, 0x17fe: 0x1626, 0x17ff: 0x1626,\n\t// Block 0x60, offset 0x1800\n\t0x1800: 0x162e, 0x1801: 0x1972, 0x1802: 0x1646, 0x1803: 0x07a2, 0x1804: 0x1656, 0x1805: 0x1662,\n\t0x1806: 0x166a, 0x1807: 0x1672, 0x1808: 0x07a6, 0x1809: 0x1977, 0x180a: 0x1686, 0x180b: 0x16a2,\n\t0x180c: 0x16ae, 0x180d: 0x07aa, 0x180e: 0x07ae, 0x180f: 0x16b2, 0x1810: 0x197c, 0x1811: 0x07b2,\n\t0x1812: 0x1981, 0x1813: 0x1986, 0x1814: 0x198b, 0x1815: 0x16d6, 0x1816: 0x07b6, 0x1817: 0x16ea,\n\t0x1818: 0x16f2, 0x1819: 0x16f6, 0x181a: 0x16fe, 0x181b: 0x1706, 0x181c: 0x170e, 0x181d: 0x1995,\n}\n\n// nfkcIndex: 22 blocks, 1408 entries, 2816 bytes\n// Block 0 is the zero block.\nvar nfkcIndex = [1408]uint16{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x5f, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x60, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x61, 0xcb: 0x62, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,\n\t0xd0: 0x0a, 0xd1: 0x63, 0xd2: 0x64, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x65,\n\t0xd8: 0x66, 0xd9: 0x0d, 0xdb: 0x67, 0xdc: 0x68, 0xdd: 0x69, 0xdf: 0x6a,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x6b, 0x121: 0x6c, 0x122: 0x6d, 0x123: 0x0e, 0x124: 0x6e, 0x125: 0x6f, 0x126: 0x70, 0x127: 0x71,\n\t0x128: 0x72, 0x129: 0x73, 0x12a: 0x74, 0x12b: 0x75, 0x12c: 0x70, 0x12d: 0x76, 0x12e: 0x77, 0x12f: 0x78,\n\t0x130: 0x74, 0x131: 0x79, 0x132: 0x7a, 0x133: 0x7b, 0x134: 0x7c, 0x135: 0x7d, 0x137: 0x7e,\n\t0x138: 0x7f, 0x139: 0x80, 0x13a: 0x81, 0x13b: 0x82, 0x13c: 0x83, 0x13d: 0x84, 0x13e: 0x85, 0x13f: 0x86,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x87, 0x142: 0x88, 0x143: 0x89, 0x144: 0x8a, 0x145: 0x8b, 0x146: 0x8c, 0x147: 0x8d,\n\t0x14d: 0x8e,\n\t0x15c: 0x8f, 0x15f: 0x90,\n\t0x162: 0x91, 0x164: 0x92,\n\t0x168: 0x93, 0x169: 0x94, 0x16a: 0x95, 0x16b: 0x96, 0x16c: 0x0f, 0x16d: 0x97, 0x16e: 0x98, 0x16f: 0x99,\n\t0x170: 0x9a, 0x173: 0x9b, 0x174: 0x9c, 0x175: 0x10, 0x176: 0x11, 0x177: 0x12,\n\t0x178: 0x13, 0x179: 0x14, 0x17a: 0x15, 0x17b: 0x16, 0x17c: 0x17, 0x17d: 0x18, 0x17e: 0x19, 0x17f: 0x1a,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x9d, 0x181: 0x9e, 0x182: 0x9f, 0x183: 0xa0, 0x184: 0x1b, 0x185: 0x1c, 0x186: 0xa1, 0x187: 0xa2,\n\t0x188: 0xa3, 0x189: 0x1d, 0x18a: 0x1e, 0x18b: 0xa4, 0x18c: 0xa5,\n\t0x191: 0x1f, 0x192: 0x20, 0x193: 0xa6,\n\t0x1a8: 0xa7, 0x1a9: 0xa8, 0x1ab: 0xa9,\n\t0x1b1: 0xaa, 0x1b3: 0xab, 0x1b5: 0xac, 0x1b7: 0xad,\n\t0x1ba: 0xae, 0x1bb: 0xaf, 0x1bc: 0x21, 0x1bd: 0x22, 0x1be: 0x23, 0x1bf: 0xb0,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0xb1, 0x1c1: 0x24, 0x1c2: 0x25, 0x1c3: 0x26, 0x1c4: 0xb2, 0x1c5: 0x27, 0x1c6: 0x28,\n\t0x1c8: 0x29, 0x1c9: 0x2a, 0x1ca: 0x2b, 0x1cb: 0x2c, 0x1cc: 0x2d, 0x1cd: 0x2e, 0x1ce: 0x2f, 0x1cf: 0x30,\n\t// Block 0x8, offset 0x200\n\t0x219: 0xb3, 0x21a: 0xb4, 0x21b: 0xb5, 0x21d: 0xb6, 0x21f: 0xb7,\n\t0x220: 0xb8, 0x223: 0xb9, 0x224: 0xba, 0x225: 0xbb, 0x226: 0xbc, 0x227: 0xbd,\n\t0x22a: 0xbe, 0x22b: 0xbf, 0x22d: 0xc0, 0x22f: 0xc1,\n\t0x230: 0xc2, 0x231: 0xc3, 0x232: 0xc4, 0x233: 0xc5, 0x234: 0xc6, 0x235: 0xc7, 0x236: 0xc8, 0x237: 0xc2,\n\t0x238: 0xc3, 0x239: 0xc4, 0x23a: 0xc5, 0x23b: 0xc6, 0x23c: 0xc7, 0x23d: 0xc8, 0x23e: 0xc2, 0x23f: 0xc3,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xc4, 0x241: 0xc5, 0x242: 0xc6, 0x243: 0xc7, 0x244: 0xc8, 0x245: 0xc2, 0x246: 0xc3, 0x247: 0xc4,\n\t0x248: 0xc5, 0x249: 0xc6, 0x24a: 0xc7, 0x24b: 0xc8, 0x24c: 0xc2, 0x24d: 0xc3, 0x24e: 0xc4, 0x24f: 0xc5,\n\t0x250: 0xc6, 0x251: 0xc7, 0x252: 0xc8, 0x253: 0xc2, 0x254: 0xc3, 0x255: 0xc4, 0x256: 0xc5, 0x257: 0xc6,\n\t0x258: 0xc7, 0x259: 0xc8, 0x25a: 0xc2, 0x25b: 0xc3, 0x25c: 0xc4, 0x25d: 0xc5, 0x25e: 0xc6, 0x25f: 0xc7,\n\t0x260: 0xc8, 0x261: 0xc2, 0x262: 0xc3, 0x263: 0xc4, 0x264: 0xc5, 0x265: 0xc6, 0x266: 0xc7, 0x267: 0xc8,\n\t0x268: 0xc2, 0x269: 0xc3, 0x26a: 0xc4, 0x26b: 0xc5, 0x26c: 0xc6, 0x26d: 0xc7, 0x26e: 0xc8, 0x26f: 0xc2,\n\t0x270: 0xc3, 0x271: 0xc4, 0x272: 0xc5, 0x273: 0xc6, 0x274: 0xc7, 0x275: 0xc8, 0x276: 0xc2, 0x277: 0xc3,\n\t0x278: 0xc4, 0x279: 0xc5, 0x27a: 0xc6, 0x27b: 0xc7, 0x27c: 0xc8, 0x27d: 0xc2, 0x27e: 0xc3, 0x27f: 0xc4,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xc5, 0x281: 0xc6, 0x282: 0xc7, 0x283: 0xc8, 0x284: 0xc2, 0x285: 0xc3, 0x286: 0xc4, 0x287: 0xc5,\n\t0x288: 0xc6, 0x289: 0xc7, 0x28a: 0xc8, 0x28b: 0xc2, 0x28c: 0xc3, 0x28d: 0xc4, 0x28e: 0xc5, 0x28f: 0xc6,\n\t0x290: 0xc7, 0x291: 0xc8, 0x292: 0xc2, 0x293: 0xc3, 0x294: 0xc4, 0x295: 0xc5, 0x296: 0xc6, 0x297: 0xc7,\n\t0x298: 0xc8, 0x299: 0xc2, 0x29a: 0xc3, 0x29b: 0xc4, 0x29c: 0xc5, 0x29d: 0xc6, 0x29e: 0xc7, 0x29f: 0xc8,\n\t0x2a0: 0xc2, 0x2a1: 0xc3, 0x2a2: 0xc4, 0x2a3: 0xc5, 0x2a4: 0xc6, 0x2a5: 0xc7, 0x2a6: 0xc8, 0x2a7: 0xc2,\n\t0x2a8: 0xc3, 0x2a9: 0xc4, 0x2aa: 0xc5, 0x2ab: 0xc6, 0x2ac: 0xc7, 0x2ad: 0xc8, 0x2ae: 0xc2, 0x2af: 0xc3,\n\t0x2b0: 0xc4, 0x2b1: 0xc5, 0x2b2: 0xc6, 0x2b3: 0xc7, 0x2b4: 0xc8, 0x2b5: 0xc2, 0x2b6: 0xc3, 0x2b7: 0xc4,\n\t0x2b8: 0xc5, 0x2b9: 0xc6, 0x2ba: 0xc7, 0x2bb: 0xc8, 0x2bc: 0xc2, 0x2bd: 0xc3, 0x2be: 0xc4, 0x2bf: 0xc5,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xc6, 0x2c1: 0xc7, 0x2c2: 0xc8, 0x2c3: 0xc2, 0x2c4: 0xc3, 0x2c5: 0xc4, 0x2c6: 0xc5, 0x2c7: 0xc6,\n\t0x2c8: 0xc7, 0x2c9: 0xc8, 0x2ca: 0xc2, 0x2cb: 0xc3, 0x2cc: 0xc4, 0x2cd: 0xc5, 0x2ce: 0xc6, 0x2cf: 0xc7,\n\t0x2d0: 0xc8, 0x2d1: 0xc2, 0x2d2: 0xc3, 0x2d3: 0xc4, 0x2d4: 0xc5, 0x2d5: 0xc6, 0x2d6: 0xc7, 0x2d7: 0xc8,\n\t0x2d8: 0xc2, 0x2d9: 0xc3, 0x2da: 0xc4, 0x2db: 0xc5, 0x2dc: 0xc6, 0x2dd: 0xc7, 0x2de: 0xc9,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x31, 0x325: 0x32, 0x326: 0x33, 0x327: 0x34,\n\t0x328: 0x35, 0x329: 0x36, 0x32a: 0x37, 0x32b: 0x38, 0x32c: 0x39, 0x32d: 0x3a, 0x32e: 0x3b, 0x32f: 0x3c,\n\t0x330: 0x3d, 0x331: 0x3e, 0x332: 0x3f, 0x333: 0x40, 0x334: 0x41, 0x335: 0x42, 0x336: 0x43, 0x337: 0x44,\n\t0x338: 0x45, 0x339: 0x46, 0x33a: 0x47, 0x33b: 0x48, 0x33c: 0xca, 0x33d: 0x49, 0x33e: 0x4a, 0x33f: 0x4b,\n\t// Block 0xd, offset 0x340\n\t0x347: 0xcb,\n\t0x34b: 0xcc, 0x34d: 0xcd,\n\t0x35e: 0x4c,\n\t0x368: 0xce, 0x36b: 0xcf,\n\t0x374: 0xd0,\n\t0x37a: 0xd1, 0x37b: 0xd2, 0x37d: 0xd3, 0x37e: 0xd4,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xd5, 0x382: 0xd6, 0x384: 0xd7, 0x385: 0xbc, 0x387: 0xd8,\n\t0x388: 0xd9, 0x38b: 0xda, 0x38c: 0xdb, 0x38d: 0xdc,\n\t0x391: 0xdd, 0x392: 0xde, 0x393: 0xdf, 0x396: 0xe0, 0x397: 0xe1,\n\t0x398: 0xe2, 0x39a: 0xe3, 0x39c: 0xe4,\n\t0x3a0: 0xe5, 0x3a4: 0xe6, 0x3a5: 0xe7, 0x3a7: 0xe8,\n\t0x3a8: 0xe9, 0x3a9: 0xea, 0x3aa: 0xeb,\n\t0x3b0: 0xe2, 0x3b5: 0xec, 0x3b6: 0xed,\n\t0x3bd: 0xee,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xef, 0x3ec: 0xf0,\n\t0x3ff: 0xf1,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xf2,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xf3, 0x446: 0xf4, 0x447: 0xf5,\n\t0x449: 0xf6,\n\t0x450: 0xf7, 0x451: 0xf8, 0x452: 0xf9, 0x453: 0xfa, 0x454: 0xfb, 0x455: 0xfc, 0x456: 0xfd, 0x457: 0xfe,\n\t0x458: 0xff, 0x459: 0x100, 0x45a: 0x4d, 0x45b: 0x101, 0x45c: 0x102, 0x45d: 0x103, 0x45e: 0x104, 0x45f: 0x4e,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x4f, 0x481: 0x50, 0x482: 0x105, 0x484: 0xf0,\n\t0x48a: 0x106, 0x48b: 0x107,\n\t0x493: 0x108,\n\t0x4a3: 0x109, 0x4a5: 0x10a,\n\t0x4b8: 0x51, 0x4b9: 0x52, 0x4ba: 0x53,\n\t// Block 0x13, offset 0x4c0\n\t0x4c4: 0x54, 0x4c5: 0x10b, 0x4c6: 0x10c,\n\t0x4c8: 0x55, 0x4c9: 0x10d,\n\t0x4ef: 0x10e,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x56, 0x521: 0x57, 0x522: 0x58, 0x523: 0x59, 0x524: 0x5a, 0x525: 0x5b, 0x526: 0x5c, 0x527: 0x5d,\n\t0x528: 0x5e,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfkcSparseOffset: 176 entries, 352 bytes\nvar nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1c, 0x26, 0x36, 0x38, 0x3d, 0x48, 0x57, 0x64, 0x6c, 0x71, 0x76, 0x78, 0x7c, 0x84, 0x8b, 0x8e, 0x96, 0x9a, 0x9e, 0xa0, 0xa2, 0xab, 0xaf, 0xb6, 0xbb, 0xbe, 0xc8, 0xcb, 0xd2, 0xda, 0xde, 0xe0, 0xe4, 0xe8, 0xee, 0xff, 0x10b, 0x10d, 0x113, 0x115, 0x117, 0x119, 0x11b, 0x11d, 0x11f, 0x121, 0x124, 0x127, 0x129, 0x12c, 0x12f, 0x133, 0x139, 0x140, 0x149, 0x14b, 0x14e, 0x150, 0x15b, 0x166, 0x174, 0x182, 0x192, 0x1a0, 0x1a7, 0x1ad, 0x1bc, 0x1c0, 0x1c2, 0x1c6, 0x1c8, 0x1cb, 0x1cd, 0x1d0, 0x1d2, 0x1d5, 0x1d7, 0x1d9, 0x1db, 0x1e7, 0x1f1, 0x1fb, 0x1fe, 0x202, 0x204, 0x206, 0x20b, 0x20e, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21f, 0x222, 0x227, 0x229, 0x230, 0x236, 0x23c, 0x244, 0x24a, 0x250, 0x256, 0x25a, 0x25c, 0x25e, 0x260, 0x262, 0x268, 0x26b, 0x26d, 0x26f, 0x271, 0x277, 0x27b, 0x27f, 0x287, 0x28e, 0x291, 0x294, 0x296, 0x299, 0x2a1, 0x2a5, 0x2ac, 0x2af, 0x2b5, 0x2b7, 0x2b9, 0x2bc, 0x2be, 0x2c1, 0x2c6, 0x2c8, 0x2ca, 0x2cc, 0x2ce, 0x2d0, 0x2d3, 0x2d5, 0x2d7, 0x2d9, 0x2db, 0x2dd, 0x2df, 0x2ec, 0x2f6, 0x2f8, 0x2fa, 0x2fe, 0x303, 0x30f, 0x314, 0x31d, 0x323, 0x328, 0x32c, 0x331, 0x335, 0x345, 0x353, 0x361, 0x36f, 0x371, 0x373, 0x375, 0x379, 0x37b, 0x37e, 0x389, 0x38b, 0x395}\n\n// nfkcSparseValues: 919 entries, 3676 bytes\nvar nfkcSparseValues = [919]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x0001, lo: 0xa0, hi: 0xa0},\n\t{value: 0x43b9, lo: 0xa8, hi: 0xa8},\n\t{value: 0x0083, lo: 0xaa, hi: 0xaa},\n\t{value: 0x43a5, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0025, lo: 0xb2, hi: 0xb3},\n\t{value: 0x439b, lo: 0xb4, hi: 0xb4},\n\t{value: 0x0260, lo: 0xb5, hi: 0xb5},\n\t{value: 0x43d2, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0023, lo: 0xb9, hi: 0xb9},\n\t{value: 0x009f, lo: 0xba, hi: 0xba},\n\t{value: 0x234c, lo: 0xbc, hi: 0xbc},\n\t{value: 0x2340, lo: 0xbd, hi: 0xbd},\n\t{value: 0x23e2, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1, offset 0xe\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x4823, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4855, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x12\n\t{value: 0x0004, lo: 0x09},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x0091, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0140, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0095, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00a5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0179, lo: 0xb4, hi: 0xb4},\n\t{value: 0x017f, lo: 0xb5, hi: 0xb5},\n\t{value: 0x018b, lo: 0xb6, hi: 0xb6},\n\t{value: 0x00af, lo: 0xb7, hi: 0xb8},\n\t// Block 0x3, offset 0x1c\n\t{value: 0x000a, lo: 0x09},\n\t{value: 0x43af, lo: 0x98, hi: 0x98},\n\t{value: 0x43b4, lo: 0x99, hi: 0x9a},\n\t{value: 0x43d7, lo: 0x9b, hi: 0x9b},\n\t{value: 0x43a0, lo: 0x9c, hi: 0x9c},\n\t{value: 0x43c3, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0137, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0099, lo: 0xa1, hi: 0xa1},\n\t{value: 0x00a7, lo: 0xa2, hi: 0xa3},\n\t{value: 0x01b8, lo: 0xa4, hi: 0xa4},\n\t// Block 0x4, offset 0x26\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x38e6, lo: 0x90, hi: 0x90},\n\t{value: 0x38f2, lo: 0x91, hi: 0x91},\n\t{value: 0x38e0, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3958, lo: 0x97, hi: 0x97},\n\t{value: 0x3922, lo: 0x9c, hi: 0x9c},\n\t{value: 0x390a, lo: 0x9d, hi: 0x9d},\n\t{value: 0x3934, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x395e, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3964, lo: 0xb7, hi: 0xb7},\n\t// Block 0x5, offset 0x36\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x83, hi: 0x87},\n\t// Block 0x6, offset 0x38\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8114, lo: 0x81, hi: 0x82},\n\t{value: 0x8133, lo: 0x84, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t{value: 0x810e, lo: 0x87, hi: 0x87},\n\t// Block 0x7, offset 0x3d\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x97},\n\t{value: 0x811a, lo: 0x98, hi: 0x98},\n\t{value: 0x811b, lo: 0x99, hi: 0x99},\n\t{value: 0x811c, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3982, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3988, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3994, lo: 0xa4, hi: 0xa4},\n\t{value: 0x398e, lo: 0xa5, hi: 0xa5},\n\t{value: 0x399a, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x8, offset 0x48\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x39ac, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x39a0, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x39a6, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8133, lo: 0x96, hi: 0x9c},\n\t{value: 0x8133, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812e, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812e, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t// Block 0x9, offset 0x57\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x8120, lo: 0x91, hi: 0x91},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812e, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8133, lo: 0xba, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8133, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8133, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa, offset 0x64\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8133, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x812e, lo: 0x82, hi: 0x83},\n\t{value: 0x812e, lo: 0x84, hi: 0x85},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x812e, lo: 0x88, hi: 0x89},\n\t{value: 0x8133, lo: 0x8a, hi: 0x8a},\n\t// Block 0xb, offset 0x6c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0xab, hi: 0xb1},\n\t{value: 0x812e, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8133, lo: 0xb3, hi: 0xb3},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0xc, offset 0x71\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8133, lo: 0x96, hi: 0x99},\n\t{value: 0x8133, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8133, lo: 0xa9, hi: 0xad},\n\t// Block 0xd, offset 0x76\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t// Block 0xe, offset 0x78\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8133, lo: 0x98, hi: 0x98},\n\t{value: 0x812e, lo: 0x99, hi: 0x9b},\n\t{value: 0x8133, lo: 0x9c, hi: 0x9f},\n\t// Block 0xf, offset 0x7c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x4019, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x4021, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4029, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9903, lo: 0xbc, hi: 0xbc},\n\t// Block 0x10, offset 0x84\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x91, hi: 0x91},\n\t{value: 0x812e, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x93, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x94},\n\t{value: 0x465d, lo: 0x98, hi: 0x9f},\n\t// Block 0x11, offset 0x8b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x12, offset 0x8e\n\t{value: 0x0008, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2dd5, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x469d, lo: 0x9c, hi: 0x9d},\n\t{value: 0x46ad, lo: 0x9f, hi: 0x9f},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbe},\n\t// Block 0x13, offset 0x96\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x46d5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x46dd, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x14, offset 0x9a\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x46b5, lo: 0x99, hi: 0x9b},\n\t{value: 0x46cd, lo: 0x9e, hi: 0x9e},\n\t// Block 0x15, offset 0x9e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t// Block 0x16, offset 0xa0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t// Block 0x17, offset 0xa2\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2ded, lo: 0x88, hi: 0x88},\n\t{value: 0x2de5, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2df5, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x46e5, lo: 0x9c, hi: 0x9c},\n\t{value: 0x46ed, lo: 0x9d, hi: 0x9d},\n\t// Block 0x18, offset 0xab\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2dfd, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x19, offset 0xaf\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2e05, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2e15, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2e0d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1a, offset 0xb6\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x4031, lo: 0x88, hi: 0x88},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8121, lo: 0x95, hi: 0x96},\n\t// Block 0x1b, offset 0xbb\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1c, offset 0xbe\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2e1d, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2e25, lo: 0x87, hi: 0x87},\n\t{value: 0x2e2d, lo: 0x88, hi: 0x88},\n\t{value: 0x3091, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2f19, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1d, offset 0xc8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1e, offset 0xcb\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2e35, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2e45, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2e3d, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1f, offset 0xd2\n\t{value: 0x6ab3, lo: 0x07},\n\t{value: 0x9905, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4039, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3099, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2f24, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2e4d, lo: 0x9e, hi: 0x9f},\n\t// Block 0x20, offset 0xda\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2751, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8123, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x21, offset 0xde\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8124, lo: 0x88, hi: 0x8b},\n\t// Block 0x22, offset 0xe0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2766, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8125, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8105, lo: 0xba, hi: 0xba},\n\t// Block 0x23, offset 0xe4\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8126, lo: 0x88, hi: 0x8b},\n\t{value: 0x2758, lo: 0x9c, hi: 0x9c},\n\t{value: 0x275f, lo: 0x9d, hi: 0x9d},\n\t// Block 0x24, offset 0xe8\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x03fe, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812e, lo: 0x98, hi: 0x99},\n\t{value: 0x812e, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812e, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812c, lo: 0xb9, hi: 0xb9},\n\t// Block 0x25, offset 0xee\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2774, lo: 0x83, hi: 0x83},\n\t{value: 0x277b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2782, lo: 0x92, hi: 0x92},\n\t{value: 0x2789, lo: 0x97, hi: 0x97},\n\t{value: 0x2790, lo: 0x9c, hi: 0x9c},\n\t{value: 0x276d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8127, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8128, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4bc5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8129, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4bce, lo: 0xb5, hi: 0xb5},\n\t{value: 0x46f5, lo: 0xb6, hi: 0xb6},\n\t{value: 0x4735, lo: 0xb7, hi: 0xb7},\n\t{value: 0x46fd, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4740, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8128, lo: 0xba, hi: 0xbd},\n\t// Block 0x26, offset 0xff\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8128, lo: 0x80, hi: 0x80},\n\t{value: 0x4bd7, lo: 0x81, hi: 0x81},\n\t{value: 0x8133, lo: 0x82, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0x86, hi: 0x87},\n\t{value: 0x279e, lo: 0x93, hi: 0x93},\n\t{value: 0x27a5, lo: 0x9d, hi: 0x9d},\n\t{value: 0x27ac, lo: 0xa2, hi: 0xa2},\n\t{value: 0x27b3, lo: 0xa7, hi: 0xa7},\n\t{value: 0x27ba, lo: 0xac, hi: 0xac},\n\t{value: 0x2797, lo: 0xb9, hi: 0xb9},\n\t// Block 0x27, offset 0x10b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x86, hi: 0x86},\n\t// Block 0x28, offset 0x10d\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2e55, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x29, offset 0x113\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2a, offset 0x115\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0402, lo: 0xbc, hi: 0xbc},\n\t// Block 0x2b, offset 0x117\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x119\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x11b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x11d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x11f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x121\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x94, hi: 0x95},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x124\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x92, hi: 0x92},\n\t{value: 0x8133, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x127\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x129\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812f, lo: 0xb9, hi: 0xba},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x12c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x97, hi: 0x97},\n\t{value: 0x812e, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x12f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8133, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x133\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812e, lo: 0xb5, hi: 0xba},\n\t{value: 0x8133, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x37, offset 0x139\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x812e, lo: 0x80, hi: 0x80},\n\t{value: 0x8133, lo: 0x81, hi: 0x82},\n\t{value: 0x812e, lo: 0x83, hi: 0x84},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8a},\n\t{value: 0x8133, lo: 0x8b, hi: 0x8e},\n\t// Block 0x38, offset 0x140\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2e9d, lo: 0x80, hi: 0x80},\n\t{value: 0x2ea5, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2ead, lo: 0x83, hi: 0x83},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xab, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xac},\n\t{value: 0x8133, lo: 0xad, hi: 0xb3},\n\t// Block 0x39, offset 0x149\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xaa, hi: 0xab},\n\t// Block 0x3a, offset 0x14b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8105, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3b, offset 0x14e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3c, offset 0x150\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8133, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812e, lo: 0x95, hi: 0x99},\n\t{value: 0x8133, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812e, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8133, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x8133, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3d, offset 0x15b\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0043, lo: 0xac, hi: 0xac},\n\t{value: 0x00d1, lo: 0xad, hi: 0xad},\n\t{value: 0x0045, lo: 0xae, hi: 0xae},\n\t{value: 0x0049, lo: 0xb0, hi: 0xb1},\n\t{value: 0x00ec, lo: 0xb2, hi: 0xb2},\n\t{value: 0x004f, lo: 0xb3, hi: 0xba},\n\t{value: 0x005f, lo: 0xbc, hi: 0xbc},\n\t{value: 0x00fe, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0061, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0065, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3e, offset 0x166\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0001, lo: 0x80, hi: 0x8a},\n\t{value: 0x0532, lo: 0x91, hi: 0x91},\n\t{value: 0x43dc, lo: 0x97, hi: 0x97},\n\t{value: 0x001d, lo: 0xa4, hi: 0xa4},\n\t{value: 0x19a0, lo: 0xa5, hi: 0xa5},\n\t{value: 0x1c8c, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0001, lo: 0xaf, hi: 0xaf},\n\t{value: 0x27c1, lo: 0xb3, hi: 0xb3},\n\t{value: 0x2935, lo: 0xb4, hi: 0xb4},\n\t{value: 0x27c8, lo: 0xb6, hi: 0xb6},\n\t{value: 0x293f, lo: 0xb7, hi: 0xb7},\n\t{value: 0x199a, lo: 0xbc, hi: 0xbc},\n\t{value: 0x43aa, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3f, offset 0x174\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x1a60, lo: 0x87, hi: 0x87},\n\t{value: 0x1a5d, lo: 0x88, hi: 0x88},\n\t{value: 0x199d, lo: 0x89, hi: 0x89},\n\t{value: 0x2ac5, lo: 0x97, hi: 0x97},\n\t{value: 0x0001, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0093, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb4, hi: 0xb9},\n\t{value: 0x0017, lo: 0xba, hi: 0xba},\n\t{value: 0x055e, lo: 0xbb, hi: 0xbb},\n\t{value: 0x003b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0011, lo: 0xbd, hi: 0xbe},\n\t{value: 0x009d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x40, offset 0x182\n\t{value: 0x0002, lo: 0x0f},\n\t{value: 0x0021, lo: 0x80, hi: 0x89},\n\t{value: 0x0017, lo: 0x8a, hi: 0x8a},\n\t{value: 0x055e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x003b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0011, lo: 0x8d, hi: 0x8e},\n\t{value: 0x0083, lo: 0x90, hi: 0x90},\n\t{value: 0x008b, lo: 0x91, hi: 0x91},\n\t{value: 0x009f, lo: 0x92, hi: 0x92},\n\t{value: 0x00b1, lo: 0x93, hi: 0x93},\n\t{value: 0x011f, lo: 0x94, hi: 0x94},\n\t{value: 0x0091, lo: 0x95, hi: 0x95},\n\t{value: 0x0097, lo: 0x96, hi: 0x99},\n\t{value: 0x00a1, lo: 0x9a, hi: 0x9a},\n\t{value: 0x00a7, lo: 0x9b, hi: 0x9c},\n\t{value: 0x1ac9, lo: 0xa8, hi: 0xa8},\n\t// Block 0x41, offset 0x192\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8133, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8133, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8133, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8133, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8133, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812e, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8133, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812e, lo: 0xac, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t// Block 0x42, offset 0x1a0\n\t{value: 0x0007, lo: 0x06},\n\t{value: 0x22b0, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3cfa, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3d08, lo: 0xae, hi: 0xae},\n\t// Block 0x43, offset 0x1a7\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3d0f, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3d16, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x44, offset 0x1ad\n\t{value: 0x017a, lo: 0x0e},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3d24, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3d2b, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3d32, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3d39, lo: 0xa4, hi: 0xa4},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3d40, lo: 0xa6, hi: 0xa6},\n\t{value: 0x27cf, lo: 0xac, hi: 0xad},\n\t{value: 0x27d6, lo: 0xaf, hi: 0xaf},\n\t{value: 0x2953, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x45, offset 0x1bc\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3da9, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3dd3, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3dfd, lo: 0xaa, hi: 0xad},\n\t// Block 0x46, offset 0x1c0\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x0586, lo: 0xa9, hi: 0xaa},\n\t// Block 0x47, offset 0x1c2\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0057, lo: 0x80, hi: 0x8f},\n\t{value: 0x0083, lo: 0x90, hi: 0xa9},\n\t{value: 0x0021, lo: 0xaa, hi: 0xaa},\n\t// Block 0x48, offset 0x1c6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x2ad2, lo: 0x8c, hi: 0x8c},\n\t// Block 0x49, offset 0x1c8\n\t{value: 0x0266, lo: 0x02},\n\t{value: 0x1cbc, lo: 0xb4, hi: 0xb4},\n\t{value: 0x1a5a, lo: 0xb5, hi: 0xb6},\n\t// Block 0x4a, offset 0x1cb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x461e, lo: 0x9c, hi: 0x9c},\n\t// Block 0x4b, offset 0x1cd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0095, lo: 0xbc, hi: 0xbc},\n\t{value: 0x006d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x4c, offset 0x1d0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xaf, hi: 0xb1},\n\t// Block 0x4d, offset 0x1d2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x057a, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x4e, offset 0x1d5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa0, hi: 0xbf},\n\t// Block 0x4f, offset 0x1d7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0ebe, lo: 0x9f, hi: 0x9f},\n\t// Block 0x50, offset 0x1d9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x172a, lo: 0xb3, hi: 0xb3},\n\t// Block 0x51, offset 0x1db\n\t{value: 0x0004, lo: 0x0b},\n\t{value: 0x1692, lo: 0x80, hi: 0x82},\n\t{value: 0x16aa, lo: 0x83, hi: 0x83},\n\t{value: 0x16c2, lo: 0x84, hi: 0x85},\n\t{value: 0x16d2, lo: 0x86, hi: 0x89},\n\t{value: 0x16e6, lo: 0x8a, hi: 0x8c},\n\t{value: 0x16fa, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1702, lo: 0x8e, hi: 0x8e},\n\t{value: 0x170a, lo: 0x8f, hi: 0x90},\n\t{value: 0x1716, lo: 0x91, hi: 0x93},\n\t{value: 0x1726, lo: 0x94, hi: 0x94},\n\t{value: 0x172e, lo: 0x95, hi: 0x95},\n\t// Block 0x52, offset 0x1e7\n\t{value: 0x0004, lo: 0x09},\n\t{value: 0x0001, lo: 0x80, hi: 0x80},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x8134, lo: 0xac, hi: 0xac},\n\t{value: 0x812f, lo: 0xad, hi: 0xad},\n\t{value: 0x8130, lo: 0xae, hi: 0xae},\n\t{value: 0x8130, lo: 0xaf, hi: 0xaf},\n\t{value: 0x05ae, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0982, lo: 0xb8, hi: 0xba},\n\t// Block 0x53, offset 0x1f1\n\t{value: 0x0006, lo: 0x09},\n\t{value: 0x0406, lo: 0xb1, hi: 0xb1},\n\t{value: 0x040a, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4b7c, lo: 0xb3, hi: 0xb3},\n\t{value: 0x040e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4b82, lo: 0xb5, hi: 0xb6},\n\t{value: 0x0412, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0416, lo: 0xb8, hi: 0xb8},\n\t{value: 0x041a, lo: 0xb9, hi: 0xb9},\n\t{value: 0x4b8e, lo: 0xba, hi: 0xbf},\n\t// Block 0x54, offset 0x1fb\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8133, lo: 0xb4, hi: 0xbd},\n\t// Block 0x55, offset 0x1fe\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x02d8, lo: 0x9c, hi: 0x9c},\n\t{value: 0x02de, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9f},\n\t// Block 0x56, offset 0x202\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb1},\n\t// Block 0x57, offset 0x204\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x173e, lo: 0xb0, hi: 0xb0},\n\t// Block 0x58, offset 0x206\n\t{value: 0x0006, lo: 0x04},\n\t{value: 0x0047, lo: 0xb2, hi: 0xb3},\n\t{value: 0x0063, lo: 0xb4, hi: 0xb4},\n\t{value: 0x00dd, lo: 0xb8, hi: 0xb8},\n\t{value: 0x00e9, lo: 0xb9, hi: 0xb9},\n\t// Block 0x59, offset 0x20b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xac, hi: 0xac},\n\t// Block 0x5a, offset 0x20e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x84, hi: 0x84},\n\t{value: 0x8133, lo: 0xa0, hi: 0xb1},\n\t// Block 0x5b, offset 0x211\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xab, hi: 0xad},\n\t// Block 0x5c, offset 0x213\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x93, hi: 0x93},\n\t// Block 0x5d, offset 0x215\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0xb3, hi: 0xb3},\n\t// Block 0x5e, offset 0x217\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t// Block 0x5f, offset 0x219\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8133, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812e, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8133, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8133, lo: 0xbe, hi: 0xbf},\n\t// Block 0x60, offset 0x21f\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x81, hi: 0x81},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t// Block 0x61, offset 0x222\n\t{value: 0x000c, lo: 0x04},\n\t{value: 0x173a, lo: 0x9c, hi: 0x9d},\n\t{value: 0x014f, lo: 0x9e, hi: 0x9e},\n\t{value: 0x174a, lo: 0x9f, hi: 0x9f},\n\t{value: 0x01a6, lo: 0xa9, hi: 0xa9},\n\t// Block 0x62, offset 0x227\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xad, hi: 0xad},\n\t// Block 0x63, offset 0x229\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x64, offset 0x230\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x65, offset 0x236\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x66, offset 0x23c\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x67, offset 0x244\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x68, offset 0x24a\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x69, offset 0x250\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x6a, offset 0x256\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x6b, offset 0x25a\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0003, lo: 0x81, hi: 0xbf},\n\t// Block 0x6c, offset 0x25c\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbd},\n\t// Block 0x6d, offset 0x25e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xa0, hi: 0xa0},\n\t// Block 0x6e, offset 0x260\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb6, hi: 0xba},\n\t// Block 0x6f, offset 0x262\n\t{value: 0x002d, lo: 0x05},\n\t{value: 0x812e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8133, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x70, offset 0x268\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812e, lo: 0xa6, hi: 0xa6},\n\t// Block 0x71, offset 0x26b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xa4, hi: 0xa7},\n\t// Block 0x72, offset 0x26d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xab, hi: 0xac},\n\t// Block 0x73, offset 0x26f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0xbd, hi: 0xbf},\n\t// Block 0x74, offset 0x271\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812e, lo: 0x86, hi: 0x87},\n\t{value: 0x8133, lo: 0x88, hi: 0x8a},\n\t{value: 0x812e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8133, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812e, lo: 0x8d, hi: 0x90},\n\t// Block 0x75, offset 0x277\n\t{value: 0x0005, lo: 0x03},\n\t{value: 0x8133, lo: 0x82, hi: 0x82},\n\t{value: 0x812e, lo: 0x83, hi: 0x84},\n\t{value: 0x812e, lo: 0x85, hi: 0x85},\n\t// Block 0x76, offset 0x27b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x86, hi: 0x86},\n\t{value: 0x8105, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x77, offset 0x27f\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4379, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4383, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x438d, lo: 0xab, hi: 0xab},\n\t{value: 0x8105, lo: 0xb9, hi: 0xba},\n\t// Block 0x78, offset 0x287\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8133, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2eb5, lo: 0xae, hi: 0xae},\n\t{value: 0x2ebf, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8105, lo: 0xb3, hi: 0xb4},\n\t// Block 0x79, offset 0x28e\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x80, hi: 0x80},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0x7a, offset 0x291\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8103, lo: 0xb6, hi: 0xb6},\n\t// Block 0x7b, offset 0x294\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8103, lo: 0xa9, hi: 0xaa},\n\t// Block 0x7c, offset 0x296\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0xbb, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7d, offset 0x299\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2ec9, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2ed3, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8105, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8133, lo: 0xa6, hi: 0xac},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb4},\n\t// Block 0x7e, offset 0x2a1\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x86, hi: 0x86},\n\t{value: 0x8133, lo: 0x9e, hi: 0x9e},\n\t// Block 0x7f, offset 0x2a5\n\t{value: 0x6a23, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2ee7, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2edd, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2ef1, lo: 0xbe, hi: 0xbe},\n\t// Block 0x80, offset 0x2ac\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0x82, hi: 0x82},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x81, offset 0x2af\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2efb, lo: 0xba, hi: 0xba},\n\t{value: 0x2f05, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x82, offset 0x2b5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x80, hi: 0x80},\n\t// Block 0x83, offset 0x2b7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xbf, hi: 0xbf},\n\t// Block 0x84, offset 0x2b9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8103, lo: 0xb7, hi: 0xb7},\n\t// Block 0x85, offset 0x2bc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xab, hi: 0xab},\n\t// Block 0x86, offset 0x2be\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8105, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8103, lo: 0xba, hi: 0xba},\n\t// Block 0x87, offset 0x2c1\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb5, hi: 0xb5},\n\t{value: 0x2f0f, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8105, lo: 0xbd, hi: 0xbe},\n\t// Block 0x88, offset 0x2c6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8103, lo: 0x83, hi: 0x83},\n\t// Block 0x89, offset 0x2c8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xa0, hi: 0xa0},\n\t// Block 0x8a, offset 0x2ca\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0xb4, hi: 0xb4},\n\t// Block 0x8b, offset 0x2cc\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x87, hi: 0x87},\n\t// Block 0x8c, offset 0x2ce\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x99, hi: 0x99},\n\t// Block 0x8d, offset 0x2d0\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8103, lo: 0x82, hi: 0x82},\n\t{value: 0x8105, lo: 0x84, hi: 0x85},\n\t// Block 0x8e, offset 0x2d3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x97, hi: 0x97},\n\t// Block 0x8f, offset 0x2d5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8105, lo: 0x81, hi: 0x82},\n\t// Block 0x90, offset 0x2d7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x91, offset 0x2d9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xb0, hi: 0xb6},\n\t// Block 0x92, offset 0x2db\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb0, hi: 0xb1},\n\t// Block 0x93, offset 0x2dd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x94, offset 0x2df\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x470d, lo: 0x9e, hi: 0x9e},\n\t{value: 0x4717, lo: 0x9f, hi: 0x9f},\n\t{value: 0x474b, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4759, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4767, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4775, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4783, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812c, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8131, lo: 0xad, hi: 0xad},\n\t{value: 0x812c, lo: 0xae, hi: 0xb2},\n\t{value: 0x812e, lo: 0xbb, hi: 0xbf},\n\t// Block 0x95, offset 0x2ec\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812e, lo: 0x80, hi: 0x82},\n\t{value: 0x8133, lo: 0x85, hi: 0x89},\n\t{value: 0x812e, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8133, lo: 0xaa, hi: 0xad},\n\t{value: 0x4721, lo: 0xbb, hi: 0xbb},\n\t{value: 0x472b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4791, lo: 0xbd, hi: 0xbd},\n\t{value: 0x47ad, lo: 0xbe, hi: 0xbe},\n\t{value: 0x479f, lo: 0xbf, hi: 0xbf},\n\t// Block 0x96, offset 0x2f6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x47bb, lo: 0x80, hi: 0x80},\n\t// Block 0x97, offset 0x2f8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x82, hi: 0x84},\n\t// Block 0x98, offset 0x2fa\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0043, lo: 0x80, hi: 0x99},\n\t{value: 0x0083, lo: 0x9a, hi: 0xb3},\n\t{value: 0x0043, lo: 0xb4, hi: 0xbf},\n\t// Block 0x99, offset 0x2fe\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x005b, lo: 0x80, hi: 0x8d},\n\t{value: 0x0083, lo: 0x8e, hi: 0x94},\n\t{value: 0x0093, lo: 0x96, hi: 0xa7},\n\t{value: 0x0043, lo: 0xa8, hi: 0xbf},\n\t// Block 0x9a, offset 0x303\n\t{value: 0x0002, lo: 0x0b},\n\t{value: 0x0073, lo: 0x80, hi: 0x81},\n\t{value: 0x0083, lo: 0x82, hi: 0x9b},\n\t{value: 0x0043, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0047, lo: 0x9e, hi: 0x9f},\n\t{value: 0x004f, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0055, lo: 0xa5, hi: 0xa6},\n\t{value: 0x005d, lo: 0xa9, hi: 0xac},\n\t{value: 0x0067, lo: 0xae, hi: 0xb5},\n\t{value: 0x0083, lo: 0xb6, hi: 0xb9},\n\t{value: 0x008d, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0091, lo: 0xbd, hi: 0xbf},\n\t// Block 0x9b, offset 0x30f\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x0097, lo: 0x80, hi: 0x83},\n\t{value: 0x00a1, lo: 0x85, hi: 0x8f},\n\t{value: 0x0043, lo: 0x90, hi: 0xa9},\n\t{value: 0x0083, lo: 0xaa, hi: 0xbf},\n\t// Block 0x9c, offset 0x314\n\t{value: 0x0002, lo: 0x08},\n\t{value: 0x00af, lo: 0x80, hi: 0x83},\n\t{value: 0x0043, lo: 0x84, hi: 0x85},\n\t{value: 0x0049, lo: 0x87, hi: 0x8a},\n\t{value: 0x0055, lo: 0x8d, hi: 0x94},\n\t{value: 0x0067, lo: 0x96, hi: 0x9c},\n\t{value: 0x0083, lo: 0x9e, hi: 0xb7},\n\t{value: 0x0043, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0049, lo: 0xbb, hi: 0xbe},\n\t// Block 0x9d, offset 0x31d\n\t{value: 0x0002, lo: 0x05},\n\t{value: 0x0053, lo: 0x80, hi: 0x84},\n\t{value: 0x005f, lo: 0x86, hi: 0x86},\n\t{value: 0x0067, lo: 0x8a, hi: 0x90},\n\t{value: 0x0083, lo: 0x92, hi: 0xab},\n\t{value: 0x0043, lo: 0xac, hi: 0xbf},\n\t// Block 0x9e, offset 0x323\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x006b, lo: 0x80, hi: 0x85},\n\t{value: 0x0083, lo: 0x86, hi: 0x9f},\n\t{value: 0x0043, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0083, lo: 0xba, hi: 0xbf},\n\t// Block 0x9f, offset 0x328\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x008f, lo: 0x80, hi: 0x93},\n\t{value: 0x0043, lo: 0x94, hi: 0xad},\n\t{value: 0x0083, lo: 0xae, hi: 0xbf},\n\t// Block 0xa0, offset 0x32c\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x00a7, lo: 0x80, hi: 0x87},\n\t{value: 0x0043, lo: 0x88, hi: 0xa1},\n\t{value: 0x0083, lo: 0xa2, hi: 0xbb},\n\t{value: 0x0043, lo: 0xbc, hi: 0xbf},\n\t// Block 0xa1, offset 0x331\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x004b, lo: 0x80, hi: 0x95},\n\t{value: 0x0083, lo: 0x96, hi: 0xaf},\n\t{value: 0x0043, lo: 0xb0, hi: 0xbf},\n\t// Block 0xa2, offset 0x335\n\t{value: 0x0003, lo: 0x0f},\n\t{value: 0x023c, lo: 0x80, hi: 0x80},\n\t{value: 0x0556, lo: 0x81, hi: 0x81},\n\t{value: 0x023f, lo: 0x82, hi: 0x9a},\n\t{value: 0x0552, lo: 0x9b, hi: 0x9b},\n\t{value: 0x024b, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0254, lo: 0x9d, hi: 0x9d},\n\t{value: 0x025a, lo: 0x9e, hi: 0x9e},\n\t{value: 0x027e, lo: 0x9f, hi: 0x9f},\n\t{value: 0x026f, lo: 0xa0, hi: 0xa0},\n\t{value: 0x026c, lo: 0xa1, hi: 0xa1},\n\t{value: 0x01f7, lo: 0xa2, hi: 0xb2},\n\t{value: 0x020c, lo: 0xb3, hi: 0xb3},\n\t{value: 0x022a, lo: 0xb4, hi: 0xba},\n\t{value: 0x0556, lo: 0xbb, hi: 0xbb},\n\t{value: 0x023f, lo: 0xbc, hi: 0xbf},\n\t// Block 0xa3, offset 0x345\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x024b, lo: 0x80, hi: 0x94},\n\t{value: 0x0552, lo: 0x95, hi: 0x95},\n\t{value: 0x024b, lo: 0x96, hi: 0x96},\n\t{value: 0x0254, lo: 0x97, hi: 0x97},\n\t{value: 0x025a, lo: 0x98, hi: 0x98},\n\t{value: 0x027e, lo: 0x99, hi: 0x99},\n\t{value: 0x026f, lo: 0x9a, hi: 0x9a},\n\t{value: 0x026c, lo: 0x9b, hi: 0x9b},\n\t{value: 0x01f7, lo: 0x9c, hi: 0xac},\n\t{value: 0x020c, lo: 0xad, hi: 0xad},\n\t{value: 0x022a, lo: 0xae, hi: 0xb4},\n\t{value: 0x0556, lo: 0xb5, hi: 0xb5},\n\t{value: 0x023f, lo: 0xb6, hi: 0xbf},\n\t// Block 0xa4, offset 0x353\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x025d, lo: 0x80, hi: 0x8e},\n\t{value: 0x0552, lo: 0x8f, hi: 0x8f},\n\t{value: 0x024b, lo: 0x90, hi: 0x90},\n\t{value: 0x0254, lo: 0x91, hi: 0x91},\n\t{value: 0x025a, lo: 0x92, hi: 0x92},\n\t{value: 0x027e, lo: 0x93, hi: 0x93},\n\t{value: 0x026f, lo: 0x94, hi: 0x94},\n\t{value: 0x026c, lo: 0x95, hi: 0x95},\n\t{value: 0x01f7, lo: 0x96, hi: 0xa6},\n\t{value: 0x020c, lo: 0xa7, hi: 0xa7},\n\t{value: 0x022a, lo: 0xa8, hi: 0xae},\n\t{value: 0x0556, lo: 0xaf, hi: 0xaf},\n\t{value: 0x023f, lo: 0xb0, hi: 0xbf},\n\t// Block 0xa5, offset 0x361\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x026f, lo: 0x80, hi: 0x88},\n\t{value: 0x0552, lo: 0x89, hi: 0x89},\n\t{value: 0x024b, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0254, lo: 0x8b, hi: 0x8b},\n\t{value: 0x025a, lo: 0x8c, hi: 0x8c},\n\t{value: 0x027e, lo: 0x8d, hi: 0x8d},\n\t{value: 0x026f, lo: 0x8e, hi: 0x8e},\n\t{value: 0x026c, lo: 0x8f, hi: 0x8f},\n\t{value: 0x01f7, lo: 0x90, hi: 0xa0},\n\t{value: 0x020c, lo: 0xa1, hi: 0xa1},\n\t{value: 0x022a, lo: 0xa2, hi: 0xa8},\n\t{value: 0x0556, lo: 0xa9, hi: 0xa9},\n\t{value: 0x023f, lo: 0xaa, hi: 0xbf},\n\t// Block 0xa6, offset 0x36f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0x8f, hi: 0x8f},\n\t// Block 0xa7, offset 0x371\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xae, hi: 0xae},\n\t// Block 0xa8, offset 0x373\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8133, lo: 0xac, hi: 0xaf},\n\t// Block 0xa9, offset 0x375\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8134, lo: 0xac, hi: 0xad},\n\t{value: 0x812e, lo: 0xae, hi: 0xae},\n\t{value: 0x8133, lo: 0xaf, hi: 0xaf},\n\t// Block 0xaa, offset 0x379\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812e, lo: 0x90, hi: 0x96},\n\t// Block 0xab, offset 0x37b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8133, lo: 0x84, hi: 0x89},\n\t{value: 0x8103, lo: 0x8a, hi: 0x8a},\n\t// Block 0xac, offset 0x37e\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0063, lo: 0x80, hi: 0x89},\n\t{value: 0x1a7e, lo: 0x8a, hi: 0x8a},\n\t{value: 0x1ab1, lo: 0x8b, hi: 0x8b},\n\t{value: 0x1acc, lo: 0x8c, hi: 0x8c},\n\t{value: 0x1ad2, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1cf0, lo: 0x8e, hi: 0x8e},\n\t{value: 0x1ade, lo: 0x8f, hi: 0x8f},\n\t{value: 0x1aa8, lo: 0xaa, hi: 0xaa},\n\t{value: 0x1aab, lo: 0xab, hi: 0xab},\n\t{value: 0x1aae, lo: 0xac, hi: 0xac},\n\t// Block 0xad, offset 0x389\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x1a6c, lo: 0x90, hi: 0x90},\n\t// Block 0xae, offset 0x38b\n\t{value: 0x0028, lo: 0x09},\n\t{value: 0x2999, lo: 0x80, hi: 0x80},\n\t{value: 0x295d, lo: 0x81, hi: 0x81},\n\t{value: 0x2967, lo: 0x82, hi: 0x82},\n\t{value: 0x297b, lo: 0x83, hi: 0x84},\n\t{value: 0x2985, lo: 0x85, hi: 0x86},\n\t{value: 0x2971, lo: 0x87, hi: 0x87},\n\t{value: 0x298f, lo: 0x88, hi: 0x88},\n\t{value: 0x0c6a, lo: 0x90, hi: 0x90},\n\t{value: 0x09e2, lo: 0x91, hi: 0x91},\n\t// Block 0xaf, offset 0x395\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb9},\n}\n\n// recompMap: 7528 bytes (entries only)\nvar recompMap map[uint32]rune\nvar recompMapOnce sync.Once\n\nconst recompMapPacked = \"\" +\n\t\"\\x00A\\x03\\x00\\x00\\x00\\x00\\xc0\" + // 0x00410300: 0x000000C0\n\t\"\\x00A\\x03\\x01\\x00\\x00\\x00\\xc1\" + // 0x00410301: 0x000000C1\n\t\"\\x00A\\x03\\x02\\x00\\x00\\x00\\xc2\" + // 0x00410302: 0x000000C2\n\t\"\\x00A\\x03\\x03\\x00\\x00\\x00\\xc3\" + // 0x00410303: 0x000000C3\n\t\"\\x00A\\x03\\b\\x00\\x00\\x00\\xc4\" + // 0x00410308: 0x000000C4\n\t\"\\x00A\\x03\\n\\x00\\x00\\x00\\xc5\" + // 0x0041030A: 0x000000C5\n\t\"\\x00C\\x03'\\x00\\x00\\x00\\xc7\" + // 0x00430327: 0x000000C7\n\t\"\\x00E\\x03\\x00\\x00\\x00\\x00\\xc8\" + // 0x00450300: 0x000000C8\n\t\"\\x00E\\x03\\x01\\x00\\x00\\x00\\xc9\" + // 0x00450301: 0x000000C9\n\t\"\\x00E\\x03\\x02\\x00\\x00\\x00\\xca\" + // 0x00450302: 0x000000CA\n\t\"\\x00E\\x03\\b\\x00\\x00\\x00\\xcb\" + // 0x00450308: 0x000000CB\n\t\"\\x00I\\x03\\x00\\x00\\x00\\x00\\xcc\" + // 0x00490300: 0x000000CC\n\t\"\\x00I\\x03\\x01\\x00\\x00\\x00\\xcd\" + // 0x00490301: 0x000000CD\n\t\"\\x00I\\x03\\x02\\x00\\x00\\x00\\xce\" + // 0x00490302: 0x000000CE\n\t\"\\x00I\\x03\\b\\x00\\x00\\x00\\xcf\" + // 0x00490308: 0x000000CF\n\t\"\\x00N\\x03\\x03\\x00\\x00\\x00\\xd1\" + // 0x004E0303: 0x000000D1\n\t\"\\x00O\\x03\\x00\\x00\\x00\\x00\\xd2\" + // 0x004F0300: 0x000000D2\n\t\"\\x00O\\x03\\x01\\x00\\x00\\x00\\xd3\" + // 0x004F0301: 0x000000D3\n\t\"\\x00O\\x03\\x02\\x00\\x00\\x00\\xd4\" + // 0x004F0302: 0x000000D4\n\t\"\\x00O\\x03\\x03\\x00\\x00\\x00\\xd5\" + // 0x004F0303: 0x000000D5\n\t\"\\x00O\\x03\\b\\x00\\x00\\x00\\xd6\" + // 0x004F0308: 0x000000D6\n\t\"\\x00U\\x03\\x00\\x00\\x00\\x00\\xd9\" + // 0x00550300: 0x000000D9\n\t\"\\x00U\\x03\\x01\\x00\\x00\\x00\\xda\" + // 0x00550301: 0x000000DA\n\t\"\\x00U\\x03\\x02\\x00\\x00\\x00\\xdb\" + // 0x00550302: 0x000000DB\n\t\"\\x00U\\x03\\b\\x00\\x00\\x00\\xdc\" + // 0x00550308: 0x000000DC\n\t\"\\x00Y\\x03\\x01\\x00\\x00\\x00\\xdd\" + // 0x00590301: 0x000000DD\n\t\"\\x00a\\x03\\x00\\x00\\x00\\x00\\xe0\" + // 0x00610300: 0x000000E0\n\t\"\\x00a\\x03\\x01\\x00\\x00\\x00\\xe1\" + // 0x00610301: 0x000000E1\n\t\"\\x00a\\x03\\x02\\x00\\x00\\x00\\xe2\" + // 0x00610302: 0x000000E2\n\t\"\\x00a\\x03\\x03\\x00\\x00\\x00\\xe3\" + // 0x00610303: 0x000000E3\n\t\"\\x00a\\x03\\b\\x00\\x00\\x00\\xe4\" + // 0x00610308: 0x000000E4\n\t\"\\x00a\\x03\\n\\x00\\x00\\x00\\xe5\" + // 0x0061030A: 0x000000E5\n\t\"\\x00c\\x03'\\x00\\x00\\x00\\xe7\" + // 0x00630327: 0x000000E7\n\t\"\\x00e\\x03\\x00\\x00\\x00\\x00\\xe8\" + // 0x00650300: 0x000000E8\n\t\"\\x00e\\x03\\x01\\x00\\x00\\x00\\xe9\" + // 0x00650301: 0x000000E9\n\t\"\\x00e\\x03\\x02\\x00\\x00\\x00\\xea\" + // 0x00650302: 0x000000EA\n\t\"\\x00e\\x03\\b\\x00\\x00\\x00\\xeb\" + // 0x00650308: 0x000000EB\n\t\"\\x00i\\x03\\x00\\x00\\x00\\x00\\xec\" + // 0x00690300: 0x000000EC\n\t\"\\x00i\\x03\\x01\\x00\\x00\\x00\\xed\" + // 0x00690301: 0x000000ED\n\t\"\\x00i\\x03\\x02\\x00\\x00\\x00\\xee\" + // 0x00690302: 0x000000EE\n\t\"\\x00i\\x03\\b\\x00\\x00\\x00\\xef\" + // 0x00690308: 0x000000EF\n\t\"\\x00n\\x03\\x03\\x00\\x00\\x00\\xf1\" + // 0x006E0303: 0x000000F1\n\t\"\\x00o\\x03\\x00\\x00\\x00\\x00\\xf2\" + // 0x006F0300: 0x000000F2\n\t\"\\x00o\\x03\\x01\\x00\\x00\\x00\\xf3\" + // 0x006F0301: 0x000000F3\n\t\"\\x00o\\x03\\x02\\x00\\x00\\x00\\xf4\" + // 0x006F0302: 0x000000F4\n\t\"\\x00o\\x03\\x03\\x00\\x00\\x00\\xf5\" + // 0x006F0303: 0x000000F5\n\t\"\\x00o\\x03\\b\\x00\\x00\\x00\\xf6\" + // 0x006F0308: 0x000000F6\n\t\"\\x00u\\x03\\x00\\x00\\x00\\x00\\xf9\" + // 0x00750300: 0x000000F9\n\t\"\\x00u\\x03\\x01\\x00\\x00\\x00\\xfa\" + // 0x00750301: 0x000000FA\n\t\"\\x00u\\x03\\x02\\x00\\x00\\x00\\xfb\" + // 0x00750302: 0x000000FB\n\t\"\\x00u\\x03\\b\\x00\\x00\\x00\\xfc\" + // 0x00750308: 0x000000FC\n\t\"\\x00y\\x03\\x01\\x00\\x00\\x00\\xfd\" + // 0x00790301: 0x000000FD\n\t\"\\x00y\\x03\\b\\x00\\x00\\x00\\xff\" + // 0x00790308: 0x000000FF\n\t\"\\x00A\\x03\\x04\\x00\\x00\\x01\\x00\" + // 0x00410304: 0x00000100\n\t\"\\x00a\\x03\\x04\\x00\\x00\\x01\\x01\" + // 0x00610304: 0x00000101\n\t\"\\x00A\\x03\\x06\\x00\\x00\\x01\\x02\" + // 0x00410306: 0x00000102\n\t\"\\x00a\\x03\\x06\\x00\\x00\\x01\\x03\" + // 0x00610306: 0x00000103\n\t\"\\x00A\\x03(\\x00\\x00\\x01\\x04\" + // 0x00410328: 0x00000104\n\t\"\\x00a\\x03(\\x00\\x00\\x01\\x05\" + // 0x00610328: 0x00000105\n\t\"\\x00C\\x03\\x01\\x00\\x00\\x01\\x06\" + // 0x00430301: 0x00000106\n\t\"\\x00c\\x03\\x01\\x00\\x00\\x01\\a\" + // 0x00630301: 0x00000107\n\t\"\\x00C\\x03\\x02\\x00\\x00\\x01\\b\" + // 0x00430302: 0x00000108\n\t\"\\x00c\\x03\\x02\\x00\\x00\\x01\\t\" + // 0x00630302: 0x00000109\n\t\"\\x00C\\x03\\a\\x00\\x00\\x01\\n\" + // 0x00430307: 0x0000010A\n\t\"\\x00c\\x03\\a\\x00\\x00\\x01\\v\" + // 0x00630307: 0x0000010B\n\t\"\\x00C\\x03\\f\\x00\\x00\\x01\\f\" + // 0x0043030C: 0x0000010C\n\t\"\\x00c\\x03\\f\\x00\\x00\\x01\\r\" + // 0x0063030C: 0x0000010D\n\t\"\\x00D\\x03\\f\\x00\\x00\\x01\\x0e\" + // 0x0044030C: 0x0000010E\n\t\"\\x00d\\x03\\f\\x00\\x00\\x01\\x0f\" + // 0x0064030C: 0x0000010F\n\t\"\\x00E\\x03\\x04\\x00\\x00\\x01\\x12\" + // 0x00450304: 0x00000112\n\t\"\\x00e\\x03\\x04\\x00\\x00\\x01\\x13\" + // 0x00650304: 0x00000113\n\t\"\\x00E\\x03\\x06\\x00\\x00\\x01\\x14\" + // 0x00450306: 0x00000114\n\t\"\\x00e\\x03\\x06\\x00\\x00\\x01\\x15\" + // 0x00650306: 0x00000115\n\t\"\\x00E\\x03\\a\\x00\\x00\\x01\\x16\" + // 0x00450307: 0x00000116\n\t\"\\x00e\\x03\\a\\x00\\x00\\x01\\x17\" + // 0x00650307: 0x00000117\n\t\"\\x00E\\x03(\\x00\\x00\\x01\\x18\" + // 0x00450328: 0x00000118\n\t\"\\x00e\\x03(\\x00\\x00\\x01\\x19\" + // 0x00650328: 0x00000119\n\t\"\\x00E\\x03\\f\\x00\\x00\\x01\\x1a\" + // 0x0045030C: 0x0000011A\n\t\"\\x00e\\x03\\f\\x00\\x00\\x01\\x1b\" + // 0x0065030C: 0x0000011B\n\t\"\\x00G\\x03\\x02\\x00\\x00\\x01\\x1c\" + // 0x00470302: 0x0000011C\n\t\"\\x00g\\x03\\x02\\x00\\x00\\x01\\x1d\" + // 0x00670302: 0x0000011D\n\t\"\\x00G\\x03\\x06\\x00\\x00\\x01\\x1e\" + // 0x00470306: 0x0000011E\n\t\"\\x00g\\x03\\x06\\x00\\x00\\x01\\x1f\" + // 0x00670306: 0x0000011F\n\t\"\\x00G\\x03\\a\\x00\\x00\\x01 \" + // 0x00470307: 0x00000120\n\t\"\\x00g\\x03\\a\\x00\\x00\\x01!\" + // 0x00670307: 0x00000121\n\t\"\\x00G\\x03'\\x00\\x00\\x01\\\"\" + // 0x00470327: 0x00000122\n\t\"\\x00g\\x03'\\x00\\x00\\x01#\" + // 0x00670327: 0x00000123\n\t\"\\x00H\\x03\\x02\\x00\\x00\\x01$\" + // 0x00480302: 0x00000124\n\t\"\\x00h\\x03\\x02\\x00\\x00\\x01%\" + // 0x00680302: 0x00000125\n\t\"\\x00I\\x03\\x03\\x00\\x00\\x01(\" + // 0x00490303: 0x00000128\n\t\"\\x00i\\x03\\x03\\x00\\x00\\x01)\" + // 0x00690303: 0x00000129\n\t\"\\x00I\\x03\\x04\\x00\\x00\\x01*\" + // 0x00490304: 0x0000012A\n\t\"\\x00i\\x03\\x04\\x00\\x00\\x01+\" + // 0x00690304: 0x0000012B\n\t\"\\x00I\\x03\\x06\\x00\\x00\\x01,\" + // 0x00490306: 0x0000012C\n\t\"\\x00i\\x03\\x06\\x00\\x00\\x01-\" + // 0x00690306: 0x0000012D\n\t\"\\x00I\\x03(\\x00\\x00\\x01.\" + // 0x00490328: 0x0000012E\n\t\"\\x00i\\x03(\\x00\\x00\\x01/\" + // 0x00690328: 0x0000012F\n\t\"\\x00I\\x03\\a\\x00\\x00\\x010\" + // 0x00490307: 0x00000130\n\t\"\\x00J\\x03\\x02\\x00\\x00\\x014\" + // 0x004A0302: 0x00000134\n\t\"\\x00j\\x03\\x02\\x00\\x00\\x015\" + // 0x006A0302: 0x00000135\n\t\"\\x00K\\x03'\\x00\\x00\\x016\" + // 0x004B0327: 0x00000136\n\t\"\\x00k\\x03'\\x00\\x00\\x017\" + // 0x006B0327: 0x00000137\n\t\"\\x00L\\x03\\x01\\x00\\x00\\x019\" + // 0x004C0301: 0x00000139\n\t\"\\x00l\\x03\\x01\\x00\\x00\\x01:\" + // 0x006C0301: 0x0000013A\n\t\"\\x00L\\x03'\\x00\\x00\\x01;\" + // 0x004C0327: 0x0000013B\n\t\"\\x00l\\x03'\\x00\\x00\\x01<\" + // 0x006C0327: 0x0000013C\n\t\"\\x00L\\x03\\f\\x00\\x00\\x01=\" + // 0x004C030C: 0x0000013D\n\t\"\\x00l\\x03\\f\\x00\\x00\\x01>\" + // 0x006C030C: 0x0000013E\n\t\"\\x00N\\x03\\x01\\x00\\x00\\x01C\" + // 0x004E0301: 0x00000143\n\t\"\\x00n\\x03\\x01\\x00\\x00\\x01D\" + // 0x006E0301: 0x00000144\n\t\"\\x00N\\x03'\\x00\\x00\\x01E\" + // 0x004E0327: 0x00000145\n\t\"\\x00n\\x03'\\x00\\x00\\x01F\" + // 0x006E0327: 0x00000146\n\t\"\\x00N\\x03\\f\\x00\\x00\\x01G\" + // 0x004E030C: 0x00000147\n\t\"\\x00n\\x03\\f\\x00\\x00\\x01H\" + // 0x006E030C: 0x00000148\n\t\"\\x00O\\x03\\x04\\x00\\x00\\x01L\" + // 0x004F0304: 0x0000014C\n\t\"\\x00o\\x03\\x04\\x00\\x00\\x01M\" + // 0x006F0304: 0x0000014D\n\t\"\\x00O\\x03\\x06\\x00\\x00\\x01N\" + // 0x004F0306: 0x0000014E\n\t\"\\x00o\\x03\\x06\\x00\\x00\\x01O\" + // 0x006F0306: 0x0000014F\n\t\"\\x00O\\x03\\v\\x00\\x00\\x01P\" + // 0x004F030B: 0x00000150\n\t\"\\x00o\\x03\\v\\x00\\x00\\x01Q\" + // 0x006F030B: 0x00000151\n\t\"\\x00R\\x03\\x01\\x00\\x00\\x01T\" + // 0x00520301: 0x00000154\n\t\"\\x00r\\x03\\x01\\x00\\x00\\x01U\" + // 0x00720301: 0x00000155\n\t\"\\x00R\\x03'\\x00\\x00\\x01V\" + // 0x00520327: 0x00000156\n\t\"\\x00r\\x03'\\x00\\x00\\x01W\" + // 0x00720327: 0x00000157\n\t\"\\x00R\\x03\\f\\x00\\x00\\x01X\" + // 0x0052030C: 0x00000158\n\t\"\\x00r\\x03\\f\\x00\\x00\\x01Y\" + // 0x0072030C: 0x00000159\n\t\"\\x00S\\x03\\x01\\x00\\x00\\x01Z\" + // 0x00530301: 0x0000015A\n\t\"\\x00s\\x03\\x01\\x00\\x00\\x01[\" + // 0x00730301: 0x0000015B\n\t\"\\x00S\\x03\\x02\\x00\\x00\\x01\\\\\" + // 0x00530302: 0x0000015C\n\t\"\\x00s\\x03\\x02\\x00\\x00\\x01]\" + // 0x00730302: 0x0000015D\n\t\"\\x00S\\x03'\\x00\\x00\\x01^\" + // 0x00530327: 0x0000015E\n\t\"\\x00s\\x03'\\x00\\x00\\x01_\" + // 0x00730327: 0x0000015F\n\t\"\\x00S\\x03\\f\\x00\\x00\\x01`\" + // 0x0053030C: 0x00000160\n\t\"\\x00s\\x03\\f\\x00\\x00\\x01a\" + // 0x0073030C: 0x00000161\n\t\"\\x00T\\x03'\\x00\\x00\\x01b\" + // 0x00540327: 0x00000162\n\t\"\\x00t\\x03'\\x00\\x00\\x01c\" + // 0x00740327: 0x00000163\n\t\"\\x00T\\x03\\f\\x00\\x00\\x01d\" + // 0x0054030C: 0x00000164\n\t\"\\x00t\\x03\\f\\x00\\x00\\x01e\" + // 0x0074030C: 0x00000165\n\t\"\\x00U\\x03\\x03\\x00\\x00\\x01h\" + // 0x00550303: 0x00000168\n\t\"\\x00u\\x03\\x03\\x00\\x00\\x01i\" + // 0x00750303: 0x00000169\n\t\"\\x00U\\x03\\x04\\x00\\x00\\x01j\" + // 0x00550304: 0x0000016A\n\t\"\\x00u\\x03\\x04\\x00\\x00\\x01k\" + // 0x00750304: 0x0000016B\n\t\"\\x00U\\x03\\x06\\x00\\x00\\x01l\" + // 0x00550306: 0x0000016C\n\t\"\\x00u\\x03\\x06\\x00\\x00\\x01m\" + // 0x00750306: 0x0000016D\n\t\"\\x00U\\x03\\n\\x00\\x00\\x01n\" + // 0x0055030A: 0x0000016E\n\t\"\\x00u\\x03\\n\\x00\\x00\\x01o\" + // 0x0075030A: 0x0000016F\n\t\"\\x00U\\x03\\v\\x00\\x00\\x01p\" + // 0x0055030B: 0x00000170\n\t\"\\x00u\\x03\\v\\x00\\x00\\x01q\" + // 0x0075030B: 0x00000171\n\t\"\\x00U\\x03(\\x00\\x00\\x01r\" + // 0x00550328: 0x00000172\n\t\"\\x00u\\x03(\\x00\\x00\\x01s\" + // 0x00750328: 0x00000173\n\t\"\\x00W\\x03\\x02\\x00\\x00\\x01t\" + // 0x00570302: 0x00000174\n\t\"\\x00w\\x03\\x02\\x00\\x00\\x01u\" + // 0x00770302: 0x00000175\n\t\"\\x00Y\\x03\\x02\\x00\\x00\\x01v\" + // 0x00590302: 0x00000176\n\t\"\\x00y\\x03\\x02\\x00\\x00\\x01w\" + // 0x00790302: 0x00000177\n\t\"\\x00Y\\x03\\b\\x00\\x00\\x01x\" + // 0x00590308: 0x00000178\n\t\"\\x00Z\\x03\\x01\\x00\\x00\\x01y\" + // 0x005A0301: 0x00000179\n\t\"\\x00z\\x03\\x01\\x00\\x00\\x01z\" + // 0x007A0301: 0x0000017A\n\t\"\\x00Z\\x03\\a\\x00\\x00\\x01{\" + // 0x005A0307: 0x0000017B\n\t\"\\x00z\\x03\\a\\x00\\x00\\x01|\" + // 0x007A0307: 0x0000017C\n\t\"\\x00Z\\x03\\f\\x00\\x00\\x01}\" + // 0x005A030C: 0x0000017D\n\t\"\\x00z\\x03\\f\\x00\\x00\\x01~\" + // 0x007A030C: 0x0000017E\n\t\"\\x00O\\x03\\x1b\\x00\\x00\\x01\\xa0\" + // 0x004F031B: 0x000001A0\n\t\"\\x00o\\x03\\x1b\\x00\\x00\\x01\\xa1\" + // 0x006F031B: 0x000001A1\n\t\"\\x00U\\x03\\x1b\\x00\\x00\\x01\\xaf\" + // 0x0055031B: 0x000001AF\n\t\"\\x00u\\x03\\x1b\\x00\\x00\\x01\\xb0\" + // 0x0075031B: 0x000001B0\n\t\"\\x00A\\x03\\f\\x00\\x00\\x01\\xcd\" + // 0x0041030C: 0x000001CD\n\t\"\\x00a\\x03\\f\\x00\\x00\\x01\\xce\" + // 0x0061030C: 0x000001CE\n\t\"\\x00I\\x03\\f\\x00\\x00\\x01\\xcf\" + // 0x0049030C: 0x000001CF\n\t\"\\x00i\\x03\\f\\x00\\x00\\x01\\xd0\" + // 0x0069030C: 0x000001D0\n\t\"\\x00O\\x03\\f\\x00\\x00\\x01\\xd1\" + // 0x004F030C: 0x000001D1\n\t\"\\x00o\\x03\\f\\x00\\x00\\x01\\xd2\" + // 0x006F030C: 0x000001D2\n\t\"\\x00U\\x03\\f\\x00\\x00\\x01\\xd3\" + // 0x0055030C: 0x000001D3\n\t\"\\x00u\\x03\\f\\x00\\x00\\x01\\xd4\" + // 0x0075030C: 0x000001D4\n\t\"\\x00\\xdc\\x03\\x04\\x00\\x00\\x01\\xd5\" + // 0x00DC0304: 0x000001D5\n\t\"\\x00\\xfc\\x03\\x04\\x00\\x00\\x01\\xd6\" + // 0x00FC0304: 0x000001D6\n\t\"\\x00\\xdc\\x03\\x01\\x00\\x00\\x01\\xd7\" + // 0x00DC0301: 0x000001D7\n\t\"\\x00\\xfc\\x03\\x01\\x00\\x00\\x01\\xd8\" + // 0x00FC0301: 0x000001D8\n\t\"\\x00\\xdc\\x03\\f\\x00\\x00\\x01\\xd9\" + // 0x00DC030C: 0x000001D9\n\t\"\\x00\\xfc\\x03\\f\\x00\\x00\\x01\\xda\" + // 0x00FC030C: 0x000001DA\n\t\"\\x00\\xdc\\x03\\x00\\x00\\x00\\x01\\xdb\" + // 0x00DC0300: 0x000001DB\n\t\"\\x00\\xfc\\x03\\x00\\x00\\x00\\x01\\xdc\" + // 0x00FC0300: 0x000001DC\n\t\"\\x00\\xc4\\x03\\x04\\x00\\x00\\x01\\xde\" + // 0x00C40304: 0x000001DE\n\t\"\\x00\\xe4\\x03\\x04\\x00\\x00\\x01\\xdf\" + // 0x00E40304: 0x000001DF\n\t\"\\x02&\\x03\\x04\\x00\\x00\\x01\\xe0\" + // 0x02260304: 0x000001E0\n\t\"\\x02'\\x03\\x04\\x00\\x00\\x01\\xe1\" + // 0x02270304: 0x000001E1\n\t\"\\x00\\xc6\\x03\\x04\\x00\\x00\\x01\\xe2\" + // 0x00C60304: 0x000001E2\n\t\"\\x00\\xe6\\x03\\x04\\x00\\x00\\x01\\xe3\" + // 0x00E60304: 0x000001E3\n\t\"\\x00G\\x03\\f\\x00\\x00\\x01\\xe6\" + // 0x0047030C: 0x000001E6\n\t\"\\x00g\\x03\\f\\x00\\x00\\x01\\xe7\" + // 0x0067030C: 0x000001E7\n\t\"\\x00K\\x03\\f\\x00\\x00\\x01\\xe8\" + // 0x004B030C: 0x000001E8\n\t\"\\x00k\\x03\\f\\x00\\x00\\x01\\xe9\" + // 0x006B030C: 0x000001E9\n\t\"\\x00O\\x03(\\x00\\x00\\x01\\xea\" + // 0x004F0328: 0x000001EA\n\t\"\\x00o\\x03(\\x00\\x00\\x01\\xeb\" + // 0x006F0328: 0x000001EB\n\t\"\\x01\\xea\\x03\\x04\\x00\\x00\\x01\\xec\" + // 0x01EA0304: 0x000001EC\n\t\"\\x01\\xeb\\x03\\x04\\x00\\x00\\x01\\xed\" + // 0x01EB0304: 0x000001ED\n\t\"\\x01\\xb7\\x03\\f\\x00\\x00\\x01\\xee\" + // 0x01B7030C: 0x000001EE\n\t\"\\x02\\x92\\x03\\f\\x00\\x00\\x01\\xef\" + // 0x0292030C: 0x000001EF\n\t\"\\x00j\\x03\\f\\x00\\x00\\x01\\xf0\" + // 0x006A030C: 0x000001F0\n\t\"\\x00G\\x03\\x01\\x00\\x00\\x01\\xf4\" + // 0x00470301: 0x000001F4\n\t\"\\x00g\\x03\\x01\\x00\\x00\\x01\\xf5\" + // 0x00670301: 0x000001F5\n\t\"\\x00N\\x03\\x00\\x00\\x00\\x01\\xf8\" + // 0x004E0300: 0x000001F8\n\t\"\\x00n\\x03\\x00\\x00\\x00\\x01\\xf9\" + // 0x006E0300: 0x000001F9\n\t\"\\x00\\xc5\\x03\\x01\\x00\\x00\\x01\\xfa\" + // 0x00C50301: 0x000001FA\n\t\"\\x00\\xe5\\x03\\x01\\x00\\x00\\x01\\xfb\" + // 0x00E50301: 0x000001FB\n\t\"\\x00\\xc6\\x03\\x01\\x00\\x00\\x01\\xfc\" + // 0x00C60301: 0x000001FC\n\t\"\\x00\\xe6\\x03\\x01\\x00\\x00\\x01\\xfd\" + // 0x00E60301: 0x000001FD\n\t\"\\x00\\xd8\\x03\\x01\\x00\\x00\\x01\\xfe\" + // 0x00D80301: 0x000001FE\n\t\"\\x00\\xf8\\x03\\x01\\x00\\x00\\x01\\xff\" + // 0x00F80301: 0x000001FF\n\t\"\\x00A\\x03\\x0f\\x00\\x00\\x02\\x00\" + // 0x0041030F: 0x00000200\n\t\"\\x00a\\x03\\x0f\\x00\\x00\\x02\\x01\" + // 0x0061030F: 0x00000201\n\t\"\\x00A\\x03\\x11\\x00\\x00\\x02\\x02\" + // 0x00410311: 0x00000202\n\t\"\\x00a\\x03\\x11\\x00\\x00\\x02\\x03\" + // 0x00610311: 0x00000203\n\t\"\\x00E\\x03\\x0f\\x00\\x00\\x02\\x04\" + // 0x0045030F: 0x00000204\n\t\"\\x00e\\x03\\x0f\\x00\\x00\\x02\\x05\" + // 0x0065030F: 0x00000205\n\t\"\\x00E\\x03\\x11\\x00\\x00\\x02\\x06\" + // 0x00450311: 0x00000206\n\t\"\\x00e\\x03\\x11\\x00\\x00\\x02\\a\" + // 0x00650311: 0x00000207\n\t\"\\x00I\\x03\\x0f\\x00\\x00\\x02\\b\" + // 0x0049030F: 0x00000208\n\t\"\\x00i\\x03\\x0f\\x00\\x00\\x02\\t\" + // 0x0069030F: 0x00000209\n\t\"\\x00I\\x03\\x11\\x00\\x00\\x02\\n\" + // 0x00490311: 0x0000020A\n\t\"\\x00i\\x03\\x11\\x00\\x00\\x02\\v\" + // 0x00690311: 0x0000020B\n\t\"\\x00O\\x03\\x0f\\x00\\x00\\x02\\f\" + // 0x004F030F: 0x0000020C\n\t\"\\x00o\\x03\\x0f\\x00\\x00\\x02\\r\" + // 0x006F030F: 0x0000020D\n\t\"\\x00O\\x03\\x11\\x00\\x00\\x02\\x0e\" + // 0x004F0311: 0x0000020E\n\t\"\\x00o\\x03\\x11\\x00\\x00\\x02\\x0f\" + // 0x006F0311: 0x0000020F\n\t\"\\x00R\\x03\\x0f\\x00\\x00\\x02\\x10\" + // 0x0052030F: 0x00000210\n\t\"\\x00r\\x03\\x0f\\x00\\x00\\x02\\x11\" + // 0x0072030F: 0x00000211\n\t\"\\x00R\\x03\\x11\\x00\\x00\\x02\\x12\" + // 0x00520311: 0x00000212\n\t\"\\x00r\\x03\\x11\\x00\\x00\\x02\\x13\" + // 0x00720311: 0x00000213\n\t\"\\x00U\\x03\\x0f\\x00\\x00\\x02\\x14\" + // 0x0055030F: 0x00000214\n\t\"\\x00u\\x03\\x0f\\x00\\x00\\x02\\x15\" + // 0x0075030F: 0x00000215\n\t\"\\x00U\\x03\\x11\\x00\\x00\\x02\\x16\" + // 0x00550311: 0x00000216\n\t\"\\x00u\\x03\\x11\\x00\\x00\\x02\\x17\" + // 0x00750311: 0x00000217\n\t\"\\x00S\\x03&\\x00\\x00\\x02\\x18\" + // 0x00530326: 0x00000218\n\t\"\\x00s\\x03&\\x00\\x00\\x02\\x19\" + // 0x00730326: 0x00000219\n\t\"\\x00T\\x03&\\x00\\x00\\x02\\x1a\" + // 0x00540326: 0x0000021A\n\t\"\\x00t\\x03&\\x00\\x00\\x02\\x1b\" + // 0x00740326: 0x0000021B\n\t\"\\x00H\\x03\\f\\x00\\x00\\x02\\x1e\" + // 0x0048030C: 0x0000021E\n\t\"\\x00h\\x03\\f\\x00\\x00\\x02\\x1f\" + // 0x0068030C: 0x0000021F\n\t\"\\x00A\\x03\\a\\x00\\x00\\x02&\" + // 0x00410307: 0x00000226\n\t\"\\x00a\\x03\\a\\x00\\x00\\x02'\" + // 0x00610307: 0x00000227\n\t\"\\x00E\\x03'\\x00\\x00\\x02(\" + // 0x00450327: 0x00000228\n\t\"\\x00e\\x03'\\x00\\x00\\x02)\" + // 0x00650327: 0x00000229\n\t\"\\x00\\xd6\\x03\\x04\\x00\\x00\\x02*\" + // 0x00D60304: 0x0000022A\n\t\"\\x00\\xf6\\x03\\x04\\x00\\x00\\x02+\" + // 0x00F60304: 0x0000022B\n\t\"\\x00\\xd5\\x03\\x04\\x00\\x00\\x02,\" + // 0x00D50304: 0x0000022C\n\t\"\\x00\\xf5\\x03\\x04\\x00\\x00\\x02-\" + // 0x00F50304: 0x0000022D\n\t\"\\x00O\\x03\\a\\x00\\x00\\x02.\" + // 0x004F0307: 0x0000022E\n\t\"\\x00o\\x03\\a\\x00\\x00\\x02/\" + // 0x006F0307: 0x0000022F\n\t\"\\x02.\\x03\\x04\\x00\\x00\\x020\" + // 0x022E0304: 0x00000230\n\t\"\\x02/\\x03\\x04\\x00\\x00\\x021\" + // 0x022F0304: 0x00000231\n\t\"\\x00Y\\x03\\x04\\x00\\x00\\x022\" + // 0x00590304: 0x00000232\n\t\"\\x00y\\x03\\x04\\x00\\x00\\x023\" + // 0x00790304: 0x00000233\n\t\"\\x00\\xa8\\x03\\x01\\x00\\x00\\x03\\x85\" + // 0x00A80301: 0x00000385\n\t\"\\x03\\x91\\x03\\x01\\x00\\x00\\x03\\x86\" + // 0x03910301: 0x00000386\n\t\"\\x03\\x95\\x03\\x01\\x00\\x00\\x03\\x88\" + // 0x03950301: 0x00000388\n\t\"\\x03\\x97\\x03\\x01\\x00\\x00\\x03\\x89\" + // 0x03970301: 0x00000389\n\t\"\\x03\\x99\\x03\\x01\\x00\\x00\\x03\\x8a\" + // 0x03990301: 0x0000038A\n\t\"\\x03\\x9f\\x03\\x01\\x00\\x00\\x03\\x8c\" + // 0x039F0301: 0x0000038C\n\t\"\\x03\\xa5\\x03\\x01\\x00\\x00\\x03\\x8e\" + // 0x03A50301: 0x0000038E\n\t\"\\x03\\xa9\\x03\\x01\\x00\\x00\\x03\\x8f\" + // 0x03A90301: 0x0000038F\n\t\"\\x03\\xca\\x03\\x01\\x00\\x00\\x03\\x90\" + // 0x03CA0301: 0x00000390\n\t\"\\x03\\x99\\x03\\b\\x00\\x00\\x03\\xaa\" + // 0x03990308: 0x000003AA\n\t\"\\x03\\xa5\\x03\\b\\x00\\x00\\x03\\xab\" + // 0x03A50308: 0x000003AB\n\t\"\\x03\\xb1\\x03\\x01\\x00\\x00\\x03\\xac\" + // 0x03B10301: 0x000003AC\n\t\"\\x03\\xb5\\x03\\x01\\x00\\x00\\x03\\xad\" + // 0x03B50301: 0x000003AD\n\t\"\\x03\\xb7\\x03\\x01\\x00\\x00\\x03\\xae\" + // 0x03B70301: 0x000003AE\n\t\"\\x03\\xb9\\x03\\x01\\x00\\x00\\x03\\xaf\" + // 0x03B90301: 0x000003AF\n\t\"\\x03\\xcb\\x03\\x01\\x00\\x00\\x03\\xb0\" + // 0x03CB0301: 0x000003B0\n\t\"\\x03\\xb9\\x03\\b\\x00\\x00\\x03\\xca\" + // 0x03B90308: 0x000003CA\n\t\"\\x03\\xc5\\x03\\b\\x00\\x00\\x03\\xcb\" + // 0x03C50308: 0x000003CB\n\t\"\\x03\\xbf\\x03\\x01\\x00\\x00\\x03\\xcc\" + // 0x03BF0301: 0x000003CC\n\t\"\\x03\\xc5\\x03\\x01\\x00\\x00\\x03\\xcd\" + // 0x03C50301: 0x000003CD\n\t\"\\x03\\xc9\\x03\\x01\\x00\\x00\\x03\\xce\" + // 0x03C90301: 0x000003CE\n\t\"\\x03\\xd2\\x03\\x01\\x00\\x00\\x03\\xd3\" + // 0x03D20301: 0x000003D3\n\t\"\\x03\\xd2\\x03\\b\\x00\\x00\\x03\\xd4\" + // 0x03D20308: 0x000003D4\n\t\"\\x04\\x15\\x03\\x00\\x00\\x00\\x04\\x00\" + // 0x04150300: 0x00000400\n\t\"\\x04\\x15\\x03\\b\\x00\\x00\\x04\\x01\" + // 0x04150308: 0x00000401\n\t\"\\x04\\x13\\x03\\x01\\x00\\x00\\x04\\x03\" + // 0x04130301: 0x00000403\n\t\"\\x04\\x06\\x03\\b\\x00\\x00\\x04\\a\" + // 0x04060308: 0x00000407\n\t\"\\x04\\x1a\\x03\\x01\\x00\\x00\\x04\\f\" + // 0x041A0301: 0x0000040C\n\t\"\\x04\\x18\\x03\\x00\\x00\\x00\\x04\\r\" + // 0x04180300: 0x0000040D\n\t\"\\x04#\\x03\\x06\\x00\\x00\\x04\\x0e\" + // 0x04230306: 0x0000040E\n\t\"\\x04\\x18\\x03\\x06\\x00\\x00\\x04\\x19\" + // 0x04180306: 0x00000419\n\t\"\\x048\\x03\\x06\\x00\\x00\\x049\" + // 0x04380306: 0x00000439\n\t\"\\x045\\x03\\x00\\x00\\x00\\x04P\" + // 0x04350300: 0x00000450\n\t\"\\x045\\x03\\b\\x00\\x00\\x04Q\" + // 0x04350308: 0x00000451\n\t\"\\x043\\x03\\x01\\x00\\x00\\x04S\" + // 0x04330301: 0x00000453\n\t\"\\x04V\\x03\\b\\x00\\x00\\x04W\" + // 0x04560308: 0x00000457\n\t\"\\x04:\\x03\\x01\\x00\\x00\\x04\\\\\" + // 0x043A0301: 0x0000045C\n\t\"\\x048\\x03\\x00\\x00\\x00\\x04]\" + // 0x04380300: 0x0000045D\n\t\"\\x04C\\x03\\x06\\x00\\x00\\x04^\" + // 0x04430306: 0x0000045E\n\t\"\\x04t\\x03\\x0f\\x00\\x00\\x04v\" + // 0x0474030F: 0x00000476\n\t\"\\x04u\\x03\\x0f\\x00\\x00\\x04w\" + // 0x0475030F: 0x00000477\n\t\"\\x04\\x16\\x03\\x06\\x00\\x00\\x04\\xc1\" + // 0x04160306: 0x000004C1\n\t\"\\x046\\x03\\x06\\x00\\x00\\x04\\xc2\" + // 0x04360306: 0x000004C2\n\t\"\\x04\\x10\\x03\\x06\\x00\\x00\\x04\\xd0\" + // 0x04100306: 0x000004D0\n\t\"\\x040\\x03\\x06\\x00\\x00\\x04\\xd1\" + // 0x04300306: 0x000004D1\n\t\"\\x04\\x10\\x03\\b\\x00\\x00\\x04\\xd2\" + // 0x04100308: 0x000004D2\n\t\"\\x040\\x03\\b\\x00\\x00\\x04\\xd3\" + // 0x04300308: 0x000004D3\n\t\"\\x04\\x15\\x03\\x06\\x00\\x00\\x04\\xd6\" + // 0x04150306: 0x000004D6\n\t\"\\x045\\x03\\x06\\x00\\x00\\x04\\xd7\" + // 0x04350306: 0x000004D7\n\t\"\\x04\\xd8\\x03\\b\\x00\\x00\\x04\\xda\" + // 0x04D80308: 0x000004DA\n\t\"\\x04\\xd9\\x03\\b\\x00\\x00\\x04\\xdb\" + // 0x04D90308: 0x000004DB\n\t\"\\x04\\x16\\x03\\b\\x00\\x00\\x04\\xdc\" + // 0x04160308: 0x000004DC\n\t\"\\x046\\x03\\b\\x00\\x00\\x04\\xdd\" + // 0x04360308: 0x000004DD\n\t\"\\x04\\x17\\x03\\b\\x00\\x00\\x04\\xde\" + // 0x04170308: 0x000004DE\n\t\"\\x047\\x03\\b\\x00\\x00\\x04\\xdf\" + // 0x04370308: 0x000004DF\n\t\"\\x04\\x18\\x03\\x04\\x00\\x00\\x04\\xe2\" + // 0x04180304: 0x000004E2\n\t\"\\x048\\x03\\x04\\x00\\x00\\x04\\xe3\" + // 0x04380304: 0x000004E3\n\t\"\\x04\\x18\\x03\\b\\x00\\x00\\x04\\xe4\" + // 0x04180308: 0x000004E4\n\t\"\\x048\\x03\\b\\x00\\x00\\x04\\xe5\" + // 0x04380308: 0x000004E5\n\t\"\\x04\\x1e\\x03\\b\\x00\\x00\\x04\\xe6\" + // 0x041E0308: 0x000004E6\n\t\"\\x04>\\x03\\b\\x00\\x00\\x04\\xe7\" + // 0x043E0308: 0x000004E7\n\t\"\\x04\\xe8\\x03\\b\\x00\\x00\\x04\\xea\" + // 0x04E80308: 0x000004EA\n\t\"\\x04\\xe9\\x03\\b\\x00\\x00\\x04\\xeb\" + // 0x04E90308: 0x000004EB\n\t\"\\x04-\\x03\\b\\x00\\x00\\x04\\xec\" + // 0x042D0308: 0x000004EC\n\t\"\\x04M\\x03\\b\\x00\\x00\\x04\\xed\" + // 0x044D0308: 0x000004ED\n\t\"\\x04#\\x03\\x04\\x00\\x00\\x04\\xee\" + // 0x04230304: 0x000004EE\n\t\"\\x04C\\x03\\x04\\x00\\x00\\x04\\xef\" + // 0x04430304: 0x000004EF\n\t\"\\x04#\\x03\\b\\x00\\x00\\x04\\xf0\" + // 0x04230308: 0x000004F0\n\t\"\\x04C\\x03\\b\\x00\\x00\\x04\\xf1\" + // 0x04430308: 0x000004F1\n\t\"\\x04#\\x03\\v\\x00\\x00\\x04\\xf2\" + // 0x0423030B: 0x000004F2\n\t\"\\x04C\\x03\\v\\x00\\x00\\x04\\xf3\" + // 0x0443030B: 0x000004F3\n\t\"\\x04'\\x03\\b\\x00\\x00\\x04\\xf4\" + // 0x04270308: 0x000004F4\n\t\"\\x04G\\x03\\b\\x00\\x00\\x04\\xf5\" + // 0x04470308: 0x000004F5\n\t\"\\x04+\\x03\\b\\x00\\x00\\x04\\xf8\" + // 0x042B0308: 0x000004F8\n\t\"\\x04K\\x03\\b\\x00\\x00\\x04\\xf9\" + // 0x044B0308: 0x000004F9\n\t\"\\x06'\\x06S\\x00\\x00\\x06\\\"\" + // 0x06270653: 0x00000622\n\t\"\\x06'\\x06T\\x00\\x00\\x06#\" + // 0x06270654: 0x00000623\n\t\"\\x06H\\x06T\\x00\\x00\\x06$\" + // 0x06480654: 0x00000624\n\t\"\\x06'\\x06U\\x00\\x00\\x06%\" + // 0x06270655: 0x00000625\n\t\"\\x06J\\x06T\\x00\\x00\\x06&\" + // 0x064A0654: 0x00000626\n\t\"\\x06\\xd5\\x06T\\x00\\x00\\x06\\xc0\" + // 0x06D50654: 0x000006C0\n\t\"\\x06\\xc1\\x06T\\x00\\x00\\x06\\xc2\" + // 0x06C10654: 0x000006C2\n\t\"\\x06\\xd2\\x06T\\x00\\x00\\x06\\xd3\" + // 0x06D20654: 0x000006D3\n\t\"\\t(\\t<\\x00\\x00\\t)\" + // 0x0928093C: 0x00000929\n\t\"\\t0\\t<\\x00\\x00\\t1\" + // 0x0930093C: 0x00000931\n\t\"\\t3\\t<\\x00\\x00\\t4\" + // 0x0933093C: 0x00000934\n\t\"\\t\\xc7\\t\\xbe\\x00\\x00\\t\\xcb\" + // 0x09C709BE: 0x000009CB\n\t\"\\t\\xc7\\t\\xd7\\x00\\x00\\t\\xcc\" + // 0x09C709D7: 0x000009CC\n\t\"\\vG\\vV\\x00\\x00\\vH\" + // 0x0B470B56: 0x00000B48\n\t\"\\vG\\v>\\x00\\x00\\vK\" + // 0x0B470B3E: 0x00000B4B\n\t\"\\vG\\vW\\x00\\x00\\vL\" + // 0x0B470B57: 0x00000B4C\n\t\"\\v\\x92\\v\\xd7\\x00\\x00\\v\\x94\" + // 0x0B920BD7: 0x00000B94\n\t\"\\v\\xc6\\v\\xbe\\x00\\x00\\v\\xca\" + // 0x0BC60BBE: 0x00000BCA\n\t\"\\v\\xc7\\v\\xbe\\x00\\x00\\v\\xcb\" + // 0x0BC70BBE: 0x00000BCB\n\t\"\\v\\xc6\\v\\xd7\\x00\\x00\\v\\xcc\" + // 0x0BC60BD7: 0x00000BCC\n\t\"\\fF\\fV\\x00\\x00\\fH\" + // 0x0C460C56: 0x00000C48\n\t\"\\f\\xbf\\f\\xd5\\x00\\x00\\f\\xc0\" + // 0x0CBF0CD5: 0x00000CC0\n\t\"\\f\\xc6\\f\\xd5\\x00\\x00\\f\\xc7\" + // 0x0CC60CD5: 0x00000CC7\n\t\"\\f\\xc6\\f\\xd6\\x00\\x00\\f\\xc8\" + // 0x0CC60CD6: 0x00000CC8\n\t\"\\f\\xc6\\f\\xc2\\x00\\x00\\f\\xca\" + // 0x0CC60CC2: 0x00000CCA\n\t\"\\f\\xca\\f\\xd5\\x00\\x00\\f\\xcb\" + // 0x0CCA0CD5: 0x00000CCB\n\t\"\\rF\\r>\\x00\\x00\\rJ\" + // 0x0D460D3E: 0x00000D4A\n\t\"\\rG\\r>\\x00\\x00\\rK\" + // 0x0D470D3E: 0x00000D4B\n\t\"\\rF\\rW\\x00\\x00\\rL\" + // 0x0D460D57: 0x00000D4C\n\t\"\\r\\xd9\\r\\xca\\x00\\x00\\r\\xda\" + // 0x0DD90DCA: 0x00000DDA\n\t\"\\r\\xd9\\r\\xcf\\x00\\x00\\r\\xdc\" + // 0x0DD90DCF: 0x00000DDC\n\t\"\\r\\xdc\\r\\xca\\x00\\x00\\r\\xdd\" + // 0x0DDC0DCA: 0x00000DDD\n\t\"\\r\\xd9\\r\\xdf\\x00\\x00\\r\\xde\" + // 0x0DD90DDF: 0x00000DDE\n\t\"\\x10%\\x10.\\x00\\x00\\x10&\" + // 0x1025102E: 0x00001026\n\t\"\\x1b\\x05\\x1b5\\x00\\x00\\x1b\\x06\" + // 0x1B051B35: 0x00001B06\n\t\"\\x1b\\a\\x1b5\\x00\\x00\\x1b\\b\" + // 0x1B071B35: 0x00001B08\n\t\"\\x1b\\t\\x1b5\\x00\\x00\\x1b\\n\" + // 0x1B091B35: 0x00001B0A\n\t\"\\x1b\\v\\x1b5\\x00\\x00\\x1b\\f\" + // 0x1B0B1B35: 0x00001B0C\n\t\"\\x1b\\r\\x1b5\\x00\\x00\\x1b\\x0e\" + // 0x1B0D1B35: 0x00001B0E\n\t\"\\x1b\\x11\\x1b5\\x00\\x00\\x1b\\x12\" + // 0x1B111B35: 0x00001B12\n\t\"\\x1b:\\x1b5\\x00\\x00\\x1b;\" + // 0x1B3A1B35: 0x00001B3B\n\t\"\\x1b<\\x1b5\\x00\\x00\\x1b=\" + // 0x1B3C1B35: 0x00001B3D\n\t\"\\x1b>\\x1b5\\x00\\x00\\x1b@\" + // 0x1B3E1B35: 0x00001B40\n\t\"\\x1b?\\x1b5\\x00\\x00\\x1bA\" + // 0x1B3F1B35: 0x00001B41\n\t\"\\x1bB\\x1b5\\x00\\x00\\x1bC\" + // 0x1B421B35: 0x00001B43\n\t\"\\x00A\\x03%\\x00\\x00\\x1e\\x00\" + // 0x00410325: 0x00001E00\n\t\"\\x00a\\x03%\\x00\\x00\\x1e\\x01\" + // 0x00610325: 0x00001E01\n\t\"\\x00B\\x03\\a\\x00\\x00\\x1e\\x02\" + // 0x00420307: 0x00001E02\n\t\"\\x00b\\x03\\a\\x00\\x00\\x1e\\x03\" + // 0x00620307: 0x00001E03\n\t\"\\x00B\\x03#\\x00\\x00\\x1e\\x04\" + // 0x00420323: 0x00001E04\n\t\"\\x00b\\x03#\\x00\\x00\\x1e\\x05\" + // 0x00620323: 0x00001E05\n\t\"\\x00B\\x031\\x00\\x00\\x1e\\x06\" + // 0x00420331: 0x00001E06\n\t\"\\x00b\\x031\\x00\\x00\\x1e\\a\" + // 0x00620331: 0x00001E07\n\t\"\\x00\\xc7\\x03\\x01\\x00\\x00\\x1e\\b\" + // 0x00C70301: 0x00001E08\n\t\"\\x00\\xe7\\x03\\x01\\x00\\x00\\x1e\\t\" + // 0x00E70301: 0x00001E09\n\t\"\\x00D\\x03\\a\\x00\\x00\\x1e\\n\" + // 0x00440307: 0x00001E0A\n\t\"\\x00d\\x03\\a\\x00\\x00\\x1e\\v\" + // 0x00640307: 0x00001E0B\n\t\"\\x00D\\x03#\\x00\\x00\\x1e\\f\" + // 0x00440323: 0x00001E0C\n\t\"\\x00d\\x03#\\x00\\x00\\x1e\\r\" + // 0x00640323: 0x00001E0D\n\t\"\\x00D\\x031\\x00\\x00\\x1e\\x0e\" + // 0x00440331: 0x00001E0E\n\t\"\\x00d\\x031\\x00\\x00\\x1e\\x0f\" + // 0x00640331: 0x00001E0F\n\t\"\\x00D\\x03'\\x00\\x00\\x1e\\x10\" + // 0x00440327: 0x00001E10\n\t\"\\x00d\\x03'\\x00\\x00\\x1e\\x11\" + // 0x00640327: 0x00001E11\n\t\"\\x00D\\x03-\\x00\\x00\\x1e\\x12\" + // 0x0044032D: 0x00001E12\n\t\"\\x00d\\x03-\\x00\\x00\\x1e\\x13\" + // 0x0064032D: 0x00001E13\n\t\"\\x01\\x12\\x03\\x00\\x00\\x00\\x1e\\x14\" + // 0x01120300: 0x00001E14\n\t\"\\x01\\x13\\x03\\x00\\x00\\x00\\x1e\\x15\" + // 0x01130300: 0x00001E15\n\t\"\\x01\\x12\\x03\\x01\\x00\\x00\\x1e\\x16\" + // 0x01120301: 0x00001E16\n\t\"\\x01\\x13\\x03\\x01\\x00\\x00\\x1e\\x17\" + // 0x01130301: 0x00001E17\n\t\"\\x00E\\x03-\\x00\\x00\\x1e\\x18\" + // 0x0045032D: 0x00001E18\n\t\"\\x00e\\x03-\\x00\\x00\\x1e\\x19\" + // 0x0065032D: 0x00001E19\n\t\"\\x00E\\x030\\x00\\x00\\x1e\\x1a\" + // 0x00450330: 0x00001E1A\n\t\"\\x00e\\x030\\x00\\x00\\x1e\\x1b\" + // 0x00650330: 0x00001E1B\n\t\"\\x02(\\x03\\x06\\x00\\x00\\x1e\\x1c\" + // 0x02280306: 0x00001E1C\n\t\"\\x02)\\x03\\x06\\x00\\x00\\x1e\\x1d\" + // 0x02290306: 0x00001E1D\n\t\"\\x00F\\x03\\a\\x00\\x00\\x1e\\x1e\" + // 0x00460307: 0x00001E1E\n\t\"\\x00f\\x03\\a\\x00\\x00\\x1e\\x1f\" + // 0x00660307: 0x00001E1F\n\t\"\\x00G\\x03\\x04\\x00\\x00\\x1e \" + // 0x00470304: 0x00001E20\n\t\"\\x00g\\x03\\x04\\x00\\x00\\x1e!\" + // 0x00670304: 0x00001E21\n\t\"\\x00H\\x03\\a\\x00\\x00\\x1e\\\"\" + // 0x00480307: 0x00001E22\n\t\"\\x00h\\x03\\a\\x00\\x00\\x1e#\" + // 0x00680307: 0x00001E23\n\t\"\\x00H\\x03#\\x00\\x00\\x1e$\" + // 0x00480323: 0x00001E24\n\t\"\\x00h\\x03#\\x00\\x00\\x1e%\" + // 0x00680323: 0x00001E25\n\t\"\\x00H\\x03\\b\\x00\\x00\\x1e&\" + // 0x00480308: 0x00001E26\n\t\"\\x00h\\x03\\b\\x00\\x00\\x1e'\" + // 0x00680308: 0x00001E27\n\t\"\\x00H\\x03'\\x00\\x00\\x1e(\" + // 0x00480327: 0x00001E28\n\t\"\\x00h\\x03'\\x00\\x00\\x1e)\" + // 0x00680327: 0x00001E29\n\t\"\\x00H\\x03.\\x00\\x00\\x1e*\" + // 0x0048032E: 0x00001E2A\n\t\"\\x00h\\x03.\\x00\\x00\\x1e+\" + // 0x0068032E: 0x00001E2B\n\t\"\\x00I\\x030\\x00\\x00\\x1e,\" + // 0x00490330: 0x00001E2C\n\t\"\\x00i\\x030\\x00\\x00\\x1e-\" + // 0x00690330: 0x00001E2D\n\t\"\\x00\\xcf\\x03\\x01\\x00\\x00\\x1e.\" + // 0x00CF0301: 0x00001E2E\n\t\"\\x00\\xef\\x03\\x01\\x00\\x00\\x1e/\" + // 0x00EF0301: 0x00001E2F\n\t\"\\x00K\\x03\\x01\\x00\\x00\\x1e0\" + // 0x004B0301: 0x00001E30\n\t\"\\x00k\\x03\\x01\\x00\\x00\\x1e1\" + // 0x006B0301: 0x00001E31\n\t\"\\x00K\\x03#\\x00\\x00\\x1e2\" + // 0x004B0323: 0x00001E32\n\t\"\\x00k\\x03#\\x00\\x00\\x1e3\" + // 0x006B0323: 0x00001E33\n\t\"\\x00K\\x031\\x00\\x00\\x1e4\" + // 0x004B0331: 0x00001E34\n\t\"\\x00k\\x031\\x00\\x00\\x1e5\" + // 0x006B0331: 0x00001E35\n\t\"\\x00L\\x03#\\x00\\x00\\x1e6\" + // 0x004C0323: 0x00001E36\n\t\"\\x00l\\x03#\\x00\\x00\\x1e7\" + // 0x006C0323: 0x00001E37\n\t\"\\x1e6\\x03\\x04\\x00\\x00\\x1e8\" + // 0x1E360304: 0x00001E38\n\t\"\\x1e7\\x03\\x04\\x00\\x00\\x1e9\" + // 0x1E370304: 0x00001E39\n\t\"\\x00L\\x031\\x00\\x00\\x1e:\" + // 0x004C0331: 0x00001E3A\n\t\"\\x00l\\x031\\x00\\x00\\x1e;\" + // 0x006C0331: 0x00001E3B\n\t\"\\x00L\\x03-\\x00\\x00\\x1e<\" + // 0x004C032D: 0x00001E3C\n\t\"\\x00l\\x03-\\x00\\x00\\x1e=\" + // 0x006C032D: 0x00001E3D\n\t\"\\x00M\\x03\\x01\\x00\\x00\\x1e>\" + // 0x004D0301: 0x00001E3E\n\t\"\\x00m\\x03\\x01\\x00\\x00\\x1e?\" + // 0x006D0301: 0x00001E3F\n\t\"\\x00M\\x03\\a\\x00\\x00\\x1e@\" + // 0x004D0307: 0x00001E40\n\t\"\\x00m\\x03\\a\\x00\\x00\\x1eA\" + // 0x006D0307: 0x00001E41\n\t\"\\x00M\\x03#\\x00\\x00\\x1eB\" + // 0x004D0323: 0x00001E42\n\t\"\\x00m\\x03#\\x00\\x00\\x1eC\" + // 0x006D0323: 0x00001E43\n\t\"\\x00N\\x03\\a\\x00\\x00\\x1eD\" + // 0x004E0307: 0x00001E44\n\t\"\\x00n\\x03\\a\\x00\\x00\\x1eE\" + // 0x006E0307: 0x00001E45\n\t\"\\x00N\\x03#\\x00\\x00\\x1eF\" + // 0x004E0323: 0x00001E46\n\t\"\\x00n\\x03#\\x00\\x00\\x1eG\" + // 0x006E0323: 0x00001E47\n\t\"\\x00N\\x031\\x00\\x00\\x1eH\" + // 0x004E0331: 0x00001E48\n\t\"\\x00n\\x031\\x00\\x00\\x1eI\" + // 0x006E0331: 0x00001E49\n\t\"\\x00N\\x03-\\x00\\x00\\x1eJ\" + // 0x004E032D: 0x00001E4A\n\t\"\\x00n\\x03-\\x00\\x00\\x1eK\" + // 0x006E032D: 0x00001E4B\n\t\"\\x00\\xd5\\x03\\x01\\x00\\x00\\x1eL\" + // 0x00D50301: 0x00001E4C\n\t\"\\x00\\xf5\\x03\\x01\\x00\\x00\\x1eM\" + // 0x00F50301: 0x00001E4D\n\t\"\\x00\\xd5\\x03\\b\\x00\\x00\\x1eN\" + // 0x00D50308: 0x00001E4E\n\t\"\\x00\\xf5\\x03\\b\\x00\\x00\\x1eO\" + // 0x00F50308: 0x00001E4F\n\t\"\\x01L\\x03\\x00\\x00\\x00\\x1eP\" + // 0x014C0300: 0x00001E50\n\t\"\\x01M\\x03\\x00\\x00\\x00\\x1eQ\" + // 0x014D0300: 0x00001E51\n\t\"\\x01L\\x03\\x01\\x00\\x00\\x1eR\" + // 0x014C0301: 0x00001E52\n\t\"\\x01M\\x03\\x01\\x00\\x00\\x1eS\" + // 0x014D0301: 0x00001E53\n\t\"\\x00P\\x03\\x01\\x00\\x00\\x1eT\" + // 0x00500301: 0x00001E54\n\t\"\\x00p\\x03\\x01\\x00\\x00\\x1eU\" + // 0x00700301: 0x00001E55\n\t\"\\x00P\\x03\\a\\x00\\x00\\x1eV\" + // 0x00500307: 0x00001E56\n\t\"\\x00p\\x03\\a\\x00\\x00\\x1eW\" + // 0x00700307: 0x00001E57\n\t\"\\x00R\\x03\\a\\x00\\x00\\x1eX\" + // 0x00520307: 0x00001E58\n\t\"\\x00r\\x03\\a\\x00\\x00\\x1eY\" + // 0x00720307: 0x00001E59\n\t\"\\x00R\\x03#\\x00\\x00\\x1eZ\" + // 0x00520323: 0x00001E5A\n\t\"\\x00r\\x03#\\x00\\x00\\x1e[\" + // 0x00720323: 0x00001E5B\n\t\"\\x1eZ\\x03\\x04\\x00\\x00\\x1e\\\\\" + // 0x1E5A0304: 0x00001E5C\n\t\"\\x1e[\\x03\\x04\\x00\\x00\\x1e]\" + // 0x1E5B0304: 0x00001E5D\n\t\"\\x00R\\x031\\x00\\x00\\x1e^\" + // 0x00520331: 0x00001E5E\n\t\"\\x00r\\x031\\x00\\x00\\x1e_\" + // 0x00720331: 0x00001E5F\n\t\"\\x00S\\x03\\a\\x00\\x00\\x1e`\" + // 0x00530307: 0x00001E60\n\t\"\\x00s\\x03\\a\\x00\\x00\\x1ea\" + // 0x00730307: 0x00001E61\n\t\"\\x00S\\x03#\\x00\\x00\\x1eb\" + // 0x00530323: 0x00001E62\n\t\"\\x00s\\x03#\\x00\\x00\\x1ec\" + // 0x00730323: 0x00001E63\n\t\"\\x01Z\\x03\\a\\x00\\x00\\x1ed\" + // 0x015A0307: 0x00001E64\n\t\"\\x01[\\x03\\a\\x00\\x00\\x1ee\" + // 0x015B0307: 0x00001E65\n\t\"\\x01`\\x03\\a\\x00\\x00\\x1ef\" + // 0x01600307: 0x00001E66\n\t\"\\x01a\\x03\\a\\x00\\x00\\x1eg\" + // 0x01610307: 0x00001E67\n\t\"\\x1eb\\x03\\a\\x00\\x00\\x1eh\" + // 0x1E620307: 0x00001E68\n\t\"\\x1ec\\x03\\a\\x00\\x00\\x1ei\" + // 0x1E630307: 0x00001E69\n\t\"\\x00T\\x03\\a\\x00\\x00\\x1ej\" + // 0x00540307: 0x00001E6A\n\t\"\\x00t\\x03\\a\\x00\\x00\\x1ek\" + // 0x00740307: 0x00001E6B\n\t\"\\x00T\\x03#\\x00\\x00\\x1el\" + // 0x00540323: 0x00001E6C\n\t\"\\x00t\\x03#\\x00\\x00\\x1em\" + // 0x00740323: 0x00001E6D\n\t\"\\x00T\\x031\\x00\\x00\\x1en\" + // 0x00540331: 0x00001E6E\n\t\"\\x00t\\x031\\x00\\x00\\x1eo\" + // 0x00740331: 0x00001E6F\n\t\"\\x00T\\x03-\\x00\\x00\\x1ep\" + // 0x0054032D: 0x00001E70\n\t\"\\x00t\\x03-\\x00\\x00\\x1eq\" + // 0x0074032D: 0x00001E71\n\t\"\\x00U\\x03$\\x00\\x00\\x1er\" + // 0x00550324: 0x00001E72\n\t\"\\x00u\\x03$\\x00\\x00\\x1es\" + // 0x00750324: 0x00001E73\n\t\"\\x00U\\x030\\x00\\x00\\x1et\" + // 0x00550330: 0x00001E74\n\t\"\\x00u\\x030\\x00\\x00\\x1eu\" + // 0x00750330: 0x00001E75\n\t\"\\x00U\\x03-\\x00\\x00\\x1ev\" + // 0x0055032D: 0x00001E76\n\t\"\\x00u\\x03-\\x00\\x00\\x1ew\" + // 0x0075032D: 0x00001E77\n\t\"\\x01h\\x03\\x01\\x00\\x00\\x1ex\" + // 0x01680301: 0x00001E78\n\t\"\\x01i\\x03\\x01\\x00\\x00\\x1ey\" + // 0x01690301: 0x00001E79\n\t\"\\x01j\\x03\\b\\x00\\x00\\x1ez\" + // 0x016A0308: 0x00001E7A\n\t\"\\x01k\\x03\\b\\x00\\x00\\x1e{\" + // 0x016B0308: 0x00001E7B\n\t\"\\x00V\\x03\\x03\\x00\\x00\\x1e|\" + // 0x00560303: 0x00001E7C\n\t\"\\x00v\\x03\\x03\\x00\\x00\\x1e}\" + // 0x00760303: 0x00001E7D\n\t\"\\x00V\\x03#\\x00\\x00\\x1e~\" + // 0x00560323: 0x00001E7E\n\t\"\\x00v\\x03#\\x00\\x00\\x1e\\x7f\" + // 0x00760323: 0x00001E7F\n\t\"\\x00W\\x03\\x00\\x00\\x00\\x1e\\x80\" + // 0x00570300: 0x00001E80\n\t\"\\x00w\\x03\\x00\\x00\\x00\\x1e\\x81\" + // 0x00770300: 0x00001E81\n\t\"\\x00W\\x03\\x01\\x00\\x00\\x1e\\x82\" + // 0x00570301: 0x00001E82\n\t\"\\x00w\\x03\\x01\\x00\\x00\\x1e\\x83\" + // 0x00770301: 0x00001E83\n\t\"\\x00W\\x03\\b\\x00\\x00\\x1e\\x84\" + // 0x00570308: 0x00001E84\n\t\"\\x00w\\x03\\b\\x00\\x00\\x1e\\x85\" + // 0x00770308: 0x00001E85\n\t\"\\x00W\\x03\\a\\x00\\x00\\x1e\\x86\" + // 0x00570307: 0x00001E86\n\t\"\\x00w\\x03\\a\\x00\\x00\\x1e\\x87\" + // 0x00770307: 0x00001E87\n\t\"\\x00W\\x03#\\x00\\x00\\x1e\\x88\" + // 0x00570323: 0x00001E88\n\t\"\\x00w\\x03#\\x00\\x00\\x1e\\x89\" + // 0x00770323: 0x00001E89\n\t\"\\x00X\\x03\\a\\x00\\x00\\x1e\\x8a\" + // 0x00580307: 0x00001E8A\n\t\"\\x00x\\x03\\a\\x00\\x00\\x1e\\x8b\" + // 0x00780307: 0x00001E8B\n\t\"\\x00X\\x03\\b\\x00\\x00\\x1e\\x8c\" + // 0x00580308: 0x00001E8C\n\t\"\\x00x\\x03\\b\\x00\\x00\\x1e\\x8d\" + // 0x00780308: 0x00001E8D\n\t\"\\x00Y\\x03\\a\\x00\\x00\\x1e\\x8e\" + // 0x00590307: 0x00001E8E\n\t\"\\x00y\\x03\\a\\x00\\x00\\x1e\\x8f\" + // 0x00790307: 0x00001E8F\n\t\"\\x00Z\\x03\\x02\\x00\\x00\\x1e\\x90\" + // 0x005A0302: 0x00001E90\n\t\"\\x00z\\x03\\x02\\x00\\x00\\x1e\\x91\" + // 0x007A0302: 0x00001E91\n\t\"\\x00Z\\x03#\\x00\\x00\\x1e\\x92\" + // 0x005A0323: 0x00001E92\n\t\"\\x00z\\x03#\\x00\\x00\\x1e\\x93\" + // 0x007A0323: 0x00001E93\n\t\"\\x00Z\\x031\\x00\\x00\\x1e\\x94\" + // 0x005A0331: 0x00001E94\n\t\"\\x00z\\x031\\x00\\x00\\x1e\\x95\" + // 0x007A0331: 0x00001E95\n\t\"\\x00h\\x031\\x00\\x00\\x1e\\x96\" + // 0x00680331: 0x00001E96\n\t\"\\x00t\\x03\\b\\x00\\x00\\x1e\\x97\" + // 0x00740308: 0x00001E97\n\t\"\\x00w\\x03\\n\\x00\\x00\\x1e\\x98\" + // 0x0077030A: 0x00001E98\n\t\"\\x00y\\x03\\n\\x00\\x00\\x1e\\x99\" + // 0x0079030A: 0x00001E99\n\t\"\\x01\\x7f\\x03\\a\\x00\\x00\\x1e\\x9b\" + // 0x017F0307: 0x00001E9B\n\t\"\\x00A\\x03#\\x00\\x00\\x1e\\xa0\" + // 0x00410323: 0x00001EA0\n\t\"\\x00a\\x03#\\x00\\x00\\x1e\\xa1\" + // 0x00610323: 0x00001EA1\n\t\"\\x00A\\x03\\t\\x00\\x00\\x1e\\xa2\" + // 0x00410309: 0x00001EA2\n\t\"\\x00a\\x03\\t\\x00\\x00\\x1e\\xa3\" + // 0x00610309: 0x00001EA3\n\t\"\\x00\\xc2\\x03\\x01\\x00\\x00\\x1e\\xa4\" + // 0x00C20301: 0x00001EA4\n\t\"\\x00\\xe2\\x03\\x01\\x00\\x00\\x1e\\xa5\" + // 0x00E20301: 0x00001EA5\n\t\"\\x00\\xc2\\x03\\x00\\x00\\x00\\x1e\\xa6\" + // 0x00C20300: 0x00001EA6\n\t\"\\x00\\xe2\\x03\\x00\\x00\\x00\\x1e\\xa7\" + // 0x00E20300: 0x00001EA7\n\t\"\\x00\\xc2\\x03\\t\\x00\\x00\\x1e\\xa8\" + // 0x00C20309: 0x00001EA8\n\t\"\\x00\\xe2\\x03\\t\\x00\\x00\\x1e\\xa9\" + // 0x00E20309: 0x00001EA9\n\t\"\\x00\\xc2\\x03\\x03\\x00\\x00\\x1e\\xaa\" + // 0x00C20303: 0x00001EAA\n\t\"\\x00\\xe2\\x03\\x03\\x00\\x00\\x1e\\xab\" + // 0x00E20303: 0x00001EAB\n\t\"\\x1e\\xa0\\x03\\x02\\x00\\x00\\x1e\\xac\" + // 0x1EA00302: 0x00001EAC\n\t\"\\x1e\\xa1\\x03\\x02\\x00\\x00\\x1e\\xad\" + // 0x1EA10302: 0x00001EAD\n\t\"\\x01\\x02\\x03\\x01\\x00\\x00\\x1e\\xae\" + // 0x01020301: 0x00001EAE\n\t\"\\x01\\x03\\x03\\x01\\x00\\x00\\x1e\\xaf\" + // 0x01030301: 0x00001EAF\n\t\"\\x01\\x02\\x03\\x00\\x00\\x00\\x1e\\xb0\" + // 0x01020300: 0x00001EB0\n\t\"\\x01\\x03\\x03\\x00\\x00\\x00\\x1e\\xb1\" + // 0x01030300: 0x00001EB1\n\t\"\\x01\\x02\\x03\\t\\x00\\x00\\x1e\\xb2\" + // 0x01020309: 0x00001EB2\n\t\"\\x01\\x03\\x03\\t\\x00\\x00\\x1e\\xb3\" + // 0x01030309: 0x00001EB3\n\t\"\\x01\\x02\\x03\\x03\\x00\\x00\\x1e\\xb4\" + // 0x01020303: 0x00001EB4\n\t\"\\x01\\x03\\x03\\x03\\x00\\x00\\x1e\\xb5\" + // 0x01030303: 0x00001EB5\n\t\"\\x1e\\xa0\\x03\\x06\\x00\\x00\\x1e\\xb6\" + // 0x1EA00306: 0x00001EB6\n\t\"\\x1e\\xa1\\x03\\x06\\x00\\x00\\x1e\\xb7\" + // 0x1EA10306: 0x00001EB7\n\t\"\\x00E\\x03#\\x00\\x00\\x1e\\xb8\" + // 0x00450323: 0x00001EB8\n\t\"\\x00e\\x03#\\x00\\x00\\x1e\\xb9\" + // 0x00650323: 0x00001EB9\n\t\"\\x00E\\x03\\t\\x00\\x00\\x1e\\xba\" + // 0x00450309: 0x00001EBA\n\t\"\\x00e\\x03\\t\\x00\\x00\\x1e\\xbb\" + // 0x00650309: 0x00001EBB\n\t\"\\x00E\\x03\\x03\\x00\\x00\\x1e\\xbc\" + // 0x00450303: 0x00001EBC\n\t\"\\x00e\\x03\\x03\\x00\\x00\\x1e\\xbd\" + // 0x00650303: 0x00001EBD\n\t\"\\x00\\xca\\x03\\x01\\x00\\x00\\x1e\\xbe\" + // 0x00CA0301: 0x00001EBE\n\t\"\\x00\\xea\\x03\\x01\\x00\\x00\\x1e\\xbf\" + // 0x00EA0301: 0x00001EBF\n\t\"\\x00\\xca\\x03\\x00\\x00\\x00\\x1e\\xc0\" + // 0x00CA0300: 0x00001EC0\n\t\"\\x00\\xea\\x03\\x00\\x00\\x00\\x1e\\xc1\" + // 0x00EA0300: 0x00001EC1\n\t\"\\x00\\xca\\x03\\t\\x00\\x00\\x1e\\xc2\" + // 0x00CA0309: 0x00001EC2\n\t\"\\x00\\xea\\x03\\t\\x00\\x00\\x1e\\xc3\" + // 0x00EA0309: 0x00001EC3\n\t\"\\x00\\xca\\x03\\x03\\x00\\x00\\x1e\\xc4\" + // 0x00CA0303: 0x00001EC4\n\t\"\\x00\\xea\\x03\\x03\\x00\\x00\\x1e\\xc5\" + // 0x00EA0303: 0x00001EC5\n\t\"\\x1e\\xb8\\x03\\x02\\x00\\x00\\x1e\\xc6\" + // 0x1EB80302: 0x00001EC6\n\t\"\\x1e\\xb9\\x03\\x02\\x00\\x00\\x1e\\xc7\" + // 0x1EB90302: 0x00001EC7\n\t\"\\x00I\\x03\\t\\x00\\x00\\x1e\\xc8\" + // 0x00490309: 0x00001EC8\n\t\"\\x00i\\x03\\t\\x00\\x00\\x1e\\xc9\" + // 0x00690309: 0x00001EC9\n\t\"\\x00I\\x03#\\x00\\x00\\x1e\\xca\" + // 0x00490323: 0x00001ECA\n\t\"\\x00i\\x03#\\x00\\x00\\x1e\\xcb\" + // 0x00690323: 0x00001ECB\n\t\"\\x00O\\x03#\\x00\\x00\\x1e\\xcc\" + // 0x004F0323: 0x00001ECC\n\t\"\\x00o\\x03#\\x00\\x00\\x1e\\xcd\" + // 0x006F0323: 0x00001ECD\n\t\"\\x00O\\x03\\t\\x00\\x00\\x1e\\xce\" + // 0x004F0309: 0x00001ECE\n\t\"\\x00o\\x03\\t\\x00\\x00\\x1e\\xcf\" + // 0x006F0309: 0x00001ECF\n\t\"\\x00\\xd4\\x03\\x01\\x00\\x00\\x1e\\xd0\" + // 0x00D40301: 0x00001ED0\n\t\"\\x00\\xf4\\x03\\x01\\x00\\x00\\x1e\\xd1\" + // 0x00F40301: 0x00001ED1\n\t\"\\x00\\xd4\\x03\\x00\\x00\\x00\\x1e\\xd2\" + // 0x00D40300: 0x00001ED2\n\t\"\\x00\\xf4\\x03\\x00\\x00\\x00\\x1e\\xd3\" + // 0x00F40300: 0x00001ED3\n\t\"\\x00\\xd4\\x03\\t\\x00\\x00\\x1e\\xd4\" + // 0x00D40309: 0x00001ED4\n\t\"\\x00\\xf4\\x03\\t\\x00\\x00\\x1e\\xd5\" + // 0x00F40309: 0x00001ED5\n\t\"\\x00\\xd4\\x03\\x03\\x00\\x00\\x1e\\xd6\" + // 0x00D40303: 0x00001ED6\n\t\"\\x00\\xf4\\x03\\x03\\x00\\x00\\x1e\\xd7\" + // 0x00F40303: 0x00001ED7\n\t\"\\x1e\\xcc\\x03\\x02\\x00\\x00\\x1e\\xd8\" + // 0x1ECC0302: 0x00001ED8\n\t\"\\x1e\\xcd\\x03\\x02\\x00\\x00\\x1e\\xd9\" + // 0x1ECD0302: 0x00001ED9\n\t\"\\x01\\xa0\\x03\\x01\\x00\\x00\\x1e\\xda\" + // 0x01A00301: 0x00001EDA\n\t\"\\x01\\xa1\\x03\\x01\\x00\\x00\\x1e\\xdb\" + // 0x01A10301: 0x00001EDB\n\t\"\\x01\\xa0\\x03\\x00\\x00\\x00\\x1e\\xdc\" + // 0x01A00300: 0x00001EDC\n\t\"\\x01\\xa1\\x03\\x00\\x00\\x00\\x1e\\xdd\" + // 0x01A10300: 0x00001EDD\n\t\"\\x01\\xa0\\x03\\t\\x00\\x00\\x1e\\xde\" + // 0x01A00309: 0x00001EDE\n\t\"\\x01\\xa1\\x03\\t\\x00\\x00\\x1e\\xdf\" + // 0x01A10309: 0x00001EDF\n\t\"\\x01\\xa0\\x03\\x03\\x00\\x00\\x1e\\xe0\" + // 0x01A00303: 0x00001EE0\n\t\"\\x01\\xa1\\x03\\x03\\x00\\x00\\x1e\\xe1\" + // 0x01A10303: 0x00001EE1\n\t\"\\x01\\xa0\\x03#\\x00\\x00\\x1e\\xe2\" + // 0x01A00323: 0x00001EE2\n\t\"\\x01\\xa1\\x03#\\x00\\x00\\x1e\\xe3\" + // 0x01A10323: 0x00001EE3\n\t\"\\x00U\\x03#\\x00\\x00\\x1e\\xe4\" + // 0x00550323: 0x00001EE4\n\t\"\\x00u\\x03#\\x00\\x00\\x1e\\xe5\" + // 0x00750323: 0x00001EE5\n\t\"\\x00U\\x03\\t\\x00\\x00\\x1e\\xe6\" + // 0x00550309: 0x00001EE6\n\t\"\\x00u\\x03\\t\\x00\\x00\\x1e\\xe7\" + // 0x00750309: 0x00001EE7\n\t\"\\x01\\xaf\\x03\\x01\\x00\\x00\\x1e\\xe8\" + // 0x01AF0301: 0x00001EE8\n\t\"\\x01\\xb0\\x03\\x01\\x00\\x00\\x1e\\xe9\" + // 0x01B00301: 0x00001EE9\n\t\"\\x01\\xaf\\x03\\x00\\x00\\x00\\x1e\\xea\" + // 0x01AF0300: 0x00001EEA\n\t\"\\x01\\xb0\\x03\\x00\\x00\\x00\\x1e\\xeb\" + // 0x01B00300: 0x00001EEB\n\t\"\\x01\\xaf\\x03\\t\\x00\\x00\\x1e\\xec\" + // 0x01AF0309: 0x00001EEC\n\t\"\\x01\\xb0\\x03\\t\\x00\\x00\\x1e\\xed\" + // 0x01B00309: 0x00001EED\n\t\"\\x01\\xaf\\x03\\x03\\x00\\x00\\x1e\\xee\" + // 0x01AF0303: 0x00001EEE\n\t\"\\x01\\xb0\\x03\\x03\\x00\\x00\\x1e\\xef\" + // 0x01B00303: 0x00001EEF\n\t\"\\x01\\xaf\\x03#\\x00\\x00\\x1e\\xf0\" + // 0x01AF0323: 0x00001EF0\n\t\"\\x01\\xb0\\x03#\\x00\\x00\\x1e\\xf1\" + // 0x01B00323: 0x00001EF1\n\t\"\\x00Y\\x03\\x00\\x00\\x00\\x1e\\xf2\" + // 0x00590300: 0x00001EF2\n\t\"\\x00y\\x03\\x00\\x00\\x00\\x1e\\xf3\" + // 0x00790300: 0x00001EF3\n\t\"\\x00Y\\x03#\\x00\\x00\\x1e\\xf4\" + // 0x00590323: 0x00001EF4\n\t\"\\x00y\\x03#\\x00\\x00\\x1e\\xf5\" + // 0x00790323: 0x00001EF5\n\t\"\\x00Y\\x03\\t\\x00\\x00\\x1e\\xf6\" + // 0x00590309: 0x00001EF6\n\t\"\\x00y\\x03\\t\\x00\\x00\\x1e\\xf7\" + // 0x00790309: 0x00001EF7\n\t\"\\x00Y\\x03\\x03\\x00\\x00\\x1e\\xf8\" + // 0x00590303: 0x00001EF8\n\t\"\\x00y\\x03\\x03\\x00\\x00\\x1e\\xf9\" + // 0x00790303: 0x00001EF9\n\t\"\\x03\\xb1\\x03\\x13\\x00\\x00\\x1f\\x00\" + // 0x03B10313: 0x00001F00\n\t\"\\x03\\xb1\\x03\\x14\\x00\\x00\\x1f\\x01\" + // 0x03B10314: 0x00001F01\n\t\"\\x1f\\x00\\x03\\x00\\x00\\x00\\x1f\\x02\" + // 0x1F000300: 0x00001F02\n\t\"\\x1f\\x01\\x03\\x00\\x00\\x00\\x1f\\x03\" + // 0x1F010300: 0x00001F03\n\t\"\\x1f\\x00\\x03\\x01\\x00\\x00\\x1f\\x04\" + // 0x1F000301: 0x00001F04\n\t\"\\x1f\\x01\\x03\\x01\\x00\\x00\\x1f\\x05\" + // 0x1F010301: 0x00001F05\n\t\"\\x1f\\x00\\x03B\\x00\\x00\\x1f\\x06\" + // 0x1F000342: 0x00001F06\n\t\"\\x1f\\x01\\x03B\\x00\\x00\\x1f\\a\" + // 0x1F010342: 0x00001F07\n\t\"\\x03\\x91\\x03\\x13\\x00\\x00\\x1f\\b\" + // 0x03910313: 0x00001F08\n\t\"\\x03\\x91\\x03\\x14\\x00\\x00\\x1f\\t\" + // 0x03910314: 0x00001F09\n\t\"\\x1f\\b\\x03\\x00\\x00\\x00\\x1f\\n\" + // 0x1F080300: 0x00001F0A\n\t\"\\x1f\\t\\x03\\x00\\x00\\x00\\x1f\\v\" + // 0x1F090300: 0x00001F0B\n\t\"\\x1f\\b\\x03\\x01\\x00\\x00\\x1f\\f\" + // 0x1F080301: 0x00001F0C\n\t\"\\x1f\\t\\x03\\x01\\x00\\x00\\x1f\\r\" + // 0x1F090301: 0x00001F0D\n\t\"\\x1f\\b\\x03B\\x00\\x00\\x1f\\x0e\" + // 0x1F080342: 0x00001F0E\n\t\"\\x1f\\t\\x03B\\x00\\x00\\x1f\\x0f\" + // 0x1F090342: 0x00001F0F\n\t\"\\x03\\xb5\\x03\\x13\\x00\\x00\\x1f\\x10\" + // 0x03B50313: 0x00001F10\n\t\"\\x03\\xb5\\x03\\x14\\x00\\x00\\x1f\\x11\" + // 0x03B50314: 0x00001F11\n\t\"\\x1f\\x10\\x03\\x00\\x00\\x00\\x1f\\x12\" + // 0x1F100300: 0x00001F12\n\t\"\\x1f\\x11\\x03\\x00\\x00\\x00\\x1f\\x13\" + // 0x1F110300: 0x00001F13\n\t\"\\x1f\\x10\\x03\\x01\\x00\\x00\\x1f\\x14\" + // 0x1F100301: 0x00001F14\n\t\"\\x1f\\x11\\x03\\x01\\x00\\x00\\x1f\\x15\" + // 0x1F110301: 0x00001F15\n\t\"\\x03\\x95\\x03\\x13\\x00\\x00\\x1f\\x18\" + // 0x03950313: 0x00001F18\n\t\"\\x03\\x95\\x03\\x14\\x00\\x00\\x1f\\x19\" + // 0x03950314: 0x00001F19\n\t\"\\x1f\\x18\\x03\\x00\\x00\\x00\\x1f\\x1a\" + // 0x1F180300: 0x00001F1A\n\t\"\\x1f\\x19\\x03\\x00\\x00\\x00\\x1f\\x1b\" + // 0x1F190300: 0x00001F1B\n\t\"\\x1f\\x18\\x03\\x01\\x00\\x00\\x1f\\x1c\" + // 0x1F180301: 0x00001F1C\n\t\"\\x1f\\x19\\x03\\x01\\x00\\x00\\x1f\\x1d\" + // 0x1F190301: 0x00001F1D\n\t\"\\x03\\xb7\\x03\\x13\\x00\\x00\\x1f \" + // 0x03B70313: 0x00001F20\n\t\"\\x03\\xb7\\x03\\x14\\x00\\x00\\x1f!\" + // 0x03B70314: 0x00001F21\n\t\"\\x1f \\x03\\x00\\x00\\x00\\x1f\\\"\" + // 0x1F200300: 0x00001F22\n\t\"\\x1f!\\x03\\x00\\x00\\x00\\x1f#\" + // 0x1F210300: 0x00001F23\n\t\"\\x1f \\x03\\x01\\x00\\x00\\x1f$\" + // 0x1F200301: 0x00001F24\n\t\"\\x1f!\\x03\\x01\\x00\\x00\\x1f%\" + // 0x1F210301: 0x00001F25\n\t\"\\x1f \\x03B\\x00\\x00\\x1f&\" + // 0x1F200342: 0x00001F26\n\t\"\\x1f!\\x03B\\x00\\x00\\x1f'\" + // 0x1F210342: 0x00001F27\n\t\"\\x03\\x97\\x03\\x13\\x00\\x00\\x1f(\" + // 0x03970313: 0x00001F28\n\t\"\\x03\\x97\\x03\\x14\\x00\\x00\\x1f)\" + // 0x03970314: 0x00001F29\n\t\"\\x1f(\\x03\\x00\\x00\\x00\\x1f*\" + // 0x1F280300: 0x00001F2A\n\t\"\\x1f)\\x03\\x00\\x00\\x00\\x1f+\" + // 0x1F290300: 0x00001F2B\n\t\"\\x1f(\\x03\\x01\\x00\\x00\\x1f,\" + // 0x1F280301: 0x00001F2C\n\t\"\\x1f)\\x03\\x01\\x00\\x00\\x1f-\" + // 0x1F290301: 0x00001F2D\n\t\"\\x1f(\\x03B\\x00\\x00\\x1f.\" + // 0x1F280342: 0x00001F2E\n\t\"\\x1f)\\x03B\\x00\\x00\\x1f/\" + // 0x1F290342: 0x00001F2F\n\t\"\\x03\\xb9\\x03\\x13\\x00\\x00\\x1f0\" + // 0x03B90313: 0x00001F30\n\t\"\\x03\\xb9\\x03\\x14\\x00\\x00\\x1f1\" + // 0x03B90314: 0x00001F31\n\t\"\\x1f0\\x03\\x00\\x00\\x00\\x1f2\" + // 0x1F300300: 0x00001F32\n\t\"\\x1f1\\x03\\x00\\x00\\x00\\x1f3\" + // 0x1F310300: 0x00001F33\n\t\"\\x1f0\\x03\\x01\\x00\\x00\\x1f4\" + // 0x1F300301: 0x00001F34\n\t\"\\x1f1\\x03\\x01\\x00\\x00\\x1f5\" + // 0x1F310301: 0x00001F35\n\t\"\\x1f0\\x03B\\x00\\x00\\x1f6\" + // 0x1F300342: 0x00001F36\n\t\"\\x1f1\\x03B\\x00\\x00\\x1f7\" + // 0x1F310342: 0x00001F37\n\t\"\\x03\\x99\\x03\\x13\\x00\\x00\\x1f8\" + // 0x03990313: 0x00001F38\n\t\"\\x03\\x99\\x03\\x14\\x00\\x00\\x1f9\" + // 0x03990314: 0x00001F39\n\t\"\\x1f8\\x03\\x00\\x00\\x00\\x1f:\" + // 0x1F380300: 0x00001F3A\n\t\"\\x1f9\\x03\\x00\\x00\\x00\\x1f;\" + // 0x1F390300: 0x00001F3B\n\t\"\\x1f8\\x03\\x01\\x00\\x00\\x1f<\" + // 0x1F380301: 0x00001F3C\n\t\"\\x1f9\\x03\\x01\\x00\\x00\\x1f=\" + // 0x1F390301: 0x00001F3D\n\t\"\\x1f8\\x03B\\x00\\x00\\x1f>\" + // 0x1F380342: 0x00001F3E\n\t\"\\x1f9\\x03B\\x00\\x00\\x1f?\" + // 0x1F390342: 0x00001F3F\n\t\"\\x03\\xbf\\x03\\x13\\x00\\x00\\x1f@\" + // 0x03BF0313: 0x00001F40\n\t\"\\x03\\xbf\\x03\\x14\\x00\\x00\\x1fA\" + // 0x03BF0314: 0x00001F41\n\t\"\\x1f@\\x03\\x00\\x00\\x00\\x1fB\" + // 0x1F400300: 0x00001F42\n\t\"\\x1fA\\x03\\x00\\x00\\x00\\x1fC\" + // 0x1F410300: 0x00001F43\n\t\"\\x1f@\\x03\\x01\\x00\\x00\\x1fD\" + // 0x1F400301: 0x00001F44\n\t\"\\x1fA\\x03\\x01\\x00\\x00\\x1fE\" + // 0x1F410301: 0x00001F45\n\t\"\\x03\\x9f\\x03\\x13\\x00\\x00\\x1fH\" + // 0x039F0313: 0x00001F48\n\t\"\\x03\\x9f\\x03\\x14\\x00\\x00\\x1fI\" + // 0x039F0314: 0x00001F49\n\t\"\\x1fH\\x03\\x00\\x00\\x00\\x1fJ\" + // 0x1F480300: 0x00001F4A\n\t\"\\x1fI\\x03\\x00\\x00\\x00\\x1fK\" + // 0x1F490300: 0x00001F4B\n\t\"\\x1fH\\x03\\x01\\x00\\x00\\x1fL\" + // 0x1F480301: 0x00001F4C\n\t\"\\x1fI\\x03\\x01\\x00\\x00\\x1fM\" + // 0x1F490301: 0x00001F4D\n\t\"\\x03\\xc5\\x03\\x13\\x00\\x00\\x1fP\" + // 0x03C50313: 0x00001F50\n\t\"\\x03\\xc5\\x03\\x14\\x00\\x00\\x1fQ\" + // 0x03C50314: 0x00001F51\n\t\"\\x1fP\\x03\\x00\\x00\\x00\\x1fR\" + // 0x1F500300: 0x00001F52\n\t\"\\x1fQ\\x03\\x00\\x00\\x00\\x1fS\" + // 0x1F510300: 0x00001F53\n\t\"\\x1fP\\x03\\x01\\x00\\x00\\x1fT\" + // 0x1F500301: 0x00001F54\n\t\"\\x1fQ\\x03\\x01\\x00\\x00\\x1fU\" + // 0x1F510301: 0x00001F55\n\t\"\\x1fP\\x03B\\x00\\x00\\x1fV\" + // 0x1F500342: 0x00001F56\n\t\"\\x1fQ\\x03B\\x00\\x00\\x1fW\" + // 0x1F510342: 0x00001F57\n\t\"\\x03\\xa5\\x03\\x14\\x00\\x00\\x1fY\" + // 0x03A50314: 0x00001F59\n\t\"\\x1fY\\x03\\x00\\x00\\x00\\x1f[\" + // 0x1F590300: 0x00001F5B\n\t\"\\x1fY\\x03\\x01\\x00\\x00\\x1f]\" + // 0x1F590301: 0x00001F5D\n\t\"\\x1fY\\x03B\\x00\\x00\\x1f_\" + // 0x1F590342: 0x00001F5F\n\t\"\\x03\\xc9\\x03\\x13\\x00\\x00\\x1f`\" + // 0x03C90313: 0x00001F60\n\t\"\\x03\\xc9\\x03\\x14\\x00\\x00\\x1fa\" + // 0x03C90314: 0x00001F61\n\t\"\\x1f`\\x03\\x00\\x00\\x00\\x1fb\" + // 0x1F600300: 0x00001F62\n\t\"\\x1fa\\x03\\x00\\x00\\x00\\x1fc\" + // 0x1F610300: 0x00001F63\n\t\"\\x1f`\\x03\\x01\\x00\\x00\\x1fd\" + // 0x1F600301: 0x00001F64\n\t\"\\x1fa\\x03\\x01\\x00\\x00\\x1fe\" + // 0x1F610301: 0x00001F65\n\t\"\\x1f`\\x03B\\x00\\x00\\x1ff\" + // 0x1F600342: 0x00001F66\n\t\"\\x1fa\\x03B\\x00\\x00\\x1fg\" + // 0x1F610342: 0x00001F67\n\t\"\\x03\\xa9\\x03\\x13\\x00\\x00\\x1fh\" + // 0x03A90313: 0x00001F68\n\t\"\\x03\\xa9\\x03\\x14\\x00\\x00\\x1fi\" + // 0x03A90314: 0x00001F69\n\t\"\\x1fh\\x03\\x00\\x00\\x00\\x1fj\" + // 0x1F680300: 0x00001F6A\n\t\"\\x1fi\\x03\\x00\\x00\\x00\\x1fk\" + // 0x1F690300: 0x00001F6B\n\t\"\\x1fh\\x03\\x01\\x00\\x00\\x1fl\" + // 0x1F680301: 0x00001F6C\n\t\"\\x1fi\\x03\\x01\\x00\\x00\\x1fm\" + // 0x1F690301: 0x00001F6D\n\t\"\\x1fh\\x03B\\x00\\x00\\x1fn\" + // 0x1F680342: 0x00001F6E\n\t\"\\x1fi\\x03B\\x00\\x00\\x1fo\" + // 0x1F690342: 0x00001F6F\n\t\"\\x03\\xb1\\x03\\x00\\x00\\x00\\x1fp\" + // 0x03B10300: 0x00001F70\n\t\"\\x03\\xb5\\x03\\x00\\x00\\x00\\x1fr\" + // 0x03B50300: 0x00001F72\n\t\"\\x03\\xb7\\x03\\x00\\x00\\x00\\x1ft\" + // 0x03B70300: 0x00001F74\n\t\"\\x03\\xb9\\x03\\x00\\x00\\x00\\x1fv\" + // 0x03B90300: 0x00001F76\n\t\"\\x03\\xbf\\x03\\x00\\x00\\x00\\x1fx\" + // 0x03BF0300: 0x00001F78\n\t\"\\x03\\xc5\\x03\\x00\\x00\\x00\\x1fz\" + // 0x03C50300: 0x00001F7A\n\t\"\\x03\\xc9\\x03\\x00\\x00\\x00\\x1f|\" + // 0x03C90300: 0x00001F7C\n\t\"\\x1f\\x00\\x03E\\x00\\x00\\x1f\\x80\" + // 0x1F000345: 0x00001F80\n\t\"\\x1f\\x01\\x03E\\x00\\x00\\x1f\\x81\" + // 0x1F010345: 0x00001F81\n\t\"\\x1f\\x02\\x03E\\x00\\x00\\x1f\\x82\" + // 0x1F020345: 0x00001F82\n\t\"\\x1f\\x03\\x03E\\x00\\x00\\x1f\\x83\" + // 0x1F030345: 0x00001F83\n\t\"\\x1f\\x04\\x03E\\x00\\x00\\x1f\\x84\" + // 0x1F040345: 0x00001F84\n\t\"\\x1f\\x05\\x03E\\x00\\x00\\x1f\\x85\" + // 0x1F050345: 0x00001F85\n\t\"\\x1f\\x06\\x03E\\x00\\x00\\x1f\\x86\" + // 0x1F060345: 0x00001F86\n\t\"\\x1f\\a\\x03E\\x00\\x00\\x1f\\x87\" + // 0x1F070345: 0x00001F87\n\t\"\\x1f\\b\\x03E\\x00\\x00\\x1f\\x88\" + // 0x1F080345: 0x00001F88\n\t\"\\x1f\\t\\x03E\\x00\\x00\\x1f\\x89\" + // 0x1F090345: 0x00001F89\n\t\"\\x1f\\n\\x03E\\x00\\x00\\x1f\\x8a\" + // 0x1F0A0345: 0x00001F8A\n\t\"\\x1f\\v\\x03E\\x00\\x00\\x1f\\x8b\" + // 0x1F0B0345: 0x00001F8B\n\t\"\\x1f\\f\\x03E\\x00\\x00\\x1f\\x8c\" + // 0x1F0C0345: 0x00001F8C\n\t\"\\x1f\\r\\x03E\\x00\\x00\\x1f\\x8d\" + // 0x1F0D0345: 0x00001F8D\n\t\"\\x1f\\x0e\\x03E\\x00\\x00\\x1f\\x8e\" + // 0x1F0E0345: 0x00001F8E\n\t\"\\x1f\\x0f\\x03E\\x00\\x00\\x1f\\x8f\" + // 0x1F0F0345: 0x00001F8F\n\t\"\\x1f \\x03E\\x00\\x00\\x1f\\x90\" + // 0x1F200345: 0x00001F90\n\t\"\\x1f!\\x03E\\x00\\x00\\x1f\\x91\" + // 0x1F210345: 0x00001F91\n\t\"\\x1f\\\"\\x03E\\x00\\x00\\x1f\\x92\" + // 0x1F220345: 0x00001F92\n\t\"\\x1f#\\x03E\\x00\\x00\\x1f\\x93\" + // 0x1F230345: 0x00001F93\n\t\"\\x1f$\\x03E\\x00\\x00\\x1f\\x94\" + // 0x1F240345: 0x00001F94\n\t\"\\x1f%\\x03E\\x00\\x00\\x1f\\x95\" + // 0x1F250345: 0x00001F95\n\t\"\\x1f&\\x03E\\x00\\x00\\x1f\\x96\" + // 0x1F260345: 0x00001F96\n\t\"\\x1f'\\x03E\\x00\\x00\\x1f\\x97\" + // 0x1F270345: 0x00001F97\n\t\"\\x1f(\\x03E\\x00\\x00\\x1f\\x98\" + // 0x1F280345: 0x00001F98\n\t\"\\x1f)\\x03E\\x00\\x00\\x1f\\x99\" + // 0x1F290345: 0x00001F99\n\t\"\\x1f*\\x03E\\x00\\x00\\x1f\\x9a\" + // 0x1F2A0345: 0x00001F9A\n\t\"\\x1f+\\x03E\\x00\\x00\\x1f\\x9b\" + // 0x1F2B0345: 0x00001F9B\n\t\"\\x1f,\\x03E\\x00\\x00\\x1f\\x9c\" + // 0x1F2C0345: 0x00001F9C\n\t\"\\x1f-\\x03E\\x00\\x00\\x1f\\x9d\" + // 0x1F2D0345: 0x00001F9D\n\t\"\\x1f.\\x03E\\x00\\x00\\x1f\\x9e\" + // 0x1F2E0345: 0x00001F9E\n\t\"\\x1f/\\x03E\\x00\\x00\\x1f\\x9f\" + // 0x1F2F0345: 0x00001F9F\n\t\"\\x1f`\\x03E\\x00\\x00\\x1f\\xa0\" + // 0x1F600345: 0x00001FA0\n\t\"\\x1fa\\x03E\\x00\\x00\\x1f\\xa1\" + // 0x1F610345: 0x00001FA1\n\t\"\\x1fb\\x03E\\x00\\x00\\x1f\\xa2\" + // 0x1F620345: 0x00001FA2\n\t\"\\x1fc\\x03E\\x00\\x00\\x1f\\xa3\" + // 0x1F630345: 0x00001FA3\n\t\"\\x1fd\\x03E\\x00\\x00\\x1f\\xa4\" + // 0x1F640345: 0x00001FA4\n\t\"\\x1fe\\x03E\\x00\\x00\\x1f\\xa5\" + // 0x1F650345: 0x00001FA5\n\t\"\\x1ff\\x03E\\x00\\x00\\x1f\\xa6\" + // 0x1F660345: 0x00001FA6\n\t\"\\x1fg\\x03E\\x00\\x00\\x1f\\xa7\" + // 0x1F670345: 0x00001FA7\n\t\"\\x1fh\\x03E\\x00\\x00\\x1f\\xa8\" + // 0x1F680345: 0x00001FA8\n\t\"\\x1fi\\x03E\\x00\\x00\\x1f\\xa9\" + // 0x1F690345: 0x00001FA9\n\t\"\\x1fj\\x03E\\x00\\x00\\x1f\\xaa\" + // 0x1F6A0345: 0x00001FAA\n\t\"\\x1fk\\x03E\\x00\\x00\\x1f\\xab\" + // 0x1F6B0345: 0x00001FAB\n\t\"\\x1fl\\x03E\\x00\\x00\\x1f\\xac\" + // 0x1F6C0345: 0x00001FAC\n\t\"\\x1fm\\x03E\\x00\\x00\\x1f\\xad\" + // 0x1F6D0345: 0x00001FAD\n\t\"\\x1fn\\x03E\\x00\\x00\\x1f\\xae\" + // 0x1F6E0345: 0x00001FAE\n\t\"\\x1fo\\x03E\\x00\\x00\\x1f\\xaf\" + // 0x1F6F0345: 0x00001FAF\n\t\"\\x03\\xb1\\x03\\x06\\x00\\x00\\x1f\\xb0\" + // 0x03B10306: 0x00001FB0\n\t\"\\x03\\xb1\\x03\\x04\\x00\\x00\\x1f\\xb1\" + // 0x03B10304: 0x00001FB1\n\t\"\\x1fp\\x03E\\x00\\x00\\x1f\\xb2\" + // 0x1F700345: 0x00001FB2\n\t\"\\x03\\xb1\\x03E\\x00\\x00\\x1f\\xb3\" + // 0x03B10345: 0x00001FB3\n\t\"\\x03\\xac\\x03E\\x00\\x00\\x1f\\xb4\" + // 0x03AC0345: 0x00001FB4\n\t\"\\x03\\xb1\\x03B\\x00\\x00\\x1f\\xb6\" + // 0x03B10342: 0x00001FB6\n\t\"\\x1f\\xb6\\x03E\\x00\\x00\\x1f\\xb7\" + // 0x1FB60345: 0x00001FB7\n\t\"\\x03\\x91\\x03\\x06\\x00\\x00\\x1f\\xb8\" + // 0x03910306: 0x00001FB8\n\t\"\\x03\\x91\\x03\\x04\\x00\\x00\\x1f\\xb9\" + // 0x03910304: 0x00001FB9\n\t\"\\x03\\x91\\x03\\x00\\x00\\x00\\x1f\\xba\" + // 0x03910300: 0x00001FBA\n\t\"\\x03\\x91\\x03E\\x00\\x00\\x1f\\xbc\" + // 0x03910345: 0x00001FBC\n\t\"\\x00\\xa8\\x03B\\x00\\x00\\x1f\\xc1\" + // 0x00A80342: 0x00001FC1\n\t\"\\x1ft\\x03E\\x00\\x00\\x1f\\xc2\" + // 0x1F740345: 0x00001FC2\n\t\"\\x03\\xb7\\x03E\\x00\\x00\\x1f\\xc3\" + // 0x03B70345: 0x00001FC3\n\t\"\\x03\\xae\\x03E\\x00\\x00\\x1f\\xc4\" + // 0x03AE0345: 0x00001FC4\n\t\"\\x03\\xb7\\x03B\\x00\\x00\\x1f\\xc6\" + // 0x03B70342: 0x00001FC6\n\t\"\\x1f\\xc6\\x03E\\x00\\x00\\x1f\\xc7\" + // 0x1FC60345: 0x00001FC7\n\t\"\\x03\\x95\\x03\\x00\\x00\\x00\\x1f\\xc8\" + // 0x03950300: 0x00001FC8\n\t\"\\x03\\x97\\x03\\x00\\x00\\x00\\x1f\\xca\" + // 0x03970300: 0x00001FCA\n\t\"\\x03\\x97\\x03E\\x00\\x00\\x1f\\xcc\" + // 0x03970345: 0x00001FCC\n\t\"\\x1f\\xbf\\x03\\x00\\x00\\x00\\x1f\\xcd\" + // 0x1FBF0300: 0x00001FCD\n\t\"\\x1f\\xbf\\x03\\x01\\x00\\x00\\x1f\\xce\" + // 0x1FBF0301: 0x00001FCE\n\t\"\\x1f\\xbf\\x03B\\x00\\x00\\x1f\\xcf\" + // 0x1FBF0342: 0x00001FCF\n\t\"\\x03\\xb9\\x03\\x06\\x00\\x00\\x1f\\xd0\" + // 0x03B90306: 0x00001FD0\n\t\"\\x03\\xb9\\x03\\x04\\x00\\x00\\x1f\\xd1\" + // 0x03B90304: 0x00001FD1\n\t\"\\x03\\xca\\x03\\x00\\x00\\x00\\x1f\\xd2\" + // 0x03CA0300: 0x00001FD2\n\t\"\\x03\\xb9\\x03B\\x00\\x00\\x1f\\xd6\" + // 0x03B90342: 0x00001FD6\n\t\"\\x03\\xca\\x03B\\x00\\x00\\x1f\\xd7\" + // 0x03CA0342: 0x00001FD7\n\t\"\\x03\\x99\\x03\\x06\\x00\\x00\\x1f\\xd8\" + // 0x03990306: 0x00001FD8\n\t\"\\x03\\x99\\x03\\x04\\x00\\x00\\x1f\\xd9\" + // 0x03990304: 0x00001FD9\n\t\"\\x03\\x99\\x03\\x00\\x00\\x00\\x1f\\xda\" + // 0x03990300: 0x00001FDA\n\t\"\\x1f\\xfe\\x03\\x00\\x00\\x00\\x1f\\xdd\" + // 0x1FFE0300: 0x00001FDD\n\t\"\\x1f\\xfe\\x03\\x01\\x00\\x00\\x1f\\xde\" + // 0x1FFE0301: 0x00001FDE\n\t\"\\x1f\\xfe\\x03B\\x00\\x00\\x1f\\xdf\" + // 0x1FFE0342: 0x00001FDF\n\t\"\\x03\\xc5\\x03\\x06\\x00\\x00\\x1f\\xe0\" + // 0x03C50306: 0x00001FE0\n\t\"\\x03\\xc5\\x03\\x04\\x00\\x00\\x1f\\xe1\" + // 0x03C50304: 0x00001FE1\n\t\"\\x03\\xcb\\x03\\x00\\x00\\x00\\x1f\\xe2\" + // 0x03CB0300: 0x00001FE2\n\t\"\\x03\\xc1\\x03\\x13\\x00\\x00\\x1f\\xe4\" + // 0x03C10313: 0x00001FE4\n\t\"\\x03\\xc1\\x03\\x14\\x00\\x00\\x1f\\xe5\" + // 0x03C10314: 0x00001FE5\n\t\"\\x03\\xc5\\x03B\\x00\\x00\\x1f\\xe6\" + // 0x03C50342: 0x00001FE6\n\t\"\\x03\\xcb\\x03B\\x00\\x00\\x1f\\xe7\" + // 0x03CB0342: 0x00001FE7\n\t\"\\x03\\xa5\\x03\\x06\\x00\\x00\\x1f\\xe8\" + // 0x03A50306: 0x00001FE8\n\t\"\\x03\\xa5\\x03\\x04\\x00\\x00\\x1f\\xe9\" + // 0x03A50304: 0x00001FE9\n\t\"\\x03\\xa5\\x03\\x00\\x00\\x00\\x1f\\xea\" + // 0x03A50300: 0x00001FEA\n\t\"\\x03\\xa1\\x03\\x14\\x00\\x00\\x1f\\xec\" + // 0x03A10314: 0x00001FEC\n\t\"\\x00\\xa8\\x03\\x00\\x00\\x00\\x1f\\xed\" + // 0x00A80300: 0x00001FED\n\t\"\\x1f|\\x03E\\x00\\x00\\x1f\\xf2\" + // 0x1F7C0345: 0x00001FF2\n\t\"\\x03\\xc9\\x03E\\x00\\x00\\x1f\\xf3\" + // 0x03C90345: 0x00001FF3\n\t\"\\x03\\xce\\x03E\\x00\\x00\\x1f\\xf4\" + // 0x03CE0345: 0x00001FF4\n\t\"\\x03\\xc9\\x03B\\x00\\x00\\x1f\\xf6\" + // 0x03C90342: 0x00001FF6\n\t\"\\x1f\\xf6\\x03E\\x00\\x00\\x1f\\xf7\" + // 0x1FF60345: 0x00001FF7\n\t\"\\x03\\x9f\\x03\\x00\\x00\\x00\\x1f\\xf8\" + // 0x039F0300: 0x00001FF8\n\t\"\\x03\\xa9\\x03\\x00\\x00\\x00\\x1f\\xfa\" + // 0x03A90300: 0x00001FFA\n\t\"\\x03\\xa9\\x03E\\x00\\x00\\x1f\\xfc\" + // 0x03A90345: 0x00001FFC\n\t\"!\\x90\\x038\\x00\\x00!\\x9a\" + // 0x21900338: 0x0000219A\n\t\"!\\x92\\x038\\x00\\x00!\\x9b\" + // 0x21920338: 0x0000219B\n\t\"!\\x94\\x038\\x00\\x00!\\xae\" + // 0x21940338: 0x000021AE\n\t\"!\\xd0\\x038\\x00\\x00!\\xcd\" + // 0x21D00338: 0x000021CD\n\t\"!\\xd4\\x038\\x00\\x00!\\xce\" + // 0x21D40338: 0x000021CE\n\t\"!\\xd2\\x038\\x00\\x00!\\xcf\" + // 0x21D20338: 0x000021CF\n\t\"\\\"\\x03\\x038\\x00\\x00\\\"\\x04\" + // 0x22030338: 0x00002204\n\t\"\\\"\\b\\x038\\x00\\x00\\\"\\t\" + // 0x22080338: 0x00002209\n\t\"\\\"\\v\\x038\\x00\\x00\\\"\\f\" + // 0x220B0338: 0x0000220C\n\t\"\\\"#\\x038\\x00\\x00\\\"$\" + // 0x22230338: 0x00002224\n\t\"\\\"%\\x038\\x00\\x00\\\"&\" + // 0x22250338: 0x00002226\n\t\"\\\"<\\x038\\x00\\x00\\\"A\" + // 0x223C0338: 0x00002241\n\t\"\\\"C\\x038\\x00\\x00\\\"D\" + // 0x22430338: 0x00002244\n\t\"\\\"E\\x038\\x00\\x00\\\"G\" + // 0x22450338: 0x00002247\n\t\"\\\"H\\x038\\x00\\x00\\\"I\" + // 0x22480338: 0x00002249\n\t\"\\x00=\\x038\\x00\\x00\\\"`\" + // 0x003D0338: 0x00002260\n\t\"\\\"a\\x038\\x00\\x00\\\"b\" + // 0x22610338: 0x00002262\n\t\"\\\"M\\x038\\x00\\x00\\\"m\" + // 0x224D0338: 0x0000226D\n\t\"\\x00<\\x038\\x00\\x00\\\"n\" + // 0x003C0338: 0x0000226E\n\t\"\\x00>\\x038\\x00\\x00\\\"o\" + // 0x003E0338: 0x0000226F\n\t\"\\\"d\\x038\\x00\\x00\\\"p\" + // 0x22640338: 0x00002270\n\t\"\\\"e\\x038\\x00\\x00\\\"q\" + // 0x22650338: 0x00002271\n\t\"\\\"r\\x038\\x00\\x00\\\"t\" + // 0x22720338: 0x00002274\n\t\"\\\"s\\x038\\x00\\x00\\\"u\" + // 0x22730338: 0x00002275\n\t\"\\\"v\\x038\\x00\\x00\\\"x\" + // 0x22760338: 0x00002278\n\t\"\\\"w\\x038\\x00\\x00\\\"y\" + // 0x22770338: 0x00002279\n\t\"\\\"z\\x038\\x00\\x00\\\"\\x80\" + // 0x227A0338: 0x00002280\n\t\"\\\"{\\x038\\x00\\x00\\\"\\x81\" + // 0x227B0338: 0x00002281\n\t\"\\\"\\x82\\x038\\x00\\x00\\\"\\x84\" + // 0x22820338: 0x00002284\n\t\"\\\"\\x83\\x038\\x00\\x00\\\"\\x85\" + // 0x22830338: 0x00002285\n\t\"\\\"\\x86\\x038\\x00\\x00\\\"\\x88\" + // 0x22860338: 0x00002288\n\t\"\\\"\\x87\\x038\\x00\\x00\\\"\\x89\" + // 0x22870338: 0x00002289\n\t\"\\\"\\xa2\\x038\\x00\\x00\\\"\\xac\" + // 0x22A20338: 0x000022AC\n\t\"\\\"\\xa8\\x038\\x00\\x00\\\"\\xad\" + // 0x22A80338: 0x000022AD\n\t\"\\\"\\xa9\\x038\\x00\\x00\\\"\\xae\" + // 0x22A90338: 0x000022AE\n\t\"\\\"\\xab\\x038\\x00\\x00\\\"\\xaf\" + // 0x22AB0338: 0x000022AF\n\t\"\\\"|\\x038\\x00\\x00\\\"\\xe0\" + // 0x227C0338: 0x000022E0\n\t\"\\\"}\\x038\\x00\\x00\\\"\\xe1\" + // 0x227D0338: 0x000022E1\n\t\"\\\"\\x91\\x038\\x00\\x00\\\"\\xe2\" + // 0x22910338: 0x000022E2\n\t\"\\\"\\x92\\x038\\x00\\x00\\\"\\xe3\" + // 0x22920338: 0x000022E3\n\t\"\\\"\\xb2\\x038\\x00\\x00\\\"\\xea\" + // 0x22B20338: 0x000022EA\n\t\"\\\"\\xb3\\x038\\x00\\x00\\\"\\xeb\" + // 0x22B30338: 0x000022EB\n\t\"\\\"\\xb4\\x038\\x00\\x00\\\"\\xec\" + // 0x22B40338: 0x000022EC\n\t\"\\\"\\xb5\\x038\\x00\\x00\\\"\\xed\" + // 0x22B50338: 0x000022ED\n\t\"0K0\\x99\\x00\\x000L\" + // 0x304B3099: 0x0000304C\n\t\"0M0\\x99\\x00\\x000N\" + // 0x304D3099: 0x0000304E\n\t\"0O0\\x99\\x00\\x000P\" + // 0x304F3099: 0x00003050\n\t\"0Q0\\x99\\x00\\x000R\" + // 0x30513099: 0x00003052\n\t\"0S0\\x99\\x00\\x000T\" + // 0x30533099: 0x00003054\n\t\"0U0\\x99\\x00\\x000V\" + // 0x30553099: 0x00003056\n\t\"0W0\\x99\\x00\\x000X\" + // 0x30573099: 0x00003058\n\t\"0Y0\\x99\\x00\\x000Z\" + // 0x30593099: 0x0000305A\n\t\"0[0\\x99\\x00\\x000\\\\\" + // 0x305B3099: 0x0000305C\n\t\"0]0\\x99\\x00\\x000^\" + // 0x305D3099: 0x0000305E\n\t\"0_0\\x99\\x00\\x000`\" + // 0x305F3099: 0x00003060\n\t\"0a0\\x99\\x00\\x000b\" + // 0x30613099: 0x00003062\n\t\"0d0\\x99\\x00\\x000e\" + // 0x30643099: 0x00003065\n\t\"0f0\\x99\\x00\\x000g\" + // 0x30663099: 0x00003067\n\t\"0h0\\x99\\x00\\x000i\" + // 0x30683099: 0x00003069\n\t\"0o0\\x99\\x00\\x000p\" + // 0x306F3099: 0x00003070\n\t\"0o0\\x9a\\x00\\x000q\" + // 0x306F309A: 0x00003071\n\t\"0r0\\x99\\x00\\x000s\" + // 0x30723099: 0x00003073\n\t\"0r0\\x9a\\x00\\x000t\" + // 0x3072309A: 0x00003074\n\t\"0u0\\x99\\x00\\x000v\" + // 0x30753099: 0x00003076\n\t\"0u0\\x9a\\x00\\x000w\" + // 0x3075309A: 0x00003077\n\t\"0x0\\x99\\x00\\x000y\" + // 0x30783099: 0x00003079\n\t\"0x0\\x9a\\x00\\x000z\" + // 0x3078309A: 0x0000307A\n\t\"0{0\\x99\\x00\\x000|\" + // 0x307B3099: 0x0000307C\n\t\"0{0\\x9a\\x00\\x000}\" + // 0x307B309A: 0x0000307D\n\t\"0F0\\x99\\x00\\x000\\x94\" + // 0x30463099: 0x00003094\n\t\"0\\x9d0\\x99\\x00\\x000\\x9e\" + // 0x309D3099: 0x0000309E\n\t\"0\\xab0\\x99\\x00\\x000\\xac\" + // 0x30AB3099: 0x000030AC\n\t\"0\\xad0\\x99\\x00\\x000\\xae\" + // 0x30AD3099: 0x000030AE\n\t\"0\\xaf0\\x99\\x00\\x000\\xb0\" + // 0x30AF3099: 0x000030B0\n\t\"0\\xb10\\x99\\x00\\x000\\xb2\" + // 0x30B13099: 0x000030B2\n\t\"0\\xb30\\x99\\x00\\x000\\xb4\" + // 0x30B33099: 0x000030B4\n\t\"0\\xb50\\x99\\x00\\x000\\xb6\" + // 0x30B53099: 0x000030B6\n\t\"0\\xb70\\x99\\x00\\x000\\xb8\" + // 0x30B73099: 0x000030B8\n\t\"0\\xb90\\x99\\x00\\x000\\xba\" + // 0x30B93099: 0x000030BA\n\t\"0\\xbb0\\x99\\x00\\x000\\xbc\" + // 0x30BB3099: 0x000030BC\n\t\"0\\xbd0\\x99\\x00\\x000\\xbe\" + // 0x30BD3099: 0x000030BE\n\t\"0\\xbf0\\x99\\x00\\x000\\xc0\" + // 0x30BF3099: 0x000030C0\n\t\"0\\xc10\\x99\\x00\\x000\\xc2\" + // 0x30C13099: 0x000030C2\n\t\"0\\xc40\\x99\\x00\\x000\\xc5\" + // 0x30C43099: 0x000030C5\n\t\"0\\xc60\\x99\\x00\\x000\\xc7\" + // 0x30C63099: 0x000030C7\n\t\"0\\xc80\\x99\\x00\\x000\\xc9\" + // 0x30C83099: 0x000030C9\n\t\"0\\xcf0\\x99\\x00\\x000\\xd0\" + // 0x30CF3099: 0x000030D0\n\t\"0\\xcf0\\x9a\\x00\\x000\\xd1\" + // 0x30CF309A: 0x000030D1\n\t\"0\\xd20\\x99\\x00\\x000\\xd3\" + // 0x30D23099: 0x000030D3\n\t\"0\\xd20\\x9a\\x00\\x000\\xd4\" + // 0x30D2309A: 0x000030D4\n\t\"0\\xd50\\x99\\x00\\x000\\xd6\" + // 0x30D53099: 0x000030D6\n\t\"0\\xd50\\x9a\\x00\\x000\\xd7\" + // 0x30D5309A: 0x000030D7\n\t\"0\\xd80\\x99\\x00\\x000\\xd9\" + // 0x30D83099: 0x000030D9\n\t\"0\\xd80\\x9a\\x00\\x000\\xda\" + // 0x30D8309A: 0x000030DA\n\t\"0\\xdb0\\x99\\x00\\x000\\xdc\" + // 0x30DB3099: 0x000030DC\n\t\"0\\xdb0\\x9a\\x00\\x000\\xdd\" + // 0x30DB309A: 0x000030DD\n\t\"0\\xa60\\x99\\x00\\x000\\xf4\" + // 0x30A63099: 0x000030F4\n\t\"0\\xef0\\x99\\x00\\x000\\xf7\" + // 0x30EF3099: 0x000030F7\n\t\"0\\xf00\\x99\\x00\\x000\\xf8\" + // 0x30F03099: 0x000030F8\n\t\"0\\xf10\\x99\\x00\\x000\\xf9\" + // 0x30F13099: 0x000030F9\n\t\"0\\xf20\\x99\\x00\\x000\\xfa\" + // 0x30F23099: 0x000030FA\n\t\"0\\xfd0\\x99\\x00\\x000\\xfe\" + // 0x30FD3099: 0x000030FE\n\t\"\\x10\\x99\\x10\\xba\\x00\\x01\\x10\\x9a\" + // 0x109910BA: 0x0001109A\n\t\"\\x10\\x9b\\x10\\xba\\x00\\x01\\x10\\x9c\" + // 0x109B10BA: 0x0001109C\n\t\"\\x10\\xa5\\x10\\xba\\x00\\x01\\x10\\xab\" + // 0x10A510BA: 0x000110AB\n\t\"\\x111\\x11'\\x00\\x01\\x11.\" + // 0x11311127: 0x0001112E\n\t\"\\x112\\x11'\\x00\\x01\\x11/\" + // 0x11321127: 0x0001112F\n\t\"\\x13G\\x13>\\x00\\x01\\x13K\" + // 0x1347133E: 0x0001134B\n\t\"\\x13G\\x13W\\x00\\x01\\x13L\" + // 0x13471357: 0x0001134C\n\t\"\\x14\\xb9\\x14\\xba\\x00\\x01\\x14\\xbb\" + // 0x14B914BA: 0x000114BB\n\t\"\\x14\\xb9\\x14\\xb0\\x00\\x01\\x14\\xbc\" + // 0x14B914B0: 0x000114BC\n\t\"\\x14\\xb9\\x14\\xbd\\x00\\x01\\x14\\xbe\" + // 0x14B914BD: 0x000114BE\n\t\"\\x15\\xb8\\x15\\xaf\\x00\\x01\\x15\\xba\" + // 0x15B815AF: 0x000115BA\n\t\"\\x15\\xb9\\x15\\xaf\\x00\\x01\\x15\\xbb\" + // 0x15B915AF: 0x000115BB\n\t\"\\x195\\x190\\x00\\x01\\x198\" + // 0x19351930: 0x00011938\n\t\"\"\n\t// Total size of tables: 56KB (57068 bytes)\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/tables9.0.0.go",
    "content": "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n//go:build !go1.10\n\npackage norm\n\nimport \"sync\"\n\nconst (\n\t// Version is the Unicode edition from which the tables are derived.\n\tVersion = \"9.0.0\"\n\n\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform\n\t// may need to write atomically for any Form. Making a destination buffer at\n\t// least this size ensures that Transform can always make progress and that\n\t// the user does not need to grow the buffer on an ErrShortDst.\n\tMaxTransformChunkSize = 35 + maxNonStarters*4\n)\n\nvar ccc = [55]uint8{\n\t0, 1, 7, 8, 9, 10, 11, 12,\n\t13, 14, 15, 16, 17, 18, 19, 20,\n\t21, 22, 23, 24, 25, 26, 27, 28,\n\t29, 30, 31, 32, 33, 34, 35, 36,\n\t84, 91, 103, 107, 118, 122, 129, 130,\n\t132, 202, 214, 216, 218, 220, 222, 224,\n\t226, 228, 230, 232, 233, 234, 240,\n}\n\nconst (\n\tfirstMulti            = 0x186D\n\tfirstCCC              = 0x2C9E\n\tendMulti              = 0x2F60\n\tfirstLeadingCCC       = 0x49AE\n\tfirstCCCZeroExcept    = 0x4A78\n\tfirstStarterWithNLead = 0x4A9F\n\tlastDecomp            = 0x4AA1\n\tmaxDecomp             = 0x8000\n)\n\n// decomps: 19105 bytes\nvar decomps = [...]byte{\n\t// Bytes 0 - 3f\n\t0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,\n\t0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41,\n\t0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41,\n\t0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41,\n\t0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41,\n\t0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41,\n\t0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41,\n\t0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41,\n\t// Bytes 40 - 7f\n\t0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41,\n\t0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41,\n\t0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41,\n\t0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41,\n\t0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41,\n\t0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41,\n\t0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41,\n\t0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41,\n\t// Bytes 80 - bf\n\t0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41,\n\t0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41,\n\t0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41,\n\t0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41,\n\t0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41,\n\t0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41,\n\t0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41,\n\t0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42,\n\t// Bytes c0 - ff\n\t0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5,\n\t0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2,\n\t0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xB0, 0x42,\n\t0xC4, 0xA6, 0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1,\n\t0x42, 0xC5, 0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6,\n\t0x8E, 0x42, 0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42,\n\t0xC8, 0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90,\n\t0x42, 0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9,\n\t// Bytes 100 - 13f\n\t0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9, 0x99, 0x42,\n\t0xC9, 0x9B, 0x42, 0xC9, 0x9C, 0x42, 0xC9, 0x9F,\n\t0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA3, 0x42, 0xC9,\n\t0xA5, 0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA8, 0x42,\n\t0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42, 0xC9, 0xAB,\n\t0x42, 0xC9, 0xAD, 0x42, 0xC9, 0xAF, 0x42, 0xC9,\n\t0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42,\n\t0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5,\n\t// Bytes 140 - 17f\n\t0x42, 0xC9, 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9,\n\t0xBB, 0x42, 0xCA, 0x81, 0x42, 0xCA, 0x82, 0x42,\n\t0xCA, 0x83, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A,\n\t0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA,\n\t0x90, 0x42, 0xCA, 0x91, 0x42, 0xCA, 0x92, 0x42,\n\t0xCA, 0x95, 0x42, 0xCA, 0x9D, 0x42, 0xCA, 0x9F,\n\t0x42, 0xCA, 0xB9, 0x42, 0xCE, 0x91, 0x42, 0xCE,\n\t0x92, 0x42, 0xCE, 0x93, 0x42, 0xCE, 0x94, 0x42,\n\t// Bytes 180 - 1bf\n\t0xCE, 0x95, 0x42, 0xCE, 0x96, 0x42, 0xCE, 0x97,\n\t0x42, 0xCE, 0x98, 0x42, 0xCE, 0x99, 0x42, 0xCE,\n\t0x9A, 0x42, 0xCE, 0x9B, 0x42, 0xCE, 0x9C, 0x42,\n\t0xCE, 0x9D, 0x42, 0xCE, 0x9E, 0x42, 0xCE, 0x9F,\n\t0x42, 0xCE, 0xA0, 0x42, 0xCE, 0xA1, 0x42, 0xCE,\n\t0xA3, 0x42, 0xCE, 0xA4, 0x42, 0xCE, 0xA5, 0x42,\n\t0xCE, 0xA6, 0x42, 0xCE, 0xA7, 0x42, 0xCE, 0xA8,\n\t0x42, 0xCE, 0xA9, 0x42, 0xCE, 0xB1, 0x42, 0xCE,\n\t// Bytes 1c0 - 1ff\n\t0xB2, 0x42, 0xCE, 0xB3, 0x42, 0xCE, 0xB4, 0x42,\n\t0xCE, 0xB5, 0x42, 0xCE, 0xB6, 0x42, 0xCE, 0xB7,\n\t0x42, 0xCE, 0xB8, 0x42, 0xCE, 0xB9, 0x42, 0xCE,\n\t0xBA, 0x42, 0xCE, 0xBB, 0x42, 0xCE, 0xBC, 0x42,\n\t0xCE, 0xBD, 0x42, 0xCE, 0xBE, 0x42, 0xCE, 0xBF,\n\t0x42, 0xCF, 0x80, 0x42, 0xCF, 0x81, 0x42, 0xCF,\n\t0x82, 0x42, 0xCF, 0x83, 0x42, 0xCF, 0x84, 0x42,\n\t0xCF, 0x85, 0x42, 0xCF, 0x86, 0x42, 0xCF, 0x87,\n\t// Bytes 200 - 23f\n\t0x42, 0xCF, 0x88, 0x42, 0xCF, 0x89, 0x42, 0xCF,\n\t0x9C, 0x42, 0xCF, 0x9D, 0x42, 0xD0, 0xBD, 0x42,\n\t0xD1, 0x8A, 0x42, 0xD1, 0x8C, 0x42, 0xD7, 0x90,\n\t0x42, 0xD7, 0x91, 0x42, 0xD7, 0x92, 0x42, 0xD7,\n\t0x93, 0x42, 0xD7, 0x94, 0x42, 0xD7, 0x9B, 0x42,\n\t0xD7, 0x9C, 0x42, 0xD7, 0x9D, 0x42, 0xD7, 0xA2,\n\t0x42, 0xD7, 0xA8, 0x42, 0xD7, 0xAA, 0x42, 0xD8,\n\t0xA1, 0x42, 0xD8, 0xA7, 0x42, 0xD8, 0xA8, 0x42,\n\t// Bytes 240 - 27f\n\t0xD8, 0xA9, 0x42, 0xD8, 0xAA, 0x42, 0xD8, 0xAB,\n\t0x42, 0xD8, 0xAC, 0x42, 0xD8, 0xAD, 0x42, 0xD8,\n\t0xAE, 0x42, 0xD8, 0xAF, 0x42, 0xD8, 0xB0, 0x42,\n\t0xD8, 0xB1, 0x42, 0xD8, 0xB2, 0x42, 0xD8, 0xB3,\n\t0x42, 0xD8, 0xB4, 0x42, 0xD8, 0xB5, 0x42, 0xD8,\n\t0xB6, 0x42, 0xD8, 0xB7, 0x42, 0xD8, 0xB8, 0x42,\n\t0xD8, 0xB9, 0x42, 0xD8, 0xBA, 0x42, 0xD9, 0x81,\n\t0x42, 0xD9, 0x82, 0x42, 0xD9, 0x83, 0x42, 0xD9,\n\t// Bytes 280 - 2bf\n\t0x84, 0x42, 0xD9, 0x85, 0x42, 0xD9, 0x86, 0x42,\n\t0xD9, 0x87, 0x42, 0xD9, 0x88, 0x42, 0xD9, 0x89,\n\t0x42, 0xD9, 0x8A, 0x42, 0xD9, 0xAE, 0x42, 0xD9,\n\t0xAF, 0x42, 0xD9, 0xB1, 0x42, 0xD9, 0xB9, 0x42,\n\t0xD9, 0xBA, 0x42, 0xD9, 0xBB, 0x42, 0xD9, 0xBE,\n\t0x42, 0xD9, 0xBF, 0x42, 0xDA, 0x80, 0x42, 0xDA,\n\t0x83, 0x42, 0xDA, 0x84, 0x42, 0xDA, 0x86, 0x42,\n\t0xDA, 0x87, 0x42, 0xDA, 0x88, 0x42, 0xDA, 0x8C,\n\t// Bytes 2c0 - 2ff\n\t0x42, 0xDA, 0x8D, 0x42, 0xDA, 0x8E, 0x42, 0xDA,\n\t0x91, 0x42, 0xDA, 0x98, 0x42, 0xDA, 0xA1, 0x42,\n\t0xDA, 0xA4, 0x42, 0xDA, 0xA6, 0x42, 0xDA, 0xA9,\n\t0x42, 0xDA, 0xAD, 0x42, 0xDA, 0xAF, 0x42, 0xDA,\n\t0xB1, 0x42, 0xDA, 0xB3, 0x42, 0xDA, 0xBA, 0x42,\n\t0xDA, 0xBB, 0x42, 0xDA, 0xBE, 0x42, 0xDB, 0x81,\n\t0x42, 0xDB, 0x85, 0x42, 0xDB, 0x86, 0x42, 0xDB,\n\t0x87, 0x42, 0xDB, 0x88, 0x42, 0xDB, 0x89, 0x42,\n\t// Bytes 300 - 33f\n\t0xDB, 0x8B, 0x42, 0xDB, 0x8C, 0x42, 0xDB, 0x90,\n\t0x42, 0xDB, 0x92, 0x43, 0xE0, 0xBC, 0x8B, 0x43,\n\t0xE1, 0x83, 0x9C, 0x43, 0xE1, 0x84, 0x80, 0x43,\n\t0xE1, 0x84, 0x81, 0x43, 0xE1, 0x84, 0x82, 0x43,\n\t0xE1, 0x84, 0x83, 0x43, 0xE1, 0x84, 0x84, 0x43,\n\t0xE1, 0x84, 0x85, 0x43, 0xE1, 0x84, 0x86, 0x43,\n\t0xE1, 0x84, 0x87, 0x43, 0xE1, 0x84, 0x88, 0x43,\n\t0xE1, 0x84, 0x89, 0x43, 0xE1, 0x84, 0x8A, 0x43,\n\t// Bytes 340 - 37f\n\t0xE1, 0x84, 0x8B, 0x43, 0xE1, 0x84, 0x8C, 0x43,\n\t0xE1, 0x84, 0x8D, 0x43, 0xE1, 0x84, 0x8E, 0x43,\n\t0xE1, 0x84, 0x8F, 0x43, 0xE1, 0x84, 0x90, 0x43,\n\t0xE1, 0x84, 0x91, 0x43, 0xE1, 0x84, 0x92, 0x43,\n\t0xE1, 0x84, 0x94, 0x43, 0xE1, 0x84, 0x95, 0x43,\n\t0xE1, 0x84, 0x9A, 0x43, 0xE1, 0x84, 0x9C, 0x43,\n\t0xE1, 0x84, 0x9D, 0x43, 0xE1, 0x84, 0x9E, 0x43,\n\t0xE1, 0x84, 0xA0, 0x43, 0xE1, 0x84, 0xA1, 0x43,\n\t// Bytes 380 - 3bf\n\t0xE1, 0x84, 0xA2, 0x43, 0xE1, 0x84, 0xA3, 0x43,\n\t0xE1, 0x84, 0xA7, 0x43, 0xE1, 0x84, 0xA9, 0x43,\n\t0xE1, 0x84, 0xAB, 0x43, 0xE1, 0x84, 0xAC, 0x43,\n\t0xE1, 0x84, 0xAD, 0x43, 0xE1, 0x84, 0xAE, 0x43,\n\t0xE1, 0x84, 0xAF, 0x43, 0xE1, 0x84, 0xB2, 0x43,\n\t0xE1, 0x84, 0xB6, 0x43, 0xE1, 0x85, 0x80, 0x43,\n\t0xE1, 0x85, 0x87, 0x43, 0xE1, 0x85, 0x8C, 0x43,\n\t0xE1, 0x85, 0x97, 0x43, 0xE1, 0x85, 0x98, 0x43,\n\t// Bytes 3c0 - 3ff\n\t0xE1, 0x85, 0x99, 0x43, 0xE1, 0x85, 0xA0, 0x43,\n\t0xE1, 0x86, 0x84, 0x43, 0xE1, 0x86, 0x85, 0x43,\n\t0xE1, 0x86, 0x88, 0x43, 0xE1, 0x86, 0x91, 0x43,\n\t0xE1, 0x86, 0x92, 0x43, 0xE1, 0x86, 0x94, 0x43,\n\t0xE1, 0x86, 0x9E, 0x43, 0xE1, 0x86, 0xA1, 0x43,\n\t0xE1, 0x87, 0x87, 0x43, 0xE1, 0x87, 0x88, 0x43,\n\t0xE1, 0x87, 0x8C, 0x43, 0xE1, 0x87, 0x8E, 0x43,\n\t0xE1, 0x87, 0x93, 0x43, 0xE1, 0x87, 0x97, 0x43,\n\t// Bytes 400 - 43f\n\t0xE1, 0x87, 0x99, 0x43, 0xE1, 0x87, 0x9D, 0x43,\n\t0xE1, 0x87, 0x9F, 0x43, 0xE1, 0x87, 0xB1, 0x43,\n\t0xE1, 0x87, 0xB2, 0x43, 0xE1, 0xB4, 0x82, 0x43,\n\t0xE1, 0xB4, 0x96, 0x43, 0xE1, 0xB4, 0x97, 0x43,\n\t0xE1, 0xB4, 0x9C, 0x43, 0xE1, 0xB4, 0x9D, 0x43,\n\t0xE1, 0xB4, 0xA5, 0x43, 0xE1, 0xB5, 0xBB, 0x43,\n\t0xE1, 0xB6, 0x85, 0x43, 0xE2, 0x80, 0x82, 0x43,\n\t0xE2, 0x80, 0x83, 0x43, 0xE2, 0x80, 0x90, 0x43,\n\t// Bytes 440 - 47f\n\t0xE2, 0x80, 0x93, 0x43, 0xE2, 0x80, 0x94, 0x43,\n\t0xE2, 0x82, 0xA9, 0x43, 0xE2, 0x86, 0x90, 0x43,\n\t0xE2, 0x86, 0x91, 0x43, 0xE2, 0x86, 0x92, 0x43,\n\t0xE2, 0x86, 0x93, 0x43, 0xE2, 0x88, 0x82, 0x43,\n\t0xE2, 0x88, 0x87, 0x43, 0xE2, 0x88, 0x91, 0x43,\n\t0xE2, 0x88, 0x92, 0x43, 0xE2, 0x94, 0x82, 0x43,\n\t0xE2, 0x96, 0xA0, 0x43, 0xE2, 0x97, 0x8B, 0x43,\n\t0xE2, 0xA6, 0x85, 0x43, 0xE2, 0xA6, 0x86, 0x43,\n\t// Bytes 480 - 4bf\n\t0xE2, 0xB5, 0xA1, 0x43, 0xE3, 0x80, 0x81, 0x43,\n\t0xE3, 0x80, 0x82, 0x43, 0xE3, 0x80, 0x88, 0x43,\n\t0xE3, 0x80, 0x89, 0x43, 0xE3, 0x80, 0x8A, 0x43,\n\t0xE3, 0x80, 0x8B, 0x43, 0xE3, 0x80, 0x8C, 0x43,\n\t0xE3, 0x80, 0x8D, 0x43, 0xE3, 0x80, 0x8E, 0x43,\n\t0xE3, 0x80, 0x8F, 0x43, 0xE3, 0x80, 0x90, 0x43,\n\t0xE3, 0x80, 0x91, 0x43, 0xE3, 0x80, 0x92, 0x43,\n\t0xE3, 0x80, 0x94, 0x43, 0xE3, 0x80, 0x95, 0x43,\n\t// Bytes 4c0 - 4ff\n\t0xE3, 0x80, 0x96, 0x43, 0xE3, 0x80, 0x97, 0x43,\n\t0xE3, 0x82, 0xA1, 0x43, 0xE3, 0x82, 0xA2, 0x43,\n\t0xE3, 0x82, 0xA3, 0x43, 0xE3, 0x82, 0xA4, 0x43,\n\t0xE3, 0x82, 0xA5, 0x43, 0xE3, 0x82, 0xA6, 0x43,\n\t0xE3, 0x82, 0xA7, 0x43, 0xE3, 0x82, 0xA8, 0x43,\n\t0xE3, 0x82, 0xA9, 0x43, 0xE3, 0x82, 0xAA, 0x43,\n\t0xE3, 0x82, 0xAB, 0x43, 0xE3, 0x82, 0xAD, 0x43,\n\t0xE3, 0x82, 0xAF, 0x43, 0xE3, 0x82, 0xB1, 0x43,\n\t// Bytes 500 - 53f\n\t0xE3, 0x82, 0xB3, 0x43, 0xE3, 0x82, 0xB5, 0x43,\n\t0xE3, 0x82, 0xB7, 0x43, 0xE3, 0x82, 0xB9, 0x43,\n\t0xE3, 0x82, 0xBB, 0x43, 0xE3, 0x82, 0xBD, 0x43,\n\t0xE3, 0x82, 0xBF, 0x43, 0xE3, 0x83, 0x81, 0x43,\n\t0xE3, 0x83, 0x83, 0x43, 0xE3, 0x83, 0x84, 0x43,\n\t0xE3, 0x83, 0x86, 0x43, 0xE3, 0x83, 0x88, 0x43,\n\t0xE3, 0x83, 0x8A, 0x43, 0xE3, 0x83, 0x8B, 0x43,\n\t0xE3, 0x83, 0x8C, 0x43, 0xE3, 0x83, 0x8D, 0x43,\n\t// Bytes 540 - 57f\n\t0xE3, 0x83, 0x8E, 0x43, 0xE3, 0x83, 0x8F, 0x43,\n\t0xE3, 0x83, 0x92, 0x43, 0xE3, 0x83, 0x95, 0x43,\n\t0xE3, 0x83, 0x98, 0x43, 0xE3, 0x83, 0x9B, 0x43,\n\t0xE3, 0x83, 0x9E, 0x43, 0xE3, 0x83, 0x9F, 0x43,\n\t0xE3, 0x83, 0xA0, 0x43, 0xE3, 0x83, 0xA1, 0x43,\n\t0xE3, 0x83, 0xA2, 0x43, 0xE3, 0x83, 0xA3, 0x43,\n\t0xE3, 0x83, 0xA4, 0x43, 0xE3, 0x83, 0xA5, 0x43,\n\t0xE3, 0x83, 0xA6, 0x43, 0xE3, 0x83, 0xA7, 0x43,\n\t// Bytes 580 - 5bf\n\t0xE3, 0x83, 0xA8, 0x43, 0xE3, 0x83, 0xA9, 0x43,\n\t0xE3, 0x83, 0xAA, 0x43, 0xE3, 0x83, 0xAB, 0x43,\n\t0xE3, 0x83, 0xAC, 0x43, 0xE3, 0x83, 0xAD, 0x43,\n\t0xE3, 0x83, 0xAF, 0x43, 0xE3, 0x83, 0xB0, 0x43,\n\t0xE3, 0x83, 0xB1, 0x43, 0xE3, 0x83, 0xB2, 0x43,\n\t0xE3, 0x83, 0xB3, 0x43, 0xE3, 0x83, 0xBB, 0x43,\n\t0xE3, 0x83, 0xBC, 0x43, 0xE3, 0x92, 0x9E, 0x43,\n\t0xE3, 0x92, 0xB9, 0x43, 0xE3, 0x92, 0xBB, 0x43,\n\t// Bytes 5c0 - 5ff\n\t0xE3, 0x93, 0x9F, 0x43, 0xE3, 0x94, 0x95, 0x43,\n\t0xE3, 0x9B, 0xAE, 0x43, 0xE3, 0x9B, 0xBC, 0x43,\n\t0xE3, 0x9E, 0x81, 0x43, 0xE3, 0xA0, 0xAF, 0x43,\n\t0xE3, 0xA1, 0xA2, 0x43, 0xE3, 0xA1, 0xBC, 0x43,\n\t0xE3, 0xA3, 0x87, 0x43, 0xE3, 0xA3, 0xA3, 0x43,\n\t0xE3, 0xA4, 0x9C, 0x43, 0xE3, 0xA4, 0xBA, 0x43,\n\t0xE3, 0xA8, 0xAE, 0x43, 0xE3, 0xA9, 0xAC, 0x43,\n\t0xE3, 0xAB, 0xA4, 0x43, 0xE3, 0xAC, 0x88, 0x43,\n\t// Bytes 600 - 63f\n\t0xE3, 0xAC, 0x99, 0x43, 0xE3, 0xAD, 0x89, 0x43,\n\t0xE3, 0xAE, 0x9D, 0x43, 0xE3, 0xB0, 0x98, 0x43,\n\t0xE3, 0xB1, 0x8E, 0x43, 0xE3, 0xB4, 0xB3, 0x43,\n\t0xE3, 0xB6, 0x96, 0x43, 0xE3, 0xBA, 0xAC, 0x43,\n\t0xE3, 0xBA, 0xB8, 0x43, 0xE3, 0xBC, 0x9B, 0x43,\n\t0xE3, 0xBF, 0xBC, 0x43, 0xE4, 0x80, 0x88, 0x43,\n\t0xE4, 0x80, 0x98, 0x43, 0xE4, 0x80, 0xB9, 0x43,\n\t0xE4, 0x81, 0x86, 0x43, 0xE4, 0x82, 0x96, 0x43,\n\t// Bytes 640 - 67f\n\t0xE4, 0x83, 0xA3, 0x43, 0xE4, 0x84, 0xAF, 0x43,\n\t0xE4, 0x88, 0x82, 0x43, 0xE4, 0x88, 0xA7, 0x43,\n\t0xE4, 0x8A, 0xA0, 0x43, 0xE4, 0x8C, 0x81, 0x43,\n\t0xE4, 0x8C, 0xB4, 0x43, 0xE4, 0x8D, 0x99, 0x43,\n\t0xE4, 0x8F, 0x95, 0x43, 0xE4, 0x8F, 0x99, 0x43,\n\t0xE4, 0x90, 0x8B, 0x43, 0xE4, 0x91, 0xAB, 0x43,\n\t0xE4, 0x94, 0xAB, 0x43, 0xE4, 0x95, 0x9D, 0x43,\n\t0xE4, 0x95, 0xA1, 0x43, 0xE4, 0x95, 0xAB, 0x43,\n\t// Bytes 680 - 6bf\n\t0xE4, 0x97, 0x97, 0x43, 0xE4, 0x97, 0xB9, 0x43,\n\t0xE4, 0x98, 0xB5, 0x43, 0xE4, 0x9A, 0xBE, 0x43,\n\t0xE4, 0x9B, 0x87, 0x43, 0xE4, 0xA6, 0x95, 0x43,\n\t0xE4, 0xA7, 0xA6, 0x43, 0xE4, 0xA9, 0xAE, 0x43,\n\t0xE4, 0xA9, 0xB6, 0x43, 0xE4, 0xAA, 0xB2, 0x43,\n\t0xE4, 0xAC, 0xB3, 0x43, 0xE4, 0xAF, 0x8E, 0x43,\n\t0xE4, 0xB3, 0x8E, 0x43, 0xE4, 0xB3, 0xAD, 0x43,\n\t0xE4, 0xB3, 0xB8, 0x43, 0xE4, 0xB5, 0x96, 0x43,\n\t// Bytes 6c0 - 6ff\n\t0xE4, 0xB8, 0x80, 0x43, 0xE4, 0xB8, 0x81, 0x43,\n\t0xE4, 0xB8, 0x83, 0x43, 0xE4, 0xB8, 0x89, 0x43,\n\t0xE4, 0xB8, 0x8A, 0x43, 0xE4, 0xB8, 0x8B, 0x43,\n\t0xE4, 0xB8, 0x8D, 0x43, 0xE4, 0xB8, 0x99, 0x43,\n\t0xE4, 0xB8, 0xA6, 0x43, 0xE4, 0xB8, 0xA8, 0x43,\n\t0xE4, 0xB8, 0xAD, 0x43, 0xE4, 0xB8, 0xB2, 0x43,\n\t0xE4, 0xB8, 0xB6, 0x43, 0xE4, 0xB8, 0xB8, 0x43,\n\t0xE4, 0xB8, 0xB9, 0x43, 0xE4, 0xB8, 0xBD, 0x43,\n\t// Bytes 700 - 73f\n\t0xE4, 0xB8, 0xBF, 0x43, 0xE4, 0xB9, 0x81, 0x43,\n\t0xE4, 0xB9, 0x99, 0x43, 0xE4, 0xB9, 0x9D, 0x43,\n\t0xE4, 0xBA, 0x82, 0x43, 0xE4, 0xBA, 0x85, 0x43,\n\t0xE4, 0xBA, 0x86, 0x43, 0xE4, 0xBA, 0x8C, 0x43,\n\t0xE4, 0xBA, 0x94, 0x43, 0xE4, 0xBA, 0xA0, 0x43,\n\t0xE4, 0xBA, 0xA4, 0x43, 0xE4, 0xBA, 0xAE, 0x43,\n\t0xE4, 0xBA, 0xBA, 0x43, 0xE4, 0xBB, 0x80, 0x43,\n\t0xE4, 0xBB, 0x8C, 0x43, 0xE4, 0xBB, 0xA4, 0x43,\n\t// Bytes 740 - 77f\n\t0xE4, 0xBC, 0x81, 0x43, 0xE4, 0xBC, 0x91, 0x43,\n\t0xE4, 0xBD, 0xA0, 0x43, 0xE4, 0xBE, 0x80, 0x43,\n\t0xE4, 0xBE, 0x86, 0x43, 0xE4, 0xBE, 0x8B, 0x43,\n\t0xE4, 0xBE, 0xAE, 0x43, 0xE4, 0xBE, 0xBB, 0x43,\n\t0xE4, 0xBE, 0xBF, 0x43, 0xE5, 0x80, 0x82, 0x43,\n\t0xE5, 0x80, 0xAB, 0x43, 0xE5, 0x81, 0xBA, 0x43,\n\t0xE5, 0x82, 0x99, 0x43, 0xE5, 0x83, 0x8F, 0x43,\n\t0xE5, 0x83, 0x9A, 0x43, 0xE5, 0x83, 0xA7, 0x43,\n\t// Bytes 780 - 7bf\n\t0xE5, 0x84, 0xAA, 0x43, 0xE5, 0x84, 0xBF, 0x43,\n\t0xE5, 0x85, 0x80, 0x43, 0xE5, 0x85, 0x85, 0x43,\n\t0xE5, 0x85, 0x8D, 0x43, 0xE5, 0x85, 0x94, 0x43,\n\t0xE5, 0x85, 0xA4, 0x43, 0xE5, 0x85, 0xA5, 0x43,\n\t0xE5, 0x85, 0xA7, 0x43, 0xE5, 0x85, 0xA8, 0x43,\n\t0xE5, 0x85, 0xA9, 0x43, 0xE5, 0x85, 0xAB, 0x43,\n\t0xE5, 0x85, 0xAD, 0x43, 0xE5, 0x85, 0xB7, 0x43,\n\t0xE5, 0x86, 0x80, 0x43, 0xE5, 0x86, 0x82, 0x43,\n\t// Bytes 7c0 - 7ff\n\t0xE5, 0x86, 0x8D, 0x43, 0xE5, 0x86, 0x92, 0x43,\n\t0xE5, 0x86, 0x95, 0x43, 0xE5, 0x86, 0x96, 0x43,\n\t0xE5, 0x86, 0x97, 0x43, 0xE5, 0x86, 0x99, 0x43,\n\t0xE5, 0x86, 0xA4, 0x43, 0xE5, 0x86, 0xAB, 0x43,\n\t0xE5, 0x86, 0xAC, 0x43, 0xE5, 0x86, 0xB5, 0x43,\n\t0xE5, 0x86, 0xB7, 0x43, 0xE5, 0x87, 0x89, 0x43,\n\t0xE5, 0x87, 0x8C, 0x43, 0xE5, 0x87, 0x9C, 0x43,\n\t0xE5, 0x87, 0x9E, 0x43, 0xE5, 0x87, 0xA0, 0x43,\n\t// Bytes 800 - 83f\n\t0xE5, 0x87, 0xB5, 0x43, 0xE5, 0x88, 0x80, 0x43,\n\t0xE5, 0x88, 0x83, 0x43, 0xE5, 0x88, 0x87, 0x43,\n\t0xE5, 0x88, 0x97, 0x43, 0xE5, 0x88, 0x9D, 0x43,\n\t0xE5, 0x88, 0xA9, 0x43, 0xE5, 0x88, 0xBA, 0x43,\n\t0xE5, 0x88, 0xBB, 0x43, 0xE5, 0x89, 0x86, 0x43,\n\t0xE5, 0x89, 0x8D, 0x43, 0xE5, 0x89, 0xB2, 0x43,\n\t0xE5, 0x89, 0xB7, 0x43, 0xE5, 0x8A, 0x89, 0x43,\n\t0xE5, 0x8A, 0x9B, 0x43, 0xE5, 0x8A, 0xA3, 0x43,\n\t// Bytes 840 - 87f\n\t0xE5, 0x8A, 0xB3, 0x43, 0xE5, 0x8A, 0xB4, 0x43,\n\t0xE5, 0x8B, 0x87, 0x43, 0xE5, 0x8B, 0x89, 0x43,\n\t0xE5, 0x8B, 0x92, 0x43, 0xE5, 0x8B, 0x9E, 0x43,\n\t0xE5, 0x8B, 0xA4, 0x43, 0xE5, 0x8B, 0xB5, 0x43,\n\t0xE5, 0x8B, 0xB9, 0x43, 0xE5, 0x8B, 0xBA, 0x43,\n\t0xE5, 0x8C, 0x85, 0x43, 0xE5, 0x8C, 0x86, 0x43,\n\t0xE5, 0x8C, 0x95, 0x43, 0xE5, 0x8C, 0x97, 0x43,\n\t0xE5, 0x8C, 0x9A, 0x43, 0xE5, 0x8C, 0xB8, 0x43,\n\t// Bytes 880 - 8bf\n\t0xE5, 0x8C, 0xBB, 0x43, 0xE5, 0x8C, 0xBF, 0x43,\n\t0xE5, 0x8D, 0x81, 0x43, 0xE5, 0x8D, 0x84, 0x43,\n\t0xE5, 0x8D, 0x85, 0x43, 0xE5, 0x8D, 0x89, 0x43,\n\t0xE5, 0x8D, 0x91, 0x43, 0xE5, 0x8D, 0x94, 0x43,\n\t0xE5, 0x8D, 0x9A, 0x43, 0xE5, 0x8D, 0x9C, 0x43,\n\t0xE5, 0x8D, 0xA9, 0x43, 0xE5, 0x8D, 0xB0, 0x43,\n\t0xE5, 0x8D, 0xB3, 0x43, 0xE5, 0x8D, 0xB5, 0x43,\n\t0xE5, 0x8D, 0xBD, 0x43, 0xE5, 0x8D, 0xBF, 0x43,\n\t// Bytes 8c0 - 8ff\n\t0xE5, 0x8E, 0x82, 0x43, 0xE5, 0x8E, 0xB6, 0x43,\n\t0xE5, 0x8F, 0x83, 0x43, 0xE5, 0x8F, 0x88, 0x43,\n\t0xE5, 0x8F, 0x8A, 0x43, 0xE5, 0x8F, 0x8C, 0x43,\n\t0xE5, 0x8F, 0x9F, 0x43, 0xE5, 0x8F, 0xA3, 0x43,\n\t0xE5, 0x8F, 0xA5, 0x43, 0xE5, 0x8F, 0xAB, 0x43,\n\t0xE5, 0x8F, 0xAF, 0x43, 0xE5, 0x8F, 0xB1, 0x43,\n\t0xE5, 0x8F, 0xB3, 0x43, 0xE5, 0x90, 0x86, 0x43,\n\t0xE5, 0x90, 0x88, 0x43, 0xE5, 0x90, 0x8D, 0x43,\n\t// Bytes 900 - 93f\n\t0xE5, 0x90, 0x8F, 0x43, 0xE5, 0x90, 0x9D, 0x43,\n\t0xE5, 0x90, 0xB8, 0x43, 0xE5, 0x90, 0xB9, 0x43,\n\t0xE5, 0x91, 0x82, 0x43, 0xE5, 0x91, 0x88, 0x43,\n\t0xE5, 0x91, 0xA8, 0x43, 0xE5, 0x92, 0x9E, 0x43,\n\t0xE5, 0x92, 0xA2, 0x43, 0xE5, 0x92, 0xBD, 0x43,\n\t0xE5, 0x93, 0xB6, 0x43, 0xE5, 0x94, 0x90, 0x43,\n\t0xE5, 0x95, 0x8F, 0x43, 0xE5, 0x95, 0x93, 0x43,\n\t0xE5, 0x95, 0x95, 0x43, 0xE5, 0x95, 0xA3, 0x43,\n\t// Bytes 940 - 97f\n\t0xE5, 0x96, 0x84, 0x43, 0xE5, 0x96, 0x87, 0x43,\n\t0xE5, 0x96, 0x99, 0x43, 0xE5, 0x96, 0x9D, 0x43,\n\t0xE5, 0x96, 0xAB, 0x43, 0xE5, 0x96, 0xB3, 0x43,\n\t0xE5, 0x96, 0xB6, 0x43, 0xE5, 0x97, 0x80, 0x43,\n\t0xE5, 0x97, 0x82, 0x43, 0xE5, 0x97, 0xA2, 0x43,\n\t0xE5, 0x98, 0x86, 0x43, 0xE5, 0x99, 0x91, 0x43,\n\t0xE5, 0x99, 0xA8, 0x43, 0xE5, 0x99, 0xB4, 0x43,\n\t0xE5, 0x9B, 0x97, 0x43, 0xE5, 0x9B, 0x9B, 0x43,\n\t// Bytes 980 - 9bf\n\t0xE5, 0x9B, 0xB9, 0x43, 0xE5, 0x9C, 0x96, 0x43,\n\t0xE5, 0x9C, 0x97, 0x43, 0xE5, 0x9C, 0x9F, 0x43,\n\t0xE5, 0x9C, 0xB0, 0x43, 0xE5, 0x9E, 0x8B, 0x43,\n\t0xE5, 0x9F, 0x8E, 0x43, 0xE5, 0x9F, 0xB4, 0x43,\n\t0xE5, 0xA0, 0x8D, 0x43, 0xE5, 0xA0, 0xB1, 0x43,\n\t0xE5, 0xA0, 0xB2, 0x43, 0xE5, 0xA1, 0x80, 0x43,\n\t0xE5, 0xA1, 0x9A, 0x43, 0xE5, 0xA1, 0x9E, 0x43,\n\t0xE5, 0xA2, 0xA8, 0x43, 0xE5, 0xA2, 0xAC, 0x43,\n\t// Bytes 9c0 - 9ff\n\t0xE5, 0xA2, 0xB3, 0x43, 0xE5, 0xA3, 0x98, 0x43,\n\t0xE5, 0xA3, 0x9F, 0x43, 0xE5, 0xA3, 0xAB, 0x43,\n\t0xE5, 0xA3, 0xAE, 0x43, 0xE5, 0xA3, 0xB0, 0x43,\n\t0xE5, 0xA3, 0xB2, 0x43, 0xE5, 0xA3, 0xB7, 0x43,\n\t0xE5, 0xA4, 0x82, 0x43, 0xE5, 0xA4, 0x86, 0x43,\n\t0xE5, 0xA4, 0x8A, 0x43, 0xE5, 0xA4, 0x95, 0x43,\n\t0xE5, 0xA4, 0x9A, 0x43, 0xE5, 0xA4, 0x9C, 0x43,\n\t0xE5, 0xA4, 0xA2, 0x43, 0xE5, 0xA4, 0xA7, 0x43,\n\t// Bytes a00 - a3f\n\t0xE5, 0xA4, 0xA9, 0x43, 0xE5, 0xA5, 0x84, 0x43,\n\t0xE5, 0xA5, 0x88, 0x43, 0xE5, 0xA5, 0x91, 0x43,\n\t0xE5, 0xA5, 0x94, 0x43, 0xE5, 0xA5, 0xA2, 0x43,\n\t0xE5, 0xA5, 0xB3, 0x43, 0xE5, 0xA7, 0x98, 0x43,\n\t0xE5, 0xA7, 0xAC, 0x43, 0xE5, 0xA8, 0x9B, 0x43,\n\t0xE5, 0xA8, 0xA7, 0x43, 0xE5, 0xA9, 0xA2, 0x43,\n\t0xE5, 0xA9, 0xA6, 0x43, 0xE5, 0xAA, 0xB5, 0x43,\n\t0xE5, 0xAC, 0x88, 0x43, 0xE5, 0xAC, 0xA8, 0x43,\n\t// Bytes a40 - a7f\n\t0xE5, 0xAC, 0xBE, 0x43, 0xE5, 0xAD, 0x90, 0x43,\n\t0xE5, 0xAD, 0x97, 0x43, 0xE5, 0xAD, 0xA6, 0x43,\n\t0xE5, 0xAE, 0x80, 0x43, 0xE5, 0xAE, 0x85, 0x43,\n\t0xE5, 0xAE, 0x97, 0x43, 0xE5, 0xAF, 0x83, 0x43,\n\t0xE5, 0xAF, 0x98, 0x43, 0xE5, 0xAF, 0xA7, 0x43,\n\t0xE5, 0xAF, 0xAE, 0x43, 0xE5, 0xAF, 0xB3, 0x43,\n\t0xE5, 0xAF, 0xB8, 0x43, 0xE5, 0xAF, 0xBF, 0x43,\n\t0xE5, 0xB0, 0x86, 0x43, 0xE5, 0xB0, 0x8F, 0x43,\n\t// Bytes a80 - abf\n\t0xE5, 0xB0, 0xA2, 0x43, 0xE5, 0xB0, 0xB8, 0x43,\n\t0xE5, 0xB0, 0xBF, 0x43, 0xE5, 0xB1, 0xA0, 0x43,\n\t0xE5, 0xB1, 0xA2, 0x43, 0xE5, 0xB1, 0xA4, 0x43,\n\t0xE5, 0xB1, 0xA5, 0x43, 0xE5, 0xB1, 0xAE, 0x43,\n\t0xE5, 0xB1, 0xB1, 0x43, 0xE5, 0xB2, 0x8D, 0x43,\n\t0xE5, 0xB3, 0x80, 0x43, 0xE5, 0xB4, 0x99, 0x43,\n\t0xE5, 0xB5, 0x83, 0x43, 0xE5, 0xB5, 0x90, 0x43,\n\t0xE5, 0xB5, 0xAB, 0x43, 0xE5, 0xB5, 0xAE, 0x43,\n\t// Bytes ac0 - aff\n\t0xE5, 0xB5, 0xBC, 0x43, 0xE5, 0xB6, 0xB2, 0x43,\n\t0xE5, 0xB6, 0xBA, 0x43, 0xE5, 0xB7, 0x9B, 0x43,\n\t0xE5, 0xB7, 0xA1, 0x43, 0xE5, 0xB7, 0xA2, 0x43,\n\t0xE5, 0xB7, 0xA5, 0x43, 0xE5, 0xB7, 0xA6, 0x43,\n\t0xE5, 0xB7, 0xB1, 0x43, 0xE5, 0xB7, 0xBD, 0x43,\n\t0xE5, 0xB7, 0xBE, 0x43, 0xE5, 0xB8, 0xA8, 0x43,\n\t0xE5, 0xB8, 0xBD, 0x43, 0xE5, 0xB9, 0xA9, 0x43,\n\t0xE5, 0xB9, 0xB2, 0x43, 0xE5, 0xB9, 0xB4, 0x43,\n\t// Bytes b00 - b3f\n\t0xE5, 0xB9, 0xBA, 0x43, 0xE5, 0xB9, 0xBC, 0x43,\n\t0xE5, 0xB9, 0xBF, 0x43, 0xE5, 0xBA, 0xA6, 0x43,\n\t0xE5, 0xBA, 0xB0, 0x43, 0xE5, 0xBA, 0xB3, 0x43,\n\t0xE5, 0xBA, 0xB6, 0x43, 0xE5, 0xBB, 0x89, 0x43,\n\t0xE5, 0xBB, 0x8A, 0x43, 0xE5, 0xBB, 0x92, 0x43,\n\t0xE5, 0xBB, 0x93, 0x43, 0xE5, 0xBB, 0x99, 0x43,\n\t0xE5, 0xBB, 0xAC, 0x43, 0xE5, 0xBB, 0xB4, 0x43,\n\t0xE5, 0xBB, 0xBE, 0x43, 0xE5, 0xBC, 0x84, 0x43,\n\t// Bytes b40 - b7f\n\t0xE5, 0xBC, 0x8B, 0x43, 0xE5, 0xBC, 0x93, 0x43,\n\t0xE5, 0xBC, 0xA2, 0x43, 0xE5, 0xBD, 0x90, 0x43,\n\t0xE5, 0xBD, 0x93, 0x43, 0xE5, 0xBD, 0xA1, 0x43,\n\t0xE5, 0xBD, 0xA2, 0x43, 0xE5, 0xBD, 0xA9, 0x43,\n\t0xE5, 0xBD, 0xAB, 0x43, 0xE5, 0xBD, 0xB3, 0x43,\n\t0xE5, 0xBE, 0x8B, 0x43, 0xE5, 0xBE, 0x8C, 0x43,\n\t0xE5, 0xBE, 0x97, 0x43, 0xE5, 0xBE, 0x9A, 0x43,\n\t0xE5, 0xBE, 0xA9, 0x43, 0xE5, 0xBE, 0xAD, 0x43,\n\t// Bytes b80 - bbf\n\t0xE5, 0xBF, 0x83, 0x43, 0xE5, 0xBF, 0x8D, 0x43,\n\t0xE5, 0xBF, 0x97, 0x43, 0xE5, 0xBF, 0xB5, 0x43,\n\t0xE5, 0xBF, 0xB9, 0x43, 0xE6, 0x80, 0x92, 0x43,\n\t0xE6, 0x80, 0x9C, 0x43, 0xE6, 0x81, 0xB5, 0x43,\n\t0xE6, 0x82, 0x81, 0x43, 0xE6, 0x82, 0x94, 0x43,\n\t0xE6, 0x83, 0x87, 0x43, 0xE6, 0x83, 0x98, 0x43,\n\t0xE6, 0x83, 0xA1, 0x43, 0xE6, 0x84, 0x88, 0x43,\n\t0xE6, 0x85, 0x84, 0x43, 0xE6, 0x85, 0x88, 0x43,\n\t// Bytes bc0 - bff\n\t0xE6, 0x85, 0x8C, 0x43, 0xE6, 0x85, 0x8E, 0x43,\n\t0xE6, 0x85, 0xA0, 0x43, 0xE6, 0x85, 0xA8, 0x43,\n\t0xE6, 0x85, 0xBA, 0x43, 0xE6, 0x86, 0x8E, 0x43,\n\t0xE6, 0x86, 0x90, 0x43, 0xE6, 0x86, 0xA4, 0x43,\n\t0xE6, 0x86, 0xAF, 0x43, 0xE6, 0x86, 0xB2, 0x43,\n\t0xE6, 0x87, 0x9E, 0x43, 0xE6, 0x87, 0xB2, 0x43,\n\t0xE6, 0x87, 0xB6, 0x43, 0xE6, 0x88, 0x80, 0x43,\n\t0xE6, 0x88, 0x88, 0x43, 0xE6, 0x88, 0x90, 0x43,\n\t// Bytes c00 - c3f\n\t0xE6, 0x88, 0x9B, 0x43, 0xE6, 0x88, 0xAE, 0x43,\n\t0xE6, 0x88, 0xB4, 0x43, 0xE6, 0x88, 0xB6, 0x43,\n\t0xE6, 0x89, 0x8B, 0x43, 0xE6, 0x89, 0x93, 0x43,\n\t0xE6, 0x89, 0x9D, 0x43, 0xE6, 0x8A, 0x95, 0x43,\n\t0xE6, 0x8A, 0xB1, 0x43, 0xE6, 0x8B, 0x89, 0x43,\n\t0xE6, 0x8B, 0x8F, 0x43, 0xE6, 0x8B, 0x93, 0x43,\n\t0xE6, 0x8B, 0x94, 0x43, 0xE6, 0x8B, 0xBC, 0x43,\n\t0xE6, 0x8B, 0xBE, 0x43, 0xE6, 0x8C, 0x87, 0x43,\n\t// Bytes c40 - c7f\n\t0xE6, 0x8C, 0xBD, 0x43, 0xE6, 0x8D, 0x90, 0x43,\n\t0xE6, 0x8D, 0x95, 0x43, 0xE6, 0x8D, 0xA8, 0x43,\n\t0xE6, 0x8D, 0xBB, 0x43, 0xE6, 0x8E, 0x83, 0x43,\n\t0xE6, 0x8E, 0xA0, 0x43, 0xE6, 0x8E, 0xA9, 0x43,\n\t0xE6, 0x8F, 0x84, 0x43, 0xE6, 0x8F, 0x85, 0x43,\n\t0xE6, 0x8F, 0xA4, 0x43, 0xE6, 0x90, 0x9C, 0x43,\n\t0xE6, 0x90, 0xA2, 0x43, 0xE6, 0x91, 0x92, 0x43,\n\t0xE6, 0x91, 0xA9, 0x43, 0xE6, 0x91, 0xB7, 0x43,\n\t// Bytes c80 - cbf\n\t0xE6, 0x91, 0xBE, 0x43, 0xE6, 0x92, 0x9A, 0x43,\n\t0xE6, 0x92, 0x9D, 0x43, 0xE6, 0x93, 0x84, 0x43,\n\t0xE6, 0x94, 0xAF, 0x43, 0xE6, 0x94, 0xB4, 0x43,\n\t0xE6, 0x95, 0x8F, 0x43, 0xE6, 0x95, 0x96, 0x43,\n\t0xE6, 0x95, 0xAC, 0x43, 0xE6, 0x95, 0xB8, 0x43,\n\t0xE6, 0x96, 0x87, 0x43, 0xE6, 0x96, 0x97, 0x43,\n\t0xE6, 0x96, 0x99, 0x43, 0xE6, 0x96, 0xA4, 0x43,\n\t0xE6, 0x96, 0xB0, 0x43, 0xE6, 0x96, 0xB9, 0x43,\n\t// Bytes cc0 - cff\n\t0xE6, 0x97, 0x85, 0x43, 0xE6, 0x97, 0xA0, 0x43,\n\t0xE6, 0x97, 0xA2, 0x43, 0xE6, 0x97, 0xA3, 0x43,\n\t0xE6, 0x97, 0xA5, 0x43, 0xE6, 0x98, 0x93, 0x43,\n\t0xE6, 0x98, 0xA0, 0x43, 0xE6, 0x99, 0x89, 0x43,\n\t0xE6, 0x99, 0xB4, 0x43, 0xE6, 0x9A, 0x88, 0x43,\n\t0xE6, 0x9A, 0x91, 0x43, 0xE6, 0x9A, 0x9C, 0x43,\n\t0xE6, 0x9A, 0xB4, 0x43, 0xE6, 0x9B, 0x86, 0x43,\n\t0xE6, 0x9B, 0xB0, 0x43, 0xE6, 0x9B, 0xB4, 0x43,\n\t// Bytes d00 - d3f\n\t0xE6, 0x9B, 0xB8, 0x43, 0xE6, 0x9C, 0x80, 0x43,\n\t0xE6, 0x9C, 0x88, 0x43, 0xE6, 0x9C, 0x89, 0x43,\n\t0xE6, 0x9C, 0x97, 0x43, 0xE6, 0x9C, 0x9B, 0x43,\n\t0xE6, 0x9C, 0xA1, 0x43, 0xE6, 0x9C, 0xA8, 0x43,\n\t0xE6, 0x9D, 0x8E, 0x43, 0xE6, 0x9D, 0x93, 0x43,\n\t0xE6, 0x9D, 0x96, 0x43, 0xE6, 0x9D, 0x9E, 0x43,\n\t0xE6, 0x9D, 0xBB, 0x43, 0xE6, 0x9E, 0x85, 0x43,\n\t0xE6, 0x9E, 0x97, 0x43, 0xE6, 0x9F, 0xB3, 0x43,\n\t// Bytes d40 - d7f\n\t0xE6, 0x9F, 0xBA, 0x43, 0xE6, 0xA0, 0x97, 0x43,\n\t0xE6, 0xA0, 0x9F, 0x43, 0xE6, 0xA0, 0xAA, 0x43,\n\t0xE6, 0xA1, 0x92, 0x43, 0xE6, 0xA2, 0x81, 0x43,\n\t0xE6, 0xA2, 0x85, 0x43, 0xE6, 0xA2, 0x8E, 0x43,\n\t0xE6, 0xA2, 0xA8, 0x43, 0xE6, 0xA4, 0x94, 0x43,\n\t0xE6, 0xA5, 0x82, 0x43, 0xE6, 0xA6, 0xA3, 0x43,\n\t0xE6, 0xA7, 0xAA, 0x43, 0xE6, 0xA8, 0x82, 0x43,\n\t0xE6, 0xA8, 0x93, 0x43, 0xE6, 0xAA, 0xA8, 0x43,\n\t// Bytes d80 - dbf\n\t0xE6, 0xAB, 0x93, 0x43, 0xE6, 0xAB, 0x9B, 0x43,\n\t0xE6, 0xAC, 0x84, 0x43, 0xE6, 0xAC, 0xA0, 0x43,\n\t0xE6, 0xAC, 0xA1, 0x43, 0xE6, 0xAD, 0x94, 0x43,\n\t0xE6, 0xAD, 0xA2, 0x43, 0xE6, 0xAD, 0xA3, 0x43,\n\t0xE6, 0xAD, 0xB2, 0x43, 0xE6, 0xAD, 0xB7, 0x43,\n\t0xE6, 0xAD, 0xB9, 0x43, 0xE6, 0xAE, 0x9F, 0x43,\n\t0xE6, 0xAE, 0xAE, 0x43, 0xE6, 0xAE, 0xB3, 0x43,\n\t0xE6, 0xAE, 0xBA, 0x43, 0xE6, 0xAE, 0xBB, 0x43,\n\t// Bytes dc0 - dff\n\t0xE6, 0xAF, 0x8B, 0x43, 0xE6, 0xAF, 0x8D, 0x43,\n\t0xE6, 0xAF, 0x94, 0x43, 0xE6, 0xAF, 0x9B, 0x43,\n\t0xE6, 0xB0, 0x8F, 0x43, 0xE6, 0xB0, 0x94, 0x43,\n\t0xE6, 0xB0, 0xB4, 0x43, 0xE6, 0xB1, 0x8E, 0x43,\n\t0xE6, 0xB1, 0xA7, 0x43, 0xE6, 0xB2, 0x88, 0x43,\n\t0xE6, 0xB2, 0xBF, 0x43, 0xE6, 0xB3, 0x8C, 0x43,\n\t0xE6, 0xB3, 0x8D, 0x43, 0xE6, 0xB3, 0xA5, 0x43,\n\t0xE6, 0xB3, 0xA8, 0x43, 0xE6, 0xB4, 0x96, 0x43,\n\t// Bytes e00 - e3f\n\t0xE6, 0xB4, 0x9B, 0x43, 0xE6, 0xB4, 0x9E, 0x43,\n\t0xE6, 0xB4, 0xB4, 0x43, 0xE6, 0xB4, 0xBE, 0x43,\n\t0xE6, 0xB5, 0x81, 0x43, 0xE6, 0xB5, 0xA9, 0x43,\n\t0xE6, 0xB5, 0xAA, 0x43, 0xE6, 0xB5, 0xB7, 0x43,\n\t0xE6, 0xB5, 0xB8, 0x43, 0xE6, 0xB6, 0x85, 0x43,\n\t0xE6, 0xB7, 0x8B, 0x43, 0xE6, 0xB7, 0x9A, 0x43,\n\t0xE6, 0xB7, 0xAA, 0x43, 0xE6, 0xB7, 0xB9, 0x43,\n\t0xE6, 0xB8, 0x9A, 0x43, 0xE6, 0xB8, 0xAF, 0x43,\n\t// Bytes e40 - e7f\n\t0xE6, 0xB9, 0xAE, 0x43, 0xE6, 0xBA, 0x80, 0x43,\n\t0xE6, 0xBA, 0x9C, 0x43, 0xE6, 0xBA, 0xBA, 0x43,\n\t0xE6, 0xBB, 0x87, 0x43, 0xE6, 0xBB, 0x8B, 0x43,\n\t0xE6, 0xBB, 0x91, 0x43, 0xE6, 0xBB, 0x9B, 0x43,\n\t0xE6, 0xBC, 0x8F, 0x43, 0xE6, 0xBC, 0x94, 0x43,\n\t0xE6, 0xBC, 0xA2, 0x43, 0xE6, 0xBC, 0xA3, 0x43,\n\t0xE6, 0xBD, 0xAE, 0x43, 0xE6, 0xBF, 0x86, 0x43,\n\t0xE6, 0xBF, 0xAB, 0x43, 0xE6, 0xBF, 0xBE, 0x43,\n\t// Bytes e80 - ebf\n\t0xE7, 0x80, 0x9B, 0x43, 0xE7, 0x80, 0x9E, 0x43,\n\t0xE7, 0x80, 0xB9, 0x43, 0xE7, 0x81, 0x8A, 0x43,\n\t0xE7, 0x81, 0xAB, 0x43, 0xE7, 0x81, 0xB0, 0x43,\n\t0xE7, 0x81, 0xB7, 0x43, 0xE7, 0x81, 0xBD, 0x43,\n\t0xE7, 0x82, 0x99, 0x43, 0xE7, 0x82, 0xAD, 0x43,\n\t0xE7, 0x83, 0x88, 0x43, 0xE7, 0x83, 0x99, 0x43,\n\t0xE7, 0x84, 0xA1, 0x43, 0xE7, 0x85, 0x85, 0x43,\n\t0xE7, 0x85, 0x89, 0x43, 0xE7, 0x85, 0xAE, 0x43,\n\t// Bytes ec0 - eff\n\t0xE7, 0x86, 0x9C, 0x43, 0xE7, 0x87, 0x8E, 0x43,\n\t0xE7, 0x87, 0x90, 0x43, 0xE7, 0x88, 0x90, 0x43,\n\t0xE7, 0x88, 0x9B, 0x43, 0xE7, 0x88, 0xA8, 0x43,\n\t0xE7, 0x88, 0xAA, 0x43, 0xE7, 0x88, 0xAB, 0x43,\n\t0xE7, 0x88, 0xB5, 0x43, 0xE7, 0x88, 0xB6, 0x43,\n\t0xE7, 0x88, 0xBB, 0x43, 0xE7, 0x88, 0xBF, 0x43,\n\t0xE7, 0x89, 0x87, 0x43, 0xE7, 0x89, 0x90, 0x43,\n\t0xE7, 0x89, 0x99, 0x43, 0xE7, 0x89, 0x9B, 0x43,\n\t// Bytes f00 - f3f\n\t0xE7, 0x89, 0xA2, 0x43, 0xE7, 0x89, 0xB9, 0x43,\n\t0xE7, 0x8A, 0x80, 0x43, 0xE7, 0x8A, 0x95, 0x43,\n\t0xE7, 0x8A, 0xAC, 0x43, 0xE7, 0x8A, 0xAF, 0x43,\n\t0xE7, 0x8B, 0x80, 0x43, 0xE7, 0x8B, 0xBC, 0x43,\n\t0xE7, 0x8C, 0xAA, 0x43, 0xE7, 0x8D, 0xB5, 0x43,\n\t0xE7, 0x8D, 0xBA, 0x43, 0xE7, 0x8E, 0x84, 0x43,\n\t0xE7, 0x8E, 0x87, 0x43, 0xE7, 0x8E, 0x89, 0x43,\n\t0xE7, 0x8E, 0x8B, 0x43, 0xE7, 0x8E, 0xA5, 0x43,\n\t// Bytes f40 - f7f\n\t0xE7, 0x8E, 0xB2, 0x43, 0xE7, 0x8F, 0x9E, 0x43,\n\t0xE7, 0x90, 0x86, 0x43, 0xE7, 0x90, 0x89, 0x43,\n\t0xE7, 0x90, 0xA2, 0x43, 0xE7, 0x91, 0x87, 0x43,\n\t0xE7, 0x91, 0x9C, 0x43, 0xE7, 0x91, 0xA9, 0x43,\n\t0xE7, 0x91, 0xB1, 0x43, 0xE7, 0x92, 0x85, 0x43,\n\t0xE7, 0x92, 0x89, 0x43, 0xE7, 0x92, 0x98, 0x43,\n\t0xE7, 0x93, 0x8A, 0x43, 0xE7, 0x93, 0x9C, 0x43,\n\t0xE7, 0x93, 0xA6, 0x43, 0xE7, 0x94, 0x86, 0x43,\n\t// Bytes f80 - fbf\n\t0xE7, 0x94, 0x98, 0x43, 0xE7, 0x94, 0x9F, 0x43,\n\t0xE7, 0x94, 0xA4, 0x43, 0xE7, 0x94, 0xA8, 0x43,\n\t0xE7, 0x94, 0xB0, 0x43, 0xE7, 0x94, 0xB2, 0x43,\n\t0xE7, 0x94, 0xB3, 0x43, 0xE7, 0x94, 0xB7, 0x43,\n\t0xE7, 0x94, 0xBB, 0x43, 0xE7, 0x94, 0xBE, 0x43,\n\t0xE7, 0x95, 0x99, 0x43, 0xE7, 0x95, 0xA5, 0x43,\n\t0xE7, 0x95, 0xB0, 0x43, 0xE7, 0x96, 0x8B, 0x43,\n\t0xE7, 0x96, 0x92, 0x43, 0xE7, 0x97, 0xA2, 0x43,\n\t// Bytes fc0 - fff\n\t0xE7, 0x98, 0x90, 0x43, 0xE7, 0x98, 0x9D, 0x43,\n\t0xE7, 0x98, 0x9F, 0x43, 0xE7, 0x99, 0x82, 0x43,\n\t0xE7, 0x99, 0xA9, 0x43, 0xE7, 0x99, 0xB6, 0x43,\n\t0xE7, 0x99, 0xBD, 0x43, 0xE7, 0x9A, 0xAE, 0x43,\n\t0xE7, 0x9A, 0xBF, 0x43, 0xE7, 0x9B, 0x8A, 0x43,\n\t0xE7, 0x9B, 0x9B, 0x43, 0xE7, 0x9B, 0xA3, 0x43,\n\t0xE7, 0x9B, 0xA7, 0x43, 0xE7, 0x9B, 0xAE, 0x43,\n\t0xE7, 0x9B, 0xB4, 0x43, 0xE7, 0x9C, 0x81, 0x43,\n\t// Bytes 1000 - 103f\n\t0xE7, 0x9C, 0x9E, 0x43, 0xE7, 0x9C, 0x9F, 0x43,\n\t0xE7, 0x9D, 0x80, 0x43, 0xE7, 0x9D, 0x8A, 0x43,\n\t0xE7, 0x9E, 0x8B, 0x43, 0xE7, 0x9E, 0xA7, 0x43,\n\t0xE7, 0x9F, 0x9B, 0x43, 0xE7, 0x9F, 0xA2, 0x43,\n\t0xE7, 0x9F, 0xB3, 0x43, 0xE7, 0xA1, 0x8E, 0x43,\n\t0xE7, 0xA1, 0xAB, 0x43, 0xE7, 0xA2, 0x8C, 0x43,\n\t0xE7, 0xA2, 0x91, 0x43, 0xE7, 0xA3, 0x8A, 0x43,\n\t0xE7, 0xA3, 0x8C, 0x43, 0xE7, 0xA3, 0xBB, 0x43,\n\t// Bytes 1040 - 107f\n\t0xE7, 0xA4, 0xAA, 0x43, 0xE7, 0xA4, 0xBA, 0x43,\n\t0xE7, 0xA4, 0xBC, 0x43, 0xE7, 0xA4, 0xBE, 0x43,\n\t0xE7, 0xA5, 0x88, 0x43, 0xE7, 0xA5, 0x89, 0x43,\n\t0xE7, 0xA5, 0x90, 0x43, 0xE7, 0xA5, 0x96, 0x43,\n\t0xE7, 0xA5, 0x9D, 0x43, 0xE7, 0xA5, 0x9E, 0x43,\n\t0xE7, 0xA5, 0xA5, 0x43, 0xE7, 0xA5, 0xBF, 0x43,\n\t0xE7, 0xA6, 0x81, 0x43, 0xE7, 0xA6, 0x8D, 0x43,\n\t0xE7, 0xA6, 0x8E, 0x43, 0xE7, 0xA6, 0x8F, 0x43,\n\t// Bytes 1080 - 10bf\n\t0xE7, 0xA6, 0xAE, 0x43, 0xE7, 0xA6, 0xB8, 0x43,\n\t0xE7, 0xA6, 0xBE, 0x43, 0xE7, 0xA7, 0x8A, 0x43,\n\t0xE7, 0xA7, 0x98, 0x43, 0xE7, 0xA7, 0xAB, 0x43,\n\t0xE7, 0xA8, 0x9C, 0x43, 0xE7, 0xA9, 0x80, 0x43,\n\t0xE7, 0xA9, 0x8A, 0x43, 0xE7, 0xA9, 0x8F, 0x43,\n\t0xE7, 0xA9, 0xB4, 0x43, 0xE7, 0xA9, 0xBA, 0x43,\n\t0xE7, 0xAA, 0x81, 0x43, 0xE7, 0xAA, 0xB1, 0x43,\n\t0xE7, 0xAB, 0x8B, 0x43, 0xE7, 0xAB, 0xAE, 0x43,\n\t// Bytes 10c0 - 10ff\n\t0xE7, 0xAB, 0xB9, 0x43, 0xE7, 0xAC, 0xA0, 0x43,\n\t0xE7, 0xAE, 0x8F, 0x43, 0xE7, 0xAF, 0x80, 0x43,\n\t0xE7, 0xAF, 0x86, 0x43, 0xE7, 0xAF, 0x89, 0x43,\n\t0xE7, 0xB0, 0xBE, 0x43, 0xE7, 0xB1, 0xA0, 0x43,\n\t0xE7, 0xB1, 0xB3, 0x43, 0xE7, 0xB1, 0xBB, 0x43,\n\t0xE7, 0xB2, 0x92, 0x43, 0xE7, 0xB2, 0xBE, 0x43,\n\t0xE7, 0xB3, 0x92, 0x43, 0xE7, 0xB3, 0x96, 0x43,\n\t0xE7, 0xB3, 0xA3, 0x43, 0xE7, 0xB3, 0xA7, 0x43,\n\t// Bytes 1100 - 113f\n\t0xE7, 0xB3, 0xA8, 0x43, 0xE7, 0xB3, 0xB8, 0x43,\n\t0xE7, 0xB4, 0x80, 0x43, 0xE7, 0xB4, 0x90, 0x43,\n\t0xE7, 0xB4, 0xA2, 0x43, 0xE7, 0xB4, 0xAF, 0x43,\n\t0xE7, 0xB5, 0x82, 0x43, 0xE7, 0xB5, 0x9B, 0x43,\n\t0xE7, 0xB5, 0xA3, 0x43, 0xE7, 0xB6, 0xA0, 0x43,\n\t0xE7, 0xB6, 0xBE, 0x43, 0xE7, 0xB7, 0x87, 0x43,\n\t0xE7, 0xB7, 0xB4, 0x43, 0xE7, 0xB8, 0x82, 0x43,\n\t0xE7, 0xB8, 0x89, 0x43, 0xE7, 0xB8, 0xB7, 0x43,\n\t// Bytes 1140 - 117f\n\t0xE7, 0xB9, 0x81, 0x43, 0xE7, 0xB9, 0x85, 0x43,\n\t0xE7, 0xBC, 0xB6, 0x43, 0xE7, 0xBC, 0xBE, 0x43,\n\t0xE7, 0xBD, 0x91, 0x43, 0xE7, 0xBD, 0xB2, 0x43,\n\t0xE7, 0xBD, 0xB9, 0x43, 0xE7, 0xBD, 0xBA, 0x43,\n\t0xE7, 0xBE, 0x85, 0x43, 0xE7, 0xBE, 0x8A, 0x43,\n\t0xE7, 0xBE, 0x95, 0x43, 0xE7, 0xBE, 0x9A, 0x43,\n\t0xE7, 0xBE, 0xBD, 0x43, 0xE7, 0xBF, 0xBA, 0x43,\n\t0xE8, 0x80, 0x81, 0x43, 0xE8, 0x80, 0x85, 0x43,\n\t// Bytes 1180 - 11bf\n\t0xE8, 0x80, 0x8C, 0x43, 0xE8, 0x80, 0x92, 0x43,\n\t0xE8, 0x80, 0xB3, 0x43, 0xE8, 0x81, 0x86, 0x43,\n\t0xE8, 0x81, 0xA0, 0x43, 0xE8, 0x81, 0xAF, 0x43,\n\t0xE8, 0x81, 0xB0, 0x43, 0xE8, 0x81, 0xBE, 0x43,\n\t0xE8, 0x81, 0xBF, 0x43, 0xE8, 0x82, 0x89, 0x43,\n\t0xE8, 0x82, 0x8B, 0x43, 0xE8, 0x82, 0xAD, 0x43,\n\t0xE8, 0x82, 0xB2, 0x43, 0xE8, 0x84, 0x83, 0x43,\n\t0xE8, 0x84, 0xBE, 0x43, 0xE8, 0x87, 0x98, 0x43,\n\t// Bytes 11c0 - 11ff\n\t0xE8, 0x87, 0xA3, 0x43, 0xE8, 0x87, 0xA8, 0x43,\n\t0xE8, 0x87, 0xAA, 0x43, 0xE8, 0x87, 0xAD, 0x43,\n\t0xE8, 0x87, 0xB3, 0x43, 0xE8, 0x87, 0xBC, 0x43,\n\t0xE8, 0x88, 0x81, 0x43, 0xE8, 0x88, 0x84, 0x43,\n\t0xE8, 0x88, 0x8C, 0x43, 0xE8, 0x88, 0x98, 0x43,\n\t0xE8, 0x88, 0x9B, 0x43, 0xE8, 0x88, 0x9F, 0x43,\n\t0xE8, 0x89, 0xAE, 0x43, 0xE8, 0x89, 0xAF, 0x43,\n\t0xE8, 0x89, 0xB2, 0x43, 0xE8, 0x89, 0xB8, 0x43,\n\t// Bytes 1200 - 123f\n\t0xE8, 0x89, 0xB9, 0x43, 0xE8, 0x8A, 0x8B, 0x43,\n\t0xE8, 0x8A, 0x91, 0x43, 0xE8, 0x8A, 0x9D, 0x43,\n\t0xE8, 0x8A, 0xB1, 0x43, 0xE8, 0x8A, 0xB3, 0x43,\n\t0xE8, 0x8A, 0xBD, 0x43, 0xE8, 0x8B, 0xA5, 0x43,\n\t0xE8, 0x8B, 0xA6, 0x43, 0xE8, 0x8C, 0x9D, 0x43,\n\t0xE8, 0x8C, 0xA3, 0x43, 0xE8, 0x8C, 0xB6, 0x43,\n\t0xE8, 0x8D, 0x92, 0x43, 0xE8, 0x8D, 0x93, 0x43,\n\t0xE8, 0x8D, 0xA3, 0x43, 0xE8, 0x8E, 0xAD, 0x43,\n\t// Bytes 1240 - 127f\n\t0xE8, 0x8E, 0xBD, 0x43, 0xE8, 0x8F, 0x89, 0x43,\n\t0xE8, 0x8F, 0x8A, 0x43, 0xE8, 0x8F, 0x8C, 0x43,\n\t0xE8, 0x8F, 0x9C, 0x43, 0xE8, 0x8F, 0xA7, 0x43,\n\t0xE8, 0x8F, 0xAF, 0x43, 0xE8, 0x8F, 0xB1, 0x43,\n\t0xE8, 0x90, 0xBD, 0x43, 0xE8, 0x91, 0x89, 0x43,\n\t0xE8, 0x91, 0x97, 0x43, 0xE8, 0x93, 0xAE, 0x43,\n\t0xE8, 0x93, 0xB1, 0x43, 0xE8, 0x93, 0xB3, 0x43,\n\t0xE8, 0x93, 0xBC, 0x43, 0xE8, 0x94, 0x96, 0x43,\n\t// Bytes 1280 - 12bf\n\t0xE8, 0x95, 0xA4, 0x43, 0xE8, 0x97, 0x8D, 0x43,\n\t0xE8, 0x97, 0xBA, 0x43, 0xE8, 0x98, 0x86, 0x43,\n\t0xE8, 0x98, 0x92, 0x43, 0xE8, 0x98, 0xAD, 0x43,\n\t0xE8, 0x98, 0xBF, 0x43, 0xE8, 0x99, 0x8D, 0x43,\n\t0xE8, 0x99, 0x90, 0x43, 0xE8, 0x99, 0x9C, 0x43,\n\t0xE8, 0x99, 0xA7, 0x43, 0xE8, 0x99, 0xA9, 0x43,\n\t0xE8, 0x99, 0xAB, 0x43, 0xE8, 0x9A, 0x88, 0x43,\n\t0xE8, 0x9A, 0xA9, 0x43, 0xE8, 0x9B, 0xA2, 0x43,\n\t// Bytes 12c0 - 12ff\n\t0xE8, 0x9C, 0x8E, 0x43, 0xE8, 0x9C, 0xA8, 0x43,\n\t0xE8, 0x9D, 0xAB, 0x43, 0xE8, 0x9D, 0xB9, 0x43,\n\t0xE8, 0x9E, 0x86, 0x43, 0xE8, 0x9E, 0xBA, 0x43,\n\t0xE8, 0x9F, 0xA1, 0x43, 0xE8, 0xA0, 0x81, 0x43,\n\t0xE8, 0xA0, 0x9F, 0x43, 0xE8, 0xA1, 0x80, 0x43,\n\t0xE8, 0xA1, 0x8C, 0x43, 0xE8, 0xA1, 0xA0, 0x43,\n\t0xE8, 0xA1, 0xA3, 0x43, 0xE8, 0xA3, 0x82, 0x43,\n\t0xE8, 0xA3, 0x8F, 0x43, 0xE8, 0xA3, 0x97, 0x43,\n\t// Bytes 1300 - 133f\n\t0xE8, 0xA3, 0x9E, 0x43, 0xE8, 0xA3, 0xA1, 0x43,\n\t0xE8, 0xA3, 0xB8, 0x43, 0xE8, 0xA3, 0xBA, 0x43,\n\t0xE8, 0xA4, 0x90, 0x43, 0xE8, 0xA5, 0x81, 0x43,\n\t0xE8, 0xA5, 0xA4, 0x43, 0xE8, 0xA5, 0xBE, 0x43,\n\t0xE8, 0xA6, 0x86, 0x43, 0xE8, 0xA6, 0x8B, 0x43,\n\t0xE8, 0xA6, 0x96, 0x43, 0xE8, 0xA7, 0x92, 0x43,\n\t0xE8, 0xA7, 0xA3, 0x43, 0xE8, 0xA8, 0x80, 0x43,\n\t0xE8, 0xAA, 0xA0, 0x43, 0xE8, 0xAA, 0xAA, 0x43,\n\t// Bytes 1340 - 137f\n\t0xE8, 0xAA, 0xBF, 0x43, 0xE8, 0xAB, 0x8B, 0x43,\n\t0xE8, 0xAB, 0x92, 0x43, 0xE8, 0xAB, 0x96, 0x43,\n\t0xE8, 0xAB, 0xAD, 0x43, 0xE8, 0xAB, 0xB8, 0x43,\n\t0xE8, 0xAB, 0xBE, 0x43, 0xE8, 0xAC, 0x81, 0x43,\n\t0xE8, 0xAC, 0xB9, 0x43, 0xE8, 0xAD, 0x98, 0x43,\n\t0xE8, 0xAE, 0x80, 0x43, 0xE8, 0xAE, 0x8A, 0x43,\n\t0xE8, 0xB0, 0xB7, 0x43, 0xE8, 0xB1, 0x86, 0x43,\n\t0xE8, 0xB1, 0x88, 0x43, 0xE8, 0xB1, 0x95, 0x43,\n\t// Bytes 1380 - 13bf\n\t0xE8, 0xB1, 0xB8, 0x43, 0xE8, 0xB2, 0x9D, 0x43,\n\t0xE8, 0xB2, 0xA1, 0x43, 0xE8, 0xB2, 0xA9, 0x43,\n\t0xE8, 0xB2, 0xAB, 0x43, 0xE8, 0xB3, 0x81, 0x43,\n\t0xE8, 0xB3, 0x82, 0x43, 0xE8, 0xB3, 0x87, 0x43,\n\t0xE8, 0xB3, 0x88, 0x43, 0xE8, 0xB3, 0x93, 0x43,\n\t0xE8, 0xB4, 0x88, 0x43, 0xE8, 0xB4, 0x9B, 0x43,\n\t0xE8, 0xB5, 0xA4, 0x43, 0xE8, 0xB5, 0xB0, 0x43,\n\t0xE8, 0xB5, 0xB7, 0x43, 0xE8, 0xB6, 0xB3, 0x43,\n\t// Bytes 13c0 - 13ff\n\t0xE8, 0xB6, 0xBC, 0x43, 0xE8, 0xB7, 0x8B, 0x43,\n\t0xE8, 0xB7, 0xAF, 0x43, 0xE8, 0xB7, 0xB0, 0x43,\n\t0xE8, 0xBA, 0xAB, 0x43, 0xE8, 0xBB, 0x8A, 0x43,\n\t0xE8, 0xBB, 0x94, 0x43, 0xE8, 0xBC, 0xA6, 0x43,\n\t0xE8, 0xBC, 0xAA, 0x43, 0xE8, 0xBC, 0xB8, 0x43,\n\t0xE8, 0xBC, 0xBB, 0x43, 0xE8, 0xBD, 0xA2, 0x43,\n\t0xE8, 0xBE, 0x9B, 0x43, 0xE8, 0xBE, 0x9E, 0x43,\n\t0xE8, 0xBE, 0xB0, 0x43, 0xE8, 0xBE, 0xB5, 0x43,\n\t// Bytes 1400 - 143f\n\t0xE8, 0xBE, 0xB6, 0x43, 0xE9, 0x80, 0xA3, 0x43,\n\t0xE9, 0x80, 0xB8, 0x43, 0xE9, 0x81, 0x8A, 0x43,\n\t0xE9, 0x81, 0xA9, 0x43, 0xE9, 0x81, 0xB2, 0x43,\n\t0xE9, 0x81, 0xBC, 0x43, 0xE9, 0x82, 0x8F, 0x43,\n\t0xE9, 0x82, 0x91, 0x43, 0xE9, 0x82, 0x94, 0x43,\n\t0xE9, 0x83, 0x8E, 0x43, 0xE9, 0x83, 0x9E, 0x43,\n\t0xE9, 0x83, 0xB1, 0x43, 0xE9, 0x83, 0xBD, 0x43,\n\t0xE9, 0x84, 0x91, 0x43, 0xE9, 0x84, 0x9B, 0x43,\n\t// Bytes 1440 - 147f\n\t0xE9, 0x85, 0x89, 0x43, 0xE9, 0x85, 0x8D, 0x43,\n\t0xE9, 0x85, 0xAA, 0x43, 0xE9, 0x86, 0x99, 0x43,\n\t0xE9, 0x86, 0xB4, 0x43, 0xE9, 0x87, 0x86, 0x43,\n\t0xE9, 0x87, 0x8C, 0x43, 0xE9, 0x87, 0x8F, 0x43,\n\t0xE9, 0x87, 0x91, 0x43, 0xE9, 0x88, 0xB4, 0x43,\n\t0xE9, 0x88, 0xB8, 0x43, 0xE9, 0x89, 0xB6, 0x43,\n\t0xE9, 0x89, 0xBC, 0x43, 0xE9, 0x8B, 0x97, 0x43,\n\t0xE9, 0x8B, 0x98, 0x43, 0xE9, 0x8C, 0x84, 0x43,\n\t// Bytes 1480 - 14bf\n\t0xE9, 0x8D, 0x8A, 0x43, 0xE9, 0x8F, 0xB9, 0x43,\n\t0xE9, 0x90, 0x95, 0x43, 0xE9, 0x95, 0xB7, 0x43,\n\t0xE9, 0x96, 0x80, 0x43, 0xE9, 0x96, 0x8B, 0x43,\n\t0xE9, 0x96, 0xAD, 0x43, 0xE9, 0x96, 0xB7, 0x43,\n\t0xE9, 0x98, 0x9C, 0x43, 0xE9, 0x98, 0xAE, 0x43,\n\t0xE9, 0x99, 0x8B, 0x43, 0xE9, 0x99, 0x8D, 0x43,\n\t0xE9, 0x99, 0xB5, 0x43, 0xE9, 0x99, 0xB8, 0x43,\n\t0xE9, 0x99, 0xBC, 0x43, 0xE9, 0x9A, 0x86, 0x43,\n\t// Bytes 14c0 - 14ff\n\t0xE9, 0x9A, 0xA3, 0x43, 0xE9, 0x9A, 0xB6, 0x43,\n\t0xE9, 0x9A, 0xB7, 0x43, 0xE9, 0x9A, 0xB8, 0x43,\n\t0xE9, 0x9A, 0xB9, 0x43, 0xE9, 0x9B, 0x83, 0x43,\n\t0xE9, 0x9B, 0xA2, 0x43, 0xE9, 0x9B, 0xA3, 0x43,\n\t0xE9, 0x9B, 0xA8, 0x43, 0xE9, 0x9B, 0xB6, 0x43,\n\t0xE9, 0x9B, 0xB7, 0x43, 0xE9, 0x9C, 0xA3, 0x43,\n\t0xE9, 0x9C, 0xB2, 0x43, 0xE9, 0x9D, 0x88, 0x43,\n\t0xE9, 0x9D, 0x91, 0x43, 0xE9, 0x9D, 0x96, 0x43,\n\t// Bytes 1500 - 153f\n\t0xE9, 0x9D, 0x9E, 0x43, 0xE9, 0x9D, 0xA2, 0x43,\n\t0xE9, 0x9D, 0xA9, 0x43, 0xE9, 0x9F, 0x8B, 0x43,\n\t0xE9, 0x9F, 0x9B, 0x43, 0xE9, 0x9F, 0xA0, 0x43,\n\t0xE9, 0x9F, 0xAD, 0x43, 0xE9, 0x9F, 0xB3, 0x43,\n\t0xE9, 0x9F, 0xBF, 0x43, 0xE9, 0xA0, 0x81, 0x43,\n\t0xE9, 0xA0, 0x85, 0x43, 0xE9, 0xA0, 0x8B, 0x43,\n\t0xE9, 0xA0, 0x98, 0x43, 0xE9, 0xA0, 0xA9, 0x43,\n\t0xE9, 0xA0, 0xBB, 0x43, 0xE9, 0xA1, 0x9E, 0x43,\n\t// Bytes 1540 - 157f\n\t0xE9, 0xA2, 0xA8, 0x43, 0xE9, 0xA3, 0x9B, 0x43,\n\t0xE9, 0xA3, 0x9F, 0x43, 0xE9, 0xA3, 0xA2, 0x43,\n\t0xE9, 0xA3, 0xAF, 0x43, 0xE9, 0xA3, 0xBC, 0x43,\n\t0xE9, 0xA4, 0xA8, 0x43, 0xE9, 0xA4, 0xA9, 0x43,\n\t0xE9, 0xA6, 0x96, 0x43, 0xE9, 0xA6, 0x99, 0x43,\n\t0xE9, 0xA6, 0xA7, 0x43, 0xE9, 0xA6, 0xAC, 0x43,\n\t0xE9, 0xA7, 0x82, 0x43, 0xE9, 0xA7, 0xB1, 0x43,\n\t0xE9, 0xA7, 0xBE, 0x43, 0xE9, 0xA9, 0xAA, 0x43,\n\t// Bytes 1580 - 15bf\n\t0xE9, 0xAA, 0xA8, 0x43, 0xE9, 0xAB, 0x98, 0x43,\n\t0xE9, 0xAB, 0x9F, 0x43, 0xE9, 0xAC, 0x92, 0x43,\n\t0xE9, 0xAC, 0xA5, 0x43, 0xE9, 0xAC, 0xAF, 0x43,\n\t0xE9, 0xAC, 0xB2, 0x43, 0xE9, 0xAC, 0xBC, 0x43,\n\t0xE9, 0xAD, 0x9A, 0x43, 0xE9, 0xAD, 0xAF, 0x43,\n\t0xE9, 0xB1, 0x80, 0x43, 0xE9, 0xB1, 0x97, 0x43,\n\t0xE9, 0xB3, 0xA5, 0x43, 0xE9, 0xB3, 0xBD, 0x43,\n\t0xE9, 0xB5, 0xA7, 0x43, 0xE9, 0xB6, 0xB4, 0x43,\n\t// Bytes 15c0 - 15ff\n\t0xE9, 0xB7, 0xBA, 0x43, 0xE9, 0xB8, 0x9E, 0x43,\n\t0xE9, 0xB9, 0xB5, 0x43, 0xE9, 0xB9, 0xBF, 0x43,\n\t0xE9, 0xBA, 0x97, 0x43, 0xE9, 0xBA, 0x9F, 0x43,\n\t0xE9, 0xBA, 0xA5, 0x43, 0xE9, 0xBA, 0xBB, 0x43,\n\t0xE9, 0xBB, 0x83, 0x43, 0xE9, 0xBB, 0x8D, 0x43,\n\t0xE9, 0xBB, 0x8E, 0x43, 0xE9, 0xBB, 0x91, 0x43,\n\t0xE9, 0xBB, 0xB9, 0x43, 0xE9, 0xBB, 0xBD, 0x43,\n\t0xE9, 0xBB, 0xBE, 0x43, 0xE9, 0xBC, 0x85, 0x43,\n\t// Bytes 1600 - 163f\n\t0xE9, 0xBC, 0x8E, 0x43, 0xE9, 0xBC, 0x8F, 0x43,\n\t0xE9, 0xBC, 0x93, 0x43, 0xE9, 0xBC, 0x96, 0x43,\n\t0xE9, 0xBC, 0xA0, 0x43, 0xE9, 0xBC, 0xBB, 0x43,\n\t0xE9, 0xBD, 0x83, 0x43, 0xE9, 0xBD, 0x8A, 0x43,\n\t0xE9, 0xBD, 0x92, 0x43, 0xE9, 0xBE, 0x8D, 0x43,\n\t0xE9, 0xBE, 0x8E, 0x43, 0xE9, 0xBE, 0x9C, 0x43,\n\t0xE9, 0xBE, 0x9F, 0x43, 0xE9, 0xBE, 0xA0, 0x43,\n\t0xEA, 0x9C, 0xA7, 0x43, 0xEA, 0x9D, 0xAF, 0x43,\n\t// Bytes 1640 - 167f\n\t0xEA, 0xAC, 0xB7, 0x43, 0xEA, 0xAD, 0x92, 0x44,\n\t0xF0, 0xA0, 0x84, 0xA2, 0x44, 0xF0, 0xA0, 0x94,\n\t0x9C, 0x44, 0xF0, 0xA0, 0x94, 0xA5, 0x44, 0xF0,\n\t0xA0, 0x95, 0x8B, 0x44, 0xF0, 0xA0, 0x98, 0xBA,\n\t0x44, 0xF0, 0xA0, 0xA0, 0x84, 0x44, 0xF0, 0xA0,\n\t0xA3, 0x9E, 0x44, 0xF0, 0xA0, 0xA8, 0xAC, 0x44,\n\t0xF0, 0xA0, 0xAD, 0xA3, 0x44, 0xF0, 0xA1, 0x93,\n\t0xA4, 0x44, 0xF0, 0xA1, 0x9A, 0xA8, 0x44, 0xF0,\n\t// Bytes 1680 - 16bf\n\t0xA1, 0x9B, 0xAA, 0x44, 0xF0, 0xA1, 0xA7, 0x88,\n\t0x44, 0xF0, 0xA1, 0xAC, 0x98, 0x44, 0xF0, 0xA1,\n\t0xB4, 0x8B, 0x44, 0xF0, 0xA1, 0xB7, 0xA4, 0x44,\n\t0xF0, 0xA1, 0xB7, 0xA6, 0x44, 0xF0, 0xA2, 0x86,\n\t0x83, 0x44, 0xF0, 0xA2, 0x86, 0x9F, 0x44, 0xF0,\n\t0xA2, 0x8C, 0xB1, 0x44, 0xF0, 0xA2, 0x9B, 0x94,\n\t0x44, 0xF0, 0xA2, 0xA1, 0x84, 0x44, 0xF0, 0xA2,\n\t0xA1, 0x8A, 0x44, 0xF0, 0xA2, 0xAC, 0x8C, 0x44,\n\t// Bytes 16c0 - 16ff\n\t0xF0, 0xA2, 0xAF, 0xB1, 0x44, 0xF0, 0xA3, 0x80,\n\t0x8A, 0x44, 0xF0, 0xA3, 0x8A, 0xB8, 0x44, 0xF0,\n\t0xA3, 0x8D, 0x9F, 0x44, 0xF0, 0xA3, 0x8E, 0x93,\n\t0x44, 0xF0, 0xA3, 0x8E, 0x9C, 0x44, 0xF0, 0xA3,\n\t0x8F, 0x83, 0x44, 0xF0, 0xA3, 0x8F, 0x95, 0x44,\n\t0xF0, 0xA3, 0x91, 0xAD, 0x44, 0xF0, 0xA3, 0x9A,\n\t0xA3, 0x44, 0xF0, 0xA3, 0xA2, 0xA7, 0x44, 0xF0,\n\t0xA3, 0xAA, 0x8D, 0x44, 0xF0, 0xA3, 0xAB, 0xBA,\n\t// Bytes 1700 - 173f\n\t0x44, 0xF0, 0xA3, 0xB2, 0xBC, 0x44, 0xF0, 0xA3,\n\t0xB4, 0x9E, 0x44, 0xF0, 0xA3, 0xBB, 0x91, 0x44,\n\t0xF0, 0xA3, 0xBD, 0x9E, 0x44, 0xF0, 0xA3, 0xBE,\n\t0x8E, 0x44, 0xF0, 0xA4, 0x89, 0xA3, 0x44, 0xF0,\n\t0xA4, 0x8B, 0xAE, 0x44, 0xF0, 0xA4, 0x8E, 0xAB,\n\t0x44, 0xF0, 0xA4, 0x98, 0x88, 0x44, 0xF0, 0xA4,\n\t0x9C, 0xB5, 0x44, 0xF0, 0xA4, 0xA0, 0x94, 0x44,\n\t0xF0, 0xA4, 0xB0, 0xB6, 0x44, 0xF0, 0xA4, 0xB2,\n\t// Bytes 1740 - 177f\n\t0x92, 0x44, 0xF0, 0xA4, 0xBE, 0xA1, 0x44, 0xF0,\n\t0xA4, 0xBE, 0xB8, 0x44, 0xF0, 0xA5, 0x81, 0x84,\n\t0x44, 0xF0, 0xA5, 0x83, 0xB2, 0x44, 0xF0, 0xA5,\n\t0x83, 0xB3, 0x44, 0xF0, 0xA5, 0x84, 0x99, 0x44,\n\t0xF0, 0xA5, 0x84, 0xB3, 0x44, 0xF0, 0xA5, 0x89,\n\t0x89, 0x44, 0xF0, 0xA5, 0x90, 0x9D, 0x44, 0xF0,\n\t0xA5, 0x98, 0xA6, 0x44, 0xF0, 0xA5, 0x9A, 0x9A,\n\t0x44, 0xF0, 0xA5, 0x9B, 0x85, 0x44, 0xF0, 0xA5,\n\t// Bytes 1780 - 17bf\n\t0xA5, 0xBC, 0x44, 0xF0, 0xA5, 0xAA, 0xA7, 0x44,\n\t0xF0, 0xA5, 0xAE, 0xAB, 0x44, 0xF0, 0xA5, 0xB2,\n\t0x80, 0x44, 0xF0, 0xA5, 0xB3, 0x90, 0x44, 0xF0,\n\t0xA5, 0xBE, 0x86, 0x44, 0xF0, 0xA6, 0x87, 0x9A,\n\t0x44, 0xF0, 0xA6, 0x88, 0xA8, 0x44, 0xF0, 0xA6,\n\t0x89, 0x87, 0x44, 0xF0, 0xA6, 0x8B, 0x99, 0x44,\n\t0xF0, 0xA6, 0x8C, 0xBE, 0x44, 0xF0, 0xA6, 0x93,\n\t0x9A, 0x44, 0xF0, 0xA6, 0x94, 0xA3, 0x44, 0xF0,\n\t// Bytes 17c0 - 17ff\n\t0xA6, 0x96, 0xA8, 0x44, 0xF0, 0xA6, 0x9E, 0xA7,\n\t0x44, 0xF0, 0xA6, 0x9E, 0xB5, 0x44, 0xF0, 0xA6,\n\t0xAC, 0xBC, 0x44, 0xF0, 0xA6, 0xB0, 0xB6, 0x44,\n\t0xF0, 0xA6, 0xB3, 0x95, 0x44, 0xF0, 0xA6, 0xB5,\n\t0xAB, 0x44, 0xF0, 0xA6, 0xBC, 0xAC, 0x44, 0xF0,\n\t0xA6, 0xBE, 0xB1, 0x44, 0xF0, 0xA7, 0x83, 0x92,\n\t0x44, 0xF0, 0xA7, 0x8F, 0x8A, 0x44, 0xF0, 0xA7,\n\t0x99, 0xA7, 0x44, 0xF0, 0xA7, 0xA2, 0xAE, 0x44,\n\t// Bytes 1800 - 183f\n\t0xF0, 0xA7, 0xA5, 0xA6, 0x44, 0xF0, 0xA7, 0xB2,\n\t0xA8, 0x44, 0xF0, 0xA7, 0xBB, 0x93, 0x44, 0xF0,\n\t0xA7, 0xBC, 0xAF, 0x44, 0xF0, 0xA8, 0x97, 0x92,\n\t0x44, 0xF0, 0xA8, 0x97, 0xAD, 0x44, 0xF0, 0xA8,\n\t0x9C, 0xAE, 0x44, 0xF0, 0xA8, 0xAF, 0xBA, 0x44,\n\t0xF0, 0xA8, 0xB5, 0xB7, 0x44, 0xF0, 0xA9, 0x85,\n\t0x85, 0x44, 0xF0, 0xA9, 0x87, 0x9F, 0x44, 0xF0,\n\t0xA9, 0x88, 0x9A, 0x44, 0xF0, 0xA9, 0x90, 0x8A,\n\t// Bytes 1840 - 187f\n\t0x44, 0xF0, 0xA9, 0x92, 0x96, 0x44, 0xF0, 0xA9,\n\t0x96, 0xB6, 0x44, 0xF0, 0xA9, 0xAC, 0xB0, 0x44,\n\t0xF0, 0xAA, 0x83, 0x8E, 0x44, 0xF0, 0xAA, 0x84,\n\t0x85, 0x44, 0xF0, 0xAA, 0x88, 0x8E, 0x44, 0xF0,\n\t0xAA, 0x8A, 0x91, 0x44, 0xF0, 0xAA, 0x8E, 0x92,\n\t0x44, 0xF0, 0xAA, 0x98, 0x80, 0x42, 0x21, 0x21,\n\t0x42, 0x21, 0x3F, 0x42, 0x2E, 0x2E, 0x42, 0x30,\n\t0x2C, 0x42, 0x30, 0x2E, 0x42, 0x31, 0x2C, 0x42,\n\t// Bytes 1880 - 18bf\n\t0x31, 0x2E, 0x42, 0x31, 0x30, 0x42, 0x31, 0x31,\n\t0x42, 0x31, 0x32, 0x42, 0x31, 0x33, 0x42, 0x31,\n\t0x34, 0x42, 0x31, 0x35, 0x42, 0x31, 0x36, 0x42,\n\t0x31, 0x37, 0x42, 0x31, 0x38, 0x42, 0x31, 0x39,\n\t0x42, 0x32, 0x2C, 0x42, 0x32, 0x2E, 0x42, 0x32,\n\t0x30, 0x42, 0x32, 0x31, 0x42, 0x32, 0x32, 0x42,\n\t0x32, 0x33, 0x42, 0x32, 0x34, 0x42, 0x32, 0x35,\n\t0x42, 0x32, 0x36, 0x42, 0x32, 0x37, 0x42, 0x32,\n\t// Bytes 18c0 - 18ff\n\t0x38, 0x42, 0x32, 0x39, 0x42, 0x33, 0x2C, 0x42,\n\t0x33, 0x2E, 0x42, 0x33, 0x30, 0x42, 0x33, 0x31,\n\t0x42, 0x33, 0x32, 0x42, 0x33, 0x33, 0x42, 0x33,\n\t0x34, 0x42, 0x33, 0x35, 0x42, 0x33, 0x36, 0x42,\n\t0x33, 0x37, 0x42, 0x33, 0x38, 0x42, 0x33, 0x39,\n\t0x42, 0x34, 0x2C, 0x42, 0x34, 0x2E, 0x42, 0x34,\n\t0x30, 0x42, 0x34, 0x31, 0x42, 0x34, 0x32, 0x42,\n\t0x34, 0x33, 0x42, 0x34, 0x34, 0x42, 0x34, 0x35,\n\t// Bytes 1900 - 193f\n\t0x42, 0x34, 0x36, 0x42, 0x34, 0x37, 0x42, 0x34,\n\t0x38, 0x42, 0x34, 0x39, 0x42, 0x35, 0x2C, 0x42,\n\t0x35, 0x2E, 0x42, 0x35, 0x30, 0x42, 0x36, 0x2C,\n\t0x42, 0x36, 0x2E, 0x42, 0x37, 0x2C, 0x42, 0x37,\n\t0x2E, 0x42, 0x38, 0x2C, 0x42, 0x38, 0x2E, 0x42,\n\t0x39, 0x2C, 0x42, 0x39, 0x2E, 0x42, 0x3D, 0x3D,\n\t0x42, 0x3F, 0x21, 0x42, 0x3F, 0x3F, 0x42, 0x41,\n\t0x55, 0x42, 0x42, 0x71, 0x42, 0x43, 0x44, 0x42,\n\t// Bytes 1940 - 197f\n\t0x44, 0x4A, 0x42, 0x44, 0x5A, 0x42, 0x44, 0x7A,\n\t0x42, 0x47, 0x42, 0x42, 0x47, 0x79, 0x42, 0x48,\n\t0x50, 0x42, 0x48, 0x56, 0x42, 0x48, 0x67, 0x42,\n\t0x48, 0x7A, 0x42, 0x49, 0x49, 0x42, 0x49, 0x4A,\n\t0x42, 0x49, 0x55, 0x42, 0x49, 0x56, 0x42, 0x49,\n\t0x58, 0x42, 0x4B, 0x42, 0x42, 0x4B, 0x4B, 0x42,\n\t0x4B, 0x4D, 0x42, 0x4C, 0x4A, 0x42, 0x4C, 0x6A,\n\t0x42, 0x4D, 0x42, 0x42, 0x4D, 0x43, 0x42, 0x4D,\n\t// Bytes 1980 - 19bf\n\t0x44, 0x42, 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42,\n\t0x4E, 0x4A, 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F,\n\t0x42, 0x50, 0x48, 0x42, 0x50, 0x52, 0x42, 0x50,\n\t0x61, 0x42, 0x52, 0x73, 0x42, 0x53, 0x44, 0x42,\n\t0x53, 0x4D, 0x42, 0x53, 0x53, 0x42, 0x53, 0x76,\n\t0x42, 0x54, 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57,\n\t0x43, 0x42, 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42,\n\t0x58, 0x49, 0x42, 0x63, 0x63, 0x42, 0x63, 0x64,\n\t// Bytes 19c0 - 19ff\n\t0x42, 0x63, 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64,\n\t0x61, 0x42, 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42,\n\t0x64, 0x7A, 0x42, 0x65, 0x56, 0x42, 0x66, 0x66,\n\t0x42, 0x66, 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66,\n\t0x6D, 0x42, 0x68, 0x61, 0x42, 0x69, 0x69, 0x42,\n\t0x69, 0x6A, 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76,\n\t0x42, 0x69, 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B,\n\t0x56, 0x42, 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42,\n\t// Bytes 1a00 - 1a3f\n\t0x6B, 0x6C, 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74,\n\t0x42, 0x6C, 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C,\n\t0x6E, 0x42, 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42,\n\t0x6D, 0x33, 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56,\n\t0x42, 0x6D, 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D,\n\t0x67, 0x42, 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42,\n\t0x6D, 0x73, 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46,\n\t0x42, 0x6E, 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E,\n\t// Bytes 1a40 - 1a7f\n\t0x6A, 0x42, 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42,\n\t0x6F, 0x56, 0x42, 0x70, 0x41, 0x42, 0x70, 0x46,\n\t0x42, 0x70, 0x56, 0x42, 0x70, 0x57, 0x42, 0x70,\n\t0x63, 0x42, 0x70, 0x73, 0x42, 0x73, 0x72, 0x42,\n\t0x73, 0x74, 0x42, 0x76, 0x69, 0x42, 0x78, 0x69,\n\t0x43, 0x28, 0x31, 0x29, 0x43, 0x28, 0x32, 0x29,\n\t0x43, 0x28, 0x33, 0x29, 0x43, 0x28, 0x34, 0x29,\n\t0x43, 0x28, 0x35, 0x29, 0x43, 0x28, 0x36, 0x29,\n\t// Bytes 1a80 - 1abf\n\t0x43, 0x28, 0x37, 0x29, 0x43, 0x28, 0x38, 0x29,\n\t0x43, 0x28, 0x39, 0x29, 0x43, 0x28, 0x41, 0x29,\n\t0x43, 0x28, 0x42, 0x29, 0x43, 0x28, 0x43, 0x29,\n\t0x43, 0x28, 0x44, 0x29, 0x43, 0x28, 0x45, 0x29,\n\t0x43, 0x28, 0x46, 0x29, 0x43, 0x28, 0x47, 0x29,\n\t0x43, 0x28, 0x48, 0x29, 0x43, 0x28, 0x49, 0x29,\n\t0x43, 0x28, 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29,\n\t0x43, 0x28, 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29,\n\t// Bytes 1ac0 - 1aff\n\t0x43, 0x28, 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29,\n\t0x43, 0x28, 0x50, 0x29, 0x43, 0x28, 0x51, 0x29,\n\t0x43, 0x28, 0x52, 0x29, 0x43, 0x28, 0x53, 0x29,\n\t0x43, 0x28, 0x54, 0x29, 0x43, 0x28, 0x55, 0x29,\n\t0x43, 0x28, 0x56, 0x29, 0x43, 0x28, 0x57, 0x29,\n\t0x43, 0x28, 0x58, 0x29, 0x43, 0x28, 0x59, 0x29,\n\t0x43, 0x28, 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29,\n\t0x43, 0x28, 0x62, 0x29, 0x43, 0x28, 0x63, 0x29,\n\t// Bytes 1b00 - 1b3f\n\t0x43, 0x28, 0x64, 0x29, 0x43, 0x28, 0x65, 0x29,\n\t0x43, 0x28, 0x66, 0x29, 0x43, 0x28, 0x67, 0x29,\n\t0x43, 0x28, 0x68, 0x29, 0x43, 0x28, 0x69, 0x29,\n\t0x43, 0x28, 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29,\n\t0x43, 0x28, 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29,\n\t0x43, 0x28, 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29,\n\t0x43, 0x28, 0x70, 0x29, 0x43, 0x28, 0x71, 0x29,\n\t0x43, 0x28, 0x72, 0x29, 0x43, 0x28, 0x73, 0x29,\n\t// Bytes 1b40 - 1b7f\n\t0x43, 0x28, 0x74, 0x29, 0x43, 0x28, 0x75, 0x29,\n\t0x43, 0x28, 0x76, 0x29, 0x43, 0x28, 0x77, 0x29,\n\t0x43, 0x28, 0x78, 0x29, 0x43, 0x28, 0x79, 0x29,\n\t0x43, 0x28, 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E,\n\t0x43, 0x31, 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E,\n\t0x43, 0x31, 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E,\n\t0x43, 0x31, 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E,\n\t0x43, 0x31, 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E,\n\t// Bytes 1b80 - 1bbf\n\t0x43, 0x31, 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E,\n\t0x43, 0x32, 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D,\n\t0x43, 0x3D, 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E,\n\t0x43, 0x46, 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A,\n\t0x43, 0x47, 0x50, 0x61, 0x43, 0x49, 0x49, 0x49,\n\t0x43, 0x4C, 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7,\n\t0x43, 0x4D, 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61,\n\t0x43, 0x4D, 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D,\n\t// Bytes 1bc0 - 1bff\n\t0x43, 0x50, 0x50, 0x56, 0x43, 0x50, 0x54, 0x45,\n\t0x43, 0x54, 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A,\n\t0x43, 0x56, 0x49, 0x49, 0x43, 0x58, 0x49, 0x49,\n\t0x43, 0x61, 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73,\n\t0x43, 0x61, 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72,\n\t0x43, 0x63, 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75,\n\t0x43, 0x63, 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32,\n\t0x43, 0x63, 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32,\n\t// Bytes 1c00 - 1c3f\n\t0x43, 0x64, 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67,\n\t0x43, 0x66, 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C,\n\t0x43, 0x67, 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61,\n\t0x43, 0x69, 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A,\n\t0x43, 0x6B, 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32,\n\t0x43, 0x6B, 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9,\n\t0x43, 0x6C, 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7,\n\t0x43, 0x6D, 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32,\n\t// Bytes 1c40 - 1c7f\n\t0x43, 0x6D, 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C,\n\t0x43, 0x72, 0x61, 0x64, 0x43, 0x76, 0x69, 0x69,\n\t0x43, 0x78, 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43,\n\t0x43, 0xC2, 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E,\n\t0x43, 0xCE, 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46,\n\t0x43, 0xCE, 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57,\n\t0x43, 0xCE, 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C,\n\t0x43, 0xCE, 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73,\n\t// Bytes 1c80 - 1cbf\n\t0x44, 0x28, 0x31, 0x30, 0x29, 0x44, 0x28, 0x31,\n\t0x31, 0x29, 0x44, 0x28, 0x31, 0x32, 0x29, 0x44,\n\t0x28, 0x31, 0x33, 0x29, 0x44, 0x28, 0x31, 0x34,\n\t0x29, 0x44, 0x28, 0x31, 0x35, 0x29, 0x44, 0x28,\n\t0x31, 0x36, 0x29, 0x44, 0x28, 0x31, 0x37, 0x29,\n\t0x44, 0x28, 0x31, 0x38, 0x29, 0x44, 0x28, 0x31,\n\t0x39, 0x29, 0x44, 0x28, 0x32, 0x30, 0x29, 0x44,\n\t0x30, 0xE7, 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81,\n\t// Bytes 1cc0 - 1cff\n\t0x84, 0x44, 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31,\n\t0xE6, 0x9C, 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9,\n\t0x44, 0x32, 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6,\n\t0x9C, 0x88, 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44,\n\t0x33, 0xE6, 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C,\n\t0x88, 0x44, 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34,\n\t0xE6, 0x97, 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88,\n\t0x44, 0x34, 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6,\n\t// Bytes 1d00 - 1d3f\n\t0x97, 0xA5, 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44,\n\t0x35, 0xE7, 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97,\n\t0xA5, 0x44, 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36,\n\t0xE7, 0x82, 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5,\n\t0x44, 0x37, 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7,\n\t0x82, 0xB9, 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44,\n\t0x38, 0xE6, 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82,\n\t0xB9, 0x44, 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39,\n\t// Bytes 1d40 - 1d7f\n\t0xE6, 0x9C, 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9,\n\t0x44, 0x56, 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E,\n\t0x6D, 0x2E, 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44,\n\t0x70, 0x2E, 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69,\n\t0x69, 0x44, 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5,\n\t0xB4, 0xD5, 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB,\n\t0x44, 0xD5, 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4,\n\t0xD5, 0xB6, 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44,\n\t// Bytes 1d80 - 1dbf\n\t0xD7, 0x90, 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9,\n\t0xB4, 0x44, 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xA8, 0xD8, 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8,\n\t0xD8, 0xB2, 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44,\n\t0xD8, 0xA8, 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9,\n\t0x87, 0x44, 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8,\n\t0xA8, 0xD9, 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC,\n\t// Bytes 1dc0 - 1dff\n\t0x44, 0xD8, 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA,\n\t0xD8, 0xAE, 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44,\n\t0xD8, 0xAA, 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9,\n\t0x85, 0x44, 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAA, 0xD9, 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB,\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44,\n\t0xD8, 0xAB, 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9,\n\t// Bytes 1e00 - 1e3f\n\t0x85, 0x44, 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8,\n\t0xAB, 0xD9, 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC,\n\t0xD8, 0xAD, 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44,\n\t0xD8, 0xAC, 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9,\n\t0x8A, 0x44, 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8,\n\t0xAD, 0xD9, 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x44, 0xD8, 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE,\n\t// Bytes 1e40 - 1e7f\n\t0xD8, 0xAC, 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44,\n\t0xD8, 0xAE, 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9,\n\t0x89, 0x44, 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB3, 0xD8, 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB3, 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8,\n\t// Bytes 1e80 - 1ebf\n\t0xB4, 0xD8, 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0x44, 0xD8, 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4,\n\t0xD8, 0xB1, 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44,\n\t0xD8, 0xB4, 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9,\n\t0x89, 0x44, 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE,\n\t0x44, 0xD8, 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44,\n\t// Bytes 1ec0 - 1eff\n\t0xD8, 0xB5, 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8,\n\t0xB6, 0xD8, 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1,\n\t0x44, 0xD8, 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6,\n\t0xD9, 0x89, 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44,\n\t0xD8, 0xB7, 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9,\n\t0x85, 0x44, 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8,\n\t0xB7, 0xD9, 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85,\n\t// Bytes 1f00 - 1f3f\n\t0x44, 0xD8, 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9,\n\t0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44,\n\t0xD8, 0xB9, 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8,\n\t0xAC, 0x44, 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8,\n\t0xBA, 0xD9, 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A,\n\t0x44, 0xD9, 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x81, 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9,\n\t// Bytes 1f40 - 1f7f\n\t0x89, 0x44, 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9,\n\t0x82, 0xD8, 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85,\n\t0x44, 0xD9, 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x83, 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x83, 0xD9, 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85,\n\t0x44, 0xD9, 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83,\n\t// Bytes 1f80 - 1fbf\n\t0xD9, 0x8A, 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x84, 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9,\n\t0x84, 0xD9, 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87,\n\t0x44, 0xD9, 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44,\n\t0xD9, 0x85, 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x44, 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9,\n\t// Bytes 1fc0 - 1fff\n\t0x85, 0xD9, 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89,\n\t0x44, 0xD9, 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86,\n\t0xD8, 0xAC, 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44,\n\t0xD9, 0x86, 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8,\n\t0xB1, 0x44, 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9,\n\t0x86, 0xD9, 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86,\n\t0x44, 0xD9, 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86,\n\t0xD9, 0x89, 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44,\n\t// Bytes 2000 - 203f\n\t0xD9, 0x87, 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9,\n\t0x85, 0x44, 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9,\n\t0x87, 0xD9, 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4,\n\t0x44, 0xD9, 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44,\n\t0xD9, 0x8A, 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8,\n\t0xB2, 0x44, 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9,\n\t0x8A, 0xD9, 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87,\n\t// Bytes 2040 - 207f\n\t0x44, 0xD9, 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A,\n\t0xD9, 0x8A, 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44,\n\t0xDB, 0x87, 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84,\n\t0x80, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x86, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28,\n\t// Bytes 2080 - 20bf\n\t0xE1, 0x84, 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x8C, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29,\n\t0x45, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28,\n\t0xE1, 0x84, 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84,\n\t0x91, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29,\n\t0x45, 0x28, 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28,\n\t0xE4, 0xB8, 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8,\n\t0x89, 0x29, 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29,\n\t// Bytes 20c0 - 20ff\n\t0x45, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28,\n\t0xE4, 0xBA, 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB,\n\t0xA3, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29,\n\t0x45, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28,\n\t0xE5, 0x85, 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85,\n\t0xAD, 0x29, 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29,\n\t0x45, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28,\n\t0xE5, 0x8D, 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90,\n\t// Bytes 2100 - 213f\n\t0x8D, 0x29, 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29,\n\t0x45, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28,\n\t0xE5, 0x9C, 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD,\n\t0xA6, 0x29, 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29,\n\t0x45, 0x28, 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28,\n\t0xE6, 0x9C, 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C,\n\t0xA8, 0x29, 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29,\n\t0x45, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28,\n\t// Bytes 2140 - 217f\n\t0xE7, 0x81, 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89,\n\t0xB9, 0x29, 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29,\n\t0x45, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28,\n\t0xE7, 0xA5, 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5,\n\t0xAD, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29,\n\t0x45, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28,\n\t0xE8, 0xB2, 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3,\n\t0x87, 0x29, 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29,\n\t// Bytes 2180 - 21bf\n\t0x45, 0x30, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6,\n\t0x9C, 0x88, 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x31, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7,\n\t0x82, 0xB9, 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5,\n\t0x45, 0x31, 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6,\n\t// Bytes 21c0 - 21ff\n\t0x97, 0xA5, 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t0x36, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31,\n\t// Bytes 2200 - 223f\n\t0x38, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x34, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35,\n\t0x45, 0x31, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31,\n\t0xE2, 0x81, 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81,\n\t0x84, 0x38, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39,\n\t// Bytes 2240 - 227f\n\t0x45, 0x32, 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x30, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x32, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9,\n\t0x45, 0x32, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x34, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6,\n\t// Bytes 2280 - 22bf\n\t0x97, 0xA5, 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5,\n\t0x45, 0x32, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32,\n\t0x38, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6,\n\t0x97, 0xA5, 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33,\n\t0x45, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t0x30, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6,\n\t0x97, 0xA5, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34,\n\t0x45, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33,\n\t// Bytes 22c0 - 22ff\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81,\n\t0x84, 0x35, 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36,\n\t0x45, 0x35, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37,\n\t0xE2, 0x81, 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88,\n\t0x95, 0x6D, 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D,\n\t0x45, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31,\n\t0xE2, 0x81, 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2,\n\t0x88, 0x95, 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88,\n\t// Bytes 2300 - 233f\n\t0x95, 0x73, 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85,\n\t0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46,\n\t0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE,\n\t// Bytes 2340 - 237f\n\t0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC,\n\t0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46,\n\t0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8,\n\t0xAA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8,\n\t// Bytes 2380 - 23bf\n\t0xAD, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89,\n\t0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8,\n\t0xAD, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC,\n\t0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8,\n\t0xAC, 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89,\n\t// Bytes 23c0 - 23ff\n\t0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,\n\t0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8,\n\t0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3,\n\t0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8,\n\t0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9,\n\t0x8A, 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE,\n\t0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t// Bytes 2400 - 243f\n\t0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8,\n\t0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5,\n\t0xD9, 0x84, 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9,\n\t0x84, 0xDB, 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46,\n\t0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8,\n\t// Bytes 2440 - 247f\n\t0xB7, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8,\n\t0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85,\n\t0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A,\n\t0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46,\n\t0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8,\n\t0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81,\n\t// Bytes 2480 - 24bf\n\t0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9,\n\t0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84,\n\t0xDB, 0x92, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8,\n\t0xAD, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85,\n\t0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x83, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84,\n\t0xD8, 0xAC, 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8,\n\t// Bytes 24c0 - 24ff\n\t0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9,\n\t0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89,\n\t0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,\n\t0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9,\n\t0x84, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84,\n\t0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC,\n\t// Bytes 2500 - 253f\n\t0xD8, 0xAE, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9,\n\t0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A,\n\t0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9,\n\t0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85,\n\t0xD8, 0xAE, 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8,\n\t0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9,\n\t// Bytes 2540 - 257f\n\t0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD,\n\t0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46,\n\t0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9,\n\t0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86,\n\t0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8,\n\t0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9,\n\t0x89, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A,\n\t// Bytes 2580 - 25bf\n\t0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46,\n\t0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,\n\t0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A,\n\t0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85,\n\t0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8,\n\t0xA7, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46,\n\t// Bytes 25c0 - 25ff\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9,\n\t0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xD9, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,\n\t0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88,\n\t0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46,\n\t0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9,\n\t// Bytes 2600 - 263f\n\t0x8A, 0xD9, 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A,\n\t0xD9, 0x94, 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9,\n\t0x94, 0xDB, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94,\n\t0xDB, 0x90, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB,\n\t0x95, 0x46, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2,\n\t0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46,\n\t0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0,\n\t0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD,\n\t// Bytes 2640 - 267f\n\t0x80, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82,\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7,\n\t0x46, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46,\n\t0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0,\n\t0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,\n\t0x9C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1,\n\t// Bytes 2680 - 26bf\n\t0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0,\n\t0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE,\n\t0xB7, 0x46, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x46, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46,\n\t0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2,\n\t0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81,\n\t0xBB, 0xE3, 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88,\n\t0xE3, 0x82, 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3,\n\t// Bytes 26c0 - 26ff\n\t0x83, 0xAD, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82,\n\t0xB3, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88,\n\t0x46, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46,\n\t0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3,\n\t0x83, 0x9B, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83,\n\t0x9F, 0xE3, 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA,\n\t0xE3, 0x83, 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3,\n\t0x83, 0xA0, 0x46, 0xE5, 0xA4, 0xA7, 0xE6, 0xAD,\n\t// Bytes 2700 - 273f\n\t0xA3, 0x46, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90,\n\t0x46, 0xE6, 0x98, 0x8E, 0xE6, 0xB2, 0xBB, 0x46,\n\t0xE6, 0x98, 0xAD, 0xE5, 0x92, 0x8C, 0x47, 0x72,\n\t0x61, 0x64, 0xE2, 0x88, 0x95, 0x73, 0x47, 0xE3,\n\t0x80, 0x94, 0x53, 0xE3, 0x80, 0x95, 0x48, 0x28,\n\t0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x29,\n\t0x48, 0x28, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1,\n\t// Bytes 2740 - 277f\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x85, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x86, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x87,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x89, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,\n\t0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,\n\t0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x48,\n\t0x28, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0x29,\n\t// Bytes 2780 - 27bf\n\t0x48, 0x28, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1,\n\t0x29, 0x48, 0x28, 0xE1, 0x84, 0x8F, 0xE1, 0x85,\n\t0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x90, 0xE1,\n\t0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x91,\n\t0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,\n\t0x92, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x72, 0x61,\n\t0x64, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x48, 0xD8,\n\t0xA7, 0xD9, 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0x48,\n\t// Bytes 27c0 - 27ff\n\t0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87,\n\t0x48, 0xD8, 0xB1, 0xD8, 0xB3, 0xD9, 0x88, 0xD9,\n\t0x84, 0x48, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7,\n\t0xD9, 0x84, 0x48, 0xD8, 0xB5, 0xD9, 0x84, 0xD8,\n\t0xB9, 0xD9, 0x85, 0x48, 0xD8, 0xB9, 0xD9, 0x84,\n\t0xD9, 0x8A, 0xD9, 0x87, 0x48, 0xD9, 0x85, 0xD8,\n\t0xAD, 0xD9, 0x85, 0xD8, 0xAF, 0x48, 0xD9, 0x88,\n\t0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x49, 0xE2,\n\t// Bytes 2800 - 283f\n\t0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0x49, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2,\n\t0x80, 0xB5, 0x49, 0xE2, 0x88, 0xAB, 0xE2, 0x88,\n\t0xAB, 0xE2, 0x88, 0xAB, 0x49, 0xE2, 0x88, 0xAE,\n\t0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x49, 0xE3,\n\t0x80, 0x94, 0xE4, 0xB8, 0x89, 0xE3, 0x80, 0x95,\n\t0x49, 0xE3, 0x80, 0x94, 0xE4, 0xBA, 0x8C, 0xE3,\n\t0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0x8B,\n\t// Bytes 2840 - 287f\n\t0x9D, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94,\n\t0xE5, 0xAE, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3,\n\t0x80, 0x94, 0xE6, 0x89, 0x93, 0xE3, 0x80, 0x95,\n\t0x49, 0xE3, 0x80, 0x94, 0xE6, 0x95, 0x97, 0xE3,\n\t0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x9C,\n\t0xAC, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94,\n\t0xE7, 0x82, 0xB9, 0xE3, 0x80, 0x95, 0x49, 0xE3,\n\t0x80, 0x94, 0xE7, 0x9B, 0x97, 0xE3, 0x80, 0x95,\n\t// Bytes 2880 - 28bf\n\t0x49, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xAB, 0x49, 0xE3, 0x82, 0xA4, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x81, 0x49, 0xE3, 0x82, 0xA6,\n\t0xE3, 0x82, 0xA9, 0xE3, 0x83, 0xB3, 0x49, 0xE3,\n\t0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9,\n\t0x49, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xA0, 0x49, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xAA, 0x49, 0xE3, 0x82, 0xB1,\n\t// Bytes 28c0 - 28ff\n\t0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0x49, 0xE3,\n\t0x82, 0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A,\n\t0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x83, 0x81, 0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0x49, 0xE3, 0x83, 0x86,\n\t0xE3, 0x82, 0x99, 0xE3, 0x82, 0xB7, 0x49, 0xE3,\n\t0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB,\n\t0x49, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, 0xE3,\n\t// Bytes 2900 - 293f\n\t0x83, 0x88, 0x49, 0xE3, 0x83, 0x8F, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x92,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3,\n\t0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3,\n\t0x49, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3,\n\t0x83, 0xB3, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x82, 0xBD, 0x49, 0xE3, 0x83, 0x98,\n\t0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x84, 0x49, 0xE3,\n\t// Bytes 2940 - 297f\n\t0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB,\n\t0x49, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xB3, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9E,\n\t0xE3, 0x83, 0x83, 0xE3, 0x83, 0x8F, 0x49, 0xE3,\n\t0x83, 0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF,\n\t0x49, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0xAB, 0x49, 0xE3, 0x83, 0xA6, 0xE3, 0x82,\n\t// Bytes 2980 - 29bf\n\t0xA2, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83, 0xAF,\n\t0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE2,\n\t0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,\n\t0xE2, 0x80, 0xB2, 0x4C, 0xE2, 0x88, 0xAB, 0xE2,\n\t0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB,\n\t0x4C, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0x95, 0xE3, 0x82, 0xA1, 0x4C, 0xE3, 0x82,\n\t0xA8, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3,\n\t// Bytes 29c0 - 29ff\n\t0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x9E, 0x4C, 0xE3, 0x82, 0xAB,\n\t0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83,\n\t0x88, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD,\n\t0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3,\n\t0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B,\n\t// Bytes 2a00 - 2a3f\n\t0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3,\n\t0x83, 0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC,\n\t0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3,\n\t0x83, 0xA9, 0xE3, 0x83, 0xA0, 0x4C, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x83, 0x8D, 0x4C, 0xE3, 0x82, 0xB5, 0xE3, 0x82,\n\t0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t// Bytes 2a40 - 2a7f\n\t0xBC, 0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0x84, 0x4C, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x83, 0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x98, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF,\n\t0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3,\n\t// Bytes 2a80 - 2abf\n\t0x83, 0x8B, 0xE3, 0x83, 0x92, 0x4C, 0xE3, 0x83,\n\t0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3,\n\t0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x9B, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0x4C,\n\t0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x83, 0xAD, 0x4C, 0xE3, 0x83, 0x9F,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83,\n\t0xB3, 0x4C, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC,\n\t// Bytes 2ac0 - 2aff\n\t0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,\n\t0x83, 0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88,\n\t0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAB, 0xE3,\n\t0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,\n\t0x4C, 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4,\n\t0xBC, 0x9A, 0xE7, 0xA4, 0xBE, 0x4E, 0x28, 0xE1,\n\t0x84, 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92,\n\t0xE1, 0x85, 0xAE, 0x29, 0x4F, 0xD8, 0xAC, 0xD9,\n\t// Bytes 2b00 - 2b3f\n\t0x84, 0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7,\n\t0xD9, 0x84, 0xD9, 0x87, 0x4F, 0xE3, 0x82, 0xA2,\n\t0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xA2,\n\t0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82,\n\t0x9A, 0xE3, 0x82, 0xA2, 0x4F, 0xE3, 0x82, 0xAD,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83,\n\t0x83, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xB5,\n\t// Bytes 2b40 - 2b7f\n\t0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0xA0, 0x4F, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x98,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x9B,\n\t0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x83, 0x9E,\n\t// Bytes 2b80 - 2bbf\n\t0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83,\n\t0xA7, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xA1,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0x88, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xAB, 0x51, 0x28, 0xE1, 0x84,\n\t0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1,\n\t0x85, 0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x52, 0xE3,\n\t// Bytes 2bc0 - 2bff\n\t0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB,\n\t0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xBC, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t0xA9, 0xE3, 0x83, 0xA0, 0x52, 0xE3, 0x82, 0xAD,\n\t0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83,\n\t0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52,\n\t0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,\n\t// Bytes 2c00 - 2c3f\n\t0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3,\n\t0x83, 0xB3, 0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x83,\n\t0xAB, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3,\n\t0x82, 0xA4, 0xE3, 0x83, 0xAD, 0x52, 0xE3, 0x83,\n\t0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3,\n\t0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88,\n\t0x52, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3,\n\t0x82, 0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88,\n\t// Bytes 2c40 - 2c7f\n\t0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x95, 0xE3,\n\t0x82, 0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7,\n\t0xE3, 0x82, 0xA7, 0xE3, 0x83, 0xAB, 0x52, 0xE3,\n\t0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F,\n\t0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t0xAB, 0x52, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3,\n\t0xE3, 0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82,\n\t0x99, 0xE3, 0x83, 0xB3, 0x61, 0xD8, 0xB5, 0xD9,\n\t// Bytes 2c80 - 2cbf\n\t0x84, 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84,\n\t0xD9, 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9,\n\t0x84, 0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88,\n\t0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x06, 0xE0,\n\t0xA7, 0x87, 0xE0, 0xA6, 0xBE, 0x01, 0x06, 0xE0,\n\t0xA7, 0x87, 0xE0, 0xA7, 0x97, 0x01, 0x06, 0xE0,\n\t0xAD, 0x87, 0xE0, 0xAC, 0xBE, 0x01, 0x06, 0xE0,\n\t0xAD, 0x87, 0xE0, 0xAD, 0x96, 0x01, 0x06, 0xE0,\n\t// Bytes 2cc0 - 2cff\n\t0xAD, 0x87, 0xE0, 0xAD, 0x97, 0x01, 0x06, 0xE0,\n\t0xAE, 0x92, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0,\n\t0xAF, 0x86, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0,\n\t0xAF, 0x86, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0,\n\t0xAF, 0x87, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0,\n\t0xB3, 0x86, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0,\n\t0xB3, 0x86, 0xE0, 0xB3, 0x96, 0x01, 0x06, 0xE0,\n\t// Bytes 2d00 - 2d3f\n\t0xB5, 0x86, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB5, 0x86, 0xE0, 0xB5, 0x97, 0x01, 0x06, 0xE0,\n\t0xB5, 0x87, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0,\n\t0xB7, 0x99, 0xE0, 0xB7, 0x9F, 0x01, 0x06, 0xE1,\n\t0x80, 0xA5, 0xE1, 0x80, 0xAE, 0x01, 0x06, 0xE1,\n\t0xAC, 0x85, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x87, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x89, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t// Bytes 2d40 - 2d7f\n\t0xAC, 0x8B, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x8D, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0x91, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBA, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBC, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBE, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAC, 0xBF, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1,\n\t0xAD, 0x82, 0xE1, 0xAC, 0xB5, 0x01, 0x08, 0xF0,\n\t// Bytes 2d80 - 2dbf\n\t0x91, 0x84, 0xB1, 0xF0, 0x91, 0x84, 0xA7, 0x01,\n\t0x08, 0xF0, 0x91, 0x84, 0xB2, 0xF0, 0x91, 0x84,\n\t0xA7, 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0,\n\t0x91, 0x8C, 0xBE, 0x01, 0x08, 0xF0, 0x91, 0x8D,\n\t0x87, 0xF0, 0x91, 0x8D, 0x97, 0x01, 0x08, 0xF0,\n\t0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xB0, 0x01,\n\t0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92,\n\t0xBA, 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0,\n\t// Bytes 2dc0 - 2dff\n\t0x91, 0x92, 0xBD, 0x01, 0x08, 0xF0, 0x91, 0x96,\n\t0xB8, 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0,\n\t0x91, 0x96, 0xB9, 0xF0, 0x91, 0x96, 0xAF, 0x01,\n\t0x09, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0,\n\t0xB3, 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99, 0xE0,\n\t0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0x12, 0x44, 0x44,\n\t0x5A, 0xCC, 0x8C, 0xC9, 0x44, 0x44, 0x7A, 0xCC,\n\t0x8C, 0xC9, 0x44, 0x64, 0x7A, 0xCC, 0x8C, 0xC9,\n\t// Bytes 2e00 - 2e3f\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xC9,\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xC9,\n\t0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xB5,\n\t0x46, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x01,\n\t// Bytes 2e40 - 2e7f\n\t0x46, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, 0x01,\n\t0x46, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x01,\n\t// Bytes 2e80 - 2ebf\n\t0x46, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x01,\n\t0x46, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x01,\n\t0x49, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3,\n\t0x82, 0x99, 0x0D, 0x4C, 0xE1, 0x84, 0x8C, 0xE1,\n\t0x85, 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4,\n\t0x01, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99,\n\t0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D, 0x4C,\n\t0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83,\n\t// Bytes 2ec0 - 2eff\n\t0x9B, 0xE3, 0x82, 0x9A, 0x0D, 0x4C, 0xE3, 0x83,\n\t0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3,\n\t0x82, 0x99, 0x0D, 0x4F, 0xE1, 0x84, 0x8E, 0xE1,\n\t0x85, 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80,\n\t0xE1, 0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, 0xA4,\n\t0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82,\n\t0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3, 0x82,\n\t0xB7, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3,\n\t// Bytes 2f00 - 2f3f\n\t0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3,\n\t0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,\n\t0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D, 0x4F,\n\t0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83,\n\t0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x52, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3,\n\t0x82, 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,\n\t0xE3, 0x82, 0x99, 0x0D, 0x52, 0xE3, 0x83, 0x95,\n\t// Bytes 2f40 - 2f7f\n\t0xE3, 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83,\n\t0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x86, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x01,\n\t0x86, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0x01,\n\t0x03, 0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, 0xCC,\n\t0xB8, 0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, 0x03,\n\t0x41, 0xCC, 0x80, 0xC9, 0x03, 0x41, 0xCC, 0x81,\n\t0xC9, 0x03, 0x41, 0xCC, 0x83, 0xC9, 0x03, 0x41,\n\t// Bytes 2f80 - 2fbf\n\t0xCC, 0x84, 0xC9, 0x03, 0x41, 0xCC, 0x89, 0xC9,\n\t0x03, 0x41, 0xCC, 0x8C, 0xC9, 0x03, 0x41, 0xCC,\n\t0x8F, 0xC9, 0x03, 0x41, 0xCC, 0x91, 0xC9, 0x03,\n\t0x41, 0xCC, 0xA5, 0xB5, 0x03, 0x41, 0xCC, 0xA8,\n\t0xA5, 0x03, 0x42, 0xCC, 0x87, 0xC9, 0x03, 0x42,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x42, 0xCC, 0xB1, 0xB5,\n\t0x03, 0x43, 0xCC, 0x81, 0xC9, 0x03, 0x43, 0xCC,\n\t0x82, 0xC9, 0x03, 0x43, 0xCC, 0x87, 0xC9, 0x03,\n\t// Bytes 2fc0 - 2fff\n\t0x43, 0xCC, 0x8C, 0xC9, 0x03, 0x44, 0xCC, 0x87,\n\t0xC9, 0x03, 0x44, 0xCC, 0x8C, 0xC9, 0x03, 0x44,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x44, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x44, 0xCC, 0xAD, 0xB5, 0x03, 0x44, 0xCC,\n\t0xB1, 0xB5, 0x03, 0x45, 0xCC, 0x80, 0xC9, 0x03,\n\t0x45, 0xCC, 0x81, 0xC9, 0x03, 0x45, 0xCC, 0x83,\n\t0xC9, 0x03, 0x45, 0xCC, 0x86, 0xC9, 0x03, 0x45,\n\t0xCC, 0x87, 0xC9, 0x03, 0x45, 0xCC, 0x88, 0xC9,\n\t// Bytes 3000 - 303f\n\t0x03, 0x45, 0xCC, 0x89, 0xC9, 0x03, 0x45, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x45, 0xCC, 0x8F, 0xC9, 0x03,\n\t0x45, 0xCC, 0x91, 0xC9, 0x03, 0x45, 0xCC, 0xA8,\n\t0xA5, 0x03, 0x45, 0xCC, 0xAD, 0xB5, 0x03, 0x45,\n\t0xCC, 0xB0, 0xB5, 0x03, 0x46, 0xCC, 0x87, 0xC9,\n\t0x03, 0x47, 0xCC, 0x81, 0xC9, 0x03, 0x47, 0xCC,\n\t0x82, 0xC9, 0x03, 0x47, 0xCC, 0x84, 0xC9, 0x03,\n\t0x47, 0xCC, 0x86, 0xC9, 0x03, 0x47, 0xCC, 0x87,\n\t// Bytes 3040 - 307f\n\t0xC9, 0x03, 0x47, 0xCC, 0x8C, 0xC9, 0x03, 0x47,\n\t0xCC, 0xA7, 0xA5, 0x03, 0x48, 0xCC, 0x82, 0xC9,\n\t0x03, 0x48, 0xCC, 0x87, 0xC9, 0x03, 0x48, 0xCC,\n\t0x88, 0xC9, 0x03, 0x48, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x48, 0xCC, 0xA3, 0xB5, 0x03, 0x48, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x48, 0xCC, 0xAE, 0xB5, 0x03, 0x49,\n\t0xCC, 0x80, 0xC9, 0x03, 0x49, 0xCC, 0x81, 0xC9,\n\t0x03, 0x49, 0xCC, 0x82, 0xC9, 0x03, 0x49, 0xCC,\n\t// Bytes 3080 - 30bf\n\t0x83, 0xC9, 0x03, 0x49, 0xCC, 0x84, 0xC9, 0x03,\n\t0x49, 0xCC, 0x86, 0xC9, 0x03, 0x49, 0xCC, 0x87,\n\t0xC9, 0x03, 0x49, 0xCC, 0x89, 0xC9, 0x03, 0x49,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x49, 0xCC, 0x8F, 0xC9,\n\t0x03, 0x49, 0xCC, 0x91, 0xC9, 0x03, 0x49, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x49, 0xCC, 0xA8, 0xA5, 0x03,\n\t0x49, 0xCC, 0xB0, 0xB5, 0x03, 0x4A, 0xCC, 0x82,\n\t0xC9, 0x03, 0x4B, 0xCC, 0x81, 0xC9, 0x03, 0x4B,\n\t// Bytes 30c0 - 30ff\n\t0xCC, 0x8C, 0xC9, 0x03, 0x4B, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x4B, 0xCC, 0xA7, 0xA5, 0x03, 0x4B, 0xCC,\n\t0xB1, 0xB5, 0x03, 0x4C, 0xCC, 0x81, 0xC9, 0x03,\n\t0x4C, 0xCC, 0x8C, 0xC9, 0x03, 0x4C, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x4C, 0xCC, 0xAD, 0xB5, 0x03, 0x4C,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x4D, 0xCC, 0x81, 0xC9,\n\t0x03, 0x4D, 0xCC, 0x87, 0xC9, 0x03, 0x4D, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x4E, 0xCC, 0x80, 0xC9, 0x03,\n\t// Bytes 3100 - 313f\n\t0x4E, 0xCC, 0x81, 0xC9, 0x03, 0x4E, 0xCC, 0x83,\n\t0xC9, 0x03, 0x4E, 0xCC, 0x87, 0xC9, 0x03, 0x4E,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x4E, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x4E, 0xCC, 0xA7, 0xA5, 0x03, 0x4E, 0xCC,\n\t0xAD, 0xB5, 0x03, 0x4E, 0xCC, 0xB1, 0xB5, 0x03,\n\t0x4F, 0xCC, 0x80, 0xC9, 0x03, 0x4F, 0xCC, 0x81,\n\t0xC9, 0x03, 0x4F, 0xCC, 0x86, 0xC9, 0x03, 0x4F,\n\t0xCC, 0x89, 0xC9, 0x03, 0x4F, 0xCC, 0x8B, 0xC9,\n\t// Bytes 3140 - 317f\n\t0x03, 0x4F, 0xCC, 0x8C, 0xC9, 0x03, 0x4F, 0xCC,\n\t0x8F, 0xC9, 0x03, 0x4F, 0xCC, 0x91, 0xC9, 0x03,\n\t0x50, 0xCC, 0x81, 0xC9, 0x03, 0x50, 0xCC, 0x87,\n\t0xC9, 0x03, 0x52, 0xCC, 0x81, 0xC9, 0x03, 0x52,\n\t0xCC, 0x87, 0xC9, 0x03, 0x52, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x52, 0xCC, 0x8F, 0xC9, 0x03, 0x52, 0xCC,\n\t0x91, 0xC9, 0x03, 0x52, 0xCC, 0xA7, 0xA5, 0x03,\n\t0x52, 0xCC, 0xB1, 0xB5, 0x03, 0x53, 0xCC, 0x82,\n\t// Bytes 3180 - 31bf\n\t0xC9, 0x03, 0x53, 0xCC, 0x87, 0xC9, 0x03, 0x53,\n\t0xCC, 0xA6, 0xB5, 0x03, 0x53, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x54, 0xCC, 0x87, 0xC9, 0x03, 0x54, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x54, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x54, 0xCC, 0xA6, 0xB5, 0x03, 0x54, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x54, 0xCC, 0xAD, 0xB5, 0x03, 0x54,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x55, 0xCC, 0x80, 0xC9,\n\t0x03, 0x55, 0xCC, 0x81, 0xC9, 0x03, 0x55, 0xCC,\n\t// Bytes 31c0 - 31ff\n\t0x82, 0xC9, 0x03, 0x55, 0xCC, 0x86, 0xC9, 0x03,\n\t0x55, 0xCC, 0x89, 0xC9, 0x03, 0x55, 0xCC, 0x8A,\n\t0xC9, 0x03, 0x55, 0xCC, 0x8B, 0xC9, 0x03, 0x55,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x55, 0xCC, 0x8F, 0xC9,\n\t0x03, 0x55, 0xCC, 0x91, 0xC9, 0x03, 0x55, 0xCC,\n\t0xA3, 0xB5, 0x03, 0x55, 0xCC, 0xA4, 0xB5, 0x03,\n\t0x55, 0xCC, 0xA8, 0xA5, 0x03, 0x55, 0xCC, 0xAD,\n\t0xB5, 0x03, 0x55, 0xCC, 0xB0, 0xB5, 0x03, 0x56,\n\t// Bytes 3200 - 323f\n\t0xCC, 0x83, 0xC9, 0x03, 0x56, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x57, 0xCC, 0x80, 0xC9, 0x03, 0x57, 0xCC,\n\t0x81, 0xC9, 0x03, 0x57, 0xCC, 0x82, 0xC9, 0x03,\n\t0x57, 0xCC, 0x87, 0xC9, 0x03, 0x57, 0xCC, 0x88,\n\t0xC9, 0x03, 0x57, 0xCC, 0xA3, 0xB5, 0x03, 0x58,\n\t0xCC, 0x87, 0xC9, 0x03, 0x58, 0xCC, 0x88, 0xC9,\n\t0x03, 0x59, 0xCC, 0x80, 0xC9, 0x03, 0x59, 0xCC,\n\t0x81, 0xC9, 0x03, 0x59, 0xCC, 0x82, 0xC9, 0x03,\n\t// Bytes 3240 - 327f\n\t0x59, 0xCC, 0x83, 0xC9, 0x03, 0x59, 0xCC, 0x84,\n\t0xC9, 0x03, 0x59, 0xCC, 0x87, 0xC9, 0x03, 0x59,\n\t0xCC, 0x88, 0xC9, 0x03, 0x59, 0xCC, 0x89, 0xC9,\n\t0x03, 0x59, 0xCC, 0xA3, 0xB5, 0x03, 0x5A, 0xCC,\n\t0x81, 0xC9, 0x03, 0x5A, 0xCC, 0x82, 0xC9, 0x03,\n\t0x5A, 0xCC, 0x87, 0xC9, 0x03, 0x5A, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x5A, 0xCC, 0xA3, 0xB5, 0x03, 0x5A,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x61, 0xCC, 0x80, 0xC9,\n\t// Bytes 3280 - 32bf\n\t0x03, 0x61, 0xCC, 0x81, 0xC9, 0x03, 0x61, 0xCC,\n\t0x83, 0xC9, 0x03, 0x61, 0xCC, 0x84, 0xC9, 0x03,\n\t0x61, 0xCC, 0x89, 0xC9, 0x03, 0x61, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x61, 0xCC, 0x8F, 0xC9, 0x03, 0x61,\n\t0xCC, 0x91, 0xC9, 0x03, 0x61, 0xCC, 0xA5, 0xB5,\n\t0x03, 0x61, 0xCC, 0xA8, 0xA5, 0x03, 0x62, 0xCC,\n\t0x87, 0xC9, 0x03, 0x62, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x62, 0xCC, 0xB1, 0xB5, 0x03, 0x63, 0xCC, 0x81,\n\t// Bytes 32c0 - 32ff\n\t0xC9, 0x03, 0x63, 0xCC, 0x82, 0xC9, 0x03, 0x63,\n\t0xCC, 0x87, 0xC9, 0x03, 0x63, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x64, 0xCC, 0x87, 0xC9, 0x03, 0x64, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x64, 0xCC, 0xA3, 0xB5, 0x03,\n\t0x64, 0xCC, 0xA7, 0xA5, 0x03, 0x64, 0xCC, 0xAD,\n\t0xB5, 0x03, 0x64, 0xCC, 0xB1, 0xB5, 0x03, 0x65,\n\t0xCC, 0x80, 0xC9, 0x03, 0x65, 0xCC, 0x81, 0xC9,\n\t0x03, 0x65, 0xCC, 0x83, 0xC9, 0x03, 0x65, 0xCC,\n\t// Bytes 3300 - 333f\n\t0x86, 0xC9, 0x03, 0x65, 0xCC, 0x87, 0xC9, 0x03,\n\t0x65, 0xCC, 0x88, 0xC9, 0x03, 0x65, 0xCC, 0x89,\n\t0xC9, 0x03, 0x65, 0xCC, 0x8C, 0xC9, 0x03, 0x65,\n\t0xCC, 0x8F, 0xC9, 0x03, 0x65, 0xCC, 0x91, 0xC9,\n\t0x03, 0x65, 0xCC, 0xA8, 0xA5, 0x03, 0x65, 0xCC,\n\t0xAD, 0xB5, 0x03, 0x65, 0xCC, 0xB0, 0xB5, 0x03,\n\t0x66, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC, 0x81,\n\t0xC9, 0x03, 0x67, 0xCC, 0x82, 0xC9, 0x03, 0x67,\n\t// Bytes 3340 - 337f\n\t0xCC, 0x84, 0xC9, 0x03, 0x67, 0xCC, 0x86, 0xC9,\n\t0x03, 0x67, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x67, 0xCC, 0xA7, 0xA5, 0x03,\n\t0x68, 0xCC, 0x82, 0xC9, 0x03, 0x68, 0xCC, 0x87,\n\t0xC9, 0x03, 0x68, 0xCC, 0x88, 0xC9, 0x03, 0x68,\n\t0xCC, 0x8C, 0xC9, 0x03, 0x68, 0xCC, 0xA3, 0xB5,\n\t0x03, 0x68, 0xCC, 0xA7, 0xA5, 0x03, 0x68, 0xCC,\n\t0xAE, 0xB5, 0x03, 0x68, 0xCC, 0xB1, 0xB5, 0x03,\n\t// Bytes 3380 - 33bf\n\t0x69, 0xCC, 0x80, 0xC9, 0x03, 0x69, 0xCC, 0x81,\n\t0xC9, 0x03, 0x69, 0xCC, 0x82, 0xC9, 0x03, 0x69,\n\t0xCC, 0x83, 0xC9, 0x03, 0x69, 0xCC, 0x84, 0xC9,\n\t0x03, 0x69, 0xCC, 0x86, 0xC9, 0x03, 0x69, 0xCC,\n\t0x89, 0xC9, 0x03, 0x69, 0xCC, 0x8C, 0xC9, 0x03,\n\t0x69, 0xCC, 0x8F, 0xC9, 0x03, 0x69, 0xCC, 0x91,\n\t0xC9, 0x03, 0x69, 0xCC, 0xA3, 0xB5, 0x03, 0x69,\n\t0xCC, 0xA8, 0xA5, 0x03, 0x69, 0xCC, 0xB0, 0xB5,\n\t// Bytes 33c0 - 33ff\n\t0x03, 0x6A, 0xCC, 0x82, 0xC9, 0x03, 0x6A, 0xCC,\n\t0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0x81, 0xC9, 0x03,\n\t0x6B, 0xCC, 0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x6B, 0xCC, 0xA7, 0xA5, 0x03, 0x6B,\n\t0xCC, 0xB1, 0xB5, 0x03, 0x6C, 0xCC, 0x81, 0xC9,\n\t0x03, 0x6C, 0xCC, 0x8C, 0xC9, 0x03, 0x6C, 0xCC,\n\t0xA7, 0xA5, 0x03, 0x6C, 0xCC, 0xAD, 0xB5, 0x03,\n\t0x6C, 0xCC, 0xB1, 0xB5, 0x03, 0x6D, 0xCC, 0x81,\n\t// Bytes 3400 - 343f\n\t0xC9, 0x03, 0x6D, 0xCC, 0x87, 0xC9, 0x03, 0x6D,\n\t0xCC, 0xA3, 0xB5, 0x03, 0x6E, 0xCC, 0x80, 0xC9,\n\t0x03, 0x6E, 0xCC, 0x81, 0xC9, 0x03, 0x6E, 0xCC,\n\t0x83, 0xC9, 0x03, 0x6E, 0xCC, 0x87, 0xC9, 0x03,\n\t0x6E, 0xCC, 0x8C, 0xC9, 0x03, 0x6E, 0xCC, 0xA3,\n\t0xB5, 0x03, 0x6E, 0xCC, 0xA7, 0xA5, 0x03, 0x6E,\n\t0xCC, 0xAD, 0xB5, 0x03, 0x6E, 0xCC, 0xB1, 0xB5,\n\t0x03, 0x6F, 0xCC, 0x80, 0xC9, 0x03, 0x6F, 0xCC,\n\t// Bytes 3440 - 347f\n\t0x81, 0xC9, 0x03, 0x6F, 0xCC, 0x86, 0xC9, 0x03,\n\t0x6F, 0xCC, 0x89, 0xC9, 0x03, 0x6F, 0xCC, 0x8B,\n\t0xC9, 0x03, 0x6F, 0xCC, 0x8C, 0xC9, 0x03, 0x6F,\n\t0xCC, 0x8F, 0xC9, 0x03, 0x6F, 0xCC, 0x91, 0xC9,\n\t0x03, 0x70, 0xCC, 0x81, 0xC9, 0x03, 0x70, 0xCC,\n\t0x87, 0xC9, 0x03, 0x72, 0xCC, 0x81, 0xC9, 0x03,\n\t0x72, 0xCC, 0x87, 0xC9, 0x03, 0x72, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x72, 0xCC, 0x8F, 0xC9, 0x03, 0x72,\n\t// Bytes 3480 - 34bf\n\t0xCC, 0x91, 0xC9, 0x03, 0x72, 0xCC, 0xA7, 0xA5,\n\t0x03, 0x72, 0xCC, 0xB1, 0xB5, 0x03, 0x73, 0xCC,\n\t0x82, 0xC9, 0x03, 0x73, 0xCC, 0x87, 0xC9, 0x03,\n\t0x73, 0xCC, 0xA6, 0xB5, 0x03, 0x73, 0xCC, 0xA7,\n\t0xA5, 0x03, 0x74, 0xCC, 0x87, 0xC9, 0x03, 0x74,\n\t0xCC, 0x88, 0xC9, 0x03, 0x74, 0xCC, 0x8C, 0xC9,\n\t0x03, 0x74, 0xCC, 0xA3, 0xB5, 0x03, 0x74, 0xCC,\n\t0xA6, 0xB5, 0x03, 0x74, 0xCC, 0xA7, 0xA5, 0x03,\n\t// Bytes 34c0 - 34ff\n\t0x74, 0xCC, 0xAD, 0xB5, 0x03, 0x74, 0xCC, 0xB1,\n\t0xB5, 0x03, 0x75, 0xCC, 0x80, 0xC9, 0x03, 0x75,\n\t0xCC, 0x81, 0xC9, 0x03, 0x75, 0xCC, 0x82, 0xC9,\n\t0x03, 0x75, 0xCC, 0x86, 0xC9, 0x03, 0x75, 0xCC,\n\t0x89, 0xC9, 0x03, 0x75, 0xCC, 0x8A, 0xC9, 0x03,\n\t0x75, 0xCC, 0x8B, 0xC9, 0x03, 0x75, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x75, 0xCC, 0x8F, 0xC9, 0x03, 0x75,\n\t0xCC, 0x91, 0xC9, 0x03, 0x75, 0xCC, 0xA3, 0xB5,\n\t// Bytes 3500 - 353f\n\t0x03, 0x75, 0xCC, 0xA4, 0xB5, 0x03, 0x75, 0xCC,\n\t0xA8, 0xA5, 0x03, 0x75, 0xCC, 0xAD, 0xB5, 0x03,\n\t0x75, 0xCC, 0xB0, 0xB5, 0x03, 0x76, 0xCC, 0x83,\n\t0xC9, 0x03, 0x76, 0xCC, 0xA3, 0xB5, 0x03, 0x77,\n\t0xCC, 0x80, 0xC9, 0x03, 0x77, 0xCC, 0x81, 0xC9,\n\t0x03, 0x77, 0xCC, 0x82, 0xC9, 0x03, 0x77, 0xCC,\n\t0x87, 0xC9, 0x03, 0x77, 0xCC, 0x88, 0xC9, 0x03,\n\t0x77, 0xCC, 0x8A, 0xC9, 0x03, 0x77, 0xCC, 0xA3,\n\t// Bytes 3540 - 357f\n\t0xB5, 0x03, 0x78, 0xCC, 0x87, 0xC9, 0x03, 0x78,\n\t0xCC, 0x88, 0xC9, 0x03, 0x79, 0xCC, 0x80, 0xC9,\n\t0x03, 0x79, 0xCC, 0x81, 0xC9, 0x03, 0x79, 0xCC,\n\t0x82, 0xC9, 0x03, 0x79, 0xCC, 0x83, 0xC9, 0x03,\n\t0x79, 0xCC, 0x84, 0xC9, 0x03, 0x79, 0xCC, 0x87,\n\t0xC9, 0x03, 0x79, 0xCC, 0x88, 0xC9, 0x03, 0x79,\n\t0xCC, 0x89, 0xC9, 0x03, 0x79, 0xCC, 0x8A, 0xC9,\n\t0x03, 0x79, 0xCC, 0xA3, 0xB5, 0x03, 0x7A, 0xCC,\n\t// Bytes 3580 - 35bf\n\t0x81, 0xC9, 0x03, 0x7A, 0xCC, 0x82, 0xC9, 0x03,\n\t0x7A, 0xCC, 0x87, 0xC9, 0x03, 0x7A, 0xCC, 0x8C,\n\t0xC9, 0x03, 0x7A, 0xCC, 0xA3, 0xB5, 0x03, 0x7A,\n\t0xCC, 0xB1, 0xB5, 0x04, 0xC2, 0xA8, 0xCC, 0x80,\n\t0xCA, 0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x04,\n\t0xC2, 0xA8, 0xCD, 0x82, 0xCA, 0x04, 0xC3, 0x86,\n\t0xCC, 0x81, 0xC9, 0x04, 0xC3, 0x86, 0xCC, 0x84,\n\t0xC9, 0x04, 0xC3, 0x98, 0xCC, 0x81, 0xC9, 0x04,\n\t// Bytes 35c0 - 35ff\n\t0xC3, 0xA6, 0xCC, 0x81, 0xC9, 0x04, 0xC3, 0xA6,\n\t0xCC, 0x84, 0xC9, 0x04, 0xC3, 0xB8, 0xCC, 0x81,\n\t0xC9, 0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xC9, 0x04,\n\t0xC6, 0xB7, 0xCC, 0x8C, 0xC9, 0x04, 0xCA, 0x92,\n\t0xCC, 0x8C, 0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x80,\n\t0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x81, 0xC9, 0x04,\n\t0xCE, 0x91, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0x91,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0x91, 0xCD, 0x85,\n\t// Bytes 3600 - 363f\n\t0xD9, 0x04, 0xCE, 0x95, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0x95, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x97,\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x97, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0x97, 0xCD, 0x85, 0xD9, 0x04,\n\t0xCE, 0x99, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x99,\n\t0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x84,\n\t0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x86, 0xC9, 0x04,\n\t0xCE, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0x9F,\n\t// Bytes 3640 - 367f\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x9F, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xC9, 0x04,\n\t0xCE, 0xA5, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA5,\n\t0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x84,\n\t0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xC9, 0x04,\n\t0xCE, 0xA5, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0xA9,\n\t0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA9, 0xCC, 0x81,\n\t0xC9, 0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xD9, 0x04,\n\t// Bytes 3680 - 36bf\n\t0xCE, 0xB1, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB1,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB1, 0xCD, 0x85,\n\t0xD9, 0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0xB5, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xB7,\n\t0xCD, 0x85, 0xD9, 0x04, 0xCE, 0xB9, 0xCC, 0x80,\n\t0xC9, 0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x04,\n\t0xCE, 0xB9, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB9,\n\t0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB9, 0xCD, 0x82,\n\t// Bytes 36c0 - 36ff\n\t0xC9, 0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCE, 0xBF, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x81,\n\t0xCC, 0x93, 0xC9, 0x04, 0xCF, 0x81, 0xCC, 0x94,\n\t0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x80, 0xC9, 0x04,\n\t0xCF, 0x85, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x85,\n\t0xCC, 0x84, 0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x86,\n\t0xC9, 0x04, 0xCF, 0x85, 0xCD, 0x82, 0xC9, 0x04,\n\t0xCF, 0x89, 0xCD, 0x85, 0xD9, 0x04, 0xCF, 0x92,\n\t// Bytes 3700 - 373f\n\t0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x92, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0x86, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0x90, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x90,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x93, 0xCC, 0x81,\n\t0xC9, 0x04, 0xD0, 0x95, 0xCC, 0x80, 0xC9, 0x04,\n\t0xD0, 0x95, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x95,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x88, 0xC9, 0x04,\n\t// Bytes 3740 - 377f\n\t0xD0, 0x97, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x98,\n\t0xCC, 0x80, 0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x84,\n\t0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x86, 0xC9, 0x04,\n\t0xD0, 0x98, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x9A,\n\t0xCC, 0x81, 0xC9, 0x04, 0xD0, 0x9E, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xC9, 0x04,\n\t0xD0, 0xA3, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xA3,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x8B,\n\t// Bytes 3780 - 37bf\n\t0xC9, 0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xAB, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xAD,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xB3, 0xCC, 0x81, 0xC9, 0x04, 0xD0, 0xB5,\n\t0xCC, 0x80, 0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD0, 0xB6, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB6,\n\t// Bytes 37c0 - 37ff\n\t0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB7, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xC9, 0x04,\n\t0xD0, 0xB8, 0xCC, 0x84, 0xC9, 0x04, 0xD0, 0xB8,\n\t0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xC9, 0x04,\n\t0xD0, 0xBE, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x83,\n\t0xCC, 0x84, 0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x86,\n\t0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x88, 0xC9, 0x04,\n\t// Bytes 3800 - 383f\n\t0xD1, 0x83, 0xCC, 0x8B, 0xC9, 0x04, 0xD1, 0x87,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x8B, 0xCC, 0x88,\n\t0xC9, 0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD1, 0x96, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0xB4,\n\t0xCC, 0x8F, 0xC9, 0x04, 0xD1, 0xB5, 0xCC, 0x8F,\n\t0xC9, 0x04, 0xD3, 0x98, 0xCC, 0x88, 0xC9, 0x04,\n\t0xD3, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA8,\n\t0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA9, 0xCC, 0x88,\n\t// Bytes 3840 - 387f\n\t0xC9, 0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xC9, 0x04,\n\t0xD8, 0xA7, 0xD9, 0x94, 0xC9, 0x04, 0xD8, 0xA7,\n\t0xD9, 0x95, 0xB5, 0x04, 0xD9, 0x88, 0xD9, 0x94,\n\t0xC9, 0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xC9, 0x04,\n\t0xDB, 0x81, 0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x92,\n\t0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x95, 0xD9, 0x94,\n\t0xC9, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xCA,\n\t0x05, 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05,\n\t// Bytes 3880 - 38bf\n\t0x41, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x41,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x41, 0xCC,\n\t0x86, 0xCC, 0x80, 0xCA, 0x05, 0x41, 0xCC, 0x86,\n\t0xCC, 0x81, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC,\n\t0x83, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x89,\n\t0xCA, 0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xCA,\n\t0x05, 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05,\n\t0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x41,\n\t// Bytes 38c0 - 38ff\n\t0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x41, 0xCC,\n\t0xA3, 0xCC, 0x86, 0xCA, 0x05, 0x43, 0xCC, 0xA7,\n\t0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC,\n\t0x80, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x81,\n\t0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xCA,\n\t0x05, 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05,\n\t0x45, 0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x45,\n\t0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC,\n\t// Bytes 3900 - 393f\n\t0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x45, 0xCC, 0xA7,\n\t0xCC, 0x86, 0xCA, 0x05, 0x49, 0xCC, 0x88, 0xCC,\n\t0x81, 0xCA, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, 0x84,\n\t0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xCA,\n\t0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05,\n\t0x4F, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x4F,\n\t0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x4F, 0xCC,\n\t0x83, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x83,\n\t// Bytes 3940 - 397f\n\t0xCC, 0x84, 0xCA, 0x05, 0x4F, 0xCC, 0x83, 0xCC,\n\t0x88, 0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x80,\n\t0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xCA,\n\t0x05, 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05,\n\t0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x4F,\n\t0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x4F, 0xCC,\n\t0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x9B,\n\t0xCC, 0x83, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC,\n\t// Bytes 3980 - 39bf\n\t0x89, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3,\n\t0xB6, 0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA,\n\t0x05, 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05,\n\t0x52, 0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x53,\n\t0xCC, 0x81, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC,\n\t0x8C, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC, 0xA3,\n\t0xCC, 0x87, 0xCA, 0x05, 0x55, 0xCC, 0x83, 0xCC,\n\t0x81, 0xCA, 0x05, 0x55, 0xCC, 0x84, 0xCC, 0x88,\n\t// Bytes 39c0 - 39ff\n\t0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x05, 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05,\n\t0x55, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x55,\n\t0xCC, 0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x55, 0xCC,\n\t0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x55, 0xCC, 0x9B,\n\t0xCC, 0x81, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC,\n\t0x83, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6,\n\t// Bytes 3a00 - 3a3f\n\t0x05, 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05,\n\t0x61, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x61,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x61, 0xCC,\n\t0x82, 0xCC, 0x89, 0xCA, 0x05, 0x61, 0xCC, 0x86,\n\t0xCC, 0x80, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC,\n\t0x81, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x83,\n\t0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xCA,\n\t0x05, 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05,\n\t// Bytes 3a40 - 3a7f\n\t0x61, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x61,\n\t0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x61, 0xCC,\n\t0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x61, 0xCC, 0xA3,\n\t0xCC, 0x86, 0xCA, 0x05, 0x63, 0xCC, 0xA7, 0xCC,\n\t0x81, 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x80,\n\t0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xCA,\n\t0x05, 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05,\n\t0x65, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x65,\n\t// Bytes 3a80 - 3abf\n\t0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x65, 0xCC,\n\t0x84, 0xCC, 0x81, 0xCA, 0x05, 0x65, 0xCC, 0xA3,\n\t0xCC, 0x82, 0xCA, 0x05, 0x65, 0xCC, 0xA7, 0xCC,\n\t0x86, 0xCA, 0x05, 0x69, 0xCC, 0x88, 0xCC, 0x81,\n\t0xCA, 0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xCA,\n\t0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05,\n\t0x6F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x6F,\n\t0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x6F, 0xCC,\n\t// Bytes 3ac0 - 3aff\n\t0x82, 0xCC, 0x89, 0xCA, 0x05, 0x6F, 0xCC, 0x83,\n\t0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC,\n\t0x84, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x88,\n\t0xCA, 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xCA,\n\t0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05,\n\t0x6F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05, 0x6F,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x6F, 0xCC,\n\t0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x6F, 0xCC, 0x9B,\n\t// Bytes 3b00 - 3b3f\n\t0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC,\n\t0x83, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x89,\n\t0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6,\n\t0x05, 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05,\n\t0x6F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05, 0x72,\n\t0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x73, 0xCC,\n\t0x81, 0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0x8C,\n\t0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0xA3, 0xCC,\n\t// Bytes 3b40 - 3b7f\n\t0x87, 0xCA, 0x05, 0x75, 0xCC, 0x83, 0xCC, 0x81,\n\t0xCA, 0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xCA,\n\t0x05, 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCA, 0x05,\n\t0x75, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05, 0x75,\n\t0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x75, 0xCC,\n\t0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x75, 0xCC, 0x9B,\n\t0xCC, 0x80, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC,\n\t0x81, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x83,\n\t// Bytes 3b80 - 3bbf\n\t0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xCA,\n\t0x05, 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6, 0x05,\n\t0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0xCA, 0x05, 0xE1,\n\t0xBE, 0xBF, 0xCC, 0x81, 0xCA, 0x05, 0xE1, 0xBE,\n\t0xBF, 0xCD, 0x82, 0xCA, 0x05, 0xE1, 0xBF, 0xBE,\n\t0xCC, 0x80, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCC,\n\t0x81, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, 0x82,\n\t0xCA, 0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0x05,\n\t// Bytes 3bc0 - 3bff\n\t0x05, 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x87, 0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87,\n\t0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x94,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, 0x05,\n\t// Bytes 3c00 - 3c3f\n\t0xE2, 0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x88, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x85,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t// Bytes 3c40 - 3c7f\n\t0x89, 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,\n\t0xB3, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB6,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t// Bytes 3c80 - 3cbf\n\t0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x86,\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0x05,\n\t0x05, 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, 0x05,\n\t0xE2, 0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, 0xE2,\n\t0x8A, 0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,\n\t0xAB, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB2,\n\t// Bytes 3cc0 - 3cff\n\t0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, 0xCC,\n\t0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8,\n\t0x05, 0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0x05,\n\t0x06, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t// Bytes 3d00 - 3d3f\n\t0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t// Bytes 3d40 - 3d7f\n\t0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t// Bytes 3d80 - 3dbf\n\t0x06, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t// Bytes 3dc0 - 3dff\n\t0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t// Bytes 3e00 - 3e3f\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t// Bytes 3e40 - 3e7f\n\t0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xCA,\n\t// Bytes 3e80 - 3ebf\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xCA,\n\t0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xCA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xDA,\n\t// Bytes 3ec0 - 3eff\n\t0x06, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xDA,\n\t0x06, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xDA,\n\t0x06, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0x09,\n\t0x06, 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0x85,\n\t0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0x11,\n\t// Bytes 3f00 - 3f3f\n\t0x06, 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 3f40 - 3f7f\n\t0x06, 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 3f80 - 3fbf\n\t0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0x0D,\n\t// Bytes 3fc0 - 3fff\n\t0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4000 - 403f\n\t0x06, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4040 - 407f\n\t0x06, 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 4080 - 40bf\n\t0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x06, 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0x0D,\n\t// Bytes 40c0 - 40ff\n\t0x06, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0x0D,\n\t0x06, 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0x0D,\n\t0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t// Bytes 4100 - 413f\n\t0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCD,\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC,\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t// Bytes 4140 - 417f\n\t0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCD,\n\t// Bytes 4180 - 41bf\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC,\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t// Bytes 41c0 - 41ff\n\t0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC,\n\t0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC,\n\t0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCD,\n\t0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC,\n\t// Bytes 4200 - 423f\n\t0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB,\n\t0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD,\n\t0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC,\n\t0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB,\n\t0x08, 0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, 0x82,\n\t// Bytes 4240 - 427f\n\t0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82, 0x9B, 0xF0,\n\t0x91, 0x82, 0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82,\n\t0xA5, 0xF0, 0x91, 0x82, 0xBA, 0x09, 0x42, 0xC2,\n\t0xB4, 0x01, 0x43, 0x20, 0xCC, 0x81, 0xC9, 0x43,\n\t0x20, 0xCC, 0x83, 0xC9, 0x43, 0x20, 0xCC, 0x84,\n\t0xC9, 0x43, 0x20, 0xCC, 0x85, 0xC9, 0x43, 0x20,\n\t0xCC, 0x86, 0xC9, 0x43, 0x20, 0xCC, 0x87, 0xC9,\n\t0x43, 0x20, 0xCC, 0x88, 0xC9, 0x43, 0x20, 0xCC,\n\t// Bytes 4280 - 42bf\n\t0x8A, 0xC9, 0x43, 0x20, 0xCC, 0x8B, 0xC9, 0x43,\n\t0x20, 0xCC, 0x93, 0xC9, 0x43, 0x20, 0xCC, 0x94,\n\t0xC9, 0x43, 0x20, 0xCC, 0xA7, 0xA5, 0x43, 0x20,\n\t0xCC, 0xA8, 0xA5, 0x43, 0x20, 0xCC, 0xB3, 0xB5,\n\t0x43, 0x20, 0xCD, 0x82, 0xC9, 0x43, 0x20, 0xCD,\n\t0x85, 0xD9, 0x43, 0x20, 0xD9, 0x8B, 0x59, 0x43,\n\t0x20, 0xD9, 0x8C, 0x5D, 0x43, 0x20, 0xD9, 0x8D,\n\t0x61, 0x43, 0x20, 0xD9, 0x8E, 0x65, 0x43, 0x20,\n\t// Bytes 42c0 - 42ff\n\t0xD9, 0x8F, 0x69, 0x43, 0x20, 0xD9, 0x90, 0x6D,\n\t0x43, 0x20, 0xD9, 0x91, 0x71, 0x43, 0x20, 0xD9,\n\t0x92, 0x75, 0x43, 0x41, 0xCC, 0x8A, 0xC9, 0x43,\n\t0x73, 0xCC, 0x87, 0xC9, 0x44, 0x20, 0xE3, 0x82,\n\t0x99, 0x0D, 0x44, 0x20, 0xE3, 0x82, 0x9A, 0x0D,\n\t0x44, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x44, 0xCE,\n\t0x91, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0x95, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0x97, 0xCC, 0x81, 0xC9,\n\t// Bytes 4300 - 433f\n\t0x44, 0xCE, 0x99, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0x9F, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC, 0x88, 0xC9,\n\t0x44, 0xCE, 0xA9, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0xB1, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xB5, 0xCC,\n\t0x81, 0xC9, 0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xC9,\n\t0x44, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x44, 0xCE,\n\t0xBF, 0xCC, 0x81, 0xC9, 0x44, 0xCF, 0x85, 0xCC,\n\t// Bytes 4340 - 437f\n\t0x81, 0xC9, 0x44, 0xCF, 0x89, 0xCC, 0x81, 0xC9,\n\t0x44, 0xD7, 0x90, 0xD6, 0xB7, 0x31, 0x44, 0xD7,\n\t0x90, 0xD6, 0xB8, 0x35, 0x44, 0xD7, 0x90, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x91, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x91, 0xD6, 0xBF, 0x49, 0x44, 0xD7,\n\t0x92, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x93, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x95, 0xD6, 0xB9, 0x39, 0x44, 0xD7,\n\t// Bytes 4380 - 43bf\n\t0x95, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x96, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x98, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x99, 0xD6, 0xB4, 0x25, 0x44, 0xD7,\n\t0x99, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9A, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0x9B, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0x9B, 0xD6, 0xBF, 0x49, 0x44, 0xD7,\n\t0x9C, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9E, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x41,\n\t// Bytes 43c0 - 43ff\n\t0x44, 0xD7, 0xA1, 0xD6, 0xBC, 0x41, 0x44, 0xD7,\n\t0xA3, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6, 0xBF, 0x49,\n\t0x44, 0xD7, 0xA6, 0xD6, 0xBC, 0x41, 0x44, 0xD7,\n\t0xA7, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA8, 0xD6,\n\t0xBC, 0x41, 0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x41,\n\t0x44, 0xD7, 0xA9, 0xD7, 0x81, 0x4D, 0x44, 0xD7,\n\t0xA9, 0xD7, 0x82, 0x51, 0x44, 0xD7, 0xAA, 0xD6,\n\t// Bytes 4400 - 443f\n\t0xBC, 0x41, 0x44, 0xD7, 0xB2, 0xD6, 0xB7, 0x31,\n\t0x44, 0xD8, 0xA7, 0xD9, 0x8B, 0x59, 0x44, 0xD8,\n\t0xA7, 0xD9, 0x93, 0xC9, 0x44, 0xD8, 0xA7, 0xD9,\n\t0x94, 0xC9, 0x44, 0xD8, 0xA7, 0xD9, 0x95, 0xB5,\n\t0x44, 0xD8, 0xB0, 0xD9, 0xB0, 0x79, 0x44, 0xD8,\n\t0xB1, 0xD9, 0xB0, 0x79, 0x44, 0xD9, 0x80, 0xD9,\n\t0x8B, 0x59, 0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x65,\n\t0x44, 0xD9, 0x80, 0xD9, 0x8F, 0x69, 0x44, 0xD9,\n\t// Bytes 4440 - 447f\n\t0x80, 0xD9, 0x90, 0x6D, 0x44, 0xD9, 0x80, 0xD9,\n\t0x91, 0x71, 0x44, 0xD9, 0x80, 0xD9, 0x92, 0x75,\n\t0x44, 0xD9, 0x87, 0xD9, 0xB0, 0x79, 0x44, 0xD9,\n\t0x88, 0xD9, 0x94, 0xC9, 0x44, 0xD9, 0x89, 0xD9,\n\t0xB0, 0x79, 0x44, 0xD9, 0x8A, 0xD9, 0x94, 0xC9,\n\t0x44, 0xDB, 0x92, 0xD9, 0x94, 0xC9, 0x44, 0xDB,\n\t0x95, 0xD9, 0x94, 0xC9, 0x45, 0x20, 0xCC, 0x88,\n\t0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCC,\n\t// Bytes 4480 - 44bf\n\t0x81, 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCD, 0x82,\n\t0xCA, 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xCA,\n\t0x45, 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x45,\n\t0x20, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x45, 0x20,\n\t0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC,\n\t0x94, 0xCC, 0x81, 0xCA, 0x45, 0x20, 0xCC, 0x94,\n\t0xCD, 0x82, 0xCA, 0x45, 0x20, 0xD9, 0x8C, 0xD9,\n\t0x91, 0x72, 0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91,\n\t// Bytes 44c0 - 44ff\n\t0x72, 0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x72,\n\t0x45, 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x72, 0x45,\n\t0x20, 0xD9, 0x90, 0xD9, 0x91, 0x72, 0x45, 0x20,\n\t0xD9, 0x91, 0xD9, 0xB0, 0x7A, 0x45, 0xE2, 0xAB,\n\t0x9D, 0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9, 0xCC,\n\t0x88, 0xCC, 0x81, 0xCA, 0x46, 0xCF, 0x85, 0xCC,\n\t0x88, 0xCC, 0x81, 0xCA, 0x46, 0xD7, 0xA9, 0xD6,\n\t0xBC, 0xD7, 0x81, 0x4E, 0x46, 0xD7, 0xA9, 0xD6,\n\t// Bytes 4500 - 453f\n\t0xBC, 0xD7, 0x82, 0x52, 0x46, 0xD9, 0x80, 0xD9,\n\t0x8E, 0xD9, 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9,\n\t0x8F, 0xD9, 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9,\n\t0x90, 0xD9, 0x91, 0x72, 0x46, 0xE0, 0xA4, 0x95,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x96,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x97,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x9C,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA1,\n\t// Bytes 4540 - 457f\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA2,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAB,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAF,\n\t0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA1,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA2,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xAF,\n\t0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x96,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x97,\n\t// Bytes 4580 - 45bf\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x9C,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xAB,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB2,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB8,\n\t0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA1,\n\t0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA2,\n\t0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0, 0xBE, 0xB2,\n\t0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE0, 0xBE, 0xB3,\n\t// Bytes 45c0 - 45ff\n\t0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE3, 0x83, 0x86,\n\t0xE3, 0x82, 0x99, 0x0D, 0x48, 0xF0, 0x9D, 0x85,\n\t0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xAD, 0x48, 0xF0,\n\t0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xAD,\n\t0x48, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xAD, 0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xAD, 0x49, 0xE0, 0xBE, 0xB2,\n\t0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x49,\n\t// Bytes 4600 - 463f\n\t0xE0, 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE,\n\t0x80, 0x9E, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE,\n\t0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0,\n\t0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,\n\t0x9D, 0x85, 0xB0, 0xAE, 0x4C, 0xF0, 0x9D, 0x85,\n\t0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,\n\t// Bytes 4640 - 467f\n\t0xB1, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0,\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xAE,\n\t0x4C, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85,\n\t0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE, 0x4C, 0xF0,\n\t0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,\n\t0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0, 0x9D, 0x86,\n\t0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,\n\t0xAE, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0,\n\t// Bytes 4680 - 46bf\n\t0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE,\n\t0x83, 0x41, 0xCC, 0x82, 0xC9, 0x83, 0x41, 0xCC,\n\t0x86, 0xC9, 0x83, 0x41, 0xCC, 0x87, 0xC9, 0x83,\n\t0x41, 0xCC, 0x88, 0xC9, 0x83, 0x41, 0xCC, 0x8A,\n\t0xC9, 0x83, 0x41, 0xCC, 0xA3, 0xB5, 0x83, 0x43,\n\t0xCC, 0xA7, 0xA5, 0x83, 0x45, 0xCC, 0x82, 0xC9,\n\t0x83, 0x45, 0xCC, 0x84, 0xC9, 0x83, 0x45, 0xCC,\n\t0xA3, 0xB5, 0x83, 0x45, 0xCC, 0xA7, 0xA5, 0x83,\n\t// Bytes 46c0 - 46ff\n\t0x49, 0xCC, 0x88, 0xC9, 0x83, 0x4C, 0xCC, 0xA3,\n\t0xB5, 0x83, 0x4F, 0xCC, 0x82, 0xC9, 0x83, 0x4F,\n\t0xCC, 0x83, 0xC9, 0x83, 0x4F, 0xCC, 0x84, 0xC9,\n\t0x83, 0x4F, 0xCC, 0x87, 0xC9, 0x83, 0x4F, 0xCC,\n\t0x88, 0xC9, 0x83, 0x4F, 0xCC, 0x9B, 0xAD, 0x83,\n\t0x4F, 0xCC, 0xA3, 0xB5, 0x83, 0x4F, 0xCC, 0xA8,\n\t0xA5, 0x83, 0x52, 0xCC, 0xA3, 0xB5, 0x83, 0x53,\n\t0xCC, 0x81, 0xC9, 0x83, 0x53, 0xCC, 0x8C, 0xC9,\n\t// Bytes 4700 - 473f\n\t0x83, 0x53, 0xCC, 0xA3, 0xB5, 0x83, 0x55, 0xCC,\n\t0x83, 0xC9, 0x83, 0x55, 0xCC, 0x84, 0xC9, 0x83,\n\t0x55, 0xCC, 0x88, 0xC9, 0x83, 0x55, 0xCC, 0x9B,\n\t0xAD, 0x83, 0x61, 0xCC, 0x82, 0xC9, 0x83, 0x61,\n\t0xCC, 0x86, 0xC9, 0x83, 0x61, 0xCC, 0x87, 0xC9,\n\t0x83, 0x61, 0xCC, 0x88, 0xC9, 0x83, 0x61, 0xCC,\n\t0x8A, 0xC9, 0x83, 0x61, 0xCC, 0xA3, 0xB5, 0x83,\n\t0x63, 0xCC, 0xA7, 0xA5, 0x83, 0x65, 0xCC, 0x82,\n\t// Bytes 4740 - 477f\n\t0xC9, 0x83, 0x65, 0xCC, 0x84, 0xC9, 0x83, 0x65,\n\t0xCC, 0xA3, 0xB5, 0x83, 0x65, 0xCC, 0xA7, 0xA5,\n\t0x83, 0x69, 0xCC, 0x88, 0xC9, 0x83, 0x6C, 0xCC,\n\t0xA3, 0xB5, 0x83, 0x6F, 0xCC, 0x82, 0xC9, 0x83,\n\t0x6F, 0xCC, 0x83, 0xC9, 0x83, 0x6F, 0xCC, 0x84,\n\t0xC9, 0x83, 0x6F, 0xCC, 0x87, 0xC9, 0x83, 0x6F,\n\t0xCC, 0x88, 0xC9, 0x83, 0x6F, 0xCC, 0x9B, 0xAD,\n\t0x83, 0x6F, 0xCC, 0xA3, 0xB5, 0x83, 0x6F, 0xCC,\n\t// Bytes 4780 - 47bf\n\t0xA8, 0xA5, 0x83, 0x72, 0xCC, 0xA3, 0xB5, 0x83,\n\t0x73, 0xCC, 0x81, 0xC9, 0x83, 0x73, 0xCC, 0x8C,\n\t0xC9, 0x83, 0x73, 0xCC, 0xA3, 0xB5, 0x83, 0x75,\n\t0xCC, 0x83, 0xC9, 0x83, 0x75, 0xCC, 0x84, 0xC9,\n\t0x83, 0x75, 0xCC, 0x88, 0xC9, 0x83, 0x75, 0xCC,\n\t0x9B, 0xAD, 0x84, 0xCE, 0x91, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x91, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0x95, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x95, 0xCC,\n\t// Bytes 47c0 - 47ff\n\t0x94, 0xC9, 0x84, 0xCE, 0x97, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x97, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0x99, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x99, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0x9F, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0x9F, 0xCC, 0x94, 0xC9, 0x84, 0xCE,\n\t0xA5, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xA9, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCE, 0xB1, 0xCC, 0x80, 0xC9, 0x84, 0xCE,\n\t// Bytes 4800 - 483f\n\t0xB1, 0xCC, 0x81, 0xC9, 0x84, 0xCE, 0xB1, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCE, 0xB1, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCE, 0xB1, 0xCD, 0x82, 0xC9, 0x84, 0xCE,\n\t0xB5, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB5, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCC, 0x80, 0xC9,\n\t0x84, 0xCE, 0xB7, 0xCC, 0x81, 0xC9, 0x84, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB7, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xC9,\n\t// Bytes 4840 - 487f\n\t0x84, 0xCE, 0xB9, 0xCC, 0x88, 0xC9, 0x84, 0xCE,\n\t0xB9, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB9, 0xCC,\n\t0x94, 0xC9, 0x84, 0xCE, 0xBF, 0xCC, 0x93, 0xC9,\n\t0x84, 0xCE, 0xBF, 0xCC, 0x94, 0xC9, 0x84, 0xCF,\n\t0x85, 0xCC, 0x88, 0xC9, 0x84, 0xCF, 0x85, 0xCC,\n\t0x93, 0xC9, 0x84, 0xCF, 0x85, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCF, 0x89, 0xCC, 0x80, 0xC9, 0x84, 0xCF,\n\t0x89, 0xCC, 0x81, 0xC9, 0x84, 0xCF, 0x89, 0xCC,\n\t// Bytes 4880 - 48bf\n\t0x93, 0xC9, 0x84, 0xCF, 0x89, 0xCC, 0x94, 0xC9,\n\t0x84, 0xCF, 0x89, 0xCD, 0x82, 0xC9, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t// Bytes 48c0 - 48ff\n\t0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t// Bytes 4900 - 493f\n\t0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t// Bytes 4940 - 497f\n\t0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE,\n\t0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCF,\n\t// Bytes 4980 - 49bf\n\t0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCF,\n\t0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x42, 0xCC,\n\t0x80, 0xC9, 0x32, 0x42, 0xCC, 0x81, 0xC9, 0x32,\n\t0x42, 0xCC, 0x93, 0xC9, 0x32, 0x43, 0xE1, 0x85,\n\t// Bytes 49c0 - 49ff\n\t0xA1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xA5, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xA9, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00, 0x43,\n\t// Bytes 4a00 - 4a3f\n\t0xE1, 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xAD, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xB1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2, 0x01,\n\t0x00, 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00, 0x43,\n\t0xE1, 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x85,\n\t0xB5, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA, 0x01,\n\t// Bytes 4a40 - 4a7f\n\t0x00, 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00, 0x43,\n\t0xE1, 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x86,\n\t0xB0, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1, 0x01,\n\t0x00, 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00, 0x43,\n\t0xE1, 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1, 0x86,\n\t0xB4, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5, 0x01,\n\t0x00, 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x32,\n\t0x43, 0xE3, 0x82, 0x99, 0x0D, 0x03, 0x43, 0xE3,\n\t// Bytes 4a80 - 4abf\n\t0x82, 0x9A, 0x0D, 0x03, 0x46, 0xE0, 0xBD, 0xB1,\n\t0xE0, 0xBD, 0xB2, 0x9E, 0x26, 0x46, 0xE0, 0xBD,\n\t0xB1, 0xE0, 0xBD, 0xB4, 0xA2, 0x26, 0x46, 0xE0,\n\t0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x26, 0x00,\n\t0x01,\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfcValues[c0]\n\t}\n\ti := nfcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfcTrie. Total size: 10332 bytes (10.09 KiB). Checksum: 51cc525b297fc970.\ntype nfcTrie struct{}\n\nfunc newNfcTrie(i int) *nfcTrie {\n\treturn &nfcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 44:\n\t\treturn uint16(nfcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 44\n\t\treturn uint16(nfcSparse.lookup(n, b))\n\t}\n}\n\n// nfcValues: 46 blocks, 2944 entries, 5888 bytes\n// The third block is the zero block.\nvar nfcValues = [2944]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c,\n\t0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb,\n\t0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104,\n\t0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd,\n\t0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235,\n\t0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285,\n\t0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3,\n\t0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750,\n\t0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f,\n\t0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3,\n\t0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 0x104: 0x2f9c, 0x105: 0x32a8,\n\t0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6,\n\t0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5,\n\t0x112: 0x46b0, 0x113: 0x4741, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302,\n\t0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339,\n\t0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352,\n\t0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e,\n\t0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6,\n\t0x130: 0x308c, 0x134: 0x30b4, 0x135: 0x33c0,\n\t0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc,\n\t0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8,\n\t// Block 0x5, offset 0x140\n\t0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118,\n\t0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f,\n\t0x14c: 0x46d3, 0x14d: 0x4764, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c,\n\t0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483,\n\t0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d,\n\t0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba,\n\t0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796,\n\t0x16a: 0x470a, 0x16b: 0x479b, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2,\n\t0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528,\n\t0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267,\n\t0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0xa000,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x8100, 0x185: 0x8100,\n\t0x186: 0x8100,\n\t0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140,\n\t0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8,\n\t0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50,\n\t0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5,\n\t0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf,\n\t0x1aa: 0x46ec, 0x1ab: 0x477d, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd,\n\t0x1b0: 0x33c5, 0x1b4: 0x3028, 0x1b5: 0x3334,\n\t0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46,\n\t0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316,\n\t0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac,\n\t0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479,\n\t0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6,\n\t0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5,\n\t0x1de: 0x305a, 0x1df: 0x3366,\n\t0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b,\n\t0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769,\n\t0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,\n\t0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,\n\t0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932,\n\t0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d,\n\t0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d,\n\t0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d,\n\t0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d,\n\t0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d,\n\t0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,\n\t0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 0x245: 0x9936,\n\t0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,\n\t0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,\n\t0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,\n\t0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135,\n\t0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132,\n\t0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132,\n\t0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132,\n\t0x274: 0x0170,\n\t0x27a: 0x8100,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x8100, 0x285: 0x35a1,\n\t0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625,\n\t0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 0x2af: 0x36a9,\n\t0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x3721, 0x2c1: 0x372d, 0x2c3: 0x371b,\n\t0x2c6: 0xa000, 0x2c7: 0x3709,\n\t0x2cc: 0x375d, 0x2cd: 0x3745, 0x2ce: 0x376f, 0x2d0: 0xa000,\n\t0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000,\n\t0x2d8: 0xa000, 0x2d9: 0x3751, 0x2da: 0xa000,\n\t0x2de: 0xa000, 0x2e3: 0xa000,\n\t0x2e7: 0xa000,\n\t0x2eb: 0xa000, 0x2ed: 0xa000,\n\t0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000,\n\t0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x37d5, 0x2fa: 0xa000,\n\t0x2fe: 0xa000,\n\t// Block 0xc, offset 0x300\n\t0x301: 0x3733, 0x302: 0x37b7,\n\t0x310: 0x370f, 0x311: 0x3793,\n\t0x312: 0x3715, 0x313: 0x3799, 0x316: 0x3727, 0x317: 0x37ab,\n\t0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3829, 0x31b: 0x382f, 0x31c: 0x3739, 0x31d: 0x37bd,\n\t0x31e: 0x373f, 0x31f: 0x37c3, 0x322: 0x374b, 0x323: 0x37cf,\n\t0x324: 0x3757, 0x325: 0x37db, 0x326: 0x3763, 0x327: 0x37e7, 0x328: 0xa000, 0x329: 0xa000,\n\t0x32a: 0x3835, 0x32b: 0x383b, 0x32c: 0x378d, 0x32d: 0x3811, 0x32e: 0x3769, 0x32f: 0x37ed,\n\t0x330: 0x3775, 0x331: 0x37f9, 0x332: 0x377b, 0x333: 0x37ff, 0x334: 0x3781, 0x335: 0x3805,\n\t0x338: 0x3787, 0x339: 0x380b,\n\t// Block 0xd, offset 0x340\n\t0x351: 0x812d,\n\t0x352: 0x8132, 0x353: 0x8132, 0x354: 0x8132, 0x355: 0x8132, 0x356: 0x812d, 0x357: 0x8132,\n\t0x358: 0x8132, 0x359: 0x8132, 0x35a: 0x812e, 0x35b: 0x812d, 0x35c: 0x8132, 0x35d: 0x8132,\n\t0x35e: 0x8132, 0x35f: 0x8132, 0x360: 0x8132, 0x361: 0x8132, 0x362: 0x812d, 0x363: 0x812d,\n\t0x364: 0x812d, 0x365: 0x812d, 0x366: 0x812d, 0x367: 0x812d, 0x368: 0x8132, 0x369: 0x8132,\n\t0x36a: 0x812d, 0x36b: 0x8132, 0x36c: 0x8132, 0x36d: 0x812e, 0x36e: 0x8131, 0x36f: 0x8132,\n\t0x370: 0x8105, 0x371: 0x8106, 0x372: 0x8107, 0x373: 0x8108, 0x374: 0x8109, 0x375: 0x810a,\n\t0x376: 0x810b, 0x377: 0x810c, 0x378: 0x810d, 0x379: 0x810e, 0x37a: 0x810e, 0x37b: 0x810f,\n\t0x37c: 0x8110, 0x37d: 0x8111, 0x37f: 0x8112,\n\t// Block 0xe, offset 0x380\n\t0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8116,\n\t0x38c: 0x8117, 0x38d: 0x8118, 0x38e: 0x8119, 0x38f: 0x811a, 0x390: 0x811b, 0x391: 0x811c,\n\t0x392: 0x811d, 0x393: 0x9932, 0x394: 0x9932, 0x395: 0x992d, 0x396: 0x812d, 0x397: 0x8132,\n\t0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x8132, 0x39b: 0x8132, 0x39c: 0x812d, 0x39d: 0x8132,\n\t0x39e: 0x8132, 0x39f: 0x812d,\n\t0x3b0: 0x811e,\n\t// Block 0xf, offset 0x3c0\n\t0x3c5: 0xa000,\n\t0x3c6: 0x2d26, 0x3c7: 0xa000, 0x3c8: 0x2d2e, 0x3c9: 0xa000, 0x3ca: 0x2d36, 0x3cb: 0xa000,\n\t0x3cc: 0x2d3e, 0x3cd: 0xa000, 0x3ce: 0x2d46, 0x3d1: 0xa000,\n\t0x3d2: 0x2d4e,\n\t0x3f4: 0x8102, 0x3f5: 0x9900,\n\t0x3fa: 0xa000, 0x3fb: 0x2d56,\n\t0x3fc: 0xa000, 0x3fd: 0x2d5e, 0x3fe: 0xa000, 0x3ff: 0xa000,\n\t// Block 0x10, offset 0x400\n\t0x400: 0x2f97, 0x401: 0x32a3, 0x402: 0x2fa1, 0x403: 0x32ad, 0x404: 0x2fa6, 0x405: 0x32b2,\n\t0x406: 0x2fab, 0x407: 0x32b7, 0x408: 0x38cc, 0x409: 0x3a5b, 0x40a: 0x2fc4, 0x40b: 0x32d0,\n\t0x40c: 0x2fce, 0x40d: 0x32da, 0x40e: 0x2fdd, 0x40f: 0x32e9, 0x410: 0x2fd3, 0x411: 0x32df,\n\t0x412: 0x2fd8, 0x413: 0x32e4, 0x414: 0x38ef, 0x415: 0x3a7e, 0x416: 0x38f6, 0x417: 0x3a85,\n\t0x418: 0x3019, 0x419: 0x3325, 0x41a: 0x301e, 0x41b: 0x332a, 0x41c: 0x3904, 0x41d: 0x3a93,\n\t0x41e: 0x3023, 0x41f: 0x332f, 0x420: 0x3032, 0x421: 0x333e, 0x422: 0x3050, 0x423: 0x335c,\n\t0x424: 0x305f, 0x425: 0x336b, 0x426: 0x3055, 0x427: 0x3361, 0x428: 0x3064, 0x429: 0x3370,\n\t0x42a: 0x3069, 0x42b: 0x3375, 0x42c: 0x30af, 0x42d: 0x33bb, 0x42e: 0x390b, 0x42f: 0x3a9a,\n\t0x430: 0x30b9, 0x431: 0x33ca, 0x432: 0x30c3, 0x433: 0x33d4, 0x434: 0x30cd, 0x435: 0x33de,\n\t0x436: 0x46c4, 0x437: 0x4755, 0x438: 0x3912, 0x439: 0x3aa1, 0x43a: 0x30e6, 0x43b: 0x33f7,\n\t0x43c: 0x30e1, 0x43d: 0x33f2, 0x43e: 0x30eb, 0x43f: 0x33fc,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x30f0, 0x441: 0x3401, 0x442: 0x30f5, 0x443: 0x3406, 0x444: 0x3109, 0x445: 0x341a,\n\t0x446: 0x3113, 0x447: 0x3424, 0x448: 0x3122, 0x449: 0x3433, 0x44a: 0x311d, 0x44b: 0x342e,\n\t0x44c: 0x3935, 0x44d: 0x3ac4, 0x44e: 0x3943, 0x44f: 0x3ad2, 0x450: 0x394a, 0x451: 0x3ad9,\n\t0x452: 0x3951, 0x453: 0x3ae0, 0x454: 0x314f, 0x455: 0x3460, 0x456: 0x3154, 0x457: 0x3465,\n\t0x458: 0x315e, 0x459: 0x346f, 0x45a: 0x46f1, 0x45b: 0x4782, 0x45c: 0x3997, 0x45d: 0x3b26,\n\t0x45e: 0x3177, 0x45f: 0x3488, 0x460: 0x3181, 0x461: 0x3492, 0x462: 0x4700, 0x463: 0x4791,\n\t0x464: 0x399e, 0x465: 0x3b2d, 0x466: 0x39a5, 0x467: 0x3b34, 0x468: 0x39ac, 0x469: 0x3b3b,\n\t0x46a: 0x3190, 0x46b: 0x34a1, 0x46c: 0x319a, 0x46d: 0x34b0, 0x46e: 0x31ae, 0x46f: 0x34c4,\n\t0x470: 0x31a9, 0x471: 0x34bf, 0x472: 0x31ea, 0x473: 0x3500, 0x474: 0x31f9, 0x475: 0x350f,\n\t0x476: 0x31f4, 0x477: 0x350a, 0x478: 0x39b3, 0x479: 0x3b42, 0x47a: 0x39ba, 0x47b: 0x3b49,\n\t0x47c: 0x31fe, 0x47d: 0x3514, 0x47e: 0x3203, 0x47f: 0x3519,\n\t// Block 0x12, offset 0x480\n\t0x480: 0x3208, 0x481: 0x351e, 0x482: 0x320d, 0x483: 0x3523, 0x484: 0x321c, 0x485: 0x3532,\n\t0x486: 0x3217, 0x487: 0x352d, 0x488: 0x3221, 0x489: 0x353c, 0x48a: 0x3226, 0x48b: 0x3541,\n\t0x48c: 0x322b, 0x48d: 0x3546, 0x48e: 0x3249, 0x48f: 0x3564, 0x490: 0x3262, 0x491: 0x3582,\n\t0x492: 0x3271, 0x493: 0x3591, 0x494: 0x3276, 0x495: 0x3596, 0x496: 0x337a, 0x497: 0x34a6,\n\t0x498: 0x3537, 0x499: 0x3573, 0x49b: 0x35d1,\n\t0x4a0: 0x46a1, 0x4a1: 0x4732, 0x4a2: 0x2f83, 0x4a3: 0x328f,\n\t0x4a4: 0x3878, 0x4a5: 0x3a07, 0x4a6: 0x3871, 0x4a7: 0x3a00, 0x4a8: 0x3886, 0x4a9: 0x3a15,\n\t0x4aa: 0x387f, 0x4ab: 0x3a0e, 0x4ac: 0x38be, 0x4ad: 0x3a4d, 0x4ae: 0x3894, 0x4af: 0x3a23,\n\t0x4b0: 0x388d, 0x4b1: 0x3a1c, 0x4b2: 0x38a2, 0x4b3: 0x3a31, 0x4b4: 0x389b, 0x4b5: 0x3a2a,\n\t0x4b6: 0x38c5, 0x4b7: 0x3a54, 0x4b8: 0x46b5, 0x4b9: 0x4746, 0x4ba: 0x3000, 0x4bb: 0x330c,\n\t0x4bc: 0x2fec, 0x4bd: 0x32f8, 0x4be: 0x38da, 0x4bf: 0x3a69,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x38d3, 0x4c1: 0x3a62, 0x4c2: 0x38e8, 0x4c3: 0x3a77, 0x4c4: 0x38e1, 0x4c5: 0x3a70,\n\t0x4c6: 0x38fd, 0x4c7: 0x3a8c, 0x4c8: 0x3091, 0x4c9: 0x339d, 0x4ca: 0x30a5, 0x4cb: 0x33b1,\n\t0x4cc: 0x46e7, 0x4cd: 0x4778, 0x4ce: 0x3136, 0x4cf: 0x3447, 0x4d0: 0x3920, 0x4d1: 0x3aaf,\n\t0x4d2: 0x3919, 0x4d3: 0x3aa8, 0x4d4: 0x392e, 0x4d5: 0x3abd, 0x4d6: 0x3927, 0x4d7: 0x3ab6,\n\t0x4d8: 0x3989, 0x4d9: 0x3b18, 0x4da: 0x396d, 0x4db: 0x3afc, 0x4dc: 0x3966, 0x4dd: 0x3af5,\n\t0x4de: 0x397b, 0x4df: 0x3b0a, 0x4e0: 0x3974, 0x4e1: 0x3b03, 0x4e2: 0x3982, 0x4e3: 0x3b11,\n\t0x4e4: 0x31e5, 0x4e5: 0x34fb, 0x4e6: 0x31c7, 0x4e7: 0x34dd, 0x4e8: 0x39e4, 0x4e9: 0x3b73,\n\t0x4ea: 0x39dd, 0x4eb: 0x3b6c, 0x4ec: 0x39f2, 0x4ed: 0x3b81, 0x4ee: 0x39eb, 0x4ef: 0x3b7a,\n\t0x4f0: 0x39f9, 0x4f1: 0x3b88, 0x4f2: 0x3230, 0x4f3: 0x354b, 0x4f4: 0x3258, 0x4f5: 0x3578,\n\t0x4f6: 0x3253, 0x4f7: 0x356e, 0x4f8: 0x323f, 0x4f9: 0x355a,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x4804, 0x501: 0x480a, 0x502: 0x491e, 0x503: 0x4936, 0x504: 0x4926, 0x505: 0x493e,\n\t0x506: 0x492e, 0x507: 0x4946, 0x508: 0x47aa, 0x509: 0x47b0, 0x50a: 0x488e, 0x50b: 0x48a6,\n\t0x50c: 0x4896, 0x50d: 0x48ae, 0x50e: 0x489e, 0x50f: 0x48b6, 0x510: 0x4816, 0x511: 0x481c,\n\t0x512: 0x3db8, 0x513: 0x3dc8, 0x514: 0x3dc0, 0x515: 0x3dd0,\n\t0x518: 0x47b6, 0x519: 0x47bc, 0x51a: 0x3ce8, 0x51b: 0x3cf8, 0x51c: 0x3cf0, 0x51d: 0x3d00,\n\t0x520: 0x482e, 0x521: 0x4834, 0x522: 0x494e, 0x523: 0x4966,\n\t0x524: 0x4956, 0x525: 0x496e, 0x526: 0x495e, 0x527: 0x4976, 0x528: 0x47c2, 0x529: 0x47c8,\n\t0x52a: 0x48be, 0x52b: 0x48d6, 0x52c: 0x48c6, 0x52d: 0x48de, 0x52e: 0x48ce, 0x52f: 0x48e6,\n\t0x530: 0x4846, 0x531: 0x484c, 0x532: 0x3e18, 0x533: 0x3e30, 0x534: 0x3e20, 0x535: 0x3e38,\n\t0x536: 0x3e28, 0x537: 0x3e40, 0x538: 0x47ce, 0x539: 0x47d4, 0x53a: 0x3d18, 0x53b: 0x3d30,\n\t0x53c: 0x3d20, 0x53d: 0x3d38, 0x53e: 0x3d28, 0x53f: 0x3d40,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x4852, 0x541: 0x4858, 0x542: 0x3e48, 0x543: 0x3e58, 0x544: 0x3e50, 0x545: 0x3e60,\n\t0x548: 0x47da, 0x549: 0x47e0, 0x54a: 0x3d48, 0x54b: 0x3d58,\n\t0x54c: 0x3d50, 0x54d: 0x3d60, 0x550: 0x4864, 0x551: 0x486a,\n\t0x552: 0x3e80, 0x553: 0x3e98, 0x554: 0x3e88, 0x555: 0x3ea0, 0x556: 0x3e90, 0x557: 0x3ea8,\n\t0x559: 0x47e6, 0x55b: 0x3d68, 0x55d: 0x3d70,\n\t0x55f: 0x3d78, 0x560: 0x487c, 0x561: 0x4882, 0x562: 0x497e, 0x563: 0x4996,\n\t0x564: 0x4986, 0x565: 0x499e, 0x566: 0x498e, 0x567: 0x49a6, 0x568: 0x47ec, 0x569: 0x47f2,\n\t0x56a: 0x48ee, 0x56b: 0x4906, 0x56c: 0x48f6, 0x56d: 0x490e, 0x56e: 0x48fe, 0x56f: 0x4916,\n\t0x570: 0x47f8, 0x571: 0x431e, 0x572: 0x3691, 0x573: 0x4324, 0x574: 0x4822, 0x575: 0x432a,\n\t0x576: 0x36a3, 0x577: 0x4330, 0x578: 0x36c1, 0x579: 0x4336, 0x57a: 0x36d9, 0x57b: 0x433c,\n\t0x57c: 0x4870, 0x57d: 0x4342,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x3da0, 0x581: 0x3da8, 0x582: 0x4184, 0x583: 0x41a2, 0x584: 0x418e, 0x585: 0x41ac,\n\t0x586: 0x4198, 0x587: 0x41b6, 0x588: 0x3cd8, 0x589: 0x3ce0, 0x58a: 0x40d0, 0x58b: 0x40ee,\n\t0x58c: 0x40da, 0x58d: 0x40f8, 0x58e: 0x40e4, 0x58f: 0x4102, 0x590: 0x3de8, 0x591: 0x3df0,\n\t0x592: 0x41c0, 0x593: 0x41de, 0x594: 0x41ca, 0x595: 0x41e8, 0x596: 0x41d4, 0x597: 0x41f2,\n\t0x598: 0x3d08, 0x599: 0x3d10, 0x59a: 0x410c, 0x59b: 0x412a, 0x59c: 0x4116, 0x59d: 0x4134,\n\t0x59e: 0x4120, 0x59f: 0x413e, 0x5a0: 0x3ec0, 0x5a1: 0x3ec8, 0x5a2: 0x41fc, 0x5a3: 0x421a,\n\t0x5a4: 0x4206, 0x5a5: 0x4224, 0x5a6: 0x4210, 0x5a7: 0x422e, 0x5a8: 0x3d80, 0x5a9: 0x3d88,\n\t0x5aa: 0x4148, 0x5ab: 0x4166, 0x5ac: 0x4152, 0x5ad: 0x4170, 0x5ae: 0x415c, 0x5af: 0x417a,\n\t0x5b0: 0x3685, 0x5b1: 0x367f, 0x5b2: 0x3d90, 0x5b3: 0x368b, 0x5b4: 0x3d98,\n\t0x5b6: 0x4810, 0x5b7: 0x3db0, 0x5b8: 0x35f5, 0x5b9: 0x35ef, 0x5ba: 0x35e3, 0x5bb: 0x42ee,\n\t0x5bc: 0x35fb, 0x5bd: 0x8100, 0x5be: 0x01d3, 0x5bf: 0xa100,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x8100, 0x5c1: 0x35a7, 0x5c2: 0x3dd8, 0x5c3: 0x369d, 0x5c4: 0x3de0,\n\t0x5c6: 0x483a, 0x5c7: 0x3df8, 0x5c8: 0x3601, 0x5c9: 0x42f4, 0x5ca: 0x360d, 0x5cb: 0x42fa,\n\t0x5cc: 0x3619, 0x5cd: 0x3b8f, 0x5ce: 0x3b96, 0x5cf: 0x3b9d, 0x5d0: 0x36b5, 0x5d1: 0x36af,\n\t0x5d2: 0x3e00, 0x5d3: 0x44e4, 0x5d6: 0x36bb, 0x5d7: 0x3e10,\n\t0x5d8: 0x3631, 0x5d9: 0x362b, 0x5da: 0x361f, 0x5db: 0x4300, 0x5dd: 0x3ba4,\n\t0x5de: 0x3bab, 0x5df: 0x3bb2, 0x5e0: 0x36eb, 0x5e1: 0x36e5, 0x5e2: 0x3e68, 0x5e3: 0x44ec,\n\t0x5e4: 0x36cd, 0x5e5: 0x36d3, 0x5e6: 0x36f1, 0x5e7: 0x3e78, 0x5e8: 0x3661, 0x5e9: 0x365b,\n\t0x5ea: 0x364f, 0x5eb: 0x430c, 0x5ec: 0x3649, 0x5ed: 0x359b, 0x5ee: 0x42e8, 0x5ef: 0x0081,\n\t0x5f2: 0x3eb0, 0x5f3: 0x36f7, 0x5f4: 0x3eb8,\n\t0x5f6: 0x4888, 0x5f7: 0x3ed0, 0x5f8: 0x363d, 0x5f9: 0x4306, 0x5fa: 0x366d, 0x5fb: 0x4318,\n\t0x5fc: 0x3679, 0x5fd: 0x4256, 0x5fe: 0xa100,\n\t// Block 0x18, offset 0x600\n\t0x601: 0x3c06, 0x603: 0xa000, 0x604: 0x3c0d, 0x605: 0xa000,\n\t0x607: 0x3c14, 0x608: 0xa000, 0x609: 0x3c1b,\n\t0x60d: 0xa000,\n\t0x620: 0x2f65, 0x621: 0xa000, 0x622: 0x3c29,\n\t0x624: 0xa000, 0x625: 0xa000,\n\t0x62d: 0x3c22, 0x62e: 0x2f60, 0x62f: 0x2f6a,\n\t0x630: 0x3c30, 0x631: 0x3c37, 0x632: 0xa000, 0x633: 0xa000, 0x634: 0x3c3e, 0x635: 0x3c45,\n\t0x636: 0xa000, 0x637: 0xa000, 0x638: 0x3c4c, 0x639: 0x3c53, 0x63a: 0xa000, 0x63b: 0xa000,\n\t0x63c: 0xa000, 0x63d: 0xa000,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x3c5a, 0x641: 0x3c61, 0x642: 0xa000, 0x643: 0xa000, 0x644: 0x3c76, 0x645: 0x3c7d,\n\t0x646: 0xa000, 0x647: 0xa000, 0x648: 0x3c84, 0x649: 0x3c8b,\n\t0x651: 0xa000,\n\t0x652: 0xa000,\n\t0x662: 0xa000,\n\t0x668: 0xa000, 0x669: 0xa000,\n\t0x66b: 0xa000, 0x66c: 0x3ca0, 0x66d: 0x3ca7, 0x66e: 0x3cae, 0x66f: 0x3cb5,\n\t0x672: 0xa000, 0x673: 0xa000, 0x674: 0xa000, 0x675: 0xa000,\n\t// Block 0x1a, offset 0x680\n\t0x686: 0xa000, 0x68b: 0xa000,\n\t0x68c: 0x3f08, 0x68d: 0xa000, 0x68e: 0x3f10, 0x68f: 0xa000, 0x690: 0x3f18, 0x691: 0xa000,\n\t0x692: 0x3f20, 0x693: 0xa000, 0x694: 0x3f28, 0x695: 0xa000, 0x696: 0x3f30, 0x697: 0xa000,\n\t0x698: 0x3f38, 0x699: 0xa000, 0x69a: 0x3f40, 0x69b: 0xa000, 0x69c: 0x3f48, 0x69d: 0xa000,\n\t0x69e: 0x3f50, 0x69f: 0xa000, 0x6a0: 0x3f58, 0x6a1: 0xa000, 0x6a2: 0x3f60,\n\t0x6a4: 0xa000, 0x6a5: 0x3f68, 0x6a6: 0xa000, 0x6a7: 0x3f70, 0x6a8: 0xa000, 0x6a9: 0x3f78,\n\t0x6af: 0xa000,\n\t0x6b0: 0x3f80, 0x6b1: 0x3f88, 0x6b2: 0xa000, 0x6b3: 0x3f90, 0x6b4: 0x3f98, 0x6b5: 0xa000,\n\t0x6b6: 0x3fa0, 0x6b7: 0x3fa8, 0x6b8: 0xa000, 0x6b9: 0x3fb0, 0x6ba: 0x3fb8, 0x6bb: 0xa000,\n\t0x6bc: 0x3fc0, 0x6bd: 0x3fc8,\n\t// Block 0x1b, offset 0x6c0\n\t0x6d4: 0x3f00,\n\t0x6d9: 0x9903, 0x6da: 0x9903, 0x6db: 0x8100, 0x6dc: 0x8100, 0x6dd: 0xa000,\n\t0x6de: 0x3fd0,\n\t0x6e6: 0xa000,\n\t0x6eb: 0xa000, 0x6ec: 0x3fe0, 0x6ed: 0xa000, 0x6ee: 0x3fe8, 0x6ef: 0xa000,\n\t0x6f0: 0x3ff0, 0x6f1: 0xa000, 0x6f2: 0x3ff8, 0x6f3: 0xa000, 0x6f4: 0x4000, 0x6f5: 0xa000,\n\t0x6f6: 0x4008, 0x6f7: 0xa000, 0x6f8: 0x4010, 0x6f9: 0xa000, 0x6fa: 0x4018, 0x6fb: 0xa000,\n\t0x6fc: 0x4020, 0x6fd: 0xa000, 0x6fe: 0x4028, 0x6ff: 0xa000,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x4030, 0x701: 0xa000, 0x702: 0x4038, 0x704: 0xa000, 0x705: 0x4040,\n\t0x706: 0xa000, 0x707: 0x4048, 0x708: 0xa000, 0x709: 0x4050,\n\t0x70f: 0xa000, 0x710: 0x4058, 0x711: 0x4060,\n\t0x712: 0xa000, 0x713: 0x4068, 0x714: 0x4070, 0x715: 0xa000, 0x716: 0x4078, 0x717: 0x4080,\n\t0x718: 0xa000, 0x719: 0x4088, 0x71a: 0x4090, 0x71b: 0xa000, 0x71c: 0x4098, 0x71d: 0x40a0,\n\t0x72f: 0xa000,\n\t0x730: 0xa000, 0x731: 0xa000, 0x732: 0xa000, 0x734: 0x3fd8,\n\t0x737: 0x40a8, 0x738: 0x40b0, 0x739: 0x40b8, 0x73a: 0x40c0,\n\t0x73d: 0xa000, 0x73e: 0x40c8,\n\t// Block 0x1d, offset 0x740\n\t0x740: 0x1377, 0x741: 0x0cfb, 0x742: 0x13d3, 0x743: 0x139f, 0x744: 0x0e57, 0x745: 0x06eb,\n\t0x746: 0x08df, 0x747: 0x162b, 0x748: 0x162b, 0x749: 0x0a0b, 0x74a: 0x145f, 0x74b: 0x0943,\n\t0x74c: 0x0a07, 0x74d: 0x0bef, 0x74e: 0x0fcf, 0x74f: 0x115f, 0x750: 0x1297, 0x751: 0x12d3,\n\t0x752: 0x1307, 0x753: 0x141b, 0x754: 0x0d73, 0x755: 0x0dff, 0x756: 0x0eab, 0x757: 0x0f43,\n\t0x758: 0x125f, 0x759: 0x1447, 0x75a: 0x1573, 0x75b: 0x070f, 0x75c: 0x08b3, 0x75d: 0x0d87,\n\t0x75e: 0x0ecf, 0x75f: 0x1293, 0x760: 0x15c3, 0x761: 0x0ab3, 0x762: 0x0e77, 0x763: 0x1283,\n\t0x764: 0x1317, 0x765: 0x0c23, 0x766: 0x11bb, 0x767: 0x12df, 0x768: 0x0b1f, 0x769: 0x0d0f,\n\t0x76a: 0x0e17, 0x76b: 0x0f1b, 0x76c: 0x1427, 0x76d: 0x074f, 0x76e: 0x07e7, 0x76f: 0x0853,\n\t0x770: 0x0c8b, 0x771: 0x0d7f, 0x772: 0x0ecb, 0x773: 0x0fef, 0x774: 0x1177, 0x775: 0x128b,\n\t0x776: 0x12a3, 0x777: 0x13c7, 0x778: 0x14ef, 0x779: 0x15a3, 0x77a: 0x15bf, 0x77b: 0x102b,\n\t0x77c: 0x106b, 0x77d: 0x1123, 0x77e: 0x1243, 0x77f: 0x147b,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x15cb, 0x781: 0x134b, 0x782: 0x09c7, 0x783: 0x0b3b, 0x784: 0x10db, 0x785: 0x119b,\n\t0x786: 0x0eff, 0x787: 0x1033, 0x788: 0x1397, 0x789: 0x14e7, 0x78a: 0x09c3, 0x78b: 0x0a8f,\n\t0x78c: 0x0d77, 0x78d: 0x0e2b, 0x78e: 0x0e5f, 0x78f: 0x1113, 0x790: 0x113b, 0x791: 0x14a7,\n\t0x792: 0x084f, 0x793: 0x11a7, 0x794: 0x07f3, 0x795: 0x07ef, 0x796: 0x1097, 0x797: 0x1127,\n\t0x798: 0x125b, 0x799: 0x14af, 0x79a: 0x1367, 0x79b: 0x0c27, 0x79c: 0x0d73, 0x79d: 0x1357,\n\t0x79e: 0x06f7, 0x79f: 0x0a63, 0x7a0: 0x0b93, 0x7a1: 0x0f2f, 0x7a2: 0x0faf, 0x7a3: 0x0873,\n\t0x7a4: 0x103b, 0x7a5: 0x075f, 0x7a6: 0x0b77, 0x7a7: 0x06d7, 0x7a8: 0x0deb, 0x7a9: 0x0ca3,\n\t0x7aa: 0x110f, 0x7ab: 0x08c7, 0x7ac: 0x09b3, 0x7ad: 0x0ffb, 0x7ae: 0x1263, 0x7af: 0x133b,\n\t0x7b0: 0x0db7, 0x7b1: 0x13f7, 0x7b2: 0x0de3, 0x7b3: 0x0c37, 0x7b4: 0x121b, 0x7b5: 0x0c57,\n\t0x7b6: 0x0fab, 0x7b7: 0x072b, 0x7b8: 0x07a7, 0x7b9: 0x07eb, 0x7ba: 0x0d53, 0x7bb: 0x10fb,\n\t0x7bc: 0x11f3, 0x7bd: 0x1347, 0x7be: 0x145b, 0x7bf: 0x085b,\n\t// Block 0x1f, offset 0x7c0\n\t0x7c0: 0x090f, 0x7c1: 0x0a17, 0x7c2: 0x0b2f, 0x7c3: 0x0cbf, 0x7c4: 0x0e7b, 0x7c5: 0x103f,\n\t0x7c6: 0x1497, 0x7c7: 0x157b, 0x7c8: 0x15cf, 0x7c9: 0x15e7, 0x7ca: 0x0837, 0x7cb: 0x0cf3,\n\t0x7cc: 0x0da3, 0x7cd: 0x13eb, 0x7ce: 0x0afb, 0x7cf: 0x0bd7, 0x7d0: 0x0bf3, 0x7d1: 0x0c83,\n\t0x7d2: 0x0e6b, 0x7d3: 0x0eb7, 0x7d4: 0x0f67, 0x7d5: 0x108b, 0x7d6: 0x112f, 0x7d7: 0x1193,\n\t0x7d8: 0x13db, 0x7d9: 0x126b, 0x7da: 0x1403, 0x7db: 0x147f, 0x7dc: 0x080f, 0x7dd: 0x083b,\n\t0x7de: 0x0923, 0x7df: 0x0ea7, 0x7e0: 0x12f3, 0x7e1: 0x133b, 0x7e2: 0x0b1b, 0x7e3: 0x0b8b,\n\t0x7e4: 0x0c4f, 0x7e5: 0x0daf, 0x7e6: 0x10d7, 0x7e7: 0x0f23, 0x7e8: 0x073b, 0x7e9: 0x097f,\n\t0x7ea: 0x0a63, 0x7eb: 0x0ac7, 0x7ec: 0x0b97, 0x7ed: 0x0f3f, 0x7ee: 0x0f5b, 0x7ef: 0x116b,\n\t0x7f0: 0x118b, 0x7f1: 0x1463, 0x7f2: 0x14e3, 0x7f3: 0x14f3, 0x7f4: 0x152f, 0x7f5: 0x0753,\n\t0x7f6: 0x107f, 0x7f7: 0x144f, 0x7f8: 0x14cb, 0x7f9: 0x0baf, 0x7fa: 0x0717, 0x7fb: 0x0777,\n\t0x7fc: 0x0a67, 0x7fd: 0x0a87, 0x7fe: 0x0caf, 0x7ff: 0x0d73,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x0ec3, 0x801: 0x0fcb, 0x802: 0x1277, 0x803: 0x1417, 0x804: 0x1623, 0x805: 0x0ce3,\n\t0x806: 0x14a3, 0x807: 0x0833, 0x808: 0x0d2f, 0x809: 0x0d3b, 0x80a: 0x0e0f, 0x80b: 0x0e47,\n\t0x80c: 0x0f4b, 0x80d: 0x0fa7, 0x80e: 0x1027, 0x80f: 0x110b, 0x810: 0x153b, 0x811: 0x07af,\n\t0x812: 0x0c03, 0x813: 0x14b3, 0x814: 0x0767, 0x815: 0x0aab, 0x816: 0x0e2f, 0x817: 0x13df,\n\t0x818: 0x0b67, 0x819: 0x0bb7, 0x81a: 0x0d43, 0x81b: 0x0f2f, 0x81c: 0x14bb, 0x81d: 0x0817,\n\t0x81e: 0x08ff, 0x81f: 0x0a97, 0x820: 0x0cd3, 0x821: 0x0d1f, 0x822: 0x0d5f, 0x823: 0x0df3,\n\t0x824: 0x0f47, 0x825: 0x0fbb, 0x826: 0x1157, 0x827: 0x12f7, 0x828: 0x1303, 0x829: 0x1457,\n\t0x82a: 0x14d7, 0x82b: 0x0883, 0x82c: 0x0e4b, 0x82d: 0x0903, 0x82e: 0x0ec7, 0x82f: 0x0f6b,\n\t0x830: 0x1287, 0x831: 0x14bf, 0x832: 0x15ab, 0x833: 0x15d3, 0x834: 0x0d37, 0x835: 0x0e27,\n\t0x836: 0x11c3, 0x837: 0x10b7, 0x838: 0x10c3, 0x839: 0x10e7, 0x83a: 0x0f17, 0x83b: 0x0e9f,\n\t0x83c: 0x1363, 0x83d: 0x0733, 0x83e: 0x122b, 0x83f: 0x081b,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x080b, 0x841: 0x0b0b, 0x842: 0x0c2b, 0x843: 0x10f3, 0x844: 0x0a53, 0x845: 0x0e03,\n\t0x846: 0x0cef, 0x847: 0x13e7, 0x848: 0x12e7, 0x849: 0x14ab, 0x84a: 0x1323, 0x84b: 0x0b27,\n\t0x84c: 0x0787, 0x84d: 0x095b, 0x850: 0x09af,\n\t0x852: 0x0cdf, 0x855: 0x07f7, 0x856: 0x0f1f, 0x857: 0x0fe3,\n\t0x858: 0x1047, 0x859: 0x1063, 0x85a: 0x1067, 0x85b: 0x107b, 0x85c: 0x14fb, 0x85d: 0x10eb,\n\t0x85e: 0x116f, 0x860: 0x128f, 0x862: 0x1353,\n\t0x865: 0x1407, 0x866: 0x1433,\n\t0x86a: 0x154f, 0x86b: 0x1553, 0x86c: 0x1557, 0x86d: 0x15bb, 0x86e: 0x142b, 0x86f: 0x14c7,\n\t0x870: 0x0757, 0x871: 0x077b, 0x872: 0x078f, 0x873: 0x084b, 0x874: 0x0857, 0x875: 0x0897,\n\t0x876: 0x094b, 0x877: 0x0967, 0x878: 0x096f, 0x879: 0x09ab, 0x87a: 0x09b7, 0x87b: 0x0a93,\n\t0x87c: 0x0a9b, 0x87d: 0x0ba3, 0x87e: 0x0bcb, 0x87f: 0x0bd3,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0beb, 0x881: 0x0c97, 0x882: 0x0cc7, 0x883: 0x0ce7, 0x884: 0x0d57, 0x885: 0x0e1b,\n\t0x886: 0x0e37, 0x887: 0x0e67, 0x888: 0x0ebb, 0x889: 0x0edb, 0x88a: 0x0f4f, 0x88b: 0x102f,\n\t0x88c: 0x104b, 0x88d: 0x1053, 0x88e: 0x104f, 0x88f: 0x1057, 0x890: 0x105b, 0x891: 0x105f,\n\t0x892: 0x1073, 0x893: 0x1077, 0x894: 0x109b, 0x895: 0x10af, 0x896: 0x10cb, 0x897: 0x112f,\n\t0x898: 0x1137, 0x899: 0x113f, 0x89a: 0x1153, 0x89b: 0x117b, 0x89c: 0x11cb, 0x89d: 0x11ff,\n\t0x89e: 0x11ff, 0x89f: 0x1267, 0x8a0: 0x130f, 0x8a1: 0x1327, 0x8a2: 0x135b, 0x8a3: 0x135f,\n\t0x8a4: 0x13a3, 0x8a5: 0x13a7, 0x8a6: 0x13ff, 0x8a7: 0x1407, 0x8a8: 0x14db, 0x8a9: 0x151f,\n\t0x8aa: 0x1537, 0x8ab: 0x0b9b, 0x8ac: 0x171e, 0x8ad: 0x11e3,\n\t0x8b0: 0x06df, 0x8b1: 0x07e3, 0x8b2: 0x07a3, 0x8b3: 0x074b, 0x8b4: 0x078b, 0x8b5: 0x07b7,\n\t0x8b6: 0x0847, 0x8b7: 0x0863, 0x8b8: 0x094b, 0x8b9: 0x0937, 0x8ba: 0x0947, 0x8bb: 0x0963,\n\t0x8bc: 0x09af, 0x8bd: 0x09bf, 0x8be: 0x0a03, 0x8bf: 0x0a0f,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x0a2b, 0x8c1: 0x0a3b, 0x8c2: 0x0b23, 0x8c3: 0x0b2b, 0x8c4: 0x0b5b, 0x8c5: 0x0b7b,\n\t0x8c6: 0x0bab, 0x8c7: 0x0bc3, 0x8c8: 0x0bb3, 0x8c9: 0x0bd3, 0x8ca: 0x0bc7, 0x8cb: 0x0beb,\n\t0x8cc: 0x0c07, 0x8cd: 0x0c5f, 0x8ce: 0x0c6b, 0x8cf: 0x0c73, 0x8d0: 0x0c9b, 0x8d1: 0x0cdf,\n\t0x8d2: 0x0d0f, 0x8d3: 0x0d13, 0x8d4: 0x0d27, 0x8d5: 0x0da7, 0x8d6: 0x0db7, 0x8d7: 0x0e0f,\n\t0x8d8: 0x0e5b, 0x8d9: 0x0e53, 0x8da: 0x0e67, 0x8db: 0x0e83, 0x8dc: 0x0ebb, 0x8dd: 0x1013,\n\t0x8de: 0x0edf, 0x8df: 0x0f13, 0x8e0: 0x0f1f, 0x8e1: 0x0f5f, 0x8e2: 0x0f7b, 0x8e3: 0x0f9f,\n\t0x8e4: 0x0fc3, 0x8e5: 0x0fc7, 0x8e6: 0x0fe3, 0x8e7: 0x0fe7, 0x8e8: 0x0ff7, 0x8e9: 0x100b,\n\t0x8ea: 0x1007, 0x8eb: 0x1037, 0x8ec: 0x10b3, 0x8ed: 0x10cb, 0x8ee: 0x10e3, 0x8ef: 0x111b,\n\t0x8f0: 0x112f, 0x8f1: 0x114b, 0x8f2: 0x117b, 0x8f3: 0x122f, 0x8f4: 0x1257, 0x8f5: 0x12cb,\n\t0x8f6: 0x1313, 0x8f7: 0x131f, 0x8f8: 0x1327, 0x8f9: 0x133f, 0x8fa: 0x1353, 0x8fb: 0x1343,\n\t0x8fc: 0x135b, 0x8fd: 0x1357, 0x8fe: 0x134f, 0x8ff: 0x135f,\n\t// Block 0x24, offset 0x900\n\t0x900: 0x136b, 0x901: 0x13a7, 0x902: 0x13e3, 0x903: 0x1413, 0x904: 0x144b, 0x905: 0x146b,\n\t0x906: 0x14b7, 0x907: 0x14db, 0x908: 0x14fb, 0x909: 0x150f, 0x90a: 0x151f, 0x90b: 0x152b,\n\t0x90c: 0x1537, 0x90d: 0x158b, 0x90e: 0x162b, 0x90f: 0x16b5, 0x910: 0x16b0, 0x911: 0x16e2,\n\t0x912: 0x0607, 0x913: 0x062f, 0x914: 0x0633, 0x915: 0x1764, 0x916: 0x1791, 0x917: 0x1809,\n\t0x918: 0x1617, 0x919: 0x1627,\n\t// Block 0x25, offset 0x940\n\t0x940: 0x06fb, 0x941: 0x06f3, 0x942: 0x0703, 0x943: 0x1647, 0x944: 0x0747, 0x945: 0x0757,\n\t0x946: 0x075b, 0x947: 0x0763, 0x948: 0x076b, 0x949: 0x076f, 0x94a: 0x077b, 0x94b: 0x0773,\n\t0x94c: 0x05b3, 0x94d: 0x165b, 0x94e: 0x078f, 0x94f: 0x0793, 0x950: 0x0797, 0x951: 0x07b3,\n\t0x952: 0x164c, 0x953: 0x05b7, 0x954: 0x079f, 0x955: 0x07bf, 0x956: 0x1656, 0x957: 0x07cf,\n\t0x958: 0x07d7, 0x959: 0x0737, 0x95a: 0x07df, 0x95b: 0x07e3, 0x95c: 0x1831, 0x95d: 0x07ff,\n\t0x95e: 0x0807, 0x95f: 0x05bf, 0x960: 0x081f, 0x961: 0x0823, 0x962: 0x082b, 0x963: 0x082f,\n\t0x964: 0x05c3, 0x965: 0x0847, 0x966: 0x084b, 0x967: 0x0857, 0x968: 0x0863, 0x969: 0x0867,\n\t0x96a: 0x086b, 0x96b: 0x0873, 0x96c: 0x0893, 0x96d: 0x0897, 0x96e: 0x089f, 0x96f: 0x08af,\n\t0x970: 0x08b7, 0x971: 0x08bb, 0x972: 0x08bb, 0x973: 0x08bb, 0x974: 0x166a, 0x975: 0x0e93,\n\t0x976: 0x08cf, 0x977: 0x08d7, 0x978: 0x166f, 0x979: 0x08e3, 0x97a: 0x08eb, 0x97b: 0x08f3,\n\t0x97c: 0x091b, 0x97d: 0x0907, 0x97e: 0x0913, 0x97f: 0x0917,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x091f, 0x981: 0x0927, 0x982: 0x092b, 0x983: 0x0933, 0x984: 0x093b, 0x985: 0x093f,\n\t0x986: 0x093f, 0x987: 0x0947, 0x988: 0x094f, 0x989: 0x0953, 0x98a: 0x095f, 0x98b: 0x0983,\n\t0x98c: 0x0967, 0x98d: 0x0987, 0x98e: 0x096b, 0x98f: 0x0973, 0x990: 0x080b, 0x991: 0x09cf,\n\t0x992: 0x0997, 0x993: 0x099b, 0x994: 0x099f, 0x995: 0x0993, 0x996: 0x09a7, 0x997: 0x09a3,\n\t0x998: 0x09bb, 0x999: 0x1674, 0x99a: 0x09d7, 0x99b: 0x09db, 0x99c: 0x09e3, 0x99d: 0x09ef,\n\t0x99e: 0x09f7, 0x99f: 0x0a13, 0x9a0: 0x1679, 0x9a1: 0x167e, 0x9a2: 0x0a1f, 0x9a3: 0x0a23,\n\t0x9a4: 0x0a27, 0x9a5: 0x0a1b, 0x9a6: 0x0a2f, 0x9a7: 0x05c7, 0x9a8: 0x05cb, 0x9a9: 0x0a37,\n\t0x9aa: 0x0a3f, 0x9ab: 0x0a3f, 0x9ac: 0x1683, 0x9ad: 0x0a5b, 0x9ae: 0x0a5f, 0x9af: 0x0a63,\n\t0x9b0: 0x0a6b, 0x9b1: 0x1688, 0x9b2: 0x0a73, 0x9b3: 0x0a77, 0x9b4: 0x0b4f, 0x9b5: 0x0a7f,\n\t0x9b6: 0x05cf, 0x9b7: 0x0a8b, 0x9b8: 0x0a9b, 0x9b9: 0x0aa7, 0x9ba: 0x0aa3, 0x9bb: 0x1692,\n\t0x9bc: 0x0aaf, 0x9bd: 0x1697, 0x9be: 0x0abb, 0x9bf: 0x0ab7,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0abf, 0x9c1: 0x0acf, 0x9c2: 0x0ad3, 0x9c3: 0x05d3, 0x9c4: 0x0ae3, 0x9c5: 0x0aeb,\n\t0x9c6: 0x0aef, 0x9c7: 0x0af3, 0x9c8: 0x05d7, 0x9c9: 0x169c, 0x9ca: 0x05db, 0x9cb: 0x0b0f,\n\t0x9cc: 0x0b13, 0x9cd: 0x0b17, 0x9ce: 0x0b1f, 0x9cf: 0x1863, 0x9d0: 0x0b37, 0x9d1: 0x16a6,\n\t0x9d2: 0x16a6, 0x9d3: 0x11d7, 0x9d4: 0x0b47, 0x9d5: 0x0b47, 0x9d6: 0x05df, 0x9d7: 0x16c9,\n\t0x9d8: 0x179b, 0x9d9: 0x0b57, 0x9da: 0x0b5f, 0x9db: 0x05e3, 0x9dc: 0x0b73, 0x9dd: 0x0b83,\n\t0x9de: 0x0b87, 0x9df: 0x0b8f, 0x9e0: 0x0b9f, 0x9e1: 0x05eb, 0x9e2: 0x05e7, 0x9e3: 0x0ba3,\n\t0x9e4: 0x16ab, 0x9e5: 0x0ba7, 0x9e6: 0x0bbb, 0x9e7: 0x0bbf, 0x9e8: 0x0bc3, 0x9e9: 0x0bbf,\n\t0x9ea: 0x0bcf, 0x9eb: 0x0bd3, 0x9ec: 0x0be3, 0x9ed: 0x0bdb, 0x9ee: 0x0bdf, 0x9ef: 0x0be7,\n\t0x9f0: 0x0beb, 0x9f1: 0x0bef, 0x9f2: 0x0bfb, 0x9f3: 0x0bff, 0x9f4: 0x0c17, 0x9f5: 0x0c1f,\n\t0x9f6: 0x0c2f, 0x9f7: 0x0c43, 0x9f8: 0x16ba, 0x9f9: 0x0c3f, 0x9fa: 0x0c33, 0x9fb: 0x0c4b,\n\t0x9fc: 0x0c53, 0x9fd: 0x0c67, 0x9fe: 0x16bf, 0x9ff: 0x0c6f,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x0c63, 0xa01: 0x0c5b, 0xa02: 0x05ef, 0xa03: 0x0c77, 0xa04: 0x0c7f, 0xa05: 0x0c87,\n\t0xa06: 0x0c7b, 0xa07: 0x05f3, 0xa08: 0x0c97, 0xa09: 0x0c9f, 0xa0a: 0x16c4, 0xa0b: 0x0ccb,\n\t0xa0c: 0x0cff, 0xa0d: 0x0cdb, 0xa0e: 0x05ff, 0xa0f: 0x0ce7, 0xa10: 0x05fb, 0xa11: 0x05f7,\n\t0xa12: 0x07c3, 0xa13: 0x07c7, 0xa14: 0x0d03, 0xa15: 0x0ceb, 0xa16: 0x11ab, 0xa17: 0x0663,\n\t0xa18: 0x0d0f, 0xa19: 0x0d13, 0xa1a: 0x0d17, 0xa1b: 0x0d2b, 0xa1c: 0x0d23, 0xa1d: 0x16dd,\n\t0xa1e: 0x0603, 0xa1f: 0x0d3f, 0xa20: 0x0d33, 0xa21: 0x0d4f, 0xa22: 0x0d57, 0xa23: 0x16e7,\n\t0xa24: 0x0d5b, 0xa25: 0x0d47, 0xa26: 0x0d63, 0xa27: 0x0607, 0xa28: 0x0d67, 0xa29: 0x0d6b,\n\t0xa2a: 0x0d6f, 0xa2b: 0x0d7b, 0xa2c: 0x16ec, 0xa2d: 0x0d83, 0xa2e: 0x060b, 0xa2f: 0x0d8f,\n\t0xa30: 0x16f1, 0xa31: 0x0d93, 0xa32: 0x060f, 0xa33: 0x0d9f, 0xa34: 0x0dab, 0xa35: 0x0db7,\n\t0xa36: 0x0dbb, 0xa37: 0x16f6, 0xa38: 0x168d, 0xa39: 0x16fb, 0xa3a: 0x0ddb, 0xa3b: 0x1700,\n\t0xa3c: 0x0de7, 0xa3d: 0x0def, 0xa3e: 0x0ddf, 0xa3f: 0x0dfb,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x0e0b, 0xa41: 0x0e1b, 0xa42: 0x0e0f, 0xa43: 0x0e13, 0xa44: 0x0e1f, 0xa45: 0x0e23,\n\t0xa46: 0x1705, 0xa47: 0x0e07, 0xa48: 0x0e3b, 0xa49: 0x0e3f, 0xa4a: 0x0613, 0xa4b: 0x0e53,\n\t0xa4c: 0x0e4f, 0xa4d: 0x170a, 0xa4e: 0x0e33, 0xa4f: 0x0e6f, 0xa50: 0x170f, 0xa51: 0x1714,\n\t0xa52: 0x0e73, 0xa53: 0x0e87, 0xa54: 0x0e83, 0xa55: 0x0e7f, 0xa56: 0x0617, 0xa57: 0x0e8b,\n\t0xa58: 0x0e9b, 0xa59: 0x0e97, 0xa5a: 0x0ea3, 0xa5b: 0x1651, 0xa5c: 0x0eb3, 0xa5d: 0x1719,\n\t0xa5e: 0x0ebf, 0xa5f: 0x1723, 0xa60: 0x0ed3, 0xa61: 0x0edf, 0xa62: 0x0ef3, 0xa63: 0x1728,\n\t0xa64: 0x0f07, 0xa65: 0x0f0b, 0xa66: 0x172d, 0xa67: 0x1732, 0xa68: 0x0f27, 0xa69: 0x0f37,\n\t0xa6a: 0x061b, 0xa6b: 0x0f3b, 0xa6c: 0x061f, 0xa6d: 0x061f, 0xa6e: 0x0f53, 0xa6f: 0x0f57,\n\t0xa70: 0x0f5f, 0xa71: 0x0f63, 0xa72: 0x0f6f, 0xa73: 0x0623, 0xa74: 0x0f87, 0xa75: 0x1737,\n\t0xa76: 0x0fa3, 0xa77: 0x173c, 0xa78: 0x0faf, 0xa79: 0x16a1, 0xa7a: 0x0fbf, 0xa7b: 0x1741,\n\t0xa7c: 0x1746, 0xa7d: 0x174b, 0xa7e: 0x0627, 0xa7f: 0x062b,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x0ff7, 0xa81: 0x1755, 0xa82: 0x1750, 0xa83: 0x175a, 0xa84: 0x175f, 0xa85: 0x0fff,\n\t0xa86: 0x1003, 0xa87: 0x1003, 0xa88: 0x100b, 0xa89: 0x0633, 0xa8a: 0x100f, 0xa8b: 0x0637,\n\t0xa8c: 0x063b, 0xa8d: 0x1769, 0xa8e: 0x1023, 0xa8f: 0x102b, 0xa90: 0x1037, 0xa91: 0x063f,\n\t0xa92: 0x176e, 0xa93: 0x105b, 0xa94: 0x1773, 0xa95: 0x1778, 0xa96: 0x107b, 0xa97: 0x1093,\n\t0xa98: 0x0643, 0xa99: 0x109b, 0xa9a: 0x109f, 0xa9b: 0x10a3, 0xa9c: 0x177d, 0xa9d: 0x1782,\n\t0xa9e: 0x1782, 0xa9f: 0x10bb, 0xaa0: 0x0647, 0xaa1: 0x1787, 0xaa2: 0x10cf, 0xaa3: 0x10d3,\n\t0xaa4: 0x064b, 0xaa5: 0x178c, 0xaa6: 0x10ef, 0xaa7: 0x064f, 0xaa8: 0x10ff, 0xaa9: 0x10f7,\n\t0xaaa: 0x1107, 0xaab: 0x1796, 0xaac: 0x111f, 0xaad: 0x0653, 0xaae: 0x112b, 0xaaf: 0x1133,\n\t0xab0: 0x1143, 0xab1: 0x0657, 0xab2: 0x17a0, 0xab3: 0x17a5, 0xab4: 0x065b, 0xab5: 0x17aa,\n\t0xab6: 0x115b, 0xab7: 0x17af, 0xab8: 0x1167, 0xab9: 0x1173, 0xaba: 0x117b, 0xabb: 0x17b4,\n\t0xabc: 0x17b9, 0xabd: 0x118f, 0xabe: 0x17be, 0xabf: 0x1197,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x16ce, 0xac1: 0x065f, 0xac2: 0x11af, 0xac3: 0x11b3, 0xac4: 0x0667, 0xac5: 0x11b7,\n\t0xac6: 0x0a33, 0xac7: 0x17c3, 0xac8: 0x17c8, 0xac9: 0x16d3, 0xaca: 0x16d8, 0xacb: 0x11d7,\n\t0xacc: 0x11db, 0xacd: 0x13f3, 0xace: 0x066b, 0xacf: 0x1207, 0xad0: 0x1203, 0xad1: 0x120b,\n\t0xad2: 0x083f, 0xad3: 0x120f, 0xad4: 0x1213, 0xad5: 0x1217, 0xad6: 0x121f, 0xad7: 0x17cd,\n\t0xad8: 0x121b, 0xad9: 0x1223, 0xada: 0x1237, 0xadb: 0x123b, 0xadc: 0x1227, 0xadd: 0x123f,\n\t0xade: 0x1253, 0xadf: 0x1267, 0xae0: 0x1233, 0xae1: 0x1247, 0xae2: 0x124b, 0xae3: 0x124f,\n\t0xae4: 0x17d2, 0xae5: 0x17dc, 0xae6: 0x17d7, 0xae7: 0x066f, 0xae8: 0x126f, 0xae9: 0x1273,\n\t0xaea: 0x127b, 0xaeb: 0x17f0, 0xaec: 0x127f, 0xaed: 0x17e1, 0xaee: 0x0673, 0xaef: 0x0677,\n\t0xaf0: 0x17e6, 0xaf1: 0x17eb, 0xaf2: 0x067b, 0xaf3: 0x129f, 0xaf4: 0x12a3, 0xaf5: 0x12a7,\n\t0xaf6: 0x12ab, 0xaf7: 0x12b7, 0xaf8: 0x12b3, 0xaf9: 0x12bf, 0xafa: 0x12bb, 0xafb: 0x12cb,\n\t0xafc: 0x12c3, 0xafd: 0x12c7, 0xafe: 0x12cf, 0xaff: 0x067f,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x12d7, 0xb01: 0x12db, 0xb02: 0x0683, 0xb03: 0x12eb, 0xb04: 0x12ef, 0xb05: 0x17f5,\n\t0xb06: 0x12fb, 0xb07: 0x12ff, 0xb08: 0x0687, 0xb09: 0x130b, 0xb0a: 0x05bb, 0xb0b: 0x17fa,\n\t0xb0c: 0x17ff, 0xb0d: 0x068b, 0xb0e: 0x068f, 0xb0f: 0x1337, 0xb10: 0x134f, 0xb11: 0x136b,\n\t0xb12: 0x137b, 0xb13: 0x1804, 0xb14: 0x138f, 0xb15: 0x1393, 0xb16: 0x13ab, 0xb17: 0x13b7,\n\t0xb18: 0x180e, 0xb19: 0x1660, 0xb1a: 0x13c3, 0xb1b: 0x13bf, 0xb1c: 0x13cb, 0xb1d: 0x1665,\n\t0xb1e: 0x13d7, 0xb1f: 0x13e3, 0xb20: 0x1813, 0xb21: 0x1818, 0xb22: 0x1423, 0xb23: 0x142f,\n\t0xb24: 0x1437, 0xb25: 0x181d, 0xb26: 0x143b, 0xb27: 0x1467, 0xb28: 0x1473, 0xb29: 0x1477,\n\t0xb2a: 0x146f, 0xb2b: 0x1483, 0xb2c: 0x1487, 0xb2d: 0x1822, 0xb2e: 0x1493, 0xb2f: 0x0693,\n\t0xb30: 0x149b, 0xb31: 0x1827, 0xb32: 0x0697, 0xb33: 0x14d3, 0xb34: 0x0ac3, 0xb35: 0x14eb,\n\t0xb36: 0x182c, 0xb37: 0x1836, 0xb38: 0x069b, 0xb39: 0x069f, 0xb3a: 0x1513, 0xb3b: 0x183b,\n\t0xb3c: 0x06a3, 0xb3d: 0x1840, 0xb3e: 0x152b, 0xb3f: 0x152b,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x1533, 0xb41: 0x1845, 0xb42: 0x154b, 0xb43: 0x06a7, 0xb44: 0x155b, 0xb45: 0x1567,\n\t0xb46: 0x156f, 0xb47: 0x1577, 0xb48: 0x06ab, 0xb49: 0x184a, 0xb4a: 0x158b, 0xb4b: 0x15a7,\n\t0xb4c: 0x15b3, 0xb4d: 0x06af, 0xb4e: 0x06b3, 0xb4f: 0x15b7, 0xb50: 0x184f, 0xb51: 0x06b7,\n\t0xb52: 0x1854, 0xb53: 0x1859, 0xb54: 0x185e, 0xb55: 0x15db, 0xb56: 0x06bb, 0xb57: 0x15ef,\n\t0xb58: 0x15f7, 0xb59: 0x15fb, 0xb5a: 0x1603, 0xb5b: 0x160b, 0xb5c: 0x1613, 0xb5d: 0x1868,\n}\n\n// nfcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x2c, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2d, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x2e, 0xcb: 0x2f, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x30,\n\t0xd0: 0x09, 0xd1: 0x31, 0xd2: 0x32, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x33,\n\t0xd8: 0x34, 0xd9: 0x0c, 0xdb: 0x35, 0xdc: 0x36, 0xdd: 0x37, 0xdf: 0x38,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x39, 0x121: 0x3a, 0x123: 0x3b, 0x124: 0x3c, 0x125: 0x3d, 0x126: 0x3e, 0x127: 0x3f,\n\t0x128: 0x40, 0x129: 0x41, 0x12a: 0x42, 0x12b: 0x43, 0x12c: 0x3e, 0x12d: 0x44, 0x12e: 0x45, 0x12f: 0x46,\n\t0x131: 0x47, 0x132: 0x48, 0x133: 0x49, 0x134: 0x4a, 0x135: 0x4b, 0x137: 0x4c,\n\t0x138: 0x4d, 0x139: 0x4e, 0x13a: 0x4f, 0x13b: 0x50, 0x13c: 0x51, 0x13d: 0x52, 0x13e: 0x53, 0x13f: 0x54,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x55, 0x142: 0x56, 0x144: 0x57, 0x145: 0x58, 0x146: 0x59, 0x147: 0x5a,\n\t0x14d: 0x5b,\n\t0x15c: 0x5c, 0x15f: 0x5d,\n\t0x162: 0x5e, 0x164: 0x5f,\n\t0x168: 0x60, 0x169: 0x61, 0x16a: 0x62, 0x16c: 0x0d, 0x16d: 0x63, 0x16e: 0x64, 0x16f: 0x65,\n\t0x170: 0x66, 0x173: 0x67, 0x177: 0x68,\n\t0x178: 0x0e, 0x179: 0x0f, 0x17a: 0x10, 0x17b: 0x11, 0x17c: 0x12, 0x17d: 0x13, 0x17e: 0x14, 0x17f: 0x15,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x69, 0x183: 0x6a, 0x184: 0x6b, 0x186: 0x6c, 0x187: 0x6d,\n\t0x188: 0x6e, 0x189: 0x16, 0x18a: 0x17, 0x18b: 0x6f, 0x18c: 0x70,\n\t0x1ab: 0x71,\n\t0x1b3: 0x72, 0x1b5: 0x73, 0x1b7: 0x74,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x75, 0x1c1: 0x18, 0x1c2: 0x19, 0x1c3: 0x1a, 0x1c4: 0x76, 0x1c5: 0x77,\n\t0x1c9: 0x78, 0x1cc: 0x79, 0x1cd: 0x7a,\n\t// Block 0x8, offset 0x200\n\t0x219: 0x7b, 0x21a: 0x7c, 0x21b: 0x7d,\n\t0x220: 0x7e, 0x223: 0x7f, 0x224: 0x80, 0x225: 0x81, 0x226: 0x82, 0x227: 0x83,\n\t0x22a: 0x84, 0x22b: 0x85, 0x22f: 0x86,\n\t0x230: 0x87, 0x231: 0x88, 0x232: 0x89, 0x233: 0x8a, 0x234: 0x8b, 0x235: 0x8c, 0x236: 0x8d, 0x237: 0x87,\n\t0x238: 0x88, 0x239: 0x89, 0x23a: 0x8a, 0x23b: 0x8b, 0x23c: 0x8c, 0x23d: 0x8d, 0x23e: 0x87, 0x23f: 0x88,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x89, 0x241: 0x8a, 0x242: 0x8b, 0x243: 0x8c, 0x244: 0x8d, 0x245: 0x87, 0x246: 0x88, 0x247: 0x89,\n\t0x248: 0x8a, 0x249: 0x8b, 0x24a: 0x8c, 0x24b: 0x8d, 0x24c: 0x87, 0x24d: 0x88, 0x24e: 0x89, 0x24f: 0x8a,\n\t0x250: 0x8b, 0x251: 0x8c, 0x252: 0x8d, 0x253: 0x87, 0x254: 0x88, 0x255: 0x89, 0x256: 0x8a, 0x257: 0x8b,\n\t0x258: 0x8c, 0x259: 0x8d, 0x25a: 0x87, 0x25b: 0x88, 0x25c: 0x89, 0x25d: 0x8a, 0x25e: 0x8b, 0x25f: 0x8c,\n\t0x260: 0x8d, 0x261: 0x87, 0x262: 0x88, 0x263: 0x89, 0x264: 0x8a, 0x265: 0x8b, 0x266: 0x8c, 0x267: 0x8d,\n\t0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26c: 0x8b, 0x26d: 0x8c, 0x26e: 0x8d, 0x26f: 0x87,\n\t0x270: 0x88, 0x271: 0x89, 0x272: 0x8a, 0x273: 0x8b, 0x274: 0x8c, 0x275: 0x8d, 0x276: 0x87, 0x277: 0x88,\n\t0x278: 0x89, 0x279: 0x8a, 0x27a: 0x8b, 0x27b: 0x8c, 0x27c: 0x8d, 0x27d: 0x87, 0x27e: 0x88, 0x27f: 0x89,\n\t// Block 0xa, offset 0x280\n\t0x280: 0x8a, 0x281: 0x8b, 0x282: 0x8c, 0x283: 0x8d, 0x284: 0x87, 0x285: 0x88, 0x286: 0x89, 0x287: 0x8a,\n\t0x288: 0x8b, 0x289: 0x8c, 0x28a: 0x8d, 0x28b: 0x87, 0x28c: 0x88, 0x28d: 0x89, 0x28e: 0x8a, 0x28f: 0x8b,\n\t0x290: 0x8c, 0x291: 0x8d, 0x292: 0x87, 0x293: 0x88, 0x294: 0x89, 0x295: 0x8a, 0x296: 0x8b, 0x297: 0x8c,\n\t0x298: 0x8d, 0x299: 0x87, 0x29a: 0x88, 0x29b: 0x89, 0x29c: 0x8a, 0x29d: 0x8b, 0x29e: 0x8c, 0x29f: 0x8d,\n\t0x2a0: 0x87, 0x2a1: 0x88, 0x2a2: 0x89, 0x2a3: 0x8a, 0x2a4: 0x8b, 0x2a5: 0x8c, 0x2a6: 0x8d, 0x2a7: 0x87,\n\t0x2a8: 0x88, 0x2a9: 0x89, 0x2aa: 0x8a, 0x2ab: 0x8b, 0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x87, 0x2af: 0x88,\n\t0x2b0: 0x89, 0x2b1: 0x8a, 0x2b2: 0x8b, 0x2b3: 0x8c, 0x2b4: 0x8d, 0x2b5: 0x87, 0x2b6: 0x88, 0x2b7: 0x89,\n\t0x2b8: 0x8a, 0x2b9: 0x8b, 0x2ba: 0x8c, 0x2bb: 0x8d, 0x2bc: 0x87, 0x2bd: 0x88, 0x2be: 0x89, 0x2bf: 0x8a,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0x8b, 0x2c1: 0x8c, 0x2c2: 0x8d, 0x2c3: 0x87, 0x2c4: 0x88, 0x2c5: 0x89, 0x2c6: 0x8a, 0x2c7: 0x8b,\n\t0x2c8: 0x8c, 0x2c9: 0x8d, 0x2ca: 0x87, 0x2cb: 0x88, 0x2cc: 0x89, 0x2cd: 0x8a, 0x2ce: 0x8b, 0x2cf: 0x8c,\n\t0x2d0: 0x8d, 0x2d1: 0x87, 0x2d2: 0x88, 0x2d3: 0x89, 0x2d4: 0x8a, 0x2d5: 0x8b, 0x2d6: 0x8c, 0x2d7: 0x8d,\n\t0x2d8: 0x87, 0x2d9: 0x88, 0x2da: 0x89, 0x2db: 0x8a, 0x2dc: 0x8b, 0x2dd: 0x8c, 0x2de: 0x8e,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x1b, 0x325: 0x1c, 0x326: 0x1d, 0x327: 0x1e,\n\t0x328: 0x1f, 0x329: 0x20, 0x32a: 0x21, 0x32b: 0x22, 0x32c: 0x8f, 0x32d: 0x90, 0x32e: 0x91,\n\t0x331: 0x92, 0x332: 0x93, 0x333: 0x94, 0x334: 0x95,\n\t0x338: 0x96, 0x339: 0x97, 0x33a: 0x98, 0x33b: 0x99, 0x33e: 0x9a, 0x33f: 0x9b,\n\t// Block 0xd, offset 0x340\n\t0x347: 0x9c,\n\t0x34b: 0x9d, 0x34d: 0x9e,\n\t0x368: 0x9f, 0x36b: 0xa0,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xa1, 0x382: 0xa2, 0x384: 0xa3, 0x385: 0x82, 0x387: 0xa4,\n\t0x388: 0xa5, 0x38b: 0xa6, 0x38c: 0x3e, 0x38d: 0xa7,\n\t0x391: 0xa8, 0x392: 0xa9, 0x393: 0xaa, 0x396: 0xab, 0x397: 0xac,\n\t0x398: 0x73, 0x39a: 0xad, 0x39c: 0xae,\n\t0x3b0: 0x73,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xaf, 0x3ec: 0xb0,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xb1,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xb2, 0x446: 0xb3, 0x447: 0xb4,\n\t0x449: 0xb5,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xb6,\n\t0x4a3: 0xb7, 0x4a5: 0xb8,\n\t// Block 0x13, offset 0x4c0\n\t0x4c8: 0xb9,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x23, 0x521: 0x24, 0x522: 0x25, 0x523: 0x26, 0x524: 0x27, 0x525: 0x28, 0x526: 0x29, 0x527: 0x2a,\n\t0x528: 0x2b,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfcSparseOffset: 142 entries, 284 bytes\nvar nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x62, 0x67, 0x69, 0x7a, 0x82, 0x89, 0x8c, 0x93, 0x97, 0x9b, 0x9d, 0x9f, 0xa8, 0xac, 0xb3, 0xb8, 0xbb, 0xc5, 0xc7, 0xce, 0xd6, 0xd9, 0xdb, 0xdd, 0xdf, 0xe4, 0xf5, 0x101, 0x103, 0x109, 0x10b, 0x10d, 0x10f, 0x111, 0x113, 0x115, 0x118, 0x11b, 0x11d, 0x120, 0x123, 0x127, 0x12c, 0x135, 0x137, 0x13a, 0x13c, 0x147, 0x157, 0x15b, 0x169, 0x16c, 0x172, 0x178, 0x183, 0x187, 0x189, 0x18b, 0x18d, 0x18f, 0x191, 0x197, 0x19b, 0x19d, 0x19f, 0x1a7, 0x1ab, 0x1ae, 0x1b0, 0x1b2, 0x1b4, 0x1b7, 0x1b9, 0x1bb, 0x1bd, 0x1bf, 0x1c5, 0x1c8, 0x1ca, 0x1d1, 0x1d7, 0x1dd, 0x1e5, 0x1eb, 0x1f1, 0x1f7, 0x1fb, 0x209, 0x212, 0x215, 0x218, 0x21a, 0x21d, 0x21f, 0x223, 0x228, 0x22a, 0x22c, 0x231, 0x237, 0x239, 0x23b, 0x23d, 0x243, 0x246, 0x249, 0x251, 0x258, 0x25b, 0x25e, 0x260, 0x268, 0x26b, 0x272, 0x275, 0x27b, 0x27d, 0x280, 0x282, 0x284, 0x286, 0x288, 0x295, 0x29f, 0x2a1, 0x2a3, 0x2a9, 0x2ab, 0x2ae}\n\n// nfcSparseValues: 688 entries, 2752 bytes\nvar nfcSparseValues = [688]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0xa100, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8100, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb8, hi: 0xb8},\n\t// Block 0x1, offset 0x5\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46e2, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4714, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t// Block 0x3, offset 0xb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x98, hi: 0x9d},\n\t// Block 0x4, offset 0xd\n\t{value: 0x0006, lo: 0x0a},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x85, hi: 0x85},\n\t{value: 0xa000, lo: 0x89, hi: 0x89},\n\t{value: 0x4840, lo: 0x8a, hi: 0x8a},\n\t{value: 0x485e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x36c7, lo: 0x8c, hi: 0x8c},\n\t{value: 0x36df, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4876, lo: 0x8e, hi: 0x8e},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x36fd, lo: 0x93, hi: 0x94},\n\t// Block 0x5, offset 0x18\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37a5, lo: 0x90, hi: 0x90},\n\t{value: 0x37b1, lo: 0x91, hi: 0x91},\n\t{value: 0x379f, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3817, lo: 0x97, hi: 0x97},\n\t{value: 0x37e1, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37c9, lo: 0x9d, hi: 0x9d},\n\t{value: 0x37f3, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x381d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3823, lo: 0xb7, hi: 0xb7},\n\t// Block 0x6, offset 0x28\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x83, hi: 0x87},\n\t// Block 0x7, offset 0x2a\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8113, lo: 0x81, hi: 0x82},\n\t{value: 0x8132, lo: 0x84, hi: 0x84},\n\t{value: 0x812d, lo: 0x85, hi: 0x85},\n\t{value: 0x810d, lo: 0x87, hi: 0x87},\n\t// Block 0x8, offset 0x2f\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x97},\n\t{value: 0x8119, lo: 0x98, hi: 0x98},\n\t{value: 0x811a, lo: 0x99, hi: 0x99},\n\t{value: 0x811b, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3841, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3847, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3853, lo: 0xa4, hi: 0xa4},\n\t{value: 0x384d, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3859, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x9, offset 0x3a\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x386b, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x385f, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3865, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8132, lo: 0x96, hi: 0x9c},\n\t{value: 0x8132, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t// Block 0xa, offset 0x49\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x811f, lo: 0x91, hi: 0x91},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8132, lo: 0xba, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8132, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8132, lo: 0xbf, hi: 0xbf},\n\t// Block 0xb, offset 0x56\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8132, lo: 0x80, hi: 0x80},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x83},\n\t{value: 0x812d, lo: 0x84, hi: 0x85},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x812d, lo: 0x88, hi: 0x89},\n\t{value: 0x8132, lo: 0x8a, hi: 0x8a},\n\t// Block 0xc, offset 0x5e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xab, hi: 0xb1},\n\t{value: 0x812d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb3},\n\t// Block 0xd, offset 0x62\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0x96, hi: 0x99},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8132, lo: 0xa9, hi: 0xad},\n\t// Block 0xe, offset 0x67\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x99, hi: 0x9b},\n\t// Block 0xf, offset 0x69\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x8132, lo: 0x94, hi: 0xa1},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8132, lo: 0xaa, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xaf},\n\t{value: 0x8116, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8117, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8118, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x812d, lo: 0xb9, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbf},\n\t// Block 0x10, offset 0x7a\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3ed8, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ee0, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3ee8, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9902, lo: 0xbc, hi: 0xbc},\n\t// Block 0x11, offset 0x82\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x91, hi: 0x91},\n\t{value: 0x812d, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x93, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x94},\n\t{value: 0x451c, lo: 0x98, hi: 0x9f},\n\t// Block 0x12, offset 0x89\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x13, offset 0x8c\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2c9e, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x455c, lo: 0x9c, hi: 0x9d},\n\t{value: 0x456c, lo: 0x9f, hi: 0x9f},\n\t// Block 0x14, offset 0x93\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4594, lo: 0xb3, hi: 0xb3},\n\t{value: 0x459c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x15, offset 0x97\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4574, lo: 0x99, hi: 0x9b},\n\t{value: 0x458c, lo: 0x9e, hi: 0x9e},\n\t// Block 0x16, offset 0x9b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x17, offset 0x9d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t// Block 0x18, offset 0x9f\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cb6, lo: 0x88, hi: 0x88},\n\t{value: 0x2cae, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cbe, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45a4, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45ac, lo: 0x9d, hi: 0x9d},\n\t// Block 0x19, offset 0xa8\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cc6, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1a, offset 0xac\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cce, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2cde, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cd6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1b, offset 0xb3\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ef0, lo: 0x88, hi: 0x88},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8120, lo: 0x95, hi: 0x96},\n\t// Block 0x1c, offset 0xb8\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1d, offset 0xbb\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2ce6, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cee, lo: 0x87, hi: 0x87},\n\t{value: 0x2cf6, lo: 0x88, hi: 0x88},\n\t{value: 0x2f50, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2dd8, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1e, offset 0xc5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1f, offset 0xc7\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cfe, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d0e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d06, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x20, offset 0xce\n\t{value: 0x6bea, lo: 0x07},\n\t{value: 0x9904, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ef8, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f58, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2de3, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d16, lo: 0x9e, hi: 0x9f},\n\t// Block 0x21, offset 0xd6\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8122, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x22, offset 0xd9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8123, lo: 0x88, hi: 0x8b},\n\t// Block 0x23, offset 0xdb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8124, lo: 0xb8, hi: 0xb9},\n\t// Block 0x24, offset 0xdd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8125, lo: 0x88, hi: 0x8b},\n\t// Block 0x25, offset 0xdf\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x812d, lo: 0x98, hi: 0x99},\n\t{value: 0x812d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812b, lo: 0xb9, hi: 0xb9},\n\t// Block 0x26, offset 0xe4\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2644, lo: 0x83, hi: 0x83},\n\t{value: 0x264b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2652, lo: 0x92, hi: 0x92},\n\t{value: 0x2659, lo: 0x97, hi: 0x97},\n\t{value: 0x2660, lo: 0x9c, hi: 0x9c},\n\t{value: 0x263d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8126, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8127, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a84, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8128, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a8d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45b4, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8200, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45bc, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8200, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8127, lo: 0xba, hi: 0xbd},\n\t// Block 0x27, offset 0xf5\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8127, lo: 0x80, hi: 0x80},\n\t{value: 0x4a96, lo: 0x81, hi: 0x81},\n\t{value: 0x8132, lo: 0x82, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0x86, hi: 0x87},\n\t{value: 0x266e, lo: 0x93, hi: 0x93},\n\t{value: 0x2675, lo: 0x9d, hi: 0x9d},\n\t{value: 0x267c, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2683, lo: 0xa7, hi: 0xa7},\n\t{value: 0x268a, lo: 0xac, hi: 0xac},\n\t{value: 0x2667, lo: 0xb9, hi: 0xb9},\n\t// Block 0x28, offset 0x101\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x86, hi: 0x86},\n\t// Block 0x29, offset 0x103\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d1e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x2a, offset 0x109\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2b, offset 0x10b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x10d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x10f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x111\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x113\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x115\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x94, hi: 0x94},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x118\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x11b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8131, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x11d\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812e, lo: 0xb9, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x120\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x97, hi: 0x97},\n\t{value: 0x812d, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x123\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8132, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x127\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812d, lo: 0xb5, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x37, offset 0x12c\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d66, lo: 0x80, hi: 0x80},\n\t{value: 0x2d6e, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d76, lo: 0x83, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xac},\n\t{value: 0x8132, lo: 0xad, hi: 0xb3},\n\t// Block 0x38, offset 0x135\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xaa, hi: 0xab},\n\t// Block 0x39, offset 0x137\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8104, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3a, offset 0x13a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3b, offset 0x13c\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812d, lo: 0x95, hi: 0x99},\n\t{value: 0x8132, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812d, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t{value: 0x8132, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3c, offset 0x147\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x8132, lo: 0x80, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x82},\n\t{value: 0x8132, lo: 0x83, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x8132, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8135, lo: 0x8d, hi: 0x8d},\n\t{value: 0x812a, lo: 0x8e, hi: 0x8e},\n\t{value: 0x812d, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8129, lo: 0x90, hi: 0x90},\n\t{value: 0x8132, lo: 0x91, hi: 0xb5},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8134, lo: 0xbc, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbe},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x157\n\t{value: 0x0004, lo: 0x03},\n\t{value: 0x0433, lo: 0x80, hi: 0x81},\n\t{value: 0x8100, lo: 0x97, hi: 0x97},\n\t{value: 0x8100, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3e, offset 0x15b\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8132, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8132, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8132, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812d, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t// Block 0x3f, offset 0x169\n\t{value: 0x427b, lo: 0x02},\n\t{value: 0x01b8, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0057, lo: 0xaa, hi: 0xab},\n\t// Block 0x40, offset 0x16c\n\t{value: 0x0007, lo: 0x05},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bb9, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bc7, lo: 0xae, hi: 0xae},\n\t// Block 0x41, offset 0x172\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3bce, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bd5, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x42, offset 0x178\n\t{value: 0x6408, lo: 0x0a},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3be3, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3bea, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3bf1, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3bf8, lo: 0xa4, hi: 0xa5},\n\t{value: 0x3bff, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x43, offset 0x183\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c68, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3c92, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cbc, lo: 0xaa, hi: 0xad},\n\t// Block 0x44, offset 0x187\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048b, lo: 0xa9, hi: 0xaa},\n\t// Block 0x45, offset 0x189\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44dd, lo: 0x9c, hi: 0x9c},\n\t// Block 0x46, offset 0x18b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xaf, hi: 0xb1},\n\t// Block 0x47, offset 0x18d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x48, offset 0x18f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa0, hi: 0xbf},\n\t// Block 0x49, offset 0x191\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x812c, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8131, lo: 0xab, hi: 0xab},\n\t{value: 0x8133, lo: 0xac, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x812f, lo: 0xae, hi: 0xaf},\n\t// Block 0x4a, offset 0x197\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4a9f, lo: 0xb3, hi: 0xb3},\n\t{value: 0x4a9f, lo: 0xb5, hi: 0xb6},\n\t{value: 0x4a9f, lo: 0xba, hi: 0xbf},\n\t// Block 0x4b, offset 0x19b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x4a9f, lo: 0x8f, hi: 0xa3},\n\t// Block 0x4c, offset 0x19d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xae, hi: 0xbe},\n\t// Block 0x4d, offset 0x19f\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0x8100, lo: 0x84, hi: 0x84},\n\t{value: 0x8100, lo: 0x87, hi: 0x87},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t{value: 0x8100, lo: 0x9e, hi: 0x9e},\n\t{value: 0x8100, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8100, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8100, lo: 0xbb, hi: 0xbb},\n\t// Block 0x4e, offset 0x1a7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8100, lo: 0x80, hi: 0x80},\n\t{value: 0x8100, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8100, lo: 0x8e, hi: 0x8e},\n\t// Block 0x4f, offset 0x1ab\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb4, hi: 0xbd},\n\t// Block 0x50, offset 0x1ae\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9f},\n\t// Block 0x51, offset 0x1b0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb1},\n\t// Block 0x52, offset 0x1b2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t// Block 0x53, offset 0x1b4\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xa0, hi: 0xb1},\n\t// Block 0x54, offset 0x1b7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xab, hi: 0xad},\n\t// Block 0x55, offset 0x1b9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x93, hi: 0x93},\n\t// Block 0x56, offset 0x1bb\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb3, hi: 0xb3},\n\t// Block 0x57, offset 0x1bd\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t// Block 0x58, offset 0x1bf\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbf},\n\t// Block 0x59, offset 0x1c5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t// Block 0x5a, offset 0x1c8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xad, hi: 0xad},\n\t// Block 0x5b, offset 0x1ca\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x5c, offset 0x1d1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x5d, offset 0x1d7\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x5e, offset 0x1dd\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x5f, offset 0x1e5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x60, offset 0x1eb\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x61, offset 0x1f1\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x62, offset 0x1f7\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x63, offset 0x1fb\n\t{value: 0x0006, lo: 0x0d},\n\t{value: 0x4390, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8115, lo: 0x9e, hi: 0x9e},\n\t{value: 0x4402, lo: 0x9f, hi: 0x9f},\n\t{value: 0x43f0, lo: 0xaa, hi: 0xab},\n\t{value: 0x44f4, lo: 0xac, hi: 0xac},\n\t{value: 0x44fc, lo: 0xad, hi: 0xad},\n\t{value: 0x4348, lo: 0xae, hi: 0xb1},\n\t{value: 0x4366, lo: 0xb2, hi: 0xb4},\n\t{value: 0x437e, lo: 0xb5, hi: 0xb6},\n\t{value: 0x438a, lo: 0xb8, hi: 0xb8},\n\t{value: 0x4396, lo: 0xb9, hi: 0xbb},\n\t{value: 0x43ae, lo: 0xbc, hi: 0xbc},\n\t{value: 0x43b4, lo: 0xbe, hi: 0xbe},\n\t// Block 0x64, offset 0x209\n\t{value: 0x0006, lo: 0x08},\n\t{value: 0x43ba, lo: 0x80, hi: 0x81},\n\t{value: 0x43c6, lo: 0x83, hi: 0x84},\n\t{value: 0x43d8, lo: 0x86, hi: 0x89},\n\t{value: 0x43fc, lo: 0x8a, hi: 0x8a},\n\t{value: 0x4378, lo: 0x8b, hi: 0x8b},\n\t{value: 0x4360, lo: 0x8c, hi: 0x8c},\n\t{value: 0x43a8, lo: 0x8d, hi: 0x8d},\n\t{value: 0x43d2, lo: 0x8e, hi: 0x8e},\n\t// Block 0x65, offset 0x212\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0xa4, hi: 0xa5},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb1},\n\t// Block 0x66, offset 0x215\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x9b, hi: 0x9d},\n\t{value: 0x8200, lo: 0x9e, hi: 0xa3},\n\t// Block 0x67, offset 0x218\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x90, hi: 0x90},\n\t// Block 0x68, offset 0x21a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8100, lo: 0x99, hi: 0x99},\n\t{value: 0x8200, lo: 0xb2, hi: 0xb4},\n\t// Block 0x69, offset 0x21d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xbc, hi: 0xbd},\n\t// Block 0x6a, offset 0x21f\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa6},\n\t{value: 0x812d, lo: 0xa7, hi: 0xad},\n\t{value: 0x8132, lo: 0xae, hi: 0xaf},\n\t// Block 0x6b, offset 0x223\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8100, lo: 0x89, hi: 0x8c},\n\t{value: 0x8100, lo: 0xb0, hi: 0xb2},\n\t{value: 0x8100, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8100, lo: 0xb6, hi: 0xbf},\n\t// Block 0x6c, offset 0x228\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x81, hi: 0x8c},\n\t// Block 0x6d, offset 0x22a\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0xb5, hi: 0xba},\n\t// Block 0x6e, offset 0x22c\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x4a9f, lo: 0x9e, hi: 0x9f},\n\t{value: 0x4a9f, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4a9f, lo: 0xa5, hi: 0xa6},\n\t{value: 0x4a9f, lo: 0xaa, hi: 0xaf},\n\t// Block 0x6f, offset 0x231\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x4a9f, lo: 0x82, hi: 0x87},\n\t{value: 0x4a9f, lo: 0x8a, hi: 0x8f},\n\t{value: 0x4a9f, lo: 0x92, hi: 0x97},\n\t{value: 0x4a9f, lo: 0x9a, hi: 0x9c},\n\t{value: 0x8100, lo: 0xa3, hi: 0xa3},\n\t// Block 0x70, offset 0x237\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x71, offset 0x239\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xa0, hi: 0xa0},\n\t// Block 0x72, offset 0x23b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb6, hi: 0xba},\n\t// Block 0x73, offset 0x23d\n\t{value: 0x002c, lo: 0x05},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x74, offset 0x243\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t// Block 0x75, offset 0x246\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x76, offset 0x249\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4238, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4242, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x424c, lo: 0xab, hi: 0xab},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x77, offset 0x251\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8132, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d7e, lo: 0xae, hi: 0xae},\n\t{value: 0x2d88, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8104, lo: 0xb3, hi: 0xb4},\n\t// Block 0x78, offset 0x258\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x79, offset 0x25b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8102, lo: 0xb6, hi: 0xb6},\n\t// Block 0x7a, offset 0x25e\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8102, lo: 0xa9, hi: 0xaa},\n\t// Block 0x7b, offset 0x260\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d92, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d9c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8132, lo: 0xa6, hi: 0xac},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t// Block 0x7c, offset 0x268\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x86, hi: 0x86},\n\t// Block 0x7d, offset 0x26b\n\t{value: 0x6b5a, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2db0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2da6, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dba, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7e, offset 0x272\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x83, hi: 0x83},\n\t// Block 0x7f, offset 0x275\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dc4, lo: 0xba, hi: 0xba},\n\t{value: 0x2dce, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x80, offset 0x27b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0x80, hi: 0x80},\n\t// Block 0x81, offset 0x27d\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x82, offset 0x280\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xab, hi: 0xab},\n\t// Block 0x83, offset 0x282\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x84, offset 0x284\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb6},\n\t// Block 0x85, offset 0x286\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x86, offset 0x288\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45cc, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45d6, lo: 0x9f, hi: 0x9f},\n\t{value: 0x460a, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4618, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4626, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4634, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4642, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812b, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8130, lo: 0xad, hi: 0xad},\n\t{value: 0x812b, lo: 0xae, hi: 0xb2},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbf},\n\t// Block 0x87, offset 0x295\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812d, lo: 0x80, hi: 0x82},\n\t{value: 0x8132, lo: 0x85, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8132, lo: 0xaa, hi: 0xad},\n\t{value: 0x45e0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x45ea, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4650, lo: 0xbd, hi: 0xbd},\n\t{value: 0x466c, lo: 0xbe, hi: 0xbe},\n\t{value: 0x465e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x88, offset 0x29f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x467a, lo: 0x80, hi: 0x80},\n\t// Block 0x89, offset 0x2a1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x82, hi: 0x84},\n\t// Block 0x8a, offset 0x2a3\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0x80, hi: 0x86},\n\t{value: 0x8132, lo: 0x88, hi: 0x98},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8132, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa6, hi: 0xaa},\n\t// Block 0x8b, offset 0x2a9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x90, hi: 0x96},\n\t// Block 0x8c, offset 0x2ab\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x84, hi: 0x89},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x8d, offset 0x2ae\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8100, lo: 0x93, hi: 0x93},\n}\n\n// lookup returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupUnsafe(s []byte) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// lookupString returns the trie value for the first UTF-8 encoding in s and\n// the width in bytes of this encoding. The size will be 0 if s does not\n// hold enough bytes to complete the encoding. len(s) must be greater than 0.\nfunc (t *nfkcTrie) lookupString(s string) (v uint16, sz int) {\n\tc0 := s[0]\n\tswitch {\n\tcase c0 < 0x80: // is ASCII\n\t\treturn nfkcValues[c0], 1\n\tcase c0 < 0xC2:\n\t\treturn 0, 1 // Illegal UTF-8: not a starter, not ASCII.\n\tcase c0 < 0xE0: // 2-byte UTF-8\n\t\tif len(s) < 2 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c1), 2\n\tcase c0 < 0xF0: // 3-byte UTF-8\n\t\tif len(s) < 3 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c2), 3\n\tcase c0 < 0xF8: // 4-byte UTF-8\n\t\tif len(s) < 4 {\n\t\t\treturn 0, 0\n\t\t}\n\t\ti := nfkcIndex[c0]\n\t\tc1 := s[1]\n\t\tif c1 < 0x80 || 0xC0 <= c1 {\n\t\t\treturn 0, 1 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to := uint32(i)<<6 + uint32(c1)\n\t\ti = nfkcIndex[o]\n\t\tc2 := s[2]\n\t\tif c2 < 0x80 || 0xC0 <= c2 {\n\t\t\treturn 0, 2 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\to = uint32(i)<<6 + uint32(c2)\n\t\ti = nfkcIndex[o]\n\t\tc3 := s[3]\n\t\tif c3 < 0x80 || 0xC0 <= c3 {\n\t\t\treturn 0, 3 // Illegal UTF-8: not a continuation byte.\n\t\t}\n\t\treturn t.lookupValue(uint32(i), c3), 4\n\t}\n\t// Illegal rune\n\treturn 0, 1\n}\n\n// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.\n// s must start with a full and valid UTF-8 encoded rune.\nfunc (t *nfkcTrie) lookupStringUnsafe(s string) uint16 {\n\tc0 := s[0]\n\tif c0 < 0x80 { // is ASCII\n\t\treturn nfkcValues[c0]\n\t}\n\ti := nfkcIndex[c0]\n\tif c0 < 0xE0 { // 2-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[1])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[1])]\n\tif c0 < 0xF0 { // 3-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[2])\n\t}\n\ti = nfkcIndex[uint32(i)<<6+uint32(s[2])]\n\tif c0 < 0xF8 { // 4-byte UTF-8\n\t\treturn t.lookupValue(uint32(i), s[3])\n\t}\n\treturn 0\n}\n\n// nfkcTrie. Total size: 16994 bytes (16.60 KiB). Checksum: c3ed54ee046f3c46.\ntype nfkcTrie struct{}\n\nfunc newNfkcTrie(i int) *nfkcTrie {\n\treturn &nfkcTrie{}\n}\n\n// lookupValue determines the type of block n and looks up the value for b.\nfunc (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 {\n\tswitch {\n\tcase n < 90:\n\t\treturn uint16(nfkcValues[n<<6+uint32(b)])\n\tdefault:\n\t\tn -= 90\n\t\treturn uint16(nfkcSparse.lookup(n, b))\n\t}\n}\n\n// nfkcValues: 92 blocks, 5888 entries, 11776 bytes\n// The third block is the zero block.\nvar nfkcValues = [5888]uint16{\n\t// Block 0x0, offset 0x0\n\t0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,\n\t// Block 0x1, offset 0x40\n\t0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,\n\t0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,\n\t0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,\n\t0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,\n\t0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,\n\t0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,\n\t0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,\n\t0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,\n\t0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,\n\t0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c,\n\t0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb,\n\t0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104,\n\t0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd,\n\t0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235,\n\t0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285,\n\t0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3,\n\t0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750,\n\t0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f,\n\t0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3,\n\t0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569,\n\t// Block 0x4, offset 0x100\n\t0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 0x104: 0x2f9c, 0x105: 0x32a8,\n\t0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6,\n\t0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5,\n\t0x112: 0x46b0, 0x113: 0x4741, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302,\n\t0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339,\n\t0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352,\n\t0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e,\n\t0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6,\n\t0x130: 0x308c, 0x132: 0x195d, 0x133: 0x19e7, 0x134: 0x30b4, 0x135: 0x33c0,\n\t0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc,\n\t0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8, 0x13f: 0x1bac,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x1c34, 0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118,\n\t0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f, 0x149: 0x1c5c,\n\t0x14c: 0x46d3, 0x14d: 0x4764, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c,\n\t0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483,\n\t0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d,\n\t0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba,\n\t0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796,\n\t0x16a: 0x470a, 0x16b: 0x479b, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2,\n\t0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528,\n\t0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267,\n\t0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0x00a7,\n\t// Block 0x6, offset 0x180\n\t0x184: 0x2dee, 0x185: 0x2df4,\n\t0x186: 0x2dfa, 0x187: 0x1972, 0x188: 0x1975, 0x189: 0x1a08, 0x18a: 0x1987, 0x18b: 0x198a,\n\t0x18c: 0x1a3e, 0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140,\n\t0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8,\n\t0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50,\n\t0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5,\n\t0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf,\n\t0x1aa: 0x46ec, 0x1ab: 0x477d, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd,\n\t0x1b0: 0x33c5, 0x1b1: 0x1942, 0x1b2: 0x1945, 0x1b3: 0x19cf, 0x1b4: 0x3028, 0x1b5: 0x3334,\n\t0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46,\n\t0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316,\n\t0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac,\n\t0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479,\n\t0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6,\n\t0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5,\n\t0x1de: 0x305a, 0x1df: 0x3366,\n\t0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b,\n\t0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769,\n\t0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f,\n\t// Block 0x8, offset 0x200\n\t0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132,\n\t0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932,\n\t0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932,\n\t0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d,\n\t0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d,\n\t0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d,\n\t0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d,\n\t0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d,\n\t0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101,\n\t0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d,\n\t0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132,\n\t// Block 0x9, offset 0x240\n\t0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 0x245: 0x9936,\n\t0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132,\n\t0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132,\n\t0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132,\n\t0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135,\n\t0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132,\n\t0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132,\n\t0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132,\n\t0x274: 0x0170,\n\t0x27a: 0x42a5,\n\t0x27e: 0x0037,\n\t// Block 0xa, offset 0x280\n\t0x284: 0x425a, 0x285: 0x447b,\n\t0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625,\n\t0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000,\n\t0x295: 0xa000, 0x297: 0xa000,\n\t0x299: 0xa000,\n\t0x29f: 0xa000, 0x2a1: 0xa000,\n\t0x2a5: 0xa000, 0x2a9: 0xa000,\n\t0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 0x2af: 0x36a9,\n\t0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000,\n\t0x2b7: 0xa000, 0x2b9: 0xa000,\n\t0x2bf: 0xa000,\n\t// Block 0xb, offset 0x2c0\n\t0x2c1: 0xa000, 0x2c5: 0xa000,\n\t0x2c9: 0xa000, 0x2ca: 0x4840, 0x2cb: 0x485e,\n\t0x2cc: 0x36c7, 0x2cd: 0x36df, 0x2ce: 0x4876, 0x2d0: 0x01be, 0x2d1: 0x01d0,\n\t0x2d2: 0x01ac, 0x2d3: 0x430c, 0x2d4: 0x4312, 0x2d5: 0x01fa, 0x2d6: 0x01e8,\n\t0x2f0: 0x01d6, 0x2f1: 0x01eb, 0x2f2: 0x01ee, 0x2f4: 0x0188, 0x2f5: 0x01c7,\n\t0x2f9: 0x01a6,\n\t// Block 0xc, offset 0x300\n\t0x300: 0x3721, 0x301: 0x372d, 0x303: 0x371b,\n\t0x306: 0xa000, 0x307: 0x3709,\n\t0x30c: 0x375d, 0x30d: 0x3745, 0x30e: 0x376f, 0x310: 0xa000,\n\t0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000,\n\t0x318: 0xa000, 0x319: 0x3751, 0x31a: 0xa000,\n\t0x31e: 0xa000, 0x323: 0xa000,\n\t0x327: 0xa000,\n\t0x32b: 0xa000, 0x32d: 0xa000,\n\t0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000,\n\t0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x37d5, 0x33a: 0xa000,\n\t0x33e: 0xa000,\n\t// Block 0xd, offset 0x340\n\t0x341: 0x3733, 0x342: 0x37b7,\n\t0x350: 0x370f, 0x351: 0x3793,\n\t0x352: 0x3715, 0x353: 0x3799, 0x356: 0x3727, 0x357: 0x37ab,\n\t0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3829, 0x35b: 0x382f, 0x35c: 0x3739, 0x35d: 0x37bd,\n\t0x35e: 0x373f, 0x35f: 0x37c3, 0x362: 0x374b, 0x363: 0x37cf,\n\t0x364: 0x3757, 0x365: 0x37db, 0x366: 0x3763, 0x367: 0x37e7, 0x368: 0xa000, 0x369: 0xa000,\n\t0x36a: 0x3835, 0x36b: 0x383b, 0x36c: 0x378d, 0x36d: 0x3811, 0x36e: 0x3769, 0x36f: 0x37ed,\n\t0x370: 0x3775, 0x371: 0x37f9, 0x372: 0x377b, 0x373: 0x37ff, 0x374: 0x3781, 0x375: 0x3805,\n\t0x378: 0x3787, 0x379: 0x380b,\n\t// Block 0xe, offset 0x380\n\t0x387: 0x1d61,\n\t0x391: 0x812d,\n\t0x392: 0x8132, 0x393: 0x8132, 0x394: 0x8132, 0x395: 0x8132, 0x396: 0x812d, 0x397: 0x8132,\n\t0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x812e, 0x39b: 0x812d, 0x39c: 0x8132, 0x39d: 0x8132,\n\t0x39e: 0x8132, 0x39f: 0x8132, 0x3a0: 0x8132, 0x3a1: 0x8132, 0x3a2: 0x812d, 0x3a3: 0x812d,\n\t0x3a4: 0x812d, 0x3a5: 0x812d, 0x3a6: 0x812d, 0x3a7: 0x812d, 0x3a8: 0x8132, 0x3a9: 0x8132,\n\t0x3aa: 0x812d, 0x3ab: 0x8132, 0x3ac: 0x8132, 0x3ad: 0x812e, 0x3ae: 0x8131, 0x3af: 0x8132,\n\t0x3b0: 0x8105, 0x3b1: 0x8106, 0x3b2: 0x8107, 0x3b3: 0x8108, 0x3b4: 0x8109, 0x3b5: 0x810a,\n\t0x3b6: 0x810b, 0x3b7: 0x810c, 0x3b8: 0x810d, 0x3b9: 0x810e, 0x3ba: 0x810e, 0x3bb: 0x810f,\n\t0x3bc: 0x8110, 0x3bd: 0x8111, 0x3bf: 0x8112,\n\t// Block 0xf, offset 0x3c0\n\t0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8116,\n\t0x3cc: 0x8117, 0x3cd: 0x8118, 0x3ce: 0x8119, 0x3cf: 0x811a, 0x3d0: 0x811b, 0x3d1: 0x811c,\n\t0x3d2: 0x811d, 0x3d3: 0x9932, 0x3d4: 0x9932, 0x3d5: 0x992d, 0x3d6: 0x812d, 0x3d7: 0x8132,\n\t0x3d8: 0x8132, 0x3d9: 0x8132, 0x3da: 0x8132, 0x3db: 0x8132, 0x3dc: 0x812d, 0x3dd: 0x8132,\n\t0x3de: 0x8132, 0x3df: 0x812d,\n\t0x3f0: 0x811e, 0x3f5: 0x1d84,\n\t0x3f6: 0x2013, 0x3f7: 0x204f, 0x3f8: 0x204a,\n\t// Block 0x10, offset 0x400\n\t0x405: 0xa000,\n\t0x406: 0x2d26, 0x407: 0xa000, 0x408: 0x2d2e, 0x409: 0xa000, 0x40a: 0x2d36, 0x40b: 0xa000,\n\t0x40c: 0x2d3e, 0x40d: 0xa000, 0x40e: 0x2d46, 0x411: 0xa000,\n\t0x412: 0x2d4e,\n\t0x434: 0x8102, 0x435: 0x9900,\n\t0x43a: 0xa000, 0x43b: 0x2d56,\n\t0x43c: 0xa000, 0x43d: 0x2d5e, 0x43e: 0xa000, 0x43f: 0xa000,\n\t// Block 0x11, offset 0x440\n\t0x440: 0x0069, 0x441: 0x006b, 0x442: 0x006f, 0x443: 0x0083, 0x444: 0x00f5, 0x445: 0x00f8,\n\t0x446: 0x0413, 0x447: 0x0085, 0x448: 0x0089, 0x449: 0x008b, 0x44a: 0x0104, 0x44b: 0x0107,\n\t0x44c: 0x010a, 0x44d: 0x008f, 0x44f: 0x0097, 0x450: 0x009b, 0x451: 0x00e0,\n\t0x452: 0x009f, 0x453: 0x00fe, 0x454: 0x0417, 0x455: 0x041b, 0x456: 0x00a1, 0x457: 0x00a9,\n\t0x458: 0x00ab, 0x459: 0x0423, 0x45a: 0x012b, 0x45b: 0x00ad, 0x45c: 0x0427, 0x45d: 0x01be,\n\t0x45e: 0x01c1, 0x45f: 0x01c4, 0x460: 0x01fa, 0x461: 0x01fd, 0x462: 0x0093, 0x463: 0x00a5,\n\t0x464: 0x00ab, 0x465: 0x00ad, 0x466: 0x01be, 0x467: 0x01c1, 0x468: 0x01eb, 0x469: 0x01fa,\n\t0x46a: 0x01fd,\n\t0x478: 0x020c,\n\t// Block 0x12, offset 0x480\n\t0x49b: 0x00fb, 0x49c: 0x0087, 0x49d: 0x0101,\n\t0x49e: 0x00d4, 0x49f: 0x010a, 0x4a0: 0x008d, 0x4a1: 0x010d, 0x4a2: 0x0110, 0x4a3: 0x0116,\n\t0x4a4: 0x011c, 0x4a5: 0x011f, 0x4a6: 0x0122, 0x4a7: 0x042b, 0x4a8: 0x016a, 0x4a9: 0x0128,\n\t0x4aa: 0x042f, 0x4ab: 0x016d, 0x4ac: 0x0131, 0x4ad: 0x012e, 0x4ae: 0x0134, 0x4af: 0x0137,\n\t0x4b0: 0x013a, 0x4b1: 0x013d, 0x4b2: 0x0140, 0x4b3: 0x014c, 0x4b4: 0x014f, 0x4b5: 0x00ec,\n\t0x4b6: 0x0152, 0x4b7: 0x0155, 0x4b8: 0x041f, 0x4b9: 0x0158, 0x4ba: 0x015b, 0x4bb: 0x00b5,\n\t0x4bc: 0x015e, 0x4bd: 0x0161, 0x4be: 0x0164, 0x4bf: 0x01d0,\n\t// Block 0x13, offset 0x4c0\n\t0x4c0: 0x2f97, 0x4c1: 0x32a3, 0x4c2: 0x2fa1, 0x4c3: 0x32ad, 0x4c4: 0x2fa6, 0x4c5: 0x32b2,\n\t0x4c6: 0x2fab, 0x4c7: 0x32b7, 0x4c8: 0x38cc, 0x4c9: 0x3a5b, 0x4ca: 0x2fc4, 0x4cb: 0x32d0,\n\t0x4cc: 0x2fce, 0x4cd: 0x32da, 0x4ce: 0x2fdd, 0x4cf: 0x32e9, 0x4d0: 0x2fd3, 0x4d1: 0x32df,\n\t0x4d2: 0x2fd8, 0x4d3: 0x32e4, 0x4d4: 0x38ef, 0x4d5: 0x3a7e, 0x4d6: 0x38f6, 0x4d7: 0x3a85,\n\t0x4d8: 0x3019, 0x4d9: 0x3325, 0x4da: 0x301e, 0x4db: 0x332a, 0x4dc: 0x3904, 0x4dd: 0x3a93,\n\t0x4de: 0x3023, 0x4df: 0x332f, 0x4e0: 0x3032, 0x4e1: 0x333e, 0x4e2: 0x3050, 0x4e3: 0x335c,\n\t0x4e4: 0x305f, 0x4e5: 0x336b, 0x4e6: 0x3055, 0x4e7: 0x3361, 0x4e8: 0x3064, 0x4e9: 0x3370,\n\t0x4ea: 0x3069, 0x4eb: 0x3375, 0x4ec: 0x30af, 0x4ed: 0x33bb, 0x4ee: 0x390b, 0x4ef: 0x3a9a,\n\t0x4f0: 0x30b9, 0x4f1: 0x33ca, 0x4f2: 0x30c3, 0x4f3: 0x33d4, 0x4f4: 0x30cd, 0x4f5: 0x33de,\n\t0x4f6: 0x46c4, 0x4f7: 0x4755, 0x4f8: 0x3912, 0x4f9: 0x3aa1, 0x4fa: 0x30e6, 0x4fb: 0x33f7,\n\t0x4fc: 0x30e1, 0x4fd: 0x33f2, 0x4fe: 0x30eb, 0x4ff: 0x33fc,\n\t// Block 0x14, offset 0x500\n\t0x500: 0x30f0, 0x501: 0x3401, 0x502: 0x30f5, 0x503: 0x3406, 0x504: 0x3109, 0x505: 0x341a,\n\t0x506: 0x3113, 0x507: 0x3424, 0x508: 0x3122, 0x509: 0x3433, 0x50a: 0x311d, 0x50b: 0x342e,\n\t0x50c: 0x3935, 0x50d: 0x3ac4, 0x50e: 0x3943, 0x50f: 0x3ad2, 0x510: 0x394a, 0x511: 0x3ad9,\n\t0x512: 0x3951, 0x513: 0x3ae0, 0x514: 0x314f, 0x515: 0x3460, 0x516: 0x3154, 0x517: 0x3465,\n\t0x518: 0x315e, 0x519: 0x346f, 0x51a: 0x46f1, 0x51b: 0x4782, 0x51c: 0x3997, 0x51d: 0x3b26,\n\t0x51e: 0x3177, 0x51f: 0x3488, 0x520: 0x3181, 0x521: 0x3492, 0x522: 0x4700, 0x523: 0x4791,\n\t0x524: 0x399e, 0x525: 0x3b2d, 0x526: 0x39a5, 0x527: 0x3b34, 0x528: 0x39ac, 0x529: 0x3b3b,\n\t0x52a: 0x3190, 0x52b: 0x34a1, 0x52c: 0x319a, 0x52d: 0x34b0, 0x52e: 0x31ae, 0x52f: 0x34c4,\n\t0x530: 0x31a9, 0x531: 0x34bf, 0x532: 0x31ea, 0x533: 0x3500, 0x534: 0x31f9, 0x535: 0x350f,\n\t0x536: 0x31f4, 0x537: 0x350a, 0x538: 0x39b3, 0x539: 0x3b42, 0x53a: 0x39ba, 0x53b: 0x3b49,\n\t0x53c: 0x31fe, 0x53d: 0x3514, 0x53e: 0x3203, 0x53f: 0x3519,\n\t// Block 0x15, offset 0x540\n\t0x540: 0x3208, 0x541: 0x351e, 0x542: 0x320d, 0x543: 0x3523, 0x544: 0x321c, 0x545: 0x3532,\n\t0x546: 0x3217, 0x547: 0x352d, 0x548: 0x3221, 0x549: 0x353c, 0x54a: 0x3226, 0x54b: 0x3541,\n\t0x54c: 0x322b, 0x54d: 0x3546, 0x54e: 0x3249, 0x54f: 0x3564, 0x550: 0x3262, 0x551: 0x3582,\n\t0x552: 0x3271, 0x553: 0x3591, 0x554: 0x3276, 0x555: 0x3596, 0x556: 0x337a, 0x557: 0x34a6,\n\t0x558: 0x3537, 0x559: 0x3573, 0x55a: 0x1be0, 0x55b: 0x42d7,\n\t0x560: 0x46a1, 0x561: 0x4732, 0x562: 0x2f83, 0x563: 0x328f,\n\t0x564: 0x3878, 0x565: 0x3a07, 0x566: 0x3871, 0x567: 0x3a00, 0x568: 0x3886, 0x569: 0x3a15,\n\t0x56a: 0x387f, 0x56b: 0x3a0e, 0x56c: 0x38be, 0x56d: 0x3a4d, 0x56e: 0x3894, 0x56f: 0x3a23,\n\t0x570: 0x388d, 0x571: 0x3a1c, 0x572: 0x38a2, 0x573: 0x3a31, 0x574: 0x389b, 0x575: 0x3a2a,\n\t0x576: 0x38c5, 0x577: 0x3a54, 0x578: 0x46b5, 0x579: 0x4746, 0x57a: 0x3000, 0x57b: 0x330c,\n\t0x57c: 0x2fec, 0x57d: 0x32f8, 0x57e: 0x38da, 0x57f: 0x3a69,\n\t// Block 0x16, offset 0x580\n\t0x580: 0x38d3, 0x581: 0x3a62, 0x582: 0x38e8, 0x583: 0x3a77, 0x584: 0x38e1, 0x585: 0x3a70,\n\t0x586: 0x38fd, 0x587: 0x3a8c, 0x588: 0x3091, 0x589: 0x339d, 0x58a: 0x30a5, 0x58b: 0x33b1,\n\t0x58c: 0x46e7, 0x58d: 0x4778, 0x58e: 0x3136, 0x58f: 0x3447, 0x590: 0x3920, 0x591: 0x3aaf,\n\t0x592: 0x3919, 0x593: 0x3aa8, 0x594: 0x392e, 0x595: 0x3abd, 0x596: 0x3927, 0x597: 0x3ab6,\n\t0x598: 0x3989, 0x599: 0x3b18, 0x59a: 0x396d, 0x59b: 0x3afc, 0x59c: 0x3966, 0x59d: 0x3af5,\n\t0x59e: 0x397b, 0x59f: 0x3b0a, 0x5a0: 0x3974, 0x5a1: 0x3b03, 0x5a2: 0x3982, 0x5a3: 0x3b11,\n\t0x5a4: 0x31e5, 0x5a5: 0x34fb, 0x5a6: 0x31c7, 0x5a7: 0x34dd, 0x5a8: 0x39e4, 0x5a9: 0x3b73,\n\t0x5aa: 0x39dd, 0x5ab: 0x3b6c, 0x5ac: 0x39f2, 0x5ad: 0x3b81, 0x5ae: 0x39eb, 0x5af: 0x3b7a,\n\t0x5b0: 0x39f9, 0x5b1: 0x3b88, 0x5b2: 0x3230, 0x5b3: 0x354b, 0x5b4: 0x3258, 0x5b5: 0x3578,\n\t0x5b6: 0x3253, 0x5b7: 0x356e, 0x5b8: 0x323f, 0x5b9: 0x355a,\n\t// Block 0x17, offset 0x5c0\n\t0x5c0: 0x4804, 0x5c1: 0x480a, 0x5c2: 0x491e, 0x5c3: 0x4936, 0x5c4: 0x4926, 0x5c5: 0x493e,\n\t0x5c6: 0x492e, 0x5c7: 0x4946, 0x5c8: 0x47aa, 0x5c9: 0x47b0, 0x5ca: 0x488e, 0x5cb: 0x48a6,\n\t0x5cc: 0x4896, 0x5cd: 0x48ae, 0x5ce: 0x489e, 0x5cf: 0x48b6, 0x5d0: 0x4816, 0x5d1: 0x481c,\n\t0x5d2: 0x3db8, 0x5d3: 0x3dc8, 0x5d4: 0x3dc0, 0x5d5: 0x3dd0,\n\t0x5d8: 0x47b6, 0x5d9: 0x47bc, 0x5da: 0x3ce8, 0x5db: 0x3cf8, 0x5dc: 0x3cf0, 0x5dd: 0x3d00,\n\t0x5e0: 0x482e, 0x5e1: 0x4834, 0x5e2: 0x494e, 0x5e3: 0x4966,\n\t0x5e4: 0x4956, 0x5e5: 0x496e, 0x5e6: 0x495e, 0x5e7: 0x4976, 0x5e8: 0x47c2, 0x5e9: 0x47c8,\n\t0x5ea: 0x48be, 0x5eb: 0x48d6, 0x5ec: 0x48c6, 0x5ed: 0x48de, 0x5ee: 0x48ce, 0x5ef: 0x48e6,\n\t0x5f0: 0x4846, 0x5f1: 0x484c, 0x5f2: 0x3e18, 0x5f3: 0x3e30, 0x5f4: 0x3e20, 0x5f5: 0x3e38,\n\t0x5f6: 0x3e28, 0x5f7: 0x3e40, 0x5f8: 0x47ce, 0x5f9: 0x47d4, 0x5fa: 0x3d18, 0x5fb: 0x3d30,\n\t0x5fc: 0x3d20, 0x5fd: 0x3d38, 0x5fe: 0x3d28, 0x5ff: 0x3d40,\n\t// Block 0x18, offset 0x600\n\t0x600: 0x4852, 0x601: 0x4858, 0x602: 0x3e48, 0x603: 0x3e58, 0x604: 0x3e50, 0x605: 0x3e60,\n\t0x608: 0x47da, 0x609: 0x47e0, 0x60a: 0x3d48, 0x60b: 0x3d58,\n\t0x60c: 0x3d50, 0x60d: 0x3d60, 0x610: 0x4864, 0x611: 0x486a,\n\t0x612: 0x3e80, 0x613: 0x3e98, 0x614: 0x3e88, 0x615: 0x3ea0, 0x616: 0x3e90, 0x617: 0x3ea8,\n\t0x619: 0x47e6, 0x61b: 0x3d68, 0x61d: 0x3d70,\n\t0x61f: 0x3d78, 0x620: 0x487c, 0x621: 0x4882, 0x622: 0x497e, 0x623: 0x4996,\n\t0x624: 0x4986, 0x625: 0x499e, 0x626: 0x498e, 0x627: 0x49a6, 0x628: 0x47ec, 0x629: 0x47f2,\n\t0x62a: 0x48ee, 0x62b: 0x4906, 0x62c: 0x48f6, 0x62d: 0x490e, 0x62e: 0x48fe, 0x62f: 0x4916,\n\t0x630: 0x47f8, 0x631: 0x431e, 0x632: 0x3691, 0x633: 0x4324, 0x634: 0x4822, 0x635: 0x432a,\n\t0x636: 0x36a3, 0x637: 0x4330, 0x638: 0x36c1, 0x639: 0x4336, 0x63a: 0x36d9, 0x63b: 0x433c,\n\t0x63c: 0x4870, 0x63d: 0x4342,\n\t// Block 0x19, offset 0x640\n\t0x640: 0x3da0, 0x641: 0x3da8, 0x642: 0x4184, 0x643: 0x41a2, 0x644: 0x418e, 0x645: 0x41ac,\n\t0x646: 0x4198, 0x647: 0x41b6, 0x648: 0x3cd8, 0x649: 0x3ce0, 0x64a: 0x40d0, 0x64b: 0x40ee,\n\t0x64c: 0x40da, 0x64d: 0x40f8, 0x64e: 0x40e4, 0x64f: 0x4102, 0x650: 0x3de8, 0x651: 0x3df0,\n\t0x652: 0x41c0, 0x653: 0x41de, 0x654: 0x41ca, 0x655: 0x41e8, 0x656: 0x41d4, 0x657: 0x41f2,\n\t0x658: 0x3d08, 0x659: 0x3d10, 0x65a: 0x410c, 0x65b: 0x412a, 0x65c: 0x4116, 0x65d: 0x4134,\n\t0x65e: 0x4120, 0x65f: 0x413e, 0x660: 0x3ec0, 0x661: 0x3ec8, 0x662: 0x41fc, 0x663: 0x421a,\n\t0x664: 0x4206, 0x665: 0x4224, 0x666: 0x4210, 0x667: 0x422e, 0x668: 0x3d80, 0x669: 0x3d88,\n\t0x66a: 0x4148, 0x66b: 0x4166, 0x66c: 0x4152, 0x66d: 0x4170, 0x66e: 0x415c, 0x66f: 0x417a,\n\t0x670: 0x3685, 0x671: 0x367f, 0x672: 0x3d90, 0x673: 0x368b, 0x674: 0x3d98,\n\t0x676: 0x4810, 0x677: 0x3db0, 0x678: 0x35f5, 0x679: 0x35ef, 0x67a: 0x35e3, 0x67b: 0x42ee,\n\t0x67c: 0x35fb, 0x67d: 0x4287, 0x67e: 0x01d3, 0x67f: 0x4287,\n\t// Block 0x1a, offset 0x680\n\t0x680: 0x42a0, 0x681: 0x4482, 0x682: 0x3dd8, 0x683: 0x369d, 0x684: 0x3de0,\n\t0x686: 0x483a, 0x687: 0x3df8, 0x688: 0x3601, 0x689: 0x42f4, 0x68a: 0x360d, 0x68b: 0x42fa,\n\t0x68c: 0x3619, 0x68d: 0x4489, 0x68e: 0x4490, 0x68f: 0x4497, 0x690: 0x36b5, 0x691: 0x36af,\n\t0x692: 0x3e00, 0x693: 0x44e4, 0x696: 0x36bb, 0x697: 0x3e10,\n\t0x698: 0x3631, 0x699: 0x362b, 0x69a: 0x361f, 0x69b: 0x4300, 0x69d: 0x449e,\n\t0x69e: 0x44a5, 0x69f: 0x44ac, 0x6a0: 0x36eb, 0x6a1: 0x36e5, 0x6a2: 0x3e68, 0x6a3: 0x44ec,\n\t0x6a4: 0x36cd, 0x6a5: 0x36d3, 0x6a6: 0x36f1, 0x6a7: 0x3e78, 0x6a8: 0x3661, 0x6a9: 0x365b,\n\t0x6aa: 0x364f, 0x6ab: 0x430c, 0x6ac: 0x3649, 0x6ad: 0x4474, 0x6ae: 0x447b, 0x6af: 0x0081,\n\t0x6b2: 0x3eb0, 0x6b3: 0x36f7, 0x6b4: 0x3eb8,\n\t0x6b6: 0x4888, 0x6b7: 0x3ed0, 0x6b8: 0x363d, 0x6b9: 0x4306, 0x6ba: 0x366d, 0x6bb: 0x4318,\n\t0x6bc: 0x3679, 0x6bd: 0x425a, 0x6be: 0x428c,\n\t// Block 0x1b, offset 0x6c0\n\t0x6c0: 0x1bd8, 0x6c1: 0x1bdc, 0x6c2: 0x0047, 0x6c3: 0x1c54, 0x6c5: 0x1be8,\n\t0x6c6: 0x1bec, 0x6c7: 0x00e9, 0x6c9: 0x1c58, 0x6ca: 0x008f, 0x6cb: 0x0051,\n\t0x6cc: 0x0051, 0x6cd: 0x0051, 0x6ce: 0x0091, 0x6cf: 0x00da, 0x6d0: 0x0053, 0x6d1: 0x0053,\n\t0x6d2: 0x0059, 0x6d3: 0x0099, 0x6d5: 0x005d, 0x6d6: 0x198d,\n\t0x6d9: 0x0061, 0x6da: 0x0063, 0x6db: 0x0065, 0x6dc: 0x0065, 0x6dd: 0x0065,\n\t0x6e0: 0x199f, 0x6e1: 0x1bc8, 0x6e2: 0x19a8,\n\t0x6e4: 0x0075, 0x6e6: 0x01b8, 0x6e8: 0x0075,\n\t0x6ea: 0x0057, 0x6eb: 0x42d2, 0x6ec: 0x0045, 0x6ed: 0x0047, 0x6ef: 0x008b,\n\t0x6f0: 0x004b, 0x6f1: 0x004d, 0x6f3: 0x005b, 0x6f4: 0x009f, 0x6f5: 0x0215,\n\t0x6f6: 0x0218, 0x6f7: 0x021b, 0x6f8: 0x021e, 0x6f9: 0x0093, 0x6fb: 0x1b98,\n\t0x6fc: 0x01e8, 0x6fd: 0x01c1, 0x6fe: 0x0179, 0x6ff: 0x01a0,\n\t// Block 0x1c, offset 0x700\n\t0x700: 0x0463, 0x705: 0x0049,\n\t0x706: 0x0089, 0x707: 0x008b, 0x708: 0x0093, 0x709: 0x0095,\n\t0x710: 0x222e, 0x711: 0x223a,\n\t0x712: 0x22ee, 0x713: 0x2216, 0x714: 0x229a, 0x715: 0x2222, 0x716: 0x22a0, 0x717: 0x22b8,\n\t0x718: 0x22c4, 0x719: 0x2228, 0x71a: 0x22ca, 0x71b: 0x2234, 0x71c: 0x22be, 0x71d: 0x22d0,\n\t0x71e: 0x22d6, 0x71f: 0x1cbc, 0x720: 0x0053, 0x721: 0x195a, 0x722: 0x1ba4, 0x723: 0x1963,\n\t0x724: 0x006d, 0x725: 0x19ab, 0x726: 0x1bd0, 0x727: 0x1d48, 0x728: 0x1966, 0x729: 0x0071,\n\t0x72a: 0x19b7, 0x72b: 0x1bd4, 0x72c: 0x0059, 0x72d: 0x0047, 0x72e: 0x0049, 0x72f: 0x005b,\n\t0x730: 0x0093, 0x731: 0x19e4, 0x732: 0x1c18, 0x733: 0x19ed, 0x734: 0x00ad, 0x735: 0x1a62,\n\t0x736: 0x1c4c, 0x737: 0x1d5c, 0x738: 0x19f0, 0x739: 0x00b1, 0x73a: 0x1a65, 0x73b: 0x1c50,\n\t0x73c: 0x0099, 0x73d: 0x0087, 0x73e: 0x0089, 0x73f: 0x009b,\n\t// Block 0x1d, offset 0x740\n\t0x741: 0x3c06, 0x743: 0xa000, 0x744: 0x3c0d, 0x745: 0xa000,\n\t0x747: 0x3c14, 0x748: 0xa000, 0x749: 0x3c1b,\n\t0x74d: 0xa000,\n\t0x760: 0x2f65, 0x761: 0xa000, 0x762: 0x3c29,\n\t0x764: 0xa000, 0x765: 0xa000,\n\t0x76d: 0x3c22, 0x76e: 0x2f60, 0x76f: 0x2f6a,\n\t0x770: 0x3c30, 0x771: 0x3c37, 0x772: 0xa000, 0x773: 0xa000, 0x774: 0x3c3e, 0x775: 0x3c45,\n\t0x776: 0xa000, 0x777: 0xa000, 0x778: 0x3c4c, 0x779: 0x3c53, 0x77a: 0xa000, 0x77b: 0xa000,\n\t0x77c: 0xa000, 0x77d: 0xa000,\n\t// Block 0x1e, offset 0x780\n\t0x780: 0x3c5a, 0x781: 0x3c61, 0x782: 0xa000, 0x783: 0xa000, 0x784: 0x3c76, 0x785: 0x3c7d,\n\t0x786: 0xa000, 0x787: 0xa000, 0x788: 0x3c84, 0x789: 0x3c8b,\n\t0x791: 0xa000,\n\t0x792: 0xa000,\n\t0x7a2: 0xa000,\n\t0x7a8: 0xa000, 0x7a9: 0xa000,\n\t0x7ab: 0xa000, 0x7ac: 0x3ca0, 0x7ad: 0x3ca7, 0x7ae: 0x3cae, 0x7af: 0x3cb5,\n\t0x7b2: 0xa000, 0x7b3: 0xa000, 0x7b4: 0xa000, 0x7b5: 0xa000,\n\t// Block 0x1f, offset 0x7c0\n\t0x7e0: 0x0023, 0x7e1: 0x0025, 0x7e2: 0x0027, 0x7e3: 0x0029,\n\t0x7e4: 0x002b, 0x7e5: 0x002d, 0x7e6: 0x002f, 0x7e7: 0x0031, 0x7e8: 0x0033, 0x7e9: 0x1882,\n\t0x7ea: 0x1885, 0x7eb: 0x1888, 0x7ec: 0x188b, 0x7ed: 0x188e, 0x7ee: 0x1891, 0x7ef: 0x1894,\n\t0x7f0: 0x1897, 0x7f1: 0x189a, 0x7f2: 0x189d, 0x7f3: 0x18a6, 0x7f4: 0x1a68, 0x7f5: 0x1a6c,\n\t0x7f6: 0x1a70, 0x7f7: 0x1a74, 0x7f8: 0x1a78, 0x7f9: 0x1a7c, 0x7fa: 0x1a80, 0x7fb: 0x1a84,\n\t0x7fc: 0x1a88, 0x7fd: 0x1c80, 0x7fe: 0x1c85, 0x7ff: 0x1c8a,\n\t// Block 0x20, offset 0x800\n\t0x800: 0x1c8f, 0x801: 0x1c94, 0x802: 0x1c99, 0x803: 0x1c9e, 0x804: 0x1ca3, 0x805: 0x1ca8,\n\t0x806: 0x1cad, 0x807: 0x1cb2, 0x808: 0x187f, 0x809: 0x18a3, 0x80a: 0x18c7, 0x80b: 0x18eb,\n\t0x80c: 0x190f, 0x80d: 0x1918, 0x80e: 0x191e, 0x80f: 0x1924, 0x810: 0x192a, 0x811: 0x1b60,\n\t0x812: 0x1b64, 0x813: 0x1b68, 0x814: 0x1b6c, 0x815: 0x1b70, 0x816: 0x1b74, 0x817: 0x1b78,\n\t0x818: 0x1b7c, 0x819: 0x1b80, 0x81a: 0x1b84, 0x81b: 0x1b88, 0x81c: 0x1af4, 0x81d: 0x1af8,\n\t0x81e: 0x1afc, 0x81f: 0x1b00, 0x820: 0x1b04, 0x821: 0x1b08, 0x822: 0x1b0c, 0x823: 0x1b10,\n\t0x824: 0x1b14, 0x825: 0x1b18, 0x826: 0x1b1c, 0x827: 0x1b20, 0x828: 0x1b24, 0x829: 0x1b28,\n\t0x82a: 0x1b2c, 0x82b: 0x1b30, 0x82c: 0x1b34, 0x82d: 0x1b38, 0x82e: 0x1b3c, 0x82f: 0x1b40,\n\t0x830: 0x1b44, 0x831: 0x1b48, 0x832: 0x1b4c, 0x833: 0x1b50, 0x834: 0x1b54, 0x835: 0x1b58,\n\t0x836: 0x0043, 0x837: 0x0045, 0x838: 0x0047, 0x839: 0x0049, 0x83a: 0x004b, 0x83b: 0x004d,\n\t0x83c: 0x004f, 0x83d: 0x0051, 0x83e: 0x0053, 0x83f: 0x0055,\n\t// Block 0x21, offset 0x840\n\t0x840: 0x06bf, 0x841: 0x06e3, 0x842: 0x06ef, 0x843: 0x06ff, 0x844: 0x0707, 0x845: 0x0713,\n\t0x846: 0x071b, 0x847: 0x0723, 0x848: 0x072f, 0x849: 0x0783, 0x84a: 0x079b, 0x84b: 0x07ab,\n\t0x84c: 0x07bb, 0x84d: 0x07cb, 0x84e: 0x07db, 0x84f: 0x07fb, 0x850: 0x07ff, 0x851: 0x0803,\n\t0x852: 0x0837, 0x853: 0x085f, 0x854: 0x086f, 0x855: 0x0877, 0x856: 0x087b, 0x857: 0x0887,\n\t0x858: 0x08a3, 0x859: 0x08a7, 0x85a: 0x08bf, 0x85b: 0x08c3, 0x85c: 0x08cb, 0x85d: 0x08db,\n\t0x85e: 0x0977, 0x85f: 0x098b, 0x860: 0x09cb, 0x861: 0x09df, 0x862: 0x09e7, 0x863: 0x09eb,\n\t0x864: 0x09fb, 0x865: 0x0a17, 0x866: 0x0a43, 0x867: 0x0a4f, 0x868: 0x0a6f, 0x869: 0x0a7b,\n\t0x86a: 0x0a7f, 0x86b: 0x0a83, 0x86c: 0x0a9b, 0x86d: 0x0a9f, 0x86e: 0x0acb, 0x86f: 0x0ad7,\n\t0x870: 0x0adf, 0x871: 0x0ae7, 0x872: 0x0af7, 0x873: 0x0aff, 0x874: 0x0b07, 0x875: 0x0b33,\n\t0x876: 0x0b37, 0x877: 0x0b3f, 0x878: 0x0b43, 0x879: 0x0b4b, 0x87a: 0x0b53, 0x87b: 0x0b63,\n\t0x87c: 0x0b7f, 0x87d: 0x0bf7, 0x87e: 0x0c0b, 0x87f: 0x0c0f,\n\t// Block 0x22, offset 0x880\n\t0x880: 0x0c8f, 0x881: 0x0c93, 0x882: 0x0ca7, 0x883: 0x0cab, 0x884: 0x0cb3, 0x885: 0x0cbb,\n\t0x886: 0x0cc3, 0x887: 0x0ccf, 0x888: 0x0cf7, 0x889: 0x0d07, 0x88a: 0x0d1b, 0x88b: 0x0d8b,\n\t0x88c: 0x0d97, 0x88d: 0x0da7, 0x88e: 0x0db3, 0x88f: 0x0dbf, 0x890: 0x0dc7, 0x891: 0x0dcb,\n\t0x892: 0x0dcf, 0x893: 0x0dd3, 0x894: 0x0dd7, 0x895: 0x0e8f, 0x896: 0x0ed7, 0x897: 0x0ee3,\n\t0x898: 0x0ee7, 0x899: 0x0eeb, 0x89a: 0x0eef, 0x89b: 0x0ef7, 0x89c: 0x0efb, 0x89d: 0x0f0f,\n\t0x89e: 0x0f2b, 0x89f: 0x0f33, 0x8a0: 0x0f73, 0x8a1: 0x0f77, 0x8a2: 0x0f7f, 0x8a3: 0x0f83,\n\t0x8a4: 0x0f8b, 0x8a5: 0x0f8f, 0x8a6: 0x0fb3, 0x8a7: 0x0fb7, 0x8a8: 0x0fd3, 0x8a9: 0x0fd7,\n\t0x8aa: 0x0fdb, 0x8ab: 0x0fdf, 0x8ac: 0x0ff3, 0x8ad: 0x1017, 0x8ae: 0x101b, 0x8af: 0x101f,\n\t0x8b0: 0x1043, 0x8b1: 0x1083, 0x8b2: 0x1087, 0x8b3: 0x10a7, 0x8b4: 0x10b7, 0x8b5: 0x10bf,\n\t0x8b6: 0x10df, 0x8b7: 0x1103, 0x8b8: 0x1147, 0x8b9: 0x114f, 0x8ba: 0x1163, 0x8bb: 0x116f,\n\t0x8bc: 0x1177, 0x8bd: 0x117f, 0x8be: 0x1183, 0x8bf: 0x1187,\n\t// Block 0x23, offset 0x8c0\n\t0x8c0: 0x119f, 0x8c1: 0x11a3, 0x8c2: 0x11bf, 0x8c3: 0x11c7, 0x8c4: 0x11cf, 0x8c5: 0x11d3,\n\t0x8c6: 0x11df, 0x8c7: 0x11e7, 0x8c8: 0x11eb, 0x8c9: 0x11ef, 0x8ca: 0x11f7, 0x8cb: 0x11fb,\n\t0x8cc: 0x129b, 0x8cd: 0x12af, 0x8ce: 0x12e3, 0x8cf: 0x12e7, 0x8d0: 0x12ef, 0x8d1: 0x131b,\n\t0x8d2: 0x1323, 0x8d3: 0x132b, 0x8d4: 0x1333, 0x8d5: 0x136f, 0x8d6: 0x1373, 0x8d7: 0x137b,\n\t0x8d8: 0x137f, 0x8d9: 0x1383, 0x8da: 0x13af, 0x8db: 0x13b3, 0x8dc: 0x13bb, 0x8dd: 0x13cf,\n\t0x8de: 0x13d3, 0x8df: 0x13ef, 0x8e0: 0x13f7, 0x8e1: 0x13fb, 0x8e2: 0x141f, 0x8e3: 0x143f,\n\t0x8e4: 0x1453, 0x8e5: 0x1457, 0x8e6: 0x145f, 0x8e7: 0x148b, 0x8e8: 0x148f, 0x8e9: 0x149f,\n\t0x8ea: 0x14c3, 0x8eb: 0x14cf, 0x8ec: 0x14df, 0x8ed: 0x14f7, 0x8ee: 0x14ff, 0x8ef: 0x1503,\n\t0x8f0: 0x1507, 0x8f1: 0x150b, 0x8f2: 0x1517, 0x8f3: 0x151b, 0x8f4: 0x1523, 0x8f5: 0x153f,\n\t0x8f6: 0x1543, 0x8f7: 0x1547, 0x8f8: 0x155f, 0x8f9: 0x1563, 0x8fa: 0x156b, 0x8fb: 0x157f,\n\t0x8fc: 0x1583, 0x8fd: 0x1587, 0x8fe: 0x158f, 0x8ff: 0x1593,\n\t// Block 0x24, offset 0x900\n\t0x906: 0xa000, 0x90b: 0xa000,\n\t0x90c: 0x3f08, 0x90d: 0xa000, 0x90e: 0x3f10, 0x90f: 0xa000, 0x910: 0x3f18, 0x911: 0xa000,\n\t0x912: 0x3f20, 0x913: 0xa000, 0x914: 0x3f28, 0x915: 0xa000, 0x916: 0x3f30, 0x917: 0xa000,\n\t0x918: 0x3f38, 0x919: 0xa000, 0x91a: 0x3f40, 0x91b: 0xa000, 0x91c: 0x3f48, 0x91d: 0xa000,\n\t0x91e: 0x3f50, 0x91f: 0xa000, 0x920: 0x3f58, 0x921: 0xa000, 0x922: 0x3f60,\n\t0x924: 0xa000, 0x925: 0x3f68, 0x926: 0xa000, 0x927: 0x3f70, 0x928: 0xa000, 0x929: 0x3f78,\n\t0x92f: 0xa000,\n\t0x930: 0x3f80, 0x931: 0x3f88, 0x932: 0xa000, 0x933: 0x3f90, 0x934: 0x3f98, 0x935: 0xa000,\n\t0x936: 0x3fa0, 0x937: 0x3fa8, 0x938: 0xa000, 0x939: 0x3fb0, 0x93a: 0x3fb8, 0x93b: 0xa000,\n\t0x93c: 0x3fc0, 0x93d: 0x3fc8,\n\t// Block 0x25, offset 0x940\n\t0x954: 0x3f00,\n\t0x959: 0x9903, 0x95a: 0x9903, 0x95b: 0x42dc, 0x95c: 0x42e2, 0x95d: 0xa000,\n\t0x95e: 0x3fd0, 0x95f: 0x26b4,\n\t0x966: 0xa000,\n\t0x96b: 0xa000, 0x96c: 0x3fe0, 0x96d: 0xa000, 0x96e: 0x3fe8, 0x96f: 0xa000,\n\t0x970: 0x3ff0, 0x971: 0xa000, 0x972: 0x3ff8, 0x973: 0xa000, 0x974: 0x4000, 0x975: 0xa000,\n\t0x976: 0x4008, 0x977: 0xa000, 0x978: 0x4010, 0x979: 0xa000, 0x97a: 0x4018, 0x97b: 0xa000,\n\t0x97c: 0x4020, 0x97d: 0xa000, 0x97e: 0x4028, 0x97f: 0xa000,\n\t// Block 0x26, offset 0x980\n\t0x980: 0x4030, 0x981: 0xa000, 0x982: 0x4038, 0x984: 0xa000, 0x985: 0x4040,\n\t0x986: 0xa000, 0x987: 0x4048, 0x988: 0xa000, 0x989: 0x4050,\n\t0x98f: 0xa000, 0x990: 0x4058, 0x991: 0x4060,\n\t0x992: 0xa000, 0x993: 0x4068, 0x994: 0x4070, 0x995: 0xa000, 0x996: 0x4078, 0x997: 0x4080,\n\t0x998: 0xa000, 0x999: 0x4088, 0x99a: 0x4090, 0x99b: 0xa000, 0x99c: 0x4098, 0x99d: 0x40a0,\n\t0x9af: 0xa000,\n\t0x9b0: 0xa000, 0x9b1: 0xa000, 0x9b2: 0xa000, 0x9b4: 0x3fd8,\n\t0x9b7: 0x40a8, 0x9b8: 0x40b0, 0x9b9: 0x40b8, 0x9ba: 0x40c0,\n\t0x9bd: 0xa000, 0x9be: 0x40c8, 0x9bf: 0x26c9,\n\t// Block 0x27, offset 0x9c0\n\t0x9c0: 0x0367, 0x9c1: 0x032b, 0x9c2: 0x032f, 0x9c3: 0x0333, 0x9c4: 0x037b, 0x9c5: 0x0337,\n\t0x9c6: 0x033b, 0x9c7: 0x033f, 0x9c8: 0x0343, 0x9c9: 0x0347, 0x9ca: 0x034b, 0x9cb: 0x034f,\n\t0x9cc: 0x0353, 0x9cd: 0x0357, 0x9ce: 0x035b, 0x9cf: 0x49bd, 0x9d0: 0x49c3, 0x9d1: 0x49c9,\n\t0x9d2: 0x49cf, 0x9d3: 0x49d5, 0x9d4: 0x49db, 0x9d5: 0x49e1, 0x9d6: 0x49e7, 0x9d7: 0x49ed,\n\t0x9d8: 0x49f3, 0x9d9: 0x49f9, 0x9da: 0x49ff, 0x9db: 0x4a05, 0x9dc: 0x4a0b, 0x9dd: 0x4a11,\n\t0x9de: 0x4a17, 0x9df: 0x4a1d, 0x9e0: 0x4a23, 0x9e1: 0x4a29, 0x9e2: 0x4a2f, 0x9e3: 0x4a35,\n\t0x9e4: 0x03c3, 0x9e5: 0x035f, 0x9e6: 0x0363, 0x9e7: 0x03e7, 0x9e8: 0x03eb, 0x9e9: 0x03ef,\n\t0x9ea: 0x03f3, 0x9eb: 0x03f7, 0x9ec: 0x03fb, 0x9ed: 0x03ff, 0x9ee: 0x036b, 0x9ef: 0x0403,\n\t0x9f0: 0x0407, 0x9f1: 0x036f, 0x9f2: 0x0373, 0x9f3: 0x0377, 0x9f4: 0x037f, 0x9f5: 0x0383,\n\t0x9f6: 0x0387, 0x9f7: 0x038b, 0x9f8: 0x038f, 0x9f9: 0x0393, 0x9fa: 0x0397, 0x9fb: 0x039b,\n\t0x9fc: 0x039f, 0x9fd: 0x03a3, 0x9fe: 0x03a7, 0x9ff: 0x03ab,\n\t// Block 0x28, offset 0xa00\n\t0xa00: 0x03af, 0xa01: 0x03b3, 0xa02: 0x040b, 0xa03: 0x040f, 0xa04: 0x03b7, 0xa05: 0x03bb,\n\t0xa06: 0x03bf, 0xa07: 0x03c7, 0xa08: 0x03cb, 0xa09: 0x03cf, 0xa0a: 0x03d3, 0xa0b: 0x03d7,\n\t0xa0c: 0x03db, 0xa0d: 0x03df, 0xa0e: 0x03e3,\n\t0xa12: 0x06bf, 0xa13: 0x071b, 0xa14: 0x06cb, 0xa15: 0x097b, 0xa16: 0x06cf, 0xa17: 0x06e7,\n\t0xa18: 0x06d3, 0xa19: 0x0f93, 0xa1a: 0x0707, 0xa1b: 0x06db, 0xa1c: 0x06c3, 0xa1d: 0x09ff,\n\t0xa1e: 0x098f, 0xa1f: 0x072f,\n\t// Block 0x29, offset 0xa40\n\t0xa40: 0x2054, 0xa41: 0x205a, 0xa42: 0x2060, 0xa43: 0x2066, 0xa44: 0x206c, 0xa45: 0x2072,\n\t0xa46: 0x2078, 0xa47: 0x207e, 0xa48: 0x2084, 0xa49: 0x208a, 0xa4a: 0x2090, 0xa4b: 0x2096,\n\t0xa4c: 0x209c, 0xa4d: 0x20a2, 0xa4e: 0x2726, 0xa4f: 0x272f, 0xa50: 0x2738, 0xa51: 0x2741,\n\t0xa52: 0x274a, 0xa53: 0x2753, 0xa54: 0x275c, 0xa55: 0x2765, 0xa56: 0x276e, 0xa57: 0x2780,\n\t0xa58: 0x2789, 0xa59: 0x2792, 0xa5a: 0x279b, 0xa5b: 0x27a4, 0xa5c: 0x2777, 0xa5d: 0x2bac,\n\t0xa5e: 0x2aed, 0xa60: 0x20a8, 0xa61: 0x20c0, 0xa62: 0x20b4, 0xa63: 0x2108,\n\t0xa64: 0x20c6, 0xa65: 0x20e4, 0xa66: 0x20ae, 0xa67: 0x20de, 0xa68: 0x20ba, 0xa69: 0x20f0,\n\t0xa6a: 0x2120, 0xa6b: 0x213e, 0xa6c: 0x2138, 0xa6d: 0x212c, 0xa6e: 0x217a, 0xa6f: 0x210e,\n\t0xa70: 0x211a, 0xa71: 0x2132, 0xa72: 0x2126, 0xa73: 0x2150, 0xa74: 0x20fc, 0xa75: 0x2144,\n\t0xa76: 0x216e, 0xa77: 0x2156, 0xa78: 0x20ea, 0xa79: 0x20cc, 0xa7a: 0x2102, 0xa7b: 0x2114,\n\t0xa7c: 0x214a, 0xa7d: 0x20d2, 0xa7e: 0x2174, 0xa7f: 0x20f6,\n\t// Block 0x2a, offset 0xa80\n\t0xa80: 0x215c, 0xa81: 0x20d8, 0xa82: 0x2162, 0xa83: 0x2168, 0xa84: 0x092f, 0xa85: 0x0b03,\n\t0xa86: 0x0ca7, 0xa87: 0x10c7,\n\t0xa90: 0x1bc4, 0xa91: 0x18a9,\n\t0xa92: 0x18ac, 0xa93: 0x18af, 0xa94: 0x18b2, 0xa95: 0x18b5, 0xa96: 0x18b8, 0xa97: 0x18bb,\n\t0xa98: 0x18be, 0xa99: 0x18c1, 0xa9a: 0x18ca, 0xa9b: 0x18cd, 0xa9c: 0x18d0, 0xa9d: 0x18d3,\n\t0xa9e: 0x18d6, 0xa9f: 0x18d9, 0xaa0: 0x0313, 0xaa1: 0x031b, 0xaa2: 0x031f, 0xaa3: 0x0327,\n\t0xaa4: 0x032b, 0xaa5: 0x032f, 0xaa6: 0x0337, 0xaa7: 0x033f, 0xaa8: 0x0343, 0xaa9: 0x034b,\n\t0xaaa: 0x034f, 0xaab: 0x0353, 0xaac: 0x0357, 0xaad: 0x035b, 0xaae: 0x2e18, 0xaaf: 0x2e20,\n\t0xab0: 0x2e28, 0xab1: 0x2e30, 0xab2: 0x2e38, 0xab3: 0x2e40, 0xab4: 0x2e48, 0xab5: 0x2e50,\n\t0xab6: 0x2e60, 0xab7: 0x2e68, 0xab8: 0x2e70, 0xab9: 0x2e78, 0xaba: 0x2e80, 0xabb: 0x2e88,\n\t0xabc: 0x2ed3, 0xabd: 0x2e9b, 0xabe: 0x2e58,\n\t// Block 0x2b, offset 0xac0\n\t0xac0: 0x06bf, 0xac1: 0x071b, 0xac2: 0x06cb, 0xac3: 0x097b, 0xac4: 0x071f, 0xac5: 0x07af,\n\t0xac6: 0x06c7, 0xac7: 0x07ab, 0xac8: 0x070b, 0xac9: 0x0887, 0xaca: 0x0d07, 0xacb: 0x0e8f,\n\t0xacc: 0x0dd7, 0xacd: 0x0d1b, 0xace: 0x145f, 0xacf: 0x098b, 0xad0: 0x0ccf, 0xad1: 0x0d4b,\n\t0xad2: 0x0d0b, 0xad3: 0x104b, 0xad4: 0x08fb, 0xad5: 0x0f03, 0xad6: 0x1387, 0xad7: 0x105f,\n\t0xad8: 0x0843, 0xad9: 0x108f, 0xada: 0x0f9b, 0xadb: 0x0a17, 0xadc: 0x140f, 0xadd: 0x077f,\n\t0xade: 0x08ab, 0xadf: 0x0df7, 0xae0: 0x1527, 0xae1: 0x0743, 0xae2: 0x07d3, 0xae3: 0x0d9b,\n\t0xae4: 0x06cf, 0xae5: 0x06e7, 0xae6: 0x06d3, 0xae7: 0x0adb, 0xae8: 0x08ef, 0xae9: 0x087f,\n\t0xaea: 0x0a57, 0xaeb: 0x0a4b, 0xaec: 0x0feb, 0xaed: 0x073f, 0xaee: 0x139b, 0xaef: 0x089b,\n\t0xaf0: 0x09f3, 0xaf1: 0x18dc, 0xaf2: 0x18df, 0xaf3: 0x18e2, 0xaf4: 0x18e5, 0xaf5: 0x18ee,\n\t0xaf6: 0x18f1, 0xaf7: 0x18f4, 0xaf8: 0x18f7, 0xaf9: 0x18fa, 0xafa: 0x18fd, 0xafb: 0x1900,\n\t0xafc: 0x1903, 0xafd: 0x1906, 0xafe: 0x1909, 0xaff: 0x1912,\n\t// Block 0x2c, offset 0xb00\n\t0xb00: 0x1cc6, 0xb01: 0x1cd5, 0xb02: 0x1ce4, 0xb03: 0x1cf3, 0xb04: 0x1d02, 0xb05: 0x1d11,\n\t0xb06: 0x1d20, 0xb07: 0x1d2f, 0xb08: 0x1d3e, 0xb09: 0x218c, 0xb0a: 0x219e, 0xb0b: 0x21b0,\n\t0xb0c: 0x1954, 0xb0d: 0x1c04, 0xb0e: 0x19d2, 0xb0f: 0x1ba8, 0xb10: 0x04cb, 0xb11: 0x04d3,\n\t0xb12: 0x04db, 0xb13: 0x04e3, 0xb14: 0x04eb, 0xb15: 0x04ef, 0xb16: 0x04f3, 0xb17: 0x04f7,\n\t0xb18: 0x04fb, 0xb19: 0x04ff, 0xb1a: 0x0503, 0xb1b: 0x0507, 0xb1c: 0x050b, 0xb1d: 0x050f,\n\t0xb1e: 0x0513, 0xb1f: 0x0517, 0xb20: 0x051b, 0xb21: 0x0523, 0xb22: 0x0527, 0xb23: 0x052b,\n\t0xb24: 0x052f, 0xb25: 0x0533, 0xb26: 0x0537, 0xb27: 0x053b, 0xb28: 0x053f, 0xb29: 0x0543,\n\t0xb2a: 0x0547, 0xb2b: 0x054b, 0xb2c: 0x054f, 0xb2d: 0x0553, 0xb2e: 0x0557, 0xb2f: 0x055b,\n\t0xb30: 0x055f, 0xb31: 0x0563, 0xb32: 0x0567, 0xb33: 0x056f, 0xb34: 0x0577, 0xb35: 0x057f,\n\t0xb36: 0x0583, 0xb37: 0x0587, 0xb38: 0x058b, 0xb39: 0x058f, 0xb3a: 0x0593, 0xb3b: 0x0597,\n\t0xb3c: 0x059b, 0xb3d: 0x059f, 0xb3e: 0x05a3,\n\t// Block 0x2d, offset 0xb40\n\t0xb40: 0x2b0c, 0xb41: 0x29a8, 0xb42: 0x2b1c, 0xb43: 0x2880, 0xb44: 0x2ee4, 0xb45: 0x288a,\n\t0xb46: 0x2894, 0xb47: 0x2f28, 0xb48: 0x29b5, 0xb49: 0x289e, 0xb4a: 0x28a8, 0xb4b: 0x28b2,\n\t0xb4c: 0x29dc, 0xb4d: 0x29e9, 0xb4e: 0x29c2, 0xb4f: 0x29cf, 0xb50: 0x2ea9, 0xb51: 0x29f6,\n\t0xb52: 0x2a03, 0xb53: 0x2bbe, 0xb54: 0x26bb, 0xb55: 0x2bd1, 0xb56: 0x2be4, 0xb57: 0x2b2c,\n\t0xb58: 0x2a10, 0xb59: 0x2bf7, 0xb5a: 0x2c0a, 0xb5b: 0x2a1d, 0xb5c: 0x28bc, 0xb5d: 0x28c6,\n\t0xb5e: 0x2eb7, 0xb5f: 0x2a2a, 0xb60: 0x2b3c, 0xb61: 0x2ef5, 0xb62: 0x28d0, 0xb63: 0x28da,\n\t0xb64: 0x2a37, 0xb65: 0x28e4, 0xb66: 0x28ee, 0xb67: 0x26d0, 0xb68: 0x26d7, 0xb69: 0x28f8,\n\t0xb6a: 0x2902, 0xb6b: 0x2c1d, 0xb6c: 0x2a44, 0xb6d: 0x2b4c, 0xb6e: 0x2c30, 0xb6f: 0x2a51,\n\t0xb70: 0x2916, 0xb71: 0x290c, 0xb72: 0x2f3c, 0xb73: 0x2a5e, 0xb74: 0x2c43, 0xb75: 0x2920,\n\t0xb76: 0x2b5c, 0xb77: 0x292a, 0xb78: 0x2a78, 0xb79: 0x2934, 0xb7a: 0x2a85, 0xb7b: 0x2f06,\n\t0xb7c: 0x2a6b, 0xb7d: 0x2b6c, 0xb7e: 0x2a92, 0xb7f: 0x26de,\n\t// Block 0x2e, offset 0xb80\n\t0xb80: 0x2f17, 0xb81: 0x293e, 0xb82: 0x2948, 0xb83: 0x2a9f, 0xb84: 0x2952, 0xb85: 0x295c,\n\t0xb86: 0x2966, 0xb87: 0x2b7c, 0xb88: 0x2aac, 0xb89: 0x26e5, 0xb8a: 0x2c56, 0xb8b: 0x2e90,\n\t0xb8c: 0x2b8c, 0xb8d: 0x2ab9, 0xb8e: 0x2ec5, 0xb8f: 0x2970, 0xb90: 0x297a, 0xb91: 0x2ac6,\n\t0xb92: 0x26ec, 0xb93: 0x2ad3, 0xb94: 0x2b9c, 0xb95: 0x26f3, 0xb96: 0x2c69, 0xb97: 0x2984,\n\t0xb98: 0x1cb7, 0xb99: 0x1ccb, 0xb9a: 0x1cda, 0xb9b: 0x1ce9, 0xb9c: 0x1cf8, 0xb9d: 0x1d07,\n\t0xb9e: 0x1d16, 0xb9f: 0x1d25, 0xba0: 0x1d34, 0xba1: 0x1d43, 0xba2: 0x2192, 0xba3: 0x21a4,\n\t0xba4: 0x21b6, 0xba5: 0x21c2, 0xba6: 0x21ce, 0xba7: 0x21da, 0xba8: 0x21e6, 0xba9: 0x21f2,\n\t0xbaa: 0x21fe, 0xbab: 0x220a, 0xbac: 0x2246, 0xbad: 0x2252, 0xbae: 0x225e, 0xbaf: 0x226a,\n\t0xbb0: 0x2276, 0xbb1: 0x1c14, 0xbb2: 0x19c6, 0xbb3: 0x1936, 0xbb4: 0x1be4, 0xbb5: 0x1a47,\n\t0xbb6: 0x1a56, 0xbb7: 0x19cc, 0xbb8: 0x1bfc, 0xbb9: 0x1c00, 0xbba: 0x1960, 0xbbb: 0x2701,\n\t0xbbc: 0x270f, 0xbbd: 0x26fa, 0xbbe: 0x2708, 0xbbf: 0x2ae0,\n\t// Block 0x2f, offset 0xbc0\n\t0xbc0: 0x1a4a, 0xbc1: 0x1a32, 0xbc2: 0x1c60, 0xbc3: 0x1a1a, 0xbc4: 0x19f3, 0xbc5: 0x1969,\n\t0xbc6: 0x1978, 0xbc7: 0x1948, 0xbc8: 0x1bf0, 0xbc9: 0x1d52, 0xbca: 0x1a4d, 0xbcb: 0x1a35,\n\t0xbcc: 0x1c64, 0xbcd: 0x1c70, 0xbce: 0x1a26, 0xbcf: 0x19fc, 0xbd0: 0x1957, 0xbd1: 0x1c1c,\n\t0xbd2: 0x1bb0, 0xbd3: 0x1b9c, 0xbd4: 0x1bcc, 0xbd5: 0x1c74, 0xbd6: 0x1a29, 0xbd7: 0x19c9,\n\t0xbd8: 0x19ff, 0xbd9: 0x19de, 0xbda: 0x1a41, 0xbdb: 0x1c78, 0xbdc: 0x1a2c, 0xbdd: 0x19c0,\n\t0xbde: 0x1a02, 0xbdf: 0x1c3c, 0xbe0: 0x1bf4, 0xbe1: 0x1a14, 0xbe2: 0x1c24, 0xbe3: 0x1c40,\n\t0xbe4: 0x1bf8, 0xbe5: 0x1a17, 0xbe6: 0x1c28, 0xbe7: 0x22e8, 0xbe8: 0x22fc, 0xbe9: 0x1996,\n\t0xbea: 0x1c20, 0xbeb: 0x1bb4, 0xbec: 0x1ba0, 0xbed: 0x1c48, 0xbee: 0x2716, 0xbef: 0x27ad,\n\t0xbf0: 0x1a59, 0xbf1: 0x1a44, 0xbf2: 0x1c7c, 0xbf3: 0x1a2f, 0xbf4: 0x1a50, 0xbf5: 0x1a38,\n\t0xbf6: 0x1c68, 0xbf7: 0x1a1d, 0xbf8: 0x19f6, 0xbf9: 0x1981, 0xbfa: 0x1a53, 0xbfb: 0x1a3b,\n\t0xbfc: 0x1c6c, 0xbfd: 0x1a20, 0xbfe: 0x19f9, 0xbff: 0x1984,\n\t// Block 0x30, offset 0xc00\n\t0xc00: 0x1c2c, 0xc01: 0x1bb8, 0xc02: 0x1d4d, 0xc03: 0x1939, 0xc04: 0x19ba, 0xc05: 0x19bd,\n\t0xc06: 0x22f5, 0xc07: 0x1b94, 0xc08: 0x19c3, 0xc09: 0x194b, 0xc0a: 0x19e1, 0xc0b: 0x194e,\n\t0xc0c: 0x19ea, 0xc0d: 0x196c, 0xc0e: 0x196f, 0xc0f: 0x1a05, 0xc10: 0x1a0b, 0xc11: 0x1a0e,\n\t0xc12: 0x1c30, 0xc13: 0x1a11, 0xc14: 0x1a23, 0xc15: 0x1c38, 0xc16: 0x1c44, 0xc17: 0x1990,\n\t0xc18: 0x1d57, 0xc19: 0x1bbc, 0xc1a: 0x1993, 0xc1b: 0x1a5c, 0xc1c: 0x19a5, 0xc1d: 0x19b4,\n\t0xc1e: 0x22e2, 0xc1f: 0x22dc, 0xc20: 0x1cc1, 0xc21: 0x1cd0, 0xc22: 0x1cdf, 0xc23: 0x1cee,\n\t0xc24: 0x1cfd, 0xc25: 0x1d0c, 0xc26: 0x1d1b, 0xc27: 0x1d2a, 0xc28: 0x1d39, 0xc29: 0x2186,\n\t0xc2a: 0x2198, 0xc2b: 0x21aa, 0xc2c: 0x21bc, 0xc2d: 0x21c8, 0xc2e: 0x21d4, 0xc2f: 0x21e0,\n\t0xc30: 0x21ec, 0xc31: 0x21f8, 0xc32: 0x2204, 0xc33: 0x2240, 0xc34: 0x224c, 0xc35: 0x2258,\n\t0xc36: 0x2264, 0xc37: 0x2270, 0xc38: 0x227c, 0xc39: 0x2282, 0xc3a: 0x2288, 0xc3b: 0x228e,\n\t0xc3c: 0x2294, 0xc3d: 0x22a6, 0xc3e: 0x22ac, 0xc3f: 0x1c10,\n\t// Block 0x31, offset 0xc40\n\t0xc40: 0x1377, 0xc41: 0x0cfb, 0xc42: 0x13d3, 0xc43: 0x139f, 0xc44: 0x0e57, 0xc45: 0x06eb,\n\t0xc46: 0x08df, 0xc47: 0x162b, 0xc48: 0x162b, 0xc49: 0x0a0b, 0xc4a: 0x145f, 0xc4b: 0x0943,\n\t0xc4c: 0x0a07, 0xc4d: 0x0bef, 0xc4e: 0x0fcf, 0xc4f: 0x115f, 0xc50: 0x1297, 0xc51: 0x12d3,\n\t0xc52: 0x1307, 0xc53: 0x141b, 0xc54: 0x0d73, 0xc55: 0x0dff, 0xc56: 0x0eab, 0xc57: 0x0f43,\n\t0xc58: 0x125f, 0xc59: 0x1447, 0xc5a: 0x1573, 0xc5b: 0x070f, 0xc5c: 0x08b3, 0xc5d: 0x0d87,\n\t0xc5e: 0x0ecf, 0xc5f: 0x1293, 0xc60: 0x15c3, 0xc61: 0x0ab3, 0xc62: 0x0e77, 0xc63: 0x1283,\n\t0xc64: 0x1317, 0xc65: 0x0c23, 0xc66: 0x11bb, 0xc67: 0x12df, 0xc68: 0x0b1f, 0xc69: 0x0d0f,\n\t0xc6a: 0x0e17, 0xc6b: 0x0f1b, 0xc6c: 0x1427, 0xc6d: 0x074f, 0xc6e: 0x07e7, 0xc6f: 0x0853,\n\t0xc70: 0x0c8b, 0xc71: 0x0d7f, 0xc72: 0x0ecb, 0xc73: 0x0fef, 0xc74: 0x1177, 0xc75: 0x128b,\n\t0xc76: 0x12a3, 0xc77: 0x13c7, 0xc78: 0x14ef, 0xc79: 0x15a3, 0xc7a: 0x15bf, 0xc7b: 0x102b,\n\t0xc7c: 0x106b, 0xc7d: 0x1123, 0xc7e: 0x1243, 0xc7f: 0x147b,\n\t// Block 0x32, offset 0xc80\n\t0xc80: 0x15cb, 0xc81: 0x134b, 0xc82: 0x09c7, 0xc83: 0x0b3b, 0xc84: 0x10db, 0xc85: 0x119b,\n\t0xc86: 0x0eff, 0xc87: 0x1033, 0xc88: 0x1397, 0xc89: 0x14e7, 0xc8a: 0x09c3, 0xc8b: 0x0a8f,\n\t0xc8c: 0x0d77, 0xc8d: 0x0e2b, 0xc8e: 0x0e5f, 0xc8f: 0x1113, 0xc90: 0x113b, 0xc91: 0x14a7,\n\t0xc92: 0x084f, 0xc93: 0x11a7, 0xc94: 0x07f3, 0xc95: 0x07ef, 0xc96: 0x1097, 0xc97: 0x1127,\n\t0xc98: 0x125b, 0xc99: 0x14af, 0xc9a: 0x1367, 0xc9b: 0x0c27, 0xc9c: 0x0d73, 0xc9d: 0x1357,\n\t0xc9e: 0x06f7, 0xc9f: 0x0a63, 0xca0: 0x0b93, 0xca1: 0x0f2f, 0xca2: 0x0faf, 0xca3: 0x0873,\n\t0xca4: 0x103b, 0xca5: 0x075f, 0xca6: 0x0b77, 0xca7: 0x06d7, 0xca8: 0x0deb, 0xca9: 0x0ca3,\n\t0xcaa: 0x110f, 0xcab: 0x08c7, 0xcac: 0x09b3, 0xcad: 0x0ffb, 0xcae: 0x1263, 0xcaf: 0x133b,\n\t0xcb0: 0x0db7, 0xcb1: 0x13f7, 0xcb2: 0x0de3, 0xcb3: 0x0c37, 0xcb4: 0x121b, 0xcb5: 0x0c57,\n\t0xcb6: 0x0fab, 0xcb7: 0x072b, 0xcb8: 0x07a7, 0xcb9: 0x07eb, 0xcba: 0x0d53, 0xcbb: 0x10fb,\n\t0xcbc: 0x11f3, 0xcbd: 0x1347, 0xcbe: 0x145b, 0xcbf: 0x085b,\n\t// Block 0x33, offset 0xcc0\n\t0xcc0: 0x090f, 0xcc1: 0x0a17, 0xcc2: 0x0b2f, 0xcc3: 0x0cbf, 0xcc4: 0x0e7b, 0xcc5: 0x103f,\n\t0xcc6: 0x1497, 0xcc7: 0x157b, 0xcc8: 0x15cf, 0xcc9: 0x15e7, 0xcca: 0x0837, 0xccb: 0x0cf3,\n\t0xccc: 0x0da3, 0xccd: 0x13eb, 0xcce: 0x0afb, 0xccf: 0x0bd7, 0xcd0: 0x0bf3, 0xcd1: 0x0c83,\n\t0xcd2: 0x0e6b, 0xcd3: 0x0eb7, 0xcd4: 0x0f67, 0xcd5: 0x108b, 0xcd6: 0x112f, 0xcd7: 0x1193,\n\t0xcd8: 0x13db, 0xcd9: 0x126b, 0xcda: 0x1403, 0xcdb: 0x147f, 0xcdc: 0x080f, 0xcdd: 0x083b,\n\t0xcde: 0x0923, 0xcdf: 0x0ea7, 0xce0: 0x12f3, 0xce1: 0x133b, 0xce2: 0x0b1b, 0xce3: 0x0b8b,\n\t0xce4: 0x0c4f, 0xce5: 0x0daf, 0xce6: 0x10d7, 0xce7: 0x0f23, 0xce8: 0x073b, 0xce9: 0x097f,\n\t0xcea: 0x0a63, 0xceb: 0x0ac7, 0xcec: 0x0b97, 0xced: 0x0f3f, 0xcee: 0x0f5b, 0xcef: 0x116b,\n\t0xcf0: 0x118b, 0xcf1: 0x1463, 0xcf2: 0x14e3, 0xcf3: 0x14f3, 0xcf4: 0x152f, 0xcf5: 0x0753,\n\t0xcf6: 0x107f, 0xcf7: 0x144f, 0xcf8: 0x14cb, 0xcf9: 0x0baf, 0xcfa: 0x0717, 0xcfb: 0x0777,\n\t0xcfc: 0x0a67, 0xcfd: 0x0a87, 0xcfe: 0x0caf, 0xcff: 0x0d73,\n\t// Block 0x34, offset 0xd00\n\t0xd00: 0x0ec3, 0xd01: 0x0fcb, 0xd02: 0x1277, 0xd03: 0x1417, 0xd04: 0x1623, 0xd05: 0x0ce3,\n\t0xd06: 0x14a3, 0xd07: 0x0833, 0xd08: 0x0d2f, 0xd09: 0x0d3b, 0xd0a: 0x0e0f, 0xd0b: 0x0e47,\n\t0xd0c: 0x0f4b, 0xd0d: 0x0fa7, 0xd0e: 0x1027, 0xd0f: 0x110b, 0xd10: 0x153b, 0xd11: 0x07af,\n\t0xd12: 0x0c03, 0xd13: 0x14b3, 0xd14: 0x0767, 0xd15: 0x0aab, 0xd16: 0x0e2f, 0xd17: 0x13df,\n\t0xd18: 0x0b67, 0xd19: 0x0bb7, 0xd1a: 0x0d43, 0xd1b: 0x0f2f, 0xd1c: 0x14bb, 0xd1d: 0x0817,\n\t0xd1e: 0x08ff, 0xd1f: 0x0a97, 0xd20: 0x0cd3, 0xd21: 0x0d1f, 0xd22: 0x0d5f, 0xd23: 0x0df3,\n\t0xd24: 0x0f47, 0xd25: 0x0fbb, 0xd26: 0x1157, 0xd27: 0x12f7, 0xd28: 0x1303, 0xd29: 0x1457,\n\t0xd2a: 0x14d7, 0xd2b: 0x0883, 0xd2c: 0x0e4b, 0xd2d: 0x0903, 0xd2e: 0x0ec7, 0xd2f: 0x0f6b,\n\t0xd30: 0x1287, 0xd31: 0x14bf, 0xd32: 0x15ab, 0xd33: 0x15d3, 0xd34: 0x0d37, 0xd35: 0x0e27,\n\t0xd36: 0x11c3, 0xd37: 0x10b7, 0xd38: 0x10c3, 0xd39: 0x10e7, 0xd3a: 0x0f17, 0xd3b: 0x0e9f,\n\t0xd3c: 0x1363, 0xd3d: 0x0733, 0xd3e: 0x122b, 0xd3f: 0x081b,\n\t// Block 0x35, offset 0xd40\n\t0xd40: 0x080b, 0xd41: 0x0b0b, 0xd42: 0x0c2b, 0xd43: 0x10f3, 0xd44: 0x0a53, 0xd45: 0x0e03,\n\t0xd46: 0x0cef, 0xd47: 0x13e7, 0xd48: 0x12e7, 0xd49: 0x14ab, 0xd4a: 0x1323, 0xd4b: 0x0b27,\n\t0xd4c: 0x0787, 0xd4d: 0x095b, 0xd50: 0x09af,\n\t0xd52: 0x0cdf, 0xd55: 0x07f7, 0xd56: 0x0f1f, 0xd57: 0x0fe3,\n\t0xd58: 0x1047, 0xd59: 0x1063, 0xd5a: 0x1067, 0xd5b: 0x107b, 0xd5c: 0x14fb, 0xd5d: 0x10eb,\n\t0xd5e: 0x116f, 0xd60: 0x128f, 0xd62: 0x1353,\n\t0xd65: 0x1407, 0xd66: 0x1433,\n\t0xd6a: 0x154f, 0xd6b: 0x1553, 0xd6c: 0x1557, 0xd6d: 0x15bb, 0xd6e: 0x142b, 0xd6f: 0x14c7,\n\t0xd70: 0x0757, 0xd71: 0x077b, 0xd72: 0x078f, 0xd73: 0x084b, 0xd74: 0x0857, 0xd75: 0x0897,\n\t0xd76: 0x094b, 0xd77: 0x0967, 0xd78: 0x096f, 0xd79: 0x09ab, 0xd7a: 0x09b7, 0xd7b: 0x0a93,\n\t0xd7c: 0x0a9b, 0xd7d: 0x0ba3, 0xd7e: 0x0bcb, 0xd7f: 0x0bd3,\n\t// Block 0x36, offset 0xd80\n\t0xd80: 0x0beb, 0xd81: 0x0c97, 0xd82: 0x0cc7, 0xd83: 0x0ce7, 0xd84: 0x0d57, 0xd85: 0x0e1b,\n\t0xd86: 0x0e37, 0xd87: 0x0e67, 0xd88: 0x0ebb, 0xd89: 0x0edb, 0xd8a: 0x0f4f, 0xd8b: 0x102f,\n\t0xd8c: 0x104b, 0xd8d: 0x1053, 0xd8e: 0x104f, 0xd8f: 0x1057, 0xd90: 0x105b, 0xd91: 0x105f,\n\t0xd92: 0x1073, 0xd93: 0x1077, 0xd94: 0x109b, 0xd95: 0x10af, 0xd96: 0x10cb, 0xd97: 0x112f,\n\t0xd98: 0x1137, 0xd99: 0x113f, 0xd9a: 0x1153, 0xd9b: 0x117b, 0xd9c: 0x11cb, 0xd9d: 0x11ff,\n\t0xd9e: 0x11ff, 0xd9f: 0x1267, 0xda0: 0x130f, 0xda1: 0x1327, 0xda2: 0x135b, 0xda3: 0x135f,\n\t0xda4: 0x13a3, 0xda5: 0x13a7, 0xda6: 0x13ff, 0xda7: 0x1407, 0xda8: 0x14db, 0xda9: 0x151f,\n\t0xdaa: 0x1537, 0xdab: 0x0b9b, 0xdac: 0x171e, 0xdad: 0x11e3,\n\t0xdb0: 0x06df, 0xdb1: 0x07e3, 0xdb2: 0x07a3, 0xdb3: 0x074b, 0xdb4: 0x078b, 0xdb5: 0x07b7,\n\t0xdb6: 0x0847, 0xdb7: 0x0863, 0xdb8: 0x094b, 0xdb9: 0x0937, 0xdba: 0x0947, 0xdbb: 0x0963,\n\t0xdbc: 0x09af, 0xdbd: 0x09bf, 0xdbe: 0x0a03, 0xdbf: 0x0a0f,\n\t// Block 0x37, offset 0xdc0\n\t0xdc0: 0x0a2b, 0xdc1: 0x0a3b, 0xdc2: 0x0b23, 0xdc3: 0x0b2b, 0xdc4: 0x0b5b, 0xdc5: 0x0b7b,\n\t0xdc6: 0x0bab, 0xdc7: 0x0bc3, 0xdc8: 0x0bb3, 0xdc9: 0x0bd3, 0xdca: 0x0bc7, 0xdcb: 0x0beb,\n\t0xdcc: 0x0c07, 0xdcd: 0x0c5f, 0xdce: 0x0c6b, 0xdcf: 0x0c73, 0xdd0: 0x0c9b, 0xdd1: 0x0cdf,\n\t0xdd2: 0x0d0f, 0xdd3: 0x0d13, 0xdd4: 0x0d27, 0xdd5: 0x0da7, 0xdd6: 0x0db7, 0xdd7: 0x0e0f,\n\t0xdd8: 0x0e5b, 0xdd9: 0x0e53, 0xdda: 0x0e67, 0xddb: 0x0e83, 0xddc: 0x0ebb, 0xddd: 0x1013,\n\t0xdde: 0x0edf, 0xddf: 0x0f13, 0xde0: 0x0f1f, 0xde1: 0x0f5f, 0xde2: 0x0f7b, 0xde3: 0x0f9f,\n\t0xde4: 0x0fc3, 0xde5: 0x0fc7, 0xde6: 0x0fe3, 0xde7: 0x0fe7, 0xde8: 0x0ff7, 0xde9: 0x100b,\n\t0xdea: 0x1007, 0xdeb: 0x1037, 0xdec: 0x10b3, 0xded: 0x10cb, 0xdee: 0x10e3, 0xdef: 0x111b,\n\t0xdf0: 0x112f, 0xdf1: 0x114b, 0xdf2: 0x117b, 0xdf3: 0x122f, 0xdf4: 0x1257, 0xdf5: 0x12cb,\n\t0xdf6: 0x1313, 0xdf7: 0x131f, 0xdf8: 0x1327, 0xdf9: 0x133f, 0xdfa: 0x1353, 0xdfb: 0x1343,\n\t0xdfc: 0x135b, 0xdfd: 0x1357, 0xdfe: 0x134f, 0xdff: 0x135f,\n\t// Block 0x38, offset 0xe00\n\t0xe00: 0x136b, 0xe01: 0x13a7, 0xe02: 0x13e3, 0xe03: 0x1413, 0xe04: 0x144b, 0xe05: 0x146b,\n\t0xe06: 0x14b7, 0xe07: 0x14db, 0xe08: 0x14fb, 0xe09: 0x150f, 0xe0a: 0x151f, 0xe0b: 0x152b,\n\t0xe0c: 0x1537, 0xe0d: 0x158b, 0xe0e: 0x162b, 0xe0f: 0x16b5, 0xe10: 0x16b0, 0xe11: 0x16e2,\n\t0xe12: 0x0607, 0xe13: 0x062f, 0xe14: 0x0633, 0xe15: 0x1764, 0xe16: 0x1791, 0xe17: 0x1809,\n\t0xe18: 0x1617, 0xe19: 0x1627,\n\t// Block 0x39, offset 0xe40\n\t0xe40: 0x19d5, 0xe41: 0x19d8, 0xe42: 0x19db, 0xe43: 0x1c08, 0xe44: 0x1c0c, 0xe45: 0x1a5f,\n\t0xe46: 0x1a5f,\n\t0xe53: 0x1d75, 0xe54: 0x1d66, 0xe55: 0x1d6b, 0xe56: 0x1d7a, 0xe57: 0x1d70,\n\t0xe5d: 0x4390,\n\t0xe5e: 0x8115, 0xe5f: 0x4402, 0xe60: 0x022d, 0xe61: 0x0215, 0xe62: 0x021e, 0xe63: 0x0221,\n\t0xe64: 0x0224, 0xe65: 0x0227, 0xe66: 0x022a, 0xe67: 0x0230, 0xe68: 0x0233, 0xe69: 0x0017,\n\t0xe6a: 0x43f0, 0xe6b: 0x43f6, 0xe6c: 0x44f4, 0xe6d: 0x44fc, 0xe6e: 0x4348, 0xe6f: 0x434e,\n\t0xe70: 0x4354, 0xe71: 0x435a, 0xe72: 0x4366, 0xe73: 0x436c, 0xe74: 0x4372, 0xe75: 0x437e,\n\t0xe76: 0x4384, 0xe78: 0x438a, 0xe79: 0x4396, 0xe7a: 0x439c, 0xe7b: 0x43a2,\n\t0xe7c: 0x43ae, 0xe7e: 0x43b4,\n\t// Block 0x3a, offset 0xe80\n\t0xe80: 0x43ba, 0xe81: 0x43c0, 0xe83: 0x43c6, 0xe84: 0x43cc,\n\t0xe86: 0x43d8, 0xe87: 0x43de, 0xe88: 0x43e4, 0xe89: 0x43ea, 0xe8a: 0x43fc, 0xe8b: 0x4378,\n\t0xe8c: 0x4360, 0xe8d: 0x43a8, 0xe8e: 0x43d2, 0xe8f: 0x1d7f, 0xe90: 0x0299, 0xe91: 0x0299,\n\t0xe92: 0x02a2, 0xe93: 0x02a2, 0xe94: 0x02a2, 0xe95: 0x02a2, 0xe96: 0x02a5, 0xe97: 0x02a5,\n\t0xe98: 0x02a5, 0xe99: 0x02a5, 0xe9a: 0x02ab, 0xe9b: 0x02ab, 0xe9c: 0x02ab, 0xe9d: 0x02ab,\n\t0xe9e: 0x029f, 0xe9f: 0x029f, 0xea0: 0x029f, 0xea1: 0x029f, 0xea2: 0x02a8, 0xea3: 0x02a8,\n\t0xea4: 0x02a8, 0xea5: 0x02a8, 0xea6: 0x029c, 0xea7: 0x029c, 0xea8: 0x029c, 0xea9: 0x029c,\n\t0xeaa: 0x02cf, 0xeab: 0x02cf, 0xeac: 0x02cf, 0xead: 0x02cf, 0xeae: 0x02d2, 0xeaf: 0x02d2,\n\t0xeb0: 0x02d2, 0xeb1: 0x02d2, 0xeb2: 0x02b1, 0xeb3: 0x02b1, 0xeb4: 0x02b1, 0xeb5: 0x02b1,\n\t0xeb6: 0x02ae, 0xeb7: 0x02ae, 0xeb8: 0x02ae, 0xeb9: 0x02ae, 0xeba: 0x02b4, 0xebb: 0x02b4,\n\t0xebc: 0x02b4, 0xebd: 0x02b4, 0xebe: 0x02b7, 0xebf: 0x02b7,\n\t// Block 0x3b, offset 0xec0\n\t0xec0: 0x02b7, 0xec1: 0x02b7, 0xec2: 0x02c0, 0xec3: 0x02c0, 0xec4: 0x02bd, 0xec5: 0x02bd,\n\t0xec6: 0x02c3, 0xec7: 0x02c3, 0xec8: 0x02ba, 0xec9: 0x02ba, 0xeca: 0x02c9, 0xecb: 0x02c9,\n\t0xecc: 0x02c6, 0xecd: 0x02c6, 0xece: 0x02d5, 0xecf: 0x02d5, 0xed0: 0x02d5, 0xed1: 0x02d5,\n\t0xed2: 0x02db, 0xed3: 0x02db, 0xed4: 0x02db, 0xed5: 0x02db, 0xed6: 0x02e1, 0xed7: 0x02e1,\n\t0xed8: 0x02e1, 0xed9: 0x02e1, 0xeda: 0x02de, 0xedb: 0x02de, 0xedc: 0x02de, 0xedd: 0x02de,\n\t0xede: 0x02e4, 0xedf: 0x02e4, 0xee0: 0x02e7, 0xee1: 0x02e7, 0xee2: 0x02e7, 0xee3: 0x02e7,\n\t0xee4: 0x446e, 0xee5: 0x446e, 0xee6: 0x02ed, 0xee7: 0x02ed, 0xee8: 0x02ed, 0xee9: 0x02ed,\n\t0xeea: 0x02ea, 0xeeb: 0x02ea, 0xeec: 0x02ea, 0xeed: 0x02ea, 0xeee: 0x0308, 0xeef: 0x0308,\n\t0xef0: 0x4468, 0xef1: 0x4468,\n\t// Block 0x3c, offset 0xf00\n\t0xf13: 0x02d8, 0xf14: 0x02d8, 0xf15: 0x02d8, 0xf16: 0x02d8, 0xf17: 0x02f6,\n\t0xf18: 0x02f6, 0xf19: 0x02f3, 0xf1a: 0x02f3, 0xf1b: 0x02f9, 0xf1c: 0x02f9, 0xf1d: 0x204f,\n\t0xf1e: 0x02ff, 0xf1f: 0x02ff, 0xf20: 0x02f0, 0xf21: 0x02f0, 0xf22: 0x02fc, 0xf23: 0x02fc,\n\t0xf24: 0x0305, 0xf25: 0x0305, 0xf26: 0x0305, 0xf27: 0x0305, 0xf28: 0x028d, 0xf29: 0x028d,\n\t0xf2a: 0x25aa, 0xf2b: 0x25aa, 0xf2c: 0x261a, 0xf2d: 0x261a, 0xf2e: 0x25e9, 0xf2f: 0x25e9,\n\t0xf30: 0x2605, 0xf31: 0x2605, 0xf32: 0x25fe, 0xf33: 0x25fe, 0xf34: 0x260c, 0xf35: 0x260c,\n\t0xf36: 0x2613, 0xf37: 0x2613, 0xf38: 0x2613, 0xf39: 0x25f0, 0xf3a: 0x25f0, 0xf3b: 0x25f0,\n\t0xf3c: 0x0302, 0xf3d: 0x0302, 0xf3e: 0x0302, 0xf3f: 0x0302,\n\t// Block 0x3d, offset 0xf40\n\t0xf40: 0x25b1, 0xf41: 0x25b8, 0xf42: 0x25d4, 0xf43: 0x25f0, 0xf44: 0x25f7, 0xf45: 0x1d89,\n\t0xf46: 0x1d8e, 0xf47: 0x1d93, 0xf48: 0x1da2, 0xf49: 0x1db1, 0xf4a: 0x1db6, 0xf4b: 0x1dbb,\n\t0xf4c: 0x1dc0, 0xf4d: 0x1dc5, 0xf4e: 0x1dd4, 0xf4f: 0x1de3, 0xf50: 0x1de8, 0xf51: 0x1ded,\n\t0xf52: 0x1dfc, 0xf53: 0x1e0b, 0xf54: 0x1e10, 0xf55: 0x1e15, 0xf56: 0x1e1a, 0xf57: 0x1e29,\n\t0xf58: 0x1e2e, 0xf59: 0x1e3d, 0xf5a: 0x1e42, 0xf5b: 0x1e47, 0xf5c: 0x1e56, 0xf5d: 0x1e5b,\n\t0xf5e: 0x1e60, 0xf5f: 0x1e6a, 0xf60: 0x1ea6, 0xf61: 0x1eb5, 0xf62: 0x1ec4, 0xf63: 0x1ec9,\n\t0xf64: 0x1ece, 0xf65: 0x1ed8, 0xf66: 0x1ee7, 0xf67: 0x1eec, 0xf68: 0x1efb, 0xf69: 0x1f00,\n\t0xf6a: 0x1f05, 0xf6b: 0x1f14, 0xf6c: 0x1f19, 0xf6d: 0x1f28, 0xf6e: 0x1f2d, 0xf6f: 0x1f32,\n\t0xf70: 0x1f37, 0xf71: 0x1f3c, 0xf72: 0x1f41, 0xf73: 0x1f46, 0xf74: 0x1f4b, 0xf75: 0x1f50,\n\t0xf76: 0x1f55, 0xf77: 0x1f5a, 0xf78: 0x1f5f, 0xf79: 0x1f64, 0xf7a: 0x1f69, 0xf7b: 0x1f6e,\n\t0xf7c: 0x1f73, 0xf7d: 0x1f78, 0xf7e: 0x1f7d, 0xf7f: 0x1f87,\n\t// Block 0x3e, offset 0xf80\n\t0xf80: 0x1f8c, 0xf81: 0x1f91, 0xf82: 0x1f96, 0xf83: 0x1fa0, 0xf84: 0x1fa5, 0xf85: 0x1faf,\n\t0xf86: 0x1fb4, 0xf87: 0x1fb9, 0xf88: 0x1fbe, 0xf89: 0x1fc3, 0xf8a: 0x1fc8, 0xf8b: 0x1fcd,\n\t0xf8c: 0x1fd2, 0xf8d: 0x1fd7, 0xf8e: 0x1fe6, 0xf8f: 0x1ff5, 0xf90: 0x1ffa, 0xf91: 0x1fff,\n\t0xf92: 0x2004, 0xf93: 0x2009, 0xf94: 0x200e, 0xf95: 0x2018, 0xf96: 0x201d, 0xf97: 0x2022,\n\t0xf98: 0x2031, 0xf99: 0x2040, 0xf9a: 0x2045, 0xf9b: 0x4420, 0xf9c: 0x4426, 0xf9d: 0x445c,\n\t0xf9e: 0x44b3, 0xf9f: 0x44ba, 0xfa0: 0x44c1, 0xfa1: 0x44c8, 0xfa2: 0x44cf, 0xfa3: 0x44d6,\n\t0xfa4: 0x25c6, 0xfa5: 0x25cd, 0xfa6: 0x25d4, 0xfa7: 0x25db, 0xfa8: 0x25f0, 0xfa9: 0x25f7,\n\t0xfaa: 0x1d98, 0xfab: 0x1d9d, 0xfac: 0x1da2, 0xfad: 0x1da7, 0xfae: 0x1db1, 0xfaf: 0x1db6,\n\t0xfb0: 0x1dca, 0xfb1: 0x1dcf, 0xfb2: 0x1dd4, 0xfb3: 0x1dd9, 0xfb4: 0x1de3, 0xfb5: 0x1de8,\n\t0xfb6: 0x1df2, 0xfb7: 0x1df7, 0xfb8: 0x1dfc, 0xfb9: 0x1e01, 0xfba: 0x1e0b, 0xfbb: 0x1e10,\n\t0xfbc: 0x1f3c, 0xfbd: 0x1f41, 0xfbe: 0x1f50, 0xfbf: 0x1f55,\n\t// Block 0x3f, offset 0xfc0\n\t0xfc0: 0x1f5a, 0xfc1: 0x1f6e, 0xfc2: 0x1f73, 0xfc3: 0x1f78, 0xfc4: 0x1f7d, 0xfc5: 0x1f96,\n\t0xfc6: 0x1fa0, 0xfc7: 0x1fa5, 0xfc8: 0x1faa, 0xfc9: 0x1fbe, 0xfca: 0x1fdc, 0xfcb: 0x1fe1,\n\t0xfcc: 0x1fe6, 0xfcd: 0x1feb, 0xfce: 0x1ff5, 0xfcf: 0x1ffa, 0xfd0: 0x445c, 0xfd1: 0x2027,\n\t0xfd2: 0x202c, 0xfd3: 0x2031, 0xfd4: 0x2036, 0xfd5: 0x2040, 0xfd6: 0x2045, 0xfd7: 0x25b1,\n\t0xfd8: 0x25b8, 0xfd9: 0x25bf, 0xfda: 0x25d4, 0xfdb: 0x25e2, 0xfdc: 0x1d89, 0xfdd: 0x1d8e,\n\t0xfde: 0x1d93, 0xfdf: 0x1da2, 0xfe0: 0x1dac, 0xfe1: 0x1dbb, 0xfe2: 0x1dc0, 0xfe3: 0x1dc5,\n\t0xfe4: 0x1dd4, 0xfe5: 0x1dde, 0xfe6: 0x1dfc, 0xfe7: 0x1e15, 0xfe8: 0x1e1a, 0xfe9: 0x1e29,\n\t0xfea: 0x1e2e, 0xfeb: 0x1e3d, 0xfec: 0x1e47, 0xfed: 0x1e56, 0xfee: 0x1e5b, 0xfef: 0x1e60,\n\t0xff0: 0x1e6a, 0xff1: 0x1ea6, 0xff2: 0x1eab, 0xff3: 0x1eb5, 0xff4: 0x1ec4, 0xff5: 0x1ec9,\n\t0xff6: 0x1ece, 0xff7: 0x1ed8, 0xff8: 0x1ee7, 0xff9: 0x1efb, 0xffa: 0x1f00, 0xffb: 0x1f05,\n\t0xffc: 0x1f14, 0xffd: 0x1f19, 0xffe: 0x1f28, 0xfff: 0x1f2d,\n\t// Block 0x40, offset 0x1000\n\t0x1000: 0x1f32, 0x1001: 0x1f37, 0x1002: 0x1f46, 0x1003: 0x1f4b, 0x1004: 0x1f5f, 0x1005: 0x1f64,\n\t0x1006: 0x1f69, 0x1007: 0x1f6e, 0x1008: 0x1f73, 0x1009: 0x1f87, 0x100a: 0x1f8c, 0x100b: 0x1f91,\n\t0x100c: 0x1f96, 0x100d: 0x1f9b, 0x100e: 0x1faf, 0x100f: 0x1fb4, 0x1010: 0x1fb9, 0x1011: 0x1fbe,\n\t0x1012: 0x1fcd, 0x1013: 0x1fd2, 0x1014: 0x1fd7, 0x1015: 0x1fe6, 0x1016: 0x1ff0, 0x1017: 0x1fff,\n\t0x1018: 0x2004, 0x1019: 0x4450, 0x101a: 0x2018, 0x101b: 0x201d, 0x101c: 0x2022, 0x101d: 0x2031,\n\t0x101e: 0x203b, 0x101f: 0x25d4, 0x1020: 0x25e2, 0x1021: 0x1da2, 0x1022: 0x1dac, 0x1023: 0x1dd4,\n\t0x1024: 0x1dde, 0x1025: 0x1dfc, 0x1026: 0x1e06, 0x1027: 0x1e6a, 0x1028: 0x1e6f, 0x1029: 0x1e92,\n\t0x102a: 0x1e97, 0x102b: 0x1f6e, 0x102c: 0x1f73, 0x102d: 0x1f96, 0x102e: 0x1fe6, 0x102f: 0x1ff0,\n\t0x1030: 0x2031, 0x1031: 0x203b, 0x1032: 0x4504, 0x1033: 0x450c, 0x1034: 0x4514, 0x1035: 0x1ef1,\n\t0x1036: 0x1ef6, 0x1037: 0x1f0a, 0x1038: 0x1f0f, 0x1039: 0x1f1e, 0x103a: 0x1f23, 0x103b: 0x1e74,\n\t0x103c: 0x1e79, 0x103d: 0x1e9c, 0x103e: 0x1ea1, 0x103f: 0x1e33,\n\t// Block 0x41, offset 0x1040\n\t0x1040: 0x1e38, 0x1041: 0x1e1f, 0x1042: 0x1e24, 0x1043: 0x1e4c, 0x1044: 0x1e51, 0x1045: 0x1eba,\n\t0x1046: 0x1ebf, 0x1047: 0x1edd, 0x1048: 0x1ee2, 0x1049: 0x1e7e, 0x104a: 0x1e83, 0x104b: 0x1e88,\n\t0x104c: 0x1e92, 0x104d: 0x1e8d, 0x104e: 0x1e65, 0x104f: 0x1eb0, 0x1050: 0x1ed3, 0x1051: 0x1ef1,\n\t0x1052: 0x1ef6, 0x1053: 0x1f0a, 0x1054: 0x1f0f, 0x1055: 0x1f1e, 0x1056: 0x1f23, 0x1057: 0x1e74,\n\t0x1058: 0x1e79, 0x1059: 0x1e9c, 0x105a: 0x1ea1, 0x105b: 0x1e33, 0x105c: 0x1e38, 0x105d: 0x1e1f,\n\t0x105e: 0x1e24, 0x105f: 0x1e4c, 0x1060: 0x1e51, 0x1061: 0x1eba, 0x1062: 0x1ebf, 0x1063: 0x1edd,\n\t0x1064: 0x1ee2, 0x1065: 0x1e7e, 0x1066: 0x1e83, 0x1067: 0x1e88, 0x1068: 0x1e92, 0x1069: 0x1e8d,\n\t0x106a: 0x1e65, 0x106b: 0x1eb0, 0x106c: 0x1ed3, 0x106d: 0x1e7e, 0x106e: 0x1e83, 0x106f: 0x1e88,\n\t0x1070: 0x1e92, 0x1071: 0x1e6f, 0x1072: 0x1e97, 0x1073: 0x1eec, 0x1074: 0x1e56, 0x1075: 0x1e5b,\n\t0x1076: 0x1e60, 0x1077: 0x1e7e, 0x1078: 0x1e83, 0x1079: 0x1e88, 0x107a: 0x1eec, 0x107b: 0x1efb,\n\t0x107c: 0x4408, 0x107d: 0x4408,\n\t// Block 0x42, offset 0x1080\n\t0x1090: 0x2311, 0x1091: 0x2326,\n\t0x1092: 0x2326, 0x1093: 0x232d, 0x1094: 0x2334, 0x1095: 0x2349, 0x1096: 0x2350, 0x1097: 0x2357,\n\t0x1098: 0x237a, 0x1099: 0x237a, 0x109a: 0x239d, 0x109b: 0x2396, 0x109c: 0x23b2, 0x109d: 0x23a4,\n\t0x109e: 0x23ab, 0x109f: 0x23ce, 0x10a0: 0x23ce, 0x10a1: 0x23c7, 0x10a2: 0x23d5, 0x10a3: 0x23d5,\n\t0x10a4: 0x23ff, 0x10a5: 0x23ff, 0x10a6: 0x241b, 0x10a7: 0x23e3, 0x10a8: 0x23e3, 0x10a9: 0x23dc,\n\t0x10aa: 0x23f1, 0x10ab: 0x23f1, 0x10ac: 0x23f8, 0x10ad: 0x23f8, 0x10ae: 0x2422, 0x10af: 0x2430,\n\t0x10b0: 0x2430, 0x10b1: 0x2437, 0x10b2: 0x2437, 0x10b3: 0x243e, 0x10b4: 0x2445, 0x10b5: 0x244c,\n\t0x10b6: 0x2453, 0x10b7: 0x2453, 0x10b8: 0x245a, 0x10b9: 0x2468, 0x10ba: 0x2476, 0x10bb: 0x246f,\n\t0x10bc: 0x247d, 0x10bd: 0x247d, 0x10be: 0x2492, 0x10bf: 0x2499,\n\t// Block 0x43, offset 0x10c0\n\t0x10c0: 0x24ca, 0x10c1: 0x24d8, 0x10c2: 0x24d1, 0x10c3: 0x24b5, 0x10c4: 0x24b5, 0x10c5: 0x24df,\n\t0x10c6: 0x24df, 0x10c7: 0x24e6, 0x10c8: 0x24e6, 0x10c9: 0x2510, 0x10ca: 0x2517, 0x10cb: 0x251e,\n\t0x10cc: 0x24f4, 0x10cd: 0x2502, 0x10ce: 0x2525, 0x10cf: 0x252c,\n\t0x10d2: 0x24fb, 0x10d3: 0x2580, 0x10d4: 0x2587, 0x10d5: 0x255d, 0x10d6: 0x2564, 0x10d7: 0x2548,\n\t0x10d8: 0x2548, 0x10d9: 0x254f, 0x10da: 0x2579, 0x10db: 0x2572, 0x10dc: 0x259c, 0x10dd: 0x259c,\n\t0x10de: 0x230a, 0x10df: 0x231f, 0x10e0: 0x2318, 0x10e1: 0x2342, 0x10e2: 0x233b, 0x10e3: 0x2365,\n\t0x10e4: 0x235e, 0x10e5: 0x2388, 0x10e6: 0x236c, 0x10e7: 0x2381, 0x10e8: 0x23b9, 0x10e9: 0x2406,\n\t0x10ea: 0x23ea, 0x10eb: 0x2429, 0x10ec: 0x24c3, 0x10ed: 0x24ed, 0x10ee: 0x2595, 0x10ef: 0x258e,\n\t0x10f0: 0x25a3, 0x10f1: 0x253a, 0x10f2: 0x24a0, 0x10f3: 0x256b, 0x10f4: 0x2492, 0x10f5: 0x24ca,\n\t0x10f6: 0x2461, 0x10f7: 0x24ae, 0x10f8: 0x2541, 0x10f9: 0x2533, 0x10fa: 0x24bc, 0x10fb: 0x24a7,\n\t0x10fc: 0x24bc, 0x10fd: 0x2541, 0x10fe: 0x2373, 0x10ff: 0x238f,\n\t// Block 0x44, offset 0x1100\n\t0x1100: 0x2509, 0x1101: 0x2484, 0x1102: 0x2303, 0x1103: 0x24a7, 0x1104: 0x244c, 0x1105: 0x241b,\n\t0x1106: 0x23c0, 0x1107: 0x2556,\n\t0x1130: 0x2414, 0x1131: 0x248b, 0x1132: 0x27bf, 0x1133: 0x27b6, 0x1134: 0x27ec, 0x1135: 0x27da,\n\t0x1136: 0x27c8, 0x1137: 0x27e3, 0x1138: 0x27f5, 0x1139: 0x240d, 0x113a: 0x2c7c, 0x113b: 0x2afc,\n\t0x113c: 0x27d1,\n\t// Block 0x45, offset 0x1140\n\t0x1150: 0x0019, 0x1151: 0x0483,\n\t0x1152: 0x0487, 0x1153: 0x0035, 0x1154: 0x0037, 0x1155: 0x0003, 0x1156: 0x003f, 0x1157: 0x04bf,\n\t0x1158: 0x04c3, 0x1159: 0x1b5c,\n\t0x1160: 0x8132, 0x1161: 0x8132, 0x1162: 0x8132, 0x1163: 0x8132,\n\t0x1164: 0x8132, 0x1165: 0x8132, 0x1166: 0x8132, 0x1167: 0x812d, 0x1168: 0x812d, 0x1169: 0x812d,\n\t0x116a: 0x812d, 0x116b: 0x812d, 0x116c: 0x812d, 0x116d: 0x812d, 0x116e: 0x8132, 0x116f: 0x8132,\n\t0x1170: 0x1873, 0x1171: 0x0443, 0x1172: 0x043f, 0x1173: 0x007f, 0x1174: 0x007f, 0x1175: 0x0011,\n\t0x1176: 0x0013, 0x1177: 0x00b7, 0x1178: 0x00bb, 0x1179: 0x04b7, 0x117a: 0x04bb, 0x117b: 0x04ab,\n\t0x117c: 0x04af, 0x117d: 0x0493, 0x117e: 0x0497, 0x117f: 0x048b,\n\t// Block 0x46, offset 0x1180\n\t0x1180: 0x048f, 0x1181: 0x049b, 0x1182: 0x049f, 0x1183: 0x04a3, 0x1184: 0x04a7,\n\t0x1187: 0x0077, 0x1188: 0x007b, 0x1189: 0x4269, 0x118a: 0x4269, 0x118b: 0x4269,\n\t0x118c: 0x4269, 0x118d: 0x007f, 0x118e: 0x007f, 0x118f: 0x007f, 0x1190: 0x0019, 0x1191: 0x0483,\n\t0x1192: 0x001d, 0x1194: 0x0037, 0x1195: 0x0035, 0x1196: 0x003f, 0x1197: 0x0003,\n\t0x1198: 0x0443, 0x1199: 0x0011, 0x119a: 0x0013, 0x119b: 0x00b7, 0x119c: 0x00bb, 0x119d: 0x04b7,\n\t0x119e: 0x04bb, 0x119f: 0x0007, 0x11a0: 0x000d, 0x11a1: 0x0015, 0x11a2: 0x0017, 0x11a3: 0x001b,\n\t0x11a4: 0x0039, 0x11a5: 0x003d, 0x11a6: 0x003b, 0x11a8: 0x0079, 0x11a9: 0x0009,\n\t0x11aa: 0x000b, 0x11ab: 0x0041,\n\t0x11b0: 0x42aa, 0x11b1: 0x442c, 0x11b2: 0x42af, 0x11b4: 0x42b4,\n\t0x11b6: 0x42b9, 0x11b7: 0x4432, 0x11b8: 0x42be, 0x11b9: 0x4438, 0x11ba: 0x42c3, 0x11bb: 0x443e,\n\t0x11bc: 0x42c8, 0x11bd: 0x4444, 0x11be: 0x42cd, 0x11bf: 0x444a,\n\t// Block 0x47, offset 0x11c0\n\t0x11c0: 0x0236, 0x11c1: 0x440e, 0x11c2: 0x440e, 0x11c3: 0x4414, 0x11c4: 0x4414, 0x11c5: 0x4456,\n\t0x11c6: 0x4456, 0x11c7: 0x441a, 0x11c8: 0x441a, 0x11c9: 0x4462, 0x11ca: 0x4462, 0x11cb: 0x4462,\n\t0x11cc: 0x4462, 0x11cd: 0x0239, 0x11ce: 0x0239, 0x11cf: 0x023c, 0x11d0: 0x023c, 0x11d1: 0x023c,\n\t0x11d2: 0x023c, 0x11d3: 0x023f, 0x11d4: 0x023f, 0x11d5: 0x0242, 0x11d6: 0x0242, 0x11d7: 0x0242,\n\t0x11d8: 0x0242, 0x11d9: 0x0245, 0x11da: 0x0245, 0x11db: 0x0245, 0x11dc: 0x0245, 0x11dd: 0x0248,\n\t0x11de: 0x0248, 0x11df: 0x0248, 0x11e0: 0x0248, 0x11e1: 0x024b, 0x11e2: 0x024b, 0x11e3: 0x024b,\n\t0x11e4: 0x024b, 0x11e5: 0x024e, 0x11e6: 0x024e, 0x11e7: 0x024e, 0x11e8: 0x024e, 0x11e9: 0x0251,\n\t0x11ea: 0x0251, 0x11eb: 0x0254, 0x11ec: 0x0254, 0x11ed: 0x0257, 0x11ee: 0x0257, 0x11ef: 0x025a,\n\t0x11f0: 0x025a, 0x11f1: 0x025d, 0x11f2: 0x025d, 0x11f3: 0x025d, 0x11f4: 0x025d, 0x11f5: 0x0260,\n\t0x11f6: 0x0260, 0x11f7: 0x0260, 0x11f8: 0x0260, 0x11f9: 0x0263, 0x11fa: 0x0263, 0x11fb: 0x0263,\n\t0x11fc: 0x0263, 0x11fd: 0x0266, 0x11fe: 0x0266, 0x11ff: 0x0266,\n\t// Block 0x48, offset 0x1200\n\t0x1200: 0x0266, 0x1201: 0x0269, 0x1202: 0x0269, 0x1203: 0x0269, 0x1204: 0x0269, 0x1205: 0x026c,\n\t0x1206: 0x026c, 0x1207: 0x026c, 0x1208: 0x026c, 0x1209: 0x026f, 0x120a: 0x026f, 0x120b: 0x026f,\n\t0x120c: 0x026f, 0x120d: 0x0272, 0x120e: 0x0272, 0x120f: 0x0272, 0x1210: 0x0272, 0x1211: 0x0275,\n\t0x1212: 0x0275, 0x1213: 0x0275, 0x1214: 0x0275, 0x1215: 0x0278, 0x1216: 0x0278, 0x1217: 0x0278,\n\t0x1218: 0x0278, 0x1219: 0x027b, 0x121a: 0x027b, 0x121b: 0x027b, 0x121c: 0x027b, 0x121d: 0x027e,\n\t0x121e: 0x027e, 0x121f: 0x027e, 0x1220: 0x027e, 0x1221: 0x0281, 0x1222: 0x0281, 0x1223: 0x0281,\n\t0x1224: 0x0281, 0x1225: 0x0284, 0x1226: 0x0284, 0x1227: 0x0284, 0x1228: 0x0284, 0x1229: 0x0287,\n\t0x122a: 0x0287, 0x122b: 0x0287, 0x122c: 0x0287, 0x122d: 0x028a, 0x122e: 0x028a, 0x122f: 0x028d,\n\t0x1230: 0x028d, 0x1231: 0x0290, 0x1232: 0x0290, 0x1233: 0x0290, 0x1234: 0x0290, 0x1235: 0x2e00,\n\t0x1236: 0x2e00, 0x1237: 0x2e08, 0x1238: 0x2e08, 0x1239: 0x2e10, 0x123a: 0x2e10, 0x123b: 0x1f82,\n\t0x123c: 0x1f82,\n\t// Block 0x49, offset 0x1240\n\t0x1240: 0x0081, 0x1241: 0x0083, 0x1242: 0x0085, 0x1243: 0x0087, 0x1244: 0x0089, 0x1245: 0x008b,\n\t0x1246: 0x008d, 0x1247: 0x008f, 0x1248: 0x0091, 0x1249: 0x0093, 0x124a: 0x0095, 0x124b: 0x0097,\n\t0x124c: 0x0099, 0x124d: 0x009b, 0x124e: 0x009d, 0x124f: 0x009f, 0x1250: 0x00a1, 0x1251: 0x00a3,\n\t0x1252: 0x00a5, 0x1253: 0x00a7, 0x1254: 0x00a9, 0x1255: 0x00ab, 0x1256: 0x00ad, 0x1257: 0x00af,\n\t0x1258: 0x00b1, 0x1259: 0x00b3, 0x125a: 0x00b5, 0x125b: 0x00b7, 0x125c: 0x00b9, 0x125d: 0x00bb,\n\t0x125e: 0x00bd, 0x125f: 0x0477, 0x1260: 0x047b, 0x1261: 0x0487, 0x1262: 0x049b, 0x1263: 0x049f,\n\t0x1264: 0x0483, 0x1265: 0x05ab, 0x1266: 0x05a3, 0x1267: 0x04c7, 0x1268: 0x04cf, 0x1269: 0x04d7,\n\t0x126a: 0x04df, 0x126b: 0x04e7, 0x126c: 0x056b, 0x126d: 0x0573, 0x126e: 0x057b, 0x126f: 0x051f,\n\t0x1270: 0x05af, 0x1271: 0x04cb, 0x1272: 0x04d3, 0x1273: 0x04db, 0x1274: 0x04e3, 0x1275: 0x04eb,\n\t0x1276: 0x04ef, 0x1277: 0x04f3, 0x1278: 0x04f7, 0x1279: 0x04fb, 0x127a: 0x04ff, 0x127b: 0x0503,\n\t0x127c: 0x0507, 0x127d: 0x050b, 0x127e: 0x050f, 0x127f: 0x0513,\n\t// Block 0x4a, offset 0x1280\n\t0x1280: 0x0517, 0x1281: 0x051b, 0x1282: 0x0523, 0x1283: 0x0527, 0x1284: 0x052b, 0x1285: 0x052f,\n\t0x1286: 0x0533, 0x1287: 0x0537, 0x1288: 0x053b, 0x1289: 0x053f, 0x128a: 0x0543, 0x128b: 0x0547,\n\t0x128c: 0x054b, 0x128d: 0x054f, 0x128e: 0x0553, 0x128f: 0x0557, 0x1290: 0x055b, 0x1291: 0x055f,\n\t0x1292: 0x0563, 0x1293: 0x0567, 0x1294: 0x056f, 0x1295: 0x0577, 0x1296: 0x057f, 0x1297: 0x0583,\n\t0x1298: 0x0587, 0x1299: 0x058b, 0x129a: 0x058f, 0x129b: 0x0593, 0x129c: 0x0597, 0x129d: 0x05a7,\n\t0x129e: 0x4a78, 0x129f: 0x4a7e, 0x12a0: 0x03c3, 0x12a1: 0x0313, 0x12a2: 0x0317, 0x12a3: 0x4a3b,\n\t0x12a4: 0x031b, 0x12a5: 0x4a41, 0x12a6: 0x4a47, 0x12a7: 0x031f, 0x12a8: 0x0323, 0x12a9: 0x0327,\n\t0x12aa: 0x4a4d, 0x12ab: 0x4a53, 0x12ac: 0x4a59, 0x12ad: 0x4a5f, 0x12ae: 0x4a65, 0x12af: 0x4a6b,\n\t0x12b0: 0x0367, 0x12b1: 0x032b, 0x12b2: 0x032f, 0x12b3: 0x0333, 0x12b4: 0x037b, 0x12b5: 0x0337,\n\t0x12b6: 0x033b, 0x12b7: 0x033f, 0x12b8: 0x0343, 0x12b9: 0x0347, 0x12ba: 0x034b, 0x12bb: 0x034f,\n\t0x12bc: 0x0353, 0x12bd: 0x0357, 0x12be: 0x035b,\n\t// Block 0x4b, offset 0x12c0\n\t0x12c2: 0x49bd, 0x12c3: 0x49c3, 0x12c4: 0x49c9, 0x12c5: 0x49cf,\n\t0x12c6: 0x49d5, 0x12c7: 0x49db, 0x12ca: 0x49e1, 0x12cb: 0x49e7,\n\t0x12cc: 0x49ed, 0x12cd: 0x49f3, 0x12ce: 0x49f9, 0x12cf: 0x49ff,\n\t0x12d2: 0x4a05, 0x12d3: 0x4a0b, 0x12d4: 0x4a11, 0x12d5: 0x4a17, 0x12d6: 0x4a1d, 0x12d7: 0x4a23,\n\t0x12da: 0x4a29, 0x12db: 0x4a2f, 0x12dc: 0x4a35,\n\t0x12e0: 0x00bf, 0x12e1: 0x00c2, 0x12e2: 0x00cb, 0x12e3: 0x4264,\n\t0x12e4: 0x00c8, 0x12e5: 0x00c5, 0x12e6: 0x0447, 0x12e8: 0x046b, 0x12e9: 0x044b,\n\t0x12ea: 0x044f, 0x12eb: 0x0453, 0x12ec: 0x0457, 0x12ed: 0x046f, 0x12ee: 0x0473,\n\t// Block 0x4c, offset 0x1300\n\t0x1300: 0x0063, 0x1301: 0x0065, 0x1302: 0x0067, 0x1303: 0x0069, 0x1304: 0x006b, 0x1305: 0x006d,\n\t0x1306: 0x006f, 0x1307: 0x0071, 0x1308: 0x0073, 0x1309: 0x0075, 0x130a: 0x0083, 0x130b: 0x0085,\n\t0x130c: 0x0087, 0x130d: 0x0089, 0x130e: 0x008b, 0x130f: 0x008d, 0x1310: 0x008f, 0x1311: 0x0091,\n\t0x1312: 0x0093, 0x1313: 0x0095, 0x1314: 0x0097, 0x1315: 0x0099, 0x1316: 0x009b, 0x1317: 0x009d,\n\t0x1318: 0x009f, 0x1319: 0x00a1, 0x131a: 0x00a3, 0x131b: 0x00a5, 0x131c: 0x00a7, 0x131d: 0x00a9,\n\t0x131e: 0x00ab, 0x131f: 0x00ad, 0x1320: 0x00af, 0x1321: 0x00b1, 0x1322: 0x00b3, 0x1323: 0x00b5,\n\t0x1324: 0x00dd, 0x1325: 0x00f2, 0x1328: 0x0173, 0x1329: 0x0176,\n\t0x132a: 0x0179, 0x132b: 0x017c, 0x132c: 0x017f, 0x132d: 0x0182, 0x132e: 0x0185, 0x132f: 0x0188,\n\t0x1330: 0x018b, 0x1331: 0x018e, 0x1332: 0x0191, 0x1333: 0x0194, 0x1334: 0x0197, 0x1335: 0x019a,\n\t0x1336: 0x019d, 0x1337: 0x01a0, 0x1338: 0x01a3, 0x1339: 0x0188, 0x133a: 0x01a6, 0x133b: 0x01a9,\n\t0x133c: 0x01ac, 0x133d: 0x01af, 0x133e: 0x01b2, 0x133f: 0x01b5,\n\t// Block 0x4d, offset 0x1340\n\t0x1340: 0x01fd, 0x1341: 0x0200, 0x1342: 0x0203, 0x1343: 0x045b, 0x1344: 0x01c7, 0x1345: 0x01d0,\n\t0x1346: 0x01d6, 0x1347: 0x01fa, 0x1348: 0x01eb, 0x1349: 0x01e8, 0x134a: 0x0206, 0x134b: 0x0209,\n\t0x134e: 0x0021, 0x134f: 0x0023, 0x1350: 0x0025, 0x1351: 0x0027,\n\t0x1352: 0x0029, 0x1353: 0x002b, 0x1354: 0x002d, 0x1355: 0x002f, 0x1356: 0x0031, 0x1357: 0x0033,\n\t0x1358: 0x0021, 0x1359: 0x0023, 0x135a: 0x0025, 0x135b: 0x0027, 0x135c: 0x0029, 0x135d: 0x002b,\n\t0x135e: 0x002d, 0x135f: 0x002f, 0x1360: 0x0031, 0x1361: 0x0033, 0x1362: 0x0021, 0x1363: 0x0023,\n\t0x1364: 0x0025, 0x1365: 0x0027, 0x1366: 0x0029, 0x1367: 0x002b, 0x1368: 0x002d, 0x1369: 0x002f,\n\t0x136a: 0x0031, 0x136b: 0x0033, 0x136c: 0x0021, 0x136d: 0x0023, 0x136e: 0x0025, 0x136f: 0x0027,\n\t0x1370: 0x0029, 0x1371: 0x002b, 0x1372: 0x002d, 0x1373: 0x002f, 0x1374: 0x0031, 0x1375: 0x0033,\n\t0x1376: 0x0021, 0x1377: 0x0023, 0x1378: 0x0025, 0x1379: 0x0027, 0x137a: 0x0029, 0x137b: 0x002b,\n\t0x137c: 0x002d, 0x137d: 0x002f, 0x137e: 0x0031, 0x137f: 0x0033,\n\t// Block 0x4e, offset 0x1380\n\t0x1380: 0x0239, 0x1381: 0x023c, 0x1382: 0x0248, 0x1383: 0x0251, 0x1385: 0x028a,\n\t0x1386: 0x025a, 0x1387: 0x024b, 0x1388: 0x0269, 0x1389: 0x0290, 0x138a: 0x027b, 0x138b: 0x027e,\n\t0x138c: 0x0281, 0x138d: 0x0284, 0x138e: 0x025d, 0x138f: 0x026f, 0x1390: 0x0275, 0x1391: 0x0263,\n\t0x1392: 0x0278, 0x1393: 0x0257, 0x1394: 0x0260, 0x1395: 0x0242, 0x1396: 0x0245, 0x1397: 0x024e,\n\t0x1398: 0x0254, 0x1399: 0x0266, 0x139a: 0x026c, 0x139b: 0x0272, 0x139c: 0x0293, 0x139d: 0x02e4,\n\t0x139e: 0x02cc, 0x139f: 0x0296, 0x13a1: 0x023c, 0x13a2: 0x0248,\n\t0x13a4: 0x0287, 0x13a7: 0x024b, 0x13a9: 0x0290,\n\t0x13aa: 0x027b, 0x13ab: 0x027e, 0x13ac: 0x0281, 0x13ad: 0x0284, 0x13ae: 0x025d, 0x13af: 0x026f,\n\t0x13b0: 0x0275, 0x13b1: 0x0263, 0x13b2: 0x0278, 0x13b4: 0x0260, 0x13b5: 0x0242,\n\t0x13b6: 0x0245, 0x13b7: 0x024e, 0x13b9: 0x0266, 0x13bb: 0x0272,\n\t// Block 0x4f, offset 0x13c0\n\t0x13c2: 0x0248,\n\t0x13c7: 0x024b, 0x13c9: 0x0290, 0x13cb: 0x027e,\n\t0x13cd: 0x0284, 0x13ce: 0x025d, 0x13cf: 0x026f, 0x13d1: 0x0263,\n\t0x13d2: 0x0278, 0x13d4: 0x0260, 0x13d7: 0x024e,\n\t0x13d9: 0x0266, 0x13db: 0x0272, 0x13dd: 0x02e4,\n\t0x13df: 0x0296, 0x13e1: 0x023c, 0x13e2: 0x0248,\n\t0x13e4: 0x0287, 0x13e7: 0x024b, 0x13e8: 0x0269, 0x13e9: 0x0290,\n\t0x13ea: 0x027b, 0x13ec: 0x0281, 0x13ed: 0x0284, 0x13ee: 0x025d, 0x13ef: 0x026f,\n\t0x13f0: 0x0275, 0x13f1: 0x0263, 0x13f2: 0x0278, 0x13f4: 0x0260, 0x13f5: 0x0242,\n\t0x13f6: 0x0245, 0x13f7: 0x024e, 0x13f9: 0x0266, 0x13fa: 0x026c, 0x13fb: 0x0272,\n\t0x13fc: 0x0293, 0x13fe: 0x02cc,\n\t// Block 0x50, offset 0x1400\n\t0x1400: 0x0239, 0x1401: 0x023c, 0x1402: 0x0248, 0x1403: 0x0251, 0x1404: 0x0287, 0x1405: 0x028a,\n\t0x1406: 0x025a, 0x1407: 0x024b, 0x1408: 0x0269, 0x1409: 0x0290, 0x140b: 0x027e,\n\t0x140c: 0x0281, 0x140d: 0x0284, 0x140e: 0x025d, 0x140f: 0x026f, 0x1410: 0x0275, 0x1411: 0x0263,\n\t0x1412: 0x0278, 0x1413: 0x0257, 0x1414: 0x0260, 0x1415: 0x0242, 0x1416: 0x0245, 0x1417: 0x024e,\n\t0x1418: 0x0254, 0x1419: 0x0266, 0x141a: 0x026c, 0x141b: 0x0272,\n\t0x1421: 0x023c, 0x1422: 0x0248, 0x1423: 0x0251,\n\t0x1425: 0x028a, 0x1426: 0x025a, 0x1427: 0x024b, 0x1428: 0x0269, 0x1429: 0x0290,\n\t0x142b: 0x027e, 0x142c: 0x0281, 0x142d: 0x0284, 0x142e: 0x025d, 0x142f: 0x026f,\n\t0x1430: 0x0275, 0x1431: 0x0263, 0x1432: 0x0278, 0x1433: 0x0257, 0x1434: 0x0260, 0x1435: 0x0242,\n\t0x1436: 0x0245, 0x1437: 0x024e, 0x1438: 0x0254, 0x1439: 0x0266, 0x143a: 0x026c, 0x143b: 0x0272,\n\t// Block 0x51, offset 0x1440\n\t0x1440: 0x1879, 0x1441: 0x1876, 0x1442: 0x187c, 0x1443: 0x18a0, 0x1444: 0x18c4, 0x1445: 0x18e8,\n\t0x1446: 0x190c, 0x1447: 0x1915, 0x1448: 0x191b, 0x1449: 0x1921, 0x144a: 0x1927,\n\t0x1450: 0x1a8c, 0x1451: 0x1a90,\n\t0x1452: 0x1a94, 0x1453: 0x1a98, 0x1454: 0x1a9c, 0x1455: 0x1aa0, 0x1456: 0x1aa4, 0x1457: 0x1aa8,\n\t0x1458: 0x1aac, 0x1459: 0x1ab0, 0x145a: 0x1ab4, 0x145b: 0x1ab8, 0x145c: 0x1abc, 0x145d: 0x1ac0,\n\t0x145e: 0x1ac4, 0x145f: 0x1ac8, 0x1460: 0x1acc, 0x1461: 0x1ad0, 0x1462: 0x1ad4, 0x1463: 0x1ad8,\n\t0x1464: 0x1adc, 0x1465: 0x1ae0, 0x1466: 0x1ae4, 0x1467: 0x1ae8, 0x1468: 0x1aec, 0x1469: 0x1af0,\n\t0x146a: 0x271e, 0x146b: 0x0047, 0x146c: 0x0065, 0x146d: 0x193c, 0x146e: 0x19b1,\n\t0x1470: 0x0043, 0x1471: 0x0045, 0x1472: 0x0047, 0x1473: 0x0049, 0x1474: 0x004b, 0x1475: 0x004d,\n\t0x1476: 0x004f, 0x1477: 0x0051, 0x1478: 0x0053, 0x1479: 0x0055, 0x147a: 0x0057, 0x147b: 0x0059,\n\t0x147c: 0x005b, 0x147d: 0x005d, 0x147e: 0x005f, 0x147f: 0x0061,\n\t// Block 0x52, offset 0x1480\n\t0x1480: 0x26ad, 0x1481: 0x26c2, 0x1482: 0x0503,\n\t0x1490: 0x0c0f, 0x1491: 0x0a47,\n\t0x1492: 0x08d3, 0x1493: 0x45c4, 0x1494: 0x071b, 0x1495: 0x09ef, 0x1496: 0x132f, 0x1497: 0x09ff,\n\t0x1498: 0x0727, 0x1499: 0x0cd7, 0x149a: 0x0eaf, 0x149b: 0x0caf, 0x149c: 0x0827, 0x149d: 0x0b6b,\n\t0x149e: 0x07bf, 0x149f: 0x0cb7, 0x14a0: 0x0813, 0x14a1: 0x1117, 0x14a2: 0x0f83, 0x14a3: 0x138b,\n\t0x14a4: 0x09d3, 0x14a5: 0x090b, 0x14a6: 0x0e63, 0x14a7: 0x0c1b, 0x14a8: 0x0c47, 0x14a9: 0x06bf,\n\t0x14aa: 0x06cb, 0x14ab: 0x140b, 0x14ac: 0x0adb, 0x14ad: 0x06e7, 0x14ae: 0x08ef, 0x14af: 0x0c3b,\n\t0x14b0: 0x13b3, 0x14b1: 0x0c13, 0x14b2: 0x106f, 0x14b3: 0x10ab, 0x14b4: 0x08f7, 0x14b5: 0x0e43,\n\t0x14b6: 0x0d0b, 0x14b7: 0x0d07, 0x14b8: 0x0f97, 0x14b9: 0x082b, 0x14ba: 0x0957, 0x14bb: 0x1443,\n\t// Block 0x53, offset 0x14c0\n\t0x14c0: 0x06fb, 0x14c1: 0x06f3, 0x14c2: 0x0703, 0x14c3: 0x1647, 0x14c4: 0x0747, 0x14c5: 0x0757,\n\t0x14c6: 0x075b, 0x14c7: 0x0763, 0x14c8: 0x076b, 0x14c9: 0x076f, 0x14ca: 0x077b, 0x14cb: 0x0773,\n\t0x14cc: 0x05b3, 0x14cd: 0x165b, 0x14ce: 0x078f, 0x14cf: 0x0793, 0x14d0: 0x0797, 0x14d1: 0x07b3,\n\t0x14d2: 0x164c, 0x14d3: 0x05b7, 0x14d4: 0x079f, 0x14d5: 0x07bf, 0x14d6: 0x1656, 0x14d7: 0x07cf,\n\t0x14d8: 0x07d7, 0x14d9: 0x0737, 0x14da: 0x07df, 0x14db: 0x07e3, 0x14dc: 0x1831, 0x14dd: 0x07ff,\n\t0x14de: 0x0807, 0x14df: 0x05bf, 0x14e0: 0x081f, 0x14e1: 0x0823, 0x14e2: 0x082b, 0x14e3: 0x082f,\n\t0x14e4: 0x05c3, 0x14e5: 0x0847, 0x14e6: 0x084b, 0x14e7: 0x0857, 0x14e8: 0x0863, 0x14e9: 0x0867,\n\t0x14ea: 0x086b, 0x14eb: 0x0873, 0x14ec: 0x0893, 0x14ed: 0x0897, 0x14ee: 0x089f, 0x14ef: 0x08af,\n\t0x14f0: 0x08b7, 0x14f1: 0x08bb, 0x14f2: 0x08bb, 0x14f3: 0x08bb, 0x14f4: 0x166a, 0x14f5: 0x0e93,\n\t0x14f6: 0x08cf, 0x14f7: 0x08d7, 0x14f8: 0x166f, 0x14f9: 0x08e3, 0x14fa: 0x08eb, 0x14fb: 0x08f3,\n\t0x14fc: 0x091b, 0x14fd: 0x0907, 0x14fe: 0x0913, 0x14ff: 0x0917,\n\t// Block 0x54, offset 0x1500\n\t0x1500: 0x091f, 0x1501: 0x0927, 0x1502: 0x092b, 0x1503: 0x0933, 0x1504: 0x093b, 0x1505: 0x093f,\n\t0x1506: 0x093f, 0x1507: 0x0947, 0x1508: 0x094f, 0x1509: 0x0953, 0x150a: 0x095f, 0x150b: 0x0983,\n\t0x150c: 0x0967, 0x150d: 0x0987, 0x150e: 0x096b, 0x150f: 0x0973, 0x1510: 0x080b, 0x1511: 0x09cf,\n\t0x1512: 0x0997, 0x1513: 0x099b, 0x1514: 0x099f, 0x1515: 0x0993, 0x1516: 0x09a7, 0x1517: 0x09a3,\n\t0x1518: 0x09bb, 0x1519: 0x1674, 0x151a: 0x09d7, 0x151b: 0x09db, 0x151c: 0x09e3, 0x151d: 0x09ef,\n\t0x151e: 0x09f7, 0x151f: 0x0a13, 0x1520: 0x1679, 0x1521: 0x167e, 0x1522: 0x0a1f, 0x1523: 0x0a23,\n\t0x1524: 0x0a27, 0x1525: 0x0a1b, 0x1526: 0x0a2f, 0x1527: 0x05c7, 0x1528: 0x05cb, 0x1529: 0x0a37,\n\t0x152a: 0x0a3f, 0x152b: 0x0a3f, 0x152c: 0x1683, 0x152d: 0x0a5b, 0x152e: 0x0a5f, 0x152f: 0x0a63,\n\t0x1530: 0x0a6b, 0x1531: 0x1688, 0x1532: 0x0a73, 0x1533: 0x0a77, 0x1534: 0x0b4f, 0x1535: 0x0a7f,\n\t0x1536: 0x05cf, 0x1537: 0x0a8b, 0x1538: 0x0a9b, 0x1539: 0x0aa7, 0x153a: 0x0aa3, 0x153b: 0x1692,\n\t0x153c: 0x0aaf, 0x153d: 0x1697, 0x153e: 0x0abb, 0x153f: 0x0ab7,\n\t// Block 0x55, offset 0x1540\n\t0x1540: 0x0abf, 0x1541: 0x0acf, 0x1542: 0x0ad3, 0x1543: 0x05d3, 0x1544: 0x0ae3, 0x1545: 0x0aeb,\n\t0x1546: 0x0aef, 0x1547: 0x0af3, 0x1548: 0x05d7, 0x1549: 0x169c, 0x154a: 0x05db, 0x154b: 0x0b0f,\n\t0x154c: 0x0b13, 0x154d: 0x0b17, 0x154e: 0x0b1f, 0x154f: 0x1863, 0x1550: 0x0b37, 0x1551: 0x16a6,\n\t0x1552: 0x16a6, 0x1553: 0x11d7, 0x1554: 0x0b47, 0x1555: 0x0b47, 0x1556: 0x05df, 0x1557: 0x16c9,\n\t0x1558: 0x179b, 0x1559: 0x0b57, 0x155a: 0x0b5f, 0x155b: 0x05e3, 0x155c: 0x0b73, 0x155d: 0x0b83,\n\t0x155e: 0x0b87, 0x155f: 0x0b8f, 0x1560: 0x0b9f, 0x1561: 0x05eb, 0x1562: 0x05e7, 0x1563: 0x0ba3,\n\t0x1564: 0x16ab, 0x1565: 0x0ba7, 0x1566: 0x0bbb, 0x1567: 0x0bbf, 0x1568: 0x0bc3, 0x1569: 0x0bbf,\n\t0x156a: 0x0bcf, 0x156b: 0x0bd3, 0x156c: 0x0be3, 0x156d: 0x0bdb, 0x156e: 0x0bdf, 0x156f: 0x0be7,\n\t0x1570: 0x0beb, 0x1571: 0x0bef, 0x1572: 0x0bfb, 0x1573: 0x0bff, 0x1574: 0x0c17, 0x1575: 0x0c1f,\n\t0x1576: 0x0c2f, 0x1577: 0x0c43, 0x1578: 0x16ba, 0x1579: 0x0c3f, 0x157a: 0x0c33, 0x157b: 0x0c4b,\n\t0x157c: 0x0c53, 0x157d: 0x0c67, 0x157e: 0x16bf, 0x157f: 0x0c6f,\n\t// Block 0x56, offset 0x1580\n\t0x1580: 0x0c63, 0x1581: 0x0c5b, 0x1582: 0x05ef, 0x1583: 0x0c77, 0x1584: 0x0c7f, 0x1585: 0x0c87,\n\t0x1586: 0x0c7b, 0x1587: 0x05f3, 0x1588: 0x0c97, 0x1589: 0x0c9f, 0x158a: 0x16c4, 0x158b: 0x0ccb,\n\t0x158c: 0x0cff, 0x158d: 0x0cdb, 0x158e: 0x05ff, 0x158f: 0x0ce7, 0x1590: 0x05fb, 0x1591: 0x05f7,\n\t0x1592: 0x07c3, 0x1593: 0x07c7, 0x1594: 0x0d03, 0x1595: 0x0ceb, 0x1596: 0x11ab, 0x1597: 0x0663,\n\t0x1598: 0x0d0f, 0x1599: 0x0d13, 0x159a: 0x0d17, 0x159b: 0x0d2b, 0x159c: 0x0d23, 0x159d: 0x16dd,\n\t0x159e: 0x0603, 0x159f: 0x0d3f, 0x15a0: 0x0d33, 0x15a1: 0x0d4f, 0x15a2: 0x0d57, 0x15a3: 0x16e7,\n\t0x15a4: 0x0d5b, 0x15a5: 0x0d47, 0x15a6: 0x0d63, 0x15a7: 0x0607, 0x15a8: 0x0d67, 0x15a9: 0x0d6b,\n\t0x15aa: 0x0d6f, 0x15ab: 0x0d7b, 0x15ac: 0x16ec, 0x15ad: 0x0d83, 0x15ae: 0x060b, 0x15af: 0x0d8f,\n\t0x15b0: 0x16f1, 0x15b1: 0x0d93, 0x15b2: 0x060f, 0x15b3: 0x0d9f, 0x15b4: 0x0dab, 0x15b5: 0x0db7,\n\t0x15b6: 0x0dbb, 0x15b7: 0x16f6, 0x15b8: 0x168d, 0x15b9: 0x16fb, 0x15ba: 0x0ddb, 0x15bb: 0x1700,\n\t0x15bc: 0x0de7, 0x15bd: 0x0def, 0x15be: 0x0ddf, 0x15bf: 0x0dfb,\n\t// Block 0x57, offset 0x15c0\n\t0x15c0: 0x0e0b, 0x15c1: 0x0e1b, 0x15c2: 0x0e0f, 0x15c3: 0x0e13, 0x15c4: 0x0e1f, 0x15c5: 0x0e23,\n\t0x15c6: 0x1705, 0x15c7: 0x0e07, 0x15c8: 0x0e3b, 0x15c9: 0x0e3f, 0x15ca: 0x0613, 0x15cb: 0x0e53,\n\t0x15cc: 0x0e4f, 0x15cd: 0x170a, 0x15ce: 0x0e33, 0x15cf: 0x0e6f, 0x15d0: 0x170f, 0x15d1: 0x1714,\n\t0x15d2: 0x0e73, 0x15d3: 0x0e87, 0x15d4: 0x0e83, 0x15d5: 0x0e7f, 0x15d6: 0x0617, 0x15d7: 0x0e8b,\n\t0x15d8: 0x0e9b, 0x15d9: 0x0e97, 0x15da: 0x0ea3, 0x15db: 0x1651, 0x15dc: 0x0eb3, 0x15dd: 0x1719,\n\t0x15de: 0x0ebf, 0x15df: 0x1723, 0x15e0: 0x0ed3, 0x15e1: 0x0edf, 0x15e2: 0x0ef3, 0x15e3: 0x1728,\n\t0x15e4: 0x0f07, 0x15e5: 0x0f0b, 0x15e6: 0x172d, 0x15e7: 0x1732, 0x15e8: 0x0f27, 0x15e9: 0x0f37,\n\t0x15ea: 0x061b, 0x15eb: 0x0f3b, 0x15ec: 0x061f, 0x15ed: 0x061f, 0x15ee: 0x0f53, 0x15ef: 0x0f57,\n\t0x15f0: 0x0f5f, 0x15f1: 0x0f63, 0x15f2: 0x0f6f, 0x15f3: 0x0623, 0x15f4: 0x0f87, 0x15f5: 0x1737,\n\t0x15f6: 0x0fa3, 0x15f7: 0x173c, 0x15f8: 0x0faf, 0x15f9: 0x16a1, 0x15fa: 0x0fbf, 0x15fb: 0x1741,\n\t0x15fc: 0x1746, 0x15fd: 0x174b, 0x15fe: 0x0627, 0x15ff: 0x062b,\n\t// Block 0x58, offset 0x1600\n\t0x1600: 0x0ff7, 0x1601: 0x1755, 0x1602: 0x1750, 0x1603: 0x175a, 0x1604: 0x175f, 0x1605: 0x0fff,\n\t0x1606: 0x1003, 0x1607: 0x1003, 0x1608: 0x100b, 0x1609: 0x0633, 0x160a: 0x100f, 0x160b: 0x0637,\n\t0x160c: 0x063b, 0x160d: 0x1769, 0x160e: 0x1023, 0x160f: 0x102b, 0x1610: 0x1037, 0x1611: 0x063f,\n\t0x1612: 0x176e, 0x1613: 0x105b, 0x1614: 0x1773, 0x1615: 0x1778, 0x1616: 0x107b, 0x1617: 0x1093,\n\t0x1618: 0x0643, 0x1619: 0x109b, 0x161a: 0x109f, 0x161b: 0x10a3, 0x161c: 0x177d, 0x161d: 0x1782,\n\t0x161e: 0x1782, 0x161f: 0x10bb, 0x1620: 0x0647, 0x1621: 0x1787, 0x1622: 0x10cf, 0x1623: 0x10d3,\n\t0x1624: 0x064b, 0x1625: 0x178c, 0x1626: 0x10ef, 0x1627: 0x064f, 0x1628: 0x10ff, 0x1629: 0x10f7,\n\t0x162a: 0x1107, 0x162b: 0x1796, 0x162c: 0x111f, 0x162d: 0x0653, 0x162e: 0x112b, 0x162f: 0x1133,\n\t0x1630: 0x1143, 0x1631: 0x0657, 0x1632: 0x17a0, 0x1633: 0x17a5, 0x1634: 0x065b, 0x1635: 0x17aa,\n\t0x1636: 0x115b, 0x1637: 0x17af, 0x1638: 0x1167, 0x1639: 0x1173, 0x163a: 0x117b, 0x163b: 0x17b4,\n\t0x163c: 0x17b9, 0x163d: 0x118f, 0x163e: 0x17be, 0x163f: 0x1197,\n\t// Block 0x59, offset 0x1640\n\t0x1640: 0x16ce, 0x1641: 0x065f, 0x1642: 0x11af, 0x1643: 0x11b3, 0x1644: 0x0667, 0x1645: 0x11b7,\n\t0x1646: 0x0a33, 0x1647: 0x17c3, 0x1648: 0x17c8, 0x1649: 0x16d3, 0x164a: 0x16d8, 0x164b: 0x11d7,\n\t0x164c: 0x11db, 0x164d: 0x13f3, 0x164e: 0x066b, 0x164f: 0x1207, 0x1650: 0x1203, 0x1651: 0x120b,\n\t0x1652: 0x083f, 0x1653: 0x120f, 0x1654: 0x1213, 0x1655: 0x1217, 0x1656: 0x121f, 0x1657: 0x17cd,\n\t0x1658: 0x121b, 0x1659: 0x1223, 0x165a: 0x1237, 0x165b: 0x123b, 0x165c: 0x1227, 0x165d: 0x123f,\n\t0x165e: 0x1253, 0x165f: 0x1267, 0x1660: 0x1233, 0x1661: 0x1247, 0x1662: 0x124b, 0x1663: 0x124f,\n\t0x1664: 0x17d2, 0x1665: 0x17dc, 0x1666: 0x17d7, 0x1667: 0x066f, 0x1668: 0x126f, 0x1669: 0x1273,\n\t0x166a: 0x127b, 0x166b: 0x17f0, 0x166c: 0x127f, 0x166d: 0x17e1, 0x166e: 0x0673, 0x166f: 0x0677,\n\t0x1670: 0x17e6, 0x1671: 0x17eb, 0x1672: 0x067b, 0x1673: 0x129f, 0x1674: 0x12a3, 0x1675: 0x12a7,\n\t0x1676: 0x12ab, 0x1677: 0x12b7, 0x1678: 0x12b3, 0x1679: 0x12bf, 0x167a: 0x12bb, 0x167b: 0x12cb,\n\t0x167c: 0x12c3, 0x167d: 0x12c7, 0x167e: 0x12cf, 0x167f: 0x067f,\n\t// Block 0x5a, offset 0x1680\n\t0x1680: 0x12d7, 0x1681: 0x12db, 0x1682: 0x0683, 0x1683: 0x12eb, 0x1684: 0x12ef, 0x1685: 0x17f5,\n\t0x1686: 0x12fb, 0x1687: 0x12ff, 0x1688: 0x0687, 0x1689: 0x130b, 0x168a: 0x05bb, 0x168b: 0x17fa,\n\t0x168c: 0x17ff, 0x168d: 0x068b, 0x168e: 0x068f, 0x168f: 0x1337, 0x1690: 0x134f, 0x1691: 0x136b,\n\t0x1692: 0x137b, 0x1693: 0x1804, 0x1694: 0x138f, 0x1695: 0x1393, 0x1696: 0x13ab, 0x1697: 0x13b7,\n\t0x1698: 0x180e, 0x1699: 0x1660, 0x169a: 0x13c3, 0x169b: 0x13bf, 0x169c: 0x13cb, 0x169d: 0x1665,\n\t0x169e: 0x13d7, 0x169f: 0x13e3, 0x16a0: 0x1813, 0x16a1: 0x1818, 0x16a2: 0x1423, 0x16a3: 0x142f,\n\t0x16a4: 0x1437, 0x16a5: 0x181d, 0x16a6: 0x143b, 0x16a7: 0x1467, 0x16a8: 0x1473, 0x16a9: 0x1477,\n\t0x16aa: 0x146f, 0x16ab: 0x1483, 0x16ac: 0x1487, 0x16ad: 0x1822, 0x16ae: 0x1493, 0x16af: 0x0693,\n\t0x16b0: 0x149b, 0x16b1: 0x1827, 0x16b2: 0x0697, 0x16b3: 0x14d3, 0x16b4: 0x0ac3, 0x16b5: 0x14eb,\n\t0x16b6: 0x182c, 0x16b7: 0x1836, 0x16b8: 0x069b, 0x16b9: 0x069f, 0x16ba: 0x1513, 0x16bb: 0x183b,\n\t0x16bc: 0x06a3, 0x16bd: 0x1840, 0x16be: 0x152b, 0x16bf: 0x152b,\n\t// Block 0x5b, offset 0x16c0\n\t0x16c0: 0x1533, 0x16c1: 0x1845, 0x16c2: 0x154b, 0x16c3: 0x06a7, 0x16c4: 0x155b, 0x16c5: 0x1567,\n\t0x16c6: 0x156f, 0x16c7: 0x1577, 0x16c8: 0x06ab, 0x16c9: 0x184a, 0x16ca: 0x158b, 0x16cb: 0x15a7,\n\t0x16cc: 0x15b3, 0x16cd: 0x06af, 0x16ce: 0x06b3, 0x16cf: 0x15b7, 0x16d0: 0x184f, 0x16d1: 0x06b7,\n\t0x16d2: 0x1854, 0x16d3: 0x1859, 0x16d4: 0x185e, 0x16d5: 0x15db, 0x16d6: 0x06bb, 0x16d7: 0x15ef,\n\t0x16d8: 0x15f7, 0x16d9: 0x15fb, 0x16da: 0x1603, 0x16db: 0x160b, 0x16dc: 0x1613, 0x16dd: 0x1868,\n}\n\n// nfkcIndex: 22 blocks, 1408 entries, 1408 bytes\n// Block 0 is the zero block.\nvar nfkcIndex = [1408]uint8{\n\t// Block 0x0, offset 0x0\n\t// Block 0x1, offset 0x40\n\t// Block 0x2, offset 0x80\n\t// Block 0x3, offset 0xc0\n\t0xc2: 0x5a, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5b, 0xc7: 0x04,\n\t0xc8: 0x05, 0xca: 0x5c, 0xcb: 0x5d, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,\n\t0xd0: 0x0a, 0xd1: 0x5e, 0xd2: 0x5f, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x60,\n\t0xd8: 0x61, 0xd9: 0x0d, 0xdb: 0x62, 0xdc: 0x63, 0xdd: 0x64, 0xdf: 0x65,\n\t0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,\n\t0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,\n\t0xf0: 0x13,\n\t// Block 0x4, offset 0x100\n\t0x120: 0x66, 0x121: 0x67, 0x123: 0x68, 0x124: 0x69, 0x125: 0x6a, 0x126: 0x6b, 0x127: 0x6c,\n\t0x128: 0x6d, 0x129: 0x6e, 0x12a: 0x6f, 0x12b: 0x70, 0x12c: 0x6b, 0x12d: 0x71, 0x12e: 0x72, 0x12f: 0x73,\n\t0x131: 0x74, 0x132: 0x75, 0x133: 0x76, 0x134: 0x77, 0x135: 0x78, 0x137: 0x79,\n\t0x138: 0x7a, 0x139: 0x7b, 0x13a: 0x7c, 0x13b: 0x7d, 0x13c: 0x7e, 0x13d: 0x7f, 0x13e: 0x80, 0x13f: 0x81,\n\t// Block 0x5, offset 0x140\n\t0x140: 0x82, 0x142: 0x83, 0x143: 0x84, 0x144: 0x85, 0x145: 0x86, 0x146: 0x87, 0x147: 0x88,\n\t0x14d: 0x89,\n\t0x15c: 0x8a, 0x15f: 0x8b,\n\t0x162: 0x8c, 0x164: 0x8d,\n\t0x168: 0x8e, 0x169: 0x8f, 0x16a: 0x90, 0x16c: 0x0e, 0x16d: 0x91, 0x16e: 0x92, 0x16f: 0x93,\n\t0x170: 0x94, 0x173: 0x95, 0x174: 0x96, 0x175: 0x0f, 0x176: 0x10, 0x177: 0x97,\n\t0x178: 0x11, 0x179: 0x12, 0x17a: 0x13, 0x17b: 0x14, 0x17c: 0x15, 0x17d: 0x16, 0x17e: 0x17, 0x17f: 0x18,\n\t// Block 0x6, offset 0x180\n\t0x180: 0x98, 0x181: 0x99, 0x182: 0x9a, 0x183: 0x9b, 0x184: 0x19, 0x185: 0x1a, 0x186: 0x9c, 0x187: 0x9d,\n\t0x188: 0x9e, 0x189: 0x1b, 0x18a: 0x1c, 0x18b: 0x9f, 0x18c: 0xa0,\n\t0x191: 0x1d, 0x192: 0x1e, 0x193: 0xa1,\n\t0x1a8: 0xa2, 0x1a9: 0xa3, 0x1ab: 0xa4,\n\t0x1b1: 0xa5, 0x1b3: 0xa6, 0x1b5: 0xa7, 0x1b7: 0xa8,\n\t0x1ba: 0xa9, 0x1bb: 0xaa, 0x1bc: 0x1f, 0x1bd: 0x20, 0x1be: 0x21, 0x1bf: 0xab,\n\t// Block 0x7, offset 0x1c0\n\t0x1c0: 0xac, 0x1c1: 0x22, 0x1c2: 0x23, 0x1c3: 0x24, 0x1c4: 0xad, 0x1c5: 0x25, 0x1c6: 0x26,\n\t0x1c8: 0x27, 0x1c9: 0x28, 0x1ca: 0x29, 0x1cb: 0x2a, 0x1cc: 0x2b, 0x1cd: 0x2c, 0x1ce: 0x2d, 0x1cf: 0x2e,\n\t// Block 0x8, offset 0x200\n\t0x219: 0xae, 0x21a: 0xaf, 0x21b: 0xb0, 0x21d: 0xb1, 0x21f: 0xb2,\n\t0x220: 0xb3, 0x223: 0xb4, 0x224: 0xb5, 0x225: 0xb6, 0x226: 0xb7, 0x227: 0xb8,\n\t0x22a: 0xb9, 0x22b: 0xba, 0x22d: 0xbb, 0x22f: 0xbc,\n\t0x230: 0xbd, 0x231: 0xbe, 0x232: 0xbf, 0x233: 0xc0, 0x234: 0xc1, 0x235: 0xc2, 0x236: 0xc3, 0x237: 0xbd,\n\t0x238: 0xbe, 0x239: 0xbf, 0x23a: 0xc0, 0x23b: 0xc1, 0x23c: 0xc2, 0x23d: 0xc3, 0x23e: 0xbd, 0x23f: 0xbe,\n\t// Block 0x9, offset 0x240\n\t0x240: 0xbf, 0x241: 0xc0, 0x242: 0xc1, 0x243: 0xc2, 0x244: 0xc3, 0x245: 0xbd, 0x246: 0xbe, 0x247: 0xbf,\n\t0x248: 0xc0, 0x249: 0xc1, 0x24a: 0xc2, 0x24b: 0xc3, 0x24c: 0xbd, 0x24d: 0xbe, 0x24e: 0xbf, 0x24f: 0xc0,\n\t0x250: 0xc1, 0x251: 0xc2, 0x252: 0xc3, 0x253: 0xbd, 0x254: 0xbe, 0x255: 0xbf, 0x256: 0xc0, 0x257: 0xc1,\n\t0x258: 0xc2, 0x259: 0xc3, 0x25a: 0xbd, 0x25b: 0xbe, 0x25c: 0xbf, 0x25d: 0xc0, 0x25e: 0xc1, 0x25f: 0xc2,\n\t0x260: 0xc3, 0x261: 0xbd, 0x262: 0xbe, 0x263: 0xbf, 0x264: 0xc0, 0x265: 0xc1, 0x266: 0xc2, 0x267: 0xc3,\n\t0x268: 0xbd, 0x269: 0xbe, 0x26a: 0xbf, 0x26b: 0xc0, 0x26c: 0xc1, 0x26d: 0xc2, 0x26e: 0xc3, 0x26f: 0xbd,\n\t0x270: 0xbe, 0x271: 0xbf, 0x272: 0xc0, 0x273: 0xc1, 0x274: 0xc2, 0x275: 0xc3, 0x276: 0xbd, 0x277: 0xbe,\n\t0x278: 0xbf, 0x279: 0xc0, 0x27a: 0xc1, 0x27b: 0xc2, 0x27c: 0xc3, 0x27d: 0xbd, 0x27e: 0xbe, 0x27f: 0xbf,\n\t// Block 0xa, offset 0x280\n\t0x280: 0xc0, 0x281: 0xc1, 0x282: 0xc2, 0x283: 0xc3, 0x284: 0xbd, 0x285: 0xbe, 0x286: 0xbf, 0x287: 0xc0,\n\t0x288: 0xc1, 0x289: 0xc2, 0x28a: 0xc3, 0x28b: 0xbd, 0x28c: 0xbe, 0x28d: 0xbf, 0x28e: 0xc0, 0x28f: 0xc1,\n\t0x290: 0xc2, 0x291: 0xc3, 0x292: 0xbd, 0x293: 0xbe, 0x294: 0xbf, 0x295: 0xc0, 0x296: 0xc1, 0x297: 0xc2,\n\t0x298: 0xc3, 0x299: 0xbd, 0x29a: 0xbe, 0x29b: 0xbf, 0x29c: 0xc0, 0x29d: 0xc1, 0x29e: 0xc2, 0x29f: 0xc3,\n\t0x2a0: 0xbd, 0x2a1: 0xbe, 0x2a2: 0xbf, 0x2a3: 0xc0, 0x2a4: 0xc1, 0x2a5: 0xc2, 0x2a6: 0xc3, 0x2a7: 0xbd,\n\t0x2a8: 0xbe, 0x2a9: 0xbf, 0x2aa: 0xc0, 0x2ab: 0xc1, 0x2ac: 0xc2, 0x2ad: 0xc3, 0x2ae: 0xbd, 0x2af: 0xbe,\n\t0x2b0: 0xbf, 0x2b1: 0xc0, 0x2b2: 0xc1, 0x2b3: 0xc2, 0x2b4: 0xc3, 0x2b5: 0xbd, 0x2b6: 0xbe, 0x2b7: 0xbf,\n\t0x2b8: 0xc0, 0x2b9: 0xc1, 0x2ba: 0xc2, 0x2bb: 0xc3, 0x2bc: 0xbd, 0x2bd: 0xbe, 0x2be: 0xbf, 0x2bf: 0xc0,\n\t// Block 0xb, offset 0x2c0\n\t0x2c0: 0xc1, 0x2c1: 0xc2, 0x2c2: 0xc3, 0x2c3: 0xbd, 0x2c4: 0xbe, 0x2c5: 0xbf, 0x2c6: 0xc0, 0x2c7: 0xc1,\n\t0x2c8: 0xc2, 0x2c9: 0xc3, 0x2ca: 0xbd, 0x2cb: 0xbe, 0x2cc: 0xbf, 0x2cd: 0xc0, 0x2ce: 0xc1, 0x2cf: 0xc2,\n\t0x2d0: 0xc3, 0x2d1: 0xbd, 0x2d2: 0xbe, 0x2d3: 0xbf, 0x2d4: 0xc0, 0x2d5: 0xc1, 0x2d6: 0xc2, 0x2d7: 0xc3,\n\t0x2d8: 0xbd, 0x2d9: 0xbe, 0x2da: 0xbf, 0x2db: 0xc0, 0x2dc: 0xc1, 0x2dd: 0xc2, 0x2de: 0xc4,\n\t// Block 0xc, offset 0x300\n\t0x324: 0x2f, 0x325: 0x30, 0x326: 0x31, 0x327: 0x32,\n\t0x328: 0x33, 0x329: 0x34, 0x32a: 0x35, 0x32b: 0x36, 0x32c: 0x37, 0x32d: 0x38, 0x32e: 0x39, 0x32f: 0x3a,\n\t0x330: 0x3b, 0x331: 0x3c, 0x332: 0x3d, 0x333: 0x3e, 0x334: 0x3f, 0x335: 0x40, 0x336: 0x41, 0x337: 0x42,\n\t0x338: 0x43, 0x339: 0x44, 0x33a: 0x45, 0x33b: 0x46, 0x33c: 0xc5, 0x33d: 0x47, 0x33e: 0x48, 0x33f: 0x49,\n\t// Block 0xd, offset 0x340\n\t0x347: 0xc6,\n\t0x34b: 0xc7, 0x34d: 0xc8,\n\t0x368: 0xc9, 0x36b: 0xca,\n\t// Block 0xe, offset 0x380\n\t0x381: 0xcb, 0x382: 0xcc, 0x384: 0xcd, 0x385: 0xb7, 0x387: 0xce,\n\t0x388: 0xcf, 0x38b: 0xd0, 0x38c: 0x6b, 0x38d: 0xd1,\n\t0x391: 0xd2, 0x392: 0xd3, 0x393: 0xd4, 0x396: 0xd5, 0x397: 0xd6,\n\t0x398: 0xd7, 0x39a: 0xd8, 0x39c: 0xd9,\n\t0x3b0: 0xd7,\n\t// Block 0xf, offset 0x3c0\n\t0x3eb: 0xda, 0x3ec: 0xdb,\n\t// Block 0x10, offset 0x400\n\t0x432: 0xdc,\n\t// Block 0x11, offset 0x440\n\t0x445: 0xdd, 0x446: 0xde, 0x447: 0xdf,\n\t0x449: 0xe0,\n\t0x450: 0xe1, 0x451: 0xe2, 0x452: 0xe3, 0x453: 0xe4, 0x454: 0xe5, 0x455: 0xe6, 0x456: 0xe7, 0x457: 0xe8,\n\t0x458: 0xe9, 0x459: 0xea, 0x45a: 0x4a, 0x45b: 0xeb, 0x45c: 0xec, 0x45d: 0xed, 0x45e: 0xee, 0x45f: 0x4b,\n\t// Block 0x12, offset 0x480\n\t0x480: 0xef,\n\t0x4a3: 0xf0, 0x4a5: 0xf1,\n\t0x4b8: 0x4c, 0x4b9: 0x4d, 0x4ba: 0x4e,\n\t// Block 0x13, offset 0x4c0\n\t0x4c4: 0x4f, 0x4c5: 0xf2, 0x4c6: 0xf3,\n\t0x4c8: 0x50, 0x4c9: 0xf4,\n\t// Block 0x14, offset 0x500\n\t0x520: 0x51, 0x521: 0x52, 0x522: 0x53, 0x523: 0x54, 0x524: 0x55, 0x525: 0x56, 0x526: 0x57, 0x527: 0x58,\n\t0x528: 0x59,\n\t// Block 0x15, offset 0x540\n\t0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,\n\t0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,\n\t0x56f: 0x12,\n}\n\n// nfkcSparseOffset: 155 entries, 310 bytes\nvar nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x6f, 0x74, 0x76, 0x87, 0x8f, 0x96, 0x99, 0xa0, 0xa4, 0xa8, 0xaa, 0xac, 0xb5, 0xb9, 0xc0, 0xc5, 0xc8, 0xd2, 0xd4, 0xdb, 0xe3, 0xe7, 0xe9, 0xec, 0xf0, 0xf6, 0x107, 0x113, 0x115, 0x11b, 0x11d, 0x11f, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12c, 0x12f, 0x131, 0x134, 0x137, 0x13b, 0x140, 0x149, 0x14b, 0x14e, 0x150, 0x15b, 0x166, 0x176, 0x184, 0x192, 0x1a2, 0x1b0, 0x1b7, 0x1bd, 0x1cc, 0x1d0, 0x1d2, 0x1d6, 0x1d8, 0x1db, 0x1dd, 0x1e0, 0x1e2, 0x1e5, 0x1e7, 0x1e9, 0x1eb, 0x1f7, 0x201, 0x20b, 0x20e, 0x212, 0x214, 0x216, 0x218, 0x21a, 0x21d, 0x21f, 0x221, 0x223, 0x225, 0x22b, 0x22e, 0x232, 0x234, 0x23b, 0x241, 0x247, 0x24f, 0x255, 0x25b, 0x261, 0x265, 0x267, 0x269, 0x26b, 0x26d, 0x273, 0x276, 0x279, 0x281, 0x288, 0x28b, 0x28e, 0x290, 0x298, 0x29b, 0x2a2, 0x2a5, 0x2ab, 0x2ad, 0x2af, 0x2b2, 0x2b4, 0x2b6, 0x2b8, 0x2ba, 0x2c7, 0x2d1, 0x2d3, 0x2d5, 0x2d9, 0x2de, 0x2ea, 0x2ef, 0x2f8, 0x2fe, 0x303, 0x307, 0x30c, 0x310, 0x320, 0x32e, 0x33c, 0x34a, 0x350, 0x352, 0x355, 0x35f, 0x361}\n\n// nfkcSparseValues: 875 entries, 3500 bytes\nvar nfkcSparseValues = [875]valueRange{\n\t// Block 0x0, offset 0x0\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x0001, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4278, lo: 0xa8, hi: 0xa8},\n\t{value: 0x0083, lo: 0xaa, hi: 0xaa},\n\t{value: 0x4264, lo: 0xaf, hi: 0xaf},\n\t{value: 0x0025, lo: 0xb2, hi: 0xb3},\n\t{value: 0x425a, lo: 0xb4, hi: 0xb4},\n\t{value: 0x01dc, lo: 0xb5, hi: 0xb5},\n\t{value: 0x4291, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0023, lo: 0xb9, hi: 0xb9},\n\t{value: 0x009f, lo: 0xba, hi: 0xba},\n\t{value: 0x221c, lo: 0xbc, hi: 0xbc},\n\t{value: 0x2210, lo: 0xbd, hi: 0xbd},\n\t{value: 0x22b2, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1, offset 0xe\n\t{value: 0x0091, lo: 0x03},\n\t{value: 0x46e2, lo: 0xa0, hi: 0xa1},\n\t{value: 0x4714, lo: 0xaf, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb7, hi: 0xb7},\n\t// Block 0x2, offset 0x12\n\t{value: 0x0003, lo: 0x08},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x0091, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0119, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0095, lo: 0xb2, hi: 0xb2},\n\t{value: 0x00a5, lo: 0xb3, hi: 0xb3},\n\t{value: 0x0143, lo: 0xb4, hi: 0xb6},\n\t{value: 0x00af, lo: 0xb7, hi: 0xb7},\n\t{value: 0x00b3, lo: 0xb8, hi: 0xb8},\n\t// Block 0x3, offset 0x1b\n\t{value: 0x000a, lo: 0x09},\n\t{value: 0x426e, lo: 0x98, hi: 0x98},\n\t{value: 0x4273, lo: 0x99, hi: 0x9a},\n\t{value: 0x4296, lo: 0x9b, hi: 0x9b},\n\t{value: 0x425f, lo: 0x9c, hi: 0x9c},\n\t{value: 0x4282, lo: 0x9d, hi: 0x9d},\n\t{value: 0x0113, lo: 0xa0, hi: 0xa0},\n\t{value: 0x0099, lo: 0xa1, hi: 0xa1},\n\t{value: 0x00a7, lo: 0xa2, hi: 0xa3},\n\t{value: 0x0167, lo: 0xa4, hi: 0xa4},\n\t// Block 0x4, offset 0x25\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0xa000, lo: 0x8d, hi: 0x8d},\n\t{value: 0x37a5, lo: 0x90, hi: 0x90},\n\t{value: 0x37b1, lo: 0x91, hi: 0x91},\n\t{value: 0x379f, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x96, hi: 0x96},\n\t{value: 0x3817, lo: 0x97, hi: 0x97},\n\t{value: 0x37e1, lo: 0x9c, hi: 0x9c},\n\t{value: 0x37c9, lo: 0x9d, hi: 0x9d},\n\t{value: 0x37f3, lo: 0x9e, hi: 0x9e},\n\t{value: 0xa000, lo: 0xb4, hi: 0xb5},\n\t{value: 0x381d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x3823, lo: 0xb7, hi: 0xb7},\n\t// Block 0x5, offset 0x35\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x83, hi: 0x87},\n\t// Block 0x6, offset 0x37\n\t{value: 0x0001, lo: 0x04},\n\t{value: 0x8113, lo: 0x81, hi: 0x82},\n\t{value: 0x8132, lo: 0x84, hi: 0x84},\n\t{value: 0x812d, lo: 0x85, hi: 0x85},\n\t{value: 0x810d, lo: 0x87, hi: 0x87},\n\t// Block 0x7, offset 0x3c\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x97},\n\t{value: 0x8119, lo: 0x98, hi: 0x98},\n\t{value: 0x811a, lo: 0x99, hi: 0x99},\n\t{value: 0x811b, lo: 0x9a, hi: 0x9a},\n\t{value: 0x3841, lo: 0xa2, hi: 0xa2},\n\t{value: 0x3847, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3853, lo: 0xa4, hi: 0xa4},\n\t{value: 0x384d, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3859, lo: 0xa6, hi: 0xa6},\n\t{value: 0xa000, lo: 0xa7, hi: 0xa7},\n\t// Block 0x8, offset 0x47\n\t{value: 0x0000, lo: 0x0e},\n\t{value: 0x386b, lo: 0x80, hi: 0x80},\n\t{value: 0xa000, lo: 0x81, hi: 0x81},\n\t{value: 0x385f, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x3865, lo: 0x93, hi: 0x93},\n\t{value: 0xa000, lo: 0x95, hi: 0x95},\n\t{value: 0x8132, lo: 0x96, hi: 0x9c},\n\t{value: 0x8132, lo: 0x9f, hi: 0xa2},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8132, lo: 0xab, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t// Block 0x9, offset 0x56\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x811f, lo: 0x91, hi: 0x91},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x812d, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb5, hi: 0xb6},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb9},\n\t{value: 0x8132, lo: 0xba, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbc},\n\t{value: 0x8132, lo: 0xbd, hi: 0xbd},\n\t{value: 0x812d, lo: 0xbe, hi: 0xbe},\n\t{value: 0x8132, lo: 0xbf, hi: 0xbf},\n\t// Block 0xa, offset 0x63\n\t{value: 0x0005, lo: 0x07},\n\t{value: 0x8132, lo: 0x80, hi: 0x80},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x83},\n\t{value: 0x812d, lo: 0x84, hi: 0x85},\n\t{value: 0x812d, lo: 0x86, hi: 0x87},\n\t{value: 0x812d, lo: 0x88, hi: 0x89},\n\t{value: 0x8132, lo: 0x8a, hi: 0x8a},\n\t// Block 0xb, offset 0x6b\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8132, lo: 0xab, hi: 0xb1},\n\t{value: 0x812d, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb3},\n\t// Block 0xc, offset 0x6f\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0x96, hi: 0x99},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa7},\n\t{value: 0x8132, lo: 0xa9, hi: 0xad},\n\t// Block 0xd, offset 0x74\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x99, hi: 0x9b},\n\t// Block 0xe, offset 0x76\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x8132, lo: 0x94, hi: 0xa1},\n\t{value: 0x812d, lo: 0xa3, hi: 0xa3},\n\t{value: 0x8132, lo: 0xa4, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa8},\n\t{value: 0x812d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8132, lo: 0xaa, hi: 0xac},\n\t{value: 0x812d, lo: 0xad, hi: 0xaf},\n\t{value: 0x8116, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8117, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8118, lo: 0xb2, hi: 0xb2},\n\t{value: 0x8132, lo: 0xb3, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x812d, lo: 0xb9, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbf},\n\t// Block 0xf, offset 0x87\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0xa8, hi: 0xa8},\n\t{value: 0x3ed8, lo: 0xa9, hi: 0xa9},\n\t{value: 0xa000, lo: 0xb0, hi: 0xb0},\n\t{value: 0x3ee0, lo: 0xb1, hi: 0xb1},\n\t{value: 0xa000, lo: 0xb3, hi: 0xb3},\n\t{value: 0x3ee8, lo: 0xb4, hi: 0xb4},\n\t{value: 0x9902, lo: 0xbc, hi: 0xbc},\n\t// Block 0x10, offset 0x8f\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x91, hi: 0x91},\n\t{value: 0x812d, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x93, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x94},\n\t{value: 0x451c, lo: 0x98, hi: 0x9f},\n\t// Block 0x11, offset 0x96\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x12, offset 0x99\n\t{value: 0x0008, lo: 0x06},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2c9e, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x455c, lo: 0x9c, hi: 0x9d},\n\t{value: 0x456c, lo: 0x9f, hi: 0x9f},\n\t// Block 0x13, offset 0xa0\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x4594, lo: 0xb3, hi: 0xb3},\n\t{value: 0x459c, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x14, offset 0xa4\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x4574, lo: 0x99, hi: 0x9b},\n\t{value: 0x458c, lo: 0x9e, hi: 0x9e},\n\t// Block 0x15, offset 0xa8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t// Block 0x16, offset 0xaa\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t// Block 0x17, offset 0xac\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2cb6, lo: 0x88, hi: 0x88},\n\t{value: 0x2cae, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cbe, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x96, hi: 0x97},\n\t{value: 0x45a4, lo: 0x9c, hi: 0x9c},\n\t{value: 0x45ac, lo: 0x9d, hi: 0x9d},\n\t// Block 0x18, offset 0xb5\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0x2cc6, lo: 0x94, hi: 0x94},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x19, offset 0xb9\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cce, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2cde, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2cd6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1a, offset 0xc0\n\t{value: 0x1801, lo: 0x04},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x3ef0, lo: 0x88, hi: 0x88},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8120, lo: 0x95, hi: 0x96},\n\t// Block 0x1b, offset 0xc5\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xbc, hi: 0xbc},\n\t{value: 0xa000, lo: 0xbf, hi: 0xbf},\n\t// Block 0x1c, offset 0xc8\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x2ce6, lo: 0x80, hi: 0x80},\n\t{value: 0x9900, lo: 0x82, hi: 0x82},\n\t{value: 0xa000, lo: 0x86, hi: 0x86},\n\t{value: 0x2cee, lo: 0x87, hi: 0x87},\n\t{value: 0x2cf6, lo: 0x88, hi: 0x88},\n\t{value: 0x2f50, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2dd8, lo: 0x8b, hi: 0x8b},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x95, hi: 0x96},\n\t// Block 0x1d, offset 0xd2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xbe, hi: 0xbe},\n\t// Block 0x1e, offset 0xd4\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xa000, lo: 0x86, hi: 0x87},\n\t{value: 0x2cfe, lo: 0x8a, hi: 0x8a},\n\t{value: 0x2d0e, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d06, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t// Block 0x1f, offset 0xdb\n\t{value: 0x6bea, lo: 0x07},\n\t{value: 0x9904, lo: 0x8a, hi: 0x8a},\n\t{value: 0x9900, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x3ef8, lo: 0x9a, hi: 0x9a},\n\t{value: 0x2f58, lo: 0x9c, hi: 0x9c},\n\t{value: 0x2de3, lo: 0x9d, hi: 0x9d},\n\t{value: 0x2d16, lo: 0x9e, hi: 0x9f},\n\t// Block 0x20, offset 0xe3\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x2621, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8122, lo: 0xb8, hi: 0xb9},\n\t{value: 0x8104, lo: 0xba, hi: 0xba},\n\t// Block 0x21, offset 0xe7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8123, lo: 0x88, hi: 0x8b},\n\t// Block 0x22, offset 0xe9\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x2636, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8124, lo: 0xb8, hi: 0xb9},\n\t// Block 0x23, offset 0xec\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8125, lo: 0x88, hi: 0x8b},\n\t{value: 0x2628, lo: 0x9c, hi: 0x9c},\n\t{value: 0x262f, lo: 0x9d, hi: 0x9d},\n\t// Block 0x24, offset 0xf0\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x030b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x812d, lo: 0x98, hi: 0x99},\n\t{value: 0x812d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x812d, lo: 0xb7, hi: 0xb7},\n\t{value: 0x812b, lo: 0xb9, hi: 0xb9},\n\t// Block 0x25, offset 0xf6\n\t{value: 0x0000, lo: 0x10},\n\t{value: 0x2644, lo: 0x83, hi: 0x83},\n\t{value: 0x264b, lo: 0x8d, hi: 0x8d},\n\t{value: 0x2652, lo: 0x92, hi: 0x92},\n\t{value: 0x2659, lo: 0x97, hi: 0x97},\n\t{value: 0x2660, lo: 0x9c, hi: 0x9c},\n\t{value: 0x263d, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8126, lo: 0xb1, hi: 0xb1},\n\t{value: 0x8127, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a84, lo: 0xb3, hi: 0xb3},\n\t{value: 0x8128, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a8d, lo: 0xb5, hi: 0xb5},\n\t{value: 0x45b4, lo: 0xb6, hi: 0xb6},\n\t{value: 0x45f4, lo: 0xb7, hi: 0xb7},\n\t{value: 0x45bc, lo: 0xb8, hi: 0xb8},\n\t{value: 0x45ff, lo: 0xb9, hi: 0xb9},\n\t{value: 0x8127, lo: 0xba, hi: 0xbd},\n\t// Block 0x26, offset 0x107\n\t{value: 0x0000, lo: 0x0b},\n\t{value: 0x8127, lo: 0x80, hi: 0x80},\n\t{value: 0x4a96, lo: 0x81, hi: 0x81},\n\t{value: 0x8132, lo: 0x82, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0x86, hi: 0x87},\n\t{value: 0x266e, lo: 0x93, hi: 0x93},\n\t{value: 0x2675, lo: 0x9d, hi: 0x9d},\n\t{value: 0x267c, lo: 0xa2, hi: 0xa2},\n\t{value: 0x2683, lo: 0xa7, hi: 0xa7},\n\t{value: 0x268a, lo: 0xac, hi: 0xac},\n\t{value: 0x2667, lo: 0xb9, hi: 0xb9},\n\t// Block 0x27, offset 0x113\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x86, hi: 0x86},\n\t// Block 0x28, offset 0x115\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x2d1e, lo: 0xa6, hi: 0xa6},\n\t{value: 0x9900, lo: 0xae, hi: 0xae},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x29, offset 0x11b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t// Block 0x2a, offset 0x11d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x030f, lo: 0xbc, hi: 0xbc},\n\t// Block 0x2b, offset 0x11f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xa000, lo: 0x80, hi: 0x92},\n\t// Block 0x2c, offset 0x121\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0xb900, lo: 0xa1, hi: 0xb5},\n\t// Block 0x2d, offset 0x123\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0xa8, hi: 0xbf},\n\t// Block 0x2e, offset 0x125\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x9900, lo: 0x80, hi: 0x82},\n\t// Block 0x2f, offset 0x127\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9f},\n\t// Block 0x30, offset 0x129\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x94, hi: 0x94},\n\t{value: 0x8104, lo: 0xb4, hi: 0xb4},\n\t// Block 0x31, offset 0x12c\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x92, hi: 0x92},\n\t{value: 0x8132, lo: 0x9d, hi: 0x9d},\n\t// Block 0x32, offset 0x12f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8131, lo: 0xa9, hi: 0xa9},\n\t// Block 0x33, offset 0x131\n\t{value: 0x0004, lo: 0x02},\n\t{value: 0x812e, lo: 0xb9, hi: 0xba},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbb},\n\t// Block 0x34, offset 0x134\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x97, hi: 0x97},\n\t{value: 0x812d, lo: 0x98, hi: 0x98},\n\t// Block 0x35, offset 0x137\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x8104, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8132, lo: 0xb5, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x36, offset 0x13b\n\t{value: 0x0000, lo: 0x04},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t{value: 0x812d, lo: 0xb5, hi: 0xba},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x37, offset 0x140\n\t{value: 0x0000, lo: 0x08},\n\t{value: 0x2d66, lo: 0x80, hi: 0x80},\n\t{value: 0x2d6e, lo: 0x81, hi: 0x81},\n\t{value: 0xa000, lo: 0x82, hi: 0x82},\n\t{value: 0x2d76, lo: 0x83, hi: 0x83},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xab, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xac},\n\t{value: 0x8132, lo: 0xad, hi: 0xb3},\n\t// Block 0x38, offset 0x149\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xaa, hi: 0xab},\n\t// Block 0x39, offset 0x14b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8102, lo: 0xa6, hi: 0xa6},\n\t{value: 0x8104, lo: 0xb2, hi: 0xb3},\n\t// Block 0x3a, offset 0x14e\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x3b, offset 0x150\n\t{value: 0x0000, lo: 0x0a},\n\t{value: 0x8132, lo: 0x90, hi: 0x92},\n\t{value: 0x8101, lo: 0x94, hi: 0x94},\n\t{value: 0x812d, lo: 0x95, hi: 0x99},\n\t{value: 0x8132, lo: 0x9a, hi: 0x9b},\n\t{value: 0x812d, lo: 0x9c, hi: 0x9f},\n\t{value: 0x8132, lo: 0xa0, hi: 0xa0},\n\t{value: 0x8101, lo: 0xa2, hi: 0xa8},\n\t{value: 0x812d, lo: 0xad, hi: 0xad},\n\t{value: 0x8132, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb9},\n\t// Block 0x3c, offset 0x15b\n\t{value: 0x0002, lo: 0x0a},\n\t{value: 0x0043, lo: 0xac, hi: 0xac},\n\t{value: 0x00d1, lo: 0xad, hi: 0xad},\n\t{value: 0x0045, lo: 0xae, hi: 0xae},\n\t{value: 0x0049, lo: 0xb0, hi: 0xb1},\n\t{value: 0x00e6, lo: 0xb2, hi: 0xb2},\n\t{value: 0x004f, lo: 0xb3, hi: 0xba},\n\t{value: 0x005f, lo: 0xbc, hi: 0xbc},\n\t{value: 0x00ef, lo: 0xbd, hi: 0xbd},\n\t{value: 0x0061, lo: 0xbe, hi: 0xbe},\n\t{value: 0x0065, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3d, offset 0x166\n\t{value: 0x0000, lo: 0x0f},\n\t{value: 0x8132, lo: 0x80, hi: 0x81},\n\t{value: 0x812d, lo: 0x82, hi: 0x82},\n\t{value: 0x8132, lo: 0x83, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8a},\n\t{value: 0x8132, lo: 0x8b, hi: 0x8c},\n\t{value: 0x8135, lo: 0x8d, hi: 0x8d},\n\t{value: 0x812a, lo: 0x8e, hi: 0x8e},\n\t{value: 0x812d, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8129, lo: 0x90, hi: 0x90},\n\t{value: 0x8132, lo: 0x91, hi: 0xb5},\n\t{value: 0x8132, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8134, lo: 0xbc, hi: 0xbc},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbe},\n\t{value: 0x812d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x3e, offset 0x176\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x0001, lo: 0x80, hi: 0x8a},\n\t{value: 0x043b, lo: 0x91, hi: 0x91},\n\t{value: 0x429b, lo: 0x97, hi: 0x97},\n\t{value: 0x001d, lo: 0xa4, hi: 0xa4},\n\t{value: 0x1873, lo: 0xa5, hi: 0xa5},\n\t{value: 0x1b5c, lo: 0xa6, hi: 0xa6},\n\t{value: 0x0001, lo: 0xaf, hi: 0xaf},\n\t{value: 0x2691, lo: 0xb3, hi: 0xb3},\n\t{value: 0x27fe, lo: 0xb4, hi: 0xb4},\n\t{value: 0x2698, lo: 0xb6, hi: 0xb6},\n\t{value: 0x2808, lo: 0xb7, hi: 0xb7},\n\t{value: 0x186d, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4269, lo: 0xbe, hi: 0xbe},\n\t// Block 0x3f, offset 0x184\n\t{value: 0x0002, lo: 0x0d},\n\t{value: 0x1933, lo: 0x87, hi: 0x87},\n\t{value: 0x1930, lo: 0x88, hi: 0x88},\n\t{value: 0x1870, lo: 0x89, hi: 0x89},\n\t{value: 0x298e, lo: 0x97, hi: 0x97},\n\t{value: 0x0001, lo: 0x9f, hi: 0x9f},\n\t{value: 0x0021, lo: 0xb0, hi: 0xb0},\n\t{value: 0x0093, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0029, lo: 0xb4, hi: 0xb9},\n\t{value: 0x0017, lo: 0xba, hi: 0xba},\n\t{value: 0x0467, lo: 0xbb, hi: 0xbb},\n\t{value: 0x003b, lo: 0xbc, hi: 0xbc},\n\t{value: 0x0011, lo: 0xbd, hi: 0xbe},\n\t{value: 0x009d, lo: 0xbf, hi: 0xbf},\n\t// Block 0x40, offset 0x192\n\t{value: 0x0002, lo: 0x0f},\n\t{value: 0x0021, lo: 0x80, hi: 0x89},\n\t{value: 0x0017, lo: 0x8a, hi: 0x8a},\n\t{value: 0x0467, lo: 0x8b, hi: 0x8b},\n\t{value: 0x003b, lo: 0x8c, hi: 0x8c},\n\t{value: 0x0011, lo: 0x8d, hi: 0x8e},\n\t{value: 0x0083, lo: 0x90, hi: 0x90},\n\t{value: 0x008b, lo: 0x91, hi: 0x91},\n\t{value: 0x009f, lo: 0x92, hi: 0x92},\n\t{value: 0x00b1, lo: 0x93, hi: 0x93},\n\t{value: 0x0104, lo: 0x94, hi: 0x94},\n\t{value: 0x0091, lo: 0x95, hi: 0x95},\n\t{value: 0x0097, lo: 0x96, hi: 0x99},\n\t{value: 0x00a1, lo: 0x9a, hi: 0x9a},\n\t{value: 0x00a7, lo: 0x9b, hi: 0x9c},\n\t{value: 0x1999, lo: 0xa8, hi: 0xa8},\n\t// Block 0x41, offset 0x1a2\n\t{value: 0x0000, lo: 0x0d},\n\t{value: 0x8132, lo: 0x90, hi: 0x91},\n\t{value: 0x8101, lo: 0x92, hi: 0x93},\n\t{value: 0x8132, lo: 0x94, hi: 0x97},\n\t{value: 0x8101, lo: 0x98, hi: 0x9a},\n\t{value: 0x8132, lo: 0x9b, hi: 0x9c},\n\t{value: 0x8132, lo: 0xa1, hi: 0xa1},\n\t{value: 0x8101, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8132, lo: 0xa7, hi: 0xa7},\n\t{value: 0x812d, lo: 0xa8, hi: 0xa8},\n\t{value: 0x8132, lo: 0xa9, hi: 0xa9},\n\t{value: 0x8101, lo: 0xaa, hi: 0xab},\n\t{value: 0x812d, lo: 0xac, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t// Block 0x42, offset 0x1b0\n\t{value: 0x0007, lo: 0x06},\n\t{value: 0x2180, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t{value: 0x3bb9, lo: 0x9a, hi: 0x9b},\n\t{value: 0x3bc7, lo: 0xae, hi: 0xae},\n\t// Block 0x43, offset 0x1b7\n\t{value: 0x000e, lo: 0x05},\n\t{value: 0x3bce, lo: 0x8d, hi: 0x8e},\n\t{value: 0x3bd5, lo: 0x8f, hi: 0x8f},\n\t{value: 0xa000, lo: 0x90, hi: 0x90},\n\t{value: 0xa000, lo: 0x92, hi: 0x92},\n\t{value: 0xa000, lo: 0x94, hi: 0x94},\n\t// Block 0x44, offset 0x1bd\n\t{value: 0x0173, lo: 0x0e},\n\t{value: 0xa000, lo: 0x83, hi: 0x83},\n\t{value: 0x3be3, lo: 0x84, hi: 0x84},\n\t{value: 0xa000, lo: 0x88, hi: 0x88},\n\t{value: 0x3bea, lo: 0x89, hi: 0x89},\n\t{value: 0xa000, lo: 0x8b, hi: 0x8b},\n\t{value: 0x3bf1, lo: 0x8c, hi: 0x8c},\n\t{value: 0xa000, lo: 0xa3, hi: 0xa3},\n\t{value: 0x3bf8, lo: 0xa4, hi: 0xa4},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x3bff, lo: 0xa6, hi: 0xa6},\n\t{value: 0x269f, lo: 0xac, hi: 0xad},\n\t{value: 0x26a6, lo: 0xaf, hi: 0xaf},\n\t{value: 0x281c, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xbc, hi: 0xbc},\n\t// Block 0x45, offset 0x1cc\n\t{value: 0x0007, lo: 0x03},\n\t{value: 0x3c68, lo: 0xa0, hi: 0xa1},\n\t{value: 0x3c92, lo: 0xa2, hi: 0xa3},\n\t{value: 0x3cbc, lo: 0xaa, hi: 0xad},\n\t// Block 0x46, offset 0x1d0\n\t{value: 0x0004, lo: 0x01},\n\t{value: 0x048b, lo: 0xa9, hi: 0xaa},\n\t// Block 0x47, offset 0x1d2\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0057, lo: 0x80, hi: 0x8f},\n\t{value: 0x0083, lo: 0x90, hi: 0xa9},\n\t{value: 0x0021, lo: 0xaa, hi: 0xaa},\n\t// Block 0x48, offset 0x1d6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x299b, lo: 0x8c, hi: 0x8c},\n\t// Block 0x49, offset 0x1d8\n\t{value: 0x0263, lo: 0x02},\n\t{value: 0x1b8c, lo: 0xb4, hi: 0xb4},\n\t{value: 0x192d, lo: 0xb5, hi: 0xb6},\n\t// Block 0x4a, offset 0x1db\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x44dd, lo: 0x9c, hi: 0x9c},\n\t// Block 0x4b, offset 0x1dd\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x0095, lo: 0xbc, hi: 0xbc},\n\t{value: 0x006d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x4c, offset 0x1e0\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xaf, hi: 0xb1},\n\t// Block 0x4d, offset 0x1e2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x047f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x4e, offset 0x1e5\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xa0, hi: 0xbf},\n\t// Block 0x4f, offset 0x1e7\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x0dc3, lo: 0x9f, hi: 0x9f},\n\t// Block 0x50, offset 0x1e9\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x162f, lo: 0xb3, hi: 0xb3},\n\t// Block 0x51, offset 0x1eb\n\t{value: 0x0004, lo: 0x0b},\n\t{value: 0x1597, lo: 0x80, hi: 0x82},\n\t{value: 0x15af, lo: 0x83, hi: 0x83},\n\t{value: 0x15c7, lo: 0x84, hi: 0x85},\n\t{value: 0x15d7, lo: 0x86, hi: 0x89},\n\t{value: 0x15eb, lo: 0x8a, hi: 0x8c},\n\t{value: 0x15ff, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1607, lo: 0x8e, hi: 0x8e},\n\t{value: 0x160f, lo: 0x8f, hi: 0x90},\n\t{value: 0x161b, lo: 0x91, hi: 0x93},\n\t{value: 0x162b, lo: 0x94, hi: 0x94},\n\t{value: 0x1633, lo: 0x95, hi: 0x95},\n\t// Block 0x52, offset 0x1f7\n\t{value: 0x0004, lo: 0x09},\n\t{value: 0x0001, lo: 0x80, hi: 0x80},\n\t{value: 0x812c, lo: 0xaa, hi: 0xaa},\n\t{value: 0x8131, lo: 0xab, hi: 0xab},\n\t{value: 0x8133, lo: 0xac, hi: 0xac},\n\t{value: 0x812e, lo: 0xad, hi: 0xad},\n\t{value: 0x812f, lo: 0xae, hi: 0xae},\n\t{value: 0x812f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x04b3, lo: 0xb6, hi: 0xb6},\n\t{value: 0x0887, lo: 0xb8, hi: 0xba},\n\t// Block 0x53, offset 0x201\n\t{value: 0x0006, lo: 0x09},\n\t{value: 0x0313, lo: 0xb1, hi: 0xb1},\n\t{value: 0x0317, lo: 0xb2, hi: 0xb2},\n\t{value: 0x4a3b, lo: 0xb3, hi: 0xb3},\n\t{value: 0x031b, lo: 0xb4, hi: 0xb4},\n\t{value: 0x4a41, lo: 0xb5, hi: 0xb6},\n\t{value: 0x031f, lo: 0xb7, hi: 0xb7},\n\t{value: 0x0323, lo: 0xb8, hi: 0xb8},\n\t{value: 0x0327, lo: 0xb9, hi: 0xb9},\n\t{value: 0x4a4d, lo: 0xba, hi: 0xbf},\n\t// Block 0x54, offset 0x20b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xaf, hi: 0xaf},\n\t{value: 0x8132, lo: 0xb4, hi: 0xbd},\n\t// Block 0x55, offset 0x20e\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0x020f, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0212, lo: 0x9d, hi: 0x9d},\n\t{value: 0x8132, lo: 0x9e, hi: 0x9f},\n\t// Block 0x56, offset 0x212\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb1},\n\t// Block 0x57, offset 0x214\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x163b, lo: 0xb0, hi: 0xb0},\n\t// Block 0x58, offset 0x216\n\t{value: 0x000c, lo: 0x01},\n\t{value: 0x00d7, lo: 0xb8, hi: 0xb9},\n\t// Block 0x59, offset 0x218\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t// Block 0x5a, offset 0x21a\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x84, hi: 0x84},\n\t{value: 0x8132, lo: 0xa0, hi: 0xb1},\n\t// Block 0x5b, offset 0x21d\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xab, hi: 0xad},\n\t// Block 0x5c, offset 0x21f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x93, hi: 0x93},\n\t// Block 0x5d, offset 0x221\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0xb3, hi: 0xb3},\n\t// Block 0x5e, offset 0x223\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t// Block 0x5f, offset 0x225\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb0},\n\t{value: 0x8132, lo: 0xb2, hi: 0xb3},\n\t{value: 0x812d, lo: 0xb4, hi: 0xb4},\n\t{value: 0x8132, lo: 0xb7, hi: 0xb8},\n\t{value: 0x8132, lo: 0xbe, hi: 0xbf},\n\t// Block 0x60, offset 0x22b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x81, hi: 0x81},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t// Block 0x61, offset 0x22e\n\t{value: 0x0008, lo: 0x03},\n\t{value: 0x1637, lo: 0x9c, hi: 0x9d},\n\t{value: 0x0125, lo: 0x9e, hi: 0x9e},\n\t{value: 0x1643, lo: 0x9f, hi: 0x9f},\n\t// Block 0x62, offset 0x232\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xad, hi: 0xad},\n\t// Block 0x63, offset 0x234\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0xe500, lo: 0x80, hi: 0x80},\n\t{value: 0xc600, lo: 0x81, hi: 0x9b},\n\t{value: 0xe500, lo: 0x9c, hi: 0x9c},\n\t{value: 0xc600, lo: 0x9d, hi: 0xb7},\n\t{value: 0xe500, lo: 0xb8, hi: 0xb8},\n\t{value: 0xc600, lo: 0xb9, hi: 0xbf},\n\t// Block 0x64, offset 0x23b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x93},\n\t{value: 0xe500, lo: 0x94, hi: 0x94},\n\t{value: 0xc600, lo: 0x95, hi: 0xaf},\n\t{value: 0xe500, lo: 0xb0, hi: 0xb0},\n\t{value: 0xc600, lo: 0xb1, hi: 0xbf},\n\t// Block 0x65, offset 0x241\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8b},\n\t{value: 0xe500, lo: 0x8c, hi: 0x8c},\n\t{value: 0xc600, lo: 0x8d, hi: 0xa7},\n\t{value: 0xe500, lo: 0xa8, hi: 0xa8},\n\t{value: 0xc600, lo: 0xa9, hi: 0xbf},\n\t// Block 0x66, offset 0x247\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xc600, lo: 0x80, hi: 0x83},\n\t{value: 0xe500, lo: 0x84, hi: 0x84},\n\t{value: 0xc600, lo: 0x85, hi: 0x9f},\n\t{value: 0xe500, lo: 0xa0, hi: 0xa0},\n\t{value: 0xc600, lo: 0xa1, hi: 0xbb},\n\t{value: 0xe500, lo: 0xbc, hi: 0xbc},\n\t{value: 0xc600, lo: 0xbd, hi: 0xbf},\n\t// Block 0x67, offset 0x24f\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x97},\n\t{value: 0xe500, lo: 0x98, hi: 0x98},\n\t{value: 0xc600, lo: 0x99, hi: 0xb3},\n\t{value: 0xe500, lo: 0xb4, hi: 0xb4},\n\t{value: 0xc600, lo: 0xb5, hi: 0xbf},\n\t// Block 0x68, offset 0x255\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x8f},\n\t{value: 0xe500, lo: 0x90, hi: 0x90},\n\t{value: 0xc600, lo: 0x91, hi: 0xab},\n\t{value: 0xe500, lo: 0xac, hi: 0xac},\n\t{value: 0xc600, lo: 0xad, hi: 0xbf},\n\t// Block 0x69, offset 0x25b\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t{value: 0xe500, lo: 0xa4, hi: 0xa4},\n\t{value: 0xc600, lo: 0xa5, hi: 0xbf},\n\t// Block 0x6a, offset 0x261\n\t{value: 0x0000, lo: 0x03},\n\t{value: 0xc600, lo: 0x80, hi: 0x87},\n\t{value: 0xe500, lo: 0x88, hi: 0x88},\n\t{value: 0xc600, lo: 0x89, hi: 0xa3},\n\t// Block 0x6b, offset 0x265\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x0003, lo: 0x81, hi: 0xbf},\n\t// Block 0x6c, offset 0x267\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xbd, hi: 0xbd},\n\t// Block 0x6d, offset 0x269\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0xa0, hi: 0xa0},\n\t// Block 0x6e, offset 0x26b\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb6, hi: 0xba},\n\t// Block 0x6f, offset 0x26d\n\t{value: 0x002c, lo: 0x05},\n\t{value: 0x812d, lo: 0x8d, hi: 0x8d},\n\t{value: 0x8132, lo: 0x8f, hi: 0x8f},\n\t{value: 0x8132, lo: 0xb8, hi: 0xb8},\n\t{value: 0x8101, lo: 0xb9, hi: 0xba},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x70, offset 0x273\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0xa5, hi: 0xa5},\n\t{value: 0x812d, lo: 0xa6, hi: 0xa6},\n\t// Block 0x71, offset 0x276\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x86, hi: 0x86},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x72, offset 0x279\n\t{value: 0x17fe, lo: 0x07},\n\t{value: 0xa000, lo: 0x99, hi: 0x99},\n\t{value: 0x4238, lo: 0x9a, hi: 0x9a},\n\t{value: 0xa000, lo: 0x9b, hi: 0x9b},\n\t{value: 0x4242, lo: 0x9c, hi: 0x9c},\n\t{value: 0xa000, lo: 0xa5, hi: 0xa5},\n\t{value: 0x424c, lo: 0xab, hi: 0xab},\n\t{value: 0x8104, lo: 0xb9, hi: 0xba},\n\t// Block 0x73, offset 0x281\n\t{value: 0x0000, lo: 0x06},\n\t{value: 0x8132, lo: 0x80, hi: 0x82},\n\t{value: 0x9900, lo: 0xa7, hi: 0xa7},\n\t{value: 0x2d7e, lo: 0xae, hi: 0xae},\n\t{value: 0x2d88, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb1, hi: 0xb2},\n\t{value: 0x8104, lo: 0xb3, hi: 0xb4},\n\t// Block 0x74, offset 0x288\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x80, hi: 0x80},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x75, offset 0x28b\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb5, hi: 0xb5},\n\t{value: 0x8102, lo: 0xb6, hi: 0xb6},\n\t// Block 0x76, offset 0x28e\n\t{value: 0x0002, lo: 0x01},\n\t{value: 0x8102, lo: 0xa9, hi: 0xaa},\n\t// Block 0x77, offset 0x290\n\t{value: 0x0000, lo: 0x07},\n\t{value: 0xa000, lo: 0x87, hi: 0x87},\n\t{value: 0x2d92, lo: 0x8b, hi: 0x8b},\n\t{value: 0x2d9c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x8104, lo: 0x8d, hi: 0x8d},\n\t{value: 0x9900, lo: 0x97, hi: 0x97},\n\t{value: 0x8132, lo: 0xa6, hi: 0xac},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb4},\n\t// Block 0x78, offset 0x298\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x86, hi: 0x86},\n\t// Block 0x79, offset 0x29b\n\t{value: 0x6b5a, lo: 0x06},\n\t{value: 0x9900, lo: 0xb0, hi: 0xb0},\n\t{value: 0xa000, lo: 0xb9, hi: 0xb9},\n\t{value: 0x9900, lo: 0xba, hi: 0xba},\n\t{value: 0x2db0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x2da6, lo: 0xbc, hi: 0xbd},\n\t{value: 0x2dba, lo: 0xbe, hi: 0xbe},\n\t// Block 0x7a, offset 0x2a2\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0x82, hi: 0x82},\n\t{value: 0x8102, lo: 0x83, hi: 0x83},\n\t// Block 0x7b, offset 0x2a5\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x9900, lo: 0xaf, hi: 0xaf},\n\t{value: 0xa000, lo: 0xb8, hi: 0xb9},\n\t{value: 0x2dc4, lo: 0xba, hi: 0xba},\n\t{value: 0x2dce, lo: 0xbb, hi: 0xbb},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7c, offset 0x2ab\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8102, lo: 0x80, hi: 0x80},\n\t// Block 0x7d, offset 0x2ad\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xbf, hi: 0xbf},\n\t// Block 0x7e, offset 0x2af\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8104, lo: 0xb6, hi: 0xb6},\n\t{value: 0x8102, lo: 0xb7, hi: 0xb7},\n\t// Block 0x7f, offset 0x2b2\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8104, lo: 0xab, hi: 0xab},\n\t// Block 0x80, offset 0x2b4\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0xb0, hi: 0xb4},\n\t// Block 0x81, offset 0x2b6\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0xb0, hi: 0xb6},\n\t// Block 0x82, offset 0x2b8\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8101, lo: 0x9e, hi: 0x9e},\n\t// Block 0x83, offset 0x2ba\n\t{value: 0x0000, lo: 0x0c},\n\t{value: 0x45cc, lo: 0x9e, hi: 0x9e},\n\t{value: 0x45d6, lo: 0x9f, hi: 0x9f},\n\t{value: 0x460a, lo: 0xa0, hi: 0xa0},\n\t{value: 0x4618, lo: 0xa1, hi: 0xa1},\n\t{value: 0x4626, lo: 0xa2, hi: 0xa2},\n\t{value: 0x4634, lo: 0xa3, hi: 0xa3},\n\t{value: 0x4642, lo: 0xa4, hi: 0xa4},\n\t{value: 0x812b, lo: 0xa5, hi: 0xa6},\n\t{value: 0x8101, lo: 0xa7, hi: 0xa9},\n\t{value: 0x8130, lo: 0xad, hi: 0xad},\n\t{value: 0x812b, lo: 0xae, hi: 0xb2},\n\t{value: 0x812d, lo: 0xbb, hi: 0xbf},\n\t// Block 0x84, offset 0x2c7\n\t{value: 0x0000, lo: 0x09},\n\t{value: 0x812d, lo: 0x80, hi: 0x82},\n\t{value: 0x8132, lo: 0x85, hi: 0x89},\n\t{value: 0x812d, lo: 0x8a, hi: 0x8b},\n\t{value: 0x8132, lo: 0xaa, hi: 0xad},\n\t{value: 0x45e0, lo: 0xbb, hi: 0xbb},\n\t{value: 0x45ea, lo: 0xbc, hi: 0xbc},\n\t{value: 0x4650, lo: 0xbd, hi: 0xbd},\n\t{value: 0x466c, lo: 0xbe, hi: 0xbe},\n\t{value: 0x465e, lo: 0xbf, hi: 0xbf},\n\t// Block 0x85, offset 0x2d1\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x467a, lo: 0x80, hi: 0x80},\n\t// Block 0x86, offset 0x2d3\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x8132, lo: 0x82, hi: 0x84},\n\t// Block 0x87, offset 0x2d5\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x0043, lo: 0x80, hi: 0x99},\n\t{value: 0x0083, lo: 0x9a, hi: 0xb3},\n\t{value: 0x0043, lo: 0xb4, hi: 0xbf},\n\t// Block 0x88, offset 0x2d9\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x005b, lo: 0x80, hi: 0x8d},\n\t{value: 0x0083, lo: 0x8e, hi: 0x94},\n\t{value: 0x0093, lo: 0x96, hi: 0xa7},\n\t{value: 0x0043, lo: 0xa8, hi: 0xbf},\n\t// Block 0x89, offset 0x2de\n\t{value: 0x0002, lo: 0x0b},\n\t{value: 0x0073, lo: 0x80, hi: 0x81},\n\t{value: 0x0083, lo: 0x82, hi: 0x9b},\n\t{value: 0x0043, lo: 0x9c, hi: 0x9c},\n\t{value: 0x0047, lo: 0x9e, hi: 0x9f},\n\t{value: 0x004f, lo: 0xa2, hi: 0xa2},\n\t{value: 0x0055, lo: 0xa5, hi: 0xa6},\n\t{value: 0x005d, lo: 0xa9, hi: 0xac},\n\t{value: 0x0067, lo: 0xae, hi: 0xb5},\n\t{value: 0x0083, lo: 0xb6, hi: 0xb9},\n\t{value: 0x008d, lo: 0xbb, hi: 0xbb},\n\t{value: 0x0091, lo: 0xbd, hi: 0xbf},\n\t// Block 0x8a, offset 0x2ea\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x0097, lo: 0x80, hi: 0x83},\n\t{value: 0x00a1, lo: 0x85, hi: 0x8f},\n\t{value: 0x0043, lo: 0x90, hi: 0xa9},\n\t{value: 0x0083, lo: 0xaa, hi: 0xbf},\n\t// Block 0x8b, offset 0x2ef\n\t{value: 0x0002, lo: 0x08},\n\t{value: 0x00af, lo: 0x80, hi: 0x83},\n\t{value: 0x0043, lo: 0x84, hi: 0x85},\n\t{value: 0x0049, lo: 0x87, hi: 0x8a},\n\t{value: 0x0055, lo: 0x8d, hi: 0x94},\n\t{value: 0x0067, lo: 0x96, hi: 0x9c},\n\t{value: 0x0083, lo: 0x9e, hi: 0xb7},\n\t{value: 0x0043, lo: 0xb8, hi: 0xb9},\n\t{value: 0x0049, lo: 0xbb, hi: 0xbe},\n\t// Block 0x8c, offset 0x2f8\n\t{value: 0x0002, lo: 0x05},\n\t{value: 0x0053, lo: 0x80, hi: 0x84},\n\t{value: 0x005f, lo: 0x86, hi: 0x86},\n\t{value: 0x0067, lo: 0x8a, hi: 0x90},\n\t{value: 0x0083, lo: 0x92, hi: 0xab},\n\t{value: 0x0043, lo: 0xac, hi: 0xbf},\n\t// Block 0x8d, offset 0x2fe\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x006b, lo: 0x80, hi: 0x85},\n\t{value: 0x0083, lo: 0x86, hi: 0x9f},\n\t{value: 0x0043, lo: 0xa0, hi: 0xb9},\n\t{value: 0x0083, lo: 0xba, hi: 0xbf},\n\t// Block 0x8e, offset 0x303\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x008f, lo: 0x80, hi: 0x93},\n\t{value: 0x0043, lo: 0x94, hi: 0xad},\n\t{value: 0x0083, lo: 0xae, hi: 0xbf},\n\t// Block 0x8f, offset 0x307\n\t{value: 0x0002, lo: 0x04},\n\t{value: 0x00a7, lo: 0x80, hi: 0x87},\n\t{value: 0x0043, lo: 0x88, hi: 0xa1},\n\t{value: 0x0083, lo: 0xa2, hi: 0xbb},\n\t{value: 0x0043, lo: 0xbc, hi: 0xbf},\n\t// Block 0x90, offset 0x30c\n\t{value: 0x0002, lo: 0x03},\n\t{value: 0x004b, lo: 0x80, hi: 0x95},\n\t{value: 0x0083, lo: 0x96, hi: 0xaf},\n\t{value: 0x0043, lo: 0xb0, hi: 0xbf},\n\t// Block 0x91, offset 0x310\n\t{value: 0x0003, lo: 0x0f},\n\t{value: 0x01b8, lo: 0x80, hi: 0x80},\n\t{value: 0x045f, lo: 0x81, hi: 0x81},\n\t{value: 0x01bb, lo: 0x82, hi: 0x9a},\n\t{value: 0x045b, lo: 0x9b, hi: 0x9b},\n\t{value: 0x01c7, lo: 0x9c, hi: 0x9c},\n\t{value: 0x01d0, lo: 0x9d, hi: 0x9d},\n\t{value: 0x01d6, lo: 0x9e, hi: 0x9e},\n\t{value: 0x01fa, lo: 0x9f, hi: 0x9f},\n\t{value: 0x01eb, lo: 0xa0, hi: 0xa0},\n\t{value: 0x01e8, lo: 0xa1, hi: 0xa1},\n\t{value: 0x0173, lo: 0xa2, hi: 0xb2},\n\t{value: 0x0188, lo: 0xb3, hi: 0xb3},\n\t{value: 0x01a6, lo: 0xb4, hi: 0xba},\n\t{value: 0x045f, lo: 0xbb, hi: 0xbb},\n\t{value: 0x01bb, lo: 0xbc, hi: 0xbf},\n\t// Block 0x92, offset 0x320\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01c7, lo: 0x80, hi: 0x94},\n\t{value: 0x045b, lo: 0x95, hi: 0x95},\n\t{value: 0x01c7, lo: 0x96, hi: 0x96},\n\t{value: 0x01d0, lo: 0x97, hi: 0x97},\n\t{value: 0x01d6, lo: 0x98, hi: 0x98},\n\t{value: 0x01fa, lo: 0x99, hi: 0x99},\n\t{value: 0x01eb, lo: 0x9a, hi: 0x9a},\n\t{value: 0x01e8, lo: 0x9b, hi: 0x9b},\n\t{value: 0x0173, lo: 0x9c, hi: 0xac},\n\t{value: 0x0188, lo: 0xad, hi: 0xad},\n\t{value: 0x01a6, lo: 0xae, hi: 0xb4},\n\t{value: 0x045f, lo: 0xb5, hi: 0xb5},\n\t{value: 0x01bb, lo: 0xb6, hi: 0xbf},\n\t// Block 0x93, offset 0x32e\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01d9, lo: 0x80, hi: 0x8e},\n\t{value: 0x045b, lo: 0x8f, hi: 0x8f},\n\t{value: 0x01c7, lo: 0x90, hi: 0x90},\n\t{value: 0x01d0, lo: 0x91, hi: 0x91},\n\t{value: 0x01d6, lo: 0x92, hi: 0x92},\n\t{value: 0x01fa, lo: 0x93, hi: 0x93},\n\t{value: 0x01eb, lo: 0x94, hi: 0x94},\n\t{value: 0x01e8, lo: 0x95, hi: 0x95},\n\t{value: 0x0173, lo: 0x96, hi: 0xa6},\n\t{value: 0x0188, lo: 0xa7, hi: 0xa7},\n\t{value: 0x01a6, lo: 0xa8, hi: 0xae},\n\t{value: 0x045f, lo: 0xaf, hi: 0xaf},\n\t{value: 0x01bb, lo: 0xb0, hi: 0xbf},\n\t// Block 0x94, offset 0x33c\n\t{value: 0x0003, lo: 0x0d},\n\t{value: 0x01eb, lo: 0x80, hi: 0x88},\n\t{value: 0x045b, lo: 0x89, hi: 0x89},\n\t{value: 0x01c7, lo: 0x8a, hi: 0x8a},\n\t{value: 0x01d0, lo: 0x8b, hi: 0x8b},\n\t{value: 0x01d6, lo: 0x8c, hi: 0x8c},\n\t{value: 0x01fa, lo: 0x8d, hi: 0x8d},\n\t{value: 0x01eb, lo: 0x8e, hi: 0x8e},\n\t{value: 0x01e8, lo: 0x8f, hi: 0x8f},\n\t{value: 0x0173, lo: 0x90, hi: 0xa0},\n\t{value: 0x0188, lo: 0xa1, hi: 0xa1},\n\t{value: 0x01a6, lo: 0xa2, hi: 0xa8},\n\t{value: 0x045f, lo: 0xa9, hi: 0xa9},\n\t{value: 0x01bb, lo: 0xaa, hi: 0xbf},\n\t// Block 0x95, offset 0x34a\n\t{value: 0x0000, lo: 0x05},\n\t{value: 0x8132, lo: 0x80, hi: 0x86},\n\t{value: 0x8132, lo: 0x88, hi: 0x98},\n\t{value: 0x8132, lo: 0x9b, hi: 0xa1},\n\t{value: 0x8132, lo: 0xa3, hi: 0xa4},\n\t{value: 0x8132, lo: 0xa6, hi: 0xaa},\n\t// Block 0x96, offset 0x350\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x812d, lo: 0x90, hi: 0x96},\n\t// Block 0x97, offset 0x352\n\t{value: 0x0000, lo: 0x02},\n\t{value: 0x8132, lo: 0x84, hi: 0x89},\n\t{value: 0x8102, lo: 0x8a, hi: 0x8a},\n\t// Block 0x98, offset 0x355\n\t{value: 0x0002, lo: 0x09},\n\t{value: 0x0063, lo: 0x80, hi: 0x89},\n\t{value: 0x1951, lo: 0x8a, hi: 0x8a},\n\t{value: 0x1981, lo: 0x8b, hi: 0x8b},\n\t{value: 0x199c, lo: 0x8c, hi: 0x8c},\n\t{value: 0x19a2, lo: 0x8d, hi: 0x8d},\n\t{value: 0x1bc0, lo: 0x8e, hi: 0x8e},\n\t{value: 0x19ae, lo: 0x8f, hi: 0x8f},\n\t{value: 0x197b, lo: 0xaa, hi: 0xaa},\n\t{value: 0x197e, lo: 0xab, hi: 0xab},\n\t// Block 0x99, offset 0x35f\n\t{value: 0x0000, lo: 0x01},\n\t{value: 0x193f, lo: 0x90, hi: 0x90},\n\t// Block 0x9a, offset 0x361\n\t{value: 0x0028, lo: 0x09},\n\t{value: 0x2862, lo: 0x80, hi: 0x80},\n\t{value: 0x2826, lo: 0x81, hi: 0x81},\n\t{value: 0x2830, lo: 0x82, hi: 0x82},\n\t{value: 0x2844, lo: 0x83, hi: 0x84},\n\t{value: 0x284e, lo: 0x85, hi: 0x86},\n\t{value: 0x283a, lo: 0x87, hi: 0x87},\n\t{value: 0x2858, lo: 0x88, hi: 0x88},\n\t{value: 0x0b6f, lo: 0x90, hi: 0x90},\n\t{value: 0x08e7, lo: 0x91, hi: 0x91},\n}\n\n// recompMap: 7520 bytes (entries only)\nvar recompMap map[uint32]rune\nvar recompMapOnce sync.Once\n\nconst recompMapPacked = \"\" +\n\t\"\\x00A\\x03\\x00\\x00\\x00\\x00\\xc0\" + // 0x00410300: 0x000000C0\n\t\"\\x00A\\x03\\x01\\x00\\x00\\x00\\xc1\" + // 0x00410301: 0x000000C1\n\t\"\\x00A\\x03\\x02\\x00\\x00\\x00\\xc2\" + // 0x00410302: 0x000000C2\n\t\"\\x00A\\x03\\x03\\x00\\x00\\x00\\xc3\" + // 0x00410303: 0x000000C3\n\t\"\\x00A\\x03\\b\\x00\\x00\\x00\\xc4\" + // 0x00410308: 0x000000C4\n\t\"\\x00A\\x03\\n\\x00\\x00\\x00\\xc5\" + // 0x0041030A: 0x000000C5\n\t\"\\x00C\\x03'\\x00\\x00\\x00\\xc7\" + // 0x00430327: 0x000000C7\n\t\"\\x00E\\x03\\x00\\x00\\x00\\x00\\xc8\" + // 0x00450300: 0x000000C8\n\t\"\\x00E\\x03\\x01\\x00\\x00\\x00\\xc9\" + // 0x00450301: 0x000000C9\n\t\"\\x00E\\x03\\x02\\x00\\x00\\x00\\xca\" + // 0x00450302: 0x000000CA\n\t\"\\x00E\\x03\\b\\x00\\x00\\x00\\xcb\" + // 0x00450308: 0x000000CB\n\t\"\\x00I\\x03\\x00\\x00\\x00\\x00\\xcc\" + // 0x00490300: 0x000000CC\n\t\"\\x00I\\x03\\x01\\x00\\x00\\x00\\xcd\" + // 0x00490301: 0x000000CD\n\t\"\\x00I\\x03\\x02\\x00\\x00\\x00\\xce\" + // 0x00490302: 0x000000CE\n\t\"\\x00I\\x03\\b\\x00\\x00\\x00\\xcf\" + // 0x00490308: 0x000000CF\n\t\"\\x00N\\x03\\x03\\x00\\x00\\x00\\xd1\" + // 0x004E0303: 0x000000D1\n\t\"\\x00O\\x03\\x00\\x00\\x00\\x00\\xd2\" + // 0x004F0300: 0x000000D2\n\t\"\\x00O\\x03\\x01\\x00\\x00\\x00\\xd3\" + // 0x004F0301: 0x000000D3\n\t\"\\x00O\\x03\\x02\\x00\\x00\\x00\\xd4\" + // 0x004F0302: 0x000000D4\n\t\"\\x00O\\x03\\x03\\x00\\x00\\x00\\xd5\" + // 0x004F0303: 0x000000D5\n\t\"\\x00O\\x03\\b\\x00\\x00\\x00\\xd6\" + // 0x004F0308: 0x000000D6\n\t\"\\x00U\\x03\\x00\\x00\\x00\\x00\\xd9\" + // 0x00550300: 0x000000D9\n\t\"\\x00U\\x03\\x01\\x00\\x00\\x00\\xda\" + // 0x00550301: 0x000000DA\n\t\"\\x00U\\x03\\x02\\x00\\x00\\x00\\xdb\" + // 0x00550302: 0x000000DB\n\t\"\\x00U\\x03\\b\\x00\\x00\\x00\\xdc\" + // 0x00550308: 0x000000DC\n\t\"\\x00Y\\x03\\x01\\x00\\x00\\x00\\xdd\" + // 0x00590301: 0x000000DD\n\t\"\\x00a\\x03\\x00\\x00\\x00\\x00\\xe0\" + // 0x00610300: 0x000000E0\n\t\"\\x00a\\x03\\x01\\x00\\x00\\x00\\xe1\" + // 0x00610301: 0x000000E1\n\t\"\\x00a\\x03\\x02\\x00\\x00\\x00\\xe2\" + // 0x00610302: 0x000000E2\n\t\"\\x00a\\x03\\x03\\x00\\x00\\x00\\xe3\" + // 0x00610303: 0x000000E3\n\t\"\\x00a\\x03\\b\\x00\\x00\\x00\\xe4\" + // 0x00610308: 0x000000E4\n\t\"\\x00a\\x03\\n\\x00\\x00\\x00\\xe5\" + // 0x0061030A: 0x000000E5\n\t\"\\x00c\\x03'\\x00\\x00\\x00\\xe7\" + // 0x00630327: 0x000000E7\n\t\"\\x00e\\x03\\x00\\x00\\x00\\x00\\xe8\" + // 0x00650300: 0x000000E8\n\t\"\\x00e\\x03\\x01\\x00\\x00\\x00\\xe9\" + // 0x00650301: 0x000000E9\n\t\"\\x00e\\x03\\x02\\x00\\x00\\x00\\xea\" + // 0x00650302: 0x000000EA\n\t\"\\x00e\\x03\\b\\x00\\x00\\x00\\xeb\" + // 0x00650308: 0x000000EB\n\t\"\\x00i\\x03\\x00\\x00\\x00\\x00\\xec\" + // 0x00690300: 0x000000EC\n\t\"\\x00i\\x03\\x01\\x00\\x00\\x00\\xed\" + // 0x00690301: 0x000000ED\n\t\"\\x00i\\x03\\x02\\x00\\x00\\x00\\xee\" + // 0x00690302: 0x000000EE\n\t\"\\x00i\\x03\\b\\x00\\x00\\x00\\xef\" + // 0x00690308: 0x000000EF\n\t\"\\x00n\\x03\\x03\\x00\\x00\\x00\\xf1\" + // 0x006E0303: 0x000000F1\n\t\"\\x00o\\x03\\x00\\x00\\x00\\x00\\xf2\" + // 0x006F0300: 0x000000F2\n\t\"\\x00o\\x03\\x01\\x00\\x00\\x00\\xf3\" + // 0x006F0301: 0x000000F3\n\t\"\\x00o\\x03\\x02\\x00\\x00\\x00\\xf4\" + // 0x006F0302: 0x000000F4\n\t\"\\x00o\\x03\\x03\\x00\\x00\\x00\\xf5\" + // 0x006F0303: 0x000000F5\n\t\"\\x00o\\x03\\b\\x00\\x00\\x00\\xf6\" + // 0x006F0308: 0x000000F6\n\t\"\\x00u\\x03\\x00\\x00\\x00\\x00\\xf9\" + // 0x00750300: 0x000000F9\n\t\"\\x00u\\x03\\x01\\x00\\x00\\x00\\xfa\" + // 0x00750301: 0x000000FA\n\t\"\\x00u\\x03\\x02\\x00\\x00\\x00\\xfb\" + // 0x00750302: 0x000000FB\n\t\"\\x00u\\x03\\b\\x00\\x00\\x00\\xfc\" + // 0x00750308: 0x000000FC\n\t\"\\x00y\\x03\\x01\\x00\\x00\\x00\\xfd\" + // 0x00790301: 0x000000FD\n\t\"\\x00y\\x03\\b\\x00\\x00\\x00\\xff\" + // 0x00790308: 0x000000FF\n\t\"\\x00A\\x03\\x04\\x00\\x00\\x01\\x00\" + // 0x00410304: 0x00000100\n\t\"\\x00a\\x03\\x04\\x00\\x00\\x01\\x01\" + // 0x00610304: 0x00000101\n\t\"\\x00A\\x03\\x06\\x00\\x00\\x01\\x02\" + // 0x00410306: 0x00000102\n\t\"\\x00a\\x03\\x06\\x00\\x00\\x01\\x03\" + // 0x00610306: 0x00000103\n\t\"\\x00A\\x03(\\x00\\x00\\x01\\x04\" + // 0x00410328: 0x00000104\n\t\"\\x00a\\x03(\\x00\\x00\\x01\\x05\" + // 0x00610328: 0x00000105\n\t\"\\x00C\\x03\\x01\\x00\\x00\\x01\\x06\" + // 0x00430301: 0x00000106\n\t\"\\x00c\\x03\\x01\\x00\\x00\\x01\\a\" + // 0x00630301: 0x00000107\n\t\"\\x00C\\x03\\x02\\x00\\x00\\x01\\b\" + // 0x00430302: 0x00000108\n\t\"\\x00c\\x03\\x02\\x00\\x00\\x01\\t\" + // 0x00630302: 0x00000109\n\t\"\\x00C\\x03\\a\\x00\\x00\\x01\\n\" + // 0x00430307: 0x0000010A\n\t\"\\x00c\\x03\\a\\x00\\x00\\x01\\v\" + // 0x00630307: 0x0000010B\n\t\"\\x00C\\x03\\f\\x00\\x00\\x01\\f\" + // 0x0043030C: 0x0000010C\n\t\"\\x00c\\x03\\f\\x00\\x00\\x01\\r\" + // 0x0063030C: 0x0000010D\n\t\"\\x00D\\x03\\f\\x00\\x00\\x01\\x0e\" + // 0x0044030C: 0x0000010E\n\t\"\\x00d\\x03\\f\\x00\\x00\\x01\\x0f\" + // 0x0064030C: 0x0000010F\n\t\"\\x00E\\x03\\x04\\x00\\x00\\x01\\x12\" + // 0x00450304: 0x00000112\n\t\"\\x00e\\x03\\x04\\x00\\x00\\x01\\x13\" + // 0x00650304: 0x00000113\n\t\"\\x00E\\x03\\x06\\x00\\x00\\x01\\x14\" + // 0x00450306: 0x00000114\n\t\"\\x00e\\x03\\x06\\x00\\x00\\x01\\x15\" + // 0x00650306: 0x00000115\n\t\"\\x00E\\x03\\a\\x00\\x00\\x01\\x16\" + // 0x00450307: 0x00000116\n\t\"\\x00e\\x03\\a\\x00\\x00\\x01\\x17\" + // 0x00650307: 0x00000117\n\t\"\\x00E\\x03(\\x00\\x00\\x01\\x18\" + // 0x00450328: 0x00000118\n\t\"\\x00e\\x03(\\x00\\x00\\x01\\x19\" + // 0x00650328: 0x00000119\n\t\"\\x00E\\x03\\f\\x00\\x00\\x01\\x1a\" + // 0x0045030C: 0x0000011A\n\t\"\\x00e\\x03\\f\\x00\\x00\\x01\\x1b\" + // 0x0065030C: 0x0000011B\n\t\"\\x00G\\x03\\x02\\x00\\x00\\x01\\x1c\" + // 0x00470302: 0x0000011C\n\t\"\\x00g\\x03\\x02\\x00\\x00\\x01\\x1d\" + // 0x00670302: 0x0000011D\n\t\"\\x00G\\x03\\x06\\x00\\x00\\x01\\x1e\" + // 0x00470306: 0x0000011E\n\t\"\\x00g\\x03\\x06\\x00\\x00\\x01\\x1f\" + // 0x00670306: 0x0000011F\n\t\"\\x00G\\x03\\a\\x00\\x00\\x01 \" + // 0x00470307: 0x00000120\n\t\"\\x00g\\x03\\a\\x00\\x00\\x01!\" + // 0x00670307: 0x00000121\n\t\"\\x00G\\x03'\\x00\\x00\\x01\\\"\" + // 0x00470327: 0x00000122\n\t\"\\x00g\\x03'\\x00\\x00\\x01#\" + // 0x00670327: 0x00000123\n\t\"\\x00H\\x03\\x02\\x00\\x00\\x01$\" + // 0x00480302: 0x00000124\n\t\"\\x00h\\x03\\x02\\x00\\x00\\x01%\" + // 0x00680302: 0x00000125\n\t\"\\x00I\\x03\\x03\\x00\\x00\\x01(\" + // 0x00490303: 0x00000128\n\t\"\\x00i\\x03\\x03\\x00\\x00\\x01)\" + // 0x00690303: 0x00000129\n\t\"\\x00I\\x03\\x04\\x00\\x00\\x01*\" + // 0x00490304: 0x0000012A\n\t\"\\x00i\\x03\\x04\\x00\\x00\\x01+\" + // 0x00690304: 0x0000012B\n\t\"\\x00I\\x03\\x06\\x00\\x00\\x01,\" + // 0x00490306: 0x0000012C\n\t\"\\x00i\\x03\\x06\\x00\\x00\\x01-\" + // 0x00690306: 0x0000012D\n\t\"\\x00I\\x03(\\x00\\x00\\x01.\" + // 0x00490328: 0x0000012E\n\t\"\\x00i\\x03(\\x00\\x00\\x01/\" + // 0x00690328: 0x0000012F\n\t\"\\x00I\\x03\\a\\x00\\x00\\x010\" + // 0x00490307: 0x00000130\n\t\"\\x00J\\x03\\x02\\x00\\x00\\x014\" + // 0x004A0302: 0x00000134\n\t\"\\x00j\\x03\\x02\\x00\\x00\\x015\" + // 0x006A0302: 0x00000135\n\t\"\\x00K\\x03'\\x00\\x00\\x016\" + // 0x004B0327: 0x00000136\n\t\"\\x00k\\x03'\\x00\\x00\\x017\" + // 0x006B0327: 0x00000137\n\t\"\\x00L\\x03\\x01\\x00\\x00\\x019\" + // 0x004C0301: 0x00000139\n\t\"\\x00l\\x03\\x01\\x00\\x00\\x01:\" + // 0x006C0301: 0x0000013A\n\t\"\\x00L\\x03'\\x00\\x00\\x01;\" + // 0x004C0327: 0x0000013B\n\t\"\\x00l\\x03'\\x00\\x00\\x01<\" + // 0x006C0327: 0x0000013C\n\t\"\\x00L\\x03\\f\\x00\\x00\\x01=\" + // 0x004C030C: 0x0000013D\n\t\"\\x00l\\x03\\f\\x00\\x00\\x01>\" + // 0x006C030C: 0x0000013E\n\t\"\\x00N\\x03\\x01\\x00\\x00\\x01C\" + // 0x004E0301: 0x00000143\n\t\"\\x00n\\x03\\x01\\x00\\x00\\x01D\" + // 0x006E0301: 0x00000144\n\t\"\\x00N\\x03'\\x00\\x00\\x01E\" + // 0x004E0327: 0x00000145\n\t\"\\x00n\\x03'\\x00\\x00\\x01F\" + // 0x006E0327: 0x00000146\n\t\"\\x00N\\x03\\f\\x00\\x00\\x01G\" + // 0x004E030C: 0x00000147\n\t\"\\x00n\\x03\\f\\x00\\x00\\x01H\" + // 0x006E030C: 0x00000148\n\t\"\\x00O\\x03\\x04\\x00\\x00\\x01L\" + // 0x004F0304: 0x0000014C\n\t\"\\x00o\\x03\\x04\\x00\\x00\\x01M\" + // 0x006F0304: 0x0000014D\n\t\"\\x00O\\x03\\x06\\x00\\x00\\x01N\" + // 0x004F0306: 0x0000014E\n\t\"\\x00o\\x03\\x06\\x00\\x00\\x01O\" + // 0x006F0306: 0x0000014F\n\t\"\\x00O\\x03\\v\\x00\\x00\\x01P\" + // 0x004F030B: 0x00000150\n\t\"\\x00o\\x03\\v\\x00\\x00\\x01Q\" + // 0x006F030B: 0x00000151\n\t\"\\x00R\\x03\\x01\\x00\\x00\\x01T\" + // 0x00520301: 0x00000154\n\t\"\\x00r\\x03\\x01\\x00\\x00\\x01U\" + // 0x00720301: 0x00000155\n\t\"\\x00R\\x03'\\x00\\x00\\x01V\" + // 0x00520327: 0x00000156\n\t\"\\x00r\\x03'\\x00\\x00\\x01W\" + // 0x00720327: 0x00000157\n\t\"\\x00R\\x03\\f\\x00\\x00\\x01X\" + // 0x0052030C: 0x00000158\n\t\"\\x00r\\x03\\f\\x00\\x00\\x01Y\" + // 0x0072030C: 0x00000159\n\t\"\\x00S\\x03\\x01\\x00\\x00\\x01Z\" + // 0x00530301: 0x0000015A\n\t\"\\x00s\\x03\\x01\\x00\\x00\\x01[\" + // 0x00730301: 0x0000015B\n\t\"\\x00S\\x03\\x02\\x00\\x00\\x01\\\\\" + // 0x00530302: 0x0000015C\n\t\"\\x00s\\x03\\x02\\x00\\x00\\x01]\" + // 0x00730302: 0x0000015D\n\t\"\\x00S\\x03'\\x00\\x00\\x01^\" + // 0x00530327: 0x0000015E\n\t\"\\x00s\\x03'\\x00\\x00\\x01_\" + // 0x00730327: 0x0000015F\n\t\"\\x00S\\x03\\f\\x00\\x00\\x01`\" + // 0x0053030C: 0x00000160\n\t\"\\x00s\\x03\\f\\x00\\x00\\x01a\" + // 0x0073030C: 0x00000161\n\t\"\\x00T\\x03'\\x00\\x00\\x01b\" + // 0x00540327: 0x00000162\n\t\"\\x00t\\x03'\\x00\\x00\\x01c\" + // 0x00740327: 0x00000163\n\t\"\\x00T\\x03\\f\\x00\\x00\\x01d\" + // 0x0054030C: 0x00000164\n\t\"\\x00t\\x03\\f\\x00\\x00\\x01e\" + // 0x0074030C: 0x00000165\n\t\"\\x00U\\x03\\x03\\x00\\x00\\x01h\" + // 0x00550303: 0x00000168\n\t\"\\x00u\\x03\\x03\\x00\\x00\\x01i\" + // 0x00750303: 0x00000169\n\t\"\\x00U\\x03\\x04\\x00\\x00\\x01j\" + // 0x00550304: 0x0000016A\n\t\"\\x00u\\x03\\x04\\x00\\x00\\x01k\" + // 0x00750304: 0x0000016B\n\t\"\\x00U\\x03\\x06\\x00\\x00\\x01l\" + // 0x00550306: 0x0000016C\n\t\"\\x00u\\x03\\x06\\x00\\x00\\x01m\" + // 0x00750306: 0x0000016D\n\t\"\\x00U\\x03\\n\\x00\\x00\\x01n\" + // 0x0055030A: 0x0000016E\n\t\"\\x00u\\x03\\n\\x00\\x00\\x01o\" + // 0x0075030A: 0x0000016F\n\t\"\\x00U\\x03\\v\\x00\\x00\\x01p\" + // 0x0055030B: 0x00000170\n\t\"\\x00u\\x03\\v\\x00\\x00\\x01q\" + // 0x0075030B: 0x00000171\n\t\"\\x00U\\x03(\\x00\\x00\\x01r\" + // 0x00550328: 0x00000172\n\t\"\\x00u\\x03(\\x00\\x00\\x01s\" + // 0x00750328: 0x00000173\n\t\"\\x00W\\x03\\x02\\x00\\x00\\x01t\" + // 0x00570302: 0x00000174\n\t\"\\x00w\\x03\\x02\\x00\\x00\\x01u\" + // 0x00770302: 0x00000175\n\t\"\\x00Y\\x03\\x02\\x00\\x00\\x01v\" + // 0x00590302: 0x00000176\n\t\"\\x00y\\x03\\x02\\x00\\x00\\x01w\" + // 0x00790302: 0x00000177\n\t\"\\x00Y\\x03\\b\\x00\\x00\\x01x\" + // 0x00590308: 0x00000178\n\t\"\\x00Z\\x03\\x01\\x00\\x00\\x01y\" + // 0x005A0301: 0x00000179\n\t\"\\x00z\\x03\\x01\\x00\\x00\\x01z\" + // 0x007A0301: 0x0000017A\n\t\"\\x00Z\\x03\\a\\x00\\x00\\x01{\" + // 0x005A0307: 0x0000017B\n\t\"\\x00z\\x03\\a\\x00\\x00\\x01|\" + // 0x007A0307: 0x0000017C\n\t\"\\x00Z\\x03\\f\\x00\\x00\\x01}\" + // 0x005A030C: 0x0000017D\n\t\"\\x00z\\x03\\f\\x00\\x00\\x01~\" + // 0x007A030C: 0x0000017E\n\t\"\\x00O\\x03\\x1b\\x00\\x00\\x01\\xa0\" + // 0x004F031B: 0x000001A0\n\t\"\\x00o\\x03\\x1b\\x00\\x00\\x01\\xa1\" + // 0x006F031B: 0x000001A1\n\t\"\\x00U\\x03\\x1b\\x00\\x00\\x01\\xaf\" + // 0x0055031B: 0x000001AF\n\t\"\\x00u\\x03\\x1b\\x00\\x00\\x01\\xb0\" + // 0x0075031B: 0x000001B0\n\t\"\\x00A\\x03\\f\\x00\\x00\\x01\\xcd\" + // 0x0041030C: 0x000001CD\n\t\"\\x00a\\x03\\f\\x00\\x00\\x01\\xce\" + // 0x0061030C: 0x000001CE\n\t\"\\x00I\\x03\\f\\x00\\x00\\x01\\xcf\" + // 0x0049030C: 0x000001CF\n\t\"\\x00i\\x03\\f\\x00\\x00\\x01\\xd0\" + // 0x0069030C: 0x000001D0\n\t\"\\x00O\\x03\\f\\x00\\x00\\x01\\xd1\" + // 0x004F030C: 0x000001D1\n\t\"\\x00o\\x03\\f\\x00\\x00\\x01\\xd2\" + // 0x006F030C: 0x000001D2\n\t\"\\x00U\\x03\\f\\x00\\x00\\x01\\xd3\" + // 0x0055030C: 0x000001D3\n\t\"\\x00u\\x03\\f\\x00\\x00\\x01\\xd4\" + // 0x0075030C: 0x000001D4\n\t\"\\x00\\xdc\\x03\\x04\\x00\\x00\\x01\\xd5\" + // 0x00DC0304: 0x000001D5\n\t\"\\x00\\xfc\\x03\\x04\\x00\\x00\\x01\\xd6\" + // 0x00FC0304: 0x000001D6\n\t\"\\x00\\xdc\\x03\\x01\\x00\\x00\\x01\\xd7\" + // 0x00DC0301: 0x000001D7\n\t\"\\x00\\xfc\\x03\\x01\\x00\\x00\\x01\\xd8\" + // 0x00FC0301: 0x000001D8\n\t\"\\x00\\xdc\\x03\\f\\x00\\x00\\x01\\xd9\" + // 0x00DC030C: 0x000001D9\n\t\"\\x00\\xfc\\x03\\f\\x00\\x00\\x01\\xda\" + // 0x00FC030C: 0x000001DA\n\t\"\\x00\\xdc\\x03\\x00\\x00\\x00\\x01\\xdb\" + // 0x00DC0300: 0x000001DB\n\t\"\\x00\\xfc\\x03\\x00\\x00\\x00\\x01\\xdc\" + // 0x00FC0300: 0x000001DC\n\t\"\\x00\\xc4\\x03\\x04\\x00\\x00\\x01\\xde\" + // 0x00C40304: 0x000001DE\n\t\"\\x00\\xe4\\x03\\x04\\x00\\x00\\x01\\xdf\" + // 0x00E40304: 0x000001DF\n\t\"\\x02&\\x03\\x04\\x00\\x00\\x01\\xe0\" + // 0x02260304: 0x000001E0\n\t\"\\x02'\\x03\\x04\\x00\\x00\\x01\\xe1\" + // 0x02270304: 0x000001E1\n\t\"\\x00\\xc6\\x03\\x04\\x00\\x00\\x01\\xe2\" + // 0x00C60304: 0x000001E2\n\t\"\\x00\\xe6\\x03\\x04\\x00\\x00\\x01\\xe3\" + // 0x00E60304: 0x000001E3\n\t\"\\x00G\\x03\\f\\x00\\x00\\x01\\xe6\" + // 0x0047030C: 0x000001E6\n\t\"\\x00g\\x03\\f\\x00\\x00\\x01\\xe7\" + // 0x0067030C: 0x000001E7\n\t\"\\x00K\\x03\\f\\x00\\x00\\x01\\xe8\" + // 0x004B030C: 0x000001E8\n\t\"\\x00k\\x03\\f\\x00\\x00\\x01\\xe9\" + // 0x006B030C: 0x000001E9\n\t\"\\x00O\\x03(\\x00\\x00\\x01\\xea\" + // 0x004F0328: 0x000001EA\n\t\"\\x00o\\x03(\\x00\\x00\\x01\\xeb\" + // 0x006F0328: 0x000001EB\n\t\"\\x01\\xea\\x03\\x04\\x00\\x00\\x01\\xec\" + // 0x01EA0304: 0x000001EC\n\t\"\\x01\\xeb\\x03\\x04\\x00\\x00\\x01\\xed\" + // 0x01EB0304: 0x000001ED\n\t\"\\x01\\xb7\\x03\\f\\x00\\x00\\x01\\xee\" + // 0x01B7030C: 0x000001EE\n\t\"\\x02\\x92\\x03\\f\\x00\\x00\\x01\\xef\" + // 0x0292030C: 0x000001EF\n\t\"\\x00j\\x03\\f\\x00\\x00\\x01\\xf0\" + // 0x006A030C: 0x000001F0\n\t\"\\x00G\\x03\\x01\\x00\\x00\\x01\\xf4\" + // 0x00470301: 0x000001F4\n\t\"\\x00g\\x03\\x01\\x00\\x00\\x01\\xf5\" + // 0x00670301: 0x000001F5\n\t\"\\x00N\\x03\\x00\\x00\\x00\\x01\\xf8\" + // 0x004E0300: 0x000001F8\n\t\"\\x00n\\x03\\x00\\x00\\x00\\x01\\xf9\" + // 0x006E0300: 0x000001F9\n\t\"\\x00\\xc5\\x03\\x01\\x00\\x00\\x01\\xfa\" + // 0x00C50301: 0x000001FA\n\t\"\\x00\\xe5\\x03\\x01\\x00\\x00\\x01\\xfb\" + // 0x00E50301: 0x000001FB\n\t\"\\x00\\xc6\\x03\\x01\\x00\\x00\\x01\\xfc\" + // 0x00C60301: 0x000001FC\n\t\"\\x00\\xe6\\x03\\x01\\x00\\x00\\x01\\xfd\" + // 0x00E60301: 0x000001FD\n\t\"\\x00\\xd8\\x03\\x01\\x00\\x00\\x01\\xfe\" + // 0x00D80301: 0x000001FE\n\t\"\\x00\\xf8\\x03\\x01\\x00\\x00\\x01\\xff\" + // 0x00F80301: 0x000001FF\n\t\"\\x00A\\x03\\x0f\\x00\\x00\\x02\\x00\" + // 0x0041030F: 0x00000200\n\t\"\\x00a\\x03\\x0f\\x00\\x00\\x02\\x01\" + // 0x0061030F: 0x00000201\n\t\"\\x00A\\x03\\x11\\x00\\x00\\x02\\x02\" + // 0x00410311: 0x00000202\n\t\"\\x00a\\x03\\x11\\x00\\x00\\x02\\x03\" + // 0x00610311: 0x00000203\n\t\"\\x00E\\x03\\x0f\\x00\\x00\\x02\\x04\" + // 0x0045030F: 0x00000204\n\t\"\\x00e\\x03\\x0f\\x00\\x00\\x02\\x05\" + // 0x0065030F: 0x00000205\n\t\"\\x00E\\x03\\x11\\x00\\x00\\x02\\x06\" + // 0x00450311: 0x00000206\n\t\"\\x00e\\x03\\x11\\x00\\x00\\x02\\a\" + // 0x00650311: 0x00000207\n\t\"\\x00I\\x03\\x0f\\x00\\x00\\x02\\b\" + // 0x0049030F: 0x00000208\n\t\"\\x00i\\x03\\x0f\\x00\\x00\\x02\\t\" + // 0x0069030F: 0x00000209\n\t\"\\x00I\\x03\\x11\\x00\\x00\\x02\\n\" + // 0x00490311: 0x0000020A\n\t\"\\x00i\\x03\\x11\\x00\\x00\\x02\\v\" + // 0x00690311: 0x0000020B\n\t\"\\x00O\\x03\\x0f\\x00\\x00\\x02\\f\" + // 0x004F030F: 0x0000020C\n\t\"\\x00o\\x03\\x0f\\x00\\x00\\x02\\r\" + // 0x006F030F: 0x0000020D\n\t\"\\x00O\\x03\\x11\\x00\\x00\\x02\\x0e\" + // 0x004F0311: 0x0000020E\n\t\"\\x00o\\x03\\x11\\x00\\x00\\x02\\x0f\" + // 0x006F0311: 0x0000020F\n\t\"\\x00R\\x03\\x0f\\x00\\x00\\x02\\x10\" + // 0x0052030F: 0x00000210\n\t\"\\x00r\\x03\\x0f\\x00\\x00\\x02\\x11\" + // 0x0072030F: 0x00000211\n\t\"\\x00R\\x03\\x11\\x00\\x00\\x02\\x12\" + // 0x00520311: 0x00000212\n\t\"\\x00r\\x03\\x11\\x00\\x00\\x02\\x13\" + // 0x00720311: 0x00000213\n\t\"\\x00U\\x03\\x0f\\x00\\x00\\x02\\x14\" + // 0x0055030F: 0x00000214\n\t\"\\x00u\\x03\\x0f\\x00\\x00\\x02\\x15\" + // 0x0075030F: 0x00000215\n\t\"\\x00U\\x03\\x11\\x00\\x00\\x02\\x16\" + // 0x00550311: 0x00000216\n\t\"\\x00u\\x03\\x11\\x00\\x00\\x02\\x17\" + // 0x00750311: 0x00000217\n\t\"\\x00S\\x03&\\x00\\x00\\x02\\x18\" + // 0x00530326: 0x00000218\n\t\"\\x00s\\x03&\\x00\\x00\\x02\\x19\" + // 0x00730326: 0x00000219\n\t\"\\x00T\\x03&\\x00\\x00\\x02\\x1a\" + // 0x00540326: 0x0000021A\n\t\"\\x00t\\x03&\\x00\\x00\\x02\\x1b\" + // 0x00740326: 0x0000021B\n\t\"\\x00H\\x03\\f\\x00\\x00\\x02\\x1e\" + // 0x0048030C: 0x0000021E\n\t\"\\x00h\\x03\\f\\x00\\x00\\x02\\x1f\" + // 0x0068030C: 0x0000021F\n\t\"\\x00A\\x03\\a\\x00\\x00\\x02&\" + // 0x00410307: 0x00000226\n\t\"\\x00a\\x03\\a\\x00\\x00\\x02'\" + // 0x00610307: 0x00000227\n\t\"\\x00E\\x03'\\x00\\x00\\x02(\" + // 0x00450327: 0x00000228\n\t\"\\x00e\\x03'\\x00\\x00\\x02)\" + // 0x00650327: 0x00000229\n\t\"\\x00\\xd6\\x03\\x04\\x00\\x00\\x02*\" + // 0x00D60304: 0x0000022A\n\t\"\\x00\\xf6\\x03\\x04\\x00\\x00\\x02+\" + // 0x00F60304: 0x0000022B\n\t\"\\x00\\xd5\\x03\\x04\\x00\\x00\\x02,\" + // 0x00D50304: 0x0000022C\n\t\"\\x00\\xf5\\x03\\x04\\x00\\x00\\x02-\" + // 0x00F50304: 0x0000022D\n\t\"\\x00O\\x03\\a\\x00\\x00\\x02.\" + // 0x004F0307: 0x0000022E\n\t\"\\x00o\\x03\\a\\x00\\x00\\x02/\" + // 0x006F0307: 0x0000022F\n\t\"\\x02.\\x03\\x04\\x00\\x00\\x020\" + // 0x022E0304: 0x00000230\n\t\"\\x02/\\x03\\x04\\x00\\x00\\x021\" + // 0x022F0304: 0x00000231\n\t\"\\x00Y\\x03\\x04\\x00\\x00\\x022\" + // 0x00590304: 0x00000232\n\t\"\\x00y\\x03\\x04\\x00\\x00\\x023\" + // 0x00790304: 0x00000233\n\t\"\\x00\\xa8\\x03\\x01\\x00\\x00\\x03\\x85\" + // 0x00A80301: 0x00000385\n\t\"\\x03\\x91\\x03\\x01\\x00\\x00\\x03\\x86\" + // 0x03910301: 0x00000386\n\t\"\\x03\\x95\\x03\\x01\\x00\\x00\\x03\\x88\" + // 0x03950301: 0x00000388\n\t\"\\x03\\x97\\x03\\x01\\x00\\x00\\x03\\x89\" + // 0x03970301: 0x00000389\n\t\"\\x03\\x99\\x03\\x01\\x00\\x00\\x03\\x8a\" + // 0x03990301: 0x0000038A\n\t\"\\x03\\x9f\\x03\\x01\\x00\\x00\\x03\\x8c\" + // 0x039F0301: 0x0000038C\n\t\"\\x03\\xa5\\x03\\x01\\x00\\x00\\x03\\x8e\" + // 0x03A50301: 0x0000038E\n\t\"\\x03\\xa9\\x03\\x01\\x00\\x00\\x03\\x8f\" + // 0x03A90301: 0x0000038F\n\t\"\\x03\\xca\\x03\\x01\\x00\\x00\\x03\\x90\" + // 0x03CA0301: 0x00000390\n\t\"\\x03\\x99\\x03\\b\\x00\\x00\\x03\\xaa\" + // 0x03990308: 0x000003AA\n\t\"\\x03\\xa5\\x03\\b\\x00\\x00\\x03\\xab\" + // 0x03A50308: 0x000003AB\n\t\"\\x03\\xb1\\x03\\x01\\x00\\x00\\x03\\xac\" + // 0x03B10301: 0x000003AC\n\t\"\\x03\\xb5\\x03\\x01\\x00\\x00\\x03\\xad\" + // 0x03B50301: 0x000003AD\n\t\"\\x03\\xb7\\x03\\x01\\x00\\x00\\x03\\xae\" + // 0x03B70301: 0x000003AE\n\t\"\\x03\\xb9\\x03\\x01\\x00\\x00\\x03\\xaf\" + // 0x03B90301: 0x000003AF\n\t\"\\x03\\xcb\\x03\\x01\\x00\\x00\\x03\\xb0\" + // 0x03CB0301: 0x000003B0\n\t\"\\x03\\xb9\\x03\\b\\x00\\x00\\x03\\xca\" + // 0x03B90308: 0x000003CA\n\t\"\\x03\\xc5\\x03\\b\\x00\\x00\\x03\\xcb\" + // 0x03C50308: 0x000003CB\n\t\"\\x03\\xbf\\x03\\x01\\x00\\x00\\x03\\xcc\" + // 0x03BF0301: 0x000003CC\n\t\"\\x03\\xc5\\x03\\x01\\x00\\x00\\x03\\xcd\" + // 0x03C50301: 0x000003CD\n\t\"\\x03\\xc9\\x03\\x01\\x00\\x00\\x03\\xce\" + // 0x03C90301: 0x000003CE\n\t\"\\x03\\xd2\\x03\\x01\\x00\\x00\\x03\\xd3\" + // 0x03D20301: 0x000003D3\n\t\"\\x03\\xd2\\x03\\b\\x00\\x00\\x03\\xd4\" + // 0x03D20308: 0x000003D4\n\t\"\\x04\\x15\\x03\\x00\\x00\\x00\\x04\\x00\" + // 0x04150300: 0x00000400\n\t\"\\x04\\x15\\x03\\b\\x00\\x00\\x04\\x01\" + // 0x04150308: 0x00000401\n\t\"\\x04\\x13\\x03\\x01\\x00\\x00\\x04\\x03\" + // 0x04130301: 0x00000403\n\t\"\\x04\\x06\\x03\\b\\x00\\x00\\x04\\a\" + // 0x04060308: 0x00000407\n\t\"\\x04\\x1a\\x03\\x01\\x00\\x00\\x04\\f\" + // 0x041A0301: 0x0000040C\n\t\"\\x04\\x18\\x03\\x00\\x00\\x00\\x04\\r\" + // 0x04180300: 0x0000040D\n\t\"\\x04#\\x03\\x06\\x00\\x00\\x04\\x0e\" + // 0x04230306: 0x0000040E\n\t\"\\x04\\x18\\x03\\x06\\x00\\x00\\x04\\x19\" + // 0x04180306: 0x00000419\n\t\"\\x048\\x03\\x06\\x00\\x00\\x049\" + // 0x04380306: 0x00000439\n\t\"\\x045\\x03\\x00\\x00\\x00\\x04P\" + // 0x04350300: 0x00000450\n\t\"\\x045\\x03\\b\\x00\\x00\\x04Q\" + // 0x04350308: 0x00000451\n\t\"\\x043\\x03\\x01\\x00\\x00\\x04S\" + // 0x04330301: 0x00000453\n\t\"\\x04V\\x03\\b\\x00\\x00\\x04W\" + // 0x04560308: 0x00000457\n\t\"\\x04:\\x03\\x01\\x00\\x00\\x04\\\\\" + // 0x043A0301: 0x0000045C\n\t\"\\x048\\x03\\x00\\x00\\x00\\x04]\" + // 0x04380300: 0x0000045D\n\t\"\\x04C\\x03\\x06\\x00\\x00\\x04^\" + // 0x04430306: 0x0000045E\n\t\"\\x04t\\x03\\x0f\\x00\\x00\\x04v\" + // 0x0474030F: 0x00000476\n\t\"\\x04u\\x03\\x0f\\x00\\x00\\x04w\" + // 0x0475030F: 0x00000477\n\t\"\\x04\\x16\\x03\\x06\\x00\\x00\\x04\\xc1\" + // 0x04160306: 0x000004C1\n\t\"\\x046\\x03\\x06\\x00\\x00\\x04\\xc2\" + // 0x04360306: 0x000004C2\n\t\"\\x04\\x10\\x03\\x06\\x00\\x00\\x04\\xd0\" + // 0x04100306: 0x000004D0\n\t\"\\x040\\x03\\x06\\x00\\x00\\x04\\xd1\" + // 0x04300306: 0x000004D1\n\t\"\\x04\\x10\\x03\\b\\x00\\x00\\x04\\xd2\" + // 0x04100308: 0x000004D2\n\t\"\\x040\\x03\\b\\x00\\x00\\x04\\xd3\" + // 0x04300308: 0x000004D3\n\t\"\\x04\\x15\\x03\\x06\\x00\\x00\\x04\\xd6\" + // 0x04150306: 0x000004D6\n\t\"\\x045\\x03\\x06\\x00\\x00\\x04\\xd7\" + // 0x04350306: 0x000004D7\n\t\"\\x04\\xd8\\x03\\b\\x00\\x00\\x04\\xda\" + // 0x04D80308: 0x000004DA\n\t\"\\x04\\xd9\\x03\\b\\x00\\x00\\x04\\xdb\" + // 0x04D90308: 0x000004DB\n\t\"\\x04\\x16\\x03\\b\\x00\\x00\\x04\\xdc\" + // 0x04160308: 0x000004DC\n\t\"\\x046\\x03\\b\\x00\\x00\\x04\\xdd\" + // 0x04360308: 0x000004DD\n\t\"\\x04\\x17\\x03\\b\\x00\\x00\\x04\\xde\" + // 0x04170308: 0x000004DE\n\t\"\\x047\\x03\\b\\x00\\x00\\x04\\xdf\" + // 0x04370308: 0x000004DF\n\t\"\\x04\\x18\\x03\\x04\\x00\\x00\\x04\\xe2\" + // 0x04180304: 0x000004E2\n\t\"\\x048\\x03\\x04\\x00\\x00\\x04\\xe3\" + // 0x04380304: 0x000004E3\n\t\"\\x04\\x18\\x03\\b\\x00\\x00\\x04\\xe4\" + // 0x04180308: 0x000004E4\n\t\"\\x048\\x03\\b\\x00\\x00\\x04\\xe5\" + // 0x04380308: 0x000004E5\n\t\"\\x04\\x1e\\x03\\b\\x00\\x00\\x04\\xe6\" + // 0x041E0308: 0x000004E6\n\t\"\\x04>\\x03\\b\\x00\\x00\\x04\\xe7\" + // 0x043E0308: 0x000004E7\n\t\"\\x04\\xe8\\x03\\b\\x00\\x00\\x04\\xea\" + // 0x04E80308: 0x000004EA\n\t\"\\x04\\xe9\\x03\\b\\x00\\x00\\x04\\xeb\" + // 0x04E90308: 0x000004EB\n\t\"\\x04-\\x03\\b\\x00\\x00\\x04\\xec\" + // 0x042D0308: 0x000004EC\n\t\"\\x04M\\x03\\b\\x00\\x00\\x04\\xed\" + // 0x044D0308: 0x000004ED\n\t\"\\x04#\\x03\\x04\\x00\\x00\\x04\\xee\" + // 0x04230304: 0x000004EE\n\t\"\\x04C\\x03\\x04\\x00\\x00\\x04\\xef\" + // 0x04430304: 0x000004EF\n\t\"\\x04#\\x03\\b\\x00\\x00\\x04\\xf0\" + // 0x04230308: 0x000004F0\n\t\"\\x04C\\x03\\b\\x00\\x00\\x04\\xf1\" + // 0x04430308: 0x000004F1\n\t\"\\x04#\\x03\\v\\x00\\x00\\x04\\xf2\" + // 0x0423030B: 0x000004F2\n\t\"\\x04C\\x03\\v\\x00\\x00\\x04\\xf3\" + // 0x0443030B: 0x000004F3\n\t\"\\x04'\\x03\\b\\x00\\x00\\x04\\xf4\" + // 0x04270308: 0x000004F4\n\t\"\\x04G\\x03\\b\\x00\\x00\\x04\\xf5\" + // 0x04470308: 0x000004F5\n\t\"\\x04+\\x03\\b\\x00\\x00\\x04\\xf8\" + // 0x042B0308: 0x000004F8\n\t\"\\x04K\\x03\\b\\x00\\x00\\x04\\xf9\" + // 0x044B0308: 0x000004F9\n\t\"\\x06'\\x06S\\x00\\x00\\x06\\\"\" + // 0x06270653: 0x00000622\n\t\"\\x06'\\x06T\\x00\\x00\\x06#\" + // 0x06270654: 0x00000623\n\t\"\\x06H\\x06T\\x00\\x00\\x06$\" + // 0x06480654: 0x00000624\n\t\"\\x06'\\x06U\\x00\\x00\\x06%\" + // 0x06270655: 0x00000625\n\t\"\\x06J\\x06T\\x00\\x00\\x06&\" + // 0x064A0654: 0x00000626\n\t\"\\x06\\xd5\\x06T\\x00\\x00\\x06\\xc0\" + // 0x06D50654: 0x000006C0\n\t\"\\x06\\xc1\\x06T\\x00\\x00\\x06\\xc2\" + // 0x06C10654: 0x000006C2\n\t\"\\x06\\xd2\\x06T\\x00\\x00\\x06\\xd3\" + // 0x06D20654: 0x000006D3\n\t\"\\t(\\t<\\x00\\x00\\t)\" + // 0x0928093C: 0x00000929\n\t\"\\t0\\t<\\x00\\x00\\t1\" + // 0x0930093C: 0x00000931\n\t\"\\t3\\t<\\x00\\x00\\t4\" + // 0x0933093C: 0x00000934\n\t\"\\t\\xc7\\t\\xbe\\x00\\x00\\t\\xcb\" + // 0x09C709BE: 0x000009CB\n\t\"\\t\\xc7\\t\\xd7\\x00\\x00\\t\\xcc\" + // 0x09C709D7: 0x000009CC\n\t\"\\vG\\vV\\x00\\x00\\vH\" + // 0x0B470B56: 0x00000B48\n\t\"\\vG\\v>\\x00\\x00\\vK\" + // 0x0B470B3E: 0x00000B4B\n\t\"\\vG\\vW\\x00\\x00\\vL\" + // 0x0B470B57: 0x00000B4C\n\t\"\\v\\x92\\v\\xd7\\x00\\x00\\v\\x94\" + // 0x0B920BD7: 0x00000B94\n\t\"\\v\\xc6\\v\\xbe\\x00\\x00\\v\\xca\" + // 0x0BC60BBE: 0x00000BCA\n\t\"\\v\\xc7\\v\\xbe\\x00\\x00\\v\\xcb\" + // 0x0BC70BBE: 0x00000BCB\n\t\"\\v\\xc6\\v\\xd7\\x00\\x00\\v\\xcc\" + // 0x0BC60BD7: 0x00000BCC\n\t\"\\fF\\fV\\x00\\x00\\fH\" + // 0x0C460C56: 0x00000C48\n\t\"\\f\\xbf\\f\\xd5\\x00\\x00\\f\\xc0\" + // 0x0CBF0CD5: 0x00000CC0\n\t\"\\f\\xc6\\f\\xd5\\x00\\x00\\f\\xc7\" + // 0x0CC60CD5: 0x00000CC7\n\t\"\\f\\xc6\\f\\xd6\\x00\\x00\\f\\xc8\" + // 0x0CC60CD6: 0x00000CC8\n\t\"\\f\\xc6\\f\\xc2\\x00\\x00\\f\\xca\" + // 0x0CC60CC2: 0x00000CCA\n\t\"\\f\\xca\\f\\xd5\\x00\\x00\\f\\xcb\" + // 0x0CCA0CD5: 0x00000CCB\n\t\"\\rF\\r>\\x00\\x00\\rJ\" + // 0x0D460D3E: 0x00000D4A\n\t\"\\rG\\r>\\x00\\x00\\rK\" + // 0x0D470D3E: 0x00000D4B\n\t\"\\rF\\rW\\x00\\x00\\rL\" + // 0x0D460D57: 0x00000D4C\n\t\"\\r\\xd9\\r\\xca\\x00\\x00\\r\\xda\" + // 0x0DD90DCA: 0x00000DDA\n\t\"\\r\\xd9\\r\\xcf\\x00\\x00\\r\\xdc\" + // 0x0DD90DCF: 0x00000DDC\n\t\"\\r\\xdc\\r\\xca\\x00\\x00\\r\\xdd\" + // 0x0DDC0DCA: 0x00000DDD\n\t\"\\r\\xd9\\r\\xdf\\x00\\x00\\r\\xde\" + // 0x0DD90DDF: 0x00000DDE\n\t\"\\x10%\\x10.\\x00\\x00\\x10&\" + // 0x1025102E: 0x00001026\n\t\"\\x1b\\x05\\x1b5\\x00\\x00\\x1b\\x06\" + // 0x1B051B35: 0x00001B06\n\t\"\\x1b\\a\\x1b5\\x00\\x00\\x1b\\b\" + // 0x1B071B35: 0x00001B08\n\t\"\\x1b\\t\\x1b5\\x00\\x00\\x1b\\n\" + // 0x1B091B35: 0x00001B0A\n\t\"\\x1b\\v\\x1b5\\x00\\x00\\x1b\\f\" + // 0x1B0B1B35: 0x00001B0C\n\t\"\\x1b\\r\\x1b5\\x00\\x00\\x1b\\x0e\" + // 0x1B0D1B35: 0x00001B0E\n\t\"\\x1b\\x11\\x1b5\\x00\\x00\\x1b\\x12\" + // 0x1B111B35: 0x00001B12\n\t\"\\x1b:\\x1b5\\x00\\x00\\x1b;\" + // 0x1B3A1B35: 0x00001B3B\n\t\"\\x1b<\\x1b5\\x00\\x00\\x1b=\" + // 0x1B3C1B35: 0x00001B3D\n\t\"\\x1b>\\x1b5\\x00\\x00\\x1b@\" + // 0x1B3E1B35: 0x00001B40\n\t\"\\x1b?\\x1b5\\x00\\x00\\x1bA\" + // 0x1B3F1B35: 0x00001B41\n\t\"\\x1bB\\x1b5\\x00\\x00\\x1bC\" + // 0x1B421B35: 0x00001B43\n\t\"\\x00A\\x03%\\x00\\x00\\x1e\\x00\" + // 0x00410325: 0x00001E00\n\t\"\\x00a\\x03%\\x00\\x00\\x1e\\x01\" + // 0x00610325: 0x00001E01\n\t\"\\x00B\\x03\\a\\x00\\x00\\x1e\\x02\" + // 0x00420307: 0x00001E02\n\t\"\\x00b\\x03\\a\\x00\\x00\\x1e\\x03\" + // 0x00620307: 0x00001E03\n\t\"\\x00B\\x03#\\x00\\x00\\x1e\\x04\" + // 0x00420323: 0x00001E04\n\t\"\\x00b\\x03#\\x00\\x00\\x1e\\x05\" + // 0x00620323: 0x00001E05\n\t\"\\x00B\\x031\\x00\\x00\\x1e\\x06\" + // 0x00420331: 0x00001E06\n\t\"\\x00b\\x031\\x00\\x00\\x1e\\a\" + // 0x00620331: 0x00001E07\n\t\"\\x00\\xc7\\x03\\x01\\x00\\x00\\x1e\\b\" + // 0x00C70301: 0x00001E08\n\t\"\\x00\\xe7\\x03\\x01\\x00\\x00\\x1e\\t\" + // 0x00E70301: 0x00001E09\n\t\"\\x00D\\x03\\a\\x00\\x00\\x1e\\n\" + // 0x00440307: 0x00001E0A\n\t\"\\x00d\\x03\\a\\x00\\x00\\x1e\\v\" + // 0x00640307: 0x00001E0B\n\t\"\\x00D\\x03#\\x00\\x00\\x1e\\f\" + // 0x00440323: 0x00001E0C\n\t\"\\x00d\\x03#\\x00\\x00\\x1e\\r\" + // 0x00640323: 0x00001E0D\n\t\"\\x00D\\x031\\x00\\x00\\x1e\\x0e\" + // 0x00440331: 0x00001E0E\n\t\"\\x00d\\x031\\x00\\x00\\x1e\\x0f\" + // 0x00640331: 0x00001E0F\n\t\"\\x00D\\x03'\\x00\\x00\\x1e\\x10\" + // 0x00440327: 0x00001E10\n\t\"\\x00d\\x03'\\x00\\x00\\x1e\\x11\" + // 0x00640327: 0x00001E11\n\t\"\\x00D\\x03-\\x00\\x00\\x1e\\x12\" + // 0x0044032D: 0x00001E12\n\t\"\\x00d\\x03-\\x00\\x00\\x1e\\x13\" + // 0x0064032D: 0x00001E13\n\t\"\\x01\\x12\\x03\\x00\\x00\\x00\\x1e\\x14\" + // 0x01120300: 0x00001E14\n\t\"\\x01\\x13\\x03\\x00\\x00\\x00\\x1e\\x15\" + // 0x01130300: 0x00001E15\n\t\"\\x01\\x12\\x03\\x01\\x00\\x00\\x1e\\x16\" + // 0x01120301: 0x00001E16\n\t\"\\x01\\x13\\x03\\x01\\x00\\x00\\x1e\\x17\" + // 0x01130301: 0x00001E17\n\t\"\\x00E\\x03-\\x00\\x00\\x1e\\x18\" + // 0x0045032D: 0x00001E18\n\t\"\\x00e\\x03-\\x00\\x00\\x1e\\x19\" + // 0x0065032D: 0x00001E19\n\t\"\\x00E\\x030\\x00\\x00\\x1e\\x1a\" + // 0x00450330: 0x00001E1A\n\t\"\\x00e\\x030\\x00\\x00\\x1e\\x1b\" + // 0x00650330: 0x00001E1B\n\t\"\\x02(\\x03\\x06\\x00\\x00\\x1e\\x1c\" + // 0x02280306: 0x00001E1C\n\t\"\\x02)\\x03\\x06\\x00\\x00\\x1e\\x1d\" + // 0x02290306: 0x00001E1D\n\t\"\\x00F\\x03\\a\\x00\\x00\\x1e\\x1e\" + // 0x00460307: 0x00001E1E\n\t\"\\x00f\\x03\\a\\x00\\x00\\x1e\\x1f\" + // 0x00660307: 0x00001E1F\n\t\"\\x00G\\x03\\x04\\x00\\x00\\x1e \" + // 0x00470304: 0x00001E20\n\t\"\\x00g\\x03\\x04\\x00\\x00\\x1e!\" + // 0x00670304: 0x00001E21\n\t\"\\x00H\\x03\\a\\x00\\x00\\x1e\\\"\" + // 0x00480307: 0x00001E22\n\t\"\\x00h\\x03\\a\\x00\\x00\\x1e#\" + // 0x00680307: 0x00001E23\n\t\"\\x00H\\x03#\\x00\\x00\\x1e$\" + // 0x00480323: 0x00001E24\n\t\"\\x00h\\x03#\\x00\\x00\\x1e%\" + // 0x00680323: 0x00001E25\n\t\"\\x00H\\x03\\b\\x00\\x00\\x1e&\" + // 0x00480308: 0x00001E26\n\t\"\\x00h\\x03\\b\\x00\\x00\\x1e'\" + // 0x00680308: 0x00001E27\n\t\"\\x00H\\x03'\\x00\\x00\\x1e(\" + // 0x00480327: 0x00001E28\n\t\"\\x00h\\x03'\\x00\\x00\\x1e)\" + // 0x00680327: 0x00001E29\n\t\"\\x00H\\x03.\\x00\\x00\\x1e*\" + // 0x0048032E: 0x00001E2A\n\t\"\\x00h\\x03.\\x00\\x00\\x1e+\" + // 0x0068032E: 0x00001E2B\n\t\"\\x00I\\x030\\x00\\x00\\x1e,\" + // 0x00490330: 0x00001E2C\n\t\"\\x00i\\x030\\x00\\x00\\x1e-\" + // 0x00690330: 0x00001E2D\n\t\"\\x00\\xcf\\x03\\x01\\x00\\x00\\x1e.\" + // 0x00CF0301: 0x00001E2E\n\t\"\\x00\\xef\\x03\\x01\\x00\\x00\\x1e/\" + // 0x00EF0301: 0x00001E2F\n\t\"\\x00K\\x03\\x01\\x00\\x00\\x1e0\" + // 0x004B0301: 0x00001E30\n\t\"\\x00k\\x03\\x01\\x00\\x00\\x1e1\" + // 0x006B0301: 0x00001E31\n\t\"\\x00K\\x03#\\x00\\x00\\x1e2\" + // 0x004B0323: 0x00001E32\n\t\"\\x00k\\x03#\\x00\\x00\\x1e3\" + // 0x006B0323: 0x00001E33\n\t\"\\x00K\\x031\\x00\\x00\\x1e4\" + // 0x004B0331: 0x00001E34\n\t\"\\x00k\\x031\\x00\\x00\\x1e5\" + // 0x006B0331: 0x00001E35\n\t\"\\x00L\\x03#\\x00\\x00\\x1e6\" + // 0x004C0323: 0x00001E36\n\t\"\\x00l\\x03#\\x00\\x00\\x1e7\" + // 0x006C0323: 0x00001E37\n\t\"\\x1e6\\x03\\x04\\x00\\x00\\x1e8\" + // 0x1E360304: 0x00001E38\n\t\"\\x1e7\\x03\\x04\\x00\\x00\\x1e9\" + // 0x1E370304: 0x00001E39\n\t\"\\x00L\\x031\\x00\\x00\\x1e:\" + // 0x004C0331: 0x00001E3A\n\t\"\\x00l\\x031\\x00\\x00\\x1e;\" + // 0x006C0331: 0x00001E3B\n\t\"\\x00L\\x03-\\x00\\x00\\x1e<\" + // 0x004C032D: 0x00001E3C\n\t\"\\x00l\\x03-\\x00\\x00\\x1e=\" + // 0x006C032D: 0x00001E3D\n\t\"\\x00M\\x03\\x01\\x00\\x00\\x1e>\" + // 0x004D0301: 0x00001E3E\n\t\"\\x00m\\x03\\x01\\x00\\x00\\x1e?\" + // 0x006D0301: 0x00001E3F\n\t\"\\x00M\\x03\\a\\x00\\x00\\x1e@\" + // 0x004D0307: 0x00001E40\n\t\"\\x00m\\x03\\a\\x00\\x00\\x1eA\" + // 0x006D0307: 0x00001E41\n\t\"\\x00M\\x03#\\x00\\x00\\x1eB\" + // 0x004D0323: 0x00001E42\n\t\"\\x00m\\x03#\\x00\\x00\\x1eC\" + // 0x006D0323: 0x00001E43\n\t\"\\x00N\\x03\\a\\x00\\x00\\x1eD\" + // 0x004E0307: 0x00001E44\n\t\"\\x00n\\x03\\a\\x00\\x00\\x1eE\" + // 0x006E0307: 0x00001E45\n\t\"\\x00N\\x03#\\x00\\x00\\x1eF\" + // 0x004E0323: 0x00001E46\n\t\"\\x00n\\x03#\\x00\\x00\\x1eG\" + // 0x006E0323: 0x00001E47\n\t\"\\x00N\\x031\\x00\\x00\\x1eH\" + // 0x004E0331: 0x00001E48\n\t\"\\x00n\\x031\\x00\\x00\\x1eI\" + // 0x006E0331: 0x00001E49\n\t\"\\x00N\\x03-\\x00\\x00\\x1eJ\" + // 0x004E032D: 0x00001E4A\n\t\"\\x00n\\x03-\\x00\\x00\\x1eK\" + // 0x006E032D: 0x00001E4B\n\t\"\\x00\\xd5\\x03\\x01\\x00\\x00\\x1eL\" + // 0x00D50301: 0x00001E4C\n\t\"\\x00\\xf5\\x03\\x01\\x00\\x00\\x1eM\" + // 0x00F50301: 0x00001E4D\n\t\"\\x00\\xd5\\x03\\b\\x00\\x00\\x1eN\" + // 0x00D50308: 0x00001E4E\n\t\"\\x00\\xf5\\x03\\b\\x00\\x00\\x1eO\" + // 0x00F50308: 0x00001E4F\n\t\"\\x01L\\x03\\x00\\x00\\x00\\x1eP\" + // 0x014C0300: 0x00001E50\n\t\"\\x01M\\x03\\x00\\x00\\x00\\x1eQ\" + // 0x014D0300: 0x00001E51\n\t\"\\x01L\\x03\\x01\\x00\\x00\\x1eR\" + // 0x014C0301: 0x00001E52\n\t\"\\x01M\\x03\\x01\\x00\\x00\\x1eS\" + // 0x014D0301: 0x00001E53\n\t\"\\x00P\\x03\\x01\\x00\\x00\\x1eT\" + // 0x00500301: 0x00001E54\n\t\"\\x00p\\x03\\x01\\x00\\x00\\x1eU\" + // 0x00700301: 0x00001E55\n\t\"\\x00P\\x03\\a\\x00\\x00\\x1eV\" + // 0x00500307: 0x00001E56\n\t\"\\x00p\\x03\\a\\x00\\x00\\x1eW\" + // 0x00700307: 0x00001E57\n\t\"\\x00R\\x03\\a\\x00\\x00\\x1eX\" + // 0x00520307: 0x00001E58\n\t\"\\x00r\\x03\\a\\x00\\x00\\x1eY\" + // 0x00720307: 0x00001E59\n\t\"\\x00R\\x03#\\x00\\x00\\x1eZ\" + // 0x00520323: 0x00001E5A\n\t\"\\x00r\\x03#\\x00\\x00\\x1e[\" + // 0x00720323: 0x00001E5B\n\t\"\\x1eZ\\x03\\x04\\x00\\x00\\x1e\\\\\" + // 0x1E5A0304: 0x00001E5C\n\t\"\\x1e[\\x03\\x04\\x00\\x00\\x1e]\" + // 0x1E5B0304: 0x00001E5D\n\t\"\\x00R\\x031\\x00\\x00\\x1e^\" + // 0x00520331: 0x00001E5E\n\t\"\\x00r\\x031\\x00\\x00\\x1e_\" + // 0x00720331: 0x00001E5F\n\t\"\\x00S\\x03\\a\\x00\\x00\\x1e`\" + // 0x00530307: 0x00001E60\n\t\"\\x00s\\x03\\a\\x00\\x00\\x1ea\" + // 0x00730307: 0x00001E61\n\t\"\\x00S\\x03#\\x00\\x00\\x1eb\" + // 0x00530323: 0x00001E62\n\t\"\\x00s\\x03#\\x00\\x00\\x1ec\" + // 0x00730323: 0x00001E63\n\t\"\\x01Z\\x03\\a\\x00\\x00\\x1ed\" + // 0x015A0307: 0x00001E64\n\t\"\\x01[\\x03\\a\\x00\\x00\\x1ee\" + // 0x015B0307: 0x00001E65\n\t\"\\x01`\\x03\\a\\x00\\x00\\x1ef\" + // 0x01600307: 0x00001E66\n\t\"\\x01a\\x03\\a\\x00\\x00\\x1eg\" + // 0x01610307: 0x00001E67\n\t\"\\x1eb\\x03\\a\\x00\\x00\\x1eh\" + // 0x1E620307: 0x00001E68\n\t\"\\x1ec\\x03\\a\\x00\\x00\\x1ei\" + // 0x1E630307: 0x00001E69\n\t\"\\x00T\\x03\\a\\x00\\x00\\x1ej\" + // 0x00540307: 0x00001E6A\n\t\"\\x00t\\x03\\a\\x00\\x00\\x1ek\" + // 0x00740307: 0x00001E6B\n\t\"\\x00T\\x03#\\x00\\x00\\x1el\" + // 0x00540323: 0x00001E6C\n\t\"\\x00t\\x03#\\x00\\x00\\x1em\" + // 0x00740323: 0x00001E6D\n\t\"\\x00T\\x031\\x00\\x00\\x1en\" + // 0x00540331: 0x00001E6E\n\t\"\\x00t\\x031\\x00\\x00\\x1eo\" + // 0x00740331: 0x00001E6F\n\t\"\\x00T\\x03-\\x00\\x00\\x1ep\" + // 0x0054032D: 0x00001E70\n\t\"\\x00t\\x03-\\x00\\x00\\x1eq\" + // 0x0074032D: 0x00001E71\n\t\"\\x00U\\x03$\\x00\\x00\\x1er\" + // 0x00550324: 0x00001E72\n\t\"\\x00u\\x03$\\x00\\x00\\x1es\" + // 0x00750324: 0x00001E73\n\t\"\\x00U\\x030\\x00\\x00\\x1et\" + // 0x00550330: 0x00001E74\n\t\"\\x00u\\x030\\x00\\x00\\x1eu\" + // 0x00750330: 0x00001E75\n\t\"\\x00U\\x03-\\x00\\x00\\x1ev\" + // 0x0055032D: 0x00001E76\n\t\"\\x00u\\x03-\\x00\\x00\\x1ew\" + // 0x0075032D: 0x00001E77\n\t\"\\x01h\\x03\\x01\\x00\\x00\\x1ex\" + // 0x01680301: 0x00001E78\n\t\"\\x01i\\x03\\x01\\x00\\x00\\x1ey\" + // 0x01690301: 0x00001E79\n\t\"\\x01j\\x03\\b\\x00\\x00\\x1ez\" + // 0x016A0308: 0x00001E7A\n\t\"\\x01k\\x03\\b\\x00\\x00\\x1e{\" + // 0x016B0308: 0x00001E7B\n\t\"\\x00V\\x03\\x03\\x00\\x00\\x1e|\" + // 0x00560303: 0x00001E7C\n\t\"\\x00v\\x03\\x03\\x00\\x00\\x1e}\" + // 0x00760303: 0x00001E7D\n\t\"\\x00V\\x03#\\x00\\x00\\x1e~\" + // 0x00560323: 0x00001E7E\n\t\"\\x00v\\x03#\\x00\\x00\\x1e\\u007f\" + // 0x00760323: 0x00001E7F\n\t\"\\x00W\\x03\\x00\\x00\\x00\\x1e\\x80\" + // 0x00570300: 0x00001E80\n\t\"\\x00w\\x03\\x00\\x00\\x00\\x1e\\x81\" + // 0x00770300: 0x00001E81\n\t\"\\x00W\\x03\\x01\\x00\\x00\\x1e\\x82\" + // 0x00570301: 0x00001E82\n\t\"\\x00w\\x03\\x01\\x00\\x00\\x1e\\x83\" + // 0x00770301: 0x00001E83\n\t\"\\x00W\\x03\\b\\x00\\x00\\x1e\\x84\" + // 0x00570308: 0x00001E84\n\t\"\\x00w\\x03\\b\\x00\\x00\\x1e\\x85\" + // 0x00770308: 0x00001E85\n\t\"\\x00W\\x03\\a\\x00\\x00\\x1e\\x86\" + // 0x00570307: 0x00001E86\n\t\"\\x00w\\x03\\a\\x00\\x00\\x1e\\x87\" + // 0x00770307: 0x00001E87\n\t\"\\x00W\\x03#\\x00\\x00\\x1e\\x88\" + // 0x00570323: 0x00001E88\n\t\"\\x00w\\x03#\\x00\\x00\\x1e\\x89\" + // 0x00770323: 0x00001E89\n\t\"\\x00X\\x03\\a\\x00\\x00\\x1e\\x8a\" + // 0x00580307: 0x00001E8A\n\t\"\\x00x\\x03\\a\\x00\\x00\\x1e\\x8b\" + // 0x00780307: 0x00001E8B\n\t\"\\x00X\\x03\\b\\x00\\x00\\x1e\\x8c\" + // 0x00580308: 0x00001E8C\n\t\"\\x00x\\x03\\b\\x00\\x00\\x1e\\x8d\" + // 0x00780308: 0x00001E8D\n\t\"\\x00Y\\x03\\a\\x00\\x00\\x1e\\x8e\" + // 0x00590307: 0x00001E8E\n\t\"\\x00y\\x03\\a\\x00\\x00\\x1e\\x8f\" + // 0x00790307: 0x00001E8F\n\t\"\\x00Z\\x03\\x02\\x00\\x00\\x1e\\x90\" + // 0x005A0302: 0x00001E90\n\t\"\\x00z\\x03\\x02\\x00\\x00\\x1e\\x91\" + // 0x007A0302: 0x00001E91\n\t\"\\x00Z\\x03#\\x00\\x00\\x1e\\x92\" + // 0x005A0323: 0x00001E92\n\t\"\\x00z\\x03#\\x00\\x00\\x1e\\x93\" + // 0x007A0323: 0x00001E93\n\t\"\\x00Z\\x031\\x00\\x00\\x1e\\x94\" + // 0x005A0331: 0x00001E94\n\t\"\\x00z\\x031\\x00\\x00\\x1e\\x95\" + // 0x007A0331: 0x00001E95\n\t\"\\x00h\\x031\\x00\\x00\\x1e\\x96\" + // 0x00680331: 0x00001E96\n\t\"\\x00t\\x03\\b\\x00\\x00\\x1e\\x97\" + // 0x00740308: 0x00001E97\n\t\"\\x00w\\x03\\n\\x00\\x00\\x1e\\x98\" + // 0x0077030A: 0x00001E98\n\t\"\\x00y\\x03\\n\\x00\\x00\\x1e\\x99\" + // 0x0079030A: 0x00001E99\n\t\"\\x01\\u007f\\x03\\a\\x00\\x00\\x1e\\x9b\" + // 0x017F0307: 0x00001E9B\n\t\"\\x00A\\x03#\\x00\\x00\\x1e\\xa0\" + // 0x00410323: 0x00001EA0\n\t\"\\x00a\\x03#\\x00\\x00\\x1e\\xa1\" + // 0x00610323: 0x00001EA1\n\t\"\\x00A\\x03\\t\\x00\\x00\\x1e\\xa2\" + // 0x00410309: 0x00001EA2\n\t\"\\x00a\\x03\\t\\x00\\x00\\x1e\\xa3\" + // 0x00610309: 0x00001EA3\n\t\"\\x00\\xc2\\x03\\x01\\x00\\x00\\x1e\\xa4\" + // 0x00C20301: 0x00001EA4\n\t\"\\x00\\xe2\\x03\\x01\\x00\\x00\\x1e\\xa5\" + // 0x00E20301: 0x00001EA5\n\t\"\\x00\\xc2\\x03\\x00\\x00\\x00\\x1e\\xa6\" + // 0x00C20300: 0x00001EA6\n\t\"\\x00\\xe2\\x03\\x00\\x00\\x00\\x1e\\xa7\" + // 0x00E20300: 0x00001EA7\n\t\"\\x00\\xc2\\x03\\t\\x00\\x00\\x1e\\xa8\" + // 0x00C20309: 0x00001EA8\n\t\"\\x00\\xe2\\x03\\t\\x00\\x00\\x1e\\xa9\" + // 0x00E20309: 0x00001EA9\n\t\"\\x00\\xc2\\x03\\x03\\x00\\x00\\x1e\\xaa\" + // 0x00C20303: 0x00001EAA\n\t\"\\x00\\xe2\\x03\\x03\\x00\\x00\\x1e\\xab\" + // 0x00E20303: 0x00001EAB\n\t\"\\x1e\\xa0\\x03\\x02\\x00\\x00\\x1e\\xac\" + // 0x1EA00302: 0x00001EAC\n\t\"\\x1e\\xa1\\x03\\x02\\x00\\x00\\x1e\\xad\" + // 0x1EA10302: 0x00001EAD\n\t\"\\x01\\x02\\x03\\x01\\x00\\x00\\x1e\\xae\" + // 0x01020301: 0x00001EAE\n\t\"\\x01\\x03\\x03\\x01\\x00\\x00\\x1e\\xaf\" + // 0x01030301: 0x00001EAF\n\t\"\\x01\\x02\\x03\\x00\\x00\\x00\\x1e\\xb0\" + // 0x01020300: 0x00001EB0\n\t\"\\x01\\x03\\x03\\x00\\x00\\x00\\x1e\\xb1\" + // 0x01030300: 0x00001EB1\n\t\"\\x01\\x02\\x03\\t\\x00\\x00\\x1e\\xb2\" + // 0x01020309: 0x00001EB2\n\t\"\\x01\\x03\\x03\\t\\x00\\x00\\x1e\\xb3\" + // 0x01030309: 0x00001EB3\n\t\"\\x01\\x02\\x03\\x03\\x00\\x00\\x1e\\xb4\" + // 0x01020303: 0x00001EB4\n\t\"\\x01\\x03\\x03\\x03\\x00\\x00\\x1e\\xb5\" + // 0x01030303: 0x00001EB5\n\t\"\\x1e\\xa0\\x03\\x06\\x00\\x00\\x1e\\xb6\" + // 0x1EA00306: 0x00001EB6\n\t\"\\x1e\\xa1\\x03\\x06\\x00\\x00\\x1e\\xb7\" + // 0x1EA10306: 0x00001EB7\n\t\"\\x00E\\x03#\\x00\\x00\\x1e\\xb8\" + // 0x00450323: 0x00001EB8\n\t\"\\x00e\\x03#\\x00\\x00\\x1e\\xb9\" + // 0x00650323: 0x00001EB9\n\t\"\\x00E\\x03\\t\\x00\\x00\\x1e\\xba\" + // 0x00450309: 0x00001EBA\n\t\"\\x00e\\x03\\t\\x00\\x00\\x1e\\xbb\" + // 0x00650309: 0x00001EBB\n\t\"\\x00E\\x03\\x03\\x00\\x00\\x1e\\xbc\" + // 0x00450303: 0x00001EBC\n\t\"\\x00e\\x03\\x03\\x00\\x00\\x1e\\xbd\" + // 0x00650303: 0x00001EBD\n\t\"\\x00\\xca\\x03\\x01\\x00\\x00\\x1e\\xbe\" + // 0x00CA0301: 0x00001EBE\n\t\"\\x00\\xea\\x03\\x01\\x00\\x00\\x1e\\xbf\" + // 0x00EA0301: 0x00001EBF\n\t\"\\x00\\xca\\x03\\x00\\x00\\x00\\x1e\\xc0\" + // 0x00CA0300: 0x00001EC0\n\t\"\\x00\\xea\\x03\\x00\\x00\\x00\\x1e\\xc1\" + // 0x00EA0300: 0x00001EC1\n\t\"\\x00\\xca\\x03\\t\\x00\\x00\\x1e\\xc2\" + // 0x00CA0309: 0x00001EC2\n\t\"\\x00\\xea\\x03\\t\\x00\\x00\\x1e\\xc3\" + // 0x00EA0309: 0x00001EC3\n\t\"\\x00\\xca\\x03\\x03\\x00\\x00\\x1e\\xc4\" + // 0x00CA0303: 0x00001EC4\n\t\"\\x00\\xea\\x03\\x03\\x00\\x00\\x1e\\xc5\" + // 0x00EA0303: 0x00001EC5\n\t\"\\x1e\\xb8\\x03\\x02\\x00\\x00\\x1e\\xc6\" + // 0x1EB80302: 0x00001EC6\n\t\"\\x1e\\xb9\\x03\\x02\\x00\\x00\\x1e\\xc7\" + // 0x1EB90302: 0x00001EC7\n\t\"\\x00I\\x03\\t\\x00\\x00\\x1e\\xc8\" + // 0x00490309: 0x00001EC8\n\t\"\\x00i\\x03\\t\\x00\\x00\\x1e\\xc9\" + // 0x00690309: 0x00001EC9\n\t\"\\x00I\\x03#\\x00\\x00\\x1e\\xca\" + // 0x00490323: 0x00001ECA\n\t\"\\x00i\\x03#\\x00\\x00\\x1e\\xcb\" + // 0x00690323: 0x00001ECB\n\t\"\\x00O\\x03#\\x00\\x00\\x1e\\xcc\" + // 0x004F0323: 0x00001ECC\n\t\"\\x00o\\x03#\\x00\\x00\\x1e\\xcd\" + // 0x006F0323: 0x00001ECD\n\t\"\\x00O\\x03\\t\\x00\\x00\\x1e\\xce\" + // 0x004F0309: 0x00001ECE\n\t\"\\x00o\\x03\\t\\x00\\x00\\x1e\\xcf\" + // 0x006F0309: 0x00001ECF\n\t\"\\x00\\xd4\\x03\\x01\\x00\\x00\\x1e\\xd0\" + // 0x00D40301: 0x00001ED0\n\t\"\\x00\\xf4\\x03\\x01\\x00\\x00\\x1e\\xd1\" + // 0x00F40301: 0x00001ED1\n\t\"\\x00\\xd4\\x03\\x00\\x00\\x00\\x1e\\xd2\" + // 0x00D40300: 0x00001ED2\n\t\"\\x00\\xf4\\x03\\x00\\x00\\x00\\x1e\\xd3\" + // 0x00F40300: 0x00001ED3\n\t\"\\x00\\xd4\\x03\\t\\x00\\x00\\x1e\\xd4\" + // 0x00D40309: 0x00001ED4\n\t\"\\x00\\xf4\\x03\\t\\x00\\x00\\x1e\\xd5\" + // 0x00F40309: 0x00001ED5\n\t\"\\x00\\xd4\\x03\\x03\\x00\\x00\\x1e\\xd6\" + // 0x00D40303: 0x00001ED6\n\t\"\\x00\\xf4\\x03\\x03\\x00\\x00\\x1e\\xd7\" + // 0x00F40303: 0x00001ED7\n\t\"\\x1e\\xcc\\x03\\x02\\x00\\x00\\x1e\\xd8\" + // 0x1ECC0302: 0x00001ED8\n\t\"\\x1e\\xcd\\x03\\x02\\x00\\x00\\x1e\\xd9\" + // 0x1ECD0302: 0x00001ED9\n\t\"\\x01\\xa0\\x03\\x01\\x00\\x00\\x1e\\xda\" + // 0x01A00301: 0x00001EDA\n\t\"\\x01\\xa1\\x03\\x01\\x00\\x00\\x1e\\xdb\" + // 0x01A10301: 0x00001EDB\n\t\"\\x01\\xa0\\x03\\x00\\x00\\x00\\x1e\\xdc\" + // 0x01A00300: 0x00001EDC\n\t\"\\x01\\xa1\\x03\\x00\\x00\\x00\\x1e\\xdd\" + // 0x01A10300: 0x00001EDD\n\t\"\\x01\\xa0\\x03\\t\\x00\\x00\\x1e\\xde\" + // 0x01A00309: 0x00001EDE\n\t\"\\x01\\xa1\\x03\\t\\x00\\x00\\x1e\\xdf\" + // 0x01A10309: 0x00001EDF\n\t\"\\x01\\xa0\\x03\\x03\\x00\\x00\\x1e\\xe0\" + // 0x01A00303: 0x00001EE0\n\t\"\\x01\\xa1\\x03\\x03\\x00\\x00\\x1e\\xe1\" + // 0x01A10303: 0x00001EE1\n\t\"\\x01\\xa0\\x03#\\x00\\x00\\x1e\\xe2\" + // 0x01A00323: 0x00001EE2\n\t\"\\x01\\xa1\\x03#\\x00\\x00\\x1e\\xe3\" + // 0x01A10323: 0x00001EE3\n\t\"\\x00U\\x03#\\x00\\x00\\x1e\\xe4\" + // 0x00550323: 0x00001EE4\n\t\"\\x00u\\x03#\\x00\\x00\\x1e\\xe5\" + // 0x00750323: 0x00001EE5\n\t\"\\x00U\\x03\\t\\x00\\x00\\x1e\\xe6\" + // 0x00550309: 0x00001EE6\n\t\"\\x00u\\x03\\t\\x00\\x00\\x1e\\xe7\" + // 0x00750309: 0x00001EE7\n\t\"\\x01\\xaf\\x03\\x01\\x00\\x00\\x1e\\xe8\" + // 0x01AF0301: 0x00001EE8\n\t\"\\x01\\xb0\\x03\\x01\\x00\\x00\\x1e\\xe9\" + // 0x01B00301: 0x00001EE9\n\t\"\\x01\\xaf\\x03\\x00\\x00\\x00\\x1e\\xea\" + // 0x01AF0300: 0x00001EEA\n\t\"\\x01\\xb0\\x03\\x00\\x00\\x00\\x1e\\xeb\" + // 0x01B00300: 0x00001EEB\n\t\"\\x01\\xaf\\x03\\t\\x00\\x00\\x1e\\xec\" + // 0x01AF0309: 0x00001EEC\n\t\"\\x01\\xb0\\x03\\t\\x00\\x00\\x1e\\xed\" + // 0x01B00309: 0x00001EED\n\t\"\\x01\\xaf\\x03\\x03\\x00\\x00\\x1e\\xee\" + // 0x01AF0303: 0x00001EEE\n\t\"\\x01\\xb0\\x03\\x03\\x00\\x00\\x1e\\xef\" + // 0x01B00303: 0x00001EEF\n\t\"\\x01\\xaf\\x03#\\x00\\x00\\x1e\\xf0\" + // 0x01AF0323: 0x00001EF0\n\t\"\\x01\\xb0\\x03#\\x00\\x00\\x1e\\xf1\" + // 0x01B00323: 0x00001EF1\n\t\"\\x00Y\\x03\\x00\\x00\\x00\\x1e\\xf2\" + // 0x00590300: 0x00001EF2\n\t\"\\x00y\\x03\\x00\\x00\\x00\\x1e\\xf3\" + // 0x00790300: 0x00001EF3\n\t\"\\x00Y\\x03#\\x00\\x00\\x1e\\xf4\" + // 0x00590323: 0x00001EF4\n\t\"\\x00y\\x03#\\x00\\x00\\x1e\\xf5\" + // 0x00790323: 0x00001EF5\n\t\"\\x00Y\\x03\\t\\x00\\x00\\x1e\\xf6\" + // 0x00590309: 0x00001EF6\n\t\"\\x00y\\x03\\t\\x00\\x00\\x1e\\xf7\" + // 0x00790309: 0x00001EF7\n\t\"\\x00Y\\x03\\x03\\x00\\x00\\x1e\\xf8\" + // 0x00590303: 0x00001EF8\n\t\"\\x00y\\x03\\x03\\x00\\x00\\x1e\\xf9\" + // 0x00790303: 0x00001EF9\n\t\"\\x03\\xb1\\x03\\x13\\x00\\x00\\x1f\\x00\" + // 0x03B10313: 0x00001F00\n\t\"\\x03\\xb1\\x03\\x14\\x00\\x00\\x1f\\x01\" + // 0x03B10314: 0x00001F01\n\t\"\\x1f\\x00\\x03\\x00\\x00\\x00\\x1f\\x02\" + // 0x1F000300: 0x00001F02\n\t\"\\x1f\\x01\\x03\\x00\\x00\\x00\\x1f\\x03\" + // 0x1F010300: 0x00001F03\n\t\"\\x1f\\x00\\x03\\x01\\x00\\x00\\x1f\\x04\" + // 0x1F000301: 0x00001F04\n\t\"\\x1f\\x01\\x03\\x01\\x00\\x00\\x1f\\x05\" + // 0x1F010301: 0x00001F05\n\t\"\\x1f\\x00\\x03B\\x00\\x00\\x1f\\x06\" + // 0x1F000342: 0x00001F06\n\t\"\\x1f\\x01\\x03B\\x00\\x00\\x1f\\a\" + // 0x1F010342: 0x00001F07\n\t\"\\x03\\x91\\x03\\x13\\x00\\x00\\x1f\\b\" + // 0x03910313: 0x00001F08\n\t\"\\x03\\x91\\x03\\x14\\x00\\x00\\x1f\\t\" + // 0x03910314: 0x00001F09\n\t\"\\x1f\\b\\x03\\x00\\x00\\x00\\x1f\\n\" + // 0x1F080300: 0x00001F0A\n\t\"\\x1f\\t\\x03\\x00\\x00\\x00\\x1f\\v\" + // 0x1F090300: 0x00001F0B\n\t\"\\x1f\\b\\x03\\x01\\x00\\x00\\x1f\\f\" + // 0x1F080301: 0x00001F0C\n\t\"\\x1f\\t\\x03\\x01\\x00\\x00\\x1f\\r\" + // 0x1F090301: 0x00001F0D\n\t\"\\x1f\\b\\x03B\\x00\\x00\\x1f\\x0e\" + // 0x1F080342: 0x00001F0E\n\t\"\\x1f\\t\\x03B\\x00\\x00\\x1f\\x0f\" + // 0x1F090342: 0x00001F0F\n\t\"\\x03\\xb5\\x03\\x13\\x00\\x00\\x1f\\x10\" + // 0x03B50313: 0x00001F10\n\t\"\\x03\\xb5\\x03\\x14\\x00\\x00\\x1f\\x11\" + // 0x03B50314: 0x00001F11\n\t\"\\x1f\\x10\\x03\\x00\\x00\\x00\\x1f\\x12\" + // 0x1F100300: 0x00001F12\n\t\"\\x1f\\x11\\x03\\x00\\x00\\x00\\x1f\\x13\" + // 0x1F110300: 0x00001F13\n\t\"\\x1f\\x10\\x03\\x01\\x00\\x00\\x1f\\x14\" + // 0x1F100301: 0x00001F14\n\t\"\\x1f\\x11\\x03\\x01\\x00\\x00\\x1f\\x15\" + // 0x1F110301: 0x00001F15\n\t\"\\x03\\x95\\x03\\x13\\x00\\x00\\x1f\\x18\" + // 0x03950313: 0x00001F18\n\t\"\\x03\\x95\\x03\\x14\\x00\\x00\\x1f\\x19\" + // 0x03950314: 0x00001F19\n\t\"\\x1f\\x18\\x03\\x00\\x00\\x00\\x1f\\x1a\" + // 0x1F180300: 0x00001F1A\n\t\"\\x1f\\x19\\x03\\x00\\x00\\x00\\x1f\\x1b\" + // 0x1F190300: 0x00001F1B\n\t\"\\x1f\\x18\\x03\\x01\\x00\\x00\\x1f\\x1c\" + // 0x1F180301: 0x00001F1C\n\t\"\\x1f\\x19\\x03\\x01\\x00\\x00\\x1f\\x1d\" + // 0x1F190301: 0x00001F1D\n\t\"\\x03\\xb7\\x03\\x13\\x00\\x00\\x1f \" + // 0x03B70313: 0x00001F20\n\t\"\\x03\\xb7\\x03\\x14\\x00\\x00\\x1f!\" + // 0x03B70314: 0x00001F21\n\t\"\\x1f \\x03\\x00\\x00\\x00\\x1f\\\"\" + // 0x1F200300: 0x00001F22\n\t\"\\x1f!\\x03\\x00\\x00\\x00\\x1f#\" + // 0x1F210300: 0x00001F23\n\t\"\\x1f \\x03\\x01\\x00\\x00\\x1f$\" + // 0x1F200301: 0x00001F24\n\t\"\\x1f!\\x03\\x01\\x00\\x00\\x1f%\" + // 0x1F210301: 0x00001F25\n\t\"\\x1f \\x03B\\x00\\x00\\x1f&\" + // 0x1F200342: 0x00001F26\n\t\"\\x1f!\\x03B\\x00\\x00\\x1f'\" + // 0x1F210342: 0x00001F27\n\t\"\\x03\\x97\\x03\\x13\\x00\\x00\\x1f(\" + // 0x03970313: 0x00001F28\n\t\"\\x03\\x97\\x03\\x14\\x00\\x00\\x1f)\" + // 0x03970314: 0x00001F29\n\t\"\\x1f(\\x03\\x00\\x00\\x00\\x1f*\" + // 0x1F280300: 0x00001F2A\n\t\"\\x1f)\\x03\\x00\\x00\\x00\\x1f+\" + // 0x1F290300: 0x00001F2B\n\t\"\\x1f(\\x03\\x01\\x00\\x00\\x1f,\" + // 0x1F280301: 0x00001F2C\n\t\"\\x1f)\\x03\\x01\\x00\\x00\\x1f-\" + // 0x1F290301: 0x00001F2D\n\t\"\\x1f(\\x03B\\x00\\x00\\x1f.\" + // 0x1F280342: 0x00001F2E\n\t\"\\x1f)\\x03B\\x00\\x00\\x1f/\" + // 0x1F290342: 0x00001F2F\n\t\"\\x03\\xb9\\x03\\x13\\x00\\x00\\x1f0\" + // 0x03B90313: 0x00001F30\n\t\"\\x03\\xb9\\x03\\x14\\x00\\x00\\x1f1\" + // 0x03B90314: 0x00001F31\n\t\"\\x1f0\\x03\\x00\\x00\\x00\\x1f2\" + // 0x1F300300: 0x00001F32\n\t\"\\x1f1\\x03\\x00\\x00\\x00\\x1f3\" + // 0x1F310300: 0x00001F33\n\t\"\\x1f0\\x03\\x01\\x00\\x00\\x1f4\" + // 0x1F300301: 0x00001F34\n\t\"\\x1f1\\x03\\x01\\x00\\x00\\x1f5\" + // 0x1F310301: 0x00001F35\n\t\"\\x1f0\\x03B\\x00\\x00\\x1f6\" + // 0x1F300342: 0x00001F36\n\t\"\\x1f1\\x03B\\x00\\x00\\x1f7\" + // 0x1F310342: 0x00001F37\n\t\"\\x03\\x99\\x03\\x13\\x00\\x00\\x1f8\" + // 0x03990313: 0x00001F38\n\t\"\\x03\\x99\\x03\\x14\\x00\\x00\\x1f9\" + // 0x03990314: 0x00001F39\n\t\"\\x1f8\\x03\\x00\\x00\\x00\\x1f:\" + // 0x1F380300: 0x00001F3A\n\t\"\\x1f9\\x03\\x00\\x00\\x00\\x1f;\" + // 0x1F390300: 0x00001F3B\n\t\"\\x1f8\\x03\\x01\\x00\\x00\\x1f<\" + // 0x1F380301: 0x00001F3C\n\t\"\\x1f9\\x03\\x01\\x00\\x00\\x1f=\" + // 0x1F390301: 0x00001F3D\n\t\"\\x1f8\\x03B\\x00\\x00\\x1f>\" + // 0x1F380342: 0x00001F3E\n\t\"\\x1f9\\x03B\\x00\\x00\\x1f?\" + // 0x1F390342: 0x00001F3F\n\t\"\\x03\\xbf\\x03\\x13\\x00\\x00\\x1f@\" + // 0x03BF0313: 0x00001F40\n\t\"\\x03\\xbf\\x03\\x14\\x00\\x00\\x1fA\" + // 0x03BF0314: 0x00001F41\n\t\"\\x1f@\\x03\\x00\\x00\\x00\\x1fB\" + // 0x1F400300: 0x00001F42\n\t\"\\x1fA\\x03\\x00\\x00\\x00\\x1fC\" + // 0x1F410300: 0x00001F43\n\t\"\\x1f@\\x03\\x01\\x00\\x00\\x1fD\" + // 0x1F400301: 0x00001F44\n\t\"\\x1fA\\x03\\x01\\x00\\x00\\x1fE\" + // 0x1F410301: 0x00001F45\n\t\"\\x03\\x9f\\x03\\x13\\x00\\x00\\x1fH\" + // 0x039F0313: 0x00001F48\n\t\"\\x03\\x9f\\x03\\x14\\x00\\x00\\x1fI\" + // 0x039F0314: 0x00001F49\n\t\"\\x1fH\\x03\\x00\\x00\\x00\\x1fJ\" + // 0x1F480300: 0x00001F4A\n\t\"\\x1fI\\x03\\x00\\x00\\x00\\x1fK\" + // 0x1F490300: 0x00001F4B\n\t\"\\x1fH\\x03\\x01\\x00\\x00\\x1fL\" + // 0x1F480301: 0x00001F4C\n\t\"\\x1fI\\x03\\x01\\x00\\x00\\x1fM\" + // 0x1F490301: 0x00001F4D\n\t\"\\x03\\xc5\\x03\\x13\\x00\\x00\\x1fP\" + // 0x03C50313: 0x00001F50\n\t\"\\x03\\xc5\\x03\\x14\\x00\\x00\\x1fQ\" + // 0x03C50314: 0x00001F51\n\t\"\\x1fP\\x03\\x00\\x00\\x00\\x1fR\" + // 0x1F500300: 0x00001F52\n\t\"\\x1fQ\\x03\\x00\\x00\\x00\\x1fS\" + // 0x1F510300: 0x00001F53\n\t\"\\x1fP\\x03\\x01\\x00\\x00\\x1fT\" + // 0x1F500301: 0x00001F54\n\t\"\\x1fQ\\x03\\x01\\x00\\x00\\x1fU\" + // 0x1F510301: 0x00001F55\n\t\"\\x1fP\\x03B\\x00\\x00\\x1fV\" + // 0x1F500342: 0x00001F56\n\t\"\\x1fQ\\x03B\\x00\\x00\\x1fW\" + // 0x1F510342: 0x00001F57\n\t\"\\x03\\xa5\\x03\\x14\\x00\\x00\\x1fY\" + // 0x03A50314: 0x00001F59\n\t\"\\x1fY\\x03\\x00\\x00\\x00\\x1f[\" + // 0x1F590300: 0x00001F5B\n\t\"\\x1fY\\x03\\x01\\x00\\x00\\x1f]\" + // 0x1F590301: 0x00001F5D\n\t\"\\x1fY\\x03B\\x00\\x00\\x1f_\" + // 0x1F590342: 0x00001F5F\n\t\"\\x03\\xc9\\x03\\x13\\x00\\x00\\x1f`\" + // 0x03C90313: 0x00001F60\n\t\"\\x03\\xc9\\x03\\x14\\x00\\x00\\x1fa\" + // 0x03C90314: 0x00001F61\n\t\"\\x1f`\\x03\\x00\\x00\\x00\\x1fb\" + // 0x1F600300: 0x00001F62\n\t\"\\x1fa\\x03\\x00\\x00\\x00\\x1fc\" + // 0x1F610300: 0x00001F63\n\t\"\\x1f`\\x03\\x01\\x00\\x00\\x1fd\" + // 0x1F600301: 0x00001F64\n\t\"\\x1fa\\x03\\x01\\x00\\x00\\x1fe\" + // 0x1F610301: 0x00001F65\n\t\"\\x1f`\\x03B\\x00\\x00\\x1ff\" + // 0x1F600342: 0x00001F66\n\t\"\\x1fa\\x03B\\x00\\x00\\x1fg\" + // 0x1F610342: 0x00001F67\n\t\"\\x03\\xa9\\x03\\x13\\x00\\x00\\x1fh\" + // 0x03A90313: 0x00001F68\n\t\"\\x03\\xa9\\x03\\x14\\x00\\x00\\x1fi\" + // 0x03A90314: 0x00001F69\n\t\"\\x1fh\\x03\\x00\\x00\\x00\\x1fj\" + // 0x1F680300: 0x00001F6A\n\t\"\\x1fi\\x03\\x00\\x00\\x00\\x1fk\" + // 0x1F690300: 0x00001F6B\n\t\"\\x1fh\\x03\\x01\\x00\\x00\\x1fl\" + // 0x1F680301: 0x00001F6C\n\t\"\\x1fi\\x03\\x01\\x00\\x00\\x1fm\" + // 0x1F690301: 0x00001F6D\n\t\"\\x1fh\\x03B\\x00\\x00\\x1fn\" + // 0x1F680342: 0x00001F6E\n\t\"\\x1fi\\x03B\\x00\\x00\\x1fo\" + // 0x1F690342: 0x00001F6F\n\t\"\\x03\\xb1\\x03\\x00\\x00\\x00\\x1fp\" + // 0x03B10300: 0x00001F70\n\t\"\\x03\\xb5\\x03\\x00\\x00\\x00\\x1fr\" + // 0x03B50300: 0x00001F72\n\t\"\\x03\\xb7\\x03\\x00\\x00\\x00\\x1ft\" + // 0x03B70300: 0x00001F74\n\t\"\\x03\\xb9\\x03\\x00\\x00\\x00\\x1fv\" + // 0x03B90300: 0x00001F76\n\t\"\\x03\\xbf\\x03\\x00\\x00\\x00\\x1fx\" + // 0x03BF0300: 0x00001F78\n\t\"\\x03\\xc5\\x03\\x00\\x00\\x00\\x1fz\" + // 0x03C50300: 0x00001F7A\n\t\"\\x03\\xc9\\x03\\x00\\x00\\x00\\x1f|\" + // 0x03C90300: 0x00001F7C\n\t\"\\x1f\\x00\\x03E\\x00\\x00\\x1f\\x80\" + // 0x1F000345: 0x00001F80\n\t\"\\x1f\\x01\\x03E\\x00\\x00\\x1f\\x81\" + // 0x1F010345: 0x00001F81\n\t\"\\x1f\\x02\\x03E\\x00\\x00\\x1f\\x82\" + // 0x1F020345: 0x00001F82\n\t\"\\x1f\\x03\\x03E\\x00\\x00\\x1f\\x83\" + // 0x1F030345: 0x00001F83\n\t\"\\x1f\\x04\\x03E\\x00\\x00\\x1f\\x84\" + // 0x1F040345: 0x00001F84\n\t\"\\x1f\\x05\\x03E\\x00\\x00\\x1f\\x85\" + // 0x1F050345: 0x00001F85\n\t\"\\x1f\\x06\\x03E\\x00\\x00\\x1f\\x86\" + // 0x1F060345: 0x00001F86\n\t\"\\x1f\\a\\x03E\\x00\\x00\\x1f\\x87\" + // 0x1F070345: 0x00001F87\n\t\"\\x1f\\b\\x03E\\x00\\x00\\x1f\\x88\" + // 0x1F080345: 0x00001F88\n\t\"\\x1f\\t\\x03E\\x00\\x00\\x1f\\x89\" + // 0x1F090345: 0x00001F89\n\t\"\\x1f\\n\\x03E\\x00\\x00\\x1f\\x8a\" + // 0x1F0A0345: 0x00001F8A\n\t\"\\x1f\\v\\x03E\\x00\\x00\\x1f\\x8b\" + // 0x1F0B0345: 0x00001F8B\n\t\"\\x1f\\f\\x03E\\x00\\x00\\x1f\\x8c\" + // 0x1F0C0345: 0x00001F8C\n\t\"\\x1f\\r\\x03E\\x00\\x00\\x1f\\x8d\" + // 0x1F0D0345: 0x00001F8D\n\t\"\\x1f\\x0e\\x03E\\x00\\x00\\x1f\\x8e\" + // 0x1F0E0345: 0x00001F8E\n\t\"\\x1f\\x0f\\x03E\\x00\\x00\\x1f\\x8f\" + // 0x1F0F0345: 0x00001F8F\n\t\"\\x1f \\x03E\\x00\\x00\\x1f\\x90\" + // 0x1F200345: 0x00001F90\n\t\"\\x1f!\\x03E\\x00\\x00\\x1f\\x91\" + // 0x1F210345: 0x00001F91\n\t\"\\x1f\\\"\\x03E\\x00\\x00\\x1f\\x92\" + // 0x1F220345: 0x00001F92\n\t\"\\x1f#\\x03E\\x00\\x00\\x1f\\x93\" + // 0x1F230345: 0x00001F93\n\t\"\\x1f$\\x03E\\x00\\x00\\x1f\\x94\" + // 0x1F240345: 0x00001F94\n\t\"\\x1f%\\x03E\\x00\\x00\\x1f\\x95\" + // 0x1F250345: 0x00001F95\n\t\"\\x1f&\\x03E\\x00\\x00\\x1f\\x96\" + // 0x1F260345: 0x00001F96\n\t\"\\x1f'\\x03E\\x00\\x00\\x1f\\x97\" + // 0x1F270345: 0x00001F97\n\t\"\\x1f(\\x03E\\x00\\x00\\x1f\\x98\" + // 0x1F280345: 0x00001F98\n\t\"\\x1f)\\x03E\\x00\\x00\\x1f\\x99\" + // 0x1F290345: 0x00001F99\n\t\"\\x1f*\\x03E\\x00\\x00\\x1f\\x9a\" + // 0x1F2A0345: 0x00001F9A\n\t\"\\x1f+\\x03E\\x00\\x00\\x1f\\x9b\" + // 0x1F2B0345: 0x00001F9B\n\t\"\\x1f,\\x03E\\x00\\x00\\x1f\\x9c\" + // 0x1F2C0345: 0x00001F9C\n\t\"\\x1f-\\x03E\\x00\\x00\\x1f\\x9d\" + // 0x1F2D0345: 0x00001F9D\n\t\"\\x1f.\\x03E\\x00\\x00\\x1f\\x9e\" + // 0x1F2E0345: 0x00001F9E\n\t\"\\x1f/\\x03E\\x00\\x00\\x1f\\x9f\" + // 0x1F2F0345: 0x00001F9F\n\t\"\\x1f`\\x03E\\x00\\x00\\x1f\\xa0\" + // 0x1F600345: 0x00001FA0\n\t\"\\x1fa\\x03E\\x00\\x00\\x1f\\xa1\" + // 0x1F610345: 0x00001FA1\n\t\"\\x1fb\\x03E\\x00\\x00\\x1f\\xa2\" + // 0x1F620345: 0x00001FA2\n\t\"\\x1fc\\x03E\\x00\\x00\\x1f\\xa3\" + // 0x1F630345: 0x00001FA3\n\t\"\\x1fd\\x03E\\x00\\x00\\x1f\\xa4\" + // 0x1F640345: 0x00001FA4\n\t\"\\x1fe\\x03E\\x00\\x00\\x1f\\xa5\" + // 0x1F650345: 0x00001FA5\n\t\"\\x1ff\\x03E\\x00\\x00\\x1f\\xa6\" + // 0x1F660345: 0x00001FA6\n\t\"\\x1fg\\x03E\\x00\\x00\\x1f\\xa7\" + // 0x1F670345: 0x00001FA7\n\t\"\\x1fh\\x03E\\x00\\x00\\x1f\\xa8\" + // 0x1F680345: 0x00001FA8\n\t\"\\x1fi\\x03E\\x00\\x00\\x1f\\xa9\" + // 0x1F690345: 0x00001FA9\n\t\"\\x1fj\\x03E\\x00\\x00\\x1f\\xaa\" + // 0x1F6A0345: 0x00001FAA\n\t\"\\x1fk\\x03E\\x00\\x00\\x1f\\xab\" + // 0x1F6B0345: 0x00001FAB\n\t\"\\x1fl\\x03E\\x00\\x00\\x1f\\xac\" + // 0x1F6C0345: 0x00001FAC\n\t\"\\x1fm\\x03E\\x00\\x00\\x1f\\xad\" + // 0x1F6D0345: 0x00001FAD\n\t\"\\x1fn\\x03E\\x00\\x00\\x1f\\xae\" + // 0x1F6E0345: 0x00001FAE\n\t\"\\x1fo\\x03E\\x00\\x00\\x1f\\xaf\" + // 0x1F6F0345: 0x00001FAF\n\t\"\\x03\\xb1\\x03\\x06\\x00\\x00\\x1f\\xb0\" + // 0x03B10306: 0x00001FB0\n\t\"\\x03\\xb1\\x03\\x04\\x00\\x00\\x1f\\xb1\" + // 0x03B10304: 0x00001FB1\n\t\"\\x1fp\\x03E\\x00\\x00\\x1f\\xb2\" + // 0x1F700345: 0x00001FB2\n\t\"\\x03\\xb1\\x03E\\x00\\x00\\x1f\\xb3\" + // 0x03B10345: 0x00001FB3\n\t\"\\x03\\xac\\x03E\\x00\\x00\\x1f\\xb4\" + // 0x03AC0345: 0x00001FB4\n\t\"\\x03\\xb1\\x03B\\x00\\x00\\x1f\\xb6\" + // 0x03B10342: 0x00001FB6\n\t\"\\x1f\\xb6\\x03E\\x00\\x00\\x1f\\xb7\" + // 0x1FB60345: 0x00001FB7\n\t\"\\x03\\x91\\x03\\x06\\x00\\x00\\x1f\\xb8\" + // 0x03910306: 0x00001FB8\n\t\"\\x03\\x91\\x03\\x04\\x00\\x00\\x1f\\xb9\" + // 0x03910304: 0x00001FB9\n\t\"\\x03\\x91\\x03\\x00\\x00\\x00\\x1f\\xba\" + // 0x03910300: 0x00001FBA\n\t\"\\x03\\x91\\x03E\\x00\\x00\\x1f\\xbc\" + // 0x03910345: 0x00001FBC\n\t\"\\x00\\xa8\\x03B\\x00\\x00\\x1f\\xc1\" + // 0x00A80342: 0x00001FC1\n\t\"\\x1ft\\x03E\\x00\\x00\\x1f\\xc2\" + // 0x1F740345: 0x00001FC2\n\t\"\\x03\\xb7\\x03E\\x00\\x00\\x1f\\xc3\" + // 0x03B70345: 0x00001FC3\n\t\"\\x03\\xae\\x03E\\x00\\x00\\x1f\\xc4\" + // 0x03AE0345: 0x00001FC4\n\t\"\\x03\\xb7\\x03B\\x00\\x00\\x1f\\xc6\" + // 0x03B70342: 0x00001FC6\n\t\"\\x1f\\xc6\\x03E\\x00\\x00\\x1f\\xc7\" + // 0x1FC60345: 0x00001FC7\n\t\"\\x03\\x95\\x03\\x00\\x00\\x00\\x1f\\xc8\" + // 0x03950300: 0x00001FC8\n\t\"\\x03\\x97\\x03\\x00\\x00\\x00\\x1f\\xca\" + // 0x03970300: 0x00001FCA\n\t\"\\x03\\x97\\x03E\\x00\\x00\\x1f\\xcc\" + // 0x03970345: 0x00001FCC\n\t\"\\x1f\\xbf\\x03\\x00\\x00\\x00\\x1f\\xcd\" + // 0x1FBF0300: 0x00001FCD\n\t\"\\x1f\\xbf\\x03\\x01\\x00\\x00\\x1f\\xce\" + // 0x1FBF0301: 0x00001FCE\n\t\"\\x1f\\xbf\\x03B\\x00\\x00\\x1f\\xcf\" + // 0x1FBF0342: 0x00001FCF\n\t\"\\x03\\xb9\\x03\\x06\\x00\\x00\\x1f\\xd0\" + // 0x03B90306: 0x00001FD0\n\t\"\\x03\\xb9\\x03\\x04\\x00\\x00\\x1f\\xd1\" + // 0x03B90304: 0x00001FD1\n\t\"\\x03\\xca\\x03\\x00\\x00\\x00\\x1f\\xd2\" + // 0x03CA0300: 0x00001FD2\n\t\"\\x03\\xb9\\x03B\\x00\\x00\\x1f\\xd6\" + // 0x03B90342: 0x00001FD6\n\t\"\\x03\\xca\\x03B\\x00\\x00\\x1f\\xd7\" + // 0x03CA0342: 0x00001FD7\n\t\"\\x03\\x99\\x03\\x06\\x00\\x00\\x1f\\xd8\" + // 0x03990306: 0x00001FD8\n\t\"\\x03\\x99\\x03\\x04\\x00\\x00\\x1f\\xd9\" + // 0x03990304: 0x00001FD9\n\t\"\\x03\\x99\\x03\\x00\\x00\\x00\\x1f\\xda\" + // 0x03990300: 0x00001FDA\n\t\"\\x1f\\xfe\\x03\\x00\\x00\\x00\\x1f\\xdd\" + // 0x1FFE0300: 0x00001FDD\n\t\"\\x1f\\xfe\\x03\\x01\\x00\\x00\\x1f\\xde\" + // 0x1FFE0301: 0x00001FDE\n\t\"\\x1f\\xfe\\x03B\\x00\\x00\\x1f\\xdf\" + // 0x1FFE0342: 0x00001FDF\n\t\"\\x03\\xc5\\x03\\x06\\x00\\x00\\x1f\\xe0\" + // 0x03C50306: 0x00001FE0\n\t\"\\x03\\xc5\\x03\\x04\\x00\\x00\\x1f\\xe1\" + // 0x03C50304: 0x00001FE1\n\t\"\\x03\\xcb\\x03\\x00\\x00\\x00\\x1f\\xe2\" + // 0x03CB0300: 0x00001FE2\n\t\"\\x03\\xc1\\x03\\x13\\x00\\x00\\x1f\\xe4\" + // 0x03C10313: 0x00001FE4\n\t\"\\x03\\xc1\\x03\\x14\\x00\\x00\\x1f\\xe5\" + // 0x03C10314: 0x00001FE5\n\t\"\\x03\\xc5\\x03B\\x00\\x00\\x1f\\xe6\" + // 0x03C50342: 0x00001FE6\n\t\"\\x03\\xcb\\x03B\\x00\\x00\\x1f\\xe7\" + // 0x03CB0342: 0x00001FE7\n\t\"\\x03\\xa5\\x03\\x06\\x00\\x00\\x1f\\xe8\" + // 0x03A50306: 0x00001FE8\n\t\"\\x03\\xa5\\x03\\x04\\x00\\x00\\x1f\\xe9\" + // 0x03A50304: 0x00001FE9\n\t\"\\x03\\xa5\\x03\\x00\\x00\\x00\\x1f\\xea\" + // 0x03A50300: 0x00001FEA\n\t\"\\x03\\xa1\\x03\\x14\\x00\\x00\\x1f\\xec\" + // 0x03A10314: 0x00001FEC\n\t\"\\x00\\xa8\\x03\\x00\\x00\\x00\\x1f\\xed\" + // 0x00A80300: 0x00001FED\n\t\"\\x1f|\\x03E\\x00\\x00\\x1f\\xf2\" + // 0x1F7C0345: 0x00001FF2\n\t\"\\x03\\xc9\\x03E\\x00\\x00\\x1f\\xf3\" + // 0x03C90345: 0x00001FF3\n\t\"\\x03\\xce\\x03E\\x00\\x00\\x1f\\xf4\" + // 0x03CE0345: 0x00001FF4\n\t\"\\x03\\xc9\\x03B\\x00\\x00\\x1f\\xf6\" + // 0x03C90342: 0x00001FF6\n\t\"\\x1f\\xf6\\x03E\\x00\\x00\\x1f\\xf7\" + // 0x1FF60345: 0x00001FF7\n\t\"\\x03\\x9f\\x03\\x00\\x00\\x00\\x1f\\xf8\" + // 0x039F0300: 0x00001FF8\n\t\"\\x03\\xa9\\x03\\x00\\x00\\x00\\x1f\\xfa\" + // 0x03A90300: 0x00001FFA\n\t\"\\x03\\xa9\\x03E\\x00\\x00\\x1f\\xfc\" + // 0x03A90345: 0x00001FFC\n\t\"!\\x90\\x038\\x00\\x00!\\x9a\" + // 0x21900338: 0x0000219A\n\t\"!\\x92\\x038\\x00\\x00!\\x9b\" + // 0x21920338: 0x0000219B\n\t\"!\\x94\\x038\\x00\\x00!\\xae\" + // 0x21940338: 0x000021AE\n\t\"!\\xd0\\x038\\x00\\x00!\\xcd\" + // 0x21D00338: 0x000021CD\n\t\"!\\xd4\\x038\\x00\\x00!\\xce\" + // 0x21D40338: 0x000021CE\n\t\"!\\xd2\\x038\\x00\\x00!\\xcf\" + // 0x21D20338: 0x000021CF\n\t\"\\\"\\x03\\x038\\x00\\x00\\\"\\x04\" + // 0x22030338: 0x00002204\n\t\"\\\"\\b\\x038\\x00\\x00\\\"\\t\" + // 0x22080338: 0x00002209\n\t\"\\\"\\v\\x038\\x00\\x00\\\"\\f\" + // 0x220B0338: 0x0000220C\n\t\"\\\"#\\x038\\x00\\x00\\\"$\" + // 0x22230338: 0x00002224\n\t\"\\\"%\\x038\\x00\\x00\\\"&\" + // 0x22250338: 0x00002226\n\t\"\\\"<\\x038\\x00\\x00\\\"A\" + // 0x223C0338: 0x00002241\n\t\"\\\"C\\x038\\x00\\x00\\\"D\" + // 0x22430338: 0x00002244\n\t\"\\\"E\\x038\\x00\\x00\\\"G\" + // 0x22450338: 0x00002247\n\t\"\\\"H\\x038\\x00\\x00\\\"I\" + // 0x22480338: 0x00002249\n\t\"\\x00=\\x038\\x00\\x00\\\"`\" + // 0x003D0338: 0x00002260\n\t\"\\\"a\\x038\\x00\\x00\\\"b\" + // 0x22610338: 0x00002262\n\t\"\\\"M\\x038\\x00\\x00\\\"m\" + // 0x224D0338: 0x0000226D\n\t\"\\x00<\\x038\\x00\\x00\\\"n\" + // 0x003C0338: 0x0000226E\n\t\"\\x00>\\x038\\x00\\x00\\\"o\" + // 0x003E0338: 0x0000226F\n\t\"\\\"d\\x038\\x00\\x00\\\"p\" + // 0x22640338: 0x00002270\n\t\"\\\"e\\x038\\x00\\x00\\\"q\" + // 0x22650338: 0x00002271\n\t\"\\\"r\\x038\\x00\\x00\\\"t\" + // 0x22720338: 0x00002274\n\t\"\\\"s\\x038\\x00\\x00\\\"u\" + // 0x22730338: 0x00002275\n\t\"\\\"v\\x038\\x00\\x00\\\"x\" + // 0x22760338: 0x00002278\n\t\"\\\"w\\x038\\x00\\x00\\\"y\" + // 0x22770338: 0x00002279\n\t\"\\\"z\\x038\\x00\\x00\\\"\\x80\" + // 0x227A0338: 0x00002280\n\t\"\\\"{\\x038\\x00\\x00\\\"\\x81\" + // 0x227B0338: 0x00002281\n\t\"\\\"\\x82\\x038\\x00\\x00\\\"\\x84\" + // 0x22820338: 0x00002284\n\t\"\\\"\\x83\\x038\\x00\\x00\\\"\\x85\" + // 0x22830338: 0x00002285\n\t\"\\\"\\x86\\x038\\x00\\x00\\\"\\x88\" + // 0x22860338: 0x00002288\n\t\"\\\"\\x87\\x038\\x00\\x00\\\"\\x89\" + // 0x22870338: 0x00002289\n\t\"\\\"\\xa2\\x038\\x00\\x00\\\"\\xac\" + // 0x22A20338: 0x000022AC\n\t\"\\\"\\xa8\\x038\\x00\\x00\\\"\\xad\" + // 0x22A80338: 0x000022AD\n\t\"\\\"\\xa9\\x038\\x00\\x00\\\"\\xae\" + // 0x22A90338: 0x000022AE\n\t\"\\\"\\xab\\x038\\x00\\x00\\\"\\xaf\" + // 0x22AB0338: 0x000022AF\n\t\"\\\"|\\x038\\x00\\x00\\\"\\xe0\" + // 0x227C0338: 0x000022E0\n\t\"\\\"}\\x038\\x00\\x00\\\"\\xe1\" + // 0x227D0338: 0x000022E1\n\t\"\\\"\\x91\\x038\\x00\\x00\\\"\\xe2\" + // 0x22910338: 0x000022E2\n\t\"\\\"\\x92\\x038\\x00\\x00\\\"\\xe3\" + // 0x22920338: 0x000022E3\n\t\"\\\"\\xb2\\x038\\x00\\x00\\\"\\xea\" + // 0x22B20338: 0x000022EA\n\t\"\\\"\\xb3\\x038\\x00\\x00\\\"\\xeb\" + // 0x22B30338: 0x000022EB\n\t\"\\\"\\xb4\\x038\\x00\\x00\\\"\\xec\" + // 0x22B40338: 0x000022EC\n\t\"\\\"\\xb5\\x038\\x00\\x00\\\"\\xed\" + // 0x22B50338: 0x000022ED\n\t\"0K0\\x99\\x00\\x000L\" + // 0x304B3099: 0x0000304C\n\t\"0M0\\x99\\x00\\x000N\" + // 0x304D3099: 0x0000304E\n\t\"0O0\\x99\\x00\\x000P\" + // 0x304F3099: 0x00003050\n\t\"0Q0\\x99\\x00\\x000R\" + // 0x30513099: 0x00003052\n\t\"0S0\\x99\\x00\\x000T\" + // 0x30533099: 0x00003054\n\t\"0U0\\x99\\x00\\x000V\" + // 0x30553099: 0x00003056\n\t\"0W0\\x99\\x00\\x000X\" + // 0x30573099: 0x00003058\n\t\"0Y0\\x99\\x00\\x000Z\" + // 0x30593099: 0x0000305A\n\t\"0[0\\x99\\x00\\x000\\\\\" + // 0x305B3099: 0x0000305C\n\t\"0]0\\x99\\x00\\x000^\" + // 0x305D3099: 0x0000305E\n\t\"0_0\\x99\\x00\\x000`\" + // 0x305F3099: 0x00003060\n\t\"0a0\\x99\\x00\\x000b\" + // 0x30613099: 0x00003062\n\t\"0d0\\x99\\x00\\x000e\" + // 0x30643099: 0x00003065\n\t\"0f0\\x99\\x00\\x000g\" + // 0x30663099: 0x00003067\n\t\"0h0\\x99\\x00\\x000i\" + // 0x30683099: 0x00003069\n\t\"0o0\\x99\\x00\\x000p\" + // 0x306F3099: 0x00003070\n\t\"0o0\\x9a\\x00\\x000q\" + // 0x306F309A: 0x00003071\n\t\"0r0\\x99\\x00\\x000s\" + // 0x30723099: 0x00003073\n\t\"0r0\\x9a\\x00\\x000t\" + // 0x3072309A: 0x00003074\n\t\"0u0\\x99\\x00\\x000v\" + // 0x30753099: 0x00003076\n\t\"0u0\\x9a\\x00\\x000w\" + // 0x3075309A: 0x00003077\n\t\"0x0\\x99\\x00\\x000y\" + // 0x30783099: 0x00003079\n\t\"0x0\\x9a\\x00\\x000z\" + // 0x3078309A: 0x0000307A\n\t\"0{0\\x99\\x00\\x000|\" + // 0x307B3099: 0x0000307C\n\t\"0{0\\x9a\\x00\\x000}\" + // 0x307B309A: 0x0000307D\n\t\"0F0\\x99\\x00\\x000\\x94\" + // 0x30463099: 0x00003094\n\t\"0\\x9d0\\x99\\x00\\x000\\x9e\" + // 0x309D3099: 0x0000309E\n\t\"0\\xab0\\x99\\x00\\x000\\xac\" + // 0x30AB3099: 0x000030AC\n\t\"0\\xad0\\x99\\x00\\x000\\xae\" + // 0x30AD3099: 0x000030AE\n\t\"0\\xaf0\\x99\\x00\\x000\\xb0\" + // 0x30AF3099: 0x000030B0\n\t\"0\\xb10\\x99\\x00\\x000\\xb2\" + // 0x30B13099: 0x000030B2\n\t\"0\\xb30\\x99\\x00\\x000\\xb4\" + // 0x30B33099: 0x000030B4\n\t\"0\\xb50\\x99\\x00\\x000\\xb6\" + // 0x30B53099: 0x000030B6\n\t\"0\\xb70\\x99\\x00\\x000\\xb8\" + // 0x30B73099: 0x000030B8\n\t\"0\\xb90\\x99\\x00\\x000\\xba\" + // 0x30B93099: 0x000030BA\n\t\"0\\xbb0\\x99\\x00\\x000\\xbc\" + // 0x30BB3099: 0x000030BC\n\t\"0\\xbd0\\x99\\x00\\x000\\xbe\" + // 0x30BD3099: 0x000030BE\n\t\"0\\xbf0\\x99\\x00\\x000\\xc0\" + // 0x30BF3099: 0x000030C0\n\t\"0\\xc10\\x99\\x00\\x000\\xc2\" + // 0x30C13099: 0x000030C2\n\t\"0\\xc40\\x99\\x00\\x000\\xc5\" + // 0x30C43099: 0x000030C5\n\t\"0\\xc60\\x99\\x00\\x000\\xc7\" + // 0x30C63099: 0x000030C7\n\t\"0\\xc80\\x99\\x00\\x000\\xc9\" + // 0x30C83099: 0x000030C9\n\t\"0\\xcf0\\x99\\x00\\x000\\xd0\" + // 0x30CF3099: 0x000030D0\n\t\"0\\xcf0\\x9a\\x00\\x000\\xd1\" + // 0x30CF309A: 0x000030D1\n\t\"0\\xd20\\x99\\x00\\x000\\xd3\" + // 0x30D23099: 0x000030D3\n\t\"0\\xd20\\x9a\\x00\\x000\\xd4\" + // 0x30D2309A: 0x000030D4\n\t\"0\\xd50\\x99\\x00\\x000\\xd6\" + // 0x30D53099: 0x000030D6\n\t\"0\\xd50\\x9a\\x00\\x000\\xd7\" + // 0x30D5309A: 0x000030D7\n\t\"0\\xd80\\x99\\x00\\x000\\xd9\" + // 0x30D83099: 0x000030D9\n\t\"0\\xd80\\x9a\\x00\\x000\\xda\" + // 0x30D8309A: 0x000030DA\n\t\"0\\xdb0\\x99\\x00\\x000\\xdc\" + // 0x30DB3099: 0x000030DC\n\t\"0\\xdb0\\x9a\\x00\\x000\\xdd\" + // 0x30DB309A: 0x000030DD\n\t\"0\\xa60\\x99\\x00\\x000\\xf4\" + // 0x30A63099: 0x000030F4\n\t\"0\\xef0\\x99\\x00\\x000\\xf7\" + // 0x30EF3099: 0x000030F7\n\t\"0\\xf00\\x99\\x00\\x000\\xf8\" + // 0x30F03099: 0x000030F8\n\t\"0\\xf10\\x99\\x00\\x000\\xf9\" + // 0x30F13099: 0x000030F9\n\t\"0\\xf20\\x99\\x00\\x000\\xfa\" + // 0x30F23099: 0x000030FA\n\t\"0\\xfd0\\x99\\x00\\x000\\xfe\" + // 0x30FD3099: 0x000030FE\n\t\"\\x10\\x99\\x10\\xba\\x00\\x01\\x10\\x9a\" + // 0x109910BA: 0x0001109A\n\t\"\\x10\\x9b\\x10\\xba\\x00\\x01\\x10\\x9c\" + // 0x109B10BA: 0x0001109C\n\t\"\\x10\\xa5\\x10\\xba\\x00\\x01\\x10\\xab\" + // 0x10A510BA: 0x000110AB\n\t\"\\x111\\x11'\\x00\\x01\\x11.\" + // 0x11311127: 0x0001112E\n\t\"\\x112\\x11'\\x00\\x01\\x11/\" + // 0x11321127: 0x0001112F\n\t\"\\x13G\\x13>\\x00\\x01\\x13K\" + // 0x1347133E: 0x0001134B\n\t\"\\x13G\\x13W\\x00\\x01\\x13L\" + // 0x13471357: 0x0001134C\n\t\"\\x14\\xb9\\x14\\xba\\x00\\x01\\x14\\xbb\" + // 0x14B914BA: 0x000114BB\n\t\"\\x14\\xb9\\x14\\xb0\\x00\\x01\\x14\\xbc\" + // 0x14B914B0: 0x000114BC\n\t\"\\x14\\xb9\\x14\\xbd\\x00\\x01\\x14\\xbe\" + // 0x14B914BD: 0x000114BE\n\t\"\\x15\\xb8\\x15\\xaf\\x00\\x01\\x15\\xba\" + // 0x15B815AF: 0x000115BA\n\t\"\\x15\\xb9\\x15\\xaf\\x00\\x01\\x15\\xbb\" + // 0x15B915AF: 0x000115BB\n\t\"\"\n\t// Total size of tables: 53KB (54006 bytes)\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/transform.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\nimport (\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/text/transform\"\n)\n\n// Reset implements the Reset method of the transform.Transformer interface.\nfunc (Form) Reset() {}\n\n// Transform implements the Transform method of the transform.Transformer\n// interface. It may need to write segments of up to MaxSegmentSize at once.\n// Users should either catch ErrShortDst and allow dst to grow or have dst be at\n// least of size MaxTransformChunkSize to be guaranteed of progress.\nfunc (f Form) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\t// Cap the maximum number of src bytes to check.\n\tb := src\n\teof := atEOF\n\tif ns := len(dst); ns < len(b) {\n\t\terr = transform.ErrShortDst\n\t\teof = false\n\t\tb = b[:ns]\n\t}\n\ti, ok := formTable[f].quickSpan(inputBytes(b), 0, len(b), eof)\n\tn := copy(dst, b[:i])\n\tif !ok {\n\t\tnDst, nSrc, err = f.transform(dst[n:], src[n:], atEOF)\n\t\treturn nDst + n, nSrc + n, err\n\t}\n\n\tif err == nil && n < len(src) && !atEOF {\n\t\terr = transform.ErrShortSrc\n\t}\n\treturn n, n, err\n}\n\nfunc flushTransform(rb *reorderBuffer) bool {\n\t// Write out (must fully fit in dst, or else it is an ErrShortDst).\n\tif len(rb.out) < rb.nrune*utf8.UTFMax {\n\t\treturn false\n\t}\n\trb.out = rb.out[rb.flushCopy(rb.out):]\n\treturn true\n}\n\nvar errs = []error{nil, transform.ErrShortDst, transform.ErrShortSrc}\n\n// transform implements the transform.Transformer interface. It is only called\n// when quickSpan does not pass for a given string.\nfunc (f Form) transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {\n\t// TODO: get rid of reorderBuffer. See CL 23460044.\n\trb := reorderBuffer{}\n\trb.init(f, src)\n\tfor {\n\t\t// Load segment into reorder buffer.\n\t\trb.setFlusher(dst[nDst:], flushTransform)\n\t\tend := decomposeSegment(&rb, nSrc, atEOF)\n\t\tif end < 0 {\n\t\t\treturn nDst, nSrc, errs[-end]\n\t\t}\n\t\tnDst = len(dst) - len(rb.out)\n\t\tnSrc = end\n\n\t\t// Next quickSpan.\n\t\tend = rb.nsrc\n\t\teof := atEOF\n\t\tif n := nSrc + len(dst) - nDst; n < end {\n\t\t\terr = transform.ErrShortDst\n\t\t\tend = n\n\t\t\teof = false\n\t\t}\n\t\tend, ok := rb.f.quickSpan(rb.src, nSrc, end, eof)\n\t\tn := copy(dst[nDst:], rb.src.bytes[nSrc:end])\n\t\tnSrc += n\n\t\tnDst += n\n\t\tif ok {\n\t\t\tif err == nil && n < rb.nsrc && !atEOF {\n\t\t\t\terr = transform.ErrShortSrc\n\t\t\t}\n\t\t\treturn nDst, nSrc, err\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/text/unicode/norm/trie.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage norm\n\ntype valueRange struct {\n\tvalue  uint16 // header: value:stride\n\tlo, hi byte   // header: lo:n\n}\n\ntype sparseBlocks struct {\n\tvalues []valueRange\n\toffset []uint16\n}\n\nvar nfcSparse = sparseBlocks{\n\tvalues: nfcSparseValues[:],\n\toffset: nfcSparseOffset[:],\n}\n\nvar nfkcSparse = sparseBlocks{\n\tvalues: nfkcSparseValues[:],\n\toffset: nfkcSparseOffset[:],\n}\n\nvar (\n\tnfcData  = newNfcTrie(0)\n\tnfkcData = newNfkcTrie(0)\n)\n\n// lookup determines the type of block n and looks up the value for b.\n// For n < t.cutoff, the block is a simple lookup table. Otherwise, the block\n// is a list of ranges with an accompanying value. Given a matching range r,\n// the value for b is by r.value + (b - r.lo) * stride.\nfunc (t *sparseBlocks) lookup(n uint32, b byte) uint16 {\n\toffset := t.offset[n]\n\theader := t.values[offset]\n\tlo := offset + 1\n\thi := lo + uint16(header.lo)\n\tfor lo < hi {\n\t\tm := lo + (hi-lo)/2\n\t\tr := t.values[m]\n\t\tif r.lo <= b && b <= r.hi {\n\t\t\treturn r.value + uint16(b-r.lo)*header.value\n\t\t}\n\t\tif b < r.lo {\n\t\t\thi = m\n\t\t} else {\n\t\t\tlo = m + 1\n\t\t}\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/golang.org/x/time/LICENSE",
    "content": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/golang.org/x/time/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/golang.org/x/time/rate/rate.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package rate provides a rate limiter.\npackage rate\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"math\"\n\t\"sync\"\n\t\"time\"\n)\n\n// Limit defines the maximum frequency of some events.\n// Limit is represented as number of events per second.\n// A zero Limit allows no events.\ntype Limit float64\n\n// Inf is the infinite rate limit; it allows all events (even if burst is zero).\nconst Inf = Limit(math.MaxFloat64)\n\n// Every converts a minimum time interval between events to a Limit.\nfunc Every(interval time.Duration) Limit {\n\tif interval <= 0 {\n\t\treturn Inf\n\t}\n\treturn 1 / Limit(interval.Seconds())\n}\n\n// A Limiter controls how frequently events are allowed to happen.\n// It implements a \"token bucket\" of size b, initially full and refilled\n// at rate r tokens per second.\n// Informally, in any large enough time interval, the Limiter limits the\n// rate to r tokens per second, with a maximum burst size of b events.\n// As a special case, if r == Inf (the infinite rate), b is ignored.\n// See https://en.wikipedia.org/wiki/Token_bucket for more about token buckets.\n//\n// The zero value is a valid Limiter, but it will reject all events.\n// Use NewLimiter to create non-zero Limiters.\n//\n// Limiter has three main methods, Allow, Reserve, and Wait.\n// Most callers should use Wait.\n//\n// Each of the three methods consumes a single token.\n// They differ in their behavior when no token is available.\n// If no token is available, Allow returns false.\n// If no token is available, Reserve returns a reservation for a future token\n// and the amount of time the caller must wait before using it.\n// If no token is available, Wait blocks until one can be obtained\n// or its associated context.Context is canceled.\n//\n// The methods AllowN, ReserveN, and WaitN consume n tokens.\n//\n// Limiter is safe for simultaneous use by multiple goroutines.\ntype Limiter struct {\n\tmu     sync.Mutex\n\tlimit  Limit\n\tburst  int\n\ttokens float64\n\t// last is the last time the limiter's tokens field was updated\n\tlast time.Time\n\t// lastEvent is the latest time of a rate-limited event (past or future)\n\tlastEvent time.Time\n}\n\n// Limit returns the maximum overall event rate.\nfunc (lim *Limiter) Limit() Limit {\n\tlim.mu.Lock()\n\tdefer lim.mu.Unlock()\n\treturn lim.limit\n}\n\n// Burst returns the maximum burst size. Burst is the maximum number of tokens\n// that can be consumed in a single call to Allow, Reserve, or Wait, so higher\n// Burst values allow more events to happen at once.\n// A zero Burst allows no events, unless limit == Inf.\nfunc (lim *Limiter) Burst() int {\n\tlim.mu.Lock()\n\tdefer lim.mu.Unlock()\n\treturn lim.burst\n}\n\n// TokensAt returns the number of tokens available at time t.\nfunc (lim *Limiter) TokensAt(t time.Time) float64 {\n\tlim.mu.Lock()\n\t_, tokens := lim.advance(t) // does not mutate lim\n\tlim.mu.Unlock()\n\treturn tokens\n}\n\n// Tokens returns the number of tokens available now.\nfunc (lim *Limiter) Tokens() float64 {\n\treturn lim.TokensAt(time.Now())\n}\n\n// NewLimiter returns a new Limiter that allows events up to rate r and permits\n// bursts of at most b tokens.\nfunc NewLimiter(r Limit, b int) *Limiter {\n\treturn &Limiter{\n\t\tlimit: r,\n\t\tburst: b,\n\t}\n}\n\n// Allow reports whether an event may happen now.\nfunc (lim *Limiter) Allow() bool {\n\treturn lim.AllowN(time.Now(), 1)\n}\n\n// AllowN reports whether n events may happen at time t.\n// Use this method if you intend to drop / skip events that exceed the rate limit.\n// Otherwise use Reserve or Wait.\nfunc (lim *Limiter) AllowN(t time.Time, n int) bool {\n\treturn lim.reserveN(t, n, 0).ok\n}\n\n// A Reservation holds information about events that are permitted by a Limiter to happen after a delay.\n// A Reservation may be canceled, which may enable the Limiter to permit additional events.\ntype Reservation struct {\n\tok        bool\n\tlim       *Limiter\n\ttokens    int\n\ttimeToAct time.Time\n\t// This is the Limit at reservation time, it can change later.\n\tlimit Limit\n}\n\n// OK returns whether the limiter can provide the requested number of tokens\n// within the maximum wait time.  If OK is false, Delay returns InfDuration, and\n// Cancel does nothing.\nfunc (r *Reservation) OK() bool {\n\treturn r.ok\n}\n\n// Delay is shorthand for DelayFrom(time.Now()).\nfunc (r *Reservation) Delay() time.Duration {\n\treturn r.DelayFrom(time.Now())\n}\n\n// InfDuration is the duration returned by Delay when a Reservation is not OK.\nconst InfDuration = time.Duration(math.MaxInt64)\n\n// DelayFrom returns the duration for which the reservation holder must wait\n// before taking the reserved action.  Zero duration means act immediately.\n// InfDuration means the limiter cannot grant the tokens requested in this\n// Reservation within the maximum wait time.\nfunc (r *Reservation) DelayFrom(t time.Time) time.Duration {\n\tif !r.ok {\n\t\treturn InfDuration\n\t}\n\tdelay := r.timeToAct.Sub(t)\n\tif delay < 0 {\n\t\treturn 0\n\t}\n\treturn delay\n}\n\n// Cancel is shorthand for CancelAt(time.Now()).\nfunc (r *Reservation) Cancel() {\n\tr.CancelAt(time.Now())\n}\n\n// CancelAt indicates that the reservation holder will not perform the reserved action\n// and reverses the effects of this Reservation on the rate limit as much as possible,\n// considering that other reservations may have already been made.\nfunc (r *Reservation) CancelAt(t time.Time) {\n\tif !r.ok {\n\t\treturn\n\t}\n\n\tr.lim.mu.Lock()\n\tdefer r.lim.mu.Unlock()\n\n\tif r.lim.limit == Inf || r.tokens == 0 || r.timeToAct.Before(t) {\n\t\treturn\n\t}\n\n\t// calculate tokens to restore\n\t// The duration between lim.lastEvent and r.timeToAct tells us how many tokens were reserved\n\t// after r was obtained. These tokens should not be restored.\n\trestoreTokens := float64(r.tokens) - r.limit.tokensFromDuration(r.lim.lastEvent.Sub(r.timeToAct))\n\tif restoreTokens <= 0 {\n\t\treturn\n\t}\n\t// advance time to now\n\tt, tokens := r.lim.advance(t)\n\t// calculate new number of tokens\n\ttokens += restoreTokens\n\tif burst := float64(r.lim.burst); tokens > burst {\n\t\ttokens = burst\n\t}\n\t// update state\n\tr.lim.last = t\n\tr.lim.tokens = tokens\n\tif r.timeToAct == r.lim.lastEvent {\n\t\tprevEvent := r.timeToAct.Add(r.limit.durationFromTokens(float64(-r.tokens)))\n\t\tif !prevEvent.Before(t) {\n\t\t\tr.lim.lastEvent = prevEvent\n\t\t}\n\t}\n}\n\n// Reserve is shorthand for ReserveN(time.Now(), 1).\nfunc (lim *Limiter) Reserve() *Reservation {\n\treturn lim.ReserveN(time.Now(), 1)\n}\n\n// ReserveN returns a Reservation that indicates how long the caller must wait before n events happen.\n// The Limiter takes this Reservation into account when allowing future events.\n// The returned Reservation’s OK() method returns false if n exceeds the Limiter's burst size.\n// Usage example:\n//\n//\tr := lim.ReserveN(time.Now(), 1)\n//\tif !r.OK() {\n//\t  // Not allowed to act! Did you remember to set lim.burst to be > 0 ?\n//\t  return\n//\t}\n//\ttime.Sleep(r.Delay())\n//\tAct()\n//\n// Use this method if you wish to wait and slow down in accordance with the rate limit without dropping events.\n// If you need to respect a deadline or cancel the delay, use Wait instead.\n// To drop or skip events exceeding rate limit, use Allow instead.\nfunc (lim *Limiter) ReserveN(t time.Time, n int) *Reservation {\n\tr := lim.reserveN(t, n, InfDuration)\n\treturn &r\n}\n\n// Wait is shorthand for WaitN(ctx, 1).\nfunc (lim *Limiter) Wait(ctx context.Context) (err error) {\n\treturn lim.WaitN(ctx, 1)\n}\n\n// WaitN blocks until lim permits n events to happen.\n// It returns an error if n exceeds the Limiter's burst size, the Context is\n// canceled, or the expected wait time exceeds the Context's Deadline.\n// The burst limit is ignored if the rate limit is Inf.\nfunc (lim *Limiter) WaitN(ctx context.Context, n int) (err error) {\n\t// The test code calls lim.wait with a fake timer generator.\n\t// This is the real timer generator.\n\tnewTimer := func(d time.Duration) (<-chan time.Time, func() bool, func()) {\n\t\ttimer := time.NewTimer(d)\n\t\treturn timer.C, timer.Stop, func() {}\n\t}\n\n\treturn lim.wait(ctx, n, time.Now(), newTimer)\n}\n\n// wait is the internal implementation of WaitN.\nfunc (lim *Limiter) wait(ctx context.Context, n int, t time.Time, newTimer func(d time.Duration) (<-chan time.Time, func() bool, func())) error {\n\tlim.mu.Lock()\n\tburst := lim.burst\n\tlimit := lim.limit\n\tlim.mu.Unlock()\n\n\tif n > burst && limit != Inf {\n\t\treturn fmt.Errorf(\"rate: Wait(n=%d) exceeds limiter's burst %d\", n, burst)\n\t}\n\t// Check if ctx is already cancelled\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\tdefault:\n\t}\n\t// Determine wait limit\n\twaitLimit := InfDuration\n\tif deadline, ok := ctx.Deadline(); ok {\n\t\twaitLimit = deadline.Sub(t)\n\t}\n\t// Reserve\n\tr := lim.reserveN(t, n, waitLimit)\n\tif !r.ok {\n\t\treturn fmt.Errorf(\"rate: Wait(n=%d) would exceed context deadline\", n)\n\t}\n\t// Wait if necessary\n\tdelay := r.DelayFrom(t)\n\tif delay == 0 {\n\t\treturn nil\n\t}\n\tch, stop, advance := newTimer(delay)\n\tdefer stop()\n\tadvance() // only has an effect when testing\n\tselect {\n\tcase <-ch:\n\t\t// We can proceed.\n\t\treturn nil\n\tcase <-ctx.Done():\n\t\t// Context was canceled before we could proceed.  Cancel the\n\t\t// reservation, which may permit other events to proceed sooner.\n\t\tr.Cancel()\n\t\treturn ctx.Err()\n\t}\n}\n\n// SetLimit is shorthand for SetLimitAt(time.Now(), newLimit).\nfunc (lim *Limiter) SetLimit(newLimit Limit) {\n\tlim.SetLimitAt(time.Now(), newLimit)\n}\n\n// SetLimitAt sets a new Limit for the limiter. The new Limit, and Burst, may be violated\n// or underutilized by those which reserved (using Reserve or Wait) but did not yet act\n// before SetLimitAt was called.\nfunc (lim *Limiter) SetLimitAt(t time.Time, newLimit Limit) {\n\tlim.mu.Lock()\n\tdefer lim.mu.Unlock()\n\n\tt, tokens := lim.advance(t)\n\n\tlim.last = t\n\tlim.tokens = tokens\n\tlim.limit = newLimit\n}\n\n// SetBurst is shorthand for SetBurstAt(time.Now(), newBurst).\nfunc (lim *Limiter) SetBurst(newBurst int) {\n\tlim.SetBurstAt(time.Now(), newBurst)\n}\n\n// SetBurstAt sets a new burst size for the limiter.\nfunc (lim *Limiter) SetBurstAt(t time.Time, newBurst int) {\n\tlim.mu.Lock()\n\tdefer lim.mu.Unlock()\n\n\tt, tokens := lim.advance(t)\n\n\tlim.last = t\n\tlim.tokens = tokens\n\tlim.burst = newBurst\n}\n\n// reserveN is a helper method for AllowN, ReserveN, and WaitN.\n// maxFutureReserve specifies the maximum reservation wait duration allowed.\n// reserveN returns Reservation, not *Reservation, to avoid allocation in AllowN and WaitN.\nfunc (lim *Limiter) reserveN(t time.Time, n int, maxFutureReserve time.Duration) Reservation {\n\tlim.mu.Lock()\n\tdefer lim.mu.Unlock()\n\n\tif lim.limit == Inf {\n\t\treturn Reservation{\n\t\t\tok:        true,\n\t\t\tlim:       lim,\n\t\t\ttokens:    n,\n\t\t\ttimeToAct: t,\n\t\t}\n\t} else if lim.limit == 0 {\n\t\tvar ok bool\n\t\tif lim.burst >= n {\n\t\t\tok = true\n\t\t\tlim.burst -= n\n\t\t}\n\t\treturn Reservation{\n\t\t\tok:        ok,\n\t\t\tlim:       lim,\n\t\t\ttokens:    lim.burst,\n\t\t\ttimeToAct: t,\n\t\t}\n\t}\n\n\tt, tokens := lim.advance(t)\n\n\t// Calculate the remaining number of tokens resulting from the request.\n\ttokens -= float64(n)\n\n\t// Calculate the wait duration\n\tvar waitDuration time.Duration\n\tif tokens < 0 {\n\t\twaitDuration = lim.limit.durationFromTokens(-tokens)\n\t}\n\n\t// Decide result\n\tok := n <= lim.burst && waitDuration <= maxFutureReserve\n\n\t// Prepare reservation\n\tr := Reservation{\n\t\tok:    ok,\n\t\tlim:   lim,\n\t\tlimit: lim.limit,\n\t}\n\tif ok {\n\t\tr.tokens = n\n\t\tr.timeToAct = t.Add(waitDuration)\n\n\t\t// Update state\n\t\tlim.last = t\n\t\tlim.tokens = tokens\n\t\tlim.lastEvent = r.timeToAct\n\t}\n\n\treturn r\n}\n\n// advance calculates and returns an updated state for lim resulting from the passage of time.\n// lim is not changed.\n// advance requires that lim.mu is held.\nfunc (lim *Limiter) advance(t time.Time) (newT time.Time, newTokens float64) {\n\tlast := lim.last\n\tif t.Before(last) {\n\t\tlast = t\n\t}\n\n\t// Calculate the new number of tokens, due to time that passed.\n\telapsed := t.Sub(last)\n\tdelta := lim.limit.tokensFromDuration(elapsed)\n\ttokens := lim.tokens + delta\n\tif burst := float64(lim.burst); tokens > burst {\n\t\ttokens = burst\n\t}\n\treturn t, tokens\n}\n\n// durationFromTokens is a unit conversion function from the number of tokens to the duration\n// of time it takes to accumulate them at a rate of limit tokens per second.\nfunc (limit Limit) durationFromTokens(tokens float64) time.Duration {\n\tif limit <= 0 {\n\t\treturn InfDuration\n\t}\n\tseconds := tokens / float64(limit)\n\treturn time.Duration(float64(time.Second) * seconds)\n}\n\n// tokensFromDuration is a unit conversion function from a time duration to the number of tokens\n// which could be accumulated during that duration at a rate of limit tokens per second.\nfunc (limit Limit) tokensFromDuration(d time.Duration) float64 {\n\tif limit <= 0 {\n\t\treturn 0\n\t}\n\treturn d.Seconds() * float64(limit)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/time/rate/sometimes.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 rate\n\nimport (\n\t\"sync\"\n\t\"time\"\n)\n\n// Sometimes will perform an action occasionally.  The First, Every, and\n// Interval fields govern the behavior of Do, which performs the action.\n// A zero Sometimes value will perform an action exactly once.\n//\n// # Example: logging with rate limiting\n//\n//\tvar sometimes = rate.Sometimes{First: 3, Interval: 10*time.Second}\n//\tfunc Spammy() {\n//\t        sometimes.Do(func() { log.Info(\"here I am!\") })\n//\t}\ntype Sometimes struct {\n\tFirst    int           // if non-zero, the first N calls to Do will run f.\n\tEvery    int           // if non-zero, every Nth call to Do will run f.\n\tInterval time.Duration // if non-zero and Interval has elapsed since f's last run, Do will run f.\n\n\tmu    sync.Mutex\n\tcount int       // number of Do calls\n\tlast  time.Time // last time f was run\n}\n\n// Do runs the function f as allowed by First, Every, and Interval.\n//\n// The model is a union (not intersection) of filters.  The first call to Do\n// always runs f.  Subsequent calls to Do run f if allowed by First or Every or\n// Interval.\n//\n// A non-zero First:N causes the first N Do(f) calls to run f.\n//\n// A non-zero Every:M causes every Mth Do(f) call, starting with the first, to\n// run f.\n//\n// A non-zero Interval causes Do(f) to run f if Interval has elapsed since\n// Do last ran f.\n//\n// Specifying multiple filters produces the union of these execution streams.\n// For example, specifying both First:N and Every:M causes the first N Do(f)\n// calls and every Mth Do(f) call, starting with the first, to run f.  See\n// Examples for more.\n//\n// If Do is called multiple times simultaneously, the calls will block and run\n// serially.  Therefore, Do is intended for lightweight operations.\n//\n// Because a call to Do may block until f returns, if f causes Do to be called,\n// it will deadlock.\nfunc (s *Sometimes) Do(f func()) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\tif s.count == 0 ||\n\t\t(s.First > 0 && s.count < s.First) ||\n\t\t(s.Every > 0 && s.count%s.Every == 0) ||\n\t\t(s.Interval > 0 && time.Since(s.last) >= s.Interval) {\n\t\tf()\n\t\ts.last = time.Now()\n\t}\n\ts.count++\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/annotations.pb.go",
    "content": "// Copyright 2015 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v3.12.2\n// source: google/api/annotations.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\nvar file_google_api_annotations_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.MethodOptions)(nil),\n\t\tExtensionType: (*HttpRule)(nil),\n\t\tField:         72295728,\n\t\tName:          \"google.api.http\",\n\t\tTag:           \"bytes,72295728,opt,name=http\",\n\t\tFilename:      \"google/api/annotations.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.MethodOptions.\nvar (\n\t// See `HttpRule`.\n\t//\n\t// optional google.api.HttpRule http = 72295728;\n\tE_Http = &file_google_api_annotations_proto_extTypes[0]\n)\n\nvar File_google_api_annotations_proto protoreflect.FileDescriptor\n\nvar file_google_api_annotations_proto_rawDesc = []byte{\n\t0x0a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e,\n\t0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x15, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x3a, 0x4b, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x12, 0x1e, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65,\n\t0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb0, 0xca, 0xbc, 0x22,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70,\n\t0x42, 0x6e, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,\n\t0x70, 0x69, 0x42, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50,\n\t0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,\n\t0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70,\n\t0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e,\n\t0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49,\n\t0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar file_google_api_annotations_proto_goTypes = []interface{}{\n\t(*descriptorpb.MethodOptions)(nil), // 0: google.protobuf.MethodOptions\n\t(*HttpRule)(nil),                   // 1: google.api.HttpRule\n}\nvar file_google_api_annotations_proto_depIdxs = []int32{\n\t0, // 0: google.api.http:extendee -> google.protobuf.MethodOptions\n\t1, // 1: google.api.http:type_name -> google.api.HttpRule\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t1, // [1:2] is the sub-list for extension type_name\n\t0, // [0:1] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_annotations_proto_init() }\nfunc file_google_api_annotations_proto_init() {\n\tif File_google_api_annotations_proto != nil {\n\t\treturn\n\t}\n\tfile_google_api_http_proto_init()\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_annotations_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_annotations_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_annotations_proto_depIdxs,\n\t\tExtensionInfos:    file_google_api_annotations_proto_extTypes,\n\t}.Build()\n\tFile_google_api_annotations_proto = out.File\n\tfile_google_api_annotations_proto_rawDesc = nil\n\tfile_google_api_annotations_proto_goTypes = nil\n\tfile_google_api_annotations_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/client.pb.go",
    "content": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v3.21.12\n// source: google/api/client.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tapi \"google.golang.org/genproto/googleapis/api\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// The organization for which the client libraries are being published.\n// Affects the url where generated docs are published, etc.\ntype ClientLibraryOrganization int32\n\nconst (\n\t// Not useful.\n\tClientLibraryOrganization_CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED ClientLibraryOrganization = 0\n\t// Google Cloud Platform Org.\n\tClientLibraryOrganization_CLOUD ClientLibraryOrganization = 1\n\t// Ads (Advertising) Org.\n\tClientLibraryOrganization_ADS ClientLibraryOrganization = 2\n\t// Photos Org.\n\tClientLibraryOrganization_PHOTOS ClientLibraryOrganization = 3\n\t// Street View Org.\n\tClientLibraryOrganization_STREET_VIEW ClientLibraryOrganization = 4\n\t// Shopping Org.\n\tClientLibraryOrganization_SHOPPING ClientLibraryOrganization = 5\n\t// Geo Org.\n\tClientLibraryOrganization_GEO ClientLibraryOrganization = 6\n\t// Generative AI - https://developers.generativeai.google\n\tClientLibraryOrganization_GENERATIVE_AI ClientLibraryOrganization = 7\n)\n\n// Enum value maps for ClientLibraryOrganization.\nvar (\n\tClientLibraryOrganization_name = map[int32]string{\n\t\t0: \"CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED\",\n\t\t1: \"CLOUD\",\n\t\t2: \"ADS\",\n\t\t3: \"PHOTOS\",\n\t\t4: \"STREET_VIEW\",\n\t\t5: \"SHOPPING\",\n\t\t6: \"GEO\",\n\t\t7: \"GENERATIVE_AI\",\n\t}\n\tClientLibraryOrganization_value = map[string]int32{\n\t\t\"CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED\": 0,\n\t\t\"CLOUD\":         1,\n\t\t\"ADS\":           2,\n\t\t\"PHOTOS\":        3,\n\t\t\"STREET_VIEW\":   4,\n\t\t\"SHOPPING\":      5,\n\t\t\"GEO\":           6,\n\t\t\"GENERATIVE_AI\": 7,\n\t}\n)\n\nfunc (x ClientLibraryOrganization) Enum() *ClientLibraryOrganization {\n\tp := new(ClientLibraryOrganization)\n\t*p = x\n\treturn p\n}\n\nfunc (x ClientLibraryOrganization) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ClientLibraryOrganization) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_client_proto_enumTypes[0].Descriptor()\n}\n\nfunc (ClientLibraryOrganization) Type() protoreflect.EnumType {\n\treturn &file_google_api_client_proto_enumTypes[0]\n}\n\nfunc (x ClientLibraryOrganization) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ClientLibraryOrganization.Descriptor instead.\nfunc (ClientLibraryOrganization) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{0}\n}\n\n// To where should client libraries be published?\ntype ClientLibraryDestination int32\n\nconst (\n\t// Client libraries will neither be generated nor published to package\n\t// managers.\n\tClientLibraryDestination_CLIENT_LIBRARY_DESTINATION_UNSPECIFIED ClientLibraryDestination = 0\n\t// Generate the client library in a repo under github.com/googleapis,\n\t// but don't publish it to package managers.\n\tClientLibraryDestination_GITHUB ClientLibraryDestination = 10\n\t// Publish the library to package managers like nuget.org and npmjs.com.\n\tClientLibraryDestination_PACKAGE_MANAGER ClientLibraryDestination = 20\n)\n\n// Enum value maps for ClientLibraryDestination.\nvar (\n\tClientLibraryDestination_name = map[int32]string{\n\t\t0:  \"CLIENT_LIBRARY_DESTINATION_UNSPECIFIED\",\n\t\t10: \"GITHUB\",\n\t\t20: \"PACKAGE_MANAGER\",\n\t}\n\tClientLibraryDestination_value = map[string]int32{\n\t\t\"CLIENT_LIBRARY_DESTINATION_UNSPECIFIED\": 0,\n\t\t\"GITHUB\":                                 10,\n\t\t\"PACKAGE_MANAGER\":                        20,\n\t}\n)\n\nfunc (x ClientLibraryDestination) Enum() *ClientLibraryDestination {\n\tp := new(ClientLibraryDestination)\n\t*p = x\n\treturn p\n}\n\nfunc (x ClientLibraryDestination) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ClientLibraryDestination) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_client_proto_enumTypes[1].Descriptor()\n}\n\nfunc (ClientLibraryDestination) Type() protoreflect.EnumType {\n\treturn &file_google_api_client_proto_enumTypes[1]\n}\n\nfunc (x ClientLibraryDestination) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ClientLibraryDestination.Descriptor instead.\nfunc (ClientLibraryDestination) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{1}\n}\n\n// Required information for every language.\ntype CommonLanguageSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Link to automatically generated reference documentation.  Example:\n\t// https://cloud.google.com/nodejs/docs/reference/asset/latest\n\t//\n\t// Deprecated: Do not use.\n\tReferenceDocsUri string `protobuf:\"bytes,1,opt,name=reference_docs_uri,json=referenceDocsUri,proto3\" json:\"reference_docs_uri,omitempty\"`\n\t// The destination where API teams want this client library to be published.\n\tDestinations []ClientLibraryDestination `protobuf:\"varint,2,rep,packed,name=destinations,proto3,enum=google.api.ClientLibraryDestination\" json:\"destinations,omitempty\"`\n}\n\nfunc (x *CommonLanguageSettings) Reset() {\n\t*x = CommonLanguageSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CommonLanguageSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CommonLanguageSettings) ProtoMessage() {}\n\nfunc (x *CommonLanguageSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CommonLanguageSettings.ProtoReflect.Descriptor instead.\nfunc (*CommonLanguageSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{0}\n}\n\n// Deprecated: Do not use.\nfunc (x *CommonLanguageSettings) GetReferenceDocsUri() string {\n\tif x != nil {\n\t\treturn x.ReferenceDocsUri\n\t}\n\treturn \"\"\n}\n\nfunc (x *CommonLanguageSettings) GetDestinations() []ClientLibraryDestination {\n\tif x != nil {\n\t\treturn x.Destinations\n\t}\n\treturn nil\n}\n\n// Details about how and where to publish client libraries.\ntype ClientLibrarySettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Version of the API to apply these settings to. This is the full protobuf\n\t// package for the API, ending in the version element.\n\t// Examples: \"google.cloud.speech.v1\" and \"google.spanner.admin.database.v1\".\n\tVersion string `protobuf:\"bytes,1,opt,name=version,proto3\" json:\"version,omitempty\"`\n\t// Launch stage of this version of the API.\n\tLaunchStage api.LaunchStage `protobuf:\"varint,2,opt,name=launch_stage,json=launchStage,proto3,enum=google.api.LaunchStage\" json:\"launch_stage,omitempty\"`\n\t// When using transport=rest, the client request will encode enums as\n\t// numbers rather than strings.\n\tRestNumericEnums bool `protobuf:\"varint,3,opt,name=rest_numeric_enums,json=restNumericEnums,proto3\" json:\"rest_numeric_enums,omitempty\"`\n\t// Settings for legacy Java features, supported in the Service YAML.\n\tJavaSettings *JavaSettings `protobuf:\"bytes,21,opt,name=java_settings,json=javaSettings,proto3\" json:\"java_settings,omitempty\"`\n\t// Settings for C++ client libraries.\n\tCppSettings *CppSettings `protobuf:\"bytes,22,opt,name=cpp_settings,json=cppSettings,proto3\" json:\"cpp_settings,omitempty\"`\n\t// Settings for PHP client libraries.\n\tPhpSettings *PhpSettings `protobuf:\"bytes,23,opt,name=php_settings,json=phpSettings,proto3\" json:\"php_settings,omitempty\"`\n\t// Settings for Python client libraries.\n\tPythonSettings *PythonSettings `protobuf:\"bytes,24,opt,name=python_settings,json=pythonSettings,proto3\" json:\"python_settings,omitempty\"`\n\t// Settings for Node client libraries.\n\tNodeSettings *NodeSettings `protobuf:\"bytes,25,opt,name=node_settings,json=nodeSettings,proto3\" json:\"node_settings,omitempty\"`\n\t// Settings for .NET client libraries.\n\tDotnetSettings *DotnetSettings `protobuf:\"bytes,26,opt,name=dotnet_settings,json=dotnetSettings,proto3\" json:\"dotnet_settings,omitempty\"`\n\t// Settings for Ruby client libraries.\n\tRubySettings *RubySettings `protobuf:\"bytes,27,opt,name=ruby_settings,json=rubySettings,proto3\" json:\"ruby_settings,omitempty\"`\n\t// Settings for Go client libraries.\n\tGoSettings *GoSettings `protobuf:\"bytes,28,opt,name=go_settings,json=goSettings,proto3\" json:\"go_settings,omitempty\"`\n}\n\nfunc (x *ClientLibrarySettings) Reset() {\n\t*x = ClientLibrarySettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ClientLibrarySettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ClientLibrarySettings) ProtoMessage() {}\n\nfunc (x *ClientLibrarySettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ClientLibrarySettings.ProtoReflect.Descriptor instead.\nfunc (*ClientLibrarySettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ClientLibrarySettings) GetVersion() string {\n\tif x != nil {\n\t\treturn x.Version\n\t}\n\treturn \"\"\n}\n\nfunc (x *ClientLibrarySettings) GetLaunchStage() api.LaunchStage {\n\tif x != nil {\n\t\treturn x.LaunchStage\n\t}\n\treturn api.LaunchStage_LAUNCH_STAGE_UNSPECIFIED\n}\n\nfunc (x *ClientLibrarySettings) GetRestNumericEnums() bool {\n\tif x != nil {\n\t\treturn x.RestNumericEnums\n\t}\n\treturn false\n}\n\nfunc (x *ClientLibrarySettings) GetJavaSettings() *JavaSettings {\n\tif x != nil {\n\t\treturn x.JavaSettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetCppSettings() *CppSettings {\n\tif x != nil {\n\t\treturn x.CppSettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetPhpSettings() *PhpSettings {\n\tif x != nil {\n\t\treturn x.PhpSettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetPythonSettings() *PythonSettings {\n\tif x != nil {\n\t\treturn x.PythonSettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetNodeSettings() *NodeSettings {\n\tif x != nil {\n\t\treturn x.NodeSettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetDotnetSettings() *DotnetSettings {\n\tif x != nil {\n\t\treturn x.DotnetSettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetRubySettings() *RubySettings {\n\tif x != nil {\n\t\treturn x.RubySettings\n\t}\n\treturn nil\n}\n\nfunc (x *ClientLibrarySettings) GetGoSettings() *GoSettings {\n\tif x != nil {\n\t\treturn x.GoSettings\n\t}\n\treturn nil\n}\n\n// This message configures the settings for publishing [Google Cloud Client\n// libraries](https://cloud.google.com/apis/docs/cloud-client-libraries)\n// generated from the service config.\ntype Publishing struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// A list of API method settings, e.g. the behavior for methods that use the\n\t// long-running operation pattern.\n\tMethodSettings []*MethodSettings `protobuf:\"bytes,2,rep,name=method_settings,json=methodSettings,proto3\" json:\"method_settings,omitempty\"`\n\t// Link to a *public* URI where users can report issues.  Example:\n\t// https://issuetracker.google.com/issues/new?component=190865&template=1161103\n\tNewIssueUri string `protobuf:\"bytes,101,opt,name=new_issue_uri,json=newIssueUri,proto3\" json:\"new_issue_uri,omitempty\"`\n\t// Link to product home page.  Example:\n\t// https://cloud.google.com/asset-inventory/docs/overview\n\tDocumentationUri string `protobuf:\"bytes,102,opt,name=documentation_uri,json=documentationUri,proto3\" json:\"documentation_uri,omitempty\"`\n\t// Used as a tracking tag when collecting data about the APIs developer\n\t// relations artifacts like docs, packages delivered to package managers,\n\t// etc.  Example: \"speech\".\n\tApiShortName string `protobuf:\"bytes,103,opt,name=api_short_name,json=apiShortName,proto3\" json:\"api_short_name,omitempty\"`\n\t// GitHub label to apply to issues and pull requests opened for this API.\n\tGithubLabel string `protobuf:\"bytes,104,opt,name=github_label,json=githubLabel,proto3\" json:\"github_label,omitempty\"`\n\t// GitHub teams to be added to CODEOWNERS in the directory in GitHub\n\t// containing source code for the client libraries for this API.\n\tCodeownerGithubTeams []string `protobuf:\"bytes,105,rep,name=codeowner_github_teams,json=codeownerGithubTeams,proto3\" json:\"codeowner_github_teams,omitempty\"`\n\t// A prefix used in sample code when demarking regions to be included in\n\t// documentation.\n\tDocTagPrefix string `protobuf:\"bytes,106,opt,name=doc_tag_prefix,json=docTagPrefix,proto3\" json:\"doc_tag_prefix,omitempty\"`\n\t// For whom the client library is being published.\n\tOrganization ClientLibraryOrganization `protobuf:\"varint,107,opt,name=organization,proto3,enum=google.api.ClientLibraryOrganization\" json:\"organization,omitempty\"`\n\t// Client library settings.  If the same version string appears multiple\n\t// times in this list, then the last one wins.  Settings from earlier\n\t// settings with the same version string are discarded.\n\tLibrarySettings []*ClientLibrarySettings `protobuf:\"bytes,109,rep,name=library_settings,json=librarySettings,proto3\" json:\"library_settings,omitempty\"`\n\t// Optional link to proto reference documentation.  Example:\n\t// https://cloud.google.com/pubsub/lite/docs/reference/rpc\n\tProtoReferenceDocumentationUri string `protobuf:\"bytes,110,opt,name=proto_reference_documentation_uri,json=protoReferenceDocumentationUri,proto3\" json:\"proto_reference_documentation_uri,omitempty\"`\n}\n\nfunc (x *Publishing) Reset() {\n\t*x = Publishing{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Publishing) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Publishing) ProtoMessage() {}\n\nfunc (x *Publishing) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Publishing.ProtoReflect.Descriptor instead.\nfunc (*Publishing) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *Publishing) GetMethodSettings() []*MethodSettings {\n\tif x != nil {\n\t\treturn x.MethodSettings\n\t}\n\treturn nil\n}\n\nfunc (x *Publishing) GetNewIssueUri() string {\n\tif x != nil {\n\t\treturn x.NewIssueUri\n\t}\n\treturn \"\"\n}\n\nfunc (x *Publishing) GetDocumentationUri() string {\n\tif x != nil {\n\t\treturn x.DocumentationUri\n\t}\n\treturn \"\"\n}\n\nfunc (x *Publishing) GetApiShortName() string {\n\tif x != nil {\n\t\treturn x.ApiShortName\n\t}\n\treturn \"\"\n}\n\nfunc (x *Publishing) GetGithubLabel() string {\n\tif x != nil {\n\t\treturn x.GithubLabel\n\t}\n\treturn \"\"\n}\n\nfunc (x *Publishing) GetCodeownerGithubTeams() []string {\n\tif x != nil {\n\t\treturn x.CodeownerGithubTeams\n\t}\n\treturn nil\n}\n\nfunc (x *Publishing) GetDocTagPrefix() string {\n\tif x != nil {\n\t\treturn x.DocTagPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *Publishing) GetOrganization() ClientLibraryOrganization {\n\tif x != nil {\n\t\treturn x.Organization\n\t}\n\treturn ClientLibraryOrganization_CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED\n}\n\nfunc (x *Publishing) GetLibrarySettings() []*ClientLibrarySettings {\n\tif x != nil {\n\t\treturn x.LibrarySettings\n\t}\n\treturn nil\n}\n\nfunc (x *Publishing) GetProtoReferenceDocumentationUri() string {\n\tif x != nil {\n\t\treturn x.ProtoReferenceDocumentationUri\n\t}\n\treturn \"\"\n}\n\n// Settings for Java client libraries.\ntype JavaSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The package name to use in Java. Clobbers the java_package option\n\t// set in the protobuf. This should be used **only** by APIs\n\t// who have already set the language_settings.java.package_name\" field\n\t// in gapic.yaml. API teams should use the protobuf java_package option\n\t// where possible.\n\t//\n\t// Example of a YAML configuration::\n\t//\n\t//\tpublishing:\n\t//\t  java_settings:\n\t//\t    library_package: com.google.cloud.pubsub.v1\n\tLibraryPackage string `protobuf:\"bytes,1,opt,name=library_package,json=libraryPackage,proto3\" json:\"library_package,omitempty\"`\n\t// Configure the Java class name to use instead of the service's for its\n\t// corresponding generated GAPIC client. Keys are fully-qualified\n\t// service names as they appear in the protobuf (including the full\n\t// the language_settings.java.interface_names\" field in gapic.yaml. API\n\t// teams should otherwise use the service name as it appears in the\n\t// protobuf.\n\t//\n\t// Example of a YAML configuration::\n\t//\n\t//\tpublishing:\n\t//\t  java_settings:\n\t//\t    service_class_names:\n\t//\t      - google.pubsub.v1.Publisher: TopicAdmin\n\t//\t      - google.pubsub.v1.Subscriber: SubscriptionAdmin\n\tServiceClassNames map[string]string `protobuf:\"bytes,2,rep,name=service_class_names,json=serviceClassNames,proto3\" json:\"service_class_names,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,3,opt,name=common,proto3\" json:\"common,omitempty\"`\n}\n\nfunc (x *JavaSettings) Reset() {\n\t*x = JavaSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *JavaSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*JavaSettings) ProtoMessage() {}\n\nfunc (x *JavaSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use JavaSettings.ProtoReflect.Descriptor instead.\nfunc (*JavaSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *JavaSettings) GetLibraryPackage() string {\n\tif x != nil {\n\t\treturn x.LibraryPackage\n\t}\n\treturn \"\"\n}\n\nfunc (x *JavaSettings) GetServiceClassNames() map[string]string {\n\tif x != nil {\n\t\treturn x.ServiceClassNames\n\t}\n\treturn nil\n}\n\nfunc (x *JavaSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\n// Settings for C++ client libraries.\ntype CppSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n}\n\nfunc (x *CppSettings) Reset() {\n\t*x = CppSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CppSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CppSettings) ProtoMessage() {}\n\nfunc (x *CppSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CppSettings.ProtoReflect.Descriptor instead.\nfunc (*CppSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *CppSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\n// Settings for Php client libraries.\ntype PhpSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n}\n\nfunc (x *PhpSettings) Reset() {\n\t*x = PhpSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PhpSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PhpSettings) ProtoMessage() {}\n\nfunc (x *PhpSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use PhpSettings.ProtoReflect.Descriptor instead.\nfunc (*PhpSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *PhpSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\n// Settings for Python client libraries.\ntype PythonSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n}\n\nfunc (x *PythonSettings) Reset() {\n\t*x = PythonSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PythonSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PythonSettings) ProtoMessage() {}\n\nfunc (x *PythonSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use PythonSettings.ProtoReflect.Descriptor instead.\nfunc (*PythonSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *PythonSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\n// Settings for Node client libraries.\ntype NodeSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n}\n\nfunc (x *NodeSettings) Reset() {\n\t*x = NodeSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *NodeSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*NodeSettings) ProtoMessage() {}\n\nfunc (x *NodeSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use NodeSettings.ProtoReflect.Descriptor instead.\nfunc (*NodeSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *NodeSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\n// Settings for Dotnet client libraries.\ntype DotnetSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n\t// Map from original service names to renamed versions.\n\t// This is used when the default generated types\n\t// would cause a naming conflict. (Neither name is\n\t// fully-qualified.)\n\t// Example: Subscriber to SubscriberServiceApi.\n\tRenamedServices map[string]string `protobuf:\"bytes,2,rep,name=renamed_services,json=renamedServices,proto3\" json:\"renamed_services,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\t// Map from full resource types to the effective short name\n\t// for the resource. This is used when otherwise resource\n\t// named from different services would cause naming collisions.\n\t// Example entry:\n\t// \"datalabeling.googleapis.com/Dataset\": \"DataLabelingDataset\"\n\tRenamedResources map[string]string `protobuf:\"bytes,3,rep,name=renamed_resources,json=renamedResources,proto3\" json:\"renamed_resources,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\t// List of full resource types to ignore during generation.\n\t// This is typically used for API-specific Location resources,\n\t// which should be handled by the generator as if they were actually\n\t// the common Location resources.\n\t// Example entry: \"documentai.googleapis.com/Location\"\n\tIgnoredResources []string `protobuf:\"bytes,4,rep,name=ignored_resources,json=ignoredResources,proto3\" json:\"ignored_resources,omitempty\"`\n\t// Namespaces which must be aliased in snippets due to\n\t// a known (but non-generator-predictable) naming collision\n\tForcedNamespaceAliases []string `protobuf:\"bytes,5,rep,name=forced_namespace_aliases,json=forcedNamespaceAliases,proto3\" json:\"forced_namespace_aliases,omitempty\"`\n\t// Method signatures (in the form \"service.method(signature)\")\n\t// which are provided separately, so shouldn't be generated.\n\t// Snippets *calling* these methods are still generated, however.\n\tHandwrittenSignatures []string `protobuf:\"bytes,6,rep,name=handwritten_signatures,json=handwrittenSignatures,proto3\" json:\"handwritten_signatures,omitempty\"`\n}\n\nfunc (x *DotnetSettings) Reset() {\n\t*x = DotnetSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DotnetSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DotnetSettings) ProtoMessage() {}\n\nfunc (x *DotnetSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DotnetSettings.ProtoReflect.Descriptor instead.\nfunc (*DotnetSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *DotnetSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\nfunc (x *DotnetSettings) GetRenamedServices() map[string]string {\n\tif x != nil {\n\t\treturn x.RenamedServices\n\t}\n\treturn nil\n}\n\nfunc (x *DotnetSettings) GetRenamedResources() map[string]string {\n\tif x != nil {\n\t\treturn x.RenamedResources\n\t}\n\treturn nil\n}\n\nfunc (x *DotnetSettings) GetIgnoredResources() []string {\n\tif x != nil {\n\t\treturn x.IgnoredResources\n\t}\n\treturn nil\n}\n\nfunc (x *DotnetSettings) GetForcedNamespaceAliases() []string {\n\tif x != nil {\n\t\treturn x.ForcedNamespaceAliases\n\t}\n\treturn nil\n}\n\nfunc (x *DotnetSettings) GetHandwrittenSignatures() []string {\n\tif x != nil {\n\t\treturn x.HandwrittenSignatures\n\t}\n\treturn nil\n}\n\n// Settings for Ruby client libraries.\ntype RubySettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n}\n\nfunc (x *RubySettings) Reset() {\n\t*x = RubySettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RubySettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RubySettings) ProtoMessage() {}\n\nfunc (x *RubySettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RubySettings.ProtoReflect.Descriptor instead.\nfunc (*RubySettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *RubySettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\n// Settings for Go client libraries.\ntype GoSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Some settings.\n\tCommon *CommonLanguageSettings `protobuf:\"bytes,1,opt,name=common,proto3\" json:\"common,omitempty\"`\n}\n\nfunc (x *GoSettings) Reset() {\n\t*x = GoSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GoSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GoSettings) ProtoMessage() {}\n\nfunc (x *GoSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GoSettings.ProtoReflect.Descriptor instead.\nfunc (*GoSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *GoSettings) GetCommon() *CommonLanguageSettings {\n\tif x != nil {\n\t\treturn x.Common\n\t}\n\treturn nil\n}\n\n// Describes the generator configuration for a method.\ntype MethodSettings struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The fully qualified name of the method, for which the options below apply.\n\t// This is used to find the method to apply the options.\n\tSelector string `protobuf:\"bytes,1,opt,name=selector,proto3\" json:\"selector,omitempty\"`\n\t// Describes settings to use for long-running operations when generating\n\t// API methods for RPCs. Complements RPCs that use the annotations in\n\t// google/longrunning/operations.proto.\n\t//\n\t// Example of a YAML configuration::\n\t//\n\t//\tpublishing:\n\t//\t  method_settings:\n\t//\t    - selector: google.cloud.speech.v2.Speech.BatchRecognize\n\t//\t      long_running:\n\t//\t        initial_poll_delay:\n\t//\t          seconds: 60 # 1 minute\n\t//\t        poll_delay_multiplier: 1.5\n\t//\t        max_poll_delay:\n\t//\t          seconds: 360 # 6 minutes\n\t//\t        total_poll_timeout:\n\t//\t           seconds: 54000 # 90 minutes\n\tLongRunning *MethodSettings_LongRunning `protobuf:\"bytes,2,opt,name=long_running,json=longRunning,proto3\" json:\"long_running,omitempty\"`\n}\n\nfunc (x *MethodSettings) Reset() {\n\t*x = MethodSettings{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MethodSettings) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MethodSettings) ProtoMessage() {}\n\nfunc (x *MethodSettings) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MethodSettings.ProtoReflect.Descriptor instead.\nfunc (*MethodSettings) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *MethodSettings) GetSelector() string {\n\tif x != nil {\n\t\treturn x.Selector\n\t}\n\treturn \"\"\n}\n\nfunc (x *MethodSettings) GetLongRunning() *MethodSettings_LongRunning {\n\tif x != nil {\n\t\treturn x.LongRunning\n\t}\n\treturn nil\n}\n\n// Describes settings to use when generating API methods that use the\n// long-running operation pattern.\n// All default values below are from those used in the client library\n// generators (e.g.\n// [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)).\ntype MethodSettings_LongRunning struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Initial delay after which the first poll request will be made.\n\t// Default value: 5 seconds.\n\tInitialPollDelay *durationpb.Duration `protobuf:\"bytes,1,opt,name=initial_poll_delay,json=initialPollDelay,proto3\" json:\"initial_poll_delay,omitempty\"`\n\t// Multiplier to gradually increase delay between subsequent polls until it\n\t// reaches max_poll_delay.\n\t// Default value: 1.5.\n\tPollDelayMultiplier float32 `protobuf:\"fixed32,2,opt,name=poll_delay_multiplier,json=pollDelayMultiplier,proto3\" json:\"poll_delay_multiplier,omitempty\"`\n\t// Maximum time between two subsequent poll requests.\n\t// Default value: 45 seconds.\n\tMaxPollDelay *durationpb.Duration `protobuf:\"bytes,3,opt,name=max_poll_delay,json=maxPollDelay,proto3\" json:\"max_poll_delay,omitempty\"`\n\t// Total polling timeout.\n\t// Default value: 5 minutes.\n\tTotalPollTimeout *durationpb.Duration `protobuf:\"bytes,4,opt,name=total_poll_timeout,json=totalPollTimeout,proto3\" json:\"total_poll_timeout,omitempty\"`\n}\n\nfunc (x *MethodSettings_LongRunning) Reset() {\n\t*x = MethodSettings_LongRunning{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_client_proto_msgTypes[15]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MethodSettings_LongRunning) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MethodSettings_LongRunning) ProtoMessage() {}\n\nfunc (x *MethodSettings_LongRunning) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_client_proto_msgTypes[15]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MethodSettings_LongRunning.ProtoReflect.Descriptor instead.\nfunc (*MethodSettings_LongRunning) Descriptor() ([]byte, []int) {\n\treturn file_google_api_client_proto_rawDescGZIP(), []int{11, 0}\n}\n\nfunc (x *MethodSettings_LongRunning) GetInitialPollDelay() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.InitialPollDelay\n\t}\n\treturn nil\n}\n\nfunc (x *MethodSettings_LongRunning) GetPollDelayMultiplier() float32 {\n\tif x != nil {\n\t\treturn x.PollDelayMultiplier\n\t}\n\treturn 0\n}\n\nfunc (x *MethodSettings_LongRunning) GetMaxPollDelay() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.MaxPollDelay\n\t}\n\treturn nil\n}\n\nfunc (x *MethodSettings_LongRunning) GetTotalPollTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.TotalPollTimeout\n\t}\n\treturn nil\n}\n\nvar file_google_api_client_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.MethodOptions)(nil),\n\t\tExtensionType: ([]string)(nil),\n\t\tField:         1051,\n\t\tName:          \"google.api.method_signature\",\n\t\tTag:           \"bytes,1051,rep,name=method_signature\",\n\t\tFilename:      \"google/api/client.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.ServiceOptions)(nil),\n\t\tExtensionType: (*string)(nil),\n\t\tField:         1049,\n\t\tName:          \"google.api.default_host\",\n\t\tTag:           \"bytes,1049,opt,name=default_host\",\n\t\tFilename:      \"google/api/client.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.ServiceOptions)(nil),\n\t\tExtensionType: (*string)(nil),\n\t\tField:         1050,\n\t\tName:          \"google.api.oauth_scopes\",\n\t\tTag:           \"bytes,1050,opt,name=oauth_scopes\",\n\t\tFilename:      \"google/api/client.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.MethodOptions.\nvar (\n\t// A definition of a client library method signature.\n\t//\n\t// In client libraries, each proto RPC corresponds to one or more methods\n\t// which the end user is able to call, and calls the underlying RPC.\n\t// Normally, this method receives a single argument (a struct or instance\n\t// corresponding to the RPC request object). Defining this field will\n\t// add one or more overloads providing flattened or simpler method signatures\n\t// in some languages.\n\t//\n\t// The fields on the method signature are provided as a comma-separated\n\t// string.\n\t//\n\t// For example, the proto RPC and annotation:\n\t//\n\t//\trpc CreateSubscription(CreateSubscriptionRequest)\n\t//\t    returns (Subscription) {\n\t//\t  option (google.api.method_signature) = \"name,topic\";\n\t//\t}\n\t//\n\t// Would add the following Java overload (in addition to the method accepting\n\t// the request object):\n\t//\n\t//\tpublic final Subscription createSubscription(String name, String topic)\n\t//\n\t// The following backwards-compatibility guidelines apply:\n\t//\n\t//   - Adding this annotation to an unannotated method is backwards\n\t//     compatible.\n\t//   - Adding this annotation to a method which already has existing\n\t//     method signature annotations is backwards compatible if and only if\n\t//     the new method signature annotation is last in the sequence.\n\t//   - Modifying or removing an existing method signature annotation is\n\t//     a breaking change.\n\t//   - Re-ordering existing method signature annotations is a breaking\n\t//     change.\n\t//\n\t// repeated string method_signature = 1051;\n\tE_MethodSignature = &file_google_api_client_proto_extTypes[0]\n)\n\n// Extension fields to descriptorpb.ServiceOptions.\nvar (\n\t// The hostname for this service.\n\t// This should be specified with no prefix or protocol.\n\t//\n\t// Example:\n\t//\n\t//\tservice Foo {\n\t//\t  option (google.api.default_host) = \"foo.googleapi.com\";\n\t//\t  ...\n\t//\t}\n\t//\n\t// optional string default_host = 1049;\n\tE_DefaultHost = &file_google_api_client_proto_extTypes[1]\n\t// OAuth scopes needed for the client.\n\t//\n\t// Example:\n\t//\n\t//\tservice Foo {\n\t//\t  option (google.api.oauth_scopes) = \\\n\t//\t    \"https://www.googleapis.com/auth/cloud-platform\";\n\t//\t  ...\n\t//\t}\n\t//\n\t// If there is more than one scope, use a comma-separated string:\n\t//\n\t// Example:\n\t//\n\t//\tservice Foo {\n\t//\t  option (google.api.oauth_scopes) = \\\n\t//\t    \"https://www.googleapis.com/auth/cloud-platform,\"\n\t//\t    \"https://www.googleapis.com/auth/monitoring\";\n\t//\t  ...\n\t//\t}\n\t//\n\t// optional string oauth_scopes = 1050;\n\tE_OauthScopes = &file_google_api_client_proto_extTypes[2]\n)\n\nvar File_google_api_client_proto protoreflect.FileDescriptor\n\nvar file_google_api_client_proto_rawDesc = []byte{\n\t0x0a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69,\n\t0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x1d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70,\n\t0x69, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x94, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,\n\t0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,\n\t0x73, 0x12, 0x30, 0x0a, 0x12, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x64,\n\t0x6f, 0x63, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18,\n\t0x01, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x6f, 0x63, 0x73,\n\t0x55, 0x72, 0x69, 0x12, 0x48, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62,\n\t0x72, 0x61, 0x72, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,\n\t0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x93, 0x05,\n\t0x0a, 0x15, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x53,\n\t0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,\n\t0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,\n\t0x6e, 0x12, 0x3a, 0x0a, 0x0c, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x67,\n\t0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65,\n\t0x52, 0x0b, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a,\n\t0x12, 0x72, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x65, 0x6e,\n\t0x75, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x65, 0x73, 0x74, 0x4e,\n\t0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x3d, 0x0a, 0x0d, 0x6a,\n\t0x61, 0x76, 0x61, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x15, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x4a, 0x61, 0x76, 0x61, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0c, 0x6a, 0x61,\n\t0x76, 0x61, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x0c, 0x63, 0x70,\n\t0x70, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x70,\n\t0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0b, 0x63, 0x70, 0x70, 0x53, 0x65,\n\t0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x0c, 0x70, 0x68, 0x70, 0x5f, 0x73, 0x65,\n\t0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x68, 0x70, 0x53, 0x65, 0x74,\n\t0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0b, 0x70, 0x68, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,\n\t0x67, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74,\n\t0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x53,\n\t0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0e, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x53,\n\t0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3d, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f,\n\t0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x6f, 0x64, 0x65,\n\t0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x65,\n\t0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x64, 0x6f, 0x74, 0x6e, 0x65, 0x74,\n\t0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x74,\n\t0x6e, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0e, 0x64, 0x6f, 0x74,\n\t0x6e, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3d, 0x0a, 0x0d, 0x72,\n\t0x75, 0x62, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x1b, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x52, 0x75, 0x62, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0c, 0x72, 0x75,\n\t0x62, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x67, 0x6f,\n\t0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x6f, 0x53,\n\t0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0a, 0x67, 0x6f, 0x53, 0x65, 0x74, 0x74, 0x69,\n\t0x6e, 0x67, 0x73, 0x22, 0xab, 0x04, 0x0a, 0x0a, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69,\n\t0x6e, 0x67, 0x12, 0x43, 0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x74,\n\t0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53,\n\t0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53,\n\t0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x5f, 0x69,\n\t0x73, 0x73, 0x75, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x65, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,\n\t0x6e, 0x65, 0x77, 0x49, 0x73, 0x73, 0x75, 0x65, 0x55, 0x72, 0x69, 0x12, 0x2b, 0x0a, 0x11, 0x64,\n\t0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x69,\n\t0x18, 0x66, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x69, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x70, 0x69, 0x5f,\n\t0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x67, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x0c, 0x61, 0x70, 0x69, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21,\n\t0x0a, 0x0c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x68,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x4c, 0x61, 0x62, 0x65,\n\t0x6c, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x64, 0x65, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x67,\n\t0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x69, 0x20, 0x03, 0x28,\n\t0x09, 0x52, 0x14, 0x63, 0x6f, 0x64, 0x65, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x47, 0x69, 0x74, 0x68,\n\t0x75, 0x62, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x6f, 0x63, 0x5f, 0x74,\n\t0x61, 0x67, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x0c, 0x64, 0x6f, 0x63, 0x54, 0x61, 0x67, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x49, 0x0a,\n\t0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x6b, 0x20,\n\t0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4f, 0x72,\n\t0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61,\n\t0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x10, 0x6c, 0x69, 0x62, 0x72,\n\t0x61, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x6d, 0x20, 0x03,\n\t0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x53, 0x65, 0x74,\n\t0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0f, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x53, 0x65,\n\t0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x49, 0x0a, 0x21, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f,\n\t0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,\n\t0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x6e, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x1e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,\n\t0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72,\n\t0x69, 0x22, 0x9a, 0x02, 0x0a, 0x0c, 0x4a, 0x61, 0x76, 0x61, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,\n\t0x67, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61,\n\t0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x69, 0x62,\n\t0x72, 0x61, 0x72, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x5f, 0x0a, 0x13, 0x73,\n\t0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d,\n\t0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x61, 0x76, 0x61, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,\n\t0x67, 0x73, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e,\n\t0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69,\n\t0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x06,\n\t0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,\n\t0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,\n\t0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x1a, 0x44, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76,\n\t0x69, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74,\n\t0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x49,\n\t0x0a, 0x0b, 0x43, 0x70, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a,\n\t0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,\n\t0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,\n\t0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x49, 0x0a, 0x0b, 0x50, 0x68, 0x70,\n\t0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d,\n\t0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67,\n\t0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f,\n\t0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x4c, 0x0a, 0x0e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x53, 0x65,\n\t0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61,\n\t0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d,\n\t0x6f, 0x6e, 0x22, 0x4a, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,\n\t0x67, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65,\n\t0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0xae,\n\t0x04, 0x0a, 0x0e, 0x44, 0x6f, 0x74, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,\n\t0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43,\n\t0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74,\n\t0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x5a, 0x0a,\n\t0x10, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,\n\t0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x74, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69,\n\t0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69,\n\t0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65,\n\t0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x5d, 0x0a, 0x11, 0x72, 0x65, 0x6e,\n\t0x61, 0x6d, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03,\n\t0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,\n\t0x69, 0x2e, 0x44, 0x6f, 0x74, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,\n\t0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x52,\n\t0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x67, 0x6e, 0x6f,\n\t0x72, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20,\n\t0x03, 0x28, 0x09, 0x52, 0x10, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x5f,\n\t0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65,\n\t0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x4e,\n\t0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12,\n\t0x35, 0x0a, 0x16, 0x68, 0x61, 0x6e, 0x64, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x73,\n\t0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52,\n\t0x15, 0x68, 0x61, 0x6e, 0x64, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x53, 0x69, 0x67, 0x6e,\n\t0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x1a, 0x42, 0x0a, 0x14, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65,\n\t0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,\n\t0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,\n\t0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x43, 0x0a, 0x15, 0x52, 0x65,\n\t0x6e, 0x61, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e,\n\t0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,\n\t0x4a, 0x0a, 0x0c, 0x52, 0x75, 0x62, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12,\n\t0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d,\n\t0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69,\n\t0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x48, 0x0a, 0x0a, 0x47,\n\t0x6f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d,\n\t0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e,\n\t0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63,\n\t0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x8e, 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64,\n\t0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65,\n\t0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65,\n\t0x63, 0x74, 0x6f, 0x72, 0x12, 0x49, 0x0a, 0x0c, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6e,\n\t0x6e, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x65,\n\t0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69,\n\t0x6e, 0x67, 0x52, 0x0b, 0x6c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x1a,\n\t0x94, 0x02, 0x0a, 0x0b, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x12,\n\t0x47, 0x0a, 0x12, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f,\n\t0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,\n\t0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x50,\n\t0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x6f, 0x6c, 0x6c,\n\t0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65,\n\t0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x70, 0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c,\n\t0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0e,\n\t0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,\n\t0x0c, 0x6d, 0x61, 0x78, 0x50, 0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x47, 0x0a,\n\t0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65,\n\t0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x6f, 0x6c, 0x6c, 0x54,\n\t0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x2a, 0xa3, 0x01, 0x0a, 0x19, 0x43, 0x6c, 0x69, 0x65, 0x6e,\n\t0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c,\n\t0x49, 0x42, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54,\n\t0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,\n\t0x00, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03,\n\t0x41, 0x44, 0x53, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x48, 0x4f, 0x54, 0x4f, 0x53, 0x10,\n\t0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x52, 0x45, 0x45, 0x54, 0x5f, 0x56, 0x49, 0x45, 0x57,\n\t0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x48, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x05,\n\t0x12, 0x07, 0x0a, 0x03, 0x47, 0x45, 0x4f, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x47, 0x45, 0x4e,\n\t0x45, 0x52, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x41, 0x49, 0x10, 0x07, 0x2a, 0x67, 0x0a, 0x18,\n\t0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x44, 0x65, 0x73,\n\t0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x26, 0x43, 0x4c, 0x49, 0x45,\n\t0x4e, 0x54, 0x5f, 0x4c, 0x49, 0x42, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x49,\n\t0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,\n\t0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x10, 0x0a,\n\t0x12, 0x13, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x5f, 0x4d, 0x41, 0x4e, 0x41,\n\t0x47, 0x45, 0x52, 0x10, 0x14, 0x3a, 0x4a, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f,\n\t0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68,\n\t0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9b, 0x08, 0x20, 0x03, 0x28, 0x09,\n\t0x52, 0x0f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,\n\t0x65, 0x3a, 0x43, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x6f, 0x73,\n\t0x74, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x18, 0x99, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75,\n\t0x6c, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x43, 0x0a, 0x0c, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f,\n\t0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,\n\t0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9a, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,\n\t0x6f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x42, 0x69, 0x0a, 0x0e, 0x63,\n\t0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0b, 0x43,\n\t0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,\n\t0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,\n\t0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2,\n\t0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_client_proto_rawDescOnce sync.Once\n\tfile_google_api_client_proto_rawDescData = file_google_api_client_proto_rawDesc\n)\n\nfunc file_google_api_client_proto_rawDescGZIP() []byte {\n\tfile_google_api_client_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_client_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_client_proto_rawDescData)\n\t})\n\treturn file_google_api_client_proto_rawDescData\n}\n\nvar file_google_api_client_proto_enumTypes = make([]protoimpl.EnumInfo, 2)\nvar file_google_api_client_proto_msgTypes = make([]protoimpl.MessageInfo, 16)\nvar file_google_api_client_proto_goTypes = []interface{}{\n\t(ClientLibraryOrganization)(0),      // 0: google.api.ClientLibraryOrganization\n\t(ClientLibraryDestination)(0),       // 1: google.api.ClientLibraryDestination\n\t(*CommonLanguageSettings)(nil),      // 2: google.api.CommonLanguageSettings\n\t(*ClientLibrarySettings)(nil),       // 3: google.api.ClientLibrarySettings\n\t(*Publishing)(nil),                  // 4: google.api.Publishing\n\t(*JavaSettings)(nil),                // 5: google.api.JavaSettings\n\t(*CppSettings)(nil),                 // 6: google.api.CppSettings\n\t(*PhpSettings)(nil),                 // 7: google.api.PhpSettings\n\t(*PythonSettings)(nil),              // 8: google.api.PythonSettings\n\t(*NodeSettings)(nil),                // 9: google.api.NodeSettings\n\t(*DotnetSettings)(nil),              // 10: google.api.DotnetSettings\n\t(*RubySettings)(nil),                // 11: google.api.RubySettings\n\t(*GoSettings)(nil),                  // 12: google.api.GoSettings\n\t(*MethodSettings)(nil),              // 13: google.api.MethodSettings\n\tnil,                                 // 14: google.api.JavaSettings.ServiceClassNamesEntry\n\tnil,                                 // 15: google.api.DotnetSettings.RenamedServicesEntry\n\tnil,                                 // 16: google.api.DotnetSettings.RenamedResourcesEntry\n\t(*MethodSettings_LongRunning)(nil),  // 17: google.api.MethodSettings.LongRunning\n\t(api.LaunchStage)(0),                // 18: google.api.LaunchStage\n\t(*durationpb.Duration)(nil),         // 19: google.protobuf.Duration\n\t(*descriptorpb.MethodOptions)(nil),  // 20: google.protobuf.MethodOptions\n\t(*descriptorpb.ServiceOptions)(nil), // 21: google.protobuf.ServiceOptions\n}\nvar file_google_api_client_proto_depIdxs = []int32{\n\t1,  // 0: google.api.CommonLanguageSettings.destinations:type_name -> google.api.ClientLibraryDestination\n\t18, // 1: google.api.ClientLibrarySettings.launch_stage:type_name -> google.api.LaunchStage\n\t5,  // 2: google.api.ClientLibrarySettings.java_settings:type_name -> google.api.JavaSettings\n\t6,  // 3: google.api.ClientLibrarySettings.cpp_settings:type_name -> google.api.CppSettings\n\t7,  // 4: google.api.ClientLibrarySettings.php_settings:type_name -> google.api.PhpSettings\n\t8,  // 5: google.api.ClientLibrarySettings.python_settings:type_name -> google.api.PythonSettings\n\t9,  // 6: google.api.ClientLibrarySettings.node_settings:type_name -> google.api.NodeSettings\n\t10, // 7: google.api.ClientLibrarySettings.dotnet_settings:type_name -> google.api.DotnetSettings\n\t11, // 8: google.api.ClientLibrarySettings.ruby_settings:type_name -> google.api.RubySettings\n\t12, // 9: google.api.ClientLibrarySettings.go_settings:type_name -> google.api.GoSettings\n\t13, // 10: google.api.Publishing.method_settings:type_name -> google.api.MethodSettings\n\t0,  // 11: google.api.Publishing.organization:type_name -> google.api.ClientLibraryOrganization\n\t3,  // 12: google.api.Publishing.library_settings:type_name -> google.api.ClientLibrarySettings\n\t14, // 13: google.api.JavaSettings.service_class_names:type_name -> google.api.JavaSettings.ServiceClassNamesEntry\n\t2,  // 14: google.api.JavaSettings.common:type_name -> google.api.CommonLanguageSettings\n\t2,  // 15: google.api.CppSettings.common:type_name -> google.api.CommonLanguageSettings\n\t2,  // 16: google.api.PhpSettings.common:type_name -> google.api.CommonLanguageSettings\n\t2,  // 17: google.api.PythonSettings.common:type_name -> google.api.CommonLanguageSettings\n\t2,  // 18: google.api.NodeSettings.common:type_name -> google.api.CommonLanguageSettings\n\t2,  // 19: google.api.DotnetSettings.common:type_name -> google.api.CommonLanguageSettings\n\t15, // 20: google.api.DotnetSettings.renamed_services:type_name -> google.api.DotnetSettings.RenamedServicesEntry\n\t16, // 21: google.api.DotnetSettings.renamed_resources:type_name -> google.api.DotnetSettings.RenamedResourcesEntry\n\t2,  // 22: google.api.RubySettings.common:type_name -> google.api.CommonLanguageSettings\n\t2,  // 23: google.api.GoSettings.common:type_name -> google.api.CommonLanguageSettings\n\t17, // 24: google.api.MethodSettings.long_running:type_name -> google.api.MethodSettings.LongRunning\n\t19, // 25: google.api.MethodSettings.LongRunning.initial_poll_delay:type_name -> google.protobuf.Duration\n\t19, // 26: google.api.MethodSettings.LongRunning.max_poll_delay:type_name -> google.protobuf.Duration\n\t19, // 27: google.api.MethodSettings.LongRunning.total_poll_timeout:type_name -> google.protobuf.Duration\n\t20, // 28: google.api.method_signature:extendee -> google.protobuf.MethodOptions\n\t21, // 29: google.api.default_host:extendee -> google.protobuf.ServiceOptions\n\t21, // 30: google.api.oauth_scopes:extendee -> google.protobuf.ServiceOptions\n\t31, // [31:31] is the sub-list for method output_type\n\t31, // [31:31] is the sub-list for method input_type\n\t31, // [31:31] is the sub-list for extension type_name\n\t28, // [28:31] is the sub-list for extension extendee\n\t0,  // [0:28] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_client_proto_init() }\nfunc file_google_api_client_proto_init() {\n\tif File_google_api_client_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_client_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CommonLanguageSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ClientLibrarySettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Publishing); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*JavaSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CppSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PhpSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PythonSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*NodeSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DotnetSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RubySettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GoSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MethodSettings); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_client_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MethodSettings_LongRunning); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_client_proto_rawDesc,\n\t\t\tNumEnums:      2,\n\t\t\tNumMessages:   16,\n\t\t\tNumExtensions: 3,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_client_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_client_proto_depIdxs,\n\t\tEnumInfos:         file_google_api_client_proto_enumTypes,\n\t\tMessageInfos:      file_google_api_client_proto_msgTypes,\n\t\tExtensionInfos:    file_google_api_client_proto_extTypes,\n\t}.Build()\n\tFile_google_api_client_proto = out.File\n\tfile_google_api_client_proto_rawDesc = nil\n\tfile_google_api_client_proto_goTypes = nil\n\tfile_google_api_client_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/field_behavior.pb.go",
    "content": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v3.21.12\n// source: google/api/field_behavior.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// An indicator of the behavior of a given field (for example, that a field\n// is required in requests, or given as output but ignored as input).\n// This **does not** change the behavior in protocol buffers itself; it only\n// denotes the behavior and may affect how API tooling handles the field.\n//\n// Note: This enum **may** receive new values in the future.\ntype FieldBehavior int32\n\nconst (\n\t// Conventional default for enums. Do not use this.\n\tFieldBehavior_FIELD_BEHAVIOR_UNSPECIFIED FieldBehavior = 0\n\t// Specifically denotes a field as optional.\n\t// While all fields in protocol buffers are optional, this may be specified\n\t// for emphasis if appropriate.\n\tFieldBehavior_OPTIONAL FieldBehavior = 1\n\t// Denotes a field as required.\n\t// This indicates that the field **must** be provided as part of the request,\n\t// and failure to do so will cause an error (usually `INVALID_ARGUMENT`).\n\tFieldBehavior_REQUIRED FieldBehavior = 2\n\t// Denotes a field as output only.\n\t// This indicates that the field is provided in responses, but including the\n\t// field in a request does nothing (the server *must* ignore it and\n\t// *must not* throw an error as a result of the field's presence).\n\tFieldBehavior_OUTPUT_ONLY FieldBehavior = 3\n\t// Denotes a field as input only.\n\t// This indicates that the field is provided in requests, and the\n\t// corresponding field is not included in output.\n\tFieldBehavior_INPUT_ONLY FieldBehavior = 4\n\t// Denotes a field as immutable.\n\t// This indicates that the field may be set once in a request to create a\n\t// resource, but may not be changed thereafter.\n\tFieldBehavior_IMMUTABLE FieldBehavior = 5\n\t// Denotes that a (repeated) field is an unordered list.\n\t// This indicates that the service may provide the elements of the list\n\t// in any arbitrary  order, rather than the order the user originally\n\t// provided. Additionally, the list's order may or may not be stable.\n\tFieldBehavior_UNORDERED_LIST FieldBehavior = 6\n\t// Denotes that this field returns a non-empty default value if not set.\n\t// This indicates that if the user provides the empty value in a request,\n\t// a non-empty value will be returned. The user will not be aware of what\n\t// non-empty value to expect.\n\tFieldBehavior_NON_EMPTY_DEFAULT FieldBehavior = 7\n\t// Denotes that the field in a resource (a message annotated with\n\t// google.api.resource) is used in the resource name to uniquely identify the\n\t// resource. For AIP-compliant APIs, this should only be applied to the\n\t// `name` field on the resource.\n\t//\n\t// This behavior should not be applied to references to other resources within\n\t// the message.\n\t//\n\t// The identifier field of resources often have different field behavior\n\t// depending on the request it is embedded in (e.g. for Create methods name\n\t// is optional and unused, while for Update methods it is required). Instead\n\t// of method-specific annotations, only `IDENTIFIER` is required.\n\tFieldBehavior_IDENTIFIER FieldBehavior = 8\n)\n\n// Enum value maps for FieldBehavior.\nvar (\n\tFieldBehavior_name = map[int32]string{\n\t\t0: \"FIELD_BEHAVIOR_UNSPECIFIED\",\n\t\t1: \"OPTIONAL\",\n\t\t2: \"REQUIRED\",\n\t\t3: \"OUTPUT_ONLY\",\n\t\t4: \"INPUT_ONLY\",\n\t\t5: \"IMMUTABLE\",\n\t\t6: \"UNORDERED_LIST\",\n\t\t7: \"NON_EMPTY_DEFAULT\",\n\t\t8: \"IDENTIFIER\",\n\t}\n\tFieldBehavior_value = map[string]int32{\n\t\t\"FIELD_BEHAVIOR_UNSPECIFIED\": 0,\n\t\t\"OPTIONAL\":                   1,\n\t\t\"REQUIRED\":                   2,\n\t\t\"OUTPUT_ONLY\":                3,\n\t\t\"INPUT_ONLY\":                 4,\n\t\t\"IMMUTABLE\":                  5,\n\t\t\"UNORDERED_LIST\":             6,\n\t\t\"NON_EMPTY_DEFAULT\":          7,\n\t\t\"IDENTIFIER\":                 8,\n\t}\n)\n\nfunc (x FieldBehavior) Enum() *FieldBehavior {\n\tp := new(FieldBehavior)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldBehavior) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldBehavior) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_field_behavior_proto_enumTypes[0].Descriptor()\n}\n\nfunc (FieldBehavior) Type() protoreflect.EnumType {\n\treturn &file_google_api_field_behavior_proto_enumTypes[0]\n}\n\nfunc (x FieldBehavior) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use FieldBehavior.Descriptor instead.\nfunc (FieldBehavior) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_field_behavior_proto_rawDescGZIP(), []int{0}\n}\n\nvar file_google_api_field_behavior_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: ([]FieldBehavior)(nil),\n\t\tField:         1052,\n\t\tName:          \"google.api.field_behavior\",\n\t\tTag:           \"varint,1052,rep,name=field_behavior,enum=google.api.FieldBehavior\",\n\t\tFilename:      \"google/api/field_behavior.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// A designation of a specific field behavior (required, output only, etc.)\n\t// in protobuf messages.\n\t//\n\t// Examples:\n\t//\n\t//\tstring name = 1 [(google.api.field_behavior) = REQUIRED];\n\t//\tState state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];\n\t//\tgoogle.protobuf.Duration ttl = 1\n\t//\t  [(google.api.field_behavior) = INPUT_ONLY];\n\t//\tgoogle.protobuf.Timestamp expire_time = 1\n\t//\t  [(google.api.field_behavior) = OUTPUT_ONLY,\n\t//\t   (google.api.field_behavior) = IMMUTABLE];\n\t//\n\t// repeated google.api.FieldBehavior field_behavior = 1052;\n\tE_FieldBehavior = &file_google_api_field_behavior_proto_extTypes[0]\n)\n\nvar File_google_api_field_behavior_proto protoreflect.FileDescriptor\n\nvar file_google_api_field_behavior_proto_rawDesc = []byte{\n\t0x0a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65,\n\t0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x20, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64,\n\t0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a,\n\t0xb6, 0x01, 0x0a, 0x0d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f,\n\t0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56,\n\t0x49, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,\n\t0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12,\n\t0x0c, 0x0a, 0x08, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0f, 0x0a,\n\t0x0b, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x0e,\n\t0x0a, 0x0a, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x0d,\n\t0x0a, 0x09, 0x49, 0x4d, 0x4d, 0x55, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x12, 0x0a,\n\t0x0e, 0x55, 0x4e, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x45, 0x44, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10,\n\t0x06, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x4f, 0x4e, 0x5f, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x5f, 0x44,\n\t0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x44, 0x45, 0x4e,\n\t0x54, 0x49, 0x46, 0x49, 0x45, 0x52, 0x10, 0x08, 0x3a, 0x60, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c,\n\t0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,\n\t0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9c, 0x08, 0x20, 0x03, 0x28, 0x0e,\n\t0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69,\n\t0x65, 0x6c, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x0d, 0x66, 0x69, 0x65,\n\t0x6c, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, 0x70, 0x0a, 0x0e, 0x63, 0x6f,\n\t0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x12, 0x46, 0x69,\n\t0x65, 0x6c, 0x64, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f,\n\t0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,\n\t0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e,\n\t0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_field_behavior_proto_rawDescOnce sync.Once\n\tfile_google_api_field_behavior_proto_rawDescData = file_google_api_field_behavior_proto_rawDesc\n)\n\nfunc file_google_api_field_behavior_proto_rawDescGZIP() []byte {\n\tfile_google_api_field_behavior_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_field_behavior_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_field_behavior_proto_rawDescData)\n\t})\n\treturn file_google_api_field_behavior_proto_rawDescData\n}\n\nvar file_google_api_field_behavior_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_google_api_field_behavior_proto_goTypes = []interface{}{\n\t(FieldBehavior)(0),                // 0: google.api.FieldBehavior\n\t(*descriptorpb.FieldOptions)(nil), // 1: google.protobuf.FieldOptions\n}\nvar file_google_api_field_behavior_proto_depIdxs = []int32{\n\t1, // 0: google.api.field_behavior:extendee -> google.protobuf.FieldOptions\n\t0, // 1: google.api.field_behavior:type_name -> google.api.FieldBehavior\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t1, // [1:2] is the sub-list for extension type_name\n\t0, // [0:1] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_field_behavior_proto_init() }\nfunc file_google_api_field_behavior_proto_init() {\n\tif File_google_api_field_behavior_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_field_behavior_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_field_behavior_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_field_behavior_proto_depIdxs,\n\t\tEnumInfos:         file_google_api_field_behavior_proto_enumTypes,\n\t\tExtensionInfos:    file_google_api_field_behavior_proto_extTypes,\n\t}.Build()\n\tFile_google_api_field_behavior_proto = out.File\n\tfile_google_api_field_behavior_proto_rawDesc = nil\n\tfile_google_api_field_behavior_proto_goTypes = nil\n\tfile_google_api_field_behavior_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/field_info.pb.go",
    "content": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v3.21.12\n// source: google/api/field_info.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// The standard format of a field value. The supported formats are all backed\n// by either an RFC defined by the IETF or a Google-defined AIP.\ntype FieldInfo_Format int32\n\nconst (\n\t// Default, unspecified value.\n\tFieldInfo_FORMAT_UNSPECIFIED FieldInfo_Format = 0\n\t// Universally Unique Identifier, version 4, value as defined by\n\t// https://datatracker.ietf.org/doc/html/rfc4122. The value may be\n\t// normalized to entirely lowercase letters. For example, the value\n\t// `F47AC10B-58CC-0372-8567-0E02B2C3D479` would be normalized to\n\t// `f47ac10b-58cc-0372-8567-0e02b2c3d479`.\n\tFieldInfo_UUID4 FieldInfo_Format = 1\n\t// Internet Protocol v4 value as defined by [RFC\n\t// 791](https://datatracker.ietf.org/doc/html/rfc791). The value may be\n\t// condensed, with leading zeros in each octet stripped. For example,\n\t// `001.022.233.040` would be condensed to `1.22.233.40`.\n\tFieldInfo_IPV4 FieldInfo_Format = 2\n\t// Internet Protocol v6 value as defined by [RFC\n\t// 2460](https://datatracker.ietf.org/doc/html/rfc2460). The value may be\n\t// normalized to entirely lowercase letters, and zero-padded partial and\n\t// empty octets. For example, the value `2001:DB8::` would be normalized to\n\t// `2001:0db8:0:0`.\n\tFieldInfo_IPV6 FieldInfo_Format = 3\n\t// An IP address in either v4 or v6 format as described by the individual\n\t// values defined herein. See the comments on the IPV4 and IPV6 types for\n\t// allowed normalizations of each.\n\tFieldInfo_IPV4_OR_IPV6 FieldInfo_Format = 4\n)\n\n// Enum value maps for FieldInfo_Format.\nvar (\n\tFieldInfo_Format_name = map[int32]string{\n\t\t0: \"FORMAT_UNSPECIFIED\",\n\t\t1: \"UUID4\",\n\t\t2: \"IPV4\",\n\t\t3: \"IPV6\",\n\t\t4: \"IPV4_OR_IPV6\",\n\t}\n\tFieldInfo_Format_value = map[string]int32{\n\t\t\"FORMAT_UNSPECIFIED\": 0,\n\t\t\"UUID4\":              1,\n\t\t\"IPV4\":               2,\n\t\t\"IPV6\":               3,\n\t\t\"IPV4_OR_IPV6\":       4,\n\t}\n)\n\nfunc (x FieldInfo_Format) Enum() *FieldInfo_Format {\n\tp := new(FieldInfo_Format)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldInfo_Format) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldInfo_Format) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_field_info_proto_enumTypes[0].Descriptor()\n}\n\nfunc (FieldInfo_Format) Type() protoreflect.EnumType {\n\treturn &file_google_api_field_info_proto_enumTypes[0]\n}\n\nfunc (x FieldInfo_Format) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use FieldInfo_Format.Descriptor instead.\nfunc (FieldInfo_Format) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_field_info_proto_rawDescGZIP(), []int{0, 0}\n}\n\n// Rich semantic information of an API field beyond basic typing.\ntype FieldInfo struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The standard format of a field value. This does not explicitly configure\n\t// any API consumer, just documents the API's format for the field it is\n\t// applied to.\n\tFormat FieldInfo_Format `protobuf:\"varint,1,opt,name=format,proto3,enum=google.api.FieldInfo_Format\" json:\"format,omitempty\"`\n}\n\nfunc (x *FieldInfo) Reset() {\n\t*x = FieldInfo{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_field_info_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FieldInfo) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldInfo) ProtoMessage() {}\n\nfunc (x *FieldInfo) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_field_info_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldInfo.ProtoReflect.Descriptor instead.\nfunc (*FieldInfo) Descriptor() ([]byte, []int) {\n\treturn file_google_api_field_info_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *FieldInfo) GetFormat() FieldInfo_Format {\n\tif x != nil {\n\t\treturn x.Format\n\t}\n\treturn FieldInfo_FORMAT_UNSPECIFIED\n}\n\nvar file_google_api_field_info_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*FieldInfo)(nil),\n\t\tField:         291403980,\n\t\tName:          \"google.api.field_info\",\n\t\tTag:           \"bytes,291403980,opt,name=field_info\",\n\t\tFilename:      \"google/api/field_info.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// Rich semantic descriptor of an API field beyond the basic typing.\n\t//\n\t// Examples:\n\t//\n\t//\tstring request_id = 1 [(google.api.field_info).format = UUID4];\n\t//\tstring old_ip_address = 2 [(google.api.field_info).format = IPV4];\n\t//\tstring new_ip_address = 3 [(google.api.field_info).format = IPV6];\n\t//\tstring actual_ip_address = 4 [\n\t//\t  (google.api.field_info).format = IPV4_OR_IPV6\n\t//\t];\n\t//\n\t// optional google.api.FieldInfo field_info = 291403980;\n\tE_FieldInfo = &file_google_api_field_info_proto_extTypes[0]\n)\n\nvar File_google_api_field_info_proto protoreflect.FileDescriptor\n\nvar file_google_api_field_info_proto_rawDesc = []byte{\n\t0x0a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65,\n\t0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72,\n\t0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x94, 0x01, 0x0a, 0x09,\n\t0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x06, 0x66, 0x6f, 0x72,\n\t0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f,\n\t0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22,\n\t0x51, 0x0a, 0x06, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x4f, 0x52,\n\t0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,\n\t0x00, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x55, 0x49, 0x44, 0x34, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04,\n\t0x49, 0x50, 0x56, 0x34, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x50, 0x56, 0x36, 0x10, 0x03,\n\t0x12, 0x10, 0x0a, 0x0c, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x4f, 0x52, 0x5f, 0x49, 0x50, 0x56, 0x36,\n\t0x10, 0x04, 0x3a, 0x57, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f,\n\t0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,\n\t0xcc, 0xf1, 0xf9, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f,\n\t0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x6c, 0x0a, 0x0e, 0x63,\n\t0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0e, 0x46,\n\t0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,\n\t0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,\n\t0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x33,\n}\n\nvar (\n\tfile_google_api_field_info_proto_rawDescOnce sync.Once\n\tfile_google_api_field_info_proto_rawDescData = file_google_api_field_info_proto_rawDesc\n)\n\nfunc file_google_api_field_info_proto_rawDescGZIP() []byte {\n\tfile_google_api_field_info_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_field_info_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_field_info_proto_rawDescData)\n\t})\n\treturn file_google_api_field_info_proto_rawDescData\n}\n\nvar file_google_api_field_info_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_google_api_field_info_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_api_field_info_proto_goTypes = []interface{}{\n\t(FieldInfo_Format)(0),             // 0: google.api.FieldInfo.Format\n\t(*FieldInfo)(nil),                 // 1: google.api.FieldInfo\n\t(*descriptorpb.FieldOptions)(nil), // 2: google.protobuf.FieldOptions\n}\nvar file_google_api_field_info_proto_depIdxs = []int32{\n\t0, // 0: google.api.FieldInfo.format:type_name -> google.api.FieldInfo.Format\n\t2, // 1: google.api.field_info:extendee -> google.protobuf.FieldOptions\n\t1, // 2: google.api.field_info:type_name -> google.api.FieldInfo\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t2, // [2:3] is the sub-list for extension type_name\n\t1, // [1:2] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_field_info_proto_init() }\nfunc file_google_api_field_info_proto_init() {\n\tif File_google_api_field_info_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_field_info_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FieldInfo); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_field_info_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_field_info_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_field_info_proto_depIdxs,\n\t\tEnumInfos:         file_google_api_field_info_proto_enumTypes,\n\t\tMessageInfos:      file_google_api_field_info_proto_msgTypes,\n\t\tExtensionInfos:    file_google_api_field_info_proto_extTypes,\n\t}.Build()\n\tFile_google_api_field_info_proto = out.File\n\tfile_google_api_field_info_proto_rawDesc = nil\n\tfile_google_api_field_info_proto_goTypes = nil\n\tfile_google_api_field_info_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/http.pb.go",
    "content": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v3.21.9\n// source: google/api/http.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Defines the HTTP configuration for an API service. It contains a list of\n// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method\n// to one or more HTTP REST API methods.\ntype Http struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// A list of HTTP configuration rules that apply to individual API methods.\n\t//\n\t// **NOTE:** All service configuration rules follow \"last one wins\" order.\n\tRules []*HttpRule `protobuf:\"bytes,1,rep,name=rules,proto3\" json:\"rules,omitempty\"`\n\t// When set to true, URL path parameters will be fully URI-decoded except in\n\t// cases of single segment matches in reserved expansion, where \"%2F\" will be\n\t// left encoded.\n\t//\n\t// The default behavior is to not decode RFC 6570 reserved characters in multi\n\t// segment matches.\n\tFullyDecodeReservedExpansion bool `protobuf:\"varint,2,opt,name=fully_decode_reserved_expansion,json=fullyDecodeReservedExpansion,proto3\" json:\"fully_decode_reserved_expansion,omitempty\"`\n}\n\nfunc (x *Http) Reset() {\n\t*x = Http{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_http_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Http) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Http) ProtoMessage() {}\n\nfunc (x *Http) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_http_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Http.ProtoReflect.Descriptor instead.\nfunc (*Http) Descriptor() ([]byte, []int) {\n\treturn file_google_api_http_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Http) GetRules() []*HttpRule {\n\tif x != nil {\n\t\treturn x.Rules\n\t}\n\treturn nil\n}\n\nfunc (x *Http) GetFullyDecodeReservedExpansion() bool {\n\tif x != nil {\n\t\treturn x.FullyDecodeReservedExpansion\n\t}\n\treturn false\n}\n\n// # gRPC Transcoding\n//\n// gRPC Transcoding is a feature for mapping between a gRPC method and one or\n// more HTTP REST endpoints. It allows developers to build a single API service\n// that supports both gRPC APIs and REST APIs. Many systems, including [Google\n// APIs](https://github.com/googleapis/googleapis),\n// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC\n// Gateway](https://github.com/grpc-ecosystem/grpc-gateway),\n// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature\n// and use it for large scale production services.\n//\n// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies\n// how different portions of the gRPC request message are mapped to the URL\n// path, URL query parameters, and HTTP request body. It also controls how the\n// gRPC response message is mapped to the HTTP response body. `HttpRule` is\n// typically specified as an `google.api.http` annotation on the gRPC method.\n//\n// Each mapping specifies a URL path template and an HTTP method. The path\n// template may refer to one or more fields in the gRPC request message, as long\n// as each field is a non-repeated field with a primitive (non-message) type.\n// The path template controls how fields of the request message are mapped to\n// the URL path.\n//\n// Example:\n//\n//\tservice Messaging {\n//\t  rpc GetMessage(GetMessageRequest) returns (Message) {\n//\t    option (google.api.http) = {\n//\t        get: \"/v1/{name=messages/*}\"\n//\t    };\n//\t  }\n//\t}\n//\tmessage GetMessageRequest {\n//\t  string name = 1; // Mapped to URL path.\n//\t}\n//\tmessage Message {\n//\t  string text = 1; // The resource content.\n//\t}\n//\n// This enables an HTTP REST to gRPC mapping as below:\n//\n// HTTP | gRPC\n// -----|-----\n// `GET /v1/messages/123456`  | `GetMessage(name: \"messages/123456\")`\n//\n// Any fields in the request message which are not bound by the path template\n// automatically become HTTP query parameters if there is no HTTP request body.\n// For example:\n//\n//\tservice Messaging {\n//\t  rpc GetMessage(GetMessageRequest) returns (Message) {\n//\t    option (google.api.http) = {\n//\t        get:\"/v1/messages/{message_id}\"\n//\t    };\n//\t  }\n//\t}\n//\tmessage GetMessageRequest {\n//\t  message SubMessage {\n//\t    string subfield = 1;\n//\t  }\n//\t  string message_id = 1; // Mapped to URL path.\n//\t  int64 revision = 2;    // Mapped to URL query parameter `revision`.\n//\t  SubMessage sub = 3;    // Mapped to URL query parameter `sub.subfield`.\n//\t}\n//\n// This enables a HTTP JSON to RPC mapping as below:\n//\n// HTTP | gRPC\n// -----|-----\n// `GET /v1/messages/123456?revision=2&sub.subfield=foo` |\n// `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield:\n// \"foo\"))`\n//\n// Note that fields which are mapped to URL query parameters must have a\n// primitive type or a repeated primitive type or a non-repeated message type.\n// In the case of a repeated type, the parameter can be repeated in the URL\n// as `...?param=A&param=B`. In the case of a message type, each field of the\n// message is mapped to a separate parameter, such as\n// `...?foo.a=A&foo.b=B&foo.c=C`.\n//\n// For HTTP methods that allow a request body, the `body` field\n// specifies the mapping. Consider a REST update method on the\n// message resource collection:\n//\n//\tservice Messaging {\n//\t  rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n//\t    option (google.api.http) = {\n//\t      patch: \"/v1/messages/{message_id}\"\n//\t      body: \"message\"\n//\t    };\n//\t  }\n//\t}\n//\tmessage UpdateMessageRequest {\n//\t  string message_id = 1; // mapped to the URL\n//\t  Message message = 2;   // mapped to the body\n//\t}\n//\n// The following HTTP JSON to RPC mapping is enabled, where the\n// representation of the JSON in the request body is determined by\n// protos JSON encoding:\n//\n// HTTP | gRPC\n// -----|-----\n// `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id:\n// \"123456\" message { text: \"Hi!\" })`\n//\n// The special name `*` can be used in the body mapping to define that\n// every field not bound by the path template should be mapped to the\n// request body.  This enables the following alternative definition of\n// the update method:\n//\n//\tservice Messaging {\n//\t  rpc UpdateMessage(Message) returns (Message) {\n//\t    option (google.api.http) = {\n//\t      patch: \"/v1/messages/{message_id}\"\n//\t      body: \"*\"\n//\t    };\n//\t  }\n//\t}\n//\tmessage Message {\n//\t  string message_id = 1;\n//\t  string text = 2;\n//\t}\n//\n// The following HTTP JSON to RPC mapping is enabled:\n//\n// HTTP | gRPC\n// -----|-----\n// `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id:\n// \"123456\" text: \"Hi!\")`\n//\n// Note that when using `*` in the body mapping, it is not possible to\n// have HTTP parameters, as all fields not bound by the path end in\n// the body. This makes this option more rarely used in practice when\n// defining REST APIs. The common usage of `*` is in custom methods\n// which don't use the URL at all for transferring data.\n//\n// It is possible to define multiple HTTP methods for one RPC by using\n// the `additional_bindings` option. Example:\n//\n//\tservice Messaging {\n//\t  rpc GetMessage(GetMessageRequest) returns (Message) {\n//\t    option (google.api.http) = {\n//\t      get: \"/v1/messages/{message_id}\"\n//\t      additional_bindings {\n//\t        get: \"/v1/users/{user_id}/messages/{message_id}\"\n//\t      }\n//\t    };\n//\t  }\n//\t}\n//\tmessage GetMessageRequest {\n//\t  string message_id = 1;\n//\t  string user_id = 2;\n//\t}\n//\n// This enables the following two alternative HTTP JSON to RPC mappings:\n//\n// HTTP | gRPC\n// -----|-----\n// `GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id:\n// \"123456\")`\n//\n// ## Rules for HTTP mapping\n//\n//  1. Leaf request fields (recursive expansion nested messages in the request\n//     message) are classified into three categories:\n//     - Fields referred by the path template. They are passed via the URL path.\n//     - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They\n//     are passed via the HTTP\n//     request body.\n//     - All other fields are passed via the URL query parameters, and the\n//     parameter name is the field path in the request message. A repeated\n//     field can be represented as multiple query parameters under the same\n//     name.\n//  2. If [HttpRule.body][google.api.HttpRule.body] is \"*\", there is no URL\n//     query parameter, all fields\n//     are passed via URL path and HTTP request body.\n//  3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP\n//     request body, all\n//     fields are passed via URL path and URL query parameters.\n//\n// ### Path template syntax\n//\n//\tTemplate = \"/\" Segments [ Verb ] ;\n//\tSegments = Segment { \"/\" Segment } ;\n//\tSegment  = \"*\" | \"**\" | LITERAL | Variable ;\n//\tVariable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n//\tFieldPath = IDENT { \".\" IDENT } ;\n//\tVerb     = \":\" LITERAL ;\n//\n// The syntax `*` matches a single URL path segment. The syntax `**` matches\n// zero or more URL path segments, which must be the last part of the URL path\n// except the `Verb`.\n//\n// The syntax `Variable` matches part of the URL path as specified by its\n// template. A variable template must not contain other variables. If a variable\n// matches a single path segment, its template may be omitted, e.g. `{var}`\n// is equivalent to `{var=*}`.\n//\n// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`\n// contains any reserved character, such characters should be percent-encoded\n// before the matching.\n//\n// If a variable contains exactly one path segment, such as `\"{var}\"` or\n// `\"{var=*}\"`, when such a variable is expanded into a URL path on the client\n// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The\n// server side does the reverse decoding. Such variables show up in the\n// [Discovery\n// Document](https://developers.google.com/discovery/v1/reference/apis) as\n// `{var}`.\n//\n// If a variable contains multiple path segments, such as `\"{var=foo/*}\"`\n// or `\"{var=**}\"`, when such a variable is expanded into a URL path on the\n// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.\n// The server side does the reverse decoding, except \"%2F\" and \"%2f\" are left\n// unchanged. Such variables show up in the\n// [Discovery\n// Document](https://developers.google.com/discovery/v1/reference/apis) as\n// `{+var}`.\n//\n// ## Using gRPC API Service Configuration\n//\n// gRPC API Service Configuration (service config) is a configuration language\n// for configuring a gRPC service to become a user-facing product. The\n// service config is simply the YAML representation of the `google.api.Service`\n// proto message.\n//\n// As an alternative to annotating your proto file, you can configure gRPC\n// transcoding in your service config YAML files. You do this by specifying a\n// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same\n// effect as the proto annotation. This can be particularly useful if you\n// have a proto that is reused in multiple services. Note that any transcoding\n// specified in the service config will override any matching transcoding\n// configuration in the proto.\n//\n// Example:\n//\n//\thttp:\n//\t  rules:\n//\t    # Selects a gRPC method and applies HttpRule to it.\n//\t    - selector: example.v1.Messaging.GetMessage\n//\t      get: /v1/messages/{message_id}/{sub.subfield}\n//\n// ## Special notes\n//\n// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the\n// proto to JSON conversion must follow the [proto3\n// specification](https://developers.google.com/protocol-buffers/docs/proto3#json).\n//\n// While the single segment variable follows the semantics of\n// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String\n// Expansion, the multi segment variable **does not** follow RFC 6570 Section\n// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion\n// does not expand special characters like `?` and `#`, which would lead\n// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding\n// for multi segment variables.\n//\n// The path variables **must not** refer to any repeated or mapped field,\n// because client libraries are not capable of handling such variable expansion.\n//\n// The path variables **must not** capture the leading \"/\" character. The reason\n// is that the most common use case \"{var}\" does not capture the leading \"/\"\n// character. For consistency, all path variables must share the same behavior.\n//\n// Repeated message fields must not be mapped to URL query parameters, because\n// no client library can support such complicated mapping.\n//\n// If an API needs to use a JSON array for request or response body, it can map\n// the request or response body to a repeated field. However, some gRPC\n// Transcoding implementations may not support this feature.\ntype HttpRule struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Selects a method to which this rule applies.\n\t//\n\t// Refer to [selector][google.api.DocumentationRule.selector] for syntax\n\t// details.\n\tSelector string `protobuf:\"bytes,1,opt,name=selector,proto3\" json:\"selector,omitempty\"`\n\t// Determines the URL pattern is matched by this rules. This pattern can be\n\t// used with any of the {get|put|post|delete|patch} methods. A custom method\n\t// can be defined using the 'custom' field.\n\t//\n\t// Types that are assignable to Pattern:\n\t//\n\t//\t*HttpRule_Get\n\t//\t*HttpRule_Put\n\t//\t*HttpRule_Post\n\t//\t*HttpRule_Delete\n\t//\t*HttpRule_Patch\n\t//\t*HttpRule_Custom\n\tPattern isHttpRule_Pattern `protobuf_oneof:\"pattern\"`\n\t// The name of the request field whose value is mapped to the HTTP request\n\t// body, or `*` for mapping all request fields not captured by the path\n\t// pattern to the HTTP body, or omitted for not having any HTTP request body.\n\t//\n\t// NOTE: the referred field must be present at the top-level of the request\n\t// message type.\n\tBody string `protobuf:\"bytes,7,opt,name=body,proto3\" json:\"body,omitempty\"`\n\t// Optional. The name of the response field whose value is mapped to the HTTP\n\t// response body. When omitted, the entire response message will be used\n\t// as the HTTP response body.\n\t//\n\t// NOTE: The referred field must be present at the top-level of the response\n\t// message type.\n\tResponseBody string `protobuf:\"bytes,12,opt,name=response_body,json=responseBody,proto3\" json:\"response_body,omitempty\"`\n\t// Additional HTTP bindings for the selector. Nested bindings must\n\t// not contain an `additional_bindings` field themselves (that is,\n\t// the nesting may only be one level deep).\n\tAdditionalBindings []*HttpRule `protobuf:\"bytes,11,rep,name=additional_bindings,json=additionalBindings,proto3\" json:\"additional_bindings,omitempty\"`\n}\n\nfunc (x *HttpRule) Reset() {\n\t*x = HttpRule{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_http_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *HttpRule) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*HttpRule) ProtoMessage() {}\n\nfunc (x *HttpRule) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_http_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use HttpRule.ProtoReflect.Descriptor instead.\nfunc (*HttpRule) Descriptor() ([]byte, []int) {\n\treturn file_google_api_http_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *HttpRule) GetSelector() string {\n\tif x != nil {\n\t\treturn x.Selector\n\t}\n\treturn \"\"\n}\n\nfunc (m *HttpRule) GetPattern() isHttpRule_Pattern {\n\tif m != nil {\n\t\treturn m.Pattern\n\t}\n\treturn nil\n}\n\nfunc (x *HttpRule) GetGet() string {\n\tif x, ok := x.GetPattern().(*HttpRule_Get); ok {\n\t\treturn x.Get\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetPut() string {\n\tif x, ok := x.GetPattern().(*HttpRule_Put); ok {\n\t\treturn x.Put\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetPost() string {\n\tif x, ok := x.GetPattern().(*HttpRule_Post); ok {\n\t\treturn x.Post\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetDelete() string {\n\tif x, ok := x.GetPattern().(*HttpRule_Delete); ok {\n\t\treturn x.Delete\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetPatch() string {\n\tif x, ok := x.GetPattern().(*HttpRule_Patch); ok {\n\t\treturn x.Patch\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetCustom() *CustomHttpPattern {\n\tif x, ok := x.GetPattern().(*HttpRule_Custom); ok {\n\t\treturn x.Custom\n\t}\n\treturn nil\n}\n\nfunc (x *HttpRule) GetBody() string {\n\tif x != nil {\n\t\treturn x.Body\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetResponseBody() string {\n\tif x != nil {\n\t\treturn x.ResponseBody\n\t}\n\treturn \"\"\n}\n\nfunc (x *HttpRule) GetAdditionalBindings() []*HttpRule {\n\tif x != nil {\n\t\treturn x.AdditionalBindings\n\t}\n\treturn nil\n}\n\ntype isHttpRule_Pattern interface {\n\tisHttpRule_Pattern()\n}\n\ntype HttpRule_Get struct {\n\t// Maps to HTTP GET. Used for listing and getting information about\n\t// resources.\n\tGet string `protobuf:\"bytes,2,opt,name=get,proto3,oneof\"`\n}\n\ntype HttpRule_Put struct {\n\t// Maps to HTTP PUT. Used for replacing a resource.\n\tPut string `protobuf:\"bytes,3,opt,name=put,proto3,oneof\"`\n}\n\ntype HttpRule_Post struct {\n\t// Maps to HTTP POST. Used for creating a resource or performing an action.\n\tPost string `protobuf:\"bytes,4,opt,name=post,proto3,oneof\"`\n}\n\ntype HttpRule_Delete struct {\n\t// Maps to HTTP DELETE. Used for deleting a resource.\n\tDelete string `protobuf:\"bytes,5,opt,name=delete,proto3,oneof\"`\n}\n\ntype HttpRule_Patch struct {\n\t// Maps to HTTP PATCH. Used for updating a resource.\n\tPatch string `protobuf:\"bytes,6,opt,name=patch,proto3,oneof\"`\n}\n\ntype HttpRule_Custom struct {\n\t// The custom pattern is used for specifying an HTTP method that is not\n\t// included in the `pattern` field, such as HEAD, or \"*\" to leave the\n\t// HTTP method unspecified for this rule. The wild-card rule is useful\n\t// for services that provide content to Web (HTML) clients.\n\tCustom *CustomHttpPattern `protobuf:\"bytes,8,opt,name=custom,proto3,oneof\"`\n}\n\nfunc (*HttpRule_Get) isHttpRule_Pattern() {}\n\nfunc (*HttpRule_Put) isHttpRule_Pattern() {}\n\nfunc (*HttpRule_Post) isHttpRule_Pattern() {}\n\nfunc (*HttpRule_Delete) isHttpRule_Pattern() {}\n\nfunc (*HttpRule_Patch) isHttpRule_Pattern() {}\n\nfunc (*HttpRule_Custom) isHttpRule_Pattern() {}\n\n// A custom pattern is used for defining custom HTTP verb.\ntype CustomHttpPattern struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The name of this custom HTTP verb.\n\tKind string `protobuf:\"bytes,1,opt,name=kind,proto3\" json:\"kind,omitempty\"`\n\t// The path matched by this custom verb.\n\tPath string `protobuf:\"bytes,2,opt,name=path,proto3\" json:\"path,omitempty\"`\n}\n\nfunc (x *CustomHttpPattern) Reset() {\n\t*x = CustomHttpPattern{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_http_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CustomHttpPattern) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CustomHttpPattern) ProtoMessage() {}\n\nfunc (x *CustomHttpPattern) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_http_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use CustomHttpPattern.ProtoReflect.Descriptor instead.\nfunc (*CustomHttpPattern) Descriptor() ([]byte, []int) {\n\treturn file_google_api_http_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *CustomHttpPattern) GetKind() string {\n\tif x != nil {\n\t\treturn x.Kind\n\t}\n\treturn \"\"\n}\n\nfunc (x *CustomHttpPattern) GetPath() string {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn \"\"\n}\n\nvar File_google_api_http_proto protoreflect.FileDescriptor\n\nvar file_google_api_http_proto_rawDesc = []byte{\n\t0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x68, 0x74, 0x74,\n\t0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x22, 0x79, 0x0a, 0x04, 0x48, 0x74, 0x74, 0x70, 0x12, 0x2a, 0x0a, 0x05, 0x72,\n\t0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65,\n\t0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x66, 0x75, 0x6c, 0x6c, 0x79,\n\t0x5f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,\n\t0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,\n\t0x52, 0x1c, 0x66, 0x75, 0x6c, 0x6c, 0x79, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73,\n\t0x65, 0x72, 0x76, 0x65, 0x64, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xda,\n\t0x02, 0x0a, 0x08, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73,\n\t0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73,\n\t0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x03, 0x67, 0x65, 0x74, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x70,\n\t0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x70, 0x75, 0x74, 0x12,\n\t0x14, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,\n\t0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18,\n\t0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12,\n\t0x16, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,\n\t0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f,\n\t0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x74, 0x74, 0x70, 0x50,\n\t0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d,\n\t0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,\n\t0x62, 0x6f, 0x64, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x45, 0x0a, 0x13, 0x61, 0x64, 0x64,\n\t0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,\n\t0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x12, 0x61, 0x64,\n\t0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,\n\t0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0x3b, 0x0a, 0x11, 0x43,\n\t0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x74, 0x74, 0x70, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,\n\t0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,\n\t0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x6a, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x09, 0x48, 0x74, 0x74, 0x70,\n\t0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61,\n\t0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61,\n\t0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x04,\n\t0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_http_proto_rawDescOnce sync.Once\n\tfile_google_api_http_proto_rawDescData = file_google_api_http_proto_rawDesc\n)\n\nfunc file_google_api_http_proto_rawDescGZIP() []byte {\n\tfile_google_api_http_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_http_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_http_proto_rawDescData)\n\t})\n\treturn file_google_api_http_proto_rawDescData\n}\n\nvar file_google_api_http_proto_msgTypes = make([]protoimpl.MessageInfo, 3)\nvar file_google_api_http_proto_goTypes = []interface{}{\n\t(*Http)(nil),              // 0: google.api.Http\n\t(*HttpRule)(nil),          // 1: google.api.HttpRule\n\t(*CustomHttpPattern)(nil), // 2: google.api.CustomHttpPattern\n}\nvar file_google_api_http_proto_depIdxs = []int32{\n\t1, // 0: google.api.Http.rules:type_name -> google.api.HttpRule\n\t2, // 1: google.api.HttpRule.custom:type_name -> google.api.CustomHttpPattern\n\t1, // 2: google.api.HttpRule.additional_bindings:type_name -> google.api.HttpRule\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t3, // [3:3] is the sub-list for extension type_name\n\t3, // [3:3] is the sub-list for extension extendee\n\t0, // [0:3] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_http_proto_init() }\nfunc file_google_api_http_proto_init() {\n\tif File_google_api_http_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_http_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Http); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_http_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*HttpRule); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_http_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CustomHttpPattern); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tfile_google_api_http_proto_msgTypes[1].OneofWrappers = []interface{}{\n\t\t(*HttpRule_Get)(nil),\n\t\t(*HttpRule_Put)(nil),\n\t\t(*HttpRule_Post)(nil),\n\t\t(*HttpRule_Delete)(nil),\n\t\t(*HttpRule_Patch)(nil),\n\t\t(*HttpRule_Custom)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_http_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   3,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_http_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_http_proto_depIdxs,\n\t\tMessageInfos:      file_google_api_http_proto_msgTypes,\n\t}.Build()\n\tFile_google_api_http_proto = out.File\n\tfile_google_api_http_proto_rawDesc = nil\n\tfile_google_api_http_proto_goTypes = nil\n\tfile_google_api_http_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/resource.pb.go",
    "content": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v3.21.9\n// source: google/api/resource.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// A description of the historical or future-looking state of the\n// resource pattern.\ntype ResourceDescriptor_History int32\n\nconst (\n\t// The \"unset\" value.\n\tResourceDescriptor_HISTORY_UNSPECIFIED ResourceDescriptor_History = 0\n\t// The resource originally had one pattern and launched as such, and\n\t// additional patterns were added later.\n\tResourceDescriptor_ORIGINALLY_SINGLE_PATTERN ResourceDescriptor_History = 1\n\t// The resource has one pattern, but the API owner expects to add more\n\t// later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents\n\t// that from being necessary once there are multiple patterns.)\n\tResourceDescriptor_FUTURE_MULTI_PATTERN ResourceDescriptor_History = 2\n)\n\n// Enum value maps for ResourceDescriptor_History.\nvar (\n\tResourceDescriptor_History_name = map[int32]string{\n\t\t0: \"HISTORY_UNSPECIFIED\",\n\t\t1: \"ORIGINALLY_SINGLE_PATTERN\",\n\t\t2: \"FUTURE_MULTI_PATTERN\",\n\t}\n\tResourceDescriptor_History_value = map[string]int32{\n\t\t\"HISTORY_UNSPECIFIED\":       0,\n\t\t\"ORIGINALLY_SINGLE_PATTERN\": 1,\n\t\t\"FUTURE_MULTI_PATTERN\":      2,\n\t}\n)\n\nfunc (x ResourceDescriptor_History) Enum() *ResourceDescriptor_History {\n\tp := new(ResourceDescriptor_History)\n\t*p = x\n\treturn p\n}\n\nfunc (x ResourceDescriptor_History) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ResourceDescriptor_History) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_resource_proto_enumTypes[0].Descriptor()\n}\n\nfunc (ResourceDescriptor_History) Type() protoreflect.EnumType {\n\treturn &file_google_api_resource_proto_enumTypes[0]\n}\n\nfunc (x ResourceDescriptor_History) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ResourceDescriptor_History.Descriptor instead.\nfunc (ResourceDescriptor_History) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_resource_proto_rawDescGZIP(), []int{0, 0}\n}\n\n// A flag representing a specific style that a resource claims to conform to.\ntype ResourceDescriptor_Style int32\n\nconst (\n\t// The unspecified value. Do not use.\n\tResourceDescriptor_STYLE_UNSPECIFIED ResourceDescriptor_Style = 0\n\t// This resource is intended to be \"declarative-friendly\".\n\t//\n\t// Declarative-friendly resources must be more strictly consistent, and\n\t// setting this to true communicates to tools that this resource should\n\t// adhere to declarative-friendly expectations.\n\t//\n\t// Note: This is used by the API linter (linter.aip.dev) to enable\n\t// additional checks.\n\tResourceDescriptor_DECLARATIVE_FRIENDLY ResourceDescriptor_Style = 1\n)\n\n// Enum value maps for ResourceDescriptor_Style.\nvar (\n\tResourceDescriptor_Style_name = map[int32]string{\n\t\t0: \"STYLE_UNSPECIFIED\",\n\t\t1: \"DECLARATIVE_FRIENDLY\",\n\t}\n\tResourceDescriptor_Style_value = map[string]int32{\n\t\t\"STYLE_UNSPECIFIED\":    0,\n\t\t\"DECLARATIVE_FRIENDLY\": 1,\n\t}\n)\n\nfunc (x ResourceDescriptor_Style) Enum() *ResourceDescriptor_Style {\n\tp := new(ResourceDescriptor_Style)\n\t*p = x\n\treturn p\n}\n\nfunc (x ResourceDescriptor_Style) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ResourceDescriptor_Style) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_resource_proto_enumTypes[1].Descriptor()\n}\n\nfunc (ResourceDescriptor_Style) Type() protoreflect.EnumType {\n\treturn &file_google_api_resource_proto_enumTypes[1]\n}\n\nfunc (x ResourceDescriptor_Style) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ResourceDescriptor_Style.Descriptor instead.\nfunc (ResourceDescriptor_Style) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_resource_proto_rawDescGZIP(), []int{0, 1}\n}\n\n// A simple descriptor of a resource type.\n//\n// ResourceDescriptor annotates a resource message (either by means of a\n// protobuf annotation or use in the service config), and associates the\n// resource's schema, the resource type, and the pattern of the resource name.\n//\n// Example:\n//\n//\tmessage Topic {\n//\t  // Indicates this message defines a resource schema.\n//\t  // Declares the resource type in the format of {service}/{kind}.\n//\t  // For Kubernetes resources, the format is {api group}/{kind}.\n//\t  option (google.api.resource) = {\n//\t    type: \"pubsub.googleapis.com/Topic\"\n//\t    pattern: \"projects/{project}/topics/{topic}\"\n//\t  };\n//\t}\n//\n// The ResourceDescriptor Yaml config will look like:\n//\n//\tresources:\n//\t- type: \"pubsub.googleapis.com/Topic\"\n//\t  pattern: \"projects/{project}/topics/{topic}\"\n//\n// Sometimes, resources have multiple patterns, typically because they can\n// live under multiple parents.\n//\n// Example:\n//\n//\tmessage LogEntry {\n//\t  option (google.api.resource) = {\n//\t    type: \"logging.googleapis.com/LogEntry\"\n//\t    pattern: \"projects/{project}/logs/{log}\"\n//\t    pattern: \"folders/{folder}/logs/{log}\"\n//\t    pattern: \"organizations/{organization}/logs/{log}\"\n//\t    pattern: \"billingAccounts/{billing_account}/logs/{log}\"\n//\t  };\n//\t}\n//\n// The ResourceDescriptor Yaml config will look like:\n//\n//\tresources:\n//\t- type: 'logging.googleapis.com/LogEntry'\n//\t  pattern: \"projects/{project}/logs/{log}\"\n//\t  pattern: \"folders/{folder}/logs/{log}\"\n//\t  pattern: \"organizations/{organization}/logs/{log}\"\n//\t  pattern: \"billingAccounts/{billing_account}/logs/{log}\"\ntype ResourceDescriptor struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The resource type. It must be in the format of\n\t// {service_name}/{resource_type_kind}. The `resource_type_kind` must be\n\t// singular and must not include version numbers.\n\t//\n\t// Example: `storage.googleapis.com/Bucket`\n\t//\n\t// The value of the resource_type_kind must follow the regular expression\n\t// /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and\n\t// should use PascalCase (UpperCamelCase). The maximum number of\n\t// characters allowed for the `resource_type_kind` is 100.\n\tType string `protobuf:\"bytes,1,opt,name=type,proto3\" json:\"type,omitempty\"`\n\t// Optional. The relative resource name pattern associated with this resource\n\t// type. The DNS prefix of the full resource name shouldn't be specified here.\n\t//\n\t// The path pattern must follow the syntax, which aligns with HTTP binding\n\t// syntax:\n\t//\n\t//\tTemplate = Segment { \"/\" Segment } ;\n\t//\tSegment = LITERAL | Variable ;\n\t//\tVariable = \"{\" LITERAL \"}\" ;\n\t//\n\t// Examples:\n\t//\n\t//   - \"projects/{project}/topics/{topic}\"\n\t//   - \"projects/{project}/knowledgeBases/{knowledge_base}\"\n\t//\n\t// The components in braces correspond to the IDs for each resource in the\n\t// hierarchy. It is expected that, if multiple patterns are provided,\n\t// the same component name (e.g. \"project\") refers to IDs of the same\n\t// type of resource.\n\tPattern []string `protobuf:\"bytes,2,rep,name=pattern,proto3\" json:\"pattern,omitempty\"`\n\t// Optional. The field on the resource that designates the resource name\n\t// field. If omitted, this is assumed to be \"name\".\n\tNameField string `protobuf:\"bytes,3,opt,name=name_field,json=nameField,proto3\" json:\"name_field,omitempty\"`\n\t// Optional. The historical or future-looking state of the resource pattern.\n\t//\n\t// Example:\n\t//\n\t//\t// The InspectTemplate message originally only supported resource\n\t//\t// names with organization, and project was added later.\n\t//\tmessage InspectTemplate {\n\t//\t  option (google.api.resource) = {\n\t//\t    type: \"dlp.googleapis.com/InspectTemplate\"\n\t//\t    pattern:\n\t//\t    \"organizations/{organization}/inspectTemplates/{inspect_template}\"\n\t//\t    pattern: \"projects/{project}/inspectTemplates/{inspect_template}\"\n\t//\t    history: ORIGINALLY_SINGLE_PATTERN\n\t//\t  };\n\t//\t}\n\tHistory ResourceDescriptor_History `protobuf:\"varint,4,opt,name=history,proto3,enum=google.api.ResourceDescriptor_History\" json:\"history,omitempty\"`\n\t// The plural name used in the resource name and permission names, such as\n\t// 'projects' for the resource name of 'projects/{project}' and the permission\n\t// name of 'cloudresourcemanager.googleapis.com/projects.get'. It is the same\n\t// concept of the `plural` field in k8s CRD spec\n\t// https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/\n\t//\n\t// Note: The plural form is required even for singleton resources. See\n\t// https://aip.dev/156\n\tPlural string `protobuf:\"bytes,5,opt,name=plural,proto3\" json:\"plural,omitempty\"`\n\t// The same concept of the `singular` field in k8s CRD spec\n\t// https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/\n\t// Such as \"project\" for the `resourcemanager.googleapis.com/Project` type.\n\tSingular string `protobuf:\"bytes,6,opt,name=singular,proto3\" json:\"singular,omitempty\"`\n\t// Style flag(s) for this resource.\n\t// These indicate that a resource is expected to conform to a given\n\t// style. See the specific style flags for additional information.\n\tStyle []ResourceDescriptor_Style `protobuf:\"varint,10,rep,packed,name=style,proto3,enum=google.api.ResourceDescriptor_Style\" json:\"style,omitempty\"`\n}\n\nfunc (x *ResourceDescriptor) Reset() {\n\t*x = ResourceDescriptor{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_resource_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ResourceDescriptor) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ResourceDescriptor) ProtoMessage() {}\n\nfunc (x *ResourceDescriptor) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_resource_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ResourceDescriptor.ProtoReflect.Descriptor instead.\nfunc (*ResourceDescriptor) Descriptor() ([]byte, []int) {\n\treturn file_google_api_resource_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ResourceDescriptor) GetType() string {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceDescriptor) GetPattern() []string {\n\tif x != nil {\n\t\treturn x.Pattern\n\t}\n\treturn nil\n}\n\nfunc (x *ResourceDescriptor) GetNameField() string {\n\tif x != nil {\n\t\treturn x.NameField\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceDescriptor) GetHistory() ResourceDescriptor_History {\n\tif x != nil {\n\t\treturn x.History\n\t}\n\treturn ResourceDescriptor_HISTORY_UNSPECIFIED\n}\n\nfunc (x *ResourceDescriptor) GetPlural() string {\n\tif x != nil {\n\t\treturn x.Plural\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceDescriptor) GetSingular() string {\n\tif x != nil {\n\t\treturn x.Singular\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceDescriptor) GetStyle() []ResourceDescriptor_Style {\n\tif x != nil {\n\t\treturn x.Style\n\t}\n\treturn nil\n}\n\n// Defines a proto annotation that describes a string field that refers to\n// an API resource.\ntype ResourceReference struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The resource type that the annotated field references.\n\t//\n\t// Example:\n\t//\n\t//\tmessage Subscription {\n\t//\t  string topic = 2 [(google.api.resource_reference) = {\n\t//\t    type: \"pubsub.googleapis.com/Topic\"\n\t//\t  }];\n\t//\t}\n\t//\n\t// Occasionally, a field may reference an arbitrary resource. In this case,\n\t// APIs use the special value * in their resource reference.\n\t//\n\t// Example:\n\t//\n\t//\tmessage GetIamPolicyRequest {\n\t//\t  string resource = 2 [(google.api.resource_reference) = {\n\t//\t    type: \"*\"\n\t//\t  }];\n\t//\t}\n\tType string `protobuf:\"bytes,1,opt,name=type,proto3\" json:\"type,omitempty\"`\n\t// The resource type of a child collection that the annotated field\n\t// references. This is useful for annotating the `parent` field that\n\t// doesn't have a fixed resource type.\n\t//\n\t// Example:\n\t//\n\t//\tmessage ListLogEntriesRequest {\n\t//\t  string parent = 1 [(google.api.resource_reference) = {\n\t//\t    child_type: \"logging.googleapis.com/LogEntry\"\n\t//\t  };\n\t//\t}\n\tChildType string `protobuf:\"bytes,2,opt,name=child_type,json=childType,proto3\" json:\"child_type,omitempty\"`\n}\n\nfunc (x *ResourceReference) Reset() {\n\t*x = ResourceReference{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_resource_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ResourceReference) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ResourceReference) ProtoMessage() {}\n\nfunc (x *ResourceReference) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_resource_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ResourceReference.ProtoReflect.Descriptor instead.\nfunc (*ResourceReference) Descriptor() ([]byte, []int) {\n\treturn file_google_api_resource_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ResourceReference) GetType() string {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceReference) GetChildType() string {\n\tif x != nil {\n\t\treturn x.ChildType\n\t}\n\treturn \"\"\n}\n\nvar file_google_api_resource_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.FieldOptions)(nil),\n\t\tExtensionType: (*ResourceReference)(nil),\n\t\tField:         1055,\n\t\tName:          \"google.api.resource_reference\",\n\t\tTag:           \"bytes,1055,opt,name=resource_reference\",\n\t\tFilename:      \"google/api/resource.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.FileOptions)(nil),\n\t\tExtensionType: ([]*ResourceDescriptor)(nil),\n\t\tField:         1053,\n\t\tName:          \"google.api.resource_definition\",\n\t\tTag:           \"bytes,1053,rep,name=resource_definition\",\n\t\tFilename:      \"google/api/resource.proto\",\n\t},\n\t{\n\t\tExtendedType:  (*descriptorpb.MessageOptions)(nil),\n\t\tExtensionType: (*ResourceDescriptor)(nil),\n\t\tField:         1053,\n\t\tName:          \"google.api.resource\",\n\t\tTag:           \"bytes,1053,opt,name=resource\",\n\t\tFilename:      \"google/api/resource.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.FieldOptions.\nvar (\n\t// An annotation that describes a resource reference, see\n\t// [ResourceReference][].\n\t//\n\t// optional google.api.ResourceReference resource_reference = 1055;\n\tE_ResourceReference = &file_google_api_resource_proto_extTypes[0]\n)\n\n// Extension fields to descriptorpb.FileOptions.\nvar (\n\t// An annotation that describes a resource definition without a corresponding\n\t// message; see [ResourceDescriptor][].\n\t//\n\t// repeated google.api.ResourceDescriptor resource_definition = 1053;\n\tE_ResourceDefinition = &file_google_api_resource_proto_extTypes[1]\n)\n\n// Extension fields to descriptorpb.MessageOptions.\nvar (\n\t// An annotation that describes a resource definition, see\n\t// [ResourceDescriptor][].\n\t//\n\t// optional google.api.ResourceDescriptor resource = 1053;\n\tE_Resource = &file_google_api_resource_proto_extTypes[2]\n)\n\nvar File_google_api_resource_proto protoreflect.FileDescriptor\n\nvar file_google_api_resource_proto_rawDesc = []byte{\n\t0x0a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,\n\t0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaa, 0x03, 0x0a, 0x12, 0x52, 0x65,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,\n\t0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,\n\t0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18,\n\t0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1d,\n\t0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x40, 0x0a,\n\t0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x48,\n\t0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12,\n\t0x16, 0x0a, 0x06, 0x70, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x06, 0x70, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x67, 0x75,\n\t0x6c, 0x61, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x69, 0x6e, 0x67, 0x75,\n\t0x6c, 0x61, 0x72, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x03,\n\t0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,\n\t0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,\n\t0x6f, 0x72, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x05, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x22,\n\t0x5b, 0x0a, 0x07, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x13, 0x48, 0x49,\n\t0x53, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,\n\t0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x52, 0x49, 0x47, 0x49, 0x4e, 0x41, 0x4c, 0x4c,\n\t0x59, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4e,\n\t0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x55, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x55, 0x4c,\n\t0x54, 0x49, 0x5f, 0x50, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4e, 0x10, 0x02, 0x22, 0x38, 0x0a, 0x05,\n\t0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x5f, 0x55,\n\t0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14,\n\t0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x46, 0x52, 0x49, 0x45,\n\t0x4e, 0x44, 0x4c, 0x59, 0x10, 0x01, 0x22, 0x46, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74,\n\t0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,\n\t0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x6c,\n\t0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72,\n\t0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x18, 0x9f, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x3a, 0x6e, 0x0a, 0x13,\n\t0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74,\n\t0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x18, 0x9d, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65,\n\t0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x5c, 0x0a, 0x08,\n\t0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,\n\t0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9d, 0x08, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,\n\t0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x6e, 0x0a, 0x0e, 0x63, 0x6f,\n\t0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0d, 0x52, 0x65,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,\n\t0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,\n\t0xf8, 0x01, 0x01, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_resource_proto_rawDescOnce sync.Once\n\tfile_google_api_resource_proto_rawDescData = file_google_api_resource_proto_rawDesc\n)\n\nfunc file_google_api_resource_proto_rawDescGZIP() []byte {\n\tfile_google_api_resource_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_resource_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_resource_proto_rawDescData)\n\t})\n\treturn file_google_api_resource_proto_rawDescData\n}\n\nvar file_google_api_resource_proto_enumTypes = make([]protoimpl.EnumInfo, 2)\nvar file_google_api_resource_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_google_api_resource_proto_goTypes = []interface{}{\n\t(ResourceDescriptor_History)(0),     // 0: google.api.ResourceDescriptor.History\n\t(ResourceDescriptor_Style)(0),       // 1: google.api.ResourceDescriptor.Style\n\t(*ResourceDescriptor)(nil),          // 2: google.api.ResourceDescriptor\n\t(*ResourceReference)(nil),           // 3: google.api.ResourceReference\n\t(*descriptorpb.FieldOptions)(nil),   // 4: google.protobuf.FieldOptions\n\t(*descriptorpb.FileOptions)(nil),    // 5: google.protobuf.FileOptions\n\t(*descriptorpb.MessageOptions)(nil), // 6: google.protobuf.MessageOptions\n}\nvar file_google_api_resource_proto_depIdxs = []int32{\n\t0, // 0: google.api.ResourceDescriptor.history:type_name -> google.api.ResourceDescriptor.History\n\t1, // 1: google.api.ResourceDescriptor.style:type_name -> google.api.ResourceDescriptor.Style\n\t4, // 2: google.api.resource_reference:extendee -> google.protobuf.FieldOptions\n\t5, // 3: google.api.resource_definition:extendee -> google.protobuf.FileOptions\n\t6, // 4: google.api.resource:extendee -> google.protobuf.MessageOptions\n\t3, // 5: google.api.resource_reference:type_name -> google.api.ResourceReference\n\t2, // 6: google.api.resource_definition:type_name -> google.api.ResourceDescriptor\n\t2, // 7: google.api.resource:type_name -> google.api.ResourceDescriptor\n\t8, // [8:8] is the sub-list for method output_type\n\t8, // [8:8] is the sub-list for method input_type\n\t5, // [5:8] is the sub-list for extension type_name\n\t2, // [2:5] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_resource_proto_init() }\nfunc file_google_api_resource_proto_init() {\n\tif File_google_api_resource_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_resource_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ResourceDescriptor); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_resource_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ResourceReference); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_resource_proto_rawDesc,\n\t\t\tNumEnums:      2,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 3,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_resource_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_resource_proto_depIdxs,\n\t\tEnumInfos:         file_google_api_resource_proto_enumTypes,\n\t\tMessageInfos:      file_google_api_resource_proto_msgTypes,\n\t\tExtensionInfos:    file_google_api_resource_proto_extTypes,\n\t}.Build()\n\tFile_google_api_resource_proto = out.File\n\tfile_google_api_resource_proto_rawDesc = nil\n\tfile_google_api_resource_proto_goTypes = nil\n\tfile_google_api_resource_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/annotations/routing.pb.go",
    "content": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v3.21.9\n// source: google/api/routing.proto\n\npackage annotations\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdescriptorpb \"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Specifies the routing information that should be sent along with the request\n// in the form of routing header.\n// **NOTE:** All service configuration rules follow the \"last one wins\" order.\n//\n// The examples below will apply to an RPC which has the following request type:\n//\n// Message Definition:\n//\n//\tmessage Request {\n//\t  // The name of the Table\n//\t  // Values can be of the following formats:\n//\t  // - `projects/<project>/tables/<table>`\n//\t  // - `projects/<project>/instances/<instance>/tables/<table>`\n//\t  // - `region/<region>/zones/<zone>/tables/<table>`\n//\t  string table_name = 1;\n//\n//\t  // This value specifies routing for replication.\n//\t  // It can be in the following formats:\n//\t  // - `profiles/<profile_id>`\n//\t  // - a legacy `profile_id` that can be any string\n//\t  string app_profile_id = 2;\n//\t}\n//\n// Example message:\n//\n//\t{\n//\t  table_name: projects/proj_foo/instances/instance_bar/table/table_baz,\n//\t  app_profile_id: profiles/prof_qux\n//\t}\n//\n// The routing header consists of one or multiple key-value pairs. Every key\n// and value must be percent-encoded, and joined together in the format of\n// `key1=value1&key2=value2`.\n// In the examples below I am skipping the percent-encoding for readablity.\n//\n// # Example 1\n//\n// Extracting a field from the request to put into the routing header\n// unchanged, with the key equal to the field name.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // Take the `app_profile_id`.\n//\t  routing_parameters {\n//\t    field: \"app_profile_id\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params: app_profile_id=profiles/prof_qux\n//\n// # Example 2\n//\n// Extracting a field from the request to put into the routing header\n// unchanged, with the key different from the field name.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // Take the `app_profile_id`, but name it `routing_id` in the header.\n//\t  routing_parameters {\n//\t    field: \"app_profile_id\"\n//\t    path_template: \"{routing_id=**}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params: routing_id=profiles/prof_qux\n//\n// # Example 3\n//\n// Extracting a field from the request to put into the routing\n// header, while matching a path template syntax on the field's value.\n//\n// NB: it is more useful to send nothing than to send garbage for the purpose\n// of dynamic routing, since garbage pollutes cache. Thus the matching.\n//\n// # Sub-example 3a\n//\n// The field matches the template.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // Take the `table_name`, if it's well-formed (with project-based\n//\t  // syntax).\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{table_name=projects/*/instances/*/**}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params:\n//\ttable_name=projects/proj_foo/instances/instance_bar/table/table_baz\n//\n// # Sub-example 3b\n//\n// The field does not match the template.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // Take the `table_name`, if it's well-formed (with region-based\n//\t  // syntax).\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{table_name=regions/*/zones/*/**}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\t<no routing header will be sent>\n//\n// # Sub-example 3c\n//\n// Multiple alternative conflictingly named path templates are\n// specified. The one that matches is used to construct the header.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // Take the `table_name`, if it's well-formed, whether\n//\t  // using the region- or projects-based syntax.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{table_name=regions/*/zones/*/**}\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{table_name=projects/*/instances/*/**}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params:\n//\ttable_name=projects/proj_foo/instances/instance_bar/table/table_baz\n//\n// # Example 4\n//\n// Extracting a single routing header key-value pair by matching a\n// template syntax on (a part of) a single request field.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // Take just the project id from the `table_name` field.\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{routing_id=projects/*}/**\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params: routing_id=projects/proj_foo\n//\n// # Example 5\n//\n// Extracting a single routing header key-value pair by matching\n// several conflictingly named path templates on (parts of) a single request\n// field. The last template to match \"wins\" the conflict.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // If the `table_name` does not have instances information,\n//\t  // take just the project id for routing.\n//\t  // Otherwise take project + instance.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{routing_id=projects/*}/**\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{routing_id=projects/*/instances/*}/**\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params:\n//\trouting_id=projects/proj_foo/instances/instance_bar\n//\n// # Example 6\n//\n// Extracting multiple routing header key-value pairs by matching\n// several non-conflicting path templates on (parts of) a single request field.\n//\n// # Sub-example 6a\n//\n// Make the templates strict, so that if the `table_name` does not\n// have an instance information, nothing is sent.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // The routing code needs two keys instead of one composite\n//\t  // but works only for the tables with the \"project-instance\" name\n//\t  // syntax.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{project_id=projects/*}/instances/*/**\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"projects/*/{instance_id=instances/*}/**\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params:\n//\tproject_id=projects/proj_foo&instance_id=instances/instance_bar\n//\n// # Sub-example 6b\n//\n// Make the templates loose, so that if the `table_name` does not\n// have an instance information, just the project id part is sent.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // The routing code wants two keys instead of one composite\n//\t  // but will work with just the `project_id` for tables without\n//\t  // an instance in the `table_name`.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{project_id=projects/*}/**\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"projects/*/{instance_id=instances/*}/**\"\n//\t  }\n//\t};\n//\n// result (is the same as 6a for our example message because it has the instance\n// information):\n//\n//\tx-goog-request-params:\n//\tproject_id=projects/proj_foo&instance_id=instances/instance_bar\n//\n// # Example 7\n//\n// Extracting multiple routing header key-value pairs by matching\n// several path templates on multiple request fields.\n//\n// NB: note that here there is no way to specify sending nothing if one of the\n// fields does not match its template. E.g. if the `table_name` is in the wrong\n// format, the `project_id` will not be sent, but the `routing_id` will be.\n// The backend routing code has to be aware of that and be prepared to not\n// receive a full complement of keys if it expects multiple.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // The routing needs both `project_id` and `routing_id`\n//\t  // (from the `app_profile_id` field) for routing.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{project_id=projects/*}/**\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"app_profile_id\"\n//\t    path_template: \"{routing_id=**}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params:\n//\tproject_id=projects/proj_foo&routing_id=profiles/prof_qux\n//\n// # Example 8\n//\n// Extracting a single routing header key-value pair by matching\n// several conflictingly named path templates on several request fields. The\n// last template to match \"wins\" the conflict.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // The `routing_id` can be a project id or a region id depending on\n//\t  // the table name format, but only if the `app_profile_id` is not set.\n//\t  // If `app_profile_id` is set it should be used instead.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{routing_id=projects/*}/**\"\n//\t  }\n//\t  routing_parameters {\n//\t     field: \"table_name\"\n//\t     path_template: \"{routing_id=regions/*}/**\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"app_profile_id\"\n//\t    path_template: \"{routing_id=**}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params: routing_id=profiles/prof_qux\n//\n// # Example 9\n//\n// Bringing it all together.\n//\n// annotation:\n//\n//\toption (google.api.routing) = {\n//\t  // For routing both `table_location` and a `routing_id` are needed.\n//\t  //\n//\t  // table_location can be either an instance id or a region+zone id.\n//\t  //\n//\t  // For `routing_id`, take the value of `app_profile_id`\n//\t  // - If it's in the format `profiles/<profile_id>`, send\n//\t  // just the `<profile_id>` part.\n//\t  // - If it's any other literal, send it as is.\n//\t  // If the `app_profile_id` is empty, and the `table_name` starts with\n//\t  // the project_id, send that instead.\n//\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"projects/*/{table_location=instances/*}/tables/*\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{table_location=regions/*/zones/*}/tables/*\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"table_name\"\n//\t    path_template: \"{routing_id=projects/*}/**\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"app_profile_id\"\n//\t    path_template: \"{routing_id=**}\"\n//\t  }\n//\t  routing_parameters {\n//\t    field: \"app_profile_id\"\n//\t    path_template: \"profiles/{routing_id=*}\"\n//\t  }\n//\t};\n//\n// result:\n//\n//\tx-goog-request-params:\n//\ttable_location=instances/instance_bar&routing_id=prof_qux\ntype RoutingRule struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// A collection of Routing Parameter specifications.\n\t// **NOTE:** If multiple Routing Parameters describe the same key\n\t// (via the `path_template` field or via the `field` field when\n\t// `path_template` is not provided), \"last one wins\" rule\n\t// determines which Parameter gets used.\n\t// See the examples for more details.\n\tRoutingParameters []*RoutingParameter `protobuf:\"bytes,2,rep,name=routing_parameters,json=routingParameters,proto3\" json:\"routing_parameters,omitempty\"`\n}\n\nfunc (x *RoutingRule) Reset() {\n\t*x = RoutingRule{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_routing_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RoutingRule) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RoutingRule) ProtoMessage() {}\n\nfunc (x *RoutingRule) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_routing_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RoutingRule.ProtoReflect.Descriptor instead.\nfunc (*RoutingRule) Descriptor() ([]byte, []int) {\n\treturn file_google_api_routing_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *RoutingRule) GetRoutingParameters() []*RoutingParameter {\n\tif x != nil {\n\t\treturn x.RoutingParameters\n\t}\n\treturn nil\n}\n\n// A projection from an input message to the GRPC or REST header.\ntype RoutingParameter struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// A request field to extract the header key-value pair from.\n\tField string `protobuf:\"bytes,1,opt,name=field,proto3\" json:\"field,omitempty\"`\n\t// A pattern matching the key-value field. Optional.\n\t// If not specified, the whole field specified in the `field` field will be\n\t// taken as value, and its name used as key. If specified, it MUST contain\n\t// exactly one named segment (along with any number of unnamed segments) The\n\t// pattern will be matched over the field specified in the `field` field, then\n\t// if the match is successful:\n\t// - the name of the single named segment will be used as a header name,\n\t// - the match value of the segment will be used as a header value;\n\t// if the match is NOT successful, nothing will be sent.\n\t//\n\t// Example:\n\t//\n\t//\t          -- This is a field in the request message\n\t//\t         |   that the header value will be extracted from.\n\t//\t         |\n\t//\t         |                     -- This is the key name in the\n\t//\t         |                    |   routing header.\n\t//\t         V                    |\n\t//\tfield: \"table_name\"           v\n\t//\tpath_template: \"projects/*/{table_location=instances/*}/tables/*\"\n\t//\t                                           ^            ^\n\t//\t                                           |            |\n\t//\t  In the {} brackets is the pattern that --             |\n\t//\t  specifies what to extract from the                    |\n\t//\t  field as a value to be sent.                          |\n\t//\t                                                        |\n\t//\t The string in the field must match the whole pattern --\n\t//\t before brackets, inside brackets, after brackets.\n\t//\n\t// When looking at this specific example, we can see that:\n\t//   - A key-value pair with the key `table_location`\n\t//     and the value matching `instances/*` should be added\n\t//     to the x-goog-request-params routing header.\n\t//   - The value is extracted from the request message's `table_name` field\n\t//     if it matches the full pattern specified:\n\t//     `projects/*/instances/*/tables/*`.\n\t//\n\t// **NB:** If the `path_template` field is not provided, the key name is\n\t// equal to the field name, and the whole field should be sent as a value.\n\t// This makes the pattern for the field and the value functionally equivalent\n\t// to `**`, and the configuration\n\t//\n\t//\t{\n\t//\t  field: \"table_name\"\n\t//\t}\n\t//\n\t// is a functionally equivalent shorthand to:\n\t//\n\t//\t{\n\t//\t  field: \"table_name\"\n\t//\t  path_template: \"{table_name=**}\"\n\t//\t}\n\t//\n\t// See Example 1 for more details.\n\tPathTemplate string `protobuf:\"bytes,2,opt,name=path_template,json=pathTemplate,proto3\" json:\"path_template,omitempty\"`\n}\n\nfunc (x *RoutingParameter) Reset() {\n\t*x = RoutingParameter{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_api_routing_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RoutingParameter) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RoutingParameter) ProtoMessage() {}\n\nfunc (x *RoutingParameter) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_api_routing_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use RoutingParameter.ProtoReflect.Descriptor instead.\nfunc (*RoutingParameter) Descriptor() ([]byte, []int) {\n\treturn file_google_api_routing_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *RoutingParameter) GetField() string {\n\tif x != nil {\n\t\treturn x.Field\n\t}\n\treturn \"\"\n}\n\nfunc (x *RoutingParameter) GetPathTemplate() string {\n\tif x != nil {\n\t\treturn x.PathTemplate\n\t}\n\treturn \"\"\n}\n\nvar file_google_api_routing_proto_extTypes = []protoimpl.ExtensionInfo{\n\t{\n\t\tExtendedType:  (*descriptorpb.MethodOptions)(nil),\n\t\tExtensionType: (*RoutingRule)(nil),\n\t\tField:         72295729,\n\t\tName:          \"google.api.routing\",\n\t\tTag:           \"bytes,72295729,opt,name=routing\",\n\t\tFilename:      \"google/api/routing.proto\",\n\t},\n}\n\n// Extension fields to descriptorpb.MethodOptions.\nvar (\n\t// See RoutingRule.\n\t//\n\t// optional google.api.RoutingRule routing = 72295729;\n\tE_Routing = &file_google_api_routing_proto_extTypes[0]\n)\n\nvar File_google_api_routing_proto protoreflect.FileDescriptor\n\nvar file_google_api_routing_proto_rawDesc = []byte{\n\t0x0a, 0x18, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x6f, 0x75,\n\t0x74, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,\n\t0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5a, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74,\n\t0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x12, 0x72, 0x6f, 0x75, 0x74, 0x69,\n\t0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20,\n\t0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69,\n\t0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65,\n\t0x72, 0x52, 0x11, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,\n\t0x74, 0x65, 0x72, 0x73, 0x22, 0x4d, 0x0a, 0x10, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50,\n\t0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c,\n\t0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x23,\n\t0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18,\n\t0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x54, 0x65, 0x6d, 0x70, 0x6c,\n\t0x61, 0x74, 0x65, 0x3a, 0x54, 0x0a, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1e,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,\n\t0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb1,\n\t0xca, 0xbc, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65,\n\t0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x6a, 0x0a, 0x0e, 0x63, 0x6f, 0x6d,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0c, 0x52, 0x6f, 0x75,\n\t0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67,\n\t0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,\n\t0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02,\n\t0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_routing_proto_rawDescOnce sync.Once\n\tfile_google_api_routing_proto_rawDescData = file_google_api_routing_proto_rawDesc\n)\n\nfunc file_google_api_routing_proto_rawDescGZIP() []byte {\n\tfile_google_api_routing_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_routing_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_routing_proto_rawDescData)\n\t})\n\treturn file_google_api_routing_proto_rawDescData\n}\n\nvar file_google_api_routing_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_google_api_routing_proto_goTypes = []interface{}{\n\t(*RoutingRule)(nil),                // 0: google.api.RoutingRule\n\t(*RoutingParameter)(nil),           // 1: google.api.RoutingParameter\n\t(*descriptorpb.MethodOptions)(nil), // 2: google.protobuf.MethodOptions\n}\nvar file_google_api_routing_proto_depIdxs = []int32{\n\t1, // 0: google.api.RoutingRule.routing_parameters:type_name -> google.api.RoutingParameter\n\t2, // 1: google.api.routing:extendee -> google.protobuf.MethodOptions\n\t0, // 2: google.api.routing:type_name -> google.api.RoutingRule\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t2, // [2:3] is the sub-list for extension type_name\n\t1, // [1:2] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_routing_proto_init() }\nfunc file_google_api_routing_proto_init() {\n\tif File_google_api_routing_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_api_routing_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RoutingRule); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_api_routing_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RoutingParameter); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_routing_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 1,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_routing_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_routing_proto_depIdxs,\n\t\tMessageInfos:      file_google_api_routing_proto_msgTypes,\n\t\tExtensionInfos:    file_google_api_routing_proto_extTypes,\n\t}.Build()\n\tFile_google_api_routing_proto = out.File\n\tfile_google_api_routing_proto_rawDesc = nil\n\tfile_google_api_routing_proto_goTypes = nil\n\tfile_google_api_routing_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/launch_stage.pb.go",
    "content": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v3.21.9\n// source: google/api/launch_stage.proto\n\npackage api\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// The launch stage as defined by [Google Cloud Platform\n// Launch Stages](https://cloud.google.com/terms/launch-stages).\ntype LaunchStage int32\n\nconst (\n\t// Do not use this default value.\n\tLaunchStage_LAUNCH_STAGE_UNSPECIFIED LaunchStage = 0\n\t// The feature is not yet implemented. Users can not use it.\n\tLaunchStage_UNIMPLEMENTED LaunchStage = 6\n\t// Prelaunch features are hidden from users and are only visible internally.\n\tLaunchStage_PRELAUNCH LaunchStage = 7\n\t// Early Access features are limited to a closed group of testers. To use\n\t// these features, you must sign up in advance and sign a Trusted Tester\n\t// agreement (which includes confidentiality provisions). These features may\n\t// be unstable, changed in backward-incompatible ways, and are not\n\t// guaranteed to be released.\n\tLaunchStage_EARLY_ACCESS LaunchStage = 1\n\t// Alpha is a limited availability test for releases before they are cleared\n\t// for widespread use. By Alpha, all significant design issues are resolved\n\t// and we are in the process of verifying functionality. Alpha customers\n\t// need to apply for access, agree to applicable terms, and have their\n\t// projects allowlisted. Alpha releases don't have to be feature complete,\n\t// no SLAs are provided, and there are no technical support obligations, but\n\t// they will be far enough along that customers can actually use them in\n\t// test environments or for limited-use tests -- just like they would in\n\t// normal production cases.\n\tLaunchStage_ALPHA LaunchStage = 2\n\t// Beta is the point at which we are ready to open a release for any\n\t// customer to use. There are no SLA or technical support obligations in a\n\t// Beta release. Products will be complete from a feature perspective, but\n\t// may have some open outstanding issues. Beta releases are suitable for\n\t// limited production use cases.\n\tLaunchStage_BETA LaunchStage = 3\n\t// GA features are open to all developers and are considered stable and\n\t// fully qualified for production use.\n\tLaunchStage_GA LaunchStage = 4\n\t// Deprecated features are scheduled to be shut down and removed. For more\n\t// information, see the \"Deprecation Policy\" section of our [Terms of\n\t// Service](https://cloud.google.com/terms/)\n\t// and the [Google Cloud Platform Subject to the Deprecation\n\t// Policy](https://cloud.google.com/terms/deprecation) documentation.\n\tLaunchStage_DEPRECATED LaunchStage = 5\n)\n\n// Enum value maps for LaunchStage.\nvar (\n\tLaunchStage_name = map[int32]string{\n\t\t0: \"LAUNCH_STAGE_UNSPECIFIED\",\n\t\t6: \"UNIMPLEMENTED\",\n\t\t7: \"PRELAUNCH\",\n\t\t1: \"EARLY_ACCESS\",\n\t\t2: \"ALPHA\",\n\t\t3: \"BETA\",\n\t\t4: \"GA\",\n\t\t5: \"DEPRECATED\",\n\t}\n\tLaunchStage_value = map[string]int32{\n\t\t\"LAUNCH_STAGE_UNSPECIFIED\": 0,\n\t\t\"UNIMPLEMENTED\":            6,\n\t\t\"PRELAUNCH\":                7,\n\t\t\"EARLY_ACCESS\":             1,\n\t\t\"ALPHA\":                    2,\n\t\t\"BETA\":                     3,\n\t\t\"GA\":                       4,\n\t\t\"DEPRECATED\":               5,\n\t}\n)\n\nfunc (x LaunchStage) Enum() *LaunchStage {\n\tp := new(LaunchStage)\n\t*p = x\n\treturn p\n}\n\nfunc (x LaunchStage) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (LaunchStage) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_api_launch_stage_proto_enumTypes[0].Descriptor()\n}\n\nfunc (LaunchStage) Type() protoreflect.EnumType {\n\treturn &file_google_api_launch_stage_proto_enumTypes[0]\n}\n\nfunc (x LaunchStage) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use LaunchStage.Descriptor instead.\nfunc (LaunchStage) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_api_launch_stage_proto_rawDescGZIP(), []int{0}\n}\n\nvar File_google_api_launch_stage_proto protoreflect.FileDescriptor\n\nvar file_google_api_launch_stage_proto_rawDesc = []byte{\n\t0x0a, 0x1d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x61, 0x75,\n\t0x6e, 0x63, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,\n\t0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2a, 0x8c, 0x01, 0x0a, 0x0b,\n\t0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x4c,\n\t0x41, 0x55, 0x4e, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50,\n\t0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x49,\n\t0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x45, 0x44, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09,\n\t0x50, 0x52, 0x45, 0x4c, 0x41, 0x55, 0x4e, 0x43, 0x48, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x45,\n\t0x41, 0x52, 0x4c, 0x59, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x09, 0x0a,\n\t0x05, 0x41, 0x4c, 0x50, 0x48, 0x41, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x45, 0x54, 0x41,\n\t0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x41, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45,\n\t0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x05, 0x42, 0x5a, 0x0a, 0x0e, 0x63, 0x6f,\n\t0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x10, 0x4c, 0x61,\n\t0x75, 0x6e, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,\n\t0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,\n\t0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0xa2,\n\t0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_api_launch_stage_proto_rawDescOnce sync.Once\n\tfile_google_api_launch_stage_proto_rawDescData = file_google_api_launch_stage_proto_rawDesc\n)\n\nfunc file_google_api_launch_stage_proto_rawDescGZIP() []byte {\n\tfile_google_api_launch_stage_proto_rawDescOnce.Do(func() {\n\t\tfile_google_api_launch_stage_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_launch_stage_proto_rawDescData)\n\t})\n\treturn file_google_api_launch_stage_proto_rawDescData\n}\n\nvar file_google_api_launch_stage_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_google_api_launch_stage_proto_goTypes = []interface{}{\n\t(LaunchStage)(0), // 0: google.api.LaunchStage\n}\nvar file_google_api_launch_stage_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_api_launch_stage_proto_init() }\nfunc file_google_api_launch_stage_proto_init() {\n\tif File_google_api_launch_stage_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_api_launch_stage_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_api_launch_stage_proto_goTypes,\n\t\tDependencyIndexes: file_google_api_launch_stage_proto_depIdxs,\n\t\tEnumInfos:         file_google_api_launch_stage_proto_enumTypes,\n\t}.Build()\n\tFile_google_api_launch_stage_proto = out.File\n\tfile_google_api_launch_stage_proto_rawDesc = nil\n\tfile_google_api_launch_stage_proto_goTypes = nil\n\tfile_google_api_launch_stage_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/api/tidyfix.go",
    "content": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// This file, and the {{.RootMod}} import, won't actually become part of\n// the resultant binary.\n//go:build modhack\n// +build modhack\n\npackage api\n\n// Necessary for safely adding multi-module repo. See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository\nimport _ \"google.golang.org/genproto/internal\"\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/rpc/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go",
    "content": "// Copyright 2022 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.26.0\n// \tprotoc        v3.21.9\n// source: google/rpc/status.proto\n\npackage status\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// The `Status` type defines a logical error model that is suitable for\n// different programming environments, including REST APIs and RPC APIs. It is\n// used by [gRPC](https://github.com/grpc). Each `Status` message contains\n// three pieces of data: error code, error message, and error details.\n//\n// You can find out more about this error model and how to work with it in the\n// [API Design Guide](https://cloud.google.com/apis/design/errors).\ntype Status struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The status code, which should be an enum value of\n\t// [google.rpc.Code][google.rpc.Code].\n\tCode int32 `protobuf:\"varint,1,opt,name=code,proto3\" json:\"code,omitempty\"`\n\t// A developer-facing error message, which should be in English. Any\n\t// user-facing error message should be localized and sent in the\n\t// [google.rpc.Status.details][google.rpc.Status.details] field, or localized\n\t// by the client.\n\tMessage string `protobuf:\"bytes,2,opt,name=message,proto3\" json:\"message,omitempty\"`\n\t// A list of messages that carry the error details.  There is a common set of\n\t// message types for APIs to use.\n\tDetails []*anypb.Any `protobuf:\"bytes,3,rep,name=details,proto3\" json:\"details,omitempty\"`\n}\n\nfunc (x *Status) Reset() {\n\t*x = Status{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_rpc_status_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Status) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Status) ProtoMessage() {}\n\nfunc (x *Status) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_rpc_status_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Status.ProtoReflect.Descriptor instead.\nfunc (*Status) Descriptor() ([]byte, []int) {\n\treturn file_google_rpc_status_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Status) GetCode() int32 {\n\tif x != nil {\n\t\treturn x.Code\n\t}\n\treturn 0\n}\n\nfunc (x *Status) GetMessage() string {\n\tif x != nil {\n\t\treturn x.Message\n\t}\n\treturn \"\"\n}\n\nfunc (x *Status) GetDetails() []*anypb.Any {\n\tif x != nil {\n\t\treturn x.Details\n\t}\n\treturn nil\n}\n\nvar File_google_rpc_status_proto protoreflect.FileDescriptor\n\nvar file_google_rpc_status_proto_rawDesc = []byte{\n\t0x0a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61,\n\t0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x72, 0x70, 0x63, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x22, 0x66, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f,\n\t0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18,\n\t0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61,\n\t0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52,\n\t0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x61, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x42, 0x0b, 0x53, 0x74, 0x61, 0x74,\n\t0x75, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,\n\t0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3b, 0x73, 0x74, 0x61, 0x74,\n\t0x75, 0x73, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x52, 0x50, 0x43, 0x62, 0x06, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_rpc_status_proto_rawDescOnce sync.Once\n\tfile_google_rpc_status_proto_rawDescData = file_google_rpc_status_proto_rawDesc\n)\n\nfunc file_google_rpc_status_proto_rawDescGZIP() []byte {\n\tfile_google_rpc_status_proto_rawDescOnce.Do(func() {\n\t\tfile_google_rpc_status_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_rpc_status_proto_rawDescData)\n\t})\n\treturn file_google_rpc_status_proto_rawDescData\n}\n\nvar file_google_rpc_status_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_rpc_status_proto_goTypes = []interface{}{\n\t(*Status)(nil),    // 0: google.rpc.Status\n\t(*anypb.Any)(nil), // 1: google.protobuf.Any\n}\nvar file_google_rpc_status_proto_depIdxs = []int32{\n\t1, // 0: google.rpc.Status.details:type_name -> google.protobuf.Any\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_google_rpc_status_proto_init() }\nfunc file_google_rpc_status_proto_init() {\n\tif File_google_rpc_status_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_rpc_status_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Status); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_rpc_status_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_rpc_status_proto_goTypes,\n\t\tDependencyIndexes: file_google_rpc_status_proto_depIdxs,\n\t\tMessageInfos:      file_google_rpc_status_proto_msgTypes,\n\t}.Build()\n\tFile_google_rpc_status_proto = out.File\n\tfile_google_rpc_status_proto_rawDesc = nil\n\tfile_google_rpc_status_proto_goTypes = nil\n\tfile_google_rpc_status_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/genproto/internal/doc.go",
    "content": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// This file makes internal an importable go package\n// for use with backreferences from submodules.\npackage internal\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/AUTHORS",
    "content": "Google Inc.\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md",
    "content": "## Community Code of Conduct\n\ngRPC follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/CONTRIBUTING.md",
    "content": "# How to contribute\n\nWe definitely welcome your patches and contributions to gRPC! Please read the gRPC\norganization's [governance rules](https://github.com/grpc/grpc-community/blob/master/governance.md)\nand [contribution guidelines](https://github.com/grpc/grpc-community/blob/master/CONTRIBUTING.md) before proceeding.\n\nIf you are new to github, please start by reading [Pull Request howto](https://help.github.com/articles/about-pull-requests/)\n\n## Legal requirements\n\nIn order to protect both you and ourselves, you will need to sign the\n[Contributor License Agreement](https://identity.linuxfoundation.org/projects/cncf).\n\n## Guidelines for Pull Requests\nHow to get your contributions merged smoothly and quickly.\n\n- Create **small PRs** that are narrowly focused on **addressing a single\n  concern**. We often times receive PRs that are trying to fix several things at\n  a time, but only one fix is considered acceptable, nothing gets merged and\n  both author's & review's time is wasted. Create more PRs to address different\n  concerns and everyone will be happy.\n\n- If you are searching for features to work on, issues labeled [Status: Help\n  Wanted](https://github.com/grpc/grpc-go/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22Status%3A+Help+Wanted%22)\n  is a great place to start. These issues are well-documented and usually can be\n  resolved with a single pull request.\n\n- If you are adding a new file, make sure it has the copyright message template \n  at the top as a comment. You can copy over the message from an existing file \n  and update the year.\n\n- The grpc package should only depend on standard Go packages and a small number\n  of exceptions. If your contribution introduces new dependencies which are NOT\n  in the [list](https://godoc.org/google.golang.org/grpc?imports), you need a\n  discussion with gRPC-Go authors and consultants.\n\n- For speculative changes, consider opening an issue and discussing it first. If\n  you are suggesting a behavioral or API change, consider starting with a [gRFC\n  proposal](https://github.com/grpc/proposal).\n\n- Provide a good **PR description** as a record of **what** change is being made\n  and **why** it was made. Link to a github issue if it exists.\n\n- If you want to fix formatting or style, consider whether your changes are an \n  obvious improvement or might be considered a personal preference. If a style \n  change is based on preference, it likely will not be accepted. If it corrects \n  widely agreed-upon anti-patterns, then please do create a PR and explain the \n  benefits of the change.\n\n- Unless your PR is trivial, you should expect there will be reviewer comments\n  that you'll need to address before merging. We'll mark it as `Status: Requires\n  Reporter Clarification` if we expect you to respond to these comments in a\n  timely manner. If the PR remains inactive for 6 days, it will be marked as\n  `stale` and automatically close 7 days after that if we don't hear back from\n  you.\n\n- Maintain **clean commit history** and use **meaningful commit messages**. PRs\n  with messy commit history are difficult to review and won't be merged. Use\n  `rebase -i upstream/master` to curate your commit history and/or to bring in\n  latest changes from master (but avoid rebasing in the middle of a code\n  review).\n\n- Keep your PR up to date with upstream/master (if there are merge conflicts, we\n  can't really merge your change).\n\n- **All tests need to be passing** before your change can be merged. We\n  recommend you **run tests locally** before creating your PR to catch breakages\n  early on.\n  - `VET_SKIP_PROTO=1 ./vet.sh` to catch vet errors\n  - `go test -cpu 1,4 -timeout 7m ./...` to run the tests\n  - `go test -race -cpu 1,4 -timeout 7m ./...` to run tests in race mode\n\n- Exceptions to the rules can be made if there's a compelling reason for doing so.\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/GOVERNANCE.md",
    "content": "This repository is governed by the gRPC organization's [governance rules](https://github.com/grpc/grpc-community/blob/master/governance.md).\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/MAINTAINERS.md",
    "content": "This page lists all active maintainers of this repository. If you were a\nmaintainer and would like to add your name to the Emeritus list, please send us a\nPR.\n\nSee [GOVERNANCE.md](https://github.com/grpc/grpc-community/blob/master/governance.md)\nfor governance guidelines and how to become a maintainer.\nSee [CONTRIBUTING.md](https://github.com/grpc/grpc-community/blob/master/CONTRIBUTING.md)\nfor general contribution guidelines.\n\n## Maintainers (in alphabetical order)\n\n- [cesarghali](https://github.com/cesarghali), Google LLC\n- [dfawley](https://github.com/dfawley), Google LLC\n- [easwars](https://github.com/easwars), Google LLC\n- [menghanl](https://github.com/menghanl), Google LLC\n- [srini100](https://github.com/srini100), Google LLC\n\n## Emeritus Maintainers (in alphabetical order)\n- [adelez](https://github.com/adelez), Google LLC\n- [canguler](https://github.com/canguler), Google LLC\n- [iamqizhao](https://github.com/iamqizhao), Google LLC\n- [jadekler](https://github.com/jadekler), Google LLC\n- [jtattermusch](https://github.com/jtattermusch), Google LLC\n- [lyuxuan](https://github.com/lyuxuan), Google LLC\n- [makmukhi](https://github.com/makmukhi), Google LLC\n- [matt-kwong](https://github.com/matt-kwong), Google LLC\n- [nicolasnoble](https://github.com/nicolasnoble), Google LLC\n- [yongni](https://github.com/yongni), Google LLC\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/Makefile",
    "content": "all: vet test testrace\n\nbuild:\n\tgo build google.golang.org/grpc/...\n\nclean:\n\tgo clean -i google.golang.org/grpc/...\n\ndeps:\n\tGO111MODULE=on go get -d -v google.golang.org/grpc/...\n\nproto:\n\t@ if ! which protoc > /dev/null; then \\\n\t\techo \"error: protoc not installed\" >&2; \\\n\t\texit 1; \\\n\tfi\n\tgo generate google.golang.org/grpc/...\n\ntest:\n\tgo test -cpu 1,4 -timeout 7m google.golang.org/grpc/...\n\ntestsubmodule:\n\tcd security/advancedtls && go test -cpu 1,4 -timeout 7m google.golang.org/grpc/security/advancedtls/...\n\tcd security/authorization && go test -cpu 1,4 -timeout 7m google.golang.org/grpc/security/authorization/...\n\ntestrace:\n\tgo test -race -cpu 1,4 -timeout 7m google.golang.org/grpc/...\n\ntestdeps:\n\tGO111MODULE=on go get -d -v -t google.golang.org/grpc/...\n\nvet: vetdeps\n\t./vet.sh\n\nvetdeps:\n\t./vet.sh -install\n\n.PHONY: \\\n\tall \\\n\tbuild \\\n\tclean \\\n\tproto \\\n\ttest \\\n\ttestrace \\\n\tvet \\\n\tvetdeps\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/NOTICE.txt",
    "content": "Copyright 2014 gRPC authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/README.md",
    "content": "# gRPC-Go\n\n[![GoDoc](https://pkg.go.dev/badge/google.golang.org/grpc)][API]\n[![GoReportCard](https://goreportcard.com/badge/grpc/grpc-go)](https://goreportcard.com/report/github.com/grpc/grpc-go)\n[![codecov](https://codecov.io/gh/grpc/grpc-go/graph/badge.svg)](https://codecov.io/gh/grpc/grpc-go)\n\nThe [Go][] implementation of [gRPC][]: A high performance, open source, general\nRPC framework that puts mobile and HTTP/2 first. For more information see the\n[Go gRPC docs][], or jump directly into the [quick start][].\n\n## Prerequisites\n\n- **[Go][]**: any one of the **three latest major** [releases][go-releases].\n\n## Installation\n\nSimply add the following import to your code, and then `go [build|run|test]`\nwill automatically fetch the necessary dependencies:\n\n\n```go\nimport \"google.golang.org/grpc\"\n```\n\n> **Note:** If you are trying to access `grpc-go` from **China**, see the\n> [FAQ](#FAQ) below.\n\n## Learn more\n\n- [Go gRPC docs][], which include a [quick start][] and [API\n  reference][API] among other resources\n- [Low-level technical docs](Documentation) from this repository\n- [Performance benchmark][]\n- [Examples](examples)\n\n## FAQ\n\n### I/O Timeout Errors\n\nThe `golang.org` domain may be blocked from some countries. `go get` usually\nproduces an error like the following when this happens:\n\n```console\n$ go get -u google.golang.org/grpc\npackage google.golang.org/grpc: unrecognized import path \"google.golang.org/grpc\" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)\n```\n\nTo build Go code, there are several options:\n\n- Set up a VPN and access google.golang.org through that.\n\n- With Go module support: it is possible to use the `replace` feature of `go\n  mod` to create aliases for golang.org packages.  In your project's directory:\n\n  ```sh\n  go mod edit -replace=google.golang.org/grpc=github.com/grpc/grpc-go@latest\n  go mod tidy\n  go mod vendor\n  go build -mod=vendor\n  ```\n\n  Again, this will need to be done for all transitive dependencies hosted on\n  golang.org as well. For details, refer to [golang/go issue\n  #28652](https://github.com/golang/go/issues/28652).\n\n### Compiling error, undefined: grpc.SupportPackageIsVersion\n\nPlease update to the latest version of gRPC-Go using\n`go get google.golang.org/grpc`.\n\n### How to turn on logging\n\nThe default logger is controlled by environment variables. Turn everything on\nlike this:\n\n```console\n$ export GRPC_GO_LOG_VERBOSITY_LEVEL=99\n$ export GRPC_GO_LOG_SEVERITY_LEVEL=info\n```\n\n### The RPC failed with error `\"code = Unavailable desc = transport is closing\"`\n\nThis error means the connection the RPC is using was closed, and there are many\npossible reasons, including:\n 1. mis-configured transport credentials, connection failed on handshaking\n 1. bytes disrupted, possibly by a proxy in between\n 1. server shutdown\n 1. Keepalive parameters caused connection shutdown, for example if you have\n    configured your server to terminate connections regularly to [trigger DNS\n    lookups](https://github.com/grpc/grpc-go/issues/3170#issuecomment-552517779).\n    If this is the case, you may want to increase your\n    [MaxConnectionAgeGrace](https://pkg.go.dev/google.golang.org/grpc/keepalive?tab=doc#ServerParameters),\n    to allow longer RPC calls to finish.\n\nIt can be tricky to debug this because the error happens on the client side but\nthe root cause of the connection being closed is on the server side. Turn on\nlogging on __both client and server__, and see if there are any transport\nerrors.\n\n[API]: https://pkg.go.dev/google.golang.org/grpc\n[Go]: https://golang.org\n[Go module]: https://github.com/golang/go/wiki/Modules\n[gRPC]: https://grpc.io\n[Go gRPC docs]: https://grpc.io/docs/languages/go\n[Performance benchmark]: https://performance-dot-grpc-testing.appspot.com/explore?dashboard=5180705743044608\n[quick start]: https://grpc.io/docs/languages/go/quickstart\n[go-releases]: https://golang.org/doc/devel/release.html\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/SECURITY.md",
    "content": "# Security Policy\n\nFor information on gRPC Security Policy and reporting potentional security issues, please see [gRPC CVE Process](https://github.com/grpc/proposal/blob/master/P4-grpc-cve-process.md).\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/attributes/attributes.go",
    "content": "/*\n *\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package attributes defines a generic key/value store used in various gRPC\n// components.\n//\n// # Experimental\n//\n// Notice: This package is EXPERIMENTAL and may be changed or removed in a\n// later release.\npackage attributes\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// Attributes is an immutable struct for storing and retrieving generic\n// key/value pairs.  Keys must be hashable, and users should define their own\n// types for keys.  Values should not be modified after they are added to an\n// Attributes or if they were received from one.  If values implement 'Equal(o\n// any) bool', it will be called by (*Attributes).Equal to determine whether\n// two values with the same key should be considered equal.\ntype Attributes struct {\n\tm map[any]any\n}\n\n// New returns a new Attributes containing the key/value pair.\nfunc New(key, value any) *Attributes {\n\treturn &Attributes{m: map[any]any{key: value}}\n}\n\n// WithValue returns a new Attributes containing the previous keys and values\n// and the new key/value pair.  If the same key appears multiple times, the\n// last value overwrites all previous values for that key.  To remove an\n// existing key, use a nil value.  value should not be modified later.\nfunc (a *Attributes) WithValue(key, value any) *Attributes {\n\tif a == nil {\n\t\treturn New(key, value)\n\t}\n\tn := &Attributes{m: make(map[any]any, len(a.m)+1)}\n\tfor k, v := range a.m {\n\t\tn.m[k] = v\n\t}\n\tn.m[key] = value\n\treturn n\n}\n\n// Value returns the value associated with these attributes for key, or nil if\n// no value is associated with key.  The returned value should not be modified.\nfunc (a *Attributes) Value(key any) any {\n\tif a == nil {\n\t\treturn nil\n\t}\n\treturn a.m[key]\n}\n\n// Equal returns whether a and o are equivalent.  If 'Equal(o any) bool' is\n// implemented for a value in the attributes, it is called to determine if the\n// value matches the one stored in the other attributes.  If Equal is not\n// implemented, standard equality is used to determine if the two values are\n// equal. Note that some types (e.g. maps) aren't comparable by default, so\n// they must be wrapped in a struct, or in an alias type, with Equal defined.\nfunc (a *Attributes) Equal(o *Attributes) bool {\n\tif a == nil && o == nil {\n\t\treturn true\n\t}\n\tif a == nil || o == nil {\n\t\treturn false\n\t}\n\tif len(a.m) != len(o.m) {\n\t\treturn false\n\t}\n\tfor k, v := range a.m {\n\t\tov, ok := o.m[k]\n\t\tif !ok {\n\t\t\t// o missing element of a\n\t\t\treturn false\n\t\t}\n\t\tif eq, ok := v.(interface{ Equal(o any) bool }); ok {\n\t\t\tif !eq.Equal(ov) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else if v != ov {\n\t\t\t// Fallback to a standard equality check if Value is unimplemented.\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// String prints the attribute map. If any key or values throughout the map\n// implement fmt.Stringer, it calls that method and appends.\nfunc (a *Attributes) String() string {\n\tvar sb strings.Builder\n\tsb.WriteString(\"{\")\n\tfirst := true\n\tfor k, v := range a.m {\n\t\tif !first {\n\t\t\tsb.WriteString(\", \")\n\t\t}\n\t\tsb.WriteString(fmt.Sprintf(\"%q: %q \", str(k), str(v)))\n\t\tfirst = false\n\t}\n\tsb.WriteString(\"}\")\n\treturn sb.String()\n}\n\nfunc str(x any) (s string) {\n\tif v, ok := x.(fmt.Stringer); ok {\n\t\treturn fmt.Sprint(v)\n\t} else if v, ok := x.(string); ok {\n\t\treturn v\n\t}\n\treturn fmt.Sprintf(\"<%p>\", x)\n}\n\n// MarshalJSON helps implement the json.Marshaler interface, thereby rendering\n// the Attributes correctly when printing (via pretty.JSON) structs containing\n// Attributes as fields.\n//\n// Is it impossible to unmarshal attributes from a JSON representation and this\n// method is meant only for debugging purposes.\nfunc (a *Attributes) MarshalJSON() ([]byte, error) {\n\treturn []byte(a.String()), nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/backoff/backoff.go",
    "content": "/*\n *\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package backoff provides configuration options for backoff.\n//\n// More details can be found at:\n// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.\n//\n// All APIs in this package are experimental.\npackage backoff\n\nimport \"time\"\n\n// Config defines the configuration options for backoff.\ntype Config struct {\n\t// BaseDelay is the amount of time to backoff after the first failure.\n\tBaseDelay time.Duration\n\t// Multiplier is the factor with which to multiply backoffs after a\n\t// failed retry. Should ideally be greater than 1.\n\tMultiplier float64\n\t// Jitter is the factor with which backoffs are randomized.\n\tJitter float64\n\t// MaxDelay is the upper bound of backoff delay.\n\tMaxDelay time.Duration\n}\n\n// DefaultConfig is a backoff configuration with the default values specfied\n// at https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.\n//\n// This should be useful for callers who want to configure backoff with\n// non-default values only for a subset of the options.\nvar DefaultConfig = Config{\n\tBaseDelay:  1.0 * time.Second,\n\tMultiplier: 1.6,\n\tJitter:     0.2,\n\tMaxDelay:   120 * time.Second,\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/backoff.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// See internal/backoff package for the backoff implementation. This file is\n// kept for the exported types and API backward compatibility.\n\npackage grpc\n\nimport (\n\t\"time\"\n\n\t\"google.golang.org/grpc/backoff\"\n)\n\n// DefaultBackoffConfig uses values specified for backoff in\n// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.\n//\n// Deprecated: use ConnectParams instead. Will be supported throughout 1.x.\nvar DefaultBackoffConfig = BackoffConfig{\n\tMaxDelay: 120 * time.Second,\n}\n\n// BackoffConfig defines the parameters for the default gRPC backoff strategy.\n//\n// Deprecated: use ConnectParams instead. Will be supported throughout 1.x.\ntype BackoffConfig struct {\n\t// MaxDelay is the upper bound of backoff delay.\n\tMaxDelay time.Duration\n}\n\n// ConnectParams defines the parameters for connecting and retrying. Users are\n// encouraged to use this instead of the BackoffConfig type defined above. See\n// here for more details:\n// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype ConnectParams struct {\n\t// Backoff specifies the configuration options for connection backoff.\n\tBackoff backoff.Config\n\t// MinConnectTimeout is the minimum amount of time we are willing to give a\n\t// connection to complete.\n\tMinConnectTimeout time.Duration\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/balancer.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package balancer defines APIs for load balancing in gRPC.\n// All APIs in this package are experimental.\npackage balancer\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"net\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/channelz\"\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nvar (\n\t// m is a map from name to balancer builder.\n\tm = make(map[string]Builder)\n\n\tlogger = grpclog.Component(\"balancer\")\n)\n\n// Register registers the balancer builder to the balancer map. b.Name\n// (lowercased) will be used as the name registered with this builder.  If the\n// Builder implements ConfigParser, ParseConfig will be called when new service\n// configs are received by the resolver, and the result will be provided to the\n// Balancer in UpdateClientConnState.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. If multiple Balancers are\n// registered with the same name, the one registered last will take effect.\nfunc Register(b Builder) {\n\tif strings.ToLower(b.Name()) != b.Name() {\n\t\t// TODO: Skip the use of strings.ToLower() to index the map after v1.59\n\t\t// is released to switch to case sensitive balancer registry. Also,\n\t\t// remove this warning and update the docstrings for Register and Get.\n\t\tlogger.Warningf(\"Balancer registered with name %q. grpc-go will be switching to case sensitive balancer registries soon\", b.Name())\n\t}\n\tm[strings.ToLower(b.Name())] = b\n}\n\n// unregisterForTesting deletes the balancer with the given name from the\n// balancer map.\n//\n// This function is not thread-safe.\nfunc unregisterForTesting(name string) {\n\tdelete(m, name)\n}\n\nfunc init() {\n\tinternal.BalancerUnregister = unregisterForTesting\n}\n\n// Get returns the resolver builder registered with the given name.\n// Note that the compare is done in a case-insensitive fashion.\n// If no builder is register with the name, nil will be returned.\nfunc Get(name string) Builder {\n\tif strings.ToLower(name) != name {\n\t\t// TODO: Skip the use of strings.ToLower() to index the map after v1.59\n\t\t// is released to switch to case sensitive balancer registry. Also,\n\t\t// remove this warning and update the docstrings for Register and Get.\n\t\tlogger.Warningf(\"Balancer retrieved for name %q. grpc-go will be switching to case sensitive balancer registries soon\", name)\n\t}\n\tif b, ok := m[strings.ToLower(name)]; ok {\n\t\treturn b\n\t}\n\treturn nil\n}\n\n// A SubConn represents a single connection to a gRPC backend service.\n//\n// Each SubConn contains a list of addresses.\n//\n// All SubConns start in IDLE, and will not try to connect. To trigger the\n// connecting, Balancers must call Connect.  If a connection re-enters IDLE,\n// Balancers must call Connect again to trigger a new connection attempt.\n//\n// gRPC will try to connect to the addresses in sequence, and stop trying the\n// remainder once the first connection is successful. If an attempt to connect\n// to all addresses encounters an error, the SubConn will enter\n// TRANSIENT_FAILURE for a backoff period, and then transition to IDLE.\n//\n// Once established, if a connection is lost, the SubConn will transition\n// directly to IDLE.\n//\n// This interface is to be implemented by gRPC. Users should not need their own\n// implementation of this interface. For situations like testing, any\n// implementations should embed this interface. This allows gRPC to add new\n// methods to this interface.\ntype SubConn interface {\n\t// UpdateAddresses updates the addresses used in this SubConn.\n\t// gRPC checks if currently-connected address is still in the new list.\n\t// If it's in the list, the connection will be kept.\n\t// If it's not in the list, the connection will gracefully closed, and\n\t// a new connection will be created.\n\t//\n\t// This will trigger a state transition for the SubConn.\n\t//\n\t// Deprecated: this method will be removed.  Create new SubConns for new\n\t// addresses instead.\n\tUpdateAddresses([]resolver.Address)\n\t// Connect starts the connecting for this SubConn.\n\tConnect()\n\t// GetOrBuildProducer returns a reference to the existing Producer for this\n\t// ProducerBuilder in this SubConn, or, if one does not currently exist,\n\t// creates a new one and returns it.  Returns a close function which must\n\t// be called when the Producer is no longer needed.\n\tGetOrBuildProducer(ProducerBuilder) (p Producer, close func())\n\t// Shutdown shuts down the SubConn gracefully.  Any started RPCs will be\n\t// allowed to complete.  No future calls should be made on the SubConn.\n\t// One final state update will be delivered to the StateListener (or\n\t// UpdateSubConnState; deprecated) with ConnectivityState of Shutdown to\n\t// indicate the shutdown operation.  This may be delivered before\n\t// in-progress RPCs are complete and the actual connection is closed.\n\tShutdown()\n}\n\n// NewSubConnOptions contains options to create new SubConn.\ntype NewSubConnOptions struct {\n\t// CredsBundle is the credentials bundle that will be used in the created\n\t// SubConn. If it's nil, the original creds from grpc DialOptions will be\n\t// used.\n\t//\n\t// Deprecated: Use the Attributes field in resolver.Address to pass\n\t// arbitrary data to the credential handshaker.\n\tCredsBundle credentials.Bundle\n\t// HealthCheckEnabled indicates whether health check service should be\n\t// enabled on this SubConn\n\tHealthCheckEnabled bool\n\t// StateListener is called when the state of the subconn changes.  If nil,\n\t// Balancer.UpdateSubConnState will be called instead.  Will never be\n\t// invoked until after Connect() is called on the SubConn created with\n\t// these options.\n\tStateListener func(SubConnState)\n}\n\n// State contains the balancer's state relevant to the gRPC ClientConn.\ntype State struct {\n\t// State contains the connectivity state of the balancer, which is used to\n\t// determine the state of the ClientConn.\n\tConnectivityState connectivity.State\n\t// Picker is used to choose connections (SubConns) for RPCs.\n\tPicker Picker\n}\n\n// ClientConn represents a gRPC ClientConn.\n//\n// This interface is to be implemented by gRPC. Users should not need a\n// brand new implementation of this interface. For the situations like\n// testing, the new implementation should embed this interface. This allows\n// gRPC to add new methods to this interface.\ntype ClientConn interface {\n\t// NewSubConn is called by balancer to create a new SubConn.\n\t// It doesn't block and wait for the connections to be established.\n\t// Behaviors of the SubConn can be controlled by options.\n\t//\n\t// Deprecated: please be aware that in a future version, SubConns will only\n\t// support one address per SubConn.\n\tNewSubConn([]resolver.Address, NewSubConnOptions) (SubConn, error)\n\t// RemoveSubConn removes the SubConn from ClientConn.\n\t// The SubConn will be shutdown.\n\t//\n\t// Deprecated: use SubConn.Shutdown instead.\n\tRemoveSubConn(SubConn)\n\t// UpdateAddresses updates the addresses used in the passed in SubConn.\n\t// gRPC checks if the currently connected address is still in the new list.\n\t// If so, the connection will be kept. Else, the connection will be\n\t// gracefully closed, and a new connection will be created.\n\t//\n\t// This may trigger a state transition for the SubConn.\n\t//\n\t// Deprecated: this method will be removed.  Create new SubConns for new\n\t// addresses instead.\n\tUpdateAddresses(SubConn, []resolver.Address)\n\n\t// UpdateState notifies gRPC that the balancer's internal state has\n\t// changed.\n\t//\n\t// gRPC will update the connectivity state of the ClientConn, and will call\n\t// Pick on the new Picker to pick new SubConns.\n\tUpdateState(State)\n\n\t// ResolveNow is called by balancer to notify gRPC to do a name resolving.\n\tResolveNow(resolver.ResolveNowOptions)\n\n\t// Target returns the dial target for this ClientConn.\n\t//\n\t// Deprecated: Use the Target field in the BuildOptions instead.\n\tTarget() string\n}\n\n// BuildOptions contains additional information for Build.\ntype BuildOptions struct {\n\t// DialCreds is the transport credentials to use when communicating with a\n\t// remote load balancer server. Balancer implementations which do not\n\t// communicate with a remote load balancer server can ignore this field.\n\tDialCreds credentials.TransportCredentials\n\t// CredsBundle is the credentials bundle to use when communicating with a\n\t// remote load balancer server. Balancer implementations which do not\n\t// communicate with a remote load balancer server can ignore this field.\n\tCredsBundle credentials.Bundle\n\t// Dialer is the custom dialer to use when communicating with a remote load\n\t// balancer server. Balancer implementations which do not communicate with a\n\t// remote load balancer server can ignore this field.\n\tDialer func(context.Context, string) (net.Conn, error)\n\t// Authority is the server name to use as part of the authentication\n\t// handshake when communicating with a remote load balancer server. Balancer\n\t// implementations which do not communicate with a remote load balancer\n\t// server can ignore this field.\n\tAuthority string\n\t// ChannelzParentID is the parent ClientConn's channelz ID.\n\tChannelzParentID *channelz.Identifier\n\t// CustomUserAgent is the custom user agent set on the parent ClientConn.\n\t// The balancer should set the same custom user agent if it creates a\n\t// ClientConn.\n\tCustomUserAgent string\n\t// Target contains the parsed address info of the dial target. It is the\n\t// same resolver.Target as passed to the resolver. See the documentation for\n\t// the resolver.Target type for details about what it contains.\n\tTarget resolver.Target\n}\n\n// Builder creates a balancer.\ntype Builder interface {\n\t// Build creates a new balancer with the ClientConn.\n\tBuild(cc ClientConn, opts BuildOptions) Balancer\n\t// Name returns the name of balancers built by this builder.\n\t// It will be used to pick balancers (for example in service config).\n\tName() string\n}\n\n// ConfigParser parses load balancer configs.\ntype ConfigParser interface {\n\t// ParseConfig parses the JSON load balancer config provided into an\n\t// internal form or returns an error if the config is invalid.  For future\n\t// compatibility reasons, unknown fields in the config should be ignored.\n\tParseConfig(LoadBalancingConfigJSON json.RawMessage) (serviceconfig.LoadBalancingConfig, error)\n}\n\n// PickInfo contains additional information for the Pick operation.\ntype PickInfo struct {\n\t// FullMethodName is the method name that NewClientStream() is called\n\t// with. The canonical format is /service/Method.\n\tFullMethodName string\n\t// Ctx is the RPC's context, and may contain relevant RPC-level information\n\t// like the outgoing header metadata.\n\tCtx context.Context\n}\n\n// DoneInfo contains additional information for done.\ntype DoneInfo struct {\n\t// Err is the rpc error the RPC finished with. It could be nil.\n\tErr error\n\t// Trailer contains the metadata from the RPC's trailer, if present.\n\tTrailer metadata.MD\n\t// BytesSent indicates if any bytes have been sent to the server.\n\tBytesSent bool\n\t// BytesReceived indicates if any byte has been received from the server.\n\tBytesReceived bool\n\t// ServerLoad is the load received from server. It's usually sent as part of\n\t// trailing metadata.\n\t//\n\t// The only supported type now is *orca_v3.LoadReport.\n\tServerLoad any\n}\n\nvar (\n\t// ErrNoSubConnAvailable indicates no SubConn is available for pick().\n\t// gRPC will block the RPC until a new picker is available via UpdateState().\n\tErrNoSubConnAvailable = errors.New(\"no SubConn is available\")\n\t// ErrTransientFailure indicates all SubConns are in TransientFailure.\n\t// WaitForReady RPCs will block, non-WaitForReady RPCs will fail.\n\t//\n\t// Deprecated: return an appropriate error based on the last resolution or\n\t// connection attempt instead.  The behavior is the same for any non-gRPC\n\t// status error.\n\tErrTransientFailure = errors.New(\"all SubConns are in TransientFailure\")\n)\n\n// PickResult contains information related to a connection chosen for an RPC.\ntype PickResult struct {\n\t// SubConn is the connection to use for this pick, if its state is Ready.\n\t// If the state is not Ready, gRPC will block the RPC until a new Picker is\n\t// provided by the balancer (using ClientConn.UpdateState).  The SubConn\n\t// must be one returned by ClientConn.NewSubConn.\n\tSubConn SubConn\n\n\t// Done is called when the RPC is completed.  If the SubConn is not ready,\n\t// this will be called with a nil parameter.  If the SubConn is not a valid\n\t// type, Done may not be called.  May be nil if the balancer does not wish\n\t// to be notified when the RPC completes.\n\tDone func(DoneInfo)\n\n\t// Metadata provides a way for LB policies to inject arbitrary per-call\n\t// metadata. Any metadata returned here will be merged with existing\n\t// metadata added by the client application.\n\t//\n\t// LB policies with child policies are responsible for propagating metadata\n\t// injected by their children to the ClientConn, as part of Pick().\n\tMetadata metadata.MD\n}\n\n// TransientFailureError returns e.  It exists for backward compatibility and\n// will be deleted soon.\n//\n// Deprecated: no longer necessary, picker errors are treated this way by\n// default.\nfunc TransientFailureError(e error) error { return e }\n\n// Picker is used by gRPC to pick a SubConn to send an RPC.\n// Balancer is expected to generate a new picker from its snapshot every time its\n// internal state has changed.\n//\n// The pickers used by gRPC can be updated by ClientConn.UpdateState().\ntype Picker interface {\n\t// Pick returns the connection to use for this RPC and related information.\n\t//\n\t// Pick should not block.  If the balancer needs to do I/O or any blocking\n\t// or time-consuming work to service this call, it should return\n\t// ErrNoSubConnAvailable, and the Pick call will be repeated by gRPC when\n\t// the Picker is updated (using ClientConn.UpdateState).\n\t//\n\t// If an error is returned:\n\t//\n\t// - If the error is ErrNoSubConnAvailable, gRPC will block until a new\n\t//   Picker is provided by the balancer (using ClientConn.UpdateState).\n\t//\n\t// - If the error is a status error (implemented by the grpc/status\n\t//   package), gRPC will terminate the RPC with the code and message\n\t//   provided.\n\t//\n\t// - For all other errors, wait for ready RPCs will wait, but non-wait for\n\t//   ready RPCs will be terminated with this error's Error() string and\n\t//   status code Unavailable.\n\tPick(info PickInfo) (PickResult, error)\n}\n\n// Balancer takes input from gRPC, manages SubConns, and collects and aggregates\n// the connectivity states.\n//\n// It also generates and updates the Picker used by gRPC to pick SubConns for RPCs.\n//\n// UpdateClientConnState, ResolverError, UpdateSubConnState, and Close are\n// guaranteed to be called synchronously from the same goroutine.  There's no\n// guarantee on picker.Pick, it may be called anytime.\ntype Balancer interface {\n\t// UpdateClientConnState is called by gRPC when the state of the ClientConn\n\t// changes.  If the error returned is ErrBadResolverState, the ClientConn\n\t// will begin calling ResolveNow on the active name resolver with\n\t// exponential backoff until a subsequent call to UpdateClientConnState\n\t// returns a nil error.  Any other errors are currently ignored.\n\tUpdateClientConnState(ClientConnState) error\n\t// ResolverError is called by gRPC when the name resolver reports an error.\n\tResolverError(error)\n\t// UpdateSubConnState is called by gRPC when the state of a SubConn\n\t// changes.\n\t//\n\t// Deprecated: Use NewSubConnOptions.StateListener when creating the\n\t// SubConn instead.\n\tUpdateSubConnState(SubConn, SubConnState)\n\t// Close closes the balancer. The balancer is not currently required to\n\t// call SubConn.Shutdown for its existing SubConns; however, this will be\n\t// required in a future release, so it is recommended.\n\tClose()\n}\n\n// ExitIdler is an optional interface for balancers to implement.  If\n// implemented, ExitIdle will be called when ClientConn.Connect is called, if\n// the ClientConn is idle.  If unimplemented, ClientConn.Connect will cause\n// all SubConns to connect.\n//\n// Notice: it will be required for all balancers to implement this in a future\n// release.\ntype ExitIdler interface {\n\t// ExitIdle instructs the LB policy to reconnect to backends / exit the\n\t// IDLE state, if appropriate and possible.  Note that SubConns that enter\n\t// the IDLE state will not reconnect until SubConn.Connect is called.\n\tExitIdle()\n}\n\n// SubConnState describes the state of a SubConn.\ntype SubConnState struct {\n\t// ConnectivityState is the connectivity state of the SubConn.\n\tConnectivityState connectivity.State\n\t// ConnectionError is set if the ConnectivityState is TransientFailure,\n\t// describing the reason the SubConn failed.  Otherwise, it is nil.\n\tConnectionError error\n}\n\n// ClientConnState describes the state of a ClientConn relevant to the\n// balancer.\ntype ClientConnState struct {\n\tResolverState resolver.State\n\t// The parsed load balancing configuration returned by the builder's\n\t// ParseConfig method, if implemented.\n\tBalancerConfig serviceconfig.LoadBalancingConfig\n}\n\n// ErrBadResolverState may be returned by UpdateClientConnState to indicate a\n// problem with the provided name resolver data.\nvar ErrBadResolverState = errors.New(\"bad resolver state\")\n\n// A ProducerBuilder is a simple constructor for a Producer.  It is used by the\n// SubConn to create producers when needed.\ntype ProducerBuilder interface {\n\t// Build creates a Producer.  The first parameter is always a\n\t// grpc.ClientConnInterface (a type to allow creating RPCs/streams on the\n\t// associated SubConn), but is declared as `any` to avoid a dependency\n\t// cycle.  Should also return a close function that will be called when all\n\t// references to the Producer have been given up.\n\tBuild(grpcClientConnInterface any) (p Producer, close func())\n}\n\n// A Producer is a type shared among potentially many consumers.  It is\n// associated with a SubConn, and an implementation will typically contain\n// other methods to provide additional functionality, e.g. configuration or\n// subscription registration.\ntype Producer any\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/base/balancer.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage base\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\nvar logger = grpclog.Component(\"balancer\")\n\ntype baseBuilder struct {\n\tname          string\n\tpickerBuilder PickerBuilder\n\tconfig        Config\n}\n\nfunc (bb *baseBuilder) Build(cc balancer.ClientConn, opt balancer.BuildOptions) balancer.Balancer {\n\tbal := &baseBalancer{\n\t\tcc:            cc,\n\t\tpickerBuilder: bb.pickerBuilder,\n\n\t\tsubConns: resolver.NewAddressMap(),\n\t\tscStates: make(map[balancer.SubConn]connectivity.State),\n\t\tcsEvltr:  &balancer.ConnectivityStateEvaluator{},\n\t\tconfig:   bb.config,\n\t\tstate:    connectivity.Connecting,\n\t}\n\t// Initialize picker to a picker that always returns\n\t// ErrNoSubConnAvailable, because when state of a SubConn changes, we\n\t// may call UpdateState with this picker.\n\tbal.picker = NewErrPicker(balancer.ErrNoSubConnAvailable)\n\treturn bal\n}\n\nfunc (bb *baseBuilder) Name() string {\n\treturn bb.name\n}\n\ntype baseBalancer struct {\n\tcc            balancer.ClientConn\n\tpickerBuilder PickerBuilder\n\n\tcsEvltr *balancer.ConnectivityStateEvaluator\n\tstate   connectivity.State\n\n\tsubConns *resolver.AddressMap\n\tscStates map[balancer.SubConn]connectivity.State\n\tpicker   balancer.Picker\n\tconfig   Config\n\n\tresolverErr error // the last error reported by the resolver; cleared on successful resolution\n\tconnErr     error // the last connection error; cleared upon leaving TransientFailure\n}\n\nfunc (b *baseBalancer) ResolverError(err error) {\n\tb.resolverErr = err\n\tif b.subConns.Len() == 0 {\n\t\tb.state = connectivity.TransientFailure\n\t}\n\n\tif b.state != connectivity.TransientFailure {\n\t\t// The picker will not change since the balancer does not currently\n\t\t// report an error.\n\t\treturn\n\t}\n\tb.regeneratePicker()\n\tb.cc.UpdateState(balancer.State{\n\t\tConnectivityState: b.state,\n\t\tPicker:            b.picker,\n\t})\n}\n\nfunc (b *baseBalancer) UpdateClientConnState(s balancer.ClientConnState) error {\n\t// TODO: handle s.ResolverState.ServiceConfig?\n\tif logger.V(2) {\n\t\tlogger.Info(\"base.baseBalancer: got new ClientConn state: \", s)\n\t}\n\t// Successful resolution; clear resolver error and ensure we return nil.\n\tb.resolverErr = nil\n\t// addrsSet is the set converted from addrs, it's used for quick lookup of an address.\n\taddrsSet := resolver.NewAddressMap()\n\tfor _, a := range s.ResolverState.Addresses {\n\t\taddrsSet.Set(a, nil)\n\t\tif _, ok := b.subConns.Get(a); !ok {\n\t\t\t// a is a new address (not existing in b.subConns).\n\t\t\tvar sc balancer.SubConn\n\t\t\topts := balancer.NewSubConnOptions{\n\t\t\t\tHealthCheckEnabled: b.config.HealthCheck,\n\t\t\t\tStateListener:      func(scs balancer.SubConnState) { b.updateSubConnState(sc, scs) },\n\t\t\t}\n\t\t\tsc, err := b.cc.NewSubConn([]resolver.Address{a}, opts)\n\t\t\tif err != nil {\n\t\t\t\tlogger.Warningf(\"base.baseBalancer: failed to create new SubConn: %v\", err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tb.subConns.Set(a, sc)\n\t\t\tb.scStates[sc] = connectivity.Idle\n\t\t\tb.csEvltr.RecordTransition(connectivity.Shutdown, connectivity.Idle)\n\t\t\tsc.Connect()\n\t\t}\n\t}\n\tfor _, a := range b.subConns.Keys() {\n\t\tsci, _ := b.subConns.Get(a)\n\t\tsc := sci.(balancer.SubConn)\n\t\t// a was removed by resolver.\n\t\tif _, ok := addrsSet.Get(a); !ok {\n\t\t\tsc.Shutdown()\n\t\t\tb.subConns.Delete(a)\n\t\t\t// Keep the state of this sc in b.scStates until sc's state becomes Shutdown.\n\t\t\t// The entry will be deleted in updateSubConnState.\n\t\t}\n\t}\n\t// If resolver state contains no addresses, return an error so ClientConn\n\t// will trigger re-resolve. Also records this as an resolver error, so when\n\t// the overall state turns transient failure, the error message will have\n\t// the zero address information.\n\tif len(s.ResolverState.Addresses) == 0 {\n\t\tb.ResolverError(errors.New(\"produced zero addresses\"))\n\t\treturn balancer.ErrBadResolverState\n\t}\n\n\tb.regeneratePicker()\n\tb.cc.UpdateState(balancer.State{ConnectivityState: b.state, Picker: b.picker})\n\treturn nil\n}\n\n// mergeErrors builds an error from the last connection error and the last\n// resolver error.  Must only be called if b.state is TransientFailure.\nfunc (b *baseBalancer) mergeErrors() error {\n\t// connErr must always be non-nil unless there are no SubConns, in which\n\t// case resolverErr must be non-nil.\n\tif b.connErr == nil {\n\t\treturn fmt.Errorf(\"last resolver error: %v\", b.resolverErr)\n\t}\n\tif b.resolverErr == nil {\n\t\treturn fmt.Errorf(\"last connection error: %v\", b.connErr)\n\t}\n\treturn fmt.Errorf(\"last connection error: %v; last resolver error: %v\", b.connErr, b.resolverErr)\n}\n\n// regeneratePicker takes a snapshot of the balancer, and generates a picker\n// from it. The picker is\n//   - errPicker if the balancer is in TransientFailure,\n//   - built by the pickerBuilder with all READY SubConns otherwise.\nfunc (b *baseBalancer) regeneratePicker() {\n\tif b.state == connectivity.TransientFailure {\n\t\tb.picker = NewErrPicker(b.mergeErrors())\n\t\treturn\n\t}\n\treadySCs := make(map[balancer.SubConn]SubConnInfo)\n\n\t// Filter out all ready SCs from full subConn map.\n\tfor _, addr := range b.subConns.Keys() {\n\t\tsci, _ := b.subConns.Get(addr)\n\t\tsc := sci.(balancer.SubConn)\n\t\tif st, ok := b.scStates[sc]; ok && st == connectivity.Ready {\n\t\t\treadySCs[sc] = SubConnInfo{Address: addr}\n\t\t}\n\t}\n\tb.picker = b.pickerBuilder.Build(PickerBuildInfo{ReadySCs: readySCs})\n}\n\n// UpdateSubConnState is a nop because a StateListener is always set in NewSubConn.\nfunc (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.SubConnState) {\n\tlogger.Errorf(\"base.baseBalancer: UpdateSubConnState(%v, %+v) called unexpectedly\", sc, state)\n}\n\nfunc (b *baseBalancer) updateSubConnState(sc balancer.SubConn, state balancer.SubConnState) {\n\ts := state.ConnectivityState\n\tif logger.V(2) {\n\t\tlogger.Infof(\"base.baseBalancer: handle SubConn state change: %p, %v\", sc, s)\n\t}\n\toldS, ok := b.scStates[sc]\n\tif !ok {\n\t\tif logger.V(2) {\n\t\t\tlogger.Infof(\"base.baseBalancer: got state changes for an unknown SubConn: %p, %v\", sc, s)\n\t\t}\n\t\treturn\n\t}\n\tif oldS == connectivity.TransientFailure &&\n\t\t(s == connectivity.Connecting || s == connectivity.Idle) {\n\t\t// Once a subconn enters TRANSIENT_FAILURE, ignore subsequent IDLE or\n\t\t// CONNECTING transitions to prevent the aggregated state from being\n\t\t// always CONNECTING when many backends exist but are all down.\n\t\tif s == connectivity.Idle {\n\t\t\tsc.Connect()\n\t\t}\n\t\treturn\n\t}\n\tb.scStates[sc] = s\n\tswitch s {\n\tcase connectivity.Idle:\n\t\tsc.Connect()\n\tcase connectivity.Shutdown:\n\t\t// When an address was removed by resolver, b called Shutdown but kept\n\t\t// the sc's state in scStates. Remove state for this sc here.\n\t\tdelete(b.scStates, sc)\n\tcase connectivity.TransientFailure:\n\t\t// Save error to be reported via picker.\n\t\tb.connErr = state.ConnectionError\n\t}\n\n\tb.state = b.csEvltr.RecordTransition(oldS, s)\n\n\t// Regenerate picker when one of the following happens:\n\t//  - this sc entered or left ready\n\t//  - the aggregated state of balancer is TransientFailure\n\t//    (may need to update error message)\n\tif (s == connectivity.Ready) != (oldS == connectivity.Ready) ||\n\t\tb.state == connectivity.TransientFailure {\n\t\tb.regeneratePicker()\n\t}\n\tb.cc.UpdateState(balancer.State{ConnectivityState: b.state, Picker: b.picker})\n}\n\n// Close is a nop because base balancer doesn't have internal state to clean up,\n// and it doesn't need to call Shutdown for the SubConns.\nfunc (b *baseBalancer) Close() {\n}\n\n// ExitIdle is a nop because the base balancer attempts to stay connected to\n// all SubConns at all times.\nfunc (b *baseBalancer) ExitIdle() {\n}\n\n// NewErrPicker returns a Picker that always returns err on Pick().\nfunc NewErrPicker(err error) balancer.Picker {\n\treturn &errPicker{err: err}\n}\n\n// NewErrPickerV2 is temporarily defined for backward compatibility reasons.\n//\n// Deprecated: use NewErrPicker instead.\nvar NewErrPickerV2 = NewErrPicker\n\ntype errPicker struct {\n\terr error // Pick() always returns this err.\n}\n\nfunc (p *errPicker) Pick(info balancer.PickInfo) (balancer.PickResult, error) {\n\treturn balancer.PickResult{}, p.err\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/base/base.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package base defines a balancer base that can be used to build balancers with\n// different picking algorithms.\n//\n// The base balancer creates a new SubConn for each resolved address. The\n// provided picker will only be notified about READY SubConns.\n//\n// This package is the base of round_robin balancer, its purpose is to be used\n// to build round_robin like balancers with complex picking algorithms.\n// Balancers with more complicated logic should try to implement a balancer\n// builder from scratch.\n//\n// All APIs in this package are experimental.\npackage base\n\nimport (\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// PickerBuilder creates balancer.Picker.\ntype PickerBuilder interface {\n\t// Build returns a picker that will be used by gRPC to pick a SubConn.\n\tBuild(info PickerBuildInfo) balancer.Picker\n}\n\n// PickerBuildInfo contains information needed by the picker builder to\n// construct a picker.\ntype PickerBuildInfo struct {\n\t// ReadySCs is a map from all ready SubConns to the Addresses used to\n\t// create them.\n\tReadySCs map[balancer.SubConn]SubConnInfo\n}\n\n// SubConnInfo contains information about a SubConn created by the base\n// balancer.\ntype SubConnInfo struct {\n\tAddress resolver.Address // the address used to create this SubConn\n}\n\n// Config contains the config info about the base balancer builder.\ntype Config struct {\n\t// HealthCheck indicates whether health checking should be enabled for this specific balancer.\n\tHealthCheck bool\n}\n\n// NewBalancerBuilder returns a base balancer builder configured by the provided config.\nfunc NewBalancerBuilder(name string, pb PickerBuilder, config Config) balancer.Builder {\n\treturn &baseBuilder{\n\t\tname:          name,\n\t\tpickerBuilder: pb,\n\t\tconfig:        config,\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/conn_state_evaluator.go",
    "content": "/*\n *\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage balancer\n\nimport \"google.golang.org/grpc/connectivity\"\n\n// ConnectivityStateEvaluator takes the connectivity states of multiple SubConns\n// and returns one aggregated connectivity state.\n//\n// It's not thread safe.\ntype ConnectivityStateEvaluator struct {\n\tnumReady            uint64 // Number of addrConns in ready state.\n\tnumConnecting       uint64 // Number of addrConns in connecting state.\n\tnumTransientFailure uint64 // Number of addrConns in transient failure state.\n\tnumIdle             uint64 // Number of addrConns in idle state.\n}\n\n// RecordTransition records state change happening in subConn and based on that\n// it evaluates what aggregated state should be.\n//\n//   - If at least one SubConn in Ready, the aggregated state is Ready;\n//   - Else if at least one SubConn in Connecting, the aggregated state is Connecting;\n//   - Else if at least one SubConn is Idle, the aggregated state is Idle;\n//   - Else if at least one SubConn is TransientFailure (or there are no SubConns), the aggregated state is Transient Failure.\n//\n// Shutdown is not considered.\nfunc (cse *ConnectivityStateEvaluator) RecordTransition(oldState, newState connectivity.State) connectivity.State {\n\t// Update counters.\n\tfor idx, state := range []connectivity.State{oldState, newState} {\n\t\tupdateVal := 2*uint64(idx) - 1 // -1 for oldState and +1 for new.\n\t\tswitch state {\n\t\tcase connectivity.Ready:\n\t\t\tcse.numReady += updateVal\n\t\tcase connectivity.Connecting:\n\t\t\tcse.numConnecting += updateVal\n\t\tcase connectivity.TransientFailure:\n\t\t\tcse.numTransientFailure += updateVal\n\t\tcase connectivity.Idle:\n\t\t\tcse.numIdle += updateVal\n\t\t}\n\t}\n\treturn cse.CurrentState()\n}\n\n// CurrentState returns the current aggregate conn state by evaluating the counters\nfunc (cse *ConnectivityStateEvaluator) CurrentState() connectivity.State {\n\t// Evaluate.\n\tif cse.numReady > 0 {\n\t\treturn connectivity.Ready\n\t}\n\tif cse.numConnecting > 0 {\n\t\treturn connectivity.Connecting\n\t}\n\tif cse.numIdle > 0 {\n\t\treturn connectivity.Idle\n\t}\n\treturn connectivity.TransientFailure\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/grpclb/state/state.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package state declares grpclb types to be set by resolvers wishing to pass\n// information to grpclb via resolver.State Attributes.\npackage state\n\nimport (\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// keyType is the key to use for storing State in Attributes.\ntype keyType string\n\nconst key = keyType(\"grpc.grpclb.state\")\n\n// State contains gRPCLB-relevant data passed from the name resolver.\ntype State struct {\n\t// BalancerAddresses contains the remote load balancer address(es).  If\n\t// set, overrides any resolver-provided addresses with Type of GRPCLB.\n\tBalancerAddresses []resolver.Address\n}\n\n// Set returns a copy of the provided state with attributes containing s.  s's\n// data should not be mutated after calling Set.\nfunc Set(state resolver.State, s *State) resolver.State {\n\tstate.Attributes = state.Attributes.WithValue(key, s)\n\treturn state\n}\n\n// Get returns the grpclb State in the resolver.State, or nil if not present.\n// The returned data should not be mutated.\nfunc Get(state resolver.State) *State {\n\ts, _ := state.Attributes.Value(key).(*State)\n\treturn s\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package roundrobin defines a roundrobin balancer. Roundrobin balancer is\n// installed as one of the default balancers in gRPC, users don't need to\n// explicitly install this balancer.\npackage roundrobin\n\nimport (\n\t\"sync/atomic\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/balancer/base\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/internal/grpcrand\"\n)\n\n// Name is the name of round_robin balancer.\nconst Name = \"round_robin\"\n\nvar logger = grpclog.Component(\"roundrobin\")\n\n// newBuilder creates a new roundrobin balancer builder.\nfunc newBuilder() balancer.Builder {\n\treturn base.NewBalancerBuilder(Name, &rrPickerBuilder{}, base.Config{HealthCheck: true})\n}\n\nfunc init() {\n\tbalancer.Register(newBuilder())\n}\n\ntype rrPickerBuilder struct{}\n\nfunc (*rrPickerBuilder) Build(info base.PickerBuildInfo) balancer.Picker {\n\tlogger.Infof(\"roundrobinPicker: Build called with info: %v\", info)\n\tif len(info.ReadySCs) == 0 {\n\t\treturn base.NewErrPicker(balancer.ErrNoSubConnAvailable)\n\t}\n\tscs := make([]balancer.SubConn, 0, len(info.ReadySCs))\n\tfor sc := range info.ReadySCs {\n\t\tscs = append(scs, sc)\n\t}\n\treturn &rrPicker{\n\t\tsubConns: scs,\n\t\t// Start at a random index, as the same RR balancer rebuilds a new\n\t\t// picker when SubConn states change, and we don't want to apply excess\n\t\t// load to the first server in the list.\n\t\tnext: uint32(grpcrand.Intn(len(scs))),\n\t}\n}\n\ntype rrPicker struct {\n\t// subConns is the snapshot of the roundrobin balancer when this picker was\n\t// created. The slice is immutable. Each Get() will do a round robin\n\t// selection from it and return the selected SubConn.\n\tsubConns []balancer.SubConn\n\tnext     uint32\n}\n\nfunc (p *rrPicker) Pick(balancer.PickInfo) (balancer.PickResult, error) {\n\tsubConnsLen := uint32(len(p.subConns))\n\tnextIndex := atomic.AddUint32(&p.next, 1)\n\n\tsc := p.subConns[nextIndex%subConnsLen]\n\treturn balancer.PickResult{SubConn: sc}, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/balancer_conn_wrappers.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/internal/balancer/gracefulswitch\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/internal/grpcsync\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\ntype ccbMode int\n\nconst (\n\tccbModeActive = iota\n\tccbModeIdle\n\tccbModeClosed\n\tccbModeExitingIdle\n)\n\n// ccBalancerWrapper sits between the ClientConn and the Balancer.\n//\n// ccBalancerWrapper implements methods corresponding to the ones on the\n// balancer.Balancer interface. The ClientConn is free to call these methods\n// concurrently and the ccBalancerWrapper ensures that calls from the ClientConn\n// to the Balancer happen synchronously and in order.\n//\n// ccBalancerWrapper also implements the balancer.ClientConn interface and is\n// passed to the Balancer implementations. It invokes unexported methods on the\n// ClientConn to handle these calls from the Balancer.\n//\n// It uses the gracefulswitch.Balancer internally to ensure that balancer\n// switches happen in a graceful manner.\ntype ccBalancerWrapper struct {\n\t// The following fields are initialized when the wrapper is created and are\n\t// read-only afterwards, and therefore can be accessed without a mutex.\n\tcc   *ClientConn\n\topts balancer.BuildOptions\n\n\t// Outgoing (gRPC --> balancer) calls are guaranteed to execute in a\n\t// mutually exclusive manner as they are scheduled in the serializer. Fields\n\t// accessed *only* in these serializer callbacks, can therefore be accessed\n\t// without a mutex.\n\tbalancer        *gracefulswitch.Balancer\n\tcurBalancerName string\n\n\t// mu guards access to the below fields. Access to the serializer and its\n\t// cancel function needs to be mutex protected because they are overwritten\n\t// when the wrapper exits idle mode.\n\tmu               sync.Mutex\n\tserializer       *grpcsync.CallbackSerializer // To serialize all outoing calls.\n\tserializerCancel context.CancelFunc           // To close the seralizer at close/enterIdle time.\n\tmode             ccbMode                      // Tracks the current mode of the wrapper.\n}\n\n// newCCBalancerWrapper creates a new balancer wrapper. The underlying balancer\n// is not created until the switchTo() method is invoked.\nfunc newCCBalancerWrapper(cc *ClientConn, bopts balancer.BuildOptions) *ccBalancerWrapper {\n\tctx, cancel := context.WithCancel(context.Background())\n\tccb := &ccBalancerWrapper{\n\t\tcc:               cc,\n\t\topts:             bopts,\n\t\tserializer:       grpcsync.NewCallbackSerializer(ctx),\n\t\tserializerCancel: cancel,\n\t}\n\tccb.balancer = gracefulswitch.NewBalancer(ccb, bopts)\n\treturn ccb\n}\n\n// updateClientConnState is invoked by grpc to push a ClientConnState update to\n// the underlying balancer.\nfunc (ccb *ccBalancerWrapper) updateClientConnState(ccs *balancer.ClientConnState) error {\n\tccb.mu.Lock()\n\terrCh := make(chan error, 1)\n\t// Here and everywhere else where Schedule() is called, it is done with the\n\t// lock held. But the lock guards only the scheduling part. The actual\n\t// callback is called asynchronously without the lock being held.\n\tok := ccb.serializer.Schedule(func(_ context.Context) {\n\t\terrCh <- ccb.balancer.UpdateClientConnState(*ccs)\n\t})\n\tif !ok {\n\t\t// If we are unable to schedule a function with the serializer, it\n\t\t// indicates that it has been closed. A serializer is only closed when\n\t\t// the wrapper is closed or is in idle.\n\t\tccb.mu.Unlock()\n\t\treturn fmt.Errorf(\"grpc: cannot send state update to a closed or idle balancer\")\n\t}\n\tccb.mu.Unlock()\n\n\t// We get here only if the above call to Schedule succeeds, in which case it\n\t// is guaranteed that the scheduled function will run. Therefore it is safe\n\t// to block on this channel.\n\terr := <-errCh\n\tif logger.V(2) && err != nil {\n\t\tlogger.Infof(\"error from balancer.UpdateClientConnState: %v\", err)\n\t}\n\treturn err\n}\n\n// updateSubConnState is invoked by grpc to push a subConn state update to the\n// underlying balancer.\nfunc (ccb *ccBalancerWrapper) updateSubConnState(sc balancer.SubConn, s connectivity.State, err error) {\n\tccb.mu.Lock()\n\tccb.serializer.Schedule(func(_ context.Context) {\n\t\t// Even though it is optional for balancers, gracefulswitch ensures\n\t\t// opts.StateListener is set, so this cannot ever be nil.\n\t\tsc.(*acBalancerWrapper).stateListener(balancer.SubConnState{ConnectivityState: s, ConnectionError: err})\n\t})\n\tccb.mu.Unlock()\n}\n\nfunc (ccb *ccBalancerWrapper) resolverError(err error) {\n\tccb.mu.Lock()\n\tccb.serializer.Schedule(func(_ context.Context) {\n\t\tccb.balancer.ResolverError(err)\n\t})\n\tccb.mu.Unlock()\n}\n\n// switchTo is invoked by grpc to instruct the balancer wrapper to switch to the\n// LB policy identified by name.\n//\n// ClientConn calls newCCBalancerWrapper() at creation time. Upon receipt of the\n// first good update from the name resolver, it determines the LB policy to use\n// and invokes the switchTo() method. Upon receipt of every subsequent update\n// from the name resolver, it invokes this method.\n//\n// the ccBalancerWrapper keeps track of the current LB policy name, and skips\n// the graceful balancer switching process if the name does not change.\nfunc (ccb *ccBalancerWrapper) switchTo(name string) {\n\tccb.mu.Lock()\n\tccb.serializer.Schedule(func(_ context.Context) {\n\t\t// TODO: Other languages use case-sensitive balancer registries. We should\n\t\t// switch as well. See: https://github.com/grpc/grpc-go/issues/5288.\n\t\tif strings.EqualFold(ccb.curBalancerName, name) {\n\t\t\treturn\n\t\t}\n\t\tccb.buildLoadBalancingPolicy(name)\n\t})\n\tccb.mu.Unlock()\n}\n\n// buildLoadBalancingPolicy performs the following:\n//   - retrieve a balancer builder for the given name. Use the default LB\n//     policy, pick_first, if no LB policy with name is found in the registry.\n//   - instruct the gracefulswitch balancer to switch to the above builder. This\n//     will actually build the new balancer.\n//   - update the `curBalancerName` field\n//\n// Must be called from a serializer callback.\nfunc (ccb *ccBalancerWrapper) buildLoadBalancingPolicy(name string) {\n\tbuilder := balancer.Get(name)\n\tif builder == nil {\n\t\tchannelz.Warningf(logger, ccb.cc.channelzID, \"Channel switches to new LB policy %q, since the specified LB policy %q was not registered\", PickFirstBalancerName, name)\n\t\tbuilder = newPickfirstBuilder()\n\t} else {\n\t\tchannelz.Infof(logger, ccb.cc.channelzID, \"Channel switches to new LB policy %q\", name)\n\t}\n\n\tif err := ccb.balancer.SwitchTo(builder); err != nil {\n\t\tchannelz.Errorf(logger, ccb.cc.channelzID, \"Channel failed to build new LB policy %q: %v\", name, err)\n\t\treturn\n\t}\n\tccb.curBalancerName = builder.Name()\n}\n\nfunc (ccb *ccBalancerWrapper) close() {\n\tchannelz.Info(logger, ccb.cc.channelzID, \"ccBalancerWrapper: closing\")\n\tccb.closeBalancer(ccbModeClosed)\n}\n\n// enterIdleMode is invoked by grpc when the channel enters idle mode upon\n// expiry of idle_timeout. This call blocks until the balancer is closed.\nfunc (ccb *ccBalancerWrapper) enterIdleMode() {\n\tchannelz.Info(logger, ccb.cc.channelzID, \"ccBalancerWrapper: entering idle mode\")\n\tccb.closeBalancer(ccbModeIdle)\n}\n\n// closeBalancer is invoked when the channel is being closed or when it enters\n// idle mode upon expiry of idle_timeout.\nfunc (ccb *ccBalancerWrapper) closeBalancer(m ccbMode) {\n\tccb.mu.Lock()\n\tif ccb.mode == ccbModeClosed || ccb.mode == ccbModeIdle {\n\t\tccb.mu.Unlock()\n\t\treturn\n\t}\n\n\tccb.mode = m\n\tdone := ccb.serializer.Done()\n\tb := ccb.balancer\n\tok := ccb.serializer.Schedule(func(_ context.Context) {\n\t\t// Close the serializer to ensure that no more calls from gRPC are sent\n\t\t// to the balancer.\n\t\tccb.serializerCancel()\n\t\t// Empty the current balancer name because we don't have a balancer\n\t\t// anymore and also so that we act on the next call to switchTo by\n\t\t// creating a new balancer specified by the new resolver.\n\t\tccb.curBalancerName = \"\"\n\t})\n\tif !ok {\n\t\tccb.mu.Unlock()\n\t\treturn\n\t}\n\tccb.mu.Unlock()\n\n\t// Give enqueued callbacks a chance to finish before closing the balancer.\n\t<-done\n\tb.Close()\n}\n\n// exitIdleMode is invoked by grpc when the channel exits idle mode either\n// because of an RPC or because of an invocation of the Connect() API. This\n// recreates the balancer that was closed previously when entering idle mode.\n//\n// If the channel is not in idle mode, we know for a fact that we are here as a\n// result of the user calling the Connect() method on the ClientConn. In this\n// case, we can simply forward the call to the underlying balancer, instructing\n// it to reconnect to the backends.\nfunc (ccb *ccBalancerWrapper) exitIdleMode() {\n\tccb.mu.Lock()\n\tif ccb.mode == ccbModeClosed {\n\t\t// Request to exit idle is a no-op when wrapper is already closed.\n\t\tccb.mu.Unlock()\n\t\treturn\n\t}\n\n\tif ccb.mode == ccbModeIdle {\n\t\t// Recreate the serializer which was closed when we entered idle.\n\t\tctx, cancel := context.WithCancel(context.Background())\n\t\tccb.serializer = grpcsync.NewCallbackSerializer(ctx)\n\t\tccb.serializerCancel = cancel\n\t}\n\n\t// The ClientConn guarantees that mutual exclusion between close() and\n\t// exitIdleMode(), and since we just created a new serializer, we can be\n\t// sure that the below function will be scheduled.\n\tdone := make(chan struct{})\n\tccb.serializer.Schedule(func(_ context.Context) {\n\t\tdefer close(done)\n\n\t\tccb.mu.Lock()\n\t\tdefer ccb.mu.Unlock()\n\n\t\tif ccb.mode != ccbModeIdle {\n\t\t\tccb.balancer.ExitIdle()\n\t\t\treturn\n\t\t}\n\n\t\t// Gracefulswitch balancer does not support a switchTo operation after\n\t\t// being closed. Hence we need to create a new one here.\n\t\tccb.balancer = gracefulswitch.NewBalancer(ccb, ccb.opts)\n\t\tccb.mode = ccbModeActive\n\t\tchannelz.Info(logger, ccb.cc.channelzID, \"ccBalancerWrapper: exiting idle mode\")\n\n\t})\n\tccb.mu.Unlock()\n\n\t<-done\n}\n\nfunc (ccb *ccBalancerWrapper) isIdleOrClosed() bool {\n\tccb.mu.Lock()\n\tdefer ccb.mu.Unlock()\n\treturn ccb.mode == ccbModeIdle || ccb.mode == ccbModeClosed\n}\n\nfunc (ccb *ccBalancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (balancer.SubConn, error) {\n\tif ccb.isIdleOrClosed() {\n\t\treturn nil, fmt.Errorf(\"grpc: cannot create SubConn when balancer is closed or idle\")\n\t}\n\n\tif len(addrs) == 0 {\n\t\treturn nil, fmt.Errorf(\"grpc: cannot create SubConn with empty address list\")\n\t}\n\tac, err := ccb.cc.newAddrConn(addrs, opts)\n\tif err != nil {\n\t\tchannelz.Warningf(logger, ccb.cc.channelzID, \"acBalancerWrapper: NewSubConn: failed to newAddrConn: %v\", err)\n\t\treturn nil, err\n\t}\n\tacbw := &acBalancerWrapper{\n\t\tccb:           ccb,\n\t\tac:            ac,\n\t\tproducers:     make(map[balancer.ProducerBuilder]*refCountedProducer),\n\t\tstateListener: opts.StateListener,\n\t}\n\tac.acbw = acbw\n\treturn acbw, nil\n}\n\nfunc (ccb *ccBalancerWrapper) RemoveSubConn(sc balancer.SubConn) {\n\t// The graceful switch balancer will never call this.\n\tlogger.Errorf(\"ccb RemoveSubConn(%v) called unexpectedly, sc\")\n}\n\nfunc (ccb *ccBalancerWrapper) UpdateAddresses(sc balancer.SubConn, addrs []resolver.Address) {\n\tif ccb.isIdleOrClosed() {\n\t\treturn\n\t}\n\n\tacbw, ok := sc.(*acBalancerWrapper)\n\tif !ok {\n\t\treturn\n\t}\n\tacbw.UpdateAddresses(addrs)\n}\n\nfunc (ccb *ccBalancerWrapper) UpdateState(s balancer.State) {\n\tif ccb.isIdleOrClosed() {\n\t\treturn\n\t}\n\n\t// Update picker before updating state.  Even though the ordering here does\n\t// not matter, it can lead to multiple calls of Pick in the common start-up\n\t// case where we wait for ready and then perform an RPC.  If the picker is\n\t// updated later, we could call the \"connecting\" picker when the state is\n\t// updated, and then call the \"ready\" picker after the picker gets updated.\n\tccb.cc.blockingpicker.updatePicker(s.Picker)\n\tccb.cc.csMgr.updateState(s.ConnectivityState)\n}\n\nfunc (ccb *ccBalancerWrapper) ResolveNow(o resolver.ResolveNowOptions) {\n\tif ccb.isIdleOrClosed() {\n\t\treturn\n\t}\n\n\tccb.cc.resolveNow(o)\n}\n\nfunc (ccb *ccBalancerWrapper) Target() string {\n\treturn ccb.cc.target\n}\n\n// acBalancerWrapper is a wrapper on top of ac for balancers.\n// It implements balancer.SubConn interface.\ntype acBalancerWrapper struct {\n\tac            *addrConn          // read-only\n\tccb           *ccBalancerWrapper // read-only\n\tstateListener func(balancer.SubConnState)\n\n\tmu        sync.Mutex\n\tproducers map[balancer.ProducerBuilder]*refCountedProducer\n}\n\nfunc (acbw *acBalancerWrapper) String() string {\n\treturn fmt.Sprintf(\"SubConn(id:%d)\", acbw.ac.channelzID.Int())\n}\n\nfunc (acbw *acBalancerWrapper) UpdateAddresses(addrs []resolver.Address) {\n\tacbw.ac.updateAddrs(addrs)\n}\n\nfunc (acbw *acBalancerWrapper) Connect() {\n\tgo acbw.ac.connect()\n}\n\nfunc (acbw *acBalancerWrapper) Shutdown() {\n\tccb := acbw.ccb\n\tif ccb.isIdleOrClosed() {\n\t\t// It it safe to ignore this call when the balancer is closed or in idle\n\t\t// because the ClientConn takes care of closing the connections.\n\t\t//\n\t\t// Not returning early from here when the balancer is closed or in idle\n\t\t// leads to a deadlock though, because of the following sequence of\n\t\t// calls when holding cc.mu:\n\t\t// cc.exitIdleMode --> ccb.enterIdleMode --> gsw.Close -->\n\t\t// ccb.RemoveAddrConn --> cc.removeAddrConn\n\t\treturn\n\t}\n\n\tccb.cc.removeAddrConn(acbw.ac, errConnDrain)\n}\n\n// NewStream begins a streaming RPC on the addrConn.  If the addrConn is not\n// ready, blocks until it is or ctx expires.  Returns an error when the context\n// expires or the addrConn is shut down.\nfunc (acbw *acBalancerWrapper) NewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error) {\n\ttransport, err := acbw.ac.getTransport(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn newNonRetryClientStream(ctx, desc, method, transport, acbw.ac, opts...)\n}\n\n// Invoke performs a unary RPC.  If the addrConn is not ready, returns\n// errSubConnNotReady.\nfunc (acbw *acBalancerWrapper) Invoke(ctx context.Context, method string, args any, reply any, opts ...CallOption) error {\n\tcs, err := acbw.NewStream(ctx, unaryStreamDesc, method, opts...)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := cs.SendMsg(args); err != nil {\n\t\treturn err\n\t}\n\treturn cs.RecvMsg(reply)\n}\n\ntype refCountedProducer struct {\n\tproducer balancer.Producer\n\trefs     int    // number of current refs to the producer\n\tclose    func() // underlying producer's close function\n}\n\nfunc (acbw *acBalancerWrapper) GetOrBuildProducer(pb balancer.ProducerBuilder) (balancer.Producer, func()) {\n\tacbw.mu.Lock()\n\tdefer acbw.mu.Unlock()\n\n\t// Look up existing producer from this builder.\n\tpData := acbw.producers[pb]\n\tif pData == nil {\n\t\t// Not found; create a new one and add it to the producers map.\n\t\tp, close := pb.Build(acbw)\n\t\tpData = &refCountedProducer{producer: p, close: close}\n\t\tacbw.producers[pb] = pData\n\t}\n\t// Account for this new reference.\n\tpData.refs++\n\n\t// Return a cleanup function wrapped in a OnceFunc to remove this reference\n\t// and delete the refCountedProducer from the map if the total reference\n\t// count goes to zero.\n\tunref := func() {\n\t\tacbw.mu.Lock()\n\t\tpData.refs--\n\t\tif pData.refs == 0 {\n\t\t\tdefer pData.close() // Run outside the acbw mutex\n\t\t\tdelete(acbw.producers, pb)\n\t\t}\n\t\tacbw.mu.Unlock()\n\t}\n\treturn pData.producer, grpcsync.OnceFunc(unref)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go",
    "content": "// Copyright 2018 The gRPC Authors\n// All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// The canonical version of this proto can be found at\n// https://github.com/grpc/grpc-proto/blob/master/grpc/binlog/v1/binarylog.proto\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.31.0\n// \tprotoc        v4.22.0\n// source: grpc/binlog/v1/binarylog.proto\n\npackage grpc_binarylog_v1\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Enumerates the type of event\n// Note the terminology is different from the RPC semantics\n// definition, but the same meaning is expressed here.\ntype GrpcLogEntry_EventType int32\n\nconst (\n\tGrpcLogEntry_EVENT_TYPE_UNKNOWN GrpcLogEntry_EventType = 0\n\t// Header sent from client to server\n\tGrpcLogEntry_EVENT_TYPE_CLIENT_HEADER GrpcLogEntry_EventType = 1\n\t// Header sent from server to client\n\tGrpcLogEntry_EVENT_TYPE_SERVER_HEADER GrpcLogEntry_EventType = 2\n\t// Message sent from client to server\n\tGrpcLogEntry_EVENT_TYPE_CLIENT_MESSAGE GrpcLogEntry_EventType = 3\n\t// Message sent from server to client\n\tGrpcLogEntry_EVENT_TYPE_SERVER_MESSAGE GrpcLogEntry_EventType = 4\n\t// A signal that client is done sending\n\tGrpcLogEntry_EVENT_TYPE_CLIENT_HALF_CLOSE GrpcLogEntry_EventType = 5\n\t// Trailer indicates the end of the RPC.\n\t// On client side, this event means a trailer was either received\n\t// from the network or the gRPC library locally generated a status\n\t// to inform the application about a failure.\n\t// On server side, this event means the server application requested\n\t// to send a trailer. Note: EVENT_TYPE_CANCEL may still arrive after\n\t// this due to races on server side.\n\tGrpcLogEntry_EVENT_TYPE_SERVER_TRAILER GrpcLogEntry_EventType = 6\n\t// A signal that the RPC is cancelled. On client side, this\n\t// indicates the client application requests a cancellation.\n\t// On server side, this indicates that cancellation was detected.\n\t// Note: This marks the end of the RPC. Events may arrive after\n\t// this due to races. For example, on client side a trailer\n\t// may arrive even though the application requested to cancel the RPC.\n\tGrpcLogEntry_EVENT_TYPE_CANCEL GrpcLogEntry_EventType = 7\n)\n\n// Enum value maps for GrpcLogEntry_EventType.\nvar (\n\tGrpcLogEntry_EventType_name = map[int32]string{\n\t\t0: \"EVENT_TYPE_UNKNOWN\",\n\t\t1: \"EVENT_TYPE_CLIENT_HEADER\",\n\t\t2: \"EVENT_TYPE_SERVER_HEADER\",\n\t\t3: \"EVENT_TYPE_CLIENT_MESSAGE\",\n\t\t4: \"EVENT_TYPE_SERVER_MESSAGE\",\n\t\t5: \"EVENT_TYPE_CLIENT_HALF_CLOSE\",\n\t\t6: \"EVENT_TYPE_SERVER_TRAILER\",\n\t\t7: \"EVENT_TYPE_CANCEL\",\n\t}\n\tGrpcLogEntry_EventType_value = map[string]int32{\n\t\t\"EVENT_TYPE_UNKNOWN\":           0,\n\t\t\"EVENT_TYPE_CLIENT_HEADER\":     1,\n\t\t\"EVENT_TYPE_SERVER_HEADER\":     2,\n\t\t\"EVENT_TYPE_CLIENT_MESSAGE\":    3,\n\t\t\"EVENT_TYPE_SERVER_MESSAGE\":    4,\n\t\t\"EVENT_TYPE_CLIENT_HALF_CLOSE\": 5,\n\t\t\"EVENT_TYPE_SERVER_TRAILER\":    6,\n\t\t\"EVENT_TYPE_CANCEL\":            7,\n\t}\n)\n\nfunc (x GrpcLogEntry_EventType) Enum() *GrpcLogEntry_EventType {\n\tp := new(GrpcLogEntry_EventType)\n\t*p = x\n\treturn p\n}\n\nfunc (x GrpcLogEntry_EventType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (GrpcLogEntry_EventType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_grpc_binlog_v1_binarylog_proto_enumTypes[0].Descriptor()\n}\n\nfunc (GrpcLogEntry_EventType) Type() protoreflect.EnumType {\n\treturn &file_grpc_binlog_v1_binarylog_proto_enumTypes[0]\n}\n\nfunc (x GrpcLogEntry_EventType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use GrpcLogEntry_EventType.Descriptor instead.\nfunc (GrpcLogEntry_EventType) EnumDescriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0, 0}\n}\n\n// Enumerates the entity that generates the log entry\ntype GrpcLogEntry_Logger int32\n\nconst (\n\tGrpcLogEntry_LOGGER_UNKNOWN GrpcLogEntry_Logger = 0\n\tGrpcLogEntry_LOGGER_CLIENT  GrpcLogEntry_Logger = 1\n\tGrpcLogEntry_LOGGER_SERVER  GrpcLogEntry_Logger = 2\n)\n\n// Enum value maps for GrpcLogEntry_Logger.\nvar (\n\tGrpcLogEntry_Logger_name = map[int32]string{\n\t\t0: \"LOGGER_UNKNOWN\",\n\t\t1: \"LOGGER_CLIENT\",\n\t\t2: \"LOGGER_SERVER\",\n\t}\n\tGrpcLogEntry_Logger_value = map[string]int32{\n\t\t\"LOGGER_UNKNOWN\": 0,\n\t\t\"LOGGER_CLIENT\":  1,\n\t\t\"LOGGER_SERVER\":  2,\n\t}\n)\n\nfunc (x GrpcLogEntry_Logger) Enum() *GrpcLogEntry_Logger {\n\tp := new(GrpcLogEntry_Logger)\n\t*p = x\n\treturn p\n}\n\nfunc (x GrpcLogEntry_Logger) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (GrpcLogEntry_Logger) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_grpc_binlog_v1_binarylog_proto_enumTypes[1].Descriptor()\n}\n\nfunc (GrpcLogEntry_Logger) Type() protoreflect.EnumType {\n\treturn &file_grpc_binlog_v1_binarylog_proto_enumTypes[1]\n}\n\nfunc (x GrpcLogEntry_Logger) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use GrpcLogEntry_Logger.Descriptor instead.\nfunc (GrpcLogEntry_Logger) EnumDescriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0, 1}\n}\n\ntype Address_Type int32\n\nconst (\n\tAddress_TYPE_UNKNOWN Address_Type = 0\n\t// address is in 1.2.3.4 form\n\tAddress_TYPE_IPV4 Address_Type = 1\n\t// address is in IPv6 canonical form (RFC5952 section 4)\n\t// The scope is NOT included in the address string.\n\tAddress_TYPE_IPV6 Address_Type = 2\n\t// address is UDS string\n\tAddress_TYPE_UNIX Address_Type = 3\n)\n\n// Enum value maps for Address_Type.\nvar (\n\tAddress_Type_name = map[int32]string{\n\t\t0: \"TYPE_UNKNOWN\",\n\t\t1: \"TYPE_IPV4\",\n\t\t2: \"TYPE_IPV6\",\n\t\t3: \"TYPE_UNIX\",\n\t}\n\tAddress_Type_value = map[string]int32{\n\t\t\"TYPE_UNKNOWN\": 0,\n\t\t\"TYPE_IPV4\":    1,\n\t\t\"TYPE_IPV6\":    2,\n\t\t\"TYPE_UNIX\":    3,\n\t}\n)\n\nfunc (x Address_Type) Enum() *Address_Type {\n\tp := new(Address_Type)\n\t*p = x\n\treturn p\n}\n\nfunc (x Address_Type) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (Address_Type) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_grpc_binlog_v1_binarylog_proto_enumTypes[2].Descriptor()\n}\n\nfunc (Address_Type) Type() protoreflect.EnumType {\n\treturn &file_grpc_binlog_v1_binarylog_proto_enumTypes[2]\n}\n\nfunc (x Address_Type) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use Address_Type.Descriptor instead.\nfunc (Address_Type) EnumDescriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{7, 0}\n}\n\n// Log entry we store in binary logs\ntype GrpcLogEntry struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The timestamp of the binary log message\n\tTimestamp *timestamppb.Timestamp `protobuf:\"bytes,1,opt,name=timestamp,proto3\" json:\"timestamp,omitempty\"`\n\t// Uniquely identifies a call. The value must not be 0 in order to disambiguate\n\t// from an unset value.\n\t// Each call may have several log entries, they will all have the same call_id.\n\t// Nothing is guaranteed about their value other than they are unique across\n\t// different RPCs in the same gRPC process.\n\tCallId uint64 `protobuf:\"varint,2,opt,name=call_id,json=callId,proto3\" json:\"call_id,omitempty\"`\n\t// The entry sequence id for this call. The first GrpcLogEntry has a\n\t// value of 1, to disambiguate from an unset value. The purpose of\n\t// this field is to detect missing entries in environments where\n\t// durability or ordering is not guaranteed.\n\tSequenceIdWithinCall uint64                 `protobuf:\"varint,3,opt,name=sequence_id_within_call,json=sequenceIdWithinCall,proto3\" json:\"sequence_id_within_call,omitempty\"`\n\tType                 GrpcLogEntry_EventType `protobuf:\"varint,4,opt,name=type,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_EventType\" json:\"type,omitempty\"`\n\tLogger               GrpcLogEntry_Logger    `protobuf:\"varint,5,opt,name=logger,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_Logger\" json:\"logger,omitempty\"` // One of the above Logger enum\n\t// The logger uses one of the following fields to record the payload,\n\t// according to the type of the log entry.\n\t//\n\t// Types that are assignable to Payload:\n\t//\n\t//\t*GrpcLogEntry_ClientHeader\n\t//\t*GrpcLogEntry_ServerHeader\n\t//\t*GrpcLogEntry_Message\n\t//\t*GrpcLogEntry_Trailer\n\tPayload isGrpcLogEntry_Payload `protobuf_oneof:\"payload\"`\n\t// true if payload does not represent the full message or metadata.\n\tPayloadTruncated bool `protobuf:\"varint,10,opt,name=payload_truncated,json=payloadTruncated,proto3\" json:\"payload_truncated,omitempty\"`\n\t// Peer address information, will only be recorded on the first\n\t// incoming event. On client side, peer is logged on\n\t// EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in\n\t// the case of trailers-only. On server side, peer is always\n\t// logged on EVENT_TYPE_CLIENT_HEADER.\n\tPeer *Address `protobuf:\"bytes,11,opt,name=peer,proto3\" json:\"peer,omitempty\"`\n}\n\nfunc (x *GrpcLogEntry) Reset() {\n\t*x = GrpcLogEntry{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GrpcLogEntry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrpcLogEntry) ProtoMessage() {}\n\nfunc (x *GrpcLogEntry) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GrpcLogEntry.ProtoReflect.Descriptor instead.\nfunc (*GrpcLogEntry) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *GrpcLogEntry) GetTimestamp() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.Timestamp\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcLogEntry) GetCallId() uint64 {\n\tif x != nil {\n\t\treturn x.CallId\n\t}\n\treturn 0\n}\n\nfunc (x *GrpcLogEntry) GetSequenceIdWithinCall() uint64 {\n\tif x != nil {\n\t\treturn x.SequenceIdWithinCall\n\t}\n\treturn 0\n}\n\nfunc (x *GrpcLogEntry) GetType() GrpcLogEntry_EventType {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn GrpcLogEntry_EVENT_TYPE_UNKNOWN\n}\n\nfunc (x *GrpcLogEntry) GetLogger() GrpcLogEntry_Logger {\n\tif x != nil {\n\t\treturn x.Logger\n\t}\n\treturn GrpcLogEntry_LOGGER_UNKNOWN\n}\n\nfunc (m *GrpcLogEntry) GetPayload() isGrpcLogEntry_Payload {\n\tif m != nil {\n\t\treturn m.Payload\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcLogEntry) GetClientHeader() *ClientHeader {\n\tif x, ok := x.GetPayload().(*GrpcLogEntry_ClientHeader); ok {\n\t\treturn x.ClientHeader\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcLogEntry) GetServerHeader() *ServerHeader {\n\tif x, ok := x.GetPayload().(*GrpcLogEntry_ServerHeader); ok {\n\t\treturn x.ServerHeader\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcLogEntry) GetMessage() *Message {\n\tif x, ok := x.GetPayload().(*GrpcLogEntry_Message); ok {\n\t\treturn x.Message\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcLogEntry) GetTrailer() *Trailer {\n\tif x, ok := x.GetPayload().(*GrpcLogEntry_Trailer); ok {\n\t\treturn x.Trailer\n\t}\n\treturn nil\n}\n\nfunc (x *GrpcLogEntry) GetPayloadTruncated() bool {\n\tif x != nil {\n\t\treturn x.PayloadTruncated\n\t}\n\treturn false\n}\n\nfunc (x *GrpcLogEntry) GetPeer() *Address {\n\tif x != nil {\n\t\treturn x.Peer\n\t}\n\treturn nil\n}\n\ntype isGrpcLogEntry_Payload interface {\n\tisGrpcLogEntry_Payload()\n}\n\ntype GrpcLogEntry_ClientHeader struct {\n\tClientHeader *ClientHeader `protobuf:\"bytes,6,opt,name=client_header,json=clientHeader,proto3,oneof\"`\n}\n\ntype GrpcLogEntry_ServerHeader struct {\n\tServerHeader *ServerHeader `protobuf:\"bytes,7,opt,name=server_header,json=serverHeader,proto3,oneof\"`\n}\n\ntype GrpcLogEntry_Message struct {\n\t// Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE\n\tMessage *Message `protobuf:\"bytes,8,opt,name=message,proto3,oneof\"`\n}\n\ntype GrpcLogEntry_Trailer struct {\n\tTrailer *Trailer `protobuf:\"bytes,9,opt,name=trailer,proto3,oneof\"`\n}\n\nfunc (*GrpcLogEntry_ClientHeader) isGrpcLogEntry_Payload() {}\n\nfunc (*GrpcLogEntry_ServerHeader) isGrpcLogEntry_Payload() {}\n\nfunc (*GrpcLogEntry_Message) isGrpcLogEntry_Payload() {}\n\nfunc (*GrpcLogEntry_Trailer) isGrpcLogEntry_Payload() {}\n\ntype ClientHeader struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// This contains only the metadata from the application.\n\tMetadata *Metadata `protobuf:\"bytes,1,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n\t// The name of the RPC method, which looks something like:\n\t// /<service>/<method>\n\t// Note the leading \"/\" character.\n\tMethodName string `protobuf:\"bytes,2,opt,name=method_name,json=methodName,proto3\" json:\"method_name,omitempty\"`\n\t// A single process may be used to run multiple virtual\n\t// servers with different identities.\n\t// The authority is the name of such a server identitiy.\n\t// It is typically a portion of the URI in the form of\n\t// <host> or <host>:<port> .\n\tAuthority string `protobuf:\"bytes,3,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\t// the RPC timeout\n\tTimeout *durationpb.Duration `protobuf:\"bytes,4,opt,name=timeout,proto3\" json:\"timeout,omitempty\"`\n}\n\nfunc (x *ClientHeader) Reset() {\n\t*x = ClientHeader{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ClientHeader) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ClientHeader) ProtoMessage() {}\n\nfunc (x *ClientHeader) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ClientHeader.ProtoReflect.Descriptor instead.\nfunc (*ClientHeader) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ClientHeader) GetMetadata() *Metadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\nfunc (x *ClientHeader) GetMethodName() string {\n\tif x != nil {\n\t\treturn x.MethodName\n\t}\n\treturn \"\"\n}\n\nfunc (x *ClientHeader) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (x *ClientHeader) GetTimeout() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Timeout\n\t}\n\treturn nil\n}\n\ntype ServerHeader struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// This contains only the metadata from the application.\n\tMetadata *Metadata `protobuf:\"bytes,1,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n}\n\nfunc (x *ServerHeader) Reset() {\n\t*x = ServerHeader{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ServerHeader) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ServerHeader) ProtoMessage() {}\n\nfunc (x *ServerHeader) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ServerHeader.ProtoReflect.Descriptor instead.\nfunc (*ServerHeader) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *ServerHeader) GetMetadata() *Metadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\ntype Trailer struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// This contains only the metadata from the application.\n\tMetadata *Metadata `protobuf:\"bytes,1,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n\t// The gRPC status code.\n\tStatusCode uint32 `protobuf:\"varint,2,opt,name=status_code,json=statusCode,proto3\" json:\"status_code,omitempty\"`\n\t// An original status message before any transport specific\n\t// encoding.\n\tStatusMessage string `protobuf:\"bytes,3,opt,name=status_message,json=statusMessage,proto3\" json:\"status_message,omitempty\"`\n\t// The value of the 'grpc-status-details-bin' metadata key. If\n\t// present, this is always an encoded 'google.rpc.Status' message.\n\tStatusDetails []byte `protobuf:\"bytes,4,opt,name=status_details,json=statusDetails,proto3\" json:\"status_details,omitempty\"`\n}\n\nfunc (x *Trailer) Reset() {\n\t*x = Trailer{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Trailer) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Trailer) ProtoMessage() {}\n\nfunc (x *Trailer) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Trailer.ProtoReflect.Descriptor instead.\nfunc (*Trailer) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *Trailer) GetMetadata() *Metadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\nfunc (x *Trailer) GetStatusCode() uint32 {\n\tif x != nil {\n\t\treturn x.StatusCode\n\t}\n\treturn 0\n}\n\nfunc (x *Trailer) GetStatusMessage() string {\n\tif x != nil {\n\t\treturn x.StatusMessage\n\t}\n\treturn \"\"\n}\n\nfunc (x *Trailer) GetStatusDetails() []byte {\n\tif x != nil {\n\t\treturn x.StatusDetails\n\t}\n\treturn nil\n}\n\n// Message payload, used by CLIENT_MESSAGE and SERVER_MESSAGE\ntype Message struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Length of the message. It may not be the same as the length of the\n\t// data field, as the logging payload can be truncated or omitted.\n\tLength uint32 `protobuf:\"varint,1,opt,name=length,proto3\" json:\"length,omitempty\"`\n\t// May be truncated or omitted.\n\tData []byte `protobuf:\"bytes,2,opt,name=data,proto3\" json:\"data,omitempty\"`\n}\n\nfunc (x *Message) Reset() {\n\t*x = Message{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Message) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Message) ProtoMessage() {}\n\nfunc (x *Message) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Message.ProtoReflect.Descriptor instead.\nfunc (*Message) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *Message) GetLength() uint32 {\n\tif x != nil {\n\t\treturn x.Length\n\t}\n\treturn 0\n}\n\nfunc (x *Message) GetData() []byte {\n\tif x != nil {\n\t\treturn x.Data\n\t}\n\treturn nil\n}\n\n// A list of metadata pairs, used in the payload of client header,\n// server header, and server trailer.\n// Implementations may omit some entries to honor the header limits\n// of GRPC_BINARY_LOG_CONFIG.\n//\n// Header keys added by gRPC are omitted. To be more specific,\n// implementations will not log the following entries, and this is\n// not to be treated as a truncation:\n//   - entries handled by grpc that are not user visible, such as those\n//     that begin with 'grpc-' (with exception of grpc-trace-bin)\n//     or keys like 'lb-token'\n//   - transport specific entries, including but not limited to:\n//     ':path', ':authority', 'content-encoding', 'user-agent', 'te', etc\n//   - entries added for call credentials\n//\n// Implementations must always log grpc-trace-bin if it is present.\n// Practically speaking it will only be visible on server side because\n// grpc-trace-bin is managed by low level client side mechanisms\n// inaccessible from the application level. On server side, the\n// header is just a normal metadata key.\n// The pair will not count towards the size limit.\ntype Metadata struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tEntry []*MetadataEntry `protobuf:\"bytes,1,rep,name=entry,proto3\" json:\"entry,omitempty\"`\n}\n\nfunc (x *Metadata) Reset() {\n\t*x = Metadata{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Metadata) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Metadata) ProtoMessage() {}\n\nfunc (x *Metadata) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Metadata.ProtoReflect.Descriptor instead.\nfunc (*Metadata) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *Metadata) GetEntry() []*MetadataEntry {\n\tif x != nil {\n\t\treturn x.Entry\n\t}\n\treturn nil\n}\n\n// A metadata key value pair\ntype MetadataEntry struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tKey   string `protobuf:\"bytes,1,opt,name=key,proto3\" json:\"key,omitempty\"`\n\tValue []byte `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\nfunc (x *MetadataEntry) Reset() {\n\t*x = MetadataEntry{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MetadataEntry) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MetadataEntry) ProtoMessage() {}\n\nfunc (x *MetadataEntry) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MetadataEntry.ProtoReflect.Descriptor instead.\nfunc (*MetadataEntry) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *MetadataEntry) GetKey() string {\n\tif x != nil {\n\t\treturn x.Key\n\t}\n\treturn \"\"\n}\n\nfunc (x *MetadataEntry) GetValue() []byte {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\n// Address information\ntype Address struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tType    Address_Type `protobuf:\"varint,1,opt,name=type,proto3,enum=grpc.binarylog.v1.Address_Type\" json:\"type,omitempty\"`\n\tAddress string       `protobuf:\"bytes,2,opt,name=address,proto3\" json:\"address,omitempty\"`\n\t// only for TYPE_IPV4 and TYPE_IPV6\n\tIpPort uint32 `protobuf:\"varint,3,opt,name=ip_port,json=ipPort,proto3\" json:\"ip_port,omitempty\"`\n}\n\nfunc (x *Address) Reset() {\n\t*x = Address{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Address) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Address) ProtoMessage() {}\n\nfunc (x *Address) ProtoReflect() protoreflect.Message {\n\tmi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Address.ProtoReflect.Descriptor instead.\nfunc (*Address) Descriptor() ([]byte, []int) {\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *Address) GetType() Address_Type {\n\tif x != nil {\n\t\treturn x.Type\n\t}\n\treturn Address_TYPE_UNKNOWN\n}\n\nfunc (x *Address) GetAddress() string {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn \"\"\n}\n\nfunc (x *Address) GetIpPort() uint32 {\n\tif x != nil {\n\t\treturn x.IpPort\n\t}\n\treturn 0\n}\n\nvar File_grpc_binlog_v1_binarylog_proto protoreflect.FileDescriptor\n\nvar file_grpc_binlog_v1_binarylog_proto_rawDesc = []byte{\n\t0x0a, 0x1e, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x2f, 0x76, 0x31,\n\t0x2f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x12, 0x11, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67,\n\t0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x07, 0x0a, 0x0c, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67,\n\t0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,\n\t0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,\n\t0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,\n\t0x17, 0x0a, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,\n\t0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x17, 0x73, 0x65, 0x71, 0x75,\n\t0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x5f, 0x63,\n\t0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x73, 0x65, 0x71, 0x75, 0x65,\n\t0x6e, 0x63, 0x65, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x12,\n\t0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e,\n\t0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76,\n\t0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x45,\n\t0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3e,\n\t0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26,\n\t0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e,\n\t0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e,\n\t0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x46,\n\t0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18,\n\t0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e,\n\t0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,\n\t0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,\n\t0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,\n\t0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,\n\t0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76,\n\t0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00,\n\t0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x36,\n\t0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67,\n\t0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x6d,\n\t0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65,\n\t0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62,\n\t0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x69,\n\t0x6c, 0x65, 0x72, 0x48, 0x00, 0x52, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x2b,\n\t0x0a, 0x11, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61,\n\t0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x61, 0x79, 0x6c, 0x6f,\n\t0x61, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x70,\n\t0x65, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63,\n\t0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64,\n\t0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x04, 0x70, 0x65, 0x65, 0x72, 0x22, 0xf5, 0x01, 0x0a, 0x09,\n\t0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45,\n\t0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,\n\t0x00, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,\n\t0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x01, 0x12,\n\t0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45,\n\t0x52, 0x56, 0x45, 0x52, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1d, 0x0a,\n\t0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45,\n\t0x4e, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19,\n\t0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45,\n\t0x52, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x45,\n\t0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54,\n\t0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x05, 0x12, 0x1d, 0x0a,\n\t0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56,\n\t0x45, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4c, 0x45, 0x52, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11,\n\t0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45,\n\t0x4c, 0x10, 0x07, 0x22, 0x42, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a,\n\t0x0e, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,\n\t0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x49, 0x45,\n\t0x4e, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x53,\n\t0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f,\n\t0x61, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61,\n\t0x64, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e,\n\t0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,\n\t0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b,\n\t0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a,\n\t0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x07, 0x74,\n\t0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,\n\t0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,\n\t0x22, 0x47, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,\n\t0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79,\n\t0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52,\n\t0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb1, 0x01, 0x0a, 0x07, 0x54, 0x72,\n\t0x61, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,\n\t0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62,\n\t0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61,\n\t0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f,\n\t0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12,\n\t0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,\n\t0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d,\n\t0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,\n\t0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d,\n\t0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x35, 0x0a,\n\t0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67,\n\t0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68,\n\t0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04,\n\t0x64, 0x61, 0x74, 0x61, 0x22, 0x42, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,\n\t0x12, 0x36, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67,\n\t0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72,\n\t0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x37, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61,\n\t0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,\n\t0x65, 0x22, 0xb8, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a,\n\t0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x72,\n\t0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e,\n\t0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79,\n\t0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07,\n\t0x69, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x69,\n\t0x70, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x45, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a,\n\t0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,\n\t0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x01, 0x12, 0x0d,\n\t0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x02, 0x12, 0x0d, 0x0a,\n\t0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x58, 0x10, 0x03, 0x42, 0x5c, 0x0a, 0x14,\n\t0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f,\n\t0x67, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x50,\n\t0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,\n\t0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62,\n\t0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x62, 0x69,\n\t0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x33,\n}\n\nvar (\n\tfile_grpc_binlog_v1_binarylog_proto_rawDescOnce sync.Once\n\tfile_grpc_binlog_v1_binarylog_proto_rawDescData = file_grpc_binlog_v1_binarylog_proto_rawDesc\n)\n\nfunc file_grpc_binlog_v1_binarylog_proto_rawDescGZIP() []byte {\n\tfile_grpc_binlog_v1_binarylog_proto_rawDescOnce.Do(func() {\n\t\tfile_grpc_binlog_v1_binarylog_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_binlog_v1_binarylog_proto_rawDescData)\n\t})\n\treturn file_grpc_binlog_v1_binarylog_proto_rawDescData\n}\n\nvar file_grpc_binlog_v1_binarylog_proto_enumTypes = make([]protoimpl.EnumInfo, 3)\nvar file_grpc_binlog_v1_binarylog_proto_msgTypes = make([]protoimpl.MessageInfo, 8)\nvar file_grpc_binlog_v1_binarylog_proto_goTypes = []interface{}{\n\t(GrpcLogEntry_EventType)(0),   // 0: grpc.binarylog.v1.GrpcLogEntry.EventType\n\t(GrpcLogEntry_Logger)(0),      // 1: grpc.binarylog.v1.GrpcLogEntry.Logger\n\t(Address_Type)(0),             // 2: grpc.binarylog.v1.Address.Type\n\t(*GrpcLogEntry)(nil),          // 3: grpc.binarylog.v1.GrpcLogEntry\n\t(*ClientHeader)(nil),          // 4: grpc.binarylog.v1.ClientHeader\n\t(*ServerHeader)(nil),          // 5: grpc.binarylog.v1.ServerHeader\n\t(*Trailer)(nil),               // 6: grpc.binarylog.v1.Trailer\n\t(*Message)(nil),               // 7: grpc.binarylog.v1.Message\n\t(*Metadata)(nil),              // 8: grpc.binarylog.v1.Metadata\n\t(*MetadataEntry)(nil),         // 9: grpc.binarylog.v1.MetadataEntry\n\t(*Address)(nil),               // 10: grpc.binarylog.v1.Address\n\t(*timestamppb.Timestamp)(nil), // 11: google.protobuf.Timestamp\n\t(*durationpb.Duration)(nil),   // 12: google.protobuf.Duration\n}\nvar file_grpc_binlog_v1_binarylog_proto_depIdxs = []int32{\n\t11, // 0: grpc.binarylog.v1.GrpcLogEntry.timestamp:type_name -> google.protobuf.Timestamp\n\t0,  // 1: grpc.binarylog.v1.GrpcLogEntry.type:type_name -> grpc.binarylog.v1.GrpcLogEntry.EventType\n\t1,  // 2: grpc.binarylog.v1.GrpcLogEntry.logger:type_name -> grpc.binarylog.v1.GrpcLogEntry.Logger\n\t4,  // 3: grpc.binarylog.v1.GrpcLogEntry.client_header:type_name -> grpc.binarylog.v1.ClientHeader\n\t5,  // 4: grpc.binarylog.v1.GrpcLogEntry.server_header:type_name -> grpc.binarylog.v1.ServerHeader\n\t7,  // 5: grpc.binarylog.v1.GrpcLogEntry.message:type_name -> grpc.binarylog.v1.Message\n\t6,  // 6: grpc.binarylog.v1.GrpcLogEntry.trailer:type_name -> grpc.binarylog.v1.Trailer\n\t10, // 7: grpc.binarylog.v1.GrpcLogEntry.peer:type_name -> grpc.binarylog.v1.Address\n\t8,  // 8: grpc.binarylog.v1.ClientHeader.metadata:type_name -> grpc.binarylog.v1.Metadata\n\t12, // 9: grpc.binarylog.v1.ClientHeader.timeout:type_name -> google.protobuf.Duration\n\t8,  // 10: grpc.binarylog.v1.ServerHeader.metadata:type_name -> grpc.binarylog.v1.Metadata\n\t8,  // 11: grpc.binarylog.v1.Trailer.metadata:type_name -> grpc.binarylog.v1.Metadata\n\t9,  // 12: grpc.binarylog.v1.Metadata.entry:type_name -> grpc.binarylog.v1.MetadataEntry\n\t2,  // 13: grpc.binarylog.v1.Address.type:type_name -> grpc.binarylog.v1.Address.Type\n\t14, // [14:14] is the sub-list for method output_type\n\t14, // [14:14] is the sub-list for method input_type\n\t14, // [14:14] is the sub-list for extension type_name\n\t14, // [14:14] is the sub-list for extension extendee\n\t0,  // [0:14] is the sub-list for field type_name\n}\n\nfunc init() { file_grpc_binlog_v1_binarylog_proto_init() }\nfunc file_grpc_binlog_v1_binarylog_proto_init() {\n\tif File_grpc_binlog_v1_binarylog_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_grpc_binlog_v1_binarylog_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GrpcLogEntry); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_grpc_binlog_v1_binarylog_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ClientHeader); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_grpc_binlog_v1_binarylog_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ServerHeader); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_grpc_binlog_v1_binarylog_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Trailer); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_grpc_binlog_v1_binarylog_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Message); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_grpc_binlog_v1_binarylog_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Metadata); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_grpc_binlog_v1_binarylog_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MetadataEntry); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_grpc_binlog_v1_binarylog_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Address); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tfile_grpc_binlog_v1_binarylog_proto_msgTypes[0].OneofWrappers = []interface{}{\n\t\t(*GrpcLogEntry_ClientHeader)(nil),\n\t\t(*GrpcLogEntry_ServerHeader)(nil),\n\t\t(*GrpcLogEntry_Message)(nil),\n\t\t(*GrpcLogEntry_Trailer)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_grpc_binlog_v1_binarylog_proto_rawDesc,\n\t\t\tNumEnums:      3,\n\t\t\tNumMessages:   8,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_grpc_binlog_v1_binarylog_proto_goTypes,\n\t\tDependencyIndexes: file_grpc_binlog_v1_binarylog_proto_depIdxs,\n\t\tEnumInfos:         file_grpc_binlog_v1_binarylog_proto_enumTypes,\n\t\tMessageInfos:      file_grpc_binlog_v1_binarylog_proto_msgTypes,\n\t}.Build()\n\tFile_grpc_binlog_v1_binarylog_proto = out.File\n\tfile_grpc_binlog_v1_binarylog_proto_rawDesc = nil\n\tfile_grpc_binlog_v1_binarylog_proto_goTypes = nil\n\tfile_grpc_binlog_v1_binarylog_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/call.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n)\n\n// Invoke sends the RPC request on the wire and returns after response is\n// received.  This is typically called by generated code.\n//\n// All errors returned by Invoke are compatible with the status package.\nfunc (cc *ClientConn) Invoke(ctx context.Context, method string, args, reply any, opts ...CallOption) error {\n\t// allow interceptor to see all applicable call options, which means those\n\t// configured as defaults from dial option as well as per-call options\n\topts = combine(cc.dopts.callOptions, opts)\n\n\tif cc.dopts.unaryInt != nil {\n\t\treturn cc.dopts.unaryInt(ctx, method, args, reply, cc, invoke, opts...)\n\t}\n\treturn invoke(ctx, method, args, reply, cc, opts...)\n}\n\nfunc combine(o1 []CallOption, o2 []CallOption) []CallOption {\n\t// we don't use append because o1 could have extra capacity whose\n\t// elements would be overwritten, which could cause inadvertent\n\t// sharing (and race conditions) between concurrent calls\n\tif len(o1) == 0 {\n\t\treturn o2\n\t} else if len(o2) == 0 {\n\t\treturn o1\n\t}\n\tret := make([]CallOption, len(o1)+len(o2))\n\tcopy(ret, o1)\n\tcopy(ret[len(o1):], o2)\n\treturn ret\n}\n\n// Invoke sends the RPC request on the wire and returns after response is\n// received.  This is typically called by generated code.\n//\n// DEPRECATED: Use ClientConn.Invoke instead.\nfunc Invoke(ctx context.Context, method string, args, reply any, cc *ClientConn, opts ...CallOption) error {\n\treturn cc.Invoke(ctx, method, args, reply, opts...)\n}\n\nvar unaryStreamDesc = &StreamDesc{ServerStreams: false, ClientStreams: false}\n\nfunc invoke(ctx context.Context, method string, req, reply any, cc *ClientConn, opts ...CallOption) error {\n\tcs, err := newClientStream(ctx, unaryStreamDesc, cc, method, opts...)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := cs.SendMsg(req); err != nil {\n\t\treturn err\n\t}\n\treturn cs.RecvMsg(reply)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/channelz/channelz.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package channelz exports internals of the channelz implementation as required\n// by other gRPC packages.\n//\n// The implementation of the channelz spec as defined in\n// https://github.com/grpc/proposal/blob/master/A14-channelz.md, is provided by\n// the `internal/channelz` package.\n//\n// # Experimental\n//\n// Notice: All APIs in this package are experimental and may be removed in a\n// later release.\npackage channelz\n\nimport \"google.golang.org/grpc/internal/channelz\"\n\n// Identifier is an opaque identifier which uniquely identifies an entity in the\n// channelz database.\ntype Identifier = channelz.Identifier\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/clientconn.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"net/url\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/balancer/base\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/backoff\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/internal/grpcsync\"\n\t\"google.golang.org/grpc/internal/idle\"\n\t\"google.golang.org/grpc/internal/pretty\"\n\tiresolver \"google.golang.org/grpc/internal/resolver\"\n\t\"google.golang.org/grpc/internal/transport\"\n\t\"google.golang.org/grpc/keepalive\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/serviceconfig\"\n\t\"google.golang.org/grpc/status\"\n\n\t_ \"google.golang.org/grpc/balancer/roundrobin\"           // To register roundrobin.\n\t_ \"google.golang.org/grpc/internal/resolver/dns\"         // To register dns resolver.\n\t_ \"google.golang.org/grpc/internal/resolver/passthrough\" // To register passthrough resolver.\n\t_ \"google.golang.org/grpc/internal/resolver/unix\"        // To register unix resolver.\n)\n\nconst (\n\t// minimum time to give a connection to complete\n\tminConnectTimeout = 20 * time.Second\n)\n\nvar (\n\t// ErrClientConnClosing indicates that the operation is illegal because\n\t// the ClientConn is closing.\n\t//\n\t// Deprecated: this error should not be relied upon by users; use the status\n\t// code of Canceled instead.\n\tErrClientConnClosing = status.Error(codes.Canceled, \"grpc: the client connection is closing\")\n\t// errConnDrain indicates that the connection starts to be drained and does not accept any new RPCs.\n\terrConnDrain = errors.New(\"grpc: the connection is drained\")\n\t// errConnClosing indicates that the connection is closing.\n\terrConnClosing = errors.New(\"grpc: the connection is closing\")\n\t// errConnIdling indicates the the connection is being closed as the channel\n\t// is moving to an idle mode due to inactivity.\n\terrConnIdling = errors.New(\"grpc: the connection is closing due to channel idleness\")\n\t// invalidDefaultServiceConfigErrPrefix is used to prefix the json parsing error for the default\n\t// service config.\n\tinvalidDefaultServiceConfigErrPrefix = \"grpc: the provided default service config is invalid\"\n)\n\n// The following errors are returned from Dial and DialContext\nvar (\n\t// errNoTransportSecurity indicates that there is no transport security\n\t// being set for ClientConn. Users should either set one or explicitly\n\t// call WithInsecure DialOption to disable security.\n\terrNoTransportSecurity = errors.New(\"grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials)\")\n\t// errTransportCredsAndBundle indicates that creds bundle is used together\n\t// with other individual Transport Credentials.\n\terrTransportCredsAndBundle = errors.New(\"grpc: credentials.Bundle may not be used with individual TransportCredentials\")\n\t// errNoTransportCredsInBundle indicated that the configured creds bundle\n\t// returned a transport credentials which was nil.\n\terrNoTransportCredsInBundle = errors.New(\"grpc: credentials.Bundle must return non-nil transport credentials\")\n\t// errTransportCredentialsMissing indicates that users want to transmit\n\t// security information (e.g., OAuth2 token) which requires secure\n\t// connection on an insecure connection.\n\terrTransportCredentialsMissing = errors.New(\"grpc: the credentials require transport level security (use grpc.WithTransportCredentials() to set)\")\n)\n\nconst (\n\tdefaultClientMaxReceiveMessageSize = 1024 * 1024 * 4\n\tdefaultClientMaxSendMessageSize    = math.MaxInt32\n\t// http2IOBufSize specifies the buffer size for sending frames.\n\tdefaultWriteBufSize = 32 * 1024\n\tdefaultReadBufSize  = 32 * 1024\n)\n\n// Dial creates a client connection to the given target.\nfunc Dial(target string, opts ...DialOption) (*ClientConn, error) {\n\treturn DialContext(context.Background(), target, opts...)\n}\n\ntype defaultConfigSelector struct {\n\tsc *ServiceConfig\n}\n\nfunc (dcs *defaultConfigSelector) SelectConfig(rpcInfo iresolver.RPCInfo) (*iresolver.RPCConfig, error) {\n\treturn &iresolver.RPCConfig{\n\t\tContext:      rpcInfo.Context,\n\t\tMethodConfig: getMethodConfig(dcs.sc, rpcInfo.Method),\n\t}, nil\n}\n\n// DialContext creates a client connection to the given target. By default, it's\n// a non-blocking dial (the function won't wait for connections to be\n// established, and connecting happens in the background). To make it a blocking\n// dial, use WithBlock() dial option.\n//\n// In the non-blocking case, the ctx does not act against the connection. It\n// only controls the setup steps.\n//\n// In the blocking case, ctx can be used to cancel or expire the pending\n// connection. Once this function returns, the cancellation and expiration of\n// ctx will be noop. Users should call ClientConn.Close to terminate all the\n// pending operations after this function returns.\n//\n// The target name syntax is defined in\n// https://github.com/grpc/grpc/blob/master/doc/naming.md.\n// e.g. to use dns resolver, a \"dns:///\" prefix should be applied to the target.\nfunc DialContext(ctx context.Context, target string, opts ...DialOption) (conn *ClientConn, err error) {\n\tcc := &ClientConn{\n\t\ttarget: target,\n\t\tconns:  make(map[*addrConn]struct{}),\n\t\tdopts:  defaultDialOptions(),\n\t\tczData: new(channelzData),\n\t}\n\n\t// We start the channel off in idle mode, but kick it out of idle at the end\n\t// of this method, instead of waiting for the first RPC. Other gRPC\n\t// implementations do wait for the first RPC to kick the channel out of\n\t// idle. But doing so would be a major behavior change for our users who are\n\t// used to seeing the channel active after Dial.\n\t//\n\t// Taking this approach of kicking it out of idle at the end of this method\n\t// allows us to share the code between channel creation and exiting idle\n\t// mode. This will also make it easy for us to switch to starting the\n\t// channel off in idle, if at all we ever get to do that.\n\tcc.idlenessState = ccIdlenessStateIdle\n\n\tcc.retryThrottler.Store((*retryThrottler)(nil))\n\tcc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{nil})\n\tcc.ctx, cc.cancel = context.WithCancel(context.Background())\n\tcc.exitIdleCond = sync.NewCond(&cc.mu)\n\n\tdisableGlobalOpts := false\n\tfor _, opt := range opts {\n\t\tif _, ok := opt.(*disableGlobalDialOptions); ok {\n\t\t\tdisableGlobalOpts = true\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif !disableGlobalOpts {\n\t\tfor _, opt := range globalDialOptions {\n\t\t\topt.apply(&cc.dopts)\n\t\t}\n\t}\n\n\tfor _, opt := range opts {\n\t\topt.apply(&cc.dopts)\n\t}\n\n\tchainUnaryClientInterceptors(cc)\n\tchainStreamClientInterceptors(cc)\n\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tcc.Close()\n\t\t}\n\t}()\n\n\t// Register ClientConn with channelz.\n\tcc.channelzRegistration(target)\n\n\tcc.csMgr = newConnectivityStateManager(cc.ctx, cc.channelzID)\n\n\tif err := cc.validateTransportCredentials(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif cc.dopts.defaultServiceConfigRawJSON != nil {\n\t\tscpr := parseServiceConfig(*cc.dopts.defaultServiceConfigRawJSON)\n\t\tif scpr.Err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%s: %v\", invalidDefaultServiceConfigErrPrefix, scpr.Err)\n\t\t}\n\t\tcc.dopts.defaultServiceConfig, _ = scpr.Config.(*ServiceConfig)\n\t}\n\tcc.mkp = cc.dopts.copts.KeepaliveParams\n\n\tif cc.dopts.copts.UserAgent != \"\" {\n\t\tcc.dopts.copts.UserAgent += \" \" + grpcUA\n\t} else {\n\t\tcc.dopts.copts.UserAgent = grpcUA\n\t}\n\n\tif cc.dopts.timeout > 0 {\n\t\tvar cancel context.CancelFunc\n\t\tctx, cancel = context.WithTimeout(ctx, cc.dopts.timeout)\n\t\tdefer cancel()\n\t}\n\tdefer func() {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\tswitch {\n\t\t\tcase ctx.Err() == err:\n\t\t\t\tconn = nil\n\t\t\tcase err == nil || !cc.dopts.returnLastError:\n\t\t\t\tconn, err = nil, ctx.Err()\n\t\t\tdefault:\n\t\t\t\tconn, err = nil, fmt.Errorf(\"%v: %v\", ctx.Err(), err)\n\t\t\t}\n\t\tdefault:\n\t\t}\n\t}()\n\n\tif cc.dopts.bs == nil {\n\t\tcc.dopts.bs = backoff.DefaultExponential\n\t}\n\n\t// Determine the resolver to use.\n\tif err := cc.parseTargetAndFindResolver(); err != nil {\n\t\treturn nil, err\n\t}\n\tif err = cc.determineAuthority(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif cc.dopts.scChan != nil {\n\t\t// Blocking wait for the initial service config.\n\t\tselect {\n\t\tcase sc, ok := <-cc.dopts.scChan:\n\t\t\tif ok {\n\t\t\t\tcc.sc = &sc\n\t\t\t\tcc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{&sc})\n\t\t\t}\n\t\tcase <-ctx.Done():\n\t\t\treturn nil, ctx.Err()\n\t\t}\n\t}\n\tif cc.dopts.scChan != nil {\n\t\tgo cc.scWatcher()\n\t}\n\n\t// This creates the name resolver, load balancer, blocking picker etc.\n\tif err := cc.exitIdleMode(); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Configure idleness support with configured idle timeout or default idle\n\t// timeout duration. Idleness can be explicitly disabled by the user, by\n\t// setting the dial option to 0.\n\tcc.idlenessMgr = idle.NewManager(idle.ManagerOptions{Enforcer: (*idler)(cc), Timeout: cc.dopts.idleTimeout, Logger: logger})\n\n\t// Return early for non-blocking dials.\n\tif !cc.dopts.block {\n\t\treturn cc, nil\n\t}\n\n\t// A blocking dial blocks until the clientConn is ready.\n\tfor {\n\t\ts := cc.GetState()\n\t\tif s == connectivity.Idle {\n\t\t\tcc.Connect()\n\t\t}\n\t\tif s == connectivity.Ready {\n\t\t\treturn cc, nil\n\t\t} else if cc.dopts.copts.FailOnNonTempDialError && s == connectivity.TransientFailure {\n\t\t\tif err = cc.connectionError(); err != nil {\n\t\t\t\tterr, ok := err.(interface {\n\t\t\t\t\tTemporary() bool\n\t\t\t\t})\n\t\t\t\tif ok && !terr.Temporary() {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif !cc.WaitForStateChange(ctx, s) {\n\t\t\t// ctx got timeout or canceled.\n\t\t\tif err = cc.connectionError(); err != nil && cc.dopts.returnLastError {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn nil, ctx.Err()\n\t\t}\n\t}\n}\n\n// addTraceEvent is a helper method to add a trace event on the channel. If the\n// channel is a nested one, the same event is also added on the parent channel.\nfunc (cc *ClientConn) addTraceEvent(msg string) {\n\tted := &channelz.TraceEventDesc{\n\t\tDesc:     fmt.Sprintf(\"Channel %s\", msg),\n\t\tSeverity: channelz.CtInfo,\n\t}\n\tif cc.dopts.channelzParentID != nil {\n\t\tted.Parent = &channelz.TraceEventDesc{\n\t\t\tDesc:     fmt.Sprintf(\"Nested channel(id:%d) %s\", cc.channelzID.Int(), msg),\n\t\t\tSeverity: channelz.CtInfo,\n\t\t}\n\t}\n\tchannelz.AddTraceEvent(logger, cc.channelzID, 0, ted)\n}\n\ntype idler ClientConn\n\nfunc (i *idler) EnterIdleMode() error {\n\treturn (*ClientConn)(i).enterIdleMode()\n}\n\nfunc (i *idler) ExitIdleMode() error {\n\treturn (*ClientConn)(i).exitIdleMode()\n}\n\n// exitIdleMode moves the channel out of idle mode by recreating the name\n// resolver and load balancer.\nfunc (cc *ClientConn) exitIdleMode() error {\n\tcc.mu.Lock()\n\tif cc.conns == nil {\n\t\tcc.mu.Unlock()\n\t\treturn errConnClosing\n\t}\n\tif cc.idlenessState != ccIdlenessStateIdle {\n\t\tchannelz.Infof(logger, cc.channelzID, \"ClientConn asked to exit idle mode, current mode is %v\", cc.idlenessState)\n\t\tcc.mu.Unlock()\n\t\treturn nil\n\t}\n\n\tdefer func() {\n\t\t// When Close() and exitIdleMode() race against each other, one of the\n\t\t// following two can happen:\n\t\t// - Close() wins the race and runs first. exitIdleMode() runs after, and\n\t\t//   sees that the ClientConn is already closed and hence returns early.\n\t\t// - exitIdleMode() wins the race and runs first and recreates the balancer\n\t\t//   and releases the lock before recreating the resolver. If Close() runs\n\t\t//   in this window, it will wait for exitIdleMode to complete.\n\t\t//\n\t\t// We achieve this synchronization using the below condition variable.\n\t\tcc.mu.Lock()\n\t\tcc.idlenessState = ccIdlenessStateActive\n\t\tcc.exitIdleCond.Signal()\n\t\tcc.mu.Unlock()\n\t}()\n\n\tcc.idlenessState = ccIdlenessStateExitingIdle\n\texitedIdle := false\n\tif cc.blockingpicker == nil {\n\t\tcc.blockingpicker = newPickerWrapper(cc.dopts.copts.StatsHandlers)\n\t} else {\n\t\tcc.blockingpicker.exitIdleMode()\n\t\texitedIdle = true\n\t}\n\n\tvar credsClone credentials.TransportCredentials\n\tif creds := cc.dopts.copts.TransportCredentials; creds != nil {\n\t\tcredsClone = creds.Clone()\n\t}\n\tif cc.balancerWrapper == nil {\n\t\tcc.balancerWrapper = newCCBalancerWrapper(cc, balancer.BuildOptions{\n\t\t\tDialCreds:        credsClone,\n\t\t\tCredsBundle:      cc.dopts.copts.CredsBundle,\n\t\t\tDialer:           cc.dopts.copts.Dialer,\n\t\t\tAuthority:        cc.authority,\n\t\t\tCustomUserAgent:  cc.dopts.copts.UserAgent,\n\t\t\tChannelzParentID: cc.channelzID,\n\t\t\tTarget:           cc.parsedTarget,\n\t\t})\n\t} else {\n\t\tcc.balancerWrapper.exitIdleMode()\n\t}\n\tcc.firstResolveEvent = grpcsync.NewEvent()\n\tcc.mu.Unlock()\n\n\t// This needs to be called without cc.mu because this builds a new resolver\n\t// which might update state or report error inline which needs to be handled\n\t// by cc.updateResolverState() which also grabs cc.mu.\n\tif err := cc.initResolverWrapper(credsClone); err != nil {\n\t\treturn err\n\t}\n\n\tif exitedIdle {\n\t\tcc.addTraceEvent(\"exiting idle mode\")\n\t}\n\treturn nil\n}\n\n// enterIdleMode puts the channel in idle mode, and as part of it shuts down the\n// name resolver, load balancer and any subchannels.\nfunc (cc *ClientConn) enterIdleMode() error {\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\n\tif cc.conns == nil {\n\t\treturn ErrClientConnClosing\n\t}\n\tif cc.idlenessState != ccIdlenessStateActive {\n\t\tchannelz.Warningf(logger, cc.channelzID, \"ClientConn asked to enter idle mode, current mode is %v\", cc.idlenessState)\n\t\treturn nil\n\t}\n\n\t// cc.conns == nil is a proxy for the ClientConn being closed. So, instead\n\t// of setting it to nil here, we recreate the map. This also means that we\n\t// don't have to do this when exiting idle mode.\n\tconns := cc.conns\n\tcc.conns = make(map[*addrConn]struct{})\n\n\t// TODO: Currently, we close the resolver wrapper upon entering idle mode\n\t// and create a new one upon exiting idle mode. This means that the\n\t// `cc.resolverWrapper` field would be overwritten everytime we exit idle\n\t// mode. While this means that we need to hold `cc.mu` when accessing\n\t// `cc.resolverWrapper`, it makes the code simpler in the wrapper. We should\n\t// try to do the same for the balancer and picker wrappers too.\n\tcc.resolverWrapper.close()\n\tcc.blockingpicker.enterIdleMode()\n\tcc.balancerWrapper.enterIdleMode()\n\tcc.csMgr.updateState(connectivity.Idle)\n\tcc.idlenessState = ccIdlenessStateIdle\n\tcc.addTraceEvent(\"entering idle mode\")\n\n\tgo func() {\n\t\tfor ac := range conns {\n\t\t\tac.tearDown(errConnIdling)\n\t\t}\n\t}()\n\n\treturn nil\n}\n\n// validateTransportCredentials performs a series of checks on the configured\n// transport credentials. It returns a non-nil error if any of these conditions\n// are met:\n//   - no transport creds and no creds bundle is configured\n//   - both transport creds and creds bundle are configured\n//   - creds bundle is configured, but it lacks a transport credentials\n//   - insecure transport creds configured alongside call creds that require\n//     transport level security\n//\n// If none of the above conditions are met, the configured credentials are\n// deemed valid and a nil error is returned.\nfunc (cc *ClientConn) validateTransportCredentials() error {\n\tif cc.dopts.copts.TransportCredentials == nil && cc.dopts.copts.CredsBundle == nil {\n\t\treturn errNoTransportSecurity\n\t}\n\tif cc.dopts.copts.TransportCredentials != nil && cc.dopts.copts.CredsBundle != nil {\n\t\treturn errTransportCredsAndBundle\n\t}\n\tif cc.dopts.copts.CredsBundle != nil && cc.dopts.copts.CredsBundle.TransportCredentials() == nil {\n\t\treturn errNoTransportCredsInBundle\n\t}\n\ttransportCreds := cc.dopts.copts.TransportCredentials\n\tif transportCreds == nil {\n\t\ttransportCreds = cc.dopts.copts.CredsBundle.TransportCredentials()\n\t}\n\tif transportCreds.Info().SecurityProtocol == \"insecure\" {\n\t\tfor _, cd := range cc.dopts.copts.PerRPCCredentials {\n\t\t\tif cd.RequireTransportSecurity() {\n\t\t\t\treturn errTransportCredentialsMissing\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// channelzRegistration registers the newly created ClientConn with channelz and\n// stores the returned identifier in `cc.channelzID` and `cc.csMgr.channelzID`.\n// A channelz trace event is emitted for ClientConn creation. If the newly\n// created ClientConn is a nested one, i.e a valid parent ClientConn ID is\n// specified via a dial option, the trace event is also added to the parent.\n//\n// Doesn't grab cc.mu as this method is expected to be called only at Dial time.\nfunc (cc *ClientConn) channelzRegistration(target string) {\n\tcc.channelzID = channelz.RegisterChannel(&channelzChannel{cc}, cc.dopts.channelzParentID, target)\n\tcc.addTraceEvent(\"created\")\n}\n\n// chainUnaryClientInterceptors chains all unary client interceptors into one.\nfunc chainUnaryClientInterceptors(cc *ClientConn) {\n\tinterceptors := cc.dopts.chainUnaryInts\n\t// Prepend dopts.unaryInt to the chaining interceptors if it exists, since unaryInt will\n\t// be executed before any other chained interceptors.\n\tif cc.dopts.unaryInt != nil {\n\t\tinterceptors = append([]UnaryClientInterceptor{cc.dopts.unaryInt}, interceptors...)\n\t}\n\tvar chainedInt UnaryClientInterceptor\n\tif len(interceptors) == 0 {\n\t\tchainedInt = nil\n\t} else if len(interceptors) == 1 {\n\t\tchainedInt = interceptors[0]\n\t} else {\n\t\tchainedInt = func(ctx context.Context, method string, req, reply any, cc *ClientConn, invoker UnaryInvoker, opts ...CallOption) error {\n\t\t\treturn interceptors[0](ctx, method, req, reply, cc, getChainUnaryInvoker(interceptors, 0, invoker), opts...)\n\t\t}\n\t}\n\tcc.dopts.unaryInt = chainedInt\n}\n\n// getChainUnaryInvoker recursively generate the chained unary invoker.\nfunc getChainUnaryInvoker(interceptors []UnaryClientInterceptor, curr int, finalInvoker UnaryInvoker) UnaryInvoker {\n\tif curr == len(interceptors)-1 {\n\t\treturn finalInvoker\n\t}\n\treturn func(ctx context.Context, method string, req, reply any, cc *ClientConn, opts ...CallOption) error {\n\t\treturn interceptors[curr+1](ctx, method, req, reply, cc, getChainUnaryInvoker(interceptors, curr+1, finalInvoker), opts...)\n\t}\n}\n\n// chainStreamClientInterceptors chains all stream client interceptors into one.\nfunc chainStreamClientInterceptors(cc *ClientConn) {\n\tinterceptors := cc.dopts.chainStreamInts\n\t// Prepend dopts.streamInt to the chaining interceptors if it exists, since streamInt will\n\t// be executed before any other chained interceptors.\n\tif cc.dopts.streamInt != nil {\n\t\tinterceptors = append([]StreamClientInterceptor{cc.dopts.streamInt}, interceptors...)\n\t}\n\tvar chainedInt StreamClientInterceptor\n\tif len(interceptors) == 0 {\n\t\tchainedInt = nil\n\t} else if len(interceptors) == 1 {\n\t\tchainedInt = interceptors[0]\n\t} else {\n\t\tchainedInt = func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, streamer Streamer, opts ...CallOption) (ClientStream, error) {\n\t\t\treturn interceptors[0](ctx, desc, cc, method, getChainStreamer(interceptors, 0, streamer), opts...)\n\t\t}\n\t}\n\tcc.dopts.streamInt = chainedInt\n}\n\n// getChainStreamer recursively generate the chained client stream constructor.\nfunc getChainStreamer(interceptors []StreamClientInterceptor, curr int, finalStreamer Streamer) Streamer {\n\tif curr == len(interceptors)-1 {\n\t\treturn finalStreamer\n\t}\n\treturn func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (ClientStream, error) {\n\t\treturn interceptors[curr+1](ctx, desc, cc, method, getChainStreamer(interceptors, curr+1, finalStreamer), opts...)\n\t}\n}\n\n// newConnectivityStateManager creates an connectivityStateManager with\n// the specified id.\nfunc newConnectivityStateManager(ctx context.Context, id *channelz.Identifier) *connectivityStateManager {\n\treturn &connectivityStateManager{\n\t\tchannelzID: id,\n\t\tpubSub:     grpcsync.NewPubSub(ctx),\n\t}\n}\n\n// connectivityStateManager keeps the connectivity.State of ClientConn.\n// This struct will eventually be exported so the balancers can access it.\n//\n// TODO: If possible, get rid of the `connectivityStateManager` type, and\n// provide this functionality using the `PubSub`, to avoid keeping track of\n// the connectivity state at two places.\ntype connectivityStateManager struct {\n\tmu         sync.Mutex\n\tstate      connectivity.State\n\tnotifyChan chan struct{}\n\tchannelzID *channelz.Identifier\n\tpubSub     *grpcsync.PubSub\n}\n\n// updateState updates the connectivity.State of ClientConn.\n// If there's a change it notifies goroutines waiting on state change to\n// happen.\nfunc (csm *connectivityStateManager) updateState(state connectivity.State) {\n\tcsm.mu.Lock()\n\tdefer csm.mu.Unlock()\n\tif csm.state == connectivity.Shutdown {\n\t\treturn\n\t}\n\tif csm.state == state {\n\t\treturn\n\t}\n\tcsm.state = state\n\tcsm.pubSub.Publish(state)\n\n\tchannelz.Infof(logger, csm.channelzID, \"Channel Connectivity change to %v\", state)\n\tif csm.notifyChan != nil {\n\t\t// There are other goroutines waiting on this channel.\n\t\tclose(csm.notifyChan)\n\t\tcsm.notifyChan = nil\n\t}\n}\n\nfunc (csm *connectivityStateManager) getState() connectivity.State {\n\tcsm.mu.Lock()\n\tdefer csm.mu.Unlock()\n\treturn csm.state\n}\n\nfunc (csm *connectivityStateManager) getNotifyChan() <-chan struct{} {\n\tcsm.mu.Lock()\n\tdefer csm.mu.Unlock()\n\tif csm.notifyChan == nil {\n\t\tcsm.notifyChan = make(chan struct{})\n\t}\n\treturn csm.notifyChan\n}\n\n// ClientConnInterface defines the functions clients need to perform unary and\n// streaming RPCs.  It is implemented by *ClientConn, and is only intended to\n// be referenced by generated code.\ntype ClientConnInterface interface {\n\t// Invoke performs a unary RPC and returns after the response is received\n\t// into reply.\n\tInvoke(ctx context.Context, method string, args any, reply any, opts ...CallOption) error\n\t// NewStream begins a streaming RPC.\n\tNewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error)\n}\n\n// Assert *ClientConn implements ClientConnInterface.\nvar _ ClientConnInterface = (*ClientConn)(nil)\n\n// ClientConn represents a virtual connection to a conceptual endpoint, to\n// perform RPCs.\n//\n// A ClientConn is free to have zero or more actual connections to the endpoint\n// based on configuration, load, etc. It is also free to determine which actual\n// endpoints to use and may change it every RPC, permitting client-side load\n// balancing.\n//\n// A ClientConn encapsulates a range of functionality including name\n// resolution, TCP connection establishment (with retries and backoff) and TLS\n// handshakes. It also handles errors on established connections by\n// re-resolving the name and reconnecting.\ntype ClientConn struct {\n\tctx    context.Context    // Initialized using the background context at dial time.\n\tcancel context.CancelFunc // Cancelled on close.\n\n\t// The following are initialized at dial time, and are read-only after that.\n\ttarget          string               // User's dial target.\n\tparsedTarget    resolver.Target      // See parseTargetAndFindResolver().\n\tauthority       string               // See determineAuthority().\n\tdopts           dialOptions          // Default and user specified dial options.\n\tchannelzID      *channelz.Identifier // Channelz identifier for the channel.\n\tresolverBuilder resolver.Builder     // See parseTargetAndFindResolver().\n\tbalancerWrapper *ccBalancerWrapper   // Uses gracefulswitch.balancer underneath.\n\tidlenessMgr     idle.Manager\n\n\t// The following provide their own synchronization, and therefore don't\n\t// require cc.mu to be held to access them.\n\tcsMgr              *connectivityStateManager\n\tblockingpicker     *pickerWrapper\n\tsafeConfigSelector iresolver.SafeConfigSelector\n\tczData             *channelzData\n\tretryThrottler     atomic.Value // Updated from service config.\n\n\t// firstResolveEvent is used to track whether the name resolver sent us at\n\t// least one update. RPCs block on this event.\n\tfirstResolveEvent *grpcsync.Event\n\n\t// mu protects the following fields.\n\t// TODO: split mu so the same mutex isn't used for everything.\n\tmu              sync.RWMutex\n\tresolverWrapper *ccResolverWrapper         // Initialized in Dial; cleared in Close.\n\tsc              *ServiceConfig             // Latest service config received from the resolver.\n\tconns           map[*addrConn]struct{}     // Set to nil on close.\n\tmkp             keepalive.ClientParameters // May be updated upon receipt of a GoAway.\n\tidlenessState   ccIdlenessState            // Tracks idleness state of the channel.\n\texitIdleCond    *sync.Cond                 // Signalled when channel exits idle.\n\n\tlceMu               sync.Mutex // protects lastConnectionError\n\tlastConnectionError error\n}\n\n// ccIdlenessState tracks the idleness state of the channel.\n//\n// Channels start off in `active` and move to `idle` after a period of\n// inactivity. When moving back to `active` upon an incoming RPC, they\n// transition through `exiting_idle`. This state is useful for synchronization\n// with Close().\n//\n// This state tracking is mostly for self-protection. The idlenessManager is\n// expected to keep track of the state as well, and is expected not to call into\n// the ClientConn unnecessarily.\ntype ccIdlenessState int8\n\nconst (\n\tccIdlenessStateActive ccIdlenessState = iota\n\tccIdlenessStateIdle\n\tccIdlenessStateExitingIdle\n)\n\nfunc (s ccIdlenessState) String() string {\n\tswitch s {\n\tcase ccIdlenessStateActive:\n\t\treturn \"active\"\n\tcase ccIdlenessStateIdle:\n\t\treturn \"idle\"\n\tcase ccIdlenessStateExitingIdle:\n\t\treturn \"exitingIdle\"\n\tdefault:\n\t\treturn \"unknown\"\n\t}\n}\n\n// WaitForStateChange waits until the connectivity.State of ClientConn changes from sourceState or\n// ctx expires. A true value is returned in former case and false in latter.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc (cc *ClientConn) WaitForStateChange(ctx context.Context, sourceState connectivity.State) bool {\n\tch := cc.csMgr.getNotifyChan()\n\tif cc.csMgr.getState() != sourceState {\n\t\treturn true\n\t}\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn false\n\tcase <-ch:\n\t\treturn true\n\t}\n}\n\n// GetState returns the connectivity.State of ClientConn.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a later\n// release.\nfunc (cc *ClientConn) GetState() connectivity.State {\n\treturn cc.csMgr.getState()\n}\n\n// Connect causes all subchannels in the ClientConn to attempt to connect if\n// the channel is idle.  Does not wait for the connection attempts to begin\n// before returning.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a later\n// release.\nfunc (cc *ClientConn) Connect() {\n\tcc.exitIdleMode()\n\t// If the ClientConn was not in idle mode, we need to call ExitIdle on the\n\t// LB policy so that connections can be created.\n\tcc.balancerWrapper.exitIdleMode()\n}\n\nfunc (cc *ClientConn) scWatcher() {\n\tfor {\n\t\tselect {\n\t\tcase sc, ok := <-cc.dopts.scChan:\n\t\t\tif !ok {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcc.mu.Lock()\n\t\t\t// TODO: load balance policy runtime change is ignored.\n\t\t\t// We may revisit this decision in the future.\n\t\t\tcc.sc = &sc\n\t\t\tcc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{&sc})\n\t\t\tcc.mu.Unlock()\n\t\tcase <-cc.ctx.Done():\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// waitForResolvedAddrs blocks until the resolver has provided addresses or the\n// context expires.  Returns nil unless the context expires first; otherwise\n// returns a status error based on the context.\nfunc (cc *ClientConn) waitForResolvedAddrs(ctx context.Context) error {\n\t// This is on the RPC path, so we use a fast path to avoid the\n\t// more-expensive \"select\" below after the resolver has returned once.\n\tif cc.firstResolveEvent.HasFired() {\n\t\treturn nil\n\t}\n\tselect {\n\tcase <-cc.firstResolveEvent.Done():\n\t\treturn nil\n\tcase <-ctx.Done():\n\t\treturn status.FromContextError(ctx.Err()).Err()\n\tcase <-cc.ctx.Done():\n\t\treturn ErrClientConnClosing\n\t}\n}\n\nvar emptyServiceConfig *ServiceConfig\n\nfunc init() {\n\tcfg := parseServiceConfig(\"{}\")\n\tif cfg.Err != nil {\n\t\tpanic(fmt.Sprintf(\"impossible error parsing empty service config: %v\", cfg.Err))\n\t}\n\temptyServiceConfig = cfg.Config.(*ServiceConfig)\n\n\tinternal.SubscribeToConnectivityStateChanges = func(cc *ClientConn, s grpcsync.Subscriber) func() {\n\t\treturn cc.csMgr.pubSub.Subscribe(s)\n\t}\n\tinternal.EnterIdleModeForTesting = func(cc *ClientConn) error {\n\t\treturn cc.enterIdleMode()\n\t}\n\tinternal.ExitIdleModeForTesting = func(cc *ClientConn) error {\n\t\treturn cc.exitIdleMode()\n\t}\n}\n\nfunc (cc *ClientConn) maybeApplyDefaultServiceConfig(addrs []resolver.Address) {\n\tif cc.sc != nil {\n\t\tcc.applyServiceConfigAndBalancer(cc.sc, nil, addrs)\n\t\treturn\n\t}\n\tif cc.dopts.defaultServiceConfig != nil {\n\t\tcc.applyServiceConfigAndBalancer(cc.dopts.defaultServiceConfig, &defaultConfigSelector{cc.dopts.defaultServiceConfig}, addrs)\n\t} else {\n\t\tcc.applyServiceConfigAndBalancer(emptyServiceConfig, &defaultConfigSelector{emptyServiceConfig}, addrs)\n\t}\n}\n\nfunc (cc *ClientConn) updateResolverState(s resolver.State, err error) error {\n\tdefer cc.firstResolveEvent.Fire()\n\tcc.mu.Lock()\n\t// Check if the ClientConn is already closed. Some fields (e.g.\n\t// balancerWrapper) are set to nil when closing the ClientConn, and could\n\t// cause nil pointer panic if we don't have this check.\n\tif cc.conns == nil {\n\t\tcc.mu.Unlock()\n\t\treturn nil\n\t}\n\n\tif err != nil {\n\t\t// May need to apply the initial service config in case the resolver\n\t\t// doesn't support service configs, or doesn't provide a service config\n\t\t// with the new addresses.\n\t\tcc.maybeApplyDefaultServiceConfig(nil)\n\n\t\tcc.balancerWrapper.resolverError(err)\n\n\t\t// No addresses are valid with err set; return early.\n\t\tcc.mu.Unlock()\n\t\treturn balancer.ErrBadResolverState\n\t}\n\n\tvar ret error\n\tif cc.dopts.disableServiceConfig {\n\t\tchannelz.Infof(logger, cc.channelzID, \"ignoring service config from resolver (%v) and applying the default because service config is disabled\", s.ServiceConfig)\n\t\tcc.maybeApplyDefaultServiceConfig(s.Addresses)\n\t} else if s.ServiceConfig == nil {\n\t\tcc.maybeApplyDefaultServiceConfig(s.Addresses)\n\t\t// TODO: do we need to apply a failing LB policy if there is no\n\t\t// default, per the error handling design?\n\t} else {\n\t\tif sc, ok := s.ServiceConfig.Config.(*ServiceConfig); s.ServiceConfig.Err == nil && ok {\n\t\t\tconfigSelector := iresolver.GetConfigSelector(s)\n\t\t\tif configSelector != nil {\n\t\t\t\tif len(s.ServiceConfig.Config.(*ServiceConfig).Methods) != 0 {\n\t\t\t\t\tchannelz.Infof(logger, cc.channelzID, \"method configs in service config will be ignored due to presence of config selector\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconfigSelector = &defaultConfigSelector{sc}\n\t\t\t}\n\t\t\tcc.applyServiceConfigAndBalancer(sc, configSelector, s.Addresses)\n\t\t} else {\n\t\t\tret = balancer.ErrBadResolverState\n\t\t\tif cc.sc == nil {\n\t\t\t\t// Apply the failing LB only if we haven't received valid service config\n\t\t\t\t// from the name resolver in the past.\n\t\t\t\tcc.applyFailingLB(s.ServiceConfig)\n\t\t\t\tcc.mu.Unlock()\n\t\t\t\treturn ret\n\t\t\t}\n\t\t}\n\t}\n\n\tvar balCfg serviceconfig.LoadBalancingConfig\n\tif cc.sc != nil && cc.sc.lbConfig != nil {\n\t\tbalCfg = cc.sc.lbConfig.cfg\n\t}\n\tbw := cc.balancerWrapper\n\tcc.mu.Unlock()\n\n\tuccsErr := bw.updateClientConnState(&balancer.ClientConnState{ResolverState: s, BalancerConfig: balCfg})\n\tif ret == nil {\n\t\tret = uccsErr // prefer ErrBadResolver state since any other error is\n\t\t// currently meaningless to the caller.\n\t}\n\treturn ret\n}\n\n// applyFailingLB is akin to configuring an LB policy on the channel which\n// always fails RPCs. Here, an actual LB policy is not configured, but an always\n// erroring picker is configured, which returns errors with information about\n// what was invalid in the received service config. A config selector with no\n// service config is configured, and the connectivity state of the channel is\n// set to TransientFailure.\n//\n// Caller must hold cc.mu.\nfunc (cc *ClientConn) applyFailingLB(sc *serviceconfig.ParseResult) {\n\tvar err error\n\tif sc.Err != nil {\n\t\terr = status.Errorf(codes.Unavailable, \"error parsing service config: %v\", sc.Err)\n\t} else {\n\t\terr = status.Errorf(codes.Unavailable, \"illegal service config type: %T\", sc.Config)\n\t}\n\tcc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{nil})\n\tcc.blockingpicker.updatePicker(base.NewErrPicker(err))\n\tcc.csMgr.updateState(connectivity.TransientFailure)\n}\n\nfunc (cc *ClientConn) handleSubConnStateChange(sc balancer.SubConn, s connectivity.State, err error) {\n\tcc.balancerWrapper.updateSubConnState(sc, s, err)\n}\n\n// Makes a copy of the input addresses slice and clears out the balancer\n// attributes field. Addresses are passed during subconn creation and address\n// update operations. In both cases, we will clear the balancer attributes by\n// calling this function, and therefore we will be able to use the Equal method\n// provided by the resolver.Address type for comparison.\nfunc copyAddressesWithoutBalancerAttributes(in []resolver.Address) []resolver.Address {\n\tout := make([]resolver.Address, len(in))\n\tfor i := range in {\n\t\tout[i] = in[i]\n\t\tout[i].BalancerAttributes = nil\n\t}\n\treturn out\n}\n\n// newAddrConn creates an addrConn for addrs and adds it to cc.conns.\n//\n// Caller needs to make sure len(addrs) > 0.\nfunc (cc *ClientConn) newAddrConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (*addrConn, error) {\n\tac := &addrConn{\n\t\tstate:        connectivity.Idle,\n\t\tcc:           cc,\n\t\taddrs:        copyAddressesWithoutBalancerAttributes(addrs),\n\t\tscopts:       opts,\n\t\tdopts:        cc.dopts,\n\t\tczData:       new(channelzData),\n\t\tresetBackoff: make(chan struct{}),\n\t\tstateChan:    make(chan struct{}),\n\t}\n\tac.ctx, ac.cancel = context.WithCancel(cc.ctx)\n\t// Track ac in cc. This needs to be done before any getTransport(...) is called.\n\tcc.mu.Lock()\n\tdefer cc.mu.Unlock()\n\tif cc.conns == nil {\n\t\treturn nil, ErrClientConnClosing\n\t}\n\n\tvar err error\n\tac.channelzID, err = channelz.RegisterSubChannel(ac, cc.channelzID, \"\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tchannelz.AddTraceEvent(logger, ac.channelzID, 0, &channelz.TraceEventDesc{\n\t\tDesc:     \"Subchannel created\",\n\t\tSeverity: channelz.CtInfo,\n\t\tParent: &channelz.TraceEventDesc{\n\t\t\tDesc:     fmt.Sprintf(\"Subchannel(id:%d) created\", ac.channelzID.Int()),\n\t\t\tSeverity: channelz.CtInfo,\n\t\t},\n\t})\n\n\tcc.conns[ac] = struct{}{}\n\treturn ac, nil\n}\n\n// removeAddrConn removes the addrConn in the subConn from clientConn.\n// It also tears down the ac with the given error.\nfunc (cc *ClientConn) removeAddrConn(ac *addrConn, err error) {\n\tcc.mu.Lock()\n\tif cc.conns == nil {\n\t\tcc.mu.Unlock()\n\t\treturn\n\t}\n\tdelete(cc.conns, ac)\n\tcc.mu.Unlock()\n\tac.tearDown(err)\n}\n\nfunc (cc *ClientConn) channelzMetric() *channelz.ChannelInternalMetric {\n\treturn &channelz.ChannelInternalMetric{\n\t\tState:                    cc.GetState(),\n\t\tTarget:                   cc.target,\n\t\tCallsStarted:             atomic.LoadInt64(&cc.czData.callsStarted),\n\t\tCallsSucceeded:           atomic.LoadInt64(&cc.czData.callsSucceeded),\n\t\tCallsFailed:              atomic.LoadInt64(&cc.czData.callsFailed),\n\t\tLastCallStartedTimestamp: time.Unix(0, atomic.LoadInt64(&cc.czData.lastCallStartedTime)),\n\t}\n}\n\n// Target returns the target string of the ClientConn.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc (cc *ClientConn) Target() string {\n\treturn cc.target\n}\n\nfunc (cc *ClientConn) incrCallsStarted() {\n\tatomic.AddInt64(&cc.czData.callsStarted, 1)\n\tatomic.StoreInt64(&cc.czData.lastCallStartedTime, time.Now().UnixNano())\n}\n\nfunc (cc *ClientConn) incrCallsSucceeded() {\n\tatomic.AddInt64(&cc.czData.callsSucceeded, 1)\n}\n\nfunc (cc *ClientConn) incrCallsFailed() {\n\tatomic.AddInt64(&cc.czData.callsFailed, 1)\n}\n\n// connect starts creating a transport.\n// It does nothing if the ac is not IDLE.\n// TODO(bar) Move this to the addrConn section.\nfunc (ac *addrConn) connect() error {\n\tac.mu.Lock()\n\tif ac.state == connectivity.Shutdown {\n\t\tif logger.V(2) {\n\t\t\tlogger.Infof(\"connect called on shutdown addrConn; ignoring.\")\n\t\t}\n\t\tac.mu.Unlock()\n\t\treturn errConnClosing\n\t}\n\tif ac.state != connectivity.Idle {\n\t\tif logger.V(2) {\n\t\t\tlogger.Infof(\"connect called on addrConn in non-idle state (%v); ignoring.\", ac.state)\n\t\t}\n\t\tac.mu.Unlock()\n\t\treturn nil\n\t}\n\tac.mu.Unlock()\n\n\tac.resetTransport()\n\treturn nil\n}\n\nfunc equalAddresses(a, b []resolver.Address) bool {\n\tif len(a) != len(b) {\n\t\treturn false\n\t}\n\tfor i, v := range a {\n\t\tif !v.Equal(b[i]) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// updateAddrs updates ac.addrs with the new addresses list and handles active\n// connections or connection attempts.\nfunc (ac *addrConn) updateAddrs(addrs []resolver.Address) {\n\tac.mu.Lock()\n\tchannelz.Infof(logger, ac.channelzID, \"addrConn: updateAddrs curAddr: %v, addrs: %v\", pretty.ToJSON(ac.curAddr), pretty.ToJSON(addrs))\n\n\taddrs = copyAddressesWithoutBalancerAttributes(addrs)\n\tif equalAddresses(ac.addrs, addrs) {\n\t\tac.mu.Unlock()\n\t\treturn\n\t}\n\n\tac.addrs = addrs\n\n\tif ac.state == connectivity.Shutdown ||\n\t\tac.state == connectivity.TransientFailure ||\n\t\tac.state == connectivity.Idle {\n\t\t// We were not connecting, so do nothing but update the addresses.\n\t\tac.mu.Unlock()\n\t\treturn\n\t}\n\n\tif ac.state == connectivity.Ready {\n\t\t// Try to find the connected address.\n\t\tfor _, a := range addrs {\n\t\t\ta.ServerName = ac.cc.getServerName(a)\n\t\t\tif a.Equal(ac.curAddr) {\n\t\t\t\t// We are connected to a valid address, so do nothing but\n\t\t\t\t// update the addresses.\n\t\t\t\tac.mu.Unlock()\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\t// We are either connected to the wrong address or currently connecting.\n\t// Stop the current iteration and restart.\n\n\tac.cancel()\n\tac.ctx, ac.cancel = context.WithCancel(ac.cc.ctx)\n\n\t// We have to defer here because GracefulClose => onClose, which requires\n\t// locking ac.mu.\n\tif ac.transport != nil {\n\t\tdefer ac.transport.GracefulClose()\n\t\tac.transport = nil\n\t}\n\n\tif len(addrs) == 0 {\n\t\tac.updateConnectivityState(connectivity.Idle, nil)\n\t}\n\n\tac.mu.Unlock()\n\n\t// Since we were connecting/connected, we should start a new connection\n\t// attempt.\n\tgo ac.resetTransport()\n}\n\n// getServerName determines the serverName to be used in the connection\n// handshake. The default value for the serverName is the authority on the\n// ClientConn, which either comes from the user's dial target or through an\n// authority override specified using the WithAuthority dial option. Name\n// resolvers can specify a per-address override for the serverName through the\n// resolver.Address.ServerName field which is used only if the WithAuthority\n// dial option was not used. The rationale is that per-address authority\n// overrides specified by the name resolver can represent a security risk, while\n// an override specified by the user is more dependable since they probably know\n// what they are doing.\nfunc (cc *ClientConn) getServerName(addr resolver.Address) string {\n\tif cc.dopts.authority != \"\" {\n\t\treturn cc.dopts.authority\n\t}\n\tif addr.ServerName != \"\" {\n\t\treturn addr.ServerName\n\t}\n\treturn cc.authority\n}\n\nfunc getMethodConfig(sc *ServiceConfig, method string) MethodConfig {\n\tif sc == nil {\n\t\treturn MethodConfig{}\n\t}\n\tif m, ok := sc.Methods[method]; ok {\n\t\treturn m\n\t}\n\ti := strings.LastIndex(method, \"/\")\n\tif m, ok := sc.Methods[method[:i+1]]; ok {\n\t\treturn m\n\t}\n\treturn sc.Methods[\"\"]\n}\n\n// GetMethodConfig gets the method config of the input method.\n// If there's an exact match for input method (i.e. /service/method), we return\n// the corresponding MethodConfig.\n// If there isn't an exact match for the input method, we look for the service's default\n// config under the service (i.e /service/) and then for the default for all services (empty string).\n//\n// If there is a default MethodConfig for the service, we return it.\n// Otherwise, we return an empty MethodConfig.\nfunc (cc *ClientConn) GetMethodConfig(method string) MethodConfig {\n\t// TODO: Avoid the locking here.\n\tcc.mu.RLock()\n\tdefer cc.mu.RUnlock()\n\treturn getMethodConfig(cc.sc, method)\n}\n\nfunc (cc *ClientConn) healthCheckConfig() *healthCheckConfig {\n\tcc.mu.RLock()\n\tdefer cc.mu.RUnlock()\n\tif cc.sc == nil {\n\t\treturn nil\n\t}\n\treturn cc.sc.healthCheckConfig\n}\n\nfunc (cc *ClientConn) getTransport(ctx context.Context, failfast bool, method string) (transport.ClientTransport, balancer.PickResult, error) {\n\treturn cc.blockingpicker.pick(ctx, failfast, balancer.PickInfo{\n\t\tCtx:            ctx,\n\t\tFullMethodName: method,\n\t})\n}\n\nfunc (cc *ClientConn) applyServiceConfigAndBalancer(sc *ServiceConfig, configSelector iresolver.ConfigSelector, addrs []resolver.Address) {\n\tif sc == nil {\n\t\t// should never reach here.\n\t\treturn\n\t}\n\tcc.sc = sc\n\tif configSelector != nil {\n\t\tcc.safeConfigSelector.UpdateConfigSelector(configSelector)\n\t}\n\n\tif cc.sc.retryThrottling != nil {\n\t\tnewThrottler := &retryThrottler{\n\t\t\ttokens: cc.sc.retryThrottling.MaxTokens,\n\t\t\tmax:    cc.sc.retryThrottling.MaxTokens,\n\t\t\tthresh: cc.sc.retryThrottling.MaxTokens / 2,\n\t\t\tratio:  cc.sc.retryThrottling.TokenRatio,\n\t\t}\n\t\tcc.retryThrottler.Store(newThrottler)\n\t} else {\n\t\tcc.retryThrottler.Store((*retryThrottler)(nil))\n\t}\n\n\tvar newBalancerName string\n\tif cc.sc == nil || (cc.sc.lbConfig == nil && cc.sc.LB == nil) {\n\t\t// No service config or no LB policy specified in config.\n\t\tnewBalancerName = PickFirstBalancerName\n\t} else if cc.sc.lbConfig != nil {\n\t\tnewBalancerName = cc.sc.lbConfig.name\n\t} else { // cc.sc.LB != nil\n\t\tnewBalancerName = *cc.sc.LB\n\t}\n\tcc.balancerWrapper.switchTo(newBalancerName)\n}\n\nfunc (cc *ClientConn) resolveNow(o resolver.ResolveNowOptions) {\n\tcc.mu.RLock()\n\tr := cc.resolverWrapper\n\tcc.mu.RUnlock()\n\tif r == nil {\n\t\treturn\n\t}\n\tgo r.resolveNow(o)\n}\n\n// ResetConnectBackoff wakes up all subchannels in transient failure and causes\n// them to attempt another connection immediately.  It also resets the backoff\n// times used for subsequent attempts regardless of the current state.\n//\n// In general, this function should not be used.  Typical service or network\n// outages result in a reasonable client reconnection strategy by default.\n// However, if a previously unavailable network becomes available, this may be\n// used to trigger an immediate reconnect.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc (cc *ClientConn) ResetConnectBackoff() {\n\tcc.mu.Lock()\n\tconns := cc.conns\n\tcc.mu.Unlock()\n\tfor ac := range conns {\n\t\tac.resetConnectBackoff()\n\t}\n}\n\n// Close tears down the ClientConn and all underlying connections.\nfunc (cc *ClientConn) Close() error {\n\tdefer func() {\n\t\tcc.cancel()\n\t\t<-cc.csMgr.pubSub.Done()\n\t}()\n\n\tcc.mu.Lock()\n\tif cc.conns == nil {\n\t\tcc.mu.Unlock()\n\t\treturn ErrClientConnClosing\n\t}\n\n\tfor cc.idlenessState == ccIdlenessStateExitingIdle {\n\t\tcc.exitIdleCond.Wait()\n\t}\n\n\tconns := cc.conns\n\tcc.conns = nil\n\tcc.csMgr.updateState(connectivity.Shutdown)\n\n\tpWrapper := cc.blockingpicker\n\trWrapper := cc.resolverWrapper\n\tbWrapper := cc.balancerWrapper\n\tidlenessMgr := cc.idlenessMgr\n\tcc.mu.Unlock()\n\n\t// The order of closing matters here since the balancer wrapper assumes the\n\t// picker is closed before it is closed.\n\tif pWrapper != nil {\n\t\tpWrapper.close()\n\t}\n\tif bWrapper != nil {\n\t\tbWrapper.close()\n\t}\n\tif rWrapper != nil {\n\t\trWrapper.close()\n\t}\n\tif idlenessMgr != nil {\n\t\tidlenessMgr.Close()\n\t}\n\n\tfor ac := range conns {\n\t\tac.tearDown(ErrClientConnClosing)\n\t}\n\tcc.addTraceEvent(\"deleted\")\n\t// TraceEvent needs to be called before RemoveEntry, as TraceEvent may add\n\t// trace reference to the entity being deleted, and thus prevent it from being\n\t// deleted right away.\n\tchannelz.RemoveEntry(cc.channelzID)\n\n\treturn nil\n}\n\n// addrConn is a network connection to a given address.\ntype addrConn struct {\n\tctx    context.Context\n\tcancel context.CancelFunc\n\n\tcc     *ClientConn\n\tdopts  dialOptions\n\tacbw   balancer.SubConn\n\tscopts balancer.NewSubConnOptions\n\n\t// transport is set when there's a viable transport (note: ac state may not be READY as LB channel\n\t// health checking may require server to report healthy to set ac to READY), and is reset\n\t// to nil when the current transport should no longer be used to create a stream (e.g. after GoAway\n\t// is received, transport is closed, ac has been torn down).\n\ttransport transport.ClientTransport // The current transport.\n\n\tmu      sync.Mutex\n\tcurAddr resolver.Address   // The current address.\n\taddrs   []resolver.Address // All addresses that the resolver resolved to.\n\n\t// Use updateConnectivityState for updating addrConn's connectivity state.\n\tstate     connectivity.State\n\tstateChan chan struct{} // closed and recreated on every state change.\n\n\tbackoffIdx   int // Needs to be stateful for resetConnectBackoff.\n\tresetBackoff chan struct{}\n\n\tchannelzID *channelz.Identifier\n\tczData     *channelzData\n}\n\n// Note: this requires a lock on ac.mu.\nfunc (ac *addrConn) updateConnectivityState(s connectivity.State, lastErr error) {\n\tif ac.state == s {\n\t\treturn\n\t}\n\t// When changing states, reset the state change channel.\n\tclose(ac.stateChan)\n\tac.stateChan = make(chan struct{})\n\tac.state = s\n\tif lastErr == nil {\n\t\tchannelz.Infof(logger, ac.channelzID, \"Subchannel Connectivity change to %v\", s)\n\t} else {\n\t\tchannelz.Infof(logger, ac.channelzID, \"Subchannel Connectivity change to %v, last error: %s\", s, lastErr)\n\t}\n\tac.cc.handleSubConnStateChange(ac.acbw, s, lastErr)\n}\n\n// adjustParams updates parameters used to create transports upon\n// receiving a GoAway.\nfunc (ac *addrConn) adjustParams(r transport.GoAwayReason) {\n\tswitch r {\n\tcase transport.GoAwayTooManyPings:\n\t\tv := 2 * ac.dopts.copts.KeepaliveParams.Time\n\t\tac.cc.mu.Lock()\n\t\tif v > ac.cc.mkp.Time {\n\t\t\tac.cc.mkp.Time = v\n\t\t}\n\t\tac.cc.mu.Unlock()\n\t}\n}\n\nfunc (ac *addrConn) resetTransport() {\n\tac.mu.Lock()\n\tacCtx := ac.ctx\n\tif acCtx.Err() != nil {\n\t\tac.mu.Unlock()\n\t\treturn\n\t}\n\n\taddrs := ac.addrs\n\tbackoffFor := ac.dopts.bs.Backoff(ac.backoffIdx)\n\t// This will be the duration that dial gets to finish.\n\tdialDuration := minConnectTimeout\n\tif ac.dopts.minConnectTimeout != nil {\n\t\tdialDuration = ac.dopts.minConnectTimeout()\n\t}\n\n\tif dialDuration < backoffFor {\n\t\t// Give dial more time as we keep failing to connect.\n\t\tdialDuration = backoffFor\n\t}\n\t// We can potentially spend all the time trying the first address, and\n\t// if the server accepts the connection and then hangs, the following\n\t// addresses will never be tried.\n\t//\n\t// The spec doesn't mention what should be done for multiple addresses.\n\t// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md#proposed-backoff-algorithm\n\tconnectDeadline := time.Now().Add(dialDuration)\n\n\tac.updateConnectivityState(connectivity.Connecting, nil)\n\tac.mu.Unlock()\n\n\tif err := ac.tryAllAddrs(acCtx, addrs, connectDeadline); err != nil {\n\t\tac.cc.resolveNow(resolver.ResolveNowOptions{})\n\t\tac.mu.Lock()\n\t\tif acCtx.Err() != nil {\n\t\t\t// addrConn was torn down.\n\t\t\tac.mu.Unlock()\n\t\t\treturn\n\t\t}\n\t\t// After exhausting all addresses, the addrConn enters\n\t\t// TRANSIENT_FAILURE.\n\t\tac.updateConnectivityState(connectivity.TransientFailure, err)\n\n\t\t// Backoff.\n\t\tb := ac.resetBackoff\n\t\tac.mu.Unlock()\n\n\t\ttimer := time.NewTimer(backoffFor)\n\t\tselect {\n\t\tcase <-timer.C:\n\t\t\tac.mu.Lock()\n\t\t\tac.backoffIdx++\n\t\t\tac.mu.Unlock()\n\t\tcase <-b:\n\t\t\ttimer.Stop()\n\t\tcase <-acCtx.Done():\n\t\t\ttimer.Stop()\n\t\t\treturn\n\t\t}\n\n\t\tac.mu.Lock()\n\t\tif acCtx.Err() == nil {\n\t\t\tac.updateConnectivityState(connectivity.Idle, err)\n\t\t}\n\t\tac.mu.Unlock()\n\t\treturn\n\t}\n\t// Success; reset backoff.\n\tac.mu.Lock()\n\tac.backoffIdx = 0\n\tac.mu.Unlock()\n}\n\n// tryAllAddrs tries to creates a connection to the addresses, and stop when at\n// the first successful one. It returns an error if no address was successfully\n// connected, or updates ac appropriately with the new transport.\nfunc (ac *addrConn) tryAllAddrs(ctx context.Context, addrs []resolver.Address, connectDeadline time.Time) error {\n\tvar firstConnErr error\n\tfor _, addr := range addrs {\n\t\tif ctx.Err() != nil {\n\t\t\treturn errConnClosing\n\t\t}\n\t\tac.mu.Lock()\n\n\t\tac.cc.mu.RLock()\n\t\tac.dopts.copts.KeepaliveParams = ac.cc.mkp\n\t\tac.cc.mu.RUnlock()\n\n\t\tcopts := ac.dopts.copts\n\t\tif ac.scopts.CredsBundle != nil {\n\t\t\tcopts.CredsBundle = ac.scopts.CredsBundle\n\t\t}\n\t\tac.mu.Unlock()\n\n\t\tchannelz.Infof(logger, ac.channelzID, \"Subchannel picks a new address %q to connect\", addr.Addr)\n\n\t\terr := ac.createTransport(ctx, addr, copts, connectDeadline)\n\t\tif err == nil {\n\t\t\treturn nil\n\t\t}\n\t\tif firstConnErr == nil {\n\t\t\tfirstConnErr = err\n\t\t}\n\t\tac.cc.updateConnectionError(err)\n\t}\n\n\t// Couldn't connect to any address.\n\treturn firstConnErr\n}\n\n// createTransport creates a connection to addr. It returns an error if the\n// address was not successfully connected, or updates ac appropriately with the\n// new transport.\nfunc (ac *addrConn) createTransport(ctx context.Context, addr resolver.Address, copts transport.ConnectOptions, connectDeadline time.Time) error {\n\taddr.ServerName = ac.cc.getServerName(addr)\n\thctx, hcancel := context.WithCancel(ctx)\n\n\tonClose := func(r transport.GoAwayReason) {\n\t\tac.mu.Lock()\n\t\tdefer ac.mu.Unlock()\n\t\t// adjust params based on GoAwayReason\n\t\tac.adjustParams(r)\n\t\tif ctx.Err() != nil {\n\t\t\t// Already shut down or connection attempt canceled.  tearDown() or\n\t\t\t// updateAddrs() already cleared the transport and canceled hctx\n\t\t\t// via ac.ctx, and we expected this connection to be closed, so do\n\t\t\t// nothing here.\n\t\t\treturn\n\t\t}\n\t\thcancel()\n\t\tif ac.transport == nil {\n\t\t\t// We're still connecting to this address, which could error.  Do\n\t\t\t// not update the connectivity state or resolve; these will happen\n\t\t\t// at the end of the tryAllAddrs connection loop in the event of an\n\t\t\t// error.\n\t\t\treturn\n\t\t}\n\t\tac.transport = nil\n\t\t// Refresh the name resolver on any connection loss.\n\t\tac.cc.resolveNow(resolver.ResolveNowOptions{})\n\t\t// Always go idle and wait for the LB policy to initiate a new\n\t\t// connection attempt.\n\t\tac.updateConnectivityState(connectivity.Idle, nil)\n\t}\n\n\tconnectCtx, cancel := context.WithDeadline(ctx, connectDeadline)\n\tdefer cancel()\n\tcopts.ChannelzParentID = ac.channelzID\n\n\tnewTr, err := transport.NewClientTransport(connectCtx, ac.cc.ctx, addr, copts, onClose)\n\tif err != nil {\n\t\tif logger.V(2) {\n\t\t\tlogger.Infof(\"Creating new client transport to %q: %v\", addr, err)\n\t\t}\n\t\t// newTr is either nil, or closed.\n\t\thcancel()\n\t\tchannelz.Warningf(logger, ac.channelzID, \"grpc: addrConn.createTransport failed to connect to %s. Err: %v\", addr, err)\n\t\treturn err\n\t}\n\n\tac.mu.Lock()\n\tdefer ac.mu.Unlock()\n\tif ctx.Err() != nil {\n\t\t// This can happen if the subConn was removed while in `Connecting`\n\t\t// state. tearDown() would have set the state to `Shutdown`, but\n\t\t// would not have closed the transport since ac.transport would not\n\t\t// have been set at that point.\n\t\t//\n\t\t// We run this in a goroutine because newTr.Close() calls onClose()\n\t\t// inline, which requires locking ac.mu.\n\t\t//\n\t\t// The error we pass to Close() is immaterial since there are no open\n\t\t// streams at this point, so no trailers with error details will be sent\n\t\t// out. We just need to pass a non-nil error.\n\t\t//\n\t\t// This can also happen when updateAddrs is called during a connection\n\t\t// attempt.\n\t\tgo newTr.Close(transport.ErrConnClosing)\n\t\treturn nil\n\t}\n\tif hctx.Err() != nil {\n\t\t// onClose was already called for this connection, but the connection\n\t\t// was successfully established first.  Consider it a success and set\n\t\t// the new state to Idle.\n\t\tac.updateConnectivityState(connectivity.Idle, nil)\n\t\treturn nil\n\t}\n\tac.curAddr = addr\n\tac.transport = newTr\n\tac.startHealthCheck(hctx) // Will set state to READY if appropriate.\n\treturn nil\n}\n\n// startHealthCheck starts the health checking stream (RPC) to watch the health\n// stats of this connection if health checking is requested and configured.\n//\n// LB channel health checking is enabled when all requirements below are met:\n// 1. it is not disabled by the user with the WithDisableHealthCheck DialOption\n// 2. internal.HealthCheckFunc is set by importing the grpc/health package\n// 3. a service config with non-empty healthCheckConfig field is provided\n// 4. the load balancer requests it\n//\n// It sets addrConn to READY if the health checking stream is not started.\n//\n// Caller must hold ac.mu.\nfunc (ac *addrConn) startHealthCheck(ctx context.Context) {\n\tvar healthcheckManagingState bool\n\tdefer func() {\n\t\tif !healthcheckManagingState {\n\t\t\tac.updateConnectivityState(connectivity.Ready, nil)\n\t\t}\n\t}()\n\n\tif ac.cc.dopts.disableHealthCheck {\n\t\treturn\n\t}\n\thealthCheckConfig := ac.cc.healthCheckConfig()\n\tif healthCheckConfig == nil {\n\t\treturn\n\t}\n\tif !ac.scopts.HealthCheckEnabled {\n\t\treturn\n\t}\n\thealthCheckFunc := ac.cc.dopts.healthCheckFunc\n\tif healthCheckFunc == nil {\n\t\t// The health package is not imported to set health check function.\n\t\t//\n\t\t// TODO: add a link to the health check doc in the error message.\n\t\tchannelz.Error(logger, ac.channelzID, \"Health check is requested but health check function is not set.\")\n\t\treturn\n\t}\n\n\thealthcheckManagingState = true\n\n\t// Set up the health check helper functions.\n\tcurrentTr := ac.transport\n\tnewStream := func(method string) (any, error) {\n\t\tac.mu.Lock()\n\t\tif ac.transport != currentTr {\n\t\t\tac.mu.Unlock()\n\t\t\treturn nil, status.Error(codes.Canceled, \"the provided transport is no longer valid to use\")\n\t\t}\n\t\tac.mu.Unlock()\n\t\treturn newNonRetryClientStream(ctx, &StreamDesc{ServerStreams: true}, method, currentTr, ac)\n\t}\n\tsetConnectivityState := func(s connectivity.State, lastErr error) {\n\t\tac.mu.Lock()\n\t\tdefer ac.mu.Unlock()\n\t\tif ac.transport != currentTr {\n\t\t\treturn\n\t\t}\n\t\tac.updateConnectivityState(s, lastErr)\n\t}\n\t// Start the health checking stream.\n\tgo func() {\n\t\terr := ac.cc.dopts.healthCheckFunc(ctx, newStream, setConnectivityState, healthCheckConfig.ServiceName)\n\t\tif err != nil {\n\t\t\tif status.Code(err) == codes.Unimplemented {\n\t\t\t\tchannelz.Error(logger, ac.channelzID, \"Subchannel health check is unimplemented at server side, thus health check is disabled\")\n\t\t\t} else {\n\t\t\t\tchannelz.Errorf(logger, ac.channelzID, \"Health checking failed: %v\", err)\n\t\t\t}\n\t\t}\n\t}()\n}\n\nfunc (ac *addrConn) resetConnectBackoff() {\n\tac.mu.Lock()\n\tclose(ac.resetBackoff)\n\tac.backoffIdx = 0\n\tac.resetBackoff = make(chan struct{})\n\tac.mu.Unlock()\n}\n\n// getReadyTransport returns the transport if ac's state is READY or nil if not.\nfunc (ac *addrConn) getReadyTransport() transport.ClientTransport {\n\tac.mu.Lock()\n\tdefer ac.mu.Unlock()\n\tif ac.state == connectivity.Ready {\n\t\treturn ac.transport\n\t}\n\treturn nil\n}\n\n// getTransport waits until the addrconn is ready and returns the transport.\n// If the context expires first, returns an appropriate status.  If the\n// addrConn is stopped first, returns an Unavailable status error.\nfunc (ac *addrConn) getTransport(ctx context.Context) (transport.ClientTransport, error) {\n\tfor ctx.Err() == nil {\n\t\tac.mu.Lock()\n\t\tt, state, sc := ac.transport, ac.state, ac.stateChan\n\t\tac.mu.Unlock()\n\t\tif state == connectivity.Ready {\n\t\t\treturn t, nil\n\t\t}\n\t\tif state == connectivity.Shutdown {\n\t\t\treturn nil, status.Errorf(codes.Unavailable, \"SubConn shutting down\")\n\t\t}\n\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\tcase <-sc:\n\t\t}\n\t}\n\treturn nil, status.FromContextError(ctx.Err()).Err()\n}\n\n// tearDown starts to tear down the addrConn.\n//\n// Note that tearDown doesn't remove ac from ac.cc.conns, so the addrConn struct\n// will leak. In most cases, call cc.removeAddrConn() instead.\nfunc (ac *addrConn) tearDown(err error) {\n\tac.mu.Lock()\n\tif ac.state == connectivity.Shutdown {\n\t\tac.mu.Unlock()\n\t\treturn\n\t}\n\tcurTr := ac.transport\n\tac.transport = nil\n\t// We have to set the state to Shutdown before anything else to prevent races\n\t// between setting the state and logic that waits on context cancellation / etc.\n\tac.updateConnectivityState(connectivity.Shutdown, nil)\n\tac.cancel()\n\tac.curAddr = resolver.Address{}\n\n\tchannelz.AddTraceEvent(logger, ac.channelzID, 0, &channelz.TraceEventDesc{\n\t\tDesc:     \"Subchannel deleted\",\n\t\tSeverity: channelz.CtInfo,\n\t\tParent: &channelz.TraceEventDesc{\n\t\t\tDesc:     fmt.Sprintf(\"Subchannel(id:%d) deleted\", ac.channelzID.Int()),\n\t\t\tSeverity: channelz.CtInfo,\n\t\t},\n\t})\n\t// TraceEvent needs to be called before RemoveEntry, as TraceEvent may add\n\t// trace reference to the entity being deleted, and thus prevent it from\n\t// being deleted right away.\n\tchannelz.RemoveEntry(ac.channelzID)\n\tac.mu.Unlock()\n\n\t// We have to release the lock before the call to GracefulClose/Close here\n\t// because both of them call onClose(), which requires locking ac.mu.\n\tif curTr != nil {\n\t\tif err == errConnDrain {\n\t\t\t// Close the transport gracefully when the subConn is being shutdown.\n\t\t\t//\n\t\t\t// GracefulClose() may be executed multiple times if:\n\t\t\t// - multiple GoAway frames are received from the server\n\t\t\t// - there are concurrent name resolver or balancer triggered\n\t\t\t//   address removal and GoAway\n\t\t\tcurTr.GracefulClose()\n\t\t} else {\n\t\t\t// Hard close the transport when the channel is entering idle or is\n\t\t\t// being shutdown. In the case where the channel is being shutdown,\n\t\t\t// closing of transports is also taken care of by cancelation of cc.ctx.\n\t\t\t// But in the case where the channel is entering idle, we need to\n\t\t\t// explicitly close the transports here. Instead of distinguishing\n\t\t\t// between these two cases, it is simpler to close the transport\n\t\t\t// unconditionally here.\n\t\t\tcurTr.Close(err)\n\t\t}\n\t}\n}\n\nfunc (ac *addrConn) getState() connectivity.State {\n\tac.mu.Lock()\n\tdefer ac.mu.Unlock()\n\treturn ac.state\n}\n\nfunc (ac *addrConn) ChannelzMetric() *channelz.ChannelInternalMetric {\n\tac.mu.Lock()\n\taddr := ac.curAddr.Addr\n\tac.mu.Unlock()\n\treturn &channelz.ChannelInternalMetric{\n\t\tState:                    ac.getState(),\n\t\tTarget:                   addr,\n\t\tCallsStarted:             atomic.LoadInt64(&ac.czData.callsStarted),\n\t\tCallsSucceeded:           atomic.LoadInt64(&ac.czData.callsSucceeded),\n\t\tCallsFailed:              atomic.LoadInt64(&ac.czData.callsFailed),\n\t\tLastCallStartedTimestamp: time.Unix(0, atomic.LoadInt64(&ac.czData.lastCallStartedTime)),\n\t}\n}\n\nfunc (ac *addrConn) incrCallsStarted() {\n\tatomic.AddInt64(&ac.czData.callsStarted, 1)\n\tatomic.StoreInt64(&ac.czData.lastCallStartedTime, time.Now().UnixNano())\n}\n\nfunc (ac *addrConn) incrCallsSucceeded() {\n\tatomic.AddInt64(&ac.czData.callsSucceeded, 1)\n}\n\nfunc (ac *addrConn) incrCallsFailed() {\n\tatomic.AddInt64(&ac.czData.callsFailed, 1)\n}\n\ntype retryThrottler struct {\n\tmax    float64\n\tthresh float64\n\tratio  float64\n\n\tmu     sync.Mutex\n\ttokens float64 // TODO(dfawley): replace with atomic and remove lock.\n}\n\n// throttle subtracts a retry token from the pool and returns whether a retry\n// should be throttled (disallowed) based upon the retry throttling policy in\n// the service config.\nfunc (rt *retryThrottler) throttle() bool {\n\tif rt == nil {\n\t\treturn false\n\t}\n\trt.mu.Lock()\n\tdefer rt.mu.Unlock()\n\trt.tokens--\n\tif rt.tokens < 0 {\n\t\trt.tokens = 0\n\t}\n\treturn rt.tokens <= rt.thresh\n}\n\nfunc (rt *retryThrottler) successfulRPC() {\n\tif rt == nil {\n\t\treturn\n\t}\n\trt.mu.Lock()\n\tdefer rt.mu.Unlock()\n\trt.tokens += rt.ratio\n\tif rt.tokens > rt.max {\n\t\trt.tokens = rt.max\n\t}\n}\n\ntype channelzChannel struct {\n\tcc *ClientConn\n}\n\nfunc (c *channelzChannel) ChannelzMetric() *channelz.ChannelInternalMetric {\n\treturn c.cc.channelzMetric()\n}\n\n// ErrClientConnTimeout indicates that the ClientConn cannot establish the\n// underlying connections within the specified timeout.\n//\n// Deprecated: This error is never returned by grpc and should not be\n// referenced by users.\nvar ErrClientConnTimeout = errors.New(\"grpc: timed out when dialing\")\n\n// getResolver finds the scheme in the cc's resolvers or the global registry.\n// scheme should always be lowercase (typically by virtue of url.Parse()\n// performing proper RFC3986 behavior).\nfunc (cc *ClientConn) getResolver(scheme string) resolver.Builder {\n\tfor _, rb := range cc.dopts.resolvers {\n\t\tif scheme == rb.Scheme() {\n\t\t\treturn rb\n\t\t}\n\t}\n\treturn resolver.Get(scheme)\n}\n\nfunc (cc *ClientConn) updateConnectionError(err error) {\n\tcc.lceMu.Lock()\n\tcc.lastConnectionError = err\n\tcc.lceMu.Unlock()\n}\n\nfunc (cc *ClientConn) connectionError() error {\n\tcc.lceMu.Lock()\n\tdefer cc.lceMu.Unlock()\n\treturn cc.lastConnectionError\n}\n\n// parseTargetAndFindResolver parses the user's dial target and stores the\n// parsed target in `cc.parsedTarget`.\n//\n// The resolver to use is determined based on the scheme in the parsed target\n// and the same is stored in `cc.resolverBuilder`.\n//\n// Doesn't grab cc.mu as this method is expected to be called only at Dial time.\nfunc (cc *ClientConn) parseTargetAndFindResolver() error {\n\tchannelz.Infof(logger, cc.channelzID, \"original dial target is: %q\", cc.target)\n\n\tvar rb resolver.Builder\n\tparsedTarget, err := parseTarget(cc.target)\n\tif err != nil {\n\t\tchannelz.Infof(logger, cc.channelzID, \"dial target %q parse failed: %v\", cc.target, err)\n\t} else {\n\t\tchannelz.Infof(logger, cc.channelzID, \"parsed dial target is: %+v\", parsedTarget)\n\t\trb = cc.getResolver(parsedTarget.URL.Scheme)\n\t\tif rb != nil {\n\t\t\tcc.parsedTarget = parsedTarget\n\t\t\tcc.resolverBuilder = rb\n\t\t\treturn nil\n\t\t}\n\t}\n\n\t// We are here because the user's dial target did not contain a scheme or\n\t// specified an unregistered scheme. We should fallback to the default\n\t// scheme, except when a custom dialer is specified in which case, we should\n\t// always use passthrough scheme.\n\tdefScheme := resolver.GetDefaultScheme()\n\tchannelz.Infof(logger, cc.channelzID, \"fallback to scheme %q\", defScheme)\n\tcanonicalTarget := defScheme + \":///\" + cc.target\n\n\tparsedTarget, err = parseTarget(canonicalTarget)\n\tif err != nil {\n\t\tchannelz.Infof(logger, cc.channelzID, \"dial target %q parse failed: %v\", canonicalTarget, err)\n\t\treturn err\n\t}\n\tchannelz.Infof(logger, cc.channelzID, \"parsed dial target is: %+v\", parsedTarget)\n\trb = cc.getResolver(parsedTarget.URL.Scheme)\n\tif rb == nil {\n\t\treturn fmt.Errorf(\"could not get resolver for default scheme: %q\", parsedTarget.URL.Scheme)\n\t}\n\tcc.parsedTarget = parsedTarget\n\tcc.resolverBuilder = rb\n\treturn nil\n}\n\n// parseTarget uses RFC 3986 semantics to parse the given target into a\n// resolver.Target struct containing url. Query params are stripped from the\n// endpoint.\nfunc parseTarget(target string) (resolver.Target, error) {\n\tu, err := url.Parse(target)\n\tif err != nil {\n\t\treturn resolver.Target{}, err\n\t}\n\n\treturn resolver.Target{URL: *u}, nil\n}\n\nfunc encodeAuthority(authority string) string {\n\tconst upperhex = \"0123456789ABCDEF\"\n\n\t// Return for characters that must be escaped as per\n\t// Valid chars are mentioned here:\n\t// https://datatracker.ietf.org/doc/html/rfc3986#section-3.2\n\tshouldEscape := func(c byte) bool {\n\t\t// Alphanum are always allowed.\n\t\tif 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9' {\n\t\t\treturn false\n\t\t}\n\t\tswitch c {\n\t\tcase '-', '_', '.', '~': // Unreserved characters\n\t\t\treturn false\n\t\tcase '!', '$', '&', '\\'', '(', ')', '*', '+', ',', ';', '=': // Subdelim characters\n\t\t\treturn false\n\t\tcase ':', '[', ']', '@': // Authority related delimeters\n\t\t\treturn false\n\t\t}\n\t\t// Everything else must be escaped.\n\t\treturn true\n\t}\n\n\thexCount := 0\n\tfor i := 0; i < len(authority); i++ {\n\t\tc := authority[i]\n\t\tif shouldEscape(c) {\n\t\t\thexCount++\n\t\t}\n\t}\n\n\tif hexCount == 0 {\n\t\treturn authority\n\t}\n\n\trequired := len(authority) + 2*hexCount\n\tt := make([]byte, required)\n\n\tj := 0\n\t// This logic is a barebones version of escape in the go net/url library.\n\tfor i := 0; i < len(authority); i++ {\n\t\tswitch c := authority[i]; {\n\t\tcase shouldEscape(c):\n\t\t\tt[j] = '%'\n\t\t\tt[j+1] = upperhex[c>>4]\n\t\t\tt[j+2] = upperhex[c&15]\n\t\t\tj += 3\n\t\tdefault:\n\t\t\tt[j] = authority[i]\n\t\t\tj++\n\t\t}\n\t}\n\treturn string(t)\n}\n\n// Determine channel authority. The order of precedence is as follows:\n// - user specified authority override using `WithAuthority` dial option\n// - creds' notion of server name for the authentication handshake\n// - endpoint from dial target of the form \"scheme://[authority]/endpoint\"\n//\n// Stores the determined authority in `cc.authority`.\n//\n// Returns a non-nil error if the authority returned by the transport\n// credentials do not match the authority configured through the dial option.\n//\n// Doesn't grab cc.mu as this method is expected to be called only at Dial time.\nfunc (cc *ClientConn) determineAuthority() error {\n\tdopts := cc.dopts\n\t// Historically, we had two options for users to specify the serverName or\n\t// authority for a channel. One was through the transport credentials\n\t// (either in its constructor, or through the OverrideServerName() method).\n\t// The other option (for cases where WithInsecure() dial option was used)\n\t// was to use the WithAuthority() dial option.\n\t//\n\t// A few things have changed since:\n\t// - `insecure` package with an implementation of the `TransportCredentials`\n\t//   interface for the insecure case\n\t// - WithAuthority() dial option support for secure credentials\n\tauthorityFromCreds := \"\"\n\tif creds := dopts.copts.TransportCredentials; creds != nil && creds.Info().ServerName != \"\" {\n\t\tauthorityFromCreds = creds.Info().ServerName\n\t}\n\tauthorityFromDialOption := dopts.authority\n\tif (authorityFromCreds != \"\" && authorityFromDialOption != \"\") && authorityFromCreds != authorityFromDialOption {\n\t\treturn fmt.Errorf(\"ClientConn's authority from transport creds %q and dial option %q don't match\", authorityFromCreds, authorityFromDialOption)\n\t}\n\n\tendpoint := cc.parsedTarget.Endpoint()\n\ttarget := cc.target\n\tswitch {\n\tcase authorityFromDialOption != \"\":\n\t\tcc.authority = authorityFromDialOption\n\tcase authorityFromCreds != \"\":\n\t\tcc.authority = authorityFromCreds\n\tcase strings.HasPrefix(target, \"unix:\") || strings.HasPrefix(target, \"unix-abstract:\"):\n\t\t// TODO: remove when the unix resolver implements optional interface to\n\t\t// return channel authority.\n\t\tcc.authority = \"localhost\"\n\tcase strings.HasPrefix(endpoint, \":\"):\n\t\tcc.authority = \"localhost\" + endpoint\n\tdefault:\n\t\t// TODO: Define an optional interface on the resolver builder to return\n\t\t// the channel authority given the user's dial target. For resolvers\n\t\t// which don't implement this interface, we will use the endpoint from\n\t\t// \"scheme://authority/endpoint\" as the default authority.\n\t\t// Escape the endpoint to handle use cases where the endpoint\n\t\t// might not be a valid authority by default.\n\t\t// For example an endpoint which has multiple paths like\n\t\t// 'a/b/c', which is not a valid authority by default.\n\t\tcc.authority = encodeAuthority(endpoint)\n\t}\n\tchannelz.Infof(logger, cc.channelzID, \"Channel authority set to %q\", cc.authority)\n\treturn nil\n}\n\n// initResolverWrapper creates a ccResolverWrapper, which builds the name\n// resolver. This method grabs the lock to assign the newly built resolver\n// wrapper to the cc.resolverWrapper field.\nfunc (cc *ClientConn) initResolverWrapper(creds credentials.TransportCredentials) error {\n\trw, err := newCCResolverWrapper(cc, ccResolverWrapperOpts{\n\t\ttarget:  cc.parsedTarget,\n\t\tbuilder: cc.resolverBuilder,\n\t\tbOpts: resolver.BuildOptions{\n\t\t\tDisableServiceConfig: cc.dopts.disableServiceConfig,\n\t\t\tDialCreds:            creds,\n\t\t\tCredsBundle:          cc.dopts.copts.CredsBundle,\n\t\t\tDialer:               cc.dopts.copts.Dialer,\n\t\t},\n\t\tchannelzID: cc.channelzID,\n\t})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to build resolver: %v\", err)\n\t}\n\t// Resolver implementations may report state update or error inline when\n\t// built (or right after), and this is handled in cc.updateResolverState.\n\t// Also, an error from the resolver might lead to a re-resolution request\n\t// from the balancer, which is handled in resolveNow() where\n\t// `cc.resolverWrapper` is accessed. Hence, we need to hold the lock here.\n\tcc.mu.Lock()\n\tcc.resolverWrapper = rw\n\tcc.mu.Unlock()\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/codec.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"google.golang.org/grpc/encoding\"\n\t_ \"google.golang.org/grpc/encoding/proto\" // to register the Codec for \"proto\"\n)\n\n// baseCodec contains the functionality of both Codec and encoding.Codec, but\n// omits the name/string, which vary between the two and are not needed for\n// anything besides the registry in the encoding package.\ntype baseCodec interface {\n\tMarshal(v any) ([]byte, error)\n\tUnmarshal(data []byte, v any) error\n}\n\nvar _ baseCodec = Codec(nil)\nvar _ baseCodec = encoding.Codec(nil)\n\n// Codec defines the interface gRPC uses to encode and decode messages.\n// Note that implementations of this interface must be thread safe;\n// a Codec's methods can be called from concurrent goroutines.\n//\n// Deprecated: use encoding.Codec instead.\ntype Codec interface {\n\t// Marshal returns the wire format of v.\n\tMarshal(v any) ([]byte, error)\n\t// Unmarshal parses the wire format into v.\n\tUnmarshal(data []byte, v any) error\n\t// String returns the name of the Codec implementation.  This is unused by\n\t// gRPC.\n\tString() string\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/codegen.sh",
    "content": "#!/usr/bin/env bash\n\n# This script serves as an example to demonstrate how to generate the gRPC-Go\n# interface and the related messages from .proto file.\n#\n# It assumes the installation of i) Google proto buffer compiler at\n# https://github.com/google/protobuf (after v2.6.1) and ii) the Go codegen\n# plugin at https://github.com/golang/protobuf (after 2015-02-20). If you have\n# not, please install them first.\n#\n# We recommend running this script at $GOPATH/src.\n#\n# If this is not what you need, feel free to make your own scripts. Again, this\n# script is for demonstration purpose.\n#\nproto=$1\nprotoc --go_out=plugins=grpc:. $proto\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/codes/code_string.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage codes\n\nimport (\n\t\"strconv\"\n\n\t\"google.golang.org/grpc/internal\"\n)\n\nfunc init() {\n\tinternal.CanonicalString = canonicalString\n}\n\nfunc (c Code) String() string {\n\tswitch c {\n\tcase OK:\n\t\treturn \"OK\"\n\tcase Canceled:\n\t\treturn \"Canceled\"\n\tcase Unknown:\n\t\treturn \"Unknown\"\n\tcase InvalidArgument:\n\t\treturn \"InvalidArgument\"\n\tcase DeadlineExceeded:\n\t\treturn \"DeadlineExceeded\"\n\tcase NotFound:\n\t\treturn \"NotFound\"\n\tcase AlreadyExists:\n\t\treturn \"AlreadyExists\"\n\tcase PermissionDenied:\n\t\treturn \"PermissionDenied\"\n\tcase ResourceExhausted:\n\t\treturn \"ResourceExhausted\"\n\tcase FailedPrecondition:\n\t\treturn \"FailedPrecondition\"\n\tcase Aborted:\n\t\treturn \"Aborted\"\n\tcase OutOfRange:\n\t\treturn \"OutOfRange\"\n\tcase Unimplemented:\n\t\treturn \"Unimplemented\"\n\tcase Internal:\n\t\treturn \"Internal\"\n\tcase Unavailable:\n\t\treturn \"Unavailable\"\n\tcase DataLoss:\n\t\treturn \"DataLoss\"\n\tcase Unauthenticated:\n\t\treturn \"Unauthenticated\"\n\tdefault:\n\t\treturn \"Code(\" + strconv.FormatInt(int64(c), 10) + \")\"\n\t}\n}\n\nfunc canonicalString(c Code) string {\n\tswitch c {\n\tcase OK:\n\t\treturn \"OK\"\n\tcase Canceled:\n\t\treturn \"CANCELLED\"\n\tcase Unknown:\n\t\treturn \"UNKNOWN\"\n\tcase InvalidArgument:\n\t\treturn \"INVALID_ARGUMENT\"\n\tcase DeadlineExceeded:\n\t\treturn \"DEADLINE_EXCEEDED\"\n\tcase NotFound:\n\t\treturn \"NOT_FOUND\"\n\tcase AlreadyExists:\n\t\treturn \"ALREADY_EXISTS\"\n\tcase PermissionDenied:\n\t\treturn \"PERMISSION_DENIED\"\n\tcase ResourceExhausted:\n\t\treturn \"RESOURCE_EXHAUSTED\"\n\tcase FailedPrecondition:\n\t\treturn \"FAILED_PRECONDITION\"\n\tcase Aborted:\n\t\treturn \"ABORTED\"\n\tcase OutOfRange:\n\t\treturn \"OUT_OF_RANGE\"\n\tcase Unimplemented:\n\t\treturn \"UNIMPLEMENTED\"\n\tcase Internal:\n\t\treturn \"INTERNAL\"\n\tcase Unavailable:\n\t\treturn \"UNAVAILABLE\"\n\tcase DataLoss:\n\t\treturn \"DATA_LOSS\"\n\tcase Unauthenticated:\n\t\treturn \"UNAUTHENTICATED\"\n\tdefault:\n\t\treturn \"CODE(\" + strconv.FormatInt(int64(c), 10) + \")\"\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/codes/codes.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package codes defines the canonical error codes used by gRPC. It is\n// consistent across various languages.\npackage codes // import \"google.golang.org/grpc/codes\"\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// A Code is an unsigned 32-bit error code as defined in the gRPC spec.\ntype Code uint32\n\nconst (\n\t// OK is returned on success.\n\tOK Code = 0\n\n\t// Canceled indicates the operation was canceled (typically by the caller).\n\t//\n\t// The gRPC framework will generate this error code when cancellation\n\t// is requested.\n\tCanceled Code = 1\n\n\t// Unknown error. An example of where this error may be returned is\n\t// if a Status value received from another address space belongs to\n\t// an error-space that is not known in this address space. Also\n\t// errors raised by APIs that do not return enough error information\n\t// may be converted to this error.\n\t//\n\t// The gRPC framework will generate this error code in the above two\n\t// mentioned cases.\n\tUnknown Code = 2\n\n\t// InvalidArgument indicates client specified an invalid argument.\n\t// Note that this differs from FailedPrecondition. It indicates arguments\n\t// that are problematic regardless of the state of the system\n\t// (e.g., a malformed file name).\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tInvalidArgument Code = 3\n\n\t// DeadlineExceeded means operation expired before completion.\n\t// For operations that change the state of the system, this error may be\n\t// returned even if the operation has completed successfully. For\n\t// example, a successful response from a server could have been delayed\n\t// long enough for the deadline to expire.\n\t//\n\t// The gRPC framework will generate this error code when the deadline is\n\t// exceeded.\n\tDeadlineExceeded Code = 4\n\n\t// NotFound means some requested entity (e.g., file or directory) was\n\t// not found.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tNotFound Code = 5\n\n\t// AlreadyExists means an attempt to create an entity failed because one\n\t// already exists.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tAlreadyExists Code = 6\n\n\t// PermissionDenied indicates the caller does not have permission to\n\t// execute the specified operation. It must not be used for rejections\n\t// caused by exhausting some resource (use ResourceExhausted\n\t// instead for those errors). It must not be\n\t// used if the caller cannot be identified (use Unauthenticated\n\t// instead for those errors).\n\t//\n\t// This error code will not be generated by the gRPC core framework,\n\t// but expect authentication middleware to use it.\n\tPermissionDenied Code = 7\n\n\t// ResourceExhausted indicates some resource has been exhausted, perhaps\n\t// a per-user quota, or perhaps the entire file system is out of space.\n\t//\n\t// This error code will be generated by the gRPC framework in\n\t// out-of-memory and server overload situations, or when a message is\n\t// larger than the configured maximum size.\n\tResourceExhausted Code = 8\n\n\t// FailedPrecondition indicates operation was rejected because the\n\t// system is not in a state required for the operation's execution.\n\t// For example, directory to be deleted may be non-empty, an rmdir\n\t// operation is applied to a non-directory, etc.\n\t//\n\t// A litmus test that may help a service implementor in deciding\n\t// between FailedPrecondition, Aborted, and Unavailable:\n\t//  (a) Use Unavailable if the client can retry just the failing call.\n\t//  (b) Use Aborted if the client should retry at a higher-level\n\t//      (e.g., restarting a read-modify-write sequence).\n\t//  (c) Use FailedPrecondition if the client should not retry until\n\t//      the system state has been explicitly fixed. E.g., if an \"rmdir\"\n\t//      fails because the directory is non-empty, FailedPrecondition\n\t//      should be returned since the client should not retry unless\n\t//      they have first fixed up the directory by deleting files from it.\n\t//  (d) Use FailedPrecondition if the client performs conditional\n\t//      REST Get/Update/Delete on a resource and the resource on the\n\t//      server does not match the condition. E.g., conflicting\n\t//      read-modify-write on the same resource.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tFailedPrecondition Code = 9\n\n\t// Aborted indicates the operation was aborted, typically due to a\n\t// concurrency issue like sequencer check failures, transaction aborts,\n\t// etc.\n\t//\n\t// See litmus test above for deciding between FailedPrecondition,\n\t// Aborted, and Unavailable.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tAborted Code = 10\n\n\t// OutOfRange means operation was attempted past the valid range.\n\t// E.g., seeking or reading past end of file.\n\t//\n\t// Unlike InvalidArgument, this error indicates a problem that may\n\t// be fixed if the system state changes. For example, a 32-bit file\n\t// system will generate InvalidArgument if asked to read at an\n\t// offset that is not in the range [0,2^32-1], but it will generate\n\t// OutOfRange if asked to read from an offset past the current\n\t// file size.\n\t//\n\t// There is a fair bit of overlap between FailedPrecondition and\n\t// OutOfRange. We recommend using OutOfRange (the more specific\n\t// error) when it applies so that callers who are iterating through\n\t// a space can easily look for an OutOfRange error to detect when\n\t// they are done.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tOutOfRange Code = 11\n\n\t// Unimplemented indicates operation is not implemented or not\n\t// supported/enabled in this service.\n\t//\n\t// This error code will be generated by the gRPC framework. Most\n\t// commonly, you will see this error code when a method implementation\n\t// is missing on the server. It can also be generated for unknown\n\t// compression algorithms or a disagreement as to whether an RPC should\n\t// be streaming.\n\tUnimplemented Code = 12\n\n\t// Internal errors. Means some invariants expected by underlying\n\t// system has been broken. If you see one of these errors,\n\t// something is very broken.\n\t//\n\t// This error code will be generated by the gRPC framework in several\n\t// internal error conditions.\n\tInternal Code = 13\n\n\t// Unavailable indicates the service is currently unavailable.\n\t// This is a most likely a transient condition and may be corrected\n\t// by retrying with a backoff. Note that it is not always safe to retry\n\t// non-idempotent operations.\n\t//\n\t// See litmus test above for deciding between FailedPrecondition,\n\t// Aborted, and Unavailable.\n\t//\n\t// This error code will be generated by the gRPC framework during\n\t// abrupt shutdown of a server process or network connection.\n\tUnavailable Code = 14\n\n\t// DataLoss indicates unrecoverable data loss or corruption.\n\t//\n\t// This error code will not be generated by the gRPC framework.\n\tDataLoss Code = 15\n\n\t// Unauthenticated indicates the request does not have valid\n\t// authentication credentials for the operation.\n\t//\n\t// The gRPC framework will generate this error code when the\n\t// authentication metadata is invalid or a Credentials callback fails,\n\t// but also expect authentication middleware to generate it.\n\tUnauthenticated Code = 16\n\n\t_maxCode = 17\n)\n\nvar strToCode = map[string]Code{\n\t`\"OK\"`: OK,\n\t`\"CANCELLED\"`:/* [sic] */ Canceled,\n\t`\"UNKNOWN\"`:             Unknown,\n\t`\"INVALID_ARGUMENT\"`:    InvalidArgument,\n\t`\"DEADLINE_EXCEEDED\"`:   DeadlineExceeded,\n\t`\"NOT_FOUND\"`:           NotFound,\n\t`\"ALREADY_EXISTS\"`:      AlreadyExists,\n\t`\"PERMISSION_DENIED\"`:   PermissionDenied,\n\t`\"RESOURCE_EXHAUSTED\"`:  ResourceExhausted,\n\t`\"FAILED_PRECONDITION\"`: FailedPrecondition,\n\t`\"ABORTED\"`:             Aborted,\n\t`\"OUT_OF_RANGE\"`:        OutOfRange,\n\t`\"UNIMPLEMENTED\"`:       Unimplemented,\n\t`\"INTERNAL\"`:            Internal,\n\t`\"UNAVAILABLE\"`:         Unavailable,\n\t`\"DATA_LOSS\"`:           DataLoss,\n\t`\"UNAUTHENTICATED\"`:     Unauthenticated,\n}\n\n// UnmarshalJSON unmarshals b into the Code.\nfunc (c *Code) UnmarshalJSON(b []byte) error {\n\t// From json.Unmarshaler: By convention, to approximate the behavior of\n\t// Unmarshal itself, Unmarshalers implement UnmarshalJSON([]byte(\"null\")) as\n\t// a no-op.\n\tif string(b) == \"null\" {\n\t\treturn nil\n\t}\n\tif c == nil {\n\t\treturn fmt.Errorf(\"nil receiver passed to UnmarshalJSON\")\n\t}\n\n\tif ci, err := strconv.ParseUint(string(b), 10, 32); err == nil {\n\t\tif ci >= _maxCode {\n\t\t\treturn fmt.Errorf(\"invalid code: %q\", ci)\n\t\t}\n\n\t\t*c = Code(ci)\n\t\treturn nil\n\t}\n\n\tif jc, ok := strToCode[string(b)]; ok {\n\t\t*c = jc\n\t\treturn nil\n\t}\n\treturn fmt.Errorf(\"invalid code: %q\", string(b))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/connectivity/connectivity.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package connectivity defines connectivity semantics.\n// For details, see https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md.\npackage connectivity\n\nimport (\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nvar logger = grpclog.Component(\"core\")\n\n// State indicates the state of connectivity.\n// It can be the state of a ClientConn or SubConn.\ntype State int\n\nfunc (s State) String() string {\n\tswitch s {\n\tcase Idle:\n\t\treturn \"IDLE\"\n\tcase Connecting:\n\t\treturn \"CONNECTING\"\n\tcase Ready:\n\t\treturn \"READY\"\n\tcase TransientFailure:\n\t\treturn \"TRANSIENT_FAILURE\"\n\tcase Shutdown:\n\t\treturn \"SHUTDOWN\"\n\tdefault:\n\t\tlogger.Errorf(\"unknown connectivity state: %d\", s)\n\t\treturn \"INVALID_STATE\"\n\t}\n}\n\nconst (\n\t// Idle indicates the ClientConn is idle.\n\tIdle State = iota\n\t// Connecting indicates the ClientConn is connecting.\n\tConnecting\n\t// Ready indicates the ClientConn is ready for work.\n\tReady\n\t// TransientFailure indicates the ClientConn has seen a failure but expects to recover.\n\tTransientFailure\n\t// Shutdown indicates the ClientConn has started shutting down.\n\tShutdown\n)\n\n// ServingMode indicates the current mode of operation of the server.\n//\n// Only xDS enabled gRPC servers currently report their serving mode.\ntype ServingMode int\n\nconst (\n\t// ServingModeStarting indicates that the server is starting up.\n\tServingModeStarting ServingMode = iota\n\t// ServingModeServing indicates that the server contains all required\n\t// configuration and is serving RPCs.\n\tServingModeServing\n\t// ServingModeNotServing indicates that the server is not accepting new\n\t// connections. Existing connections will be closed gracefully, allowing\n\t// in-progress RPCs to complete. A server enters this mode when it does not\n\t// contain the required configuration to serve RPCs.\n\tServingModeNotServing\n)\n\nfunc (s ServingMode) String() string {\n\tswitch s {\n\tcase ServingModeStarting:\n\t\treturn \"STARTING\"\n\tcase ServingModeServing:\n\t\treturn \"SERVING\"\n\tcase ServingModeNotServing:\n\t\treturn \"NOT_SERVING\"\n\tdefault:\n\t\tlogger.Errorf(\"unknown serving mode: %d\", s)\n\t\treturn \"INVALID_MODE\"\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/credentials/credentials.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package credentials implements various credentials supported by gRPC library,\n// which encapsulate all the state needed by a client to authenticate with a\n// server and make various assertions, e.g., about the client's identity, role,\n// or whether it is authorized to make a particular call.\npackage credentials // import \"google.golang.org/grpc/credentials\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\n\t\"github.com/golang/protobuf/proto\"\n\t\"google.golang.org/grpc/attributes\"\n\ticredentials \"google.golang.org/grpc/internal/credentials\"\n)\n\n// PerRPCCredentials defines the common interface for the credentials which need to\n// attach security information to every RPC (e.g., oauth2).\ntype PerRPCCredentials interface {\n\t// GetRequestMetadata gets the current request metadata, refreshing tokens\n\t// if required. This should be called by the transport layer on each\n\t// request, and the data should be populated in headers or other\n\t// context. If a status code is returned, it will be used as the status for\n\t// the RPC (restricted to an allowable set of codes as defined by gRFC\n\t// A54). uri is the URI of the entry point for the request.  When supported\n\t// by the underlying implementation, ctx can be used for timeout and\n\t// cancellation. Additionally, RequestInfo data will be available via ctx\n\t// to this call.  TODO(zhaoq): Define the set of the qualified keys instead\n\t// of leaving it as an arbitrary string.\n\tGetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error)\n\t// RequireTransportSecurity indicates whether the credentials requires\n\t// transport security.\n\tRequireTransportSecurity() bool\n}\n\n// SecurityLevel defines the protection level on an established connection.\n//\n// This API is experimental.\ntype SecurityLevel int\n\nconst (\n\t// InvalidSecurityLevel indicates an invalid security level.\n\t// The zero SecurityLevel value is invalid for backward compatibility.\n\tInvalidSecurityLevel SecurityLevel = iota\n\t// NoSecurity indicates a connection is insecure.\n\tNoSecurity\n\t// IntegrityOnly indicates a connection only provides integrity protection.\n\tIntegrityOnly\n\t// PrivacyAndIntegrity indicates a connection provides both privacy and integrity protection.\n\tPrivacyAndIntegrity\n)\n\n// String returns SecurityLevel in a string format.\nfunc (s SecurityLevel) String() string {\n\tswitch s {\n\tcase NoSecurity:\n\t\treturn \"NoSecurity\"\n\tcase IntegrityOnly:\n\t\treturn \"IntegrityOnly\"\n\tcase PrivacyAndIntegrity:\n\t\treturn \"PrivacyAndIntegrity\"\n\t}\n\treturn fmt.Sprintf(\"invalid SecurityLevel: %v\", int(s))\n}\n\n// CommonAuthInfo contains authenticated information common to AuthInfo implementations.\n// It should be embedded in a struct implementing AuthInfo to provide additional information\n// about the credentials.\n//\n// This API is experimental.\ntype CommonAuthInfo struct {\n\tSecurityLevel SecurityLevel\n}\n\n// GetCommonAuthInfo returns the pointer to CommonAuthInfo struct.\nfunc (c CommonAuthInfo) GetCommonAuthInfo() CommonAuthInfo {\n\treturn c\n}\n\n// ProtocolInfo provides information regarding the gRPC wire protocol version,\n// security protocol, security protocol version in use, server name, etc.\ntype ProtocolInfo struct {\n\t// ProtocolVersion is the gRPC wire protocol version.\n\tProtocolVersion string\n\t// SecurityProtocol is the security protocol in use.\n\tSecurityProtocol string\n\t// SecurityVersion is the security protocol version.  It is a static version string from the\n\t// credentials, not a value that reflects per-connection protocol negotiation.  To retrieve\n\t// details about the credentials used for a connection, use the Peer's AuthInfo field instead.\n\t//\n\t// Deprecated: please use Peer.AuthInfo.\n\tSecurityVersion string\n\t// ServerName is the user-configured server name.\n\tServerName string\n}\n\n// AuthInfo defines the common interface for the auth information the users are interested in.\n// A struct that implements AuthInfo should embed CommonAuthInfo by including additional\n// information about the credentials in it.\ntype AuthInfo interface {\n\tAuthType() string\n}\n\n// ErrConnDispatched indicates that rawConn has been dispatched out of gRPC\n// and the caller should not close rawConn.\nvar ErrConnDispatched = errors.New(\"credentials: rawConn is dispatched out of gRPC\")\n\n// TransportCredentials defines the common interface for all the live gRPC wire\n// protocols and supported transport security protocols (e.g., TLS, SSL).\ntype TransportCredentials interface {\n\t// ClientHandshake does the authentication handshake specified by the\n\t// corresponding authentication protocol on rawConn for clients. It returns\n\t// the authenticated connection and the corresponding auth information\n\t// about the connection.  The auth information should embed CommonAuthInfo\n\t// to return additional information about the credentials. Implementations\n\t// must use the provided context to implement timely cancellation.  gRPC\n\t// will try to reconnect if the error returned is a temporary error\n\t// (io.EOF, context.DeadlineExceeded or err.Temporary() == true).  If the\n\t// returned error is a wrapper error, implementations should make sure that\n\t// the error implements Temporary() to have the correct retry behaviors.\n\t// Additionally, ClientHandshakeInfo data will be available via the context\n\t// passed to this call.\n\t//\n\t// The second argument to this method is the `:authority` header value used\n\t// while creating new streams on this connection after authentication\n\t// succeeds. Implementations must use this as the server name during the\n\t// authentication handshake.\n\t//\n\t// If the returned net.Conn is closed, it MUST close the net.Conn provided.\n\tClientHandshake(context.Context, string, net.Conn) (net.Conn, AuthInfo, error)\n\t// ServerHandshake does the authentication handshake for servers. It returns\n\t// the authenticated connection and the corresponding auth information about\n\t// the connection. The auth information should embed CommonAuthInfo to return additional information\n\t// about the credentials.\n\t//\n\t// If the returned net.Conn is closed, it MUST close the net.Conn provided.\n\tServerHandshake(net.Conn) (net.Conn, AuthInfo, error)\n\t// Info provides the ProtocolInfo of this TransportCredentials.\n\tInfo() ProtocolInfo\n\t// Clone makes a copy of this TransportCredentials.\n\tClone() TransportCredentials\n\t// OverrideServerName specifies the value used for the following:\n\t// - verifying the hostname on the returned certificates\n\t// - as SNI in the client's handshake to support virtual hosting\n\t// - as the value for `:authority` header at stream creation time\n\t//\n\t// Deprecated: use grpc.WithAuthority instead. Will be supported\n\t// throughout 1.x.\n\tOverrideServerName(string) error\n}\n\n// Bundle is a combination of TransportCredentials and PerRPCCredentials.\n//\n// It also contains a mode switching method, so it can be used as a combination\n// of different credential policies.\n//\n// Bundle cannot be used together with individual TransportCredentials.\n// PerRPCCredentials from Bundle will be appended to other PerRPCCredentials.\n//\n// This API is experimental.\ntype Bundle interface {\n\t// TransportCredentials returns the transport credentials from the Bundle.\n\t//\n\t// Implementations must return non-nil transport credentials. If transport\n\t// security is not needed by the Bundle, implementations may choose to\n\t// return insecure.NewCredentials().\n\tTransportCredentials() TransportCredentials\n\n\t// PerRPCCredentials returns the per-RPC credentials from the Bundle.\n\t//\n\t// May be nil if per-RPC credentials are not needed.\n\tPerRPCCredentials() PerRPCCredentials\n\n\t// NewWithMode should make a copy of Bundle, and switch mode. Modifying the\n\t// existing Bundle may cause races.\n\t//\n\t// NewWithMode returns nil if the requested mode is not supported.\n\tNewWithMode(mode string) (Bundle, error)\n}\n\n// RequestInfo contains request data attached to the context passed to GetRequestMetadata calls.\n//\n// This API is experimental.\ntype RequestInfo struct {\n\t// The method passed to Invoke or NewStream for this RPC. (For proto methods, this has the format \"/some.Service/Method\")\n\tMethod string\n\t// AuthInfo contains the information from a security handshake (TransportCredentials.ClientHandshake, TransportCredentials.ServerHandshake)\n\tAuthInfo AuthInfo\n}\n\n// RequestInfoFromContext extracts the RequestInfo from the context if it exists.\n//\n// This API is experimental.\nfunc RequestInfoFromContext(ctx context.Context) (ri RequestInfo, ok bool) {\n\tri, ok = icredentials.RequestInfoFromContext(ctx).(RequestInfo)\n\treturn ri, ok\n}\n\n// ClientHandshakeInfo holds data to be passed to ClientHandshake. This makes\n// it possible to pass arbitrary data to the handshaker from gRPC, resolver,\n// balancer etc. Individual credential implementations control the actual\n// format of the data that they are willing to receive.\n//\n// This API is experimental.\ntype ClientHandshakeInfo struct {\n\t// Attributes contains the attributes for the address. It could be provided\n\t// by the gRPC, resolver, balancer etc.\n\tAttributes *attributes.Attributes\n}\n\n// ClientHandshakeInfoFromContext returns the ClientHandshakeInfo struct stored\n// in ctx.\n//\n// This API is experimental.\nfunc ClientHandshakeInfoFromContext(ctx context.Context) ClientHandshakeInfo {\n\tchi, _ := icredentials.ClientHandshakeInfoFromContext(ctx).(ClientHandshakeInfo)\n\treturn chi\n}\n\n// CheckSecurityLevel checks if a connection's security level is greater than or equal to the specified one.\n// It returns success if 1) the condition is satisified or 2) AuthInfo struct does not implement GetCommonAuthInfo() method\n// or 3) CommonAuthInfo.SecurityLevel has an invalid zero value. For 2) and 3), it is for the purpose of backward-compatibility.\n//\n// This API is experimental.\nfunc CheckSecurityLevel(ai AuthInfo, level SecurityLevel) error {\n\ttype internalInfo interface {\n\t\tGetCommonAuthInfo() CommonAuthInfo\n\t}\n\tif ai == nil {\n\t\treturn errors.New(\"AuthInfo is nil\")\n\t}\n\tif ci, ok := ai.(internalInfo); ok {\n\t\t// CommonAuthInfo.SecurityLevel has an invalid value.\n\t\tif ci.GetCommonAuthInfo().SecurityLevel == InvalidSecurityLevel {\n\t\t\treturn nil\n\t\t}\n\t\tif ci.GetCommonAuthInfo().SecurityLevel < level {\n\t\t\treturn fmt.Errorf(\"requires SecurityLevel %v; connection has %v\", level, ci.GetCommonAuthInfo().SecurityLevel)\n\t\t}\n\t}\n\t// The condition is satisfied or AuthInfo struct does not implement GetCommonAuthInfo() method.\n\treturn nil\n}\n\n// ChannelzSecurityInfo defines the interface that security protocols should implement\n// in order to provide security info to channelz.\n//\n// This API is experimental.\ntype ChannelzSecurityInfo interface {\n\tGetSecurityValue() ChannelzSecurityValue\n}\n\n// ChannelzSecurityValue defines the interface that GetSecurityValue() return value\n// should satisfy. This interface should only be satisfied by *TLSChannelzSecurityValue\n// and *OtherChannelzSecurityValue.\n//\n// This API is experimental.\ntype ChannelzSecurityValue interface {\n\tisChannelzSecurityValue()\n}\n\n// OtherChannelzSecurityValue defines the struct that non-TLS protocol should return\n// from GetSecurityValue(), which contains protocol specific security info. Note\n// the Value field will be sent to users of channelz requesting channel info, and\n// thus sensitive info should better be avoided.\n//\n// This API is experimental.\ntype OtherChannelzSecurityValue struct {\n\tChannelzSecurityValue\n\tName  string\n\tValue proto.Message\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/credentials/insecure/insecure.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package insecure provides an implementation of the\n// credentials.TransportCredentials interface which disables transport security.\npackage insecure\n\nimport (\n\t\"context\"\n\t\"net\"\n\n\t\"google.golang.org/grpc/credentials\"\n)\n\n// NewCredentials returns a credentials which disables transport security.\n//\n// Note that using this credentials with per-RPC credentials which require\n// transport security is incompatible and will cause grpc.Dial() to fail.\nfunc NewCredentials() credentials.TransportCredentials {\n\treturn insecureTC{}\n}\n\n// insecureTC implements the insecure transport credentials. The handshake\n// methods simply return the passed in net.Conn and set the security level to\n// NoSecurity.\ntype insecureTC struct{}\n\nfunc (insecureTC) ClientHandshake(ctx context.Context, _ string, conn net.Conn) (net.Conn, credentials.AuthInfo, error) {\n\treturn conn, info{credentials.CommonAuthInfo{SecurityLevel: credentials.NoSecurity}}, nil\n}\n\nfunc (insecureTC) ServerHandshake(conn net.Conn) (net.Conn, credentials.AuthInfo, error) {\n\treturn conn, info{credentials.CommonAuthInfo{SecurityLevel: credentials.NoSecurity}}, nil\n}\n\nfunc (insecureTC) Info() credentials.ProtocolInfo {\n\treturn credentials.ProtocolInfo{SecurityProtocol: \"insecure\"}\n}\n\nfunc (insecureTC) Clone() credentials.TransportCredentials {\n\treturn insecureTC{}\n}\n\nfunc (insecureTC) OverrideServerName(string) error {\n\treturn nil\n}\n\n// info contains the auth information for an insecure connection.\n// It implements the AuthInfo interface.\ntype info struct {\n\tcredentials.CommonAuthInfo\n}\n\n// AuthType returns the type of info as a string.\nfunc (info) AuthType() string {\n\treturn \"insecure\"\n}\n\n// insecureBundle implements an insecure bundle.\n// An insecure bundle provides a thin wrapper around insecureTC to support\n// the credentials.Bundle interface.\ntype insecureBundle struct{}\n\n// NewBundle returns a bundle with disabled transport security and no per rpc credential.\nfunc NewBundle() credentials.Bundle {\n\treturn insecureBundle{}\n}\n\n// NewWithMode returns a new insecure Bundle. The mode is ignored.\nfunc (insecureBundle) NewWithMode(string) (credentials.Bundle, error) {\n\treturn insecureBundle{}, nil\n}\n\n// PerRPCCredentials returns an nil implementation as insecure\n// bundle does not support a per rpc credential.\nfunc (insecureBundle) PerRPCCredentials() credentials.PerRPCCredentials {\n\treturn nil\n}\n\n// TransportCredentials returns the underlying insecure transport credential.\nfunc (insecureBundle) TransportCredentials() credentials.TransportCredentials {\n\treturn NewCredentials()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/credentials/tls.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage credentials\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"os\"\n\n\tcredinternal \"google.golang.org/grpc/internal/credentials\"\n)\n\n// TLSInfo contains the auth information for a TLS authenticated connection.\n// It implements the AuthInfo interface.\ntype TLSInfo struct {\n\tState tls.ConnectionState\n\tCommonAuthInfo\n\t// This API is experimental.\n\tSPIFFEID *url.URL\n}\n\n// AuthType returns the type of TLSInfo as a string.\nfunc (t TLSInfo) AuthType() string {\n\treturn \"tls\"\n}\n\n// GetSecurityValue returns security info requested by channelz.\nfunc (t TLSInfo) GetSecurityValue() ChannelzSecurityValue {\n\tv := &TLSChannelzSecurityValue{\n\t\tStandardName: cipherSuiteLookup[t.State.CipherSuite],\n\t}\n\t// Currently there's no way to get LocalCertificate info from tls package.\n\tif len(t.State.PeerCertificates) > 0 {\n\t\tv.RemoteCertificate = t.State.PeerCertificates[0].Raw\n\t}\n\treturn v\n}\n\n// tlsCreds is the credentials required for authenticating a connection using TLS.\ntype tlsCreds struct {\n\t// TLS configuration\n\tconfig *tls.Config\n}\n\nfunc (c tlsCreds) Info() ProtocolInfo {\n\treturn ProtocolInfo{\n\t\tSecurityProtocol: \"tls\",\n\t\tSecurityVersion:  \"1.2\",\n\t\tServerName:       c.config.ServerName,\n\t}\n}\n\nfunc (c *tlsCreds) ClientHandshake(ctx context.Context, authority string, rawConn net.Conn) (_ net.Conn, _ AuthInfo, err error) {\n\t// use local cfg to avoid clobbering ServerName if using multiple endpoints\n\tcfg := credinternal.CloneTLSConfig(c.config)\n\tif cfg.ServerName == \"\" {\n\t\tserverName, _, err := net.SplitHostPort(authority)\n\t\tif err != nil {\n\t\t\t// If the authority had no host port or if the authority cannot be parsed, use it as-is.\n\t\t\tserverName = authority\n\t\t}\n\t\tcfg.ServerName = serverName\n\t}\n\tconn := tls.Client(rawConn, cfg)\n\terrChannel := make(chan error, 1)\n\tgo func() {\n\t\terrChannel <- conn.Handshake()\n\t\tclose(errChannel)\n\t}()\n\tselect {\n\tcase err := <-errChannel:\n\t\tif err != nil {\n\t\t\tconn.Close()\n\t\t\treturn nil, nil, err\n\t\t}\n\tcase <-ctx.Done():\n\t\tconn.Close()\n\t\treturn nil, nil, ctx.Err()\n\t}\n\ttlsInfo := TLSInfo{\n\t\tState: conn.ConnectionState(),\n\t\tCommonAuthInfo: CommonAuthInfo{\n\t\t\tSecurityLevel: PrivacyAndIntegrity,\n\t\t},\n\t}\n\tid := credinternal.SPIFFEIDFromState(conn.ConnectionState())\n\tif id != nil {\n\t\ttlsInfo.SPIFFEID = id\n\t}\n\treturn credinternal.WrapSyscallConn(rawConn, conn), tlsInfo, nil\n}\n\nfunc (c *tlsCreds) ServerHandshake(rawConn net.Conn) (net.Conn, AuthInfo, error) {\n\tconn := tls.Server(rawConn, c.config)\n\tif err := conn.Handshake(); err != nil {\n\t\tconn.Close()\n\t\treturn nil, nil, err\n\t}\n\ttlsInfo := TLSInfo{\n\t\tState: conn.ConnectionState(),\n\t\tCommonAuthInfo: CommonAuthInfo{\n\t\t\tSecurityLevel: PrivacyAndIntegrity,\n\t\t},\n\t}\n\tid := credinternal.SPIFFEIDFromState(conn.ConnectionState())\n\tif id != nil {\n\t\ttlsInfo.SPIFFEID = id\n\t}\n\treturn credinternal.WrapSyscallConn(rawConn, conn), tlsInfo, nil\n}\n\nfunc (c *tlsCreds) Clone() TransportCredentials {\n\treturn NewTLS(c.config)\n}\n\nfunc (c *tlsCreds) OverrideServerName(serverNameOverride string) error {\n\tc.config.ServerName = serverNameOverride\n\treturn nil\n}\n\n// NewTLS uses c to construct a TransportCredentials based on TLS.\nfunc NewTLS(c *tls.Config) TransportCredentials {\n\ttc := &tlsCreds{credinternal.CloneTLSConfig(c)}\n\ttc.config.NextProtos = credinternal.AppendH2ToNextProtos(tc.config.NextProtos)\n\treturn tc\n}\n\n// NewClientTLSFromCert constructs TLS credentials from the provided root\n// certificate authority certificate(s) to validate server connections. If\n// certificates to establish the identity of the client need to be included in\n// the credentials (eg: for mTLS), use NewTLS instead, where a complete\n// tls.Config can be specified.\n// serverNameOverride is for testing only. If set to a non empty string,\n// it will override the virtual host name of authority (e.g. :authority header\n// field) in requests.\nfunc NewClientTLSFromCert(cp *x509.CertPool, serverNameOverride string) TransportCredentials {\n\treturn NewTLS(&tls.Config{ServerName: serverNameOverride, RootCAs: cp})\n}\n\n// NewClientTLSFromFile constructs TLS credentials from the provided root\n// certificate authority certificate file(s) to validate server connections. If\n// certificates to establish the identity of the client need to be included in\n// the credentials (eg: for mTLS), use NewTLS instead, where a complete\n// tls.Config can be specified.\n// serverNameOverride is for testing only. If set to a non empty string,\n// it will override the virtual host name of authority (e.g. :authority header\n// field) in requests.\nfunc NewClientTLSFromFile(certFile, serverNameOverride string) (TransportCredentials, error) {\n\tb, err := os.ReadFile(certFile)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcp := x509.NewCertPool()\n\tif !cp.AppendCertsFromPEM(b) {\n\t\treturn nil, fmt.Errorf(\"credentials: failed to append certificates\")\n\t}\n\treturn NewTLS(&tls.Config{ServerName: serverNameOverride, RootCAs: cp}), nil\n}\n\n// NewServerTLSFromCert constructs TLS credentials from the input certificate for server.\nfunc NewServerTLSFromCert(cert *tls.Certificate) TransportCredentials {\n\treturn NewTLS(&tls.Config{Certificates: []tls.Certificate{*cert}})\n}\n\n// NewServerTLSFromFile constructs TLS credentials from the input certificate file and key\n// file for server.\nfunc NewServerTLSFromFile(certFile, keyFile string) (TransportCredentials, error) {\n\tcert, err := tls.LoadX509KeyPair(certFile, keyFile)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn NewTLS(&tls.Config{Certificates: []tls.Certificate{cert}}), nil\n}\n\n// TLSChannelzSecurityValue defines the struct that TLS protocol should return\n// from GetSecurityValue(), containing security info like cipher and certificate used.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype TLSChannelzSecurityValue struct {\n\tChannelzSecurityValue\n\tStandardName      string\n\tLocalCertificate  []byte\n\tRemoteCertificate []byte\n}\n\nvar cipherSuiteLookup = map[uint16]string{\n\ttls.TLS_RSA_WITH_RC4_128_SHA:                \"TLS_RSA_WITH_RC4_128_SHA\",\n\ttls.TLS_RSA_WITH_3DES_EDE_CBC_SHA:           \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n\ttls.TLS_RSA_WITH_AES_128_CBC_SHA:            \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n\ttls.TLS_RSA_WITH_AES_256_CBC_SHA:            \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n\ttls.TLS_RSA_WITH_AES_128_GCM_SHA256:         \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n\ttls.TLS_RSA_WITH_AES_256_GCM_SHA384:         \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n\ttls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA:        \"TLS_ECDHE_ECDSA_WITH_RC4_128_SHA\",\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:    \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:    \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n\ttls.TLS_ECDHE_RSA_WITH_RC4_128_SHA:          \"TLS_ECDHE_RSA_WITH_RC4_128_SHA\",\n\ttls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:     \"TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA\",\n\ttls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:      \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n\ttls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:      \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n\ttls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:   \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n\ttls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:   \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n\ttls.TLS_FALLBACK_SCSV:                       \"TLS_FALLBACK_SCSV\",\n\ttls.TLS_RSA_WITH_AES_128_CBC_SHA256:         \"TLS_RSA_WITH_AES_128_CBC_SHA256\",\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256: \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\",\n\ttls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:   \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\",\n\ttls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305:    \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305\",\n\ttls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305:  \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\",\n\ttls.TLS_AES_128_GCM_SHA256:                  \"TLS_AES_128_GCM_SHA256\",\n\ttls.TLS_AES_256_GCM_SHA384:                  \"TLS_AES_256_GCM_SHA384\",\n\ttls.TLS_CHACHA20_POLY1305_SHA256:            \"TLS_CHACHA20_POLY1305_SHA256\",\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/dialoptions.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"net\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/backoff\"\n\t\"google.golang.org/grpc/channelz\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/credentials/insecure\"\n\t\"google.golang.org/grpc/internal\"\n\tinternalbackoff \"google.golang.org/grpc/internal/backoff\"\n\t\"google.golang.org/grpc/internal/binarylog\"\n\t\"google.golang.org/grpc/internal/transport\"\n\t\"google.golang.org/grpc/keepalive\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/stats\"\n)\n\nfunc init() {\n\tinternal.AddGlobalDialOptions = func(opt ...DialOption) {\n\t\tglobalDialOptions = append(globalDialOptions, opt...)\n\t}\n\tinternal.ClearGlobalDialOptions = func() {\n\t\tglobalDialOptions = nil\n\t}\n\tinternal.WithBinaryLogger = withBinaryLogger\n\tinternal.JoinDialOptions = newJoinDialOption\n\tinternal.DisableGlobalDialOptions = newDisableGlobalDialOptions\n}\n\n// dialOptions configure a Dial call. dialOptions are set by the DialOption\n// values passed to Dial.\ntype dialOptions struct {\n\tunaryInt  UnaryClientInterceptor\n\tstreamInt StreamClientInterceptor\n\n\tchainUnaryInts  []UnaryClientInterceptor\n\tchainStreamInts []StreamClientInterceptor\n\n\tcp                          Compressor\n\tdc                          Decompressor\n\tbs                          internalbackoff.Strategy\n\tblock                       bool\n\treturnLastError             bool\n\ttimeout                     time.Duration\n\tscChan                      <-chan ServiceConfig\n\tauthority                   string\n\tbinaryLogger                binarylog.Logger\n\tcopts                       transport.ConnectOptions\n\tcallOptions                 []CallOption\n\tchannelzParentID            *channelz.Identifier\n\tdisableServiceConfig        bool\n\tdisableRetry                bool\n\tdisableHealthCheck          bool\n\thealthCheckFunc             internal.HealthChecker\n\tminConnectTimeout           func() time.Duration\n\tdefaultServiceConfig        *ServiceConfig // defaultServiceConfig is parsed from defaultServiceConfigRawJSON.\n\tdefaultServiceConfigRawJSON *string\n\tresolvers                   []resolver.Builder\n\tidleTimeout                 time.Duration\n\trecvBufferPool              SharedBufferPool\n}\n\n// DialOption configures how we set up the connection.\ntype DialOption interface {\n\tapply(*dialOptions)\n}\n\nvar globalDialOptions []DialOption\n\n// EmptyDialOption does not alter the dial configuration. It can be embedded in\n// another structure to build custom dial options.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype EmptyDialOption struct{}\n\nfunc (EmptyDialOption) apply(*dialOptions) {}\n\ntype disableGlobalDialOptions struct{}\n\nfunc (disableGlobalDialOptions) apply(*dialOptions) {}\n\n// newDisableGlobalDialOptions returns a DialOption that prevents the ClientConn\n// from applying the global DialOptions (set via AddGlobalDialOptions).\nfunc newDisableGlobalDialOptions() DialOption {\n\treturn &disableGlobalDialOptions{}\n}\n\n// funcDialOption wraps a function that modifies dialOptions into an\n// implementation of the DialOption interface.\ntype funcDialOption struct {\n\tf func(*dialOptions)\n}\n\nfunc (fdo *funcDialOption) apply(do *dialOptions) {\n\tfdo.f(do)\n}\n\nfunc newFuncDialOption(f func(*dialOptions)) *funcDialOption {\n\treturn &funcDialOption{\n\t\tf: f,\n\t}\n}\n\ntype joinDialOption struct {\n\topts []DialOption\n}\n\nfunc (jdo *joinDialOption) apply(do *dialOptions) {\n\tfor _, opt := range jdo.opts {\n\t\topt.apply(do)\n\t}\n}\n\nfunc newJoinDialOption(opts ...DialOption) DialOption {\n\treturn &joinDialOption{opts: opts}\n}\n\n// WithSharedWriteBuffer allows reusing per-connection transport write buffer.\n// If this option is set to true every connection will release the buffer after\n// flushing the data on the wire.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithSharedWriteBuffer(val bool) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.SharedWriteBuffer = val\n\t})\n}\n\n// WithWriteBufferSize determines how much data can be batched before doing a\n// write on the wire. The corresponding memory allocation for this buffer will\n// be twice the size to keep syscalls low. The default value for this buffer is\n// 32KB.\n//\n// Zero or negative values will disable the write buffer such that each write\n// will be on underlying connection. Note: A Send call may not directly\n// translate to a write.\nfunc WithWriteBufferSize(s int) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.WriteBufferSize = s\n\t})\n}\n\n// WithReadBufferSize lets you set the size of read buffer, this determines how\n// much data can be read at most for each read syscall.\n//\n// The default value for this buffer is 32KB. Zero or negative values will\n// disable read buffer for a connection so data framer can access the\n// underlying conn directly.\nfunc WithReadBufferSize(s int) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.ReadBufferSize = s\n\t})\n}\n\n// WithInitialWindowSize returns a DialOption which sets the value for initial\n// window size on a stream. The lower bound for window size is 64K and any value\n// smaller than that will be ignored.\nfunc WithInitialWindowSize(s int32) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.InitialWindowSize = s\n\t})\n}\n\n// WithInitialConnWindowSize returns a DialOption which sets the value for\n// initial window size on a connection. The lower bound for window size is 64K\n// and any value smaller than that will be ignored.\nfunc WithInitialConnWindowSize(s int32) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.InitialConnWindowSize = s\n\t})\n}\n\n// WithMaxMsgSize returns a DialOption which sets the maximum message size the\n// client can receive.\n//\n// Deprecated: use WithDefaultCallOptions(MaxCallRecvMsgSize(s)) instead.  Will\n// be supported throughout 1.x.\nfunc WithMaxMsgSize(s int) DialOption {\n\treturn WithDefaultCallOptions(MaxCallRecvMsgSize(s))\n}\n\n// WithDefaultCallOptions returns a DialOption which sets the default\n// CallOptions for calls over the connection.\nfunc WithDefaultCallOptions(cos ...CallOption) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.callOptions = append(o.callOptions, cos...)\n\t})\n}\n\n// WithCodec returns a DialOption which sets a codec for message marshaling and\n// unmarshaling.\n//\n// Deprecated: use WithDefaultCallOptions(ForceCodec(_)) instead.  Will be\n// supported throughout 1.x.\nfunc WithCodec(c Codec) DialOption {\n\treturn WithDefaultCallOptions(CallCustomCodec(c))\n}\n\n// WithCompressor returns a DialOption which sets a Compressor to use for\n// message compression. It has lower priority than the compressor set by the\n// UseCompressor CallOption.\n//\n// Deprecated: use UseCompressor instead.  Will be supported throughout 1.x.\nfunc WithCompressor(cp Compressor) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.cp = cp\n\t})\n}\n\n// WithDecompressor returns a DialOption which sets a Decompressor to use for\n// incoming message decompression.  If incoming response messages are encoded\n// using the decompressor's Type(), it will be used.  Otherwise, the message\n// encoding will be used to look up the compressor registered via\n// encoding.RegisterCompressor, which will then be used to decompress the\n// message.  If no compressor is registered for the encoding, an Unimplemented\n// status error will be returned.\n//\n// Deprecated: use encoding.RegisterCompressor instead.  Will be supported\n// throughout 1.x.\nfunc WithDecompressor(dc Decompressor) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.dc = dc\n\t})\n}\n\n// WithServiceConfig returns a DialOption which has a channel to read the\n// service configuration.\n//\n// Deprecated: service config should be received through name resolver or via\n// WithDefaultServiceConfig, as specified at\n// https://github.com/grpc/grpc/blob/master/doc/service_config.md.  Will be\n// removed in a future 1.x release.\nfunc WithServiceConfig(c <-chan ServiceConfig) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.scChan = c\n\t})\n}\n\n// WithConnectParams configures the ClientConn to use the provided ConnectParams\n// for creating and maintaining connections to servers.\n//\n// The backoff configuration specified as part of the ConnectParams overrides\n// all defaults specified in\n// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. Consider\n// using the backoff.DefaultConfig as a base, in cases where you want to\n// override only a subset of the backoff configuration.\nfunc WithConnectParams(p ConnectParams) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.bs = internalbackoff.Exponential{Config: p.Backoff}\n\t\to.minConnectTimeout = func() time.Duration {\n\t\t\treturn p.MinConnectTimeout\n\t\t}\n\t})\n}\n\n// WithBackoffMaxDelay configures the dialer to use the provided maximum delay\n// when backing off after failed connection attempts.\n//\n// Deprecated: use WithConnectParams instead. Will be supported throughout 1.x.\nfunc WithBackoffMaxDelay(md time.Duration) DialOption {\n\treturn WithBackoffConfig(BackoffConfig{MaxDelay: md})\n}\n\n// WithBackoffConfig configures the dialer to use the provided backoff\n// parameters after connection failures.\n//\n// Deprecated: use WithConnectParams instead. Will be supported throughout 1.x.\nfunc WithBackoffConfig(b BackoffConfig) DialOption {\n\tbc := backoff.DefaultConfig\n\tbc.MaxDelay = b.MaxDelay\n\treturn withBackoff(internalbackoff.Exponential{Config: bc})\n}\n\n// withBackoff sets the backoff strategy used for connectRetryNum after a failed\n// connection attempt.\n//\n// This can be exported if arbitrary backoff strategies are allowed by gRPC.\nfunc withBackoff(bs internalbackoff.Strategy) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.bs = bs\n\t})\n}\n\n// WithBlock returns a DialOption which makes callers of Dial block until the\n// underlying connection is up. Without this, Dial returns immediately and\n// connecting the server happens in background.\n//\n// Use of this feature is not recommended.  For more information, please see:\n// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md\nfunc WithBlock() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.block = true\n\t})\n}\n\n// WithReturnConnectionError returns a DialOption which makes the client connection\n// return a string containing both the last connection error that occurred and\n// the context.DeadlineExceeded error.\n// Implies WithBlock()\n//\n// Use of this feature is not recommended.  For more information, please see:\n// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithReturnConnectionError() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.block = true\n\t\to.returnLastError = true\n\t})\n}\n\n// WithInsecure returns a DialOption which disables transport security for this\n// ClientConn. Under the hood, it uses insecure.NewCredentials().\n//\n// Note that using this DialOption with per-RPC credentials (through\n// WithCredentialsBundle or WithPerRPCCredentials) which require transport\n// security is incompatible and will cause grpc.Dial() to fail.\n//\n// Deprecated: use WithTransportCredentials and insecure.NewCredentials()\n// instead. Will be supported throughout 1.x.\nfunc WithInsecure() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.TransportCredentials = insecure.NewCredentials()\n\t})\n}\n\n// WithNoProxy returns a DialOption which disables the use of proxies for this\n// ClientConn. This is ignored if WithDialer or WithContextDialer are used.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithNoProxy() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.UseProxy = false\n\t})\n}\n\n// WithTransportCredentials returns a DialOption which configures a connection\n// level security credentials (e.g., TLS/SSL). This should not be used together\n// with WithCredentialsBundle.\nfunc WithTransportCredentials(creds credentials.TransportCredentials) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.TransportCredentials = creds\n\t})\n}\n\n// WithPerRPCCredentials returns a DialOption which sets credentials and places\n// auth state on each outbound RPC.\nfunc WithPerRPCCredentials(creds credentials.PerRPCCredentials) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.PerRPCCredentials = append(o.copts.PerRPCCredentials, creds)\n\t})\n}\n\n// WithCredentialsBundle returns a DialOption to set a credentials bundle for\n// the ClientConn.WithCreds. This should not be used together with\n// WithTransportCredentials.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithCredentialsBundle(b credentials.Bundle) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.CredsBundle = b\n\t})\n}\n\n// WithTimeout returns a DialOption that configures a timeout for dialing a\n// ClientConn initially. This is valid if and only if WithBlock() is present.\n//\n// Deprecated: use DialContext instead of Dial and context.WithTimeout\n// instead.  Will be supported throughout 1.x.\nfunc WithTimeout(d time.Duration) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.timeout = d\n\t})\n}\n\n// WithContextDialer returns a DialOption that sets a dialer to create\n// connections. If FailOnNonTempDialError() is set to true, and an error is\n// returned by f, gRPC checks the error's Temporary() method to decide if it\n// should try to reconnect to the network address.\nfunc WithContextDialer(f func(context.Context, string) (net.Conn, error)) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.Dialer = f\n\t})\n}\n\nfunc init() {\n\tinternal.WithHealthCheckFunc = withHealthCheckFunc\n}\n\n// WithDialer returns a DialOption that specifies a function to use for dialing\n// network addresses. If FailOnNonTempDialError() is set to true, and an error\n// is returned by f, gRPC checks the error's Temporary() method to decide if it\n// should try to reconnect to the network address.\n//\n// Deprecated: use WithContextDialer instead.  Will be supported throughout\n// 1.x.\nfunc WithDialer(f func(string, time.Duration) (net.Conn, error)) DialOption {\n\treturn WithContextDialer(\n\t\tfunc(ctx context.Context, addr string) (net.Conn, error) {\n\t\t\tif deadline, ok := ctx.Deadline(); ok {\n\t\t\t\treturn f(addr, time.Until(deadline))\n\t\t\t}\n\t\t\treturn f(addr, 0)\n\t\t})\n}\n\n// WithStatsHandler returns a DialOption that specifies the stats handler for\n// all the RPCs and underlying network connections in this ClientConn.\nfunc WithStatsHandler(h stats.Handler) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\tif h == nil {\n\t\t\tlogger.Error(\"ignoring nil parameter in grpc.WithStatsHandler ClientOption\")\n\t\t\t// Do not allow a nil stats handler, which would otherwise cause\n\t\t\t// panics.\n\t\t\treturn\n\t\t}\n\t\to.copts.StatsHandlers = append(o.copts.StatsHandlers, h)\n\t})\n}\n\n// withBinaryLogger returns a DialOption that specifies the binary logger for\n// this ClientConn.\nfunc withBinaryLogger(bl binarylog.Logger) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.binaryLogger = bl\n\t})\n}\n\n// FailOnNonTempDialError returns a DialOption that specifies if gRPC fails on\n// non-temporary dial errors. If f is true, and dialer returns a non-temporary\n// error, gRPC will fail the connection to the network address and won't try to\n// reconnect. The default value of FailOnNonTempDialError is false.\n//\n// FailOnNonTempDialError only affects the initial dial, and does not do\n// anything useful unless you are also using WithBlock().\n//\n// Use of this feature is not recommended.  For more information, please see:\n// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc FailOnNonTempDialError(f bool) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.FailOnNonTempDialError = f\n\t})\n}\n\n// WithUserAgent returns a DialOption that specifies a user agent string for all\n// the RPCs.\nfunc WithUserAgent(s string) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.UserAgent = s\n\t})\n}\n\n// WithKeepaliveParams returns a DialOption that specifies keepalive parameters\n// for the client transport.\nfunc WithKeepaliveParams(kp keepalive.ClientParameters) DialOption {\n\tif kp.Time < internal.KeepaliveMinPingTime {\n\t\tlogger.Warningf(\"Adjusting keepalive ping interval to minimum period of %v\", internal.KeepaliveMinPingTime)\n\t\tkp.Time = internal.KeepaliveMinPingTime\n\t}\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.KeepaliveParams = kp\n\t})\n}\n\n// WithUnaryInterceptor returns a DialOption that specifies the interceptor for\n// unary RPCs.\nfunc WithUnaryInterceptor(f UnaryClientInterceptor) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.unaryInt = f\n\t})\n}\n\n// WithChainUnaryInterceptor returns a DialOption that specifies the chained\n// interceptor for unary RPCs. The first interceptor will be the outer most,\n// while the last interceptor will be the inner most wrapper around the real call.\n// All interceptors added by this method will be chained, and the interceptor\n// defined by WithUnaryInterceptor will always be prepended to the chain.\nfunc WithChainUnaryInterceptor(interceptors ...UnaryClientInterceptor) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.chainUnaryInts = append(o.chainUnaryInts, interceptors...)\n\t})\n}\n\n// WithStreamInterceptor returns a DialOption that specifies the interceptor for\n// streaming RPCs.\nfunc WithStreamInterceptor(f StreamClientInterceptor) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.streamInt = f\n\t})\n}\n\n// WithChainStreamInterceptor returns a DialOption that specifies the chained\n// interceptor for streaming RPCs. The first interceptor will be the outer most,\n// while the last interceptor will be the inner most wrapper around the real call.\n// All interceptors added by this method will be chained, and the interceptor\n// defined by WithStreamInterceptor will always be prepended to the chain.\nfunc WithChainStreamInterceptor(interceptors ...StreamClientInterceptor) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.chainStreamInts = append(o.chainStreamInts, interceptors...)\n\t})\n}\n\n// WithAuthority returns a DialOption that specifies the value to be used as the\n// :authority pseudo-header and as the server name in authentication handshake.\nfunc WithAuthority(a string) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.authority = a\n\t})\n}\n\n// WithChannelzParentID returns a DialOption that specifies the channelz ID of\n// current ClientConn's parent. This function is used in nested channel creation\n// (e.g. grpclb dial).\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithChannelzParentID(id *channelz.Identifier) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.channelzParentID = id\n\t})\n}\n\n// WithDisableServiceConfig returns a DialOption that causes gRPC to ignore any\n// service config provided by the resolver and provides a hint to the resolver\n// to not fetch service configs.\n//\n// Note that this dial option only disables service config from resolver. If\n// default service config is provided, gRPC will use the default service config.\nfunc WithDisableServiceConfig() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.disableServiceConfig = true\n\t})\n}\n\n// WithDefaultServiceConfig returns a DialOption that configures the default\n// service config, which will be used in cases where:\n//\n// 1. WithDisableServiceConfig is also used, or\n//\n// 2. The name resolver does not provide a service config or provides an\n// invalid service config.\n//\n// The parameter s is the JSON representation of the default service config.\n// For more information about service configs, see:\n// https://github.com/grpc/grpc/blob/master/doc/service_config.md\n// For a simple example of usage, see:\n// examples/features/load_balancing/client/main.go\nfunc WithDefaultServiceConfig(s string) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.defaultServiceConfigRawJSON = &s\n\t})\n}\n\n// WithDisableRetry returns a DialOption that disables retries, even if the\n// service config enables them.  This does not impact transparent retries, which\n// will happen automatically if no data is written to the wire or if the RPC is\n// unprocessed by the remote server.\nfunc WithDisableRetry() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.disableRetry = true\n\t})\n}\n\n// WithMaxHeaderListSize returns a DialOption that specifies the maximum\n// (uncompressed) size of header list that the client is prepared to accept.\nfunc WithMaxHeaderListSize(s uint32) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.copts.MaxHeaderListSize = &s\n\t})\n}\n\n// WithDisableHealthCheck disables the LB channel health checking for all\n// SubConns of this ClientConn.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithDisableHealthCheck() DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.disableHealthCheck = true\n\t})\n}\n\n// withHealthCheckFunc replaces the default health check function with the\n// provided one. It makes tests easier to change the health check function.\n//\n// For testing purpose only.\nfunc withHealthCheckFunc(f internal.HealthChecker) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.healthCheckFunc = f\n\t})\n}\n\nfunc defaultDialOptions() dialOptions {\n\treturn dialOptions{\n\t\thealthCheckFunc: internal.HealthCheckFunc,\n\t\tcopts: transport.ConnectOptions{\n\t\t\tWriteBufferSize: defaultWriteBufSize,\n\t\t\tReadBufferSize:  defaultReadBufSize,\n\t\t\tUseProxy:        true,\n\t\t},\n\t\trecvBufferPool: nopBufferPool{},\n\t\tidleTimeout:    30 * time.Minute,\n\t}\n}\n\n// withGetMinConnectDeadline specifies the function that clientconn uses to\n// get minConnectDeadline. This can be used to make connection attempts happen\n// faster/slower.\n//\n// For testing purpose only.\nfunc withMinConnectDeadline(f func() time.Duration) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.minConnectTimeout = f\n\t})\n}\n\n// WithResolvers allows a list of resolver implementations to be registered\n// locally with the ClientConn without needing to be globally registered via\n// resolver.Register.  They will be matched against the scheme used for the\n// current Dial only, and will take precedence over the global registry.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithResolvers(rs ...resolver.Builder) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.resolvers = append(o.resolvers, rs...)\n\t})\n}\n\n// WithIdleTimeout returns a DialOption that configures an idle timeout for the\n// channel. If the channel is idle for the configured timeout, i.e there are no\n// ongoing RPCs and no new RPCs are initiated, the channel will enter idle mode\n// and as a result the name resolver and load balancer will be shut down. The\n// channel will exit idle mode when the Connect() method is called or when an\n// RPC is initiated.\n//\n// A default timeout of 30 minutes will be used if this dial option is not set\n// at dial time and idleness can be disabled by passing a timeout of zero.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithIdleTimeout(d time.Duration) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.idleTimeout = d\n\t})\n}\n\n// WithRecvBufferPool returns a DialOption that configures the ClientConn\n// to use the provided shared buffer pool for parsing incoming messages. Depending\n// on the application's workload, this could result in reduced memory allocation.\n//\n// If you are unsure about how to implement a memory pool but want to utilize one,\n// begin with grpc.NewSharedBufferPool.\n//\n// Note: The shared buffer pool feature will not be active if any of the following\n// options are used: WithStatsHandler, EnableTracing, or binary logging. In such\n// cases, the shared buffer pool will be ignored.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc WithRecvBufferPool(bufferPool SharedBufferPool) DialOption {\n\treturn newFuncDialOption(func(o *dialOptions) {\n\t\to.recvBufferPool = bufferPool\n\t})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/doc.go",
    "content": "/*\n *\n * Copyright 2015 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n//go:generate ./regenerate.sh\n\n/*\nPackage grpc implements an RPC system called gRPC.\n\nSee grpc.io for more information about gRPC.\n*/\npackage grpc // import \"google.golang.org/grpc\"\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/encoding/encoding.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package encoding defines the interface for the compressor and codec, and\n// functions to register and retrieve compressors and codecs.\n//\n// # Experimental\n//\n// Notice: This package is EXPERIMENTAL and may be changed or removed in a\n// later release.\npackage encoding\n\nimport (\n\t\"io\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/internal/grpcutil\"\n)\n\n// Identity specifies the optional encoding for uncompressed streams.\n// It is intended for grpc internal use only.\nconst Identity = \"identity\"\n\n// Compressor is used for compressing and decompressing when sending or\n// receiving messages.\n//\n// If a Compressor implements `DecompressedSize(compressedBytes []byte) int`,\n// gRPC will invoke it to determine the size of the buffer allocated for the\n// result of decompression.  A return value of -1 indicates unknown size.\ntype Compressor interface {\n\t// Compress writes the data written to wc to w after compressing it.  If an\n\t// error occurs while initializing the compressor, that error is returned\n\t// instead.\n\tCompress(w io.Writer) (io.WriteCloser, error)\n\t// Decompress reads data from r, decompresses it, and provides the\n\t// uncompressed data via the returned io.Reader.  If an error occurs while\n\t// initializing the decompressor, that error is returned instead.\n\tDecompress(r io.Reader) (io.Reader, error)\n\t// Name is the name of the compression codec and is used to set the content\n\t// coding header.  The result must be static; the result cannot change\n\t// between calls.\n\tName() string\n}\n\nvar registeredCompressor = make(map[string]Compressor)\n\n// RegisterCompressor registers the compressor with gRPC by its name.  It can\n// be activated when sending an RPC via grpc.UseCompressor().  It will be\n// automatically accessed when receiving a message based on the content coding\n// header.  Servers also use it to send a response with the same encoding as\n// the request.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe.  If multiple Compressors are\n// registered with the same name, the one registered last will take effect.\nfunc RegisterCompressor(c Compressor) {\n\tregisteredCompressor[c.Name()] = c\n\tif !grpcutil.IsCompressorNameRegistered(c.Name()) {\n\t\tgrpcutil.RegisteredCompressorNames = append(grpcutil.RegisteredCompressorNames, c.Name())\n\t}\n}\n\n// GetCompressor returns Compressor for the given compressor name.\nfunc GetCompressor(name string) Compressor {\n\treturn registeredCompressor[name]\n}\n\n// Codec defines the interface gRPC uses to encode and decode messages.  Note\n// that implementations of this interface must be thread safe; a Codec's\n// methods can be called from concurrent goroutines.\ntype Codec interface {\n\t// Marshal returns the wire format of v.\n\tMarshal(v any) ([]byte, error)\n\t// Unmarshal parses the wire format into v.\n\tUnmarshal(data []byte, v any) error\n\t// Name returns the name of the Codec implementation. The returned string\n\t// will be used as part of content type in transmission.  The result must be\n\t// static; the result cannot change between calls.\n\tName() string\n}\n\nvar registeredCodecs = make(map[string]Codec)\n\n// RegisterCodec registers the provided Codec for use with all gRPC clients and\n// servers.\n//\n// The Codec will be stored and looked up by result of its Name() method, which\n// should match the content-subtype of the encoding handled by the Codec.  This\n// is case-insensitive, and is stored and looked up as lowercase.  If the\n// result of calling Name() is an empty string, RegisterCodec will panic. See\n// Content-Type on\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe.  If multiple Codecs are\n// registered with the same name, the one registered last will take effect.\nfunc RegisterCodec(codec Codec) {\n\tif codec == nil {\n\t\tpanic(\"cannot register a nil Codec\")\n\t}\n\tif codec.Name() == \"\" {\n\t\tpanic(\"cannot register Codec with empty string result for Name()\")\n\t}\n\tcontentSubtype := strings.ToLower(codec.Name())\n\tregisteredCodecs[contentSubtype] = codec\n}\n\n// GetCodec gets a registered Codec by content-subtype, or nil if no Codec is\n// registered for the content-subtype.\n//\n// The content-subtype is expected to be lowercase.\nfunc GetCodec(contentSubtype string) Codec {\n\treturn registeredCodecs[contentSubtype]\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/encoding/proto/proto.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package proto defines the protobuf codec. Importing this package will\n// register the codec.\npackage proto\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/golang/protobuf/proto\"\n\t\"google.golang.org/grpc/encoding\"\n)\n\n// Name is the name registered for the proto compressor.\nconst Name = \"proto\"\n\nfunc init() {\n\tencoding.RegisterCodec(codec{})\n}\n\n// codec is a Codec implementation with protobuf. It is the default codec for gRPC.\ntype codec struct{}\n\nfunc (codec) Marshal(v any) ([]byte, error) {\n\tvv, ok := v.(proto.Message)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"failed to marshal, message is %T, want proto.Message\", v)\n\t}\n\treturn proto.Marshal(vv)\n}\n\nfunc (codec) Unmarshal(data []byte, v any) error {\n\tvv, ok := v.(proto.Message)\n\tif !ok {\n\t\treturn fmt.Errorf(\"failed to unmarshal, message is %T, want proto.Message\", v)\n\t}\n\treturn proto.Unmarshal(data, vv)\n}\n\nfunc (codec) Name() string {\n\treturn Name\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/component.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpclog\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/internal/grpclog\"\n)\n\n// componentData records the settings for a component.\ntype componentData struct {\n\tname string\n}\n\nvar cache = map[string]*componentData{}\n\nfunc (c *componentData) InfoDepth(depth int, args ...any) {\n\targs = append([]any{\"[\" + string(c.name) + \"]\"}, args...)\n\tgrpclog.InfoDepth(depth+1, args...)\n}\n\nfunc (c *componentData) WarningDepth(depth int, args ...any) {\n\targs = append([]any{\"[\" + string(c.name) + \"]\"}, args...)\n\tgrpclog.WarningDepth(depth+1, args...)\n}\n\nfunc (c *componentData) ErrorDepth(depth int, args ...any) {\n\targs = append([]any{\"[\" + string(c.name) + \"]\"}, args...)\n\tgrpclog.ErrorDepth(depth+1, args...)\n}\n\nfunc (c *componentData) FatalDepth(depth int, args ...any) {\n\targs = append([]any{\"[\" + string(c.name) + \"]\"}, args...)\n\tgrpclog.FatalDepth(depth+1, args...)\n}\n\nfunc (c *componentData) Info(args ...any) {\n\tc.InfoDepth(1, args...)\n}\n\nfunc (c *componentData) Warning(args ...any) {\n\tc.WarningDepth(1, args...)\n}\n\nfunc (c *componentData) Error(args ...any) {\n\tc.ErrorDepth(1, args...)\n}\n\nfunc (c *componentData) Fatal(args ...any) {\n\tc.FatalDepth(1, args...)\n}\n\nfunc (c *componentData) Infof(format string, args ...any) {\n\tc.InfoDepth(1, fmt.Sprintf(format, args...))\n}\n\nfunc (c *componentData) Warningf(format string, args ...any) {\n\tc.WarningDepth(1, fmt.Sprintf(format, args...))\n}\n\nfunc (c *componentData) Errorf(format string, args ...any) {\n\tc.ErrorDepth(1, fmt.Sprintf(format, args...))\n}\n\nfunc (c *componentData) Fatalf(format string, args ...any) {\n\tc.FatalDepth(1, fmt.Sprintf(format, args...))\n}\n\nfunc (c *componentData) Infoln(args ...any) {\n\tc.InfoDepth(1, args...)\n}\n\nfunc (c *componentData) Warningln(args ...any) {\n\tc.WarningDepth(1, args...)\n}\n\nfunc (c *componentData) Errorln(args ...any) {\n\tc.ErrorDepth(1, args...)\n}\n\nfunc (c *componentData) Fatalln(args ...any) {\n\tc.FatalDepth(1, args...)\n}\n\nfunc (c *componentData) V(l int) bool {\n\treturn V(l)\n}\n\n// Component creates a new component and returns it for logging. If a component\n// with the name already exists, nothing will be created and it will be\n// returned. SetLoggerV2 will panic if it is called with a logger created by\n// Component.\nfunc Component(componentName string) DepthLoggerV2 {\n\tif cData, ok := cache[componentName]; ok {\n\t\treturn cData\n\t}\n\tc := &componentData{componentName}\n\tcache[componentName] = c\n\treturn c\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/grpclog.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package grpclog defines logging for grpc.\n//\n// All logs in transport and grpclb packages only go to verbose level 2.\n// All logs in other packages in grpc are logged in spite of the verbosity level.\n//\n// In the default logger,\n// severity level can be set by environment variable GRPC_GO_LOG_SEVERITY_LEVEL,\n// verbosity level can be set by GRPC_GO_LOG_VERBOSITY_LEVEL.\npackage grpclog // import \"google.golang.org/grpc/grpclog\"\n\nimport (\n\t\"os\"\n\n\t\"google.golang.org/grpc/internal/grpclog\"\n)\n\nfunc init() {\n\tSetLoggerV2(newLoggerV2())\n}\n\n// V reports whether verbosity level l is at least the requested verbose level.\nfunc V(l int) bool {\n\treturn grpclog.Logger.V(l)\n}\n\n// Info logs to the INFO log.\nfunc Info(args ...any) {\n\tgrpclog.Logger.Info(args...)\n}\n\n// Infof logs to the INFO log. Arguments are handled in the manner of fmt.Printf.\nfunc Infof(format string, args ...any) {\n\tgrpclog.Logger.Infof(format, args...)\n}\n\n// Infoln logs to the INFO log. Arguments are handled in the manner of fmt.Println.\nfunc Infoln(args ...any) {\n\tgrpclog.Logger.Infoln(args...)\n}\n\n// Warning logs to the WARNING log.\nfunc Warning(args ...any) {\n\tgrpclog.Logger.Warning(args...)\n}\n\n// Warningf logs to the WARNING log. Arguments are handled in the manner of fmt.Printf.\nfunc Warningf(format string, args ...any) {\n\tgrpclog.Logger.Warningf(format, args...)\n}\n\n// Warningln logs to the WARNING log. Arguments are handled in the manner of fmt.Println.\nfunc Warningln(args ...any) {\n\tgrpclog.Logger.Warningln(args...)\n}\n\n// Error logs to the ERROR log.\nfunc Error(args ...any) {\n\tgrpclog.Logger.Error(args...)\n}\n\n// Errorf logs to the ERROR log. Arguments are handled in the manner of fmt.Printf.\nfunc Errorf(format string, args ...any) {\n\tgrpclog.Logger.Errorf(format, args...)\n}\n\n// Errorln logs to the ERROR log. Arguments are handled in the manner of fmt.Println.\nfunc Errorln(args ...any) {\n\tgrpclog.Logger.Errorln(args...)\n}\n\n// Fatal logs to the FATAL log. Arguments are handled in the manner of fmt.Print.\n// It calls os.Exit() with exit code 1.\nfunc Fatal(args ...any) {\n\tgrpclog.Logger.Fatal(args...)\n\t// Make sure fatal logs will exit.\n\tos.Exit(1)\n}\n\n// Fatalf logs to the FATAL log. Arguments are handled in the manner of fmt.Printf.\n// It calls os.Exit() with exit code 1.\nfunc Fatalf(format string, args ...any) {\n\tgrpclog.Logger.Fatalf(format, args...)\n\t// Make sure fatal logs will exit.\n\tos.Exit(1)\n}\n\n// Fatalln logs to the FATAL log. Arguments are handled in the manner of fmt.Println.\n// It calle os.Exit()) with exit code 1.\nfunc Fatalln(args ...any) {\n\tgrpclog.Logger.Fatalln(args...)\n\t// Make sure fatal logs will exit.\n\tos.Exit(1)\n}\n\n// Print prints to the logger. Arguments are handled in the manner of fmt.Print.\n//\n// Deprecated: use Info.\nfunc Print(args ...any) {\n\tgrpclog.Logger.Info(args...)\n}\n\n// Printf prints to the logger. Arguments are handled in the manner of fmt.Printf.\n//\n// Deprecated: use Infof.\nfunc Printf(format string, args ...any) {\n\tgrpclog.Logger.Infof(format, args...)\n}\n\n// Println prints to the logger. Arguments are handled in the manner of fmt.Println.\n//\n// Deprecated: use Infoln.\nfunc Println(args ...any) {\n\tgrpclog.Logger.Infoln(args...)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/logger.go",
    "content": "/*\n *\n * Copyright 2015 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpclog\n\nimport \"google.golang.org/grpc/internal/grpclog\"\n\n// Logger mimics golang's standard Logger as an interface.\n//\n// Deprecated: use LoggerV2.\ntype Logger interface {\n\tFatal(args ...any)\n\tFatalf(format string, args ...any)\n\tFatalln(args ...any)\n\tPrint(args ...any)\n\tPrintf(format string, args ...any)\n\tPrintln(args ...any)\n}\n\n// SetLogger sets the logger that is used in grpc. Call only from\n// init() functions.\n//\n// Deprecated: use SetLoggerV2.\nfunc SetLogger(l Logger) {\n\tgrpclog.Logger = &loggerWrapper{Logger: l}\n}\n\n// loggerWrapper wraps Logger into a LoggerV2.\ntype loggerWrapper struct {\n\tLogger\n}\n\nfunc (g *loggerWrapper) Info(args ...any) {\n\tg.Logger.Print(args...)\n}\n\nfunc (g *loggerWrapper) Infoln(args ...any) {\n\tg.Logger.Println(args...)\n}\n\nfunc (g *loggerWrapper) Infof(format string, args ...any) {\n\tg.Logger.Printf(format, args...)\n}\n\nfunc (g *loggerWrapper) Warning(args ...any) {\n\tg.Logger.Print(args...)\n}\n\nfunc (g *loggerWrapper) Warningln(args ...any) {\n\tg.Logger.Println(args...)\n}\n\nfunc (g *loggerWrapper) Warningf(format string, args ...any) {\n\tg.Logger.Printf(format, args...)\n}\n\nfunc (g *loggerWrapper) Error(args ...any) {\n\tg.Logger.Print(args...)\n}\n\nfunc (g *loggerWrapper) Errorln(args ...any) {\n\tg.Logger.Println(args...)\n}\n\nfunc (g *loggerWrapper) Errorf(format string, args ...any) {\n\tg.Logger.Printf(format, args...)\n}\n\nfunc (g *loggerWrapper) V(l int) bool {\n\t// Returns true for all verbose level.\n\treturn true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/grpclog/loggerv2.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpclog\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/internal/grpclog\"\n)\n\n// LoggerV2 does underlying logging work for grpclog.\ntype LoggerV2 interface {\n\t// Info logs to INFO log. Arguments are handled in the manner of fmt.Print.\n\tInfo(args ...any)\n\t// Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println.\n\tInfoln(args ...any)\n\t// Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf.\n\tInfof(format string, args ...any)\n\t// Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print.\n\tWarning(args ...any)\n\t// Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println.\n\tWarningln(args ...any)\n\t// Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf.\n\tWarningf(format string, args ...any)\n\t// Error logs to ERROR log. Arguments are handled in the manner of fmt.Print.\n\tError(args ...any)\n\t// Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println.\n\tErrorln(args ...any)\n\t// Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.\n\tErrorf(format string, args ...any)\n\t// Fatal logs to ERROR log. Arguments are handled in the manner of fmt.Print.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatal(args ...any)\n\t// Fatalln logs to ERROR log. Arguments are handled in the manner of fmt.Println.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatalln(args ...any)\n\t// Fatalf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatalf(format string, args ...any)\n\t// V reports whether verbosity level l is at least the requested verbose level.\n\tV(l int) bool\n}\n\n// SetLoggerV2 sets logger that is used in grpc to a V2 logger.\n// Not mutex-protected, should be called before any gRPC functions.\nfunc SetLoggerV2(l LoggerV2) {\n\tif _, ok := l.(*componentData); ok {\n\t\tpanic(\"cannot use component logger as grpclog logger\")\n\t}\n\tgrpclog.Logger = l\n\tgrpclog.DepthLogger, _ = l.(grpclog.DepthLoggerV2)\n}\n\nconst (\n\t// infoLog indicates Info severity.\n\tinfoLog int = iota\n\t// warningLog indicates Warning severity.\n\twarningLog\n\t// errorLog indicates Error severity.\n\terrorLog\n\t// fatalLog indicates Fatal severity.\n\tfatalLog\n)\n\n// severityName contains the string representation of each severity.\nvar severityName = []string{\n\tinfoLog:    \"INFO\",\n\twarningLog: \"WARNING\",\n\terrorLog:   \"ERROR\",\n\tfatalLog:   \"FATAL\",\n}\n\n// loggerT is the default logger used by grpclog.\ntype loggerT struct {\n\tm          []*log.Logger\n\tv          int\n\tjsonFormat bool\n}\n\n// NewLoggerV2 creates a loggerV2 with the provided writers.\n// Fatal logs will be written to errorW, warningW, infoW, followed by exit(1).\n// Error logs will be written to errorW, warningW and infoW.\n// Warning logs will be written to warningW and infoW.\n// Info logs will be written to infoW.\nfunc NewLoggerV2(infoW, warningW, errorW io.Writer) LoggerV2 {\n\treturn newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{})\n}\n\n// NewLoggerV2WithVerbosity creates a loggerV2 with the provided writers and\n// verbosity level.\nfunc NewLoggerV2WithVerbosity(infoW, warningW, errorW io.Writer, v int) LoggerV2 {\n\treturn newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{verbose: v})\n}\n\ntype loggerV2Config struct {\n\tverbose    int\n\tjsonFormat bool\n}\n\nfunc newLoggerV2WithConfig(infoW, warningW, errorW io.Writer, c loggerV2Config) LoggerV2 {\n\tvar m []*log.Logger\n\tflag := log.LstdFlags\n\tif c.jsonFormat {\n\t\tflag = 0\n\t}\n\tm = append(m, log.New(infoW, \"\", flag))\n\tm = append(m, log.New(io.MultiWriter(infoW, warningW), \"\", flag))\n\tew := io.MultiWriter(infoW, warningW, errorW) // ew will be used for error and fatal.\n\tm = append(m, log.New(ew, \"\", flag))\n\tm = append(m, log.New(ew, \"\", flag))\n\treturn &loggerT{m: m, v: c.verbose, jsonFormat: c.jsonFormat}\n}\n\n// newLoggerV2 creates a loggerV2 to be used as default logger.\n// All logs are written to stderr.\nfunc newLoggerV2() LoggerV2 {\n\terrorW := io.Discard\n\twarningW := io.Discard\n\tinfoW := io.Discard\n\n\tlogLevel := os.Getenv(\"GRPC_GO_LOG_SEVERITY_LEVEL\")\n\tswitch logLevel {\n\tcase \"\", \"ERROR\", \"error\": // If env is unset, set level to ERROR.\n\t\terrorW = os.Stderr\n\tcase \"WARNING\", \"warning\":\n\t\twarningW = os.Stderr\n\tcase \"INFO\", \"info\":\n\t\tinfoW = os.Stderr\n\t}\n\n\tvar v int\n\tvLevel := os.Getenv(\"GRPC_GO_LOG_VERBOSITY_LEVEL\")\n\tif vl, err := strconv.Atoi(vLevel); err == nil {\n\t\tv = vl\n\t}\n\n\tjsonFormat := strings.EqualFold(os.Getenv(\"GRPC_GO_LOG_FORMATTER\"), \"json\")\n\n\treturn newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{\n\t\tverbose:    v,\n\t\tjsonFormat: jsonFormat,\n\t})\n}\n\nfunc (g *loggerT) output(severity int, s string) {\n\tsevStr := severityName[severity]\n\tif !g.jsonFormat {\n\t\tg.m[severity].Output(2, fmt.Sprintf(\"%v: %v\", sevStr, s))\n\t\treturn\n\t}\n\t// TODO: we can also include the logging component, but that needs more\n\t// (API) changes.\n\tb, _ := json.Marshal(map[string]string{\n\t\t\"severity\": sevStr,\n\t\t\"message\":  s,\n\t})\n\tg.m[severity].Output(2, string(b))\n}\n\nfunc (g *loggerT) Info(args ...any) {\n\tg.output(infoLog, fmt.Sprint(args...))\n}\n\nfunc (g *loggerT) Infoln(args ...any) {\n\tg.output(infoLog, fmt.Sprintln(args...))\n}\n\nfunc (g *loggerT) Infof(format string, args ...any) {\n\tg.output(infoLog, fmt.Sprintf(format, args...))\n}\n\nfunc (g *loggerT) Warning(args ...any) {\n\tg.output(warningLog, fmt.Sprint(args...))\n}\n\nfunc (g *loggerT) Warningln(args ...any) {\n\tg.output(warningLog, fmt.Sprintln(args...))\n}\n\nfunc (g *loggerT) Warningf(format string, args ...any) {\n\tg.output(warningLog, fmt.Sprintf(format, args...))\n}\n\nfunc (g *loggerT) Error(args ...any) {\n\tg.output(errorLog, fmt.Sprint(args...))\n}\n\nfunc (g *loggerT) Errorln(args ...any) {\n\tg.output(errorLog, fmt.Sprintln(args...))\n}\n\nfunc (g *loggerT) Errorf(format string, args ...any) {\n\tg.output(errorLog, fmt.Sprintf(format, args...))\n}\n\nfunc (g *loggerT) Fatal(args ...any) {\n\tg.output(fatalLog, fmt.Sprint(args...))\n\tos.Exit(1)\n}\n\nfunc (g *loggerT) Fatalln(args ...any) {\n\tg.output(fatalLog, fmt.Sprintln(args...))\n\tos.Exit(1)\n}\n\nfunc (g *loggerT) Fatalf(format string, args ...any) {\n\tg.output(fatalLog, fmt.Sprintf(format, args...))\n\tos.Exit(1)\n}\n\nfunc (g *loggerT) V(l int) bool {\n\treturn l <= g.v\n}\n\n// DepthLoggerV2 logs at a specified call frame. If a LoggerV2 also implements\n// DepthLoggerV2, the below functions will be called with the appropriate stack\n// depth set for trivial functions the logger may ignore.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype DepthLoggerV2 interface {\n\tLoggerV2\n\t// InfoDepth logs to INFO log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tInfoDepth(depth int, args ...any)\n\t// WarningDepth logs to WARNING log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tWarningDepth(depth int, args ...any)\n\t// ErrorDepth logs to ERROR log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tErrorDepth(depth int, args ...any)\n\t// FatalDepth logs to FATAL log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tFatalDepth(depth int, args ...any)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/interceptor.go",
    "content": "/*\n *\n * Copyright 2016 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n)\n\n// UnaryInvoker is called by UnaryClientInterceptor to complete RPCs.\ntype UnaryInvoker func(ctx context.Context, method string, req, reply any, cc *ClientConn, opts ...CallOption) error\n\n// UnaryClientInterceptor intercepts the execution of a unary RPC on the client.\n// Unary interceptors can be specified as a DialOption, using\n// WithUnaryInterceptor() or WithChainUnaryInterceptor(), when creating a\n// ClientConn. When a unary interceptor(s) is set on a ClientConn, gRPC\n// delegates all unary RPC invocations to the interceptor, and it is the\n// responsibility of the interceptor to call invoker to complete the processing\n// of the RPC.\n//\n// method is the RPC name. req and reply are the corresponding request and\n// response messages. cc is the ClientConn on which the RPC was invoked. invoker\n// is the handler to complete the RPC and it is the responsibility of the\n// interceptor to call it. opts contain all applicable call options, including\n// defaults from the ClientConn as well as per-call options.\n//\n// The returned error must be compatible with the status package.\ntype UnaryClientInterceptor func(ctx context.Context, method string, req, reply any, cc *ClientConn, invoker UnaryInvoker, opts ...CallOption) error\n\n// Streamer is called by StreamClientInterceptor to create a ClientStream.\ntype Streamer func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (ClientStream, error)\n\n// StreamClientInterceptor intercepts the creation of a ClientStream. Stream\n// interceptors can be specified as a DialOption, using WithStreamInterceptor()\n// or WithChainStreamInterceptor(), when creating a ClientConn. When a stream\n// interceptor(s) is set on the ClientConn, gRPC delegates all stream creations\n// to the interceptor, and it is the responsibility of the interceptor to call\n// streamer.\n//\n// desc contains a description of the stream. cc is the ClientConn on which the\n// RPC was invoked. streamer is the handler to create a ClientStream and it is\n// the responsibility of the interceptor to call it. opts contain all applicable\n// call options, including defaults from the ClientConn as well as per-call\n// options.\n//\n// StreamClientInterceptor may return a custom ClientStream to intercept all I/O\n// operations. The returned error must be compatible with the status package.\ntype StreamClientInterceptor func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, streamer Streamer, opts ...CallOption) (ClientStream, error)\n\n// UnaryServerInfo consists of various information about a unary RPC on\n// server side. All per-rpc information may be mutated by the interceptor.\ntype UnaryServerInfo struct {\n\t// Server is the service implementation the user provides. This is read-only.\n\tServer any\n\t// FullMethod is the full RPC method string, i.e., /package.service/method.\n\tFullMethod string\n}\n\n// UnaryHandler defines the handler invoked by UnaryServerInterceptor to complete the normal\n// execution of a unary RPC.\n//\n// If a UnaryHandler returns an error, it should either be produced by the\n// status package, or be one of the context errors. Otherwise, gRPC will use\n// codes.Unknown as the status code and err.Error() as the status message of the\n// RPC.\ntype UnaryHandler func(ctx context.Context, req any) (any, error)\n\n// UnaryServerInterceptor provides a hook to intercept the execution of a unary RPC on the server. info\n// contains all the information of this RPC the interceptor can operate on. And handler is the wrapper\n// of the service method implementation. It is the responsibility of the interceptor to invoke handler\n// to complete the RPC.\ntype UnaryServerInterceptor func(ctx context.Context, req any, info *UnaryServerInfo, handler UnaryHandler) (resp any, err error)\n\n// StreamServerInfo consists of various information about a streaming RPC on\n// server side. All per-rpc information may be mutated by the interceptor.\ntype StreamServerInfo struct {\n\t// FullMethod is the full RPC method string, i.e., /package.service/method.\n\tFullMethod string\n\t// IsClientStream indicates whether the RPC is a client streaming RPC.\n\tIsClientStream bool\n\t// IsServerStream indicates whether the RPC is a server streaming RPC.\n\tIsServerStream bool\n}\n\n// StreamServerInterceptor provides a hook to intercept the execution of a streaming RPC on the server.\n// info contains all the information of this RPC the interceptor can operate on. And handler is the\n// service method implementation. It is the responsibility of the interceptor to invoke handler to\n// complete the RPC.\ntype StreamServerInterceptor func(srv any, ss ServerStream, info *StreamServerInfo, handler StreamHandler) error\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/backoff/backoff.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package backoff implement the backoff strategy for gRPC.\n//\n// This is kept in internal until the gRPC project decides whether or not to\n// allow alternative backoff strategies.\npackage backoff\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"time\"\n\n\tgrpcbackoff \"google.golang.org/grpc/backoff\"\n\t\"google.golang.org/grpc/internal/grpcrand\"\n)\n\n// Strategy defines the methodology for backing off after a grpc connection\n// failure.\ntype Strategy interface {\n\t// Backoff returns the amount of time to wait before the next retry given\n\t// the number of consecutive failures.\n\tBackoff(retries int) time.Duration\n}\n\n// DefaultExponential is an exponential backoff implementation using the\n// default values for all the configurable knobs defined in\n// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.\nvar DefaultExponential = Exponential{Config: grpcbackoff.DefaultConfig}\n\n// Exponential implements exponential backoff algorithm as defined in\n// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.\ntype Exponential struct {\n\t// Config contains all options to configure the backoff algorithm.\n\tConfig grpcbackoff.Config\n}\n\n// Backoff returns the amount of time to wait before the next retry given the\n// number of retries.\nfunc (bc Exponential) Backoff(retries int) time.Duration {\n\tif retries == 0 {\n\t\treturn bc.Config.BaseDelay\n\t}\n\tbackoff, max := float64(bc.Config.BaseDelay), float64(bc.Config.MaxDelay)\n\tfor backoff < max && retries > 0 {\n\t\tbackoff *= bc.Config.Multiplier\n\t\tretries--\n\t}\n\tif backoff > max {\n\t\tbackoff = max\n\t}\n\t// Randomize backoff delays so that if a cluster of requests start at\n\t// the same time, they won't operate in lockstep.\n\tbackoff *= 1 + bc.Config.Jitter*(grpcrand.Float64()*2-1)\n\tif backoff < 0 {\n\t\treturn 0\n\t}\n\treturn time.Duration(backoff)\n}\n\n// ErrResetBackoff is the error to be returned by the function executed by RunF,\n// to instruct the latter to reset its backoff state.\nvar ErrResetBackoff = errors.New(\"reset backoff state\")\n\n// RunF provides a convenient way to run a function f repeatedly until the\n// context expires or f returns a non-nil error that is not ErrResetBackoff.\n// When f returns ErrResetBackoff, RunF continues to run f, but resets its\n// backoff state before doing so. backoff accepts an integer representing the\n// number of retries, and returns the amount of time to backoff.\nfunc RunF(ctx context.Context, f func() error, backoff func(int) time.Duration) {\n\tattempt := 0\n\ttimer := time.NewTimer(0)\n\tfor ctx.Err() == nil {\n\t\tselect {\n\t\tcase <-timer.C:\n\t\tcase <-ctx.Done():\n\t\t\ttimer.Stop()\n\t\t\treturn\n\t\t}\n\n\t\terr := f()\n\t\tif errors.Is(err, ErrResetBackoff) {\n\t\t\ttimer.Reset(0)\n\t\t\tattempt = 0\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\ttimer.Reset(backoff(attempt))\n\t\tattempt++\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go",
    "content": "/*\n *\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package gracefulswitch implements a graceful switch load balancer.\npackage gracefulswitch\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/balancer/base\"\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\nvar errBalancerClosed = errors.New(\"gracefulSwitchBalancer is closed\")\nvar _ balancer.Balancer = (*Balancer)(nil)\n\n// NewBalancer returns a graceful switch Balancer.\nfunc NewBalancer(cc balancer.ClientConn, opts balancer.BuildOptions) *Balancer {\n\treturn &Balancer{\n\t\tcc:    cc,\n\t\tbOpts: opts,\n\t}\n}\n\n// Balancer is a utility to gracefully switch from one balancer to\n// a new balancer. It implements the balancer.Balancer interface.\ntype Balancer struct {\n\tbOpts balancer.BuildOptions\n\tcc    balancer.ClientConn\n\n\t// mu protects the following fields and all fields within balancerCurrent\n\t// and balancerPending. mu does not need to be held when calling into the\n\t// child balancers, as all calls into these children happen only as a direct\n\t// result of a call into the gracefulSwitchBalancer, which are also\n\t// guaranteed to be synchronous. There is one exception: an UpdateState call\n\t// from a child balancer when current and pending are populated can lead to\n\t// calling Close() on the current. To prevent that racing with an\n\t// UpdateSubConnState from the channel, we hold currentMu during Close and\n\t// UpdateSubConnState calls.\n\tmu              sync.Mutex\n\tbalancerCurrent *balancerWrapper\n\tbalancerPending *balancerWrapper\n\tclosed          bool // set to true when this balancer is closed\n\n\t// currentMu must be locked before mu. This mutex guards against this\n\t// sequence of events: UpdateSubConnState() called, finds the\n\t// balancerCurrent, gives up lock, updateState comes in, causes Close() on\n\t// balancerCurrent before the UpdateSubConnState is called on the\n\t// balancerCurrent.\n\tcurrentMu sync.Mutex\n}\n\n// swap swaps out the current lb with the pending lb and updates the ClientConn.\n// The caller must hold gsb.mu.\nfunc (gsb *Balancer) swap() {\n\tgsb.cc.UpdateState(gsb.balancerPending.lastState)\n\tcur := gsb.balancerCurrent\n\tgsb.balancerCurrent = gsb.balancerPending\n\tgsb.balancerPending = nil\n\tgo func() {\n\t\tgsb.currentMu.Lock()\n\t\tdefer gsb.currentMu.Unlock()\n\t\tcur.Close()\n\t}()\n}\n\n// Helper function that checks if the balancer passed in is current or pending.\n// The caller must hold gsb.mu.\nfunc (gsb *Balancer) balancerCurrentOrPending(bw *balancerWrapper) bool {\n\treturn bw == gsb.balancerCurrent || bw == gsb.balancerPending\n}\n\n// SwitchTo initializes the graceful switch process, which completes based on\n// connectivity state changes on the current/pending balancer. Thus, the switch\n// process is not complete when this method returns. This method must be called\n// synchronously alongside the rest of the balancer.Balancer methods this\n// Graceful Switch Balancer implements.\nfunc (gsb *Balancer) SwitchTo(builder balancer.Builder) error {\n\tgsb.mu.Lock()\n\tif gsb.closed {\n\t\tgsb.mu.Unlock()\n\t\treturn errBalancerClosed\n\t}\n\tbw := &balancerWrapper{\n\t\tgsb: gsb,\n\t\tlastState: balancer.State{\n\t\t\tConnectivityState: connectivity.Connecting,\n\t\t\tPicker:            base.NewErrPicker(balancer.ErrNoSubConnAvailable),\n\t\t},\n\t\tsubconns: make(map[balancer.SubConn]bool),\n\t}\n\tbalToClose := gsb.balancerPending // nil if there is no pending balancer\n\tif gsb.balancerCurrent == nil {\n\t\tgsb.balancerCurrent = bw\n\t} else {\n\t\tgsb.balancerPending = bw\n\t}\n\tgsb.mu.Unlock()\n\tbalToClose.Close()\n\t// This function takes a builder instead of a balancer because builder.Build\n\t// can call back inline, and this utility needs to handle the callbacks.\n\tnewBalancer := builder.Build(bw, gsb.bOpts)\n\tif newBalancer == nil {\n\t\t// This is illegal and should never happen; we clear the balancerWrapper\n\t\t// we were constructing if it happens to avoid a potential panic.\n\t\tgsb.mu.Lock()\n\t\tif gsb.balancerPending != nil {\n\t\t\tgsb.balancerPending = nil\n\t\t} else {\n\t\t\tgsb.balancerCurrent = nil\n\t\t}\n\t\tgsb.mu.Unlock()\n\t\treturn balancer.ErrBadResolverState\n\t}\n\n\t// This write doesn't need to take gsb.mu because this field never gets read\n\t// or written to on any calls from the current or pending. Calls from grpc\n\t// to this balancer are guaranteed to be called synchronously, so this\n\t// bw.Balancer field will never be forwarded to until this SwitchTo()\n\t// function returns.\n\tbw.Balancer = newBalancer\n\treturn nil\n}\n\n// Returns nil if the graceful switch balancer is closed.\nfunc (gsb *Balancer) latestBalancer() *balancerWrapper {\n\tgsb.mu.Lock()\n\tdefer gsb.mu.Unlock()\n\tif gsb.balancerPending != nil {\n\t\treturn gsb.balancerPending\n\t}\n\treturn gsb.balancerCurrent\n}\n\n// UpdateClientConnState forwards the update to the latest balancer created.\nfunc (gsb *Balancer) UpdateClientConnState(state balancer.ClientConnState) error {\n\t// The resolver data is only relevant to the most recent LB Policy.\n\tbalToUpdate := gsb.latestBalancer()\n\tif balToUpdate == nil {\n\t\treturn errBalancerClosed\n\t}\n\t// Perform this call without gsb.mu to prevent deadlocks if the child calls\n\t// back into the channel. The latest balancer can never be closed during a\n\t// call from the channel, even without gsb.mu held.\n\treturn balToUpdate.UpdateClientConnState(state)\n}\n\n// ResolverError forwards the error to the latest balancer created.\nfunc (gsb *Balancer) ResolverError(err error) {\n\t// The resolver data is only relevant to the most recent LB Policy.\n\tbalToUpdate := gsb.latestBalancer()\n\tif balToUpdate == nil {\n\t\treturn\n\t}\n\t// Perform this call without gsb.mu to prevent deadlocks if the child calls\n\t// back into the channel. The latest balancer can never be closed during a\n\t// call from the channel, even without gsb.mu held.\n\tbalToUpdate.ResolverError(err)\n}\n\n// ExitIdle forwards the call to the latest balancer created.\n//\n// If the latest balancer does not support ExitIdle, the subConns are\n// re-connected to manually.\nfunc (gsb *Balancer) ExitIdle() {\n\tbalToUpdate := gsb.latestBalancer()\n\tif balToUpdate == nil {\n\t\treturn\n\t}\n\t// There is no need to protect this read with a mutex, as the write to the\n\t// Balancer field happens in SwitchTo, which completes before this can be\n\t// called.\n\tif ei, ok := balToUpdate.Balancer.(balancer.ExitIdler); ok {\n\t\tei.ExitIdle()\n\t\treturn\n\t}\n\tgsb.mu.Lock()\n\tdefer gsb.mu.Unlock()\n\tfor sc := range balToUpdate.subconns {\n\t\tsc.Connect()\n\t}\n}\n\n// updateSubConnState forwards the update to the appropriate child.\nfunc (gsb *Balancer) updateSubConnState(sc balancer.SubConn, state balancer.SubConnState, cb func(balancer.SubConnState)) {\n\tgsb.currentMu.Lock()\n\tdefer gsb.currentMu.Unlock()\n\tgsb.mu.Lock()\n\t// Forward update to the appropriate child.  Even if there is a pending\n\t// balancer, the current balancer should continue to get SubConn updates to\n\t// maintain the proper state while the pending is still connecting.\n\tvar balToUpdate *balancerWrapper\n\tif gsb.balancerCurrent != nil && gsb.balancerCurrent.subconns[sc] {\n\t\tbalToUpdate = gsb.balancerCurrent\n\t} else if gsb.balancerPending != nil && gsb.balancerPending.subconns[sc] {\n\t\tbalToUpdate = gsb.balancerPending\n\t}\n\tif balToUpdate == nil {\n\t\t// SubConn belonged to a stale lb policy that has not yet fully closed,\n\t\t// or the balancer was already closed.\n\t\tgsb.mu.Unlock()\n\t\treturn\n\t}\n\tif state.ConnectivityState == connectivity.Shutdown {\n\t\tdelete(balToUpdate.subconns, sc)\n\t}\n\tgsb.mu.Unlock()\n\tif cb != nil {\n\t\tcb(state)\n\t} else {\n\t\tbalToUpdate.UpdateSubConnState(sc, state)\n\t}\n}\n\n// UpdateSubConnState forwards the update to the appropriate child.\nfunc (gsb *Balancer) UpdateSubConnState(sc balancer.SubConn, state balancer.SubConnState) {\n\tgsb.updateSubConnState(sc, state, nil)\n}\n\n// Close closes any active child balancers.\nfunc (gsb *Balancer) Close() {\n\tgsb.mu.Lock()\n\tgsb.closed = true\n\tcurrentBalancerToClose := gsb.balancerCurrent\n\tgsb.balancerCurrent = nil\n\tpendingBalancerToClose := gsb.balancerPending\n\tgsb.balancerPending = nil\n\tgsb.mu.Unlock()\n\n\tcurrentBalancerToClose.Close()\n\tpendingBalancerToClose.Close()\n}\n\n// balancerWrapper wraps a balancer.Balancer, and overrides some Balancer\n// methods to help cleanup SubConns created by the wrapped balancer.\n//\n// It implements the balancer.ClientConn interface and is passed down in that\n// capacity to the wrapped balancer. It maintains a set of subConns created by\n// the wrapped balancer and calls from the latter to create/update/shutdown\n// SubConns update this set before being forwarded to the parent ClientConn.\n// State updates from the wrapped balancer can result in invocation of the\n// graceful switch logic.\ntype balancerWrapper struct {\n\tbalancer.Balancer\n\tgsb *Balancer\n\n\tlastState balancer.State\n\tsubconns  map[balancer.SubConn]bool // subconns created by this balancer\n}\n\n// Close closes the underlying LB policy and shuts down the subconns it\n// created. bw must not be referenced via balancerCurrent or balancerPending in\n// gsb when called. gsb.mu must not be held.  Does not panic with a nil\n// receiver.\nfunc (bw *balancerWrapper) Close() {\n\t// before Close is called.\n\tif bw == nil {\n\t\treturn\n\t}\n\t// There is no need to protect this read with a mutex, as Close() is\n\t// impossible to be called concurrently with the write in SwitchTo(). The\n\t// callsites of Close() for this balancer in Graceful Switch Balancer will\n\t// never be called until SwitchTo() returns.\n\tbw.Balancer.Close()\n\tbw.gsb.mu.Lock()\n\tfor sc := range bw.subconns {\n\t\tsc.Shutdown()\n\t}\n\tbw.gsb.mu.Unlock()\n}\n\nfunc (bw *balancerWrapper) UpdateState(state balancer.State) {\n\t// Hold the mutex for this entire call to ensure it cannot occur\n\t// concurrently with other updateState() calls. This causes updates to\n\t// lastState and calls to cc.UpdateState to happen atomically.\n\tbw.gsb.mu.Lock()\n\tdefer bw.gsb.mu.Unlock()\n\tbw.lastState = state\n\n\tif !bw.gsb.balancerCurrentOrPending(bw) {\n\t\treturn\n\t}\n\n\tif bw == bw.gsb.balancerCurrent {\n\t\t// In the case that the current balancer exits READY, and there is a pending\n\t\t// balancer, you can forward the pending balancer's cached State up to\n\t\t// ClientConn and swap the pending into the current. This is because there\n\t\t// is no reason to gracefully switch from and keep using the old policy as\n\t\t// the ClientConn is not connected to any backends.\n\t\tif state.ConnectivityState != connectivity.Ready && bw.gsb.balancerPending != nil {\n\t\t\tbw.gsb.swap()\n\t\t\treturn\n\t\t}\n\t\t// Even if there is a pending balancer waiting to be gracefully switched to,\n\t\t// continue to forward current balancer updates to the Client Conn. Ignoring\n\t\t// state + picker from the current would cause undefined behavior/cause the\n\t\t// system to behave incorrectly from the current LB policies perspective.\n\t\t// Also, the current LB is still being used by grpc to choose SubConns per\n\t\t// RPC, and thus should use the most updated form of the current balancer.\n\t\tbw.gsb.cc.UpdateState(state)\n\t\treturn\n\t}\n\t// This method is now dealing with a state update from the pending balancer.\n\t// If the current balancer is currently in a state other than READY, the new\n\t// policy can be swapped into place immediately. This is because there is no\n\t// reason to gracefully switch from and keep using the old policy as the\n\t// ClientConn is not connected to any backends.\n\tif state.ConnectivityState != connectivity.Connecting || bw.gsb.balancerCurrent.lastState.ConnectivityState != connectivity.Ready {\n\t\tbw.gsb.swap()\n\t}\n}\n\nfunc (bw *balancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (balancer.SubConn, error) {\n\tbw.gsb.mu.Lock()\n\tif !bw.gsb.balancerCurrentOrPending(bw) {\n\t\tbw.gsb.mu.Unlock()\n\t\treturn nil, fmt.Errorf(\"%T at address %p that called NewSubConn is deleted\", bw, bw)\n\t}\n\tbw.gsb.mu.Unlock()\n\n\tvar sc balancer.SubConn\n\toldListener := opts.StateListener\n\topts.StateListener = func(state balancer.SubConnState) { bw.gsb.updateSubConnState(sc, state, oldListener) }\n\tsc, err := bw.gsb.cc.NewSubConn(addrs, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tbw.gsb.mu.Lock()\n\tif !bw.gsb.balancerCurrentOrPending(bw) { // balancer was closed during this call\n\t\tsc.Shutdown()\n\t\tbw.gsb.mu.Unlock()\n\t\treturn nil, fmt.Errorf(\"%T at address %p that called NewSubConn is deleted\", bw, bw)\n\t}\n\tbw.subconns[sc] = true\n\tbw.gsb.mu.Unlock()\n\treturn sc, nil\n}\n\nfunc (bw *balancerWrapper) ResolveNow(opts resolver.ResolveNowOptions) {\n\t// Ignore ResolveNow requests from anything other than the most recent\n\t// balancer, because older balancers were already removed from the config.\n\tif bw != bw.gsb.latestBalancer() {\n\t\treturn\n\t}\n\tbw.gsb.cc.ResolveNow(opts)\n}\n\nfunc (bw *balancerWrapper) RemoveSubConn(sc balancer.SubConn) {\n\t// Note: existing third party balancers may call this, so it must remain\n\t// until RemoveSubConn is fully removed.\n\tsc.Shutdown()\n}\n\nfunc (bw *balancerWrapper) UpdateAddresses(sc balancer.SubConn, addrs []resolver.Address) {\n\tbw.gsb.mu.Lock()\n\tif !bw.gsb.balancerCurrentOrPending(bw) {\n\t\tbw.gsb.mu.Unlock()\n\t\treturn\n\t}\n\tbw.gsb.mu.Unlock()\n\tbw.gsb.cc.UpdateAddresses(sc, addrs)\n}\n\nfunc (bw *balancerWrapper) Target() string {\n\treturn bw.gsb.cc.Target()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/balancerload/load.go",
    "content": "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Package balancerload defines APIs to parse server loads in trailers. The\n// parsed loads are sent to balancers in DoneInfo.\npackage balancerload\n\nimport (\n\t\"google.golang.org/grpc/metadata\"\n)\n\n// Parser converts loads from metadata into a concrete type.\ntype Parser interface {\n\t// Parse parses loads from metadata.\n\tParse(md metadata.MD) any\n}\n\nvar parser Parser\n\n// SetParser sets the load parser.\n//\n// Not mutex-protected, should be called before any gRPC functions.\nfunc SetParser(lr Parser) {\n\tparser = lr\n}\n\n// Parse calls parser.Read().\nfunc Parse(md metadata.MD) any {\n\tif parser == nil {\n\t\treturn nil\n\t}\n\treturn parser.Parse(md)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/binarylog/binarylog.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package binarylog implementation binary logging as defined in\n// https://github.com/grpc/proposal/blob/master/A16-binary-logging.md.\npackage binarylog\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n)\n\nvar grpclogLogger = grpclog.Component(\"binarylog\")\n\n// Logger specifies MethodLoggers for method names with a Log call that\n// takes a context.\n//\n// This is used in the 1.0 release of gcp/observability, and thus must not be\n// deleted or changed.\ntype Logger interface {\n\tGetMethodLogger(methodName string) MethodLogger\n}\n\n// binLogger is the global binary logger for the binary. One of this should be\n// built at init time from the configuration (environment variable or flags).\n//\n// It is used to get a MethodLogger for each individual method.\nvar binLogger Logger\n\n// SetLogger sets the binary logger.\n//\n// Only call this at init time.\nfunc SetLogger(l Logger) {\n\tbinLogger = l\n}\n\n// GetLogger gets the binary logger.\n//\n// Only call this at init time.\nfunc GetLogger() Logger {\n\treturn binLogger\n}\n\n// GetMethodLogger returns the MethodLogger for the given methodName.\n//\n// methodName should be in the format of \"/service/method\".\n//\n// Each MethodLogger returned by this method is a new instance. This is to\n// generate sequence id within the call.\nfunc GetMethodLogger(methodName string) MethodLogger {\n\tif binLogger == nil {\n\t\treturn nil\n\t}\n\treturn binLogger.GetMethodLogger(methodName)\n}\n\nfunc init() {\n\tconst envStr = \"GRPC_BINARY_LOG_FILTER\"\n\tconfigStr := os.Getenv(envStr)\n\tbinLogger = NewLoggerFromConfigString(configStr)\n}\n\n// MethodLoggerConfig contains the setting for logging behavior of a method\n// logger. Currently, it contains the max length of header and message.\ntype MethodLoggerConfig struct {\n\t// Max length of header and message.\n\tHeader, Message uint64\n}\n\n// LoggerConfig contains the config for loggers to create method loggers.\ntype LoggerConfig struct {\n\tAll      *MethodLoggerConfig\n\tServices map[string]*MethodLoggerConfig\n\tMethods  map[string]*MethodLoggerConfig\n\n\tBlacklist map[string]struct{}\n}\n\ntype logger struct {\n\tconfig LoggerConfig\n}\n\n// NewLoggerFromConfig builds a logger with the given LoggerConfig.\nfunc NewLoggerFromConfig(config LoggerConfig) Logger {\n\treturn &logger{config: config}\n}\n\n// newEmptyLogger creates an empty logger. The map fields need to be filled in\n// using the set* functions.\nfunc newEmptyLogger() *logger {\n\treturn &logger{}\n}\n\n// Set method logger for \"*\".\nfunc (l *logger) setDefaultMethodLogger(ml *MethodLoggerConfig) error {\n\tif l.config.All != nil {\n\t\treturn fmt.Errorf(\"conflicting global rules found\")\n\t}\n\tl.config.All = ml\n\treturn nil\n}\n\n// Set method logger for \"service/*\".\n//\n// New MethodLogger with same service overrides the old one.\nfunc (l *logger) setServiceMethodLogger(service string, ml *MethodLoggerConfig) error {\n\tif _, ok := l.config.Services[service]; ok {\n\t\treturn fmt.Errorf(\"conflicting service rules for service %v found\", service)\n\t}\n\tif l.config.Services == nil {\n\t\tl.config.Services = make(map[string]*MethodLoggerConfig)\n\t}\n\tl.config.Services[service] = ml\n\treturn nil\n}\n\n// Set method logger for \"service/method\".\n//\n// New MethodLogger with same method overrides the old one.\nfunc (l *logger) setMethodMethodLogger(method string, ml *MethodLoggerConfig) error {\n\tif _, ok := l.config.Blacklist[method]; ok {\n\t\treturn fmt.Errorf(\"conflicting blacklist rules for method %v found\", method)\n\t}\n\tif _, ok := l.config.Methods[method]; ok {\n\t\treturn fmt.Errorf(\"conflicting method rules for method %v found\", method)\n\t}\n\tif l.config.Methods == nil {\n\t\tl.config.Methods = make(map[string]*MethodLoggerConfig)\n\t}\n\tl.config.Methods[method] = ml\n\treturn nil\n}\n\n// Set blacklist method for \"-service/method\".\nfunc (l *logger) setBlacklist(method string) error {\n\tif _, ok := l.config.Blacklist[method]; ok {\n\t\treturn fmt.Errorf(\"conflicting blacklist rules for method %v found\", method)\n\t}\n\tif _, ok := l.config.Methods[method]; ok {\n\t\treturn fmt.Errorf(\"conflicting method rules for method %v found\", method)\n\t}\n\tif l.config.Blacklist == nil {\n\t\tl.config.Blacklist = make(map[string]struct{})\n\t}\n\tl.config.Blacklist[method] = struct{}{}\n\treturn nil\n}\n\n// getMethodLogger returns the MethodLogger for the given methodName.\n//\n// methodName should be in the format of \"/service/method\".\n//\n// Each MethodLogger returned by this method is a new instance. This is to\n// generate sequence id within the call.\nfunc (l *logger) GetMethodLogger(methodName string) MethodLogger {\n\ts, m, err := grpcutil.ParseMethod(methodName)\n\tif err != nil {\n\t\tgrpclogLogger.Infof(\"binarylogging: failed to parse %q: %v\", methodName, err)\n\t\treturn nil\n\t}\n\tif ml, ok := l.config.Methods[s+\"/\"+m]; ok {\n\t\treturn NewTruncatingMethodLogger(ml.Header, ml.Message)\n\t}\n\tif _, ok := l.config.Blacklist[s+\"/\"+m]; ok {\n\t\treturn nil\n\t}\n\tif ml, ok := l.config.Services[s]; ok {\n\t\treturn NewTruncatingMethodLogger(ml.Header, ml.Message)\n\t}\n\tif l.config.All == nil {\n\t\treturn nil\n\t}\n\treturn NewTruncatingMethodLogger(l.config.All.Header, l.config.All.Message)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/binarylog/binarylog_testutil.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// This file contains exported variables/functions that are exported for testing\n// only.\n//\n// An ideal way for this would be to put those in a *_test.go but in binarylog\n// package. But this doesn't work with staticcheck with go module. Error was:\n// \"MdToMetadataProto not declared by package binarylog\". This could be caused\n// by the way staticcheck looks for files for a certain package, which doesn't\n// support *_test.go files.\n//\n// Move those to binary_test.go when staticcheck is fixed.\n\npackage binarylog\n\nvar (\n\t// AllLogger is a logger that logs all headers/messages for all RPCs. It's\n\t// for testing only.\n\tAllLogger = NewLoggerFromConfigString(\"*\")\n\t// MdToMetadataProto converts metadata to a binary logging proto message.\n\t// It's for testing only.\n\tMdToMetadataProto = mdToMetadataProto\n\t// AddrToProto converts an address to a binary logging proto message. It's\n\t// for testing only.\n\tAddrToProto = addrToProto\n)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/binarylog/env_config.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage binarylog\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// NewLoggerFromConfigString reads the string and build a logger. It can be used\n// to build a new logger and assign it to binarylog.Logger.\n//\n// Example filter config strings:\n//   - \"\" Nothing will be logged\n//   - \"*\" All headers and messages will be fully logged.\n//   - \"*{h}\" Only headers will be logged.\n//   - \"*{m:256}\" Only the first 256 bytes of each message will be logged.\n//   - \"Foo/*\" Logs every method in service Foo\n//   - \"Foo/*,-Foo/Bar\" Logs every method in service Foo except method /Foo/Bar\n//   - \"Foo/*,Foo/Bar{m:256}\" Logs the first 256 bytes of each message in method\n//     /Foo/Bar, logs all headers and messages in every other method in service\n//     Foo.\n//\n// If two configs exist for one certain method or service, the one specified\n// later overrides the previous config.\nfunc NewLoggerFromConfigString(s string) Logger {\n\tif s == \"\" {\n\t\treturn nil\n\t}\n\tl := newEmptyLogger()\n\tmethods := strings.Split(s, \",\")\n\tfor _, method := range methods {\n\t\tif err := l.fillMethodLoggerWithConfigString(method); err != nil {\n\t\t\tgrpclogLogger.Warningf(\"failed to parse binary log config: %v\", err)\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn l\n}\n\n// fillMethodLoggerWithConfigString parses config, creates TruncatingMethodLogger and adds\n// it to the right map in the logger.\nfunc (l *logger) fillMethodLoggerWithConfigString(config string) error {\n\t// \"\" is invalid.\n\tif config == \"\" {\n\t\treturn errors.New(\"empty string is not a valid method binary logging config\")\n\t}\n\n\t// \"-service/method\", blacklist, no * or {} allowed.\n\tif config[0] == '-' {\n\t\ts, m, suffix, err := parseMethodConfigAndSuffix(config[1:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"invalid config: %q, %v\", config, err)\n\t\t}\n\t\tif m == \"*\" {\n\t\t\treturn fmt.Errorf(\"invalid config: %q, %v\", config, \"* not allowed in blacklist config\")\n\t\t}\n\t\tif suffix != \"\" {\n\t\t\treturn fmt.Errorf(\"invalid config: %q, %v\", config, \"header/message limit not allowed in blacklist config\")\n\t\t}\n\t\tif err := l.setBlacklist(s + \"/\" + m); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid config: %v\", err)\n\t\t}\n\t\treturn nil\n\t}\n\n\t// \"*{h:256;m:256}\"\n\tif config[0] == '*' {\n\t\thdr, msg, err := parseHeaderMessageLengthConfig(config[1:])\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"invalid config: %q, %v\", config, err)\n\t\t}\n\t\tif err := l.setDefaultMethodLogger(&MethodLoggerConfig{Header: hdr, Message: msg}); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid config: %v\", err)\n\t\t}\n\t\treturn nil\n\t}\n\n\ts, m, suffix, err := parseMethodConfigAndSuffix(config)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"invalid config: %q, %v\", config, err)\n\t}\n\thdr, msg, err := parseHeaderMessageLengthConfig(suffix)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"invalid header/message length config: %q, %v\", suffix, err)\n\t}\n\tif m == \"*\" {\n\t\tif err := l.setServiceMethodLogger(s, &MethodLoggerConfig{Header: hdr, Message: msg}); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid config: %v\", err)\n\t\t}\n\t} else {\n\t\tif err := l.setMethodMethodLogger(s+\"/\"+m, &MethodLoggerConfig{Header: hdr, Message: msg}); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid config: %v\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\nconst (\n\t// TODO: this const is only used by env_config now. But could be useful for\n\t// other config. Move to binarylog.go if necessary.\n\tmaxUInt = ^uint64(0)\n\n\t// For \"p.s/m\" plus any suffix. Suffix will be parsed again. See test for\n\t// expected output.\n\tlongMethodConfigRegexpStr = `^([\\w./]+)/((?:\\w+)|[*])(.+)?$`\n\n\t// For suffix from above, \"{h:123,m:123}\". See test for expected output.\n\toptionalLengthRegexpStr      = `(?::(\\d+))?` // Optional \":123\".\n\theaderConfigRegexpStr        = `^{h` + optionalLengthRegexpStr + `}$`\n\tmessageConfigRegexpStr       = `^{m` + optionalLengthRegexpStr + `}$`\n\theaderMessageConfigRegexpStr = `^{h` + optionalLengthRegexpStr + `;m` + optionalLengthRegexpStr + `}$`\n)\n\nvar (\n\tlongMethodConfigRegexp    = regexp.MustCompile(longMethodConfigRegexpStr)\n\theaderConfigRegexp        = regexp.MustCompile(headerConfigRegexpStr)\n\tmessageConfigRegexp       = regexp.MustCompile(messageConfigRegexpStr)\n\theaderMessageConfigRegexp = regexp.MustCompile(headerMessageConfigRegexpStr)\n)\n\n// Turn \"service/method{h;m}\" into \"service\", \"method\", \"{h;m}\".\nfunc parseMethodConfigAndSuffix(c string) (service, method, suffix string, _ error) {\n\t// Regexp result:\n\t//\n\t// in:  \"p.s/m{h:123,m:123}\",\n\t// out: []string{\"p.s/m{h:123,m:123}\", \"p.s\", \"m\", \"{h:123,m:123}\"},\n\tmatch := longMethodConfigRegexp.FindStringSubmatch(c)\n\tif match == nil {\n\t\treturn \"\", \"\", \"\", fmt.Errorf(\"%q contains invalid substring\", c)\n\t}\n\tservice = match[1]\n\tmethod = match[2]\n\tsuffix = match[3]\n\treturn\n}\n\n// Turn \"{h:123;m:345}\" into 123, 345.\n//\n// Return maxUInt if length is unspecified.\nfunc parseHeaderMessageLengthConfig(c string) (hdrLenStr, msgLenStr uint64, err error) {\n\tif c == \"\" {\n\t\treturn maxUInt, maxUInt, nil\n\t}\n\t// Header config only.\n\tif match := headerConfigRegexp.FindStringSubmatch(c); match != nil {\n\t\tif s := match[1]; s != \"\" {\n\t\t\thdrLenStr, err = strconv.ParseUint(s, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, 0, fmt.Errorf(\"failed to convert %q to uint\", s)\n\t\t\t}\n\t\t\treturn hdrLenStr, 0, nil\n\t\t}\n\t\treturn maxUInt, 0, nil\n\t}\n\n\t// Message config only.\n\tif match := messageConfigRegexp.FindStringSubmatch(c); match != nil {\n\t\tif s := match[1]; s != \"\" {\n\t\t\tmsgLenStr, err = strconv.ParseUint(s, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, 0, fmt.Errorf(\"failed to convert %q to uint\", s)\n\t\t\t}\n\t\t\treturn 0, msgLenStr, nil\n\t\t}\n\t\treturn 0, maxUInt, nil\n\t}\n\n\t// Header and message config both.\n\tif match := headerMessageConfigRegexp.FindStringSubmatch(c); match != nil {\n\t\t// Both hdr and msg are specified, but one or two of them might be empty.\n\t\thdrLenStr = maxUInt\n\t\tmsgLenStr = maxUInt\n\t\tif s := match[1]; s != \"\" {\n\t\t\thdrLenStr, err = strconv.ParseUint(s, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, 0, fmt.Errorf(\"failed to convert %q to uint\", s)\n\t\t\t}\n\t\t}\n\t\tif s := match[2]; s != \"\" {\n\t\t\tmsgLenStr, err = strconv.ParseUint(s, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, 0, fmt.Errorf(\"failed to convert %q to uint\", s)\n\t\t\t}\n\t\t}\n\t\treturn hdrLenStr, msgLenStr, nil\n\t}\n\treturn 0, 0, fmt.Errorf(\"%q contains invalid substring\", c)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/binarylog/method_logger.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage binarylog\n\nimport (\n\t\"context\"\n\t\"net\"\n\t\"strings\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"github.com/golang/protobuf/proto\"\n\t\"github.com/golang/protobuf/ptypes\"\n\tbinlogpb \"google.golang.org/grpc/binarylog/grpc_binarylog_v1\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/status\"\n)\n\ntype callIDGenerator struct {\n\tid uint64\n}\n\nfunc (g *callIDGenerator) next() uint64 {\n\tid := atomic.AddUint64(&g.id, 1)\n\treturn id\n}\n\n// reset is for testing only, and doesn't need to be thread safe.\nfunc (g *callIDGenerator) reset() {\n\tg.id = 0\n}\n\nvar idGen callIDGenerator\n\n// MethodLogger is the sub-logger for each method.\n//\n// This is used in the 1.0 release of gcp/observability, and thus must not be\n// deleted or changed.\ntype MethodLogger interface {\n\tLog(context.Context, LogEntryConfig)\n}\n\n// TruncatingMethodLogger is a method logger that truncates headers and messages\n// based on configured fields.\ntype TruncatingMethodLogger struct {\n\theaderMaxLen, messageMaxLen uint64\n\n\tcallID          uint64\n\tidWithinCallGen *callIDGenerator\n\n\tsink Sink // TODO(blog): make this plugable.\n}\n\n// NewTruncatingMethodLogger returns a new truncating method logger.\n//\n// This is used in the 1.0 release of gcp/observability, and thus must not be\n// deleted or changed.\nfunc NewTruncatingMethodLogger(h, m uint64) *TruncatingMethodLogger {\n\treturn &TruncatingMethodLogger{\n\t\theaderMaxLen:  h,\n\t\tmessageMaxLen: m,\n\n\t\tcallID:          idGen.next(),\n\t\tidWithinCallGen: &callIDGenerator{},\n\n\t\tsink: DefaultSink, // TODO(blog): make it plugable.\n\t}\n}\n\n// Build is an internal only method for building the proto message out of the\n// input event. It's made public to enable other library to reuse as much logic\n// in TruncatingMethodLogger as possible.\nfunc (ml *TruncatingMethodLogger) Build(c LogEntryConfig) *binlogpb.GrpcLogEntry {\n\tm := c.toProto()\n\ttimestamp, _ := ptypes.TimestampProto(time.Now())\n\tm.Timestamp = timestamp\n\tm.CallId = ml.callID\n\tm.SequenceIdWithinCall = ml.idWithinCallGen.next()\n\n\tswitch pay := m.Payload.(type) {\n\tcase *binlogpb.GrpcLogEntry_ClientHeader:\n\t\tm.PayloadTruncated = ml.truncateMetadata(pay.ClientHeader.GetMetadata())\n\tcase *binlogpb.GrpcLogEntry_ServerHeader:\n\t\tm.PayloadTruncated = ml.truncateMetadata(pay.ServerHeader.GetMetadata())\n\tcase *binlogpb.GrpcLogEntry_Message:\n\t\tm.PayloadTruncated = ml.truncateMessage(pay.Message)\n\t}\n\treturn m\n}\n\n// Log creates a proto binary log entry, and logs it to the sink.\nfunc (ml *TruncatingMethodLogger) Log(ctx context.Context, c LogEntryConfig) {\n\tml.sink.Write(ml.Build(c))\n}\n\nfunc (ml *TruncatingMethodLogger) truncateMetadata(mdPb *binlogpb.Metadata) (truncated bool) {\n\tif ml.headerMaxLen == maxUInt {\n\t\treturn false\n\t}\n\tvar (\n\t\tbytesLimit = ml.headerMaxLen\n\t\tindex      int\n\t)\n\t// At the end of the loop, index will be the first entry where the total\n\t// size is greater than the limit:\n\t//\n\t// len(entry[:index]) <= ml.hdr && len(entry[:index+1]) > ml.hdr.\n\tfor ; index < len(mdPb.Entry); index++ {\n\t\tentry := mdPb.Entry[index]\n\t\tif entry.Key == \"grpc-trace-bin\" {\n\t\t\t// \"grpc-trace-bin\" is a special key. It's kept in the log entry,\n\t\t\t// but not counted towards the size limit.\n\t\t\tcontinue\n\t\t}\n\t\tcurrentEntryLen := uint64(len(entry.GetKey())) + uint64(len(entry.GetValue()))\n\t\tif currentEntryLen > bytesLimit {\n\t\t\tbreak\n\t\t}\n\t\tbytesLimit -= currentEntryLen\n\t}\n\ttruncated = index < len(mdPb.Entry)\n\tmdPb.Entry = mdPb.Entry[:index]\n\treturn truncated\n}\n\nfunc (ml *TruncatingMethodLogger) truncateMessage(msgPb *binlogpb.Message) (truncated bool) {\n\tif ml.messageMaxLen == maxUInt {\n\t\treturn false\n\t}\n\tif ml.messageMaxLen >= uint64(len(msgPb.Data)) {\n\t\treturn false\n\t}\n\tmsgPb.Data = msgPb.Data[:ml.messageMaxLen]\n\treturn true\n}\n\n// LogEntryConfig represents the configuration for binary log entry.\n//\n// This is used in the 1.0 release of gcp/observability, and thus must not be\n// deleted or changed.\ntype LogEntryConfig interface {\n\ttoProto() *binlogpb.GrpcLogEntry\n}\n\n// ClientHeader configs the binary log entry to be a ClientHeader entry.\ntype ClientHeader struct {\n\tOnClientSide bool\n\tHeader       metadata.MD\n\tMethodName   string\n\tAuthority    string\n\tTimeout      time.Duration\n\t// PeerAddr is required only when it's on server side.\n\tPeerAddr net.Addr\n}\n\nfunc (c *ClientHeader) toProto() *binlogpb.GrpcLogEntry {\n\t// This function doesn't need to set all the fields (e.g. seq ID). The Log\n\t// function will set the fields when necessary.\n\tclientHeader := &binlogpb.ClientHeader{\n\t\tMetadata:   mdToMetadataProto(c.Header),\n\t\tMethodName: c.MethodName,\n\t\tAuthority:  c.Authority,\n\t}\n\tif c.Timeout > 0 {\n\t\tclientHeader.Timeout = ptypes.DurationProto(c.Timeout)\n\t}\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType: binlogpb.GrpcLogEntry_EVENT_TYPE_CLIENT_HEADER,\n\t\tPayload: &binlogpb.GrpcLogEntry_ClientHeader{\n\t\t\tClientHeader: clientHeader,\n\t\t},\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\tif c.PeerAddr != nil {\n\t\tret.Peer = addrToProto(c.PeerAddr)\n\t}\n\treturn ret\n}\n\n// ServerHeader configs the binary log entry to be a ServerHeader entry.\ntype ServerHeader struct {\n\tOnClientSide bool\n\tHeader       metadata.MD\n\t// PeerAddr is required only when it's on client side.\n\tPeerAddr net.Addr\n}\n\nfunc (c *ServerHeader) toProto() *binlogpb.GrpcLogEntry {\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType: binlogpb.GrpcLogEntry_EVENT_TYPE_SERVER_HEADER,\n\t\tPayload: &binlogpb.GrpcLogEntry_ServerHeader{\n\t\t\tServerHeader: &binlogpb.ServerHeader{\n\t\t\t\tMetadata: mdToMetadataProto(c.Header),\n\t\t\t},\n\t\t},\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\tif c.PeerAddr != nil {\n\t\tret.Peer = addrToProto(c.PeerAddr)\n\t}\n\treturn ret\n}\n\n// ClientMessage configs the binary log entry to be a ClientMessage entry.\ntype ClientMessage struct {\n\tOnClientSide bool\n\t// Message can be a proto.Message or []byte. Other messages formats are not\n\t// supported.\n\tMessage any\n}\n\nfunc (c *ClientMessage) toProto() *binlogpb.GrpcLogEntry {\n\tvar (\n\t\tdata []byte\n\t\terr  error\n\t)\n\tif m, ok := c.Message.(proto.Message); ok {\n\t\tdata, err = proto.Marshal(m)\n\t\tif err != nil {\n\t\t\tgrpclogLogger.Infof(\"binarylogging: failed to marshal proto message: %v\", err)\n\t\t}\n\t} else if b, ok := c.Message.([]byte); ok {\n\t\tdata = b\n\t} else {\n\t\tgrpclogLogger.Infof(\"binarylogging: message to log is neither proto.message nor []byte\")\n\t}\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType: binlogpb.GrpcLogEntry_EVENT_TYPE_CLIENT_MESSAGE,\n\t\tPayload: &binlogpb.GrpcLogEntry_Message{\n\t\t\tMessage: &binlogpb.Message{\n\t\t\t\tLength: uint32(len(data)),\n\t\t\t\tData:   data,\n\t\t\t},\n\t\t},\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\treturn ret\n}\n\n// ServerMessage configs the binary log entry to be a ServerMessage entry.\ntype ServerMessage struct {\n\tOnClientSide bool\n\t// Message can be a proto.Message or []byte. Other messages formats are not\n\t// supported.\n\tMessage any\n}\n\nfunc (c *ServerMessage) toProto() *binlogpb.GrpcLogEntry {\n\tvar (\n\t\tdata []byte\n\t\terr  error\n\t)\n\tif m, ok := c.Message.(proto.Message); ok {\n\t\tdata, err = proto.Marshal(m)\n\t\tif err != nil {\n\t\t\tgrpclogLogger.Infof(\"binarylogging: failed to marshal proto message: %v\", err)\n\t\t}\n\t} else if b, ok := c.Message.([]byte); ok {\n\t\tdata = b\n\t} else {\n\t\tgrpclogLogger.Infof(\"binarylogging: message to log is neither proto.message nor []byte\")\n\t}\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType: binlogpb.GrpcLogEntry_EVENT_TYPE_SERVER_MESSAGE,\n\t\tPayload: &binlogpb.GrpcLogEntry_Message{\n\t\t\tMessage: &binlogpb.Message{\n\t\t\t\tLength: uint32(len(data)),\n\t\t\t\tData:   data,\n\t\t\t},\n\t\t},\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\treturn ret\n}\n\n// ClientHalfClose configs the binary log entry to be a ClientHalfClose entry.\ntype ClientHalfClose struct {\n\tOnClientSide bool\n}\n\nfunc (c *ClientHalfClose) toProto() *binlogpb.GrpcLogEntry {\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType:    binlogpb.GrpcLogEntry_EVENT_TYPE_CLIENT_HALF_CLOSE,\n\t\tPayload: nil, // No payload here.\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\treturn ret\n}\n\n// ServerTrailer configs the binary log entry to be a ServerTrailer entry.\ntype ServerTrailer struct {\n\tOnClientSide bool\n\tTrailer      metadata.MD\n\t// Err is the status error.\n\tErr error\n\t// PeerAddr is required only when it's on client side and the RPC is trailer\n\t// only.\n\tPeerAddr net.Addr\n}\n\nfunc (c *ServerTrailer) toProto() *binlogpb.GrpcLogEntry {\n\tst, ok := status.FromError(c.Err)\n\tif !ok {\n\t\tgrpclogLogger.Info(\"binarylogging: error in trailer is not a status error\")\n\t}\n\tvar (\n\t\tdetailsBytes []byte\n\t\terr          error\n\t)\n\tstProto := st.Proto()\n\tif stProto != nil && len(stProto.Details) != 0 {\n\t\tdetailsBytes, err = proto.Marshal(stProto)\n\t\tif err != nil {\n\t\t\tgrpclogLogger.Infof(\"binarylogging: failed to marshal status proto: %v\", err)\n\t\t}\n\t}\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType: binlogpb.GrpcLogEntry_EVENT_TYPE_SERVER_TRAILER,\n\t\tPayload: &binlogpb.GrpcLogEntry_Trailer{\n\t\t\tTrailer: &binlogpb.Trailer{\n\t\t\t\tMetadata:      mdToMetadataProto(c.Trailer),\n\t\t\t\tStatusCode:    uint32(st.Code()),\n\t\t\t\tStatusMessage: st.Message(),\n\t\t\t\tStatusDetails: detailsBytes,\n\t\t\t},\n\t\t},\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\tif c.PeerAddr != nil {\n\t\tret.Peer = addrToProto(c.PeerAddr)\n\t}\n\treturn ret\n}\n\n// Cancel configs the binary log entry to be a Cancel entry.\ntype Cancel struct {\n\tOnClientSide bool\n}\n\nfunc (c *Cancel) toProto() *binlogpb.GrpcLogEntry {\n\tret := &binlogpb.GrpcLogEntry{\n\t\tType:    binlogpb.GrpcLogEntry_EVENT_TYPE_CANCEL,\n\t\tPayload: nil,\n\t}\n\tif c.OnClientSide {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT\n\t} else {\n\t\tret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER\n\t}\n\treturn ret\n}\n\n// metadataKeyOmit returns whether the metadata entry with this key should be\n// omitted.\nfunc metadataKeyOmit(key string) bool {\n\tswitch key {\n\tcase \"lb-token\", \":path\", \":authority\", \"content-encoding\", \"content-type\", \"user-agent\", \"te\":\n\t\treturn true\n\tcase \"grpc-trace-bin\": // grpc-trace-bin is special because it's visiable to users.\n\t\treturn false\n\t}\n\treturn strings.HasPrefix(key, \"grpc-\")\n}\n\nfunc mdToMetadataProto(md metadata.MD) *binlogpb.Metadata {\n\tret := &binlogpb.Metadata{}\n\tfor k, vv := range md {\n\t\tif metadataKeyOmit(k) {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, v := range vv {\n\t\t\tret.Entry = append(ret.Entry,\n\t\t\t\t&binlogpb.MetadataEntry{\n\t\t\t\t\tKey:   k,\n\t\t\t\t\tValue: []byte(v),\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\t}\n\treturn ret\n}\n\nfunc addrToProto(addr net.Addr) *binlogpb.Address {\n\tret := &binlogpb.Address{}\n\tswitch a := addr.(type) {\n\tcase *net.TCPAddr:\n\t\tif a.IP.To4() != nil {\n\t\t\tret.Type = binlogpb.Address_TYPE_IPV4\n\t\t} else if a.IP.To16() != nil {\n\t\t\tret.Type = binlogpb.Address_TYPE_IPV6\n\t\t} else {\n\t\t\tret.Type = binlogpb.Address_TYPE_UNKNOWN\n\t\t\t// Do not set address and port fields.\n\t\t\tbreak\n\t\t}\n\t\tret.Address = a.IP.String()\n\t\tret.IpPort = uint32(a.Port)\n\tcase *net.UnixAddr:\n\t\tret.Type = binlogpb.Address_TYPE_UNIX\n\t\tret.Address = a.String()\n\tdefault:\n\t\tret.Type = binlogpb.Address_TYPE_UNKNOWN\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/binarylog/sink.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage binarylog\n\nimport (\n\t\"bufio\"\n\t\"encoding/binary\"\n\t\"io\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/golang/protobuf/proto\"\n\tbinlogpb \"google.golang.org/grpc/binarylog/grpc_binarylog_v1\"\n)\n\nvar (\n\t// DefaultSink is the sink where the logs will be written to. It's exported\n\t// for the binarylog package to update.\n\tDefaultSink Sink = &noopSink{} // TODO(blog): change this default (file in /tmp).\n)\n\n// Sink writes log entry into the binary log sink.\n//\n// sink is a copy of the exported binarylog.Sink, to avoid circular dependency.\ntype Sink interface {\n\t// Write will be called to write the log entry into the sink.\n\t//\n\t// It should be thread-safe so it can be called in parallel.\n\tWrite(*binlogpb.GrpcLogEntry) error\n\t// Close will be called when the Sink is replaced by a new Sink.\n\tClose() error\n}\n\ntype noopSink struct{}\n\nfunc (ns *noopSink) Write(*binlogpb.GrpcLogEntry) error { return nil }\nfunc (ns *noopSink) Close() error                       { return nil }\n\n// newWriterSink creates a binary log sink with the given writer.\n//\n// Write() marshals the proto message and writes it to the given writer. Each\n// message is prefixed with a 4 byte big endian unsigned integer as the length.\n//\n// No buffer is done, Close() doesn't try to close the writer.\nfunc newWriterSink(w io.Writer) Sink {\n\treturn &writerSink{out: w}\n}\n\ntype writerSink struct {\n\tout io.Writer\n}\n\nfunc (ws *writerSink) Write(e *binlogpb.GrpcLogEntry) error {\n\tb, err := proto.Marshal(e)\n\tif err != nil {\n\t\tgrpclogLogger.Errorf(\"binary logging: failed to marshal proto message: %v\", err)\n\t\treturn err\n\t}\n\thdr := make([]byte, 4)\n\tbinary.BigEndian.PutUint32(hdr, uint32(len(b)))\n\tif _, err := ws.out.Write(hdr); err != nil {\n\t\treturn err\n\t}\n\tif _, err := ws.out.Write(b); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (ws *writerSink) Close() error { return nil }\n\ntype bufferedSink struct {\n\tmu             sync.Mutex\n\tcloser         io.Closer\n\tout            Sink          // out is built on buf.\n\tbuf            *bufio.Writer // buf is kept for flush.\n\tflusherStarted bool\n\n\twriteTicker *time.Ticker\n\tdone        chan struct{}\n}\n\nfunc (fs *bufferedSink) Write(e *binlogpb.GrpcLogEntry) error {\n\tfs.mu.Lock()\n\tdefer fs.mu.Unlock()\n\tif !fs.flusherStarted {\n\t\t// Start the write loop when Write is called.\n\t\tfs.startFlushGoroutine()\n\t\tfs.flusherStarted = true\n\t}\n\tif err := fs.out.Write(e); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nconst (\n\tbufFlushDuration = 60 * time.Second\n)\n\nfunc (fs *bufferedSink) startFlushGoroutine() {\n\tfs.writeTicker = time.NewTicker(bufFlushDuration)\n\tgo func() {\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-fs.done:\n\t\t\t\treturn\n\t\t\tcase <-fs.writeTicker.C:\n\t\t\t}\n\t\t\tfs.mu.Lock()\n\t\t\tif err := fs.buf.Flush(); err != nil {\n\t\t\t\tgrpclogLogger.Warningf(\"failed to flush to Sink: %v\", err)\n\t\t\t}\n\t\t\tfs.mu.Unlock()\n\t\t}\n\t}()\n}\n\nfunc (fs *bufferedSink) Close() error {\n\tfs.mu.Lock()\n\tdefer fs.mu.Unlock()\n\tif fs.writeTicker != nil {\n\t\tfs.writeTicker.Stop()\n\t}\n\tclose(fs.done)\n\tif err := fs.buf.Flush(); err != nil {\n\t\tgrpclogLogger.Warningf(\"failed to flush to Sink: %v\", err)\n\t}\n\tif err := fs.closer.Close(); err != nil {\n\t\tgrpclogLogger.Warningf(\"failed to close the underlying WriterCloser: %v\", err)\n\t}\n\tif err := fs.out.Close(); err != nil {\n\t\tgrpclogLogger.Warningf(\"failed to close the Sink: %v\", err)\n\t}\n\treturn nil\n}\n\n// NewBufferedSink creates a binary log sink with the given WriteCloser.\n//\n// Write() marshals the proto message and writes it to the given writer. Each\n// message is prefixed with a 4 byte big endian unsigned integer as the length.\n//\n// Content is kept in a buffer, and is flushed every 60 seconds.\n//\n// Close closes the WriteCloser.\nfunc NewBufferedSink(o io.WriteCloser) Sink {\n\tbufW := bufio.NewWriter(o)\n\treturn &bufferedSink{\n\t\tcloser: o,\n\t\tout:    newWriterSink(bufW),\n\t\tbuf:    bufW,\n\t\tdone:   make(chan struct{}),\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/buffer/unbounded.go",
    "content": "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package buffer provides an implementation of an unbounded buffer.\npackage buffer\n\nimport \"sync\"\n\n// Unbounded is an implementation of an unbounded buffer which does not use\n// extra goroutines. This is typically used for passing updates from one entity\n// to another within gRPC.\n//\n// All methods on this type are thread-safe and don't block on anything except\n// the underlying mutex used for synchronization.\n//\n// Unbounded supports values of any type to be stored in it by using a channel\n// of `any`. This means that a call to Put() incurs an extra memory allocation,\n// and also that users need a type assertion while reading. For performance\n// critical code paths, using Unbounded is strongly discouraged and defining a\n// new type specific implementation of this buffer is preferred. See\n// internal/transport/transport.go for an example of this.\ntype Unbounded struct {\n\tc       chan any\n\tclosed  bool\n\tmu      sync.Mutex\n\tbacklog []any\n}\n\n// NewUnbounded returns a new instance of Unbounded.\nfunc NewUnbounded() *Unbounded {\n\treturn &Unbounded{c: make(chan any, 1)}\n}\n\n// Put adds t to the unbounded buffer.\nfunc (b *Unbounded) Put(t any) {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\tif b.closed {\n\t\treturn\n\t}\n\tif len(b.backlog) == 0 {\n\t\tselect {\n\t\tcase b.c <- t:\n\t\t\treturn\n\t\tdefault:\n\t\t}\n\t}\n\tb.backlog = append(b.backlog, t)\n}\n\n// Load sends the earliest buffered data, if any, onto the read channel\n// returned by Get(). Users are expected to call this every time they read a\n// value from the read channel.\nfunc (b *Unbounded) Load() {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\tif b.closed {\n\t\treturn\n\t}\n\tif len(b.backlog) > 0 {\n\t\tselect {\n\t\tcase b.c <- b.backlog[0]:\n\t\t\tb.backlog[0] = nil\n\t\t\tb.backlog = b.backlog[1:]\n\t\tdefault:\n\t\t}\n\t}\n}\n\n// Get returns a read channel on which values added to the buffer, via Put(),\n// are sent on.\n//\n// Upon reading a value from this channel, users are expected to call Load() to\n// send the next buffered value onto the channel if there is any.\n//\n// If the unbounded buffer is closed, the read channel returned by this method\n// is closed.\nfunc (b *Unbounded) Get() <-chan any {\n\treturn b.c\n}\n\n// Close closes the unbounded buffer.\nfunc (b *Unbounded) Close() {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\tif b.closed {\n\t\treturn\n\t}\n\tb.closed = true\n\tclose(b.c)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/funcs.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package channelz defines APIs for enabling channelz service, entry\n// registration/deletion, and accessing channelz data. It also defines channelz\n// metric struct formats.\n//\n// All APIs in this package are experimental.\npackage channelz\n\nimport (\n\t\"errors\"\n\t\"sort\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nconst (\n\tdefaultMaxTraceEntry int32 = 30\n)\n\nvar (\n\t// IDGen is the global channelz entity ID generator.  It should not be used\n\t// outside this package except by tests.\n\tIDGen IDGenerator\n\n\tdb dbWrapper\n\t// EntryPerPage defines the number of channelz entries to be shown on a web page.\n\tEntryPerPage  = int64(50)\n\tcurState      int32\n\tmaxTraceEntry = defaultMaxTraceEntry\n)\n\n// TurnOn turns on channelz data collection.\nfunc TurnOn() {\n\tif !IsOn() {\n\t\tdb.set(newChannelMap())\n\t\tIDGen.Reset()\n\t\tatomic.StoreInt32(&curState, 1)\n\t}\n}\n\n// IsOn returns whether channelz data collection is on.\nfunc IsOn() bool {\n\treturn atomic.LoadInt32(&curState) == 1\n}\n\n// SetMaxTraceEntry sets maximum number of trace entry per entity (i.e. channel/subchannel).\n// Setting it to 0 will disable channel tracing.\nfunc SetMaxTraceEntry(i int32) {\n\tatomic.StoreInt32(&maxTraceEntry, i)\n}\n\n// ResetMaxTraceEntryToDefault resets the maximum number of trace entry per entity to default.\nfunc ResetMaxTraceEntryToDefault() {\n\tatomic.StoreInt32(&maxTraceEntry, defaultMaxTraceEntry)\n}\n\nfunc getMaxTraceEntry() int {\n\ti := atomic.LoadInt32(&maxTraceEntry)\n\treturn int(i)\n}\n\n// dbWarpper wraps around a reference to internal channelz data storage, and\n// provide synchronized functionality to set and get the reference.\ntype dbWrapper struct {\n\tmu sync.RWMutex\n\tDB *channelMap\n}\n\nfunc (d *dbWrapper) set(db *channelMap) {\n\td.mu.Lock()\n\td.DB = db\n\td.mu.Unlock()\n}\n\nfunc (d *dbWrapper) get() *channelMap {\n\td.mu.RLock()\n\tdefer d.mu.RUnlock()\n\treturn d.DB\n}\n\n// GetTopChannels returns a slice of top channel's ChannelMetric, along with a\n// boolean indicating whether there's more top channels to be queried for.\n//\n// The arg id specifies that only top channel with id at or above it will be included\n// in the result. The returned slice is up to a length of the arg maxResults or\n// EntryPerPage if maxResults is zero, and is sorted in ascending id order.\nfunc GetTopChannels(id int64, maxResults int64) ([]*ChannelMetric, bool) {\n\treturn db.get().GetTopChannels(id, maxResults)\n}\n\n// GetServers returns a slice of server's ServerMetric, along with a\n// boolean indicating whether there's more servers to be queried for.\n//\n// The arg id specifies that only server with id at or above it will be included\n// in the result. The returned slice is up to a length of the arg maxResults or\n// EntryPerPage if maxResults is zero, and is sorted in ascending id order.\nfunc GetServers(id int64, maxResults int64) ([]*ServerMetric, bool) {\n\treturn db.get().GetServers(id, maxResults)\n}\n\n// GetServerSockets returns a slice of server's (identified by id) normal socket's\n// SocketMetric, along with a boolean indicating whether there's more sockets to\n// be queried for.\n//\n// The arg startID specifies that only sockets with id at or above it will be\n// included in the result. The returned slice is up to a length of the arg maxResults\n// or EntryPerPage if maxResults is zero, and is sorted in ascending id order.\nfunc GetServerSockets(id int64, startID int64, maxResults int64) ([]*SocketMetric, bool) {\n\treturn db.get().GetServerSockets(id, startID, maxResults)\n}\n\n// GetChannel returns the ChannelMetric for the channel (identified by id).\nfunc GetChannel(id int64) *ChannelMetric {\n\treturn db.get().GetChannel(id)\n}\n\n// GetSubChannel returns the SubChannelMetric for the subchannel (identified by id).\nfunc GetSubChannel(id int64) *SubChannelMetric {\n\treturn db.get().GetSubChannel(id)\n}\n\n// GetSocket returns the SocketInternalMetric for the socket (identified by id).\nfunc GetSocket(id int64) *SocketMetric {\n\treturn db.get().GetSocket(id)\n}\n\n// GetServer returns the ServerMetric for the server (identified by id).\nfunc GetServer(id int64) *ServerMetric {\n\treturn db.get().GetServer(id)\n}\n\n// RegisterChannel registers the given channel c in the channelz database with\n// ref as its reference name, and adds it to the child list of its parent\n// (identified by pid). pid == nil means no parent.\n//\n// Returns a unique channelz identifier assigned to this channel.\n//\n// If channelz is not turned ON, the channelz database is not mutated.\nfunc RegisterChannel(c Channel, pid *Identifier, ref string) *Identifier {\n\tid := IDGen.genID()\n\tvar parent int64\n\tisTopChannel := true\n\tif pid != nil {\n\t\tisTopChannel = false\n\t\tparent = pid.Int()\n\t}\n\n\tif !IsOn() {\n\t\treturn newIdentifer(RefChannel, id, pid)\n\t}\n\n\tcn := &channel{\n\t\trefName:     ref,\n\t\tc:           c,\n\t\tsubChans:    make(map[int64]string),\n\t\tnestedChans: make(map[int64]string),\n\t\tid:          id,\n\t\tpid:         parent,\n\t\ttrace:       &channelTrace{createdTime: time.Now(), events: make([]*TraceEvent, 0, getMaxTraceEntry())},\n\t}\n\tdb.get().addChannel(id, cn, isTopChannel, parent)\n\treturn newIdentifer(RefChannel, id, pid)\n}\n\n// RegisterSubChannel registers the given subChannel c in the channelz database\n// with ref as its reference name, and adds it to the child list of its parent\n// (identified by pid).\n//\n// Returns a unique channelz identifier assigned to this subChannel.\n//\n// If channelz is not turned ON, the channelz database is not mutated.\nfunc RegisterSubChannel(c Channel, pid *Identifier, ref string) (*Identifier, error) {\n\tif pid == nil {\n\t\treturn nil, errors.New(\"a SubChannel's parent id cannot be nil\")\n\t}\n\tid := IDGen.genID()\n\tif !IsOn() {\n\t\treturn newIdentifer(RefSubChannel, id, pid), nil\n\t}\n\n\tsc := &subChannel{\n\t\trefName: ref,\n\t\tc:       c,\n\t\tsockets: make(map[int64]string),\n\t\tid:      id,\n\t\tpid:     pid.Int(),\n\t\ttrace:   &channelTrace{createdTime: time.Now(), events: make([]*TraceEvent, 0, getMaxTraceEntry())},\n\t}\n\tdb.get().addSubChannel(id, sc, pid.Int())\n\treturn newIdentifer(RefSubChannel, id, pid), nil\n}\n\n// RegisterServer registers the given server s in channelz database. It returns\n// the unique channelz tracking id assigned to this server.\n//\n// If channelz is not turned ON, the channelz database is not mutated.\nfunc RegisterServer(s Server, ref string) *Identifier {\n\tid := IDGen.genID()\n\tif !IsOn() {\n\t\treturn newIdentifer(RefServer, id, nil)\n\t}\n\n\tsvr := &server{\n\t\trefName:       ref,\n\t\ts:             s,\n\t\tsockets:       make(map[int64]string),\n\t\tlistenSockets: make(map[int64]string),\n\t\tid:            id,\n\t}\n\tdb.get().addServer(id, svr)\n\treturn newIdentifer(RefServer, id, nil)\n}\n\n// RegisterListenSocket registers the given listen socket s in channelz database\n// with ref as its reference name, and add it to the child list of its parent\n// (identified by pid). It returns the unique channelz tracking id assigned to\n// this listen socket.\n//\n// If channelz is not turned ON, the channelz database is not mutated.\nfunc RegisterListenSocket(s Socket, pid *Identifier, ref string) (*Identifier, error) {\n\tif pid == nil {\n\t\treturn nil, errors.New(\"a ListenSocket's parent id cannot be 0\")\n\t}\n\tid := IDGen.genID()\n\tif !IsOn() {\n\t\treturn newIdentifer(RefListenSocket, id, pid), nil\n\t}\n\n\tls := &listenSocket{refName: ref, s: s, id: id, pid: pid.Int()}\n\tdb.get().addListenSocket(id, ls, pid.Int())\n\treturn newIdentifer(RefListenSocket, id, pid), nil\n}\n\n// RegisterNormalSocket registers the given normal socket s in channelz database\n// with ref as its reference name, and adds it to the child list of its parent\n// (identified by pid). It returns the unique channelz tracking id assigned to\n// this normal socket.\n//\n// If channelz is not turned ON, the channelz database is not mutated.\nfunc RegisterNormalSocket(s Socket, pid *Identifier, ref string) (*Identifier, error) {\n\tif pid == nil {\n\t\treturn nil, errors.New(\"a NormalSocket's parent id cannot be 0\")\n\t}\n\tid := IDGen.genID()\n\tif !IsOn() {\n\t\treturn newIdentifer(RefNormalSocket, id, pid), nil\n\t}\n\n\tns := &normalSocket{refName: ref, s: s, id: id, pid: pid.Int()}\n\tdb.get().addNormalSocket(id, ns, pid.Int())\n\treturn newIdentifer(RefNormalSocket, id, pid), nil\n}\n\n// RemoveEntry removes an entry with unique channelz tracking id to be id from\n// channelz database.\n//\n// If channelz is not turned ON, this function is a no-op.\nfunc RemoveEntry(id *Identifier) {\n\tif !IsOn() {\n\t\treturn\n\t}\n\tdb.get().removeEntry(id.Int())\n}\n\n// TraceEventDesc is what the caller of AddTraceEvent should provide to describe\n// the event to be added to the channel trace.\n//\n// The Parent field is optional. It is used for an event that will be recorded\n// in the entity's parent trace.\ntype TraceEventDesc struct {\n\tDesc     string\n\tSeverity Severity\n\tParent   *TraceEventDesc\n}\n\n// AddTraceEvent adds trace related to the entity with specified id, using the\n// provided TraceEventDesc.\n//\n// If channelz is not turned ON, this will simply log the event descriptions.\nfunc AddTraceEvent(l grpclog.DepthLoggerV2, id *Identifier, depth int, desc *TraceEventDesc) {\n\t// Log only the trace description associated with the bottom most entity.\n\tswitch desc.Severity {\n\tcase CtUnknown, CtInfo:\n\t\tl.InfoDepth(depth+1, withParens(id)+desc.Desc)\n\tcase CtWarning:\n\t\tl.WarningDepth(depth+1, withParens(id)+desc.Desc)\n\tcase CtError:\n\t\tl.ErrorDepth(depth+1, withParens(id)+desc.Desc)\n\t}\n\n\tif getMaxTraceEntry() == 0 {\n\t\treturn\n\t}\n\tif IsOn() {\n\t\tdb.get().traceEvent(id.Int(), desc)\n\t}\n}\n\n// channelMap is the storage data structure for channelz.\n// Methods of channelMap can be divided in two two categories with respect to locking.\n// 1. Methods acquire the global lock.\n// 2. Methods that can only be called when global lock is held.\n// A second type of method need always to be called inside a first type of method.\ntype channelMap struct {\n\tmu               sync.RWMutex\n\ttopLevelChannels map[int64]struct{}\n\tservers          map[int64]*server\n\tchannels         map[int64]*channel\n\tsubChannels      map[int64]*subChannel\n\tlistenSockets    map[int64]*listenSocket\n\tnormalSockets    map[int64]*normalSocket\n}\n\nfunc newChannelMap() *channelMap {\n\treturn &channelMap{\n\t\ttopLevelChannels: make(map[int64]struct{}),\n\t\tchannels:         make(map[int64]*channel),\n\t\tlistenSockets:    make(map[int64]*listenSocket),\n\t\tnormalSockets:    make(map[int64]*normalSocket),\n\t\tservers:          make(map[int64]*server),\n\t\tsubChannels:      make(map[int64]*subChannel),\n\t}\n}\n\nfunc (c *channelMap) addServer(id int64, s *server) {\n\tc.mu.Lock()\n\ts.cm = c\n\tc.servers[id] = s\n\tc.mu.Unlock()\n}\n\nfunc (c *channelMap) addChannel(id int64, cn *channel, isTopChannel bool, pid int64) {\n\tc.mu.Lock()\n\tcn.cm = c\n\tcn.trace.cm = c\n\tc.channels[id] = cn\n\tif isTopChannel {\n\t\tc.topLevelChannels[id] = struct{}{}\n\t} else {\n\t\tc.findEntry(pid).addChild(id, cn)\n\t}\n\tc.mu.Unlock()\n}\n\nfunc (c *channelMap) addSubChannel(id int64, sc *subChannel, pid int64) {\n\tc.mu.Lock()\n\tsc.cm = c\n\tsc.trace.cm = c\n\tc.subChannels[id] = sc\n\tc.findEntry(pid).addChild(id, sc)\n\tc.mu.Unlock()\n}\n\nfunc (c *channelMap) addListenSocket(id int64, ls *listenSocket, pid int64) {\n\tc.mu.Lock()\n\tls.cm = c\n\tc.listenSockets[id] = ls\n\tc.findEntry(pid).addChild(id, ls)\n\tc.mu.Unlock()\n}\n\nfunc (c *channelMap) addNormalSocket(id int64, ns *normalSocket, pid int64) {\n\tc.mu.Lock()\n\tns.cm = c\n\tc.normalSockets[id] = ns\n\tc.findEntry(pid).addChild(id, ns)\n\tc.mu.Unlock()\n}\n\n// removeEntry triggers the removal of an entry, which may not indeed delete the entry, if it has to\n// wait on the deletion of its children and until no other entity's channel trace references it.\n// It may lead to a chain of entry deletion. For example, deleting the last socket of a gracefully\n// shutting down server will lead to the server being also deleted.\nfunc (c *channelMap) removeEntry(id int64) {\n\tc.mu.Lock()\n\tc.findEntry(id).triggerDelete()\n\tc.mu.Unlock()\n}\n\n// c.mu must be held by the caller\nfunc (c *channelMap) decrTraceRefCount(id int64) {\n\te := c.findEntry(id)\n\tif v, ok := e.(tracedChannel); ok {\n\t\tv.decrTraceRefCount()\n\t\te.deleteSelfIfReady()\n\t}\n}\n\n// c.mu must be held by the caller.\nfunc (c *channelMap) findEntry(id int64) entry {\n\tvar v entry\n\tvar ok bool\n\tif v, ok = c.channels[id]; ok {\n\t\treturn v\n\t}\n\tif v, ok = c.subChannels[id]; ok {\n\t\treturn v\n\t}\n\tif v, ok = c.servers[id]; ok {\n\t\treturn v\n\t}\n\tif v, ok = c.listenSockets[id]; ok {\n\t\treturn v\n\t}\n\tif v, ok = c.normalSockets[id]; ok {\n\t\treturn v\n\t}\n\treturn &dummyEntry{idNotFound: id}\n}\n\n// c.mu must be held by the caller\n// deleteEntry simply deletes an entry from the channelMap. Before calling this\n// method, caller must check this entry is ready to be deleted, i.e removeEntry()\n// has been called on it, and no children still exist.\n// Conditionals are ordered by the expected frequency of deletion of each entity\n// type, in order to optimize performance.\nfunc (c *channelMap) deleteEntry(id int64) {\n\tvar ok bool\n\tif _, ok = c.normalSockets[id]; ok {\n\t\tdelete(c.normalSockets, id)\n\t\treturn\n\t}\n\tif _, ok = c.subChannels[id]; ok {\n\t\tdelete(c.subChannels, id)\n\t\treturn\n\t}\n\tif _, ok = c.channels[id]; ok {\n\t\tdelete(c.channels, id)\n\t\tdelete(c.topLevelChannels, id)\n\t\treturn\n\t}\n\tif _, ok = c.listenSockets[id]; ok {\n\t\tdelete(c.listenSockets, id)\n\t\treturn\n\t}\n\tif _, ok = c.servers[id]; ok {\n\t\tdelete(c.servers, id)\n\t\treturn\n\t}\n}\n\nfunc (c *channelMap) traceEvent(id int64, desc *TraceEventDesc) {\n\tc.mu.Lock()\n\tchild := c.findEntry(id)\n\tchildTC, ok := child.(tracedChannel)\n\tif !ok {\n\t\tc.mu.Unlock()\n\t\treturn\n\t}\n\tchildTC.getChannelTrace().append(&TraceEvent{Desc: desc.Desc, Severity: desc.Severity, Timestamp: time.Now()})\n\tif desc.Parent != nil {\n\t\tparent := c.findEntry(child.getParentID())\n\t\tvar chanType RefChannelType\n\t\tswitch child.(type) {\n\t\tcase *channel:\n\t\t\tchanType = RefChannel\n\t\tcase *subChannel:\n\t\t\tchanType = RefSubChannel\n\t\t}\n\t\tif parentTC, ok := parent.(tracedChannel); ok {\n\t\t\tparentTC.getChannelTrace().append(&TraceEvent{\n\t\t\t\tDesc:      desc.Parent.Desc,\n\t\t\t\tSeverity:  desc.Parent.Severity,\n\t\t\t\tTimestamp: time.Now(),\n\t\t\t\tRefID:     id,\n\t\t\t\tRefName:   childTC.getRefName(),\n\t\t\t\tRefType:   chanType,\n\t\t\t})\n\t\t\tchildTC.incrTraceRefCount()\n\t\t}\n\t}\n\tc.mu.Unlock()\n}\n\ntype int64Slice []int64\n\nfunc (s int64Slice) Len() int           { return len(s) }\nfunc (s int64Slice) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }\nfunc (s int64Slice) Less(i, j int) bool { return s[i] < s[j] }\n\nfunc copyMap(m map[int64]string) map[int64]string {\n\tn := make(map[int64]string)\n\tfor k, v := range m {\n\t\tn[k] = v\n\t}\n\treturn n\n}\n\nfunc min(a, b int64) int64 {\n\tif a < b {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc (c *channelMap) GetTopChannels(id int64, maxResults int64) ([]*ChannelMetric, bool) {\n\tif maxResults <= 0 {\n\t\tmaxResults = EntryPerPage\n\t}\n\tc.mu.RLock()\n\tl := int64(len(c.topLevelChannels))\n\tids := make([]int64, 0, l)\n\tcns := make([]*channel, 0, min(l, maxResults))\n\n\tfor k := range c.topLevelChannels {\n\t\tids = append(ids, k)\n\t}\n\tsort.Sort(int64Slice(ids))\n\tidx := sort.Search(len(ids), func(i int) bool { return ids[i] >= id })\n\tcount := int64(0)\n\tvar end bool\n\tvar t []*ChannelMetric\n\tfor i, v := range ids[idx:] {\n\t\tif count == maxResults {\n\t\t\tbreak\n\t\t}\n\t\tif cn, ok := c.channels[v]; ok {\n\t\t\tcns = append(cns, cn)\n\t\t\tt = append(t, &ChannelMetric{\n\t\t\t\tNestedChans: copyMap(cn.nestedChans),\n\t\t\t\tSubChans:    copyMap(cn.subChans),\n\t\t\t})\n\t\t\tcount++\n\t\t}\n\t\tif i == len(ids[idx:])-1 {\n\t\t\tend = true\n\t\t\tbreak\n\t\t}\n\t}\n\tc.mu.RUnlock()\n\tif count == 0 {\n\t\tend = true\n\t}\n\n\tfor i, cn := range cns {\n\t\tt[i].ChannelData = cn.c.ChannelzMetric()\n\t\tt[i].ID = cn.id\n\t\tt[i].RefName = cn.refName\n\t\tt[i].Trace = cn.trace.dumpData()\n\t}\n\treturn t, end\n}\n\nfunc (c *channelMap) GetServers(id, maxResults int64) ([]*ServerMetric, bool) {\n\tif maxResults <= 0 {\n\t\tmaxResults = EntryPerPage\n\t}\n\tc.mu.RLock()\n\tl := int64(len(c.servers))\n\tids := make([]int64, 0, l)\n\tss := make([]*server, 0, min(l, maxResults))\n\tfor k := range c.servers {\n\t\tids = append(ids, k)\n\t}\n\tsort.Sort(int64Slice(ids))\n\tidx := sort.Search(len(ids), func(i int) bool { return ids[i] >= id })\n\tcount := int64(0)\n\tvar end bool\n\tvar s []*ServerMetric\n\tfor i, v := range ids[idx:] {\n\t\tif count == maxResults {\n\t\t\tbreak\n\t\t}\n\t\tif svr, ok := c.servers[v]; ok {\n\t\t\tss = append(ss, svr)\n\t\t\ts = append(s, &ServerMetric{\n\t\t\t\tListenSockets: copyMap(svr.listenSockets),\n\t\t\t})\n\t\t\tcount++\n\t\t}\n\t\tif i == len(ids[idx:])-1 {\n\t\t\tend = true\n\t\t\tbreak\n\t\t}\n\t}\n\tc.mu.RUnlock()\n\tif count == 0 {\n\t\tend = true\n\t}\n\n\tfor i, svr := range ss {\n\t\ts[i].ServerData = svr.s.ChannelzMetric()\n\t\ts[i].ID = svr.id\n\t\ts[i].RefName = svr.refName\n\t}\n\treturn s, end\n}\n\nfunc (c *channelMap) GetServerSockets(id int64, startID int64, maxResults int64) ([]*SocketMetric, bool) {\n\tif maxResults <= 0 {\n\t\tmaxResults = EntryPerPage\n\t}\n\tvar svr *server\n\tvar ok bool\n\tc.mu.RLock()\n\tif svr, ok = c.servers[id]; !ok {\n\t\t// server with id doesn't exist.\n\t\tc.mu.RUnlock()\n\t\treturn nil, true\n\t}\n\tsvrskts := svr.sockets\n\tl := int64(len(svrskts))\n\tids := make([]int64, 0, l)\n\tsks := make([]*normalSocket, 0, min(l, maxResults))\n\tfor k := range svrskts {\n\t\tids = append(ids, k)\n\t}\n\tsort.Sort(int64Slice(ids))\n\tidx := sort.Search(len(ids), func(i int) bool { return ids[i] >= startID })\n\tcount := int64(0)\n\tvar end bool\n\tfor i, v := range ids[idx:] {\n\t\tif count == maxResults {\n\t\t\tbreak\n\t\t}\n\t\tif ns, ok := c.normalSockets[v]; ok {\n\t\t\tsks = append(sks, ns)\n\t\t\tcount++\n\t\t}\n\t\tif i == len(ids[idx:])-1 {\n\t\t\tend = true\n\t\t\tbreak\n\t\t}\n\t}\n\tc.mu.RUnlock()\n\tif count == 0 {\n\t\tend = true\n\t}\n\ts := make([]*SocketMetric, 0, len(sks))\n\tfor _, ns := range sks {\n\t\tsm := &SocketMetric{}\n\t\tsm.SocketData = ns.s.ChannelzMetric()\n\t\tsm.ID = ns.id\n\t\tsm.RefName = ns.refName\n\t\ts = append(s, sm)\n\t}\n\treturn s, end\n}\n\nfunc (c *channelMap) GetChannel(id int64) *ChannelMetric {\n\tcm := &ChannelMetric{}\n\tvar cn *channel\n\tvar ok bool\n\tc.mu.RLock()\n\tif cn, ok = c.channels[id]; !ok {\n\t\t// channel with id doesn't exist.\n\t\tc.mu.RUnlock()\n\t\treturn nil\n\t}\n\tcm.NestedChans = copyMap(cn.nestedChans)\n\tcm.SubChans = copyMap(cn.subChans)\n\t// cn.c can be set to &dummyChannel{} when deleteSelfFromMap is called. Save a copy of cn.c when\n\t// holding the lock to prevent potential data race.\n\tchanCopy := cn.c\n\tc.mu.RUnlock()\n\tcm.ChannelData = chanCopy.ChannelzMetric()\n\tcm.ID = cn.id\n\tcm.RefName = cn.refName\n\tcm.Trace = cn.trace.dumpData()\n\treturn cm\n}\n\nfunc (c *channelMap) GetSubChannel(id int64) *SubChannelMetric {\n\tcm := &SubChannelMetric{}\n\tvar sc *subChannel\n\tvar ok bool\n\tc.mu.RLock()\n\tif sc, ok = c.subChannels[id]; !ok {\n\t\t// subchannel with id doesn't exist.\n\t\tc.mu.RUnlock()\n\t\treturn nil\n\t}\n\tcm.Sockets = copyMap(sc.sockets)\n\t// sc.c can be set to &dummyChannel{} when deleteSelfFromMap is called. Save a copy of sc.c when\n\t// holding the lock to prevent potential data race.\n\tchanCopy := sc.c\n\tc.mu.RUnlock()\n\tcm.ChannelData = chanCopy.ChannelzMetric()\n\tcm.ID = sc.id\n\tcm.RefName = sc.refName\n\tcm.Trace = sc.trace.dumpData()\n\treturn cm\n}\n\nfunc (c *channelMap) GetSocket(id int64) *SocketMetric {\n\tsm := &SocketMetric{}\n\tc.mu.RLock()\n\tif ls, ok := c.listenSockets[id]; ok {\n\t\tc.mu.RUnlock()\n\t\tsm.SocketData = ls.s.ChannelzMetric()\n\t\tsm.ID = ls.id\n\t\tsm.RefName = ls.refName\n\t\treturn sm\n\t}\n\tif ns, ok := c.normalSockets[id]; ok {\n\t\tc.mu.RUnlock()\n\t\tsm.SocketData = ns.s.ChannelzMetric()\n\t\tsm.ID = ns.id\n\t\tsm.RefName = ns.refName\n\t\treturn sm\n\t}\n\tc.mu.RUnlock()\n\treturn nil\n}\n\nfunc (c *channelMap) GetServer(id int64) *ServerMetric {\n\tsm := &ServerMetric{}\n\tvar svr *server\n\tvar ok bool\n\tc.mu.RLock()\n\tif svr, ok = c.servers[id]; !ok {\n\t\tc.mu.RUnlock()\n\t\treturn nil\n\t}\n\tsm.ListenSockets = copyMap(svr.listenSockets)\n\tc.mu.RUnlock()\n\tsm.ID = svr.id\n\tsm.RefName = svr.refName\n\tsm.ServerData = svr.s.ChannelzMetric()\n\treturn sm\n}\n\n// IDGenerator is an incrementing atomic that tracks IDs for channelz entities.\ntype IDGenerator struct {\n\tid int64\n}\n\n// Reset resets the generated ID back to zero.  Should only be used at\n// initialization or by tests sensitive to the ID number.\nfunc (i *IDGenerator) Reset() {\n\tatomic.StoreInt64(&i.id, 0)\n}\n\nfunc (i *IDGenerator) genID() int64 {\n\treturn atomic.AddInt64(&i.id, 1)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/id.go",
    "content": "/*\n *\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport \"fmt\"\n\n// Identifier is an opaque identifier which uniquely identifies an entity in the\n// channelz database.\ntype Identifier struct {\n\ttyp RefChannelType\n\tid  int64\n\tstr string\n\tpid *Identifier\n}\n\n// Type returns the entity type corresponding to id.\nfunc (id *Identifier) Type() RefChannelType {\n\treturn id.typ\n}\n\n// Int returns the integer identifier corresponding to id.\nfunc (id *Identifier) Int() int64 {\n\treturn id.id\n}\n\n// String returns a string representation of the entity corresponding to id.\n//\n// This includes some information about the parent as well. Examples:\n// Top-level channel: [Channel #channel-number]\n// Nested channel:    [Channel #parent-channel-number Channel #channel-number]\n// Sub channel:       [Channel #parent-channel SubChannel #subchannel-number]\nfunc (id *Identifier) String() string {\n\treturn id.str\n}\n\n// Equal returns true if other is the same as id.\nfunc (id *Identifier) Equal(other *Identifier) bool {\n\tif (id != nil) != (other != nil) {\n\t\treturn false\n\t}\n\tif id == nil && other == nil {\n\t\treturn true\n\t}\n\treturn id.typ == other.typ && id.id == other.id && id.pid == other.pid\n}\n\n// NewIdentifierForTesting returns a new opaque identifier to be used only for\n// testing purposes.\nfunc NewIdentifierForTesting(typ RefChannelType, id int64, pid *Identifier) *Identifier {\n\treturn newIdentifer(typ, id, pid)\n}\n\nfunc newIdentifer(typ RefChannelType, id int64, pid *Identifier) *Identifier {\n\tstr := fmt.Sprintf(\"%s #%d\", typ, id)\n\tif pid != nil {\n\t\tstr = fmt.Sprintf(\"%s %s\", pid, str)\n\t}\n\treturn &Identifier{typ: typ, id: id, str: str, pid: pid}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/logging.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nvar logger = grpclog.Component(\"channelz\")\n\nfunc withParens(id *Identifier) string {\n\treturn \"[\" + id.String() + \"] \"\n}\n\n// Info logs and adds a trace event if channelz is on.\nfunc Info(l grpclog.DepthLoggerV2, id *Identifier, args ...any) {\n\tAddTraceEvent(l, id, 1, &TraceEventDesc{\n\t\tDesc:     fmt.Sprint(args...),\n\t\tSeverity: CtInfo,\n\t})\n}\n\n// Infof logs and adds a trace event if channelz is on.\nfunc Infof(l grpclog.DepthLoggerV2, id *Identifier, format string, args ...any) {\n\tAddTraceEvent(l, id, 1, &TraceEventDesc{\n\t\tDesc:     fmt.Sprintf(format, args...),\n\t\tSeverity: CtInfo,\n\t})\n}\n\n// Warning logs and adds a trace event if channelz is on.\nfunc Warning(l grpclog.DepthLoggerV2, id *Identifier, args ...any) {\n\tAddTraceEvent(l, id, 1, &TraceEventDesc{\n\t\tDesc:     fmt.Sprint(args...),\n\t\tSeverity: CtWarning,\n\t})\n}\n\n// Warningf logs and adds a trace event if channelz is on.\nfunc Warningf(l grpclog.DepthLoggerV2, id *Identifier, format string, args ...any) {\n\tAddTraceEvent(l, id, 1, &TraceEventDesc{\n\t\tDesc:     fmt.Sprintf(format, args...),\n\t\tSeverity: CtWarning,\n\t})\n}\n\n// Error logs and adds a trace event if channelz is on.\nfunc Error(l grpclog.DepthLoggerV2, id *Identifier, args ...any) {\n\tAddTraceEvent(l, id, 1, &TraceEventDesc{\n\t\tDesc:     fmt.Sprint(args...),\n\t\tSeverity: CtError,\n\t})\n}\n\n// Errorf logs and adds a trace event if channelz is on.\nfunc Errorf(l grpclog.DepthLoggerV2, id *Identifier, format string, args ...any) {\n\tAddTraceEvent(l, id, 1, &TraceEventDesc{\n\t\tDesc:     fmt.Sprintf(format, args...),\n\t\tSeverity: CtError,\n\t})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/types.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"net\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/credentials\"\n)\n\n// entry represents a node in the channelz database.\ntype entry interface {\n\t// addChild adds a child e, whose channelz id is id to child list\n\taddChild(id int64, e entry)\n\t// deleteChild deletes a child with channelz id to be id from child list\n\tdeleteChild(id int64)\n\t// triggerDelete tries to delete self from channelz database. However, if child\n\t// list is not empty, then deletion from the database is on hold until the last\n\t// child is deleted from database.\n\ttriggerDelete()\n\t// deleteSelfIfReady check whether triggerDelete() has been called before, and whether child\n\t// list is now empty. If both conditions are met, then delete self from database.\n\tdeleteSelfIfReady()\n\t// getParentID returns parent ID of the entry. 0 value parent ID means no parent.\n\tgetParentID() int64\n}\n\n// dummyEntry is a fake entry to handle entry not found case.\ntype dummyEntry struct {\n\tidNotFound int64\n}\n\nfunc (d *dummyEntry) addChild(id int64, e entry) {\n\t// Note: It is possible for a normal program to reach here under race condition.\n\t// For example, there could be a race between ClientConn.Close() info being propagated\n\t// to addrConn and http2Client. ClientConn.Close() cancel the context and result\n\t// in http2Client to error. The error info is then caught by transport monitor\n\t// and before addrConn.tearDown() is called in side ClientConn.Close(). Therefore,\n\t// the addrConn will create a new transport. And when registering the new transport in\n\t// channelz, its parent addrConn could have already been torn down and deleted\n\t// from channelz tracking, and thus reach the code here.\n\tlogger.Infof(\"attempt to add child of type %T with id %d to a parent (id=%d) that doesn't currently exist\", e, id, d.idNotFound)\n}\n\nfunc (d *dummyEntry) deleteChild(id int64) {\n\t// It is possible for a normal program to reach here under race condition.\n\t// Refer to the example described in addChild().\n\tlogger.Infof(\"attempt to delete child with id %d from a parent (id=%d) that doesn't currently exist\", id, d.idNotFound)\n}\n\nfunc (d *dummyEntry) triggerDelete() {\n\tlogger.Warningf(\"attempt to delete an entry (id=%d) that doesn't currently exist\", d.idNotFound)\n}\n\nfunc (*dummyEntry) deleteSelfIfReady() {\n\t// code should not reach here. deleteSelfIfReady is always called on an existing entry.\n}\n\nfunc (*dummyEntry) getParentID() int64 {\n\treturn 0\n}\n\n// ChannelMetric defines the info channelz provides for a specific Channel, which\n// includes ChannelInternalMetric and channelz-specific data, such as channelz id,\n// child list, etc.\ntype ChannelMetric struct {\n\t// ID is the channelz id of this channel.\n\tID int64\n\t// RefName is the human readable reference string of this channel.\n\tRefName string\n\t// ChannelData contains channel internal metric reported by the channel through\n\t// ChannelzMetric().\n\tChannelData *ChannelInternalMetric\n\t// NestedChans tracks the nested channel type children of this channel in the format of\n\t// a map from nested channel channelz id to corresponding reference string.\n\tNestedChans map[int64]string\n\t// SubChans tracks the subchannel type children of this channel in the format of a\n\t// map from subchannel channelz id to corresponding reference string.\n\tSubChans map[int64]string\n\t// Sockets tracks the socket type children of this channel in the format of a map\n\t// from socket channelz id to corresponding reference string.\n\t// Note current grpc implementation doesn't allow channel having sockets directly,\n\t// therefore, this is field is unused.\n\tSockets map[int64]string\n\t// Trace contains the most recent traced events.\n\tTrace *ChannelTrace\n}\n\n// SubChannelMetric defines the info channelz provides for a specific SubChannel,\n// which includes ChannelInternalMetric and channelz-specific data, such as\n// channelz id, child list, etc.\ntype SubChannelMetric struct {\n\t// ID is the channelz id of this subchannel.\n\tID int64\n\t// RefName is the human readable reference string of this subchannel.\n\tRefName string\n\t// ChannelData contains subchannel internal metric reported by the subchannel\n\t// through ChannelzMetric().\n\tChannelData *ChannelInternalMetric\n\t// NestedChans tracks the nested channel type children of this subchannel in the format of\n\t// a map from nested channel channelz id to corresponding reference string.\n\t// Note current grpc implementation doesn't allow subchannel to have nested channels\n\t// as children, therefore, this field is unused.\n\tNestedChans map[int64]string\n\t// SubChans tracks the subchannel type children of this subchannel in the format of a\n\t// map from subchannel channelz id to corresponding reference string.\n\t// Note current grpc implementation doesn't allow subchannel to have subchannels\n\t// as children, therefore, this field is unused.\n\tSubChans map[int64]string\n\t// Sockets tracks the socket type children of this subchannel in the format of a map\n\t// from socket channelz id to corresponding reference string.\n\tSockets map[int64]string\n\t// Trace contains the most recent traced events.\n\tTrace *ChannelTrace\n}\n\n// ChannelInternalMetric defines the struct that the implementor of Channel interface\n// should return from ChannelzMetric().\ntype ChannelInternalMetric struct {\n\t// current connectivity state of the channel.\n\tState connectivity.State\n\t// The target this channel originally tried to connect to.  May be absent\n\tTarget string\n\t// The number of calls started on the channel.\n\tCallsStarted int64\n\t// The number of calls that have completed with an OK status.\n\tCallsSucceeded int64\n\t// The number of calls that have a completed with a non-OK status.\n\tCallsFailed int64\n\t// The last time a call was started on the channel.\n\tLastCallStartedTimestamp time.Time\n}\n\n// ChannelTrace stores traced events on a channel/subchannel and related info.\ntype ChannelTrace struct {\n\t// EventNum is the number of events that ever got traced (i.e. including those that have been deleted)\n\tEventNum int64\n\t// CreationTime is the creation time of the trace.\n\tCreationTime time.Time\n\t// Events stores the most recent trace events (up to $maxTraceEntry, newer event will overwrite the\n\t// oldest one)\n\tEvents []*TraceEvent\n}\n\n// TraceEvent represent a single trace event\ntype TraceEvent struct {\n\t// Desc is a simple description of the trace event.\n\tDesc string\n\t// Severity states the severity of this trace event.\n\tSeverity Severity\n\t// Timestamp is the event time.\n\tTimestamp time.Time\n\t// RefID is the id of the entity that gets referenced in the event. RefID is 0 if no other entity is\n\t// involved in this event.\n\t// e.g. SubChannel (id: 4[]) Created. --> RefID = 4, RefName = \"\" (inside [])\n\tRefID int64\n\t// RefName is the reference name for the entity that gets referenced in the event.\n\tRefName string\n\t// RefType indicates the referenced entity type, i.e Channel or SubChannel.\n\tRefType RefChannelType\n}\n\n// Channel is the interface that should be satisfied in order to be tracked by\n// channelz as Channel or SubChannel.\ntype Channel interface {\n\tChannelzMetric() *ChannelInternalMetric\n}\n\ntype dummyChannel struct{}\n\nfunc (d *dummyChannel) ChannelzMetric() *ChannelInternalMetric {\n\treturn &ChannelInternalMetric{}\n}\n\ntype channel struct {\n\trefName     string\n\tc           Channel\n\tcloseCalled bool\n\tnestedChans map[int64]string\n\tsubChans    map[int64]string\n\tid          int64\n\tpid         int64\n\tcm          *channelMap\n\ttrace       *channelTrace\n\t// traceRefCount is the number of trace events that reference this channel.\n\t// Non-zero traceRefCount means the trace of this channel cannot be deleted.\n\ttraceRefCount int32\n}\n\nfunc (c *channel) addChild(id int64, e entry) {\n\tswitch v := e.(type) {\n\tcase *subChannel:\n\t\tc.subChans[id] = v.refName\n\tcase *channel:\n\t\tc.nestedChans[id] = v.refName\n\tdefault:\n\t\tlogger.Errorf(\"cannot add a child (id = %d) of type %T to a channel\", id, e)\n\t}\n}\n\nfunc (c *channel) deleteChild(id int64) {\n\tdelete(c.subChans, id)\n\tdelete(c.nestedChans, id)\n\tc.deleteSelfIfReady()\n}\n\nfunc (c *channel) triggerDelete() {\n\tc.closeCalled = true\n\tc.deleteSelfIfReady()\n}\n\nfunc (c *channel) getParentID() int64 {\n\treturn c.pid\n}\n\n// deleteSelfFromTree tries to delete the channel from the channelz entry relation tree, which means\n// deleting the channel reference from its parent's child list.\n//\n// In order for a channel to be deleted from the tree, it must meet the criteria that, removal of the\n// corresponding grpc object has been invoked, and the channel does not have any children left.\n//\n// The returned boolean value indicates whether the channel has been successfully deleted from tree.\nfunc (c *channel) deleteSelfFromTree() (deleted bool) {\n\tif !c.closeCalled || len(c.subChans)+len(c.nestedChans) != 0 {\n\t\treturn false\n\t}\n\t// not top channel\n\tif c.pid != 0 {\n\t\tc.cm.findEntry(c.pid).deleteChild(c.id)\n\t}\n\treturn true\n}\n\n// deleteSelfFromMap checks whether it is valid to delete the channel from the map, which means\n// deleting the channel from channelz's tracking entirely. Users can no longer use id to query the\n// channel, and its memory will be garbage collected.\n//\n// The trace reference count of the channel must be 0 in order to be deleted from the map. This is\n// specified in the channel tracing gRFC that as long as some other trace has reference to an entity,\n// the trace of the referenced entity must not be deleted. In order to release the resource allocated\n// by grpc, the reference to the grpc object is reset to a dummy object.\n//\n// deleteSelfFromMap must be called after deleteSelfFromTree returns true.\n//\n// It returns a bool to indicate whether the channel can be safely deleted from map.\nfunc (c *channel) deleteSelfFromMap() (delete bool) {\n\tif c.getTraceRefCount() != 0 {\n\t\tc.c = &dummyChannel{}\n\t\treturn false\n\t}\n\treturn true\n}\n\n// deleteSelfIfReady tries to delete the channel itself from the channelz database.\n// The delete process includes two steps:\n//  1. delete the channel from the entry relation tree, i.e. delete the channel reference from its\n//     parent's child list.\n//  2. delete the channel from the map, i.e. delete the channel entirely from channelz. Lookup by id\n//     will return entry not found error.\nfunc (c *channel) deleteSelfIfReady() {\n\tif !c.deleteSelfFromTree() {\n\t\treturn\n\t}\n\tif !c.deleteSelfFromMap() {\n\t\treturn\n\t}\n\tc.cm.deleteEntry(c.id)\n\tc.trace.clear()\n}\n\nfunc (c *channel) getChannelTrace() *channelTrace {\n\treturn c.trace\n}\n\nfunc (c *channel) incrTraceRefCount() {\n\tatomic.AddInt32(&c.traceRefCount, 1)\n}\n\nfunc (c *channel) decrTraceRefCount() {\n\tatomic.AddInt32(&c.traceRefCount, -1)\n}\n\nfunc (c *channel) getTraceRefCount() int {\n\ti := atomic.LoadInt32(&c.traceRefCount)\n\treturn int(i)\n}\n\nfunc (c *channel) getRefName() string {\n\treturn c.refName\n}\n\ntype subChannel struct {\n\trefName       string\n\tc             Channel\n\tcloseCalled   bool\n\tsockets       map[int64]string\n\tid            int64\n\tpid           int64\n\tcm            *channelMap\n\ttrace         *channelTrace\n\ttraceRefCount int32\n}\n\nfunc (sc *subChannel) addChild(id int64, e entry) {\n\tif v, ok := e.(*normalSocket); ok {\n\t\tsc.sockets[id] = v.refName\n\t} else {\n\t\tlogger.Errorf(\"cannot add a child (id = %d) of type %T to a subChannel\", id, e)\n\t}\n}\n\nfunc (sc *subChannel) deleteChild(id int64) {\n\tdelete(sc.sockets, id)\n\tsc.deleteSelfIfReady()\n}\n\nfunc (sc *subChannel) triggerDelete() {\n\tsc.closeCalled = true\n\tsc.deleteSelfIfReady()\n}\n\nfunc (sc *subChannel) getParentID() int64 {\n\treturn sc.pid\n}\n\n// deleteSelfFromTree tries to delete the subchannel from the channelz entry relation tree, which\n// means deleting the subchannel reference from its parent's child list.\n//\n// In order for a subchannel to be deleted from the tree, it must meet the criteria that, removal of\n// the corresponding grpc object has been invoked, and the subchannel does not have any children left.\n//\n// The returned boolean value indicates whether the channel has been successfully deleted from tree.\nfunc (sc *subChannel) deleteSelfFromTree() (deleted bool) {\n\tif !sc.closeCalled || len(sc.sockets) != 0 {\n\t\treturn false\n\t}\n\tsc.cm.findEntry(sc.pid).deleteChild(sc.id)\n\treturn true\n}\n\n// deleteSelfFromMap checks whether it is valid to delete the subchannel from the map, which means\n// deleting the subchannel from channelz's tracking entirely. Users can no longer use id to query\n// the subchannel, and its memory will be garbage collected.\n//\n// The trace reference count of the subchannel must be 0 in order to be deleted from the map. This is\n// specified in the channel tracing gRFC that as long as some other trace has reference to an entity,\n// the trace of the referenced entity must not be deleted. In order to release the resource allocated\n// by grpc, the reference to the grpc object is reset to a dummy object.\n//\n// deleteSelfFromMap must be called after deleteSelfFromTree returns true.\n//\n// It returns a bool to indicate whether the channel can be safely deleted from map.\nfunc (sc *subChannel) deleteSelfFromMap() (delete bool) {\n\tif sc.getTraceRefCount() != 0 {\n\t\t// free the grpc struct (i.e. addrConn)\n\t\tsc.c = &dummyChannel{}\n\t\treturn false\n\t}\n\treturn true\n}\n\n// deleteSelfIfReady tries to delete the subchannel itself from the channelz database.\n// The delete process includes two steps:\n//  1. delete the subchannel from the entry relation tree, i.e. delete the subchannel reference from\n//     its parent's child list.\n//  2. delete the subchannel from the map, i.e. delete the subchannel entirely from channelz. Lookup\n//     by id will return entry not found error.\nfunc (sc *subChannel) deleteSelfIfReady() {\n\tif !sc.deleteSelfFromTree() {\n\t\treturn\n\t}\n\tif !sc.deleteSelfFromMap() {\n\t\treturn\n\t}\n\tsc.cm.deleteEntry(sc.id)\n\tsc.trace.clear()\n}\n\nfunc (sc *subChannel) getChannelTrace() *channelTrace {\n\treturn sc.trace\n}\n\nfunc (sc *subChannel) incrTraceRefCount() {\n\tatomic.AddInt32(&sc.traceRefCount, 1)\n}\n\nfunc (sc *subChannel) decrTraceRefCount() {\n\tatomic.AddInt32(&sc.traceRefCount, -1)\n}\n\nfunc (sc *subChannel) getTraceRefCount() int {\n\ti := atomic.LoadInt32(&sc.traceRefCount)\n\treturn int(i)\n}\n\nfunc (sc *subChannel) getRefName() string {\n\treturn sc.refName\n}\n\n// SocketMetric defines the info channelz provides for a specific Socket, which\n// includes SocketInternalMetric and channelz-specific data, such as channelz id, etc.\ntype SocketMetric struct {\n\t// ID is the channelz id of this socket.\n\tID int64\n\t// RefName is the human readable reference string of this socket.\n\tRefName string\n\t// SocketData contains socket internal metric reported by the socket through\n\t// ChannelzMetric().\n\tSocketData *SocketInternalMetric\n}\n\n// SocketInternalMetric defines the struct that the implementor of Socket interface\n// should return from ChannelzMetric().\ntype SocketInternalMetric struct {\n\t// The number of streams that have been started.\n\tStreamsStarted int64\n\t// The number of streams that have ended successfully:\n\t// On client side, receiving frame with eos bit set.\n\t// On server side, sending frame with eos bit set.\n\tStreamsSucceeded int64\n\t// The number of streams that have ended unsuccessfully:\n\t// On client side, termination without receiving frame with eos bit set.\n\t// On server side, termination without sending frame with eos bit set.\n\tStreamsFailed int64\n\t// The number of messages successfully sent on this socket.\n\tMessagesSent     int64\n\tMessagesReceived int64\n\t// The number of keep alives sent.  This is typically implemented with HTTP/2\n\t// ping messages.\n\tKeepAlivesSent int64\n\t// The last time a stream was created by this endpoint.  Usually unset for\n\t// servers.\n\tLastLocalStreamCreatedTimestamp time.Time\n\t// The last time a stream was created by the remote endpoint.  Usually unset\n\t// for clients.\n\tLastRemoteStreamCreatedTimestamp time.Time\n\t// The last time a message was sent by this endpoint.\n\tLastMessageSentTimestamp time.Time\n\t// The last time a message was received by this endpoint.\n\tLastMessageReceivedTimestamp time.Time\n\t// The amount of window, granted to the local endpoint by the remote endpoint.\n\t// This may be slightly out of date due to network latency.  This does NOT\n\t// include stream level or TCP level flow control info.\n\tLocalFlowControlWindow int64\n\t// The amount of window, granted to the remote endpoint by the local endpoint.\n\t// This may be slightly out of date due to network latency.  This does NOT\n\t// include stream level or TCP level flow control info.\n\tRemoteFlowControlWindow int64\n\t// The locally bound address.\n\tLocalAddr net.Addr\n\t// The remote bound address.  May be absent.\n\tRemoteAddr net.Addr\n\t// Optional, represents the name of the remote endpoint, if different than\n\t// the original target name.\n\tRemoteName    string\n\tSocketOptions *SocketOptionData\n\tSecurity      credentials.ChannelzSecurityValue\n}\n\n// Socket is the interface that should be satisfied in order to be tracked by\n// channelz as Socket.\ntype Socket interface {\n\tChannelzMetric() *SocketInternalMetric\n}\n\ntype listenSocket struct {\n\trefName string\n\ts       Socket\n\tid      int64\n\tpid     int64\n\tcm      *channelMap\n}\n\nfunc (ls *listenSocket) addChild(id int64, e entry) {\n\tlogger.Errorf(\"cannot add a child (id = %d) of type %T to a listen socket\", id, e)\n}\n\nfunc (ls *listenSocket) deleteChild(id int64) {\n\tlogger.Errorf(\"cannot delete a child (id = %d) from a listen socket\", id)\n}\n\nfunc (ls *listenSocket) triggerDelete() {\n\tls.cm.deleteEntry(ls.id)\n\tls.cm.findEntry(ls.pid).deleteChild(ls.id)\n}\n\nfunc (ls *listenSocket) deleteSelfIfReady() {\n\tlogger.Errorf(\"cannot call deleteSelfIfReady on a listen socket\")\n}\n\nfunc (ls *listenSocket) getParentID() int64 {\n\treturn ls.pid\n}\n\ntype normalSocket struct {\n\trefName string\n\ts       Socket\n\tid      int64\n\tpid     int64\n\tcm      *channelMap\n}\n\nfunc (ns *normalSocket) addChild(id int64, e entry) {\n\tlogger.Errorf(\"cannot add a child (id = %d) of type %T to a normal socket\", id, e)\n}\n\nfunc (ns *normalSocket) deleteChild(id int64) {\n\tlogger.Errorf(\"cannot delete a child (id = %d) from a normal socket\", id)\n}\n\nfunc (ns *normalSocket) triggerDelete() {\n\tns.cm.deleteEntry(ns.id)\n\tns.cm.findEntry(ns.pid).deleteChild(ns.id)\n}\n\nfunc (ns *normalSocket) deleteSelfIfReady() {\n\tlogger.Errorf(\"cannot call deleteSelfIfReady on a normal socket\")\n}\n\nfunc (ns *normalSocket) getParentID() int64 {\n\treturn ns.pid\n}\n\n// ServerMetric defines the info channelz provides for a specific Server, which\n// includes ServerInternalMetric and channelz-specific data, such as channelz id,\n// child list, etc.\ntype ServerMetric struct {\n\t// ID is the channelz id of this server.\n\tID int64\n\t// RefName is the human readable reference string of this server.\n\tRefName string\n\t// ServerData contains server internal metric reported by the server through\n\t// ChannelzMetric().\n\tServerData *ServerInternalMetric\n\t// ListenSockets tracks the listener socket type children of this server in the\n\t// format of a map from socket channelz id to corresponding reference string.\n\tListenSockets map[int64]string\n}\n\n// ServerInternalMetric defines the struct that the implementor of Server interface\n// should return from ChannelzMetric().\ntype ServerInternalMetric struct {\n\t// The number of incoming calls started on the server.\n\tCallsStarted int64\n\t// The number of incoming calls that have completed with an OK status.\n\tCallsSucceeded int64\n\t// The number of incoming calls that have a completed with a non-OK status.\n\tCallsFailed int64\n\t// The last time a call was started on the server.\n\tLastCallStartedTimestamp time.Time\n}\n\n// Server is the interface to be satisfied in order to be tracked by channelz as\n// Server.\ntype Server interface {\n\tChannelzMetric() *ServerInternalMetric\n}\n\ntype server struct {\n\trefName       string\n\ts             Server\n\tcloseCalled   bool\n\tsockets       map[int64]string\n\tlistenSockets map[int64]string\n\tid            int64\n\tcm            *channelMap\n}\n\nfunc (s *server) addChild(id int64, e entry) {\n\tswitch v := e.(type) {\n\tcase *normalSocket:\n\t\ts.sockets[id] = v.refName\n\tcase *listenSocket:\n\t\ts.listenSockets[id] = v.refName\n\tdefault:\n\t\tlogger.Errorf(\"cannot add a child (id = %d) of type %T to a server\", id, e)\n\t}\n}\n\nfunc (s *server) deleteChild(id int64) {\n\tdelete(s.sockets, id)\n\tdelete(s.listenSockets, id)\n\ts.deleteSelfIfReady()\n}\n\nfunc (s *server) triggerDelete() {\n\ts.closeCalled = true\n\ts.deleteSelfIfReady()\n}\n\nfunc (s *server) deleteSelfIfReady() {\n\tif !s.closeCalled || len(s.sockets)+len(s.listenSockets) != 0 {\n\t\treturn\n\t}\n\ts.cm.deleteEntry(s.id)\n}\n\nfunc (s *server) getParentID() int64 {\n\treturn 0\n}\n\ntype tracedChannel interface {\n\tgetChannelTrace() *channelTrace\n\tincrTraceRefCount()\n\tdecrTraceRefCount()\n\tgetRefName() string\n}\n\ntype channelTrace struct {\n\tcm          *channelMap\n\tclearCalled bool\n\tcreatedTime time.Time\n\teventCount  int64\n\tmu          sync.Mutex\n\tevents      []*TraceEvent\n}\n\nfunc (c *channelTrace) append(e *TraceEvent) {\n\tc.mu.Lock()\n\tif len(c.events) == getMaxTraceEntry() {\n\t\tdel := c.events[0]\n\t\tc.events = c.events[1:]\n\t\tif del.RefID != 0 {\n\t\t\t// start recursive cleanup in a goroutine to not block the call originated from grpc.\n\t\t\tgo func() {\n\t\t\t\t// need to acquire c.cm.mu lock to call the unlocked attemptCleanup func.\n\t\t\t\tc.cm.mu.Lock()\n\t\t\t\tc.cm.decrTraceRefCount(del.RefID)\n\t\t\t\tc.cm.mu.Unlock()\n\t\t\t}()\n\t\t}\n\t}\n\te.Timestamp = time.Now()\n\tc.events = append(c.events, e)\n\tc.eventCount++\n\tc.mu.Unlock()\n}\n\nfunc (c *channelTrace) clear() {\n\tif c.clearCalled {\n\t\treturn\n\t}\n\tc.clearCalled = true\n\tc.mu.Lock()\n\tfor _, e := range c.events {\n\t\tif e.RefID != 0 {\n\t\t\t// caller should have already held the c.cm.mu lock.\n\t\t\tc.cm.decrTraceRefCount(e.RefID)\n\t\t}\n\t}\n\tc.mu.Unlock()\n}\n\n// Severity is the severity level of a trace event.\n// The canonical enumeration of all valid values is here:\n// https://github.com/grpc/grpc-proto/blob/9b13d199cc0d4703c7ea26c9c330ba695866eb23/grpc/channelz/v1/channelz.proto#L126.\ntype Severity int\n\nconst (\n\t// CtUnknown indicates unknown severity of a trace event.\n\tCtUnknown Severity = iota\n\t// CtInfo indicates info level severity of a trace event.\n\tCtInfo\n\t// CtWarning indicates warning level severity of a trace event.\n\tCtWarning\n\t// CtError indicates error level severity of a trace event.\n\tCtError\n)\n\n// RefChannelType is the type of the entity being referenced in a trace event.\ntype RefChannelType int\n\nconst (\n\t// RefUnknown indicates an unknown entity type, the zero value for this type.\n\tRefUnknown RefChannelType = iota\n\t// RefChannel indicates the referenced entity is a Channel.\n\tRefChannel\n\t// RefSubChannel indicates the referenced entity is a SubChannel.\n\tRefSubChannel\n\t// RefServer indicates the referenced entity is a Server.\n\tRefServer\n\t// RefListenSocket indicates the referenced entity is a ListenSocket.\n\tRefListenSocket\n\t// RefNormalSocket indicates the referenced entity is a NormalSocket.\n\tRefNormalSocket\n)\n\nvar refChannelTypeToString = map[RefChannelType]string{\n\tRefUnknown:      \"Unknown\",\n\tRefChannel:      \"Channel\",\n\tRefSubChannel:   \"SubChannel\",\n\tRefServer:       \"Server\",\n\tRefListenSocket: \"ListenSocket\",\n\tRefNormalSocket: \"NormalSocket\",\n}\n\nfunc (r RefChannelType) String() string {\n\treturn refChannelTypeToString[r]\n}\n\nfunc (c *channelTrace) dumpData() *ChannelTrace {\n\tc.mu.Lock()\n\tct := &ChannelTrace{EventNum: c.eventCount, CreationTime: c.createdTime}\n\tct.Events = c.events[:len(c.events)]\n\tc.mu.Unlock()\n\treturn ct\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/types_linux.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"syscall\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// SocketOptionData defines the struct to hold socket option data, and related\n// getter function to obtain info from fd.\ntype SocketOptionData struct {\n\tLinger      *unix.Linger\n\tRecvTimeout *unix.Timeval\n\tSendTimeout *unix.Timeval\n\tTCPInfo     *unix.TCPInfo\n}\n\n// Getsockopt defines the function to get socket options requested by channelz.\n// It is to be passed to syscall.RawConn.Control().\nfunc (s *SocketOptionData) Getsockopt(fd uintptr) {\n\tif v, err := unix.GetsockoptLinger(int(fd), syscall.SOL_SOCKET, syscall.SO_LINGER); err == nil {\n\t\ts.Linger = v\n\t}\n\tif v, err := unix.GetsockoptTimeval(int(fd), syscall.SOL_SOCKET, syscall.SO_RCVTIMEO); err == nil {\n\t\ts.RecvTimeout = v\n\t}\n\tif v, err := unix.GetsockoptTimeval(int(fd), syscall.SOL_SOCKET, syscall.SO_SNDTIMEO); err == nil {\n\t\ts.SendTimeout = v\n\t}\n\tif v, err := unix.GetsockoptTCPInfo(int(fd), syscall.SOL_TCP, syscall.TCP_INFO); err == nil {\n\t\ts.TCPInfo = v\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go",
    "content": "//go:build !linux\n// +build !linux\n\n/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"sync\"\n)\n\nvar once sync.Once\n\n// SocketOptionData defines the struct to hold socket option data, and related\n// getter function to obtain info from fd.\n// Windows OS doesn't support Socket Option\ntype SocketOptionData struct {\n}\n\n// Getsockopt defines the function to get socket options requested by channelz.\n// It is to be passed to syscall.RawConn.Control().\n// Windows OS doesn't support Socket Option\nfunc (s *SocketOptionData) Getsockopt(fd uintptr) {\n\tonce.Do(func() {\n\t\tlogger.Warning(\"Channelz: socket options are not supported on non-linux environments\")\n\t})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/util_linux.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\nimport (\n\t\"syscall\"\n)\n\n// GetSocketOption gets the socket option info of the conn.\nfunc GetSocketOption(socket any) *SocketOptionData {\n\tc, ok := socket.(syscall.Conn)\n\tif !ok {\n\t\treturn nil\n\t}\n\tdata := &SocketOptionData{}\n\tif rawConn, err := c.SyscallConn(); err == nil {\n\t\trawConn.Control(data.Getsockopt)\n\t\treturn data\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go",
    "content": "//go:build !linux\n// +build !linux\n\n/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage channelz\n\n// GetSocketOption gets the socket option info of the conn.\nfunc GetSocketOption(c any) *SocketOptionData {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/credentials/credentials.go",
    "content": "/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage credentials\n\nimport (\n\t\"context\"\n)\n\n// requestInfoKey is a struct to be used as the key to store RequestInfo in a\n// context.\ntype requestInfoKey struct{}\n\n// NewRequestInfoContext creates a context with ri.\nfunc NewRequestInfoContext(ctx context.Context, ri any) context.Context {\n\treturn context.WithValue(ctx, requestInfoKey{}, ri)\n}\n\n// RequestInfoFromContext extracts the RequestInfo from ctx.\nfunc RequestInfoFromContext(ctx context.Context) any {\n\treturn ctx.Value(requestInfoKey{})\n}\n\n// clientHandshakeInfoKey is a struct used as the key to store\n// ClientHandshakeInfo in a context.\ntype clientHandshakeInfoKey struct{}\n\n// ClientHandshakeInfoFromContext extracts the ClientHandshakeInfo from ctx.\nfunc ClientHandshakeInfoFromContext(ctx context.Context) any {\n\treturn ctx.Value(clientHandshakeInfoKey{})\n}\n\n// NewClientHandshakeInfoContext creates a context with chi.\nfunc NewClientHandshakeInfoContext(ctx context.Context, chi any) context.Context {\n\treturn context.WithValue(ctx, clientHandshakeInfoKey{}, chi)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/credentials/spiffe.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package credentials defines APIs for parsing SPIFFE ID.\n//\n// All APIs in this package are experimental.\npackage credentials\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"net/url\"\n\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nvar logger = grpclog.Component(\"credentials\")\n\n// SPIFFEIDFromState parses the SPIFFE ID from State. If the SPIFFE ID format\n// is invalid, return nil with warning.\nfunc SPIFFEIDFromState(state tls.ConnectionState) *url.URL {\n\tif len(state.PeerCertificates) == 0 || len(state.PeerCertificates[0].URIs) == 0 {\n\t\treturn nil\n\t}\n\treturn SPIFFEIDFromCert(state.PeerCertificates[0])\n}\n\n// SPIFFEIDFromCert parses the SPIFFE ID from x509.Certificate. If the SPIFFE\n// ID format is invalid, return nil with warning.\nfunc SPIFFEIDFromCert(cert *x509.Certificate) *url.URL {\n\tif cert == nil || cert.URIs == nil {\n\t\treturn nil\n\t}\n\tvar spiffeID *url.URL\n\tfor _, uri := range cert.URIs {\n\t\tif uri == nil || uri.Scheme != \"spiffe\" || uri.Opaque != \"\" || (uri.User != nil && uri.User.Username() != \"\") {\n\t\t\tcontinue\n\t\t}\n\t\t// From this point, we assume the uri is intended for a SPIFFE ID.\n\t\tif len(uri.String()) > 2048 {\n\t\t\tlogger.Warning(\"invalid SPIFFE ID: total ID length larger than 2048 bytes\")\n\t\t\treturn nil\n\t\t}\n\t\tif len(uri.Host) == 0 || len(uri.Path) == 0 {\n\t\t\tlogger.Warning(\"invalid SPIFFE ID: domain or workload ID is empty\")\n\t\t\treturn nil\n\t\t}\n\t\tif len(uri.Host) > 255 {\n\t\t\tlogger.Warning(\"invalid SPIFFE ID: domain length larger than 255 characters\")\n\t\t\treturn nil\n\t\t}\n\t\t// A valid SPIFFE certificate can only have exactly one URI SAN field.\n\t\tif len(cert.URIs) > 1 {\n\t\t\tlogger.Warning(\"invalid SPIFFE ID: multiple URI SANs\")\n\t\t\treturn nil\n\t\t}\n\t\tspiffeID = uri\n\t}\n\treturn spiffeID\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/credentials/syscallconn.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage credentials\n\nimport (\n\t\"net\"\n\t\"syscall\"\n)\n\ntype sysConn = syscall.Conn\n\n// syscallConn keeps reference of rawConn to support syscall.Conn for channelz.\n// SyscallConn() (the method in interface syscall.Conn) is explicitly\n// implemented on this type,\n//\n// Interface syscall.Conn is implemented by most net.Conn implementations (e.g.\n// TCPConn, UnixConn), but is not part of net.Conn interface. So wrapper conns\n// that embed net.Conn don't implement syscall.Conn. (Side note: tls.Conn\n// doesn't embed net.Conn, so even if syscall.Conn is part of net.Conn, it won't\n// help here).\ntype syscallConn struct {\n\tnet.Conn\n\t// sysConn is a type alias of syscall.Conn. It's necessary because the name\n\t// `Conn` collides with `net.Conn`.\n\tsysConn\n}\n\n// WrapSyscallConn tries to wrap rawConn and newConn into a net.Conn that\n// implements syscall.Conn. rawConn will be used to support syscall, and newConn\n// will be used for read/write.\n//\n// This function returns newConn if rawConn doesn't implement syscall.Conn.\nfunc WrapSyscallConn(rawConn, newConn net.Conn) net.Conn {\n\tsysConn, ok := rawConn.(syscall.Conn)\n\tif !ok {\n\t\treturn newConn\n\t}\n\treturn &syscallConn{\n\t\tConn:    newConn,\n\t\tsysConn: sysConn,\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/credentials/util.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage credentials\n\nimport (\n\t\"crypto/tls\"\n)\n\nconst alpnProtoStrH2 = \"h2\"\n\n// AppendH2ToNextProtos appends h2 to next protos.\nfunc AppendH2ToNextProtos(ps []string) []string {\n\tfor _, p := range ps {\n\t\tif p == alpnProtoStrH2 {\n\t\t\treturn ps\n\t\t}\n\t}\n\tret := make([]string, 0, len(ps)+1)\n\tret = append(ret, ps...)\n\treturn append(ret, alpnProtoStrH2)\n}\n\n// CloneTLSConfig returns a shallow clone of the exported\n// fields of cfg, ignoring the unexported sync.Once, which\n// contains a mutex and must not be copied.\n//\n// If cfg is nil, a new zero tls.Config is returned.\n//\n// TODO: inline this function if possible.\nfunc CloneTLSConfig(cfg *tls.Config) *tls.Config {\n\tif cfg == nil {\n\t\treturn &tls.Config{}\n\t}\n\n\treturn cfg.Clone()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/envconfig/envconfig.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package envconfig contains grpc settings configured by environment variables.\npackage envconfig\n\nimport (\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nvar (\n\t// TXTErrIgnore is set if TXT errors should be ignored (\"GRPC_GO_IGNORE_TXT_ERRORS\" is not \"false\").\n\tTXTErrIgnore = boolFromEnv(\"GRPC_GO_IGNORE_TXT_ERRORS\", true)\n\t// AdvertiseCompressors is set if registered compressor should be advertised\n\t// (\"GRPC_GO_ADVERTISE_COMPRESSORS\" is not \"false\").\n\tAdvertiseCompressors = boolFromEnv(\"GRPC_GO_ADVERTISE_COMPRESSORS\", true)\n\t// RingHashCap indicates the maximum ring size which defaults to 4096\n\t// entries but may be overridden by setting the environment variable\n\t// \"GRPC_RING_HASH_CAP\".  This does not override the default bounds\n\t// checking which NACKs configs specifying ring sizes > 8*1024*1024 (~8M).\n\tRingHashCap = uint64FromEnv(\"GRPC_RING_HASH_CAP\", 4096, 1, 8*1024*1024)\n\t// PickFirstLBConfig is set if we should support configuration of the\n\t// pick_first LB policy.\n\tPickFirstLBConfig = boolFromEnv(\"GRPC_EXPERIMENTAL_PICKFIRST_LB_CONFIG\", true)\n\t// LeastRequestLB is set if we should support the least_request_experimental\n\t// LB policy, which can be enabled by setting the environment variable\n\t// \"GRPC_EXPERIMENTAL_ENABLE_LEAST_REQUEST\" to \"true\".\n\tLeastRequestLB = boolFromEnv(\"GRPC_EXPERIMENTAL_ENABLE_LEAST_REQUEST\", false)\n\t// ALTSMaxConcurrentHandshakes is the maximum number of concurrent ALTS\n\t// handshakes that can be performed.\n\tALTSMaxConcurrentHandshakes = uint64FromEnv(\"GRPC_ALTS_MAX_CONCURRENT_HANDSHAKES\", 100, 1, 100)\n)\n\nfunc boolFromEnv(envVar string, def bool) bool {\n\tif def {\n\t\t// The default is true; return true unless the variable is \"false\".\n\t\treturn !strings.EqualFold(os.Getenv(envVar), \"false\")\n\t}\n\t// The default is false; return false unless the variable is \"true\".\n\treturn strings.EqualFold(os.Getenv(envVar), \"true\")\n}\n\nfunc uint64FromEnv(envVar string, def, min, max uint64) uint64 {\n\tv, err := strconv.ParseUint(os.Getenv(envVar), 10, 64)\n\tif err != nil {\n\t\treturn def\n\t}\n\tif v < min {\n\t\treturn min\n\t}\n\tif v > max {\n\t\treturn max\n\t}\n\treturn v\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/envconfig/observability.go",
    "content": "/*\n *\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage envconfig\n\nimport \"os\"\n\nconst (\n\tenvObservabilityConfig     = \"GRPC_GCP_OBSERVABILITY_CONFIG\"\n\tenvObservabilityConfigFile = \"GRPC_GCP_OBSERVABILITY_CONFIG_FILE\"\n)\n\nvar (\n\t// ObservabilityConfig is the json configuration for the gcp/observability\n\t// package specified directly in the envObservabilityConfig env var.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tObservabilityConfig = os.Getenv(envObservabilityConfig)\n\t// ObservabilityConfigFile is the json configuration for the\n\t// gcp/observability specified in a file with the location specified in\n\t// envObservabilityConfigFile env var.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tObservabilityConfigFile = os.Getenv(envObservabilityConfigFile)\n)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/envconfig/xds.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage envconfig\n\nimport (\n\t\"os\"\n)\n\nconst (\n\t// XDSBootstrapFileNameEnv is the env variable to set bootstrap file name.\n\t// Do not use this and read from env directly. Its value is read and kept in\n\t// variable XDSBootstrapFileName.\n\t//\n\t// When both bootstrap FileName and FileContent are set, FileName is used.\n\tXDSBootstrapFileNameEnv = \"GRPC_XDS_BOOTSTRAP\"\n\t// XDSBootstrapFileContentEnv is the env variable to set bootstrap file\n\t// content. Do not use this and read from env directly. Its value is read\n\t// and kept in variable XDSBootstrapFileContent.\n\t//\n\t// When both bootstrap FileName and FileContent are set, FileName is used.\n\tXDSBootstrapFileContentEnv = \"GRPC_XDS_BOOTSTRAP_CONFIG\"\n)\n\nvar (\n\t// XDSBootstrapFileName holds the name of the file which contains xDS\n\t// bootstrap configuration. Users can specify the location of the bootstrap\n\t// file by setting the environment variable \"GRPC_XDS_BOOTSTRAP\".\n\t//\n\t// When both bootstrap FileName and FileContent are set, FileName is used.\n\tXDSBootstrapFileName = os.Getenv(XDSBootstrapFileNameEnv)\n\t// XDSBootstrapFileContent holds the content of the xDS bootstrap\n\t// configuration. Users can specify the bootstrap config by setting the\n\t// environment variable \"GRPC_XDS_BOOTSTRAP_CONFIG\".\n\t//\n\t// When both bootstrap FileName and FileContent are set, FileName is used.\n\tXDSBootstrapFileContent = os.Getenv(XDSBootstrapFileContentEnv)\n\t// XDSRingHash indicates whether ring hash support is enabled, which can be\n\t// disabled by setting the environment variable\n\t// \"GRPC_XDS_EXPERIMENTAL_ENABLE_RING_HASH\" to \"false\".\n\tXDSRingHash = boolFromEnv(\"GRPC_XDS_EXPERIMENTAL_ENABLE_RING_HASH\", true)\n\t// XDSClientSideSecurity is used to control processing of security\n\t// configuration on the client-side.\n\t//\n\t// Note that there is no env var protection for the server-side because we\n\t// have a brand new API on the server-side and users explicitly need to use\n\t// the new API to get security integration on the server.\n\tXDSClientSideSecurity = boolFromEnv(\"GRPC_XDS_EXPERIMENTAL_SECURITY_SUPPORT\", true)\n\t// XDSAggregateAndDNS indicates whether processing of aggregated cluster and\n\t// DNS cluster is enabled, which can be disabled by setting the environment\n\t// variable \"GRPC_XDS_EXPERIMENTAL_ENABLE_AGGREGATE_AND_LOGICAL_DNS_CLUSTER\"\n\t// to \"false\".\n\tXDSAggregateAndDNS = boolFromEnv(\"GRPC_XDS_EXPERIMENTAL_ENABLE_AGGREGATE_AND_LOGICAL_DNS_CLUSTER\", true)\n\n\t// XDSRBAC indicates whether xDS configured RBAC HTTP Filter is enabled,\n\t// which can be disabled by setting the environment variable\n\t// \"GRPC_XDS_EXPERIMENTAL_RBAC\" to \"false\".\n\tXDSRBAC = boolFromEnv(\"GRPC_XDS_EXPERIMENTAL_RBAC\", true)\n\t// XDSOutlierDetection indicates whether outlier detection support is\n\t// enabled, which can be disabled by setting the environment variable\n\t// \"GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION\" to \"false\".\n\tXDSOutlierDetection = boolFromEnv(\"GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION\", true)\n\t// XDSFederation indicates whether federation support is enabled, which can\n\t// be enabled by setting the environment variable\n\t// \"GRPC_EXPERIMENTAL_XDS_FEDERATION\" to \"true\".\n\tXDSFederation = boolFromEnv(\"GRPC_EXPERIMENTAL_XDS_FEDERATION\", true)\n\n\t// XDSRLS indicates whether processing of Cluster Specifier plugins and\n\t// support for the RLS CLuster Specifier is enabled, which can be disabled by\n\t// setting the environment variable \"GRPC_EXPERIMENTAL_XDS_RLS_LB\" to\n\t// \"false\".\n\tXDSRLS = boolFromEnv(\"GRPC_EXPERIMENTAL_XDS_RLS_LB\", true)\n\n\t// C2PResolverTestOnlyTrafficDirectorURI is the TD URI for testing.\n\tC2PResolverTestOnlyTrafficDirectorURI = os.Getenv(\"GRPC_TEST_ONLY_GOOGLE_C2P_RESOLVER_TRAFFIC_DIRECTOR_URI\")\n\t// XDSCustomLBPolicy indicates whether Custom LB Policies are enabled, which\n\t// can be disabled by setting the environment variable\n\t// \"GRPC_EXPERIMENTAL_XDS_CUSTOM_LB_CONFIG\" to \"false\".\n\tXDSCustomLBPolicy = boolFromEnv(\"GRPC_EXPERIMENTAL_XDS_CUSTOM_LB_CONFIG\", true)\n)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpclog/grpclog.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package grpclog (internal) defines depth logging for grpc.\npackage grpclog\n\nimport (\n\t\"os\"\n)\n\n// Logger is the logger used for the non-depth log functions.\nvar Logger LoggerV2\n\n// DepthLogger is the logger used for the depth log functions.\nvar DepthLogger DepthLoggerV2\n\n// InfoDepth logs to the INFO log at the specified depth.\nfunc InfoDepth(depth int, args ...any) {\n\tif DepthLogger != nil {\n\t\tDepthLogger.InfoDepth(depth, args...)\n\t} else {\n\t\tLogger.Infoln(args...)\n\t}\n}\n\n// WarningDepth logs to the WARNING log at the specified depth.\nfunc WarningDepth(depth int, args ...any) {\n\tif DepthLogger != nil {\n\t\tDepthLogger.WarningDepth(depth, args...)\n\t} else {\n\t\tLogger.Warningln(args...)\n\t}\n}\n\n// ErrorDepth logs to the ERROR log at the specified depth.\nfunc ErrorDepth(depth int, args ...any) {\n\tif DepthLogger != nil {\n\t\tDepthLogger.ErrorDepth(depth, args...)\n\t} else {\n\t\tLogger.Errorln(args...)\n\t}\n}\n\n// FatalDepth logs to the FATAL log at the specified depth.\nfunc FatalDepth(depth int, args ...any) {\n\tif DepthLogger != nil {\n\t\tDepthLogger.FatalDepth(depth, args...)\n\t} else {\n\t\tLogger.Fatalln(args...)\n\t}\n\tos.Exit(1)\n}\n\n// LoggerV2 does underlying logging work for grpclog.\n// This is a copy of the LoggerV2 defined in the external grpclog package. It\n// is defined here to avoid a circular dependency.\ntype LoggerV2 interface {\n\t// Info logs to INFO log. Arguments are handled in the manner of fmt.Print.\n\tInfo(args ...any)\n\t// Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println.\n\tInfoln(args ...any)\n\t// Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf.\n\tInfof(format string, args ...any)\n\t// Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print.\n\tWarning(args ...any)\n\t// Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println.\n\tWarningln(args ...any)\n\t// Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf.\n\tWarningf(format string, args ...any)\n\t// Error logs to ERROR log. Arguments are handled in the manner of fmt.Print.\n\tError(args ...any)\n\t// Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println.\n\tErrorln(args ...any)\n\t// Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.\n\tErrorf(format string, args ...any)\n\t// Fatal logs to ERROR log. Arguments are handled in the manner of fmt.Print.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatal(args ...any)\n\t// Fatalln logs to ERROR log. Arguments are handled in the manner of fmt.Println.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatalln(args ...any)\n\t// Fatalf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.\n\t// gRPC ensures that all Fatal logs will exit with os.Exit(1).\n\t// Implementations may also call os.Exit() with a non-zero exit code.\n\tFatalf(format string, args ...any)\n\t// V reports whether verbosity level l is at least the requested verbose level.\n\tV(l int) bool\n}\n\n// DepthLoggerV2 logs at a specified call frame. If a LoggerV2 also implements\n// DepthLoggerV2, the below functions will be called with the appropriate stack\n// depth set for trivial functions the logger may ignore.\n// This is a copy of the DepthLoggerV2 defined in the external grpclog package.\n// It is defined here to avoid a circular dependency.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype DepthLoggerV2 interface {\n\t// InfoDepth logs to INFO log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tInfoDepth(depth int, args ...any)\n\t// WarningDepth logs to WARNING log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tWarningDepth(depth int, args ...any)\n\t// ErrorDepth logs to ERROR log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tErrorDepth(depth int, args ...any)\n\t// FatalDepth logs to FATAL log at the specified depth. Arguments are handled in the manner of fmt.Println.\n\tFatalDepth(depth int, args ...any)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpclog\n\nimport (\n\t\"fmt\"\n)\n\n// PrefixLogger does logging with a prefix.\n//\n// Logging method on a nil logs without any prefix.\ntype PrefixLogger struct {\n\tlogger DepthLoggerV2\n\tprefix string\n}\n\n// Infof does info logging.\nfunc (pl *PrefixLogger) Infof(format string, args ...any) {\n\tif pl != nil {\n\t\t// Handle nil, so the tests can pass in a nil logger.\n\t\tformat = pl.prefix + format\n\t\tpl.logger.InfoDepth(1, fmt.Sprintf(format, args...))\n\t\treturn\n\t}\n\tInfoDepth(1, fmt.Sprintf(format, args...))\n}\n\n// Warningf does warning logging.\nfunc (pl *PrefixLogger) Warningf(format string, args ...any) {\n\tif pl != nil {\n\t\tformat = pl.prefix + format\n\t\tpl.logger.WarningDepth(1, fmt.Sprintf(format, args...))\n\t\treturn\n\t}\n\tWarningDepth(1, fmt.Sprintf(format, args...))\n}\n\n// Errorf does error logging.\nfunc (pl *PrefixLogger) Errorf(format string, args ...any) {\n\tif pl != nil {\n\t\tformat = pl.prefix + format\n\t\tpl.logger.ErrorDepth(1, fmt.Sprintf(format, args...))\n\t\treturn\n\t}\n\tErrorDepth(1, fmt.Sprintf(format, args...))\n}\n\n// Debugf does info logging at verbose level 2.\nfunc (pl *PrefixLogger) Debugf(format string, args ...any) {\n\t// TODO(6044): Refactor interfaces LoggerV2 and DepthLogger, and maybe\n\t// rewrite PrefixLogger a little to ensure that we don't use the global\n\t// `Logger` here, and instead use the `logger` field.\n\tif !Logger.V(2) {\n\t\treturn\n\t}\n\tif pl != nil {\n\t\t// Handle nil, so the tests can pass in a nil logger.\n\t\tformat = pl.prefix + format\n\t\tpl.logger.InfoDepth(1, fmt.Sprintf(format, args...))\n\t\treturn\n\t}\n\tInfoDepth(1, fmt.Sprintf(format, args...))\n\n}\n\n// V reports whether verbosity level l is at least the requested verbose level.\nfunc (pl *PrefixLogger) V(l int) bool {\n\t// TODO(6044): Refactor interfaces LoggerV2 and DepthLogger, and maybe\n\t// rewrite PrefixLogger a little to ensure that we don't use the global\n\t// `Logger` here, and instead use the `logger` field.\n\treturn Logger.V(l)\n}\n\n// NewPrefixLogger creates a prefix logger with the given prefix.\nfunc NewPrefixLogger(logger DepthLoggerV2, prefix string) *PrefixLogger {\n\treturn &PrefixLogger{logger: logger, prefix: prefix}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package grpcrand implements math/rand functions in a concurrent-safe way\n// with a global random source, independent of math/rand's global source.\npackage grpcrand\n\nimport (\n\t\"math/rand\"\n\t\"sync\"\n\t\"time\"\n)\n\nvar (\n\tr  = rand.New(rand.NewSource(time.Now().UnixNano()))\n\tmu sync.Mutex\n)\n\n// Int implements rand.Int on the grpcrand global source.\nfunc Int() int {\n\tmu.Lock()\n\tdefer mu.Unlock()\n\treturn r.Int()\n}\n\n// Int63n implements rand.Int63n on the grpcrand global source.\nfunc Int63n(n int64) int64 {\n\tmu.Lock()\n\tdefer mu.Unlock()\n\treturn r.Int63n(n)\n}\n\n// Intn implements rand.Intn on the grpcrand global source.\nfunc Intn(n int) int {\n\tmu.Lock()\n\tdefer mu.Unlock()\n\treturn r.Intn(n)\n}\n\n// Int31n implements rand.Int31n on the grpcrand global source.\nfunc Int31n(n int32) int32 {\n\tmu.Lock()\n\tdefer mu.Unlock()\n\treturn r.Int31n(n)\n}\n\n// Float64 implements rand.Float64 on the grpcrand global source.\nfunc Float64() float64 {\n\tmu.Lock()\n\tdefer mu.Unlock()\n\treturn r.Float64()\n}\n\n// Uint64 implements rand.Uint64 on the grpcrand global source.\nfunc Uint64() uint64 {\n\tmu.Lock()\n\tdefer mu.Unlock()\n\treturn r.Uint64()\n}\n\n// Uint32 implements rand.Uint32 on the grpcrand global source.\nfunc Uint32() uint32 {\n\tmu.Lock()\n\tdefer mu.Unlock()\n\treturn r.Uint32()\n}\n\n// ExpFloat64 implements rand.ExpFloat64 on the grpcrand global source.\nfunc ExpFloat64() float64 {\n\tmu.Lock()\n\tdefer mu.Unlock()\n\treturn r.ExpFloat64()\n}\n\n// Shuffle implements rand.Shuffle on the grpcrand global source.\nvar Shuffle = func(n int, f func(int, int)) {\n\tmu.Lock()\n\tdefer mu.Unlock()\n\tr.Shuffle(n, f)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go",
    "content": "/*\n *\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcsync\n\nimport (\n\t\"context\"\n\t\"sync\"\n\n\t\"google.golang.org/grpc/internal/buffer\"\n)\n\n// CallbackSerializer provides a mechanism to schedule callbacks in a\n// synchronized manner. It provides a FIFO guarantee on the order of execution\n// of scheduled callbacks. New callbacks can be scheduled by invoking the\n// Schedule() method.\n//\n// This type is safe for concurrent access.\ntype CallbackSerializer struct {\n\t// done is closed once the serializer is shut down completely, i.e all\n\t// scheduled callbacks are executed and the serializer has deallocated all\n\t// its resources.\n\tdone chan struct{}\n\n\tcallbacks *buffer.Unbounded\n\tclosedMu  sync.Mutex\n\tclosed    bool\n}\n\n// NewCallbackSerializer returns a new CallbackSerializer instance. The provided\n// context will be passed to the scheduled callbacks. Users should cancel the\n// provided context to shutdown the CallbackSerializer. It is guaranteed that no\n// callbacks will be added once this context is canceled, and any pending un-run\n// callbacks will be executed before the serializer is shut down.\nfunc NewCallbackSerializer(ctx context.Context) *CallbackSerializer {\n\tcs := &CallbackSerializer{\n\t\tdone:      make(chan struct{}),\n\t\tcallbacks: buffer.NewUnbounded(),\n\t}\n\tgo cs.run(ctx)\n\treturn cs\n}\n\n// Schedule adds a callback to be scheduled after existing callbacks are run.\n//\n// Callbacks are expected to honor the context when performing any blocking\n// operations, and should return early when the context is canceled.\n//\n// Return value indicates if the callback was successfully added to the list of\n// callbacks to be executed by the serializer. It is not possible to add\n// callbacks once the context passed to NewCallbackSerializer is cancelled.\nfunc (cs *CallbackSerializer) Schedule(f func(ctx context.Context)) bool {\n\tcs.closedMu.Lock()\n\tdefer cs.closedMu.Unlock()\n\n\tif cs.closed {\n\t\treturn false\n\t}\n\tcs.callbacks.Put(f)\n\treturn true\n}\n\nfunc (cs *CallbackSerializer) run(ctx context.Context) {\n\tvar backlog []func(context.Context)\n\n\tdefer close(cs.done)\n\tfor ctx.Err() == nil {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\t// Do nothing here. Next iteration of the for loop will not happen,\n\t\t\t// since ctx.Err() would be non-nil.\n\t\tcase callback, ok := <-cs.callbacks.Get():\n\t\t\tif !ok {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcs.callbacks.Load()\n\t\t\tcallback.(func(ctx context.Context))(ctx)\n\t\t}\n\t}\n\n\t// Fetch pending callbacks if any, and execute them before returning from\n\t// this method and closing cs.done.\n\tcs.closedMu.Lock()\n\tcs.closed = true\n\tbacklog = cs.fetchPendingCallbacks()\n\tcs.callbacks.Close()\n\tcs.closedMu.Unlock()\n\tfor _, b := range backlog {\n\t\tb(ctx)\n\t}\n}\n\nfunc (cs *CallbackSerializer) fetchPendingCallbacks() []func(context.Context) {\n\tvar backlog []func(context.Context)\n\tfor {\n\t\tselect {\n\t\tcase b := <-cs.callbacks.Get():\n\t\t\tbacklog = append(backlog, b.(func(context.Context)))\n\t\t\tcs.callbacks.Load()\n\t\tdefault:\n\t\t\treturn backlog\n\t\t}\n\t}\n}\n\n// Done returns a channel that is closed after the context passed to\n// NewCallbackSerializer is canceled and all callbacks have been executed.\nfunc (cs *CallbackSerializer) Done() <-chan struct{} {\n\treturn cs.done\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcsync/event.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package grpcsync implements additional synchronization primitives built upon\n// the sync package.\npackage grpcsync\n\nimport (\n\t\"sync\"\n\t\"sync/atomic\"\n)\n\n// Event represents a one-time event that may occur in the future.\ntype Event struct {\n\tfired int32\n\tc     chan struct{}\n\to     sync.Once\n}\n\n// Fire causes e to complete.  It is safe to call multiple times, and\n// concurrently.  It returns true iff this call to Fire caused the signaling\n// channel returned by Done to close.\nfunc (e *Event) Fire() bool {\n\tret := false\n\te.o.Do(func() {\n\t\tatomic.StoreInt32(&e.fired, 1)\n\t\tclose(e.c)\n\t\tret = true\n\t})\n\treturn ret\n}\n\n// Done returns a channel that will be closed when Fire is called.\nfunc (e *Event) Done() <-chan struct{} {\n\treturn e.c\n}\n\n// HasFired returns true if Fire has been called.\nfunc (e *Event) HasFired() bool {\n\treturn atomic.LoadInt32(&e.fired) == 1\n}\n\n// NewEvent returns a new, ready-to-use Event.\nfunc NewEvent() *Event {\n\treturn &Event{c: make(chan struct{})}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcsync/oncefunc.go",
    "content": "/*\n *\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcsync\n\nimport (\n\t\"sync\"\n)\n\n// OnceFunc returns a function wrapping f which ensures f is only executed\n// once even if the returned function is executed multiple times.\nfunc OnceFunc(f func()) func() {\n\tvar once sync.Once\n\treturn func() {\n\t\tonce.Do(f)\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go",
    "content": "/*\n *\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcsync\n\nimport (\n\t\"context\"\n\t\"sync\"\n)\n\n// Subscriber represents an entity that is subscribed to messages published on\n// a PubSub. It wraps the callback to be invoked by the PubSub when a new\n// message is published.\ntype Subscriber interface {\n\t// OnMessage is invoked when a new message is published. Implementations\n\t// must not block in this method.\n\tOnMessage(msg any)\n}\n\n// PubSub is a simple one-to-many publish-subscribe system that supports\n// messages of arbitrary type. It guarantees that messages are delivered in\n// the same order in which they were published.\n//\n// Publisher invokes the Publish() method to publish new messages, while\n// subscribers interested in receiving these messages register a callback\n// via the Subscribe() method.\n//\n// Once a PubSub is stopped, no more messages can be published, but any pending\n// published messages will be delivered to the subscribers.  Done may be used\n// to determine when all published messages have been delivered.\ntype PubSub struct {\n\tcs *CallbackSerializer\n\n\t// Access to the below fields are guarded by this mutex.\n\tmu          sync.Mutex\n\tmsg         any\n\tsubscribers map[Subscriber]bool\n}\n\n// NewPubSub returns a new PubSub instance.  Users should cancel the\n// provided context to shutdown the PubSub.\nfunc NewPubSub(ctx context.Context) *PubSub {\n\treturn &PubSub{\n\t\tcs:          NewCallbackSerializer(ctx),\n\t\tsubscribers: map[Subscriber]bool{},\n\t}\n}\n\n// Subscribe registers the provided Subscriber to the PubSub.\n//\n// If the PubSub contains a previously published message, the Subscriber's\n// OnMessage() callback will be invoked asynchronously with the existing\n// message to begin with, and subsequently for every newly published message.\n//\n// The caller is responsible for invoking the returned cancel function to\n// unsubscribe itself from the PubSub.\nfunc (ps *PubSub) Subscribe(sub Subscriber) (cancel func()) {\n\tps.mu.Lock()\n\tdefer ps.mu.Unlock()\n\n\tps.subscribers[sub] = true\n\n\tif ps.msg != nil {\n\t\tmsg := ps.msg\n\t\tps.cs.Schedule(func(context.Context) {\n\t\t\tps.mu.Lock()\n\t\t\tdefer ps.mu.Unlock()\n\t\t\tif !ps.subscribers[sub] {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsub.OnMessage(msg)\n\t\t})\n\t}\n\n\treturn func() {\n\t\tps.mu.Lock()\n\t\tdefer ps.mu.Unlock()\n\t\tdelete(ps.subscribers, sub)\n\t}\n}\n\n// Publish publishes the provided message to the PubSub, and invokes\n// callbacks registered by subscribers asynchronously.\nfunc (ps *PubSub) Publish(msg any) {\n\tps.mu.Lock()\n\tdefer ps.mu.Unlock()\n\n\tps.msg = msg\n\tfor sub := range ps.subscribers {\n\t\ts := sub\n\t\tps.cs.Schedule(func(context.Context) {\n\t\t\tps.mu.Lock()\n\t\t\tdefer ps.mu.Unlock()\n\t\t\tif !ps.subscribers[s] {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ts.OnMessage(msg)\n\t\t})\n\t}\n}\n\n// Done returns a channel that is closed after the context passed to NewPubSub\n// is canceled and all updates have been sent to subscribers.\nfunc (ps *PubSub) Done() <-chan struct{} {\n\treturn ps.cs.Done()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcutil/compressor.go",
    "content": "/*\n *\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcutil\n\nimport (\n\t\"strings\"\n\n\t\"google.golang.org/grpc/internal/envconfig\"\n)\n\n// RegisteredCompressorNames holds names of the registered compressors.\nvar RegisteredCompressorNames []string\n\n// IsCompressorNameRegistered returns true when name is available in registry.\nfunc IsCompressorNameRegistered(name string) bool {\n\tfor _, compressor := range RegisteredCompressorNames {\n\t\tif compressor == name {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// RegisteredCompressors returns a string of registered compressor names\n// separated by comma.\nfunc RegisteredCompressors() string {\n\tif !envconfig.AdvertiseCompressors {\n\t\treturn \"\"\n\t}\n\treturn strings.Join(RegisteredCompressorNames, \",\")\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcutil/encode_duration.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcutil\n\nimport (\n\t\"strconv\"\n\t\"time\"\n)\n\nconst maxTimeoutValue int64 = 100000000 - 1\n\n// div does integer division and round-up the result. Note that this is\n// equivalent to (d+r-1)/r but has less chance to overflow.\nfunc div(d, r time.Duration) int64 {\n\tif d%r > 0 {\n\t\treturn int64(d/r + 1)\n\t}\n\treturn int64(d / r)\n}\n\n// EncodeDuration encodes the duration to the format grpc-timeout header\n// accepts.\n//\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests\nfunc EncodeDuration(t time.Duration) string {\n\t// TODO: This is simplistic and not bandwidth efficient. Improve it.\n\tif t <= 0 {\n\t\treturn \"0n\"\n\t}\n\tif d := div(t, time.Nanosecond); d <= maxTimeoutValue {\n\t\treturn strconv.FormatInt(d, 10) + \"n\"\n\t}\n\tif d := div(t, time.Microsecond); d <= maxTimeoutValue {\n\t\treturn strconv.FormatInt(d, 10) + \"u\"\n\t}\n\tif d := div(t, time.Millisecond); d <= maxTimeoutValue {\n\t\treturn strconv.FormatInt(d, 10) + \"m\"\n\t}\n\tif d := div(t, time.Second); d <= maxTimeoutValue {\n\t\treturn strconv.FormatInt(d, 10) + \"S\"\n\t}\n\tif d := div(t, time.Minute); d <= maxTimeoutValue {\n\t\treturn strconv.FormatInt(d, 10) + \"M\"\n\t}\n\t// Note that maxTimeoutValue * time.Hour > MaxInt64.\n\treturn strconv.FormatInt(div(t, time.Hour), 10) + \"H\"\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcutil/grpcutil.go",
    "content": "/*\n *\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package grpcutil provides utility functions used across the gRPC codebase.\npackage grpcutil\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcutil/metadata.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcutil\n\nimport (\n\t\"context\"\n\n\t\"google.golang.org/grpc/metadata\"\n)\n\ntype mdExtraKey struct{}\n\n// WithExtraMetadata creates a new context with incoming md attached.\nfunc WithExtraMetadata(ctx context.Context, md metadata.MD) context.Context {\n\treturn context.WithValue(ctx, mdExtraKey{}, md)\n}\n\n// ExtraMetadata returns the incoming metadata in ctx if it exists.  The\n// returned MD should not be modified. Writing to it may cause races.\n// Modification should be made to copies of the returned MD.\nfunc ExtraMetadata(ctx context.Context) (md metadata.MD, ok bool) {\n\tmd, ok = ctx.Value(mdExtraKey{}).(metadata.MD)\n\treturn\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcutil/method.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcutil\n\nimport (\n\t\"errors\"\n\t\"strings\"\n)\n\n// ParseMethod splits service and method from the input. It expects format\n// \"/service/method\".\nfunc ParseMethod(methodName string) (service, method string, _ error) {\n\tif !strings.HasPrefix(methodName, \"/\") {\n\t\treturn \"\", \"\", errors.New(\"invalid method name: should start with /\")\n\t}\n\tmethodName = methodName[1:]\n\n\tpos := strings.LastIndex(methodName, \"/\")\n\tif pos < 0 {\n\t\treturn \"\", \"\", errors.New(\"invalid method name: suffix /method is missing\")\n\t}\n\treturn methodName[:pos], methodName[pos+1:], nil\n}\n\n// baseContentType is the base content-type for gRPC.  This is a valid\n// content-type on it's own, but can also include a content-subtype such as\n// \"proto\" as a suffix after \"+\" or \";\".  See\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests\n// for more details.\nconst baseContentType = \"application/grpc\"\n\n// ContentSubtype returns the content-subtype for the given content-type.  The\n// given content-type must be a valid content-type that starts with\n// \"application/grpc\". A content-subtype will follow \"application/grpc\" after a\n// \"+\" or \";\". See\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details.\n//\n// If contentType is not a valid content-type for gRPC, the boolean\n// will be false, otherwise true. If content-type == \"application/grpc\",\n// \"application/grpc+\", or \"application/grpc;\", the boolean will be true,\n// but no content-subtype will be returned.\n//\n// contentType is assumed to be lowercase already.\nfunc ContentSubtype(contentType string) (string, bool) {\n\tif contentType == baseContentType {\n\t\treturn \"\", true\n\t}\n\tif !strings.HasPrefix(contentType, baseContentType) {\n\t\treturn \"\", false\n\t}\n\t// guaranteed since != baseContentType and has baseContentType prefix\n\tswitch contentType[len(baseContentType)] {\n\tcase '+', ';':\n\t\t// this will return true for \"application/grpc+\" or \"application/grpc;\"\n\t\t// which the previous validContentType function tested to be valid, so we\n\t\t// just say that no content-subtype is specified in this case\n\t\treturn contentType[len(baseContentType)+1:], true\n\tdefault:\n\t\treturn \"\", false\n\t}\n}\n\n// ContentType builds full content type with the given sub-type.\n//\n// contentSubtype is assumed to be lowercase\nfunc ContentType(contentSubtype string) string {\n\tif contentSubtype == \"\" {\n\t\treturn baseContentType\n\t}\n\treturn baseContentType + \"+\" + contentSubtype\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/grpcutil/regex.go",
    "content": "/*\n *\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpcutil\n\nimport \"regexp\"\n\n// FullMatchWithRegex returns whether the full text matches the regex provided.\nfunc FullMatchWithRegex(re *regexp.Regexp, text string) bool {\n\tif len(text) == 0 {\n\t\treturn re.MatchString(text)\n\t}\n\tre.Longest()\n\trem := re.FindString(text)\n\treturn len(rem) == len(text)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/idle/idle.go",
    "content": "/*\n *\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package idle contains a component for managing idleness (entering and exiting)\n// based on RPC activity.\npackage idle\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/grpclog\"\n)\n\n// For overriding in unit tests.\nvar timeAfterFunc = func(d time.Duration, f func()) *time.Timer {\n\treturn time.AfterFunc(d, f)\n}\n\n// Enforcer is the functionality provided by grpc.ClientConn to enter\n// and exit from idle mode.\ntype Enforcer interface {\n\tExitIdleMode() error\n\tEnterIdleMode() error\n}\n\n// Manager defines the functionality required to track RPC activity on a\n// channel.\ntype Manager interface {\n\tOnCallBegin() error\n\tOnCallEnd()\n\tClose()\n}\n\ntype noopManager struct{}\n\nfunc (noopManager) OnCallBegin() error { return nil }\nfunc (noopManager) OnCallEnd()         {}\nfunc (noopManager) Close()             {}\n\n// manager implements the Manager interface. It uses atomic operations to\n// synchronize access to shared state and a mutex to guarantee mutual exclusion\n// in a critical section.\ntype manager struct {\n\t// State accessed atomically.\n\tlastCallEndTime           int64 // Unix timestamp in nanos; time when the most recent RPC completed.\n\tactiveCallsCount          int32 // Count of active RPCs; -math.MaxInt32 means channel is idle or is trying to get there.\n\tactiveSinceLastTimerCheck int32 // Boolean; True if there was an RPC since the last timer callback.\n\tclosed                    int32 // Boolean; True when the manager is closed.\n\n\t// Can be accessed without atomics or mutex since these are set at creation\n\t// time and read-only after that.\n\tenforcer Enforcer // Functionality provided by grpc.ClientConn.\n\ttimeout  int64    // Idle timeout duration nanos stored as an int64.\n\tlogger   grpclog.LoggerV2\n\n\t// idleMu is used to guarantee mutual exclusion in two scenarios:\n\t// - Opposing intentions:\n\t//   - a: Idle timeout has fired and handleIdleTimeout() is trying to put\n\t//     the channel in idle mode because the channel has been inactive.\n\t//   - b: At the same time an RPC is made on the channel, and OnCallBegin()\n\t//     is trying to prevent the channel from going idle.\n\t// - Competing intentions:\n\t//   - The channel is in idle mode and there are multiple RPCs starting at\n\t//     the same time, all trying to move the channel out of idle. Only one\n\t//     of them should succeed in doing so, while the other RPCs should\n\t//     piggyback on the first one and be successfully handled.\n\tidleMu       sync.RWMutex\n\tactuallyIdle bool\n\ttimer        *time.Timer\n}\n\n// ManagerOptions is a collection of options used by\n// NewManager.\ntype ManagerOptions struct {\n\tEnforcer Enforcer\n\tTimeout  time.Duration\n\tLogger   grpclog.LoggerV2\n}\n\n// NewManager creates a new idleness manager implementation for the\n// given idle timeout.\nfunc NewManager(opts ManagerOptions) Manager {\n\tif opts.Timeout == 0 {\n\t\treturn noopManager{}\n\t}\n\n\tm := &manager{\n\t\tenforcer: opts.Enforcer,\n\t\ttimeout:  int64(opts.Timeout),\n\t\tlogger:   opts.Logger,\n\t}\n\tm.timer = timeAfterFunc(opts.Timeout, m.handleIdleTimeout)\n\treturn m\n}\n\n// resetIdleTimer resets the idle timer to the given duration. This method\n// should only be called from the timer callback.\nfunc (m *manager) resetIdleTimer(d time.Duration) {\n\tm.idleMu.Lock()\n\tdefer m.idleMu.Unlock()\n\n\tif m.timer == nil {\n\t\t// Only close sets timer to nil. We are done.\n\t\treturn\n\t}\n\n\t// It is safe to ignore the return value from Reset() because this method is\n\t// only ever called from the timer callback, which means the timer has\n\t// already fired.\n\tm.timer.Reset(d)\n}\n\n// handleIdleTimeout is the timer callback that is invoked upon expiry of the\n// configured idle timeout. The channel is considered inactive if there are no\n// ongoing calls and no RPC activity since the last time the timer fired.\nfunc (m *manager) handleIdleTimeout() {\n\tif m.isClosed() {\n\t\treturn\n\t}\n\n\tif atomic.LoadInt32(&m.activeCallsCount) > 0 {\n\t\tm.resetIdleTimer(time.Duration(m.timeout))\n\t\treturn\n\t}\n\n\t// There has been activity on the channel since we last got here. Reset the\n\t// timer and return.\n\tif atomic.LoadInt32(&m.activeSinceLastTimerCheck) == 1 {\n\t\t// Set the timer to fire after a duration of idle timeout, calculated\n\t\t// from the time the most recent RPC completed.\n\t\tatomic.StoreInt32(&m.activeSinceLastTimerCheck, 0)\n\t\tm.resetIdleTimer(time.Duration(atomic.LoadInt64(&m.lastCallEndTime) + m.timeout - time.Now().UnixNano()))\n\t\treturn\n\t}\n\n\t// This CAS operation is extremely likely to succeed given that there has\n\t// been no activity since the last time we were here.  Setting the\n\t// activeCallsCount to -math.MaxInt32 indicates to OnCallBegin() that the\n\t// channel is either in idle mode or is trying to get there.\n\tif !atomic.CompareAndSwapInt32(&m.activeCallsCount, 0, -math.MaxInt32) {\n\t\t// This CAS operation can fail if an RPC started after we checked for\n\t\t// activity at the top of this method, or one was ongoing from before\n\t\t// the last time we were here. In both case, reset the timer and return.\n\t\tm.resetIdleTimer(time.Duration(m.timeout))\n\t\treturn\n\t}\n\n\t// Now that we've set the active calls count to -math.MaxInt32, it's time to\n\t// actually move to idle mode.\n\tif m.tryEnterIdleMode() {\n\t\t// Successfully entered idle mode. No timer needed until we exit idle.\n\t\treturn\n\t}\n\n\t// Failed to enter idle mode due to a concurrent RPC that kept the channel\n\t// active, or because of an error from the channel. Undo the attempt to\n\t// enter idle, and reset the timer to try again later.\n\tatomic.AddInt32(&m.activeCallsCount, math.MaxInt32)\n\tm.resetIdleTimer(time.Duration(m.timeout))\n}\n\n// tryEnterIdleMode instructs the channel to enter idle mode. But before\n// that, it performs a last minute check to ensure that no new RPC has come in,\n// making the channel active.\n//\n// Return value indicates whether or not the channel moved to idle mode.\n//\n// Holds idleMu which ensures mutual exclusion with exitIdleMode.\nfunc (m *manager) tryEnterIdleMode() bool {\n\tm.idleMu.Lock()\n\tdefer m.idleMu.Unlock()\n\n\tif atomic.LoadInt32(&m.activeCallsCount) != -math.MaxInt32 {\n\t\t// We raced and lost to a new RPC. Very rare, but stop entering idle.\n\t\treturn false\n\t}\n\tif atomic.LoadInt32(&m.activeSinceLastTimerCheck) == 1 {\n\t\t// An very short RPC could have come in (and also finished) after we\n\t\t// checked for calls count and activity in handleIdleTimeout(), but\n\t\t// before the CAS operation. So, we need to check for activity again.\n\t\treturn false\n\t}\n\n\t// No new RPCs have come in since we last set the active calls count value\n\t// -math.MaxInt32 in the timer callback. And since we have the lock, it is\n\t// safe to enter idle mode now.\n\tif err := m.enforcer.EnterIdleMode(); err != nil {\n\t\tm.logger.Errorf(\"Failed to enter idle mode: %v\", err)\n\t\treturn false\n\t}\n\n\t// Successfully entered idle mode.\n\tm.actuallyIdle = true\n\treturn true\n}\n\n// OnCallBegin is invoked at the start of every RPC.\nfunc (m *manager) OnCallBegin() error {\n\tif m.isClosed() {\n\t\treturn nil\n\t}\n\n\tif atomic.AddInt32(&m.activeCallsCount, 1) > 0 {\n\t\t// Channel is not idle now. Set the activity bit and allow the call.\n\t\tatomic.StoreInt32(&m.activeSinceLastTimerCheck, 1)\n\t\treturn nil\n\t}\n\n\t// Channel is either in idle mode or is in the process of moving to idle\n\t// mode. Attempt to exit idle mode to allow this RPC.\n\tif err := m.exitIdleMode(); err != nil {\n\t\t// Undo the increment to calls count, and return an error causing the\n\t\t// RPC to fail.\n\t\tatomic.AddInt32(&m.activeCallsCount, -1)\n\t\treturn err\n\t}\n\n\tatomic.StoreInt32(&m.activeSinceLastTimerCheck, 1)\n\treturn nil\n}\n\n// exitIdleMode instructs the channel to exit idle mode.\n//\n// Holds idleMu which ensures mutual exclusion with tryEnterIdleMode.\nfunc (m *manager) exitIdleMode() error {\n\tm.idleMu.Lock()\n\tdefer m.idleMu.Unlock()\n\n\tif !m.actuallyIdle {\n\t\t// This can happen in two scenarios:\n\t\t// - handleIdleTimeout() set the calls count to -math.MaxInt32 and called\n\t\t//   tryEnterIdleMode(). But before the latter could grab the lock, an RPC\n\t\t//   came in and OnCallBegin() noticed that the calls count is negative.\n\t\t// - Channel is in idle mode, and multiple new RPCs come in at the same\n\t\t//   time, all of them notice a negative calls count in OnCallBegin and get\n\t\t//   here. The first one to get the lock would got the channel to exit idle.\n\t\t//\n\t\t// Either way, nothing to do here.\n\t\treturn nil\n\t}\n\n\tif err := m.enforcer.ExitIdleMode(); err != nil {\n\t\treturn fmt.Errorf(\"channel failed to exit idle mode: %v\", err)\n\t}\n\n\t// Undo the idle entry process. This also respects any new RPC attempts.\n\tatomic.AddInt32(&m.activeCallsCount, math.MaxInt32)\n\tm.actuallyIdle = false\n\n\t// Start a new timer to fire after the configured idle timeout.\n\tm.timer = timeAfterFunc(time.Duration(m.timeout), m.handleIdleTimeout)\n\treturn nil\n}\n\n// OnCallEnd is invoked at the end of every RPC.\nfunc (m *manager) OnCallEnd() {\n\tif m.isClosed() {\n\t\treturn\n\t}\n\n\t// Record the time at which the most recent call finished.\n\tatomic.StoreInt64(&m.lastCallEndTime, time.Now().UnixNano())\n\n\t// Decrement the active calls count. This count can temporarily go negative\n\t// when the timer callback is in the process of moving the channel to idle\n\t// mode, but one or more RPCs come in and complete before the timer callback\n\t// can get done with the process of moving to idle mode.\n\tatomic.AddInt32(&m.activeCallsCount, -1)\n}\n\nfunc (m *manager) isClosed() bool {\n\treturn atomic.LoadInt32(&m.closed) == 1\n}\n\nfunc (m *manager) Close() {\n\tatomic.StoreInt32(&m.closed, 1)\n\n\tm.idleMu.Lock()\n\tm.timer.Stop()\n\tm.timer = nil\n\tm.idleMu.Unlock()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/internal.go",
    "content": "/*\n * Copyright 2016 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package internal contains gRPC-internal code, to avoid polluting\n// the godoc of the top-level grpc package.  It must not import any grpc\n// symbols to avoid circular dependencies.\npackage internal\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nvar (\n\t// WithHealthCheckFunc is set by dialoptions.go\n\tWithHealthCheckFunc any // func (HealthChecker) DialOption\n\t// HealthCheckFunc is used to provide client-side LB channel health checking\n\tHealthCheckFunc HealthChecker\n\t// BalancerUnregister is exported by package balancer to unregister a balancer.\n\tBalancerUnregister func(name string)\n\t// KeepaliveMinPingTime is the minimum ping interval.  This must be 10s by\n\t// default, but tests may wish to set it lower for convenience.\n\tKeepaliveMinPingTime = 10 * time.Second\n\t// KeepaliveMinServerPingTime is the minimum ping interval for servers.\n\t// This must be 1s by default, but tests may wish to set it lower for\n\t// convenience.\n\tKeepaliveMinServerPingTime = time.Second\n\t// ParseServiceConfig parses a JSON representation of the service config.\n\tParseServiceConfig any // func(string) *serviceconfig.ParseResult\n\t// EqualServiceConfigForTesting is for testing service config generation and\n\t// parsing. Both a and b should be returned by ParseServiceConfig.\n\t// This function compares the config without rawJSON stripped, in case the\n\t// there's difference in white space.\n\tEqualServiceConfigForTesting func(a, b serviceconfig.Config) bool\n\t// GetCertificateProviderBuilder returns the registered builder for the\n\t// given name. This is set by package certprovider for use from xDS\n\t// bootstrap code while parsing certificate provider configs in the\n\t// bootstrap file.\n\tGetCertificateProviderBuilder any // func(string) certprovider.Builder\n\t// GetXDSHandshakeInfoForTesting returns a pointer to the xds.HandshakeInfo\n\t// stored in the passed in attributes. This is set by\n\t// credentials/xds/xds.go.\n\tGetXDSHandshakeInfoForTesting any // func (*attributes.Attributes) *xds.HandshakeInfo\n\t// GetServerCredentials returns the transport credentials configured on a\n\t// gRPC server. An xDS-enabled server needs to know what type of credentials\n\t// is configured on the underlying gRPC server. This is set by server.go.\n\tGetServerCredentials any // func (*grpc.Server) credentials.TransportCredentials\n\t// CanonicalString returns the canonical string of the code defined here:\n\t// https://github.com/grpc/grpc/blob/master/doc/statuscodes.md.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tCanonicalString any // func (codes.Code) string\n\t// DrainServerTransports initiates a graceful close of existing connections\n\t// on a gRPC server accepted on the provided listener address. An\n\t// xDS-enabled server invokes this method on a grpc.Server when a particular\n\t// listener moves to \"not-serving\" mode.\n\tDrainServerTransports any // func(*grpc.Server, string)\n\t// AddGlobalServerOptions adds an array of ServerOption that will be\n\t// effective globally for newly created servers. The priority will be: 1.\n\t// user-provided; 2. this method; 3. default values.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tAddGlobalServerOptions any // func(opt ...ServerOption)\n\t// ClearGlobalServerOptions clears the array of extra ServerOption. This\n\t// method is useful in testing and benchmarking.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tClearGlobalServerOptions func()\n\t// AddGlobalDialOptions adds an array of DialOption that will be effective\n\t// globally for newly created client channels. The priority will be: 1.\n\t// user-provided; 2. this method; 3. default values.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tAddGlobalDialOptions any // func(opt ...DialOption)\n\t// DisableGlobalDialOptions returns a DialOption that prevents the\n\t// ClientConn from applying the global DialOptions (set via\n\t// AddGlobalDialOptions).\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tDisableGlobalDialOptions any // func() grpc.DialOption\n\t// ClearGlobalDialOptions clears the array of extra DialOption. This\n\t// method is useful in testing and benchmarking.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tClearGlobalDialOptions func()\n\t// JoinDialOptions combines the dial options passed as arguments into a\n\t// single dial option.\n\tJoinDialOptions any // func(...grpc.DialOption) grpc.DialOption\n\t// JoinServerOptions combines the server options passed as arguments into a\n\t// single server option.\n\tJoinServerOptions any // func(...grpc.ServerOption) grpc.ServerOption\n\n\t// WithBinaryLogger returns a DialOption that specifies the binary logger\n\t// for a ClientConn.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tWithBinaryLogger any // func(binarylog.Logger) grpc.DialOption\n\t// BinaryLogger returns a ServerOption that can set the binary logger for a\n\t// server.\n\t//\n\t// This is used in the 1.0 release of gcp/observability, and thus must not be\n\t// deleted or changed.\n\tBinaryLogger any // func(binarylog.Logger) grpc.ServerOption\n\n\t// SubscribeToConnectivityStateChanges adds a grpcsync.Subscriber to a provided grpc.ClientConn\n\tSubscribeToConnectivityStateChanges any // func(*grpc.ClientConn, grpcsync.Subscriber)\n\n\t// NewXDSResolverWithConfigForTesting creates a new xds resolver builder using\n\t// the provided xds bootstrap config instead of the global configuration from\n\t// the supported environment variables.  The resolver.Builder is meant to be\n\t// used in conjunction with the grpc.WithResolvers DialOption.\n\t//\n\t// Testing Only\n\t//\n\t// This function should ONLY be used for testing and may not work with some\n\t// other features, including the CSDS service.\n\tNewXDSResolverWithConfigForTesting any // func([]byte) (resolver.Builder, error)\n\n\t// RegisterRLSClusterSpecifierPluginForTesting registers the RLS Cluster\n\t// Specifier Plugin for testing purposes, regardless of the XDSRLS environment\n\t// variable.\n\t//\n\t// TODO: Remove this function once the RLS env var is removed.\n\tRegisterRLSClusterSpecifierPluginForTesting func()\n\n\t// UnregisterRLSClusterSpecifierPluginForTesting unregisters the RLS Cluster\n\t// Specifier Plugin for testing purposes. This is needed because there is no way\n\t// to unregister the RLS Cluster Specifier Plugin after registering it solely\n\t// for testing purposes using RegisterRLSClusterSpecifierPluginForTesting().\n\t//\n\t// TODO: Remove this function once the RLS env var is removed.\n\tUnregisterRLSClusterSpecifierPluginForTesting func()\n\n\t// RegisterRBACHTTPFilterForTesting registers the RBAC HTTP Filter for testing\n\t// purposes, regardless of the RBAC environment variable.\n\t//\n\t// TODO: Remove this function once the RBAC env var is removed.\n\tRegisterRBACHTTPFilterForTesting func()\n\n\t// UnregisterRBACHTTPFilterForTesting unregisters the RBAC HTTP Filter for\n\t// testing purposes. This is needed because there is no way to unregister the\n\t// HTTP Filter after registering it solely for testing purposes using\n\t// RegisterRBACHTTPFilterForTesting().\n\t//\n\t// TODO: Remove this function once the RBAC env var is removed.\n\tUnregisterRBACHTTPFilterForTesting func()\n\n\t// ORCAAllowAnyMinReportingInterval is for examples/orca use ONLY.\n\tORCAAllowAnyMinReportingInterval any // func(so *orca.ServiceOptions)\n\n\t// GRPCResolverSchemeExtraMetadata determines when gRPC will add extra\n\t// metadata to RPCs.\n\tGRPCResolverSchemeExtraMetadata string = \"xds\"\n\n\t// EnterIdleModeForTesting gets the ClientConn to enter IDLE mode.\n\tEnterIdleModeForTesting any // func(*grpc.ClientConn) error\n\n\t// ExitIdleModeForTesting gets the ClientConn to exit IDLE mode.\n\tExitIdleModeForTesting any // func(*grpc.ClientConn) error\n)\n\n// HealthChecker defines the signature of the client-side LB channel health checking function.\n//\n// The implementation is expected to create a health checking RPC stream by\n// calling newStream(), watch for the health status of serviceName, and report\n// it's health back by calling setConnectivityState().\n//\n// The health checking protocol is defined at:\n// https://github.com/grpc/grpc/blob/master/doc/health-checking.md\ntype HealthChecker func(ctx context.Context, newStream func(string) (any, error), setConnectivityState func(connectivity.State, error), serviceName string) error\n\nconst (\n\t// CredsBundleModeFallback switches GoogleDefaultCreds to fallback mode.\n\tCredsBundleModeFallback = \"fallback\"\n\t// CredsBundleModeBalancer switches GoogleDefaultCreds to grpclb balancer\n\t// mode.\n\tCredsBundleModeBalancer = \"balancer\"\n\t// CredsBundleModeBackendFromBalancer switches GoogleDefaultCreds to mode\n\t// that supports backend returned by grpclb balancer.\n\tCredsBundleModeBackendFromBalancer = \"backend-from-balancer\"\n)\n\n// RLSLoadBalancingPolicyName is the name of the RLS LB policy.\n//\n// It currently has an experimental suffix which would be removed once\n// end-to-end testing of the policy is completed.\nconst RLSLoadBalancingPolicyName = \"rls_experimental\"\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/metadata/metadata.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package metadata contains functions to set and get metadata from addresses.\n//\n// This package is experimental.\npackage metadata\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\ntype mdKeyType string\n\nconst mdKey = mdKeyType(\"grpc.internal.address.metadata\")\n\ntype mdValue metadata.MD\n\nfunc (m mdValue) Equal(o any) bool {\n\tom, ok := o.(mdValue)\n\tif !ok {\n\t\treturn false\n\t}\n\tif len(m) != len(om) {\n\t\treturn false\n\t}\n\tfor k, v := range m {\n\t\tov := om[k]\n\t\tif len(ov) != len(v) {\n\t\t\treturn false\n\t\t}\n\t\tfor i, ve := range v {\n\t\t\tif ov[i] != ve {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\n// Get returns the metadata of addr.\nfunc Get(addr resolver.Address) metadata.MD {\n\tattrs := addr.Attributes\n\tif attrs == nil {\n\t\treturn nil\n\t}\n\tmd, _ := attrs.Value(mdKey).(mdValue)\n\treturn metadata.MD(md)\n}\n\n// Set sets (overrides) the metadata in addr.\n//\n// When a SubConn is created with this address, the RPCs sent on it will all\n// have this metadata.\nfunc Set(addr resolver.Address, md metadata.MD) resolver.Address {\n\taddr.Attributes = addr.Attributes.WithValue(mdKey, mdValue(md))\n\treturn addr\n}\n\n// Validate validates every pair in md with ValidatePair.\nfunc Validate(md metadata.MD) error {\n\tfor k, vals := range md {\n\t\tif err := ValidatePair(k, vals...); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// hasNotPrintable return true if msg contains any characters which are not in %x20-%x7E\nfunc hasNotPrintable(msg string) bool {\n\t// for i that saving a conversion if not using for range\n\tfor i := 0; i < len(msg); i++ {\n\t\tif msg[i] < 0x20 || msg[i] > 0x7E {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ValidatePair validate a key-value pair with the following rules (the pseudo-header will be skipped) :\n//\n// - key must contain one or more characters.\n// - the characters in the key must be contained in [0-9 a-z _ - .].\n// - if the key ends with a \"-bin\" suffix, no validation of the corresponding value is performed.\n// - the characters in the every value must be printable (in [%x20-%x7E]).\nfunc ValidatePair(key string, vals ...string) error {\n\t// key should not be empty\n\tif key == \"\" {\n\t\treturn fmt.Errorf(\"there is an empty key in the header\")\n\t}\n\t// pseudo-header will be ignored\n\tif key[0] == ':' {\n\t\treturn nil\n\t}\n\t// check key, for i that saving a conversion if not using for range\n\tfor i := 0; i < len(key); i++ {\n\t\tr := key[i]\n\t\tif !(r >= 'a' && r <= 'z') && !(r >= '0' && r <= '9') && r != '.' && r != '-' && r != '_' {\n\t\t\treturn fmt.Errorf(\"header key %q contains illegal characters not in [0-9a-z-_.]\", key)\n\t\t}\n\t}\n\tif strings.HasSuffix(key, \"-bin\") {\n\t\treturn nil\n\t}\n\t// check value\n\tfor _, val := range vals {\n\t\tif hasNotPrintable(val) {\n\t\t\treturn fmt.Errorf(\"header key %q contains value with non-printable ASCII characters\", key)\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/pretty/pretty.go",
    "content": "/*\n *\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package pretty defines helper functions to pretty-print structs for logging.\npackage pretty\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/golang/protobuf/jsonpb\"\n\tprotov1 \"github.com/golang/protobuf/proto\"\n\t\"google.golang.org/protobuf/encoding/protojson\"\n\tprotov2 \"google.golang.org/protobuf/proto\"\n)\n\nconst jsonIndent = \"  \"\n\n// ToJSON marshals the input into a json string.\n//\n// If marshal fails, it falls back to fmt.Sprintf(\"%+v\").\nfunc ToJSON(e any) string {\n\tswitch ee := e.(type) {\n\tcase protov1.Message:\n\t\tmm := jsonpb.Marshaler{Indent: jsonIndent}\n\t\tret, err := mm.MarshalToString(ee)\n\t\tif err != nil {\n\t\t\t// This may fail for proto.Anys, e.g. for xDS v2, LDS, the v2\n\t\t\t// messages are not imported, and this will fail because the message\n\t\t\t// is not found.\n\t\t\treturn fmt.Sprintf(\"%+v\", ee)\n\t\t}\n\t\treturn ret\n\tcase protov2.Message:\n\t\tmm := protojson.MarshalOptions{\n\t\t\tMultiline: true,\n\t\t\tIndent:    jsonIndent,\n\t\t}\n\t\tret, err := mm.Marshal(ee)\n\t\tif err != nil {\n\t\t\t// This may fail for proto.Anys, e.g. for xDS v2, LDS, the v2\n\t\t\t// messages are not imported, and this will fail because the message\n\t\t\t// is not found.\n\t\t\treturn fmt.Sprintf(\"%+v\", ee)\n\t\t}\n\t\treturn string(ret)\n\tdefault:\n\t\tret, err := json.MarshalIndent(ee, \"\", jsonIndent)\n\t\tif err != nil {\n\t\t\treturn fmt.Sprintf(\"%+v\", ee)\n\t\t}\n\t\treturn string(ret)\n\t}\n}\n\n// FormatJSON formats the input json bytes with indentation.\n//\n// If Indent fails, it returns the unchanged input as string.\nfunc FormatJSON(b []byte) string {\n\tvar out bytes.Buffer\n\terr := json.Indent(&out, b, \"\", jsonIndent)\n\tif err != nil {\n\t\treturn string(b)\n\t}\n\treturn out.String()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/resolver/config_selector.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package resolver provides internal resolver-related functionality.\npackage resolver\n\nimport (\n\t\"context\"\n\t\"sync\"\n\n\t\"google.golang.org/grpc/internal/serviceconfig\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// ConfigSelector controls what configuration to use for every RPC.\ntype ConfigSelector interface {\n\t// Selects the configuration for the RPC, or terminates it using the error.\n\t// This error will be converted by the gRPC library to a status error with\n\t// code UNKNOWN if it is not returned as a status error.\n\tSelectConfig(RPCInfo) (*RPCConfig, error)\n}\n\n// RPCInfo contains RPC information needed by a ConfigSelector.\ntype RPCInfo struct {\n\t// Context is the user's context for the RPC and contains headers and\n\t// application timeout.  It is passed for interception purposes and for\n\t// efficiency reasons.  SelectConfig should not be blocking.\n\tContext context.Context\n\tMethod  string // i.e. \"/Service/Method\"\n}\n\n// RPCConfig describes the configuration to use for each RPC.\ntype RPCConfig struct {\n\t// The context to use for the remainder of the RPC; can pass info to LB\n\t// policy or affect timeout or metadata.\n\tContext      context.Context\n\tMethodConfig serviceconfig.MethodConfig // configuration to use for this RPC\n\tOnCommitted  func()                     // Called when the RPC has been committed (retries no longer possible)\n\tInterceptor  ClientInterceptor\n}\n\n// ClientStream is the same as grpc.ClientStream, but defined here for circular\n// dependency reasons.\ntype ClientStream interface {\n\t// Header returns the header metadata received from the server if there\n\t// is any. It blocks if the metadata is not ready to read.\n\tHeader() (metadata.MD, error)\n\t// Trailer returns the trailer metadata from the server, if there is any.\n\t// It must only be called after stream.CloseAndRecv has returned, or\n\t// stream.Recv has returned a non-nil error (including io.EOF).\n\tTrailer() metadata.MD\n\t// CloseSend closes the send direction of the stream. It closes the stream\n\t// when non-nil error is met. It is also not safe to call CloseSend\n\t// concurrently with SendMsg.\n\tCloseSend() error\n\t// Context returns the context for this stream.\n\t//\n\t// It should not be called until after Header or RecvMsg has returned. Once\n\t// called, subsequent client-side retries are disabled.\n\tContext() context.Context\n\t// SendMsg is generally called by generated code. On error, SendMsg aborts\n\t// the stream. If the error was generated by the client, the status is\n\t// returned directly; otherwise, io.EOF is returned and the status of\n\t// the stream may be discovered using RecvMsg.\n\t//\n\t// SendMsg blocks until:\n\t//   - There is sufficient flow control to schedule m with the transport, or\n\t//   - The stream is done, or\n\t//   - The stream breaks.\n\t//\n\t// SendMsg does not wait until the message is received by the server. An\n\t// untimely stream closure may result in lost messages. To ensure delivery,\n\t// users should ensure the RPC completed successfully using RecvMsg.\n\t//\n\t// It is safe to have a goroutine calling SendMsg and another goroutine\n\t// calling RecvMsg on the same stream at the same time, but it is not safe\n\t// to call SendMsg on the same stream in different goroutines. It is also\n\t// not safe to call CloseSend concurrently with SendMsg.\n\tSendMsg(m any) error\n\t// RecvMsg blocks until it receives a message into m or the stream is\n\t// done. It returns io.EOF when the stream completes successfully. On\n\t// any other error, the stream is aborted and the error contains the RPC\n\t// status.\n\t//\n\t// It is safe to have a goroutine calling SendMsg and another goroutine\n\t// calling RecvMsg on the same stream at the same time, but it is not\n\t// safe to call RecvMsg on the same stream in different goroutines.\n\tRecvMsg(m any) error\n}\n\n// ClientInterceptor is an interceptor for gRPC client streams.\ntype ClientInterceptor interface {\n\t// NewStream produces a ClientStream for an RPC which may optionally use\n\t// the provided function to produce a stream for delegation.  Note:\n\t// RPCInfo.Context should not be used (will be nil).\n\t//\n\t// done is invoked when the RPC is finished using its connection, or could\n\t// not be assigned a connection.  RPC operations may still occur on\n\t// ClientStream after done is called, since the interceptor is invoked by\n\t// application-layer operations.  done must never be nil when called.\n\tNewStream(ctx context.Context, ri RPCInfo, done func(), newStream func(ctx context.Context, done func()) (ClientStream, error)) (ClientStream, error)\n}\n\n// ServerInterceptor is an interceptor for incoming RPC's on gRPC server side.\ntype ServerInterceptor interface {\n\t// AllowRPC checks if an incoming RPC is allowed to proceed based on\n\t// information about connection RPC was received on, and HTTP Headers. This\n\t// information will be piped into context.\n\tAllowRPC(ctx context.Context) error // TODO: Make this a real interceptor for filters such as rate limiting.\n}\n\ntype csKeyType string\n\nconst csKey = csKeyType(\"grpc.internal.resolver.configSelector\")\n\n// SetConfigSelector sets the config selector in state and returns the new\n// state.\nfunc SetConfigSelector(state resolver.State, cs ConfigSelector) resolver.State {\n\tstate.Attributes = state.Attributes.WithValue(csKey, cs)\n\treturn state\n}\n\n// GetConfigSelector retrieves the config selector from state, if present, and\n// returns it or nil if absent.\nfunc GetConfigSelector(state resolver.State) ConfigSelector {\n\tcs, _ := state.Attributes.Value(csKey).(ConfigSelector)\n\treturn cs\n}\n\n// SafeConfigSelector allows for safe switching of ConfigSelector\n// implementations such that previous values are guaranteed to not be in use\n// when UpdateConfigSelector returns.\ntype SafeConfigSelector struct {\n\tmu sync.RWMutex\n\tcs ConfigSelector\n}\n\n// UpdateConfigSelector swaps to the provided ConfigSelector and blocks until\n// all uses of the previous ConfigSelector have completed.\nfunc (scs *SafeConfigSelector) UpdateConfigSelector(cs ConfigSelector) {\n\tscs.mu.Lock()\n\tdefer scs.mu.Unlock()\n\tscs.cs = cs\n}\n\n// SelectConfig defers to the current ConfigSelector in scs.\nfunc (scs *SafeConfigSelector) SelectConfig(r RPCInfo) (*RPCConfig, error) {\n\tscs.mu.RLock()\n\tdefer scs.mu.RUnlock()\n\treturn scs.cs.SelectConfig(r)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package dns implements a dns resolver to be installed as the default resolver\n// in grpc.\npackage dns\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\tgrpclbstate \"google.golang.org/grpc/balancer/grpclb/state\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/internal/backoff\"\n\t\"google.golang.org/grpc/internal/envconfig\"\n\t\"google.golang.org/grpc/internal/grpcrand\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\n// EnableSRVLookups controls whether the DNS resolver attempts to fetch gRPCLB\n// addresses from SRV records.  Must not be changed after init time.\nvar EnableSRVLookups = false\n\nvar logger = grpclog.Component(\"dns\")\n\n// Globals to stub out in tests. TODO: Perhaps these two can be combined into a\n// single variable for testing the resolver?\nvar (\n\tnewTimer           = time.NewTimer\n\tnewTimerDNSResRate = time.NewTimer\n)\n\nfunc init() {\n\tresolver.Register(NewBuilder())\n}\n\nconst (\n\tdefaultPort       = \"443\"\n\tdefaultDNSSvrPort = \"53\"\n\tgolang            = \"GO\"\n\t// txtPrefix is the prefix string to be prepended to the host name for txt\n\t// record lookup.\n\ttxtPrefix = \"_grpc_config.\"\n\t// In DNS, service config is encoded in a TXT record via the mechanism\n\t// described in RFC-1464 using the attribute name grpc_config.\n\ttxtAttribute = \"grpc_config=\"\n)\n\nvar (\n\terrMissingAddr = errors.New(\"dns resolver: missing address\")\n\n\t// Addresses ending with a colon that is supposed to be the separator\n\t// between host and port is not allowed.  E.g. \"::\" is a valid address as\n\t// it is an IPv6 address (host only) and \"[::]:\" is invalid as it ends with\n\t// a colon as the host and port separator\n\terrEndsWithColon = errors.New(\"dns resolver: missing port after port-separator colon\")\n)\n\nvar (\n\tdefaultResolver netResolver = net.DefaultResolver\n\t// To prevent excessive re-resolution, we enforce a rate limit on DNS\n\t// resolution requests.\n\tminDNSResRate = 30 * time.Second\n)\n\nvar addressDialer = func(address string) func(context.Context, string, string) (net.Conn, error) {\n\treturn func(ctx context.Context, network, _ string) (net.Conn, error) {\n\t\tvar dialer net.Dialer\n\t\treturn dialer.DialContext(ctx, network, address)\n\t}\n}\n\nvar newNetResolver = func(authority string) (netResolver, error) {\n\thost, port, err := parseTarget(authority, defaultDNSSvrPort)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tauthorityWithPort := net.JoinHostPort(host, port)\n\n\treturn &net.Resolver{\n\t\tPreferGo: true,\n\t\tDial:     addressDialer(authorityWithPort),\n\t}, nil\n}\n\n// NewBuilder creates a dnsBuilder which is used to factory DNS resolvers.\nfunc NewBuilder() resolver.Builder {\n\treturn &dnsBuilder{}\n}\n\ntype dnsBuilder struct{}\n\n// Build creates and starts a DNS resolver that watches the name resolution of\n// the target.\nfunc (b *dnsBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) {\n\thost, port, err := parseTarget(target.Endpoint(), defaultPort)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// IP address.\n\tif ipAddr, ok := formatIP(host); ok {\n\t\taddr := []resolver.Address{{Addr: ipAddr + \":\" + port}}\n\t\tcc.UpdateState(resolver.State{Addresses: addr})\n\t\treturn deadResolver{}, nil\n\t}\n\n\t// DNS address (non-IP).\n\tctx, cancel := context.WithCancel(context.Background())\n\td := &dnsResolver{\n\t\thost:                 host,\n\t\tport:                 port,\n\t\tctx:                  ctx,\n\t\tcancel:               cancel,\n\t\tcc:                   cc,\n\t\trn:                   make(chan struct{}, 1),\n\t\tdisableServiceConfig: opts.DisableServiceConfig,\n\t}\n\n\tif target.URL.Host == \"\" {\n\t\td.resolver = defaultResolver\n\t} else {\n\t\td.resolver, err = newNetResolver(target.URL.Host)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\td.wg.Add(1)\n\tgo d.watcher()\n\treturn d, nil\n}\n\n// Scheme returns the naming scheme of this resolver builder, which is \"dns\".\nfunc (b *dnsBuilder) Scheme() string {\n\treturn \"dns\"\n}\n\ntype netResolver interface {\n\tLookupHost(ctx context.Context, host string) (addrs []string, err error)\n\tLookupSRV(ctx context.Context, service, proto, name string) (cname string, addrs []*net.SRV, err error)\n\tLookupTXT(ctx context.Context, name string) (txts []string, err error)\n}\n\n// deadResolver is a resolver that does nothing.\ntype deadResolver struct{}\n\nfunc (deadResolver) ResolveNow(resolver.ResolveNowOptions) {}\n\nfunc (deadResolver) Close() {}\n\n// dnsResolver watches for the name resolution update for a non-IP target.\ntype dnsResolver struct {\n\thost     string\n\tport     string\n\tresolver netResolver\n\tctx      context.Context\n\tcancel   context.CancelFunc\n\tcc       resolver.ClientConn\n\t// rn channel is used by ResolveNow() to force an immediate resolution of the\n\t// target.\n\trn chan struct{}\n\t// wg is used to enforce Close() to return after the watcher() goroutine has\n\t// finished. Otherwise, data race will be possible. [Race Example] in\n\t// dns_resolver_test we replace the real lookup functions with mocked ones to\n\t// facilitate testing. If Close() doesn't wait for watcher() goroutine\n\t// finishes, race detector sometimes will warns lookup (READ the lookup\n\t// function pointers) inside watcher() goroutine has data race with\n\t// replaceNetFunc (WRITE the lookup function pointers).\n\twg                   sync.WaitGroup\n\tdisableServiceConfig bool\n}\n\n// ResolveNow invoke an immediate resolution of the target that this\n// dnsResolver watches.\nfunc (d *dnsResolver) ResolveNow(resolver.ResolveNowOptions) {\n\tselect {\n\tcase d.rn <- struct{}{}:\n\tdefault:\n\t}\n}\n\n// Close closes the dnsResolver.\nfunc (d *dnsResolver) Close() {\n\td.cancel()\n\td.wg.Wait()\n}\n\nfunc (d *dnsResolver) watcher() {\n\tdefer d.wg.Done()\n\tbackoffIndex := 1\n\tfor {\n\t\tstate, err := d.lookup()\n\t\tif err != nil {\n\t\t\t// Report error to the underlying grpc.ClientConn.\n\t\t\td.cc.ReportError(err)\n\t\t} else {\n\t\t\terr = d.cc.UpdateState(*state)\n\t\t}\n\n\t\tvar timer *time.Timer\n\t\tif err == nil {\n\t\t\t// Success resolving, wait for the next ResolveNow. However, also wait 30\n\t\t\t// seconds at the very least to prevent constantly re-resolving.\n\t\t\tbackoffIndex = 1\n\t\t\ttimer = newTimerDNSResRate(minDNSResRate)\n\t\t\tselect {\n\t\t\tcase <-d.ctx.Done():\n\t\t\t\ttimer.Stop()\n\t\t\t\treturn\n\t\t\tcase <-d.rn:\n\t\t\t}\n\t\t} else {\n\t\t\t// Poll on an error found in DNS Resolver or an error received from\n\t\t\t// ClientConn.\n\t\t\ttimer = newTimer(backoff.DefaultExponential.Backoff(backoffIndex))\n\t\t\tbackoffIndex++\n\t\t}\n\t\tselect {\n\t\tcase <-d.ctx.Done():\n\t\t\ttimer.Stop()\n\t\t\treturn\n\t\tcase <-timer.C:\n\t\t}\n\t}\n}\n\nfunc (d *dnsResolver) lookupSRV() ([]resolver.Address, error) {\n\tif !EnableSRVLookups {\n\t\treturn nil, nil\n\t}\n\tvar newAddrs []resolver.Address\n\t_, srvs, err := d.resolver.LookupSRV(d.ctx, \"grpclb\", \"tcp\", d.host)\n\tif err != nil {\n\t\terr = handleDNSError(err, \"SRV\") // may become nil\n\t\treturn nil, err\n\t}\n\tfor _, s := range srvs {\n\t\tlbAddrs, err := d.resolver.LookupHost(d.ctx, s.Target)\n\t\tif err != nil {\n\t\t\terr = handleDNSError(err, \"A\") // may become nil\n\t\t\tif err == nil {\n\t\t\t\t// If there are other SRV records, look them up and ignore this\n\t\t\t\t// one that does not exist.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, a := range lbAddrs {\n\t\t\tip, ok := formatIP(a)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"dns: error parsing A record IP address %v\", a)\n\t\t\t}\n\t\t\taddr := ip + \":\" + strconv.Itoa(int(s.Port))\n\t\t\tnewAddrs = append(newAddrs, resolver.Address{Addr: addr, ServerName: s.Target})\n\t\t}\n\t}\n\treturn newAddrs, nil\n}\n\nfunc handleDNSError(err error, lookupType string) error {\n\tdnsErr, ok := err.(*net.DNSError)\n\tif ok && !dnsErr.IsTimeout && !dnsErr.IsTemporary {\n\t\t// Timeouts and temporary errors should be communicated to gRPC to\n\t\t// attempt another DNS query (with backoff).  Other errors should be\n\t\t// suppressed (they may represent the absence of a TXT record).\n\t\treturn nil\n\t}\n\tif err != nil {\n\t\terr = fmt.Errorf(\"dns: %v record lookup error: %v\", lookupType, err)\n\t\tlogger.Info(err)\n\t}\n\treturn err\n}\n\nfunc (d *dnsResolver) lookupTXT() *serviceconfig.ParseResult {\n\tss, err := d.resolver.LookupTXT(d.ctx, txtPrefix+d.host)\n\tif err != nil {\n\t\tif envconfig.TXTErrIgnore {\n\t\t\treturn nil\n\t\t}\n\t\tif err = handleDNSError(err, \"TXT\"); err != nil {\n\t\t\treturn &serviceconfig.ParseResult{Err: err}\n\t\t}\n\t\treturn nil\n\t}\n\tvar res string\n\tfor _, s := range ss {\n\t\tres += s\n\t}\n\n\t// TXT record must have \"grpc_config=\" attribute in order to be used as\n\t// service config.\n\tif !strings.HasPrefix(res, txtAttribute) {\n\t\tlogger.Warningf(\"dns: TXT record %v missing %v attribute\", res, txtAttribute)\n\t\t// This is not an error; it is the equivalent of not having a service\n\t\t// config.\n\t\treturn nil\n\t}\n\tsc := canaryingSC(strings.TrimPrefix(res, txtAttribute))\n\treturn d.cc.ParseServiceConfig(sc)\n}\n\nfunc (d *dnsResolver) lookupHost() ([]resolver.Address, error) {\n\taddrs, err := d.resolver.LookupHost(d.ctx, d.host)\n\tif err != nil {\n\t\terr = handleDNSError(err, \"A\")\n\t\treturn nil, err\n\t}\n\tnewAddrs := make([]resolver.Address, 0, len(addrs))\n\tfor _, a := range addrs {\n\t\tip, ok := formatIP(a)\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"dns: error parsing A record IP address %v\", a)\n\t\t}\n\t\taddr := ip + \":\" + d.port\n\t\tnewAddrs = append(newAddrs, resolver.Address{Addr: addr})\n\t}\n\treturn newAddrs, nil\n}\n\nfunc (d *dnsResolver) lookup() (*resolver.State, error) {\n\tsrv, srvErr := d.lookupSRV()\n\taddrs, hostErr := d.lookupHost()\n\tif hostErr != nil && (srvErr != nil || len(srv) == 0) {\n\t\treturn nil, hostErr\n\t}\n\n\tstate := resolver.State{Addresses: addrs}\n\tif len(srv) > 0 {\n\t\tstate = grpclbstate.Set(state, &grpclbstate.State{BalancerAddresses: srv})\n\t}\n\tif !d.disableServiceConfig {\n\t\tstate.ServiceConfig = d.lookupTXT()\n\t}\n\treturn &state, nil\n}\n\n// formatIP returns ok = false if addr is not a valid textual representation of\n// an IP address. If addr is an IPv4 address, return the addr and ok = true.\n// If addr is an IPv6 address, return the addr enclosed in square brackets and\n// ok = true.\nfunc formatIP(addr string) (addrIP string, ok bool) {\n\tip := net.ParseIP(addr)\n\tif ip == nil {\n\t\treturn \"\", false\n\t}\n\tif ip.To4() != nil {\n\t\treturn addr, true\n\t}\n\treturn \"[\" + addr + \"]\", true\n}\n\n// parseTarget takes the user input target string and default port, returns\n// formatted host and port info. If target doesn't specify a port, set the port\n// to be the defaultPort. If target is in IPv6 format and host-name is enclosed\n// in square brackets, brackets are stripped when setting the host.\n// examples:\n// target: \"www.google.com\" defaultPort: \"443\" returns host: \"www.google.com\", port: \"443\"\n// target: \"ipv4-host:80\" defaultPort: \"443\" returns host: \"ipv4-host\", port: \"80\"\n// target: \"[ipv6-host]\" defaultPort: \"443\" returns host: \"ipv6-host\", port: \"443\"\n// target: \":80\" defaultPort: \"443\" returns host: \"localhost\", port: \"80\"\nfunc parseTarget(target, defaultPort string) (host, port string, err error) {\n\tif target == \"\" {\n\t\treturn \"\", \"\", errMissingAddr\n\t}\n\tif ip := net.ParseIP(target); ip != nil {\n\t\t// target is an IPv4 or IPv6(without brackets) address\n\t\treturn target, defaultPort, nil\n\t}\n\tif host, port, err = net.SplitHostPort(target); err == nil {\n\t\tif port == \"\" {\n\t\t\t// If the port field is empty (target ends with colon), e.g. \"[::1]:\",\n\t\t\t// this is an error.\n\t\t\treturn \"\", \"\", errEndsWithColon\n\t\t}\n\t\t// target has port, i.e ipv4-host:port, [ipv6-host]:port, host-name:port\n\t\tif host == \"\" {\n\t\t\t// Keep consistent with net.Dial(): If the host is empty, as in \":80\",\n\t\t\t// the local system is assumed.\n\t\t\thost = \"localhost\"\n\t\t}\n\t\treturn host, port, nil\n\t}\n\tif host, port, err = net.SplitHostPort(target + \":\" + defaultPort); err == nil {\n\t\t// target doesn't have port\n\t\treturn host, port, nil\n\t}\n\treturn \"\", \"\", fmt.Errorf(\"invalid target address %v, error info: %v\", target, err)\n}\n\ntype rawChoice struct {\n\tClientLanguage *[]string        `json:\"clientLanguage,omitempty\"`\n\tPercentage     *int             `json:\"percentage,omitempty\"`\n\tClientHostName *[]string        `json:\"clientHostName,omitempty\"`\n\tServiceConfig  *json.RawMessage `json:\"serviceConfig,omitempty\"`\n}\n\nfunc containsString(a *[]string, b string) bool {\n\tif a == nil {\n\t\treturn true\n\t}\n\tfor _, c := range *a {\n\t\tif c == b {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc chosenByPercentage(a *int) bool {\n\tif a == nil {\n\t\treturn true\n\t}\n\treturn grpcrand.Intn(100)+1 <= *a\n}\n\nfunc canaryingSC(js string) string {\n\tif js == \"\" {\n\t\treturn \"\"\n\t}\n\tvar rcs []rawChoice\n\terr := json.Unmarshal([]byte(js), &rcs)\n\tif err != nil {\n\t\tlogger.Warningf(\"dns: error parsing service config json: %v\", err)\n\t\treturn \"\"\n\t}\n\tcliHostname, err := os.Hostname()\n\tif err != nil {\n\t\tlogger.Warningf(\"dns: error getting client hostname: %v\", err)\n\t\treturn \"\"\n\t}\n\tvar sc string\n\tfor _, c := range rcs {\n\t\tif !containsString(c.ClientLanguage, golang) ||\n\t\t\t!chosenByPercentage(c.Percentage) ||\n\t\t\t!containsString(c.ClientHostName, cliHostname) ||\n\t\t\tc.ServiceConfig == nil {\n\t\t\tcontinue\n\t\t}\n\t\tsc = string(*c.ServiceConfig)\n\t\tbreak\n\t}\n\treturn sc\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package passthrough implements a pass-through resolver. It sends the target\n// name without scheme back to gRPC as resolved address.\npackage passthrough\n\nimport (\n\t\"errors\"\n\n\t\"google.golang.org/grpc/resolver\"\n)\n\nconst scheme = \"passthrough\"\n\ntype passthroughBuilder struct{}\n\nfunc (*passthroughBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) {\n\tif target.Endpoint() == \"\" && opts.Dialer == nil {\n\t\treturn nil, errors.New(\"passthrough: received empty target in Build()\")\n\t}\n\tr := &passthroughResolver{\n\t\ttarget: target,\n\t\tcc:     cc,\n\t}\n\tr.start()\n\treturn r, nil\n}\n\nfunc (*passthroughBuilder) Scheme() string {\n\treturn scheme\n}\n\ntype passthroughResolver struct {\n\ttarget resolver.Target\n\tcc     resolver.ClientConn\n}\n\nfunc (r *passthroughResolver) start() {\n\tr.cc.UpdateState(resolver.State{Addresses: []resolver.Address{{Addr: r.target.Endpoint()}}})\n}\n\nfunc (*passthroughResolver) ResolveNow(o resolver.ResolveNowOptions) {}\n\nfunc (*passthroughResolver) Close() {}\n\nfunc init() {\n\tresolver.Register(&passthroughBuilder{})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/resolver/unix/unix.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package unix implements a resolver for unix targets.\npackage unix\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/internal/transport/networktype\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\nconst unixScheme = \"unix\"\nconst unixAbstractScheme = \"unix-abstract\"\n\ntype builder struct {\n\tscheme string\n}\n\nfunc (b *builder) Build(target resolver.Target, cc resolver.ClientConn, _ resolver.BuildOptions) (resolver.Resolver, error) {\n\tif target.URL.Host != \"\" {\n\t\treturn nil, fmt.Errorf(\"invalid (non-empty) authority: %v\", target.URL.Host)\n\t}\n\n\t// gRPC was parsing the dial target manually before PR #4817, and we\n\t// switched to using url.Parse() in that PR. To avoid breaking existing\n\t// resolver implementations we ended up stripping the leading \"/\" from the\n\t// endpoint. This obviously does not work for the \"unix\" scheme. Hence we\n\t// end up using the parsed URL instead.\n\tendpoint := target.URL.Path\n\tif endpoint == \"\" {\n\t\tendpoint = target.URL.Opaque\n\t}\n\taddr := resolver.Address{Addr: endpoint}\n\tif b.scheme == unixAbstractScheme {\n\t\t// We can not prepend \\0 as c++ gRPC does, as in Golang '@' is used to signify we do\n\t\t// not want trailing \\0 in address.\n\t\taddr.Addr = \"@\" + addr.Addr\n\t}\n\tcc.UpdateState(resolver.State{Addresses: []resolver.Address{networktype.Set(addr, \"unix\")}})\n\treturn &nopResolver{}, nil\n}\n\nfunc (b *builder) Scheme() string {\n\treturn b.scheme\n}\n\ntype nopResolver struct {\n}\n\nfunc (*nopResolver) ResolveNow(resolver.ResolveNowOptions) {}\n\nfunc (*nopResolver) Close() {}\n\nfunc init() {\n\tresolver.Register(&builder{scheme: unixScheme})\n\tresolver.Register(&builder{scheme: unixAbstractScheme})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/serviceconfig/duration.go",
    "content": "/*\n *\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage serviceconfig\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// Duration defines JSON marshal and unmarshal methods to conform to the\n// protobuf JSON spec defined [here].\n//\n// [here]: https://protobuf.dev/reference/protobuf/google.protobuf/#duration\ntype Duration time.Duration\n\nfunc (d Duration) String() string {\n\treturn fmt.Sprint(time.Duration(d))\n}\n\n// MarshalJSON converts from d to a JSON string output.\nfunc (d Duration) MarshalJSON() ([]byte, error) {\n\tns := time.Duration(d).Nanoseconds()\n\tsec := ns / int64(time.Second)\n\tns = ns % int64(time.Second)\n\n\tvar sign string\n\tif sec < 0 || ns < 0 {\n\t\tsign, sec, ns = \"-\", -1*sec, -1*ns\n\t}\n\n\t// Generated output always contains 0, 3, 6, or 9 fractional digits,\n\t// depending on required precision.\n\tstr := fmt.Sprintf(\"%s%d.%09d\", sign, sec, ns)\n\tstr = strings.TrimSuffix(str, \"000\")\n\tstr = strings.TrimSuffix(str, \"000\")\n\tstr = strings.TrimSuffix(str, \".000\")\n\treturn []byte(fmt.Sprintf(\"\\\"%ss\\\"\", str)), nil\n}\n\n// UnmarshalJSON unmarshals b as a duration JSON string into d.\nfunc (d *Duration) UnmarshalJSON(b []byte) error {\n\tvar s string\n\tif err := json.Unmarshal(b, &s); err != nil {\n\t\treturn err\n\t}\n\tif !strings.HasSuffix(s, \"s\") {\n\t\treturn fmt.Errorf(\"malformed duration %q: missing seconds unit\", s)\n\t}\n\tneg := false\n\tif s[0] == '-' {\n\t\tneg = true\n\t\ts = s[1:]\n\t}\n\tss := strings.SplitN(s[:len(s)-1], \".\", 3)\n\tif len(ss) > 2 {\n\t\treturn fmt.Errorf(\"malformed duration %q: too many decimals\", s)\n\t}\n\t// hasDigits is set if either the whole or fractional part of the number is\n\t// present, since both are optional but one is required.\n\thasDigits := false\n\tvar sec, ns int64\n\tif len(ss[0]) > 0 {\n\t\tvar err error\n\t\tif sec, err = strconv.ParseInt(ss[0], 10, 64); err != nil {\n\t\t\treturn fmt.Errorf(\"malformed duration %q: %v\", s, err)\n\t\t}\n\t\t// Maximum seconds value per the durationpb spec.\n\t\tconst maxProtoSeconds = 315_576_000_000\n\t\tif sec > maxProtoSeconds {\n\t\t\treturn fmt.Errorf(\"out of range: %q\", s)\n\t\t}\n\t\thasDigits = true\n\t}\n\tif len(ss) == 2 && len(ss[1]) > 0 {\n\t\tif len(ss[1]) > 9 {\n\t\t\treturn fmt.Errorf(\"malformed duration %q: too many digits after decimal\", s)\n\t\t}\n\t\tvar err error\n\t\tif ns, err = strconv.ParseInt(ss[1], 10, 64); err != nil {\n\t\t\treturn fmt.Errorf(\"malformed duration %q: %v\", s, err)\n\t\t}\n\t\tfor i := 9; i > len(ss[1]); i-- {\n\t\t\tns *= 10\n\t\t}\n\t\thasDigits = true\n\t}\n\tif !hasDigits {\n\t\treturn fmt.Errorf(\"malformed duration %q: contains no numbers\", s)\n\t}\n\n\tif neg {\n\t\tsec *= -1\n\t\tns *= -1\n\t}\n\n\t// Maximum/minimum seconds/nanoseconds representable by Go's time.Duration.\n\tconst maxSeconds = math.MaxInt64 / int64(time.Second)\n\tconst maxNanosAtMaxSeconds = math.MaxInt64 % int64(time.Second)\n\tconst minSeconds = math.MinInt64 / int64(time.Second)\n\tconst minNanosAtMinSeconds = math.MinInt64 % int64(time.Second)\n\n\tif sec > maxSeconds || (sec == maxSeconds && ns >= maxNanosAtMaxSeconds) {\n\t\t*d = Duration(math.MaxInt64)\n\t} else if sec < minSeconds || (sec == minSeconds && ns <= minNanosAtMinSeconds) {\n\t\t*d = Duration(math.MinInt64)\n\t} else {\n\t\t*d = Duration(sec*int64(time.Second) + ns)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package serviceconfig contains utility functions to parse service config.\npackage serviceconfig\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/grpclog\"\n\texternalserviceconfig \"google.golang.org/grpc/serviceconfig\"\n)\n\nvar logger = grpclog.Component(\"core\")\n\n// BalancerConfig wraps the name and config associated with one load balancing\n// policy. It corresponds to a single entry of the loadBalancingConfig field\n// from ServiceConfig.\n//\n// It implements the json.Unmarshaler interface.\n//\n// https://github.com/grpc/grpc-proto/blob/54713b1e8bc6ed2d4f25fb4dff527842150b91b2/grpc/service_config/service_config.proto#L247\ntype BalancerConfig struct {\n\tName   string\n\tConfig externalserviceconfig.LoadBalancingConfig\n}\n\ntype intermediateBalancerConfig []map[string]json.RawMessage\n\n// MarshalJSON implements the json.Marshaler interface.\n//\n// It marshals the balancer and config into a length-1 slice\n// ([]map[string]config).\nfunc (bc *BalancerConfig) MarshalJSON() ([]byte, error) {\n\tif bc.Config == nil {\n\t\t// If config is nil, return empty config `{}`.\n\t\treturn []byte(fmt.Sprintf(`[{%q: %v}]`, bc.Name, \"{}\")), nil\n\t}\n\tc, err := json.Marshal(bc.Config)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn []byte(fmt.Sprintf(`[{%q: %s}]`, bc.Name, c)), nil\n}\n\n// UnmarshalJSON implements the json.Unmarshaler interface.\n//\n// ServiceConfig contains a list of loadBalancingConfigs, each with a name and\n// config. This method iterates through that list in order, and stops at the\n// first policy that is supported.\n//   - If the config for the first supported policy is invalid, the whole service\n//     config is invalid.\n//   - If the list doesn't contain any supported policy, the whole service config\n//     is invalid.\nfunc (bc *BalancerConfig) UnmarshalJSON(b []byte) error {\n\tvar ir intermediateBalancerConfig\n\terr := json.Unmarshal(b, &ir)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar names []string\n\tfor i, lbcfg := range ir {\n\t\tif len(lbcfg) != 1 {\n\t\t\treturn fmt.Errorf(\"invalid loadBalancingConfig: entry %v does not contain exactly 1 policy/config pair: %q\", i, lbcfg)\n\t\t}\n\n\t\tvar (\n\t\t\tname    string\n\t\t\tjsonCfg json.RawMessage\n\t\t)\n\t\t// Get the key:value pair from the map. We have already made sure that\n\t\t// the map contains a single entry.\n\t\tfor name, jsonCfg = range lbcfg {\n\t\t}\n\n\t\tnames = append(names, name)\n\t\tbuilder := balancer.Get(name)\n\t\tif builder == nil {\n\t\t\t// If the balancer is not registered, move on to the next config.\n\t\t\t// This is not an error.\n\t\t\tcontinue\n\t\t}\n\t\tbc.Name = name\n\n\t\tparser, ok := builder.(balancer.ConfigParser)\n\t\tif !ok {\n\t\t\tif string(jsonCfg) != \"{}\" {\n\t\t\t\tlogger.Warningf(\"non-empty balancer configuration %q, but balancer does not implement ParseConfig\", string(jsonCfg))\n\t\t\t}\n\t\t\t// Stop at this, though the builder doesn't support parsing config.\n\t\t\treturn nil\n\t\t}\n\n\t\tcfg, err := parser.ParseConfig(jsonCfg)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error parsing loadBalancingConfig for policy %q: %v\", name, err)\n\t\t}\n\t\tbc.Config = cfg\n\t\treturn nil\n\t}\n\t// This is reached when the for loop iterates over all entries, but didn't\n\t// return. This means we had a loadBalancingConfig slice but did not\n\t// encounter a registered policy. The config is considered invalid in this\n\t// case.\n\treturn fmt.Errorf(\"invalid loadBalancingConfig: no supported policies found in %v\", names)\n}\n\n// MethodConfig defines the configuration recommended by the service providers for a\n// particular method.\ntype MethodConfig struct {\n\t// WaitForReady indicates whether RPCs sent to this method should wait until\n\t// the connection is ready by default (!failfast). The value specified via the\n\t// gRPC client API will override the value set here.\n\tWaitForReady *bool\n\t// Timeout is the default timeout for RPCs sent to this method. The actual\n\t// deadline used will be the minimum of the value specified here and the value\n\t// set by the application via the gRPC client API.  If either one is not set,\n\t// then the other will be used.  If neither is set, then the RPC has no deadline.\n\tTimeout *time.Duration\n\t// MaxReqSize is the maximum allowed payload size for an individual request in a\n\t// stream (client->server) in bytes. The size which is measured is the serialized\n\t// payload after per-message compression (but before stream compression) in bytes.\n\t// The actual value used is the minimum of the value specified here and the value set\n\t// by the application via the gRPC client API. If either one is not set, then the other\n\t// will be used.  If neither is set, then the built-in default is used.\n\tMaxReqSize *int\n\t// MaxRespSize is the maximum allowed payload size for an individual response in a\n\t// stream (server->client) in bytes.\n\tMaxRespSize *int\n\t// RetryPolicy configures retry options for the method.\n\tRetryPolicy *RetryPolicy\n}\n\n// RetryPolicy defines the go-native version of the retry policy defined by the\n// service config here:\n// https://github.com/grpc/proposal/blob/master/A6-client-retries.md#integration-with-service-config\ntype RetryPolicy struct {\n\t// MaxAttempts is the maximum number of attempts, including the original RPC.\n\t//\n\t// This field is required and must be two or greater.\n\tMaxAttempts int\n\n\t// Exponential backoff parameters. The initial retry attempt will occur at\n\t// random(0, initialBackoff). In general, the nth attempt will occur at\n\t// random(0,\n\t//   min(initialBackoff*backoffMultiplier**(n-1), maxBackoff)).\n\t//\n\t// These fields are required and must be greater than zero.\n\tInitialBackoff    time.Duration\n\tMaxBackoff        time.Duration\n\tBackoffMultiplier float64\n\n\t// The set of status codes which may be retried.\n\t//\n\t// Status codes are specified as strings, e.g., \"UNAVAILABLE\".\n\t//\n\t// This field is required and must be non-empty.\n\t// Note: a set is used to store this for easy lookup.\n\tRetryableStatusCodes map[codes.Code]bool\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/status/status.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package status implements errors returned by gRPC.  These errors are\n// serialized and transmitted on the wire between server and client, and allow\n// for additional data to be transmitted via the Details field in the status\n// proto.  gRPC service handlers should return an error created by this\n// package, and gRPC clients should expect a corresponding error to be\n// returned from the RPC call.\n//\n// This package upholds the invariants that a non-nil error may not\n// contain an OK code, and an OK code must result in a nil error.\npackage status\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/golang/protobuf/proto\"\n\t\"github.com/golang/protobuf/ptypes\"\n\tspb \"google.golang.org/genproto/googleapis/rpc/status\"\n\t\"google.golang.org/grpc/codes\"\n)\n\n// Status represents an RPC status code, message, and details.  It is immutable\n// and should be created with New, Newf, or FromProto.\ntype Status struct {\n\ts *spb.Status\n}\n\n// NewWithProto returns a new status including details from statusProto.  This\n// is meant to be used by the gRPC library only.\nfunc NewWithProto(code codes.Code, message string, statusProto []string) *Status {\n\tif len(statusProto) != 1 {\n\t\t// No grpc-status-details bin header, or multiple; just ignore.\n\t\treturn &Status{s: &spb.Status{Code: int32(code), Message: message}}\n\t}\n\tst := &spb.Status{}\n\tif err := proto.Unmarshal([]byte(statusProto[0]), st); err != nil {\n\t\t// Probably not a google.rpc.Status proto; do not provide details.\n\t\treturn &Status{s: &spb.Status{Code: int32(code), Message: message}}\n\t}\n\tif st.Code == int32(code) {\n\t\t// The codes match between the grpc-status header and the\n\t\t// grpc-status-details-bin header; use the full details proto.\n\t\treturn &Status{s: st}\n\t}\n\treturn &Status{\n\t\ts: &spb.Status{\n\t\t\tCode: int32(codes.Internal),\n\t\t\tMessage: fmt.Sprintf(\n\t\t\t\t\"grpc-status-details-bin mismatch: grpc-status=%v, grpc-message=%q, grpc-status-details-bin=%+v\",\n\t\t\t\tcode, message, st,\n\t\t\t),\n\t\t},\n\t}\n}\n\n// New returns a Status representing c and msg.\nfunc New(c codes.Code, msg string) *Status {\n\treturn &Status{s: &spb.Status{Code: int32(c), Message: msg}}\n}\n\n// Newf returns New(c, fmt.Sprintf(format, a...)).\nfunc Newf(c codes.Code, format string, a ...any) *Status {\n\treturn New(c, fmt.Sprintf(format, a...))\n}\n\n// FromProto returns a Status representing s.\nfunc FromProto(s *spb.Status) *Status {\n\treturn &Status{s: proto.Clone(s).(*spb.Status)}\n}\n\n// Err returns an error representing c and msg.  If c is OK, returns nil.\nfunc Err(c codes.Code, msg string) error {\n\treturn New(c, msg).Err()\n}\n\n// Errorf returns Error(c, fmt.Sprintf(format, a...)).\nfunc Errorf(c codes.Code, format string, a ...any) error {\n\treturn Err(c, fmt.Sprintf(format, a...))\n}\n\n// Code returns the status code contained in s.\nfunc (s *Status) Code() codes.Code {\n\tif s == nil || s.s == nil {\n\t\treturn codes.OK\n\t}\n\treturn codes.Code(s.s.Code)\n}\n\n// Message returns the message contained in s.\nfunc (s *Status) Message() string {\n\tif s == nil || s.s == nil {\n\t\treturn \"\"\n\t}\n\treturn s.s.Message\n}\n\n// Proto returns s's status as an spb.Status proto message.\nfunc (s *Status) Proto() *spb.Status {\n\tif s == nil {\n\t\treturn nil\n\t}\n\treturn proto.Clone(s.s).(*spb.Status)\n}\n\n// Err returns an immutable error representing s; returns nil if s.Code() is OK.\nfunc (s *Status) Err() error {\n\tif s.Code() == codes.OK {\n\t\treturn nil\n\t}\n\treturn &Error{s: s}\n}\n\n// WithDetails returns a new status with the provided details messages appended to the status.\n// If any errors are encountered, it returns nil and the first error encountered.\nfunc (s *Status) WithDetails(details ...proto.Message) (*Status, error) {\n\tif s.Code() == codes.OK {\n\t\treturn nil, errors.New(\"no error details for status with code OK\")\n\t}\n\t// s.Code() != OK implies that s.Proto() != nil.\n\tp := s.Proto()\n\tfor _, detail := range details {\n\t\tany, err := ptypes.MarshalAny(detail)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tp.Details = append(p.Details, any)\n\t}\n\treturn &Status{s: p}, nil\n}\n\n// Details returns a slice of details messages attached to the status.\n// If a detail cannot be decoded, the error is returned in place of the detail.\nfunc (s *Status) Details() []any {\n\tif s == nil || s.s == nil {\n\t\treturn nil\n\t}\n\tdetails := make([]any, 0, len(s.s.Details))\n\tfor _, any := range s.s.Details {\n\t\tdetail := &ptypes.DynamicAny{}\n\t\tif err := ptypes.UnmarshalAny(any, detail); err != nil {\n\t\t\tdetails = append(details, err)\n\t\t\tcontinue\n\t\t}\n\t\tdetails = append(details, detail.Message)\n\t}\n\treturn details\n}\n\nfunc (s *Status) String() string {\n\treturn fmt.Sprintf(\"rpc error: code = %s desc = %s\", s.Code(), s.Message())\n}\n\n// Error wraps a pointer of a status proto. It implements error and Status,\n// and a nil *Error should never be returned by this package.\ntype Error struct {\n\ts *Status\n}\n\nfunc (e *Error) Error() string {\n\treturn e.s.String()\n}\n\n// GRPCStatus returns the Status represented by se.\nfunc (e *Error) GRPCStatus() *Status {\n\treturn e.s\n}\n\n// Is implements future error.Is functionality.\n// A Error is equivalent if the code and message are identical.\nfunc (e *Error) Is(target error) bool {\n\ttse, ok := target.(*Error)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn proto.Equal(e.s.s, tse.s.s)\n}\n\n// IsRestrictedControlPlaneCode returns whether the status includes a code\n// restricted for control plane usage as defined by gRFC A54.\nfunc IsRestrictedControlPlaneCode(s *Status) bool {\n\tswitch s.Code() {\n\tcase codes.InvalidArgument, codes.NotFound, codes.AlreadyExists, codes.FailedPrecondition, codes.Aborted, codes.OutOfRange, codes.DataLoss:\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package syscall provides functionalities that grpc uses to get low-level operating system\n// stats/info.\npackage syscall\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"golang.org/x/sys/unix\"\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nvar logger = grpclog.Component(\"core\")\n\n// GetCPUTime returns the how much CPU time has passed since the start of this process.\nfunc GetCPUTime() int64 {\n\tvar ts unix.Timespec\n\tif err := unix.ClockGettime(unix.CLOCK_PROCESS_CPUTIME_ID, &ts); err != nil {\n\t\tlogger.Fatal(err)\n\t}\n\treturn ts.Nano()\n}\n\n// Rusage is an alias for syscall.Rusage under linux environment.\ntype Rusage = syscall.Rusage\n\n// GetRusage returns the resource usage of current process.\nfunc GetRusage() *Rusage {\n\trusage := new(Rusage)\n\tsyscall.Getrusage(syscall.RUSAGE_SELF, rusage)\n\treturn rusage\n}\n\n// CPUTimeDiff returns the differences of user CPU time and system CPU time used\n// between two Rusage structs.\nfunc CPUTimeDiff(first *Rusage, latest *Rusage) (float64, float64) {\n\tvar (\n\t\tutimeDiffs  = latest.Utime.Sec - first.Utime.Sec\n\t\tutimeDiffus = latest.Utime.Usec - first.Utime.Usec\n\t\tstimeDiffs  = latest.Stime.Sec - first.Stime.Sec\n\t\tstimeDiffus = latest.Stime.Usec - first.Stime.Usec\n\t)\n\n\tuTimeElapsed := float64(utimeDiffs) + float64(utimeDiffus)*1.0e-6\n\tsTimeElapsed := float64(stimeDiffs) + float64(stimeDiffus)*1.0e-6\n\n\treturn uTimeElapsed, sTimeElapsed\n}\n\n// SetTCPUserTimeout sets the TCP user timeout on a connection's socket\nfunc SetTCPUserTimeout(conn net.Conn, timeout time.Duration) error {\n\ttcpconn, ok := conn.(*net.TCPConn)\n\tif !ok {\n\t\t// not a TCP connection. exit early\n\t\treturn nil\n\t}\n\trawConn, err := tcpconn.SyscallConn()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error getting raw connection: %v\", err)\n\t}\n\terr = rawConn.Control(func(fd uintptr) {\n\t\terr = syscall.SetsockoptInt(int(fd), syscall.IPPROTO_TCP, unix.TCP_USER_TIMEOUT, int(timeout/time.Millisecond))\n\t})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error setting option on socket: %v\", err)\n\t}\n\n\treturn nil\n}\n\n// GetTCPUserTimeout gets the TCP user timeout on a connection's socket\nfunc GetTCPUserTimeout(conn net.Conn) (opt int, err error) {\n\ttcpconn, ok := conn.(*net.TCPConn)\n\tif !ok {\n\t\terr = fmt.Errorf(\"conn is not *net.TCPConn. got %T\", conn)\n\t\treturn\n\t}\n\trawConn, err := tcpconn.SyscallConn()\n\tif err != nil {\n\t\terr = fmt.Errorf(\"error getting raw connection: %v\", err)\n\t\treturn\n\t}\n\terr = rawConn.Control(func(fd uintptr) {\n\t\topt, err = syscall.GetsockoptInt(int(fd), syscall.IPPROTO_TCP, unix.TCP_USER_TIMEOUT)\n\t})\n\tif err != nil {\n\t\terr = fmt.Errorf(\"error getting option on socket: %v\", err)\n\t\treturn\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go",
    "content": "//go:build !linux\n// +build !linux\n\n/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package syscall provides functionalities that grpc uses to get low-level\n// operating system stats/info.\npackage syscall\n\nimport (\n\t\"net\"\n\t\"sync\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/grpclog\"\n)\n\nvar once sync.Once\nvar logger = grpclog.Component(\"core\")\n\nfunc log() {\n\tonce.Do(func() {\n\t\tlogger.Info(\"CPU time info is unavailable on non-linux environments.\")\n\t})\n}\n\n// GetCPUTime returns the how much CPU time has passed since the start of this\n// process. It always returns 0 under non-linux environments.\nfunc GetCPUTime() int64 {\n\tlog()\n\treturn 0\n}\n\n// Rusage is an empty struct under non-linux environments.\ntype Rusage struct{}\n\n// GetRusage is a no-op function under non-linux environments.\nfunc GetRusage() *Rusage {\n\tlog()\n\treturn nil\n}\n\n// CPUTimeDiff returns the differences of user CPU time and system CPU time used\n// between two Rusage structs. It a no-op function for non-linux environments.\nfunc CPUTimeDiff(first *Rusage, latest *Rusage) (float64, float64) {\n\tlog()\n\treturn 0, 0\n}\n\n// SetTCPUserTimeout is a no-op function under non-linux environments.\nfunc SetTCPUserTimeout(conn net.Conn, timeout time.Duration) error {\n\tlog()\n\treturn nil\n}\n\n// GetTCPUserTimeout is a no-op function under non-linux environments.\n// A negative return value indicates the operation is not supported\nfunc GetTCPUserTimeout(conn net.Conn) (int, error) {\n\tlog()\n\treturn -1, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/bdp_estimator.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"sync\"\n\t\"time\"\n)\n\nconst (\n\t// bdpLimit is the maximum value the flow control windows will be increased\n\t// to.  TCP typically limits this to 4MB, but some systems go up to 16MB.\n\t// Since this is only a limit, it is safe to make it optimistic.\n\tbdpLimit = (1 << 20) * 16\n\t// alpha is a constant factor used to keep a moving average\n\t// of RTTs.\n\talpha = 0.9\n\t// If the current bdp sample is greater than or equal to\n\t// our beta * our estimated bdp and the current bandwidth\n\t// sample is the maximum bandwidth observed so far, we\n\t// increase our bbp estimate by a factor of gamma.\n\tbeta = 0.66\n\t// To put our bdp to be smaller than or equal to twice the real BDP,\n\t// we should multiply our current sample with 4/3, however to round things out\n\t// we use 2 as the multiplication factor.\n\tgamma = 2\n)\n\n// Adding arbitrary data to ping so that its ack can be identified.\n// Easter-egg: what does the ping message say?\nvar bdpPing = &ping{data: [8]byte{2, 4, 16, 16, 9, 14, 7, 7}}\n\ntype bdpEstimator struct {\n\t// sentAt is the time when the ping was sent.\n\tsentAt time.Time\n\n\tmu sync.Mutex\n\t// bdp is the current bdp estimate.\n\tbdp uint32\n\t// sample is the number of bytes received in one measurement cycle.\n\tsample uint32\n\t// bwMax is the maximum bandwidth noted so far (bytes/sec).\n\tbwMax float64\n\t// bool to keep track of the beginning of a new measurement cycle.\n\tisSent bool\n\t// Callback to update the window sizes.\n\tupdateFlowControl func(n uint32)\n\t// sampleCount is the number of samples taken so far.\n\tsampleCount uint64\n\t// round trip time (seconds)\n\trtt float64\n}\n\n// timesnap registers the time bdp ping was sent out so that\n// network rtt can be calculated when its ack is received.\n// It is called (by controller) when the bdpPing is\n// being written on the wire.\nfunc (b *bdpEstimator) timesnap(d [8]byte) {\n\tif bdpPing.data != d {\n\t\treturn\n\t}\n\tb.sentAt = time.Now()\n}\n\n// add adds bytes to the current sample for calculating bdp.\n// It returns true only if a ping must be sent. This can be used\n// by the caller (handleData) to make decision about batching\n// a window update with it.\nfunc (b *bdpEstimator) add(n uint32) bool {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\tif b.bdp == bdpLimit {\n\t\treturn false\n\t}\n\tif !b.isSent {\n\t\tb.isSent = true\n\t\tb.sample = n\n\t\tb.sentAt = time.Time{}\n\t\tb.sampleCount++\n\t\treturn true\n\t}\n\tb.sample += n\n\treturn false\n}\n\n// calculate is called when an ack for a bdp ping is received.\n// Here we calculate the current bdp and bandwidth sample and\n// decide if the flow control windows should go up.\nfunc (b *bdpEstimator) calculate(d [8]byte) {\n\t// Check if the ping acked for was the bdp ping.\n\tif bdpPing.data != d {\n\t\treturn\n\t}\n\tb.mu.Lock()\n\trttSample := time.Since(b.sentAt).Seconds()\n\tif b.sampleCount < 10 {\n\t\t// Bootstrap rtt with an average of first 10 rtt samples.\n\t\tb.rtt += (rttSample - b.rtt) / float64(b.sampleCount)\n\t} else {\n\t\t// Heed to the recent past more.\n\t\tb.rtt += (rttSample - b.rtt) * float64(alpha)\n\t}\n\tb.isSent = false\n\t// The number of bytes accumulated so far in the sample is smaller\n\t// than or equal to 1.5 times the real BDP on a saturated connection.\n\tbwCurrent := float64(b.sample) / (b.rtt * float64(1.5))\n\tif bwCurrent > b.bwMax {\n\t\tb.bwMax = bwCurrent\n\t}\n\t// If the current sample (which is smaller than or equal to the 1.5 times the real BDP) is\n\t// greater than or equal to 2/3rd our perceived bdp AND this is the maximum bandwidth seen so far, we\n\t// should update our perception of the network BDP.\n\tif float64(b.sample) >= beta*float64(b.bdp) && bwCurrent == b.bwMax && b.bdp != bdpLimit {\n\t\tsampleFloat := float64(b.sample)\n\t\tb.bdp = uint32(gamma * sampleFloat)\n\t\tif b.bdp > bdpLimit {\n\t\t\tb.bdp = bdpLimit\n\t\t}\n\t\tbdp := b.bdp\n\t\tb.mu.Unlock()\n\t\tb.updateFlowControl(bdp)\n\t\treturn\n\t}\n\tb.mu.Unlock()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/controlbuf.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"golang.org/x/net/http2\"\n\t\"golang.org/x/net/http2/hpack\"\n\t\"google.golang.org/grpc/internal/grpclog\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n\t\"google.golang.org/grpc/status\"\n)\n\nvar updateHeaderTblSize = func(e *hpack.Encoder, v uint32) {\n\te.SetMaxDynamicTableSizeLimit(v)\n}\n\ntype itemNode struct {\n\tit   any\n\tnext *itemNode\n}\n\ntype itemList struct {\n\thead *itemNode\n\ttail *itemNode\n}\n\nfunc (il *itemList) enqueue(i any) {\n\tn := &itemNode{it: i}\n\tif il.tail == nil {\n\t\til.head, il.tail = n, n\n\t\treturn\n\t}\n\til.tail.next = n\n\til.tail = n\n}\n\n// peek returns the first item in the list without removing it from the\n// list.\nfunc (il *itemList) peek() any {\n\treturn il.head.it\n}\n\nfunc (il *itemList) dequeue() any {\n\tif il.head == nil {\n\t\treturn nil\n\t}\n\ti := il.head.it\n\til.head = il.head.next\n\tif il.head == nil {\n\t\til.tail = nil\n\t}\n\treturn i\n}\n\nfunc (il *itemList) dequeueAll() *itemNode {\n\th := il.head\n\til.head, il.tail = nil, nil\n\treturn h\n}\n\nfunc (il *itemList) isEmpty() bool {\n\treturn il.head == nil\n}\n\n// The following defines various control items which could flow through\n// the control buffer of transport. They represent different aspects of\n// control tasks, e.g., flow control, settings, streaming resetting, etc.\n\n// maxQueuedTransportResponseFrames is the most queued \"transport response\"\n// frames we will buffer before preventing new reads from occurring on the\n// transport.  These are control frames sent in response to client requests,\n// such as RST_STREAM due to bad headers or settings acks.\nconst maxQueuedTransportResponseFrames = 50\n\ntype cbItem interface {\n\tisTransportResponseFrame() bool\n}\n\n// registerStream is used to register an incoming stream with loopy writer.\ntype registerStream struct {\n\tstreamID uint32\n\twq       *writeQuota\n}\n\nfunc (*registerStream) isTransportResponseFrame() bool { return false }\n\n// headerFrame is also used to register stream on the client-side.\ntype headerFrame struct {\n\tstreamID   uint32\n\thf         []hpack.HeaderField\n\tendStream  bool               // Valid on server side.\n\tinitStream func(uint32) error // Used only on the client side.\n\tonWrite    func()\n\twq         *writeQuota    // write quota for the stream created.\n\tcleanup    *cleanupStream // Valid on the server side.\n\tonOrphaned func(error)    // Valid on client-side\n}\n\nfunc (h *headerFrame) isTransportResponseFrame() bool {\n\treturn h.cleanup != nil && h.cleanup.rst // Results in a RST_STREAM\n}\n\ntype cleanupStream struct {\n\tstreamID uint32\n\trst      bool\n\trstCode  http2.ErrCode\n\tonWrite  func()\n}\n\nfunc (c *cleanupStream) isTransportResponseFrame() bool { return c.rst } // Results in a RST_STREAM\n\ntype earlyAbortStream struct {\n\thttpStatus     uint32\n\tstreamID       uint32\n\tcontentSubtype string\n\tstatus         *status.Status\n\trst            bool\n}\n\nfunc (*earlyAbortStream) isTransportResponseFrame() bool { return false }\n\ntype dataFrame struct {\n\tstreamID  uint32\n\tendStream bool\n\th         []byte\n\td         []byte\n\t// onEachWrite is called every time\n\t// a part of d is written out.\n\tonEachWrite func()\n}\n\nfunc (*dataFrame) isTransportResponseFrame() bool { return false }\n\ntype incomingWindowUpdate struct {\n\tstreamID  uint32\n\tincrement uint32\n}\n\nfunc (*incomingWindowUpdate) isTransportResponseFrame() bool { return false }\n\ntype outgoingWindowUpdate struct {\n\tstreamID  uint32\n\tincrement uint32\n}\n\nfunc (*outgoingWindowUpdate) isTransportResponseFrame() bool {\n\treturn false // window updates are throttled by thresholds\n}\n\ntype incomingSettings struct {\n\tss []http2.Setting\n}\n\nfunc (*incomingSettings) isTransportResponseFrame() bool { return true } // Results in a settings ACK\n\ntype outgoingSettings struct {\n\tss []http2.Setting\n}\n\nfunc (*outgoingSettings) isTransportResponseFrame() bool { return false }\n\ntype incomingGoAway struct {\n}\n\nfunc (*incomingGoAway) isTransportResponseFrame() bool { return false }\n\ntype goAway struct {\n\tcode      http2.ErrCode\n\tdebugData []byte\n\theadsUp   bool\n\tcloseConn error // if set, loopyWriter will exit, resulting in conn closure\n}\n\nfunc (*goAway) isTransportResponseFrame() bool { return false }\n\ntype ping struct {\n\tack  bool\n\tdata [8]byte\n}\n\nfunc (*ping) isTransportResponseFrame() bool { return true }\n\ntype outFlowControlSizeRequest struct {\n\tresp chan uint32\n}\n\nfunc (*outFlowControlSizeRequest) isTransportResponseFrame() bool { return false }\n\n// closeConnection is an instruction to tell the loopy writer to flush the\n// framer and exit, which will cause the transport's connection to be closed\n// (by the client or server).  The transport itself will close after the reader\n// encounters the EOF caused by the connection closure.\ntype closeConnection struct{}\n\nfunc (closeConnection) isTransportResponseFrame() bool { return false }\n\ntype outStreamState int\n\nconst (\n\tactive outStreamState = iota\n\tempty\n\twaitingOnStreamQuota\n)\n\ntype outStream struct {\n\tid               uint32\n\tstate            outStreamState\n\titl              *itemList\n\tbytesOutStanding int\n\twq               *writeQuota\n\n\tnext *outStream\n\tprev *outStream\n}\n\nfunc (s *outStream) deleteSelf() {\n\tif s.prev != nil {\n\t\ts.prev.next = s.next\n\t}\n\tif s.next != nil {\n\t\ts.next.prev = s.prev\n\t}\n\ts.next, s.prev = nil, nil\n}\n\ntype outStreamList struct {\n\t// Following are sentinel objects that mark the\n\t// beginning and end of the list. They do not\n\t// contain any item lists. All valid objects are\n\t// inserted in between them.\n\t// This is needed so that an outStream object can\n\t// deleteSelf() in O(1) time without knowing which\n\t// list it belongs to.\n\thead *outStream\n\ttail *outStream\n}\n\nfunc newOutStreamList() *outStreamList {\n\thead, tail := new(outStream), new(outStream)\n\thead.next = tail\n\ttail.prev = head\n\treturn &outStreamList{\n\t\thead: head,\n\t\ttail: tail,\n\t}\n}\n\nfunc (l *outStreamList) enqueue(s *outStream) {\n\te := l.tail.prev\n\te.next = s\n\ts.prev = e\n\ts.next = l.tail\n\tl.tail.prev = s\n}\n\n// remove from the beginning of the list.\nfunc (l *outStreamList) dequeue() *outStream {\n\tb := l.head.next\n\tif b == l.tail {\n\t\treturn nil\n\t}\n\tb.deleteSelf()\n\treturn b\n}\n\n// controlBuffer is a way to pass information to loopy.\n// Information is passed as specific struct types called control frames.\n// A control frame not only represents data, messages or headers to be sent out\n// but can also be used to instruct loopy to update its internal state.\n// It shouldn't be confused with an HTTP2 frame, although some of the control frames\n// like dataFrame and headerFrame do go out on wire as HTTP2 frames.\ntype controlBuffer struct {\n\tch              chan struct{}\n\tdone            <-chan struct{}\n\tmu              sync.Mutex\n\tconsumerWaiting bool\n\tlist            *itemList\n\terr             error\n\n\t// transportResponseFrames counts the number of queued items that represent\n\t// the response of an action initiated by the peer.  trfChan is created\n\t// when transportResponseFrames >= maxQueuedTransportResponseFrames and is\n\t// closed and nilled when transportResponseFrames drops below the\n\t// threshold.  Both fields are protected by mu.\n\ttransportResponseFrames int\n\ttrfChan                 atomic.Value // chan struct{}\n}\n\nfunc newControlBuffer(done <-chan struct{}) *controlBuffer {\n\treturn &controlBuffer{\n\t\tch:   make(chan struct{}, 1),\n\t\tlist: &itemList{},\n\t\tdone: done,\n\t}\n}\n\n// throttle blocks if there are too many incomingSettings/cleanupStreams in the\n// controlbuf.\nfunc (c *controlBuffer) throttle() {\n\tch, _ := c.trfChan.Load().(chan struct{})\n\tif ch != nil {\n\t\tselect {\n\t\tcase <-ch:\n\t\tcase <-c.done:\n\t\t}\n\t}\n}\n\nfunc (c *controlBuffer) put(it cbItem) error {\n\t_, err := c.executeAndPut(nil, it)\n\treturn err\n}\n\nfunc (c *controlBuffer) executeAndPut(f func(it any) bool, it cbItem) (bool, error) {\n\tvar wakeUp bool\n\tc.mu.Lock()\n\tif c.err != nil {\n\t\tc.mu.Unlock()\n\t\treturn false, c.err\n\t}\n\tif f != nil {\n\t\tif !f(it) { // f wasn't successful\n\t\t\tc.mu.Unlock()\n\t\t\treturn false, nil\n\t\t}\n\t}\n\tif c.consumerWaiting {\n\t\twakeUp = true\n\t\tc.consumerWaiting = false\n\t}\n\tc.list.enqueue(it)\n\tif it.isTransportResponseFrame() {\n\t\tc.transportResponseFrames++\n\t\tif c.transportResponseFrames == maxQueuedTransportResponseFrames {\n\t\t\t// We are adding the frame that puts us over the threshold; create\n\t\t\t// a throttling channel.\n\t\t\tc.trfChan.Store(make(chan struct{}))\n\t\t}\n\t}\n\tc.mu.Unlock()\n\tif wakeUp {\n\t\tselect {\n\t\tcase c.ch <- struct{}{}:\n\t\tdefault:\n\t\t}\n\t}\n\treturn true, nil\n}\n\n// Note argument f should never be nil.\nfunc (c *controlBuffer) execute(f func(it any) bool, it any) (bool, error) {\n\tc.mu.Lock()\n\tif c.err != nil {\n\t\tc.mu.Unlock()\n\t\treturn false, c.err\n\t}\n\tif !f(it) { // f wasn't successful\n\t\tc.mu.Unlock()\n\t\treturn false, nil\n\t}\n\tc.mu.Unlock()\n\treturn true, nil\n}\n\nfunc (c *controlBuffer) get(block bool) (any, error) {\n\tfor {\n\t\tc.mu.Lock()\n\t\tif c.err != nil {\n\t\t\tc.mu.Unlock()\n\t\t\treturn nil, c.err\n\t\t}\n\t\tif !c.list.isEmpty() {\n\t\t\th := c.list.dequeue().(cbItem)\n\t\t\tif h.isTransportResponseFrame() {\n\t\t\t\tif c.transportResponseFrames == maxQueuedTransportResponseFrames {\n\t\t\t\t\t// We are removing the frame that put us over the\n\t\t\t\t\t// threshold; close and clear the throttling channel.\n\t\t\t\t\tch := c.trfChan.Load().(chan struct{})\n\t\t\t\t\tclose(ch)\n\t\t\t\t\tc.trfChan.Store((chan struct{})(nil))\n\t\t\t\t}\n\t\t\t\tc.transportResponseFrames--\n\t\t\t}\n\t\t\tc.mu.Unlock()\n\t\t\treturn h, nil\n\t\t}\n\t\tif !block {\n\t\t\tc.mu.Unlock()\n\t\t\treturn nil, nil\n\t\t}\n\t\tc.consumerWaiting = true\n\t\tc.mu.Unlock()\n\t\tselect {\n\t\tcase <-c.ch:\n\t\tcase <-c.done:\n\t\t\treturn nil, errors.New(\"transport closed by client\")\n\t\t}\n\t}\n}\n\nfunc (c *controlBuffer) finish() {\n\tc.mu.Lock()\n\tif c.err != nil {\n\t\tc.mu.Unlock()\n\t\treturn\n\t}\n\tc.err = ErrConnClosing\n\t// There may be headers for streams in the control buffer.\n\t// These streams need to be cleaned out since the transport\n\t// is still not aware of these yet.\n\tfor head := c.list.dequeueAll(); head != nil; head = head.next {\n\t\thdr, ok := head.it.(*headerFrame)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\tif hdr.onOrphaned != nil { // It will be nil on the server-side.\n\t\t\thdr.onOrphaned(ErrConnClosing)\n\t\t}\n\t}\n\t// In case throttle() is currently in flight, it needs to be unblocked.\n\t// Otherwise, the transport may not close, since the transport is closed by\n\t// the reader encountering the connection error.\n\tch, _ := c.trfChan.Load().(chan struct{})\n\tif ch != nil {\n\t\tclose(ch)\n\t}\n\tc.trfChan.Store((chan struct{})(nil))\n\tc.mu.Unlock()\n}\n\ntype side int\n\nconst (\n\tclientSide side = iota\n\tserverSide\n)\n\n// Loopy receives frames from the control buffer.\n// Each frame is handled individually; most of the work done by loopy goes\n// into handling data frames. Loopy maintains a queue of active streams, and each\n// stream maintains a queue of data frames; as loopy receives data frames\n// it gets added to the queue of the relevant stream.\n// Loopy goes over this list of active streams by processing one node every iteration,\n// thereby closely resemebling to a round-robin scheduling over all streams. While\n// processing a stream, loopy writes out data bytes from this stream capped by the min\n// of http2MaxFrameLen, connection-level flow control and stream-level flow control.\ntype loopyWriter struct {\n\tside      side\n\tcbuf      *controlBuffer\n\tsendQuota uint32\n\toiws      uint32 // outbound initial window size.\n\t// estdStreams is map of all established streams that are not cleaned-up yet.\n\t// On client-side, this is all streams whose headers were sent out.\n\t// On server-side, this is all streams whose headers were received.\n\testdStreams map[uint32]*outStream // Established streams.\n\t// activeStreams is a linked-list of all streams that have data to send and some\n\t// stream-level flow control quota.\n\t// Each of these streams internally have a list of data items(and perhaps trailers\n\t// on the server-side) to be sent out.\n\tactiveStreams *outStreamList\n\tframer        *framer\n\thBuf          *bytes.Buffer  // The buffer for HPACK encoding.\n\thEnc          *hpack.Encoder // HPACK encoder.\n\tbdpEst        *bdpEstimator\n\tdraining      bool\n\tconn          net.Conn\n\tlogger        *grpclog.PrefixLogger\n\n\t// Side-specific handlers\n\tssGoAwayHandler func(*goAway) (bool, error)\n}\n\nfunc newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimator, conn net.Conn, logger *grpclog.PrefixLogger) *loopyWriter {\n\tvar buf bytes.Buffer\n\tl := &loopyWriter{\n\t\tside:          s,\n\t\tcbuf:          cbuf,\n\t\tsendQuota:     defaultWindowSize,\n\t\toiws:          defaultWindowSize,\n\t\testdStreams:   make(map[uint32]*outStream),\n\t\tactiveStreams: newOutStreamList(),\n\t\tframer:        fr,\n\t\thBuf:          &buf,\n\t\thEnc:          hpack.NewEncoder(&buf),\n\t\tbdpEst:        bdpEst,\n\t\tconn:          conn,\n\t\tlogger:        logger,\n\t}\n\treturn l\n}\n\nconst minBatchSize = 1000\n\n// run should be run in a separate goroutine.\n// It reads control frames from controlBuf and processes them by:\n// 1. Updating loopy's internal state, or/and\n// 2. Writing out HTTP2 frames on the wire.\n//\n// Loopy keeps all active streams with data to send in a linked-list.\n// All streams in the activeStreams linked-list must have both:\n// 1. Data to send, and\n// 2. Stream level flow control quota available.\n//\n// In each iteration of run loop, other than processing the incoming control\n// frame, loopy calls processData, which processes one node from the\n// activeStreams linked-list.  This results in writing of HTTP2 frames into an\n// underlying write buffer.  When there's no more control frames to read from\n// controlBuf, loopy flushes the write buffer.  As an optimization, to increase\n// the batch size for each flush, loopy yields the processor, once if the batch\n// size is too low to give stream goroutines a chance to fill it up.\n//\n// Upon exiting, if the error causing the exit is not an I/O error, run()\n// flushes and closes the underlying connection.  Otherwise, the connection is\n// left open to allow the I/O error to be encountered by the reader instead.\nfunc (l *loopyWriter) run() (err error) {\n\tdefer func() {\n\t\tif l.logger.V(logLevel) {\n\t\t\tl.logger.Infof(\"loopyWriter exiting with error: %v\", err)\n\t\t}\n\t\tif !isIOError(err) {\n\t\t\tl.framer.writer.Flush()\n\t\t\tl.conn.Close()\n\t\t}\n\t\tl.cbuf.finish()\n\t}()\n\tfor {\n\t\tit, err := l.cbuf.get(true)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err = l.handle(it); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif _, err = l.processData(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgosched := true\n\thasdata:\n\t\tfor {\n\t\t\tit, err := l.cbuf.get(false)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif it != nil {\n\t\t\t\tif err = l.handle(it); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif _, err = l.processData(); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tcontinue hasdata\n\t\t\t}\n\t\t\tisEmpty, err := l.processData()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif !isEmpty {\n\t\t\t\tcontinue hasdata\n\t\t\t}\n\t\t\tif gosched {\n\t\t\t\tgosched = false\n\t\t\t\tif l.framer.writer.offset < minBatchSize {\n\t\t\t\t\truntime.Gosched()\n\t\t\t\t\tcontinue hasdata\n\t\t\t\t}\n\t\t\t}\n\t\t\tl.framer.writer.Flush()\n\t\t\tbreak hasdata\n\t\t}\n\t}\n}\n\nfunc (l *loopyWriter) outgoingWindowUpdateHandler(w *outgoingWindowUpdate) error {\n\treturn l.framer.fr.WriteWindowUpdate(w.streamID, w.increment)\n}\n\nfunc (l *loopyWriter) incomingWindowUpdateHandler(w *incomingWindowUpdate) {\n\t// Otherwise update the quota.\n\tif w.streamID == 0 {\n\t\tl.sendQuota += w.increment\n\t\treturn\n\t}\n\t// Find the stream and update it.\n\tif str, ok := l.estdStreams[w.streamID]; ok {\n\t\tstr.bytesOutStanding -= int(w.increment)\n\t\tif strQuota := int(l.oiws) - str.bytesOutStanding; strQuota > 0 && str.state == waitingOnStreamQuota {\n\t\t\tstr.state = active\n\t\t\tl.activeStreams.enqueue(str)\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (l *loopyWriter) outgoingSettingsHandler(s *outgoingSettings) error {\n\treturn l.framer.fr.WriteSettings(s.ss...)\n}\n\nfunc (l *loopyWriter) incomingSettingsHandler(s *incomingSettings) error {\n\tl.applySettings(s.ss)\n\treturn l.framer.fr.WriteSettingsAck()\n}\n\nfunc (l *loopyWriter) registerStreamHandler(h *registerStream) {\n\tstr := &outStream{\n\t\tid:    h.streamID,\n\t\tstate: empty,\n\t\titl:   &itemList{},\n\t\twq:    h.wq,\n\t}\n\tl.estdStreams[h.streamID] = str\n}\n\nfunc (l *loopyWriter) headerHandler(h *headerFrame) error {\n\tif l.side == serverSide {\n\t\tstr, ok := l.estdStreams[h.streamID]\n\t\tif !ok {\n\t\t\tif l.logger.V(logLevel) {\n\t\t\t\tl.logger.Infof(\"Unrecognized streamID %d in loopyWriter\", h.streamID)\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\t\t// Case 1.A: Server is responding back with headers.\n\t\tif !h.endStream {\n\t\t\treturn l.writeHeader(h.streamID, h.endStream, h.hf, h.onWrite)\n\t\t}\n\t\t// else:  Case 1.B: Server wants to close stream.\n\n\t\tif str.state != empty { // either active or waiting on stream quota.\n\t\t\t// add it str's list of items.\n\t\t\tstr.itl.enqueue(h)\n\t\t\treturn nil\n\t\t}\n\t\tif err := l.writeHeader(h.streamID, h.endStream, h.hf, h.onWrite); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn l.cleanupStreamHandler(h.cleanup)\n\t}\n\t// Case 2: Client wants to originate stream.\n\tstr := &outStream{\n\t\tid:    h.streamID,\n\t\tstate: empty,\n\t\titl:   &itemList{},\n\t\twq:    h.wq,\n\t}\n\treturn l.originateStream(str, h)\n}\n\nfunc (l *loopyWriter) originateStream(str *outStream, hdr *headerFrame) error {\n\t// l.draining is set when handling GoAway. In which case, we want to avoid\n\t// creating new streams.\n\tif l.draining {\n\t\t// TODO: provide a better error with the reason we are in draining.\n\t\thdr.onOrphaned(errStreamDrain)\n\t\treturn nil\n\t}\n\tif err := hdr.initStream(str.id); err != nil {\n\t\treturn err\n\t}\n\tif err := l.writeHeader(str.id, hdr.endStream, hdr.hf, hdr.onWrite); err != nil {\n\t\treturn err\n\t}\n\tl.estdStreams[str.id] = str\n\treturn nil\n}\n\nfunc (l *loopyWriter) writeHeader(streamID uint32, endStream bool, hf []hpack.HeaderField, onWrite func()) error {\n\tif onWrite != nil {\n\t\tonWrite()\n\t}\n\tl.hBuf.Reset()\n\tfor _, f := range hf {\n\t\tif err := l.hEnc.WriteField(f); err != nil {\n\t\t\tif l.logger.V(logLevel) {\n\t\t\t\tl.logger.Warningf(\"Encountered error while encoding headers: %v\", err)\n\t\t\t}\n\t\t}\n\t}\n\tvar (\n\t\terr               error\n\t\tendHeaders, first bool\n\t)\n\tfirst = true\n\tfor !endHeaders {\n\t\tsize := l.hBuf.Len()\n\t\tif size > http2MaxFrameLen {\n\t\t\tsize = http2MaxFrameLen\n\t\t} else {\n\t\t\tendHeaders = true\n\t\t}\n\t\tif first {\n\t\t\tfirst = false\n\t\t\terr = l.framer.fr.WriteHeaders(http2.HeadersFrameParam{\n\t\t\t\tStreamID:      streamID,\n\t\t\t\tBlockFragment: l.hBuf.Next(size),\n\t\t\t\tEndStream:     endStream,\n\t\t\t\tEndHeaders:    endHeaders,\n\t\t\t})\n\t\t} else {\n\t\t\terr = l.framer.fr.WriteContinuation(\n\t\t\t\tstreamID,\n\t\t\t\tendHeaders,\n\t\t\t\tl.hBuf.Next(size),\n\t\t\t)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (l *loopyWriter) preprocessData(df *dataFrame) {\n\tstr, ok := l.estdStreams[df.streamID]\n\tif !ok {\n\t\treturn\n\t}\n\t// If we got data for a stream it means that\n\t// stream was originated and the headers were sent out.\n\tstr.itl.enqueue(df)\n\tif str.state == empty {\n\t\tstr.state = active\n\t\tl.activeStreams.enqueue(str)\n\t}\n}\n\nfunc (l *loopyWriter) pingHandler(p *ping) error {\n\tif !p.ack {\n\t\tl.bdpEst.timesnap(p.data)\n\t}\n\treturn l.framer.fr.WritePing(p.ack, p.data)\n\n}\n\nfunc (l *loopyWriter) outFlowControlSizeRequestHandler(o *outFlowControlSizeRequest) {\n\to.resp <- l.sendQuota\n}\n\nfunc (l *loopyWriter) cleanupStreamHandler(c *cleanupStream) error {\n\tc.onWrite()\n\tif str, ok := l.estdStreams[c.streamID]; ok {\n\t\t// On the server side it could be a trailers-only response or\n\t\t// a RST_STREAM before stream initialization thus the stream might\n\t\t// not be established yet.\n\t\tdelete(l.estdStreams, c.streamID)\n\t\tstr.deleteSelf()\n\t}\n\tif c.rst { // If RST_STREAM needs to be sent.\n\t\tif err := l.framer.fr.WriteRSTStream(c.streamID, c.rstCode); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif l.draining && len(l.estdStreams) == 0 {\n\t\t// Flush and close the connection; we are done with it.\n\t\treturn errors.New(\"finished processing active streams while in draining mode\")\n\t}\n\treturn nil\n}\n\nfunc (l *loopyWriter) earlyAbortStreamHandler(eas *earlyAbortStream) error {\n\tif l.side == clientSide {\n\t\treturn errors.New(\"earlyAbortStream not handled on client\")\n\t}\n\t// In case the caller forgets to set the http status, default to 200.\n\tif eas.httpStatus == 0 {\n\t\teas.httpStatus = 200\n\t}\n\theaderFields := []hpack.HeaderField{\n\t\t{Name: \":status\", Value: strconv.Itoa(int(eas.httpStatus))},\n\t\t{Name: \"content-type\", Value: grpcutil.ContentType(eas.contentSubtype)},\n\t\t{Name: \"grpc-status\", Value: strconv.Itoa(int(eas.status.Code()))},\n\t\t{Name: \"grpc-message\", Value: encodeGrpcMessage(eas.status.Message())},\n\t}\n\n\tif err := l.writeHeader(eas.streamID, true, headerFields, nil); err != nil {\n\t\treturn err\n\t}\n\tif eas.rst {\n\t\tif err := l.framer.fr.WriteRSTStream(eas.streamID, http2.ErrCodeNo); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (l *loopyWriter) incomingGoAwayHandler(*incomingGoAway) error {\n\tif l.side == clientSide {\n\t\tl.draining = true\n\t\tif len(l.estdStreams) == 0 {\n\t\t\t// Flush and close the connection; we are done with it.\n\t\t\treturn errors.New(\"received GOAWAY with no active streams\")\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (l *loopyWriter) goAwayHandler(g *goAway) error {\n\t// Handling of outgoing GoAway is very specific to side.\n\tif l.ssGoAwayHandler != nil {\n\t\tdraining, err := l.ssGoAwayHandler(g)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tl.draining = draining\n\t}\n\treturn nil\n}\n\nfunc (l *loopyWriter) handle(i any) error {\n\tswitch i := i.(type) {\n\tcase *incomingWindowUpdate:\n\t\tl.incomingWindowUpdateHandler(i)\n\tcase *outgoingWindowUpdate:\n\t\treturn l.outgoingWindowUpdateHandler(i)\n\tcase *incomingSettings:\n\t\treturn l.incomingSettingsHandler(i)\n\tcase *outgoingSettings:\n\t\treturn l.outgoingSettingsHandler(i)\n\tcase *headerFrame:\n\t\treturn l.headerHandler(i)\n\tcase *registerStream:\n\t\tl.registerStreamHandler(i)\n\tcase *cleanupStream:\n\t\treturn l.cleanupStreamHandler(i)\n\tcase *earlyAbortStream:\n\t\treturn l.earlyAbortStreamHandler(i)\n\tcase *incomingGoAway:\n\t\treturn l.incomingGoAwayHandler(i)\n\tcase *dataFrame:\n\t\tl.preprocessData(i)\n\tcase *ping:\n\t\treturn l.pingHandler(i)\n\tcase *goAway:\n\t\treturn l.goAwayHandler(i)\n\tcase *outFlowControlSizeRequest:\n\t\tl.outFlowControlSizeRequestHandler(i)\n\tcase closeConnection:\n\t\t// Just return a non-I/O error and run() will flush and close the\n\t\t// connection.\n\t\treturn ErrConnClosing\n\tdefault:\n\t\treturn fmt.Errorf(\"transport: unknown control message type %T\", i)\n\t}\n\treturn nil\n}\n\nfunc (l *loopyWriter) applySettings(ss []http2.Setting) {\n\tfor _, s := range ss {\n\t\tswitch s.ID {\n\t\tcase http2.SettingInitialWindowSize:\n\t\t\to := l.oiws\n\t\t\tl.oiws = s.Val\n\t\t\tif o < l.oiws {\n\t\t\t\t// If the new limit is greater make all depleted streams active.\n\t\t\t\tfor _, stream := range l.estdStreams {\n\t\t\t\t\tif stream.state == waitingOnStreamQuota {\n\t\t\t\t\t\tstream.state = active\n\t\t\t\t\t\tl.activeStreams.enqueue(stream)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase http2.SettingHeaderTableSize:\n\t\t\tupdateHeaderTblSize(l.hEnc, s.Val)\n\t\t}\n\t}\n}\n\n// processData removes the first stream from active streams, writes out at most 16KB\n// of its data and then puts it at the end of activeStreams if there's still more data\n// to be sent and stream has some stream-level flow control.\nfunc (l *loopyWriter) processData() (bool, error) {\n\tif l.sendQuota == 0 {\n\t\treturn true, nil\n\t}\n\tstr := l.activeStreams.dequeue() // Remove the first stream.\n\tif str == nil {\n\t\treturn true, nil\n\t}\n\tdataItem := str.itl.peek().(*dataFrame) // Peek at the first data item this stream.\n\t// A data item is represented by a dataFrame, since it later translates into\n\t// multiple HTTP2 data frames.\n\t// Every dataFrame has two buffers; h that keeps grpc-message header and d that is actual data.\n\t// As an optimization to keep wire traffic low, data from d is copied to h to make as big as the\n\t// maximum possible HTTP2 frame size.\n\n\tif len(dataItem.h) == 0 && len(dataItem.d) == 0 { // Empty data frame\n\t\t// Client sends out empty data frame with endStream = true\n\t\tif err := l.framer.fr.WriteData(dataItem.streamID, dataItem.endStream, nil); err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tstr.itl.dequeue() // remove the empty data item from stream\n\t\tif str.itl.isEmpty() {\n\t\t\tstr.state = empty\n\t\t} else if trailer, ok := str.itl.peek().(*headerFrame); ok { // the next item is trailers.\n\t\t\tif err := l.writeHeader(trailer.streamID, trailer.endStream, trailer.hf, trailer.onWrite); err != nil {\n\t\t\t\treturn false, err\n\t\t\t}\n\t\t\tif err := l.cleanupStreamHandler(trailer.cleanup); err != nil {\n\t\t\t\treturn false, err\n\t\t\t}\n\t\t} else {\n\t\t\tl.activeStreams.enqueue(str)\n\t\t}\n\t\treturn false, nil\n\t}\n\tvar (\n\t\tbuf []byte\n\t)\n\t// Figure out the maximum size we can send\n\tmaxSize := http2MaxFrameLen\n\tif strQuota := int(l.oiws) - str.bytesOutStanding; strQuota <= 0 { // stream-level flow control.\n\t\tstr.state = waitingOnStreamQuota\n\t\treturn false, nil\n\t} else if maxSize > strQuota {\n\t\tmaxSize = strQuota\n\t}\n\tif maxSize > int(l.sendQuota) { // connection-level flow control.\n\t\tmaxSize = int(l.sendQuota)\n\t}\n\t// Compute how much of the header and data we can send within quota and max frame length\n\thSize := min(maxSize, len(dataItem.h))\n\tdSize := min(maxSize-hSize, len(dataItem.d))\n\tif hSize != 0 {\n\t\tif dSize == 0 {\n\t\t\tbuf = dataItem.h\n\t\t} else {\n\t\t\t// We can add some data to grpc message header to distribute bytes more equally across frames.\n\t\t\t// Copy on the stack to avoid generating garbage\n\t\t\tvar localBuf [http2MaxFrameLen]byte\n\t\t\tcopy(localBuf[:hSize], dataItem.h)\n\t\t\tcopy(localBuf[hSize:], dataItem.d[:dSize])\n\t\t\tbuf = localBuf[:hSize+dSize]\n\t\t}\n\t} else {\n\t\tbuf = dataItem.d\n\t}\n\n\tsize := hSize + dSize\n\n\t// Now that outgoing flow controls are checked we can replenish str's write quota\n\tstr.wq.replenish(size)\n\tvar endStream bool\n\t// If this is the last data message on this stream and all of it can be written in this iteration.\n\tif dataItem.endStream && len(dataItem.h)+len(dataItem.d) <= size {\n\t\tendStream = true\n\t}\n\tif dataItem.onEachWrite != nil {\n\t\tdataItem.onEachWrite()\n\t}\n\tif err := l.framer.fr.WriteData(dataItem.streamID, endStream, buf[:size]); err != nil {\n\t\treturn false, err\n\t}\n\tstr.bytesOutStanding += size\n\tl.sendQuota -= uint32(size)\n\tdataItem.h = dataItem.h[hSize:]\n\tdataItem.d = dataItem.d[dSize:]\n\n\tif len(dataItem.h) == 0 && len(dataItem.d) == 0 { // All the data from that message was written out.\n\t\tstr.itl.dequeue()\n\t}\n\tif str.itl.isEmpty() {\n\t\tstr.state = empty\n\t} else if trailer, ok := str.itl.peek().(*headerFrame); ok { // The next item is trailers.\n\t\tif err := l.writeHeader(trailer.streamID, trailer.endStream, trailer.hf, trailer.onWrite); err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif err := l.cleanupStreamHandler(trailer.cleanup); err != nil {\n\t\t\treturn false, err\n\t\t}\n\t} else if int(l.oiws)-str.bytesOutStanding <= 0 { // Ran out of stream quota.\n\t\tstr.state = waitingOnStreamQuota\n\t} else { // Otherwise add it back to the list of active streams.\n\t\tl.activeStreams.enqueue(str)\n\t}\n\treturn false, nil\n}\n\nfunc min(a, b int) int {\n\tif a < b {\n\t\treturn a\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/defaults.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"math\"\n\t\"time\"\n)\n\nconst (\n\t// The default value of flow control window size in HTTP2 spec.\n\tdefaultWindowSize = 65535\n\t// The initial window size for flow control.\n\tinitialWindowSize             = defaultWindowSize // for an RPC\n\tinfinity                      = time.Duration(math.MaxInt64)\n\tdefaultClientKeepaliveTime    = infinity\n\tdefaultClientKeepaliveTimeout = 20 * time.Second\n\tdefaultMaxStreamsClient       = 100\n\tdefaultMaxConnectionIdle      = infinity\n\tdefaultMaxConnectionAge       = infinity\n\tdefaultMaxConnectionAgeGrace  = infinity\n\tdefaultServerKeepaliveTime    = 2 * time.Hour\n\tdefaultServerKeepaliveTimeout = 20 * time.Second\n\tdefaultKeepalivePolicyMinTime = 5 * time.Minute\n\t// max window limit set by HTTP2 Specs.\n\tmaxWindowSize = math.MaxInt32\n\t// defaultWriteQuota is the default value for number of data\n\t// bytes that each stream can schedule before some of it being\n\t// flushed out.\n\tdefaultWriteQuota              = 64 * 1024\n\tdefaultClientMaxHeaderListSize = uint32(16 << 20)\n\tdefaultServerMaxHeaderListSize = uint32(16 << 20)\n)\n\n// MaxStreamID is the upper bound for the stream ID before the current\n// transport gracefully closes and new transport is created for subsequent RPCs.\n// This is set to 75% of 2^31-1. Streams are identified with an unsigned 31-bit\n// integer. It's exported so that tests can override it.\nvar MaxStreamID = uint32(math.MaxInt32 * 3 / 4)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/flowcontrol.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"sync\"\n\t\"sync/atomic\"\n)\n\n// writeQuota is a soft limit on the amount of data a stream can\n// schedule before some of it is written out.\ntype writeQuota struct {\n\tquota int32\n\t// get waits on read from when quota goes less than or equal to zero.\n\t// replenish writes on it when quota goes positive again.\n\tch chan struct{}\n\t// done is triggered in error case.\n\tdone <-chan struct{}\n\t// replenish is called by loopyWriter to give quota back to.\n\t// It is implemented as a field so that it can be updated\n\t// by tests.\n\treplenish func(n int)\n}\n\nfunc newWriteQuota(sz int32, done <-chan struct{}) *writeQuota {\n\tw := &writeQuota{\n\t\tquota: sz,\n\t\tch:    make(chan struct{}, 1),\n\t\tdone:  done,\n\t}\n\tw.replenish = w.realReplenish\n\treturn w\n}\n\nfunc (w *writeQuota) get(sz int32) error {\n\tfor {\n\t\tif atomic.LoadInt32(&w.quota) > 0 {\n\t\t\tatomic.AddInt32(&w.quota, -sz)\n\t\t\treturn nil\n\t\t}\n\t\tselect {\n\t\tcase <-w.ch:\n\t\t\tcontinue\n\t\tcase <-w.done:\n\t\t\treturn errStreamDone\n\t\t}\n\t}\n}\n\nfunc (w *writeQuota) realReplenish(n int) {\n\tsz := int32(n)\n\ta := atomic.AddInt32(&w.quota, sz)\n\tb := a - sz\n\tif b <= 0 && a > 0 {\n\t\tselect {\n\t\tcase w.ch <- struct{}{}:\n\t\tdefault:\n\t\t}\n\t}\n}\n\ntype trInFlow struct {\n\tlimit               uint32\n\tunacked             uint32\n\teffectiveWindowSize uint32\n}\n\nfunc (f *trInFlow) newLimit(n uint32) uint32 {\n\td := n - f.limit\n\tf.limit = n\n\tf.updateEffectiveWindowSize()\n\treturn d\n}\n\nfunc (f *trInFlow) onData(n uint32) uint32 {\n\tf.unacked += n\n\tif f.unacked >= f.limit/4 {\n\t\tw := f.unacked\n\t\tf.unacked = 0\n\t\tf.updateEffectiveWindowSize()\n\t\treturn w\n\t}\n\tf.updateEffectiveWindowSize()\n\treturn 0\n}\n\nfunc (f *trInFlow) reset() uint32 {\n\tw := f.unacked\n\tf.unacked = 0\n\tf.updateEffectiveWindowSize()\n\treturn w\n}\n\nfunc (f *trInFlow) updateEffectiveWindowSize() {\n\tatomic.StoreUint32(&f.effectiveWindowSize, f.limit-f.unacked)\n}\n\nfunc (f *trInFlow) getSize() uint32 {\n\treturn atomic.LoadUint32(&f.effectiveWindowSize)\n}\n\n// TODO(mmukhi): Simplify this code.\n// inFlow deals with inbound flow control\ntype inFlow struct {\n\tmu sync.Mutex\n\t// The inbound flow control limit for pending data.\n\tlimit uint32\n\t// pendingData is the overall data which have been received but not been\n\t// consumed by applications.\n\tpendingData uint32\n\t// The amount of data the application has consumed but grpc has not sent\n\t// window update for them. Used to reduce window update frequency.\n\tpendingUpdate uint32\n\t// delta is the extra window update given by receiver when an application\n\t// is reading data bigger in size than the inFlow limit.\n\tdelta uint32\n}\n\n// newLimit updates the inflow window to a new value n.\n// It assumes that n is always greater than the old limit.\nfunc (f *inFlow) newLimit(n uint32) {\n\tf.mu.Lock()\n\tf.limit = n\n\tf.mu.Unlock()\n}\n\nfunc (f *inFlow) maybeAdjust(n uint32) uint32 {\n\tif n > uint32(math.MaxInt32) {\n\t\tn = uint32(math.MaxInt32)\n\t}\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\t// estSenderQuota is the receiver's view of the maximum number of bytes the sender\n\t// can send without a window update.\n\testSenderQuota := int32(f.limit - (f.pendingData + f.pendingUpdate))\n\t// estUntransmittedData is the maximum number of bytes the sends might not have put\n\t// on the wire yet. A value of 0 or less means that we have already received all or\n\t// more bytes than the application is requesting to read.\n\testUntransmittedData := int32(n - f.pendingData) // Casting into int32 since it could be negative.\n\t// This implies that unless we send a window update, the sender won't be able to send all the bytes\n\t// for this message. Therefore we must send an update over the limit since there's an active read\n\t// request from the application.\n\tif estUntransmittedData > estSenderQuota {\n\t\t// Sender's window shouldn't go more than 2^31 - 1 as specified in the HTTP spec.\n\t\tif f.limit+n > maxWindowSize {\n\t\t\tf.delta = maxWindowSize - f.limit\n\t\t} else {\n\t\t\t// Send a window update for the whole message and not just the difference between\n\t\t\t// estUntransmittedData and estSenderQuota. This will be helpful in case the message\n\t\t\t// is padded; We will fallback on the current available window(at least a 1/4th of the limit).\n\t\t\tf.delta = n\n\t\t}\n\t\treturn f.delta\n\t}\n\treturn 0\n}\n\n// onData is invoked when some data frame is received. It updates pendingData.\nfunc (f *inFlow) onData(n uint32) error {\n\tf.mu.Lock()\n\tf.pendingData += n\n\tif f.pendingData+f.pendingUpdate > f.limit+f.delta {\n\t\tlimit := f.limit\n\t\trcvd := f.pendingData + f.pendingUpdate\n\t\tf.mu.Unlock()\n\t\treturn fmt.Errorf(\"received %d-bytes data exceeding the limit %d bytes\", rcvd, limit)\n\t}\n\tf.mu.Unlock()\n\treturn nil\n}\n\n// onRead is invoked when the application reads the data. It returns the window size\n// to be sent to the peer.\nfunc (f *inFlow) onRead(n uint32) uint32 {\n\tf.mu.Lock()\n\tif f.pendingData == 0 {\n\t\tf.mu.Unlock()\n\t\treturn 0\n\t}\n\tf.pendingData -= n\n\tif n > f.delta {\n\t\tn -= f.delta\n\t\tf.delta = 0\n\t} else {\n\t\tf.delta -= n\n\t\tn = 0\n\t}\n\tf.pendingUpdate += n\n\tif f.pendingUpdate >= f.limit/4 {\n\t\twu := f.pendingUpdate\n\t\tf.pendingUpdate = 0\n\t\tf.mu.Unlock()\n\t\treturn wu\n\t}\n\tf.mu.Unlock()\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/handler_server.go",
    "content": "/*\n *\n * Copyright 2016 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// This file is the implementation of a gRPC server using HTTP/2 which\n// uses the standard Go http2 Server implementation (via the\n// http.Handler interface), rather than speaking low-level HTTP/2\n// frames itself. It is the implementation of *grpc.Server.ServeHTTP.\n\npackage transport\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"net/http\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/golang/protobuf/proto\"\n\t\"golang.org/x/net/http2\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/internal/grpclog\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/peer\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// NewServerHandlerTransport returns a ServerTransport handling gRPC from\n// inside an http.Handler, or writes an HTTP error to w and returns an error.\n// It requires that the http Server supports HTTP/2.\nfunc NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats []stats.Handler) (ServerTransport, error) {\n\tif r.ProtoMajor != 2 {\n\t\tmsg := \"gRPC requires HTTP/2\"\n\t\thttp.Error(w, msg, http.StatusBadRequest)\n\t\treturn nil, errors.New(msg)\n\t}\n\tif r.Method != \"POST\" {\n\t\tmsg := fmt.Sprintf(\"invalid gRPC request method %q\", r.Method)\n\t\thttp.Error(w, msg, http.StatusBadRequest)\n\t\treturn nil, errors.New(msg)\n\t}\n\tcontentType := r.Header.Get(\"Content-Type\")\n\t// TODO: do we assume contentType is lowercase? we did before\n\tcontentSubtype, validContentType := grpcutil.ContentSubtype(contentType)\n\tif !validContentType {\n\t\tmsg := fmt.Sprintf(\"invalid gRPC request content-type %q\", contentType)\n\t\thttp.Error(w, msg, http.StatusUnsupportedMediaType)\n\t\treturn nil, errors.New(msg)\n\t}\n\tif _, ok := w.(http.Flusher); !ok {\n\t\tmsg := \"gRPC requires a ResponseWriter supporting http.Flusher\"\n\t\thttp.Error(w, msg, http.StatusInternalServerError)\n\t\treturn nil, errors.New(msg)\n\t}\n\n\tst := &serverHandlerTransport{\n\t\trw:             w,\n\t\treq:            r,\n\t\tclosedCh:       make(chan struct{}),\n\t\twrites:         make(chan func()),\n\t\tcontentType:    contentType,\n\t\tcontentSubtype: contentSubtype,\n\t\tstats:          stats,\n\t}\n\tst.logger = prefixLoggerForServerHandlerTransport(st)\n\n\tif v := r.Header.Get(\"grpc-timeout\"); v != \"\" {\n\t\tto, err := decodeTimeout(v)\n\t\tif err != nil {\n\t\t\tmsg := fmt.Sprintf(\"malformed grpc-timeout: %v\", err)\n\t\t\thttp.Error(w, msg, http.StatusBadRequest)\n\t\t\treturn nil, status.Error(codes.Internal, msg)\n\t\t}\n\t\tst.timeoutSet = true\n\t\tst.timeout = to\n\t}\n\n\tmetakv := []string{\"content-type\", contentType}\n\tif r.Host != \"\" {\n\t\tmetakv = append(metakv, \":authority\", r.Host)\n\t}\n\tfor k, vv := range r.Header {\n\t\tk = strings.ToLower(k)\n\t\tif isReservedHeader(k) && !isWhitelistedHeader(k) {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, v := range vv {\n\t\t\tv, err := decodeMetadataHeader(k, v)\n\t\t\tif err != nil {\n\t\t\t\tmsg := fmt.Sprintf(\"malformed binary metadata %q in header %q: %v\", v, k, err)\n\t\t\t\thttp.Error(w, msg, http.StatusBadRequest)\n\t\t\t\treturn nil, status.Error(codes.Internal, msg)\n\t\t\t}\n\t\t\tmetakv = append(metakv, k, v)\n\t\t}\n\t}\n\tst.headerMD = metadata.Pairs(metakv...)\n\n\treturn st, nil\n}\n\n// serverHandlerTransport is an implementation of ServerTransport\n// which replies to exactly one gRPC request (exactly one HTTP request),\n// using the net/http.Handler interface. This http.Handler is guaranteed\n// at this point to be speaking over HTTP/2, so it's able to speak valid\n// gRPC.\ntype serverHandlerTransport struct {\n\trw         http.ResponseWriter\n\treq        *http.Request\n\ttimeoutSet bool\n\ttimeout    time.Duration\n\n\theaderMD metadata.MD\n\n\tcloseOnce sync.Once\n\tclosedCh  chan struct{} // closed on Close\n\n\t// writes is a channel of code to run serialized in the\n\t// ServeHTTP (HandleStreams) goroutine. The channel is closed\n\t// when WriteStatus is called.\n\twrites chan func()\n\n\t// block concurrent WriteStatus calls\n\t// e.g. grpc/(*serverStream).SendMsg/RecvMsg\n\twriteStatusMu sync.Mutex\n\n\t// we just mirror the request content-type\n\tcontentType string\n\t// we store both contentType and contentSubtype so we don't keep recreating them\n\t// TODO make sure this is consistent across handler_server and http2_server\n\tcontentSubtype string\n\n\tstats  []stats.Handler\n\tlogger *grpclog.PrefixLogger\n}\n\nfunc (ht *serverHandlerTransport) Close(err error) {\n\tht.closeOnce.Do(func() {\n\t\tif ht.logger.V(logLevel) {\n\t\t\tht.logger.Infof(\"Closing: %v\", err)\n\t\t}\n\t\tclose(ht.closedCh)\n\t})\n}\n\nfunc (ht *serverHandlerTransport) RemoteAddr() net.Addr { return strAddr(ht.req.RemoteAddr) }\n\n// strAddr is a net.Addr backed by either a TCP \"ip:port\" string, or\n// the empty string if unknown.\ntype strAddr string\n\nfunc (a strAddr) Network() string {\n\tif a != \"\" {\n\t\t// Per the documentation on net/http.Request.RemoteAddr, if this is\n\t\t// set, it's set to the IP:port of the peer (hence, TCP):\n\t\t// https://golang.org/pkg/net/http/#Request\n\t\t//\n\t\t// If we want to support Unix sockets later, we can\n\t\t// add our own grpc-specific convention within the\n\t\t// grpc codebase to set RemoteAddr to a different\n\t\t// format, or probably better: we can attach it to the\n\t\t// context and use that from serverHandlerTransport.RemoteAddr.\n\t\treturn \"tcp\"\n\t}\n\treturn \"\"\n}\n\nfunc (a strAddr) String() string { return string(a) }\n\n// do runs fn in the ServeHTTP goroutine.\nfunc (ht *serverHandlerTransport) do(fn func()) error {\n\tselect {\n\tcase <-ht.closedCh:\n\t\treturn ErrConnClosing\n\tcase ht.writes <- fn:\n\t\treturn nil\n\t}\n}\n\nfunc (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) error {\n\tht.writeStatusMu.Lock()\n\tdefer ht.writeStatusMu.Unlock()\n\n\theadersWritten := s.updateHeaderSent()\n\terr := ht.do(func() {\n\t\tif !headersWritten {\n\t\t\tht.writePendingHeaders(s)\n\t\t}\n\n\t\t// And flush, in case no header or body has been sent yet.\n\t\t// This forces a separation of headers and trailers if this is the\n\t\t// first call (for example, in end2end tests's TestNoService).\n\t\tht.rw.(http.Flusher).Flush()\n\n\t\th := ht.rw.Header()\n\t\th.Set(\"Grpc-Status\", fmt.Sprintf(\"%d\", st.Code()))\n\t\tif m := st.Message(); m != \"\" {\n\t\t\th.Set(\"Grpc-Message\", encodeGrpcMessage(m))\n\t\t}\n\n\t\ts.hdrMu.Lock()\n\t\tif p := st.Proto(); p != nil && len(p.Details) > 0 {\n\t\t\tdelete(s.trailer, grpcStatusDetailsBinHeader)\n\t\t\tstBytes, err := proto.Marshal(p)\n\t\t\tif err != nil {\n\t\t\t\t// TODO: return error instead, when callers are able to handle it.\n\t\t\t\tpanic(err)\n\t\t\t}\n\n\t\t\th.Set(grpcStatusDetailsBinHeader, encodeBinHeader(stBytes))\n\t\t}\n\n\t\tif len(s.trailer) > 0 {\n\t\t\tfor k, vv := range s.trailer {\n\t\t\t\t// Clients don't tolerate reading restricted headers after some non restricted ones were sent.\n\t\t\t\tif isReservedHeader(k) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfor _, v := range vv {\n\t\t\t\t\t// http2 ResponseWriter mechanism to send undeclared Trailers after\n\t\t\t\t\t// the headers have possibly been written.\n\t\t\t\t\th.Add(http2.TrailerPrefix+k, encodeMetadataHeader(k, v))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ts.hdrMu.Unlock()\n\t})\n\n\tif err == nil { // transport has not been closed\n\t\t// Note: The trailer fields are compressed with hpack after this call returns.\n\t\t// No WireLength field is set here.\n\t\tfor _, sh := range ht.stats {\n\t\t\tsh.HandleRPC(s.Context(), &stats.OutTrailer{\n\t\t\t\tTrailer: s.trailer.Copy(),\n\t\t\t})\n\t\t}\n\t}\n\tht.Close(errors.New(\"finished writing status\"))\n\treturn err\n}\n\n// writePendingHeaders sets common and custom headers on the first\n// write call (Write, WriteHeader, or WriteStatus)\nfunc (ht *serverHandlerTransport) writePendingHeaders(s *Stream) {\n\tht.writeCommonHeaders(s)\n\tht.writeCustomHeaders(s)\n}\n\n// writeCommonHeaders sets common headers on the first write\n// call (Write, WriteHeader, or WriteStatus).\nfunc (ht *serverHandlerTransport) writeCommonHeaders(s *Stream) {\n\th := ht.rw.Header()\n\th[\"Date\"] = nil // suppress Date to make tests happy; TODO: restore\n\th.Set(\"Content-Type\", ht.contentType)\n\n\t// Predeclare trailers we'll set later in WriteStatus (after the body).\n\t// This is a SHOULD in the HTTP RFC, and the way you add (known)\n\t// Trailers per the net/http.ResponseWriter contract.\n\t// See https://golang.org/pkg/net/http/#ResponseWriter\n\t// and https://golang.org/pkg/net/http/#example_ResponseWriter_trailers\n\th.Add(\"Trailer\", \"Grpc-Status\")\n\th.Add(\"Trailer\", \"Grpc-Message\")\n\th.Add(\"Trailer\", \"Grpc-Status-Details-Bin\")\n\n\tif s.sendCompress != \"\" {\n\t\th.Set(\"Grpc-Encoding\", s.sendCompress)\n\t}\n}\n\n// writeCustomHeaders sets custom headers set on the stream via SetHeader\n// on the first write call (Write, WriteHeader, or WriteStatus)\nfunc (ht *serverHandlerTransport) writeCustomHeaders(s *Stream) {\n\th := ht.rw.Header()\n\n\ts.hdrMu.Lock()\n\tfor k, vv := range s.header {\n\t\tif isReservedHeader(k) {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, v := range vv {\n\t\t\th.Add(k, encodeMetadataHeader(k, v))\n\t\t}\n\t}\n\n\ts.hdrMu.Unlock()\n}\n\nfunc (ht *serverHandlerTransport) Write(s *Stream, hdr []byte, data []byte, opts *Options) error {\n\theadersWritten := s.updateHeaderSent()\n\treturn ht.do(func() {\n\t\tif !headersWritten {\n\t\t\tht.writePendingHeaders(s)\n\t\t}\n\t\tht.rw.Write(hdr)\n\t\tht.rw.Write(data)\n\t\tht.rw.(http.Flusher).Flush()\n\t})\n}\n\nfunc (ht *serverHandlerTransport) WriteHeader(s *Stream, md metadata.MD) error {\n\tif err := s.SetHeader(md); err != nil {\n\t\treturn err\n\t}\n\n\theadersWritten := s.updateHeaderSent()\n\terr := ht.do(func() {\n\t\tif !headersWritten {\n\t\t\tht.writePendingHeaders(s)\n\t\t}\n\n\t\tht.rw.WriteHeader(200)\n\t\tht.rw.(http.Flusher).Flush()\n\t})\n\n\tif err == nil {\n\t\tfor _, sh := range ht.stats {\n\t\t\t// Note: The header fields are compressed with hpack after this call returns.\n\t\t\t// No WireLength field is set here.\n\t\t\tsh.HandleRPC(s.Context(), &stats.OutHeader{\n\t\t\t\tHeader:      md.Copy(),\n\t\t\t\tCompression: s.sendCompress,\n\t\t\t})\n\t\t}\n\t}\n\treturn err\n}\n\nfunc (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream)) {\n\t// With this transport type there will be exactly 1 stream: this HTTP request.\n\n\tctx := ht.req.Context()\n\tvar cancel context.CancelFunc\n\tif ht.timeoutSet {\n\t\tctx, cancel = context.WithTimeout(ctx, ht.timeout)\n\t} else {\n\t\tctx, cancel = context.WithCancel(ctx)\n\t}\n\n\t// requestOver is closed when the status has been written via WriteStatus.\n\trequestOver := make(chan struct{})\n\tgo func() {\n\t\tselect {\n\t\tcase <-requestOver:\n\t\tcase <-ht.closedCh:\n\t\tcase <-ht.req.Context().Done():\n\t\t}\n\t\tcancel()\n\t\tht.Close(errors.New(\"request is done processing\"))\n\t}()\n\n\treq := ht.req\n\n\ts := &Stream{\n\t\tid:             0, // irrelevant\n\t\trequestRead:    func(int) {},\n\t\tcancel:         cancel,\n\t\tbuf:            newRecvBuffer(),\n\t\tst:             ht,\n\t\tmethod:         req.URL.Path,\n\t\trecvCompress:   req.Header.Get(\"grpc-encoding\"),\n\t\tcontentSubtype: ht.contentSubtype,\n\t}\n\tpr := &peer.Peer{\n\t\tAddr: ht.RemoteAddr(),\n\t}\n\tif req.TLS != nil {\n\t\tpr.AuthInfo = credentials.TLSInfo{State: *req.TLS, CommonAuthInfo: credentials.CommonAuthInfo{SecurityLevel: credentials.PrivacyAndIntegrity}}\n\t}\n\tctx = metadata.NewIncomingContext(ctx, ht.headerMD)\n\ts.ctx = peer.NewContext(ctx, pr)\n\tfor _, sh := range ht.stats {\n\t\ts.ctx = sh.TagRPC(s.ctx, &stats.RPCTagInfo{FullMethodName: s.method})\n\t\tinHeader := &stats.InHeader{\n\t\t\tFullMethod:  s.method,\n\t\t\tRemoteAddr:  ht.RemoteAddr(),\n\t\t\tCompression: s.recvCompress,\n\t\t}\n\t\tsh.HandleRPC(s.ctx, inHeader)\n\t}\n\ts.trReader = &transportReader{\n\t\treader:        &recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: s.buf, freeBuffer: func(*bytes.Buffer) {}},\n\t\twindowHandler: func(int) {},\n\t}\n\n\t// readerDone is closed when the Body.Read-ing goroutine exits.\n\treaderDone := make(chan struct{})\n\tgo func() {\n\t\tdefer close(readerDone)\n\n\t\t// TODO: minimize garbage, optimize recvBuffer code/ownership\n\t\tconst readSize = 8196\n\t\tfor buf := make([]byte, readSize); ; {\n\t\t\tn, err := req.Body.Read(buf)\n\t\t\tif n > 0 {\n\t\t\t\ts.buf.put(recvMsg{buffer: bytes.NewBuffer(buf[:n:n])})\n\t\t\t\tbuf = buf[n:]\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\ts.buf.put(recvMsg{err: mapRecvMsgError(err)})\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif len(buf) == 0 {\n\t\t\t\tbuf = make([]byte, readSize)\n\t\t\t}\n\t\t}\n\t}()\n\n\t// startStream is provided by the *grpc.Server's serveStreams.\n\t// It starts a goroutine serving s and exits immediately.\n\t// The goroutine that is started is the one that then calls\n\t// into ht, calling WriteHeader, Write, WriteStatus, Close, etc.\n\tstartStream(s)\n\n\tht.runStream()\n\tclose(requestOver)\n\n\t// Wait for reading goroutine to finish.\n\treq.Body.Close()\n\t<-readerDone\n}\n\nfunc (ht *serverHandlerTransport) runStream() {\n\tfor {\n\t\tselect {\n\t\tcase fn := <-ht.writes:\n\t\t\tfn()\n\t\tcase <-ht.closedCh:\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (ht *serverHandlerTransport) IncrMsgSent() {}\n\nfunc (ht *serverHandlerTransport) IncrMsgRecv() {}\n\nfunc (ht *serverHandlerTransport) Drain(debugData string) {\n\tpanic(\"Drain() is not implemented\")\n}\n\n// mapRecvMsgError returns the non-nil err into the appropriate\n// error value as expected by callers of *grpc.parser.recvMsg.\n// In particular, in can only be:\n//   - io.EOF\n//   - io.ErrUnexpectedEOF\n//   - of type transport.ConnectionError\n//   - an error from the status package\nfunc mapRecvMsgError(err error) error {\n\tif err == io.EOF || err == io.ErrUnexpectedEOF {\n\t\treturn err\n\t}\n\tif se, ok := err.(http2.StreamError); ok {\n\t\tif code, ok := http2ErrConvTab[se.Code]; ok {\n\t\t\treturn status.Error(code, se.Error())\n\t\t}\n\t}\n\tif strings.Contains(err.Error(), \"body closed by handler\") {\n\t\treturn status.Error(codes.Canceled, err.Error())\n\t}\n\treturn connectionErrorf(true, err, err.Error())\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/http2_client.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"net\"\n\t\"net/http\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"golang.org/x/net/http2\"\n\t\"golang.org/x/net/http2/hpack\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\ticredentials \"google.golang.org/grpc/internal/credentials\"\n\t\"google.golang.org/grpc/internal/grpclog\"\n\t\"google.golang.org/grpc/internal/grpcsync\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n\timetadata \"google.golang.org/grpc/internal/metadata\"\n\tistatus \"google.golang.org/grpc/internal/status\"\n\t\"google.golang.org/grpc/internal/syscall\"\n\t\"google.golang.org/grpc/internal/transport/networktype\"\n\t\"google.golang.org/grpc/keepalive\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/peer\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// clientConnectionCounter counts the number of connections a client has\n// initiated (equal to the number of http2Clients created). Must be accessed\n// atomically.\nvar clientConnectionCounter uint64\n\n// http2Client implements the ClientTransport interface with HTTP2.\ntype http2Client struct {\n\tlastRead  int64 // Keep this field 64-bit aligned. Accessed atomically.\n\tctx       context.Context\n\tcancel    context.CancelFunc\n\tctxDone   <-chan struct{} // Cache the ctx.Done() chan.\n\tuserAgent string\n\t// address contains the resolver returned address for this transport.\n\t// If the `ServerName` field is set, it takes precedence over `CallHdr.Host`\n\t// passed to `NewStream`, when determining the :authority header.\n\taddress    resolver.Address\n\tmd         metadata.MD\n\tconn       net.Conn // underlying communication channel\n\tloopy      *loopyWriter\n\tremoteAddr net.Addr\n\tlocalAddr  net.Addr\n\tauthInfo   credentials.AuthInfo // auth info about the connection\n\n\treaderDone chan struct{} // sync point to enable testing.\n\twriterDone chan struct{} // sync point to enable testing.\n\t// goAway is closed to notify the upper layer (i.e., addrConn.transportMonitor)\n\t// that the server sent GoAway on this transport.\n\tgoAway chan struct{}\n\n\tframer *framer\n\t// controlBuf delivers all the control related tasks (e.g., window\n\t// updates, reset streams, and various settings) to the controller.\n\t// Do not access controlBuf with mu held.\n\tcontrolBuf *controlBuffer\n\tfc         *trInFlow\n\t// The scheme used: https if TLS is on, http otherwise.\n\tscheme string\n\n\tisSecure bool\n\n\tperRPCCreds []credentials.PerRPCCredentials\n\n\tkp               keepalive.ClientParameters\n\tkeepaliveEnabled bool\n\n\tstatsHandlers []stats.Handler\n\n\tinitialWindowSize int32\n\n\t// configured by peer through SETTINGS_MAX_HEADER_LIST_SIZE\n\tmaxSendHeaderListSize *uint32\n\n\tbdpEst *bdpEstimator\n\n\tmaxConcurrentStreams  uint32\n\tstreamQuota           int64\n\tstreamsQuotaAvailable chan struct{}\n\twaitingStreams        uint32\n\tnextID                uint32\n\tregisteredCompressors string\n\n\t// Do not access controlBuf with mu held.\n\tmu            sync.Mutex // guard the following variables\n\tstate         transportState\n\tactiveStreams map[uint32]*Stream\n\t// prevGoAway ID records the Last-Stream-ID in the previous GOAway frame.\n\tprevGoAwayID uint32\n\t// goAwayReason records the http2.ErrCode and debug data received with the\n\t// GoAway frame.\n\tgoAwayReason GoAwayReason\n\t// goAwayDebugMessage contains a detailed human readable string about a\n\t// GoAway frame, useful for error messages.\n\tgoAwayDebugMessage string\n\t// A condition variable used to signal when the keepalive goroutine should\n\t// go dormant. The condition for dormancy is based on the number of active\n\t// streams and the `PermitWithoutStream` keepalive client parameter. And\n\t// since the number of active streams is guarded by the above mutex, we use\n\t// the same for this condition variable as well.\n\tkpDormancyCond *sync.Cond\n\t// A boolean to track whether the keepalive goroutine is dormant or not.\n\t// This is checked before attempting to signal the above condition\n\t// variable.\n\tkpDormant bool\n\n\t// Fields below are for channelz metric collection.\n\tchannelzID *channelz.Identifier\n\tczData     *channelzData\n\n\tonClose func(GoAwayReason)\n\n\tbufferPool *bufferPool\n\n\tconnectionID uint64\n\tlogger       *grpclog.PrefixLogger\n}\n\nfunc dial(ctx context.Context, fn func(context.Context, string) (net.Conn, error), addr resolver.Address, useProxy bool, grpcUA string) (net.Conn, error) {\n\taddress := addr.Addr\n\tnetworkType, ok := networktype.Get(addr)\n\tif fn != nil {\n\t\t// Special handling for unix scheme with custom dialer. Back in the day,\n\t\t// we did not have a unix resolver and therefore targets with a unix\n\t\t// scheme would end up using the passthrough resolver. So, user's used a\n\t\t// custom dialer in this case and expected the original dial target to\n\t\t// be passed to the custom dialer. Now, we have a unix resolver. But if\n\t\t// a custom dialer is specified, we want to retain the old behavior in\n\t\t// terms of the address being passed to the custom dialer.\n\t\tif networkType == \"unix\" && !strings.HasPrefix(address, \"\\x00\") {\n\t\t\t// Supported unix targets are either \"unix://absolute-path\" or\n\t\t\t// \"unix:relative-path\".\n\t\t\tif filepath.IsAbs(address) {\n\t\t\t\treturn fn(ctx, \"unix://\"+address)\n\t\t\t}\n\t\t\treturn fn(ctx, \"unix:\"+address)\n\t\t}\n\t\treturn fn(ctx, address)\n\t}\n\tif !ok {\n\t\tnetworkType, address = parseDialTarget(address)\n\t}\n\tif networkType == \"tcp\" && useProxy {\n\t\treturn proxyDial(ctx, address, grpcUA)\n\t}\n\treturn (&net.Dialer{}).DialContext(ctx, networkType, address)\n}\n\nfunc isTemporary(err error) bool {\n\tswitch err := err.(type) {\n\tcase interface {\n\t\tTemporary() bool\n\t}:\n\t\treturn err.Temporary()\n\tcase interface {\n\t\tTimeout() bool\n\t}:\n\t\t// Timeouts may be resolved upon retry, and are thus treated as\n\t\t// temporary.\n\t\treturn err.Timeout()\n\t}\n\treturn true\n}\n\n// newHTTP2Client constructs a connected ClientTransport to addr based on HTTP2\n// and starts to receive messages on it. Non-nil error returns if construction\n// fails.\nfunc newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts ConnectOptions, onClose func(GoAwayReason)) (_ *http2Client, err error) {\n\tscheme := \"http\"\n\tctx, cancel := context.WithCancel(ctx)\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tcancel()\n\t\t}\n\t}()\n\n\t// gRPC, resolver, balancer etc. can specify arbitrary data in the\n\t// Attributes field of resolver.Address, which is shoved into connectCtx\n\t// and passed to the dialer and credential handshaker. This makes it possible for\n\t// address specific arbitrary data to reach custom dialers and credential handshakers.\n\tconnectCtx = icredentials.NewClientHandshakeInfoContext(connectCtx, credentials.ClientHandshakeInfo{Attributes: addr.Attributes})\n\n\tconn, err := dial(connectCtx, opts.Dialer, addr, opts.UseProxy, opts.UserAgent)\n\tif err != nil {\n\t\tif opts.FailOnNonTempDialError {\n\t\t\treturn nil, connectionErrorf(isTemporary(err), err, \"transport: error while dialing: %v\", err)\n\t\t}\n\t\treturn nil, connectionErrorf(true, err, \"transport: Error while dialing: %v\", err)\n\t}\n\n\t// Any further errors will close the underlying connection\n\tdefer func(conn net.Conn) {\n\t\tif err != nil {\n\t\t\tconn.Close()\n\t\t}\n\t}(conn)\n\n\t// The following defer and goroutine monitor the connectCtx for cancelation\n\t// and deadline.  On context expiration, the connection is hard closed and\n\t// this function will naturally fail as a result.  Otherwise, the defer\n\t// waits for the goroutine to exit to prevent the context from being\n\t// monitored (and to prevent the connection from ever being closed) after\n\t// returning from this function.\n\tctxMonitorDone := grpcsync.NewEvent()\n\tnewClientCtx, newClientDone := context.WithCancel(connectCtx)\n\tdefer func() {\n\t\tnewClientDone()         // Awaken the goroutine below if connectCtx hasn't expired.\n\t\t<-ctxMonitorDone.Done() // Wait for the goroutine below to exit.\n\t}()\n\tgo func(conn net.Conn) {\n\t\tdefer ctxMonitorDone.Fire() // Signal this goroutine has exited.\n\t\t<-newClientCtx.Done()       // Block until connectCtx expires or the defer above executes.\n\t\tif err := connectCtx.Err(); err != nil {\n\t\t\t// connectCtx expired before exiting the function.  Hard close the connection.\n\t\t\tif logger.V(logLevel) {\n\t\t\t\tlogger.Infof(\"Aborting due to connect deadline expiring: %v\", err)\n\t\t\t}\n\t\t\tconn.Close()\n\t\t}\n\t}(conn)\n\n\tkp := opts.KeepaliveParams\n\t// Validate keepalive parameters.\n\tif kp.Time == 0 {\n\t\tkp.Time = defaultClientKeepaliveTime\n\t}\n\tif kp.Timeout == 0 {\n\t\tkp.Timeout = defaultClientKeepaliveTimeout\n\t}\n\tkeepaliveEnabled := false\n\tif kp.Time != infinity {\n\t\tif err = syscall.SetTCPUserTimeout(conn, kp.Timeout); err != nil {\n\t\t\treturn nil, connectionErrorf(false, err, \"transport: failed to set TCP_USER_TIMEOUT: %v\", err)\n\t\t}\n\t\tkeepaliveEnabled = true\n\t}\n\tvar (\n\t\tisSecure bool\n\t\tauthInfo credentials.AuthInfo\n\t)\n\ttransportCreds := opts.TransportCredentials\n\tperRPCCreds := opts.PerRPCCredentials\n\n\tif b := opts.CredsBundle; b != nil {\n\t\tif t := b.TransportCredentials(); t != nil {\n\t\t\ttransportCreds = t\n\t\t}\n\t\tif t := b.PerRPCCredentials(); t != nil {\n\t\t\tperRPCCreds = append(perRPCCreds, t)\n\t\t}\n\t}\n\tif transportCreds != nil {\n\t\tconn, authInfo, err = transportCreds.ClientHandshake(connectCtx, addr.ServerName, conn)\n\t\tif err != nil {\n\t\t\treturn nil, connectionErrorf(isTemporary(err), err, \"transport: authentication handshake failed: %v\", err)\n\t\t}\n\t\tfor _, cd := range perRPCCreds {\n\t\t\tif cd.RequireTransportSecurity() {\n\t\t\t\tif ci, ok := authInfo.(interface {\n\t\t\t\t\tGetCommonAuthInfo() credentials.CommonAuthInfo\n\t\t\t\t}); ok {\n\t\t\t\t\tsecLevel := ci.GetCommonAuthInfo().SecurityLevel\n\t\t\t\t\tif secLevel != credentials.InvalidSecurityLevel && secLevel < credentials.PrivacyAndIntegrity {\n\t\t\t\t\t\treturn nil, connectionErrorf(true, nil, \"transport: cannot send secure credentials on an insecure connection\")\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tisSecure = true\n\t\tif transportCreds.Info().SecurityProtocol == \"tls\" {\n\t\t\tscheme = \"https\"\n\t\t}\n\t}\n\tdynamicWindow := true\n\ticwz := int32(initialWindowSize)\n\tif opts.InitialConnWindowSize >= defaultWindowSize {\n\t\ticwz = opts.InitialConnWindowSize\n\t\tdynamicWindow = false\n\t}\n\twriteBufSize := opts.WriteBufferSize\n\treadBufSize := opts.ReadBufferSize\n\tmaxHeaderListSize := defaultClientMaxHeaderListSize\n\tif opts.MaxHeaderListSize != nil {\n\t\tmaxHeaderListSize = *opts.MaxHeaderListSize\n\t}\n\tt := &http2Client{\n\t\tctx:                   ctx,\n\t\tctxDone:               ctx.Done(), // Cache Done chan.\n\t\tcancel:                cancel,\n\t\tuserAgent:             opts.UserAgent,\n\t\tregisteredCompressors: grpcutil.RegisteredCompressors(),\n\t\taddress:               addr,\n\t\tconn:                  conn,\n\t\tremoteAddr:            conn.RemoteAddr(),\n\t\tlocalAddr:             conn.LocalAddr(),\n\t\tauthInfo:              authInfo,\n\t\treaderDone:            make(chan struct{}),\n\t\twriterDone:            make(chan struct{}),\n\t\tgoAway:                make(chan struct{}),\n\t\tframer:                newFramer(conn, writeBufSize, readBufSize, opts.SharedWriteBuffer, maxHeaderListSize),\n\t\tfc:                    &trInFlow{limit: uint32(icwz)},\n\t\tscheme:                scheme,\n\t\tactiveStreams:         make(map[uint32]*Stream),\n\t\tisSecure:              isSecure,\n\t\tperRPCCreds:           perRPCCreds,\n\t\tkp:                    kp,\n\t\tstatsHandlers:         opts.StatsHandlers,\n\t\tinitialWindowSize:     initialWindowSize,\n\t\tnextID:                1,\n\t\tmaxConcurrentStreams:  defaultMaxStreamsClient,\n\t\tstreamQuota:           defaultMaxStreamsClient,\n\t\tstreamsQuotaAvailable: make(chan struct{}, 1),\n\t\tczData:                new(channelzData),\n\t\tkeepaliveEnabled:      keepaliveEnabled,\n\t\tbufferPool:            newBufferPool(),\n\t\tonClose:               onClose,\n\t}\n\tt.logger = prefixLoggerForClientTransport(t)\n\t// Add peer information to the http2client context.\n\tt.ctx = peer.NewContext(t.ctx, t.getPeer())\n\n\tif md, ok := addr.Metadata.(*metadata.MD); ok {\n\t\tt.md = *md\n\t} else if md := imetadata.Get(addr); md != nil {\n\t\tt.md = md\n\t}\n\tt.controlBuf = newControlBuffer(t.ctxDone)\n\tif opts.InitialWindowSize >= defaultWindowSize {\n\t\tt.initialWindowSize = opts.InitialWindowSize\n\t\tdynamicWindow = false\n\t}\n\tif dynamicWindow {\n\t\tt.bdpEst = &bdpEstimator{\n\t\t\tbdp:               initialWindowSize,\n\t\t\tupdateFlowControl: t.updateFlowControl,\n\t\t}\n\t}\n\tfor _, sh := range t.statsHandlers {\n\t\tt.ctx = sh.TagConn(t.ctx, &stats.ConnTagInfo{\n\t\t\tRemoteAddr: t.remoteAddr,\n\t\t\tLocalAddr:  t.localAddr,\n\t\t})\n\t\tconnBegin := &stats.ConnBegin{\n\t\t\tClient: true,\n\t\t}\n\t\tsh.HandleConn(t.ctx, connBegin)\n\t}\n\tt.channelzID, err = channelz.RegisterNormalSocket(t, opts.ChannelzParentID, fmt.Sprintf(\"%s -> %s\", t.localAddr, t.remoteAddr))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif t.keepaliveEnabled {\n\t\tt.kpDormancyCond = sync.NewCond(&t.mu)\n\t\tgo t.keepalive()\n\t}\n\n\t// Start the reader goroutine for incoming messages. Each transport has a\n\t// dedicated goroutine which reads HTTP2 frames from the network. Then it\n\t// dispatches the frame to the corresponding stream entity.  When the\n\t// server preface is received, readerErrCh is closed.  If an error occurs\n\t// first, an error is pushed to the channel.  This must be checked before\n\t// returning from this function.\n\treaderErrCh := make(chan error, 1)\n\tgo t.reader(readerErrCh)\n\tdefer func() {\n\t\tif err == nil {\n\t\t\terr = <-readerErrCh\n\t\t}\n\t\tif err != nil {\n\t\t\tt.Close(err)\n\t\t}\n\t}()\n\n\t// Send connection preface to server.\n\tn, err := t.conn.Write(clientPreface)\n\tif err != nil {\n\t\terr = connectionErrorf(true, err, \"transport: failed to write client preface: %v\", err)\n\t\treturn nil, err\n\t}\n\tif n != len(clientPreface) {\n\t\terr = connectionErrorf(true, nil, \"transport: preface mismatch, wrote %d bytes; want %d\", n, len(clientPreface))\n\t\treturn nil, err\n\t}\n\tvar ss []http2.Setting\n\n\tif t.initialWindowSize != defaultWindowSize {\n\t\tss = append(ss, http2.Setting{\n\t\t\tID:  http2.SettingInitialWindowSize,\n\t\t\tVal: uint32(t.initialWindowSize),\n\t\t})\n\t}\n\tif opts.MaxHeaderListSize != nil {\n\t\tss = append(ss, http2.Setting{\n\t\t\tID:  http2.SettingMaxHeaderListSize,\n\t\t\tVal: *opts.MaxHeaderListSize,\n\t\t})\n\t}\n\terr = t.framer.fr.WriteSettings(ss...)\n\tif err != nil {\n\t\terr = connectionErrorf(true, err, \"transport: failed to write initial settings frame: %v\", err)\n\t\treturn nil, err\n\t}\n\t// Adjust the connection flow control window if needed.\n\tif delta := uint32(icwz - defaultWindowSize); delta > 0 {\n\t\tif err := t.framer.fr.WriteWindowUpdate(0, delta); err != nil {\n\t\t\terr = connectionErrorf(true, err, \"transport: failed to write window update: %v\", err)\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tt.connectionID = atomic.AddUint64(&clientConnectionCounter, 1)\n\n\tif err := t.framer.writer.Flush(); err != nil {\n\t\treturn nil, err\n\t}\n\tgo func() {\n\t\tt.loopy = newLoopyWriter(clientSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger)\n\t\tt.loopy.run()\n\t\tclose(t.writerDone)\n\t}()\n\treturn t, nil\n}\n\nfunc (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr) *Stream {\n\t// TODO(zhaoq): Handle uint32 overflow of Stream.id.\n\ts := &Stream{\n\t\tct:             t,\n\t\tdone:           make(chan struct{}),\n\t\tmethod:         callHdr.Method,\n\t\tsendCompress:   callHdr.SendCompress,\n\t\tbuf:            newRecvBuffer(),\n\t\theaderChan:     make(chan struct{}),\n\t\tcontentSubtype: callHdr.ContentSubtype,\n\t\tdoneFunc:       callHdr.DoneFunc,\n\t}\n\ts.wq = newWriteQuota(defaultWriteQuota, s.done)\n\ts.requestRead = func(n int) {\n\t\tt.adjustWindow(s, uint32(n))\n\t}\n\t// The client side stream context should have exactly the same life cycle with the user provided context.\n\t// That means, s.ctx should be read-only. And s.ctx is done iff ctx is done.\n\t// So we use the original context here instead of creating a copy.\n\ts.ctx = ctx\n\ts.trReader = &transportReader{\n\t\treader: &recvBufferReader{\n\t\t\tctx:     s.ctx,\n\t\t\tctxDone: s.ctx.Done(),\n\t\t\trecv:    s.buf,\n\t\t\tcloseStream: func(err error) {\n\t\t\t\tt.CloseStream(s, err)\n\t\t\t},\n\t\t\tfreeBuffer: t.bufferPool.put,\n\t\t},\n\t\twindowHandler: func(n int) {\n\t\t\tt.updateWindow(s, uint32(n))\n\t\t},\n\t}\n\treturn s\n}\n\nfunc (t *http2Client) getPeer() *peer.Peer {\n\treturn &peer.Peer{\n\t\tAddr:     t.remoteAddr,\n\t\tAuthInfo: t.authInfo, // Can be nil\n\t}\n}\n\nfunc (t *http2Client) createHeaderFields(ctx context.Context, callHdr *CallHdr) ([]hpack.HeaderField, error) {\n\taud := t.createAudience(callHdr)\n\tri := credentials.RequestInfo{\n\t\tMethod:   callHdr.Method,\n\t\tAuthInfo: t.authInfo,\n\t}\n\tctxWithRequestInfo := icredentials.NewRequestInfoContext(ctx, ri)\n\tauthData, err := t.getTrAuthData(ctxWithRequestInfo, aud)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcallAuthData, err := t.getCallAuthData(ctxWithRequestInfo, aud, callHdr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields\n\t// first and create a slice of that exact size.\n\t// Make the slice of certain predictable size to reduce allocations made by append.\n\thfLen := 7 // :method, :scheme, :path, :authority, content-type, user-agent, te\n\thfLen += len(authData) + len(callAuthData)\n\theaderFields := make([]hpack.HeaderField, 0, hfLen)\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \":method\", Value: \"POST\"})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \":scheme\", Value: t.scheme})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \":path\", Value: callHdr.Method})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \":authority\", Value: callHdr.Host})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \"content-type\", Value: grpcutil.ContentType(callHdr.ContentSubtype)})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \"user-agent\", Value: t.userAgent})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \"te\", Value: \"trailers\"})\n\tif callHdr.PreviousAttempts > 0 {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-previous-rpc-attempts\", Value: strconv.Itoa(callHdr.PreviousAttempts)})\n\t}\n\n\tregisteredCompressors := t.registeredCompressors\n\tif callHdr.SendCompress != \"\" {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-encoding\", Value: callHdr.SendCompress})\n\t\t// Include the outgoing compressor name when compressor is not registered\n\t\t// via encoding.RegisterCompressor. This is possible when client uses\n\t\t// WithCompressor dial option.\n\t\tif !grpcutil.IsCompressorNameRegistered(callHdr.SendCompress) {\n\t\t\tif registeredCompressors != \"\" {\n\t\t\t\tregisteredCompressors += \",\"\n\t\t\t}\n\t\t\tregisteredCompressors += callHdr.SendCompress\n\t\t}\n\t}\n\n\tif registeredCompressors != \"\" {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-accept-encoding\", Value: registeredCompressors})\n\t}\n\tif dl, ok := ctx.Deadline(); ok {\n\t\t// Send out timeout regardless its value. The server can detect timeout context by itself.\n\t\t// TODO(mmukhi): Perhaps this field should be updated when actually writing out to the wire.\n\t\ttimeout := time.Until(dl)\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-timeout\", Value: grpcutil.EncodeDuration(timeout)})\n\t}\n\tfor k, v := range authData {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)})\n\t}\n\tfor k, v := range callAuthData {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)})\n\t}\n\tif b := stats.OutgoingTags(ctx); b != nil {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-tags-bin\", Value: encodeBinHeader(b)})\n\t}\n\tif b := stats.OutgoingTrace(ctx); b != nil {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-trace-bin\", Value: encodeBinHeader(b)})\n\t}\n\n\tif md, added, ok := metadata.FromOutgoingContextRaw(ctx); ok {\n\t\tvar k string\n\t\tfor k, vv := range md {\n\t\t\t// HTTP doesn't allow you to set pseudoheaders after non pseudoheaders were set.\n\t\t\tif isReservedHeader(k) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor _, v := range vv {\n\t\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)})\n\t\t\t}\n\t\t}\n\t\tfor _, vv := range added {\n\t\t\tfor i, v := range vv {\n\t\t\t\tif i%2 == 0 {\n\t\t\t\t\tk = strings.ToLower(v)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// HTTP doesn't allow you to set pseudoheaders after non pseudoheaders were set.\n\t\t\t\tif isReservedHeader(k) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)})\n\t\t\t}\n\t\t}\n\t}\n\tfor k, vv := range t.md {\n\t\tif isReservedHeader(k) {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, v := range vv {\n\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)})\n\t\t}\n\t}\n\treturn headerFields, nil\n}\n\nfunc (t *http2Client) createAudience(callHdr *CallHdr) string {\n\t// Create an audience string only if needed.\n\tif len(t.perRPCCreds) == 0 && callHdr.Creds == nil {\n\t\treturn \"\"\n\t}\n\t// Construct URI required to get auth request metadata.\n\t// Omit port if it is the default one.\n\thost := strings.TrimSuffix(callHdr.Host, \":443\")\n\tpos := strings.LastIndex(callHdr.Method, \"/\")\n\tif pos == -1 {\n\t\tpos = len(callHdr.Method)\n\t}\n\treturn \"https://\" + host + callHdr.Method[:pos]\n}\n\nfunc (t *http2Client) getTrAuthData(ctx context.Context, audience string) (map[string]string, error) {\n\tif len(t.perRPCCreds) == 0 {\n\t\treturn nil, nil\n\t}\n\tauthData := map[string]string{}\n\tfor _, c := range t.perRPCCreds {\n\t\tdata, err := c.GetRequestMetadata(ctx, audience)\n\t\tif err != nil {\n\t\t\tif st, ok := status.FromError(err); ok {\n\t\t\t\t// Restrict the code to the list allowed by gRFC A54.\n\t\t\t\tif istatus.IsRestrictedControlPlaneCode(st) {\n\t\t\t\t\terr = status.Errorf(codes.Internal, \"transport: received per-RPC creds error with illegal status: %v\", err)\n\t\t\t\t}\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\treturn nil, status.Errorf(codes.Unauthenticated, \"transport: per-RPC creds failed due to error: %v\", err)\n\t\t}\n\t\tfor k, v := range data {\n\t\t\t// Capital header names are illegal in HTTP/2.\n\t\t\tk = strings.ToLower(k)\n\t\t\tauthData[k] = v\n\t\t}\n\t}\n\treturn authData, nil\n}\n\nfunc (t *http2Client) getCallAuthData(ctx context.Context, audience string, callHdr *CallHdr) (map[string]string, error) {\n\tvar callAuthData map[string]string\n\t// Check if credentials.PerRPCCredentials were provided via call options.\n\t// Note: if these credentials are provided both via dial options and call\n\t// options, then both sets of credentials will be applied.\n\tif callCreds := callHdr.Creds; callCreds != nil {\n\t\tif callCreds.RequireTransportSecurity() {\n\t\t\tri, _ := credentials.RequestInfoFromContext(ctx)\n\t\t\tif !t.isSecure || credentials.CheckSecurityLevel(ri.AuthInfo, credentials.PrivacyAndIntegrity) != nil {\n\t\t\t\treturn nil, status.Error(codes.Unauthenticated, \"transport: cannot send secure credentials on an insecure connection\")\n\t\t\t}\n\t\t}\n\t\tdata, err := callCreds.GetRequestMetadata(ctx, audience)\n\t\tif err != nil {\n\t\t\tif st, ok := status.FromError(err); ok {\n\t\t\t\t// Restrict the code to the list allowed by gRFC A54.\n\t\t\t\tif istatus.IsRestrictedControlPlaneCode(st) {\n\t\t\t\t\terr = status.Errorf(codes.Internal, \"transport: received per-RPC creds error with illegal status: %v\", err)\n\t\t\t\t}\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn nil, status.Errorf(codes.Internal, \"transport: per-RPC creds failed due to error: %v\", err)\n\t\t}\n\t\tcallAuthData = make(map[string]string, len(data))\n\t\tfor k, v := range data {\n\t\t\t// Capital header names are illegal in HTTP/2\n\t\t\tk = strings.ToLower(k)\n\t\t\tcallAuthData[k] = v\n\t\t}\n\t}\n\treturn callAuthData, nil\n}\n\n// NewStreamError wraps an error and reports additional information.  Typically\n// NewStream errors result in transparent retry, as they mean nothing went onto\n// the wire.  However, there are two notable exceptions:\n//\n//  1. If the stream headers violate the max header list size allowed by the\n//     server.  It's possible this could succeed on another transport, even if\n//     it's unlikely, but do not transparently retry.\n//  2. If the credentials errored when requesting their headers.  In this case,\n//     it's possible a retry can fix the problem, but indefinitely transparently\n//     retrying is not appropriate as it is likely the credentials, if they can\n//     eventually succeed, would need I/O to do so.\ntype NewStreamError struct {\n\tErr error\n\n\tAllowTransparentRetry bool\n}\n\nfunc (e NewStreamError) Error() string {\n\treturn e.Err.Error()\n}\n\n// NewStream creates a stream and registers it into the transport as \"active\"\n// streams.  All non-nil errors returned will be *NewStreamError.\nfunc (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, error) {\n\tctx = peer.NewContext(ctx, t.getPeer())\n\n\t// ServerName field of the resolver returned address takes precedence over\n\t// Host field of CallHdr to determine the :authority header. This is because,\n\t// the ServerName field takes precedence for server authentication during\n\t// TLS handshake, and the :authority header should match the value used\n\t// for server authentication.\n\tif t.address.ServerName != \"\" {\n\t\tnewCallHdr := *callHdr\n\t\tnewCallHdr.Host = t.address.ServerName\n\t\tcallHdr = &newCallHdr\n\t}\n\n\theaderFields, err := t.createHeaderFields(ctx, callHdr)\n\tif err != nil {\n\t\treturn nil, &NewStreamError{Err: err, AllowTransparentRetry: false}\n\t}\n\ts := t.newStream(ctx, callHdr)\n\tcleanup := func(err error) {\n\t\tif s.swapState(streamDone) == streamDone {\n\t\t\t// If it was already done, return.\n\t\t\treturn\n\t\t}\n\t\t// The stream was unprocessed by the server.\n\t\tatomic.StoreUint32(&s.unprocessed, 1)\n\t\ts.write(recvMsg{err: err})\n\t\tclose(s.done)\n\t\t// If headerChan isn't closed, then close it.\n\t\tif atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) {\n\t\t\tclose(s.headerChan)\n\t\t}\n\t}\n\thdr := &headerFrame{\n\t\thf:        headerFields,\n\t\tendStream: false,\n\t\tinitStream: func(id uint32) error {\n\t\t\tt.mu.Lock()\n\t\t\t// TODO: handle transport closure in loopy instead and remove this\n\t\t\t// initStream is never called when transport is draining.\n\t\t\tif t.state == closing {\n\t\t\t\tt.mu.Unlock()\n\t\t\t\tcleanup(ErrConnClosing)\n\t\t\t\treturn ErrConnClosing\n\t\t\t}\n\t\t\tif channelz.IsOn() {\n\t\t\t\tatomic.AddInt64(&t.czData.streamsStarted, 1)\n\t\t\t\tatomic.StoreInt64(&t.czData.lastStreamCreatedTime, time.Now().UnixNano())\n\t\t\t}\n\t\t\t// If the keepalive goroutine has gone dormant, wake it up.\n\t\t\tif t.kpDormant {\n\t\t\t\tt.kpDormancyCond.Signal()\n\t\t\t}\n\t\t\tt.mu.Unlock()\n\t\t\treturn nil\n\t\t},\n\t\tonOrphaned: cleanup,\n\t\twq:         s.wq,\n\t}\n\tfirstTry := true\n\tvar ch chan struct{}\n\ttransportDrainRequired := false\n\tcheckForStreamQuota := func(it any) bool {\n\t\tif t.streamQuota <= 0 { // Can go negative if server decreases it.\n\t\t\tif firstTry {\n\t\t\t\tt.waitingStreams++\n\t\t\t}\n\t\t\tch = t.streamsQuotaAvailable\n\t\t\treturn false\n\t\t}\n\t\tif !firstTry {\n\t\t\tt.waitingStreams--\n\t\t}\n\t\tt.streamQuota--\n\t\th := it.(*headerFrame)\n\t\th.streamID = t.nextID\n\t\tt.nextID += 2\n\n\t\t// Drain client transport if nextID > MaxStreamID which signals gRPC that\n\t\t// the connection is closed and a new one must be created for subsequent RPCs.\n\t\ttransportDrainRequired = t.nextID > MaxStreamID\n\n\t\ts.id = h.streamID\n\t\ts.fc = &inFlow{limit: uint32(t.initialWindowSize)}\n\t\tt.mu.Lock()\n\t\tif t.state == draining || t.activeStreams == nil { // Can be niled from Close().\n\t\t\tt.mu.Unlock()\n\t\t\treturn false // Don't create a stream if the transport is already closed.\n\t\t}\n\t\tt.activeStreams[s.id] = s\n\t\tt.mu.Unlock()\n\t\tif t.streamQuota > 0 && t.waitingStreams > 0 {\n\t\t\tselect {\n\t\t\tcase t.streamsQuotaAvailable <- struct{}{}:\n\t\t\tdefault:\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\tvar hdrListSizeErr error\n\tcheckForHeaderListSize := func(it any) bool {\n\t\tif t.maxSendHeaderListSize == nil {\n\t\t\treturn true\n\t\t}\n\t\thdrFrame := it.(*headerFrame)\n\t\tvar sz int64\n\t\tfor _, f := range hdrFrame.hf {\n\t\t\tif sz += int64(f.Size()); sz > int64(*t.maxSendHeaderListSize) {\n\t\t\t\thdrListSizeErr = status.Errorf(codes.Internal, \"header list size to send violates the maximum size (%d bytes) set by server\", *t.maxSendHeaderListSize)\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\tfor {\n\t\tsuccess, err := t.controlBuf.executeAndPut(func(it any) bool {\n\t\t\treturn checkForHeaderListSize(it) && checkForStreamQuota(it)\n\t\t}, hdr)\n\t\tif err != nil {\n\t\t\t// Connection closed.\n\t\t\treturn nil, &NewStreamError{Err: err, AllowTransparentRetry: true}\n\t\t}\n\t\tif success {\n\t\t\tbreak\n\t\t}\n\t\tif hdrListSizeErr != nil {\n\t\t\treturn nil, &NewStreamError{Err: hdrListSizeErr}\n\t\t}\n\t\tfirstTry = false\n\t\tselect {\n\t\tcase <-ch:\n\t\tcase <-ctx.Done():\n\t\t\treturn nil, &NewStreamError{Err: ContextErr(ctx.Err())}\n\t\tcase <-t.goAway:\n\t\t\treturn nil, &NewStreamError{Err: errStreamDrain, AllowTransparentRetry: true}\n\t\tcase <-t.ctx.Done():\n\t\t\treturn nil, &NewStreamError{Err: ErrConnClosing, AllowTransparentRetry: true}\n\t\t}\n\t}\n\tif len(t.statsHandlers) != 0 {\n\t\theader, ok := metadata.FromOutgoingContext(ctx)\n\t\tif ok {\n\t\t\theader.Set(\"user-agent\", t.userAgent)\n\t\t} else {\n\t\t\theader = metadata.Pairs(\"user-agent\", t.userAgent)\n\t\t}\n\t\tfor _, sh := range t.statsHandlers {\n\t\t\t// Note: The header fields are compressed with hpack after this call returns.\n\t\t\t// No WireLength field is set here.\n\t\t\t// Note: Creating a new stats object to prevent pollution.\n\t\t\toutHeader := &stats.OutHeader{\n\t\t\t\tClient:      true,\n\t\t\t\tFullMethod:  callHdr.Method,\n\t\t\t\tRemoteAddr:  t.remoteAddr,\n\t\t\t\tLocalAddr:   t.localAddr,\n\t\t\t\tCompression: callHdr.SendCompress,\n\t\t\t\tHeader:      header,\n\t\t\t}\n\t\t\tsh.HandleRPC(s.ctx, outHeader)\n\t\t}\n\t}\n\tif transportDrainRequired {\n\t\tif t.logger.V(logLevel) {\n\t\t\tt.logger.Infof(\"Draining transport: t.nextID > MaxStreamID\")\n\t\t}\n\t\tt.GracefulClose()\n\t}\n\treturn s, nil\n}\n\n// CloseStream clears the footprint of a stream when the stream is not needed any more.\n// This must not be executed in reader's goroutine.\nfunc (t *http2Client) CloseStream(s *Stream, err error) {\n\tvar (\n\t\trst     bool\n\t\trstCode http2.ErrCode\n\t)\n\tif err != nil {\n\t\trst = true\n\t\trstCode = http2.ErrCodeCancel\n\t}\n\tt.closeStream(s, err, rst, rstCode, status.Convert(err), nil, false)\n}\n\nfunc (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2.ErrCode, st *status.Status, mdata map[string][]string, eosReceived bool) {\n\t// Set stream status to done.\n\tif s.swapState(streamDone) == streamDone {\n\t\t// If it was already done, return.  If multiple closeStream calls\n\t\t// happen simultaneously, wait for the first to finish.\n\t\t<-s.done\n\t\treturn\n\t}\n\t// status and trailers can be updated here without any synchronization because the stream goroutine will\n\t// only read it after it sees an io.EOF error from read or write and we'll write those errors\n\t// only after updating this.\n\ts.status = st\n\tif len(mdata) > 0 {\n\t\ts.trailer = mdata\n\t}\n\tif err != nil {\n\t\t// This will unblock reads eventually.\n\t\ts.write(recvMsg{err: err})\n\t}\n\t// If headerChan isn't closed, then close it.\n\tif atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) {\n\t\ts.noHeaders = true\n\t\tclose(s.headerChan)\n\t}\n\tcleanup := &cleanupStream{\n\t\tstreamID: s.id,\n\t\tonWrite: func() {\n\t\t\tt.mu.Lock()\n\t\t\tif t.activeStreams != nil {\n\t\t\t\tdelete(t.activeStreams, s.id)\n\t\t\t}\n\t\t\tt.mu.Unlock()\n\t\t\tif channelz.IsOn() {\n\t\t\t\tif eosReceived {\n\t\t\t\t\tatomic.AddInt64(&t.czData.streamsSucceeded, 1)\n\t\t\t\t} else {\n\t\t\t\t\tatomic.AddInt64(&t.czData.streamsFailed, 1)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\trst:     rst,\n\t\trstCode: rstCode,\n\t}\n\taddBackStreamQuota := func(any) bool {\n\t\tt.streamQuota++\n\t\tif t.streamQuota > 0 && t.waitingStreams > 0 {\n\t\t\tselect {\n\t\t\tcase t.streamsQuotaAvailable <- struct{}{}:\n\t\t\tdefault:\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\tt.controlBuf.executeAndPut(addBackStreamQuota, cleanup)\n\t// This will unblock write.\n\tclose(s.done)\n\tif s.doneFunc != nil {\n\t\ts.doneFunc()\n\t}\n}\n\n// Close kicks off the shutdown process of the transport. This should be called\n// only once on a transport. Once it is called, the transport should not be\n// accessed any more.\nfunc (t *http2Client) Close(err error) {\n\tt.mu.Lock()\n\t// Make sure we only close once.\n\tif t.state == closing {\n\t\tt.mu.Unlock()\n\t\treturn\n\t}\n\tif t.logger.V(logLevel) {\n\t\tt.logger.Infof(\"Closing: %v\", err)\n\t}\n\t// Call t.onClose ASAP to prevent the client from attempting to create new\n\t// streams.\n\tif t.state != draining {\n\t\tt.onClose(GoAwayInvalid)\n\t}\n\tt.state = closing\n\tstreams := t.activeStreams\n\tt.activeStreams = nil\n\tif t.kpDormant {\n\t\t// If the keepalive goroutine is blocked on this condition variable, we\n\t\t// should unblock it so that the goroutine eventually exits.\n\t\tt.kpDormancyCond.Signal()\n\t}\n\tt.mu.Unlock()\n\tt.controlBuf.finish()\n\tt.cancel()\n\tt.conn.Close()\n\tchannelz.RemoveEntry(t.channelzID)\n\t// Append info about previous goaways if there were any, since this may be important\n\t// for understanding the root cause for this connection to be closed.\n\t_, goAwayDebugMessage := t.GetGoAwayReason()\n\n\tvar st *status.Status\n\tif len(goAwayDebugMessage) > 0 {\n\t\tst = status.Newf(codes.Unavailable, \"closing transport due to: %v, received prior goaway: %v\", err, goAwayDebugMessage)\n\t\terr = st.Err()\n\t} else {\n\t\tst = status.New(codes.Unavailable, err.Error())\n\t}\n\n\t// Notify all active streams.\n\tfor _, s := range streams {\n\t\tt.closeStream(s, err, false, http2.ErrCodeNo, st, nil, false)\n\t}\n\tfor _, sh := range t.statsHandlers {\n\t\tconnEnd := &stats.ConnEnd{\n\t\t\tClient: true,\n\t\t}\n\t\tsh.HandleConn(t.ctx, connEnd)\n\t}\n}\n\n// GracefulClose sets the state to draining, which prevents new streams from\n// being created and causes the transport to be closed when the last active\n// stream is closed.  If there are no active streams, the transport is closed\n// immediately.  This does nothing if the transport is already draining or\n// closing.\nfunc (t *http2Client) GracefulClose() {\n\tt.mu.Lock()\n\t// Make sure we move to draining only from active.\n\tif t.state == draining || t.state == closing {\n\t\tt.mu.Unlock()\n\t\treturn\n\t}\n\tif t.logger.V(logLevel) {\n\t\tt.logger.Infof(\"GracefulClose called\")\n\t}\n\tt.onClose(GoAwayInvalid)\n\tt.state = draining\n\tactive := len(t.activeStreams)\n\tt.mu.Unlock()\n\tif active == 0 {\n\t\tt.Close(connectionErrorf(true, nil, \"no active streams left to process while draining\"))\n\t\treturn\n\t}\n\tt.controlBuf.put(&incomingGoAway{})\n}\n\n// Write formats the data into HTTP2 data frame(s) and sends it out. The caller\n// should proceed only if Write returns nil.\nfunc (t *http2Client) Write(s *Stream, hdr []byte, data []byte, opts *Options) error {\n\tif opts.Last {\n\t\t// If it's the last message, update stream state.\n\t\tif !s.compareAndSwapState(streamActive, streamWriteDone) {\n\t\t\treturn errStreamDone\n\t\t}\n\t} else if s.getState() != streamActive {\n\t\treturn errStreamDone\n\t}\n\tdf := &dataFrame{\n\t\tstreamID:  s.id,\n\t\tendStream: opts.Last,\n\t\th:         hdr,\n\t\td:         data,\n\t}\n\tif hdr != nil || data != nil { // If it's not an empty data frame, check quota.\n\t\tif err := s.wq.get(int32(len(hdr) + len(data))); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn t.controlBuf.put(df)\n}\n\nfunc (t *http2Client) getStream(f http2.Frame) *Stream {\n\tt.mu.Lock()\n\ts := t.activeStreams[f.Header().StreamID]\n\tt.mu.Unlock()\n\treturn s\n}\n\n// adjustWindow sends out extra window update over the initial window size\n// of stream if the application is requesting data larger in size than\n// the window.\nfunc (t *http2Client) adjustWindow(s *Stream, n uint32) {\n\tif w := s.fc.maybeAdjust(n); w > 0 {\n\t\tt.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w})\n\t}\n}\n\n// updateWindow adjusts the inbound quota for the stream.\n// Window updates will be sent out when the cumulative quota\n// exceeds the corresponding threshold.\nfunc (t *http2Client) updateWindow(s *Stream, n uint32) {\n\tif w := s.fc.onRead(n); w > 0 {\n\t\tt.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w})\n\t}\n}\n\n// updateFlowControl updates the incoming flow control windows\n// for the transport and the stream based on the current bdp\n// estimation.\nfunc (t *http2Client) updateFlowControl(n uint32) {\n\tupdateIWS := func(any) bool {\n\t\tt.initialWindowSize = int32(n)\n\t\tt.mu.Lock()\n\t\tfor _, s := range t.activeStreams {\n\t\t\ts.fc.newLimit(n)\n\t\t}\n\t\tt.mu.Unlock()\n\t\treturn true\n\t}\n\tt.controlBuf.executeAndPut(updateIWS, &outgoingWindowUpdate{streamID: 0, increment: t.fc.newLimit(n)})\n\tt.controlBuf.put(&outgoingSettings{\n\t\tss: []http2.Setting{\n\t\t\t{\n\t\t\t\tID:  http2.SettingInitialWindowSize,\n\t\t\t\tVal: n,\n\t\t\t},\n\t\t},\n\t})\n}\n\nfunc (t *http2Client) handleData(f *http2.DataFrame) {\n\tsize := f.Header().Length\n\tvar sendBDPPing bool\n\tif t.bdpEst != nil {\n\t\tsendBDPPing = t.bdpEst.add(size)\n\t}\n\t// Decouple connection's flow control from application's read.\n\t// An update on connection's flow control should not depend on\n\t// whether user application has read the data or not. Such a\n\t// restriction is already imposed on the stream's flow control,\n\t// and therefore the sender will be blocked anyways.\n\t// Decoupling the connection flow control will prevent other\n\t// active(fast) streams from starving in presence of slow or\n\t// inactive streams.\n\t//\n\tif w := t.fc.onData(size); w > 0 {\n\t\tt.controlBuf.put(&outgoingWindowUpdate{\n\t\t\tstreamID:  0,\n\t\t\tincrement: w,\n\t\t})\n\t}\n\tif sendBDPPing {\n\t\t// Avoid excessive ping detection (e.g. in an L7 proxy)\n\t\t// by sending a window update prior to the BDP ping.\n\n\t\tif w := t.fc.reset(); w > 0 {\n\t\t\tt.controlBuf.put(&outgoingWindowUpdate{\n\t\t\t\tstreamID:  0,\n\t\t\t\tincrement: w,\n\t\t\t})\n\t\t}\n\n\t\tt.controlBuf.put(bdpPing)\n\t}\n\t// Select the right stream to dispatch.\n\ts := t.getStream(f)\n\tif s == nil {\n\t\treturn\n\t}\n\tif size > 0 {\n\t\tif err := s.fc.onData(size); err != nil {\n\t\t\tt.closeStream(s, io.EOF, true, http2.ErrCodeFlowControl, status.New(codes.Internal, err.Error()), nil, false)\n\t\t\treturn\n\t\t}\n\t\tif f.Header().Flags.Has(http2.FlagDataPadded) {\n\t\t\tif w := s.fc.onRead(size - uint32(len(f.Data()))); w > 0 {\n\t\t\t\tt.controlBuf.put(&outgoingWindowUpdate{s.id, w})\n\t\t\t}\n\t\t}\n\t\t// TODO(bradfitz, zhaoq): A copy is required here because there is no\n\t\t// guarantee f.Data() is consumed before the arrival of next frame.\n\t\t// Can this copy be eliminated?\n\t\tif len(f.Data()) > 0 {\n\t\t\tbuffer := t.bufferPool.get()\n\t\t\tbuffer.Reset()\n\t\t\tbuffer.Write(f.Data())\n\t\t\ts.write(recvMsg{buffer: buffer})\n\t\t}\n\t}\n\t// The server has closed the stream without sending trailers.  Record that\n\t// the read direction is closed, and set the status appropriately.\n\tif f.StreamEnded() {\n\t\tt.closeStream(s, io.EOF, false, http2.ErrCodeNo, status.New(codes.Internal, \"server closed the stream without sending trailers\"), nil, true)\n\t}\n}\n\nfunc (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) {\n\ts := t.getStream(f)\n\tif s == nil {\n\t\treturn\n\t}\n\tif f.ErrCode == http2.ErrCodeRefusedStream {\n\t\t// The stream was unprocessed by the server.\n\t\tatomic.StoreUint32(&s.unprocessed, 1)\n\t}\n\tstatusCode, ok := http2ErrConvTab[f.ErrCode]\n\tif !ok {\n\t\tif t.logger.V(logLevel) {\n\t\t\tt.logger.Infof(\"Received a RST_STREAM frame with code %q, but found no mapped gRPC status\", f.ErrCode)\n\t\t}\n\t\tstatusCode = codes.Unknown\n\t}\n\tif statusCode == codes.Canceled {\n\t\tif d, ok := s.ctx.Deadline(); ok && !d.After(time.Now()) {\n\t\t\t// Our deadline was already exceeded, and that was likely the cause\n\t\t\t// of this cancelation.  Alter the status code accordingly.\n\t\t\tstatusCode = codes.DeadlineExceeded\n\t\t}\n\t}\n\tt.closeStream(s, io.EOF, false, http2.ErrCodeNo, status.Newf(statusCode, \"stream terminated by RST_STREAM with error code: %v\", f.ErrCode), nil, false)\n}\n\nfunc (t *http2Client) handleSettings(f *http2.SettingsFrame, isFirst bool) {\n\tif f.IsAck() {\n\t\treturn\n\t}\n\tvar maxStreams *uint32\n\tvar ss []http2.Setting\n\tvar updateFuncs []func()\n\tf.ForeachSetting(func(s http2.Setting) error {\n\t\tswitch s.ID {\n\t\tcase http2.SettingMaxConcurrentStreams:\n\t\t\tmaxStreams = new(uint32)\n\t\t\t*maxStreams = s.Val\n\t\tcase http2.SettingMaxHeaderListSize:\n\t\t\tupdateFuncs = append(updateFuncs, func() {\n\t\t\t\tt.maxSendHeaderListSize = new(uint32)\n\t\t\t\t*t.maxSendHeaderListSize = s.Val\n\t\t\t})\n\t\tdefault:\n\t\t\tss = append(ss, s)\n\t\t}\n\t\treturn nil\n\t})\n\tif isFirst && maxStreams == nil {\n\t\tmaxStreams = new(uint32)\n\t\t*maxStreams = math.MaxUint32\n\t}\n\tsf := &incomingSettings{\n\t\tss: ss,\n\t}\n\tif maxStreams != nil {\n\t\tupdateStreamQuota := func() {\n\t\t\tdelta := int64(*maxStreams) - int64(t.maxConcurrentStreams)\n\t\t\tt.maxConcurrentStreams = *maxStreams\n\t\t\tt.streamQuota += delta\n\t\t\tif delta > 0 && t.waitingStreams > 0 {\n\t\t\t\tclose(t.streamsQuotaAvailable) // wake all of them up.\n\t\t\t\tt.streamsQuotaAvailable = make(chan struct{}, 1)\n\t\t\t}\n\t\t}\n\t\tupdateFuncs = append(updateFuncs, updateStreamQuota)\n\t}\n\tt.controlBuf.executeAndPut(func(any) bool {\n\t\tfor _, f := range updateFuncs {\n\t\t\tf()\n\t\t}\n\t\treturn true\n\t}, sf)\n}\n\nfunc (t *http2Client) handlePing(f *http2.PingFrame) {\n\tif f.IsAck() {\n\t\t// Maybe it's a BDP ping.\n\t\tif t.bdpEst != nil {\n\t\t\tt.bdpEst.calculate(f.Data)\n\t\t}\n\t\treturn\n\t}\n\tpingAck := &ping{ack: true}\n\tcopy(pingAck.data[:], f.Data[:])\n\tt.controlBuf.put(pingAck)\n}\n\nfunc (t *http2Client) handleGoAway(f *http2.GoAwayFrame) {\n\tt.mu.Lock()\n\tif t.state == closing {\n\t\tt.mu.Unlock()\n\t\treturn\n\t}\n\tif f.ErrCode == http2.ErrCodeEnhanceYourCalm && string(f.DebugData()) == \"too_many_pings\" {\n\t\t// When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug\n\t\t// data equal to ASCII \"too_many_pings\", it should log the occurrence at a log level that is\n\t\t// enabled by default and double the configure KEEPALIVE_TIME used for new connections\n\t\t// on that channel.\n\t\tlogger.Errorf(\"Client received GoAway with error code ENHANCE_YOUR_CALM and debug data equal to ASCII \\\"too_many_pings\\\".\")\n\t}\n\tid := f.LastStreamID\n\tif id > 0 && id%2 == 0 {\n\t\tt.mu.Unlock()\n\t\tt.Close(connectionErrorf(true, nil, \"received goaway with non-zero even-numbered numbered stream id: %v\", id))\n\t\treturn\n\t}\n\t// A client can receive multiple GoAways from the server (see\n\t// https://github.com/grpc/grpc-go/issues/1387).  The idea is that the first\n\t// GoAway will be sent with an ID of MaxInt32 and the second GoAway will be\n\t// sent after an RTT delay with the ID of the last stream the server will\n\t// process.\n\t//\n\t// Therefore, when we get the first GoAway we don't necessarily close any\n\t// streams. While in case of second GoAway we close all streams created after\n\t// the GoAwayId. This way streams that were in-flight while the GoAway from\n\t// server was being sent don't get killed.\n\tselect {\n\tcase <-t.goAway: // t.goAway has been closed (i.e.,multiple GoAways).\n\t\t// If there are multiple GoAways the first one should always have an ID greater than the following ones.\n\t\tif id > t.prevGoAwayID {\n\t\t\tt.mu.Unlock()\n\t\t\tt.Close(connectionErrorf(true, nil, \"received goaway with stream id: %v, which exceeds stream id of previous goaway: %v\", id, t.prevGoAwayID))\n\t\t\treturn\n\t\t}\n\tdefault:\n\t\tt.setGoAwayReason(f)\n\t\tclose(t.goAway)\n\t\tdefer t.controlBuf.put(&incomingGoAway{}) // Defer as t.mu is currently held.\n\t\t// Notify the clientconn about the GOAWAY before we set the state to\n\t\t// draining, to allow the client to stop attempting to create streams\n\t\t// before disallowing new streams on this connection.\n\t\tif t.state != draining {\n\t\t\tt.onClose(t.goAwayReason)\n\t\t\tt.state = draining\n\t\t}\n\t}\n\t// All streams with IDs greater than the GoAwayId\n\t// and smaller than the previous GoAway ID should be killed.\n\tupperLimit := t.prevGoAwayID\n\tif upperLimit == 0 { // This is the first GoAway Frame.\n\t\tupperLimit = math.MaxUint32 // Kill all streams after the GoAway ID.\n\t}\n\n\tt.prevGoAwayID = id\n\tif len(t.activeStreams) == 0 {\n\t\tt.mu.Unlock()\n\t\tt.Close(connectionErrorf(true, nil, \"received goaway and there are no active streams\"))\n\t\treturn\n\t}\n\n\tstreamsToClose := make([]*Stream, 0)\n\tfor streamID, stream := range t.activeStreams {\n\t\tif streamID > id && streamID <= upperLimit {\n\t\t\t// The stream was unprocessed by the server.\n\t\t\tif streamID > id && streamID <= upperLimit {\n\t\t\t\tatomic.StoreUint32(&stream.unprocessed, 1)\n\t\t\t\tstreamsToClose = append(streamsToClose, stream)\n\t\t\t}\n\t\t}\n\t}\n\tt.mu.Unlock()\n\t// Called outside t.mu because closeStream can take controlBuf's mu, which\n\t// could induce deadlock and is not allowed.\n\tfor _, stream := range streamsToClose {\n\t\tt.closeStream(stream, errStreamDrain, false, http2.ErrCodeNo, statusGoAway, nil, false)\n\t}\n}\n\n// setGoAwayReason sets the value of t.goAwayReason based\n// on the GoAway frame received.\n// It expects a lock on transport's mutex to be held by\n// the caller.\nfunc (t *http2Client) setGoAwayReason(f *http2.GoAwayFrame) {\n\tt.goAwayReason = GoAwayNoReason\n\tswitch f.ErrCode {\n\tcase http2.ErrCodeEnhanceYourCalm:\n\t\tif string(f.DebugData()) == \"too_many_pings\" {\n\t\t\tt.goAwayReason = GoAwayTooManyPings\n\t\t}\n\t}\n\tif len(f.DebugData()) == 0 {\n\t\tt.goAwayDebugMessage = fmt.Sprintf(\"code: %s\", f.ErrCode)\n\t} else {\n\t\tt.goAwayDebugMessage = fmt.Sprintf(\"code: %s, debug data: %q\", f.ErrCode, string(f.DebugData()))\n\t}\n}\n\nfunc (t *http2Client) GetGoAwayReason() (GoAwayReason, string) {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\treturn t.goAwayReason, t.goAwayDebugMessage\n}\n\nfunc (t *http2Client) handleWindowUpdate(f *http2.WindowUpdateFrame) {\n\tt.controlBuf.put(&incomingWindowUpdate{\n\t\tstreamID:  f.Header().StreamID,\n\t\tincrement: f.Increment,\n\t})\n}\n\n// operateHeaders takes action on the decoded headers.\nfunc (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) {\n\ts := t.getStream(frame)\n\tif s == nil {\n\t\treturn\n\t}\n\tendStream := frame.StreamEnded()\n\tatomic.StoreUint32(&s.bytesReceived, 1)\n\tinitialHeader := atomic.LoadUint32(&s.headerChanClosed) == 0\n\n\tif !initialHeader && !endStream {\n\t\t// As specified by gRPC over HTTP2, a HEADERS frame (and associated CONTINUATION frames) can only appear at the start or end of a stream. Therefore, second HEADERS frame must have EOS bit set.\n\t\tst := status.New(codes.Internal, \"a HEADERS frame cannot appear in the middle of a stream\")\n\t\tt.closeStream(s, st.Err(), true, http2.ErrCodeProtocol, st, nil, false)\n\t\treturn\n\t}\n\n\t// frame.Truncated is set to true when framer detects that the current header\n\t// list size hits MaxHeaderListSize limit.\n\tif frame.Truncated {\n\t\tse := status.New(codes.Internal, \"peer header list size exceeded limit\")\n\t\tt.closeStream(s, se.Err(), true, http2.ErrCodeFrameSize, se, nil, endStream)\n\t\treturn\n\t}\n\n\tvar (\n\t\t// If a gRPC Response-Headers has already been received, then it means\n\t\t// that the peer is speaking gRPC and we are in gRPC mode.\n\t\tisGRPC         = !initialHeader\n\t\tmdata          = make(map[string][]string)\n\t\tcontentTypeErr = \"malformed header: missing HTTP content-type\"\n\t\tgrpcMessage    string\n\t\trecvCompress   string\n\t\thttpStatusCode *int\n\t\thttpStatusErr  string\n\t\trawStatusCode  = codes.Unknown\n\t\t// headerError is set if an error is encountered while parsing the headers\n\t\theaderError string\n\t)\n\n\tif initialHeader {\n\t\thttpStatusErr = \"malformed header: missing HTTP status\"\n\t}\n\n\tfor _, hf := range frame.Fields {\n\t\tswitch hf.Name {\n\t\tcase \"content-type\":\n\t\t\tif _, validContentType := grpcutil.ContentSubtype(hf.Value); !validContentType {\n\t\t\t\tcontentTypeErr = fmt.Sprintf(\"transport: received unexpected content-type %q\", hf.Value)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcontentTypeErr = \"\"\n\t\t\tmdata[hf.Name] = append(mdata[hf.Name], hf.Value)\n\t\t\tisGRPC = true\n\t\tcase \"grpc-encoding\":\n\t\t\trecvCompress = hf.Value\n\t\tcase \"grpc-status\":\n\t\t\tcode, err := strconv.ParseInt(hf.Value, 10, 32)\n\t\t\tif err != nil {\n\t\t\t\tse := status.New(codes.Internal, fmt.Sprintf(\"transport: malformed grpc-status: %v\", err))\n\t\t\t\tt.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trawStatusCode = codes.Code(uint32(code))\n\t\tcase \"grpc-message\":\n\t\t\tgrpcMessage = decodeGrpcMessage(hf.Value)\n\t\tcase \":status\":\n\t\t\tif hf.Value == \"200\" {\n\t\t\t\thttpStatusErr = \"\"\n\t\t\t\tstatusCode := 200\n\t\t\t\thttpStatusCode = &statusCode\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tc, err := strconv.ParseInt(hf.Value, 10, 32)\n\t\t\tif err != nil {\n\t\t\t\tse := status.New(codes.Internal, fmt.Sprintf(\"transport: malformed http-status: %v\", err))\n\t\t\t\tt.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tstatusCode := int(c)\n\t\t\thttpStatusCode = &statusCode\n\n\t\t\thttpStatusErr = fmt.Sprintf(\n\t\t\t\t\"unexpected HTTP status code received from server: %d (%s)\",\n\t\t\t\tstatusCode,\n\t\t\t\thttp.StatusText(statusCode),\n\t\t\t)\n\t\tdefault:\n\t\t\tif isReservedHeader(hf.Name) && !isWhitelistedHeader(hf.Name) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv, err := decodeMetadataHeader(hf.Name, hf.Value)\n\t\t\tif err != nil {\n\t\t\t\theaderError = fmt.Sprintf(\"transport: malformed %s: %v\", hf.Name, err)\n\t\t\t\tlogger.Warningf(\"Failed to decode metadata header (%q, %q): %v\", hf.Name, hf.Value, err)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tmdata[hf.Name] = append(mdata[hf.Name], v)\n\t\t}\n\t}\n\n\tif !isGRPC || httpStatusErr != \"\" {\n\t\tvar code = codes.Internal // when header does not include HTTP status, return INTERNAL\n\n\t\tif httpStatusCode != nil {\n\t\t\tvar ok bool\n\t\t\tcode, ok = HTTPStatusConvTab[*httpStatusCode]\n\t\t\tif !ok {\n\t\t\t\tcode = codes.Unknown\n\t\t\t}\n\t\t}\n\t\tvar errs []string\n\t\tif httpStatusErr != \"\" {\n\t\t\terrs = append(errs, httpStatusErr)\n\t\t}\n\t\tif contentTypeErr != \"\" {\n\t\t\terrs = append(errs, contentTypeErr)\n\t\t}\n\t\t// Verify the HTTP response is a 200.\n\t\tse := status.New(code, strings.Join(errs, \"; \"))\n\t\tt.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)\n\t\treturn\n\t}\n\n\tif headerError != \"\" {\n\t\tse := status.New(codes.Internal, headerError)\n\t\tt.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)\n\t\treturn\n\t}\n\n\t// For headers, set them in s.header and close headerChan.  For trailers or\n\t// trailers-only, closeStream will set the trailers and close headerChan as\n\t// needed.\n\tif !endStream {\n\t\t// If headerChan hasn't been closed yet (expected, given we checked it\n\t\t// above, but something else could have potentially closed the whole\n\t\t// stream).\n\t\tif atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) {\n\t\t\ts.headerValid = true\n\t\t\t// These values can be set without any synchronization because\n\t\t\t// stream goroutine will read it only after seeing a closed\n\t\t\t// headerChan which we'll close after setting this.\n\t\t\ts.recvCompress = recvCompress\n\t\t\tif len(mdata) > 0 {\n\t\t\t\ts.header = mdata\n\t\t\t}\n\t\t\tclose(s.headerChan)\n\t\t}\n\t}\n\n\tfor _, sh := range t.statsHandlers {\n\t\tif !endStream {\n\t\t\tinHeader := &stats.InHeader{\n\t\t\t\tClient:      true,\n\t\t\t\tWireLength:  int(frame.Header().Length),\n\t\t\t\tHeader:      metadata.MD(mdata).Copy(),\n\t\t\t\tCompression: s.recvCompress,\n\t\t\t}\n\t\t\tsh.HandleRPC(s.ctx, inHeader)\n\t\t} else {\n\t\t\tinTrailer := &stats.InTrailer{\n\t\t\t\tClient:     true,\n\t\t\t\tWireLength: int(frame.Header().Length),\n\t\t\t\tTrailer:    metadata.MD(mdata).Copy(),\n\t\t\t}\n\t\t\tsh.HandleRPC(s.ctx, inTrailer)\n\t\t}\n\t}\n\n\tif !endStream {\n\t\treturn\n\t}\n\n\tstatus := istatus.NewWithProto(rawStatusCode, grpcMessage, mdata[grpcStatusDetailsBinHeader])\n\n\t// If client received END_STREAM from server while stream was still active,\n\t// send RST_STREAM.\n\trstStream := s.getState() == streamActive\n\tt.closeStream(s, io.EOF, rstStream, http2.ErrCodeNo, status, mdata, true)\n}\n\n// readServerPreface reads and handles the initial settings frame from the\n// server.\nfunc (t *http2Client) readServerPreface() error {\n\tframe, err := t.framer.fr.ReadFrame()\n\tif err != nil {\n\t\treturn connectionErrorf(true, err, \"error reading server preface: %v\", err)\n\t}\n\tsf, ok := frame.(*http2.SettingsFrame)\n\tif !ok {\n\t\treturn connectionErrorf(true, nil, \"initial http2 frame from server is not a settings frame: %T\", frame)\n\t}\n\tt.handleSettings(sf, true)\n\treturn nil\n}\n\n// reader verifies the server preface and reads all subsequent data from\n// network connection.  If the server preface is not read successfully, an\n// error is pushed to errCh; otherwise errCh is closed with no error.\nfunc (t *http2Client) reader(errCh chan<- error) {\n\tdefer close(t.readerDone)\n\n\tif err := t.readServerPreface(); err != nil {\n\t\terrCh <- err\n\t\treturn\n\t}\n\tclose(errCh)\n\tif t.keepaliveEnabled {\n\t\tatomic.StoreInt64(&t.lastRead, time.Now().UnixNano())\n\t}\n\n\t// loop to keep reading incoming messages on this transport.\n\tfor {\n\t\tt.controlBuf.throttle()\n\t\tframe, err := t.framer.fr.ReadFrame()\n\t\tif t.keepaliveEnabled {\n\t\t\tatomic.StoreInt64(&t.lastRead, time.Now().UnixNano())\n\t\t}\n\t\tif err != nil {\n\t\t\t// Abort an active stream if the http2.Framer returns a\n\t\t\t// http2.StreamError. This can happen only if the server's response\n\t\t\t// is malformed http2.\n\t\t\tif se, ok := err.(http2.StreamError); ok {\n\t\t\t\tt.mu.Lock()\n\t\t\t\ts := t.activeStreams[se.StreamID]\n\t\t\t\tt.mu.Unlock()\n\t\t\t\tif s != nil {\n\t\t\t\t\t// use error detail to provide better err message\n\t\t\t\t\tcode := http2ErrConvTab[se.Code]\n\t\t\t\t\terrorDetail := t.framer.fr.ErrorDetail()\n\t\t\t\t\tvar msg string\n\t\t\t\t\tif errorDetail != nil {\n\t\t\t\t\t\tmsg = errorDetail.Error()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmsg = \"received invalid frame\"\n\t\t\t\t\t}\n\t\t\t\t\tt.closeStream(s, status.Error(code, msg), true, http2.ErrCodeProtocol, status.New(code, msg), nil, false)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t} else {\n\t\t\t\t// Transport error.\n\t\t\t\tt.Close(connectionErrorf(true, err, \"error reading from server: %v\", err))\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tswitch frame := frame.(type) {\n\t\tcase *http2.MetaHeadersFrame:\n\t\t\tt.operateHeaders(frame)\n\t\tcase *http2.DataFrame:\n\t\t\tt.handleData(frame)\n\t\tcase *http2.RSTStreamFrame:\n\t\t\tt.handleRSTStream(frame)\n\t\tcase *http2.SettingsFrame:\n\t\t\tt.handleSettings(frame, false)\n\t\tcase *http2.PingFrame:\n\t\t\tt.handlePing(frame)\n\t\tcase *http2.GoAwayFrame:\n\t\t\tt.handleGoAway(frame)\n\t\tcase *http2.WindowUpdateFrame:\n\t\t\tt.handleWindowUpdate(frame)\n\t\tdefault:\n\t\t\tif logger.V(logLevel) {\n\t\t\t\tlogger.Errorf(\"transport: http2Client.reader got unhandled frame type %v.\", frame)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc minTime(a, b time.Duration) time.Duration {\n\tif a < b {\n\t\treturn a\n\t}\n\treturn b\n}\n\n// keepalive running in a separate goroutine makes sure the connection is alive by sending pings.\nfunc (t *http2Client) keepalive() {\n\tp := &ping{data: [8]byte{}}\n\t// True iff a ping has been sent, and no data has been received since then.\n\toutstandingPing := false\n\t// Amount of time remaining before which we should receive an ACK for the\n\t// last sent ping.\n\ttimeoutLeft := time.Duration(0)\n\t// Records the last value of t.lastRead before we go block on the timer.\n\t// This is required to check for read activity since then.\n\tprevNano := time.Now().UnixNano()\n\ttimer := time.NewTimer(t.kp.Time)\n\tfor {\n\t\tselect {\n\t\tcase <-timer.C:\n\t\t\tlastRead := atomic.LoadInt64(&t.lastRead)\n\t\t\tif lastRead > prevNano {\n\t\t\t\t// There has been read activity since the last time we were here.\n\t\t\t\toutstandingPing = false\n\t\t\t\t// Next timer should fire at kp.Time seconds from lastRead time.\n\t\t\t\ttimer.Reset(time.Duration(lastRead) + t.kp.Time - time.Duration(time.Now().UnixNano()))\n\t\t\t\tprevNano = lastRead\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif outstandingPing && timeoutLeft <= 0 {\n\t\t\t\tt.Close(connectionErrorf(true, nil, \"keepalive ping failed to receive ACK within timeout\"))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tt.mu.Lock()\n\t\t\tif t.state == closing {\n\t\t\t\t// If the transport is closing, we should exit from the\n\t\t\t\t// keepalive goroutine here. If not, we could have a race\n\t\t\t\t// between the call to Signal() from Close() and the call to\n\t\t\t\t// Wait() here, whereby the keepalive goroutine ends up\n\t\t\t\t// blocking on the condition variable which will never be\n\t\t\t\t// signalled again.\n\t\t\t\tt.mu.Unlock()\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif len(t.activeStreams) < 1 && !t.kp.PermitWithoutStream {\n\t\t\t\t// If a ping was sent out previously (because there were active\n\t\t\t\t// streams at that point) which wasn't acked and its timeout\n\t\t\t\t// hadn't fired, but we got here and are about to go dormant,\n\t\t\t\t// we should make sure that we unconditionally send a ping once\n\t\t\t\t// we awaken.\n\t\t\t\toutstandingPing = false\n\t\t\t\tt.kpDormant = true\n\t\t\t\tt.kpDormancyCond.Wait()\n\t\t\t}\n\t\t\tt.kpDormant = false\n\t\t\tt.mu.Unlock()\n\n\t\t\t// We get here either because we were dormant and a new stream was\n\t\t\t// created which unblocked the Wait() call, or because the\n\t\t\t// keepalive timer expired. In both cases, we need to send a ping.\n\t\t\tif !outstandingPing {\n\t\t\t\tif channelz.IsOn() {\n\t\t\t\t\tatomic.AddInt64(&t.czData.kpCount, 1)\n\t\t\t\t}\n\t\t\t\tt.controlBuf.put(p)\n\t\t\t\ttimeoutLeft = t.kp.Timeout\n\t\t\t\toutstandingPing = true\n\t\t\t}\n\t\t\t// The amount of time to sleep here is the minimum of kp.Time and\n\t\t\t// timeoutLeft. This will ensure that we wait only for kp.Time\n\t\t\t// before sending out the next ping (for cases where the ping is\n\t\t\t// acked).\n\t\t\tsleepDuration := minTime(t.kp.Time, timeoutLeft)\n\t\t\ttimeoutLeft -= sleepDuration\n\t\t\ttimer.Reset(sleepDuration)\n\t\tcase <-t.ctx.Done():\n\t\t\tif !timer.Stop() {\n\t\t\t\t<-timer.C\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (t *http2Client) Error() <-chan struct{} {\n\treturn t.ctx.Done()\n}\n\nfunc (t *http2Client) GoAway() <-chan struct{} {\n\treturn t.goAway\n}\n\nfunc (t *http2Client) ChannelzMetric() *channelz.SocketInternalMetric {\n\ts := channelz.SocketInternalMetric{\n\t\tStreamsStarted:                  atomic.LoadInt64(&t.czData.streamsStarted),\n\t\tStreamsSucceeded:                atomic.LoadInt64(&t.czData.streamsSucceeded),\n\t\tStreamsFailed:                   atomic.LoadInt64(&t.czData.streamsFailed),\n\t\tMessagesSent:                    atomic.LoadInt64(&t.czData.msgSent),\n\t\tMessagesReceived:                atomic.LoadInt64(&t.czData.msgRecv),\n\t\tKeepAlivesSent:                  atomic.LoadInt64(&t.czData.kpCount),\n\t\tLastLocalStreamCreatedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastStreamCreatedTime)),\n\t\tLastMessageSentTimestamp:        time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgSentTime)),\n\t\tLastMessageReceivedTimestamp:    time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgRecvTime)),\n\t\tLocalFlowControlWindow:          int64(t.fc.getSize()),\n\t\tSocketOptions:                   channelz.GetSocketOption(t.conn),\n\t\tLocalAddr:                       t.localAddr,\n\t\tRemoteAddr:                      t.remoteAddr,\n\t\t// RemoteName :\n\t}\n\tif au, ok := t.authInfo.(credentials.ChannelzSecurityInfo); ok {\n\t\ts.Security = au.GetSecurityValue()\n\t}\n\ts.RemoteFlowControlWindow = t.getOutFlowWindow()\n\treturn &s\n}\n\nfunc (t *http2Client) RemoteAddr() net.Addr { return t.remoteAddr }\n\nfunc (t *http2Client) IncrMsgSent() {\n\tatomic.AddInt64(&t.czData.msgSent, 1)\n\tatomic.StoreInt64(&t.czData.lastMsgSentTime, time.Now().UnixNano())\n}\n\nfunc (t *http2Client) IncrMsgRecv() {\n\tatomic.AddInt64(&t.czData.msgRecv, 1)\n\tatomic.StoreInt64(&t.czData.lastMsgRecvTime, time.Now().UnixNano())\n}\n\nfunc (t *http2Client) getOutFlowWindow() int64 {\n\tresp := make(chan uint32, 1)\n\ttimer := time.NewTimer(time.Second)\n\tdefer timer.Stop()\n\tt.controlBuf.put(&outFlowControlSizeRequest{resp})\n\tselect {\n\tcase sz := <-resp:\n\t\treturn int64(sz)\n\tcase <-t.ctxDone:\n\t\treturn -1\n\tcase <-timer.C:\n\t\treturn -2\n\t}\n}\n\nfunc (t *http2Client) stateForTesting() transportState {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\treturn t.state\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/http2_server.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"net\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"github.com/golang/protobuf/proto\"\n\t\"golang.org/x/net/http2\"\n\t\"golang.org/x/net/http2/hpack\"\n\t\"google.golang.org/grpc/internal/grpclog\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n\t\"google.golang.org/grpc/internal/pretty\"\n\t\"google.golang.org/grpc/internal/syscall\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/internal/grpcrand\"\n\t\"google.golang.org/grpc/internal/grpcsync\"\n\t\"google.golang.org/grpc/keepalive\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/peer\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n\t\"google.golang.org/grpc/tap\"\n)\n\nvar (\n\t// ErrIllegalHeaderWrite indicates that setting header is illegal because of\n\t// the stream's state.\n\tErrIllegalHeaderWrite = status.Error(codes.Internal, \"transport: SendHeader called multiple times\")\n\t// ErrHeaderListSizeLimitViolation indicates that the header list size is larger\n\t// than the limit set by peer.\n\tErrHeaderListSizeLimitViolation = status.Error(codes.Internal, \"transport: trying to send header list size larger than the limit set by peer\")\n)\n\n// serverConnectionCounter counts the number of connections a server has seen\n// (equal to the number of http2Servers created). Must be accessed atomically.\nvar serverConnectionCounter uint64\n\n// http2Server implements the ServerTransport interface with HTTP2.\ntype http2Server struct {\n\tlastRead    int64 // Keep this field 64-bit aligned. Accessed atomically.\n\tctx         context.Context\n\tdone        chan struct{}\n\tconn        net.Conn\n\tloopy       *loopyWriter\n\treaderDone  chan struct{} // sync point to enable testing.\n\twriterDone  chan struct{} // sync point to enable testing.\n\tremoteAddr  net.Addr\n\tlocalAddr   net.Addr\n\tauthInfo    credentials.AuthInfo // auth info about the connection\n\tinTapHandle tap.ServerInHandle\n\tframer      *framer\n\t// The max number of concurrent streams.\n\tmaxStreams uint32\n\t// controlBuf delivers all the control related tasks (e.g., window\n\t// updates, reset streams, and various settings) to the controller.\n\tcontrolBuf *controlBuffer\n\tfc         *trInFlow\n\tstats      []stats.Handler\n\t// Keepalive and max-age parameters for the server.\n\tkp keepalive.ServerParameters\n\t// Keepalive enforcement policy.\n\tkep keepalive.EnforcementPolicy\n\t// The time instance last ping was received.\n\tlastPingAt time.Time\n\t// Number of times the client has violated keepalive ping policy so far.\n\tpingStrikes uint8\n\t// Flag to signify that number of ping strikes should be reset to 0.\n\t// This is set whenever data or header frames are sent.\n\t// 1 means yes.\n\tresetPingStrikes      uint32 // Accessed atomically.\n\tinitialWindowSize     int32\n\tbdpEst                *bdpEstimator\n\tmaxSendHeaderListSize *uint32\n\n\tmu sync.Mutex // guard the following\n\n\t// drainEvent is initialized when Drain() is called the first time. After\n\t// which the server writes out the first GoAway(with ID 2^31-1) frame. Then\n\t// an independent goroutine will be launched to later send the second\n\t// GoAway. During this time we don't want to write another first GoAway(with\n\t// ID 2^31 -1) frame. Thus call to Drain() will be a no-op if drainEvent is\n\t// already initialized since draining is already underway.\n\tdrainEvent    *grpcsync.Event\n\tstate         transportState\n\tactiveStreams map[uint32]*Stream\n\t// idle is the time instant when the connection went idle.\n\t// This is either the beginning of the connection or when the number of\n\t// RPCs go down to 0.\n\t// When the connection is busy, this value is set to 0.\n\tidle time.Time\n\n\t// Fields below are for channelz metric collection.\n\tchannelzID *channelz.Identifier\n\tczData     *channelzData\n\tbufferPool *bufferPool\n\n\tconnectionID uint64\n\n\t// maxStreamMu guards the maximum stream ID\n\t// This lock may not be taken if mu is already held.\n\tmaxStreamMu sync.Mutex\n\tmaxStreamID uint32 // max stream ID ever seen\n\n\tlogger *grpclog.PrefixLogger\n}\n\n// NewServerTransport creates a http2 transport with conn and configuration\n// options from config.\n//\n// It returns a non-nil transport and a nil error on success. On failure, it\n// returns a nil transport and a non-nil error. For a special case where the\n// underlying conn gets closed before the client preface could be read, it\n// returns a nil transport and a nil error.\nfunc NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, err error) {\n\tvar authInfo credentials.AuthInfo\n\trawConn := conn\n\tif config.Credentials != nil {\n\t\tvar err error\n\t\tconn, authInfo, err = config.Credentials.ServerHandshake(rawConn)\n\t\tif err != nil {\n\t\t\t// ErrConnDispatched means that the connection was dispatched away\n\t\t\t// from gRPC; those connections should be left open. io.EOF means\n\t\t\t// the connection was closed before handshaking completed, which can\n\t\t\t// happen naturally from probers. Return these errors directly.\n\t\t\tif err == credentials.ErrConnDispatched || err == io.EOF {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn nil, connectionErrorf(false, err, \"ServerHandshake(%q) failed: %v\", rawConn.RemoteAddr(), err)\n\t\t}\n\t}\n\twriteBufSize := config.WriteBufferSize\n\treadBufSize := config.ReadBufferSize\n\tmaxHeaderListSize := defaultServerMaxHeaderListSize\n\tif config.MaxHeaderListSize != nil {\n\t\tmaxHeaderListSize = *config.MaxHeaderListSize\n\t}\n\tframer := newFramer(conn, writeBufSize, readBufSize, config.SharedWriteBuffer, maxHeaderListSize)\n\t// Send initial settings as connection preface to client.\n\tisettings := []http2.Setting{{\n\t\tID:  http2.SettingMaxFrameSize,\n\t\tVal: http2MaxFrameLen,\n\t}}\n\tif config.MaxStreams != math.MaxUint32 {\n\t\tisettings = append(isettings, http2.Setting{\n\t\t\tID:  http2.SettingMaxConcurrentStreams,\n\t\t\tVal: config.MaxStreams,\n\t\t})\n\t}\n\tdynamicWindow := true\n\tiwz := int32(initialWindowSize)\n\tif config.InitialWindowSize >= defaultWindowSize {\n\t\tiwz = config.InitialWindowSize\n\t\tdynamicWindow = false\n\t}\n\ticwz := int32(initialWindowSize)\n\tif config.InitialConnWindowSize >= defaultWindowSize {\n\t\ticwz = config.InitialConnWindowSize\n\t\tdynamicWindow = false\n\t}\n\tif iwz != defaultWindowSize {\n\t\tisettings = append(isettings, http2.Setting{\n\t\t\tID:  http2.SettingInitialWindowSize,\n\t\t\tVal: uint32(iwz)})\n\t}\n\tif config.MaxHeaderListSize != nil {\n\t\tisettings = append(isettings, http2.Setting{\n\t\t\tID:  http2.SettingMaxHeaderListSize,\n\t\t\tVal: *config.MaxHeaderListSize,\n\t\t})\n\t}\n\tif config.HeaderTableSize != nil {\n\t\tisettings = append(isettings, http2.Setting{\n\t\t\tID:  http2.SettingHeaderTableSize,\n\t\t\tVal: *config.HeaderTableSize,\n\t\t})\n\t}\n\tif err := framer.fr.WriteSettings(isettings...); err != nil {\n\t\treturn nil, connectionErrorf(false, err, \"transport: %v\", err)\n\t}\n\t// Adjust the connection flow control window if needed.\n\tif delta := uint32(icwz - defaultWindowSize); delta > 0 {\n\t\tif err := framer.fr.WriteWindowUpdate(0, delta); err != nil {\n\t\t\treturn nil, connectionErrorf(false, err, \"transport: %v\", err)\n\t\t}\n\t}\n\tkp := config.KeepaliveParams\n\tif kp.MaxConnectionIdle == 0 {\n\t\tkp.MaxConnectionIdle = defaultMaxConnectionIdle\n\t}\n\tif kp.MaxConnectionAge == 0 {\n\t\tkp.MaxConnectionAge = defaultMaxConnectionAge\n\t}\n\t// Add a jitter to MaxConnectionAge.\n\tkp.MaxConnectionAge += getJitter(kp.MaxConnectionAge)\n\tif kp.MaxConnectionAgeGrace == 0 {\n\t\tkp.MaxConnectionAgeGrace = defaultMaxConnectionAgeGrace\n\t}\n\tif kp.Time == 0 {\n\t\tkp.Time = defaultServerKeepaliveTime\n\t}\n\tif kp.Timeout == 0 {\n\t\tkp.Timeout = defaultServerKeepaliveTimeout\n\t}\n\tif kp.Time != infinity {\n\t\tif err = syscall.SetTCPUserTimeout(rawConn, kp.Timeout); err != nil {\n\t\t\treturn nil, connectionErrorf(false, err, \"transport: failed to set TCP_USER_TIMEOUT: %v\", err)\n\t\t}\n\t}\n\tkep := config.KeepalivePolicy\n\tif kep.MinTime == 0 {\n\t\tkep.MinTime = defaultKeepalivePolicyMinTime\n\t}\n\n\tdone := make(chan struct{})\n\tt := &http2Server{\n\t\tctx:               setConnection(context.Background(), rawConn),\n\t\tdone:              done,\n\t\tconn:              conn,\n\t\tremoteAddr:        conn.RemoteAddr(),\n\t\tlocalAddr:         conn.LocalAddr(),\n\t\tauthInfo:          authInfo,\n\t\tframer:            framer,\n\t\treaderDone:        make(chan struct{}),\n\t\twriterDone:        make(chan struct{}),\n\t\tmaxStreams:        config.MaxStreams,\n\t\tinTapHandle:       config.InTapHandle,\n\t\tfc:                &trInFlow{limit: uint32(icwz)},\n\t\tstate:             reachable,\n\t\tactiveStreams:     make(map[uint32]*Stream),\n\t\tstats:             config.StatsHandlers,\n\t\tkp:                kp,\n\t\tidle:              time.Now(),\n\t\tkep:               kep,\n\t\tinitialWindowSize: iwz,\n\t\tczData:            new(channelzData),\n\t\tbufferPool:        newBufferPool(),\n\t}\n\tt.logger = prefixLoggerForServerTransport(t)\n\t// Add peer information to the http2server context.\n\tt.ctx = peer.NewContext(t.ctx, t.getPeer())\n\n\tt.controlBuf = newControlBuffer(t.done)\n\tif dynamicWindow {\n\t\tt.bdpEst = &bdpEstimator{\n\t\t\tbdp:               initialWindowSize,\n\t\t\tupdateFlowControl: t.updateFlowControl,\n\t\t}\n\t}\n\tfor _, sh := range t.stats {\n\t\tt.ctx = sh.TagConn(t.ctx, &stats.ConnTagInfo{\n\t\t\tRemoteAddr: t.remoteAddr,\n\t\t\tLocalAddr:  t.localAddr,\n\t\t})\n\t\tconnBegin := &stats.ConnBegin{}\n\t\tsh.HandleConn(t.ctx, connBegin)\n\t}\n\tt.channelzID, err = channelz.RegisterNormalSocket(t, config.ChannelzParentID, fmt.Sprintf(\"%s -> %s\", t.remoteAddr, t.localAddr))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tt.connectionID = atomic.AddUint64(&serverConnectionCounter, 1)\n\tt.framer.writer.Flush()\n\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tt.Close(err)\n\t\t}\n\t}()\n\n\t// Check the validity of client preface.\n\tpreface := make([]byte, len(clientPreface))\n\tif _, err := io.ReadFull(t.conn, preface); err != nil {\n\t\t// In deployments where a gRPC server runs behind a cloud load balancer\n\t\t// which performs regular TCP level health checks, the connection is\n\t\t// closed immediately by the latter.  Returning io.EOF here allows the\n\t\t// grpc server implementation to recognize this scenario and suppress\n\t\t// logging to reduce spam.\n\t\tif err == io.EOF {\n\t\t\treturn nil, io.EOF\n\t\t}\n\t\treturn nil, connectionErrorf(false, err, \"transport: http2Server.HandleStreams failed to receive the preface from client: %v\", err)\n\t}\n\tif !bytes.Equal(preface, clientPreface) {\n\t\treturn nil, connectionErrorf(false, nil, \"transport: http2Server.HandleStreams received bogus greeting from client: %q\", preface)\n\t}\n\n\tframe, err := t.framer.fr.ReadFrame()\n\tif err == io.EOF || err == io.ErrUnexpectedEOF {\n\t\treturn nil, err\n\t}\n\tif err != nil {\n\t\treturn nil, connectionErrorf(false, err, \"transport: http2Server.HandleStreams failed to read initial settings frame: %v\", err)\n\t}\n\tatomic.StoreInt64(&t.lastRead, time.Now().UnixNano())\n\tsf, ok := frame.(*http2.SettingsFrame)\n\tif !ok {\n\t\treturn nil, connectionErrorf(false, nil, \"transport: http2Server.HandleStreams saw invalid preface type %T from client\", frame)\n\t}\n\tt.handleSettings(sf)\n\n\tgo func() {\n\t\tt.loopy = newLoopyWriter(serverSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger)\n\t\tt.loopy.ssGoAwayHandler = t.outgoingGoAwayHandler\n\t\tt.loopy.run()\n\t\tclose(t.writerDone)\n\t}()\n\tgo t.keepalive()\n\treturn t, nil\n}\n\n// operateHeaders takes action on the decoded headers. Returns an error if fatal\n// error encountered and transport needs to close, otherwise returns nil.\nfunc (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func(*Stream)) error {\n\t// Acquire max stream ID lock for entire duration\n\tt.maxStreamMu.Lock()\n\tdefer t.maxStreamMu.Unlock()\n\n\tstreamID := frame.Header().StreamID\n\n\t// frame.Truncated is set to true when framer detects that the current header\n\t// list size hits MaxHeaderListSize limit.\n\tif frame.Truncated {\n\t\tt.controlBuf.put(&cleanupStream{\n\t\t\tstreamID: streamID,\n\t\t\trst:      true,\n\t\t\trstCode:  http2.ErrCodeFrameSize,\n\t\t\tonWrite:  func() {},\n\t\t})\n\t\treturn nil\n\t}\n\n\tif streamID%2 != 1 || streamID <= t.maxStreamID {\n\t\t// illegal gRPC stream id.\n\t\treturn fmt.Errorf(\"received an illegal stream id: %v. headers frame: %+v\", streamID, frame)\n\t}\n\tt.maxStreamID = streamID\n\n\tbuf := newRecvBuffer()\n\ts := &Stream{\n\t\tid:  streamID,\n\t\tst:  t,\n\t\tbuf: buf,\n\t\tfc:  &inFlow{limit: uint32(t.initialWindowSize)},\n\t}\n\tvar (\n\t\t// if false, content-type was missing or invalid\n\t\tisGRPC      = false\n\t\tcontentType = \"\"\n\t\tmdata       = make(metadata.MD, len(frame.Fields))\n\t\thttpMethod  string\n\t\t// these are set if an error is encountered while parsing the headers\n\t\tprotocolError bool\n\t\theaderError   *status.Status\n\n\t\ttimeoutSet bool\n\t\ttimeout    time.Duration\n\t)\n\n\tfor _, hf := range frame.Fields {\n\t\tswitch hf.Name {\n\t\tcase \"content-type\":\n\t\t\tcontentSubtype, validContentType := grpcutil.ContentSubtype(hf.Value)\n\t\t\tif !validContentType {\n\t\t\t\tcontentType = hf.Value\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tmdata[hf.Name] = append(mdata[hf.Name], hf.Value)\n\t\t\ts.contentSubtype = contentSubtype\n\t\t\tisGRPC = true\n\n\t\tcase \"grpc-accept-encoding\":\n\t\t\tmdata[hf.Name] = append(mdata[hf.Name], hf.Value)\n\t\t\tif hf.Value == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcompressors := hf.Value\n\t\t\tif s.clientAdvertisedCompressors != \"\" {\n\t\t\t\tcompressors = s.clientAdvertisedCompressors + \",\" + compressors\n\t\t\t}\n\t\t\ts.clientAdvertisedCompressors = compressors\n\t\tcase \"grpc-encoding\":\n\t\t\ts.recvCompress = hf.Value\n\t\tcase \":method\":\n\t\t\thttpMethod = hf.Value\n\t\tcase \":path\":\n\t\t\ts.method = hf.Value\n\t\tcase \"grpc-timeout\":\n\t\t\ttimeoutSet = true\n\t\t\tvar err error\n\t\t\tif timeout, err = decodeTimeout(hf.Value); err != nil {\n\t\t\t\theaderError = status.Newf(codes.Internal, \"malformed grpc-timeout: %v\", err)\n\t\t\t}\n\t\t// \"Transports must consider requests containing the Connection header\n\t\t// as malformed.\" - A41\n\t\tcase \"connection\":\n\t\t\tif t.logger.V(logLevel) {\n\t\t\t\tt.logger.Infof(\"Received a HEADERS frame with a :connection header which makes the request malformed, as per the HTTP/2 spec\")\n\t\t\t}\n\t\t\tprotocolError = true\n\t\tdefault:\n\t\t\tif isReservedHeader(hf.Name) && !isWhitelistedHeader(hf.Name) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tv, err := decodeMetadataHeader(hf.Name, hf.Value)\n\t\t\tif err != nil {\n\t\t\t\theaderError = status.Newf(codes.Internal, \"malformed binary metadata %q in header %q: %v\", hf.Value, hf.Name, err)\n\t\t\t\tt.logger.Warningf(\"Failed to decode metadata header (%q, %q): %v\", hf.Name, hf.Value, err)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tmdata[hf.Name] = append(mdata[hf.Name], v)\n\t\t}\n\t}\n\n\t// \"If multiple Host headers or multiple :authority headers are present, the\n\t// request must be rejected with an HTTP status code 400 as required by Host\n\t// validation in RFC 7230 §5.4, gRPC status code INTERNAL, or RST_STREAM\n\t// with HTTP/2 error code PROTOCOL_ERROR.\" - A41. Since this is a HTTP/2\n\t// error, this takes precedence over a client not speaking gRPC.\n\tif len(mdata[\":authority\"]) > 1 || len(mdata[\"host\"]) > 1 {\n\t\terrMsg := fmt.Sprintf(\"num values of :authority: %v, num values of host: %v, both must only have 1 value as per HTTP/2 spec\", len(mdata[\":authority\"]), len(mdata[\"host\"]))\n\t\tif t.logger.V(logLevel) {\n\t\t\tt.logger.Infof(\"Aborting the stream early: %v\", errMsg)\n\t\t}\n\t\tt.controlBuf.put(&earlyAbortStream{\n\t\t\thttpStatus:     http.StatusBadRequest,\n\t\t\tstreamID:       streamID,\n\t\t\tcontentSubtype: s.contentSubtype,\n\t\t\tstatus:         status.New(codes.Internal, errMsg),\n\t\t\trst:            !frame.StreamEnded(),\n\t\t})\n\t\treturn nil\n\t}\n\n\tif protocolError {\n\t\tt.controlBuf.put(&cleanupStream{\n\t\t\tstreamID: streamID,\n\t\t\trst:      true,\n\t\t\trstCode:  http2.ErrCodeProtocol,\n\t\t\tonWrite:  func() {},\n\t\t})\n\t\treturn nil\n\t}\n\tif !isGRPC {\n\t\tt.controlBuf.put(&earlyAbortStream{\n\t\t\thttpStatus:     http.StatusUnsupportedMediaType,\n\t\t\tstreamID:       streamID,\n\t\t\tcontentSubtype: s.contentSubtype,\n\t\t\tstatus:         status.Newf(codes.InvalidArgument, \"invalid gRPC request content-type %q\", contentType),\n\t\t\trst:            !frame.StreamEnded(),\n\t\t})\n\t\treturn nil\n\t}\n\tif headerError != nil {\n\t\tt.controlBuf.put(&earlyAbortStream{\n\t\t\thttpStatus:     http.StatusBadRequest,\n\t\t\tstreamID:       streamID,\n\t\t\tcontentSubtype: s.contentSubtype,\n\t\t\tstatus:         headerError,\n\t\t\trst:            !frame.StreamEnded(),\n\t\t})\n\t\treturn nil\n\t}\n\n\t// \"If :authority is missing, Host must be renamed to :authority.\" - A41\n\tif len(mdata[\":authority\"]) == 0 {\n\t\t// No-op if host isn't present, no eventual :authority header is a valid\n\t\t// RPC.\n\t\tif host, ok := mdata[\"host\"]; ok {\n\t\t\tmdata[\":authority\"] = host\n\t\t\tdelete(mdata, \"host\")\n\t\t}\n\t} else {\n\t\t// \"If :authority is present, Host must be discarded\" - A41\n\t\tdelete(mdata, \"host\")\n\t}\n\n\tif frame.StreamEnded() {\n\t\t// s is just created by the caller. No lock needed.\n\t\ts.state = streamReadDone\n\t}\n\tif timeoutSet {\n\t\ts.ctx, s.cancel = context.WithTimeout(t.ctx, timeout)\n\t} else {\n\t\ts.ctx, s.cancel = context.WithCancel(t.ctx)\n\t}\n\n\t// Attach the received metadata to the context.\n\tif len(mdata) > 0 {\n\t\ts.ctx = metadata.NewIncomingContext(s.ctx, mdata)\n\t\tif statsTags := mdata[\"grpc-tags-bin\"]; len(statsTags) > 0 {\n\t\t\ts.ctx = stats.SetIncomingTags(s.ctx, []byte(statsTags[len(statsTags)-1]))\n\t\t}\n\t\tif statsTrace := mdata[\"grpc-trace-bin\"]; len(statsTrace) > 0 {\n\t\t\ts.ctx = stats.SetIncomingTrace(s.ctx, []byte(statsTrace[len(statsTrace)-1]))\n\t\t}\n\t}\n\tt.mu.Lock()\n\tif t.state != reachable {\n\t\tt.mu.Unlock()\n\t\ts.cancel()\n\t\treturn nil\n\t}\n\tif uint32(len(t.activeStreams)) >= t.maxStreams {\n\t\tt.mu.Unlock()\n\t\tt.controlBuf.put(&cleanupStream{\n\t\t\tstreamID: streamID,\n\t\t\trst:      true,\n\t\t\trstCode:  http2.ErrCodeRefusedStream,\n\t\t\tonWrite:  func() {},\n\t\t})\n\t\ts.cancel()\n\t\treturn nil\n\t}\n\tif httpMethod != http.MethodPost {\n\t\tt.mu.Unlock()\n\t\terrMsg := fmt.Sprintf(\"Received a HEADERS frame with :method %q which should be POST\", httpMethod)\n\t\tif t.logger.V(logLevel) {\n\t\t\tt.logger.Infof(\"Aborting the stream early: %v\", errMsg)\n\t\t}\n\t\tt.controlBuf.put(&earlyAbortStream{\n\t\t\thttpStatus:     405,\n\t\t\tstreamID:       streamID,\n\t\t\tcontentSubtype: s.contentSubtype,\n\t\t\tstatus:         status.New(codes.Internal, errMsg),\n\t\t\trst:            !frame.StreamEnded(),\n\t\t})\n\t\ts.cancel()\n\t\treturn nil\n\t}\n\tif t.inTapHandle != nil {\n\t\tvar err error\n\t\tif s.ctx, err = t.inTapHandle(s.ctx, &tap.Info{FullMethodName: s.method, Header: mdata}); err != nil {\n\t\t\tt.mu.Unlock()\n\t\t\tif t.logger.V(logLevel) {\n\t\t\t\tt.logger.Infof(\"Aborting the stream early due to InTapHandle failure: %v\", err)\n\t\t\t}\n\t\t\tstat, ok := status.FromError(err)\n\t\t\tif !ok {\n\t\t\t\tstat = status.New(codes.PermissionDenied, err.Error())\n\t\t\t}\n\t\t\tt.controlBuf.put(&earlyAbortStream{\n\t\t\t\thttpStatus:     200,\n\t\t\t\tstreamID:       s.id,\n\t\t\t\tcontentSubtype: s.contentSubtype,\n\t\t\t\tstatus:         stat,\n\t\t\t\trst:            !frame.StreamEnded(),\n\t\t\t})\n\t\t\treturn nil\n\t\t}\n\t}\n\tt.activeStreams[streamID] = s\n\tif len(t.activeStreams) == 1 {\n\t\tt.idle = time.Time{}\n\t}\n\tt.mu.Unlock()\n\tif channelz.IsOn() {\n\t\tatomic.AddInt64(&t.czData.streamsStarted, 1)\n\t\tatomic.StoreInt64(&t.czData.lastStreamCreatedTime, time.Now().UnixNano())\n\t}\n\ts.requestRead = func(n int) {\n\t\tt.adjustWindow(s, uint32(n))\n\t}\n\tfor _, sh := range t.stats {\n\t\ts.ctx = sh.TagRPC(s.ctx, &stats.RPCTagInfo{FullMethodName: s.method})\n\t\tinHeader := &stats.InHeader{\n\t\t\tFullMethod:  s.method,\n\t\t\tRemoteAddr:  t.remoteAddr,\n\t\t\tLocalAddr:   t.localAddr,\n\t\t\tCompression: s.recvCompress,\n\t\t\tWireLength:  int(frame.Header().Length),\n\t\t\tHeader:      mdata.Copy(),\n\t\t}\n\t\tsh.HandleRPC(s.ctx, inHeader)\n\t}\n\ts.ctxDone = s.ctx.Done()\n\ts.wq = newWriteQuota(defaultWriteQuota, s.ctxDone)\n\ts.trReader = &transportReader{\n\t\treader: &recvBufferReader{\n\t\t\tctx:        s.ctx,\n\t\t\tctxDone:    s.ctxDone,\n\t\t\trecv:       s.buf,\n\t\t\tfreeBuffer: t.bufferPool.put,\n\t\t},\n\t\twindowHandler: func(n int) {\n\t\t\tt.updateWindow(s, uint32(n))\n\t\t},\n\t}\n\t// Register the stream with loopy.\n\tt.controlBuf.put(&registerStream{\n\t\tstreamID: s.id,\n\t\twq:       s.wq,\n\t})\n\thandle(s)\n\treturn nil\n}\n\n// HandleStreams receives incoming streams using the given handler. This is\n// typically run in a separate goroutine.\n// traceCtx attaches trace to ctx and returns the new context.\nfunc (t *http2Server) HandleStreams(handle func(*Stream)) {\n\tdefer close(t.readerDone)\n\tfor {\n\t\tt.controlBuf.throttle()\n\t\tframe, err := t.framer.fr.ReadFrame()\n\t\tatomic.StoreInt64(&t.lastRead, time.Now().UnixNano())\n\t\tif err != nil {\n\t\t\tif se, ok := err.(http2.StreamError); ok {\n\t\t\t\tif t.logger.V(logLevel) {\n\t\t\t\t\tt.logger.Warningf(\"Encountered http2.StreamError: %v\", se)\n\t\t\t\t}\n\t\t\t\tt.mu.Lock()\n\t\t\t\ts := t.activeStreams[se.StreamID]\n\t\t\t\tt.mu.Unlock()\n\t\t\t\tif s != nil {\n\t\t\t\t\tt.closeStream(s, true, se.Code, false)\n\t\t\t\t} else {\n\t\t\t\t\tt.controlBuf.put(&cleanupStream{\n\t\t\t\t\t\tstreamID: se.StreamID,\n\t\t\t\t\t\trst:      true,\n\t\t\t\t\t\trstCode:  se.Code,\n\t\t\t\t\t\tonWrite:  func() {},\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err == io.EOF || err == io.ErrUnexpectedEOF {\n\t\t\t\tt.Close(err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tt.Close(err)\n\t\t\treturn\n\t\t}\n\t\tswitch frame := frame.(type) {\n\t\tcase *http2.MetaHeadersFrame:\n\t\t\tif err := t.operateHeaders(frame, handle); err != nil {\n\t\t\t\tt.Close(err)\n\t\t\t\tbreak\n\t\t\t}\n\t\tcase *http2.DataFrame:\n\t\t\tt.handleData(frame)\n\t\tcase *http2.RSTStreamFrame:\n\t\t\tt.handleRSTStream(frame)\n\t\tcase *http2.SettingsFrame:\n\t\t\tt.handleSettings(frame)\n\t\tcase *http2.PingFrame:\n\t\t\tt.handlePing(frame)\n\t\tcase *http2.WindowUpdateFrame:\n\t\t\tt.handleWindowUpdate(frame)\n\t\tcase *http2.GoAwayFrame:\n\t\t\t// TODO: Handle GoAway from the client appropriately.\n\t\tdefault:\n\t\t\tif t.logger.V(logLevel) {\n\t\t\t\tt.logger.Infof(\"Received unsupported frame type %T\", frame)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (t *http2Server) getStream(f http2.Frame) (*Stream, bool) {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\tif t.activeStreams == nil {\n\t\t// The transport is closing.\n\t\treturn nil, false\n\t}\n\ts, ok := t.activeStreams[f.Header().StreamID]\n\tif !ok {\n\t\t// The stream is already done.\n\t\treturn nil, false\n\t}\n\treturn s, true\n}\n\n// adjustWindow sends out extra window update over the initial window size\n// of stream if the application is requesting data larger in size than\n// the window.\nfunc (t *http2Server) adjustWindow(s *Stream, n uint32) {\n\tif w := s.fc.maybeAdjust(n); w > 0 {\n\t\tt.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w})\n\t}\n\n}\n\n// updateWindow adjusts the inbound quota for the stream and the transport.\n// Window updates will deliver to the controller for sending when\n// the cumulative quota exceeds the corresponding threshold.\nfunc (t *http2Server) updateWindow(s *Stream, n uint32) {\n\tif w := s.fc.onRead(n); w > 0 {\n\t\tt.controlBuf.put(&outgoingWindowUpdate{streamID: s.id,\n\t\t\tincrement: w,\n\t\t})\n\t}\n}\n\n// updateFlowControl updates the incoming flow control windows\n// for the transport and the stream based on the current bdp\n// estimation.\nfunc (t *http2Server) updateFlowControl(n uint32) {\n\tt.mu.Lock()\n\tfor _, s := range t.activeStreams {\n\t\ts.fc.newLimit(n)\n\t}\n\tt.initialWindowSize = int32(n)\n\tt.mu.Unlock()\n\tt.controlBuf.put(&outgoingWindowUpdate{\n\t\tstreamID:  0,\n\t\tincrement: t.fc.newLimit(n),\n\t})\n\tt.controlBuf.put(&outgoingSettings{\n\t\tss: []http2.Setting{\n\t\t\t{\n\t\t\t\tID:  http2.SettingInitialWindowSize,\n\t\t\t\tVal: n,\n\t\t\t},\n\t\t},\n\t})\n\n}\n\nfunc (t *http2Server) handleData(f *http2.DataFrame) {\n\tsize := f.Header().Length\n\tvar sendBDPPing bool\n\tif t.bdpEst != nil {\n\t\tsendBDPPing = t.bdpEst.add(size)\n\t}\n\t// Decouple connection's flow control from application's read.\n\t// An update on connection's flow control should not depend on\n\t// whether user application has read the data or not. Such a\n\t// restriction is already imposed on the stream's flow control,\n\t// and therefore the sender will be blocked anyways.\n\t// Decoupling the connection flow control will prevent other\n\t// active(fast) streams from starving in presence of slow or\n\t// inactive streams.\n\tif w := t.fc.onData(size); w > 0 {\n\t\tt.controlBuf.put(&outgoingWindowUpdate{\n\t\t\tstreamID:  0,\n\t\t\tincrement: w,\n\t\t})\n\t}\n\tif sendBDPPing {\n\t\t// Avoid excessive ping detection (e.g. in an L7 proxy)\n\t\t// by sending a window update prior to the BDP ping.\n\t\tif w := t.fc.reset(); w > 0 {\n\t\t\tt.controlBuf.put(&outgoingWindowUpdate{\n\t\t\t\tstreamID:  0,\n\t\t\t\tincrement: w,\n\t\t\t})\n\t\t}\n\t\tt.controlBuf.put(bdpPing)\n\t}\n\t// Select the right stream to dispatch.\n\ts, ok := t.getStream(f)\n\tif !ok {\n\t\treturn\n\t}\n\tif s.getState() == streamReadDone {\n\t\tt.closeStream(s, true, http2.ErrCodeStreamClosed, false)\n\t\treturn\n\t}\n\tif size > 0 {\n\t\tif err := s.fc.onData(size); err != nil {\n\t\t\tt.closeStream(s, true, http2.ErrCodeFlowControl, false)\n\t\t\treturn\n\t\t}\n\t\tif f.Header().Flags.Has(http2.FlagDataPadded) {\n\t\t\tif w := s.fc.onRead(size - uint32(len(f.Data()))); w > 0 {\n\t\t\t\tt.controlBuf.put(&outgoingWindowUpdate{s.id, w})\n\t\t\t}\n\t\t}\n\t\t// TODO(bradfitz, zhaoq): A copy is required here because there is no\n\t\t// guarantee f.Data() is consumed before the arrival of next frame.\n\t\t// Can this copy be eliminated?\n\t\tif len(f.Data()) > 0 {\n\t\t\tbuffer := t.bufferPool.get()\n\t\t\tbuffer.Reset()\n\t\t\tbuffer.Write(f.Data())\n\t\t\ts.write(recvMsg{buffer: buffer})\n\t\t}\n\t}\n\tif f.StreamEnded() {\n\t\t// Received the end of stream from the client.\n\t\ts.compareAndSwapState(streamActive, streamReadDone)\n\t\ts.write(recvMsg{err: io.EOF})\n\t}\n}\n\nfunc (t *http2Server) handleRSTStream(f *http2.RSTStreamFrame) {\n\t// If the stream is not deleted from the transport's active streams map, then do a regular close stream.\n\tif s, ok := t.getStream(f); ok {\n\t\tt.closeStream(s, false, 0, false)\n\t\treturn\n\t}\n\t// If the stream is already deleted from the active streams map, then put a cleanupStream item into controlbuf to delete the stream from loopy writer's established streams map.\n\tt.controlBuf.put(&cleanupStream{\n\t\tstreamID: f.Header().StreamID,\n\t\trst:      false,\n\t\trstCode:  0,\n\t\tonWrite:  func() {},\n\t})\n}\n\nfunc (t *http2Server) handleSettings(f *http2.SettingsFrame) {\n\tif f.IsAck() {\n\t\treturn\n\t}\n\tvar ss []http2.Setting\n\tvar updateFuncs []func()\n\tf.ForeachSetting(func(s http2.Setting) error {\n\t\tswitch s.ID {\n\t\tcase http2.SettingMaxHeaderListSize:\n\t\t\tupdateFuncs = append(updateFuncs, func() {\n\t\t\t\tt.maxSendHeaderListSize = new(uint32)\n\t\t\t\t*t.maxSendHeaderListSize = s.Val\n\t\t\t})\n\t\tdefault:\n\t\t\tss = append(ss, s)\n\t\t}\n\t\treturn nil\n\t})\n\tt.controlBuf.executeAndPut(func(any) bool {\n\t\tfor _, f := range updateFuncs {\n\t\t\tf()\n\t\t}\n\t\treturn true\n\t}, &incomingSettings{\n\t\tss: ss,\n\t})\n}\n\nconst (\n\tmaxPingStrikes     = 2\n\tdefaultPingTimeout = 2 * time.Hour\n)\n\nfunc (t *http2Server) handlePing(f *http2.PingFrame) {\n\tif f.IsAck() {\n\t\tif f.Data == goAwayPing.data && t.drainEvent != nil {\n\t\t\tt.drainEvent.Fire()\n\t\t\treturn\n\t\t}\n\t\t// Maybe it's a BDP ping.\n\t\tif t.bdpEst != nil {\n\t\t\tt.bdpEst.calculate(f.Data)\n\t\t}\n\t\treturn\n\t}\n\tpingAck := &ping{ack: true}\n\tcopy(pingAck.data[:], f.Data[:])\n\tt.controlBuf.put(pingAck)\n\n\tnow := time.Now()\n\tdefer func() {\n\t\tt.lastPingAt = now\n\t}()\n\t// A reset ping strikes means that we don't need to check for policy\n\t// violation for this ping and the pingStrikes counter should be set\n\t// to 0.\n\tif atomic.CompareAndSwapUint32(&t.resetPingStrikes, 1, 0) {\n\t\tt.pingStrikes = 0\n\t\treturn\n\t}\n\tt.mu.Lock()\n\tns := len(t.activeStreams)\n\tt.mu.Unlock()\n\tif ns < 1 && !t.kep.PermitWithoutStream {\n\t\t// Keepalive shouldn't be active thus, this new ping should\n\t\t// have come after at least defaultPingTimeout.\n\t\tif t.lastPingAt.Add(defaultPingTimeout).After(now) {\n\t\t\tt.pingStrikes++\n\t\t}\n\t} else {\n\t\t// Check if keepalive policy is respected.\n\t\tif t.lastPingAt.Add(t.kep.MinTime).After(now) {\n\t\t\tt.pingStrikes++\n\t\t}\n\t}\n\n\tif t.pingStrikes > maxPingStrikes {\n\t\t// Send goaway and close the connection.\n\t\tt.controlBuf.put(&goAway{code: http2.ErrCodeEnhanceYourCalm, debugData: []byte(\"too_many_pings\"), closeConn: errors.New(\"got too many pings from the client\")})\n\t}\n}\n\nfunc (t *http2Server) handleWindowUpdate(f *http2.WindowUpdateFrame) {\n\tt.controlBuf.put(&incomingWindowUpdate{\n\t\tstreamID:  f.Header().StreamID,\n\t\tincrement: f.Increment,\n\t})\n}\n\nfunc appendHeaderFieldsFromMD(headerFields []hpack.HeaderField, md metadata.MD) []hpack.HeaderField {\n\tfor k, vv := range md {\n\t\tif isReservedHeader(k) {\n\t\t\t// Clients don't tolerate reading restricted headers after some non restricted ones were sent.\n\t\t\tcontinue\n\t\t}\n\t\tfor _, v := range vv {\n\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)})\n\t\t}\n\t}\n\treturn headerFields\n}\n\nfunc (t *http2Server) checkForHeaderListSize(it any) bool {\n\tif t.maxSendHeaderListSize == nil {\n\t\treturn true\n\t}\n\thdrFrame := it.(*headerFrame)\n\tvar sz int64\n\tfor _, f := range hdrFrame.hf {\n\t\tif sz += int64(f.Size()); sz > int64(*t.maxSendHeaderListSize) {\n\t\t\tif t.logger.V(logLevel) {\n\t\t\t\tt.logger.Infof(\"Header list size to send violates the maximum size (%d bytes) set by client\", *t.maxSendHeaderListSize)\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (t *http2Server) streamContextErr(s *Stream) error {\n\tselect {\n\tcase <-t.done:\n\t\treturn ErrConnClosing\n\tdefault:\n\t}\n\treturn ContextErr(s.ctx.Err())\n}\n\n// WriteHeader sends the header metadata md back to the client.\nfunc (t *http2Server) WriteHeader(s *Stream, md metadata.MD) error {\n\ts.hdrMu.Lock()\n\tdefer s.hdrMu.Unlock()\n\tif s.getState() == streamDone {\n\t\treturn t.streamContextErr(s)\n\t}\n\n\tif s.updateHeaderSent() {\n\t\treturn ErrIllegalHeaderWrite\n\t}\n\n\tif md.Len() > 0 {\n\t\tif s.header.Len() > 0 {\n\t\t\ts.header = metadata.Join(s.header, md)\n\t\t} else {\n\t\t\ts.header = md\n\t\t}\n\t}\n\tif err := t.writeHeaderLocked(s); err != nil {\n\t\treturn status.Convert(err).Err()\n\t}\n\treturn nil\n}\n\nfunc (t *http2Server) setResetPingStrikes() {\n\tatomic.StoreUint32(&t.resetPingStrikes, 1)\n}\n\nfunc (t *http2Server) writeHeaderLocked(s *Stream) error {\n\t// TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields\n\t// first and create a slice of that exact size.\n\theaderFields := make([]hpack.HeaderField, 0, 2) // at least :status, content-type will be there if none else.\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \":status\", Value: \"200\"})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \"content-type\", Value: grpcutil.ContentType(s.contentSubtype)})\n\tif s.sendCompress != \"\" {\n\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-encoding\", Value: s.sendCompress})\n\t}\n\theaderFields = appendHeaderFieldsFromMD(headerFields, s.header)\n\tsuccess, err := t.controlBuf.executeAndPut(t.checkForHeaderListSize, &headerFrame{\n\t\tstreamID:  s.id,\n\t\thf:        headerFields,\n\t\tendStream: false,\n\t\tonWrite:   t.setResetPingStrikes,\n\t})\n\tif !success {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tt.closeStream(s, true, http2.ErrCodeInternal, false)\n\t\treturn ErrHeaderListSizeLimitViolation\n\t}\n\tfor _, sh := range t.stats {\n\t\t// Note: Headers are compressed with hpack after this call returns.\n\t\t// No WireLength field is set here.\n\t\toutHeader := &stats.OutHeader{\n\t\t\tHeader:      s.header.Copy(),\n\t\t\tCompression: s.sendCompress,\n\t\t}\n\t\tsh.HandleRPC(s.Context(), outHeader)\n\t}\n\treturn nil\n}\n\n// WriteStatus sends stream status to the client and terminates the stream.\n// There is no further I/O operations being able to perform on this stream.\n// TODO(zhaoq): Now it indicates the end of entire stream. Revisit if early\n// OK is adopted.\nfunc (t *http2Server) WriteStatus(s *Stream, st *status.Status) error {\n\ts.hdrMu.Lock()\n\tdefer s.hdrMu.Unlock()\n\n\tif s.getState() == streamDone {\n\t\treturn nil\n\t}\n\n\t// TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields\n\t// first and create a slice of that exact size.\n\theaderFields := make([]hpack.HeaderField, 0, 2) // grpc-status and grpc-message will be there if none else.\n\tif !s.updateHeaderSent() {                      // No headers have been sent.\n\t\tif len(s.header) > 0 { // Send a separate header frame.\n\t\t\tif err := t.writeHeaderLocked(s); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else { // Send a trailer only response.\n\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \":status\", Value: \"200\"})\n\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: \"content-type\", Value: grpcutil.ContentType(s.contentSubtype)})\n\t\t}\n\t}\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-status\", Value: strconv.Itoa(int(st.Code()))})\n\theaderFields = append(headerFields, hpack.HeaderField{Name: \"grpc-message\", Value: encodeGrpcMessage(st.Message())})\n\n\tif p := st.Proto(); p != nil && len(p.Details) > 0 {\n\t\t// Do not use the user's grpc-status-details-bin (if present) if we are\n\t\t// even attempting to set our own.\n\t\tdelete(s.trailer, grpcStatusDetailsBinHeader)\n\t\tstBytes, err := proto.Marshal(p)\n\t\tif err != nil {\n\t\t\t// TODO: return error instead, when callers are able to handle it.\n\t\t\tt.logger.Errorf(\"Failed to marshal rpc status: %s, error: %v\", pretty.ToJSON(p), err)\n\t\t} else {\n\t\t\theaderFields = append(headerFields, hpack.HeaderField{Name: grpcStatusDetailsBinHeader, Value: encodeBinHeader(stBytes)})\n\t\t}\n\t}\n\n\t// Attach the trailer metadata.\n\theaderFields = appendHeaderFieldsFromMD(headerFields, s.trailer)\n\ttrailingHeader := &headerFrame{\n\t\tstreamID:  s.id,\n\t\thf:        headerFields,\n\t\tendStream: true,\n\t\tonWrite:   t.setResetPingStrikes,\n\t}\n\n\tsuccess, err := t.controlBuf.execute(t.checkForHeaderListSize, trailingHeader)\n\tif !success {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tt.closeStream(s, true, http2.ErrCodeInternal, false)\n\t\treturn ErrHeaderListSizeLimitViolation\n\t}\n\t// Send a RST_STREAM after the trailers if the client has not already half-closed.\n\trst := s.getState() == streamActive\n\tt.finishStream(s, rst, http2.ErrCodeNo, trailingHeader, true)\n\tfor _, sh := range t.stats {\n\t\t// Note: The trailer fields are compressed with hpack after this call returns.\n\t\t// No WireLength field is set here.\n\t\tsh.HandleRPC(s.Context(), &stats.OutTrailer{\n\t\t\tTrailer: s.trailer.Copy(),\n\t\t})\n\t}\n\treturn nil\n}\n\n// Write converts the data into HTTP2 data frame and sends it out. Non-nil error\n// is returns if it fails (e.g., framing error, transport error).\nfunc (t *http2Server) Write(s *Stream, hdr []byte, data []byte, opts *Options) error {\n\tif !s.isHeaderSent() { // Headers haven't been written yet.\n\t\tif err := t.WriteHeader(s, nil); err != nil {\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\t// Writing headers checks for this condition.\n\t\tif s.getState() == streamDone {\n\t\t\treturn t.streamContextErr(s)\n\t\t}\n\t}\n\tdf := &dataFrame{\n\t\tstreamID:    s.id,\n\t\th:           hdr,\n\t\td:           data,\n\t\tonEachWrite: t.setResetPingStrikes,\n\t}\n\tif err := s.wq.get(int32(len(hdr) + len(data))); err != nil {\n\t\treturn t.streamContextErr(s)\n\t}\n\treturn t.controlBuf.put(df)\n}\n\n// keepalive running in a separate goroutine does the following:\n// 1. Gracefully closes an idle connection after a duration of keepalive.MaxConnectionIdle.\n// 2. Gracefully closes any connection after a duration of keepalive.MaxConnectionAge.\n// 3. Forcibly closes a connection after an additive period of keepalive.MaxConnectionAgeGrace over keepalive.MaxConnectionAge.\n// 4. Makes sure a connection is alive by sending pings with a frequency of keepalive.Time and closes a non-responsive connection\n// after an additional duration of keepalive.Timeout.\nfunc (t *http2Server) keepalive() {\n\tp := &ping{}\n\t// True iff a ping has been sent, and no data has been received since then.\n\toutstandingPing := false\n\t// Amount of time remaining before which we should receive an ACK for the\n\t// last sent ping.\n\tkpTimeoutLeft := time.Duration(0)\n\t// Records the last value of t.lastRead before we go block on the timer.\n\t// This is required to check for read activity since then.\n\tprevNano := time.Now().UnixNano()\n\t// Initialize the different timers to their default values.\n\tidleTimer := time.NewTimer(t.kp.MaxConnectionIdle)\n\tageTimer := time.NewTimer(t.kp.MaxConnectionAge)\n\tkpTimer := time.NewTimer(t.kp.Time)\n\tdefer func() {\n\t\t// We need to drain the underlying channel in these timers after a call\n\t\t// to Stop(), only if we are interested in resetting them. Clearly we\n\t\t// are not interested in resetting them here.\n\t\tidleTimer.Stop()\n\t\tageTimer.Stop()\n\t\tkpTimer.Stop()\n\t}()\n\n\tfor {\n\t\tselect {\n\t\tcase <-idleTimer.C:\n\t\t\tt.mu.Lock()\n\t\t\tidle := t.idle\n\t\t\tif idle.IsZero() { // The connection is non-idle.\n\t\t\t\tt.mu.Unlock()\n\t\t\t\tidleTimer.Reset(t.kp.MaxConnectionIdle)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tval := t.kp.MaxConnectionIdle - time.Since(idle)\n\t\t\tt.mu.Unlock()\n\t\t\tif val <= 0 {\n\t\t\t\t// The connection has been idle for a duration of keepalive.MaxConnectionIdle or more.\n\t\t\t\t// Gracefully close the connection.\n\t\t\t\tt.Drain(\"max_idle\")\n\t\t\t\treturn\n\t\t\t}\n\t\t\tidleTimer.Reset(val)\n\t\tcase <-ageTimer.C:\n\t\t\tt.Drain(\"max_age\")\n\t\t\tageTimer.Reset(t.kp.MaxConnectionAgeGrace)\n\t\t\tselect {\n\t\t\tcase <-ageTimer.C:\n\t\t\t\t// Close the connection after grace period.\n\t\t\t\tif t.logger.V(logLevel) {\n\t\t\t\t\tt.logger.Infof(\"Closing server transport due to maximum connection age\")\n\t\t\t\t}\n\t\t\t\tt.controlBuf.put(closeConnection{})\n\t\t\tcase <-t.done:\n\t\t\t}\n\t\t\treturn\n\t\tcase <-kpTimer.C:\n\t\t\tlastRead := atomic.LoadInt64(&t.lastRead)\n\t\t\tif lastRead > prevNano {\n\t\t\t\t// There has been read activity since the last time we were\n\t\t\t\t// here. Setup the timer to fire at kp.Time seconds from\n\t\t\t\t// lastRead time and continue.\n\t\t\t\toutstandingPing = false\n\t\t\t\tkpTimer.Reset(time.Duration(lastRead) + t.kp.Time - time.Duration(time.Now().UnixNano()))\n\t\t\t\tprevNano = lastRead\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif outstandingPing && kpTimeoutLeft <= 0 {\n\t\t\t\tt.Close(fmt.Errorf(\"keepalive ping not acked within timeout %s\", t.kp.Time))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif !outstandingPing {\n\t\t\t\tif channelz.IsOn() {\n\t\t\t\t\tatomic.AddInt64(&t.czData.kpCount, 1)\n\t\t\t\t}\n\t\t\t\tt.controlBuf.put(p)\n\t\t\t\tkpTimeoutLeft = t.kp.Timeout\n\t\t\t\toutstandingPing = true\n\t\t\t}\n\t\t\t// The amount of time to sleep here is the minimum of kp.Time and\n\t\t\t// timeoutLeft. This will ensure that we wait only for kp.Time\n\t\t\t// before sending out the next ping (for cases where the ping is\n\t\t\t// acked).\n\t\t\tsleepDuration := minTime(t.kp.Time, kpTimeoutLeft)\n\t\t\tkpTimeoutLeft -= sleepDuration\n\t\t\tkpTimer.Reset(sleepDuration)\n\t\tcase <-t.done:\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Close starts shutting down the http2Server transport.\n// TODO(zhaoq): Now the destruction is not blocked on any pending streams. This\n// could cause some resource issue. Revisit this later.\nfunc (t *http2Server) Close(err error) {\n\tt.mu.Lock()\n\tif t.state == closing {\n\t\tt.mu.Unlock()\n\t\treturn\n\t}\n\tif t.logger.V(logLevel) {\n\t\tt.logger.Infof(\"Closing: %v\", err)\n\t}\n\tt.state = closing\n\tstreams := t.activeStreams\n\tt.activeStreams = nil\n\tt.mu.Unlock()\n\tt.controlBuf.finish()\n\tclose(t.done)\n\tif err := t.conn.Close(); err != nil && t.logger.V(logLevel) {\n\t\tt.logger.Infof(\"Error closing underlying net.Conn during Close: %v\", err)\n\t}\n\tchannelz.RemoveEntry(t.channelzID)\n\t// Cancel all active streams.\n\tfor _, s := range streams {\n\t\ts.cancel()\n\t}\n\tfor _, sh := range t.stats {\n\t\tconnEnd := &stats.ConnEnd{}\n\t\tsh.HandleConn(t.ctx, connEnd)\n\t}\n}\n\n// deleteStream deletes the stream s from transport's active streams.\nfunc (t *http2Server) deleteStream(s *Stream, eosReceived bool) {\n\n\tt.mu.Lock()\n\tif _, ok := t.activeStreams[s.id]; ok {\n\t\tdelete(t.activeStreams, s.id)\n\t\tif len(t.activeStreams) == 0 {\n\t\t\tt.idle = time.Now()\n\t\t}\n\t}\n\tt.mu.Unlock()\n\n\tif channelz.IsOn() {\n\t\tif eosReceived {\n\t\t\tatomic.AddInt64(&t.czData.streamsSucceeded, 1)\n\t\t} else {\n\t\t\tatomic.AddInt64(&t.czData.streamsFailed, 1)\n\t\t}\n\t}\n}\n\n// finishStream closes the stream and puts the trailing headerFrame into controlbuf.\nfunc (t *http2Server) finishStream(s *Stream, rst bool, rstCode http2.ErrCode, hdr *headerFrame, eosReceived bool) {\n\t// In case stream sending and receiving are invoked in separate\n\t// goroutines (e.g., bi-directional streaming), cancel needs to be\n\t// called to interrupt the potential blocking on other goroutines.\n\ts.cancel()\n\n\toldState := s.swapState(streamDone)\n\tif oldState == streamDone {\n\t\t// If the stream was already done, return.\n\t\treturn\n\t}\n\n\thdr.cleanup = &cleanupStream{\n\t\tstreamID: s.id,\n\t\trst:      rst,\n\t\trstCode:  rstCode,\n\t\tonWrite: func() {\n\t\t\tt.deleteStream(s, eosReceived)\n\t\t},\n\t}\n\tt.controlBuf.put(hdr)\n}\n\n// closeStream clears the footprint of a stream when the stream is not needed any more.\nfunc (t *http2Server) closeStream(s *Stream, rst bool, rstCode http2.ErrCode, eosReceived bool) {\n\t// In case stream sending and receiving are invoked in separate\n\t// goroutines (e.g., bi-directional streaming), cancel needs to be\n\t// called to interrupt the potential blocking on other goroutines.\n\ts.cancel()\n\n\ts.swapState(streamDone)\n\tt.deleteStream(s, eosReceived)\n\n\tt.controlBuf.put(&cleanupStream{\n\t\tstreamID: s.id,\n\t\trst:      rst,\n\t\trstCode:  rstCode,\n\t\tonWrite:  func() {},\n\t})\n}\n\nfunc (t *http2Server) RemoteAddr() net.Addr {\n\treturn t.remoteAddr\n}\n\nfunc (t *http2Server) Drain(debugData string) {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\tif t.drainEvent != nil {\n\t\treturn\n\t}\n\tt.drainEvent = grpcsync.NewEvent()\n\tt.controlBuf.put(&goAway{code: http2.ErrCodeNo, debugData: []byte(debugData), headsUp: true})\n}\n\nvar goAwayPing = &ping{data: [8]byte{1, 6, 1, 8, 0, 3, 3, 9}}\n\n// Handles outgoing GoAway and returns true if loopy needs to put itself\n// in draining mode.\nfunc (t *http2Server) outgoingGoAwayHandler(g *goAway) (bool, error) {\n\tt.maxStreamMu.Lock()\n\tt.mu.Lock()\n\tif t.state == closing { // TODO(mmukhi): This seems unnecessary.\n\t\tt.mu.Unlock()\n\t\tt.maxStreamMu.Unlock()\n\t\t// The transport is closing.\n\t\treturn false, ErrConnClosing\n\t}\n\tif !g.headsUp {\n\t\t// Stop accepting more streams now.\n\t\tt.state = draining\n\t\tsid := t.maxStreamID\n\t\tretErr := g.closeConn\n\t\tif len(t.activeStreams) == 0 {\n\t\t\tretErr = errors.New(\"second GOAWAY written and no active streams left to process\")\n\t\t}\n\t\tt.mu.Unlock()\n\t\tt.maxStreamMu.Unlock()\n\t\tif err := t.framer.fr.WriteGoAway(sid, g.code, g.debugData); err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif retErr != nil {\n\t\t\treturn false, retErr\n\t\t}\n\t\treturn true, nil\n\t}\n\tt.mu.Unlock()\n\tt.maxStreamMu.Unlock()\n\t// For a graceful close, send out a GoAway with stream ID of MaxUInt32,\n\t// Follow that with a ping and wait for the ack to come back or a timer\n\t// to expire. During this time accept new streams since they might have\n\t// originated before the GoAway reaches the client.\n\t// After getting the ack or timer expiration send out another GoAway this\n\t// time with an ID of the max stream server intends to process.\n\tif err := t.framer.fr.WriteGoAway(math.MaxUint32, http2.ErrCodeNo, g.debugData); err != nil {\n\t\treturn false, err\n\t}\n\tif err := t.framer.fr.WritePing(false, goAwayPing.data); err != nil {\n\t\treturn false, err\n\t}\n\tgo func() {\n\t\ttimer := time.NewTimer(time.Minute)\n\t\tdefer timer.Stop()\n\t\tselect {\n\t\tcase <-t.drainEvent.Done():\n\t\tcase <-timer.C:\n\t\tcase <-t.done:\n\t\t\treturn\n\t\t}\n\t\tt.controlBuf.put(&goAway{code: g.code, debugData: g.debugData})\n\t}()\n\treturn false, nil\n}\n\nfunc (t *http2Server) ChannelzMetric() *channelz.SocketInternalMetric {\n\ts := channelz.SocketInternalMetric{\n\t\tStreamsStarted:                   atomic.LoadInt64(&t.czData.streamsStarted),\n\t\tStreamsSucceeded:                 atomic.LoadInt64(&t.czData.streamsSucceeded),\n\t\tStreamsFailed:                    atomic.LoadInt64(&t.czData.streamsFailed),\n\t\tMessagesSent:                     atomic.LoadInt64(&t.czData.msgSent),\n\t\tMessagesReceived:                 atomic.LoadInt64(&t.czData.msgRecv),\n\t\tKeepAlivesSent:                   atomic.LoadInt64(&t.czData.kpCount),\n\t\tLastRemoteStreamCreatedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastStreamCreatedTime)),\n\t\tLastMessageSentTimestamp:         time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgSentTime)),\n\t\tLastMessageReceivedTimestamp:     time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgRecvTime)),\n\t\tLocalFlowControlWindow:           int64(t.fc.getSize()),\n\t\tSocketOptions:                    channelz.GetSocketOption(t.conn),\n\t\tLocalAddr:                        t.localAddr,\n\t\tRemoteAddr:                       t.remoteAddr,\n\t\t// RemoteName :\n\t}\n\tif au, ok := t.authInfo.(credentials.ChannelzSecurityInfo); ok {\n\t\ts.Security = au.GetSecurityValue()\n\t}\n\ts.RemoteFlowControlWindow = t.getOutFlowWindow()\n\treturn &s\n}\n\nfunc (t *http2Server) IncrMsgSent() {\n\tatomic.AddInt64(&t.czData.msgSent, 1)\n\tatomic.StoreInt64(&t.czData.lastMsgSentTime, time.Now().UnixNano())\n}\n\nfunc (t *http2Server) IncrMsgRecv() {\n\tatomic.AddInt64(&t.czData.msgRecv, 1)\n\tatomic.StoreInt64(&t.czData.lastMsgRecvTime, time.Now().UnixNano())\n}\n\nfunc (t *http2Server) getOutFlowWindow() int64 {\n\tresp := make(chan uint32, 1)\n\ttimer := time.NewTimer(time.Second)\n\tdefer timer.Stop()\n\tt.controlBuf.put(&outFlowControlSizeRequest{resp})\n\tselect {\n\tcase sz := <-resp:\n\t\treturn int64(sz)\n\tcase <-t.done:\n\t\treturn -1\n\tcase <-timer.C:\n\t\treturn -2\n\t}\n}\n\nfunc (t *http2Server) getPeer() *peer.Peer {\n\treturn &peer.Peer{\n\t\tAddr:     t.remoteAddr,\n\t\tAuthInfo: t.authInfo, // Can be nil\n\t}\n}\n\nfunc getJitter(v time.Duration) time.Duration {\n\tif v == infinity {\n\t\treturn 0\n\t}\n\t// Generate a jitter between +/- 10% of the value.\n\tr := int64(v / 10)\n\tj := grpcrand.Int63n(2*r) - r\n\treturn time.Duration(j)\n}\n\ntype connectionKey struct{}\n\n// GetConnection gets the connection from the context.\nfunc GetConnection(ctx context.Context) net.Conn {\n\tconn, _ := ctx.Value(connectionKey{}).(net.Conn)\n\treturn conn\n}\n\n// SetConnection adds the connection to the context to be able to get\n// information about the destination ip and port for an incoming RPC. This also\n// allows any unary or streaming interceptors to see the connection.\nfunc setConnection(ctx context.Context, conn net.Conn) context.Context {\n\treturn context.WithValue(ctx, connectionKey{}, conn)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/http_util.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"bufio\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"golang.org/x/net/http2\"\n\t\"golang.org/x/net/http2/hpack\"\n\t\"google.golang.org/grpc/codes\"\n)\n\nconst (\n\t// http2MaxFrameLen specifies the max length of a HTTP2 frame.\n\thttp2MaxFrameLen = 16384 // 16KB frame\n\t// https://httpwg.org/specs/rfc7540.html#SettingValues\n\thttp2InitHeaderTableSize = 4096\n)\n\nvar (\n\tclientPreface   = []byte(http2.ClientPreface)\n\thttp2ErrConvTab = map[http2.ErrCode]codes.Code{\n\t\thttp2.ErrCodeNo:                 codes.Internal,\n\t\thttp2.ErrCodeProtocol:           codes.Internal,\n\t\thttp2.ErrCodeInternal:           codes.Internal,\n\t\thttp2.ErrCodeFlowControl:        codes.ResourceExhausted,\n\t\thttp2.ErrCodeSettingsTimeout:    codes.Internal,\n\t\thttp2.ErrCodeStreamClosed:       codes.Internal,\n\t\thttp2.ErrCodeFrameSize:          codes.Internal,\n\t\thttp2.ErrCodeRefusedStream:      codes.Unavailable,\n\t\thttp2.ErrCodeCancel:             codes.Canceled,\n\t\thttp2.ErrCodeCompression:        codes.Internal,\n\t\thttp2.ErrCodeConnect:            codes.Internal,\n\t\thttp2.ErrCodeEnhanceYourCalm:    codes.ResourceExhausted,\n\t\thttp2.ErrCodeInadequateSecurity: codes.PermissionDenied,\n\t\thttp2.ErrCodeHTTP11Required:     codes.Internal,\n\t}\n\t// HTTPStatusConvTab is the HTTP status code to gRPC error code conversion table.\n\tHTTPStatusConvTab = map[int]codes.Code{\n\t\t// 400 Bad Request - INTERNAL.\n\t\thttp.StatusBadRequest: codes.Internal,\n\t\t// 401 Unauthorized  - UNAUTHENTICATED.\n\t\thttp.StatusUnauthorized: codes.Unauthenticated,\n\t\t// 403 Forbidden - PERMISSION_DENIED.\n\t\thttp.StatusForbidden: codes.PermissionDenied,\n\t\t// 404 Not Found - UNIMPLEMENTED.\n\t\thttp.StatusNotFound: codes.Unimplemented,\n\t\t// 429 Too Many Requests - UNAVAILABLE.\n\t\thttp.StatusTooManyRequests: codes.Unavailable,\n\t\t// 502 Bad Gateway - UNAVAILABLE.\n\t\thttp.StatusBadGateway: codes.Unavailable,\n\t\t// 503 Service Unavailable - UNAVAILABLE.\n\t\thttp.StatusServiceUnavailable: codes.Unavailable,\n\t\t// 504 Gateway timeout - UNAVAILABLE.\n\t\thttp.StatusGatewayTimeout: codes.Unavailable,\n\t}\n)\n\nvar grpcStatusDetailsBinHeader = \"grpc-status-details-bin\"\n\n// isReservedHeader checks whether hdr belongs to HTTP2 headers\n// reserved by gRPC protocol. Any other headers are classified as the\n// user-specified metadata.\nfunc isReservedHeader(hdr string) bool {\n\tif hdr != \"\" && hdr[0] == ':' {\n\t\treturn true\n\t}\n\tswitch hdr {\n\tcase \"content-type\",\n\t\t\"user-agent\",\n\t\t\"grpc-message-type\",\n\t\t\"grpc-encoding\",\n\t\t\"grpc-message\",\n\t\t\"grpc-status\",\n\t\t\"grpc-timeout\",\n\t\t// Intentionally exclude grpc-previous-rpc-attempts and\n\t\t// grpc-retry-pushback-ms, which are \"reserved\", but their API\n\t\t// intentionally works via metadata.\n\t\t\"te\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// isWhitelistedHeader checks whether hdr should be propagated into metadata\n// visible to users, even though it is classified as \"reserved\", above.\nfunc isWhitelistedHeader(hdr string) bool {\n\tswitch hdr {\n\tcase \":authority\", \"user-agent\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nconst binHdrSuffix = \"-bin\"\n\nfunc encodeBinHeader(v []byte) string {\n\treturn base64.RawStdEncoding.EncodeToString(v)\n}\n\nfunc decodeBinHeader(v string) ([]byte, error) {\n\tif len(v)%4 == 0 {\n\t\t// Input was padded, or padding was not necessary.\n\t\treturn base64.StdEncoding.DecodeString(v)\n\t}\n\treturn base64.RawStdEncoding.DecodeString(v)\n}\n\nfunc encodeMetadataHeader(k, v string) string {\n\tif strings.HasSuffix(k, binHdrSuffix) {\n\t\treturn encodeBinHeader(([]byte)(v))\n\t}\n\treturn v\n}\n\nfunc decodeMetadataHeader(k, v string) (string, error) {\n\tif strings.HasSuffix(k, binHdrSuffix) {\n\t\tb, err := decodeBinHeader(v)\n\t\treturn string(b), err\n\t}\n\treturn v, nil\n}\n\ntype timeoutUnit uint8\n\nconst (\n\thour        timeoutUnit = 'H'\n\tminute      timeoutUnit = 'M'\n\tsecond      timeoutUnit = 'S'\n\tmillisecond timeoutUnit = 'm'\n\tmicrosecond timeoutUnit = 'u'\n\tnanosecond  timeoutUnit = 'n'\n)\n\nfunc timeoutUnitToDuration(u timeoutUnit) (d time.Duration, ok bool) {\n\tswitch u {\n\tcase hour:\n\t\treturn time.Hour, true\n\tcase minute:\n\t\treturn time.Minute, true\n\tcase second:\n\t\treturn time.Second, true\n\tcase millisecond:\n\t\treturn time.Millisecond, true\n\tcase microsecond:\n\t\treturn time.Microsecond, true\n\tcase nanosecond:\n\t\treturn time.Nanosecond, true\n\tdefault:\n\t}\n\treturn\n}\n\nfunc decodeTimeout(s string) (time.Duration, error) {\n\tsize := len(s)\n\tif size < 2 {\n\t\treturn 0, fmt.Errorf(\"transport: timeout string is too short: %q\", s)\n\t}\n\tif size > 9 {\n\t\t// Spec allows for 8 digits plus the unit.\n\t\treturn 0, fmt.Errorf(\"transport: timeout string is too long: %q\", s)\n\t}\n\tunit := timeoutUnit(s[size-1])\n\td, ok := timeoutUnitToDuration(unit)\n\tif !ok {\n\t\treturn 0, fmt.Errorf(\"transport: timeout unit is not recognized: %q\", s)\n\t}\n\tt, err := strconv.ParseInt(s[:size-1], 10, 64)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tconst maxHours = math.MaxInt64 / int64(time.Hour)\n\tif d == time.Hour && t > maxHours {\n\t\t// This timeout would overflow math.MaxInt64; clamp it.\n\t\treturn time.Duration(math.MaxInt64), nil\n\t}\n\treturn d * time.Duration(t), nil\n}\n\nconst (\n\tspaceByte   = ' '\n\ttildeByte   = '~'\n\tpercentByte = '%'\n)\n\n// encodeGrpcMessage is used to encode status code in header field\n// \"grpc-message\". It does percent encoding and also replaces invalid utf-8\n// characters with Unicode replacement character.\n//\n// It checks to see if each individual byte in msg is an allowable byte, and\n// then either percent encoding or passing it through. When percent encoding,\n// the byte is converted into hexadecimal notation with a '%' prepended.\nfunc encodeGrpcMessage(msg string) string {\n\tif msg == \"\" {\n\t\treturn \"\"\n\t}\n\tlenMsg := len(msg)\n\tfor i := 0; i < lenMsg; i++ {\n\t\tc := msg[i]\n\t\tif !(c >= spaceByte && c <= tildeByte && c != percentByte) {\n\t\t\treturn encodeGrpcMessageUnchecked(msg)\n\t\t}\n\t}\n\treturn msg\n}\n\nfunc encodeGrpcMessageUnchecked(msg string) string {\n\tvar sb strings.Builder\n\tfor len(msg) > 0 {\n\t\tr, size := utf8.DecodeRuneInString(msg)\n\t\tfor _, b := range []byte(string(r)) {\n\t\t\tif size > 1 {\n\t\t\t\t// If size > 1, r is not ascii. Always do percent encoding.\n\t\t\t\tfmt.Fprintf(&sb, \"%%%02X\", b)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// The for loop is necessary even if size == 1. r could be\n\t\t\t// utf8.RuneError.\n\t\t\t//\n\t\t\t// fmt.Sprintf(\"%%%02X\", utf8.RuneError) gives \"%FFFD\".\n\t\t\tif b >= spaceByte && b <= tildeByte && b != percentByte {\n\t\t\t\tsb.WriteByte(b)\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(&sb, \"%%%02X\", b)\n\t\t\t}\n\t\t}\n\t\tmsg = msg[size:]\n\t}\n\treturn sb.String()\n}\n\n// decodeGrpcMessage decodes the msg encoded by encodeGrpcMessage.\nfunc decodeGrpcMessage(msg string) string {\n\tif msg == \"\" {\n\t\treturn \"\"\n\t}\n\tlenMsg := len(msg)\n\tfor i := 0; i < lenMsg; i++ {\n\t\tif msg[i] == percentByte && i+2 < lenMsg {\n\t\t\treturn decodeGrpcMessageUnchecked(msg)\n\t\t}\n\t}\n\treturn msg\n}\n\nfunc decodeGrpcMessageUnchecked(msg string) string {\n\tvar sb strings.Builder\n\tlenMsg := len(msg)\n\tfor i := 0; i < lenMsg; i++ {\n\t\tc := msg[i]\n\t\tif c == percentByte && i+2 < lenMsg {\n\t\t\tparsed, err := strconv.ParseUint(msg[i+1:i+3], 16, 8)\n\t\t\tif err != nil {\n\t\t\t\tsb.WriteByte(c)\n\t\t\t} else {\n\t\t\t\tsb.WriteByte(byte(parsed))\n\t\t\t\ti += 2\n\t\t\t}\n\t\t} else {\n\t\t\tsb.WriteByte(c)\n\t\t}\n\t}\n\treturn sb.String()\n}\n\ntype bufWriter struct {\n\tpool      *sync.Pool\n\tbuf       []byte\n\toffset    int\n\tbatchSize int\n\tconn      net.Conn\n\terr       error\n}\n\nfunc newBufWriter(conn net.Conn, batchSize int, pool *sync.Pool) *bufWriter {\n\tw := &bufWriter{\n\t\tbatchSize: batchSize,\n\t\tconn:      conn,\n\t\tpool:      pool,\n\t}\n\t// this indicates that we should use non shared buf\n\tif pool == nil {\n\t\tw.buf = make([]byte, batchSize)\n\t}\n\treturn w\n}\n\nfunc (w *bufWriter) Write(b []byte) (n int, err error) {\n\tif w.err != nil {\n\t\treturn 0, w.err\n\t}\n\tif w.batchSize == 0 { // Buffer has been disabled.\n\t\tn, err = w.conn.Write(b)\n\t\treturn n, toIOError(err)\n\t}\n\tif w.buf == nil {\n\t\tb := w.pool.Get().(*[]byte)\n\t\tw.buf = *b\n\t}\n\tfor len(b) > 0 {\n\t\tnn := copy(w.buf[w.offset:], b)\n\t\tb = b[nn:]\n\t\tw.offset += nn\n\t\tn += nn\n\t\tif w.offset >= w.batchSize {\n\t\t\terr = w.flushKeepBuffer()\n\t\t}\n\t}\n\treturn n, err\n}\n\nfunc (w *bufWriter) Flush() error {\n\terr := w.flushKeepBuffer()\n\t// Only release the buffer if we are in a \"shared\" mode\n\tif w.buf != nil && w.pool != nil {\n\t\tb := w.buf\n\t\tw.pool.Put(&b)\n\t\tw.buf = nil\n\t}\n\treturn err\n}\n\nfunc (w *bufWriter) flushKeepBuffer() error {\n\tif w.err != nil {\n\t\treturn w.err\n\t}\n\tif w.offset == 0 {\n\t\treturn nil\n\t}\n\t_, w.err = w.conn.Write(w.buf[:w.offset])\n\tw.err = toIOError(w.err)\n\tw.offset = 0\n\treturn w.err\n}\n\ntype ioError struct {\n\terror\n}\n\nfunc (i ioError) Unwrap() error {\n\treturn i.error\n}\n\nfunc isIOError(err error) bool {\n\treturn errors.As(err, &ioError{})\n}\n\nfunc toIOError(err error) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\treturn ioError{error: err}\n}\n\ntype framer struct {\n\twriter *bufWriter\n\tfr     *http2.Framer\n}\n\nvar writeBufferPoolMap map[int]*sync.Pool = make(map[int]*sync.Pool)\nvar writeBufferMutex sync.Mutex\n\nfunc newFramer(conn net.Conn, writeBufferSize, readBufferSize int, sharedWriteBuffer bool, maxHeaderListSize uint32) *framer {\n\tif writeBufferSize < 0 {\n\t\twriteBufferSize = 0\n\t}\n\tvar r io.Reader = conn\n\tif readBufferSize > 0 {\n\t\tr = bufio.NewReaderSize(r, readBufferSize)\n\t}\n\tvar pool *sync.Pool\n\tif sharedWriteBuffer {\n\t\tpool = getWriteBufferPool(writeBufferSize)\n\t}\n\tw := newBufWriter(conn, writeBufferSize, pool)\n\tf := &framer{\n\t\twriter: w,\n\t\tfr:     http2.NewFramer(w, r),\n\t}\n\tf.fr.SetMaxReadFrameSize(http2MaxFrameLen)\n\t// Opt-in to Frame reuse API on framer to reduce garbage.\n\t// Frames aren't safe to read from after a subsequent call to ReadFrame.\n\tf.fr.SetReuseFrames()\n\tf.fr.MaxHeaderListSize = maxHeaderListSize\n\tf.fr.ReadMetaHeaders = hpack.NewDecoder(http2InitHeaderTableSize, nil)\n\treturn f\n}\n\nfunc getWriteBufferPool(writeBufferSize int) *sync.Pool {\n\twriteBufferMutex.Lock()\n\tdefer writeBufferMutex.Unlock()\n\tsize := writeBufferSize * 2\n\tpool, ok := writeBufferPoolMap[size]\n\tif ok {\n\t\treturn pool\n\t}\n\tpool = &sync.Pool{\n\t\tNew: func() any {\n\t\t\tb := make([]byte, size)\n\t\t\treturn &b\n\t\t},\n\t}\n\twriteBufferPoolMap[size] = pool\n\treturn pool\n}\n\n// parseDialTarget returns the network and address to pass to dialer.\nfunc parseDialTarget(target string) (string, string) {\n\tnet := \"tcp\"\n\tm1 := strings.Index(target, \":\")\n\tm2 := strings.Index(target, \":/\")\n\t// handle unix:addr which will fail with url.Parse\n\tif m1 >= 0 && m2 < 0 {\n\t\tif n := target[0:m1]; n == \"unix\" {\n\t\t\treturn n, target[m1+1:]\n\t\t}\n\t}\n\tif m2 >= 0 {\n\t\tt, err := url.Parse(target)\n\t\tif err != nil {\n\t\t\treturn net, target\n\t\t}\n\t\tscheme := t.Scheme\n\t\taddr := t.Path\n\t\tif scheme == \"unix\" {\n\t\t\tif addr == \"\" {\n\t\t\t\taddr = t.Host\n\t\t\t}\n\t\t\treturn scheme, addr\n\t\t}\n\t}\n\treturn net, target\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/logging.go",
    "content": "/*\n *\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/grpclog\"\n\tinternalgrpclog \"google.golang.org/grpc/internal/grpclog\"\n)\n\nvar logger = grpclog.Component(\"transport\")\n\nfunc prefixLoggerForServerTransport(p *http2Server) *internalgrpclog.PrefixLogger {\n\treturn internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(\"[server-transport %p] \", p))\n}\n\nfunc prefixLoggerForServerHandlerTransport(p *serverHandlerTransport) *internalgrpclog.PrefixLogger {\n\treturn internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(\"[server-handler-transport %p] \", p))\n}\n\nfunc prefixLoggerForClientTransport(p *http2Client) *internalgrpclog.PrefixLogger {\n\treturn internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(\"[client-transport %p] \", p))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go",
    "content": "/*\n *\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package networktype declares the network type to be used in the default\n// dialer. Attribute of a resolver.Address.\npackage networktype\n\nimport (\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// keyType is the key to use for storing State in Attributes.\ntype keyType string\n\nconst key = keyType(\"grpc.internal.transport.networktype\")\n\n// Set returns a copy of the provided address with attributes containing networkType.\nfunc Set(address resolver.Address, networkType string) resolver.Address {\n\taddress.Attributes = address.Attributes.WithValue(key, networkType)\n\treturn address\n}\n\n// Get returns the network type in the resolver.Address and true, or \"\", false\n// if not present.\nfunc Get(address resolver.Address) (string, bool) {\n\tv := address.Attributes.Value(key)\n\tif v == nil {\n\t\treturn \"\", false\n\t}\n\treturn v.(string), true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/proxy.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage transport\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/http/httputil\"\n\t\"net/url\"\n)\n\nconst proxyAuthHeaderKey = \"Proxy-Authorization\"\n\nvar (\n\t// The following variable will be overwritten in the tests.\n\thttpProxyFromEnvironment = http.ProxyFromEnvironment\n)\n\nfunc mapAddress(address string) (*url.URL, error) {\n\treq := &http.Request{\n\t\tURL: &url.URL{\n\t\t\tScheme: \"https\",\n\t\t\tHost:   address,\n\t\t},\n\t}\n\turl, err := httpProxyFromEnvironment(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn url, nil\n}\n\n// To read a response from a net.Conn, http.ReadResponse() takes a bufio.Reader.\n// It's possible that this reader reads more than what's need for the response and stores\n// those bytes in the buffer.\n// bufConn wraps the original net.Conn and the bufio.Reader to make sure we don't lose the\n// bytes in the buffer.\ntype bufConn struct {\n\tnet.Conn\n\tr io.Reader\n}\n\nfunc (c *bufConn) Read(b []byte) (int, error) {\n\treturn c.r.Read(b)\n}\n\nfunc basicAuth(username, password string) string {\n\tauth := username + \":\" + password\n\treturn base64.StdEncoding.EncodeToString([]byte(auth))\n}\n\nfunc doHTTPConnectHandshake(ctx context.Context, conn net.Conn, backendAddr string, proxyURL *url.URL, grpcUA string) (_ net.Conn, err error) {\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tconn.Close()\n\t\t}\n\t}()\n\n\treq := &http.Request{\n\t\tMethod: http.MethodConnect,\n\t\tURL:    &url.URL{Host: backendAddr},\n\t\tHeader: map[string][]string{\"User-Agent\": {grpcUA}},\n\t}\n\tif t := proxyURL.User; t != nil {\n\t\tu := t.Username()\n\t\tp, _ := t.Password()\n\t\treq.Header.Add(proxyAuthHeaderKey, \"Basic \"+basicAuth(u, p))\n\t}\n\n\tif err := sendHTTPRequest(ctx, req, conn); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to write the HTTP request: %v\", err)\n\t}\n\n\tr := bufio.NewReader(conn)\n\tresp, err := http.ReadResponse(r, req)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"reading server HTTP response: %v\", err)\n\t}\n\tdefer resp.Body.Close()\n\tif resp.StatusCode != http.StatusOK {\n\t\tdump, err := httputil.DumpResponse(resp, true)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to do connect handshake, status code: %s\", resp.Status)\n\t\t}\n\t\treturn nil, fmt.Errorf(\"failed to do connect handshake, response: %q\", dump)\n\t}\n\n\treturn &bufConn{Conn: conn, r: r}, nil\n}\n\n// proxyDial dials, connecting to a proxy first if necessary. Checks if a proxy\n// is necessary, dials, does the HTTP CONNECT handshake, and returns the\n// connection.\nfunc proxyDial(ctx context.Context, addr string, grpcUA string) (conn net.Conn, err error) {\n\tnewAddr := addr\n\tproxyURL, err := mapAddress(addr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif proxyURL != nil {\n\t\tnewAddr = proxyURL.Host\n\t}\n\n\tconn, err = (&net.Dialer{}).DialContext(ctx, \"tcp\", newAddr)\n\tif err != nil {\n\t\treturn\n\t}\n\tif proxyURL != nil {\n\t\t// proxy is disabled if proxyURL is nil.\n\t\tconn, err = doHTTPConnectHandshake(ctx, conn, addr, proxyURL, grpcUA)\n\t}\n\treturn\n}\n\nfunc sendHTTPRequest(ctx context.Context, req *http.Request, conn net.Conn) error {\n\treq = req.WithContext(ctx)\n\tif err := req.Write(conn); err != nil {\n\t\treturn fmt.Errorf(\"failed to write the HTTP request: %v\", err)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/transport/transport.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package transport defines and implements message oriented communication\n// channel to complete various transactions (e.g., an RPC).  It is meant for\n// grpc-internal usage and is not intended to be imported directly by users.\npackage transport\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/keepalive\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n\t\"google.golang.org/grpc/tap\"\n)\n\nconst logLevel = 2\n\ntype bufferPool struct {\n\tpool sync.Pool\n}\n\nfunc newBufferPool() *bufferPool {\n\treturn &bufferPool{\n\t\tpool: sync.Pool{\n\t\t\tNew: func() any {\n\t\t\t\treturn new(bytes.Buffer)\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc (p *bufferPool) get() *bytes.Buffer {\n\treturn p.pool.Get().(*bytes.Buffer)\n}\n\nfunc (p *bufferPool) put(b *bytes.Buffer) {\n\tp.pool.Put(b)\n}\n\n// recvMsg represents the received msg from the transport. All transport\n// protocol specific info has been removed.\ntype recvMsg struct {\n\tbuffer *bytes.Buffer\n\t// nil: received some data\n\t// io.EOF: stream is completed. data is nil.\n\t// other non-nil error: transport failure. data is nil.\n\terr error\n}\n\n// recvBuffer is an unbounded channel of recvMsg structs.\n//\n// Note: recvBuffer differs from buffer.Unbounded only in the fact that it\n// holds a channel of recvMsg structs instead of objects implementing \"item\"\n// interface. recvBuffer is written to much more often and using strict recvMsg\n// structs helps avoid allocation in \"recvBuffer.put\"\ntype recvBuffer struct {\n\tc       chan recvMsg\n\tmu      sync.Mutex\n\tbacklog []recvMsg\n\terr     error\n}\n\nfunc newRecvBuffer() *recvBuffer {\n\tb := &recvBuffer{\n\t\tc: make(chan recvMsg, 1),\n\t}\n\treturn b\n}\n\nfunc (b *recvBuffer) put(r recvMsg) {\n\tb.mu.Lock()\n\tif b.err != nil {\n\t\tb.mu.Unlock()\n\t\t// An error had occurred earlier, don't accept more\n\t\t// data or errors.\n\t\treturn\n\t}\n\tb.err = r.err\n\tif len(b.backlog) == 0 {\n\t\tselect {\n\t\tcase b.c <- r:\n\t\t\tb.mu.Unlock()\n\t\t\treturn\n\t\tdefault:\n\t\t}\n\t}\n\tb.backlog = append(b.backlog, r)\n\tb.mu.Unlock()\n}\n\nfunc (b *recvBuffer) load() {\n\tb.mu.Lock()\n\tif len(b.backlog) > 0 {\n\t\tselect {\n\t\tcase b.c <- b.backlog[0]:\n\t\t\tb.backlog[0] = recvMsg{}\n\t\t\tb.backlog = b.backlog[1:]\n\t\tdefault:\n\t\t}\n\t}\n\tb.mu.Unlock()\n}\n\n// get returns the channel that receives a recvMsg in the buffer.\n//\n// Upon receipt of a recvMsg, the caller should call load to send another\n// recvMsg onto the channel if there is any.\nfunc (b *recvBuffer) get() <-chan recvMsg {\n\treturn b.c\n}\n\n// recvBufferReader implements io.Reader interface to read the data from\n// recvBuffer.\ntype recvBufferReader struct {\n\tcloseStream func(error) // Closes the client transport stream with the given error and nil trailer metadata.\n\tctx         context.Context\n\tctxDone     <-chan struct{} // cache of ctx.Done() (for performance).\n\trecv        *recvBuffer\n\tlast        *bytes.Buffer // Stores the remaining data in the previous calls.\n\terr         error\n\tfreeBuffer  func(*bytes.Buffer)\n}\n\n// Read reads the next len(p) bytes from last. If last is drained, it tries to\n// read additional data from recv. It blocks if there no additional data available\n// in recv. If Read returns any non-nil error, it will continue to return that error.\nfunc (r *recvBufferReader) Read(p []byte) (n int, err error) {\n\tif r.err != nil {\n\t\treturn 0, r.err\n\t}\n\tif r.last != nil {\n\t\t// Read remaining data left in last call.\n\t\tcopied, _ := r.last.Read(p)\n\t\tif r.last.Len() == 0 {\n\t\t\tr.freeBuffer(r.last)\n\t\t\tr.last = nil\n\t\t}\n\t\treturn copied, nil\n\t}\n\tif r.closeStream != nil {\n\t\tn, r.err = r.readClient(p)\n\t} else {\n\t\tn, r.err = r.read(p)\n\t}\n\treturn n, r.err\n}\n\nfunc (r *recvBufferReader) read(p []byte) (n int, err error) {\n\tselect {\n\tcase <-r.ctxDone:\n\t\treturn 0, ContextErr(r.ctx.Err())\n\tcase m := <-r.recv.get():\n\t\treturn r.readAdditional(m, p)\n\t}\n}\n\nfunc (r *recvBufferReader) readClient(p []byte) (n int, err error) {\n\t// If the context is canceled, then closes the stream with nil metadata.\n\t// closeStream writes its error parameter to r.recv as a recvMsg.\n\t// r.readAdditional acts on that message and returns the necessary error.\n\tselect {\n\tcase <-r.ctxDone:\n\t\t// Note that this adds the ctx error to the end of recv buffer, and\n\t\t// reads from the head. This will delay the error until recv buffer is\n\t\t// empty, thus will delay ctx cancellation in Recv().\n\t\t//\n\t\t// It's done this way to fix a race between ctx cancel and trailer. The\n\t\t// race was, stream.Recv() may return ctx error if ctxDone wins the\n\t\t// race, but stream.Trailer() may return a non-nil md because the stream\n\t\t// was not marked as done when trailer is received. This closeStream\n\t\t// call will mark stream as done, thus fix the race.\n\t\t//\n\t\t// TODO: delaying ctx error seems like a unnecessary side effect. What\n\t\t// we really want is to mark the stream as done, and return ctx error\n\t\t// faster.\n\t\tr.closeStream(ContextErr(r.ctx.Err()))\n\t\tm := <-r.recv.get()\n\t\treturn r.readAdditional(m, p)\n\tcase m := <-r.recv.get():\n\t\treturn r.readAdditional(m, p)\n\t}\n}\n\nfunc (r *recvBufferReader) readAdditional(m recvMsg, p []byte) (n int, err error) {\n\tr.recv.load()\n\tif m.err != nil {\n\t\treturn 0, m.err\n\t}\n\tcopied, _ := m.buffer.Read(p)\n\tif m.buffer.Len() == 0 {\n\t\tr.freeBuffer(m.buffer)\n\t\tr.last = nil\n\t} else {\n\t\tr.last = m.buffer\n\t}\n\treturn copied, nil\n}\n\ntype streamState uint32\n\nconst (\n\tstreamActive    streamState = iota\n\tstreamWriteDone             // EndStream sent\n\tstreamReadDone              // EndStream received\n\tstreamDone                  // the entire stream is finished.\n)\n\n// Stream represents an RPC in the transport layer.\ntype Stream struct {\n\tid           uint32\n\tst           ServerTransport    // nil for client side Stream\n\tct           *http2Client       // nil for server side Stream\n\tctx          context.Context    // the associated context of the stream\n\tcancel       context.CancelFunc // always nil for client side Stream\n\tdone         chan struct{}      // closed at the end of stream to unblock writers. On the client side.\n\tdoneFunc     func()             // invoked at the end of stream on client side.\n\tctxDone      <-chan struct{}    // same as done chan but for server side. Cache of ctx.Done() (for performance)\n\tmethod       string             // the associated RPC method of the stream\n\trecvCompress string\n\tsendCompress string\n\tbuf          *recvBuffer\n\ttrReader     io.Reader\n\tfc           *inFlow\n\twq           *writeQuota\n\n\t// Holds compressor names passed in grpc-accept-encoding metadata from the\n\t// client. This is empty for the client side stream.\n\tclientAdvertisedCompressors string\n\t// Callback to state application's intentions to read data. This\n\t// is used to adjust flow control, if needed.\n\trequestRead func(int)\n\n\theaderChan       chan struct{} // closed to indicate the end of header metadata.\n\theaderChanClosed uint32        // set when headerChan is closed. Used to avoid closing headerChan multiple times.\n\t// headerValid indicates whether a valid header was received.  Only\n\t// meaningful after headerChan is closed (always call waitOnHeader() before\n\t// reading its value).  Not valid on server side.\n\theaderValid bool\n\n\t// hdrMu protects header and trailer metadata on the server-side.\n\thdrMu sync.Mutex\n\t// On client side, header keeps the received header metadata.\n\t//\n\t// On server side, header keeps the header set by SetHeader(). The complete\n\t// header will merged into this after t.WriteHeader() is called.\n\theader  metadata.MD\n\ttrailer metadata.MD // the key-value map of trailer metadata.\n\n\tnoHeaders bool // set if the client never received headers (set only after the stream is done).\n\n\t// On the server-side, headerSent is atomically set to 1 when the headers are sent out.\n\theaderSent uint32\n\n\tstate streamState\n\n\t// On client-side it is the status error received from the server.\n\t// On server-side it is unused.\n\tstatus *status.Status\n\n\tbytesReceived uint32 // indicates whether any bytes have been received on this stream\n\tunprocessed   uint32 // set if the server sends a refused stream or GOAWAY including this stream\n\n\t// contentSubtype is the content-subtype for requests.\n\t// this must be lowercase or the behavior is undefined.\n\tcontentSubtype string\n}\n\n// isHeaderSent is only valid on the server-side.\nfunc (s *Stream) isHeaderSent() bool {\n\treturn atomic.LoadUint32(&s.headerSent) == 1\n}\n\n// updateHeaderSent updates headerSent and returns true\n// if it was alreay set. It is valid only on server-side.\nfunc (s *Stream) updateHeaderSent() bool {\n\treturn atomic.SwapUint32(&s.headerSent, 1) == 1\n}\n\nfunc (s *Stream) swapState(st streamState) streamState {\n\treturn streamState(atomic.SwapUint32((*uint32)(&s.state), uint32(st)))\n}\n\nfunc (s *Stream) compareAndSwapState(oldState, newState streamState) bool {\n\treturn atomic.CompareAndSwapUint32((*uint32)(&s.state), uint32(oldState), uint32(newState))\n}\n\nfunc (s *Stream) getState() streamState {\n\treturn streamState(atomic.LoadUint32((*uint32)(&s.state)))\n}\n\nfunc (s *Stream) waitOnHeader() {\n\tif s.headerChan == nil {\n\t\t// On the server headerChan is always nil since a stream originates\n\t\t// only after having received headers.\n\t\treturn\n\t}\n\tselect {\n\tcase <-s.ctx.Done():\n\t\t// Close the stream to prevent headers/trailers from changing after\n\t\t// this function returns.\n\t\ts.ct.CloseStream(s, ContextErr(s.ctx.Err()))\n\t\t// headerChan could possibly not be closed yet if closeStream raced\n\t\t// with operateHeaders; wait until it is closed explicitly here.\n\t\t<-s.headerChan\n\tcase <-s.headerChan:\n\t}\n}\n\n// RecvCompress returns the compression algorithm applied to the inbound\n// message. It is empty string if there is no compression applied.\nfunc (s *Stream) RecvCompress() string {\n\ts.waitOnHeader()\n\treturn s.recvCompress\n}\n\n// SetSendCompress sets the compression algorithm to the stream.\nfunc (s *Stream) SetSendCompress(name string) error {\n\tif s.isHeaderSent() || s.getState() == streamDone {\n\t\treturn errors.New(\"transport: set send compressor called after headers sent or stream done\")\n\t}\n\n\ts.sendCompress = name\n\treturn nil\n}\n\n// SendCompress returns the send compressor name.\nfunc (s *Stream) SendCompress() string {\n\treturn s.sendCompress\n}\n\n// ClientAdvertisedCompressors returns the compressor names advertised by the\n// client via grpc-accept-encoding header.\nfunc (s *Stream) ClientAdvertisedCompressors() string {\n\treturn s.clientAdvertisedCompressors\n}\n\n// Done returns a channel which is closed when it receives the final status\n// from the server.\nfunc (s *Stream) Done() <-chan struct{} {\n\treturn s.done\n}\n\n// Header returns the header metadata of the stream.\n//\n// On client side, it acquires the key-value pairs of header metadata once it is\n// available. It blocks until i) the metadata is ready or ii) there is no header\n// metadata or iii) the stream is canceled/expired.\n//\n// On server side, it returns the out header after t.WriteHeader is called.  It\n// does not block and must not be called until after WriteHeader.\nfunc (s *Stream) Header() (metadata.MD, error) {\n\tif s.headerChan == nil {\n\t\t// On server side, return the header in stream. It will be the out\n\t\t// header after t.WriteHeader is called.\n\t\treturn s.header.Copy(), nil\n\t}\n\ts.waitOnHeader()\n\n\tif !s.headerValid || s.noHeaders {\n\t\treturn nil, s.status.Err()\n\t}\n\n\treturn s.header.Copy(), nil\n}\n\n// TrailersOnly blocks until a header or trailers-only frame is received and\n// then returns true if the stream was trailers-only.  If the stream ends\n// before headers are received, returns true, nil.  Client-side only.\nfunc (s *Stream) TrailersOnly() bool {\n\ts.waitOnHeader()\n\treturn s.noHeaders\n}\n\n// Trailer returns the cached trailer metedata. Note that if it is not called\n// after the entire stream is done, it could return an empty MD. Client\n// side only.\n// It can be safely read only after stream has ended that is either read\n// or write have returned io.EOF.\nfunc (s *Stream) Trailer() metadata.MD {\n\tc := s.trailer.Copy()\n\treturn c\n}\n\n// ContentSubtype returns the content-subtype for a request. For example, a\n// content-subtype of \"proto\" will result in a content-type of\n// \"application/grpc+proto\". This will always be lowercase.  See\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details.\nfunc (s *Stream) ContentSubtype() string {\n\treturn s.contentSubtype\n}\n\n// Context returns the context of the stream.\nfunc (s *Stream) Context() context.Context {\n\treturn s.ctx\n}\n\n// Method returns the method for the stream.\nfunc (s *Stream) Method() string {\n\treturn s.method\n}\n\n// Status returns the status received from the server.\n// Status can be read safely only after the stream has ended,\n// that is, after Done() is closed.\nfunc (s *Stream) Status() *status.Status {\n\treturn s.status\n}\n\n// SetHeader sets the header metadata. This can be called multiple times.\n// Server side only.\n// This should not be called in parallel to other data writes.\nfunc (s *Stream) SetHeader(md metadata.MD) error {\n\tif md.Len() == 0 {\n\t\treturn nil\n\t}\n\tif s.isHeaderSent() || s.getState() == streamDone {\n\t\treturn ErrIllegalHeaderWrite\n\t}\n\ts.hdrMu.Lock()\n\ts.header = metadata.Join(s.header, md)\n\ts.hdrMu.Unlock()\n\treturn nil\n}\n\n// SendHeader sends the given header metadata. The given metadata is\n// combined with any metadata set by previous calls to SetHeader and\n// then written to the transport stream.\nfunc (s *Stream) SendHeader(md metadata.MD) error {\n\treturn s.st.WriteHeader(s, md)\n}\n\n// SetTrailer sets the trailer metadata which will be sent with the RPC status\n// by the server. This can be called multiple times. Server side only.\n// This should not be called parallel to other data writes.\nfunc (s *Stream) SetTrailer(md metadata.MD) error {\n\tif md.Len() == 0 {\n\t\treturn nil\n\t}\n\tif s.getState() == streamDone {\n\t\treturn ErrIllegalHeaderWrite\n\t}\n\ts.hdrMu.Lock()\n\ts.trailer = metadata.Join(s.trailer, md)\n\ts.hdrMu.Unlock()\n\treturn nil\n}\n\nfunc (s *Stream) write(m recvMsg) {\n\ts.buf.put(m)\n}\n\n// Read reads all p bytes from the wire for this stream.\nfunc (s *Stream) Read(p []byte) (n int, err error) {\n\t// Don't request a read if there was an error earlier\n\tif er := s.trReader.(*transportReader).er; er != nil {\n\t\treturn 0, er\n\t}\n\ts.requestRead(len(p))\n\treturn io.ReadFull(s.trReader, p)\n}\n\n// tranportReader reads all the data available for this Stream from the transport and\n// passes them into the decoder, which converts them into a gRPC message stream.\n// The error is io.EOF when the stream is done or another non-nil error if\n// the stream broke.\ntype transportReader struct {\n\treader io.Reader\n\t// The handler to control the window update procedure for both this\n\t// particular stream and the associated transport.\n\twindowHandler func(int)\n\ter            error\n}\n\nfunc (t *transportReader) Read(p []byte) (n int, err error) {\n\tn, err = t.reader.Read(p)\n\tif err != nil {\n\t\tt.er = err\n\t\treturn\n\t}\n\tt.windowHandler(n)\n\treturn\n}\n\n// BytesReceived indicates whether any bytes have been received on this stream.\nfunc (s *Stream) BytesReceived() bool {\n\treturn atomic.LoadUint32(&s.bytesReceived) == 1\n}\n\n// Unprocessed indicates whether the server did not process this stream --\n// i.e. it sent a refused stream or GOAWAY including this stream ID.\nfunc (s *Stream) Unprocessed() bool {\n\treturn atomic.LoadUint32(&s.unprocessed) == 1\n}\n\n// GoString is implemented by Stream so context.String() won't\n// race when printing %#v.\nfunc (s *Stream) GoString() string {\n\treturn fmt.Sprintf(\"<stream: %p, %v>\", s, s.method)\n}\n\n// state of transport\ntype transportState int\n\nconst (\n\treachable transportState = iota\n\tclosing\n\tdraining\n)\n\n// ServerConfig consists of all the configurations to establish a server transport.\ntype ServerConfig struct {\n\tMaxStreams            uint32\n\tConnectionTimeout     time.Duration\n\tCredentials           credentials.TransportCredentials\n\tInTapHandle           tap.ServerInHandle\n\tStatsHandlers         []stats.Handler\n\tKeepaliveParams       keepalive.ServerParameters\n\tKeepalivePolicy       keepalive.EnforcementPolicy\n\tInitialWindowSize     int32\n\tInitialConnWindowSize int32\n\tWriteBufferSize       int\n\tReadBufferSize        int\n\tSharedWriteBuffer     bool\n\tChannelzParentID      *channelz.Identifier\n\tMaxHeaderListSize     *uint32\n\tHeaderTableSize       *uint32\n}\n\n// ConnectOptions covers all relevant options for communicating with the server.\ntype ConnectOptions struct {\n\t// UserAgent is the application user agent.\n\tUserAgent string\n\t// Dialer specifies how to dial a network address.\n\tDialer func(context.Context, string) (net.Conn, error)\n\t// FailOnNonTempDialError specifies if gRPC fails on non-temporary dial errors.\n\tFailOnNonTempDialError bool\n\t// PerRPCCredentials stores the PerRPCCredentials required to issue RPCs.\n\tPerRPCCredentials []credentials.PerRPCCredentials\n\t// TransportCredentials stores the Authenticator required to setup a client\n\t// connection. Only one of TransportCredentials and CredsBundle is non-nil.\n\tTransportCredentials credentials.TransportCredentials\n\t// CredsBundle is the credentials bundle to be used. Only one of\n\t// TransportCredentials and CredsBundle is non-nil.\n\tCredsBundle credentials.Bundle\n\t// KeepaliveParams stores the keepalive parameters.\n\tKeepaliveParams keepalive.ClientParameters\n\t// StatsHandlers stores the handler for stats.\n\tStatsHandlers []stats.Handler\n\t// InitialWindowSize sets the initial window size for a stream.\n\tInitialWindowSize int32\n\t// InitialConnWindowSize sets the initial window size for a connection.\n\tInitialConnWindowSize int32\n\t// WriteBufferSize sets the size of write buffer which in turn determines how much data can be batched before it's written on the wire.\n\tWriteBufferSize int\n\t// ReadBufferSize sets the size of read buffer, which in turn determines how much data can be read at most for one read syscall.\n\tReadBufferSize int\n\t// SharedWriteBuffer indicates whether connections should reuse write buffer\n\tSharedWriteBuffer bool\n\t// ChannelzParentID sets the addrConn id which initiate the creation of this client transport.\n\tChannelzParentID *channelz.Identifier\n\t// MaxHeaderListSize sets the max (uncompressed) size of header list that is prepared to be received.\n\tMaxHeaderListSize *uint32\n\t// UseProxy specifies if a proxy should be used.\n\tUseProxy bool\n}\n\n// NewClientTransport establishes the transport with the required ConnectOptions\n// and returns it to the caller.\nfunc NewClientTransport(connectCtx, ctx context.Context, addr resolver.Address, opts ConnectOptions, onClose func(GoAwayReason)) (ClientTransport, error) {\n\treturn newHTTP2Client(connectCtx, ctx, addr, opts, onClose)\n}\n\n// Options provides additional hints and information for message\n// transmission.\ntype Options struct {\n\t// Last indicates whether this write is the last piece for\n\t// this stream.\n\tLast bool\n}\n\n// CallHdr carries the information of a particular RPC.\ntype CallHdr struct {\n\t// Host specifies the peer's host.\n\tHost string\n\n\t// Method specifies the operation to perform.\n\tMethod string\n\n\t// SendCompress specifies the compression algorithm applied on\n\t// outbound message.\n\tSendCompress string\n\n\t// Creds specifies credentials.PerRPCCredentials for a call.\n\tCreds credentials.PerRPCCredentials\n\n\t// ContentSubtype specifies the content-subtype for a request. For example, a\n\t// content-subtype of \"proto\" will result in a content-type of\n\t// \"application/grpc+proto\". The value of ContentSubtype must be all\n\t// lowercase, otherwise the behavior is undefined. See\n\t// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests\n\t// for more details.\n\tContentSubtype string\n\n\tPreviousAttempts int // value of grpc-previous-rpc-attempts header to set\n\n\tDoneFunc func() // called when the stream is finished\n}\n\n// ClientTransport is the common interface for all gRPC client-side transport\n// implementations.\ntype ClientTransport interface {\n\t// Close tears down this transport. Once it returns, the transport\n\t// should not be accessed any more. The caller must make sure this\n\t// is called only once.\n\tClose(err error)\n\n\t// GracefulClose starts to tear down the transport: the transport will stop\n\t// accepting new RPCs and NewStream will return error. Once all streams are\n\t// finished, the transport will close.\n\t//\n\t// It does not block.\n\tGracefulClose()\n\n\t// Write sends the data for the given stream. A nil stream indicates\n\t// the write is to be performed on the transport as a whole.\n\tWrite(s *Stream, hdr []byte, data []byte, opts *Options) error\n\n\t// NewStream creates a Stream for an RPC.\n\tNewStream(ctx context.Context, callHdr *CallHdr) (*Stream, error)\n\n\t// CloseStream clears the footprint of a stream when the stream is\n\t// not needed any more. The err indicates the error incurred when\n\t// CloseStream is called. Must be called when a stream is finished\n\t// unless the associated transport is closing.\n\tCloseStream(stream *Stream, err error)\n\n\t// Error returns a channel that is closed when some I/O error\n\t// happens. Typically the caller should have a goroutine to monitor\n\t// this in order to take action (e.g., close the current transport\n\t// and create a new one) in error case. It should not return nil\n\t// once the transport is initiated.\n\tError() <-chan struct{}\n\n\t// GoAway returns a channel that is closed when ClientTransport\n\t// receives the draining signal from the server (e.g., GOAWAY frame in\n\t// HTTP/2).\n\tGoAway() <-chan struct{}\n\n\t// GetGoAwayReason returns the reason why GoAway frame was received, along\n\t// with a human readable string with debug info.\n\tGetGoAwayReason() (GoAwayReason, string)\n\n\t// RemoteAddr returns the remote network address.\n\tRemoteAddr() net.Addr\n\n\t// IncrMsgSent increments the number of message sent through this transport.\n\tIncrMsgSent()\n\n\t// IncrMsgRecv increments the number of message received through this transport.\n\tIncrMsgRecv()\n}\n\n// ServerTransport is the common interface for all gRPC server-side transport\n// implementations.\n//\n// Methods may be called concurrently from multiple goroutines, but\n// Write methods for a given Stream will be called serially.\ntype ServerTransport interface {\n\t// HandleStreams receives incoming streams using the given handler.\n\tHandleStreams(func(*Stream))\n\n\t// WriteHeader sends the header metadata for the given stream.\n\t// WriteHeader may not be called on all streams.\n\tWriteHeader(s *Stream, md metadata.MD) error\n\n\t// Write sends the data for the given stream.\n\t// Write may not be called on all streams.\n\tWrite(s *Stream, hdr []byte, data []byte, opts *Options) error\n\n\t// WriteStatus sends the status of a stream to the client.  WriteStatus is\n\t// the final call made on a stream and always occurs.\n\tWriteStatus(s *Stream, st *status.Status) error\n\n\t// Close tears down the transport. Once it is called, the transport\n\t// should not be accessed any more. All the pending streams and their\n\t// handlers will be terminated asynchronously.\n\tClose(err error)\n\n\t// RemoteAddr returns the remote network address.\n\tRemoteAddr() net.Addr\n\n\t// Drain notifies the client this ServerTransport stops accepting new RPCs.\n\tDrain(debugData string)\n\n\t// IncrMsgSent increments the number of message sent through this transport.\n\tIncrMsgSent()\n\n\t// IncrMsgRecv increments the number of message received through this transport.\n\tIncrMsgRecv()\n}\n\n// connectionErrorf creates an ConnectionError with the specified error description.\nfunc connectionErrorf(temp bool, e error, format string, a ...any) ConnectionError {\n\treturn ConnectionError{\n\t\tDesc: fmt.Sprintf(format, a...),\n\t\ttemp: temp,\n\t\terr:  e,\n\t}\n}\n\n// ConnectionError is an error that results in the termination of the\n// entire connection and the retry of all the active streams.\ntype ConnectionError struct {\n\tDesc string\n\ttemp bool\n\terr  error\n}\n\nfunc (e ConnectionError) Error() string {\n\treturn fmt.Sprintf(\"connection error: desc = %q\", e.Desc)\n}\n\n// Temporary indicates if this connection error is temporary or fatal.\nfunc (e ConnectionError) Temporary() bool {\n\treturn e.temp\n}\n\n// Origin returns the original error of this connection error.\nfunc (e ConnectionError) Origin() error {\n\t// Never return nil error here.\n\t// If the original error is nil, return itself.\n\tif e.err == nil {\n\t\treturn e\n\t}\n\treturn e.err\n}\n\n// Unwrap returns the original error of this connection error or nil when the\n// origin is nil.\nfunc (e ConnectionError) Unwrap() error {\n\treturn e.err\n}\n\nvar (\n\t// ErrConnClosing indicates that the transport is closing.\n\tErrConnClosing = connectionErrorf(true, nil, \"transport is closing\")\n\t// errStreamDrain indicates that the stream is rejected because the\n\t// connection is draining. This could be caused by goaway or balancer\n\t// removing the address.\n\terrStreamDrain = status.Error(codes.Unavailable, \"the connection is draining\")\n\t// errStreamDone is returned from write at the client side to indiacte application\n\t// layer of an error.\n\terrStreamDone = errors.New(\"the stream is done\")\n\t// StatusGoAway indicates that the server sent a GOAWAY that included this\n\t// stream's ID in unprocessed RPCs.\n\tstatusGoAway = status.New(codes.Unavailable, \"the stream is rejected because server is draining the connection\")\n)\n\n// GoAwayReason contains the reason for the GoAway frame received.\ntype GoAwayReason uint8\n\nconst (\n\t// GoAwayInvalid indicates that no GoAway frame is received.\n\tGoAwayInvalid GoAwayReason = 0\n\t// GoAwayNoReason is the default value when GoAway frame is received.\n\tGoAwayNoReason GoAwayReason = 1\n\t// GoAwayTooManyPings indicates that a GoAway frame with\n\t// ErrCodeEnhanceYourCalm was received and that the debug data said\n\t// \"too_many_pings\".\n\tGoAwayTooManyPings GoAwayReason = 2\n)\n\n// channelzData is used to store channelz related data for http2Client and http2Server.\n// These fields cannot be embedded in the original structs (e.g. http2Client), since to do atomic\n// operation on int64 variable on 32-bit machine, user is responsible to enforce memory alignment.\n// Here, by grouping those int64 fields inside a struct, we are enforcing the alignment.\ntype channelzData struct {\n\tkpCount int64\n\t// The number of streams that have started, including already finished ones.\n\tstreamsStarted int64\n\t// Client side: The number of streams that have ended successfully by receiving\n\t// EoS bit set frame from server.\n\t// Server side: The number of streams that have ended successfully by sending\n\t// frame with EoS bit set.\n\tstreamsSucceeded int64\n\tstreamsFailed    int64\n\t// lastStreamCreatedTime stores the timestamp that the last stream gets created. It is of int64 type\n\t// instead of time.Time since it's more costly to atomically update time.Time variable than int64\n\t// variable. The same goes for lastMsgSentTime and lastMsgRecvTime.\n\tlastStreamCreatedTime int64\n\tmsgSent               int64\n\tmsgRecv               int64\n\tlastMsgSentTime       int64\n\tlastMsgRecvTime       int64\n}\n\n// ContextErr converts the error from context package into a status error.\nfunc ContextErr(err error) error {\n\tswitch err {\n\tcase context.DeadlineExceeded:\n\t\treturn status.Error(codes.DeadlineExceeded, err.Error())\n\tcase context.Canceled:\n\t\treturn status.Error(codes.Canceled, err.Error())\n\t}\n\treturn status.Errorf(codes.Internal, \"Unexpected error from context packet: %v\", err)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go",
    "content": "/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage internal\n\nimport (\n\t\"google.golang.org/grpc/attributes\"\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// handshakeClusterNameKey is the type used as the key to store cluster name in\n// the Attributes field of resolver.Address.\ntype handshakeClusterNameKey struct{}\n\n// SetXDSHandshakeClusterName returns a copy of addr in which the Attributes field\n// is updated with the cluster name.\nfunc SetXDSHandshakeClusterName(addr resolver.Address, clusterName string) resolver.Address {\n\taddr.Attributes = addr.Attributes.WithValue(handshakeClusterNameKey{}, clusterName)\n\treturn addr\n}\n\n// GetXDSHandshakeClusterName returns cluster name stored in attr.\nfunc GetXDSHandshakeClusterName(attr *attributes.Attributes) (string, bool) {\n\tv := attr.Value(handshakeClusterNameKey{})\n\tname, ok := v.(string)\n\treturn name, ok\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/keepalive/keepalive.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package keepalive defines configurable parameters for point-to-point\n// healthcheck.\npackage keepalive\n\nimport (\n\t\"time\"\n)\n\n// ClientParameters is used to set keepalive parameters on the client-side.\n// These configure how the client will actively probe to notice when a\n// connection is broken and send pings so intermediaries will be aware of the\n// liveness of the connection. Make sure these parameters are set in\n// coordination with the keepalive policy on the server, as incompatible\n// settings can result in closing of connection.\ntype ClientParameters struct {\n\t// After a duration of this time if the client doesn't see any activity it\n\t// pings the server to see if the transport is still alive.\n\t// If set below 10s, a minimum value of 10s will be used instead.\n\tTime time.Duration // The current default value is infinity.\n\t// After having pinged for keepalive check, the client waits for a duration\n\t// of Timeout and if no activity is seen even after that the connection is\n\t// closed.\n\tTimeout time.Duration // The current default value is 20 seconds.\n\t// If true, client sends keepalive pings even with no active RPCs. If false,\n\t// when there are no active RPCs, Time and Timeout will be ignored and no\n\t// keepalive pings will be sent.\n\tPermitWithoutStream bool // false by default.\n}\n\n// ServerParameters is used to set keepalive and max-age parameters on the\n// server-side.\ntype ServerParameters struct {\n\t// MaxConnectionIdle is a duration for the amount of time after which an\n\t// idle connection would be closed by sending a GoAway. Idleness duration is\n\t// defined since the most recent time the number of outstanding RPCs became\n\t// zero or the connection establishment.\n\tMaxConnectionIdle time.Duration // The current default value is infinity.\n\t// MaxConnectionAge is a duration for the maximum amount of time a\n\t// connection may exist before it will be closed by sending a GoAway. A\n\t// random jitter of +/-10% will be added to MaxConnectionAge to spread out\n\t// connection storms.\n\tMaxConnectionAge time.Duration // The current default value is infinity.\n\t// MaxConnectionAgeGrace is an additive period after MaxConnectionAge after\n\t// which the connection will be forcibly closed.\n\tMaxConnectionAgeGrace time.Duration // The current default value is infinity.\n\t// After a duration of this time if the server doesn't see any activity it\n\t// pings the client to see if the transport is still alive.\n\t// If set below 1s, a minimum value of 1s will be used instead.\n\tTime time.Duration // The current default value is 2 hours.\n\t// After having pinged for keepalive check, the server waits for a duration\n\t// of Timeout and if no activity is seen even after that the connection is\n\t// closed.\n\tTimeout time.Duration // The current default value is 20 seconds.\n}\n\n// EnforcementPolicy is used to set keepalive enforcement policy on the\n// server-side. Server will close connection with a client that violates this\n// policy.\ntype EnforcementPolicy struct {\n\t// MinTime is the minimum amount of time a client should wait before sending\n\t// a keepalive ping.\n\tMinTime time.Duration // The current default value is 5 minutes.\n\t// If true, server allows keepalive pings even when there are no active\n\t// streams(RPCs). If false, and client sends ping when there are no active\n\t// streams, server will send GOAWAY and close the connection.\n\tPermitWithoutStream bool // false by default.\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/metadata/metadata.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package metadata define the structure of the metadata supported by gRPC library.\n// Please refer to https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md\n// for more information about custom-metadata.\npackage metadata // import \"google.golang.org/grpc/metadata\"\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n)\n\n// DecodeKeyValue returns k, v, nil.\n//\n// Deprecated: use k and v directly instead.\nfunc DecodeKeyValue(k, v string) (string, string, error) {\n\treturn k, v, nil\n}\n\n// MD is a mapping from metadata keys to values. Users should use the following\n// two convenience functions New and Pairs to generate MD.\ntype MD map[string][]string\n\n// New creates an MD from a given key-value map.\n//\n// Only the following ASCII characters are allowed in keys:\n//   - digits: 0-9\n//   - uppercase letters: A-Z (normalized to lower)\n//   - lowercase letters: a-z\n//   - special characters: -_.\n//\n// Uppercase letters are automatically converted to lowercase.\n//\n// Keys beginning with \"grpc-\" are reserved for grpc-internal use only and may\n// result in errors if set in metadata.\nfunc New(m map[string]string) MD {\n\tmd := make(MD, len(m))\n\tfor k, val := range m {\n\t\tkey := strings.ToLower(k)\n\t\tmd[key] = append(md[key], val)\n\t}\n\treturn md\n}\n\n// Pairs returns an MD formed by the mapping of key, value ...\n// Pairs panics if len(kv) is odd.\n//\n// Only the following ASCII characters are allowed in keys:\n//   - digits: 0-9\n//   - uppercase letters: A-Z (normalized to lower)\n//   - lowercase letters: a-z\n//   - special characters: -_.\n//\n// Uppercase letters are automatically converted to lowercase.\n//\n// Keys beginning with \"grpc-\" are reserved for grpc-internal use only and may\n// result in errors if set in metadata.\nfunc Pairs(kv ...string) MD {\n\tif len(kv)%2 == 1 {\n\t\tpanic(fmt.Sprintf(\"metadata: Pairs got the odd number of input pairs for metadata: %d\", len(kv)))\n\t}\n\tmd := make(MD, len(kv)/2)\n\tfor i := 0; i < len(kv); i += 2 {\n\t\tkey := strings.ToLower(kv[i])\n\t\tmd[key] = append(md[key], kv[i+1])\n\t}\n\treturn md\n}\n\n// Len returns the number of items in md.\nfunc (md MD) Len() int {\n\treturn len(md)\n}\n\n// Copy returns a copy of md.\nfunc (md MD) Copy() MD {\n\tout := make(MD, len(md))\n\tfor k, v := range md {\n\t\tout[k] = copyOf(v)\n\t}\n\treturn out\n}\n\n// Get obtains the values for a given key.\n//\n// k is converted to lowercase before searching in md.\nfunc (md MD) Get(k string) []string {\n\tk = strings.ToLower(k)\n\treturn md[k]\n}\n\n// Set sets the value of a given key with a slice of values.\n//\n// k is converted to lowercase before storing in md.\nfunc (md MD) Set(k string, vals ...string) {\n\tif len(vals) == 0 {\n\t\treturn\n\t}\n\tk = strings.ToLower(k)\n\tmd[k] = vals\n}\n\n// Append adds the values to key k, not overwriting what was already stored at\n// that key.\n//\n// k is converted to lowercase before storing in md.\nfunc (md MD) Append(k string, vals ...string) {\n\tif len(vals) == 0 {\n\t\treturn\n\t}\n\tk = strings.ToLower(k)\n\tmd[k] = append(md[k], vals...)\n}\n\n// Delete removes the values for a given key k which is converted to lowercase\n// before removing it from md.\nfunc (md MD) Delete(k string) {\n\tk = strings.ToLower(k)\n\tdelete(md, k)\n}\n\n// Join joins any number of mds into a single MD.\n//\n// The order of values for each key is determined by the order in which the mds\n// containing those values are presented to Join.\nfunc Join(mds ...MD) MD {\n\tout := MD{}\n\tfor _, md := range mds {\n\t\tfor k, v := range md {\n\t\t\tout[k] = append(out[k], v...)\n\t\t}\n\t}\n\treturn out\n}\n\ntype mdIncomingKey struct{}\ntype mdOutgoingKey struct{}\n\n// NewIncomingContext creates a new context with incoming md attached.\nfunc NewIncomingContext(ctx context.Context, md MD) context.Context {\n\treturn context.WithValue(ctx, mdIncomingKey{}, md)\n}\n\n// NewOutgoingContext creates a new context with outgoing md attached. If used\n// in conjunction with AppendToOutgoingContext, NewOutgoingContext will\n// overwrite any previously-appended metadata.\nfunc NewOutgoingContext(ctx context.Context, md MD) context.Context {\n\treturn context.WithValue(ctx, mdOutgoingKey{}, rawMD{md: md})\n}\n\n// AppendToOutgoingContext returns a new context with the provided kv merged\n// with any existing metadata in the context. Please refer to the documentation\n// of Pairs for a description of kv.\nfunc AppendToOutgoingContext(ctx context.Context, kv ...string) context.Context {\n\tif len(kv)%2 == 1 {\n\t\tpanic(fmt.Sprintf(\"metadata: AppendToOutgoingContext got an odd number of input pairs for metadata: %d\", len(kv)))\n\t}\n\tmd, _ := ctx.Value(mdOutgoingKey{}).(rawMD)\n\tadded := make([][]string, len(md.added)+1)\n\tcopy(added, md.added)\n\tkvCopy := make([]string, 0, len(kv))\n\tfor i := 0; i < len(kv); i += 2 {\n\t\tkvCopy = append(kvCopy, strings.ToLower(kv[i]), kv[i+1])\n\t}\n\tadded[len(added)-1] = kvCopy\n\treturn context.WithValue(ctx, mdOutgoingKey{}, rawMD{md: md.md, added: added})\n}\n\n// FromIncomingContext returns the incoming metadata in ctx if it exists.\n//\n// All keys in the returned MD are lowercase.\nfunc FromIncomingContext(ctx context.Context) (MD, bool) {\n\tmd, ok := ctx.Value(mdIncomingKey{}).(MD)\n\tif !ok {\n\t\treturn nil, false\n\t}\n\tout := make(MD, len(md))\n\tfor k, v := range md {\n\t\t// We need to manually convert all keys to lower case, because MD is a\n\t\t// map, and there's no guarantee that the MD attached to the context is\n\t\t// created using our helper functions.\n\t\tkey := strings.ToLower(k)\n\t\tout[key] = copyOf(v)\n\t}\n\treturn out, true\n}\n\n// ValueFromIncomingContext returns the metadata value corresponding to the metadata\n// key from the incoming metadata if it exists. Key must be lower-case.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ValueFromIncomingContext(ctx context.Context, key string) []string {\n\tmd, ok := ctx.Value(mdIncomingKey{}).(MD)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tif v, ok := md[key]; ok {\n\t\treturn copyOf(v)\n\t}\n\tfor k, v := range md {\n\t\t// We need to manually convert all keys to lower case, because MD is a\n\t\t// map, and there's no guarantee that the MD attached to the context is\n\t\t// created using our helper functions.\n\t\tif strings.ToLower(k) == key {\n\t\t\treturn copyOf(v)\n\t\t}\n\t}\n\treturn nil\n}\n\n// the returned slice must not be modified in place\nfunc copyOf(v []string) []string {\n\tvals := make([]string, len(v))\n\tcopy(vals, v)\n\treturn vals\n}\n\n// FromOutgoingContextRaw returns the un-merged, intermediary contents of rawMD.\n//\n// Remember to perform strings.ToLower on the keys, for both the returned MD (MD\n// is a map, there's no guarantee it's created using our helper functions) and\n// the extra kv pairs (AppendToOutgoingContext doesn't turn them into\n// lowercase).\n//\n// This is intended for gRPC-internal use ONLY. Users should use\n// FromOutgoingContext instead.\nfunc FromOutgoingContextRaw(ctx context.Context) (MD, [][]string, bool) {\n\traw, ok := ctx.Value(mdOutgoingKey{}).(rawMD)\n\tif !ok {\n\t\treturn nil, nil, false\n\t}\n\n\treturn raw.md, raw.added, true\n}\n\n// FromOutgoingContext returns the outgoing metadata in ctx if it exists.\n//\n// All keys in the returned MD are lowercase.\nfunc FromOutgoingContext(ctx context.Context) (MD, bool) {\n\traw, ok := ctx.Value(mdOutgoingKey{}).(rawMD)\n\tif !ok {\n\t\treturn nil, false\n\t}\n\n\tmdSize := len(raw.md)\n\tfor i := range raw.added {\n\t\tmdSize += len(raw.added[i]) / 2\n\t}\n\n\tout := make(MD, mdSize)\n\tfor k, v := range raw.md {\n\t\t// We need to manually convert all keys to lower case, because MD is a\n\t\t// map, and there's no guarantee that the MD attached to the context is\n\t\t// created using our helper functions.\n\t\tkey := strings.ToLower(k)\n\t\tout[key] = copyOf(v)\n\t}\n\tfor _, added := range raw.added {\n\t\tif len(added)%2 == 1 {\n\t\t\tpanic(fmt.Sprintf(\"metadata: FromOutgoingContext got an odd number of input pairs for metadata: %d\", len(added)))\n\t\t}\n\n\t\tfor i := 0; i < len(added); i += 2 {\n\t\t\tkey := strings.ToLower(added[i])\n\t\t\tout[key] = append(out[key], added[i+1])\n\t\t}\n\t}\n\treturn out, ok\n}\n\ntype rawMD struct {\n\tmd    MD\n\tadded [][]string\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/peer/peer.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package peer defines various peer information associated with RPCs and\n// corresponding utils.\npackage peer\n\nimport (\n\t\"context\"\n\t\"net\"\n\n\t\"google.golang.org/grpc/credentials\"\n)\n\n// Peer contains the information of the peer for an RPC, such as the address\n// and authentication information.\ntype Peer struct {\n\t// Addr is the peer address.\n\tAddr net.Addr\n\t// AuthInfo is the authentication information of the transport.\n\t// It is nil if there is no transport security being used.\n\tAuthInfo credentials.AuthInfo\n}\n\ntype peerKey struct{}\n\n// NewContext creates a new context with peer information attached.\nfunc NewContext(ctx context.Context, p *Peer) context.Context {\n\treturn context.WithValue(ctx, peerKey{}, p)\n}\n\n// FromContext returns the peer information in ctx if it exists.\nfunc FromContext(ctx context.Context) (p *Peer, ok bool) {\n\tp, ok = ctx.Value(peerKey{}).(*Peer)\n\treturn\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/picker_wrapper.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"sync\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\tistatus \"google.golang.org/grpc/internal/status\"\n\t\"google.golang.org/grpc/internal/transport\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// pickerWrapper is a wrapper of balancer.Picker. It blocks on certain pick\n// actions and unblock when there's a picker update.\ntype pickerWrapper struct {\n\tmu            sync.Mutex\n\tdone          bool\n\tidle          bool\n\tblockingCh    chan struct{}\n\tpicker        balancer.Picker\n\tstatsHandlers []stats.Handler // to record blocking picker calls\n}\n\nfunc newPickerWrapper(statsHandlers []stats.Handler) *pickerWrapper {\n\treturn &pickerWrapper{\n\t\tblockingCh:    make(chan struct{}),\n\t\tstatsHandlers: statsHandlers,\n\t}\n}\n\n// updatePicker is called by UpdateBalancerState. It unblocks all blocked pick.\nfunc (pw *pickerWrapper) updatePicker(p balancer.Picker) {\n\tpw.mu.Lock()\n\tif pw.done || pw.idle {\n\t\t// There is a small window where a picker update from the LB policy can\n\t\t// race with the channel going to idle mode. If the picker is idle here,\n\t\t// it is because the channel asked it to do so, and therefore it is sage\n\t\t// to ignore the update from the LB policy.\n\t\tpw.mu.Unlock()\n\t\treturn\n\t}\n\tpw.picker = p\n\t// pw.blockingCh should never be nil.\n\tclose(pw.blockingCh)\n\tpw.blockingCh = make(chan struct{})\n\tpw.mu.Unlock()\n}\n\n// doneChannelzWrapper performs the following:\n//   - increments the calls started channelz counter\n//   - wraps the done function in the passed in result to increment the calls\n//     failed or calls succeeded channelz counter before invoking the actual\n//     done function.\nfunc doneChannelzWrapper(acbw *acBalancerWrapper, result *balancer.PickResult) {\n\tac := acbw.ac\n\tac.incrCallsStarted()\n\tdone := result.Done\n\tresult.Done = func(b balancer.DoneInfo) {\n\t\tif b.Err != nil && b.Err != io.EOF {\n\t\t\tac.incrCallsFailed()\n\t\t} else {\n\t\t\tac.incrCallsSucceeded()\n\t\t}\n\t\tif done != nil {\n\t\t\tdone(b)\n\t\t}\n\t}\n}\n\n// pick returns the transport that will be used for the RPC.\n// It may block in the following cases:\n// - there's no picker\n// - the current picker returns ErrNoSubConnAvailable\n// - the current picker returns other errors and failfast is false.\n// - the subConn returned by the current picker is not READY\n// When one of these situations happens, pick blocks until the picker gets updated.\nfunc (pw *pickerWrapper) pick(ctx context.Context, failfast bool, info balancer.PickInfo) (transport.ClientTransport, balancer.PickResult, error) {\n\tvar ch chan struct{}\n\n\tvar lastPickErr error\n\n\tfor {\n\t\tpw.mu.Lock()\n\t\tif pw.done {\n\t\t\tpw.mu.Unlock()\n\t\t\treturn nil, balancer.PickResult{}, ErrClientConnClosing\n\t\t}\n\n\t\tif pw.picker == nil {\n\t\t\tch = pw.blockingCh\n\t\t}\n\t\tif ch == pw.blockingCh {\n\t\t\t// This could happen when either:\n\t\t\t// - pw.picker is nil (the previous if condition), or\n\t\t\t// - has called pick on the current picker.\n\t\t\tpw.mu.Unlock()\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\tvar errStr string\n\t\t\t\tif lastPickErr != nil {\n\t\t\t\t\terrStr = \"latest balancer error: \" + lastPickErr.Error()\n\t\t\t\t} else {\n\t\t\t\t\terrStr = ctx.Err().Error()\n\t\t\t\t}\n\t\t\t\tswitch ctx.Err() {\n\t\t\t\tcase context.DeadlineExceeded:\n\t\t\t\t\treturn nil, balancer.PickResult{}, status.Error(codes.DeadlineExceeded, errStr)\n\t\t\t\tcase context.Canceled:\n\t\t\t\t\treturn nil, balancer.PickResult{}, status.Error(codes.Canceled, errStr)\n\t\t\t\t}\n\t\t\tcase <-ch:\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// If the channel is set, it means that the pick call had to wait for a\n\t\t// new picker at some point. Either it's the first iteration and this\n\t\t// function received the first picker, or a picker errored with\n\t\t// ErrNoSubConnAvailable or errored with failfast set to false, which\n\t\t// will trigger a continue to the next iteration. In the first case this\n\t\t// conditional will hit if this call had to block (the channel is set).\n\t\t// In the second case, the only way it will get to this conditional is\n\t\t// if there is a new picker.\n\t\tif ch != nil {\n\t\t\tfor _, sh := range pw.statsHandlers {\n\t\t\t\tsh.HandleRPC(ctx, &stats.PickerUpdated{})\n\t\t\t}\n\t\t}\n\n\t\tch = pw.blockingCh\n\t\tp := pw.picker\n\t\tpw.mu.Unlock()\n\n\t\tpickResult, err := p.Pick(info)\n\t\tif err != nil {\n\t\t\tif err == balancer.ErrNoSubConnAvailable {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif st, ok := status.FromError(err); ok {\n\t\t\t\t// Status error: end the RPC unconditionally with this status.\n\t\t\t\t// First restrict the code to the list allowed by gRFC A54.\n\t\t\t\tif istatus.IsRestrictedControlPlaneCode(st) {\n\t\t\t\t\terr = status.Errorf(codes.Internal, \"received picker error with illegal status: %v\", err)\n\t\t\t\t}\n\t\t\t\treturn nil, balancer.PickResult{}, dropError{error: err}\n\t\t\t}\n\t\t\t// For all other errors, wait for ready RPCs should block and other\n\t\t\t// RPCs should fail with unavailable.\n\t\t\tif !failfast {\n\t\t\t\tlastPickErr = err\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, balancer.PickResult{}, status.Error(codes.Unavailable, err.Error())\n\t\t}\n\n\t\tacbw, ok := pickResult.SubConn.(*acBalancerWrapper)\n\t\tif !ok {\n\t\t\tlogger.Errorf(\"subconn returned from pick is type %T, not *acBalancerWrapper\", pickResult.SubConn)\n\t\t\tcontinue\n\t\t}\n\t\tif t := acbw.ac.getReadyTransport(); t != nil {\n\t\t\tif channelz.IsOn() {\n\t\t\t\tdoneChannelzWrapper(acbw, &pickResult)\n\t\t\t\treturn t, pickResult, nil\n\t\t\t}\n\t\t\treturn t, pickResult, nil\n\t\t}\n\t\tif pickResult.Done != nil {\n\t\t\t// Calling done with nil error, no bytes sent and no bytes received.\n\t\t\t// DoneInfo with default value works.\n\t\t\tpickResult.Done(balancer.DoneInfo{})\n\t\t}\n\t\tlogger.Infof(\"blockingPicker: the picked transport is not ready, loop back to repick\")\n\t\t// If ok == false, ac.state is not READY.\n\t\t// A valid picker always returns READY subConn. This means the state of ac\n\t\t// just changed, and picker will be updated shortly.\n\t\t// continue back to the beginning of the for loop to repick.\n\t}\n}\n\nfunc (pw *pickerWrapper) close() {\n\tpw.mu.Lock()\n\tdefer pw.mu.Unlock()\n\tif pw.done {\n\t\treturn\n\t}\n\tpw.done = true\n\tclose(pw.blockingCh)\n}\n\nfunc (pw *pickerWrapper) enterIdleMode() {\n\tpw.mu.Lock()\n\tdefer pw.mu.Unlock()\n\tif pw.done {\n\t\treturn\n\t}\n\tpw.idle = true\n}\n\nfunc (pw *pickerWrapper) exitIdleMode() {\n\tpw.mu.Lock()\n\tdefer pw.mu.Unlock()\n\tif pw.done {\n\t\treturn\n\t}\n\tpw.blockingCh = make(chan struct{})\n\tpw.idle = false\n}\n\n// dropError is a wrapper error that indicates the LB policy wishes to drop the\n// RPC and not retry it.\ntype dropError struct {\n\terror\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/pickfirst.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/connectivity\"\n\t\"google.golang.org/grpc/internal/envconfig\"\n\tinternalgrpclog \"google.golang.org/grpc/internal/grpclog\"\n\t\"google.golang.org/grpc/internal/grpcrand\"\n\t\"google.golang.org/grpc/internal/pretty\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nconst (\n\t// PickFirstBalancerName is the name of the pick_first balancer.\n\tPickFirstBalancerName = \"pick_first\"\n\tlogPrefix             = \"[pick-first-lb %p] \"\n)\n\nfunc newPickfirstBuilder() balancer.Builder {\n\treturn &pickfirstBuilder{}\n}\n\ntype pickfirstBuilder struct{}\n\nfunc (*pickfirstBuilder) Build(cc balancer.ClientConn, opt balancer.BuildOptions) balancer.Balancer {\n\tb := &pickfirstBalancer{cc: cc}\n\tb.logger = internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(logPrefix, b))\n\treturn b\n}\n\nfunc (*pickfirstBuilder) Name() string {\n\treturn PickFirstBalancerName\n}\n\ntype pfConfig struct {\n\tserviceconfig.LoadBalancingConfig `json:\"-\"`\n\n\t// If set to true, instructs the LB policy to shuffle the order of the list\n\t// of addresses received from the name resolver before attempting to\n\t// connect to them.\n\tShuffleAddressList bool `json:\"shuffleAddressList\"`\n}\n\nfunc (*pickfirstBuilder) ParseConfig(js json.RawMessage) (serviceconfig.LoadBalancingConfig, error) {\n\tif !envconfig.PickFirstLBConfig {\n\t\t// Prior to supporting loadbalancing configuration, the pick_first LB\n\t\t// policy did not implement the balancer.ConfigParser interface. This\n\t\t// meant that if a non-empty configuration was passed to it, the service\n\t\t// config unmarshaling code would throw a warning log, but would\n\t\t// continue using the pick_first LB policy. The code below ensures the\n\t\t// same behavior is retained if the env var is not set.\n\t\tif string(js) != \"{}\" {\n\t\t\tlogger.Warningf(\"Ignoring non-empty balancer configuration %q for the pick_first LB policy\", string(js))\n\t\t}\n\t\treturn nil, nil\n\t}\n\n\tvar cfg pfConfig\n\tif err := json.Unmarshal(js, &cfg); err != nil {\n\t\treturn nil, fmt.Errorf(\"pickfirst: unable to unmarshal LB policy config: %s, error: %v\", string(js), err)\n\t}\n\treturn cfg, nil\n}\n\ntype pickfirstBalancer struct {\n\tlogger  *internalgrpclog.PrefixLogger\n\tstate   connectivity.State\n\tcc      balancer.ClientConn\n\tsubConn balancer.SubConn\n}\n\nfunc (b *pickfirstBalancer) ResolverError(err error) {\n\tif b.logger.V(2) {\n\t\tb.logger.Infof(\"Received error from the name resolver: %v\", err)\n\t}\n\tif b.subConn == nil {\n\t\tb.state = connectivity.TransientFailure\n\t}\n\n\tif b.state != connectivity.TransientFailure {\n\t\t// The picker will not change since the balancer does not currently\n\t\t// report an error.\n\t\treturn\n\t}\n\tb.cc.UpdateState(balancer.State{\n\t\tConnectivityState: connectivity.TransientFailure,\n\t\tPicker:            &picker{err: fmt.Errorf(\"name resolver error: %v\", err)},\n\t})\n}\n\nfunc (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState) error {\n\taddrs := state.ResolverState.Addresses\n\tif len(addrs) == 0 {\n\t\t// The resolver reported an empty address list. Treat it like an error by\n\t\t// calling b.ResolverError.\n\t\tif b.subConn != nil {\n\t\t\t// Shut down the old subConn. All addresses were removed, so it is\n\t\t\t// no longer valid.\n\t\t\tb.subConn.Shutdown()\n\t\t\tb.subConn = nil\n\t\t}\n\t\tb.ResolverError(errors.New(\"produced zero addresses\"))\n\t\treturn balancer.ErrBadResolverState\n\t}\n\n\t// We don't have to guard this block with the env var because ParseConfig\n\t// already does so.\n\tcfg, ok := state.BalancerConfig.(pfConfig)\n\tif state.BalancerConfig != nil && !ok {\n\t\treturn fmt.Errorf(\"pickfirst: received illegal BalancerConfig (type %T): %v\", state.BalancerConfig, state.BalancerConfig)\n\t}\n\tif cfg.ShuffleAddressList {\n\t\taddrs = append([]resolver.Address{}, addrs...)\n\t\tgrpcrand.Shuffle(len(addrs), func(i, j int) { addrs[i], addrs[j] = addrs[j], addrs[i] })\n\t}\n\n\tif b.logger.V(2) {\n\t\tb.logger.Infof(\"Received new config %s, resolver state %s\", pretty.ToJSON(cfg), pretty.ToJSON(state.ResolverState))\n\t}\n\n\tif b.subConn != nil {\n\t\tb.cc.UpdateAddresses(b.subConn, addrs)\n\t\treturn nil\n\t}\n\n\tvar subConn balancer.SubConn\n\tsubConn, err := b.cc.NewSubConn(addrs, balancer.NewSubConnOptions{\n\t\tStateListener: func(state balancer.SubConnState) {\n\t\t\tb.updateSubConnState(subConn, state)\n\t\t},\n\t})\n\tif err != nil {\n\t\tif b.logger.V(2) {\n\t\t\tb.logger.Infof(\"Failed to create new SubConn: %v\", err)\n\t\t}\n\t\tb.state = connectivity.TransientFailure\n\t\tb.cc.UpdateState(balancer.State{\n\t\t\tConnectivityState: connectivity.TransientFailure,\n\t\t\tPicker:            &picker{err: fmt.Errorf(\"error creating connection: %v\", err)},\n\t\t})\n\t\treturn balancer.ErrBadResolverState\n\t}\n\tb.subConn = subConn\n\tb.state = connectivity.Idle\n\tb.cc.UpdateState(balancer.State{\n\t\tConnectivityState: connectivity.Connecting,\n\t\tPicker:            &picker{err: balancer.ErrNoSubConnAvailable},\n\t})\n\tb.subConn.Connect()\n\treturn nil\n}\n\n// UpdateSubConnState is unused as a StateListener is always registered when\n// creating SubConns.\nfunc (b *pickfirstBalancer) UpdateSubConnState(subConn balancer.SubConn, state balancer.SubConnState) {\n\tb.logger.Errorf(\"UpdateSubConnState(%v, %+v) called unexpectedly\", subConn, state)\n}\n\nfunc (b *pickfirstBalancer) updateSubConnState(subConn balancer.SubConn, state balancer.SubConnState) {\n\tif b.logger.V(2) {\n\t\tb.logger.Infof(\"Received SubConn state update: %p, %+v\", subConn, state)\n\t}\n\tif b.subConn != subConn {\n\t\tif b.logger.V(2) {\n\t\t\tb.logger.Infof(\"Ignored state change because subConn is not recognized\")\n\t\t}\n\t\treturn\n\t}\n\tif state.ConnectivityState == connectivity.Shutdown {\n\t\tb.subConn = nil\n\t\treturn\n\t}\n\n\tswitch state.ConnectivityState {\n\tcase connectivity.Ready:\n\t\tb.cc.UpdateState(balancer.State{\n\t\t\tConnectivityState: state.ConnectivityState,\n\t\t\tPicker:            &picker{result: balancer.PickResult{SubConn: subConn}},\n\t\t})\n\tcase connectivity.Connecting:\n\t\tif b.state == connectivity.TransientFailure {\n\t\t\t// We stay in TransientFailure until we are Ready. See A62.\n\t\t\treturn\n\t\t}\n\t\tb.cc.UpdateState(balancer.State{\n\t\t\tConnectivityState: state.ConnectivityState,\n\t\t\tPicker:            &picker{err: balancer.ErrNoSubConnAvailable},\n\t\t})\n\tcase connectivity.Idle:\n\t\tif b.state == connectivity.TransientFailure {\n\t\t\t// We stay in TransientFailure until we are Ready. Also kick the\n\t\t\t// subConn out of Idle into Connecting. See A62.\n\t\t\tb.subConn.Connect()\n\t\t\treturn\n\t\t}\n\t\tb.cc.UpdateState(balancer.State{\n\t\t\tConnectivityState: state.ConnectivityState,\n\t\t\tPicker:            &idlePicker{subConn: subConn},\n\t\t})\n\tcase connectivity.TransientFailure:\n\t\tb.cc.UpdateState(balancer.State{\n\t\t\tConnectivityState: state.ConnectivityState,\n\t\t\tPicker:            &picker{err: state.ConnectionError},\n\t\t})\n\t}\n\tb.state = state.ConnectivityState\n}\n\nfunc (b *pickfirstBalancer) Close() {\n}\n\nfunc (b *pickfirstBalancer) ExitIdle() {\n\tif b.subConn != nil && b.state == connectivity.Idle {\n\t\tb.subConn.Connect()\n\t}\n}\n\ntype picker struct {\n\tresult balancer.PickResult\n\terr    error\n}\n\nfunc (p *picker) Pick(balancer.PickInfo) (balancer.PickResult, error) {\n\treturn p.result, p.err\n}\n\n// idlePicker is used when the SubConn is IDLE and kicks the SubConn into\n// CONNECTING when Pick is called.\ntype idlePicker struct {\n\tsubConn balancer.SubConn\n}\n\nfunc (i *idlePicker) Pick(balancer.PickInfo) (balancer.PickResult, error) {\n\ti.subConn.Connect()\n\treturn balancer.PickResult{}, balancer.ErrNoSubConnAvailable\n}\n\nfunc init() {\n\tbalancer.Register(newPickfirstBuilder())\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/preloader.go",
    "content": "/*\n *\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// PreparedMsg is responsible for creating a Marshalled and Compressed object.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype PreparedMsg struct {\n\t// Struct for preparing msg before sending them\n\tencodedData []byte\n\thdr         []byte\n\tpayload     []byte\n}\n\n// Encode marshalls and compresses the message using the codec and compressor for the stream.\nfunc (p *PreparedMsg) Encode(s Stream, msg any) error {\n\tctx := s.Context()\n\trpcInfo, ok := rpcInfoFromContext(ctx)\n\tif !ok {\n\t\treturn status.Errorf(codes.Internal, \"grpc: unable to get rpcInfo\")\n\t}\n\n\t// check if the context has the relevant information to prepareMsg\n\tif rpcInfo.preloaderInfo == nil {\n\t\treturn status.Errorf(codes.Internal, \"grpc: rpcInfo.preloaderInfo is nil\")\n\t}\n\tif rpcInfo.preloaderInfo.codec == nil {\n\t\treturn status.Errorf(codes.Internal, \"grpc: rpcInfo.preloaderInfo.codec is nil\")\n\t}\n\n\t// prepare the msg\n\tdata, err := encode(rpcInfo.preloaderInfo.codec, msg)\n\tif err != nil {\n\t\treturn err\n\t}\n\tp.encodedData = data\n\tcompData, err := compress(data, rpcInfo.preloaderInfo.cp, rpcInfo.preloaderInfo.comp)\n\tif err != nil {\n\t\treturn err\n\t}\n\tp.hdr, p.payload = msgHeader(data, compData)\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/regenerate.sh",
    "content": "#!/bin/bash\n# Copyright 2020 gRPC authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -eu -o pipefail\n\nWORKDIR=$(mktemp -d)\n\nfunction finish {\n  rm -rf \"$WORKDIR\"\n}\ntrap finish EXIT\n\nexport GOBIN=${WORKDIR}/bin\nexport PATH=${GOBIN}:${PATH}\nmkdir -p ${GOBIN}\n\necho \"remove existing generated files\"\n# grpc_testing_not_regenerate/*.pb.go is not re-generated,\n# see grpc_testing_not_regenerate/README.md for details.\nrm -f $(find . -name '*.pb.go' | grep -v 'grpc_testing_not_regenerate')\n\necho \"go install google.golang.org/protobuf/cmd/protoc-gen-go\"\n(cd test/tools && go install google.golang.org/protobuf/cmd/protoc-gen-go)\n\necho \"go install cmd/protoc-gen-go-grpc\"\n(cd cmd/protoc-gen-go-grpc && go install .)\n\necho \"git clone https://github.com/grpc/grpc-proto\"\ngit clone --quiet https://github.com/grpc/grpc-proto ${WORKDIR}/grpc-proto\n\necho \"git clone https://github.com/protocolbuffers/protobuf\"\ngit clone --quiet https://github.com/protocolbuffers/protobuf ${WORKDIR}/protobuf\n\n# Pull in code.proto as a proto dependency\nmkdir -p ${WORKDIR}/googleapis/google/rpc\necho \"curl https://raw.githubusercontent.com/googleapis/googleapis/master/google/rpc/code.proto\"\ncurl --silent https://raw.githubusercontent.com/googleapis/googleapis/master/google/rpc/code.proto > ${WORKDIR}/googleapis/google/rpc/code.proto\n\nmkdir -p ${WORKDIR}/out\n\n# Generates sources without the embed requirement\nLEGACY_SOURCES=(\n  ${WORKDIR}/grpc-proto/grpc/binlog/v1/binarylog.proto\n  ${WORKDIR}/grpc-proto/grpc/channelz/v1/channelz.proto\n  ${WORKDIR}/grpc-proto/grpc/health/v1/health.proto\n  ${WORKDIR}/grpc-proto/grpc/lb/v1/load_balancer.proto\n  profiling/proto/service.proto\n  ${WORKDIR}/grpc-proto/grpc/reflection/v1alpha/reflection.proto\n  ${WORKDIR}/grpc-proto/grpc/reflection/v1/reflection.proto\n)\n\n# Generates only the new gRPC Service symbols\nSOURCES=(\n  $(git ls-files --exclude-standard --cached --others \"*.proto\" | grep -v '^\\(profiling/proto/service.proto\\|reflection/grpc_reflection_v1alpha/reflection.proto\\)$')\n  ${WORKDIR}/grpc-proto/grpc/gcp/altscontext.proto\n  ${WORKDIR}/grpc-proto/grpc/gcp/handshaker.proto\n  ${WORKDIR}/grpc-proto/grpc/gcp/transport_security_common.proto\n  ${WORKDIR}/grpc-proto/grpc/lookup/v1/rls.proto\n  ${WORKDIR}/grpc-proto/grpc/lookup/v1/rls_config.proto\n  ${WORKDIR}/grpc-proto/grpc/testing/*.proto\n  ${WORKDIR}/grpc-proto/grpc/core/*.proto\n)\n\n# These options of the form 'Mfoo.proto=bar' instruct the codegen to use an\n# import path of 'bar' in the generated code when 'foo.proto' is imported in\n# one of the sources.\n#\n# Note that the protos listed here are all for testing purposes. All protos to\n# be used externally should have a go_package option (and they don't need to be\n# listed here).\nOPTS=Mgrpc/core/stats.proto=google.golang.org/grpc/interop/grpc_testing/core,\\\nMgrpc/testing/benchmark_service.proto=google.golang.org/grpc/interop/grpc_testing,\\\nMgrpc/testing/stats.proto=google.golang.org/grpc/interop/grpc_testing,\\\nMgrpc/testing/report_qps_scenario_service.proto=google.golang.org/grpc/interop/grpc_testing,\\\nMgrpc/testing/messages.proto=google.golang.org/grpc/interop/grpc_testing,\\\nMgrpc/testing/worker_service.proto=google.golang.org/grpc/interop/grpc_testing,\\\nMgrpc/testing/control.proto=google.golang.org/grpc/interop/grpc_testing,\\\nMgrpc/testing/test.proto=google.golang.org/grpc/interop/grpc_testing,\\\nMgrpc/testing/payloads.proto=google.golang.org/grpc/interop/grpc_testing,\\\nMgrpc/testing/empty.proto=google.golang.org/grpc/interop/grpc_testing\n\nfor src in ${SOURCES[@]}; do\n  echo \"protoc ${src}\"\n  protoc --go_out=${OPTS}:${WORKDIR}/out --go-grpc_out=${OPTS}:${WORKDIR}/out \\\n    -I\".\" \\\n    -I${WORKDIR}/grpc-proto \\\n    -I${WORKDIR}/googleapis \\\n    -I${WORKDIR}/protobuf/src \\\n    ${src}\ndone\n\nfor src in ${LEGACY_SOURCES[@]}; do\n  echo \"protoc ${src}\"\n  protoc --go_out=${OPTS}:${WORKDIR}/out --go-grpc_out=${OPTS},require_unimplemented_servers=false:${WORKDIR}/out \\\n    -I\".\" \\\n    -I${WORKDIR}/grpc-proto \\\n    -I${WORKDIR}/googleapis \\\n    -I${WORKDIR}/protobuf/src \\\n    ${src}\ndone\n\n# The go_package option in grpc/lookup/v1/rls.proto doesn't match the\n# current location. Move it into the right place.\nmkdir -p ${WORKDIR}/out/google.golang.org/grpc/internal/proto/grpc_lookup_v1\nmv ${WORKDIR}/out/google.golang.org/grpc/lookup/grpc_lookup_v1/* ${WORKDIR}/out/google.golang.org/grpc/internal/proto/grpc_lookup_v1\n\n# grpc_testing_not_regenerate/*.pb.go are not re-generated,\n# see grpc_testing_not_regenerate/README.md for details.\nrm ${WORKDIR}/out/google.golang.org/grpc/reflection/grpc_testing_not_regenerate/*.pb.go\n\ncp -R ${WORKDIR}/out/google.golang.org/grpc/* .\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/resolver/manual/manual.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package manual defines a resolver that can be used to manually send resolved\n// addresses to ClientConn.\npackage manual\n\nimport (\n\t\"sync\"\n\n\t\"google.golang.org/grpc/resolver\"\n)\n\n// NewBuilderWithScheme creates a new manual resolver builder with the given\n// scheme. Every instance of the manual resolver may only ever be used with a\n// single grpc.ClientConn. Otherwise, bad things will happen.\nfunc NewBuilderWithScheme(scheme string) *Resolver {\n\treturn &Resolver{\n\t\tBuildCallback:       func(resolver.Target, resolver.ClientConn, resolver.BuildOptions) {},\n\t\tUpdateStateCallback: func(error) {},\n\t\tResolveNowCallback:  func(resolver.ResolveNowOptions) {},\n\t\tCloseCallback:       func() {},\n\t\tscheme:              scheme,\n\t}\n}\n\n// Resolver is also a resolver builder.\n// It's build() function always returns itself.\ntype Resolver struct {\n\t// BuildCallback is called when the Build method is called.  Must not be\n\t// nil.  Must not be changed after the resolver may be built.\n\tBuildCallback func(resolver.Target, resolver.ClientConn, resolver.BuildOptions)\n\t// UpdateStateCallback is called when the UpdateState method is called on\n\t// the resolver.  The value passed as argument to this callback is the value\n\t// returned by the resolver.ClientConn.  Must not be nil.  Must not be\n\t// changed after the resolver may be built.\n\tUpdateStateCallback func(err error)\n\t// ResolveNowCallback is called when the ResolveNow method is called on the\n\t// resolver.  Must not be nil.  Must not be changed after the resolver may\n\t// be built.\n\tResolveNowCallback func(resolver.ResolveNowOptions)\n\t// CloseCallback is called when the Close method is called.  Must not be\n\t// nil.  Must not be changed after the resolver may be built.\n\tCloseCallback func()\n\tscheme        string\n\n\t// Fields actually belong to the resolver.\n\t// Guards access to below fields.\n\tmu sync.Mutex\n\tCC resolver.ClientConn\n\t// Storing the most recent state update makes this resolver resilient to\n\t// restarts, which is possible with channel idleness.\n\tlastSeenState *resolver.State\n}\n\n// InitialState adds initial state to the resolver so that UpdateState doesn't\n// need to be explicitly called after Dial.\nfunc (r *Resolver) InitialState(s resolver.State) {\n\tr.lastSeenState = &s\n}\n\n// Build returns itself for Resolver, because it's both a builder and a resolver.\nfunc (r *Resolver) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) {\n\tr.BuildCallback(target, cc, opts)\n\tr.mu.Lock()\n\tr.CC = cc\n\tif r.lastSeenState != nil {\n\t\terr := r.CC.UpdateState(*r.lastSeenState)\n\t\tgo r.UpdateStateCallback(err)\n\t}\n\tr.mu.Unlock()\n\treturn r, nil\n}\n\n// Scheme returns the manual resolver's scheme.\nfunc (r *Resolver) Scheme() string {\n\treturn r.scheme\n}\n\n// ResolveNow is a noop for Resolver.\nfunc (r *Resolver) ResolveNow(o resolver.ResolveNowOptions) {\n\tr.ResolveNowCallback(o)\n}\n\n// Close is a noop for Resolver.\nfunc (r *Resolver) Close() {\n\tr.CloseCallback()\n}\n\n// UpdateState calls CC.UpdateState.\nfunc (r *Resolver) UpdateState(s resolver.State) {\n\tr.mu.Lock()\n\terr := r.CC.UpdateState(s)\n\tr.lastSeenState = &s\n\tr.mu.Unlock()\n\tr.UpdateStateCallback(err)\n}\n\n// ReportError calls CC.ReportError.\nfunc (r *Resolver) ReportError(err error) {\n\tr.mu.Lock()\n\tr.CC.ReportError(err)\n\tr.mu.Unlock()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/resolver/map.go",
    "content": "/*\n *\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage resolver\n\ntype addressMapEntry struct {\n\taddr  Address\n\tvalue any\n}\n\n// AddressMap is a map of addresses to arbitrary values taking into account\n// Attributes.  BalancerAttributes are ignored, as are Metadata and Type.\n// Multiple accesses may not be performed concurrently.  Must be created via\n// NewAddressMap; do not construct directly.\ntype AddressMap struct {\n\t// The underlying map is keyed by an Address with fields that we don't care\n\t// about being set to their zero values. The only fields that we care about\n\t// are `Addr`, `ServerName` and `Attributes`. Since we need to be able to\n\t// distinguish between addresses with same `Addr` and `ServerName`, but\n\t// different `Attributes`, we cannot store the `Attributes` in the map key.\n\t//\n\t// The comparison operation for structs work as follows:\n\t//  Struct values are comparable if all their fields are comparable. Two\n\t//  struct values are equal if their corresponding non-blank fields are equal.\n\t//\n\t// The value type of the map contains a slice of addresses which match the key\n\t// in their `Addr` and `ServerName` fields and contain the corresponding value\n\t// associated with them.\n\tm map[Address]addressMapEntryList\n}\n\nfunc toMapKey(addr *Address) Address {\n\treturn Address{Addr: addr.Addr, ServerName: addr.ServerName}\n}\n\ntype addressMapEntryList []*addressMapEntry\n\n// NewAddressMap creates a new AddressMap.\nfunc NewAddressMap() *AddressMap {\n\treturn &AddressMap{m: make(map[Address]addressMapEntryList)}\n}\n\n// find returns the index of addr in the addressMapEntry slice, or -1 if not\n// present.\nfunc (l addressMapEntryList) find(addr Address) int {\n\tfor i, entry := range l {\n\t\t// Attributes are the only thing to match on here, since `Addr` and\n\t\t// `ServerName` are already equal.\n\t\tif entry.addr.Attributes.Equal(addr.Attributes) {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// Get returns the value for the address in the map, if present.\nfunc (a *AddressMap) Get(addr Address) (value any, ok bool) {\n\taddrKey := toMapKey(&addr)\n\tentryList := a.m[addrKey]\n\tif entry := entryList.find(addr); entry != -1 {\n\t\treturn entryList[entry].value, true\n\t}\n\treturn nil, false\n}\n\n// Set updates or adds the value to the address in the map.\nfunc (a *AddressMap) Set(addr Address, value any) {\n\taddrKey := toMapKey(&addr)\n\tentryList := a.m[addrKey]\n\tif entry := entryList.find(addr); entry != -1 {\n\t\tentryList[entry].value = value\n\t\treturn\n\t}\n\ta.m[addrKey] = append(entryList, &addressMapEntry{addr: addr, value: value})\n}\n\n// Delete removes addr from the map.\nfunc (a *AddressMap) Delete(addr Address) {\n\taddrKey := toMapKey(&addr)\n\tentryList := a.m[addrKey]\n\tentry := entryList.find(addr)\n\tif entry == -1 {\n\t\treturn\n\t}\n\tif len(entryList) == 1 {\n\t\tentryList = nil\n\t} else {\n\t\tcopy(entryList[entry:], entryList[entry+1:])\n\t\tentryList = entryList[:len(entryList)-1]\n\t}\n\ta.m[addrKey] = entryList\n}\n\n// Len returns the number of entries in the map.\nfunc (a *AddressMap) Len() int {\n\tret := 0\n\tfor _, entryList := range a.m {\n\t\tret += len(entryList)\n\t}\n\treturn ret\n}\n\n// Keys returns a slice of all current map keys.\nfunc (a *AddressMap) Keys() []Address {\n\tret := make([]Address, 0, a.Len())\n\tfor _, entryList := range a.m {\n\t\tfor _, entry := range entryList {\n\t\t\tret = append(ret, entry.addr)\n\t\t}\n\t}\n\treturn ret\n}\n\n// Values returns a slice of all current map values.\nfunc (a *AddressMap) Values() []any {\n\tret := make([]any, 0, a.Len())\n\tfor _, entryList := range a.m {\n\t\tfor _, entry := range entryList {\n\t\t\tret = append(ret, entry.value)\n\t\t}\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/resolver/resolver.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package resolver defines APIs for name resolution in gRPC.\n// All APIs in this package are experimental.\npackage resolver\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"google.golang.org/grpc/attributes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nvar (\n\t// m is a map from scheme to resolver builder.\n\tm = make(map[string]Builder)\n\t// defaultScheme is the default scheme to use.\n\tdefaultScheme = \"passthrough\"\n)\n\n// TODO(bar) install dns resolver in init(){}.\n\n// Register registers the resolver builder to the resolver map. b.Scheme will\n// be used as the scheme registered with this builder. The registry is case\n// sensitive, and schemes should not contain any uppercase characters.\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. If multiple Resolvers are\n// registered with the same name, the one registered last will take effect.\nfunc Register(b Builder) {\n\tm[b.Scheme()] = b\n}\n\n// Get returns the resolver builder registered with the given scheme.\n//\n// If no builder is register with the scheme, nil will be returned.\nfunc Get(scheme string) Builder {\n\tif b, ok := m[scheme]; ok {\n\t\treturn b\n\t}\n\treturn nil\n}\n\n// SetDefaultScheme sets the default scheme that will be used. The default\n// default scheme is \"passthrough\".\n//\n// NOTE: this function must only be called during initialization time (i.e. in\n// an init() function), and is not thread-safe. The scheme set last overrides\n// previously set values.\nfunc SetDefaultScheme(scheme string) {\n\tdefaultScheme = scheme\n}\n\n// GetDefaultScheme gets the default scheme that will be used.\nfunc GetDefaultScheme() string {\n\treturn defaultScheme\n}\n\n// Address represents a server the client connects to.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype Address struct {\n\t// Addr is the server address on which a connection will be established.\n\tAddr string\n\n\t// ServerName is the name of this address.\n\t// If non-empty, the ServerName is used as the transport certification authority for\n\t// the address, instead of the hostname from the Dial target string. In most cases,\n\t// this should not be set.\n\t//\n\t// WARNING: ServerName must only be populated with trusted values. It\n\t// is insecure to populate it with data from untrusted inputs since untrusted\n\t// values could be used to bypass the authority checks performed by TLS.\n\tServerName string\n\n\t// Attributes contains arbitrary data about this address intended for\n\t// consumption by the SubConn.\n\tAttributes *attributes.Attributes\n\n\t// BalancerAttributes contains arbitrary data about this address intended\n\t// for consumption by the LB policy.  These attributes do not affect SubConn\n\t// creation, connection establishment, handshaking, etc.\n\t//\n\t// Deprecated: when an Address is inside an Endpoint, this field should not\n\t// be used, and it will eventually be removed entirely.\n\tBalancerAttributes *attributes.Attributes\n\n\t// Metadata is the information associated with Addr, which may be used\n\t// to make load balancing decision.\n\t//\n\t// Deprecated: use Attributes instead.\n\tMetadata any\n}\n\n// Equal returns whether a and o are identical.  Metadata is compared directly,\n// not with any recursive introspection.\n//\n// This method compares all fields of the address. When used to tell apart\n// addresses during subchannel creation or connection establishment, it might be\n// more appropriate for the caller to implement custom equality logic.\nfunc (a Address) Equal(o Address) bool {\n\treturn a.Addr == o.Addr && a.ServerName == o.ServerName &&\n\t\ta.Attributes.Equal(o.Attributes) &&\n\t\ta.BalancerAttributes.Equal(o.BalancerAttributes) &&\n\t\ta.Metadata == o.Metadata\n}\n\n// String returns JSON formatted string representation of the address.\nfunc (a Address) String() string {\n\tvar sb strings.Builder\n\tsb.WriteString(fmt.Sprintf(\"{Addr: %q, \", a.Addr))\n\tsb.WriteString(fmt.Sprintf(\"ServerName: %q, \", a.ServerName))\n\tif a.Attributes != nil {\n\t\tsb.WriteString(fmt.Sprintf(\"Attributes: %v, \", a.Attributes.String()))\n\t}\n\tif a.BalancerAttributes != nil {\n\t\tsb.WriteString(fmt.Sprintf(\"BalancerAttributes: %v\", a.BalancerAttributes.String()))\n\t}\n\tsb.WriteString(\"}\")\n\treturn sb.String()\n}\n\n// BuildOptions includes additional information for the builder to create\n// the resolver.\ntype BuildOptions struct {\n\t// DisableServiceConfig indicates whether a resolver implementation should\n\t// fetch service config data.\n\tDisableServiceConfig bool\n\t// DialCreds is the transport credentials used by the ClientConn for\n\t// communicating with the target gRPC service (set via\n\t// WithTransportCredentials). In cases where a name resolution service\n\t// requires the same credentials, the resolver may use this field. In most\n\t// cases though, it is not appropriate, and this field may be ignored.\n\tDialCreds credentials.TransportCredentials\n\t// CredsBundle is the credentials bundle used by the ClientConn for\n\t// communicating with the target gRPC service (set via\n\t// WithCredentialsBundle). In cases where a name resolution service\n\t// requires the same credentials, the resolver may use this field. In most\n\t// cases though, it is not appropriate, and this field may be ignored.\n\tCredsBundle credentials.Bundle\n\t// Dialer is the custom dialer used by the ClientConn for dialling the\n\t// target gRPC service (set via WithDialer). In cases where a name\n\t// resolution service requires the same dialer, the resolver may use this\n\t// field. In most cases though, it is not appropriate, and this field may\n\t// be ignored.\n\tDialer func(context.Context, string) (net.Conn, error)\n}\n\n// An Endpoint is one network endpoint, or server, which may have multiple\n// addresses with which it can be accessed.\ntype Endpoint struct {\n\t// Addresses contains a list of addresses used to access this endpoint.\n\tAddresses []Address\n\n\t// Attributes contains arbitrary data about this endpoint intended for\n\t// consumption by the LB policy.\n\tAttributes *attributes.Attributes\n}\n\n// State contains the current Resolver state relevant to the ClientConn.\ntype State struct {\n\t// Addresses is the latest set of resolved addresses for the target.\n\t//\n\t// If a resolver sets Addresses but does not set Endpoints, one Endpoint\n\t// will be created for each Address before the State is passed to the LB\n\t// policy.  The BalancerAttributes of each entry in Addresses will be set\n\t// in Endpoints.Attributes, and be cleared in the Endpoint's Address's\n\t// BalancerAttributes.\n\t//\n\t// Soon, Addresses will be deprecated and replaced fully by Endpoints.\n\tAddresses []Address\n\n\t// Endpoints is the latest set of resolved endpoints for the target.\n\t//\n\t// If a resolver produces a State containing Endpoints but not Addresses,\n\t// it must take care to ensure the LB policies it selects will support\n\t// Endpoints.\n\tEndpoints []Endpoint\n\n\t// ServiceConfig contains the result from parsing the latest service\n\t// config.  If it is nil, it indicates no service config is present or the\n\t// resolver does not provide service configs.\n\tServiceConfig *serviceconfig.ParseResult\n\n\t// Attributes contains arbitrary data about the resolver intended for\n\t// consumption by the load balancing policy.\n\tAttributes *attributes.Attributes\n}\n\n// ClientConn contains the callbacks for resolver to notify any updates\n// to the gRPC ClientConn.\n//\n// This interface is to be implemented by gRPC. Users should not need a\n// brand new implementation of this interface. For the situations like\n// testing, the new implementation should embed this interface. This allows\n// gRPC to add new methods to this interface.\ntype ClientConn interface {\n\t// UpdateState updates the state of the ClientConn appropriately.\n\t//\n\t// If an error is returned, the resolver should try to resolve the\n\t// target again. The resolver should use a backoff timer to prevent\n\t// overloading the server with requests. If a resolver is certain that\n\t// reresolving will not change the result, e.g. because it is\n\t// a watch-based resolver, returned errors can be ignored.\n\t//\n\t// If the resolved State is the same as the last reported one, calling\n\t// UpdateState can be omitted.\n\tUpdateState(State) error\n\t// ReportError notifies the ClientConn that the Resolver encountered an\n\t// error.  The ClientConn will notify the load balancer and begin calling\n\t// ResolveNow on the Resolver with exponential backoff.\n\tReportError(error)\n\t// NewAddress is called by resolver to notify ClientConn a new list\n\t// of resolved addresses.\n\t// The address list should be the complete list of resolved addresses.\n\t//\n\t// Deprecated: Use UpdateState instead.\n\tNewAddress(addresses []Address)\n\t// NewServiceConfig is called by resolver to notify ClientConn a new\n\t// service config. The service config should be provided as a json string.\n\t//\n\t// Deprecated: Use UpdateState instead.\n\tNewServiceConfig(serviceConfig string)\n\t// ParseServiceConfig parses the provided service config and returns an\n\t// object that provides the parsed config.\n\tParseServiceConfig(serviceConfigJSON string) *serviceconfig.ParseResult\n}\n\n// Target represents a target for gRPC, as specified in:\n// https://github.com/grpc/grpc/blob/master/doc/naming.md.\n// It is parsed from the target string that gets passed into Dial or DialContext\n// by the user. And gRPC passes it to the resolver and the balancer.\n//\n// If the target follows the naming spec, and the parsed scheme is registered\n// with gRPC, we will parse the target string according to the spec. If the\n// target does not contain a scheme or if the parsed scheme is not registered\n// (i.e. no corresponding resolver available to resolve the endpoint), we will\n// apply the default scheme, and will attempt to reparse it.\ntype Target struct {\n\t// URL contains the parsed dial target with an optional default scheme added\n\t// to it if the original dial target contained no scheme or contained an\n\t// unregistered scheme. Any query params specified in the original dial\n\t// target can be accessed from here.\n\tURL url.URL\n}\n\n// Endpoint retrieves endpoint without leading \"/\" from either `URL.Path`\n// or `URL.Opaque`. The latter is used when the former is empty.\nfunc (t Target) Endpoint() string {\n\tendpoint := t.URL.Path\n\tif endpoint == \"\" {\n\t\tendpoint = t.URL.Opaque\n\t}\n\t// For targets of the form \"[scheme]://[authority]/endpoint, the endpoint\n\t// value returned from url.Parse() contains a leading \"/\". Although this is\n\t// in accordance with RFC 3986, we do not want to break existing resolver\n\t// implementations which expect the endpoint without the leading \"/\". So, we\n\t// end up stripping the leading \"/\" here. But this will result in an\n\t// incorrect parsing for something like \"unix:///path/to/socket\". Since we\n\t// own the \"unix\" resolver, we can workaround in the unix resolver by using\n\t// the `URL` field.\n\treturn strings.TrimPrefix(endpoint, \"/\")\n}\n\n// Builder creates a resolver that will be used to watch name resolution updates.\ntype Builder interface {\n\t// Build creates a new resolver for the given target.\n\t//\n\t// gRPC dial calls Build synchronously, and fails if the returned error is\n\t// not nil.\n\tBuild(target Target, cc ClientConn, opts BuildOptions) (Resolver, error)\n\t// Scheme returns the scheme supported by this resolver.  Scheme is defined\n\t// at https://github.com/grpc/grpc/blob/master/doc/naming.md.  The returned\n\t// string should not contain uppercase characters, as they will not match\n\t// the parsed target's scheme as defined in RFC 3986.\n\tScheme() string\n}\n\n// ResolveNowOptions includes additional information for ResolveNow.\ntype ResolveNowOptions struct{}\n\n// Resolver watches for the updates on the specified target.\n// Updates include address updates and service config updates.\ntype Resolver interface {\n\t// ResolveNow will be called by gRPC to try to resolve the target name\n\t// again. It's just a hint, resolver can ignore this if it's not necessary.\n\t//\n\t// It could be called multiple times concurrently.\n\tResolveNow(ResolveNowOptions)\n\t// Close closes the resolver.\n\tClose()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/resolver_conn_wrapper.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/internal/grpcsync\"\n\t\"google.golang.org/grpc/internal/pretty\"\n\t\"google.golang.org/grpc/resolver\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\n// resolverStateUpdater wraps the single method used by ccResolverWrapper to\n// report a state update from the actual resolver implementation.\ntype resolverStateUpdater interface {\n\tupdateResolverState(s resolver.State, err error) error\n}\n\n// ccResolverWrapper is a wrapper on top of cc for resolvers.\n// It implements resolver.ClientConn interface.\ntype ccResolverWrapper struct {\n\t// The following fields are initialized when the wrapper is created and are\n\t// read-only afterwards, and therefore can be accessed without a mutex.\n\tcc                  resolverStateUpdater\n\tchannelzID          *channelz.Identifier\n\tignoreServiceConfig bool\n\topts                ccResolverWrapperOpts\n\tserializer          *grpcsync.CallbackSerializer // To serialize all incoming calls.\n\tserializerCancel    context.CancelFunc           // To close the serializer, accessed only from close().\n\n\t// All incoming (resolver --> gRPC) calls are guaranteed to execute in a\n\t// mutually exclusive manner as they are scheduled on the serializer.\n\t// Fields accessed *only* in these serializer callbacks, can therefore be\n\t// accessed without a mutex.\n\tcurState resolver.State\n\n\t// mu guards access to the below fields.\n\tmu       sync.Mutex\n\tclosed   bool\n\tresolver resolver.Resolver // Accessed only from outgoing calls.\n}\n\n// ccResolverWrapperOpts wraps the arguments to be passed when creating a new\n// ccResolverWrapper.\ntype ccResolverWrapperOpts struct {\n\ttarget     resolver.Target       // User specified dial target to resolve.\n\tbuilder    resolver.Builder      // Resolver builder to use.\n\tbOpts      resolver.BuildOptions // Resolver build options to use.\n\tchannelzID *channelz.Identifier  // Channelz identifier for the channel.\n}\n\n// newCCResolverWrapper uses the resolver.Builder to build a Resolver and\n// returns a ccResolverWrapper object which wraps the newly built resolver.\nfunc newCCResolverWrapper(cc resolverStateUpdater, opts ccResolverWrapperOpts) (*ccResolverWrapper, error) {\n\tctx, cancel := context.WithCancel(context.Background())\n\tccr := &ccResolverWrapper{\n\t\tcc:                  cc,\n\t\tchannelzID:          opts.channelzID,\n\t\tignoreServiceConfig: opts.bOpts.DisableServiceConfig,\n\t\topts:                opts,\n\t\tserializer:          grpcsync.NewCallbackSerializer(ctx),\n\t\tserializerCancel:    cancel,\n\t}\n\n\t// Cannot hold the lock at build time because the resolver can send an\n\t// update or error inline and these incoming calls grab the lock to schedule\n\t// a callback in the serializer.\n\tr, err := opts.builder.Build(opts.target, ccr, opts.bOpts)\n\tif err != nil {\n\t\tcancel()\n\t\treturn nil, err\n\t}\n\n\t// Any error reported by the resolver at build time that leads to a\n\t// re-resolution request from the balancer is dropped by grpc until we\n\t// return from this function. So, we don't have to handle pending resolveNow\n\t// requests here.\n\tccr.mu.Lock()\n\tccr.resolver = r\n\tccr.mu.Unlock()\n\n\treturn ccr, nil\n}\n\nfunc (ccr *ccResolverWrapper) resolveNow(o resolver.ResolveNowOptions) {\n\tccr.mu.Lock()\n\tdefer ccr.mu.Unlock()\n\n\t// ccr.resolver field is set only after the call to Build() returns. But in\n\t// the process of building, the resolver may send an error update which when\n\t// propagated to the balancer may result in a re-resolution request.\n\tif ccr.closed || ccr.resolver == nil {\n\t\treturn\n\t}\n\tccr.resolver.ResolveNow(o)\n}\n\nfunc (ccr *ccResolverWrapper) close() {\n\tccr.mu.Lock()\n\tif ccr.closed {\n\t\tccr.mu.Unlock()\n\t\treturn\n\t}\n\n\tchannelz.Info(logger, ccr.channelzID, \"Closing the name resolver\")\n\n\t// Close the serializer to ensure that no more calls from the resolver are\n\t// handled, before actually closing the resolver.\n\tccr.serializerCancel()\n\tccr.closed = true\n\tr := ccr.resolver\n\tccr.mu.Unlock()\n\n\t// Give enqueued callbacks a chance to finish.\n\t<-ccr.serializer.Done()\n\n\t// Spawn a goroutine to close the resolver (since it may block trying to\n\t// cleanup all allocated resources) and return early.\n\tgo r.Close()\n}\n\n// serializerScheduleLocked is a convenience method to schedule a function to be\n// run on the serializer while holding ccr.mu.\nfunc (ccr *ccResolverWrapper) serializerScheduleLocked(f func(context.Context)) {\n\tccr.mu.Lock()\n\tccr.serializer.Schedule(f)\n\tccr.mu.Unlock()\n}\n\n// UpdateState is called by resolver implementations to report new state to gRPC\n// which includes addresses and service config.\nfunc (ccr *ccResolverWrapper) UpdateState(s resolver.State) error {\n\terrCh := make(chan error, 1)\n\tif s.Endpoints == nil {\n\t\ts.Endpoints = make([]resolver.Endpoint, 0, len(s.Addresses))\n\t\tfor _, a := range s.Addresses {\n\t\t\tep := resolver.Endpoint{Addresses: []resolver.Address{a}, Attributes: a.BalancerAttributes}\n\t\t\tep.Addresses[0].BalancerAttributes = nil\n\t\t\ts.Endpoints = append(s.Endpoints, ep)\n\t\t}\n\t}\n\tok := ccr.serializer.Schedule(func(context.Context) {\n\t\tccr.addChannelzTraceEvent(s)\n\t\tccr.curState = s\n\t\tif err := ccr.cc.updateResolverState(ccr.curState, nil); err == balancer.ErrBadResolverState {\n\t\t\terrCh <- balancer.ErrBadResolverState\n\t\t\treturn\n\t\t}\n\t\terrCh <- nil\n\t})\n\tif !ok {\n\t\t// The only time when Schedule() fail to add the callback to the\n\t\t// serializer is when the serializer is closed, and this happens only\n\t\t// when the resolver wrapper is closed.\n\t\treturn nil\n\t}\n\treturn <-errCh\n}\n\n// ReportError is called by resolver implementations to report errors\n// encountered during name resolution to gRPC.\nfunc (ccr *ccResolverWrapper) ReportError(err error) {\n\tccr.serializerScheduleLocked(func(_ context.Context) {\n\t\tchannelz.Warningf(logger, ccr.channelzID, \"ccResolverWrapper: reporting error to cc: %v\", err)\n\t\tccr.cc.updateResolverState(resolver.State{}, err)\n\t})\n}\n\n// NewAddress is called by the resolver implementation to send addresses to\n// gRPC.\nfunc (ccr *ccResolverWrapper) NewAddress(addrs []resolver.Address) {\n\tccr.serializerScheduleLocked(func(_ context.Context) {\n\t\tccr.addChannelzTraceEvent(resolver.State{Addresses: addrs, ServiceConfig: ccr.curState.ServiceConfig})\n\t\tccr.curState.Addresses = addrs\n\t\tccr.cc.updateResolverState(ccr.curState, nil)\n\t})\n}\n\n// NewServiceConfig is called by the resolver implementation to send service\n// configs to gRPC.\nfunc (ccr *ccResolverWrapper) NewServiceConfig(sc string) {\n\tccr.serializerScheduleLocked(func(_ context.Context) {\n\t\tchannelz.Infof(logger, ccr.channelzID, \"ccResolverWrapper: got new service config: %s\", sc)\n\t\tif ccr.ignoreServiceConfig {\n\t\t\tchannelz.Info(logger, ccr.channelzID, \"Service config lookups disabled; ignoring config\")\n\t\t\treturn\n\t\t}\n\t\tscpr := parseServiceConfig(sc)\n\t\tif scpr.Err != nil {\n\t\t\tchannelz.Warningf(logger, ccr.channelzID, \"ccResolverWrapper: error parsing service config: %v\", scpr.Err)\n\t\t\treturn\n\t\t}\n\t\tccr.addChannelzTraceEvent(resolver.State{Addresses: ccr.curState.Addresses, ServiceConfig: scpr})\n\t\tccr.curState.ServiceConfig = scpr\n\t\tccr.cc.updateResolverState(ccr.curState, nil)\n\t})\n}\n\n// ParseServiceConfig is called by resolver implementations to parse a JSON\n// representation of the service config.\nfunc (ccr *ccResolverWrapper) ParseServiceConfig(scJSON string) *serviceconfig.ParseResult {\n\treturn parseServiceConfig(scJSON)\n}\n\n// addChannelzTraceEvent adds a channelz trace event containing the new\n// state received from resolver implementations.\nfunc (ccr *ccResolverWrapper) addChannelzTraceEvent(s resolver.State) {\n\tvar updates []string\n\tvar oldSC, newSC *ServiceConfig\n\tvar oldOK, newOK bool\n\tif ccr.curState.ServiceConfig != nil {\n\t\toldSC, oldOK = ccr.curState.ServiceConfig.Config.(*ServiceConfig)\n\t}\n\tif s.ServiceConfig != nil {\n\t\tnewSC, newOK = s.ServiceConfig.Config.(*ServiceConfig)\n\t}\n\tif oldOK != newOK || (oldOK && newOK && oldSC.rawJSONString != newSC.rawJSONString) {\n\t\tupdates = append(updates, \"service config updated\")\n\t}\n\tif len(ccr.curState.Addresses) > 0 && len(s.Addresses) == 0 {\n\t\tupdates = append(updates, \"resolver returned an empty address list\")\n\t} else if len(ccr.curState.Addresses) == 0 && len(s.Addresses) > 0 {\n\t\tupdates = append(updates, \"resolver returned new addresses\")\n\t}\n\tchannelz.Infof(logger, ccr.channelzID, \"Resolver state updated: %s (%v)\", pretty.ToJSON(s), strings.Join(updates, \"; \"))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/rpc_util.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"context\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/encoding\"\n\t\"google.golang.org/grpc/encoding/proto\"\n\t\"google.golang.org/grpc/internal/transport\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/peer\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// Compressor defines the interface gRPC uses to compress a message.\n//\n// Deprecated: use package encoding.\ntype Compressor interface {\n\t// Do compresses p into w.\n\tDo(w io.Writer, p []byte) error\n\t// Type returns the compression algorithm the Compressor uses.\n\tType() string\n}\n\ntype gzipCompressor struct {\n\tpool sync.Pool\n}\n\n// NewGZIPCompressor creates a Compressor based on GZIP.\n//\n// Deprecated: use package encoding/gzip.\nfunc NewGZIPCompressor() Compressor {\n\tc, _ := NewGZIPCompressorWithLevel(gzip.DefaultCompression)\n\treturn c\n}\n\n// NewGZIPCompressorWithLevel is like NewGZIPCompressor but specifies the gzip compression level instead\n// of assuming DefaultCompression.\n//\n// The error returned will be nil if the level is valid.\n//\n// Deprecated: use package encoding/gzip.\nfunc NewGZIPCompressorWithLevel(level int) (Compressor, error) {\n\tif level < gzip.DefaultCompression || level > gzip.BestCompression {\n\t\treturn nil, fmt.Errorf(\"grpc: invalid compression level: %d\", level)\n\t}\n\treturn &gzipCompressor{\n\t\tpool: sync.Pool{\n\t\t\tNew: func() any {\n\t\t\t\tw, err := gzip.NewWriterLevel(io.Discard, level)\n\t\t\t\tif err != nil {\n\t\t\t\t\tpanic(err)\n\t\t\t\t}\n\t\t\t\treturn w\n\t\t\t},\n\t\t},\n\t}, nil\n}\n\nfunc (c *gzipCompressor) Do(w io.Writer, p []byte) error {\n\tz := c.pool.Get().(*gzip.Writer)\n\tdefer c.pool.Put(z)\n\tz.Reset(w)\n\tif _, err := z.Write(p); err != nil {\n\t\treturn err\n\t}\n\treturn z.Close()\n}\n\nfunc (c *gzipCompressor) Type() string {\n\treturn \"gzip\"\n}\n\n// Decompressor defines the interface gRPC uses to decompress a message.\n//\n// Deprecated: use package encoding.\ntype Decompressor interface {\n\t// Do reads the data from r and uncompress them.\n\tDo(r io.Reader) ([]byte, error)\n\t// Type returns the compression algorithm the Decompressor uses.\n\tType() string\n}\n\ntype gzipDecompressor struct {\n\tpool sync.Pool\n}\n\n// NewGZIPDecompressor creates a Decompressor based on GZIP.\n//\n// Deprecated: use package encoding/gzip.\nfunc NewGZIPDecompressor() Decompressor {\n\treturn &gzipDecompressor{}\n}\n\nfunc (d *gzipDecompressor) Do(r io.Reader) ([]byte, error) {\n\tvar z *gzip.Reader\n\tswitch maybeZ := d.pool.Get().(type) {\n\tcase nil:\n\t\tnewZ, err := gzip.NewReader(r)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tz = newZ\n\tcase *gzip.Reader:\n\t\tz = maybeZ\n\t\tif err := z.Reset(r); err != nil {\n\t\t\td.pool.Put(z)\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tdefer func() {\n\t\tz.Close()\n\t\td.pool.Put(z)\n\t}()\n\treturn io.ReadAll(z)\n}\n\nfunc (d *gzipDecompressor) Type() string {\n\treturn \"gzip\"\n}\n\n// callInfo contains all related configuration and information about an RPC.\ntype callInfo struct {\n\tcompressorType        string\n\tfailFast              bool\n\tmaxReceiveMessageSize *int\n\tmaxSendMessageSize    *int\n\tcreds                 credentials.PerRPCCredentials\n\tcontentSubtype        string\n\tcodec                 baseCodec\n\tmaxRetryRPCBufferSize int\n\tonFinish              []func(err error)\n}\n\nfunc defaultCallInfo() *callInfo {\n\treturn &callInfo{\n\t\tfailFast:              true,\n\t\tmaxRetryRPCBufferSize: 256 * 1024, // 256KB\n\t}\n}\n\n// CallOption configures a Call before it starts or extracts information from\n// a Call after it completes.\ntype CallOption interface {\n\t// before is called before the call is sent to any server.  If before\n\t// returns a non-nil error, the RPC fails with that error.\n\tbefore(*callInfo) error\n\n\t// after is called after the call has completed.  after cannot return an\n\t// error, so any failures should be reported via output parameters.\n\tafter(*callInfo, *csAttempt)\n}\n\n// EmptyCallOption does not alter the Call configuration.\n// It can be embedded in another structure to carry satellite data for use\n// by interceptors.\ntype EmptyCallOption struct{}\n\nfunc (EmptyCallOption) before(*callInfo) error      { return nil }\nfunc (EmptyCallOption) after(*callInfo, *csAttempt) {}\n\n// Header returns a CallOptions that retrieves the header metadata\n// for a unary RPC.\nfunc Header(md *metadata.MD) CallOption {\n\treturn HeaderCallOption{HeaderAddr: md}\n}\n\n// HeaderCallOption is a CallOption for collecting response header metadata.\n// The metadata field will be populated *after* the RPC completes.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype HeaderCallOption struct {\n\tHeaderAddr *metadata.MD\n}\n\nfunc (o HeaderCallOption) before(c *callInfo) error { return nil }\nfunc (o HeaderCallOption) after(c *callInfo, attempt *csAttempt) {\n\t*o.HeaderAddr, _ = attempt.s.Header()\n}\n\n// Trailer returns a CallOptions that retrieves the trailer metadata\n// for a unary RPC.\nfunc Trailer(md *metadata.MD) CallOption {\n\treturn TrailerCallOption{TrailerAddr: md}\n}\n\n// TrailerCallOption is a CallOption for collecting response trailer metadata.\n// The metadata field will be populated *after* the RPC completes.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype TrailerCallOption struct {\n\tTrailerAddr *metadata.MD\n}\n\nfunc (o TrailerCallOption) before(c *callInfo) error { return nil }\nfunc (o TrailerCallOption) after(c *callInfo, attempt *csAttempt) {\n\t*o.TrailerAddr = attempt.s.Trailer()\n}\n\n// Peer returns a CallOption that retrieves peer information for a unary RPC.\n// The peer field will be populated *after* the RPC completes.\nfunc Peer(p *peer.Peer) CallOption {\n\treturn PeerCallOption{PeerAddr: p}\n}\n\n// PeerCallOption is a CallOption for collecting the identity of the remote\n// peer. The peer field will be populated *after* the RPC completes.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype PeerCallOption struct {\n\tPeerAddr *peer.Peer\n}\n\nfunc (o PeerCallOption) before(c *callInfo) error { return nil }\nfunc (o PeerCallOption) after(c *callInfo, attempt *csAttempt) {\n\tif x, ok := peer.FromContext(attempt.s.Context()); ok {\n\t\t*o.PeerAddr = *x\n\t}\n}\n\n// WaitForReady configures the action to take when an RPC is attempted on broken\n// connections or unreachable servers. If waitForReady is false and the\n// connection is in the TRANSIENT_FAILURE state, the RPC will fail\n// immediately. Otherwise, the RPC client will block the call until a\n// connection is available (or the call is canceled or times out) and will\n// retry the call if it fails due to a transient error.  gRPC will not retry if\n// data was written to the wire unless the server indicates it did not process\n// the data.  Please refer to\n// https://github.com/grpc/grpc/blob/master/doc/wait-for-ready.md.\n//\n// By default, RPCs don't \"wait for ready\".\nfunc WaitForReady(waitForReady bool) CallOption {\n\treturn FailFastCallOption{FailFast: !waitForReady}\n}\n\n// FailFast is the opposite of WaitForReady.\n//\n// Deprecated: use WaitForReady.\nfunc FailFast(failFast bool) CallOption {\n\treturn FailFastCallOption{FailFast: failFast}\n}\n\n// FailFastCallOption is a CallOption for indicating whether an RPC should fail\n// fast or not.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype FailFastCallOption struct {\n\tFailFast bool\n}\n\nfunc (o FailFastCallOption) before(c *callInfo) error {\n\tc.failFast = o.FailFast\n\treturn nil\n}\nfunc (o FailFastCallOption) after(c *callInfo, attempt *csAttempt) {}\n\n// OnFinish returns a CallOption that configures a callback to be called when\n// the call completes. The error passed to the callback is the status of the\n// RPC, and may be nil. The onFinish callback provided will only be called once\n// by gRPC. This is mainly used to be used by streaming interceptors, to be\n// notified when the RPC completes along with information about the status of\n// the RPC.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc OnFinish(onFinish func(err error)) CallOption {\n\treturn OnFinishCallOption{\n\t\tOnFinish: onFinish,\n\t}\n}\n\n// OnFinishCallOption is CallOption that indicates a callback to be called when\n// the call completes.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype OnFinishCallOption struct {\n\tOnFinish func(error)\n}\n\nfunc (o OnFinishCallOption) before(c *callInfo) error {\n\tc.onFinish = append(c.onFinish, o.OnFinish)\n\treturn nil\n}\n\nfunc (o OnFinishCallOption) after(c *callInfo, attempt *csAttempt) {}\n\n// MaxCallRecvMsgSize returns a CallOption which sets the maximum message size\n// in bytes the client can receive. If this is not set, gRPC uses the default\n// 4MB.\nfunc MaxCallRecvMsgSize(bytes int) CallOption {\n\treturn MaxRecvMsgSizeCallOption{MaxRecvMsgSize: bytes}\n}\n\n// MaxRecvMsgSizeCallOption is a CallOption that indicates the maximum message\n// size in bytes the client can receive.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype MaxRecvMsgSizeCallOption struct {\n\tMaxRecvMsgSize int\n}\n\nfunc (o MaxRecvMsgSizeCallOption) before(c *callInfo) error {\n\tc.maxReceiveMessageSize = &o.MaxRecvMsgSize\n\treturn nil\n}\nfunc (o MaxRecvMsgSizeCallOption) after(c *callInfo, attempt *csAttempt) {}\n\n// MaxCallSendMsgSize returns a CallOption which sets the maximum message size\n// in bytes the client can send. If this is not set, gRPC uses the default\n// `math.MaxInt32`.\nfunc MaxCallSendMsgSize(bytes int) CallOption {\n\treturn MaxSendMsgSizeCallOption{MaxSendMsgSize: bytes}\n}\n\n// MaxSendMsgSizeCallOption is a CallOption that indicates the maximum message\n// size in bytes the client can send.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype MaxSendMsgSizeCallOption struct {\n\tMaxSendMsgSize int\n}\n\nfunc (o MaxSendMsgSizeCallOption) before(c *callInfo) error {\n\tc.maxSendMessageSize = &o.MaxSendMsgSize\n\treturn nil\n}\nfunc (o MaxSendMsgSizeCallOption) after(c *callInfo, attempt *csAttempt) {}\n\n// PerRPCCredentials returns a CallOption that sets credentials.PerRPCCredentials\n// for a call.\nfunc PerRPCCredentials(creds credentials.PerRPCCredentials) CallOption {\n\treturn PerRPCCredsCallOption{Creds: creds}\n}\n\n// PerRPCCredsCallOption is a CallOption that indicates the per-RPC\n// credentials to use for the call.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype PerRPCCredsCallOption struct {\n\tCreds credentials.PerRPCCredentials\n}\n\nfunc (o PerRPCCredsCallOption) before(c *callInfo) error {\n\tc.creds = o.Creds\n\treturn nil\n}\nfunc (o PerRPCCredsCallOption) after(c *callInfo, attempt *csAttempt) {}\n\n// UseCompressor returns a CallOption which sets the compressor used when\n// sending the request.  If WithCompressor is also set, UseCompressor has\n// higher priority.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc UseCompressor(name string) CallOption {\n\treturn CompressorCallOption{CompressorType: name}\n}\n\n// CompressorCallOption is a CallOption that indicates the compressor to use.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype CompressorCallOption struct {\n\tCompressorType string\n}\n\nfunc (o CompressorCallOption) before(c *callInfo) error {\n\tc.compressorType = o.CompressorType\n\treturn nil\n}\nfunc (o CompressorCallOption) after(c *callInfo, attempt *csAttempt) {}\n\n// CallContentSubtype returns a CallOption that will set the content-subtype\n// for a call. For example, if content-subtype is \"json\", the Content-Type over\n// the wire will be \"application/grpc+json\". The content-subtype is converted\n// to lowercase before being included in Content-Type. See Content-Type on\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details.\n//\n// If ForceCodec is not also used, the content-subtype will be used to look up\n// the Codec to use in the registry controlled by RegisterCodec. See the\n// documentation on RegisterCodec for details on registration. The lookup of\n// content-subtype is case-insensitive. If no such Codec is found, the call\n// will result in an error with code codes.Internal.\n//\n// If ForceCodec is also used, that Codec will be used for all request and\n// response messages, with the content-subtype set to the given contentSubtype\n// here for requests.\nfunc CallContentSubtype(contentSubtype string) CallOption {\n\treturn ContentSubtypeCallOption{ContentSubtype: strings.ToLower(contentSubtype)}\n}\n\n// ContentSubtypeCallOption is a CallOption that indicates the content-subtype\n// used for marshaling messages.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype ContentSubtypeCallOption struct {\n\tContentSubtype string\n}\n\nfunc (o ContentSubtypeCallOption) before(c *callInfo) error {\n\tc.contentSubtype = o.ContentSubtype\n\treturn nil\n}\nfunc (o ContentSubtypeCallOption) after(c *callInfo, attempt *csAttempt) {}\n\n// ForceCodec returns a CallOption that will set codec to be used for all\n// request and response messages for a call. The result of calling Name() will\n// be used as the content-subtype after converting to lowercase, unless\n// CallContentSubtype is also used.\n//\n// See Content-Type on\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details. Also see the documentation on RegisterCodec and\n// CallContentSubtype for more details on the interaction between Codec and\n// content-subtype.\n//\n// This function is provided for advanced users; prefer to use only\n// CallContentSubtype to select a registered codec instead.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ForceCodec(codec encoding.Codec) CallOption {\n\treturn ForceCodecCallOption{Codec: codec}\n}\n\n// ForceCodecCallOption is a CallOption that indicates the codec used for\n// marshaling messages.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype ForceCodecCallOption struct {\n\tCodec encoding.Codec\n}\n\nfunc (o ForceCodecCallOption) before(c *callInfo) error {\n\tc.codec = o.Codec\n\treturn nil\n}\nfunc (o ForceCodecCallOption) after(c *callInfo, attempt *csAttempt) {}\n\n// CallCustomCodec behaves like ForceCodec, but accepts a grpc.Codec instead of\n// an encoding.Codec.\n//\n// Deprecated: use ForceCodec instead.\nfunc CallCustomCodec(codec Codec) CallOption {\n\treturn CustomCodecCallOption{Codec: codec}\n}\n\n// CustomCodecCallOption is a CallOption that indicates the codec used for\n// marshaling messages.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype CustomCodecCallOption struct {\n\tCodec Codec\n}\n\nfunc (o CustomCodecCallOption) before(c *callInfo) error {\n\tc.codec = o.Codec\n\treturn nil\n}\nfunc (o CustomCodecCallOption) after(c *callInfo, attempt *csAttempt) {}\n\n// MaxRetryRPCBufferSize returns a CallOption that limits the amount of memory\n// used for buffering this RPC's requests for retry purposes.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc MaxRetryRPCBufferSize(bytes int) CallOption {\n\treturn MaxRetryRPCBufferSizeCallOption{bytes}\n}\n\n// MaxRetryRPCBufferSizeCallOption is a CallOption indicating the amount of\n// memory to be used for caching this RPC for retry purposes.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype MaxRetryRPCBufferSizeCallOption struct {\n\tMaxRetryRPCBufferSize int\n}\n\nfunc (o MaxRetryRPCBufferSizeCallOption) before(c *callInfo) error {\n\tc.maxRetryRPCBufferSize = o.MaxRetryRPCBufferSize\n\treturn nil\n}\nfunc (o MaxRetryRPCBufferSizeCallOption) after(c *callInfo, attempt *csAttempt) {}\n\n// The format of the payload: compressed or not?\ntype payloadFormat uint8\n\nconst (\n\tcompressionNone payloadFormat = 0 // no compression\n\tcompressionMade payloadFormat = 1 // compressed\n)\n\n// parser reads complete gRPC messages from the underlying reader.\ntype parser struct {\n\t// r is the underlying reader.\n\t// See the comment on recvMsg for the permissible\n\t// error types.\n\tr io.Reader\n\n\t// The header of a gRPC message. Find more detail at\n\t// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md\n\theader [5]byte\n\n\t// recvBufferPool is the pool of shared receive buffers.\n\trecvBufferPool SharedBufferPool\n}\n\n// recvMsg reads a complete gRPC message from the stream.\n//\n// It returns the message and its payload (compression/encoding)\n// format. The caller owns the returned msg memory.\n//\n// If there is an error, possible values are:\n//   - io.EOF, when no messages remain\n//   - io.ErrUnexpectedEOF\n//   - of type transport.ConnectionError\n//   - an error from the status package\n//\n// No other error values or types must be returned, which also means\n// that the underlying io.Reader must not return an incompatible\n// error.\nfunc (p *parser) recvMsg(maxReceiveMessageSize int) (pf payloadFormat, msg []byte, err error) {\n\tif _, err := p.r.Read(p.header[:]); err != nil {\n\t\treturn 0, nil, err\n\t}\n\n\tpf = payloadFormat(p.header[0])\n\tlength := binary.BigEndian.Uint32(p.header[1:])\n\n\tif length == 0 {\n\t\treturn pf, nil, nil\n\t}\n\tif int64(length) > int64(maxInt) {\n\t\treturn 0, nil, status.Errorf(codes.ResourceExhausted, \"grpc: received message larger than max length allowed on current machine (%d vs. %d)\", length, maxInt)\n\t}\n\tif int(length) > maxReceiveMessageSize {\n\t\treturn 0, nil, status.Errorf(codes.ResourceExhausted, \"grpc: received message larger than max (%d vs. %d)\", length, maxReceiveMessageSize)\n\t}\n\tmsg = p.recvBufferPool.Get(int(length))\n\tif _, err := p.r.Read(msg); err != nil {\n\t\tif err == io.EOF {\n\t\t\terr = io.ErrUnexpectedEOF\n\t\t}\n\t\treturn 0, nil, err\n\t}\n\treturn pf, msg, nil\n}\n\n// encode serializes msg and returns a buffer containing the message, or an\n// error if it is too large to be transmitted by grpc.  If msg is nil, it\n// generates an empty message.\nfunc encode(c baseCodec, msg any) ([]byte, error) {\n\tif msg == nil { // NOTE: typed nils will not be caught by this check\n\t\treturn nil, nil\n\t}\n\tb, err := c.Marshal(msg)\n\tif err != nil {\n\t\treturn nil, status.Errorf(codes.Internal, \"grpc: error while marshaling: %v\", err.Error())\n\t}\n\tif uint(len(b)) > math.MaxUint32 {\n\t\treturn nil, status.Errorf(codes.ResourceExhausted, \"grpc: message too large (%d bytes)\", len(b))\n\t}\n\treturn b, nil\n}\n\n// compress returns the input bytes compressed by compressor or cp.  If both\n// compressors are nil, returns nil.\n//\n// TODO(dfawley): eliminate cp parameter by wrapping Compressor in an encoding.Compressor.\nfunc compress(in []byte, cp Compressor, compressor encoding.Compressor) ([]byte, error) {\n\tif compressor == nil && cp == nil {\n\t\treturn nil, nil\n\t}\n\twrapErr := func(err error) error {\n\t\treturn status.Errorf(codes.Internal, \"grpc: error while compressing: %v\", err.Error())\n\t}\n\tcbuf := &bytes.Buffer{}\n\tif compressor != nil {\n\t\tz, err := compressor.Compress(cbuf)\n\t\tif err != nil {\n\t\t\treturn nil, wrapErr(err)\n\t\t}\n\t\tif _, err := z.Write(in); err != nil {\n\t\t\treturn nil, wrapErr(err)\n\t\t}\n\t\tif err := z.Close(); err != nil {\n\t\t\treturn nil, wrapErr(err)\n\t\t}\n\t} else {\n\t\tif err := cp.Do(cbuf, in); err != nil {\n\t\t\treturn nil, wrapErr(err)\n\t\t}\n\t}\n\treturn cbuf.Bytes(), nil\n}\n\nconst (\n\tpayloadLen = 1\n\tsizeLen    = 4\n\theaderLen  = payloadLen + sizeLen\n)\n\n// msgHeader returns a 5-byte header for the message being transmitted and the\n// payload, which is compData if non-nil or data otherwise.\nfunc msgHeader(data, compData []byte) (hdr []byte, payload []byte) {\n\thdr = make([]byte, headerLen)\n\tif compData != nil {\n\t\thdr[0] = byte(compressionMade)\n\t\tdata = compData\n\t} else {\n\t\thdr[0] = byte(compressionNone)\n\t}\n\n\t// Write length of payload into buf\n\tbinary.BigEndian.PutUint32(hdr[payloadLen:], uint32(len(data)))\n\treturn hdr, data\n}\n\nfunc outPayload(client bool, msg any, data, payload []byte, t time.Time) *stats.OutPayload {\n\treturn &stats.OutPayload{\n\t\tClient:           client,\n\t\tPayload:          msg,\n\t\tData:             data,\n\t\tLength:           len(data),\n\t\tWireLength:       len(payload) + headerLen,\n\t\tCompressedLength: len(payload),\n\t\tSentTime:         t,\n\t}\n}\n\nfunc checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool) *status.Status {\n\tswitch pf {\n\tcase compressionNone:\n\tcase compressionMade:\n\t\tif recvCompress == \"\" || recvCompress == encoding.Identity {\n\t\t\treturn status.New(codes.Internal, \"grpc: compressed flag set with identity or empty encoding\")\n\t\t}\n\t\tif !haveCompressor {\n\t\t\treturn status.Newf(codes.Unimplemented, \"grpc: Decompressor is not installed for grpc-encoding %q\", recvCompress)\n\t\t}\n\tdefault:\n\t\treturn status.Newf(codes.Internal, \"grpc: received unexpected payload format %d\", pf)\n\t}\n\treturn nil\n}\n\ntype payloadInfo struct {\n\tcompressedLength  int // The compressed length got from wire.\n\tuncompressedBytes []byte\n}\n\nfunc recvAndDecompress(p *parser, s *transport.Stream, dc Decompressor, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor) ([]byte, error) {\n\tpf, buf, err := p.recvMsg(maxReceiveMessageSize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif payInfo != nil {\n\t\tpayInfo.compressedLength = len(buf)\n\t}\n\n\tif st := checkRecvPayload(pf, s.RecvCompress(), compressor != nil || dc != nil); st != nil {\n\t\treturn nil, st.Err()\n\t}\n\n\tvar size int\n\tif pf == compressionMade {\n\t\t// To match legacy behavior, if the decompressor is set by WithDecompressor or RPCDecompressor,\n\t\t// use this decompressor as the default.\n\t\tif dc != nil {\n\t\t\tbuf, err = dc.Do(bytes.NewReader(buf))\n\t\t\tsize = len(buf)\n\t\t} else {\n\t\t\tbuf, size, err = decompress(compressor, buf, maxReceiveMessageSize)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, status.Errorf(codes.Internal, \"grpc: failed to decompress the received message: %v\", err)\n\t\t}\n\t\tif size > maxReceiveMessageSize {\n\t\t\t// TODO: Revisit the error code. Currently keep it consistent with java\n\t\t\t// implementation.\n\t\t\treturn nil, status.Errorf(codes.ResourceExhausted, \"grpc: received message after decompression larger than max (%d vs. %d)\", size, maxReceiveMessageSize)\n\t\t}\n\t}\n\treturn buf, nil\n}\n\n// Using compressor, decompress d, returning data and size.\n// Optionally, if data will be over maxReceiveMessageSize, just return the size.\nfunc decompress(compressor encoding.Compressor, d []byte, maxReceiveMessageSize int) ([]byte, int, error) {\n\tdcReader, err := compressor.Decompress(bytes.NewReader(d))\n\tif err != nil {\n\t\treturn nil, 0, err\n\t}\n\tif sizer, ok := compressor.(interface {\n\t\tDecompressedSize(compressedBytes []byte) int\n\t}); ok {\n\t\tif size := sizer.DecompressedSize(d); size >= 0 {\n\t\t\tif size > maxReceiveMessageSize {\n\t\t\t\treturn nil, size, nil\n\t\t\t}\n\t\t\t// size is used as an estimate to size the buffer, but we\n\t\t\t// will read more data if available.\n\t\t\t// +MinRead so ReadFrom will not reallocate if size is correct.\n\t\t\tbuf := bytes.NewBuffer(make([]byte, 0, size+bytes.MinRead))\n\t\t\tbytesRead, err := buf.ReadFrom(io.LimitReader(dcReader, int64(maxReceiveMessageSize)+1))\n\t\t\treturn buf.Bytes(), int(bytesRead), err\n\t\t}\n\t}\n\t// Read from LimitReader with limit max+1. So if the underlying\n\t// reader is over limit, the result will be bigger than max.\n\td, err = io.ReadAll(io.LimitReader(dcReader, int64(maxReceiveMessageSize)+1))\n\treturn d, len(d), err\n}\n\n// For the two compressor parameters, both should not be set, but if they are,\n// dc takes precedence over compressor.\n// TODO(dfawley): wrap the old compressor/decompressor using the new API?\nfunc recv(p *parser, c baseCodec, s *transport.Stream, dc Decompressor, m any, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor) error {\n\tbuf, err := recvAndDecompress(p, s, dc, maxReceiveMessageSize, payInfo, compressor)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := c.Unmarshal(buf, m); err != nil {\n\t\treturn status.Errorf(codes.Internal, \"grpc: failed to unmarshal the received message: %v\", err)\n\t}\n\tif payInfo != nil {\n\t\tpayInfo.uncompressedBytes = buf\n\t} else {\n\t\tp.recvBufferPool.Put(&buf)\n\t}\n\treturn nil\n}\n\n// Information about RPC\ntype rpcInfo struct {\n\tfailfast      bool\n\tpreloaderInfo *compressorInfo\n}\n\n// Information about Preloader\n// Responsible for storing codec, and compressors\n// If stream (s) has  context s.Context which stores rpcInfo that has non nil\n// pointers to codec, and compressors, then we can use preparedMsg for Async message prep\n// and reuse marshalled bytes\ntype compressorInfo struct {\n\tcodec baseCodec\n\tcp    Compressor\n\tcomp  encoding.Compressor\n}\n\ntype rpcInfoContextKey struct{}\n\nfunc newContextWithRPCInfo(ctx context.Context, failfast bool, codec baseCodec, cp Compressor, comp encoding.Compressor) context.Context {\n\treturn context.WithValue(ctx, rpcInfoContextKey{}, &rpcInfo{\n\t\tfailfast: failfast,\n\t\tpreloaderInfo: &compressorInfo{\n\t\t\tcodec: codec,\n\t\t\tcp:    cp,\n\t\t\tcomp:  comp,\n\t\t},\n\t})\n}\n\nfunc rpcInfoFromContext(ctx context.Context) (s *rpcInfo, ok bool) {\n\ts, ok = ctx.Value(rpcInfoContextKey{}).(*rpcInfo)\n\treturn\n}\n\n// Code returns the error code for err if it was produced by the rpc system.\n// Otherwise, it returns codes.Unknown.\n//\n// Deprecated: use status.Code instead.\nfunc Code(err error) codes.Code {\n\treturn status.Code(err)\n}\n\n// ErrorDesc returns the error description of err if it was produced by the rpc system.\n// Otherwise, it returns err.Error() or empty string when err is nil.\n//\n// Deprecated: use status.Convert and Message method instead.\nfunc ErrorDesc(err error) string {\n\treturn status.Convert(err).Message()\n}\n\n// Errorf returns an error containing an error code and a description;\n// Errorf returns nil if c is OK.\n//\n// Deprecated: use status.Errorf instead.\nfunc Errorf(c codes.Code, format string, a ...any) error {\n\treturn status.Errorf(c, format, a...)\n}\n\nvar errContextCanceled = status.Error(codes.Canceled, context.Canceled.Error())\nvar errContextDeadline = status.Error(codes.DeadlineExceeded, context.DeadlineExceeded.Error())\n\n// toRPCErr converts an error into an error from the status package.\nfunc toRPCErr(err error) error {\n\tswitch err {\n\tcase nil, io.EOF:\n\t\treturn err\n\tcase context.DeadlineExceeded:\n\t\treturn errContextDeadline\n\tcase context.Canceled:\n\t\treturn errContextCanceled\n\tcase io.ErrUnexpectedEOF:\n\t\treturn status.Error(codes.Internal, err.Error())\n\t}\n\n\tswitch e := err.(type) {\n\tcase transport.ConnectionError:\n\t\treturn status.Error(codes.Unavailable, e.Desc)\n\tcase *transport.NewStreamError:\n\t\treturn toRPCErr(e.Err)\n\t}\n\n\tif _, ok := status.FromError(err); ok {\n\t\treturn err\n\t}\n\n\treturn status.Error(codes.Unknown, err.Error())\n}\n\n// setCallInfoCodec should only be called after CallOptions have been applied.\nfunc setCallInfoCodec(c *callInfo) error {\n\tif c.codec != nil {\n\t\t// codec was already set by a CallOption; use it, but set the content\n\t\t// subtype if it is not set.\n\t\tif c.contentSubtype == \"\" {\n\t\t\t// c.codec is a baseCodec to hide the difference between grpc.Codec and\n\t\t\t// encoding.Codec (Name vs. String method name).  We only support\n\t\t\t// setting content subtype from encoding.Codec to avoid a behavior\n\t\t\t// change with the deprecated version.\n\t\t\tif ec, ok := c.codec.(encoding.Codec); ok {\n\t\t\t\tc.contentSubtype = strings.ToLower(ec.Name())\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\n\tif c.contentSubtype == \"\" {\n\t\t// No codec specified in CallOptions; use proto by default.\n\t\tc.codec = encoding.GetCodec(proto.Name)\n\t\treturn nil\n\t}\n\n\t// c.contentSubtype is already lowercased in CallContentSubtype\n\tc.codec = encoding.GetCodec(c.contentSubtype)\n\tif c.codec == nil {\n\t\treturn status.Errorf(codes.Internal, \"no codec registered for content-subtype %s\", c.contentSubtype)\n\t}\n\treturn nil\n}\n\n// channelzData is used to store channelz related data for ClientConn, addrConn and Server.\n// These fields cannot be embedded in the original structs (e.g. ClientConn), since to do atomic\n// operation on int64 variable on 32-bit machine, user is responsible to enforce memory alignment.\n// Here, by grouping those int64 fields inside a struct, we are enforcing the alignment.\ntype channelzData struct {\n\tcallsStarted   int64\n\tcallsFailed    int64\n\tcallsSucceeded int64\n\t// lastCallStartedTime stores the timestamp that last call starts. It is of int64 type instead of\n\t// time.Time since it's more costly to atomically update time.Time variable than int64 variable.\n\tlastCallStartedTime int64\n}\n\n// The SupportPackageIsVersion variables are referenced from generated protocol\n// buffer files to ensure compatibility with the gRPC version used.  The latest\n// support package version is 7.\n//\n// Older versions are kept for compatibility.\n//\n// These constants should not be referenced from any other code.\nconst (\n\tSupportPackageIsVersion3 = true\n\tSupportPackageIsVersion4 = true\n\tSupportPackageIsVersion5 = true\n\tSupportPackageIsVersion6 = true\n\tSupportPackageIsVersion7 = true\n)\n\nconst grpcUA = \"grpc-go/\" + Version\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/server.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"net\"\n\t\"net/http\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"golang.org/x/net/trace\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/encoding\"\n\t\"google.golang.org/grpc/encoding/proto\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/binarylog\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/internal/grpcsync\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n\t\"google.golang.org/grpc/internal/transport\"\n\t\"google.golang.org/grpc/keepalive\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/peer\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n\t\"google.golang.org/grpc/tap\"\n)\n\nconst (\n\tdefaultServerMaxReceiveMessageSize = 1024 * 1024 * 4\n\tdefaultServerMaxSendMessageSize    = math.MaxInt32\n\n\t// Server transports are tracked in a map which is keyed on listener\n\t// address. For regular gRPC traffic, connections are accepted in Serve()\n\t// through a call to Accept(), and we use the actual listener address as key\n\t// when we add it to the map. But for connections received through\n\t// ServeHTTP(), we do not have a listener and hence use this dummy value.\n\tlistenerAddressForServeHTTP = \"listenerAddressForServeHTTP\"\n)\n\nfunc init() {\n\tinternal.GetServerCredentials = func(srv *Server) credentials.TransportCredentials {\n\t\treturn srv.opts.creds\n\t}\n\tinternal.DrainServerTransports = func(srv *Server, addr string) {\n\t\tsrv.drainServerTransports(addr)\n\t}\n\tinternal.AddGlobalServerOptions = func(opt ...ServerOption) {\n\t\tglobalServerOptions = append(globalServerOptions, opt...)\n\t}\n\tinternal.ClearGlobalServerOptions = func() {\n\t\tglobalServerOptions = nil\n\t}\n\tinternal.BinaryLogger = binaryLogger\n\tinternal.JoinServerOptions = newJoinServerOption\n}\n\nvar statusOK = status.New(codes.OK, \"\")\nvar logger = grpclog.Component(\"core\")\n\ntype methodHandler func(srv any, ctx context.Context, dec func(any) error, interceptor UnaryServerInterceptor) (any, error)\n\n// MethodDesc represents an RPC service's method specification.\ntype MethodDesc struct {\n\tMethodName string\n\tHandler    methodHandler\n}\n\n// ServiceDesc represents an RPC service's specification.\ntype ServiceDesc struct {\n\tServiceName string\n\t// The pointer to the service interface. Used to check whether the user\n\t// provided implementation satisfies the interface requirements.\n\tHandlerType any\n\tMethods     []MethodDesc\n\tStreams     []StreamDesc\n\tMetadata    any\n}\n\n// serviceInfo wraps information about a service. It is very similar to\n// ServiceDesc and is constructed from it for internal purposes.\ntype serviceInfo struct {\n\t// Contains the implementation for the methods in this service.\n\tserviceImpl any\n\tmethods     map[string]*MethodDesc\n\tstreams     map[string]*StreamDesc\n\tmdata       any\n}\n\n// Server is a gRPC server to serve RPC requests.\ntype Server struct {\n\topts serverOptions\n\n\tmu  sync.Mutex // guards following\n\tlis map[net.Listener]bool\n\t// conns contains all active server transports. It is a map keyed on a\n\t// listener address with the value being the set of active transports\n\t// belonging to that listener.\n\tconns    map[string]map[transport.ServerTransport]bool\n\tserve    bool\n\tdrain    bool\n\tcv       *sync.Cond              // signaled when connections close for GracefulStop\n\tservices map[string]*serviceInfo // service name -> service info\n\tevents   trace.EventLog\n\n\tquit               *grpcsync.Event\n\tdone               *grpcsync.Event\n\tchannelzRemoveOnce sync.Once\n\tserveWG            sync.WaitGroup // counts active Serve goroutines for GracefulStop\n\n\tchannelzID *channelz.Identifier\n\tczData     *channelzData\n\n\tserverWorkerChannel chan func()\n}\n\ntype serverOptions struct {\n\tcreds                 credentials.TransportCredentials\n\tcodec                 baseCodec\n\tcp                    Compressor\n\tdc                    Decompressor\n\tunaryInt              UnaryServerInterceptor\n\tstreamInt             StreamServerInterceptor\n\tchainUnaryInts        []UnaryServerInterceptor\n\tchainStreamInts       []StreamServerInterceptor\n\tbinaryLogger          binarylog.Logger\n\tinTapHandle           tap.ServerInHandle\n\tstatsHandlers         []stats.Handler\n\tmaxConcurrentStreams  uint32\n\tmaxReceiveMessageSize int\n\tmaxSendMessageSize    int\n\tunknownStreamDesc     *StreamDesc\n\tkeepaliveParams       keepalive.ServerParameters\n\tkeepalivePolicy       keepalive.EnforcementPolicy\n\tinitialWindowSize     int32\n\tinitialConnWindowSize int32\n\twriteBufferSize       int\n\treadBufferSize        int\n\tsharedWriteBuffer     bool\n\tconnectionTimeout     time.Duration\n\tmaxHeaderListSize     *uint32\n\theaderTableSize       *uint32\n\tnumServerWorkers      uint32\n\trecvBufferPool        SharedBufferPool\n}\n\nvar defaultServerOptions = serverOptions{\n\tmaxConcurrentStreams:  math.MaxUint32,\n\tmaxReceiveMessageSize: defaultServerMaxReceiveMessageSize,\n\tmaxSendMessageSize:    defaultServerMaxSendMessageSize,\n\tconnectionTimeout:     120 * time.Second,\n\twriteBufferSize:       defaultWriteBufSize,\n\treadBufferSize:        defaultReadBufSize,\n\trecvBufferPool:        nopBufferPool{},\n}\nvar globalServerOptions []ServerOption\n\n// A ServerOption sets options such as credentials, codec and keepalive parameters, etc.\ntype ServerOption interface {\n\tapply(*serverOptions)\n}\n\n// EmptyServerOption does not alter the server configuration. It can be embedded\n// in another structure to build custom server options.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype EmptyServerOption struct{}\n\nfunc (EmptyServerOption) apply(*serverOptions) {}\n\n// funcServerOption wraps a function that modifies serverOptions into an\n// implementation of the ServerOption interface.\ntype funcServerOption struct {\n\tf func(*serverOptions)\n}\n\nfunc (fdo *funcServerOption) apply(do *serverOptions) {\n\tfdo.f(do)\n}\n\nfunc newFuncServerOption(f func(*serverOptions)) *funcServerOption {\n\treturn &funcServerOption{\n\t\tf: f,\n\t}\n}\n\n// joinServerOption provides a way to combine arbitrary number of server\n// options into one.\ntype joinServerOption struct {\n\topts []ServerOption\n}\n\nfunc (mdo *joinServerOption) apply(do *serverOptions) {\n\tfor _, opt := range mdo.opts {\n\t\topt.apply(do)\n\t}\n}\n\nfunc newJoinServerOption(opts ...ServerOption) ServerOption {\n\treturn &joinServerOption{opts: opts}\n}\n\n// SharedWriteBuffer allows reusing per-connection transport write buffer.\n// If this option is set to true every connection will release the buffer after\n// flushing the data on the wire.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc SharedWriteBuffer(val bool) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.sharedWriteBuffer = val\n\t})\n}\n\n// WriteBufferSize determines how much data can be batched before doing a write\n// on the wire. The corresponding memory allocation for this buffer will be\n// twice the size to keep syscalls low. The default value for this buffer is\n// 32KB. Zero or negative values will disable the write buffer such that each\n// write will be on underlying connection.\n// Note: A Send call may not directly translate to a write.\nfunc WriteBufferSize(s int) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.writeBufferSize = s\n\t})\n}\n\n// ReadBufferSize lets you set the size of read buffer, this determines how much\n// data can be read at most for one read syscall. The default value for this\n// buffer is 32KB. Zero or negative values will disable read buffer for a\n// connection so data framer can access the underlying conn directly.\nfunc ReadBufferSize(s int) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.readBufferSize = s\n\t})\n}\n\n// InitialWindowSize returns a ServerOption that sets window size for stream.\n// The lower bound for window size is 64K and any value smaller than that will be ignored.\nfunc InitialWindowSize(s int32) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.initialWindowSize = s\n\t})\n}\n\n// InitialConnWindowSize returns a ServerOption that sets window size for a connection.\n// The lower bound for window size is 64K and any value smaller than that will be ignored.\nfunc InitialConnWindowSize(s int32) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.initialConnWindowSize = s\n\t})\n}\n\n// KeepaliveParams returns a ServerOption that sets keepalive and max-age parameters for the server.\nfunc KeepaliveParams(kp keepalive.ServerParameters) ServerOption {\n\tif kp.Time > 0 && kp.Time < internal.KeepaliveMinServerPingTime {\n\t\tlogger.Warning(\"Adjusting keepalive ping interval to minimum period of 1s\")\n\t\tkp.Time = internal.KeepaliveMinServerPingTime\n\t}\n\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.keepaliveParams = kp\n\t})\n}\n\n// KeepaliveEnforcementPolicy returns a ServerOption that sets keepalive enforcement policy for the server.\nfunc KeepaliveEnforcementPolicy(kep keepalive.EnforcementPolicy) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.keepalivePolicy = kep\n\t})\n}\n\n// CustomCodec returns a ServerOption that sets a codec for message marshaling and unmarshaling.\n//\n// This will override any lookups by content-subtype for Codecs registered with RegisterCodec.\n//\n// Deprecated: register codecs using encoding.RegisterCodec. The server will\n// automatically use registered codecs based on the incoming requests' headers.\n// See also\n// https://github.com/grpc/grpc-go/blob/master/Documentation/encoding.md#using-a-codec.\n// Will be supported throughout 1.x.\nfunc CustomCodec(codec Codec) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.codec = codec\n\t})\n}\n\n// ForceServerCodec returns a ServerOption that sets a codec for message\n// marshaling and unmarshaling.\n//\n// This will override any lookups by content-subtype for Codecs registered\n// with RegisterCodec.\n//\n// See Content-Type on\n// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for\n// more details. Also see the documentation on RegisterCodec and\n// CallContentSubtype for more details on the interaction between encoding.Codec\n// and content-subtype.\n//\n// This function is provided for advanced users; prefer to register codecs\n// using encoding.RegisterCodec.\n// The server will automatically use registered codecs based on the incoming\n// requests' headers. See also\n// https://github.com/grpc/grpc-go/blob/master/Documentation/encoding.md#using-a-codec.\n// Will be supported throughout 1.x.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ForceServerCodec(codec encoding.Codec) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.codec = codec\n\t})\n}\n\n// RPCCompressor returns a ServerOption that sets a compressor for outbound\n// messages.  For backward compatibility, all outbound messages will be sent\n// using this compressor, regardless of incoming message compression.  By\n// default, server messages will be sent using the same compressor with which\n// request messages were sent.\n//\n// Deprecated: use encoding.RegisterCompressor instead. Will be supported\n// throughout 1.x.\nfunc RPCCompressor(cp Compressor) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.cp = cp\n\t})\n}\n\n// RPCDecompressor returns a ServerOption that sets a decompressor for inbound\n// messages.  It has higher priority than decompressors registered via\n// encoding.RegisterCompressor.\n//\n// Deprecated: use encoding.RegisterCompressor instead. Will be supported\n// throughout 1.x.\nfunc RPCDecompressor(dc Decompressor) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.dc = dc\n\t})\n}\n\n// MaxMsgSize returns a ServerOption to set the max message size in bytes the server can receive.\n// If this is not set, gRPC uses the default limit.\n//\n// Deprecated: use MaxRecvMsgSize instead. Will be supported throughout 1.x.\nfunc MaxMsgSize(m int) ServerOption {\n\treturn MaxRecvMsgSize(m)\n}\n\n// MaxRecvMsgSize returns a ServerOption to set the max message size in bytes the server can receive.\n// If this is not set, gRPC uses the default 4MB.\nfunc MaxRecvMsgSize(m int) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.maxReceiveMessageSize = m\n\t})\n}\n\n// MaxSendMsgSize returns a ServerOption to set the max message size in bytes the server can send.\n// If this is not set, gRPC uses the default `math.MaxInt32`.\nfunc MaxSendMsgSize(m int) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.maxSendMessageSize = m\n\t})\n}\n\n// MaxConcurrentStreams returns a ServerOption that will apply a limit on the number\n// of concurrent streams to each ServerTransport.\nfunc MaxConcurrentStreams(n uint32) ServerOption {\n\tif n == 0 {\n\t\tn = math.MaxUint32\n\t}\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.maxConcurrentStreams = n\n\t})\n}\n\n// Creds returns a ServerOption that sets credentials for server connections.\nfunc Creds(c credentials.TransportCredentials) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.creds = c\n\t})\n}\n\n// UnaryInterceptor returns a ServerOption that sets the UnaryServerInterceptor for the\n// server. Only one unary interceptor can be installed. The construction of multiple\n// interceptors (e.g., chaining) can be implemented at the caller.\nfunc UnaryInterceptor(i UnaryServerInterceptor) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\tif o.unaryInt != nil {\n\t\t\tpanic(\"The unary server interceptor was already set and may not be reset.\")\n\t\t}\n\t\to.unaryInt = i\n\t})\n}\n\n// ChainUnaryInterceptor returns a ServerOption that specifies the chained interceptor\n// for unary RPCs. The first interceptor will be the outer most,\n// while the last interceptor will be the inner most wrapper around the real call.\n// All unary interceptors added by this method will be chained.\nfunc ChainUnaryInterceptor(interceptors ...UnaryServerInterceptor) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.chainUnaryInts = append(o.chainUnaryInts, interceptors...)\n\t})\n}\n\n// StreamInterceptor returns a ServerOption that sets the StreamServerInterceptor for the\n// server. Only one stream interceptor can be installed.\nfunc StreamInterceptor(i StreamServerInterceptor) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\tif o.streamInt != nil {\n\t\t\tpanic(\"The stream server interceptor was already set and may not be reset.\")\n\t\t}\n\t\to.streamInt = i\n\t})\n}\n\n// ChainStreamInterceptor returns a ServerOption that specifies the chained interceptor\n// for streaming RPCs. The first interceptor will be the outer most,\n// while the last interceptor will be the inner most wrapper around the real call.\n// All stream interceptors added by this method will be chained.\nfunc ChainStreamInterceptor(interceptors ...StreamServerInterceptor) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.chainStreamInts = append(o.chainStreamInts, interceptors...)\n\t})\n}\n\n// InTapHandle returns a ServerOption that sets the tap handle for all the server\n// transport to be created. Only one can be installed.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc InTapHandle(h tap.ServerInHandle) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\tif o.inTapHandle != nil {\n\t\t\tpanic(\"The tap handle was already set and may not be reset.\")\n\t\t}\n\t\to.inTapHandle = h\n\t})\n}\n\n// StatsHandler returns a ServerOption that sets the stats handler for the server.\nfunc StatsHandler(h stats.Handler) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\tif h == nil {\n\t\t\tlogger.Error(\"ignoring nil parameter in grpc.StatsHandler ServerOption\")\n\t\t\t// Do not allow a nil stats handler, which would otherwise cause\n\t\t\t// panics.\n\t\t\treturn\n\t\t}\n\t\to.statsHandlers = append(o.statsHandlers, h)\n\t})\n}\n\n// binaryLogger returns a ServerOption that can set the binary logger for the\n// server.\nfunc binaryLogger(bl binarylog.Logger) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.binaryLogger = bl\n\t})\n}\n\n// UnknownServiceHandler returns a ServerOption that allows for adding a custom\n// unknown service handler. The provided method is a bidi-streaming RPC service\n// handler that will be invoked instead of returning the \"unimplemented\" gRPC\n// error whenever a request is received for an unregistered service or method.\n// The handling function and stream interceptor (if set) have full access to\n// the ServerStream, including its Context.\nfunc UnknownServiceHandler(streamHandler StreamHandler) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.unknownStreamDesc = &StreamDesc{\n\t\t\tStreamName: \"unknown_service_handler\",\n\t\t\tHandler:    streamHandler,\n\t\t\t// We need to assume that the users of the streamHandler will want to use both.\n\t\t\tClientStreams: true,\n\t\t\tServerStreams: true,\n\t\t}\n\t})\n}\n\n// ConnectionTimeout returns a ServerOption that sets the timeout for\n// connection establishment (up to and including HTTP/2 handshaking) for all\n// new connections.  If this is not set, the default is 120 seconds.  A zero or\n// negative value will result in an immediate timeout.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ConnectionTimeout(d time.Duration) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.connectionTimeout = d\n\t})\n}\n\n// MaxHeaderListSize returns a ServerOption that sets the max (uncompressed) size\n// of header list that the server is prepared to accept.\nfunc MaxHeaderListSize(s uint32) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.maxHeaderListSize = &s\n\t})\n}\n\n// HeaderTableSize returns a ServerOption that sets the size of dynamic\n// header table for stream.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc HeaderTableSize(s uint32) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.headerTableSize = &s\n\t})\n}\n\n// NumStreamWorkers returns a ServerOption that sets the number of worker\n// goroutines that should be used to process incoming streams. Setting this to\n// zero (default) will disable workers and spawn a new goroutine for each\n// stream.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc NumStreamWorkers(numServerWorkers uint32) ServerOption {\n\t// TODO: If/when this API gets stabilized (i.e. stream workers become the\n\t// only way streams are processed), change the behavior of the zero value to\n\t// a sane default. Preliminary experiments suggest that a value equal to the\n\t// number of CPUs available is most performant; requires thorough testing.\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.numServerWorkers = numServerWorkers\n\t})\n}\n\n// RecvBufferPool returns a ServerOption that configures the server\n// to use the provided shared buffer pool for parsing incoming messages. Depending\n// on the application's workload, this could result in reduced memory allocation.\n//\n// If you are unsure about how to implement a memory pool but want to utilize one,\n// begin with grpc.NewSharedBufferPool.\n//\n// Note: The shared buffer pool feature will not be active if any of the following\n// options are used: StatsHandler, EnableTracing, or binary logging. In such\n// cases, the shared buffer pool will be ignored.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc RecvBufferPool(bufferPool SharedBufferPool) ServerOption {\n\treturn newFuncServerOption(func(o *serverOptions) {\n\t\to.recvBufferPool = bufferPool\n\t})\n}\n\n// serverWorkerResetThreshold defines how often the stack must be reset. Every\n// N requests, by spawning a new goroutine in its place, a worker can reset its\n// stack so that large stacks don't live in memory forever. 2^16 should allow\n// each goroutine stack to live for at least a few seconds in a typical\n// workload (assuming a QPS of a few thousand requests/sec).\nconst serverWorkerResetThreshold = 1 << 16\n\n// serverWorkers blocks on a *transport.Stream channel forever and waits for\n// data to be fed by serveStreams. This allows multiple requests to be\n// processed by the same goroutine, removing the need for expensive stack\n// re-allocations (see the runtime.morestack problem [1]).\n//\n// [1] https://github.com/golang/go/issues/18138\nfunc (s *Server) serverWorker() {\n\tfor completed := 0; completed < serverWorkerResetThreshold; completed++ {\n\t\tf, ok := <-s.serverWorkerChannel\n\t\tif !ok {\n\t\t\treturn\n\t\t}\n\t\tf()\n\t}\n\tgo s.serverWorker()\n}\n\n// initServerWorkers creates worker goroutines and a channel to process incoming\n// connections to reduce the time spent overall on runtime.morestack.\nfunc (s *Server) initServerWorkers() {\n\ts.serverWorkerChannel = make(chan func())\n\tfor i := uint32(0); i < s.opts.numServerWorkers; i++ {\n\t\tgo s.serverWorker()\n\t}\n}\n\nfunc (s *Server) stopServerWorkers() {\n\tclose(s.serverWorkerChannel)\n}\n\n// NewServer creates a gRPC server which has no service registered and has not\n// started to accept requests yet.\nfunc NewServer(opt ...ServerOption) *Server {\n\topts := defaultServerOptions\n\tfor _, o := range globalServerOptions {\n\t\to.apply(&opts)\n\t}\n\tfor _, o := range opt {\n\t\to.apply(&opts)\n\t}\n\ts := &Server{\n\t\tlis:      make(map[net.Listener]bool),\n\t\topts:     opts,\n\t\tconns:    make(map[string]map[transport.ServerTransport]bool),\n\t\tservices: make(map[string]*serviceInfo),\n\t\tquit:     grpcsync.NewEvent(),\n\t\tdone:     grpcsync.NewEvent(),\n\t\tczData:   new(channelzData),\n\t}\n\tchainUnaryServerInterceptors(s)\n\tchainStreamServerInterceptors(s)\n\ts.cv = sync.NewCond(&s.mu)\n\tif EnableTracing {\n\t\t_, file, line, _ := runtime.Caller(1)\n\t\ts.events = trace.NewEventLog(\"grpc.Server\", fmt.Sprintf(\"%s:%d\", file, line))\n\t}\n\n\tif s.opts.numServerWorkers > 0 {\n\t\ts.initServerWorkers()\n\t}\n\n\ts.channelzID = channelz.RegisterServer(&channelzServer{s}, \"\")\n\tchannelz.Info(logger, s.channelzID, \"Server created\")\n\treturn s\n}\n\n// printf records an event in s's event log, unless s has been stopped.\n// REQUIRES s.mu is held.\nfunc (s *Server) printf(format string, a ...any) {\n\tif s.events != nil {\n\t\ts.events.Printf(format, a...)\n\t}\n}\n\n// errorf records an error in s's event log, unless s has been stopped.\n// REQUIRES s.mu is held.\nfunc (s *Server) errorf(format string, a ...any) {\n\tif s.events != nil {\n\t\ts.events.Errorf(format, a...)\n\t}\n}\n\n// ServiceRegistrar wraps a single method that supports service registration. It\n// enables users to pass concrete types other than grpc.Server to the service\n// registration methods exported by the IDL generated code.\ntype ServiceRegistrar interface {\n\t// RegisterService registers a service and its implementation to the\n\t// concrete type implementing this interface.  It may not be called\n\t// once the server has started serving.\n\t// desc describes the service and its methods and handlers. impl is the\n\t// service implementation which is passed to the method handlers.\n\tRegisterService(desc *ServiceDesc, impl any)\n}\n\n// RegisterService registers a service and its implementation to the gRPC\n// server. It is called from the IDL generated code. This must be called before\n// invoking Serve. If ss is non-nil (for legacy code), its type is checked to\n// ensure it implements sd.HandlerType.\nfunc (s *Server) RegisterService(sd *ServiceDesc, ss any) {\n\tif ss != nil {\n\t\tht := reflect.TypeOf(sd.HandlerType).Elem()\n\t\tst := reflect.TypeOf(ss)\n\t\tif !st.Implements(ht) {\n\t\t\tlogger.Fatalf(\"grpc: Server.RegisterService found the handler of type %v that does not satisfy %v\", st, ht)\n\t\t}\n\t}\n\ts.register(sd, ss)\n}\n\nfunc (s *Server) register(sd *ServiceDesc, ss any) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\ts.printf(\"RegisterService(%q)\", sd.ServiceName)\n\tif s.serve {\n\t\tlogger.Fatalf(\"grpc: Server.RegisterService after Server.Serve for %q\", sd.ServiceName)\n\t}\n\tif _, ok := s.services[sd.ServiceName]; ok {\n\t\tlogger.Fatalf(\"grpc: Server.RegisterService found duplicate service registration for %q\", sd.ServiceName)\n\t}\n\tinfo := &serviceInfo{\n\t\tserviceImpl: ss,\n\t\tmethods:     make(map[string]*MethodDesc),\n\t\tstreams:     make(map[string]*StreamDesc),\n\t\tmdata:       sd.Metadata,\n\t}\n\tfor i := range sd.Methods {\n\t\td := &sd.Methods[i]\n\t\tinfo.methods[d.MethodName] = d\n\t}\n\tfor i := range sd.Streams {\n\t\td := &sd.Streams[i]\n\t\tinfo.streams[d.StreamName] = d\n\t}\n\ts.services[sd.ServiceName] = info\n}\n\n// MethodInfo contains the information of an RPC including its method name and type.\ntype MethodInfo struct {\n\t// Name is the method name only, without the service name or package name.\n\tName string\n\t// IsClientStream indicates whether the RPC is a client streaming RPC.\n\tIsClientStream bool\n\t// IsServerStream indicates whether the RPC is a server streaming RPC.\n\tIsServerStream bool\n}\n\n// ServiceInfo contains unary RPC method info, streaming RPC method info and metadata for a service.\ntype ServiceInfo struct {\n\tMethods []MethodInfo\n\t// Metadata is the metadata specified in ServiceDesc when registering service.\n\tMetadata any\n}\n\n// GetServiceInfo returns a map from service names to ServiceInfo.\n// Service names include the package names, in the form of <package>.<service>.\nfunc (s *Server) GetServiceInfo() map[string]ServiceInfo {\n\tret := make(map[string]ServiceInfo)\n\tfor n, srv := range s.services {\n\t\tmethods := make([]MethodInfo, 0, len(srv.methods)+len(srv.streams))\n\t\tfor m := range srv.methods {\n\t\t\tmethods = append(methods, MethodInfo{\n\t\t\t\tName:           m,\n\t\t\t\tIsClientStream: false,\n\t\t\t\tIsServerStream: false,\n\t\t\t})\n\t\t}\n\t\tfor m, d := range srv.streams {\n\t\t\tmethods = append(methods, MethodInfo{\n\t\t\t\tName:           m,\n\t\t\t\tIsClientStream: d.ClientStreams,\n\t\t\t\tIsServerStream: d.ServerStreams,\n\t\t\t})\n\t\t}\n\n\t\tret[n] = ServiceInfo{\n\t\t\tMethods:  methods,\n\t\t\tMetadata: srv.mdata,\n\t\t}\n\t}\n\treturn ret\n}\n\n// ErrServerStopped indicates that the operation is now illegal because of\n// the server being stopped.\nvar ErrServerStopped = errors.New(\"grpc: the server has been stopped\")\n\ntype listenSocket struct {\n\tnet.Listener\n\tchannelzID *channelz.Identifier\n}\n\nfunc (l *listenSocket) ChannelzMetric() *channelz.SocketInternalMetric {\n\treturn &channelz.SocketInternalMetric{\n\t\tSocketOptions: channelz.GetSocketOption(l.Listener),\n\t\tLocalAddr:     l.Listener.Addr(),\n\t}\n}\n\nfunc (l *listenSocket) Close() error {\n\terr := l.Listener.Close()\n\tchannelz.RemoveEntry(l.channelzID)\n\tchannelz.Info(logger, l.channelzID, \"ListenSocket deleted\")\n\treturn err\n}\n\n// Serve accepts incoming connections on the listener lis, creating a new\n// ServerTransport and service goroutine for each. The service goroutines\n// read gRPC requests and then call the registered handlers to reply to them.\n// Serve returns when lis.Accept fails with fatal errors.  lis will be closed when\n// this method returns.\n// Serve will return a non-nil error unless Stop or GracefulStop is called.\nfunc (s *Server) Serve(lis net.Listener) error {\n\ts.mu.Lock()\n\ts.printf(\"serving\")\n\ts.serve = true\n\tif s.lis == nil {\n\t\t// Serve called after Stop or GracefulStop.\n\t\ts.mu.Unlock()\n\t\tlis.Close()\n\t\treturn ErrServerStopped\n\t}\n\n\ts.serveWG.Add(1)\n\tdefer func() {\n\t\ts.serveWG.Done()\n\t\tif s.quit.HasFired() {\n\t\t\t// Stop or GracefulStop called; block until done and return nil.\n\t\t\t<-s.done.Done()\n\t\t}\n\t}()\n\n\tls := &listenSocket{Listener: lis}\n\ts.lis[ls] = true\n\n\tdefer func() {\n\t\ts.mu.Lock()\n\t\tif s.lis != nil && s.lis[ls] {\n\t\t\tls.Close()\n\t\t\tdelete(s.lis, ls)\n\t\t}\n\t\ts.mu.Unlock()\n\t}()\n\n\tvar err error\n\tls.channelzID, err = channelz.RegisterListenSocket(ls, s.channelzID, lis.Addr().String())\n\tif err != nil {\n\t\ts.mu.Unlock()\n\t\treturn err\n\t}\n\ts.mu.Unlock()\n\tchannelz.Info(logger, ls.channelzID, \"ListenSocket created\")\n\n\tvar tempDelay time.Duration // how long to sleep on accept failure\n\tfor {\n\t\trawConn, err := lis.Accept()\n\t\tif err != nil {\n\t\t\tif ne, ok := err.(interface {\n\t\t\t\tTemporary() bool\n\t\t\t}); ok && ne.Temporary() {\n\t\t\t\tif tempDelay == 0 {\n\t\t\t\t\ttempDelay = 5 * time.Millisecond\n\t\t\t\t} else {\n\t\t\t\t\ttempDelay *= 2\n\t\t\t\t}\n\t\t\t\tif max := 1 * time.Second; tempDelay > max {\n\t\t\t\t\ttempDelay = max\n\t\t\t\t}\n\t\t\t\ts.mu.Lock()\n\t\t\t\ts.printf(\"Accept error: %v; retrying in %v\", err, tempDelay)\n\t\t\t\ts.mu.Unlock()\n\t\t\t\ttimer := time.NewTimer(tempDelay)\n\t\t\t\tselect {\n\t\t\t\tcase <-timer.C:\n\t\t\t\tcase <-s.quit.Done():\n\t\t\t\t\ttimer.Stop()\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ts.mu.Lock()\n\t\t\ts.printf(\"done serving; Accept = %v\", err)\n\t\t\ts.mu.Unlock()\n\n\t\t\tif s.quit.HasFired() {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t\ttempDelay = 0\n\t\t// Start a new goroutine to deal with rawConn so we don't stall this Accept\n\t\t// loop goroutine.\n\t\t//\n\t\t// Make sure we account for the goroutine so GracefulStop doesn't nil out\n\t\t// s.conns before this conn can be added.\n\t\ts.serveWG.Add(1)\n\t\tgo func() {\n\t\t\ts.handleRawConn(lis.Addr().String(), rawConn)\n\t\t\ts.serveWG.Done()\n\t\t}()\n\t}\n}\n\n// handleRawConn forks a goroutine to handle a just-accepted connection that\n// has not had any I/O performed on it yet.\nfunc (s *Server) handleRawConn(lisAddr string, rawConn net.Conn) {\n\tif s.quit.HasFired() {\n\t\trawConn.Close()\n\t\treturn\n\t}\n\trawConn.SetDeadline(time.Now().Add(s.opts.connectionTimeout))\n\n\t// Finish handshaking (HTTP2)\n\tst := s.newHTTP2Transport(rawConn)\n\trawConn.SetDeadline(time.Time{})\n\tif st == nil {\n\t\treturn\n\t}\n\n\tif !s.addConn(lisAddr, st) {\n\t\treturn\n\t}\n\tgo func() {\n\t\ts.serveStreams(st)\n\t\ts.removeConn(lisAddr, st)\n\t}()\n}\n\nfunc (s *Server) drainServerTransports(addr string) {\n\ts.mu.Lock()\n\tconns := s.conns[addr]\n\tfor st := range conns {\n\t\tst.Drain(\"\")\n\t}\n\ts.mu.Unlock()\n}\n\n// newHTTP2Transport sets up a http/2 transport (using the\n// gRPC http2 server transport in transport/http2_server.go).\nfunc (s *Server) newHTTP2Transport(c net.Conn) transport.ServerTransport {\n\tconfig := &transport.ServerConfig{\n\t\tMaxStreams:            s.opts.maxConcurrentStreams,\n\t\tConnectionTimeout:     s.opts.connectionTimeout,\n\t\tCredentials:           s.opts.creds,\n\t\tInTapHandle:           s.opts.inTapHandle,\n\t\tStatsHandlers:         s.opts.statsHandlers,\n\t\tKeepaliveParams:       s.opts.keepaliveParams,\n\t\tKeepalivePolicy:       s.opts.keepalivePolicy,\n\t\tInitialWindowSize:     s.opts.initialWindowSize,\n\t\tInitialConnWindowSize: s.opts.initialConnWindowSize,\n\t\tWriteBufferSize:       s.opts.writeBufferSize,\n\t\tReadBufferSize:        s.opts.readBufferSize,\n\t\tSharedWriteBuffer:     s.opts.sharedWriteBuffer,\n\t\tChannelzParentID:      s.channelzID,\n\t\tMaxHeaderListSize:     s.opts.maxHeaderListSize,\n\t\tHeaderTableSize:       s.opts.headerTableSize,\n\t}\n\tst, err := transport.NewServerTransport(c, config)\n\tif err != nil {\n\t\ts.mu.Lock()\n\t\ts.errorf(\"NewServerTransport(%q) failed: %v\", c.RemoteAddr(), err)\n\t\ts.mu.Unlock()\n\t\t// ErrConnDispatched means that the connection was dispatched away from\n\t\t// gRPC; those connections should be left open.\n\t\tif err != credentials.ErrConnDispatched {\n\t\t\t// Don't log on ErrConnDispatched and io.EOF to prevent log spam.\n\t\t\tif err != io.EOF {\n\t\t\t\tchannelz.Info(logger, s.channelzID, \"grpc: Server.Serve failed to create ServerTransport: \", err)\n\t\t\t}\n\t\t\tc.Close()\n\t\t}\n\t\treturn nil\n\t}\n\n\treturn st\n}\n\nfunc (s *Server) serveStreams(st transport.ServerTransport) {\n\tdefer st.Close(errors.New(\"finished serving streams for the server transport\"))\n\tvar wg sync.WaitGroup\n\n\tstreamQuota := newHandlerQuota(s.opts.maxConcurrentStreams)\n\tst.HandleStreams(func(stream *transport.Stream) {\n\t\twg.Add(1)\n\n\t\tstreamQuota.acquire()\n\t\tf := func() {\n\t\t\tdefer streamQuota.release()\n\t\t\tdefer wg.Done()\n\t\t\ts.handleStream(st, stream)\n\t\t}\n\n\t\tif s.opts.numServerWorkers > 0 {\n\t\t\tselect {\n\t\t\tcase s.serverWorkerChannel <- f:\n\t\t\t\treturn\n\t\t\tdefault:\n\t\t\t\t// If all stream workers are busy, fallback to the default code path.\n\t\t\t}\n\t\t}\n\t\tgo f()\n\t})\n\twg.Wait()\n}\n\nvar _ http.Handler = (*Server)(nil)\n\n// ServeHTTP implements the Go standard library's http.Handler\n// interface by responding to the gRPC request r, by looking up\n// the requested gRPC method in the gRPC server s.\n//\n// The provided HTTP request must have arrived on an HTTP/2\n// connection. When using the Go standard library's server,\n// practically this means that the Request must also have arrived\n// over TLS.\n//\n// To share one port (such as 443 for https) between gRPC and an\n// existing http.Handler, use a root http.Handler such as:\n//\n//\tif r.ProtoMajor == 2 && strings.HasPrefix(\n//\t\tr.Header.Get(\"Content-Type\"), \"application/grpc\") {\n//\t\tgrpcServer.ServeHTTP(w, r)\n//\t} else {\n//\t\tyourMux.ServeHTTP(w, r)\n//\t}\n//\n// Note that ServeHTTP uses Go's HTTP/2 server implementation which is totally\n// separate from grpc-go's HTTP/2 server. Performance and features may vary\n// between the two paths. ServeHTTP does not support some gRPC features\n// available through grpc-go's HTTP/2 server.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {\n\tst, err := transport.NewServerHandlerTransport(w, r, s.opts.statsHandlers)\n\tif err != nil {\n\t\t// Errors returned from transport.NewServerHandlerTransport have\n\t\t// already been written to w.\n\t\treturn\n\t}\n\tif !s.addConn(listenerAddressForServeHTTP, st) {\n\t\treturn\n\t}\n\tdefer s.removeConn(listenerAddressForServeHTTP, st)\n\ts.serveStreams(st)\n}\n\nfunc (s *Server) addConn(addr string, st transport.ServerTransport) bool {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\tif s.conns == nil {\n\t\tst.Close(errors.New(\"Server.addConn called when server has already been stopped\"))\n\t\treturn false\n\t}\n\tif s.drain {\n\t\t// Transport added after we drained our existing conns: drain it\n\t\t// immediately.\n\t\tst.Drain(\"\")\n\t}\n\n\tif s.conns[addr] == nil {\n\t\t// Create a map entry if this is the first connection on this listener.\n\t\ts.conns[addr] = make(map[transport.ServerTransport]bool)\n\t}\n\ts.conns[addr][st] = true\n\treturn true\n}\n\nfunc (s *Server) removeConn(addr string, st transport.ServerTransport) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\tconns := s.conns[addr]\n\tif conns != nil {\n\t\tdelete(conns, st)\n\t\tif len(conns) == 0 {\n\t\t\t// If the last connection for this address is being removed, also\n\t\t\t// remove the map entry corresponding to the address. This is used\n\t\t\t// in GracefulStop() when waiting for all connections to be closed.\n\t\t\tdelete(s.conns, addr)\n\t\t}\n\t\ts.cv.Broadcast()\n\t}\n}\n\nfunc (s *Server) channelzMetric() *channelz.ServerInternalMetric {\n\treturn &channelz.ServerInternalMetric{\n\t\tCallsStarted:             atomic.LoadInt64(&s.czData.callsStarted),\n\t\tCallsSucceeded:           atomic.LoadInt64(&s.czData.callsSucceeded),\n\t\tCallsFailed:              atomic.LoadInt64(&s.czData.callsFailed),\n\t\tLastCallStartedTimestamp: time.Unix(0, atomic.LoadInt64(&s.czData.lastCallStartedTime)),\n\t}\n}\n\nfunc (s *Server) incrCallsStarted() {\n\tatomic.AddInt64(&s.czData.callsStarted, 1)\n\tatomic.StoreInt64(&s.czData.lastCallStartedTime, time.Now().UnixNano())\n}\n\nfunc (s *Server) incrCallsSucceeded() {\n\tatomic.AddInt64(&s.czData.callsSucceeded, 1)\n}\n\nfunc (s *Server) incrCallsFailed() {\n\tatomic.AddInt64(&s.czData.callsFailed, 1)\n}\n\nfunc (s *Server) sendResponse(ctx context.Context, t transport.ServerTransport, stream *transport.Stream, msg any, cp Compressor, opts *transport.Options, comp encoding.Compressor) error {\n\tdata, err := encode(s.getCodec(stream.ContentSubtype()), msg)\n\tif err != nil {\n\t\tchannelz.Error(logger, s.channelzID, \"grpc: server failed to encode response: \", err)\n\t\treturn err\n\t}\n\tcompData, err := compress(data, cp, comp)\n\tif err != nil {\n\t\tchannelz.Error(logger, s.channelzID, \"grpc: server failed to compress response: \", err)\n\t\treturn err\n\t}\n\thdr, payload := msgHeader(data, compData)\n\t// TODO(dfawley): should we be checking len(data) instead?\n\tif len(payload) > s.opts.maxSendMessageSize {\n\t\treturn status.Errorf(codes.ResourceExhausted, \"grpc: trying to send message larger than max (%d vs. %d)\", len(payload), s.opts.maxSendMessageSize)\n\t}\n\terr = t.Write(stream, hdr, payload, opts)\n\tif err == nil {\n\t\tfor _, sh := range s.opts.statsHandlers {\n\t\t\tsh.HandleRPC(ctx, outPayload(false, msg, data, payload, time.Now()))\n\t\t}\n\t}\n\treturn err\n}\n\n// chainUnaryServerInterceptors chains all unary server interceptors into one.\nfunc chainUnaryServerInterceptors(s *Server) {\n\t// Prepend opts.unaryInt to the chaining interceptors if it exists, since unaryInt will\n\t// be executed before any other chained interceptors.\n\tinterceptors := s.opts.chainUnaryInts\n\tif s.opts.unaryInt != nil {\n\t\tinterceptors = append([]UnaryServerInterceptor{s.opts.unaryInt}, s.opts.chainUnaryInts...)\n\t}\n\n\tvar chainedInt UnaryServerInterceptor\n\tif len(interceptors) == 0 {\n\t\tchainedInt = nil\n\t} else if len(interceptors) == 1 {\n\t\tchainedInt = interceptors[0]\n\t} else {\n\t\tchainedInt = chainUnaryInterceptors(interceptors)\n\t}\n\n\ts.opts.unaryInt = chainedInt\n}\n\nfunc chainUnaryInterceptors(interceptors []UnaryServerInterceptor) UnaryServerInterceptor {\n\treturn func(ctx context.Context, req any, info *UnaryServerInfo, handler UnaryHandler) (any, error) {\n\t\treturn interceptors[0](ctx, req, info, getChainUnaryHandler(interceptors, 0, info, handler))\n\t}\n}\n\nfunc getChainUnaryHandler(interceptors []UnaryServerInterceptor, curr int, info *UnaryServerInfo, finalHandler UnaryHandler) UnaryHandler {\n\tif curr == len(interceptors)-1 {\n\t\treturn finalHandler\n\t}\n\treturn func(ctx context.Context, req any) (any, error) {\n\t\treturn interceptors[curr+1](ctx, req, info, getChainUnaryHandler(interceptors, curr+1, info, finalHandler))\n\t}\n}\n\nfunc (s *Server) processUnaryRPC(ctx context.Context, t transport.ServerTransport, stream *transport.Stream, info *serviceInfo, md *MethodDesc, trInfo *traceInfo) (err error) {\n\tshs := s.opts.statsHandlers\n\tif len(shs) != 0 || trInfo != nil || channelz.IsOn() {\n\t\tif channelz.IsOn() {\n\t\t\ts.incrCallsStarted()\n\t\t}\n\t\tvar statsBegin *stats.Begin\n\t\tfor _, sh := range shs {\n\t\t\tbeginTime := time.Now()\n\t\t\tstatsBegin = &stats.Begin{\n\t\t\t\tBeginTime:      beginTime,\n\t\t\t\tIsClientStream: false,\n\t\t\t\tIsServerStream: false,\n\t\t\t}\n\t\t\tsh.HandleRPC(ctx, statsBegin)\n\t\t}\n\t\tif trInfo != nil {\n\t\t\ttrInfo.tr.LazyLog(&trInfo.firstLine, false)\n\t\t}\n\t\t// The deferred error handling for tracing, stats handler and channelz are\n\t\t// combined into one function to reduce stack usage -- a defer takes ~56-64\n\t\t// bytes on the stack, so overflowing the stack will require a stack\n\t\t// re-allocation, which is expensive.\n\t\t//\n\t\t// To maintain behavior similar to separate deferred statements, statements\n\t\t// should be executed in the reverse order. That is, tracing first, stats\n\t\t// handler second, and channelz last. Note that panics *within* defers will\n\t\t// lead to different behavior, but that's an acceptable compromise; that\n\t\t// would be undefined behavior territory anyway.\n\t\tdefer func() {\n\t\t\tif trInfo != nil {\n\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\ttrInfo.tr.LazyLog(&fmtStringer{\"%v\", []any{err}}, true)\n\t\t\t\t\ttrInfo.tr.SetError()\n\t\t\t\t}\n\t\t\t\ttrInfo.tr.Finish()\n\t\t\t}\n\n\t\t\tfor _, sh := range shs {\n\t\t\t\tend := &stats.End{\n\t\t\t\t\tBeginTime: statsBegin.BeginTime,\n\t\t\t\t\tEndTime:   time.Now(),\n\t\t\t\t}\n\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\tend.Error = toRPCErr(err)\n\t\t\t\t}\n\t\t\t\tsh.HandleRPC(ctx, end)\n\t\t\t}\n\n\t\t\tif channelz.IsOn() {\n\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\ts.incrCallsFailed()\n\t\t\t\t} else {\n\t\t\t\t\ts.incrCallsSucceeded()\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n\tvar binlogs []binarylog.MethodLogger\n\tif ml := binarylog.GetMethodLogger(stream.Method()); ml != nil {\n\t\tbinlogs = append(binlogs, ml)\n\t}\n\tif s.opts.binaryLogger != nil {\n\t\tif ml := s.opts.binaryLogger.GetMethodLogger(stream.Method()); ml != nil {\n\t\t\tbinlogs = append(binlogs, ml)\n\t\t}\n\t}\n\tif len(binlogs) != 0 {\n\t\tmd, _ := metadata.FromIncomingContext(ctx)\n\t\tlogEntry := &binarylog.ClientHeader{\n\t\t\tHeader:     md,\n\t\t\tMethodName: stream.Method(),\n\t\t\tPeerAddr:   nil,\n\t\t}\n\t\tif deadline, ok := ctx.Deadline(); ok {\n\t\t\tlogEntry.Timeout = time.Until(deadline)\n\t\t\tif logEntry.Timeout < 0 {\n\t\t\t\tlogEntry.Timeout = 0\n\t\t\t}\n\t\t}\n\t\tif a := md[\":authority\"]; len(a) > 0 {\n\t\t\tlogEntry.Authority = a[0]\n\t\t}\n\t\tif peer, ok := peer.FromContext(ctx); ok {\n\t\t\tlogEntry.PeerAddr = peer.Addr\n\t\t}\n\t\tfor _, binlog := range binlogs {\n\t\t\tbinlog.Log(ctx, logEntry)\n\t\t}\n\t}\n\n\t// comp and cp are used for compression.  decomp and dc are used for\n\t// decompression.  If comp and decomp are both set, they are the same;\n\t// however they are kept separate to ensure that at most one of the\n\t// compressor/decompressor variable pairs are set for use later.\n\tvar comp, decomp encoding.Compressor\n\tvar cp Compressor\n\tvar dc Decompressor\n\tvar sendCompressorName string\n\n\t// If dc is set and matches the stream's compression, use it.  Otherwise, try\n\t// to find a matching registered compressor for decomp.\n\tif rc := stream.RecvCompress(); s.opts.dc != nil && s.opts.dc.Type() == rc {\n\t\tdc = s.opts.dc\n\t} else if rc != \"\" && rc != encoding.Identity {\n\t\tdecomp = encoding.GetCompressor(rc)\n\t\tif decomp == nil {\n\t\t\tst := status.Newf(codes.Unimplemented, \"grpc: Decompressor is not installed for grpc-encoding %q\", rc)\n\t\t\tt.WriteStatus(stream, st)\n\t\t\treturn st.Err()\n\t\t}\n\t}\n\n\t// If cp is set, use it.  Otherwise, attempt to compress the response using\n\t// the incoming message compression method.\n\t//\n\t// NOTE: this needs to be ahead of all handling, https://github.com/grpc/grpc-go/issues/686.\n\tif s.opts.cp != nil {\n\t\tcp = s.opts.cp\n\t\tsendCompressorName = cp.Type()\n\t} else if rc := stream.RecvCompress(); rc != \"\" && rc != encoding.Identity {\n\t\t// Legacy compressor not specified; attempt to respond with same encoding.\n\t\tcomp = encoding.GetCompressor(rc)\n\t\tif comp != nil {\n\t\t\tsendCompressorName = comp.Name()\n\t\t}\n\t}\n\n\tif sendCompressorName != \"\" {\n\t\tif err := stream.SetSendCompress(sendCompressorName); err != nil {\n\t\t\treturn status.Errorf(codes.Internal, \"grpc: failed to set send compressor: %v\", err)\n\t\t}\n\t}\n\n\tvar payInfo *payloadInfo\n\tif len(shs) != 0 || len(binlogs) != 0 {\n\t\tpayInfo = &payloadInfo{}\n\t}\n\td, err := recvAndDecompress(&parser{r: stream, recvBufferPool: s.opts.recvBufferPool}, stream, dc, s.opts.maxReceiveMessageSize, payInfo, decomp)\n\tif err != nil {\n\t\tif e := t.WriteStatus(stream, status.Convert(err)); e != nil {\n\t\t\tchannelz.Warningf(logger, s.channelzID, \"grpc: Server.processUnaryRPC failed to write status: %v\", e)\n\t\t}\n\t\treturn err\n\t}\n\tif channelz.IsOn() {\n\t\tt.IncrMsgRecv()\n\t}\n\tdf := func(v any) error {\n\t\tif err := s.getCodec(stream.ContentSubtype()).Unmarshal(d, v); err != nil {\n\t\t\treturn status.Errorf(codes.Internal, \"grpc: error unmarshalling request: %v\", err)\n\t\t}\n\t\tfor _, sh := range shs {\n\t\t\tsh.HandleRPC(ctx, &stats.InPayload{\n\t\t\t\tRecvTime:         time.Now(),\n\t\t\t\tPayload:          v,\n\t\t\t\tLength:           len(d),\n\t\t\t\tWireLength:       payInfo.compressedLength + headerLen,\n\t\t\t\tCompressedLength: payInfo.compressedLength,\n\t\t\t\tData:             d,\n\t\t\t})\n\t\t}\n\t\tif len(binlogs) != 0 {\n\t\t\tcm := &binarylog.ClientMessage{\n\t\t\t\tMessage: d,\n\t\t\t}\n\t\t\tfor _, binlog := range binlogs {\n\t\t\t\tbinlog.Log(ctx, cm)\n\t\t\t}\n\t\t}\n\t\tif trInfo != nil {\n\t\t\ttrInfo.tr.LazyLog(&payload{sent: false, msg: v}, true)\n\t\t}\n\t\treturn nil\n\t}\n\tctx = NewContextWithServerTransportStream(ctx, stream)\n\treply, appErr := md.Handler(info.serviceImpl, ctx, df, s.opts.unaryInt)\n\tif appErr != nil {\n\t\tappStatus, ok := status.FromError(appErr)\n\t\tif !ok {\n\t\t\t// Convert non-status application error to a status error with code\n\t\t\t// Unknown, but handle context errors specifically.\n\t\t\tappStatus = status.FromContextError(appErr)\n\t\t\tappErr = appStatus.Err()\n\t\t}\n\t\tif trInfo != nil {\n\t\t\ttrInfo.tr.LazyLog(stringer(appStatus.Message()), true)\n\t\t\ttrInfo.tr.SetError()\n\t\t}\n\t\tif e := t.WriteStatus(stream, appStatus); e != nil {\n\t\t\tchannelz.Warningf(logger, s.channelzID, \"grpc: Server.processUnaryRPC failed to write status: %v\", e)\n\t\t}\n\t\tif len(binlogs) != 0 {\n\t\t\tif h, _ := stream.Header(); h.Len() > 0 {\n\t\t\t\t// Only log serverHeader if there was header. Otherwise it can\n\t\t\t\t// be trailer only.\n\t\t\t\tsh := &binarylog.ServerHeader{\n\t\t\t\t\tHeader: h,\n\t\t\t\t}\n\t\t\t\tfor _, binlog := range binlogs {\n\t\t\t\t\tbinlog.Log(ctx, sh)\n\t\t\t\t}\n\t\t\t}\n\t\t\tst := &binarylog.ServerTrailer{\n\t\t\t\tTrailer: stream.Trailer(),\n\t\t\t\tErr:     appErr,\n\t\t\t}\n\t\t\tfor _, binlog := range binlogs {\n\t\t\t\tbinlog.Log(ctx, st)\n\t\t\t}\n\t\t}\n\t\treturn appErr\n\t}\n\tif trInfo != nil {\n\t\ttrInfo.tr.LazyLog(stringer(\"OK\"), false)\n\t}\n\topts := &transport.Options{Last: true}\n\n\t// Server handler could have set new compressor by calling SetSendCompressor.\n\t// In case it is set, we need to use it for compressing outbound message.\n\tif stream.SendCompress() != sendCompressorName {\n\t\tcomp = encoding.GetCompressor(stream.SendCompress())\n\t}\n\tif err := s.sendResponse(ctx, t, stream, reply, cp, opts, comp); err != nil {\n\t\tif err == io.EOF {\n\t\t\t// The entire stream is done (for unary RPC only).\n\t\t\treturn err\n\t\t}\n\t\tif sts, ok := status.FromError(err); ok {\n\t\t\tif e := t.WriteStatus(stream, sts); e != nil {\n\t\t\t\tchannelz.Warningf(logger, s.channelzID, \"grpc: Server.processUnaryRPC failed to write status: %v\", e)\n\t\t\t}\n\t\t} else {\n\t\t\tswitch st := err.(type) {\n\t\t\tcase transport.ConnectionError:\n\t\t\t\t// Nothing to do here.\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"grpc: Unexpected error (%T) from sendResponse: %v\", st, st))\n\t\t\t}\n\t\t}\n\t\tif len(binlogs) != 0 {\n\t\t\th, _ := stream.Header()\n\t\t\tsh := &binarylog.ServerHeader{\n\t\t\t\tHeader: h,\n\t\t\t}\n\t\t\tst := &binarylog.ServerTrailer{\n\t\t\t\tTrailer: stream.Trailer(),\n\t\t\t\tErr:     appErr,\n\t\t\t}\n\t\t\tfor _, binlog := range binlogs {\n\t\t\t\tbinlog.Log(ctx, sh)\n\t\t\t\tbinlog.Log(ctx, st)\n\t\t\t}\n\t\t}\n\t\treturn err\n\t}\n\tif len(binlogs) != 0 {\n\t\th, _ := stream.Header()\n\t\tsh := &binarylog.ServerHeader{\n\t\t\tHeader: h,\n\t\t}\n\t\tsm := &binarylog.ServerMessage{\n\t\t\tMessage: reply,\n\t\t}\n\t\tfor _, binlog := range binlogs {\n\t\t\tbinlog.Log(ctx, sh)\n\t\t\tbinlog.Log(ctx, sm)\n\t\t}\n\t}\n\tif channelz.IsOn() {\n\t\tt.IncrMsgSent()\n\t}\n\tif trInfo != nil {\n\t\ttrInfo.tr.LazyLog(&payload{sent: true, msg: reply}, true)\n\t}\n\t// TODO: Should we be logging if writing status failed here, like above?\n\t// Should the logging be in WriteStatus?  Should we ignore the WriteStatus\n\t// error or allow the stats handler to see it?\n\tif len(binlogs) != 0 {\n\t\tst := &binarylog.ServerTrailer{\n\t\t\tTrailer: stream.Trailer(),\n\t\t\tErr:     appErr,\n\t\t}\n\t\tfor _, binlog := range binlogs {\n\t\t\tbinlog.Log(ctx, st)\n\t\t}\n\t}\n\treturn t.WriteStatus(stream, statusOK)\n}\n\n// chainStreamServerInterceptors chains all stream server interceptors into one.\nfunc chainStreamServerInterceptors(s *Server) {\n\t// Prepend opts.streamInt to the chaining interceptors if it exists, since streamInt will\n\t// be executed before any other chained interceptors.\n\tinterceptors := s.opts.chainStreamInts\n\tif s.opts.streamInt != nil {\n\t\tinterceptors = append([]StreamServerInterceptor{s.opts.streamInt}, s.opts.chainStreamInts...)\n\t}\n\n\tvar chainedInt StreamServerInterceptor\n\tif len(interceptors) == 0 {\n\t\tchainedInt = nil\n\t} else if len(interceptors) == 1 {\n\t\tchainedInt = interceptors[0]\n\t} else {\n\t\tchainedInt = chainStreamInterceptors(interceptors)\n\t}\n\n\ts.opts.streamInt = chainedInt\n}\n\nfunc chainStreamInterceptors(interceptors []StreamServerInterceptor) StreamServerInterceptor {\n\treturn func(srv any, ss ServerStream, info *StreamServerInfo, handler StreamHandler) error {\n\t\treturn interceptors[0](srv, ss, info, getChainStreamHandler(interceptors, 0, info, handler))\n\t}\n}\n\nfunc getChainStreamHandler(interceptors []StreamServerInterceptor, curr int, info *StreamServerInfo, finalHandler StreamHandler) StreamHandler {\n\tif curr == len(interceptors)-1 {\n\t\treturn finalHandler\n\t}\n\treturn func(srv any, stream ServerStream) error {\n\t\treturn interceptors[curr+1](srv, stream, info, getChainStreamHandler(interceptors, curr+1, info, finalHandler))\n\t}\n}\n\nfunc (s *Server) processStreamingRPC(ctx context.Context, t transport.ServerTransport, stream *transport.Stream, info *serviceInfo, sd *StreamDesc, trInfo *traceInfo) (err error) {\n\tif channelz.IsOn() {\n\t\ts.incrCallsStarted()\n\t}\n\tshs := s.opts.statsHandlers\n\tvar statsBegin *stats.Begin\n\tif len(shs) != 0 {\n\t\tbeginTime := time.Now()\n\t\tstatsBegin = &stats.Begin{\n\t\t\tBeginTime:      beginTime,\n\t\t\tIsClientStream: sd.ClientStreams,\n\t\t\tIsServerStream: sd.ServerStreams,\n\t\t}\n\t\tfor _, sh := range shs {\n\t\t\tsh.HandleRPC(ctx, statsBegin)\n\t\t}\n\t}\n\tctx = NewContextWithServerTransportStream(ctx, stream)\n\tss := &serverStream{\n\t\tctx:                   ctx,\n\t\tt:                     t,\n\t\ts:                     stream,\n\t\tp:                     &parser{r: stream, recvBufferPool: s.opts.recvBufferPool},\n\t\tcodec:                 s.getCodec(stream.ContentSubtype()),\n\t\tmaxReceiveMessageSize: s.opts.maxReceiveMessageSize,\n\t\tmaxSendMessageSize:    s.opts.maxSendMessageSize,\n\t\ttrInfo:                trInfo,\n\t\tstatsHandler:          shs,\n\t}\n\n\tif len(shs) != 0 || trInfo != nil || channelz.IsOn() {\n\t\t// See comment in processUnaryRPC on defers.\n\t\tdefer func() {\n\t\t\tif trInfo != nil {\n\t\t\t\tss.mu.Lock()\n\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\tss.trInfo.tr.LazyLog(&fmtStringer{\"%v\", []any{err}}, true)\n\t\t\t\t\tss.trInfo.tr.SetError()\n\t\t\t\t}\n\t\t\t\tss.trInfo.tr.Finish()\n\t\t\t\tss.trInfo.tr = nil\n\t\t\t\tss.mu.Unlock()\n\t\t\t}\n\n\t\t\tif len(shs) != 0 {\n\t\t\t\tend := &stats.End{\n\t\t\t\t\tBeginTime: statsBegin.BeginTime,\n\t\t\t\t\tEndTime:   time.Now(),\n\t\t\t\t}\n\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\tend.Error = toRPCErr(err)\n\t\t\t\t}\n\t\t\t\tfor _, sh := range shs {\n\t\t\t\t\tsh.HandleRPC(ctx, end)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif channelz.IsOn() {\n\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\ts.incrCallsFailed()\n\t\t\t\t} else {\n\t\t\t\t\ts.incrCallsSucceeded()\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n\n\tif ml := binarylog.GetMethodLogger(stream.Method()); ml != nil {\n\t\tss.binlogs = append(ss.binlogs, ml)\n\t}\n\tif s.opts.binaryLogger != nil {\n\t\tif ml := s.opts.binaryLogger.GetMethodLogger(stream.Method()); ml != nil {\n\t\t\tss.binlogs = append(ss.binlogs, ml)\n\t\t}\n\t}\n\tif len(ss.binlogs) != 0 {\n\t\tmd, _ := metadata.FromIncomingContext(ctx)\n\t\tlogEntry := &binarylog.ClientHeader{\n\t\t\tHeader:     md,\n\t\t\tMethodName: stream.Method(),\n\t\t\tPeerAddr:   nil,\n\t\t}\n\t\tif deadline, ok := ctx.Deadline(); ok {\n\t\t\tlogEntry.Timeout = time.Until(deadline)\n\t\t\tif logEntry.Timeout < 0 {\n\t\t\t\tlogEntry.Timeout = 0\n\t\t\t}\n\t\t}\n\t\tif a := md[\":authority\"]; len(a) > 0 {\n\t\t\tlogEntry.Authority = a[0]\n\t\t}\n\t\tif peer, ok := peer.FromContext(ss.Context()); ok {\n\t\t\tlogEntry.PeerAddr = peer.Addr\n\t\t}\n\t\tfor _, binlog := range ss.binlogs {\n\t\t\tbinlog.Log(ctx, logEntry)\n\t\t}\n\t}\n\n\t// If dc is set and matches the stream's compression, use it.  Otherwise, try\n\t// to find a matching registered compressor for decomp.\n\tif rc := stream.RecvCompress(); s.opts.dc != nil && s.opts.dc.Type() == rc {\n\t\tss.dc = s.opts.dc\n\t} else if rc != \"\" && rc != encoding.Identity {\n\t\tss.decomp = encoding.GetCompressor(rc)\n\t\tif ss.decomp == nil {\n\t\t\tst := status.Newf(codes.Unimplemented, \"grpc: Decompressor is not installed for grpc-encoding %q\", rc)\n\t\t\tt.WriteStatus(ss.s, st)\n\t\t\treturn st.Err()\n\t\t}\n\t}\n\n\t// If cp is set, use it.  Otherwise, attempt to compress the response using\n\t// the incoming message compression method.\n\t//\n\t// NOTE: this needs to be ahead of all handling, https://github.com/grpc/grpc-go/issues/686.\n\tif s.opts.cp != nil {\n\t\tss.cp = s.opts.cp\n\t\tss.sendCompressorName = s.opts.cp.Type()\n\t} else if rc := stream.RecvCompress(); rc != \"\" && rc != encoding.Identity {\n\t\t// Legacy compressor not specified; attempt to respond with same encoding.\n\t\tss.comp = encoding.GetCompressor(rc)\n\t\tif ss.comp != nil {\n\t\t\tss.sendCompressorName = rc\n\t\t}\n\t}\n\n\tif ss.sendCompressorName != \"\" {\n\t\tif err := stream.SetSendCompress(ss.sendCompressorName); err != nil {\n\t\t\treturn status.Errorf(codes.Internal, \"grpc: failed to set send compressor: %v\", err)\n\t\t}\n\t}\n\n\tss.ctx = newContextWithRPCInfo(ss.ctx, false, ss.codec, ss.cp, ss.comp)\n\n\tif trInfo != nil {\n\t\ttrInfo.tr.LazyLog(&trInfo.firstLine, false)\n\t}\n\tvar appErr error\n\tvar server any\n\tif info != nil {\n\t\tserver = info.serviceImpl\n\t}\n\tif s.opts.streamInt == nil {\n\t\tappErr = sd.Handler(server, ss)\n\t} else {\n\t\tinfo := &StreamServerInfo{\n\t\t\tFullMethod:     stream.Method(),\n\t\t\tIsClientStream: sd.ClientStreams,\n\t\t\tIsServerStream: sd.ServerStreams,\n\t\t}\n\t\tappErr = s.opts.streamInt(server, ss, info, sd.Handler)\n\t}\n\tif appErr != nil {\n\t\tappStatus, ok := status.FromError(appErr)\n\t\tif !ok {\n\t\t\t// Convert non-status application error to a status error with code\n\t\t\t// Unknown, but handle context errors specifically.\n\t\t\tappStatus = status.FromContextError(appErr)\n\t\t\tappErr = appStatus.Err()\n\t\t}\n\t\tif trInfo != nil {\n\t\t\tss.mu.Lock()\n\t\t\tss.trInfo.tr.LazyLog(stringer(appStatus.Message()), true)\n\t\t\tss.trInfo.tr.SetError()\n\t\t\tss.mu.Unlock()\n\t\t}\n\t\tif len(ss.binlogs) != 0 {\n\t\t\tst := &binarylog.ServerTrailer{\n\t\t\t\tTrailer: ss.s.Trailer(),\n\t\t\t\tErr:     appErr,\n\t\t\t}\n\t\t\tfor _, binlog := range ss.binlogs {\n\t\t\t\tbinlog.Log(ctx, st)\n\t\t\t}\n\t\t}\n\t\tt.WriteStatus(ss.s, appStatus)\n\t\t// TODO: Should we log an error from WriteStatus here and below?\n\t\treturn appErr\n\t}\n\tif trInfo != nil {\n\t\tss.mu.Lock()\n\t\tss.trInfo.tr.LazyLog(stringer(\"OK\"), false)\n\t\tss.mu.Unlock()\n\t}\n\tif len(ss.binlogs) != 0 {\n\t\tst := &binarylog.ServerTrailer{\n\t\t\tTrailer: ss.s.Trailer(),\n\t\t\tErr:     appErr,\n\t\t}\n\t\tfor _, binlog := range ss.binlogs {\n\t\t\tbinlog.Log(ctx, st)\n\t\t}\n\t}\n\treturn t.WriteStatus(ss.s, statusOK)\n}\n\nfunc (s *Server) handleStream(t transport.ServerTransport, stream *transport.Stream) {\n\tctx := stream.Context()\n\tvar ti *traceInfo\n\tif EnableTracing {\n\t\ttr := trace.New(\"grpc.Recv.\"+methodFamily(stream.Method()), stream.Method())\n\t\tctx = trace.NewContext(ctx, tr)\n\t\tti = &traceInfo{\n\t\t\ttr: tr,\n\t\t\tfirstLine: firstLine{\n\t\t\t\tclient:     false,\n\t\t\t\tremoteAddr: t.RemoteAddr(),\n\t\t\t},\n\t\t}\n\t\tif dl, ok := ctx.Deadline(); ok {\n\t\t\tti.firstLine.deadline = time.Until(dl)\n\t\t}\n\t}\n\n\tsm := stream.Method()\n\tif sm != \"\" && sm[0] == '/' {\n\t\tsm = sm[1:]\n\t}\n\tpos := strings.LastIndex(sm, \"/\")\n\tif pos == -1 {\n\t\tif ti != nil {\n\t\t\tti.tr.LazyLog(&fmtStringer{\"Malformed method name %q\", []any{sm}}, true)\n\t\t\tti.tr.SetError()\n\t\t}\n\t\terrDesc := fmt.Sprintf(\"malformed method name: %q\", stream.Method())\n\t\tif err := t.WriteStatus(stream, status.New(codes.Unimplemented, errDesc)); err != nil {\n\t\t\tif ti != nil {\n\t\t\t\tti.tr.LazyLog(&fmtStringer{\"%v\", []any{err}}, true)\n\t\t\t\tti.tr.SetError()\n\t\t\t}\n\t\t\tchannelz.Warningf(logger, s.channelzID, \"grpc: Server.handleStream failed to write status: %v\", err)\n\t\t}\n\t\tif ti != nil {\n\t\t\tti.tr.Finish()\n\t\t}\n\t\treturn\n\t}\n\tservice := sm[:pos]\n\tmethod := sm[pos+1:]\n\n\tsrv, knownService := s.services[service]\n\tif knownService {\n\t\tif md, ok := srv.methods[method]; ok {\n\t\t\ts.processUnaryRPC(ctx, t, stream, srv, md, ti)\n\t\t\treturn\n\t\t}\n\t\tif sd, ok := srv.streams[method]; ok {\n\t\t\ts.processStreamingRPC(ctx, t, stream, srv, sd, ti)\n\t\t\treturn\n\t\t}\n\t}\n\t// Unknown service, or known server unknown method.\n\tif unknownDesc := s.opts.unknownStreamDesc; unknownDesc != nil {\n\t\ts.processStreamingRPC(ctx, t, stream, nil, unknownDesc, ti)\n\t\treturn\n\t}\n\tvar errDesc string\n\tif !knownService {\n\t\terrDesc = fmt.Sprintf(\"unknown service %v\", service)\n\t} else {\n\t\terrDesc = fmt.Sprintf(\"unknown method %v for service %v\", method, service)\n\t}\n\tif ti != nil {\n\t\tti.tr.LazyPrintf(\"%s\", errDesc)\n\t\tti.tr.SetError()\n\t}\n\tif err := t.WriteStatus(stream, status.New(codes.Unimplemented, errDesc)); err != nil {\n\t\tif ti != nil {\n\t\t\tti.tr.LazyLog(&fmtStringer{\"%v\", []any{err}}, true)\n\t\t\tti.tr.SetError()\n\t\t}\n\t\tchannelz.Warningf(logger, s.channelzID, \"grpc: Server.handleStream failed to write status: %v\", err)\n\t}\n\tif ti != nil {\n\t\tti.tr.Finish()\n\t}\n}\n\n// The key to save ServerTransportStream in the context.\ntype streamKey struct{}\n\n// NewContextWithServerTransportStream creates a new context from ctx and\n// attaches stream to it.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc NewContextWithServerTransportStream(ctx context.Context, stream ServerTransportStream) context.Context {\n\treturn context.WithValue(ctx, streamKey{}, stream)\n}\n\n// ServerTransportStream is a minimal interface that a transport stream must\n// implement. This can be used to mock an actual transport stream for tests of\n// handler code that use, for example, grpc.SetHeader (which requires some\n// stream to be in context).\n//\n// See also NewContextWithServerTransportStream.\n//\n// # Experimental\n//\n// Notice: This type is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype ServerTransportStream interface {\n\tMethod() string\n\tSetHeader(md metadata.MD) error\n\tSendHeader(md metadata.MD) error\n\tSetTrailer(md metadata.MD) error\n}\n\n// ServerTransportStreamFromContext returns the ServerTransportStream saved in\n// ctx. Returns nil if the given context has no stream associated with it\n// (which implies it is not an RPC invocation context).\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ServerTransportStreamFromContext(ctx context.Context) ServerTransportStream {\n\ts, _ := ctx.Value(streamKey{}).(ServerTransportStream)\n\treturn s\n}\n\n// Stop stops the gRPC server. It immediately closes all open\n// connections and listeners.\n// It cancels all active RPCs on the server side and the corresponding\n// pending RPCs on the client side will get notified by connection\n// errors.\nfunc (s *Server) Stop() {\n\ts.quit.Fire()\n\n\tdefer func() {\n\t\ts.serveWG.Wait()\n\t\ts.done.Fire()\n\t}()\n\n\ts.channelzRemoveOnce.Do(func() { channelz.RemoveEntry(s.channelzID) })\n\n\ts.mu.Lock()\n\tlisteners := s.lis\n\ts.lis = nil\n\tconns := s.conns\n\ts.conns = nil\n\t// interrupt GracefulStop if Stop and GracefulStop are called concurrently.\n\ts.cv.Broadcast()\n\ts.mu.Unlock()\n\n\tfor lis := range listeners {\n\t\tlis.Close()\n\t}\n\tfor _, cs := range conns {\n\t\tfor st := range cs {\n\t\t\tst.Close(errors.New(\"Server.Stop called\"))\n\t\t}\n\t}\n\tif s.opts.numServerWorkers > 0 {\n\t\ts.stopServerWorkers()\n\t}\n\n\ts.mu.Lock()\n\tif s.events != nil {\n\t\ts.events.Finish()\n\t\ts.events = nil\n\t}\n\ts.mu.Unlock()\n}\n\n// GracefulStop stops the gRPC server gracefully. It stops the server from\n// accepting new connections and RPCs and blocks until all the pending RPCs are\n// finished.\nfunc (s *Server) GracefulStop() {\n\ts.quit.Fire()\n\tdefer s.done.Fire()\n\n\ts.channelzRemoveOnce.Do(func() { channelz.RemoveEntry(s.channelzID) })\n\ts.mu.Lock()\n\tif s.conns == nil {\n\t\ts.mu.Unlock()\n\t\treturn\n\t}\n\n\tfor lis := range s.lis {\n\t\tlis.Close()\n\t}\n\ts.lis = nil\n\tif !s.drain {\n\t\tfor _, conns := range s.conns {\n\t\t\tfor st := range conns {\n\t\t\t\tst.Drain(\"graceful_stop\")\n\t\t\t}\n\t\t}\n\t\ts.drain = true\n\t}\n\n\t// Wait for serving threads to be ready to exit.  Only then can we be sure no\n\t// new conns will be created.\n\ts.mu.Unlock()\n\ts.serveWG.Wait()\n\ts.mu.Lock()\n\n\tfor len(s.conns) != 0 {\n\t\ts.cv.Wait()\n\t}\n\ts.conns = nil\n\tif s.events != nil {\n\t\ts.events.Finish()\n\t\ts.events = nil\n\t}\n\ts.mu.Unlock()\n}\n\n// contentSubtype must be lowercase\n// cannot return nil\nfunc (s *Server) getCodec(contentSubtype string) baseCodec {\n\tif s.opts.codec != nil {\n\t\treturn s.opts.codec\n\t}\n\tif contentSubtype == \"\" {\n\t\treturn encoding.GetCodec(proto.Name)\n\t}\n\tcodec := encoding.GetCodec(contentSubtype)\n\tif codec == nil {\n\t\treturn encoding.GetCodec(proto.Name)\n\t}\n\treturn codec\n}\n\n// SetHeader sets the header metadata to be sent from the server to the client.\n// The context provided must be the context passed to the server's handler.\n//\n// Streaming RPCs should prefer the SetHeader method of the ServerStream.\n//\n// When called multiple times, all the provided metadata will be merged.  All\n// the metadata will be sent out when one of the following happens:\n//\n//   - grpc.SendHeader is called, or for streaming handlers, stream.SendHeader.\n//   - The first response message is sent.  For unary handlers, this occurs when\n//     the handler returns; for streaming handlers, this can happen when stream's\n//     SendMsg method is called.\n//   - An RPC status is sent out (error or success).  This occurs when the handler\n//     returns.\n//\n// SetHeader will fail if called after any of the events above.\n//\n// The error returned is compatible with the status package.  However, the\n// status code will often not match the RPC status as seen by the client\n// application, and therefore, should not be relied upon for this purpose.\nfunc SetHeader(ctx context.Context, md metadata.MD) error {\n\tif md.Len() == 0 {\n\t\treturn nil\n\t}\n\tstream := ServerTransportStreamFromContext(ctx)\n\tif stream == nil {\n\t\treturn status.Errorf(codes.Internal, \"grpc: failed to fetch the stream from the context %v\", ctx)\n\t}\n\treturn stream.SetHeader(md)\n}\n\n// SendHeader sends header metadata. It may be called at most once, and may not\n// be called after any event that causes headers to be sent (see SetHeader for\n// a complete list).  The provided md and headers set by SetHeader() will be\n// sent.\n//\n// The error returned is compatible with the status package.  However, the\n// status code will often not match the RPC status as seen by the client\n// application, and therefore, should not be relied upon for this purpose.\nfunc SendHeader(ctx context.Context, md metadata.MD) error {\n\tstream := ServerTransportStreamFromContext(ctx)\n\tif stream == nil {\n\t\treturn status.Errorf(codes.Internal, \"grpc: failed to fetch the stream from the context %v\", ctx)\n\t}\n\tif err := stream.SendHeader(md); err != nil {\n\t\treturn toRPCErr(err)\n\t}\n\treturn nil\n}\n\n// SetSendCompressor sets a compressor for outbound messages from the server.\n// It must not be called after any event that causes headers to be sent\n// (see ServerStream.SetHeader for the complete list). Provided compressor is\n// used when below conditions are met:\n//\n//   - compressor is registered via encoding.RegisterCompressor\n//   - compressor name must exist in the client advertised compressor names\n//     sent in grpc-accept-encoding header. Use ClientSupportedCompressors to\n//     get client supported compressor names.\n//\n// The context provided must be the context passed to the server's handler.\n// It must be noted that compressor name encoding.Identity disables the\n// outbound compression.\n// By default, server messages will be sent using the same compressor with\n// which request messages were sent.\n//\n// It is not safe to call SetSendCompressor concurrently with SendHeader and\n// SendMsg.\n//\n// # Experimental\n//\n// Notice: This function is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc SetSendCompressor(ctx context.Context, name string) error {\n\tstream, ok := ServerTransportStreamFromContext(ctx).(*transport.Stream)\n\tif !ok || stream == nil {\n\t\treturn fmt.Errorf(\"failed to fetch the stream from the given context\")\n\t}\n\n\tif err := validateSendCompressor(name, stream.ClientAdvertisedCompressors()); err != nil {\n\t\treturn fmt.Errorf(\"unable to set send compressor: %w\", err)\n\t}\n\n\treturn stream.SetSendCompress(name)\n}\n\n// ClientSupportedCompressors returns compressor names advertised by the client\n// via grpc-accept-encoding header.\n//\n// The context provided must be the context passed to the server's handler.\n//\n// # Experimental\n//\n// Notice: This function is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc ClientSupportedCompressors(ctx context.Context) ([]string, error) {\n\tstream, ok := ServerTransportStreamFromContext(ctx).(*transport.Stream)\n\tif !ok || stream == nil {\n\t\treturn nil, fmt.Errorf(\"failed to fetch the stream from the given context %v\", ctx)\n\t}\n\n\treturn strings.Split(stream.ClientAdvertisedCompressors(), \",\"), nil\n}\n\n// SetTrailer sets the trailer metadata that will be sent when an RPC returns.\n// When called more than once, all the provided metadata will be merged.\n//\n// The error returned is compatible with the status package.  However, the\n// status code will often not match the RPC status as seen by the client\n// application, and therefore, should not be relied upon for this purpose.\nfunc SetTrailer(ctx context.Context, md metadata.MD) error {\n\tif md.Len() == 0 {\n\t\treturn nil\n\t}\n\tstream := ServerTransportStreamFromContext(ctx)\n\tif stream == nil {\n\t\treturn status.Errorf(codes.Internal, \"grpc: failed to fetch the stream from the context %v\", ctx)\n\t}\n\treturn stream.SetTrailer(md)\n}\n\n// Method returns the method string for the server context.  The returned\n// string is in the format of \"/service/method\".\nfunc Method(ctx context.Context) (string, bool) {\n\ts := ServerTransportStreamFromContext(ctx)\n\tif s == nil {\n\t\treturn \"\", false\n\t}\n\treturn s.Method(), true\n}\n\ntype channelzServer struct {\n\ts *Server\n}\n\nfunc (c *channelzServer) ChannelzMetric() *channelz.ServerInternalMetric {\n\treturn c.s.channelzMetric()\n}\n\n// validateSendCompressor returns an error when given compressor name cannot be\n// handled by the server or the client based on the advertised compressors.\nfunc validateSendCompressor(name, clientCompressors string) error {\n\tif name == encoding.Identity {\n\t\treturn nil\n\t}\n\n\tif !grpcutil.IsCompressorNameRegistered(name) {\n\t\treturn fmt.Errorf(\"compressor not registered %q\", name)\n\t}\n\n\tfor _, c := range strings.Split(clientCompressors, \",\") {\n\t\tif c == name {\n\t\t\treturn nil // found match\n\t\t}\n\t}\n\treturn fmt.Errorf(\"client does not support compressor %q\", name)\n}\n\n// atomicSemaphore implements a blocking, counting semaphore. acquire should be\n// called synchronously; release may be called asynchronously.\ntype atomicSemaphore struct {\n\tn    atomic.Int64\n\twait chan struct{}\n}\n\nfunc (q *atomicSemaphore) acquire() {\n\tif q.n.Add(-1) < 0 {\n\t\t// We ran out of quota.  Block until a release happens.\n\t\t<-q.wait\n\t}\n}\n\nfunc (q *atomicSemaphore) release() {\n\t// N.B. the \"<= 0\" check below should allow for this to work with multiple\n\t// concurrent calls to acquire, but also note that with synchronous calls to\n\t// acquire, as our system does, n will never be less than -1.  There are\n\t// fairness issues (queuing) to consider if this was to be generalized.\n\tif q.n.Add(1) <= 0 {\n\t\t// An acquire was waiting on us.  Unblock it.\n\t\tq.wait <- struct{}{}\n\t}\n}\n\nfunc newHandlerQuota(n uint32) *atomicSemaphore {\n\ta := &atomicSemaphore{wait: make(chan struct{}, 1)}\n\ta.n.Store(int64(n))\n\treturn a\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/service_config.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/internal\"\n\tinternalserviceconfig \"google.golang.org/grpc/internal/serviceconfig\"\n\t\"google.golang.org/grpc/serviceconfig\"\n)\n\nconst maxInt = int(^uint(0) >> 1)\n\n// MethodConfig defines the configuration recommended by the service providers for a\n// particular method.\n//\n// Deprecated: Users should not use this struct. Service config should be received\n// through name resolver, as specified here\n// https://github.com/grpc/grpc/blob/master/doc/service_config.md\ntype MethodConfig = internalserviceconfig.MethodConfig\n\ntype lbConfig struct {\n\tname string\n\tcfg  serviceconfig.LoadBalancingConfig\n}\n\n// ServiceConfig is provided by the service provider and contains parameters for how\n// clients that connect to the service should behave.\n//\n// Deprecated: Users should not use this struct. Service config should be received\n// through name resolver, as specified here\n// https://github.com/grpc/grpc/blob/master/doc/service_config.md\ntype ServiceConfig struct {\n\tserviceconfig.Config\n\n\t// LB is the load balancer the service providers recommends.  This is\n\t// deprecated; lbConfigs is preferred.  If lbConfig and LB are both present,\n\t// lbConfig will be used.\n\tLB *string\n\n\t// lbConfig is the service config's load balancing configuration.  If\n\t// lbConfig and LB are both present, lbConfig will be used.\n\tlbConfig *lbConfig\n\n\t// Methods contains a map for the methods in this service.  If there is an\n\t// exact match for a method (i.e. /service/method) in the map, use the\n\t// corresponding MethodConfig.  If there's no exact match, look for the\n\t// default config for the service (/service/) and use the corresponding\n\t// MethodConfig if it exists.  Otherwise, the method has no MethodConfig to\n\t// use.\n\tMethods map[string]MethodConfig\n\n\t// If a retryThrottlingPolicy is provided, gRPC will automatically throttle\n\t// retry attempts and hedged RPCs when the client’s ratio of failures to\n\t// successes exceeds a threshold.\n\t//\n\t// For each server name, the gRPC client will maintain a token_count which is\n\t// initially set to maxTokens, and can take values between 0 and maxTokens.\n\t//\n\t// Every outgoing RPC (regardless of service or method invoked) will change\n\t// token_count as follows:\n\t//\n\t//   - Every failed RPC will decrement the token_count by 1.\n\t//   - Every successful RPC will increment the token_count by tokenRatio.\n\t//\n\t// If token_count is less than or equal to maxTokens / 2, then RPCs will not\n\t// be retried and hedged RPCs will not be sent.\n\tretryThrottling *retryThrottlingPolicy\n\t// healthCheckConfig must be set as one of the requirement to enable LB channel\n\t// health check.\n\thealthCheckConfig *healthCheckConfig\n\t// rawJSONString stores service config json string that get parsed into\n\t// this service config struct.\n\trawJSONString string\n}\n\n// healthCheckConfig defines the go-native version of the LB channel health check config.\ntype healthCheckConfig struct {\n\t// serviceName is the service name to use in the health-checking request.\n\tServiceName string\n}\n\ntype jsonRetryPolicy struct {\n\tMaxAttempts          int\n\tInitialBackoff       internalserviceconfig.Duration\n\tMaxBackoff           internalserviceconfig.Duration\n\tBackoffMultiplier    float64\n\tRetryableStatusCodes []codes.Code\n}\n\n// retryThrottlingPolicy defines the go-native version of the retry throttling\n// policy defined by the service config here:\n// https://github.com/grpc/proposal/blob/master/A6-client-retries.md#integration-with-service-config\ntype retryThrottlingPolicy struct {\n\t// The number of tokens starts at maxTokens. The token_count will always be\n\t// between 0 and maxTokens.\n\t//\n\t// This field is required and must be greater than zero.\n\tMaxTokens float64\n\t// The amount of tokens to add on each successful RPC. Typically this will\n\t// be some number between 0 and 1, e.g., 0.1.\n\t//\n\t// This field is required and must be greater than zero. Up to 3 decimal\n\t// places are supported.\n\tTokenRatio float64\n}\n\ntype jsonName struct {\n\tService string\n\tMethod  string\n}\n\nvar (\n\terrDuplicatedName             = errors.New(\"duplicated name\")\n\terrEmptyServiceNonEmptyMethod = errors.New(\"cannot combine empty 'service' and non-empty 'method'\")\n)\n\nfunc (j jsonName) generatePath() (string, error) {\n\tif j.Service == \"\" {\n\t\tif j.Method != \"\" {\n\t\t\treturn \"\", errEmptyServiceNonEmptyMethod\n\t\t}\n\t\treturn \"\", nil\n\t}\n\tres := \"/\" + j.Service + \"/\"\n\tif j.Method != \"\" {\n\t\tres += j.Method\n\t}\n\treturn res, nil\n}\n\n// TODO(lyuxuan): delete this struct after cleaning up old service config implementation.\ntype jsonMC struct {\n\tName                    *[]jsonName\n\tWaitForReady            *bool\n\tTimeout                 *internalserviceconfig.Duration\n\tMaxRequestMessageBytes  *int64\n\tMaxResponseMessageBytes *int64\n\tRetryPolicy             *jsonRetryPolicy\n}\n\n// TODO(lyuxuan): delete this struct after cleaning up old service config implementation.\ntype jsonSC struct {\n\tLoadBalancingPolicy *string\n\tLoadBalancingConfig *internalserviceconfig.BalancerConfig\n\tMethodConfig        *[]jsonMC\n\tRetryThrottling     *retryThrottlingPolicy\n\tHealthCheckConfig   *healthCheckConfig\n}\n\nfunc init() {\n\tinternal.ParseServiceConfig = parseServiceConfig\n}\nfunc parseServiceConfig(js string) *serviceconfig.ParseResult {\n\tif len(js) == 0 {\n\t\treturn &serviceconfig.ParseResult{Err: fmt.Errorf(\"no JSON service config provided\")}\n\t}\n\tvar rsc jsonSC\n\terr := json.Unmarshal([]byte(js), &rsc)\n\tif err != nil {\n\t\tlogger.Warningf(\"grpc: unmarshaling service config %s: %v\", js, err)\n\t\treturn &serviceconfig.ParseResult{Err: err}\n\t}\n\tsc := ServiceConfig{\n\t\tLB:                rsc.LoadBalancingPolicy,\n\t\tMethods:           make(map[string]MethodConfig),\n\t\tretryThrottling:   rsc.RetryThrottling,\n\t\thealthCheckConfig: rsc.HealthCheckConfig,\n\t\trawJSONString:     js,\n\t}\n\tif c := rsc.LoadBalancingConfig; c != nil {\n\t\tsc.lbConfig = &lbConfig{\n\t\t\tname: c.Name,\n\t\t\tcfg:  c.Config,\n\t\t}\n\t}\n\n\tif rsc.MethodConfig == nil {\n\t\treturn &serviceconfig.ParseResult{Config: &sc}\n\t}\n\n\tpaths := map[string]struct{}{}\n\tfor _, m := range *rsc.MethodConfig {\n\t\tif m.Name == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tmc := MethodConfig{\n\t\t\tWaitForReady: m.WaitForReady,\n\t\t\tTimeout:      (*time.Duration)(m.Timeout),\n\t\t}\n\t\tif mc.RetryPolicy, err = convertRetryPolicy(m.RetryPolicy); err != nil {\n\t\t\tlogger.Warningf(\"grpc: unmarshaling service config %s: %v\", js, err)\n\t\t\treturn &serviceconfig.ParseResult{Err: err}\n\t\t}\n\t\tif m.MaxRequestMessageBytes != nil {\n\t\t\tif *m.MaxRequestMessageBytes > int64(maxInt) {\n\t\t\t\tmc.MaxReqSize = newInt(maxInt)\n\t\t\t} else {\n\t\t\t\tmc.MaxReqSize = newInt(int(*m.MaxRequestMessageBytes))\n\t\t\t}\n\t\t}\n\t\tif m.MaxResponseMessageBytes != nil {\n\t\t\tif *m.MaxResponseMessageBytes > int64(maxInt) {\n\t\t\t\tmc.MaxRespSize = newInt(maxInt)\n\t\t\t} else {\n\t\t\t\tmc.MaxRespSize = newInt(int(*m.MaxResponseMessageBytes))\n\t\t\t}\n\t\t}\n\t\tfor i, n := range *m.Name {\n\t\t\tpath, err := n.generatePath()\n\t\t\tif err != nil {\n\t\t\t\tlogger.Warningf(\"grpc: error unmarshaling service config %s due to methodConfig[%d]: %v\", js, i, err)\n\t\t\t\treturn &serviceconfig.ParseResult{Err: err}\n\t\t\t}\n\n\t\t\tif _, ok := paths[path]; ok {\n\t\t\t\terr = errDuplicatedName\n\t\t\t\tlogger.Warningf(\"grpc: error unmarshaling service config %s due to methodConfig[%d]: %v\", js, i, err)\n\t\t\t\treturn &serviceconfig.ParseResult{Err: err}\n\t\t\t}\n\t\t\tpaths[path] = struct{}{}\n\t\t\tsc.Methods[path] = mc\n\t\t}\n\t}\n\n\tif sc.retryThrottling != nil {\n\t\tif mt := sc.retryThrottling.MaxTokens; mt <= 0 || mt > 1000 {\n\t\t\treturn &serviceconfig.ParseResult{Err: fmt.Errorf(\"invalid retry throttling config: maxTokens (%v) out of range (0, 1000]\", mt)}\n\t\t}\n\t\tif tr := sc.retryThrottling.TokenRatio; tr <= 0 {\n\t\t\treturn &serviceconfig.ParseResult{Err: fmt.Errorf(\"invalid retry throttling config: tokenRatio (%v) may not be negative\", tr)}\n\t\t}\n\t}\n\treturn &serviceconfig.ParseResult{Config: &sc}\n}\n\nfunc convertRetryPolicy(jrp *jsonRetryPolicy) (p *internalserviceconfig.RetryPolicy, err error) {\n\tif jrp == nil {\n\t\treturn nil, nil\n\t}\n\n\tif jrp.MaxAttempts <= 1 ||\n\t\tjrp.InitialBackoff <= 0 ||\n\t\tjrp.MaxBackoff <= 0 ||\n\t\tjrp.BackoffMultiplier <= 0 ||\n\t\tlen(jrp.RetryableStatusCodes) == 0 {\n\t\tlogger.Warningf(\"grpc: ignoring retry policy %v due to illegal configuration\", jrp)\n\t\treturn nil, nil\n\t}\n\n\trp := &internalserviceconfig.RetryPolicy{\n\t\tMaxAttempts:          jrp.MaxAttempts,\n\t\tInitialBackoff:       time.Duration(jrp.InitialBackoff),\n\t\tMaxBackoff:           time.Duration(jrp.MaxBackoff),\n\t\tBackoffMultiplier:    jrp.BackoffMultiplier,\n\t\tRetryableStatusCodes: make(map[codes.Code]bool),\n\t}\n\tif rp.MaxAttempts > 5 {\n\t\t// TODO(retry): Make the max maxAttempts configurable.\n\t\trp.MaxAttempts = 5\n\t}\n\tfor _, code := range jrp.RetryableStatusCodes {\n\t\trp.RetryableStatusCodes[code] = true\n\t}\n\treturn rp, 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 getMaxSize(mcMax, doptMax *int, defaultVal int) *int {\n\tif mcMax == nil && doptMax == nil {\n\t\treturn &defaultVal\n\t}\n\tif mcMax != nil && doptMax != nil {\n\t\treturn min(mcMax, doptMax)\n\t}\n\tif mcMax != nil {\n\t\treturn mcMax\n\t}\n\treturn doptMax\n}\n\nfunc newInt(b int) *int {\n\treturn &b\n}\n\nfunc init() {\n\tinternal.EqualServiceConfigForTesting = equalServiceConfig\n}\n\n// equalServiceConfig compares two configs. The rawJSONString field is ignored,\n// because they may diff in white spaces.\n//\n// If any of them is NOT *ServiceConfig, return false.\nfunc equalServiceConfig(a, b serviceconfig.Config) bool {\n\tif a == nil && b == nil {\n\t\treturn true\n\t}\n\taa, ok := a.(*ServiceConfig)\n\tif !ok {\n\t\treturn false\n\t}\n\tbb, ok := b.(*ServiceConfig)\n\tif !ok {\n\t\treturn false\n\t}\n\taaRaw := aa.rawJSONString\n\taa.rawJSONString = \"\"\n\tbbRaw := bb.rawJSONString\n\tbb.rawJSONString = \"\"\n\tdefer func() {\n\t\taa.rawJSONString = aaRaw\n\t\tbb.rawJSONString = bbRaw\n\t}()\n\t// Using reflect.DeepEqual instead of cmp.Equal because many balancer\n\t// configs are unexported, and cmp.Equal cannot compare unexported fields\n\t// from unexported structs.\n\treturn reflect.DeepEqual(aa, bb)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/serviceconfig/serviceconfig.go",
    "content": "/*\n *\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package serviceconfig defines types and methods for operating on gRPC\n// service configs.\n//\n// # Experimental\n//\n// Notice: This package is EXPERIMENTAL and may be changed or removed in a\n// later release.\npackage serviceconfig\n\n// Config represents an opaque data structure holding a service config.\ntype Config interface {\n\tisServiceConfig()\n}\n\n// LoadBalancingConfig represents an opaque data structure holding a load\n// balancing config.\ntype LoadBalancingConfig interface {\n\tisLoadBalancingConfig()\n}\n\n// ParseResult contains a service config or an error.  Exactly one must be\n// non-nil.\ntype ParseResult struct {\n\tConfig Config\n\tErr    error\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/shared_buffer_pool.go",
    "content": "/*\n *\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport \"sync\"\n\n// SharedBufferPool is a pool of buffers that can be shared, resulting in\n// decreased memory allocation. Currently, in gRPC-go, it is only utilized\n// for parsing incoming messages.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\ntype SharedBufferPool interface {\n\t// Get returns a buffer with specified length from the pool.\n\t//\n\t// The returned byte slice may be not zero initialized.\n\tGet(length int) []byte\n\n\t// Put returns a buffer to the pool.\n\tPut(*[]byte)\n}\n\n// NewSharedBufferPool creates a simple SharedBufferPool with buckets\n// of different sizes to optimize memory usage. This prevents the pool from\n// wasting large amounts of memory, even when handling messages of varying sizes.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\nfunc NewSharedBufferPool() SharedBufferPool {\n\treturn &simpleSharedBufferPool{\n\t\tpools: [poolArraySize]simpleSharedBufferChildPool{\n\t\t\tnewBytesPool(level0PoolMaxSize),\n\t\t\tnewBytesPool(level1PoolMaxSize),\n\t\t\tnewBytesPool(level2PoolMaxSize),\n\t\t\tnewBytesPool(level3PoolMaxSize),\n\t\t\tnewBytesPool(level4PoolMaxSize),\n\t\t\tnewBytesPool(0),\n\t\t},\n\t}\n}\n\n// simpleSharedBufferPool is a simple implementation of SharedBufferPool.\ntype simpleSharedBufferPool struct {\n\tpools [poolArraySize]simpleSharedBufferChildPool\n}\n\nfunc (p *simpleSharedBufferPool) Get(size int) []byte {\n\treturn p.pools[p.poolIdx(size)].Get(size)\n}\n\nfunc (p *simpleSharedBufferPool) Put(bs *[]byte) {\n\tp.pools[p.poolIdx(cap(*bs))].Put(bs)\n}\n\nfunc (p *simpleSharedBufferPool) poolIdx(size int) int {\n\tswitch {\n\tcase size <= level0PoolMaxSize:\n\t\treturn level0PoolIdx\n\tcase size <= level1PoolMaxSize:\n\t\treturn level1PoolIdx\n\tcase size <= level2PoolMaxSize:\n\t\treturn level2PoolIdx\n\tcase size <= level3PoolMaxSize:\n\t\treturn level3PoolIdx\n\tcase size <= level4PoolMaxSize:\n\t\treturn level4PoolIdx\n\tdefault:\n\t\treturn levelMaxPoolIdx\n\t}\n}\n\nconst (\n\tlevel0PoolMaxSize = 16                     //  16  B\n\tlevel1PoolMaxSize = level0PoolMaxSize * 16 // 256  B\n\tlevel2PoolMaxSize = level1PoolMaxSize * 16 //   4 KB\n\tlevel3PoolMaxSize = level2PoolMaxSize * 16 //  64 KB\n\tlevel4PoolMaxSize = level3PoolMaxSize * 16 //   1 MB\n)\n\nconst (\n\tlevel0PoolIdx = iota\n\tlevel1PoolIdx\n\tlevel2PoolIdx\n\tlevel3PoolIdx\n\tlevel4PoolIdx\n\tlevelMaxPoolIdx\n\tpoolArraySize\n)\n\ntype simpleSharedBufferChildPool interface {\n\tGet(size int) []byte\n\tPut(any)\n}\n\ntype bufferPool struct {\n\tsync.Pool\n\n\tdefaultSize int\n}\n\nfunc (p *bufferPool) Get(size int) []byte {\n\tbs := p.Pool.Get().(*[]byte)\n\n\tif cap(*bs) < size {\n\t\tp.Pool.Put(bs)\n\n\t\treturn make([]byte, size)\n\t}\n\n\treturn (*bs)[:size]\n}\n\nfunc newBytesPool(size int) simpleSharedBufferChildPool {\n\treturn &bufferPool{\n\t\tPool: sync.Pool{\n\t\t\tNew: func() any {\n\t\t\t\tbs := make([]byte, size)\n\t\t\t\treturn &bs\n\t\t\t},\n\t\t},\n\t\tdefaultSize: size,\n\t}\n}\n\n// nopBufferPool is a buffer pool just makes new buffer without pooling.\ntype nopBufferPool struct {\n}\n\nfunc (nopBufferPool) Get(length int) []byte {\n\treturn make([]byte, length)\n}\n\nfunc (nopBufferPool) Put(*[]byte) {\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/stats/handlers.go",
    "content": "/*\n *\n * Copyright 2016 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage stats\n\nimport (\n\t\"context\"\n\t\"net\"\n)\n\n// ConnTagInfo defines the relevant information needed by connection context tagger.\ntype ConnTagInfo struct {\n\t// RemoteAddr is the remote address of the corresponding connection.\n\tRemoteAddr net.Addr\n\t// LocalAddr is the local address of the corresponding connection.\n\tLocalAddr net.Addr\n}\n\n// RPCTagInfo defines the relevant information needed by RPC context tagger.\ntype RPCTagInfo struct {\n\t// FullMethodName is the RPC method in the format of /package.service/method.\n\tFullMethodName string\n\t// FailFast indicates if this RPC is failfast.\n\t// This field is only valid on client side, it's always false on server side.\n\tFailFast bool\n}\n\n// Handler defines the interface for the related stats handling (e.g., RPCs, connections).\ntype Handler interface {\n\t// TagRPC can attach some information to the given context.\n\t// The context used for the rest lifetime of the RPC will be derived from\n\t// the returned context.\n\tTagRPC(context.Context, *RPCTagInfo) context.Context\n\t// HandleRPC processes the RPC stats.\n\tHandleRPC(context.Context, RPCStats)\n\n\t// TagConn can attach some information to the given context.\n\t// The returned context will be used for stats handling.\n\t// For conn stats handling, the context used in HandleConn for this\n\t// connection will be derived from the context returned.\n\t// For RPC stats handling,\n\t//  - On server side, the context used in HandleRPC for all RPCs on this\n\t// connection will be derived from the context returned.\n\t//  - On client side, the context is not derived from the context returned.\n\tTagConn(context.Context, *ConnTagInfo) context.Context\n\t// HandleConn processes the Conn stats.\n\tHandleConn(context.Context, ConnStats)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/stats/stats.go",
    "content": "/*\n *\n * Copyright 2016 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package stats is for collecting and reporting various network and RPC stats.\n// This package is for monitoring purpose only. All fields are read-only.\n// All APIs are experimental.\npackage stats // import \"google.golang.org/grpc/stats\"\n\nimport (\n\t\"context\"\n\t\"net\"\n\t\"time\"\n\n\t\"google.golang.org/grpc/metadata\"\n)\n\n// RPCStats contains stats information about RPCs.\ntype RPCStats interface {\n\tisRPCStats()\n\t// IsClient returns true if this RPCStats is from client side.\n\tIsClient() bool\n}\n\n// Begin contains stats when an RPC attempt begins.\n// FailFast is only valid if this Begin is from client side.\ntype Begin struct {\n\t// Client is true if this Begin is from client side.\n\tClient bool\n\t// BeginTime is the time when the RPC attempt begins.\n\tBeginTime time.Time\n\t// FailFast indicates if this RPC is failfast.\n\tFailFast bool\n\t// IsClientStream indicates whether the RPC is a client streaming RPC.\n\tIsClientStream bool\n\t// IsServerStream indicates whether the RPC is a server streaming RPC.\n\tIsServerStream bool\n\t// IsTransparentRetryAttempt indicates whether this attempt was initiated\n\t// due to transparently retrying a previous attempt.\n\tIsTransparentRetryAttempt bool\n}\n\n// IsClient indicates if the stats information is from client side.\nfunc (s *Begin) IsClient() bool { return s.Client }\n\nfunc (s *Begin) isRPCStats() {}\n\n// PickerUpdated indicates that the LB policy provided a new picker while the\n// RPC was waiting for one.\ntype PickerUpdated struct{}\n\n// IsClient indicates if the stats information is from client side. Only Client\n// Side interfaces with a Picker, thus always returns true.\nfunc (*PickerUpdated) IsClient() bool { return true }\n\nfunc (*PickerUpdated) isRPCStats() {}\n\n// InPayload contains the information for an incoming payload.\ntype InPayload struct {\n\t// Client is true if this InPayload is from client side.\n\tClient bool\n\t// Payload is the payload with original type.\n\tPayload any\n\t// Data is the serialized message payload.\n\tData []byte\n\n\t// Length is the size of the uncompressed payload data. Does not include any\n\t// framing (gRPC or HTTP/2).\n\tLength int\n\t// CompressedLength is the size of the compressed payload data. Does not\n\t// include any framing (gRPC or HTTP/2). Same as Length if compression not\n\t// enabled.\n\tCompressedLength int\n\t// WireLength is the size of the compressed payload data plus gRPC framing.\n\t// Does not include HTTP/2 framing.\n\tWireLength int\n\n\t// RecvTime is the time when the payload is received.\n\tRecvTime time.Time\n}\n\n// IsClient indicates if the stats information is from client side.\nfunc (s *InPayload) IsClient() bool { return s.Client }\n\nfunc (s *InPayload) isRPCStats() {}\n\n// InHeader contains stats when a header is received.\ntype InHeader struct {\n\t// Client is true if this InHeader is from client side.\n\tClient bool\n\t// WireLength is the wire length of header.\n\tWireLength int\n\t// Compression is the compression algorithm used for the RPC.\n\tCompression string\n\t// Header contains the header metadata received.\n\tHeader metadata.MD\n\n\t// The following fields are valid only if Client is false.\n\t// FullMethod is the full RPC method string, i.e., /package.service/method.\n\tFullMethod string\n\t// RemoteAddr is the remote address of the corresponding connection.\n\tRemoteAddr net.Addr\n\t// LocalAddr is the local address of the corresponding connection.\n\tLocalAddr net.Addr\n}\n\n// IsClient indicates if the stats information is from client side.\nfunc (s *InHeader) IsClient() bool { return s.Client }\n\nfunc (s *InHeader) isRPCStats() {}\n\n// InTrailer contains stats when a trailer is received.\ntype InTrailer struct {\n\t// Client is true if this InTrailer is from client side.\n\tClient bool\n\t// WireLength is the wire length of trailer.\n\tWireLength int\n\t// Trailer contains the trailer metadata received from the server. This\n\t// field is only valid if this InTrailer is from the client side.\n\tTrailer metadata.MD\n}\n\n// IsClient indicates if the stats information is from client side.\nfunc (s *InTrailer) IsClient() bool { return s.Client }\n\nfunc (s *InTrailer) isRPCStats() {}\n\n// OutPayload contains the information for an outgoing payload.\ntype OutPayload struct {\n\t// Client is true if this OutPayload is from client side.\n\tClient bool\n\t// Payload is the payload with original type.\n\tPayload any\n\t// Data is the serialized message payload.\n\tData []byte\n\t// Length is the size of the uncompressed payload data. Does not include any\n\t// framing (gRPC or HTTP/2).\n\tLength int\n\t// CompressedLength is the size of the compressed payload data. Does not\n\t// include any framing (gRPC or HTTP/2). Same as Length if compression not\n\t// enabled.\n\tCompressedLength int\n\t// WireLength is the size of the compressed payload data plus gRPC framing.\n\t// Does not include HTTP/2 framing.\n\tWireLength int\n\t// SentTime is the time when the payload is sent.\n\tSentTime time.Time\n}\n\n// IsClient indicates if this stats information is from client side.\nfunc (s *OutPayload) IsClient() bool { return s.Client }\n\nfunc (s *OutPayload) isRPCStats() {}\n\n// OutHeader contains stats when a header is sent.\ntype OutHeader struct {\n\t// Client is true if this OutHeader is from client side.\n\tClient bool\n\t// Compression is the compression algorithm used for the RPC.\n\tCompression string\n\t// Header contains the header metadata sent.\n\tHeader metadata.MD\n\n\t// The following fields are valid only if Client is true.\n\t// FullMethod is the full RPC method string, i.e., /package.service/method.\n\tFullMethod string\n\t// RemoteAddr is the remote address of the corresponding connection.\n\tRemoteAddr net.Addr\n\t// LocalAddr is the local address of the corresponding connection.\n\tLocalAddr net.Addr\n}\n\n// IsClient indicates if this stats information is from client side.\nfunc (s *OutHeader) IsClient() bool { return s.Client }\n\nfunc (s *OutHeader) isRPCStats() {}\n\n// OutTrailer contains stats when a trailer is sent.\ntype OutTrailer struct {\n\t// Client is true if this OutTrailer is from client side.\n\tClient bool\n\t// WireLength is the wire length of trailer.\n\t//\n\t// Deprecated: This field is never set. The length is not known when this message is\n\t// emitted because the trailer fields are compressed with hpack after that.\n\tWireLength int\n\t// Trailer contains the trailer metadata sent to the client. This\n\t// field is only valid if this OutTrailer is from the server side.\n\tTrailer metadata.MD\n}\n\n// IsClient indicates if this stats information is from client side.\nfunc (s *OutTrailer) IsClient() bool { return s.Client }\n\nfunc (s *OutTrailer) isRPCStats() {}\n\n// End contains stats when an RPC ends.\ntype End struct {\n\t// Client is true if this End is from client side.\n\tClient bool\n\t// BeginTime is the time when the RPC began.\n\tBeginTime time.Time\n\t// EndTime is the time when the RPC ends.\n\tEndTime time.Time\n\t// Trailer contains the trailer metadata received from the server. This\n\t// field is only valid if this End is from the client side.\n\t// Deprecated: use Trailer in InTrailer instead.\n\tTrailer metadata.MD\n\t// Error is the error the RPC ended with. It is an error generated from\n\t// status.Status and can be converted back to status.Status using\n\t// status.FromError if non-nil.\n\tError error\n}\n\n// IsClient indicates if this is from client side.\nfunc (s *End) IsClient() bool { return s.Client }\n\nfunc (s *End) isRPCStats() {}\n\n// ConnStats contains stats information about connections.\ntype ConnStats interface {\n\tisConnStats()\n\t// IsClient returns true if this ConnStats is from client side.\n\tIsClient() bool\n}\n\n// ConnBegin contains the stats of a connection when it is established.\ntype ConnBegin struct {\n\t// Client is true if this ConnBegin is from client side.\n\tClient bool\n}\n\n// IsClient indicates if this is from client side.\nfunc (s *ConnBegin) IsClient() bool { return s.Client }\n\nfunc (s *ConnBegin) isConnStats() {}\n\n// ConnEnd contains the stats of a connection when it ends.\ntype ConnEnd struct {\n\t// Client is true if this ConnEnd is from client side.\n\tClient bool\n}\n\n// IsClient indicates if this is from client side.\nfunc (s *ConnEnd) IsClient() bool { return s.Client }\n\nfunc (s *ConnEnd) isConnStats() {}\n\ntype incomingTagsKey struct{}\ntype outgoingTagsKey struct{}\n\n// SetTags attaches stats tagging data to the context, which will be sent in\n// the outgoing RPC with the header grpc-tags-bin.  Subsequent calls to\n// SetTags will overwrite the values from earlier calls.\n//\n// NOTE: this is provided only for backward compatibility with existing clients\n// and will likely be removed in an upcoming release.  New uses should transmit\n// this type of data using metadata with a different, non-reserved (i.e. does\n// not begin with \"grpc-\") header name.\nfunc SetTags(ctx context.Context, b []byte) context.Context {\n\treturn context.WithValue(ctx, outgoingTagsKey{}, b)\n}\n\n// Tags returns the tags from the context for the inbound RPC.\n//\n// NOTE: this is provided only for backward compatibility with existing clients\n// and will likely be removed in an upcoming release.  New uses should transmit\n// this type of data using metadata with a different, non-reserved (i.e. does\n// not begin with \"grpc-\") header name.\nfunc Tags(ctx context.Context) []byte {\n\tb, _ := ctx.Value(incomingTagsKey{}).([]byte)\n\treturn b\n}\n\n// SetIncomingTags attaches stats tagging data to the context, to be read by\n// the application (not sent in outgoing RPCs).\n//\n// This is intended for gRPC-internal use ONLY.\nfunc SetIncomingTags(ctx context.Context, b []byte) context.Context {\n\treturn context.WithValue(ctx, incomingTagsKey{}, b)\n}\n\n// OutgoingTags returns the tags from the context for the outbound RPC.\n//\n// This is intended for gRPC-internal use ONLY.\nfunc OutgoingTags(ctx context.Context) []byte {\n\tb, _ := ctx.Value(outgoingTagsKey{}).([]byte)\n\treturn b\n}\n\ntype incomingTraceKey struct{}\ntype outgoingTraceKey struct{}\n\n// SetTrace attaches stats tagging data to the context, which will be sent in\n// the outgoing RPC with the header grpc-trace-bin.  Subsequent calls to\n// SetTrace will overwrite the values from earlier calls.\n//\n// NOTE: this is provided only for backward compatibility with existing clients\n// and will likely be removed in an upcoming release.  New uses should transmit\n// this type of data using metadata with a different, non-reserved (i.e. does\n// not begin with \"grpc-\") header name.\nfunc SetTrace(ctx context.Context, b []byte) context.Context {\n\treturn context.WithValue(ctx, outgoingTraceKey{}, b)\n}\n\n// Trace returns the trace from the context for the inbound RPC.\n//\n// NOTE: this is provided only for backward compatibility with existing clients\n// and will likely be removed in an upcoming release.  New uses should transmit\n// this type of data using metadata with a different, non-reserved (i.e. does\n// not begin with \"grpc-\") header name.\nfunc Trace(ctx context.Context) []byte {\n\tb, _ := ctx.Value(incomingTraceKey{}).([]byte)\n\treturn b\n}\n\n// SetIncomingTrace attaches stats tagging data to the context, to be read by\n// the application (not sent in outgoing RPCs).  It is intended for\n// gRPC-internal use.\nfunc SetIncomingTrace(ctx context.Context, b []byte) context.Context {\n\treturn context.WithValue(ctx, incomingTraceKey{}, b)\n}\n\n// OutgoingTrace returns the trace from the context for the outbound RPC.  It is\n// intended for gRPC-internal use.\nfunc OutgoingTrace(ctx context.Context) []byte {\n\tb, _ := ctx.Value(outgoingTraceKey{}).([]byte)\n\treturn b\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/status/status.go",
    "content": "/*\n *\n * Copyright 2017 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package status implements errors returned by gRPC.  These errors are\n// serialized and transmitted on the wire between server and client, and allow\n// for additional data to be transmitted via the Details field in the status\n// proto.  gRPC service handlers should return an error created by this\n// package, and gRPC clients should expect a corresponding error to be\n// returned from the RPC call.\n//\n// This package upholds the invariants that a non-nil error may not\n// contain an OK code, and an OK code must result in a nil error.\npackage status\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\n\tspb \"google.golang.org/genproto/googleapis/rpc/status\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/internal/status\"\n)\n\n// Status references google.golang.org/grpc/internal/status. It represents an\n// RPC status code, message, and details.  It is immutable and should be\n// created with New, Newf, or FromProto.\n// https://godoc.org/google.golang.org/grpc/internal/status\ntype Status = status.Status\n\n// New returns a Status representing c and msg.\nfunc New(c codes.Code, msg string) *Status {\n\treturn status.New(c, msg)\n}\n\n// Newf returns New(c, fmt.Sprintf(format, a...)).\nfunc Newf(c codes.Code, format string, a ...any) *Status {\n\treturn New(c, fmt.Sprintf(format, a...))\n}\n\n// Error returns an error representing c and msg.  If c is OK, returns nil.\nfunc Error(c codes.Code, msg string) error {\n\treturn New(c, msg).Err()\n}\n\n// Errorf returns Error(c, fmt.Sprintf(format, a...)).\nfunc Errorf(c codes.Code, format string, a ...any) error {\n\treturn Error(c, fmt.Sprintf(format, a...))\n}\n\n// ErrorProto returns an error representing s.  If s.Code is OK, returns nil.\nfunc ErrorProto(s *spb.Status) error {\n\treturn FromProto(s).Err()\n}\n\n// FromProto returns a Status representing s.\nfunc FromProto(s *spb.Status) *Status {\n\treturn status.FromProto(s)\n}\n\n// FromError returns a Status representation of err.\n//\n//   - If err was produced by this package or implements the method `GRPCStatus()\n//     *Status` and `GRPCStatus()` does not return nil, or if err wraps a type\n//     satisfying this, the Status from `GRPCStatus()` is returned.  For wrapped\n//     errors, the message returned contains the entire err.Error() text and not\n//     just the wrapped status. In that case, ok is true.\n//\n//   - If err is nil, a Status is returned with codes.OK and no message, and ok\n//     is true.\n//\n//   - If err implements the method `GRPCStatus() *Status` and `GRPCStatus()`\n//     returns nil (which maps to Codes.OK), or if err wraps a type\n//     satisfying this, a Status is returned with codes.Unknown and err's\n//     Error() message, and ok is false.\n//\n//   - Otherwise, err is an error not compatible with this package.  In this\n//     case, a Status is returned with codes.Unknown and err's Error() message,\n//     and ok is false.\nfunc FromError(err error) (s *Status, ok bool) {\n\tif err == nil {\n\t\treturn nil, true\n\t}\n\ttype grpcstatus interface{ GRPCStatus() *Status }\n\tif gs, ok := err.(grpcstatus); ok {\n\t\tgrpcStatus := gs.GRPCStatus()\n\t\tif grpcStatus == nil {\n\t\t\t// Error has status nil, which maps to codes.OK. There\n\t\t\t// is no sensible behavior for this, so we turn it into\n\t\t\t// an error with codes.Unknown and discard the existing\n\t\t\t// status.\n\t\t\treturn New(codes.Unknown, err.Error()), false\n\t\t}\n\t\treturn grpcStatus, true\n\t}\n\tvar gs grpcstatus\n\tif errors.As(err, &gs) {\n\t\tgrpcStatus := gs.GRPCStatus()\n\t\tif grpcStatus == nil {\n\t\t\t// Error wraps an error that has status nil, which maps\n\t\t\t// to codes.OK.  There is no sensible behavior for this,\n\t\t\t// so we turn it into an error with codes.Unknown and\n\t\t\t// discard the existing status.\n\t\t\treturn New(codes.Unknown, err.Error()), false\n\t\t}\n\t\tp := grpcStatus.Proto()\n\t\tp.Message = err.Error()\n\t\treturn status.FromProto(p), true\n\t}\n\treturn New(codes.Unknown, err.Error()), false\n}\n\n// Convert is a convenience function which removes the need to handle the\n// boolean return value from FromError.\nfunc Convert(err error) *Status {\n\ts, _ := FromError(err)\n\treturn s\n}\n\n// Code returns the Code of the error if it is a Status error or if it wraps a\n// Status error. If that is not the case, it returns codes.OK if err is nil, or\n// codes.Unknown otherwise.\nfunc Code(err error) codes.Code {\n\t// Don't use FromError to avoid allocation of OK status.\n\tif err == nil {\n\t\treturn codes.OK\n\t}\n\n\treturn Convert(err).Code()\n}\n\n// FromContextError converts a context error or wrapped context error into a\n// Status.  It returns a Status with codes.OK if err is nil, or a Status with\n// codes.Unknown if err is non-nil and not a context error.\nfunc FromContextError(err error) *Status {\n\tif err == nil {\n\t\treturn nil\n\t}\n\tif errors.Is(err, context.DeadlineExceeded) {\n\t\treturn New(codes.DeadlineExceeded, err.Error())\n\t}\n\tif errors.Is(err, context.Canceled) {\n\t\treturn New(codes.Canceled, err.Error())\n\t}\n\treturn New(codes.Unknown, err.Error())\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/stream.go",
    "content": "/*\n *\n * Copyright 2014 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"io\"\n\t\"math\"\n\t\"strconv\"\n\t\"sync\"\n\t\"time\"\n\n\t\"golang.org/x/net/trace\"\n\t\"google.golang.org/grpc/balancer\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/encoding\"\n\t\"google.golang.org/grpc/internal\"\n\t\"google.golang.org/grpc/internal/balancerload\"\n\t\"google.golang.org/grpc/internal/binarylog\"\n\t\"google.golang.org/grpc/internal/channelz\"\n\t\"google.golang.org/grpc/internal/grpcrand\"\n\t\"google.golang.org/grpc/internal/grpcutil\"\n\timetadata \"google.golang.org/grpc/internal/metadata\"\n\tiresolver \"google.golang.org/grpc/internal/resolver\"\n\t\"google.golang.org/grpc/internal/serviceconfig\"\n\tistatus \"google.golang.org/grpc/internal/status\"\n\t\"google.golang.org/grpc/internal/transport\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/peer\"\n\t\"google.golang.org/grpc/stats\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// StreamHandler defines the handler called by gRPC server to complete the\n// execution of a streaming RPC.\n//\n// If a StreamHandler returns an error, it should either be produced by the\n// status package, or be one of the context errors. Otherwise, gRPC will use\n// codes.Unknown as the status code and err.Error() as the status message of the\n// RPC.\ntype StreamHandler func(srv any, stream ServerStream) error\n\n// StreamDesc represents a streaming RPC service's method specification.  Used\n// on the server when registering services and on the client when initiating\n// new streams.\ntype StreamDesc struct {\n\t// StreamName and Handler are only used when registering handlers on a\n\t// server.\n\tStreamName string        // the name of the method excluding the service\n\tHandler    StreamHandler // the handler called for the method\n\n\t// ServerStreams and ClientStreams are used for registering handlers on a\n\t// server as well as defining RPC behavior when passed to NewClientStream\n\t// and ClientConn.NewStream.  At least one must be true.\n\tServerStreams bool // indicates the server can perform streaming sends\n\tClientStreams bool // indicates the client can perform streaming sends\n}\n\n// Stream defines the common interface a client or server stream has to satisfy.\n//\n// Deprecated: See ClientStream and ServerStream documentation instead.\ntype Stream interface {\n\t// Deprecated: See ClientStream and ServerStream documentation instead.\n\tContext() context.Context\n\t// Deprecated: See ClientStream and ServerStream documentation instead.\n\tSendMsg(m any) error\n\t// Deprecated: See ClientStream and ServerStream documentation instead.\n\tRecvMsg(m any) error\n}\n\n// ClientStream defines the client-side behavior of a streaming RPC.\n//\n// All errors returned from ClientStream methods are compatible with the\n// status package.\ntype ClientStream interface {\n\t// Header returns the header metadata received from the server if there\n\t// is any. It blocks if the metadata is not ready to read.  If the metadata\n\t// is nil and the error is also nil, then the stream was terminated without\n\t// headers, and the status can be discovered by calling RecvMsg.\n\tHeader() (metadata.MD, error)\n\t// Trailer returns the trailer metadata from the server, if there is any.\n\t// It must only be called after stream.CloseAndRecv has returned, or\n\t// stream.Recv has returned a non-nil error (including io.EOF).\n\tTrailer() metadata.MD\n\t// CloseSend closes the send direction of the stream. It closes the stream\n\t// when non-nil error is met. It is also not safe to call CloseSend\n\t// concurrently with SendMsg.\n\tCloseSend() error\n\t// Context returns the context for this stream.\n\t//\n\t// It should not be called until after Header or RecvMsg has returned. Once\n\t// called, subsequent client-side retries are disabled.\n\tContext() context.Context\n\t// SendMsg is generally called by generated code. On error, SendMsg aborts\n\t// the stream. If the error was generated by the client, the status is\n\t// returned directly; otherwise, io.EOF is returned and the status of\n\t// the stream may be discovered using RecvMsg.\n\t//\n\t// SendMsg blocks until:\n\t//   - There is sufficient flow control to schedule m with the transport, or\n\t//   - The stream is done, or\n\t//   - The stream breaks.\n\t//\n\t// SendMsg does not wait until the message is received by the server. An\n\t// untimely stream closure may result in lost messages. To ensure delivery,\n\t// users should ensure the RPC completed successfully using RecvMsg.\n\t//\n\t// It is safe to have a goroutine calling SendMsg and another goroutine\n\t// calling RecvMsg on the same stream at the same time, but it is not safe\n\t// to call SendMsg on the same stream in different goroutines. It is also\n\t// not safe to call CloseSend concurrently with SendMsg.\n\t//\n\t// It is not safe to modify the message after calling SendMsg. Tracing\n\t// libraries and stats handlers may use the message lazily.\n\tSendMsg(m any) error\n\t// RecvMsg blocks until it receives a message into m or the stream is\n\t// done. It returns io.EOF when the stream completes successfully. On\n\t// any other error, the stream is aborted and the error contains the RPC\n\t// status.\n\t//\n\t// It is safe to have a goroutine calling SendMsg and another goroutine\n\t// calling RecvMsg on the same stream at the same time, but it is not\n\t// safe to call RecvMsg on the same stream in different goroutines.\n\tRecvMsg(m any) error\n}\n\n// NewStream creates a new Stream for the client side. This is typically\n// called by generated code. ctx is used for the lifetime of the stream.\n//\n// To ensure resources are not leaked due to the stream returned, one of the following\n// actions must be performed:\n//\n//  1. Call Close on the ClientConn.\n//  2. Cancel the context provided.\n//  3. Call RecvMsg until a non-nil error is returned. A protobuf-generated\n//     client-streaming RPC, for instance, might use the helper function\n//     CloseAndRecv (note that CloseSend does not Recv, therefore is not\n//     guaranteed to release all resources).\n//  4. Receive a non-nil, non-io.EOF error from Header or SendMsg.\n//\n// If none of the above happen, a goroutine and a context will be leaked, and grpc\n// will not call the optionally-configured stats handler with a stats.End message.\nfunc (cc *ClientConn) NewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error) {\n\t// allow interceptor to see all applicable call options, which means those\n\t// configured as defaults from dial option as well as per-call options\n\topts = combine(cc.dopts.callOptions, opts)\n\n\tif cc.dopts.streamInt != nil {\n\t\treturn cc.dopts.streamInt(ctx, desc, cc, method, newClientStream, opts...)\n\t}\n\treturn newClientStream(ctx, desc, cc, method, opts...)\n}\n\n// NewClientStream is a wrapper for ClientConn.NewStream.\nfunc NewClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (ClientStream, error) {\n\treturn cc.NewStream(ctx, desc, method, opts...)\n}\n\nfunc newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (_ ClientStream, err error) {\n\t// Start tracking the RPC for idleness purposes. This is where a stream is\n\t// created for both streaming and unary RPCs, and hence is a good place to\n\t// track active RPC count.\n\tif err := cc.idlenessMgr.OnCallBegin(); err != nil {\n\t\treturn nil, err\n\t}\n\t// Add a calloption, to decrement the active call count, that gets executed\n\t// when the RPC completes.\n\topts = append([]CallOption{OnFinish(func(error) { cc.idlenessMgr.OnCallEnd() })}, opts...)\n\n\tif md, added, ok := metadata.FromOutgoingContextRaw(ctx); ok {\n\t\t// validate md\n\t\tif err := imetadata.Validate(md); err != nil {\n\t\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t\t}\n\t\t// validate added\n\t\tfor _, kvs := range added {\n\t\t\tfor i := 0; i < len(kvs); i += 2 {\n\t\t\t\tif err := imetadata.ValidatePair(kvs[i], kvs[i+1]); err != nil {\n\t\t\t\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif channelz.IsOn() {\n\t\tcc.incrCallsStarted()\n\t\tdefer func() {\n\t\t\tif err != nil {\n\t\t\t\tcc.incrCallsFailed()\n\t\t\t}\n\t\t}()\n\t}\n\t// Provide an opportunity for the first RPC to see the first service config\n\t// provided by the resolver.\n\tif err := cc.waitForResolvedAddrs(ctx); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar mc serviceconfig.MethodConfig\n\tvar onCommit func()\n\tvar newStream = func(ctx context.Context, done func()) (iresolver.ClientStream, error) {\n\t\treturn newClientStreamWithParams(ctx, desc, cc, method, mc, onCommit, done, opts...)\n\t}\n\n\trpcInfo := iresolver.RPCInfo{Context: ctx, Method: method}\n\trpcConfig, err := cc.safeConfigSelector.SelectConfig(rpcInfo)\n\tif err != nil {\n\t\tif st, ok := status.FromError(err); ok {\n\t\t\t// Restrict the code to the list allowed by gRFC A54.\n\t\t\tif istatus.IsRestrictedControlPlaneCode(st) {\n\t\t\t\terr = status.Errorf(codes.Internal, \"config selector returned illegal status: %v\", err)\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, toRPCErr(err)\n\t}\n\n\tif rpcConfig != nil {\n\t\tif rpcConfig.Context != nil {\n\t\t\tctx = rpcConfig.Context\n\t\t}\n\t\tmc = rpcConfig.MethodConfig\n\t\tonCommit = rpcConfig.OnCommitted\n\t\tif rpcConfig.Interceptor != nil {\n\t\t\trpcInfo.Context = nil\n\t\t\tns := newStream\n\t\t\tnewStream = func(ctx context.Context, done func()) (iresolver.ClientStream, error) {\n\t\t\t\tcs, err := rpcConfig.Interceptor.NewStream(ctx, rpcInfo, done, ns)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, toRPCErr(err)\n\t\t\t\t}\n\t\t\t\treturn cs, nil\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newStream(ctx, func() {})\n}\n\nfunc newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, mc serviceconfig.MethodConfig, onCommit, doneFunc func(), opts ...CallOption) (_ iresolver.ClientStream, err error) {\n\tc := defaultCallInfo()\n\tif mc.WaitForReady != nil {\n\t\tc.failFast = !*mc.WaitForReady\n\t}\n\n\t// Possible context leak:\n\t// The cancel function for the child context we create will only be called\n\t// when RecvMsg returns a non-nil error, if the ClientConn is closed, or if\n\t// an error is generated by SendMsg.\n\t// https://github.com/grpc/grpc-go/issues/1818.\n\tvar cancel context.CancelFunc\n\tif mc.Timeout != nil && *mc.Timeout >= 0 {\n\t\tctx, cancel = context.WithTimeout(ctx, *mc.Timeout)\n\t} else {\n\t\tctx, cancel = context.WithCancel(ctx)\n\t}\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tcancel()\n\t\t}\n\t}()\n\n\tfor _, o := range opts {\n\t\tif err := o.before(c); err != nil {\n\t\t\treturn nil, toRPCErr(err)\n\t\t}\n\t}\n\tc.maxSendMessageSize = getMaxSize(mc.MaxReqSize, c.maxSendMessageSize, defaultClientMaxSendMessageSize)\n\tc.maxReceiveMessageSize = getMaxSize(mc.MaxRespSize, c.maxReceiveMessageSize, defaultClientMaxReceiveMessageSize)\n\tif err := setCallInfoCodec(c); err != nil {\n\t\treturn nil, err\n\t}\n\n\tcallHdr := &transport.CallHdr{\n\t\tHost:           cc.authority,\n\t\tMethod:         method,\n\t\tContentSubtype: c.contentSubtype,\n\t\tDoneFunc:       doneFunc,\n\t}\n\n\t// Set our outgoing compression according to the UseCompressor CallOption, if\n\t// set.  In that case, also find the compressor from the encoding package.\n\t// Otherwise, use the compressor configured by the WithCompressor DialOption,\n\t// if set.\n\tvar cp Compressor\n\tvar comp encoding.Compressor\n\tif ct := c.compressorType; ct != \"\" {\n\t\tcallHdr.SendCompress = ct\n\t\tif ct != encoding.Identity {\n\t\t\tcomp = encoding.GetCompressor(ct)\n\t\t\tif comp == nil {\n\t\t\t\treturn nil, status.Errorf(codes.Internal, \"grpc: Compressor is not installed for requested grpc-encoding %q\", ct)\n\t\t\t}\n\t\t}\n\t} else if cc.dopts.cp != nil {\n\t\tcallHdr.SendCompress = cc.dopts.cp.Type()\n\t\tcp = cc.dopts.cp\n\t}\n\tif c.creds != nil {\n\t\tcallHdr.Creds = c.creds\n\t}\n\n\tcs := &clientStream{\n\t\tcallHdr:      callHdr,\n\t\tctx:          ctx,\n\t\tmethodConfig: &mc,\n\t\topts:         opts,\n\t\tcallInfo:     c,\n\t\tcc:           cc,\n\t\tdesc:         desc,\n\t\tcodec:        c.codec,\n\t\tcp:           cp,\n\t\tcomp:         comp,\n\t\tcancel:       cancel,\n\t\tfirstAttempt: true,\n\t\tonCommit:     onCommit,\n\t}\n\tif !cc.dopts.disableRetry {\n\t\tcs.retryThrottler = cc.retryThrottler.Load().(*retryThrottler)\n\t}\n\tif ml := binarylog.GetMethodLogger(method); ml != nil {\n\t\tcs.binlogs = append(cs.binlogs, ml)\n\t}\n\tif cc.dopts.binaryLogger != nil {\n\t\tif ml := cc.dopts.binaryLogger.GetMethodLogger(method); ml != nil {\n\t\t\tcs.binlogs = append(cs.binlogs, ml)\n\t\t}\n\t}\n\n\t// Pick the transport to use and create a new stream on the transport.\n\t// Assign cs.attempt upon success.\n\top := func(a *csAttempt) error {\n\t\tif err := a.getTransport(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := a.newStream(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Because this operation is always called either here (while creating\n\t\t// the clientStream) or by the retry code while locked when replaying\n\t\t// the operation, it is safe to access cs.attempt directly.\n\t\tcs.attempt = a\n\t\treturn nil\n\t}\n\tif err := cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op) }); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(cs.binlogs) != 0 {\n\t\tmd, _ := metadata.FromOutgoingContext(ctx)\n\t\tlogEntry := &binarylog.ClientHeader{\n\t\t\tOnClientSide: true,\n\t\t\tHeader:       md,\n\t\t\tMethodName:   method,\n\t\t\tAuthority:    cs.cc.authority,\n\t\t}\n\t\tif deadline, ok := ctx.Deadline(); ok {\n\t\t\tlogEntry.Timeout = time.Until(deadline)\n\t\t\tif logEntry.Timeout < 0 {\n\t\t\t\tlogEntry.Timeout = 0\n\t\t\t}\n\t\t}\n\t\tfor _, binlog := range cs.binlogs {\n\t\t\tbinlog.Log(cs.ctx, logEntry)\n\t\t}\n\t}\n\n\tif desc != unaryStreamDesc {\n\t\t// Listen on cc and stream contexts to cleanup when the user closes the\n\t\t// ClientConn or cancels the stream context.  In all other cases, an error\n\t\t// should already be injected into the recv buffer by the transport, which\n\t\t// the client will eventually receive, and then we will cancel the stream's\n\t\t// context in clientStream.finish.\n\t\tgo func() {\n\t\t\tselect {\n\t\t\tcase <-cc.ctx.Done():\n\t\t\t\tcs.finish(ErrClientConnClosing)\n\t\t\tcase <-ctx.Done():\n\t\t\t\tcs.finish(toRPCErr(ctx.Err()))\n\t\t\t}\n\t\t}()\n\t}\n\treturn cs, nil\n}\n\n// newAttemptLocked creates a new csAttempt without a transport or stream.\nfunc (cs *clientStream) newAttemptLocked(isTransparent bool) (*csAttempt, error) {\n\tif err := cs.ctx.Err(); err != nil {\n\t\treturn nil, toRPCErr(err)\n\t}\n\tif err := cs.cc.ctx.Err(); err != nil {\n\t\treturn nil, ErrClientConnClosing\n\t}\n\n\tctx := newContextWithRPCInfo(cs.ctx, cs.callInfo.failFast, cs.callInfo.codec, cs.cp, cs.comp)\n\tmethod := cs.callHdr.Method\n\tvar beginTime time.Time\n\tshs := cs.cc.dopts.copts.StatsHandlers\n\tfor _, sh := range shs {\n\t\tctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: method, FailFast: cs.callInfo.failFast})\n\t\tbeginTime = time.Now()\n\t\tbegin := &stats.Begin{\n\t\t\tClient:                    true,\n\t\t\tBeginTime:                 beginTime,\n\t\t\tFailFast:                  cs.callInfo.failFast,\n\t\t\tIsClientStream:            cs.desc.ClientStreams,\n\t\t\tIsServerStream:            cs.desc.ServerStreams,\n\t\t\tIsTransparentRetryAttempt: isTransparent,\n\t\t}\n\t\tsh.HandleRPC(ctx, begin)\n\t}\n\n\tvar trInfo *traceInfo\n\tif EnableTracing {\n\t\ttrInfo = &traceInfo{\n\t\t\ttr: trace.New(\"grpc.Sent.\"+methodFamily(method), method),\n\t\t\tfirstLine: firstLine{\n\t\t\t\tclient: true,\n\t\t\t},\n\t\t}\n\t\tif deadline, ok := ctx.Deadline(); ok {\n\t\t\ttrInfo.firstLine.deadline = time.Until(deadline)\n\t\t}\n\t\ttrInfo.tr.LazyLog(&trInfo.firstLine, false)\n\t\tctx = trace.NewContext(ctx, trInfo.tr)\n\t}\n\n\tif cs.cc.parsedTarget.URL.Scheme == internal.GRPCResolverSchemeExtraMetadata {\n\t\t// Add extra metadata (metadata that will be added by transport) to context\n\t\t// so the balancer can see them.\n\t\tctx = grpcutil.WithExtraMetadata(ctx, metadata.Pairs(\n\t\t\t\"content-type\", grpcutil.ContentType(cs.callHdr.ContentSubtype),\n\t\t))\n\t}\n\n\treturn &csAttempt{\n\t\tctx:           ctx,\n\t\tbeginTime:     beginTime,\n\t\tcs:            cs,\n\t\tdc:            cs.cc.dopts.dc,\n\t\tstatsHandlers: shs,\n\t\ttrInfo:        trInfo,\n\t}, nil\n}\n\nfunc (a *csAttempt) getTransport() error {\n\tcs := a.cs\n\n\tvar err error\n\ta.t, a.pickResult, err = cs.cc.getTransport(a.ctx, cs.callInfo.failFast, cs.callHdr.Method)\n\tif err != nil {\n\t\tif de, ok := err.(dropError); ok {\n\t\t\terr = de.error\n\t\t\ta.drop = true\n\t\t}\n\t\treturn err\n\t}\n\tif a.trInfo != nil {\n\t\ta.trInfo.firstLine.SetRemoteAddr(a.t.RemoteAddr())\n\t}\n\treturn nil\n}\n\nfunc (a *csAttempt) newStream() error {\n\tcs := a.cs\n\tcs.callHdr.PreviousAttempts = cs.numRetries\n\n\t// Merge metadata stored in PickResult, if any, with existing call metadata.\n\t// It is safe to overwrite the csAttempt's context here, since all state\n\t// maintained in it are local to the attempt. When the attempt has to be\n\t// retried, a new instance of csAttempt will be created.\n\tif a.pickResult.Metadata != nil {\n\t\t// We currently do not have a function it the metadata package which\n\t\t// merges given metadata with existing metadata in a context. Existing\n\t\t// function `AppendToOutgoingContext()` takes a variadic argument of key\n\t\t// value pairs.\n\t\t//\n\t\t// TODO: Make it possible to retrieve key value pairs from metadata.MD\n\t\t// in a form passable to AppendToOutgoingContext(), or create a version\n\t\t// of AppendToOutgoingContext() that accepts a metadata.MD.\n\t\tmd, _ := metadata.FromOutgoingContext(a.ctx)\n\t\tmd = metadata.Join(md, a.pickResult.Metadata)\n\t\ta.ctx = metadata.NewOutgoingContext(a.ctx, md)\n\t}\n\n\ts, err := a.t.NewStream(a.ctx, cs.callHdr)\n\tif err != nil {\n\t\tnse, ok := err.(*transport.NewStreamError)\n\t\tif !ok {\n\t\t\t// Unexpected.\n\t\t\treturn err\n\t\t}\n\n\t\tif nse.AllowTransparentRetry {\n\t\t\ta.allowTransparentRetry = true\n\t\t}\n\n\t\t// Unwrap and convert error.\n\t\treturn toRPCErr(nse.Err)\n\t}\n\ta.s = s\n\ta.p = &parser{r: s, recvBufferPool: a.cs.cc.dopts.recvBufferPool}\n\treturn nil\n}\n\n// clientStream implements a client side Stream.\ntype clientStream struct {\n\tcallHdr  *transport.CallHdr\n\topts     []CallOption\n\tcallInfo *callInfo\n\tcc       *ClientConn\n\tdesc     *StreamDesc\n\n\tcodec baseCodec\n\tcp    Compressor\n\tcomp  encoding.Compressor\n\n\tcancel context.CancelFunc // cancels all attempts\n\n\tsentLast bool // sent an end stream\n\n\tmethodConfig *MethodConfig\n\n\tctx context.Context // the application's context, wrapped by stats/tracing\n\n\tretryThrottler *retryThrottler // The throttler active when the RPC began.\n\n\tbinlogs []binarylog.MethodLogger\n\t// serverHeaderBinlogged is a boolean for whether server header has been\n\t// logged. Server header will be logged when the first time one of those\n\t// happens: stream.Header(), stream.Recv().\n\t//\n\t// It's only read and used by Recv() and Header(), so it doesn't need to be\n\t// synchronized.\n\tserverHeaderBinlogged bool\n\n\tmu                      sync.Mutex\n\tfirstAttempt            bool // if true, transparent retry is valid\n\tnumRetries              int  // exclusive of transparent retry attempt(s)\n\tnumRetriesSincePushback int  // retries since pushback; to reset backoff\n\tfinished                bool // TODO: replace with atomic cmpxchg or sync.Once?\n\t// attempt is the active client stream attempt.\n\t// The only place where it is written is the newAttemptLocked method and this method never writes nil.\n\t// So, attempt can be nil only inside newClientStream function when clientStream is first created.\n\t// One of the first things done after clientStream's creation, is to call newAttemptLocked which either\n\t// assigns a non nil value to the attempt or returns an error. If an error is returned from newAttemptLocked,\n\t// then newClientStream calls finish on the clientStream and returns. So, finish method is the only\n\t// place where we need to check if the attempt is nil.\n\tattempt *csAttempt\n\t// TODO(hedging): hedging will have multiple attempts simultaneously.\n\tcommitted  bool // active attempt committed for retry?\n\tonCommit   func()\n\tbuffer     []func(a *csAttempt) error // operations to replay on retry\n\tbufferSize int                        // current size of buffer\n}\n\n// csAttempt implements a single transport stream attempt within a\n// clientStream.\ntype csAttempt struct {\n\tctx        context.Context\n\tcs         *clientStream\n\tt          transport.ClientTransport\n\ts          *transport.Stream\n\tp          *parser\n\tpickResult balancer.PickResult\n\n\tfinished  bool\n\tdc        Decompressor\n\tdecomp    encoding.Compressor\n\tdecompSet bool\n\n\tmu sync.Mutex // guards trInfo.tr\n\t// trInfo may be nil (if EnableTracing is false).\n\t// trInfo.tr is set when created (if EnableTracing is true),\n\t// and cleared when the finish method is called.\n\ttrInfo *traceInfo\n\n\tstatsHandlers []stats.Handler\n\tbeginTime     time.Time\n\n\t// set for newStream errors that may be transparently retried\n\tallowTransparentRetry bool\n\t// set for pick errors that are returned as a status\n\tdrop bool\n}\n\nfunc (cs *clientStream) commitAttemptLocked() {\n\tif !cs.committed && cs.onCommit != nil {\n\t\tcs.onCommit()\n\t}\n\tcs.committed = true\n\tcs.buffer = nil\n}\n\nfunc (cs *clientStream) commitAttempt() {\n\tcs.mu.Lock()\n\tcs.commitAttemptLocked()\n\tcs.mu.Unlock()\n}\n\n// shouldRetry returns nil if the RPC should be retried; otherwise it returns\n// the error that should be returned by the operation.  If the RPC should be\n// retried, the bool indicates whether it is being retried transparently.\nfunc (a *csAttempt) shouldRetry(err error) (bool, error) {\n\tcs := a.cs\n\n\tif cs.finished || cs.committed || a.drop {\n\t\t// RPC is finished or committed or was dropped by the picker; cannot retry.\n\t\treturn false, err\n\t}\n\tif a.s == nil && a.allowTransparentRetry {\n\t\treturn true, nil\n\t}\n\t// Wait for the trailers.\n\tunprocessed := false\n\tif a.s != nil {\n\t\t<-a.s.Done()\n\t\tunprocessed = a.s.Unprocessed()\n\t}\n\tif cs.firstAttempt && unprocessed {\n\t\t// First attempt, stream unprocessed: transparently retry.\n\t\treturn true, nil\n\t}\n\tif cs.cc.dopts.disableRetry {\n\t\treturn false, err\n\t}\n\n\tpushback := 0\n\thasPushback := false\n\tif a.s != nil {\n\t\tif !a.s.TrailersOnly() {\n\t\t\treturn false, err\n\t\t}\n\n\t\t// TODO(retry): Move down if the spec changes to not check server pushback\n\t\t// before considering this a failure for throttling.\n\t\tsps := a.s.Trailer()[\"grpc-retry-pushback-ms\"]\n\t\tif len(sps) == 1 {\n\t\t\tvar e error\n\t\t\tif pushback, e = strconv.Atoi(sps[0]); e != nil || pushback < 0 {\n\t\t\t\tchannelz.Infof(logger, cs.cc.channelzID, \"Server retry pushback specified to abort (%q).\", sps[0])\n\t\t\t\tcs.retryThrottler.throttle() // This counts as a failure for throttling.\n\t\t\t\treturn false, err\n\t\t\t}\n\t\t\thasPushback = true\n\t\t} else if len(sps) > 1 {\n\t\t\tchannelz.Warningf(logger, cs.cc.channelzID, \"Server retry pushback specified multiple values (%q); not retrying.\", sps)\n\t\t\tcs.retryThrottler.throttle() // This counts as a failure for throttling.\n\t\t\treturn false, err\n\t\t}\n\t}\n\n\tvar code codes.Code\n\tif a.s != nil {\n\t\tcode = a.s.Status().Code()\n\t} else {\n\t\tcode = status.Code(err)\n\t}\n\n\trp := cs.methodConfig.RetryPolicy\n\tif rp == nil || !rp.RetryableStatusCodes[code] {\n\t\treturn false, err\n\t}\n\n\t// Note: the ordering here is important; we count this as a failure\n\t// only if the code matched a retryable code.\n\tif cs.retryThrottler.throttle() {\n\t\treturn false, err\n\t}\n\tif cs.numRetries+1 >= rp.MaxAttempts {\n\t\treturn false, err\n\t}\n\n\tvar dur time.Duration\n\tif hasPushback {\n\t\tdur = time.Millisecond * time.Duration(pushback)\n\t\tcs.numRetriesSincePushback = 0\n\t} else {\n\t\tfact := math.Pow(rp.BackoffMultiplier, float64(cs.numRetriesSincePushback))\n\t\tcur := float64(rp.InitialBackoff) * fact\n\t\tif max := float64(rp.MaxBackoff); cur > max {\n\t\t\tcur = max\n\t\t}\n\t\tdur = time.Duration(grpcrand.Int63n(int64(cur)))\n\t\tcs.numRetriesSincePushback++\n\t}\n\n\t// TODO(dfawley): we could eagerly fail here if dur puts us past the\n\t// deadline, but unsure if it is worth doing.\n\tt := time.NewTimer(dur)\n\tselect {\n\tcase <-t.C:\n\t\tcs.numRetries++\n\t\treturn false, nil\n\tcase <-cs.ctx.Done():\n\t\tt.Stop()\n\t\treturn false, status.FromContextError(cs.ctx.Err()).Err()\n\t}\n}\n\n// Returns nil if a retry was performed and succeeded; error otherwise.\nfunc (cs *clientStream) retryLocked(attempt *csAttempt, lastErr error) error {\n\tfor {\n\t\tattempt.finish(toRPCErr(lastErr))\n\t\tisTransparent, err := attempt.shouldRetry(lastErr)\n\t\tif err != nil {\n\t\t\tcs.commitAttemptLocked()\n\t\t\treturn err\n\t\t}\n\t\tcs.firstAttempt = false\n\t\tattempt, err = cs.newAttemptLocked(isTransparent)\n\t\tif err != nil {\n\t\t\t// Only returns error if the clientconn is closed or the context of\n\t\t\t// the stream is canceled.\n\t\t\treturn err\n\t\t}\n\t\t// Note that the first op in the replay buffer always sets cs.attempt\n\t\t// if it is able to pick a transport and create a stream.\n\t\tif lastErr = cs.replayBufferLocked(attempt); lastErr == nil {\n\t\t\treturn nil\n\t\t}\n\t}\n}\n\nfunc (cs *clientStream) Context() context.Context {\n\tcs.commitAttempt()\n\t// No need to lock before using attempt, since we know it is committed and\n\t// cannot change.\n\tif cs.attempt.s != nil {\n\t\treturn cs.attempt.s.Context()\n\t}\n\treturn cs.ctx\n}\n\nfunc (cs *clientStream) withRetry(op func(a *csAttempt) error, onSuccess func()) error {\n\tcs.mu.Lock()\n\tfor {\n\t\tif cs.committed {\n\t\t\tcs.mu.Unlock()\n\t\t\t// toRPCErr is used in case the error from the attempt comes from\n\t\t\t// NewClientStream, which intentionally doesn't return a status\n\t\t\t// error to allow for further inspection; all other errors should\n\t\t\t// already be status errors.\n\t\t\treturn toRPCErr(op(cs.attempt))\n\t\t}\n\t\tif len(cs.buffer) == 0 {\n\t\t\t// For the first op, which controls creation of the stream and\n\t\t\t// assigns cs.attempt, we need to create a new attempt inline\n\t\t\t// before executing the first op.  On subsequent ops, the attempt\n\t\t\t// is created immediately before replaying the ops.\n\t\t\tvar err error\n\t\t\tif cs.attempt, err = cs.newAttemptLocked(false /* isTransparent */); err != nil {\n\t\t\t\tcs.mu.Unlock()\n\t\t\t\tcs.finish(err)\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\ta := cs.attempt\n\t\tcs.mu.Unlock()\n\t\terr := op(a)\n\t\tcs.mu.Lock()\n\t\tif a != cs.attempt {\n\t\t\t// We started another attempt already.\n\t\t\tcontinue\n\t\t}\n\t\tif err == io.EOF {\n\t\t\t<-a.s.Done()\n\t\t}\n\t\tif err == nil || (err == io.EOF && a.s.Status().Code() == codes.OK) {\n\t\t\tonSuccess()\n\t\t\tcs.mu.Unlock()\n\t\t\treturn err\n\t\t}\n\t\tif err := cs.retryLocked(a, err); err != nil {\n\t\t\tcs.mu.Unlock()\n\t\t\treturn err\n\t\t}\n\t}\n}\n\nfunc (cs *clientStream) Header() (metadata.MD, error) {\n\tvar m metadata.MD\n\terr := cs.withRetry(func(a *csAttempt) error {\n\t\tvar err error\n\t\tm, err = a.s.Header()\n\t\treturn toRPCErr(err)\n\t}, cs.commitAttemptLocked)\n\n\tif m == nil && err == nil {\n\t\t// The stream ended with success.  Finish the clientStream.\n\t\terr = io.EOF\n\t}\n\n\tif err != nil {\n\t\tcs.finish(err)\n\t\t// Do not return the error.  The user should get it by calling Recv().\n\t\treturn nil, nil\n\t}\n\n\tif len(cs.binlogs) != 0 && !cs.serverHeaderBinlogged && m != nil {\n\t\t// Only log if binary log is on and header has not been logged, and\n\t\t// there is actually headers to log.\n\t\tlogEntry := &binarylog.ServerHeader{\n\t\t\tOnClientSide: true,\n\t\t\tHeader:       m,\n\t\t\tPeerAddr:     nil,\n\t\t}\n\t\tif peer, ok := peer.FromContext(cs.Context()); ok {\n\t\t\tlogEntry.PeerAddr = peer.Addr\n\t\t}\n\t\tcs.serverHeaderBinlogged = true\n\t\tfor _, binlog := range cs.binlogs {\n\t\t\tbinlog.Log(cs.ctx, logEntry)\n\t\t}\n\t}\n\n\treturn m, nil\n}\n\nfunc (cs *clientStream) Trailer() metadata.MD {\n\t// On RPC failure, we never need to retry, because usage requires that\n\t// RecvMsg() returned a non-nil error before calling this function is valid.\n\t// We would have retried earlier if necessary.\n\t//\n\t// Commit the attempt anyway, just in case users are not following those\n\t// directions -- it will prevent races and should not meaningfully impact\n\t// performance.\n\tcs.commitAttempt()\n\tif cs.attempt.s == nil {\n\t\treturn nil\n\t}\n\treturn cs.attempt.s.Trailer()\n}\n\nfunc (cs *clientStream) replayBufferLocked(attempt *csAttempt) error {\n\tfor _, f := range cs.buffer {\n\t\tif err := f(attempt); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (cs *clientStream) bufferForRetryLocked(sz int, op func(a *csAttempt) error) {\n\t// Note: we still will buffer if retry is disabled (for transparent retries).\n\tif cs.committed {\n\t\treturn\n\t}\n\tcs.bufferSize += sz\n\tif cs.bufferSize > cs.callInfo.maxRetryRPCBufferSize {\n\t\tcs.commitAttemptLocked()\n\t\treturn\n\t}\n\tcs.buffer = append(cs.buffer, op)\n}\n\nfunc (cs *clientStream) SendMsg(m any) (err error) {\n\tdefer func() {\n\t\tif err != nil && err != io.EOF {\n\t\t\t// Call finish on the client stream for errors generated by this SendMsg\n\t\t\t// call, as these indicate problems created by this client.  (Transport\n\t\t\t// errors are converted to an io.EOF error in csAttempt.sendMsg; the real\n\t\t\t// error will be returned from RecvMsg eventually in that case, or be\n\t\t\t// retried.)\n\t\t\tcs.finish(err)\n\t\t}\n\t}()\n\tif cs.sentLast {\n\t\treturn status.Errorf(codes.Internal, \"SendMsg called after CloseSend\")\n\t}\n\tif !cs.desc.ClientStreams {\n\t\tcs.sentLast = true\n\t}\n\n\t// load hdr, payload, data\n\thdr, payload, data, err := prepareMsg(m, cs.codec, cs.cp, cs.comp)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// TODO(dfawley): should we be checking len(data) instead?\n\tif len(payload) > *cs.callInfo.maxSendMessageSize {\n\t\treturn status.Errorf(codes.ResourceExhausted, \"trying to send message larger than max (%d vs. %d)\", len(payload), *cs.callInfo.maxSendMessageSize)\n\t}\n\top := func(a *csAttempt) error {\n\t\treturn a.sendMsg(m, hdr, payload, data)\n\t}\n\terr = cs.withRetry(op, func() { cs.bufferForRetryLocked(len(hdr)+len(payload), op) })\n\tif len(cs.binlogs) != 0 && err == nil {\n\t\tcm := &binarylog.ClientMessage{\n\t\t\tOnClientSide: true,\n\t\t\tMessage:      data,\n\t\t}\n\t\tfor _, binlog := range cs.binlogs {\n\t\t\tbinlog.Log(cs.ctx, cm)\n\t\t}\n\t}\n\treturn err\n}\n\nfunc (cs *clientStream) RecvMsg(m any) error {\n\tif len(cs.binlogs) != 0 && !cs.serverHeaderBinlogged {\n\t\t// Call Header() to binary log header if it's not already logged.\n\t\tcs.Header()\n\t}\n\tvar recvInfo *payloadInfo\n\tif len(cs.binlogs) != 0 {\n\t\trecvInfo = &payloadInfo{}\n\t}\n\terr := cs.withRetry(func(a *csAttempt) error {\n\t\treturn a.recvMsg(m, recvInfo)\n\t}, cs.commitAttemptLocked)\n\tif len(cs.binlogs) != 0 && err == nil {\n\t\tsm := &binarylog.ServerMessage{\n\t\t\tOnClientSide: true,\n\t\t\tMessage:      recvInfo.uncompressedBytes,\n\t\t}\n\t\tfor _, binlog := range cs.binlogs {\n\t\t\tbinlog.Log(cs.ctx, sm)\n\t\t}\n\t}\n\tif err != nil || !cs.desc.ServerStreams {\n\t\t// err != nil or non-server-streaming indicates end of stream.\n\t\tcs.finish(err)\n\t}\n\treturn err\n}\n\nfunc (cs *clientStream) CloseSend() error {\n\tif cs.sentLast {\n\t\t// TODO: return an error and finish the stream instead, due to API misuse?\n\t\treturn nil\n\t}\n\tcs.sentLast = true\n\top := func(a *csAttempt) error {\n\t\ta.t.Write(a.s, nil, nil, &transport.Options{Last: true})\n\t\t// Always return nil; io.EOF is the only error that might make sense\n\t\t// instead, but there is no need to signal the client to call RecvMsg\n\t\t// as the only use left for the stream after CloseSend is to call\n\t\t// RecvMsg.  This also matches historical behavior.\n\t\treturn nil\n\t}\n\tcs.withRetry(op, func() { cs.bufferForRetryLocked(0, op) })\n\tif len(cs.binlogs) != 0 {\n\t\tchc := &binarylog.ClientHalfClose{\n\t\t\tOnClientSide: true,\n\t\t}\n\t\tfor _, binlog := range cs.binlogs {\n\t\t\tbinlog.Log(cs.ctx, chc)\n\t\t}\n\t}\n\t// We never returned an error here for reasons.\n\treturn nil\n}\n\nfunc (cs *clientStream) finish(err error) {\n\tif err == io.EOF {\n\t\t// Ending a stream with EOF indicates a success.\n\t\terr = nil\n\t}\n\tcs.mu.Lock()\n\tif cs.finished {\n\t\tcs.mu.Unlock()\n\t\treturn\n\t}\n\tcs.finished = true\n\tfor _, onFinish := range cs.callInfo.onFinish {\n\t\tonFinish(err)\n\t}\n\tcs.commitAttemptLocked()\n\tif cs.attempt != nil {\n\t\tcs.attempt.finish(err)\n\t\t// after functions all rely upon having a stream.\n\t\tif cs.attempt.s != nil {\n\t\t\tfor _, o := range cs.opts {\n\t\t\t\to.after(cs.callInfo, cs.attempt)\n\t\t\t}\n\t\t}\n\t}\n\n\tcs.mu.Unlock()\n\t// Only one of cancel or trailer needs to be logged.\n\tif len(cs.binlogs) != 0 {\n\t\tswitch err {\n\t\tcase errContextCanceled, errContextDeadline, ErrClientConnClosing:\n\t\t\tc := &binarylog.Cancel{\n\t\t\t\tOnClientSide: true,\n\t\t\t}\n\t\t\tfor _, binlog := range cs.binlogs {\n\t\t\t\tbinlog.Log(cs.ctx, c)\n\t\t\t}\n\t\tdefault:\n\t\t\tlogEntry := &binarylog.ServerTrailer{\n\t\t\t\tOnClientSide: true,\n\t\t\t\tTrailer:      cs.Trailer(),\n\t\t\t\tErr:          err,\n\t\t\t}\n\t\t\tif peer, ok := peer.FromContext(cs.Context()); ok {\n\t\t\t\tlogEntry.PeerAddr = peer.Addr\n\t\t\t}\n\t\t\tfor _, binlog := range cs.binlogs {\n\t\t\t\tbinlog.Log(cs.ctx, logEntry)\n\t\t\t}\n\t\t}\n\t}\n\tif err == nil {\n\t\tcs.retryThrottler.successfulRPC()\n\t}\n\tif channelz.IsOn() {\n\t\tif err != nil {\n\t\t\tcs.cc.incrCallsFailed()\n\t\t} else {\n\t\t\tcs.cc.incrCallsSucceeded()\n\t\t}\n\t}\n\tcs.cancel()\n}\n\nfunc (a *csAttempt) sendMsg(m any, hdr, payld, data []byte) error {\n\tcs := a.cs\n\tif a.trInfo != nil {\n\t\ta.mu.Lock()\n\t\tif a.trInfo.tr != nil {\n\t\t\ta.trInfo.tr.LazyLog(&payload{sent: true, msg: m}, true)\n\t\t}\n\t\ta.mu.Unlock()\n\t}\n\tif err := a.t.Write(a.s, hdr, payld, &transport.Options{Last: !cs.desc.ClientStreams}); err != nil {\n\t\tif !cs.desc.ClientStreams {\n\t\t\t// For non-client-streaming RPCs, we return nil instead of EOF on error\n\t\t\t// because the generated code requires it.  finish is not called; RecvMsg()\n\t\t\t// will call it with the stream's status independently.\n\t\t\treturn nil\n\t\t}\n\t\treturn io.EOF\n\t}\n\tfor _, sh := range a.statsHandlers {\n\t\tsh.HandleRPC(a.ctx, outPayload(true, m, data, payld, time.Now()))\n\t}\n\tif channelz.IsOn() {\n\t\ta.t.IncrMsgSent()\n\t}\n\treturn nil\n}\n\nfunc (a *csAttempt) recvMsg(m any, payInfo *payloadInfo) (err error) {\n\tcs := a.cs\n\tif len(a.statsHandlers) != 0 && payInfo == nil {\n\t\tpayInfo = &payloadInfo{}\n\t}\n\n\tif !a.decompSet {\n\t\t// Block until we receive headers containing received message encoding.\n\t\tif ct := a.s.RecvCompress(); ct != \"\" && ct != encoding.Identity {\n\t\t\tif a.dc == nil || a.dc.Type() != ct {\n\t\t\t\t// No configured decompressor, or it does not match the incoming\n\t\t\t\t// message encoding; attempt to find a registered compressor that does.\n\t\t\t\ta.dc = nil\n\t\t\t\ta.decomp = encoding.GetCompressor(ct)\n\t\t\t}\n\t\t} else {\n\t\t\t// No compression is used; disable our decompressor.\n\t\t\ta.dc = nil\n\t\t}\n\t\t// Only initialize this state once per stream.\n\t\ta.decompSet = true\n\t}\n\terr = recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, payInfo, a.decomp)\n\tif err != nil {\n\t\tif err == io.EOF {\n\t\t\tif statusErr := a.s.Status().Err(); statusErr != nil {\n\t\t\t\treturn statusErr\n\t\t\t}\n\t\t\treturn io.EOF // indicates successful end of stream.\n\t\t}\n\n\t\treturn toRPCErr(err)\n\t}\n\tif a.trInfo != nil {\n\t\ta.mu.Lock()\n\t\tif a.trInfo.tr != nil {\n\t\t\ta.trInfo.tr.LazyLog(&payload{sent: false, msg: m}, true)\n\t\t}\n\t\ta.mu.Unlock()\n\t}\n\tfor _, sh := range a.statsHandlers {\n\t\tsh.HandleRPC(a.ctx, &stats.InPayload{\n\t\t\tClient:   true,\n\t\t\tRecvTime: time.Now(),\n\t\t\tPayload:  m,\n\t\t\t// TODO truncate large payload.\n\t\t\tData:             payInfo.uncompressedBytes,\n\t\t\tWireLength:       payInfo.compressedLength + headerLen,\n\t\t\tCompressedLength: payInfo.compressedLength,\n\t\t\tLength:           len(payInfo.uncompressedBytes),\n\t\t})\n\t}\n\tif channelz.IsOn() {\n\t\ta.t.IncrMsgRecv()\n\t}\n\tif cs.desc.ServerStreams {\n\t\t// Subsequent messages should be received by subsequent RecvMsg calls.\n\t\treturn nil\n\t}\n\t// Special handling for non-server-stream rpcs.\n\t// This recv expects EOF or errors, so we don't collect inPayload.\n\terr = recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, nil, a.decomp)\n\tif err == nil {\n\t\treturn toRPCErr(errors.New(\"grpc: client streaming protocol violation: get <nil>, want <EOF>\"))\n\t}\n\tif err == io.EOF {\n\t\treturn a.s.Status().Err() // non-server streaming Recv returns nil on success\n\t}\n\treturn toRPCErr(err)\n}\n\nfunc (a *csAttempt) finish(err error) {\n\ta.mu.Lock()\n\tif a.finished {\n\t\ta.mu.Unlock()\n\t\treturn\n\t}\n\ta.finished = true\n\tif err == io.EOF {\n\t\t// Ending a stream with EOF indicates a success.\n\t\terr = nil\n\t}\n\tvar tr metadata.MD\n\tif a.s != nil {\n\t\ta.t.CloseStream(a.s, err)\n\t\ttr = a.s.Trailer()\n\t}\n\n\tif a.pickResult.Done != nil {\n\t\tbr := false\n\t\tif a.s != nil {\n\t\t\tbr = a.s.BytesReceived()\n\t\t}\n\t\ta.pickResult.Done(balancer.DoneInfo{\n\t\t\tErr:           err,\n\t\t\tTrailer:       tr,\n\t\t\tBytesSent:     a.s != nil,\n\t\t\tBytesReceived: br,\n\t\t\tServerLoad:    balancerload.Parse(tr),\n\t\t})\n\t}\n\tfor _, sh := range a.statsHandlers {\n\t\tend := &stats.End{\n\t\t\tClient:    true,\n\t\t\tBeginTime: a.beginTime,\n\t\t\tEndTime:   time.Now(),\n\t\t\tTrailer:   tr,\n\t\t\tError:     err,\n\t\t}\n\t\tsh.HandleRPC(a.ctx, end)\n\t}\n\tif a.trInfo != nil && a.trInfo.tr != nil {\n\t\tif err == nil {\n\t\t\ta.trInfo.tr.LazyPrintf(\"RPC: [OK]\")\n\t\t} else {\n\t\t\ta.trInfo.tr.LazyPrintf(\"RPC: [%v]\", err)\n\t\t\ta.trInfo.tr.SetError()\n\t\t}\n\t\ta.trInfo.tr.Finish()\n\t\ta.trInfo.tr = nil\n\t}\n\ta.mu.Unlock()\n}\n\n// newClientStream creates a ClientStream with the specified transport, on the\n// given addrConn.\n//\n// It's expected that the given transport is either the same one in addrConn, or\n// is already closed. To avoid race, transport is specified separately, instead\n// of using ac.transpot.\n//\n// Main difference between this and ClientConn.NewStream:\n// - no retry\n// - no service config (or wait for service config)\n// - no tracing or stats\nfunc newNonRetryClientStream(ctx context.Context, desc *StreamDesc, method string, t transport.ClientTransport, ac *addrConn, opts ...CallOption) (_ ClientStream, err error) {\n\tif t == nil {\n\t\t// TODO: return RPC error here?\n\t\treturn nil, errors.New(\"transport provided is nil\")\n\t}\n\t// defaultCallInfo contains unnecessary info(i.e. failfast, maxRetryRPCBufferSize), so we just initialize an empty struct.\n\tc := &callInfo{}\n\n\t// Possible context leak:\n\t// The cancel function for the child context we create will only be called\n\t// when RecvMsg returns a non-nil error, if the ClientConn is closed, or if\n\t// an error is generated by SendMsg.\n\t// https://github.com/grpc/grpc-go/issues/1818.\n\tctx, cancel := context.WithCancel(ctx)\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tcancel()\n\t\t}\n\t}()\n\n\tfor _, o := range opts {\n\t\tif err := o.before(c); err != nil {\n\t\t\treturn nil, toRPCErr(err)\n\t\t}\n\t}\n\tc.maxReceiveMessageSize = getMaxSize(nil, c.maxReceiveMessageSize, defaultClientMaxReceiveMessageSize)\n\tc.maxSendMessageSize = getMaxSize(nil, c.maxSendMessageSize, defaultServerMaxSendMessageSize)\n\tif err := setCallInfoCodec(c); err != nil {\n\t\treturn nil, err\n\t}\n\n\tcallHdr := &transport.CallHdr{\n\t\tHost:           ac.cc.authority,\n\t\tMethod:         method,\n\t\tContentSubtype: c.contentSubtype,\n\t}\n\n\t// Set our outgoing compression according to the UseCompressor CallOption, if\n\t// set.  In that case, also find the compressor from the encoding package.\n\t// Otherwise, use the compressor configured by the WithCompressor DialOption,\n\t// if set.\n\tvar cp Compressor\n\tvar comp encoding.Compressor\n\tif ct := c.compressorType; ct != \"\" {\n\t\tcallHdr.SendCompress = ct\n\t\tif ct != encoding.Identity {\n\t\t\tcomp = encoding.GetCompressor(ct)\n\t\t\tif comp == nil {\n\t\t\t\treturn nil, status.Errorf(codes.Internal, \"grpc: Compressor is not installed for requested grpc-encoding %q\", ct)\n\t\t\t}\n\t\t}\n\t} else if ac.cc.dopts.cp != nil {\n\t\tcallHdr.SendCompress = ac.cc.dopts.cp.Type()\n\t\tcp = ac.cc.dopts.cp\n\t}\n\tif c.creds != nil {\n\t\tcallHdr.Creds = c.creds\n\t}\n\n\t// Use a special addrConnStream to avoid retry.\n\tas := &addrConnStream{\n\t\tcallHdr:  callHdr,\n\t\tac:       ac,\n\t\tctx:      ctx,\n\t\tcancel:   cancel,\n\t\topts:     opts,\n\t\tcallInfo: c,\n\t\tdesc:     desc,\n\t\tcodec:    c.codec,\n\t\tcp:       cp,\n\t\tcomp:     comp,\n\t\tt:        t,\n\t}\n\n\ts, err := as.t.NewStream(as.ctx, as.callHdr)\n\tif err != nil {\n\t\terr = toRPCErr(err)\n\t\treturn nil, err\n\t}\n\tas.s = s\n\tas.p = &parser{r: s, recvBufferPool: ac.dopts.recvBufferPool}\n\tac.incrCallsStarted()\n\tif desc != unaryStreamDesc {\n\t\t// Listen on stream context to cleanup when the stream context is\n\t\t// canceled.  Also listen for the addrConn's context in case the\n\t\t// addrConn is closed or reconnects to a different address.  In all\n\t\t// other cases, an error should already be injected into the recv\n\t\t// buffer by the transport, which the client will eventually receive,\n\t\t// and then we will cancel the stream's context in\n\t\t// addrConnStream.finish.\n\t\tgo func() {\n\t\t\tac.mu.Lock()\n\t\t\tacCtx := ac.ctx\n\t\t\tac.mu.Unlock()\n\t\t\tselect {\n\t\t\tcase <-acCtx.Done():\n\t\t\t\tas.finish(status.Error(codes.Canceled, \"grpc: the SubConn is closing\"))\n\t\t\tcase <-ctx.Done():\n\t\t\t\tas.finish(toRPCErr(ctx.Err()))\n\t\t\t}\n\t\t}()\n\t}\n\treturn as, nil\n}\n\ntype addrConnStream struct {\n\ts         *transport.Stream\n\tac        *addrConn\n\tcallHdr   *transport.CallHdr\n\tcancel    context.CancelFunc\n\topts      []CallOption\n\tcallInfo  *callInfo\n\tt         transport.ClientTransport\n\tctx       context.Context\n\tsentLast  bool\n\tdesc      *StreamDesc\n\tcodec     baseCodec\n\tcp        Compressor\n\tcomp      encoding.Compressor\n\tdecompSet bool\n\tdc        Decompressor\n\tdecomp    encoding.Compressor\n\tp         *parser\n\tmu        sync.Mutex\n\tfinished  bool\n}\n\nfunc (as *addrConnStream) Header() (metadata.MD, error) {\n\tm, err := as.s.Header()\n\tif err != nil {\n\t\tas.finish(toRPCErr(err))\n\t}\n\treturn m, err\n}\n\nfunc (as *addrConnStream) Trailer() metadata.MD {\n\treturn as.s.Trailer()\n}\n\nfunc (as *addrConnStream) CloseSend() error {\n\tif as.sentLast {\n\t\t// TODO: return an error and finish the stream instead, due to API misuse?\n\t\treturn nil\n\t}\n\tas.sentLast = true\n\n\tas.t.Write(as.s, nil, nil, &transport.Options{Last: true})\n\t// Always return nil; io.EOF is the only error that might make sense\n\t// instead, but there is no need to signal the client to call RecvMsg\n\t// as the only use left for the stream after CloseSend is to call\n\t// RecvMsg.  This also matches historical behavior.\n\treturn nil\n}\n\nfunc (as *addrConnStream) Context() context.Context {\n\treturn as.s.Context()\n}\n\nfunc (as *addrConnStream) SendMsg(m any) (err error) {\n\tdefer func() {\n\t\tif err != nil && err != io.EOF {\n\t\t\t// Call finish on the client stream for errors generated by this SendMsg\n\t\t\t// call, as these indicate problems created by this client.  (Transport\n\t\t\t// errors are converted to an io.EOF error in csAttempt.sendMsg; the real\n\t\t\t// error will be returned from RecvMsg eventually in that case, or be\n\t\t\t// retried.)\n\t\t\tas.finish(err)\n\t\t}\n\t}()\n\tif as.sentLast {\n\t\treturn status.Errorf(codes.Internal, \"SendMsg called after CloseSend\")\n\t}\n\tif !as.desc.ClientStreams {\n\t\tas.sentLast = true\n\t}\n\n\t// load hdr, payload, data\n\thdr, payld, _, err := prepareMsg(m, as.codec, as.cp, as.comp)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// TODO(dfawley): should we be checking len(data) instead?\n\tif len(payld) > *as.callInfo.maxSendMessageSize {\n\t\treturn status.Errorf(codes.ResourceExhausted, \"trying to send message larger than max (%d vs. %d)\", len(payld), *as.callInfo.maxSendMessageSize)\n\t}\n\n\tif err := as.t.Write(as.s, hdr, payld, &transport.Options{Last: !as.desc.ClientStreams}); err != nil {\n\t\tif !as.desc.ClientStreams {\n\t\t\t// For non-client-streaming RPCs, we return nil instead of EOF on error\n\t\t\t// because the generated code requires it.  finish is not called; RecvMsg()\n\t\t\t// will call it with the stream's status independently.\n\t\t\treturn nil\n\t\t}\n\t\treturn io.EOF\n\t}\n\n\tif channelz.IsOn() {\n\t\tas.t.IncrMsgSent()\n\t}\n\treturn nil\n}\n\nfunc (as *addrConnStream) RecvMsg(m any) (err error) {\n\tdefer func() {\n\t\tif err != nil || !as.desc.ServerStreams {\n\t\t\t// err != nil or non-server-streaming indicates end of stream.\n\t\t\tas.finish(err)\n\t\t}\n\t}()\n\n\tif !as.decompSet {\n\t\t// Block until we receive headers containing received message encoding.\n\t\tif ct := as.s.RecvCompress(); ct != \"\" && ct != encoding.Identity {\n\t\t\tif as.dc == nil || as.dc.Type() != ct {\n\t\t\t\t// No configured decompressor, or it does not match the incoming\n\t\t\t\t// message encoding; attempt to find a registered compressor that does.\n\t\t\t\tas.dc = nil\n\t\t\t\tas.decomp = encoding.GetCompressor(ct)\n\t\t\t}\n\t\t} else {\n\t\t\t// No compression is used; disable our decompressor.\n\t\t\tas.dc = nil\n\t\t}\n\t\t// Only initialize this state once per stream.\n\t\tas.decompSet = true\n\t}\n\terr = recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp)\n\tif err != nil {\n\t\tif err == io.EOF {\n\t\t\tif statusErr := as.s.Status().Err(); statusErr != nil {\n\t\t\t\treturn statusErr\n\t\t\t}\n\t\t\treturn io.EOF // indicates successful end of stream.\n\t\t}\n\t\treturn toRPCErr(err)\n\t}\n\n\tif channelz.IsOn() {\n\t\tas.t.IncrMsgRecv()\n\t}\n\tif as.desc.ServerStreams {\n\t\t// Subsequent messages should be received by subsequent RecvMsg calls.\n\t\treturn nil\n\t}\n\n\t// Special handling for non-server-stream rpcs.\n\t// This recv expects EOF or errors, so we don't collect inPayload.\n\terr = recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp)\n\tif err == nil {\n\t\treturn toRPCErr(errors.New(\"grpc: client streaming protocol violation: get <nil>, want <EOF>\"))\n\t}\n\tif err == io.EOF {\n\t\treturn as.s.Status().Err() // non-server streaming Recv returns nil on success\n\t}\n\treturn toRPCErr(err)\n}\n\nfunc (as *addrConnStream) finish(err error) {\n\tas.mu.Lock()\n\tif as.finished {\n\t\tas.mu.Unlock()\n\t\treturn\n\t}\n\tas.finished = true\n\tif err == io.EOF {\n\t\t// Ending a stream with EOF indicates a success.\n\t\terr = nil\n\t}\n\tif as.s != nil {\n\t\tas.t.CloseStream(as.s, err)\n\t}\n\n\tif err != nil {\n\t\tas.ac.incrCallsFailed()\n\t} else {\n\t\tas.ac.incrCallsSucceeded()\n\t}\n\tas.cancel()\n\tas.mu.Unlock()\n}\n\n// ServerStream defines the server-side behavior of a streaming RPC.\n//\n// Errors returned from ServerStream methods are compatible with the status\n// package.  However, the status code will often not match the RPC status as\n// seen by the client application, and therefore, should not be relied upon for\n// this purpose.\ntype ServerStream interface {\n\t// SetHeader sets the header metadata. It may be called multiple times.\n\t// When call multiple times, all the provided metadata will be merged.\n\t// All the metadata will be sent out when one of the following happens:\n\t//  - ServerStream.SendHeader() is called;\n\t//  - The first response is sent out;\n\t//  - An RPC status is sent out (error or success).\n\tSetHeader(metadata.MD) error\n\t// SendHeader sends the header metadata.\n\t// The provided md and headers set by SetHeader() will be sent.\n\t// It fails if called multiple times.\n\tSendHeader(metadata.MD) error\n\t// SetTrailer sets the trailer metadata which will be sent with the RPC status.\n\t// When called more than once, all the provided metadata will be merged.\n\tSetTrailer(metadata.MD)\n\t// Context returns the context for this stream.\n\tContext() context.Context\n\t// SendMsg sends a message. On error, SendMsg aborts the stream and the\n\t// error is returned directly.\n\t//\n\t// SendMsg blocks until:\n\t//   - There is sufficient flow control to schedule m with the transport, or\n\t//   - The stream is done, or\n\t//   - The stream breaks.\n\t//\n\t// SendMsg does not wait until the message is received by the client. An\n\t// untimely stream closure may result in lost messages.\n\t//\n\t// It is safe to have a goroutine calling SendMsg and another goroutine\n\t// calling RecvMsg on the same stream at the same time, but it is not safe\n\t// to call SendMsg on the same stream in different goroutines.\n\t//\n\t// It is not safe to modify the message after calling SendMsg. Tracing\n\t// libraries and stats handlers may use the message lazily.\n\tSendMsg(m any) error\n\t// RecvMsg blocks until it receives a message into m or the stream is\n\t// done. It returns io.EOF when the client has performed a CloseSend. On\n\t// any non-EOF error, the stream is aborted and the error contains the\n\t// RPC status.\n\t//\n\t// It is safe to have a goroutine calling SendMsg and another goroutine\n\t// calling RecvMsg on the same stream at the same time, but it is not\n\t// safe to call RecvMsg on the same stream in different goroutines.\n\tRecvMsg(m any) error\n}\n\n// serverStream implements a server side Stream.\ntype serverStream struct {\n\tctx   context.Context\n\tt     transport.ServerTransport\n\ts     *transport.Stream\n\tp     *parser\n\tcodec baseCodec\n\n\tcp     Compressor\n\tdc     Decompressor\n\tcomp   encoding.Compressor\n\tdecomp encoding.Compressor\n\n\tsendCompressorName string\n\n\tmaxReceiveMessageSize int\n\tmaxSendMessageSize    int\n\ttrInfo                *traceInfo\n\n\tstatsHandler []stats.Handler\n\n\tbinlogs []binarylog.MethodLogger\n\t// serverHeaderBinlogged indicates whether server header has been logged. It\n\t// will happen when one of the following two happens: stream.SendHeader(),\n\t// stream.Send().\n\t//\n\t// It's only checked in send and sendHeader, doesn't need to be\n\t// synchronized.\n\tserverHeaderBinlogged bool\n\n\tmu sync.Mutex // protects trInfo.tr after the service handler runs.\n}\n\nfunc (ss *serverStream) Context() context.Context {\n\treturn ss.ctx\n}\n\nfunc (ss *serverStream) SetHeader(md metadata.MD) error {\n\tif md.Len() == 0 {\n\t\treturn nil\n\t}\n\terr := imetadata.Validate(md)\n\tif err != nil {\n\t\treturn status.Error(codes.Internal, err.Error())\n\t}\n\treturn ss.s.SetHeader(md)\n}\n\nfunc (ss *serverStream) SendHeader(md metadata.MD) error {\n\terr := imetadata.Validate(md)\n\tif err != nil {\n\t\treturn status.Error(codes.Internal, err.Error())\n\t}\n\n\terr = ss.t.WriteHeader(ss.s, md)\n\tif len(ss.binlogs) != 0 && !ss.serverHeaderBinlogged {\n\t\th, _ := ss.s.Header()\n\t\tsh := &binarylog.ServerHeader{\n\t\t\tHeader: h,\n\t\t}\n\t\tss.serverHeaderBinlogged = true\n\t\tfor _, binlog := range ss.binlogs {\n\t\t\tbinlog.Log(ss.ctx, sh)\n\t\t}\n\t}\n\treturn err\n}\n\nfunc (ss *serverStream) SetTrailer(md metadata.MD) {\n\tif md.Len() == 0 {\n\t\treturn\n\t}\n\tif err := imetadata.Validate(md); err != nil {\n\t\tlogger.Errorf(\"stream: failed to validate md when setting trailer, err: %v\", err)\n\t}\n\tss.s.SetTrailer(md)\n}\n\nfunc (ss *serverStream) SendMsg(m any) (err error) {\n\tdefer func() {\n\t\tif ss.trInfo != nil {\n\t\t\tss.mu.Lock()\n\t\t\tif ss.trInfo.tr != nil {\n\t\t\t\tif err == nil {\n\t\t\t\t\tss.trInfo.tr.LazyLog(&payload{sent: true, msg: m}, true)\n\t\t\t\t} else {\n\t\t\t\t\tss.trInfo.tr.LazyLog(&fmtStringer{\"%v\", []any{err}}, true)\n\t\t\t\t\tss.trInfo.tr.SetError()\n\t\t\t\t}\n\t\t\t}\n\t\t\tss.mu.Unlock()\n\t\t}\n\t\tif err != nil && err != io.EOF {\n\t\t\tst, _ := status.FromError(toRPCErr(err))\n\t\t\tss.t.WriteStatus(ss.s, st)\n\t\t\t// Non-user specified status was sent out. This should be an error\n\t\t\t// case (as a server side Cancel maybe).\n\t\t\t//\n\t\t\t// This is not handled specifically now. User will return a final\n\t\t\t// status from the service handler, we will log that error instead.\n\t\t\t// This behavior is similar to an interceptor.\n\t\t}\n\t\tif channelz.IsOn() && err == nil {\n\t\t\tss.t.IncrMsgSent()\n\t\t}\n\t}()\n\n\t// Server handler could have set new compressor by calling SetSendCompressor.\n\t// In case it is set, we need to use it for compressing outbound message.\n\tif sendCompressorsName := ss.s.SendCompress(); sendCompressorsName != ss.sendCompressorName {\n\t\tss.comp = encoding.GetCompressor(sendCompressorsName)\n\t\tss.sendCompressorName = sendCompressorsName\n\t}\n\n\t// load hdr, payload, data\n\thdr, payload, data, err := prepareMsg(m, ss.codec, ss.cp, ss.comp)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// TODO(dfawley): should we be checking len(data) instead?\n\tif len(payload) > ss.maxSendMessageSize {\n\t\treturn status.Errorf(codes.ResourceExhausted, \"trying to send message larger than max (%d vs. %d)\", len(payload), ss.maxSendMessageSize)\n\t}\n\tif err := ss.t.Write(ss.s, hdr, payload, &transport.Options{Last: false}); err != nil {\n\t\treturn toRPCErr(err)\n\t}\n\tif len(ss.binlogs) != 0 {\n\t\tif !ss.serverHeaderBinlogged {\n\t\t\th, _ := ss.s.Header()\n\t\t\tsh := &binarylog.ServerHeader{\n\t\t\t\tHeader: h,\n\t\t\t}\n\t\t\tss.serverHeaderBinlogged = true\n\t\t\tfor _, binlog := range ss.binlogs {\n\t\t\t\tbinlog.Log(ss.ctx, sh)\n\t\t\t}\n\t\t}\n\t\tsm := &binarylog.ServerMessage{\n\t\t\tMessage: data,\n\t\t}\n\t\tfor _, binlog := range ss.binlogs {\n\t\t\tbinlog.Log(ss.ctx, sm)\n\t\t}\n\t}\n\tif len(ss.statsHandler) != 0 {\n\t\tfor _, sh := range ss.statsHandler {\n\t\t\tsh.HandleRPC(ss.s.Context(), outPayload(false, m, data, payload, time.Now()))\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (ss *serverStream) RecvMsg(m any) (err error) {\n\tdefer func() {\n\t\tif ss.trInfo != nil {\n\t\t\tss.mu.Lock()\n\t\t\tif ss.trInfo.tr != nil {\n\t\t\t\tif err == nil {\n\t\t\t\t\tss.trInfo.tr.LazyLog(&payload{sent: false, msg: m}, true)\n\t\t\t\t} else if err != io.EOF {\n\t\t\t\t\tss.trInfo.tr.LazyLog(&fmtStringer{\"%v\", []any{err}}, true)\n\t\t\t\t\tss.trInfo.tr.SetError()\n\t\t\t\t}\n\t\t\t}\n\t\t\tss.mu.Unlock()\n\t\t}\n\t\tif err != nil && err != io.EOF {\n\t\t\tst, _ := status.FromError(toRPCErr(err))\n\t\t\tss.t.WriteStatus(ss.s, st)\n\t\t\t// Non-user specified status was sent out. This should be an error\n\t\t\t// case (as a server side Cancel maybe).\n\t\t\t//\n\t\t\t// This is not handled specifically now. User will return a final\n\t\t\t// status from the service handler, we will log that error instead.\n\t\t\t// This behavior is similar to an interceptor.\n\t\t}\n\t\tif channelz.IsOn() && err == nil {\n\t\t\tss.t.IncrMsgRecv()\n\t\t}\n\t}()\n\tvar payInfo *payloadInfo\n\tif len(ss.statsHandler) != 0 || len(ss.binlogs) != 0 {\n\t\tpayInfo = &payloadInfo{}\n\t}\n\tif err := recv(ss.p, ss.codec, ss.s, ss.dc, m, ss.maxReceiveMessageSize, payInfo, ss.decomp); err != nil {\n\t\tif err == io.EOF {\n\t\t\tif len(ss.binlogs) != 0 {\n\t\t\t\tchc := &binarylog.ClientHalfClose{}\n\t\t\t\tfor _, binlog := range ss.binlogs {\n\t\t\t\t\tbinlog.Log(ss.ctx, chc)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t\tif err == io.ErrUnexpectedEOF {\n\t\t\terr = status.Errorf(codes.Internal, io.ErrUnexpectedEOF.Error())\n\t\t}\n\t\treturn toRPCErr(err)\n\t}\n\tif len(ss.statsHandler) != 0 {\n\t\tfor _, sh := range ss.statsHandler {\n\t\t\tsh.HandleRPC(ss.s.Context(), &stats.InPayload{\n\t\t\t\tRecvTime: time.Now(),\n\t\t\t\tPayload:  m,\n\t\t\t\t// TODO truncate large payload.\n\t\t\t\tData:             payInfo.uncompressedBytes,\n\t\t\t\tLength:           len(payInfo.uncompressedBytes),\n\t\t\t\tWireLength:       payInfo.compressedLength + headerLen,\n\t\t\t\tCompressedLength: payInfo.compressedLength,\n\t\t\t})\n\t\t}\n\t}\n\tif len(ss.binlogs) != 0 {\n\t\tcm := &binarylog.ClientMessage{\n\t\t\tMessage: payInfo.uncompressedBytes,\n\t\t}\n\t\tfor _, binlog := range ss.binlogs {\n\t\t\tbinlog.Log(ss.ctx, cm)\n\t\t}\n\t}\n\treturn nil\n}\n\n// MethodFromServerStream returns the method string for the input stream.\n// The returned string is in the format of \"/service/method\".\nfunc MethodFromServerStream(stream ServerStream) (string, bool) {\n\treturn Method(stream.Context())\n}\n\n// prepareMsg returns the hdr, payload and data\n// using the compressors passed or using the\n// passed preparedmsg\nfunc prepareMsg(m any, codec baseCodec, cp Compressor, comp encoding.Compressor) (hdr, payload, data []byte, err error) {\n\tif preparedMsg, ok := m.(*PreparedMsg); ok {\n\t\treturn preparedMsg.hdr, preparedMsg.payload, preparedMsg.encodedData, nil\n\t}\n\t// The input interface is not a prepared msg.\n\t// Marshal and Compress the data at this point\n\tdata, err = encode(codec, m)\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\tcompData, err := compress(data, cp, comp)\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\thdr, payload = msgHeader(data, compData)\n\treturn hdr, payload, data, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/tap/tap.go",
    "content": "/*\n *\n * Copyright 2016 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n// Package tap defines the function handles which are executed on the transport\n// layer of gRPC-Go and related information.\n//\n// # Experimental\n//\n// Notice: This API is EXPERIMENTAL and may be changed or removed in a\n// later release.\npackage tap\n\nimport (\n\t\"context\"\n\n\t\"google.golang.org/grpc/metadata\"\n)\n\n// Info defines the relevant information needed by the handles.\ntype Info struct {\n\t// FullMethodName is the string of grpc method (in the format of\n\t// /package.service/method).\n\tFullMethodName string\n\n\t// Header contains the header metadata received.\n\tHeader metadata.MD\n\n\t// TODO: More to be added.\n}\n\n// ServerInHandle defines the function which runs before a new stream is\n// created on the server side. If it returns a non-nil error, the stream will\n// not be created and an error will be returned to the client.  If the error\n// returned is a status error, that status code and message will be used,\n// otherwise PermissionDenied will be the code and err.Error() will be the\n// message.\n//\n// It's intended to be used in situations where you don't want to waste the\n// resources to accept the new stream (e.g. rate-limiting). For other general\n// usages, please use interceptors.\n//\n// Note that it is executed in the per-connection I/O goroutine(s) instead of\n// per-RPC goroutine. Therefore, users should NOT have any\n// blocking/time-consuming work in this handle. Otherwise all the RPCs would\n// slow down. Also, for the same reason, this handle won't be called\n// concurrently by gRPC.\ntype ServerInHandle func(ctx context.Context, info *Info) (context.Context, error)\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/trace.go",
    "content": "/*\n *\n * Copyright 2015 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"golang.org/x/net/trace\"\n)\n\n// EnableTracing controls whether to trace RPCs using the golang.org/x/net/trace package.\n// This should only be set before any RPCs are sent or received by this program.\nvar EnableTracing bool\n\n// methodFamily returns the trace family for the given method.\n// It turns \"/pkg.Service/GetFoo\" into \"pkg.Service\".\nfunc methodFamily(m string) string {\n\tm = strings.TrimPrefix(m, \"/\") // remove leading slash\n\tif i := strings.Index(m, \"/\"); i >= 0 {\n\t\tm = m[:i] // remove everything from second slash\n\t}\n\treturn m\n}\n\n// traceInfo contains tracing information for an RPC.\ntype traceInfo struct {\n\ttr        trace.Trace\n\tfirstLine firstLine\n}\n\n// firstLine is the first line of an RPC trace.\n// It may be mutated after construction; remoteAddr specifically may change\n// during client-side use.\ntype firstLine struct {\n\tmu         sync.Mutex\n\tclient     bool // whether this is a client (outgoing) RPC\n\tremoteAddr net.Addr\n\tdeadline   time.Duration // may be zero\n}\n\nfunc (f *firstLine) SetRemoteAddr(addr net.Addr) {\n\tf.mu.Lock()\n\tf.remoteAddr = addr\n\tf.mu.Unlock()\n}\n\nfunc (f *firstLine) String() string {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\tvar line bytes.Buffer\n\tio.WriteString(&line, \"RPC: \")\n\tif f.client {\n\t\tio.WriteString(&line, \"to\")\n\t} else {\n\t\tio.WriteString(&line, \"from\")\n\t}\n\tfmt.Fprintf(&line, \" %v deadline:\", f.remoteAddr)\n\tif f.deadline != 0 {\n\t\tfmt.Fprint(&line, f.deadline)\n\t} else {\n\t\tio.WriteString(&line, \"none\")\n\t}\n\treturn line.String()\n}\n\nconst truncateSize = 100\n\nfunc truncate(x string, l int) string {\n\tif l > len(x) {\n\t\treturn x\n\t}\n\treturn x[:l]\n}\n\n// payload represents an RPC request or response payload.\ntype payload struct {\n\tsent bool // whether this is an outgoing payload\n\tmsg  any  // e.g. a proto.Message\n\t// TODO(dsymonds): add stringifying info to codec, and limit how much we hold here?\n}\n\nfunc (p payload) String() string {\n\tif p.sent {\n\t\treturn truncate(fmt.Sprintf(\"sent: %v\", p.msg), truncateSize)\n\t}\n\treturn truncate(fmt.Sprintf(\"recv: %v\", p.msg), truncateSize)\n}\n\ntype fmtStringer struct {\n\tformat string\n\ta      []any\n}\n\nfunc (f *fmtStringer) String() string {\n\treturn fmt.Sprintf(f.format, f.a...)\n}\n\ntype stringer string\n\nfunc (s stringer) String() string { return string(s) }\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/version.go",
    "content": "/*\n *\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage grpc\n\n// Version is the current grpc version.\nconst Version = \"1.59.0\"\n"
  },
  {
    "path": "vendor/google.golang.org/grpc/vet.sh",
    "content": "#!/bin/bash\n\nset -ex  # Exit on error; debugging enabled.\nset -o pipefail  # Fail a pipe if any sub-command fails.\n\n# not makes sure the command passed to it does not exit with a return code of 0.\nnot() {\n  # This is required instead of the earlier (! $COMMAND) because subshells and\n  # pipefail don't work the same on Darwin as in Linux.\n  ! \"$@\"\n}\n\ndie() {\n  echo \"$@\" >&2\n  exit 1\n}\n\nfail_on_output() {\n  tee /dev/stderr | not read\n}\n\n# Check to make sure it's safe to modify the user's git repo.\ngit status --porcelain | fail_on_output\n\n# Undo any edits made by this script.\ncleanup() {\n  git reset --hard HEAD\n}\ntrap cleanup EXIT\n\nPATH=\"${HOME}/go/bin:${GOROOT}/bin:${PATH}\"\ngo version\n\nif [[ \"$1\" = \"-install\" ]]; then\n  # Install the pinned versions as defined in module tools.\n  pushd ./test/tools\n  go install \\\n    golang.org/x/lint/golint \\\n    golang.org/x/tools/cmd/goimports \\\n    honnef.co/go/tools/cmd/staticcheck \\\n    github.com/client9/misspell/cmd/misspell\n  popd\n  if [[ -z \"${VET_SKIP_PROTO}\" ]]; then\n    if [[ \"${GITHUB_ACTIONS}\" = \"true\" ]]; then\n      PROTOBUF_VERSION=22.0 # a.k.a v4.22.0 in pb.go files.\n      PROTOC_FILENAME=protoc-${PROTOBUF_VERSION}-linux-x86_64.zip\n      pushd /home/runner/go\n      wget https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/${PROTOC_FILENAME}\n      unzip ${PROTOC_FILENAME}\n      bin/protoc --version\n      popd\n    elif not which protoc > /dev/null; then\n      die \"Please install protoc into your path\"\n    fi\n  fi\n  exit 0\nelif [[ \"$#\" -ne 0 ]]; then\n  die \"Unknown argument(s): $*\"\nfi\n\n# - Check that generated proto files are up to date.\nif [[ -z \"${VET_SKIP_PROTO}\" ]]; then\n  make proto && git status --porcelain 2>&1 | fail_on_output || \\\n    (git status; git --no-pager diff; exit 1)\nfi\n\nif [[ -n \"${VET_ONLY_PROTO}\" ]]; then\n  exit 0\nfi\n\n# - Ensure all source files contain a copyright message.\n# (Done in two parts because Darwin \"git grep\" has broken support for compound\n# exclusion matches.)\n(grep -L \"DO NOT EDIT\" $(git grep -L \"\\(Copyright [0-9]\\{4,\\} gRPC authors\\)\" -- '*.go') || true) | fail_on_output\n\n# - Make sure all tests in grpc and grpc/test use leakcheck via Teardown.\nnot grep 'func Test[^(]' *_test.go\nnot grep 'func Test[^(]' test/*.go\n\n# - Do not import x/net/context.\nnot git grep -l 'x/net/context' -- \"*.go\"\n\n# - Do not import math/rand for real library code.  Use internal/grpcrand for\n#   thread safety.\ngit grep -l '\"math/rand\"' -- \"*.go\" 2>&1 | not grep -v '^examples\\|^stress\\|grpcrand\\|^benchmark\\|wrr_test'\n\n# - Do not use \"interface{}\"; use \"any\" instead.\ngit grep -l 'interface{}' -- \"*.go\" 2>&1 | not grep -v '\\.pb\\.go\\|protoc-gen-go-grpc'\n\n# - Do not call grpclog directly. Use grpclog.Component instead.\ngit grep -l -e 'grpclog.I' --or -e 'grpclog.W' --or -e 'grpclog.E' --or -e 'grpclog.F' --or -e 'grpclog.V' -- \"*.go\" | not grep -v '^grpclog/component.go\\|^internal/grpctest/tlogger_test.go'\n\n# - Ensure all ptypes proto packages are renamed when importing.\nnot git grep \"\\(import \\|^\\s*\\)\\\"github.com/golang/protobuf/ptypes/\" -- \"*.go\"\n\n# - Ensure all usages of grpc_testing package are renamed when importing.\nnot git grep \"\\(import \\|^\\s*\\)\\\"google.golang.org/grpc/interop/grpc_testing\" -- \"*.go\" \n\n# - Ensure all xds proto imports are renamed to *pb or *grpc.\ngit grep '\"github.com/envoyproxy/go-control-plane/envoy' -- '*.go' ':(exclude)*.pb.go' | not grep -v 'pb \"\\|grpc \"'\n\nmisspell -error .\n\n# - gofmt, goimports, golint (with exceptions for generated code), go vet,\n# go mod tidy.\n# Perform these checks on each module inside gRPC.\nfor MOD_FILE in $(find . -name 'go.mod'); do\n  MOD_DIR=$(dirname ${MOD_FILE})\n  pushd ${MOD_DIR}\n  go vet -all ./... | fail_on_output\n  gofmt -s -d -l . 2>&1 | fail_on_output\n  goimports -l . 2>&1 | not grep -vE \"\\.pb\\.go\"\n  golint ./... 2>&1 | not grep -vE \"/grpc_testing_not_regenerate/.*\\.pb\\.go:\"\n\n  go mod tidy -compat=1.19\n  git status --porcelain 2>&1 | fail_on_output || \\\n    (git status; git --no-pager diff; exit 1)\n  popd\ndone\n\n# - Collection of static analysis checks\n#\n# TODO(dfawley): don't use deprecated functions in examples or first-party\n# plugins.\n# TODO(dfawley): enable ST1019 (duplicate imports) but allow for protobufs.\nSC_OUT=\"$(mktemp)\"\nstaticcheck -go 1.19 -checks 'inherit,-ST1015,-ST1019,-SA1019' ./... > \"${SC_OUT}\" || true\n# Error if anything other than deprecation warnings are printed.\nnot grep -v \"is deprecated:.*SA1019\" \"${SC_OUT}\"\n# Only ignore the following deprecated types/fields/functions.\nnot grep -Fv '.CredsBundle\n.HeaderMap\n.Metadata is deprecated: use Attributes\n.NewAddress\n.NewServiceConfig\n.Type is deprecated: use Attributes\nBuildVersion is deprecated\nbalancer.ErrTransientFailure\nbalancer.Picker\nextDesc.Filename is deprecated\ngithub.com/golang/protobuf/jsonpb is deprecated\ngrpc.CallCustomCodec\ngrpc.Code\ngrpc.Compressor\ngrpc.CustomCodec\ngrpc.Decompressor\ngrpc.MaxMsgSize\ngrpc.MethodConfig\ngrpc.NewGZIPCompressor\ngrpc.NewGZIPDecompressor\ngrpc.RPCCompressor\ngrpc.RPCDecompressor\ngrpc.ServiceConfig\ngrpc.WithCompressor\ngrpc.WithDecompressor\ngrpc.WithDialer\ngrpc.WithMaxMsgSize\ngrpc.WithServiceConfig\ngrpc.WithTimeout\nhttp.CloseNotifier\ninfo.SecurityVersion\nproto is deprecated\nproto.InternalMessageInfo is deprecated\nproto.EnumName is deprecated\nproto.ErrInternalBadWireType is deprecated\nproto.FileDescriptor is deprecated\nproto.Marshaler is deprecated\nproto.MessageType is deprecated\nproto.RegisterEnum is deprecated\nproto.RegisterFile is deprecated\nproto.RegisterType is deprecated\nproto.RegisterExtension is deprecated\nproto.RegisteredExtension is deprecated\nproto.RegisteredExtensions is deprecated\nproto.RegisterMapType is deprecated\nproto.Unmarshaler is deprecated\nTarget is deprecated: Use the Target field in the BuildOptions instead.\nxxx_messageInfo_\n' \"${SC_OUT}\"\n\n# - special golint on package comments.\nlint_package_comment_per_package() {\n  # Number of files in this go package.\n  fileCount=$(go list -f '{{len .GoFiles}}' $1)\n  if [ ${fileCount} -eq 0 ]; then\n    return 0\n  fi\n  # Number of package errors generated by golint.\n  lintPackageCommentErrorsCount=$(golint --min_confidence 0 $1 | grep -c \"should have a package comment\")\n  # golint complains about every file that's missing the package comment. If the\n  # number of files for this package is greater than the number of errors, there's\n  # at least one file with package comment, good. Otherwise, fail.\n  if [ ${fileCount} -le ${lintPackageCommentErrorsCount} ]; then\n    echo \"Package $1 (with ${fileCount} files) is missing package comment\"\n    return 1\n  fi\n}\nlint_package_comment() {\n  set +ex\n\n  count=0\n  for i in $(go list ./...); do\n    lint_package_comment_per_package \"$i\"\n    ((count += $?))\n  done\n\n  set -ex\n  return $count\n}\nlint_package_comment\n\necho SUCCESS\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/LICENSE",
    "content": "Copyright (c) 2018 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n   * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n   * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n   * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/PATENTS",
    "content": "Additional IP Rights Grant (Patents)\n\n\"This implementation\" means the copyrightable works distributed by\nGoogle as part of the Go project.\n\nGoogle hereby grants to You a perpetual, worldwide, non-exclusive,\nno-charge, royalty-free, irrevocable (except as stated in this section)\npatent license to make, have made, use, offer to sell, sell, import,\ntransfer and otherwise run, modify and propagate the contents of this\nimplementation of Go, where such license applies only to those patent\nclaims, both currently owned or controlled by Google and acquired in\nthe future, licensable by Google that are necessarily infringed by this\nimplementation of Go.  This grant does not include claims that would be\ninfringed only as a consequence of further modification of this\nimplementation.  If you or your agent or exclusive licensee institute or\norder or agree to the institution of patent litigation against any\nentity (including a cross-claim or counterclaim in a lawsuit) alleging\nthat this implementation of Go or any code incorporated within this\nimplementation of Go constitutes direct or contributory patent\ninfringement, or inducement of patent infringement, then any patent\nrights granted to you under this License for this implementation of Go\nshall terminate as of the date such litigation is filed.\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/protojson/decode.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protojson\n\nimport (\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/encoding/json\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/set\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Unmarshal reads the given []byte into the given proto.Message.\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc Unmarshal(b []byte, m proto.Message) error {\n\treturn UnmarshalOptions{}.Unmarshal(b, m)\n}\n\n// UnmarshalOptions is a configurable JSON format parser.\ntype UnmarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// If AllowPartial is set, input for messages that will result in missing\n\t// required fields will not return an error.\n\tAllowPartial bool\n\n\t// If DiscardUnknown is set, unknown fields are ignored.\n\tDiscardUnknown bool\n\n\t// Resolver is used for looking up types when unmarshaling\n\t// google.protobuf.Any messages or extension fields.\n\t// If nil, this defaults to using protoregistry.GlobalTypes.\n\tResolver interface {\n\t\tprotoregistry.MessageTypeResolver\n\t\tprotoregistry.ExtensionTypeResolver\n\t}\n}\n\n// Unmarshal reads the given []byte and populates the given proto.Message\n// using options in the UnmarshalOptions object.\n// It will clear the message first before setting the fields.\n// If it returns an error, the given message may be partially set.\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error {\n\treturn o.unmarshal(b, m)\n}\n\n// unmarshal is a centralized function that all unmarshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for unmarshal that do not go through this.\nfunc (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error {\n\tproto.Reset(m)\n\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\n\tdec := decoder{json.NewDecoder(b), o}\n\tif err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil {\n\t\treturn err\n\t}\n\n\t// Check for EOF.\n\ttok, err := dec.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.EOF {\n\t\treturn dec.unexpectedTokenError(tok)\n\t}\n\n\tif o.AllowPartial {\n\t\treturn nil\n\t}\n\treturn proto.CheckInitialized(m)\n}\n\ntype decoder struct {\n\t*json.Decoder\n\topts UnmarshalOptions\n}\n\n// newError returns an error object with position info.\nfunc (d decoder) newError(pos int, f string, x ...interface{}) error {\n\tline, column := d.Position(pos)\n\thead := fmt.Sprintf(\"(line %d:%d): \", line, column)\n\treturn errors.New(head+f, x...)\n}\n\n// unexpectedTokenError returns a syntax error for the given unexpected token.\nfunc (d decoder) unexpectedTokenError(tok json.Token) error {\n\treturn d.syntaxError(tok.Pos(), \"unexpected token %s\", tok.RawString())\n}\n\n// syntaxError returns a syntax error for given position.\nfunc (d decoder) syntaxError(pos int, f string, x ...interface{}) error {\n\tline, column := d.Position(pos)\n\thead := fmt.Sprintf(\"syntax error (line %d:%d): \", line, column)\n\treturn errors.New(head+f, x...)\n}\n\n// unmarshalMessage unmarshals a message into the given protoreflect.Message.\nfunc (d decoder) unmarshalMessage(m protoreflect.Message, skipTypeURL bool) error {\n\tif unmarshal := wellKnownTypeUnmarshaler(m.Descriptor().FullName()); unmarshal != nil {\n\t\treturn unmarshal(d, m)\n\t}\n\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.ObjectOpen {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\n\tmessageDesc := m.Descriptor()\n\tif !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {\n\t\treturn errors.New(\"no support for proto1 MessageSets\")\n\t}\n\n\tvar seenNums set.Ints\n\tvar seenOneofs set.Ints\n\tfieldDescs := messageDesc.Fields()\n\tfor {\n\t\t// Read field name.\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tdefault:\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\tcase json.ObjectClose:\n\t\t\treturn nil\n\t\tcase json.Name:\n\t\t\t// Continue below.\n\t\t}\n\n\t\tname := tok.Name()\n\t\t// Unmarshaling a non-custom embedded message in Any will contain the\n\t\t// JSON field \"@type\" which should be skipped because it is not a field\n\t\t// of the embedded message, but simply an artifact of the Any format.\n\t\tif skipTypeURL && name == \"@type\" {\n\t\t\td.Read()\n\t\t\tcontinue\n\t\t}\n\n\t\t// Get the FieldDescriptor.\n\t\tvar fd protoreflect.FieldDescriptor\n\t\tif strings.HasPrefix(name, \"[\") && strings.HasSuffix(name, \"]\") {\n\t\t\t// Only extension names are in [name] format.\n\t\t\textName := protoreflect.FullName(name[1 : len(name)-1])\n\t\t\textType, err := d.opts.Resolver.FindExtensionByName(extName)\n\t\t\tif err != nil && err != protoregistry.NotFound {\n\t\t\t\treturn d.newError(tok.Pos(), \"unable to resolve %s: %v\", tok.RawString(), err)\n\t\t\t}\n\t\t\tif extType != nil {\n\t\t\t\tfd = extType.TypeDescriptor()\n\t\t\t\tif !messageDesc.ExtensionRanges().Has(fd.Number()) || fd.ContainingMessage().FullName() != messageDesc.FullName() {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"message %v cannot be extended by %v\", messageDesc.FullName(), fd.FullName())\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// The name can either be the JSON name or the proto field name.\n\t\t\tfd = fieldDescs.ByJSONName(name)\n\t\t\tif fd == nil {\n\t\t\t\tfd = fieldDescs.ByTextName(name)\n\t\t\t}\n\t\t}\n\t\tif flags.ProtoLegacy {\n\t\t\tif fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() {\n\t\t\t\tfd = nil // reset since the weak reference is not linked in\n\t\t\t}\n\t\t}\n\n\t\tif fd == nil {\n\t\t\t// Field is unknown.\n\t\t\tif d.opts.DiscardUnknown {\n\t\t\t\tif err := d.skipJSONValue(); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn d.newError(tok.Pos(), \"unknown field %v\", tok.RawString())\n\t\t}\n\n\t\t// Do not allow duplicate fields.\n\t\tnum := uint64(fd.Number())\n\t\tif seenNums.Has(num) {\n\t\t\treturn d.newError(tok.Pos(), \"duplicate field %v\", tok.RawString())\n\t\t}\n\t\tseenNums.Set(num)\n\n\t\t// No need to set values for JSON null unless the field type is\n\t\t// google.protobuf.Value or google.protobuf.NullValue.\n\t\tif tok, _ := d.Peek(); tok.Kind() == json.Null && !isKnownValue(fd) && !isNullValue(fd) {\n\t\t\td.Read()\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch {\n\t\tcase fd.IsList():\n\t\t\tlist := m.Mutable(fd).List()\n\t\t\tif err := d.unmarshalList(list, fd); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase fd.IsMap():\n\t\t\tmmap := m.Mutable(fd).Map()\n\t\t\tif err := d.unmarshalMap(mmap, fd); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tdefault:\n\t\t\t// If field is a oneof, check if it has already been set.\n\t\t\tif od := fd.ContainingOneof(); od != nil {\n\t\t\t\tidx := uint64(od.Index())\n\t\t\t\tif seenOneofs.Has(idx) {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"error parsing %s, oneof %v is already set\", tok.RawString(), od.FullName())\n\t\t\t\t}\n\t\t\t\tseenOneofs.Set(idx)\n\t\t\t}\n\n\t\t\t// Required or optional fields.\n\t\t\tif err := d.unmarshalSingular(m, fd); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc isKnownValue(fd protoreflect.FieldDescriptor) bool {\n\tmd := fd.Message()\n\treturn md != nil && md.FullName() == genid.Value_message_fullname\n}\n\nfunc isNullValue(fd protoreflect.FieldDescriptor) bool {\n\ted := fd.Enum()\n\treturn ed != nil && ed.FullName() == genid.NullValue_enum_fullname\n}\n\n// unmarshalSingular unmarshals to the non-repeated field specified\n// by the given FieldDescriptor.\nfunc (d decoder) unmarshalSingular(m protoreflect.Message, fd protoreflect.FieldDescriptor) error {\n\tvar val protoreflect.Value\n\tvar err error\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tval = m.NewField(fd)\n\t\terr = d.unmarshalMessage(val.Message(), false)\n\tdefault:\n\t\tval, err = d.unmarshalScalar(fd)\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\tm.Set(fd, val)\n\treturn nil\n}\n\n// unmarshalScalar unmarshals to a scalar/enum protoreflect.Value specified by\n// the given FieldDescriptor.\nfunc (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {\n\tconst b32 int = 32\n\tconst b64 int = 64\n\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn protoreflect.Value{}, err\n\t}\n\n\tkind := fd.Kind()\n\tswitch kind {\n\tcase protoreflect.BoolKind:\n\t\tif tok.Kind() == json.Bool {\n\t\t\treturn protoreflect.ValueOfBool(tok.Bool()), nil\n\t\t}\n\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif v, ok := unmarshalInt(tok, b32); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif v, ok := unmarshalInt(tok, b64); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif v, ok := unmarshalUint(tok, b32); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif v, ok := unmarshalUint(tok, b64); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.FloatKind:\n\t\tif v, ok := unmarshalFloat(tok, b32); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.DoubleKind:\n\t\tif v, ok := unmarshalFloat(tok, b64); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.StringKind:\n\t\tif tok.Kind() == json.String {\n\t\t\treturn protoreflect.ValueOfString(tok.ParsedString()), nil\n\t\t}\n\n\tcase protoreflect.BytesKind:\n\t\tif v, ok := unmarshalBytes(tok); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tcase protoreflect.EnumKind:\n\t\tif v, ok := unmarshalEnum(tok, fd); ok {\n\t\t\treturn v, nil\n\t\t}\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unmarshalScalar: invalid scalar kind %v\", kind))\n\t}\n\n\treturn protoreflect.Value{}, d.newError(tok.Pos(), \"invalid value for %v type: %v\", kind, tok.RawString())\n}\n\nfunc unmarshalInt(tok json.Token, bitSize int) (protoreflect.Value, bool) {\n\tswitch tok.Kind() {\n\tcase json.Number:\n\t\treturn getInt(tok, bitSize)\n\n\tcase json.String:\n\t\t// Decode number from string.\n\t\ts := strings.TrimSpace(tok.ParsedString())\n\t\tif len(s) != len(tok.ParsedString()) {\n\t\t\treturn protoreflect.Value{}, false\n\t\t}\n\t\tdec := json.NewDecoder([]byte(s))\n\t\ttok, err := dec.Read()\n\t\tif err != nil {\n\t\t\treturn protoreflect.Value{}, false\n\t\t}\n\t\treturn getInt(tok, bitSize)\n\t}\n\treturn protoreflect.Value{}, false\n}\n\nfunc getInt(tok json.Token, bitSize int) (protoreflect.Value, bool) {\n\tn, ok := tok.Int(bitSize)\n\tif !ok {\n\t\treturn protoreflect.Value{}, false\n\t}\n\tif bitSize == 32 {\n\t\treturn protoreflect.ValueOfInt32(int32(n)), true\n\t}\n\treturn protoreflect.ValueOfInt64(n), true\n}\n\nfunc unmarshalUint(tok json.Token, bitSize int) (protoreflect.Value, bool) {\n\tswitch tok.Kind() {\n\tcase json.Number:\n\t\treturn getUint(tok, bitSize)\n\n\tcase json.String:\n\t\t// Decode number from string.\n\t\ts := strings.TrimSpace(tok.ParsedString())\n\t\tif len(s) != len(tok.ParsedString()) {\n\t\t\treturn protoreflect.Value{}, false\n\t\t}\n\t\tdec := json.NewDecoder([]byte(s))\n\t\ttok, err := dec.Read()\n\t\tif err != nil {\n\t\t\treturn protoreflect.Value{}, false\n\t\t}\n\t\treturn getUint(tok, bitSize)\n\t}\n\treturn protoreflect.Value{}, false\n}\n\nfunc getUint(tok json.Token, bitSize int) (protoreflect.Value, bool) {\n\tn, ok := tok.Uint(bitSize)\n\tif !ok {\n\t\treturn protoreflect.Value{}, false\n\t}\n\tif bitSize == 32 {\n\t\treturn protoreflect.ValueOfUint32(uint32(n)), true\n\t}\n\treturn protoreflect.ValueOfUint64(n), true\n}\n\nfunc unmarshalFloat(tok json.Token, bitSize int) (protoreflect.Value, bool) {\n\tswitch tok.Kind() {\n\tcase json.Number:\n\t\treturn getFloat(tok, bitSize)\n\n\tcase json.String:\n\t\ts := tok.ParsedString()\n\t\tswitch s {\n\t\tcase \"NaN\":\n\t\t\tif bitSize == 32 {\n\t\t\t\treturn protoreflect.ValueOfFloat32(float32(math.NaN())), true\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfFloat64(math.NaN()), true\n\t\tcase \"Infinity\":\n\t\t\tif bitSize == 32 {\n\t\t\t\treturn protoreflect.ValueOfFloat32(float32(math.Inf(+1))), true\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfFloat64(math.Inf(+1)), true\n\t\tcase \"-Infinity\":\n\t\t\tif bitSize == 32 {\n\t\t\t\treturn protoreflect.ValueOfFloat32(float32(math.Inf(-1))), true\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfFloat64(math.Inf(-1)), true\n\t\t}\n\n\t\t// Decode number from string.\n\t\tif len(s) != len(strings.TrimSpace(s)) {\n\t\t\treturn protoreflect.Value{}, false\n\t\t}\n\t\tdec := json.NewDecoder([]byte(s))\n\t\ttok, err := dec.Read()\n\t\tif err != nil {\n\t\t\treturn protoreflect.Value{}, false\n\t\t}\n\t\treturn getFloat(tok, bitSize)\n\t}\n\treturn protoreflect.Value{}, false\n}\n\nfunc getFloat(tok json.Token, bitSize int) (protoreflect.Value, bool) {\n\tn, ok := tok.Float(bitSize)\n\tif !ok {\n\t\treturn protoreflect.Value{}, false\n\t}\n\tif bitSize == 32 {\n\t\treturn protoreflect.ValueOfFloat32(float32(n)), true\n\t}\n\treturn protoreflect.ValueOfFloat64(n), true\n}\n\nfunc unmarshalBytes(tok json.Token) (protoreflect.Value, bool) {\n\tif tok.Kind() != json.String {\n\t\treturn protoreflect.Value{}, false\n\t}\n\n\ts := tok.ParsedString()\n\tenc := base64.StdEncoding\n\tif strings.ContainsAny(s, \"-_\") {\n\t\tenc = base64.URLEncoding\n\t}\n\tif len(s)%4 != 0 {\n\t\tenc = enc.WithPadding(base64.NoPadding)\n\t}\n\tb, err := enc.DecodeString(s)\n\tif err != nil {\n\t\treturn protoreflect.Value{}, false\n\t}\n\treturn protoreflect.ValueOfBytes(b), true\n}\n\nfunc unmarshalEnum(tok json.Token, fd protoreflect.FieldDescriptor) (protoreflect.Value, bool) {\n\tswitch tok.Kind() {\n\tcase json.String:\n\t\t// Lookup EnumNumber based on name.\n\t\ts := tok.ParsedString()\n\t\tif enumVal := fd.Enum().Values().ByName(protoreflect.Name(s)); enumVal != nil {\n\t\t\treturn protoreflect.ValueOfEnum(enumVal.Number()), true\n\t\t}\n\n\tcase json.Number:\n\t\tif n, ok := tok.Int(32); ok {\n\t\t\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(n)), true\n\t\t}\n\n\tcase json.Null:\n\t\t// This is only valid for google.protobuf.NullValue.\n\t\tif isNullValue(fd) {\n\t\t\treturn protoreflect.ValueOfEnum(0), true\n\t\t}\n\t}\n\n\treturn protoreflect.Value{}, false\n}\n\nfunc (d decoder) unmarshalList(list protoreflect.List, fd protoreflect.FieldDescriptor) error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.ArrayOpen {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tfor {\n\t\t\ttok, err := d.Peek()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif tok.Kind() == json.ArrayClose {\n\t\t\t\td.Read()\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\tval := list.NewElement()\n\t\t\tif err := d.unmarshalMessage(val.Message(), false); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tlist.Append(val)\n\t\t}\n\tdefault:\n\t\tfor {\n\t\t\ttok, err := d.Peek()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif tok.Kind() == json.ArrayClose {\n\t\t\t\td.Read()\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\tval, err := d.unmarshalScalar(fd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tlist.Append(val)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (d decoder) unmarshalMap(mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.ObjectOpen {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\n\t// Determine ahead whether map entry is a scalar type or a message type in\n\t// order to call the appropriate unmarshalMapValue func inside the for loop\n\t// below.\n\tvar unmarshalMapValue func() (protoreflect.Value, error)\n\tswitch fd.MapValue().Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tunmarshalMapValue = func() (protoreflect.Value, error) {\n\t\t\tval := mmap.NewValue()\n\t\t\tif err := d.unmarshalMessage(val.Message(), false); err != nil {\n\t\t\t\treturn protoreflect.Value{}, err\n\t\t\t}\n\t\t\treturn val, nil\n\t\t}\n\tdefault:\n\t\tunmarshalMapValue = func() (protoreflect.Value, error) {\n\t\t\treturn d.unmarshalScalar(fd.MapValue())\n\t\t}\n\t}\n\nLoop:\n\tfor {\n\t\t// Read field name.\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tdefault:\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\tcase json.ObjectClose:\n\t\t\tbreak Loop\n\t\tcase json.Name:\n\t\t\t// Continue.\n\t\t}\n\n\t\t// Unmarshal field name.\n\t\tpkey, err := d.unmarshalMapKey(tok, fd.MapKey())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Check for duplicate field name.\n\t\tif mmap.Has(pkey) {\n\t\t\treturn d.newError(tok.Pos(), \"duplicate map key %v\", tok.RawString())\n\t\t}\n\n\t\t// Read and unmarshal field value.\n\t\tpval, err := unmarshalMapValue()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tmmap.Set(pkey, pval)\n\t}\n\n\treturn nil\n}\n\n// unmarshalMapKey converts given token of Name kind into a protoreflect.MapKey.\n// A map key type is any integral or string type.\nfunc (d decoder) unmarshalMapKey(tok json.Token, fd protoreflect.FieldDescriptor) (protoreflect.MapKey, error) {\n\tconst b32 = 32\n\tconst b64 = 64\n\tconst base10 = 10\n\n\tname := tok.Name()\n\tkind := fd.Kind()\n\tswitch kind {\n\tcase protoreflect.StringKind:\n\t\treturn protoreflect.ValueOfString(name).MapKey(), nil\n\n\tcase protoreflect.BoolKind:\n\t\tswitch name {\n\t\tcase \"true\":\n\t\t\treturn protoreflect.ValueOfBool(true).MapKey(), nil\n\t\tcase \"false\":\n\t\t\treturn protoreflect.ValueOfBool(false).MapKey(), nil\n\t\t}\n\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif n, err := strconv.ParseInt(name, base10, b32); err == nil {\n\t\t\treturn protoreflect.ValueOfInt32(int32(n)).MapKey(), nil\n\t\t}\n\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif n, err := strconv.ParseInt(name, base10, b64); err == nil {\n\t\t\treturn protoreflect.ValueOfInt64(int64(n)).MapKey(), nil\n\t\t}\n\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif n, err := strconv.ParseUint(name, base10, b32); err == nil {\n\t\t\treturn protoreflect.ValueOfUint32(uint32(n)).MapKey(), nil\n\t\t}\n\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif n, err := strconv.ParseUint(name, base10, b64); err == nil {\n\t\t\treturn protoreflect.ValueOfUint64(uint64(n)).MapKey(), nil\n\t\t}\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid kind for map key: %v\", kind))\n\t}\n\n\treturn protoreflect.MapKey{}, d.newError(tok.Pos(), \"invalid value for %v key: %s\", kind, tok.RawString())\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/protojson/doc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protojson marshals and unmarshals protocol buffer messages as JSON\n// format. It follows the guide at\n// https://protobuf.dev/programming-guides/proto3#json.\n//\n// This package produces a different output than the standard \"encoding/json\"\n// package, which does not operate correctly on protocol buffer messages.\npackage protojson\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/protojson/encode.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protojson\n\nimport (\n\t\"encoding/base64\"\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/internal/encoding/json\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nconst defaultIndent = \"  \"\n\n// Format formats the message as a multiline string.\n// This function is only intended for human consumption and ignores errors.\n// Do not depend on the output being stable. It may change over time across\n// different versions of the program.\nfunc Format(m proto.Message) string {\n\treturn MarshalOptions{Multiline: true}.Format(m)\n}\n\n// Marshal writes the given proto.Message in JSON format using default options.\n// Do not depend on the output being stable. It may change over time across\n// different versions of the program.\nfunc Marshal(m proto.Message) ([]byte, error) {\n\treturn MarshalOptions{}.Marshal(m)\n}\n\n// MarshalOptions is a configurable JSON format marshaler.\ntype MarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// Multiline specifies whether the marshaler should format the output in\n\t// indented-form with every textual element on a new line.\n\t// If Indent is an empty string, then an arbitrary indent is chosen.\n\tMultiline bool\n\n\t// Indent specifies the set of indentation characters to use in a multiline\n\t// formatted output such that every entry is preceded by Indent and\n\t// terminated by a newline. If non-empty, then Multiline is treated as true.\n\t// Indent can only be composed of space or tab characters.\n\tIndent string\n\n\t// AllowPartial allows messages that have missing required fields to marshal\n\t// without returning an error. If AllowPartial is false (the default),\n\t// Marshal will return error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// UseProtoNames uses proto field name instead of lowerCamelCase name in JSON\n\t// field names.\n\tUseProtoNames bool\n\n\t// UseEnumNumbers emits enum values as numbers.\n\tUseEnumNumbers bool\n\n\t// EmitUnpopulated specifies whether to emit unpopulated fields. It does not\n\t// emit unpopulated oneof fields or unpopulated extension fields.\n\t// The JSON value emitted for unpopulated fields are as follows:\n\t//  ╔═══════╤════════════════════════════╗\n\t//  ║ JSON  │ Protobuf field             ║\n\t//  ╠═══════╪════════════════════════════╣\n\t//  ║ false │ proto3 boolean fields      ║\n\t//  ║ 0     │ proto3 numeric fields      ║\n\t//  ║ \"\"    │ proto3 string/bytes fields ║\n\t//  ║ null  │ proto2 scalar fields       ║\n\t//  ║ null  │ message fields             ║\n\t//  ║ []    │ list fields                ║\n\t//  ║ {}    │ map fields                 ║\n\t//  ╚═══════╧════════════════════════════╝\n\tEmitUnpopulated bool\n\n\t// Resolver is used for looking up types when expanding google.protobuf.Any\n\t// messages. If nil, this defaults to using protoregistry.GlobalTypes.\n\tResolver interface {\n\t\tprotoregistry.ExtensionTypeResolver\n\t\tprotoregistry.MessageTypeResolver\n\t}\n}\n\n// Format formats the message as a string.\n// This method is only intended for human consumption and ignores errors.\n// Do not depend on the output being stable. It may change over time across\n// different versions of the program.\nfunc (o MarshalOptions) Format(m proto.Message) string {\n\tif m == nil || !m.ProtoReflect().IsValid() {\n\t\treturn \"<nil>\" // invalid syntax, but okay since this is for debugging\n\t}\n\to.AllowPartial = true\n\tb, _ := o.Marshal(m)\n\treturn string(b)\n}\n\n// Marshal marshals the given proto.Message in the JSON format using options in\n// MarshalOptions. Do not depend on the output being stable. It may change over\n// time across different versions of the program.\nfunc (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) {\n\treturn o.marshal(nil, m)\n}\n\n// MarshalAppend appends the JSON format encoding of m to b,\n// returning the result.\nfunc (o MarshalOptions) MarshalAppend(b []byte, m proto.Message) ([]byte, error) {\n\treturn o.marshal(b, m)\n}\n\n// marshal is a centralized function that all marshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for marshal that do not go through this.\nfunc (o MarshalOptions) marshal(b []byte, m proto.Message) ([]byte, error) {\n\tif o.Multiline && o.Indent == \"\" {\n\t\to.Indent = defaultIndent\n\t}\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\n\tinternalEnc, err := json.NewEncoder(b, o.Indent)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Treat nil message interface as an empty message,\n\t// in which case the output in an empty JSON object.\n\tif m == nil {\n\t\treturn append(b, '{', '}'), nil\n\t}\n\n\tenc := encoder{internalEnc, o}\n\tif err := enc.marshalMessage(m.ProtoReflect(), \"\"); err != nil {\n\t\treturn nil, err\n\t}\n\tif o.AllowPartial {\n\t\treturn enc.Bytes(), nil\n\t}\n\treturn enc.Bytes(), proto.CheckInitialized(m)\n}\n\ntype encoder struct {\n\t*json.Encoder\n\topts MarshalOptions\n}\n\n// typeFieldDesc is a synthetic field descriptor used for the \"@type\" field.\nvar typeFieldDesc = func() protoreflect.FieldDescriptor {\n\tvar fd filedesc.Field\n\tfd.L0.FullName = \"@type\"\n\tfd.L0.Index = -1\n\tfd.L1.Cardinality = protoreflect.Optional\n\tfd.L1.Kind = protoreflect.StringKind\n\treturn &fd\n}()\n\n// typeURLFieldRanger wraps a protoreflect.Message and modifies its Range method\n// to additionally iterate over a synthetic field for the type URL.\ntype typeURLFieldRanger struct {\n\torder.FieldRanger\n\ttypeURL string\n}\n\nfunc (m typeURLFieldRanger) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif !f(typeFieldDesc, protoreflect.ValueOfString(m.typeURL)) {\n\t\treturn\n\t}\n\tm.FieldRanger.Range(f)\n}\n\n// unpopulatedFieldRanger wraps a protoreflect.Message and modifies its Range\n// method to additionally iterate over unpopulated fields.\ntype unpopulatedFieldRanger struct{ protoreflect.Message }\n\nfunc (m unpopulatedFieldRanger) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tfds := m.Descriptor().Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tfd := fds.Get(i)\n\t\tif m.Has(fd) || fd.ContainingOneof() != nil {\n\t\t\tcontinue // ignore populated fields and fields within a oneofs\n\t\t}\n\n\t\tv := m.Get(fd)\n\t\tisProto2Scalar := fd.Syntax() == protoreflect.Proto2 && fd.Default().IsValid()\n\t\tisSingularMessage := fd.Cardinality() != protoreflect.Repeated && fd.Message() != nil\n\t\tif isProto2Scalar || isSingularMessage {\n\t\t\tv = protoreflect.Value{} // use invalid value to emit null\n\t\t}\n\t\tif !f(fd, v) {\n\t\t\treturn\n\t\t}\n\t}\n\tm.Message.Range(f)\n}\n\n// marshalMessage marshals the fields in the given protoreflect.Message.\n// If the typeURL is non-empty, then a synthetic \"@type\" field is injected\n// containing the URL as the value.\nfunc (e encoder) marshalMessage(m protoreflect.Message, typeURL string) error {\n\tif !flags.ProtoLegacy && messageset.IsMessageSet(m.Descriptor()) {\n\t\treturn errors.New(\"no support for proto1 MessageSets\")\n\t}\n\n\tif marshal := wellKnownTypeMarshaler(m.Descriptor().FullName()); marshal != nil {\n\t\treturn marshal(e, m)\n\t}\n\n\te.StartObject()\n\tdefer e.EndObject()\n\n\tvar fields order.FieldRanger = m\n\tif e.opts.EmitUnpopulated {\n\t\tfields = unpopulatedFieldRanger{m}\n\t}\n\tif typeURL != \"\" {\n\t\tfields = typeURLFieldRanger{fields, typeURL}\n\t}\n\n\tvar err error\n\torder.RangeFields(fields, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tname := fd.JSONName()\n\t\tif e.opts.UseProtoNames {\n\t\t\tname = fd.TextName()\n\t\t}\n\n\t\tif err = e.WriteName(name); err != nil {\n\t\t\treturn false\n\t\t}\n\t\tif err = e.marshalValue(v, fd); err != nil {\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t})\n\treturn err\n}\n\n// marshalValue marshals the given protoreflect.Value.\nfunc (e encoder) marshalValue(val protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tswitch {\n\tcase fd.IsList():\n\t\treturn e.marshalList(val.List(), fd)\n\tcase fd.IsMap():\n\t\treturn e.marshalMap(val.Map(), fd)\n\tdefault:\n\t\treturn e.marshalSingular(val, fd)\n\t}\n}\n\n// marshalSingular marshals the given non-repeated field value. This includes\n// all scalar types, enums, messages, and groups.\nfunc (e encoder) marshalSingular(val protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tif !val.IsValid() {\n\t\te.WriteNull()\n\t\treturn nil\n\t}\n\n\tswitch kind := fd.Kind(); kind {\n\tcase protoreflect.BoolKind:\n\t\te.WriteBool(val.Bool())\n\n\tcase protoreflect.StringKind:\n\t\tif e.WriteString(val.String()) != nil {\n\t\t\treturn errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\te.WriteInt(val.Int())\n\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\te.WriteUint(val.Uint())\n\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Uint64Kind,\n\t\tprotoreflect.Sfixed64Kind, protoreflect.Fixed64Kind:\n\t\t// 64-bit integers are written out as JSON string.\n\t\te.WriteString(val.String())\n\n\tcase protoreflect.FloatKind:\n\t\t// Encoder.WriteFloat handles the special numbers NaN and infinites.\n\t\te.WriteFloat(val.Float(), 32)\n\n\tcase protoreflect.DoubleKind:\n\t\t// Encoder.WriteFloat handles the special numbers NaN and infinites.\n\t\te.WriteFloat(val.Float(), 64)\n\n\tcase protoreflect.BytesKind:\n\t\te.WriteString(base64.StdEncoding.EncodeToString(val.Bytes()))\n\n\tcase protoreflect.EnumKind:\n\t\tif fd.Enum().FullName() == genid.NullValue_enum_fullname {\n\t\t\te.WriteNull()\n\t\t} else {\n\t\t\tdesc := fd.Enum().Values().ByNumber(val.Enum())\n\t\t\tif e.opts.UseEnumNumbers || desc == nil {\n\t\t\t\te.WriteInt(int64(val.Enum()))\n\t\t\t} else {\n\t\t\t\te.WriteString(string(desc.Name()))\n\t\t\t}\n\t\t}\n\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tif err := e.marshalMessage(val.Message(), \"\"); err != nil {\n\t\t\treturn err\n\t\t}\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"%v has unknown kind: %v\", fd.FullName(), kind))\n\t}\n\treturn nil\n}\n\n// marshalList marshals the given protoreflect.List.\nfunc (e encoder) marshalList(list protoreflect.List, fd protoreflect.FieldDescriptor) error {\n\te.StartArray()\n\tdefer e.EndArray()\n\n\tfor i := 0; i < list.Len(); i++ {\n\t\titem := list.Get(i)\n\t\tif err := e.marshalSingular(item, fd); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// marshalMap marshals given protoreflect.Map.\nfunc (e encoder) marshalMap(mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error {\n\te.StartObject()\n\tdefer e.EndObject()\n\n\tvar err error\n\torder.RangeEntries(mmap, order.GenericKeyOrder, func(k protoreflect.MapKey, v protoreflect.Value) bool {\n\t\tif err = e.WriteName(k.String()); err != nil {\n\t\t\treturn false\n\t\t}\n\t\tif err = e.marshalSingular(v, fd.MapValue()); err != nil {\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t})\n\treturn err\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protojson\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"google.golang.org/protobuf/internal/encoding/json\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype marshalFunc func(encoder, protoreflect.Message) error\n\n// wellKnownTypeMarshaler returns a marshal function if the message type\n// has specialized serialization behavior. It returns nil otherwise.\nfunc wellKnownTypeMarshaler(name protoreflect.FullName) marshalFunc {\n\tif name.Parent() == genid.GoogleProtobuf_package {\n\t\tswitch name.Name() {\n\t\tcase genid.Any_message_name:\n\t\t\treturn encoder.marshalAny\n\t\tcase genid.Timestamp_message_name:\n\t\t\treturn encoder.marshalTimestamp\n\t\tcase genid.Duration_message_name:\n\t\t\treturn encoder.marshalDuration\n\t\tcase genid.BoolValue_message_name,\n\t\t\tgenid.Int32Value_message_name,\n\t\t\tgenid.Int64Value_message_name,\n\t\t\tgenid.UInt32Value_message_name,\n\t\t\tgenid.UInt64Value_message_name,\n\t\t\tgenid.FloatValue_message_name,\n\t\t\tgenid.DoubleValue_message_name,\n\t\t\tgenid.StringValue_message_name,\n\t\t\tgenid.BytesValue_message_name:\n\t\t\treturn encoder.marshalWrapperType\n\t\tcase genid.Struct_message_name:\n\t\t\treturn encoder.marshalStruct\n\t\tcase genid.ListValue_message_name:\n\t\t\treturn encoder.marshalListValue\n\t\tcase genid.Value_message_name:\n\t\t\treturn encoder.marshalKnownValue\n\t\tcase genid.FieldMask_message_name:\n\t\t\treturn encoder.marshalFieldMask\n\t\tcase genid.Empty_message_name:\n\t\t\treturn encoder.marshalEmpty\n\t\t}\n\t}\n\treturn nil\n}\n\ntype unmarshalFunc func(decoder, protoreflect.Message) error\n\n// wellKnownTypeUnmarshaler returns a unmarshal function if the message type\n// has specialized serialization behavior. It returns nil otherwise.\nfunc wellKnownTypeUnmarshaler(name protoreflect.FullName) unmarshalFunc {\n\tif name.Parent() == genid.GoogleProtobuf_package {\n\t\tswitch name.Name() {\n\t\tcase genid.Any_message_name:\n\t\t\treturn decoder.unmarshalAny\n\t\tcase genid.Timestamp_message_name:\n\t\t\treturn decoder.unmarshalTimestamp\n\t\tcase genid.Duration_message_name:\n\t\t\treturn decoder.unmarshalDuration\n\t\tcase genid.BoolValue_message_name,\n\t\t\tgenid.Int32Value_message_name,\n\t\t\tgenid.Int64Value_message_name,\n\t\t\tgenid.UInt32Value_message_name,\n\t\t\tgenid.UInt64Value_message_name,\n\t\t\tgenid.FloatValue_message_name,\n\t\t\tgenid.DoubleValue_message_name,\n\t\t\tgenid.StringValue_message_name,\n\t\t\tgenid.BytesValue_message_name:\n\t\t\treturn decoder.unmarshalWrapperType\n\t\tcase genid.Struct_message_name:\n\t\t\treturn decoder.unmarshalStruct\n\t\tcase genid.ListValue_message_name:\n\t\t\treturn decoder.unmarshalListValue\n\t\tcase genid.Value_message_name:\n\t\t\treturn decoder.unmarshalKnownValue\n\t\tcase genid.FieldMask_message_name:\n\t\t\treturn decoder.unmarshalFieldMask\n\t\tcase genid.Empty_message_name:\n\t\t\treturn decoder.unmarshalEmpty\n\t\t}\n\t}\n\treturn nil\n}\n\n// The JSON representation of an Any message uses the regular representation of\n// the deserialized, embedded message, with an additional field `@type` which\n// contains the type URL. If the embedded message type is well-known and has a\n// custom JSON representation, that representation will be embedded adding a\n// field `value` which holds the custom JSON in addition to the `@type` field.\n\nfunc (e encoder) marshalAny(m protoreflect.Message) error {\n\tfds := m.Descriptor().Fields()\n\tfdType := fds.ByNumber(genid.Any_TypeUrl_field_number)\n\tfdValue := fds.ByNumber(genid.Any_Value_field_number)\n\n\tif !m.Has(fdType) {\n\t\tif !m.Has(fdValue) {\n\t\t\t// If message is empty, marshal out empty JSON object.\n\t\t\te.StartObject()\n\t\t\te.EndObject()\n\t\t\treturn nil\n\t\t} else {\n\t\t\t// Return error if type_url field is not set, but value is set.\n\t\t\treturn errors.New(\"%s: %v is not set\", genid.Any_message_fullname, genid.Any_TypeUrl_field_name)\n\t\t}\n\t}\n\n\ttypeVal := m.Get(fdType)\n\tvalueVal := m.Get(fdValue)\n\n\t// Resolve the type in order to unmarshal value field.\n\ttypeURL := typeVal.String()\n\temt, err := e.opts.Resolver.FindMessageByURL(typeURL)\n\tif err != nil {\n\t\treturn errors.New(\"%s: unable to resolve %q: %v\", genid.Any_message_fullname, typeURL, err)\n\t}\n\n\tem := emt.New()\n\terr = proto.UnmarshalOptions{\n\t\tAllowPartial: true, // never check required fields inside an Any\n\t\tResolver:     e.opts.Resolver,\n\t}.Unmarshal(valueVal.Bytes(), em.Interface())\n\tif err != nil {\n\t\treturn errors.New(\"%s: unable to unmarshal %q: %v\", genid.Any_message_fullname, typeURL, err)\n\t}\n\n\t// If type of value has custom JSON encoding, marshal out a field \"value\"\n\t// with corresponding custom JSON encoding of the embedded message as a\n\t// field.\n\tif marshal := wellKnownTypeMarshaler(emt.Descriptor().FullName()); marshal != nil {\n\t\te.StartObject()\n\t\tdefer e.EndObject()\n\n\t\t// Marshal out @type field.\n\t\te.WriteName(\"@type\")\n\t\tif err := e.WriteString(typeURL); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\te.WriteName(\"value\")\n\t\treturn marshal(e, em)\n\t}\n\n\t// Else, marshal out the embedded message's fields in this Any object.\n\tif err := e.marshalMessage(em, typeURL); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (d decoder) unmarshalAny(m protoreflect.Message) error {\n\t// Peek to check for json.ObjectOpen to avoid advancing a read.\n\tstart, err := d.Peek()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif start.Kind() != json.ObjectOpen {\n\t\treturn d.unexpectedTokenError(start)\n\t}\n\n\t// Use another decoder to parse the unread bytes for @type field. This\n\t// avoids advancing a read from current decoder because the current JSON\n\t// object may contain the fields of the embedded type.\n\tdec := decoder{d.Clone(), UnmarshalOptions{}}\n\ttok, err := findTypeURL(dec)\n\tswitch err {\n\tcase errEmptyObject:\n\t\t// An empty JSON object translates to an empty Any message.\n\t\td.Read() // Read json.ObjectOpen.\n\t\td.Read() // Read json.ObjectClose.\n\t\treturn nil\n\n\tcase errMissingType:\n\t\tif d.opts.DiscardUnknown {\n\t\t\t// Treat all fields as unknowns, similar to an empty object.\n\t\t\treturn d.skipJSONValue()\n\t\t}\n\t\t// Use start.Pos() for line position.\n\t\treturn d.newError(start.Pos(), err.Error())\n\n\tdefault:\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\ttypeURL := tok.ParsedString()\n\temt, err := d.opts.Resolver.FindMessageByURL(typeURL)\n\tif err != nil {\n\t\treturn d.newError(tok.Pos(), \"unable to resolve %v: %q\", tok.RawString(), err)\n\t}\n\n\t// Create new message for the embedded message type and unmarshal into it.\n\tem := emt.New()\n\tif unmarshal := wellKnownTypeUnmarshaler(emt.Descriptor().FullName()); unmarshal != nil {\n\t\t// If embedded message is a custom type,\n\t\t// unmarshal the JSON \"value\" field into it.\n\t\tif err := d.unmarshalAnyValue(unmarshal, em); err != nil {\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\t// Else unmarshal the current JSON object into it.\n\t\tif err := d.unmarshalMessage(em, true); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t// Serialize the embedded message and assign the resulting bytes to the\n\t// proto value field.\n\tb, err := proto.MarshalOptions{\n\t\tAllowPartial:  true, // No need to check required fields inside an Any.\n\t\tDeterministic: true,\n\t}.Marshal(em.Interface())\n\tif err != nil {\n\t\treturn d.newError(start.Pos(), \"error in marshaling Any.value field: %v\", err)\n\t}\n\n\tfds := m.Descriptor().Fields()\n\tfdType := fds.ByNumber(genid.Any_TypeUrl_field_number)\n\tfdValue := fds.ByNumber(genid.Any_Value_field_number)\n\n\tm.Set(fdType, protoreflect.ValueOfString(typeURL))\n\tm.Set(fdValue, protoreflect.ValueOfBytes(b))\n\treturn nil\n}\n\nvar errEmptyObject = fmt.Errorf(`empty object`)\nvar errMissingType = fmt.Errorf(`missing \"@type\" field`)\n\n// findTypeURL returns the token for the \"@type\" field value from the given\n// JSON bytes. It is expected that the given bytes start with json.ObjectOpen.\n// It returns errEmptyObject if the JSON object is empty or errMissingType if\n// @type field does not exist. It returns other error if the @type field is not\n// valid or other decoding issues.\nfunc findTypeURL(d decoder) (json.Token, error) {\n\tvar typeURL string\n\tvar typeTok json.Token\n\tnumFields := 0\n\t// Skip start object.\n\td.Read()\n\nLoop:\n\tfor {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn json.Token{}, err\n\t\t}\n\n\t\tswitch tok.Kind() {\n\t\tcase json.ObjectClose:\n\t\t\tif typeURL == \"\" {\n\t\t\t\t// Did not find @type field.\n\t\t\t\tif numFields > 0 {\n\t\t\t\t\treturn json.Token{}, errMissingType\n\t\t\t\t}\n\t\t\t\treturn json.Token{}, errEmptyObject\n\t\t\t}\n\t\t\tbreak Loop\n\n\t\tcase json.Name:\n\t\t\tnumFields++\n\t\t\tif tok.Name() != \"@type\" {\n\t\t\t\t// Skip value.\n\t\t\t\tif err := d.skipJSONValue(); err != nil {\n\t\t\t\t\treturn json.Token{}, err\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Return error if this was previously set already.\n\t\t\tif typeURL != \"\" {\n\t\t\t\treturn json.Token{}, d.newError(tok.Pos(), `duplicate \"@type\" field`)\n\t\t\t}\n\t\t\t// Read field value.\n\t\t\ttok, err := d.Read()\n\t\t\tif err != nil {\n\t\t\t\treturn json.Token{}, err\n\t\t\t}\n\t\t\tif tok.Kind() != json.String {\n\t\t\t\treturn json.Token{}, d.newError(tok.Pos(), `@type field value is not a string: %v`, tok.RawString())\n\t\t\t}\n\t\t\ttypeURL = tok.ParsedString()\n\t\t\tif typeURL == \"\" {\n\t\t\t\treturn json.Token{}, d.newError(tok.Pos(), `@type field contains empty value`)\n\t\t\t}\n\t\t\ttypeTok = tok\n\t\t}\n\t}\n\n\treturn typeTok, nil\n}\n\n// skipJSONValue parses a JSON value (null, boolean, string, number, object and\n// array) in order to advance the read to the next JSON value. It relies on\n// the decoder returning an error if the types are not in valid sequence.\nfunc (d decoder) skipJSONValue() error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\t// Only need to continue reading for objects and arrays.\n\tswitch tok.Kind() {\n\tcase json.ObjectOpen:\n\t\tfor {\n\t\t\ttok, err := d.Read()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tswitch tok.Kind() {\n\t\t\tcase json.ObjectClose:\n\t\t\t\treturn nil\n\t\t\tcase json.Name:\n\t\t\t\t// Skip object field value.\n\t\t\t\tif err := d.skipJSONValue(); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tcase json.ArrayOpen:\n\t\tfor {\n\t\t\ttok, err := d.Peek()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tswitch tok.Kind() {\n\t\t\tcase json.ArrayClose:\n\t\t\t\td.Read()\n\t\t\t\treturn nil\n\t\t\tdefault:\n\t\t\t\t// Skip array item.\n\t\t\t\tif err := d.skipJSONValue(); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// unmarshalAnyValue unmarshals the given custom-type message from the JSON\n// object's \"value\" field.\nfunc (d decoder) unmarshalAnyValue(unmarshal unmarshalFunc, m protoreflect.Message) error {\n\t// Skip ObjectOpen, and start reading the fields.\n\td.Read()\n\n\tvar found bool // Used for detecting duplicate \"value\".\n\tfor {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tcase json.ObjectClose:\n\t\t\tif !found {\n\t\t\t\treturn d.newError(tok.Pos(), `missing \"value\" field`)\n\t\t\t}\n\t\t\treturn nil\n\n\t\tcase json.Name:\n\t\t\tswitch tok.Name() {\n\t\t\tcase \"@type\":\n\t\t\t\t// Skip the value as this was previously parsed already.\n\t\t\t\td.Read()\n\n\t\t\tcase \"value\":\n\t\t\t\tif found {\n\t\t\t\t\treturn d.newError(tok.Pos(), `duplicate \"value\" field`)\n\t\t\t\t}\n\t\t\t\t// Unmarshal the field value into the given message.\n\t\t\t\tif err := unmarshal(d, m); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tfound = true\n\n\t\t\tdefault:\n\t\t\t\tif d.opts.DiscardUnknown {\n\t\t\t\t\tif err := d.skipJSONValue(); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\treturn d.newError(tok.Pos(), \"unknown field %v\", tok.RawString())\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Wrapper types are encoded as JSON primitives like string, number or boolean.\n\nfunc (e encoder) marshalWrapperType(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.WrapperValue_Value_field_number)\n\tval := m.Get(fd)\n\treturn e.marshalSingular(val, fd)\n}\n\nfunc (d decoder) unmarshalWrapperType(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.WrapperValue_Value_field_number)\n\tval, err := d.unmarshalScalar(fd)\n\tif err != nil {\n\t\treturn err\n\t}\n\tm.Set(fd, val)\n\treturn nil\n}\n\n// The JSON representation for Empty is an empty JSON object.\n\nfunc (e encoder) marshalEmpty(protoreflect.Message) error {\n\te.StartObject()\n\te.EndObject()\n\treturn nil\n}\n\nfunc (d decoder) unmarshalEmpty(protoreflect.Message) error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.ObjectOpen {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\n\tfor {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tcase json.ObjectClose:\n\t\t\treturn nil\n\n\t\tcase json.Name:\n\t\t\tif d.opts.DiscardUnknown {\n\t\t\t\tif err := d.skipJSONValue(); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn d.newError(tok.Pos(), \"unknown field %v\", tok.RawString())\n\n\t\tdefault:\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\t}\n}\n\n// The JSON representation for Struct is a JSON object that contains the encoded\n// Struct.fields map and follows the serialization rules for a map.\n\nfunc (e encoder) marshalStruct(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.Struct_Fields_field_number)\n\treturn e.marshalMap(m.Get(fd).Map(), fd)\n}\n\nfunc (d decoder) unmarshalStruct(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.Struct_Fields_field_number)\n\treturn d.unmarshalMap(m.Mutable(fd).Map(), fd)\n}\n\n// The JSON representation for ListValue is JSON array that contains the encoded\n// ListValue.values repeated field and follows the serialization rules for a\n// repeated field.\n\nfunc (e encoder) marshalListValue(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.ListValue_Values_field_number)\n\treturn e.marshalList(m.Get(fd).List(), fd)\n}\n\nfunc (d decoder) unmarshalListValue(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.ListValue_Values_field_number)\n\treturn d.unmarshalList(m.Mutable(fd).List(), fd)\n}\n\n// The JSON representation for a Value is dependent on the oneof field that is\n// set. Each of the field in the oneof has its own custom serialization rule. A\n// Value message needs to be a oneof field set, else it is an error.\n\nfunc (e encoder) marshalKnownValue(m protoreflect.Message) error {\n\tod := m.Descriptor().Oneofs().ByName(genid.Value_Kind_oneof_name)\n\tfd := m.WhichOneof(od)\n\tif fd == nil {\n\t\treturn errors.New(\"%s: none of the oneof fields is set\", genid.Value_message_fullname)\n\t}\n\tif fd.Number() == genid.Value_NumberValue_field_number {\n\t\tif v := m.Get(fd).Float(); math.IsNaN(v) || math.IsInf(v, 0) {\n\t\t\treturn errors.New(\"%s: invalid %v value\", genid.Value_NumberValue_field_fullname, v)\n\t\t}\n\t}\n\treturn e.marshalSingular(m.Get(fd), fd)\n}\n\nfunc (d decoder) unmarshalKnownValue(m protoreflect.Message) error {\n\ttok, err := d.Peek()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar fd protoreflect.FieldDescriptor\n\tvar val protoreflect.Value\n\tswitch tok.Kind() {\n\tcase json.Null:\n\t\td.Read()\n\t\tfd = m.Descriptor().Fields().ByNumber(genid.Value_NullValue_field_number)\n\t\tval = protoreflect.ValueOfEnum(0)\n\n\tcase json.Bool:\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfd = m.Descriptor().Fields().ByNumber(genid.Value_BoolValue_field_number)\n\t\tval = protoreflect.ValueOfBool(tok.Bool())\n\n\tcase json.Number:\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfd = m.Descriptor().Fields().ByNumber(genid.Value_NumberValue_field_number)\n\t\tvar ok bool\n\t\tval, ok = unmarshalFloat(tok, 64)\n\t\tif !ok {\n\t\t\treturn d.newError(tok.Pos(), \"invalid %v: %v\", genid.Value_message_fullname, tok.RawString())\n\t\t}\n\n\tcase json.String:\n\t\t// A JSON string may have been encoded from the number_value field,\n\t\t// e.g. \"NaN\", \"Infinity\", etc. Parsing a proto double type also allows\n\t\t// for it to be in JSON string form. Given this custom encoding spec,\n\t\t// however, there is no way to identify that and hence a JSON string is\n\t\t// always assigned to the string_value field, which means that certain\n\t\t// encoding cannot be parsed back to the same field.\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfd = m.Descriptor().Fields().ByNumber(genid.Value_StringValue_field_number)\n\t\tval = protoreflect.ValueOfString(tok.ParsedString())\n\n\tcase json.ObjectOpen:\n\t\tfd = m.Descriptor().Fields().ByNumber(genid.Value_StructValue_field_number)\n\t\tval = m.NewField(fd)\n\t\tif err := d.unmarshalStruct(val.Message()); err != nil {\n\t\t\treturn err\n\t\t}\n\n\tcase json.ArrayOpen:\n\t\tfd = m.Descriptor().Fields().ByNumber(genid.Value_ListValue_field_number)\n\t\tval = m.NewField(fd)\n\t\tif err := d.unmarshalListValue(val.Message()); err != nil {\n\t\t\treturn err\n\t\t}\n\n\tdefault:\n\t\treturn d.newError(tok.Pos(), \"invalid %v: %v\", genid.Value_message_fullname, tok.RawString())\n\t}\n\n\tm.Set(fd, val)\n\treturn nil\n}\n\n// The JSON representation for a Duration is a JSON string that ends in the\n// suffix \"s\" (indicating seconds) and is preceded by the number of seconds,\n// with nanoseconds expressed as fractional seconds.\n//\n// Durations less than one second are represented with a 0 seconds field and a\n// positive or negative nanos field. For durations of one second or more, a\n// non-zero value for the nanos field must be of the same sign as the seconds\n// field.\n//\n// Duration.seconds must be from -315,576,000,000 to +315,576,000,000 inclusive.\n// Duration.nanos must be from -999,999,999 to +999,999,999 inclusive.\n\nconst (\n\tsecondsInNanos       = 999999999\n\tmaxSecondsInDuration = 315576000000\n)\n\nfunc (e encoder) marshalDuration(m protoreflect.Message) error {\n\tfds := m.Descriptor().Fields()\n\tfdSeconds := fds.ByNumber(genid.Duration_Seconds_field_number)\n\tfdNanos := fds.ByNumber(genid.Duration_Nanos_field_number)\n\n\tsecsVal := m.Get(fdSeconds)\n\tnanosVal := m.Get(fdNanos)\n\tsecs := secsVal.Int()\n\tnanos := nanosVal.Int()\n\tif secs < -maxSecondsInDuration || secs > maxSecondsInDuration {\n\t\treturn errors.New(\"%s: seconds out of range %v\", genid.Duration_message_fullname, secs)\n\t}\n\tif nanos < -secondsInNanos || nanos > secondsInNanos {\n\t\treturn errors.New(\"%s: nanos out of range %v\", genid.Duration_message_fullname, nanos)\n\t}\n\tif (secs > 0 && nanos < 0) || (secs < 0 && nanos > 0) {\n\t\treturn errors.New(\"%s: signs of seconds and nanos do not match\", genid.Duration_message_fullname)\n\t}\n\t// Generated output always contains 0, 3, 6, or 9 fractional digits,\n\t// depending on required precision, followed by the suffix \"s\".\n\tvar sign string\n\tif secs < 0 || nanos < 0 {\n\t\tsign, secs, nanos = \"-\", -1*secs, -1*nanos\n\t}\n\tx := fmt.Sprintf(\"%s%d.%09d\", sign, secs, nanos)\n\tx = strings.TrimSuffix(x, \"000\")\n\tx = strings.TrimSuffix(x, \"000\")\n\tx = strings.TrimSuffix(x, \".000\")\n\te.WriteString(x + \"s\")\n\treturn nil\n}\n\nfunc (d decoder) unmarshalDuration(m protoreflect.Message) error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.String {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\n\tsecs, nanos, ok := parseDuration(tok.ParsedString())\n\tif !ok {\n\t\treturn d.newError(tok.Pos(), \"invalid %v value %v\", genid.Duration_message_fullname, tok.RawString())\n\t}\n\t// Validate seconds. No need to validate nanos because parseDuration would\n\t// have covered that already.\n\tif secs < -maxSecondsInDuration || secs > maxSecondsInDuration {\n\t\treturn d.newError(tok.Pos(), \"%v value out of range: %v\", genid.Duration_message_fullname, tok.RawString())\n\t}\n\n\tfds := m.Descriptor().Fields()\n\tfdSeconds := fds.ByNumber(genid.Duration_Seconds_field_number)\n\tfdNanos := fds.ByNumber(genid.Duration_Nanos_field_number)\n\n\tm.Set(fdSeconds, protoreflect.ValueOfInt64(secs))\n\tm.Set(fdNanos, protoreflect.ValueOfInt32(nanos))\n\treturn nil\n}\n\n// parseDuration parses the given input string for seconds and nanoseconds value\n// for the Duration JSON format. The format is a decimal number with a suffix\n// 's'. It can have optional plus/minus sign. There needs to be at least an\n// integer or fractional part. Fractional part is limited to 9 digits only for\n// nanoseconds precision, regardless of whether there are trailing zero digits.\n// Example values are 1s, 0.1s, 1.s, .1s, +1s, -1s, -.1s.\nfunc parseDuration(input string) (int64, int32, bool) {\n\tb := []byte(input)\n\tsize := len(b)\n\tif size < 2 {\n\t\treturn 0, 0, false\n\t}\n\tif b[size-1] != 's' {\n\t\treturn 0, 0, false\n\t}\n\tb = b[:size-1]\n\n\t// Read optional plus/minus symbol.\n\tvar neg bool\n\tswitch b[0] {\n\tcase '-':\n\t\tneg = true\n\t\tb = b[1:]\n\tcase '+':\n\t\tb = b[1:]\n\t}\n\tif len(b) == 0 {\n\t\treturn 0, 0, false\n\t}\n\n\t// Read the integer part.\n\tvar intp []byte\n\tswitch {\n\tcase b[0] == '0':\n\t\tb = b[1:]\n\n\tcase '1' <= b[0] && b[0] <= '9':\n\t\tintp = b[0:]\n\t\tb = b[1:]\n\t\tn := 1\n\t\tfor len(b) > 0 && '0' <= b[0] && b[0] <= '9' {\n\t\t\tn++\n\t\t\tb = b[1:]\n\t\t}\n\t\tintp = intp[:n]\n\n\tcase b[0] == '.':\n\t\t// Continue below.\n\n\tdefault:\n\t\treturn 0, 0, false\n\t}\n\n\thasFrac := false\n\tvar frac [9]byte\n\tif len(b) > 0 {\n\t\tif b[0] != '.' {\n\t\t\treturn 0, 0, false\n\t\t}\n\t\t// Read the fractional part.\n\t\tb = b[1:]\n\t\tn := 0\n\t\tfor len(b) > 0 && n < 9 && '0' <= b[0] && b[0] <= '9' {\n\t\t\tfrac[n] = b[0]\n\t\t\tn++\n\t\t\tb = b[1:]\n\t\t}\n\t\t// It is not valid if there are more bytes left.\n\t\tif len(b) > 0 {\n\t\t\treturn 0, 0, false\n\t\t}\n\t\t// Pad fractional part with 0s.\n\t\tfor i := n; i < 9; i++ {\n\t\t\tfrac[i] = '0'\n\t\t}\n\t\thasFrac = true\n\t}\n\n\tvar secs int64\n\tif len(intp) > 0 {\n\t\tvar err error\n\t\tsecs, err = strconv.ParseInt(string(intp), 10, 64)\n\t\tif err != nil {\n\t\t\treturn 0, 0, false\n\t\t}\n\t}\n\n\tvar nanos int64\n\tif hasFrac {\n\t\tnanob := bytes.TrimLeft(frac[:], \"0\")\n\t\tif len(nanob) > 0 {\n\t\t\tvar err error\n\t\t\tnanos, err = strconv.ParseInt(string(nanob), 10, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, 0, false\n\t\t\t}\n\t\t}\n\t}\n\n\tif neg {\n\t\tif secs > 0 {\n\t\t\tsecs = -secs\n\t\t}\n\t\tif nanos > 0 {\n\t\t\tnanos = -nanos\n\t\t}\n\t}\n\treturn secs, int32(nanos), true\n}\n\n// The JSON representation for a Timestamp is a JSON string in the RFC 3339\n// format, i.e. \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\" where\n// {year} is always expressed using four digits while {month}, {day}, {hour},\n// {min}, and {sec} are zero-padded to two digits each. The fractional seconds,\n// which can go up to 9 digits, up to 1 nanosecond resolution, is optional. The\n// \"Z\" suffix indicates the timezone (\"UTC\"); the timezone is required. Encoding\n// should always use UTC (as indicated by \"Z\") and a decoder should be able to\n// accept both UTC and other timezones (as indicated by an offset).\n//\n// Timestamp.seconds must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z\n// inclusive.\n// Timestamp.nanos must be from 0 to 999,999,999 inclusive.\n\nconst (\n\tmaxTimestampSeconds = 253402300799\n\tminTimestampSeconds = -62135596800\n)\n\nfunc (e encoder) marshalTimestamp(m protoreflect.Message) error {\n\tfds := m.Descriptor().Fields()\n\tfdSeconds := fds.ByNumber(genid.Timestamp_Seconds_field_number)\n\tfdNanos := fds.ByNumber(genid.Timestamp_Nanos_field_number)\n\n\tsecsVal := m.Get(fdSeconds)\n\tnanosVal := m.Get(fdNanos)\n\tsecs := secsVal.Int()\n\tnanos := nanosVal.Int()\n\tif secs < minTimestampSeconds || secs > maxTimestampSeconds {\n\t\treturn errors.New(\"%s: seconds out of range %v\", genid.Timestamp_message_fullname, secs)\n\t}\n\tif nanos < 0 || nanos > secondsInNanos {\n\t\treturn errors.New(\"%s: nanos out of range %v\", genid.Timestamp_message_fullname, nanos)\n\t}\n\t// Uses RFC 3339, where generated output will be Z-normalized and uses 0, 3,\n\t// 6 or 9 fractional digits.\n\tt := time.Unix(secs, nanos).UTC()\n\tx := t.Format(\"2006-01-02T15:04:05.000000000\")\n\tx = strings.TrimSuffix(x, \"000\")\n\tx = strings.TrimSuffix(x, \"000\")\n\tx = strings.TrimSuffix(x, \".000\")\n\te.WriteString(x + \"Z\")\n\treturn nil\n}\n\nfunc (d decoder) unmarshalTimestamp(m protoreflect.Message) error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.String {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\n\ts := tok.ParsedString()\n\tt, err := time.Parse(time.RFC3339Nano, s)\n\tif err != nil {\n\t\treturn d.newError(tok.Pos(), \"invalid %v value %v\", genid.Timestamp_message_fullname, tok.RawString())\n\t}\n\t// Validate seconds.\n\tsecs := t.Unix()\n\tif secs < minTimestampSeconds || secs > maxTimestampSeconds {\n\t\treturn d.newError(tok.Pos(), \"%v value out of range: %v\", genid.Timestamp_message_fullname, tok.RawString())\n\t}\n\t// Validate subseconds.\n\ti := strings.LastIndexByte(s, '.')  // start of subsecond field\n\tj := strings.LastIndexAny(s, \"Z-+\") // start of timezone field\n\tif i >= 0 && j >= i && j-i > len(\".999999999\") {\n\t\treturn d.newError(tok.Pos(), \"invalid %v value %v\", genid.Timestamp_message_fullname, tok.RawString())\n\t}\n\n\tfds := m.Descriptor().Fields()\n\tfdSeconds := fds.ByNumber(genid.Timestamp_Seconds_field_number)\n\tfdNanos := fds.ByNumber(genid.Timestamp_Nanos_field_number)\n\n\tm.Set(fdSeconds, protoreflect.ValueOfInt64(secs))\n\tm.Set(fdNanos, protoreflect.ValueOfInt32(int32(t.Nanosecond())))\n\treturn nil\n}\n\n// The JSON representation for a FieldMask is a JSON string where paths are\n// separated by a comma. Fields name in each path are converted to/from\n// lower-camel naming conventions. Encoding should fail if the path name would\n// end up differently after a round-trip.\n\nfunc (e encoder) marshalFieldMask(m protoreflect.Message) error {\n\tfd := m.Descriptor().Fields().ByNumber(genid.FieldMask_Paths_field_number)\n\tlist := m.Get(fd).List()\n\tpaths := make([]string, 0, list.Len())\n\n\tfor i := 0; i < list.Len(); i++ {\n\t\ts := list.Get(i).String()\n\t\tif !protoreflect.FullName(s).IsValid() {\n\t\t\treturn errors.New(\"%s contains invalid path: %q\", genid.FieldMask_Paths_field_fullname, s)\n\t\t}\n\t\t// Return error if conversion to camelCase is not reversible.\n\t\tcc := strs.JSONCamelCase(s)\n\t\tif s != strs.JSONSnakeCase(cc) {\n\t\t\treturn errors.New(\"%s contains irreversible value %q\", genid.FieldMask_Paths_field_fullname, s)\n\t\t}\n\t\tpaths = append(paths, cc)\n\t}\n\n\te.WriteString(strings.Join(paths, \",\"))\n\treturn nil\n}\n\nfunc (d decoder) unmarshalFieldMask(m protoreflect.Message) error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tok.Kind() != json.String {\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n\tstr := strings.TrimSpace(tok.ParsedString())\n\tif str == \"\" {\n\t\treturn nil\n\t}\n\tpaths := strings.Split(str, \",\")\n\n\tfd := m.Descriptor().Fields().ByNumber(genid.FieldMask_Paths_field_number)\n\tlist := m.Mutable(fd).List()\n\n\tfor _, s0 := range paths {\n\t\ts := strs.JSONSnakeCase(s0)\n\t\tif strings.Contains(s0, \"_\") || !protoreflect.FullName(s).IsValid() {\n\t\t\treturn d.newError(tok.Pos(), \"%v contains invalid path: %q\", genid.FieldMask_Paths_field_fullname, s0)\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfString(s))\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/prototext/decode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage prototext\n\nimport (\n\t\"fmt\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/encoding/text\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/set\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Unmarshal reads the given []byte into the given proto.Message.\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc Unmarshal(b []byte, m proto.Message) error {\n\treturn UnmarshalOptions{}.Unmarshal(b, m)\n}\n\n// UnmarshalOptions is a configurable textproto format unmarshaler.\ntype UnmarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// AllowPartial accepts input for messages that will result in missing\n\t// required fields. If AllowPartial is false (the default), Unmarshal will\n\t// return error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// DiscardUnknown specifies whether to ignore unknown fields when parsing.\n\t// An unknown field is any field whose field name or field number does not\n\t// resolve to any known or extension field in the message.\n\t// By default, unmarshal rejects unknown fields as an error.\n\tDiscardUnknown bool\n\n\t// Resolver is used for looking up types when unmarshaling\n\t// google.protobuf.Any messages or extension fields.\n\t// If nil, this defaults to using protoregistry.GlobalTypes.\n\tResolver interface {\n\t\tprotoregistry.MessageTypeResolver\n\t\tprotoregistry.ExtensionTypeResolver\n\t}\n}\n\n// Unmarshal reads the given []byte and populates the given proto.Message\n// using options in the UnmarshalOptions object.\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error {\n\treturn o.unmarshal(b, m)\n}\n\n// unmarshal is a centralized function that all unmarshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for unmarshal that do not go through this.\nfunc (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error {\n\tproto.Reset(m)\n\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\n\tdec := decoder{text.NewDecoder(b), o}\n\tif err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil {\n\t\treturn err\n\t}\n\tif o.AllowPartial {\n\t\treturn nil\n\t}\n\treturn proto.CheckInitialized(m)\n}\n\ntype decoder struct {\n\t*text.Decoder\n\topts UnmarshalOptions\n}\n\n// newError returns an error object with position info.\nfunc (d decoder) newError(pos int, f string, x ...interface{}) error {\n\tline, column := d.Position(pos)\n\thead := fmt.Sprintf(\"(line %d:%d): \", line, column)\n\treturn errors.New(head+f, x...)\n}\n\n// unexpectedTokenError returns a syntax error for the given unexpected token.\nfunc (d decoder) unexpectedTokenError(tok text.Token) error {\n\treturn d.syntaxError(tok.Pos(), \"unexpected token: %s\", tok.RawString())\n}\n\n// syntaxError returns a syntax error for given position.\nfunc (d decoder) syntaxError(pos int, f string, x ...interface{}) error {\n\tline, column := d.Position(pos)\n\thead := fmt.Sprintf(\"syntax error (line %d:%d): \", line, column)\n\treturn errors.New(head+f, x...)\n}\n\n// unmarshalMessage unmarshals into the given protoreflect.Message.\nfunc (d decoder) unmarshalMessage(m protoreflect.Message, checkDelims bool) error {\n\tmessageDesc := m.Descriptor()\n\tif !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {\n\t\treturn errors.New(\"no support for proto1 MessageSets\")\n\t}\n\n\tif messageDesc.FullName() == genid.Any_message_fullname {\n\t\treturn d.unmarshalAny(m, checkDelims)\n\t}\n\n\tif checkDelims {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif tok.Kind() != text.MessageOpen {\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\t}\n\n\tvar seenNums set.Ints\n\tvar seenOneofs set.Ints\n\tfieldDescs := messageDesc.Fields()\n\n\tfor {\n\t\t// Read field name.\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch typ := tok.Kind(); typ {\n\t\tcase text.Name:\n\t\t\t// Continue below.\n\t\tcase text.EOF:\n\t\t\tif checkDelims {\n\t\t\t\treturn text.ErrUnexpectedEOF\n\t\t\t}\n\t\t\treturn nil\n\t\tdefault:\n\t\t\tif checkDelims && typ == text.MessageClose {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\n\t\t// Resolve the field descriptor.\n\t\tvar name protoreflect.Name\n\t\tvar fd protoreflect.FieldDescriptor\n\t\tvar xt protoreflect.ExtensionType\n\t\tvar xtErr error\n\t\tvar isFieldNumberName bool\n\n\t\tswitch tok.NameKind() {\n\t\tcase text.IdentName:\n\t\t\tname = protoreflect.Name(tok.IdentName())\n\t\t\tfd = fieldDescs.ByTextName(string(name))\n\n\t\tcase text.TypeName:\n\t\t\t// Handle extensions only. This code path is not for Any.\n\t\t\txt, xtErr = d.opts.Resolver.FindExtensionByName(protoreflect.FullName(tok.TypeName()))\n\n\t\tcase text.FieldNumber:\n\t\t\tisFieldNumberName = true\n\t\t\tnum := protoreflect.FieldNumber(tok.FieldNumber())\n\t\t\tif !num.IsValid() {\n\t\t\t\treturn d.newError(tok.Pos(), \"invalid field number: %d\", num)\n\t\t\t}\n\t\t\tfd = fieldDescs.ByNumber(num)\n\t\t\tif fd == nil {\n\t\t\t\txt, xtErr = d.opts.Resolver.FindExtensionByNumber(messageDesc.FullName(), num)\n\t\t\t}\n\t\t}\n\n\t\tif xt != nil {\n\t\t\tfd = xt.TypeDescriptor()\n\t\t\tif !messageDesc.ExtensionRanges().Has(fd.Number()) || fd.ContainingMessage().FullName() != messageDesc.FullName() {\n\t\t\t\treturn d.newError(tok.Pos(), \"message %v cannot be extended by %v\", messageDesc.FullName(), fd.FullName())\n\t\t\t}\n\t\t} else if xtErr != nil && xtErr != protoregistry.NotFound {\n\t\t\treturn d.newError(tok.Pos(), \"unable to resolve [%s]: %v\", tok.RawString(), xtErr)\n\t\t}\n\t\tif flags.ProtoLegacy {\n\t\t\tif fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() {\n\t\t\t\tfd = nil // reset since the weak reference is not linked in\n\t\t\t}\n\t\t}\n\n\t\t// Handle unknown fields.\n\t\tif fd == nil {\n\t\t\tif d.opts.DiscardUnknown || messageDesc.ReservedNames().Has(name) {\n\t\t\t\td.skipValue()\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn d.newError(tok.Pos(), \"unknown field: %v\", tok.RawString())\n\t\t}\n\n\t\t// Handle fields identified by field number.\n\t\tif isFieldNumberName {\n\t\t\t// TODO: Add an option to permit parsing field numbers.\n\t\t\t//\n\t\t\t// This requires careful thought as the MarshalOptions.EmitUnknown\n\t\t\t// option allows formatting unknown fields as the field number and the\n\t\t\t// best-effort textual representation of the field value.  In that case,\n\t\t\t// it may not be possible to unmarshal the value from a parser that does\n\t\t\t// have information about the unknown field.\n\t\t\treturn d.newError(tok.Pos(), \"cannot specify field by number: %v\", tok.RawString())\n\t\t}\n\n\t\tswitch {\n\t\tcase fd.IsList():\n\t\t\tkind := fd.Kind()\n\t\t\tif kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() {\n\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t}\n\n\t\t\tlist := m.Mutable(fd).List()\n\t\t\tif err := d.unmarshalList(fd, list); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\tcase fd.IsMap():\n\t\t\tmmap := m.Mutable(fd).Map()\n\t\t\tif err := d.unmarshalMap(fd, mmap); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\tdefault:\n\t\t\tkind := fd.Kind()\n\t\t\tif kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() {\n\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t}\n\n\t\t\t// If field is a oneof, check if it has already been set.\n\t\t\tif od := fd.ContainingOneof(); od != nil {\n\t\t\t\tidx := uint64(od.Index())\n\t\t\t\tif seenOneofs.Has(idx) {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"error parsing %q, oneof %v is already set\", tok.RawString(), od.FullName())\n\t\t\t\t}\n\t\t\t\tseenOneofs.Set(idx)\n\t\t\t}\n\n\t\t\tnum := uint64(fd.Number())\n\t\t\tif seenNums.Has(num) {\n\t\t\t\treturn d.newError(tok.Pos(), \"non-repeated field %q is repeated\", tok.RawString())\n\t\t\t}\n\n\t\t\tif err := d.unmarshalSingular(fd, m); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tseenNums.Set(num)\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// unmarshalSingular unmarshals a non-repeated field value specified by the\n// given FieldDescriptor.\nfunc (d decoder) unmarshalSingular(fd protoreflect.FieldDescriptor, m protoreflect.Message) error {\n\tvar val protoreflect.Value\n\tvar err error\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tval = m.NewField(fd)\n\t\terr = d.unmarshalMessage(val.Message(), true)\n\tdefault:\n\t\tval, err = d.unmarshalScalar(fd)\n\t}\n\tif err == nil {\n\t\tm.Set(fd, val)\n\t}\n\treturn err\n}\n\n// unmarshalScalar unmarshals a scalar/enum protoreflect.Value specified by the\n// given FieldDescriptor.\nfunc (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn protoreflect.Value{}, err\n\t}\n\n\tif tok.Kind() != text.Scalar {\n\t\treturn protoreflect.Value{}, d.unexpectedTokenError(tok)\n\t}\n\n\tkind := fd.Kind()\n\tswitch kind {\n\tcase protoreflect.BoolKind:\n\t\tif b, ok := tok.Bool(); ok {\n\t\t\treturn protoreflect.ValueOfBool(b), nil\n\t\t}\n\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif n, ok := tok.Int32(); ok {\n\t\t\treturn protoreflect.ValueOfInt32(n), nil\n\t\t}\n\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif n, ok := tok.Int64(); ok {\n\t\t\treturn protoreflect.ValueOfInt64(n), nil\n\t\t}\n\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif n, ok := tok.Uint32(); ok {\n\t\t\treturn protoreflect.ValueOfUint32(n), nil\n\t\t}\n\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif n, ok := tok.Uint64(); ok {\n\t\t\treturn protoreflect.ValueOfUint64(n), nil\n\t\t}\n\n\tcase protoreflect.FloatKind:\n\t\tif n, ok := tok.Float32(); ok {\n\t\t\treturn protoreflect.ValueOfFloat32(n), nil\n\t\t}\n\n\tcase protoreflect.DoubleKind:\n\t\tif n, ok := tok.Float64(); ok {\n\t\t\treturn protoreflect.ValueOfFloat64(n), nil\n\t\t}\n\n\tcase protoreflect.StringKind:\n\t\tif s, ok := tok.String(); ok {\n\t\t\tif strs.EnforceUTF8(fd) && !utf8.ValidString(s) {\n\t\t\t\treturn protoreflect.Value{}, d.newError(tok.Pos(), \"contains invalid UTF-8\")\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfString(s), nil\n\t\t}\n\n\tcase protoreflect.BytesKind:\n\t\tif b, ok := tok.String(); ok {\n\t\t\treturn protoreflect.ValueOfBytes([]byte(b)), nil\n\t\t}\n\n\tcase protoreflect.EnumKind:\n\t\tif lit, ok := tok.Enum(); ok {\n\t\t\t// Lookup EnumNumber based on name.\n\t\t\tif enumVal := fd.Enum().Values().ByName(protoreflect.Name(lit)); enumVal != nil {\n\t\t\t\treturn protoreflect.ValueOfEnum(enumVal.Number()), nil\n\t\t\t}\n\t\t}\n\t\tif num, ok := tok.Int32(); ok {\n\t\t\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(num)), nil\n\t\t}\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid scalar kind %v\", kind))\n\t}\n\n\treturn protoreflect.Value{}, d.newError(tok.Pos(), \"invalid value for %v type: %v\", kind, tok.RawString())\n}\n\n// unmarshalList unmarshals into given protoreflect.List. A list value can\n// either be in [] syntax or simply just a single scalar/message value.\nfunc (d decoder) unmarshalList(fd protoreflect.FieldDescriptor, list protoreflect.List) error {\n\ttok, err := d.Peek()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tswitch fd.Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tswitch tok.Kind() {\n\t\tcase text.ListOpen:\n\t\t\td.Read()\n\t\t\tfor {\n\t\t\t\ttok, err := d.Peek()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\tswitch tok.Kind() {\n\t\t\t\tcase text.ListClose:\n\t\t\t\t\td.Read()\n\t\t\t\t\treturn nil\n\t\t\t\tcase text.MessageOpen:\n\t\t\t\t\tpval := list.NewElement()\n\t\t\t\t\tif err := d.unmarshalMessage(pval.Message(), true); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tlist.Append(pval)\n\t\t\t\tdefault:\n\t\t\t\t\treturn d.unexpectedTokenError(tok)\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase text.MessageOpen:\n\t\t\tpval := list.NewElement()\n\t\t\tif err := d.unmarshalMessage(pval.Message(), true); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tlist.Append(pval)\n\t\t\treturn nil\n\t\t}\n\n\tdefault:\n\t\tswitch tok.Kind() {\n\t\tcase text.ListOpen:\n\t\t\td.Read()\n\t\t\tfor {\n\t\t\t\ttok, err := d.Peek()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\tswitch tok.Kind() {\n\t\t\t\tcase text.ListClose:\n\t\t\t\t\td.Read()\n\t\t\t\t\treturn nil\n\t\t\t\tcase text.Scalar:\n\t\t\t\t\tpval, err := d.unmarshalScalar(fd)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tlist.Append(pval)\n\t\t\t\tdefault:\n\t\t\t\t\treturn d.unexpectedTokenError(tok)\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase text.Scalar:\n\t\t\tpval, err := d.unmarshalScalar(fd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tlist.Append(pval)\n\t\t\treturn nil\n\t\t}\n\t}\n\n\treturn d.unexpectedTokenError(tok)\n}\n\n// unmarshalMap unmarshals into given protoreflect.Map. A map value is a\n// textproto message containing {key: <kvalue>, value: <mvalue>}.\nfunc (d decoder) unmarshalMap(fd protoreflect.FieldDescriptor, mmap protoreflect.Map) error {\n\t// Determine ahead whether map entry is a scalar type or a message type in\n\t// order to call the appropriate unmarshalMapValue func inside\n\t// unmarshalMapEntry.\n\tvar unmarshalMapValue func() (protoreflect.Value, error)\n\tswitch fd.MapValue().Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tunmarshalMapValue = func() (protoreflect.Value, error) {\n\t\t\tpval := mmap.NewValue()\n\t\t\tif err := d.unmarshalMessage(pval.Message(), true); err != nil {\n\t\t\t\treturn protoreflect.Value{}, err\n\t\t\t}\n\t\t\treturn pval, nil\n\t\t}\n\tdefault:\n\t\tunmarshalMapValue = func() (protoreflect.Value, error) {\n\t\t\treturn d.unmarshalScalar(fd.MapValue())\n\t\t}\n\t}\n\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch tok.Kind() {\n\tcase text.MessageOpen:\n\t\treturn d.unmarshalMapEntry(fd, mmap, unmarshalMapValue)\n\n\tcase text.ListOpen:\n\t\tfor {\n\t\t\ttok, err := d.Read()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tswitch tok.Kind() {\n\t\t\tcase text.ListClose:\n\t\t\t\treturn nil\n\t\t\tcase text.MessageOpen:\n\t\t\t\tif err := d.unmarshalMapEntry(fd, mmap, unmarshalMapValue); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn d.unexpectedTokenError(tok)\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\treturn d.unexpectedTokenError(tok)\n\t}\n}\n\n// unmarshalMap unmarshals into given protoreflect.Map. A map value is a\n// textproto message containing {key: <kvalue>, value: <mvalue>}.\nfunc (d decoder) unmarshalMapEntry(fd protoreflect.FieldDescriptor, mmap protoreflect.Map, unmarshalMapValue func() (protoreflect.Value, error)) error {\n\tvar key protoreflect.MapKey\n\tvar pval protoreflect.Value\nLoop:\n\tfor {\n\t\t// Read field name.\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tcase text.Name:\n\t\t\tif tok.NameKind() != text.IdentName {\n\t\t\t\tif !d.opts.DiscardUnknown {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"unknown map entry field %q\", tok.RawString())\n\t\t\t\t}\n\t\t\t\td.skipValue()\n\t\t\t\tcontinue Loop\n\t\t\t}\n\t\t\t// Continue below.\n\t\tcase text.MessageClose:\n\t\t\tbreak Loop\n\t\tdefault:\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\n\t\tswitch name := protoreflect.Name(tok.IdentName()); name {\n\t\tcase genid.MapEntry_Key_field_name:\n\t\t\tif !tok.HasSeparator() {\n\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t}\n\t\t\tif key.IsValid() {\n\t\t\t\treturn d.newError(tok.Pos(), \"map entry %q cannot be repeated\", name)\n\t\t\t}\n\t\t\tval, err := d.unmarshalScalar(fd.MapKey())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tkey = val.MapKey()\n\n\t\tcase genid.MapEntry_Value_field_name:\n\t\t\tif kind := fd.MapValue().Kind(); (kind != protoreflect.MessageKind) && (kind != protoreflect.GroupKind) {\n\t\t\t\tif !tok.HasSeparator() {\n\t\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t\t}\n\t\t\t}\n\t\t\tif pval.IsValid() {\n\t\t\t\treturn d.newError(tok.Pos(), \"map entry %q cannot be repeated\", name)\n\t\t\t}\n\t\t\tpval, err = unmarshalMapValue()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\tdefault:\n\t\t\tif !d.opts.DiscardUnknown {\n\t\t\t\treturn d.newError(tok.Pos(), \"unknown map entry field %q\", name)\n\t\t\t}\n\t\t\td.skipValue()\n\t\t}\n\t}\n\n\tif !key.IsValid() {\n\t\tkey = fd.MapKey().Default().MapKey()\n\t}\n\tif !pval.IsValid() {\n\t\tswitch fd.MapValue().Kind() {\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\t// If value field is not set for message/group types, construct an\n\t\t\t// empty one as default.\n\t\t\tpval = mmap.NewValue()\n\t\tdefault:\n\t\t\tpval = fd.MapValue().Default()\n\t\t}\n\t}\n\tmmap.Set(key, pval)\n\treturn nil\n}\n\n// unmarshalAny unmarshals an Any textproto. It can either be in expanded form\n// or non-expanded form.\nfunc (d decoder) unmarshalAny(m protoreflect.Message, checkDelims bool) error {\n\tvar typeURL string\n\tvar bValue []byte\n\tvar seenTypeUrl bool\n\tvar seenValue bool\n\tvar isExpanded bool\n\n\tif checkDelims {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif tok.Kind() != text.MessageOpen {\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\t}\n\nLoop:\n\tfor {\n\t\t// Read field name. Can only have 3 possible field names, i.e. type_url,\n\t\t// value and type URL name inside [].\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif typ := tok.Kind(); typ != text.Name {\n\t\t\tif checkDelims {\n\t\t\t\tif typ == text.MessageClose {\n\t\t\t\t\tbreak Loop\n\t\t\t\t}\n\t\t\t} else if typ == text.EOF {\n\t\t\t\tbreak Loop\n\t\t\t}\n\t\t\treturn d.unexpectedTokenError(tok)\n\t\t}\n\n\t\tswitch tok.NameKind() {\n\t\tcase text.IdentName:\n\t\t\t// Both type_url and value fields require field separator :.\n\t\t\tif !tok.HasSeparator() {\n\t\t\t\treturn d.syntaxError(tok.Pos(), \"missing field separator :\")\n\t\t\t}\n\n\t\t\tswitch name := protoreflect.Name(tok.IdentName()); name {\n\t\t\tcase genid.Any_TypeUrl_field_name:\n\t\t\t\tif seenTypeUrl {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"duplicate %v field\", genid.Any_TypeUrl_field_fullname)\n\t\t\t\t}\n\t\t\t\tif isExpanded {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"conflict with [%s] field\", typeURL)\n\t\t\t\t}\n\t\t\t\ttok, err := d.Read()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvar ok bool\n\t\t\t\ttypeURL, ok = tok.String()\n\t\t\t\tif !ok {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"invalid %v field value: %v\", genid.Any_TypeUrl_field_fullname, tok.RawString())\n\t\t\t\t}\n\t\t\t\tseenTypeUrl = true\n\n\t\t\tcase genid.Any_Value_field_name:\n\t\t\t\tif seenValue {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"duplicate %v field\", genid.Any_Value_field_fullname)\n\t\t\t\t}\n\t\t\t\tif isExpanded {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"conflict with [%s] field\", typeURL)\n\t\t\t\t}\n\t\t\t\ttok, err := d.Read()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\ts, ok := tok.String()\n\t\t\t\tif !ok {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"invalid %v field value: %v\", genid.Any_Value_field_fullname, tok.RawString())\n\t\t\t\t}\n\t\t\t\tbValue = []byte(s)\n\t\t\t\tseenValue = true\n\n\t\t\tdefault:\n\t\t\t\tif !d.opts.DiscardUnknown {\n\t\t\t\t\treturn d.newError(tok.Pos(), \"invalid field name %q in %v message\", tok.RawString(), genid.Any_message_fullname)\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase text.TypeName:\n\t\t\tif isExpanded {\n\t\t\t\treturn d.newError(tok.Pos(), \"cannot have more than one type\")\n\t\t\t}\n\t\t\tif seenTypeUrl {\n\t\t\t\treturn d.newError(tok.Pos(), \"conflict with type_url field\")\n\t\t\t}\n\t\t\ttypeURL = tok.TypeName()\n\t\t\tvar err error\n\t\t\tbValue, err = d.unmarshalExpandedAny(typeURL, tok.Pos())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tisExpanded = true\n\n\t\tdefault:\n\t\t\tif !d.opts.DiscardUnknown {\n\t\t\t\treturn d.newError(tok.Pos(), \"invalid field name %q in %v message\", tok.RawString(), genid.Any_message_fullname)\n\t\t\t}\n\t\t}\n\t}\n\n\tfds := m.Descriptor().Fields()\n\tif len(typeURL) > 0 {\n\t\tm.Set(fds.ByNumber(genid.Any_TypeUrl_field_number), protoreflect.ValueOfString(typeURL))\n\t}\n\tif len(bValue) > 0 {\n\t\tm.Set(fds.ByNumber(genid.Any_Value_field_number), protoreflect.ValueOfBytes(bValue))\n\t}\n\treturn nil\n}\n\nfunc (d decoder) unmarshalExpandedAny(typeURL string, pos int) ([]byte, error) {\n\tmt, err := d.opts.Resolver.FindMessageByURL(typeURL)\n\tif err != nil {\n\t\treturn nil, d.newError(pos, \"unable to resolve message [%v]: %v\", typeURL, err)\n\t}\n\t// Create new message for the embedded message type and unmarshal the value\n\t// field into it.\n\tm := mt.New()\n\tif err := d.unmarshalMessage(m, true); err != nil {\n\t\treturn nil, err\n\t}\n\t// Serialize the embedded message and return the resulting bytes.\n\tb, err := proto.MarshalOptions{\n\t\tAllowPartial:  true, // Never check required fields inside an Any.\n\t\tDeterministic: true,\n\t}.Marshal(m.Interface())\n\tif err != nil {\n\t\treturn nil, d.newError(pos, \"error in marshaling message into Any.value: %v\", err)\n\t}\n\treturn b, nil\n}\n\n// skipValue makes the decoder parse a field value in order to advance the read\n// to the next field. It relies on Read returning an error if the types are not\n// in valid sequence.\nfunc (d decoder) skipValue() error {\n\ttok, err := d.Read()\n\tif err != nil {\n\t\treturn err\n\t}\n\t// Only need to continue reading for messages and lists.\n\tswitch tok.Kind() {\n\tcase text.MessageOpen:\n\t\treturn d.skipMessageValue()\n\n\tcase text.ListOpen:\n\t\tfor {\n\t\t\ttok, err := d.Read()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tswitch tok.Kind() {\n\t\t\tcase text.ListClose:\n\t\t\t\treturn nil\n\t\t\tcase text.MessageOpen:\n\t\t\t\treturn d.skipMessageValue()\n\t\t\tdefault:\n\t\t\t\t// Skip items. This will not validate whether skipped values are\n\t\t\t\t// of the same type or not, same behavior as C++\n\t\t\t\t// TextFormat::Parser::AllowUnknownField(true) version 3.8.0.\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// skipMessageValue makes the decoder parse and skip over all fields in a\n// message. It assumes that the previous read type is MessageOpen.\nfunc (d decoder) skipMessageValue() error {\n\tfor {\n\t\ttok, err := d.Read()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tswitch tok.Kind() {\n\t\tcase text.MessageClose:\n\t\t\treturn nil\n\t\tcase text.Name:\n\t\t\tif err := d.skipValue(); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/prototext/doc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package prototext marshals and unmarshals protocol buffer messages as the\n// textproto format.\npackage prototext\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/prototext/encode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage prototext\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/encoding/text\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nconst defaultIndent = \"  \"\n\n// Format formats the message as a multiline string.\n// This function is only intended for human consumption and ignores errors.\n// Do not depend on the output being stable. It may change over time across\n// different versions of the program.\nfunc Format(m proto.Message) string {\n\treturn MarshalOptions{Multiline: true}.Format(m)\n}\n\n// Marshal writes the given proto.Message in textproto format using default\n// options. Do not depend on the output being stable. It may change over time\n// across different versions of the program.\nfunc Marshal(m proto.Message) ([]byte, error) {\n\treturn MarshalOptions{}.Marshal(m)\n}\n\n// MarshalOptions is a configurable text format marshaler.\ntype MarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// Multiline specifies whether the marshaler should format the output in\n\t// indented-form with every textual element on a new line.\n\t// If Indent is an empty string, then an arbitrary indent is chosen.\n\tMultiline bool\n\n\t// Indent specifies the set of indentation characters to use in a multiline\n\t// formatted output such that every entry is preceded by Indent and\n\t// terminated by a newline. If non-empty, then Multiline is treated as true.\n\t// Indent can only be composed of space or tab characters.\n\tIndent string\n\n\t// EmitASCII specifies whether to format strings and bytes as ASCII only\n\t// as opposed to using UTF-8 encoding when possible.\n\tEmitASCII bool\n\n\t// allowInvalidUTF8 specifies whether to permit the encoding of strings\n\t// with invalid UTF-8. This is unexported as it is intended to only\n\t// be specified by the Format method.\n\tallowInvalidUTF8 bool\n\n\t// AllowPartial allows messages that have missing required fields to marshal\n\t// without returning an error. If AllowPartial is false (the default),\n\t// Marshal will return error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// EmitUnknown specifies whether to emit unknown fields in the output.\n\t// If specified, the unmarshaler may be unable to parse the output.\n\t// The default is to exclude unknown fields.\n\tEmitUnknown bool\n\n\t// Resolver is used for looking up types when expanding google.protobuf.Any\n\t// messages. If nil, this defaults to using protoregistry.GlobalTypes.\n\tResolver interface {\n\t\tprotoregistry.ExtensionTypeResolver\n\t\tprotoregistry.MessageTypeResolver\n\t}\n}\n\n// Format formats the message as a string.\n// This method is only intended for human consumption and ignores errors.\n// Do not depend on the output being stable. It may change over time across\n// different versions of the program.\nfunc (o MarshalOptions) Format(m proto.Message) string {\n\tif m == nil || !m.ProtoReflect().IsValid() {\n\t\treturn \"<nil>\" // invalid syntax, but okay since this is for debugging\n\t}\n\to.allowInvalidUTF8 = true\n\to.AllowPartial = true\n\to.EmitUnknown = true\n\tb, _ := o.Marshal(m)\n\treturn string(b)\n}\n\n// Marshal writes the given proto.Message in textproto format using options in\n// MarshalOptions object. Do not depend on the output being stable. It may\n// change over time across different versions of the program.\nfunc (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) {\n\treturn o.marshal(nil, m)\n}\n\n// MarshalAppend appends the textproto format encoding of m to b,\n// returning the result.\nfunc (o MarshalOptions) MarshalAppend(b []byte, m proto.Message) ([]byte, error) {\n\treturn o.marshal(b, m)\n}\n\n// marshal is a centralized function that all marshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for marshal that do not go through this.\nfunc (o MarshalOptions) marshal(b []byte, m proto.Message) ([]byte, error) {\n\tvar delims = [2]byte{'{', '}'}\n\n\tif o.Multiline && o.Indent == \"\" {\n\t\to.Indent = defaultIndent\n\t}\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\n\tinternalEnc, err := text.NewEncoder(b, o.Indent, delims, o.EmitASCII)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Treat nil message interface as an empty message,\n\t// in which case there is nothing to output.\n\tif m == nil {\n\t\treturn b, nil\n\t}\n\n\tenc := encoder{internalEnc, o}\n\terr = enc.marshalMessage(m.ProtoReflect(), false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tout := enc.Bytes()\n\tif len(o.Indent) > 0 && len(out) > 0 {\n\t\tout = append(out, '\\n')\n\t}\n\tif o.AllowPartial {\n\t\treturn out, nil\n\t}\n\treturn out, proto.CheckInitialized(m)\n}\n\ntype encoder struct {\n\t*text.Encoder\n\topts MarshalOptions\n}\n\n// marshalMessage marshals the given protoreflect.Message.\nfunc (e encoder) marshalMessage(m protoreflect.Message, inclDelims bool) error {\n\tmessageDesc := m.Descriptor()\n\tif !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {\n\t\treturn errors.New(\"no support for proto1 MessageSets\")\n\t}\n\n\tif inclDelims {\n\t\te.StartMessage()\n\t\tdefer e.EndMessage()\n\t}\n\n\t// Handle Any expansion.\n\tif messageDesc.FullName() == genid.Any_message_fullname {\n\t\tif e.marshalAny(m) {\n\t\t\treturn nil\n\t\t}\n\t\t// If unable to expand, continue on to marshal Any as a regular message.\n\t}\n\n\t// Marshal fields.\n\tvar err error\n\torder.RangeFields(m, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tif err = e.marshalField(fd.TextName(), v, fd); err != nil {\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Marshal unknown fields.\n\tif e.opts.EmitUnknown {\n\t\te.marshalUnknown(m.GetUnknown())\n\t}\n\n\treturn nil\n}\n\n// marshalField marshals the given field with protoreflect.Value.\nfunc (e encoder) marshalField(name string, val protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tswitch {\n\tcase fd.IsList():\n\t\treturn e.marshalList(name, val.List(), fd)\n\tcase fd.IsMap():\n\t\treturn e.marshalMap(name, val.Map(), fd)\n\tdefault:\n\t\te.WriteName(name)\n\t\treturn e.marshalSingular(val, fd)\n\t}\n}\n\n// marshalSingular marshals the given non-repeated field value. This includes\n// all scalar types, enums, messages, and groups.\nfunc (e encoder) marshalSingular(val protoreflect.Value, fd protoreflect.FieldDescriptor) error {\n\tkind := fd.Kind()\n\tswitch kind {\n\tcase protoreflect.BoolKind:\n\t\te.WriteBool(val.Bool())\n\n\tcase protoreflect.StringKind:\n\t\ts := val.String()\n\t\tif !e.opts.allowInvalidUTF8 && strs.EnforceUTF8(fd) && !utf8.ValidString(s) {\n\t\t\treturn errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\t\te.WriteString(s)\n\n\tcase protoreflect.Int32Kind, protoreflect.Int64Kind,\n\t\tprotoreflect.Sint32Kind, protoreflect.Sint64Kind,\n\t\tprotoreflect.Sfixed32Kind, protoreflect.Sfixed64Kind:\n\t\te.WriteInt(val.Int())\n\n\tcase protoreflect.Uint32Kind, protoreflect.Uint64Kind,\n\t\tprotoreflect.Fixed32Kind, protoreflect.Fixed64Kind:\n\t\te.WriteUint(val.Uint())\n\n\tcase protoreflect.FloatKind:\n\t\t// Encoder.WriteFloat handles the special numbers NaN and infinites.\n\t\te.WriteFloat(val.Float(), 32)\n\n\tcase protoreflect.DoubleKind:\n\t\t// Encoder.WriteFloat handles the special numbers NaN and infinites.\n\t\te.WriteFloat(val.Float(), 64)\n\n\tcase protoreflect.BytesKind:\n\t\te.WriteString(string(val.Bytes()))\n\n\tcase protoreflect.EnumKind:\n\t\tnum := val.Enum()\n\t\tif desc := fd.Enum().Values().ByNumber(num); desc != nil {\n\t\t\te.WriteLiteral(string(desc.Name()))\n\t\t} else {\n\t\t\t// Use numeric value if there is no enum description.\n\t\t\te.WriteInt(int64(num))\n\t\t}\n\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn e.marshalMessage(val.Message(), true)\n\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"%v has unknown kind: %v\", fd.FullName(), kind))\n\t}\n\treturn nil\n}\n\n// marshalList marshals the given protoreflect.List as multiple name-value fields.\nfunc (e encoder) marshalList(name string, list protoreflect.List, fd protoreflect.FieldDescriptor) error {\n\tsize := list.Len()\n\tfor i := 0; i < size; i++ {\n\t\te.WriteName(name)\n\t\tif err := e.marshalSingular(list.Get(i), fd); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// marshalMap marshals the given protoreflect.Map as multiple name-value fields.\nfunc (e encoder) marshalMap(name string, mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error {\n\tvar err error\n\torder.RangeEntries(mmap, order.GenericKeyOrder, func(key protoreflect.MapKey, val protoreflect.Value) bool {\n\t\te.WriteName(name)\n\t\te.StartMessage()\n\t\tdefer e.EndMessage()\n\n\t\te.WriteName(string(genid.MapEntry_Key_field_name))\n\t\terr = e.marshalSingular(key.Value(), fd.MapKey())\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\n\t\te.WriteName(string(genid.MapEntry_Value_field_name))\n\t\terr = e.marshalSingular(val, fd.MapValue())\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t})\n\treturn err\n}\n\n// marshalUnknown parses the given []byte and marshals fields out.\n// This function assumes proper encoding in the given []byte.\nfunc (e encoder) marshalUnknown(b []byte) {\n\tconst dec = 10\n\tconst hex = 16\n\tfor len(b) > 0 {\n\t\tnum, wtype, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\te.WriteName(strconv.FormatInt(int64(num), dec))\n\n\t\tswitch wtype {\n\t\tcase protowire.VarintType:\n\t\t\tvar v uint64\n\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\te.WriteUint(v)\n\t\tcase protowire.Fixed32Type:\n\t\t\tvar v uint32\n\t\t\tv, n = protowire.ConsumeFixed32(b)\n\t\t\te.WriteLiteral(\"0x\" + strconv.FormatUint(uint64(v), hex))\n\t\tcase protowire.Fixed64Type:\n\t\t\tvar v uint64\n\t\t\tv, n = protowire.ConsumeFixed64(b)\n\t\t\te.WriteLiteral(\"0x\" + strconv.FormatUint(v, hex))\n\t\tcase protowire.BytesType:\n\t\t\tvar v []byte\n\t\t\tv, n = protowire.ConsumeBytes(b)\n\t\t\te.WriteString(string(v))\n\t\tcase protowire.StartGroupType:\n\t\t\te.StartMessage()\n\t\t\tvar v []byte\n\t\t\tv, n = protowire.ConsumeGroup(num, b)\n\t\t\te.marshalUnknown(v)\n\t\t\te.EndMessage()\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"prototext: error parsing unknown field wire type: %v\", wtype))\n\t\t}\n\n\t\tb = b[n:]\n\t}\n}\n\n// marshalAny marshals the given google.protobuf.Any message in expanded form.\n// It returns true if it was able to marshal, else false.\nfunc (e encoder) marshalAny(any protoreflect.Message) bool {\n\t// Construct the embedded message.\n\tfds := any.Descriptor().Fields()\n\tfdType := fds.ByNumber(genid.Any_TypeUrl_field_number)\n\ttypeURL := any.Get(fdType).String()\n\tmt, err := e.opts.Resolver.FindMessageByURL(typeURL)\n\tif err != nil {\n\t\treturn false\n\t}\n\tm := mt.New().Interface()\n\n\t// Unmarshal bytes into embedded message.\n\tfdValue := fds.ByNumber(genid.Any_Value_field_number)\n\tvalue := any.Get(fdValue)\n\terr = proto.UnmarshalOptions{\n\t\tAllowPartial: true,\n\t\tResolver:     e.opts.Resolver,\n\t}.Unmarshal(value.Bytes(), m)\n\tif err != nil {\n\t\treturn false\n\t}\n\n\t// Get current encoder position. If marshaling fails, reset encoder output\n\t// back to this position.\n\tpos := e.Snapshot()\n\n\t// Field name is the proto field name enclosed in [].\n\te.WriteName(\"[\" + typeURL + \"]\")\n\terr = e.marshalMessage(m.ProtoReflect(), true)\n\tif err != nil {\n\t\te.Reset(pos)\n\t\treturn false\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/encoding/protowire/wire.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protowire parses and formats the raw wire encoding.\n// See https://protobuf.dev/programming-guides/encoding.\n//\n// For marshaling and unmarshaling entire protobuf messages,\n// use the \"google.golang.org/protobuf/proto\" package instead.\npackage protowire\n\nimport (\n\t\"io\"\n\t\"math\"\n\t\"math/bits\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n)\n\n// Number represents the field number.\ntype Number int32\n\nconst (\n\tMinValidNumber        Number = 1\n\tFirstReservedNumber   Number = 19000\n\tLastReservedNumber    Number = 19999\n\tMaxValidNumber        Number = 1<<29 - 1\n\tDefaultRecursionLimit        = 10000\n)\n\n// IsValid reports whether the field number is semantically valid.\nfunc (n Number) IsValid() bool {\n\treturn MinValidNumber <= n && n <= MaxValidNumber\n}\n\n// Type represents the wire type.\ntype Type int8\n\nconst (\n\tVarintType     Type = 0\n\tFixed32Type    Type = 5\n\tFixed64Type    Type = 1\n\tBytesType      Type = 2\n\tStartGroupType Type = 3\n\tEndGroupType   Type = 4\n)\n\nconst (\n\t_ = -iota\n\terrCodeTruncated\n\terrCodeFieldNumber\n\terrCodeOverflow\n\terrCodeReserved\n\terrCodeEndGroup\n\terrCodeRecursionDepth\n)\n\nvar (\n\terrFieldNumber = errors.New(\"invalid field number\")\n\terrOverflow    = errors.New(\"variable length integer overflow\")\n\terrReserved    = errors.New(\"cannot parse reserved wire type\")\n\terrEndGroup    = errors.New(\"mismatching end group marker\")\n\terrParse       = errors.New(\"parse error\")\n)\n\n// ParseError converts an error code into an error value.\n// This returns nil if n is a non-negative number.\nfunc ParseError(n int) error {\n\tif n >= 0 {\n\t\treturn nil\n\t}\n\tswitch n {\n\tcase errCodeTruncated:\n\t\treturn io.ErrUnexpectedEOF\n\tcase errCodeFieldNumber:\n\t\treturn errFieldNumber\n\tcase errCodeOverflow:\n\t\treturn errOverflow\n\tcase errCodeReserved:\n\t\treturn errReserved\n\tcase errCodeEndGroup:\n\t\treturn errEndGroup\n\tdefault:\n\t\treturn errParse\n\t}\n}\n\n// ConsumeField parses an entire field record (both tag and value) and returns\n// the field number, the wire type, and the total length.\n// This returns a negative length upon an error (see ParseError).\n//\n// The total length includes the tag header and the end group marker (if the\n// field is a group).\nfunc ConsumeField(b []byte) (Number, Type, int) {\n\tnum, typ, n := ConsumeTag(b)\n\tif n < 0 {\n\t\treturn 0, 0, n // forward error code\n\t}\n\tm := ConsumeFieldValue(num, typ, b[n:])\n\tif m < 0 {\n\t\treturn 0, 0, m // forward error code\n\t}\n\treturn num, typ, n + m\n}\n\n// ConsumeFieldValue parses a field value and returns its length.\n// This assumes that the field Number and wire Type have already been parsed.\n// This returns a negative length upon an error (see ParseError).\n//\n// When parsing a group, the length includes the end group marker and\n// the end group is verified to match the starting field number.\nfunc ConsumeFieldValue(num Number, typ Type, b []byte) (n int) {\n\treturn consumeFieldValueD(num, typ, b, DefaultRecursionLimit)\n}\n\nfunc consumeFieldValueD(num Number, typ Type, b []byte, depth int) (n int) {\n\tswitch typ {\n\tcase VarintType:\n\t\t_, n = ConsumeVarint(b)\n\t\treturn n\n\tcase Fixed32Type:\n\t\t_, n = ConsumeFixed32(b)\n\t\treturn n\n\tcase Fixed64Type:\n\t\t_, n = ConsumeFixed64(b)\n\t\treturn n\n\tcase BytesType:\n\t\t_, n = ConsumeBytes(b)\n\t\treturn n\n\tcase StartGroupType:\n\t\tif depth < 0 {\n\t\t\treturn errCodeRecursionDepth\n\t\t}\n\t\tn0 := len(b)\n\t\tfor {\n\t\t\tnum2, typ2, n := ConsumeTag(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn n // forward error code\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tif typ2 == EndGroupType {\n\t\t\t\tif num != num2 {\n\t\t\t\t\treturn errCodeEndGroup\n\t\t\t\t}\n\t\t\t\treturn n0 - len(b)\n\t\t\t}\n\n\t\t\tn = consumeFieldValueD(num2, typ2, b, depth-1)\n\t\t\tif n < 0 {\n\t\t\t\treturn n // forward error code\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\tcase EndGroupType:\n\t\treturn errCodeEndGroup\n\tdefault:\n\t\treturn errCodeReserved\n\t}\n}\n\n// AppendTag encodes num and typ as a varint-encoded tag and appends it to b.\nfunc AppendTag(b []byte, num Number, typ Type) []byte {\n\treturn AppendVarint(b, EncodeTag(num, typ))\n}\n\n// ConsumeTag parses b as a varint-encoded tag, reporting its length.\n// This returns a negative length upon an error (see ParseError).\nfunc ConsumeTag(b []byte) (Number, Type, int) {\n\tv, n := ConsumeVarint(b)\n\tif n < 0 {\n\t\treturn 0, 0, n // forward error code\n\t}\n\tnum, typ := DecodeTag(v)\n\tif num < MinValidNumber {\n\t\treturn 0, 0, errCodeFieldNumber\n\t}\n\treturn num, typ, n\n}\n\nfunc SizeTag(num Number) int {\n\treturn SizeVarint(EncodeTag(num, 0)) // wire type has no effect on size\n}\n\n// AppendVarint appends v to b as a varint-encoded uint64.\nfunc AppendVarint(b []byte, v uint64) []byte {\n\tswitch {\n\tcase v < 1<<7:\n\t\tb = append(b, byte(v))\n\tcase v < 1<<14:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte(v>>7))\n\tcase v < 1<<21:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte(v>>14))\n\tcase v < 1<<28:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte(v>>21))\n\tcase v < 1<<35:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte(v>>28))\n\tcase v < 1<<42:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte(v>>35))\n\tcase v < 1<<49:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte(v>>42))\n\tcase v < 1<<56:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte((v>>42)&0x7f|0x80),\n\t\t\tbyte(v>>49))\n\tcase v < 1<<63:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte((v>>42)&0x7f|0x80),\n\t\t\tbyte((v>>49)&0x7f|0x80),\n\t\t\tbyte(v>>56))\n\tdefault:\n\t\tb = append(b,\n\t\t\tbyte((v>>0)&0x7f|0x80),\n\t\t\tbyte((v>>7)&0x7f|0x80),\n\t\t\tbyte((v>>14)&0x7f|0x80),\n\t\t\tbyte((v>>21)&0x7f|0x80),\n\t\t\tbyte((v>>28)&0x7f|0x80),\n\t\t\tbyte((v>>35)&0x7f|0x80),\n\t\t\tbyte((v>>42)&0x7f|0x80),\n\t\t\tbyte((v>>49)&0x7f|0x80),\n\t\t\tbyte((v>>56)&0x7f|0x80),\n\t\t\t1)\n\t}\n\treturn b\n}\n\n// ConsumeVarint parses b as a varint-encoded uint64, reporting its length.\n// This returns a negative length upon an error (see ParseError).\nfunc ConsumeVarint(b []byte) (v uint64, n int) {\n\tvar y uint64\n\tif len(b) <= 0 {\n\t\treturn 0, errCodeTruncated\n\t}\n\tv = uint64(b[0])\n\tif v < 0x80 {\n\t\treturn v, 1\n\t}\n\tv -= 0x80\n\n\tif len(b) <= 1 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[1])\n\tv += y << 7\n\tif y < 0x80 {\n\t\treturn v, 2\n\t}\n\tv -= 0x80 << 7\n\n\tif len(b) <= 2 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[2])\n\tv += y << 14\n\tif y < 0x80 {\n\t\treturn v, 3\n\t}\n\tv -= 0x80 << 14\n\n\tif len(b) <= 3 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[3])\n\tv += y << 21\n\tif y < 0x80 {\n\t\treturn v, 4\n\t}\n\tv -= 0x80 << 21\n\n\tif len(b) <= 4 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[4])\n\tv += y << 28\n\tif y < 0x80 {\n\t\treturn v, 5\n\t}\n\tv -= 0x80 << 28\n\n\tif len(b) <= 5 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[5])\n\tv += y << 35\n\tif y < 0x80 {\n\t\treturn v, 6\n\t}\n\tv -= 0x80 << 35\n\n\tif len(b) <= 6 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[6])\n\tv += y << 42\n\tif y < 0x80 {\n\t\treturn v, 7\n\t}\n\tv -= 0x80 << 42\n\n\tif len(b) <= 7 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[7])\n\tv += y << 49\n\tif y < 0x80 {\n\t\treturn v, 8\n\t}\n\tv -= 0x80 << 49\n\n\tif len(b) <= 8 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[8])\n\tv += y << 56\n\tif y < 0x80 {\n\t\treturn v, 9\n\t}\n\tv -= 0x80 << 56\n\n\tif len(b) <= 9 {\n\t\treturn 0, errCodeTruncated\n\t}\n\ty = uint64(b[9])\n\tv += y << 63\n\tif y < 2 {\n\t\treturn v, 10\n\t}\n\treturn 0, errCodeOverflow\n}\n\n// SizeVarint returns the encoded size of a varint.\n// The size is guaranteed to be within 1 and 10, inclusive.\nfunc SizeVarint(v uint64) int {\n\t// This computes 1 + (bits.Len64(v)-1)/7.\n\t// 9/64 is a good enough approximation of 1/7\n\treturn int(9*uint32(bits.Len64(v))+64) / 64\n}\n\n// AppendFixed32 appends v to b as a little-endian uint32.\nfunc AppendFixed32(b []byte, v uint32) []byte {\n\treturn append(b,\n\t\tbyte(v>>0),\n\t\tbyte(v>>8),\n\t\tbyte(v>>16),\n\t\tbyte(v>>24))\n}\n\n// ConsumeFixed32 parses b as a little-endian uint32, reporting its length.\n// This returns a negative length upon an error (see ParseError).\nfunc ConsumeFixed32(b []byte) (v uint32, n int) {\n\tif len(b) < 4 {\n\t\treturn 0, errCodeTruncated\n\t}\n\tv = uint32(b[0])<<0 | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24\n\treturn v, 4\n}\n\n// SizeFixed32 returns the encoded size of a fixed32; which is always 4.\nfunc SizeFixed32() int {\n\treturn 4\n}\n\n// AppendFixed64 appends v to b as a little-endian uint64.\nfunc AppendFixed64(b []byte, v uint64) []byte {\n\treturn append(b,\n\t\tbyte(v>>0),\n\t\tbyte(v>>8),\n\t\tbyte(v>>16),\n\t\tbyte(v>>24),\n\t\tbyte(v>>32),\n\t\tbyte(v>>40),\n\t\tbyte(v>>48),\n\t\tbyte(v>>56))\n}\n\n// ConsumeFixed64 parses b as a little-endian uint64, reporting its length.\n// This returns a negative length upon an error (see ParseError).\nfunc ConsumeFixed64(b []byte) (v uint64, n int) {\n\tif len(b) < 8 {\n\t\treturn 0, errCodeTruncated\n\t}\n\tv = uint64(b[0])<<0 | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n\treturn v, 8\n}\n\n// SizeFixed64 returns the encoded size of a fixed64; which is always 8.\nfunc SizeFixed64() int {\n\treturn 8\n}\n\n// AppendBytes appends v to b as a length-prefixed bytes value.\nfunc AppendBytes(b []byte, v []byte) []byte {\n\treturn append(AppendVarint(b, uint64(len(v))), v...)\n}\n\n// ConsumeBytes parses b as a length-prefixed bytes value, reporting its length.\n// This returns a negative length upon an error (see ParseError).\nfunc ConsumeBytes(b []byte) (v []byte, n int) {\n\tm, n := ConsumeVarint(b)\n\tif n < 0 {\n\t\treturn nil, n // forward error code\n\t}\n\tif m > uint64(len(b[n:])) {\n\t\treturn nil, errCodeTruncated\n\t}\n\treturn b[n:][:m], n + int(m)\n}\n\n// SizeBytes returns the encoded size of a length-prefixed bytes value,\n// given only the length.\nfunc SizeBytes(n int) int {\n\treturn SizeVarint(uint64(n)) + n\n}\n\n// AppendString appends v to b as a length-prefixed bytes value.\nfunc AppendString(b []byte, v string) []byte {\n\treturn append(AppendVarint(b, uint64(len(v))), v...)\n}\n\n// ConsumeString parses b as a length-prefixed bytes value, reporting its length.\n// This returns a negative length upon an error (see ParseError).\nfunc ConsumeString(b []byte) (v string, n int) {\n\tbb, n := ConsumeBytes(b)\n\treturn string(bb), n\n}\n\n// AppendGroup appends v to b as group value, with a trailing end group marker.\n// The value v must not contain the end marker.\nfunc AppendGroup(b []byte, num Number, v []byte) []byte {\n\treturn AppendVarint(append(b, v...), EncodeTag(num, EndGroupType))\n}\n\n// ConsumeGroup parses b as a group value until the trailing end group marker,\n// and verifies that the end marker matches the provided num. The value v\n// does not contain the end marker, while the length does contain the end marker.\n// This returns a negative length upon an error (see ParseError).\nfunc ConsumeGroup(num Number, b []byte) (v []byte, n int) {\n\tn = ConsumeFieldValue(num, StartGroupType, b)\n\tif n < 0 {\n\t\treturn nil, n // forward error code\n\t}\n\tb = b[:n]\n\n\t// Truncate off end group marker, but need to handle denormalized varints.\n\t// Assuming end marker is never 0 (which is always the case since\n\t// EndGroupType is non-zero), we can truncate all trailing bytes where the\n\t// lower 7 bits are all zero (implying that the varint is denormalized).\n\tfor len(b) > 0 && b[len(b)-1]&0x7f == 0 {\n\t\tb = b[:len(b)-1]\n\t}\n\tb = b[:len(b)-SizeTag(num)]\n\treturn b, n\n}\n\n// SizeGroup returns the encoded size of a group, given only the length.\nfunc SizeGroup(num Number, n int) int {\n\treturn n + SizeTag(num)\n}\n\n// DecodeTag decodes the field Number and wire Type from its unified form.\n// The Number is -1 if the decoded field number overflows int32.\n// Other than overflow, this does not check for field number validity.\nfunc DecodeTag(x uint64) (Number, Type) {\n\t// NOTE: MessageSet allows for larger field numbers than normal.\n\tif x>>3 > uint64(math.MaxInt32) {\n\t\treturn -1, 0\n\t}\n\treturn Number(x >> 3), Type(x & 7)\n}\n\n// EncodeTag encodes the field Number and wire Type into its unified form.\nfunc EncodeTag(num Number, typ Type) uint64 {\n\treturn uint64(num)<<3 | uint64(typ&7)\n}\n\n// DecodeZigZag decodes a zig-zag-encoded uint64 as an int64.\n//\n//\tInput:  {…,  5,  3,  1,  0,  2,  4,  6, …}\n//\tOutput: {…, -3, -2, -1,  0, +1, +2, +3, …}\nfunc DecodeZigZag(x uint64) int64 {\n\treturn int64(x>>1) ^ int64(x)<<63>>63\n}\n\n// EncodeZigZag encodes an int64 as a zig-zag-encoded uint64.\n//\n//\tInput:  {…, -3, -2, -1,  0, +1, +2, +3, …}\n//\tOutput: {…,  5,  3,  1,  0,  2,  4,  6, …}\nfunc EncodeZigZag(x int64) uint64 {\n\treturn uint64(x<<1) ^ uint64(x>>63)\n}\n\n// DecodeBool decodes a uint64 as a bool.\n//\n//\tInput:  {    0,    1,    2, …}\n//\tOutput: {false, true, true, …}\nfunc DecodeBool(x uint64) bool {\n\treturn x != 0\n}\n\n// EncodeBool encodes a bool as a uint64.\n//\n//\tInput:  {false, true}\n//\tOutput: {    0,    1}\nfunc EncodeBool(x bool) uint64 {\n\tif x {\n\t\treturn 1\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/descfmt/stringer.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package descfmt provides functionality to format descriptors.\npackage descfmt\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype list interface {\n\tLen() int\n\tpragma.DoNotImplement\n}\n\nfunc FormatList(s fmt.State, r rune, vs list) {\n\tio.WriteString(s, formatListOpt(vs, true, r == 'v' && (s.Flag('+') || s.Flag('#'))))\n}\nfunc formatListOpt(vs list, isRoot, allowMulti bool) string {\n\tstart, end := \"[\", \"]\"\n\tif isRoot {\n\t\tvar name string\n\t\tswitch vs.(type) {\n\t\tcase protoreflect.Names:\n\t\t\tname = \"Names\"\n\t\tcase protoreflect.FieldNumbers:\n\t\t\tname = \"FieldNumbers\"\n\t\tcase protoreflect.FieldRanges:\n\t\t\tname = \"FieldRanges\"\n\t\tcase protoreflect.EnumRanges:\n\t\t\tname = \"EnumRanges\"\n\t\tcase protoreflect.FileImports:\n\t\t\tname = \"FileImports\"\n\t\tcase protoreflect.Descriptor:\n\t\t\tname = reflect.ValueOf(vs).MethodByName(\"Get\").Type().Out(0).Name() + \"s\"\n\t\tdefault:\n\t\t\tname = reflect.ValueOf(vs).Elem().Type().Name()\n\t\t}\n\t\tstart, end = name+\"{\", \"}\"\n\t}\n\n\tvar ss []string\n\tswitch vs := vs.(type) {\n\tcase protoreflect.Names:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tss = append(ss, fmt.Sprint(vs.Get(i)))\n\t\t}\n\t\treturn start + joinStrings(ss, false) + end\n\tcase protoreflect.FieldNumbers:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tss = append(ss, fmt.Sprint(vs.Get(i)))\n\t\t}\n\t\treturn start + joinStrings(ss, false) + end\n\tcase protoreflect.FieldRanges:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tr := vs.Get(i)\n\t\t\tif r[0]+1 == r[1] {\n\t\t\t\tss = append(ss, fmt.Sprintf(\"%d\", r[0]))\n\t\t\t} else {\n\t\t\t\tss = append(ss, fmt.Sprintf(\"%d:%d\", r[0], r[1])) // enum ranges are end exclusive\n\t\t\t}\n\t\t}\n\t\treturn start + joinStrings(ss, false) + end\n\tcase protoreflect.EnumRanges:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tr := vs.Get(i)\n\t\t\tif r[0] == r[1] {\n\t\t\t\tss = append(ss, fmt.Sprintf(\"%d\", r[0]))\n\t\t\t} else {\n\t\t\t\tss = append(ss, fmt.Sprintf(\"%d:%d\", r[0], int64(r[1])+1)) // enum ranges are end inclusive\n\t\t\t}\n\t\t}\n\t\treturn start + joinStrings(ss, false) + end\n\tcase protoreflect.FileImports:\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tvar rs records\n\t\t\trs.Append(reflect.ValueOf(vs.Get(i)), \"Path\", \"Package\", \"IsPublic\", \"IsWeak\")\n\t\t\tss = append(ss, \"{\"+rs.Join()+\"}\")\n\t\t}\n\t\treturn start + joinStrings(ss, allowMulti) + end\n\tdefault:\n\t\t_, isEnumValue := vs.(protoreflect.EnumValueDescriptors)\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tm := reflect.ValueOf(vs).MethodByName(\"Get\")\n\t\t\tv := m.Call([]reflect.Value{reflect.ValueOf(i)})[0].Interface()\n\t\t\tss = append(ss, formatDescOpt(v.(protoreflect.Descriptor), false, allowMulti && !isEnumValue))\n\t\t}\n\t\treturn start + joinStrings(ss, allowMulti && isEnumValue) + end\n\t}\n}\n\n// descriptorAccessors is a list of accessors to print for each descriptor.\n//\n// Do not print all accessors since some contain redundant information,\n// while others are pointers that we do not want to follow since the descriptor\n// is actually a cyclic graph.\n//\n// Using a list allows us to print the accessors in a sensible order.\nvar descriptorAccessors = map[reflect.Type][]string{\n\treflect.TypeOf((*protoreflect.FileDescriptor)(nil)).Elem():      {\"Path\", \"Package\", \"Imports\", \"Messages\", \"Enums\", \"Extensions\", \"Services\"},\n\treflect.TypeOf((*protoreflect.MessageDescriptor)(nil)).Elem():   {\"IsMapEntry\", \"Fields\", \"Oneofs\", \"ReservedNames\", \"ReservedRanges\", \"RequiredNumbers\", \"ExtensionRanges\", \"Messages\", \"Enums\", \"Extensions\"},\n\treflect.TypeOf((*protoreflect.FieldDescriptor)(nil)).Elem():     {\"Number\", \"Cardinality\", \"Kind\", \"HasJSONName\", \"JSONName\", \"HasPresence\", \"IsExtension\", \"IsPacked\", \"IsWeak\", \"IsList\", \"IsMap\", \"MapKey\", \"MapValue\", \"HasDefault\", \"Default\", \"ContainingOneof\", \"ContainingMessage\", \"Message\", \"Enum\"},\n\treflect.TypeOf((*protoreflect.OneofDescriptor)(nil)).Elem():     {\"Fields\"}, // not directly used; must keep in sync with formatDescOpt\n\treflect.TypeOf((*protoreflect.EnumDescriptor)(nil)).Elem():      {\"Values\", \"ReservedNames\", \"ReservedRanges\"},\n\treflect.TypeOf((*protoreflect.EnumValueDescriptor)(nil)).Elem(): {\"Number\"},\n\treflect.TypeOf((*protoreflect.ServiceDescriptor)(nil)).Elem():   {\"Methods\"},\n\treflect.TypeOf((*protoreflect.MethodDescriptor)(nil)).Elem():    {\"Input\", \"Output\", \"IsStreamingClient\", \"IsStreamingServer\"},\n}\n\nfunc FormatDesc(s fmt.State, r rune, t protoreflect.Descriptor) {\n\tio.WriteString(s, formatDescOpt(t, true, r == 'v' && (s.Flag('+') || s.Flag('#'))))\n}\nfunc formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool) string {\n\trv := reflect.ValueOf(t)\n\trt := rv.MethodByName(\"ProtoType\").Type().In(0)\n\n\tstart, end := \"{\", \"}\"\n\tif isRoot {\n\t\tstart = rt.Name() + \"{\"\n\t}\n\n\t_, isFile := t.(protoreflect.FileDescriptor)\n\trs := records{allowMulti: allowMulti}\n\tif t.IsPlaceholder() {\n\t\tif isFile {\n\t\t\trs.Append(rv, \"Path\", \"Package\", \"IsPlaceholder\")\n\t\t} else {\n\t\t\trs.Append(rv, \"FullName\", \"IsPlaceholder\")\n\t\t}\n\t} else {\n\t\tswitch {\n\t\tcase isFile:\n\t\t\trs.Append(rv, \"Syntax\")\n\t\tcase isRoot:\n\t\t\trs.Append(rv, \"Syntax\", \"FullName\")\n\t\tdefault:\n\t\t\trs.Append(rv, \"Name\")\n\t\t}\n\t\tswitch t := t.(type) {\n\t\tcase protoreflect.FieldDescriptor:\n\t\t\tfor _, s := range descriptorAccessors[rt] {\n\t\t\t\tswitch s {\n\t\t\t\tcase \"MapKey\":\n\t\t\t\t\tif k := t.MapKey(); k != nil {\n\t\t\t\t\t\trs.recs = append(rs.recs, [2]string{\"MapKey\", k.Kind().String()})\n\t\t\t\t\t}\n\t\t\t\tcase \"MapValue\":\n\t\t\t\t\tif v := t.MapValue(); v != nil {\n\t\t\t\t\t\tswitch v.Kind() {\n\t\t\t\t\t\tcase protoreflect.EnumKind:\n\t\t\t\t\t\t\trs.recs = append(rs.recs, [2]string{\"MapValue\", string(v.Enum().FullName())})\n\t\t\t\t\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\t\t\t\t\trs.recs = append(rs.recs, [2]string{\"MapValue\", string(v.Message().FullName())})\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\trs.recs = append(rs.recs, [2]string{\"MapValue\", v.Kind().String()})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase \"ContainingOneof\":\n\t\t\t\t\tif od := t.ContainingOneof(); od != nil {\n\t\t\t\t\t\trs.recs = append(rs.recs, [2]string{\"Oneof\", string(od.Name())})\n\t\t\t\t\t}\n\t\t\t\tcase \"ContainingMessage\":\n\t\t\t\t\tif t.IsExtension() {\n\t\t\t\t\t\trs.recs = append(rs.recs, [2]string{\"Extendee\", string(t.ContainingMessage().FullName())})\n\t\t\t\t\t}\n\t\t\t\tcase \"Message\":\n\t\t\t\t\tif !t.IsMap() {\n\t\t\t\t\t\trs.Append(rv, s)\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\trs.Append(rv, s)\n\t\t\t\t}\n\t\t\t}\n\t\tcase protoreflect.OneofDescriptor:\n\t\t\tvar ss []string\n\t\t\tfs := t.Fields()\n\t\t\tfor i := 0; i < fs.Len(); i++ {\n\t\t\t\tss = append(ss, string(fs.Get(i).Name()))\n\t\t\t}\n\t\t\tif len(ss) > 0 {\n\t\t\t\trs.recs = append(rs.recs, [2]string{\"Fields\", \"[\" + joinStrings(ss, false) + \"]\"})\n\t\t\t}\n\t\tdefault:\n\t\t\trs.Append(rv, descriptorAccessors[rt]...)\n\t\t}\n\t\tif rv.MethodByName(\"GoType\").IsValid() {\n\t\t\trs.Append(rv, \"GoType\")\n\t\t}\n\t}\n\treturn start + rs.Join() + end\n}\n\ntype records struct {\n\trecs       [][2]string\n\tallowMulti bool\n}\n\nfunc (rs *records) Append(v reflect.Value, accessors ...string) {\n\tfor _, a := range accessors {\n\t\tvar rv reflect.Value\n\t\tif m := v.MethodByName(a); m.IsValid() {\n\t\t\trv = m.Call(nil)[0]\n\t\t}\n\t\tif v.Kind() == reflect.Struct && !rv.IsValid() {\n\t\t\trv = v.FieldByName(a)\n\t\t}\n\t\tif !rv.IsValid() {\n\t\t\tpanic(fmt.Sprintf(\"unknown accessor: %v.%s\", v.Type(), a))\n\t\t}\n\t\tif _, ok := rv.Interface().(protoreflect.Value); ok {\n\t\t\trv = rv.MethodByName(\"Interface\").Call(nil)[0]\n\t\t\tif !rv.IsNil() {\n\t\t\t\trv = rv.Elem()\n\t\t\t}\n\t\t}\n\n\t\t// Ignore zero values.\n\t\tvar isZero bool\n\t\tswitch rv.Kind() {\n\t\tcase reflect.Interface, reflect.Slice:\n\t\t\tisZero = rv.IsNil()\n\t\tcase reflect.Bool:\n\t\t\tisZero = rv.Bool() == false\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\tisZero = rv.Int() == 0\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\tisZero = rv.Uint() == 0\n\t\tcase reflect.String:\n\t\t\tisZero = rv.String() == \"\"\n\t\t}\n\t\tif n, ok := rv.Interface().(list); ok {\n\t\t\tisZero = n.Len() == 0\n\t\t}\n\t\tif isZero {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Format the value.\n\t\tvar s string\n\t\tv := rv.Interface()\n\t\tswitch v := v.(type) {\n\t\tcase list:\n\t\t\ts = formatListOpt(v, false, rs.allowMulti)\n\t\tcase protoreflect.FieldDescriptor, protoreflect.OneofDescriptor, protoreflect.EnumValueDescriptor, protoreflect.MethodDescriptor:\n\t\t\ts = string(v.(protoreflect.Descriptor).Name())\n\t\tcase protoreflect.Descriptor:\n\t\t\ts = string(v.FullName())\n\t\tcase string:\n\t\t\ts = strconv.Quote(v)\n\t\tcase []byte:\n\t\t\ts = fmt.Sprintf(\"%q\", v)\n\t\tdefault:\n\t\t\ts = fmt.Sprint(v)\n\t\t}\n\t\trs.recs = append(rs.recs, [2]string{a, s})\n\t}\n}\n\nfunc (rs *records) Join() string {\n\tvar ss []string\n\n\t// In single line mode, simply join all records with commas.\n\tif !rs.allowMulti {\n\t\tfor _, r := range rs.recs {\n\t\t\tss = append(ss, r[0]+formatColon(0)+r[1])\n\t\t}\n\t\treturn joinStrings(ss, false)\n\t}\n\n\t// In allowMulti line mode, align single line records for more readable output.\n\tvar maxLen int\n\tflush := func(i int) {\n\t\tfor _, r := range rs.recs[len(ss):i] {\n\t\t\tss = append(ss, r[0]+formatColon(maxLen-len(r[0]))+r[1])\n\t\t}\n\t\tmaxLen = 0\n\t}\n\tfor i, r := range rs.recs {\n\t\tif isMulti := strings.Contains(r[1], \"\\n\"); isMulti {\n\t\t\tflush(i)\n\t\t\tss = append(ss, r[0]+formatColon(0)+strings.Join(strings.Split(r[1], \"\\n\"), \"\\n\\t\"))\n\t\t} else if maxLen < len(r[0]) {\n\t\t\tmaxLen = len(r[0])\n\t\t}\n\t}\n\tflush(len(rs.recs))\n\treturn joinStrings(ss, true)\n}\n\nfunc formatColon(padding int) string {\n\t// Deliberately introduce instability into the debug output to\n\t// discourage users from performing string comparisons.\n\t// This provides us flexibility to change the output in the future.\n\tif detrand.Bool() {\n\t\treturn \":\" + strings.Repeat(\" \", 1+padding) // use non-breaking spaces (U+00a0)\n\t} else {\n\t\treturn \":\" + strings.Repeat(\" \", 1+padding) // use regular spaces (U+0020)\n\t}\n}\n\nfunc joinStrings(ss []string, isMulti bool) string {\n\tif len(ss) == 0 {\n\t\treturn \"\"\n\t}\n\tif isMulti {\n\t\treturn \"\\n\\t\" + strings.Join(ss, \"\\n\\t\") + \"\\n\"\n\t}\n\treturn strings.Join(ss, \", \")\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/descopts/options.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package descopts contains the nil pointers to concrete descriptor options.\n//\n// This package exists as a form of reverse dependency injection so that certain\n// packages (e.g., internal/filedesc and internal/filetype can avoid a direct\n// dependency on the descriptor proto package).\npackage descopts\n\nimport pref \"google.golang.org/protobuf/reflect/protoreflect\"\n\n// These variables are set by the init function in descriptor.pb.go via logic\n// in internal/filetype. In other words, so long as the descriptor proto package\n// is linked in, these variables will be populated.\n//\n// Each variable is populated with a nil pointer to the options struct.\nvar (\n\tFile           pref.ProtoMessage\n\tEnum           pref.ProtoMessage\n\tEnumValue      pref.ProtoMessage\n\tMessage        pref.ProtoMessage\n\tField          pref.ProtoMessage\n\tOneof          pref.ProtoMessage\n\tExtensionRange pref.ProtoMessage\n\tService        pref.ProtoMessage\n\tMethod         pref.ProtoMessage\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/detrand/rand.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package detrand provides deterministically random functionality.\n//\n// The pseudo-randomness of these functions is seeded by the program binary\n// itself and guarantees that the output does not change within a program,\n// while ensuring that the output is unstable across different builds.\npackage detrand\n\nimport (\n\t\"encoding/binary\"\n\t\"hash/fnv\"\n\t\"os\"\n)\n\n// Disable disables detrand such that all functions returns the zero value.\n// This function is not concurrent-safe and must be called during program init.\nfunc Disable() {\n\trandSeed = 0\n}\n\n// Bool returns a deterministically random boolean.\nfunc Bool() bool {\n\treturn randSeed%2 == 1\n}\n\n// Intn returns a deterministically random integer between 0 and n-1, inclusive.\nfunc Intn(n int) int {\n\tif n <= 0 {\n\t\tpanic(\"must be positive\")\n\t}\n\treturn int(randSeed % uint64(n))\n}\n\n// randSeed is a best-effort at an approximate hash of the Go binary.\nvar randSeed = binaryHash()\n\nfunc binaryHash() uint64 {\n\t// Open the Go binary.\n\ts, err := os.Executable()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tf, err := os.Open(s)\n\tif err != nil {\n\t\treturn 0\n\t}\n\tdefer f.Close()\n\n\t// Hash the size and several samples of the Go binary.\n\tconst numSamples = 8\n\tvar buf [64]byte\n\th := fnv.New64()\n\tfi, err := f.Stat()\n\tif err != nil {\n\t\treturn 0\n\t}\n\tbinary.LittleEndian.PutUint64(buf[:8], uint64(fi.Size()))\n\th.Write(buf[:8])\n\tfor i := int64(0); i < numSamples; i++ {\n\t\tif _, err := f.ReadAt(buf[:], i*fi.Size()/numSamples); err != nil {\n\t\t\treturn 0\n\t\t}\n\t\th.Write(buf[:])\n\t}\n\treturn h.Sum64()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/defval/default.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package defval marshals and unmarshals textual forms of default values.\n//\n// This package handles both the form historically used in Go struct field tags\n// and also the form used by google.protobuf.FieldDescriptorProto.default_value\n// since they differ in superficial ways.\npackage defval\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\n\tptext \"google.golang.org/protobuf/internal/encoding/text\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Format is the serialization format used to represent the default value.\ntype Format int\n\nconst (\n\t_ Format = iota\n\n\t// Descriptor uses the serialization format that protoc uses with the\n\t// google.protobuf.FieldDescriptorProto.default_value field.\n\tDescriptor\n\n\t// GoTag uses the historical serialization format in Go struct field tags.\n\tGoTag\n)\n\n// Unmarshal deserializes the default string s according to the given kind k.\n// When k is an enum, a list of enum value descriptors must be provided.\nfunc Unmarshal(s string, k protoreflect.Kind, evs protoreflect.EnumValueDescriptors, f Format) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) {\n\tswitch k {\n\tcase protoreflect.BoolKind:\n\t\tif f == GoTag {\n\t\t\tswitch s {\n\t\t\tcase \"1\":\n\t\t\t\treturn protoreflect.ValueOfBool(true), nil, nil\n\t\t\tcase \"0\":\n\t\t\t\treturn protoreflect.ValueOfBool(false), nil, nil\n\t\t\t}\n\t\t} else {\n\t\t\tswitch s {\n\t\t\tcase \"true\":\n\t\t\t\treturn protoreflect.ValueOfBool(true), nil, nil\n\t\t\tcase \"false\":\n\t\t\t\treturn protoreflect.ValueOfBool(false), nil, nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.EnumKind:\n\t\tif f == GoTag {\n\t\t\t// Go tags use the numeric form of the enum value.\n\t\t\tif n, err := strconv.ParseInt(s, 10, 32); err == nil {\n\t\t\t\tif ev := evs.ByNumber(protoreflect.EnumNumber(n)); ev != nil {\n\t\t\t\t\treturn protoreflect.ValueOfEnum(ev.Number()), ev, nil\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Descriptor default_value use the enum identifier.\n\t\t\tev := evs.ByName(protoreflect.Name(s))\n\t\t\tif ev != nil {\n\t\t\t\treturn protoreflect.ValueOfEnum(ev.Number()), ev, nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif v, err := strconv.ParseInt(s, 10, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfInt32(int32(v)), nil, nil\n\t\t}\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif v, err := strconv.ParseInt(s, 10, 64); err == nil {\n\t\t\treturn protoreflect.ValueOfInt64(int64(v)), nil, nil\n\t\t}\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif v, err := strconv.ParseUint(s, 10, 32); err == nil {\n\t\t\treturn protoreflect.ValueOfUint32(uint32(v)), nil, nil\n\t\t}\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif v, err := strconv.ParseUint(s, 10, 64); err == nil {\n\t\t\treturn protoreflect.ValueOfUint64(uint64(v)), nil, nil\n\t\t}\n\tcase protoreflect.FloatKind, protoreflect.DoubleKind:\n\t\tvar v float64\n\t\tvar err error\n\t\tswitch s {\n\t\tcase \"-inf\":\n\t\t\tv = math.Inf(-1)\n\t\tcase \"inf\":\n\t\t\tv = math.Inf(+1)\n\t\tcase \"nan\":\n\t\t\tv = math.NaN()\n\t\tdefault:\n\t\t\tv, err = strconv.ParseFloat(s, 64)\n\t\t}\n\t\tif err == nil {\n\t\t\tif k == protoreflect.FloatKind {\n\t\t\t\treturn protoreflect.ValueOfFloat32(float32(v)), nil, nil\n\t\t\t} else {\n\t\t\t\treturn protoreflect.ValueOfFloat64(float64(v)), nil, nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.StringKind:\n\t\t// String values are already unescaped and can be used as is.\n\t\treturn protoreflect.ValueOfString(s), nil, nil\n\tcase protoreflect.BytesKind:\n\t\tif b, ok := unmarshalBytes(s); ok {\n\t\t\treturn protoreflect.ValueOfBytes(b), nil, nil\n\t\t}\n\t}\n\treturn protoreflect.Value{}, nil, errors.New(\"could not parse value for %v: %q\", k, s)\n}\n\n// Marshal serializes v as the default string according to the given kind k.\n// When specifying the Descriptor format for an enum kind, the associated\n// enum value descriptor must be provided.\nfunc Marshal(v protoreflect.Value, ev protoreflect.EnumValueDescriptor, k protoreflect.Kind, f Format) (string, error) {\n\tswitch k {\n\tcase protoreflect.BoolKind:\n\t\tif f == GoTag {\n\t\t\tif v.Bool() {\n\t\t\t\treturn \"1\", nil\n\t\t\t} else {\n\t\t\t\treturn \"0\", nil\n\t\t\t}\n\t\t} else {\n\t\t\tif v.Bool() {\n\t\t\t\treturn \"true\", nil\n\t\t\t} else {\n\t\t\t\treturn \"false\", nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.EnumKind:\n\t\tif f == GoTag {\n\t\t\treturn strconv.FormatInt(int64(v.Enum()), 10), nil\n\t\t} else {\n\t\t\treturn string(ev.Name()), nil\n\t\t}\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\treturn strconv.FormatInt(v.Int(), 10), nil\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind, protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\treturn strconv.FormatUint(v.Uint(), 10), nil\n\tcase protoreflect.FloatKind, protoreflect.DoubleKind:\n\t\tf := v.Float()\n\t\tswitch {\n\t\tcase math.IsInf(f, -1):\n\t\t\treturn \"-inf\", nil\n\t\tcase math.IsInf(f, +1):\n\t\t\treturn \"inf\", nil\n\t\tcase math.IsNaN(f):\n\t\t\treturn \"nan\", nil\n\t\tdefault:\n\t\t\tif k == protoreflect.FloatKind {\n\t\t\t\treturn strconv.FormatFloat(f, 'g', -1, 32), nil\n\t\t\t} else {\n\t\t\t\treturn strconv.FormatFloat(f, 'g', -1, 64), nil\n\t\t\t}\n\t\t}\n\tcase protoreflect.StringKind:\n\t\t// String values are serialized as is without any escaping.\n\t\treturn v.String(), nil\n\tcase protoreflect.BytesKind:\n\t\tif s, ok := marshalBytes(v.Bytes()); ok {\n\t\t\treturn s, nil\n\t\t}\n\t}\n\treturn \"\", errors.New(\"could not format value for %v: %v\", k, v)\n}\n\n// unmarshalBytes deserializes bytes by applying C unescaping.\nfunc unmarshalBytes(s string) ([]byte, bool) {\n\t// Bytes values use the same escaping as the text format,\n\t// however they lack the surrounding double quotes.\n\tv, err := ptext.UnmarshalString(`\"` + s + `\"`)\n\tif err != nil {\n\t\treturn nil, false\n\t}\n\treturn []byte(v), true\n}\n\n// marshalBytes serializes bytes by using C escaping.\n// To match the exact output of protoc, this is identical to the\n// CEscape function in strutil.cc of the protoc source code.\nfunc marshalBytes(b []byte) (string, bool) {\n\tvar s []byte\n\tfor _, c := range b {\n\t\tswitch c {\n\t\tcase '\\n':\n\t\t\ts = append(s, `\\n`...)\n\t\tcase '\\r':\n\t\t\ts = append(s, `\\r`...)\n\t\tcase '\\t':\n\t\t\ts = append(s, `\\t`...)\n\t\tcase '\"':\n\t\t\ts = append(s, `\\\"`...)\n\t\tcase '\\'':\n\t\t\ts = append(s, `\\'`...)\n\t\tcase '\\\\':\n\t\t\ts = append(s, `\\\\`...)\n\t\tdefault:\n\t\t\tif printableASCII := c >= 0x20 && c <= 0x7e; printableASCII {\n\t\t\t\ts = append(s, c)\n\t\t\t} else {\n\t\t\t\ts = append(s, fmt.Sprintf(`\\%03o`, c)...)\n\t\t\t}\n\t\t}\n\t}\n\treturn string(s), true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/json/decode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage json\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"regexp\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n)\n\n// call specifies which Decoder method was invoked.\ntype call uint8\n\nconst (\n\treadCall call = iota\n\tpeekCall\n)\n\nconst unexpectedFmt = \"unexpected token %s\"\n\n// ErrUnexpectedEOF means that EOF was encountered in the middle of the input.\nvar ErrUnexpectedEOF = errors.New(\"%v\", io.ErrUnexpectedEOF)\n\n// Decoder is a token-based JSON decoder.\ntype Decoder struct {\n\t// lastCall is last method called, either readCall or peekCall.\n\t// Initial value is readCall.\n\tlastCall call\n\n\t// lastToken contains the last read token.\n\tlastToken Token\n\n\t// lastErr contains the last read error.\n\tlastErr error\n\n\t// openStack is a stack containing ObjectOpen and ArrayOpen values. The\n\t// top of stack represents the object or the array the current value is\n\t// directly located in.\n\topenStack []Kind\n\n\t// orig is used in reporting line and column.\n\torig []byte\n\t// in contains the unconsumed input.\n\tin []byte\n}\n\n// NewDecoder returns a Decoder to read the given []byte.\nfunc NewDecoder(b []byte) *Decoder {\n\treturn &Decoder{orig: b, in: b}\n}\n\n// Peek looks ahead and returns the next token kind without advancing a read.\nfunc (d *Decoder) Peek() (Token, error) {\n\tdefer func() { d.lastCall = peekCall }()\n\tif d.lastCall == readCall {\n\t\td.lastToken, d.lastErr = d.Read()\n\t}\n\treturn d.lastToken, d.lastErr\n}\n\n// Read returns the next JSON token.\n// It will return an error if there is no valid token.\nfunc (d *Decoder) Read() (Token, error) {\n\tconst scalar = Null | Bool | Number | String\n\n\tdefer func() { d.lastCall = readCall }()\n\tif d.lastCall == peekCall {\n\t\treturn d.lastToken, d.lastErr\n\t}\n\n\ttok, err := d.parseNext()\n\tif err != nil {\n\t\treturn Token{}, err\n\t}\n\n\tswitch tok.kind {\n\tcase EOF:\n\t\tif len(d.openStack) != 0 ||\n\t\t\td.lastToken.kind&scalar|ObjectClose|ArrayClose == 0 {\n\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t}\n\n\tcase Null:\n\t\tif !d.isValueNext() {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\n\tcase Bool, Number:\n\t\tif !d.isValueNext() {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\n\tcase String:\n\t\tif d.isValueNext() {\n\t\t\tbreak\n\t\t}\n\t\t// This string token should only be for a field name.\n\t\tif d.lastToken.kind&(ObjectOpen|comma) == 0 {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\t\tif len(d.in) == 0 {\n\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t}\n\t\tif c := d.in[0]; c != ':' {\n\t\t\treturn Token{}, d.newSyntaxError(d.currPos(), `unexpected character %s, missing \":\" after field name`, string(c))\n\t\t}\n\t\ttok.kind = Name\n\t\td.consume(1)\n\n\tcase ObjectOpen, ArrayOpen:\n\t\tif !d.isValueNext() {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\t\td.openStack = append(d.openStack, tok.kind)\n\n\tcase ObjectClose:\n\t\tif len(d.openStack) == 0 ||\n\t\t\td.lastToken.kind == comma ||\n\t\t\td.openStack[len(d.openStack)-1] != ObjectOpen {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\t\td.openStack = d.openStack[:len(d.openStack)-1]\n\n\tcase ArrayClose:\n\t\tif len(d.openStack) == 0 ||\n\t\t\td.lastToken.kind == comma ||\n\t\t\td.openStack[len(d.openStack)-1] != ArrayOpen {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\t\td.openStack = d.openStack[:len(d.openStack)-1]\n\n\tcase comma:\n\t\tif len(d.openStack) == 0 ||\n\t\t\td.lastToken.kind&(scalar|ObjectClose|ArrayClose) == 0 {\n\t\t\treturn Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())\n\t\t}\n\t}\n\n\t// Update d.lastToken only after validating token to be in the right sequence.\n\td.lastToken = tok\n\n\tif d.lastToken.kind == comma {\n\t\treturn d.Read()\n\t}\n\treturn tok, nil\n}\n\n// Any sequence that looks like a non-delimiter (for error reporting).\nvar errRegexp = regexp.MustCompile(`^([-+._a-zA-Z0-9]{1,32}|.)`)\n\n// parseNext parses for the next JSON token. It returns a Token object for\n// different types, except for Name. It does not handle whether the next token\n// is in a valid sequence or not.\nfunc (d *Decoder) parseNext() (Token, error) {\n\t// Trim leading spaces.\n\td.consume(0)\n\n\tin := d.in\n\tif len(in) == 0 {\n\t\treturn d.consumeToken(EOF, 0), nil\n\t}\n\n\tswitch in[0] {\n\tcase 'n':\n\t\tif n := matchWithDelim(\"null\", in); n != 0 {\n\t\t\treturn d.consumeToken(Null, n), nil\n\t\t}\n\n\tcase 't':\n\t\tif n := matchWithDelim(\"true\", in); n != 0 {\n\t\t\treturn d.consumeBoolToken(true, n), nil\n\t\t}\n\n\tcase 'f':\n\t\tif n := matchWithDelim(\"false\", in); n != 0 {\n\t\t\treturn d.consumeBoolToken(false, n), nil\n\t\t}\n\n\tcase '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':\n\t\tif n, ok := parseNumber(in); ok {\n\t\t\treturn d.consumeToken(Number, n), nil\n\t\t}\n\n\tcase '\"':\n\t\ts, n, err := d.parseString(in)\n\t\tif err != nil {\n\t\t\treturn Token{}, err\n\t\t}\n\t\treturn d.consumeStringToken(s, n), nil\n\n\tcase '{':\n\t\treturn d.consumeToken(ObjectOpen, 1), nil\n\n\tcase '}':\n\t\treturn d.consumeToken(ObjectClose, 1), nil\n\n\tcase '[':\n\t\treturn d.consumeToken(ArrayOpen, 1), nil\n\n\tcase ']':\n\t\treturn d.consumeToken(ArrayClose, 1), nil\n\n\tcase ',':\n\t\treturn d.consumeToken(comma, 1), nil\n\t}\n\treturn Token{}, d.newSyntaxError(d.currPos(), \"invalid value %s\", errRegexp.Find(in))\n}\n\n// newSyntaxError returns an error with line and column information useful for\n// syntax errors.\nfunc (d *Decoder) newSyntaxError(pos int, f string, x ...interface{}) error {\n\te := errors.New(f, x...)\n\tline, column := d.Position(pos)\n\treturn errors.New(\"syntax error (line %d:%d): %v\", line, column, e)\n}\n\n// Position returns line and column number of given index of the original input.\n// It will panic if index is out of range.\nfunc (d *Decoder) Position(idx int) (line int, column int) {\n\tb := d.orig[:idx]\n\tline = bytes.Count(b, []byte(\"\\n\")) + 1\n\tif i := bytes.LastIndexByte(b, '\\n'); i >= 0 {\n\t\tb = b[i+1:]\n\t}\n\tcolumn = utf8.RuneCount(b) + 1 // ignore multi-rune characters\n\treturn line, column\n}\n\n// currPos returns the current index position of d.in from d.orig.\nfunc (d *Decoder) currPos() int {\n\treturn len(d.orig) - len(d.in)\n}\n\n// matchWithDelim matches s with the input b and verifies that the match\n// terminates with a delimiter of some form (e.g., r\"[^-+_.a-zA-Z0-9]\").\n// As a special case, EOF is considered a delimiter. It returns the length of s\n// if there is a match, else 0.\nfunc matchWithDelim(s string, b []byte) int {\n\tif !bytes.HasPrefix(b, []byte(s)) {\n\t\treturn 0\n\t}\n\n\tn := len(s)\n\tif n < len(b) && isNotDelim(b[n]) {\n\t\treturn 0\n\t}\n\treturn n\n}\n\n// isNotDelim returns true if given byte is a not delimiter character.\nfunc isNotDelim(c byte) bool {\n\treturn (c == '-' || c == '+' || c == '.' || c == '_' ||\n\t\t('a' <= c && c <= 'z') ||\n\t\t('A' <= c && c <= 'Z') ||\n\t\t('0' <= c && c <= '9'))\n}\n\n// consume consumes n bytes of input and any subsequent whitespace.\nfunc (d *Decoder) consume(n int) {\n\td.in = d.in[n:]\n\tfor len(d.in) > 0 {\n\t\tswitch d.in[0] {\n\t\tcase ' ', '\\n', '\\r', '\\t':\n\t\t\td.in = d.in[1:]\n\t\tdefault:\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// isValueNext returns true if next type should be a JSON value: Null,\n// Number, String or Bool.\nfunc (d *Decoder) isValueNext() bool {\n\tif len(d.openStack) == 0 {\n\t\treturn d.lastToken.kind == 0\n\t}\n\n\tstart := d.openStack[len(d.openStack)-1]\n\tswitch start {\n\tcase ObjectOpen:\n\t\treturn d.lastToken.kind&Name != 0\n\tcase ArrayOpen:\n\t\treturn d.lastToken.kind&(ArrayOpen|comma) != 0\n\t}\n\tpanic(fmt.Sprintf(\n\t\t\"unreachable logic in Decoder.isValueNext, lastToken.kind: %v, openStack: %v\",\n\t\td.lastToken.kind, start))\n}\n\n// consumeToken constructs a Token for given Kind with raw value derived from\n// current d.in and given size, and consumes the given size-length of it.\nfunc (d *Decoder) consumeToken(kind Kind, size int) Token {\n\ttok := Token{\n\t\tkind: kind,\n\t\traw:  d.in[:size],\n\t\tpos:  len(d.orig) - len(d.in),\n\t}\n\td.consume(size)\n\treturn tok\n}\n\n// consumeBoolToken constructs a Token for a Bool kind with raw value derived from\n// current d.in and given size.\nfunc (d *Decoder) consumeBoolToken(b bool, size int) Token {\n\ttok := Token{\n\t\tkind: Bool,\n\t\traw:  d.in[:size],\n\t\tpos:  len(d.orig) - len(d.in),\n\t\tboo:  b,\n\t}\n\td.consume(size)\n\treturn tok\n}\n\n// consumeStringToken constructs a Token for a String kind with raw value derived\n// from current d.in and given size.\nfunc (d *Decoder) consumeStringToken(s string, size int) Token {\n\ttok := Token{\n\t\tkind: String,\n\t\traw:  d.in[:size],\n\t\tpos:  len(d.orig) - len(d.in),\n\t\tstr:  s,\n\t}\n\td.consume(size)\n\treturn tok\n}\n\n// Clone returns a copy of the Decoder for use in reading ahead the next JSON\n// object, array or other values without affecting current Decoder.\nfunc (d *Decoder) Clone() *Decoder {\n\tret := *d\n\tret.openStack = append([]Kind(nil), ret.openStack...)\n\treturn &ret\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/json/decode_number.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage json\n\nimport (\n\t\"bytes\"\n\t\"strconv\"\n)\n\n// parseNumber reads the given []byte for a valid JSON number. If it is valid,\n// it returns the number of bytes.  Parsing logic follows the definition in\n// https://tools.ietf.org/html/rfc7159#section-6, and is based off\n// encoding/json.isValidNumber function.\nfunc parseNumber(input []byte) (int, bool) {\n\tvar n int\n\n\ts := input\n\tif len(s) == 0 {\n\t\treturn 0, false\n\t}\n\n\t// Optional -\n\tif s[0] == '-' {\n\t\ts = s[1:]\n\t\tn++\n\t\tif len(s) == 0 {\n\t\t\treturn 0, false\n\t\t}\n\t}\n\n\t// Digits\n\tswitch {\n\tcase s[0] == '0':\n\t\ts = s[1:]\n\t\tn++\n\n\tcase '1' <= s[0] && s[0] <= '9':\n\t\ts = s[1:]\n\t\tn++\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\n\tdefault:\n\t\treturn 0, false\n\t}\n\n\t// . followed by 1 or more digits.\n\tif len(s) >= 2 && s[0] == '.' && '0' <= s[1] && s[1] <= '9' {\n\t\ts = s[2:]\n\t\tn += 2\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t}\n\n\t// e or E followed by an optional - or + and\n\t// 1 or more digits.\n\tif len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') {\n\t\ts = s[1:]\n\t\tn++\n\t\tif s[0] == '+' || s[0] == '-' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t\tif len(s) == 0 {\n\t\t\t\treturn 0, false\n\t\t\t}\n\t\t}\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t}\n\n\t// Check that next byte is a delimiter or it is at the end.\n\tif n < len(input) && isNotDelim(input[n]) {\n\t\treturn 0, false\n\t}\n\n\treturn n, true\n}\n\n// numberParts is the result of parsing out a valid JSON number. It contains\n// the parts of a number. The parts are used for integer conversion.\ntype numberParts struct {\n\tneg  bool\n\tintp []byte\n\tfrac []byte\n\texp  []byte\n}\n\n// parseNumber constructs numberParts from given []byte. The logic here is\n// similar to consumeNumber above with the difference of having to construct\n// numberParts. The slice fields in numberParts are subslices of the input.\nfunc parseNumberParts(input []byte) (numberParts, bool) {\n\tvar neg bool\n\tvar intp []byte\n\tvar frac []byte\n\tvar exp []byte\n\n\ts := input\n\tif len(s) == 0 {\n\t\treturn numberParts{}, false\n\t}\n\n\t// Optional -\n\tif s[0] == '-' {\n\t\tneg = true\n\t\ts = s[1:]\n\t\tif len(s) == 0 {\n\t\t\treturn numberParts{}, false\n\t\t}\n\t}\n\n\t// Digits\n\tswitch {\n\tcase s[0] == '0':\n\t\t// Skip first 0 and no need to store.\n\t\ts = s[1:]\n\n\tcase '1' <= s[0] && s[0] <= '9':\n\t\tintp = s\n\t\tn := 1\n\t\ts = s[1:]\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\tintp = intp[:n]\n\n\tdefault:\n\t\treturn numberParts{}, false\n\t}\n\n\t// . followed by 1 or more digits.\n\tif len(s) >= 2 && s[0] == '.' && '0' <= s[1] && s[1] <= '9' {\n\t\tfrac = s[1:]\n\t\tn := 1\n\t\ts = s[2:]\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\tfrac = frac[:n]\n\t}\n\n\t// e or E followed by an optional - or + and\n\t// 1 or more digits.\n\tif len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') {\n\t\ts = s[1:]\n\t\texp = s\n\t\tn := 0\n\t\tif s[0] == '+' || s[0] == '-' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t\tif len(s) == 0 {\n\t\t\t\treturn numberParts{}, false\n\t\t\t}\n\t\t}\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\texp = exp[:n]\n\t}\n\n\treturn numberParts{\n\t\tneg:  neg,\n\t\tintp: intp,\n\t\tfrac: bytes.TrimRight(frac, \"0\"), // Remove unnecessary 0s to the right.\n\t\texp:  exp,\n\t}, true\n}\n\n// normalizeToIntString returns an integer string in normal form without the\n// E-notation for given numberParts. It will return false if it is not an\n// integer or if the exponent exceeds than max/min int value.\nfunc normalizeToIntString(n numberParts) (string, bool) {\n\tintpSize := len(n.intp)\n\tfracSize := len(n.frac)\n\n\tif intpSize == 0 && fracSize == 0 {\n\t\treturn \"0\", true\n\t}\n\n\tvar exp int\n\tif len(n.exp) > 0 {\n\t\ti, err := strconv.ParseInt(string(n.exp), 10, 32)\n\t\tif err != nil {\n\t\t\treturn \"\", false\n\t\t}\n\t\texp = int(i)\n\t}\n\n\tvar num []byte\n\tif exp >= 0 {\n\t\t// For positive E, shift fraction digits into integer part and also pad\n\t\t// with zeroes as needed.\n\n\t\t// If there are more digits in fraction than the E value, then the\n\t\t// number is not an integer.\n\t\tif fracSize > exp {\n\t\t\treturn \"\", false\n\t\t}\n\n\t\t// Make sure resulting digits are within max value limit to avoid\n\t\t// unnecessarily constructing a large byte slice that may simply fail\n\t\t// later on.\n\t\tconst maxDigits = 20 // Max uint64 value has 20 decimal digits.\n\t\tif intpSize+exp > maxDigits {\n\t\t\treturn \"\", false\n\t\t}\n\n\t\t// Set cap to make a copy of integer part when appended.\n\t\tnum = n.intp[:len(n.intp):len(n.intp)]\n\t\tnum = append(num, n.frac...)\n\t\tfor i := 0; i < exp-fracSize; i++ {\n\t\t\tnum = append(num, '0')\n\t\t}\n\t} else {\n\t\t// For negative E, shift digits in integer part out.\n\n\t\t// If there are fractions, then the number is not an integer.\n\t\tif fracSize > 0 {\n\t\t\treturn \"\", false\n\t\t}\n\n\t\t// index is where the decimal point will be after adjusting for negative\n\t\t// exponent.\n\t\tindex := intpSize + exp\n\t\tif index < 0 {\n\t\t\treturn \"\", false\n\t\t}\n\n\t\tnum = n.intp\n\t\t// If any of the digits being shifted to the right of the decimal point\n\t\t// is non-zero, then the number is not an integer.\n\t\tfor i := index; i < intpSize; i++ {\n\t\t\tif num[i] != '0' {\n\t\t\t\treturn \"\", false\n\t\t\t}\n\t\t}\n\t\tnum = num[:index]\n\t}\n\n\tif n.neg {\n\t\treturn \"-\" + string(num), true\n\t}\n\treturn string(num), true\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/json/decode_string.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage json\n\nimport (\n\t\"strconv\"\n\t\"unicode\"\n\t\"unicode/utf16\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/strs\"\n)\n\nfunc (d *Decoder) parseString(in []byte) (string, int, error) {\n\tin0 := in\n\tif len(in) == 0 {\n\t\treturn \"\", 0, ErrUnexpectedEOF\n\t}\n\tif in[0] != '\"' {\n\t\treturn \"\", 0, d.newSyntaxError(d.currPos(), \"invalid character %q at start of string\", in[0])\n\t}\n\tin = in[1:]\n\ti := indexNeedEscapeInBytes(in)\n\tin, out := in[i:], in[:i:i] // set cap to prevent mutations\n\tfor len(in) > 0 {\n\t\tswitch r, n := utf8.DecodeRune(in); {\n\t\tcase r == utf8.RuneError && n == 1:\n\t\t\treturn \"\", 0, d.newSyntaxError(d.currPos(), \"invalid UTF-8 in string\")\n\t\tcase r < ' ':\n\t\t\treturn \"\", 0, d.newSyntaxError(d.currPos(), \"invalid character %q in string\", r)\n\t\tcase r == '\"':\n\t\t\tin = in[1:]\n\t\t\tn := len(in0) - len(in)\n\t\t\treturn string(out), n, nil\n\t\tcase r == '\\\\':\n\t\t\tif len(in) < 2 {\n\t\t\t\treturn \"\", 0, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch r := in[1]; r {\n\t\t\tcase '\"', '\\\\', '/':\n\t\t\t\tin, out = in[2:], append(out, r)\n\t\t\tcase 'b':\n\t\t\t\tin, out = in[2:], append(out, '\\b')\n\t\t\tcase 'f':\n\t\t\t\tin, out = in[2:], append(out, '\\f')\n\t\t\tcase 'n':\n\t\t\t\tin, out = in[2:], append(out, '\\n')\n\t\t\tcase 'r':\n\t\t\t\tin, out = in[2:], append(out, '\\r')\n\t\t\tcase 't':\n\t\t\t\tin, out = in[2:], append(out, '\\t')\n\t\t\tcase 'u':\n\t\t\t\tif len(in) < 6 {\n\t\t\t\t\treturn \"\", 0, ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv, err := strconv.ParseUint(string(in[2:6]), 16, 16)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", 0, d.newSyntaxError(d.currPos(), \"invalid escape code %q in string\", in[:6])\n\t\t\t\t}\n\t\t\t\tin = in[6:]\n\n\t\t\t\tr := rune(v)\n\t\t\t\tif utf16.IsSurrogate(r) {\n\t\t\t\t\tif len(in) < 6 {\n\t\t\t\t\t\treturn \"\", 0, ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tv, err := strconv.ParseUint(string(in[2:6]), 16, 16)\n\t\t\t\t\tr = utf16.DecodeRune(r, rune(v))\n\t\t\t\t\tif in[0] != '\\\\' || in[1] != 'u' ||\n\t\t\t\t\t\tr == unicode.ReplacementChar || err != nil {\n\t\t\t\t\t\treturn \"\", 0, d.newSyntaxError(d.currPos(), \"invalid escape code %q in string\", in[:6])\n\t\t\t\t\t}\n\t\t\t\t\tin = in[6:]\n\t\t\t\t}\n\t\t\t\tout = append(out, string(r)...)\n\t\t\tdefault:\n\t\t\t\treturn \"\", 0, d.newSyntaxError(d.currPos(), \"invalid escape code %q in string\", in[:2])\n\t\t\t}\n\t\tdefault:\n\t\t\ti := indexNeedEscapeInBytes(in[n:])\n\t\t\tin, out = in[n+i:], append(out, in[:n+i]...)\n\t\t}\n\t}\n\treturn \"\", 0, ErrUnexpectedEOF\n}\n\n// indexNeedEscapeInBytes returns the index of the character that needs\n// escaping. If no characters need escaping, this returns the input length.\nfunc indexNeedEscapeInBytes(b []byte) int { return indexNeedEscapeInString(strs.UnsafeString(b)) }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/json/decode_token.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage json\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// Kind represents a token kind expressible in the JSON format.\ntype Kind uint16\n\nconst (\n\tInvalid Kind = (1 << iota) / 2\n\tEOF\n\tNull\n\tBool\n\tNumber\n\tString\n\tName\n\tObjectOpen\n\tObjectClose\n\tArrayOpen\n\tArrayClose\n\n\t// comma is only for parsing in between tokens and\n\t// does not need to be exported.\n\tcomma\n)\n\nfunc (k Kind) String() string {\n\tswitch k {\n\tcase EOF:\n\t\treturn \"eof\"\n\tcase Null:\n\t\treturn \"null\"\n\tcase Bool:\n\t\treturn \"bool\"\n\tcase Number:\n\t\treturn \"number\"\n\tcase String:\n\t\treturn \"string\"\n\tcase ObjectOpen:\n\t\treturn \"{\"\n\tcase ObjectClose:\n\t\treturn \"}\"\n\tcase Name:\n\t\treturn \"name\"\n\tcase ArrayOpen:\n\t\treturn \"[\"\n\tcase ArrayClose:\n\t\treturn \"]\"\n\tcase comma:\n\t\treturn \",\"\n\t}\n\treturn \"<invalid>\"\n}\n\n// Token provides a parsed token kind and value.\n//\n// Values are provided by the difference accessor methods. The accessor methods\n// Name, Bool, and ParsedString will panic if called on the wrong kind. There\n// are different accessor methods for the Number kind for converting to the\n// appropriate Go numeric type and those methods have the ok return value.\ntype Token struct {\n\t// Token kind.\n\tkind Kind\n\t// pos provides the position of the token in the original input.\n\tpos int\n\t// raw bytes of the serialized token.\n\t// This is a subslice into the original input.\n\traw []byte\n\t// boo is parsed boolean value.\n\tboo bool\n\t// str is parsed string value.\n\tstr string\n}\n\n// Kind returns the token kind.\nfunc (t Token) Kind() Kind {\n\treturn t.kind\n}\n\n// RawString returns the read value in string.\nfunc (t Token) RawString() string {\n\treturn string(t.raw)\n}\n\n// Pos returns the token position from the input.\nfunc (t Token) Pos() int {\n\treturn t.pos\n}\n\n// Name returns the object name if token is Name, else it panics.\nfunc (t Token) Name() string {\n\tif t.kind == Name {\n\t\treturn t.str\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a Name: %v\", t.RawString()))\n}\n\n// Bool returns the bool value if token kind is Bool, else it panics.\nfunc (t Token) Bool() bool {\n\tif t.kind == Bool {\n\t\treturn t.boo\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a Bool: %v\", t.RawString()))\n}\n\n// ParsedString returns the string value for a JSON string token or the read\n// value in string if token is not a string.\nfunc (t Token) ParsedString() string {\n\tif t.kind == String {\n\t\treturn t.str\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a String: %v\", t.RawString()))\n}\n\n// Float returns the floating-point number if token kind is Number.\n//\n// The floating-point precision is specified by the bitSize parameter: 32 for\n// float32 or 64 for float64. If bitSize=32, the result still has type float64,\n// but it will be convertible to float32 without changing its value. It will\n// return false if the number exceeds the floating point limits for given\n// bitSize.\nfunc (t Token) Float(bitSize int) (float64, bool) {\n\tif t.kind != Number {\n\t\treturn 0, false\n\t}\n\tf, err := strconv.ParseFloat(t.RawString(), bitSize)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn f, true\n}\n\n// Int returns the signed integer number if token is Number.\n//\n// The given bitSize specifies the integer type that the result must fit into.\n// It returns false if the number is not an integer value or if the result\n// exceeds the limits for given bitSize.\nfunc (t Token) Int(bitSize int) (int64, bool) {\n\ts, ok := t.getIntStr()\n\tif !ok {\n\t\treturn 0, false\n\t}\n\tn, err := strconv.ParseInt(s, 10, bitSize)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn n, true\n}\n\n// Uint returns the signed integer number if token is Number.\n//\n// The given bitSize specifies the unsigned integer type that the result must\n// fit into. It returns false if the number is not an unsigned integer value\n// or if the result exceeds the limits for given bitSize.\nfunc (t Token) Uint(bitSize int) (uint64, bool) {\n\ts, ok := t.getIntStr()\n\tif !ok {\n\t\treturn 0, false\n\t}\n\tn, err := strconv.ParseUint(s, 10, bitSize)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn n, true\n}\n\nfunc (t Token) getIntStr() (string, bool) {\n\tif t.kind != Number {\n\t\treturn \"\", false\n\t}\n\tparts, ok := parseNumberParts(t.raw)\n\tif !ok {\n\t\treturn \"\", false\n\t}\n\treturn normalizeToIntString(parts)\n}\n\n// TokenEquals returns true if given Tokens are equal, else false.\nfunc TokenEquals(x, y Token) bool {\n\treturn x.kind == y.kind &&\n\t\tx.pos == y.pos &&\n\t\tbytes.Equal(x.raw, y.raw) &&\n\t\tx.boo == y.boo &&\n\t\tx.str == y.str\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/json/encode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage json\n\nimport (\n\t\"math\"\n\t\"math/bits\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n\t\"google.golang.org/protobuf/internal/errors\"\n)\n\n// kind represents an encoding type.\ntype kind uint8\n\nconst (\n\t_ kind = (1 << iota) / 2\n\tname\n\tscalar\n\tobjectOpen\n\tobjectClose\n\tarrayOpen\n\tarrayClose\n)\n\n// Encoder provides methods to write out JSON constructs and values. The user is\n// responsible for producing valid sequences of JSON constructs and values.\ntype Encoder struct {\n\tindent   string\n\tlastKind kind\n\tindents  []byte\n\tout      []byte\n}\n\n// NewEncoder returns an Encoder.\n//\n// If indent is a non-empty string, it causes every entry for an Array or Object\n// to be preceded by the indent and trailed by a newline.\nfunc NewEncoder(buf []byte, indent string) (*Encoder, error) {\n\te := &Encoder{\n\t\tout: buf,\n\t}\n\tif len(indent) > 0 {\n\t\tif strings.Trim(indent, \" \\t\") != \"\" {\n\t\t\treturn nil, errors.New(\"indent may only be composed of space or tab characters\")\n\t\t}\n\t\te.indent = indent\n\t}\n\treturn e, nil\n}\n\n// Bytes returns the content of the written bytes.\nfunc (e *Encoder) Bytes() []byte {\n\treturn e.out\n}\n\n// WriteNull writes out the null value.\nfunc (e *Encoder) WriteNull() {\n\te.prepareNext(scalar)\n\te.out = append(e.out, \"null\"...)\n}\n\n// WriteBool writes out the given boolean value.\nfunc (e *Encoder) WriteBool(b bool) {\n\te.prepareNext(scalar)\n\tif b {\n\t\te.out = append(e.out, \"true\"...)\n\t} else {\n\t\te.out = append(e.out, \"false\"...)\n\t}\n}\n\n// WriteString writes out the given string in JSON string value. Returns error\n// if input string contains invalid UTF-8.\nfunc (e *Encoder) WriteString(s string) error {\n\te.prepareNext(scalar)\n\tvar err error\n\tif e.out, err = appendString(e.out, s); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// Sentinel error used for indicating invalid UTF-8.\nvar errInvalidUTF8 = errors.New(\"invalid UTF-8\")\n\nfunc appendString(out []byte, in string) ([]byte, error) {\n\tout = append(out, '\"')\n\ti := indexNeedEscapeInString(in)\n\tin, out = in[i:], append(out, in[:i]...)\n\tfor len(in) > 0 {\n\t\tswitch r, n := utf8.DecodeRuneInString(in); {\n\t\tcase r == utf8.RuneError && n == 1:\n\t\t\treturn out, errInvalidUTF8\n\t\tcase r < ' ' || r == '\"' || r == '\\\\':\n\t\t\tout = append(out, '\\\\')\n\t\t\tswitch r {\n\t\t\tcase '\"', '\\\\':\n\t\t\t\tout = append(out, byte(r))\n\t\t\tcase '\\b':\n\t\t\t\tout = append(out, 'b')\n\t\t\tcase '\\f':\n\t\t\t\tout = append(out, 'f')\n\t\t\tcase '\\n':\n\t\t\t\tout = append(out, 'n')\n\t\t\tcase '\\r':\n\t\t\t\tout = append(out, 'r')\n\t\t\tcase '\\t':\n\t\t\t\tout = append(out, 't')\n\t\t\tdefault:\n\t\t\t\tout = append(out, 'u')\n\t\t\t\tout = append(out, \"0000\"[1+(bits.Len32(uint32(r))-1)/4:]...)\n\t\t\t\tout = strconv.AppendUint(out, uint64(r), 16)\n\t\t\t}\n\t\t\tin = in[n:]\n\t\tdefault:\n\t\t\ti := indexNeedEscapeInString(in[n:])\n\t\t\tin, out = in[n+i:], append(out, in[:n+i]...)\n\t\t}\n\t}\n\tout = append(out, '\"')\n\treturn out, nil\n}\n\n// indexNeedEscapeInString returns the index of the character that needs\n// escaping. If no characters need escaping, this returns the input length.\nfunc indexNeedEscapeInString(s string) int {\n\tfor i, r := range s {\n\t\tif r < ' ' || r == '\\\\' || r == '\"' || r == utf8.RuneError {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(s)\n}\n\n// WriteFloat writes out the given float and bitSize in JSON number value.\nfunc (e *Encoder) WriteFloat(n float64, bitSize int) {\n\te.prepareNext(scalar)\n\te.out = appendFloat(e.out, n, bitSize)\n}\n\n// appendFloat formats given float in bitSize, and appends to the given []byte.\nfunc appendFloat(out []byte, n float64, bitSize int) []byte {\n\tswitch {\n\tcase math.IsNaN(n):\n\t\treturn append(out, `\"NaN\"`...)\n\tcase math.IsInf(n, +1):\n\t\treturn append(out, `\"Infinity\"`...)\n\tcase math.IsInf(n, -1):\n\t\treturn append(out, `\"-Infinity\"`...)\n\t}\n\n\t// JSON number formatting logic based on encoding/json.\n\t// See floatEncoder.encode for reference.\n\tfmt := byte('f')\n\tif abs := math.Abs(n); abs != 0 {\n\t\tif bitSize == 64 && (abs < 1e-6 || abs >= 1e21) ||\n\t\t\tbitSize == 32 && (float32(abs) < 1e-6 || float32(abs) >= 1e21) {\n\t\t\tfmt = 'e'\n\t\t}\n\t}\n\tout = strconv.AppendFloat(out, n, fmt, -1, bitSize)\n\tif fmt == 'e' {\n\t\tn := len(out)\n\t\tif n >= 4 && out[n-4] == 'e' && out[n-3] == '-' && out[n-2] == '0' {\n\t\t\tout[n-2] = out[n-1]\n\t\t\tout = out[:n-1]\n\t\t}\n\t}\n\treturn out\n}\n\n// WriteInt writes out the given signed integer in JSON number value.\nfunc (e *Encoder) WriteInt(n int64) {\n\te.prepareNext(scalar)\n\te.out = strconv.AppendInt(e.out, n, 10)\n}\n\n// WriteUint writes out the given unsigned integer in JSON number value.\nfunc (e *Encoder) WriteUint(n uint64) {\n\te.prepareNext(scalar)\n\te.out = strconv.AppendUint(e.out, n, 10)\n}\n\n// StartObject writes out the '{' symbol.\nfunc (e *Encoder) StartObject() {\n\te.prepareNext(objectOpen)\n\te.out = append(e.out, '{')\n}\n\n// EndObject writes out the '}' symbol.\nfunc (e *Encoder) EndObject() {\n\te.prepareNext(objectClose)\n\te.out = append(e.out, '}')\n}\n\n// WriteName writes out the given string in JSON string value and the name\n// separator ':'. Returns error if input string contains invalid UTF-8, which\n// should not be likely as protobuf field names should be valid.\nfunc (e *Encoder) WriteName(s string) error {\n\te.prepareNext(name)\n\tvar err error\n\t// Append to output regardless of error.\n\te.out, err = appendString(e.out, s)\n\te.out = append(e.out, ':')\n\treturn err\n}\n\n// StartArray writes out the '[' symbol.\nfunc (e *Encoder) StartArray() {\n\te.prepareNext(arrayOpen)\n\te.out = append(e.out, '[')\n}\n\n// EndArray writes out the ']' symbol.\nfunc (e *Encoder) EndArray() {\n\te.prepareNext(arrayClose)\n\te.out = append(e.out, ']')\n}\n\n// prepareNext adds possible comma and indentation for the next value based\n// on last type and indent option. It also updates lastKind to next.\nfunc (e *Encoder) prepareNext(next kind) {\n\tdefer func() {\n\t\t// Set lastKind to next.\n\t\te.lastKind = next\n\t}()\n\n\tif len(e.indent) == 0 {\n\t\t// Need to add comma on the following condition.\n\t\tif e.lastKind&(scalar|objectClose|arrayClose) != 0 &&\n\t\t\tnext&(name|scalar|objectOpen|arrayOpen) != 0 {\n\t\t\te.out = append(e.out, ',')\n\t\t\t// For single-line output, add a random extra space after each\n\t\t\t// comma to make output unstable.\n\t\t\tif detrand.Bool() {\n\t\t\t\te.out = append(e.out, ' ')\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\tswitch {\n\tcase e.lastKind&(objectOpen|arrayOpen) != 0:\n\t\t// If next type is NOT closing, add indent and newline.\n\t\tif next&(objectClose|arrayClose) == 0 {\n\t\t\te.indents = append(e.indents, e.indent...)\n\t\t\te.out = append(e.out, '\\n')\n\t\t\te.out = append(e.out, e.indents...)\n\t\t}\n\n\tcase e.lastKind&(scalar|objectClose|arrayClose) != 0:\n\t\tswitch {\n\t\t// If next type is either a value or name, add comma and newline.\n\t\tcase next&(name|scalar|objectOpen|arrayOpen) != 0:\n\t\t\te.out = append(e.out, ',', '\\n')\n\n\t\t// If next type is a closing object or array, adjust indentation.\n\t\tcase next&(objectClose|arrayClose) != 0:\n\t\t\te.indents = e.indents[:len(e.indents)-len(e.indent)]\n\t\t\te.out = append(e.out, '\\n')\n\t\t}\n\t\te.out = append(e.out, e.indents...)\n\n\tcase e.lastKind&name != 0:\n\t\te.out = append(e.out, ' ')\n\t\t// For multi-line output, add a random extra space after key: to make\n\t\t// output unstable.\n\t\tif detrand.Bool() {\n\t\t\te.out = append(e.out, ' ')\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package messageset encodes and decodes the obsolete MessageSet wire format.\npackage messageset\n\nimport (\n\t\"math\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// The MessageSet wire format is equivalent to a message defined as follows,\n// where each Item defines an extension field with a field number of 'type_id'\n// and content of 'message'. MessageSet extensions must be non-repeated message\n// fields.\n//\n//\tmessage MessageSet {\n//\t\trepeated group Item = 1 {\n//\t\t\trequired int32 type_id = 2;\n//\t\t\trequired string message = 3;\n//\t\t}\n//\t}\nconst (\n\tFieldItem    = protowire.Number(1)\n\tFieldTypeID  = protowire.Number(2)\n\tFieldMessage = protowire.Number(3)\n)\n\n// ExtensionName is the field name for extensions of MessageSet.\n//\n// A valid MessageSet extension must be of the form:\n//\n//\tmessage MyMessage {\n//\t\textend proto2.bridge.MessageSet {\n//\t\t\toptional MyMessage message_set_extension = 1234;\n//\t\t}\n//\t\t...\n//\t}\nconst ExtensionName = \"message_set_extension\"\n\n// IsMessageSet returns whether the message uses the MessageSet wire format.\nfunc IsMessageSet(md protoreflect.MessageDescriptor) bool {\n\txmd, ok := md.(interface{ IsMessageSet() bool })\n\treturn ok && xmd.IsMessageSet()\n}\n\n// IsMessageSetExtension reports this field properly extends a MessageSet.\nfunc IsMessageSetExtension(fd protoreflect.FieldDescriptor) bool {\n\tswitch {\n\tcase fd.Name() != ExtensionName:\n\t\treturn false\n\tcase !IsMessageSet(fd.ContainingMessage()):\n\t\treturn false\n\tcase fd.FullName().Parent() != fd.Message().FullName():\n\t\treturn false\n\t}\n\treturn true\n}\n\n// SizeField returns the size of a MessageSet item field containing an extension\n// with the given field number, not counting the contents of the message subfield.\nfunc SizeField(num protowire.Number) int {\n\treturn 2*protowire.SizeTag(FieldItem) + protowire.SizeTag(FieldTypeID) + protowire.SizeVarint(uint64(num))\n}\n\n// Unmarshal parses a MessageSet.\n//\n// It calls fn with the type ID and value of each item in the MessageSet.\n// Unknown fields are discarded.\n//\n// If wantLen is true, the item values include the varint length prefix.\n// This is ugly, but simplifies the fast-path decoder in internal/impl.\nfunc Unmarshal(b []byte, wantLen bool, fn func(typeID protowire.Number, value []byte) error) error {\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn protowire.ParseError(n)\n\t\t}\n\t\tb = b[n:]\n\t\tif num != FieldItem || wtyp != protowire.StartGroupType {\n\t\t\tn := protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protowire.ParseError(n)\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tcontinue\n\t\t}\n\t\ttypeID, value, n, err := ConsumeFieldValue(b, wantLen)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tb = b[n:]\n\t\tif typeID == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif err := fn(typeID, value); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// ConsumeFieldValue parses b as a MessageSet item field value until and including\n// the trailing end group marker. It assumes the start group tag has already been parsed.\n// It returns the contents of the type_id and message subfields and the total\n// item length.\n//\n// If wantLen is true, the returned message value includes the length prefix.\nfunc ConsumeFieldValue(b []byte, wantLen bool) (typeid protowire.Number, message []byte, n int, err error) {\n\tilen := len(b)\n\tfor {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn 0, nil, 0, protowire.ParseError(n)\n\t\t}\n\t\tb = b[n:]\n\t\tswitch {\n\t\tcase num == FieldItem && wtyp == protowire.EndGroupType:\n\t\t\tif wantLen && len(message) == 0 {\n\t\t\t\t// The message field was missing, which should never happen.\n\t\t\t\t// Be prepared for this case anyway.\n\t\t\t\tmessage = protowire.AppendVarint(message, 0)\n\t\t\t}\n\t\t\treturn typeid, message, ilen - len(b), nil\n\t\tcase num == FieldTypeID && wtyp == protowire.VarintType:\n\t\t\tv, n := protowire.ConsumeVarint(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, nil, 0, protowire.ParseError(n)\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t\tif v < 1 || v > math.MaxInt32 {\n\t\t\t\treturn 0, nil, 0, errors.New(\"invalid type_id in message set\")\n\t\t\t}\n\t\t\ttypeid = protowire.Number(v)\n\t\tcase num == FieldMessage && wtyp == protowire.BytesType:\n\t\t\tm, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, nil, 0, protowire.ParseError(n)\n\t\t\t}\n\t\t\tif message == nil {\n\t\t\t\tif wantLen {\n\t\t\t\t\tmessage = b[:n:n]\n\t\t\t\t} else {\n\t\t\t\t\tmessage = m[:len(m):len(m)]\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// This case should never happen in practice, but handle it for\n\t\t\t\t// correctness: The MessageSet item contains multiple message\n\t\t\t\t// fields, which need to be merged.\n\t\t\t\t//\n\t\t\t\t// In the case where we're returning the length, this becomes\n\t\t\t\t// quite inefficient since we need to strip the length off\n\t\t\t\t// the existing data and reconstruct it with the combined length.\n\t\t\t\tif wantLen {\n\t\t\t\t\t_, nn := protowire.ConsumeVarint(message)\n\t\t\t\t\tm0 := message[nn:]\n\t\t\t\t\tmessage = nil\n\t\t\t\t\tmessage = protowire.AppendVarint(message, uint64(len(m0)+len(m)))\n\t\t\t\t\tmessage = append(message, m0...)\n\t\t\t\t\tmessage = append(message, m...)\n\t\t\t\t} else {\n\t\t\t\t\tmessage = append(message, m...)\n\t\t\t\t}\n\t\t\t}\n\t\t\tb = b[n:]\n\t\tdefault:\n\t\t\t// We have no place to put it, so we just ignore unknown fields.\n\t\t\tn := protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, nil, 0, protowire.ParseError(n)\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\t}\n}\n\n// AppendFieldStart appends the start of a MessageSet item field containing\n// an extension with the given number. The caller must add the message\n// subfield (including the tag).\nfunc AppendFieldStart(b []byte, num protowire.Number) []byte {\n\tb = protowire.AppendTag(b, FieldItem, protowire.StartGroupType)\n\tb = protowire.AppendTag(b, FieldTypeID, protowire.VarintType)\n\tb = protowire.AppendVarint(b, uint64(num))\n\treturn b\n}\n\n// AppendFieldEnd appends the trailing end group marker for a MessageSet item field.\nfunc AppendFieldEnd(b []byte) []byte {\n\treturn protowire.AppendTag(b, FieldItem, protowire.EndGroupType)\n}\n\n// SizeUnknown returns the size of an unknown fields section in MessageSet format.\n//\n// See AppendUnknown.\nfunc SizeUnknown(unknown []byte) (size int) {\n\tfor len(unknown) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(unknown)\n\t\tif n < 0 || typ != protowire.BytesType {\n\t\t\treturn 0\n\t\t}\n\t\tunknown = unknown[n:]\n\t\t_, n = protowire.ConsumeBytes(unknown)\n\t\tif n < 0 {\n\t\t\treturn 0\n\t\t}\n\t\tunknown = unknown[n:]\n\t\tsize += SizeField(num) + protowire.SizeTag(FieldMessage) + n\n\t}\n\treturn size\n}\n\n// AppendUnknown appends unknown fields to b in MessageSet format.\n//\n// For historic reasons, unresolved items in a MessageSet are stored in a\n// message's unknown fields section in non-MessageSet format. That is, an\n// unknown item with typeID T and value V appears in the unknown fields as\n// a field with number T and value V.\n//\n// This function converts the unknown fields back into MessageSet form.\nfunc AppendUnknown(b, unknown []byte) ([]byte, error) {\n\tfor len(unknown) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(unknown)\n\t\tif n < 0 || typ != protowire.BytesType {\n\t\t\treturn nil, errors.New(\"invalid data in message set unknown fields\")\n\t\t}\n\t\tunknown = unknown[n:]\n\t\t_, n = protowire.ConsumeBytes(unknown)\n\t\tif n < 0 {\n\t\t\treturn nil, errors.New(\"invalid data in message set unknown fields\")\n\t\t}\n\t\tb = AppendFieldStart(b, num)\n\t\tb = protowire.AppendTag(b, FieldMessage, protowire.BytesType)\n\t\tb = append(b, unknown[:n]...)\n\t\tb = AppendFieldEnd(b)\n\t\tunknown = unknown[n:]\n\t}\n\treturn b, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package tag marshals and unmarshals the legacy struct tags as generated\n// by historical versions of protoc-gen-go.\npackage tag\n\nimport (\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/encoding/defval\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nvar byteType = reflect.TypeOf(byte(0))\n\n// Unmarshal decodes the tag into a prototype.Field.\n//\n// The goType is needed to determine the original protoreflect.Kind since the\n// tag does not record sufficient information to determine that.\n// The type is the underlying field type (e.g., a repeated field may be\n// represented by []T, but the Go type passed in is just T).\n// A list of enum value descriptors must be provided for enum fields.\n// This does not populate the Enum or Message (except for weak message).\n//\n// This function is a best effort attempt; parsing errors are ignored.\nfunc Unmarshal(tag string, goType reflect.Type, evs protoreflect.EnumValueDescriptors) protoreflect.FieldDescriptor {\n\tf := new(filedesc.Field)\n\tf.L0.ParentFile = filedesc.SurrogateProto2\n\tfor len(tag) > 0 {\n\t\ti := strings.IndexByte(tag, ',')\n\t\tif i < 0 {\n\t\t\ti = len(tag)\n\t\t}\n\t\tswitch s := tag[:i]; {\n\t\tcase strings.HasPrefix(s, \"name=\"):\n\t\t\tf.L0.FullName = protoreflect.FullName(s[len(\"name=\"):])\n\t\tcase strings.Trim(s, \"0123456789\") == \"\":\n\t\t\tn, _ := strconv.ParseUint(s, 10, 32)\n\t\t\tf.L1.Number = protoreflect.FieldNumber(n)\n\t\tcase s == \"opt\":\n\t\t\tf.L1.Cardinality = protoreflect.Optional\n\t\tcase s == \"req\":\n\t\t\tf.L1.Cardinality = protoreflect.Required\n\t\tcase s == \"rep\":\n\t\t\tf.L1.Cardinality = protoreflect.Repeated\n\t\tcase s == \"varint\":\n\t\t\tswitch goType.Kind() {\n\t\t\tcase reflect.Bool:\n\t\t\t\tf.L1.Kind = protoreflect.BoolKind\n\t\t\tcase reflect.Int32:\n\t\t\t\tf.L1.Kind = protoreflect.Int32Kind\n\t\t\tcase reflect.Int64:\n\t\t\t\tf.L1.Kind = protoreflect.Int64Kind\n\t\t\tcase reflect.Uint32:\n\t\t\t\tf.L1.Kind = protoreflect.Uint32Kind\n\t\t\tcase reflect.Uint64:\n\t\t\t\tf.L1.Kind = protoreflect.Uint64Kind\n\t\t\t}\n\t\tcase s == \"zigzag32\":\n\t\t\tif goType.Kind() == reflect.Int32 {\n\t\t\t\tf.L1.Kind = protoreflect.Sint32Kind\n\t\t\t}\n\t\tcase s == \"zigzag64\":\n\t\t\tif goType.Kind() == reflect.Int64 {\n\t\t\t\tf.L1.Kind = protoreflect.Sint64Kind\n\t\t\t}\n\t\tcase s == \"fixed32\":\n\t\t\tswitch goType.Kind() {\n\t\t\tcase reflect.Int32:\n\t\t\t\tf.L1.Kind = protoreflect.Sfixed32Kind\n\t\t\tcase reflect.Uint32:\n\t\t\t\tf.L1.Kind = protoreflect.Fixed32Kind\n\t\t\tcase reflect.Float32:\n\t\t\t\tf.L1.Kind = protoreflect.FloatKind\n\t\t\t}\n\t\tcase s == \"fixed64\":\n\t\t\tswitch goType.Kind() {\n\t\t\tcase reflect.Int64:\n\t\t\t\tf.L1.Kind = protoreflect.Sfixed64Kind\n\t\t\tcase reflect.Uint64:\n\t\t\t\tf.L1.Kind = protoreflect.Fixed64Kind\n\t\t\tcase reflect.Float64:\n\t\t\t\tf.L1.Kind = protoreflect.DoubleKind\n\t\t\t}\n\t\tcase s == \"bytes\":\n\t\t\tswitch {\n\t\t\tcase goType.Kind() == reflect.String:\n\t\t\t\tf.L1.Kind = protoreflect.StringKind\n\t\t\tcase goType.Kind() == reflect.Slice && goType.Elem() == byteType:\n\t\t\t\tf.L1.Kind = protoreflect.BytesKind\n\t\t\tdefault:\n\t\t\t\tf.L1.Kind = protoreflect.MessageKind\n\t\t\t}\n\t\tcase s == \"group\":\n\t\t\tf.L1.Kind = protoreflect.GroupKind\n\t\tcase strings.HasPrefix(s, \"enum=\"):\n\t\t\tf.L1.Kind = protoreflect.EnumKind\n\t\tcase strings.HasPrefix(s, \"json=\"):\n\t\t\tjsonName := s[len(\"json=\"):]\n\t\t\tif jsonName != strs.JSONCamelCase(string(f.L0.FullName.Name())) {\n\t\t\t\tf.L1.StringName.InitJSON(jsonName)\n\t\t\t}\n\t\tcase s == \"packed\":\n\t\t\tf.L1.HasPacked = true\n\t\t\tf.L1.IsPacked = true\n\t\tcase strings.HasPrefix(s, \"weak=\"):\n\t\t\tf.L1.IsWeak = true\n\t\t\tf.L1.Message = filedesc.PlaceholderMessage(protoreflect.FullName(s[len(\"weak=\"):]))\n\t\tcase strings.HasPrefix(s, \"def=\"):\n\t\t\t// The default tag is special in that everything afterwards is the\n\t\t\t// default regardless of the presence of commas.\n\t\t\ts, i = tag[len(\"def=\"):], len(tag)\n\t\t\tv, ev, _ := defval.Unmarshal(s, f.L1.Kind, evs, defval.GoTag)\n\t\t\tf.L1.Default = filedesc.DefaultValue(v, ev)\n\t\tcase s == \"proto3\":\n\t\t\tf.L0.ParentFile = filedesc.SurrogateProto3\n\t\t}\n\t\ttag = strings.TrimPrefix(tag[i:], \",\")\n\t}\n\n\t// The generator uses the group message name instead of the field name.\n\t// We obtain the real field name by lowercasing the group name.\n\tif f.L1.Kind == protoreflect.GroupKind {\n\t\tf.L0.FullName = protoreflect.FullName(strings.ToLower(string(f.L0.FullName)))\n\t}\n\treturn f\n}\n\n// Marshal encodes the protoreflect.FieldDescriptor as a tag.\n//\n// The enumName must be provided if the kind is an enum.\n// Historically, the formulation of the enum \"name\" was the proto package\n// dot-concatenated with the generated Go identifier for the enum type.\n// Depending on the context on how Marshal is called, there are different ways\n// through which that information is determined. As such it is the caller's\n// responsibility to provide a function to obtain that information.\nfunc Marshal(fd protoreflect.FieldDescriptor, enumName string) string {\n\tvar tag []string\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind, protoreflect.EnumKind, protoreflect.Int32Kind, protoreflect.Uint32Kind, protoreflect.Int64Kind, protoreflect.Uint64Kind:\n\t\ttag = append(tag, \"varint\")\n\tcase protoreflect.Sint32Kind:\n\t\ttag = append(tag, \"zigzag32\")\n\tcase protoreflect.Sint64Kind:\n\t\ttag = append(tag, \"zigzag64\")\n\tcase protoreflect.Sfixed32Kind, protoreflect.Fixed32Kind, protoreflect.FloatKind:\n\t\ttag = append(tag, \"fixed32\")\n\tcase protoreflect.Sfixed64Kind, protoreflect.Fixed64Kind, protoreflect.DoubleKind:\n\t\ttag = append(tag, \"fixed64\")\n\tcase protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind:\n\t\ttag = append(tag, \"bytes\")\n\tcase protoreflect.GroupKind:\n\t\ttag = append(tag, \"group\")\n\t}\n\ttag = append(tag, strconv.Itoa(int(fd.Number())))\n\tswitch fd.Cardinality() {\n\tcase protoreflect.Optional:\n\t\ttag = append(tag, \"opt\")\n\tcase protoreflect.Required:\n\t\ttag = append(tag, \"req\")\n\tcase protoreflect.Repeated:\n\t\ttag = append(tag, \"rep\")\n\t}\n\tif fd.IsPacked() {\n\t\ttag = append(tag, \"packed\")\n\t}\n\tname := string(fd.Name())\n\tif fd.Kind() == protoreflect.GroupKind {\n\t\t// The name of the FieldDescriptor for a group field is\n\t\t// lowercased. To find the original capitalization, we\n\t\t// look in the field's MessageType.\n\t\tname = string(fd.Message().Name())\n\t}\n\ttag = append(tag, \"name=\"+name)\n\tif jsonName := fd.JSONName(); jsonName != \"\" && jsonName != name && !fd.IsExtension() {\n\t\t// NOTE: The jsonName != name condition is suspect, but it preserve\n\t\t// the exact same semantics from the previous generator.\n\t\ttag = append(tag, \"json=\"+jsonName)\n\t}\n\tif fd.IsWeak() {\n\t\ttag = append(tag, \"weak=\"+string(fd.Message().FullName()))\n\t}\n\t// The previous implementation does not tag extension fields as proto3,\n\t// even when the field is defined in a proto3 file. Match that behavior\n\t// for consistency.\n\tif fd.Syntax() == protoreflect.Proto3 && !fd.IsExtension() {\n\t\ttag = append(tag, \"proto3\")\n\t}\n\tif fd.Kind() == protoreflect.EnumKind && enumName != \"\" {\n\t\ttag = append(tag, \"enum=\"+enumName)\n\t}\n\tif fd.ContainingOneof() != nil {\n\t\ttag = append(tag, \"oneof\")\n\t}\n\t// This must appear last in the tag, since commas in strings aren't escaped.\n\tif fd.HasDefault() {\n\t\tdef, _ := defval.Marshal(fd.Default(), fd.DefaultEnumValue(), fd.Kind(), defval.GoTag)\n\t\ttag = append(tag, \"def=\"+def)\n\t}\n\treturn strings.Join(tag, \",\")\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/decode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n)\n\n// Decoder is a token-based textproto decoder.\ntype Decoder struct {\n\t// lastCall is last method called, either readCall or peekCall.\n\t// Initial value is readCall.\n\tlastCall call\n\n\t// lastToken contains the last read token.\n\tlastToken Token\n\n\t// lastErr contains the last read error.\n\tlastErr error\n\n\t// openStack is a stack containing the byte characters for MessageOpen and\n\t// ListOpen kinds. The top of stack represents the message or the list that\n\t// the current token is nested in. An empty stack means the current token is\n\t// at the top level message. The characters '{' and '<' both represent the\n\t// MessageOpen kind.\n\topenStack []byte\n\n\t// orig is used in reporting line and column.\n\torig []byte\n\t// in contains the unconsumed input.\n\tin []byte\n}\n\n// NewDecoder returns a Decoder to read the given []byte.\nfunc NewDecoder(b []byte) *Decoder {\n\treturn &Decoder{orig: b, in: b}\n}\n\n// ErrUnexpectedEOF means that EOF was encountered in the middle of the input.\nvar ErrUnexpectedEOF = errors.New(\"%v\", io.ErrUnexpectedEOF)\n\n// call specifies which Decoder method was invoked.\ntype call uint8\n\nconst (\n\treadCall call = iota\n\tpeekCall\n)\n\n// Peek looks ahead and returns the next token and error without advancing a read.\nfunc (d *Decoder) Peek() (Token, error) {\n\tdefer func() { d.lastCall = peekCall }()\n\tif d.lastCall == readCall {\n\t\td.lastToken, d.lastErr = d.Read()\n\t}\n\treturn d.lastToken, d.lastErr\n}\n\n// Read returns the next token.\n// It will return an error if there is no valid token.\nfunc (d *Decoder) Read() (Token, error) {\n\tdefer func() { d.lastCall = readCall }()\n\tif d.lastCall == peekCall {\n\t\treturn d.lastToken, d.lastErr\n\t}\n\n\ttok, err := d.parseNext(d.lastToken.kind)\n\tif err != nil {\n\t\treturn Token{}, err\n\t}\n\n\tswitch tok.kind {\n\tcase comma, semicolon:\n\t\ttok, err = d.parseNext(tok.kind)\n\t\tif err != nil {\n\t\t\treturn Token{}, err\n\t\t}\n\t}\n\td.lastToken = tok\n\treturn tok, nil\n}\n\nconst (\n\tmismatchedFmt = \"mismatched close character %q\"\n\tunexpectedFmt = \"unexpected character %q\"\n)\n\n// parseNext parses the next Token based on given last kind.\nfunc (d *Decoder) parseNext(lastKind Kind) (Token, error) {\n\t// Trim leading spaces.\n\td.consume(0)\n\tisEOF := false\n\tif len(d.in) == 0 {\n\t\tisEOF = true\n\t}\n\n\tswitch lastKind {\n\tcase EOF:\n\t\treturn d.consumeToken(EOF, 0, 0), nil\n\n\tcase bof:\n\t\t// Start of top level message. Next token can be EOF or Name.\n\t\tif isEOF {\n\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t}\n\t\treturn d.parseFieldName()\n\n\tcase Name:\n\t\t// Next token can be MessageOpen, ListOpen or Scalar.\n\t\tif isEOF {\n\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t}\n\t\tswitch ch := d.in[0]; ch {\n\t\tcase '{', '<':\n\t\t\td.pushOpenStack(ch)\n\t\t\treturn d.consumeToken(MessageOpen, 1, 0), nil\n\t\tcase '[':\n\t\t\td.pushOpenStack(ch)\n\t\t\treturn d.consumeToken(ListOpen, 1, 0), nil\n\t\tdefault:\n\t\t\treturn d.parseScalar()\n\t\t}\n\n\tcase Scalar:\n\t\topenKind, closeCh := d.currentOpenKind()\n\t\tswitch openKind {\n\t\tcase bof:\n\t\t\t// Top level message.\n\t\t\t// \tNext token can be EOF, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t\t}\n\t\t\tswitch d.in[0] {\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase MessageOpen:\n\t\t\t// Next token can be MessageClose, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\t\tcase otherCloseChar[closeCh]:\n\t\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase ListOpen:\n\t\t\t// Next token can be ListClose or comma.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase ']':\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(ListClose, 1, 0), nil\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn Token{}, d.newSyntaxError(unexpectedFmt, ch)\n\t\t\t}\n\t\t}\n\n\tcase MessageOpen:\n\t\t// Next token can be MessageClose or Name.\n\t\tif isEOF {\n\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t}\n\t\t_, closeCh := d.currentOpenKind()\n\t\tswitch ch := d.in[0]; ch {\n\t\tcase closeCh:\n\t\t\td.popOpenStack()\n\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\tcase otherCloseChar[closeCh]:\n\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\tdefault:\n\t\t\treturn d.parseFieldName()\n\t\t}\n\n\tcase MessageClose:\n\t\topenKind, closeCh := d.currentOpenKind()\n\t\tswitch openKind {\n\t\tcase bof:\n\t\t\t// Top level message.\n\t\t\t// Next token can be EOF, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase MessageOpen:\n\t\t\t// Next token can be MessageClose, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\t\tcase otherCloseChar[closeCh]:\n\t\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase ListOpen:\n\t\t\t// Next token can be ListClose or comma\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(ListClose, 1, 0), nil\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn Token{}, d.newSyntaxError(unexpectedFmt, ch)\n\t\t\t}\n\t\t}\n\n\tcase ListOpen:\n\t\t// Next token can be ListClose, MessageStart or Scalar.\n\t\tif isEOF {\n\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t}\n\t\tswitch ch := d.in[0]; ch {\n\t\tcase ']':\n\t\t\td.popOpenStack()\n\t\t\treturn d.consumeToken(ListClose, 1, 0), nil\n\t\tcase '{', '<':\n\t\t\td.pushOpenStack(ch)\n\t\t\treturn d.consumeToken(MessageOpen, 1, 0), nil\n\t\tdefault:\n\t\t\treturn d.parseScalar()\n\t\t}\n\n\tcase ListClose:\n\t\topenKind, closeCh := d.currentOpenKind()\n\t\tswitch openKind {\n\t\tcase bof:\n\t\t\t// Top level message.\n\t\t\t// Next token can be EOF, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase MessageOpen:\n\t\t\t// Next token can be MessageClose, comma, semicolon or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\t\tcase otherCloseChar[closeCh]:\n\t\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\t\tcase ',':\n\t\t\t\treturn d.consumeToken(comma, 1, 0), nil\n\t\t\tcase ';':\n\t\t\t\treturn d.consumeToken(semicolon, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tdefault:\n\t\t\t// It is not possible to have this case. Let it panic below.\n\t\t}\n\n\tcase comma, semicolon:\n\t\topenKind, closeCh := d.currentOpenKind()\n\t\tswitch openKind {\n\t\tcase bof:\n\t\t\t// Top level message. Next token can be EOF or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn d.consumeToken(EOF, 0, 0), nil\n\t\t\t}\n\t\t\treturn d.parseFieldName()\n\n\t\tcase MessageOpen:\n\t\t\t// Next token can be MessageClose or Name.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase closeCh:\n\t\t\t\td.popOpenStack()\n\t\t\t\treturn d.consumeToken(MessageClose, 1, 0), nil\n\t\t\tcase otherCloseChar[closeCh]:\n\t\t\t\treturn Token{}, d.newSyntaxError(mismatchedFmt, ch)\n\t\t\tdefault:\n\t\t\t\treturn d.parseFieldName()\n\t\t\t}\n\n\t\tcase ListOpen:\n\t\t\tif lastKind == semicolon {\n\t\t\t\t// It is not be possible to have this case as logic here\n\t\t\t\t// should not have produced a semicolon Token when inside a\n\t\t\t\t// list. Let it panic below.\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Next token can be MessageOpen or Scalar.\n\t\t\tif isEOF {\n\t\t\t\treturn Token{}, ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch ch := d.in[0]; ch {\n\t\t\tcase '{', '<':\n\t\t\t\td.pushOpenStack(ch)\n\t\t\t\treturn d.consumeToken(MessageOpen, 1, 0), nil\n\t\t\tdefault:\n\t\t\t\treturn d.parseScalar()\n\t\t\t}\n\t\t}\n\t}\n\n\tline, column := d.Position(len(d.orig) - len(d.in))\n\tpanic(fmt.Sprintf(\"Decoder.parseNext: bug at handling line %d:%d with lastKind=%v\", line, column, lastKind))\n}\n\nvar otherCloseChar = map[byte]byte{\n\t'}': '>',\n\t'>': '}',\n}\n\n// currentOpenKind indicates whether current position is inside a message, list\n// or top-level message by returning MessageOpen, ListOpen or bof respectively.\n// If the returned kind is either a MessageOpen or ListOpen, it also returns the\n// corresponding closing character.\nfunc (d *Decoder) currentOpenKind() (Kind, byte) {\n\tif len(d.openStack) == 0 {\n\t\treturn bof, 0\n\t}\n\topenCh := d.openStack[len(d.openStack)-1]\n\tswitch openCh {\n\tcase '{':\n\t\treturn MessageOpen, '}'\n\tcase '<':\n\t\treturn MessageOpen, '>'\n\tcase '[':\n\t\treturn ListOpen, ']'\n\t}\n\tpanic(fmt.Sprintf(\"Decoder: openStack contains invalid byte %c\", openCh))\n}\n\nfunc (d *Decoder) pushOpenStack(ch byte) {\n\td.openStack = append(d.openStack, ch)\n}\n\nfunc (d *Decoder) popOpenStack() {\n\td.openStack = d.openStack[:len(d.openStack)-1]\n}\n\n// parseFieldName parses field name and separator.\nfunc (d *Decoder) parseFieldName() (tok Token, err error) {\n\tdefer func() {\n\t\tif err == nil && d.tryConsumeChar(':') {\n\t\t\ttok.attrs |= hasSeparator\n\t\t}\n\t}()\n\n\t// Extension or Any type URL.\n\tif d.in[0] == '[' {\n\t\treturn d.parseTypeName()\n\t}\n\n\t// Identifier.\n\tif size := parseIdent(d.in, false); size > 0 {\n\t\treturn d.consumeToken(Name, size, uint8(IdentName)), nil\n\t}\n\n\t// Field number. Identify if input is a valid number that is not negative\n\t// and is decimal integer within 32-bit range.\n\tif num := parseNumber(d.in); num.size > 0 {\n\t\tstr := num.string(d.in)\n\t\tif !num.neg && num.kind == numDec {\n\t\t\tif _, err := strconv.ParseInt(str, 10, 32); err == nil {\n\t\t\t\treturn d.consumeToken(Name, num.size, uint8(FieldNumber)), nil\n\t\t\t}\n\t\t}\n\t\treturn Token{}, d.newSyntaxError(\"invalid field number: %s\", str)\n\t}\n\n\treturn Token{}, d.newSyntaxError(\"invalid field name: %s\", errId(d.in))\n}\n\n// parseTypeName parses Any type URL or extension field name. The name is\n// enclosed in [ and ] characters. The C++ parser does not handle many legal URL\n// strings. This implementation is more liberal and allows for the pattern\n// ^[-_a-zA-Z0-9]+([./][-_a-zA-Z0-9]+)*`). Whitespaces and comments are allowed\n// in between [ ], '.', '/' and the sub names.\nfunc (d *Decoder) parseTypeName() (Token, error) {\n\tstartPos := len(d.orig) - len(d.in)\n\t// Use alias s to advance first in order to use d.in for error handling.\n\t// Caller already checks for [ as first character.\n\ts := consume(d.in[1:], 0)\n\tif len(s) == 0 {\n\t\treturn Token{}, ErrUnexpectedEOF\n\t}\n\n\tvar name []byte\n\tfor len(s) > 0 && isTypeNameChar(s[0]) {\n\t\tname = append(name, s[0])\n\t\ts = s[1:]\n\t}\n\ts = consume(s, 0)\n\n\tvar closed bool\n\tfor len(s) > 0 && !closed {\n\t\tswitch {\n\t\tcase s[0] == ']':\n\t\t\ts = s[1:]\n\t\t\tclosed = true\n\n\t\tcase s[0] == '/', s[0] == '.':\n\t\t\tif len(name) > 0 && (name[len(name)-1] == '/' || name[len(name)-1] == '.') {\n\t\t\t\treturn Token{}, d.newSyntaxError(\"invalid type URL/extension field name: %s\",\n\t\t\t\t\td.orig[startPos:len(d.orig)-len(s)+1])\n\t\t\t}\n\t\t\tname = append(name, s[0])\n\t\t\ts = s[1:]\n\t\t\ts = consume(s, 0)\n\t\t\tfor len(s) > 0 && isTypeNameChar(s[0]) {\n\t\t\t\tname = append(name, s[0])\n\t\t\t\ts = s[1:]\n\t\t\t}\n\t\t\ts = consume(s, 0)\n\n\t\tdefault:\n\t\t\treturn Token{}, d.newSyntaxError(\n\t\t\t\t\"invalid type URL/extension field name: %s\", d.orig[startPos:len(d.orig)-len(s)+1])\n\t\t}\n\t}\n\n\tif !closed {\n\t\treturn Token{}, ErrUnexpectedEOF\n\t}\n\n\t// First character cannot be '.'. Last character cannot be '.' or '/'.\n\tsize := len(name)\n\tif size == 0 || name[0] == '.' || name[size-1] == '.' || name[size-1] == '/' {\n\t\treturn Token{}, d.newSyntaxError(\"invalid type URL/extension field name: %s\",\n\t\t\td.orig[startPos:len(d.orig)-len(s)])\n\t}\n\n\td.in = s\n\tendPos := len(d.orig) - len(d.in)\n\td.consume(0)\n\n\treturn Token{\n\t\tkind:  Name,\n\t\tattrs: uint8(TypeName),\n\t\tpos:   startPos,\n\t\traw:   d.orig[startPos:endPos],\n\t\tstr:   string(name),\n\t}, nil\n}\n\nfunc isTypeNameChar(b byte) bool {\n\treturn (b == '-' || b == '_' ||\n\t\t('0' <= b && b <= '9') ||\n\t\t('a' <= b && b <= 'z') ||\n\t\t('A' <= b && b <= 'Z'))\n}\n\nfunc isWhiteSpace(b byte) bool {\n\tswitch b {\n\tcase ' ', '\\n', '\\r', '\\t':\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// parseIdent parses an unquoted proto identifier and returns size.\n// If allowNeg is true, it allows '-' to be the first character in the\n// identifier. This is used when parsing literal values like -infinity, etc.\n// Regular expression matches an identifier: `^[_a-zA-Z][_a-zA-Z0-9]*`\nfunc parseIdent(input []byte, allowNeg bool) int {\n\tvar size int\n\n\ts := input\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\n\tif allowNeg && s[0] == '-' {\n\t\ts = s[1:]\n\t\tsize++\n\t\tif len(s) == 0 {\n\t\t\treturn 0\n\t\t}\n\t}\n\n\tswitch {\n\tcase s[0] == '_',\n\t\t'a' <= s[0] && s[0] <= 'z',\n\t\t'A' <= s[0] && s[0] <= 'Z':\n\t\ts = s[1:]\n\t\tsize++\n\tdefault:\n\t\treturn 0\n\t}\n\n\tfor len(s) > 0 && (s[0] == '_' ||\n\t\t'a' <= s[0] && s[0] <= 'z' ||\n\t\t'A' <= s[0] && s[0] <= 'Z' ||\n\t\t'0' <= s[0] && s[0] <= '9') {\n\t\ts = s[1:]\n\t\tsize++\n\t}\n\n\tif len(s) > 0 && !isDelim(s[0]) {\n\t\treturn 0\n\t}\n\n\treturn size\n}\n\n// parseScalar parses for a string, literal or number value.\nfunc (d *Decoder) parseScalar() (Token, error) {\n\tif d.in[0] == '\"' || d.in[0] == '\\'' {\n\t\treturn d.parseStringValue()\n\t}\n\n\tif tok, ok := d.parseLiteralValue(); ok {\n\t\treturn tok, nil\n\t}\n\n\tif tok, ok := d.parseNumberValue(); ok {\n\t\treturn tok, nil\n\t}\n\n\treturn Token{}, d.newSyntaxError(\"invalid scalar value: %s\", errId(d.in))\n}\n\n// parseLiteralValue parses a literal value. A literal value is used for\n// bools, special floats and enums. This function simply identifies that the\n// field value is a literal.\nfunc (d *Decoder) parseLiteralValue() (Token, bool) {\n\tsize := parseIdent(d.in, true)\n\tif size == 0 {\n\t\treturn Token{}, false\n\t}\n\treturn d.consumeToken(Scalar, size, literalValue), true\n}\n\n// consumeToken constructs a Token for given Kind from d.in and consumes given\n// size-length from it.\nfunc (d *Decoder) consumeToken(kind Kind, size int, attrs uint8) Token {\n\t// Important to compute raw and pos before consuming.\n\ttok := Token{\n\t\tkind:  kind,\n\t\tattrs: attrs,\n\t\tpos:   len(d.orig) - len(d.in),\n\t\traw:   d.in[:size],\n\t}\n\td.consume(size)\n\treturn tok\n}\n\n// newSyntaxError returns a syntax error with line and column information for\n// current position.\nfunc (d *Decoder) newSyntaxError(f string, x ...interface{}) error {\n\te := errors.New(f, x...)\n\tline, column := d.Position(len(d.orig) - len(d.in))\n\treturn errors.New(\"syntax error (line %d:%d): %v\", line, column, e)\n}\n\n// Position returns line and column number of given index of the original input.\n// It will panic if index is out of range.\nfunc (d *Decoder) Position(idx int) (line int, column int) {\n\tb := d.orig[:idx]\n\tline = bytes.Count(b, []byte(\"\\n\")) + 1\n\tif i := bytes.LastIndexByte(b, '\\n'); i >= 0 {\n\t\tb = b[i+1:]\n\t}\n\tcolumn = utf8.RuneCount(b) + 1 // ignore multi-rune characters\n\treturn line, column\n}\n\nfunc (d *Decoder) tryConsumeChar(c byte) bool {\n\tif len(d.in) > 0 && d.in[0] == c {\n\t\td.consume(1)\n\t\treturn true\n\t}\n\treturn false\n}\n\n// consume consumes n bytes of input and any subsequent whitespace or comments.\nfunc (d *Decoder) consume(n int) {\n\td.in = consume(d.in, n)\n\treturn\n}\n\n// consume consumes n bytes of input and any subsequent whitespace or comments.\nfunc consume(b []byte, n int) []byte {\n\tb = b[n:]\n\tfor len(b) > 0 {\n\t\tswitch b[0] {\n\t\tcase ' ', '\\n', '\\r', '\\t':\n\t\t\tb = b[1:]\n\t\tcase '#':\n\t\t\tif i := bytes.IndexByte(b, '\\n'); i >= 0 {\n\t\t\t\tb = b[i+len(\"\\n\"):]\n\t\t\t} else {\n\t\t\t\tb = nil\n\t\t\t}\n\t\tdefault:\n\t\t\treturn b\n\t\t}\n\t}\n\treturn b\n}\n\n// errId extracts a byte sequence that looks like an invalid ID\n// (for the purposes of error reporting).\nfunc errId(seq []byte) []byte {\n\tconst maxLen = 32\n\tfor i := 0; i < len(seq); {\n\t\tif i > maxLen {\n\t\t\treturn append(seq[:i:i], \"…\"...)\n\t\t}\n\t\tr, size := utf8.DecodeRune(seq[i:])\n\t\tif r > utf8.RuneSelf || (r != '/' && isDelim(byte(r))) {\n\t\t\tif i == 0 {\n\t\t\t\t// Either the first byte is invalid UTF-8 or a\n\t\t\t\t// delimiter, or the first rune is non-ASCII.\n\t\t\t\t// Return it as-is.\n\t\t\t\ti = size\n\t\t\t}\n\t\t\treturn seq[:i:i]\n\t\t}\n\t\ti += size\n\t}\n\t// No delimiter found.\n\treturn seq\n}\n\n// isDelim returns true if given byte is a delimiter character.\nfunc isDelim(c byte) bool {\n\treturn !(c == '-' || c == '+' || c == '.' || c == '_' ||\n\t\t('a' <= c && c <= 'z') ||\n\t\t('A' <= c && c <= 'Z') ||\n\t\t('0' <= c && c <= '9'))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\n// parseNumberValue parses a number from the input and returns a Token object.\nfunc (d *Decoder) parseNumberValue() (Token, bool) {\n\tin := d.in\n\tnum := parseNumber(in)\n\tif num.size == 0 {\n\t\treturn Token{}, false\n\t}\n\tnumAttrs := num.kind\n\tif num.neg {\n\t\tnumAttrs |= isNegative\n\t}\n\ttok := Token{\n\t\tkind:     Scalar,\n\t\tattrs:    numberValue,\n\t\tpos:      len(d.orig) - len(d.in),\n\t\traw:      d.in[:num.size],\n\t\tstr:      num.string(d.in),\n\t\tnumAttrs: numAttrs,\n\t}\n\td.consume(num.size)\n\treturn tok, true\n}\n\nconst (\n\tnumDec uint8 = (1 << iota) / 2\n\tnumHex\n\tnumOct\n\tnumFloat\n)\n\n// number is the result of parsing out a valid number from parseNumber. It\n// contains data for doing float or integer conversion via the strconv package\n// in conjunction with the input bytes.\ntype number struct {\n\tkind uint8\n\tneg  bool\n\tsize int\n\t// if neg, this is the length of whitespace and comments between\n\t// the minus sign and the rest fo the number literal\n\tsep int\n}\n\nfunc (num number) string(data []byte) string {\n\tstrSize := num.size\n\tlast := num.size - 1\n\tif num.kind == numFloat && (data[last] == 'f' || data[last] == 'F') {\n\t\tstrSize = last\n\t}\n\tif num.neg && num.sep > 0 {\n\t\t// strip whitespace/comments between negative sign and the rest\n\t\tstrLen := strSize - num.sep\n\t\tstr := make([]byte, strLen)\n\t\tstr[0] = data[0]\n\t\tcopy(str[1:], data[num.sep+1:strSize])\n\t\treturn string(str)\n\t}\n\treturn string(data[:strSize])\n\n}\n\n// parseNumber constructs a number object from given input. It allows for the\n// following patterns:\n//\n//\tinteger: ^-?([1-9][0-9]*|0[xX][0-9a-fA-F]+|0[0-7]*)\n//\tfloat: ^-?((0|[1-9][0-9]*)?([.][0-9]*)?([eE][+-]?[0-9]+)?[fF]?)\n//\n// It also returns the number of parsed bytes for the given number, 0 if it is\n// not a number.\nfunc parseNumber(input []byte) number {\n\tkind := numDec\n\tvar size int\n\tvar neg bool\n\n\ts := input\n\tif len(s) == 0 {\n\t\treturn number{}\n\t}\n\n\t// Optional -\n\tvar sep int\n\tif s[0] == '-' {\n\t\tneg = true\n\t\ts = s[1:]\n\t\tsize++\n\t\t// Consume any whitespace or comments between the\n\t\t// negative sign and the rest of the number\n\t\tlenBefore := len(s)\n\t\ts = consume(s, 0)\n\t\tsep = lenBefore - len(s)\n\t\tsize += sep\n\t\tif len(s) == 0 {\n\t\t\treturn number{}\n\t\t}\n\t}\n\n\tswitch {\n\tcase s[0] == '0':\n\t\tif len(s) > 1 {\n\t\t\tswitch {\n\t\t\tcase s[1] == 'x' || s[1] == 'X':\n\t\t\t\t// Parse as hex number.\n\t\t\t\tkind = numHex\n\t\t\t\tn := 2\n\t\t\t\ts = s[2:]\n\t\t\t\tfor len(s) > 0 && (('0' <= s[0] && s[0] <= '9') ||\n\t\t\t\t\t('a' <= s[0] && s[0] <= 'f') ||\n\t\t\t\t\t('A' <= s[0] && s[0] <= 'F')) {\n\t\t\t\t\ts = s[1:]\n\t\t\t\t\tn++\n\t\t\t\t}\n\t\t\t\tif n == 2 {\n\t\t\t\t\treturn number{}\n\t\t\t\t}\n\t\t\t\tsize += n\n\n\t\t\tcase '0' <= s[1] && s[1] <= '7':\n\t\t\t\t// Parse as octal number.\n\t\t\t\tkind = numOct\n\t\t\t\tn := 2\n\t\t\t\ts = s[2:]\n\t\t\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '7' {\n\t\t\t\t\ts = s[1:]\n\t\t\t\t\tn++\n\t\t\t\t}\n\t\t\t\tsize += n\n\t\t\t}\n\n\t\t\tif kind&(numHex|numOct) > 0 {\n\t\t\t\tif len(s) > 0 && !isDelim(s[0]) {\n\t\t\t\t\treturn number{}\n\t\t\t\t}\n\t\t\t\treturn number{kind: kind, neg: neg, size: size, sep: sep}\n\t\t\t}\n\t\t}\n\t\ts = s[1:]\n\t\tsize++\n\n\tcase '1' <= s[0] && s[0] <= '9':\n\t\tn := 1\n\t\ts = s[1:]\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\tsize += n\n\n\tcase s[0] == '.':\n\t\t// Set kind to numFloat to signify the intent to parse as float. And\n\t\t// that it needs to have other digits after '.'.\n\t\tkind = numFloat\n\n\tdefault:\n\t\treturn number{}\n\t}\n\n\t// . followed by 0 or more digits.\n\tif len(s) > 0 && s[0] == '.' {\n\t\tn := 1\n\t\ts = s[1:]\n\t\t// If decimal point was before any digits, it should be followed by\n\t\t// other digits.\n\t\tif len(s) == 0 && kind == numFloat {\n\t\t\treturn number{}\n\t\t}\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\tsize += n\n\t\tkind = numFloat\n\t}\n\n\t// e or E followed by an optional - or + and 1 or more digits.\n\tif len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') {\n\t\tkind = numFloat\n\t\ts = s[1:]\n\t\tn := 1\n\t\tif s[0] == '+' || s[0] == '-' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t\tif len(s) == 0 {\n\t\t\t\treturn number{}\n\t\t\t}\n\t\t}\n\t\tfor len(s) > 0 && '0' <= s[0] && s[0] <= '9' {\n\t\t\ts = s[1:]\n\t\t\tn++\n\t\t}\n\t\tsize += n\n\t}\n\n\t// Optional suffix f or F for floats.\n\tif len(s) > 0 && (s[0] == 'f' || s[0] == 'F') {\n\t\tkind = numFloat\n\t\ts = s[1:]\n\t\tsize++\n\t}\n\n\t// Check that next byte is a delimiter or it is at the end.\n\tif len(s) > 0 && !isDelim(s[0]) {\n\t\treturn number{}\n\t}\n\n\treturn number{kind: kind, neg: neg, size: size, sep: sep}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\nimport (\n\t\"bytes\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf16\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/strs\"\n)\n\n// parseStringValue parses string field token.\n// This differs from parseString since the text format allows\n// multiple back-to-back string literals where they are semantically treated\n// as a single large string with all values concatenated.\n//\n// E.g., `\"foo\" \"bar\" \"baz\"` => \"foobarbaz\"\nfunc (d *Decoder) parseStringValue() (Token, error) {\n\t// Note that the ending quote is sufficient to unambiguously mark the end\n\t// of a string. Thus, the text grammar does not require intervening\n\t// whitespace or control characters in-between strings.\n\t// Thus, the following is valid:\n\t//\t`\"foo\"'bar'\"baz\"` => \"foobarbaz\"\n\tin0 := d.in\n\tvar ss []string\n\tfor len(d.in) > 0 && (d.in[0] == '\"' || d.in[0] == '\\'') {\n\t\ts, err := d.parseString()\n\t\tif err != nil {\n\t\t\treturn Token{}, err\n\t\t}\n\t\tss = append(ss, s)\n\t}\n\t// d.in already points to the end of the value at this point.\n\treturn Token{\n\t\tkind:  Scalar,\n\t\tattrs: stringValue,\n\t\tpos:   len(d.orig) - len(in0),\n\t\traw:   in0[:len(in0)-len(d.in)],\n\t\tstr:   strings.Join(ss, \"\"),\n\t}, nil\n}\n\n// parseString parses a string value enclosed in \" or '.\nfunc (d *Decoder) parseString() (string, error) {\n\tin := d.in\n\tif len(in) == 0 {\n\t\treturn \"\", ErrUnexpectedEOF\n\t}\n\tquote := in[0]\n\tin = in[1:]\n\ti := indexNeedEscapeInBytes(in)\n\tin, out := in[i:], in[:i:i] // set cap to prevent mutations\n\tfor len(in) > 0 {\n\t\tswitch r, n := utf8.DecodeRune(in); {\n\t\tcase r == utf8.RuneError && n == 1:\n\t\t\treturn \"\", d.newSyntaxError(\"invalid UTF-8 detected\")\n\t\tcase r == 0 || r == '\\n':\n\t\t\treturn \"\", d.newSyntaxError(\"invalid character %q in string\", r)\n\t\tcase r == rune(quote):\n\t\t\tin = in[1:]\n\t\t\td.consume(len(d.in) - len(in))\n\t\t\treturn string(out), nil\n\t\tcase r == '\\\\':\n\t\t\tif len(in) < 2 {\n\t\t\t\treturn \"\", ErrUnexpectedEOF\n\t\t\t}\n\t\t\tswitch r := in[1]; r {\n\t\t\tcase '\"', '\\'', '\\\\', '?':\n\t\t\t\tin, out = in[2:], append(out, r)\n\t\t\tcase 'a':\n\t\t\t\tin, out = in[2:], append(out, '\\a')\n\t\t\tcase 'b':\n\t\t\t\tin, out = in[2:], append(out, '\\b')\n\t\t\tcase 'n':\n\t\t\t\tin, out = in[2:], append(out, '\\n')\n\t\t\tcase 'r':\n\t\t\t\tin, out = in[2:], append(out, '\\r')\n\t\t\tcase 't':\n\t\t\t\tin, out = in[2:], append(out, '\\t')\n\t\t\tcase 'v':\n\t\t\t\tin, out = in[2:], append(out, '\\v')\n\t\t\tcase 'f':\n\t\t\t\tin, out = in[2:], append(out, '\\f')\n\t\t\tcase '0', '1', '2', '3', '4', '5', '6', '7':\n\t\t\t\t// One, two, or three octal characters.\n\t\t\t\tn := len(in[1:]) - len(bytes.TrimLeft(in[1:], \"01234567\"))\n\t\t\t\tif n > 3 {\n\t\t\t\t\tn = 3\n\t\t\t\t}\n\t\t\t\tv, err := strconv.ParseUint(string(in[1:1+n]), 8, 8)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", d.newSyntaxError(\"invalid octal escape code %q in string\", in[:1+n])\n\t\t\t\t}\n\t\t\t\tin, out = in[1+n:], append(out, byte(v))\n\t\t\tcase 'x':\n\t\t\t\t// One or two hexadecimal characters.\n\t\t\t\tn := len(in[2:]) - len(bytes.TrimLeft(in[2:], \"0123456789abcdefABCDEF\"))\n\t\t\t\tif n > 2 {\n\t\t\t\t\tn = 2\n\t\t\t\t}\n\t\t\t\tv, err := strconv.ParseUint(string(in[2:2+n]), 16, 8)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", d.newSyntaxError(\"invalid hex escape code %q in string\", in[:2+n])\n\t\t\t\t}\n\t\t\t\tin, out = in[2+n:], append(out, byte(v))\n\t\t\tcase 'u', 'U':\n\t\t\t\t// Four or eight hexadecimal characters\n\t\t\t\tn := 6\n\t\t\t\tif r == 'U' {\n\t\t\t\t\tn = 10\n\t\t\t\t}\n\t\t\t\tif len(in) < n {\n\t\t\t\t\treturn \"\", ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv, err := strconv.ParseUint(string(in[2:n]), 16, 32)\n\t\t\t\tif utf8.MaxRune < v || err != nil {\n\t\t\t\t\treturn \"\", d.newSyntaxError(\"invalid Unicode escape code %q in string\", in[:n])\n\t\t\t\t}\n\t\t\t\tin = in[n:]\n\n\t\t\t\tr := rune(v)\n\t\t\t\tif utf16.IsSurrogate(r) {\n\t\t\t\t\tif len(in) < 6 {\n\t\t\t\t\t\treturn \"\", ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tv, err := strconv.ParseUint(string(in[2:6]), 16, 16)\n\t\t\t\t\tr = utf16.DecodeRune(r, rune(v))\n\t\t\t\t\tif in[0] != '\\\\' || in[1] != 'u' || r == unicode.ReplacementChar || err != nil {\n\t\t\t\t\t\treturn \"\", d.newSyntaxError(\"invalid Unicode escape code %q in string\", in[:6])\n\t\t\t\t\t}\n\t\t\t\t\tin = in[6:]\n\t\t\t\t}\n\t\t\t\tout = append(out, string(r)...)\n\t\t\tdefault:\n\t\t\t\treturn \"\", d.newSyntaxError(\"invalid escape code %q in string\", in[:2])\n\t\t\t}\n\t\tdefault:\n\t\t\ti := indexNeedEscapeInBytes(in[n:])\n\t\t\tin, out = in[n+i:], append(out, in[:n+i]...)\n\t\t}\n\t}\n\treturn \"\", ErrUnexpectedEOF\n}\n\n// indexNeedEscapeInString returns the index of the character that needs\n// escaping. If no characters need escaping, this returns the input length.\nfunc indexNeedEscapeInBytes(b []byte) int { return indexNeedEscapeInString(strs.UnsafeString(b)) }\n\n// UnmarshalString returns an unescaped string given a textproto string value.\n// String value needs to contain single or double quotes. This is only used by\n// internal/encoding/defval package for unmarshaling bytes.\nfunc UnmarshalString(s string) (string, error) {\n\td := NewDecoder([]byte(s))\n\treturn d.parseString()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/flags\"\n)\n\n// Kind represents a token kind expressible in the textproto format.\ntype Kind uint8\n\n// Kind values.\nconst (\n\tInvalid Kind = iota\n\tEOF\n\tName   // Name indicates the field name.\n\tScalar // Scalar are scalar values, e.g. \"string\", 47, ENUM_LITERAL, true.\n\tMessageOpen\n\tMessageClose\n\tListOpen\n\tListClose\n\n\t// comma and semi-colon are only for parsing in between values and should not be exposed.\n\tcomma\n\tsemicolon\n\n\t// bof indicates beginning of file, which is the default token\n\t// kind at the beginning of parsing.\n\tbof = Invalid\n)\n\nfunc (t Kind) String() string {\n\tswitch t {\n\tcase Invalid:\n\t\treturn \"<invalid>\"\n\tcase EOF:\n\t\treturn \"eof\"\n\tcase Scalar:\n\t\treturn \"scalar\"\n\tcase Name:\n\t\treturn \"name\"\n\tcase MessageOpen:\n\t\treturn \"{\"\n\tcase MessageClose:\n\t\treturn \"}\"\n\tcase ListOpen:\n\t\treturn \"[\"\n\tcase ListClose:\n\t\treturn \"]\"\n\tcase comma:\n\t\treturn \",\"\n\tcase semicolon:\n\t\treturn \";\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<invalid:%v>\", uint8(t))\n\t}\n}\n\n// NameKind represents different types of field names.\ntype NameKind uint8\n\n// NameKind values.\nconst (\n\tIdentName NameKind = iota + 1\n\tTypeName\n\tFieldNumber\n)\n\nfunc (t NameKind) String() string {\n\tswitch t {\n\tcase IdentName:\n\t\treturn \"IdentName\"\n\tcase TypeName:\n\t\treturn \"TypeName\"\n\tcase FieldNumber:\n\t\treturn \"FieldNumber\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<invalid:%v>\", uint8(t))\n\t}\n}\n\n// Bit mask in Token.attrs to indicate if a Name token is followed by the\n// separator char ':'. The field name separator char is optional for message\n// field or repeated message field, but required for all other types. Decoder\n// simply indicates whether a Name token is followed by separator or not.  It is\n// up to the prototext package to validate.\nconst hasSeparator = 1 << 7\n\n// Scalar value types.\nconst (\n\tnumberValue = iota + 1\n\tstringValue\n\tliteralValue\n)\n\n// Bit mask in Token.numAttrs to indicate that the number is a negative.\nconst isNegative = 1 << 7\n\n// Token provides a parsed token kind and value. Values are provided by the\n// different accessor methods.\ntype Token struct {\n\t// Kind of the Token object.\n\tkind Kind\n\t// attrs contains metadata for the following Kinds:\n\t// Name: hasSeparator bit and one of NameKind.\n\t// Scalar: one of numberValue, stringValue, literalValue.\n\tattrs uint8\n\t// numAttrs contains metadata for numberValue:\n\t// - highest bit is whether negative or positive.\n\t// - lower bits indicate one of numDec, numHex, numOct, numFloat.\n\tnumAttrs uint8\n\t// pos provides the position of the token in the original input.\n\tpos int\n\t// raw bytes of the serialized token.\n\t// This is a subslice into the original input.\n\traw []byte\n\t// str contains parsed string for the following:\n\t// - stringValue of Scalar kind\n\t// - numberValue of Scalar kind\n\t// - TypeName of Name kind\n\tstr string\n}\n\n// Kind returns the token kind.\nfunc (t Token) Kind() Kind {\n\treturn t.kind\n}\n\n// RawString returns the read value in string.\nfunc (t Token) RawString() string {\n\treturn string(t.raw)\n}\n\n// Pos returns the token position from the input.\nfunc (t Token) Pos() int {\n\treturn t.pos\n}\n\n// NameKind returns IdentName, TypeName or FieldNumber.\n// It panics if type is not Name.\nfunc (t Token) NameKind() NameKind {\n\tif t.kind == Name {\n\t\treturn NameKind(t.attrs &^ hasSeparator)\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a Name type: %s\", t.kind))\n}\n\n// HasSeparator returns true if the field name is followed by the separator char\n// ':', else false. It panics if type is not Name.\nfunc (t Token) HasSeparator() bool {\n\tif t.kind == Name {\n\t\treturn t.attrs&hasSeparator != 0\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a Name type: %s\", t.kind))\n}\n\n// IdentName returns the value for IdentName type.\nfunc (t Token) IdentName() string {\n\tif t.kind == Name && t.attrs&uint8(IdentName) != 0 {\n\t\treturn string(t.raw)\n\t}\n\tpanic(fmt.Sprintf(\"Token is not an IdentName: %s:%s\", t.kind, NameKind(t.attrs&^hasSeparator)))\n}\n\n// TypeName returns the value for TypeName type.\nfunc (t Token) TypeName() string {\n\tif t.kind == Name && t.attrs&uint8(TypeName) != 0 {\n\t\treturn t.str\n\t}\n\tpanic(fmt.Sprintf(\"Token is not a TypeName: %s:%s\", t.kind, NameKind(t.attrs&^hasSeparator)))\n}\n\n// FieldNumber returns the value for FieldNumber type. It returns a\n// non-negative int32 value. Caller will still need to validate for the correct\n// field number range.\nfunc (t Token) FieldNumber() int32 {\n\tif t.kind != Name || t.attrs&uint8(FieldNumber) == 0 {\n\t\tpanic(fmt.Sprintf(\"Token is not a FieldNumber: %s:%s\", t.kind, NameKind(t.attrs&^hasSeparator)))\n\t}\n\t// Following should not return an error as it had already been called right\n\t// before this Token was constructed.\n\tnum, _ := strconv.ParseInt(string(t.raw), 10, 32)\n\treturn int32(num)\n}\n\n// String returns the string value for a Scalar type.\nfunc (t Token) String() (string, bool) {\n\tif t.kind != Scalar || t.attrs != stringValue {\n\t\treturn \"\", false\n\t}\n\treturn t.str, true\n}\n\n// Enum returns the literal value for a Scalar type for use as enum literals.\nfunc (t Token) Enum() (string, bool) {\n\tif t.kind != Scalar || t.attrs != literalValue || (len(t.raw) > 0 && t.raw[0] == '-') {\n\t\treturn \"\", false\n\t}\n\treturn string(t.raw), true\n}\n\n// Bool returns the bool value for a Scalar type.\nfunc (t Token) Bool() (bool, bool) {\n\tif t.kind != Scalar {\n\t\treturn false, false\n\t}\n\tswitch t.attrs {\n\tcase literalValue:\n\t\tif b, ok := boolLits[string(t.raw)]; ok {\n\t\t\treturn b, true\n\t\t}\n\tcase numberValue:\n\t\t// Unsigned integer representation of 0 or 1 is permitted: 00, 0x0, 01,\n\t\t// 0x1, etc.\n\t\tn, err := strconv.ParseUint(t.str, 0, 64)\n\t\tif err == nil {\n\t\t\tswitch n {\n\t\t\tcase 0:\n\t\t\t\treturn false, true\n\t\t\tcase 1:\n\t\t\t\treturn true, true\n\t\t\t}\n\t\t}\n\t}\n\treturn false, false\n}\n\n// These exact boolean literals are the ones supported in C++.\nvar boolLits = map[string]bool{\n\t\"t\":     true,\n\t\"true\":  true,\n\t\"True\":  true,\n\t\"f\":     false,\n\t\"false\": false,\n\t\"False\": false,\n}\n\n// Uint64 returns the uint64 value for a Scalar type.\nfunc (t Token) Uint64() (uint64, bool) {\n\tif t.kind != Scalar || t.attrs != numberValue ||\n\t\tt.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 {\n\t\treturn 0, false\n\t}\n\tn, err := strconv.ParseUint(t.str, 0, 64)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn n, true\n}\n\n// Uint32 returns the uint32 value for a Scalar type.\nfunc (t Token) Uint32() (uint32, bool) {\n\tif t.kind != Scalar || t.attrs != numberValue ||\n\t\tt.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 {\n\t\treturn 0, false\n\t}\n\tn, err := strconv.ParseUint(t.str, 0, 32)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn uint32(n), true\n}\n\n// Int64 returns the int64 value for a Scalar type.\nfunc (t Token) Int64() (int64, bool) {\n\tif t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 {\n\t\treturn 0, false\n\t}\n\tif n, err := strconv.ParseInt(t.str, 0, 64); err == nil {\n\t\treturn n, true\n\t}\n\t// C++ accepts large positive hex numbers as negative values.\n\t// This feature is here for proto1 backwards compatibility purposes.\n\tif flags.ProtoLegacy && (t.numAttrs == numHex) {\n\t\tif n, err := strconv.ParseUint(t.str, 0, 64); err == nil {\n\t\t\treturn int64(n), true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// Int32 returns the int32 value for a Scalar type.\nfunc (t Token) Int32() (int32, bool) {\n\tif t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 {\n\t\treturn 0, false\n\t}\n\tif n, err := strconv.ParseInt(t.str, 0, 32); err == nil {\n\t\treturn int32(n), true\n\t}\n\t// C++ accepts large positive hex numbers as negative values.\n\t// This feature is here for proto1 backwards compatibility purposes.\n\tif flags.ProtoLegacy && (t.numAttrs == numHex) {\n\t\tif n, err := strconv.ParseUint(t.str, 0, 32); err == nil {\n\t\t\treturn int32(n), true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// Float64 returns the float64 value for a Scalar type.\nfunc (t Token) Float64() (float64, bool) {\n\tif t.kind != Scalar {\n\t\treturn 0, false\n\t}\n\tswitch t.attrs {\n\tcase literalValue:\n\t\tif f, ok := floatLits[strings.ToLower(string(t.raw))]; ok {\n\t\t\treturn f, true\n\t\t}\n\tcase numberValue:\n\t\tn, err := strconv.ParseFloat(t.str, 64)\n\t\tif err == nil {\n\t\t\treturn n, true\n\t\t}\n\t\tnerr := err.(*strconv.NumError)\n\t\tif nerr.Err == strconv.ErrRange {\n\t\t\treturn n, true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// Float32 returns the float32 value for a Scalar type.\nfunc (t Token) Float32() (float32, bool) {\n\tif t.kind != Scalar {\n\t\treturn 0, false\n\t}\n\tswitch t.attrs {\n\tcase literalValue:\n\t\tif f, ok := floatLits[strings.ToLower(string(t.raw))]; ok {\n\t\t\treturn float32(f), true\n\t\t}\n\tcase numberValue:\n\t\tn, err := strconv.ParseFloat(t.str, 64)\n\t\tif err == nil {\n\t\t\t// Overflows are treated as (-)infinity.\n\t\t\treturn float32(n), true\n\t\t}\n\t\tnerr := err.(*strconv.NumError)\n\t\tif nerr.Err == strconv.ErrRange {\n\t\t\treturn float32(n), true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// These are the supported float literals which C++ permits case-insensitive\n// variants of these.\nvar floatLits = map[string]float64{\n\t\"nan\":       math.NaN(),\n\t\"inf\":       math.Inf(1),\n\t\"infinity\":  math.Inf(1),\n\t\"-inf\":      math.Inf(-1),\n\t\"-infinity\": math.Inf(-1),\n}\n\n// TokenEquals returns true if given Tokens are equal, else false.\nfunc TokenEquals(x, y Token) bool {\n\treturn x.kind == y.kind &&\n\t\tx.attrs == y.attrs &&\n\t\tx.numAttrs == y.numAttrs &&\n\t\tx.pos == y.pos &&\n\t\tbytes.Equal(x.raw, y.raw) &&\n\t\tx.str == y.str\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/doc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package text implements the text format for protocol buffers.\n// This package has no semantic understanding for protocol buffers and is only\n// a parser and composer for the format.\n//\n// There is no formal specification for the protobuf text format, as such the\n// C++ implementation (see google::protobuf::TextFormat) is the reference\n// implementation of the text format.\n//\n// This package is neither a superset nor a subset of the C++ implementation.\n// This implementation permits a more liberal grammar in some cases to be\n// backwards compatible with the historical Go implementation.\n// Future parsings unique to Go should not be added.\n// Some grammars allowed by the C++ implementation are deliberately\n// not implemented here because they are considered a bug by the protobuf team\n// and should not be replicated.\n//\n// The Go implementation should implement a sufficient amount of the C++\n// grammar such that the default text serialization by C++ can be parsed by Go.\n// However, just because the C++ parser accepts some input does not mean that\n// the Go implementation should as well.\n//\n// The text format is almost a superset of JSON except:\n//   - message keys are not quoted strings, but identifiers\n//   - the top-level value must be a message without the delimiters\npackage text\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/encoding/text/encode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage text\n\nimport (\n\t\"math\"\n\t\"math/bits\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n\t\"google.golang.org/protobuf/internal/errors\"\n)\n\n// encType represents an encoding type.\ntype encType uint8\n\nconst (\n\t_ encType = (1 << iota) / 2\n\tname\n\tscalar\n\tmessageOpen\n\tmessageClose\n)\n\n// Encoder provides methods to write out textproto constructs and values. The user is\n// responsible for producing valid sequences of constructs and values.\ntype Encoder struct {\n\tencoderState\n\n\tindent      string\n\tdelims      [2]byte\n\toutputASCII bool\n}\n\ntype encoderState struct {\n\tlastType encType\n\tindents  []byte\n\tout      []byte\n}\n\n// NewEncoder returns an Encoder.\n//\n// If indent is a non-empty string, it causes every entry in a List or Message\n// to be preceded by the indent and trailed by a newline.\n//\n// If delims is not the zero value, it controls the delimiter characters used\n// for messages (e.g., \"{}\" vs \"<>\").\n//\n// If outputASCII is true, strings will be serialized in such a way that\n// multi-byte UTF-8 sequences are escaped. This property ensures that the\n// overall output is ASCII (as opposed to UTF-8).\nfunc NewEncoder(buf []byte, indent string, delims [2]byte, outputASCII bool) (*Encoder, error) {\n\te := &Encoder{\n\t\tencoderState: encoderState{out: buf},\n\t}\n\tif len(indent) > 0 {\n\t\tif strings.Trim(indent, \" \\t\") != \"\" {\n\t\t\treturn nil, errors.New(\"indent may only be composed of space and tab characters\")\n\t\t}\n\t\te.indent = indent\n\t}\n\tswitch delims {\n\tcase [2]byte{0, 0}:\n\t\te.delims = [2]byte{'{', '}'}\n\tcase [2]byte{'{', '}'}, [2]byte{'<', '>'}:\n\t\te.delims = delims\n\tdefault:\n\t\treturn nil, errors.New(\"delimiters may only be \\\"{}\\\" or \\\"<>\\\"\")\n\t}\n\te.outputASCII = outputASCII\n\n\treturn e, nil\n}\n\n// Bytes returns the content of the written bytes.\nfunc (e *Encoder) Bytes() []byte {\n\treturn e.out\n}\n\n// StartMessage writes out the '{' or '<' symbol.\nfunc (e *Encoder) StartMessage() {\n\te.prepareNext(messageOpen)\n\te.out = append(e.out, e.delims[0])\n}\n\n// EndMessage writes out the '}' or '>' symbol.\nfunc (e *Encoder) EndMessage() {\n\te.prepareNext(messageClose)\n\te.out = append(e.out, e.delims[1])\n}\n\n// WriteName writes out the field name and the separator ':'.\nfunc (e *Encoder) WriteName(s string) {\n\te.prepareNext(name)\n\te.out = append(e.out, s...)\n\te.out = append(e.out, ':')\n}\n\n// WriteBool writes out the given boolean value.\nfunc (e *Encoder) WriteBool(b bool) {\n\tif b {\n\t\te.WriteLiteral(\"true\")\n\t} else {\n\t\te.WriteLiteral(\"false\")\n\t}\n}\n\n// WriteString writes out the given string value.\nfunc (e *Encoder) WriteString(s string) {\n\te.prepareNext(scalar)\n\te.out = appendString(e.out, s, e.outputASCII)\n}\n\nfunc appendString(out []byte, in string, outputASCII bool) []byte {\n\tout = append(out, '\"')\n\ti := indexNeedEscapeInString(in)\n\tin, out = in[i:], append(out, in[:i]...)\n\tfor len(in) > 0 {\n\t\tswitch r, n := utf8.DecodeRuneInString(in); {\n\t\tcase r == utf8.RuneError && n == 1:\n\t\t\t// We do not report invalid UTF-8 because strings in the text format\n\t\t\t// are used to represent both the proto string and bytes type.\n\t\t\tr = rune(in[0])\n\t\t\tfallthrough\n\t\tcase r < ' ' || r == '\"' || r == '\\\\' || r == 0x7f:\n\t\t\tout = append(out, '\\\\')\n\t\t\tswitch r {\n\t\t\tcase '\"', '\\\\':\n\t\t\t\tout = append(out, byte(r))\n\t\t\tcase '\\n':\n\t\t\t\tout = append(out, 'n')\n\t\t\tcase '\\r':\n\t\t\t\tout = append(out, 'r')\n\t\t\tcase '\\t':\n\t\t\t\tout = append(out, 't')\n\t\t\tdefault:\n\t\t\t\tout = append(out, 'x')\n\t\t\t\tout = append(out, \"00\"[1+(bits.Len32(uint32(r))-1)/4:]...)\n\t\t\t\tout = strconv.AppendUint(out, uint64(r), 16)\n\t\t\t}\n\t\t\tin = in[n:]\n\t\tcase r >= utf8.RuneSelf && (outputASCII || r <= 0x009f):\n\t\t\tout = append(out, '\\\\')\n\t\t\tif r <= math.MaxUint16 {\n\t\t\t\tout = append(out, 'u')\n\t\t\t\tout = append(out, \"0000\"[1+(bits.Len32(uint32(r))-1)/4:]...)\n\t\t\t\tout = strconv.AppendUint(out, uint64(r), 16)\n\t\t\t} else {\n\t\t\t\tout = append(out, 'U')\n\t\t\t\tout = append(out, \"00000000\"[1+(bits.Len32(uint32(r))-1)/4:]...)\n\t\t\t\tout = strconv.AppendUint(out, uint64(r), 16)\n\t\t\t}\n\t\t\tin = in[n:]\n\t\tdefault:\n\t\t\ti := indexNeedEscapeInString(in[n:])\n\t\t\tin, out = in[n+i:], append(out, in[:n+i]...)\n\t\t}\n\t}\n\tout = append(out, '\"')\n\treturn out\n}\n\n// indexNeedEscapeInString returns the index of the character that needs\n// escaping. If no characters need escaping, this returns the input length.\nfunc indexNeedEscapeInString(s string) int {\n\tfor i := 0; i < len(s); i++ {\n\t\tif c := s[i]; c < ' ' || c == '\"' || c == '\\'' || c == '\\\\' || c >= 0x7f {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(s)\n}\n\n// WriteFloat writes out the given float value for given bitSize.\nfunc (e *Encoder) WriteFloat(n float64, bitSize int) {\n\te.prepareNext(scalar)\n\te.out = appendFloat(e.out, n, bitSize)\n}\n\nfunc appendFloat(out []byte, n float64, bitSize int) []byte {\n\tswitch {\n\tcase math.IsNaN(n):\n\t\treturn append(out, \"nan\"...)\n\tcase math.IsInf(n, +1):\n\t\treturn append(out, \"inf\"...)\n\tcase math.IsInf(n, -1):\n\t\treturn append(out, \"-inf\"...)\n\tdefault:\n\t\treturn strconv.AppendFloat(out, n, 'g', -1, bitSize)\n\t}\n}\n\n// WriteInt writes out the given signed integer value.\nfunc (e *Encoder) WriteInt(n int64) {\n\te.prepareNext(scalar)\n\te.out = strconv.AppendInt(e.out, n, 10)\n}\n\n// WriteUint writes out the given unsigned integer value.\nfunc (e *Encoder) WriteUint(n uint64) {\n\te.prepareNext(scalar)\n\te.out = strconv.AppendUint(e.out, n, 10)\n}\n\n// WriteLiteral writes out the given string as a literal value without quotes.\n// This is used for writing enum literal strings.\nfunc (e *Encoder) WriteLiteral(s string) {\n\te.prepareNext(scalar)\n\te.out = append(e.out, s...)\n}\n\n// prepareNext adds possible space and indentation for the next value based\n// on last encType and indent option. It also updates e.lastType to next.\nfunc (e *Encoder) prepareNext(next encType) {\n\tdefer func() {\n\t\te.lastType = next\n\t}()\n\n\t// Single line.\n\tif len(e.indent) == 0 {\n\t\t// Add space after each field before the next one.\n\t\tif e.lastType&(scalar|messageClose) != 0 && next == name {\n\t\t\te.out = append(e.out, ' ')\n\t\t\t// Add a random extra space to make output unstable.\n\t\t\tif detrand.Bool() {\n\t\t\t\te.out = append(e.out, ' ')\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\t// Multi-line.\n\tswitch {\n\tcase e.lastType == name:\n\t\te.out = append(e.out, ' ')\n\t\t// Add a random extra space after name: to make output unstable.\n\t\tif detrand.Bool() {\n\t\t\te.out = append(e.out, ' ')\n\t\t}\n\n\tcase e.lastType == messageOpen && next != messageClose:\n\t\te.indents = append(e.indents, e.indent...)\n\t\te.out = append(e.out, '\\n')\n\t\te.out = append(e.out, e.indents...)\n\n\tcase e.lastType&(scalar|messageClose) != 0:\n\t\tif next == messageClose {\n\t\t\te.indents = e.indents[:len(e.indents)-len(e.indent)]\n\t\t}\n\t\te.out = append(e.out, '\\n')\n\t\te.out = append(e.out, e.indents...)\n\t}\n}\n\n// Snapshot returns the current snapshot for use in Reset.\nfunc (e *Encoder) Snapshot() encoderState {\n\treturn e.encoderState\n}\n\n// Reset resets the Encoder to the given encoderState from a Snapshot.\nfunc (e *Encoder) Reset(es encoderState) {\n\te.encoderState = es\n}\n\n// AppendString appends the escaped form of the input string to b.\nfunc AppendString(b []byte, s string) []byte {\n\treturn appendString(b, s, false)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/errors/errors.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package errors implements functions to manipulate errors.\npackage errors\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n)\n\n// Error is a sentinel matching all errors produced by this package.\nvar Error = errors.New(\"protobuf error\")\n\n// New formats a string according to the format specifier and arguments and\n// returns an error that has a \"proto\" prefix.\nfunc New(f string, x ...interface{}) error {\n\treturn &prefixError{s: format(f, x...)}\n}\n\ntype prefixError struct{ s string }\n\nvar prefix = func() string {\n\t// Deliberately introduce instability into the error message string to\n\t// discourage users from performing error string comparisons.\n\tif detrand.Bool() {\n\t\treturn \"proto: \" // use non-breaking spaces (U+00a0)\n\t} else {\n\t\treturn \"proto: \" // use regular spaces (U+0020)\n\t}\n}()\n\nfunc (e *prefixError) Error() string {\n\treturn prefix + e.s\n}\n\nfunc (e *prefixError) Unwrap() error {\n\treturn Error\n}\n\n// Wrap returns an error that has a \"proto\" prefix, the formatted string described\n// by the format specifier and arguments, and a suffix of err. The error wraps err.\nfunc Wrap(err error, f string, x ...interface{}) error {\n\treturn &wrapError{\n\t\ts:   format(f, x...),\n\t\terr: err,\n\t}\n}\n\ntype wrapError struct {\n\ts   string\n\terr error\n}\n\nfunc (e *wrapError) Error() string {\n\treturn format(\"%v%v: %v\", prefix, e.s, e.err)\n}\n\nfunc (e *wrapError) Unwrap() error {\n\treturn e.err\n}\n\nfunc (e *wrapError) Is(target error) bool {\n\treturn target == Error\n}\n\nfunc format(f string, x ...interface{}) string {\n\t// avoid \"proto: \" prefix when chaining\n\tfor i := 0; i < len(x); i++ {\n\t\tswitch e := x[i].(type) {\n\t\tcase *prefixError:\n\t\t\tx[i] = e.s\n\t\tcase *wrapError:\n\t\t\tx[i] = format(\"%v: %v\", e.s, e.err)\n\t\t}\n\t}\n\treturn fmt.Sprintf(f, x...)\n}\n\nfunc InvalidUTF8(name string) error {\n\treturn New(\"field %v contains invalid UTF-8\", name)\n}\n\nfunc RequiredNotSet(name string) error {\n\treturn New(\"required field %v not set\", name)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/errors/is_go112.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 !go1.13\n// +build !go1.13\n\npackage errors\n\nimport \"reflect\"\n\n// Is is a copy of Go 1.13's errors.Is for use with older Go versions.\nfunc Is(err, target error) bool {\n\tif target == nil {\n\t\treturn err == target\n\t}\n\n\tisComparable := reflect.TypeOf(target).Comparable()\n\tfor {\n\t\tif isComparable && err == target {\n\t\t\treturn true\n\t\t}\n\t\tif x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) {\n\t\t\treturn true\n\t\t}\n\t\tif err = unwrap(err); err == nil {\n\t\t\treturn false\n\t\t}\n\t}\n}\n\nfunc unwrap(err error) error {\n\tu, ok := err.(interface {\n\t\tUnwrap() error\n\t})\n\tif !ok {\n\t\treturn nil\n\t}\n\treturn u.Unwrap()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/errors/is_go113.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 go1.13\n// +build go1.13\n\npackage errors\n\nimport \"errors\"\n\n// Is is errors.Is.\nfunc Is(err, target error) bool { return errors.Is(err, target) }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/build.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package filedesc provides functionality for constructing descriptors.\n//\n// The types in this package implement interfaces in the protoreflect package\n// related to protobuf descripriptors.\npackage filedesc\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Builder construct a protoreflect.FileDescriptor from the raw descriptor.\ntype Builder struct {\n\t// GoPackagePath is the Go package path that is invoking this builder.\n\tGoPackagePath string\n\n\t// RawDescriptor is the wire-encoded bytes of FileDescriptorProto\n\t// and must be populated.\n\tRawDescriptor []byte\n\n\t// NumEnums is the total number of enums declared in the file.\n\tNumEnums int32\n\t// NumMessages is the total number of messages declared in the file.\n\t// It includes the implicit message declarations for map entries.\n\tNumMessages int32\n\t// NumExtensions is the total number of extensions declared in the file.\n\tNumExtensions int32\n\t// NumServices is the total number of services declared in the file.\n\tNumServices int32\n\n\t// TypeResolver resolves extension field types for descriptor options.\n\t// If nil, it uses protoregistry.GlobalTypes.\n\tTypeResolver interface {\n\t\tprotoregistry.ExtensionTypeResolver\n\t}\n\n\t// FileRegistry is use to lookup file, enum, and message dependencies.\n\t// Once constructed, the file descriptor is registered here.\n\t// If nil, it uses protoregistry.GlobalFiles.\n\tFileRegistry interface {\n\t\tFindFileByPath(string) (protoreflect.FileDescriptor, error)\n\t\tFindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error)\n\t\tRegisterFile(protoreflect.FileDescriptor) error\n\t}\n}\n\n// resolverByIndex is an interface Builder.FileRegistry may implement.\n// If so, it permits looking up an enum or message dependency based on the\n// sub-list and element index into filetype.Builder.DependencyIndexes.\ntype resolverByIndex interface {\n\tFindEnumByIndex(int32, int32, []Enum, []Message) protoreflect.EnumDescriptor\n\tFindMessageByIndex(int32, int32, []Enum, []Message) protoreflect.MessageDescriptor\n}\n\n// Indexes of each sub-list in filetype.Builder.DependencyIndexes.\nconst (\n\tlistFieldDeps int32 = iota\n\tlistExtTargets\n\tlistExtDeps\n\tlistMethInDeps\n\tlistMethOutDeps\n)\n\n// Out is the output of the Builder.\ntype Out struct {\n\tFile protoreflect.FileDescriptor\n\n\t// Enums is all enum descriptors in \"flattened ordering\".\n\tEnums []Enum\n\t// Messages is all message descriptors in \"flattened ordering\".\n\t// It includes the implicit message declarations for map entries.\n\tMessages []Message\n\t// Extensions is all extension descriptors in \"flattened ordering\".\n\tExtensions []Extension\n\t// Service is all service descriptors in \"flattened ordering\".\n\tServices []Service\n}\n\n// Build constructs a FileDescriptor given the parameters set in Builder.\n// It assumes that the inputs are well-formed and panics if any inconsistencies\n// are encountered.\n//\n// If NumEnums+NumMessages+NumExtensions+NumServices is zero,\n// then Build automatically derives them from the raw descriptor.\nfunc (db Builder) Build() (out Out) {\n\t// Populate the counts if uninitialized.\n\tif db.NumEnums+db.NumMessages+db.NumExtensions+db.NumServices == 0 {\n\t\tdb.unmarshalCounts(db.RawDescriptor, true)\n\t}\n\n\t// Initialize resolvers and registries if unpopulated.\n\tif db.TypeResolver == nil {\n\t\tdb.TypeResolver = protoregistry.GlobalTypes\n\t}\n\tif db.FileRegistry == nil {\n\t\tdb.FileRegistry = protoregistry.GlobalFiles\n\t}\n\n\tfd := newRawFile(db)\n\tout.File = fd\n\tout.Enums = fd.allEnums\n\tout.Messages = fd.allMessages\n\tout.Extensions = fd.allExtensions\n\tout.Services = fd.allServices\n\n\tif err := db.FileRegistry.RegisterFile(fd); err != nil {\n\t\tpanic(err)\n\t}\n\treturn out\n}\n\n// unmarshalCounts counts the number of enum, message, extension, and service\n// declarations in the raw message, which is either a FileDescriptorProto\n// or a MessageDescriptorProto depending on whether isFile is set.\nfunc (db *Builder) unmarshalCounts(b []byte, isFile bool) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tif isFile {\n\t\t\t\tswitch num {\n\t\t\t\tcase genid.FileDescriptorProto_EnumType_field_number:\n\t\t\t\t\tdb.NumEnums++\n\t\t\t\tcase genid.FileDescriptorProto_MessageType_field_number:\n\t\t\t\t\tdb.unmarshalCounts(v, false)\n\t\t\t\t\tdb.NumMessages++\n\t\t\t\tcase genid.FileDescriptorProto_Extension_field_number:\n\t\t\t\t\tdb.NumExtensions++\n\t\t\t\tcase genid.FileDescriptorProto_Service_field_number:\n\t\t\t\t\tdb.NumServices++\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch num {\n\t\t\t\tcase genid.DescriptorProto_EnumType_field_number:\n\t\t\t\t\tdb.NumEnums++\n\t\t\t\tcase genid.DescriptorProto_NestedType_field_number:\n\t\t\t\t\tdb.unmarshalCounts(v, false)\n\t\t\t\t\tdb.NumMessages++\n\t\t\t\tcase genid.DescriptorProto_Extension_field_number:\n\t\t\t\t\tdb.NumExtensions++\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/internal/descfmt\"\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/encoding/defval\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// The types in this file may have a suffix:\n//\t• L0: Contains fields common to all descriptors (except File) and\n//\tmust be initialized up front.\n//\t• L1: Contains fields specific to a descriptor and\n//\tmust be initialized up front.\n//\t• L2: Contains fields that are lazily initialized when constructing\n//\tfrom the raw file descriptor. When constructing as a literal, the L2\n//\tfields must be initialized up front.\n//\n// The types are exported so that packages like reflect/protodesc can\n// directly construct descriptors.\n\ntype (\n\tFile struct {\n\t\tfileRaw\n\t\tL1 FileL1\n\n\t\tonce uint32     // atomically set if L2 is valid\n\t\tmu   sync.Mutex // protects L2\n\t\tL2   *FileL2\n\t}\n\tFileL1 struct {\n\t\tSyntax  protoreflect.Syntax\n\t\tPath    string\n\t\tPackage protoreflect.FullName\n\n\t\tEnums      Enums\n\t\tMessages   Messages\n\t\tExtensions Extensions\n\t\tServices   Services\n\t}\n\tFileL2 struct {\n\t\tOptions   func() protoreflect.ProtoMessage\n\t\tImports   FileImports\n\t\tLocations SourceLocations\n\t}\n)\n\nfunc (fd *File) ParentFile() protoreflect.FileDescriptor { return fd }\nfunc (fd *File) Parent() protoreflect.Descriptor         { return nil }\nfunc (fd *File) Index() int                              { return 0 }\nfunc (fd *File) Syntax() protoreflect.Syntax             { return fd.L1.Syntax }\nfunc (fd *File) Name() protoreflect.Name                 { return fd.L1.Package.Name() }\nfunc (fd *File) FullName() protoreflect.FullName         { return fd.L1.Package }\nfunc (fd *File) IsPlaceholder() bool                     { return false }\nfunc (fd *File) Options() protoreflect.ProtoMessage {\n\tif f := fd.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.File\n}\nfunc (fd *File) Path() string                                  { return fd.L1.Path }\nfunc (fd *File) Package() protoreflect.FullName                { return fd.L1.Package }\nfunc (fd *File) Imports() protoreflect.FileImports             { return &fd.lazyInit().Imports }\nfunc (fd *File) Enums() protoreflect.EnumDescriptors           { return &fd.L1.Enums }\nfunc (fd *File) Messages() protoreflect.MessageDescriptors     { return &fd.L1.Messages }\nfunc (fd *File) Extensions() protoreflect.ExtensionDescriptors { return &fd.L1.Extensions }\nfunc (fd *File) Services() protoreflect.ServiceDescriptors     { return &fd.L1.Services }\nfunc (fd *File) SourceLocations() protoreflect.SourceLocations { return &fd.lazyInit().Locations }\nfunc (fd *File) Format(s fmt.State, r rune)                    { descfmt.FormatDesc(s, r, fd) }\nfunc (fd *File) ProtoType(protoreflect.FileDescriptor)         {}\nfunc (fd *File) ProtoInternal(pragma.DoNotImplement)           {}\n\nfunc (fd *File) lazyInit() *FileL2 {\n\tif atomic.LoadUint32(&fd.once) == 0 {\n\t\tfd.lazyInitOnce()\n\t}\n\treturn fd.L2\n}\n\nfunc (fd *File) lazyInitOnce() {\n\tfd.mu.Lock()\n\tif fd.L2 == nil {\n\t\tfd.lazyRawInit() // recursively initializes all L2 structures\n\t}\n\tatomic.StoreUint32(&fd.once, 1)\n\tfd.mu.Unlock()\n}\n\n// GoPackagePath is a pseudo-internal API for determining the Go package path\n// that this file descriptor is declared in.\n//\n// WARNING: This method is exempt from the compatibility promise and may be\n// removed in the future without warning.\nfunc (fd *File) GoPackagePath() string {\n\treturn fd.builder.GoPackagePath\n}\n\ntype (\n\tEnum struct {\n\t\tBase\n\t\tL1 EnumL1\n\t\tL2 *EnumL2 // protected by fileDesc.once\n\t}\n\tEnumL1 struct {\n\t\teagerValues bool // controls whether EnumL2.Values is already populated\n\t}\n\tEnumL2 struct {\n\t\tOptions        func() protoreflect.ProtoMessage\n\t\tValues         EnumValues\n\t\tReservedNames  Names\n\t\tReservedRanges EnumRanges\n\t}\n\n\tEnumValue struct {\n\t\tBase\n\t\tL1 EnumValueL1\n\t}\n\tEnumValueL1 struct {\n\t\tOptions func() protoreflect.ProtoMessage\n\t\tNumber  protoreflect.EnumNumber\n\t}\n)\n\nfunc (ed *Enum) Options() protoreflect.ProtoMessage {\n\tif f := ed.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Enum\n}\nfunc (ed *Enum) Values() protoreflect.EnumValueDescriptors {\n\tif ed.L1.eagerValues {\n\t\treturn &ed.L2.Values\n\t}\n\treturn &ed.lazyInit().Values\n}\nfunc (ed *Enum) ReservedNames() protoreflect.Names       { return &ed.lazyInit().ReservedNames }\nfunc (ed *Enum) ReservedRanges() protoreflect.EnumRanges { return &ed.lazyInit().ReservedRanges }\nfunc (ed *Enum) Format(s fmt.State, r rune)              { descfmt.FormatDesc(s, r, ed) }\nfunc (ed *Enum) ProtoType(protoreflect.EnumDescriptor)   {}\nfunc (ed *Enum) lazyInit() *EnumL2 {\n\ted.L0.ParentFile.lazyInit() // implicitly initializes L2\n\treturn ed.L2\n}\n\nfunc (ed *EnumValue) Options() protoreflect.ProtoMessage {\n\tif f := ed.L1.Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.EnumValue\n}\nfunc (ed *EnumValue) Number() protoreflect.EnumNumber            { return ed.L1.Number }\nfunc (ed *EnumValue) Format(s fmt.State, r rune)                 { descfmt.FormatDesc(s, r, ed) }\nfunc (ed *EnumValue) ProtoType(protoreflect.EnumValueDescriptor) {}\n\ntype (\n\tMessage struct {\n\t\tBase\n\t\tL1 MessageL1\n\t\tL2 *MessageL2 // protected by fileDesc.once\n\t}\n\tMessageL1 struct {\n\t\tEnums        Enums\n\t\tMessages     Messages\n\t\tExtensions   Extensions\n\t\tIsMapEntry   bool // promoted from google.protobuf.MessageOptions\n\t\tIsMessageSet bool // promoted from google.protobuf.MessageOptions\n\t}\n\tMessageL2 struct {\n\t\tOptions               func() protoreflect.ProtoMessage\n\t\tFields                Fields\n\t\tOneofs                Oneofs\n\t\tReservedNames         Names\n\t\tReservedRanges        FieldRanges\n\t\tRequiredNumbers       FieldNumbers // must be consistent with Fields.Cardinality\n\t\tExtensionRanges       FieldRanges\n\t\tExtensionRangeOptions []func() protoreflect.ProtoMessage // must be same length as ExtensionRanges\n\t}\n\n\tField struct {\n\t\tBase\n\t\tL1 FieldL1\n\t}\n\tFieldL1 struct {\n\t\tOptions          func() protoreflect.ProtoMessage\n\t\tNumber           protoreflect.FieldNumber\n\t\tCardinality      protoreflect.Cardinality // must be consistent with Message.RequiredNumbers\n\t\tKind             protoreflect.Kind\n\t\tStringName       stringName\n\t\tIsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto\n\t\tIsWeak           bool // promoted from google.protobuf.FieldOptions\n\t\tHasPacked        bool // promoted from google.protobuf.FieldOptions\n\t\tIsPacked         bool // promoted from google.protobuf.FieldOptions\n\t\tHasEnforceUTF8   bool // promoted from google.protobuf.FieldOptions\n\t\tEnforceUTF8      bool // promoted from google.protobuf.FieldOptions\n\t\tDefault          defaultValue\n\t\tContainingOneof  protoreflect.OneofDescriptor // must be consistent with Message.Oneofs.Fields\n\t\tEnum             protoreflect.EnumDescriptor\n\t\tMessage          protoreflect.MessageDescriptor\n\t}\n\n\tOneof struct {\n\t\tBase\n\t\tL1 OneofL1\n\t}\n\tOneofL1 struct {\n\t\tOptions func() protoreflect.ProtoMessage\n\t\tFields  OneofFields // must be consistent with Message.Fields.ContainingOneof\n\t}\n)\n\nfunc (md *Message) Options() protoreflect.ProtoMessage {\n\tif f := md.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Message\n}\nfunc (md *Message) IsMapEntry() bool                           { return md.L1.IsMapEntry }\nfunc (md *Message) Fields() protoreflect.FieldDescriptors      { return &md.lazyInit().Fields }\nfunc (md *Message) Oneofs() protoreflect.OneofDescriptors      { return &md.lazyInit().Oneofs }\nfunc (md *Message) ReservedNames() protoreflect.Names          { return &md.lazyInit().ReservedNames }\nfunc (md *Message) ReservedRanges() protoreflect.FieldRanges   { return &md.lazyInit().ReservedRanges }\nfunc (md *Message) RequiredNumbers() protoreflect.FieldNumbers { return &md.lazyInit().RequiredNumbers }\nfunc (md *Message) ExtensionRanges() protoreflect.FieldRanges  { return &md.lazyInit().ExtensionRanges }\nfunc (md *Message) ExtensionRangeOptions(i int) protoreflect.ProtoMessage {\n\tif f := md.lazyInit().ExtensionRangeOptions[i]; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.ExtensionRange\n}\nfunc (md *Message) Enums() protoreflect.EnumDescriptors           { return &md.L1.Enums }\nfunc (md *Message) Messages() protoreflect.MessageDescriptors     { return &md.L1.Messages }\nfunc (md *Message) Extensions() protoreflect.ExtensionDescriptors { return &md.L1.Extensions }\nfunc (md *Message) ProtoType(protoreflect.MessageDescriptor)      {}\nfunc (md *Message) Format(s fmt.State, r rune)                    { descfmt.FormatDesc(s, r, md) }\nfunc (md *Message) lazyInit() *MessageL2 {\n\tmd.L0.ParentFile.lazyInit() // implicitly initializes L2\n\treturn md.L2\n}\n\n// IsMessageSet is a pseudo-internal API for checking whether a message\n// should serialize in the proto1 message format.\n//\n// WARNING: This method is exempt from the compatibility promise and may be\n// removed in the future without warning.\nfunc (md *Message) IsMessageSet() bool {\n\treturn md.L1.IsMessageSet\n}\n\nfunc (fd *Field) Options() protoreflect.ProtoMessage {\n\tif f := fd.L1.Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Field\n}\nfunc (fd *Field) Number() protoreflect.FieldNumber      { return fd.L1.Number }\nfunc (fd *Field) Cardinality() protoreflect.Cardinality { return fd.L1.Cardinality }\nfunc (fd *Field) Kind() protoreflect.Kind               { return fd.L1.Kind }\nfunc (fd *Field) HasJSONName() bool                     { return fd.L1.StringName.hasJSON }\nfunc (fd *Field) JSONName() string                      { return fd.L1.StringName.getJSON(fd) }\nfunc (fd *Field) TextName() string                      { return fd.L1.StringName.getText(fd) }\nfunc (fd *Field) HasPresence() bool {\n\treturn fd.L1.Cardinality != protoreflect.Repeated && (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 || fd.L1.Message != nil || fd.L1.ContainingOneof != nil)\n}\nfunc (fd *Field) HasOptionalKeyword() bool {\n\treturn (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional\n}\nfunc (fd *Field) IsPacked() bool {\n\tif !fd.L1.HasPacked && fd.L0.ParentFile.L1.Syntax != protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Repeated {\n\t\tswitch fd.L1.Kind {\n\t\tcase protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tdefault:\n\t\t\treturn true\n\t\t}\n\t}\n\treturn fd.L1.IsPacked\n}\nfunc (fd *Field) IsExtension() bool { return false }\nfunc (fd *Field) IsWeak() bool      { return fd.L1.IsWeak }\nfunc (fd *Field) IsList() bool      { return fd.Cardinality() == protoreflect.Repeated && !fd.IsMap() }\nfunc (fd *Field) IsMap() bool       { return fd.Message() != nil && fd.Message().IsMapEntry() }\nfunc (fd *Field) MapKey() protoreflect.FieldDescriptor {\n\tif !fd.IsMap() {\n\t\treturn nil\n\t}\n\treturn fd.Message().Fields().ByNumber(genid.MapEntry_Key_field_number)\n}\nfunc (fd *Field) MapValue() protoreflect.FieldDescriptor {\n\tif !fd.IsMap() {\n\t\treturn nil\n\t}\n\treturn fd.Message().Fields().ByNumber(genid.MapEntry_Value_field_number)\n}\nfunc (fd *Field) HasDefault() bool                                   { return fd.L1.Default.has }\nfunc (fd *Field) Default() protoreflect.Value                        { return fd.L1.Default.get(fd) }\nfunc (fd *Field) DefaultEnumValue() protoreflect.EnumValueDescriptor { return fd.L1.Default.enum }\nfunc (fd *Field) ContainingOneof() protoreflect.OneofDescriptor      { return fd.L1.ContainingOneof }\nfunc (fd *Field) ContainingMessage() protoreflect.MessageDescriptor {\n\treturn fd.L0.Parent.(protoreflect.MessageDescriptor)\n}\nfunc (fd *Field) Enum() protoreflect.EnumDescriptor {\n\treturn fd.L1.Enum\n}\nfunc (fd *Field) Message() protoreflect.MessageDescriptor {\n\tif fd.L1.IsWeak {\n\t\tif d, _ := protoregistry.GlobalFiles.FindDescriptorByName(fd.L1.Message.FullName()); d != nil {\n\t\t\treturn d.(protoreflect.MessageDescriptor)\n\t\t}\n\t}\n\treturn fd.L1.Message\n}\nfunc (fd *Field) Format(s fmt.State, r rune)             { descfmt.FormatDesc(s, r, fd) }\nfunc (fd *Field) ProtoType(protoreflect.FieldDescriptor) {}\n\n// EnforceUTF8 is a pseudo-internal API to determine whether to enforce UTF-8\n// validation for the string field. This exists for Google-internal use only\n// since proto3 did not enforce UTF-8 validity prior to the open-source release.\n// If this method does not exist, the default is to enforce valid UTF-8.\n//\n// WARNING: This method is exempt from the compatibility promise and may be\n// removed in the future without warning.\nfunc (fd *Field) EnforceUTF8() bool {\n\tif fd.L1.HasEnforceUTF8 {\n\t\treturn fd.L1.EnforceUTF8\n\t}\n\treturn fd.L0.ParentFile.L1.Syntax == protoreflect.Proto3\n}\n\nfunc (od *Oneof) IsSynthetic() bool {\n\treturn od.L0.ParentFile.L1.Syntax == protoreflect.Proto3 && len(od.L1.Fields.List) == 1 && od.L1.Fields.List[0].HasOptionalKeyword()\n}\nfunc (od *Oneof) Options() protoreflect.ProtoMessage {\n\tif f := od.L1.Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Oneof\n}\nfunc (od *Oneof) Fields() protoreflect.FieldDescriptors  { return &od.L1.Fields }\nfunc (od *Oneof) Format(s fmt.State, r rune)             { descfmt.FormatDesc(s, r, od) }\nfunc (od *Oneof) ProtoType(protoreflect.OneofDescriptor) {}\n\ntype (\n\tExtension struct {\n\t\tBase\n\t\tL1 ExtensionL1\n\t\tL2 *ExtensionL2 // protected by fileDesc.once\n\t}\n\tExtensionL1 struct {\n\t\tNumber      protoreflect.FieldNumber\n\t\tExtendee    protoreflect.MessageDescriptor\n\t\tCardinality protoreflect.Cardinality\n\t\tKind        protoreflect.Kind\n\t}\n\tExtensionL2 struct {\n\t\tOptions          func() protoreflect.ProtoMessage\n\t\tStringName       stringName\n\t\tIsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto\n\t\tIsPacked         bool // promoted from google.protobuf.FieldOptions\n\t\tDefault          defaultValue\n\t\tEnum             protoreflect.EnumDescriptor\n\t\tMessage          protoreflect.MessageDescriptor\n\t}\n)\n\nfunc (xd *Extension) Options() protoreflect.ProtoMessage {\n\tif f := xd.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Field\n}\nfunc (xd *Extension) Number() protoreflect.FieldNumber      { return xd.L1.Number }\nfunc (xd *Extension) Cardinality() protoreflect.Cardinality { return xd.L1.Cardinality }\nfunc (xd *Extension) Kind() protoreflect.Kind               { return xd.L1.Kind }\nfunc (xd *Extension) HasJSONName() bool                     { return xd.lazyInit().StringName.hasJSON }\nfunc (xd *Extension) JSONName() string                      { return xd.lazyInit().StringName.getJSON(xd) }\nfunc (xd *Extension) TextName() string                      { return xd.lazyInit().StringName.getText(xd) }\nfunc (xd *Extension) HasPresence() bool                     { return xd.L1.Cardinality != protoreflect.Repeated }\nfunc (xd *Extension) HasOptionalKeyword() bool {\n\treturn (xd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && xd.L1.Cardinality == protoreflect.Optional) || xd.lazyInit().IsProto3Optional\n}\nfunc (xd *Extension) IsPacked() bool                         { return xd.lazyInit().IsPacked }\nfunc (xd *Extension) IsExtension() bool                      { return true }\nfunc (xd *Extension) IsWeak() bool                           { return false }\nfunc (xd *Extension) IsList() bool                           { return xd.Cardinality() == protoreflect.Repeated }\nfunc (xd *Extension) IsMap() bool                            { return false }\nfunc (xd *Extension) MapKey() protoreflect.FieldDescriptor   { return nil }\nfunc (xd *Extension) MapValue() protoreflect.FieldDescriptor { return nil }\nfunc (xd *Extension) HasDefault() bool                       { return xd.lazyInit().Default.has }\nfunc (xd *Extension) Default() protoreflect.Value            { return xd.lazyInit().Default.get(xd) }\nfunc (xd *Extension) DefaultEnumValue() protoreflect.EnumValueDescriptor {\n\treturn xd.lazyInit().Default.enum\n}\nfunc (xd *Extension) ContainingOneof() protoreflect.OneofDescriptor     { return nil }\nfunc (xd *Extension) ContainingMessage() protoreflect.MessageDescriptor { return xd.L1.Extendee }\nfunc (xd *Extension) Enum() protoreflect.EnumDescriptor                 { return xd.lazyInit().Enum }\nfunc (xd *Extension) Message() protoreflect.MessageDescriptor           { return xd.lazyInit().Message }\nfunc (xd *Extension) Format(s fmt.State, r rune)                        { descfmt.FormatDesc(s, r, xd) }\nfunc (xd *Extension) ProtoType(protoreflect.FieldDescriptor)            {}\nfunc (xd *Extension) ProtoInternal(pragma.DoNotImplement)               {}\nfunc (xd *Extension) lazyInit() *ExtensionL2 {\n\txd.L0.ParentFile.lazyInit() // implicitly initializes L2\n\treturn xd.L2\n}\n\ntype (\n\tService struct {\n\t\tBase\n\t\tL1 ServiceL1\n\t\tL2 *ServiceL2 // protected by fileDesc.once\n\t}\n\tServiceL1 struct{}\n\tServiceL2 struct {\n\t\tOptions func() protoreflect.ProtoMessage\n\t\tMethods Methods\n\t}\n\n\tMethod struct {\n\t\tBase\n\t\tL1 MethodL1\n\t}\n\tMethodL1 struct {\n\t\tOptions           func() protoreflect.ProtoMessage\n\t\tInput             protoreflect.MessageDescriptor\n\t\tOutput            protoreflect.MessageDescriptor\n\t\tIsStreamingClient bool\n\t\tIsStreamingServer bool\n\t}\n)\n\nfunc (sd *Service) Options() protoreflect.ProtoMessage {\n\tif f := sd.lazyInit().Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Service\n}\nfunc (sd *Service) Methods() protoreflect.MethodDescriptors  { return &sd.lazyInit().Methods }\nfunc (sd *Service) Format(s fmt.State, r rune)               { descfmt.FormatDesc(s, r, sd) }\nfunc (sd *Service) ProtoType(protoreflect.ServiceDescriptor) {}\nfunc (sd *Service) ProtoInternal(pragma.DoNotImplement)      {}\nfunc (sd *Service) lazyInit() *ServiceL2 {\n\tsd.L0.ParentFile.lazyInit() // implicitly initializes L2\n\treturn sd.L2\n}\n\nfunc (md *Method) Options() protoreflect.ProtoMessage {\n\tif f := md.L1.Options; f != nil {\n\t\treturn f()\n\t}\n\treturn descopts.Method\n}\nfunc (md *Method) Input() protoreflect.MessageDescriptor   { return md.L1.Input }\nfunc (md *Method) Output() protoreflect.MessageDescriptor  { return md.L1.Output }\nfunc (md *Method) IsStreamingClient() bool                 { return md.L1.IsStreamingClient }\nfunc (md *Method) IsStreamingServer() bool                 { return md.L1.IsStreamingServer }\nfunc (md *Method) Format(s fmt.State, r rune)              { descfmt.FormatDesc(s, r, md) }\nfunc (md *Method) ProtoType(protoreflect.MethodDescriptor) {}\nfunc (md *Method) ProtoInternal(pragma.DoNotImplement)     {}\n\n// Surrogate files are can be used to create standalone descriptors\n// where the syntax is only information derived from the parent file.\nvar (\n\tSurrogateProto2 = &File{L1: FileL1{Syntax: protoreflect.Proto2}, L2: &FileL2{}}\n\tSurrogateProto3 = &File{L1: FileL1{Syntax: protoreflect.Proto3}, L2: &FileL2{}}\n)\n\ntype (\n\tBase struct {\n\t\tL0 BaseL0\n\t}\n\tBaseL0 struct {\n\t\tFullName   protoreflect.FullName // must be populated\n\t\tParentFile *File                 // must be populated\n\t\tParent     protoreflect.Descriptor\n\t\tIndex      int\n\t}\n)\n\nfunc (d *Base) Name() protoreflect.Name         { return d.L0.FullName.Name() }\nfunc (d *Base) FullName() protoreflect.FullName { return d.L0.FullName }\nfunc (d *Base) ParentFile() protoreflect.FileDescriptor {\n\tif d.L0.ParentFile == SurrogateProto2 || d.L0.ParentFile == SurrogateProto3 {\n\t\treturn nil // surrogate files are not real parents\n\t}\n\treturn d.L0.ParentFile\n}\nfunc (d *Base) Parent() protoreflect.Descriptor     { return d.L0.Parent }\nfunc (d *Base) Index() int                          { return d.L0.Index }\nfunc (d *Base) Syntax() protoreflect.Syntax         { return d.L0.ParentFile.Syntax() }\nfunc (d *Base) IsPlaceholder() bool                 { return false }\nfunc (d *Base) ProtoInternal(pragma.DoNotImplement) {}\n\ntype stringName struct {\n\thasJSON  bool\n\tonce     sync.Once\n\tnameJSON string\n\tnameText string\n}\n\n// InitJSON initializes the name. It is exported for use by other internal packages.\nfunc (s *stringName) InitJSON(name string) {\n\ts.hasJSON = true\n\ts.nameJSON = name\n}\n\nfunc (s *stringName) lazyInit(fd protoreflect.FieldDescriptor) *stringName {\n\ts.once.Do(func() {\n\t\tif fd.IsExtension() {\n\t\t\t// For extensions, JSON and text are formatted the same way.\n\t\t\tvar name string\n\t\t\tif messageset.IsMessageSetExtension(fd) {\n\t\t\t\tname = string(\"[\" + fd.FullName().Parent() + \"]\")\n\t\t\t} else {\n\t\t\t\tname = string(\"[\" + fd.FullName() + \"]\")\n\t\t\t}\n\t\t\ts.nameJSON = name\n\t\t\ts.nameText = name\n\t\t} else {\n\t\t\t// Format the JSON name.\n\t\t\tif !s.hasJSON {\n\t\t\t\ts.nameJSON = strs.JSONCamelCase(string(fd.Name()))\n\t\t\t}\n\n\t\t\t// Format the text name.\n\t\t\ts.nameText = string(fd.Name())\n\t\t\tif fd.Kind() == protoreflect.GroupKind {\n\t\t\t\ts.nameText = string(fd.Message().Name())\n\t\t\t}\n\t\t}\n\t})\n\treturn s\n}\n\nfunc (s *stringName) getJSON(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameJSON }\nfunc (s *stringName) getText(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameText }\n\nfunc DefaultValue(v protoreflect.Value, ev protoreflect.EnumValueDescriptor) defaultValue {\n\tdv := defaultValue{has: v.IsValid(), val: v, enum: ev}\n\tif b, ok := v.Interface().([]byte); ok {\n\t\t// Store a copy of the default bytes, so that we can detect\n\t\t// accidental mutations of the original value.\n\t\tdv.bytes = append([]byte(nil), b...)\n\t}\n\treturn dv\n}\n\nfunc unmarshalDefault(b []byte, k protoreflect.Kind, pf *File, ed protoreflect.EnumDescriptor) defaultValue {\n\tvar evs protoreflect.EnumValueDescriptors\n\tif k == protoreflect.EnumKind {\n\t\t// If the enum is declared within the same file, be careful not to\n\t\t// blindly call the Values method, lest we bind ourselves in a deadlock.\n\t\tif e, ok := ed.(*Enum); ok && e.L0.ParentFile == pf {\n\t\t\tevs = &e.L2.Values\n\t\t} else {\n\t\t\tevs = ed.Values()\n\t\t}\n\n\t\t// If we are unable to resolve the enum dependency, use a placeholder\n\t\t// enum value since we will not be able to parse the default value.\n\t\tif ed.IsPlaceholder() && protoreflect.Name(b).IsValid() {\n\t\t\tv := protoreflect.ValueOfEnum(0)\n\t\t\tev := PlaceholderEnumValue(ed.FullName().Parent().Append(protoreflect.Name(b)))\n\t\t\treturn DefaultValue(v, ev)\n\t\t}\n\t}\n\n\tv, ev, err := defval.Unmarshal(string(b), k, evs, defval.Descriptor)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn DefaultValue(v, ev)\n}\n\ntype defaultValue struct {\n\thas   bool\n\tval   protoreflect.Value\n\tenum  protoreflect.EnumValueDescriptor\n\tbytes []byte\n}\n\nfunc (dv *defaultValue) get(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\t// Return the zero value as the default if unpopulated.\n\tif !dv.has {\n\t\tif fd.Cardinality() == protoreflect.Repeated {\n\t\t\treturn protoreflect.Value{}\n\t\t}\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\treturn protoreflect.ValueOfBool(false)\n\t\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\t\treturn protoreflect.ValueOfInt32(0)\n\t\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\t\treturn protoreflect.ValueOfInt64(0)\n\t\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\t\treturn protoreflect.ValueOfUint32(0)\n\t\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\t\treturn protoreflect.ValueOfUint64(0)\n\t\tcase protoreflect.FloatKind:\n\t\t\treturn protoreflect.ValueOfFloat32(0)\n\t\tcase protoreflect.DoubleKind:\n\t\t\treturn protoreflect.ValueOfFloat64(0)\n\t\tcase protoreflect.StringKind:\n\t\t\treturn protoreflect.ValueOfString(\"\")\n\t\tcase protoreflect.BytesKind:\n\t\t\treturn protoreflect.ValueOfBytes(nil)\n\t\tcase protoreflect.EnumKind:\n\t\t\tif evs := fd.Enum().Values(); evs.Len() > 0 {\n\t\t\t\treturn protoreflect.ValueOfEnum(evs.Get(0).Number())\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfEnum(0)\n\t\t}\n\t}\n\n\tif len(dv.bytes) > 0 && !bytes.Equal(dv.bytes, dv.val.Bytes()) {\n\t\t// TODO: Avoid panic if we're running with the race detector\n\t\t// and instead spawn a goroutine that periodically resets\n\t\t// this value back to the original to induce a race.\n\t\tpanic(fmt.Sprintf(\"detected mutation on the default bytes for %v\", fd.FullName()))\n\t}\n\treturn dv.val\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// fileRaw is a data struct used when initializing a file descriptor from\n// a raw FileDescriptorProto.\ntype fileRaw struct {\n\tbuilder       Builder\n\tallEnums      []Enum\n\tallMessages   []Message\n\tallExtensions []Extension\n\tallServices   []Service\n}\n\nfunc newRawFile(db Builder) *File {\n\tfd := &File{fileRaw: fileRaw{builder: db}}\n\tfd.initDecls(db.NumEnums, db.NumMessages, db.NumExtensions, db.NumServices)\n\tfd.unmarshalSeed(db.RawDescriptor)\n\n\t// Extended message targets are eagerly resolved since registration\n\t// needs this information at program init time.\n\tfor i := range fd.allExtensions {\n\t\txd := &fd.allExtensions[i]\n\t\txd.L1.Extendee = fd.resolveMessageDependency(xd.L1.Extendee, listExtTargets, int32(i))\n\t}\n\n\tfd.checkDecls()\n\treturn fd\n}\n\n// initDecls pre-allocates slices for the exact number of enums, messages\n// (including map entries), extensions, and services declared in the proto file.\n// This is done to avoid regrowing the slice, which would change the address\n// for any previously seen declaration.\n//\n// The alloc methods \"allocates\" slices by pulling from the capacity.\nfunc (fd *File) initDecls(numEnums, numMessages, numExtensions, numServices int32) {\n\tfd.allEnums = make([]Enum, 0, numEnums)\n\tfd.allMessages = make([]Message, 0, numMessages)\n\tfd.allExtensions = make([]Extension, 0, numExtensions)\n\tfd.allServices = make([]Service, 0, numServices)\n}\n\nfunc (fd *File) allocEnums(n int) []Enum {\n\ttotal := len(fd.allEnums)\n\tes := fd.allEnums[total : total+n]\n\tfd.allEnums = fd.allEnums[:total+n]\n\treturn es\n}\nfunc (fd *File) allocMessages(n int) []Message {\n\ttotal := len(fd.allMessages)\n\tms := fd.allMessages[total : total+n]\n\tfd.allMessages = fd.allMessages[:total+n]\n\treturn ms\n}\nfunc (fd *File) allocExtensions(n int) []Extension {\n\ttotal := len(fd.allExtensions)\n\txs := fd.allExtensions[total : total+n]\n\tfd.allExtensions = fd.allExtensions[:total+n]\n\treturn xs\n}\nfunc (fd *File) allocServices(n int) []Service {\n\ttotal := len(fd.allServices)\n\txs := fd.allServices[total : total+n]\n\tfd.allServices = fd.allServices[:total+n]\n\treturn xs\n}\n\n// checkDecls performs a sanity check that the expected number of expected\n// declarations matches the number that were found in the descriptor proto.\nfunc (fd *File) checkDecls() {\n\tswitch {\n\tcase len(fd.allEnums) != cap(fd.allEnums):\n\tcase len(fd.allMessages) != cap(fd.allMessages):\n\tcase len(fd.allExtensions) != cap(fd.allExtensions):\n\tcase len(fd.allServices) != cap(fd.allServices):\n\tdefault:\n\t\treturn\n\t}\n\tpanic(\"mismatching cardinality\")\n}\n\nfunc (fd *File) unmarshalSeed(b []byte) {\n\tsb := getBuilder()\n\tdefer putBuilder(sb)\n\n\tvar prevField protoreflect.FieldNumber\n\tvar numEnums, numMessages, numExtensions, numServices int\n\tvar posEnums, posMessages, posExtensions, posServices int\n\tb0 := b\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FileDescriptorProto_Syntax_field_number:\n\t\t\t\tswitch string(v) {\n\t\t\t\tcase \"proto2\":\n\t\t\t\t\tfd.L1.Syntax = protoreflect.Proto2\n\t\t\t\tcase \"proto3\":\n\t\t\t\t\tfd.L1.Syntax = protoreflect.Proto3\n\t\t\t\tdefault:\n\t\t\t\t\tpanic(\"invalid syntax\")\n\t\t\t\t}\n\t\t\tcase genid.FileDescriptorProto_Name_field_number:\n\t\t\t\tfd.L1.Path = sb.MakeString(v)\n\t\t\tcase genid.FileDescriptorProto_Package_field_number:\n\t\t\t\tfd.L1.Package = protoreflect.FullName(sb.MakeString(v))\n\t\t\tcase genid.FileDescriptorProto_EnumType_field_number:\n\t\t\t\tif prevField != genid.FileDescriptorProto_EnumType_field_number {\n\t\t\t\t\tif numEnums > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposEnums = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumEnums++\n\t\t\tcase genid.FileDescriptorProto_MessageType_field_number:\n\t\t\t\tif prevField != genid.FileDescriptorProto_MessageType_field_number {\n\t\t\t\t\tif numMessages > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposMessages = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumMessages++\n\t\t\tcase genid.FileDescriptorProto_Extension_field_number:\n\t\t\t\tif prevField != genid.FileDescriptorProto_Extension_field_number {\n\t\t\t\t\tif numExtensions > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposExtensions = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumExtensions++\n\t\t\tcase genid.FileDescriptorProto_Service_field_number:\n\t\t\t\tif prevField != genid.FileDescriptorProto_Service_field_number {\n\t\t\t\t\tif numServices > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposServices = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumServices++\n\t\t\t}\n\t\t\tprevField = num\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t\tprevField = -1 // ignore known field numbers of unknown wire type\n\t\t}\n\t}\n\n\t// If syntax is missing, it is assumed to be proto2.\n\tif fd.L1.Syntax == 0 {\n\t\tfd.L1.Syntax = protoreflect.Proto2\n\t}\n\n\t// Must allocate all declarations before parsing each descriptor type\n\t// to ensure we handled all descriptors in \"flattened ordering\".\n\tif numEnums > 0 {\n\t\tfd.L1.Enums.List = fd.allocEnums(numEnums)\n\t}\n\tif numMessages > 0 {\n\t\tfd.L1.Messages.List = fd.allocMessages(numMessages)\n\t}\n\tif numExtensions > 0 {\n\t\tfd.L1.Extensions.List = fd.allocExtensions(numExtensions)\n\t}\n\tif numServices > 0 {\n\t\tfd.L1.Services.List = fd.allocServices(numServices)\n\t}\n\n\tif numEnums > 0 {\n\t\tb := b0[posEnums:]\n\t\tfor i := range fd.L1.Enums.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tfd.L1.Enums.List[i].unmarshalSeed(v, sb, fd, fd, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numMessages > 0 {\n\t\tb := b0[posMessages:]\n\t\tfor i := range fd.L1.Messages.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tfd.L1.Messages.List[i].unmarshalSeed(v, sb, fd, fd, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numExtensions > 0 {\n\t\tb := b0[posExtensions:]\n\t\tfor i := range fd.L1.Extensions.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tfd.L1.Extensions.List[i].unmarshalSeed(v, sb, fd, fd, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numServices > 0 {\n\t\tb := b0[posServices:]\n\t\tfor i := range fd.L1.Services.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tfd.L1.Services.List[i].unmarshalSeed(v, sb, fd, fd, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n}\n\nfunc (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\ted.L0.ParentFile = pf\n\ted.L0.Parent = pd\n\ted.L0.Index = i\n\n\tvar numValues int\n\tfor b := b; len(b) > 0; {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumDescriptorProto_Name_field_number:\n\t\t\t\ted.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.EnumDescriptorProto_Value_field_number:\n\t\t\t\tnumValues++\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\n\t// Only construct enum value descriptors for top-level enums since\n\t// they are needed for registration.\n\tif pd != pf {\n\t\treturn\n\t}\n\ted.L1.eagerValues = true\n\ted.L2 = new(EnumL2)\n\ted.L2.Values.List = make([]EnumValue, numValues)\n\tfor i := 0; len(b) > 0; {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumDescriptorProto_Value_field_number:\n\t\t\t\ted.L2.Values.List[i].unmarshalFull(v, sb, pf, ed, i)\n\t\t\t\ti++\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (md *Message) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tmd.L0.ParentFile = pf\n\tmd.L0.Parent = pd\n\tmd.L0.Index = i\n\n\tvar prevField protoreflect.FieldNumber\n\tvar numEnums, numMessages, numExtensions int\n\tvar posEnums, posMessages, posExtensions int\n\tb0 := b\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_Name_field_number:\n\t\t\t\tmd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.DescriptorProto_EnumType_field_number:\n\t\t\t\tif prevField != genid.DescriptorProto_EnumType_field_number {\n\t\t\t\t\tif numEnums > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposEnums = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumEnums++\n\t\t\tcase genid.DescriptorProto_NestedType_field_number:\n\t\t\t\tif prevField != genid.DescriptorProto_NestedType_field_number {\n\t\t\t\t\tif numMessages > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposMessages = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumMessages++\n\t\t\tcase genid.DescriptorProto_Extension_field_number:\n\t\t\t\tif prevField != genid.DescriptorProto_Extension_field_number {\n\t\t\t\t\tif numExtensions > 0 {\n\t\t\t\t\t\tpanic(\"non-contiguous repeated field\")\n\t\t\t\t\t}\n\t\t\t\t\tposExtensions = len(b0) - len(b) - n - m\n\t\t\t\t}\n\t\t\t\tnumExtensions++\n\t\t\tcase genid.DescriptorProto_Options_field_number:\n\t\t\t\tmd.unmarshalSeedOptions(v)\n\t\t\t}\n\t\t\tprevField = num\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t\tprevField = -1 // ignore known field numbers of unknown wire type\n\t\t}\n\t}\n\n\t// Must allocate all declarations before parsing each descriptor type\n\t// to ensure we handled all descriptors in \"flattened ordering\".\n\tif numEnums > 0 {\n\t\tmd.L1.Enums.List = pf.allocEnums(numEnums)\n\t}\n\tif numMessages > 0 {\n\t\tmd.L1.Messages.List = pf.allocMessages(numMessages)\n\t}\n\tif numExtensions > 0 {\n\t\tmd.L1.Extensions.List = pf.allocExtensions(numExtensions)\n\t}\n\n\tif numEnums > 0 {\n\t\tb := b0[posEnums:]\n\t\tfor i := range md.L1.Enums.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tmd.L1.Enums.List[i].unmarshalSeed(v, sb, pf, md, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numMessages > 0 {\n\t\tb := b0[posMessages:]\n\t\tfor i := range md.L1.Messages.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tmd.L1.Messages.List[i].unmarshalSeed(v, sb, pf, md, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n\tif numExtensions > 0 {\n\t\tb := b0[posExtensions:]\n\t\tfor i := range md.L1.Extensions.List {\n\t\t\t_, n := protowire.ConsumeVarint(b)\n\t\t\tv, m := protowire.ConsumeBytes(b[n:])\n\t\t\tmd.L1.Extensions.List[i].unmarshalSeed(v, sb, pf, md, i)\n\t\t\tb = b[n+m:]\n\t\t}\n\t}\n}\n\nfunc (md *Message) unmarshalSeedOptions(b []byte) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.MessageOptions_MapEntry_field_number:\n\t\t\t\tmd.L1.IsMapEntry = protowire.DecodeBool(v)\n\t\t\tcase genid.MessageOptions_MessageSetWireFormat_field_number:\n\t\t\t\tmd.L1.IsMessageSet = protowire.DecodeBool(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (xd *Extension) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\txd.L0.ParentFile = pf\n\txd.L0.Parent = pd\n\txd.L0.Index = i\n\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Number_field_number:\n\t\t\t\txd.L1.Number = protoreflect.FieldNumber(v)\n\t\t\tcase genid.FieldDescriptorProto_Label_field_number:\n\t\t\t\txd.L1.Cardinality = protoreflect.Cardinality(v)\n\t\t\tcase genid.FieldDescriptorProto_Type_field_number:\n\t\t\t\txd.L1.Kind = protoreflect.Kind(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Name_field_number:\n\t\t\t\txd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.FieldDescriptorProto_Extendee_field_number:\n\t\t\t\txd.L1.Extendee = PlaceholderMessage(makeFullName(sb, v))\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (sd *Service) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tsd.L0.ParentFile = pf\n\tsd.L0.Parent = pd\n\tsd.L0.Index = i\n\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.ServiceDescriptorProto_Name_field_number:\n\t\t\t\tsd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nvar nameBuilderPool = sync.Pool{\n\tNew: func() interface{} { return new(strs.Builder) },\n}\n\nfunc getBuilder() *strs.Builder {\n\treturn nameBuilderPool.Get().(*strs.Builder)\n}\nfunc putBuilder(b *strs.Builder) {\n\tnameBuilderPool.Put(b)\n}\n\n// makeFullName converts b to a protoreflect.FullName,\n// where b must start with a leading dot.\nfunc makeFullName(sb *strs.Builder, b []byte) protoreflect.FullName {\n\tif len(b) == 0 || b[0] != '.' {\n\t\tpanic(\"name reference must be fully qualified\")\n\t}\n\treturn protoreflect.FullName(sb.MakeString(b[1:]))\n}\n\nfunc appendFullName(sb *strs.Builder, prefix protoreflect.FullName, suffix []byte) protoreflect.FullName {\n\treturn sb.AppendFullName(prefix, protoreflect.Name(strs.UnsafeString(suffix)))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"reflect\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc (fd *File) lazyRawInit() {\n\tfd.unmarshalFull(fd.builder.RawDescriptor)\n\tfd.resolveMessages()\n\tfd.resolveExtensions()\n\tfd.resolveServices()\n}\n\nfunc (file *File) resolveMessages() {\n\tvar depIdx int32\n\tfor i := range file.allMessages {\n\t\tmd := &file.allMessages[i]\n\n\t\t// Resolve message field dependencies.\n\t\tfor j := range md.L2.Fields.List {\n\t\t\tfd := &md.L2.Fields.List[j]\n\n\t\t\t// Weak fields are resolved upon actual use.\n\t\t\tif fd.L1.IsWeak {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Resolve message field dependency.\n\t\t\tswitch fd.L1.Kind {\n\t\t\tcase protoreflect.EnumKind:\n\t\t\t\tfd.L1.Enum = file.resolveEnumDependency(fd.L1.Enum, listFieldDeps, depIdx)\n\t\t\t\tdepIdx++\n\t\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\t\tfd.L1.Message = file.resolveMessageDependency(fd.L1.Message, listFieldDeps, depIdx)\n\t\t\t\tdepIdx++\n\t\t\t}\n\n\t\t\t// Default is resolved here since it depends on Enum being resolved.\n\t\t\tif v := fd.L1.Default.val; v.IsValid() {\n\t\t\t\tfd.L1.Default = unmarshalDefault(v.Bytes(), fd.L1.Kind, file, fd.L1.Enum)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (file *File) resolveExtensions() {\n\tvar depIdx int32\n\tfor i := range file.allExtensions {\n\t\txd := &file.allExtensions[i]\n\n\t\t// Resolve extension field dependency.\n\t\tswitch xd.L1.Kind {\n\t\tcase protoreflect.EnumKind:\n\t\t\txd.L2.Enum = file.resolveEnumDependency(xd.L2.Enum, listExtDeps, depIdx)\n\t\t\tdepIdx++\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\txd.L2.Message = file.resolveMessageDependency(xd.L2.Message, listExtDeps, depIdx)\n\t\t\tdepIdx++\n\t\t}\n\n\t\t// Default is resolved here since it depends on Enum being resolved.\n\t\tif v := xd.L2.Default.val; v.IsValid() {\n\t\t\txd.L2.Default = unmarshalDefault(v.Bytes(), xd.L1.Kind, file, xd.L2.Enum)\n\t\t}\n\t}\n}\n\nfunc (file *File) resolveServices() {\n\tvar depIdx int32\n\tfor i := range file.allServices {\n\t\tsd := &file.allServices[i]\n\n\t\t// Resolve method dependencies.\n\t\tfor j := range sd.L2.Methods.List {\n\t\t\tmd := &sd.L2.Methods.List[j]\n\t\t\tmd.L1.Input = file.resolveMessageDependency(md.L1.Input, listMethInDeps, depIdx)\n\t\t\tmd.L1.Output = file.resolveMessageDependency(md.L1.Output, listMethOutDeps, depIdx)\n\t\t\tdepIdx++\n\t\t}\n\t}\n}\n\nfunc (file *File) resolveEnumDependency(ed protoreflect.EnumDescriptor, i, j int32) protoreflect.EnumDescriptor {\n\tr := file.builder.FileRegistry\n\tif r, ok := r.(resolverByIndex); ok {\n\t\tif ed2 := r.FindEnumByIndex(i, j, file.allEnums, file.allMessages); ed2 != nil {\n\t\t\treturn ed2\n\t\t}\n\t}\n\tfor i := range file.allEnums {\n\t\tif ed2 := &file.allEnums[i]; ed2.L0.FullName == ed.FullName() {\n\t\t\treturn ed2\n\t\t}\n\t}\n\tif d, _ := r.FindDescriptorByName(ed.FullName()); d != nil {\n\t\treturn d.(protoreflect.EnumDescriptor)\n\t}\n\treturn ed\n}\n\nfunc (file *File) resolveMessageDependency(md protoreflect.MessageDescriptor, i, j int32) protoreflect.MessageDescriptor {\n\tr := file.builder.FileRegistry\n\tif r, ok := r.(resolverByIndex); ok {\n\t\tif md2 := r.FindMessageByIndex(i, j, file.allEnums, file.allMessages); md2 != nil {\n\t\t\treturn md2\n\t\t}\n\t}\n\tfor i := range file.allMessages {\n\t\tif md2 := &file.allMessages[i]; md2.L0.FullName == md.FullName() {\n\t\t\treturn md2\n\t\t}\n\t}\n\tif d, _ := r.FindDescriptorByName(md.FullName()); d != nil {\n\t\treturn d.(protoreflect.MessageDescriptor)\n\t}\n\treturn md\n}\n\nfunc (fd *File) unmarshalFull(b []byte) {\n\tsb := getBuilder()\n\tdefer putBuilder(sb)\n\n\tvar enumIdx, messageIdx, extensionIdx, serviceIdx int\n\tvar rawOptions []byte\n\tfd.L2 = new(FileL2)\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FileDescriptorProto_PublicDependency_field_number:\n\t\t\t\tfd.L2.Imports[v].IsPublic = true\n\t\t\tcase genid.FileDescriptorProto_WeakDependency_field_number:\n\t\t\t\tfd.L2.Imports[v].IsWeak = true\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FileDescriptorProto_Dependency_field_number:\n\t\t\t\tpath := sb.MakeString(v)\n\t\t\t\timp, _ := fd.builder.FileRegistry.FindFileByPath(path)\n\t\t\t\tif imp == nil {\n\t\t\t\t\timp = PlaceholderFile(path)\n\t\t\t\t}\n\t\t\t\tfd.L2.Imports = append(fd.L2.Imports, protoreflect.FileImport{FileDescriptor: imp})\n\t\t\tcase genid.FileDescriptorProto_EnumType_field_number:\n\t\t\t\tfd.L1.Enums.List[enumIdx].unmarshalFull(v, sb)\n\t\t\t\tenumIdx++\n\t\t\tcase genid.FileDescriptorProto_MessageType_field_number:\n\t\t\t\tfd.L1.Messages.List[messageIdx].unmarshalFull(v, sb)\n\t\t\t\tmessageIdx++\n\t\t\tcase genid.FileDescriptorProto_Extension_field_number:\n\t\t\t\tfd.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb)\n\t\t\t\textensionIdx++\n\t\t\tcase genid.FileDescriptorProto_Service_field_number:\n\t\t\t\tfd.L1.Services.List[serviceIdx].unmarshalFull(v, sb)\n\t\t\t\tserviceIdx++\n\t\t\tcase genid.FileDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tfd.L2.Options = fd.builder.optionsUnmarshaler(&descopts.File, rawOptions)\n}\n\nfunc (ed *Enum) unmarshalFull(b []byte, sb *strs.Builder) {\n\tvar rawValues [][]byte\n\tvar rawOptions []byte\n\tif !ed.L1.eagerValues {\n\t\ted.L2 = new(EnumL2)\n\t}\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumDescriptorProto_Value_field_number:\n\t\t\t\trawValues = append(rawValues, v)\n\t\t\tcase genid.EnumDescriptorProto_ReservedName_field_number:\n\t\t\t\ted.L2.ReservedNames.List = append(ed.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v)))\n\t\t\tcase genid.EnumDescriptorProto_ReservedRange_field_number:\n\t\t\t\ted.L2.ReservedRanges.List = append(ed.L2.ReservedRanges.List, unmarshalEnumReservedRange(v))\n\t\t\tcase genid.EnumDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif !ed.L1.eagerValues && len(rawValues) > 0 {\n\t\ted.L2.Values.List = make([]EnumValue, len(rawValues))\n\t\tfor i, b := range rawValues {\n\t\t\ted.L2.Values.List[i].unmarshalFull(b, sb, ed.L0.ParentFile, ed, i)\n\t\t}\n\t}\n\ted.L2.Options = ed.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Enum, rawOptions)\n}\n\nfunc unmarshalEnumReservedRange(b []byte) (r [2]protoreflect.EnumNumber) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumDescriptorProto_EnumReservedRange_Start_field_number:\n\t\t\t\tr[0] = protoreflect.EnumNumber(v)\n\t\t\tcase genid.EnumDescriptorProto_EnumReservedRange_End_field_number:\n\t\t\t\tr[1] = protoreflect.EnumNumber(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\treturn r\n}\n\nfunc (vd *EnumValue) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tvd.L0.ParentFile = pf\n\tvd.L0.Parent = pd\n\tvd.L0.Index = i\n\n\tvar rawOptions []byte\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumValueDescriptorProto_Number_field_number:\n\t\t\t\tvd.L1.Number = protoreflect.EnumNumber(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.EnumValueDescriptorProto_Name_field_number:\n\t\t\t\t// NOTE: Enum values are in the same scope as the enum parent.\n\t\t\t\tvd.L0.FullName = appendFullName(sb, pd.Parent().FullName(), v)\n\t\t\tcase genid.EnumValueDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tvd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.EnumValue, rawOptions)\n}\n\nfunc (md *Message) unmarshalFull(b []byte, sb *strs.Builder) {\n\tvar rawFields, rawOneofs [][]byte\n\tvar enumIdx, messageIdx, extensionIdx int\n\tvar rawOptions []byte\n\tmd.L2 = new(MessageL2)\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_Field_field_number:\n\t\t\t\trawFields = append(rawFields, v)\n\t\t\tcase genid.DescriptorProto_OneofDecl_field_number:\n\t\t\t\trawOneofs = append(rawOneofs, v)\n\t\t\tcase genid.DescriptorProto_ReservedName_field_number:\n\t\t\t\tmd.L2.ReservedNames.List = append(md.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v)))\n\t\t\tcase genid.DescriptorProto_ReservedRange_field_number:\n\t\t\t\tmd.L2.ReservedRanges.List = append(md.L2.ReservedRanges.List, unmarshalMessageReservedRange(v))\n\t\t\tcase genid.DescriptorProto_ExtensionRange_field_number:\n\t\t\t\tr, rawOptions := unmarshalMessageExtensionRange(v)\n\t\t\t\topts := md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.ExtensionRange, rawOptions)\n\t\t\t\tmd.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, r)\n\t\t\t\tmd.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, opts)\n\t\t\tcase genid.DescriptorProto_EnumType_field_number:\n\t\t\t\tmd.L1.Enums.List[enumIdx].unmarshalFull(v, sb)\n\t\t\t\tenumIdx++\n\t\t\tcase genid.DescriptorProto_NestedType_field_number:\n\t\t\t\tmd.L1.Messages.List[messageIdx].unmarshalFull(v, sb)\n\t\t\t\tmessageIdx++\n\t\t\tcase genid.DescriptorProto_Extension_field_number:\n\t\t\t\tmd.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb)\n\t\t\t\textensionIdx++\n\t\t\tcase genid.DescriptorProto_Options_field_number:\n\t\t\t\tmd.unmarshalOptions(v)\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif len(rawFields) > 0 || len(rawOneofs) > 0 {\n\t\tmd.L2.Fields.List = make([]Field, len(rawFields))\n\t\tmd.L2.Oneofs.List = make([]Oneof, len(rawOneofs))\n\t\tfor i, b := range rawFields {\n\t\t\tfd := &md.L2.Fields.List[i]\n\t\t\tfd.unmarshalFull(b, sb, md.L0.ParentFile, md, i)\n\t\t\tif fd.L1.Cardinality == protoreflect.Required {\n\t\t\t\tmd.L2.RequiredNumbers.List = append(md.L2.RequiredNumbers.List, fd.L1.Number)\n\t\t\t}\n\t\t}\n\t\tfor i, b := range rawOneofs {\n\t\t\tod := &md.L2.Oneofs.List[i]\n\t\t\tod.unmarshalFull(b, sb, md.L0.ParentFile, md, i)\n\t\t}\n\t}\n\tmd.L2.Options = md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Message, rawOptions)\n}\n\nfunc (md *Message) unmarshalOptions(b []byte) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.MessageOptions_MapEntry_field_number:\n\t\t\t\tmd.L1.IsMapEntry = protowire.DecodeBool(v)\n\t\t\tcase genid.MessageOptions_MessageSetWireFormat_field_number:\n\t\t\t\tmd.L1.IsMessageSet = protowire.DecodeBool(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc unmarshalMessageReservedRange(b []byte) (r [2]protoreflect.FieldNumber) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_ReservedRange_Start_field_number:\n\t\t\t\tr[0] = protoreflect.FieldNumber(v)\n\t\t\tcase genid.DescriptorProto_ReservedRange_End_field_number:\n\t\t\t\tr[1] = protoreflect.FieldNumber(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\treturn r\n}\n\nfunc unmarshalMessageExtensionRange(b []byte) (r [2]protoreflect.FieldNumber, rawOptions []byte) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_ExtensionRange_Start_field_number:\n\t\t\t\tr[0] = protoreflect.FieldNumber(v)\n\t\t\tcase genid.DescriptorProto_ExtensionRange_End_field_number:\n\t\t\t\tr[1] = protoreflect.FieldNumber(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.DescriptorProto_ExtensionRange_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\treturn r, rawOptions\n}\n\nfunc (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tfd.L0.ParentFile = pf\n\tfd.L0.Parent = pd\n\tfd.L0.Index = i\n\n\tvar rawTypeName []byte\n\tvar rawOptions []byte\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Number_field_number:\n\t\t\t\tfd.L1.Number = protoreflect.FieldNumber(v)\n\t\t\tcase genid.FieldDescriptorProto_Label_field_number:\n\t\t\t\tfd.L1.Cardinality = protoreflect.Cardinality(v)\n\t\t\tcase genid.FieldDescriptorProto_Type_field_number:\n\t\t\t\tfd.L1.Kind = protoreflect.Kind(v)\n\t\t\tcase genid.FieldDescriptorProto_OneofIndex_field_number:\n\t\t\t\t// In Message.unmarshalFull, we allocate slices for both\n\t\t\t\t// the field and oneof descriptors before unmarshaling either\n\t\t\t\t// of them. This ensures pointers to slice elements are stable.\n\t\t\t\tod := &pd.(*Message).L2.Oneofs.List[v]\n\t\t\t\tod.L1.Fields.List = append(od.L1.Fields.List, fd)\n\t\t\t\tif fd.L1.ContainingOneof != nil {\n\t\t\t\t\tpanic(\"oneof type already set\")\n\t\t\t\t}\n\t\t\t\tfd.L1.ContainingOneof = od\n\t\t\tcase genid.FieldDescriptorProto_Proto3Optional_field_number:\n\t\t\t\tfd.L1.IsProto3Optional = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Name_field_number:\n\t\t\t\tfd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.FieldDescriptorProto_JsonName_field_number:\n\t\t\t\tfd.L1.StringName.InitJSON(sb.MakeString(v))\n\t\t\tcase genid.FieldDescriptorProto_DefaultValue_field_number:\n\t\t\t\tfd.L1.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveMessages\n\t\t\tcase genid.FieldDescriptorProto_TypeName_field_number:\n\t\t\t\trawTypeName = v\n\t\t\tcase genid.FieldDescriptorProto_Options_field_number:\n\t\t\t\tfd.unmarshalOptions(v)\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif rawTypeName != nil {\n\t\tname := makeFullName(sb, rawTypeName)\n\t\tswitch fd.L1.Kind {\n\t\tcase protoreflect.EnumKind:\n\t\t\tfd.L1.Enum = PlaceholderEnum(name)\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\tfd.L1.Message = PlaceholderMessage(name)\n\t\t}\n\t}\n\tfd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Field, rawOptions)\n}\n\nfunc (fd *Field) unmarshalOptions(b []byte) {\n\tconst FieldOptions_EnforceUTF8 = 13\n\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldOptions_Packed_field_number:\n\t\t\t\tfd.L1.HasPacked = true\n\t\t\t\tfd.L1.IsPacked = protowire.DecodeBool(v)\n\t\t\tcase genid.FieldOptions_Weak_field_number:\n\t\t\t\tfd.L1.IsWeak = protowire.DecodeBool(v)\n\t\t\tcase FieldOptions_EnforceUTF8:\n\t\t\t\tfd.L1.HasEnforceUTF8 = true\n\t\t\t\tfd.L1.EnforceUTF8 = protowire.DecodeBool(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (od *Oneof) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tod.L0.ParentFile = pf\n\tod.L0.Parent = pd\n\tod.L0.Index = i\n\n\tvar rawOptions []byte\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.OneofDescriptorProto_Name_field_number:\n\t\t\t\tod.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.OneofDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tod.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Oneof, rawOptions)\n}\n\nfunc (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) {\n\tvar rawTypeName []byte\n\tvar rawOptions []byte\n\txd.L2 = new(ExtensionL2)\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_Proto3Optional_field_number:\n\t\t\t\txd.L2.IsProto3Optional = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldDescriptorProto_JsonName_field_number:\n\t\t\t\txd.L2.StringName.InitJSON(sb.MakeString(v))\n\t\t\tcase genid.FieldDescriptorProto_DefaultValue_field_number:\n\t\t\t\txd.L2.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveExtensions\n\t\t\tcase genid.FieldDescriptorProto_TypeName_field_number:\n\t\t\t\trawTypeName = v\n\t\t\tcase genid.FieldDescriptorProto_Options_field_number:\n\t\t\t\txd.unmarshalOptions(v)\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif rawTypeName != nil {\n\t\tname := makeFullName(sb, rawTypeName)\n\t\tswitch xd.L1.Kind {\n\t\tcase protoreflect.EnumKind:\n\t\t\txd.L2.Enum = PlaceholderEnum(name)\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\txd.L2.Message = PlaceholderMessage(name)\n\t\t}\n\t}\n\txd.L2.Options = xd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Field, rawOptions)\n}\n\nfunc (xd *Extension) unmarshalOptions(b []byte) {\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.FieldOptions_Packed_field_number:\n\t\t\t\txd.L2.IsPacked = protowire.DecodeBool(v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n}\n\nfunc (sd *Service) unmarshalFull(b []byte, sb *strs.Builder) {\n\tvar rawMethods [][]byte\n\tvar rawOptions []byte\n\tsd.L2 = new(ServiceL2)\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.ServiceDescriptorProto_Method_field_number:\n\t\t\t\trawMethods = append(rawMethods, v)\n\t\t\tcase genid.ServiceDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tif len(rawMethods) > 0 {\n\t\tsd.L2.Methods.List = make([]Method, len(rawMethods))\n\t\tfor i, b := range rawMethods {\n\t\t\tsd.L2.Methods.List[i].unmarshalFull(b, sb, sd.L0.ParentFile, sd, i)\n\t\t}\n\t}\n\tsd.L2.Options = sd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Service, rawOptions)\n}\n\nfunc (md *Method) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {\n\tmd.L0.ParentFile = pf\n\tmd.L0.Parent = pd\n\tmd.L0.Index = i\n\n\tvar rawOptions []byte\n\tfor len(b) > 0 {\n\t\tnum, typ, n := protowire.ConsumeTag(b)\n\t\tb = b[n:]\n\t\tswitch typ {\n\t\tcase protowire.VarintType:\n\t\t\tv, m := protowire.ConsumeVarint(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.MethodDescriptorProto_ClientStreaming_field_number:\n\t\t\t\tmd.L1.IsStreamingClient = protowire.DecodeBool(v)\n\t\t\tcase genid.MethodDescriptorProto_ServerStreaming_field_number:\n\t\t\t\tmd.L1.IsStreamingServer = protowire.DecodeBool(v)\n\t\t\t}\n\t\tcase protowire.BytesType:\n\t\t\tv, m := protowire.ConsumeBytes(b)\n\t\t\tb = b[m:]\n\t\t\tswitch num {\n\t\t\tcase genid.MethodDescriptorProto_Name_field_number:\n\t\t\t\tmd.L0.FullName = appendFullName(sb, pd.FullName(), v)\n\t\t\tcase genid.MethodDescriptorProto_InputType_field_number:\n\t\t\t\tmd.L1.Input = PlaceholderMessage(makeFullName(sb, v))\n\t\t\tcase genid.MethodDescriptorProto_OutputType_field_number:\n\t\t\t\tmd.L1.Output = PlaceholderMessage(makeFullName(sb, v))\n\t\t\tcase genid.MethodDescriptorProto_Options_field_number:\n\t\t\t\trawOptions = appendOptions(rawOptions, v)\n\t\t\t}\n\t\tdefault:\n\t\t\tm := protowire.ConsumeFieldValue(num, typ, b)\n\t\t\tb = b[m:]\n\t\t}\n\t}\n\tmd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Method, rawOptions)\n}\n\n// appendOptions appends src to dst, where the returned slice is never nil.\n// This is necessary to distinguish between empty and unpopulated options.\nfunc appendOptions(dst, src []byte) []byte {\n\tif dst == nil {\n\t\tdst = []byte{}\n\t}\n\treturn append(dst, src...)\n}\n\n// optionsUnmarshaler constructs a lazy unmarshal function for an options message.\n//\n// The type of message to unmarshal to is passed as a pointer since the\n// vars in descopts may not yet be populated at the time this function is called.\nfunc (db *Builder) optionsUnmarshaler(p *protoreflect.ProtoMessage, b []byte) func() protoreflect.ProtoMessage {\n\tif b == nil {\n\t\treturn nil\n\t}\n\tvar opts protoreflect.ProtoMessage\n\tvar once sync.Once\n\treturn func() protoreflect.ProtoMessage {\n\t\tonce.Do(func() {\n\t\t\tif *p == nil {\n\t\t\t\tpanic(\"Descriptor.Options called without importing the descriptor package\")\n\t\t\t}\n\t\t\topts = reflect.New(reflect.TypeOf(*p).Elem()).Interface().(protoreflect.ProtoMessage)\n\t\t\tif err := (proto.UnmarshalOptions{\n\t\t\t\tAllowPartial: true,\n\t\t\t\tResolver:     db.TypeResolver,\n\t\t\t}).Unmarshal(b, opts); err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t})\n\t\treturn opts\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"sort\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/genid\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/descfmt\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype FileImports []protoreflect.FileImport\n\nfunc (p *FileImports) Len() int                            { return len(*p) }\nfunc (p *FileImports) Get(i int) protoreflect.FileImport   { return (*p)[i] }\nfunc (p *FileImports) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *FileImports) ProtoInternal(pragma.DoNotImplement) {}\n\ntype Names struct {\n\tList []protoreflect.Name\n\tonce sync.Once\n\thas  map[protoreflect.Name]int // protected by once\n}\n\nfunc (p *Names) Len() int                            { return len(p.List) }\nfunc (p *Names) Get(i int) protoreflect.Name         { return p.List[i] }\nfunc (p *Names) Has(s protoreflect.Name) bool        { return p.lazyInit().has[s] > 0 }\nfunc (p *Names) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *Names) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Names) lazyInit() *Names {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.has = make(map[protoreflect.Name]int, len(p.List))\n\t\t\tfor _, s := range p.List {\n\t\t\t\tp.has[s] = p.has[s] + 1\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\n// CheckValid reports any errors with the set of names with an error message\n// that completes the sentence: \"ranges is invalid because it has ...\"\nfunc (p *Names) CheckValid() error {\n\tfor s, n := range p.lazyInit().has {\n\t\tswitch {\n\t\tcase n > 1:\n\t\t\treturn errors.New(\"duplicate name: %q\", s)\n\t\tcase false && !s.IsValid():\n\t\t\t// NOTE: The C++ implementation does not validate the identifier.\n\t\t\t// See https://github.com/protocolbuffers/protobuf/issues/6335.\n\t\t\treturn errors.New(\"invalid name: %q\", s)\n\t\t}\n\t}\n\treturn nil\n}\n\ntype EnumRanges struct {\n\tList   [][2]protoreflect.EnumNumber // start inclusive; end inclusive\n\tonce   sync.Once\n\tsorted [][2]protoreflect.EnumNumber // protected by once\n}\n\nfunc (p *EnumRanges) Len() int                             { return len(p.List) }\nfunc (p *EnumRanges) Get(i int) [2]protoreflect.EnumNumber { return p.List[i] }\nfunc (p *EnumRanges) Has(n protoreflect.EnumNumber) bool {\n\tfor ls := p.lazyInit().sorted; len(ls) > 0; {\n\t\ti := len(ls) / 2\n\t\tswitch r := enumRange(ls[i]); {\n\t\tcase n < r.Start():\n\t\t\tls = ls[:i] // search lower\n\t\tcase n > r.End():\n\t\t\tls = ls[i+1:] // search upper\n\t\tdefault:\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\nfunc (p *EnumRanges) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *EnumRanges) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *EnumRanges) lazyInit() *EnumRanges {\n\tp.once.Do(func() {\n\t\tp.sorted = append(p.sorted, p.List...)\n\t\tsort.Slice(p.sorted, func(i, j int) bool {\n\t\t\treturn p.sorted[i][0] < p.sorted[j][0]\n\t\t})\n\t})\n\treturn p\n}\n\n// CheckValid reports any errors with the set of names with an error message\n// that completes the sentence: \"ranges is invalid because it has ...\"\nfunc (p *EnumRanges) CheckValid() error {\n\tvar rp enumRange\n\tfor i, r := range p.lazyInit().sorted {\n\t\tr := enumRange(r)\n\t\tswitch {\n\t\tcase !(r.Start() <= r.End()):\n\t\t\treturn errors.New(\"invalid range: %v\", r)\n\t\tcase !(rp.End() < r.Start()) && i > 0:\n\t\t\treturn errors.New(\"overlapping ranges: %v with %v\", rp, r)\n\t\t}\n\t\trp = r\n\t}\n\treturn nil\n}\n\ntype enumRange [2]protoreflect.EnumNumber\n\nfunc (r enumRange) Start() protoreflect.EnumNumber { return r[0] } // inclusive\nfunc (r enumRange) End() protoreflect.EnumNumber   { return r[1] } // inclusive\nfunc (r enumRange) String() string {\n\tif r.Start() == r.End() {\n\t\treturn fmt.Sprintf(\"%d\", r.Start())\n\t}\n\treturn fmt.Sprintf(\"%d to %d\", r.Start(), r.End())\n}\n\ntype FieldRanges struct {\n\tList   [][2]protoreflect.FieldNumber // start inclusive; end exclusive\n\tonce   sync.Once\n\tsorted [][2]protoreflect.FieldNumber // protected by once\n}\n\nfunc (p *FieldRanges) Len() int                              { return len(p.List) }\nfunc (p *FieldRanges) Get(i int) [2]protoreflect.FieldNumber { return p.List[i] }\nfunc (p *FieldRanges) Has(n protoreflect.FieldNumber) bool {\n\tfor ls := p.lazyInit().sorted; len(ls) > 0; {\n\t\ti := len(ls) / 2\n\t\tswitch r := fieldRange(ls[i]); {\n\t\tcase n < r.Start():\n\t\t\tls = ls[:i] // search lower\n\t\tcase n > r.End():\n\t\t\tls = ls[i+1:] // search upper\n\t\tdefault:\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\nfunc (p *FieldRanges) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *FieldRanges) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *FieldRanges) lazyInit() *FieldRanges {\n\tp.once.Do(func() {\n\t\tp.sorted = append(p.sorted, p.List...)\n\t\tsort.Slice(p.sorted, func(i, j int) bool {\n\t\t\treturn p.sorted[i][0] < p.sorted[j][0]\n\t\t})\n\t})\n\treturn p\n}\n\n// CheckValid reports any errors with the set of ranges with an error message\n// that completes the sentence: \"ranges is invalid because it has ...\"\nfunc (p *FieldRanges) CheckValid(isMessageSet bool) error {\n\tvar rp fieldRange\n\tfor i, r := range p.lazyInit().sorted {\n\t\tr := fieldRange(r)\n\t\tswitch {\n\t\tcase !isValidFieldNumber(r.Start(), isMessageSet):\n\t\t\treturn errors.New(\"invalid field number: %d\", r.Start())\n\t\tcase !isValidFieldNumber(r.End(), isMessageSet):\n\t\t\treturn errors.New(\"invalid field number: %d\", r.End())\n\t\tcase !(r.Start() <= r.End()):\n\t\t\treturn errors.New(\"invalid range: %v\", r)\n\t\tcase !(rp.End() < r.Start()) && i > 0:\n\t\t\treturn errors.New(\"overlapping ranges: %v with %v\", rp, r)\n\t\t}\n\t\trp = r\n\t}\n\treturn nil\n}\n\n// isValidFieldNumber reports whether the field number is valid.\n// Unlike the FieldNumber.IsValid method, it allows ranges that cover the\n// reserved number range.\nfunc isValidFieldNumber(n protoreflect.FieldNumber, isMessageSet bool) bool {\n\treturn protowire.MinValidNumber <= n && (n <= protowire.MaxValidNumber || isMessageSet)\n}\n\n// CheckOverlap reports an error if p and q overlap.\nfunc (p *FieldRanges) CheckOverlap(q *FieldRanges) error {\n\trps := p.lazyInit().sorted\n\trqs := q.lazyInit().sorted\n\tfor pi, qi := 0, 0; pi < len(rps) && qi < len(rqs); {\n\t\trp := fieldRange(rps[pi])\n\t\trq := fieldRange(rqs[qi])\n\t\tif !(rp.End() < rq.Start() || rq.End() < rp.Start()) {\n\t\t\treturn errors.New(\"overlapping ranges: %v with %v\", rp, rq)\n\t\t}\n\t\tif rp.Start() < rq.Start() {\n\t\t\tpi++\n\t\t} else {\n\t\t\tqi++\n\t\t}\n\t}\n\treturn nil\n}\n\ntype fieldRange [2]protoreflect.FieldNumber\n\nfunc (r fieldRange) Start() protoreflect.FieldNumber { return r[0] }     // inclusive\nfunc (r fieldRange) End() protoreflect.FieldNumber   { return r[1] - 1 } // inclusive\nfunc (r fieldRange) String() string {\n\tif r.Start() == r.End() {\n\t\treturn fmt.Sprintf(\"%d\", r.Start())\n\t}\n\treturn fmt.Sprintf(\"%d to %d\", r.Start(), r.End())\n}\n\ntype FieldNumbers struct {\n\tList []protoreflect.FieldNumber\n\tonce sync.Once\n\thas  map[protoreflect.FieldNumber]struct{} // protected by once\n}\n\nfunc (p *FieldNumbers) Len() int                           { return len(p.List) }\nfunc (p *FieldNumbers) Get(i int) protoreflect.FieldNumber { return p.List[i] }\nfunc (p *FieldNumbers) Has(n protoreflect.FieldNumber) bool {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.has = make(map[protoreflect.FieldNumber]struct{}, len(p.List))\n\t\t\tfor _, n := range p.List {\n\t\t\t\tp.has[n] = struct{}{}\n\t\t\t}\n\t\t}\n\t})\n\t_, ok := p.has[n]\n\treturn ok\n}\nfunc (p *FieldNumbers) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *FieldNumbers) ProtoInternal(pragma.DoNotImplement) {}\n\ntype OneofFields struct {\n\tList   []protoreflect.FieldDescriptor\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]protoreflect.FieldDescriptor        // protected by once\n\tbyJSON map[string]protoreflect.FieldDescriptor                   // protected by once\n\tbyText map[string]protoreflect.FieldDescriptor                   // protected by once\n\tbyNum  map[protoreflect.FieldNumber]protoreflect.FieldDescriptor // protected by once\n}\n\nfunc (p *OneofFields) Len() int                               { return len(p.List) }\nfunc (p *OneofFields) Get(i int) protoreflect.FieldDescriptor { return p.List[i] }\nfunc (p *OneofFields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor {\n\treturn p.lazyInit().byName[s]\n}\nfunc (p *OneofFields) ByJSONName(s string) protoreflect.FieldDescriptor {\n\treturn p.lazyInit().byJSON[s]\n}\nfunc (p *OneofFields) ByTextName(s string) protoreflect.FieldDescriptor {\n\treturn p.lazyInit().byText[s]\n}\nfunc (p *OneofFields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor {\n\treturn p.lazyInit().byNum[n]\n}\nfunc (p *OneofFields) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }\nfunc (p *OneofFields) ProtoInternal(pragma.DoNotImplement) {}\n\nfunc (p *OneofFields) lazyInit() *OneofFields {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]protoreflect.FieldDescriptor, len(p.List))\n\t\t\tp.byJSON = make(map[string]protoreflect.FieldDescriptor, len(p.List))\n\t\t\tp.byText = make(map[string]protoreflect.FieldDescriptor, len(p.List))\n\t\t\tp.byNum = make(map[protoreflect.FieldNumber]protoreflect.FieldDescriptor, len(p.List))\n\t\t\tfor _, f := range p.List {\n\t\t\t\t// Field names and numbers are guaranteed to be unique.\n\t\t\t\tp.byName[f.Name()] = f\n\t\t\t\tp.byJSON[f.JSONName()] = f\n\t\t\t\tp.byText[f.TextName()] = f\n\t\t\t\tp.byNum[f.Number()] = f\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype SourceLocations struct {\n\t// List is a list of SourceLocations.\n\t// The SourceLocation.Next field does not need to be populated\n\t// as it will be lazily populated upon first need.\n\tList []protoreflect.SourceLocation\n\n\t// File is the parent file descriptor that these locations are relative to.\n\t// If non-nil, ByDescriptor verifies that the provided descriptor\n\t// is a child of this file descriptor.\n\tFile protoreflect.FileDescriptor\n\n\tonce   sync.Once\n\tbyPath map[pathKey]int\n}\n\nfunc (p *SourceLocations) Len() int                              { return len(p.List) }\nfunc (p *SourceLocations) Get(i int) protoreflect.SourceLocation { return p.lazyInit().List[i] }\nfunc (p *SourceLocations) byKey(k pathKey) protoreflect.SourceLocation {\n\tif i, ok := p.lazyInit().byPath[k]; ok {\n\t\treturn p.List[i]\n\t}\n\treturn protoreflect.SourceLocation{}\n}\nfunc (p *SourceLocations) ByPath(path protoreflect.SourcePath) protoreflect.SourceLocation {\n\treturn p.byKey(newPathKey(path))\n}\nfunc (p *SourceLocations) ByDescriptor(desc protoreflect.Descriptor) protoreflect.SourceLocation {\n\tif p.File != nil && desc != nil && p.File != desc.ParentFile() {\n\t\treturn protoreflect.SourceLocation{} // mismatching parent files\n\t}\n\tvar pathArr [16]int32\n\tpath := pathArr[:0]\n\tfor {\n\t\tswitch desc.(type) {\n\t\tcase protoreflect.FileDescriptor:\n\t\t\t// Reverse the path since it was constructed in reverse.\n\t\t\tfor i, j := 0, len(path)-1; i < j; i, j = i+1, j-1 {\n\t\t\t\tpath[i], path[j] = path[j], path[i]\n\t\t\t}\n\t\t\treturn p.byKey(newPathKey(path))\n\t\tcase protoreflect.MessageDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.FileDescriptor:\n\t\t\t\tpath = append(path, int32(genid.FileDescriptorProto_MessageType_field_number))\n\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\tpath = append(path, int32(genid.DescriptorProto_NestedType_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.FieldDescriptor:\n\t\t\tisExtension := desc.(protoreflect.FieldDescriptor).IsExtension()\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tif isExtension {\n\t\t\t\tswitch desc.(type) {\n\t\t\t\tcase protoreflect.FileDescriptor:\n\t\t\t\t\tpath = append(path, int32(genid.FileDescriptorProto_Extension_field_number))\n\t\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\t\tpath = append(path, int32(genid.DescriptorProto_Extension_field_number))\n\t\t\t\tdefault:\n\t\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch desc.(type) {\n\t\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\t\tpath = append(path, int32(genid.DescriptorProto_Field_field_number))\n\t\t\t\tdefault:\n\t\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t\t}\n\t\t\t}\n\t\tcase protoreflect.OneofDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\tpath = append(path, int32(genid.DescriptorProto_OneofDecl_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.EnumDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.FileDescriptor:\n\t\t\t\tpath = append(path, int32(genid.FileDescriptorProto_EnumType_field_number))\n\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\tpath = append(path, int32(genid.DescriptorProto_EnumType_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.EnumValueDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.EnumDescriptor:\n\t\t\t\tpath = append(path, int32(genid.EnumDescriptorProto_Value_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.ServiceDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.FileDescriptor:\n\t\t\t\tpath = append(path, int32(genid.FileDescriptorProto_Service_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tcase protoreflect.MethodDescriptor:\n\t\t\tpath = append(path, int32(desc.Index()))\n\t\t\tdesc = desc.Parent()\n\t\t\tswitch desc.(type) {\n\t\t\tcase protoreflect.ServiceDescriptor:\n\t\t\t\tpath = append(path, int32(genid.ServiceDescriptorProto_Method_field_number))\n\t\t\tdefault:\n\t\t\t\treturn protoreflect.SourceLocation{}\n\t\t\t}\n\t\tdefault:\n\t\t\treturn protoreflect.SourceLocation{}\n\t\t}\n\t}\n}\nfunc (p *SourceLocations) lazyInit() *SourceLocations {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\t// Collect all the indexes for a given path.\n\t\t\tpathIdxs := make(map[pathKey][]int, len(p.List))\n\t\t\tfor i, l := range p.List {\n\t\t\t\tk := newPathKey(l.Path)\n\t\t\t\tpathIdxs[k] = append(pathIdxs[k], i)\n\t\t\t}\n\n\t\t\t// Update the next index for all locations.\n\t\t\tp.byPath = make(map[pathKey]int, len(p.List))\n\t\t\tfor k, idxs := range pathIdxs {\n\t\t\t\tfor i := 0; i < len(idxs)-1; i++ {\n\t\t\t\t\tp.List[idxs[i]].Next = idxs[i+1]\n\t\t\t\t}\n\t\t\t\tp.List[idxs[len(idxs)-1]].Next = 0\n\t\t\t\tp.byPath[k] = idxs[0] // record the first location for this path\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\nfunc (p *SourceLocations) ProtoInternal(pragma.DoNotImplement) {}\n\n// pathKey is a comparable representation of protoreflect.SourcePath.\ntype pathKey struct {\n\tarr [16]uint8 // first n-1 path segments; last element is the length\n\tstr string    // used if the path does not fit in arr\n}\n\nfunc newPathKey(p protoreflect.SourcePath) (k pathKey) {\n\tif len(p) < len(k.arr) {\n\t\tfor i, ps := range p {\n\t\t\tif ps < 0 || math.MaxUint8 <= ps {\n\t\t\t\treturn pathKey{str: p.String()}\n\t\t\t}\n\t\t\tk.arr[i] = uint8(ps)\n\t\t}\n\t\tk.arr[len(k.arr)-1] = uint8(len(p))\n\t\treturn k\n\t}\n\treturn pathKey{str: p.String()}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage filedesc\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/descfmt\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype Enums struct {\n\tList   []Enum\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Enum // protected by once\n}\n\nfunc (p *Enums) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Enums) Get(i int) protoreflect.EnumDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Enums) ByName(s protoreflect.Name) protoreflect.EnumDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Enums) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Enums) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Enums) lazyInit() *Enums {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Enum, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype EnumValues struct {\n\tList   []EnumValue\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*EnumValue       // protected by once\n\tbyNum  map[protoreflect.EnumNumber]*EnumValue // protected by once\n}\n\nfunc (p *EnumValues) Len() int {\n\treturn len(p.List)\n}\nfunc (p *EnumValues) Get(i int) protoreflect.EnumValueDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *EnumValues) ByName(s protoreflect.Name) protoreflect.EnumValueDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *EnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor {\n\tif d := p.lazyInit().byNum[n]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *EnumValues) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *EnumValues) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *EnumValues) lazyInit() *EnumValues {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*EnumValue, len(p.List))\n\t\t\tp.byNum = make(map[protoreflect.EnumNumber]*EnumValue, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t\tif _, ok := p.byNum[d.Number()]; !ok {\n\t\t\t\t\tp.byNum[d.Number()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Messages struct {\n\tList   []Message\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Message // protected by once\n}\n\nfunc (p *Messages) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Messages) Get(i int) protoreflect.MessageDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Messages) ByName(s protoreflect.Name) protoreflect.MessageDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Messages) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Messages) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Messages) lazyInit() *Messages {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Message, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Fields struct {\n\tList   []Field\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Field        // protected by once\n\tbyJSON map[string]*Field                   // protected by once\n\tbyText map[string]*Field                   // protected by once\n\tbyNum  map[protoreflect.FieldNumber]*Field // protected by once\n}\n\nfunc (p *Fields) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Fields) Get(i int) protoreflect.FieldDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Fields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Fields) ByJSONName(s string) protoreflect.FieldDescriptor {\n\tif d := p.lazyInit().byJSON[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Fields) ByTextName(s string) protoreflect.FieldDescriptor {\n\tif d := p.lazyInit().byText[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Fields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor {\n\tif d := p.lazyInit().byNum[n]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Fields) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Fields) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Fields) lazyInit() *Fields {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Field, len(p.List))\n\t\t\tp.byJSON = make(map[string]*Field, len(p.List))\n\t\t\tp.byText = make(map[string]*Field, len(p.List))\n\t\t\tp.byNum = make(map[protoreflect.FieldNumber]*Field, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t\tif _, ok := p.byJSON[d.JSONName()]; !ok {\n\t\t\t\t\tp.byJSON[d.JSONName()] = d\n\t\t\t\t}\n\t\t\t\tif _, ok := p.byText[d.TextName()]; !ok {\n\t\t\t\t\tp.byText[d.TextName()] = d\n\t\t\t\t}\n\t\t\t\tif _, ok := p.byNum[d.Number()]; !ok {\n\t\t\t\t\tp.byNum[d.Number()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Oneofs struct {\n\tList   []Oneof\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Oneof // protected by once\n}\n\nfunc (p *Oneofs) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Oneofs) Get(i int) protoreflect.OneofDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Oneofs) ByName(s protoreflect.Name) protoreflect.OneofDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Oneofs) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Oneofs) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Oneofs) lazyInit() *Oneofs {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Oneof, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Extensions struct {\n\tList   []Extension\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Extension // protected by once\n}\n\nfunc (p *Extensions) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Extensions) Get(i int) protoreflect.ExtensionDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Extensions) ByName(s protoreflect.Name) protoreflect.ExtensionDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Extensions) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Extensions) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Extensions) lazyInit() *Extensions {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Extension, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Services struct {\n\tList   []Service\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Service // protected by once\n}\n\nfunc (p *Services) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Services) Get(i int) protoreflect.ServiceDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Services) ByName(s protoreflect.Name) protoreflect.ServiceDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Services) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Services) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Services) lazyInit() *Services {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Service, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n\ntype Methods struct {\n\tList   []Method\n\tonce   sync.Once\n\tbyName map[protoreflect.Name]*Method // protected by once\n}\n\nfunc (p *Methods) Len() int {\n\treturn len(p.List)\n}\nfunc (p *Methods) Get(i int) protoreflect.MethodDescriptor {\n\treturn &p.List[i]\n}\nfunc (p *Methods) ByName(s protoreflect.Name) protoreflect.MethodDescriptor {\n\tif d := p.lazyInit().byName[s]; d != nil {\n\t\treturn d\n\t}\n\treturn nil\n}\nfunc (p *Methods) Format(s fmt.State, r rune) {\n\tdescfmt.FormatList(s, r, p)\n}\nfunc (p *Methods) ProtoInternal(pragma.DoNotImplement) {}\nfunc (p *Methods) lazyInit() *Methods {\n\tp.once.Do(func() {\n\t\tif len(p.List) > 0 {\n\t\t\tp.byName = make(map[protoreflect.Name]*Method, len(p.List))\n\t\t\tfor i := range p.List {\n\t\t\t\td := &p.List[i]\n\t\t\t\tif _, ok := p.byName[d.Name()]; !ok {\n\t\t\t\t\tp.byName[d.Name()] = d\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\treturn p\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage filedesc\n\nimport (\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nvar (\n\temptyNames           = new(Names)\n\temptyEnumRanges      = new(EnumRanges)\n\temptyFieldRanges     = new(FieldRanges)\n\temptyFieldNumbers    = new(FieldNumbers)\n\temptySourceLocations = new(SourceLocations)\n\n\temptyFiles      = new(FileImports)\n\temptyMessages   = new(Messages)\n\temptyFields     = new(Fields)\n\temptyOneofs     = new(Oneofs)\n\temptyEnums      = new(Enums)\n\temptyEnumValues = new(EnumValues)\n\temptyExtensions = new(Extensions)\n\temptyServices   = new(Services)\n)\n\n// PlaceholderFile is a placeholder, representing only the file path.\ntype PlaceholderFile string\n\nfunc (f PlaceholderFile) ParentFile() protoreflect.FileDescriptor       { return f }\nfunc (f PlaceholderFile) Parent() protoreflect.Descriptor               { return nil }\nfunc (f PlaceholderFile) Index() int                                    { return 0 }\nfunc (f PlaceholderFile) Syntax() protoreflect.Syntax                   { return 0 }\nfunc (f PlaceholderFile) Name() protoreflect.Name                       { return \"\" }\nfunc (f PlaceholderFile) FullName() protoreflect.FullName               { return \"\" }\nfunc (f PlaceholderFile) IsPlaceholder() bool                           { return true }\nfunc (f PlaceholderFile) Options() protoreflect.ProtoMessage            { return descopts.File }\nfunc (f PlaceholderFile) Path() string                                  { return string(f) }\nfunc (f PlaceholderFile) Package() protoreflect.FullName                { return \"\" }\nfunc (f PlaceholderFile) Imports() protoreflect.FileImports             { return emptyFiles }\nfunc (f PlaceholderFile) Messages() protoreflect.MessageDescriptors     { return emptyMessages }\nfunc (f PlaceholderFile) Enums() protoreflect.EnumDescriptors           { return emptyEnums }\nfunc (f PlaceholderFile) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions }\nfunc (f PlaceholderFile) Services() protoreflect.ServiceDescriptors     { return emptyServices }\nfunc (f PlaceholderFile) SourceLocations() protoreflect.SourceLocations { return emptySourceLocations }\nfunc (f PlaceholderFile) ProtoType(protoreflect.FileDescriptor)         { return }\nfunc (f PlaceholderFile) ProtoInternal(pragma.DoNotImplement)           { return }\n\n// PlaceholderEnum is a placeholder, representing only the full name.\ntype PlaceholderEnum protoreflect.FullName\n\nfunc (e PlaceholderEnum) ParentFile() protoreflect.FileDescriptor   { return nil }\nfunc (e PlaceholderEnum) Parent() protoreflect.Descriptor           { return nil }\nfunc (e PlaceholderEnum) Index() int                                { return 0 }\nfunc (e PlaceholderEnum) Syntax() protoreflect.Syntax               { return 0 }\nfunc (e PlaceholderEnum) Name() protoreflect.Name                   { return protoreflect.FullName(e).Name() }\nfunc (e PlaceholderEnum) FullName() protoreflect.FullName           { return protoreflect.FullName(e) }\nfunc (e PlaceholderEnum) IsPlaceholder() bool                       { return true }\nfunc (e PlaceholderEnum) Options() protoreflect.ProtoMessage        { return descopts.Enum }\nfunc (e PlaceholderEnum) Values() protoreflect.EnumValueDescriptors { return emptyEnumValues }\nfunc (e PlaceholderEnum) ReservedNames() protoreflect.Names         { return emptyNames }\nfunc (e PlaceholderEnum) ReservedRanges() protoreflect.EnumRanges   { return emptyEnumRanges }\nfunc (e PlaceholderEnum) ProtoType(protoreflect.EnumDescriptor)     { return }\nfunc (e PlaceholderEnum) ProtoInternal(pragma.DoNotImplement)       { return }\n\n// PlaceholderEnumValue is a placeholder, representing only the full name.\ntype PlaceholderEnumValue protoreflect.FullName\n\nfunc (e PlaceholderEnumValue) ParentFile() protoreflect.FileDescriptor    { return nil }\nfunc (e PlaceholderEnumValue) Parent() protoreflect.Descriptor            { return nil }\nfunc (e PlaceholderEnumValue) Index() int                                 { return 0 }\nfunc (e PlaceholderEnumValue) Syntax() protoreflect.Syntax                { return 0 }\nfunc (e PlaceholderEnumValue) Name() protoreflect.Name                    { return protoreflect.FullName(e).Name() }\nfunc (e PlaceholderEnumValue) FullName() protoreflect.FullName            { return protoreflect.FullName(e) }\nfunc (e PlaceholderEnumValue) IsPlaceholder() bool                        { return true }\nfunc (e PlaceholderEnumValue) Options() protoreflect.ProtoMessage         { return descopts.EnumValue }\nfunc (e PlaceholderEnumValue) Number() protoreflect.EnumNumber            { return 0 }\nfunc (e PlaceholderEnumValue) ProtoType(protoreflect.EnumValueDescriptor) { return }\nfunc (e PlaceholderEnumValue) ProtoInternal(pragma.DoNotImplement)        { return }\n\n// PlaceholderMessage is a placeholder, representing only the full name.\ntype PlaceholderMessage protoreflect.FullName\n\nfunc (m PlaceholderMessage) ParentFile() protoreflect.FileDescriptor    { return nil }\nfunc (m PlaceholderMessage) Parent() protoreflect.Descriptor            { return nil }\nfunc (m PlaceholderMessage) Index() int                                 { return 0 }\nfunc (m PlaceholderMessage) Syntax() protoreflect.Syntax                { return 0 }\nfunc (m PlaceholderMessage) Name() protoreflect.Name                    { return protoreflect.FullName(m).Name() }\nfunc (m PlaceholderMessage) FullName() protoreflect.FullName            { return protoreflect.FullName(m) }\nfunc (m PlaceholderMessage) IsPlaceholder() bool                        { return true }\nfunc (m PlaceholderMessage) Options() protoreflect.ProtoMessage         { return descopts.Message }\nfunc (m PlaceholderMessage) IsMapEntry() bool                           { return false }\nfunc (m PlaceholderMessage) Fields() protoreflect.FieldDescriptors      { return emptyFields }\nfunc (m PlaceholderMessage) Oneofs() protoreflect.OneofDescriptors      { return emptyOneofs }\nfunc (m PlaceholderMessage) ReservedNames() protoreflect.Names          { return emptyNames }\nfunc (m PlaceholderMessage) ReservedRanges() protoreflect.FieldRanges   { return emptyFieldRanges }\nfunc (m PlaceholderMessage) RequiredNumbers() protoreflect.FieldNumbers { return emptyFieldNumbers }\nfunc (m PlaceholderMessage) ExtensionRanges() protoreflect.FieldRanges  { return emptyFieldRanges }\nfunc (m PlaceholderMessage) ExtensionRangeOptions(int) protoreflect.ProtoMessage {\n\tpanic(\"index out of range\")\n}\nfunc (m PlaceholderMessage) Messages() protoreflect.MessageDescriptors     { return emptyMessages }\nfunc (m PlaceholderMessage) Enums() protoreflect.EnumDescriptors           { return emptyEnums }\nfunc (m PlaceholderMessage) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions }\nfunc (m PlaceholderMessage) ProtoType(protoreflect.MessageDescriptor)      { return }\nfunc (m PlaceholderMessage) ProtoInternal(pragma.DoNotImplement)           { return }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/filetype/build.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package filetype provides functionality for wrapping descriptors\n// with Go type information.\npackage filetype\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\tpimpl \"google.golang.org/protobuf/internal/impl\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Builder constructs type descriptors from a raw file descriptor\n// and associated Go types for each enum and message declaration.\n//\n// # Flattened Ordering\n//\n// The protobuf type system represents declarations as a tree. Certain nodes in\n// the tree require us to either associate it with a concrete Go type or to\n// resolve a dependency, which is information that must be provided separately\n// since it cannot be derived from the file descriptor alone.\n//\n// However, representing a tree as Go literals is difficult to simply do in a\n// space and time efficient way. Thus, we store them as a flattened list of\n// objects where the serialization order from the tree-based form is important.\n//\n// The \"flattened ordering\" is defined as a tree traversal of all enum, message,\n// extension, and service declarations using the following algorithm:\n//\n//\tdef VisitFileDecls(fd):\n//\t\tfor e in fd.Enums:      yield e\n//\t\tfor m in fd.Messages:   yield m\n//\t\tfor x in fd.Extensions: yield x\n//\t\tfor s in fd.Services:   yield s\n//\t\tfor m in fd.Messages:   yield from VisitMessageDecls(m)\n//\n//\tdef VisitMessageDecls(md):\n//\t\tfor e in md.Enums:      yield e\n//\t\tfor m in md.Messages:   yield m\n//\t\tfor x in md.Extensions: yield x\n//\t\tfor m in md.Messages:   yield from VisitMessageDecls(m)\n//\n// The traversal starts at the root file descriptor and yields each direct\n// declaration within each node before traversing into sub-declarations\n// that children themselves may have.\ntype Builder struct {\n\t// File is the underlying file descriptor builder.\n\tFile filedesc.Builder\n\n\t// GoTypes is a unique set of the Go types for all declarations and\n\t// dependencies. Each type is represented as a zero value of the Go type.\n\t//\n\t// Declarations are Go types generated for enums and messages directly\n\t// declared (not publicly imported) in the proto source file.\n\t// Messages for map entries are accounted for, but represented by nil.\n\t// Enum declarations in \"flattened ordering\" come first, followed by\n\t// message declarations in \"flattened ordering\".\n\t//\n\t// Dependencies are Go types for enums or messages referenced by\n\t// message fields (excluding weak fields), for parent extended messages of\n\t// extension fields, for enums or messages referenced by extension fields,\n\t// and for input and output messages referenced by service methods.\n\t// Dependencies must come after declarations, but the ordering of\n\t// dependencies themselves is unspecified.\n\tGoTypes []interface{}\n\n\t// DependencyIndexes is an ordered list of indexes into GoTypes for the\n\t// dependencies of messages, extensions, or services.\n\t//\n\t// There are 5 sub-lists in \"flattened ordering\" concatenated back-to-back:\n\t//\t0. Message field dependencies: list of the enum or message type\n\t//\treferred to by every message field.\n\t//\t1. Extension field targets: list of the extended parent message of\n\t//\tevery extension.\n\t//\t2. Extension field dependencies: list of the enum or message type\n\t//\treferred to by every extension field.\n\t//\t3. Service method inputs: list of the input message type\n\t//\treferred to by every service method.\n\t//\t4. Service method outputs: list of the output message type\n\t//\treferred to by every service method.\n\t//\n\t// The offset into DependencyIndexes for the start of each sub-list\n\t// is appended to the end in reverse order.\n\tDependencyIndexes []int32\n\n\t// EnumInfos is a list of enum infos in \"flattened ordering\".\n\tEnumInfos []pimpl.EnumInfo\n\n\t// MessageInfos is a list of message infos in \"flattened ordering\".\n\t// If provided, the GoType and PBType for each element is populated.\n\t//\n\t// Requirement: len(MessageInfos) == len(Build.Messages)\n\tMessageInfos []pimpl.MessageInfo\n\n\t// ExtensionInfos is a list of extension infos in \"flattened ordering\".\n\t// Each element is initialized and registered with the protoregistry package.\n\t//\n\t// Requirement: len(LegacyExtensions) == len(Build.Extensions)\n\tExtensionInfos []pimpl.ExtensionInfo\n\n\t// TypeRegistry is the registry to register each type descriptor.\n\t// If nil, it uses protoregistry.GlobalTypes.\n\tTypeRegistry interface {\n\t\tRegisterMessage(protoreflect.MessageType) error\n\t\tRegisterEnum(protoreflect.EnumType) error\n\t\tRegisterExtension(protoreflect.ExtensionType) error\n\t}\n}\n\n// Out is the output of the builder.\ntype Out struct {\n\tFile protoreflect.FileDescriptor\n}\n\nfunc (tb Builder) Build() (out Out) {\n\t// Replace the resolver with one that resolves dependencies by index,\n\t// which is faster and more reliable than relying on the global registry.\n\tif tb.File.FileRegistry == nil {\n\t\ttb.File.FileRegistry = protoregistry.GlobalFiles\n\t}\n\ttb.File.FileRegistry = &resolverByIndex{\n\t\tgoTypes:      tb.GoTypes,\n\t\tdepIdxs:      tb.DependencyIndexes,\n\t\tfileRegistry: tb.File.FileRegistry,\n\t}\n\n\t// Initialize registry if unpopulated.\n\tif tb.TypeRegistry == nil {\n\t\ttb.TypeRegistry = protoregistry.GlobalTypes\n\t}\n\n\tfbOut := tb.File.Build()\n\tout.File = fbOut.File\n\n\t// Process enums.\n\tenumGoTypes := tb.GoTypes[:len(fbOut.Enums)]\n\tif len(tb.EnumInfos) != len(fbOut.Enums) {\n\t\tpanic(\"mismatching enum lengths\")\n\t}\n\tif len(fbOut.Enums) > 0 {\n\t\tfor i := range fbOut.Enums {\n\t\t\ttb.EnumInfos[i] = pimpl.EnumInfo{\n\t\t\t\tGoReflectType: reflect.TypeOf(enumGoTypes[i]),\n\t\t\t\tDesc:          &fbOut.Enums[i],\n\t\t\t}\n\t\t\t// Register enum types.\n\t\t\tif err := tb.TypeRegistry.RegisterEnum(&tb.EnumInfos[i]); err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Process messages.\n\tmessageGoTypes := tb.GoTypes[len(fbOut.Enums):][:len(fbOut.Messages)]\n\tif len(tb.MessageInfos) != len(fbOut.Messages) {\n\t\tpanic(\"mismatching message lengths\")\n\t}\n\tif len(fbOut.Messages) > 0 {\n\t\tfor i := range fbOut.Messages {\n\t\t\tif messageGoTypes[i] == nil {\n\t\t\t\tcontinue // skip map entry\n\t\t\t}\n\n\t\t\ttb.MessageInfos[i].GoReflectType = reflect.TypeOf(messageGoTypes[i])\n\t\t\ttb.MessageInfos[i].Desc = &fbOut.Messages[i]\n\n\t\t\t// Register message types.\n\t\t\tif err := tb.TypeRegistry.RegisterMessage(&tb.MessageInfos[i]); err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t}\n\n\t\t// As a special-case for descriptor.proto,\n\t\t// locally register concrete message type for the options.\n\t\tif out.File.Path() == \"google/protobuf/descriptor.proto\" && out.File.Package() == \"google.protobuf\" {\n\t\t\tfor i := range fbOut.Messages {\n\t\t\t\tswitch fbOut.Messages[i].Name() {\n\t\t\t\tcase \"FileOptions\":\n\t\t\t\t\tdescopts.File = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"EnumOptions\":\n\t\t\t\t\tdescopts.Enum = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"EnumValueOptions\":\n\t\t\t\t\tdescopts.EnumValue = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"MessageOptions\":\n\t\t\t\t\tdescopts.Message = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"FieldOptions\":\n\t\t\t\t\tdescopts.Field = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"OneofOptions\":\n\t\t\t\t\tdescopts.Oneof = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"ExtensionRangeOptions\":\n\t\t\t\t\tdescopts.ExtensionRange = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"ServiceOptions\":\n\t\t\t\t\tdescopts.Service = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\tcase \"MethodOptions\":\n\t\t\t\t\tdescopts.Method = messageGoTypes[i].(protoreflect.ProtoMessage)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Process extensions.\n\tif len(tb.ExtensionInfos) != len(fbOut.Extensions) {\n\t\tpanic(\"mismatching extension lengths\")\n\t}\n\tvar depIdx int32\n\tfor i := range fbOut.Extensions {\n\t\t// For enum and message kinds, determine the referent Go type so\n\t\t// that we can construct their constructors.\n\t\tconst listExtDeps = 2\n\t\tvar goType reflect.Type\n\t\tswitch fbOut.Extensions[i].L1.Kind {\n\t\tcase protoreflect.EnumKind:\n\t\t\tj := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx)\n\t\t\tgoType = reflect.TypeOf(tb.GoTypes[j])\n\t\t\tdepIdx++\n\t\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\t\tj := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx)\n\t\t\tgoType = reflect.TypeOf(tb.GoTypes[j])\n\t\t\tdepIdx++\n\t\tdefault:\n\t\t\tgoType = goTypeForPBKind[fbOut.Extensions[i].L1.Kind]\n\t\t}\n\t\tif fbOut.Extensions[i].IsList() {\n\t\t\tgoType = reflect.SliceOf(goType)\n\t\t}\n\n\t\tpimpl.InitExtensionInfo(&tb.ExtensionInfos[i], &fbOut.Extensions[i], goType)\n\n\t\t// Register extension types.\n\t\tif err := tb.TypeRegistry.RegisterExtension(&tb.ExtensionInfos[i]); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\n\treturn out\n}\n\nvar goTypeForPBKind = map[protoreflect.Kind]reflect.Type{\n\tprotoreflect.BoolKind:     reflect.TypeOf(bool(false)),\n\tprotoreflect.Int32Kind:    reflect.TypeOf(int32(0)),\n\tprotoreflect.Sint32Kind:   reflect.TypeOf(int32(0)),\n\tprotoreflect.Sfixed32Kind: reflect.TypeOf(int32(0)),\n\tprotoreflect.Int64Kind:    reflect.TypeOf(int64(0)),\n\tprotoreflect.Sint64Kind:   reflect.TypeOf(int64(0)),\n\tprotoreflect.Sfixed64Kind: reflect.TypeOf(int64(0)),\n\tprotoreflect.Uint32Kind:   reflect.TypeOf(uint32(0)),\n\tprotoreflect.Fixed32Kind:  reflect.TypeOf(uint32(0)),\n\tprotoreflect.Uint64Kind:   reflect.TypeOf(uint64(0)),\n\tprotoreflect.Fixed64Kind:  reflect.TypeOf(uint64(0)),\n\tprotoreflect.FloatKind:    reflect.TypeOf(float32(0)),\n\tprotoreflect.DoubleKind:   reflect.TypeOf(float64(0)),\n\tprotoreflect.StringKind:   reflect.TypeOf(string(\"\")),\n\tprotoreflect.BytesKind:    reflect.TypeOf([]byte(nil)),\n}\n\ntype depIdxs []int32\n\n// Get retrieves the jth element of the ith sub-list.\nfunc (x depIdxs) Get(i, j int32) int32 {\n\treturn x[x[int32(len(x))-i-1]+j]\n}\n\ntype (\n\tresolverByIndex struct {\n\t\tgoTypes []interface{}\n\t\tdepIdxs depIdxs\n\t\tfileRegistry\n\t}\n\tfileRegistry interface {\n\t\tFindFileByPath(string) (protoreflect.FileDescriptor, error)\n\t\tFindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error)\n\t\tRegisterFile(protoreflect.FileDescriptor) error\n\t}\n)\n\nfunc (r *resolverByIndex) FindEnumByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.EnumDescriptor {\n\tif depIdx := int(r.depIdxs.Get(i, j)); int(depIdx) < len(es)+len(ms) {\n\t\treturn &es[depIdx]\n\t} else {\n\t\treturn pimpl.Export{}.EnumDescriptorOf(r.goTypes[depIdx])\n\t}\n}\n\nfunc (r *resolverByIndex) FindMessageByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.MessageDescriptor {\n\tif depIdx := int(r.depIdxs.Get(i, j)); depIdx < len(es)+len(ms) {\n\t\treturn &ms[depIdx-len(es)]\n\t} else {\n\t\treturn pimpl.Export{}.MessageDescriptorOf(r.goTypes[depIdx])\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/flags/flags.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package flags provides a set of flags controlled by build tags.\npackage flags\n\n// ProtoLegacy specifies whether to enable support for legacy functionality\n// such as MessageSets, weak fields, and various other obscure behavior\n// that is necessary to maintain backwards compatibility with proto1 or\n// the pre-release variants of proto2 and proto3.\n//\n// This is disabled by default unless built with the \"protolegacy\" tag.\n//\n// WARNING: The compatibility agreement covers nothing provided by this flag.\n// As such, functionality may suddenly be removed or changed at our discretion.\nconst ProtoLegacy = protoLegacy\n\n// LazyUnmarshalExtensions specifies whether to lazily unmarshal extensions.\n//\n// Lazy extension unmarshaling validates the contents of message-valued\n// extension fields at unmarshal time, but defers creating the message\n// structure until the extension is first accessed.\nconst LazyUnmarshalExtensions = ProtoLegacy\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !protolegacy\n// +build !protolegacy\n\npackage flags\n\nconst protoLegacy = false\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build protolegacy\n// +build protolegacy\n\npackage flags\n\nconst protoLegacy = true\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/any_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_any_proto = \"google/protobuf/any.proto\"\n\n// Names for google.protobuf.Any.\nconst (\n\tAny_message_name     protoreflect.Name     = \"Any\"\n\tAny_message_fullname protoreflect.FullName = \"google.protobuf.Any\"\n)\n\n// Field names for google.protobuf.Any.\nconst (\n\tAny_TypeUrl_field_name protoreflect.Name = \"type_url\"\n\tAny_Value_field_name   protoreflect.Name = \"value\"\n\n\tAny_TypeUrl_field_fullname protoreflect.FullName = \"google.protobuf.Any.type_url\"\n\tAny_Value_field_fullname   protoreflect.FullName = \"google.protobuf.Any.value\"\n)\n\n// Field numbers for google.protobuf.Any.\nconst (\n\tAny_TypeUrl_field_number protoreflect.FieldNumber = 1\n\tAny_Value_field_number   protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/api_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_api_proto = \"google/protobuf/api.proto\"\n\n// Names for google.protobuf.Api.\nconst (\n\tApi_message_name     protoreflect.Name     = \"Api\"\n\tApi_message_fullname protoreflect.FullName = \"google.protobuf.Api\"\n)\n\n// Field names for google.protobuf.Api.\nconst (\n\tApi_Name_field_name          protoreflect.Name = \"name\"\n\tApi_Methods_field_name       protoreflect.Name = \"methods\"\n\tApi_Options_field_name       protoreflect.Name = \"options\"\n\tApi_Version_field_name       protoreflect.Name = \"version\"\n\tApi_SourceContext_field_name protoreflect.Name = \"source_context\"\n\tApi_Mixins_field_name        protoreflect.Name = \"mixins\"\n\tApi_Syntax_field_name        protoreflect.Name = \"syntax\"\n\n\tApi_Name_field_fullname          protoreflect.FullName = \"google.protobuf.Api.name\"\n\tApi_Methods_field_fullname       protoreflect.FullName = \"google.protobuf.Api.methods\"\n\tApi_Options_field_fullname       protoreflect.FullName = \"google.protobuf.Api.options\"\n\tApi_Version_field_fullname       protoreflect.FullName = \"google.protobuf.Api.version\"\n\tApi_SourceContext_field_fullname protoreflect.FullName = \"google.protobuf.Api.source_context\"\n\tApi_Mixins_field_fullname        protoreflect.FullName = \"google.protobuf.Api.mixins\"\n\tApi_Syntax_field_fullname        protoreflect.FullName = \"google.protobuf.Api.syntax\"\n)\n\n// Field numbers for google.protobuf.Api.\nconst (\n\tApi_Name_field_number          protoreflect.FieldNumber = 1\n\tApi_Methods_field_number       protoreflect.FieldNumber = 2\n\tApi_Options_field_number       protoreflect.FieldNumber = 3\n\tApi_Version_field_number       protoreflect.FieldNumber = 4\n\tApi_SourceContext_field_number protoreflect.FieldNumber = 5\n\tApi_Mixins_field_number        protoreflect.FieldNumber = 6\n\tApi_Syntax_field_number        protoreflect.FieldNumber = 7\n)\n\n// Names for google.protobuf.Method.\nconst (\n\tMethod_message_name     protoreflect.Name     = \"Method\"\n\tMethod_message_fullname protoreflect.FullName = \"google.protobuf.Method\"\n)\n\n// Field names for google.protobuf.Method.\nconst (\n\tMethod_Name_field_name              protoreflect.Name = \"name\"\n\tMethod_RequestTypeUrl_field_name    protoreflect.Name = \"request_type_url\"\n\tMethod_RequestStreaming_field_name  protoreflect.Name = \"request_streaming\"\n\tMethod_ResponseTypeUrl_field_name   protoreflect.Name = \"response_type_url\"\n\tMethod_ResponseStreaming_field_name protoreflect.Name = \"response_streaming\"\n\tMethod_Options_field_name           protoreflect.Name = \"options\"\n\tMethod_Syntax_field_name            protoreflect.Name = \"syntax\"\n\n\tMethod_Name_field_fullname              protoreflect.FullName = \"google.protobuf.Method.name\"\n\tMethod_RequestTypeUrl_field_fullname    protoreflect.FullName = \"google.protobuf.Method.request_type_url\"\n\tMethod_RequestStreaming_field_fullname  protoreflect.FullName = \"google.protobuf.Method.request_streaming\"\n\tMethod_ResponseTypeUrl_field_fullname   protoreflect.FullName = \"google.protobuf.Method.response_type_url\"\n\tMethod_ResponseStreaming_field_fullname protoreflect.FullName = \"google.protobuf.Method.response_streaming\"\n\tMethod_Options_field_fullname           protoreflect.FullName = \"google.protobuf.Method.options\"\n\tMethod_Syntax_field_fullname            protoreflect.FullName = \"google.protobuf.Method.syntax\"\n)\n\n// Field numbers for google.protobuf.Method.\nconst (\n\tMethod_Name_field_number              protoreflect.FieldNumber = 1\n\tMethod_RequestTypeUrl_field_number    protoreflect.FieldNumber = 2\n\tMethod_RequestStreaming_field_number  protoreflect.FieldNumber = 3\n\tMethod_ResponseTypeUrl_field_number   protoreflect.FieldNumber = 4\n\tMethod_ResponseStreaming_field_number protoreflect.FieldNumber = 5\n\tMethod_Options_field_number           protoreflect.FieldNumber = 6\n\tMethod_Syntax_field_number            protoreflect.FieldNumber = 7\n)\n\n// Names for google.protobuf.Mixin.\nconst (\n\tMixin_message_name     protoreflect.Name     = \"Mixin\"\n\tMixin_message_fullname protoreflect.FullName = \"google.protobuf.Mixin\"\n)\n\n// Field names for google.protobuf.Mixin.\nconst (\n\tMixin_Name_field_name protoreflect.Name = \"name\"\n\tMixin_Root_field_name protoreflect.Name = \"root\"\n\n\tMixin_Name_field_fullname protoreflect.FullName = \"google.protobuf.Mixin.name\"\n\tMixin_Root_field_fullname protoreflect.FullName = \"google.protobuf.Mixin.root\"\n)\n\n// Field numbers for google.protobuf.Mixin.\nconst (\n\tMixin_Name_field_number protoreflect.FieldNumber = 1\n\tMixin_Root_field_number protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_descriptor_proto = \"google/protobuf/descriptor.proto\"\n\n// Names for google.protobuf.FileDescriptorSet.\nconst (\n\tFileDescriptorSet_message_name     protoreflect.Name     = \"FileDescriptorSet\"\n\tFileDescriptorSet_message_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorSet\"\n)\n\n// Field names for google.protobuf.FileDescriptorSet.\nconst (\n\tFileDescriptorSet_File_field_name protoreflect.Name = \"file\"\n\n\tFileDescriptorSet_File_field_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorSet.file\"\n)\n\n// Field numbers for google.protobuf.FileDescriptorSet.\nconst (\n\tFileDescriptorSet_File_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.FileDescriptorProto.\nconst (\n\tFileDescriptorProto_message_name     protoreflect.Name     = \"FileDescriptorProto\"\n\tFileDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorProto\"\n)\n\n// Field names for google.protobuf.FileDescriptorProto.\nconst (\n\tFileDescriptorProto_Name_field_name             protoreflect.Name = \"name\"\n\tFileDescriptorProto_Package_field_name          protoreflect.Name = \"package\"\n\tFileDescriptorProto_Dependency_field_name       protoreflect.Name = \"dependency\"\n\tFileDescriptorProto_PublicDependency_field_name protoreflect.Name = \"public_dependency\"\n\tFileDescriptorProto_WeakDependency_field_name   protoreflect.Name = \"weak_dependency\"\n\tFileDescriptorProto_MessageType_field_name      protoreflect.Name = \"message_type\"\n\tFileDescriptorProto_EnumType_field_name         protoreflect.Name = \"enum_type\"\n\tFileDescriptorProto_Service_field_name          protoreflect.Name = \"service\"\n\tFileDescriptorProto_Extension_field_name        protoreflect.Name = \"extension\"\n\tFileDescriptorProto_Options_field_name          protoreflect.Name = \"options\"\n\tFileDescriptorProto_SourceCodeInfo_field_name   protoreflect.Name = \"source_code_info\"\n\tFileDescriptorProto_Syntax_field_name           protoreflect.Name = \"syntax\"\n\tFileDescriptorProto_Edition_field_name          protoreflect.Name = \"edition\"\n\n\tFileDescriptorProto_Name_field_fullname             protoreflect.FullName = \"google.protobuf.FileDescriptorProto.name\"\n\tFileDescriptorProto_Package_field_fullname          protoreflect.FullName = \"google.protobuf.FileDescriptorProto.package\"\n\tFileDescriptorProto_Dependency_field_fullname       protoreflect.FullName = \"google.protobuf.FileDescriptorProto.dependency\"\n\tFileDescriptorProto_PublicDependency_field_fullname protoreflect.FullName = \"google.protobuf.FileDescriptorProto.public_dependency\"\n\tFileDescriptorProto_WeakDependency_field_fullname   protoreflect.FullName = \"google.protobuf.FileDescriptorProto.weak_dependency\"\n\tFileDescriptorProto_MessageType_field_fullname      protoreflect.FullName = \"google.protobuf.FileDescriptorProto.message_type\"\n\tFileDescriptorProto_EnumType_field_fullname         protoreflect.FullName = \"google.protobuf.FileDescriptorProto.enum_type\"\n\tFileDescriptorProto_Service_field_fullname          protoreflect.FullName = \"google.protobuf.FileDescriptorProto.service\"\n\tFileDescriptorProto_Extension_field_fullname        protoreflect.FullName = \"google.protobuf.FileDescriptorProto.extension\"\n\tFileDescriptorProto_Options_field_fullname          protoreflect.FullName = \"google.protobuf.FileDescriptorProto.options\"\n\tFileDescriptorProto_SourceCodeInfo_field_fullname   protoreflect.FullName = \"google.protobuf.FileDescriptorProto.source_code_info\"\n\tFileDescriptorProto_Syntax_field_fullname           protoreflect.FullName = \"google.protobuf.FileDescriptorProto.syntax\"\n\tFileDescriptorProto_Edition_field_fullname          protoreflect.FullName = \"google.protobuf.FileDescriptorProto.edition\"\n)\n\n// Field numbers for google.protobuf.FileDescriptorProto.\nconst (\n\tFileDescriptorProto_Name_field_number             protoreflect.FieldNumber = 1\n\tFileDescriptorProto_Package_field_number          protoreflect.FieldNumber = 2\n\tFileDescriptorProto_Dependency_field_number       protoreflect.FieldNumber = 3\n\tFileDescriptorProto_PublicDependency_field_number protoreflect.FieldNumber = 10\n\tFileDescriptorProto_WeakDependency_field_number   protoreflect.FieldNumber = 11\n\tFileDescriptorProto_MessageType_field_number      protoreflect.FieldNumber = 4\n\tFileDescriptorProto_EnumType_field_number         protoreflect.FieldNumber = 5\n\tFileDescriptorProto_Service_field_number          protoreflect.FieldNumber = 6\n\tFileDescriptorProto_Extension_field_number        protoreflect.FieldNumber = 7\n\tFileDescriptorProto_Options_field_number          protoreflect.FieldNumber = 8\n\tFileDescriptorProto_SourceCodeInfo_field_number   protoreflect.FieldNumber = 9\n\tFileDescriptorProto_Syntax_field_number           protoreflect.FieldNumber = 12\n\tFileDescriptorProto_Edition_field_number          protoreflect.FieldNumber = 13\n)\n\n// Names for google.protobuf.DescriptorProto.\nconst (\n\tDescriptorProto_message_name     protoreflect.Name     = \"DescriptorProto\"\n\tDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto\"\n)\n\n// Field names for google.protobuf.DescriptorProto.\nconst (\n\tDescriptorProto_Name_field_name           protoreflect.Name = \"name\"\n\tDescriptorProto_Field_field_name          protoreflect.Name = \"field\"\n\tDescriptorProto_Extension_field_name      protoreflect.Name = \"extension\"\n\tDescriptorProto_NestedType_field_name     protoreflect.Name = \"nested_type\"\n\tDescriptorProto_EnumType_field_name       protoreflect.Name = \"enum_type\"\n\tDescriptorProto_ExtensionRange_field_name protoreflect.Name = \"extension_range\"\n\tDescriptorProto_OneofDecl_field_name      protoreflect.Name = \"oneof_decl\"\n\tDescriptorProto_Options_field_name        protoreflect.Name = \"options\"\n\tDescriptorProto_ReservedRange_field_name  protoreflect.Name = \"reserved_range\"\n\tDescriptorProto_ReservedName_field_name   protoreflect.Name = \"reserved_name\"\n\n\tDescriptorProto_Name_field_fullname           protoreflect.FullName = \"google.protobuf.DescriptorProto.name\"\n\tDescriptorProto_Field_field_fullname          protoreflect.FullName = \"google.protobuf.DescriptorProto.field\"\n\tDescriptorProto_Extension_field_fullname      protoreflect.FullName = \"google.protobuf.DescriptorProto.extension\"\n\tDescriptorProto_NestedType_field_fullname     protoreflect.FullName = \"google.protobuf.DescriptorProto.nested_type\"\n\tDescriptorProto_EnumType_field_fullname       protoreflect.FullName = \"google.protobuf.DescriptorProto.enum_type\"\n\tDescriptorProto_ExtensionRange_field_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.extension_range\"\n\tDescriptorProto_OneofDecl_field_fullname      protoreflect.FullName = \"google.protobuf.DescriptorProto.oneof_decl\"\n\tDescriptorProto_Options_field_fullname        protoreflect.FullName = \"google.protobuf.DescriptorProto.options\"\n\tDescriptorProto_ReservedRange_field_fullname  protoreflect.FullName = \"google.protobuf.DescriptorProto.reserved_range\"\n\tDescriptorProto_ReservedName_field_fullname   protoreflect.FullName = \"google.protobuf.DescriptorProto.reserved_name\"\n)\n\n// Field numbers for google.protobuf.DescriptorProto.\nconst (\n\tDescriptorProto_Name_field_number           protoreflect.FieldNumber = 1\n\tDescriptorProto_Field_field_number          protoreflect.FieldNumber = 2\n\tDescriptorProto_Extension_field_number      protoreflect.FieldNumber = 6\n\tDescriptorProto_NestedType_field_number     protoreflect.FieldNumber = 3\n\tDescriptorProto_EnumType_field_number       protoreflect.FieldNumber = 4\n\tDescriptorProto_ExtensionRange_field_number protoreflect.FieldNumber = 5\n\tDescriptorProto_OneofDecl_field_number      protoreflect.FieldNumber = 8\n\tDescriptorProto_Options_field_number        protoreflect.FieldNumber = 7\n\tDescriptorProto_ReservedRange_field_number  protoreflect.FieldNumber = 9\n\tDescriptorProto_ReservedName_field_number   protoreflect.FieldNumber = 10\n)\n\n// Names for google.protobuf.DescriptorProto.ExtensionRange.\nconst (\n\tDescriptorProto_ExtensionRange_message_name     protoreflect.Name     = \"ExtensionRange\"\n\tDescriptorProto_ExtensionRange_message_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.ExtensionRange\"\n)\n\n// Field names for google.protobuf.DescriptorProto.ExtensionRange.\nconst (\n\tDescriptorProto_ExtensionRange_Start_field_name   protoreflect.Name = \"start\"\n\tDescriptorProto_ExtensionRange_End_field_name     protoreflect.Name = \"end\"\n\tDescriptorProto_ExtensionRange_Options_field_name protoreflect.Name = \"options\"\n\n\tDescriptorProto_ExtensionRange_Start_field_fullname   protoreflect.FullName = \"google.protobuf.DescriptorProto.ExtensionRange.start\"\n\tDescriptorProto_ExtensionRange_End_field_fullname     protoreflect.FullName = \"google.protobuf.DescriptorProto.ExtensionRange.end\"\n\tDescriptorProto_ExtensionRange_Options_field_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.ExtensionRange.options\"\n)\n\n// Field numbers for google.protobuf.DescriptorProto.ExtensionRange.\nconst (\n\tDescriptorProto_ExtensionRange_Start_field_number   protoreflect.FieldNumber = 1\n\tDescriptorProto_ExtensionRange_End_field_number     protoreflect.FieldNumber = 2\n\tDescriptorProto_ExtensionRange_Options_field_number protoreflect.FieldNumber = 3\n)\n\n// Names for google.protobuf.DescriptorProto.ReservedRange.\nconst (\n\tDescriptorProto_ReservedRange_message_name     protoreflect.Name     = \"ReservedRange\"\n\tDescriptorProto_ReservedRange_message_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.ReservedRange\"\n)\n\n// Field names for google.protobuf.DescriptorProto.ReservedRange.\nconst (\n\tDescriptorProto_ReservedRange_Start_field_name protoreflect.Name = \"start\"\n\tDescriptorProto_ReservedRange_End_field_name   protoreflect.Name = \"end\"\n\n\tDescriptorProto_ReservedRange_Start_field_fullname protoreflect.FullName = \"google.protobuf.DescriptorProto.ReservedRange.start\"\n\tDescriptorProto_ReservedRange_End_field_fullname   protoreflect.FullName = \"google.protobuf.DescriptorProto.ReservedRange.end\"\n)\n\n// Field numbers for google.protobuf.DescriptorProto.ReservedRange.\nconst (\n\tDescriptorProto_ReservedRange_Start_field_number protoreflect.FieldNumber = 1\n\tDescriptorProto_ReservedRange_End_field_number   protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.ExtensionRangeOptions.\nconst (\n\tExtensionRangeOptions_message_name     protoreflect.Name     = \"ExtensionRangeOptions\"\n\tExtensionRangeOptions_message_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions\"\n)\n\n// Field names for google.protobuf.ExtensionRangeOptions.\nconst (\n\tExtensionRangeOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\tExtensionRangeOptions_Declaration_field_name         protoreflect.Name = \"declaration\"\n\tExtensionRangeOptions_Verification_field_name        protoreflect.Name = \"verification\"\n\n\tExtensionRangeOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.uninterpreted_option\"\n\tExtensionRangeOptions_Declaration_field_fullname         protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.declaration\"\n\tExtensionRangeOptions_Verification_field_fullname        protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.verification\"\n)\n\n// Field numbers for google.protobuf.ExtensionRangeOptions.\nconst (\n\tExtensionRangeOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n\tExtensionRangeOptions_Declaration_field_number         protoreflect.FieldNumber = 2\n\tExtensionRangeOptions_Verification_field_number        protoreflect.FieldNumber = 3\n)\n\n// Full and short names for google.protobuf.ExtensionRangeOptions.VerificationState.\nconst (\n\tExtensionRangeOptions_VerificationState_enum_fullname = \"google.protobuf.ExtensionRangeOptions.VerificationState\"\n\tExtensionRangeOptions_VerificationState_enum_name     = \"VerificationState\"\n)\n\n// Names for google.protobuf.ExtensionRangeOptions.Declaration.\nconst (\n\tExtensionRangeOptions_Declaration_message_name     protoreflect.Name     = \"Declaration\"\n\tExtensionRangeOptions_Declaration_message_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration\"\n)\n\n// Field names for google.protobuf.ExtensionRangeOptions.Declaration.\nconst (\n\tExtensionRangeOptions_Declaration_Number_field_name     protoreflect.Name = \"number\"\n\tExtensionRangeOptions_Declaration_FullName_field_name   protoreflect.Name = \"full_name\"\n\tExtensionRangeOptions_Declaration_Type_field_name       protoreflect.Name = \"type\"\n\tExtensionRangeOptions_Declaration_IsRepeated_field_name protoreflect.Name = \"is_repeated\"\n\tExtensionRangeOptions_Declaration_Reserved_field_name   protoreflect.Name = \"reserved\"\n\tExtensionRangeOptions_Declaration_Repeated_field_name   protoreflect.Name = \"repeated\"\n\n\tExtensionRangeOptions_Declaration_Number_field_fullname     protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.number\"\n\tExtensionRangeOptions_Declaration_FullName_field_fullname   protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.full_name\"\n\tExtensionRangeOptions_Declaration_Type_field_fullname       protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.type\"\n\tExtensionRangeOptions_Declaration_IsRepeated_field_fullname protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.is_repeated\"\n\tExtensionRangeOptions_Declaration_Reserved_field_fullname   protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.reserved\"\n\tExtensionRangeOptions_Declaration_Repeated_field_fullname   protoreflect.FullName = \"google.protobuf.ExtensionRangeOptions.Declaration.repeated\"\n)\n\n// Field numbers for google.protobuf.ExtensionRangeOptions.Declaration.\nconst (\n\tExtensionRangeOptions_Declaration_Number_field_number     protoreflect.FieldNumber = 1\n\tExtensionRangeOptions_Declaration_FullName_field_number   protoreflect.FieldNumber = 2\n\tExtensionRangeOptions_Declaration_Type_field_number       protoreflect.FieldNumber = 3\n\tExtensionRangeOptions_Declaration_IsRepeated_field_number protoreflect.FieldNumber = 4\n\tExtensionRangeOptions_Declaration_Reserved_field_number   protoreflect.FieldNumber = 5\n\tExtensionRangeOptions_Declaration_Repeated_field_number   protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.FieldDescriptorProto.\nconst (\n\tFieldDescriptorProto_message_name     protoreflect.Name     = \"FieldDescriptorProto\"\n\tFieldDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.FieldDescriptorProto\"\n)\n\n// Field names for google.protobuf.FieldDescriptorProto.\nconst (\n\tFieldDescriptorProto_Name_field_name           protoreflect.Name = \"name\"\n\tFieldDescriptorProto_Number_field_name         protoreflect.Name = \"number\"\n\tFieldDescriptorProto_Label_field_name          protoreflect.Name = \"label\"\n\tFieldDescriptorProto_Type_field_name           protoreflect.Name = \"type\"\n\tFieldDescriptorProto_TypeName_field_name       protoreflect.Name = \"type_name\"\n\tFieldDescriptorProto_Extendee_field_name       protoreflect.Name = \"extendee\"\n\tFieldDescriptorProto_DefaultValue_field_name   protoreflect.Name = \"default_value\"\n\tFieldDescriptorProto_OneofIndex_field_name     protoreflect.Name = \"oneof_index\"\n\tFieldDescriptorProto_JsonName_field_name       protoreflect.Name = \"json_name\"\n\tFieldDescriptorProto_Options_field_name        protoreflect.Name = \"options\"\n\tFieldDescriptorProto_Proto3Optional_field_name protoreflect.Name = \"proto3_optional\"\n\n\tFieldDescriptorProto_Name_field_fullname           protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.name\"\n\tFieldDescriptorProto_Number_field_fullname         protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.number\"\n\tFieldDescriptorProto_Label_field_fullname          protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.label\"\n\tFieldDescriptorProto_Type_field_fullname           protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.type\"\n\tFieldDescriptorProto_TypeName_field_fullname       protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.type_name\"\n\tFieldDescriptorProto_Extendee_field_fullname       protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.extendee\"\n\tFieldDescriptorProto_DefaultValue_field_fullname   protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.default_value\"\n\tFieldDescriptorProto_OneofIndex_field_fullname     protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.oneof_index\"\n\tFieldDescriptorProto_JsonName_field_fullname       protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.json_name\"\n\tFieldDescriptorProto_Options_field_fullname        protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.options\"\n\tFieldDescriptorProto_Proto3Optional_field_fullname protoreflect.FullName = \"google.protobuf.FieldDescriptorProto.proto3_optional\"\n)\n\n// Field numbers for google.protobuf.FieldDescriptorProto.\nconst (\n\tFieldDescriptorProto_Name_field_number           protoreflect.FieldNumber = 1\n\tFieldDescriptorProto_Number_field_number         protoreflect.FieldNumber = 3\n\tFieldDescriptorProto_Label_field_number          protoreflect.FieldNumber = 4\n\tFieldDescriptorProto_Type_field_number           protoreflect.FieldNumber = 5\n\tFieldDescriptorProto_TypeName_field_number       protoreflect.FieldNumber = 6\n\tFieldDescriptorProto_Extendee_field_number       protoreflect.FieldNumber = 2\n\tFieldDescriptorProto_DefaultValue_field_number   protoreflect.FieldNumber = 7\n\tFieldDescriptorProto_OneofIndex_field_number     protoreflect.FieldNumber = 9\n\tFieldDescriptorProto_JsonName_field_number       protoreflect.FieldNumber = 10\n\tFieldDescriptorProto_Options_field_number        protoreflect.FieldNumber = 8\n\tFieldDescriptorProto_Proto3Optional_field_number protoreflect.FieldNumber = 17\n)\n\n// Full and short names for google.protobuf.FieldDescriptorProto.Type.\nconst (\n\tFieldDescriptorProto_Type_enum_fullname = \"google.protobuf.FieldDescriptorProto.Type\"\n\tFieldDescriptorProto_Type_enum_name     = \"Type\"\n)\n\n// Full and short names for google.protobuf.FieldDescriptorProto.Label.\nconst (\n\tFieldDescriptorProto_Label_enum_fullname = \"google.protobuf.FieldDescriptorProto.Label\"\n\tFieldDescriptorProto_Label_enum_name     = \"Label\"\n)\n\n// Names for google.protobuf.OneofDescriptorProto.\nconst (\n\tOneofDescriptorProto_message_name     protoreflect.Name     = \"OneofDescriptorProto\"\n\tOneofDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.OneofDescriptorProto\"\n)\n\n// Field names for google.protobuf.OneofDescriptorProto.\nconst (\n\tOneofDescriptorProto_Name_field_name    protoreflect.Name = \"name\"\n\tOneofDescriptorProto_Options_field_name protoreflect.Name = \"options\"\n\n\tOneofDescriptorProto_Name_field_fullname    protoreflect.FullName = \"google.protobuf.OneofDescriptorProto.name\"\n\tOneofDescriptorProto_Options_field_fullname protoreflect.FullName = \"google.protobuf.OneofDescriptorProto.options\"\n)\n\n// Field numbers for google.protobuf.OneofDescriptorProto.\nconst (\n\tOneofDescriptorProto_Name_field_number    protoreflect.FieldNumber = 1\n\tOneofDescriptorProto_Options_field_number protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.EnumDescriptorProto.\nconst (\n\tEnumDescriptorProto_message_name     protoreflect.Name     = \"EnumDescriptorProto\"\n\tEnumDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.EnumDescriptorProto\"\n)\n\n// Field names for google.protobuf.EnumDescriptorProto.\nconst (\n\tEnumDescriptorProto_Name_field_name          protoreflect.Name = \"name\"\n\tEnumDescriptorProto_Value_field_name         protoreflect.Name = \"value\"\n\tEnumDescriptorProto_Options_field_name       protoreflect.Name = \"options\"\n\tEnumDescriptorProto_ReservedRange_field_name protoreflect.Name = \"reserved_range\"\n\tEnumDescriptorProto_ReservedName_field_name  protoreflect.Name = \"reserved_name\"\n\n\tEnumDescriptorProto_Name_field_fullname          protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.name\"\n\tEnumDescriptorProto_Value_field_fullname         protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.value\"\n\tEnumDescriptorProto_Options_field_fullname       protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.options\"\n\tEnumDescriptorProto_ReservedRange_field_fullname protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.reserved_range\"\n\tEnumDescriptorProto_ReservedName_field_fullname  protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.reserved_name\"\n)\n\n// Field numbers for google.protobuf.EnumDescriptorProto.\nconst (\n\tEnumDescriptorProto_Name_field_number          protoreflect.FieldNumber = 1\n\tEnumDescriptorProto_Value_field_number         protoreflect.FieldNumber = 2\n\tEnumDescriptorProto_Options_field_number       protoreflect.FieldNumber = 3\n\tEnumDescriptorProto_ReservedRange_field_number protoreflect.FieldNumber = 4\n\tEnumDescriptorProto_ReservedName_field_number  protoreflect.FieldNumber = 5\n)\n\n// Names for google.protobuf.EnumDescriptorProto.EnumReservedRange.\nconst (\n\tEnumDescriptorProto_EnumReservedRange_message_name     protoreflect.Name     = \"EnumReservedRange\"\n\tEnumDescriptorProto_EnumReservedRange_message_fullname protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.EnumReservedRange\"\n)\n\n// Field names for google.protobuf.EnumDescriptorProto.EnumReservedRange.\nconst (\n\tEnumDescriptorProto_EnumReservedRange_Start_field_name protoreflect.Name = \"start\"\n\tEnumDescriptorProto_EnumReservedRange_End_field_name   protoreflect.Name = \"end\"\n\n\tEnumDescriptorProto_EnumReservedRange_Start_field_fullname protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.EnumReservedRange.start\"\n\tEnumDescriptorProto_EnumReservedRange_End_field_fullname   protoreflect.FullName = \"google.protobuf.EnumDescriptorProto.EnumReservedRange.end\"\n)\n\n// Field numbers for google.protobuf.EnumDescriptorProto.EnumReservedRange.\nconst (\n\tEnumDescriptorProto_EnumReservedRange_Start_field_number protoreflect.FieldNumber = 1\n\tEnumDescriptorProto_EnumReservedRange_End_field_number   protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.EnumValueDescriptorProto.\nconst (\n\tEnumValueDescriptorProto_message_name     protoreflect.Name     = \"EnumValueDescriptorProto\"\n\tEnumValueDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.EnumValueDescriptorProto\"\n)\n\n// Field names for google.protobuf.EnumValueDescriptorProto.\nconst (\n\tEnumValueDescriptorProto_Name_field_name    protoreflect.Name = \"name\"\n\tEnumValueDescriptorProto_Number_field_name  protoreflect.Name = \"number\"\n\tEnumValueDescriptorProto_Options_field_name protoreflect.Name = \"options\"\n\n\tEnumValueDescriptorProto_Name_field_fullname    protoreflect.FullName = \"google.protobuf.EnumValueDescriptorProto.name\"\n\tEnumValueDescriptorProto_Number_field_fullname  protoreflect.FullName = \"google.protobuf.EnumValueDescriptorProto.number\"\n\tEnumValueDescriptorProto_Options_field_fullname protoreflect.FullName = \"google.protobuf.EnumValueDescriptorProto.options\"\n)\n\n// Field numbers for google.protobuf.EnumValueDescriptorProto.\nconst (\n\tEnumValueDescriptorProto_Name_field_number    protoreflect.FieldNumber = 1\n\tEnumValueDescriptorProto_Number_field_number  protoreflect.FieldNumber = 2\n\tEnumValueDescriptorProto_Options_field_number protoreflect.FieldNumber = 3\n)\n\n// Names for google.protobuf.ServiceDescriptorProto.\nconst (\n\tServiceDescriptorProto_message_name     protoreflect.Name     = \"ServiceDescriptorProto\"\n\tServiceDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.ServiceDescriptorProto\"\n)\n\n// Field names for google.protobuf.ServiceDescriptorProto.\nconst (\n\tServiceDescriptorProto_Name_field_name    protoreflect.Name = \"name\"\n\tServiceDescriptorProto_Method_field_name  protoreflect.Name = \"method\"\n\tServiceDescriptorProto_Options_field_name protoreflect.Name = \"options\"\n\n\tServiceDescriptorProto_Name_field_fullname    protoreflect.FullName = \"google.protobuf.ServiceDescriptorProto.name\"\n\tServiceDescriptorProto_Method_field_fullname  protoreflect.FullName = \"google.protobuf.ServiceDescriptorProto.method\"\n\tServiceDescriptorProto_Options_field_fullname protoreflect.FullName = \"google.protobuf.ServiceDescriptorProto.options\"\n)\n\n// Field numbers for google.protobuf.ServiceDescriptorProto.\nconst (\n\tServiceDescriptorProto_Name_field_number    protoreflect.FieldNumber = 1\n\tServiceDescriptorProto_Method_field_number  protoreflect.FieldNumber = 2\n\tServiceDescriptorProto_Options_field_number protoreflect.FieldNumber = 3\n)\n\n// Names for google.protobuf.MethodDescriptorProto.\nconst (\n\tMethodDescriptorProto_message_name     protoreflect.Name     = \"MethodDescriptorProto\"\n\tMethodDescriptorProto_message_fullname protoreflect.FullName = \"google.protobuf.MethodDescriptorProto\"\n)\n\n// Field names for google.protobuf.MethodDescriptorProto.\nconst (\n\tMethodDescriptorProto_Name_field_name            protoreflect.Name = \"name\"\n\tMethodDescriptorProto_InputType_field_name       protoreflect.Name = \"input_type\"\n\tMethodDescriptorProto_OutputType_field_name      protoreflect.Name = \"output_type\"\n\tMethodDescriptorProto_Options_field_name         protoreflect.Name = \"options\"\n\tMethodDescriptorProto_ClientStreaming_field_name protoreflect.Name = \"client_streaming\"\n\tMethodDescriptorProto_ServerStreaming_field_name protoreflect.Name = \"server_streaming\"\n\n\tMethodDescriptorProto_Name_field_fullname            protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.name\"\n\tMethodDescriptorProto_InputType_field_fullname       protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.input_type\"\n\tMethodDescriptorProto_OutputType_field_fullname      protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.output_type\"\n\tMethodDescriptorProto_Options_field_fullname         protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.options\"\n\tMethodDescriptorProto_ClientStreaming_field_fullname protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.client_streaming\"\n\tMethodDescriptorProto_ServerStreaming_field_fullname protoreflect.FullName = \"google.protobuf.MethodDescriptorProto.server_streaming\"\n)\n\n// Field numbers for google.protobuf.MethodDescriptorProto.\nconst (\n\tMethodDescriptorProto_Name_field_number            protoreflect.FieldNumber = 1\n\tMethodDescriptorProto_InputType_field_number       protoreflect.FieldNumber = 2\n\tMethodDescriptorProto_OutputType_field_number      protoreflect.FieldNumber = 3\n\tMethodDescriptorProto_Options_field_number         protoreflect.FieldNumber = 4\n\tMethodDescriptorProto_ClientStreaming_field_number protoreflect.FieldNumber = 5\n\tMethodDescriptorProto_ServerStreaming_field_number protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.FileOptions.\nconst (\n\tFileOptions_message_name     protoreflect.Name     = \"FileOptions\"\n\tFileOptions_message_fullname protoreflect.FullName = \"google.protobuf.FileOptions\"\n)\n\n// Field names for google.protobuf.FileOptions.\nconst (\n\tFileOptions_JavaPackage_field_name               protoreflect.Name = \"java_package\"\n\tFileOptions_JavaOuterClassname_field_name        protoreflect.Name = \"java_outer_classname\"\n\tFileOptions_JavaMultipleFiles_field_name         protoreflect.Name = \"java_multiple_files\"\n\tFileOptions_JavaGenerateEqualsAndHash_field_name protoreflect.Name = \"java_generate_equals_and_hash\"\n\tFileOptions_JavaStringCheckUtf8_field_name       protoreflect.Name = \"java_string_check_utf8\"\n\tFileOptions_OptimizeFor_field_name               protoreflect.Name = \"optimize_for\"\n\tFileOptions_GoPackage_field_name                 protoreflect.Name = \"go_package\"\n\tFileOptions_CcGenericServices_field_name         protoreflect.Name = \"cc_generic_services\"\n\tFileOptions_JavaGenericServices_field_name       protoreflect.Name = \"java_generic_services\"\n\tFileOptions_PyGenericServices_field_name         protoreflect.Name = \"py_generic_services\"\n\tFileOptions_PhpGenericServices_field_name        protoreflect.Name = \"php_generic_services\"\n\tFileOptions_Deprecated_field_name                protoreflect.Name = \"deprecated\"\n\tFileOptions_CcEnableArenas_field_name            protoreflect.Name = \"cc_enable_arenas\"\n\tFileOptions_ObjcClassPrefix_field_name           protoreflect.Name = \"objc_class_prefix\"\n\tFileOptions_CsharpNamespace_field_name           protoreflect.Name = \"csharp_namespace\"\n\tFileOptions_SwiftPrefix_field_name               protoreflect.Name = \"swift_prefix\"\n\tFileOptions_PhpClassPrefix_field_name            protoreflect.Name = \"php_class_prefix\"\n\tFileOptions_PhpNamespace_field_name              protoreflect.Name = \"php_namespace\"\n\tFileOptions_PhpMetadataNamespace_field_name      protoreflect.Name = \"php_metadata_namespace\"\n\tFileOptions_RubyPackage_field_name               protoreflect.Name = \"ruby_package\"\n\tFileOptions_UninterpretedOption_field_name       protoreflect.Name = \"uninterpreted_option\"\n\n\tFileOptions_JavaPackage_field_fullname               protoreflect.FullName = \"google.protobuf.FileOptions.java_package\"\n\tFileOptions_JavaOuterClassname_field_fullname        protoreflect.FullName = \"google.protobuf.FileOptions.java_outer_classname\"\n\tFileOptions_JavaMultipleFiles_field_fullname         protoreflect.FullName = \"google.protobuf.FileOptions.java_multiple_files\"\n\tFileOptions_JavaGenerateEqualsAndHash_field_fullname protoreflect.FullName = \"google.protobuf.FileOptions.java_generate_equals_and_hash\"\n\tFileOptions_JavaStringCheckUtf8_field_fullname       protoreflect.FullName = \"google.protobuf.FileOptions.java_string_check_utf8\"\n\tFileOptions_OptimizeFor_field_fullname               protoreflect.FullName = \"google.protobuf.FileOptions.optimize_for\"\n\tFileOptions_GoPackage_field_fullname                 protoreflect.FullName = \"google.protobuf.FileOptions.go_package\"\n\tFileOptions_CcGenericServices_field_fullname         protoreflect.FullName = \"google.protobuf.FileOptions.cc_generic_services\"\n\tFileOptions_JavaGenericServices_field_fullname       protoreflect.FullName = \"google.protobuf.FileOptions.java_generic_services\"\n\tFileOptions_PyGenericServices_field_fullname         protoreflect.FullName = \"google.protobuf.FileOptions.py_generic_services\"\n\tFileOptions_PhpGenericServices_field_fullname        protoreflect.FullName = \"google.protobuf.FileOptions.php_generic_services\"\n\tFileOptions_Deprecated_field_fullname                protoreflect.FullName = \"google.protobuf.FileOptions.deprecated\"\n\tFileOptions_CcEnableArenas_field_fullname            protoreflect.FullName = \"google.protobuf.FileOptions.cc_enable_arenas\"\n\tFileOptions_ObjcClassPrefix_field_fullname           protoreflect.FullName = \"google.protobuf.FileOptions.objc_class_prefix\"\n\tFileOptions_CsharpNamespace_field_fullname           protoreflect.FullName = \"google.protobuf.FileOptions.csharp_namespace\"\n\tFileOptions_SwiftPrefix_field_fullname               protoreflect.FullName = \"google.protobuf.FileOptions.swift_prefix\"\n\tFileOptions_PhpClassPrefix_field_fullname            protoreflect.FullName = \"google.protobuf.FileOptions.php_class_prefix\"\n\tFileOptions_PhpNamespace_field_fullname              protoreflect.FullName = \"google.protobuf.FileOptions.php_namespace\"\n\tFileOptions_PhpMetadataNamespace_field_fullname      protoreflect.FullName = \"google.protobuf.FileOptions.php_metadata_namespace\"\n\tFileOptions_RubyPackage_field_fullname               protoreflect.FullName = \"google.protobuf.FileOptions.ruby_package\"\n\tFileOptions_UninterpretedOption_field_fullname       protoreflect.FullName = \"google.protobuf.FileOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.FileOptions.\nconst (\n\tFileOptions_JavaPackage_field_number               protoreflect.FieldNumber = 1\n\tFileOptions_JavaOuterClassname_field_number        protoreflect.FieldNumber = 8\n\tFileOptions_JavaMultipleFiles_field_number         protoreflect.FieldNumber = 10\n\tFileOptions_JavaGenerateEqualsAndHash_field_number protoreflect.FieldNumber = 20\n\tFileOptions_JavaStringCheckUtf8_field_number       protoreflect.FieldNumber = 27\n\tFileOptions_OptimizeFor_field_number               protoreflect.FieldNumber = 9\n\tFileOptions_GoPackage_field_number                 protoreflect.FieldNumber = 11\n\tFileOptions_CcGenericServices_field_number         protoreflect.FieldNumber = 16\n\tFileOptions_JavaGenericServices_field_number       protoreflect.FieldNumber = 17\n\tFileOptions_PyGenericServices_field_number         protoreflect.FieldNumber = 18\n\tFileOptions_PhpGenericServices_field_number        protoreflect.FieldNumber = 42\n\tFileOptions_Deprecated_field_number                protoreflect.FieldNumber = 23\n\tFileOptions_CcEnableArenas_field_number            protoreflect.FieldNumber = 31\n\tFileOptions_ObjcClassPrefix_field_number           protoreflect.FieldNumber = 36\n\tFileOptions_CsharpNamespace_field_number           protoreflect.FieldNumber = 37\n\tFileOptions_SwiftPrefix_field_number               protoreflect.FieldNumber = 39\n\tFileOptions_PhpClassPrefix_field_number            protoreflect.FieldNumber = 40\n\tFileOptions_PhpNamespace_field_number              protoreflect.FieldNumber = 41\n\tFileOptions_PhpMetadataNamespace_field_number      protoreflect.FieldNumber = 44\n\tFileOptions_RubyPackage_field_number               protoreflect.FieldNumber = 45\n\tFileOptions_UninterpretedOption_field_number       protoreflect.FieldNumber = 999\n)\n\n// Full and short names for google.protobuf.FileOptions.OptimizeMode.\nconst (\n\tFileOptions_OptimizeMode_enum_fullname = \"google.protobuf.FileOptions.OptimizeMode\"\n\tFileOptions_OptimizeMode_enum_name     = \"OptimizeMode\"\n)\n\n// Names for google.protobuf.MessageOptions.\nconst (\n\tMessageOptions_message_name     protoreflect.Name     = \"MessageOptions\"\n\tMessageOptions_message_fullname protoreflect.FullName = \"google.protobuf.MessageOptions\"\n)\n\n// Field names for google.protobuf.MessageOptions.\nconst (\n\tMessageOptions_MessageSetWireFormat_field_name               protoreflect.Name = \"message_set_wire_format\"\n\tMessageOptions_NoStandardDescriptorAccessor_field_name       protoreflect.Name = \"no_standard_descriptor_accessor\"\n\tMessageOptions_Deprecated_field_name                         protoreflect.Name = \"deprecated\"\n\tMessageOptions_MapEntry_field_name                           protoreflect.Name = \"map_entry\"\n\tMessageOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = \"deprecated_legacy_json_field_conflicts\"\n\tMessageOptions_UninterpretedOption_field_name                protoreflect.Name = \"uninterpreted_option\"\n\n\tMessageOptions_MessageSetWireFormat_field_fullname               protoreflect.FullName = \"google.protobuf.MessageOptions.message_set_wire_format\"\n\tMessageOptions_NoStandardDescriptorAccessor_field_fullname       protoreflect.FullName = \"google.protobuf.MessageOptions.no_standard_descriptor_accessor\"\n\tMessageOptions_Deprecated_field_fullname                         protoreflect.FullName = \"google.protobuf.MessageOptions.deprecated\"\n\tMessageOptions_MapEntry_field_fullname                           protoreflect.FullName = \"google.protobuf.MessageOptions.map_entry\"\n\tMessageOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = \"google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts\"\n\tMessageOptions_UninterpretedOption_field_fullname                protoreflect.FullName = \"google.protobuf.MessageOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.MessageOptions.\nconst (\n\tMessageOptions_MessageSetWireFormat_field_number               protoreflect.FieldNumber = 1\n\tMessageOptions_NoStandardDescriptorAccessor_field_number       protoreflect.FieldNumber = 2\n\tMessageOptions_Deprecated_field_number                         protoreflect.FieldNumber = 3\n\tMessageOptions_MapEntry_field_number                           protoreflect.FieldNumber = 7\n\tMessageOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 11\n\tMessageOptions_UninterpretedOption_field_number                protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.FieldOptions.\nconst (\n\tFieldOptions_message_name     protoreflect.Name     = \"FieldOptions\"\n\tFieldOptions_message_fullname protoreflect.FullName = \"google.protobuf.FieldOptions\"\n)\n\n// Field names for google.protobuf.FieldOptions.\nconst (\n\tFieldOptions_Ctype_field_name               protoreflect.Name = \"ctype\"\n\tFieldOptions_Packed_field_name              protoreflect.Name = \"packed\"\n\tFieldOptions_Jstype_field_name              protoreflect.Name = \"jstype\"\n\tFieldOptions_Lazy_field_name                protoreflect.Name = \"lazy\"\n\tFieldOptions_UnverifiedLazy_field_name      protoreflect.Name = \"unverified_lazy\"\n\tFieldOptions_Deprecated_field_name          protoreflect.Name = \"deprecated\"\n\tFieldOptions_Weak_field_name                protoreflect.Name = \"weak\"\n\tFieldOptions_DebugRedact_field_name         protoreflect.Name = \"debug_redact\"\n\tFieldOptions_Retention_field_name           protoreflect.Name = \"retention\"\n\tFieldOptions_Target_field_name              protoreflect.Name = \"target\"\n\tFieldOptions_Targets_field_name             protoreflect.Name = \"targets\"\n\tFieldOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tFieldOptions_Ctype_field_fullname               protoreflect.FullName = \"google.protobuf.FieldOptions.ctype\"\n\tFieldOptions_Packed_field_fullname              protoreflect.FullName = \"google.protobuf.FieldOptions.packed\"\n\tFieldOptions_Jstype_field_fullname              protoreflect.FullName = \"google.protobuf.FieldOptions.jstype\"\n\tFieldOptions_Lazy_field_fullname                protoreflect.FullName = \"google.protobuf.FieldOptions.lazy\"\n\tFieldOptions_UnverifiedLazy_field_fullname      protoreflect.FullName = \"google.protobuf.FieldOptions.unverified_lazy\"\n\tFieldOptions_Deprecated_field_fullname          protoreflect.FullName = \"google.protobuf.FieldOptions.deprecated\"\n\tFieldOptions_Weak_field_fullname                protoreflect.FullName = \"google.protobuf.FieldOptions.weak\"\n\tFieldOptions_DebugRedact_field_fullname         protoreflect.FullName = \"google.protobuf.FieldOptions.debug_redact\"\n\tFieldOptions_Retention_field_fullname           protoreflect.FullName = \"google.protobuf.FieldOptions.retention\"\n\tFieldOptions_Target_field_fullname              protoreflect.FullName = \"google.protobuf.FieldOptions.target\"\n\tFieldOptions_Targets_field_fullname             protoreflect.FullName = \"google.protobuf.FieldOptions.targets\"\n\tFieldOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.FieldOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.FieldOptions.\nconst (\n\tFieldOptions_Ctype_field_number               protoreflect.FieldNumber = 1\n\tFieldOptions_Packed_field_number              protoreflect.FieldNumber = 2\n\tFieldOptions_Jstype_field_number              protoreflect.FieldNumber = 6\n\tFieldOptions_Lazy_field_number                protoreflect.FieldNumber = 5\n\tFieldOptions_UnverifiedLazy_field_number      protoreflect.FieldNumber = 15\n\tFieldOptions_Deprecated_field_number          protoreflect.FieldNumber = 3\n\tFieldOptions_Weak_field_number                protoreflect.FieldNumber = 10\n\tFieldOptions_DebugRedact_field_number         protoreflect.FieldNumber = 16\n\tFieldOptions_Retention_field_number           protoreflect.FieldNumber = 17\n\tFieldOptions_Target_field_number              protoreflect.FieldNumber = 18\n\tFieldOptions_Targets_field_number             protoreflect.FieldNumber = 19\n\tFieldOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Full and short names for google.protobuf.FieldOptions.CType.\nconst (\n\tFieldOptions_CType_enum_fullname = \"google.protobuf.FieldOptions.CType\"\n\tFieldOptions_CType_enum_name     = \"CType\"\n)\n\n// Full and short names for google.protobuf.FieldOptions.JSType.\nconst (\n\tFieldOptions_JSType_enum_fullname = \"google.protobuf.FieldOptions.JSType\"\n\tFieldOptions_JSType_enum_name     = \"JSType\"\n)\n\n// Full and short names for google.protobuf.FieldOptions.OptionRetention.\nconst (\n\tFieldOptions_OptionRetention_enum_fullname = \"google.protobuf.FieldOptions.OptionRetention\"\n\tFieldOptions_OptionRetention_enum_name     = \"OptionRetention\"\n)\n\n// Full and short names for google.protobuf.FieldOptions.OptionTargetType.\nconst (\n\tFieldOptions_OptionTargetType_enum_fullname = \"google.protobuf.FieldOptions.OptionTargetType\"\n\tFieldOptions_OptionTargetType_enum_name     = \"OptionTargetType\"\n)\n\n// Names for google.protobuf.OneofOptions.\nconst (\n\tOneofOptions_message_name     protoreflect.Name     = \"OneofOptions\"\n\tOneofOptions_message_fullname protoreflect.FullName = \"google.protobuf.OneofOptions\"\n)\n\n// Field names for google.protobuf.OneofOptions.\nconst (\n\tOneofOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tOneofOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.OneofOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.OneofOptions.\nconst (\n\tOneofOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.EnumOptions.\nconst (\n\tEnumOptions_message_name     protoreflect.Name     = \"EnumOptions\"\n\tEnumOptions_message_fullname protoreflect.FullName = \"google.protobuf.EnumOptions\"\n)\n\n// Field names for google.protobuf.EnumOptions.\nconst (\n\tEnumOptions_AllowAlias_field_name                         protoreflect.Name = \"allow_alias\"\n\tEnumOptions_Deprecated_field_name                         protoreflect.Name = \"deprecated\"\n\tEnumOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = \"deprecated_legacy_json_field_conflicts\"\n\tEnumOptions_UninterpretedOption_field_name                protoreflect.Name = \"uninterpreted_option\"\n\n\tEnumOptions_AllowAlias_field_fullname                         protoreflect.FullName = \"google.protobuf.EnumOptions.allow_alias\"\n\tEnumOptions_Deprecated_field_fullname                         protoreflect.FullName = \"google.protobuf.EnumOptions.deprecated\"\n\tEnumOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = \"google.protobuf.EnumOptions.deprecated_legacy_json_field_conflicts\"\n\tEnumOptions_UninterpretedOption_field_fullname                protoreflect.FullName = \"google.protobuf.EnumOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.EnumOptions.\nconst (\n\tEnumOptions_AllowAlias_field_number                         protoreflect.FieldNumber = 2\n\tEnumOptions_Deprecated_field_number                         protoreflect.FieldNumber = 3\n\tEnumOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 6\n\tEnumOptions_UninterpretedOption_field_number                protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.EnumValueOptions.\nconst (\n\tEnumValueOptions_message_name     protoreflect.Name     = \"EnumValueOptions\"\n\tEnumValueOptions_message_fullname protoreflect.FullName = \"google.protobuf.EnumValueOptions\"\n)\n\n// Field names for google.protobuf.EnumValueOptions.\nconst (\n\tEnumValueOptions_Deprecated_field_name          protoreflect.Name = \"deprecated\"\n\tEnumValueOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tEnumValueOptions_Deprecated_field_fullname          protoreflect.FullName = \"google.protobuf.EnumValueOptions.deprecated\"\n\tEnumValueOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.EnumValueOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.EnumValueOptions.\nconst (\n\tEnumValueOptions_Deprecated_field_number          protoreflect.FieldNumber = 1\n\tEnumValueOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.ServiceOptions.\nconst (\n\tServiceOptions_message_name     protoreflect.Name     = \"ServiceOptions\"\n\tServiceOptions_message_fullname protoreflect.FullName = \"google.protobuf.ServiceOptions\"\n)\n\n// Field names for google.protobuf.ServiceOptions.\nconst (\n\tServiceOptions_Deprecated_field_name          protoreflect.Name = \"deprecated\"\n\tServiceOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tServiceOptions_Deprecated_field_fullname          protoreflect.FullName = \"google.protobuf.ServiceOptions.deprecated\"\n\tServiceOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.ServiceOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.ServiceOptions.\nconst (\n\tServiceOptions_Deprecated_field_number          protoreflect.FieldNumber = 33\n\tServiceOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Names for google.protobuf.MethodOptions.\nconst (\n\tMethodOptions_message_name     protoreflect.Name     = \"MethodOptions\"\n\tMethodOptions_message_fullname protoreflect.FullName = \"google.protobuf.MethodOptions\"\n)\n\n// Field names for google.protobuf.MethodOptions.\nconst (\n\tMethodOptions_Deprecated_field_name          protoreflect.Name = \"deprecated\"\n\tMethodOptions_IdempotencyLevel_field_name    protoreflect.Name = \"idempotency_level\"\n\tMethodOptions_UninterpretedOption_field_name protoreflect.Name = \"uninterpreted_option\"\n\n\tMethodOptions_Deprecated_field_fullname          protoreflect.FullName = \"google.protobuf.MethodOptions.deprecated\"\n\tMethodOptions_IdempotencyLevel_field_fullname    protoreflect.FullName = \"google.protobuf.MethodOptions.idempotency_level\"\n\tMethodOptions_UninterpretedOption_field_fullname protoreflect.FullName = \"google.protobuf.MethodOptions.uninterpreted_option\"\n)\n\n// Field numbers for google.protobuf.MethodOptions.\nconst (\n\tMethodOptions_Deprecated_field_number          protoreflect.FieldNumber = 33\n\tMethodOptions_IdempotencyLevel_field_number    protoreflect.FieldNumber = 34\n\tMethodOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999\n)\n\n// Full and short names for google.protobuf.MethodOptions.IdempotencyLevel.\nconst (\n\tMethodOptions_IdempotencyLevel_enum_fullname = \"google.protobuf.MethodOptions.IdempotencyLevel\"\n\tMethodOptions_IdempotencyLevel_enum_name     = \"IdempotencyLevel\"\n)\n\n// Names for google.protobuf.UninterpretedOption.\nconst (\n\tUninterpretedOption_message_name     protoreflect.Name     = \"UninterpretedOption\"\n\tUninterpretedOption_message_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption\"\n)\n\n// Field names for google.protobuf.UninterpretedOption.\nconst (\n\tUninterpretedOption_Name_field_name             protoreflect.Name = \"name\"\n\tUninterpretedOption_IdentifierValue_field_name  protoreflect.Name = \"identifier_value\"\n\tUninterpretedOption_PositiveIntValue_field_name protoreflect.Name = \"positive_int_value\"\n\tUninterpretedOption_NegativeIntValue_field_name protoreflect.Name = \"negative_int_value\"\n\tUninterpretedOption_DoubleValue_field_name      protoreflect.Name = \"double_value\"\n\tUninterpretedOption_StringValue_field_name      protoreflect.Name = \"string_value\"\n\tUninterpretedOption_AggregateValue_field_name   protoreflect.Name = \"aggregate_value\"\n\n\tUninterpretedOption_Name_field_fullname             protoreflect.FullName = \"google.protobuf.UninterpretedOption.name\"\n\tUninterpretedOption_IdentifierValue_field_fullname  protoreflect.FullName = \"google.protobuf.UninterpretedOption.identifier_value\"\n\tUninterpretedOption_PositiveIntValue_field_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption.positive_int_value\"\n\tUninterpretedOption_NegativeIntValue_field_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption.negative_int_value\"\n\tUninterpretedOption_DoubleValue_field_fullname      protoreflect.FullName = \"google.protobuf.UninterpretedOption.double_value\"\n\tUninterpretedOption_StringValue_field_fullname      protoreflect.FullName = \"google.protobuf.UninterpretedOption.string_value\"\n\tUninterpretedOption_AggregateValue_field_fullname   protoreflect.FullName = \"google.protobuf.UninterpretedOption.aggregate_value\"\n)\n\n// Field numbers for google.protobuf.UninterpretedOption.\nconst (\n\tUninterpretedOption_Name_field_number             protoreflect.FieldNumber = 2\n\tUninterpretedOption_IdentifierValue_field_number  protoreflect.FieldNumber = 3\n\tUninterpretedOption_PositiveIntValue_field_number protoreflect.FieldNumber = 4\n\tUninterpretedOption_NegativeIntValue_field_number protoreflect.FieldNumber = 5\n\tUninterpretedOption_DoubleValue_field_number      protoreflect.FieldNumber = 6\n\tUninterpretedOption_StringValue_field_number      protoreflect.FieldNumber = 7\n\tUninterpretedOption_AggregateValue_field_number   protoreflect.FieldNumber = 8\n)\n\n// Names for google.protobuf.UninterpretedOption.NamePart.\nconst (\n\tUninterpretedOption_NamePart_message_name     protoreflect.Name     = \"NamePart\"\n\tUninterpretedOption_NamePart_message_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption.NamePart\"\n)\n\n// Field names for google.protobuf.UninterpretedOption.NamePart.\nconst (\n\tUninterpretedOption_NamePart_NamePart_field_name    protoreflect.Name = \"name_part\"\n\tUninterpretedOption_NamePart_IsExtension_field_name protoreflect.Name = \"is_extension\"\n\n\tUninterpretedOption_NamePart_NamePart_field_fullname    protoreflect.FullName = \"google.protobuf.UninterpretedOption.NamePart.name_part\"\n\tUninterpretedOption_NamePart_IsExtension_field_fullname protoreflect.FullName = \"google.protobuf.UninterpretedOption.NamePart.is_extension\"\n)\n\n// Field numbers for google.protobuf.UninterpretedOption.NamePart.\nconst (\n\tUninterpretedOption_NamePart_NamePart_field_number    protoreflect.FieldNumber = 1\n\tUninterpretedOption_NamePart_IsExtension_field_number protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.SourceCodeInfo.\nconst (\n\tSourceCodeInfo_message_name     protoreflect.Name     = \"SourceCodeInfo\"\n\tSourceCodeInfo_message_fullname protoreflect.FullName = \"google.protobuf.SourceCodeInfo\"\n)\n\n// Field names for google.protobuf.SourceCodeInfo.\nconst (\n\tSourceCodeInfo_Location_field_name protoreflect.Name = \"location\"\n\n\tSourceCodeInfo_Location_field_fullname protoreflect.FullName = \"google.protobuf.SourceCodeInfo.location\"\n)\n\n// Field numbers for google.protobuf.SourceCodeInfo.\nconst (\n\tSourceCodeInfo_Location_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.SourceCodeInfo.Location.\nconst (\n\tSourceCodeInfo_Location_message_name     protoreflect.Name     = \"Location\"\n\tSourceCodeInfo_Location_message_fullname protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location\"\n)\n\n// Field names for google.protobuf.SourceCodeInfo.Location.\nconst (\n\tSourceCodeInfo_Location_Path_field_name                    protoreflect.Name = \"path\"\n\tSourceCodeInfo_Location_Span_field_name                    protoreflect.Name = \"span\"\n\tSourceCodeInfo_Location_LeadingComments_field_name         protoreflect.Name = \"leading_comments\"\n\tSourceCodeInfo_Location_TrailingComments_field_name        protoreflect.Name = \"trailing_comments\"\n\tSourceCodeInfo_Location_LeadingDetachedComments_field_name protoreflect.Name = \"leading_detached_comments\"\n\n\tSourceCodeInfo_Location_Path_field_fullname                    protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.path\"\n\tSourceCodeInfo_Location_Span_field_fullname                    protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.span\"\n\tSourceCodeInfo_Location_LeadingComments_field_fullname         protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.leading_comments\"\n\tSourceCodeInfo_Location_TrailingComments_field_fullname        protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.trailing_comments\"\n\tSourceCodeInfo_Location_LeadingDetachedComments_field_fullname protoreflect.FullName = \"google.protobuf.SourceCodeInfo.Location.leading_detached_comments\"\n)\n\n// Field numbers for google.protobuf.SourceCodeInfo.Location.\nconst (\n\tSourceCodeInfo_Location_Path_field_number                    protoreflect.FieldNumber = 1\n\tSourceCodeInfo_Location_Span_field_number                    protoreflect.FieldNumber = 2\n\tSourceCodeInfo_Location_LeadingComments_field_number         protoreflect.FieldNumber = 3\n\tSourceCodeInfo_Location_TrailingComments_field_number        protoreflect.FieldNumber = 4\n\tSourceCodeInfo_Location_LeadingDetachedComments_field_number protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.GeneratedCodeInfo.\nconst (\n\tGeneratedCodeInfo_message_name     protoreflect.Name     = \"GeneratedCodeInfo\"\n\tGeneratedCodeInfo_message_fullname protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo\"\n)\n\n// Field names for google.protobuf.GeneratedCodeInfo.\nconst (\n\tGeneratedCodeInfo_Annotation_field_name protoreflect.Name = \"annotation\"\n\n\tGeneratedCodeInfo_Annotation_field_fullname protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.annotation\"\n)\n\n// Field numbers for google.protobuf.GeneratedCodeInfo.\nconst (\n\tGeneratedCodeInfo_Annotation_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.GeneratedCodeInfo.Annotation.\nconst (\n\tGeneratedCodeInfo_Annotation_message_name     protoreflect.Name     = \"Annotation\"\n\tGeneratedCodeInfo_Annotation_message_fullname protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation\"\n)\n\n// Field names for google.protobuf.GeneratedCodeInfo.Annotation.\nconst (\n\tGeneratedCodeInfo_Annotation_Path_field_name       protoreflect.Name = \"path\"\n\tGeneratedCodeInfo_Annotation_SourceFile_field_name protoreflect.Name = \"source_file\"\n\tGeneratedCodeInfo_Annotation_Begin_field_name      protoreflect.Name = \"begin\"\n\tGeneratedCodeInfo_Annotation_End_field_name        protoreflect.Name = \"end\"\n\tGeneratedCodeInfo_Annotation_Semantic_field_name   protoreflect.Name = \"semantic\"\n\n\tGeneratedCodeInfo_Annotation_Path_field_fullname       protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.path\"\n\tGeneratedCodeInfo_Annotation_SourceFile_field_fullname protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.source_file\"\n\tGeneratedCodeInfo_Annotation_Begin_field_fullname      protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.begin\"\n\tGeneratedCodeInfo_Annotation_End_field_fullname        protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.end\"\n\tGeneratedCodeInfo_Annotation_Semantic_field_fullname   protoreflect.FullName = \"google.protobuf.GeneratedCodeInfo.Annotation.semantic\"\n)\n\n// Field numbers for google.protobuf.GeneratedCodeInfo.Annotation.\nconst (\n\tGeneratedCodeInfo_Annotation_Path_field_number       protoreflect.FieldNumber = 1\n\tGeneratedCodeInfo_Annotation_SourceFile_field_number protoreflect.FieldNumber = 2\n\tGeneratedCodeInfo_Annotation_Begin_field_number      protoreflect.FieldNumber = 3\n\tGeneratedCodeInfo_Annotation_End_field_number        protoreflect.FieldNumber = 4\n\tGeneratedCodeInfo_Annotation_Semantic_field_number   protoreflect.FieldNumber = 5\n)\n\n// Full and short names for google.protobuf.GeneratedCodeInfo.Annotation.Semantic.\nconst (\n\tGeneratedCodeInfo_Annotation_Semantic_enum_fullname = \"google.protobuf.GeneratedCodeInfo.Annotation.Semantic\"\n\tGeneratedCodeInfo_Annotation_Semantic_enum_name     = \"Semantic\"\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/doc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package genid contains constants for declarations in descriptor.proto\n// and the well-known types.\npackage genid\n\nimport protoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\nconst GoogleProtobuf_package protoreflect.FullName = \"google.protobuf\"\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/duration_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_duration_proto = \"google/protobuf/duration.proto\"\n\n// Names for google.protobuf.Duration.\nconst (\n\tDuration_message_name     protoreflect.Name     = \"Duration\"\n\tDuration_message_fullname protoreflect.FullName = \"google.protobuf.Duration\"\n)\n\n// Field names for google.protobuf.Duration.\nconst (\n\tDuration_Seconds_field_name protoreflect.Name = \"seconds\"\n\tDuration_Nanos_field_name   protoreflect.Name = \"nanos\"\n\n\tDuration_Seconds_field_fullname protoreflect.FullName = \"google.protobuf.Duration.seconds\"\n\tDuration_Nanos_field_fullname   protoreflect.FullName = \"google.protobuf.Duration.nanos\"\n)\n\n// Field numbers for google.protobuf.Duration.\nconst (\n\tDuration_Seconds_field_number protoreflect.FieldNumber = 1\n\tDuration_Nanos_field_number   protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/empty_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_empty_proto = \"google/protobuf/empty.proto\"\n\n// Names for google.protobuf.Empty.\nconst (\n\tEmpty_message_name     protoreflect.Name     = \"Empty\"\n\tEmpty_message_fullname protoreflect.FullName = \"google.protobuf.Empty\"\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_field_mask_proto = \"google/protobuf/field_mask.proto\"\n\n// Names for google.protobuf.FieldMask.\nconst (\n\tFieldMask_message_name     protoreflect.Name     = \"FieldMask\"\n\tFieldMask_message_fullname protoreflect.FullName = \"google.protobuf.FieldMask\"\n)\n\n// Field names for google.protobuf.FieldMask.\nconst (\n\tFieldMask_Paths_field_name protoreflect.Name = \"paths\"\n\n\tFieldMask_Paths_field_fullname protoreflect.FullName = \"google.protobuf.FieldMask.paths\"\n)\n\n// Field numbers for google.protobuf.FieldMask.\nconst (\n\tFieldMask_Paths_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/goname.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage genid\n\n// Go names of implementation-specific struct fields in generated messages.\nconst (\n\tState_goname = \"state\"\n\n\tSizeCache_goname  = \"sizeCache\"\n\tSizeCacheA_goname = \"XXX_sizecache\"\n\n\tWeakFields_goname  = \"weakFields\"\n\tWeakFieldsA_goname = \"XXX_weak\"\n\n\tUnknownFields_goname  = \"unknownFields\"\n\tUnknownFieldsA_goname = \"XXX_unrecognized\"\n\n\tExtensionFields_goname  = \"extensionFields\"\n\tExtensionFieldsA_goname = \"XXX_InternalExtensions\"\n\tExtensionFieldsB_goname = \"XXX_extensions\"\n\n\tWeakFieldPrefix_goname = \"XXX_weak_\"\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/map_entry.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage genid\n\nimport protoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\n// Generic field names and numbers for synthetic map entry messages.\nconst (\n\tMapEntry_Key_field_name   protoreflect.Name = \"key\"\n\tMapEntry_Value_field_name protoreflect.Name = \"value\"\n\n\tMapEntry_Key_field_number   protoreflect.FieldNumber = 1\n\tMapEntry_Value_field_number protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_source_context_proto = \"google/protobuf/source_context.proto\"\n\n// Names for google.protobuf.SourceContext.\nconst (\n\tSourceContext_message_name     protoreflect.Name     = \"SourceContext\"\n\tSourceContext_message_fullname protoreflect.FullName = \"google.protobuf.SourceContext\"\n)\n\n// Field names for google.protobuf.SourceContext.\nconst (\n\tSourceContext_FileName_field_name protoreflect.Name = \"file_name\"\n\n\tSourceContext_FileName_field_fullname protoreflect.FullName = \"google.protobuf.SourceContext.file_name\"\n)\n\n// Field numbers for google.protobuf.SourceContext.\nconst (\n\tSourceContext_FileName_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/struct_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_struct_proto = \"google/protobuf/struct.proto\"\n\n// Full and short names for google.protobuf.NullValue.\nconst (\n\tNullValue_enum_fullname = \"google.protobuf.NullValue\"\n\tNullValue_enum_name     = \"NullValue\"\n)\n\n// Names for google.protobuf.Struct.\nconst (\n\tStruct_message_name     protoreflect.Name     = \"Struct\"\n\tStruct_message_fullname protoreflect.FullName = \"google.protobuf.Struct\"\n)\n\n// Field names for google.protobuf.Struct.\nconst (\n\tStruct_Fields_field_name protoreflect.Name = \"fields\"\n\n\tStruct_Fields_field_fullname protoreflect.FullName = \"google.protobuf.Struct.fields\"\n)\n\n// Field numbers for google.protobuf.Struct.\nconst (\n\tStruct_Fields_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.Struct.FieldsEntry.\nconst (\n\tStruct_FieldsEntry_message_name     protoreflect.Name     = \"FieldsEntry\"\n\tStruct_FieldsEntry_message_fullname protoreflect.FullName = \"google.protobuf.Struct.FieldsEntry\"\n)\n\n// Field names for google.protobuf.Struct.FieldsEntry.\nconst (\n\tStruct_FieldsEntry_Key_field_name   protoreflect.Name = \"key\"\n\tStruct_FieldsEntry_Value_field_name protoreflect.Name = \"value\"\n\n\tStruct_FieldsEntry_Key_field_fullname   protoreflect.FullName = \"google.protobuf.Struct.FieldsEntry.key\"\n\tStruct_FieldsEntry_Value_field_fullname protoreflect.FullName = \"google.protobuf.Struct.FieldsEntry.value\"\n)\n\n// Field numbers for google.protobuf.Struct.FieldsEntry.\nconst (\n\tStruct_FieldsEntry_Key_field_number   protoreflect.FieldNumber = 1\n\tStruct_FieldsEntry_Value_field_number protoreflect.FieldNumber = 2\n)\n\n// Names for google.protobuf.Value.\nconst (\n\tValue_message_name     protoreflect.Name     = \"Value\"\n\tValue_message_fullname protoreflect.FullName = \"google.protobuf.Value\"\n)\n\n// Field names for google.protobuf.Value.\nconst (\n\tValue_NullValue_field_name   protoreflect.Name = \"null_value\"\n\tValue_NumberValue_field_name protoreflect.Name = \"number_value\"\n\tValue_StringValue_field_name protoreflect.Name = \"string_value\"\n\tValue_BoolValue_field_name   protoreflect.Name = \"bool_value\"\n\tValue_StructValue_field_name protoreflect.Name = \"struct_value\"\n\tValue_ListValue_field_name   protoreflect.Name = \"list_value\"\n\n\tValue_NullValue_field_fullname   protoreflect.FullName = \"google.protobuf.Value.null_value\"\n\tValue_NumberValue_field_fullname protoreflect.FullName = \"google.protobuf.Value.number_value\"\n\tValue_StringValue_field_fullname protoreflect.FullName = \"google.protobuf.Value.string_value\"\n\tValue_BoolValue_field_fullname   protoreflect.FullName = \"google.protobuf.Value.bool_value\"\n\tValue_StructValue_field_fullname protoreflect.FullName = \"google.protobuf.Value.struct_value\"\n\tValue_ListValue_field_fullname   protoreflect.FullName = \"google.protobuf.Value.list_value\"\n)\n\n// Field numbers for google.protobuf.Value.\nconst (\n\tValue_NullValue_field_number   protoreflect.FieldNumber = 1\n\tValue_NumberValue_field_number protoreflect.FieldNumber = 2\n\tValue_StringValue_field_number protoreflect.FieldNumber = 3\n\tValue_BoolValue_field_number   protoreflect.FieldNumber = 4\n\tValue_StructValue_field_number protoreflect.FieldNumber = 5\n\tValue_ListValue_field_number   protoreflect.FieldNumber = 6\n)\n\n// Oneof names for google.protobuf.Value.\nconst (\n\tValue_Kind_oneof_name protoreflect.Name = \"kind\"\n\n\tValue_Kind_oneof_fullname protoreflect.FullName = \"google.protobuf.Value.kind\"\n)\n\n// Names for google.protobuf.ListValue.\nconst (\n\tListValue_message_name     protoreflect.Name     = \"ListValue\"\n\tListValue_message_fullname protoreflect.FullName = \"google.protobuf.ListValue\"\n)\n\n// Field names for google.protobuf.ListValue.\nconst (\n\tListValue_Values_field_name protoreflect.Name = \"values\"\n\n\tListValue_Values_field_fullname protoreflect.FullName = \"google.protobuf.ListValue.values\"\n)\n\n// Field numbers for google.protobuf.ListValue.\nconst (\n\tListValue_Values_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_timestamp_proto = \"google/protobuf/timestamp.proto\"\n\n// Names for google.protobuf.Timestamp.\nconst (\n\tTimestamp_message_name     protoreflect.Name     = \"Timestamp\"\n\tTimestamp_message_fullname protoreflect.FullName = \"google.protobuf.Timestamp\"\n)\n\n// Field names for google.protobuf.Timestamp.\nconst (\n\tTimestamp_Seconds_field_name protoreflect.Name = \"seconds\"\n\tTimestamp_Nanos_field_name   protoreflect.Name = \"nanos\"\n\n\tTimestamp_Seconds_field_fullname protoreflect.FullName = \"google.protobuf.Timestamp.seconds\"\n\tTimestamp_Nanos_field_fullname   protoreflect.FullName = \"google.protobuf.Timestamp.nanos\"\n)\n\n// Field numbers for google.protobuf.Timestamp.\nconst (\n\tTimestamp_Seconds_field_number protoreflect.FieldNumber = 1\n\tTimestamp_Nanos_field_number   protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/type_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_type_proto = \"google/protobuf/type.proto\"\n\n// Full and short names for google.protobuf.Syntax.\nconst (\n\tSyntax_enum_fullname = \"google.protobuf.Syntax\"\n\tSyntax_enum_name     = \"Syntax\"\n)\n\n// Names for google.protobuf.Type.\nconst (\n\tType_message_name     protoreflect.Name     = \"Type\"\n\tType_message_fullname protoreflect.FullName = \"google.protobuf.Type\"\n)\n\n// Field names for google.protobuf.Type.\nconst (\n\tType_Name_field_name          protoreflect.Name = \"name\"\n\tType_Fields_field_name        protoreflect.Name = \"fields\"\n\tType_Oneofs_field_name        protoreflect.Name = \"oneofs\"\n\tType_Options_field_name       protoreflect.Name = \"options\"\n\tType_SourceContext_field_name protoreflect.Name = \"source_context\"\n\tType_Syntax_field_name        protoreflect.Name = \"syntax\"\n\tType_Edition_field_name       protoreflect.Name = \"edition\"\n\n\tType_Name_field_fullname          protoreflect.FullName = \"google.protobuf.Type.name\"\n\tType_Fields_field_fullname        protoreflect.FullName = \"google.protobuf.Type.fields\"\n\tType_Oneofs_field_fullname        protoreflect.FullName = \"google.protobuf.Type.oneofs\"\n\tType_Options_field_fullname       protoreflect.FullName = \"google.protobuf.Type.options\"\n\tType_SourceContext_field_fullname protoreflect.FullName = \"google.protobuf.Type.source_context\"\n\tType_Syntax_field_fullname        protoreflect.FullName = \"google.protobuf.Type.syntax\"\n\tType_Edition_field_fullname       protoreflect.FullName = \"google.protobuf.Type.edition\"\n)\n\n// Field numbers for google.protobuf.Type.\nconst (\n\tType_Name_field_number          protoreflect.FieldNumber = 1\n\tType_Fields_field_number        protoreflect.FieldNumber = 2\n\tType_Oneofs_field_number        protoreflect.FieldNumber = 3\n\tType_Options_field_number       protoreflect.FieldNumber = 4\n\tType_SourceContext_field_number protoreflect.FieldNumber = 5\n\tType_Syntax_field_number        protoreflect.FieldNumber = 6\n\tType_Edition_field_number       protoreflect.FieldNumber = 7\n)\n\n// Names for google.protobuf.Field.\nconst (\n\tField_message_name     protoreflect.Name     = \"Field\"\n\tField_message_fullname protoreflect.FullName = \"google.protobuf.Field\"\n)\n\n// Field names for google.protobuf.Field.\nconst (\n\tField_Kind_field_name         protoreflect.Name = \"kind\"\n\tField_Cardinality_field_name  protoreflect.Name = \"cardinality\"\n\tField_Number_field_name       protoreflect.Name = \"number\"\n\tField_Name_field_name         protoreflect.Name = \"name\"\n\tField_TypeUrl_field_name      protoreflect.Name = \"type_url\"\n\tField_OneofIndex_field_name   protoreflect.Name = \"oneof_index\"\n\tField_Packed_field_name       protoreflect.Name = \"packed\"\n\tField_Options_field_name      protoreflect.Name = \"options\"\n\tField_JsonName_field_name     protoreflect.Name = \"json_name\"\n\tField_DefaultValue_field_name protoreflect.Name = \"default_value\"\n\n\tField_Kind_field_fullname         protoreflect.FullName = \"google.protobuf.Field.kind\"\n\tField_Cardinality_field_fullname  protoreflect.FullName = \"google.protobuf.Field.cardinality\"\n\tField_Number_field_fullname       protoreflect.FullName = \"google.protobuf.Field.number\"\n\tField_Name_field_fullname         protoreflect.FullName = \"google.protobuf.Field.name\"\n\tField_TypeUrl_field_fullname      protoreflect.FullName = \"google.protobuf.Field.type_url\"\n\tField_OneofIndex_field_fullname   protoreflect.FullName = \"google.protobuf.Field.oneof_index\"\n\tField_Packed_field_fullname       protoreflect.FullName = \"google.protobuf.Field.packed\"\n\tField_Options_field_fullname      protoreflect.FullName = \"google.protobuf.Field.options\"\n\tField_JsonName_field_fullname     protoreflect.FullName = \"google.protobuf.Field.json_name\"\n\tField_DefaultValue_field_fullname protoreflect.FullName = \"google.protobuf.Field.default_value\"\n)\n\n// Field numbers for google.protobuf.Field.\nconst (\n\tField_Kind_field_number         protoreflect.FieldNumber = 1\n\tField_Cardinality_field_number  protoreflect.FieldNumber = 2\n\tField_Number_field_number       protoreflect.FieldNumber = 3\n\tField_Name_field_number         protoreflect.FieldNumber = 4\n\tField_TypeUrl_field_number      protoreflect.FieldNumber = 6\n\tField_OneofIndex_field_number   protoreflect.FieldNumber = 7\n\tField_Packed_field_number       protoreflect.FieldNumber = 8\n\tField_Options_field_number      protoreflect.FieldNumber = 9\n\tField_JsonName_field_number     protoreflect.FieldNumber = 10\n\tField_DefaultValue_field_number protoreflect.FieldNumber = 11\n)\n\n// Full and short names for google.protobuf.Field.Kind.\nconst (\n\tField_Kind_enum_fullname = \"google.protobuf.Field.Kind\"\n\tField_Kind_enum_name     = \"Kind\"\n)\n\n// Full and short names for google.protobuf.Field.Cardinality.\nconst (\n\tField_Cardinality_enum_fullname = \"google.protobuf.Field.Cardinality\"\n\tField_Cardinality_enum_name     = \"Cardinality\"\n)\n\n// Names for google.protobuf.Enum.\nconst (\n\tEnum_message_name     protoreflect.Name     = \"Enum\"\n\tEnum_message_fullname protoreflect.FullName = \"google.protobuf.Enum\"\n)\n\n// Field names for google.protobuf.Enum.\nconst (\n\tEnum_Name_field_name          protoreflect.Name = \"name\"\n\tEnum_Enumvalue_field_name     protoreflect.Name = \"enumvalue\"\n\tEnum_Options_field_name       protoreflect.Name = \"options\"\n\tEnum_SourceContext_field_name protoreflect.Name = \"source_context\"\n\tEnum_Syntax_field_name        protoreflect.Name = \"syntax\"\n\tEnum_Edition_field_name       protoreflect.Name = \"edition\"\n\n\tEnum_Name_field_fullname          protoreflect.FullName = \"google.protobuf.Enum.name\"\n\tEnum_Enumvalue_field_fullname     protoreflect.FullName = \"google.protobuf.Enum.enumvalue\"\n\tEnum_Options_field_fullname       protoreflect.FullName = \"google.protobuf.Enum.options\"\n\tEnum_SourceContext_field_fullname protoreflect.FullName = \"google.protobuf.Enum.source_context\"\n\tEnum_Syntax_field_fullname        protoreflect.FullName = \"google.protobuf.Enum.syntax\"\n\tEnum_Edition_field_fullname       protoreflect.FullName = \"google.protobuf.Enum.edition\"\n)\n\n// Field numbers for google.protobuf.Enum.\nconst (\n\tEnum_Name_field_number          protoreflect.FieldNumber = 1\n\tEnum_Enumvalue_field_number     protoreflect.FieldNumber = 2\n\tEnum_Options_field_number       protoreflect.FieldNumber = 3\n\tEnum_SourceContext_field_number protoreflect.FieldNumber = 4\n\tEnum_Syntax_field_number        protoreflect.FieldNumber = 5\n\tEnum_Edition_field_number       protoreflect.FieldNumber = 6\n)\n\n// Names for google.protobuf.EnumValue.\nconst (\n\tEnumValue_message_name     protoreflect.Name     = \"EnumValue\"\n\tEnumValue_message_fullname protoreflect.FullName = \"google.protobuf.EnumValue\"\n)\n\n// Field names for google.protobuf.EnumValue.\nconst (\n\tEnumValue_Name_field_name    protoreflect.Name = \"name\"\n\tEnumValue_Number_field_name  protoreflect.Name = \"number\"\n\tEnumValue_Options_field_name protoreflect.Name = \"options\"\n\n\tEnumValue_Name_field_fullname    protoreflect.FullName = \"google.protobuf.EnumValue.name\"\n\tEnumValue_Number_field_fullname  protoreflect.FullName = \"google.protobuf.EnumValue.number\"\n\tEnumValue_Options_field_fullname protoreflect.FullName = \"google.protobuf.EnumValue.options\"\n)\n\n// Field numbers for google.protobuf.EnumValue.\nconst (\n\tEnumValue_Name_field_number    protoreflect.FieldNumber = 1\n\tEnumValue_Number_field_number  protoreflect.FieldNumber = 2\n\tEnumValue_Options_field_number protoreflect.FieldNumber = 3\n)\n\n// Names for google.protobuf.Option.\nconst (\n\tOption_message_name     protoreflect.Name     = \"Option\"\n\tOption_message_fullname protoreflect.FullName = \"google.protobuf.Option\"\n)\n\n// Field names for google.protobuf.Option.\nconst (\n\tOption_Name_field_name  protoreflect.Name = \"name\"\n\tOption_Value_field_name protoreflect.Name = \"value\"\n\n\tOption_Name_field_fullname  protoreflect.FullName = \"google.protobuf.Option.name\"\n\tOption_Value_field_fullname protoreflect.FullName = \"google.protobuf.Option.value\"\n)\n\n// Field numbers for google.protobuf.Option.\nconst (\n\tOption_Name_field_number  protoreflect.FieldNumber = 1\n\tOption_Value_field_number protoreflect.FieldNumber = 2\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/wrappers.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage genid\n\nimport protoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\n// Generic field name and number for messages in wrappers.proto.\nconst (\n\tWrapperValue_Value_field_name   protoreflect.Name        = \"value\"\n\tWrapperValue_Value_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage genid\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nconst File_google_protobuf_wrappers_proto = \"google/protobuf/wrappers.proto\"\n\n// Names for google.protobuf.DoubleValue.\nconst (\n\tDoubleValue_message_name     protoreflect.Name     = \"DoubleValue\"\n\tDoubleValue_message_fullname protoreflect.FullName = \"google.protobuf.DoubleValue\"\n)\n\n// Field names for google.protobuf.DoubleValue.\nconst (\n\tDoubleValue_Value_field_name protoreflect.Name = \"value\"\n\n\tDoubleValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.DoubleValue.value\"\n)\n\n// Field numbers for google.protobuf.DoubleValue.\nconst (\n\tDoubleValue_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.FloatValue.\nconst (\n\tFloatValue_message_name     protoreflect.Name     = \"FloatValue\"\n\tFloatValue_message_fullname protoreflect.FullName = \"google.protobuf.FloatValue\"\n)\n\n// Field names for google.protobuf.FloatValue.\nconst (\n\tFloatValue_Value_field_name protoreflect.Name = \"value\"\n\n\tFloatValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.FloatValue.value\"\n)\n\n// Field numbers for google.protobuf.FloatValue.\nconst (\n\tFloatValue_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.Int64Value.\nconst (\n\tInt64Value_message_name     protoreflect.Name     = \"Int64Value\"\n\tInt64Value_message_fullname protoreflect.FullName = \"google.protobuf.Int64Value\"\n)\n\n// Field names for google.protobuf.Int64Value.\nconst (\n\tInt64Value_Value_field_name protoreflect.Name = \"value\"\n\n\tInt64Value_Value_field_fullname protoreflect.FullName = \"google.protobuf.Int64Value.value\"\n)\n\n// Field numbers for google.protobuf.Int64Value.\nconst (\n\tInt64Value_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.UInt64Value.\nconst (\n\tUInt64Value_message_name     protoreflect.Name     = \"UInt64Value\"\n\tUInt64Value_message_fullname protoreflect.FullName = \"google.protobuf.UInt64Value\"\n)\n\n// Field names for google.protobuf.UInt64Value.\nconst (\n\tUInt64Value_Value_field_name protoreflect.Name = \"value\"\n\n\tUInt64Value_Value_field_fullname protoreflect.FullName = \"google.protobuf.UInt64Value.value\"\n)\n\n// Field numbers for google.protobuf.UInt64Value.\nconst (\n\tUInt64Value_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.Int32Value.\nconst (\n\tInt32Value_message_name     protoreflect.Name     = \"Int32Value\"\n\tInt32Value_message_fullname protoreflect.FullName = \"google.protobuf.Int32Value\"\n)\n\n// Field names for google.protobuf.Int32Value.\nconst (\n\tInt32Value_Value_field_name protoreflect.Name = \"value\"\n\n\tInt32Value_Value_field_fullname protoreflect.FullName = \"google.protobuf.Int32Value.value\"\n)\n\n// Field numbers for google.protobuf.Int32Value.\nconst (\n\tInt32Value_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.UInt32Value.\nconst (\n\tUInt32Value_message_name     protoreflect.Name     = \"UInt32Value\"\n\tUInt32Value_message_fullname protoreflect.FullName = \"google.protobuf.UInt32Value\"\n)\n\n// Field names for google.protobuf.UInt32Value.\nconst (\n\tUInt32Value_Value_field_name protoreflect.Name = \"value\"\n\n\tUInt32Value_Value_field_fullname protoreflect.FullName = \"google.protobuf.UInt32Value.value\"\n)\n\n// Field numbers for google.protobuf.UInt32Value.\nconst (\n\tUInt32Value_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.BoolValue.\nconst (\n\tBoolValue_message_name     protoreflect.Name     = \"BoolValue\"\n\tBoolValue_message_fullname protoreflect.FullName = \"google.protobuf.BoolValue\"\n)\n\n// Field names for google.protobuf.BoolValue.\nconst (\n\tBoolValue_Value_field_name protoreflect.Name = \"value\"\n\n\tBoolValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.BoolValue.value\"\n)\n\n// Field numbers for google.protobuf.BoolValue.\nconst (\n\tBoolValue_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.StringValue.\nconst (\n\tStringValue_message_name     protoreflect.Name     = \"StringValue\"\n\tStringValue_message_fullname protoreflect.FullName = \"google.protobuf.StringValue\"\n)\n\n// Field names for google.protobuf.StringValue.\nconst (\n\tStringValue_Value_field_name protoreflect.Name = \"value\"\n\n\tStringValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.StringValue.value\"\n)\n\n// Field numbers for google.protobuf.StringValue.\nconst (\n\tStringValue_Value_field_number protoreflect.FieldNumber = 1\n)\n\n// Names for google.protobuf.BytesValue.\nconst (\n\tBytesValue_message_name     protoreflect.Name     = \"BytesValue\"\n\tBytesValue_message_fullname protoreflect.FullName = \"google.protobuf.BytesValue\"\n)\n\n// Field names for google.protobuf.BytesValue.\nconst (\n\tBytesValue_Value_field_name protoreflect.Name = \"value\"\n\n\tBytesValue_Value_field_fullname protoreflect.FullName = \"google.protobuf.BytesValue.value\"\n)\n\n// Field numbers for google.protobuf.BytesValue.\nconst (\n\tBytesValue_Value_field_number protoreflect.FieldNumber = 1\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/api_export.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\n\t\"google.golang.org/protobuf/encoding/prototext\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// Export is a zero-length named type that exists only to export a set of\n// functions that we do not want to appear in godoc.\ntype Export struct{}\n\n// NewError formats a string according to the format specifier and arguments and\n// returns an error that has a \"proto\" prefix.\nfunc (Export) NewError(f string, x ...interface{}) error {\n\treturn errors.New(f, x...)\n}\n\n// enum is any enum type generated by protoc-gen-go\n// and must be a named int32 type.\ntype enum = interface{}\n\n// EnumOf returns the protoreflect.Enum interface over e.\n// It returns nil if e is nil.\nfunc (Export) EnumOf(e enum) protoreflect.Enum {\n\tswitch e := e.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoreflect.Enum:\n\t\treturn e\n\tdefault:\n\t\treturn legacyWrapEnum(reflect.ValueOf(e))\n\t}\n}\n\n// EnumDescriptorOf returns the protoreflect.EnumDescriptor for e.\n// It returns nil if e is nil.\nfunc (Export) EnumDescriptorOf(e enum) protoreflect.EnumDescriptor {\n\tswitch e := e.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoreflect.Enum:\n\t\treturn e.Descriptor()\n\tdefault:\n\t\treturn LegacyLoadEnumDesc(reflect.TypeOf(e))\n\t}\n}\n\n// EnumTypeOf returns the protoreflect.EnumType for e.\n// It returns nil if e is nil.\nfunc (Export) EnumTypeOf(e enum) protoreflect.EnumType {\n\tswitch e := e.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoreflect.Enum:\n\t\treturn e.Type()\n\tdefault:\n\t\treturn legacyLoadEnumType(reflect.TypeOf(e))\n\t}\n}\n\n// EnumStringOf returns the enum value as a string, either as the name if\n// the number is resolvable, or the number formatted as a string.\nfunc (Export) EnumStringOf(ed protoreflect.EnumDescriptor, n protoreflect.EnumNumber) string {\n\tev := ed.Values().ByNumber(n)\n\tif ev != nil {\n\t\treturn string(ev.Name())\n\t}\n\treturn strconv.Itoa(int(n))\n}\n\n// message is any message type generated by protoc-gen-go\n// and must be a pointer to a named struct type.\ntype message = interface{}\n\n// legacyMessageWrapper wraps a v2 message as a v1 message.\ntype legacyMessageWrapper struct{ m protoreflect.ProtoMessage }\n\nfunc (m legacyMessageWrapper) Reset()         { proto.Reset(m.m) }\nfunc (m legacyMessageWrapper) String() string { return Export{}.MessageStringOf(m.m) }\nfunc (m legacyMessageWrapper) ProtoMessage()  {}\n\n// ProtoMessageV1Of converts either a v1 or v2 message to a v1 message.\n// It returns nil if m is nil.\nfunc (Export) ProtoMessageV1Of(m message) protoiface.MessageV1 {\n\tswitch mv := m.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoiface.MessageV1:\n\t\treturn mv\n\tcase unwrapper:\n\t\treturn Export{}.ProtoMessageV1Of(mv.protoUnwrap())\n\tcase protoreflect.ProtoMessage:\n\t\treturn legacyMessageWrapper{mv}\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"message %T is neither a v1 or v2 Message\", m))\n\t}\n}\n\nfunc (Export) protoMessageV2Of(m message) protoreflect.ProtoMessage {\n\tswitch mv := m.(type) {\n\tcase nil:\n\t\treturn nil\n\tcase protoreflect.ProtoMessage:\n\t\treturn mv\n\tcase legacyMessageWrapper:\n\t\treturn mv.m\n\tcase protoiface.MessageV1:\n\t\treturn nil\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"message %T is neither a v1 or v2 Message\", m))\n\t}\n}\n\n// ProtoMessageV2Of converts either a v1 or v2 message to a v2 message.\n// It returns nil if m is nil.\nfunc (Export) ProtoMessageV2Of(m message) protoreflect.ProtoMessage {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv\n\t}\n\treturn legacyWrapMessage(reflect.ValueOf(m)).Interface()\n}\n\n// MessageOf returns the protoreflect.Message interface over m.\n// It returns nil if m is nil.\nfunc (Export) MessageOf(m message) protoreflect.Message {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv.ProtoReflect()\n\t}\n\treturn legacyWrapMessage(reflect.ValueOf(m))\n}\n\n// MessageDescriptorOf returns the protoreflect.MessageDescriptor for m.\n// It returns nil if m is nil.\nfunc (Export) MessageDescriptorOf(m message) protoreflect.MessageDescriptor {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv.ProtoReflect().Descriptor()\n\t}\n\treturn LegacyLoadMessageDesc(reflect.TypeOf(m))\n}\n\n// MessageTypeOf returns the protoreflect.MessageType for m.\n// It returns nil if m is nil.\nfunc (Export) MessageTypeOf(m message) protoreflect.MessageType {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv.ProtoReflect().Type()\n\t}\n\treturn legacyLoadMessageType(reflect.TypeOf(m), \"\")\n}\n\n// MessageStringOf returns the message value as a string,\n// which is the message serialized in the protobuf text format.\nfunc (Export) MessageStringOf(m protoreflect.ProtoMessage) string {\n\treturn prototext.MarshalOptions{Multiline: false}.Format(m)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/checkinit.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nfunc (mi *MessageInfo) checkInitialized(in protoiface.CheckInitializedInput) (protoiface.CheckInitializedOutput, error) {\n\tvar p pointer\n\tif ms, ok := in.Message.(*messageState); ok {\n\t\tp = ms.pointer()\n\t} else {\n\t\tp = in.Message.(*messageReflectWrapper).pointer()\n\t}\n\treturn protoiface.CheckInitializedOutput{}, mi.checkInitializedPointer(p)\n}\n\nfunc (mi *MessageInfo) checkInitializedPointer(p pointer) error {\n\tmi.init()\n\tif !mi.needsInitCheck {\n\t\treturn nil\n\t}\n\tif p.IsNil() {\n\t\tfor _, f := range mi.orderedCoderFields {\n\t\t\tif f.isRequired {\n\t\t\t\treturn errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName()))\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\tif mi.extensionOffset.IsValid() {\n\t\te := p.Apply(mi.extensionOffset).Extensions()\n\t\tif err := mi.isInitExtensions(e); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tfor _, f := range mi.orderedCoderFields {\n\t\tif !f.isRequired && f.funcs.isInit == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfptr := p.Apply(f.offset)\n\t\tif f.isPointer && fptr.Elem().IsNil() {\n\t\t\tif f.isRequired {\n\t\t\t\treturn errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName()))\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif f.funcs.isInit == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif err := f.funcs.isInit(fptr, f); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (mi *MessageInfo) isInitExtensions(ext *map[int32]ExtensionField) error {\n\tif ext == nil {\n\t\treturn nil\n\t}\n\tfor _, x := range *ext {\n\t\tei := getExtensionFieldInfo(x.Type())\n\t\tif ei.funcs.isInit == nil {\n\t\t\tcontinue\n\t\t}\n\t\tv := x.Value()\n\t\tif !v.IsValid() {\n\t\t\tcontinue\n\t\t}\n\t\tif err := ei.funcs.isInit(v); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nvar (\n\tneedsInitCheckMu  sync.Mutex\n\tneedsInitCheckMap sync.Map\n)\n\n// needsInitCheck reports whether a message needs to be checked for partial initialization.\n//\n// It returns true if the message transitively includes any required or extension fields.\nfunc needsInitCheck(md protoreflect.MessageDescriptor) bool {\n\tif v, ok := needsInitCheckMap.Load(md); ok {\n\t\tif has, ok := v.(bool); ok {\n\t\t\treturn has\n\t\t}\n\t}\n\tneedsInitCheckMu.Lock()\n\tdefer needsInitCheckMu.Unlock()\n\treturn needsInitCheckLocked(md)\n}\n\nfunc needsInitCheckLocked(md protoreflect.MessageDescriptor) (has bool) {\n\tif v, ok := needsInitCheckMap.Load(md); ok {\n\t\t// If has is true, we've previously determined that this message\n\t\t// needs init checks.\n\t\t//\n\t\t// If has is false, we've previously determined that it can never\n\t\t// be uninitialized.\n\t\t//\n\t\t// If has is not a bool, we've just encountered a cycle in the\n\t\t// message graph. In this case, it is safe to return false: If\n\t\t// the message does have required fields, we'll detect them later\n\t\t// in the graph traversal.\n\t\thas, ok := v.(bool)\n\t\treturn ok && has\n\t}\n\tneedsInitCheckMap.Store(md, struct{}{}) // avoid cycles while descending into this message\n\tdefer func() {\n\t\tneedsInitCheckMap.Store(md, has)\n\t}()\n\tif md.RequiredNumbers().Len() > 0 {\n\t\treturn true\n\t}\n\tif md.ExtensionRanges().Len() > 0 {\n\t\treturn true\n\t}\n\tfor i := 0; i < md.Fields().Len(); i++ {\n\t\tfd := md.Fields().Get(i)\n\t\t// Map keys are never messages, so just consider the map value.\n\t\tif fd.IsMap() {\n\t\t\tfd = fd.MapValue()\n\t\t}\n\t\tfmd := fd.Message()\n\t\tif fmd != nil && needsInitCheckLocked(fmd) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_extension.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype extensionFieldInfo struct {\n\twiretag             uint64\n\ttagsize             int\n\tunmarshalNeedsValue bool\n\tfuncs               valueCoderFuncs\n\tvalidation          validationInfo\n}\n\nvar legacyExtensionFieldInfoCache sync.Map // map[protoreflect.ExtensionType]*extensionFieldInfo\n\nfunc getExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo {\n\tif xi, ok := xt.(*ExtensionInfo); ok {\n\t\txi.lazyInit()\n\t\treturn xi.info\n\t}\n\treturn legacyLoadExtensionFieldInfo(xt)\n}\n\n// legacyLoadExtensionFieldInfo dynamically loads a *ExtensionInfo for xt.\nfunc legacyLoadExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo {\n\tif xi, ok := legacyExtensionFieldInfoCache.Load(xt); ok {\n\t\treturn xi.(*extensionFieldInfo)\n\t}\n\te := makeExtensionFieldInfo(xt.TypeDescriptor())\n\tif e, ok := legacyMessageTypeCache.LoadOrStore(xt, e); ok {\n\t\treturn e.(*extensionFieldInfo)\n\t}\n\treturn e\n}\n\nfunc makeExtensionFieldInfo(xd protoreflect.ExtensionDescriptor) *extensionFieldInfo {\n\tvar wiretag uint64\n\tif !xd.IsPacked() {\n\t\twiretag = protowire.EncodeTag(xd.Number(), wireTypes[xd.Kind()])\n\t} else {\n\t\twiretag = protowire.EncodeTag(xd.Number(), protowire.BytesType)\n\t}\n\te := &extensionFieldInfo{\n\t\twiretag: wiretag,\n\t\ttagsize: protowire.SizeVarint(wiretag),\n\t\tfuncs:   encoderFuncsForValue(xd),\n\t}\n\t// Does the unmarshal function need a value passed to it?\n\t// This is true for composite types, where we pass in a message, list, or map to fill in,\n\t// and for enums, where we pass in a prototype value to specify the concrete enum type.\n\tswitch xd.Kind() {\n\tcase protoreflect.MessageKind, protoreflect.GroupKind, protoreflect.EnumKind:\n\t\te.unmarshalNeedsValue = true\n\tdefault:\n\t\tif xd.Cardinality() == protoreflect.Repeated {\n\t\t\te.unmarshalNeedsValue = true\n\t\t}\n\t}\n\treturn e\n}\n\ntype lazyExtensionValue struct {\n\tatomicOnce uint32 // atomically set if value is valid\n\tmu         sync.Mutex\n\txi         *extensionFieldInfo\n\tvalue      protoreflect.Value\n\tb          []byte\n\tfn         func() protoreflect.Value\n}\n\ntype ExtensionField struct {\n\ttyp protoreflect.ExtensionType\n\n\t// value is either the value of GetValue,\n\t// or a *lazyExtensionValue that then returns the value of GetValue.\n\tvalue protoreflect.Value\n\tlazy  *lazyExtensionValue\n}\n\nfunc (f *ExtensionField) appendLazyBytes(xt protoreflect.ExtensionType, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, b []byte) {\n\tif f.lazy == nil {\n\t\tf.lazy = &lazyExtensionValue{xi: xi}\n\t}\n\tf.typ = xt\n\tf.lazy.xi = xi\n\tf.lazy.b = protowire.AppendTag(f.lazy.b, num, wtyp)\n\tf.lazy.b = append(f.lazy.b, b...)\n}\n\nfunc (f *ExtensionField) canLazy(xt protoreflect.ExtensionType) bool {\n\tif f.typ == nil {\n\t\treturn true\n\t}\n\tif f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (f *ExtensionField) lazyInit() {\n\tf.lazy.mu.Lock()\n\tdefer f.lazy.mu.Unlock()\n\tif atomic.LoadUint32(&f.lazy.atomicOnce) == 1 {\n\t\treturn\n\t}\n\tif f.lazy.xi != nil {\n\t\tb := f.lazy.b\n\t\tval := f.typ.New()\n\t\tfor len(b) > 0 {\n\t\t\tvar tag uint64\n\t\t\tif b[0] < 0x80 {\n\t\t\t\ttag = uint64(b[0])\n\t\t\t\tb = b[1:]\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\ttag = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tb = b[2:]\n\t\t\t} else {\n\t\t\t\tvar n int\n\t\t\t\ttag, n = protowire.ConsumeVarint(b)\n\t\t\t\tif n < 0 {\n\t\t\t\t\tpanic(errors.New(\"bad tag in lazy extension decoding\"))\n\t\t\t\t}\n\t\t\t\tb = b[n:]\n\t\t\t}\n\t\t\tnum := protowire.Number(tag >> 3)\n\t\t\twtyp := protowire.Type(tag & 7)\n\t\t\tvar out unmarshalOutput\n\t\t\tvar err error\n\t\t\tval, out, err = f.lazy.xi.funcs.unmarshal(b, val, num, wtyp, lazyUnmarshalOptions)\n\t\t\tif err != nil {\n\t\t\t\tpanic(errors.New(\"decode failure in lazy extension decoding: %v\", err))\n\t\t\t}\n\t\t\tb = b[out.n:]\n\t\t}\n\t\tf.lazy.value = val\n\t} else {\n\t\tf.lazy.value = f.lazy.fn()\n\t}\n\tf.lazy.xi = nil\n\tf.lazy.fn = nil\n\tf.lazy.b = nil\n\tatomic.StoreUint32(&f.lazy.atomicOnce, 1)\n}\n\n// Set sets the type and value of the extension field.\n// This must not be called concurrently.\nfunc (f *ExtensionField) Set(t protoreflect.ExtensionType, v protoreflect.Value) {\n\tf.typ = t\n\tf.value = v\n\tf.lazy = nil\n}\n\n// SetLazy sets the type and a value that is to be lazily evaluated upon first use.\n// This must not be called concurrently.\nfunc (f *ExtensionField) SetLazy(t protoreflect.ExtensionType, fn func() protoreflect.Value) {\n\tf.typ = t\n\tf.lazy = &lazyExtensionValue{fn: fn}\n}\n\n// Value returns the value of the extension field.\n// This may be called concurrently.\nfunc (f *ExtensionField) Value() protoreflect.Value {\n\tif f.lazy != nil {\n\t\tif atomic.LoadUint32(&f.lazy.atomicOnce) == 0 {\n\t\t\tf.lazyInit()\n\t\t}\n\t\treturn f.lazy.value\n\t}\n\treturn f.value\n}\n\n// Type returns the type of the extension field.\n// This may be called concurrently.\nfunc (f ExtensionField) Type() protoreflect.ExtensionType {\n\treturn f.typ\n}\n\n// IsSet returns whether the extension field is set.\n// This may be called concurrently.\nfunc (f ExtensionField) IsSet() bool {\n\treturn f.typ != nil\n}\n\n// IsLazy reports whether a field is lazily encoded.\n// It is exported for testing.\nfunc IsLazy(m protoreflect.Message, fd protoreflect.FieldDescriptor) bool {\n\tvar mi *MessageInfo\n\tvar p pointer\n\tswitch m := m.(type) {\n\tcase *messageState:\n\t\tmi = m.messageInfo()\n\t\tp = m.pointer()\n\tcase *messageReflectWrapper:\n\t\tmi = m.messageInfo()\n\t\tp = m.pointer()\n\tdefault:\n\t\treturn false\n\t}\n\txd, ok := fd.(protoreflect.ExtensionTypeDescriptor)\n\tif !ok {\n\t\treturn false\n\t}\n\txt := xd.Type()\n\text := mi.extensionMap(p)\n\tif ext == nil {\n\t\treturn false\n\t}\n\tf, ok := (*ext)[int32(fd.Number())]\n\tif !ok {\n\t\treturn false\n\t}\n\treturn f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_field.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\ntype errInvalidUTF8 struct{}\n\nfunc (errInvalidUTF8) Error() string     { return \"string field contains invalid UTF-8\" }\nfunc (errInvalidUTF8) InvalidUTF8() bool { return true }\nfunc (errInvalidUTF8) Unwrap() error     { return errors.Error }\n\n// initOneofFieldCoders initializes the fast-path functions for the fields in a oneof.\n//\n// For size, marshal, and isInit operations, functions are set only on the first field\n// in the oneof. The functions are called when the oneof is non-nil, and will dispatch\n// to the appropriate field-specific function as necessary.\n//\n// The unmarshal function is set on each field individually as usual.\nfunc (mi *MessageInfo) initOneofFieldCoders(od protoreflect.OneofDescriptor, si structInfo) {\n\tfs := si.oneofsByName[od.Name()]\n\tft := fs.Type\n\toneofFields := make(map[reflect.Type]*coderFieldInfo)\n\tneedIsInit := false\n\tfields := od.Fields()\n\tfor i, lim := 0, fields.Len(); i < lim; i++ {\n\t\tfd := od.Fields().Get(i)\n\t\tnum := fd.Number()\n\t\t// Make a copy of the original coderFieldInfo for use in unmarshaling.\n\t\t//\n\t\t// oneofFields[oneofType].funcs.marshal is the field-specific marshal function.\n\t\t//\n\t\t// mi.coderFields[num].marshal is set on only the first field in the oneof,\n\t\t// and dispatches to the field-specific marshaler in oneofFields.\n\t\tcf := *mi.coderFields[num]\n\t\tot := si.oneofWrappersByNumber[num]\n\t\tcf.ft = ot.Field(0).Type\n\t\tcf.mi, cf.funcs = fieldCoder(fd, cf.ft)\n\t\toneofFields[ot] = &cf\n\t\tif cf.funcs.isInit != nil {\n\t\t\tneedIsInit = true\n\t\t}\n\t\tmi.coderFields[num].funcs.unmarshal = func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\tvar vw reflect.Value         // pointer to wrapper type\n\t\t\tvi := p.AsValueOf(ft).Elem() // oneof field value of interface kind\n\t\t\tif !vi.IsNil() && !vi.Elem().IsNil() && vi.Elem().Elem().Type() == ot {\n\t\t\t\tvw = vi.Elem()\n\t\t\t} else {\n\t\t\t\tvw = reflect.New(ot)\n\t\t\t}\n\t\t\tout, err := cf.funcs.unmarshal(b, pointerOfValue(vw).Apply(zeroOffset), wtyp, &cf, opts)\n\t\t\tif err != nil {\n\t\t\t\treturn out, err\n\t\t\t}\n\t\t\tvi.Set(vw)\n\t\t\treturn out, nil\n\t\t}\n\t}\n\tgetInfo := func(p pointer) (pointer, *coderFieldInfo) {\n\t\tv := p.AsValueOf(ft).Elem()\n\t\tif v.IsNil() {\n\t\t\treturn pointer{}, nil\n\t\t}\n\t\tv = v.Elem() // interface -> *struct\n\t\tif v.IsNil() {\n\t\t\treturn pointer{}, nil\n\t\t}\n\t\treturn pointerOfValue(v).Apply(zeroOffset), oneofFields[v.Elem().Type()]\n\t}\n\tfirst := mi.coderFields[od.Fields().Get(0).Number()]\n\tfirst.funcs.size = func(p pointer, _ *coderFieldInfo, opts marshalOptions) int {\n\t\tp, info := getInfo(p)\n\t\tif info == nil || info.funcs.size == nil {\n\t\t\treturn 0\n\t\t}\n\t\treturn info.funcs.size(p, info, opts)\n\t}\n\tfirst.funcs.marshal = func(b []byte, p pointer, _ *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\tp, info := getInfo(p)\n\t\tif info == nil || info.funcs.marshal == nil {\n\t\t\treturn b, nil\n\t\t}\n\t\treturn info.funcs.marshal(b, p, info, opts)\n\t}\n\tfirst.funcs.merge = func(dst, src pointer, _ *coderFieldInfo, opts mergeOptions) {\n\t\tsrcp, srcinfo := getInfo(src)\n\t\tif srcinfo == nil || srcinfo.funcs.merge == nil {\n\t\t\treturn\n\t\t}\n\t\tdstp, dstinfo := getInfo(dst)\n\t\tif dstinfo != srcinfo {\n\t\t\tdst.AsValueOf(ft).Elem().Set(reflect.New(src.AsValueOf(ft).Elem().Elem().Elem().Type()))\n\t\t\tdstp = pointerOfValue(dst.AsValueOf(ft).Elem().Elem()).Apply(zeroOffset)\n\t\t}\n\t\tsrcinfo.funcs.merge(dstp, srcp, srcinfo, opts)\n\t}\n\tif needIsInit {\n\t\tfirst.funcs.isInit = func(p pointer, _ *coderFieldInfo) error {\n\t\t\tp, info := getInfo(p)\n\t\t\tif info == nil || info.funcs.isInit == nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn info.funcs.isInit(p, info)\n\t\t}\n\t}\n}\n\nfunc makeWeakMessageFieldCoder(fd protoreflect.FieldDescriptor) pointerCoderFuncs {\n\tvar once sync.Once\n\tvar messageType protoreflect.MessageType\n\tlazyInit := func() {\n\t\tonce.Do(func() {\n\t\t\tmessageName := fd.Message().FullName()\n\t\t\tmessageType, _ = protoregistry.GlobalTypes.FindMessageByName(messageName)\n\t\t})\n\t}\n\n\treturn pointerCoderFuncs{\n\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\tm, ok := p.WeakFields().get(f.num)\n\t\t\tif !ok {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\tlazyInit()\n\t\t\tif messageType == nil {\n\t\t\t\tpanic(fmt.Sprintf(\"weak message %v is not linked in\", fd.Message().FullName()))\n\t\t\t}\n\t\t\treturn sizeMessage(m, f.tagsize, opts)\n\t\t},\n\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\tm, ok := p.WeakFields().get(f.num)\n\t\t\tif !ok {\n\t\t\t\treturn b, nil\n\t\t\t}\n\t\t\tlazyInit()\n\t\t\tif messageType == nil {\n\t\t\t\tpanic(fmt.Sprintf(\"weak message %v is not linked in\", fd.Message().FullName()))\n\t\t\t}\n\t\t\treturn appendMessage(b, m, f.wiretag, opts)\n\t\t},\n\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\tfs := p.WeakFields()\n\t\t\tm, ok := fs.get(f.num)\n\t\t\tif !ok {\n\t\t\t\tlazyInit()\n\t\t\t\tif messageType == nil {\n\t\t\t\t\treturn unmarshalOutput{}, errUnknown\n\t\t\t\t}\n\t\t\t\tm = messageType.New().Interface()\n\t\t\t\tfs.set(f.num, m)\n\t\t\t}\n\t\t\treturn consumeMessage(b, m, wtyp, opts)\n\t\t},\n\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\tm, ok := p.WeakFields().get(f.num)\n\t\t\tif !ok {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn proto.CheckInitialized(m)\n\t\t},\n\t\tmerge: func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\t\t\tsm, ok := src.WeakFields().get(f.num)\n\t\t\tif !ok {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdm, ok := dst.WeakFields().get(f.num)\n\t\t\tif !ok {\n\t\t\t\tlazyInit()\n\t\t\t\tif messageType == nil {\n\t\t\t\t\tpanic(fmt.Sprintf(\"weak message %v is not linked in\", fd.Message().FullName()))\n\t\t\t\t}\n\t\t\t\tdm = messageType.New().Interface()\n\t\t\t\tdst.WeakFields().set(f.num, dm)\n\t\t\t}\n\t\t\topts.Merge(dm, sm)\n\t\t},\n\t}\n}\n\nfunc makeMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {\n\tif mi := getMessageInfo(ft); mi != nil {\n\t\tfuncs := pointerCoderFuncs{\n\t\t\tsize:      sizeMessageInfo,\n\t\t\tmarshal:   appendMessageInfo,\n\t\t\tunmarshal: consumeMessageInfo,\n\t\t\tmerge:     mergeMessage,\n\t\t}\n\t\tif needsInitCheck(mi.Desc) {\n\t\t\tfuncs.isInit = isInitMessageInfo\n\t\t}\n\t\treturn funcs\n\t} else {\n\t\treturn pointerCoderFuncs{\n\t\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn sizeMessage(m, f.tagsize, opts)\n\t\t\t},\n\t\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn appendMessage(b, m, f.wiretag, opts)\n\t\t\t},\n\t\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\t\tmp := p.AsValueOf(ft).Elem()\n\t\t\t\tif mp.IsNil() {\n\t\t\t\t\tmp.Set(reflect.New(ft.Elem()))\n\t\t\t\t}\n\t\t\t\treturn consumeMessage(b, asMessage(mp), wtyp, opts)\n\t\t\t},\n\t\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn proto.CheckInitialized(m)\n\t\t\t},\n\t\t\tmerge: mergeMessage,\n\t\t}\n\t}\n}\n\nfunc sizeMessageInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\treturn protowire.SizeBytes(f.mi.sizePointer(p.Elem(), opts)) + f.tagsize\n}\n\nfunc appendMessageInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(f.mi.sizePointer(p.Elem(), opts)))\n\treturn f.mi.marshalAppendPointer(b, p.Elem(), opts)\n}\n\nfunc consumeMessageInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif p.Elem().IsNil() {\n\t\tp.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t}\n\to, err := f.mi.unmarshalPointer(v, p.Elem(), 0, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tout.n = n\n\tout.initialized = o.initialized\n\treturn out, nil\n}\n\nfunc isInitMessageInfo(p pointer, f *coderFieldInfo) error {\n\treturn f.mi.checkInitializedPointer(p.Elem())\n}\n\nfunc sizeMessage(m proto.Message, tagsize int, _ marshalOptions) int {\n\treturn protowire.SizeBytes(proto.Size(m)) + tagsize\n}\n\nfunc appendMessage(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(proto.Size(m)))\n\treturn opts.Options().MarshalAppend(b, m)\n}\n\nfunc consumeMessage(b []byte, m proto.Message, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     v,\n\t\tMessage: m.ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn out, nil\n}\n\nfunc sizeMessageValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\tm := v.Message().Interface()\n\treturn sizeMessage(m, tagsize, opts)\n}\n\nfunc appendMessageValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tm := v.Message().Interface()\n\treturn appendMessage(b, m, wiretag, opts)\n}\n\nfunc consumeMessageValue(b []byte, v protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) {\n\tm := v.Message().Interface()\n\tout, err := consumeMessage(b, m, wtyp, opts)\n\treturn v, out, err\n}\n\nfunc isInitMessageValue(v protoreflect.Value) error {\n\tm := v.Message().Interface()\n\treturn proto.CheckInitialized(m)\n}\n\nvar coderMessageValue = valueCoderFuncs{\n\tsize:      sizeMessageValue,\n\tmarshal:   appendMessageValue,\n\tunmarshal: consumeMessageValue,\n\tisInit:    isInitMessageValue,\n\tmerge:     mergeMessageValue,\n}\n\nfunc sizeGroupValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\tm := v.Message().Interface()\n\treturn sizeGroup(m, tagsize, opts)\n}\n\nfunc appendGroupValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tm := v.Message().Interface()\n\treturn appendGroup(b, m, wiretag, opts)\n}\n\nfunc consumeGroupValue(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) {\n\tm := v.Message().Interface()\n\tout, err := consumeGroup(b, m, num, wtyp, opts)\n\treturn v, out, err\n}\n\nvar coderGroupValue = valueCoderFuncs{\n\tsize:      sizeGroupValue,\n\tmarshal:   appendGroupValue,\n\tunmarshal: consumeGroupValue,\n\tisInit:    isInitMessageValue,\n\tmerge:     mergeMessageValue,\n}\n\nfunc makeGroupFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {\n\tnum := fd.Number()\n\tif mi := getMessageInfo(ft); mi != nil {\n\t\tfuncs := pointerCoderFuncs{\n\t\t\tsize:      sizeGroupType,\n\t\t\tmarshal:   appendGroupType,\n\t\t\tunmarshal: consumeGroupType,\n\t\t\tmerge:     mergeMessage,\n\t\t}\n\t\tif needsInitCheck(mi.Desc) {\n\t\t\tfuncs.isInit = isInitMessageInfo\n\t\t}\n\t\treturn funcs\n\t} else {\n\t\treturn pointerCoderFuncs{\n\t\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn sizeGroup(m, f.tagsize, opts)\n\t\t\t},\n\t\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn appendGroup(b, m, f.wiretag, opts)\n\t\t\t},\n\t\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\t\tmp := p.AsValueOf(ft).Elem()\n\t\t\t\tif mp.IsNil() {\n\t\t\t\t\tmp.Set(reflect.New(ft.Elem()))\n\t\t\t\t}\n\t\t\t\treturn consumeGroup(b, asMessage(mp), num, wtyp, opts)\n\t\t\t},\n\t\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\t\tm := asMessage(p.AsValueOf(ft).Elem())\n\t\t\t\treturn proto.CheckInitialized(m)\n\t\t\t},\n\t\t\tmerge: mergeMessage,\n\t\t}\n\t}\n}\n\nfunc sizeGroupType(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\treturn 2*f.tagsize + f.mi.sizePointer(p.Elem(), opts)\n}\n\nfunc appendGroupType(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, f.wiretag) // start group\n\tb, err := f.mi.marshalAppendPointer(b, p.Elem(), opts)\n\tb = protowire.AppendVarint(b, f.wiretag+1) // end group\n\treturn b, err\n}\n\nfunc consumeGroupType(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn out, errUnknown\n\t}\n\tif p.Elem().IsNil() {\n\t\tp.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t}\n\treturn f.mi.unmarshalPointer(b, p.Elem(), f.num, opts)\n}\n\nfunc sizeGroup(m proto.Message, tagsize int, _ marshalOptions) int {\n\treturn 2*tagsize + proto.Size(m)\n}\n\nfunc appendGroup(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag) // start group\n\tb, err := opts.Options().MarshalAppend(b, m)\n\tb = protowire.AppendVarint(b, wiretag+1) // end group\n\treturn b, err\n}\n\nfunc consumeGroup(b []byte, m proto.Message, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn out, errUnknown\n\t}\n\tb, n := protowire.ConsumeGroup(num, b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     b,\n\t\tMessage: m.ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn out, nil\n}\n\nfunc makeMessageSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {\n\tif mi := getMessageInfo(ft); mi != nil {\n\t\tfuncs := pointerCoderFuncs{\n\t\t\tsize:      sizeMessageSliceInfo,\n\t\t\tmarshal:   appendMessageSliceInfo,\n\t\t\tunmarshal: consumeMessageSliceInfo,\n\t\t\tmerge:     mergeMessageSlice,\n\t\t}\n\t\tif needsInitCheck(mi.Desc) {\n\t\t\tfuncs.isInit = isInitMessageSliceInfo\n\t\t}\n\t\treturn funcs\n\t}\n\treturn pointerCoderFuncs{\n\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\treturn sizeMessageSlice(p, ft, f.tagsize, opts)\n\t\t},\n\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\treturn appendMessageSlice(b, p, f.wiretag, ft, opts)\n\t\t},\n\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\treturn consumeMessageSlice(b, p, ft, wtyp, opts)\n\t\t},\n\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\treturn isInitMessageSlice(p, ft)\n\t\t},\n\t\tmerge: mergeMessageSlice,\n\t}\n}\n\nfunc sizeMessageSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\ts := p.PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeBytes(f.mi.sizePointer(v, opts)) + f.tagsize\n\t}\n\treturn n\n}\n\nfunc appendMessageSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := p.PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tsiz := f.mi.sizePointer(v, opts)\n\t\tb = protowire.AppendVarint(b, uint64(siz))\n\t\tb, err = f.mi.marshalAppendPointer(b, v, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc consumeMessageSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tm := reflect.New(f.mi.GoReflectType.Elem()).Interface()\n\tmp := pointerOfIface(m)\n\to, err := f.mi.unmarshalPointer(v, mp, 0, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tp.AppendPointerSlice(mp)\n\tout.n = n\n\tout.initialized = o.initialized\n\treturn out, nil\n}\n\nfunc isInitMessageSliceInfo(p pointer, f *coderFieldInfo) error {\n\ts := p.PointerSlice()\n\tfor _, v := range s {\n\t\tif err := f.mi.checkInitializedPointer(v); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc sizeMessageSlice(p pointer, goType reflect.Type, tagsize int, _ marshalOptions) int {\n\ts := p.PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(goType.Elem()))\n\t\tn += protowire.SizeBytes(proto.Size(m)) + tagsize\n\t}\n\treturn n\n}\n\nfunc appendMessageSlice(b []byte, p pointer, wiretag uint64, goType reflect.Type, opts marshalOptions) ([]byte, error) {\n\ts := p.PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(goType.Elem()))\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tsiz := proto.Size(m)\n\t\tb = protowire.AppendVarint(b, uint64(siz))\n\t\tb, err = opts.Options().MarshalAppend(b, m)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc consumeMessageSlice(b []byte, p pointer, goType reflect.Type, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tmp := reflect.New(goType.Elem())\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     v,\n\t\tMessage: asMessage(mp).ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tp.AppendPointerSlice(pointerOfValue(mp))\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn out, nil\n}\n\nfunc isInitMessageSlice(p pointer, goType reflect.Type) error {\n\ts := p.PointerSlice()\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(goType.Elem()))\n\t\tif err := proto.CheckInitialized(m); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// Slices of messages\n\nfunc sizeMessageSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int {\n\tlist := listv.List()\n\tn := 0\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tn += protowire.SizeBytes(proto.Size(m)) + tagsize\n\t}\n\treturn n\n}\n\nfunc appendMessageSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tmopts := opts.Options()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tsiz := proto.Size(m)\n\t\tb = protowire.AppendVarint(b, uint64(siz))\n\t\tvar err error\n\t\tb, err = mopts.MarshalAppend(b, m)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc consumeMessageSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tm := list.NewElement()\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     v,\n\t\tMessage: m.Message(),\n\t})\n\tif err != nil {\n\t\treturn protoreflect.Value{}, out, err\n\t}\n\tlist.Append(m)\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn listv, out, nil\n}\n\nfunc isInitMessageSliceValue(listv protoreflect.Value) error {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tif err := proto.CheckInitialized(m); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nvar coderMessageSliceValue = valueCoderFuncs{\n\tsize:      sizeMessageSliceValue,\n\tmarshal:   appendMessageSliceValue,\n\tunmarshal: consumeMessageSliceValue,\n\tisInit:    isInitMessageSliceValue,\n\tmerge:     mergeMessageListValue,\n}\n\nfunc sizeGroupSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int {\n\tlist := listv.List()\n\tn := 0\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tn += 2*tagsize + proto.Size(m)\n\t}\n\treturn n\n}\n\nfunc appendGroupSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tmopts := opts.Options()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tm := list.Get(i).Message().Interface()\n\t\tb = protowire.AppendVarint(b, wiretag) // start group\n\t\tvar err error\n\t\tb, err = mopts.MarshalAppend(b, m)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, wiretag+1) // end group\n\t}\n\treturn b, nil\n}\n\nfunc consumeGroupSliceValue(b []byte, listv protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp != protowire.StartGroupType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tb, n := protowire.ConsumeGroup(num, b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tm := list.NewElement()\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     b,\n\t\tMessage: m.Message(),\n\t})\n\tif err != nil {\n\t\treturn protoreflect.Value{}, out, err\n\t}\n\tlist.Append(m)\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn listv, out, nil\n}\n\nvar coderGroupSliceValue = valueCoderFuncs{\n\tsize:      sizeGroupSliceValue,\n\tmarshal:   appendGroupSliceValue,\n\tunmarshal: consumeGroupSliceValue,\n\tisInit:    isInitMessageSliceValue,\n\tmerge:     mergeMessageListValue,\n}\n\nfunc makeGroupSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {\n\tnum := fd.Number()\n\tif mi := getMessageInfo(ft); mi != nil {\n\t\tfuncs := pointerCoderFuncs{\n\t\t\tsize:      sizeGroupSliceInfo,\n\t\t\tmarshal:   appendGroupSliceInfo,\n\t\t\tunmarshal: consumeGroupSliceInfo,\n\t\t\tmerge:     mergeMessageSlice,\n\t\t}\n\t\tif needsInitCheck(mi.Desc) {\n\t\t\tfuncs.isInit = isInitMessageSliceInfo\n\t\t}\n\t\treturn funcs\n\t}\n\treturn pointerCoderFuncs{\n\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\treturn sizeGroupSlice(p, ft, f.tagsize, opts)\n\t\t},\n\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\treturn appendGroupSlice(b, p, f.wiretag, ft, opts)\n\t\t},\n\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\treturn consumeGroupSlice(b, p, num, wtyp, ft, opts)\n\t\t},\n\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\treturn isInitMessageSlice(p, ft)\n\t\t},\n\t\tmerge: mergeMessageSlice,\n\t}\n}\n\nfunc sizeGroupSlice(p pointer, messageType reflect.Type, tagsize int, _ marshalOptions) int {\n\ts := p.PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(messageType.Elem()))\n\t\tn += 2*tagsize + proto.Size(m)\n\t}\n\treturn n\n}\n\nfunc appendGroupSlice(b []byte, p pointer, wiretag uint64, messageType reflect.Type, opts marshalOptions) ([]byte, error) {\n\ts := p.PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tm := asMessage(v.AsValueOf(messageType.Elem()))\n\t\tb = protowire.AppendVarint(b, wiretag) // start group\n\t\tb, err = opts.Options().MarshalAppend(b, m)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, wiretag+1) // end group\n\t}\n\treturn b, nil\n}\n\nfunc consumeGroupSlice(b []byte, p pointer, num protowire.Number, wtyp protowire.Type, goType reflect.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn out, errUnknown\n\t}\n\tb, n := protowire.ConsumeGroup(num, b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tmp := reflect.New(goType.Elem())\n\to, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{\n\t\tBuf:     b,\n\t\tMessage: asMessage(mp).ProtoReflect(),\n\t})\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tp.AppendPointerSlice(pointerOfValue(mp))\n\tout.n = n\n\tout.initialized = o.Flags&protoiface.UnmarshalInitialized != 0\n\treturn out, nil\n}\n\nfunc sizeGroupSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\ts := p.PointerSlice()\n\tn := 0\n\tfor _, v := range s {\n\t\tn += 2*f.tagsize + f.mi.sizePointer(v, opts)\n\t}\n\treturn n\n}\n\nfunc appendGroupSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := p.PointerSlice()\n\tvar err error\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag) // start group\n\t\tb, err = f.mi.marshalAppendPointer(b, v, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, f.wiretag+1) // end group\n\t}\n\treturn b, nil\n}\n\nfunc consumeGroupSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\tif wtyp != protowire.StartGroupType {\n\t\treturn unmarshalOutput{}, errUnknown\n\t}\n\tm := reflect.New(f.mi.GoReflectType.Elem()).Interface()\n\tmp := pointerOfIface(m)\n\tout, err := f.mi.unmarshalPointer(b, mp, f.num, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tp.AppendPointerSlice(mp)\n\treturn out, nil\n}\n\nfunc asMessage(v reflect.Value) protoreflect.ProtoMessage {\n\tif m, ok := v.Interface().(protoreflect.ProtoMessage); ok {\n\t\treturn m\n\t}\n\treturn legacyWrapMessage(v).Interface()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage impl\n\nimport (\n\t\"math\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// sizeBool returns the size of wire encoding a bool pointer as a Bool.\nfunc sizeBool(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Bool()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))\n}\n\n// appendBool wire encodes a bool pointer as a Bool.\nfunc appendBool(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bool()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\treturn b, nil\n}\n\n// consumeBool wire decodes a bool pointer as a Bool.\nfunc consumeBool(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Bool() = protowire.DecodeBool(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBool = pointerCoderFuncs{\n\tsize:      sizeBool,\n\tmarshal:   appendBool,\n\tunmarshal: consumeBool,\n\tmerge:     mergeBool,\n}\n\n// sizeBoolNoZero returns the size of wire encoding a bool pointer as a Bool.\n// The zero value is not encoded.\nfunc sizeBoolNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Bool()\n\tif v == false {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))\n}\n\n// appendBoolNoZero wire encodes a bool pointer as a Bool.\n// The zero value is not encoded.\nfunc appendBoolNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bool()\n\tif v == false {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\treturn b, nil\n}\n\nvar coderBoolNoZero = pointerCoderFuncs{\n\tsize:      sizeBoolNoZero,\n\tmarshal:   appendBoolNoZero,\n\tunmarshal: consumeBool,\n\tmerge:     mergeBoolNoZero,\n}\n\n// sizeBoolPtr returns the size of wire encoding a *bool pointer as a Bool.\n// It panics if the pointer is nil.\nfunc sizeBoolPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.BoolPtr()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))\n}\n\n// appendBoolPtr wire encodes a *bool pointer as a Bool.\n// It panics if the pointer is nil.\nfunc appendBoolPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.BoolPtr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\treturn b, nil\n}\n\n// consumeBoolPtr wire decodes a *bool pointer as a Bool.\nfunc consumeBoolPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.BoolPtr()\n\tif *vp == nil {\n\t\t*vp = new(bool)\n\t}\n\t**vp = protowire.DecodeBool(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBoolPtr = pointerCoderFuncs{\n\tsize:      sizeBoolPtr,\n\tmarshal:   appendBoolPtr,\n\tunmarshal: consumeBoolPtr,\n\tmerge:     mergeBoolPtr,\n}\n\n// sizeBoolSlice returns the size of wire encoding a []bool pointer as a repeated Bool.\nfunc sizeBoolSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.BoolSlice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))\n\t}\n\treturn size\n}\n\n// appendBoolSlice encodes a []bool pointer as a repeated Bool.\nfunc appendBoolSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.BoolSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\t}\n\treturn b, nil\n}\n\n// consumeBoolSlice wire decodes a []bool pointer as a repeated Bool.\nfunc consumeBoolSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.BoolSlice()\n\tif wtyp == protowire.BytesType {\n\t\ts := *sp\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, protowire.DecodeBool(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, protowire.DecodeBool(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBoolSlice = pointerCoderFuncs{\n\tsize:      sizeBoolSlice,\n\tmarshal:   appendBoolSlice,\n\tunmarshal: consumeBoolSlice,\n\tmerge:     mergeBoolSlice,\n}\n\n// sizeBoolPackedSlice returns the size of wire encoding a []bool pointer as a packed repeated Bool.\nfunc sizeBoolPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.BoolSlice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeBool(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendBoolPackedSlice encodes a []bool pointer as a packed repeated Bool.\nfunc appendBoolPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.BoolSlice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeBool(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v))\n\t}\n\treturn b, nil\n}\n\nvar coderBoolPackedSlice = pointerCoderFuncs{\n\tsize:      sizeBoolPackedSlice,\n\tmarshal:   appendBoolPackedSlice,\n\tunmarshal: consumeBoolSlice,\n\tmerge:     mergeBoolSlice,\n}\n\n// sizeBoolValue returns the size of wire encoding a bool value as a Bool.\nfunc sizeBoolValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n}\n\n// appendBoolValue encodes a bool value as a Bool.\nfunc appendBoolValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))\n\treturn b, nil\n}\n\n// consumeBoolValue decodes a bool value as a Bool.\nfunc consumeBoolValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfBool(protowire.DecodeBool(v)), out, nil\n}\n\nvar coderBoolValue = valueCoderFuncs{\n\tsize:      sizeBoolValue,\n\tmarshal:   appendBoolValue,\n\tunmarshal: consumeBoolValue,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeBoolSliceValue returns the size of wire encoding a []bool value as a repeated Bool.\nfunc sizeBoolSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n\t}\n\treturn size\n}\n\n// appendBoolSliceValue encodes a []bool value as a repeated Bool.\nfunc appendBoolSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))\n\t}\n\treturn b, nil\n}\n\n// consumeBoolSliceValue wire decodes a []bool value as a repeated Bool.\nfunc consumeBoolSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderBoolSliceValue = valueCoderFuncs{\n\tsize:      sizeBoolSliceValue,\n\tmarshal:   appendBoolSliceValue,\n\tunmarshal: consumeBoolSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeBoolPackedSliceValue returns the size of wire encoding a []bool value as a packed repeated Bool.\nfunc sizeBoolPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendBoolPackedSliceValue encodes a []bool value as a packed repeated Bool.\nfunc appendBoolPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))\n\t}\n\treturn b, nil\n}\n\nvar coderBoolPackedSliceValue = valueCoderFuncs{\n\tsize:      sizeBoolPackedSliceValue,\n\tmarshal:   appendBoolPackedSliceValue,\n\tunmarshal: consumeBoolSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeEnumValue returns the size of wire encoding a  value as a Enum.\nfunc sizeEnumValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(uint64(v.Enum()))\n}\n\n// appendEnumValue encodes a  value as a Enum.\nfunc appendEnumValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(v.Enum()))\n\treturn b, nil\n}\n\n// consumeEnumValue decodes a  value as a Enum.\nfunc consumeEnumValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), out, nil\n}\n\nvar coderEnumValue = valueCoderFuncs{\n\tsize:      sizeEnumValue,\n\tmarshal:   appendEnumValue,\n\tunmarshal: consumeEnumValue,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeEnumSliceValue returns the size of wire encoding a [] value as a repeated Enum.\nfunc sizeEnumSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(uint64(v.Enum()))\n\t}\n\treturn size\n}\n\n// appendEnumSliceValue encodes a [] value as a repeated Enum.\nfunc appendEnumSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v.Enum()))\n\t}\n\treturn b, nil\n}\n\n// consumeEnumSliceValue wire decodes a [] value as a repeated Enum.\nfunc consumeEnumSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderEnumSliceValue = valueCoderFuncs{\n\tsize:      sizeEnumSliceValue,\n\tmarshal:   appendEnumSliceValue,\n\tunmarshal: consumeEnumSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeEnumPackedSliceValue returns the size of wire encoding a [] value as a packed repeated Enum.\nfunc sizeEnumPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(v.Enum()))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendEnumPackedSliceValue encodes a [] value as a packed repeated Enum.\nfunc appendEnumPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(v.Enum()))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, uint64(v.Enum()))\n\t}\n\treturn b, nil\n}\n\nvar coderEnumPackedSliceValue = valueCoderFuncs{\n\tsize:      sizeEnumPackedSliceValue,\n\tmarshal:   appendEnumPackedSliceValue,\n\tunmarshal: consumeEnumSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeInt32 returns the size of wire encoding a int32 pointer as a Int32.\nfunc sizeInt32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt32 wire encodes a int32 pointer as a Int32.\nfunc appendInt32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeInt32 wire decodes a int32 pointer as a Int32.\nfunc consumeInt32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int32() = int32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt32 = pointerCoderFuncs{\n\tsize:      sizeInt32,\n\tmarshal:   appendInt32,\n\tunmarshal: consumeInt32,\n\tmerge:     mergeInt32,\n}\n\n// sizeInt32NoZero returns the size of wire encoding a int32 pointer as a Int32.\n// The zero value is not encoded.\nfunc sizeInt32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt32NoZero wire encodes a int32 pointer as a Int32.\n// The zero value is not encoded.\nfunc appendInt32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\nvar coderInt32NoZero = pointerCoderFuncs{\n\tsize:      sizeInt32NoZero,\n\tmarshal:   appendInt32NoZero,\n\tunmarshal: consumeInt32,\n\tmerge:     mergeInt32NoZero,\n}\n\n// sizeInt32Ptr returns the size of wire encoding a *int32 pointer as a Int32.\n// It panics if the pointer is nil.\nfunc sizeInt32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Int32Ptr()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt32Ptr wire encodes a *int32 pointer as a Int32.\n// It panics if the pointer is nil.\nfunc appendInt32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeInt32Ptr wire decodes a *int32 pointer as a Int32.\nfunc consumeInt32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int32)\n\t}\n\t**vp = int32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt32Ptr = pointerCoderFuncs{\n\tsize:      sizeInt32Ptr,\n\tmarshal:   appendInt32Ptr,\n\tunmarshal: consumeInt32Ptr,\n\tmerge:     mergeInt32Ptr,\n}\n\n// sizeInt32Slice returns the size of wire encoding a []int32 pointer as a repeated Int32.\nfunc sizeInt32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(uint64(v))\n\t}\n\treturn size\n}\n\n// appendInt32Slice encodes a []int32 pointer as a repeated Int32.\nfunc appendInt32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\n// consumeInt32Slice wire decodes a []int32 pointer as a repeated Int32.\nfunc consumeInt32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int32Slice()\n\tif wtyp == protowire.BytesType {\n\t\ts := *sp\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int32(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int32(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt32Slice = pointerCoderFuncs{\n\tsize:      sizeInt32Slice,\n\tmarshal:   appendInt32Slice,\n\tunmarshal: consumeInt32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeInt32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Int32.\nfunc sizeInt32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendInt32PackedSlice encodes a []int32 pointer as a packed repeated Int32.\nfunc appendInt32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\nvar coderInt32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeInt32PackedSlice,\n\tmarshal:   appendInt32PackedSlice,\n\tunmarshal: consumeInt32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeInt32Value returns the size of wire encoding a int32 value as a Int32.\nfunc sizeInt32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(uint64(int32(v.Int())))\n}\n\n// appendInt32Value encodes a int32 value as a Int32.\nfunc appendInt32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(int32(v.Int())))\n\treturn b, nil\n}\n\n// consumeInt32Value decodes a int32 value as a Int32.\nfunc consumeInt32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt32(int32(v)), out, nil\n}\n\nvar coderInt32Value = valueCoderFuncs{\n\tsize:      sizeInt32Value,\n\tmarshal:   appendInt32Value,\n\tunmarshal: consumeInt32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeInt32SliceValue returns the size of wire encoding a []int32 value as a repeated Int32.\nfunc sizeInt32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(uint64(int32(v.Int())))\n\t}\n\treturn size\n}\n\n// appendInt32SliceValue encodes a []int32 value as a repeated Int32.\nfunc appendInt32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(int32(v.Int())))\n\t}\n\treturn b, nil\n}\n\n// consumeInt32SliceValue wire decodes a []int32 value as a repeated Int32.\nfunc consumeInt32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderInt32SliceValue = valueCoderFuncs{\n\tsize:      sizeInt32SliceValue,\n\tmarshal:   appendInt32SliceValue,\n\tunmarshal: consumeInt32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeInt32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Int32.\nfunc sizeInt32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(int32(v.Int())))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendInt32PackedSliceValue encodes a []int32 value as a packed repeated Int32.\nfunc appendInt32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(int32(v.Int())))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, uint64(int32(v.Int())))\n\t}\n\treturn b, nil\n}\n\nvar coderInt32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeInt32PackedSliceValue,\n\tmarshal:   appendInt32PackedSliceValue,\n\tunmarshal: consumeInt32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSint32 returns the size of wire encoding a int32 pointer as a Sint32.\nfunc sizeSint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n}\n\n// appendSint32 wire encodes a int32 pointer as a Sint32.\nfunc appendSint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\treturn b, nil\n}\n\n// consumeSint32 wire decodes a int32 pointer as a Sint32.\nfunc consumeSint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int32() = int32(protowire.DecodeZigZag(v & math.MaxUint32))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint32 = pointerCoderFuncs{\n\tsize:      sizeSint32,\n\tmarshal:   appendSint32,\n\tunmarshal: consumeSint32,\n\tmerge:     mergeInt32,\n}\n\n// sizeSint32NoZero returns the size of wire encoding a int32 pointer as a Sint32.\n// The zero value is not encoded.\nfunc sizeSint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n}\n\n// appendSint32NoZero wire encodes a int32 pointer as a Sint32.\n// The zero value is not encoded.\nfunc appendSint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\treturn b, nil\n}\n\nvar coderSint32NoZero = pointerCoderFuncs{\n\tsize:      sizeSint32NoZero,\n\tmarshal:   appendSint32NoZero,\n\tunmarshal: consumeSint32,\n\tmerge:     mergeInt32NoZero,\n}\n\n// sizeSint32Ptr returns the size of wire encoding a *int32 pointer as a Sint32.\n// It panics if the pointer is nil.\nfunc sizeSint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Int32Ptr()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n}\n\n// appendSint32Ptr wire encodes a *int32 pointer as a Sint32.\n// It panics if the pointer is nil.\nfunc appendSint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\treturn b, nil\n}\n\n// consumeSint32Ptr wire decodes a *int32 pointer as a Sint32.\nfunc consumeSint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int32)\n\t}\n\t**vp = int32(protowire.DecodeZigZag(v & math.MaxUint32))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint32Ptr = pointerCoderFuncs{\n\tsize:      sizeSint32Ptr,\n\tmarshal:   appendSint32Ptr,\n\tunmarshal: consumeSint32Ptr,\n\tmerge:     mergeInt32Ptr,\n}\n\n// sizeSint32Slice returns the size of wire encoding a []int32 pointer as a repeated Sint32.\nfunc sizeSint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n\t}\n\treturn size\n}\n\n// appendSint32Slice encodes a []int32 pointer as a repeated Sint32.\nfunc appendSint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\t}\n\treturn b, nil\n}\n\n// consumeSint32Slice wire decodes a []int32 pointer as a repeated Sint32.\nfunc consumeSint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int32Slice()\n\tif wtyp == protowire.BytesType {\n\t\ts := *sp\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int32(protowire.DecodeZigZag(v&math.MaxUint32)))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int32(protowire.DecodeZigZag(v&math.MaxUint32)))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint32Slice = pointerCoderFuncs{\n\tsize:      sizeSint32Slice,\n\tmarshal:   appendSint32Slice,\n\tunmarshal: consumeSint32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeSint32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sint32.\nfunc sizeSint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendSint32PackedSlice encodes a []int32 pointer as a packed repeated Sint32.\nfunc appendSint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))\n\t}\n\treturn b, nil\n}\n\nvar coderSint32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeSint32PackedSlice,\n\tmarshal:   appendSint32PackedSlice,\n\tunmarshal: consumeSint32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeSint32Value returns the size of wire encoding a int32 value as a Sint32.\nfunc sizeSint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n}\n\n// appendSint32Value encodes a int32 value as a Sint32.\nfunc appendSint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))\n\treturn b, nil\n}\n\n// consumeSint32Value decodes a int32 value as a Sint32.\nfunc consumeSint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), out, nil\n}\n\nvar coderSint32Value = valueCoderFuncs{\n\tsize:      sizeSint32Value,\n\tmarshal:   appendSint32Value,\n\tunmarshal: consumeSint32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeSint32SliceValue returns the size of wire encoding a []int32 value as a repeated Sint32.\nfunc sizeSint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\treturn size\n}\n\n// appendSint32SliceValue encodes a []int32 value as a repeated Sint32.\nfunc appendSint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\treturn b, nil\n}\n\n// consumeSint32SliceValue wire decodes a []int32 value as a repeated Sint32.\nfunc consumeSint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderSint32SliceValue = valueCoderFuncs{\n\tsize:      sizeSint32SliceValue,\n\tmarshal:   appendSint32SliceValue,\n\tunmarshal: consumeSint32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSint32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sint32.\nfunc sizeSint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendSint32PackedSliceValue encodes a []int32 value as a packed repeated Sint32.\nfunc appendSint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))\n\t}\n\treturn b, nil\n}\n\nvar coderSint32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeSint32PackedSliceValue,\n\tmarshal:   appendSint32PackedSliceValue,\n\tunmarshal: consumeSint32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeUint32 returns the size of wire encoding a uint32 pointer as a Uint32.\nfunc sizeUint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint32()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendUint32 wire encodes a uint32 pointer as a Uint32.\nfunc appendUint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeUint32 wire decodes a uint32 pointer as a Uint32.\nfunc consumeUint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Uint32() = uint32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint32 = pointerCoderFuncs{\n\tsize:      sizeUint32,\n\tmarshal:   appendUint32,\n\tunmarshal: consumeUint32,\n\tmerge:     mergeUint32,\n}\n\n// sizeUint32NoZero returns the size of wire encoding a uint32 pointer as a Uint32.\n// The zero value is not encoded.\nfunc sizeUint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendUint32NoZero wire encodes a uint32 pointer as a Uint32.\n// The zero value is not encoded.\nfunc appendUint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\nvar coderUint32NoZero = pointerCoderFuncs{\n\tsize:      sizeUint32NoZero,\n\tmarshal:   appendUint32NoZero,\n\tunmarshal: consumeUint32,\n\tmerge:     mergeUint32NoZero,\n}\n\n// sizeUint32Ptr returns the size of wire encoding a *uint32 pointer as a Uint32.\n// It panics if the pointer is nil.\nfunc sizeUint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Uint32Ptr()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendUint32Ptr wire encodes a *uint32 pointer as a Uint32.\n// It panics if the pointer is nil.\nfunc appendUint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Uint32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeUint32Ptr wire decodes a *uint32 pointer as a Uint32.\nfunc consumeUint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Uint32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(uint32)\n\t}\n\t**vp = uint32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint32Ptr = pointerCoderFuncs{\n\tsize:      sizeUint32Ptr,\n\tmarshal:   appendUint32Ptr,\n\tunmarshal: consumeUint32Ptr,\n\tmerge:     mergeUint32Ptr,\n}\n\n// sizeUint32Slice returns the size of wire encoding a []uint32 pointer as a repeated Uint32.\nfunc sizeUint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint32Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(uint64(v))\n\t}\n\treturn size\n}\n\n// appendUint32Slice encodes a []uint32 pointer as a repeated Uint32.\nfunc appendUint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\n// consumeUint32Slice wire decodes a []uint32 pointer as a repeated Uint32.\nfunc consumeUint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Uint32Slice()\n\tif wtyp == protowire.BytesType {\n\t\ts := *sp\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, uint32(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, uint32(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint32Slice = pointerCoderFuncs{\n\tsize:      sizeUint32Slice,\n\tmarshal:   appendUint32Slice,\n\tunmarshal: consumeUint32Slice,\n\tmerge:     mergeUint32Slice,\n}\n\n// sizeUint32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Uint32.\nfunc sizeUint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendUint32PackedSlice encodes a []uint32 pointer as a packed repeated Uint32.\nfunc appendUint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\nvar coderUint32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeUint32PackedSlice,\n\tmarshal:   appendUint32PackedSlice,\n\tunmarshal: consumeUint32Slice,\n\tmerge:     mergeUint32Slice,\n}\n\n// sizeUint32Value returns the size of wire encoding a uint32 value as a Uint32.\nfunc sizeUint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(uint64(uint32(v.Uint())))\n}\n\n// appendUint32Value encodes a uint32 value as a Uint32.\nfunc appendUint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(uint32(v.Uint())))\n\treturn b, nil\n}\n\n// consumeUint32Value decodes a uint32 value as a Uint32.\nfunc consumeUint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfUint32(uint32(v)), out, nil\n}\n\nvar coderUint32Value = valueCoderFuncs{\n\tsize:      sizeUint32Value,\n\tmarshal:   appendUint32Value,\n\tunmarshal: consumeUint32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeUint32SliceValue returns the size of wire encoding a []uint32 value as a repeated Uint32.\nfunc sizeUint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(uint64(uint32(v.Uint())))\n\t}\n\treturn size\n}\n\n// appendUint32SliceValue encodes a []uint32 value as a repeated Uint32.\nfunc appendUint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(uint32(v.Uint())))\n\t}\n\treturn b, nil\n}\n\n// consumeUint32SliceValue wire decodes a []uint32 value as a repeated Uint32.\nfunc consumeUint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderUint32SliceValue = valueCoderFuncs{\n\tsize:      sizeUint32SliceValue,\n\tmarshal:   appendUint32SliceValue,\n\tunmarshal: consumeUint32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeUint32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Uint32.\nfunc sizeUint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(uint32(v.Uint())))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendUint32PackedSliceValue encodes a []uint32 value as a packed repeated Uint32.\nfunc appendUint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(uint32(v.Uint())))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, uint64(uint32(v.Uint())))\n\t}\n\treturn b, nil\n}\n\nvar coderUint32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeUint32PackedSliceValue,\n\tmarshal:   appendUint32PackedSliceValue,\n\tunmarshal: consumeUint32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeInt64 returns the size of wire encoding a int64 pointer as a Int64.\nfunc sizeInt64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt64 wire encodes a int64 pointer as a Int64.\nfunc appendInt64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeInt64 wire decodes a int64 pointer as a Int64.\nfunc consumeInt64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int64() = int64(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt64 = pointerCoderFuncs{\n\tsize:      sizeInt64,\n\tmarshal:   appendInt64,\n\tunmarshal: consumeInt64,\n\tmerge:     mergeInt64,\n}\n\n// sizeInt64NoZero returns the size of wire encoding a int64 pointer as a Int64.\n// The zero value is not encoded.\nfunc sizeInt64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt64NoZero wire encodes a int64 pointer as a Int64.\n// The zero value is not encoded.\nfunc appendInt64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\nvar coderInt64NoZero = pointerCoderFuncs{\n\tsize:      sizeInt64NoZero,\n\tmarshal:   appendInt64NoZero,\n\tunmarshal: consumeInt64,\n\tmerge:     mergeInt64NoZero,\n}\n\n// sizeInt64Ptr returns the size of wire encoding a *int64 pointer as a Int64.\n// It panics if the pointer is nil.\nfunc sizeInt64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Int64Ptr()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\n// appendInt64Ptr wire encodes a *int64 pointer as a Int64.\n// It panics if the pointer is nil.\nfunc appendInt64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeInt64Ptr wire decodes a *int64 pointer as a Int64.\nfunc consumeInt64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int64)\n\t}\n\t**vp = int64(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt64Ptr = pointerCoderFuncs{\n\tsize:      sizeInt64Ptr,\n\tmarshal:   appendInt64Ptr,\n\tunmarshal: consumeInt64Ptr,\n\tmerge:     mergeInt64Ptr,\n}\n\n// sizeInt64Slice returns the size of wire encoding a []int64 pointer as a repeated Int64.\nfunc sizeInt64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(uint64(v))\n\t}\n\treturn size\n}\n\n// appendInt64Slice encodes a []int64 pointer as a repeated Int64.\nfunc appendInt64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\n// consumeInt64Slice wire decodes a []int64 pointer as a repeated Int64.\nfunc consumeInt64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int64Slice()\n\tif wtyp == protowire.BytesType {\n\t\ts := *sp\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int64(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int64(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderInt64Slice = pointerCoderFuncs{\n\tsize:      sizeInt64Slice,\n\tmarshal:   appendInt64Slice,\n\tunmarshal: consumeInt64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeInt64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Int64.\nfunc sizeInt64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendInt64PackedSlice encodes a []int64 pointer as a packed repeated Int64.\nfunc appendInt64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(uint64(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\nvar coderInt64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeInt64PackedSlice,\n\tmarshal:   appendInt64PackedSlice,\n\tunmarshal: consumeInt64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeInt64Value returns the size of wire encoding a int64 value as a Int64.\nfunc sizeInt64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(uint64(v.Int()))\n}\n\n// appendInt64Value encodes a int64 value as a Int64.\nfunc appendInt64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, uint64(v.Int()))\n\treturn b, nil\n}\n\n// consumeInt64Value decodes a int64 value as a Int64.\nfunc consumeInt64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt64(int64(v)), out, nil\n}\n\nvar coderInt64Value = valueCoderFuncs{\n\tsize:      sizeInt64Value,\n\tmarshal:   appendInt64Value,\n\tunmarshal: consumeInt64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeInt64SliceValue returns the size of wire encoding a []int64 value as a repeated Int64.\nfunc sizeInt64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(uint64(v.Int()))\n\t}\n\treturn size\n}\n\n// appendInt64SliceValue encodes a []int64 value as a repeated Int64.\nfunc appendInt64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(v.Int()))\n\t}\n\treturn b, nil\n}\n\n// consumeInt64SliceValue wire decodes a []int64 value as a repeated Int64.\nfunc consumeInt64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderInt64SliceValue = valueCoderFuncs{\n\tsize:      sizeInt64SliceValue,\n\tmarshal:   appendInt64SliceValue,\n\tunmarshal: consumeInt64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeInt64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Int64.\nfunc sizeInt64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(v.Int()))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendInt64PackedSliceValue encodes a []int64 value as a packed repeated Int64.\nfunc appendInt64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(uint64(v.Int()))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, uint64(v.Int()))\n\t}\n\treturn b, nil\n}\n\nvar coderInt64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeInt64PackedSliceValue,\n\tmarshal:   appendInt64PackedSliceValue,\n\tunmarshal: consumeInt64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSint64 returns the size of wire encoding a int64 pointer as a Sint64.\nfunc sizeSint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))\n}\n\n// appendSint64 wire encodes a int64 pointer as a Sint64.\nfunc appendSint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\treturn b, nil\n}\n\n// consumeSint64 wire decodes a int64 pointer as a Sint64.\nfunc consumeSint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int64() = protowire.DecodeZigZag(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint64 = pointerCoderFuncs{\n\tsize:      sizeSint64,\n\tmarshal:   appendSint64,\n\tunmarshal: consumeSint64,\n\tmerge:     mergeInt64,\n}\n\n// sizeSint64NoZero returns the size of wire encoding a int64 pointer as a Sint64.\n// The zero value is not encoded.\nfunc sizeSint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))\n}\n\n// appendSint64NoZero wire encodes a int64 pointer as a Sint64.\n// The zero value is not encoded.\nfunc appendSint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\treturn b, nil\n}\n\nvar coderSint64NoZero = pointerCoderFuncs{\n\tsize:      sizeSint64NoZero,\n\tmarshal:   appendSint64NoZero,\n\tunmarshal: consumeSint64,\n\tmerge:     mergeInt64NoZero,\n}\n\n// sizeSint64Ptr returns the size of wire encoding a *int64 pointer as a Sint64.\n// It panics if the pointer is nil.\nfunc sizeSint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Int64Ptr()\n\treturn f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))\n}\n\n// appendSint64Ptr wire encodes a *int64 pointer as a Sint64.\n// It panics if the pointer is nil.\nfunc appendSint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\treturn b, nil\n}\n\n// consumeSint64Ptr wire decodes a *int64 pointer as a Sint64.\nfunc consumeSint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int64)\n\t}\n\t**vp = protowire.DecodeZigZag(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint64Ptr = pointerCoderFuncs{\n\tsize:      sizeSint64Ptr,\n\tmarshal:   appendSint64Ptr,\n\tunmarshal: consumeSint64Ptr,\n\tmerge:     mergeInt64Ptr,\n}\n\n// sizeSint64Slice returns the size of wire encoding a []int64 pointer as a repeated Sint64.\nfunc sizeSint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))\n\t}\n\treturn size\n}\n\n// appendSint64Slice encodes a []int64 pointer as a repeated Sint64.\nfunc appendSint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\t}\n\treturn b, nil\n}\n\n// consumeSint64Slice wire decodes a []int64 pointer as a repeated Sint64.\nfunc consumeSint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int64Slice()\n\tif wtyp == protowire.BytesType {\n\t\ts := *sp\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, protowire.DecodeZigZag(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, protowire.DecodeZigZag(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSint64Slice = pointerCoderFuncs{\n\tsize:      sizeSint64Slice,\n\tmarshal:   appendSint64Slice,\n\tunmarshal: consumeSint64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeSint64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sint64.\nfunc sizeSint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(v))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendSint64PackedSlice encodes a []int64 pointer as a packed repeated Sint64.\nfunc appendSint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(v))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v))\n\t}\n\treturn b, nil\n}\n\nvar coderSint64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeSint64PackedSlice,\n\tmarshal:   appendSint64PackedSlice,\n\tunmarshal: consumeSint64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeSint64Value returns the size of wire encoding a int64 value as a Sint64.\nfunc sizeSint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n}\n\n// appendSint64Value encodes a int64 value as a Sint64.\nfunc appendSint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))\n\treturn b, nil\n}\n\n// consumeSint64Value decodes a int64 value as a Sint64.\nfunc consumeSint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), out, nil\n}\n\nvar coderSint64Value = valueCoderFuncs{\n\tsize:      sizeSint64Value,\n\tmarshal:   appendSint64Value,\n\tunmarshal: consumeSint64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeSint64SliceValue returns the size of wire encoding a []int64 value as a repeated Sint64.\nfunc sizeSint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n\t}\n\treturn size\n}\n\n// appendSint64SliceValue encodes a []int64 value as a repeated Sint64.\nfunc appendSint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))\n\t}\n\treturn b, nil\n}\n\n// consumeSint64SliceValue wire decodes a []int64 value as a repeated Sint64.\nfunc consumeSint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderSint64SliceValue = valueCoderFuncs{\n\tsize:      sizeSint64SliceValue,\n\tmarshal:   appendSint64SliceValue,\n\tunmarshal: consumeSint64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSint64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sint64.\nfunc sizeSint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendSint64PackedSliceValue encodes a []int64 value as a packed repeated Sint64.\nfunc appendSint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))\n\t}\n\treturn b, nil\n}\n\nvar coderSint64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeSint64PackedSliceValue,\n\tmarshal:   appendSint64PackedSliceValue,\n\tunmarshal: consumeSint64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeUint64 returns the size of wire encoding a uint64 pointer as a Uint64.\nfunc sizeUint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint64()\n\treturn f.tagsize + protowire.SizeVarint(v)\n}\n\n// appendUint64 wire encodes a uint64 pointer as a Uint64.\nfunc appendUint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, v)\n\treturn b, nil\n}\n\n// consumeUint64 wire decodes a uint64 pointer as a Uint64.\nfunc consumeUint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Uint64() = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint64 = pointerCoderFuncs{\n\tsize:      sizeUint64,\n\tmarshal:   appendUint64,\n\tunmarshal: consumeUint64,\n\tmerge:     mergeUint64,\n}\n\n// sizeUint64NoZero returns the size of wire encoding a uint64 pointer as a Uint64.\n// The zero value is not encoded.\nfunc sizeUint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeVarint(v)\n}\n\n// appendUint64NoZero wire encodes a uint64 pointer as a Uint64.\n// The zero value is not encoded.\nfunc appendUint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, v)\n\treturn b, nil\n}\n\nvar coderUint64NoZero = pointerCoderFuncs{\n\tsize:      sizeUint64NoZero,\n\tmarshal:   appendUint64NoZero,\n\tunmarshal: consumeUint64,\n\tmerge:     mergeUint64NoZero,\n}\n\n// sizeUint64Ptr returns the size of wire encoding a *uint64 pointer as a Uint64.\n// It panics if the pointer is nil.\nfunc sizeUint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.Uint64Ptr()\n\treturn f.tagsize + protowire.SizeVarint(v)\n}\n\n// appendUint64Ptr wire encodes a *uint64 pointer as a Uint64.\n// It panics if the pointer is nil.\nfunc appendUint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Uint64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, v)\n\treturn b, nil\n}\n\n// consumeUint64Ptr wire decodes a *uint64 pointer as a Uint64.\nfunc consumeUint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Uint64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(uint64)\n\t}\n\t**vp = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint64Ptr = pointerCoderFuncs{\n\tsize:      sizeUint64Ptr,\n\tmarshal:   appendUint64Ptr,\n\tunmarshal: consumeUint64Ptr,\n\tmerge:     mergeUint64Ptr,\n}\n\n// sizeUint64Slice returns the size of wire encoding a []uint64 pointer as a repeated Uint64.\nfunc sizeUint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint64Slice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeVarint(v)\n\t}\n\treturn size\n}\n\n// appendUint64Slice encodes a []uint64 pointer as a repeated Uint64.\nfunc appendUint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeUint64Slice wire decodes a []uint64 pointer as a repeated Uint64.\nfunc consumeUint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Uint64Slice()\n\tif wtyp == protowire.BytesType {\n\t\ts := *sp\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, v)\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderUint64Slice = pointerCoderFuncs{\n\tsize:      sizeUint64Slice,\n\tmarshal:   appendUint64Slice,\n\tunmarshal: consumeUint64Slice,\n\tmerge:     mergeUint64Slice,\n}\n\n// sizeUint64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Uint64.\nfunc sizeUint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(v)\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendUint64PackedSlice encodes a []uint64 pointer as a packed repeated Uint64.\nfunc appendUint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor _, v := range s {\n\t\tn += protowire.SizeVarint(v)\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, v)\n\t}\n\treturn b, nil\n}\n\nvar coderUint64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeUint64PackedSlice,\n\tmarshal:   appendUint64PackedSlice,\n\tunmarshal: consumeUint64Slice,\n\tmerge:     mergeUint64Slice,\n}\n\n// sizeUint64Value returns the size of wire encoding a uint64 value as a Uint64.\nfunc sizeUint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeVarint(v.Uint())\n}\n\n// appendUint64Value encodes a uint64 value as a Uint64.\nfunc appendUint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendVarint(b, v.Uint())\n\treturn b, nil\n}\n\n// consumeUint64Value decodes a uint64 value as a Uint64.\nfunc consumeUint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfUint64(v), out, nil\n}\n\nvar coderUint64Value = valueCoderFuncs{\n\tsize:      sizeUint64Value,\n\tmarshal:   appendUint64Value,\n\tunmarshal: consumeUint64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeUint64SliceValue returns the size of wire encoding a []uint64 value as a repeated Uint64.\nfunc sizeUint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeVarint(v.Uint())\n\t}\n\treturn size\n}\n\n// appendUint64SliceValue encodes a []uint64 value as a repeated Uint64.\nfunc appendUint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendVarint(b, v.Uint())\n\t}\n\treturn b, nil\n}\n\n// consumeUint64SliceValue wire decodes a []uint64 value as a repeated Uint64.\nfunc consumeUint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tvar v uint64\n\t\t\tvar n int\n\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\tv = uint64(b[0])\n\t\t\t\tn = 1\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tn = 2\n\t\t\t} else {\n\t\t\t\tv, n = protowire.ConsumeVarint(b)\n\t\t\t}\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tvar v uint64\n\tvar n int\n\tif len(b) >= 1 && b[0] < 0x80 {\n\t\tv = uint64(b[0])\n\t\tn = 1\n\t} else if len(b) >= 2 && b[1] < 128 {\n\t\tv = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\tn = 2\n\t} else {\n\t\tv, n = protowire.ConsumeVarint(b)\n\t}\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfUint64(v))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderUint64SliceValue = valueCoderFuncs{\n\tsize:      sizeUint64SliceValue,\n\tmarshal:   appendUint64SliceValue,\n\tunmarshal: consumeUint64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeUint64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Uint64.\nfunc sizeUint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i, llen := 0, llen; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(v.Uint())\n\t}\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendUint64PackedSliceValue encodes a []uint64 value as a packed repeated Uint64.\nfunc appendUint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tn += protowire.SizeVarint(v.Uint())\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, v.Uint())\n\t}\n\treturn b, nil\n}\n\nvar coderUint64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeUint64PackedSliceValue,\n\tmarshal:   appendUint64PackedSliceValue,\n\tunmarshal: consumeUint64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSfixed32 returns the size of wire encoding a int32 pointer as a Sfixed32.\nfunc sizeSfixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendSfixed32 wire encodes a int32 pointer as a Sfixed32.\nfunc appendSfixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v))\n\treturn b, nil\n}\n\n// consumeSfixed32 wire decodes a int32 pointer as a Sfixed32.\nfunc consumeSfixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int32() = int32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed32 = pointerCoderFuncs{\n\tsize:      sizeSfixed32,\n\tmarshal:   appendSfixed32,\n\tunmarshal: consumeSfixed32,\n\tmerge:     mergeInt32,\n}\n\n// sizeSfixed32NoZero returns the size of wire encoding a int32 pointer as a Sfixed32.\n// The zero value is not encoded.\nfunc sizeSfixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendSfixed32NoZero wire encodes a int32 pointer as a Sfixed32.\n// The zero value is not encoded.\nfunc appendSfixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v))\n\treturn b, nil\n}\n\nvar coderSfixed32NoZero = pointerCoderFuncs{\n\tsize:      sizeSfixed32NoZero,\n\tmarshal:   appendSfixed32NoZero,\n\tunmarshal: consumeSfixed32,\n\tmerge:     mergeInt32NoZero,\n}\n\n// sizeSfixed32Ptr returns the size of wire encoding a *int32 pointer as a Sfixed32.\n// It panics if the pointer is nil.\nfunc sizeSfixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendSfixed32Ptr wire encodes a *int32 pointer as a Sfixed32.\n// It panics if the pointer is nil.\nfunc appendSfixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v))\n\treturn b, nil\n}\n\n// consumeSfixed32Ptr wire decodes a *int32 pointer as a Sfixed32.\nfunc consumeSfixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int32)\n\t}\n\t**vp = int32(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed32Ptr = pointerCoderFuncs{\n\tsize:      sizeSfixed32Ptr,\n\tmarshal:   appendSfixed32Ptr,\n\tunmarshal: consumeSfixed32Ptr,\n\tmerge:     mergeInt32Ptr,\n}\n\n// sizeSfixed32Slice returns the size of wire encoding a []int32 pointer as a repeated Sfixed32.\nfunc sizeSfixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendSfixed32Slice encodes a []int32 pointer as a repeated Sfixed32.\nfunc appendSfixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed32(b, uint32(v))\n\t}\n\treturn b, nil\n}\n\n// consumeSfixed32Slice wire decodes a []int32 pointer as a repeated Sfixed32.\nfunc consumeSfixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int32Slice()\n\tif wtyp == protowire.BytesType {\n\t\ts := *sp\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int32(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int32(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed32Slice = pointerCoderFuncs{\n\tsize:      sizeSfixed32Slice,\n\tmarshal:   appendSfixed32Slice,\n\tunmarshal: consumeSfixed32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeSfixed32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sfixed32.\nfunc sizeSfixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed32()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendSfixed32PackedSlice encodes a []int32 pointer as a packed repeated Sfixed32.\nfunc appendSfixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed32(b, uint32(v))\n\t}\n\treturn b, nil\n}\n\nvar coderSfixed32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeSfixed32PackedSlice,\n\tmarshal:   appendSfixed32PackedSlice,\n\tunmarshal: consumeSfixed32Slice,\n\tmerge:     mergeInt32Slice,\n}\n\n// sizeSfixed32Value returns the size of wire encoding a int32 value as a Sfixed32.\nfunc sizeSfixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed32()\n}\n\n// appendSfixed32Value encodes a int32 value as a Sfixed32.\nfunc appendSfixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v.Int()))\n\treturn b, nil\n}\n\n// consumeSfixed32Value decodes a int32 value as a Sfixed32.\nfunc consumeSfixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt32(int32(v)), out, nil\n}\n\nvar coderSfixed32Value = valueCoderFuncs{\n\tsize:      sizeSfixed32Value,\n\tmarshal:   appendSfixed32Value,\n\tunmarshal: consumeSfixed32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeSfixed32SliceValue returns the size of wire encoding a []int32 value as a repeated Sfixed32.\nfunc sizeSfixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendSfixed32SliceValue encodes a []int32 value as a repeated Sfixed32.\nfunc appendSfixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed32(b, uint32(v.Int()))\n\t}\n\treturn b, nil\n}\n\n// consumeSfixed32SliceValue wire decodes a []int32 value as a repeated Sfixed32.\nfunc consumeSfixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderSfixed32SliceValue = valueCoderFuncs{\n\tsize:      sizeSfixed32SliceValue,\n\tmarshal:   appendSfixed32SliceValue,\n\tunmarshal: consumeSfixed32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSfixed32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sfixed32.\nfunc sizeSfixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed32()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendSfixed32PackedSliceValue encodes a []int32 value as a packed repeated Sfixed32.\nfunc appendSfixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed32(b, uint32(v.Int()))\n\t}\n\treturn b, nil\n}\n\nvar coderSfixed32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeSfixed32PackedSliceValue,\n\tmarshal:   appendSfixed32PackedSliceValue,\n\tunmarshal: consumeSfixed32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFixed32 returns the size of wire encoding a uint32 pointer as a Fixed32.\nfunc sizeFixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFixed32 wire encodes a uint32 pointer as a Fixed32.\nfunc appendFixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, v)\n\treturn b, nil\n}\n\n// consumeFixed32 wire decodes a uint32 pointer as a Fixed32.\nfunc consumeFixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Uint32() = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed32 = pointerCoderFuncs{\n\tsize:      sizeFixed32,\n\tmarshal:   appendFixed32,\n\tunmarshal: consumeFixed32,\n\tmerge:     mergeUint32,\n}\n\n// sizeFixed32NoZero returns the size of wire encoding a uint32 pointer as a Fixed32.\n// The zero value is not encoded.\nfunc sizeFixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint32()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFixed32NoZero wire encodes a uint32 pointer as a Fixed32.\n// The zero value is not encoded.\nfunc appendFixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint32()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, v)\n\treturn b, nil\n}\n\nvar coderFixed32NoZero = pointerCoderFuncs{\n\tsize:      sizeFixed32NoZero,\n\tmarshal:   appendFixed32NoZero,\n\tunmarshal: consumeFixed32,\n\tmerge:     mergeUint32NoZero,\n}\n\n// sizeFixed32Ptr returns the size of wire encoding a *uint32 pointer as a Fixed32.\n// It panics if the pointer is nil.\nfunc sizeFixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFixed32Ptr wire encodes a *uint32 pointer as a Fixed32.\n// It panics if the pointer is nil.\nfunc appendFixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Uint32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, v)\n\treturn b, nil\n}\n\n// consumeFixed32Ptr wire decodes a *uint32 pointer as a Fixed32.\nfunc consumeFixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Uint32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(uint32)\n\t}\n\t**vp = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed32Ptr = pointerCoderFuncs{\n\tsize:      sizeFixed32Ptr,\n\tmarshal:   appendFixed32Ptr,\n\tunmarshal: consumeFixed32Ptr,\n\tmerge:     mergeUint32Ptr,\n}\n\n// sizeFixed32Slice returns the size of wire encoding a []uint32 pointer as a repeated Fixed32.\nfunc sizeFixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint32Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendFixed32Slice encodes a []uint32 pointer as a repeated Fixed32.\nfunc appendFixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed32(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeFixed32Slice wire decodes a []uint32 pointer as a repeated Fixed32.\nfunc consumeFixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Uint32Slice()\n\tif wtyp == protowire.BytesType {\n\t\ts := *sp\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, v)\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed32Slice = pointerCoderFuncs{\n\tsize:      sizeFixed32Slice,\n\tmarshal:   appendFixed32Slice,\n\tunmarshal: consumeFixed32Slice,\n\tmerge:     mergeUint32Slice,\n}\n\n// sizeFixed32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Fixed32.\nfunc sizeFixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed32()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendFixed32PackedSlice encodes a []uint32 pointer as a packed repeated Fixed32.\nfunc appendFixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed32(b, v)\n\t}\n\treturn b, nil\n}\n\nvar coderFixed32PackedSlice = pointerCoderFuncs{\n\tsize:      sizeFixed32PackedSlice,\n\tmarshal:   appendFixed32PackedSlice,\n\tunmarshal: consumeFixed32Slice,\n\tmerge:     mergeUint32Slice,\n}\n\n// sizeFixed32Value returns the size of wire encoding a uint32 value as a Fixed32.\nfunc sizeFixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed32()\n}\n\n// appendFixed32Value encodes a uint32 value as a Fixed32.\nfunc appendFixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed32(b, uint32(v.Uint()))\n\treturn b, nil\n}\n\n// consumeFixed32Value decodes a uint32 value as a Fixed32.\nfunc consumeFixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfUint32(uint32(v)), out, nil\n}\n\nvar coderFixed32Value = valueCoderFuncs{\n\tsize:      sizeFixed32Value,\n\tmarshal:   appendFixed32Value,\n\tunmarshal: consumeFixed32Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeFixed32SliceValue returns the size of wire encoding a []uint32 value as a repeated Fixed32.\nfunc sizeFixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendFixed32SliceValue encodes a []uint32 value as a repeated Fixed32.\nfunc appendFixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed32(b, uint32(v.Uint()))\n\t}\n\treturn b, nil\n}\n\n// consumeFixed32SliceValue wire decodes a []uint32 value as a repeated Fixed32.\nfunc consumeFixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderFixed32SliceValue = valueCoderFuncs{\n\tsize:      sizeFixed32SliceValue,\n\tmarshal:   appendFixed32SliceValue,\n\tunmarshal: consumeFixed32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFixed32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Fixed32.\nfunc sizeFixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed32()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendFixed32PackedSliceValue encodes a []uint32 value as a packed repeated Fixed32.\nfunc appendFixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed32(b, uint32(v.Uint()))\n\t}\n\treturn b, nil\n}\n\nvar coderFixed32PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeFixed32PackedSliceValue,\n\tmarshal:   appendFixed32PackedSliceValue,\n\tunmarshal: consumeFixed32SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFloat returns the size of wire encoding a float32 pointer as a Float.\nfunc sizeFloat(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFloat wire encodes a float32 pointer as a Float.\nfunc appendFloat(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Float32()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\treturn b, nil\n}\n\n// consumeFloat wire decodes a float32 pointer as a Float.\nfunc consumeFloat(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Float32() = math.Float32frombits(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFloat = pointerCoderFuncs{\n\tsize:      sizeFloat,\n\tmarshal:   appendFloat,\n\tunmarshal: consumeFloat,\n\tmerge:     mergeFloat32,\n}\n\n// sizeFloatNoZero returns the size of wire encoding a float32 pointer as a Float.\n// The zero value is not encoded.\nfunc sizeFloatNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Float32()\n\tif v == 0 && !math.Signbit(float64(v)) {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFloatNoZero wire encodes a float32 pointer as a Float.\n// The zero value is not encoded.\nfunc appendFloatNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Float32()\n\tif v == 0 && !math.Signbit(float64(v)) {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\treturn b, nil\n}\n\nvar coderFloatNoZero = pointerCoderFuncs{\n\tsize:      sizeFloatNoZero,\n\tmarshal:   appendFloatNoZero,\n\tunmarshal: consumeFloat,\n\tmerge:     mergeFloat32NoZero,\n}\n\n// sizeFloatPtr returns the size of wire encoding a *float32 pointer as a Float.\n// It panics if the pointer is nil.\nfunc sizeFloatPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed32()\n}\n\n// appendFloatPtr wire encodes a *float32 pointer as a Float.\n// It panics if the pointer is nil.\nfunc appendFloatPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Float32Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\treturn b, nil\n}\n\n// consumeFloatPtr wire decodes a *float32 pointer as a Float.\nfunc consumeFloatPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Float32Ptr()\n\tif *vp == nil {\n\t\t*vp = new(float32)\n\t}\n\t**vp = math.Float32frombits(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFloatPtr = pointerCoderFuncs{\n\tsize:      sizeFloatPtr,\n\tmarshal:   appendFloatPtr,\n\tunmarshal: consumeFloatPtr,\n\tmerge:     mergeFloat32Ptr,\n}\n\n// sizeFloatSlice returns the size of wire encoding a []float32 pointer as a repeated Float.\nfunc sizeFloatSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Float32Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendFloatSlice encodes a []float32 pointer as a repeated Float.\nfunc appendFloatSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Float32Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\t}\n\treturn b, nil\n}\n\n// consumeFloatSlice wire decodes a []float32 pointer as a repeated Float.\nfunc consumeFloatSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Float32Slice()\n\tif wtyp == protowire.BytesType {\n\t\ts := *sp\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, math.Float32frombits(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, math.Float32frombits(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFloatSlice = pointerCoderFuncs{\n\tsize:      sizeFloatSlice,\n\tmarshal:   appendFloatSlice,\n\tunmarshal: consumeFloatSlice,\n\tmerge:     mergeFloat32Slice,\n}\n\n// sizeFloatPackedSlice returns the size of wire encoding a []float32 pointer as a packed repeated Float.\nfunc sizeFloatPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Float32Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed32()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendFloatPackedSlice encodes a []float32 pointer as a packed repeated Float.\nfunc appendFloatPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Float32Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(v))\n\t}\n\treturn b, nil\n}\n\nvar coderFloatPackedSlice = pointerCoderFuncs{\n\tsize:      sizeFloatPackedSlice,\n\tmarshal:   appendFloatPackedSlice,\n\tunmarshal: consumeFloatSlice,\n\tmerge:     mergeFloat32Slice,\n}\n\n// sizeFloatValue returns the size of wire encoding a float32 value as a Float.\nfunc sizeFloatValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed32()\n}\n\n// appendFloatValue encodes a float32 value as a Float.\nfunc appendFloatValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))\n\treturn b, nil\n}\n\n// consumeFloatValue decodes a float32 value as a Float.\nfunc consumeFloatValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), out, nil\n}\n\nvar coderFloatValue = valueCoderFuncs{\n\tsize:      sizeFloatValue,\n\tmarshal:   appendFloatValue,\n\tunmarshal: consumeFloatValue,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeFloatSliceValue returns the size of wire encoding a []float32 value as a repeated Float.\nfunc sizeFloatSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed32())\n\treturn size\n}\n\n// appendFloatSliceValue encodes a []float32 value as a repeated Float.\nfunc appendFloatSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))\n\t}\n\treturn b, nil\n}\n\n// consumeFloatSliceValue wire decodes a []float32 value as a repeated Float.\nfunc consumeFloatSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed32(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed32Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed32(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderFloatSliceValue = valueCoderFuncs{\n\tsize:      sizeFloatSliceValue,\n\tmarshal:   appendFloatSliceValue,\n\tunmarshal: consumeFloatSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFloatPackedSliceValue returns the size of wire encoding a []float32 value as a packed repeated Float.\nfunc sizeFloatPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed32()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendFloatPackedSliceValue encodes a []float32 value as a packed repeated Float.\nfunc appendFloatPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed32()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))\n\t}\n\treturn b, nil\n}\n\nvar coderFloatPackedSliceValue = valueCoderFuncs{\n\tsize:      sizeFloatPackedSliceValue,\n\tmarshal:   appendFloatPackedSliceValue,\n\tunmarshal: consumeFloatSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSfixed64 returns the size of wire encoding a int64 pointer as a Sfixed64.\nfunc sizeSfixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendSfixed64 wire encodes a int64 pointer as a Sfixed64.\nfunc appendSfixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeSfixed64 wire decodes a int64 pointer as a Sfixed64.\nfunc consumeSfixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Int64() = int64(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed64 = pointerCoderFuncs{\n\tsize:      sizeSfixed64,\n\tmarshal:   appendSfixed64,\n\tunmarshal: consumeSfixed64,\n\tmerge:     mergeInt64,\n}\n\n// sizeSfixed64NoZero returns the size of wire encoding a int64 pointer as a Sfixed64.\n// The zero value is not encoded.\nfunc sizeSfixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendSfixed64NoZero wire encodes a int64 pointer as a Sfixed64.\n// The zero value is not encoded.\nfunc appendSfixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Int64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, uint64(v))\n\treturn b, nil\n}\n\nvar coderSfixed64NoZero = pointerCoderFuncs{\n\tsize:      sizeSfixed64NoZero,\n\tmarshal:   appendSfixed64NoZero,\n\tunmarshal: consumeSfixed64,\n\tmerge:     mergeInt64NoZero,\n}\n\n// sizeSfixed64Ptr returns the size of wire encoding a *int64 pointer as a Sfixed64.\n// It panics if the pointer is nil.\nfunc sizeSfixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendSfixed64Ptr wire encodes a *int64 pointer as a Sfixed64.\n// It panics if the pointer is nil.\nfunc appendSfixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Int64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, uint64(v))\n\treturn b, nil\n}\n\n// consumeSfixed64Ptr wire decodes a *int64 pointer as a Sfixed64.\nfunc consumeSfixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Int64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(int64)\n\t}\n\t**vp = int64(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed64Ptr = pointerCoderFuncs{\n\tsize:      sizeSfixed64Ptr,\n\tmarshal:   appendSfixed64Ptr,\n\tunmarshal: consumeSfixed64Ptr,\n\tmerge:     mergeInt64Ptr,\n}\n\n// sizeSfixed64Slice returns the size of wire encoding a []int64 pointer as a repeated Sfixed64.\nfunc sizeSfixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendSfixed64Slice encodes a []int64 pointer as a repeated Sfixed64.\nfunc appendSfixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed64(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\n// consumeSfixed64Slice wire decodes a []int64 pointer as a repeated Sfixed64.\nfunc consumeSfixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Int64Slice()\n\tif wtyp == protowire.BytesType {\n\t\ts := *sp\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, int64(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, int64(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderSfixed64Slice = pointerCoderFuncs{\n\tsize:      sizeSfixed64Slice,\n\tmarshal:   appendSfixed64Slice,\n\tunmarshal: consumeSfixed64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeSfixed64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sfixed64.\nfunc sizeSfixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed64()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendSfixed64PackedSlice encodes a []int64 pointer as a packed repeated Sfixed64.\nfunc appendSfixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Int64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed64(b, uint64(v))\n\t}\n\treturn b, nil\n}\n\nvar coderSfixed64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeSfixed64PackedSlice,\n\tmarshal:   appendSfixed64PackedSlice,\n\tunmarshal: consumeSfixed64Slice,\n\tmerge:     mergeInt64Slice,\n}\n\n// sizeSfixed64Value returns the size of wire encoding a int64 value as a Sfixed64.\nfunc sizeSfixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed64()\n}\n\n// appendSfixed64Value encodes a int64 value as a Sfixed64.\nfunc appendSfixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed64(b, uint64(v.Int()))\n\treturn b, nil\n}\n\n// consumeSfixed64Value decodes a int64 value as a Sfixed64.\nfunc consumeSfixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfInt64(int64(v)), out, nil\n}\n\nvar coderSfixed64Value = valueCoderFuncs{\n\tsize:      sizeSfixed64Value,\n\tmarshal:   appendSfixed64Value,\n\tunmarshal: consumeSfixed64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeSfixed64SliceValue returns the size of wire encoding a []int64 value as a repeated Sfixed64.\nfunc sizeSfixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendSfixed64SliceValue encodes a []int64 value as a repeated Sfixed64.\nfunc appendSfixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed64(b, uint64(v.Int()))\n\t}\n\treturn b, nil\n}\n\n// consumeSfixed64SliceValue wire decodes a []int64 value as a repeated Sfixed64.\nfunc consumeSfixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderSfixed64SliceValue = valueCoderFuncs{\n\tsize:      sizeSfixed64SliceValue,\n\tmarshal:   appendSfixed64SliceValue,\n\tunmarshal: consumeSfixed64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeSfixed64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sfixed64.\nfunc sizeSfixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed64()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendSfixed64PackedSliceValue encodes a []int64 value as a packed repeated Sfixed64.\nfunc appendSfixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed64(b, uint64(v.Int()))\n\t}\n\treturn b, nil\n}\n\nvar coderSfixed64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeSfixed64PackedSliceValue,\n\tmarshal:   appendSfixed64PackedSliceValue,\n\tunmarshal: consumeSfixed64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFixed64 returns the size of wire encoding a uint64 pointer as a Fixed64.\nfunc sizeFixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendFixed64 wire encodes a uint64 pointer as a Fixed64.\nfunc appendFixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, v)\n\treturn b, nil\n}\n\n// consumeFixed64 wire decodes a uint64 pointer as a Fixed64.\nfunc consumeFixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Uint64() = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed64 = pointerCoderFuncs{\n\tsize:      sizeFixed64,\n\tmarshal:   appendFixed64,\n\tunmarshal: consumeFixed64,\n\tmerge:     mergeUint64,\n}\n\n// sizeFixed64NoZero returns the size of wire encoding a uint64 pointer as a Fixed64.\n// The zero value is not encoded.\nfunc sizeFixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Uint64()\n\tif v == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendFixed64NoZero wire encodes a uint64 pointer as a Fixed64.\n// The zero value is not encoded.\nfunc appendFixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Uint64()\n\tif v == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, v)\n\treturn b, nil\n}\n\nvar coderFixed64NoZero = pointerCoderFuncs{\n\tsize:      sizeFixed64NoZero,\n\tmarshal:   appendFixed64NoZero,\n\tunmarshal: consumeFixed64,\n\tmerge:     mergeUint64NoZero,\n}\n\n// sizeFixed64Ptr returns the size of wire encoding a *uint64 pointer as a Fixed64.\n// It panics if the pointer is nil.\nfunc sizeFixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendFixed64Ptr wire encodes a *uint64 pointer as a Fixed64.\n// It panics if the pointer is nil.\nfunc appendFixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Uint64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, v)\n\treturn b, nil\n}\n\n// consumeFixed64Ptr wire decodes a *uint64 pointer as a Fixed64.\nfunc consumeFixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Uint64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(uint64)\n\t}\n\t**vp = v\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed64Ptr = pointerCoderFuncs{\n\tsize:      sizeFixed64Ptr,\n\tmarshal:   appendFixed64Ptr,\n\tunmarshal: consumeFixed64Ptr,\n\tmerge:     mergeUint64Ptr,\n}\n\n// sizeFixed64Slice returns the size of wire encoding a []uint64 pointer as a repeated Fixed64.\nfunc sizeFixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint64Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendFixed64Slice encodes a []uint64 pointer as a repeated Fixed64.\nfunc appendFixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed64(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeFixed64Slice wire decodes a []uint64 pointer as a repeated Fixed64.\nfunc consumeFixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Uint64Slice()\n\tif wtyp == protowire.BytesType {\n\t\ts := *sp\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, v)\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderFixed64Slice = pointerCoderFuncs{\n\tsize:      sizeFixed64Slice,\n\tmarshal:   appendFixed64Slice,\n\tunmarshal: consumeFixed64Slice,\n\tmerge:     mergeUint64Slice,\n}\n\n// sizeFixed64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Fixed64.\nfunc sizeFixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Uint64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed64()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendFixed64PackedSlice encodes a []uint64 pointer as a packed repeated Fixed64.\nfunc appendFixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Uint64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed64(b, v)\n\t}\n\treturn b, nil\n}\n\nvar coderFixed64PackedSlice = pointerCoderFuncs{\n\tsize:      sizeFixed64PackedSlice,\n\tmarshal:   appendFixed64PackedSlice,\n\tunmarshal: consumeFixed64Slice,\n\tmerge:     mergeUint64Slice,\n}\n\n// sizeFixed64Value returns the size of wire encoding a uint64 value as a Fixed64.\nfunc sizeFixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed64()\n}\n\n// appendFixed64Value encodes a uint64 value as a Fixed64.\nfunc appendFixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed64(b, v.Uint())\n\treturn b, nil\n}\n\n// consumeFixed64Value decodes a uint64 value as a Fixed64.\nfunc consumeFixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfUint64(v), out, nil\n}\n\nvar coderFixed64Value = valueCoderFuncs{\n\tsize:      sizeFixed64Value,\n\tmarshal:   appendFixed64Value,\n\tunmarshal: consumeFixed64Value,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeFixed64SliceValue returns the size of wire encoding a []uint64 value as a repeated Fixed64.\nfunc sizeFixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendFixed64SliceValue encodes a []uint64 value as a repeated Fixed64.\nfunc appendFixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed64(b, v.Uint())\n\t}\n\treturn b, nil\n}\n\n// consumeFixed64SliceValue wire decodes a []uint64 value as a repeated Fixed64.\nfunc consumeFixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfUint64(v))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderFixed64SliceValue = valueCoderFuncs{\n\tsize:      sizeFixed64SliceValue,\n\tmarshal:   appendFixed64SliceValue,\n\tunmarshal: consumeFixed64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeFixed64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Fixed64.\nfunc sizeFixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed64()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendFixed64PackedSliceValue encodes a []uint64 value as a packed repeated Fixed64.\nfunc appendFixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed64(b, v.Uint())\n\t}\n\treturn b, nil\n}\n\nvar coderFixed64PackedSliceValue = valueCoderFuncs{\n\tsize:      sizeFixed64PackedSliceValue,\n\tmarshal:   appendFixed64PackedSliceValue,\n\tunmarshal: consumeFixed64SliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeDouble returns the size of wire encoding a float64 pointer as a Double.\nfunc sizeDouble(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendDouble wire encodes a float64 pointer as a Double.\nfunc appendDouble(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Float64()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\treturn b, nil\n}\n\n// consumeDouble wire decodes a float64 pointer as a Double.\nfunc consumeDouble(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Float64() = math.Float64frombits(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderDouble = pointerCoderFuncs{\n\tsize:      sizeDouble,\n\tmarshal:   appendDouble,\n\tunmarshal: consumeDouble,\n\tmerge:     mergeFloat64,\n}\n\n// sizeDoubleNoZero returns the size of wire encoding a float64 pointer as a Double.\n// The zero value is not encoded.\nfunc sizeDoubleNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Float64()\n\tif v == 0 && !math.Signbit(float64(v)) {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendDoubleNoZero wire encodes a float64 pointer as a Double.\n// The zero value is not encoded.\nfunc appendDoubleNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Float64()\n\tif v == 0 && !math.Signbit(float64(v)) {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\treturn b, nil\n}\n\nvar coderDoubleNoZero = pointerCoderFuncs{\n\tsize:      sizeDoubleNoZero,\n\tmarshal:   appendDoubleNoZero,\n\tunmarshal: consumeDouble,\n\tmerge:     mergeFloat64NoZero,\n}\n\n// sizeDoublePtr returns the size of wire encoding a *float64 pointer as a Double.\n// It panics if the pointer is nil.\nfunc sizeDoublePtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn f.tagsize + protowire.SizeFixed64()\n}\n\n// appendDoublePtr wire encodes a *float64 pointer as a Double.\n// It panics if the pointer is nil.\nfunc appendDoublePtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.Float64Ptr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\treturn b, nil\n}\n\n// consumeDoublePtr wire decodes a *float64 pointer as a Double.\nfunc consumeDoublePtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.Float64Ptr()\n\tif *vp == nil {\n\t\t*vp = new(float64)\n\t}\n\t**vp = math.Float64frombits(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderDoublePtr = pointerCoderFuncs{\n\tsize:      sizeDoublePtr,\n\tmarshal:   appendDoublePtr,\n\tunmarshal: consumeDoublePtr,\n\tmerge:     mergeFloat64Ptr,\n}\n\n// sizeDoubleSlice returns the size of wire encoding a []float64 pointer as a repeated Double.\nfunc sizeDoubleSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Float64Slice()\n\tsize = len(s) * (f.tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendDoubleSlice encodes a []float64 pointer as a repeated Double.\nfunc appendDoubleSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Float64Slice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\t}\n\treturn b, nil\n}\n\n// consumeDoubleSlice wire decodes a []float64 pointer as a repeated Double.\nfunc consumeDoubleSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.Float64Slice()\n\tif wtyp == protowire.BytesType {\n\t\ts := *sp\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\ts = append(s, math.Float64frombits(v))\n\t\t\tb = b[n:]\n\t\t}\n\t\t*sp = s\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, math.Float64frombits(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderDoubleSlice = pointerCoderFuncs{\n\tsize:      sizeDoubleSlice,\n\tmarshal:   appendDoubleSlice,\n\tunmarshal: consumeDoubleSlice,\n\tmerge:     mergeFloat64Slice,\n}\n\n// sizeDoublePackedSlice returns the size of wire encoding a []float64 pointer as a packed repeated Double.\nfunc sizeDoublePackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.Float64Slice()\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tn := len(s) * protowire.SizeFixed64()\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\n// appendDoublePackedSlice encodes a []float64 pointer as a packed repeated Double.\nfunc appendDoublePackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.Float64Slice()\n\tif len(s) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := len(s) * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor _, v := range s {\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v))\n\t}\n\treturn b, nil\n}\n\nvar coderDoublePackedSlice = pointerCoderFuncs{\n\tsize:      sizeDoublePackedSlice,\n\tmarshal:   appendDoublePackedSlice,\n\tunmarshal: consumeDoubleSlice,\n\tmerge:     mergeFloat64Slice,\n}\n\n// sizeDoubleValue returns the size of wire encoding a float64 value as a Double.\nfunc sizeDoubleValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeFixed64()\n}\n\n// appendDoubleValue encodes a float64 value as a Double.\nfunc appendDoubleValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendFixed64(b, math.Float64bits(v.Float()))\n\treturn b, nil\n}\n\n// consumeDoubleValue decodes a float64 value as a Double.\nfunc consumeDoubleValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfFloat64(math.Float64frombits(v)), out, nil\n}\n\nvar coderDoubleValue = valueCoderFuncs{\n\tsize:      sizeDoubleValue,\n\tmarshal:   appendDoubleValue,\n\tunmarshal: consumeDoubleValue,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeDoubleSliceValue returns the size of wire encoding a []float64 value as a repeated Double.\nfunc sizeDoubleSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tsize = list.Len() * (tagsize + protowire.SizeFixed64())\n\treturn size\n}\n\n// appendDoubleSliceValue encodes a []float64 value as a repeated Double.\nfunc appendDoubleSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v.Float()))\n\t}\n\treturn b, nil\n}\n\n// consumeDoubleSliceValue wire decodes a []float64 value as a repeated Double.\nfunc consumeDoubleSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeFixed64(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn protoreflect.Value{}, out, errDecode\n\t\t\t}\n\t\t\tlist.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn listv, out, nil\n\t}\n\tif wtyp != protowire.Fixed64Type {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeFixed64(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderDoubleSliceValue = valueCoderFuncs{\n\tsize:      sizeDoubleSliceValue,\n\tmarshal:   appendDoubleSliceValue,\n\tunmarshal: consumeDoubleSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeDoublePackedSliceValue returns the size of wire encoding a []float64 value as a packed repeated Double.\nfunc sizeDoublePackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := llen * protowire.SizeFixed64()\n\treturn tagsize + protowire.SizeBytes(n)\n}\n\n// appendDoublePackedSliceValue encodes a []float64 value as a packed repeated Double.\nfunc appendDoublePackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tllen := list.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, wiretag)\n\tn := llen * protowire.SizeFixed64()\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v.Float()))\n\t}\n\treturn b, nil\n}\n\nvar coderDoublePackedSliceValue = valueCoderFuncs{\n\tsize:      sizeDoublePackedSliceValue,\n\tmarshal:   appendDoublePackedSliceValue,\n\tunmarshal: consumeDoubleSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeString returns the size of wire encoding a string pointer as a String.\nfunc sizeString(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.String()\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendString wire encodes a string pointer as a String.\nfunc appendString(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.String()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\treturn b, nil\n}\n\n// consumeString wire decodes a string pointer as a String.\nfunc consumeString(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.String() = string(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderString = pointerCoderFuncs{\n\tsize:      sizeString,\n\tmarshal:   appendString,\n\tunmarshal: consumeString,\n\tmerge:     mergeString,\n}\n\n// appendStringValidateUTF8 wire encodes a string pointer as a String.\nfunc appendStringValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.String()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\tif !utf8.ValidString(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeStringValidateUTF8 wire decodes a string pointer as a String.\nfunc consumeStringValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\t*p.String() = string(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeString,\n\tmarshal:   appendStringValidateUTF8,\n\tunmarshal: consumeStringValidateUTF8,\n\tmerge:     mergeString,\n}\n\n// sizeStringNoZero returns the size of wire encoding a string pointer as a String.\n// The zero value is not encoded.\nfunc sizeStringNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.String()\n\tif len(v) == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendStringNoZero wire encodes a string pointer as a String.\n// The zero value is not encoded.\nfunc appendStringNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.String()\n\tif len(v) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\treturn b, nil\n}\n\nvar coderStringNoZero = pointerCoderFuncs{\n\tsize:      sizeStringNoZero,\n\tmarshal:   appendStringNoZero,\n\tunmarshal: consumeString,\n\tmerge:     mergeStringNoZero,\n}\n\n// appendStringNoZeroValidateUTF8 wire encodes a string pointer as a String.\n// The zero value is not encoded.\nfunc appendStringNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.String()\n\tif len(v) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\tif !utf8.ValidString(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\nvar coderStringNoZeroValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeStringNoZero,\n\tmarshal:   appendStringNoZeroValidateUTF8,\n\tunmarshal: consumeStringValidateUTF8,\n\tmerge:     mergeStringNoZero,\n}\n\n// sizeStringPtr returns the size of wire encoding a *string pointer as a String.\n// It panics if the pointer is nil.\nfunc sizeStringPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := **p.StringPtr()\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendStringPtr wire encodes a *string pointer as a String.\n// It panics if the pointer is nil.\nfunc appendStringPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.StringPtr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\treturn b, nil\n}\n\n// consumeStringPtr wire decodes a *string pointer as a String.\nfunc consumeStringPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvp := p.StringPtr()\n\tif *vp == nil {\n\t\t*vp = new(string)\n\t}\n\t**vp = string(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringPtr = pointerCoderFuncs{\n\tsize:      sizeStringPtr,\n\tmarshal:   appendStringPtr,\n\tunmarshal: consumeStringPtr,\n\tmerge:     mergeStringPtr,\n}\n\n// appendStringPtrValidateUTF8 wire encodes a *string pointer as a String.\n// It panics if the pointer is nil.\nfunc appendStringPtrValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := **p.StringPtr()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendString(b, v)\n\tif !utf8.ValidString(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeStringPtrValidateUTF8 wire decodes a *string pointer as a String.\nfunc consumeStringPtrValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\tvp := p.StringPtr()\n\tif *vp == nil {\n\t\t*vp = new(string)\n\t}\n\t**vp = string(v)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringPtrValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeStringPtr,\n\tmarshal:   appendStringPtrValidateUTF8,\n\tunmarshal: consumeStringPtrValidateUTF8,\n\tmerge:     mergeStringPtr,\n}\n\n// sizeStringSlice returns the size of wire encoding a []string pointer as a repeated String.\nfunc sizeStringSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.StringSlice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeBytes(len(v))\n\t}\n\treturn size\n}\n\n// appendStringSlice encodes a []string pointer as a repeated String.\nfunc appendStringSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.StringSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendString(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeStringSlice wire decodes a []string pointer as a repeated String.\nfunc consumeStringSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.StringSlice()\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, string(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringSlice = pointerCoderFuncs{\n\tsize:      sizeStringSlice,\n\tmarshal:   appendStringSlice,\n\tunmarshal: consumeStringSlice,\n\tmerge:     mergeStringSlice,\n}\n\n// appendStringSliceValidateUTF8 encodes a []string pointer as a repeated String.\nfunc appendStringSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.StringSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendString(b, v)\n\t\tif !utf8.ValidString(v) {\n\t\t\treturn b, errInvalidUTF8{}\n\t\t}\n\t}\n\treturn b, nil\n}\n\n// consumeStringSliceValidateUTF8 wire decodes a []string pointer as a repeated String.\nfunc consumeStringSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\tsp := p.StringSlice()\n\t*sp = append(*sp, string(v))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderStringSliceValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeStringSlice,\n\tmarshal:   appendStringSliceValidateUTF8,\n\tunmarshal: consumeStringSliceValidateUTF8,\n\tmerge:     mergeStringSlice,\n}\n\n// sizeStringValue returns the size of wire encoding a string value as a String.\nfunc sizeStringValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeBytes(len(v.String()))\n}\n\n// appendStringValue encodes a string value as a String.\nfunc appendStringValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendString(b, v.String())\n\treturn b, nil\n}\n\n// consumeStringValue decodes a string value as a String.\nfunc consumeStringValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfString(string(v)), out, nil\n}\n\nvar coderStringValue = valueCoderFuncs{\n\tsize:      sizeStringValue,\n\tmarshal:   appendStringValue,\n\tunmarshal: consumeStringValue,\n\tmerge:     mergeScalarValue,\n}\n\n// appendStringValueValidateUTF8 encodes a string value as a String.\nfunc appendStringValueValidateUTF8(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendString(b, v.String())\n\tif !utf8.ValidString(v.String()) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeStringValueValidateUTF8 decodes a string value as a String.\nfunc consumeStringValueValidateUTF8(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn protoreflect.Value{}, out, errInvalidUTF8{}\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfString(string(v)), out, nil\n}\n\nvar coderStringValueValidateUTF8 = valueCoderFuncs{\n\tsize:      sizeStringValue,\n\tmarshal:   appendStringValueValidateUTF8,\n\tunmarshal: consumeStringValueValidateUTF8,\n\tmerge:     mergeScalarValue,\n}\n\n// sizeStringSliceValue returns the size of wire encoding a []string value as a repeated String.\nfunc sizeStringSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeBytes(len(v.String()))\n\t}\n\treturn size\n}\n\n// appendStringSliceValue encodes a []string value as a repeated String.\nfunc appendStringSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendString(b, v.String())\n\t}\n\treturn b, nil\n}\n\n// consumeStringSliceValue wire decodes a []string value as a repeated String.\nfunc consumeStringSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfString(string(v)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderStringSliceValue = valueCoderFuncs{\n\tsize:      sizeStringSliceValue,\n\tmarshal:   appendStringSliceValue,\n\tunmarshal: consumeStringSliceValue,\n\tmerge:     mergeListValue,\n}\n\n// sizeBytes returns the size of wire encoding a []byte pointer as a Bytes.\nfunc sizeBytes(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Bytes()\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendBytes wire encodes a []byte pointer as a Bytes.\nfunc appendBytes(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bytes()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendBytes(b, v)\n\treturn b, nil\n}\n\n// consumeBytes wire decodes a []byte pointer as a Bytes.\nfunc consumeBytes(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Bytes() = append(emptyBuf[:], v...)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytes = pointerCoderFuncs{\n\tsize:      sizeBytes,\n\tmarshal:   appendBytes,\n\tunmarshal: consumeBytes,\n\tmerge:     mergeBytes,\n}\n\n// appendBytesValidateUTF8 wire encodes a []byte pointer as a Bytes.\nfunc appendBytesValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bytes()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendBytes(b, v)\n\tif !utf8.Valid(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeBytesValidateUTF8 wire decodes a []byte pointer as a Bytes.\nfunc consumeBytesValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\t*p.Bytes() = append(emptyBuf[:], v...)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeBytes,\n\tmarshal:   appendBytesValidateUTF8,\n\tunmarshal: consumeBytesValidateUTF8,\n\tmerge:     mergeBytes,\n}\n\n// sizeBytesNoZero returns the size of wire encoding a []byte pointer as a Bytes.\n// The zero value is not encoded.\nfunc sizeBytesNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tv := *p.Bytes()\n\tif len(v) == 0 {\n\t\treturn 0\n\t}\n\treturn f.tagsize + protowire.SizeBytes(len(v))\n}\n\n// appendBytesNoZero wire encodes a []byte pointer as a Bytes.\n// The zero value is not encoded.\nfunc appendBytesNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bytes()\n\tif len(v) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendBytes(b, v)\n\treturn b, nil\n}\n\n// consumeBytesNoZero wire decodes a []byte pointer as a Bytes.\n// The zero value is not decoded.\nfunc consumeBytesNoZero(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*p.Bytes() = append(([]byte)(nil), v...)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesNoZero = pointerCoderFuncs{\n\tsize:      sizeBytesNoZero,\n\tmarshal:   appendBytesNoZero,\n\tunmarshal: consumeBytesNoZero,\n\tmerge:     mergeBytesNoZero,\n}\n\n// appendBytesNoZeroValidateUTF8 wire encodes a []byte pointer as a Bytes.\n// The zero value is not encoded.\nfunc appendBytesNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := *p.Bytes()\n\tif len(v) == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendBytes(b, v)\n\tif !utf8.Valid(v) {\n\t\treturn b, errInvalidUTF8{}\n\t}\n\treturn b, nil\n}\n\n// consumeBytesNoZeroValidateUTF8 wire decodes a []byte pointer as a Bytes.\nfunc consumeBytesNoZeroValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\t*p.Bytes() = append(([]byte)(nil), v...)\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesNoZeroValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeBytesNoZero,\n\tmarshal:   appendBytesNoZeroValidateUTF8,\n\tunmarshal: consumeBytesNoZeroValidateUTF8,\n\tmerge:     mergeBytesNoZero,\n}\n\n// sizeBytesSlice returns the size of wire encoding a [][]byte pointer as a repeated Bytes.\nfunc sizeBytesSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := *p.BytesSlice()\n\tfor _, v := range s {\n\t\tsize += f.tagsize + protowire.SizeBytes(len(v))\n\t}\n\treturn size\n}\n\n// appendBytesSlice encodes a [][]byte pointer as a repeated Bytes.\nfunc appendBytesSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.BytesSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendBytes(b, v)\n\t}\n\treturn b, nil\n}\n\n// consumeBytesSlice wire decodes a [][]byte pointer as a repeated Bytes.\nfunc consumeBytesSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tsp := p.BytesSlice()\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\t*sp = append(*sp, append(emptyBuf[:], v...))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesSlice = pointerCoderFuncs{\n\tsize:      sizeBytesSlice,\n\tmarshal:   appendBytesSlice,\n\tunmarshal: consumeBytesSlice,\n\tmerge:     mergeBytesSlice,\n}\n\n// appendBytesSliceValidateUTF8 encodes a [][]byte pointer as a repeated Bytes.\nfunc appendBytesSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := *p.BytesSlice()\n\tfor _, v := range s {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendBytes(b, v)\n\t\tif !utf8.Valid(v) {\n\t\t\treturn b, errInvalidUTF8{}\n\t\t}\n\t}\n\treturn b, nil\n}\n\n// consumeBytesSliceValidateUTF8 wire decodes a [][]byte pointer as a repeated Bytes.\nfunc consumeBytesSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tif !utf8.Valid(v) {\n\t\treturn out, errInvalidUTF8{}\n\t}\n\tsp := p.BytesSlice()\n\t*sp = append(*sp, append(emptyBuf[:], v...))\n\tout.n = n\n\treturn out, nil\n}\n\nvar coderBytesSliceValidateUTF8 = pointerCoderFuncs{\n\tsize:      sizeBytesSlice,\n\tmarshal:   appendBytesSliceValidateUTF8,\n\tunmarshal: consumeBytesSliceValidateUTF8,\n\tmerge:     mergeBytesSlice,\n}\n\n// sizeBytesValue returns the size of wire encoding a []byte value as a Bytes.\nfunc sizeBytesValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {\n\treturn tagsize + protowire.SizeBytes(len(v.Bytes()))\n}\n\n// appendBytesValue encodes a []byte value as a Bytes.\nfunc appendBytesValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tb = protowire.AppendVarint(b, wiretag)\n\tb = protowire.AppendBytes(b, v.Bytes())\n\treturn b, nil\n}\n\n// consumeBytesValue decodes a []byte value as a Bytes.\nfunc consumeBytesValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tout.n = n\n\treturn protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), out, nil\n}\n\nvar coderBytesValue = valueCoderFuncs{\n\tsize:      sizeBytesValue,\n\tmarshal:   appendBytesValue,\n\tunmarshal: consumeBytesValue,\n\tmerge:     mergeBytesValue,\n}\n\n// sizeBytesSliceValue returns the size of wire encoding a [][]byte value as a repeated Bytes.\nfunc sizeBytesSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tsize += tagsize + protowire.SizeBytes(len(v.Bytes()))\n\t}\n\treturn size\n}\n\n// appendBytesSliceValue encodes a [][]byte value as a repeated Bytes.\nfunc appendBytesSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {\n\tlist := listv.List()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tv := list.Get(i)\n\t\tb = protowire.AppendVarint(b, wiretag)\n\t\tb = protowire.AppendBytes(b, v.Bytes())\n\t}\n\treturn b, nil\n}\n\n// consumeBytesSliceValue wire decodes a [][]byte value as a repeated Bytes.\nfunc consumeBytesSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {\n\tlist := listv.List()\n\tif wtyp != protowire.BytesType {\n\t\treturn protoreflect.Value{}, out, errUnknown\n\t}\n\tv, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn protoreflect.Value{}, out, errDecode\n\t}\n\tlist.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...)))\n\tout.n = n\n\treturn listv, out, nil\n}\n\nvar coderBytesSliceValue = valueCoderFuncs{\n\tsize:      sizeBytesSliceValue,\n\tmarshal:   appendBytesSliceValue,\n\tunmarshal: consumeBytesSliceValue,\n\tmerge:     mergeBytesListValue,\n}\n\n// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices.\nvar emptyBuf [0]byte\n\nvar wireTypes = map[protoreflect.Kind]protowire.Type{\n\tprotoreflect.BoolKind:     protowire.VarintType,\n\tprotoreflect.EnumKind:     protowire.VarintType,\n\tprotoreflect.Int32Kind:    protowire.VarintType,\n\tprotoreflect.Sint32Kind:   protowire.VarintType,\n\tprotoreflect.Uint32Kind:   protowire.VarintType,\n\tprotoreflect.Int64Kind:    protowire.VarintType,\n\tprotoreflect.Sint64Kind:   protowire.VarintType,\n\tprotoreflect.Uint64Kind:   protowire.VarintType,\n\tprotoreflect.Sfixed32Kind: protowire.Fixed32Type,\n\tprotoreflect.Fixed32Kind:  protowire.Fixed32Type,\n\tprotoreflect.FloatKind:    protowire.Fixed32Type,\n\tprotoreflect.Sfixed64Kind: protowire.Fixed64Type,\n\tprotoreflect.Fixed64Kind:  protowire.Fixed64Type,\n\tprotoreflect.DoubleKind:   protowire.Fixed64Type,\n\tprotoreflect.StringKind:   protowire.BytesType,\n\tprotoreflect.BytesKind:    protowire.BytesType,\n\tprotoreflect.MessageKind:  protowire.BytesType,\n\tprotoreflect.GroupKind:    protowire.StartGroupType,\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_map.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\t\"sort\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype mapInfo struct {\n\tgoType     reflect.Type\n\tkeyWiretag uint64\n\tvalWiretag uint64\n\tkeyFuncs   valueCoderFuncs\n\tvalFuncs   valueCoderFuncs\n\tkeyZero    protoreflect.Value\n\tkeyKind    protoreflect.Kind\n\tconv       *mapConverter\n}\n\nfunc encoderFuncsForMap(fd protoreflect.FieldDescriptor, ft reflect.Type) (valueMessage *MessageInfo, funcs pointerCoderFuncs) {\n\t// TODO: Consider generating specialized map coders.\n\tkeyField := fd.MapKey()\n\tvalField := fd.MapValue()\n\tkeyWiretag := protowire.EncodeTag(1, wireTypes[keyField.Kind()])\n\tvalWiretag := protowire.EncodeTag(2, wireTypes[valField.Kind()])\n\tkeyFuncs := encoderFuncsForValue(keyField)\n\tvalFuncs := encoderFuncsForValue(valField)\n\tconv := newMapConverter(ft, fd)\n\n\tmapi := &mapInfo{\n\t\tgoType:     ft,\n\t\tkeyWiretag: keyWiretag,\n\t\tvalWiretag: valWiretag,\n\t\tkeyFuncs:   keyFuncs,\n\t\tvalFuncs:   valFuncs,\n\t\tkeyZero:    keyField.Default(),\n\t\tkeyKind:    keyField.Kind(),\n\t\tconv:       conv,\n\t}\n\tif valField.Kind() == protoreflect.MessageKind {\n\t\tvalueMessage = getMessageInfo(ft.Elem())\n\t}\n\n\tfuncs = pointerCoderFuncs{\n\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\treturn sizeMap(p.AsValueOf(ft).Elem(), mapi, f, opts)\n\t\t},\n\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\treturn appendMap(b, p.AsValueOf(ft).Elem(), mapi, f, opts)\n\t\t},\n\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\tmp := p.AsValueOf(ft)\n\t\t\tif mp.Elem().IsNil() {\n\t\t\t\tmp.Elem().Set(reflect.MakeMap(mapi.goType))\n\t\t\t}\n\t\t\tif f.mi == nil {\n\t\t\t\treturn consumeMap(b, mp.Elem(), wtyp, mapi, f, opts)\n\t\t\t} else {\n\t\t\t\treturn consumeMapOfMessage(b, mp.Elem(), wtyp, mapi, f, opts)\n\t\t\t}\n\t\t},\n\t}\n\tswitch valField.Kind() {\n\tcase protoreflect.MessageKind:\n\t\tfuncs.merge = mergeMapOfMessage\n\tcase protoreflect.BytesKind:\n\t\tfuncs.merge = mergeMapOfBytes\n\tdefault:\n\t\tfuncs.merge = mergeMap\n\t}\n\tif valFuncs.isInit != nil {\n\t\tfuncs.isInit = func(p pointer, f *coderFieldInfo) error {\n\t\t\treturn isInitMap(p.AsValueOf(ft).Elem(), mapi, f)\n\t\t}\n\t}\n\treturn valueMessage, funcs\n}\n\nconst (\n\tmapKeyTagSize = 1 // field 1, tag size 1.\n\tmapValTagSize = 1 // field 2, tag size 2.\n)\n\nfunc sizeMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) int {\n\tif mapv.Len() == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\titer := mapRange(mapv)\n\tfor iter.Next() {\n\t\tkey := mapi.conv.keyConv.PBValueOf(iter.Key()).MapKey()\n\t\tkeySize := mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)\n\t\tvar valSize int\n\t\tvalue := mapi.conv.valConv.PBValueOf(iter.Value())\n\t\tif f.mi == nil {\n\t\t\tvalSize = mapi.valFuncs.size(value, mapValTagSize, opts)\n\t\t} else {\n\t\t\tp := pointerOfValue(iter.Value())\n\t\t\tvalSize += mapValTagSize\n\t\t\tvalSize += protowire.SizeBytes(f.mi.sizePointer(p, opts))\n\t\t}\n\t\tn += f.tagsize + protowire.SizeBytes(keySize+valSize)\n\t}\n\treturn n\n}\n\nfunc consumeMap(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tb, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvar (\n\t\tkey = mapi.keyZero\n\t\tval = mapi.conv.valConv.New()\n\t)\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tif num > protowire.MaxValidNumber {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tb = b[n:]\n\t\terr := errUnknown\n\t\tswitch num {\n\t\tcase genid.MapEntry_Key_field_number:\n\t\t\tvar v protoreflect.Value\n\t\t\tvar o unmarshalOutput\n\t\t\tv, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tkey = v\n\t\t\tn = o.n\n\t\tcase genid.MapEntry_Value_field_number:\n\t\t\tvar v protoreflect.Value\n\t\t\tvar o unmarshalOutput\n\t\t\tv, o, err = mapi.valFuncs.unmarshal(b, val, num, wtyp, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tval = v\n\t\t\tn = o.n\n\t\t}\n\t\tif err == errUnknown {\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t} else if err != nil {\n\t\t\treturn out, err\n\t\t}\n\t\tb = b[n:]\n\t}\n\tmapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), mapi.conv.valConv.GoValueOf(val))\n\tout.n = n\n\treturn out, nil\n}\n\nfunc consumeMapOfMessage(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn out, errUnknown\n\t}\n\tb, n := protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tvar (\n\t\tkey = mapi.keyZero\n\t\tval = reflect.New(f.mi.GoReflectType.Elem())\n\t)\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tif num > protowire.MaxValidNumber {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tb = b[n:]\n\t\terr := errUnknown\n\t\tswitch num {\n\t\tcase 1:\n\t\t\tvar v protoreflect.Value\n\t\t\tvar o unmarshalOutput\n\t\t\tv, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tkey = v\n\t\t\tn = o.n\n\t\tcase 2:\n\t\t\tif wtyp != protowire.BytesType {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar v []byte\n\t\t\tv, n = protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tvar o unmarshalOutput\n\t\t\to, err = f.mi.unmarshalPointer(v, pointerOfValue(val), 0, opts)\n\t\t\tif o.initialized {\n\t\t\t\t// Consider this map item initialized so long as we see\n\t\t\t\t// an initialized value.\n\t\t\t\tout.initialized = true\n\t\t\t}\n\t\t}\n\t\tif err == errUnknown {\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t} else if err != nil {\n\t\t\treturn out, err\n\t\t}\n\t\tb = b[n:]\n\t}\n\tmapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), val)\n\tout.n = n\n\treturn out, nil\n}\n\nfunc appendMapItem(b []byte, keyrv, valrv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tif f.mi == nil {\n\t\tkey := mapi.conv.keyConv.PBValueOf(keyrv).MapKey()\n\t\tval := mapi.conv.valConv.PBValueOf(valrv)\n\t\tsize := 0\n\t\tsize += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)\n\t\tsize += mapi.valFuncs.size(val, mapValTagSize, opts)\n\t\tb = protowire.AppendVarint(b, uint64(size))\n\t\tb, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn mapi.valFuncs.marshal(b, val, mapi.valWiretag, opts)\n\t} else {\n\t\tkey := mapi.conv.keyConv.PBValueOf(keyrv).MapKey()\n\t\tval := pointerOfValue(valrv)\n\t\tvalSize := f.mi.sizePointer(val, opts)\n\t\tsize := 0\n\t\tsize += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)\n\t\tsize += mapValTagSize + protowire.SizeBytes(valSize)\n\t\tb = protowire.AppendVarint(b, uint64(size))\n\t\tb, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, mapi.valWiretag)\n\t\tb = protowire.AppendVarint(b, uint64(valSize))\n\t\treturn f.mi.marshalAppendPointer(b, val, opts)\n\t}\n}\n\nfunc appendMap(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tif mapv.Len() == 0 {\n\t\treturn b, nil\n\t}\n\tif opts.Deterministic() {\n\t\treturn appendMapDeterministic(b, mapv, mapi, f, opts)\n\t}\n\titer := mapRange(mapv)\n\tfor iter.Next() {\n\t\tvar err error\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb, err = appendMapItem(b, iter.Key(), iter.Value(), mapi, f, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc appendMapDeterministic(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tkeys := mapv.MapKeys()\n\tsort.Slice(keys, func(i, j int) bool {\n\t\tswitch keys[i].Kind() {\n\t\tcase reflect.Bool:\n\t\t\treturn !keys[i].Bool() && keys[j].Bool()\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\treturn keys[i].Int() < keys[j].Int()\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\treturn keys[i].Uint() < keys[j].Uint()\n\t\tcase reflect.Float32, reflect.Float64:\n\t\t\treturn keys[i].Float() < keys[j].Float()\n\t\tcase reflect.String:\n\t\t\treturn keys[i].String() < keys[j].String()\n\t\tdefault:\n\t\t\tpanic(\"invalid kind: \" + keys[i].Kind().String())\n\t\t}\n\t})\n\tfor _, key := range keys {\n\t\tvar err error\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb, err = appendMapItem(b, key, mapv.MapIndex(key), mapi, f, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc isInitMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo) error {\n\tif mi := f.mi; mi != nil {\n\t\tmi.init()\n\t\tif !mi.needsInitCheck {\n\t\t\treturn nil\n\t\t}\n\t\titer := mapRange(mapv)\n\t\tfor iter.Next() {\n\t\t\tval := pointerOfValue(iter.Value())\n\t\t\tif err := mi.checkInitializedPointer(val); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t} else {\n\t\titer := mapRange(mapv)\n\t\tfor iter.Next() {\n\t\t\tval := mapi.conv.valConv.PBValueOf(iter.Value())\n\t\t\tif err := mapi.valFuncs.isInit(val); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc mergeMap(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tdstm := dst.AsValueOf(f.ft).Elem()\n\tsrcm := src.AsValueOf(f.ft).Elem()\n\tif srcm.Len() == 0 {\n\t\treturn\n\t}\n\tif dstm.IsNil() {\n\t\tdstm.Set(reflect.MakeMap(f.ft))\n\t}\n\titer := mapRange(srcm)\n\tfor iter.Next() {\n\t\tdstm.SetMapIndex(iter.Key(), iter.Value())\n\t}\n}\n\nfunc mergeMapOfBytes(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tdstm := dst.AsValueOf(f.ft).Elem()\n\tsrcm := src.AsValueOf(f.ft).Elem()\n\tif srcm.Len() == 0 {\n\t\treturn\n\t}\n\tif dstm.IsNil() {\n\t\tdstm.Set(reflect.MakeMap(f.ft))\n\t}\n\titer := mapRange(srcm)\n\tfor iter.Next() {\n\t\tdstm.SetMapIndex(iter.Key(), reflect.ValueOf(append(emptyBuf[:], iter.Value().Bytes()...)))\n\t}\n}\n\nfunc mergeMapOfMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tdstm := dst.AsValueOf(f.ft).Elem()\n\tsrcm := src.AsValueOf(f.ft).Elem()\n\tif srcm.Len() == 0 {\n\t\treturn\n\t}\n\tif dstm.IsNil() {\n\t\tdstm.Set(reflect.MakeMap(f.ft))\n\t}\n\titer := mapRange(srcm)\n\tfor iter.Next() {\n\t\tval := reflect.New(f.ft.Elem().Elem())\n\t\tif f.mi != nil {\n\t\t\tf.mi.mergePointer(pointerOfValue(val), pointerOfValue(iter.Value()), opts)\n\t\t} else {\n\t\t\topts.Merge(asMessage(val), asMessage(iter.Value()))\n\t\t}\n\t\tdstm.SetMapIndex(iter.Key(), val)\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.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.12\n// +build !go1.12\n\npackage impl\n\nimport \"reflect\"\n\ntype mapIter struct {\n\tv    reflect.Value\n\tkeys []reflect.Value\n}\n\n// mapRange provides a less-efficient equivalent to\n// the Go 1.12 reflect.Value.MapRange method.\nfunc mapRange(v reflect.Value) *mapIter {\n\treturn &mapIter{v: v}\n}\n\nfunc (i *mapIter) Next() bool {\n\tif i.keys == nil {\n\t\ti.keys = i.v.MapKeys()\n\t} else {\n\t\ti.keys = i.keys[1:]\n\t}\n\treturn len(i.keys) > 0\n}\n\nfunc (i *mapIter) Key() reflect.Value {\n\treturn i.keys[0]\n}\n\nfunc (i *mapIter) Value() reflect.Value {\n\treturn i.v.MapIndex(i.keys[0])\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.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.12\n// +build go1.12\n\npackage impl\n\nimport \"reflect\"\n\nfunc mapRange(v reflect.Value) *reflect.MapIter { return v.MapRange() }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_message.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// coderMessageInfo contains per-message information used by the fast-path functions.\n// This is a different type from MessageInfo to keep MessageInfo as general-purpose as\n// possible.\ntype coderMessageInfo struct {\n\tmethods protoiface.Methods\n\n\torderedCoderFields []*coderFieldInfo\n\tdenseCoderFields   []*coderFieldInfo\n\tcoderFields        map[protowire.Number]*coderFieldInfo\n\tsizecacheOffset    offset\n\tunknownOffset      offset\n\tunknownPtrKind     bool\n\textensionOffset    offset\n\tneedsInitCheck     bool\n\tisMessageSet       bool\n\tnumRequiredFields  uint8\n}\n\ntype coderFieldInfo struct {\n\tfuncs      pointerCoderFuncs // fast-path per-field functions\n\tmi         *MessageInfo      // field's message\n\tft         reflect.Type\n\tvalidation validationInfo           // information used by message validation\n\tnum        protoreflect.FieldNumber // field number\n\toffset     offset                   // struct field offset\n\twiretag    uint64                   // field tag (number + wire type)\n\ttagsize    int                      // size of the varint-encoded tag\n\tisPointer  bool                     // true if IsNil may be called on the struct field\n\tisRequired bool                     // true if field is required\n}\n\nfunc (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) {\n\tmi.sizecacheOffset = invalidOffset\n\tmi.unknownOffset = invalidOffset\n\tmi.extensionOffset = invalidOffset\n\n\tif si.sizecacheOffset.IsValid() && si.sizecacheType == sizecacheType {\n\t\tmi.sizecacheOffset = si.sizecacheOffset\n\t}\n\tif si.unknownOffset.IsValid() && (si.unknownType == unknownFieldsAType || si.unknownType == unknownFieldsBType) {\n\t\tmi.unknownOffset = si.unknownOffset\n\t\tmi.unknownPtrKind = si.unknownType.Kind() == reflect.Ptr\n\t}\n\tif si.extensionOffset.IsValid() && si.extensionType == extensionFieldsType {\n\t\tmi.extensionOffset = si.extensionOffset\n\t}\n\n\tmi.coderFields = make(map[protowire.Number]*coderFieldInfo)\n\tfields := mi.Desc.Fields()\n\tpreallocFields := make([]coderFieldInfo, fields.Len())\n\tfor i := 0; i < fields.Len(); i++ {\n\t\tfd := fields.Get(i)\n\n\t\tfs := si.fieldsByNumber[fd.Number()]\n\t\tisOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic()\n\t\tif isOneof {\n\t\t\tfs = si.oneofsByName[fd.ContainingOneof().Name()]\n\t\t}\n\t\tft := fs.Type\n\t\tvar wiretag uint64\n\t\tif !fd.IsPacked() {\n\t\t\twiretag = protowire.EncodeTag(fd.Number(), wireTypes[fd.Kind()])\n\t\t} else {\n\t\t\twiretag = protowire.EncodeTag(fd.Number(), protowire.BytesType)\n\t\t}\n\t\tvar fieldOffset offset\n\t\tvar funcs pointerCoderFuncs\n\t\tvar childMessage *MessageInfo\n\t\tswitch {\n\t\tcase ft == nil:\n\t\t\t// This never occurs for generated message types.\n\t\t\t// It implies that a hand-crafted type has missing Go fields\n\t\t\t// for specific protobuf message fields.\n\t\t\tfuncs = pointerCoderFuncs{\n\t\t\t\tsize: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {\n\t\t\t\t\treturn 0\n\t\t\t\t},\n\t\t\t\tmarshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t},\n\t\t\t\tunmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {\n\t\t\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t\t\t},\n\t\t\t\tisInit: func(p pointer, f *coderFieldInfo) error {\n\t\t\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t\t\t},\n\t\t\t\tmerge: func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\t\t\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t\t\t},\n\t\t\t}\n\t\tcase isOneof:\n\t\t\tfieldOffset = offsetOf(fs, mi.Exporter)\n\t\tcase fd.IsWeak():\n\t\t\tfieldOffset = si.weakOffset\n\t\t\tfuncs = makeWeakMessageFieldCoder(fd)\n\t\tdefault:\n\t\t\tfieldOffset = offsetOf(fs, mi.Exporter)\n\t\t\tchildMessage, funcs = fieldCoder(fd, ft)\n\t\t}\n\t\tcf := &preallocFields[i]\n\t\t*cf = coderFieldInfo{\n\t\t\tnum:        fd.Number(),\n\t\t\toffset:     fieldOffset,\n\t\t\twiretag:    wiretag,\n\t\t\tft:         ft,\n\t\t\ttagsize:    protowire.SizeVarint(wiretag),\n\t\t\tfuncs:      funcs,\n\t\t\tmi:         childMessage,\n\t\t\tvalidation: newFieldValidationInfo(mi, si, fd, ft),\n\t\t\tisPointer:  fd.Cardinality() == protoreflect.Repeated || fd.HasPresence(),\n\t\t\tisRequired: fd.Cardinality() == protoreflect.Required,\n\t\t}\n\t\tmi.orderedCoderFields = append(mi.orderedCoderFields, cf)\n\t\tmi.coderFields[cf.num] = cf\n\t}\n\tfor i, oneofs := 0, mi.Desc.Oneofs(); i < oneofs.Len(); i++ {\n\t\tif od := oneofs.Get(i); !od.IsSynthetic() {\n\t\t\tmi.initOneofFieldCoders(od, si)\n\t\t}\n\t}\n\tif messageset.IsMessageSet(mi.Desc) {\n\t\tif !mi.extensionOffset.IsValid() {\n\t\t\tpanic(fmt.Sprintf(\"%v: MessageSet with no extensions field\", mi.Desc.FullName()))\n\t\t}\n\t\tif !mi.unknownOffset.IsValid() {\n\t\t\tpanic(fmt.Sprintf(\"%v: MessageSet with no unknown field\", mi.Desc.FullName()))\n\t\t}\n\t\tmi.isMessageSet = true\n\t}\n\tsort.Slice(mi.orderedCoderFields, func(i, j int) bool {\n\t\treturn mi.orderedCoderFields[i].num < mi.orderedCoderFields[j].num\n\t})\n\n\tvar maxDense protoreflect.FieldNumber\n\tfor _, cf := range mi.orderedCoderFields {\n\t\tif cf.num >= 16 && cf.num >= 2*maxDense {\n\t\t\tbreak\n\t\t}\n\t\tmaxDense = cf.num\n\t}\n\tmi.denseCoderFields = make([]*coderFieldInfo, maxDense+1)\n\tfor _, cf := range mi.orderedCoderFields {\n\t\tif int(cf.num) >= len(mi.denseCoderFields) {\n\t\t\tbreak\n\t\t}\n\t\tmi.denseCoderFields[cf.num] = cf\n\t}\n\n\t// To preserve compatibility with historic wire output, marshal oneofs last.\n\tif mi.Desc.Oneofs().Len() > 0 {\n\t\tsort.Slice(mi.orderedCoderFields, func(i, j int) bool {\n\t\t\tfi := fields.ByNumber(mi.orderedCoderFields[i].num)\n\t\t\tfj := fields.ByNumber(mi.orderedCoderFields[j].num)\n\t\t\treturn order.LegacyFieldOrder(fi, fj)\n\t\t})\n\t}\n\n\tmi.needsInitCheck = needsInitCheck(mi.Desc)\n\tif mi.methods.Marshal == nil && mi.methods.Size == nil {\n\t\tmi.methods.Flags |= protoiface.SupportMarshalDeterministic\n\t\tmi.methods.Marshal = mi.marshal\n\t\tmi.methods.Size = mi.size\n\t}\n\tif mi.methods.Unmarshal == nil {\n\t\tmi.methods.Flags |= protoiface.SupportUnmarshalDiscardUnknown\n\t\tmi.methods.Unmarshal = mi.unmarshal\n\t}\n\tif mi.methods.CheckInitialized == nil {\n\t\tmi.methods.CheckInitialized = mi.checkInitialized\n\t}\n\tif mi.methods.Merge == nil {\n\t\tmi.methods.Merge = mi.merge\n\t}\n}\n\n// getUnknownBytes returns a *[]byte for the unknown fields.\n// It is the caller's responsibility to check whether the pointer is nil.\n// This function is specially designed to be inlineable.\nfunc (mi *MessageInfo) getUnknownBytes(p pointer) *[]byte {\n\tif mi.unknownPtrKind {\n\t\treturn *p.Apply(mi.unknownOffset).BytesPtr()\n\t} else {\n\t\treturn p.Apply(mi.unknownOffset).Bytes()\n\t}\n}\n\n// mutableUnknownBytes returns a *[]byte for the unknown fields.\n// The returned pointer is guaranteed to not be nil.\nfunc (mi *MessageInfo) mutableUnknownBytes(p pointer) *[]byte {\n\tif mi.unknownPtrKind {\n\t\tbp := p.Apply(mi.unknownOffset).BytesPtr()\n\t\tif *bp == nil {\n\t\t\t*bp = new([]byte)\n\t\t}\n\t\treturn *bp\n\t} else {\n\t\treturn p.Apply(mi.unknownOffset).Bytes()\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"sort\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n)\n\nfunc sizeMessageSet(mi *MessageInfo, p pointer, opts marshalOptions) (size int) {\n\tif !flags.ProtoLegacy {\n\t\treturn 0\n\t}\n\n\text := *p.Apply(mi.extensionOffset).Extensions()\n\tfor _, x := range ext {\n\t\txi := getExtensionFieldInfo(x.Type())\n\t\tif xi.funcs.size == nil {\n\t\t\tcontinue\n\t\t}\n\t\tnum, _ := protowire.DecodeTag(xi.wiretag)\n\t\tsize += messageset.SizeField(num)\n\t\tsize += xi.funcs.size(x.Value(), protowire.SizeTag(messageset.FieldMessage), opts)\n\t}\n\n\tif u := mi.getUnknownBytes(p); u != nil {\n\t\tsize += messageset.SizeUnknown(*u)\n\t}\n\n\treturn size\n}\n\nfunc marshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts marshalOptions) ([]byte, error) {\n\tif !flags.ProtoLegacy {\n\t\treturn b, errors.New(\"no support for message_set_wire_format\")\n\t}\n\n\text := *p.Apply(mi.extensionOffset).Extensions()\n\tswitch len(ext) {\n\tcase 0:\n\tcase 1:\n\t\t// Fast-path for one extension: Don't bother sorting the keys.\n\t\tfor _, x := range ext {\n\t\t\tvar err error\n\t\t\tb, err = marshalMessageSetField(mi, b, x, opts)\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t}\n\tdefault:\n\t\t// Sort the keys to provide a deterministic encoding.\n\t\t// Not sure this is required, but the old code does it.\n\t\tkeys := make([]int, 0, len(ext))\n\t\tfor k := range ext {\n\t\t\tkeys = append(keys, int(k))\n\t\t}\n\t\tsort.Ints(keys)\n\t\tfor _, k := range keys {\n\t\t\tvar err error\n\t\t\tb, err = marshalMessageSetField(mi, b, ext[int32(k)], opts)\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t}\n\t}\n\n\tif u := mi.getUnknownBytes(p); u != nil {\n\t\tvar err error\n\t\tb, err = messageset.AppendUnknown(b, *u)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\n\treturn b, nil\n}\n\nfunc marshalMessageSetField(mi *MessageInfo, b []byte, x ExtensionField, opts marshalOptions) ([]byte, error) {\n\txi := getExtensionFieldInfo(x.Type())\n\tnum, _ := protowire.DecodeTag(xi.wiretag)\n\tb = messageset.AppendFieldStart(b, num)\n\tb, err := xi.funcs.marshal(b, x.Value(), protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType), opts)\n\tif err != nil {\n\t\treturn b, err\n\t}\n\tb = messageset.AppendFieldEnd(b)\n\treturn b, nil\n}\n\nfunc unmarshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif !flags.ProtoLegacy {\n\t\treturn out, errors.New(\"no support for message_set_wire_format\")\n\t}\n\n\tep := p.Apply(mi.extensionOffset).Extensions()\n\tif *ep == nil {\n\t\t*ep = make(map[int32]ExtensionField)\n\t}\n\text := *ep\n\tinitialized := true\n\terr = messageset.Unmarshal(b, true, func(num protowire.Number, v []byte) error {\n\t\to, err := mi.unmarshalExtension(v, num, protowire.BytesType, ext, opts)\n\t\tif err == errUnknown {\n\t\t\tu := mi.mutableUnknownBytes(p)\n\t\t\t*u = protowire.AppendTag(*u, num, protowire.BytesType)\n\t\t\t*u = append(*u, v...)\n\t\t\treturn nil\n\t\t}\n\t\tif !o.initialized {\n\t\t\tinitialized = false\n\t\t}\n\t\treturn err\n\t})\n\tout.n = len(b)\n\tout.initialized = initialized\n\treturn out, err\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build purego || appengine\n// +build purego appengine\n\npackage impl\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n)\n\nfunc sizeEnum(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {\n\tv := p.v.Elem().Int()\n\treturn f.tagsize + protowire.SizeVarint(uint64(v))\n}\n\nfunc appendEnum(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tv := p.v.Elem().Int()\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tb = protowire.AppendVarint(b, uint64(v))\n\treturn b, nil\n}\n\nfunc consumeEnum(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeVarint(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\tp.v.Elem().SetInt(int64(v))\n\tout.n = n\n\treturn out, nil\n}\n\nfunc mergeEnum(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tdst.v.Elem().Set(src.v.Elem())\n}\n\nvar coderEnum = pointerCoderFuncs{\n\tsize:      sizeEnum,\n\tmarshal:   appendEnum,\n\tunmarshal: consumeEnum,\n\tmerge:     mergeEnum,\n}\n\nfunc sizeEnumNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\tif p.v.Elem().Int() == 0 {\n\t\treturn 0\n\t}\n\treturn sizeEnum(p, f, opts)\n}\n\nfunc appendEnumNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\tif p.v.Elem().Int() == 0 {\n\t\treturn b, nil\n\t}\n\treturn appendEnum(b, p, f, opts)\n}\n\nfunc mergeEnumNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tif src.v.Elem().Int() != 0 {\n\t\tdst.v.Elem().Set(src.v.Elem())\n\t}\n}\n\nvar coderEnumNoZero = pointerCoderFuncs{\n\tsize:      sizeEnumNoZero,\n\tmarshal:   appendEnumNoZero,\n\tunmarshal: consumeEnum,\n\tmerge:     mergeEnumNoZero,\n}\n\nfunc sizeEnumPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\treturn sizeEnum(pointer{p.v.Elem()}, f, opts)\n}\n\nfunc appendEnumPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\treturn appendEnum(b, pointer{p.v.Elem()}, f, opts)\n}\n\nfunc consumeEnumPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tif p.v.Elem().IsNil() {\n\t\tp.v.Elem().Set(reflect.New(p.v.Elem().Type().Elem()))\n\t}\n\treturn consumeEnum(b, pointer{p.v.Elem()}, wtyp, f, opts)\n}\n\nfunc mergeEnumPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tif !src.v.Elem().IsNil() {\n\t\tv := reflect.New(dst.v.Type().Elem().Elem())\n\t\tv.Elem().Set(src.v.Elem().Elem())\n\t\tdst.v.Elem().Set(v)\n\t}\n}\n\nvar coderEnumPtr = pointerCoderFuncs{\n\tsize:      sizeEnumPtr,\n\tmarshal:   appendEnumPtr,\n\tunmarshal: consumeEnumPtr,\n\tmerge:     mergeEnumPtr,\n}\n\nfunc sizeEnumSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := p.v.Elem()\n\tfor i, llen := 0, s.Len(); i < llen; i++ {\n\t\tsize += protowire.SizeVarint(uint64(s.Index(i).Int())) + f.tagsize\n\t}\n\treturn size\n}\n\nfunc appendEnumSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := p.v.Elem()\n\tfor i, llen := 0, s.Len(); i < llen; i++ {\n\t\tb = protowire.AppendVarint(b, f.wiretag)\n\t\tb = protowire.AppendVarint(b, uint64(s.Index(i).Int()))\n\t}\n\treturn b, nil\n}\n\nfunc consumeEnumSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\ts := p.v.Elem()\n\tif wtyp == protowire.BytesType {\n\t\tb, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, errDecode\n\t\t}\n\t\tfor len(b) > 0 {\n\t\t\tv, n := protowire.ConsumeVarint(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\trv := reflect.New(s.Type().Elem()).Elem()\n\t\t\trv.SetInt(int64(v))\n\t\t\ts.Set(reflect.Append(s, rv))\n\t\t\tb = b[n:]\n\t\t}\n\t\tout.n = n\n\t\treturn out, nil\n\t}\n\tif wtyp != protowire.VarintType {\n\t\treturn out, errUnknown\n\t}\n\tv, n := protowire.ConsumeVarint(b)\n\tif n < 0 {\n\t\treturn out, errDecode\n\t}\n\trv := reflect.New(s.Type().Elem()).Elem()\n\trv.SetInt(int64(v))\n\ts.Set(reflect.Append(s, rv))\n\tout.n = n\n\treturn out, nil\n}\n\nfunc mergeEnumSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tdst.v.Elem().Set(reflect.AppendSlice(dst.v.Elem(), src.v.Elem()))\n}\n\nvar coderEnumSlice = pointerCoderFuncs{\n\tsize:      sizeEnumSlice,\n\tmarshal:   appendEnumSlice,\n\tunmarshal: consumeEnumSlice,\n\tmerge:     mergeEnumSlice,\n}\n\nfunc sizeEnumPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {\n\ts := p.v.Elem()\n\tllen := s.Len()\n\tif llen == 0 {\n\t\treturn 0\n\t}\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tn += protowire.SizeVarint(uint64(s.Index(i).Int()))\n\t}\n\treturn f.tagsize + protowire.SizeBytes(n)\n}\n\nfunc appendEnumPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {\n\ts := p.v.Elem()\n\tllen := s.Len()\n\tif llen == 0 {\n\t\treturn b, nil\n\t}\n\tb = protowire.AppendVarint(b, f.wiretag)\n\tn := 0\n\tfor i := 0; i < llen; i++ {\n\t\tn += protowire.SizeVarint(uint64(s.Index(i).Int()))\n\t}\n\tb = protowire.AppendVarint(b, uint64(n))\n\tfor i := 0; i < llen; i++ {\n\t\tb = protowire.AppendVarint(b, uint64(s.Index(i).Int()))\n\t}\n\treturn b, nil\n}\n\nvar coderEnumPackedSlice = pointerCoderFuncs{\n\tsize:      sizeEnumPackedSlice,\n\tmarshal:   appendEnumPackedSlice,\n\tunmarshal: consumeEnumSlice,\n\tmerge:     mergeEnumSlice,\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_tables.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// pointerCoderFuncs is a set of pointer encoding functions.\ntype pointerCoderFuncs struct {\n\tmi        *MessageInfo\n\tsize      func(p pointer, f *coderFieldInfo, opts marshalOptions) int\n\tmarshal   func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error)\n\tunmarshal func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error)\n\tisInit    func(p pointer, f *coderFieldInfo) error\n\tmerge     func(dst, src pointer, f *coderFieldInfo, opts mergeOptions)\n}\n\n// valueCoderFuncs is a set of protoreflect.Value encoding functions.\ntype valueCoderFuncs struct {\n\tsize      func(v protoreflect.Value, tagsize int, opts marshalOptions) int\n\tmarshal   func(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error)\n\tunmarshal func(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error)\n\tisInit    func(v protoreflect.Value) error\n\tmerge     func(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value\n}\n\n// fieldCoder returns pointer functions for a field, used for operating on\n// struct fields.\nfunc fieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) {\n\tswitch {\n\tcase fd.IsMap():\n\t\treturn encoderFuncsForMap(fd, ft)\n\tcase fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked():\n\t\t// Repeated fields (not packed).\n\t\tif ft.Kind() != reflect.Slice {\n\t\t\tbreak\n\t\t}\n\t\tft := ft.Elem()\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBoolSlice\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnumSlice\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32Slice\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32Slice\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32Slice\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64Slice\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64Slice\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64Slice\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32Slice\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32Slice\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloatSlice\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64Slice\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64Slice\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDoubleSlice\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderStringSliceValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringSlice\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderBytesSliceValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytesSlice\n\t\t\t}\n\t\tcase protoreflect.BytesKind:\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringSlice\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytesSlice\n\t\t\t}\n\t\tcase protoreflect.MessageKind:\n\t\t\treturn getMessageInfo(ft), makeMessageSliceFieldCoder(fd, ft)\n\t\tcase protoreflect.GroupKind:\n\t\t\treturn getMessageInfo(ft), makeGroupSliceFieldCoder(fd, ft)\n\t\t}\n\tcase fd.Cardinality() == protoreflect.Repeated && fd.IsPacked():\n\t\t// Packed repeated fields.\n\t\t//\n\t\t// Only repeated fields of primitive numeric types\n\t\t// (Varint, Fixed32, or Fixed64 wire type) can be packed.\n\t\tif ft.Kind() != reflect.Slice {\n\t\t\tbreak\n\t\t}\n\t\tft := ft.Elem()\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBoolPackedSlice\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnumPackedSlice\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32PackedSlice\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloatPackedSlice\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64PackedSlice\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDoublePackedSlice\n\t\t\t}\n\t\t}\n\tcase fd.Kind() == protoreflect.MessageKind:\n\t\treturn getMessageInfo(ft), makeMessageFieldCoder(fd, ft)\n\tcase fd.Kind() == protoreflect.GroupKind:\n\t\treturn getMessageInfo(ft), makeGroupFieldCoder(fd, ft)\n\tcase fd.Syntax() == protoreflect.Proto3 && fd.ContainingOneof() == nil:\n\t\t// Populated oneof fields always encode even if set to the zero value,\n\t\t// which normally are not encoded in proto3.\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBoolNoZero\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnumNoZero\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32NoZero\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32NoZero\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32NoZero\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64NoZero\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64NoZero\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64NoZero\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32NoZero\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32NoZero\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloatNoZero\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64NoZero\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64NoZero\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDoubleNoZero\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderStringNoZeroValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringNoZero\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderBytesNoZeroValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytesNoZero\n\t\t\t}\n\t\tcase protoreflect.BytesKind:\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringNoZero\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytesNoZero\n\t\t\t}\n\t\t}\n\tcase ft.Kind() == reflect.Ptr:\n\t\tft := ft.Elem()\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBoolPtr\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnumPtr\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32Ptr\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32Ptr\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32Ptr\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64Ptr\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64Ptr\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64Ptr\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32Ptr\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32Ptr\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloatPtr\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64Ptr\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64Ptr\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDoublePtr\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderStringPtrValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringPtr\n\t\t\t}\n\t\tcase protoreflect.BytesKind:\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderStringPtr\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\tif ft.Kind() == reflect.Bool {\n\t\t\t\treturn nil, coderBool\n\t\t\t}\n\t\tcase protoreflect.EnumKind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderEnum\n\t\t\t}\n\t\tcase protoreflect.Int32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderInt32\n\t\t\t}\n\t\tcase protoreflect.Sint32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSint32\n\t\t\t}\n\t\tcase protoreflect.Uint32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderUint32\n\t\t\t}\n\t\tcase protoreflect.Int64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderInt64\n\t\t\t}\n\t\tcase protoreflect.Sint64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSint64\n\t\t\t}\n\t\tcase protoreflect.Uint64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderUint64\n\t\t\t}\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\tif ft.Kind() == reflect.Int32 {\n\t\t\t\treturn nil, coderSfixed32\n\t\t\t}\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\tif ft.Kind() == reflect.Uint32 {\n\t\t\t\treturn nil, coderFixed32\n\t\t\t}\n\t\tcase protoreflect.FloatKind:\n\t\t\tif ft.Kind() == reflect.Float32 {\n\t\t\t\treturn nil, coderFloat\n\t\t\t}\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\tif ft.Kind() == reflect.Int64 {\n\t\t\t\treturn nil, coderSfixed64\n\t\t\t}\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\tif ft.Kind() == reflect.Uint64 {\n\t\t\t\treturn nil, coderFixed64\n\t\t\t}\n\t\tcase protoreflect.DoubleKind:\n\t\t\tif ft.Kind() == reflect.Float64 {\n\t\t\t\treturn nil, coderDouble\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderStringValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderString\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {\n\t\t\t\treturn nil, coderBytesValidateUTF8\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytes\n\t\t\t}\n\t\tcase protoreflect.BytesKind:\n\t\t\tif ft.Kind() == reflect.String {\n\t\t\t\treturn nil, coderString\n\t\t\t}\n\t\t\tif ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {\n\t\t\t\treturn nil, coderBytes\n\t\t\t}\n\t\t}\n\t}\n\tpanic(fmt.Sprintf(\"invalid type: no encoder for %v %v %v/%v\", fd.FullName(), fd.Cardinality(), fd.Kind(), ft))\n}\n\n// encoderFuncsForValue returns value functions for a field, used for\n// extension values and map encoding.\nfunc encoderFuncsForValue(fd protoreflect.FieldDescriptor) valueCoderFuncs {\n\tswitch {\n\tcase fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked():\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\treturn coderBoolSliceValue\n\t\tcase protoreflect.EnumKind:\n\t\t\treturn coderEnumSliceValue\n\t\tcase protoreflect.Int32Kind:\n\t\t\treturn coderInt32SliceValue\n\t\tcase protoreflect.Sint32Kind:\n\t\t\treturn coderSint32SliceValue\n\t\tcase protoreflect.Uint32Kind:\n\t\t\treturn coderUint32SliceValue\n\t\tcase protoreflect.Int64Kind:\n\t\t\treturn coderInt64SliceValue\n\t\tcase protoreflect.Sint64Kind:\n\t\t\treturn coderSint64SliceValue\n\t\tcase protoreflect.Uint64Kind:\n\t\t\treturn coderUint64SliceValue\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\treturn coderSfixed32SliceValue\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\treturn coderFixed32SliceValue\n\t\tcase protoreflect.FloatKind:\n\t\t\treturn coderFloatSliceValue\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\treturn coderSfixed64SliceValue\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\treturn coderFixed64SliceValue\n\t\tcase protoreflect.DoubleKind:\n\t\t\treturn coderDoubleSliceValue\n\t\tcase protoreflect.StringKind:\n\t\t\t// We don't have a UTF-8 validating coder for repeated string fields.\n\t\t\t// Value coders are used for extensions and maps.\n\t\t\t// Extensions are never proto3, and maps never contain lists.\n\t\t\treturn coderStringSliceValue\n\t\tcase protoreflect.BytesKind:\n\t\t\treturn coderBytesSliceValue\n\t\tcase protoreflect.MessageKind:\n\t\t\treturn coderMessageSliceValue\n\t\tcase protoreflect.GroupKind:\n\t\t\treturn coderGroupSliceValue\n\t\t}\n\tcase fd.Cardinality() == protoreflect.Repeated && fd.IsPacked():\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.BoolKind:\n\t\t\treturn coderBoolPackedSliceValue\n\t\tcase protoreflect.EnumKind:\n\t\t\treturn coderEnumPackedSliceValue\n\t\tcase protoreflect.Int32Kind:\n\t\t\treturn coderInt32PackedSliceValue\n\t\tcase protoreflect.Sint32Kind:\n\t\t\treturn coderSint32PackedSliceValue\n\t\tcase protoreflect.Uint32Kind:\n\t\t\treturn coderUint32PackedSliceValue\n\t\tcase protoreflect.Int64Kind:\n\t\t\treturn coderInt64PackedSliceValue\n\t\tcase protoreflect.Sint64Kind:\n\t\t\treturn coderSint64PackedSliceValue\n\t\tcase protoreflect.Uint64Kind:\n\t\t\treturn coderUint64PackedSliceValue\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\treturn coderSfixed32PackedSliceValue\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\treturn coderFixed32PackedSliceValue\n\t\tcase protoreflect.FloatKind:\n\t\t\treturn coderFloatPackedSliceValue\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\treturn coderSfixed64PackedSliceValue\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\treturn coderFixed64PackedSliceValue\n\t\tcase protoreflect.DoubleKind:\n\t\t\treturn coderDoublePackedSliceValue\n\t\t}\n\tdefault:\n\t\tswitch fd.Kind() {\n\t\tdefault:\n\t\tcase protoreflect.BoolKind:\n\t\t\treturn coderBoolValue\n\t\tcase protoreflect.EnumKind:\n\t\t\treturn coderEnumValue\n\t\tcase protoreflect.Int32Kind:\n\t\t\treturn coderInt32Value\n\t\tcase protoreflect.Sint32Kind:\n\t\t\treturn coderSint32Value\n\t\tcase protoreflect.Uint32Kind:\n\t\t\treturn coderUint32Value\n\t\tcase protoreflect.Int64Kind:\n\t\t\treturn coderInt64Value\n\t\tcase protoreflect.Sint64Kind:\n\t\t\treturn coderSint64Value\n\t\tcase protoreflect.Uint64Kind:\n\t\t\treturn coderUint64Value\n\t\tcase protoreflect.Sfixed32Kind:\n\t\t\treturn coderSfixed32Value\n\t\tcase protoreflect.Fixed32Kind:\n\t\t\treturn coderFixed32Value\n\t\tcase protoreflect.FloatKind:\n\t\t\treturn coderFloatValue\n\t\tcase protoreflect.Sfixed64Kind:\n\t\t\treturn coderSfixed64Value\n\t\tcase protoreflect.Fixed64Kind:\n\t\t\treturn coderFixed64Value\n\t\tcase protoreflect.DoubleKind:\n\t\t\treturn coderDoubleValue\n\t\tcase protoreflect.StringKind:\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\treturn coderStringValueValidateUTF8\n\t\t\t}\n\t\t\treturn coderStringValue\n\t\tcase protoreflect.BytesKind:\n\t\t\treturn coderBytesValue\n\t\tcase protoreflect.MessageKind:\n\t\t\treturn coderMessageValue\n\t\tcase protoreflect.GroupKind:\n\t\t\treturn coderGroupValue\n\t\t}\n\t}\n\tpanic(fmt.Sprintf(\"invalid field: no encoder for %v %v %v\", fd.FullName(), fd.Cardinality(), fd.Kind()))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !purego && !appengine\n// +build !purego,!appengine\n\npackage impl\n\n// When using unsafe pointers, we can just treat enum values as int32s.\n\nvar (\n\tcoderEnumNoZero      = coderInt32NoZero\n\tcoderEnum            = coderInt32\n\tcoderEnumPtr         = coderInt32Ptr\n\tcoderEnumSlice       = coderInt32Slice\n\tcoderEnumPackedSlice = coderInt32PackedSlice\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/convert.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// unwrapper unwraps the value to the underlying value.\n// This is implemented by List and Map.\ntype unwrapper interface {\n\tprotoUnwrap() interface{}\n}\n\n// A Converter coverts to/from Go reflect.Value types and protobuf protoreflect.Value types.\ntype Converter interface {\n\t// PBValueOf converts a reflect.Value to a protoreflect.Value.\n\tPBValueOf(reflect.Value) protoreflect.Value\n\n\t// GoValueOf converts a protoreflect.Value to a reflect.Value.\n\tGoValueOf(protoreflect.Value) reflect.Value\n\n\t// IsValidPB returns whether a protoreflect.Value is compatible with this type.\n\tIsValidPB(protoreflect.Value) bool\n\n\t// IsValidGo returns whether a reflect.Value is compatible with this type.\n\tIsValidGo(reflect.Value) bool\n\n\t// New returns a new field value.\n\t// For scalars, it returns the default value of the field.\n\t// For composite types, it returns a new mutable value.\n\tNew() protoreflect.Value\n\n\t// Zero returns a new field value.\n\t// For scalars, it returns the default value of the field.\n\t// For composite types, it returns an immutable, empty value.\n\tZero() protoreflect.Value\n}\n\n// NewConverter matches a Go type with a protobuf field and returns a Converter\n// that converts between the two. Enums must be a named int32 kind that\n// implements protoreflect.Enum, and messages must be pointer to a named\n// struct type that implements protoreflect.ProtoMessage.\n//\n// This matcher deliberately supports a wider range of Go types than what\n// protoc-gen-go historically generated to be able to automatically wrap some\n// v1 messages generated by other forks of protoc-gen-go.\nfunc NewConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter {\n\tswitch {\n\tcase fd.IsList():\n\t\treturn newListConverter(t, fd)\n\tcase fd.IsMap():\n\t\treturn newMapConverter(t, fd)\n\tdefault:\n\t\treturn newSingularConverter(t, fd)\n\t}\n}\n\nvar (\n\tboolType    = reflect.TypeOf(bool(false))\n\tint32Type   = reflect.TypeOf(int32(0))\n\tint64Type   = reflect.TypeOf(int64(0))\n\tuint32Type  = reflect.TypeOf(uint32(0))\n\tuint64Type  = reflect.TypeOf(uint64(0))\n\tfloat32Type = reflect.TypeOf(float32(0))\n\tfloat64Type = reflect.TypeOf(float64(0))\n\tstringType  = reflect.TypeOf(string(\"\"))\n\tbytesType   = reflect.TypeOf([]byte(nil))\n\tbyteType    = reflect.TypeOf(byte(0))\n)\n\nvar (\n\tboolZero    = protoreflect.ValueOfBool(false)\n\tint32Zero   = protoreflect.ValueOfInt32(0)\n\tint64Zero   = protoreflect.ValueOfInt64(0)\n\tuint32Zero  = protoreflect.ValueOfUint32(0)\n\tuint64Zero  = protoreflect.ValueOfUint64(0)\n\tfloat32Zero = protoreflect.ValueOfFloat32(0)\n\tfloat64Zero = protoreflect.ValueOfFloat64(0)\n\tstringZero  = protoreflect.ValueOfString(\"\")\n\tbytesZero   = protoreflect.ValueOfBytes(nil)\n)\n\nfunc newSingularConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter {\n\tdefVal := func(fd protoreflect.FieldDescriptor, zero protoreflect.Value) protoreflect.Value {\n\t\tif fd.Cardinality() == protoreflect.Repeated {\n\t\t\t// Default isn't defined for repeated fields.\n\t\t\treturn zero\n\t\t}\n\t\treturn fd.Default()\n\t}\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tif t.Kind() == reflect.Bool {\n\t\t\treturn &boolConverter{t, defVal(fd, boolZero)}\n\t\t}\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:\n\t\tif t.Kind() == reflect.Int32 {\n\t\t\treturn &int32Converter{t, defVal(fd, int32Zero)}\n\t\t}\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:\n\t\tif t.Kind() == reflect.Int64 {\n\t\t\treturn &int64Converter{t, defVal(fd, int64Zero)}\n\t\t}\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind:\n\t\tif t.Kind() == reflect.Uint32 {\n\t\t\treturn &uint32Converter{t, defVal(fd, uint32Zero)}\n\t\t}\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind:\n\t\tif t.Kind() == reflect.Uint64 {\n\t\t\treturn &uint64Converter{t, defVal(fd, uint64Zero)}\n\t\t}\n\tcase protoreflect.FloatKind:\n\t\tif t.Kind() == reflect.Float32 {\n\t\t\treturn &float32Converter{t, defVal(fd, float32Zero)}\n\t\t}\n\tcase protoreflect.DoubleKind:\n\t\tif t.Kind() == reflect.Float64 {\n\t\t\treturn &float64Converter{t, defVal(fd, float64Zero)}\n\t\t}\n\tcase protoreflect.StringKind:\n\t\tif t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) {\n\t\t\treturn &stringConverter{t, defVal(fd, stringZero)}\n\t\t}\n\tcase protoreflect.BytesKind:\n\t\tif t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) {\n\t\t\treturn &bytesConverter{t, defVal(fd, bytesZero)}\n\t\t}\n\tcase protoreflect.EnumKind:\n\t\t// Handle enums, which must be a named int32 type.\n\t\tif t.Kind() == reflect.Int32 {\n\t\t\treturn newEnumConverter(t, fd)\n\t\t}\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn newMessageConverter(t)\n\t}\n\tpanic(fmt.Sprintf(\"invalid Go type %v for field %v\", t, fd.FullName()))\n}\n\ntype boolConverter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *boolConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfBool(v.Bool())\n}\nfunc (c *boolConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(v.Bool()).Convert(c.goType)\n}\nfunc (c *boolConverter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(bool)\n\treturn ok\n}\nfunc (c *boolConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *boolConverter) New() protoreflect.Value  { return c.def }\nfunc (c *boolConverter) Zero() protoreflect.Value { return c.def }\n\ntype int32Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *int32Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfInt32(int32(v.Int()))\n}\nfunc (c *int32Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(int32(v.Int())).Convert(c.goType)\n}\nfunc (c *int32Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(int32)\n\treturn ok\n}\nfunc (c *int32Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *int32Converter) New() protoreflect.Value  { return c.def }\nfunc (c *int32Converter) Zero() protoreflect.Value { return c.def }\n\ntype int64Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *int64Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfInt64(int64(v.Int()))\n}\nfunc (c *int64Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(int64(v.Int())).Convert(c.goType)\n}\nfunc (c *int64Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(int64)\n\treturn ok\n}\nfunc (c *int64Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *int64Converter) New() protoreflect.Value  { return c.def }\nfunc (c *int64Converter) Zero() protoreflect.Value { return c.def }\n\ntype uint32Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *uint32Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfUint32(uint32(v.Uint()))\n}\nfunc (c *uint32Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(uint32(v.Uint())).Convert(c.goType)\n}\nfunc (c *uint32Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(uint32)\n\treturn ok\n}\nfunc (c *uint32Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *uint32Converter) New() protoreflect.Value  { return c.def }\nfunc (c *uint32Converter) Zero() protoreflect.Value { return c.def }\n\ntype uint64Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *uint64Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfUint64(uint64(v.Uint()))\n}\nfunc (c *uint64Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(uint64(v.Uint())).Convert(c.goType)\n}\nfunc (c *uint64Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(uint64)\n\treturn ok\n}\nfunc (c *uint64Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *uint64Converter) New() protoreflect.Value  { return c.def }\nfunc (c *uint64Converter) Zero() protoreflect.Value { return c.def }\n\ntype float32Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *float32Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfFloat32(float32(v.Float()))\n}\nfunc (c *float32Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(float32(v.Float())).Convert(c.goType)\n}\nfunc (c *float32Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(float32)\n\treturn ok\n}\nfunc (c *float32Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *float32Converter) New() protoreflect.Value  { return c.def }\nfunc (c *float32Converter) Zero() protoreflect.Value { return c.def }\n\ntype float64Converter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *float64Converter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfFloat64(float64(v.Float()))\n}\nfunc (c *float64Converter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(float64(v.Float())).Convert(c.goType)\n}\nfunc (c *float64Converter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(float64)\n\treturn ok\n}\nfunc (c *float64Converter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *float64Converter) New() protoreflect.Value  { return c.def }\nfunc (c *float64Converter) Zero() protoreflect.Value { return c.def }\n\ntype stringConverter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *stringConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfString(v.Convert(stringType).String())\n}\nfunc (c *stringConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\t// pref.Value.String never panics, so we go through an interface\n\t// conversion here to check the type.\n\ts := v.Interface().(string)\n\tif c.goType.Kind() == reflect.Slice && s == \"\" {\n\t\treturn reflect.Zero(c.goType) // ensure empty string is []byte(nil)\n\t}\n\treturn reflect.ValueOf(s).Convert(c.goType)\n}\nfunc (c *stringConverter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(string)\n\treturn ok\n}\nfunc (c *stringConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *stringConverter) New() protoreflect.Value  { return c.def }\nfunc (c *stringConverter) Zero() protoreflect.Value { return c.def }\n\ntype bytesConverter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc (c *bytesConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\tif c.goType.Kind() == reflect.String && v.Len() == 0 {\n\t\treturn protoreflect.ValueOfBytes(nil) // ensure empty string is []byte(nil)\n\t}\n\treturn protoreflect.ValueOfBytes(v.Convert(bytesType).Bytes())\n}\nfunc (c *bytesConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(v.Bytes()).Convert(c.goType)\n}\nfunc (c *bytesConverter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().([]byte)\n\treturn ok\n}\nfunc (c *bytesConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\nfunc (c *bytesConverter) New() protoreflect.Value  { return c.def }\nfunc (c *bytesConverter) Zero() protoreflect.Value { return c.def }\n\ntype enumConverter struct {\n\tgoType reflect.Type\n\tdef    protoreflect.Value\n}\n\nfunc newEnumConverter(goType reflect.Type, fd protoreflect.FieldDescriptor) Converter {\n\tvar def protoreflect.Value\n\tif fd.Cardinality() == protoreflect.Repeated {\n\t\tdef = protoreflect.ValueOfEnum(fd.Enum().Values().Get(0).Number())\n\t} else {\n\t\tdef = fd.Default()\n\t}\n\treturn &enumConverter{goType, def}\n}\n\nfunc (c *enumConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(v.Int()))\n}\n\nfunc (c *enumConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn reflect.ValueOf(v.Enum()).Convert(c.goType)\n}\n\nfunc (c *enumConverter) IsValidPB(v protoreflect.Value) bool {\n\t_, ok := v.Interface().(protoreflect.EnumNumber)\n\treturn ok\n}\n\nfunc (c *enumConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *enumConverter) New() protoreflect.Value {\n\treturn c.def\n}\n\nfunc (c *enumConverter) Zero() protoreflect.Value {\n\treturn c.def\n}\n\ntype messageConverter struct {\n\tgoType reflect.Type\n}\n\nfunc newMessageConverter(goType reflect.Type) Converter {\n\treturn &messageConverter{goType}\n}\n\nfunc (c *messageConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\tif c.isNonPointer() {\n\t\tif v.CanAddr() {\n\t\t\tv = v.Addr() // T => *T\n\t\t} else {\n\t\t\tv = reflect.Zero(reflect.PtrTo(v.Type()))\n\t\t}\n\t}\n\tif m, ok := v.Interface().(protoreflect.ProtoMessage); ok {\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\t}\n\treturn protoreflect.ValueOfMessage(legacyWrapMessage(v))\n}\n\nfunc (c *messageConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\tm := v.Message()\n\tvar rv reflect.Value\n\tif u, ok := m.(unwrapper); ok {\n\t\trv = reflect.ValueOf(u.protoUnwrap())\n\t} else {\n\t\trv = reflect.ValueOf(m.Interface())\n\t}\n\tif c.isNonPointer() {\n\t\tif rv.Type() != reflect.PtrTo(c.goType) {\n\t\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", rv.Type(), reflect.PtrTo(c.goType)))\n\t\t}\n\t\tif !rv.IsNil() {\n\t\t\trv = rv.Elem() // *T => T\n\t\t} else {\n\t\t\trv = reflect.Zero(rv.Type().Elem())\n\t\t}\n\t}\n\tif rv.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", rv.Type(), c.goType))\n\t}\n\treturn rv\n}\n\nfunc (c *messageConverter) IsValidPB(v protoreflect.Value) bool {\n\tm := v.Message()\n\tvar rv reflect.Value\n\tif u, ok := m.(unwrapper); ok {\n\t\trv = reflect.ValueOf(u.protoUnwrap())\n\t} else {\n\t\trv = reflect.ValueOf(m.Interface())\n\t}\n\tif c.isNonPointer() {\n\t\treturn rv.Type() == reflect.PtrTo(c.goType)\n\t}\n\treturn rv.Type() == c.goType\n}\n\nfunc (c *messageConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *messageConverter) New() protoreflect.Value {\n\tif c.isNonPointer() {\n\t\treturn c.PBValueOf(reflect.New(c.goType).Elem())\n\t}\n\treturn c.PBValueOf(reflect.New(c.goType.Elem()))\n}\n\nfunc (c *messageConverter) Zero() protoreflect.Value {\n\treturn c.PBValueOf(reflect.Zero(c.goType))\n}\n\n// isNonPointer reports whether the type is a non-pointer type.\n// This never occurs for generated message types.\nfunc (c *messageConverter) isNonPointer() bool {\n\treturn c.goType.Kind() != reflect.Ptr\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/convert_list.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc newListConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter {\n\tswitch {\n\tcase t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Slice:\n\t\treturn &listPtrConverter{t, newSingularConverter(t.Elem().Elem(), fd)}\n\tcase t.Kind() == reflect.Slice:\n\t\treturn &listConverter{t, newSingularConverter(t.Elem(), fd)}\n\t}\n\tpanic(fmt.Sprintf(\"invalid Go type %v for field %v\", t, fd.FullName()))\n}\n\ntype listConverter struct {\n\tgoType reflect.Type // []T\n\tc      Converter\n}\n\nfunc (c *listConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\tpv := reflect.New(c.goType)\n\tpv.Elem().Set(v)\n\treturn protoreflect.ValueOfList(&listReflect{pv, c.c})\n}\n\nfunc (c *listConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\trv := v.List().(*listReflect).v\n\tif rv.IsNil() {\n\t\treturn reflect.Zero(c.goType)\n\t}\n\treturn rv.Elem()\n}\n\nfunc (c *listConverter) IsValidPB(v protoreflect.Value) bool {\n\tlist, ok := v.Interface().(*listReflect)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn list.v.Type().Elem() == c.goType\n}\n\nfunc (c *listConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *listConverter) New() protoreflect.Value {\n\treturn protoreflect.ValueOfList(&listReflect{reflect.New(c.goType), c.c})\n}\n\nfunc (c *listConverter) Zero() protoreflect.Value {\n\treturn protoreflect.ValueOfList(&listReflect{reflect.Zero(reflect.PtrTo(c.goType)), c.c})\n}\n\ntype listPtrConverter struct {\n\tgoType reflect.Type // *[]T\n\tc      Converter\n}\n\nfunc (c *listPtrConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfList(&listReflect{v, c.c})\n}\n\nfunc (c *listPtrConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn v.List().(*listReflect).v\n}\n\nfunc (c *listPtrConverter) IsValidPB(v protoreflect.Value) bool {\n\tlist, ok := v.Interface().(*listReflect)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn list.v.Type() == c.goType\n}\n\nfunc (c *listPtrConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *listPtrConverter) New() protoreflect.Value {\n\treturn c.PBValueOf(reflect.New(c.goType.Elem()))\n}\n\nfunc (c *listPtrConverter) Zero() protoreflect.Value {\n\treturn c.PBValueOf(reflect.Zero(c.goType))\n}\n\ntype listReflect struct {\n\tv    reflect.Value // *[]T\n\tconv Converter\n}\n\nfunc (ls *listReflect) Len() int {\n\tif ls.v.IsNil() {\n\t\treturn 0\n\t}\n\treturn ls.v.Elem().Len()\n}\nfunc (ls *listReflect) Get(i int) protoreflect.Value {\n\treturn ls.conv.PBValueOf(ls.v.Elem().Index(i))\n}\nfunc (ls *listReflect) Set(i int, v protoreflect.Value) {\n\tls.v.Elem().Index(i).Set(ls.conv.GoValueOf(v))\n}\nfunc (ls *listReflect) Append(v protoreflect.Value) {\n\tls.v.Elem().Set(reflect.Append(ls.v.Elem(), ls.conv.GoValueOf(v)))\n}\nfunc (ls *listReflect) AppendMutable() protoreflect.Value {\n\tif _, ok := ls.conv.(*messageConverter); !ok {\n\t\tpanic(\"invalid AppendMutable on list with non-message type\")\n\t}\n\tv := ls.NewElement()\n\tls.Append(v)\n\treturn v\n}\nfunc (ls *listReflect) Truncate(i int) {\n\tls.v.Elem().Set(ls.v.Elem().Slice(0, i))\n}\nfunc (ls *listReflect) NewElement() protoreflect.Value {\n\treturn ls.conv.New()\n}\nfunc (ls *listReflect) IsValid() bool {\n\treturn !ls.v.IsNil()\n}\nfunc (ls *listReflect) protoUnwrap() interface{} {\n\treturn ls.v.Interface()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/convert_map.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype mapConverter struct {\n\tgoType           reflect.Type // map[K]V\n\tkeyConv, valConv Converter\n}\n\nfunc newMapConverter(t reflect.Type, fd protoreflect.FieldDescriptor) *mapConverter {\n\tif t.Kind() != reflect.Map {\n\t\tpanic(fmt.Sprintf(\"invalid Go type %v for field %v\", t, fd.FullName()))\n\t}\n\treturn &mapConverter{\n\t\tgoType:  t,\n\t\tkeyConv: newSingularConverter(t.Key(), fd.MapKey()),\n\t\tvalConv: newSingularConverter(t.Elem(), fd.MapValue()),\n\t}\n}\n\nfunc (c *mapConverter) PBValueOf(v reflect.Value) protoreflect.Value {\n\tif v.Type() != c.goType {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", v.Type(), c.goType))\n\t}\n\treturn protoreflect.ValueOfMap(&mapReflect{v, c.keyConv, c.valConv})\n}\n\nfunc (c *mapConverter) GoValueOf(v protoreflect.Value) reflect.Value {\n\treturn v.Map().(*mapReflect).v\n}\n\nfunc (c *mapConverter) IsValidPB(v protoreflect.Value) bool {\n\tmapv, ok := v.Interface().(*mapReflect)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn mapv.v.Type() == c.goType\n}\n\nfunc (c *mapConverter) IsValidGo(v reflect.Value) bool {\n\treturn v.IsValid() && v.Type() == c.goType\n}\n\nfunc (c *mapConverter) New() protoreflect.Value {\n\treturn c.PBValueOf(reflect.MakeMap(c.goType))\n}\n\nfunc (c *mapConverter) Zero() protoreflect.Value {\n\treturn c.PBValueOf(reflect.Zero(c.goType))\n}\n\ntype mapReflect struct {\n\tv       reflect.Value // map[K]V\n\tkeyConv Converter\n\tvalConv Converter\n}\n\nfunc (ms *mapReflect) Len() int {\n\treturn ms.v.Len()\n}\nfunc (ms *mapReflect) Has(k protoreflect.MapKey) bool {\n\trk := ms.keyConv.GoValueOf(k.Value())\n\trv := ms.v.MapIndex(rk)\n\treturn rv.IsValid()\n}\nfunc (ms *mapReflect) Get(k protoreflect.MapKey) protoreflect.Value {\n\trk := ms.keyConv.GoValueOf(k.Value())\n\trv := ms.v.MapIndex(rk)\n\tif !rv.IsValid() {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn ms.valConv.PBValueOf(rv)\n}\nfunc (ms *mapReflect) Set(k protoreflect.MapKey, v protoreflect.Value) {\n\trk := ms.keyConv.GoValueOf(k.Value())\n\trv := ms.valConv.GoValueOf(v)\n\tms.v.SetMapIndex(rk, rv)\n}\nfunc (ms *mapReflect) Clear(k protoreflect.MapKey) {\n\trk := ms.keyConv.GoValueOf(k.Value())\n\tms.v.SetMapIndex(rk, reflect.Value{})\n}\nfunc (ms *mapReflect) Mutable(k protoreflect.MapKey) protoreflect.Value {\n\tif _, ok := ms.valConv.(*messageConverter); !ok {\n\t\tpanic(\"invalid Mutable on map with non-message value type\")\n\t}\n\tv := ms.Get(k)\n\tif !v.IsValid() {\n\t\tv = ms.NewValue()\n\t\tms.Set(k, v)\n\t}\n\treturn v\n}\nfunc (ms *mapReflect) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\titer := mapRange(ms.v)\n\tfor iter.Next() {\n\t\tk := ms.keyConv.PBValueOf(iter.Key()).MapKey()\n\t\tv := ms.valConv.PBValueOf(iter.Value())\n\t\tif !f(k, v) {\n\t\t\treturn\n\t\t}\n\t}\n}\nfunc (ms *mapReflect) NewValue() protoreflect.Value {\n\treturn ms.valConv.New()\n}\nfunc (ms *mapReflect) IsValid() bool {\n\treturn !ms.v.IsNil()\n}\nfunc (ms *mapReflect) protoUnwrap() interface{} {\n\treturn ms.v.Interface()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/decode.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"math/bits\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nvar errDecode = errors.New(\"cannot parse invalid wire-format data\")\nvar errRecursionDepth = errors.New(\"exceeded maximum recursion depth\")\n\ntype unmarshalOptions struct {\n\tflags    protoiface.UnmarshalInputFlags\n\tresolver interface {\n\t\tFindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)\n\t\tFindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)\n\t}\n\tdepth int\n}\n\nfunc (o unmarshalOptions) Options() proto.UnmarshalOptions {\n\treturn proto.UnmarshalOptions{\n\t\tMerge:          true,\n\t\tAllowPartial:   true,\n\t\tDiscardUnknown: o.DiscardUnknown(),\n\t\tResolver:       o.resolver,\n\t}\n}\n\nfunc (o unmarshalOptions) DiscardUnknown() bool {\n\treturn o.flags&protoiface.UnmarshalDiscardUnknown != 0\n}\n\nfunc (o unmarshalOptions) IsDefault() bool {\n\treturn o.flags == 0 && o.resolver == protoregistry.GlobalTypes\n}\n\nvar lazyUnmarshalOptions = unmarshalOptions{\n\tresolver: protoregistry.GlobalTypes,\n\tdepth:    protowire.DefaultRecursionLimit,\n}\n\ntype unmarshalOutput struct {\n\tn           int // number of bytes consumed\n\tinitialized bool\n}\n\n// unmarshal is protoreflect.Methods.Unmarshal.\nfunc (mi *MessageInfo) unmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\tvar p pointer\n\tif ms, ok := in.Message.(*messageState); ok {\n\t\tp = ms.pointer()\n\t} else {\n\t\tp = in.Message.(*messageReflectWrapper).pointer()\n\t}\n\tout, err := mi.unmarshalPointer(in.Buf, p, 0, unmarshalOptions{\n\t\tflags:    in.Flags,\n\t\tresolver: in.Resolver,\n\t\tdepth:    in.Depth,\n\t})\n\tvar flags protoiface.UnmarshalOutputFlags\n\tif out.initialized {\n\t\tflags |= protoiface.UnmarshalInitialized\n\t}\n\treturn protoiface.UnmarshalOutput{\n\t\tFlags: flags,\n\t}, err\n}\n\n// errUnknown is returned during unmarshaling to indicate a parse error that\n// should result in a field being placed in the unknown fields section (for example,\n// when the wire type doesn't match) as opposed to the entire unmarshal operation\n// failing (for example, when a field extends past the available input).\n//\n// This is a sentinel error which should never be visible to the user.\nvar errUnknown = errors.New(\"unknown\")\n\nfunc (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tmi.init()\n\topts.depth--\n\tif opts.depth < 0 {\n\t\treturn out, errRecursionDepth\n\t}\n\tif flags.ProtoLegacy && mi.isMessageSet {\n\t\treturn unmarshalMessageSet(mi, b, p, opts)\n\t}\n\tinitialized := true\n\tvar requiredMask uint64\n\tvar exts *map[int32]ExtensionField\n\tstart := len(b)\n\tfor len(b) > 0 {\n\t\t// Parse the tag (field number and wire type).\n\t\tvar tag uint64\n\t\tif b[0] < 0x80 {\n\t\t\ttag = uint64(b[0])\n\t\t\tb = b[1:]\n\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\ttag = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\tb = b[2:]\n\t\t} else {\n\t\t\tvar n int\n\t\t\ttag, n = protowire.ConsumeVarint(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tb = b[n:]\n\t\t}\n\t\tvar num protowire.Number\n\t\tif n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {\n\t\t\treturn out, errDecode\n\t\t} else {\n\t\t\tnum = protowire.Number(n)\n\t\t}\n\t\twtyp := protowire.Type(tag & 7)\n\n\t\tif wtyp == protowire.EndGroupType {\n\t\t\tif num != groupTag {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tgroupTag = 0\n\t\t\tbreak\n\t\t}\n\n\t\tvar f *coderFieldInfo\n\t\tif int(num) < len(mi.denseCoderFields) {\n\t\t\tf = mi.denseCoderFields[num]\n\t\t} else {\n\t\t\tf = mi.coderFields[num]\n\t\t}\n\t\tvar n int\n\t\terr := errUnknown\n\t\tswitch {\n\t\tcase f != nil:\n\t\t\tif f.funcs.unmarshal == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar o unmarshalOutput\n\t\t\to, err = f.funcs.unmarshal(b, p.Apply(f.offset), wtyp, f, opts)\n\t\t\tn = o.n\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\trequiredMask |= f.validation.requiredBit\n\t\t\tif f.funcs.isInit != nil && !o.initialized {\n\t\t\t\tinitialized = false\n\t\t\t}\n\t\tdefault:\n\t\t\t// Possible extension.\n\t\t\tif exts == nil && mi.extensionOffset.IsValid() {\n\t\t\t\texts = p.Apply(mi.extensionOffset).Extensions()\n\t\t\t\tif *exts == nil {\n\t\t\t\t\t*exts = make(map[int32]ExtensionField)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif exts == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar o unmarshalOutput\n\t\t\to, err = mi.unmarshalExtension(b, num, wtyp, *exts, opts)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tn = o.n\n\t\t\tif !o.initialized {\n\t\t\t\tinitialized = false\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\tif err != errUnknown {\n\t\t\t\treturn out, err\n\t\t\t}\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn out, errDecode\n\t\t\t}\n\t\t\tif !opts.DiscardUnknown() && mi.unknownOffset.IsValid() {\n\t\t\t\tu := mi.mutableUnknownBytes(p)\n\t\t\t\t*u = protowire.AppendTag(*u, num, wtyp)\n\t\t\t\t*u = append(*u, b[:n]...)\n\t\t\t}\n\t\t}\n\t\tb = b[n:]\n\t}\n\tif groupTag != 0 {\n\t\treturn out, errDecode\n\t}\n\tif mi.numRequiredFields > 0 && bits.OnesCount64(requiredMask) != int(mi.numRequiredFields) {\n\t\tinitialized = false\n\t}\n\tif initialized {\n\t\tout.initialized = true\n\t}\n\tout.n = start - len(b)\n\treturn out, nil\n}\n\nfunc (mi *MessageInfo) unmarshalExtension(b []byte, num protowire.Number, wtyp protowire.Type, exts map[int32]ExtensionField, opts unmarshalOptions) (out unmarshalOutput, err error) {\n\tx := exts[int32(num)]\n\txt := x.Type()\n\tif xt == nil {\n\t\tvar err error\n\t\txt, err = opts.resolver.FindExtensionByNumber(mi.Desc.FullName(), num)\n\t\tif err != nil {\n\t\t\tif err == protoregistry.NotFound {\n\t\t\t\treturn out, errUnknown\n\t\t\t}\n\t\t\treturn out, errors.New(\"%v: unable to resolve extension %v: %v\", mi.Desc.FullName(), num, err)\n\t\t}\n\t}\n\txi := getExtensionFieldInfo(xt)\n\tif xi.funcs.unmarshal == nil {\n\t\treturn out, errUnknown\n\t}\n\tif flags.LazyUnmarshalExtensions {\n\t\tif opts.IsDefault() && x.canLazy(xt) {\n\t\t\tout, valid := skipExtension(b, xi, num, wtyp, opts)\n\t\t\tswitch valid {\n\t\t\tcase ValidationValid:\n\t\t\t\tif out.initialized {\n\t\t\t\t\tx.appendLazyBytes(xt, xi, num, wtyp, b[:out.n])\n\t\t\t\t\texts[int32(num)] = x\n\t\t\t\t\treturn out, nil\n\t\t\t\t}\n\t\t\tcase ValidationInvalid:\n\t\t\t\treturn out, errDecode\n\t\t\tcase ValidationUnknown:\n\t\t\t}\n\t\t}\n\t}\n\tival := x.Value()\n\tif !ival.IsValid() && xi.unmarshalNeedsValue {\n\t\t// Create a new message, list, or map value to fill in.\n\t\t// For enums, create a prototype value to let the unmarshal func know the\n\t\t// concrete type.\n\t\tival = xt.New()\n\t}\n\tv, out, err := xi.funcs.unmarshal(b, ival, num, wtyp, opts)\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tif xi.funcs.isInit == nil {\n\t\tout.initialized = true\n\t}\n\tx.Set(xt, v)\n\texts[int32(num)] = x\n\treturn out, nil\n}\n\nfunc skipExtension(b []byte, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, _ ValidationStatus) {\n\tif xi.validation.mi == nil {\n\t\treturn out, ValidationUnknown\n\t}\n\txi.validation.mi.init()\n\tswitch xi.validation.typ {\n\tcase validationTypeMessage:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\t\tout, st := xi.validation.mi.validate(v, 0, opts)\n\t\tout.n = n\n\t\treturn out, st\n\tcase validationTypeGroup:\n\t\tif wtyp != protowire.StartGroupType {\n\t\t\treturn out, ValidationUnknown\n\t\t}\n\t\tout, st := xi.validation.mi.validate(b, num, opts)\n\t\treturn out, st\n\tdefault:\n\t\treturn out, ValidationUnknown\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/encode.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"math\"\n\t\"sort\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/internal/flags\"\n\tproto \"google.golang.org/protobuf/proto\"\n\tpiface \"google.golang.org/protobuf/runtime/protoiface\"\n)\n\ntype marshalOptions struct {\n\tflags piface.MarshalInputFlags\n}\n\nfunc (o marshalOptions) Options() proto.MarshalOptions {\n\treturn proto.MarshalOptions{\n\t\tAllowPartial:  true,\n\t\tDeterministic: o.Deterministic(),\n\t\tUseCachedSize: o.UseCachedSize(),\n\t}\n}\n\nfunc (o marshalOptions) Deterministic() bool { return o.flags&piface.MarshalDeterministic != 0 }\nfunc (o marshalOptions) UseCachedSize() bool { return o.flags&piface.MarshalUseCachedSize != 0 }\n\n// size is protoreflect.Methods.Size.\nfunc (mi *MessageInfo) size(in piface.SizeInput) piface.SizeOutput {\n\tvar p pointer\n\tif ms, ok := in.Message.(*messageState); ok {\n\t\tp = ms.pointer()\n\t} else {\n\t\tp = in.Message.(*messageReflectWrapper).pointer()\n\t}\n\tsize := mi.sizePointer(p, marshalOptions{\n\t\tflags: in.Flags,\n\t})\n\treturn piface.SizeOutput{Size: size}\n}\n\nfunc (mi *MessageInfo) sizePointer(p pointer, opts marshalOptions) (size int) {\n\tmi.init()\n\tif p.IsNil() {\n\t\treturn 0\n\t}\n\tif opts.UseCachedSize() && mi.sizecacheOffset.IsValid() {\n\t\tif size := atomic.LoadInt32(p.Apply(mi.sizecacheOffset).Int32()); size >= 0 {\n\t\t\treturn int(size)\n\t\t}\n\t}\n\treturn mi.sizePointerSlow(p, opts)\n}\n\nfunc (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int) {\n\tif flags.ProtoLegacy && mi.isMessageSet {\n\t\tsize = sizeMessageSet(mi, p, opts)\n\t\tif mi.sizecacheOffset.IsValid() {\n\t\t\tatomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size))\n\t\t}\n\t\treturn size\n\t}\n\tif mi.extensionOffset.IsValid() {\n\t\te := p.Apply(mi.extensionOffset).Extensions()\n\t\tsize += mi.sizeExtensions(e, opts)\n\t}\n\tfor _, f := range mi.orderedCoderFields {\n\t\tif f.funcs.size == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfptr := p.Apply(f.offset)\n\t\tif f.isPointer && fptr.Elem().IsNil() {\n\t\t\tcontinue\n\t\t}\n\t\tsize += f.funcs.size(fptr, f, opts)\n\t}\n\tif mi.unknownOffset.IsValid() {\n\t\tif u := mi.getUnknownBytes(p); u != nil {\n\t\t\tsize += len(*u)\n\t\t}\n\t}\n\tif mi.sizecacheOffset.IsValid() {\n\t\tif size > math.MaxInt32 {\n\t\t\t// The size is too large for the int32 sizecache field.\n\t\t\t// We will need to recompute the size when encoding;\n\t\t\t// unfortunately expensive, but better than invalid output.\n\t\t\tatomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), -1)\n\t\t} else {\n\t\t\tatomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size))\n\t\t}\n\t}\n\treturn size\n}\n\n// marshal is protoreflect.Methods.Marshal.\nfunc (mi *MessageInfo) marshal(in piface.MarshalInput) (out piface.MarshalOutput, err error) {\n\tvar p pointer\n\tif ms, ok := in.Message.(*messageState); ok {\n\t\tp = ms.pointer()\n\t} else {\n\t\tp = in.Message.(*messageReflectWrapper).pointer()\n\t}\n\tb, err := mi.marshalAppendPointer(in.Buf, p, marshalOptions{\n\t\tflags: in.Flags,\n\t})\n\treturn piface.MarshalOutput{Buf: b}, err\n}\n\nfunc (mi *MessageInfo) marshalAppendPointer(b []byte, p pointer, opts marshalOptions) ([]byte, error) {\n\tmi.init()\n\tif p.IsNil() {\n\t\treturn b, nil\n\t}\n\tif flags.ProtoLegacy && mi.isMessageSet {\n\t\treturn marshalMessageSet(mi, b, p, opts)\n\t}\n\tvar err error\n\t// The old marshaler encodes extensions at beginning.\n\tif mi.extensionOffset.IsValid() {\n\t\te := p.Apply(mi.extensionOffset).Extensions()\n\t\t// TODO: Special handling for MessageSet?\n\t\tb, err = mi.appendExtensions(b, e, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\tfor _, f := range mi.orderedCoderFields {\n\t\tif f.funcs.marshal == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfptr := p.Apply(f.offset)\n\t\tif f.isPointer && fptr.Elem().IsNil() {\n\t\t\tcontinue\n\t\t}\n\t\tb, err = f.funcs.marshal(b, fptr, f, opts)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\tif mi.unknownOffset.IsValid() && !mi.isMessageSet {\n\t\tif u := mi.getUnknownBytes(p); u != nil {\n\t\t\tb = append(b, (*u)...)\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc (mi *MessageInfo) sizeExtensions(ext *map[int32]ExtensionField, opts marshalOptions) (n int) {\n\tif ext == nil {\n\t\treturn 0\n\t}\n\tfor _, x := range *ext {\n\t\txi := getExtensionFieldInfo(x.Type())\n\t\tif xi.funcs.size == nil {\n\t\t\tcontinue\n\t\t}\n\t\tn += xi.funcs.size(x.Value(), xi.tagsize, opts)\n\t}\n\treturn n\n}\n\nfunc (mi *MessageInfo) appendExtensions(b []byte, ext *map[int32]ExtensionField, opts marshalOptions) ([]byte, error) {\n\tif ext == nil {\n\t\treturn b, nil\n\t}\n\n\tswitch len(*ext) {\n\tcase 0:\n\t\treturn b, nil\n\tcase 1:\n\t\t// Fast-path for one extension: Don't bother sorting the keys.\n\t\tvar err error\n\t\tfor _, x := range *ext {\n\t\t\txi := getExtensionFieldInfo(x.Type())\n\t\t\tb, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts)\n\t\t}\n\t\treturn b, err\n\tdefault:\n\t\t// Sort the keys to provide a deterministic encoding.\n\t\t// Not sure this is required, but the old code does it.\n\t\tkeys := make([]int, 0, len(*ext))\n\t\tfor k := range *ext {\n\t\t\tkeys = append(keys, int(k))\n\t\t}\n\t\tsort.Ints(keys)\n\t\tvar err error\n\t\tfor _, k := range keys {\n\t\t\tx := (*ext)[int32(k)]\n\t\t\txi := getExtensionFieldInfo(x.Type())\n\t\t\tb, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts)\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t}\n\t\treturn b, nil\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/enum.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype EnumInfo struct {\n\tGoReflectType reflect.Type // int32 kind\n\tDesc          protoreflect.EnumDescriptor\n}\n\nfunc (t *EnumInfo) New(n protoreflect.EnumNumber) protoreflect.Enum {\n\treturn reflect.ValueOf(n).Convert(t.GoReflectType).Interface().(protoreflect.Enum)\n}\nfunc (t *EnumInfo) Descriptor() protoreflect.EnumDescriptor { return t.Desc }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/extension.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// ExtensionInfo implements ExtensionType.\n//\n// This type contains a number of exported fields for legacy compatibility.\n// The only non-deprecated use of this type is through the methods of the\n// ExtensionType interface.\ntype ExtensionInfo struct {\n\t// An ExtensionInfo may exist in several stages of initialization.\n\t//\n\t// extensionInfoUninitialized: Some or all of the legacy exported\n\t// fields may be set, but none of the unexported fields have been\n\t// initialized. This is the starting state for an ExtensionInfo\n\t// in legacy generated code.\n\t//\n\t// extensionInfoDescInit: The desc field is set, but other unexported fields\n\t// may not be initialized. Legacy exported fields may or may not be set.\n\t// This is the starting state for an ExtensionInfo in newly generated code.\n\t//\n\t// extensionInfoFullInit: The ExtensionInfo is fully initialized.\n\t// This state is only entered after lazy initialization is complete.\n\tinit uint32\n\tmu   sync.Mutex\n\n\tgoType reflect.Type\n\tdesc   extensionTypeDescriptor\n\tconv   Converter\n\tinfo   *extensionFieldInfo // for fast-path method implementations\n\n\t// ExtendedType is a typed nil-pointer to the parent message type that\n\t// is being extended. It is possible for this to be unpopulated in v2\n\t// since the message may no longer implement the MessageV1 interface.\n\t//\n\t// Deprecated: Use the ExtendedType method instead.\n\tExtendedType protoiface.MessageV1\n\n\t// ExtensionType is the zero value of the extension type.\n\t//\n\t// For historical reasons, reflect.TypeOf(ExtensionType) and the\n\t// type returned by InterfaceOf may not be identical.\n\t//\n\t// Deprecated: Use InterfaceOf(xt.Zero()) instead.\n\tExtensionType interface{}\n\n\t// Field is the field number of the extension.\n\t//\n\t// Deprecated: Use the Descriptor().Number method instead.\n\tField int32\n\n\t// Name is the fully qualified name of extension.\n\t//\n\t// Deprecated: Use the Descriptor().FullName method instead.\n\tName string\n\n\t// Tag is the protobuf struct tag used in the v1 API.\n\t//\n\t// Deprecated: Do not use.\n\tTag string\n\n\t// Filename is the proto filename in which the extension is defined.\n\t//\n\t// Deprecated: Use Descriptor().ParentFile().Path() instead.\n\tFilename string\n}\n\n// Stages of initialization: See the ExtensionInfo.init field.\nconst (\n\textensionInfoUninitialized = 0\n\textensionInfoDescInit      = 1\n\textensionInfoFullInit      = 2\n)\n\nfunc InitExtensionInfo(xi *ExtensionInfo, xd protoreflect.ExtensionDescriptor, goType reflect.Type) {\n\txi.goType = goType\n\txi.desc = extensionTypeDescriptor{xd, xi}\n\txi.init = extensionInfoDescInit\n}\n\nfunc (xi *ExtensionInfo) New() protoreflect.Value {\n\treturn xi.lazyInit().New()\n}\nfunc (xi *ExtensionInfo) Zero() protoreflect.Value {\n\treturn xi.lazyInit().Zero()\n}\nfunc (xi *ExtensionInfo) ValueOf(v interface{}) protoreflect.Value {\n\treturn xi.lazyInit().PBValueOf(reflect.ValueOf(v))\n}\nfunc (xi *ExtensionInfo) InterfaceOf(v protoreflect.Value) interface{} {\n\treturn xi.lazyInit().GoValueOf(v).Interface()\n}\nfunc (xi *ExtensionInfo) IsValidValue(v protoreflect.Value) bool {\n\treturn xi.lazyInit().IsValidPB(v)\n}\nfunc (xi *ExtensionInfo) IsValidInterface(v interface{}) bool {\n\treturn xi.lazyInit().IsValidGo(reflect.ValueOf(v))\n}\nfunc (xi *ExtensionInfo) TypeDescriptor() protoreflect.ExtensionTypeDescriptor {\n\tif atomic.LoadUint32(&xi.init) < extensionInfoDescInit {\n\t\txi.lazyInitSlow()\n\t}\n\treturn &xi.desc\n}\n\nfunc (xi *ExtensionInfo) lazyInit() Converter {\n\tif atomic.LoadUint32(&xi.init) < extensionInfoFullInit {\n\t\txi.lazyInitSlow()\n\t}\n\treturn xi.conv\n}\n\nfunc (xi *ExtensionInfo) lazyInitSlow() {\n\txi.mu.Lock()\n\tdefer xi.mu.Unlock()\n\n\tif xi.init == extensionInfoFullInit {\n\t\treturn\n\t}\n\tdefer atomic.StoreUint32(&xi.init, extensionInfoFullInit)\n\n\tif xi.desc.ExtensionDescriptor == nil {\n\t\txi.initFromLegacy()\n\t}\n\tif !xi.desc.ExtensionDescriptor.IsPlaceholder() {\n\t\tif xi.ExtensionType == nil {\n\t\t\txi.initToLegacy()\n\t\t}\n\t\txi.conv = NewConverter(xi.goType, xi.desc.ExtensionDescriptor)\n\t\txi.info = makeExtensionFieldInfo(xi.desc.ExtensionDescriptor)\n\t\txi.info.validation = newValidationInfo(xi.desc.ExtensionDescriptor, xi.goType)\n\t}\n}\n\ntype extensionTypeDescriptor struct {\n\tprotoreflect.ExtensionDescriptor\n\txi *ExtensionInfo\n}\n\nfunc (xtd *extensionTypeDescriptor) Type() protoreflect.ExtensionType {\n\treturn xtd.xi\n}\nfunc (xtd *extensionTypeDescriptor) Descriptor() protoreflect.ExtensionDescriptor {\n\treturn xtd.ExtensionDescriptor\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// legacyEnumName returns the name of enums used in legacy code.\n// It is neither the protobuf full name nor the qualified Go name,\n// but rather an odd hybrid of both.\nfunc legacyEnumName(ed protoreflect.EnumDescriptor) string {\n\tvar protoPkg string\n\tenumName := string(ed.FullName())\n\tif fd := ed.ParentFile(); fd != nil {\n\t\tprotoPkg = string(fd.Package())\n\t\tenumName = strings.TrimPrefix(enumName, protoPkg+\".\")\n\t}\n\tif protoPkg == \"\" {\n\t\treturn strs.GoCamelCase(enumName)\n\t}\n\treturn protoPkg + \".\" + strs.GoCamelCase(enumName)\n}\n\n// legacyWrapEnum wraps v as a protoreflect.Enum,\n// where v must be a int32 kind and not implement the v2 API already.\nfunc legacyWrapEnum(v reflect.Value) protoreflect.Enum {\n\tet := legacyLoadEnumType(v.Type())\n\treturn et.New(protoreflect.EnumNumber(v.Int()))\n}\n\nvar legacyEnumTypeCache sync.Map // map[reflect.Type]protoreflect.EnumType\n\n// legacyLoadEnumType dynamically loads a protoreflect.EnumType for t,\n// where t must be an int32 kind and not implement the v2 API already.\nfunc legacyLoadEnumType(t reflect.Type) protoreflect.EnumType {\n\t// Fast-path: check if a EnumType is cached for this concrete type.\n\tif et, ok := legacyEnumTypeCache.Load(t); ok {\n\t\treturn et.(protoreflect.EnumType)\n\t}\n\n\t// Slow-path: derive enum descriptor and initialize EnumType.\n\tvar et protoreflect.EnumType\n\ted := LegacyLoadEnumDesc(t)\n\tet = &legacyEnumType{\n\t\tdesc:   ed,\n\t\tgoType: t,\n\t}\n\tif et, ok := legacyEnumTypeCache.LoadOrStore(t, et); ok {\n\t\treturn et.(protoreflect.EnumType)\n\t}\n\treturn et\n}\n\ntype legacyEnumType struct {\n\tdesc   protoreflect.EnumDescriptor\n\tgoType reflect.Type\n\tm      sync.Map // map[protoreflect.EnumNumber]proto.Enum\n}\n\nfunc (t *legacyEnumType) New(n protoreflect.EnumNumber) protoreflect.Enum {\n\tif e, ok := t.m.Load(n); ok {\n\t\treturn e.(protoreflect.Enum)\n\t}\n\te := &legacyEnumWrapper{num: n, pbTyp: t, goTyp: t.goType}\n\tt.m.Store(n, e)\n\treturn e\n}\nfunc (t *legacyEnumType) Descriptor() protoreflect.EnumDescriptor {\n\treturn t.desc\n}\n\ntype legacyEnumWrapper struct {\n\tnum   protoreflect.EnumNumber\n\tpbTyp protoreflect.EnumType\n\tgoTyp reflect.Type\n}\n\nfunc (e *legacyEnumWrapper) Descriptor() protoreflect.EnumDescriptor {\n\treturn e.pbTyp.Descriptor()\n}\nfunc (e *legacyEnumWrapper) Type() protoreflect.EnumType {\n\treturn e.pbTyp\n}\nfunc (e *legacyEnumWrapper) Number() protoreflect.EnumNumber {\n\treturn e.num\n}\nfunc (e *legacyEnumWrapper) ProtoReflect() protoreflect.Enum {\n\treturn e\n}\nfunc (e *legacyEnumWrapper) protoUnwrap() interface{} {\n\tv := reflect.New(e.goTyp).Elem()\n\tv.SetInt(int64(e.num))\n\treturn v.Interface()\n}\n\nvar (\n\t_ protoreflect.Enum = (*legacyEnumWrapper)(nil)\n\t_ unwrapper         = (*legacyEnumWrapper)(nil)\n)\n\nvar legacyEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor\n\n// LegacyLoadEnumDesc returns an EnumDescriptor derived from the Go type,\n// which must be an int32 kind and not implement the v2 API already.\n//\n// This is exported for testing purposes.\nfunc LegacyLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor {\n\t// Fast-path: check if an EnumDescriptor is cached for this concrete type.\n\tif ed, ok := legacyEnumDescCache.Load(t); ok {\n\t\treturn ed.(protoreflect.EnumDescriptor)\n\t}\n\n\t// Slow-path: initialize EnumDescriptor from the raw descriptor.\n\tev := reflect.Zero(t).Interface()\n\tif _, ok := ev.(protoreflect.Enum); ok {\n\t\tpanic(fmt.Sprintf(\"%v already implements proto.Enum\", t))\n\t}\n\tedV1, ok := ev.(enumV1)\n\tif !ok {\n\t\treturn aberrantLoadEnumDesc(t)\n\t}\n\tb, idxs := edV1.EnumDescriptor()\n\n\tvar ed protoreflect.EnumDescriptor\n\tif len(idxs) == 1 {\n\t\ted = legacyLoadFileDesc(b).Enums().Get(idxs[0])\n\t} else {\n\t\tmd := legacyLoadFileDesc(b).Messages().Get(idxs[0])\n\t\tfor _, i := range idxs[1 : len(idxs)-1] {\n\t\t\tmd = md.Messages().Get(i)\n\t\t}\n\t\ted = md.Enums().Get(idxs[len(idxs)-1])\n\t}\n\tif ed, ok := legacyEnumDescCache.LoadOrStore(t, ed); ok {\n\t\treturn ed.(protoreflect.EnumDescriptor)\n\t}\n\treturn ed\n}\n\nvar aberrantEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor\n\n// aberrantLoadEnumDesc returns an EnumDescriptor derived from the Go type,\n// which must not implement protoreflect.Enum or enumV1.\n//\n// If the type does not implement enumV1, then there is no reliable\n// way to derive the original protobuf type information.\n// We are unable to use the global enum registry since it is\n// unfortunately keyed by the protobuf full name, which we also do not know.\n// Thus, this produces some bogus enum descriptor based on the Go type name.\nfunc aberrantLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor {\n\t// Fast-path: check if an EnumDescriptor is cached for this concrete type.\n\tif ed, ok := aberrantEnumDescCache.Load(t); ok {\n\t\treturn ed.(protoreflect.EnumDescriptor)\n\t}\n\n\t// Slow-path: construct a bogus, but unique EnumDescriptor.\n\ted := &filedesc.Enum{L2: new(filedesc.EnumL2)}\n\ted.L0.FullName = AberrantDeriveFullName(t) // e.g., github_com.user.repo.MyEnum\n\ted.L0.ParentFile = filedesc.SurrogateProto3\n\ted.L2.Values.List = append(ed.L2.Values.List, filedesc.EnumValue{})\n\n\t// TODO: Use the presence of a UnmarshalJSON method to determine proto2?\n\n\tvd := &ed.L2.Values.List[0]\n\tvd.L0.FullName = ed.L0.FullName + \"_UNKNOWN\" // e.g., github_com.user.repo.MyEnum_UNKNOWN\n\tvd.L0.ParentFile = ed.L0.ParentFile\n\tvd.L0.Parent = ed\n\n\t// TODO: We could use the String method to obtain some enum value names by\n\t// starting at 0 and print the enum until it produces invalid identifiers.\n\t// An exhaustive query is clearly impractical, but can be best-effort.\n\n\tif ed, ok := aberrantEnumDescCache.LoadOrStore(t, ed); ok {\n\t\treturn ed.(protoreflect.EnumDescriptor)\n\t}\n\treturn ed\n}\n\n// AberrantDeriveFullName derives a fully qualified protobuf name for the given Go type\n// The provided name is not guaranteed to be stable nor universally unique.\n// It should be sufficiently unique within a program.\n//\n// This is exported for testing purposes.\nfunc AberrantDeriveFullName(t reflect.Type) protoreflect.FullName {\n\tsanitize := func(r rune) rune {\n\t\tswitch {\n\t\tcase r == '/':\n\t\t\treturn '.'\n\t\tcase 'a' <= r && r <= 'z', 'A' <= r && r <= 'Z', '0' <= r && r <= '9':\n\t\t\treturn r\n\t\tdefault:\n\t\t\treturn '_'\n\t\t}\n\t}\n\tprefix := strings.Map(sanitize, t.PkgPath())\n\tsuffix := strings.Map(sanitize, t.Name())\n\tif suffix == \"\" {\n\t\tsuffix = fmt.Sprintf(\"UnknownX%X\", reflect.ValueOf(t).Pointer())\n\t}\n\n\tss := append(strings.Split(prefix, \".\"), suffix)\n\tfor i, s := range ss {\n\t\tif s == \"\" || ('0' <= s[0] && s[0] <= '9') {\n\t\t\tss[i] = \"x\" + s\n\t\t}\n\t}\n\treturn protoreflect.FullName(strings.Join(ss, \".\"))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_export.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"encoding/binary\"\n\t\"encoding/json\"\n\t\"hash/crc32\"\n\t\"math\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// These functions exist to support exported APIs in generated protobufs.\n// While these are deprecated, they cannot be removed for compatibility reasons.\n\n// LegacyEnumName returns the name of enums used in legacy code.\nfunc (Export) LegacyEnumName(ed protoreflect.EnumDescriptor) string {\n\treturn legacyEnumName(ed)\n}\n\n// LegacyMessageTypeOf returns the protoreflect.MessageType for m,\n// with name used as the message name if necessary.\nfunc (Export) LegacyMessageTypeOf(m protoiface.MessageV1, name protoreflect.FullName) protoreflect.MessageType {\n\tif mv := (Export{}).protoMessageV2Of(m); mv != nil {\n\t\treturn mv.ProtoReflect().Type()\n\t}\n\treturn legacyLoadMessageType(reflect.TypeOf(m), name)\n}\n\n// UnmarshalJSONEnum unmarshals an enum from a JSON-encoded input.\n// The input can either be a string representing the enum value by name,\n// or a number representing the enum number itself.\nfunc (Export) UnmarshalJSONEnum(ed protoreflect.EnumDescriptor, b []byte) (protoreflect.EnumNumber, error) {\n\tif b[0] == '\"' {\n\t\tvar name protoreflect.Name\n\t\tif err := json.Unmarshal(b, &name); err != nil {\n\t\t\treturn 0, errors.New(\"invalid input for enum %v: %s\", ed.FullName(), b)\n\t\t}\n\t\tev := ed.Values().ByName(name)\n\t\tif ev == nil {\n\t\t\treturn 0, errors.New(\"invalid value for enum %v: %s\", ed.FullName(), name)\n\t\t}\n\t\treturn ev.Number(), nil\n\t} else {\n\t\tvar num protoreflect.EnumNumber\n\t\tif err := json.Unmarshal(b, &num); err != nil {\n\t\t\treturn 0, errors.New(\"invalid input for enum %v: %s\", ed.FullName(), b)\n\t\t}\n\t\treturn num, nil\n\t}\n}\n\n// CompressGZIP compresses the input as a GZIP-encoded file.\n// The current implementation does no compression.\nfunc (Export) CompressGZIP(in []byte) (out []byte) {\n\t// RFC 1952, section 2.3.1.\n\tvar gzipHeader = [10]byte{0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff}\n\n\t// RFC 1951, section 3.2.4.\n\tvar blockHeader [5]byte\n\tconst maxBlockSize = math.MaxUint16\n\tnumBlocks := 1 + len(in)/maxBlockSize\n\n\t// RFC 1952, section 2.3.1.\n\tvar gzipFooter [8]byte\n\tbinary.LittleEndian.PutUint32(gzipFooter[0:4], crc32.ChecksumIEEE(in))\n\tbinary.LittleEndian.PutUint32(gzipFooter[4:8], uint32(len(in)))\n\n\t// Encode the input without compression using raw DEFLATE blocks.\n\tout = make([]byte, 0, len(gzipHeader)+len(blockHeader)*numBlocks+len(in)+len(gzipFooter))\n\tout = append(out, gzipHeader[:]...)\n\tfor blockHeader[0] == 0 {\n\t\tblockSize := maxBlockSize\n\t\tif blockSize > len(in) {\n\t\t\tblockHeader[0] = 0x01 // final bit per RFC 1951, section 3.2.3.\n\t\t\tblockSize = len(in)\n\t\t}\n\t\tbinary.LittleEndian.PutUint16(blockHeader[1:3], uint16(blockSize))\n\t\tbinary.LittleEndian.PutUint16(blockHeader[3:5], ^uint16(blockSize))\n\t\tout = append(out, blockHeader[:]...)\n\t\tout = append(out, in[:blockSize]...)\n\t\tin = in[blockSize:]\n\t}\n\tout = append(out, gzipFooter[:]...)\n\treturn out\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/internal/descopts\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\tptag \"google.golang.org/protobuf/internal/encoding/tag\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nfunc (xi *ExtensionInfo) initToLegacy() {\n\txd := xi.desc\n\tvar parent protoiface.MessageV1\n\tmessageName := xd.ContainingMessage().FullName()\n\tif mt, _ := protoregistry.GlobalTypes.FindMessageByName(messageName); mt != nil {\n\t\t// Create a new parent message and unwrap it if possible.\n\t\tmv := mt.New().Interface()\n\t\tt := reflect.TypeOf(mv)\n\t\tif mv, ok := mv.(unwrapper); ok {\n\t\t\tt = reflect.TypeOf(mv.protoUnwrap())\n\t\t}\n\n\t\t// Check whether the message implements the legacy v1 Message interface.\n\t\tmz := reflect.Zero(t).Interface()\n\t\tif mz, ok := mz.(protoiface.MessageV1); ok {\n\t\t\tparent = mz\n\t\t}\n\t}\n\n\t// Determine the v1 extension type, which is unfortunately not the same as\n\t// the v2 ExtensionType.GoType.\n\textType := xi.goType\n\tswitch extType.Kind() {\n\tcase reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:\n\t\textType = reflect.PtrTo(extType) // T -> *T for singular scalar fields\n\t}\n\n\t// Reconstruct the legacy enum full name.\n\tvar enumName string\n\tif xd.Kind() == protoreflect.EnumKind {\n\t\tenumName = legacyEnumName(xd.Enum())\n\t}\n\n\t// Derive the proto file that the extension was declared within.\n\tvar filename string\n\tif fd := xd.ParentFile(); fd != nil {\n\t\tfilename = fd.Path()\n\t}\n\n\t// For MessageSet extensions, the name used is the parent message.\n\tname := xd.FullName()\n\tif messageset.IsMessageSetExtension(xd) {\n\t\tname = name.Parent()\n\t}\n\n\txi.ExtendedType = parent\n\txi.ExtensionType = reflect.Zero(extType).Interface()\n\txi.Field = int32(xd.Number())\n\txi.Name = string(name)\n\txi.Tag = ptag.Marshal(xd, enumName)\n\txi.Filename = filename\n}\n\n// initFromLegacy initializes an ExtensionInfo from\n// the contents of the deprecated exported fields of the type.\nfunc (xi *ExtensionInfo) initFromLegacy() {\n\t// The v1 API returns \"type incomplete\" descriptors where only the\n\t// field number is specified. In such a case, use a placeholder.\n\tif xi.ExtendedType == nil || xi.ExtensionType == nil {\n\t\txd := placeholderExtension{\n\t\t\tname:   protoreflect.FullName(xi.Name),\n\t\t\tnumber: protoreflect.FieldNumber(xi.Field),\n\t\t}\n\t\txi.desc = extensionTypeDescriptor{xd, xi}\n\t\treturn\n\t}\n\n\t// Resolve enum or message dependencies.\n\tvar ed protoreflect.EnumDescriptor\n\tvar md protoreflect.MessageDescriptor\n\tt := reflect.TypeOf(xi.ExtensionType)\n\tisOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct\n\tisRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8\n\tif isOptional || isRepeated {\n\t\tt = t.Elem()\n\t}\n\tswitch v := reflect.Zero(t).Interface().(type) {\n\tcase protoreflect.Enum:\n\t\ted = v.Descriptor()\n\tcase enumV1:\n\t\ted = LegacyLoadEnumDesc(t)\n\tcase protoreflect.ProtoMessage:\n\t\tmd = v.ProtoReflect().Descriptor()\n\tcase messageV1:\n\t\tmd = LegacyLoadMessageDesc(t)\n\t}\n\n\t// Derive basic field information from the struct tag.\n\tvar evs protoreflect.EnumValueDescriptors\n\tif ed != nil {\n\t\tevs = ed.Values()\n\t}\n\tfd := ptag.Unmarshal(xi.Tag, t, evs).(*filedesc.Field)\n\n\t// Construct a v2 ExtensionType.\n\txd := &filedesc.Extension{L2: new(filedesc.ExtensionL2)}\n\txd.L0.ParentFile = filedesc.SurrogateProto2\n\txd.L0.FullName = protoreflect.FullName(xi.Name)\n\txd.L1.Number = protoreflect.FieldNumber(xi.Field)\n\txd.L1.Cardinality = fd.L1.Cardinality\n\txd.L1.Kind = fd.L1.Kind\n\txd.L2.IsPacked = fd.L1.IsPacked\n\txd.L2.Default = fd.L1.Default\n\txd.L1.Extendee = Export{}.MessageDescriptorOf(xi.ExtendedType)\n\txd.L2.Enum = ed\n\txd.L2.Message = md\n\n\t// Derive real extension field name for MessageSets.\n\tif messageset.IsMessageSet(xd.L1.Extendee) && md.FullName() == xd.L0.FullName {\n\t\txd.L0.FullName = xd.L0.FullName.Append(messageset.ExtensionName)\n\t}\n\n\ttt := reflect.TypeOf(xi.ExtensionType)\n\tif isOptional {\n\t\ttt = tt.Elem()\n\t}\n\txi.goType = tt\n\txi.desc = extensionTypeDescriptor{xd, xi}\n}\n\ntype placeholderExtension struct {\n\tname   protoreflect.FullName\n\tnumber protoreflect.FieldNumber\n}\n\nfunc (x placeholderExtension) ParentFile() protoreflect.FileDescriptor            { return nil }\nfunc (x placeholderExtension) Parent() protoreflect.Descriptor                    { return nil }\nfunc (x placeholderExtension) Index() int                                         { return 0 }\nfunc (x placeholderExtension) Syntax() protoreflect.Syntax                        { return 0 }\nfunc (x placeholderExtension) Name() protoreflect.Name                            { return x.name.Name() }\nfunc (x placeholderExtension) FullName() protoreflect.FullName                    { return x.name }\nfunc (x placeholderExtension) IsPlaceholder() bool                                { return true }\nfunc (x placeholderExtension) Options() protoreflect.ProtoMessage                 { return descopts.Field }\nfunc (x placeholderExtension) Number() protoreflect.FieldNumber                   { return x.number }\nfunc (x placeholderExtension) Cardinality() protoreflect.Cardinality              { return 0 }\nfunc (x placeholderExtension) Kind() protoreflect.Kind                            { return 0 }\nfunc (x placeholderExtension) HasJSONName() bool                                  { return false }\nfunc (x placeholderExtension) JSONName() string                                   { return \"[\" + string(x.name) + \"]\" }\nfunc (x placeholderExtension) TextName() string                                   { return \"[\" + string(x.name) + \"]\" }\nfunc (x placeholderExtension) HasPresence() bool                                  { return false }\nfunc (x placeholderExtension) HasOptionalKeyword() bool                           { return false }\nfunc (x placeholderExtension) IsExtension() bool                                  { return true }\nfunc (x placeholderExtension) IsWeak() bool                                       { return false }\nfunc (x placeholderExtension) IsPacked() bool                                     { return false }\nfunc (x placeholderExtension) IsList() bool                                       { return false }\nfunc (x placeholderExtension) IsMap() bool                                        { return false }\nfunc (x placeholderExtension) MapKey() protoreflect.FieldDescriptor               { return nil }\nfunc (x placeholderExtension) MapValue() protoreflect.FieldDescriptor             { return nil }\nfunc (x placeholderExtension) HasDefault() bool                                   { return false }\nfunc (x placeholderExtension) Default() protoreflect.Value                        { return protoreflect.Value{} }\nfunc (x placeholderExtension) DefaultEnumValue() protoreflect.EnumValueDescriptor { return nil }\nfunc (x placeholderExtension) ContainingOneof() protoreflect.OneofDescriptor      { return nil }\nfunc (x placeholderExtension) ContainingMessage() protoreflect.MessageDescriptor  { return nil }\nfunc (x placeholderExtension) Enum() protoreflect.EnumDescriptor                  { return nil }\nfunc (x placeholderExtension) Message() protoreflect.MessageDescriptor            { return nil }\nfunc (x placeholderExtension) ProtoType(protoreflect.FieldDescriptor)             { return }\nfunc (x placeholderExtension) ProtoInternal(pragma.DoNotImplement)                { return }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_file.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"io/ioutil\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// Every enum and message type generated by protoc-gen-go since commit 2fc053c5\n// on February 25th, 2016 has had a method to get the raw descriptor.\n// Types that were not generated by protoc-gen-go or were generated prior\n// to that version are not supported.\n//\n// The []byte returned is the encoded form of a FileDescriptorProto message\n// compressed using GZIP. The []int is the path from the top-level file\n// to the specific message or enum declaration.\ntype (\n\tenumV1 interface {\n\t\tEnumDescriptor() ([]byte, []int)\n\t}\n\tmessageV1 interface {\n\t\tDescriptor() ([]byte, []int)\n\t}\n)\n\nvar legacyFileDescCache sync.Map // map[*byte]protoreflect.FileDescriptor\n\n// legacyLoadFileDesc unmarshals b as a compressed FileDescriptorProto message.\n//\n// This assumes that b is immutable and that b does not refer to part of a\n// concatenated series of GZIP files (which would require shenanigans that\n// rely on the concatenation properties of both protobufs and GZIP).\n// File descriptors generated by protoc-gen-go do not rely on that property.\nfunc legacyLoadFileDesc(b []byte) protoreflect.FileDescriptor {\n\t// Fast-path: check whether we already have a cached file descriptor.\n\tif fd, ok := legacyFileDescCache.Load(&b[0]); ok {\n\t\treturn fd.(protoreflect.FileDescriptor)\n\t}\n\n\t// Slow-path: decompress and unmarshal the file descriptor proto.\n\tzr, err := gzip.NewReader(bytes.NewReader(b))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tb2, err := ioutil.ReadAll(zr)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tfd := filedesc.Builder{\n\t\tRawDescriptor: b2,\n\t\tFileRegistry:  resolverOnly{protoregistry.GlobalFiles}, // do not register back to global registry\n\t}.Build().File\n\tif fd, ok := legacyFileDescCache.LoadOrStore(&b[0], fd); ok {\n\t\treturn fd.(protoreflect.FileDescriptor)\n\t}\n\treturn fd\n}\n\ntype resolverOnly struct {\n\treg *protoregistry.Files\n}\n\nfunc (r resolverOnly) FindFileByPath(path string) (protoreflect.FileDescriptor, error) {\n\treturn r.reg.FindFileByPath(path)\n}\nfunc (r resolverOnly) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) {\n\treturn r.reg.FindDescriptorByName(name)\n}\nfunc (resolverOnly) RegisterFile(protoreflect.FileDescriptor) error {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/legacy_message.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/descopts\"\n\tptag \"google.golang.org/protobuf/internal/encoding/tag\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// legacyWrapMessage wraps v as a protoreflect.Message,\n// where v must be a *struct kind and not implement the v2 API already.\nfunc legacyWrapMessage(v reflect.Value) protoreflect.Message {\n\tt := v.Type()\n\tif t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {\n\t\treturn aberrantMessage{v: v}\n\t}\n\tmt := legacyLoadMessageInfo(t, \"\")\n\treturn mt.MessageOf(v.Interface())\n}\n\n// legacyLoadMessageType dynamically loads a protoreflect.Type for t,\n// where t must be not implement the v2 API already.\n// The provided name is used if it cannot be determined from the message.\nfunc legacyLoadMessageType(t reflect.Type, name protoreflect.FullName) protoreflect.MessageType {\n\tif t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {\n\t\treturn aberrantMessageType{t}\n\t}\n\treturn legacyLoadMessageInfo(t, name)\n}\n\nvar legacyMessageTypeCache sync.Map // map[reflect.Type]*MessageInfo\n\n// legacyLoadMessageInfo dynamically loads a *MessageInfo for t,\n// where t must be a *struct kind and not implement the v2 API already.\n// The provided name is used if it cannot be determined from the message.\nfunc legacyLoadMessageInfo(t reflect.Type, name protoreflect.FullName) *MessageInfo {\n\t// Fast-path: check if a MessageInfo is cached for this concrete type.\n\tif mt, ok := legacyMessageTypeCache.Load(t); ok {\n\t\treturn mt.(*MessageInfo)\n\t}\n\n\t// Slow-path: derive message descriptor and initialize MessageInfo.\n\tmi := &MessageInfo{\n\t\tDesc:          legacyLoadMessageDesc(t, name),\n\t\tGoReflectType: t,\n\t}\n\n\tvar hasMarshal, hasUnmarshal bool\n\tv := reflect.Zero(t).Interface()\n\tif _, hasMarshal = v.(legacyMarshaler); hasMarshal {\n\t\tmi.methods.Marshal = legacyMarshal\n\n\t\t// We have no way to tell whether the type's Marshal method\n\t\t// supports deterministic serialization or not, but this\n\t\t// preserves the v1 implementation's behavior of always\n\t\t// calling Marshal methods when present.\n\t\tmi.methods.Flags |= protoiface.SupportMarshalDeterministic\n\t}\n\tif _, hasUnmarshal = v.(legacyUnmarshaler); hasUnmarshal {\n\t\tmi.methods.Unmarshal = legacyUnmarshal\n\t}\n\tif _, hasMerge := v.(legacyMerger); hasMerge || (hasMarshal && hasUnmarshal) {\n\t\tmi.methods.Merge = legacyMerge\n\t}\n\n\tif mi, ok := legacyMessageTypeCache.LoadOrStore(t, mi); ok {\n\t\treturn mi.(*MessageInfo)\n\t}\n\treturn mi\n}\n\nvar legacyMessageDescCache sync.Map // map[reflect.Type]protoreflect.MessageDescriptor\n\n// LegacyLoadMessageDesc returns an MessageDescriptor derived from the Go type,\n// which should be a *struct kind and must not implement the v2 API already.\n//\n// This is exported for testing purposes.\nfunc LegacyLoadMessageDesc(t reflect.Type) protoreflect.MessageDescriptor {\n\treturn legacyLoadMessageDesc(t, \"\")\n}\nfunc legacyLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor {\n\t// Fast-path: check if a MessageDescriptor is cached for this concrete type.\n\tif mi, ok := legacyMessageDescCache.Load(t); ok {\n\t\treturn mi.(protoreflect.MessageDescriptor)\n\t}\n\n\t// Slow-path: initialize MessageDescriptor from the raw descriptor.\n\tmv := reflect.Zero(t).Interface()\n\tif _, ok := mv.(protoreflect.ProtoMessage); ok {\n\t\tpanic(fmt.Sprintf(\"%v already implements proto.Message\", t))\n\t}\n\tmdV1, ok := mv.(messageV1)\n\tif !ok {\n\t\treturn aberrantLoadMessageDesc(t, name)\n\t}\n\n\t// If this is a dynamic message type where there isn't a 1-1 mapping between\n\t// Go and protobuf types, calling the Descriptor method on the zero value of\n\t// the message type isn't likely to work. If it panics, swallow the panic and\n\t// continue as if the Descriptor method wasn't present.\n\tb, idxs := func() ([]byte, []int) {\n\t\tdefer func() {\n\t\t\trecover()\n\t\t}()\n\t\treturn mdV1.Descriptor()\n\t}()\n\tif b == nil {\n\t\treturn aberrantLoadMessageDesc(t, name)\n\t}\n\n\t// If the Go type has no fields, then this might be a proto3 empty message\n\t// from before the size cache was added. If there are any fields, check to\n\t// see that at least one of them looks like something we generated.\n\tif t.Elem().Kind() == reflect.Struct {\n\t\tif nfield := t.Elem().NumField(); nfield > 0 {\n\t\t\thasProtoField := false\n\t\t\tfor i := 0; i < nfield; i++ {\n\t\t\t\tf := t.Elem().Field(i)\n\t\t\t\tif f.Tag.Get(\"protobuf\") != \"\" || f.Tag.Get(\"protobuf_oneof\") != \"\" || strings.HasPrefix(f.Name, \"XXX_\") {\n\t\t\t\t\thasProtoField = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !hasProtoField {\n\t\t\t\treturn aberrantLoadMessageDesc(t, name)\n\t\t\t}\n\t\t}\n\t}\n\n\tmd := legacyLoadFileDesc(b).Messages().Get(idxs[0])\n\tfor _, i := range idxs[1:] {\n\t\tmd = md.Messages().Get(i)\n\t}\n\tif name != \"\" && md.FullName() != name {\n\t\tpanic(fmt.Sprintf(\"mismatching message name: got %v, want %v\", md.FullName(), name))\n\t}\n\tif md, ok := legacyMessageDescCache.LoadOrStore(t, md); ok {\n\t\treturn md.(protoreflect.MessageDescriptor)\n\t}\n\treturn md\n}\n\nvar (\n\taberrantMessageDescLock  sync.Mutex\n\taberrantMessageDescCache map[reflect.Type]protoreflect.MessageDescriptor\n)\n\n// aberrantLoadMessageDesc returns an MessageDescriptor derived from the Go type,\n// which must not implement protoreflect.ProtoMessage or messageV1.\n//\n// This is a best-effort derivation of the message descriptor using the protobuf\n// tags on the struct fields.\nfunc aberrantLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor {\n\taberrantMessageDescLock.Lock()\n\tdefer aberrantMessageDescLock.Unlock()\n\tif aberrantMessageDescCache == nil {\n\t\taberrantMessageDescCache = make(map[reflect.Type]protoreflect.MessageDescriptor)\n\t}\n\treturn aberrantLoadMessageDescReentrant(t, name)\n}\nfunc aberrantLoadMessageDescReentrant(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor {\n\t// Fast-path: check if an MessageDescriptor is cached for this concrete type.\n\tif md, ok := aberrantMessageDescCache[t]; ok {\n\t\treturn md\n\t}\n\n\t// Slow-path: construct a descriptor from the Go struct type (best-effort).\n\t// Cache the MessageDescriptor early on so that we can resolve internal\n\t// cyclic references.\n\tmd := &filedesc.Message{L2: new(filedesc.MessageL2)}\n\tmd.L0.FullName = aberrantDeriveMessageName(t, name)\n\tmd.L0.ParentFile = filedesc.SurrogateProto2\n\taberrantMessageDescCache[t] = md\n\n\tif t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {\n\t\treturn md\n\t}\n\n\t// Try to determine if the message is using proto3 by checking scalars.\n\tfor i := 0; i < t.Elem().NumField(); i++ {\n\t\tf := t.Elem().Field(i)\n\t\tif tag := f.Tag.Get(\"protobuf\"); tag != \"\" {\n\t\t\tswitch f.Type.Kind() {\n\t\t\tcase reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:\n\t\t\t\tmd.L0.ParentFile = filedesc.SurrogateProto3\n\t\t\t}\n\t\t\tfor _, s := range strings.Split(tag, \",\") {\n\t\t\t\tif s == \"proto3\" {\n\t\t\t\t\tmd.L0.ParentFile = filedesc.SurrogateProto3\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Obtain a list of oneof wrapper types.\n\tvar oneofWrappers []reflect.Type\n\tfor _, method := range []string{\"XXX_OneofFuncs\", \"XXX_OneofWrappers\"} {\n\t\tif fn, ok := t.MethodByName(method); ok {\n\t\t\tfor _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) {\n\t\t\t\tif vs, ok := v.Interface().([]interface{}); ok {\n\t\t\t\t\tfor _, v := range vs {\n\t\t\t\t\t\toneofWrappers = append(oneofWrappers, reflect.TypeOf(v))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Obtain a list of the extension ranges.\n\tif fn, ok := t.MethodByName(\"ExtensionRangeArray\"); ok {\n\t\tvs := fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[0]\n\t\tfor i := 0; i < vs.Len(); i++ {\n\t\t\tv := vs.Index(i)\n\t\t\tmd.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{\n\t\t\t\tprotoreflect.FieldNumber(v.FieldByName(\"Start\").Int()),\n\t\t\t\tprotoreflect.FieldNumber(v.FieldByName(\"End\").Int() + 1),\n\t\t\t})\n\t\t\tmd.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, nil)\n\t\t}\n\t}\n\n\t// Derive the message fields by inspecting the struct fields.\n\tfor i := 0; i < t.Elem().NumField(); i++ {\n\t\tf := t.Elem().Field(i)\n\t\tif tag := f.Tag.Get(\"protobuf\"); tag != \"\" {\n\t\t\ttagKey := f.Tag.Get(\"protobuf_key\")\n\t\t\ttagVal := f.Tag.Get(\"protobuf_val\")\n\t\t\taberrantAppendField(md, f.Type, tag, tagKey, tagVal)\n\t\t}\n\t\tif tag := f.Tag.Get(\"protobuf_oneof\"); tag != \"\" {\n\t\t\tn := len(md.L2.Oneofs.List)\n\t\t\tmd.L2.Oneofs.List = append(md.L2.Oneofs.List, filedesc.Oneof{})\n\t\t\tod := &md.L2.Oneofs.List[n]\n\t\t\tod.L0.FullName = md.FullName().Append(protoreflect.Name(tag))\n\t\t\tod.L0.ParentFile = md.L0.ParentFile\n\t\t\tod.L0.Parent = md\n\t\t\tod.L0.Index = n\n\n\t\t\tfor _, t := range oneofWrappers {\n\t\t\t\tif t.Implements(f.Type) {\n\t\t\t\t\tf := t.Elem().Field(0)\n\t\t\t\t\tif tag := f.Tag.Get(\"protobuf\"); tag != \"\" {\n\t\t\t\t\t\taberrantAppendField(md, f.Type, tag, \"\", \"\")\n\t\t\t\t\t\tfd := &md.L2.Fields.List[len(md.L2.Fields.List)-1]\n\t\t\t\t\t\tfd.L1.ContainingOneof = od\n\t\t\t\t\t\tod.L1.Fields.List = append(od.L1.Fields.List, fd)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn md\n}\n\nfunc aberrantDeriveMessageName(t reflect.Type, name protoreflect.FullName) protoreflect.FullName {\n\tif name.IsValid() {\n\t\treturn name\n\t}\n\tfunc() {\n\t\tdefer func() { recover() }() // swallow possible nil panics\n\t\tif m, ok := reflect.Zero(t).Interface().(interface{ XXX_MessageName() string }); ok {\n\t\t\tname = protoreflect.FullName(m.XXX_MessageName())\n\t\t}\n\t}()\n\tif name.IsValid() {\n\t\treturn name\n\t}\n\tif t.Kind() == reflect.Ptr {\n\t\tt = t.Elem()\n\t}\n\treturn AberrantDeriveFullName(t)\n}\n\nfunc aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey, tagVal string) {\n\tt := goType\n\tisOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct\n\tisRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8\n\tif isOptional || isRepeated {\n\t\tt = t.Elem()\n\t}\n\tfd := ptag.Unmarshal(tag, t, placeholderEnumValues{}).(*filedesc.Field)\n\n\t// Append field descriptor to the message.\n\tn := len(md.L2.Fields.List)\n\tmd.L2.Fields.List = append(md.L2.Fields.List, *fd)\n\tfd = &md.L2.Fields.List[n]\n\tfd.L0.FullName = md.FullName().Append(fd.Name())\n\tfd.L0.ParentFile = md.L0.ParentFile\n\tfd.L0.Parent = md\n\tfd.L0.Index = n\n\n\tif fd.L1.IsWeak || fd.L1.HasPacked {\n\t\tfd.L1.Options = func() protoreflect.ProtoMessage {\n\t\t\topts := descopts.Field.ProtoReflect().New()\n\t\t\tif fd.L1.IsWeak {\n\t\t\t\topts.Set(opts.Descriptor().Fields().ByName(\"weak\"), protoreflect.ValueOfBool(true))\n\t\t\t}\n\t\t\tif fd.L1.HasPacked {\n\t\t\t\topts.Set(opts.Descriptor().Fields().ByName(\"packed\"), protoreflect.ValueOfBool(fd.L1.IsPacked))\n\t\t\t}\n\t\t\treturn opts.Interface()\n\t\t}\n\t}\n\n\t// Populate Enum and Message.\n\tif fd.Enum() == nil && fd.Kind() == protoreflect.EnumKind {\n\t\tswitch v := reflect.Zero(t).Interface().(type) {\n\t\tcase protoreflect.Enum:\n\t\t\tfd.L1.Enum = v.Descriptor()\n\t\tdefault:\n\t\t\tfd.L1.Enum = LegacyLoadEnumDesc(t)\n\t\t}\n\t}\n\tif fd.Message() == nil && (fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind) {\n\t\tswitch v := reflect.Zero(t).Interface().(type) {\n\t\tcase protoreflect.ProtoMessage:\n\t\t\tfd.L1.Message = v.ProtoReflect().Descriptor()\n\t\tcase messageV1:\n\t\t\tfd.L1.Message = LegacyLoadMessageDesc(t)\n\t\tdefault:\n\t\t\tif t.Kind() == reflect.Map {\n\t\t\t\tn := len(md.L1.Messages.List)\n\t\t\t\tmd.L1.Messages.List = append(md.L1.Messages.List, filedesc.Message{L2: new(filedesc.MessageL2)})\n\t\t\t\tmd2 := &md.L1.Messages.List[n]\n\t\t\t\tmd2.L0.FullName = md.FullName().Append(protoreflect.Name(strs.MapEntryName(string(fd.Name()))))\n\t\t\t\tmd2.L0.ParentFile = md.L0.ParentFile\n\t\t\t\tmd2.L0.Parent = md\n\t\t\t\tmd2.L0.Index = n\n\n\t\t\t\tmd2.L1.IsMapEntry = true\n\t\t\t\tmd2.L2.Options = func() protoreflect.ProtoMessage {\n\t\t\t\t\topts := descopts.Message.ProtoReflect().New()\n\t\t\t\t\topts.Set(opts.Descriptor().Fields().ByName(\"map_entry\"), protoreflect.ValueOfBool(true))\n\t\t\t\t\treturn opts.Interface()\n\t\t\t\t}\n\n\t\t\t\taberrantAppendField(md2, t.Key(), tagKey, \"\", \"\")\n\t\t\t\taberrantAppendField(md2, t.Elem(), tagVal, \"\", \"\")\n\n\t\t\t\tfd.L1.Message = md2\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tfd.L1.Message = aberrantLoadMessageDescReentrant(t, \"\")\n\t\t}\n\t}\n}\n\ntype placeholderEnumValues struct {\n\tprotoreflect.EnumValueDescriptors\n}\n\nfunc (placeholderEnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor {\n\treturn filedesc.PlaceholderEnumValue(protoreflect.FullName(fmt.Sprintf(\"UNKNOWN_%d\", n)))\n}\n\n// legacyMarshaler is the proto.Marshaler interface superseded by protoiface.Methoder.\ntype legacyMarshaler interface {\n\tMarshal() ([]byte, error)\n}\n\n// legacyUnmarshaler is the proto.Unmarshaler interface superseded by protoiface.Methoder.\ntype legacyUnmarshaler interface {\n\tUnmarshal([]byte) error\n}\n\n// legacyMerger is the proto.Merger interface superseded by protoiface.Methoder.\ntype legacyMerger interface {\n\tMerge(protoiface.MessageV1)\n}\n\nvar aberrantProtoMethods = &protoiface.Methods{\n\tMarshal:   legacyMarshal,\n\tUnmarshal: legacyUnmarshal,\n\tMerge:     legacyMerge,\n\n\t// We have no way to tell whether the type's Marshal method\n\t// supports deterministic serialization or not, but this\n\t// preserves the v1 implementation's behavior of always\n\t// calling Marshal methods when present.\n\tFlags: protoiface.SupportMarshalDeterministic,\n}\n\nfunc legacyMarshal(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\tv := in.Message.(unwrapper).protoUnwrap()\n\tmarshaler, ok := v.(legacyMarshaler)\n\tif !ok {\n\t\treturn protoiface.MarshalOutput{}, errors.New(\"%T does not implement Marshal\", v)\n\t}\n\tout, err := marshaler.Marshal()\n\tif in.Buf != nil {\n\t\tout = append(in.Buf, out...)\n\t}\n\treturn protoiface.MarshalOutput{\n\t\tBuf: out,\n\t}, err\n}\n\nfunc legacyUnmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\tv := in.Message.(unwrapper).protoUnwrap()\n\tunmarshaler, ok := v.(legacyUnmarshaler)\n\tif !ok {\n\t\treturn protoiface.UnmarshalOutput{}, errors.New(\"%T does not implement Unmarshal\", v)\n\t}\n\treturn protoiface.UnmarshalOutput{}, unmarshaler.Unmarshal(in.Buf)\n}\n\nfunc legacyMerge(in protoiface.MergeInput) protoiface.MergeOutput {\n\t// Check whether this supports the legacy merger.\n\tdstv := in.Destination.(unwrapper).protoUnwrap()\n\tmerger, ok := dstv.(legacyMerger)\n\tif ok {\n\t\tmerger.Merge(Export{}.ProtoMessageV1Of(in.Source))\n\t\treturn protoiface.MergeOutput{Flags: protoiface.MergeComplete}\n\t}\n\n\t// If legacy merger is unavailable, implement merge in terms of\n\t// a marshal and unmarshal operation.\n\tsrcv := in.Source.(unwrapper).protoUnwrap()\n\tmarshaler, ok := srcv.(legacyMarshaler)\n\tif !ok {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\tdstv = in.Destination.(unwrapper).protoUnwrap()\n\tunmarshaler, ok := dstv.(legacyUnmarshaler)\n\tif !ok {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\tif !in.Source.IsValid() {\n\t\t// Legacy Marshal methods may not function on nil messages.\n\t\t// Check for a typed nil source only after we confirm that\n\t\t// legacy Marshal/Unmarshal methods are present, for\n\t\t// consistency.\n\t\treturn protoiface.MergeOutput{Flags: protoiface.MergeComplete}\n\t}\n\tb, err := marshaler.Marshal()\n\tif err != nil {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\terr = unmarshaler.Unmarshal(b)\n\tif err != nil {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\treturn protoiface.MergeOutput{Flags: protoiface.MergeComplete}\n}\n\n// aberrantMessageType implements MessageType for all types other than pointer-to-struct.\ntype aberrantMessageType struct {\n\tt reflect.Type\n}\n\nfunc (mt aberrantMessageType) New() protoreflect.Message {\n\tif mt.t.Kind() == reflect.Ptr {\n\t\treturn aberrantMessage{reflect.New(mt.t.Elem())}\n\t}\n\treturn aberrantMessage{reflect.Zero(mt.t)}\n}\nfunc (mt aberrantMessageType) Zero() protoreflect.Message {\n\treturn aberrantMessage{reflect.Zero(mt.t)}\n}\nfunc (mt aberrantMessageType) GoType() reflect.Type {\n\treturn mt.t\n}\nfunc (mt aberrantMessageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn LegacyLoadMessageDesc(mt.t)\n}\n\n// aberrantMessage implements Message for all types other than pointer-to-struct.\n//\n// When the underlying type implements legacyMarshaler or legacyUnmarshaler,\n// the aberrant Message can be marshaled or unmarshaled. Otherwise, there is\n// not much that can be done with values of this type.\ntype aberrantMessage struct {\n\tv reflect.Value\n}\n\n// Reset implements the v1 proto.Message.Reset method.\nfunc (m aberrantMessage) Reset() {\n\tif mr, ok := m.v.Interface().(interface{ Reset() }); ok {\n\t\tmr.Reset()\n\t\treturn\n\t}\n\tif m.v.Kind() == reflect.Ptr && !m.v.IsNil() {\n\t\tm.v.Elem().Set(reflect.Zero(m.v.Type().Elem()))\n\t}\n}\n\nfunc (m aberrantMessage) ProtoReflect() protoreflect.Message {\n\treturn m\n}\n\nfunc (m aberrantMessage) Descriptor() protoreflect.MessageDescriptor {\n\treturn LegacyLoadMessageDesc(m.v.Type())\n}\nfunc (m aberrantMessage) Type() protoreflect.MessageType {\n\treturn aberrantMessageType{m.v.Type()}\n}\nfunc (m aberrantMessage) New() protoreflect.Message {\n\tif m.v.Type().Kind() == reflect.Ptr {\n\t\treturn aberrantMessage{reflect.New(m.v.Type().Elem())}\n\t}\n\treturn aberrantMessage{reflect.Zero(m.v.Type())}\n}\nfunc (m aberrantMessage) Interface() protoreflect.ProtoMessage {\n\treturn m\n}\nfunc (m aberrantMessage) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\treturn\n}\nfunc (m aberrantMessage) Has(protoreflect.FieldDescriptor) bool {\n\treturn false\n}\nfunc (m aberrantMessage) Clear(protoreflect.FieldDescriptor) {\n\tpanic(\"invalid Message.Clear on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tif fd.Default().IsValid() {\n\t\treturn fd.Default()\n\t}\n\tpanic(\"invalid Message.Get on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) Set(protoreflect.FieldDescriptor, protoreflect.Value) {\n\tpanic(\"invalid Message.Set on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) Mutable(protoreflect.FieldDescriptor) protoreflect.Value {\n\tpanic(\"invalid Message.Mutable on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) NewField(protoreflect.FieldDescriptor) protoreflect.Value {\n\tpanic(\"invalid Message.NewField on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) WhichOneof(protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tpanic(\"invalid Message.WhichOneof descriptor on \" + string(m.Descriptor().FullName()))\n}\nfunc (m aberrantMessage) GetUnknown() protoreflect.RawFields {\n\treturn nil\n}\nfunc (m aberrantMessage) SetUnknown(protoreflect.RawFields) {\n\t// SetUnknown discards its input on messages which don't support unknown field storage.\n}\nfunc (m aberrantMessage) IsValid() bool {\n\tif m.v.Kind() == reflect.Ptr {\n\t\treturn !m.v.IsNil()\n\t}\n\treturn false\n}\nfunc (m aberrantMessage) ProtoMethods() *protoiface.Methods {\n\treturn aberrantProtoMethods\n}\nfunc (m aberrantMessage) protoUnwrap() interface{} {\n\treturn m.v.Interface()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/merge.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\ntype mergeOptions struct{}\n\nfunc (o mergeOptions) Merge(dst, src proto.Message) {\n\tproto.Merge(dst, src)\n}\n\n// merge is protoreflect.Methods.Merge.\nfunc (mi *MessageInfo) merge(in protoiface.MergeInput) protoiface.MergeOutput {\n\tdp, ok := mi.getPointer(in.Destination)\n\tif !ok {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\tsp, ok := mi.getPointer(in.Source)\n\tif !ok {\n\t\treturn protoiface.MergeOutput{}\n\t}\n\tmi.mergePointer(dp, sp, mergeOptions{})\n\treturn protoiface.MergeOutput{Flags: protoiface.MergeComplete}\n}\n\nfunc (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) {\n\tmi.init()\n\tif dst.IsNil() {\n\t\tpanic(fmt.Sprintf(\"invalid value: merging into nil message\"))\n\t}\n\tif src.IsNil() {\n\t\treturn\n\t}\n\tfor _, f := range mi.orderedCoderFields {\n\t\tif f.funcs.merge == nil {\n\t\t\tcontinue\n\t\t}\n\t\tsfptr := src.Apply(f.offset)\n\t\tif f.isPointer && sfptr.Elem().IsNil() {\n\t\t\tcontinue\n\t\t}\n\t\tf.funcs.merge(dst.Apply(f.offset), sfptr, f, opts)\n\t}\n\tif mi.extensionOffset.IsValid() {\n\t\tsext := src.Apply(mi.extensionOffset).Extensions()\n\t\tdext := dst.Apply(mi.extensionOffset).Extensions()\n\t\tif *dext == nil {\n\t\t\t*dext = make(map[int32]ExtensionField)\n\t\t}\n\t\tfor num, sx := range *sext {\n\t\t\txt := sx.Type()\n\t\t\txi := getExtensionFieldInfo(xt)\n\t\t\tif xi.funcs.merge == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdx := (*dext)[num]\n\t\t\tvar dv protoreflect.Value\n\t\t\tif dx.Type() == sx.Type() {\n\t\t\t\tdv = dx.Value()\n\t\t\t}\n\t\t\tif !dv.IsValid() && xi.unmarshalNeedsValue {\n\t\t\t\tdv = xt.New()\n\t\t\t}\n\t\t\tdv = xi.funcs.merge(dv, sx.Value(), opts)\n\t\t\tdx.Set(sx.Type(), dv)\n\t\t\t(*dext)[num] = dx\n\t\t}\n\t}\n\tif mi.unknownOffset.IsValid() {\n\t\tsu := mi.getUnknownBytes(src)\n\t\tif su != nil && len(*su) > 0 {\n\t\t\tdu := mi.mutableUnknownBytes(dst)\n\t\t\t*du = append(*du, *su...)\n\t\t}\n\t}\n}\n\nfunc mergeScalarValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\treturn src\n}\n\nfunc mergeBytesValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\treturn protoreflect.ValueOfBytes(append(emptyBuf[:], src.Bytes()...))\n}\n\nfunc mergeListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\tdstl := dst.List()\n\tsrcl := src.List()\n\tfor i, llen := 0, srcl.Len(); i < llen; i++ {\n\t\tdstl.Append(srcl.Get(i))\n\t}\n\treturn dst\n}\n\nfunc mergeBytesListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\tdstl := dst.List()\n\tsrcl := src.List()\n\tfor i, llen := 0, srcl.Len(); i < llen; i++ {\n\t\tsb := srcl.Get(i).Bytes()\n\t\tdb := append(emptyBuf[:], sb...)\n\t\tdstl.Append(protoreflect.ValueOfBytes(db))\n\t}\n\treturn dst\n}\n\nfunc mergeMessageListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\tdstl := dst.List()\n\tsrcl := src.List()\n\tfor i, llen := 0, srcl.Len(); i < llen; i++ {\n\t\tsm := srcl.Get(i).Message()\n\t\tdm := proto.Clone(sm.Interface()).ProtoReflect()\n\t\tdstl.Append(protoreflect.ValueOfMessage(dm))\n\t}\n\treturn dst\n}\n\nfunc mergeMessageValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value {\n\topts.Merge(dst.Message().Interface(), src.Message().Interface())\n\treturn dst\n}\n\nfunc mergeMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tif f.mi != nil {\n\t\tif dst.Elem().IsNil() {\n\t\t\tdst.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))\n\t\t}\n\t\tf.mi.mergePointer(dst.Elem(), src.Elem(), opts)\n\t} else {\n\t\tdm := dst.AsValueOf(f.ft).Elem()\n\t\tsm := src.AsValueOf(f.ft).Elem()\n\t\tif dm.IsNil() {\n\t\t\tdm.Set(reflect.New(f.ft.Elem()))\n\t\t}\n\t\topts.Merge(asMessage(dm), asMessage(sm))\n\t}\n}\n\nfunc mergeMessageSlice(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {\n\tfor _, sp := range src.PointerSlice() {\n\t\tdm := reflect.New(f.ft.Elem().Elem())\n\t\tif f.mi != nil {\n\t\t\tf.mi.mergePointer(pointerOfValue(dm), sp, opts)\n\t\t} else {\n\t\t\topts.Merge(asMessage(dm), asMessage(sp.AsValueOf(f.ft.Elem().Elem())))\n\t\t}\n\t\tdst.AppendPointerSlice(pointerOfValue(dm))\n\t}\n}\n\nfunc mergeBytes(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Bytes() = append(emptyBuf[:], *src.Bytes()...)\n}\n\nfunc mergeBytesNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Bytes()\n\tif len(v) > 0 {\n\t\t*dst.Bytes() = append(emptyBuf[:], v...)\n\t}\n}\n\nfunc mergeBytesSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.BytesSlice()\n\tfor _, v := range *src.BytesSlice() {\n\t\t*ds = append(*ds, append(emptyBuf[:], v...))\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/merge_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage impl\n\nimport ()\n\nfunc mergeBool(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Bool() = *src.Bool()\n}\n\nfunc mergeBoolNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Bool()\n\tif v != false {\n\t\t*dst.Bool() = v\n\t}\n}\n\nfunc mergeBoolPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.BoolPtr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.BoolPtr() = &v\n\t}\n}\n\nfunc mergeBoolSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.BoolSlice()\n\tss := src.BoolSlice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeInt32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Int32() = *src.Int32()\n}\n\nfunc mergeInt32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Int32()\n\tif v != 0 {\n\t\t*dst.Int32() = v\n\t}\n}\n\nfunc mergeInt32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Int32Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Int32Ptr() = &v\n\t}\n}\n\nfunc mergeInt32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Int32Slice()\n\tss := src.Int32Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeUint32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Uint32() = *src.Uint32()\n}\n\nfunc mergeUint32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Uint32()\n\tif v != 0 {\n\t\t*dst.Uint32() = v\n\t}\n}\n\nfunc mergeUint32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Uint32Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Uint32Ptr() = &v\n\t}\n}\n\nfunc mergeUint32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Uint32Slice()\n\tss := src.Uint32Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeInt64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Int64() = *src.Int64()\n}\n\nfunc mergeInt64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Int64()\n\tif v != 0 {\n\t\t*dst.Int64() = v\n\t}\n}\n\nfunc mergeInt64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Int64Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Int64Ptr() = &v\n\t}\n}\n\nfunc mergeInt64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Int64Slice()\n\tss := src.Int64Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeUint64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Uint64() = *src.Uint64()\n}\n\nfunc mergeUint64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Uint64()\n\tif v != 0 {\n\t\t*dst.Uint64() = v\n\t}\n}\n\nfunc mergeUint64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Uint64Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Uint64Ptr() = &v\n\t}\n}\n\nfunc mergeUint64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Uint64Slice()\n\tss := src.Uint64Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeFloat32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Float32() = *src.Float32()\n}\n\nfunc mergeFloat32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Float32()\n\tif v != 0 {\n\t\t*dst.Float32() = v\n\t}\n}\n\nfunc mergeFloat32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Float32Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Float32Ptr() = &v\n\t}\n}\n\nfunc mergeFloat32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Float32Slice()\n\tss := src.Float32Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeFloat64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.Float64() = *src.Float64()\n}\n\nfunc mergeFloat64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.Float64()\n\tif v != 0 {\n\t\t*dst.Float64() = v\n\t}\n}\n\nfunc mergeFloat64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.Float64Ptr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.Float64Ptr() = &v\n\t}\n}\n\nfunc mergeFloat64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.Float64Slice()\n\tss := src.Float64Slice()\n\t*ds = append(*ds, *ss...)\n}\n\nfunc mergeString(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\t*dst.String() = *src.String()\n}\n\nfunc mergeStringNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tv := *src.String()\n\tif v != \"\" {\n\t\t*dst.String() = v\n\t}\n}\n\nfunc mergeStringPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tp := *src.StringPtr()\n\tif p != nil {\n\t\tv := *p\n\t\t*dst.StringPtr() = &v\n\t}\n}\n\nfunc mergeStringSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {\n\tds := dst.StringSlice()\n\tss := src.StringSlice()\n\t*ds = append(*ds, *ss...)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// MessageInfo provides protobuf related functionality for a given Go type\n// that represents a message. A given instance of MessageInfo is tied to\n// exactly one Go type, which must be a pointer to a struct type.\n//\n// The exported fields must be populated before any methods are called\n// and cannot be mutated after set.\ntype MessageInfo struct {\n\t// GoReflectType is the underlying message Go type and must be populated.\n\tGoReflectType reflect.Type // pointer to struct\n\n\t// Desc is the underlying message descriptor type and must be populated.\n\tDesc protoreflect.MessageDescriptor\n\n\t// Exporter must be provided in a purego environment in order to provide\n\t// access to unexported fields.\n\tExporter exporter\n\n\t// OneofWrappers is list of pointers to oneof wrapper struct types.\n\tOneofWrappers []interface{}\n\n\tinitMu   sync.Mutex // protects all unexported fields\n\tinitDone uint32\n\n\treflectMessageInfo // for reflection implementation\n\tcoderMessageInfo   // for fast-path method implementations\n}\n\n// exporter is a function that returns a reference to the ith field of v,\n// where v is a pointer to a struct. It returns nil if it does not support\n// exporting the requested field (e.g., already exported).\ntype exporter func(v interface{}, i int) interface{}\n\n// getMessageInfo returns the MessageInfo for any message type that\n// is generated by our implementation of protoc-gen-go (for v2 and on).\n// If it is unable to obtain a MessageInfo, it returns nil.\nfunc getMessageInfo(mt reflect.Type) *MessageInfo {\n\tm, ok := reflect.Zero(mt).Interface().(protoreflect.ProtoMessage)\n\tif !ok {\n\t\treturn nil\n\t}\n\tmr, ok := m.ProtoReflect().(interface{ ProtoMessageInfo() *MessageInfo })\n\tif !ok {\n\t\treturn nil\n\t}\n\treturn mr.ProtoMessageInfo()\n}\n\nfunc (mi *MessageInfo) init() {\n\t// This function is called in the hot path. Inline the sync.Once logic,\n\t// since allocating a closure for Once.Do is expensive.\n\t// Keep init small to ensure that it can be inlined.\n\tif atomic.LoadUint32(&mi.initDone) == 0 {\n\t\tmi.initOnce()\n\t}\n}\n\nfunc (mi *MessageInfo) initOnce() {\n\tmi.initMu.Lock()\n\tdefer mi.initMu.Unlock()\n\tif mi.initDone == 1 {\n\t\treturn\n\t}\n\n\tt := mi.GoReflectType\n\tif t.Kind() != reflect.Ptr && t.Elem().Kind() != reflect.Struct {\n\t\tpanic(fmt.Sprintf(\"got %v, want *struct kind\", t))\n\t}\n\tt = t.Elem()\n\n\tsi := mi.makeStructInfo(t)\n\tmi.makeReflectFuncs(t, si)\n\tmi.makeCoderMethods(t, si)\n\n\tatomic.StoreUint32(&mi.initDone, 1)\n}\n\n// getPointer returns the pointer for a message, which should be of\n// the type of the MessageInfo. If the message is of a different type,\n// it returns ok==false.\nfunc (mi *MessageInfo) getPointer(m protoreflect.Message) (p pointer, ok bool) {\n\tswitch m := m.(type) {\n\tcase *messageState:\n\t\treturn m.pointer(), m.messageInfo() == mi\n\tcase *messageReflectWrapper:\n\t\treturn m.pointer(), m.messageInfo() == mi\n\t}\n\treturn pointer{}, false\n}\n\ntype (\n\tSizeCache       = int32\n\tWeakFields      = map[int32]protoreflect.ProtoMessage\n\tUnknownFields   = unknownFieldsA // TODO: switch to unknownFieldsB\n\tunknownFieldsA  = []byte\n\tunknownFieldsB  = *[]byte\n\tExtensionFields = map[int32]ExtensionField\n)\n\nvar (\n\tsizecacheType       = reflect.TypeOf(SizeCache(0))\n\tweakFieldsType      = reflect.TypeOf(WeakFields(nil))\n\tunknownFieldsAType  = reflect.TypeOf(unknownFieldsA(nil))\n\tunknownFieldsBType  = reflect.TypeOf(unknownFieldsB(nil))\n\textensionFieldsType = reflect.TypeOf(ExtensionFields(nil))\n)\n\ntype structInfo struct {\n\tsizecacheOffset offset\n\tsizecacheType   reflect.Type\n\tweakOffset      offset\n\tweakType        reflect.Type\n\tunknownOffset   offset\n\tunknownType     reflect.Type\n\textensionOffset offset\n\textensionType   reflect.Type\n\n\tfieldsByNumber        map[protoreflect.FieldNumber]reflect.StructField\n\toneofsByName          map[protoreflect.Name]reflect.StructField\n\toneofWrappersByType   map[reflect.Type]protoreflect.FieldNumber\n\toneofWrappersByNumber map[protoreflect.FieldNumber]reflect.Type\n}\n\nfunc (mi *MessageInfo) makeStructInfo(t reflect.Type) structInfo {\n\tsi := structInfo{\n\t\tsizecacheOffset: invalidOffset,\n\t\tweakOffset:      invalidOffset,\n\t\tunknownOffset:   invalidOffset,\n\t\textensionOffset: invalidOffset,\n\n\t\tfieldsByNumber:        map[protoreflect.FieldNumber]reflect.StructField{},\n\t\toneofsByName:          map[protoreflect.Name]reflect.StructField{},\n\t\toneofWrappersByType:   map[reflect.Type]protoreflect.FieldNumber{},\n\t\toneofWrappersByNumber: map[protoreflect.FieldNumber]reflect.Type{},\n\t}\n\nfieldLoop:\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tswitch f := t.Field(i); f.Name {\n\t\tcase genid.SizeCache_goname, genid.SizeCacheA_goname:\n\t\t\tif f.Type == sizecacheType {\n\t\t\t\tsi.sizecacheOffset = offsetOf(f, mi.Exporter)\n\t\t\t\tsi.sizecacheType = f.Type\n\t\t\t}\n\t\tcase genid.WeakFields_goname, genid.WeakFieldsA_goname:\n\t\t\tif f.Type == weakFieldsType {\n\t\t\t\tsi.weakOffset = offsetOf(f, mi.Exporter)\n\t\t\t\tsi.weakType = f.Type\n\t\t\t}\n\t\tcase genid.UnknownFields_goname, genid.UnknownFieldsA_goname:\n\t\t\tif f.Type == unknownFieldsAType || f.Type == unknownFieldsBType {\n\t\t\t\tsi.unknownOffset = offsetOf(f, mi.Exporter)\n\t\t\t\tsi.unknownType = f.Type\n\t\t\t}\n\t\tcase genid.ExtensionFields_goname, genid.ExtensionFieldsA_goname, genid.ExtensionFieldsB_goname:\n\t\t\tif f.Type == extensionFieldsType {\n\t\t\t\tsi.extensionOffset = offsetOf(f, mi.Exporter)\n\t\t\t\tsi.extensionType = f.Type\n\t\t\t}\n\t\tdefault:\n\t\t\tfor _, s := range strings.Split(f.Tag.Get(\"protobuf\"), \",\") {\n\t\t\t\tif len(s) > 0 && strings.Trim(s, \"0123456789\") == \"\" {\n\t\t\t\t\tn, _ := strconv.ParseUint(s, 10, 64)\n\t\t\t\t\tsi.fieldsByNumber[protoreflect.FieldNumber(n)] = f\n\t\t\t\t\tcontinue fieldLoop\n\t\t\t\t}\n\t\t\t}\n\t\t\tif s := f.Tag.Get(\"protobuf_oneof\"); len(s) > 0 {\n\t\t\t\tsi.oneofsByName[protoreflect.Name(s)] = f\n\t\t\t\tcontinue fieldLoop\n\t\t\t}\n\t\t}\n\t}\n\n\t// Derive a mapping of oneof wrappers to fields.\n\toneofWrappers := mi.OneofWrappers\n\tfor _, method := range []string{\"XXX_OneofFuncs\", \"XXX_OneofWrappers\"} {\n\t\tif fn, ok := reflect.PtrTo(t).MethodByName(method); ok {\n\t\t\tfor _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) {\n\t\t\t\tif vs, ok := v.Interface().([]interface{}); ok {\n\t\t\t\t\toneofWrappers = vs\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfor _, v := range oneofWrappers {\n\t\ttf := reflect.TypeOf(v).Elem()\n\t\tf := tf.Field(0)\n\t\tfor _, s := range strings.Split(f.Tag.Get(\"protobuf\"), \",\") {\n\t\t\tif len(s) > 0 && strings.Trim(s, \"0123456789\") == \"\" {\n\t\t\t\tn, _ := strconv.ParseUint(s, 10, 64)\n\t\t\t\tsi.oneofWrappersByType[tf] = protoreflect.FieldNumber(n)\n\t\t\t\tsi.oneofWrappersByNumber[protoreflect.FieldNumber(n)] = tf\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\treturn si\n}\n\nfunc (mi *MessageInfo) New() protoreflect.Message {\n\tm := reflect.New(mi.GoReflectType.Elem()).Interface()\n\tif r, ok := m.(protoreflect.ProtoMessage); ok {\n\t\treturn r.ProtoReflect()\n\t}\n\treturn mi.MessageOf(m)\n}\nfunc (mi *MessageInfo) Zero() protoreflect.Message {\n\treturn mi.MessageOf(reflect.Zero(mi.GoReflectType).Interface())\n}\nfunc (mi *MessageInfo) Descriptor() protoreflect.MessageDescriptor {\n\treturn mi.Desc\n}\nfunc (mi *MessageInfo) Enum(i int) protoreflect.EnumType {\n\tmi.init()\n\tfd := mi.Desc.Fields().Get(i)\n\treturn Export{}.EnumTypeOf(mi.fieldTypes[fd.Number()])\n}\nfunc (mi *MessageInfo) Message(i int) protoreflect.MessageType {\n\tmi.init()\n\tfd := mi.Desc.Fields().Get(i)\n\tswitch {\n\tcase fd.IsWeak():\n\t\tmt, _ := protoregistry.GlobalTypes.FindMessageByName(fd.Message().FullName())\n\t\treturn mt\n\tcase fd.IsMap():\n\t\treturn mapEntryType{fd.Message(), mi.fieldTypes[fd.Number()]}\n\tdefault:\n\t\treturn Export{}.MessageTypeOf(mi.fieldTypes[fd.Number()])\n\t}\n}\n\ntype mapEntryType struct {\n\tdesc    protoreflect.MessageDescriptor\n\tvalType interface{} // zero value of enum or message type\n}\n\nfunc (mt mapEntryType) New() protoreflect.Message {\n\treturn nil\n}\nfunc (mt mapEntryType) Zero() protoreflect.Message {\n\treturn nil\n}\nfunc (mt mapEntryType) Descriptor() protoreflect.MessageDescriptor {\n\treturn mt.desc\n}\nfunc (mt mapEntryType) Enum(i int) protoreflect.EnumType {\n\tfd := mt.desc.Fields().Get(i)\n\tif fd.Enum() == nil {\n\t\treturn nil\n\t}\n\treturn Export{}.EnumTypeOf(mt.valType)\n}\nfunc (mt mapEntryType) Message(i int) protoreflect.MessageType {\n\tfd := mt.desc.Fields().Get(i)\n\tif fd.Message() == nil {\n\t\treturn nil\n\t}\n\treturn Export{}.MessageTypeOf(mt.valType)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_reflect.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/internal/detrand\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype reflectMessageInfo struct {\n\tfields map[protoreflect.FieldNumber]*fieldInfo\n\toneofs map[protoreflect.Name]*oneofInfo\n\n\t// fieldTypes contains the zero value of an enum or message field.\n\t// For lists, it contains the element type.\n\t// For maps, it contains the entry value type.\n\tfieldTypes map[protoreflect.FieldNumber]interface{}\n\n\t// denseFields is a subset of fields where:\n\t//\t0 < fieldDesc.Number() < len(denseFields)\n\t// It provides faster access to the fieldInfo, but may be incomplete.\n\tdenseFields []*fieldInfo\n\n\t// rangeInfos is a list of all fields (not belonging to a oneof) and oneofs.\n\trangeInfos []interface{} // either *fieldInfo or *oneofInfo\n\n\tgetUnknown   func(pointer) protoreflect.RawFields\n\tsetUnknown   func(pointer, protoreflect.RawFields)\n\textensionMap func(pointer) *extensionMap\n\n\tnilMessage atomicNilMessage\n}\n\n// makeReflectFuncs generates the set of functions to support reflection.\nfunc (mi *MessageInfo) makeReflectFuncs(t reflect.Type, si structInfo) {\n\tmi.makeKnownFieldsFunc(si)\n\tmi.makeUnknownFieldsFunc(t, si)\n\tmi.makeExtensionFieldsFunc(t, si)\n\tmi.makeFieldTypes(si)\n}\n\n// makeKnownFieldsFunc generates functions for operations that can be performed\n// on each protobuf message field. It takes in a reflect.Type representing the\n// Go struct and matches message fields with struct fields.\n//\n// This code assumes that the struct is well-formed and panics if there are\n// any discrepancies.\nfunc (mi *MessageInfo) makeKnownFieldsFunc(si structInfo) {\n\tmi.fields = map[protoreflect.FieldNumber]*fieldInfo{}\n\tmd := mi.Desc\n\tfds := md.Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tfd := fds.Get(i)\n\t\tfs := si.fieldsByNumber[fd.Number()]\n\t\tisOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic()\n\t\tif isOneof {\n\t\t\tfs = si.oneofsByName[fd.ContainingOneof().Name()]\n\t\t}\n\t\tvar fi fieldInfo\n\t\tswitch {\n\t\tcase fs.Type == nil:\n\t\t\tfi = fieldInfoForMissing(fd) // never occurs for officially generated message types\n\t\tcase isOneof:\n\t\t\tfi = fieldInfoForOneof(fd, fs, mi.Exporter, si.oneofWrappersByNumber[fd.Number()])\n\t\tcase fd.IsMap():\n\t\t\tfi = fieldInfoForMap(fd, fs, mi.Exporter)\n\t\tcase fd.IsList():\n\t\t\tfi = fieldInfoForList(fd, fs, mi.Exporter)\n\t\tcase fd.IsWeak():\n\t\t\tfi = fieldInfoForWeakMessage(fd, si.weakOffset)\n\t\tcase fd.Message() != nil:\n\t\t\tfi = fieldInfoForMessage(fd, fs, mi.Exporter)\n\t\tdefault:\n\t\t\tfi = fieldInfoForScalar(fd, fs, mi.Exporter)\n\t\t}\n\t\tmi.fields[fd.Number()] = &fi\n\t}\n\n\tmi.oneofs = map[protoreflect.Name]*oneofInfo{}\n\tfor i := 0; i < md.Oneofs().Len(); i++ {\n\t\tod := md.Oneofs().Get(i)\n\t\tmi.oneofs[od.Name()] = makeOneofInfo(od, si, mi.Exporter)\n\t}\n\n\tmi.denseFields = make([]*fieldInfo, fds.Len()*2)\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tif fd := fds.Get(i); int(fd.Number()) < len(mi.denseFields) {\n\t\t\tmi.denseFields[fd.Number()] = mi.fields[fd.Number()]\n\t\t}\n\t}\n\n\tfor i := 0; i < fds.Len(); {\n\t\tfd := fds.Get(i)\n\t\tif od := fd.ContainingOneof(); od != nil && !od.IsSynthetic() {\n\t\t\tmi.rangeInfos = append(mi.rangeInfos, mi.oneofs[od.Name()])\n\t\t\ti += od.Fields().Len()\n\t\t} else {\n\t\t\tmi.rangeInfos = append(mi.rangeInfos, mi.fields[fd.Number()])\n\t\t\ti++\n\t\t}\n\t}\n\n\t// Introduce instability to iteration order, but keep it deterministic.\n\tif len(mi.rangeInfos) > 1 && detrand.Bool() {\n\t\ti := detrand.Intn(len(mi.rangeInfos) - 1)\n\t\tmi.rangeInfos[i], mi.rangeInfos[i+1] = mi.rangeInfos[i+1], mi.rangeInfos[i]\n\t}\n}\n\nfunc (mi *MessageInfo) makeUnknownFieldsFunc(t reflect.Type, si structInfo) {\n\tswitch {\n\tcase si.unknownOffset.IsValid() && si.unknownType == unknownFieldsAType:\n\t\t// Handle as []byte.\n\t\tmi.getUnknown = func(p pointer) protoreflect.RawFields {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn *p.Apply(mi.unknownOffset).Bytes()\n\t\t}\n\t\tmi.setUnknown = func(p pointer, b protoreflect.RawFields) {\n\t\t\tif p.IsNil() {\n\t\t\t\tpanic(\"invalid SetUnknown on nil Message\")\n\t\t\t}\n\t\t\t*p.Apply(mi.unknownOffset).Bytes() = b\n\t\t}\n\tcase si.unknownOffset.IsValid() && si.unknownType == unknownFieldsBType:\n\t\t// Handle as *[]byte.\n\t\tmi.getUnknown = func(p pointer) protoreflect.RawFields {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tbp := p.Apply(mi.unknownOffset).BytesPtr()\n\t\t\tif *bp == nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn **bp\n\t\t}\n\t\tmi.setUnknown = func(p pointer, b protoreflect.RawFields) {\n\t\t\tif p.IsNil() {\n\t\t\t\tpanic(\"invalid SetUnknown on nil Message\")\n\t\t\t}\n\t\t\tbp := p.Apply(mi.unknownOffset).BytesPtr()\n\t\t\tif *bp == nil {\n\t\t\t\t*bp = new([]byte)\n\t\t\t}\n\t\t\t**bp = b\n\t\t}\n\tdefault:\n\t\tmi.getUnknown = func(pointer) protoreflect.RawFields {\n\t\t\treturn nil\n\t\t}\n\t\tmi.setUnknown = func(p pointer, _ protoreflect.RawFields) {\n\t\t\tif p.IsNil() {\n\t\t\t\tpanic(\"invalid SetUnknown on nil Message\")\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (mi *MessageInfo) makeExtensionFieldsFunc(t reflect.Type, si structInfo) {\n\tif si.extensionOffset.IsValid() {\n\t\tmi.extensionMap = func(p pointer) *extensionMap {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn (*extensionMap)(nil)\n\t\t\t}\n\t\t\tv := p.Apply(si.extensionOffset).AsValueOf(extensionFieldsType)\n\t\t\treturn (*extensionMap)(v.Interface().(*map[int32]ExtensionField))\n\t\t}\n\t} else {\n\t\tmi.extensionMap = func(pointer) *extensionMap {\n\t\t\treturn (*extensionMap)(nil)\n\t\t}\n\t}\n}\nfunc (mi *MessageInfo) makeFieldTypes(si structInfo) {\n\tmd := mi.Desc\n\tfds := md.Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tvar ft reflect.Type\n\t\tfd := fds.Get(i)\n\t\tfs := si.fieldsByNumber[fd.Number()]\n\t\tisOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic()\n\t\tif isOneof {\n\t\t\tfs = si.oneofsByName[fd.ContainingOneof().Name()]\n\t\t}\n\t\tvar isMessage bool\n\t\tswitch {\n\t\tcase fs.Type == nil:\n\t\t\tcontinue // never occurs for officially generated message types\n\t\tcase isOneof:\n\t\t\tif fd.Enum() != nil || fd.Message() != nil {\n\t\t\t\tft = si.oneofWrappersByNumber[fd.Number()].Field(0).Type\n\t\t\t}\n\t\tcase fd.IsMap():\n\t\t\tif fd.MapValue().Enum() != nil || fd.MapValue().Message() != nil {\n\t\t\t\tft = fs.Type.Elem()\n\t\t\t}\n\t\t\tisMessage = fd.MapValue().Message() != nil\n\t\tcase fd.IsList():\n\t\t\tif fd.Enum() != nil || fd.Message() != nil {\n\t\t\t\tft = fs.Type.Elem()\n\t\t\t}\n\t\t\tisMessage = fd.Message() != nil\n\t\tcase fd.Enum() != nil:\n\t\t\tft = fs.Type\n\t\t\tif fd.HasPresence() && ft.Kind() == reflect.Ptr {\n\t\t\t\tft = ft.Elem()\n\t\t\t}\n\t\tcase fd.Message() != nil:\n\t\t\tft = fs.Type\n\t\t\tif fd.IsWeak() {\n\t\t\t\tft = nil\n\t\t\t}\n\t\t\tisMessage = true\n\t\t}\n\t\tif isMessage && ft != nil && ft.Kind() != reflect.Ptr {\n\t\t\tft = reflect.PtrTo(ft) // never occurs for officially generated message types\n\t\t}\n\t\tif ft != nil {\n\t\t\tif mi.fieldTypes == nil {\n\t\t\t\tmi.fieldTypes = make(map[protoreflect.FieldNumber]interface{})\n\t\t\t}\n\t\t\tmi.fieldTypes[fd.Number()] = reflect.Zero(ft).Interface()\n\t\t}\n\t}\n}\n\ntype extensionMap map[int32]ExtensionField\n\nfunc (m *extensionMap) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif m != nil {\n\t\tfor _, x := range *m {\n\t\t\txd := x.Type().TypeDescriptor()\n\t\t\tv := x.Value()\n\t\t\tif xd.IsList() && v.List().Len() == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !f(xd, v) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\nfunc (m *extensionMap) Has(xt protoreflect.ExtensionType) (ok bool) {\n\tif m == nil {\n\t\treturn false\n\t}\n\txd := xt.TypeDescriptor()\n\tx, ok := (*m)[int32(xd.Number())]\n\tif !ok {\n\t\treturn false\n\t}\n\tswitch {\n\tcase xd.IsList():\n\t\treturn x.Value().List().Len() > 0\n\tcase xd.IsMap():\n\t\treturn x.Value().Map().Len() > 0\n\tcase xd.Message() != nil:\n\t\treturn x.Value().Message().IsValid()\n\t}\n\treturn true\n}\nfunc (m *extensionMap) Clear(xt protoreflect.ExtensionType) {\n\tdelete(*m, int32(xt.TypeDescriptor().Number()))\n}\nfunc (m *extensionMap) Get(xt protoreflect.ExtensionType) protoreflect.Value {\n\txd := xt.TypeDescriptor()\n\tif m != nil {\n\t\tif x, ok := (*m)[int32(xd.Number())]; ok {\n\t\t\treturn x.Value()\n\t\t}\n\t}\n\treturn xt.Zero()\n}\nfunc (m *extensionMap) Set(xt protoreflect.ExtensionType, v protoreflect.Value) {\n\txd := xt.TypeDescriptor()\n\tisValid := true\n\tswitch {\n\tcase !xt.IsValidValue(v):\n\t\tisValid = false\n\tcase xd.IsList():\n\t\tisValid = v.List().IsValid()\n\tcase xd.IsMap():\n\t\tisValid = v.Map().IsValid()\n\tcase xd.Message() != nil:\n\t\tisValid = v.Message().IsValid()\n\t}\n\tif !isValid {\n\t\tpanic(fmt.Sprintf(\"%v: assigning invalid value\", xt.TypeDescriptor().FullName()))\n\t}\n\n\tif *m == nil {\n\t\t*m = make(map[int32]ExtensionField)\n\t}\n\tvar x ExtensionField\n\tx.Set(xt, v)\n\t(*m)[int32(xd.Number())] = x\n}\nfunc (m *extensionMap) Mutable(xt protoreflect.ExtensionType) protoreflect.Value {\n\txd := xt.TypeDescriptor()\n\tif xd.Kind() != protoreflect.MessageKind && xd.Kind() != protoreflect.GroupKind && !xd.IsList() && !xd.IsMap() {\n\t\tpanic(\"invalid Mutable on field with non-composite type\")\n\t}\n\tif x, ok := (*m)[int32(xd.Number())]; ok {\n\t\treturn x.Value()\n\t}\n\tv := xt.New()\n\tm.Set(xt, v)\n\treturn v\n}\n\n// MessageState is a data structure that is nested as the first field in a\n// concrete message. It provides a way to implement the ProtoReflect method\n// in an allocation-free way without needing to have a shadow Go type generated\n// for every message type. This technique only works using unsafe.\n//\n// Example generated code:\n//\n//\ttype M struct {\n//\t\tstate protoimpl.MessageState\n//\n//\t\tField1 int32\n//\t\tField2 string\n//\t\tField3 *BarMessage\n//\t\t...\n//\t}\n//\n//\tfunc (m *M) ProtoReflect() protoreflect.Message {\n//\t\tmi := &file_fizz_buzz_proto_msgInfos[5]\n//\t\tif protoimpl.UnsafeEnabled && m != nil {\n//\t\t\tms := protoimpl.X.MessageStateOf(Pointer(m))\n//\t\t\tif ms.LoadMessageInfo() == nil {\n//\t\t\t\tms.StoreMessageInfo(mi)\n//\t\t\t}\n//\t\t\treturn ms\n//\t\t}\n//\t\treturn mi.MessageOf(m)\n//\t}\n//\n// The MessageState type holds a *MessageInfo, which must be atomically set to\n// the message info associated with a given message instance.\n// By unsafely converting a *M into a *MessageState, the MessageState object\n// has access to all the information needed to implement protobuf reflection.\n// It has access to the message info as its first field, and a pointer to the\n// MessageState is identical to a pointer to the concrete message value.\n//\n// Requirements:\n//   - The type M must implement protoreflect.ProtoMessage.\n//   - The address of m must not be nil.\n//   - The address of m and the address of m.state must be equal,\n//     even though they are different Go types.\ntype MessageState struct {\n\tpragma.NoUnkeyedLiterals\n\tpragma.DoNotCompare\n\tpragma.DoNotCopy\n\n\tatomicMessageInfo *MessageInfo\n}\n\ntype messageState MessageState\n\nvar (\n\t_ protoreflect.Message = (*messageState)(nil)\n\t_ unwrapper            = (*messageState)(nil)\n)\n\n// messageDataType is a tuple of a pointer to the message data and\n// a pointer to the message type. It is a generalized way of providing a\n// reflective view over a message instance. The disadvantage of this approach\n// is the need to allocate this tuple of 16B.\ntype messageDataType struct {\n\tp  pointer\n\tmi *MessageInfo\n}\n\ntype (\n\tmessageReflectWrapper messageDataType\n\tmessageIfaceWrapper   messageDataType\n)\n\nvar (\n\t_ protoreflect.Message      = (*messageReflectWrapper)(nil)\n\t_ unwrapper                 = (*messageReflectWrapper)(nil)\n\t_ protoreflect.ProtoMessage = (*messageIfaceWrapper)(nil)\n\t_ unwrapper                 = (*messageIfaceWrapper)(nil)\n)\n\n// MessageOf returns a reflective view over a message. The input must be a\n// pointer to a named Go struct. If the provided type has a ProtoReflect method,\n// it must be implemented by calling this method.\nfunc (mi *MessageInfo) MessageOf(m interface{}) protoreflect.Message {\n\tif reflect.TypeOf(m) != mi.GoReflectType {\n\t\tpanic(fmt.Sprintf(\"type mismatch: got %T, want %v\", m, mi.GoReflectType))\n\t}\n\tp := pointerOfIface(m)\n\tif p.IsNil() {\n\t\treturn mi.nilMessage.Init(mi)\n\t}\n\treturn &messageReflectWrapper{p, mi}\n}\n\nfunc (m *messageReflectWrapper) pointer() pointer          { return m.p }\nfunc (m *messageReflectWrapper) messageInfo() *MessageInfo { return m.mi }\n\n// Reset implements the v1 proto.Message.Reset method.\nfunc (m *messageIfaceWrapper) Reset() {\n\tif mr, ok := m.protoUnwrap().(interface{ Reset() }); ok {\n\t\tmr.Reset()\n\t\treturn\n\t}\n\trv := reflect.ValueOf(m.protoUnwrap())\n\tif rv.Kind() == reflect.Ptr && !rv.IsNil() {\n\t\trv.Elem().Set(reflect.Zero(rv.Type().Elem()))\n\t}\n}\nfunc (m *messageIfaceWrapper) ProtoReflect() protoreflect.Message {\n\treturn (*messageReflectWrapper)(m)\n}\nfunc (m *messageIfaceWrapper) protoUnwrap() interface{} {\n\treturn m.p.AsIfaceOf(m.mi.GoReflectType.Elem())\n}\n\n// checkField verifies that the provided field descriptor is valid.\n// Exactly one of the returned values is populated.\nfunc (mi *MessageInfo) checkField(fd protoreflect.FieldDescriptor) (*fieldInfo, protoreflect.ExtensionType) {\n\tvar fi *fieldInfo\n\tif n := fd.Number(); 0 < n && int(n) < len(mi.denseFields) {\n\t\tfi = mi.denseFields[n]\n\t} else {\n\t\tfi = mi.fields[n]\n\t}\n\tif fi != nil {\n\t\tif fi.fieldDesc != fd {\n\t\t\tif got, want := fd.FullName(), fi.fieldDesc.FullName(); got != want {\n\t\t\t\tpanic(fmt.Sprintf(\"mismatching field: got %v, want %v\", got, want))\n\t\t\t}\n\t\t\tpanic(fmt.Sprintf(\"mismatching field: %v\", fd.FullName()))\n\t\t}\n\t\treturn fi, nil\n\t}\n\n\tif fd.IsExtension() {\n\t\tif got, want := fd.ContainingMessage().FullName(), mi.Desc.FullName(); got != want {\n\t\t\t// TODO: Should this be exact containing message descriptor match?\n\t\t\tpanic(fmt.Sprintf(\"extension %v has mismatching containing message: got %v, want %v\", fd.FullName(), got, want))\n\t\t}\n\t\tif !mi.Desc.ExtensionRanges().Has(fd.Number()) {\n\t\t\tpanic(fmt.Sprintf(\"extension %v extends %v outside the extension range\", fd.FullName(), mi.Desc.FullName()))\n\t\t}\n\t\txtd, ok := fd.(protoreflect.ExtensionTypeDescriptor)\n\t\tif !ok {\n\t\t\tpanic(fmt.Sprintf(\"extension %v does not implement protoreflect.ExtensionTypeDescriptor\", fd.FullName()))\n\t\t}\n\t\treturn nil, xtd.Type()\n\t}\n\tpanic(fmt.Sprintf(\"field %v is invalid\", fd.FullName()))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\ntype fieldInfo struct {\n\tfieldDesc protoreflect.FieldDescriptor\n\n\t// These fields are used for protobuf reflection support.\n\thas        func(pointer) bool\n\tclear      func(pointer)\n\tget        func(pointer) protoreflect.Value\n\tset        func(pointer, protoreflect.Value)\n\tmutable    func(pointer) protoreflect.Value\n\tnewMessage func() protoreflect.Message\n\tnewField   func() protoreflect.Value\n}\n\nfunc fieldInfoForMissing(fd protoreflect.FieldDescriptor) fieldInfo {\n\t// This never occurs for generated message types.\n\t// It implies that a hand-crafted type has missing Go fields\n\t// for specific protobuf message fields.\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\treturn false\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\treturn fd.Default()\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t\tnewMessage: func() protoreflect.Message {\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\tif v := fd.Default(); v.IsValid() {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\tpanic(\"missing Go struct field for \" + string(fd.FullName()))\n\t\t},\n\t}\n}\n\nfunc fieldInfoForOneof(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter, ot reflect.Type) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Interface {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: got %v, want interface kind\", fd.FullName(), ft))\n\t}\n\tif ot.Kind() != reflect.Struct {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: got %v, want struct kind\", fd.FullName(), ot))\n\t}\n\tif !reflect.PtrTo(ot).Implements(ft) {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: %v does not implement %v\", fd.FullName(), ot, ft))\n\t}\n\tconv := NewConverter(ot.Field(0).Type, fd)\n\tisMessage := fd.Message() != nil\n\n\t// TODO: Implement unsafe fast path?\n\tfieldOffset := offsetOf(fs, x)\n\treturn fieldInfo{\n\t\t// NOTE: The logic below intentionally assumes that oneof fields are\n\t\t// well-formatted. That is, the oneof interface never contains a\n\t\t// typed nil pointer to one of the wrapper structs.\n\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot {\n\t\t\t\t// NOTE: We intentionally don't check for rv.Elem().IsNil()\n\t\t\t\t// so that (*OneofWrapperType)(nil) gets cleared to nil.\n\t\t\t\treturn\n\t\t\t}\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv = rv.Elem().Elem().Field(0)\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {\n\t\t\t\trv.Set(reflect.New(ot))\n\t\t\t}\n\t\t\trv = rv.Elem().Elem().Field(0)\n\t\t\trv.Set(conv.GoValueOf(v))\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tif !isMessage {\n\t\t\t\tpanic(fmt.Sprintf(\"field %v with invalid Mutable call on field with non-composite type\", fd.FullName()))\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {\n\t\t\t\trv.Set(reflect.New(ot))\n\t\t\t}\n\t\t\trv = rv.Elem().Elem().Field(0)\n\t\t\tif rv.Kind() == reflect.Ptr && rv.IsNil() {\n\t\t\t\trv.Set(conv.GoValueOf(protoreflect.ValueOfMessage(conv.New().Message())))\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tnewMessage: func() protoreflect.Message {\n\t\t\treturn conv.New().Message()\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc fieldInfoForMap(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Map {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: got %v, want map kind\", fd.FullName(), ft))\n\t}\n\tconv := NewConverter(ft, fd)\n\n\t// TODO: Implement unsafe fast path?\n\tfieldOffset := offsetOf(fs, x)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn rv.Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tpv := conv.GoValueOf(v)\n\t\t\tif pv.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"map field %v cannot be set with read-only value\", fd.FullName()))\n\t\t\t}\n\t\t\trv.Set(pv)\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif v.IsNil() {\n\t\t\t\tv.Set(reflect.MakeMap(fs.Type))\n\t\t\t}\n\t\t\treturn conv.PBValueOf(v)\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc fieldInfoForList(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {\n\tft := fs.Type\n\tif ft.Kind() != reflect.Slice {\n\t\tpanic(fmt.Sprintf(\"field %v has invalid type: got %v, want slice kind\", fd.FullName(), ft))\n\t}\n\tconv := NewConverter(reflect.PtrTo(ft), fd)\n\n\t// TODO: Implement unsafe fast path?\n\tfieldOffset := offsetOf(fs, x)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn rv.Len() > 0\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type)\n\t\t\tif rv.Elem().Len() == 0 {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tpv := conv.GoValueOf(v)\n\t\t\tif pv.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"list field %v cannot be set with read-only value\", fd.FullName()))\n\t\t\t}\n\t\t\trv.Set(pv.Elem())\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tv := p.Apply(fieldOffset).AsValueOf(fs.Type)\n\t\t\treturn conv.PBValueOf(v)\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nvar (\n\tnilBytes   = reflect.ValueOf([]byte(nil))\n\temptyBytes = reflect.ValueOf([]byte{})\n)\n\nfunc fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {\n\tft := fs.Type\n\tnullable := fd.HasPresence()\n\tisBytes := ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8\n\tif nullable {\n\t\tif ft.Kind() != reflect.Ptr && ft.Kind() != reflect.Slice {\n\t\t\t// This never occurs for generated message types.\n\t\t\t// Despite the protobuf type system specifying presence,\n\t\t\t// the Go field type cannot represent it.\n\t\t\tnullable = false\n\t\t}\n\t\tif ft.Kind() == reflect.Ptr {\n\t\t\tft = ft.Elem()\n\t\t}\n\t}\n\tconv := NewConverter(ft, fd)\n\n\t// TODO: Implement unsafe fast path?\n\tfieldOffset := offsetOf(fs, x)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif nullable {\n\t\t\t\treturn !rv.IsNil()\n\t\t\t}\n\t\t\tswitch rv.Kind() {\n\t\t\tcase reflect.Bool:\n\t\t\t\treturn rv.Bool()\n\t\t\tcase reflect.Int32, reflect.Int64:\n\t\t\t\treturn rv.Int() != 0\n\t\t\tcase reflect.Uint32, reflect.Uint64:\n\t\t\t\treturn rv.Uint() != 0\n\t\t\tcase reflect.Float32, reflect.Float64:\n\t\t\t\treturn rv.Float() != 0 || math.Signbit(rv.Float())\n\t\t\tcase reflect.String, reflect.Slice:\n\t\t\t\treturn rv.Len() > 0\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"field %v has invalid type: %v\", fd.FullName(), rv.Type())) // should never happen\n\t\t\t}\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif nullable {\n\t\t\t\tif rv.IsNil() {\n\t\t\t\t\treturn conv.Zero()\n\t\t\t\t}\n\t\t\t\tif rv.Kind() == reflect.Ptr {\n\t\t\t\t\trv = rv.Elem()\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif nullable && rv.Kind() == reflect.Ptr {\n\t\t\t\tif rv.IsNil() {\n\t\t\t\t\trv.Set(reflect.New(ft))\n\t\t\t\t}\n\t\t\t\trv = rv.Elem()\n\t\t\t}\n\t\t\trv.Set(conv.GoValueOf(v))\n\t\t\tif isBytes && rv.Len() == 0 {\n\t\t\t\tif nullable {\n\t\t\t\t\trv.Set(emptyBytes) // preserve presence\n\t\t\t\t} else {\n\t\t\t\t\trv.Set(nilBytes) // do not preserve presence\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\nfunc fieldInfoForWeakMessage(fd protoreflect.FieldDescriptor, weakOffset offset) fieldInfo {\n\tif !flags.ProtoLegacy {\n\t\tpanic(\"no support for proto1 weak fields\")\n\t}\n\n\tvar once sync.Once\n\tvar messageType protoreflect.MessageType\n\tlazyInit := func() {\n\t\tonce.Do(func() {\n\t\t\tmessageName := fd.Message().FullName()\n\t\t\tmessageType, _ = protoregistry.GlobalTypes.FindMessageByName(messageName)\n\t\t\tif messageType == nil {\n\t\t\t\tpanic(fmt.Sprintf(\"weak message %v for field %v is not linked in\", messageName, fd.FullName()))\n\t\t\t}\n\t\t})\n\t}\n\n\tnum := fd.Number()\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t_, ok := p.Apply(weakOffset).WeakFields().get(num)\n\t\t\treturn ok\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\tp.Apply(weakOffset).WeakFields().clear(num)\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tlazyInit()\n\t\t\tif p.IsNil() {\n\t\t\t\treturn protoreflect.ValueOfMessage(messageType.Zero())\n\t\t\t}\n\t\t\tm, ok := p.Apply(weakOffset).WeakFields().get(num)\n\t\t\tif !ok {\n\t\t\t\treturn protoreflect.ValueOfMessage(messageType.Zero())\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\tlazyInit()\n\t\t\tm := v.Message()\n\t\t\tif m.Descriptor() != messageType.Descriptor() {\n\t\t\t\tif got, want := m.Descriptor().FullName(), messageType.Descriptor().FullName(); got != want {\n\t\t\t\t\tpanic(fmt.Sprintf(\"field %v has mismatching message descriptor: got %v, want %v\", fd.FullName(), got, want))\n\t\t\t\t}\n\t\t\t\tpanic(fmt.Sprintf(\"field %v has mismatching message descriptor: %v\", fd.FullName(), m.Descriptor().FullName()))\n\t\t\t}\n\t\t\tp.Apply(weakOffset).WeakFields().set(num, m.Interface())\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\tlazyInit()\n\t\t\tfs := p.Apply(weakOffset).WeakFields()\n\t\t\tm, ok := fs.get(num)\n\t\t\tif !ok {\n\t\t\t\tm = messageType.New().Interface()\n\t\t\t\tfs.set(num, m)\n\t\t\t}\n\t\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\t\t},\n\t\tnewMessage: func() protoreflect.Message {\n\t\t\tlazyInit()\n\t\t\treturn messageType.New()\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\tlazyInit()\n\t\t\treturn protoreflect.ValueOfMessage(messageType.New())\n\t\t},\n\t}\n}\n\nfunc fieldInfoForMessage(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {\n\tft := fs.Type\n\tconv := NewConverter(ft, fd)\n\n\t// TODO: Implement unsafe fast path?\n\tfieldOffset := offsetOf(fs, x)\n\treturn fieldInfo{\n\t\tfieldDesc: fd,\n\t\thas: func(p pointer) bool {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif fs.Type.Kind() != reflect.Ptr {\n\t\t\t\treturn !isZero(rv)\n\t\t\t}\n\t\t\treturn !rv.IsNil()\n\t\t},\n\t\tclear: func(p pointer) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(reflect.Zero(rv.Type()))\n\t\t},\n\t\tget: func(p pointer) protoreflect.Value {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn conv.Zero()\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tset: func(p pointer, v protoreflect.Value) {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\trv.Set(conv.GoValueOf(v))\n\t\t\tif fs.Type.Kind() == reflect.Ptr && rv.IsNil() {\n\t\t\t\tpanic(fmt.Sprintf(\"field %v has invalid nil pointer\", fd.FullName()))\n\t\t\t}\n\t\t},\n\t\tmutable: func(p pointer) protoreflect.Value {\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif fs.Type.Kind() == reflect.Ptr && rv.IsNil() {\n\t\t\t\trv.Set(conv.GoValueOf(conv.New()))\n\t\t\t}\n\t\t\treturn conv.PBValueOf(rv)\n\t\t},\n\t\tnewMessage: func() protoreflect.Message {\n\t\t\treturn conv.New().Message()\n\t\t},\n\t\tnewField: func() protoreflect.Value {\n\t\t\treturn conv.New()\n\t\t},\n\t}\n}\n\ntype oneofInfo struct {\n\toneofDesc protoreflect.OneofDescriptor\n\twhich     func(pointer) protoreflect.FieldNumber\n}\n\nfunc makeOneofInfo(od protoreflect.OneofDescriptor, si structInfo, x exporter) *oneofInfo {\n\toi := &oneofInfo{oneofDesc: od}\n\tif od.IsSynthetic() {\n\t\tfs := si.fieldsByNumber[od.Fields().Get(0).Number()]\n\t\tfieldOffset := offsetOf(fs, x)\n\t\toi.which = func(p pointer) protoreflect.FieldNumber {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() { // valid on either *T or []byte\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\treturn od.Fields().Get(0).Number()\n\t\t}\n\t} else {\n\t\tfs := si.oneofsByName[od.Name()]\n\t\tfieldOffset := offsetOf(fs, x)\n\t\toi.which = func(p pointer) protoreflect.FieldNumber {\n\t\t\tif p.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\trv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\trv = rv.Elem()\n\t\t\tif rv.IsNil() {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\treturn si.oneofWrappersByType[rv.Type().Elem()]\n\t\t}\n\t}\n\treturn oi\n}\n\n// isZero is identical to reflect.Value.IsZero.\n// TODO: Remove this when Go1.13 is the minimally supported Go version.\nfunc isZero(v reflect.Value) bool {\n\tswitch v.Kind() {\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 math.Float64bits(v.Float()) == 0\n\tcase reflect.Complex64, reflect.Complex128:\n\t\tc := v.Complex()\n\t\treturn math.Float64bits(real(c)) == 0 && math.Float64bits(imag(c)) == 0\n\tcase reflect.Array:\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tif !isZero(v.Index(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\tcase reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer:\n\t\treturn v.IsNil()\n\tcase reflect.String:\n\t\treturn v.Len() == 0\n\tcase reflect.Struct:\n\t\tfor i := 0; i < v.NumField(); i++ {\n\t\t\tif !isZero(v.Field(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\tdefault:\n\t\tpanic(&reflect.ValueError{\"reflect.Value.IsZero\", v.Kind()})\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage impl\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nfunc (m *messageState) Descriptor() protoreflect.MessageDescriptor {\n\treturn m.messageInfo().Desc\n}\nfunc (m *messageState) Type() protoreflect.MessageType {\n\treturn m.messageInfo()\n}\nfunc (m *messageState) New() protoreflect.Message {\n\treturn m.messageInfo().New()\n}\nfunc (m *messageState) Interface() protoreflect.ProtoMessage {\n\treturn m.protoUnwrap().(protoreflect.ProtoMessage)\n}\nfunc (m *messageState) protoUnwrap() interface{} {\n\treturn m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())\n}\nfunc (m *messageState) ProtoMethods() *protoiface.Methods {\n\tm.messageInfo().init()\n\treturn &m.messageInfo().methods\n}\n\n// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code\n// to be able to retrieve a v2 MessageInfo struct.\n//\n// WARNING: This method is exempt from the compatibility promise and\n// may be removed in the future without warning.\nfunc (m *messageState) ProtoMessageInfo() *MessageInfo {\n\treturn m.messageInfo()\n}\n\nfunc (m *messageState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tm.messageInfo().init()\n\tfor _, ri := range m.messageInfo().rangeInfos {\n\t\tswitch ri := ri.(type) {\n\t\tcase *fieldInfo:\n\t\t\tif ri.has(m.pointer()) {\n\t\t\t\tif !f(ri.fieldDesc, ri.get(m.pointer())) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\tcase *oneofInfo:\n\t\t\tif n := ri.which(m.pointer()); n > 0 {\n\t\t\t\tfi := m.messageInfo().fields[n]\n\t\t\t\tif !f(fi.fieldDesc, fi.get(m.pointer())) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tm.messageInfo().extensionMap(m.pointer()).Range(f)\n}\nfunc (m *messageState) Has(fd protoreflect.FieldDescriptor) bool {\n\tm.messageInfo().init()\n\tif fi, xt := m.messageInfo().checkField(fd); fi != nil {\n\t\treturn fi.has(m.pointer())\n\t} else {\n\t\treturn m.messageInfo().extensionMap(m.pointer()).Has(xt)\n\t}\n}\nfunc (m *messageState) Clear(fd protoreflect.FieldDescriptor) {\n\tm.messageInfo().init()\n\tif fi, xt := m.messageInfo().checkField(fd); fi != nil {\n\t\tfi.clear(m.pointer())\n\t} else {\n\t\tm.messageInfo().extensionMap(m.pointer()).Clear(xt)\n\t}\n}\nfunc (m *messageState) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tm.messageInfo().init()\n\tif fi, xt := m.messageInfo().checkField(fd); fi != nil {\n\t\treturn fi.get(m.pointer())\n\t} else {\n\t\treturn m.messageInfo().extensionMap(m.pointer()).Get(xt)\n\t}\n}\nfunc (m *messageState) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {\n\tm.messageInfo().init()\n\tif fi, xt := m.messageInfo().checkField(fd); fi != nil {\n\t\tfi.set(m.pointer(), v)\n\t} else {\n\t\tm.messageInfo().extensionMap(m.pointer()).Set(xt, v)\n\t}\n}\nfunc (m *messageState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tm.messageInfo().init()\n\tif fi, xt := m.messageInfo().checkField(fd); fi != nil {\n\t\treturn fi.mutable(m.pointer())\n\t} else {\n\t\treturn m.messageInfo().extensionMap(m.pointer()).Mutable(xt)\n\t}\n}\nfunc (m *messageState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tm.messageInfo().init()\n\tif fi, xt := m.messageInfo().checkField(fd); fi != nil {\n\t\treturn fi.newField()\n\t} else {\n\t\treturn xt.New()\n\t}\n}\nfunc (m *messageState) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tm.messageInfo().init()\n\tif oi := m.messageInfo().oneofs[od.Name()]; oi != nil && oi.oneofDesc == od {\n\t\treturn od.Fields().ByNumber(oi.which(m.pointer()))\n\t}\n\tpanic(\"invalid oneof descriptor \" + string(od.FullName()) + \" for message \" + string(m.Descriptor().FullName()))\n}\nfunc (m *messageState) GetUnknown() protoreflect.RawFields {\n\tm.messageInfo().init()\n\treturn m.messageInfo().getUnknown(m.pointer())\n}\nfunc (m *messageState) SetUnknown(b protoreflect.RawFields) {\n\tm.messageInfo().init()\n\tm.messageInfo().setUnknown(m.pointer(), b)\n}\nfunc (m *messageState) IsValid() bool {\n\treturn !m.pointer().IsNil()\n}\n\nfunc (m *messageReflectWrapper) Descriptor() protoreflect.MessageDescriptor {\n\treturn m.messageInfo().Desc\n}\nfunc (m *messageReflectWrapper) Type() protoreflect.MessageType {\n\treturn m.messageInfo()\n}\nfunc (m *messageReflectWrapper) New() protoreflect.Message {\n\treturn m.messageInfo().New()\n}\nfunc (m *messageReflectWrapper) Interface() protoreflect.ProtoMessage {\n\tif m, ok := m.protoUnwrap().(protoreflect.ProtoMessage); ok {\n\t\treturn m\n\t}\n\treturn (*messageIfaceWrapper)(m)\n}\nfunc (m *messageReflectWrapper) protoUnwrap() interface{} {\n\treturn m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())\n}\nfunc (m *messageReflectWrapper) ProtoMethods() *protoiface.Methods {\n\tm.messageInfo().init()\n\treturn &m.messageInfo().methods\n}\n\n// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code\n// to be able to retrieve a v2 MessageInfo struct.\n//\n// WARNING: This method is exempt from the compatibility promise and\n// may be removed in the future without warning.\nfunc (m *messageReflectWrapper) ProtoMessageInfo() *MessageInfo {\n\treturn m.messageInfo()\n}\n\nfunc (m *messageReflectWrapper) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tm.messageInfo().init()\n\tfor _, ri := range m.messageInfo().rangeInfos {\n\t\tswitch ri := ri.(type) {\n\t\tcase *fieldInfo:\n\t\t\tif ri.has(m.pointer()) {\n\t\t\t\tif !f(ri.fieldDesc, ri.get(m.pointer())) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\tcase *oneofInfo:\n\t\t\tif n := ri.which(m.pointer()); n > 0 {\n\t\t\t\tfi := m.messageInfo().fields[n]\n\t\t\t\tif !f(fi.fieldDesc, fi.get(m.pointer())) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tm.messageInfo().extensionMap(m.pointer()).Range(f)\n}\nfunc (m *messageReflectWrapper) Has(fd protoreflect.FieldDescriptor) bool {\n\tm.messageInfo().init()\n\tif fi, xt := m.messageInfo().checkField(fd); fi != nil {\n\t\treturn fi.has(m.pointer())\n\t} else {\n\t\treturn m.messageInfo().extensionMap(m.pointer()).Has(xt)\n\t}\n}\nfunc (m *messageReflectWrapper) Clear(fd protoreflect.FieldDescriptor) {\n\tm.messageInfo().init()\n\tif fi, xt := m.messageInfo().checkField(fd); fi != nil {\n\t\tfi.clear(m.pointer())\n\t} else {\n\t\tm.messageInfo().extensionMap(m.pointer()).Clear(xt)\n\t}\n}\nfunc (m *messageReflectWrapper) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tm.messageInfo().init()\n\tif fi, xt := m.messageInfo().checkField(fd); fi != nil {\n\t\treturn fi.get(m.pointer())\n\t} else {\n\t\treturn m.messageInfo().extensionMap(m.pointer()).Get(xt)\n\t}\n}\nfunc (m *messageReflectWrapper) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {\n\tm.messageInfo().init()\n\tif fi, xt := m.messageInfo().checkField(fd); fi != nil {\n\t\tfi.set(m.pointer(), v)\n\t} else {\n\t\tm.messageInfo().extensionMap(m.pointer()).Set(xt, v)\n\t}\n}\nfunc (m *messageReflectWrapper) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tm.messageInfo().init()\n\tif fi, xt := m.messageInfo().checkField(fd); fi != nil {\n\t\treturn fi.mutable(m.pointer())\n\t} else {\n\t\treturn m.messageInfo().extensionMap(m.pointer()).Mutable(xt)\n\t}\n}\nfunc (m *messageReflectWrapper) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tm.messageInfo().init()\n\tif fi, xt := m.messageInfo().checkField(fd); fi != nil {\n\t\treturn fi.newField()\n\t} else {\n\t\treturn xt.New()\n\t}\n}\nfunc (m *messageReflectWrapper) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tm.messageInfo().init()\n\tif oi := m.messageInfo().oneofs[od.Name()]; oi != nil && oi.oneofDesc == od {\n\t\treturn od.Fields().ByNumber(oi.which(m.pointer()))\n\t}\n\tpanic(\"invalid oneof descriptor \" + string(od.FullName()) + \" for message \" + string(m.Descriptor().FullName()))\n}\nfunc (m *messageReflectWrapper) GetUnknown() protoreflect.RawFields {\n\tm.messageInfo().init()\n\treturn m.messageInfo().getUnknown(m.pointer())\n}\nfunc (m *messageReflectWrapper) SetUnknown(b protoreflect.RawFields) {\n\tm.messageInfo().init()\n\tm.messageInfo().setUnknown(m.pointer(), b)\n}\nfunc (m *messageReflectWrapper) IsValid() bool {\n\treturn !m.pointer().IsNil()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build purego || appengine\n// +build purego appengine\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"sync\"\n)\n\nconst UnsafeEnabled = false\n\n// Pointer is an opaque pointer type.\ntype Pointer interface{}\n\n// offset represents the offset to a struct field, accessible from a pointer.\n// The offset is the field index into a struct.\ntype offset struct {\n\tindex  int\n\texport exporter\n}\n\n// offsetOf returns a field offset for the struct field.\nfunc offsetOf(f reflect.StructField, x exporter) offset {\n\tif len(f.Index) != 1 {\n\t\tpanic(\"embedded structs are not supported\")\n\t}\n\tif f.PkgPath == \"\" {\n\t\treturn offset{index: f.Index[0]} // field is already exported\n\t}\n\tif x == nil {\n\t\tpanic(\"exporter must be provided for unexported field\")\n\t}\n\treturn offset{index: f.Index[0], export: x}\n}\n\n// IsValid reports whether the offset is valid.\nfunc (f offset) IsValid() bool { return f.index >= 0 }\n\n// invalidOffset is an invalid field offset.\nvar invalidOffset = offset{index: -1}\n\n// zeroOffset is a noop when calling pointer.Apply.\nvar zeroOffset = offset{index: 0}\n\n// pointer is an abstract representation of a pointer to a struct or field.\ntype pointer struct{ v reflect.Value }\n\n// pointerOf returns p as a pointer.\nfunc pointerOf(p Pointer) pointer {\n\treturn pointerOfIface(p)\n}\n\n// pointerOfValue returns v as a pointer.\nfunc pointerOfValue(v reflect.Value) pointer {\n\treturn pointer{v: v}\n}\n\n// pointerOfIface returns the pointer portion of an interface.\nfunc pointerOfIface(v interface{}) pointer {\n\treturn pointer{v: reflect.ValueOf(v)}\n}\n\n// IsNil reports whether the pointer is nil.\nfunc (p pointer) IsNil() bool {\n\treturn p.v.IsNil()\n}\n\n// Apply adds an offset to the pointer to derive a new pointer\n// to a specified field. The current pointer must be pointing at a struct.\nfunc (p pointer) Apply(f offset) pointer {\n\tif f.export != nil {\n\t\tif v := reflect.ValueOf(f.export(p.v.Interface(), f.index)); v.IsValid() {\n\t\t\treturn pointer{v: v}\n\t\t}\n\t}\n\treturn pointer{v: p.v.Elem().Field(f.index).Addr()}\n}\n\n// AsValueOf treats p as a pointer to an object of type t and returns the value.\n// It is equivalent to reflect.ValueOf(p.AsIfaceOf(t))\nfunc (p pointer) AsValueOf(t reflect.Type) reflect.Value {\n\tif got := p.v.Type().Elem(); got != t {\n\t\tpanic(fmt.Sprintf(\"invalid type: got %v, want %v\", got, t))\n\t}\n\treturn p.v\n}\n\n// AsIfaceOf treats p as a pointer to an object of type t and returns the value.\n// It is equivalent to p.AsValueOf(t).Interface()\nfunc (p pointer) AsIfaceOf(t reflect.Type) interface{} {\n\treturn p.AsValueOf(t).Interface()\n}\n\nfunc (p pointer) Bool() *bool              { return p.v.Interface().(*bool) }\nfunc (p pointer) BoolPtr() **bool          { return p.v.Interface().(**bool) }\nfunc (p pointer) BoolSlice() *[]bool       { return p.v.Interface().(*[]bool) }\nfunc (p pointer) Int32() *int32            { return p.v.Interface().(*int32) }\nfunc (p pointer) Int32Ptr() **int32        { return p.v.Interface().(**int32) }\nfunc (p pointer) Int32Slice() *[]int32     { return p.v.Interface().(*[]int32) }\nfunc (p pointer) Int64() *int64            { return p.v.Interface().(*int64) }\nfunc (p pointer) Int64Ptr() **int64        { return p.v.Interface().(**int64) }\nfunc (p pointer) Int64Slice() *[]int64     { return p.v.Interface().(*[]int64) }\nfunc (p pointer) Uint32() *uint32          { return p.v.Interface().(*uint32) }\nfunc (p pointer) Uint32Ptr() **uint32      { return p.v.Interface().(**uint32) }\nfunc (p pointer) Uint32Slice() *[]uint32   { return p.v.Interface().(*[]uint32) }\nfunc (p pointer) Uint64() *uint64          { return p.v.Interface().(*uint64) }\nfunc (p pointer) Uint64Ptr() **uint64      { return p.v.Interface().(**uint64) }\nfunc (p pointer) Uint64Slice() *[]uint64   { return p.v.Interface().(*[]uint64) }\nfunc (p pointer) Float32() *float32        { return p.v.Interface().(*float32) }\nfunc (p pointer) Float32Ptr() **float32    { return p.v.Interface().(**float32) }\nfunc (p pointer) Float32Slice() *[]float32 { return p.v.Interface().(*[]float32) }\nfunc (p pointer) Float64() *float64        { return p.v.Interface().(*float64) }\nfunc (p pointer) Float64Ptr() **float64    { return p.v.Interface().(**float64) }\nfunc (p pointer) Float64Slice() *[]float64 { return p.v.Interface().(*[]float64) }\nfunc (p pointer) String() *string          { return p.v.Interface().(*string) }\nfunc (p pointer) StringPtr() **string      { return p.v.Interface().(**string) }\nfunc (p pointer) StringSlice() *[]string   { return p.v.Interface().(*[]string) }\nfunc (p pointer) Bytes() *[]byte           { return p.v.Interface().(*[]byte) }\nfunc (p pointer) BytesPtr() **[]byte       { return p.v.Interface().(**[]byte) }\nfunc (p pointer) BytesSlice() *[][]byte    { return p.v.Interface().(*[][]byte) }\nfunc (p pointer) WeakFields() *weakFields  { return (*weakFields)(p.v.Interface().(*WeakFields)) }\nfunc (p pointer) Extensions() *map[int32]ExtensionField {\n\treturn p.v.Interface().(*map[int32]ExtensionField)\n}\n\nfunc (p pointer) Elem() pointer {\n\treturn pointer{v: p.v.Elem()}\n}\n\n// PointerSlice copies []*T from p as a new []pointer.\n// This behavior differs from the implementation in pointer_unsafe.go.\nfunc (p pointer) PointerSlice() []pointer {\n\t// TODO: reconsider this\n\tif p.v.IsNil() {\n\t\treturn nil\n\t}\n\tn := p.v.Elem().Len()\n\ts := make([]pointer, n)\n\tfor i := 0; i < n; i++ {\n\t\ts[i] = pointer{v: p.v.Elem().Index(i)}\n\t}\n\treturn s\n}\n\n// AppendPointerSlice appends v to p, which must be a []*T.\nfunc (p pointer) AppendPointerSlice(v pointer) {\n\tsp := p.v.Elem()\n\tsp.Set(reflect.Append(sp, v.v))\n}\n\n// SetPointer sets *p to v.\nfunc (p pointer) SetPointer(v pointer) {\n\tp.v.Elem().Set(v.v)\n}\n\nfunc (Export) MessageStateOf(p Pointer) *messageState     { panic(\"not supported\") }\nfunc (ms *messageState) pointer() pointer                 { panic(\"not supported\") }\nfunc (ms *messageState) messageInfo() *MessageInfo        { panic(\"not supported\") }\nfunc (ms *messageState) LoadMessageInfo() *MessageInfo    { panic(\"not supported\") }\nfunc (ms *messageState) StoreMessageInfo(mi *MessageInfo) { panic(\"not supported\") }\n\ntype atomicNilMessage struct {\n\tonce sync.Once\n\tm    messageReflectWrapper\n}\n\nfunc (m *atomicNilMessage) Init(mi *MessageInfo) *messageReflectWrapper {\n\tm.once.Do(func() {\n\t\tm.m.p = pointerOfIface(reflect.Zero(mi.GoReflectType).Interface())\n\t\tm.m.mi = mi\n\t})\n\treturn &m.m\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !purego && !appengine\n// +build !purego,!appengine\n\npackage impl\n\nimport (\n\t\"reflect\"\n\t\"sync/atomic\"\n\t\"unsafe\"\n)\n\nconst UnsafeEnabled = true\n\n// Pointer is an opaque pointer type.\ntype Pointer unsafe.Pointer\n\n// offset represents the offset to a struct field, accessible from a pointer.\n// The offset is the byte offset to the field from the start of the struct.\ntype offset uintptr\n\n// offsetOf returns a field offset for the struct field.\nfunc offsetOf(f reflect.StructField, x exporter) offset {\n\treturn offset(f.Offset)\n}\n\n// IsValid reports whether the offset is valid.\nfunc (f offset) IsValid() bool { return f != invalidOffset }\n\n// invalidOffset is an invalid field offset.\nvar invalidOffset = ^offset(0)\n\n// zeroOffset is a noop when calling pointer.Apply.\nvar zeroOffset = offset(0)\n\n// pointer is a pointer to a message struct or field.\ntype pointer struct{ p unsafe.Pointer }\n\n// pointerOf returns p as a pointer.\nfunc pointerOf(p Pointer) pointer {\n\treturn pointer{p: unsafe.Pointer(p)}\n}\n\n// pointerOfValue returns v as a pointer.\nfunc pointerOfValue(v reflect.Value) pointer {\n\treturn pointer{p: unsafe.Pointer(v.Pointer())}\n}\n\n// pointerOfIface returns the pointer portion of an interface.\nfunc pointerOfIface(v interface{}) pointer {\n\ttype ifaceHeader struct {\n\t\tType unsafe.Pointer\n\t\tData unsafe.Pointer\n\t}\n\treturn pointer{p: (*ifaceHeader)(unsafe.Pointer(&v)).Data}\n}\n\n// IsNil reports whether the pointer is nil.\nfunc (p pointer) IsNil() bool {\n\treturn p.p == nil\n}\n\n// Apply adds an offset to the pointer to derive a new pointer\n// to a specified field. The pointer must be valid and pointing at a struct.\nfunc (p pointer) Apply(f offset) pointer {\n\tif p.IsNil() {\n\t\tpanic(\"invalid nil pointer\")\n\t}\n\treturn pointer{p: unsafe.Pointer(uintptr(p.p) + uintptr(f))}\n}\n\n// AsValueOf treats p as a pointer to an object of type t and returns the value.\n// It is equivalent to reflect.ValueOf(p.AsIfaceOf(t))\nfunc (p pointer) AsValueOf(t reflect.Type) reflect.Value {\n\treturn reflect.NewAt(t, p.p)\n}\n\n// AsIfaceOf treats p as a pointer to an object of type t and returns the value.\n// It is equivalent to p.AsValueOf(t).Interface()\nfunc (p pointer) AsIfaceOf(t reflect.Type) interface{} {\n\t// TODO: Use tricky unsafe magic to directly create ifaceHeader.\n\treturn p.AsValueOf(t).Interface()\n}\n\nfunc (p pointer) Bool() *bool                           { return (*bool)(p.p) }\nfunc (p pointer) BoolPtr() **bool                       { return (**bool)(p.p) }\nfunc (p pointer) BoolSlice() *[]bool                    { return (*[]bool)(p.p) }\nfunc (p pointer) Int32() *int32                         { return (*int32)(p.p) }\nfunc (p pointer) Int32Ptr() **int32                     { return (**int32)(p.p) }\nfunc (p pointer) Int32Slice() *[]int32                  { return (*[]int32)(p.p) }\nfunc (p pointer) Int64() *int64                         { return (*int64)(p.p) }\nfunc (p pointer) Int64Ptr() **int64                     { return (**int64)(p.p) }\nfunc (p pointer) Int64Slice() *[]int64                  { return (*[]int64)(p.p) }\nfunc (p pointer) Uint32() *uint32                       { return (*uint32)(p.p) }\nfunc (p pointer) Uint32Ptr() **uint32                   { return (**uint32)(p.p) }\nfunc (p pointer) Uint32Slice() *[]uint32                { return (*[]uint32)(p.p) }\nfunc (p pointer) Uint64() *uint64                       { return (*uint64)(p.p) }\nfunc (p pointer) Uint64Ptr() **uint64                   { return (**uint64)(p.p) }\nfunc (p pointer) Uint64Slice() *[]uint64                { return (*[]uint64)(p.p) }\nfunc (p pointer) Float32() *float32                     { return (*float32)(p.p) }\nfunc (p pointer) Float32Ptr() **float32                 { return (**float32)(p.p) }\nfunc (p pointer) Float32Slice() *[]float32              { return (*[]float32)(p.p) }\nfunc (p pointer) Float64() *float64                     { return (*float64)(p.p) }\nfunc (p pointer) Float64Ptr() **float64                 { return (**float64)(p.p) }\nfunc (p pointer) Float64Slice() *[]float64              { return (*[]float64)(p.p) }\nfunc (p pointer) String() *string                       { return (*string)(p.p) }\nfunc (p pointer) StringPtr() **string                   { return (**string)(p.p) }\nfunc (p pointer) StringSlice() *[]string                { return (*[]string)(p.p) }\nfunc (p pointer) Bytes() *[]byte                        { return (*[]byte)(p.p) }\nfunc (p pointer) BytesPtr() **[]byte                    { return (**[]byte)(p.p) }\nfunc (p pointer) BytesSlice() *[][]byte                 { return (*[][]byte)(p.p) }\nfunc (p pointer) WeakFields() *weakFields               { return (*weakFields)(p.p) }\nfunc (p pointer) Extensions() *map[int32]ExtensionField { return (*map[int32]ExtensionField)(p.p) }\n\nfunc (p pointer) Elem() pointer {\n\treturn pointer{p: *(*unsafe.Pointer)(p.p)}\n}\n\n// PointerSlice loads []*T from p as a []pointer.\n// The value returned is aliased with the original slice.\n// This behavior differs from the implementation in pointer_reflect.go.\nfunc (p pointer) PointerSlice() []pointer {\n\t// Super-tricky - p should point to a []*T where T is a\n\t// message type. We load it as []pointer.\n\treturn *(*[]pointer)(p.p)\n}\n\n// AppendPointerSlice appends v to p, which must be a []*T.\nfunc (p pointer) AppendPointerSlice(v pointer) {\n\t*(*[]pointer)(p.p) = append(*(*[]pointer)(p.p), v)\n}\n\n// SetPointer sets *p to v.\nfunc (p pointer) SetPointer(v pointer) {\n\t*(*unsafe.Pointer)(p.p) = (unsafe.Pointer)(v.p)\n}\n\n// Static check that MessageState does not exceed the size of a pointer.\nconst _ = uint(unsafe.Sizeof(unsafe.Pointer(nil)) - unsafe.Sizeof(MessageState{}))\n\nfunc (Export) MessageStateOf(p Pointer) *messageState {\n\t// Super-tricky - see documentation on MessageState.\n\treturn (*messageState)(unsafe.Pointer(p))\n}\nfunc (ms *messageState) pointer() pointer {\n\t// Super-tricky - see documentation on MessageState.\n\treturn pointer{p: unsafe.Pointer(ms)}\n}\nfunc (ms *messageState) messageInfo() *MessageInfo {\n\tmi := ms.LoadMessageInfo()\n\tif mi == nil {\n\t\tpanic(\"invalid nil message info; this suggests memory corruption due to a race or shallow copy on the message struct\")\n\t}\n\treturn mi\n}\nfunc (ms *messageState) LoadMessageInfo() *MessageInfo {\n\treturn (*MessageInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo))))\n}\nfunc (ms *messageState) StoreMessageInfo(mi *MessageInfo) {\n\tatomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo)), unsafe.Pointer(mi))\n}\n\ntype atomicNilMessage struct{ p unsafe.Pointer } // p is a *messageReflectWrapper\n\nfunc (m *atomicNilMessage) Init(mi *MessageInfo) *messageReflectWrapper {\n\tif p := atomic.LoadPointer(&m.p); p != nil {\n\t\treturn (*messageReflectWrapper)(p)\n\t}\n\tw := &messageReflectWrapper{mi: mi}\n\tatomic.CompareAndSwapPointer(&m.p, nil, (unsafe.Pointer)(w))\n\treturn (*messageReflectWrapper)(atomic.LoadPointer(&m.p))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/validate.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"math/bits\"\n\t\"reflect\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// ValidationStatus is the result of validating the wire-format encoding of a message.\ntype ValidationStatus int\n\nconst (\n\t// ValidationUnknown indicates that unmarshaling the message might succeed or fail.\n\t// The validator was unable to render a judgement.\n\t//\n\t// The only causes of this status are an aberrant message type appearing somewhere\n\t// in the message or a failure in the extension resolver.\n\tValidationUnknown ValidationStatus = iota + 1\n\n\t// ValidationInvalid indicates that unmarshaling the message will fail.\n\tValidationInvalid\n\n\t// ValidationValid indicates that unmarshaling the message will succeed.\n\tValidationValid\n)\n\nfunc (v ValidationStatus) String() string {\n\tswitch v {\n\tcase ValidationUnknown:\n\t\treturn \"ValidationUnknown\"\n\tcase ValidationInvalid:\n\t\treturn \"ValidationInvalid\"\n\tcase ValidationValid:\n\t\treturn \"ValidationValid\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"ValidationStatus(%d)\", int(v))\n\t}\n}\n\n// Validate determines whether the contents of the buffer are a valid wire encoding\n// of the message type.\n//\n// This function is exposed for testing.\nfunc Validate(mt protoreflect.MessageType, in protoiface.UnmarshalInput) (out protoiface.UnmarshalOutput, _ ValidationStatus) {\n\tmi, ok := mt.(*MessageInfo)\n\tif !ok {\n\t\treturn out, ValidationUnknown\n\t}\n\tif in.Resolver == nil {\n\t\tin.Resolver = protoregistry.GlobalTypes\n\t}\n\to, st := mi.validate(in.Buf, 0, unmarshalOptions{\n\t\tflags:    in.Flags,\n\t\tresolver: in.Resolver,\n\t})\n\tif o.initialized {\n\t\tout.Flags |= protoiface.UnmarshalInitialized\n\t}\n\treturn out, st\n}\n\ntype validationInfo struct {\n\tmi               *MessageInfo\n\ttyp              validationType\n\tkeyType, valType validationType\n\n\t// For non-required fields, requiredBit is 0.\n\t//\n\t// For required fields, requiredBit's nth bit is set, where n is a\n\t// unique index in the range [0, MessageInfo.numRequiredFields).\n\t//\n\t// If there are more than 64 required fields, requiredBit is 0.\n\trequiredBit uint64\n}\n\ntype validationType uint8\n\nconst (\n\tvalidationTypeOther validationType = iota\n\tvalidationTypeMessage\n\tvalidationTypeGroup\n\tvalidationTypeMap\n\tvalidationTypeRepeatedVarint\n\tvalidationTypeRepeatedFixed32\n\tvalidationTypeRepeatedFixed64\n\tvalidationTypeVarint\n\tvalidationTypeFixed32\n\tvalidationTypeFixed64\n\tvalidationTypeBytes\n\tvalidationTypeUTF8String\n\tvalidationTypeMessageSetItem\n)\n\nfunc newFieldValidationInfo(mi *MessageInfo, si structInfo, fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo {\n\tvar vi validationInfo\n\tswitch {\n\tcase fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.MessageKind:\n\t\t\tvi.typ = validationTypeMessage\n\t\t\tif ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok {\n\t\t\t\tvi.mi = getMessageInfo(ot.Field(0).Type)\n\t\t\t}\n\t\tcase protoreflect.GroupKind:\n\t\t\tvi.typ = validationTypeGroup\n\t\t\tif ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok {\n\t\t\t\tvi.mi = getMessageInfo(ot.Field(0).Type)\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.typ = validationTypeUTF8String\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tvi = newValidationInfo(fd, ft)\n\t}\n\tif fd.Cardinality() == protoreflect.Required {\n\t\t// Avoid overflow. The required field check is done with a 64-bit mask, with\n\t\t// any message containing more than 64 required fields always reported as\n\t\t// potentially uninitialized, so it is not important to get a precise count\n\t\t// of the required fields past 64.\n\t\tif mi.numRequiredFields < math.MaxUint8 {\n\t\t\tmi.numRequiredFields++\n\t\t\tvi.requiredBit = 1 << (mi.numRequiredFields - 1)\n\t\t}\n\t}\n\treturn vi\n}\n\nfunc newValidationInfo(fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo {\n\tvar vi validationInfo\n\tswitch {\n\tcase fd.IsList():\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.MessageKind:\n\t\t\tvi.typ = validationTypeMessage\n\t\t\tif ft.Kind() == reflect.Slice {\n\t\t\t\tvi.mi = getMessageInfo(ft.Elem())\n\t\t\t}\n\t\tcase protoreflect.GroupKind:\n\t\t\tvi.typ = validationTypeGroup\n\t\t\tif ft.Kind() == reflect.Slice {\n\t\t\t\tvi.mi = getMessageInfo(ft.Elem())\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tvi.typ = validationTypeBytes\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.typ = validationTypeUTF8String\n\t\t\t}\n\t\tdefault:\n\t\t\tswitch wireTypes[fd.Kind()] {\n\t\t\tcase protowire.VarintType:\n\t\t\t\tvi.typ = validationTypeRepeatedVarint\n\t\t\tcase protowire.Fixed32Type:\n\t\t\t\tvi.typ = validationTypeRepeatedFixed32\n\t\t\tcase protowire.Fixed64Type:\n\t\t\t\tvi.typ = validationTypeRepeatedFixed64\n\t\t\t}\n\t\t}\n\tcase fd.IsMap():\n\t\tvi.typ = validationTypeMap\n\t\tswitch fd.MapKey().Kind() {\n\t\tcase protoreflect.StringKind:\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.keyType = validationTypeUTF8String\n\t\t\t}\n\t\t}\n\t\tswitch fd.MapValue().Kind() {\n\t\tcase protoreflect.MessageKind:\n\t\t\tvi.valType = validationTypeMessage\n\t\t\tif ft.Kind() == reflect.Map {\n\t\t\t\tvi.mi = getMessageInfo(ft.Elem())\n\t\t\t}\n\t\tcase protoreflect.StringKind:\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.valType = validationTypeUTF8String\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tswitch fd.Kind() {\n\t\tcase protoreflect.MessageKind:\n\t\t\tvi.typ = validationTypeMessage\n\t\t\tif !fd.IsWeak() {\n\t\t\t\tvi.mi = getMessageInfo(ft)\n\t\t\t}\n\t\tcase protoreflect.GroupKind:\n\t\t\tvi.typ = validationTypeGroup\n\t\t\tvi.mi = getMessageInfo(ft)\n\t\tcase protoreflect.StringKind:\n\t\t\tvi.typ = validationTypeBytes\n\t\t\tif strs.EnforceUTF8(fd) {\n\t\t\t\tvi.typ = validationTypeUTF8String\n\t\t\t}\n\t\tdefault:\n\t\t\tswitch wireTypes[fd.Kind()] {\n\t\t\tcase protowire.VarintType:\n\t\t\t\tvi.typ = validationTypeVarint\n\t\t\tcase protowire.Fixed32Type:\n\t\t\t\tvi.typ = validationTypeFixed32\n\t\t\tcase protowire.Fixed64Type:\n\t\t\t\tvi.typ = validationTypeFixed64\n\t\t\tcase protowire.BytesType:\n\t\t\t\tvi.typ = validationTypeBytes\n\t\t\t}\n\t\t}\n\t}\n\treturn vi\n}\n\nfunc (mi *MessageInfo) validate(b []byte, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, result ValidationStatus) {\n\tmi.init()\n\ttype validationState struct {\n\t\ttyp              validationType\n\t\tkeyType, valType validationType\n\t\tendGroup         protowire.Number\n\t\tmi               *MessageInfo\n\t\ttail             []byte\n\t\trequiredMask     uint64\n\t}\n\n\t// Pre-allocate some slots to avoid repeated slice reallocation.\n\tstates := make([]validationState, 0, 16)\n\tstates = append(states, validationState{\n\t\ttyp: validationTypeMessage,\n\t\tmi:  mi,\n\t})\n\tif groupTag > 0 {\n\t\tstates[0].typ = validationTypeGroup\n\t\tstates[0].endGroup = groupTag\n\t}\n\tinitialized := true\n\tstart := len(b)\nState:\n\tfor len(states) > 0 {\n\t\tst := &states[len(states)-1]\n\t\tfor len(b) > 0 {\n\t\t\t// Parse the tag (field number and wire type).\n\t\t\tvar tag uint64\n\t\t\tif b[0] < 0x80 {\n\t\t\t\ttag = uint64(b[0])\n\t\t\t\tb = b[1:]\n\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\ttag = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\tb = b[2:]\n\t\t\t} else {\n\t\t\t\tvar n int\n\t\t\t\ttag, n = protowire.ConsumeVarint(b)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t}\n\t\t\t\tb = b[n:]\n\t\t\t}\n\t\t\tvar num protowire.Number\n\t\t\tif n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {\n\t\t\t\treturn out, ValidationInvalid\n\t\t\t} else {\n\t\t\t\tnum = protowire.Number(n)\n\t\t\t}\n\t\t\twtyp := protowire.Type(tag & 7)\n\n\t\t\tif wtyp == protowire.EndGroupType {\n\t\t\t\tif st.endGroup == num {\n\t\t\t\t\tgoto PopState\n\t\t\t\t}\n\t\t\t\treturn out, ValidationInvalid\n\t\t\t}\n\t\t\tvar vi validationInfo\n\t\t\tswitch {\n\t\t\tcase st.typ == validationTypeMap:\n\t\t\t\tswitch num {\n\t\t\t\tcase genid.MapEntry_Key_field_number:\n\t\t\t\t\tvi.typ = st.keyType\n\t\t\t\tcase genid.MapEntry_Value_field_number:\n\t\t\t\t\tvi.typ = st.valType\n\t\t\t\t\tvi.mi = st.mi\n\t\t\t\t\tvi.requiredBit = 1\n\t\t\t\t}\n\t\t\tcase flags.ProtoLegacy && st.mi.isMessageSet:\n\t\t\t\tswitch num {\n\t\t\t\tcase messageset.FieldItem:\n\t\t\t\t\tvi.typ = validationTypeMessageSetItem\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tvar f *coderFieldInfo\n\t\t\t\tif int(num) < len(st.mi.denseCoderFields) {\n\t\t\t\t\tf = st.mi.denseCoderFields[num]\n\t\t\t\t} else {\n\t\t\t\t\tf = st.mi.coderFields[num]\n\t\t\t\t}\n\t\t\t\tif f != nil {\n\t\t\t\t\tvi = f.validation\n\t\t\t\t\tif vi.typ == validationTypeMessage && vi.mi == nil {\n\t\t\t\t\t\t// Probable weak field.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// TODO: Consider storing the results of this lookup somewhere\n\t\t\t\t\t\t// rather than recomputing it on every validation.\n\t\t\t\t\t\tfd := st.mi.Desc.Fields().ByNumber(num)\n\t\t\t\t\t\tif fd == nil || !fd.IsWeak() {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmessageName := fd.Message().FullName()\n\t\t\t\t\t\tmessageType, err := protoregistry.GlobalTypes.FindMessageByName(messageName)\n\t\t\t\t\t\tswitch err {\n\t\t\t\t\t\tcase nil:\n\t\t\t\t\t\t\tvi.mi, _ = messageType.(*MessageInfo)\n\t\t\t\t\t\tcase protoregistry.NotFound:\n\t\t\t\t\t\t\tvi.typ = validationTypeBytes\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn out, ValidationUnknown\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// Possible extension field.\n\t\t\t\t//\n\t\t\t\t// TODO: We should return ValidationUnknown when:\n\t\t\t\t//   1. The resolver is not frozen. (More extensions may be added to it.)\n\t\t\t\t//   2. The resolver returns preg.NotFound.\n\t\t\t\t// In this case, a type added to the resolver in the future could cause\n\t\t\t\t// unmarshaling to begin failing. Supporting this requires some way to\n\t\t\t\t// determine if the resolver is frozen.\n\t\t\t\txt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), num)\n\t\t\t\tif err != nil && err != protoregistry.NotFound {\n\t\t\t\t\treturn out, ValidationUnknown\n\t\t\t\t}\n\t\t\t\tif err == nil {\n\t\t\t\t\tvi = getExtensionFieldInfo(xt).validation\n\t\t\t\t}\n\t\t\t}\n\t\t\tif vi.requiredBit != 0 {\n\t\t\t\t// Check that the field has a compatible wire type.\n\t\t\t\t// We only need to consider non-repeated field types,\n\t\t\t\t// since repeated fields (and maps) can never be required.\n\t\t\t\tok := false\n\t\t\t\tswitch vi.typ {\n\t\t\t\tcase validationTypeVarint:\n\t\t\t\t\tok = wtyp == protowire.VarintType\n\t\t\t\tcase validationTypeFixed32:\n\t\t\t\t\tok = wtyp == protowire.Fixed32Type\n\t\t\t\tcase validationTypeFixed64:\n\t\t\t\t\tok = wtyp == protowire.Fixed64Type\n\t\t\t\tcase validationTypeBytes, validationTypeUTF8String, validationTypeMessage:\n\t\t\t\t\tok = wtyp == protowire.BytesType\n\t\t\t\tcase validationTypeGroup:\n\t\t\t\t\tok = wtyp == protowire.StartGroupType\n\t\t\t\t}\n\t\t\t\tif ok {\n\t\t\t\t\tst.requiredMask |= vi.requiredBit\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tswitch wtyp {\n\t\t\tcase protowire.VarintType:\n\t\t\t\tif len(b) >= 10 {\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase b[0] < 0x80:\n\t\t\t\t\t\tb = b[1:]\n\t\t\t\t\tcase b[1] < 0x80:\n\t\t\t\t\t\tb = b[2:]\n\t\t\t\t\tcase b[2] < 0x80:\n\t\t\t\t\t\tb = b[3:]\n\t\t\t\t\tcase b[3] < 0x80:\n\t\t\t\t\t\tb = b[4:]\n\t\t\t\t\tcase b[4] < 0x80:\n\t\t\t\t\t\tb = b[5:]\n\t\t\t\t\tcase b[5] < 0x80:\n\t\t\t\t\t\tb = b[6:]\n\t\t\t\t\tcase b[6] < 0x80:\n\t\t\t\t\t\tb = b[7:]\n\t\t\t\t\tcase b[7] < 0x80:\n\t\t\t\t\t\tb = b[8:]\n\t\t\t\t\tcase b[8] < 0x80:\n\t\t\t\t\t\tb = b[9:]\n\t\t\t\t\tcase b[9] < 0x80 && b[9] < 2:\n\t\t\t\t\t\tb = b[10:]\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase len(b) > 0 && b[0] < 0x80:\n\t\t\t\t\t\tb = b[1:]\n\t\t\t\t\tcase len(b) > 1 && b[1] < 0x80:\n\t\t\t\t\t\tb = b[2:]\n\t\t\t\t\tcase len(b) > 2 && b[2] < 0x80:\n\t\t\t\t\t\tb = b[3:]\n\t\t\t\t\tcase len(b) > 3 && b[3] < 0x80:\n\t\t\t\t\t\tb = b[4:]\n\t\t\t\t\tcase len(b) > 4 && b[4] < 0x80:\n\t\t\t\t\t\tb = b[5:]\n\t\t\t\t\tcase len(b) > 5 && b[5] < 0x80:\n\t\t\t\t\t\tb = b[6:]\n\t\t\t\t\tcase len(b) > 6 && b[6] < 0x80:\n\t\t\t\t\t\tb = b[7:]\n\t\t\t\t\tcase len(b) > 7 && b[7] < 0x80:\n\t\t\t\t\t\tb = b[8:]\n\t\t\t\t\tcase len(b) > 8 && b[8] < 0x80:\n\t\t\t\t\t\tb = b[9:]\n\t\t\t\t\tcase len(b) > 9 && b[9] < 2:\n\t\t\t\t\t\tb = b[10:]\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue State\n\t\t\tcase protowire.BytesType:\n\t\t\t\tvar size uint64\n\t\t\t\tif len(b) >= 1 && b[0] < 0x80 {\n\t\t\t\t\tsize = uint64(b[0])\n\t\t\t\t\tb = b[1:]\n\t\t\t\t} else if len(b) >= 2 && b[1] < 128 {\n\t\t\t\t\tsize = uint64(b[0]&0x7f) + uint64(b[1])<<7\n\t\t\t\t\tb = b[2:]\n\t\t\t\t} else {\n\t\t\t\t\tvar n int\n\t\t\t\t\tsize, n = protowire.ConsumeVarint(b)\n\t\t\t\t\tif n < 0 {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t\tb = b[n:]\n\t\t\t\t}\n\t\t\t\tif size > uint64(len(b)) {\n\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t}\n\t\t\t\tv := b[:size]\n\t\t\t\tb = b[size:]\n\t\t\t\tswitch vi.typ {\n\t\t\t\tcase validationTypeMessage:\n\t\t\t\t\tif vi.mi == nil {\n\t\t\t\t\t\treturn out, ValidationUnknown\n\t\t\t\t\t}\n\t\t\t\t\tvi.mi.init()\n\t\t\t\t\tfallthrough\n\t\t\t\tcase validationTypeMap:\n\t\t\t\t\tif vi.mi != nil {\n\t\t\t\t\t\tvi.mi.init()\n\t\t\t\t\t}\n\t\t\t\t\tstates = append(states, validationState{\n\t\t\t\t\t\ttyp:     vi.typ,\n\t\t\t\t\t\tkeyType: vi.keyType,\n\t\t\t\t\t\tvalType: vi.valType,\n\t\t\t\t\t\tmi:      vi.mi,\n\t\t\t\t\t\ttail:    b,\n\t\t\t\t\t})\n\t\t\t\t\tb = v\n\t\t\t\t\tcontinue State\n\t\t\t\tcase validationTypeRepeatedVarint:\n\t\t\t\t\t// Packed field.\n\t\t\t\t\tfor len(v) > 0 {\n\t\t\t\t\t\t_, n := protowire.ConsumeVarint(v)\n\t\t\t\t\t\tif n < 0 {\n\t\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t\t}\n\t\t\t\t\t\tv = v[n:]\n\t\t\t\t\t}\n\t\t\t\tcase validationTypeRepeatedFixed32:\n\t\t\t\t\t// Packed field.\n\t\t\t\t\tif len(v)%4 != 0 {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\tcase validationTypeRepeatedFixed64:\n\t\t\t\t\t// Packed field.\n\t\t\t\t\tif len(v)%8 != 0 {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\tcase validationTypeUTF8String:\n\t\t\t\t\tif !utf8.Valid(v) {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase protowire.Fixed32Type:\n\t\t\t\tif len(b) < 4 {\n\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t}\n\t\t\t\tb = b[4:]\n\t\t\tcase protowire.Fixed64Type:\n\t\t\t\tif len(b) < 8 {\n\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t}\n\t\t\t\tb = b[8:]\n\t\t\tcase protowire.StartGroupType:\n\t\t\t\tswitch {\n\t\t\t\tcase vi.typ == validationTypeGroup:\n\t\t\t\t\tif vi.mi == nil {\n\t\t\t\t\t\treturn out, ValidationUnknown\n\t\t\t\t\t}\n\t\t\t\t\tvi.mi.init()\n\t\t\t\t\tstates = append(states, validationState{\n\t\t\t\t\t\ttyp:      validationTypeGroup,\n\t\t\t\t\t\tmi:       vi.mi,\n\t\t\t\t\t\tendGroup: num,\n\t\t\t\t\t})\n\t\t\t\t\tcontinue State\n\t\t\t\tcase flags.ProtoLegacy && vi.typ == validationTypeMessageSetItem:\n\t\t\t\t\ttypeid, v, n, err := messageset.ConsumeFieldValue(b, false)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t\txt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), typeid)\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase err == protoregistry.NotFound:\n\t\t\t\t\t\tb = b[n:]\n\t\t\t\t\tcase err != nil:\n\t\t\t\t\t\treturn out, ValidationUnknown\n\t\t\t\t\tdefault:\n\t\t\t\t\t\txvi := getExtensionFieldInfo(xt).validation\n\t\t\t\t\t\tif xvi.mi != nil {\n\t\t\t\t\t\t\txvi.mi.init()\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstates = append(states, validationState{\n\t\t\t\t\t\t\ttyp:  xvi.typ,\n\t\t\t\t\t\t\tmi:   xvi.mi,\n\t\t\t\t\t\t\ttail: b[n:],\n\t\t\t\t\t\t})\n\t\t\t\t\t\tb = v\n\t\t\t\t\t\tcontinue State\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tn := protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\t\t\tif n < 0 {\n\t\t\t\t\t\treturn out, ValidationInvalid\n\t\t\t\t\t}\n\t\t\t\t\tb = b[n:]\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn out, ValidationInvalid\n\t\t\t}\n\t\t}\n\t\tif st.endGroup != 0 {\n\t\t\treturn out, ValidationInvalid\n\t\t}\n\t\tif len(b) != 0 {\n\t\t\treturn out, ValidationInvalid\n\t\t}\n\t\tb = st.tail\n\tPopState:\n\t\tnumRequiredFields := 0\n\t\tswitch st.typ {\n\t\tcase validationTypeMessage, validationTypeGroup:\n\t\t\tnumRequiredFields = int(st.mi.numRequiredFields)\n\t\tcase validationTypeMap:\n\t\t\t// If this is a map field with a message value that contains\n\t\t\t// required fields, require that the value be present.\n\t\t\tif st.mi != nil && st.mi.numRequiredFields > 0 {\n\t\t\t\tnumRequiredFields = 1\n\t\t\t}\n\t\t}\n\t\t// If there are more than 64 required fields, this check will\n\t\t// always fail and we will report that the message is potentially\n\t\t// uninitialized.\n\t\tif numRequiredFields > 0 && bits.OnesCount64(st.requiredMask) != numRequiredFields {\n\t\t\tinitialized = false\n\t\t}\n\t\tstates = states[:len(states)-1]\n\t}\n\tout.n = start - len(b)\n\tif initialized {\n\t\tout.initialized = true\n\t}\n\treturn out, ValidationValid\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/impl/weak.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage impl\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\n// weakFields adds methods to the exported WeakFields type for internal use.\n//\n// The exported type is an alias to an unnamed type, so methods can't be\n// defined directly on it.\ntype weakFields WeakFields\n\nfunc (w weakFields) get(num protoreflect.FieldNumber) (protoreflect.ProtoMessage, bool) {\n\tm, ok := w[int32(num)]\n\treturn m, ok\n}\n\nfunc (w *weakFields) set(num protoreflect.FieldNumber, m protoreflect.ProtoMessage) {\n\tif *w == nil {\n\t\t*w = make(weakFields)\n\t}\n\t(*w)[int32(num)] = m\n}\n\nfunc (w *weakFields) clear(num protoreflect.FieldNumber) {\n\tdelete(*w, int32(num))\n}\n\nfunc (Export) HasWeak(w WeakFields, num protoreflect.FieldNumber) bool {\n\t_, ok := w[int32(num)]\n\treturn ok\n}\n\nfunc (Export) ClearWeak(w *WeakFields, num protoreflect.FieldNumber) {\n\tdelete(*w, int32(num))\n}\n\nfunc (Export) GetWeak(w WeakFields, num protoreflect.FieldNumber, name protoreflect.FullName) protoreflect.ProtoMessage {\n\tif m, ok := w[int32(num)]; ok {\n\t\treturn m\n\t}\n\tmt, _ := protoregistry.GlobalTypes.FindMessageByName(name)\n\tif mt == nil {\n\t\tpanic(fmt.Sprintf(\"message %v for weak field is not linked in\", name))\n\t}\n\treturn mt.Zero().Interface()\n}\n\nfunc (Export) SetWeak(w *WeakFields, num protoreflect.FieldNumber, name protoreflect.FullName, m protoreflect.ProtoMessage) {\n\tif m != nil {\n\t\tmt, _ := protoregistry.GlobalTypes.FindMessageByName(name)\n\t\tif mt == nil {\n\t\t\tpanic(fmt.Sprintf(\"message %v for weak field is not linked in\", name))\n\t\t}\n\t\tif mt != m.ProtoReflect().Type() {\n\t\t\tpanic(fmt.Sprintf(\"invalid message type for weak field: got %T, want %T\", m, mt.Zero().Interface()))\n\t\t}\n\t}\n\tif m == nil || !m.ProtoReflect().IsValid() {\n\t\tdelete(*w, int32(num))\n\t\treturn\n\t}\n\tif *w == nil {\n\t\t*w = make(weakFields)\n\t}\n\t(*w)[int32(num)] = m\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/order/order.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage order\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// FieldOrder specifies the ordering to visit message fields.\n// It is a function that reports whether x is ordered before y.\ntype FieldOrder func(x, y protoreflect.FieldDescriptor) bool\n\nvar (\n\t// AnyFieldOrder specifies no specific field ordering.\n\tAnyFieldOrder FieldOrder = nil\n\n\t// LegacyFieldOrder sorts fields in the same ordering as emitted by\n\t// wire serialization in the github.com/golang/protobuf implementation.\n\tLegacyFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool {\n\t\tox, oy := x.ContainingOneof(), y.ContainingOneof()\n\t\tinOneof := func(od protoreflect.OneofDescriptor) bool {\n\t\t\treturn od != nil && !od.IsSynthetic()\n\t\t}\n\n\t\t// Extension fields sort before non-extension fields.\n\t\tif x.IsExtension() != y.IsExtension() {\n\t\t\treturn x.IsExtension() && !y.IsExtension()\n\t\t}\n\t\t// Fields not within a oneof sort before those within a oneof.\n\t\tif inOneof(ox) != inOneof(oy) {\n\t\t\treturn !inOneof(ox) && inOneof(oy)\n\t\t}\n\t\t// Fields in disjoint oneof sets are sorted by declaration index.\n\t\tif inOneof(ox) && inOneof(oy) && ox != oy {\n\t\t\treturn ox.Index() < oy.Index()\n\t\t}\n\t\t// Fields sorted by field number.\n\t\treturn x.Number() < y.Number()\n\t}\n\n\t// NumberFieldOrder sorts fields by their field number.\n\tNumberFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool {\n\t\treturn x.Number() < y.Number()\n\t}\n\n\t// IndexNameFieldOrder sorts non-extension fields before extension fields.\n\t// Non-extensions are sorted according to their declaration index.\n\t// Extensions are sorted according to their full name.\n\tIndexNameFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool {\n\t\t// Non-extension fields sort before extension fields.\n\t\tif x.IsExtension() != y.IsExtension() {\n\t\t\treturn !x.IsExtension() && y.IsExtension()\n\t\t}\n\t\t// Extensions sorted by fullname.\n\t\tif x.IsExtension() && y.IsExtension() {\n\t\t\treturn x.FullName() < y.FullName()\n\t\t}\n\t\t// Non-extensions sorted by declaration index.\n\t\treturn x.Index() < y.Index()\n\t}\n)\n\n// KeyOrder specifies the ordering to visit map entries.\n// It is a function that reports whether x is ordered before y.\ntype KeyOrder func(x, y protoreflect.MapKey) bool\n\nvar (\n\t// AnyKeyOrder specifies no specific key ordering.\n\tAnyKeyOrder KeyOrder = nil\n\n\t// GenericKeyOrder sorts false before true, numeric keys in ascending order,\n\t// and strings in lexicographical ordering according to UTF-8 codepoints.\n\tGenericKeyOrder KeyOrder = func(x, y protoreflect.MapKey) bool {\n\t\tswitch x.Interface().(type) {\n\t\tcase bool:\n\t\t\treturn !x.Bool() && y.Bool()\n\t\tcase int32, int64:\n\t\t\treturn x.Int() < y.Int()\n\t\tcase uint32, uint64:\n\t\t\treturn x.Uint() < y.Uint()\n\t\tcase string:\n\t\t\treturn x.String() < y.String()\n\t\tdefault:\n\t\t\tpanic(\"invalid map key type\")\n\t\t}\n\t}\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/order/range.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package order provides ordered access to messages and maps.\npackage order\n\nimport (\n\t\"sort\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype messageField struct {\n\tfd protoreflect.FieldDescriptor\n\tv  protoreflect.Value\n}\n\nvar messageFieldPool = sync.Pool{\n\tNew: func() interface{} { return new([]messageField) },\n}\n\ntype (\n\t// FieldRnger is an interface for visiting all fields in a message.\n\t// The protoreflect.Message type implements this interface.\n\tFieldRanger interface{ Range(VisitField) }\n\t// VisitField is called every time a message field is visited.\n\tVisitField = func(protoreflect.FieldDescriptor, protoreflect.Value) bool\n)\n\n// RangeFields iterates over the fields of fs according to the specified order.\nfunc RangeFields(fs FieldRanger, less FieldOrder, fn VisitField) {\n\tif less == nil {\n\t\tfs.Range(fn)\n\t\treturn\n\t}\n\n\t// Obtain a pre-allocated scratch buffer.\n\tp := messageFieldPool.Get().(*[]messageField)\n\tfields := (*p)[:0]\n\tdefer func() {\n\t\tif cap(fields) < 1024 {\n\t\t\t*p = fields\n\t\t\tmessageFieldPool.Put(p)\n\t\t}\n\t}()\n\n\t// Collect all fields in the message and sort them.\n\tfs.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tfields = append(fields, messageField{fd, v})\n\t\treturn true\n\t})\n\tsort.Slice(fields, func(i, j int) bool {\n\t\treturn less(fields[i].fd, fields[j].fd)\n\t})\n\n\t// Visit the fields in the specified ordering.\n\tfor _, f := range fields {\n\t\tif !fn(f.fd, f.v) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\ntype mapEntry struct {\n\tk protoreflect.MapKey\n\tv protoreflect.Value\n}\n\nvar mapEntryPool = sync.Pool{\n\tNew: func() interface{} { return new([]mapEntry) },\n}\n\ntype (\n\t// EntryRanger is an interface for visiting all fields in a message.\n\t// The protoreflect.Map type implements this interface.\n\tEntryRanger interface{ Range(VisitEntry) }\n\t// VisitEntry is called every time a map entry is visited.\n\tVisitEntry = func(protoreflect.MapKey, protoreflect.Value) bool\n)\n\n// RangeEntries iterates over the entries of es according to the specified order.\nfunc RangeEntries(es EntryRanger, less KeyOrder, fn VisitEntry) {\n\tif less == nil {\n\t\tes.Range(fn)\n\t\treturn\n\t}\n\n\t// Obtain a pre-allocated scratch buffer.\n\tp := mapEntryPool.Get().(*[]mapEntry)\n\tentries := (*p)[:0]\n\tdefer func() {\n\t\tif cap(entries) < 1024 {\n\t\t\t*p = entries\n\t\t\tmapEntryPool.Put(p)\n\t\t}\n\t}()\n\n\t// Collect all entries in the map and sort them.\n\tes.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool {\n\t\tentries = append(entries, mapEntry{k, v})\n\t\treturn true\n\t})\n\tsort.Slice(entries, func(i, j int) bool {\n\t\treturn less(entries[i].k, entries[j].k)\n\t})\n\n\t// Visit the entries in the specified ordering.\n\tfor _, e := range entries {\n\t\tif !fn(e.k, e.v) {\n\t\t\treturn\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/pragma/pragma.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package pragma provides types that can be embedded into a struct to\n// statically enforce or prevent certain language properties.\npackage pragma\n\nimport \"sync\"\n\n// NoUnkeyedLiterals can be embedded in a struct to prevent unkeyed literals.\ntype NoUnkeyedLiterals struct{}\n\n// DoNotImplement can be embedded in an interface to prevent trivial\n// implementations of the interface.\n//\n// This is useful to prevent unauthorized implementations of an interface\n// so that it can be extended in the future for any protobuf language changes.\ntype DoNotImplement interface{ ProtoInternal(DoNotImplement) }\n\n// DoNotCompare can be embedded in a struct to prevent comparability.\ntype DoNotCompare [0]func()\n\n// DoNotCopy can be embedded in a struct to help prevent shallow copies.\n// This does not rely on a Go language feature, but rather a special case\n// within the vet checker.\n//\n// See https://golang.org/issues/8005.\ntype DoNotCopy [0]sync.Mutex\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/set/ints.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package set provides simple set data structures for uint64s.\npackage set\n\nimport \"math/bits\"\n\n// int64s represents a set of integers within the range of 0..63.\ntype int64s uint64\n\nfunc (bs *int64s) Len() int {\n\treturn bits.OnesCount64(uint64(*bs))\n}\nfunc (bs *int64s) Has(n uint64) bool {\n\treturn uint64(*bs)&(uint64(1)<<n) > 0\n}\nfunc (bs *int64s) Set(n uint64) {\n\t*(*uint64)(bs) |= uint64(1) << n\n}\nfunc (bs *int64s) Clear(n uint64) {\n\t*(*uint64)(bs) &^= uint64(1) << n\n}\n\n// Ints represents a set of integers within the range of 0..math.MaxUint64.\ntype Ints struct {\n\tlo int64s\n\thi map[uint64]struct{}\n}\n\nfunc (bs *Ints) Len() int {\n\treturn bs.lo.Len() + len(bs.hi)\n}\nfunc (bs *Ints) Has(n uint64) bool {\n\tif n < 64 {\n\t\treturn bs.lo.Has(n)\n\t}\n\t_, ok := bs.hi[n]\n\treturn ok\n}\nfunc (bs *Ints) Set(n uint64) {\n\tif n < 64 {\n\t\tbs.lo.Set(n)\n\t\treturn\n\t}\n\tif bs.hi == nil {\n\t\tbs.hi = make(map[uint64]struct{})\n\t}\n\tbs.hi[n] = struct{}{}\n}\nfunc (bs *Ints) Clear(n uint64) {\n\tif n < 64 {\n\t\tbs.lo.Clear(n)\n\t\treturn\n\t}\n\tdelete(bs.hi, n)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/strs/strings.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package strs provides string manipulation functionality specific to protobuf.\npackage strs\n\nimport (\n\t\"go/token\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// EnforceUTF8 reports whether to enforce strict UTF-8 validation.\nfunc EnforceUTF8(fd protoreflect.FieldDescriptor) bool {\n\tif flags.ProtoLegacy {\n\t\tif fd, ok := fd.(interface{ EnforceUTF8() bool }); ok {\n\t\t\treturn fd.EnforceUTF8()\n\t\t}\n\t}\n\treturn fd.Syntax() == protoreflect.Proto3\n}\n\n// GoCamelCase camel-cases a protobuf name for use as a Go identifier.\n//\n// If there is an interior underscore followed by a lower case letter,\n// drop the underscore and convert the letter to upper case.\nfunc GoCamelCase(s string) string {\n\t// Invariant: if the next letter is lower case, it must be converted\n\t// to upper case.\n\t// That is, we process a word at a time, where words are marked by _ or\n\t// upper case letter. Digits are treated as words.\n\tvar b []byte\n\tfor i := 0; i < len(s); i++ {\n\t\tc := s[i]\n\t\tswitch {\n\t\tcase c == '.' && i+1 < len(s) && isASCIILower(s[i+1]):\n\t\t\t// Skip over '.' in \".{{lowercase}}\".\n\t\tcase c == '.':\n\t\t\tb = append(b, '_') // convert '.' to '_'\n\t\tcase c == '_' && (i == 0 || s[i-1] == '.'):\n\t\t\t// Convert initial '_' to ensure we start with a capital letter.\n\t\t\t// Do the same for '_' after '.' to match historic behavior.\n\t\t\tb = append(b, 'X') // convert '_' to 'X'\n\t\tcase c == '_' && i+1 < len(s) && isASCIILower(s[i+1]):\n\t\t\t// Skip over '_' in \"_{{lowercase}}\".\n\t\tcase isASCIIDigit(c):\n\t\t\tb = append(b, c)\n\t\tdefault:\n\t\t\t// Assume we have a letter now - if not, it's a bogus identifier.\n\t\t\t// The next word is a sequence of characters that must start upper case.\n\t\t\tif isASCIILower(c) {\n\t\t\t\tc -= 'a' - 'A' // convert lowercase to uppercase\n\t\t\t}\n\t\t\tb = append(b, c)\n\n\t\t\t// Accept lower case sequence that follows.\n\t\t\tfor ; i+1 < len(s) && isASCIILower(s[i+1]); i++ {\n\t\t\t\tb = append(b, s[i+1])\n\t\t\t}\n\t\t}\n\t}\n\treturn string(b)\n}\n\n// GoSanitized converts a string to a valid Go identifier.\nfunc GoSanitized(s string) string {\n\t// Sanitize the input to the set of valid characters,\n\t// which must be '_' or be in the Unicode L or N categories.\n\ts = strings.Map(func(r rune) rune {\n\t\tif unicode.IsLetter(r) || unicode.IsDigit(r) {\n\t\t\treturn r\n\t\t}\n\t\treturn '_'\n\t}, s)\n\n\t// Prepend '_' in the event of a Go keyword conflict or if\n\t// the identifier is invalid (does not start in the Unicode L category).\n\tr, _ := utf8.DecodeRuneInString(s)\n\tif token.Lookup(s).IsKeyword() || !unicode.IsLetter(r) {\n\t\treturn \"_\" + s\n\t}\n\treturn s\n}\n\n// JSONCamelCase converts a snake_case identifier to a camelCase identifier,\n// according to the protobuf JSON specification.\nfunc JSONCamelCase(s string) string {\n\tvar b []byte\n\tvar wasUnderscore bool\n\tfor i := 0; i < len(s); i++ { // proto identifiers are always ASCII\n\t\tc := s[i]\n\t\tif c != '_' {\n\t\t\tif wasUnderscore && isASCIILower(c) {\n\t\t\t\tc -= 'a' - 'A' // convert to uppercase\n\t\t\t}\n\t\t\tb = append(b, c)\n\t\t}\n\t\twasUnderscore = c == '_'\n\t}\n\treturn string(b)\n}\n\n// JSONSnakeCase converts a camelCase identifier to a snake_case identifier,\n// according to the protobuf JSON specification.\nfunc JSONSnakeCase(s string) string {\n\tvar b []byte\n\tfor i := 0; i < len(s); i++ { // proto identifiers are always ASCII\n\t\tc := s[i]\n\t\tif isASCIIUpper(c) {\n\t\t\tb = append(b, '_')\n\t\t\tc += 'a' - 'A' // convert to lowercase\n\t\t}\n\t\tb = append(b, c)\n\t}\n\treturn string(b)\n}\n\n// MapEntryName derives the name of the map entry message given the field name.\n// See protoc v3.8.0: src/google/protobuf/descriptor.cc:254-276,6057\nfunc MapEntryName(s string) string {\n\tvar b []byte\n\tupperNext := true\n\tfor _, c := range s {\n\t\tswitch {\n\t\tcase c == '_':\n\t\t\tupperNext = true\n\t\tcase upperNext:\n\t\t\tb = append(b, byte(unicode.ToUpper(c)))\n\t\t\tupperNext = false\n\t\tdefault:\n\t\t\tb = append(b, byte(c))\n\t\t}\n\t}\n\tb = append(b, \"Entry\"...)\n\treturn string(b)\n}\n\n// EnumValueName derives the camel-cased enum value name.\n// See protoc v3.8.0: src/google/protobuf/descriptor.cc:297-313\nfunc EnumValueName(s string) string {\n\tvar b []byte\n\tupperNext := true\n\tfor _, c := range s {\n\t\tswitch {\n\t\tcase c == '_':\n\t\t\tupperNext = true\n\t\tcase upperNext:\n\t\t\tb = append(b, byte(unicode.ToUpper(c)))\n\t\t\tupperNext = false\n\t\tdefault:\n\t\t\tb = append(b, byte(unicode.ToLower(c)))\n\t\t\tupperNext = false\n\t\t}\n\t}\n\treturn string(b)\n}\n\n// TrimEnumPrefix trims the enum name prefix from an enum value name,\n// where the prefix is all lowercase without underscores.\n// See protoc v3.8.0: src/google/protobuf/descriptor.cc:330-375\nfunc TrimEnumPrefix(s, prefix string) string {\n\ts0 := s // original input\n\tfor len(s) > 0 && len(prefix) > 0 {\n\t\tif s[0] == '_' {\n\t\t\ts = s[1:]\n\t\t\tcontinue\n\t\t}\n\t\tif unicode.ToLower(rune(s[0])) != rune(prefix[0]) {\n\t\t\treturn s0 // no prefix match\n\t\t}\n\t\ts, prefix = s[1:], prefix[1:]\n\t}\n\tif len(prefix) > 0 {\n\t\treturn s0 // no prefix match\n\t}\n\ts = strings.TrimLeft(s, \"_\")\n\tif len(s) == 0 {\n\t\treturn s0 // avoid returning empty string\n\t}\n\treturn s\n}\n\nfunc isASCIILower(c byte) bool {\n\treturn 'a' <= c && c <= 'z'\n}\nfunc isASCIIUpper(c byte) bool {\n\treturn 'A' <= c && c <= 'Z'\n}\nfunc isASCIIDigit(c byte) bool {\n\treturn '0' <= c && c <= '9'\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/strs/strings_pure.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 || appengine\n// +build purego appengine\n\npackage strs\n\nimport pref \"google.golang.org/protobuf/reflect/protoreflect\"\n\nfunc UnsafeString(b []byte) string {\n\treturn string(b)\n}\n\nfunc UnsafeBytes(s string) []byte {\n\treturn []byte(s)\n}\n\ntype Builder struct{}\n\nfunc (*Builder) AppendFullName(prefix pref.FullName, name pref.Name) pref.FullName {\n\treturn prefix.Append(name)\n}\n\nfunc (*Builder) MakeString(b []byte) string {\n\treturn string(b)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !purego && !appengine\n// +build !purego,!appengine\n\npackage strs\n\nimport (\n\t\"unsafe\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\ntype (\n\tstringHeader struct {\n\t\tData unsafe.Pointer\n\t\tLen  int\n\t}\n\tsliceHeader struct {\n\t\tData unsafe.Pointer\n\t\tLen  int\n\t\tCap  int\n\t}\n)\n\n// UnsafeString returns an unsafe string reference of b.\n// The caller must treat the input slice as immutable.\n//\n// WARNING: Use carefully. The returned result must not leak to the end user\n// unless the input slice is provably immutable.\nfunc UnsafeString(b []byte) (s string) {\n\tsrc := (*sliceHeader)(unsafe.Pointer(&b))\n\tdst := (*stringHeader)(unsafe.Pointer(&s))\n\tdst.Data = src.Data\n\tdst.Len = src.Len\n\treturn s\n}\n\n// UnsafeBytes returns an unsafe bytes slice reference of s.\n// The caller must treat returned slice as immutable.\n//\n// WARNING: Use carefully. The returned result must not leak to the end user.\nfunc UnsafeBytes(s string) (b []byte) {\n\tsrc := (*stringHeader)(unsafe.Pointer(&s))\n\tdst := (*sliceHeader)(unsafe.Pointer(&b))\n\tdst.Data = src.Data\n\tdst.Len = src.Len\n\tdst.Cap = src.Len\n\treturn b\n}\n\n// Builder builds a set of strings with shared lifetime.\n// This differs from strings.Builder, which is for building a single string.\ntype Builder struct {\n\tbuf []byte\n}\n\n// AppendFullName is equivalent to protoreflect.FullName.Append,\n// but optimized for large batches where each name has a shared lifetime.\nfunc (sb *Builder) AppendFullName(prefix protoreflect.FullName, name protoreflect.Name) protoreflect.FullName {\n\tn := len(prefix) + len(\".\") + len(name)\n\tif len(prefix) == 0 {\n\t\tn -= len(\".\")\n\t}\n\tsb.grow(n)\n\tsb.buf = append(sb.buf, prefix...)\n\tsb.buf = append(sb.buf, '.')\n\tsb.buf = append(sb.buf, name...)\n\treturn protoreflect.FullName(sb.last(n))\n}\n\n// MakeString is equivalent to string(b), but optimized for large batches\n// with a shared lifetime.\nfunc (sb *Builder) MakeString(b []byte) string {\n\tsb.grow(len(b))\n\tsb.buf = append(sb.buf, b...)\n\treturn sb.last(len(b))\n}\n\nfunc (sb *Builder) grow(n int) {\n\tif cap(sb.buf)-len(sb.buf) >= n {\n\t\treturn\n\t}\n\n\t// Unlike strings.Builder, we do not need to copy over the contents\n\t// of the old buffer since our builder provides no API for\n\t// retrieving previously created strings.\n\tsb.buf = make([]byte, 0, 2*(cap(sb.buf)+n))\n}\n\nfunc (sb *Builder) last(n int) string {\n\treturn UnsafeString(sb.buf[len(sb.buf)-n:])\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/internal/version/version.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package version records versioning information about this module.\npackage version\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// These constants determine the current version of this module.\n//\n// For our release process, we enforce the following rules:\n//   - Tagged releases use a tag that is identical to String.\n//   - Tagged releases never reference a commit where the String\n//     contains \"devel\".\n//   - The set of all commits in this repository where String\n//     does not contain \"devel\" must have a unique String.\n//\n// Steps for tagging a new release:\n//\n//  1. Create a new CL.\n//\n//  2. Update Minor, Patch, and/or PreRelease as necessary.\n//     PreRelease must not contain the string \"devel\".\n//\n//  3. Since the last released minor version, have there been any changes to\n//     generator that relies on new functionality in the runtime?\n//     If yes, then increment RequiredGenerated.\n//\n//  4. Since the last released minor version, have there been any changes to\n//     the runtime that removes support for old .pb.go source code?\n//     If yes, then increment SupportMinimum.\n//\n//  5. Send out the CL for review and submit it.\n//     Note that the next CL in step 8 must be submitted after this CL\n//     without any other CLs in-between.\n//\n//  6. Tag a new version, where the tag is is the current String.\n//\n//  7. Write release notes for all notable changes\n//     between this release and the last release.\n//\n//  8. Create a new CL.\n//\n//  9. Update PreRelease to include the string \"devel\".\n//     For example: \"\" -> \"devel\" or \"rc.1\" -> \"rc.1.devel\"\n//\n//  10. Send out the CL for review and submit it.\nconst (\n\tMajor      = 1\n\tMinor      = 31\n\tPatch      = 0\n\tPreRelease = \"\"\n)\n\n// String formats the version string for this module in semver format.\n//\n// Examples:\n//\n//\tv1.20.1\n//\tv1.21.0-rc.1\nfunc String() string {\n\tv := fmt.Sprintf(\"v%d.%d.%d\", Major, Minor, Patch)\n\tif PreRelease != \"\" {\n\t\tv += \"-\" + PreRelease\n\n\t\t// TODO: Add metadata about the commit or build hash.\n\t\t// See https://golang.org/issue/29814\n\t\t// See https://golang.org/issue/33533\n\t\tvar metadata string\n\t\tif strings.Contains(PreRelease, \"devel\") && metadata != \"\" {\n\t\t\tv += \"+\" + metadata\n\t\t}\n\t}\n\treturn v\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/checkinit.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// CheckInitialized returns an error if any required fields in m are not set.\nfunc CheckInitialized(m Message) error {\n\t// Treat a nil message interface as an \"untyped\" empty message,\n\t// which we assume to have no required fields.\n\tif m == nil {\n\t\treturn nil\n\t}\n\n\treturn checkInitialized(m.ProtoReflect())\n}\n\n// CheckInitialized returns an error if any required fields in m are not set.\nfunc checkInitialized(m protoreflect.Message) error {\n\tif methods := protoMethods(m); methods != nil && methods.CheckInitialized != nil {\n\t\t_, err := methods.CheckInitialized(protoiface.CheckInitializedInput{\n\t\t\tMessage: m,\n\t\t})\n\t\treturn err\n\t}\n\treturn checkInitializedSlow(m)\n}\n\nfunc checkInitializedSlow(m protoreflect.Message) error {\n\tmd := m.Descriptor()\n\tfds := md.Fields()\n\tfor i, nums := 0, md.RequiredNumbers(); i < nums.Len(); i++ {\n\t\tfd := fds.ByNumber(nums.Get(i))\n\t\tif !m.Has(fd) {\n\t\t\treturn errors.RequiredNotSet(string(fd.FullName()))\n\t\t}\n\t}\n\tvar err error\n\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tswitch {\n\t\tcase fd.IsList():\n\t\t\tif fd.Message() == nil {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tfor i, list := 0, v.List(); i < list.Len() && err == nil; i++ {\n\t\t\t\terr = checkInitialized(list.Get(i).Message())\n\t\t\t}\n\t\tcase fd.IsMap():\n\t\t\tif fd.MapValue().Message() == nil {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tv.Map().Range(func(key protoreflect.MapKey, v protoreflect.Value) bool {\n\t\t\t\terr = checkInitialized(v.Message())\n\t\t\t\treturn err == nil\n\t\t\t})\n\t\tdefault:\n\t\t\tif fd.Message() == nil {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\terr = checkInitialized(v.Message())\n\t\t}\n\t\treturn err == nil\n\t})\n\treturn err\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/decode.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// UnmarshalOptions configures the unmarshaler.\n//\n// Example usage:\n//\n//\terr := UnmarshalOptions{DiscardUnknown: true}.Unmarshal(b, m)\ntype UnmarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// Merge merges the input into the destination message.\n\t// The default behavior is to always reset the message before unmarshaling,\n\t// unless Merge is specified.\n\tMerge bool\n\n\t// AllowPartial accepts input for messages that will result in missing\n\t// required fields. If AllowPartial is false (the default), Unmarshal will\n\t// return an error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// If DiscardUnknown is set, unknown fields are ignored.\n\tDiscardUnknown bool\n\n\t// Resolver is used for looking up types when unmarshaling extension fields.\n\t// If nil, this defaults to using protoregistry.GlobalTypes.\n\tResolver interface {\n\t\tFindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)\n\t\tFindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)\n\t}\n\n\t// RecursionLimit limits how deeply messages may be nested.\n\t// If zero, a default limit is applied.\n\tRecursionLimit int\n}\n\n// Unmarshal parses the wire-format message in b and places the result in m.\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc Unmarshal(b []byte, m Message) error {\n\t_, err := UnmarshalOptions{RecursionLimit: protowire.DefaultRecursionLimit}.unmarshal(b, m.ProtoReflect())\n\treturn err\n}\n\n// Unmarshal parses the wire-format message in b and places the result in m.\n// The provided message must be mutable (e.g., a non-nil pointer to a message).\nfunc (o UnmarshalOptions) Unmarshal(b []byte, m Message) error {\n\tif o.RecursionLimit == 0 {\n\t\to.RecursionLimit = protowire.DefaultRecursionLimit\n\t}\n\t_, err := o.unmarshal(b, m.ProtoReflect())\n\treturn err\n}\n\n// UnmarshalState parses a wire-format message and places the result in m.\n//\n// This method permits fine-grained control over the unmarshaler.\n// Most users should use Unmarshal instead.\nfunc (o UnmarshalOptions) UnmarshalState(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\tif o.RecursionLimit == 0 {\n\t\to.RecursionLimit = protowire.DefaultRecursionLimit\n\t}\n\treturn o.unmarshal(in.Buf, in.Message)\n}\n\n// unmarshal is a centralized function that all unmarshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for unmarshal that do not go through this.\nfunc (o UnmarshalOptions) unmarshal(b []byte, m protoreflect.Message) (out protoiface.UnmarshalOutput, err error) {\n\tif o.Resolver == nil {\n\t\to.Resolver = protoregistry.GlobalTypes\n\t}\n\tif !o.Merge {\n\t\tReset(m.Interface())\n\t}\n\tallowPartial := o.AllowPartial\n\to.Merge = true\n\to.AllowPartial = true\n\tmethods := protoMethods(m)\n\tif methods != nil && methods.Unmarshal != nil &&\n\t\t!(o.DiscardUnknown && methods.Flags&protoiface.SupportUnmarshalDiscardUnknown == 0) {\n\t\tin := protoiface.UnmarshalInput{\n\t\t\tMessage:  m,\n\t\t\tBuf:      b,\n\t\t\tResolver: o.Resolver,\n\t\t\tDepth:    o.RecursionLimit,\n\t\t}\n\t\tif o.DiscardUnknown {\n\t\t\tin.Flags |= protoiface.UnmarshalDiscardUnknown\n\t\t}\n\t\tout, err = methods.Unmarshal(in)\n\t} else {\n\t\to.RecursionLimit--\n\t\tif o.RecursionLimit < 0 {\n\t\t\treturn out, errors.New(\"exceeded max recursion depth\")\n\t\t}\n\t\terr = o.unmarshalMessageSlow(b, m)\n\t}\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tif allowPartial || (out.Flags&protoiface.UnmarshalInitialized != 0) {\n\t\treturn out, nil\n\t}\n\treturn out, checkInitialized(m)\n}\n\nfunc (o UnmarshalOptions) unmarshalMessage(b []byte, m protoreflect.Message) error {\n\t_, err := o.unmarshal(b, m)\n\treturn err\n}\n\nfunc (o UnmarshalOptions) unmarshalMessageSlow(b []byte, m protoreflect.Message) error {\n\tmd := m.Descriptor()\n\tif messageset.IsMessageSet(md) {\n\t\treturn o.unmarshalMessageSet(b, m)\n\t}\n\tfields := md.Fields()\n\tfor len(b) > 0 {\n\t\t// Parse the tag (field number and wire type).\n\t\tnum, wtyp, tagLen := protowire.ConsumeTag(b)\n\t\tif tagLen < 0 {\n\t\t\treturn errDecode\n\t\t}\n\t\tif num > protowire.MaxValidNumber {\n\t\t\treturn errDecode\n\t\t}\n\n\t\t// Find the field descriptor for this field number.\n\t\tfd := fields.ByNumber(num)\n\t\tif fd == nil && md.ExtensionRanges().Has(num) {\n\t\t\textType, err := o.Resolver.FindExtensionByNumber(md.FullName(), num)\n\t\t\tif err != nil && err != protoregistry.NotFound {\n\t\t\t\treturn errors.New(\"%v: unable to resolve extension %v: %v\", md.FullName(), num, err)\n\t\t\t}\n\t\t\tif extType != nil {\n\t\t\t\tfd = extType.TypeDescriptor()\n\t\t\t}\n\t\t}\n\t\tvar err error\n\t\tif fd == nil {\n\t\t\terr = errUnknown\n\t\t} else if flags.ProtoLegacy {\n\t\t\tif fd.IsWeak() && fd.Message().IsPlaceholder() {\n\t\t\t\terr = errUnknown // weak referent is not linked in\n\t\t\t}\n\t\t}\n\n\t\t// Parse the field value.\n\t\tvar valLen int\n\t\tswitch {\n\t\tcase err != nil:\n\t\tcase fd.IsList():\n\t\t\tvalLen, err = o.unmarshalList(b[tagLen:], wtyp, m.Mutable(fd).List(), fd)\n\t\tcase fd.IsMap():\n\t\t\tvalLen, err = o.unmarshalMap(b[tagLen:], wtyp, m.Mutable(fd).Map(), fd)\n\t\tdefault:\n\t\t\tvalLen, err = o.unmarshalSingular(b[tagLen:], wtyp, m, fd)\n\t\t}\n\t\tif err != nil {\n\t\t\tif err != errUnknown {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tvalLen = protowire.ConsumeFieldValue(num, wtyp, b[tagLen:])\n\t\t\tif valLen < 0 {\n\t\t\t\treturn errDecode\n\t\t\t}\n\t\t\tif !o.DiscardUnknown {\n\t\t\t\tm.SetUnknown(append(m.GetUnknown(), b[:tagLen+valLen]...))\n\t\t\t}\n\t\t}\n\t\tb = b[tagLen+valLen:]\n\t}\n\treturn nil\n}\n\nfunc (o UnmarshalOptions) unmarshalSingular(b []byte, wtyp protowire.Type, m protoreflect.Message, fd protoreflect.FieldDescriptor) (n int, err error) {\n\tv, n, err := o.unmarshalScalar(b, wtyp, fd)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tswitch fd.Kind() {\n\tcase protoreflect.GroupKind, protoreflect.MessageKind:\n\t\tm2 := m.Mutable(fd).Message()\n\t\tif err := o.unmarshalMessage(v.Bytes(), m2); err != nil {\n\t\t\treturn n, err\n\t\t}\n\tdefault:\n\t\t// Non-message scalars replace the previous value.\n\t\tm.Set(fd, v)\n\t}\n\treturn n, nil\n}\n\nfunc (o UnmarshalOptions) unmarshalMap(b []byte, wtyp protowire.Type, mapv protoreflect.Map, fd protoreflect.FieldDescriptor) (n int, err error) {\n\tif wtyp != protowire.BytesType {\n\t\treturn 0, errUnknown\n\t}\n\tb, n = protowire.ConsumeBytes(b)\n\tif n < 0 {\n\t\treturn 0, errDecode\n\t}\n\tvar (\n\t\tkeyField = fd.MapKey()\n\t\tvalField = fd.MapValue()\n\t\tkey      protoreflect.Value\n\t\tval      protoreflect.Value\n\t\thaveKey  bool\n\t\thaveVal  bool\n\t)\n\tswitch valField.Kind() {\n\tcase protoreflect.GroupKind, protoreflect.MessageKind:\n\t\tval = mapv.NewValue()\n\t}\n\t// Map entries are represented as a two-element message with fields\n\t// containing the key and value.\n\tfor len(b) > 0 {\n\t\tnum, wtyp, n := protowire.ConsumeTag(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tif num > protowire.MaxValidNumber {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tb = b[n:]\n\t\terr = errUnknown\n\t\tswitch num {\n\t\tcase genid.MapEntry_Key_field_number:\n\t\t\tkey, n, err = o.unmarshalScalar(b, wtyp, keyField)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\thaveKey = true\n\t\tcase genid.MapEntry_Value_field_number:\n\t\t\tvar v protoreflect.Value\n\t\t\tv, n, err = o.unmarshalScalar(b, wtyp, valField)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tswitch valField.Kind() {\n\t\t\tcase protoreflect.GroupKind, protoreflect.MessageKind:\n\t\t\t\tif err := o.unmarshalMessage(v.Bytes(), val.Message()); err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tval = v\n\t\t\t}\n\t\t\thaveVal = true\n\t\t}\n\t\tif err == errUnknown {\n\t\t\tn = protowire.ConsumeFieldValue(num, wtyp, b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t} else if err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tb = b[n:]\n\t}\n\t// Every map entry should have entries for key and value, but this is not strictly required.\n\tif !haveKey {\n\t\tkey = keyField.Default()\n\t}\n\tif !haveVal {\n\t\tswitch valField.Kind() {\n\t\tcase protoreflect.GroupKind, protoreflect.MessageKind:\n\t\tdefault:\n\t\t\tval = valField.Default()\n\t\t}\n\t}\n\tmapv.Set(key.MapKey(), val)\n\treturn n, nil\n}\n\n// errUnknown is used internally to indicate fields which should be added\n// to the unknown field set of a message. It is never returned from an exported\n// function.\nvar errUnknown = errors.New(\"BUG: internal error (unknown)\")\n\nvar errDecode = errors.New(\"cannot parse invalid wire-format data\")\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/decode_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage proto\n\nimport (\n\t\"math\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// unmarshalScalar decodes a value of the given kind.\n//\n// Message values are decoded into a []byte which aliases the input data.\nfunc (o UnmarshalOptions) unmarshalScalar(b []byte, wtyp protowire.Type, fd protoreflect.FieldDescriptor) (val protoreflect.Value, n int, err error) {\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfBool(protowire.DecodeBool(v)), n, nil\n\tcase protoreflect.EnumKind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), n, nil\n\tcase protoreflect.Int32Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt32(int32(v)), n, nil\n\tcase protoreflect.Sint32Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), n, nil\n\tcase protoreflect.Uint32Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfUint32(uint32(v)), n, nil\n\tcase protoreflect.Int64Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt64(int64(v)), n, nil\n\tcase protoreflect.Sint64Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), n, nil\n\tcase protoreflect.Uint64Kind:\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfUint64(v), n, nil\n\tcase protoreflect.Sfixed32Kind:\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt32(int32(v)), n, nil\n\tcase protoreflect.Fixed32Kind:\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfUint32(uint32(v)), n, nil\n\tcase protoreflect.FloatKind:\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), n, nil\n\tcase protoreflect.Sfixed64Kind:\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfInt64(int64(v)), n, nil\n\tcase protoreflect.Fixed64Kind:\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfUint64(v), n, nil\n\tcase protoreflect.DoubleKind:\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfFloat64(math.Float64frombits(v)), n, nil\n\tcase protoreflect.StringKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\tif strs.EnforceUTF8(fd) && !utf8.Valid(v) {\n\t\t\treturn protoreflect.Value{}, 0, errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\t\treturn protoreflect.ValueOfString(string(v)), n, nil\n\tcase protoreflect.BytesKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), n, nil\n\tcase protoreflect.MessageKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfBytes(v), n, nil\n\tcase protoreflect.GroupKind:\n\t\tif wtyp != protowire.StartGroupType {\n\t\t\treturn val, 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeGroup(fd.Number(), b)\n\t\tif n < 0 {\n\t\t\treturn val, 0, errDecode\n\t\t}\n\t\treturn protoreflect.ValueOfBytes(v), n, nil\n\tdefault:\n\t\treturn val, 0, errUnknown\n\t}\n}\n\nfunc (o UnmarshalOptions) unmarshalList(b []byte, wtyp protowire.Type, list protoreflect.List, fd protoreflect.FieldDescriptor) (n int, err error) {\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))\n\t\treturn n, nil\n\tcase protoreflect.EnumKind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))\n\t\treturn n, nil\n\tcase protoreflect.Int32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\treturn n, nil\n\tcase protoreflect.Sint32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))\n\t\treturn n, nil\n\tcase protoreflect.Uint32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\treturn n, nil\n\tcase protoreflect.Int64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\treturn n, nil\n\tcase protoreflect.Sint64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))\n\t\treturn n, nil\n\tcase protoreflect.Uint64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeVarint(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.VarintType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeVarint(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\treturn n, nil\n\tcase protoreflect.Sfixed32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed32(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt32(int32(v)))\n\t\treturn n, nil\n\tcase protoreflect.Fixed32Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed32(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfUint32(uint32(v)))\n\t\treturn n, nil\n\tcase protoreflect.FloatKind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed32(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed32Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed32(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))\n\t\treturn n, nil\n\tcase protoreflect.Sfixed64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed64(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfInt64(int64(v)))\n\t\treturn n, nil\n\tcase protoreflect.Fixed64Kind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed64(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfUint64(v))\n\t\treturn n, nil\n\tcase protoreflect.DoubleKind:\n\t\tif wtyp == protowire.BytesType {\n\t\t\tbuf, n := protowire.ConsumeBytes(b)\n\t\t\tif n < 0 {\n\t\t\t\treturn 0, errDecode\n\t\t\t}\n\t\t\tfor len(buf) > 0 {\n\t\t\t\tv, n := protowire.ConsumeFixed64(buf)\n\t\t\t\tif n < 0 {\n\t\t\t\t\treturn 0, errDecode\n\t\t\t\t}\n\t\t\t\tbuf = buf[n:]\n\t\t\t\tlist.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))\n\t\t\t}\n\t\t\treturn n, nil\n\t\t}\n\t\tif wtyp != protowire.Fixed64Type {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeFixed64(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))\n\t\treturn n, nil\n\tcase protoreflect.StringKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tif strs.EnforceUTF8(fd) && !utf8.Valid(v) {\n\t\t\treturn 0, errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfString(string(v)))\n\t\treturn n, nil\n\tcase protoreflect.BytesKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tlist.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...)))\n\t\treturn n, nil\n\tcase protoreflect.MessageKind:\n\t\tif wtyp != protowire.BytesType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeBytes(b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tm := list.NewElement()\n\t\tif err := o.unmarshalMessage(v, m.Message()); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tlist.Append(m)\n\t\treturn n, nil\n\tcase protoreflect.GroupKind:\n\t\tif wtyp != protowire.StartGroupType {\n\t\t\treturn 0, errUnknown\n\t\t}\n\t\tv, n := protowire.ConsumeGroup(fd.Number(), b)\n\t\tif n < 0 {\n\t\t\treturn 0, errDecode\n\t\t}\n\t\tm := list.NewElement()\n\t\tif err := o.unmarshalMessage(v, m.Message()); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tlist.Append(m)\n\t\treturn n, nil\n\tdefault:\n\t\treturn 0, errUnknown\n\t}\n}\n\n// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices.\nvar emptyBuf [0]byte\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/doc.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package proto provides functions operating on protocol buffer messages.\n//\n// For documentation on protocol buffers in general, see:\n// https://protobuf.dev.\n//\n// For a tutorial on using protocol buffers with Go, see:\n// https://protobuf.dev/getting-started/gotutorial.\n//\n// For a guide to generated Go protocol buffer code, see:\n// https://protobuf.dev/reference/go/go-generated.\n//\n// # Binary serialization\n//\n// This package contains functions to convert to and from the wire format,\n// an efficient binary serialization of protocol buffers.\n//\n// • Size reports the size of a message in the wire format.\n//\n// • Marshal converts a message to the wire format.\n// The MarshalOptions type provides more control over wire marshaling.\n//\n// • Unmarshal converts a message from the wire format.\n// The UnmarshalOptions type provides more control over wire unmarshaling.\n//\n// # Basic message operations\n//\n// • Clone makes a deep copy of a message.\n//\n// • Merge merges the content of a message into another.\n//\n// • Equal compares two messages. For more control over comparisons\n// and detailed reporting of differences, see package\n// \"google.golang.org/protobuf/testing/protocmp\".\n//\n// • Reset clears the content of a message.\n//\n// • CheckInitialized reports whether all required fields in a message are set.\n//\n// # Optional scalar constructors\n//\n// The API for some generated messages represents optional scalar fields\n// as pointers to a value. For example, an optional string field has the\n// Go type *string.\n//\n// • Bool, Int32, Int64, Uint32, Uint64, Float32, Float64, and String\n// take a value and return a pointer to a new instance of it,\n// to simplify construction of optional field values.\n//\n// Generated enum types usually have an Enum method which performs the\n// same operation.\n//\n// Optional scalar fields are only supported in proto2.\n//\n// # Extension accessors\n//\n// • HasExtension, GetExtension, SetExtension, and ClearExtension\n// access extension field values in a protocol buffer message.\n//\n// Extension fields are only supported in proto2.\n//\n// # Related packages\n//\n// • Package \"google.golang.org/protobuf/encoding/protojson\" converts messages to\n// and from JSON.\n//\n// • Package \"google.golang.org/protobuf/encoding/prototext\" converts messages to\n// and from the text format.\n//\n// • Package \"google.golang.org/protobuf/reflect/protoreflect\" provides a\n// reflection interface for protocol buffer data types.\n//\n// • Package \"google.golang.org/protobuf/testing/protocmp\" provides features\n// to compare protocol buffer messages with the \"github.com/google/go-cmp/cmp\"\n// package.\n//\n// • Package \"google.golang.org/protobuf/types/dynamicpb\" provides a dynamic\n// message type, suitable for working with messages where the protocol buffer\n// type is only known at runtime.\n//\n// This module contains additional packages for more specialized use cases.\n// Consult the individual package documentation for details.\npackage proto\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/encode.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// MarshalOptions configures the marshaler.\n//\n// Example usage:\n//\n//\tb, err := MarshalOptions{Deterministic: true}.Marshal(m)\ntype MarshalOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// AllowPartial allows messages that have missing required fields to marshal\n\t// without returning an error. If AllowPartial is false (the default),\n\t// Marshal will return an error if there are any missing required fields.\n\tAllowPartial bool\n\n\t// Deterministic controls whether the same message will always be\n\t// serialized to the same bytes within the same binary.\n\t//\n\t// Setting this option guarantees that repeated serialization of\n\t// the same message will return the same bytes, and that different\n\t// processes of the same binary (which may be executing on different\n\t// machines) will serialize equal messages to the same bytes.\n\t// It has no effect on the resulting size of the encoded message compared\n\t// to a non-deterministic marshal.\n\t//\n\t// Note that the deterministic serialization is NOT canonical across\n\t// languages. It is not guaranteed to remain stable over time. It is\n\t// unstable across different builds with schema changes due to unknown\n\t// fields. Users who need canonical serialization (e.g., persistent\n\t// storage in a canonical form, fingerprinting, etc.) must define\n\t// their own canonicalization specification and implement their own\n\t// serializer rather than relying on this API.\n\t//\n\t// If deterministic serialization is requested, map entries will be\n\t// sorted by keys in lexographical order. This is an implementation\n\t// detail and subject to change.\n\tDeterministic bool\n\n\t// UseCachedSize indicates that the result of a previous Size call\n\t// may be reused.\n\t//\n\t// Setting this option asserts that:\n\t//\n\t// 1. Size has previously been called on this message with identical\n\t// options (except for UseCachedSize itself).\n\t//\n\t// 2. The message and all its submessages have not changed in any\n\t// way since the Size call.\n\t//\n\t// If either of these invariants is violated,\n\t// the results are undefined and may include panics or corrupted output.\n\t//\n\t// Implementations MAY take this option into account to provide\n\t// better performance, but there is no guarantee that they will do so.\n\t// There is absolutely no guarantee that Size followed by Marshal with\n\t// UseCachedSize set will perform equivalently to Marshal alone.\n\tUseCachedSize bool\n}\n\n// Marshal returns the wire-format encoding of m.\nfunc Marshal(m Message) ([]byte, error) {\n\t// Treat nil message interface as an empty message; nothing to output.\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\n\tout, err := MarshalOptions{}.marshal(nil, m.ProtoReflect())\n\tif len(out.Buf) == 0 && err == nil {\n\t\tout.Buf = emptyBytesForMessage(m)\n\t}\n\treturn out.Buf, err\n}\n\n// Marshal returns the wire-format encoding of m.\nfunc (o MarshalOptions) Marshal(m Message) ([]byte, error) {\n\t// Treat nil message interface as an empty message; nothing to output.\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\n\tout, err := o.marshal(nil, m.ProtoReflect())\n\tif len(out.Buf) == 0 && err == nil {\n\t\tout.Buf = emptyBytesForMessage(m)\n\t}\n\treturn out.Buf, err\n}\n\n// emptyBytesForMessage returns a nil buffer if and only if m is invalid,\n// otherwise it returns a non-nil empty buffer.\n//\n// This is to assist the edge-case where user-code does the following:\n//\n//\tm1.OptionalBytes, _ = proto.Marshal(m2)\n//\n// where they expect the proto2 \"optional_bytes\" field to be populated\n// if any only if m2 is a valid message.\nfunc emptyBytesForMessage(m Message) []byte {\n\tif m == nil || !m.ProtoReflect().IsValid() {\n\t\treturn nil\n\t}\n\treturn emptyBuf[:]\n}\n\n// MarshalAppend appends the wire-format encoding of m to b,\n// returning the result.\nfunc (o MarshalOptions) MarshalAppend(b []byte, m Message) ([]byte, error) {\n\t// Treat nil message interface as an empty message; nothing to append.\n\tif m == nil {\n\t\treturn b, nil\n\t}\n\n\tout, err := o.marshal(b, m.ProtoReflect())\n\treturn out.Buf, err\n}\n\n// MarshalState returns the wire-format encoding of a message.\n//\n// This method permits fine-grained control over the marshaler.\n// Most users should use Marshal instead.\nfunc (o MarshalOptions) MarshalState(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\treturn o.marshal(in.Buf, in.Message)\n}\n\n// marshal is a centralized function that all marshal operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for marshal that do not go through this.\nfunc (o MarshalOptions) marshal(b []byte, m protoreflect.Message) (out protoiface.MarshalOutput, err error) {\n\tallowPartial := o.AllowPartial\n\to.AllowPartial = true\n\tif methods := protoMethods(m); methods != nil && methods.Marshal != nil &&\n\t\t!(o.Deterministic && methods.Flags&protoiface.SupportMarshalDeterministic == 0) {\n\t\tin := protoiface.MarshalInput{\n\t\t\tMessage: m,\n\t\t\tBuf:     b,\n\t\t}\n\t\tif o.Deterministic {\n\t\t\tin.Flags |= protoiface.MarshalDeterministic\n\t\t}\n\t\tif o.UseCachedSize {\n\t\t\tin.Flags |= protoiface.MarshalUseCachedSize\n\t\t}\n\t\tif methods.Size != nil {\n\t\t\tsout := methods.Size(protoiface.SizeInput{\n\t\t\t\tMessage: m,\n\t\t\t\tFlags:   in.Flags,\n\t\t\t})\n\t\t\tif cap(b) < len(b)+sout.Size {\n\t\t\t\tin.Buf = make([]byte, len(b), growcap(cap(b), len(b)+sout.Size))\n\t\t\t\tcopy(in.Buf, b)\n\t\t\t}\n\t\t\tin.Flags |= protoiface.MarshalUseCachedSize\n\t\t}\n\t\tout, err = methods.Marshal(in)\n\t} else {\n\t\tout.Buf, err = o.marshalMessageSlow(b, m)\n\t}\n\tif err != nil {\n\t\treturn out, err\n\t}\n\tif allowPartial {\n\t\treturn out, nil\n\t}\n\treturn out, checkInitialized(m)\n}\n\nfunc (o MarshalOptions) marshalMessage(b []byte, m protoreflect.Message) ([]byte, error) {\n\tout, err := o.marshal(b, m)\n\treturn out.Buf, err\n}\n\n// growcap scales up the capacity of a slice.\n//\n// Given a slice with a current capacity of oldcap and a desired\n// capacity of wantcap, growcap returns a new capacity >= wantcap.\n//\n// The algorithm is mostly identical to the one used by append as of Go 1.14.\nfunc growcap(oldcap, wantcap int) (newcap int) {\n\tif wantcap > oldcap*2 {\n\t\tnewcap = wantcap\n\t} else if oldcap < 1024 {\n\t\t// The Go 1.14 runtime takes this case when len(s) < 1024,\n\t\t// not when cap(s) < 1024. The difference doesn't seem\n\t\t// significant here.\n\t\tnewcap = oldcap * 2\n\t} else {\n\t\tnewcap = oldcap\n\t\tfor 0 < newcap && newcap < wantcap {\n\t\t\tnewcap += newcap / 4\n\t\t}\n\t\tif newcap <= 0 {\n\t\t\tnewcap = wantcap\n\t\t}\n\t}\n\treturn newcap\n}\n\nfunc (o MarshalOptions) marshalMessageSlow(b []byte, m protoreflect.Message) ([]byte, error) {\n\tif messageset.IsMessageSet(m.Descriptor()) {\n\t\treturn o.marshalMessageSet(b, m)\n\t}\n\tfieldOrder := order.AnyFieldOrder\n\tif o.Deterministic {\n\t\t// TODO: This should use a more natural ordering like NumberFieldOrder,\n\t\t// but doing so breaks golden tests that make invalid assumption about\n\t\t// output stability of this implementation.\n\t\tfieldOrder = order.LegacyFieldOrder\n\t}\n\tvar err error\n\torder.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tb, err = o.marshalField(b, fd, v)\n\t\treturn err == nil\n\t})\n\tif err != nil {\n\t\treturn b, err\n\t}\n\tb = append(b, m.GetUnknown()...)\n\treturn b, nil\n}\n\nfunc (o MarshalOptions) marshalField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) {\n\tswitch {\n\tcase fd.IsList():\n\t\treturn o.marshalList(b, fd, value.List())\n\tcase fd.IsMap():\n\t\treturn o.marshalMap(b, fd, value.Map())\n\tdefault:\n\t\tb = protowire.AppendTag(b, fd.Number(), wireTypes[fd.Kind()])\n\t\treturn o.marshalSingular(b, fd, value)\n\t}\n}\n\nfunc (o MarshalOptions) marshalList(b []byte, fd protoreflect.FieldDescriptor, list protoreflect.List) ([]byte, error) {\n\tif fd.IsPacked() && list.Len() > 0 {\n\t\tb = protowire.AppendTag(b, fd.Number(), protowire.BytesType)\n\t\tb, pos := appendSpeculativeLength(b)\n\t\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\t\tvar err error\n\t\t\tb, err = o.marshalSingular(b, fd, list.Get(i))\n\t\t\tif err != nil {\n\t\t\t\treturn b, err\n\t\t\t}\n\t\t}\n\t\tb = finishSpeculativeLength(b, pos)\n\t\treturn b, nil\n\t}\n\n\tkind := fd.Kind()\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tvar err error\n\t\tb = protowire.AppendTag(b, fd.Number(), wireTypes[kind])\n\t\tb, err = o.marshalSingular(b, fd, list.Get(i))\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t}\n\treturn b, nil\n}\n\nfunc (o MarshalOptions) marshalMap(b []byte, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) ([]byte, error) {\n\tkeyf := fd.MapKey()\n\tvalf := fd.MapValue()\n\tkeyOrder := order.AnyKeyOrder\n\tif o.Deterministic {\n\t\tkeyOrder = order.GenericKeyOrder\n\t}\n\tvar err error\n\torder.RangeEntries(mapv, keyOrder, func(key protoreflect.MapKey, value protoreflect.Value) bool {\n\t\tb = protowire.AppendTag(b, fd.Number(), protowire.BytesType)\n\t\tvar pos int\n\t\tb, pos = appendSpeculativeLength(b)\n\n\t\tb, err = o.marshalField(b, keyf, key.Value())\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\tb, err = o.marshalField(b, valf, value)\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\tb = finishSpeculativeLength(b, pos)\n\t\treturn true\n\t})\n\treturn b, err\n}\n\n// When encoding length-prefixed fields, we speculatively set aside some number of bytes\n// for the length, encode the data, and then encode the length (shifting the data if necessary\n// to make room).\nconst speculativeLength = 1\n\nfunc appendSpeculativeLength(b []byte) ([]byte, int) {\n\tpos := len(b)\n\tb = append(b, \"\\x00\\x00\\x00\\x00\"[:speculativeLength]...)\n\treturn b, pos\n}\n\nfunc finishSpeculativeLength(b []byte, pos int) []byte {\n\tmlen := len(b) - pos - speculativeLength\n\tmsiz := protowire.SizeVarint(uint64(mlen))\n\tif msiz != speculativeLength {\n\t\tfor i := 0; i < msiz-speculativeLength; i++ {\n\t\t\tb = append(b, 0)\n\t\t}\n\t\tcopy(b[pos+msiz:], b[pos+speculativeLength:])\n\t\tb = b[:pos+msiz+mlen]\n\t}\n\tprotowire.AppendVarint(b[:pos], uint64(mlen))\n\treturn b\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/encode_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage proto\n\nimport (\n\t\"math\"\n\t\"unicode/utf8\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nvar wireTypes = map[protoreflect.Kind]protowire.Type{\n\tprotoreflect.BoolKind:     protowire.VarintType,\n\tprotoreflect.EnumKind:     protowire.VarintType,\n\tprotoreflect.Int32Kind:    protowire.VarintType,\n\tprotoreflect.Sint32Kind:   protowire.VarintType,\n\tprotoreflect.Uint32Kind:   protowire.VarintType,\n\tprotoreflect.Int64Kind:    protowire.VarintType,\n\tprotoreflect.Sint64Kind:   protowire.VarintType,\n\tprotoreflect.Uint64Kind:   protowire.VarintType,\n\tprotoreflect.Sfixed32Kind: protowire.Fixed32Type,\n\tprotoreflect.Fixed32Kind:  protowire.Fixed32Type,\n\tprotoreflect.FloatKind:    protowire.Fixed32Type,\n\tprotoreflect.Sfixed64Kind: protowire.Fixed64Type,\n\tprotoreflect.Fixed64Kind:  protowire.Fixed64Type,\n\tprotoreflect.DoubleKind:   protowire.Fixed64Type,\n\tprotoreflect.StringKind:   protowire.BytesType,\n\tprotoreflect.BytesKind:    protowire.BytesType,\n\tprotoreflect.MessageKind:  protowire.BytesType,\n\tprotoreflect.GroupKind:    protowire.StartGroupType,\n}\n\nfunc (o MarshalOptions) marshalSingular(b []byte, fd protoreflect.FieldDescriptor, v protoreflect.Value) ([]byte, error) {\n\tswitch fd.Kind() {\n\tcase protoreflect.BoolKind:\n\t\tb = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))\n\tcase protoreflect.EnumKind:\n\t\tb = protowire.AppendVarint(b, uint64(v.Enum()))\n\tcase protoreflect.Int32Kind:\n\t\tb = protowire.AppendVarint(b, uint64(int32(v.Int())))\n\tcase protoreflect.Sint32Kind:\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))\n\tcase protoreflect.Uint32Kind:\n\t\tb = protowire.AppendVarint(b, uint64(uint32(v.Uint())))\n\tcase protoreflect.Int64Kind:\n\t\tb = protowire.AppendVarint(b, uint64(v.Int()))\n\tcase protoreflect.Sint64Kind:\n\t\tb = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))\n\tcase protoreflect.Uint64Kind:\n\t\tb = protowire.AppendVarint(b, v.Uint())\n\tcase protoreflect.Sfixed32Kind:\n\t\tb = protowire.AppendFixed32(b, uint32(v.Int()))\n\tcase protoreflect.Fixed32Kind:\n\t\tb = protowire.AppendFixed32(b, uint32(v.Uint()))\n\tcase protoreflect.FloatKind:\n\t\tb = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))\n\tcase protoreflect.Sfixed64Kind:\n\t\tb = protowire.AppendFixed64(b, uint64(v.Int()))\n\tcase protoreflect.Fixed64Kind:\n\t\tb = protowire.AppendFixed64(b, v.Uint())\n\tcase protoreflect.DoubleKind:\n\t\tb = protowire.AppendFixed64(b, math.Float64bits(v.Float()))\n\tcase protoreflect.StringKind:\n\t\tif strs.EnforceUTF8(fd) && !utf8.ValidString(v.String()) {\n\t\t\treturn b, errors.InvalidUTF8(string(fd.FullName()))\n\t\t}\n\t\tb = protowire.AppendString(b, v.String())\n\tcase protoreflect.BytesKind:\n\t\tb = protowire.AppendBytes(b, v.Bytes())\n\tcase protoreflect.MessageKind:\n\t\tvar pos int\n\t\tvar err error\n\t\tb, pos = appendSpeculativeLength(b)\n\t\tb, err = o.marshalMessage(b, v.Message())\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = finishSpeculativeLength(b, pos)\n\tcase protoreflect.GroupKind:\n\t\tvar err error\n\t\tb, err = o.marshalMessage(b, v.Message())\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb = protowire.AppendVarint(b, protowire.EncodeTag(fd.Number(), protowire.EndGroupType))\n\tdefault:\n\t\treturn b, errors.New(\"invalid kind %v\", fd.Kind())\n\t}\n\treturn b, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/equal.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Equal reports whether two messages are equal,\n// by recursively comparing the fields of the message.\n//\n//   - Bytes fields are equal if they contain identical bytes.\n//     Empty bytes (regardless of nil-ness) are considered equal.\n//\n//   - Floating-point fields are equal if they contain the same value.\n//     Unlike the == operator, a NaN is equal to another NaN.\n//\n//   - Other scalar fields are equal if they contain the same value.\n//\n//   - Message fields are equal if they have\n//     the same set of populated known and extension field values, and\n//     the same set of unknown fields values.\n//\n//   - Lists are equal if they are the same length and\n//     each corresponding element is equal.\n//\n//   - Maps are equal if they have the same set of keys and\n//     the corresponding value for each key is equal.\n//\n// An invalid message is not equal to a valid message.\n// An invalid message is only equal to another invalid message of the\n// same type. An invalid message often corresponds to a nil pointer\n// of the concrete message type. For example, (*pb.M)(nil) is not equal\n// to &pb.M{}.\n// If two valid messages marshal to the same bytes under deterministic\n// serialization, then Equal is guaranteed to report true.\nfunc Equal(x, y Message) bool {\n\tif x == nil || y == nil {\n\t\treturn x == nil && y == nil\n\t}\n\tif reflect.TypeOf(x).Kind() == reflect.Ptr && x == y {\n\t\t// Avoid an expensive comparison if both inputs are identical pointers.\n\t\treturn true\n\t}\n\tmx := x.ProtoReflect()\n\tmy := y.ProtoReflect()\n\tif mx.IsValid() != my.IsValid() {\n\t\treturn false\n\t}\n\tvx := protoreflect.ValueOfMessage(mx)\n\tvy := protoreflect.ValueOfMessage(my)\n\treturn vx.Equal(vy)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/extension.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// HasExtension reports whether an extension field is populated.\n// It returns false if m is invalid or if xt does not extend m.\nfunc HasExtension(m Message, xt protoreflect.ExtensionType) bool {\n\t// Treat nil message interface as an empty message; no populated fields.\n\tif m == nil {\n\t\treturn false\n\t}\n\n\t// As a special-case, we reports invalid or mismatching descriptors\n\t// as always not being populated (since they aren't).\n\tif xt == nil || m.ProtoReflect().Descriptor() != xt.TypeDescriptor().ContainingMessage() {\n\t\treturn false\n\t}\n\n\treturn m.ProtoReflect().Has(xt.TypeDescriptor())\n}\n\n// ClearExtension clears an extension field such that subsequent\n// HasExtension calls return false.\n// It panics if m is invalid or if xt does not extend m.\nfunc ClearExtension(m Message, xt protoreflect.ExtensionType) {\n\tm.ProtoReflect().Clear(xt.TypeDescriptor())\n}\n\n// GetExtension retrieves the value for an extension field.\n// If the field is unpopulated, it returns the default value for\n// scalars and an immutable, empty value for lists or messages.\n// It panics if xt does not extend m.\nfunc GetExtension(m Message, xt protoreflect.ExtensionType) interface{} {\n\t// Treat nil message interface as an empty message; return the default.\n\tif m == nil {\n\t\treturn xt.InterfaceOf(xt.Zero())\n\t}\n\n\treturn xt.InterfaceOf(m.ProtoReflect().Get(xt.TypeDescriptor()))\n}\n\n// SetExtension stores the value of an extension field.\n// It panics if m is invalid, xt does not extend m, or if type of v\n// is invalid for the specified extension field.\nfunc SetExtension(m Message, xt protoreflect.ExtensionType, v interface{}) {\n\txd := xt.TypeDescriptor()\n\tpv := xt.ValueOf(v)\n\n\t// Specially treat an invalid list, map, or message as clear.\n\tisValid := true\n\tswitch {\n\tcase xd.IsList():\n\t\tisValid = pv.List().IsValid()\n\tcase xd.IsMap():\n\t\tisValid = pv.Map().IsValid()\n\tcase xd.Message() != nil:\n\t\tisValid = pv.Message().IsValid()\n\t}\n\tif !isValid {\n\t\tm.ProtoReflect().Clear(xd)\n\t\treturn\n\t}\n\n\tm.ProtoReflect().Set(xd, pv)\n}\n\n// RangeExtensions iterates over every populated extension field in m in an\n// undefined order, calling f for each extension type and value encountered.\n// It returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current extension field.\nfunc RangeExtensions(m Message, f func(protoreflect.ExtensionType, interface{}) bool) {\n\t// Treat nil message interface as an empty message; nothing to range over.\n\tif m == nil {\n\t\treturn\n\t}\n\n\tm.ProtoReflect().Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tif fd.IsExtension() {\n\t\t\txt := fd.(protoreflect.ExtensionTypeDescriptor).Type()\n\t\t\tvi := xt.InterfaceOf(v)\n\t\t\treturn f(xt, vi)\n\t\t}\n\t\treturn true\n\t})\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/merge.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// Merge merges src into dst, which must be a message with the same descriptor.\n//\n// Populated scalar fields in src are copied to dst, while populated\n// singular messages in src are merged into dst by recursively calling Merge.\n// The elements of every list field in src is appended to the corresponded\n// list fields in dst. The entries of every map field in src is copied into\n// the corresponding map field in dst, possibly replacing existing entries.\n// The unknown fields of src are appended to the unknown fields of dst.\n//\n// It is semantically equivalent to unmarshaling the encoded form of src\n// into dst with the UnmarshalOptions.Merge option specified.\nfunc Merge(dst, src Message) {\n\t// TODO: Should nil src be treated as semantically equivalent to a\n\t// untyped, read-only, empty message? What about a nil dst?\n\n\tdstMsg, srcMsg := dst.ProtoReflect(), src.ProtoReflect()\n\tif dstMsg.Descriptor() != srcMsg.Descriptor() {\n\t\tif got, want := dstMsg.Descriptor().FullName(), srcMsg.Descriptor().FullName(); got != want {\n\t\t\tpanic(fmt.Sprintf(\"descriptor mismatch: %v != %v\", got, want))\n\t\t}\n\t\tpanic(\"descriptor mismatch\")\n\t}\n\tmergeOptions{}.mergeMessage(dstMsg, srcMsg)\n}\n\n// Clone returns a deep copy of m.\n// If the top-level message is invalid, it returns an invalid message as well.\nfunc Clone(m Message) Message {\n\t// NOTE: Most usages of Clone assume the following properties:\n\t//\tt := reflect.TypeOf(m)\n\t//\tt == reflect.TypeOf(m.ProtoReflect().New().Interface())\n\t//\tt == reflect.TypeOf(m.ProtoReflect().Type().Zero().Interface())\n\t//\n\t// Embedding protobuf messages breaks this since the parent type will have\n\t// a forwarded ProtoReflect method, but the Interface method will return\n\t// the underlying embedded message type.\n\tif m == nil {\n\t\treturn nil\n\t}\n\tsrc := m.ProtoReflect()\n\tif !src.IsValid() {\n\t\treturn src.Type().Zero().Interface()\n\t}\n\tdst := src.New()\n\tmergeOptions{}.mergeMessage(dst, src)\n\treturn dst.Interface()\n}\n\n// mergeOptions provides a namespace for merge functions, and can be\n// exported in the future if we add user-visible merge options.\ntype mergeOptions struct{}\n\nfunc (o mergeOptions) mergeMessage(dst, src protoreflect.Message) {\n\tmethods := protoMethods(dst)\n\tif methods != nil && methods.Merge != nil {\n\t\tin := protoiface.MergeInput{\n\t\t\tDestination: dst,\n\t\t\tSource:      src,\n\t\t}\n\t\tout := methods.Merge(in)\n\t\tif out.Flags&protoiface.MergeComplete != 0 {\n\t\t\treturn\n\t\t}\n\t}\n\n\tif !dst.IsValid() {\n\t\tpanic(fmt.Sprintf(\"cannot merge into invalid %v message\", dst.Descriptor().FullName()))\n\t}\n\n\tsrc.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tswitch {\n\t\tcase fd.IsList():\n\t\t\to.mergeList(dst.Mutable(fd).List(), v.List(), fd)\n\t\tcase fd.IsMap():\n\t\t\to.mergeMap(dst.Mutable(fd).Map(), v.Map(), fd.MapValue())\n\t\tcase fd.Message() != nil:\n\t\t\to.mergeMessage(dst.Mutable(fd).Message(), v.Message())\n\t\tcase fd.Kind() == protoreflect.BytesKind:\n\t\t\tdst.Set(fd, o.cloneBytes(v))\n\t\tdefault:\n\t\t\tdst.Set(fd, v)\n\t\t}\n\t\treturn true\n\t})\n\n\tif len(src.GetUnknown()) > 0 {\n\t\tdst.SetUnknown(append(dst.GetUnknown(), src.GetUnknown()...))\n\t}\n}\n\nfunc (o mergeOptions) mergeList(dst, src protoreflect.List, fd protoreflect.FieldDescriptor) {\n\t// Merge semantics appends to the end of the existing list.\n\tfor i, n := 0, src.Len(); i < n; i++ {\n\t\tswitch v := src.Get(i); {\n\t\tcase fd.Message() != nil:\n\t\t\tdstv := dst.NewElement()\n\t\t\to.mergeMessage(dstv.Message(), v.Message())\n\t\t\tdst.Append(dstv)\n\t\tcase fd.Kind() == protoreflect.BytesKind:\n\t\t\tdst.Append(o.cloneBytes(v))\n\t\tdefault:\n\t\t\tdst.Append(v)\n\t\t}\n\t}\n}\n\nfunc (o mergeOptions) mergeMap(dst, src protoreflect.Map, fd protoreflect.FieldDescriptor) {\n\t// Merge semantics replaces, rather than merges into existing entries.\n\tsrc.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool {\n\t\tswitch {\n\t\tcase fd.Message() != nil:\n\t\t\tdstv := dst.NewValue()\n\t\t\to.mergeMessage(dstv.Message(), v.Message())\n\t\t\tdst.Set(k, dstv)\n\t\tcase fd.Kind() == protoreflect.BytesKind:\n\t\t\tdst.Set(k, o.cloneBytes(v))\n\t\tdefault:\n\t\t\tdst.Set(k, v)\n\t\t}\n\t\treturn true\n\t})\n}\n\nfunc (o mergeOptions) cloneBytes(v protoreflect.Value) protoreflect.Value {\n\treturn protoreflect.ValueOfBytes(append([]byte{}, v.Bytes()...))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/messageset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/order\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n)\n\nfunc (o MarshalOptions) sizeMessageSet(m protoreflect.Message) (size int) {\n\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tsize += messageset.SizeField(fd.Number())\n\t\tsize += protowire.SizeTag(messageset.FieldMessage)\n\t\tsize += protowire.SizeBytes(o.size(v.Message()))\n\t\treturn true\n\t})\n\tsize += messageset.SizeUnknown(m.GetUnknown())\n\treturn size\n}\n\nfunc (o MarshalOptions) marshalMessageSet(b []byte, m protoreflect.Message) ([]byte, error) {\n\tif !flags.ProtoLegacy {\n\t\treturn b, errors.New(\"no support for message_set_wire_format\")\n\t}\n\tfieldOrder := order.AnyFieldOrder\n\tif o.Deterministic {\n\t\tfieldOrder = order.NumberFieldOrder\n\t}\n\tvar err error\n\torder.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tb, err = o.marshalMessageSetField(b, fd, v)\n\t\treturn err == nil\n\t})\n\tif err != nil {\n\t\treturn b, err\n\t}\n\treturn messageset.AppendUnknown(b, m.GetUnknown())\n}\n\nfunc (o MarshalOptions) marshalMessageSetField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) {\n\tb = messageset.AppendFieldStart(b, fd.Number())\n\tb = protowire.AppendTag(b, messageset.FieldMessage, protowire.BytesType)\n\tb = protowire.AppendVarint(b, uint64(o.Size(value.Message().Interface())))\n\tb, err := o.marshalMessage(b, value.Message())\n\tif err != nil {\n\t\treturn b, err\n\t}\n\tb = messageset.AppendFieldEnd(b)\n\treturn b, nil\n}\n\nfunc (o UnmarshalOptions) unmarshalMessageSet(b []byte, m protoreflect.Message) error {\n\tif !flags.ProtoLegacy {\n\t\treturn errors.New(\"no support for message_set_wire_format\")\n\t}\n\treturn messageset.Unmarshal(b, false, func(num protowire.Number, v []byte) error {\n\t\terr := o.unmarshalMessageSetField(m, num, v)\n\t\tif err == errUnknown {\n\t\t\tunknown := m.GetUnknown()\n\t\t\tunknown = protowire.AppendTag(unknown, num, protowire.BytesType)\n\t\t\tunknown = protowire.AppendBytes(unknown, v)\n\t\t\tm.SetUnknown(unknown)\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t})\n}\n\nfunc (o UnmarshalOptions) unmarshalMessageSetField(m protoreflect.Message, num protowire.Number, v []byte) error {\n\tmd := m.Descriptor()\n\tif !md.ExtensionRanges().Has(num) {\n\t\treturn errUnknown\n\t}\n\txt, err := o.Resolver.FindExtensionByNumber(md.FullName(), num)\n\tif err == protoregistry.NotFound {\n\t\treturn errUnknown\n\t}\n\tif err != nil {\n\t\treturn errors.New(\"%v: unable to resolve extension %v: %v\", md.FullName(), num, err)\n\t}\n\txd := xt.TypeDescriptor()\n\tif err := o.unmarshalMessage(v, m.Mutable(xd).Message()); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/proto.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Message is the top-level interface that all messages must implement.\n// It provides access to a reflective view of a message.\n// Any implementation of this interface may be used with all functions in the\n// protobuf module that accept a Message, except where otherwise specified.\n//\n// This is the v2 interface definition for protobuf messages.\n// The v1 interface definition is \"github.com/golang/protobuf/proto\".Message.\n//\n// To convert a v1 message to a v2 message,\n// use \"github.com/golang/protobuf/proto\".MessageV2.\n// To convert a v2 message to a v1 message,\n// use \"github.com/golang/protobuf/proto\".MessageV1.\ntype Message = protoreflect.ProtoMessage\n\n// Error matches all errors produced by packages in the protobuf module.\n//\n// That is, errors.Is(err, Error) reports whether an error is produced\n// by this module.\nvar Error error\n\nfunc init() {\n\tError = errors.Error\n}\n\n// MessageName returns the full name of m.\n// If m is nil, it returns an empty string.\nfunc MessageName(m Message) protoreflect.FullName {\n\tif m == nil {\n\t\treturn \"\"\n\t}\n\treturn m.ProtoReflect().Descriptor().FullName()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/proto_methods.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// The protoreflect build tag disables use of fast-path methods.\n//go:build !protoreflect\n// +build !protoreflect\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nconst hasProtoMethods = true\n\nfunc protoMethods(m protoreflect.Message) *protoiface.Methods {\n\treturn m.ProtoMethods()\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/proto_reflect.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// The protoreflect build tag disables use of fast-path methods.\n//go:build protoreflect\n// +build protoreflect\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\nconst hasProtoMethods = false\n\nfunc protoMethods(m protoreflect.Message) *protoiface.Methods {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/reset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"fmt\"\n\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Reset clears every field in the message.\n// The resulting message shares no observable memory with its previous state\n// other than the memory for the message itself.\nfunc Reset(m Message) {\n\tif mr, ok := m.(interface{ Reset() }); ok && hasProtoMethods {\n\t\tmr.Reset()\n\t\treturn\n\t}\n\tresetMessage(m.ProtoReflect())\n}\n\nfunc resetMessage(m protoreflect.Message) {\n\tif !m.IsValid() {\n\t\tpanic(fmt.Sprintf(\"cannot reset invalid %v message\", m.Descriptor().FullName()))\n\t}\n\n\t// Clear all known fields.\n\tfds := m.Descriptor().Fields()\n\tfor i := 0; i < fds.Len(); i++ {\n\t\tm.Clear(fds.Get(i))\n\t}\n\n\t// Clear extension fields.\n\tm.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool {\n\t\tm.Clear(fd)\n\t\treturn true\n\t})\n\n\t// Clear unknown fields.\n\tm.SetUnknown(nil)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/size.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/runtime/protoiface\"\n)\n\n// Size returns the size in bytes of the wire-format encoding of m.\nfunc Size(m Message) int {\n\treturn MarshalOptions{}.Size(m)\n}\n\n// Size returns the size in bytes of the wire-format encoding of m.\nfunc (o MarshalOptions) Size(m Message) int {\n\t// Treat a nil message interface as an empty message; nothing to output.\n\tif m == nil {\n\t\treturn 0\n\t}\n\n\treturn o.size(m.ProtoReflect())\n}\n\n// size is a centralized function that all size operations go through.\n// For profiling purposes, avoid changing the name of this function or\n// introducing other code paths for size that do not go through this.\nfunc (o MarshalOptions) size(m protoreflect.Message) (size int) {\n\tmethods := protoMethods(m)\n\tif methods != nil && methods.Size != nil {\n\t\tout := methods.Size(protoiface.SizeInput{\n\t\t\tMessage: m,\n\t\t})\n\t\treturn out.Size\n\t}\n\tif methods != nil && methods.Marshal != nil {\n\t\t// This is not efficient, but we don't have any choice.\n\t\t// This case is mainly used for legacy types with a Marshal method.\n\t\tout, _ := methods.Marshal(protoiface.MarshalInput{\n\t\t\tMessage: m,\n\t\t})\n\t\treturn len(out.Buf)\n\t}\n\treturn o.sizeMessageSlow(m)\n}\n\nfunc (o MarshalOptions) sizeMessageSlow(m protoreflect.Message) (size int) {\n\tif messageset.IsMessageSet(m.Descriptor()) {\n\t\treturn o.sizeMessageSet(m)\n\t}\n\tm.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {\n\t\tsize += o.sizeField(fd, v)\n\t\treturn true\n\t})\n\tsize += len(m.GetUnknown())\n\treturn size\n}\n\nfunc (o MarshalOptions) sizeField(fd protoreflect.FieldDescriptor, value protoreflect.Value) (size int) {\n\tnum := fd.Number()\n\tswitch {\n\tcase fd.IsList():\n\t\treturn o.sizeList(num, fd, value.List())\n\tcase fd.IsMap():\n\t\treturn o.sizeMap(num, fd, value.Map())\n\tdefault:\n\t\treturn protowire.SizeTag(num) + o.sizeSingular(num, fd.Kind(), value)\n\t}\n}\n\nfunc (o MarshalOptions) sizeList(num protowire.Number, fd protoreflect.FieldDescriptor, list protoreflect.List) (size int) {\n\tsizeTag := protowire.SizeTag(num)\n\n\tif fd.IsPacked() && list.Len() > 0 {\n\t\tcontent := 0\n\t\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\t\tcontent += o.sizeSingular(num, fd.Kind(), list.Get(i))\n\t\t}\n\t\treturn sizeTag + protowire.SizeBytes(content)\n\t}\n\n\tfor i, llen := 0, list.Len(); i < llen; i++ {\n\t\tsize += sizeTag + o.sizeSingular(num, fd.Kind(), list.Get(i))\n\t}\n\treturn size\n}\n\nfunc (o MarshalOptions) sizeMap(num protowire.Number, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) (size int) {\n\tsizeTag := protowire.SizeTag(num)\n\n\tmapv.Range(func(key protoreflect.MapKey, value protoreflect.Value) bool {\n\t\tsize += sizeTag\n\t\tsize += protowire.SizeBytes(o.sizeField(fd.MapKey(), key.Value()) + o.sizeField(fd.MapValue(), value))\n\t\treturn true\n\t})\n\treturn size\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/size_gen.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-types. DO NOT EDIT.\n\npackage proto\n\nimport (\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\nfunc (o MarshalOptions) sizeSingular(num protowire.Number, kind protoreflect.Kind, v protoreflect.Value) int {\n\tswitch kind {\n\tcase protoreflect.BoolKind:\n\t\treturn protowire.SizeVarint(protowire.EncodeBool(v.Bool()))\n\tcase protoreflect.EnumKind:\n\t\treturn protowire.SizeVarint(uint64(v.Enum()))\n\tcase protoreflect.Int32Kind:\n\t\treturn protowire.SizeVarint(uint64(int32(v.Int())))\n\tcase protoreflect.Sint32Kind:\n\t\treturn protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))\n\tcase protoreflect.Uint32Kind:\n\t\treturn protowire.SizeVarint(uint64(uint32(v.Uint())))\n\tcase protoreflect.Int64Kind:\n\t\treturn protowire.SizeVarint(uint64(v.Int()))\n\tcase protoreflect.Sint64Kind:\n\t\treturn protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))\n\tcase protoreflect.Uint64Kind:\n\t\treturn protowire.SizeVarint(v.Uint())\n\tcase protoreflect.Sfixed32Kind:\n\t\treturn protowire.SizeFixed32()\n\tcase protoreflect.Fixed32Kind:\n\t\treturn protowire.SizeFixed32()\n\tcase protoreflect.FloatKind:\n\t\treturn protowire.SizeFixed32()\n\tcase protoreflect.Sfixed64Kind:\n\t\treturn protowire.SizeFixed64()\n\tcase protoreflect.Fixed64Kind:\n\t\treturn protowire.SizeFixed64()\n\tcase protoreflect.DoubleKind:\n\t\treturn protowire.SizeFixed64()\n\tcase protoreflect.StringKind:\n\t\treturn protowire.SizeBytes(len(v.String()))\n\tcase protoreflect.BytesKind:\n\t\treturn protowire.SizeBytes(len(v.Bytes()))\n\tcase protoreflect.MessageKind:\n\t\treturn protowire.SizeBytes(o.size(v.Message()))\n\tcase protoreflect.GroupKind:\n\t\treturn protowire.SizeGroup(num, o.size(v.Message()))\n\tdefault:\n\t\treturn 0\n\t}\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/proto/wrappers.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage proto\n\n// Bool stores v in a new bool value and returns a pointer to it.\nfunc Bool(v bool) *bool { return &v }\n\n// Int32 stores v in a new int32 value and returns a pointer to it.\nfunc Int32(v int32) *int32 { return &v }\n\n// Int64 stores v in a new int64 value and returns a pointer to it.\nfunc Int64(v int64) *int64 { return &v }\n\n// Float32 stores v in a new float32 value and returns a pointer to it.\nfunc Float32(v float32) *float32 { return &v }\n\n// Float64 stores v in a new float64 value and returns a pointer to it.\nfunc Float64(v float64) *float64 { return &v }\n\n// Uint32 stores v in a new uint32 value and returns a pointer to it.\nfunc Uint32(v uint32) *uint32 { return &v }\n\n// Uint64 stores v in a new uint64 value and returns a pointer to it.\nfunc Uint64(v uint64) *uint64 { return &v }\n\n// String stores v in a new string value and returns a pointer to it.\nfunc String(v string) *string { return &v }\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/desc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protodesc provides functionality for converting\n// FileDescriptorProto messages to/from protoreflect.FileDescriptor values.\n//\n// The google.protobuf.FileDescriptorProto is a protobuf message that describes\n// the type information for a .proto file in a form that is easily serializable.\n// The protoreflect.FileDescriptor is a more structured representation of\n// the FileDescriptorProto message where references and remote dependencies\n// can be directly followed.\npackage protodesc\n\nimport (\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\n// Resolver is the resolver used by NewFile to resolve dependencies.\n// The enums and messages provided must belong to some parent file,\n// which is also registered.\n//\n// It is implemented by protoregistry.Files.\ntype Resolver interface {\n\tFindFileByPath(string) (protoreflect.FileDescriptor, error)\n\tFindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error)\n}\n\n// FileOptions configures the construction of file descriptors.\ntype FileOptions struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// AllowUnresolvable configures New to permissively allow unresolvable\n\t// file, enum, or message dependencies. Unresolved dependencies are replaced\n\t// by placeholder equivalents.\n\t//\n\t// The following dependencies may be left unresolved:\n\t//\t• Resolving an imported file.\n\t//\t• Resolving the type for a message field or extension field.\n\t//\tIf the kind of the field is unknown, then a placeholder is used for both\n\t//\tthe Enum and Message accessors on the protoreflect.FieldDescriptor.\n\t//\t• Resolving an enum value set as the default for an optional enum field.\n\t//\tIf unresolvable, the protoreflect.FieldDescriptor.Default is set to the\n\t//\tfirst value in the associated enum (or zero if the also enum dependency\n\t//\tis also unresolvable). The protoreflect.FieldDescriptor.DefaultEnumValue\n\t//\tis populated with a placeholder.\n\t//\t• Resolving the extended message type for an extension field.\n\t//\t• Resolving the input or output message type for a service method.\n\t//\n\t// If the unresolved dependency uses a relative name,\n\t// then the placeholder will contain an invalid FullName with a \"*.\" prefix,\n\t// indicating that the starting prefix of the full name is unknown.\n\tAllowUnresolvable bool\n}\n\n// NewFile creates a new protoreflect.FileDescriptor from the provided\n// file descriptor message. See FileOptions.New for more information.\nfunc NewFile(fd *descriptorpb.FileDescriptorProto, r Resolver) (protoreflect.FileDescriptor, error) {\n\treturn FileOptions{}.New(fd, r)\n}\n\n// NewFiles creates a new protoregistry.Files from the provided\n// FileDescriptorSet message. See FileOptions.NewFiles for more information.\nfunc NewFiles(fd *descriptorpb.FileDescriptorSet) (*protoregistry.Files, error) {\n\treturn FileOptions{}.NewFiles(fd)\n}\n\n// New creates a new protoreflect.FileDescriptor from the provided\n// file descriptor message. The file must represent a valid proto file according\n// to protobuf semantics. The returned descriptor is a deep copy of the input.\n//\n// Any imported files, enum types, or message types referenced in the file are\n// resolved using the provided registry. When looking up an import file path,\n// the path must be unique. The newly created file descriptor is not registered\n// back into the provided file registry.\nfunc (o FileOptions) New(fd *descriptorpb.FileDescriptorProto, r Resolver) (protoreflect.FileDescriptor, error) {\n\tif r == nil {\n\t\tr = (*protoregistry.Files)(nil) // empty resolver\n\t}\n\n\t// Handle the file descriptor content.\n\tf := &filedesc.File{L2: &filedesc.FileL2{}}\n\tswitch fd.GetSyntax() {\n\tcase \"proto2\", \"\":\n\t\tf.L1.Syntax = protoreflect.Proto2\n\tcase \"proto3\":\n\t\tf.L1.Syntax = protoreflect.Proto3\n\tdefault:\n\t\treturn nil, errors.New(\"invalid syntax: %q\", fd.GetSyntax())\n\t}\n\tf.L1.Path = fd.GetName()\n\tif f.L1.Path == \"\" {\n\t\treturn nil, errors.New(\"file path must be populated\")\n\t}\n\tf.L1.Package = protoreflect.FullName(fd.GetPackage())\n\tif !f.L1.Package.IsValid() && f.L1.Package != \"\" {\n\t\treturn nil, errors.New(\"invalid package: %q\", f.L1.Package)\n\t}\n\tif opts := fd.GetOptions(); opts != nil {\n\t\topts = proto.Clone(opts).(*descriptorpb.FileOptions)\n\t\tf.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t}\n\n\tf.L2.Imports = make(filedesc.FileImports, len(fd.GetDependency()))\n\tfor _, i := range fd.GetPublicDependency() {\n\t\tif !(0 <= i && int(i) < len(f.L2.Imports)) || f.L2.Imports[i].IsPublic {\n\t\t\treturn nil, errors.New(\"invalid or duplicate public import index: %d\", i)\n\t\t}\n\t\tf.L2.Imports[i].IsPublic = true\n\t}\n\tfor _, i := range fd.GetWeakDependency() {\n\t\tif !(0 <= i && int(i) < len(f.L2.Imports)) || f.L2.Imports[i].IsWeak {\n\t\t\treturn nil, errors.New(\"invalid or duplicate weak import index: %d\", i)\n\t\t}\n\t\tf.L2.Imports[i].IsWeak = true\n\t}\n\timps := importSet{f.Path(): true}\n\tfor i, path := range fd.GetDependency() {\n\t\timp := &f.L2.Imports[i]\n\t\tf, err := r.FindFileByPath(path)\n\t\tif err == protoregistry.NotFound && (o.AllowUnresolvable || imp.IsWeak) {\n\t\t\tf = filedesc.PlaceholderFile(path)\n\t\t} else if err != nil {\n\t\t\treturn nil, errors.New(\"could not resolve import %q: %v\", path, err)\n\t\t}\n\t\timp.FileDescriptor = f\n\n\t\tif imps[imp.Path()] {\n\t\t\treturn nil, errors.New(\"already imported %q\", path)\n\t\t}\n\t\timps[imp.Path()] = true\n\t}\n\tfor i := range fd.GetDependency() {\n\t\timp := &f.L2.Imports[i]\n\t\timps.importPublic(imp.Imports())\n\t}\n\n\t// Handle source locations.\n\tf.L2.Locations.File = f\n\tfor _, loc := range fd.GetSourceCodeInfo().GetLocation() {\n\t\tvar l protoreflect.SourceLocation\n\t\t// TODO: Validate that the path points to an actual declaration?\n\t\tl.Path = protoreflect.SourcePath(loc.GetPath())\n\t\ts := loc.GetSpan()\n\t\tswitch len(s) {\n\t\tcase 3:\n\t\t\tl.StartLine, l.StartColumn, l.EndLine, l.EndColumn = int(s[0]), int(s[1]), int(s[0]), int(s[2])\n\t\tcase 4:\n\t\t\tl.StartLine, l.StartColumn, l.EndLine, l.EndColumn = int(s[0]), int(s[1]), int(s[2]), int(s[3])\n\t\tdefault:\n\t\t\treturn nil, errors.New(\"invalid span: %v\", s)\n\t\t}\n\t\t// TODO: Validate that the span information is sensible?\n\t\t// See https://github.com/protocolbuffers/protobuf/issues/6378.\n\t\tif false && (l.EndLine < l.StartLine || l.StartLine < 0 || l.StartColumn < 0 || l.EndColumn < 0 ||\n\t\t\t(l.StartLine == l.EndLine && l.EndColumn <= l.StartColumn)) {\n\t\t\treturn nil, errors.New(\"invalid span: %v\", s)\n\t\t}\n\t\tl.LeadingDetachedComments = loc.GetLeadingDetachedComments()\n\t\tl.LeadingComments = loc.GetLeadingComments()\n\t\tl.TrailingComments = loc.GetTrailingComments()\n\t\tf.L2.Locations.List = append(f.L2.Locations.List, l)\n\t}\n\n\t// Step 1: Allocate and derive the names for all declarations.\n\t// This copies all fields from the descriptor proto except:\n\t//\tgoogle.protobuf.FieldDescriptorProto.type_name\n\t//\tgoogle.protobuf.FieldDescriptorProto.default_value\n\t//\tgoogle.protobuf.FieldDescriptorProto.oneof_index\n\t//\tgoogle.protobuf.FieldDescriptorProto.extendee\n\t//\tgoogle.protobuf.MethodDescriptorProto.input\n\t//\tgoogle.protobuf.MethodDescriptorProto.output\n\tvar err error\n\tsb := new(strs.Builder)\n\tr1 := make(descsByName)\n\tif f.L1.Enums.List, err = r1.initEnumDeclarations(fd.GetEnumType(), f, sb); err != nil {\n\t\treturn nil, err\n\t}\n\tif f.L1.Messages.List, err = r1.initMessagesDeclarations(fd.GetMessageType(), f, sb); err != nil {\n\t\treturn nil, err\n\t}\n\tif f.L1.Extensions.List, err = r1.initExtensionDeclarations(fd.GetExtension(), f, sb); err != nil {\n\t\treturn nil, err\n\t}\n\tif f.L1.Services.List, err = r1.initServiceDeclarations(fd.GetService(), f, sb); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Step 2: Resolve every dependency reference not handled by step 1.\n\tr2 := &resolver{local: r1, remote: r, imports: imps, allowUnresolvable: o.AllowUnresolvable}\n\tif err := r2.resolveMessageDependencies(f.L1.Messages.List, fd.GetMessageType()); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := r2.resolveExtensionDependencies(f.L1.Extensions.List, fd.GetExtension()); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := r2.resolveServiceDependencies(f.L1.Services.List, fd.GetService()); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Step 3: Validate every enum, message, and extension declaration.\n\tif err := validateEnumDeclarations(f.L1.Enums.List, fd.GetEnumType()); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := validateMessageDeclarations(f.L1.Messages.List, fd.GetMessageType()); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := validateExtensionDeclarations(f.L1.Extensions.List, fd.GetExtension()); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn f, nil\n}\n\ntype importSet map[string]bool\n\nfunc (is importSet) importPublic(imps protoreflect.FileImports) {\n\tfor i := 0; i < imps.Len(); i++ {\n\t\tif imp := imps.Get(i); imp.IsPublic {\n\t\t\tis[imp.Path()] = true\n\t\t\tis.importPublic(imp.Imports())\n\t\t}\n\t}\n}\n\n// NewFiles creates a new protoregistry.Files from the provided\n// FileDescriptorSet message. The descriptor set must include only\n// valid files according to protobuf semantics. The returned descriptors\n// are a deep copy of the input.\nfunc (o FileOptions) NewFiles(fds *descriptorpb.FileDescriptorSet) (*protoregistry.Files, error) {\n\tfiles := make(map[string]*descriptorpb.FileDescriptorProto)\n\tfor _, fd := range fds.File {\n\t\tif _, ok := files[fd.GetName()]; ok {\n\t\t\treturn nil, errors.New(\"file appears multiple times: %q\", fd.GetName())\n\t\t}\n\t\tfiles[fd.GetName()] = fd\n\t}\n\tr := &protoregistry.Files{}\n\tfor _, fd := range files {\n\t\tif err := o.addFileDeps(r, fd, files); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn r, nil\n}\nfunc (o FileOptions) addFileDeps(r *protoregistry.Files, fd *descriptorpb.FileDescriptorProto, files map[string]*descriptorpb.FileDescriptorProto) error {\n\t// Set the entry to nil while descending into a file's dependencies to detect cycles.\n\tfiles[fd.GetName()] = nil\n\tfor _, dep := range fd.Dependency {\n\t\tdepfd, ok := files[dep]\n\t\tif depfd == nil {\n\t\t\tif ok {\n\t\t\t\treturn errors.New(\"import cycle in file: %q\", dep)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif err := o.addFileDeps(r, depfd, files); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t// Delete the entry once dependencies are processed.\n\tdelete(files, fd.GetName())\n\tf, err := o.New(fd, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn r.RegisterFile(f)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\ntype descsByName map[protoreflect.FullName]protoreflect.Descriptor\n\nfunc (r descsByName) initEnumDeclarations(eds []*descriptorpb.EnumDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (es []filedesc.Enum, err error) {\n\tes = make([]filedesc.Enum, len(eds)) // allocate up-front to ensure stable pointers\n\tfor i, ed := range eds {\n\t\te := &es[i]\n\t\te.L2 = new(filedesc.EnumL2)\n\t\tif e.L0, err = r.makeBase(e, parent, ed.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := ed.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.EnumOptions)\n\t\t\te.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t\tfor _, s := range ed.GetReservedName() {\n\t\t\te.L2.ReservedNames.List = append(e.L2.ReservedNames.List, protoreflect.Name(s))\n\t\t}\n\t\tfor _, rr := range ed.GetReservedRange() {\n\t\t\te.L2.ReservedRanges.List = append(e.L2.ReservedRanges.List, [2]protoreflect.EnumNumber{\n\t\t\t\tprotoreflect.EnumNumber(rr.GetStart()),\n\t\t\t\tprotoreflect.EnumNumber(rr.GetEnd()),\n\t\t\t})\n\t\t}\n\t\tif e.L2.Values.List, err = r.initEnumValuesFromDescriptorProto(ed.GetValue(), e, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn es, nil\n}\n\nfunc (r descsByName) initEnumValuesFromDescriptorProto(vds []*descriptorpb.EnumValueDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (vs []filedesc.EnumValue, err error) {\n\tvs = make([]filedesc.EnumValue, len(vds)) // allocate up-front to ensure stable pointers\n\tfor i, vd := range vds {\n\t\tv := &vs[i]\n\t\tif v.L0, err = r.makeBase(v, parent, vd.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := vd.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.EnumValueOptions)\n\t\t\tv.L1.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t\tv.L1.Number = protoreflect.EnumNumber(vd.GetNumber())\n\t}\n\treturn vs, nil\n}\n\nfunc (r descsByName) initMessagesDeclarations(mds []*descriptorpb.DescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ms []filedesc.Message, err error) {\n\tms = make([]filedesc.Message, len(mds)) // allocate up-front to ensure stable pointers\n\tfor i, md := range mds {\n\t\tm := &ms[i]\n\t\tm.L2 = new(filedesc.MessageL2)\n\t\tif m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := md.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.MessageOptions)\n\t\t\tm.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t\tm.L1.IsMapEntry = opts.GetMapEntry()\n\t\t\tm.L1.IsMessageSet = opts.GetMessageSetWireFormat()\n\t\t}\n\t\tfor _, s := range md.GetReservedName() {\n\t\t\tm.L2.ReservedNames.List = append(m.L2.ReservedNames.List, protoreflect.Name(s))\n\t\t}\n\t\tfor _, rr := range md.GetReservedRange() {\n\t\t\tm.L2.ReservedRanges.List = append(m.L2.ReservedRanges.List, [2]protoreflect.FieldNumber{\n\t\t\t\tprotoreflect.FieldNumber(rr.GetStart()),\n\t\t\t\tprotoreflect.FieldNumber(rr.GetEnd()),\n\t\t\t})\n\t\t}\n\t\tfor _, xr := range md.GetExtensionRange() {\n\t\t\tm.L2.ExtensionRanges.List = append(m.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{\n\t\t\t\tprotoreflect.FieldNumber(xr.GetStart()),\n\t\t\t\tprotoreflect.FieldNumber(xr.GetEnd()),\n\t\t\t})\n\t\t\tvar optsFunc func() protoreflect.ProtoMessage\n\t\t\tif opts := xr.GetOptions(); opts != nil {\n\t\t\t\topts = proto.Clone(opts).(*descriptorpb.ExtensionRangeOptions)\n\t\t\t\toptsFunc = func() protoreflect.ProtoMessage { return opts }\n\t\t\t}\n\t\t\tm.L2.ExtensionRangeOptions = append(m.L2.ExtensionRangeOptions, optsFunc)\n\t\t}\n\t\tif m.L2.Fields.List, err = r.initFieldsFromDescriptorProto(md.GetField(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m.L2.Oneofs.List, err = r.initOneofsFromDescriptorProto(md.GetOneofDecl(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m.L1.Enums.List, err = r.initEnumDeclarations(md.GetEnumType(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m.L1.Messages.List, err = r.initMessagesDeclarations(md.GetNestedType(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif m.L1.Extensions.List, err = r.initExtensionDeclarations(md.GetExtension(), m, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn ms, nil\n}\n\nfunc (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (fs []filedesc.Field, err error) {\n\tfs = make([]filedesc.Field, len(fds)) // allocate up-front to ensure stable pointers\n\tfor i, fd := range fds {\n\t\tf := &fs[i]\n\t\tif f.L0, err = r.makeBase(f, parent, fd.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tf.L1.IsProto3Optional = fd.GetProto3Optional()\n\t\tif opts := fd.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.FieldOptions)\n\t\t\tf.L1.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t\tf.L1.IsWeak = opts.GetWeak()\n\t\t\tf.L1.HasPacked = opts.Packed != nil\n\t\t\tf.L1.IsPacked = opts.GetPacked()\n\t\t}\n\t\tf.L1.Number = protoreflect.FieldNumber(fd.GetNumber())\n\t\tf.L1.Cardinality = protoreflect.Cardinality(fd.GetLabel())\n\t\tif fd.Type != nil {\n\t\t\tf.L1.Kind = protoreflect.Kind(fd.GetType())\n\t\t}\n\t\tif fd.JsonName != nil {\n\t\t\tf.L1.StringName.InitJSON(fd.GetJsonName())\n\t\t}\n\t}\n\treturn fs, nil\n}\n\nfunc (r descsByName) initOneofsFromDescriptorProto(ods []*descriptorpb.OneofDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (os []filedesc.Oneof, err error) {\n\tos = make([]filedesc.Oneof, len(ods)) // allocate up-front to ensure stable pointers\n\tfor i, od := range ods {\n\t\to := &os[i]\n\t\tif o.L0, err = r.makeBase(o, parent, od.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := od.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.OneofOptions)\n\t\t\to.L1.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t}\n\treturn os, nil\n}\n\nfunc (r descsByName) initExtensionDeclarations(xds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (xs []filedesc.Extension, err error) {\n\txs = make([]filedesc.Extension, len(xds)) // allocate up-front to ensure stable pointers\n\tfor i, xd := range xds {\n\t\tx := &xs[i]\n\t\tx.L2 = new(filedesc.ExtensionL2)\n\t\tif x.L0, err = r.makeBase(x, parent, xd.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := xd.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.FieldOptions)\n\t\t\tx.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t\tx.L2.IsPacked = opts.GetPacked()\n\t\t}\n\t\tx.L1.Number = protoreflect.FieldNumber(xd.GetNumber())\n\t\tx.L1.Cardinality = protoreflect.Cardinality(xd.GetLabel())\n\t\tif xd.Type != nil {\n\t\t\tx.L1.Kind = protoreflect.Kind(xd.GetType())\n\t\t}\n\t\tif xd.JsonName != nil {\n\t\t\tx.L2.StringName.InitJSON(xd.GetJsonName())\n\t\t}\n\t}\n\treturn xs, nil\n}\n\nfunc (r descsByName) initServiceDeclarations(sds []*descriptorpb.ServiceDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ss []filedesc.Service, err error) {\n\tss = make([]filedesc.Service, len(sds)) // allocate up-front to ensure stable pointers\n\tfor i, sd := range sds {\n\t\ts := &ss[i]\n\t\ts.L2 = new(filedesc.ServiceL2)\n\t\tif s.L0, err = r.makeBase(s, parent, sd.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := sd.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.ServiceOptions)\n\t\t\ts.L2.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t\tif s.L2.Methods.List, err = r.initMethodsFromDescriptorProto(sd.GetMethod(), s, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn ss, nil\n}\n\nfunc (r descsByName) initMethodsFromDescriptorProto(mds []*descriptorpb.MethodDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ms []filedesc.Method, err error) {\n\tms = make([]filedesc.Method, len(mds)) // allocate up-front to ensure stable pointers\n\tfor i, md := range mds {\n\t\tm := &ms[i]\n\t\tif m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif opts := md.GetOptions(); opts != nil {\n\t\t\topts = proto.Clone(opts).(*descriptorpb.MethodOptions)\n\t\t\tm.L1.Options = func() protoreflect.ProtoMessage { return opts }\n\t\t}\n\t\tm.L1.IsStreamingClient = md.GetClientStreaming()\n\t\tm.L1.IsStreamingServer = md.GetServerStreaming()\n\t}\n\treturn ms, nil\n}\n\nfunc (r descsByName) makeBase(child, parent protoreflect.Descriptor, name string, idx int, sb *strs.Builder) (filedesc.BaseL0, error) {\n\tif !protoreflect.Name(name).IsValid() {\n\t\treturn filedesc.BaseL0{}, errors.New(\"descriptor %q has an invalid nested name: %q\", parent.FullName(), name)\n\t}\n\n\t// Derive the full name of the child.\n\t// Note that enum values are a sibling to the enum parent in the namespace.\n\tvar fullName protoreflect.FullName\n\tif _, ok := parent.(protoreflect.EnumDescriptor); ok {\n\t\tfullName = sb.AppendFullName(parent.FullName().Parent(), protoreflect.Name(name))\n\t} else {\n\t\tfullName = sb.AppendFullName(parent.FullName(), protoreflect.Name(name))\n\t}\n\tif _, ok := r[fullName]; ok {\n\t\treturn filedesc.BaseL0{}, errors.New(\"descriptor %q already declared\", fullName)\n\t}\n\tr[fullName] = child\n\n\t// TODO: Verify that the full name does not already exist in the resolver?\n\t// This is not as critical since most usages of NewFile will register\n\t// the created file back into the registry, which will perform this check.\n\n\treturn filedesc.BaseL0{\n\t\tFullName:   fullName,\n\t\tParentFile: parent.ParentFile().(*filedesc.File),\n\t\tParent:     parent,\n\t\tIndex:      idx,\n\t}, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"google.golang.org/protobuf/internal/encoding/defval\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\t\"google.golang.org/protobuf/reflect/protoregistry\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\n// resolver is a wrapper around a local registry of declarations within the file\n// and the remote resolver. The remote resolver is restricted to only return\n// descriptors that have been imported.\ntype resolver struct {\n\tlocal   descsByName\n\tremote  Resolver\n\timports importSet\n\n\tallowUnresolvable bool\n}\n\nfunc (r *resolver) resolveMessageDependencies(ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) (err error) {\n\tfor i, md := range mds {\n\t\tm := &ms[i]\n\t\tfor j, fd := range md.GetField() {\n\t\t\tf := &m.L2.Fields.List[j]\n\t\t\tif f.L1.Cardinality == protoreflect.Required {\n\t\t\t\tm.L2.RequiredNumbers.List = append(m.L2.RequiredNumbers.List, f.L1.Number)\n\t\t\t}\n\t\t\tif fd.OneofIndex != nil {\n\t\t\t\tk := int(fd.GetOneofIndex())\n\t\t\t\tif !(0 <= k && k < len(md.GetOneofDecl())) {\n\t\t\t\t\treturn errors.New(\"message field %q has an invalid oneof index: %d\", f.FullName(), k)\n\t\t\t\t}\n\t\t\t\to := &m.L2.Oneofs.List[k]\n\t\t\t\tf.L1.ContainingOneof = o\n\t\t\t\to.L1.Fields.List = append(o.L1.Fields.List, f)\n\t\t\t}\n\n\t\t\tif f.L1.Kind, f.L1.Enum, f.L1.Message, err = r.findTarget(f.Kind(), f.Parent().FullName(), partialName(fd.GetTypeName()), f.IsWeak()); err != nil {\n\t\t\t\treturn errors.New(\"message field %q cannot resolve type: %v\", f.FullName(), err)\n\t\t\t}\n\t\t\tif fd.DefaultValue != nil {\n\t\t\t\tv, ev, err := unmarshalDefault(fd.GetDefaultValue(), f, r.allowUnresolvable)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn errors.New(\"message field %q has invalid default: %v\", f.FullName(), err)\n\t\t\t\t}\n\t\t\t\tf.L1.Default = filedesc.DefaultValue(v, ev)\n\t\t\t}\n\t\t}\n\n\t\tif err := r.resolveMessageDependencies(m.L1.Messages.List, md.GetNestedType()); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := r.resolveExtensionDependencies(m.L1.Extensions.List, md.GetExtension()); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (r *resolver) resolveExtensionDependencies(xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) (err error) {\n\tfor i, xd := range xds {\n\t\tx := &xs[i]\n\t\tif x.L1.Extendee, err = r.findMessageDescriptor(x.Parent().FullName(), partialName(xd.GetExtendee()), false); err != nil {\n\t\t\treturn errors.New(\"extension field %q cannot resolve extendee: %v\", x.FullName(), err)\n\t\t}\n\t\tif x.L1.Kind, x.L2.Enum, x.L2.Message, err = r.findTarget(x.Kind(), x.Parent().FullName(), partialName(xd.GetTypeName()), false); err != nil {\n\t\t\treturn errors.New(\"extension field %q cannot resolve type: %v\", x.FullName(), err)\n\t\t}\n\t\tif xd.DefaultValue != nil {\n\t\t\tv, ev, err := unmarshalDefault(xd.GetDefaultValue(), x, r.allowUnresolvable)\n\t\t\tif err != nil {\n\t\t\t\treturn errors.New(\"extension field %q has invalid default: %v\", x.FullName(), err)\n\t\t\t}\n\t\t\tx.L2.Default = filedesc.DefaultValue(v, ev)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (r *resolver) resolveServiceDependencies(ss []filedesc.Service, sds []*descriptorpb.ServiceDescriptorProto) (err error) {\n\tfor i, sd := range sds {\n\t\ts := &ss[i]\n\t\tfor j, md := range sd.GetMethod() {\n\t\t\tm := &s.L2.Methods.List[j]\n\t\t\tm.L1.Input, err = r.findMessageDescriptor(m.Parent().FullName(), partialName(md.GetInputType()), false)\n\t\t\tif err != nil {\n\t\t\t\treturn errors.New(\"service method %q cannot resolve input: %v\", m.FullName(), err)\n\t\t\t}\n\t\t\tm.L1.Output, err = r.findMessageDescriptor(s.FullName(), partialName(md.GetOutputType()), false)\n\t\t\tif err != nil {\n\t\t\t\treturn errors.New(\"service method %q cannot resolve output: %v\", m.FullName(), err)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// findTarget finds an enum or message descriptor if k is an enum, message,\n// group, or unknown. If unknown, and the name could be resolved, the kind\n// returned kind is set based on the type of the resolved descriptor.\nfunc (r *resolver) findTarget(k protoreflect.Kind, scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.Kind, protoreflect.EnumDescriptor, protoreflect.MessageDescriptor, error) {\n\tswitch k {\n\tcase protoreflect.EnumKind:\n\t\ted, err := r.findEnumDescriptor(scope, ref, isWeak)\n\t\tif err != nil {\n\t\t\treturn 0, nil, nil, err\n\t\t}\n\t\treturn k, ed, nil, nil\n\tcase protoreflect.MessageKind, protoreflect.GroupKind:\n\t\tmd, err := r.findMessageDescriptor(scope, ref, isWeak)\n\t\tif err != nil {\n\t\t\treturn 0, nil, nil, err\n\t\t}\n\t\treturn k, nil, md, nil\n\tcase 0:\n\t\t// Handle unspecified kinds (possible with parsers that operate\n\t\t// on a per-file basis without knowledge of dependencies).\n\t\td, err := r.findDescriptor(scope, ref)\n\t\tif err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) {\n\t\t\treturn k, filedesc.PlaceholderEnum(ref.FullName()), filedesc.PlaceholderMessage(ref.FullName()), nil\n\t\t} else if err == protoregistry.NotFound {\n\t\t\treturn 0, nil, nil, errors.New(\"%q not found\", ref.FullName())\n\t\t} else if err != nil {\n\t\t\treturn 0, nil, nil, err\n\t\t}\n\t\tswitch d := d.(type) {\n\t\tcase protoreflect.EnumDescriptor:\n\t\t\treturn protoreflect.EnumKind, d, nil, nil\n\t\tcase protoreflect.MessageDescriptor:\n\t\t\treturn protoreflect.MessageKind, nil, d, nil\n\t\tdefault:\n\t\t\treturn 0, nil, nil, errors.New(\"unknown kind\")\n\t\t}\n\tdefault:\n\t\tif ref != \"\" {\n\t\t\treturn 0, nil, nil, errors.New(\"target name cannot be specified for %v\", k)\n\t\t}\n\t\tif !k.IsValid() {\n\t\t\treturn 0, nil, nil, errors.New(\"invalid kind: %d\", k)\n\t\t}\n\t\treturn k, nil, nil, nil\n\t}\n}\n\n// findDescriptor finds the descriptor by name,\n// which may be a relative name within some scope.\n//\n// Suppose the scope was \"fizz.buzz\" and the reference was \"Foo.Bar\",\n// then the following full names are searched:\n//   - fizz.buzz.Foo.Bar\n//   - fizz.Foo.Bar\n//   - Foo.Bar\nfunc (r *resolver) findDescriptor(scope protoreflect.FullName, ref partialName) (protoreflect.Descriptor, error) {\n\tif !ref.IsValid() {\n\t\treturn nil, errors.New(\"invalid name reference: %q\", ref)\n\t}\n\tif ref.IsFull() {\n\t\tscope, ref = \"\", ref[1:]\n\t}\n\tvar foundButNotImported protoreflect.Descriptor\n\tfor {\n\t\t// Derive the full name to search.\n\t\ts := protoreflect.FullName(ref)\n\t\tif scope != \"\" {\n\t\t\ts = scope + \".\" + s\n\t\t}\n\n\t\t// Check the current file for the descriptor.\n\t\tif d, ok := r.local[s]; ok {\n\t\t\treturn d, nil\n\t\t}\n\n\t\t// Check the remote registry for the descriptor.\n\t\td, err := r.remote.FindDescriptorByName(s)\n\t\tif err == nil {\n\t\t\t// Only allow descriptors covered by one of the imports.\n\t\t\tif r.imports[d.ParentFile().Path()] {\n\t\t\t\treturn d, nil\n\t\t\t}\n\t\t\tfoundButNotImported = d\n\t\t} else if err != protoregistry.NotFound {\n\t\t\treturn nil, errors.Wrap(err, \"%q\", s)\n\t\t}\n\n\t\t// Continue on at a higher level of scoping.\n\t\tif scope == \"\" {\n\t\t\tif d := foundButNotImported; d != nil {\n\t\t\t\treturn nil, errors.New(\"resolved %q, but %q is not imported\", d.FullName(), d.ParentFile().Path())\n\t\t\t}\n\t\t\treturn nil, protoregistry.NotFound\n\t\t}\n\t\tscope = scope.Parent()\n\t}\n}\n\nfunc (r *resolver) findEnumDescriptor(scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.EnumDescriptor, error) {\n\td, err := r.findDescriptor(scope, ref)\n\tif err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) {\n\t\treturn filedesc.PlaceholderEnum(ref.FullName()), nil\n\t} else if err == protoregistry.NotFound {\n\t\treturn nil, errors.New(\"%q not found\", ref.FullName())\n\t} else if err != nil {\n\t\treturn nil, err\n\t}\n\ted, ok := d.(protoreflect.EnumDescriptor)\n\tif !ok {\n\t\treturn nil, errors.New(\"resolved %q, but it is not an enum\", d.FullName())\n\t}\n\treturn ed, nil\n}\n\nfunc (r *resolver) findMessageDescriptor(scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.MessageDescriptor, error) {\n\td, err := r.findDescriptor(scope, ref)\n\tif err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) {\n\t\treturn filedesc.PlaceholderMessage(ref.FullName()), nil\n\t} else if err == protoregistry.NotFound {\n\t\treturn nil, errors.New(\"%q not found\", ref.FullName())\n\t} else if err != nil {\n\t\treturn nil, err\n\t}\n\tmd, ok := d.(protoreflect.MessageDescriptor)\n\tif !ok {\n\t\treturn nil, errors.New(\"resolved %q, but it is not an message\", d.FullName())\n\t}\n\treturn md, nil\n}\n\n// partialName is the partial name. A leading dot means that the name is full,\n// otherwise the name is relative to some current scope.\n// See google.protobuf.FieldDescriptorProto.type_name.\ntype partialName string\n\nfunc (s partialName) IsFull() bool {\n\treturn len(s) > 0 && s[0] == '.'\n}\n\nfunc (s partialName) IsValid() bool {\n\tif s.IsFull() {\n\t\treturn protoreflect.FullName(s[1:]).IsValid()\n\t}\n\treturn protoreflect.FullName(s).IsValid()\n}\n\nconst unknownPrefix = \"*.\"\n\n// FullName converts the partial name to a full name on a best-effort basis.\n// If relative, it creates an invalid full name, using a \"*.\" prefix\n// to indicate that the start of the full name is unknown.\nfunc (s partialName) FullName() protoreflect.FullName {\n\tif s.IsFull() {\n\t\treturn protoreflect.FullName(s[1:])\n\t}\n\treturn protoreflect.FullName(unknownPrefix + s)\n}\n\nfunc unmarshalDefault(s string, fd protoreflect.FieldDescriptor, allowUnresolvable bool) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) {\n\tvar evs protoreflect.EnumValueDescriptors\n\tif fd.Enum() != nil {\n\t\tevs = fd.Enum().Values()\n\t}\n\tv, ev, err := defval.Unmarshal(s, fd.Kind(), evs, defval.Descriptor)\n\tif err != nil && allowUnresolvable && evs != nil && protoreflect.Name(s).IsValid() {\n\t\tv = protoreflect.ValueOfEnum(0)\n\t\tif evs.Len() > 0 {\n\t\t\tv = protoreflect.ValueOfEnum(evs.Get(0).Number())\n\t\t}\n\t\tev = filedesc.PlaceholderEnumValue(fd.Enum().FullName().Parent().Append(protoreflect.Name(s)))\n\t} else if err != nil {\n\t\treturn v, ev, err\n\t}\n\tif fd.Syntax() == protoreflect.Proto3 {\n\t\treturn v, ev, errors.New(\"cannot be specified under proto3 semantics\")\n\t}\n\tif fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind || fd.Cardinality() == protoreflect.Repeated {\n\t\treturn v, ev, errors.New(\"cannot be specified on composite types\")\n\t}\n\treturn v, ev, nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"strings\"\n\t\"unicode\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/internal/genid\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\nfunc validateEnumDeclarations(es []filedesc.Enum, eds []*descriptorpb.EnumDescriptorProto) error {\n\tfor i, ed := range eds {\n\t\te := &es[i]\n\t\tif err := e.L2.ReservedNames.CheckValid(); err != nil {\n\t\t\treturn errors.New(\"enum %q reserved names has %v\", e.FullName(), err)\n\t\t}\n\t\tif err := e.L2.ReservedRanges.CheckValid(); err != nil {\n\t\t\treturn errors.New(\"enum %q reserved ranges has %v\", e.FullName(), err)\n\t\t}\n\t\tif len(ed.GetValue()) == 0 {\n\t\t\treturn errors.New(\"enum %q must contain at least one value declaration\", e.FullName())\n\t\t}\n\t\tallowAlias := ed.GetOptions().GetAllowAlias()\n\t\tfoundAlias := false\n\t\tfor i := 0; i < e.Values().Len(); i++ {\n\t\t\tv1 := e.Values().Get(i)\n\t\t\tif v2 := e.Values().ByNumber(v1.Number()); v1 != v2 {\n\t\t\t\tfoundAlias = true\n\t\t\t\tif !allowAlias {\n\t\t\t\t\treturn errors.New(\"enum %q has conflicting non-aliased values on number %d: %q with %q\", e.FullName(), v1.Number(), v1.Name(), v2.Name())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif allowAlias && !foundAlias {\n\t\t\treturn errors.New(\"enum %q allows aliases, but none were found\", e.FullName())\n\t\t}\n\t\tif e.Syntax() == protoreflect.Proto3 {\n\t\t\tif v := e.Values().Get(0); v.Number() != 0 {\n\t\t\t\treturn errors.New(\"enum %q using proto3 semantics must have zero number for the first value\", v.FullName())\n\t\t\t}\n\t\t\t// Verify that value names in proto3 do not conflict if the\n\t\t\t// case-insensitive prefix is removed.\n\t\t\t// See protoc v3.8.0: src/google/protobuf/descriptor.cc:4991-5055\n\t\t\tnames := map[string]protoreflect.EnumValueDescriptor{}\n\t\t\tprefix := strings.Replace(strings.ToLower(string(e.Name())), \"_\", \"\", -1)\n\t\t\tfor i := 0; i < e.Values().Len(); i++ {\n\t\t\t\tv1 := e.Values().Get(i)\n\t\t\t\ts := strs.EnumValueName(strs.TrimEnumPrefix(string(v1.Name()), prefix))\n\t\t\t\tif v2, ok := names[s]; ok && v1.Number() != v2.Number() {\n\t\t\t\t\treturn errors.New(\"enum %q using proto3 semantics has conflict: %q with %q\", e.FullName(), v1.Name(), v2.Name())\n\t\t\t\t}\n\t\t\t\tnames[s] = v1\n\t\t\t}\n\t\t}\n\n\t\tfor j, vd := range ed.GetValue() {\n\t\t\tv := &e.L2.Values.List[j]\n\t\t\tif vd.Number == nil {\n\t\t\t\treturn errors.New(\"enum value %q must have a specified number\", v.FullName())\n\t\t\t}\n\t\t\tif e.L2.ReservedNames.Has(v.Name()) {\n\t\t\t\treturn errors.New(\"enum value %q must not use reserved name\", v.FullName())\n\t\t\t}\n\t\t\tif e.L2.ReservedRanges.Has(v.Number()) {\n\t\t\t\treturn errors.New(\"enum value %q must not use reserved number %d\", v.FullName(), v.Number())\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validateMessageDeclarations(ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) error {\n\tfor i, md := range mds {\n\t\tm := &ms[i]\n\n\t\t// Handle the message descriptor itself.\n\t\tisMessageSet := md.GetOptions().GetMessageSetWireFormat()\n\t\tif err := m.L2.ReservedNames.CheckValid(); err != nil {\n\t\t\treturn errors.New(\"message %q reserved names has %v\", m.FullName(), err)\n\t\t}\n\t\tif err := m.L2.ReservedRanges.CheckValid(isMessageSet); err != nil {\n\t\t\treturn errors.New(\"message %q reserved ranges has %v\", m.FullName(), err)\n\t\t}\n\t\tif err := m.L2.ExtensionRanges.CheckValid(isMessageSet); err != nil {\n\t\t\treturn errors.New(\"message %q extension ranges has %v\", m.FullName(), err)\n\t\t}\n\t\tif err := (*filedesc.FieldRanges).CheckOverlap(&m.L2.ReservedRanges, &m.L2.ExtensionRanges); err != nil {\n\t\t\treturn errors.New(\"message %q reserved and extension ranges has %v\", m.FullName(), err)\n\t\t}\n\t\tfor i := 0; i < m.Fields().Len(); i++ {\n\t\t\tf1 := m.Fields().Get(i)\n\t\t\tif f2 := m.Fields().ByNumber(f1.Number()); f1 != f2 {\n\t\t\t\treturn errors.New(\"message %q has conflicting fields: %q with %q\", m.FullName(), f1.Name(), f2.Name())\n\t\t\t}\n\t\t}\n\t\tif isMessageSet && !flags.ProtoLegacy {\n\t\t\treturn errors.New(\"message %q is a MessageSet, which is a legacy proto1 feature that is no longer supported\", m.FullName())\n\t\t}\n\t\tif isMessageSet && (m.Syntax() != protoreflect.Proto2 || m.Fields().Len() > 0 || m.ExtensionRanges().Len() == 0) {\n\t\t\treturn errors.New(\"message %q is an invalid proto1 MessageSet\", m.FullName())\n\t\t}\n\t\tif m.Syntax() == protoreflect.Proto3 {\n\t\t\tif m.ExtensionRanges().Len() > 0 {\n\t\t\t\treturn errors.New(\"message %q using proto3 semantics cannot have extension ranges\", m.FullName())\n\t\t\t}\n\t\t\t// Verify that field names in proto3 do not conflict if lowercased\n\t\t\t// with all underscores removed.\n\t\t\t// See protoc v3.8.0: src/google/protobuf/descriptor.cc:5830-5847\n\t\t\tnames := map[string]protoreflect.FieldDescriptor{}\n\t\t\tfor i := 0; i < m.Fields().Len(); i++ {\n\t\t\t\tf1 := m.Fields().Get(i)\n\t\t\t\ts := strings.Replace(strings.ToLower(string(f1.Name())), \"_\", \"\", -1)\n\t\t\t\tif f2, ok := names[s]; ok {\n\t\t\t\t\treturn errors.New(\"message %q using proto3 semantics has conflict: %q with %q\", m.FullName(), f1.Name(), f2.Name())\n\t\t\t\t}\n\t\t\t\tnames[s] = f1\n\t\t\t}\n\t\t}\n\n\t\tfor j, fd := range md.GetField() {\n\t\t\tf := &m.L2.Fields.List[j]\n\t\t\tif m.L2.ReservedNames.Has(f.Name()) {\n\t\t\t\treturn errors.New(\"message field %q must not use reserved name\", f.FullName())\n\t\t\t}\n\t\t\tif !f.Number().IsValid() {\n\t\t\t\treturn errors.New(\"message field %q has an invalid number: %d\", f.FullName(), f.Number())\n\t\t\t}\n\t\t\tif !f.Cardinality().IsValid() {\n\t\t\t\treturn errors.New(\"message field %q has an invalid cardinality: %d\", f.FullName(), f.Cardinality())\n\t\t\t}\n\t\t\tif m.L2.ReservedRanges.Has(f.Number()) {\n\t\t\t\treturn errors.New(\"message field %q must not use reserved number %d\", f.FullName(), f.Number())\n\t\t\t}\n\t\t\tif m.L2.ExtensionRanges.Has(f.Number()) {\n\t\t\t\treturn errors.New(\"message field %q with number %d in extension range\", f.FullName(), f.Number())\n\t\t\t}\n\t\t\tif fd.Extendee != nil {\n\t\t\t\treturn errors.New(\"message field %q may not have extendee: %q\", f.FullName(), fd.GetExtendee())\n\t\t\t}\n\t\t\tif f.L1.IsProto3Optional {\n\t\t\t\tif f.Syntax() != protoreflect.Proto3 {\n\t\t\t\t\treturn errors.New(\"message field %q under proto3 optional semantics must be specified in the proto3 syntax\", f.FullName())\n\t\t\t\t}\n\t\t\t\tif f.Cardinality() != protoreflect.Optional {\n\t\t\t\t\treturn errors.New(\"message field %q under proto3 optional semantics must have optional cardinality\", f.FullName())\n\t\t\t\t}\n\t\t\t\tif f.ContainingOneof() != nil && f.ContainingOneof().Fields().Len() != 1 {\n\t\t\t\t\treturn errors.New(\"message field %q under proto3 optional semantics must be within a single element oneof\", f.FullName())\n\t\t\t\t}\n\t\t\t}\n\t\t\tif f.IsWeak() && !flags.ProtoLegacy {\n\t\t\t\treturn errors.New(\"message field %q is a weak field, which is a legacy proto1 feature that is no longer supported\", f.FullName())\n\t\t\t}\n\t\t\tif f.IsWeak() && (f.Syntax() != protoreflect.Proto2 || !isOptionalMessage(f) || f.ContainingOneof() != nil) {\n\t\t\t\treturn errors.New(\"message field %q may only be weak for an optional message\", f.FullName())\n\t\t\t}\n\t\t\tif f.IsPacked() && !isPackable(f) {\n\t\t\t\treturn errors.New(\"message field %q is not packable\", f.FullName())\n\t\t\t}\n\t\t\tif err := checkValidGroup(f); err != nil {\n\t\t\t\treturn errors.New(\"message field %q is an invalid group: %v\", f.FullName(), err)\n\t\t\t}\n\t\t\tif err := checkValidMap(f); err != nil {\n\t\t\t\treturn errors.New(\"message field %q is an invalid map: %v\", f.FullName(), err)\n\t\t\t}\n\t\t\tif f.Syntax() == protoreflect.Proto3 {\n\t\t\t\tif f.Cardinality() == protoreflect.Required {\n\t\t\t\t\treturn errors.New(\"message field %q using proto3 semantics cannot be required\", f.FullName())\n\t\t\t\t}\n\t\t\t\tif f.Enum() != nil && !f.Enum().IsPlaceholder() && f.Enum().Syntax() != protoreflect.Proto3 {\n\t\t\t\t\treturn errors.New(\"message field %q using proto3 semantics may only depend on a proto3 enum\", f.FullName())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tseenSynthetic := false // synthetic oneofs for proto3 optional must come after real oneofs\n\t\tfor j := range md.GetOneofDecl() {\n\t\t\to := &m.L2.Oneofs.List[j]\n\t\t\tif o.Fields().Len() == 0 {\n\t\t\t\treturn errors.New(\"message oneof %q must contain at least one field declaration\", o.FullName())\n\t\t\t}\n\t\t\tif n := o.Fields().Len(); n-1 != (o.Fields().Get(n-1).Index() - o.Fields().Get(0).Index()) {\n\t\t\t\treturn errors.New(\"message oneof %q must have consecutively declared fields\", o.FullName())\n\t\t\t}\n\n\t\t\tif o.IsSynthetic() {\n\t\t\t\tseenSynthetic = true\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !o.IsSynthetic() && seenSynthetic {\n\t\t\t\treturn errors.New(\"message oneof %q must be declared before synthetic oneofs\", o.FullName())\n\t\t\t}\n\n\t\t\tfor i := 0; i < o.Fields().Len(); i++ {\n\t\t\t\tf := o.Fields().Get(i)\n\t\t\t\tif f.Cardinality() != protoreflect.Optional {\n\t\t\t\t\treturn errors.New(\"message field %q belongs in a oneof and must be optional\", f.FullName())\n\t\t\t\t}\n\t\t\t\tif f.IsWeak() {\n\t\t\t\t\treturn errors.New(\"message field %q belongs in a oneof and must not be a weak reference\", f.FullName())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif err := validateEnumDeclarations(m.L1.Enums.List, md.GetEnumType()); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := validateMessageDeclarations(m.L1.Messages.List, md.GetNestedType()); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := validateExtensionDeclarations(m.L1.Extensions.List, md.GetExtension()); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validateExtensionDeclarations(xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) error {\n\tfor i, xd := range xds {\n\t\tx := &xs[i]\n\t\t// NOTE: Avoid using the IsValid method since extensions to MessageSet\n\t\t// may have a field number higher than normal. This check only verifies\n\t\t// that the number is not negative or reserved. We check again later\n\t\t// if we know that the extendee is definitely not a MessageSet.\n\t\tif n := x.Number(); n < 0 || (protowire.FirstReservedNumber <= n && n <= protowire.LastReservedNumber) {\n\t\t\treturn errors.New(\"extension field %q has an invalid number: %d\", x.FullName(), x.Number())\n\t\t}\n\t\tif !x.Cardinality().IsValid() || x.Cardinality() == protoreflect.Required {\n\t\t\treturn errors.New(\"extension field %q has an invalid cardinality: %d\", x.FullName(), x.Cardinality())\n\t\t}\n\t\tif xd.JsonName != nil {\n\t\t\t// A bug in older versions of protoc would always populate the\n\t\t\t// \"json_name\" option for extensions when it is meaningless.\n\t\t\t// When it did so, it would always use the camel-cased field name.\n\t\t\tif xd.GetJsonName() != strs.JSONCamelCase(string(x.Name())) {\n\t\t\t\treturn errors.New(\"extension field %q may not have an explicitly set JSON name: %q\", x.FullName(), xd.GetJsonName())\n\t\t\t}\n\t\t}\n\t\tif xd.OneofIndex != nil {\n\t\t\treturn errors.New(\"extension field %q may not be part of a oneof\", x.FullName())\n\t\t}\n\t\tif md := x.ContainingMessage(); !md.IsPlaceholder() {\n\t\t\tif !md.ExtensionRanges().Has(x.Number()) {\n\t\t\t\treturn errors.New(\"extension field %q extends %q with non-extension field number: %d\", x.FullName(), md.FullName(), x.Number())\n\t\t\t}\n\t\t\tisMessageSet := md.Options().(*descriptorpb.MessageOptions).GetMessageSetWireFormat()\n\t\t\tif isMessageSet && !isOptionalMessage(x) {\n\t\t\t\treturn errors.New(\"extension field %q extends MessageSet and must be an optional message\", x.FullName())\n\t\t\t}\n\t\t\tif !isMessageSet && !x.Number().IsValid() {\n\t\t\t\treturn errors.New(\"extension field %q has an invalid number: %d\", x.FullName(), x.Number())\n\t\t\t}\n\t\t}\n\t\tif xd.GetOptions().GetWeak() {\n\t\t\treturn errors.New(\"extension field %q cannot be a weak reference\", x.FullName())\n\t\t}\n\t\tif x.IsPacked() && !isPackable(x) {\n\t\t\treturn errors.New(\"extension field %q is not packable\", x.FullName())\n\t\t}\n\t\tif err := checkValidGroup(x); err != nil {\n\t\t\treturn errors.New(\"extension field %q is an invalid group: %v\", x.FullName(), err)\n\t\t}\n\t\tif md := x.Message(); md != nil && md.IsMapEntry() {\n\t\t\treturn errors.New(\"extension field %q cannot be a map entry\", x.FullName())\n\t\t}\n\t\tif x.Syntax() == protoreflect.Proto3 {\n\t\t\tswitch x.ContainingMessage().FullName() {\n\t\t\tcase (*descriptorpb.FileOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.EnumOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.EnumValueOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.MessageOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.FieldOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.OneofOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.ExtensionRangeOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.ServiceOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tcase (*descriptorpb.MethodOptions)(nil).ProtoReflect().Descriptor().FullName():\n\t\t\tdefault:\n\t\t\t\treturn errors.New(\"extension field %q cannot be declared in proto3 unless extended descriptor options\", x.FullName())\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// isOptionalMessage reports whether this is an optional message.\n// If the kind is unknown, it is assumed to be a message.\nfunc isOptionalMessage(fd protoreflect.FieldDescriptor) bool {\n\treturn (fd.Kind() == 0 || fd.Kind() == protoreflect.MessageKind) && fd.Cardinality() == protoreflect.Optional\n}\n\n// isPackable checks whether the pack option can be specified.\nfunc isPackable(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.Kind() {\n\tcase protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind:\n\t\treturn false\n\t}\n\treturn fd.IsList()\n}\n\n// checkValidGroup reports whether fd is a valid group according to the same\n// rules that protoc imposes.\nfunc checkValidGroup(fd protoreflect.FieldDescriptor) error {\n\tmd := fd.Message()\n\tswitch {\n\tcase fd.Kind() != protoreflect.GroupKind:\n\t\treturn nil\n\tcase fd.Syntax() != protoreflect.Proto2:\n\t\treturn errors.New(\"invalid under proto2 semantics\")\n\tcase md == nil || md.IsPlaceholder():\n\t\treturn errors.New(\"message must be resolvable\")\n\tcase fd.FullName().Parent() != md.FullName().Parent():\n\t\treturn errors.New(\"message and field must be declared in the same scope\")\n\tcase !unicode.IsUpper(rune(md.Name()[0])):\n\t\treturn errors.New(\"message name must start with an uppercase\")\n\tcase fd.Name() != protoreflect.Name(strings.ToLower(string(md.Name()))):\n\t\treturn errors.New(\"field name must be lowercased form of the message name\")\n\t}\n\treturn nil\n}\n\n// checkValidMap checks whether the field is a valid map according to the same\n// rules that protoc imposes.\n// See protoc v3.8.0: src/google/protobuf/descriptor.cc:6045-6115\nfunc checkValidMap(fd protoreflect.FieldDescriptor) error {\n\tmd := fd.Message()\n\tswitch {\n\tcase md == nil || !md.IsMapEntry():\n\t\treturn nil\n\tcase fd.FullName().Parent() != md.FullName().Parent():\n\t\treturn errors.New(\"message and field must be declared in the same scope\")\n\tcase md.Name() != protoreflect.Name(strs.MapEntryName(string(fd.Name()))):\n\t\treturn errors.New(\"incorrect implicit map entry name\")\n\tcase fd.Cardinality() != protoreflect.Repeated:\n\t\treturn errors.New(\"field must be repeated\")\n\tcase md.Fields().Len() != 2:\n\t\treturn errors.New(\"message must have exactly two fields\")\n\tcase md.ExtensionRanges().Len() > 0:\n\t\treturn errors.New(\"message must not have any extension ranges\")\n\tcase md.Enums().Len()+md.Messages().Len()+md.Extensions().Len() > 0:\n\t\treturn errors.New(\"message must not have any nested declarations\")\n\t}\n\tkf := md.Fields().Get(0)\n\tvf := md.Fields().Get(1)\n\tswitch {\n\tcase kf.Name() != genid.MapEntry_Key_field_name || kf.Number() != genid.MapEntry_Key_field_number || kf.Cardinality() != protoreflect.Optional || kf.ContainingOneof() != nil || kf.HasDefault():\n\t\treturn errors.New(\"invalid key field\")\n\tcase vf.Name() != genid.MapEntry_Value_field_name || vf.Number() != genid.MapEntry_Value_field_number || vf.Cardinality() != protoreflect.Optional || vf.ContainingOneof() != nil || vf.HasDefault():\n\t\treturn errors.New(\"invalid value field\")\n\t}\n\tswitch kf.Kind() {\n\tcase protoreflect.BoolKind: // bool\n\tcase protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: // int32\n\tcase protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: // int64\n\tcase protoreflect.Uint32Kind, protoreflect.Fixed32Kind: // uint32\n\tcase protoreflect.Uint64Kind, protoreflect.Fixed64Kind: // uint64\n\tcase protoreflect.StringKind: // string\n\tdefault:\n\t\treturn errors.New(\"invalid key kind: %v\", kf.Kind())\n\t}\n\tif e := vf.Enum(); e != nil && e.Values().Len() > 0 && e.Values().Get(0).Number() != 0 {\n\t\treturn errors.New(\"map enum value must have zero number for the first value\")\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protodesc/proto.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protodesc\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/internal/encoding/defval\"\n\t\"google.golang.org/protobuf/internal/strs\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n\n\t\"google.golang.org/protobuf/types/descriptorpb\"\n)\n\n// ToFileDescriptorProto copies a protoreflect.FileDescriptor into a\n// google.protobuf.FileDescriptorProto message.\nfunc ToFileDescriptorProto(file protoreflect.FileDescriptor) *descriptorpb.FileDescriptorProto {\n\tp := &descriptorpb.FileDescriptorProto{\n\t\tName:    proto.String(file.Path()),\n\t\tOptions: proto.Clone(file.Options()).(*descriptorpb.FileOptions),\n\t}\n\tif file.Package() != \"\" {\n\t\tp.Package = proto.String(string(file.Package()))\n\t}\n\tfor i, imports := 0, file.Imports(); i < imports.Len(); i++ {\n\t\timp := imports.Get(i)\n\t\tp.Dependency = append(p.Dependency, imp.Path())\n\t\tif imp.IsPublic {\n\t\t\tp.PublicDependency = append(p.PublicDependency, int32(i))\n\t\t}\n\t\tif imp.IsWeak {\n\t\t\tp.WeakDependency = append(p.WeakDependency, int32(i))\n\t\t}\n\t}\n\tfor i, locs := 0, file.SourceLocations(); i < locs.Len(); i++ {\n\t\tloc := locs.Get(i)\n\t\tl := &descriptorpb.SourceCodeInfo_Location{}\n\t\tl.Path = append(l.Path, loc.Path...)\n\t\tif loc.StartLine == loc.EndLine {\n\t\t\tl.Span = []int32{int32(loc.StartLine), int32(loc.StartColumn), int32(loc.EndColumn)}\n\t\t} else {\n\t\t\tl.Span = []int32{int32(loc.StartLine), int32(loc.StartColumn), int32(loc.EndLine), int32(loc.EndColumn)}\n\t\t}\n\t\tl.LeadingDetachedComments = append([]string(nil), loc.LeadingDetachedComments...)\n\t\tif loc.LeadingComments != \"\" {\n\t\t\tl.LeadingComments = proto.String(loc.LeadingComments)\n\t\t}\n\t\tif loc.TrailingComments != \"\" {\n\t\t\tl.TrailingComments = proto.String(loc.TrailingComments)\n\t\t}\n\t\tif p.SourceCodeInfo == nil {\n\t\t\tp.SourceCodeInfo = &descriptorpb.SourceCodeInfo{}\n\t\t}\n\t\tp.SourceCodeInfo.Location = append(p.SourceCodeInfo.Location, l)\n\n\t}\n\tfor i, messages := 0, file.Messages(); i < messages.Len(); i++ {\n\t\tp.MessageType = append(p.MessageType, ToDescriptorProto(messages.Get(i)))\n\t}\n\tfor i, enums := 0, file.Enums(); i < enums.Len(); i++ {\n\t\tp.EnumType = append(p.EnumType, ToEnumDescriptorProto(enums.Get(i)))\n\t}\n\tfor i, services := 0, file.Services(); i < services.Len(); i++ {\n\t\tp.Service = append(p.Service, ToServiceDescriptorProto(services.Get(i)))\n\t}\n\tfor i, exts := 0, file.Extensions(); i < exts.Len(); i++ {\n\t\tp.Extension = append(p.Extension, ToFieldDescriptorProto(exts.Get(i)))\n\t}\n\tif syntax := file.Syntax(); syntax != protoreflect.Proto2 {\n\t\tp.Syntax = proto.String(file.Syntax().String())\n\t}\n\treturn p\n}\n\n// ToDescriptorProto copies a protoreflect.MessageDescriptor into a\n// google.protobuf.DescriptorProto message.\nfunc ToDescriptorProto(message protoreflect.MessageDescriptor) *descriptorpb.DescriptorProto {\n\tp := &descriptorpb.DescriptorProto{\n\t\tName:    proto.String(string(message.Name())),\n\t\tOptions: proto.Clone(message.Options()).(*descriptorpb.MessageOptions),\n\t}\n\tfor i, fields := 0, message.Fields(); i < fields.Len(); i++ {\n\t\tp.Field = append(p.Field, ToFieldDescriptorProto(fields.Get(i)))\n\t}\n\tfor i, exts := 0, message.Extensions(); i < exts.Len(); i++ {\n\t\tp.Extension = append(p.Extension, ToFieldDescriptorProto(exts.Get(i)))\n\t}\n\tfor i, messages := 0, message.Messages(); i < messages.Len(); i++ {\n\t\tp.NestedType = append(p.NestedType, ToDescriptorProto(messages.Get(i)))\n\t}\n\tfor i, enums := 0, message.Enums(); i < enums.Len(); i++ {\n\t\tp.EnumType = append(p.EnumType, ToEnumDescriptorProto(enums.Get(i)))\n\t}\n\tfor i, xranges := 0, message.ExtensionRanges(); i < xranges.Len(); i++ {\n\t\txrange := xranges.Get(i)\n\t\tp.ExtensionRange = append(p.ExtensionRange, &descriptorpb.DescriptorProto_ExtensionRange{\n\t\t\tStart:   proto.Int32(int32(xrange[0])),\n\t\t\tEnd:     proto.Int32(int32(xrange[1])),\n\t\t\tOptions: proto.Clone(message.ExtensionRangeOptions(i)).(*descriptorpb.ExtensionRangeOptions),\n\t\t})\n\t}\n\tfor i, oneofs := 0, message.Oneofs(); i < oneofs.Len(); i++ {\n\t\tp.OneofDecl = append(p.OneofDecl, ToOneofDescriptorProto(oneofs.Get(i)))\n\t}\n\tfor i, ranges := 0, message.ReservedRanges(); i < ranges.Len(); i++ {\n\t\trrange := ranges.Get(i)\n\t\tp.ReservedRange = append(p.ReservedRange, &descriptorpb.DescriptorProto_ReservedRange{\n\t\t\tStart: proto.Int32(int32(rrange[0])),\n\t\t\tEnd:   proto.Int32(int32(rrange[1])),\n\t\t})\n\t}\n\tfor i, names := 0, message.ReservedNames(); i < names.Len(); i++ {\n\t\tp.ReservedName = append(p.ReservedName, string(names.Get(i)))\n\t}\n\treturn p\n}\n\n// ToFieldDescriptorProto copies a protoreflect.FieldDescriptor into a\n// google.protobuf.FieldDescriptorProto message.\nfunc ToFieldDescriptorProto(field protoreflect.FieldDescriptor) *descriptorpb.FieldDescriptorProto {\n\tp := &descriptorpb.FieldDescriptorProto{\n\t\tName:    proto.String(string(field.Name())),\n\t\tNumber:  proto.Int32(int32(field.Number())),\n\t\tLabel:   descriptorpb.FieldDescriptorProto_Label(field.Cardinality()).Enum(),\n\t\tOptions: proto.Clone(field.Options()).(*descriptorpb.FieldOptions),\n\t}\n\tif field.IsExtension() {\n\t\tp.Extendee = fullNameOf(field.ContainingMessage())\n\t}\n\tif field.Kind().IsValid() {\n\t\tp.Type = descriptorpb.FieldDescriptorProto_Type(field.Kind()).Enum()\n\t}\n\tif field.Enum() != nil {\n\t\tp.TypeName = fullNameOf(field.Enum())\n\t}\n\tif field.Message() != nil {\n\t\tp.TypeName = fullNameOf(field.Message())\n\t}\n\tif field.HasJSONName() {\n\t\t// A bug in older versions of protoc would always populate the\n\t\t// \"json_name\" option for extensions when it is meaningless.\n\t\t// When it did so, it would always use the camel-cased field name.\n\t\tif field.IsExtension() {\n\t\t\tp.JsonName = proto.String(strs.JSONCamelCase(string(field.Name())))\n\t\t} else {\n\t\t\tp.JsonName = proto.String(field.JSONName())\n\t\t}\n\t}\n\tif field.Syntax() == protoreflect.Proto3 && field.HasOptionalKeyword() {\n\t\tp.Proto3Optional = proto.Bool(true)\n\t}\n\tif field.HasDefault() {\n\t\tdef, err := defval.Marshal(field.Default(), field.DefaultEnumValue(), field.Kind(), defval.Descriptor)\n\t\tif err != nil && field.DefaultEnumValue() != nil {\n\t\t\tdef = string(field.DefaultEnumValue().Name()) // occurs for unresolved enum values\n\t\t} else if err != nil {\n\t\t\tpanic(fmt.Sprintf(\"%v: %v\", field.FullName(), err))\n\t\t}\n\t\tp.DefaultValue = proto.String(def)\n\t}\n\tif oneof := field.ContainingOneof(); oneof != nil {\n\t\tp.OneofIndex = proto.Int32(int32(oneof.Index()))\n\t}\n\treturn p\n}\n\n// ToOneofDescriptorProto copies a protoreflect.OneofDescriptor into a\n// google.protobuf.OneofDescriptorProto message.\nfunc ToOneofDescriptorProto(oneof protoreflect.OneofDescriptor) *descriptorpb.OneofDescriptorProto {\n\treturn &descriptorpb.OneofDescriptorProto{\n\t\tName:    proto.String(string(oneof.Name())),\n\t\tOptions: proto.Clone(oneof.Options()).(*descriptorpb.OneofOptions),\n\t}\n}\n\n// ToEnumDescriptorProto copies a protoreflect.EnumDescriptor into a\n// google.protobuf.EnumDescriptorProto message.\nfunc ToEnumDescriptorProto(enum protoreflect.EnumDescriptor) *descriptorpb.EnumDescriptorProto {\n\tp := &descriptorpb.EnumDescriptorProto{\n\t\tName:    proto.String(string(enum.Name())),\n\t\tOptions: proto.Clone(enum.Options()).(*descriptorpb.EnumOptions),\n\t}\n\tfor i, values := 0, enum.Values(); i < values.Len(); i++ {\n\t\tp.Value = append(p.Value, ToEnumValueDescriptorProto(values.Get(i)))\n\t}\n\tfor i, ranges := 0, enum.ReservedRanges(); i < ranges.Len(); i++ {\n\t\trrange := ranges.Get(i)\n\t\tp.ReservedRange = append(p.ReservedRange, &descriptorpb.EnumDescriptorProto_EnumReservedRange{\n\t\t\tStart: proto.Int32(int32(rrange[0])),\n\t\t\tEnd:   proto.Int32(int32(rrange[1])),\n\t\t})\n\t}\n\tfor i, names := 0, enum.ReservedNames(); i < names.Len(); i++ {\n\t\tp.ReservedName = append(p.ReservedName, string(names.Get(i)))\n\t}\n\treturn p\n}\n\n// ToEnumValueDescriptorProto copies a protoreflect.EnumValueDescriptor into a\n// google.protobuf.EnumValueDescriptorProto message.\nfunc ToEnumValueDescriptorProto(value protoreflect.EnumValueDescriptor) *descriptorpb.EnumValueDescriptorProto {\n\treturn &descriptorpb.EnumValueDescriptorProto{\n\t\tName:    proto.String(string(value.Name())),\n\t\tNumber:  proto.Int32(int32(value.Number())),\n\t\tOptions: proto.Clone(value.Options()).(*descriptorpb.EnumValueOptions),\n\t}\n}\n\n// ToServiceDescriptorProto copies a protoreflect.ServiceDescriptor into a\n// google.protobuf.ServiceDescriptorProto message.\nfunc ToServiceDescriptorProto(service protoreflect.ServiceDescriptor) *descriptorpb.ServiceDescriptorProto {\n\tp := &descriptorpb.ServiceDescriptorProto{\n\t\tName:    proto.String(string(service.Name())),\n\t\tOptions: proto.Clone(service.Options()).(*descriptorpb.ServiceOptions),\n\t}\n\tfor i, methods := 0, service.Methods(); i < methods.Len(); i++ {\n\t\tp.Method = append(p.Method, ToMethodDescriptorProto(methods.Get(i)))\n\t}\n\treturn p\n}\n\n// ToMethodDescriptorProto copies a protoreflect.MethodDescriptor into a\n// google.protobuf.MethodDescriptorProto message.\nfunc ToMethodDescriptorProto(method protoreflect.MethodDescriptor) *descriptorpb.MethodDescriptorProto {\n\tp := &descriptorpb.MethodDescriptorProto{\n\t\tName:       proto.String(string(method.Name())),\n\t\tInputType:  fullNameOf(method.Input()),\n\t\tOutputType: fullNameOf(method.Output()),\n\t\tOptions:    proto.Clone(method.Options()).(*descriptorpb.MethodOptions),\n\t}\n\tif method.IsStreamingClient() {\n\t\tp.ClientStreaming = proto.Bool(true)\n\t}\n\tif method.IsStreamingServer() {\n\t\tp.ServerStreaming = proto.Bool(true)\n\t}\n\treturn p\n}\n\nfunc fullNameOf(d protoreflect.Descriptor) *string {\n\tif d == nil {\n\t\treturn nil\n\t}\n\tif strings.HasPrefix(string(d.FullName()), unknownPrefix) {\n\t\treturn proto.String(string(d.FullName()[len(unknownPrefix):]))\n\t}\n\treturn proto.String(\".\" + string(d.FullName()))\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"google.golang.org/protobuf/internal/pragma\"\n)\n\n// The following types are used by the fast-path Message.ProtoMethods method.\n//\n// To avoid polluting the public protoreflect API with types used only by\n// low-level implementations, the canonical definitions of these types are\n// in the runtime/protoiface package. The definitions here and in protoiface\n// must be kept in sync.\ntype (\n\tmethods = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tFlags            supportFlags\n\t\tSize             func(sizeInput) sizeOutput\n\t\tMarshal          func(marshalInput) (marshalOutput, error)\n\t\tUnmarshal        func(unmarshalInput) (unmarshalOutput, error)\n\t\tMerge            func(mergeInput) mergeOutput\n\t\tCheckInitialized func(checkInitializedInput) (checkInitializedOutput, error)\n\t}\n\tsupportFlags = uint64\n\tsizeInput    = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessage Message\n\t\tFlags   uint8\n\t}\n\tsizeOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tSize int\n\t}\n\tmarshalInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessage Message\n\t\tBuf     []byte\n\t\tFlags   uint8\n\t}\n\tmarshalOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tBuf []byte\n\t}\n\tunmarshalInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessage  Message\n\t\tBuf      []byte\n\t\tFlags    uint8\n\t\tResolver interface {\n\t\t\tFindExtensionByName(field FullName) (ExtensionType, error)\n\t\t\tFindExtensionByNumber(message FullName, field FieldNumber) (ExtensionType, error)\n\t\t}\n\t\tDepth int\n\t}\n\tunmarshalOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tFlags uint8\n\t}\n\tmergeInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tSource      Message\n\t\tDestination Message\n\t}\n\tmergeOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tFlags uint8\n\t}\n\tcheckInitializedInput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t\tMessage Message\n\t}\n\tcheckInitializedOutput = struct {\n\t\tpragma.NoUnkeyedLiterals\n\t}\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protoreflect provides interfaces to dynamically manipulate messages.\n//\n// This package includes type descriptors which describe the structure of types\n// defined in proto source files and value interfaces which provide the\n// ability to examine and manipulate the contents of messages.\n//\n// # Protocol Buffer Descriptors\n//\n// Protobuf descriptors (e.g., EnumDescriptor or MessageDescriptor)\n// are immutable objects that represent protobuf type information.\n// They are wrappers around the messages declared in descriptor.proto.\n// Protobuf descriptors alone lack any information regarding Go types.\n//\n// Enums and messages generated by this module implement Enum and ProtoMessage,\n// where the Descriptor and ProtoReflect.Descriptor accessors respectively\n// return the protobuf descriptor for the values.\n//\n// The protobuf descriptor interfaces are not meant to be implemented by\n// user code since they might need to be extended in the future to support\n// additions to the protobuf language.\n// The \"google.golang.org/protobuf/reflect/protodesc\" package converts between\n// google.protobuf.DescriptorProto messages and protobuf descriptors.\n//\n// # Go Type Descriptors\n//\n// A type descriptor (e.g., EnumType or MessageType) is a constructor for\n// a concrete Go type that represents the associated protobuf descriptor.\n// There is commonly a one-to-one relationship between protobuf descriptors and\n// Go type descriptors, but it can potentially be a one-to-many relationship.\n//\n// Enums and messages generated by this module implement Enum and ProtoMessage,\n// where the Type and ProtoReflect.Type accessors respectively\n// return the protobuf descriptor for the values.\n//\n// The \"google.golang.org/protobuf/types/dynamicpb\" package can be used to\n// create Go type descriptors from protobuf descriptors.\n//\n// # Value Interfaces\n//\n// The Enum and Message interfaces provide a reflective view over an\n// enum or message instance. For enums, it provides the ability to retrieve\n// the enum value number for any concrete enum type. For messages, it provides\n// the ability to access or manipulate fields of the message.\n//\n// To convert a proto.Message to a protoreflect.Message, use the\n// former's ProtoReflect method. Since the ProtoReflect method is new to the\n// v2 message interface, it may not be present on older message implementations.\n// The \"github.com/golang/protobuf/proto\".MessageReflect function can be used\n// to obtain a reflective view on older messages.\n//\n// # Relationships\n//\n// The following diagrams demonstrate the relationships between\n// various types declared in this package.\n//\n//\t                       ┌───────────────────────────────────┐\n//\t                       V                                   │\n//\t   ┌────────────── New(n) ─────────────┐                   │\n//\t   │                                   │                   │\n//\t   │      ┌──── Descriptor() ──┐       │  ┌── Number() ──┐ │\n//\t   │      │                    V       V  │              V │\n//\t╔════════════╗  ╔════════════════╗  ╔════════╗  ╔════════════╗\n//\t║  EnumType  ║  ║ EnumDescriptor ║  ║  Enum  ║  ║ EnumNumber ║\n//\t╚════════════╝  ╚════════════════╝  ╚════════╝  ╚════════════╝\n//\t      Λ           Λ                   │ │\n//\t      │           └─── Descriptor() ──┘ │\n//\t      │                                 │\n//\t      └────────────────── Type() ───────┘\n//\n// • An EnumType describes a concrete Go enum type.\n// It has an EnumDescriptor and can construct an Enum instance.\n//\n// • An EnumDescriptor describes an abstract protobuf enum type.\n//\n// • An Enum is a concrete enum instance. Generated enums implement Enum.\n//\n//\t  ┌──────────────── New() ─────────────────┐\n//\t  │                                        │\n//\t  │         ┌─── Descriptor() ─────┐       │   ┌── Interface() ───┐\n//\t  │         │                      V       V   │                  V\n//\t╔═════════════╗  ╔═══════════════════╗  ╔═════════╗  ╔══════════════╗\n//\t║ MessageType ║  ║ MessageDescriptor ║  ║ Message ║  ║ ProtoMessage ║\n//\t╚═════════════╝  ╚═══════════════════╝  ╚═════════╝  ╚══════════════╝\n//\t       Λ           Λ                      │ │  Λ                  │\n//\t       │           └──── Descriptor() ────┘ │  └─ ProtoReflect() ─┘\n//\t       │                                    │\n//\t       └─────────────────── Type() ─────────┘\n//\n// • A MessageType describes a concrete Go message type.\n// It has a MessageDescriptor and can construct a Message instance.\n// Just as how Go's reflect.Type is a reflective description of a Go type,\n// a MessageType is a reflective description of a Go type for a protobuf message.\n//\n// • A MessageDescriptor describes an abstract protobuf message type.\n// It has no understanding of Go types. In order to construct a MessageType\n// from just a MessageDescriptor, you can consider looking up the message type\n// in the global registry using protoregistry.GlobalTypes.FindMessageByName\n// or constructing a dynamic MessageType using dynamicpb.NewMessageType.\n//\n// • A Message is a reflective view over a concrete message instance.\n// Generated messages implement ProtoMessage, which can convert to a Message.\n// Just as how Go's reflect.Value is a reflective view over a Go value,\n// a Message is a reflective view over a concrete protobuf message instance.\n// Using Go reflection as an analogy, the ProtoReflect method is similar to\n// calling reflect.ValueOf, and the Message.Interface method is similar to\n// calling reflect.Value.Interface.\n//\n//\t      ┌── TypeDescriptor() ──┐    ┌───── Descriptor() ─────┐\n//\t      │                      V    │                        V\n//\t╔═══════════════╗  ╔═════════════════════════╗  ╔═════════════════════╗\n//\t║ ExtensionType ║  ║ ExtensionTypeDescriptor ║  ║ ExtensionDescriptor ║\n//\t╚═══════════════╝  ╚═════════════════════════╝  ╚═════════════════════╝\n//\t      Λ                      │   │ Λ                      │ Λ\n//\t      └─────── Type() ───────┘   │ └─── may implement ────┘ │\n//\t                                 │                          │\n//\t                                 └────── implements ────────┘\n//\n// • An ExtensionType describes a concrete Go implementation of an extension.\n// It has an ExtensionTypeDescriptor and can convert to/from\n// abstract Values and Go values.\n//\n// • An ExtensionTypeDescriptor is an ExtensionDescriptor\n// which also has an ExtensionType.\n//\n// • An ExtensionDescriptor describes an abstract protobuf extension field and\n// may not always be an ExtensionTypeDescriptor.\npackage protoreflect\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n\t\"google.golang.org/protobuf/internal/pragma\"\n)\n\ntype doNotImplement pragma.DoNotImplement\n\n// ProtoMessage is the top-level interface that all proto messages implement.\n// This is declared in the protoreflect package to avoid a cyclic dependency;\n// use the proto.Message type instead, which aliases this type.\ntype ProtoMessage interface{ ProtoReflect() Message }\n\n// Syntax is the language version of the proto file.\ntype Syntax syntax\n\ntype syntax int8 // keep exact type opaque as the int type may change\n\nconst (\n\tProto2 Syntax = 2\n\tProto3 Syntax = 3\n)\n\n// IsValid reports whether the syntax is valid.\nfunc (s Syntax) IsValid() bool {\n\tswitch s {\n\tcase Proto2, Proto3:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// String returns s as a proto source identifier (e.g., \"proto2\").\nfunc (s Syntax) String() string {\n\tswitch s {\n\tcase Proto2:\n\t\treturn \"proto2\"\n\tcase Proto3:\n\t\treturn \"proto3\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<unknown:%d>\", s)\n\t}\n}\n\n// GoString returns s as a Go source identifier (e.g., \"Proto2\").\nfunc (s Syntax) GoString() string {\n\tswitch s {\n\tcase Proto2:\n\t\treturn \"Proto2\"\n\tcase Proto3:\n\t\treturn \"Proto3\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"Syntax(%d)\", s)\n\t}\n}\n\n// Cardinality determines whether a field is optional, required, or repeated.\ntype Cardinality cardinality\n\ntype cardinality int8 // keep exact type opaque as the int type may change\n\n// Constants as defined by the google.protobuf.Cardinality enumeration.\nconst (\n\tOptional Cardinality = 1 // appears zero or one times\n\tRequired Cardinality = 2 // appears exactly one time; invalid with Proto3\n\tRepeated Cardinality = 3 // appears zero or more times\n)\n\n// IsValid reports whether the cardinality is valid.\nfunc (c Cardinality) IsValid() bool {\n\tswitch c {\n\tcase Optional, Required, Repeated:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// String returns c as a proto source identifier (e.g., \"optional\").\nfunc (c Cardinality) String() string {\n\tswitch c {\n\tcase Optional:\n\t\treturn \"optional\"\n\tcase Required:\n\t\treturn \"required\"\n\tcase Repeated:\n\t\treturn \"repeated\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<unknown:%d>\", c)\n\t}\n}\n\n// GoString returns c as a Go source identifier (e.g., \"Optional\").\nfunc (c Cardinality) GoString() string {\n\tswitch c {\n\tcase Optional:\n\t\treturn \"Optional\"\n\tcase Required:\n\t\treturn \"Required\"\n\tcase Repeated:\n\t\treturn \"Repeated\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"Cardinality(%d)\", c)\n\t}\n}\n\n// Kind indicates the basic proto kind of a field.\ntype Kind kind\n\ntype kind int8 // keep exact type opaque as the int type may change\n\n// Constants as defined by the google.protobuf.Field.Kind enumeration.\nconst (\n\tBoolKind     Kind = 8\n\tEnumKind     Kind = 14\n\tInt32Kind    Kind = 5\n\tSint32Kind   Kind = 17\n\tUint32Kind   Kind = 13\n\tInt64Kind    Kind = 3\n\tSint64Kind   Kind = 18\n\tUint64Kind   Kind = 4\n\tSfixed32Kind Kind = 15\n\tFixed32Kind  Kind = 7\n\tFloatKind    Kind = 2\n\tSfixed64Kind Kind = 16\n\tFixed64Kind  Kind = 6\n\tDoubleKind   Kind = 1\n\tStringKind   Kind = 9\n\tBytesKind    Kind = 12\n\tMessageKind  Kind = 11\n\tGroupKind    Kind = 10\n)\n\n// IsValid reports whether the kind is valid.\nfunc (k Kind) IsValid() bool {\n\tswitch k {\n\tcase BoolKind, EnumKind,\n\t\tInt32Kind, Sint32Kind, Uint32Kind,\n\t\tInt64Kind, Sint64Kind, Uint64Kind,\n\t\tSfixed32Kind, Fixed32Kind, FloatKind,\n\t\tSfixed64Kind, Fixed64Kind, DoubleKind,\n\t\tStringKind, BytesKind, MessageKind, GroupKind:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// String returns k as a proto source identifier (e.g., \"bool\").\nfunc (k Kind) String() string {\n\tswitch k {\n\tcase BoolKind:\n\t\treturn \"bool\"\n\tcase EnumKind:\n\t\treturn \"enum\"\n\tcase Int32Kind:\n\t\treturn \"int32\"\n\tcase Sint32Kind:\n\t\treturn \"sint32\"\n\tcase Uint32Kind:\n\t\treturn \"uint32\"\n\tcase Int64Kind:\n\t\treturn \"int64\"\n\tcase Sint64Kind:\n\t\treturn \"sint64\"\n\tcase Uint64Kind:\n\t\treturn \"uint64\"\n\tcase Sfixed32Kind:\n\t\treturn \"sfixed32\"\n\tcase Fixed32Kind:\n\t\treturn \"fixed32\"\n\tcase FloatKind:\n\t\treturn \"float\"\n\tcase Sfixed64Kind:\n\t\treturn \"sfixed64\"\n\tcase Fixed64Kind:\n\t\treturn \"fixed64\"\n\tcase DoubleKind:\n\t\treturn \"double\"\n\tcase StringKind:\n\t\treturn \"string\"\n\tcase BytesKind:\n\t\treturn \"bytes\"\n\tcase MessageKind:\n\t\treturn \"message\"\n\tcase GroupKind:\n\t\treturn \"group\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"<unknown:%d>\", k)\n\t}\n}\n\n// GoString returns k as a Go source identifier (e.g., \"BoolKind\").\nfunc (k Kind) GoString() string {\n\tswitch k {\n\tcase BoolKind:\n\t\treturn \"BoolKind\"\n\tcase EnumKind:\n\t\treturn \"EnumKind\"\n\tcase Int32Kind:\n\t\treturn \"Int32Kind\"\n\tcase Sint32Kind:\n\t\treturn \"Sint32Kind\"\n\tcase Uint32Kind:\n\t\treturn \"Uint32Kind\"\n\tcase Int64Kind:\n\t\treturn \"Int64Kind\"\n\tcase Sint64Kind:\n\t\treturn \"Sint64Kind\"\n\tcase Uint64Kind:\n\t\treturn \"Uint64Kind\"\n\tcase Sfixed32Kind:\n\t\treturn \"Sfixed32Kind\"\n\tcase Fixed32Kind:\n\t\treturn \"Fixed32Kind\"\n\tcase FloatKind:\n\t\treturn \"FloatKind\"\n\tcase Sfixed64Kind:\n\t\treturn \"Sfixed64Kind\"\n\tcase Fixed64Kind:\n\t\treturn \"Fixed64Kind\"\n\tcase DoubleKind:\n\t\treturn \"DoubleKind\"\n\tcase StringKind:\n\t\treturn \"StringKind\"\n\tcase BytesKind:\n\t\treturn \"BytesKind\"\n\tcase MessageKind:\n\t\treturn \"MessageKind\"\n\tcase GroupKind:\n\t\treturn \"GroupKind\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"Kind(%d)\", k)\n\t}\n}\n\n// FieldNumber is the field number in a message.\ntype FieldNumber = protowire.Number\n\n// FieldNumbers represent a list of field numbers.\ntype FieldNumbers interface {\n\t// Len reports the number of fields in the list.\n\tLen() int\n\t// Get returns the ith field number. It panics if out of bounds.\n\tGet(i int) FieldNumber\n\t// Has reports whether n is within the list of fields.\n\tHas(n FieldNumber) bool\n\n\tdoNotImplement\n}\n\n// FieldRanges represent a list of field number ranges.\ntype FieldRanges interface {\n\t// Len reports the number of ranges in the list.\n\tLen() int\n\t// Get returns the ith range. It panics if out of bounds.\n\tGet(i int) [2]FieldNumber // start inclusive; end exclusive\n\t// Has reports whether n is within any of the ranges.\n\tHas(n FieldNumber) bool\n\n\tdoNotImplement\n}\n\n// EnumNumber is the numeric value for an enum.\ntype EnumNumber int32\n\n// EnumRanges represent a list of enum number ranges.\ntype EnumRanges interface {\n\t// Len reports the number of ranges in the list.\n\tLen() int\n\t// Get returns the ith range. It panics if out of bounds.\n\tGet(i int) [2]EnumNumber // start inclusive; end inclusive\n\t// Has reports whether n is within any of the ranges.\n\tHas(n EnumNumber) bool\n\n\tdoNotImplement\n}\n\n// Name is the short name for a proto declaration. This is not the name\n// as used in Go source code, which might not be identical to the proto name.\ntype Name string // e.g., \"Kind\"\n\n// IsValid reports whether s is a syntactically valid name.\n// An empty name is invalid.\nfunc (s Name) IsValid() bool {\n\treturn consumeIdent(string(s)) == len(s)\n}\n\n// Names represent a list of names.\ntype Names interface {\n\t// Len reports the number of names in the list.\n\tLen() int\n\t// Get returns the ith name. It panics if out of bounds.\n\tGet(i int) Name\n\t// Has reports whether s matches any names in the list.\n\tHas(s Name) bool\n\n\tdoNotImplement\n}\n\n// FullName is a qualified name that uniquely identifies a proto declaration.\n// A qualified name is the concatenation of the proto package along with the\n// fully-declared name (i.e., name of parent preceding the name of the child),\n// with a '.' delimiter placed between each Name.\n//\n// This should not have any leading or trailing dots.\ntype FullName string // e.g., \"google.protobuf.Field.Kind\"\n\n// IsValid reports whether s is a syntactically valid full name.\n// An empty full name is invalid.\nfunc (s FullName) IsValid() bool {\n\ti := consumeIdent(string(s))\n\tif i < 0 {\n\t\treturn false\n\t}\n\tfor len(s) > i {\n\t\tif s[i] != '.' {\n\t\t\treturn false\n\t\t}\n\t\ti++\n\t\tn := consumeIdent(string(s[i:]))\n\t\tif n < 0 {\n\t\t\treturn false\n\t\t}\n\t\ti += n\n\t}\n\treturn true\n}\n\nfunc consumeIdent(s string) (i int) {\n\tif len(s) == 0 || !isLetter(s[i]) {\n\t\treturn -1\n\t}\n\ti++\n\tfor len(s) > i && isLetterDigit(s[i]) {\n\t\ti++\n\t}\n\treturn i\n}\nfunc isLetter(c byte) bool {\n\treturn c == '_' || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')\n}\nfunc isLetterDigit(c byte) bool {\n\treturn isLetter(c) || ('0' <= c && c <= '9')\n}\n\n// Name returns the short name, which is the last identifier segment.\n// A single segment FullName is the Name itself.\nfunc (n FullName) Name() Name {\n\tif i := strings.LastIndexByte(string(n), '.'); i >= 0 {\n\t\treturn Name(n[i+1:])\n\t}\n\treturn Name(n)\n}\n\n// Parent returns the full name with the trailing identifier removed.\n// A single segment FullName has no parent.\nfunc (n FullName) Parent() FullName {\n\tif i := strings.LastIndexByte(string(n), '.'); i >= 0 {\n\t\treturn n[:i]\n\t}\n\treturn \"\"\n}\n\n// Append returns the qualified name appended with the provided short name.\n//\n// Invariant: n == n.Parent().Append(n.Name()) // assuming n is valid\nfunc (n FullName) Append(s Name) FullName {\n\tif n == \"\" {\n\t\treturn FullName(s)\n\t}\n\treturn n + \".\" + FullName(s)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/source.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"strconv\"\n)\n\n// SourceLocations is a list of source locations.\ntype SourceLocations interface {\n\t// Len reports the number of source locations in the proto file.\n\tLen() int\n\t// Get returns the ith SourceLocation. It panics if out of bounds.\n\tGet(int) SourceLocation\n\n\t// ByPath returns the SourceLocation for the given path,\n\t// returning the first location if multiple exist for the same path.\n\t// If multiple locations exist for the same path,\n\t// then SourceLocation.Next index can be used to identify the\n\t// index of the next SourceLocation.\n\t// If no location exists for this path, it returns the zero value.\n\tByPath(path SourcePath) SourceLocation\n\n\t// ByDescriptor returns the SourceLocation for the given descriptor,\n\t// returning the first location if multiple exist for the same path.\n\t// If no location exists for this descriptor, it returns the zero value.\n\tByDescriptor(desc Descriptor) SourceLocation\n\n\tdoNotImplement\n}\n\n// SourceLocation describes a source location and\n// corresponds with the google.protobuf.SourceCodeInfo.Location message.\ntype SourceLocation struct {\n\t// Path is the path to the declaration from the root file descriptor.\n\t// The contents of this slice must not be mutated.\n\tPath SourcePath\n\n\t// StartLine and StartColumn are the zero-indexed starting location\n\t// in the source file for the declaration.\n\tStartLine, StartColumn int\n\t// EndLine and EndColumn are the zero-indexed ending location\n\t// in the source file for the declaration.\n\t// In the descriptor.proto, the end line may be omitted if it is identical\n\t// to the start line. Here, it is always populated.\n\tEndLine, EndColumn int\n\n\t// LeadingDetachedComments are the leading detached comments\n\t// for the declaration. The contents of this slice must not be mutated.\n\tLeadingDetachedComments []string\n\t// LeadingComments is the leading attached comment for the declaration.\n\tLeadingComments string\n\t// TrailingComments is the trailing attached comment for the declaration.\n\tTrailingComments string\n\n\t// Next is an index into SourceLocations for the next source location that\n\t// has the same Path. It is zero if there is no next location.\n\tNext int\n}\n\n// SourcePath identifies part of a file descriptor for a source location.\n// The SourcePath is a sequence of either field numbers or indexes into\n// a repeated field that form a path starting from the root file descriptor.\n//\n// See google.protobuf.SourceCodeInfo.Location.path.\ntype SourcePath []int32\n\n// Equal reports whether p1 equals p2.\nfunc (p1 SourcePath) Equal(p2 SourcePath) bool {\n\tif len(p1) != len(p2) {\n\t\treturn false\n\t}\n\tfor i := range p1 {\n\t\tif p1[i] != p2[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// String formats the path in a humanly readable manner.\n// The output is guaranteed to be deterministic,\n// making it suitable for use as a key into a Go map.\n// It is not guaranteed to be stable as the exact output could change\n// in a future version of this module.\n//\n// Example output:\n//\n//\t.message_type[6].nested_type[15].field[3]\nfunc (p SourcePath) String() string {\n\tb := p.appendFileDescriptorProto(nil)\n\tfor _, i := range p {\n\t\tb = append(b, '.')\n\t\tb = strconv.AppendInt(b, int64(i), 10)\n\t}\n\treturn string(b)\n}\n\ntype appendFunc func(*SourcePath, []byte) []byte\n\nfunc (p *SourcePath) appendSingularField(b []byte, name string, f appendFunc) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tb = append(b, '.')\n\tb = append(b, name...)\n\t*p = (*p)[1:]\n\tif f != nil {\n\t\tb = f(p, b)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendRepeatedField(b []byte, name string, f appendFunc) []byte {\n\tb = p.appendSingularField(b, name, nil)\n\tif len(*p) == 0 || (*p)[0] < 0 {\n\t\treturn b\n\t}\n\tb = append(b, '[')\n\tb = strconv.AppendUint(b, uint64((*p)[0]), 10)\n\tb = append(b, ']')\n\t*p = (*p)[1:]\n\tif f != nil {\n\t\tb = f(p, b)\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Code generated by generate-protos. DO NOT EDIT.\n\npackage protoreflect\n\nfunc (p *SourcePath) appendFileDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"package\", nil)\n\tcase 3:\n\t\tb = p.appendRepeatedField(b, \"dependency\", nil)\n\tcase 10:\n\t\tb = p.appendRepeatedField(b, \"public_dependency\", nil)\n\tcase 11:\n\t\tb = p.appendRepeatedField(b, \"weak_dependency\", nil)\n\tcase 4:\n\t\tb = p.appendRepeatedField(b, \"message_type\", (*SourcePath).appendDescriptorProto)\n\tcase 5:\n\t\tb = p.appendRepeatedField(b, \"enum_type\", (*SourcePath).appendEnumDescriptorProto)\n\tcase 6:\n\t\tb = p.appendRepeatedField(b, \"service\", (*SourcePath).appendServiceDescriptorProto)\n\tcase 7:\n\t\tb = p.appendRepeatedField(b, \"extension\", (*SourcePath).appendFieldDescriptorProto)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendFileOptions)\n\tcase 9:\n\t\tb = p.appendSingularField(b, \"source_code_info\", (*SourcePath).appendSourceCodeInfo)\n\tcase 12:\n\t\tb = p.appendSingularField(b, \"syntax\", nil)\n\tcase 13:\n\t\tb = p.appendSingularField(b, \"edition\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"field\", (*SourcePath).appendFieldDescriptorProto)\n\tcase 6:\n\t\tb = p.appendRepeatedField(b, \"extension\", (*SourcePath).appendFieldDescriptorProto)\n\tcase 3:\n\t\tb = p.appendRepeatedField(b, \"nested_type\", (*SourcePath).appendDescriptorProto)\n\tcase 4:\n\t\tb = p.appendRepeatedField(b, \"enum_type\", (*SourcePath).appendEnumDescriptorProto)\n\tcase 5:\n\t\tb = p.appendRepeatedField(b, \"extension_range\", (*SourcePath).appendDescriptorProto_ExtensionRange)\n\tcase 8:\n\t\tb = p.appendRepeatedField(b, \"oneof_decl\", (*SourcePath).appendOneofDescriptorProto)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendMessageOptions)\n\tcase 9:\n\t\tb = p.appendRepeatedField(b, \"reserved_range\", (*SourcePath).appendDescriptorProto_ReservedRange)\n\tcase 10:\n\t\tb = p.appendRepeatedField(b, \"reserved_name\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"value\", (*SourcePath).appendEnumValueDescriptorProto)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendEnumOptions)\n\tcase 4:\n\t\tb = p.appendRepeatedField(b, \"reserved_range\", (*SourcePath).appendEnumDescriptorProto_EnumReservedRange)\n\tcase 5:\n\t\tb = p.appendRepeatedField(b, \"reserved_name\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendServiceDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"method\", (*SourcePath).appendMethodDescriptorProto)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendServiceOptions)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFieldDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"number\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"label\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"type\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"type_name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"extendee\", nil)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"default_value\", nil)\n\tcase 9:\n\t\tb = p.appendSingularField(b, \"oneof_index\", nil)\n\tcase 10:\n\t\tb = p.appendSingularField(b, \"json_name\", nil)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendFieldOptions)\n\tcase 17:\n\t\tb = p.appendSingularField(b, \"proto3_optional\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFileOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"java_package\", nil)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"java_outer_classname\", nil)\n\tcase 10:\n\t\tb = p.appendSingularField(b, \"java_multiple_files\", nil)\n\tcase 20:\n\t\tb = p.appendSingularField(b, \"java_generate_equals_and_hash\", nil)\n\tcase 27:\n\t\tb = p.appendSingularField(b, \"java_string_check_utf8\", nil)\n\tcase 9:\n\t\tb = p.appendSingularField(b, \"optimize_for\", nil)\n\tcase 11:\n\t\tb = p.appendSingularField(b, \"go_package\", nil)\n\tcase 16:\n\t\tb = p.appendSingularField(b, \"cc_generic_services\", nil)\n\tcase 17:\n\t\tb = p.appendSingularField(b, \"java_generic_services\", nil)\n\tcase 18:\n\t\tb = p.appendSingularField(b, \"py_generic_services\", nil)\n\tcase 42:\n\t\tb = p.appendSingularField(b, \"php_generic_services\", nil)\n\tcase 23:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 31:\n\t\tb = p.appendSingularField(b, \"cc_enable_arenas\", nil)\n\tcase 36:\n\t\tb = p.appendSingularField(b, \"objc_class_prefix\", nil)\n\tcase 37:\n\t\tb = p.appendSingularField(b, \"csharp_namespace\", nil)\n\tcase 39:\n\t\tb = p.appendSingularField(b, \"swift_prefix\", nil)\n\tcase 40:\n\t\tb = p.appendSingularField(b, \"php_class_prefix\", nil)\n\tcase 41:\n\t\tb = p.appendSingularField(b, \"php_namespace\", nil)\n\tcase 44:\n\t\tb = p.appendSingularField(b, \"php_metadata_namespace\", nil)\n\tcase 45:\n\t\tb = p.appendSingularField(b, \"ruby_package\", nil)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendSourceCodeInfo(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendRepeatedField(b, \"location\", (*SourcePath).appendSourceCodeInfo_Location)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendDescriptorProto_ExtensionRange(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"start\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"end\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendExtensionRangeOptions)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendOneofDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendOneofOptions)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendMessageOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"message_set_wire_format\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"no_standard_descriptor_accessor\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"map_entry\", nil)\n\tcase 11:\n\t\tb = p.appendSingularField(b, \"deprecated_legacy_json_field_conflicts\", nil)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendDescriptorProto_ReservedRange(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"start\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"end\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumValueDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"number\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendEnumValueOptions)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"allow_alias\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"deprecated_legacy_json_field_conflicts\", nil)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumDescriptorProto_EnumReservedRange(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"start\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"end\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendMethodDescriptorProto(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"input_type\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"output_type\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"options\", (*SourcePath).appendMethodOptions)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"client_streaming\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"server_streaming\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendServiceOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 33:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendFieldOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"ctype\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"packed\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"jstype\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"lazy\", nil)\n\tcase 15:\n\t\tb = p.appendSingularField(b, \"unverified_lazy\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 10:\n\t\tb = p.appendSingularField(b, \"weak\", nil)\n\tcase 16:\n\t\tb = p.appendSingularField(b, \"debug_redact\", nil)\n\tcase 17:\n\t\tb = p.appendSingularField(b, \"retention\", nil)\n\tcase 18:\n\t\tb = p.appendSingularField(b, \"target\", nil)\n\tcase 19:\n\t\tb = p.appendRepeatedField(b, \"targets\", nil)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendUninterpretedOption(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"name\", (*SourcePath).appendUninterpretedOption_NamePart)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"identifier_value\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"positive_int_value\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"negative_int_value\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"double_value\", nil)\n\tcase 7:\n\t\tb = p.appendSingularField(b, \"string_value\", nil)\n\tcase 8:\n\t\tb = p.appendSingularField(b, \"aggregate_value\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendSourceCodeInfo_Location(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendRepeatedField(b, \"path\", nil)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"span\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"leading_comments\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"trailing_comments\", nil)\n\tcase 6:\n\t\tb = p.appendRepeatedField(b, \"leading_detached_comments\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendExtensionRangeOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\tcase 2:\n\t\tb = p.appendRepeatedField(b, \"declaration\", (*SourcePath).appendExtensionRangeOptions_Declaration)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"verification\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendOneofOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendEnumValueOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendMethodOptions(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 33:\n\t\tb = p.appendSingularField(b, \"deprecated\", nil)\n\tcase 34:\n\t\tb = p.appendSingularField(b, \"idempotency_level\", nil)\n\tcase 999:\n\t\tb = p.appendRepeatedField(b, \"uninterpreted_option\", (*SourcePath).appendUninterpretedOption)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendUninterpretedOption_NamePart(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"name_part\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"is_extension\", nil)\n\t}\n\treturn b\n}\n\nfunc (p *SourcePath) appendExtensionRangeOptions_Declaration(b []byte) []byte {\n\tif len(*p) == 0 {\n\t\treturn b\n\t}\n\tswitch (*p)[0] {\n\tcase 1:\n\t\tb = p.appendSingularField(b, \"number\", nil)\n\tcase 2:\n\t\tb = p.appendSingularField(b, \"full_name\", nil)\n\tcase 3:\n\t\tb = p.appendSingularField(b, \"type\", nil)\n\tcase 4:\n\t\tb = p.appendSingularField(b, \"is_repeated\", nil)\n\tcase 5:\n\t\tb = p.appendSingularField(b, \"reserved\", nil)\n\tcase 6:\n\t\tb = p.appendSingularField(b, \"repeated\", nil)\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/type.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\n// Descriptor provides a set of accessors that are common to every descriptor.\n// Each descriptor type wraps the equivalent google.protobuf.XXXDescriptorProto,\n// but provides efficient lookup and immutability.\n//\n// Each descriptor is comparable. Equality implies that the two types are\n// exactly identical. However, it is possible for the same semantically\n// identical proto type to be represented by multiple type descriptors.\n//\n// For example, suppose we have t1 and t2 which are both MessageDescriptors.\n// If t1 == t2, then the types are definitely equal and all accessors return\n// the same information. However, if t1 != t2, then it is still possible that\n// they still represent the same proto type (e.g., t1.FullName == t2.FullName).\n// This can occur if a descriptor type is created dynamically, or multiple\n// versions of the same proto type are accidentally linked into the Go binary.\ntype Descriptor interface {\n\t// ParentFile returns the parent file descriptor that this descriptor\n\t// is declared within. The parent file for the file descriptor is itself.\n\t//\n\t// Support for this functionality is optional and may return nil.\n\tParentFile() FileDescriptor\n\n\t// Parent returns the parent containing this descriptor declaration.\n\t// The following shows the mapping from child type to possible parent types:\n\t//\n\t//\t╔═════════════════════╤═══════════════════════════════════╗\n\t//\t║ Child type          │ Possible parent types             ║\n\t//\t╠═════════════════════╪═══════════════════════════════════╣\n\t//\t║ FileDescriptor      │ nil                               ║\n\t//\t║ MessageDescriptor   │ FileDescriptor, MessageDescriptor ║\n\t//\t║ FieldDescriptor     │ FileDescriptor, MessageDescriptor ║\n\t//\t║ OneofDescriptor     │ MessageDescriptor                 ║\n\t//\t║ EnumDescriptor      │ FileDescriptor, MessageDescriptor ║\n\t//\t║ EnumValueDescriptor │ EnumDescriptor                    ║\n\t//\t║ ServiceDescriptor   │ FileDescriptor                    ║\n\t//\t║ MethodDescriptor    │ ServiceDescriptor                 ║\n\t//\t╚═════════════════════╧═══════════════════════════════════╝\n\t//\n\t// Support for this functionality is optional and may return nil.\n\tParent() Descriptor\n\n\t// Index returns the index of this descriptor within its parent.\n\t// It returns 0 if the descriptor does not have a parent or if the parent\n\t// is unknown.\n\tIndex() int\n\n\t// Syntax is the protobuf syntax.\n\tSyntax() Syntax // e.g., Proto2 or Proto3\n\n\t// Name is the short name of the declaration (i.e., FullName.Name).\n\tName() Name // e.g., \"Any\"\n\n\t// FullName is the fully-qualified name of the declaration.\n\t//\n\t// The FullName is a concatenation of the full name of the type that this\n\t// type is declared within and the declaration name. For example,\n\t// field \"foo_field\" in message \"proto.package.MyMessage\" is\n\t// uniquely identified as \"proto.package.MyMessage.foo_field\".\n\t// Enum values are an exception to the rule (see EnumValueDescriptor).\n\tFullName() FullName // e.g., \"google.protobuf.Any\"\n\n\t// IsPlaceholder reports whether type information is missing since a\n\t// dependency is not resolved, in which case only name information is known.\n\t//\n\t// Placeholder types may only be returned by the following accessors\n\t// as a result of unresolved dependencies or weak imports:\n\t//\n\t//\t╔═══════════════════════════════════╤═════════════════════╗\n\t//\t║ Accessor                          │ Descriptor          ║\n\t//\t╠═══════════════════════════════════╪═════════════════════╣\n\t//\t║ FileImports.FileDescriptor        │ FileDescriptor      ║\n\t//\t║ FieldDescriptor.Enum              │ EnumDescriptor      ║\n\t//\t║ FieldDescriptor.Message           │ MessageDescriptor   ║\n\t//\t║ FieldDescriptor.DefaultEnumValue  │ EnumValueDescriptor ║\n\t//\t║ FieldDescriptor.ContainingMessage │ MessageDescriptor   ║\n\t//\t║ MethodDescriptor.Input            │ MessageDescriptor   ║\n\t//\t║ MethodDescriptor.Output           │ MessageDescriptor   ║\n\t//\t╚═══════════════════════════════════╧═════════════════════╝\n\t//\n\t// If true, only Name and FullName are valid.\n\t// For FileDescriptor, the Path is also valid.\n\tIsPlaceholder() bool\n\n\t// Options returns the descriptor options. The caller must not modify\n\t// the returned value.\n\t//\n\t// To avoid a dependency cycle, this function returns a proto.Message value.\n\t// The proto message type returned for each descriptor type is as follows:\n\t//\t╔═════════════════════╤══════════════════════════════════════════╗\n\t//\t║ Go type             │ Protobuf message type                    ║\n\t//\t╠═════════════════════╪══════════════════════════════════════════╣\n\t//\t║ FileDescriptor      │ google.protobuf.FileOptions              ║\n\t//\t║ EnumDescriptor      │ google.protobuf.EnumOptions              ║\n\t//\t║ EnumValueDescriptor │ google.protobuf.EnumValueOptions         ║\n\t//\t║ MessageDescriptor   │ google.protobuf.MessageOptions           ║\n\t//\t║ FieldDescriptor     │ google.protobuf.FieldOptions             ║\n\t//\t║ OneofDescriptor     │ google.protobuf.OneofOptions             ║\n\t//\t║ ServiceDescriptor   │ google.protobuf.ServiceOptions           ║\n\t//\t║ MethodDescriptor    │ google.protobuf.MethodOptions            ║\n\t//\t╚═════════════════════╧══════════════════════════════════════════╝\n\t//\n\t// This method returns a typed nil-pointer if no options are present.\n\t// The caller must import the descriptorpb package to use this.\n\tOptions() ProtoMessage\n\n\tdoNotImplement\n}\n\n// FileDescriptor describes the types in a complete proto file and\n// corresponds with the google.protobuf.FileDescriptorProto message.\n//\n// Top-level declarations:\n// EnumDescriptor, MessageDescriptor, FieldDescriptor, and/or ServiceDescriptor.\ntype FileDescriptor interface {\n\tDescriptor // Descriptor.FullName is identical to Package\n\n\t// Path returns the file name, relative to the source tree root.\n\tPath() string // e.g., \"path/to/file.proto\"\n\t// Package returns the protobuf package namespace.\n\tPackage() FullName // e.g., \"google.protobuf\"\n\n\t// Imports is a list of imported proto files.\n\tImports() FileImports\n\n\t// Enums is a list of the top-level enum declarations.\n\tEnums() EnumDescriptors\n\t// Messages is a list of the top-level message declarations.\n\tMessages() MessageDescriptors\n\t// Extensions is a list of the top-level extension declarations.\n\tExtensions() ExtensionDescriptors\n\t// Services is a list of the top-level service declarations.\n\tServices() ServiceDescriptors\n\n\t// SourceLocations is a list of source locations.\n\tSourceLocations() SourceLocations\n\n\tisFileDescriptor\n}\ntype isFileDescriptor interface{ ProtoType(FileDescriptor) }\n\n// FileImports is a list of file imports.\ntype FileImports interface {\n\t// Len reports the number of files imported by this proto file.\n\tLen() int\n\t// Get returns the ith FileImport. It panics if out of bounds.\n\tGet(i int) FileImport\n\n\tdoNotImplement\n}\n\n// FileImport is the declaration for a proto file import.\ntype FileImport struct {\n\t// FileDescriptor is the file type for the given import.\n\t// It is a placeholder descriptor if IsWeak is set or if a dependency has\n\t// not been regenerated to implement the new reflection APIs.\n\tFileDescriptor\n\n\t// IsPublic reports whether this is a public import, which causes this file\n\t// to alias declarations within the imported file. The intended use cases\n\t// for this feature is the ability to move proto files without breaking\n\t// existing dependencies.\n\t//\n\t// The current file and the imported file must be within proto package.\n\tIsPublic bool\n\n\t// IsWeak reports whether this is a weak import, which does not impose\n\t// a direct dependency on the target file.\n\t//\n\t// Weak imports are a legacy proto1 feature. Equivalent behavior is\n\t// achieved using proto2 extension fields or proto3 Any messages.\n\tIsWeak bool\n}\n\n// MessageDescriptor describes a message and\n// corresponds with the google.protobuf.DescriptorProto message.\n//\n// Nested declarations:\n// FieldDescriptor, OneofDescriptor, FieldDescriptor, EnumDescriptor,\n// and/or MessageDescriptor.\ntype MessageDescriptor interface {\n\tDescriptor\n\n\t// IsMapEntry indicates that this is an auto-generated message type to\n\t// represent the entry type for a map field.\n\t//\n\t// Map entry messages have only two fields:\n\t//\t• a \"key\" field with a field number of 1\n\t//\t• a \"value\" field with a field number of 2\n\t// The key and value types are determined by these two fields.\n\t//\n\t// If IsMapEntry is true, it implies that FieldDescriptor.IsMap is true\n\t// for some field with this message type.\n\tIsMapEntry() bool\n\n\t// Fields is a list of nested field declarations.\n\tFields() FieldDescriptors\n\t// Oneofs is a list of nested oneof declarations.\n\tOneofs() OneofDescriptors\n\n\t// ReservedNames is a list of reserved field names.\n\tReservedNames() Names\n\t// ReservedRanges is a list of reserved ranges of field numbers.\n\tReservedRanges() FieldRanges\n\t// RequiredNumbers is a list of required field numbers.\n\t// In Proto3, it is always an empty list.\n\tRequiredNumbers() FieldNumbers\n\t// ExtensionRanges is the field ranges used for extension fields.\n\t// In Proto3, it is always an empty ranges.\n\tExtensionRanges() FieldRanges\n\t// ExtensionRangeOptions returns the ith extension range options.\n\t//\n\t// To avoid a dependency cycle, this method returns a proto.Message value,\n\t// which always contains a google.protobuf.ExtensionRangeOptions message.\n\t// This method returns a typed nil-pointer if no options are present.\n\t// The caller must import the descriptorpb package to use this.\n\tExtensionRangeOptions(i int) ProtoMessage\n\n\t// Enums is a list of nested enum declarations.\n\tEnums() EnumDescriptors\n\t// Messages is a list of nested message declarations.\n\tMessages() MessageDescriptors\n\t// Extensions is a list of nested extension declarations.\n\tExtensions() ExtensionDescriptors\n\n\tisMessageDescriptor\n}\ntype isMessageDescriptor interface{ ProtoType(MessageDescriptor) }\n\n// MessageType encapsulates a MessageDescriptor with a concrete Go implementation.\n// It is recommended that implementations of this interface also implement the\n// MessageFieldTypes interface.\ntype MessageType interface {\n\t// New returns a newly allocated empty message.\n\t// It may return nil for synthetic messages representing a map entry.\n\tNew() Message\n\n\t// Zero returns an empty, read-only message.\n\t// It may return nil for synthetic messages representing a map entry.\n\tZero() Message\n\n\t// Descriptor returns the message descriptor.\n\t//\n\t// Invariant: t.Descriptor() == t.New().Descriptor()\n\tDescriptor() MessageDescriptor\n}\n\n// MessageFieldTypes extends a MessageType by providing type information\n// regarding enums and messages referenced by the message fields.\ntype MessageFieldTypes interface {\n\tMessageType\n\n\t// Enum returns the EnumType for the ith field in Descriptor.Fields.\n\t// It returns nil if the ith field is not an enum kind.\n\t// It panics if out of bounds.\n\t//\n\t// Invariant: mt.Enum(i).Descriptor() == mt.Descriptor().Fields(i).Enum()\n\tEnum(i int) EnumType\n\n\t// Message returns the MessageType for the ith field in Descriptor.Fields.\n\t// It returns nil if the ith field is not a message or group kind.\n\t// It panics if out of bounds.\n\t//\n\t// Invariant: mt.Message(i).Descriptor() == mt.Descriptor().Fields(i).Message()\n\tMessage(i int) MessageType\n}\n\n// MessageDescriptors is a list of message declarations.\ntype MessageDescriptors interface {\n\t// Len reports the number of messages.\n\tLen() int\n\t// Get returns the ith MessageDescriptor. It panics if out of bounds.\n\tGet(i int) MessageDescriptor\n\t// ByName returns the MessageDescriptor for a message named s.\n\t// It returns nil if not found.\n\tByName(s Name) MessageDescriptor\n\n\tdoNotImplement\n}\n\n// FieldDescriptor describes a field within a message and\n// corresponds with the google.protobuf.FieldDescriptorProto message.\n//\n// It is used for both normal fields defined within the parent message\n// (e.g., MessageDescriptor.Fields) and fields that extend some remote message\n// (e.g., FileDescriptor.Extensions or MessageDescriptor.Extensions).\ntype FieldDescriptor interface {\n\tDescriptor\n\n\t// Number reports the unique number for this field.\n\tNumber() FieldNumber\n\t// Cardinality reports the cardinality for this field.\n\tCardinality() Cardinality\n\t// Kind reports the basic kind for this field.\n\tKind() Kind\n\n\t// HasJSONName reports whether this field has an explicitly set JSON name.\n\tHasJSONName() bool\n\n\t// JSONName reports the name used for JSON serialization.\n\t// It is usually the camel-cased form of the field name.\n\t// Extension fields are represented by the full name surrounded by brackets.\n\tJSONName() string\n\n\t// TextName reports the name used for text serialization.\n\t// It is usually the name of the field, except that groups use the name\n\t// of the inlined message, and extension fields are represented by the\n\t// full name surrounded by brackets.\n\tTextName() string\n\n\t// HasPresence reports whether the field distinguishes between unpopulated\n\t// and default values.\n\tHasPresence() bool\n\n\t// IsExtension reports whether this is an extension field. If false,\n\t// then Parent and ContainingMessage refer to the same message.\n\t// Otherwise, ContainingMessage and Parent likely differ.\n\tIsExtension() bool\n\n\t// HasOptionalKeyword reports whether the \"optional\" keyword was explicitly\n\t// specified in the source .proto file.\n\tHasOptionalKeyword() bool\n\n\t// IsWeak reports whether this is a weak field, which does not impose a\n\t// direct dependency on the target type.\n\t// If true, then Message returns a placeholder type.\n\tIsWeak() bool\n\n\t// IsPacked reports whether repeated primitive numeric kinds should be\n\t// serialized using a packed encoding.\n\t// If true, then it implies Cardinality is Repeated.\n\tIsPacked() bool\n\n\t// IsList reports whether this field represents a list,\n\t// where the value type for the associated field is a List.\n\t// It is equivalent to checking whether Cardinality is Repeated and\n\t// that IsMap reports false.\n\tIsList() bool\n\n\t// IsMap reports whether this field represents a map,\n\t// where the value type for the associated field is a Map.\n\t// It is equivalent to checking whether Cardinality is Repeated,\n\t// that the Kind is MessageKind, and that Message.IsMapEntry reports true.\n\tIsMap() bool\n\n\t// MapKey returns the field descriptor for the key in the map entry.\n\t// It returns nil if IsMap reports false.\n\tMapKey() FieldDescriptor\n\n\t// MapValue returns the field descriptor for the value in the map entry.\n\t// It returns nil if IsMap reports false.\n\tMapValue() FieldDescriptor\n\n\t// HasDefault reports whether this field has a default value.\n\tHasDefault() bool\n\n\t// Default returns the default value for scalar fields.\n\t// For proto2, it is the default value as specified in the proto file,\n\t// or the zero value if unspecified.\n\t// For proto3, it is always the zero value of the scalar.\n\t// The Value type is determined by the Kind.\n\tDefault() Value\n\n\t// DefaultEnumValue returns the enum value descriptor for the default value\n\t// of an enum field, and is nil for any other kind of field.\n\tDefaultEnumValue() EnumValueDescriptor\n\n\t// ContainingOneof is the containing oneof that this field belongs to,\n\t// and is nil if this field is not part of a oneof.\n\tContainingOneof() OneofDescriptor\n\n\t// ContainingMessage is the containing message that this field belongs to.\n\t// For extension fields, this may not necessarily be the parent message\n\t// that the field is declared within.\n\tContainingMessage() MessageDescriptor\n\n\t// Enum is the enum descriptor if Kind is EnumKind.\n\t// It returns nil for any other Kind.\n\tEnum() EnumDescriptor\n\n\t// Message is the message descriptor if Kind is\n\t// MessageKind or GroupKind. It returns nil for any other Kind.\n\tMessage() MessageDescriptor\n\n\tisFieldDescriptor\n}\ntype isFieldDescriptor interface{ ProtoType(FieldDescriptor) }\n\n// FieldDescriptors is a list of field declarations.\ntype FieldDescriptors interface {\n\t// Len reports the number of fields.\n\tLen() int\n\t// Get returns the ith FieldDescriptor. It panics if out of bounds.\n\tGet(i int) FieldDescriptor\n\t// ByName returns the FieldDescriptor for a field named s.\n\t// It returns nil if not found.\n\tByName(s Name) FieldDescriptor\n\t// ByJSONName returns the FieldDescriptor for a field with s as the JSON name.\n\t// It returns nil if not found.\n\tByJSONName(s string) FieldDescriptor\n\t// ByTextName returns the FieldDescriptor for a field with s as the text name.\n\t// It returns nil if not found.\n\tByTextName(s string) FieldDescriptor\n\t// ByNumber returns the FieldDescriptor for a field numbered n.\n\t// It returns nil if not found.\n\tByNumber(n FieldNumber) FieldDescriptor\n\n\tdoNotImplement\n}\n\n// OneofDescriptor describes a oneof field set within a given message and\n// corresponds with the google.protobuf.OneofDescriptorProto message.\ntype OneofDescriptor interface {\n\tDescriptor\n\n\t// IsSynthetic reports whether this is a synthetic oneof created to support\n\t// proto3 optional semantics. If true, Fields contains exactly one field\n\t// with HasOptionalKeyword specified.\n\tIsSynthetic() bool\n\n\t// Fields is a list of fields belonging to this oneof.\n\tFields() FieldDescriptors\n\n\tisOneofDescriptor\n}\ntype isOneofDescriptor interface{ ProtoType(OneofDescriptor) }\n\n// OneofDescriptors is a list of oneof declarations.\ntype OneofDescriptors interface {\n\t// Len reports the number of oneof fields.\n\tLen() int\n\t// Get returns the ith OneofDescriptor. It panics if out of bounds.\n\tGet(i int) OneofDescriptor\n\t// ByName returns the OneofDescriptor for a oneof named s.\n\t// It returns nil if not found.\n\tByName(s Name) OneofDescriptor\n\n\tdoNotImplement\n}\n\n// ExtensionDescriptor is an alias of FieldDescriptor for documentation.\ntype ExtensionDescriptor = FieldDescriptor\n\n// ExtensionTypeDescriptor is an ExtensionDescriptor with an associated ExtensionType.\ntype ExtensionTypeDescriptor interface {\n\tExtensionDescriptor\n\n\t// Type returns the associated ExtensionType.\n\tType() ExtensionType\n\n\t// Descriptor returns the plain ExtensionDescriptor without the\n\t// associated ExtensionType.\n\tDescriptor() ExtensionDescriptor\n}\n\n// ExtensionDescriptors is a list of field declarations.\ntype ExtensionDescriptors interface {\n\t// Len reports the number of fields.\n\tLen() int\n\t// Get returns the ith ExtensionDescriptor. It panics if out of bounds.\n\tGet(i int) ExtensionDescriptor\n\t// ByName returns the ExtensionDescriptor for a field named s.\n\t// It returns nil if not found.\n\tByName(s Name) ExtensionDescriptor\n\n\tdoNotImplement\n}\n\n// ExtensionType encapsulates an ExtensionDescriptor with a concrete\n// Go implementation. The nested field descriptor must be for a extension field.\n//\n// While a normal field is a member of the parent message that it is declared\n// within (see Descriptor.Parent), an extension field is a member of some other\n// target message (see ExtensionDescriptor.Extendee) and may have no\n// relationship with the parent. However, the full name of an extension field is\n// relative to the parent that it is declared within.\n//\n// For example:\n//\n//\tsyntax = \"proto2\";\n//\tpackage example;\n//\tmessage FooMessage {\n//\t\textensions 100 to max;\n//\t}\n//\tmessage BarMessage {\n//\t\textends FooMessage { optional BarMessage bar_field = 100; }\n//\t}\n//\n// Field \"bar_field\" is an extension of FooMessage, but its full name is\n// \"example.BarMessage.bar_field\" instead of \"example.FooMessage.bar_field\".\ntype ExtensionType interface {\n\t// New returns a new value for the field.\n\t// For scalars, this returns the default value in native Go form.\n\tNew() Value\n\n\t// Zero returns a new value for the field.\n\t// For scalars, this returns the default value in native Go form.\n\t// For composite types, this returns an empty, read-only message, list, or map.\n\tZero() Value\n\n\t// TypeDescriptor returns the extension type descriptor.\n\tTypeDescriptor() ExtensionTypeDescriptor\n\n\t// ValueOf wraps the input and returns it as a Value.\n\t// ValueOf panics if the input value is invalid or not the appropriate type.\n\t//\n\t// ValueOf is more extensive than protoreflect.ValueOf for a given field's\n\t// value as it has more type information available.\n\tValueOf(interface{}) Value\n\n\t// InterfaceOf completely unwraps the Value to the underlying Go type.\n\t// InterfaceOf panics if the input is nil or does not represent the\n\t// appropriate underlying Go type. For composite types, it panics if the\n\t// value is not mutable.\n\t//\n\t// InterfaceOf is able to unwrap the Value further than Value.Interface\n\t// as it has more type information available.\n\tInterfaceOf(Value) interface{}\n\n\t// IsValidValue reports whether the Value is valid to assign to the field.\n\tIsValidValue(Value) bool\n\n\t// IsValidInterface reports whether the input is valid to assign to the field.\n\tIsValidInterface(interface{}) bool\n}\n\n// EnumDescriptor describes an enum and\n// corresponds with the google.protobuf.EnumDescriptorProto message.\n//\n// Nested declarations:\n// EnumValueDescriptor.\ntype EnumDescriptor interface {\n\tDescriptor\n\n\t// Values is a list of nested enum value declarations.\n\tValues() EnumValueDescriptors\n\n\t// ReservedNames is a list of reserved enum names.\n\tReservedNames() Names\n\t// ReservedRanges is a list of reserved ranges of enum numbers.\n\tReservedRanges() EnumRanges\n\n\tisEnumDescriptor\n}\ntype isEnumDescriptor interface{ ProtoType(EnumDescriptor) }\n\n// EnumType encapsulates an EnumDescriptor with a concrete Go implementation.\ntype EnumType interface {\n\t// New returns an instance of this enum type with its value set to n.\n\tNew(n EnumNumber) Enum\n\n\t// Descriptor returns the enum descriptor.\n\t//\n\t// Invariant: t.Descriptor() == t.New(0).Descriptor()\n\tDescriptor() EnumDescriptor\n}\n\n// EnumDescriptors is a list of enum declarations.\ntype EnumDescriptors interface {\n\t// Len reports the number of enum types.\n\tLen() int\n\t// Get returns the ith EnumDescriptor. It panics if out of bounds.\n\tGet(i int) EnumDescriptor\n\t// ByName returns the EnumDescriptor for an enum named s.\n\t// It returns nil if not found.\n\tByName(s Name) EnumDescriptor\n\n\tdoNotImplement\n}\n\n// EnumValueDescriptor describes an enum value and\n// corresponds with the google.protobuf.EnumValueDescriptorProto message.\n//\n// All other proto declarations are in the namespace of the parent.\n// However, enum values do not follow this rule and are within the namespace\n// of the parent's parent (i.e., they are a sibling of the containing enum).\n// Thus, a value named \"FOO_VALUE\" declared within an enum uniquely identified\n// as \"proto.package.MyEnum\" has a full name of \"proto.package.FOO_VALUE\".\ntype EnumValueDescriptor interface {\n\tDescriptor\n\n\t// Number returns the enum value as an integer.\n\tNumber() EnumNumber\n\n\tisEnumValueDescriptor\n}\ntype isEnumValueDescriptor interface{ ProtoType(EnumValueDescriptor) }\n\n// EnumValueDescriptors is a list of enum value declarations.\ntype EnumValueDescriptors interface {\n\t// Len reports the number of enum values.\n\tLen() int\n\t// Get returns the ith EnumValueDescriptor. It panics if out of bounds.\n\tGet(i int) EnumValueDescriptor\n\t// ByName returns the EnumValueDescriptor for the enum value named s.\n\t// It returns nil if not found.\n\tByName(s Name) EnumValueDescriptor\n\t// ByNumber returns the EnumValueDescriptor for the enum value numbered n.\n\t// If multiple have the same number, the first one defined is returned\n\t// It returns nil if not found.\n\tByNumber(n EnumNumber) EnumValueDescriptor\n\n\tdoNotImplement\n}\n\n// ServiceDescriptor describes a service and\n// corresponds with the google.protobuf.ServiceDescriptorProto message.\n//\n// Nested declarations: MethodDescriptor.\ntype ServiceDescriptor interface {\n\tDescriptor\n\n\t// Methods is a list of nested message declarations.\n\tMethods() MethodDescriptors\n\n\tisServiceDescriptor\n}\ntype isServiceDescriptor interface{ ProtoType(ServiceDescriptor) }\n\n// ServiceDescriptors is a list of service declarations.\ntype ServiceDescriptors interface {\n\t// Len reports the number of services.\n\tLen() int\n\t// Get returns the ith ServiceDescriptor. It panics if out of bounds.\n\tGet(i int) ServiceDescriptor\n\t// ByName returns the ServiceDescriptor for a service named s.\n\t// It returns nil if not found.\n\tByName(s Name) ServiceDescriptor\n\n\tdoNotImplement\n}\n\n// MethodDescriptor describes a method and\n// corresponds with the google.protobuf.MethodDescriptorProto message.\ntype MethodDescriptor interface {\n\tDescriptor\n\n\t// Input is the input message descriptor.\n\tInput() MessageDescriptor\n\t// Output is the output message descriptor.\n\tOutput() MessageDescriptor\n\t// IsStreamingClient reports whether the client streams multiple messages.\n\tIsStreamingClient() bool\n\t// IsStreamingServer reports whether the server streams multiple messages.\n\tIsStreamingServer() bool\n\n\tisMethodDescriptor\n}\ntype isMethodDescriptor interface{ ProtoType(MethodDescriptor) }\n\n// MethodDescriptors is a list of method declarations.\ntype MethodDescriptors interface {\n\t// Len reports the number of methods.\n\tLen() int\n\t// Get returns the ith MethodDescriptor. It panics if out of bounds.\n\tGet(i int) MethodDescriptor\n\t// ByName returns the MethodDescriptor for a service method named s.\n\t// It returns nil if not found.\n\tByName(s Name) MethodDescriptor\n\n\tdoNotImplement\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/value.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport \"google.golang.org/protobuf/encoding/protowire\"\n\n// Enum is a reflection interface for a concrete enum value,\n// which provides type information and a getter for the enum number.\n// Enum does not provide a mutable API since enums are commonly backed by\n// Go constants, which are not addressable.\ntype Enum interface {\n\t// Descriptor returns enum descriptor, which contains only the protobuf\n\t// type information for the enum.\n\tDescriptor() EnumDescriptor\n\n\t// Type returns the enum type, which encapsulates both Go and protobuf\n\t// type information. If the Go type information is not needed,\n\t// it is recommended that the enum descriptor be used instead.\n\tType() EnumType\n\n\t// Number returns the enum value as an integer.\n\tNumber() EnumNumber\n}\n\n// Message is a reflective interface for a concrete message value,\n// encapsulating both type and value information for the message.\n//\n// Accessor/mutators for individual fields are keyed by FieldDescriptor.\n// For non-extension fields, the descriptor must exactly match the\n// field known by the parent message.\n// For extension fields, the descriptor must implement ExtensionTypeDescriptor,\n// extend the parent message (i.e., have the same message FullName), and\n// be within the parent's extension range.\n//\n// Each field Value can be a scalar or a composite type (Message, List, or Map).\n// See Value for the Go types associated with a FieldDescriptor.\n// Providing a Value that is invalid or of an incorrect type panics.\ntype Message interface {\n\t// Descriptor returns message descriptor, which contains only the protobuf\n\t// type information for the message.\n\tDescriptor() MessageDescriptor\n\n\t// Type returns the message type, which encapsulates both Go and protobuf\n\t// type information. If the Go type information is not needed,\n\t// it is recommended that the message descriptor be used instead.\n\tType() MessageType\n\n\t// New returns a newly allocated and mutable empty message.\n\tNew() Message\n\n\t// Interface unwraps the message reflection interface and\n\t// returns the underlying ProtoMessage interface.\n\tInterface() ProtoMessage\n\n\t// Range iterates over every populated field in an undefined order,\n\t// calling f for each field descriptor and value encountered.\n\t// Range returns immediately if f returns false.\n\t// While iterating, mutating operations may only be performed\n\t// on the current field descriptor.\n\tRange(f func(FieldDescriptor, Value) bool)\n\n\t// Has reports whether a field is populated.\n\t//\n\t// Some fields have the property of nullability where it is possible to\n\t// distinguish between the default value of a field and whether the field\n\t// was explicitly populated with the default value. Singular message fields,\n\t// member fields of a oneof, and proto2 scalar fields are nullable. Such\n\t// fields are populated only if explicitly set.\n\t//\n\t// In other cases (aside from the nullable cases above),\n\t// a proto3 scalar field is populated if it contains a non-zero value, and\n\t// a repeated field is populated if it is non-empty.\n\tHas(FieldDescriptor) bool\n\n\t// Clear clears the field such that a subsequent Has call reports false.\n\t//\n\t// Clearing an extension field clears both the extension type and value\n\t// associated with the given field number.\n\t//\n\t// Clear is a mutating operation and unsafe for concurrent use.\n\tClear(FieldDescriptor)\n\n\t// Get retrieves the value for a field.\n\t//\n\t// For unpopulated scalars, it returns the default value, where\n\t// the default value of a bytes scalar is guaranteed to be a copy.\n\t// For unpopulated composite types, it returns an empty, read-only view\n\t// of the value; to obtain a mutable reference, use Mutable.\n\tGet(FieldDescriptor) Value\n\n\t// Set stores the value for a field.\n\t//\n\t// For a field belonging to a oneof, it implicitly clears any other field\n\t// that may be currently set within the same oneof.\n\t// For extension fields, it implicitly stores the provided ExtensionType.\n\t// When setting a composite type, it is unspecified whether the stored value\n\t// aliases the source's memory in any way. If the composite value is an\n\t// empty, read-only value, then it panics.\n\t//\n\t// Set is a mutating operation and unsafe for concurrent use.\n\tSet(FieldDescriptor, Value)\n\n\t// Mutable returns a mutable reference to a composite type.\n\t//\n\t// If the field is unpopulated, it may allocate a composite value.\n\t// For a field belonging to a oneof, it implicitly clears any other field\n\t// that may be currently set within the same oneof.\n\t// For extension fields, it implicitly stores the provided ExtensionType\n\t// if not already stored.\n\t// It panics if the field does not contain a composite type.\n\t//\n\t// Mutable is a mutating operation and unsafe for concurrent use.\n\tMutable(FieldDescriptor) Value\n\n\t// NewField returns a new value that is assignable to the field\n\t// for the given descriptor. For scalars, this returns the default value.\n\t// For lists, maps, and messages, this returns a new, empty, mutable value.\n\tNewField(FieldDescriptor) Value\n\n\t// WhichOneof reports which field within the oneof is populated,\n\t// returning nil if none are populated.\n\t// It panics if the oneof descriptor does not belong to this message.\n\tWhichOneof(OneofDescriptor) FieldDescriptor\n\n\t// GetUnknown retrieves the entire list of unknown fields.\n\t// The caller may only mutate the contents of the RawFields\n\t// if the mutated bytes are stored back into the message with SetUnknown.\n\tGetUnknown() RawFields\n\n\t// SetUnknown stores an entire list of unknown fields.\n\t// The raw fields must be syntactically valid according to the wire format.\n\t// An implementation may panic if this is not the case.\n\t// Once stored, the caller must not mutate the content of the RawFields.\n\t// An empty RawFields may be passed to clear the fields.\n\t//\n\t// SetUnknown is a mutating operation and unsafe for concurrent use.\n\tSetUnknown(RawFields)\n\n\t// IsValid reports whether the message is valid.\n\t//\n\t// An invalid message is an empty, read-only value.\n\t//\n\t// An invalid message often corresponds to a nil pointer of the concrete\n\t// message type, but the details are implementation dependent.\n\t// Validity is not part of the protobuf data model, and may not\n\t// be preserved in marshaling or other operations.\n\tIsValid() bool\n\n\t// ProtoMethods returns optional fast-path implementations of various operations.\n\t// This method may return nil.\n\t//\n\t// The returned methods type is identical to\n\t// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n\t// Consult the protoiface package documentation for details.\n\tProtoMethods() *methods\n}\n\n// RawFields is the raw bytes for an ordered sequence of fields.\n// Each field contains both the tag (representing field number and wire type),\n// and also the wire data itself.\ntype RawFields []byte\n\n// IsValid reports whether b is syntactically correct wire format.\nfunc (b RawFields) IsValid() bool {\n\tfor len(b) > 0 {\n\t\t_, _, n := protowire.ConsumeField(b)\n\t\tif n < 0 {\n\t\t\treturn false\n\t\t}\n\t\tb = b[n:]\n\t}\n\treturn true\n}\n\n// List is a zero-indexed, ordered list.\n// The element Value type is determined by FieldDescriptor.Kind.\n// Providing a Value that is invalid or of an incorrect type panics.\ntype List interface {\n\t// Len reports the number of entries in the List.\n\t// Get, Set, and Truncate panic with out of bound indexes.\n\tLen() int\n\n\t// Get retrieves the value at the given index.\n\t// It never returns an invalid value.\n\tGet(int) Value\n\n\t// Set stores a value for the given index.\n\t// When setting a composite type, it is unspecified whether the set\n\t// value aliases the source's memory in any way.\n\t//\n\t// Set is a mutating operation and unsafe for concurrent use.\n\tSet(int, Value)\n\n\t// Append appends the provided value to the end of the list.\n\t// When appending a composite type, it is unspecified whether the appended\n\t// value aliases the source's memory in any way.\n\t//\n\t// Append is a mutating operation and unsafe for concurrent use.\n\tAppend(Value)\n\n\t// AppendMutable appends a new, empty, mutable message value to the end\n\t// of the list and returns it.\n\t// It panics if the list does not contain a message type.\n\tAppendMutable() Value\n\n\t// Truncate truncates the list to a smaller length.\n\t//\n\t// Truncate is a mutating operation and unsafe for concurrent use.\n\tTruncate(int)\n\n\t// NewElement returns a new value for a list element.\n\t// For enums, this returns the first enum value.\n\t// For other scalars, this returns the zero value.\n\t// For messages, this returns a new, empty, mutable value.\n\tNewElement() Value\n\n\t// IsValid reports whether the list is valid.\n\t//\n\t// An invalid list is an empty, read-only value.\n\t//\n\t// Validity is not part of the protobuf data model, and may not\n\t// be preserved in marshaling or other operations.\n\tIsValid() bool\n}\n\n// Map is an unordered, associative map.\n// The entry MapKey type is determined by FieldDescriptor.MapKey.Kind.\n// The entry Value type is determined by FieldDescriptor.MapValue.Kind.\n// Providing a MapKey or Value that is invalid or of an incorrect type panics.\ntype Map interface {\n\t// Len reports the number of elements in the map.\n\tLen() int\n\n\t// Range iterates over every map entry in an undefined order,\n\t// calling f for each key and value encountered.\n\t// Range calls f Len times unless f returns false, which stops iteration.\n\t// While iterating, mutating operations may only be performed\n\t// on the current map key.\n\tRange(f func(MapKey, Value) bool)\n\n\t// Has reports whether an entry with the given key is in the map.\n\tHas(MapKey) bool\n\n\t// Clear clears the entry associated with they given key.\n\t// The operation does nothing if there is no entry associated with the key.\n\t//\n\t// Clear is a mutating operation and unsafe for concurrent use.\n\tClear(MapKey)\n\n\t// Get retrieves the value for an entry with the given key.\n\t// It returns an invalid value for non-existent entries.\n\tGet(MapKey) Value\n\n\t// Set stores the value for an entry with the given key.\n\t// It panics when given a key or value that is invalid or the wrong type.\n\t// When setting a composite type, it is unspecified whether the set\n\t// value aliases the source's memory in any way.\n\t//\n\t// Set is a mutating operation and unsafe for concurrent use.\n\tSet(MapKey, Value)\n\n\t// Mutable retrieves a mutable reference to the entry for the given key.\n\t// If no entry exists for the key, it creates a new, empty, mutable value\n\t// and stores it as the entry for the key.\n\t// It panics if the map value is not a message.\n\tMutable(MapKey) Value\n\n\t// NewValue returns a new value assignable as a map value.\n\t// For enums, this returns the first enum value.\n\t// For other scalars, this returns the zero value.\n\t// For messages, this returns a new, empty, mutable value.\n\tNewValue() Value\n\n\t// IsValid reports whether the map is valid.\n\t//\n\t// An invalid map is an empty, read-only value.\n\t//\n\t// An invalid message often corresponds to a nil Go map value,\n\t// but the details are implementation dependent.\n\t// Validity is not part of the protobuf data model, and may not\n\t// be preserved in marshaling or other operations.\n\tIsValid() bool\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\n\t\"google.golang.org/protobuf/encoding/protowire\"\n)\n\n// Equal reports whether v1 and v2 are recursively equal.\n//\n//   - Values of different types are always unequal.\n//\n//   - Bytes values are equal if they contain identical bytes.\n//     Empty bytes (regardless of nil-ness) are considered equal.\n//\n//   - Floating point values are equal if they contain the same value.\n//     Unlike the == operator, a NaN is equal to another NaN.\n//\n//   - Enums are equal if they contain the same number.\n//     Since Value does not contain an enum descriptor,\n//     enum values do not consider the type of the enum.\n//\n//   - Other scalar values are equal if they contain the same value.\n//\n//   - Message values are equal if they belong to the same message descriptor,\n//     have the same set of populated known and extension field values,\n//     and the same set of unknown fields values.\n//\n//   - Lists are equal if they are the same length and\n//     each corresponding element is equal.\n//\n//   - Maps are equal if they have the same set of keys and\n//     the corresponding value for each key is equal.\nfunc (v1 Value) Equal(v2 Value) bool {\n\treturn equalValue(v1, v2)\n}\n\nfunc equalValue(x, y Value) bool {\n\teqType := x.typ == y.typ\n\tswitch x.typ {\n\tcase nilType:\n\t\treturn eqType\n\tcase boolType:\n\t\treturn eqType && x.Bool() == y.Bool()\n\tcase int32Type, int64Type:\n\t\treturn eqType && x.Int() == y.Int()\n\tcase uint32Type, uint64Type:\n\t\treturn eqType && x.Uint() == y.Uint()\n\tcase float32Type, float64Type:\n\t\treturn eqType && equalFloat(x.Float(), y.Float())\n\tcase stringType:\n\t\treturn eqType && x.String() == y.String()\n\tcase bytesType:\n\t\treturn eqType && bytes.Equal(x.Bytes(), y.Bytes())\n\tcase enumType:\n\t\treturn eqType && x.Enum() == y.Enum()\n\tdefault:\n\t\tswitch x := x.Interface().(type) {\n\t\tcase Message:\n\t\t\ty, ok := y.Interface().(Message)\n\t\t\treturn ok && equalMessage(x, y)\n\t\tcase List:\n\t\t\ty, ok := y.Interface().(List)\n\t\t\treturn ok && equalList(x, y)\n\t\tcase Map:\n\t\t\ty, ok := y.Interface().(Map)\n\t\t\treturn ok && equalMap(x, y)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"unknown type: %T\", x))\n\t\t}\n\t}\n}\n\n// equalFloat compares two floats, where NaNs are treated as equal.\nfunc equalFloat(x, y float64) bool {\n\tif math.IsNaN(x) || math.IsNaN(y) {\n\t\treturn math.IsNaN(x) && math.IsNaN(y)\n\t}\n\treturn x == y\n}\n\n// equalMessage compares two messages.\nfunc equalMessage(mx, my Message) bool {\n\tif mx.Descriptor() != my.Descriptor() {\n\t\treturn false\n\t}\n\n\tnx := 0\n\tequal := true\n\tmx.Range(func(fd FieldDescriptor, vx Value) bool {\n\t\tnx++\n\t\tvy := my.Get(fd)\n\t\tequal = my.Has(fd) && equalValue(vx, vy)\n\t\treturn equal\n\t})\n\tif !equal {\n\t\treturn false\n\t}\n\tny := 0\n\tmy.Range(func(fd FieldDescriptor, vx Value) bool {\n\t\tny++\n\t\treturn true\n\t})\n\tif nx != ny {\n\t\treturn false\n\t}\n\n\treturn equalUnknown(mx.GetUnknown(), my.GetUnknown())\n}\n\n// equalList compares two lists.\nfunc equalList(x, y List) bool {\n\tif x.Len() != y.Len() {\n\t\treturn false\n\t}\n\tfor i := x.Len() - 1; i >= 0; i-- {\n\t\tif !equalValue(x.Get(i), y.Get(i)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// equalMap compares two maps.\nfunc equalMap(x, y Map) bool {\n\tif x.Len() != y.Len() {\n\t\treturn false\n\t}\n\tequal := true\n\tx.Range(func(k MapKey, vx Value) bool {\n\t\tvy := y.Get(k)\n\t\tequal = y.Has(k) && equalValue(vx, vy)\n\t\treturn equal\n\t})\n\treturn equal\n}\n\n// equalUnknown compares unknown fields by direct comparison on the raw bytes\n// of each individual field number.\nfunc equalUnknown(x, y RawFields) bool {\n\tif len(x) != len(y) {\n\t\treturn false\n\t}\n\tif bytes.Equal([]byte(x), []byte(y)) {\n\t\treturn true\n\t}\n\n\tmx := make(map[FieldNumber]RawFields)\n\tmy := make(map[FieldNumber]RawFields)\n\tfor len(x) > 0 {\n\t\tfnum, _, n := protowire.ConsumeField(x)\n\t\tmx[fnum] = append(mx[fnum], x[:n]...)\n\t\tx = x[n:]\n\t}\n\tfor len(y) > 0 {\n\t\tfnum, _, n := protowire.ConsumeField(y)\n\t\tmy[fnum] = append(my[fnum], y[:n]...)\n\t\ty = y[n:]\n\t}\n\treturn reflect.DeepEqual(mx, my)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.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 || appengine\n// +build purego appengine\n\npackage protoreflect\n\nimport \"google.golang.org/protobuf/internal/pragma\"\n\ntype valueType int\n\nconst (\n\tnilType valueType = iota\n\tboolType\n\tint32Type\n\tint64Type\n\tuint32Type\n\tuint64Type\n\tfloat32Type\n\tfloat64Type\n\tstringType\n\tbytesType\n\tenumType\n\tifaceType\n)\n\n// value is a union where only one type can be represented at a time.\n// This uses a distinct field for each type. This is type safe in Go, but\n// occupies more memory than necessary (72B).\ntype value struct {\n\tpragma.DoNotCompare // 0B\n\n\ttyp   valueType   // 8B\n\tnum   uint64      // 8B\n\tstr   string      // 16B\n\tbin   []byte      // 24B\n\tiface interface{} // 16B\n}\n\nfunc valueOfString(v string) Value {\n\treturn Value{typ: stringType, str: v}\n}\nfunc valueOfBytes(v []byte) Value {\n\treturn Value{typ: bytesType, bin: v}\n}\nfunc valueOfIface(v interface{}) Value {\n\treturn Value{typ: ifaceType, iface: v}\n}\n\nfunc (v Value) getString() string {\n\treturn v.str\n}\nfunc (v Value) getBytes() []byte {\n\treturn v.bin\n}\nfunc (v Value) getIface() interface{} {\n\treturn v.iface\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoreflect\n\nimport (\n\t\"fmt\"\n\t\"math\"\n)\n\n// Value is a union where only one Go type may be set at a time.\n// The Value is used to represent all possible values a field may take.\n// The following shows which Go type is used to represent each proto Kind:\n//\n//\t╔════════════╤═════════════════════════════════════╗\n//\t║ Go type    │ Protobuf kind                       ║\n//\t╠════════════╪═════════════════════════════════════╣\n//\t║ bool       │ BoolKind                            ║\n//\t║ int32      │ Int32Kind, Sint32Kind, Sfixed32Kind ║\n//\t║ int64      │ Int64Kind, Sint64Kind, Sfixed64Kind ║\n//\t║ uint32     │ Uint32Kind, Fixed32Kind             ║\n//\t║ uint64     │ Uint64Kind, Fixed64Kind             ║\n//\t║ float32    │ FloatKind                           ║\n//\t║ float64    │ DoubleKind                          ║\n//\t║ string     │ StringKind                          ║\n//\t║ []byte     │ BytesKind                           ║\n//\t║ EnumNumber │ EnumKind                            ║\n//\t║ Message    │ MessageKind, GroupKind              ║\n//\t╚════════════╧═════════════════════════════════════╝\n//\n// Multiple protobuf Kinds may be represented by a single Go type if the type\n// can losslessly represent the information for the proto kind. For example,\n// Int64Kind, Sint64Kind, and Sfixed64Kind are all represented by int64,\n// but use different integer encoding methods.\n//\n// The List or Map types are used if the field cardinality is repeated.\n// A field is a List if FieldDescriptor.IsList reports true.\n// A field is a Map if FieldDescriptor.IsMap reports true.\n//\n// Converting to/from a Value and a concrete Go value panics on type mismatch.\n// For example, ValueOf(\"hello\").Int() panics because this attempts to\n// retrieve an int64 from a string.\n//\n// List, Map, and Message Values are called \"composite\" values.\n//\n// A composite Value may alias (reference) memory at some location,\n// such that changes to the Value updates the that location.\n// A composite value acquired with a Mutable method, such as Message.Mutable,\n// always references the source object.\n//\n// For example:\n//\n//\t// Append a 0 to a \"repeated int32\" field.\n//\t// Since the Value returned by Mutable is guaranteed to alias\n//\t// the source message, modifying the Value modifies the message.\n//\tmessage.Mutable(fieldDesc).List().Append(protoreflect.ValueOfInt32(0))\n//\n//\t// Assign [0] to a \"repeated int32\" field by creating a new Value,\n//\t// modifying it, and assigning it.\n//\tlist := message.NewField(fieldDesc).List()\n//\tlist.Append(protoreflect.ValueOfInt32(0))\n//\tmessage.Set(fieldDesc, list)\n//\t// ERROR: Since it is not defined whether Set aliases the source,\n//\t// appending to the List here may or may not modify the message.\n//\tlist.Append(protoreflect.ValueOfInt32(0))\n//\n// Some operations, such as Message.Get, may return an \"empty, read-only\"\n// composite Value. Modifying an empty, read-only value panics.\ntype Value value\n\n// The protoreflect API uses a custom Value union type instead of interface{}\n// to keep the future open for performance optimizations. Using an interface{}\n// always incurs an allocation for primitives (e.g., int64) since it needs to\n// be boxed on the heap (as interfaces can only contain pointers natively).\n// Instead, we represent the Value union as a flat struct that internally keeps\n// track of which type is set. Using unsafe, the Value union can be reduced\n// down to 24B, which is identical in size to a slice.\n//\n// The latest compiler (Go1.11) currently suffers from some limitations:\n//\t• With inlining, the compiler should be able to statically prove that\n//\tonly one of these switch cases are taken and inline one specific case.\n//\tSee https://golang.org/issue/22310.\n\n// ValueOf returns a Value initialized with the concrete value stored in v.\n// This panics if the type does not match one of the allowed types in the\n// Value union.\nfunc ValueOf(v interface{}) Value {\n\tswitch v := v.(type) {\n\tcase nil:\n\t\treturn Value{}\n\tcase bool:\n\t\treturn ValueOfBool(v)\n\tcase int32:\n\t\treturn ValueOfInt32(v)\n\tcase int64:\n\t\treturn ValueOfInt64(v)\n\tcase uint32:\n\t\treturn ValueOfUint32(v)\n\tcase uint64:\n\t\treturn ValueOfUint64(v)\n\tcase float32:\n\t\treturn ValueOfFloat32(v)\n\tcase float64:\n\t\treturn ValueOfFloat64(v)\n\tcase string:\n\t\treturn ValueOfString(v)\n\tcase []byte:\n\t\treturn ValueOfBytes(v)\n\tcase EnumNumber:\n\t\treturn ValueOfEnum(v)\n\tcase Message, List, Map:\n\t\treturn valueOfIface(v)\n\tcase ProtoMessage:\n\t\tpanic(fmt.Sprintf(\"invalid proto.Message(%T) type, expected a protoreflect.Message type\", v))\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid type: %T\", v))\n\t}\n}\n\n// ValueOfBool returns a new boolean value.\nfunc ValueOfBool(v bool) Value {\n\tif v {\n\t\treturn Value{typ: boolType, num: 1}\n\t} else {\n\t\treturn Value{typ: boolType, num: 0}\n\t}\n}\n\n// ValueOfInt32 returns a new int32 value.\nfunc ValueOfInt32(v int32) Value {\n\treturn Value{typ: int32Type, num: uint64(v)}\n}\n\n// ValueOfInt64 returns a new int64 value.\nfunc ValueOfInt64(v int64) Value {\n\treturn Value{typ: int64Type, num: uint64(v)}\n}\n\n// ValueOfUint32 returns a new uint32 value.\nfunc ValueOfUint32(v uint32) Value {\n\treturn Value{typ: uint32Type, num: uint64(v)}\n}\n\n// ValueOfUint64 returns a new uint64 value.\nfunc ValueOfUint64(v uint64) Value {\n\treturn Value{typ: uint64Type, num: v}\n}\n\n// ValueOfFloat32 returns a new float32 value.\nfunc ValueOfFloat32(v float32) Value {\n\treturn Value{typ: float32Type, num: uint64(math.Float64bits(float64(v)))}\n}\n\n// ValueOfFloat64 returns a new float64 value.\nfunc ValueOfFloat64(v float64) Value {\n\treturn Value{typ: float64Type, num: uint64(math.Float64bits(float64(v)))}\n}\n\n// ValueOfString returns a new string value.\nfunc ValueOfString(v string) Value {\n\treturn valueOfString(v)\n}\n\n// ValueOfBytes returns a new bytes value.\nfunc ValueOfBytes(v []byte) Value {\n\treturn valueOfBytes(v[:len(v):len(v)])\n}\n\n// ValueOfEnum returns a new enum value.\nfunc ValueOfEnum(v EnumNumber) Value {\n\treturn Value{typ: enumType, num: uint64(v)}\n}\n\n// ValueOfMessage returns a new Message value.\nfunc ValueOfMessage(v Message) Value {\n\treturn valueOfIface(v)\n}\n\n// ValueOfList returns a new List value.\nfunc ValueOfList(v List) Value {\n\treturn valueOfIface(v)\n}\n\n// ValueOfMap returns a new Map value.\nfunc ValueOfMap(v Map) Value {\n\treturn valueOfIface(v)\n}\n\n// IsValid reports whether v is populated with a value.\nfunc (v Value) IsValid() bool {\n\treturn v.typ != nilType\n}\n\n// Interface returns v as an interface{}.\n//\n// Invariant: v == ValueOf(v).Interface()\nfunc (v Value) Interface() interface{} {\n\tswitch v.typ {\n\tcase nilType:\n\t\treturn nil\n\tcase boolType:\n\t\treturn v.Bool()\n\tcase int32Type:\n\t\treturn int32(v.Int())\n\tcase int64Type:\n\t\treturn int64(v.Int())\n\tcase uint32Type:\n\t\treturn uint32(v.Uint())\n\tcase uint64Type:\n\t\treturn uint64(v.Uint())\n\tcase float32Type:\n\t\treturn float32(v.Float())\n\tcase float64Type:\n\t\treturn float64(v.Float())\n\tcase stringType:\n\t\treturn v.String()\n\tcase bytesType:\n\t\treturn v.Bytes()\n\tcase enumType:\n\t\treturn v.Enum()\n\tdefault:\n\t\treturn v.getIface()\n\t}\n}\n\nfunc (v Value) typeName() string {\n\tswitch v.typ {\n\tcase nilType:\n\t\treturn \"nil\"\n\tcase boolType:\n\t\treturn \"bool\"\n\tcase int32Type:\n\t\treturn \"int32\"\n\tcase int64Type:\n\t\treturn \"int64\"\n\tcase uint32Type:\n\t\treturn \"uint32\"\n\tcase uint64Type:\n\t\treturn \"uint64\"\n\tcase float32Type:\n\t\treturn \"float32\"\n\tcase float64Type:\n\t\treturn \"float64\"\n\tcase stringType:\n\t\treturn \"string\"\n\tcase bytesType:\n\t\treturn \"bytes\"\n\tcase enumType:\n\t\treturn \"enum\"\n\tdefault:\n\t\tswitch v := v.getIface().(type) {\n\t\tcase Message:\n\t\t\treturn \"message\"\n\t\tcase List:\n\t\t\treturn \"list\"\n\t\tcase Map:\n\t\t\treturn \"map\"\n\t\tdefault:\n\t\t\treturn fmt.Sprintf(\"<unknown: %T>\", v)\n\t\t}\n\t}\n}\n\nfunc (v Value) panicMessage(what string) string {\n\treturn fmt.Sprintf(\"type mismatch: cannot convert %v to %s\", v.typeName(), what)\n}\n\n// Bool returns v as a bool and panics if the type is not a bool.\nfunc (v Value) Bool() bool {\n\tswitch v.typ {\n\tcase boolType:\n\t\treturn v.num > 0\n\tdefault:\n\t\tpanic(v.panicMessage(\"bool\"))\n\t}\n}\n\n// Int returns v as a int64 and panics if the type is not a int32 or int64.\nfunc (v Value) Int() int64 {\n\tswitch v.typ {\n\tcase int32Type, int64Type:\n\t\treturn int64(v.num)\n\tdefault:\n\t\tpanic(v.panicMessage(\"int\"))\n\t}\n}\n\n// Uint returns v as a uint64 and panics if the type is not a uint32 or uint64.\nfunc (v Value) Uint() uint64 {\n\tswitch v.typ {\n\tcase uint32Type, uint64Type:\n\t\treturn uint64(v.num)\n\tdefault:\n\t\tpanic(v.panicMessage(\"uint\"))\n\t}\n}\n\n// Float returns v as a float64 and panics if the type is not a float32 or float64.\nfunc (v Value) Float() float64 {\n\tswitch v.typ {\n\tcase float32Type, float64Type:\n\t\treturn math.Float64frombits(uint64(v.num))\n\tdefault:\n\t\tpanic(v.panicMessage(\"float\"))\n\t}\n}\n\n// String returns v as a string. Since this method implements fmt.Stringer,\n// this returns the formatted string value for any non-string type.\nfunc (v Value) String() string {\n\tswitch v.typ {\n\tcase stringType:\n\t\treturn v.getString()\n\tdefault:\n\t\treturn fmt.Sprint(v.Interface())\n\t}\n}\n\n// Bytes returns v as a []byte and panics if the type is not a []byte.\nfunc (v Value) Bytes() []byte {\n\tswitch v.typ {\n\tcase bytesType:\n\t\treturn v.getBytes()\n\tdefault:\n\t\tpanic(v.panicMessage(\"bytes\"))\n\t}\n}\n\n// Enum returns v as a EnumNumber and panics if the type is not a EnumNumber.\nfunc (v Value) Enum() EnumNumber {\n\tswitch v.typ {\n\tcase enumType:\n\t\treturn EnumNumber(v.num)\n\tdefault:\n\t\tpanic(v.panicMessage(\"enum\"))\n\t}\n}\n\n// Message returns v as a Message and panics if the type is not a Message.\nfunc (v Value) Message() Message {\n\tswitch vi := v.getIface().(type) {\n\tcase Message:\n\t\treturn vi\n\tdefault:\n\t\tpanic(v.panicMessage(\"message\"))\n\t}\n}\n\n// List returns v as a List and panics if the type is not a List.\nfunc (v Value) List() List {\n\tswitch vi := v.getIface().(type) {\n\tcase List:\n\t\treturn vi\n\tdefault:\n\t\tpanic(v.panicMessage(\"list\"))\n\t}\n}\n\n// Map returns v as a Map and panics if the type is not a Map.\nfunc (v Value) Map() Map {\n\tswitch vi := v.getIface().(type) {\n\tcase Map:\n\t\treturn vi\n\tdefault:\n\t\tpanic(v.panicMessage(\"map\"))\n\t}\n}\n\n// MapKey returns v as a MapKey and panics for invalid MapKey types.\nfunc (v Value) MapKey() MapKey {\n\tswitch v.typ {\n\tcase boolType, int32Type, int64Type, uint32Type, uint64Type, stringType:\n\t\treturn MapKey(v)\n\tdefault:\n\t\tpanic(v.panicMessage(\"map key\"))\n\t}\n}\n\n// MapKey is used to index maps, where the Go type of the MapKey must match\n// the specified key Kind (see MessageDescriptor.IsMapEntry).\n// The following shows what Go type is used to represent each proto Kind:\n//\n//\t╔═════════╤═════════════════════════════════════╗\n//\t║ Go type │ Protobuf kind                       ║\n//\t╠═════════╪═════════════════════════════════════╣\n//\t║ bool    │ BoolKind                            ║\n//\t║ int32   │ Int32Kind, Sint32Kind, Sfixed32Kind ║\n//\t║ int64   │ Int64Kind, Sint64Kind, Sfixed64Kind ║\n//\t║ uint32  │ Uint32Kind, Fixed32Kind             ║\n//\t║ uint64  │ Uint64Kind, Fixed64Kind             ║\n//\t║ string  │ StringKind                          ║\n//\t╚═════════╧═════════════════════════════════════╝\n//\n// A MapKey is constructed and accessed through a Value:\n//\n//\tk := ValueOf(\"hash\").MapKey() // convert string to MapKey\n//\ts := k.String()               // convert MapKey to string\n//\n// The MapKey is a strict subset of valid types used in Value;\n// converting a Value to a MapKey with an invalid type panics.\ntype MapKey value\n\n// IsValid reports whether k is populated with a value.\nfunc (k MapKey) IsValid() bool {\n\treturn Value(k).IsValid()\n}\n\n// Interface returns k as an interface{}.\nfunc (k MapKey) Interface() interface{} {\n\treturn Value(k).Interface()\n}\n\n// Bool returns k as a bool and panics if the type is not a bool.\nfunc (k MapKey) Bool() bool {\n\treturn Value(k).Bool()\n}\n\n// Int returns k as a int64 and panics if the type is not a int32 or int64.\nfunc (k MapKey) Int() int64 {\n\treturn Value(k).Int()\n}\n\n// Uint returns k as a uint64 and panics if the type is not a uint32 or uint64.\nfunc (k MapKey) Uint() uint64 {\n\treturn Value(k).Uint()\n}\n\n// String returns k as a string. Since this method implements fmt.Stringer,\n// this returns the formatted string value for any non-string type.\nfunc (k MapKey) String() string {\n\treturn Value(k).String()\n}\n\n// Value returns k as a Value.\nfunc (k MapKey) Value() Value {\n\treturn Value(k)\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !purego && !appengine\n// +build !purego,!appengine\n\npackage protoreflect\n\nimport (\n\t\"unsafe\"\n\n\t\"google.golang.org/protobuf/internal/pragma\"\n)\n\ntype (\n\tstringHeader struct {\n\t\tData unsafe.Pointer\n\t\tLen  int\n\t}\n\tsliceHeader struct {\n\t\tData unsafe.Pointer\n\t\tLen  int\n\t\tCap  int\n\t}\n\tifaceHeader struct {\n\t\tType unsafe.Pointer\n\t\tData unsafe.Pointer\n\t}\n)\n\nvar (\n\tnilType     = typeOf(nil)\n\tboolType    = typeOf(*new(bool))\n\tint32Type   = typeOf(*new(int32))\n\tint64Type   = typeOf(*new(int64))\n\tuint32Type  = typeOf(*new(uint32))\n\tuint64Type  = typeOf(*new(uint64))\n\tfloat32Type = typeOf(*new(float32))\n\tfloat64Type = typeOf(*new(float64))\n\tstringType  = typeOf(*new(string))\n\tbytesType   = typeOf(*new([]byte))\n\tenumType    = typeOf(*new(EnumNumber))\n)\n\n// typeOf returns a pointer to the Go type information.\n// The pointer is comparable and equal if and only if the types are identical.\nfunc typeOf(t interface{}) unsafe.Pointer {\n\treturn (*ifaceHeader)(unsafe.Pointer(&t)).Type\n}\n\n// value is a union where only one type can be represented at a time.\n// The struct is 24B large on 64-bit systems and requires the minimum storage\n// necessary to represent each possible type.\n//\n// The Go GC needs to be able to scan variables containing pointers.\n// As such, pointers and non-pointers cannot be intermixed.\ntype value struct {\n\tpragma.DoNotCompare // 0B\n\n\t// typ stores the type of the value as a pointer to the Go type.\n\ttyp unsafe.Pointer // 8B\n\n\t// ptr stores the data pointer for a String, Bytes, or interface value.\n\tptr unsafe.Pointer // 8B\n\n\t// num stores a Bool, Int32, Int64, Uint32, Uint64, Float32, Float64, or\n\t// Enum value as a raw uint64.\n\t//\n\t// It is also used to store the length of a String or Bytes value;\n\t// the capacity is ignored.\n\tnum uint64 // 8B\n}\n\nfunc valueOfString(v string) Value {\n\tp := (*stringHeader)(unsafe.Pointer(&v))\n\treturn Value{typ: stringType, ptr: p.Data, num: uint64(len(v))}\n}\nfunc valueOfBytes(v []byte) Value {\n\tp := (*sliceHeader)(unsafe.Pointer(&v))\n\treturn Value{typ: bytesType, ptr: p.Data, num: uint64(len(v))}\n}\nfunc valueOfIface(v interface{}) Value {\n\tp := (*ifaceHeader)(unsafe.Pointer(&v))\n\treturn Value{typ: p.Type, ptr: p.Data}\n}\n\nfunc (v Value) getString() (x string) {\n\t*(*stringHeader)(unsafe.Pointer(&x)) = stringHeader{Data: v.ptr, Len: int(v.num)}\n\treturn x\n}\nfunc (v Value) getBytes() (x []byte) {\n\t*(*sliceHeader)(unsafe.Pointer(&x)) = sliceHeader{Data: v.ptr, Len: int(v.num), Cap: int(v.num)}\n\treturn x\n}\nfunc (v Value) getIface() (x interface{}) {\n\t*(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr}\n\treturn x\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protoregistry provides data structures to register and lookup\n// protobuf descriptor types.\n//\n// The Files registry contains file descriptors and provides the ability\n// to iterate over the files or lookup a specific descriptor within the files.\n// Files only contains protobuf descriptors and has no understanding of Go\n// type information that may be associated with each descriptor.\n//\n// The Types registry contains descriptor types for which there is a known\n// Go type associated with that descriptor. It provides the ability to iterate\n// over the registered types or lookup a type by name.\npackage protoregistry\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"google.golang.org/protobuf/internal/encoding/messageset\"\n\t\"google.golang.org/protobuf/internal/errors\"\n\t\"google.golang.org/protobuf/internal/flags\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// conflictPolicy configures the policy for handling registration conflicts.\n//\n// It can be over-written at compile time with a linker-initialized variable:\n//\n//\tgo build -ldflags \"-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn\"\n//\n// It can be over-written at program execution with an environment variable:\n//\n//\tGOLANG_PROTOBUF_REGISTRATION_CONFLICT=warn ./main\n//\n// Neither of the above are covered by the compatibility promise and\n// may be removed in a future release of this module.\nvar conflictPolicy = \"panic\" // \"panic\" | \"warn\" | \"ignore\"\n\n// ignoreConflict reports whether to ignore a registration conflict\n// given the descriptor being registered and the error.\n// It is a variable so that the behavior is easily overridden in another file.\nvar ignoreConflict = func(d protoreflect.Descriptor, err error) bool {\n\tconst env = \"GOLANG_PROTOBUF_REGISTRATION_CONFLICT\"\n\tconst faq = \"https://protobuf.dev/reference/go/faq#namespace-conflict\"\n\tpolicy := conflictPolicy\n\tif v := os.Getenv(env); v != \"\" {\n\t\tpolicy = v\n\t}\n\tswitch policy {\n\tcase \"panic\":\n\t\tpanic(fmt.Sprintf(\"%v\\nSee %v\\n\", err, faq))\n\tcase \"warn\":\n\t\tfmt.Fprintf(os.Stderr, \"WARNING: %v\\nSee %v\\n\\n\", err, faq)\n\t\treturn true\n\tcase \"ignore\":\n\t\treturn true\n\tdefault:\n\t\tpanic(\"invalid \" + env + \" value: \" + os.Getenv(env))\n\t}\n}\n\nvar globalMutex sync.RWMutex\n\n// GlobalFiles is a global registry of file descriptors.\nvar GlobalFiles *Files = new(Files)\n\n// GlobalTypes is the registry used by default for type lookups\n// unless a local registry is provided by the user.\nvar GlobalTypes *Types = new(Types)\n\n// NotFound is a sentinel error value to indicate that the type was not found.\n//\n// Since registry lookup can happen in the critical performance path, resolvers\n// must return this exact error value, not an error wrapping it.\nvar NotFound = errors.New(\"not found\")\n\n// Files is a registry for looking up or iterating over files and the\n// descriptors contained within them.\n// The Find and Range methods are safe for concurrent use.\ntype Files struct {\n\t// The map of descsByName contains:\n\t//\tEnumDescriptor\n\t//\tEnumValueDescriptor\n\t//\tMessageDescriptor\n\t//\tExtensionDescriptor\n\t//\tServiceDescriptor\n\t//\t*packageDescriptor\n\t//\n\t// Note that files are stored as a slice, since a package may contain\n\t// multiple files. Only top-level declarations are registered.\n\t// Note that enum values are in the top-level since that are in the same\n\t// scope as the parent enum.\n\tdescsByName map[protoreflect.FullName]interface{}\n\tfilesByPath map[string][]protoreflect.FileDescriptor\n\tnumFiles    int\n}\n\ntype packageDescriptor struct {\n\tfiles []protoreflect.FileDescriptor\n}\n\n// RegisterFile registers the provided file descriptor.\n//\n// If any descriptor within the file conflicts with the descriptor of any\n// previously registered file (e.g., two enums with the same full name),\n// then the file is not registered and an error is returned.\n//\n// It is permitted for multiple files to have the same file path.\nfunc (r *Files) RegisterFile(file protoreflect.FileDescriptor) error {\n\tif r == GlobalFiles {\n\t\tglobalMutex.Lock()\n\t\tdefer globalMutex.Unlock()\n\t}\n\tif r.descsByName == nil {\n\t\tr.descsByName = map[protoreflect.FullName]interface{}{\n\t\t\t\"\": &packageDescriptor{},\n\t\t}\n\t\tr.filesByPath = make(map[string][]protoreflect.FileDescriptor)\n\t}\n\tpath := file.Path()\n\tif prev := r.filesByPath[path]; len(prev) > 0 {\n\t\tr.checkGenProtoConflict(path)\n\t\terr := errors.New(\"file %q is already registered\", file.Path())\n\t\terr = amendErrorWithCaller(err, prev[0], file)\n\t\tif !(r == GlobalFiles && ignoreConflict(file, err)) {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfor name := file.Package(); name != \"\"; name = name.Parent() {\n\t\tswitch prev := r.descsByName[name]; prev.(type) {\n\t\tcase nil, *packageDescriptor:\n\t\tdefault:\n\t\t\terr := errors.New(\"file %q has a package name conflict over %v\", file.Path(), name)\n\t\t\terr = amendErrorWithCaller(err, prev, file)\n\t\t\tif r == GlobalFiles && ignoreConflict(file, err) {\n\t\t\t\terr = nil\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t}\n\tvar err error\n\tvar hasConflict bool\n\trangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) {\n\t\tif prev := r.descsByName[d.FullName()]; prev != nil {\n\t\t\thasConflict = true\n\t\t\terr = errors.New(\"file %q has a name conflict over %v\", file.Path(), d.FullName())\n\t\t\terr = amendErrorWithCaller(err, prev, file)\n\t\t\tif r == GlobalFiles && ignoreConflict(d, err) {\n\t\t\t\terr = nil\n\t\t\t}\n\t\t}\n\t})\n\tif hasConflict {\n\t\treturn err\n\t}\n\n\tfor name := file.Package(); name != \"\"; name = name.Parent() {\n\t\tif r.descsByName[name] == nil {\n\t\t\tr.descsByName[name] = &packageDescriptor{}\n\t\t}\n\t}\n\tp := r.descsByName[file.Package()].(*packageDescriptor)\n\tp.files = append(p.files, file)\n\trangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) {\n\t\tr.descsByName[d.FullName()] = d\n\t})\n\tr.filesByPath[path] = append(r.filesByPath[path], file)\n\tr.numFiles++\n\treturn nil\n}\n\n// Several well-known types were hosted in the google.golang.org/genproto module\n// but were later moved to this module. To avoid a weak dependency on the\n// genproto module (and its relatively large set of transitive dependencies),\n// we rely on a registration conflict to determine whether the genproto version\n// is too old (i.e., does not contain aliases to the new type declarations).\nfunc (r *Files) checkGenProtoConflict(path string) {\n\tif r != GlobalFiles {\n\t\treturn\n\t}\n\tvar prevPath string\n\tconst prevModule = \"google.golang.org/genproto\"\n\tconst prevVersion = \"cb27e3aa (May 26th, 2020)\"\n\tswitch path {\n\tcase \"google/protobuf/field_mask.proto\":\n\t\tprevPath = prevModule + \"/protobuf/field_mask\"\n\tcase \"google/protobuf/api.proto\":\n\t\tprevPath = prevModule + \"/protobuf/api\"\n\tcase \"google/protobuf/type.proto\":\n\t\tprevPath = prevModule + \"/protobuf/ptype\"\n\tcase \"google/protobuf/source_context.proto\":\n\t\tprevPath = prevModule + \"/protobuf/source_context\"\n\tdefault:\n\t\treturn\n\t}\n\tpkgName := strings.TrimSuffix(strings.TrimPrefix(path, \"google/protobuf/\"), \".proto\")\n\tpkgName = strings.Replace(pkgName, \"_\", \"\", -1) + \"pb\" // e.g., \"field_mask\" => \"fieldmaskpb\"\n\tcurrPath := \"google.golang.org/protobuf/types/known/\" + pkgName\n\tpanic(fmt.Sprintf(\"\"+\n\t\t\"duplicate registration of %q\\n\"+\n\t\t\"\\n\"+\n\t\t\"The generated definition for this file has moved:\\n\"+\n\t\t\"\\tfrom: %q\\n\"+\n\t\t\"\\tto:   %q\\n\"+\n\t\t\"A dependency on the %q module must\\n\"+\n\t\t\"be at version %v or higher.\\n\"+\n\t\t\"\\n\"+\n\t\t\"Upgrade the dependency by running:\\n\"+\n\t\t\"\\tgo get -u %v\\n\",\n\t\tpath, prevPath, currPath, prevModule, prevVersion, prevPath))\n}\n\n// FindDescriptorByName looks up a descriptor by the full name.\n//\n// This returns (nil, NotFound) if not found.\nfunc (r *Files) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tprefix := name\n\tsuffix := nameSuffix(\"\")\n\tfor prefix != \"\" {\n\t\tif d, ok := r.descsByName[prefix]; ok {\n\t\t\tswitch d := d.(type) {\n\t\t\tcase protoreflect.EnumDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\tcase protoreflect.EnumValueDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\tcase protoreflect.MessageDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\t\tif d := findDescriptorInMessage(d, suffix); d != nil && d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\tcase protoreflect.ExtensionDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\tcase protoreflect.ServiceDescriptor:\n\t\t\t\tif d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\t\tif d := d.Methods().ByName(suffix.Pop()); d != nil && d.FullName() == name {\n\t\t\t\t\treturn d, nil\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil, NotFound\n\t\t}\n\t\tprefix = prefix.Parent()\n\t\tsuffix = nameSuffix(name[len(prefix)+len(\".\"):])\n\t}\n\treturn nil, NotFound\n}\n\nfunc findDescriptorInMessage(md protoreflect.MessageDescriptor, suffix nameSuffix) protoreflect.Descriptor {\n\tname := suffix.Pop()\n\tif suffix == \"\" {\n\t\tif ed := md.Enums().ByName(name); ed != nil {\n\t\t\treturn ed\n\t\t}\n\t\tfor i := md.Enums().Len() - 1; i >= 0; i-- {\n\t\t\tif vd := md.Enums().Get(i).Values().ByName(name); vd != nil {\n\t\t\t\treturn vd\n\t\t\t}\n\t\t}\n\t\tif xd := md.Extensions().ByName(name); xd != nil {\n\t\t\treturn xd\n\t\t}\n\t\tif fd := md.Fields().ByName(name); fd != nil {\n\t\t\treturn fd\n\t\t}\n\t\tif od := md.Oneofs().ByName(name); od != nil {\n\t\t\treturn od\n\t\t}\n\t}\n\tif md := md.Messages().ByName(name); md != nil {\n\t\tif suffix == \"\" {\n\t\t\treturn md\n\t\t}\n\t\treturn findDescriptorInMessage(md, suffix)\n\t}\n\treturn nil\n}\n\ntype nameSuffix string\n\nfunc (s *nameSuffix) Pop() (name protoreflect.Name) {\n\tif i := strings.IndexByte(string(*s), '.'); i >= 0 {\n\t\tname, *s = protoreflect.Name((*s)[:i]), (*s)[i+1:]\n\t} else {\n\t\tname, *s = protoreflect.Name((*s)), \"\"\n\t}\n\treturn name\n}\n\n// FindFileByPath looks up a file by the path.\n//\n// This returns (nil, NotFound) if not found.\n// This returns an error if multiple files have the same path.\nfunc (r *Files) FindFileByPath(path string) (protoreflect.FileDescriptor, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfds := r.filesByPath[path]\n\tswitch len(fds) {\n\tcase 0:\n\t\treturn nil, NotFound\n\tcase 1:\n\t\treturn fds[0], nil\n\tdefault:\n\t\treturn nil, errors.New(\"multiple files named %q\", path)\n\t}\n}\n\n// NumFiles reports the number of registered files,\n// including duplicate files with the same name.\nfunc (r *Files) NumFiles() int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn r.numFiles\n}\n\n// RangeFiles iterates over all registered files while f returns true.\n// If multiple files have the same name, RangeFiles iterates over all of them.\n// The iteration order is undefined.\nfunc (r *Files) RangeFiles(f func(protoreflect.FileDescriptor) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, files := range r.filesByPath {\n\t\tfor _, file := range files {\n\t\t\tif !f(file) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// NumFilesByPackage reports the number of registered files in a proto package.\nfunc (r *Files) NumFilesByPackage(name protoreflect.FullName) int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tp, ok := r.descsByName[name].(*packageDescriptor)\n\tif !ok {\n\t\treturn 0\n\t}\n\treturn len(p.files)\n}\n\n// RangeFilesByPackage iterates over all registered files in a given proto package\n// while f returns true. The iteration order is undefined.\nfunc (r *Files) RangeFilesByPackage(name protoreflect.FullName, f func(protoreflect.FileDescriptor) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalFiles {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tp, ok := r.descsByName[name].(*packageDescriptor)\n\tif !ok {\n\t\treturn\n\t}\n\tfor _, file := range p.files {\n\t\tif !f(file) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// rangeTopLevelDescriptors iterates over all top-level descriptors in a file\n// which will be directly entered into the registry.\nfunc rangeTopLevelDescriptors(fd protoreflect.FileDescriptor, f func(protoreflect.Descriptor)) {\n\teds := fd.Enums()\n\tfor i := eds.Len() - 1; i >= 0; i-- {\n\t\tf(eds.Get(i))\n\t\tvds := eds.Get(i).Values()\n\t\tfor i := vds.Len() - 1; i >= 0; i-- {\n\t\t\tf(vds.Get(i))\n\t\t}\n\t}\n\tmds := fd.Messages()\n\tfor i := mds.Len() - 1; i >= 0; i-- {\n\t\tf(mds.Get(i))\n\t}\n\txds := fd.Extensions()\n\tfor i := xds.Len() - 1; i >= 0; i-- {\n\t\tf(xds.Get(i))\n\t}\n\tsds := fd.Services()\n\tfor i := sds.Len() - 1; i >= 0; i-- {\n\t\tf(sds.Get(i))\n\t}\n}\n\n// MessageTypeResolver is an interface for looking up messages.\n//\n// A compliant implementation must deterministically return the same type\n// if no error is encountered.\n//\n// The Types type implements this interface.\ntype MessageTypeResolver interface {\n\t// FindMessageByName looks up a message by its full name.\n\t// E.g., \"google.protobuf.Any\"\n\t//\n\t// This return (nil, NotFound) if not found.\n\tFindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error)\n\n\t// FindMessageByURL looks up a message by a URL identifier.\n\t// See documentation on google.protobuf.Any.type_url for the URL format.\n\t//\n\t// This returns (nil, NotFound) if not found.\n\tFindMessageByURL(url string) (protoreflect.MessageType, error)\n}\n\n// ExtensionTypeResolver is an interface for looking up extensions.\n//\n// A compliant implementation must deterministically return the same type\n// if no error is encountered.\n//\n// The Types type implements this interface.\ntype ExtensionTypeResolver interface {\n\t// FindExtensionByName looks up a extension field by the field's full name.\n\t// Note that this is the full name of the field as determined by\n\t// where the extension is declared and is unrelated to the full name of the\n\t// message being extended.\n\t//\n\t// This returns (nil, NotFound) if not found.\n\tFindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)\n\n\t// FindExtensionByNumber looks up a extension field by the field number\n\t// within some parent message, identified by full name.\n\t//\n\t// This returns (nil, NotFound) if not found.\n\tFindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)\n}\n\nvar (\n\t_ MessageTypeResolver   = (*Types)(nil)\n\t_ ExtensionTypeResolver = (*Types)(nil)\n)\n\n// Types is a registry for looking up or iterating over descriptor types.\n// The Find and Range methods are safe for concurrent use.\ntype Types struct {\n\ttypesByName         typesByName\n\textensionsByMessage extensionsByMessage\n\n\tnumEnums      int\n\tnumMessages   int\n\tnumExtensions int\n}\n\ntype (\n\ttypesByName         map[protoreflect.FullName]interface{}\n\textensionsByMessage map[protoreflect.FullName]extensionsByNumber\n\textensionsByNumber  map[protoreflect.FieldNumber]protoreflect.ExtensionType\n)\n\n// RegisterMessage registers the provided message type.\n//\n// If a naming conflict occurs, the type is not registered and an error is returned.\nfunc (r *Types) RegisterMessage(mt protoreflect.MessageType) error {\n\t// Under rare circumstances getting the descriptor might recursively\n\t// examine the registry, so fetch it before locking.\n\tmd := mt.Descriptor()\n\n\tif r == GlobalTypes {\n\t\tglobalMutex.Lock()\n\t\tdefer globalMutex.Unlock()\n\t}\n\n\tif err := r.register(\"message\", md, mt); err != nil {\n\t\treturn err\n\t}\n\tr.numMessages++\n\treturn nil\n}\n\n// RegisterEnum registers the provided enum type.\n//\n// If a naming conflict occurs, the type is not registered and an error is returned.\nfunc (r *Types) RegisterEnum(et protoreflect.EnumType) error {\n\t// Under rare circumstances getting the descriptor might recursively\n\t// examine the registry, so fetch it before locking.\n\ted := et.Descriptor()\n\n\tif r == GlobalTypes {\n\t\tglobalMutex.Lock()\n\t\tdefer globalMutex.Unlock()\n\t}\n\n\tif err := r.register(\"enum\", ed, et); err != nil {\n\t\treturn err\n\t}\n\tr.numEnums++\n\treturn nil\n}\n\n// RegisterExtension registers the provided extension type.\n//\n// If a naming conflict occurs, the type is not registered and an error is returned.\nfunc (r *Types) RegisterExtension(xt protoreflect.ExtensionType) error {\n\t// Under rare circumstances getting the descriptor might recursively\n\t// examine the registry, so fetch it before locking.\n\t//\n\t// A known case where this can happen: Fetching the TypeDescriptor for a\n\t// legacy ExtensionDesc can consult the global registry.\n\txd := xt.TypeDescriptor()\n\n\tif r == GlobalTypes {\n\t\tglobalMutex.Lock()\n\t\tdefer globalMutex.Unlock()\n\t}\n\n\tfield := xd.Number()\n\tmessage := xd.ContainingMessage().FullName()\n\tif prev := r.extensionsByMessage[message][field]; prev != nil {\n\t\terr := errors.New(\"extension number %d is already registered on message %v\", field, message)\n\t\terr = amendErrorWithCaller(err, prev, xt)\n\t\tif !(r == GlobalTypes && ignoreConflict(xd, err)) {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := r.register(\"extension\", xd, xt); err != nil {\n\t\treturn err\n\t}\n\tif r.extensionsByMessage == nil {\n\t\tr.extensionsByMessage = make(extensionsByMessage)\n\t}\n\tif r.extensionsByMessage[message] == nil {\n\t\tr.extensionsByMessage[message] = make(extensionsByNumber)\n\t}\n\tr.extensionsByMessage[message][field] = xt\n\tr.numExtensions++\n\treturn nil\n}\n\nfunc (r *Types) register(kind string, desc protoreflect.Descriptor, typ interface{}) error {\n\tname := desc.FullName()\n\tprev := r.typesByName[name]\n\tif prev != nil {\n\t\terr := errors.New(\"%v %v is already registered\", kind, name)\n\t\terr = amendErrorWithCaller(err, prev, typ)\n\t\tif !(r == GlobalTypes && ignoreConflict(desc, err)) {\n\t\t\treturn err\n\t\t}\n\t}\n\tif r.typesByName == nil {\n\t\tr.typesByName = make(typesByName)\n\t}\n\tr.typesByName[name] = typ\n\treturn nil\n}\n\n// FindEnumByName looks up an enum by its full name.\n// E.g., \"google.protobuf.Field.Kind\".\n//\n// This returns (nil, NotFound) if not found.\nfunc (r *Types) FindEnumByName(enum protoreflect.FullName) (protoreflect.EnumType, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tif v := r.typesByName[enum]; v != nil {\n\t\tif et, _ := v.(protoreflect.EnumType); et != nil {\n\t\t\treturn et, nil\n\t\t}\n\t\treturn nil, errors.New(\"found wrong type: got %v, want enum\", typeName(v))\n\t}\n\treturn nil, NotFound\n}\n\n// FindMessageByName looks up a message by its full name,\n// e.g. \"google.protobuf.Any\".\n//\n// This returns (nil, NotFound) if not found.\nfunc (r *Types) FindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tif v := r.typesByName[message]; v != nil {\n\t\tif mt, _ := v.(protoreflect.MessageType); mt != nil {\n\t\t\treturn mt, nil\n\t\t}\n\t\treturn nil, errors.New(\"found wrong type: got %v, want message\", typeName(v))\n\t}\n\treturn nil, NotFound\n}\n\n// FindMessageByURL looks up a message by a URL identifier.\n// See documentation on google.protobuf.Any.type_url for the URL format.\n//\n// This returns (nil, NotFound) if not found.\nfunc (r *Types) FindMessageByURL(url string) (protoreflect.MessageType, error) {\n\t// This function is similar to FindMessageByName but\n\t// truncates anything before and including '/' in the URL.\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tmessage := protoreflect.FullName(url)\n\tif i := strings.LastIndexByte(url, '/'); i >= 0 {\n\t\tmessage = message[i+len(\"/\"):]\n\t}\n\n\tif v := r.typesByName[message]; v != nil {\n\t\tif mt, _ := v.(protoreflect.MessageType); mt != nil {\n\t\t\treturn mt, nil\n\t\t}\n\t\treturn nil, errors.New(\"found wrong type: got %v, want message\", typeName(v))\n\t}\n\treturn nil, NotFound\n}\n\n// FindExtensionByName looks up a extension field by the field's full name.\n// Note that this is the full name of the field as determined by\n// where the extension is declared and is unrelated to the full name of the\n// message being extended.\n//\n// This returns (nil, NotFound) if not found.\nfunc (r *Types) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tif v := r.typesByName[field]; v != nil {\n\t\tif xt, _ := v.(protoreflect.ExtensionType); xt != nil {\n\t\t\treturn xt, nil\n\t\t}\n\n\t\t// MessageSet extensions are special in that the name of the extension\n\t\t// is the name of the message type used to extend the MessageSet.\n\t\t// This naming scheme is used by text and JSON serialization.\n\t\t//\n\t\t// This feature is protected by the ProtoLegacy flag since MessageSets\n\t\t// are a proto1 feature that is long deprecated.\n\t\tif flags.ProtoLegacy {\n\t\t\tif _, ok := v.(protoreflect.MessageType); ok {\n\t\t\t\tfield := field.Append(messageset.ExtensionName)\n\t\t\t\tif v := r.typesByName[field]; v != nil {\n\t\t\t\t\tif xt, _ := v.(protoreflect.ExtensionType); xt != nil {\n\t\t\t\t\t\tif messageset.IsMessageSetExtension(xt.TypeDescriptor()) {\n\t\t\t\t\t\t\treturn xt, nil\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nil, errors.New(\"found wrong type: got %v, want extension\", typeName(v))\n\t}\n\treturn nil, NotFound\n}\n\n// FindExtensionByNumber looks up a extension field by the field number\n// within some parent message, identified by full name.\n//\n// This returns (nil, NotFound) if not found.\nfunc (r *Types) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) {\n\tif r == nil {\n\t\treturn nil, NotFound\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tif xt, ok := r.extensionsByMessage[message][field]; ok {\n\t\treturn xt, nil\n\t}\n\treturn nil, NotFound\n}\n\n// NumEnums reports the number of registered enums.\nfunc (r *Types) NumEnums() int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn r.numEnums\n}\n\n// RangeEnums iterates over all registered enums while f returns true.\n// Iteration order is undefined.\nfunc (r *Types) RangeEnums(f func(protoreflect.EnumType) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, typ := range r.typesByName {\n\t\tif et, ok := typ.(protoreflect.EnumType); ok {\n\t\t\tif !f(et) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// NumMessages reports the number of registered messages.\nfunc (r *Types) NumMessages() int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn r.numMessages\n}\n\n// RangeMessages iterates over all registered messages while f returns true.\n// Iteration order is undefined.\nfunc (r *Types) RangeMessages(f func(protoreflect.MessageType) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, typ := range r.typesByName {\n\t\tif mt, ok := typ.(protoreflect.MessageType); ok {\n\t\t\tif !f(mt) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// NumExtensions reports the number of registered extensions.\nfunc (r *Types) NumExtensions() int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn r.numExtensions\n}\n\n// RangeExtensions iterates over all registered extensions while f returns true.\n// Iteration order is undefined.\nfunc (r *Types) RangeExtensions(f func(protoreflect.ExtensionType) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, typ := range r.typesByName {\n\t\tif xt, ok := typ.(protoreflect.ExtensionType); ok {\n\t\t\tif !f(xt) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// NumExtensionsByMessage reports the number of registered extensions for\n// a given message type.\nfunc (r *Types) NumExtensionsByMessage(message protoreflect.FullName) int {\n\tif r == nil {\n\t\treturn 0\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\treturn len(r.extensionsByMessage[message])\n}\n\n// RangeExtensionsByMessage iterates over all registered extensions filtered\n// by a given message type while f returns true. Iteration order is undefined.\nfunc (r *Types) RangeExtensionsByMessage(message protoreflect.FullName, f func(protoreflect.ExtensionType) bool) {\n\tif r == nil {\n\t\treturn\n\t}\n\tif r == GlobalTypes {\n\t\tglobalMutex.RLock()\n\t\tdefer globalMutex.RUnlock()\n\t}\n\tfor _, xt := range r.extensionsByMessage[message] {\n\t\tif !f(xt) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc typeName(t interface{}) string {\n\tswitch t.(type) {\n\tcase protoreflect.EnumType:\n\t\treturn \"enum\"\n\tcase protoreflect.MessageType:\n\t\treturn \"message\"\n\tcase protoreflect.ExtensionType:\n\t\treturn \"extension\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"%T\", t)\n\t}\n}\n\nfunc amendErrorWithCaller(err error, prev, curr interface{}) error {\n\tprevPkg := goPackage(prev)\n\tcurrPkg := goPackage(curr)\n\tif prevPkg == \"\" || currPkg == \"\" || prevPkg == currPkg {\n\t\treturn err\n\t}\n\treturn errors.New(\"%s\\n\\tpreviously from: %q\\n\\tcurrently from:  %q\", err, prevPkg, currPkg)\n}\n\nfunc goPackage(v interface{}) string {\n\tswitch d := v.(type) {\n\tcase protoreflect.EnumType:\n\t\tv = d.Descriptor()\n\tcase protoreflect.MessageType:\n\t\tv = d.Descriptor()\n\tcase protoreflect.ExtensionType:\n\t\tv = d.TypeDescriptor()\n\t}\n\tif d, ok := v.(protoreflect.Descriptor); ok {\n\t\tv = d.ParentFile()\n\t}\n\tif d, ok := v.(interface{ GoPackagePath() string }); ok {\n\t\treturn d.GoPackagePath()\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoiface\n\ntype MessageV1 interface {\n\tReset()\n\tString() string\n\tProtoMessage()\n}\n\ntype ExtensionRangeV1 struct {\n\tStart, End int32 // both inclusive\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/runtime/protoiface/methods.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protoiface contains types referenced or implemented by messages.\n//\n// WARNING: This package should only be imported by message implementations.\n// The functionality found in this package should be accessed through\n// higher-level abstractions provided by the proto package.\npackage protoiface\n\nimport (\n\t\"google.golang.org/protobuf/internal/pragma\"\n\t\"google.golang.org/protobuf/reflect/protoreflect\"\n)\n\n// Methods is a set of optional fast-path implementations of various operations.\ntype Methods = struct {\n\tpragma.NoUnkeyedLiterals\n\n\t// Flags indicate support for optional features.\n\tFlags SupportFlags\n\n\t// Size returns the size in bytes of the wire-format encoding of a message.\n\t// Marshal must be provided if a custom Size is provided.\n\tSize func(SizeInput) SizeOutput\n\n\t// Marshal formats a message in the wire-format encoding to the provided buffer.\n\t// Size should be provided if a custom Marshal is provided.\n\t// It must not return an error for a partial message.\n\tMarshal func(MarshalInput) (MarshalOutput, error)\n\n\t// Unmarshal parses the wire-format encoding and merges the result into a message.\n\t// It must not reset the target message or return an error for a partial message.\n\tUnmarshal func(UnmarshalInput) (UnmarshalOutput, error)\n\n\t// Merge merges the contents of a source message into a destination message.\n\tMerge func(MergeInput) MergeOutput\n\n\t// CheckInitialized returns an error if any required fields in the message are not set.\n\tCheckInitialized func(CheckInitializedInput) (CheckInitializedOutput, error)\n}\n\n// SupportFlags indicate support for optional features.\ntype SupportFlags = uint64\n\nconst (\n\t// SupportMarshalDeterministic reports whether MarshalOptions.Deterministic is supported.\n\tSupportMarshalDeterministic SupportFlags = 1 << iota\n\n\t// SupportUnmarshalDiscardUnknown reports whether UnmarshalOptions.DiscardUnknown is supported.\n\tSupportUnmarshalDiscardUnknown\n)\n\n// SizeInput is input to the Size method.\ntype SizeInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessage protoreflect.Message\n\tFlags   MarshalInputFlags\n}\n\n// SizeOutput is output from the Size method.\ntype SizeOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tSize int\n}\n\n// MarshalInput is input to the Marshal method.\ntype MarshalInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessage protoreflect.Message\n\tBuf     []byte // output is appended to this buffer\n\tFlags   MarshalInputFlags\n}\n\n// MarshalOutput is output from the Marshal method.\ntype MarshalOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tBuf []byte // contains marshaled message\n}\n\n// MarshalInputFlags configure the marshaler.\n// Most flags correspond to fields in proto.MarshalOptions.\ntype MarshalInputFlags = uint8\n\nconst (\n\tMarshalDeterministic MarshalInputFlags = 1 << iota\n\tMarshalUseCachedSize\n)\n\n// UnmarshalInput is input to the Unmarshal method.\ntype UnmarshalInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessage  protoreflect.Message\n\tBuf      []byte // input buffer\n\tFlags    UnmarshalInputFlags\n\tResolver interface {\n\t\tFindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)\n\t\tFindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)\n\t}\n\tDepth int\n}\n\n// UnmarshalOutput is output from the Unmarshal method.\ntype UnmarshalOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tFlags UnmarshalOutputFlags\n}\n\n// UnmarshalInputFlags configure the unmarshaler.\n// Most flags correspond to fields in proto.UnmarshalOptions.\ntype UnmarshalInputFlags = uint8\n\nconst (\n\tUnmarshalDiscardUnknown UnmarshalInputFlags = 1 << iota\n)\n\n// UnmarshalOutputFlags are output from the Unmarshal method.\ntype UnmarshalOutputFlags = uint8\n\nconst (\n\t// UnmarshalInitialized may be set on return if all required fields are known to be set.\n\t// If unset, then it does not necessarily indicate that the message is uninitialized,\n\t// only that its status could not be confirmed.\n\tUnmarshalInitialized UnmarshalOutputFlags = 1 << iota\n)\n\n// MergeInput is input to the Merge method.\ntype MergeInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tSource      protoreflect.Message\n\tDestination protoreflect.Message\n}\n\n// MergeOutput is output from the Merge method.\ntype MergeOutput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tFlags MergeOutputFlags\n}\n\n// MergeOutputFlags are output from the Merge method.\ntype MergeOutputFlags = uint8\n\nconst (\n\t// MergeComplete reports whether the merge was performed.\n\t// If unset, the merger must have made no changes to the destination.\n\tMergeComplete MergeOutputFlags = 1 << iota\n)\n\n// CheckInitializedInput is input to the CheckInitialized method.\ntype CheckInitializedInput = struct {\n\tpragma.NoUnkeyedLiterals\n\n\tMessage protoreflect.Message\n}\n\n// CheckInitializedOutput is output from the CheckInitialized method.\ntype CheckInitializedOutput = struct {\n\tpragma.NoUnkeyedLiterals\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package protoimpl contains the default implementation for messages\n// generated by protoc-gen-go.\n//\n// WARNING: This package should only ever be imported by generated messages.\n// The compatibility agreement covers nothing except for functionality needed\n// to keep existing generated messages operational. Breakages that occur due\n// to unauthorized usages of this package are not the author's responsibility.\npackage protoimpl\n\nimport (\n\t\"google.golang.org/protobuf/internal/filedesc\"\n\t\"google.golang.org/protobuf/internal/filetype\"\n\t\"google.golang.org/protobuf/internal/impl\"\n)\n\n// UnsafeEnabled specifies whether package unsafe can be used.\nconst UnsafeEnabled = impl.UnsafeEnabled\n\ntype (\n\t// Types used by generated code in init functions.\n\tDescBuilder = filedesc.Builder\n\tTypeBuilder = filetype.Builder\n\n\t// Types used by generated code to implement EnumType, MessageType, and ExtensionType.\n\tEnumInfo      = impl.EnumInfo\n\tMessageInfo   = impl.MessageInfo\n\tExtensionInfo = impl.ExtensionInfo\n\n\t// Types embedded in generated messages.\n\tMessageState     = impl.MessageState\n\tSizeCache        = impl.SizeCache\n\tWeakFields       = impl.WeakFields\n\tUnknownFields    = impl.UnknownFields\n\tExtensionFields  = impl.ExtensionFields\n\tExtensionFieldV1 = impl.ExtensionField\n\n\tPointer = impl.Pointer\n)\n\nvar X impl.Export\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/runtime/protoimpl/version.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage protoimpl\n\nimport (\n\t\"google.golang.org/protobuf/internal/version\"\n)\n\nconst (\n\t// MaxVersion is the maximum supported version for generated .pb.go files.\n\t// It is always the current version of the module.\n\tMaxVersion = version.Minor\n\n\t// GenVersion is the runtime version required by generated .pb.go files.\n\t// This is incremented when generated code relies on new functionality\n\t// in the runtime.\n\tGenVersion = 20\n\n\t// MinVersion is the minimum supported version for generated .pb.go files.\n\t// This is incremented when the runtime drops support for old code.\n\tMinVersion = 0\n)\n\n// EnforceVersion is used by code generated by protoc-gen-go\n// to statically enforce minimum and maximum versions of this package.\n// A compilation failure implies either that:\n//   - the runtime package is too old and needs to be updated OR\n//   - the generated code is too old and needs to be regenerated.\n//\n// The runtime package can be upgraded by running:\n//\n//\tgo get google.golang.org/protobuf\n//\n// The generated code can be regenerated by running:\n//\n//\tprotoc --go_out=${PROTOC_GEN_GO_ARGS} ${PROTO_FILES}\n//\n// Example usage by generated code:\n//\n//\tconst (\n//\t\t// Verify that this generated code is sufficiently up-to-date.\n//\t\t_ = protoimpl.EnforceVersion(genVersion - protoimpl.MinVersion)\n//\t\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n//\t\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - genVersion)\n//\t)\n//\n// The genVersion is the current minor version used to generated the code.\n// This compile-time check relies on negative integer overflow of a uint\n// being a compilation failure (guaranteed by the Go specification).\ntype EnforceVersion uint\n\n// This enforces the following invariant:\n//\n//\tMinVersion ≤ GenVersion ≤ MaxVersion\nconst (\n\t_ = EnforceVersion(GenVersion - MinVersion)\n\t_ = EnforceVersion(MaxVersion - GenVersion)\n)\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Author: kenton@google.com (Kenton Varda)\n//  Based on original Protocol Buffers design by\n//  Sanjay Ghemawat, Jeff Dean, and others.\n//\n// The messages in this file describe the definitions found in .proto files.\n// A valid .proto file can be translated directly to a FileDescriptorProto\n// without any other information (e.g. without reading its imports).\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/descriptor.proto\n\npackage descriptorpb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\n// The verification state of the extension range.\ntype ExtensionRangeOptions_VerificationState int32\n\nconst (\n\t// All the extensions of the range must be declared.\n\tExtensionRangeOptions_DECLARATION ExtensionRangeOptions_VerificationState = 0\n\tExtensionRangeOptions_UNVERIFIED  ExtensionRangeOptions_VerificationState = 1\n)\n\n// Enum value maps for ExtensionRangeOptions_VerificationState.\nvar (\n\tExtensionRangeOptions_VerificationState_name = map[int32]string{\n\t\t0: \"DECLARATION\",\n\t\t1: \"UNVERIFIED\",\n\t}\n\tExtensionRangeOptions_VerificationState_value = map[string]int32{\n\t\t\"DECLARATION\": 0,\n\t\t\"UNVERIFIED\":  1,\n\t}\n)\n\nfunc (x ExtensionRangeOptions_VerificationState) Enum() *ExtensionRangeOptions_VerificationState {\n\tp := new(ExtensionRangeOptions_VerificationState)\n\t*p = x\n\treturn p\n}\n\nfunc (x ExtensionRangeOptions_VerificationState) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ExtensionRangeOptions_VerificationState) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[0].Descriptor()\n}\n\nfunc (ExtensionRangeOptions_VerificationState) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[0]\n}\n\nfunc (x ExtensionRangeOptions_VerificationState) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *ExtensionRangeOptions_VerificationState) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = ExtensionRangeOptions_VerificationState(num)\n\treturn nil\n}\n\n// Deprecated: Use ExtensionRangeOptions_VerificationState.Descriptor instead.\nfunc (ExtensionRangeOptions_VerificationState) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3, 0}\n}\n\ntype FieldDescriptorProto_Type int32\n\nconst (\n\t// 0 is reserved for errors.\n\t// Order is weird for historical reasons.\n\tFieldDescriptorProto_TYPE_DOUBLE FieldDescriptorProto_Type = 1\n\tFieldDescriptorProto_TYPE_FLOAT  FieldDescriptorProto_Type = 2\n\t// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if\n\t// negative values are likely.\n\tFieldDescriptorProto_TYPE_INT64  FieldDescriptorProto_Type = 3\n\tFieldDescriptorProto_TYPE_UINT64 FieldDescriptorProto_Type = 4\n\t// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if\n\t// negative values are likely.\n\tFieldDescriptorProto_TYPE_INT32   FieldDescriptorProto_Type = 5\n\tFieldDescriptorProto_TYPE_FIXED64 FieldDescriptorProto_Type = 6\n\tFieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7\n\tFieldDescriptorProto_TYPE_BOOL    FieldDescriptorProto_Type = 8\n\tFieldDescriptorProto_TYPE_STRING  FieldDescriptorProto_Type = 9\n\t// Tag-delimited aggregate.\n\t// Group type is deprecated and not supported in proto3. However, Proto3\n\t// implementations should still be able to parse the group wire format and\n\t// treat group fields as unknown fields.\n\tFieldDescriptorProto_TYPE_GROUP   FieldDescriptorProto_Type = 10\n\tFieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11 // Length-delimited aggregate.\n\t// New in version 2.\n\tFieldDescriptorProto_TYPE_BYTES    FieldDescriptorProto_Type = 12\n\tFieldDescriptorProto_TYPE_UINT32   FieldDescriptorProto_Type = 13\n\tFieldDescriptorProto_TYPE_ENUM     FieldDescriptorProto_Type = 14\n\tFieldDescriptorProto_TYPE_SFIXED32 FieldDescriptorProto_Type = 15\n\tFieldDescriptorProto_TYPE_SFIXED64 FieldDescriptorProto_Type = 16\n\tFieldDescriptorProto_TYPE_SINT32   FieldDescriptorProto_Type = 17 // Uses ZigZag encoding.\n\tFieldDescriptorProto_TYPE_SINT64   FieldDescriptorProto_Type = 18 // Uses ZigZag encoding.\n)\n\n// Enum value maps for FieldDescriptorProto_Type.\nvar (\n\tFieldDescriptorProto_Type_name = map[int32]string{\n\t\t1:  \"TYPE_DOUBLE\",\n\t\t2:  \"TYPE_FLOAT\",\n\t\t3:  \"TYPE_INT64\",\n\t\t4:  \"TYPE_UINT64\",\n\t\t5:  \"TYPE_INT32\",\n\t\t6:  \"TYPE_FIXED64\",\n\t\t7:  \"TYPE_FIXED32\",\n\t\t8:  \"TYPE_BOOL\",\n\t\t9:  \"TYPE_STRING\",\n\t\t10: \"TYPE_GROUP\",\n\t\t11: \"TYPE_MESSAGE\",\n\t\t12: \"TYPE_BYTES\",\n\t\t13: \"TYPE_UINT32\",\n\t\t14: \"TYPE_ENUM\",\n\t\t15: \"TYPE_SFIXED32\",\n\t\t16: \"TYPE_SFIXED64\",\n\t\t17: \"TYPE_SINT32\",\n\t\t18: \"TYPE_SINT64\",\n\t}\n\tFieldDescriptorProto_Type_value = map[string]int32{\n\t\t\"TYPE_DOUBLE\":   1,\n\t\t\"TYPE_FLOAT\":    2,\n\t\t\"TYPE_INT64\":    3,\n\t\t\"TYPE_UINT64\":   4,\n\t\t\"TYPE_INT32\":    5,\n\t\t\"TYPE_FIXED64\":  6,\n\t\t\"TYPE_FIXED32\":  7,\n\t\t\"TYPE_BOOL\":     8,\n\t\t\"TYPE_STRING\":   9,\n\t\t\"TYPE_GROUP\":    10,\n\t\t\"TYPE_MESSAGE\":  11,\n\t\t\"TYPE_BYTES\":    12,\n\t\t\"TYPE_UINT32\":   13,\n\t\t\"TYPE_ENUM\":     14,\n\t\t\"TYPE_SFIXED32\": 15,\n\t\t\"TYPE_SFIXED64\": 16,\n\t\t\"TYPE_SINT32\":   17,\n\t\t\"TYPE_SINT64\":   18,\n\t}\n)\n\nfunc (x FieldDescriptorProto_Type) Enum() *FieldDescriptorProto_Type {\n\tp := new(FieldDescriptorProto_Type)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldDescriptorProto_Type) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldDescriptorProto_Type) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[1].Descriptor()\n}\n\nfunc (FieldDescriptorProto_Type) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[1]\n}\n\nfunc (x FieldDescriptorProto_Type) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldDescriptorProto_Type) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldDescriptorProto_Type(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldDescriptorProto_Type.Descriptor instead.\nfunc (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4, 0}\n}\n\ntype FieldDescriptorProto_Label int32\n\nconst (\n\t// 0 is reserved for errors\n\tFieldDescriptorProto_LABEL_OPTIONAL FieldDescriptorProto_Label = 1\n\tFieldDescriptorProto_LABEL_REQUIRED FieldDescriptorProto_Label = 2\n\tFieldDescriptorProto_LABEL_REPEATED FieldDescriptorProto_Label = 3\n)\n\n// Enum value maps for FieldDescriptorProto_Label.\nvar (\n\tFieldDescriptorProto_Label_name = map[int32]string{\n\t\t1: \"LABEL_OPTIONAL\",\n\t\t2: \"LABEL_REQUIRED\",\n\t\t3: \"LABEL_REPEATED\",\n\t}\n\tFieldDescriptorProto_Label_value = map[string]int32{\n\t\t\"LABEL_OPTIONAL\": 1,\n\t\t\"LABEL_REQUIRED\": 2,\n\t\t\"LABEL_REPEATED\": 3,\n\t}\n)\n\nfunc (x FieldDescriptorProto_Label) Enum() *FieldDescriptorProto_Label {\n\tp := new(FieldDescriptorProto_Label)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldDescriptorProto_Label) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldDescriptorProto_Label) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[2].Descriptor()\n}\n\nfunc (FieldDescriptorProto_Label) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[2]\n}\n\nfunc (x FieldDescriptorProto_Label) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldDescriptorProto_Label) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldDescriptorProto_Label(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldDescriptorProto_Label.Descriptor instead.\nfunc (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4, 1}\n}\n\n// Generated classes can be optimized for speed or code size.\ntype FileOptions_OptimizeMode int32\n\nconst (\n\tFileOptions_SPEED FileOptions_OptimizeMode = 1 // Generate complete code for parsing, serialization,\n\t// etc.\n\tFileOptions_CODE_SIZE    FileOptions_OptimizeMode = 2 // Use ReflectionOps to implement these methods.\n\tFileOptions_LITE_RUNTIME FileOptions_OptimizeMode = 3 // Generate code using MessageLite and the lite runtime.\n)\n\n// Enum value maps for FileOptions_OptimizeMode.\nvar (\n\tFileOptions_OptimizeMode_name = map[int32]string{\n\t\t1: \"SPEED\",\n\t\t2: \"CODE_SIZE\",\n\t\t3: \"LITE_RUNTIME\",\n\t}\n\tFileOptions_OptimizeMode_value = map[string]int32{\n\t\t\"SPEED\":        1,\n\t\t\"CODE_SIZE\":    2,\n\t\t\"LITE_RUNTIME\": 3,\n\t}\n)\n\nfunc (x FileOptions_OptimizeMode) Enum() *FileOptions_OptimizeMode {\n\tp := new(FileOptions_OptimizeMode)\n\t*p = x\n\treturn p\n}\n\nfunc (x FileOptions_OptimizeMode) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FileOptions_OptimizeMode) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[3].Descriptor()\n}\n\nfunc (FileOptions_OptimizeMode) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[3]\n}\n\nfunc (x FileOptions_OptimizeMode) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FileOptions_OptimizeMode) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FileOptions_OptimizeMode(num)\n\treturn nil\n}\n\n// Deprecated: Use FileOptions_OptimizeMode.Descriptor instead.\nfunc (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10, 0}\n}\n\ntype FieldOptions_CType int32\n\nconst (\n\t// Default mode.\n\tFieldOptions_STRING FieldOptions_CType = 0\n\t// The option [ctype=CORD] may be applied to a non-repeated field of type\n\t// \"bytes\". It indicates that in C++, the data should be stored in a Cord\n\t// instead of a string.  For very large strings, this may reduce memory\n\t// fragmentation. It may also allow better performance when parsing from a\n\t// Cord, or when parsing with aliasing enabled, as the parsed Cord may then\n\t// alias the original buffer.\n\tFieldOptions_CORD         FieldOptions_CType = 1\n\tFieldOptions_STRING_PIECE FieldOptions_CType = 2\n)\n\n// Enum value maps for FieldOptions_CType.\nvar (\n\tFieldOptions_CType_name = map[int32]string{\n\t\t0: \"STRING\",\n\t\t1: \"CORD\",\n\t\t2: \"STRING_PIECE\",\n\t}\n\tFieldOptions_CType_value = map[string]int32{\n\t\t\"STRING\":       0,\n\t\t\"CORD\":         1,\n\t\t\"STRING_PIECE\": 2,\n\t}\n)\n\nfunc (x FieldOptions_CType) Enum() *FieldOptions_CType {\n\tp := new(FieldOptions_CType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_CType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldOptions_CType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[4].Descriptor()\n}\n\nfunc (FieldOptions_CType) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[4]\n}\n\nfunc (x FieldOptions_CType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldOptions_CType) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_CType(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldOptions_CType.Descriptor instead.\nfunc (FieldOptions_CType) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 0}\n}\n\ntype FieldOptions_JSType int32\n\nconst (\n\t// Use the default type.\n\tFieldOptions_JS_NORMAL FieldOptions_JSType = 0\n\t// Use JavaScript strings.\n\tFieldOptions_JS_STRING FieldOptions_JSType = 1\n\t// Use JavaScript numbers.\n\tFieldOptions_JS_NUMBER FieldOptions_JSType = 2\n)\n\n// Enum value maps for FieldOptions_JSType.\nvar (\n\tFieldOptions_JSType_name = map[int32]string{\n\t\t0: \"JS_NORMAL\",\n\t\t1: \"JS_STRING\",\n\t\t2: \"JS_NUMBER\",\n\t}\n\tFieldOptions_JSType_value = map[string]int32{\n\t\t\"JS_NORMAL\": 0,\n\t\t\"JS_STRING\": 1,\n\t\t\"JS_NUMBER\": 2,\n\t}\n)\n\nfunc (x FieldOptions_JSType) Enum() *FieldOptions_JSType {\n\tp := new(FieldOptions_JSType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_JSType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldOptions_JSType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[5].Descriptor()\n}\n\nfunc (FieldOptions_JSType) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[5]\n}\n\nfunc (x FieldOptions_JSType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldOptions_JSType) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_JSType(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldOptions_JSType.Descriptor instead.\nfunc (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 1}\n}\n\n// If set to RETENTION_SOURCE, the option will be omitted from the binary.\n// Note: as of January 2023, support for this is in progress and does not yet\n// have an effect (b/264593489).\ntype FieldOptions_OptionRetention int32\n\nconst (\n\tFieldOptions_RETENTION_UNKNOWN FieldOptions_OptionRetention = 0\n\tFieldOptions_RETENTION_RUNTIME FieldOptions_OptionRetention = 1\n\tFieldOptions_RETENTION_SOURCE  FieldOptions_OptionRetention = 2\n)\n\n// Enum value maps for FieldOptions_OptionRetention.\nvar (\n\tFieldOptions_OptionRetention_name = map[int32]string{\n\t\t0: \"RETENTION_UNKNOWN\",\n\t\t1: \"RETENTION_RUNTIME\",\n\t\t2: \"RETENTION_SOURCE\",\n\t}\n\tFieldOptions_OptionRetention_value = map[string]int32{\n\t\t\"RETENTION_UNKNOWN\": 0,\n\t\t\"RETENTION_RUNTIME\": 1,\n\t\t\"RETENTION_SOURCE\":  2,\n\t}\n)\n\nfunc (x FieldOptions_OptionRetention) Enum() *FieldOptions_OptionRetention {\n\tp := new(FieldOptions_OptionRetention)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_OptionRetention) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldOptions_OptionRetention) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[6].Descriptor()\n}\n\nfunc (FieldOptions_OptionRetention) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[6]\n}\n\nfunc (x FieldOptions_OptionRetention) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldOptions_OptionRetention) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_OptionRetention(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldOptions_OptionRetention.Descriptor instead.\nfunc (FieldOptions_OptionRetention) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 2}\n}\n\n// This indicates the types of entities that the field may apply to when used\n// as an option. If it is unset, then the field may be freely used as an\n// option on any kind of entity. Note: as of January 2023, support for this is\n// in progress and does not yet have an effect (b/264593489).\ntype FieldOptions_OptionTargetType int32\n\nconst (\n\tFieldOptions_TARGET_TYPE_UNKNOWN         FieldOptions_OptionTargetType = 0\n\tFieldOptions_TARGET_TYPE_FILE            FieldOptions_OptionTargetType = 1\n\tFieldOptions_TARGET_TYPE_EXTENSION_RANGE FieldOptions_OptionTargetType = 2\n\tFieldOptions_TARGET_TYPE_MESSAGE         FieldOptions_OptionTargetType = 3\n\tFieldOptions_TARGET_TYPE_FIELD           FieldOptions_OptionTargetType = 4\n\tFieldOptions_TARGET_TYPE_ONEOF           FieldOptions_OptionTargetType = 5\n\tFieldOptions_TARGET_TYPE_ENUM            FieldOptions_OptionTargetType = 6\n\tFieldOptions_TARGET_TYPE_ENUM_ENTRY      FieldOptions_OptionTargetType = 7\n\tFieldOptions_TARGET_TYPE_SERVICE         FieldOptions_OptionTargetType = 8\n\tFieldOptions_TARGET_TYPE_METHOD          FieldOptions_OptionTargetType = 9\n)\n\n// Enum value maps for FieldOptions_OptionTargetType.\nvar (\n\tFieldOptions_OptionTargetType_name = map[int32]string{\n\t\t0: \"TARGET_TYPE_UNKNOWN\",\n\t\t1: \"TARGET_TYPE_FILE\",\n\t\t2: \"TARGET_TYPE_EXTENSION_RANGE\",\n\t\t3: \"TARGET_TYPE_MESSAGE\",\n\t\t4: \"TARGET_TYPE_FIELD\",\n\t\t5: \"TARGET_TYPE_ONEOF\",\n\t\t6: \"TARGET_TYPE_ENUM\",\n\t\t7: \"TARGET_TYPE_ENUM_ENTRY\",\n\t\t8: \"TARGET_TYPE_SERVICE\",\n\t\t9: \"TARGET_TYPE_METHOD\",\n\t}\n\tFieldOptions_OptionTargetType_value = map[string]int32{\n\t\t\"TARGET_TYPE_UNKNOWN\":         0,\n\t\t\"TARGET_TYPE_FILE\":            1,\n\t\t\"TARGET_TYPE_EXTENSION_RANGE\": 2,\n\t\t\"TARGET_TYPE_MESSAGE\":         3,\n\t\t\"TARGET_TYPE_FIELD\":           4,\n\t\t\"TARGET_TYPE_ONEOF\":           5,\n\t\t\"TARGET_TYPE_ENUM\":            6,\n\t\t\"TARGET_TYPE_ENUM_ENTRY\":      7,\n\t\t\"TARGET_TYPE_SERVICE\":         8,\n\t\t\"TARGET_TYPE_METHOD\":          9,\n\t}\n)\n\nfunc (x FieldOptions_OptionTargetType) Enum() *FieldOptions_OptionTargetType {\n\tp := new(FieldOptions_OptionTargetType)\n\t*p = x\n\treturn p\n}\n\nfunc (x FieldOptions_OptionTargetType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (FieldOptions_OptionTargetType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[7].Descriptor()\n}\n\nfunc (FieldOptions_OptionTargetType) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[7]\n}\n\nfunc (x FieldOptions_OptionTargetType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *FieldOptions_OptionTargetType) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = FieldOptions_OptionTargetType(num)\n\treturn nil\n}\n\n// Deprecated: Use FieldOptions_OptionTargetType.Descriptor instead.\nfunc (FieldOptions_OptionTargetType) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 3}\n}\n\n// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,\n// or neither? HTTP based RPC implementation may choose GET verb for safe\n// methods, and PUT verb for idempotent methods instead of the default POST.\ntype MethodOptions_IdempotencyLevel int32\n\nconst (\n\tMethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0\n\tMethodOptions_NO_SIDE_EFFECTS     MethodOptions_IdempotencyLevel = 1 // implies idempotent\n\tMethodOptions_IDEMPOTENT          MethodOptions_IdempotencyLevel = 2 // idempotent, but may have side effects\n)\n\n// Enum value maps for MethodOptions_IdempotencyLevel.\nvar (\n\tMethodOptions_IdempotencyLevel_name = map[int32]string{\n\t\t0: \"IDEMPOTENCY_UNKNOWN\",\n\t\t1: \"NO_SIDE_EFFECTS\",\n\t\t2: \"IDEMPOTENT\",\n\t}\n\tMethodOptions_IdempotencyLevel_value = map[string]int32{\n\t\t\"IDEMPOTENCY_UNKNOWN\": 0,\n\t\t\"NO_SIDE_EFFECTS\":     1,\n\t\t\"IDEMPOTENT\":          2,\n\t}\n)\n\nfunc (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel {\n\tp := new(MethodOptions_IdempotencyLevel)\n\t*p = x\n\treturn p\n}\n\nfunc (x MethodOptions_IdempotencyLevel) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (MethodOptions_IdempotencyLevel) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[8].Descriptor()\n}\n\nfunc (MethodOptions_IdempotencyLevel) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[8]\n}\n\nfunc (x MethodOptions_IdempotencyLevel) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = MethodOptions_IdempotencyLevel(num)\n\treturn nil\n}\n\n// Deprecated: Use MethodOptions_IdempotencyLevel.Descriptor instead.\nfunc (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17, 0}\n}\n\n// Represents the identified object's effect on the element in the original\n// .proto file.\ntype GeneratedCodeInfo_Annotation_Semantic int32\n\nconst (\n\t// There is no effect or the effect is indescribable.\n\tGeneratedCodeInfo_Annotation_NONE GeneratedCodeInfo_Annotation_Semantic = 0\n\t// The element is set or otherwise mutated.\n\tGeneratedCodeInfo_Annotation_SET GeneratedCodeInfo_Annotation_Semantic = 1\n\t// An alias to the element is returned.\n\tGeneratedCodeInfo_Annotation_ALIAS GeneratedCodeInfo_Annotation_Semantic = 2\n)\n\n// Enum value maps for GeneratedCodeInfo_Annotation_Semantic.\nvar (\n\tGeneratedCodeInfo_Annotation_Semantic_name = map[int32]string{\n\t\t0: \"NONE\",\n\t\t1: \"SET\",\n\t\t2: \"ALIAS\",\n\t}\n\tGeneratedCodeInfo_Annotation_Semantic_value = map[string]int32{\n\t\t\"NONE\":  0,\n\t\t\"SET\":   1,\n\t\t\"ALIAS\": 2,\n\t}\n)\n\nfunc (x GeneratedCodeInfo_Annotation_Semantic) Enum() *GeneratedCodeInfo_Annotation_Semantic {\n\tp := new(GeneratedCodeInfo_Annotation_Semantic)\n\t*p = x\n\treturn p\n}\n\nfunc (x GeneratedCodeInfo_Annotation_Semantic) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (GeneratedCodeInfo_Annotation_Semantic) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_google_protobuf_descriptor_proto_enumTypes[9].Descriptor()\n}\n\nfunc (GeneratedCodeInfo_Annotation_Semantic) Type() protoreflect.EnumType {\n\treturn &file_google_protobuf_descriptor_proto_enumTypes[9]\n}\n\nfunc (x GeneratedCodeInfo_Annotation_Semantic) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Do not use.\nfunc (x *GeneratedCodeInfo_Annotation_Semantic) UnmarshalJSON(b []byte) error {\n\tnum, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*x = GeneratedCodeInfo_Annotation_Semantic(num)\n\treturn nil\n}\n\n// Deprecated: Use GeneratedCodeInfo_Annotation_Semantic.Descriptor instead.\nfunc (GeneratedCodeInfo_Annotation_Semantic) EnumDescriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20, 0, 0}\n}\n\n// The protocol compiler can output a FileDescriptorSet containing the .proto\n// files it parses.\ntype FileDescriptorSet struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tFile []*FileDescriptorProto `protobuf:\"bytes,1,rep,name=file\" json:\"file,omitempty\"`\n}\n\nfunc (x *FileDescriptorSet) Reset() {\n\t*x = FileDescriptorSet{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FileDescriptorSet) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FileDescriptorSet) ProtoMessage() {}\n\nfunc (x *FileDescriptorSet) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FileDescriptorSet.ProtoReflect.Descriptor instead.\nfunc (*FileDescriptorSet) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *FileDescriptorSet) GetFile() []*FileDescriptorProto {\n\tif x != nil {\n\t\treturn x.File\n\t}\n\treturn nil\n}\n\n// Describes a complete .proto file.\ntype FileDescriptorProto struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName    *string `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`       // file name, relative to root of source tree\n\tPackage *string `protobuf:\"bytes,2,opt,name=package\" json:\"package,omitempty\"` // e.g. \"foo\", \"foo.bar\", etc.\n\t// Names of files imported by this file.\n\tDependency []string `protobuf:\"bytes,3,rep,name=dependency\" json:\"dependency,omitempty\"`\n\t// Indexes of the public imported files in the dependency list above.\n\tPublicDependency []int32 `protobuf:\"varint,10,rep,name=public_dependency,json=publicDependency\" json:\"public_dependency,omitempty\"`\n\t// Indexes of the weak imported files in the dependency list.\n\t// For Google-internal migration only. Do not use.\n\tWeakDependency []int32 `protobuf:\"varint,11,rep,name=weak_dependency,json=weakDependency\" json:\"weak_dependency,omitempty\"`\n\t// All top-level definitions in this file.\n\tMessageType []*DescriptorProto        `protobuf:\"bytes,4,rep,name=message_type,json=messageType\" json:\"message_type,omitempty\"`\n\tEnumType    []*EnumDescriptorProto    `protobuf:\"bytes,5,rep,name=enum_type,json=enumType\" json:\"enum_type,omitempty\"`\n\tService     []*ServiceDescriptorProto `protobuf:\"bytes,6,rep,name=service\" json:\"service,omitempty\"`\n\tExtension   []*FieldDescriptorProto   `protobuf:\"bytes,7,rep,name=extension\" json:\"extension,omitempty\"`\n\tOptions     *FileOptions              `protobuf:\"bytes,8,opt,name=options\" json:\"options,omitempty\"`\n\t// This field contains optional information about the original source code.\n\t// You may safely remove this entire field without harming runtime\n\t// functionality of the descriptors -- the information is needed only by\n\t// development tools.\n\tSourceCodeInfo *SourceCodeInfo `protobuf:\"bytes,9,opt,name=source_code_info,json=sourceCodeInfo\" json:\"source_code_info,omitempty\"`\n\t// The syntax of the proto file.\n\t// The supported values are \"proto2\", \"proto3\", and \"editions\".\n\t//\n\t// If `edition` is present, this value must be \"editions\".\n\tSyntax *string `protobuf:\"bytes,12,opt,name=syntax\" json:\"syntax,omitempty\"`\n\t// The edition of the proto file, which is an opaque string.\n\tEdition *string `protobuf:\"bytes,13,opt,name=edition\" json:\"edition,omitempty\"`\n}\n\nfunc (x *FileDescriptorProto) Reset() {\n\t*x = FileDescriptorProto{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FileDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FileDescriptorProto) ProtoMessage() {}\n\nfunc (x *FileDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FileDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*FileDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *FileDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileDescriptorProto) GetPackage() string {\n\tif x != nil && x.Package != nil {\n\t\treturn *x.Package\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileDescriptorProto) GetDependency() []string {\n\tif x != nil {\n\t\treturn x.Dependency\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetPublicDependency() []int32 {\n\tif x != nil {\n\t\treturn x.PublicDependency\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetWeakDependency() []int32 {\n\tif x != nil {\n\t\treturn x.WeakDependency\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetMessageType() []*DescriptorProto {\n\tif x != nil {\n\t\treturn x.MessageType\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetEnumType() []*EnumDescriptorProto {\n\tif x != nil {\n\t\treturn x.EnumType\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetService() []*ServiceDescriptorProto {\n\tif x != nil {\n\t\treturn x.Service\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetExtension() []*FieldDescriptorProto {\n\tif x != nil {\n\t\treturn x.Extension\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetOptions() *FileOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetSourceCodeInfo() *SourceCodeInfo {\n\tif x != nil {\n\t\treturn x.SourceCodeInfo\n\t}\n\treturn nil\n}\n\nfunc (x *FileDescriptorProto) GetSyntax() string {\n\tif x != nil && x.Syntax != nil {\n\t\treturn *x.Syntax\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileDescriptorProto) GetEdition() string {\n\tif x != nil && x.Edition != nil {\n\t\treturn *x.Edition\n\t}\n\treturn \"\"\n}\n\n// Describes a message type.\ntype DescriptorProto struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName           *string                           `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tField          []*FieldDescriptorProto           `protobuf:\"bytes,2,rep,name=field\" json:\"field,omitempty\"`\n\tExtension      []*FieldDescriptorProto           `protobuf:\"bytes,6,rep,name=extension\" json:\"extension,omitempty\"`\n\tNestedType     []*DescriptorProto                `protobuf:\"bytes,3,rep,name=nested_type,json=nestedType\" json:\"nested_type,omitempty\"`\n\tEnumType       []*EnumDescriptorProto            `protobuf:\"bytes,4,rep,name=enum_type,json=enumType\" json:\"enum_type,omitempty\"`\n\tExtensionRange []*DescriptorProto_ExtensionRange `protobuf:\"bytes,5,rep,name=extension_range,json=extensionRange\" json:\"extension_range,omitempty\"`\n\tOneofDecl      []*OneofDescriptorProto           `protobuf:\"bytes,8,rep,name=oneof_decl,json=oneofDecl\" json:\"oneof_decl,omitempty\"`\n\tOptions        *MessageOptions                   `protobuf:\"bytes,7,opt,name=options\" json:\"options,omitempty\"`\n\tReservedRange  []*DescriptorProto_ReservedRange  `protobuf:\"bytes,9,rep,name=reserved_range,json=reservedRange\" json:\"reserved_range,omitempty\"`\n\t// Reserved field names, which may not be used by fields in the same message.\n\t// A given name may only be reserved once.\n\tReservedName []string `protobuf:\"bytes,10,rep,name=reserved_name,json=reservedName\" json:\"reserved_name,omitempty\"`\n}\n\nfunc (x *DescriptorProto) Reset() {\n\t*x = DescriptorProto{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DescriptorProto) ProtoMessage() {}\n\nfunc (x *DescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*DescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *DescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *DescriptorProto) GetField() []*FieldDescriptorProto {\n\tif x != nil {\n\t\treturn x.Field\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetExtension() []*FieldDescriptorProto {\n\tif x != nil {\n\t\treturn x.Extension\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetNestedType() []*DescriptorProto {\n\tif x != nil {\n\t\treturn x.NestedType\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetEnumType() []*EnumDescriptorProto {\n\tif x != nil {\n\t\treturn x.EnumType\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetExtensionRange() []*DescriptorProto_ExtensionRange {\n\tif x != nil {\n\t\treturn x.ExtensionRange\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetOneofDecl() []*OneofDescriptorProto {\n\tif x != nil {\n\t\treturn x.OneofDecl\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetOptions() *MessageOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetReservedRange() []*DescriptorProto_ReservedRange {\n\tif x != nil {\n\t\treturn x.ReservedRange\n\t}\n\treturn nil\n}\n\nfunc (x *DescriptorProto) GetReservedName() []string {\n\tif x != nil {\n\t\treturn x.ReservedName\n\t}\n\treturn nil\n}\n\ntype ExtensionRangeOptions struct {\n\tstate           protoimpl.MessageState\n\tsizeCache       protoimpl.SizeCache\n\tunknownFields   protoimpl.UnknownFields\n\textensionFields protoimpl.ExtensionFields\n\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n\t// go/protobuf-stripping-extension-declarations\n\t// Like Metadata, but we use a repeated field to hold all extension\n\t// declarations. This should avoid the size increases of transforming a large\n\t// extension range into small ranges in generated binaries.\n\tDeclaration []*ExtensionRangeOptions_Declaration `protobuf:\"bytes,2,rep,name=declaration\" json:\"declaration,omitempty\"`\n\t// The verification state of the range.\n\t// TODO(b/278783756): flip the default to DECLARATION once all empty ranges\n\t// are marked as UNVERIFIED.\n\tVerification *ExtensionRangeOptions_VerificationState `protobuf:\"varint,3,opt,name=verification,enum=google.protobuf.ExtensionRangeOptions_VerificationState,def=1\" json:\"verification,omitempty\"`\n}\n\n// Default values for ExtensionRangeOptions fields.\nconst (\n\tDefault_ExtensionRangeOptions_Verification = ExtensionRangeOptions_UNVERIFIED\n)\n\nfunc (x *ExtensionRangeOptions) Reset() {\n\t*x = ExtensionRangeOptions{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ExtensionRangeOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ExtensionRangeOptions) ProtoMessage() {}\n\nfunc (x *ExtensionRangeOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ExtensionRangeOptions.ProtoReflect.Descriptor instead.\nfunc (*ExtensionRangeOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *ExtensionRangeOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\nfunc (x *ExtensionRangeOptions) GetDeclaration() []*ExtensionRangeOptions_Declaration {\n\tif x != nil {\n\t\treturn x.Declaration\n\t}\n\treturn nil\n}\n\nfunc (x *ExtensionRangeOptions) GetVerification() ExtensionRangeOptions_VerificationState {\n\tif x != nil && x.Verification != nil {\n\t\treturn *x.Verification\n\t}\n\treturn Default_ExtensionRangeOptions_Verification\n}\n\n// Describes a field within a message.\ntype FieldDescriptorProto struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName   *string                     `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tNumber *int32                      `protobuf:\"varint,3,opt,name=number\" json:\"number,omitempty\"`\n\tLabel  *FieldDescriptorProto_Label `protobuf:\"varint,4,opt,name=label,enum=google.protobuf.FieldDescriptorProto_Label\" json:\"label,omitempty\"`\n\t// If type_name is set, this need not be set.  If both this and type_name\n\t// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.\n\tType *FieldDescriptorProto_Type `protobuf:\"varint,5,opt,name=type,enum=google.protobuf.FieldDescriptorProto_Type\" json:\"type,omitempty\"`\n\t// For message and enum types, this is the name of the type.  If the name\n\t// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping\n\t// rules are used to find the type (i.e. first the nested types within this\n\t// message are searched, then within the parent, on up to the root\n\t// namespace).\n\tTypeName *string `protobuf:\"bytes,6,opt,name=type_name,json=typeName\" json:\"type_name,omitempty\"`\n\t// For extensions, this is the name of the type being extended.  It is\n\t// resolved in the same manner as type_name.\n\tExtendee *string `protobuf:\"bytes,2,opt,name=extendee\" json:\"extendee,omitempty\"`\n\t// For numeric types, contains the original text representation of the value.\n\t// For booleans, \"true\" or \"false\".\n\t// For strings, contains the default text contents (not escaped in any way).\n\t// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.\n\tDefaultValue *string `protobuf:\"bytes,7,opt,name=default_value,json=defaultValue\" json:\"default_value,omitempty\"`\n\t// If set, gives the index of a oneof in the containing type's oneof_decl\n\t// list.  This field is a member of that oneof.\n\tOneofIndex *int32 `protobuf:\"varint,9,opt,name=oneof_index,json=oneofIndex\" json:\"oneof_index,omitempty\"`\n\t// JSON name of this field. The value is set by protocol compiler. If the\n\t// user has set a \"json_name\" option on this field, that option's value\n\t// will be used. Otherwise, it's deduced from the field's name by converting\n\t// it to camelCase.\n\tJsonName *string       `protobuf:\"bytes,10,opt,name=json_name,json=jsonName\" json:\"json_name,omitempty\"`\n\tOptions  *FieldOptions `protobuf:\"bytes,8,opt,name=options\" json:\"options,omitempty\"`\n\t// If true, this is a proto3 \"optional\". When a proto3 field is optional, it\n\t// tracks presence regardless of field type.\n\t//\n\t// When proto3_optional is true, this field must be belong to a oneof to\n\t// signal to old proto3 clients that presence is tracked for this field. This\n\t// oneof is known as a \"synthetic\" oneof, and this field must be its sole\n\t// member (each proto3 optional field gets its own synthetic oneof). Synthetic\n\t// oneofs exist in the descriptor only, and do not generate any API. Synthetic\n\t// oneofs must be ordered after all \"real\" oneofs.\n\t//\n\t// For message fields, proto3_optional doesn't create any semantic change,\n\t// since non-repeated message fields always track presence. However it still\n\t// indicates the semantic detail of whether the user wrote \"optional\" or not.\n\t// This can be useful for round-tripping the .proto file. For consistency we\n\t// give message fields a synthetic oneof also, even though it is not required\n\t// to track presence. This is especially important because the parser can't\n\t// tell if a field is a message or an enum, so it must always create a\n\t// synthetic oneof.\n\t//\n\t// Proto2 optional fields do not set this flag, because they already indicate\n\t// optional with `LABEL_OPTIONAL`.\n\tProto3Optional *bool `protobuf:\"varint,17,opt,name=proto3_optional,json=proto3Optional\" json:\"proto3_optional,omitempty\"`\n}\n\nfunc (x *FieldDescriptorProto) Reset() {\n\t*x = FieldDescriptorProto{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FieldDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldDescriptorProto) ProtoMessage() {}\n\nfunc (x *FieldDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*FieldDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *FieldDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetNumber() int32 {\n\tif x != nil && x.Number != nil {\n\t\treturn *x.Number\n\t}\n\treturn 0\n}\n\nfunc (x *FieldDescriptorProto) GetLabel() FieldDescriptorProto_Label {\n\tif x != nil && x.Label != nil {\n\t\treturn *x.Label\n\t}\n\treturn FieldDescriptorProto_LABEL_OPTIONAL\n}\n\nfunc (x *FieldDescriptorProto) GetType() FieldDescriptorProto_Type {\n\tif x != nil && x.Type != nil {\n\t\treturn *x.Type\n\t}\n\treturn FieldDescriptorProto_TYPE_DOUBLE\n}\n\nfunc (x *FieldDescriptorProto) GetTypeName() string {\n\tif x != nil && x.TypeName != nil {\n\t\treturn *x.TypeName\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetExtendee() string {\n\tif x != nil && x.Extendee != nil {\n\t\treturn *x.Extendee\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetDefaultValue() string {\n\tif x != nil && x.DefaultValue != nil {\n\t\treturn *x.DefaultValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetOneofIndex() int32 {\n\tif x != nil && x.OneofIndex != nil {\n\t\treturn *x.OneofIndex\n\t}\n\treturn 0\n}\n\nfunc (x *FieldDescriptorProto) GetJsonName() string {\n\tif x != nil && x.JsonName != nil {\n\t\treturn *x.JsonName\n\t}\n\treturn \"\"\n}\n\nfunc (x *FieldDescriptorProto) GetOptions() *FieldOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *FieldDescriptorProto) GetProto3Optional() bool {\n\tif x != nil && x.Proto3Optional != nil {\n\t\treturn *x.Proto3Optional\n\t}\n\treturn false\n}\n\n// Describes a oneof.\ntype OneofDescriptorProto struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName    *string       `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tOptions *OneofOptions `protobuf:\"bytes,2,opt,name=options\" json:\"options,omitempty\"`\n}\n\nfunc (x *OneofDescriptorProto) Reset() {\n\t*x = OneofDescriptorProto{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *OneofDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OneofDescriptorProto) ProtoMessage() {}\n\nfunc (x *OneofDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OneofDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*OneofDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *OneofDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *OneofDescriptorProto) GetOptions() *OneofOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\n// Describes an enum type.\ntype EnumDescriptorProto struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName    *string                     `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tValue   []*EnumValueDescriptorProto `protobuf:\"bytes,2,rep,name=value\" json:\"value,omitempty\"`\n\tOptions *EnumOptions                `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n\t// Range of reserved numeric values. Reserved numeric values may not be used\n\t// by enum values in the same enum declaration. Reserved ranges may not\n\t// overlap.\n\tReservedRange []*EnumDescriptorProto_EnumReservedRange `protobuf:\"bytes,4,rep,name=reserved_range,json=reservedRange\" json:\"reserved_range,omitempty\"`\n\t// Reserved enum value names, which may not be reused. A given name may only\n\t// be reserved once.\n\tReservedName []string `protobuf:\"bytes,5,rep,name=reserved_name,json=reservedName\" json:\"reserved_name,omitempty\"`\n}\n\nfunc (x *EnumDescriptorProto) Reset() {\n\t*x = EnumDescriptorProto{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EnumDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumDescriptorProto) ProtoMessage() {}\n\nfunc (x *EnumDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*EnumDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *EnumDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *EnumDescriptorProto) GetValue() []*EnumValueDescriptorProto {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nfunc (x *EnumDescriptorProto) GetOptions() *EnumOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *EnumDescriptorProto) GetReservedRange() []*EnumDescriptorProto_EnumReservedRange {\n\tif x != nil {\n\t\treturn x.ReservedRange\n\t}\n\treturn nil\n}\n\nfunc (x *EnumDescriptorProto) GetReservedName() []string {\n\tif x != nil {\n\t\treturn x.ReservedName\n\t}\n\treturn nil\n}\n\n// Describes a value within an enum.\ntype EnumValueDescriptorProto struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName    *string           `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tNumber  *int32            `protobuf:\"varint,2,opt,name=number\" json:\"number,omitempty\"`\n\tOptions *EnumValueOptions `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n}\n\nfunc (x *EnumValueDescriptorProto) Reset() {\n\t*x = EnumValueDescriptorProto{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EnumValueDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumValueDescriptorProto) ProtoMessage() {}\n\nfunc (x *EnumValueDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumValueDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *EnumValueDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *EnumValueDescriptorProto) GetNumber() int32 {\n\tif x != nil && x.Number != nil {\n\t\treturn *x.Number\n\t}\n\treturn 0\n}\n\nfunc (x *EnumValueDescriptorProto) GetOptions() *EnumValueOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\n// Describes a service.\ntype ServiceDescriptorProto struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName    *string                  `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\tMethod  []*MethodDescriptorProto `protobuf:\"bytes,2,rep,name=method\" json:\"method,omitempty\"`\n\tOptions *ServiceOptions          `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n}\n\nfunc (x *ServiceDescriptorProto) Reset() {\n\t*x = ServiceDescriptorProto{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ServiceDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ServiceDescriptorProto) ProtoMessage() {}\n\nfunc (x *ServiceDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ServiceDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*ServiceDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *ServiceDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *ServiceDescriptorProto) GetMethod() []*MethodDescriptorProto {\n\tif x != nil {\n\t\treturn x.Method\n\t}\n\treturn nil\n}\n\nfunc (x *ServiceDescriptorProto) GetOptions() *ServiceOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\n// Describes a method of a service.\ntype MethodDescriptorProto struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName *string `protobuf:\"bytes,1,opt,name=name\" json:\"name,omitempty\"`\n\t// Input and output type names.  These are resolved in the same way as\n\t// FieldDescriptorProto.type_name, but must refer to a message type.\n\tInputType  *string        `protobuf:\"bytes,2,opt,name=input_type,json=inputType\" json:\"input_type,omitempty\"`\n\tOutputType *string        `protobuf:\"bytes,3,opt,name=output_type,json=outputType\" json:\"output_type,omitempty\"`\n\tOptions    *MethodOptions `protobuf:\"bytes,4,opt,name=options\" json:\"options,omitempty\"`\n\t// Identifies if client streams multiple client messages\n\tClientStreaming *bool `protobuf:\"varint,5,opt,name=client_streaming,json=clientStreaming,def=0\" json:\"client_streaming,omitempty\"`\n\t// Identifies if server streams multiple server messages\n\tServerStreaming *bool `protobuf:\"varint,6,opt,name=server_streaming,json=serverStreaming,def=0\" json:\"server_streaming,omitempty\"`\n}\n\n// Default values for MethodDescriptorProto fields.\nconst (\n\tDefault_MethodDescriptorProto_ClientStreaming = bool(false)\n\tDefault_MethodDescriptorProto_ServerStreaming = bool(false)\n)\n\nfunc (x *MethodDescriptorProto) Reset() {\n\t*x = MethodDescriptorProto{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MethodDescriptorProto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MethodDescriptorProto) ProtoMessage() {}\n\nfunc (x *MethodDescriptorProto) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MethodDescriptorProto.ProtoReflect.Descriptor instead.\nfunc (*MethodDescriptorProto) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *MethodDescriptorProto) GetName() string {\n\tif x != nil && x.Name != nil {\n\t\treturn *x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *MethodDescriptorProto) GetInputType() string {\n\tif x != nil && x.InputType != nil {\n\t\treturn *x.InputType\n\t}\n\treturn \"\"\n}\n\nfunc (x *MethodDescriptorProto) GetOutputType() string {\n\tif x != nil && x.OutputType != nil {\n\t\treturn *x.OutputType\n\t}\n\treturn \"\"\n}\n\nfunc (x *MethodDescriptorProto) GetOptions() *MethodOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\nfunc (x *MethodDescriptorProto) GetClientStreaming() bool {\n\tif x != nil && x.ClientStreaming != nil {\n\t\treturn *x.ClientStreaming\n\t}\n\treturn Default_MethodDescriptorProto_ClientStreaming\n}\n\nfunc (x *MethodDescriptorProto) GetServerStreaming() bool {\n\tif x != nil && x.ServerStreaming != nil {\n\t\treturn *x.ServerStreaming\n\t}\n\treturn Default_MethodDescriptorProto_ServerStreaming\n}\n\ntype FileOptions struct {\n\tstate           protoimpl.MessageState\n\tsizeCache       protoimpl.SizeCache\n\tunknownFields   protoimpl.UnknownFields\n\textensionFields protoimpl.ExtensionFields\n\n\t// Sets the Java package where classes generated from this .proto will be\n\t// placed.  By default, the proto package is used, but this is often\n\t// inappropriate because proto packages do not normally start with backwards\n\t// domain names.\n\tJavaPackage *string `protobuf:\"bytes,1,opt,name=java_package,json=javaPackage\" json:\"java_package,omitempty\"`\n\t// Controls the name of the wrapper Java class generated for the .proto file.\n\t// That class will always contain the .proto file's getDescriptor() method as\n\t// well as any top-level extensions defined in the .proto file.\n\t// If java_multiple_files is disabled, then all the other classes from the\n\t// .proto file will be nested inside the single wrapper outer class.\n\tJavaOuterClassname *string `protobuf:\"bytes,8,opt,name=java_outer_classname,json=javaOuterClassname\" json:\"java_outer_classname,omitempty\"`\n\t// If enabled, then the Java code generator will generate a separate .java\n\t// file for each top-level message, enum, and service defined in the .proto\n\t// file.  Thus, these types will *not* be nested inside the wrapper class\n\t// named by java_outer_classname.  However, the wrapper class will still be\n\t// generated to contain the file's getDescriptor() method as well as any\n\t// top-level extensions defined in the file.\n\tJavaMultipleFiles *bool `protobuf:\"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0\" json:\"java_multiple_files,omitempty\"`\n\t// This option does nothing.\n\t//\n\t// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\n\tJavaGenerateEqualsAndHash *bool `protobuf:\"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash\" json:\"java_generate_equals_and_hash,omitempty\"`\n\t// If set true, then the Java2 code generator will generate code that\n\t// throws an exception whenever an attempt is made to assign a non-UTF-8\n\t// byte sequence to a string field.\n\t// Message reflection will do the same.\n\t// However, an extension field still accepts non-UTF-8 byte sequences.\n\t// This option has no effect on when used with the lite runtime.\n\tJavaStringCheckUtf8 *bool                     `protobuf:\"varint,27,opt,name=java_string_check_utf8,json=javaStringCheckUtf8,def=0\" json:\"java_string_check_utf8,omitempty\"`\n\tOptimizeFor         *FileOptions_OptimizeMode `protobuf:\"varint,9,opt,name=optimize_for,json=optimizeFor,enum=google.protobuf.FileOptions_OptimizeMode,def=1\" json:\"optimize_for,omitempty\"`\n\t// Sets the Go package where structs generated from this .proto will be\n\t// placed. If omitted, the Go package will be derived from the following:\n\t//   - The basename of the package import path, if provided.\n\t//   - Otherwise, the package statement in the .proto file, if present.\n\t//   - Otherwise, the basename of the .proto file, without extension.\n\tGoPackage *string `protobuf:\"bytes,11,opt,name=go_package,json=goPackage\" json:\"go_package,omitempty\"`\n\t// Should generic services be generated in each language?  \"Generic\" services\n\t// are not specific to any particular RPC system.  They are generated by the\n\t// main code generators in each language (without additional plugins).\n\t// Generic services were the only kind of service generation supported by\n\t// early versions of google.protobuf.\n\t//\n\t// Generic services are now considered deprecated in favor of using plugins\n\t// that generate code specific to your particular RPC system.  Therefore,\n\t// these default to false.  Old code which depends on generic services should\n\t// explicitly set them to true.\n\tCcGenericServices   *bool `protobuf:\"varint,16,opt,name=cc_generic_services,json=ccGenericServices,def=0\" json:\"cc_generic_services,omitempty\"`\n\tJavaGenericServices *bool `protobuf:\"varint,17,opt,name=java_generic_services,json=javaGenericServices,def=0\" json:\"java_generic_services,omitempty\"`\n\tPyGenericServices   *bool `protobuf:\"varint,18,opt,name=py_generic_services,json=pyGenericServices,def=0\" json:\"py_generic_services,omitempty\"`\n\tPhpGenericServices  *bool `protobuf:\"varint,42,opt,name=php_generic_services,json=phpGenericServices,def=0\" json:\"php_generic_services,omitempty\"`\n\t// Is this file deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for everything in the file, or it will be completely ignored; in the very\n\t// least, this is a formalization for deprecating files.\n\tDeprecated *bool `protobuf:\"varint,23,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// Enables the use of arenas for the proto messages in this file. This applies\n\t// only to generated classes for C++.\n\tCcEnableArenas *bool `protobuf:\"varint,31,opt,name=cc_enable_arenas,json=ccEnableArenas,def=1\" json:\"cc_enable_arenas,omitempty\"`\n\t// Sets the objective c class prefix which is prepended to all objective c\n\t// generated classes from this .proto. There is no default.\n\tObjcClassPrefix *string `protobuf:\"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix\" json:\"objc_class_prefix,omitempty\"`\n\t// Namespace for generated classes; defaults to the package.\n\tCsharpNamespace *string `protobuf:\"bytes,37,opt,name=csharp_namespace,json=csharpNamespace\" json:\"csharp_namespace,omitempty\"`\n\t// By default Swift generators will take the proto package and CamelCase it\n\t// replacing '.' with underscore and use that to prefix the types/symbols\n\t// defined. When this options is provided, they will use this value instead\n\t// to prefix the types/symbols defined.\n\tSwiftPrefix *string `protobuf:\"bytes,39,opt,name=swift_prefix,json=swiftPrefix\" json:\"swift_prefix,omitempty\"`\n\t// Sets the php class prefix which is prepended to all php generated classes\n\t// from this .proto. Default is empty.\n\tPhpClassPrefix *string `protobuf:\"bytes,40,opt,name=php_class_prefix,json=phpClassPrefix\" json:\"php_class_prefix,omitempty\"`\n\t// Use this option to change the namespace of php generated classes. Default\n\t// is empty. When this option is empty, the package name will be used for\n\t// determining the namespace.\n\tPhpNamespace *string `protobuf:\"bytes,41,opt,name=php_namespace,json=phpNamespace\" json:\"php_namespace,omitempty\"`\n\t// Use this option to change the namespace of php generated metadata classes.\n\t// Default is empty. When this option is empty, the proto file name will be\n\t// used for determining the namespace.\n\tPhpMetadataNamespace *string `protobuf:\"bytes,44,opt,name=php_metadata_namespace,json=phpMetadataNamespace\" json:\"php_metadata_namespace,omitempty\"`\n\t// Use this option to change the package of ruby generated classes. Default\n\t// is empty. When this option is not set, the package name will be used for\n\t// determining the ruby package.\n\tRubyPackage *string `protobuf:\"bytes,45,opt,name=ruby_package,json=rubyPackage\" json:\"ruby_package,omitempty\"`\n\t// The parser stores options it doesn't recognize here.\n\t// See the documentation for the \"Options\" section above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n}\n\n// Default values for FileOptions fields.\nconst (\n\tDefault_FileOptions_JavaMultipleFiles   = bool(false)\n\tDefault_FileOptions_JavaStringCheckUtf8 = bool(false)\n\tDefault_FileOptions_OptimizeFor         = FileOptions_SPEED\n\tDefault_FileOptions_CcGenericServices   = bool(false)\n\tDefault_FileOptions_JavaGenericServices = bool(false)\n\tDefault_FileOptions_PyGenericServices   = bool(false)\n\tDefault_FileOptions_PhpGenericServices  = bool(false)\n\tDefault_FileOptions_Deprecated          = bool(false)\n\tDefault_FileOptions_CcEnableArenas      = bool(true)\n)\n\nfunc (x *FileOptions) Reset() {\n\t*x = FileOptions{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FileOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FileOptions) ProtoMessage() {}\n\nfunc (x *FileOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FileOptions.ProtoReflect.Descriptor instead.\nfunc (*FileOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *FileOptions) GetJavaPackage() string {\n\tif x != nil && x.JavaPackage != nil {\n\t\treturn *x.JavaPackage\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetJavaOuterClassname() string {\n\tif x != nil && x.JavaOuterClassname != nil {\n\t\treturn *x.JavaOuterClassname\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetJavaMultipleFiles() bool {\n\tif x != nil && x.JavaMultipleFiles != nil {\n\t\treturn *x.JavaMultipleFiles\n\t}\n\treturn Default_FileOptions_JavaMultipleFiles\n}\n\n// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\nfunc (x *FileOptions) GetJavaGenerateEqualsAndHash() bool {\n\tif x != nil && x.JavaGenerateEqualsAndHash != nil {\n\t\treturn *x.JavaGenerateEqualsAndHash\n\t}\n\treturn false\n}\n\nfunc (x *FileOptions) GetJavaStringCheckUtf8() bool {\n\tif x != nil && x.JavaStringCheckUtf8 != nil {\n\t\treturn *x.JavaStringCheckUtf8\n\t}\n\treturn Default_FileOptions_JavaStringCheckUtf8\n}\n\nfunc (x *FileOptions) GetOptimizeFor() FileOptions_OptimizeMode {\n\tif x != nil && x.OptimizeFor != nil {\n\t\treturn *x.OptimizeFor\n\t}\n\treturn Default_FileOptions_OptimizeFor\n}\n\nfunc (x *FileOptions) GetGoPackage() string {\n\tif x != nil && x.GoPackage != nil {\n\t\treturn *x.GoPackage\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetCcGenericServices() bool {\n\tif x != nil && x.CcGenericServices != nil {\n\t\treturn *x.CcGenericServices\n\t}\n\treturn Default_FileOptions_CcGenericServices\n}\n\nfunc (x *FileOptions) GetJavaGenericServices() bool {\n\tif x != nil && x.JavaGenericServices != nil {\n\t\treturn *x.JavaGenericServices\n\t}\n\treturn Default_FileOptions_JavaGenericServices\n}\n\nfunc (x *FileOptions) GetPyGenericServices() bool {\n\tif x != nil && x.PyGenericServices != nil {\n\t\treturn *x.PyGenericServices\n\t}\n\treturn Default_FileOptions_PyGenericServices\n}\n\nfunc (x *FileOptions) GetPhpGenericServices() bool {\n\tif x != nil && x.PhpGenericServices != nil {\n\t\treturn *x.PhpGenericServices\n\t}\n\treturn Default_FileOptions_PhpGenericServices\n}\n\nfunc (x *FileOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_FileOptions_Deprecated\n}\n\nfunc (x *FileOptions) GetCcEnableArenas() bool {\n\tif x != nil && x.CcEnableArenas != nil {\n\t\treturn *x.CcEnableArenas\n\t}\n\treturn Default_FileOptions_CcEnableArenas\n}\n\nfunc (x *FileOptions) GetObjcClassPrefix() string {\n\tif x != nil && x.ObjcClassPrefix != nil {\n\t\treturn *x.ObjcClassPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetCsharpNamespace() string {\n\tif x != nil && x.CsharpNamespace != nil {\n\t\treturn *x.CsharpNamespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetSwiftPrefix() string {\n\tif x != nil && x.SwiftPrefix != nil {\n\t\treturn *x.SwiftPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetPhpClassPrefix() string {\n\tif x != nil && x.PhpClassPrefix != nil {\n\t\treturn *x.PhpClassPrefix\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetPhpNamespace() string {\n\tif x != nil && x.PhpNamespace != nil {\n\t\treturn *x.PhpNamespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetPhpMetadataNamespace() string {\n\tif x != nil && x.PhpMetadataNamespace != nil {\n\t\treturn *x.PhpMetadataNamespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetRubyPackage() string {\n\tif x != nil && x.RubyPackage != nil {\n\t\treturn *x.RubyPackage\n\t}\n\treturn \"\"\n}\n\nfunc (x *FileOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype MessageOptions struct {\n\tstate           protoimpl.MessageState\n\tsizeCache       protoimpl.SizeCache\n\tunknownFields   protoimpl.UnknownFields\n\textensionFields protoimpl.ExtensionFields\n\n\t// Set true to use the old proto1 MessageSet wire format for extensions.\n\t// This is provided for backwards-compatibility with the MessageSet wire\n\t// format.  You should not use this for any other reason:  It's less\n\t// efficient, has fewer features, and is more complicated.\n\t//\n\t// The message must be defined exactly as follows:\n\t//\n\t//\tmessage Foo {\n\t//\t  option message_set_wire_format = true;\n\t//\t  extensions 4 to max;\n\t//\t}\n\t//\n\t// Note that the message cannot have any defined fields; MessageSets only\n\t// have extensions.\n\t//\n\t// All extensions of your type must be singular messages; e.g. they cannot\n\t// be int32s, enums, or repeated messages.\n\t//\n\t// Because this is an option, the above two restrictions are not enforced by\n\t// the protocol compiler.\n\tMessageSetWireFormat *bool `protobuf:\"varint,1,opt,name=message_set_wire_format,json=messageSetWireFormat,def=0\" json:\"message_set_wire_format,omitempty\"`\n\t// Disables the generation of the standard \"descriptor()\" accessor, which can\n\t// conflict with a field of the same name.  This is meant to make migration\n\t// from proto1 easier; new code should avoid fields named \"descriptor\".\n\tNoStandardDescriptorAccessor *bool `protobuf:\"varint,2,opt,name=no_standard_descriptor_accessor,json=noStandardDescriptorAccessor,def=0\" json:\"no_standard_descriptor_accessor,omitempty\"`\n\t// Is this message deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the message, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating messages.\n\tDeprecated *bool `protobuf:\"varint,3,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// NOTE: Do not set the option in .proto files. Always use the maps syntax\n\t// instead. The option should only be implicitly set by the proto compiler\n\t// parser.\n\t//\n\t// Whether the message is an automatically generated map entry type for the\n\t// maps field.\n\t//\n\t// For maps fields:\n\t//\n\t//\tmap<KeyType, ValueType> map_field = 1;\n\t//\n\t// The parsed descriptor looks like:\n\t//\n\t//\tmessage MapFieldEntry {\n\t//\t    option map_entry = true;\n\t//\t    optional KeyType key = 1;\n\t//\t    optional ValueType value = 2;\n\t//\t}\n\t//\trepeated MapFieldEntry map_field = 1;\n\t//\n\t// Implementations may choose not to generate the map_entry=true message, but\n\t// use a native map in the target language to hold the keys and values.\n\t// The reflection APIs in such implementations still need to work as\n\t// if the field is a repeated message field.\n\tMapEntry *bool `protobuf:\"varint,7,opt,name=map_entry,json=mapEntry\" json:\"map_entry,omitempty\"`\n\t// Enable the legacy handling of JSON field name conflicts.  This lowercases\n\t// and strips underscored from the fields before comparison in proto3 only.\n\t// The new behavior takes `json_name` into account and applies to proto2 as\n\t// well.\n\t//\n\t// This should only be used as a temporary measure against broken builds due\n\t// to the change in behavior for JSON field name conflicts.\n\t//\n\t// TODO(b/261750190) This is legacy behavior we plan to remove once downstream\n\t// teams have had time to migrate.\n\t//\n\t// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\n\tDeprecatedLegacyJsonFieldConflicts *bool `protobuf:\"varint,11,opt,name=deprecated_legacy_json_field_conflicts,json=deprecatedLegacyJsonFieldConflicts\" json:\"deprecated_legacy_json_field_conflicts,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n}\n\n// Default values for MessageOptions fields.\nconst (\n\tDefault_MessageOptions_MessageSetWireFormat         = bool(false)\n\tDefault_MessageOptions_NoStandardDescriptorAccessor = bool(false)\n\tDefault_MessageOptions_Deprecated                   = bool(false)\n)\n\nfunc (x *MessageOptions) Reset() {\n\t*x = MessageOptions{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MessageOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MessageOptions) ProtoMessage() {}\n\nfunc (x *MessageOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MessageOptions.ProtoReflect.Descriptor instead.\nfunc (*MessageOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *MessageOptions) GetMessageSetWireFormat() bool {\n\tif x != nil && x.MessageSetWireFormat != nil {\n\t\treturn *x.MessageSetWireFormat\n\t}\n\treturn Default_MessageOptions_MessageSetWireFormat\n}\n\nfunc (x *MessageOptions) GetNoStandardDescriptorAccessor() bool {\n\tif x != nil && x.NoStandardDescriptorAccessor != nil {\n\t\treturn *x.NoStandardDescriptorAccessor\n\t}\n\treturn Default_MessageOptions_NoStandardDescriptorAccessor\n}\n\nfunc (x *MessageOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_MessageOptions_Deprecated\n}\n\nfunc (x *MessageOptions) GetMapEntry() bool {\n\tif x != nil && x.MapEntry != nil {\n\t\treturn *x.MapEntry\n\t}\n\treturn false\n}\n\n// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\nfunc (x *MessageOptions) GetDeprecatedLegacyJsonFieldConflicts() bool {\n\tif x != nil && x.DeprecatedLegacyJsonFieldConflicts != nil {\n\t\treturn *x.DeprecatedLegacyJsonFieldConflicts\n\t}\n\treturn false\n}\n\nfunc (x *MessageOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype FieldOptions struct {\n\tstate           protoimpl.MessageState\n\tsizeCache       protoimpl.SizeCache\n\tunknownFields   protoimpl.UnknownFields\n\textensionFields protoimpl.ExtensionFields\n\n\t// The ctype option instructs the C++ code generator to use a different\n\t// representation of the field than it normally would.  See the specific\n\t// options below.  This option is only implemented to support use of\n\t// [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of\n\t// type \"bytes\" in the open source release -- sorry, we'll try to include\n\t// other types in a future version!\n\tCtype *FieldOptions_CType `protobuf:\"varint,1,opt,name=ctype,enum=google.protobuf.FieldOptions_CType,def=0\" json:\"ctype,omitempty\"`\n\t// The packed option can be enabled for repeated primitive fields to enable\n\t// a more efficient representation on the wire. Rather than repeatedly\n\t// writing the tag and type for each element, the entire array is encoded as\n\t// a single length-delimited blob. In proto3, only explicit setting it to\n\t// false will avoid using packed encoding.\n\tPacked *bool `protobuf:\"varint,2,opt,name=packed\" json:\"packed,omitempty\"`\n\t// The jstype option determines the JavaScript type used for values of the\n\t// field.  The option is permitted only for 64 bit integral and fixed types\n\t// (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING\n\t// is represented as JavaScript string, which avoids loss of precision that\n\t// can happen when a large value is converted to a floating point JavaScript.\n\t// Specifying JS_NUMBER for the jstype causes the generated JavaScript code to\n\t// use the JavaScript \"number\" type.  The behavior of the default option\n\t// JS_NORMAL is implementation dependent.\n\t//\n\t// This option is an enum to permit additional types to be added, e.g.\n\t// goog.math.Integer.\n\tJstype *FieldOptions_JSType `protobuf:\"varint,6,opt,name=jstype,enum=google.protobuf.FieldOptions_JSType,def=0\" json:\"jstype,omitempty\"`\n\t// Should this field be parsed lazily?  Lazy applies only to message-type\n\t// fields.  It means that when the outer message is initially parsed, the\n\t// inner message's contents will not be parsed but instead stored in encoded\n\t// form.  The inner message will actually be parsed when it is first accessed.\n\t//\n\t// This is only a hint.  Implementations are free to choose whether to use\n\t// eager or lazy parsing regardless of the value of this option.  However,\n\t// setting this option true suggests that the protocol author believes that\n\t// using lazy parsing on this field is worth the additional bookkeeping\n\t// overhead typically needed to implement it.\n\t//\n\t// This option does not affect the public interface of any generated code;\n\t// all method signatures remain the same.  Furthermore, thread-safety of the\n\t// interface is not affected by this option; const methods remain safe to\n\t// call from multiple threads concurrently, while non-const methods continue\n\t// to require exclusive access.\n\t//\n\t// Note that implementations may choose not to check required fields within\n\t// a lazy sub-message.  That is, calling IsInitialized() on the outer message\n\t// may return true even if the inner message has missing required fields.\n\t// This is necessary because otherwise the inner message would have to be\n\t// parsed in order to perform the check, defeating the purpose of lazy\n\t// parsing.  An implementation which chooses not to check required fields\n\t// must be consistent about it.  That is, for any particular sub-message, the\n\t// implementation must either *always* check its required fields, or *never*\n\t// check its required fields, regardless of whether or not the message has\n\t// been parsed.\n\t//\n\t// As of May 2022, lazy verifies the contents of the byte stream during\n\t// parsing.  An invalid byte stream will cause the overall parsing to fail.\n\tLazy *bool `protobuf:\"varint,5,opt,name=lazy,def=0\" json:\"lazy,omitempty\"`\n\t// unverified_lazy does no correctness checks on the byte stream. This should\n\t// only be used where lazy with verification is prohibitive for performance\n\t// reasons.\n\tUnverifiedLazy *bool `protobuf:\"varint,15,opt,name=unverified_lazy,json=unverifiedLazy,def=0\" json:\"unverified_lazy,omitempty\"`\n\t// Is this field deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for accessors, or it will be completely ignored; in the very least, this\n\t// is a formalization for deprecating fields.\n\tDeprecated *bool `protobuf:\"varint,3,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// For Google-internal migration only. Do not use.\n\tWeak *bool `protobuf:\"varint,10,opt,name=weak,def=0\" json:\"weak,omitempty\"`\n\t// Indicate that the field value should not be printed out when using debug\n\t// formats, e.g. when the field contains sensitive credentials.\n\tDebugRedact *bool                         `protobuf:\"varint,16,opt,name=debug_redact,json=debugRedact,def=0\" json:\"debug_redact,omitempty\"`\n\tRetention   *FieldOptions_OptionRetention `protobuf:\"varint,17,opt,name=retention,enum=google.protobuf.FieldOptions_OptionRetention\" json:\"retention,omitempty\"`\n\t// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\n\tTarget  *FieldOptions_OptionTargetType  `protobuf:\"varint,18,opt,name=target,enum=google.protobuf.FieldOptions_OptionTargetType\" json:\"target,omitempty\"`\n\tTargets []FieldOptions_OptionTargetType `protobuf:\"varint,19,rep,name=targets,enum=google.protobuf.FieldOptions_OptionTargetType\" json:\"targets,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n}\n\n// Default values for FieldOptions fields.\nconst (\n\tDefault_FieldOptions_Ctype          = FieldOptions_STRING\n\tDefault_FieldOptions_Jstype         = FieldOptions_JS_NORMAL\n\tDefault_FieldOptions_Lazy           = bool(false)\n\tDefault_FieldOptions_UnverifiedLazy = bool(false)\n\tDefault_FieldOptions_Deprecated     = bool(false)\n\tDefault_FieldOptions_Weak           = bool(false)\n\tDefault_FieldOptions_DebugRedact    = bool(false)\n)\n\nfunc (x *FieldOptions) Reset() {\n\t*x = FieldOptions{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FieldOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FieldOptions) ProtoMessage() {}\n\nfunc (x *FieldOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use FieldOptions.ProtoReflect.Descriptor instead.\nfunc (*FieldOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *FieldOptions) GetCtype() FieldOptions_CType {\n\tif x != nil && x.Ctype != nil {\n\t\treturn *x.Ctype\n\t}\n\treturn Default_FieldOptions_Ctype\n}\n\nfunc (x *FieldOptions) GetPacked() bool {\n\tif x != nil && x.Packed != nil {\n\t\treturn *x.Packed\n\t}\n\treturn false\n}\n\nfunc (x *FieldOptions) GetJstype() FieldOptions_JSType {\n\tif x != nil && x.Jstype != nil {\n\t\treturn *x.Jstype\n\t}\n\treturn Default_FieldOptions_Jstype\n}\n\nfunc (x *FieldOptions) GetLazy() bool {\n\tif x != nil && x.Lazy != nil {\n\t\treturn *x.Lazy\n\t}\n\treturn Default_FieldOptions_Lazy\n}\n\nfunc (x *FieldOptions) GetUnverifiedLazy() bool {\n\tif x != nil && x.UnverifiedLazy != nil {\n\t\treturn *x.UnverifiedLazy\n\t}\n\treturn Default_FieldOptions_UnverifiedLazy\n}\n\nfunc (x *FieldOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_FieldOptions_Deprecated\n}\n\nfunc (x *FieldOptions) GetWeak() bool {\n\tif x != nil && x.Weak != nil {\n\t\treturn *x.Weak\n\t}\n\treturn Default_FieldOptions_Weak\n}\n\nfunc (x *FieldOptions) GetDebugRedact() bool {\n\tif x != nil && x.DebugRedact != nil {\n\t\treturn *x.DebugRedact\n\t}\n\treturn Default_FieldOptions_DebugRedact\n}\n\nfunc (x *FieldOptions) GetRetention() FieldOptions_OptionRetention {\n\tif x != nil && x.Retention != nil {\n\t\treturn *x.Retention\n\t}\n\treturn FieldOptions_RETENTION_UNKNOWN\n}\n\n// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\nfunc (x *FieldOptions) GetTarget() FieldOptions_OptionTargetType {\n\tif x != nil && x.Target != nil {\n\t\treturn *x.Target\n\t}\n\treturn FieldOptions_TARGET_TYPE_UNKNOWN\n}\n\nfunc (x *FieldOptions) GetTargets() []FieldOptions_OptionTargetType {\n\tif x != nil {\n\t\treturn x.Targets\n\t}\n\treturn nil\n}\n\nfunc (x *FieldOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype OneofOptions struct {\n\tstate           protoimpl.MessageState\n\tsizeCache       protoimpl.SizeCache\n\tunknownFields   protoimpl.UnknownFields\n\textensionFields protoimpl.ExtensionFields\n\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n}\n\nfunc (x *OneofOptions) Reset() {\n\t*x = OneofOptions{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[13]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *OneofOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*OneofOptions) ProtoMessage() {}\n\nfunc (x *OneofOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[13]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use OneofOptions.ProtoReflect.Descriptor instead.\nfunc (*OneofOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{13}\n}\n\nfunc (x *OneofOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype EnumOptions struct {\n\tstate           protoimpl.MessageState\n\tsizeCache       protoimpl.SizeCache\n\tunknownFields   protoimpl.UnknownFields\n\textensionFields protoimpl.ExtensionFields\n\n\t// Set this option to true to allow mapping different tag names to the same\n\t// value.\n\tAllowAlias *bool `protobuf:\"varint,2,opt,name=allow_alias,json=allowAlias\" json:\"allow_alias,omitempty\"`\n\t// Is this enum deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the enum, or it will be completely ignored; in the very least, this\n\t// is a formalization for deprecating enums.\n\tDeprecated *bool `protobuf:\"varint,3,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// Enable the legacy handling of JSON field name conflicts.  This lowercases\n\t// and strips underscored from the fields before comparison in proto3 only.\n\t// The new behavior takes `json_name` into account and applies to proto2 as\n\t// well.\n\t// TODO(b/261750190) Remove this legacy behavior once downstream teams have\n\t// had time to migrate.\n\t//\n\t// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\n\tDeprecatedLegacyJsonFieldConflicts *bool `protobuf:\"varint,6,opt,name=deprecated_legacy_json_field_conflicts,json=deprecatedLegacyJsonFieldConflicts\" json:\"deprecated_legacy_json_field_conflicts,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n}\n\n// Default values for EnumOptions fields.\nconst (\n\tDefault_EnumOptions_Deprecated = bool(false)\n)\n\nfunc (x *EnumOptions) Reset() {\n\t*x = EnumOptions{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[14]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EnumOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumOptions) ProtoMessage() {}\n\nfunc (x *EnumOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[14]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumOptions.ProtoReflect.Descriptor instead.\nfunc (*EnumOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{14}\n}\n\nfunc (x *EnumOptions) GetAllowAlias() bool {\n\tif x != nil && x.AllowAlias != nil {\n\t\treturn *x.AllowAlias\n\t}\n\treturn false\n}\n\nfunc (x *EnumOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_EnumOptions_Deprecated\n}\n\n// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\nfunc (x *EnumOptions) GetDeprecatedLegacyJsonFieldConflicts() bool {\n\tif x != nil && x.DeprecatedLegacyJsonFieldConflicts != nil {\n\t\treturn *x.DeprecatedLegacyJsonFieldConflicts\n\t}\n\treturn false\n}\n\nfunc (x *EnumOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype EnumValueOptions struct {\n\tstate           protoimpl.MessageState\n\tsizeCache       protoimpl.SizeCache\n\tunknownFields   protoimpl.UnknownFields\n\textensionFields protoimpl.ExtensionFields\n\n\t// Is this enum value deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the enum value, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating enum values.\n\tDeprecated *bool `protobuf:\"varint,1,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n}\n\n// Default values for EnumValueOptions fields.\nconst (\n\tDefault_EnumValueOptions_Deprecated = bool(false)\n)\n\nfunc (x *EnumValueOptions) Reset() {\n\t*x = EnumValueOptions{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[15]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EnumValueOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumValueOptions) ProtoMessage() {}\n\nfunc (x *EnumValueOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[15]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumValueOptions.ProtoReflect.Descriptor instead.\nfunc (*EnumValueOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{15}\n}\n\nfunc (x *EnumValueOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_EnumValueOptions_Deprecated\n}\n\nfunc (x *EnumValueOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype ServiceOptions struct {\n\tstate           protoimpl.MessageState\n\tsizeCache       protoimpl.SizeCache\n\tunknownFields   protoimpl.UnknownFields\n\textensionFields protoimpl.ExtensionFields\n\n\t// Is this service deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the service, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating services.\n\tDeprecated *bool `protobuf:\"varint,33,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n}\n\n// Default values for ServiceOptions fields.\nconst (\n\tDefault_ServiceOptions_Deprecated = bool(false)\n)\n\nfunc (x *ServiceOptions) Reset() {\n\t*x = ServiceOptions{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[16]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ServiceOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ServiceOptions) ProtoMessage() {}\n\nfunc (x *ServiceOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[16]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ServiceOptions.ProtoReflect.Descriptor instead.\nfunc (*ServiceOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{16}\n}\n\nfunc (x *ServiceOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_ServiceOptions_Deprecated\n}\n\nfunc (x *ServiceOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\ntype MethodOptions struct {\n\tstate           protoimpl.MessageState\n\tsizeCache       protoimpl.SizeCache\n\tunknownFields   protoimpl.UnknownFields\n\textensionFields protoimpl.ExtensionFields\n\n\t// Is this method deprecated?\n\t// Depending on the target platform, this can emit Deprecated annotations\n\t// for the method, or it will be completely ignored; in the very least,\n\t// this is a formalization for deprecating methods.\n\tDeprecated       *bool                           `protobuf:\"varint,33,opt,name=deprecated,def=0\" json:\"deprecated,omitempty\"`\n\tIdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:\"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0\" json:\"idempotency_level,omitempty\"`\n\t// The parser stores options it doesn't recognize here. See above.\n\tUninterpretedOption []*UninterpretedOption `protobuf:\"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption\" json:\"uninterpreted_option,omitempty\"`\n}\n\n// Default values for MethodOptions fields.\nconst (\n\tDefault_MethodOptions_Deprecated       = bool(false)\n\tDefault_MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN\n)\n\nfunc (x *MethodOptions) Reset() {\n\t*x = MethodOptions{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[17]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MethodOptions) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MethodOptions) ProtoMessage() {}\n\nfunc (x *MethodOptions) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[17]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use MethodOptions.ProtoReflect.Descriptor instead.\nfunc (*MethodOptions) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17}\n}\n\nfunc (x *MethodOptions) GetDeprecated() bool {\n\tif x != nil && x.Deprecated != nil {\n\t\treturn *x.Deprecated\n\t}\n\treturn Default_MethodOptions_Deprecated\n}\n\nfunc (x *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel {\n\tif x != nil && x.IdempotencyLevel != nil {\n\t\treturn *x.IdempotencyLevel\n\t}\n\treturn Default_MethodOptions_IdempotencyLevel\n}\n\nfunc (x *MethodOptions) GetUninterpretedOption() []*UninterpretedOption {\n\tif x != nil {\n\t\treturn x.UninterpretedOption\n\t}\n\treturn nil\n}\n\n// A message representing a option the parser does not recognize. This only\n// appears in options protos created by the compiler::Parser class.\n// DescriptorPool resolves these when building Descriptor objects. Therefore,\n// options protos in descriptor objects (e.g. returned by Descriptor::options(),\n// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions\n// in them.\ntype UninterpretedOption struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName []*UninterpretedOption_NamePart `protobuf:\"bytes,2,rep,name=name\" json:\"name,omitempty\"`\n\t// The value of the uninterpreted option, in whatever type the tokenizer\n\t// identified it as during parsing. Exactly one of these should be set.\n\tIdentifierValue  *string  `protobuf:\"bytes,3,opt,name=identifier_value,json=identifierValue\" json:\"identifier_value,omitempty\"`\n\tPositiveIntValue *uint64  `protobuf:\"varint,4,opt,name=positive_int_value,json=positiveIntValue\" json:\"positive_int_value,omitempty\"`\n\tNegativeIntValue *int64   `protobuf:\"varint,5,opt,name=negative_int_value,json=negativeIntValue\" json:\"negative_int_value,omitempty\"`\n\tDoubleValue      *float64 `protobuf:\"fixed64,6,opt,name=double_value,json=doubleValue\" json:\"double_value,omitempty\"`\n\tStringValue      []byte   `protobuf:\"bytes,7,opt,name=string_value,json=stringValue\" json:\"string_value,omitempty\"`\n\tAggregateValue   *string  `protobuf:\"bytes,8,opt,name=aggregate_value,json=aggregateValue\" json:\"aggregate_value,omitempty\"`\n}\n\nfunc (x *UninterpretedOption) Reset() {\n\t*x = UninterpretedOption{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[18]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UninterpretedOption) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UninterpretedOption) ProtoMessage() {}\n\nfunc (x *UninterpretedOption) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[18]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UninterpretedOption.ProtoReflect.Descriptor instead.\nfunc (*UninterpretedOption) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{18}\n}\n\nfunc (x *UninterpretedOption) GetName() []*UninterpretedOption_NamePart {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn nil\n}\n\nfunc (x *UninterpretedOption) GetIdentifierValue() string {\n\tif x != nil && x.IdentifierValue != nil {\n\t\treturn *x.IdentifierValue\n\t}\n\treturn \"\"\n}\n\nfunc (x *UninterpretedOption) GetPositiveIntValue() uint64 {\n\tif x != nil && x.PositiveIntValue != nil {\n\t\treturn *x.PositiveIntValue\n\t}\n\treturn 0\n}\n\nfunc (x *UninterpretedOption) GetNegativeIntValue() int64 {\n\tif x != nil && x.NegativeIntValue != nil {\n\t\treturn *x.NegativeIntValue\n\t}\n\treturn 0\n}\n\nfunc (x *UninterpretedOption) GetDoubleValue() float64 {\n\tif x != nil && x.DoubleValue != nil {\n\t\treturn *x.DoubleValue\n\t}\n\treturn 0\n}\n\nfunc (x *UninterpretedOption) GetStringValue() []byte {\n\tif x != nil {\n\t\treturn x.StringValue\n\t}\n\treturn nil\n}\n\nfunc (x *UninterpretedOption) GetAggregateValue() string {\n\tif x != nil && x.AggregateValue != nil {\n\t\treturn *x.AggregateValue\n\t}\n\treturn \"\"\n}\n\n// Encapsulates information about the original source file from which a\n// FileDescriptorProto was generated.\ntype SourceCodeInfo struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// A Location identifies a piece of source code in a .proto file which\n\t// corresponds to a particular definition.  This information is intended\n\t// to be useful to IDEs, code indexers, documentation generators, and similar\n\t// tools.\n\t//\n\t// For example, say we have a file like:\n\t//\n\t//\tmessage Foo {\n\t//\t  optional string foo = 1;\n\t//\t}\n\t//\n\t// Let's look at just the field definition:\n\t//\n\t//\toptional string foo = 1;\n\t//\t^       ^^     ^^  ^  ^^^\n\t//\ta       bc     de  f  ghi\n\t//\n\t// We have the following locations:\n\t//\n\t//\tspan   path               represents\n\t//\t[a,i)  [ 4, 0, 2, 0 ]     The whole field definition.\n\t//\t[a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).\n\t//\t[c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).\n\t//\t[e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).\n\t//\t[g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).\n\t//\n\t// Notes:\n\t//   - A location may refer to a repeated field itself (i.e. not to any\n\t//     particular index within it).  This is used whenever a set of elements are\n\t//     logically enclosed in a single code segment.  For example, an entire\n\t//     extend block (possibly containing multiple extension definitions) will\n\t//     have an outer location whose path refers to the \"extensions\" repeated\n\t//     field without an index.\n\t//   - Multiple locations may have the same path.  This happens when a single\n\t//     logical declaration is spread out across multiple places.  The most\n\t//     obvious example is the \"extend\" block again -- there may be multiple\n\t//     extend blocks in the same scope, each of which will have the same path.\n\t//   - A location's span is not always a subset of its parent's span.  For\n\t//     example, the \"extendee\" of an extension declaration appears at the\n\t//     beginning of the \"extend\" block and is shared by all extensions within\n\t//     the block.\n\t//   - Just because a location's span is a subset of some other location's span\n\t//     does not mean that it is a descendant.  For example, a \"group\" defines\n\t//     both a type and a field in a single declaration.  Thus, the locations\n\t//     corresponding to the type and field and their components will overlap.\n\t//   - Code which tries to interpret locations should probably be designed to\n\t//     ignore those that it doesn't understand, as more types of locations could\n\t//     be recorded in the future.\n\tLocation []*SourceCodeInfo_Location `protobuf:\"bytes,1,rep,name=location\" json:\"location,omitempty\"`\n}\n\nfunc (x *SourceCodeInfo) Reset() {\n\t*x = SourceCodeInfo{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[19]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SourceCodeInfo) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SourceCodeInfo) ProtoMessage() {}\n\nfunc (x *SourceCodeInfo) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[19]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SourceCodeInfo.ProtoReflect.Descriptor instead.\nfunc (*SourceCodeInfo) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19}\n}\n\nfunc (x *SourceCodeInfo) GetLocation() []*SourceCodeInfo_Location {\n\tif x != nil {\n\t\treturn x.Location\n\t}\n\treturn nil\n}\n\n// Describes the relationship between generated code and its original source\n// file. A GeneratedCodeInfo message is associated with only one generated\n// source file, but may contain references to different source .proto files.\ntype GeneratedCodeInfo struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// An Annotation connects some span of text in generated code to an element\n\t// of its generating .proto file.\n\tAnnotation []*GeneratedCodeInfo_Annotation `protobuf:\"bytes,1,rep,name=annotation\" json:\"annotation,omitempty\"`\n}\n\nfunc (x *GeneratedCodeInfo) Reset() {\n\t*x = GeneratedCodeInfo{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[20]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GeneratedCodeInfo) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GeneratedCodeInfo) ProtoMessage() {}\n\nfunc (x *GeneratedCodeInfo) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[20]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GeneratedCodeInfo.ProtoReflect.Descriptor instead.\nfunc (*GeneratedCodeInfo) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20}\n}\n\nfunc (x *GeneratedCodeInfo) GetAnnotation() []*GeneratedCodeInfo_Annotation {\n\tif x != nil {\n\t\treturn x.Annotation\n\t}\n\treturn nil\n}\n\ntype DescriptorProto_ExtensionRange struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tStart   *int32                 `protobuf:\"varint,1,opt,name=start\" json:\"start,omitempty\"` // Inclusive.\n\tEnd     *int32                 `protobuf:\"varint,2,opt,name=end\" json:\"end,omitempty\"`     // Exclusive.\n\tOptions *ExtensionRangeOptions `protobuf:\"bytes,3,opt,name=options\" json:\"options,omitempty\"`\n}\n\nfunc (x *DescriptorProto_ExtensionRange) Reset() {\n\t*x = DescriptorProto_ExtensionRange{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[21]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DescriptorProto_ExtensionRange) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DescriptorProto_ExtensionRange) ProtoMessage() {}\n\nfunc (x *DescriptorProto_ExtensionRange) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[21]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DescriptorProto_ExtensionRange.ProtoReflect.Descriptor instead.\nfunc (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2, 0}\n}\n\nfunc (x *DescriptorProto_ExtensionRange) GetStart() int32 {\n\tif x != nil && x.Start != nil {\n\t\treturn *x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *DescriptorProto_ExtensionRange) GetEnd() int32 {\n\tif x != nil && x.End != nil {\n\t\treturn *x.End\n\t}\n\treturn 0\n}\n\nfunc (x *DescriptorProto_ExtensionRange) GetOptions() *ExtensionRangeOptions {\n\tif x != nil {\n\t\treturn x.Options\n\t}\n\treturn nil\n}\n\n// Range of reserved tag numbers. Reserved tag numbers may not be used by\n// fields or extension ranges in the same message. Reserved ranges may\n// not overlap.\ntype DescriptorProto_ReservedRange struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tStart *int32 `protobuf:\"varint,1,opt,name=start\" json:\"start,omitempty\"` // Inclusive.\n\tEnd   *int32 `protobuf:\"varint,2,opt,name=end\" json:\"end,omitempty\"`     // Exclusive.\n}\n\nfunc (x *DescriptorProto_ReservedRange) Reset() {\n\t*x = DescriptorProto_ReservedRange{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[22]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DescriptorProto_ReservedRange) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DescriptorProto_ReservedRange) ProtoMessage() {}\n\nfunc (x *DescriptorProto_ReservedRange) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[22]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use DescriptorProto_ReservedRange.ProtoReflect.Descriptor instead.\nfunc (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2, 1}\n}\n\nfunc (x *DescriptorProto_ReservedRange) GetStart() int32 {\n\tif x != nil && x.Start != nil {\n\t\treturn *x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *DescriptorProto_ReservedRange) GetEnd() int32 {\n\tif x != nil && x.End != nil {\n\t\treturn *x.End\n\t}\n\treturn 0\n}\n\ntype ExtensionRangeOptions_Declaration struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// The extension number declared within the extension range.\n\tNumber *int32 `protobuf:\"varint,1,opt,name=number\" json:\"number,omitempty\"`\n\t// The fully-qualified name of the extension field. There must be a leading\n\t// dot in front of the full name.\n\tFullName *string `protobuf:\"bytes,2,opt,name=full_name,json=fullName\" json:\"full_name,omitempty\"`\n\t// The fully-qualified type name of the extension field. Unlike\n\t// Metadata.type, Declaration.type must have a leading dot for messages\n\t// and enums.\n\tType *string `protobuf:\"bytes,3,opt,name=type\" json:\"type,omitempty\"`\n\t// Deprecated. Please use \"repeated\".\n\t//\n\t// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\n\tIsRepeated *bool `protobuf:\"varint,4,opt,name=is_repeated,json=isRepeated\" json:\"is_repeated,omitempty\"`\n\t// If true, indicates that the number is reserved in the extension range,\n\t// and any extension field with the number will fail to compile. Set this\n\t// when a declared extension field is deleted.\n\tReserved *bool `protobuf:\"varint,5,opt,name=reserved\" json:\"reserved,omitempty\"`\n\t// If true, indicates that the extension must be defined as repeated.\n\t// Otherwise the extension must be defined as optional.\n\tRepeated *bool `protobuf:\"varint,6,opt,name=repeated\" json:\"repeated,omitempty\"`\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) Reset() {\n\t*x = ExtensionRangeOptions_Declaration{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[23]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ExtensionRangeOptions_Declaration) ProtoMessage() {}\n\nfunc (x *ExtensionRangeOptions_Declaration) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[23]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use ExtensionRangeOptions_Declaration.ProtoReflect.Descriptor instead.\nfunc (*ExtensionRangeOptions_Declaration) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3, 0}\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetNumber() int32 {\n\tif x != nil && x.Number != nil {\n\t\treturn *x.Number\n\t}\n\treturn 0\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetFullName() string {\n\tif x != nil && x.FullName != nil {\n\t\treturn *x.FullName\n\t}\n\treturn \"\"\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetType() string {\n\tif x != nil && x.Type != nil {\n\t\treturn *x.Type\n\t}\n\treturn \"\"\n}\n\n// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.\nfunc (x *ExtensionRangeOptions_Declaration) GetIsRepeated() bool {\n\tif x != nil && x.IsRepeated != nil {\n\t\treturn *x.IsRepeated\n\t}\n\treturn false\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetReserved() bool {\n\tif x != nil && x.Reserved != nil {\n\t\treturn *x.Reserved\n\t}\n\treturn false\n}\n\nfunc (x *ExtensionRangeOptions_Declaration) GetRepeated() bool {\n\tif x != nil && x.Repeated != nil {\n\t\treturn *x.Repeated\n\t}\n\treturn false\n}\n\n// Range of reserved numeric values. Reserved values may not be used by\n// entries in the same enum. Reserved ranges may not overlap.\n//\n// Note that this is distinct from DescriptorProto.ReservedRange in that it\n// is inclusive such that it can appropriately represent the entire int32\n// domain.\ntype EnumDescriptorProto_EnumReservedRange struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tStart *int32 `protobuf:\"varint,1,opt,name=start\" json:\"start,omitempty\"` // Inclusive.\n\tEnd   *int32 `protobuf:\"varint,2,opt,name=end\" json:\"end,omitempty\"`     // Inclusive.\n}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) Reset() {\n\t*x = EnumDescriptorProto_EnumReservedRange{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[24]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EnumDescriptorProto_EnumReservedRange) ProtoMessage() {}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[24]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use EnumDescriptorProto_EnumReservedRange.ProtoReflect.Descriptor instead.\nfunc (*EnumDescriptorProto_EnumReservedRange) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{6, 0}\n}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) GetStart() int32 {\n\tif x != nil && x.Start != nil {\n\t\treturn *x.Start\n\t}\n\treturn 0\n}\n\nfunc (x *EnumDescriptorProto_EnumReservedRange) GetEnd() int32 {\n\tif x != nil && x.End != nil {\n\t\treturn *x.End\n\t}\n\treturn 0\n}\n\n// The name of the uninterpreted option.  Each string represents a segment in\n// a dot-separated name.  is_extension is true iff a segment represents an\n// extension (denoted with parentheses in options specs in .proto files).\n// E.g.,{ [\"foo\", false], [\"bar.baz\", true], [\"moo\", false] } represents\n// \"foo.(bar.baz).moo\".\ntype UninterpretedOption_NamePart struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tNamePart    *string `protobuf:\"bytes,1,req,name=name_part,json=namePart\" json:\"name_part,omitempty\"`\n\tIsExtension *bool   `protobuf:\"varint,2,req,name=is_extension,json=isExtension\" json:\"is_extension,omitempty\"`\n}\n\nfunc (x *UninterpretedOption_NamePart) Reset() {\n\t*x = UninterpretedOption_NamePart{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[25]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UninterpretedOption_NamePart) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UninterpretedOption_NamePart) ProtoMessage() {}\n\nfunc (x *UninterpretedOption_NamePart) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[25]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use UninterpretedOption_NamePart.ProtoReflect.Descriptor instead.\nfunc (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{18, 0}\n}\n\nfunc (x *UninterpretedOption_NamePart) GetNamePart() string {\n\tif x != nil && x.NamePart != nil {\n\t\treturn *x.NamePart\n\t}\n\treturn \"\"\n}\n\nfunc (x *UninterpretedOption_NamePart) GetIsExtension() bool {\n\tif x != nil && x.IsExtension != nil {\n\t\treturn *x.IsExtension\n\t}\n\treturn false\n}\n\ntype SourceCodeInfo_Location struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Identifies which part of the FileDescriptorProto was defined at this\n\t// location.\n\t//\n\t// Each element is a field number or an index.  They form a path from\n\t// the root FileDescriptorProto to the place where the definition occurs.\n\t// For example, this path:\n\t//\n\t//\t[ 4, 3, 2, 7, 1 ]\n\t//\n\t// refers to:\n\t//\n\t//\tfile.message_type(3)  // 4, 3\n\t//\t    .field(7)         // 2, 7\n\t//\t    .name()           // 1\n\t//\n\t// This is because FileDescriptorProto.message_type has field number 4:\n\t//\n\t//\trepeated DescriptorProto message_type = 4;\n\t//\n\t// and DescriptorProto.field has field number 2:\n\t//\n\t//\trepeated FieldDescriptorProto field = 2;\n\t//\n\t// and FieldDescriptorProto.name has field number 1:\n\t//\n\t//\toptional string name = 1;\n\t//\n\t// Thus, the above path gives the location of a field name.  If we removed\n\t// the last element:\n\t//\n\t//\t[ 4, 3, 2, 7 ]\n\t//\n\t// this path refers to the whole field declaration (from the beginning\n\t// of the label to the terminating semicolon).\n\tPath []int32 `protobuf:\"varint,1,rep,packed,name=path\" json:\"path,omitempty\"`\n\t// Always has exactly three or four elements: start line, start column,\n\t// end line (optional, otherwise assumed same as start line), end column.\n\t// These are packed into a single field for efficiency.  Note that line\n\t// and column numbers are zero-based -- typically you will want to add\n\t// 1 to each before displaying to a user.\n\tSpan []int32 `protobuf:\"varint,2,rep,packed,name=span\" json:\"span,omitempty\"`\n\t// If this SourceCodeInfo represents a complete declaration, these are any\n\t// comments appearing before and after the declaration which appear to be\n\t// attached to the declaration.\n\t//\n\t// A series of line comments appearing on consecutive lines, with no other\n\t// tokens appearing on those lines, will be treated as a single comment.\n\t//\n\t// leading_detached_comments will keep paragraphs of comments that appear\n\t// before (but not connected to) the current element. Each paragraph,\n\t// separated by empty lines, will be one comment element in the repeated\n\t// field.\n\t//\n\t// Only the comment content is provided; comment markers (e.g. //) are\n\t// stripped out.  For block comments, leading whitespace and an asterisk\n\t// will be stripped from the beginning of each line other than the first.\n\t// Newlines are included in the output.\n\t//\n\t// Examples:\n\t//\n\t//\toptional int32 foo = 1;  // Comment attached to foo.\n\t//\t// Comment attached to bar.\n\t//\toptional int32 bar = 2;\n\t//\n\t//\toptional string baz = 3;\n\t//\t// Comment attached to baz.\n\t//\t// Another line attached to baz.\n\t//\n\t//\t// Comment attached to moo.\n\t//\t//\n\t//\t// Another line attached to moo.\n\t//\toptional double moo = 4;\n\t//\n\t//\t// Detached comment for corge. This is not leading or trailing comments\n\t//\t// to moo or corge because there are blank lines separating it from\n\t//\t// both.\n\t//\n\t//\t// Detached comment for corge paragraph 2.\n\t//\n\t//\toptional string corge = 5;\n\t//\t/* Block comment attached\n\t//\t * to corge.  Leading asterisks\n\t//\t * will be removed. */\n\t//\t/* Block comment attached to\n\t//\t * grault. */\n\t//\toptional int32 grault = 6;\n\t//\n\t//\t// ignored detached comments.\n\tLeadingComments         *string  `protobuf:\"bytes,3,opt,name=leading_comments,json=leadingComments\" json:\"leading_comments,omitempty\"`\n\tTrailingComments        *string  `protobuf:\"bytes,4,opt,name=trailing_comments,json=trailingComments\" json:\"trailing_comments,omitempty\"`\n\tLeadingDetachedComments []string `protobuf:\"bytes,6,rep,name=leading_detached_comments,json=leadingDetachedComments\" json:\"leading_detached_comments,omitempty\"`\n}\n\nfunc (x *SourceCodeInfo_Location) Reset() {\n\t*x = SourceCodeInfo_Location{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[26]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SourceCodeInfo_Location) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SourceCodeInfo_Location) ProtoMessage() {}\n\nfunc (x *SourceCodeInfo_Location) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[26]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use SourceCodeInfo_Location.ProtoReflect.Descriptor instead.\nfunc (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 0}\n}\n\nfunc (x *SourceCodeInfo_Location) GetPath() []int32 {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn nil\n}\n\nfunc (x *SourceCodeInfo_Location) GetSpan() []int32 {\n\tif x != nil {\n\t\treturn x.Span\n\t}\n\treturn nil\n}\n\nfunc (x *SourceCodeInfo_Location) GetLeadingComments() string {\n\tif x != nil && x.LeadingComments != nil {\n\t\treturn *x.LeadingComments\n\t}\n\treturn \"\"\n}\n\nfunc (x *SourceCodeInfo_Location) GetTrailingComments() string {\n\tif x != nil && x.TrailingComments != nil {\n\t\treturn *x.TrailingComments\n\t}\n\treturn \"\"\n}\n\nfunc (x *SourceCodeInfo_Location) GetLeadingDetachedComments() []string {\n\tif x != nil {\n\t\treturn x.LeadingDetachedComments\n\t}\n\treturn nil\n}\n\ntype GeneratedCodeInfo_Annotation struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Identifies the element in the original source .proto file. This field\n\t// is formatted the same as SourceCodeInfo.Location.path.\n\tPath []int32 `protobuf:\"varint,1,rep,packed,name=path\" json:\"path,omitempty\"`\n\t// Identifies the filesystem path to the original source .proto.\n\tSourceFile *string `protobuf:\"bytes,2,opt,name=source_file,json=sourceFile\" json:\"source_file,omitempty\"`\n\t// Identifies the starting offset in bytes in the generated code\n\t// that relates to the identified object.\n\tBegin *int32 `protobuf:\"varint,3,opt,name=begin\" json:\"begin,omitempty\"`\n\t// Identifies the ending offset in bytes in the generated code that\n\t// relates to the identified object. The end offset should be one past\n\t// the last relevant byte (so the length of the text = end - begin).\n\tEnd      *int32                                 `protobuf:\"varint,4,opt,name=end\" json:\"end,omitempty\"`\n\tSemantic *GeneratedCodeInfo_Annotation_Semantic `protobuf:\"varint,5,opt,name=semantic,enum=google.protobuf.GeneratedCodeInfo_Annotation_Semantic\" json:\"semantic,omitempty\"`\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) Reset() {\n\t*x = GeneratedCodeInfo_Annotation{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_descriptor_proto_msgTypes[27]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GeneratedCodeInfo_Annotation) ProtoMessage() {}\n\nfunc (x *GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_descriptor_proto_msgTypes[27]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use GeneratedCodeInfo_Annotation.ProtoReflect.Descriptor instead.\nfunc (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20, 0}\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetPath() []int32 {\n\tif x != nil {\n\t\treturn x.Path\n\t}\n\treturn nil\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetSourceFile() string {\n\tif x != nil && x.SourceFile != nil {\n\t\treturn *x.SourceFile\n\t}\n\treturn \"\"\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetBegin() int32 {\n\tif x != nil && x.Begin != nil {\n\t\treturn *x.Begin\n\t}\n\treturn 0\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetEnd() int32 {\n\tif x != nil && x.End != nil {\n\t\treturn *x.End\n\t}\n\treturn 0\n}\n\nfunc (x *GeneratedCodeInfo_Annotation) GetSemantic() GeneratedCodeInfo_Annotation_Semantic {\n\tif x != nil && x.Semantic != nil {\n\t\treturn *x.Semantic\n\t}\n\treturn GeneratedCodeInfo_Annotation_NONE\n}\n\nvar File_google_protobuf_descriptor_proto protoreflect.FileDescriptor\n\nvar file_google_protobuf_descriptor_proto_rawDesc = []byte{\n\t0x0a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,\n\t0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x62, 0x75, 0x66, 0x22, 0x4d, 0x0a, 0x11, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72,\n\t0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65,\n\t0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73,\n\t0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x04, 0x66, 0x69,\n\t0x6c, 0x65, 0x22, 0xfe, 0x04, 0x0a, 0x13, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72,\n\t0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,\n\t0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18,\n\t0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65,\n\t0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65,\n\t0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x75, 0x62, 0x6c,\n\t0x69, 0x63, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0a, 0x20,\n\t0x03, 0x28, 0x05, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x44, 0x65, 0x70, 0x65, 0x6e,\n\t0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x65, 0x61, 0x6b, 0x5f, 0x64, 0x65,\n\t0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e,\n\t0x77, 0x65, 0x61, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x43,\n\t0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04,\n\t0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,\n\t0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54,\n\t0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65,\n\t0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73,\n\t0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x65, 0x6e,\n\t0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,\n\t0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,\n\t0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f,\n\t0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x09, 0x65, 0x78, 0x74,\n\t0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,\n\t0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72,\n\t0x6f, 0x74, 0x6f, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36,\n\t0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,\n\t0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f,\n\t0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x5f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66,\n\t0x6f, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66,\n\t0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x64, 0x69,\n\t0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74,\n\t0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x06, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,\n\t0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66,\n\t0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,\n\t0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74,\n\t0x6f, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65,\n\t0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69,\n\t0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f,\n\t0x74, 0x6f, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a,\n\t0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03,\n\t0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50,\n\t0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0a, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65,\n\t0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20,\n\t0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,\n\t0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54,\n\t0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,\n\t0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,\n\t0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45,\n\t0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0e, 0x65,\n\t0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x44, 0x0a,\n\t0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x64, 0x65, 0x63, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28,\n\t0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,\n\t0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44,\n\t0x65, 0x63, 0x6c, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55,\n\t0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65,\n\t0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,\n\t0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65,\n\t0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,\n\t0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65,\n\t0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65,\n\t0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x7a, 0x0a, 0x0e, 0x45, 0x78,\n\t0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05,\n\t0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61,\n\t0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,\n\t0x03, 0x65, 0x6e, 0x64, 0x12, 0x40, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,\n\t0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,\n\t0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f,\n\t0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x37, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76,\n\t0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a,\n\t0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22,\n\t0xad, 0x04, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e,\n\t0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69,\n\t0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,\n\t0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74,\n\t0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13,\n\t0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,\n\t0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,\n\t0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0x88, 0x01,\n\t0x02, 0x52, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x68,\n\t0x0a, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,\n\t0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x65, 0x72,\n\t0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3a, 0x0a,\n\t0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x69,\n\t0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xb3, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x63,\n\t0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62,\n\t0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72,\n\t0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a,\n\t0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70,\n\t0x65, 0x12, 0x23, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,\n\t0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x69, 0x73, 0x52, 0x65,\n\t0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76,\n\t0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76,\n\t0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06,\n\t0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0x34,\n\t0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74,\n\t0x61, 0x74, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49,\n\t0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49,\n\t0x45, 0x44, 0x10, 0x01, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22,\n\t0xc1, 0x06, 0x0a, 0x14, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,\n\t0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06,\n\t0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75,\n\t0x6d, 0x62, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20,\n\t0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72,\n\t0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c,\n\t0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,\n\t0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73,\n\t0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x79, 0x70,\n\t0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f,\n\t0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65,\n\t0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65,\n\t0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75,\n\t0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,\n\t0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x69,\n\t0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f,\n\t0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6e,\n\t0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x4e,\n\t0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18,\n\t0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x4f, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xb6, 0x02, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f,\n\t0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12,\n\t0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x02, 0x12,\n\t0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, 0x12,\n\t0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04,\n\t0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x05,\n\t0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34,\n\t0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44,\n\t0x33, 0x32, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f,\n\t0x4c, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49,\n\t0x4e, 0x47, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x52, 0x4f,\n\t0x55, 0x50, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53,\n\t0x53, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42,\n\t0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55,\n\t0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f,\n\t0x45, 0x4e, 0x55, 0x4d, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53,\n\t0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50,\n\t0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x10, 0x10, 0x12, 0x0f, 0x0a, 0x0b,\n\t0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x11, 0x12, 0x0f, 0x0a,\n\t0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x12, 0x22, 0x43,\n\t0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c,\n\t0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c,\n\t0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12,\n\t0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x50, 0x45, 0x41, 0x54, 0x45,\n\t0x44, 0x10, 0x03, 0x22, 0x63, 0x0a, 0x14, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x73, 0x63,\n\t0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e,\n\t0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,\n\t0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,\n\t0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe3, 0x02, 0x0a, 0x13, 0x45, 0x6e, 0x75,\n\t0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f,\n\t0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,\n\t0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,\n\t0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44,\n\t0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05,\n\t0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,\n\t0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5d, 0x0a,\n\t0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18,\n\t0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63,\n\t0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6e, 0x75, 0x6d,\n\t0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x72,\n\t0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d,\n\t0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20,\n\t0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d,\n\t0x65, 0x1a, 0x3b, 0x0a, 0x11, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65,\n\t0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03,\n\t0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x83,\n\t0x01, 0x0a, 0x18, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63,\n\t0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e,\n\t0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,\n\t0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,\n\t0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56,\n\t0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,\n\t0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12,\n\t0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,\n\t0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20,\n\t0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, 0x63,\n\t0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x6d, 0x65, 0x74,\n\t0x68, 0x6f, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x89,\n\t0x02, 0x0a, 0x15, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,\n\t0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a,\n\t0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f,\n\t0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x07,\n\t0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,\n\t0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f,\n\t0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,\n\t0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,\n\t0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53,\n\t0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76,\n\t0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01,\n\t0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65,\n\t0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0x91, 0x09, 0x0a, 0x0b, 0x46,\n\t0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6a, 0x61,\n\t0x76, 0x61, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x0b, 0x6a, 0x61, 0x76, 0x61, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a,\n\t0x14, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73,\n\t0x73, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6a, 0x61, 0x76,\n\t0x61, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x12,\n\t0x35, 0x0a, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65,\n\t0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61,\n\t0x6c, 0x73, 0x65, 0x52, 0x11, 0x6a, 0x61, 0x76, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c,\n\t0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x1d, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x67,\n\t0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x5f, 0x61,\n\t0x6e, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18,\n\t0x01, 0x52, 0x19, 0x6a, 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45,\n\t0x71, 0x75, 0x61, 0x6c, 0x73, 0x41, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x16,\n\t0x6a, 0x61, 0x76, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x65, 0x63,\n\t0x6b, 0x5f, 0x75, 0x74, 0x66, 0x38, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61,\n\t0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x43,\n\t0x68, 0x65, 0x63, 0x6b, 0x55, 0x74, 0x66, 0x38, 0x12, 0x53, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x69,\n\t0x6d, 0x69, 0x7a, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,\n\t0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74,\n\t0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x3a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44,\n\t0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x46, 0x6f, 0x72, 0x12, 0x1d, 0x0a,\n\t0x0a, 0x67, 0x6f, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x09, 0x67, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x35, 0x0a, 0x13,\n\t0x63, 0x63, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69,\n\t0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65,\n\t0x52, 0x11, 0x63, 0x63, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69,\n\t0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x15, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65,\n\t0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01,\n\t0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x47,\n\t0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x35,\n\t0x0a, 0x13, 0x70, 0x79, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72,\n\t0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c,\n\t0x73, 0x65, 0x52, 0x11, 0x70, 0x79, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72,\n\t0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x14, 0x70, 0x68, 0x70, 0x5f, 0x67, 0x65, 0x6e,\n\t0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x2a, 0x20,\n\t0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x12, 0x70, 0x68, 0x70, 0x47,\n\t0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x25,\n\t0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01,\n\t0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65,\n\t0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62,\n\t0x6c, 0x65, 0x5f, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x3a,\n\t0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0e, 0x63, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41,\n\t0x72, 0x65, 0x6e, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x62, 0x6a, 0x63, 0x5f, 0x63, 0x6c,\n\t0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69,\n\t0x78, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65,\n\t0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x73, 0x68,\n\t0x61, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c,\n\t0x73, 0x77, 0x69, 0x66, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x27, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x0b, 0x73, 0x77, 0x69, 0x66, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12,\n\t0x28, 0x0a, 0x10, 0x70, 0x68, 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65,\n\t0x66, 0x69, 0x78, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x68, 0x70, 0x43, 0x6c,\n\t0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x68, 0x70,\n\t0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x0c, 0x70, 0x68, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x34,\n\t0x0a, 0x16, 0x70, 0x68, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e,\n\t0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14,\n\t0x70, 0x68, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73,\n\t0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x62, 0x79, 0x5f, 0x70, 0x61, 0x63,\n\t0x6b, 0x61, 0x67, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x62, 0x79,\n\t0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74,\n\t0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,\n\t0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72,\n\t0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e,\n\t0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f,\n\t0x6e, 0x22, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64,\n\t0x65, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09,\n\t0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c,\n\t0x49, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x03, 0x2a, 0x09, 0x08,\n\t0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x26, 0x10, 0x27, 0x22, 0xbb,\n\t0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x12, 0x3c, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74,\n\t0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61,\n\t0x67, 0x65, 0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12,\n\t0x4c, 0x0a, 0x1f, 0x6e, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x64,\n\t0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,\n\t0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52,\n\t0x1c, 0x6e, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72,\n\t0x69, 0x70, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x12, 0x25, 0x0a,\n\t0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,\n\t0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63,\n\t0x61, 0x74, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72,\n\t0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72,\n\t0x79, 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f,\n\t0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c,\n\t0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28,\n\t0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65,\n\t0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64,\n\t0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69,\n\t0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,\n\t0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74,\n\t0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13,\n\t0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04,\n\t0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07,\n\t0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x22, 0x85, 0x09, 0x0a,\n\t0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a,\n\t0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,\n\t0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x54, 0x79, 0x70,\n\t0x65, 0x3a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x52, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65,\n\t0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,\n\t0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x6a, 0x73, 0x74, 0x79,\n\t0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64,\n\t0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x09,\n\t0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x52, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70,\n\t0x65, 0x12, 0x19, 0x0a, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a,\n\t0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x12, 0x2e, 0x0a, 0x0f,\n\t0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18,\n\t0x0f, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0e, 0x75, 0x6e,\n\t0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x25, 0x0a, 0x0a,\n\t0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,\n\t0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,\n\t0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28,\n\t0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x12, 0x28,\n\t0x0a, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x10,\n\t0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62,\n\t0x75, 0x67, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x65,\n\t0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69,\n\t0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f,\n\t0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65,\n\t0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18,\n\t0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65,\n\t0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65,\n\t0x74, 0x12, 0x48, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x13, 0x20, 0x03,\n\t0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79,\n\t0x70, 0x65, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75,\n\t0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69,\n\t0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,\n\t0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f,\n\t0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2f, 0x0a, 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a,\n\t0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f,\n\t0x52, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50,\n\t0x49, 0x45, 0x43, 0x45, 0x10, 0x02, 0x22, 0x35, 0x0a, 0x06, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65,\n\t0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12,\n\t0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d,\n\t0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x22, 0x55, 0x0a,\n\t0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e,\n\t0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e,\n\t0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e,\n\t0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x14,\n\t0x0a, 0x10, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52,\n\t0x43, 0x45, 0x10, 0x02, 0x22, 0x8c, 0x02, 0x0a, 0x10, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54,\n\t0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52,\n\t0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,\n\t0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50,\n\t0x45, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x52, 0x47,\n\t0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f,\n\t0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52,\n\t0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45,\n\t0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50,\n\t0x45, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52,\n\t0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x4e, 0x45, 0x4f, 0x46, 0x10, 0x05,\n\t0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,\n\t0x45, 0x4e, 0x55, 0x4d, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54,\n\t0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59,\n\t0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50,\n\t0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54,\n\t0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f,\n\t0x44, 0x10, 0x09, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04,\n\t0x08, 0x04, 0x10, 0x05, 0x22, 0x73, 0x0a, 0x0c, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70,\n\t0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20,\n\t0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65,\n\t0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74,\n\t0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09,\n\t0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x98, 0x02, 0x0a, 0x0b, 0x45, 0x6e,\n\t0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c,\n\t0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,\n\t0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65,\n\t0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05,\n\t0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65,\n\t0x64, 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f,\n\t0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c,\n\t0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28,\n\t0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65,\n\t0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64,\n\t0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69,\n\t0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,\n\t0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74,\n\t0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13,\n\t0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04,\n\t0x08, 0x05, 0x10, 0x06, 0x22, 0x9e, 0x01, 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c,\n\t0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70,\n\t0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66,\n\t0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,\n\t0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65,\n\t0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,\n\t0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f,\n\t0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,\n\t0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10,\n\t0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9c, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,\n\t0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72,\n\t0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61,\n\t0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12,\n\t0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64,\n\t0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,\n\t0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70,\n\t0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65,\n\t0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80,\n\t0x80, 0x80, 0x80, 0x02, 0x22, 0xe0, 0x02, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f,\n\t0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63,\n\t0x61, 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73,\n\t0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a,\n\t0x11, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76,\n\t0x65, 0x6c, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f,\n\t0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74,\n\t0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50,\n\t0x4f, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x10,\n\t0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c,\n\t0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65,\n\t0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,\n\t0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f,\n\t0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,\n\t0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x10, 0x49, 0x64,\n\t0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x17,\n\t0x0a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e,\n\t0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x5f, 0x53, 0x49,\n\t0x44, 0x45, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a,\n\t0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x2a, 0x09, 0x08, 0xe8,\n\t0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9a, 0x03, 0x0a, 0x13, 0x55, 0x6e, 0x69, 0x6e,\n\t0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,\n\t0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,\n\t0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x52, 0x04, 0x6e, 0x61,\n\t0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72,\n\t0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64,\n\t0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a,\n\t0x12, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61,\n\t0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74,\n\t0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6e,\n\t0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75,\n\t0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76,\n\t0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x75,\n\t0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52,\n\t0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c,\n\t0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01,\n\t0x28, 0x0c, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,\n\t0x27, 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c,\n\t0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67,\n\t0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4a, 0x0a, 0x08, 0x4e, 0x61, 0x6d, 0x65,\n\t0x50, 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72,\n\t0x74, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72,\n\t0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,\n\t0x6e, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e,\n\t0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa7, 0x02, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43,\n\t0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xce, 0x01,\n\t0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61,\n\t0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61,\n\t0x74, 0x68, 0x12, 0x16, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05,\n\t0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x65,\n\t0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d,\n\t0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e,\n\t0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,\n\t0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65,\n\t0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18,\n\t0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65,\n\t0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xd0,\n\t0x02, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65,\n\t0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72,\n\t0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e,\n\t0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x1a, 0xeb, 0x01, 0x0a, 0x0a, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05,\n\t0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62,\n\t0x65, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x62, 0x65, 0x67, 0x69,\n\t0x6e, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,\n\t0x65, 0x6e, 0x64, 0x12, 0x52, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x18,\n\t0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65,\n\t0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x52, 0x08, 0x73,\n\t0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x22, 0x28, 0x0a, 0x08, 0x53, 0x65, 0x6d, 0x61, 0x6e,\n\t0x74, 0x69, 0x63, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a,\n\t0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x10,\n\t0x02, 0x42, 0x7e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x10, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,\n\t0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x48, 0x01, 0x5a, 0x2d, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x64,\n\t0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02,\n\t0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,\n\t0x6e,\n}\n\nvar (\n\tfile_google_protobuf_descriptor_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_descriptor_proto_rawDescData = file_google_protobuf_descriptor_proto_rawDesc\n)\n\nfunc file_google_protobuf_descriptor_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_descriptor_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_descriptor_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_descriptor_proto_rawDescData)\n\t})\n\treturn file_google_protobuf_descriptor_proto_rawDescData\n}\n\nvar file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 10)\nvar file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 28)\nvar file_google_protobuf_descriptor_proto_goTypes = []interface{}{\n\t(ExtensionRangeOptions_VerificationState)(0),  // 0: google.protobuf.ExtensionRangeOptions.VerificationState\n\t(FieldDescriptorProto_Type)(0),                // 1: google.protobuf.FieldDescriptorProto.Type\n\t(FieldDescriptorProto_Label)(0),               // 2: google.protobuf.FieldDescriptorProto.Label\n\t(FileOptions_OptimizeMode)(0),                 // 3: google.protobuf.FileOptions.OptimizeMode\n\t(FieldOptions_CType)(0),                       // 4: google.protobuf.FieldOptions.CType\n\t(FieldOptions_JSType)(0),                      // 5: google.protobuf.FieldOptions.JSType\n\t(FieldOptions_OptionRetention)(0),             // 6: google.protobuf.FieldOptions.OptionRetention\n\t(FieldOptions_OptionTargetType)(0),            // 7: google.protobuf.FieldOptions.OptionTargetType\n\t(MethodOptions_IdempotencyLevel)(0),           // 8: google.protobuf.MethodOptions.IdempotencyLevel\n\t(GeneratedCodeInfo_Annotation_Semantic)(0),    // 9: google.protobuf.GeneratedCodeInfo.Annotation.Semantic\n\t(*FileDescriptorSet)(nil),                     // 10: google.protobuf.FileDescriptorSet\n\t(*FileDescriptorProto)(nil),                   // 11: google.protobuf.FileDescriptorProto\n\t(*DescriptorProto)(nil),                       // 12: google.protobuf.DescriptorProto\n\t(*ExtensionRangeOptions)(nil),                 // 13: google.protobuf.ExtensionRangeOptions\n\t(*FieldDescriptorProto)(nil),                  // 14: google.protobuf.FieldDescriptorProto\n\t(*OneofDescriptorProto)(nil),                  // 15: google.protobuf.OneofDescriptorProto\n\t(*EnumDescriptorProto)(nil),                   // 16: google.protobuf.EnumDescriptorProto\n\t(*EnumValueDescriptorProto)(nil),              // 17: google.protobuf.EnumValueDescriptorProto\n\t(*ServiceDescriptorProto)(nil),                // 18: google.protobuf.ServiceDescriptorProto\n\t(*MethodDescriptorProto)(nil),                 // 19: google.protobuf.MethodDescriptorProto\n\t(*FileOptions)(nil),                           // 20: google.protobuf.FileOptions\n\t(*MessageOptions)(nil),                        // 21: google.protobuf.MessageOptions\n\t(*FieldOptions)(nil),                          // 22: google.protobuf.FieldOptions\n\t(*OneofOptions)(nil),                          // 23: google.protobuf.OneofOptions\n\t(*EnumOptions)(nil),                           // 24: google.protobuf.EnumOptions\n\t(*EnumValueOptions)(nil),                      // 25: google.protobuf.EnumValueOptions\n\t(*ServiceOptions)(nil),                        // 26: google.protobuf.ServiceOptions\n\t(*MethodOptions)(nil),                         // 27: google.protobuf.MethodOptions\n\t(*UninterpretedOption)(nil),                   // 28: google.protobuf.UninterpretedOption\n\t(*SourceCodeInfo)(nil),                        // 29: google.protobuf.SourceCodeInfo\n\t(*GeneratedCodeInfo)(nil),                     // 30: google.protobuf.GeneratedCodeInfo\n\t(*DescriptorProto_ExtensionRange)(nil),        // 31: google.protobuf.DescriptorProto.ExtensionRange\n\t(*DescriptorProto_ReservedRange)(nil),         // 32: google.protobuf.DescriptorProto.ReservedRange\n\t(*ExtensionRangeOptions_Declaration)(nil),     // 33: google.protobuf.ExtensionRangeOptions.Declaration\n\t(*EnumDescriptorProto_EnumReservedRange)(nil), // 34: google.protobuf.EnumDescriptorProto.EnumReservedRange\n\t(*UninterpretedOption_NamePart)(nil),          // 35: google.protobuf.UninterpretedOption.NamePart\n\t(*SourceCodeInfo_Location)(nil),               // 36: google.protobuf.SourceCodeInfo.Location\n\t(*GeneratedCodeInfo_Annotation)(nil),          // 37: google.protobuf.GeneratedCodeInfo.Annotation\n}\nvar file_google_protobuf_descriptor_proto_depIdxs = []int32{\n\t11, // 0: google.protobuf.FileDescriptorSet.file:type_name -> google.protobuf.FileDescriptorProto\n\t12, // 1: google.protobuf.FileDescriptorProto.message_type:type_name -> google.protobuf.DescriptorProto\n\t16, // 2: google.protobuf.FileDescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto\n\t18, // 3: google.protobuf.FileDescriptorProto.service:type_name -> google.protobuf.ServiceDescriptorProto\n\t14, // 4: google.protobuf.FileDescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto\n\t20, // 5: google.protobuf.FileDescriptorProto.options:type_name -> google.protobuf.FileOptions\n\t29, // 6: google.protobuf.FileDescriptorProto.source_code_info:type_name -> google.protobuf.SourceCodeInfo\n\t14, // 7: google.protobuf.DescriptorProto.field:type_name -> google.protobuf.FieldDescriptorProto\n\t14, // 8: google.protobuf.DescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto\n\t12, // 9: google.protobuf.DescriptorProto.nested_type:type_name -> google.protobuf.DescriptorProto\n\t16, // 10: google.protobuf.DescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto\n\t31, // 11: google.protobuf.DescriptorProto.extension_range:type_name -> google.protobuf.DescriptorProto.ExtensionRange\n\t15, // 12: google.protobuf.DescriptorProto.oneof_decl:type_name -> google.protobuf.OneofDescriptorProto\n\t21, // 13: google.protobuf.DescriptorProto.options:type_name -> google.protobuf.MessageOptions\n\t32, // 14: google.protobuf.DescriptorProto.reserved_range:type_name -> google.protobuf.DescriptorProto.ReservedRange\n\t28, // 15: google.protobuf.ExtensionRangeOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t33, // 16: google.protobuf.ExtensionRangeOptions.declaration:type_name -> google.protobuf.ExtensionRangeOptions.Declaration\n\t0,  // 17: google.protobuf.ExtensionRangeOptions.verification:type_name -> google.protobuf.ExtensionRangeOptions.VerificationState\n\t2,  // 18: google.protobuf.FieldDescriptorProto.label:type_name -> google.protobuf.FieldDescriptorProto.Label\n\t1,  // 19: google.protobuf.FieldDescriptorProto.type:type_name -> google.protobuf.FieldDescriptorProto.Type\n\t22, // 20: google.protobuf.FieldDescriptorProto.options:type_name -> google.protobuf.FieldOptions\n\t23, // 21: google.protobuf.OneofDescriptorProto.options:type_name -> google.protobuf.OneofOptions\n\t17, // 22: google.protobuf.EnumDescriptorProto.value:type_name -> google.protobuf.EnumValueDescriptorProto\n\t24, // 23: google.protobuf.EnumDescriptorProto.options:type_name -> google.protobuf.EnumOptions\n\t34, // 24: google.protobuf.EnumDescriptorProto.reserved_range:type_name -> google.protobuf.EnumDescriptorProto.EnumReservedRange\n\t25, // 25: google.protobuf.EnumValueDescriptorProto.options:type_name -> google.protobuf.EnumValueOptions\n\t19, // 26: google.protobuf.ServiceDescriptorProto.method:type_name -> google.protobuf.MethodDescriptorProto\n\t26, // 27: google.protobuf.ServiceDescriptorProto.options:type_name -> google.protobuf.ServiceOptions\n\t27, // 28: google.protobuf.MethodDescriptorProto.options:type_name -> google.protobuf.MethodOptions\n\t3,  // 29: google.protobuf.FileOptions.optimize_for:type_name -> google.protobuf.FileOptions.OptimizeMode\n\t28, // 30: google.protobuf.FileOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t28, // 31: google.protobuf.MessageOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t4,  // 32: google.protobuf.FieldOptions.ctype:type_name -> google.protobuf.FieldOptions.CType\n\t5,  // 33: google.protobuf.FieldOptions.jstype:type_name -> google.protobuf.FieldOptions.JSType\n\t6,  // 34: google.protobuf.FieldOptions.retention:type_name -> google.protobuf.FieldOptions.OptionRetention\n\t7,  // 35: google.protobuf.FieldOptions.target:type_name -> google.protobuf.FieldOptions.OptionTargetType\n\t7,  // 36: google.protobuf.FieldOptions.targets:type_name -> google.protobuf.FieldOptions.OptionTargetType\n\t28, // 37: google.protobuf.FieldOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t28, // 38: google.protobuf.OneofOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t28, // 39: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t28, // 40: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t28, // 41: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t8,  // 42: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel\n\t28, // 43: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption\n\t35, // 44: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart\n\t36, // 45: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location\n\t37, // 46: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation\n\t13, // 47: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions\n\t9,  // 48: google.protobuf.GeneratedCodeInfo.Annotation.semantic:type_name -> google.protobuf.GeneratedCodeInfo.Annotation.Semantic\n\t49, // [49:49] is the sub-list for method output_type\n\t49, // [49:49] is the sub-list for method input_type\n\t49, // [49:49] is the sub-list for extension type_name\n\t49, // [49:49] is the sub-list for extension extendee\n\t0,  // [0:49] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_descriptor_proto_init() }\nfunc file_google_protobuf_descriptor_proto_init() {\n\tif File_google_protobuf_descriptor_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FileDescriptorSet); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FileDescriptorProto); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DescriptorProto); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ExtensionRangeOptions); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tcase 3:\n\t\t\t\treturn &v.extensionFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FieldDescriptorProto); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*OneofDescriptorProto); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EnumDescriptorProto); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EnumValueDescriptorProto); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ServiceDescriptorProto); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MethodDescriptorProto); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FileOptions); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tcase 3:\n\t\t\t\treturn &v.extensionFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MessageOptions); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tcase 3:\n\t\t\t\treturn &v.extensionFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FieldOptions); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tcase 3:\n\t\t\t\treturn &v.extensionFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*OneofOptions); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tcase 3:\n\t\t\t\treturn &v.extensionFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EnumOptions); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tcase 3:\n\t\t\t\treturn &v.extensionFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EnumValueOptions); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tcase 3:\n\t\t\t\treturn &v.extensionFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ServiceOptions); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tcase 3:\n\t\t\t\treturn &v.extensionFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MethodOptions); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tcase 3:\n\t\t\t\treturn &v.extensionFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UninterpretedOption); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SourceCodeInfo); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GeneratedCodeInfo); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DescriptorProto_ExtensionRange); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DescriptorProto_ReservedRange); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ExtensionRangeOptions_Declaration); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EnumDescriptorProto_EnumReservedRange); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UninterpretedOption_NamePart); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SourceCodeInfo_Location); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_google_protobuf_descriptor_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GeneratedCodeInfo_Annotation); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_protobuf_descriptor_proto_rawDesc,\n\t\t\tNumEnums:      10,\n\t\t\tNumMessages:   28,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_descriptor_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_descriptor_proto_depIdxs,\n\t\tEnumInfos:         file_google_protobuf_descriptor_proto_enumTypes,\n\t\tMessageInfos:      file_google_protobuf_descriptor_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_descriptor_proto = out.File\n\tfile_google_protobuf_descriptor_proto_rawDesc = nil\n\tfile_google_protobuf_descriptor_proto_goTypes = nil\n\tfile_google_protobuf_descriptor_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/any.proto\n\n// Package anypb contains generated types for google/protobuf/any.proto.\n//\n// The Any message is a dynamic representation of any other message value.\n// It is functionally a tuple of the full name of the remote message type and\n// the serialized bytes of the remote message value.\n//\n// # Constructing an Any\n//\n// An Any message containing another message value is constructed using New:\n//\n//\tany, err := anypb.New(m)\n//\tif err != nil {\n//\t\t... // handle error\n//\t}\n//\t... // make use of any\n//\n// # Unmarshaling an Any\n//\n// With a populated Any message, the underlying message can be serialized into\n// a remote concrete message value in a few ways.\n//\n// If the exact concrete type is known, then a new (or pre-existing) instance\n// of that message can be passed to the UnmarshalTo method:\n//\n//\tm := new(foopb.MyMessage)\n//\tif err := any.UnmarshalTo(m); err != nil {\n//\t\t... // handle error\n//\t}\n//\t... // make use of m\n//\n// If the exact concrete type is not known, then the UnmarshalNew method can be\n// used to unmarshal the contents into a new instance of the remote message type:\n//\n//\tm, err := any.UnmarshalNew()\n//\tif err != nil {\n//\t\t... // handle error\n//\t}\n//\t... // make use of m\n//\n// UnmarshalNew uses the global type registry to resolve the message type and\n// construct a new instance of that message to unmarshal into. In order for a\n// message type to appear in the global registry, the Go type representing that\n// protobuf message type must be linked into the Go binary. For messages\n// generated by protoc-gen-go, this is achieved through an import of the\n// generated Go package representing a .proto file.\n//\n// A common pattern with UnmarshalNew is to use a type switch with the resulting\n// proto.Message value:\n//\n//\tswitch m := m.(type) {\n//\tcase *foopb.MyMessage:\n//\t\t... // make use of m as a *foopb.MyMessage\n//\tcase *barpb.OtherMessage:\n//\t\t... // make use of m as a *barpb.OtherMessage\n//\tcase *bazpb.SomeMessage:\n//\t\t... // make use of m as a *bazpb.SomeMessage\n//\t}\n//\n// This pattern ensures that the generated packages containing the message types\n// listed in the case clauses are linked into the Go binary and therefore also\n// registered in the global registry.\n//\n// # Type checking an Any\n//\n// In order to type check whether an Any message represents some other message,\n// then use the MessageIs method:\n//\n//\tif any.MessageIs((*foopb.MyMessage)(nil)) {\n//\t\t... // make use of any, knowing that it contains a foopb.MyMessage\n//\t}\n//\n// The MessageIs method can also be used with an allocated instance of the target\n// message type if the intention is to unmarshal into it if the type matches:\n//\n//\tm := new(foopb.MyMessage)\n//\tif any.MessageIs(m) {\n//\t\tif err := any.UnmarshalTo(m); err != nil {\n//\t\t\t... // handle error\n//\t\t}\n//\t\t... // make use of m\n//\t}\npackage anypb\n\nimport (\n\tproto \"google.golang.org/protobuf/proto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoregistry \"google.golang.org/protobuf/reflect/protoregistry\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tstrings \"strings\"\n\tsync \"sync\"\n)\n\n// `Any` contains an arbitrary serialized protocol buffer message along with a\n// URL that describes the type of the serialized message.\n//\n// Protobuf library provides support to pack/unpack Any values in the form\n// of utility functions or additional generated methods of the Any type.\n//\n// Example 1: Pack and unpack a message in C++.\n//\n//\tFoo foo = ...;\n//\tAny any;\n//\tany.PackFrom(foo);\n//\t...\n//\tif (any.UnpackTo(&foo)) {\n//\t  ...\n//\t}\n//\n// Example 2: Pack and unpack a message in Java.\n//\n//\t   Foo foo = ...;\n//\t   Any any = Any.pack(foo);\n//\t   ...\n//\t   if (any.is(Foo.class)) {\n//\t     foo = any.unpack(Foo.class);\n//\t   }\n//\t   // or ...\n//\t   if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n//\t     foo = any.unpack(Foo.getDefaultInstance());\n//\t   }\n//\n//\tExample 3: Pack and unpack a message in Python.\n//\n//\t   foo = Foo(...)\n//\t   any = Any()\n//\t   any.Pack(foo)\n//\t   ...\n//\t   if any.Is(Foo.DESCRIPTOR):\n//\t     any.Unpack(foo)\n//\t     ...\n//\n//\tExample 4: Pack and unpack a message in Go\n//\n//\t    foo := &pb.Foo{...}\n//\t    any, err := anypb.New(foo)\n//\t    if err != nil {\n//\t      ...\n//\t    }\n//\t    ...\n//\t    foo := &pb.Foo{}\n//\t    if err := any.UnmarshalTo(foo); err != nil {\n//\t      ...\n//\t    }\n//\n// The pack methods provided by protobuf library will by default use\n// 'type.googleapis.com/full.type.name' as the type URL and the unpack\n// methods only use the fully qualified type name after the last '/'\n// in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n// name \"y.z\".\n//\n// JSON\n// ====\n// The JSON representation of an `Any` value uses the regular\n// representation of the deserialized, embedded message, with an\n// additional field `@type` which contains the type URL. Example:\n//\n//\tpackage google.profile;\n//\tmessage Person {\n//\t  string first_name = 1;\n//\t  string last_name = 2;\n//\t}\n//\n//\t{\n//\t  \"@type\": \"type.googleapis.com/google.profile.Person\",\n//\t  \"firstName\": <string>,\n//\t  \"lastName\": <string>\n//\t}\n//\n// If the embedded message type is well-known and has a custom JSON\n// representation, that representation will be embedded adding a field\n// `value` which holds the custom JSON in addition to the `@type`\n// field. Example (for message [google.protobuf.Duration][]):\n//\n//\t{\n//\t  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n//\t  \"value\": \"1.212s\"\n//\t}\ntype Any struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// A URL/resource name that uniquely identifies the type of the serialized\n\t// protocol buffer message. This string must contain at least\n\t// one \"/\" character. The last segment of the URL's path must represent\n\t// the fully qualified name of the type (as in\n\t// `path/google.protobuf.Duration`). The name should be in a canonical form\n\t// (e.g., leading \".\" is not accepted).\n\t//\n\t// In practice, teams usually precompile into the binary all types that they\n\t// expect it to use in the context of Any. However, for URLs which use the\n\t// scheme `http`, `https`, or no scheme, one can optionally set up a type\n\t// server that maps type URLs to message definitions as follows:\n\t//\n\t//   - If no scheme is provided, `https` is assumed.\n\t//   - An HTTP GET on the URL must yield a [google.protobuf.Type][]\n\t//     value in binary format, or produce an error.\n\t//   - Applications are allowed to cache lookup results based on the\n\t//     URL, or have them precompiled into a binary to avoid any\n\t//     lookup. Therefore, binary compatibility needs to be preserved\n\t//     on changes to types. (Use versioned type names to manage\n\t//     breaking changes.)\n\t//\n\t// Note: this functionality is not currently available in the official\n\t// protobuf release, and it is not used for type URLs beginning with\n\t// type.googleapis.com.\n\t//\n\t// Schemes other than `http`, `https` (or the empty scheme) might be\n\t// used with implementation specific semantics.\n\tTypeUrl string `protobuf:\"bytes,1,opt,name=type_url,json=typeUrl,proto3\" json:\"type_url,omitempty\"`\n\t// Must be a valid serialized protocol buffer of the above specified type.\n\tValue []byte `protobuf:\"bytes,2,opt,name=value,proto3\" json:\"value,omitempty\"`\n}\n\n// New marshals src into a new Any instance.\nfunc New(src proto.Message) (*Any, error) {\n\tdst := new(Any)\n\tif err := dst.MarshalFrom(src); err != nil {\n\t\treturn nil, err\n\t}\n\treturn dst, nil\n}\n\n// MarshalFrom marshals src into dst as the underlying message\n// using the provided marshal options.\n//\n// If no options are specified, call dst.MarshalFrom instead.\nfunc MarshalFrom(dst *Any, src proto.Message, opts proto.MarshalOptions) error {\n\tconst urlPrefix = \"type.googleapis.com/\"\n\tif src == nil {\n\t\treturn protoimpl.X.NewError(\"invalid nil source message\")\n\t}\n\tb, err := opts.Marshal(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdst.TypeUrl = urlPrefix + string(src.ProtoReflect().Descriptor().FullName())\n\tdst.Value = b\n\treturn nil\n}\n\n// UnmarshalTo unmarshals the underlying message from src into dst\n// using the provided unmarshal options.\n// It reports an error if dst is not of the right message type.\n//\n// If no options are specified, call src.UnmarshalTo instead.\nfunc UnmarshalTo(src *Any, dst proto.Message, opts proto.UnmarshalOptions) error {\n\tif src == nil {\n\t\treturn protoimpl.X.NewError(\"invalid nil source message\")\n\t}\n\tif !src.MessageIs(dst) {\n\t\tgot := dst.ProtoReflect().Descriptor().FullName()\n\t\twant := src.MessageName()\n\t\treturn protoimpl.X.NewError(\"mismatched message type: got %q, want %q\", got, want)\n\t}\n\treturn opts.Unmarshal(src.GetValue(), dst)\n}\n\n// UnmarshalNew unmarshals the underlying message from src into dst,\n// which is newly created message using a type resolved from the type URL.\n// The message type is resolved according to opt.Resolver,\n// which should implement protoregistry.MessageTypeResolver.\n// It reports an error if the underlying message type could not be resolved.\n//\n// If no options are specified, call src.UnmarshalNew instead.\nfunc UnmarshalNew(src *Any, opts proto.UnmarshalOptions) (dst proto.Message, err error) {\n\tif src.GetTypeUrl() == \"\" {\n\t\treturn nil, protoimpl.X.NewError(\"invalid empty type URL\")\n\t}\n\tif opts.Resolver == nil {\n\t\topts.Resolver = protoregistry.GlobalTypes\n\t}\n\tr, ok := opts.Resolver.(protoregistry.MessageTypeResolver)\n\tif !ok {\n\t\treturn nil, protoregistry.NotFound\n\t}\n\tmt, err := r.FindMessageByURL(src.GetTypeUrl())\n\tif err != nil {\n\t\tif err == protoregistry.NotFound {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, protoimpl.X.NewError(\"could not resolve %q: %v\", src.GetTypeUrl(), err)\n\t}\n\tdst = mt.New().Interface()\n\treturn dst, opts.Unmarshal(src.GetValue(), dst)\n}\n\n// MessageIs reports whether the underlying message is of the same type as m.\nfunc (x *Any) MessageIs(m proto.Message) bool {\n\tif m == nil {\n\t\treturn false\n\t}\n\turl := x.GetTypeUrl()\n\tname := string(m.ProtoReflect().Descriptor().FullName())\n\tif !strings.HasSuffix(url, name) {\n\t\treturn false\n\t}\n\treturn len(url) == len(name) || url[len(url)-len(name)-1] == '/'\n}\n\n// MessageName reports the full name of the underlying message,\n// returning an empty string if invalid.\nfunc (x *Any) MessageName() protoreflect.FullName {\n\turl := x.GetTypeUrl()\n\tname := protoreflect.FullName(url)\n\tif i := strings.LastIndexByte(url, '/'); i >= 0 {\n\t\tname = name[i+len(\"/\"):]\n\t}\n\tif !name.IsValid() {\n\t\treturn \"\"\n\t}\n\treturn name\n}\n\n// MarshalFrom marshals m into x as the underlying message.\nfunc (x *Any) MarshalFrom(m proto.Message) error {\n\treturn MarshalFrom(x, m, proto.MarshalOptions{})\n}\n\n// UnmarshalTo unmarshals the contents of the underlying message of x into m.\n// It resets m before performing the unmarshal operation.\n// It reports an error if m is not of the right message type.\nfunc (x *Any) UnmarshalTo(m proto.Message) error {\n\treturn UnmarshalTo(x, m, proto.UnmarshalOptions{})\n}\n\n// UnmarshalNew unmarshals the contents of the underlying message of x into\n// a newly allocated message of the specified type.\n// It reports an error if the underlying message type could not be resolved.\nfunc (x *Any) UnmarshalNew() (proto.Message, error) {\n\treturn UnmarshalNew(x, proto.UnmarshalOptions{})\n}\n\nfunc (x *Any) Reset() {\n\t*x = Any{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_any_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Any) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Any) ProtoMessage() {}\n\nfunc (x *Any) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_any_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Any.ProtoReflect.Descriptor instead.\nfunc (*Any) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_any_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Any) GetTypeUrl() string {\n\tif x != nil {\n\t\treturn x.TypeUrl\n\t}\n\treturn \"\"\n}\n\nfunc (x *Any) GetValue() []byte {\n\tif x != nil {\n\t\treturn x.Value\n\t}\n\treturn nil\n}\n\nvar File_google_protobuf_any_proto protoreflect.FileDescriptor\n\nvar file_google_protobuf_any_proto_rawDesc = []byte{\n\t0x0a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,\n\t0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x36, 0x0a, 0x03,\n\t0x41, 0x6e, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x14,\n\t0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x42, 0x76, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x08, 0x41, 0x6e, 0x79,\n\t0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f,\n\t0x61, 0x6e, 0x79, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1e, 0x47, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x65,\n\t0x6c, 0x6c, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_protobuf_any_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_any_proto_rawDescData = file_google_protobuf_any_proto_rawDesc\n)\n\nfunc file_google_protobuf_any_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_any_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_any_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_any_proto_rawDescData)\n\t})\n\treturn file_google_protobuf_any_proto_rawDescData\n}\n\nvar file_google_protobuf_any_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_protobuf_any_proto_goTypes = []interface{}{\n\t(*Any)(nil), // 0: google.protobuf.Any\n}\nvar file_google_protobuf_any_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_any_proto_init() }\nfunc file_google_protobuf_any_proto_init() {\n\tif File_google_protobuf_any_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_protobuf_any_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Any); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_protobuf_any_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_any_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_any_proto_depIdxs,\n\t\tMessageInfos:      file_google_protobuf_any_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_any_proto = out.File\n\tfile_google_protobuf_any_proto_rawDesc = nil\n\tfile_google_protobuf_any_proto_goTypes = nil\n\tfile_google_protobuf_any_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/duration.proto\n\n// Package durationpb contains generated types for google/protobuf/duration.proto.\n//\n// The Duration message represents a signed span of time.\n//\n// # Conversion to a Go Duration\n//\n// The AsDuration method can be used to convert a Duration message to a\n// standard Go time.Duration value:\n//\n//\td := dur.AsDuration()\n//\t... // make use of d as a time.Duration\n//\n// Converting to a time.Duration is a common operation so that the extensive\n// set of time-based operations provided by the time package can be leveraged.\n// See https://golang.org/pkg/time for more information.\n//\n// The AsDuration method performs the conversion on a best-effort basis.\n// Durations with denormal values (e.g., nanoseconds beyond -99999999 and\n// +99999999, inclusive; or seconds and nanoseconds with opposite signs)\n// are normalized during the conversion to a time.Duration. To manually check for\n// invalid Duration per the documented limitations in duration.proto,\n// additionally call the CheckValid method:\n//\n//\tif err := dur.CheckValid(); err != nil {\n//\t\t... // handle error\n//\t}\n//\n// Note that the documented limitations in duration.proto does not protect a\n// Duration from overflowing the representable range of a time.Duration in Go.\n// The AsDuration method uses saturation arithmetic such that an overflow clamps\n// the resulting value to the closest representable value (e.g., math.MaxInt64\n// for positive overflow and math.MinInt64 for negative overflow).\n//\n// # Conversion from a Go Duration\n//\n// The durationpb.New function can be used to construct a Duration message\n// from a standard Go time.Duration value:\n//\n//\tdur := durationpb.New(d)\n//\t... // make use of d as a *durationpb.Duration\npackage durationpb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tmath \"math\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\ttime \"time\"\n)\n\n// A Duration represents a signed, fixed-length span of time represented\n// as a count of seconds and fractions of seconds at nanosecond\n// resolution. It is independent of any calendar and concepts like \"day\"\n// or \"month\". It is related to Timestamp in that the difference between\n// two Timestamp values is a Duration and it can be added or subtracted\n// from a Timestamp. Range is approximately +-10,000 years.\n//\n// # Examples\n//\n// Example 1: Compute Duration from two Timestamps in pseudo code.\n//\n//\tTimestamp start = ...;\n//\tTimestamp end = ...;\n//\tDuration duration = ...;\n//\n//\tduration.seconds = end.seconds - start.seconds;\n//\tduration.nanos = end.nanos - start.nanos;\n//\n//\tif (duration.seconds < 0 && duration.nanos > 0) {\n//\t  duration.seconds += 1;\n//\t  duration.nanos -= 1000000000;\n//\t} else if (duration.seconds > 0 && duration.nanos < 0) {\n//\t  duration.seconds -= 1;\n//\t  duration.nanos += 1000000000;\n//\t}\n//\n// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.\n//\n//\tTimestamp start = ...;\n//\tDuration duration = ...;\n//\tTimestamp end = ...;\n//\n//\tend.seconds = start.seconds + duration.seconds;\n//\tend.nanos = start.nanos + duration.nanos;\n//\n//\tif (end.nanos < 0) {\n//\t  end.seconds -= 1;\n//\t  end.nanos += 1000000000;\n//\t} else if (end.nanos >= 1000000000) {\n//\t  end.seconds += 1;\n//\t  end.nanos -= 1000000000;\n//\t}\n//\n// Example 3: Compute Duration from datetime.timedelta in Python.\n//\n//\ttd = datetime.timedelta(days=3, minutes=10)\n//\tduration = Duration()\n//\tduration.FromTimedelta(td)\n//\n// # JSON Mapping\n//\n// In JSON format, the Duration type is encoded as a string rather than an\n// object, where the string ends in the suffix \"s\" (indicating seconds) and\n// is preceded by the number of seconds, with nanoseconds expressed as\n// fractional seconds. For example, 3 seconds with 0 nanoseconds should be\n// encoded in JSON format as \"3s\", while 3 seconds and 1 nanosecond should\n// be expressed in JSON format as \"3.000000001s\", and 3 seconds and 1\n// microsecond should be expressed in JSON format as \"3.000001s\".\ntype Duration struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Signed seconds of the span of time. Must be from -315,576,000,000\n\t// to +315,576,000,000 inclusive. Note: these bounds are computed from:\n\t// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n\tSeconds int64 `protobuf:\"varint,1,opt,name=seconds,proto3\" json:\"seconds,omitempty\"`\n\t// Signed fractions of a second at nanosecond resolution of the span\n\t// of time. Durations less than one second are represented with a 0\n\t// `seconds` field and a positive or negative `nanos` field. For durations\n\t// of one second or more, a non-zero value for the `nanos` field must be\n\t// of the same sign as the `seconds` field. Must be from -999,999,999\n\t// to +999,999,999 inclusive.\n\tNanos int32 `protobuf:\"varint,2,opt,name=nanos,proto3\" json:\"nanos,omitempty\"`\n}\n\n// New constructs a new Duration from the provided time.Duration.\nfunc New(d time.Duration) *Duration {\n\tnanos := d.Nanoseconds()\n\tsecs := nanos / 1e9\n\tnanos -= secs * 1e9\n\treturn &Duration{Seconds: int64(secs), Nanos: int32(nanos)}\n}\n\n// AsDuration converts x to a time.Duration,\n// returning the closest duration value in the event of overflow.\nfunc (x *Duration) AsDuration() time.Duration {\n\tsecs := x.GetSeconds()\n\tnanos := x.GetNanos()\n\td := time.Duration(secs) * time.Second\n\toverflow := d/time.Second != time.Duration(secs)\n\td += time.Duration(nanos) * time.Nanosecond\n\toverflow = overflow || (secs < 0 && nanos < 0 && d > 0)\n\toverflow = overflow || (secs > 0 && nanos > 0 && d < 0)\n\tif overflow {\n\t\tswitch {\n\t\tcase secs < 0:\n\t\t\treturn time.Duration(math.MinInt64)\n\t\tcase secs > 0:\n\t\t\treturn time.Duration(math.MaxInt64)\n\t\t}\n\t}\n\treturn d\n}\n\n// IsValid reports whether the duration is valid.\n// It is equivalent to CheckValid == nil.\nfunc (x *Duration) IsValid() bool {\n\treturn x.check() == 0\n}\n\n// CheckValid returns an error if the duration is invalid.\n// In particular, it checks whether the value is within the range of\n// -10000 years to +10000 years inclusive.\n// An error is reported for a nil Duration.\nfunc (x *Duration) CheckValid() error {\n\tswitch x.check() {\n\tcase invalidNil:\n\t\treturn protoimpl.X.NewError(\"invalid nil Duration\")\n\tcase invalidUnderflow:\n\t\treturn protoimpl.X.NewError(\"duration (%v) exceeds -10000 years\", x)\n\tcase invalidOverflow:\n\t\treturn protoimpl.X.NewError(\"duration (%v) exceeds +10000 years\", x)\n\tcase invalidNanosRange:\n\t\treturn protoimpl.X.NewError(\"duration (%v) has out-of-range nanos\", x)\n\tcase invalidNanosSign:\n\t\treturn protoimpl.X.NewError(\"duration (%v) has seconds and nanos with different signs\", x)\n\tdefault:\n\t\treturn nil\n\t}\n}\n\nconst (\n\t_ = iota\n\tinvalidNil\n\tinvalidUnderflow\n\tinvalidOverflow\n\tinvalidNanosRange\n\tinvalidNanosSign\n)\n\nfunc (x *Duration) check() uint {\n\tconst absDuration = 315576000000 // 10000yr * 365.25day/yr * 24hr/day * 60min/hr * 60sec/min\n\tsecs := x.GetSeconds()\n\tnanos := x.GetNanos()\n\tswitch {\n\tcase x == nil:\n\t\treturn invalidNil\n\tcase secs < -absDuration:\n\t\treturn invalidUnderflow\n\tcase secs > +absDuration:\n\t\treturn invalidOverflow\n\tcase nanos <= -1e9 || nanos >= +1e9:\n\t\treturn invalidNanosRange\n\tcase (secs > 0 && nanos < 0) || (secs < 0 && nanos > 0):\n\t\treturn invalidNanosSign\n\tdefault:\n\t\treturn 0\n\t}\n}\n\nfunc (x *Duration) Reset() {\n\t*x = Duration{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_duration_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Duration) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Duration) ProtoMessage() {}\n\nfunc (x *Duration) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_duration_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Duration.ProtoReflect.Descriptor instead.\nfunc (*Duration) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_duration_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Duration) GetSeconds() int64 {\n\tif x != nil {\n\t\treturn x.Seconds\n\t}\n\treturn 0\n}\n\nfunc (x *Duration) GetNanos() int32 {\n\tif x != nil {\n\t\treturn x.Nanos\n\t}\n\treturn 0\n}\n\nvar File_google_protobuf_duration_proto protoreflect.FileDescriptor\n\nvar file_google_protobuf_duration_proto_rawDesc = []byte{\n\t0x0a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,\n\t0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,\n\t0x66, 0x22, 0x3a, 0x0a, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a,\n\t0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,\n\t0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x42, 0x83, 0x01,\n\t0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x0d, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,\n\t0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,\n\t0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x64,\n\t0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x47,\n\t0x50, 0x42, 0xaa, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74,\n\t0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x65, 0x6c, 0x6c, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79,\n\t0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_protobuf_duration_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_duration_proto_rawDescData = file_google_protobuf_duration_proto_rawDesc\n)\n\nfunc file_google_protobuf_duration_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_duration_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_duration_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_duration_proto_rawDescData)\n\t})\n\treturn file_google_protobuf_duration_proto_rawDescData\n}\n\nvar file_google_protobuf_duration_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_protobuf_duration_proto_goTypes = []interface{}{\n\t(*Duration)(nil), // 0: google.protobuf.Duration\n}\nvar file_google_protobuf_duration_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_duration_proto_init() }\nfunc file_google_protobuf_duration_proto_init() {\n\tif File_google_protobuf_duration_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_protobuf_duration_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Duration); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_protobuf_duration_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_duration_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_duration_proto_depIdxs,\n\t\tMessageInfos:      file_google_protobuf_duration_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_duration_proto = out.File\n\tfile_google_protobuf_duration_proto_rawDesc = nil\n\tfile_google_protobuf_duration_proto_goTypes = nil\n\tfile_google_protobuf_duration_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go",
    "content": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// source: google/protobuf/timestamp.proto\n\n// Package timestamppb contains generated types for google/protobuf/timestamp.proto.\n//\n// The Timestamp message represents a timestamp,\n// an instant in time since the Unix epoch (January 1st, 1970).\n//\n// # Conversion to a Go Time\n//\n// The AsTime method can be used to convert a Timestamp message to a\n// standard Go time.Time value in UTC:\n//\n//\tt := ts.AsTime()\n//\t... // make use of t as a time.Time\n//\n// Converting to a time.Time is a common operation so that the extensive\n// set of time-based operations provided by the time package can be leveraged.\n// See https://golang.org/pkg/time for more information.\n//\n// The AsTime method performs the conversion on a best-effort basis. Timestamps\n// with denormal values (e.g., nanoseconds beyond 0 and 99999999, inclusive)\n// are normalized during the conversion to a time.Time. To manually check for\n// invalid Timestamps per the documented limitations in timestamp.proto,\n// additionally call the CheckValid method:\n//\n//\tif err := ts.CheckValid(); err != nil {\n//\t\t... // handle error\n//\t}\n//\n// # Conversion from a Go Time\n//\n// The timestamppb.New function can be used to construct a Timestamp message\n// from a standard Go time.Time value:\n//\n//\tts := timestamppb.New(t)\n//\t... // make use of ts as a *timestamppb.Timestamp\n//\n// In order to construct a Timestamp representing the current time, use Now:\n//\n//\tts := timestamppb.Now()\n//\t... // make use of ts as a *timestamppb.Timestamp\npackage timestamppb\n\nimport (\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\ttime \"time\"\n)\n\n// A Timestamp represents a point in time independent of any time zone or local\n// calendar, encoded as a count of seconds and fractions of seconds at\n// nanosecond resolution. The count is relative to an epoch at UTC midnight on\n// January 1, 1970, in the proleptic Gregorian calendar which extends the\n// Gregorian calendar backwards to year one.\n//\n// All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n// second table is needed for interpretation, using a [24-hour linear\n// smear](https://developers.google.com/time/smear).\n//\n// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n// restricting to that range, we ensure that we can convert to and from [RFC\n// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n//\n// # Examples\n//\n// Example 1: Compute Timestamp from POSIX `time()`.\n//\n//\tTimestamp timestamp;\n//\ttimestamp.set_seconds(time(NULL));\n//\ttimestamp.set_nanos(0);\n//\n// Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n//\n//\tstruct timeval tv;\n//\tgettimeofday(&tv, NULL);\n//\n//\tTimestamp timestamp;\n//\ttimestamp.set_seconds(tv.tv_sec);\n//\ttimestamp.set_nanos(tv.tv_usec * 1000);\n//\n// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n//\n//\tFILETIME ft;\n//\tGetSystemTimeAsFileTime(&ft);\n//\tUINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n//\n//\t// A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n//\t// is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n//\tTimestamp timestamp;\n//\ttimestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n//\ttimestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n//\n// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n//\n//\tlong millis = System.currentTimeMillis();\n//\n//\tTimestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n//\t    .setNanos((int) ((millis % 1000) * 1000000)).build();\n//\n// Example 5: Compute Timestamp from Java `Instant.now()`.\n//\n//\tInstant now = Instant.now();\n//\n//\tTimestamp timestamp =\n//\t    Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n//\t        .setNanos(now.getNano()).build();\n//\n// Example 6: Compute Timestamp from current time in Python.\n//\n//\ttimestamp = Timestamp()\n//\ttimestamp.GetCurrentTime()\n//\n// # JSON Mapping\n//\n// In JSON format, the Timestamp type is encoded as a string in the\n// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n// format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n// where {year} is always expressed using four digits while {month}, {day},\n// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n// are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n// is required. A proto3 JSON serializer should always use UTC (as indicated by\n// \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n// able to accept both UTC and other timezones (as indicated by an offset).\n//\n// For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n// 01:30 UTC on January 15, 2017.\n//\n// In JavaScript, one can convert a Date object to this format using the\n// standard\n// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n// method. In Python, a standard `datetime.datetime` object can be converted\n// to this format using\n// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n// the Joda Time's [`ISODateTimeFormat.dateTime()`](\n// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n// ) to obtain a formatter capable of generating timestamps in this format.\ntype Timestamp struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Represents seconds of UTC time since Unix epoch\n\t// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n\t// 9999-12-31T23:59:59Z inclusive.\n\tSeconds int64 `protobuf:\"varint,1,opt,name=seconds,proto3\" json:\"seconds,omitempty\"`\n\t// Non-negative fractions of a second at nanosecond resolution. Negative\n\t// second values with fractions must still have non-negative nanos values\n\t// that count forward in time. Must be from 0 to 999,999,999\n\t// inclusive.\n\tNanos int32 `protobuf:\"varint,2,opt,name=nanos,proto3\" json:\"nanos,omitempty\"`\n}\n\n// Now constructs a new Timestamp from the current time.\nfunc Now() *Timestamp {\n\treturn New(time.Now())\n}\n\n// New constructs a new Timestamp from the provided time.Time.\nfunc New(t time.Time) *Timestamp {\n\treturn &Timestamp{Seconds: int64(t.Unix()), Nanos: int32(t.Nanosecond())}\n}\n\n// AsTime converts x to a time.Time.\nfunc (x *Timestamp) AsTime() time.Time {\n\treturn time.Unix(int64(x.GetSeconds()), int64(x.GetNanos())).UTC()\n}\n\n// IsValid reports whether the timestamp is valid.\n// It is equivalent to CheckValid == nil.\nfunc (x *Timestamp) IsValid() bool {\n\treturn x.check() == 0\n}\n\n// CheckValid returns an error if the timestamp is invalid.\n// In particular, it checks whether the value represents a date that is\n// in the range of 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\n// An error is reported for a nil Timestamp.\nfunc (x *Timestamp) CheckValid() error {\n\tswitch x.check() {\n\tcase invalidNil:\n\t\treturn protoimpl.X.NewError(\"invalid nil Timestamp\")\n\tcase invalidUnderflow:\n\t\treturn protoimpl.X.NewError(\"timestamp (%v) before 0001-01-01\", x)\n\tcase invalidOverflow:\n\t\treturn protoimpl.X.NewError(\"timestamp (%v) after 9999-12-31\", x)\n\tcase invalidNanos:\n\t\treturn protoimpl.X.NewError(\"timestamp (%v) has out-of-range nanos\", x)\n\tdefault:\n\t\treturn nil\n\t}\n}\n\nconst (\n\t_ = iota\n\tinvalidNil\n\tinvalidUnderflow\n\tinvalidOverflow\n\tinvalidNanos\n)\n\nfunc (x *Timestamp) check() uint {\n\tconst minTimestamp = -62135596800  // Seconds between 1970-01-01T00:00:00Z and 0001-01-01T00:00:00Z, inclusive\n\tconst maxTimestamp = +253402300799 // Seconds between 1970-01-01T00:00:00Z and 9999-12-31T23:59:59Z, inclusive\n\tsecs := x.GetSeconds()\n\tnanos := x.GetNanos()\n\tswitch {\n\tcase x == nil:\n\t\treturn invalidNil\n\tcase secs < minTimestamp:\n\t\treturn invalidUnderflow\n\tcase secs > maxTimestamp:\n\t\treturn invalidOverflow\n\tcase nanos < 0 || nanos >= 1e9:\n\t\treturn invalidNanos\n\tdefault:\n\t\treturn 0\n\t}\n}\n\nfunc (x *Timestamp) Reset() {\n\t*x = Timestamp{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_google_protobuf_timestamp_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Timestamp) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Timestamp) ProtoMessage() {}\n\nfunc (x *Timestamp) ProtoReflect() protoreflect.Message {\n\tmi := &file_google_protobuf_timestamp_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\n// Deprecated: Use Timestamp.ProtoReflect.Descriptor instead.\nfunc (*Timestamp) Descriptor() ([]byte, []int) {\n\treturn file_google_protobuf_timestamp_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Timestamp) GetSeconds() int64 {\n\tif x != nil {\n\t\treturn x.Seconds\n\t}\n\treturn 0\n}\n\nfunc (x *Timestamp) GetNanos() int32 {\n\tif x != nil {\n\t\treturn x.Nanos\n\t}\n\treturn 0\n}\n\nvar File_google_protobuf_timestamp_proto protoreflect.FileDescriptor\n\nvar file_google_protobuf_timestamp_proto_rawDesc = []byte{\n\t0x0a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,\n\t0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x22, 0x3b, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,\n\t0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,\n\t0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6e,\n\t0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x42,\n\t0x85, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x0e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,\n\t0x6d, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x6b, 0x6e, 0x6f, 0x77,\n\t0x6e, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x70, 0x62, 0xf8, 0x01, 0x01,\n\t0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x65, 0x6c, 0x6c, 0x4b, 0x6e, 0x6f,\n\t0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_google_protobuf_timestamp_proto_rawDescOnce sync.Once\n\tfile_google_protobuf_timestamp_proto_rawDescData = file_google_protobuf_timestamp_proto_rawDesc\n)\n\nfunc file_google_protobuf_timestamp_proto_rawDescGZIP() []byte {\n\tfile_google_protobuf_timestamp_proto_rawDescOnce.Do(func() {\n\t\tfile_google_protobuf_timestamp_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_timestamp_proto_rawDescData)\n\t})\n\treturn file_google_protobuf_timestamp_proto_rawDescData\n}\n\nvar file_google_protobuf_timestamp_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_google_protobuf_timestamp_proto_goTypes = []interface{}{\n\t(*Timestamp)(nil), // 0: google.protobuf.Timestamp\n}\nvar file_google_protobuf_timestamp_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_google_protobuf_timestamp_proto_init() }\nfunc file_google_protobuf_timestamp_proto_init() {\n\tif File_google_protobuf_timestamp_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_google_protobuf_timestamp_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Timestamp); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_google_protobuf_timestamp_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_google_protobuf_timestamp_proto_goTypes,\n\t\tDependencyIndexes: file_google_protobuf_timestamp_proto_depIdxs,\n\t\tMessageInfos:      file_google_protobuf_timestamp_proto_msgTypes,\n\t}.Build()\n\tFile_google_protobuf_timestamp_proto = out.File\n\tfile_google_protobuf_timestamp_proto_rawDesc = nil\n\tfile_google_protobuf_timestamp_proto_goTypes = nil\n\tfile_google_protobuf_timestamp_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/.travis.yml",
    "content": "language: go\n\ngo:\n    - \"1.4.x\"\n    - \"1.5.x\"\n    - \"1.6.x\"\n    - \"1.7.x\"\n    - \"1.8.x\"\n    - \"1.9.x\"\n    - \"1.10.x\"\n    - \"1.11.x\"\n    - \"1.12.x\"\n    - \"1.13.x\"\n    - \"1.14.x\"\n    - \"tip\"\n\ngo_import_path: gopkg.in/yaml.v2\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/LICENSE.libyaml",
    "content": "The following files were ported to Go from C files of libyaml, and thus\nare still covered by their original copyright and license:\n\n    apic.go\n    emitterc.go\n    parserc.go\n    readerc.go\n    scannerc.go\n    writerc.go\n    yamlh.go\n    yamlprivateh.go\n\nCopyright (c) 2006 Kirill Simonov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/NOTICE",
    "content": "Copyright 2011-2016 Canonical Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/README.md",
    "content": "# YAML support for the Go language\n\nIntroduction\n------------\n\nThe yaml package enables Go programs to comfortably encode and decode YAML\nvalues. It was developed within [Canonical](https://www.canonical.com) as\npart of the [juju](https://juju.ubuntu.com) project, and is based on a\npure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML)\nC library to parse and generate YAML data quickly and reliably.\n\nCompatibility\n-------------\n\nThe yaml package supports most of YAML 1.1 and 1.2, including support for\nanchors, tags, map merging, etc. Multi-document unmarshalling is not yet\nimplemented, and base-60 floats from YAML 1.1 are purposefully not\nsupported since they're a poor design and are gone in YAML 1.2.\n\nInstallation and usage\n----------------------\n\nThe import path for the package is *gopkg.in/yaml.v2*.\n\nTo install it, run:\n\n    go get gopkg.in/yaml.v2\n\nAPI documentation\n-----------------\n\nIf opened in a browser, the import path itself leads to the API documentation:\n\n  * [https://gopkg.in/yaml.v2](https://gopkg.in/yaml.v2)\n\nAPI stability\n-------------\n\nThe package API for yaml v2 will remain stable as described in [gopkg.in](https://gopkg.in).\n\n\nLicense\n-------\n\nThe yaml package is licensed under the Apache License 2.0. Please see the LICENSE file for details.\n\n\nExample\n-------\n\n```Go\npackage main\n\nimport (\n        \"fmt\"\n        \"log\"\n\n        \"gopkg.in/yaml.v2\"\n)\n\nvar data = `\na: Easy!\nb:\n  c: 2\n  d: [3, 4]\n`\n\n// Note: struct fields must be public in order for unmarshal to\n// correctly populate the data.\ntype T struct {\n        A string\n        B struct {\n                RenamedC int   `yaml:\"c\"`\n                D        []int `yaml:\",flow\"`\n        }\n}\n\nfunc main() {\n        t := T{}\n    \n        err := yaml.Unmarshal([]byte(data), &t)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- t:\\n%v\\n\\n\", t)\n    \n        d, err := yaml.Marshal(&t)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- t dump:\\n%s\\n\\n\", string(d))\n    \n        m := make(map[interface{}]interface{})\n    \n        err = yaml.Unmarshal([]byte(data), &m)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- m:\\n%v\\n\\n\", m)\n    \n        d, err = yaml.Marshal(&m)\n        if err != nil {\n                log.Fatalf(\"error: %v\", err)\n        }\n        fmt.Printf(\"--- m dump:\\n%s\\n\\n\", string(d))\n}\n```\n\nThis example will generate the following output:\n\n```\n--- t:\n{Easy! {2 [3 4]}}\n\n--- t dump:\na: Easy!\nb:\n  c: 2\n  d: [3, 4]\n\n\n--- m:\nmap[a:Easy! b:map[c:2 d:[3 4]]]\n\n--- m dump:\na: Easy!\nb:\n  c: 2\n  d:\n  - 3\n  - 4\n```\n\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/apic.go",
    "content": "package yaml\n\nimport (\n\t\"io\"\n)\n\nfunc yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) {\n\t//fmt.Println(\"yaml_insert_token\", \"pos:\", pos, \"typ:\", token.typ, \"head:\", parser.tokens_head, \"len:\", len(parser.tokens))\n\n\t// Check if we can move the queue at the beginning of the buffer.\n\tif parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) {\n\t\tif parser.tokens_head != len(parser.tokens) {\n\t\t\tcopy(parser.tokens, parser.tokens[parser.tokens_head:])\n\t\t}\n\t\tparser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head]\n\t\tparser.tokens_head = 0\n\t}\n\tparser.tokens = append(parser.tokens, *token)\n\tif pos < 0 {\n\t\treturn\n\t}\n\tcopy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:])\n\tparser.tokens[parser.tokens_head+pos] = *token\n}\n\n// Create a new parser object.\nfunc yaml_parser_initialize(parser *yaml_parser_t) bool {\n\t*parser = yaml_parser_t{\n\t\traw_buffer: make([]byte, 0, input_raw_buffer_size),\n\t\tbuffer:     make([]byte, 0, input_buffer_size),\n\t}\n\treturn true\n}\n\n// Destroy a parser object.\nfunc yaml_parser_delete(parser *yaml_parser_t) {\n\t*parser = yaml_parser_t{}\n}\n\n// String read handler.\nfunc yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {\n\tif parser.input_pos == len(parser.input) {\n\t\treturn 0, io.EOF\n\t}\n\tn = copy(buffer, parser.input[parser.input_pos:])\n\tparser.input_pos += n\n\treturn n, nil\n}\n\n// Reader read handler.\nfunc yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {\n\treturn parser.input_reader.Read(buffer)\n}\n\n// Set a string input.\nfunc yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"must set the input source only once\")\n\t}\n\tparser.read_handler = yaml_string_read_handler\n\tparser.input = input\n\tparser.input_pos = 0\n}\n\n// Set a file input.\nfunc yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"must set the input source only once\")\n\t}\n\tparser.read_handler = yaml_reader_read_handler\n\tparser.input_reader = r\n}\n\n// Set the source encoding.\nfunc yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) {\n\tif parser.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"must set the encoding only once\")\n\t}\n\tparser.encoding = encoding\n}\n\nvar disableLineWrapping = false\n\n// Create a new emitter object.\nfunc yaml_emitter_initialize(emitter *yaml_emitter_t) {\n\t*emitter = yaml_emitter_t{\n\t\tbuffer:     make([]byte, output_buffer_size),\n\t\traw_buffer: make([]byte, 0, output_raw_buffer_size),\n\t\tstates:     make([]yaml_emitter_state_t, 0, initial_stack_size),\n\t\tevents:     make([]yaml_event_t, 0, initial_queue_size),\n\t}\n\tif disableLineWrapping {\n\t\temitter.best_width = -1\n\t}\n}\n\n// Destroy an emitter object.\nfunc yaml_emitter_delete(emitter *yaml_emitter_t) {\n\t*emitter = yaml_emitter_t{}\n}\n\n// String write handler.\nfunc yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error {\n\t*emitter.output_buffer = append(*emitter.output_buffer, buffer...)\n\treturn nil\n}\n\n// yaml_writer_write_handler uses emitter.output_writer to write the\n// emitted text.\nfunc yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error {\n\t_, err := emitter.output_writer.Write(buffer)\n\treturn err\n}\n\n// Set a string output.\nfunc yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"must set the output target only once\")\n\t}\n\temitter.write_handler = yaml_string_write_handler\n\temitter.output_buffer = output_buffer\n}\n\n// Set a file output.\nfunc yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"must set the output target only once\")\n\t}\n\temitter.write_handler = yaml_writer_write_handler\n\temitter.output_writer = w\n}\n\n// Set the output encoding.\nfunc yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) {\n\tif emitter.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"must set the output encoding only once\")\n\t}\n\temitter.encoding = encoding\n}\n\n// Set the canonical output style.\nfunc yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) {\n\temitter.canonical = canonical\n}\n\n//// Set the indentation increment.\nfunc yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) {\n\tif indent < 2 || indent > 9 {\n\t\tindent = 2\n\t}\n\temitter.best_indent = indent\n}\n\n// Set the preferred line width.\nfunc yaml_emitter_set_width(emitter *yaml_emitter_t, width int) {\n\tif width < 0 {\n\t\twidth = -1\n\t}\n\temitter.best_width = width\n}\n\n// Set if unescaped non-ASCII characters are allowed.\nfunc yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) {\n\temitter.unicode = unicode\n}\n\n// Set the preferred line break character.\nfunc yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) {\n\temitter.line_break = line_break\n}\n\n///*\n// * Destroy a token object.\n// */\n//\n//YAML_DECLARE(void)\n//yaml_token_delete(yaml_token_t *token)\n//{\n//    assert(token);  // Non-NULL token object expected.\n//\n//    switch (token.type)\n//    {\n//        case YAML_TAG_DIRECTIVE_TOKEN:\n//            yaml_free(token.data.tag_directive.handle);\n//            yaml_free(token.data.tag_directive.prefix);\n//            break;\n//\n//        case YAML_ALIAS_TOKEN:\n//            yaml_free(token.data.alias.value);\n//            break;\n//\n//        case YAML_ANCHOR_TOKEN:\n//            yaml_free(token.data.anchor.value);\n//            break;\n//\n//        case YAML_TAG_TOKEN:\n//            yaml_free(token.data.tag.handle);\n//            yaml_free(token.data.tag.suffix);\n//            break;\n//\n//        case YAML_SCALAR_TOKEN:\n//            yaml_free(token.data.scalar.value);\n//            break;\n//\n//        default:\n//            break;\n//    }\n//\n//    memset(token, 0, sizeof(yaml_token_t));\n//}\n//\n///*\n// * Check if a string is a valid UTF-8 sequence.\n// *\n// * Check 'reader.c' for more details on UTF-8 encoding.\n// */\n//\n//static int\n//yaml_check_utf8(yaml_char_t *start, size_t length)\n//{\n//    yaml_char_t *end = start+length;\n//    yaml_char_t *pointer = start;\n//\n//    while (pointer < end) {\n//        unsigned char octet;\n//        unsigned int width;\n//        unsigned int value;\n//        size_t k;\n//\n//        octet = pointer[0];\n//        width = (octet & 0x80) == 0x00 ? 1 :\n//                (octet & 0xE0) == 0xC0 ? 2 :\n//                (octet & 0xF0) == 0xE0 ? 3 :\n//                (octet & 0xF8) == 0xF0 ? 4 : 0;\n//        value = (octet & 0x80) == 0x00 ? octet & 0x7F :\n//                (octet & 0xE0) == 0xC0 ? octet & 0x1F :\n//                (octet & 0xF0) == 0xE0 ? octet & 0x0F :\n//                (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;\n//        if (!width) return 0;\n//        if (pointer+width > end) return 0;\n//        for (k = 1; k < width; k ++) {\n//            octet = pointer[k];\n//            if ((octet & 0xC0) != 0x80) return 0;\n//            value = (value << 6) + (octet & 0x3F);\n//        }\n//        if (!((width == 1) ||\n//            (width == 2 && value >= 0x80) ||\n//            (width == 3 && value >= 0x800) ||\n//            (width == 4 && value >= 0x10000))) return 0;\n//\n//        pointer += width;\n//    }\n//\n//    return 1;\n//}\n//\n\n// Create STREAM-START.\nfunc yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_STREAM_START_EVENT,\n\t\tencoding: encoding,\n\t}\n}\n\n// Create STREAM-END.\nfunc yaml_stream_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_STREAM_END_EVENT,\n\t}\n}\n\n// Create DOCUMENT-START.\nfunc yaml_document_start_event_initialize(\n\tevent *yaml_event_t,\n\tversion_directive *yaml_version_directive_t,\n\ttag_directives []yaml_tag_directive_t,\n\timplicit bool,\n) {\n\t*event = yaml_event_t{\n\t\ttyp:               yaml_DOCUMENT_START_EVENT,\n\t\tversion_directive: version_directive,\n\t\ttag_directives:    tag_directives,\n\t\timplicit:          implicit,\n\t}\n}\n\n// Create DOCUMENT-END.\nfunc yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_DOCUMENT_END_EVENT,\n\t\timplicit: implicit,\n\t}\n}\n\n///*\n// * Create ALIAS.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_alias_event_initialize(event *yaml_event_t, anchor *yaml_char_t)\n//{\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    anchor_copy *yaml_char_t = NULL\n//\n//    assert(event) // Non-NULL event object is expected.\n//    assert(anchor) // Non-NULL anchor is expected.\n//\n//    if (!yaml_check_utf8(anchor, strlen((char *)anchor))) return 0\n//\n//    anchor_copy = yaml_strdup(anchor)\n//    if (!anchor_copy)\n//        return 0\n//\n//    ALIAS_EVENT_INIT(*event, anchor_copy, mark, mark)\n//\n//    return 1\n//}\n\n// Create SCALAR.\nfunc yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:             yaml_SCALAR_EVENT,\n\t\tanchor:          anchor,\n\t\ttag:             tag,\n\t\tvalue:           value,\n\t\timplicit:        plain_implicit,\n\t\tquoted_implicit: quoted_implicit,\n\t\tstyle:           yaml_style_t(style),\n\t}\n\treturn true\n}\n\n// Create SEQUENCE-START.\nfunc yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_SEQUENCE_START_EVENT,\n\t\tanchor:   anchor,\n\t\ttag:      tag,\n\t\timplicit: implicit,\n\t\tstyle:    yaml_style_t(style),\n\t}\n\treturn true\n}\n\n// Create SEQUENCE-END.\nfunc yaml_sequence_end_event_initialize(event *yaml_event_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_SEQUENCE_END_EVENT,\n\t}\n\treturn true\n}\n\n// Create MAPPING-START.\nfunc yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_MAPPING_START_EVENT,\n\t\tanchor:   anchor,\n\t\ttag:      tag,\n\t\timplicit: implicit,\n\t\tstyle:    yaml_style_t(style),\n\t}\n}\n\n// Create MAPPING-END.\nfunc yaml_mapping_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_MAPPING_END_EVENT,\n\t}\n}\n\n// Destroy an event object.\nfunc yaml_event_delete(event *yaml_event_t) {\n\t*event = yaml_event_t{}\n}\n\n///*\n// * Create a document object.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_initialize(document *yaml_document_t,\n//        version_directive *yaml_version_directive_t,\n//        tag_directives_start *yaml_tag_directive_t,\n//        tag_directives_end *yaml_tag_directive_t,\n//        start_implicit int, end_implicit int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    struct {\n//        start *yaml_node_t\n//        end *yaml_node_t\n//        top *yaml_node_t\n//    } nodes = { NULL, NULL, NULL }\n//    version_directive_copy *yaml_version_directive_t = NULL\n//    struct {\n//        start *yaml_tag_directive_t\n//        end *yaml_tag_directive_t\n//        top *yaml_tag_directive_t\n//    } tag_directives_copy = { NULL, NULL, NULL }\n//    value yaml_tag_directive_t = { NULL, NULL }\n//    mark yaml_mark_t = { 0, 0, 0 }\n//\n//    assert(document) // Non-NULL document object is expected.\n//    assert((tag_directives_start && tag_directives_end) ||\n//            (tag_directives_start == tag_directives_end))\n//                            // Valid tag directives are expected.\n//\n//    if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error\n//\n//    if (version_directive) {\n//        version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t))\n//        if (!version_directive_copy) goto error\n//        version_directive_copy.major = version_directive.major\n//        version_directive_copy.minor = version_directive.minor\n//    }\n//\n//    if (tag_directives_start != tag_directives_end) {\n//        tag_directive *yaml_tag_directive_t\n//        if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE))\n//            goto error\n//        for (tag_directive = tag_directives_start\n//                tag_directive != tag_directives_end; tag_directive ++) {\n//            assert(tag_directive.handle)\n//            assert(tag_directive.prefix)\n//            if (!yaml_check_utf8(tag_directive.handle,\n//                        strlen((char *)tag_directive.handle)))\n//                goto error\n//            if (!yaml_check_utf8(tag_directive.prefix,\n//                        strlen((char *)tag_directive.prefix)))\n//                goto error\n//            value.handle = yaml_strdup(tag_directive.handle)\n//            value.prefix = yaml_strdup(tag_directive.prefix)\n//            if (!value.handle || !value.prefix) goto error\n//            if (!PUSH(&context, tag_directives_copy, value))\n//                goto error\n//            value.handle = NULL\n//            value.prefix = NULL\n//        }\n//    }\n//\n//    DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy,\n//            tag_directives_copy.start, tag_directives_copy.top,\n//            start_implicit, end_implicit, mark, mark)\n//\n//    return 1\n//\n//error:\n//    STACK_DEL(&context, nodes)\n//    yaml_free(version_directive_copy)\n//    while (!STACK_EMPTY(&context, tag_directives_copy)) {\n//        value yaml_tag_directive_t = POP(&context, tag_directives_copy)\n//        yaml_free(value.handle)\n//        yaml_free(value.prefix)\n//    }\n//    STACK_DEL(&context, tag_directives_copy)\n//    yaml_free(value.handle)\n//    yaml_free(value.prefix)\n//\n//    return 0\n//}\n//\n///*\n// * Destroy a document object.\n// */\n//\n//YAML_DECLARE(void)\n//yaml_document_delete(document *yaml_document_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    tag_directive *yaml_tag_directive_t\n//\n//    context.error = YAML_NO_ERROR // Eliminate a compiler warning.\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    while (!STACK_EMPTY(&context, document.nodes)) {\n//        node yaml_node_t = POP(&context, document.nodes)\n//        yaml_free(node.tag)\n//        switch (node.type) {\n//            case YAML_SCALAR_NODE:\n//                yaml_free(node.data.scalar.value)\n//                break\n//            case YAML_SEQUENCE_NODE:\n//                STACK_DEL(&context, node.data.sequence.items)\n//                break\n//            case YAML_MAPPING_NODE:\n//                STACK_DEL(&context, node.data.mapping.pairs)\n//                break\n//            default:\n//                assert(0) // Should not happen.\n//        }\n//    }\n//    STACK_DEL(&context, document.nodes)\n//\n//    yaml_free(document.version_directive)\n//    for (tag_directive = document.tag_directives.start\n//            tag_directive != document.tag_directives.end\n//            tag_directive++) {\n//        yaml_free(tag_directive.handle)\n//        yaml_free(tag_directive.prefix)\n//    }\n//    yaml_free(document.tag_directives.start)\n//\n//    memset(document, 0, sizeof(yaml_document_t))\n//}\n//\n///**\n// * Get a document node.\n// */\n//\n//YAML_DECLARE(yaml_node_t *)\n//yaml_document_get_node(document *yaml_document_t, index int)\n//{\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (index > 0 && document.nodes.start + index <= document.nodes.top) {\n//        return document.nodes.start + index - 1\n//    }\n//    return NULL\n//}\n//\n///**\n// * Get the root object.\n// */\n//\n//YAML_DECLARE(yaml_node_t *)\n//yaml_document_get_root_node(document *yaml_document_t)\n//{\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (document.nodes.top != document.nodes.start) {\n//        return document.nodes.start\n//    }\n//    return NULL\n//}\n//\n///*\n// * Add a scalar node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_scalar(document *yaml_document_t,\n//        tag *yaml_char_t, value *yaml_char_t, length int,\n//        style yaml_scalar_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    value_copy *yaml_char_t = NULL\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//    assert(value) // Non-NULL value is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (length < 0) {\n//        length = strlen((char *)value)\n//    }\n//\n//    if (!yaml_check_utf8(value, length)) goto error\n//    value_copy = yaml_malloc(length+1)\n//    if (!value_copy) goto error\n//    memcpy(value_copy, value, length)\n//    value_copy[length] = '\\0'\n//\n//    SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    yaml_free(tag_copy)\n//    yaml_free(value_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Add a sequence node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_sequence(document *yaml_document_t,\n//        tag *yaml_char_t, style yaml_sequence_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    struct {\n//        start *yaml_node_item_t\n//        end *yaml_node_item_t\n//        top *yaml_node_item_t\n//    } items = { NULL, NULL, NULL }\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error\n//\n//    SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end,\n//            style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    STACK_DEL(&context, items)\n//    yaml_free(tag_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Add a mapping node to a document.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_add_mapping(document *yaml_document_t,\n//        tag *yaml_char_t, style yaml_mapping_style_t)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    tag_copy *yaml_char_t = NULL\n//    struct {\n//        start *yaml_node_pair_t\n//        end *yaml_node_pair_t\n//        top *yaml_node_pair_t\n//    } pairs = { NULL, NULL, NULL }\n//    node yaml_node_t\n//\n//    assert(document) // Non-NULL document object is expected.\n//\n//    if (!tag) {\n//        tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG\n//    }\n//\n//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error\n//    tag_copy = yaml_strdup(tag)\n//    if (!tag_copy) goto error\n//\n//    if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error\n//\n//    MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end,\n//            style, mark, mark)\n//    if (!PUSH(&context, document.nodes, node)) goto error\n//\n//    return document.nodes.top - document.nodes.start\n//\n//error:\n//    STACK_DEL(&context, pairs)\n//    yaml_free(tag_copy)\n//\n//    return 0\n//}\n//\n///*\n// * Append an item to a sequence node.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_append_sequence_item(document *yaml_document_t,\n//        sequence int, item int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//\n//    assert(document) // Non-NULL document is required.\n//    assert(sequence > 0\n//            && document.nodes.start + sequence <= document.nodes.top)\n//                            // Valid sequence id is required.\n//    assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE)\n//                            // A sequence node is required.\n//    assert(item > 0 && document.nodes.start + item <= document.nodes.top)\n//                            // Valid item id is required.\n//\n//    if (!PUSH(&context,\n//                document.nodes.start[sequence-1].data.sequence.items, item))\n//        return 0\n//\n//    return 1\n//}\n//\n///*\n// * Append a pair of a key and a value to a mapping node.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_document_append_mapping_pair(document *yaml_document_t,\n//        mapping int, key int, value int)\n//{\n//    struct {\n//        error yaml_error_type_t\n//    } context\n//\n//    pair yaml_node_pair_t\n//\n//    assert(document) // Non-NULL document is required.\n//    assert(mapping > 0\n//            && document.nodes.start + mapping <= document.nodes.top)\n//                            // Valid mapping id is required.\n//    assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE)\n//                            // A mapping node is required.\n//    assert(key > 0 && document.nodes.start + key <= document.nodes.top)\n//                            // Valid key id is required.\n//    assert(value > 0 && document.nodes.start + value <= document.nodes.top)\n//                            // Valid value id is required.\n//\n//    pair.key = key\n//    pair.value = value\n//\n//    if (!PUSH(&context,\n//                document.nodes.start[mapping-1].data.mapping.pairs, pair))\n//        return 0\n//\n//    return 1\n//}\n//\n//\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/decode.go",
    "content": "package yaml\n\nimport (\n\t\"encoding\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"time\"\n)\n\nconst (\n\tdocumentNode = 1 << iota\n\tmappingNode\n\tsequenceNode\n\tscalarNode\n\taliasNode\n)\n\ntype node struct {\n\tkind         int\n\tline, column int\n\ttag          string\n\t// For an alias node, alias holds the resolved alias.\n\talias    *node\n\tvalue    string\n\timplicit bool\n\tchildren []*node\n\tanchors  map[string]*node\n}\n\n// ----------------------------------------------------------------------------\n// Parser, produces a node tree out of a libyaml event stream.\n\ntype parser struct {\n\tparser   yaml_parser_t\n\tevent    yaml_event_t\n\tdoc      *node\n\tdoneInit bool\n}\n\nfunc newParser(b []byte) *parser {\n\tp := parser{}\n\tif !yaml_parser_initialize(&p.parser) {\n\t\tpanic(\"failed to initialize YAML emitter\")\n\t}\n\tif len(b) == 0 {\n\t\tb = []byte{'\\n'}\n\t}\n\tyaml_parser_set_input_string(&p.parser, b)\n\treturn &p\n}\n\nfunc newParserFromReader(r io.Reader) *parser {\n\tp := parser{}\n\tif !yaml_parser_initialize(&p.parser) {\n\t\tpanic(\"failed to initialize YAML emitter\")\n\t}\n\tyaml_parser_set_input_reader(&p.parser, r)\n\treturn &p\n}\n\nfunc (p *parser) init() {\n\tif p.doneInit {\n\t\treturn\n\t}\n\tp.expect(yaml_STREAM_START_EVENT)\n\tp.doneInit = true\n}\n\nfunc (p *parser) destroy() {\n\tif p.event.typ != yaml_NO_EVENT {\n\t\tyaml_event_delete(&p.event)\n\t}\n\tyaml_parser_delete(&p.parser)\n}\n\n// expect consumes an event from the event stream and\n// checks that it's of the expected type.\nfunc (p *parser) expect(e yaml_event_type_t) {\n\tif p.event.typ == yaml_NO_EVENT {\n\t\tif !yaml_parser_parse(&p.parser, &p.event) {\n\t\t\tp.fail()\n\t\t}\n\t}\n\tif p.event.typ == yaml_STREAM_END_EVENT {\n\t\tfailf(\"attempted to go past the end of stream; corrupted value?\")\n\t}\n\tif p.event.typ != e {\n\t\tp.parser.problem = fmt.Sprintf(\"expected %s event but got %s\", e, p.event.typ)\n\t\tp.fail()\n\t}\n\tyaml_event_delete(&p.event)\n\tp.event.typ = yaml_NO_EVENT\n}\n\n// peek peeks at the next event in the event stream,\n// puts the results into p.event and returns the event type.\nfunc (p *parser) peek() yaml_event_type_t {\n\tif p.event.typ != yaml_NO_EVENT {\n\t\treturn p.event.typ\n\t}\n\tif !yaml_parser_parse(&p.parser, &p.event) {\n\t\tp.fail()\n\t}\n\treturn p.event.typ\n}\n\nfunc (p *parser) fail() {\n\tvar where string\n\tvar line int\n\tif p.parser.problem_mark.line != 0 {\n\t\tline = p.parser.problem_mark.line\n\t\t// Scanner errors don't iterate line before returning error\n\t\tif p.parser.error == yaml_SCANNER_ERROR {\n\t\t\tline++\n\t\t}\n\t} else if p.parser.context_mark.line != 0 {\n\t\tline = p.parser.context_mark.line\n\t}\n\tif line != 0 {\n\t\twhere = \"line \" + strconv.Itoa(line) + \": \"\n\t}\n\tvar msg string\n\tif len(p.parser.problem) > 0 {\n\t\tmsg = p.parser.problem\n\t} else {\n\t\tmsg = \"unknown problem parsing YAML content\"\n\t}\n\tfailf(\"%s%s\", where, msg)\n}\n\nfunc (p *parser) anchor(n *node, anchor []byte) {\n\tif anchor != nil {\n\t\tp.doc.anchors[string(anchor)] = n\n\t}\n}\n\nfunc (p *parser) parse() *node {\n\tp.init()\n\tswitch p.peek() {\n\tcase yaml_SCALAR_EVENT:\n\t\treturn p.scalar()\n\tcase yaml_ALIAS_EVENT:\n\t\treturn p.alias()\n\tcase yaml_MAPPING_START_EVENT:\n\t\treturn p.mapping()\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\treturn p.sequence()\n\tcase yaml_DOCUMENT_START_EVENT:\n\t\treturn p.document()\n\tcase yaml_STREAM_END_EVENT:\n\t\t// Happens when attempting to decode an empty buffer.\n\t\treturn nil\n\tdefault:\n\t\tpanic(\"attempted to parse unknown event: \" + p.event.typ.String())\n\t}\n}\n\nfunc (p *parser) node(kind int) *node {\n\treturn &node{\n\t\tkind:   kind,\n\t\tline:   p.event.start_mark.line,\n\t\tcolumn: p.event.start_mark.column,\n\t}\n}\n\nfunc (p *parser) document() *node {\n\tn := p.node(documentNode)\n\tn.anchors = make(map[string]*node)\n\tp.doc = n\n\tp.expect(yaml_DOCUMENT_START_EVENT)\n\tn.children = append(n.children, p.parse())\n\tp.expect(yaml_DOCUMENT_END_EVENT)\n\treturn n\n}\n\nfunc (p *parser) alias() *node {\n\tn := p.node(aliasNode)\n\tn.value = string(p.event.anchor)\n\tn.alias = p.doc.anchors[n.value]\n\tif n.alias == nil {\n\t\tfailf(\"unknown anchor '%s' referenced\", n.value)\n\t}\n\tp.expect(yaml_ALIAS_EVENT)\n\treturn n\n}\n\nfunc (p *parser) scalar() *node {\n\tn := p.node(scalarNode)\n\tn.value = string(p.event.value)\n\tn.tag = string(p.event.tag)\n\tn.implicit = p.event.implicit\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_SCALAR_EVENT)\n\treturn n\n}\n\nfunc (p *parser) sequence() *node {\n\tn := p.node(sequenceNode)\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_SEQUENCE_START_EVENT)\n\tfor p.peek() != yaml_SEQUENCE_END_EVENT {\n\t\tn.children = append(n.children, p.parse())\n\t}\n\tp.expect(yaml_SEQUENCE_END_EVENT)\n\treturn n\n}\n\nfunc (p *parser) mapping() *node {\n\tn := p.node(mappingNode)\n\tp.anchor(n, p.event.anchor)\n\tp.expect(yaml_MAPPING_START_EVENT)\n\tfor p.peek() != yaml_MAPPING_END_EVENT {\n\t\tn.children = append(n.children, p.parse(), p.parse())\n\t}\n\tp.expect(yaml_MAPPING_END_EVENT)\n\treturn n\n}\n\n// ----------------------------------------------------------------------------\n// Decoder, unmarshals a node into a provided value.\n\ntype decoder struct {\n\tdoc     *node\n\taliases map[*node]bool\n\tmapType reflect.Type\n\tterrors []string\n\tstrict  bool\n\n\tdecodeCount int\n\taliasCount  int\n\taliasDepth  int\n}\n\nvar (\n\tmapItemType    = reflect.TypeOf(MapItem{})\n\tdurationType   = reflect.TypeOf(time.Duration(0))\n\tdefaultMapType = reflect.TypeOf(map[interface{}]interface{}{})\n\tifaceType      = defaultMapType.Elem()\n\ttimeType       = reflect.TypeOf(time.Time{})\n\tptrTimeType    = reflect.TypeOf(&time.Time{})\n)\n\nfunc newDecoder(strict bool) *decoder {\n\td := &decoder{mapType: defaultMapType, strict: strict}\n\td.aliases = make(map[*node]bool)\n\treturn d\n}\n\nfunc (d *decoder) terror(n *node, tag string, out reflect.Value) {\n\tif n.tag != \"\" {\n\t\ttag = n.tag\n\t}\n\tvalue := n.value\n\tif tag != yaml_SEQ_TAG && tag != yaml_MAP_TAG {\n\t\tif len(value) > 10 {\n\t\t\tvalue = \" `\" + value[:7] + \"...`\"\n\t\t} else {\n\t\t\tvalue = \" `\" + value + \"`\"\n\t\t}\n\t}\n\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: cannot unmarshal %s%s into %s\", n.line+1, shortTag(tag), value, out.Type()))\n}\n\nfunc (d *decoder) callUnmarshaler(n *node, u Unmarshaler) (good bool) {\n\tterrlen := len(d.terrors)\n\terr := u.UnmarshalYAML(func(v interface{}) (err error) {\n\t\tdefer handleErr(&err)\n\t\td.unmarshal(n, reflect.ValueOf(v))\n\t\tif len(d.terrors) > terrlen {\n\t\t\tissues := d.terrors[terrlen:]\n\t\t\td.terrors = d.terrors[:terrlen]\n\t\t\treturn &TypeError{issues}\n\t\t}\n\t\treturn nil\n\t})\n\tif e, ok := err.(*TypeError); ok {\n\t\td.terrors = append(d.terrors, e.Errors...)\n\t\treturn false\n\t}\n\tif err != nil {\n\t\tfail(err)\n\t}\n\treturn true\n}\n\n// d.prepare initializes and dereferences pointers and calls UnmarshalYAML\n// if a value is found to implement it.\n// It returns the initialized and dereferenced out value, whether\n// unmarshalling was already done by UnmarshalYAML, and if so whether\n// its types unmarshalled appropriately.\n//\n// If n holds a null value, prepare returns before doing anything.\nfunc (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) {\n\tif n.tag == yaml_NULL_TAG || n.kind == scalarNode && n.tag == \"\" && (n.value == \"null\" || n.value == \"~\" || n.value == \"\" && n.implicit) {\n\t\treturn out, false, false\n\t}\n\tagain := true\n\tfor again {\n\t\tagain = false\n\t\tif out.Kind() == reflect.Ptr {\n\t\t\tif out.IsNil() {\n\t\t\t\tout.Set(reflect.New(out.Type().Elem()))\n\t\t\t}\n\t\t\tout = out.Elem()\n\t\t\tagain = true\n\t\t}\n\t\tif out.CanAddr() {\n\t\t\tif u, ok := out.Addr().Interface().(Unmarshaler); ok {\n\t\t\t\tgood = d.callUnmarshaler(n, u)\n\t\t\t\treturn out, true, good\n\t\t\t}\n\t\t}\n\t}\n\treturn out, false, false\n}\n\nconst (\n\t// 400,000 decode operations is ~500kb of dense object declarations, or\n\t// ~5kb of dense object declarations with 10000% alias expansion\n\talias_ratio_range_low = 400000\n\n\t// 4,000,000 decode operations is ~5MB of dense object declarations, or\n\t// ~4.5MB of dense object declarations with 10% alias expansion\n\talias_ratio_range_high = 4000000\n\n\t// alias_ratio_range is the range over which we scale allowed alias ratios\n\talias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low)\n)\n\nfunc allowedAliasRatio(decodeCount int) float64 {\n\tswitch {\n\tcase decodeCount <= alias_ratio_range_low:\n\t\t// allow 99% to come from alias expansion for small-to-medium documents\n\t\treturn 0.99\n\tcase decodeCount >= alias_ratio_range_high:\n\t\t// allow 10% to come from alias expansion for very large documents\n\t\treturn 0.10\n\tdefault:\n\t\t// scale smoothly from 99% down to 10% over the range.\n\t\t// this maps to 396,000 - 400,000 allowed alias-driven decodes over the range.\n\t\t// 400,000 decode operations is ~100MB of allocations in worst-case scenarios (single-item maps).\n\t\treturn 0.99 - 0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range)\n\t}\n}\n\nfunc (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) {\n\td.decodeCount++\n\tif d.aliasDepth > 0 {\n\t\td.aliasCount++\n\t}\n\tif d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) {\n\t\tfailf(\"document contains excessive aliasing\")\n\t}\n\tswitch n.kind {\n\tcase documentNode:\n\t\treturn d.document(n, out)\n\tcase aliasNode:\n\t\treturn d.alias(n, out)\n\t}\n\tout, unmarshaled, good := d.prepare(n, out)\n\tif unmarshaled {\n\t\treturn good\n\t}\n\tswitch n.kind {\n\tcase scalarNode:\n\t\tgood = d.scalar(n, out)\n\tcase mappingNode:\n\t\tgood = d.mapping(n, out)\n\tcase sequenceNode:\n\t\tgood = d.sequence(n, out)\n\tdefault:\n\t\tpanic(\"internal error: unknown node kind: \" + strconv.Itoa(n.kind))\n\t}\n\treturn good\n}\n\nfunc (d *decoder) document(n *node, out reflect.Value) (good bool) {\n\tif len(n.children) == 1 {\n\t\td.doc = n\n\t\td.unmarshal(n.children[0], out)\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (d *decoder) alias(n *node, out reflect.Value) (good bool) {\n\tif d.aliases[n] {\n\t\t// TODO this could actually be allowed in some circumstances.\n\t\tfailf(\"anchor '%s' value contains itself\", n.value)\n\t}\n\td.aliases[n] = true\n\td.aliasDepth++\n\tgood = d.unmarshal(n.alias, out)\n\td.aliasDepth--\n\tdelete(d.aliases, n)\n\treturn good\n}\n\nvar zeroValue reflect.Value\n\nfunc resetMap(out reflect.Value) {\n\tfor _, k := range out.MapKeys() {\n\t\tout.SetMapIndex(k, zeroValue)\n\t}\n}\n\nfunc (d *decoder) scalar(n *node, out reflect.Value) bool {\n\tvar tag string\n\tvar resolved interface{}\n\tif n.tag == \"\" && !n.implicit {\n\t\ttag = yaml_STR_TAG\n\t\tresolved = n.value\n\t} else {\n\t\ttag, resolved = resolve(n.tag, n.value)\n\t\tif tag == yaml_BINARY_TAG {\n\t\t\tdata, err := base64.StdEncoding.DecodeString(resolved.(string))\n\t\t\tif err != nil {\n\t\t\t\tfailf(\"!!binary value contains invalid base64 data\")\n\t\t\t}\n\t\t\tresolved = string(data)\n\t\t}\n\t}\n\tif resolved == nil {\n\t\tif out.Kind() == reflect.Map && !out.CanAddr() {\n\t\t\tresetMap(out)\n\t\t} else {\n\t\t\tout.Set(reflect.Zero(out.Type()))\n\t\t}\n\t\treturn true\n\t}\n\tif resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {\n\t\t// We've resolved to exactly the type we want, so use that.\n\t\tout.Set(resolvedv)\n\t\treturn true\n\t}\n\t// Perhaps we can use the value as a TextUnmarshaler to\n\t// set its value.\n\tif out.CanAddr() {\n\t\tu, ok := out.Addr().Interface().(encoding.TextUnmarshaler)\n\t\tif ok {\n\t\t\tvar text []byte\n\t\t\tif tag == yaml_BINARY_TAG {\n\t\t\t\ttext = []byte(resolved.(string))\n\t\t\t} else {\n\t\t\t\t// We let any value be unmarshaled into TextUnmarshaler.\n\t\t\t\t// That might be more lax than we'd like, but the\n\t\t\t\t// TextUnmarshaler itself should bowl out any dubious values.\n\t\t\t\ttext = []byte(n.value)\n\t\t\t}\n\t\t\terr := u.UnmarshalText(text)\n\t\t\tif err != nil {\n\t\t\t\tfail(err)\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t}\n\tswitch out.Kind() {\n\tcase reflect.String:\n\t\tif tag == yaml_BINARY_TAG {\n\t\t\tout.SetString(resolved.(string))\n\t\t\treturn true\n\t\t}\n\t\tif resolved != nil {\n\t\t\tout.SetString(n.value)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Interface:\n\t\tif resolved == nil {\n\t\t\tout.Set(reflect.Zero(out.Type()))\n\t\t} else if tag == yaml_TIMESTAMP_TAG {\n\t\t\t// It looks like a timestamp but for backward compatibility\n\t\t\t// reasons we set it as a string, so that code that unmarshals\n\t\t\t// timestamp-like values into interface{} will continue to\n\t\t\t// see a string and not a time.Time.\n\t\t\t// TODO(v3) Drop this.\n\t\t\tout.Set(reflect.ValueOf(n.value))\n\t\t} else {\n\t\t\tout.Set(reflect.ValueOf(resolved))\n\t\t}\n\t\treturn true\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tif !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif !out.OverflowInt(resolved) {\n\t\t\t\tout.SetInt(resolved)\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase uint64:\n\t\t\tif resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase string:\n\t\t\tif out.Type() == durationType {\n\t\t\t\td, err := time.ParseDuration(resolved)\n\t\t\t\tif err == nil {\n\t\t\t\t\tout.SetInt(int64(d))\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tif resolved >= 0 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif resolved >= 0 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase uint64:\n\t\t\tif !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\tcase reflect.Bool:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase bool:\n\t\t\tout.SetBool(resolved)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Float32, reflect.Float64:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase int64:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase uint64:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\treturn true\n\t\tcase float64:\n\t\t\tout.SetFloat(resolved)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Struct:\n\t\tif resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {\n\t\t\tout.Set(resolvedv)\n\t\t\treturn true\n\t\t}\n\tcase reflect.Ptr:\n\t\tif out.Type().Elem() == reflect.TypeOf(resolved) {\n\t\t\t// TODO DOes this make sense? When is out a Ptr except when decoding a nil value?\n\t\t\telem := reflect.New(out.Type().Elem())\n\t\t\telem.Elem().Set(reflect.ValueOf(resolved))\n\t\t\tout.Set(elem)\n\t\t\treturn true\n\t\t}\n\t}\n\td.terror(n, tag, out)\n\treturn false\n}\n\nfunc settableValueOf(i interface{}) reflect.Value {\n\tv := reflect.ValueOf(i)\n\tsv := reflect.New(v.Type()).Elem()\n\tsv.Set(v)\n\treturn sv\n}\n\nfunc (d *decoder) sequence(n *node, out reflect.Value) (good bool) {\n\tl := len(n.children)\n\n\tvar iface reflect.Value\n\tswitch out.Kind() {\n\tcase reflect.Slice:\n\t\tout.Set(reflect.MakeSlice(out.Type(), l, l))\n\tcase reflect.Array:\n\t\tif l != out.Len() {\n\t\t\tfailf(\"invalid array: want %d elements but got %d\", out.Len(), l)\n\t\t}\n\tcase reflect.Interface:\n\t\t// No type hints. Will have to use a generic sequence.\n\t\tiface = out\n\t\tout = settableValueOf(make([]interface{}, l))\n\tdefault:\n\t\td.terror(n, yaml_SEQ_TAG, out)\n\t\treturn false\n\t}\n\tet := out.Type().Elem()\n\n\tj := 0\n\tfor i := 0; i < l; i++ {\n\t\te := reflect.New(et).Elem()\n\t\tif ok := d.unmarshal(n.children[i], e); ok {\n\t\t\tout.Index(j).Set(e)\n\t\t\tj++\n\t\t}\n\t}\n\tif out.Kind() != reflect.Array {\n\t\tout.Set(out.Slice(0, j))\n\t}\n\tif iface.IsValid() {\n\t\tiface.Set(out)\n\t}\n\treturn true\n}\n\nfunc (d *decoder) mapping(n *node, out reflect.Value) (good bool) {\n\tswitch out.Kind() {\n\tcase reflect.Struct:\n\t\treturn d.mappingStruct(n, out)\n\tcase reflect.Slice:\n\t\treturn d.mappingSlice(n, out)\n\tcase reflect.Map:\n\t\t// okay\n\tcase reflect.Interface:\n\t\tif d.mapType.Kind() == reflect.Map {\n\t\t\tiface := out\n\t\t\tout = reflect.MakeMap(d.mapType)\n\t\t\tiface.Set(out)\n\t\t} else {\n\t\t\tslicev := reflect.New(d.mapType).Elem()\n\t\t\tif !d.mappingSlice(n, slicev) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tout.Set(slicev)\n\t\t\treturn true\n\t\t}\n\tdefault:\n\t\td.terror(n, yaml_MAP_TAG, out)\n\t\treturn false\n\t}\n\toutt := out.Type()\n\tkt := outt.Key()\n\tet := outt.Elem()\n\n\tmapType := d.mapType\n\tif outt.Key() == ifaceType && outt.Elem() == ifaceType {\n\t\td.mapType = outt\n\t}\n\n\tif out.IsNil() {\n\t\tout.Set(reflect.MakeMap(outt))\n\t}\n\tl := len(n.children)\n\tfor i := 0; i < l; i += 2 {\n\t\tif isMerge(n.children[i]) {\n\t\t\td.merge(n.children[i+1], out)\n\t\t\tcontinue\n\t\t}\n\t\tk := reflect.New(kt).Elem()\n\t\tif d.unmarshal(n.children[i], k) {\n\t\t\tkkind := k.Kind()\n\t\t\tif kkind == reflect.Interface {\n\t\t\t\tkkind = k.Elem().Kind()\n\t\t\t}\n\t\t\tif kkind == reflect.Map || kkind == reflect.Slice {\n\t\t\t\tfailf(\"invalid map key: %#v\", k.Interface())\n\t\t\t}\n\t\t\te := reflect.New(et).Elem()\n\t\t\tif d.unmarshal(n.children[i+1], e) {\n\t\t\t\td.setMapIndex(n.children[i+1], out, k, e)\n\t\t\t}\n\t\t}\n\t}\n\td.mapType = mapType\n\treturn true\n}\n\nfunc (d *decoder) setMapIndex(n *node, out, k, v reflect.Value) {\n\tif d.strict && out.MapIndex(k) != zeroValue {\n\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: key %#v already set in map\", n.line+1, k.Interface()))\n\t\treturn\n\t}\n\tout.SetMapIndex(k, v)\n}\n\nfunc (d *decoder) mappingSlice(n *node, out reflect.Value) (good bool) {\n\toutt := out.Type()\n\tif outt.Elem() != mapItemType {\n\t\td.terror(n, yaml_MAP_TAG, out)\n\t\treturn false\n\t}\n\n\tmapType := d.mapType\n\td.mapType = outt\n\n\tvar slice []MapItem\n\tvar l = len(n.children)\n\tfor i := 0; i < l; i += 2 {\n\t\tif isMerge(n.children[i]) {\n\t\t\td.merge(n.children[i+1], out)\n\t\t\tcontinue\n\t\t}\n\t\titem := MapItem{}\n\t\tk := reflect.ValueOf(&item.Key).Elem()\n\t\tif d.unmarshal(n.children[i], k) {\n\t\t\tv := reflect.ValueOf(&item.Value).Elem()\n\t\t\tif d.unmarshal(n.children[i+1], v) {\n\t\t\t\tslice = append(slice, item)\n\t\t\t}\n\t\t}\n\t}\n\tout.Set(reflect.ValueOf(slice))\n\td.mapType = mapType\n\treturn true\n}\n\nfunc (d *decoder) mappingStruct(n *node, out reflect.Value) (good bool) {\n\tsinfo, err := getStructInfo(out.Type())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tname := settableValueOf(\"\")\n\tl := len(n.children)\n\n\tvar inlineMap reflect.Value\n\tvar elemType reflect.Type\n\tif sinfo.InlineMap != -1 {\n\t\tinlineMap = out.Field(sinfo.InlineMap)\n\t\tinlineMap.Set(reflect.New(inlineMap.Type()).Elem())\n\t\telemType = inlineMap.Type().Elem()\n\t}\n\n\tvar doneFields []bool\n\tif d.strict {\n\t\tdoneFields = make([]bool, len(sinfo.FieldsList))\n\t}\n\tfor i := 0; i < l; i += 2 {\n\t\tni := n.children[i]\n\t\tif isMerge(ni) {\n\t\t\td.merge(n.children[i+1], out)\n\t\t\tcontinue\n\t\t}\n\t\tif !d.unmarshal(ni, name) {\n\t\t\tcontinue\n\t\t}\n\t\tif info, ok := sinfo.FieldsMap[name.String()]; ok {\n\t\t\tif d.strict {\n\t\t\t\tif doneFields[info.Id] {\n\t\t\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: field %s already set in type %s\", ni.line+1, name.String(), out.Type()))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tdoneFields[info.Id] = true\n\t\t\t}\n\t\t\tvar field reflect.Value\n\t\t\tif info.Inline == nil {\n\t\t\t\tfield = out.Field(info.Num)\n\t\t\t} else {\n\t\t\t\tfield = out.FieldByIndex(info.Inline)\n\t\t\t}\n\t\t\td.unmarshal(n.children[i+1], field)\n\t\t} else if sinfo.InlineMap != -1 {\n\t\t\tif inlineMap.IsNil() {\n\t\t\t\tinlineMap.Set(reflect.MakeMap(inlineMap.Type()))\n\t\t\t}\n\t\t\tvalue := reflect.New(elemType).Elem()\n\t\t\td.unmarshal(n.children[i+1], value)\n\t\t\td.setMapIndex(n.children[i+1], inlineMap, name, value)\n\t\t} else if d.strict {\n\t\t\td.terrors = append(d.terrors, fmt.Sprintf(\"line %d: field %s not found in type %s\", ni.line+1, name.String(), out.Type()))\n\t\t}\n\t}\n\treturn true\n}\n\nfunc failWantMap() {\n\tfailf(\"map merge requires map or sequence of maps as the value\")\n}\n\nfunc (d *decoder) merge(n *node, out reflect.Value) {\n\tswitch n.kind {\n\tcase mappingNode:\n\t\td.unmarshal(n, out)\n\tcase aliasNode:\n\t\tif n.alias != nil && n.alias.kind != mappingNode {\n\t\t\tfailWantMap()\n\t\t}\n\t\td.unmarshal(n, out)\n\tcase sequenceNode:\n\t\t// Step backwards as earlier nodes take precedence.\n\t\tfor i := len(n.children) - 1; i >= 0; i-- {\n\t\t\tni := n.children[i]\n\t\t\tif ni.kind == aliasNode {\n\t\t\t\tif ni.alias != nil && ni.alias.kind != mappingNode {\n\t\t\t\t\tfailWantMap()\n\t\t\t\t}\n\t\t\t} else if ni.kind != mappingNode {\n\t\t\t\tfailWantMap()\n\t\t\t}\n\t\t\td.unmarshal(ni, out)\n\t\t}\n\tdefault:\n\t\tfailWantMap()\n\t}\n}\n\nfunc isMerge(n *node) bool {\n\treturn n.kind == scalarNode && n.value == \"<<\" && (n.implicit == true || n.tag == yaml_MERGE_TAG)\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/emitterc.go",
    "content": "package yaml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// Flush the buffer if needed.\nfunc flush(emitter *yaml_emitter_t) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) {\n\t\treturn yaml_emitter_flush(emitter)\n\t}\n\treturn true\n}\n\n// Put a character to the output buffer.\nfunc put(emitter *yaml_emitter_t, value byte) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\temitter.buffer[emitter.buffer_pos] = value\n\temitter.buffer_pos++\n\temitter.column++\n\treturn true\n}\n\n// Put a line break to the output buffer.\nfunc put_break(emitter *yaml_emitter_t) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\tswitch emitter.line_break {\n\tcase yaml_CR_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\r'\n\t\temitter.buffer_pos += 1\n\tcase yaml_LN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\n'\n\t\temitter.buffer_pos += 1\n\tcase yaml_CRLN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos+0] = '\\r'\n\t\temitter.buffer[emitter.buffer_pos+1] = '\\n'\n\t\temitter.buffer_pos += 2\n\tdefault:\n\t\tpanic(\"unknown line break setting\")\n\t}\n\temitter.column = 0\n\temitter.line++\n\treturn true\n}\n\n// Copy a character from a string into buffer.\nfunc write(emitter *yaml_emitter_t, s []byte, i *int) bool {\n\tif emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\tp := emitter.buffer_pos\n\tw := width(s[*i])\n\tswitch w {\n\tcase 4:\n\t\temitter.buffer[p+3] = s[*i+3]\n\t\tfallthrough\n\tcase 3:\n\t\temitter.buffer[p+2] = s[*i+2]\n\t\tfallthrough\n\tcase 2:\n\t\temitter.buffer[p+1] = s[*i+1]\n\t\tfallthrough\n\tcase 1:\n\t\temitter.buffer[p+0] = s[*i+0]\n\tdefault:\n\t\tpanic(\"unknown character width\")\n\t}\n\temitter.column++\n\temitter.buffer_pos += w\n\t*i += w\n\treturn true\n}\n\n// Write a whole string into buffer.\nfunc write_all(emitter *yaml_emitter_t, s []byte) bool {\n\tfor i := 0; i < len(s); {\n\t\tif !write(emitter, s, &i) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Copy a line break character from a string into buffer.\nfunc write_break(emitter *yaml_emitter_t, s []byte, i *int) bool {\n\tif s[*i] == '\\n' {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t\t*i++\n\t} else {\n\t\tif !write(emitter, s, i) {\n\t\t\treturn false\n\t\t}\n\t\temitter.column = 0\n\t\temitter.line++\n\t}\n\treturn true\n}\n\n// Set an emitter error and return false.\nfunc yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool {\n\temitter.error = yaml_EMITTER_ERROR\n\temitter.problem = problem\n\treturn false\n}\n\n// Emit an event.\nfunc yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\temitter.events = append(emitter.events, *event)\n\tfor !yaml_emitter_need_more_events(emitter) {\n\t\tevent := &emitter.events[emitter.events_head]\n\t\tif !yaml_emitter_analyze_event(emitter, event) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_state_machine(emitter, event) {\n\t\t\treturn false\n\t\t}\n\t\tyaml_event_delete(event)\n\t\temitter.events_head++\n\t}\n\treturn true\n}\n\n// Check if we need to accumulate more events before emitting.\n//\n// We accumulate extra\n//  - 1 event for DOCUMENT-START\n//  - 2 events for SEQUENCE-START\n//  - 3 events for MAPPING-START\n//\nfunc yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool {\n\tif emitter.events_head == len(emitter.events) {\n\t\treturn true\n\t}\n\tvar accumulate int\n\tswitch emitter.events[emitter.events_head].typ {\n\tcase yaml_DOCUMENT_START_EVENT:\n\t\taccumulate = 1\n\t\tbreak\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\taccumulate = 2\n\t\tbreak\n\tcase yaml_MAPPING_START_EVENT:\n\t\taccumulate = 3\n\t\tbreak\n\tdefault:\n\t\treturn false\n\t}\n\tif len(emitter.events)-emitter.events_head > accumulate {\n\t\treturn false\n\t}\n\tvar level int\n\tfor i := emitter.events_head; i < len(emitter.events); i++ {\n\t\tswitch emitter.events[i].typ {\n\t\tcase yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT:\n\t\t\tlevel++\n\t\tcase yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT:\n\t\t\tlevel--\n\t\t}\n\t\tif level == 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Append a directive to the directives stack.\nfunc yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool {\n\tfor i := 0; i < len(emitter.tag_directives); i++ {\n\t\tif bytes.Equal(value.handle, emitter.tag_directives[i].handle) {\n\t\t\tif allow_duplicates {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, \"duplicate %TAG directive\")\n\t\t}\n\t}\n\n\t// [Go] Do we actually need to copy this given garbage collection\n\t// and the lack of deallocating destructors?\n\ttag_copy := yaml_tag_directive_t{\n\t\thandle: make([]byte, len(value.handle)),\n\t\tprefix: make([]byte, len(value.prefix)),\n\t}\n\tcopy(tag_copy.handle, value.handle)\n\tcopy(tag_copy.prefix, value.prefix)\n\temitter.tag_directives = append(emitter.tag_directives, tag_copy)\n\treturn true\n}\n\n// Increase the indentation level.\nfunc yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool {\n\temitter.indents = append(emitter.indents, emitter.indent)\n\tif emitter.indent < 0 {\n\t\tif flow {\n\t\t\temitter.indent = emitter.best_indent\n\t\t} else {\n\t\t\temitter.indent = 0\n\t\t}\n\t} else if !indentless {\n\t\temitter.indent += emitter.best_indent\n\t}\n\treturn true\n}\n\n// State dispatcher.\nfunc yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tswitch emitter.state {\n\tdefault:\n\tcase yaml_EMIT_STREAM_START_STATE:\n\t\treturn yaml_emitter_emit_stream_start(emitter, event)\n\n\tcase yaml_EMIT_FIRST_DOCUMENT_START_STATE:\n\t\treturn yaml_emitter_emit_document_start(emitter, event, true)\n\n\tcase yaml_EMIT_DOCUMENT_START_STATE:\n\t\treturn yaml_emitter_emit_document_start(emitter, event, false)\n\n\tcase yaml_EMIT_DOCUMENT_CONTENT_STATE:\n\t\treturn yaml_emitter_emit_document_content(emitter, event)\n\n\tcase yaml_EMIT_DOCUMENT_END_STATE:\n\t\treturn yaml_emitter_emit_document_end(emitter, event)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_value(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_VALUE_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_value(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE:\n\t\treturn yaml_emitter_emit_block_sequence_item(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_block_sequence_item(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_key(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_key(emitter, event, false)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_value(emitter, event, true)\n\n\tcase yaml_EMIT_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn yaml_emitter_emit_block_mapping_value(emitter, event, false)\n\n\tcase yaml_EMIT_END_STATE:\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected nothing after STREAM-END\")\n\t}\n\tpanic(\"invalid emitter state\")\n}\n\n// Expect STREAM-START.\nfunc yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif event.typ != yaml_STREAM_START_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected STREAM-START\")\n\t}\n\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\temitter.encoding = event.encoding\n\t\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\t\temitter.encoding = yaml_UTF8_ENCODING\n\t\t}\n\t}\n\tif emitter.best_indent < 2 || emitter.best_indent > 9 {\n\t\temitter.best_indent = 2\n\t}\n\tif emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 {\n\t\temitter.best_width = 80\n\t}\n\tif emitter.best_width < 0 {\n\t\temitter.best_width = 1<<31 - 1\n\t}\n\tif emitter.line_break == yaml_ANY_BREAK {\n\t\temitter.line_break = yaml_LN_BREAK\n\t}\n\n\temitter.indent = -1\n\temitter.line = 0\n\temitter.column = 0\n\temitter.whitespace = true\n\temitter.indention = true\n\n\tif emitter.encoding != yaml_UTF8_ENCODING {\n\t\tif !yaml_emitter_write_bom(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE\n\treturn true\n}\n\n// Expect DOCUMENT-START or STREAM-END.\nfunc yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\n\tif event.typ == yaml_DOCUMENT_START_EVENT {\n\n\t\tif event.version_directive != nil {\n\t\t\tif !yaml_emitter_analyze_version_directive(emitter, event.version_directive) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < len(event.tag_directives); i++ {\n\t\t\ttag_directive := &event.tag_directives[i]\n\t\t\tif !yaml_emitter_analyze_tag_directive(emitter, tag_directive) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_append_tag_directive(emitter, tag_directive, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < len(default_tag_directives); i++ {\n\t\t\ttag_directive := &default_tag_directives[i]\n\t\t\tif !yaml_emitter_append_tag_directive(emitter, tag_directive, true) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\timplicit := event.implicit\n\t\tif !first || emitter.canonical {\n\t\t\timplicit = false\n\t\t}\n\n\t\tif emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif event.version_directive != nil {\n\t\t\timplicit = false\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"%YAML\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"1.1\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif len(event.tag_directives) > 0 {\n\t\t\timplicit = false\n\t\t\tfor i := 0; i < len(event.tag_directives); i++ {\n\t\t\t\ttag_directive := &event.tag_directives[i]\n\t\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"%TAG\"), true, false, false) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif yaml_emitter_check_empty_document(emitter) {\n\t\t\timplicit = false\n\t\t}\n\t\tif !implicit {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"---\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif emitter.canonical {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\temitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE\n\t\treturn true\n\t}\n\n\tif event.typ == yaml_STREAM_END_EVENT {\n\t\tif emitter.open_ended {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_flush(emitter) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = yaml_EMIT_END_STATE\n\t\treturn true\n\t}\n\n\treturn yaml_emitter_set_emitter_error(emitter, \"expected DOCUMENT-START or STREAM-END\")\n}\n\n// Expect the root node.\nfunc yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\temitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, true, false, false, false)\n}\n\n// Expect DOCUMENT-END.\nfunc yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif event.typ != yaml_DOCUMENT_END_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"expected DOCUMENT-END\")\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !event.implicit {\n\t\t// [Go] Allocate the slice elsewhere.\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"...\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !yaml_emitter_flush(emitter) {\n\t\treturn false\n\t}\n\temitter.state = yaml_EMIT_DOCUMENT_START_STATE\n\temitter.tag_directives = emitter.tag_directives[:0]\n\treturn true\n}\n\n// Expect a flow item node.\nfunc yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level++\n\t}\n\n\tif event.typ == yaml_SEQUENCE_END_EVENT {\n\t\temitter.flow_level--\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\tif emitter.canonical && !first {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\n\t\treturn true\n\t}\n\n\tif !first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, true, false, false)\n}\n\n// Expect a flow key node.\nfunc yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.flow_level++\n\t}\n\n\tif event.typ == yaml_MAPPING_END_EVENT {\n\t\temitter.flow_level--\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\tif emitter.canonical && !first {\n\t\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\n\tif !first {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif !emitter.canonical && yaml_emitter_check_simple_key(emitter) {\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE)\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, true)\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a flow value node.\nfunc yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {\n\tif simple {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif emitter.canonical || emitter.column > emitter.best_width {\n\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a block item node.\nfunc yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_increase_indent(emitter, false, emitter.mapping_context && !emitter.indention) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif event.typ == yaml_SEQUENCE_END_EVENT {\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, true, false, false)\n}\n\n// Expect a block key node.\nfunc yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\tif !yaml_emitter_increase_indent(emitter, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif event.typ == yaml_MAPPING_END_EVENT {\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\t\temitter.state = emitter.states[len(emitter.states)-1]\n\t\temitter.states = emitter.states[:len(emitter.states)-1]\n\t\treturn true\n\t}\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif yaml_emitter_check_simple_key(emitter) {\n\t\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE)\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, true)\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) {\n\t\treturn false\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a block value node.\nfunc yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {\n\tif simple {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n// Expect a node.\nfunc yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t,\n\troot bool, sequence bool, mapping bool, simple_key bool) bool {\n\n\temitter.root_context = root\n\temitter.sequence_context = sequence\n\temitter.mapping_context = mapping\n\temitter.simple_key_context = simple_key\n\n\tswitch event.typ {\n\tcase yaml_ALIAS_EVENT:\n\t\treturn yaml_emitter_emit_alias(emitter, event)\n\tcase yaml_SCALAR_EVENT:\n\t\treturn yaml_emitter_emit_scalar(emitter, event)\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\treturn yaml_emitter_emit_sequence_start(emitter, event)\n\tcase yaml_MAPPING_START_EVENT:\n\t\treturn yaml_emitter_emit_mapping_start(emitter, event)\n\tdefault:\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\tfmt.Sprintf(\"expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS, but got %v\", event.typ))\n\t}\n}\n\n// Expect ALIAS.\nfunc yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\treturn true\n}\n\n// Expect SCALAR.\nfunc yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_select_scalar_style(emitter, event) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_increase_indent(emitter, true, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_scalar(emitter) {\n\t\treturn false\n\t}\n\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\treturn true\n}\n\n// Expect SEQUENCE-START.\nfunc yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE ||\n\t\tyaml_emitter_check_empty_sequence(emitter) {\n\t\temitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE\n\t} else {\n\t\temitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE\n\t}\n\treturn true\n}\n\n// Expect MAPPING-START.\nfunc yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tif !yaml_emitter_process_anchor(emitter) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_process_tag(emitter) {\n\t\treturn false\n\t}\n\tif emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE ||\n\t\tyaml_emitter_check_empty_mapping(emitter) {\n\t\temitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE\n\t} else {\n\t\temitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE\n\t}\n\treturn true\n}\n\n// Check if the document content is an empty scalar.\nfunc yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool {\n\treturn false // [Go] Huh?\n}\n\n// Check if the next events represent an empty sequence.\nfunc yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool {\n\tif len(emitter.events)-emitter.events_head < 2 {\n\t\treturn false\n\t}\n\treturn emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT\n}\n\n// Check if the next events represent an empty mapping.\nfunc yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool {\n\tif len(emitter.events)-emitter.events_head < 2 {\n\t\treturn false\n\t}\n\treturn emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT\n}\n\n// Check if the next node can be expressed as a simple key.\nfunc yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool {\n\tlength := 0\n\tswitch emitter.events[emitter.events_head].typ {\n\tcase yaml_ALIAS_EVENT:\n\t\tlength += len(emitter.anchor_data.anchor)\n\tcase yaml_SCALAR_EVENT:\n\t\tif emitter.scalar_data.multiline {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix) +\n\t\t\tlen(emitter.scalar_data.value)\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif !yaml_emitter_check_empty_sequence(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix)\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif !yaml_emitter_check_empty_mapping(emitter) {\n\t\t\treturn false\n\t\t}\n\t\tlength += len(emitter.anchor_data.anchor) +\n\t\t\tlen(emitter.tag_data.handle) +\n\t\t\tlen(emitter.tag_data.suffix)\n\tdefault:\n\t\treturn false\n\t}\n\treturn length <= 128\n}\n\n// Determine an acceptable scalar style.\nfunc yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\tno_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0\n\tif no_tag && !event.implicit && !event.quoted_implicit {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"neither tag nor implicit flags are specified\")\n\t}\n\n\tstyle := event.scalar_style()\n\tif style == yaml_ANY_SCALAR_STYLE {\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\t}\n\tif emitter.canonical {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\tif emitter.simple_key_context && emitter.scalar_data.multiline {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\n\tif style == yaml_PLAIN_SCALAR_STYLE {\n\t\tif emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed ||\n\t\t\temitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t\tif len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t\tif no_tag && !event.implicit {\n\t\t\tstyle = yaml_SINGLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\tif style == yaml_SINGLE_QUOTED_SCALAR_STYLE {\n\t\tif !emitter.scalar_data.single_quoted_allowed {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\tif style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE {\n\t\tif !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t}\n\t}\n\n\tif no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE {\n\t\temitter.tag_data.handle = []byte{'!'}\n\t}\n\temitter.scalar_data.style = style\n\treturn true\n}\n\n// Write an anchor.\nfunc yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool {\n\tif emitter.anchor_data.anchor == nil {\n\t\treturn true\n\t}\n\tc := []byte{'&'}\n\tif emitter.anchor_data.alias {\n\t\tc[0] = '*'\n\t}\n\tif !yaml_emitter_write_indicator(emitter, c, true, false, false) {\n\t\treturn false\n\t}\n\treturn yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor)\n}\n\n// Write a tag.\nfunc yaml_emitter_process_tag(emitter *yaml_emitter_t) bool {\n\tif len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 {\n\t\treturn true\n\t}\n\tif len(emitter.tag_data.handle) > 0 {\n\t\tif !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) {\n\t\t\treturn false\n\t\t}\n\t\tif len(emitter.tag_data.suffix) > 0 {\n\t\t\tif !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// [Go] Allocate these slices elsewhere.\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"!<\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {\n\t\t\treturn false\n\t\t}\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Write a scalar.\nfunc yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool {\n\tswitch emitter.scalar_data.style {\n\tcase yaml_PLAIN_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_SINGLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_DOUBLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)\n\n\tcase yaml_LITERAL_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value)\n\n\tcase yaml_FOLDED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value)\n\t}\n\tpanic(\"unknown scalar style\")\n}\n\n// Check if a %YAML directive is valid.\nfunc yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool {\n\tif version_directive.major != 1 || version_directive.minor != 1 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"incompatible %YAML directive\")\n\t}\n\treturn true\n}\n\n// Check if a %TAG directive is valid.\nfunc yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool {\n\thandle := tag_directive.handle\n\tprefix := tag_directive.prefix\n\tif len(handle) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must not be empty\")\n\t}\n\tif handle[0] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must start with '!'\")\n\t}\n\tif handle[len(handle)-1] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must end with '!'\")\n\t}\n\tfor i := 1; i < len(handle)-1; i += width(handle[i]) {\n\t\tif !is_alpha(handle, i) {\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag handle must contain alphanumerical characters only\")\n\t\t}\n\t}\n\tif len(prefix) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag prefix must not be empty\")\n\t}\n\treturn true\n}\n\n// Check if an anchor is valid.\nfunc yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool {\n\tif len(anchor) == 0 {\n\t\tproblem := \"anchor value must not be empty\"\n\t\tif alias {\n\t\t\tproblem = \"alias value must not be empty\"\n\t\t}\n\t\treturn yaml_emitter_set_emitter_error(emitter, problem)\n\t}\n\tfor i := 0; i < len(anchor); i += width(anchor[i]) {\n\t\tif !is_alpha(anchor, i) {\n\t\t\tproblem := \"anchor value must contain alphanumerical characters only\"\n\t\t\tif alias {\n\t\t\t\tproblem = \"alias value must contain alphanumerical characters only\"\n\t\t\t}\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, problem)\n\t\t}\n\t}\n\temitter.anchor_data.anchor = anchor\n\temitter.anchor_data.alias = alias\n\treturn true\n}\n\n// Check if a tag is valid.\nfunc yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool {\n\tif len(tag) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter, \"tag value must not be empty\")\n\t}\n\tfor i := 0; i < len(emitter.tag_directives); i++ {\n\t\ttag_directive := &emitter.tag_directives[i]\n\t\tif bytes.HasPrefix(tag, tag_directive.prefix) {\n\t\t\temitter.tag_data.handle = tag_directive.handle\n\t\t\temitter.tag_data.suffix = tag[len(tag_directive.prefix):]\n\t\t\treturn true\n\t\t}\n\t}\n\temitter.tag_data.suffix = tag\n\treturn true\n}\n\n// Check if a scalar is valid.\nfunc yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tvar (\n\t\tblock_indicators   = false\n\t\tflow_indicators    = false\n\t\tline_breaks        = false\n\t\tspecial_characters = false\n\n\t\tleading_space  = false\n\t\tleading_break  = false\n\t\ttrailing_space = false\n\t\ttrailing_break = false\n\t\tbreak_space    = false\n\t\tspace_break    = false\n\n\t\tpreceded_by_whitespace = false\n\t\tfollowed_by_whitespace = false\n\t\tprevious_space         = false\n\t\tprevious_break         = false\n\t)\n\n\temitter.scalar_data.value = value\n\n\tif len(value) == 0 {\n\t\temitter.scalar_data.multiline = false\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = true\n\t\temitter.scalar_data.single_quoted_allowed = true\n\t\temitter.scalar_data.block_allowed = false\n\t\treturn true\n\t}\n\n\tif len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) {\n\t\tblock_indicators = true\n\t\tflow_indicators = true\n\t}\n\n\tpreceded_by_whitespace = true\n\tfor i, w := 0, 0; i < len(value); i += w {\n\t\tw = width(value[i])\n\t\tfollowed_by_whitespace = i+w >= len(value) || is_blank(value, i+w)\n\n\t\tif i == 0 {\n\t\t\tswitch value[i] {\n\t\t\tcase '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\\'', '\"', '%', '@', '`':\n\t\t\t\tflow_indicators = true\n\t\t\t\tblock_indicators = true\n\t\t\tcase '?', ':':\n\t\t\t\tflow_indicators = true\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\tcase '-':\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tflow_indicators = true\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tswitch value[i] {\n\t\t\tcase ',', '?', '[', ']', '{', '}':\n\t\t\t\tflow_indicators = true\n\t\t\tcase ':':\n\t\t\t\tflow_indicators = true\n\t\t\t\tif followed_by_whitespace {\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\tcase '#':\n\t\t\t\tif preceded_by_whitespace {\n\t\t\t\t\tflow_indicators = true\n\t\t\t\t\tblock_indicators = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode {\n\t\t\tspecial_characters = true\n\t\t}\n\t\tif is_space(value, i) {\n\t\t\tif i == 0 {\n\t\t\t\tleading_space = true\n\t\t\t}\n\t\t\tif i+width(value[i]) == len(value) {\n\t\t\t\ttrailing_space = true\n\t\t\t}\n\t\t\tif previous_break {\n\t\t\t\tbreak_space = true\n\t\t\t}\n\t\t\tprevious_space = true\n\t\t\tprevious_break = false\n\t\t} else if is_break(value, i) {\n\t\t\tline_breaks = true\n\t\t\tif i == 0 {\n\t\t\t\tleading_break = true\n\t\t\t}\n\t\t\tif i+width(value[i]) == len(value) {\n\t\t\t\ttrailing_break = true\n\t\t\t}\n\t\t\tif previous_space {\n\t\t\t\tspace_break = true\n\t\t\t}\n\t\t\tprevious_space = false\n\t\t\tprevious_break = true\n\t\t} else {\n\t\t\tprevious_space = false\n\t\t\tprevious_break = false\n\t\t}\n\n\t\t// [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition.\n\t\tpreceded_by_whitespace = is_blankz(value, i)\n\t}\n\n\temitter.scalar_data.multiline = line_breaks\n\temitter.scalar_data.flow_plain_allowed = true\n\temitter.scalar_data.block_plain_allowed = true\n\temitter.scalar_data.single_quoted_allowed = true\n\temitter.scalar_data.block_allowed = true\n\n\tif leading_space || leading_break || trailing_space || trailing_break {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\tif trailing_space {\n\t\temitter.scalar_data.block_allowed = false\n\t}\n\tif break_space {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t\temitter.scalar_data.single_quoted_allowed = false\n\t}\n\tif space_break || special_characters {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t\temitter.scalar_data.single_quoted_allowed = false\n\t\temitter.scalar_data.block_allowed = false\n\t}\n\tif line_breaks {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\tif flow_indicators {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t}\n\tif block_indicators {\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\treturn true\n}\n\n// Check if the event data is valid.\nfunc yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\temitter.anchor_data.anchor = nil\n\temitter.tag_data.handle = nil\n\temitter.tag_data.suffix = nil\n\temitter.scalar_data.value = nil\n\n\tswitch event.typ {\n\tcase yaml_ALIAS_EVENT:\n\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, true) {\n\t\t\treturn false\n\t\t}\n\n\tcase yaml_SCALAR_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif !yaml_emitter_analyze_scalar(emitter, event.value) {\n\t\t\treturn false\n\t\t}\n\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || !event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical || !event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter, event.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\n// Write the BOM character.\nfunc yaml_emitter_write_bom(emitter *yaml_emitter_t) bool {\n\tif !flush(emitter) {\n\t\treturn false\n\t}\n\tpos := emitter.buffer_pos\n\temitter.buffer[pos+0] = '\\xEF'\n\temitter.buffer[pos+1] = '\\xBB'\n\temitter.buffer[pos+2] = '\\xBF'\n\temitter.buffer_pos += 3\n\treturn true\n}\n\nfunc yaml_emitter_write_indent(emitter *yaml_emitter_t) bool {\n\tindent := emitter.indent\n\tif indent < 0 {\n\t\tindent = 0\n\t}\n\tif !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\tfor emitter.column < indent {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.whitespace = true\n\temitter.indention = true\n\treturn true\n}\n\nfunc yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool {\n\tif need_whitespace && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !write_all(emitter, indicator) {\n\t\treturn false\n\t}\n\temitter.whitespace = is_whitespace\n\temitter.indention = (emitter.indention && is_indention)\n\temitter.open_ended = false\n\treturn true\n}\n\nfunc yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool {\n\tif !write_all(emitter, value) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool {\n\tif !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tif !write_all(emitter, value) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool {\n\tif need_whitespace && !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\tfor i := 0; i < len(value); {\n\t\tvar must_write bool\n\t\tswitch value[i] {\n\t\tcase ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\\'', '(', ')', '[', ']':\n\t\t\tmust_write = true\n\t\tdefault:\n\t\t\tmust_write = is_alpha(value, i)\n\t\t}\n\t\tif must_write {\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\tw := width(value[i])\n\t\t\tfor k := 0; k < w; k++ {\n\t\t\t\toctet := value[i]\n\t\t\t\ti++\n\t\t\t\tif !put(emitter, '%') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tc := octet >> 4\n\t\t\t\tif c < 10 {\n\t\t\t\t\tc += '0'\n\t\t\t\t} else {\n\t\t\t\t\tc += 'A' - 10\n\t\t\t\t}\n\t\t\t\tif !put(emitter, c) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tc = octet & 0x0f\n\t\t\t\tif c < 10 {\n\t\t\t\t\tc += '0'\n\t\t\t\t} else {\n\t\t\t\t\tc += 'A' - 10\n\t\t\t\t}\n\t\t\t\tif !put(emitter, c) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\tif !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tspaces := false\n\tbreaks := false\n\tfor i := 0; i < len(value); {\n\t\tif is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else if is_break(value, i) {\n\t\t\tif !breaks && value[i] == '\\n' {\n\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tspaces = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\n\temitter.whitespace = false\n\temitter.indention = false\n\tif emitter.root_context {\n\t\temitter.open_ended = true\n\t}\n\n\treturn true\n}\n\nfunc yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\\''}, true, false, false) {\n\t\treturn false\n\t}\n\n\tspaces := false\n\tbreaks := false\n\tfor i := 0; i < len(value); {\n\t\tif is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else if is_break(value, i) {\n\t\t\tif !breaks && value[i] == '\\n' {\n\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif value[i] == '\\'' {\n\t\t\t\tif !put(emitter, '\\'') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tspaces = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\\''}, false, false, false) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {\n\tspaces := false\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\"'}, true, false, false) {\n\t\treturn false\n\t}\n\n\tfor i := 0; i < len(value); {\n\t\tif !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) ||\n\t\t\tis_bom(value, i) || is_break(value, i) ||\n\t\t\tvalue[i] == '\"' || value[i] == '\\\\' {\n\n\t\t\toctet := value[i]\n\n\t\t\tvar w int\n\t\t\tvar v rune\n\t\t\tswitch {\n\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\tw, v = 1, rune(octet&0x7F)\n\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\tw, v = 2, rune(octet&0x1F)\n\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\tw, v = 3, rune(octet&0x0F)\n\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\tw, v = 4, rune(octet&0x07)\n\t\t\t}\n\t\t\tfor k := 1; k < w; k++ {\n\t\t\t\toctet = value[i+k]\n\t\t\t\tv = (v << 6) + (rune(octet) & 0x3F)\n\t\t\t}\n\t\t\ti += w\n\n\t\t\tif !put(emitter, '\\\\') {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tvar ok bool\n\t\t\tswitch v {\n\t\t\tcase 0x00:\n\t\t\t\tok = put(emitter, '0')\n\t\t\tcase 0x07:\n\t\t\t\tok = put(emitter, 'a')\n\t\t\tcase 0x08:\n\t\t\t\tok = put(emitter, 'b')\n\t\t\tcase 0x09:\n\t\t\t\tok = put(emitter, 't')\n\t\t\tcase 0x0A:\n\t\t\t\tok = put(emitter, 'n')\n\t\t\tcase 0x0b:\n\t\t\t\tok = put(emitter, 'v')\n\t\t\tcase 0x0c:\n\t\t\t\tok = put(emitter, 'f')\n\t\t\tcase 0x0d:\n\t\t\t\tok = put(emitter, 'r')\n\t\t\tcase 0x1b:\n\t\t\t\tok = put(emitter, 'e')\n\t\t\tcase 0x22:\n\t\t\t\tok = put(emitter, '\"')\n\t\t\tcase 0x5c:\n\t\t\t\tok = put(emitter, '\\\\')\n\t\t\tcase 0x85:\n\t\t\t\tok = put(emitter, 'N')\n\t\t\tcase 0xA0:\n\t\t\t\tok = put(emitter, '_')\n\t\t\tcase 0x2028:\n\t\t\t\tok = put(emitter, 'L')\n\t\t\tcase 0x2029:\n\t\t\t\tok = put(emitter, 'P')\n\t\t\tdefault:\n\t\t\t\tif v <= 0xFF {\n\t\t\t\t\tok = put(emitter, 'x')\n\t\t\t\t\tw = 2\n\t\t\t\t} else if v <= 0xFFFF {\n\t\t\t\t\tok = put(emitter, 'u')\n\t\t\t\t\tw = 4\n\t\t\t\t} else {\n\t\t\t\t\tok = put(emitter, 'U')\n\t\t\t\t\tw = 8\n\t\t\t\t}\n\t\t\t\tfor k := (w - 1) * 4; ok && k >= 0; k -= 4 {\n\t\t\t\t\tdigit := byte((v >> uint(k)) & 0x0F)\n\t\t\t\t\tif digit < 10 {\n\t\t\t\t\t\tok = put(emitter, digit+'0')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tok = put(emitter, digit+'A'-10)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = false\n\t\t} else if is_space(value, i) {\n\t\t\tif allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif is_space(value, i+1) {\n\t\t\t\t\tif !put(emitter, '\\\\') {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else if !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = true\n\t\t} else {\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tspaces = false\n\t\t}\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte{'\"'}, false, false, false) {\n\t\treturn false\n\t}\n\temitter.whitespace = false\n\temitter.indention = false\n\treturn true\n}\n\nfunc yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool {\n\tif is_space(value, 0) || is_break(value, 0) {\n\t\tindent_hint := []byte{'0' + byte(emitter.best_indent)}\n\t\tif !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\temitter.open_ended = false\n\n\tvar chomp_hint [1]byte\n\tif len(value) == 0 {\n\t\tchomp_hint[0] = '-'\n\t} else {\n\t\ti := len(value) - 1\n\t\tfor value[i]&0xC0 == 0x80 {\n\t\t\ti--\n\t\t}\n\t\tif !is_break(value, i) {\n\t\t\tchomp_hint[0] = '-'\n\t\t} else if i == 0 {\n\t\t\tchomp_hint[0] = '+'\n\t\t\temitter.open_ended = true\n\t\t} else {\n\t\t\ti--\n\t\t\tfor value[i]&0xC0 == 0x80 {\n\t\t\t\ti--\n\t\t\t}\n\t\t\tif is_break(value, i) {\n\t\t\t\tchomp_hint[0] = '+'\n\t\t\t\temitter.open_ended = true\n\t\t\t}\n\t\t}\n\t}\n\tif chomp_hint[0] != 0 {\n\t\tif !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tif !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_block_scalar_hints(emitter, value) {\n\t\treturn false\n\t}\n\tif !put_break(emitter) {\n\t\treturn false\n\t}\n\temitter.indention = true\n\temitter.whitespace = true\n\tbreaks := true\n\tfor i := 0; i < len(value); {\n\t\tif is_break(value, i) {\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tif !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) {\n\t\treturn false\n\t}\n\tif !yaml_emitter_write_block_scalar_hints(emitter, value) {\n\t\treturn false\n\t}\n\n\tif !put_break(emitter) {\n\t\treturn false\n\t}\n\temitter.indention = true\n\temitter.whitespace = true\n\n\tbreaks := true\n\tleading_spaces := true\n\tfor i := 0; i < len(value); {\n\t\tif is_break(value, i) {\n\t\t\tif !breaks && !leading_spaces && value[i] == '\\n' {\n\t\t\t\tk := 0\n\t\t\t\tfor is_break(value, k) {\n\t\t\t\t\tk += width(value[k])\n\t\t\t\t}\n\t\t\t\tif !is_blankz(value, k) {\n\t\t\t\t\tif !put_break(emitter) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.indention = true\n\t\t\tbreaks = true\n\t\t} else {\n\t\t\tif breaks {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tleading_spaces = is_blank(value, i)\n\t\t\t}\n\t\t\tif !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width {\n\t\t\t\tif !yaml_emitter_write_indent(emitter) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\ti += width(value[i])\n\t\t\t} else {\n\t\t\t\tif !write(emitter, value, &i) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\temitter.indention = false\n\t\t\tbreaks = false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/encode.go",
    "content": "package yaml\n\nimport (\n\t\"encoding\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\n// jsonNumber is the interface of the encoding/json.Number datatype.\n// Repeating the interface here avoids a dependency on encoding/json, and also\n// supports other libraries like jsoniter, which use a similar datatype with\n// the same interface. Detecting this interface is useful when dealing with\n// structures containing json.Number, which is a string under the hood. The\n// encoder should prefer the use of Int64(), Float64() and string(), in that\n// order, when encoding this type.\ntype jsonNumber interface {\n\tFloat64() (float64, error)\n\tInt64() (int64, error)\n\tString() string\n}\n\ntype encoder struct {\n\temitter yaml_emitter_t\n\tevent   yaml_event_t\n\tout     []byte\n\tflow    bool\n\t// doneInit holds whether the initial stream_start_event has been\n\t// emitted.\n\tdoneInit bool\n}\n\nfunc newEncoder() *encoder {\n\te := &encoder{}\n\tyaml_emitter_initialize(&e.emitter)\n\tyaml_emitter_set_output_string(&e.emitter, &e.out)\n\tyaml_emitter_set_unicode(&e.emitter, true)\n\treturn e\n}\n\nfunc newEncoderWithWriter(w io.Writer) *encoder {\n\te := &encoder{}\n\tyaml_emitter_initialize(&e.emitter)\n\tyaml_emitter_set_output_writer(&e.emitter, w)\n\tyaml_emitter_set_unicode(&e.emitter, true)\n\treturn e\n}\n\nfunc (e *encoder) init() {\n\tif e.doneInit {\n\t\treturn\n\t}\n\tyaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING)\n\te.emit()\n\te.doneInit = true\n}\n\nfunc (e *encoder) finish() {\n\te.emitter.open_ended = false\n\tyaml_stream_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *encoder) destroy() {\n\tyaml_emitter_delete(&e.emitter)\n}\n\nfunc (e *encoder) emit() {\n\t// This will internally delete the e.event value.\n\te.must(yaml_emitter_emit(&e.emitter, &e.event))\n}\n\nfunc (e *encoder) must(ok bool) {\n\tif !ok {\n\t\tmsg := e.emitter.problem\n\t\tif msg == \"\" {\n\t\t\tmsg = \"unknown problem generating YAML content\"\n\t\t}\n\t\tfailf(\"%s\", msg)\n\t}\n}\n\nfunc (e *encoder) marshalDoc(tag string, in reflect.Value) {\n\te.init()\n\tyaml_document_start_event_initialize(&e.event, nil, nil, true)\n\te.emit()\n\te.marshal(tag, in)\n\tyaml_document_end_event_initialize(&e.event, true)\n\te.emit()\n}\n\nfunc (e *encoder) marshal(tag string, in reflect.Value) {\n\tif !in.IsValid() || in.Kind() == reflect.Ptr && in.IsNil() {\n\t\te.nilv()\n\t\treturn\n\t}\n\tiface := in.Interface()\n\tswitch m := iface.(type) {\n\tcase jsonNumber:\n\t\tinteger, err := m.Int64()\n\t\tif err == nil {\n\t\t\t// In this case the json.Number is a valid int64\n\t\t\tin = reflect.ValueOf(integer)\n\t\t\tbreak\n\t\t}\n\t\tfloat, err := m.Float64()\n\t\tif err == nil {\n\t\t\t// In this case the json.Number is a valid float64\n\t\t\tin = reflect.ValueOf(float)\n\t\t\tbreak\n\t\t}\n\t\t// fallback case - no number could be obtained\n\t\tin = reflect.ValueOf(m.String())\n\tcase time.Time, *time.Time:\n\t\t// Although time.Time implements TextMarshaler,\n\t\t// we don't want to treat it as a string for YAML\n\t\t// purposes because YAML has special support for\n\t\t// timestamps.\n\tcase Marshaler:\n\t\tv, err := m.MarshalYAML()\n\t\tif err != nil {\n\t\t\tfail(err)\n\t\t}\n\t\tif v == nil {\n\t\t\te.nilv()\n\t\t\treturn\n\t\t}\n\t\tin = reflect.ValueOf(v)\n\tcase encoding.TextMarshaler:\n\t\ttext, err := m.MarshalText()\n\t\tif err != nil {\n\t\t\tfail(err)\n\t\t}\n\t\tin = reflect.ValueOf(string(text))\n\tcase nil:\n\t\te.nilv()\n\t\treturn\n\t}\n\tswitch in.Kind() {\n\tcase reflect.Interface:\n\t\te.marshal(tag, in.Elem())\n\tcase reflect.Map:\n\t\te.mapv(tag, in)\n\tcase reflect.Ptr:\n\t\tif in.Type() == ptrTimeType {\n\t\t\te.timev(tag, in.Elem())\n\t\t} else {\n\t\t\te.marshal(tag, in.Elem())\n\t\t}\n\tcase reflect.Struct:\n\t\tif in.Type() == timeType {\n\t\t\te.timev(tag, in)\n\t\t} else {\n\t\t\te.structv(tag, in)\n\t\t}\n\tcase reflect.Slice, reflect.Array:\n\t\tif in.Type().Elem() == mapItemType {\n\t\t\te.itemsv(tag, in)\n\t\t} else {\n\t\t\te.slicev(tag, in)\n\t\t}\n\tcase reflect.String:\n\t\te.stringv(tag, in)\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tif in.Type() == durationType {\n\t\t\te.stringv(tag, reflect.ValueOf(iface.(time.Duration).String()))\n\t\t} else {\n\t\t\te.intv(tag, in)\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\te.uintv(tag, in)\n\tcase reflect.Float32, reflect.Float64:\n\t\te.floatv(tag, in)\n\tcase reflect.Bool:\n\t\te.boolv(tag, in)\n\tdefault:\n\t\tpanic(\"cannot marshal type: \" + in.Type().String())\n\t}\n}\n\nfunc (e *encoder) mapv(tag string, in reflect.Value) {\n\te.mappingv(tag, func() {\n\t\tkeys := keyList(in.MapKeys())\n\t\tsort.Sort(keys)\n\t\tfor _, k := range keys {\n\t\t\te.marshal(\"\", k)\n\t\t\te.marshal(\"\", in.MapIndex(k))\n\t\t}\n\t})\n}\n\nfunc (e *encoder) itemsv(tag string, in reflect.Value) {\n\te.mappingv(tag, func() {\n\t\tslice := in.Convert(reflect.TypeOf([]MapItem{})).Interface().([]MapItem)\n\t\tfor _, item := range slice {\n\t\t\te.marshal(\"\", reflect.ValueOf(item.Key))\n\t\t\te.marshal(\"\", reflect.ValueOf(item.Value))\n\t\t}\n\t})\n}\n\nfunc (e *encoder) structv(tag string, in reflect.Value) {\n\tsinfo, err := getStructInfo(in.Type())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\te.mappingv(tag, func() {\n\t\tfor _, info := range sinfo.FieldsList {\n\t\t\tvar value reflect.Value\n\t\t\tif info.Inline == nil {\n\t\t\t\tvalue = in.Field(info.Num)\n\t\t\t} else {\n\t\t\t\tvalue = in.FieldByIndex(info.Inline)\n\t\t\t}\n\t\t\tif info.OmitEmpty && isZero(value) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\te.marshal(\"\", reflect.ValueOf(info.Key))\n\t\t\te.flow = info.Flow\n\t\t\te.marshal(\"\", value)\n\t\t}\n\t\tif sinfo.InlineMap >= 0 {\n\t\t\tm := in.Field(sinfo.InlineMap)\n\t\t\tif m.Len() > 0 {\n\t\t\t\te.flow = false\n\t\t\t\tkeys := keyList(m.MapKeys())\n\t\t\t\tsort.Sort(keys)\n\t\t\t\tfor _, k := range keys {\n\t\t\t\t\tif _, found := sinfo.FieldsMap[k.String()]; found {\n\t\t\t\t\t\tpanic(fmt.Sprintf(\"Can't have key %q in inlined map; conflicts with struct field\", k.String()))\n\t\t\t\t\t}\n\t\t\t\t\te.marshal(\"\", k)\n\t\t\t\t\te.flow = false\n\t\t\t\t\te.marshal(\"\", m.MapIndex(k))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n}\n\nfunc (e *encoder) mappingv(tag string, f func()) {\n\timplicit := tag == \"\"\n\tstyle := yaml_BLOCK_MAPPING_STYLE\n\tif e.flow {\n\t\te.flow = false\n\t\tstyle = yaml_FLOW_MAPPING_STYLE\n\t}\n\tyaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)\n\te.emit()\n\tf()\n\tyaml_mapping_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *encoder) slicev(tag string, in reflect.Value) {\n\timplicit := tag == \"\"\n\tstyle := yaml_BLOCK_SEQUENCE_STYLE\n\tif e.flow {\n\t\te.flow = false\n\t\tstyle = yaml_FLOW_SEQUENCE_STYLE\n\t}\n\te.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style))\n\te.emit()\n\tn := in.Len()\n\tfor i := 0; i < n; i++ {\n\t\te.marshal(\"\", in.Index(i))\n\t}\n\te.must(yaml_sequence_end_event_initialize(&e.event))\n\te.emit()\n}\n\n// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1.\n//\n// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported\n// in YAML 1.2 and by this package, but these should be marshalled quoted for\n// the time being for compatibility with other parsers.\nfunc isBase60Float(s string) (result bool) {\n\t// Fast path.\n\tif s == \"\" {\n\t\treturn false\n\t}\n\tc := s[0]\n\tif !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 {\n\t\treturn false\n\t}\n\t// Do the full match.\n\treturn base60float.MatchString(s)\n}\n\n// From http://yaml.org/type/float.html, except the regular expression there\n// is bogus. In practice parsers do not enforce the \"\\.[0-9_]*\" suffix.\nvar base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\\.[0-9_]*)?$`)\n\nfunc (e *encoder) stringv(tag string, in reflect.Value) {\n\tvar style yaml_scalar_style_t\n\ts := in.String()\n\tcanUsePlain := true\n\tswitch {\n\tcase !utf8.ValidString(s):\n\t\tif tag == yaml_BINARY_TAG {\n\t\t\tfailf(\"explicitly tagged !!binary data must be base64-encoded\")\n\t\t}\n\t\tif tag != \"\" {\n\t\t\tfailf(\"cannot marshal invalid UTF-8 data as %s\", shortTag(tag))\n\t\t}\n\t\t// It can't be encoded directly as YAML so use a binary tag\n\t\t// and encode it as base64.\n\t\ttag = yaml_BINARY_TAG\n\t\ts = encodeBase64(s)\n\tcase tag == \"\":\n\t\t// Check to see if it would resolve to a specific\n\t\t// tag when encoded unquoted. If it doesn't,\n\t\t// there's no need to quote it.\n\t\trtag, _ := resolve(\"\", s)\n\t\tcanUsePlain = rtag == yaml_STR_TAG && !isBase60Float(s)\n\t}\n\t// Note: it's possible for user code to emit invalid YAML\n\t// if they explicitly specify a tag and a string containing\n\t// text that's incompatible with that tag.\n\tswitch {\n\tcase strings.Contains(s, \"\\n\"):\n\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\tcase canUsePlain:\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\tdefault:\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\te.emitScalar(s, \"\", tag, style)\n}\n\nfunc (e *encoder) boolv(tag string, in reflect.Value) {\n\tvar s string\n\tif in.Bool() {\n\t\ts = \"true\"\n\t} else {\n\t\ts = \"false\"\n\t}\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) intv(tag string, in reflect.Value) {\n\ts := strconv.FormatInt(in.Int(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) uintv(tag string, in reflect.Value) {\n\ts := strconv.FormatUint(in.Uint(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) timev(tag string, in reflect.Value) {\n\tt := in.Interface().(time.Time)\n\ts := t.Format(time.RFC3339Nano)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) floatv(tag string, in reflect.Value) {\n\t// Issue #352: When formatting, use the precision of the underlying value\n\tprecision := 64\n\tif in.Kind() == reflect.Float32 {\n\t\tprecision = 32\n\t}\n\n\ts := strconv.FormatFloat(in.Float(), 'g', -1, precision)\n\tswitch s {\n\tcase \"+Inf\":\n\t\ts = \".inf\"\n\tcase \"-Inf\":\n\t\ts = \"-.inf\"\n\tcase \"NaN\":\n\t\ts = \".nan\"\n\t}\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) nilv() {\n\te.emitScalar(\"null\", \"\", \"\", yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t) {\n\timplicit := tag == \"\"\n\te.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style))\n\te.emit()\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/parserc.go",
    "content": "package yaml\n\nimport (\n\t\"bytes\"\n)\n\n// The parser implements the following grammar:\n//\n// stream               ::= STREAM-START implicit_document? explicit_document* STREAM-END\n// implicit_document    ::= block_node DOCUMENT-END*\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n// block_node_or_indentless_sequence    ::=\n//                          ALIAS\n//                          | properties (block_content | indentless_block_sequence)?\n//                          | block_content\n//                          | indentless_block_sequence\n// block_node           ::= ALIAS\n//                          | properties block_content?\n//                          | block_content\n// flow_node            ::= ALIAS\n//                          | properties flow_content?\n//                          | flow_content\n// properties           ::= TAG ANCHOR? | ANCHOR TAG?\n// block_content        ::= block_collection | flow_collection | SCALAR\n// flow_content         ::= flow_collection | SCALAR\n// block_collection     ::= block_sequence | block_mapping\n// flow_collection      ::= flow_sequence | flow_mapping\n// block_sequence       ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END\n// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+\n// block_mapping        ::= BLOCK-MAPPING_START\n//                          ((KEY block_node_or_indentless_sequence?)?\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//                          BLOCK-END\n// flow_sequence        ::= FLOW-SEQUENCE-START\n//                          (flow_sequence_entry FLOW-ENTRY)*\n//                          flow_sequence_entry?\n//                          FLOW-SEQUENCE-END\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n// flow_mapping         ::= FLOW-MAPPING-START\n//                          (flow_mapping_entry FLOW-ENTRY)*\n//                          flow_mapping_entry?\n//                          FLOW-MAPPING-END\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n\n// Peek the next token in the token queue.\nfunc peek_token(parser *yaml_parser_t) *yaml_token_t {\n\tif parser.token_available || yaml_parser_fetch_more_tokens(parser) {\n\t\treturn &parser.tokens[parser.tokens_head]\n\t}\n\treturn nil\n}\n\n// Remove the next token from the queue (must be called after peek_token).\nfunc skip_token(parser *yaml_parser_t) {\n\tparser.token_available = false\n\tparser.tokens_parsed++\n\tparser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN\n\tparser.tokens_head++\n}\n\n// Get the next event.\nfunc yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool {\n\t// Erase the event object.\n\t*event = yaml_event_t{}\n\n\t// No events after the end of the stream or error.\n\tif parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE {\n\t\treturn true\n\t}\n\n\t// Generate the next event.\n\treturn yaml_parser_state_machine(parser, event)\n}\n\n// Set parser error.\nfunc yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool {\n\tparser.error = yaml_PARSER_ERROR\n\tparser.problem = problem\n\tparser.problem_mark = problem_mark\n\treturn false\n}\n\nfunc yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool {\n\tparser.error = yaml_PARSER_ERROR\n\tparser.context = context\n\tparser.context_mark = context_mark\n\tparser.problem = problem\n\tparser.problem_mark = problem_mark\n\treturn false\n}\n\n// State dispatcher.\nfunc yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool {\n\t//trace(\"yaml_parser_state_machine\", \"state:\", parser.state.String())\n\n\tswitch parser.state {\n\tcase yaml_PARSE_STREAM_START_STATE:\n\t\treturn yaml_parser_parse_stream_start(parser, event)\n\n\tcase yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:\n\t\treturn yaml_parser_parse_document_start(parser, event, true)\n\n\tcase yaml_PARSE_DOCUMENT_START_STATE:\n\t\treturn yaml_parser_parse_document_start(parser, event, false)\n\n\tcase yaml_PARSE_DOCUMENT_CONTENT_STATE:\n\t\treturn yaml_parser_parse_document_content(parser, event)\n\n\tcase yaml_PARSE_DOCUMENT_END_STATE:\n\t\treturn yaml_parser_parse_document_end(parser, event)\n\n\tcase yaml_PARSE_BLOCK_NODE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\n\tcase yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\n\tcase yaml_PARSE_FLOW_NODE_STATE:\n\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\n\tcase yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn yaml_parser_parse_block_sequence_entry(parser, event, true)\n\n\tcase yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_block_sequence_entry(parser, event, false)\n\n\tcase yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_indentless_sequence_entry(parser, event)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_parser_parse_block_mapping_key(parser, event, true)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_block_mapping_key(parser, event, false)\n\n\tcase yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_block_mapping_value(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry(parser, event, true)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event)\n\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:\n\t\treturn yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event)\n\n\tcase yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_key(parser, event, true)\n\n\tcase yaml_PARSE_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_key(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_MAPPING_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_value(parser, event, false)\n\n\tcase yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:\n\t\treturn yaml_parser_parse_flow_mapping_value(parser, event, true)\n\n\tdefault:\n\t\tpanic(\"invalid parser state\")\n\t}\n}\n\n// Parse the production:\n// stream   ::= STREAM-START implicit_document? explicit_document* STREAM-END\n//              ************\nfunc yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_STREAM_START_TOKEN {\n\t\treturn yaml_parser_set_parser_error(parser, \"did not find expected <stream-start>\", token.start_mark)\n\t}\n\tparser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_STREAM_START_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t\tencoding:   token.encoding,\n\t}\n\tskip_token(parser)\n\treturn true\n}\n\n// Parse the productions:\n// implicit_document    ::= block_node DOCUMENT-END*\n//                          *\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//                          *************************\nfunc yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool {\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\t// Parse extra document end indicators.\n\tif !implicit {\n\t\tfor token.typ == yaml_DOCUMENT_END_TOKEN {\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\tif implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN &&\n\t\ttoken.typ != yaml_TAG_DIRECTIVE_TOKEN &&\n\t\ttoken.typ != yaml_DOCUMENT_START_TOKEN &&\n\t\ttoken.typ != yaml_STREAM_END_TOKEN {\n\t\t// Parse an implicit document.\n\t\tif !yaml_parser_process_directives(parser, nil, nil) {\n\t\t\treturn false\n\t\t}\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_BLOCK_NODE_STATE\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_DOCUMENT_START_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\n\t} else if token.typ != yaml_STREAM_END_TOKEN {\n\t\t// Parse an explicit document.\n\t\tvar version_directive *yaml_version_directive_t\n\t\tvar tag_directives []yaml_tag_directive_t\n\t\tstart_mark := token.start_mark\n\t\tif !yaml_parser_process_directives(parser, &version_directive, &tag_directives) {\n\t\t\treturn false\n\t\t}\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_DOCUMENT_START_TOKEN {\n\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\"did not find expected <document start>\", token.start_mark)\n\t\t\treturn false\n\t\t}\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE\n\t\tend_mark := token.end_mark\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:               yaml_DOCUMENT_START_EVENT,\n\t\t\tstart_mark:        start_mark,\n\t\t\tend_mark:          end_mark,\n\t\t\tversion_directive: version_directive,\n\t\t\ttag_directives:    tag_directives,\n\t\t\timplicit:          false,\n\t\t}\n\t\tskip_token(parser)\n\n\t} else {\n\t\t// Parse the stream end.\n\t\tparser.state = yaml_PARSE_END_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_STREAM_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\t\tskip_token(parser)\n\t}\n\n\treturn true\n}\n\n// Parse the productions:\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//                                                    ***********\n//\nfunc yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VERSION_DIRECTIVE_TOKEN ||\n\t\ttoken.typ == yaml_TAG_DIRECTIVE_TOKEN ||\n\t\ttoken.typ == yaml_DOCUMENT_START_TOKEN ||\n\t\ttoken.typ == yaml_DOCUMENT_END_TOKEN ||\n\t\ttoken.typ == yaml_STREAM_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\treturn yaml_parser_process_empty_scalar(parser, event,\n\t\t\ttoken.start_mark)\n\t}\n\treturn yaml_parser_parse_node(parser, event, true, false)\n}\n\n// Parse the productions:\n// implicit_document    ::= block_node DOCUMENT-END*\n//                                     *************\n// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n//\nfunc yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tstart_mark := token.start_mark\n\tend_mark := token.start_mark\n\n\timplicit := true\n\tif token.typ == yaml_DOCUMENT_END_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\timplicit = false\n\t}\n\n\tparser.tag_directives = parser.tag_directives[:0]\n\n\tparser.state = yaml_PARSE_DOCUMENT_START_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_DOCUMENT_END_EVENT,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\timplicit:   implicit,\n\t}\n\treturn true\n}\n\n// Parse the productions:\n// block_node_or_indentless_sequence    ::=\n//                          ALIAS\n//                          *****\n//                          | properties (block_content | indentless_block_sequence)?\n//                            **********  *\n//                          | block_content | indentless_block_sequence\n//                            *\n// block_node           ::= ALIAS\n//                          *****\n//                          | properties block_content?\n//                            ********** *\n//                          | block_content\n//                            *\n// flow_node            ::= ALIAS\n//                          *****\n//                          | properties flow_content?\n//                            ********** *\n//                          | flow_content\n//                            *\n// properties           ::= TAG ANCHOR? | ANCHOR TAG?\n//                          *************************\n// block_content        ::= block_collection | flow_collection | SCALAR\n//                                                               ******\n// flow_content         ::= flow_collection | SCALAR\n//                                            ******\nfunc yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool {\n\t//defer trace(\"yaml_parser_parse_node\", \"block:\", block, \"indentless_sequence:\", indentless_sequence)()\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_ALIAS_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_ALIAS_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t\tanchor:     token.value,\n\t\t}\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tstart_mark := token.start_mark\n\tend_mark := token.start_mark\n\n\tvar tag_token bool\n\tvar tag_handle, tag_suffix, anchor []byte\n\tvar tag_mark yaml_mark_t\n\tif token.typ == yaml_ANCHOR_TOKEN {\n\t\tanchor = token.value\n\t\tstart_mark = token.start_mark\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ == yaml_TAG_TOKEN {\n\t\t\ttag_token = true\n\t\t\ttag_handle = token.value\n\t\t\ttag_suffix = token.suffix\n\t\t\ttag_mark = token.start_mark\n\t\t\tend_mark = token.end_mark\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t} else if token.typ == yaml_TAG_TOKEN {\n\t\ttag_token = true\n\t\ttag_handle = token.value\n\t\ttag_suffix = token.suffix\n\t\tstart_mark = token.start_mark\n\t\ttag_mark = token.start_mark\n\t\tend_mark = token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ == yaml_ANCHOR_TOKEN {\n\t\t\tanchor = token.value\n\t\t\tend_mark = token.end_mark\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\tvar tag []byte\n\tif tag_token {\n\t\tif len(tag_handle) == 0 {\n\t\t\ttag = tag_suffix\n\t\t\ttag_suffix = nil\n\t\t} else {\n\t\t\tfor i := range parser.tag_directives {\n\t\t\t\tif bytes.Equal(parser.tag_directives[i].handle, tag_handle) {\n\t\t\t\t\ttag = append([]byte(nil), parser.tag_directives[i].prefix...)\n\t\t\t\t\ttag = append(tag, tag_suffix...)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif len(tag) == 0 {\n\t\t\t\tyaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a node\", start_mark,\n\t\t\t\t\t\"found undefined tag handle\", tag_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\timplicit := len(tag) == 0\n\tif indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif token.typ == yaml_SCALAR_TOKEN {\n\t\tvar plain_implicit, quoted_implicit bool\n\t\tend_mark = token.end_mark\n\t\tif (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') {\n\t\t\tplain_implicit = true\n\t\t} else if len(tag) == 0 {\n\t\t\tquoted_implicit = true\n\t\t}\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:             yaml_SCALAR_EVENT,\n\t\t\tstart_mark:      start_mark,\n\t\t\tend_mark:        end_mark,\n\t\t\tanchor:          anchor,\n\t\t\ttag:             tag,\n\t\t\tvalue:           token.value,\n\t\t\timplicit:        plain_implicit,\n\t\t\tquoted_implicit: quoted_implicit,\n\t\t\tstyle:           yaml_style_t(token.style),\n\t\t}\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\tif token.typ == yaml_FLOW_SEQUENCE_START_TOKEN {\n\t\t// [Go] Some of the events below can be merged as they differ only on style.\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_FLOW_SEQUENCE_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif token.typ == yaml_FLOW_MAPPING_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN {\n\t\tend_mark = token.end_mark\n\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tanchor:     anchor,\n\t\t\ttag:        tag,\n\t\t\timplicit:   implicit,\n\t\t\tstyle:      yaml_style_t(yaml_BLOCK_MAPPING_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\tif len(anchor) > 0 || len(tag) > 0 {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:             yaml_SCALAR_EVENT,\n\t\t\tstart_mark:      start_mark,\n\t\t\tend_mark:        end_mark,\n\t\t\tanchor:          anchor,\n\t\t\ttag:             tag,\n\t\t\timplicit:        implicit,\n\t\t\tquoted_implicit: false,\n\t\t\tstyle:           yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t\t}\n\t\treturn true\n\t}\n\n\tcontext := \"while parsing a flow node\"\n\tif block {\n\t\tcontext = \"while parsing a block node\"\n\t}\n\tyaml_parser_set_parser_error_context(parser, context, start_mark,\n\t\t\"did not find expected node content\", token.start_mark)\n\treturn false\n}\n\n// Parse the productions:\n// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END\n//                    ********************  *********** *             *********\n//\nfunc yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\t\t} else {\n\t\t\tparser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t}\n\tif token.typ == yaml_BLOCK_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tcontext_mark := parser.marks[len(parser.marks)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\"while parsing a block collection\", context_mark,\n\t\t\"did not find expected '-' indicator\", token.start_mark)\n}\n\n// Parse the productions:\n// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+\n//                           *********** *\nfunc yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_BLOCK_ENTRY_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_BLOCK_ENTRY_TOKEN &&\n\t\t\ttoken.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\t\t}\n\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t}\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.start_mark, // [Go] Shouldn't this be token.end_mark?\n\t}\n\treturn true\n}\n\n// Parse the productions:\n// block_mapping        ::= BLOCK-MAPPING_START\n//                          *******************\n//                          ((KEY block_node_or_indentless_sequence?)?\n//                            *** *\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//\n//                          BLOCK-END\n//                          *********\n//\nfunc yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ == yaml_KEY_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\t\t} else {\n\t\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t} else if token.typ == yaml_BLOCK_END_TOKEN {\n\t\tparser.state = parser.states[len(parser.states)-1]\n\t\tparser.states = parser.states[:len(parser.states)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t*event = yaml_event_t{\n\t\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\t\tskip_token(parser)\n\t\treturn true\n\t}\n\n\tcontext_mark := parser.marks[len(parser.marks)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\"while parsing a block mapping\", context_mark,\n\t\t\"did not find expected key\", token.start_mark)\n}\n\n// Parse the productions:\n// block_mapping        ::= BLOCK-MAPPING_START\n//\n//                          ((KEY block_node_or_indentless_sequence?)?\n//\n//                          (VALUE block_node_or_indentless_sequence?)?)*\n//                           ***** *\n//                          BLOCK-END\n//\n//\nfunc yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_KEY_TOKEN &&\n\t\t\ttoken.typ != yaml_VALUE_TOKEN &&\n\t\t\ttoken.typ != yaml_BLOCK_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, true, true)\n\t\t}\n\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t}\n\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Parse the productions:\n// flow_sequence        ::= FLOW-SEQUENCE-START\n//                          *******************\n//                          (flow_sequence_entry FLOW-ENTRY)*\n//                           *                   **********\n//                          flow_sequence_entry?\n//                          *\n//                          FLOW-SEQUENCE-END\n//                          *****************\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                          *\n//\nfunc yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.typ == yaml_FLOW_ENTRY_TOKEN {\n\t\t\t\tskip_token(parser)\n\t\t\t\ttoken = peek_token(parser)\n\t\t\t\tif token == nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontext_mark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow sequence\", context_mark,\n\t\t\t\t\t\"did not find expected ',' or ']'\", token.start_mark)\n\t\t\t}\n\t\t}\n\n\t\tif token.typ == yaml_KEY_TOKEN {\n\t\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE\n\t\t\t*event = yaml_event_t{\n\t\t\t\ttyp:        yaml_MAPPING_START_EVENT,\n\t\t\t\tstart_mark: token.start_mark,\n\t\t\t\tend_mark:   token.end_mark,\n\t\t\t\timplicit:   true,\n\t\t\t\tstyle:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),\n\t\t\t}\n\t\t\tskip_token(parser)\n\t\t\treturn true\n\t\t} else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SEQUENCE_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\n\n\tskip_token(parser)\n\treturn true\n}\n\n//\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                      *** *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ != yaml_VALUE_TOKEN &&\n\t\ttoken.typ != yaml_FLOW_ENTRY_TOKEN &&\n\t\ttoken.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE)\n\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t}\n\tmark := token.end_mark\n\tskip_token(parser)\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n}\n\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                                      ***** *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tskip_token(parser)\n\t\ttoken := peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Parse the productions:\n// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                                                      *\n//\nfunc yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.start_mark, // [Go] Shouldn't this be end_mark?\n\t}\n\treturn true\n}\n\n// Parse the productions:\n// flow_mapping         ::= FLOW-MAPPING-START\n//                          ******************\n//                          (flow_mapping_entry FLOW-ENTRY)*\n//                           *                  **********\n//                          flow_mapping_entry?\n//                          ******************\n//                          FLOW-MAPPING-END\n//                          ****************\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                          *           *** *\n//\nfunc yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {\n\tif first {\n\t\ttoken := peek_token(parser)\n\t\tparser.marks = append(parser.marks, token.start_mark)\n\t\tskip_token(parser)\n\t}\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.typ == yaml_FLOW_ENTRY_TOKEN {\n\t\t\t\tskip_token(parser)\n\t\t\t\ttoken = peek_token(parser)\n\t\t\t\tif token == nil {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontext_mark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow mapping\", context_mark,\n\t\t\t\t\t\"did not find expected ',' or '}'\", token.start_mark)\n\t\t\t}\n\t\t}\n\n\t\tif token.typ == yaml_KEY_TOKEN {\n\t\t\tskip_token(parser)\n\t\t\ttoken = peek_token(parser)\n\t\t\tif token == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif token.typ != yaml_VALUE_TOKEN &&\n\t\t\t\ttoken.typ != yaml_FLOW_ENTRY_TOKEN &&\n\t\t\t\ttoken.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE)\n\t\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t\t} else {\n\t\t\t\tparser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE\n\t\t\t\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n\t\t\t}\n\t\t} else if token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\n\tparser.state = parser.states[len(parser.states)-1]\n\tparser.states = parser.states[:len(parser.states)-1]\n\tparser.marks = parser.marks[:len(parser.marks)-1]\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\n\tskip_token(parser)\n\treturn true\n}\n\n// Parse the productions:\n// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n//                                   *                  ***** *\n//\nfunc yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\tif empty {\n\t\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n\t}\n\tif token.typ == yaml_VALUE_TOKEN {\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t\tif token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN {\n\t\t\tparser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE)\n\t\t\treturn yaml_parser_parse_node(parser, event, false, false)\n\t\t}\n\t}\n\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n// Generate an empty scalar event.\nfunc yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp:        yaml_SCALAR_EVENT,\n\t\tstart_mark: mark,\n\t\tend_mark:   mark,\n\t\tvalue:      nil, // Empty\n\t\timplicit:   true,\n\t\tstyle:      yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t}\n\treturn true\n}\n\nvar default_tag_directives = []yaml_tag_directive_t{\n\t{[]byte(\"!\"), []byte(\"!\")},\n\t{[]byte(\"!!\"), []byte(\"tag:yaml.org,2002:\")},\n}\n\n// Parse directives.\nfunc yaml_parser_process_directives(parser *yaml_parser_t,\n\tversion_directive_ref **yaml_version_directive_t,\n\ttag_directives_ref *[]yaml_tag_directive_t) bool {\n\n\tvar version_directive *yaml_version_directive_t\n\tvar tag_directives []yaml_tag_directive_t\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tfor token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN {\n\t\tif token.typ == yaml_VERSION_DIRECTIVE_TOKEN {\n\t\t\tif version_directive != nil {\n\t\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\t\"found duplicate %YAML directive\", token.start_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif token.major != 1 || token.minor != 1 {\n\t\t\t\tyaml_parser_set_parser_error(parser,\n\t\t\t\t\t\"found incompatible YAML document\", token.start_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tversion_directive = &yaml_version_directive_t{\n\t\t\t\tmajor: token.major,\n\t\t\t\tminor: token.minor,\n\t\t\t}\n\t\t} else if token.typ == yaml_TAG_DIRECTIVE_TOKEN {\n\t\t\tvalue := yaml_tag_directive_t{\n\t\t\t\thandle: token.value,\n\t\t\t\tprefix: token.prefix,\n\t\t\t}\n\t\t\tif !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\ttag_directives = append(tag_directives, value)\n\t\t}\n\n\t\tskip_token(parser)\n\t\ttoken = peek_token(parser)\n\t\tif token == nil {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tfor i := range default_tag_directives {\n\t\tif !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif version_directive_ref != nil {\n\t\t*version_directive_ref = version_directive\n\t}\n\tif tag_directives_ref != nil {\n\t\t*tag_directives_ref = tag_directives\n\t}\n\treturn true\n}\n\n// Append a tag directive to the directives stack.\nfunc yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool {\n\tfor i := range parser.tag_directives {\n\t\tif bytes.Equal(value.handle, parser.tag_directives[i].handle) {\n\t\t\tif allow_duplicates {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn yaml_parser_set_parser_error(parser, \"found duplicate %TAG directive\", mark)\n\t\t}\n\t}\n\n\t// [Go] I suspect the copy is unnecessary. This was likely done\n\t// because there was no way to track ownership of the data.\n\tvalue_copy := yaml_tag_directive_t{\n\t\thandle: make([]byte, len(value.handle)),\n\t\tprefix: make([]byte, len(value.prefix)),\n\t}\n\tcopy(value_copy.handle, value.handle)\n\tcopy(value_copy.prefix, value.prefix)\n\tparser.tag_directives = append(parser.tag_directives, value_copy)\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/readerc.go",
    "content": "package yaml\n\nimport (\n\t\"io\"\n)\n\n// Set the reader error and return 0.\nfunc yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool {\n\tparser.error = yaml_READER_ERROR\n\tparser.problem = problem\n\tparser.problem_offset = offset\n\tparser.problem_value = value\n\treturn false\n}\n\n// Byte order marks.\nconst (\n\tbom_UTF8    = \"\\xef\\xbb\\xbf\"\n\tbom_UTF16LE = \"\\xff\\xfe\"\n\tbom_UTF16BE = \"\\xfe\\xff\"\n)\n\n// Determine the input stream encoding by checking the BOM symbol. If no BOM is\n// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure.\nfunc yaml_parser_determine_encoding(parser *yaml_parser_t) bool {\n\t// Ensure that we had enough bytes in the raw buffer.\n\tfor !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 {\n\t\tif !yaml_parser_update_raw_buffer(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Determine the encoding.\n\tbuf := parser.raw_buffer\n\tpos := parser.raw_buffer_pos\n\tavail := len(buf) - pos\n\tif avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] {\n\t\tparser.encoding = yaml_UTF16LE_ENCODING\n\t\tparser.raw_buffer_pos += 2\n\t\tparser.offset += 2\n\t} else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] {\n\t\tparser.encoding = yaml_UTF16BE_ENCODING\n\t\tparser.raw_buffer_pos += 2\n\t\tparser.offset += 2\n\t} else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] {\n\t\tparser.encoding = yaml_UTF8_ENCODING\n\t\tparser.raw_buffer_pos += 3\n\t\tparser.offset += 3\n\t} else {\n\t\tparser.encoding = yaml_UTF8_ENCODING\n\t}\n\treturn true\n}\n\n// Update the raw buffer.\nfunc yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool {\n\tsize_read := 0\n\n\t// Return if the raw buffer is full.\n\tif parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) {\n\t\treturn true\n\t}\n\n\t// Return on EOF.\n\tif parser.eof {\n\t\treturn true\n\t}\n\n\t// Move the remaining bytes in the raw buffer to the beginning.\n\tif parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) {\n\t\tcopy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:])\n\t}\n\tparser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos]\n\tparser.raw_buffer_pos = 0\n\n\t// Call the read handler to fill the buffer.\n\tsize_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)])\n\tparser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read]\n\tif err == io.EOF {\n\t\tparser.eof = true\n\t} else if err != nil {\n\t\treturn yaml_parser_set_reader_error(parser, \"input error: \"+err.Error(), parser.offset, -1)\n\t}\n\treturn true\n}\n\n// Ensure that the buffer contains at least `length` characters.\n// Return true on success, false on failure.\n//\n// The length is supposed to be significantly less that the buffer size.\nfunc yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool {\n\tif parser.read_handler == nil {\n\t\tpanic(\"read handler must be set\")\n\t}\n\n\t// [Go] This function was changed to guarantee the requested length size at EOF.\n\t// The fact we need to do this is pretty awful, but the description above implies\n\t// for that to be the case, and there are tests \n\n\t// If the EOF flag is set and the raw buffer is empty, do nothing.\n\tif parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) {\n\t\t// [Go] ACTUALLY! Read the documentation of this function above.\n\t\t// This is just broken. To return true, we need to have the\n\t\t// given length in the buffer. Not doing that means every single\n\t\t// check that calls this function to make sure the buffer has a\n\t\t// given length is Go) panicking; or C) accessing invalid memory.\n\t\t//return true\n\t}\n\n\t// Return if the buffer contains enough characters.\n\tif parser.unread >= length {\n\t\treturn true\n\t}\n\n\t// Determine the input encoding if it is not known yet.\n\tif parser.encoding == yaml_ANY_ENCODING {\n\t\tif !yaml_parser_determine_encoding(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Move the unread characters to the beginning of the buffer.\n\tbuffer_len := len(parser.buffer)\n\tif parser.buffer_pos > 0 && parser.buffer_pos < buffer_len {\n\t\tcopy(parser.buffer, parser.buffer[parser.buffer_pos:])\n\t\tbuffer_len -= parser.buffer_pos\n\t\tparser.buffer_pos = 0\n\t} else if parser.buffer_pos == buffer_len {\n\t\tbuffer_len = 0\n\t\tparser.buffer_pos = 0\n\t}\n\n\t// Open the whole buffer for writing, and cut it before returning.\n\tparser.buffer = parser.buffer[:cap(parser.buffer)]\n\n\t// Fill the buffer until it has enough characters.\n\tfirst := true\n\tfor parser.unread < length {\n\n\t\t// Fill the raw buffer if necessary.\n\t\tif !first || parser.raw_buffer_pos == len(parser.raw_buffer) {\n\t\t\tif !yaml_parser_update_raw_buffer(parser) {\n\t\t\t\tparser.buffer = parser.buffer[:buffer_len]\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tfirst = false\n\n\t\t// Decode the raw buffer.\n\tinner:\n\t\tfor parser.raw_buffer_pos != len(parser.raw_buffer) {\n\t\t\tvar value rune\n\t\t\tvar width int\n\n\t\t\traw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos\n\n\t\t\t// Decode the next character.\n\t\t\tswitch parser.encoding {\n\t\t\tcase yaml_UTF8_ENCODING:\n\t\t\t\t// Decode a UTF-8 character.  Check RFC 3629\n\t\t\t\t// (http://www.ietf.org/rfc/rfc3629.txt) for more details.\n\t\t\t\t//\n\t\t\t\t// The following table (taken from the RFC) is used for\n\t\t\t\t// decoding.\n\t\t\t\t//\n\t\t\t\t//    Char. number range |        UTF-8 octet sequence\n\t\t\t\t//      (hexadecimal)    |              (binary)\n\t\t\t\t//   --------------------+------------------------------------\n\t\t\t\t//   0000 0000-0000 007F | 0xxxxxxx\n\t\t\t\t//   0000 0080-0000 07FF | 110xxxxx 10xxxxxx\n\t\t\t\t//   0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\t//   0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\t//\n\t\t\t\t// Additionally, the characters in the range 0xD800-0xDFFF\n\t\t\t\t// are prohibited as they are reserved for use with UTF-16\n\t\t\t\t// surrogate pairs.\n\n\t\t\t\t// Determine the length of the UTF-8 sequence.\n\t\t\t\toctet := parser.raw_buffer[parser.raw_buffer_pos]\n\t\t\t\tswitch {\n\t\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\t\twidth = 1\n\t\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\t\twidth = 2\n\t\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\t\twidth = 3\n\t\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\t\twidth = 4\n\t\t\t\tdefault:\n\t\t\t\t\t// The leading octet is invalid.\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid leading UTF-8 octet\",\n\t\t\t\t\t\tparser.offset, int(octet))\n\t\t\t\t}\n\n\t\t\t\t// Check if the raw buffer contains an incomplete character.\n\t\t\t\tif width > raw_unread {\n\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"incomplete UTF-8 octet sequence\",\n\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t}\n\t\t\t\t\tbreak inner\n\t\t\t\t}\n\n\t\t\t\t// Decode the leading octet.\n\t\t\t\tswitch {\n\t\t\t\tcase octet&0x80 == 0x00:\n\t\t\t\t\tvalue = rune(octet & 0x7F)\n\t\t\t\tcase octet&0xE0 == 0xC0:\n\t\t\t\t\tvalue = rune(octet & 0x1F)\n\t\t\t\tcase octet&0xF0 == 0xE0:\n\t\t\t\t\tvalue = rune(octet & 0x0F)\n\t\t\t\tcase octet&0xF8 == 0xF0:\n\t\t\t\t\tvalue = rune(octet & 0x07)\n\t\t\t\tdefault:\n\t\t\t\t\tvalue = 0\n\t\t\t\t}\n\n\t\t\t\t// Check and decode the trailing octets.\n\t\t\t\tfor k := 1; k < width; k++ {\n\t\t\t\t\toctet = parser.raw_buffer[parser.raw_buffer_pos+k]\n\n\t\t\t\t\t// Check if the octet is valid.\n\t\t\t\t\tif (octet & 0xC0) != 0x80 {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"invalid trailing UTF-8 octet\",\n\t\t\t\t\t\t\tparser.offset+k, int(octet))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Decode the octet.\n\t\t\t\t\tvalue = (value << 6) + rune(octet&0x3F)\n\t\t\t\t}\n\n\t\t\t\t// Check the length of the sequence against the value.\n\t\t\t\tswitch {\n\t\t\t\tcase width == 1:\n\t\t\t\tcase width == 2 && value >= 0x80:\n\t\t\t\tcase width == 3 && value >= 0x800:\n\t\t\t\tcase width == 4 && value >= 0x10000:\n\t\t\t\tdefault:\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid length of a UTF-8 sequence\",\n\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t}\n\n\t\t\t\t// Check the range of the value.\n\t\t\t\tif value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF {\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"invalid Unicode character\",\n\t\t\t\t\t\tparser.offset, int(value))\n\t\t\t\t}\n\n\t\t\tcase yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING:\n\t\t\t\tvar low, high int\n\t\t\t\tif parser.encoding == yaml_UTF16LE_ENCODING {\n\t\t\t\t\tlow, high = 0, 1\n\t\t\t\t} else {\n\t\t\t\t\tlow, high = 1, 0\n\t\t\t\t}\n\n\t\t\t\t// The UTF-16 encoding is not as simple as one might\n\t\t\t\t// naively think.  Check RFC 2781\n\t\t\t\t// (http://www.ietf.org/rfc/rfc2781.txt).\n\t\t\t\t//\n\t\t\t\t// Normally, two subsequent bytes describe a Unicode\n\t\t\t\t// character.  However a special technique (called a\n\t\t\t\t// surrogate pair) is used for specifying character\n\t\t\t\t// values larger than 0xFFFF.\n\t\t\t\t//\n\t\t\t\t// A surrogate pair consists of two pseudo-characters:\n\t\t\t\t//      high surrogate area (0xD800-0xDBFF)\n\t\t\t\t//      low surrogate area (0xDC00-0xDFFF)\n\t\t\t\t//\n\t\t\t\t// The following formulas are used for decoding\n\t\t\t\t// and encoding characters using surrogate pairs:\n\t\t\t\t//\n\t\t\t\t//  U  = U' + 0x10000   (0x01 00 00 <= U <= 0x10 FF FF)\n\t\t\t\t//  U' = yyyyyyyyyyxxxxxxxxxx   (0 <= U' <= 0x0F FF FF)\n\t\t\t\t//  W1 = 110110yyyyyyyyyy\n\t\t\t\t//  W2 = 110111xxxxxxxxxx\n\t\t\t\t//\n\t\t\t\t// where U is the character value, W1 is the high surrogate\n\t\t\t\t// area, W2 is the low surrogate area.\n\n\t\t\t\t// Check for incomplete UTF-16 character.\n\t\t\t\tif raw_unread < 2 {\n\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"incomplete UTF-16 character\",\n\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t}\n\t\t\t\t\tbreak inner\n\t\t\t\t}\n\n\t\t\t\t// Get the character.\n\t\t\t\tvalue = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) +\n\t\t\t\t\t(rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8)\n\n\t\t\t\t// Check for unexpected low surrogate area.\n\t\t\t\tif value&0xFC00 == 0xDC00 {\n\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\"unexpected low surrogate area\",\n\t\t\t\t\t\tparser.offset, int(value))\n\t\t\t\t}\n\n\t\t\t\t// Check for a high surrogate area.\n\t\t\t\tif value&0xFC00 == 0xD800 {\n\t\t\t\t\twidth = 4\n\n\t\t\t\t\t// Check for incomplete surrogate pair.\n\t\t\t\t\tif raw_unread < 4 {\n\t\t\t\t\t\tif parser.eof {\n\t\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\t\"incomplete UTF-16 surrogate pair\",\n\t\t\t\t\t\t\t\tparser.offset, -1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak inner\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get the next character.\n\t\t\t\t\tvalue2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) +\n\t\t\t\t\t\t(rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8)\n\n\t\t\t\t\t// Check for a low surrogate area.\n\t\t\t\t\tif value2&0xFC00 != 0xDC00 {\n\t\t\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\t\t\"expected low surrogate area\",\n\t\t\t\t\t\t\tparser.offset+2, int(value2))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Generate the value of the surrogate pair.\n\t\t\t\t\tvalue = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF)\n\t\t\t\t} else {\n\t\t\t\t\twidth = 2\n\t\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tpanic(\"impossible\")\n\t\t\t}\n\n\t\t\t// Check if the character is in the allowed range:\n\t\t\t//      #x9 | #xA | #xD | [#x20-#x7E]               (8 bit)\n\t\t\t//      | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD]    (16 bit)\n\t\t\t//      | [#x10000-#x10FFFF]                        (32 bit)\n\t\t\tswitch {\n\t\t\tcase value == 0x09:\n\t\t\tcase value == 0x0A:\n\t\t\tcase value == 0x0D:\n\t\t\tcase value >= 0x20 && value <= 0x7E:\n\t\t\tcase value == 0x85:\n\t\t\tcase value >= 0xA0 && value <= 0xD7FF:\n\t\t\tcase value >= 0xE000 && value <= 0xFFFD:\n\t\t\tcase value >= 0x10000 && value <= 0x10FFFF:\n\t\t\tdefault:\n\t\t\t\treturn yaml_parser_set_reader_error(parser,\n\t\t\t\t\t\"control characters are not allowed\",\n\t\t\t\t\tparser.offset, int(value))\n\t\t\t}\n\n\t\t\t// Move the raw pointers.\n\t\t\tparser.raw_buffer_pos += width\n\t\t\tparser.offset += width\n\n\t\t\t// Finally put the character into the buffer.\n\t\t\tif value <= 0x7F {\n\t\t\t\t// 0000 0000-0000 007F . 0xxxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(value)\n\t\t\t\tbuffer_len += 1\n\t\t\t} else if value <= 0x7FF {\n\t\t\t\t// 0000 0080-0000 07FF . 110xxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 2\n\t\t\t} else if value <= 0xFFFF {\n\t\t\t\t// 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 3\n\t\t\t} else {\n\t\t\t\t// 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\tparser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18))\n\t\t\t\tparser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F))\n\t\t\t\tbuffer_len += 4\n\t\t\t}\n\n\t\t\tparser.unread++\n\t\t}\n\n\t\t// On EOF, put NUL into the buffer and return.\n\t\tif parser.eof {\n\t\t\tparser.buffer[buffer_len] = 0\n\t\t\tbuffer_len++\n\t\t\tparser.unread++\n\t\t\tbreak\n\t\t}\n\t}\n\t// [Go] Read the documentation of this function above. To return true,\n\t// we need to have the given length in the buffer. Not doing that means\n\t// every single check that calls this function to make sure the buffer\n\t// has a given length is Go) panicking; or C) accessing invalid memory.\n\t// This happens here due to the EOF above breaking early.\n\tfor buffer_len < length {\n\t\tparser.buffer[buffer_len] = 0\n\t\tbuffer_len++\n\t}\n\tparser.buffer = parser.buffer[:buffer_len]\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/resolve.go",
    "content": "package yaml\n\nimport (\n\t\"encoding/base64\"\n\t\"math\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype resolveMapItem struct {\n\tvalue interface{}\n\ttag   string\n}\n\nvar resolveTable = make([]byte, 256)\nvar resolveMap = make(map[string]resolveMapItem)\n\nfunc init() {\n\tt := resolveTable\n\tt[int('+')] = 'S' // Sign\n\tt[int('-')] = 'S'\n\tfor _, c := range \"0123456789\" {\n\t\tt[int(c)] = 'D' // Digit\n\t}\n\tfor _, c := range \"yYnNtTfFoO~\" {\n\t\tt[int(c)] = 'M' // In map\n\t}\n\tt[int('.')] = '.' // Float (potentially in map)\n\n\tvar resolveMapList = []struct {\n\t\tv   interface{}\n\t\ttag string\n\t\tl   []string\n\t}{\n\t\t{true, yaml_BOOL_TAG, []string{\"y\", \"Y\", \"yes\", \"Yes\", \"YES\"}},\n\t\t{true, yaml_BOOL_TAG, []string{\"true\", \"True\", \"TRUE\"}},\n\t\t{true, yaml_BOOL_TAG, []string{\"on\", \"On\", \"ON\"}},\n\t\t{false, yaml_BOOL_TAG, []string{\"n\", \"N\", \"no\", \"No\", \"NO\"}},\n\t\t{false, yaml_BOOL_TAG, []string{\"false\", \"False\", \"FALSE\"}},\n\t\t{false, yaml_BOOL_TAG, []string{\"off\", \"Off\", \"OFF\"}},\n\t\t{nil, yaml_NULL_TAG, []string{\"\", \"~\", \"null\", \"Null\", \"NULL\"}},\n\t\t{math.NaN(), yaml_FLOAT_TAG, []string{\".nan\", \".NaN\", \".NAN\"}},\n\t\t{math.Inf(+1), yaml_FLOAT_TAG, []string{\".inf\", \".Inf\", \".INF\"}},\n\t\t{math.Inf(+1), yaml_FLOAT_TAG, []string{\"+.inf\", \"+.Inf\", \"+.INF\"}},\n\t\t{math.Inf(-1), yaml_FLOAT_TAG, []string{\"-.inf\", \"-.Inf\", \"-.INF\"}},\n\t\t{\"<<\", yaml_MERGE_TAG, []string{\"<<\"}},\n\t}\n\n\tm := resolveMap\n\tfor _, item := range resolveMapList {\n\t\tfor _, s := range item.l {\n\t\t\tm[s] = resolveMapItem{item.v, item.tag}\n\t\t}\n\t}\n}\n\nconst longTagPrefix = \"tag:yaml.org,2002:\"\n\nfunc shortTag(tag string) string {\n\t// TODO This can easily be made faster and produce less garbage.\n\tif strings.HasPrefix(tag, longTagPrefix) {\n\t\treturn \"!!\" + tag[len(longTagPrefix):]\n\t}\n\treturn tag\n}\n\nfunc longTag(tag string) string {\n\tif strings.HasPrefix(tag, \"!!\") {\n\t\treturn longTagPrefix + tag[2:]\n\t}\n\treturn tag\n}\n\nfunc resolvableTag(tag string) bool {\n\tswitch tag {\n\tcase \"\", yaml_STR_TAG, yaml_BOOL_TAG, yaml_INT_TAG, yaml_FLOAT_TAG, yaml_NULL_TAG, yaml_TIMESTAMP_TAG:\n\t\treturn true\n\t}\n\treturn false\n}\n\nvar yamlStyleFloat = regexp.MustCompile(`^[-+]?(\\.[0-9]+|[0-9]+(\\.[0-9]*)?)([eE][-+]?[0-9]+)?$`)\n\nfunc resolve(tag string, in string) (rtag string, out interface{}) {\n\tif !resolvableTag(tag) {\n\t\treturn tag, in\n\t}\n\n\tdefer func() {\n\t\tswitch tag {\n\t\tcase \"\", rtag, yaml_STR_TAG, yaml_BINARY_TAG:\n\t\t\treturn\n\t\tcase yaml_FLOAT_TAG:\n\t\t\tif rtag == yaml_INT_TAG {\n\t\t\t\tswitch v := out.(type) {\n\t\t\t\tcase int64:\n\t\t\t\t\trtag = yaml_FLOAT_TAG\n\t\t\t\t\tout = float64(v)\n\t\t\t\t\treturn\n\t\t\t\tcase int:\n\t\t\t\t\trtag = yaml_FLOAT_TAG\n\t\t\t\t\tout = float64(v)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfailf(\"cannot decode %s `%s` as a %s\", shortTag(rtag), in, shortTag(tag))\n\t}()\n\n\t// Any data is accepted as a !!str or !!binary.\n\t// Otherwise, the prefix is enough of a hint about what it might be.\n\thint := byte('N')\n\tif in != \"\" {\n\t\thint = resolveTable[in[0]]\n\t}\n\tif hint != 0 && tag != yaml_STR_TAG && tag != yaml_BINARY_TAG {\n\t\t// Handle things we can lookup in a map.\n\t\tif item, ok := resolveMap[in]; ok {\n\t\t\treturn item.tag, item.value\n\t\t}\n\n\t\t// Base 60 floats are a bad idea, were dropped in YAML 1.2, and\n\t\t// are purposefully unsupported here. They're still quoted on\n\t\t// the way out for compatibility with other parser, though.\n\n\t\tswitch hint {\n\t\tcase 'M':\n\t\t\t// We've already checked the map above.\n\n\t\tcase '.':\n\t\t\t// Not in the map, so maybe a normal float.\n\t\t\tfloatv, err := strconv.ParseFloat(in, 64)\n\t\t\tif err == nil {\n\t\t\t\treturn yaml_FLOAT_TAG, floatv\n\t\t\t}\n\n\t\tcase 'D', 'S':\n\t\t\t// Int, float, or timestamp.\n\t\t\t// Only try values as a timestamp if the value is unquoted or there's an explicit\n\t\t\t// !!timestamp tag.\n\t\t\tif tag == \"\" || tag == yaml_TIMESTAMP_TAG {\n\t\t\t\tt, ok := parseTimestamp(in)\n\t\t\t\tif ok {\n\t\t\t\t\treturn yaml_TIMESTAMP_TAG, t\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplain := strings.Replace(in, \"_\", \"\", -1)\n\t\t\tintv, err := strconv.ParseInt(plain, 0, 64)\n\t\t\tif err == nil {\n\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\treturn yaml_INT_TAG, int(intv)\n\t\t\t\t} else {\n\t\t\t\t\treturn yaml_INT_TAG, intv\n\t\t\t\t}\n\t\t\t}\n\t\t\tuintv, err := strconv.ParseUint(plain, 0, 64)\n\t\t\tif err == nil {\n\t\t\t\treturn yaml_INT_TAG, uintv\n\t\t\t}\n\t\t\tif yamlStyleFloat.MatchString(plain) {\n\t\t\t\tfloatv, err := strconv.ParseFloat(plain, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn yaml_FLOAT_TAG, floatv\n\t\t\t\t}\n\t\t\t}\n\t\t\tif strings.HasPrefix(plain, \"0b\") {\n\t\t\t\tintv, err := strconv.ParseInt(plain[2:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif intv == int64(int(intv)) {\n\t\t\t\t\t\treturn yaml_INT_TAG, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn yaml_INT_TAG, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tuintv, err := strconv.ParseUint(plain[2:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\treturn yaml_INT_TAG, uintv\n\t\t\t\t}\n\t\t\t} else if strings.HasPrefix(plain, \"-0b\") {\n\t\t\t\tintv, err := strconv.ParseInt(\"-\" + plain[3:], 2, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tif true || intv == int64(int(intv)) {\n\t\t\t\t\t\treturn yaml_INT_TAG, int(intv)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn yaml_INT_TAG, intv\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(\"resolveTable item not yet handled: \" + string(rune(hint)) + \" (with \" + in + \")\")\n\t\t}\n\t}\n\treturn yaml_STR_TAG, in\n}\n\n// encodeBase64 encodes s as base64 that is broken up into multiple lines\n// as appropriate for the resulting length.\nfunc encodeBase64(s string) string {\n\tconst lineLen = 70\n\tencLen := base64.StdEncoding.EncodedLen(len(s))\n\tlines := encLen/lineLen + 1\n\tbuf := make([]byte, encLen*2+lines)\n\tin := buf[0:encLen]\n\tout := buf[encLen:]\n\tbase64.StdEncoding.Encode(in, []byte(s))\n\tk := 0\n\tfor i := 0; i < len(in); i += lineLen {\n\t\tj := i + lineLen\n\t\tif j > len(in) {\n\t\t\tj = len(in)\n\t\t}\n\t\tk += copy(out[k:], in[i:j])\n\t\tif lines > 1 {\n\t\t\tout[k] = '\\n'\n\t\t\tk++\n\t\t}\n\t}\n\treturn string(out[:k])\n}\n\n// This is a subset of the formats allowed by the regular expression\n// defined at http://yaml.org/type/timestamp.html.\nvar allowedTimestampFormats = []string{\n\t\"2006-1-2T15:4:5.999999999Z07:00\", // RCF3339Nano with short date fields.\n\t\"2006-1-2t15:4:5.999999999Z07:00\", // RFC3339Nano with short date fields and lower-case \"t\".\n\t\"2006-1-2 15:4:5.999999999\",       // space separated with no time zone\n\t\"2006-1-2\",                        // date only\n\t// Notable exception: time.Parse cannot handle: \"2001-12-14 21:59:43.10 -5\"\n\t// from the set of examples.\n}\n\n// parseTimestamp parses s as a timestamp string and\n// returns the timestamp and reports whether it succeeded.\n// Timestamp formats are defined at http://yaml.org/type/timestamp.html\nfunc parseTimestamp(s string) (time.Time, bool) {\n\t// TODO write code to check all the formats supported by\n\t// http://yaml.org/type/timestamp.html instead of using time.Parse.\n\n\t// Quick check: all date formats start with YYYY-.\n\ti := 0\n\tfor ; i < len(s); i++ {\n\t\tif c := s[i]; c < '0' || c > '9' {\n\t\t\tbreak\n\t\t}\n\t}\n\tif i != 4 || i == len(s) || s[i] != '-' {\n\t\treturn time.Time{}, false\n\t}\n\tfor _, format := range allowedTimestampFormats {\n\t\tif t, err := time.Parse(format, s); err == nil {\n\t\t\treturn t, true\n\t\t}\n\t}\n\treturn time.Time{}, false\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/scannerc.go",
    "content": "package yaml\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// Introduction\n// ************\n//\n// The following notes assume that you are familiar with the YAML specification\n// (http://yaml.org/spec/1.2/spec.html).  We mostly follow it, although in\n// some cases we are less restrictive that it requires.\n//\n// The process of transforming a YAML stream into a sequence of events is\n// divided on two steps: Scanning and Parsing.\n//\n// The Scanner transforms the input stream into a sequence of tokens, while the\n// parser transform the sequence of tokens produced by the Scanner into a\n// sequence of parsing events.\n//\n// The Scanner is rather clever and complicated. The Parser, on the contrary,\n// is a straightforward implementation of a recursive-descendant parser (or,\n// LL(1) parser, as it is usually called).\n//\n// Actually there are two issues of Scanning that might be called \"clever\", the\n// rest is quite straightforward.  The issues are \"block collection start\" and\n// \"simple keys\".  Both issues are explained below in details.\n//\n// Here the Scanning step is explained and implemented.  We start with the list\n// of all the tokens produced by the Scanner together with short descriptions.\n//\n// Now, tokens:\n//\n//      STREAM-START(encoding)          # The stream start.\n//      STREAM-END                      # The stream end.\n//      VERSION-DIRECTIVE(major,minor)  # The '%YAML' directive.\n//      TAG-DIRECTIVE(handle,prefix)    # The '%TAG' directive.\n//      DOCUMENT-START                  # '---'\n//      DOCUMENT-END                    # '...'\n//      BLOCK-SEQUENCE-START            # Indentation increase denoting a block\n//      BLOCK-MAPPING-START             # sequence or a block mapping.\n//      BLOCK-END                       # Indentation decrease.\n//      FLOW-SEQUENCE-START             # '['\n//      FLOW-SEQUENCE-END               # ']'\n//      BLOCK-SEQUENCE-START            # '{'\n//      BLOCK-SEQUENCE-END              # '}'\n//      BLOCK-ENTRY                     # '-'\n//      FLOW-ENTRY                      # ','\n//      KEY                             # '?' or nothing (simple keys).\n//      VALUE                           # ':'\n//      ALIAS(anchor)                   # '*anchor'\n//      ANCHOR(anchor)                  # '&anchor'\n//      TAG(handle,suffix)              # '!handle!suffix'\n//      SCALAR(value,style)             # A scalar.\n//\n// The following two tokens are \"virtual\" tokens denoting the beginning and the\n// end of the stream:\n//\n//      STREAM-START(encoding)\n//      STREAM-END\n//\n// We pass the information about the input stream encoding with the\n// STREAM-START token.\n//\n// The next two tokens are responsible for tags:\n//\n//      VERSION-DIRECTIVE(major,minor)\n//      TAG-DIRECTIVE(handle,prefix)\n//\n// Example:\n//\n//      %YAML   1.1\n//      %TAG    !   !foo\n//      %TAG    !yaml!  tag:yaml.org,2002:\n//      ---\n//\n// The correspoding sequence of tokens:\n//\n//      STREAM-START(utf-8)\n//      VERSION-DIRECTIVE(1,1)\n//      TAG-DIRECTIVE(\"!\",\"!foo\")\n//      TAG-DIRECTIVE(\"!yaml\",\"tag:yaml.org,2002:\")\n//      DOCUMENT-START\n//      STREAM-END\n//\n// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole\n// line.\n//\n// The document start and end indicators are represented by:\n//\n//      DOCUMENT-START\n//      DOCUMENT-END\n//\n// Note that if a YAML stream contains an implicit document (without '---'\n// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be\n// produced.\n//\n// In the following examples, we present whole documents together with the\n// produced tokens.\n//\n//      1. An implicit document:\n//\n//          'a scalar'\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          SCALAR(\"a scalar\",single-quoted)\n//          STREAM-END\n//\n//      2. An explicit document:\n//\n//          ---\n//          'a scalar'\n//          ...\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          DOCUMENT-START\n//          SCALAR(\"a scalar\",single-quoted)\n//          DOCUMENT-END\n//          STREAM-END\n//\n//      3. Several documents in a stream:\n//\n//          'a scalar'\n//          ---\n//          'another scalar'\n//          ---\n//          'yet another scalar'\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          SCALAR(\"a scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"another scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"yet another scalar\",single-quoted)\n//          STREAM-END\n//\n// We have already introduced the SCALAR token above.  The following tokens are\n// used to describe aliases, anchors, tag, and scalars:\n//\n//      ALIAS(anchor)\n//      ANCHOR(anchor)\n//      TAG(handle,suffix)\n//      SCALAR(value,style)\n//\n// The following series of examples illustrate the usage of these tokens:\n//\n//      1. A recursive sequence:\n//\n//          &A [ *A ]\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          ANCHOR(\"A\")\n//          FLOW-SEQUENCE-START\n//          ALIAS(\"A\")\n//          FLOW-SEQUENCE-END\n//          STREAM-END\n//\n//      2. A tagged scalar:\n//\n//          !!float \"3.14\"  # A good approximation.\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          TAG(\"!!\",\"float\")\n//          SCALAR(\"3.14\",double-quoted)\n//          STREAM-END\n//\n//      3. Various scalar styles:\n//\n//          --- # Implicit empty plain scalars do not produce tokens.\n//          --- a plain scalar\n//          --- 'a single-quoted scalar'\n//          --- \"a double-quoted scalar\"\n//          --- |-\n//            a literal scalar\n//          --- >-\n//            a folded\n//            scalar\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          DOCUMENT-START\n//          DOCUMENT-START\n//          SCALAR(\"a plain scalar\",plain)\n//          DOCUMENT-START\n//          SCALAR(\"a single-quoted scalar\",single-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"a double-quoted scalar\",double-quoted)\n//          DOCUMENT-START\n//          SCALAR(\"a literal scalar\",literal)\n//          DOCUMENT-START\n//          SCALAR(\"a folded scalar\",folded)\n//          STREAM-END\n//\n// Now it's time to review collection-related tokens. We will start with\n// flow collections:\n//\n//      FLOW-SEQUENCE-START\n//      FLOW-SEQUENCE-END\n//      FLOW-MAPPING-START\n//      FLOW-MAPPING-END\n//      FLOW-ENTRY\n//      KEY\n//      VALUE\n//\n// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and\n// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}'\n// correspondingly.  FLOW-ENTRY represent the ',' indicator.  Finally the\n// indicators '?' and ':', which are used for denoting mapping keys and values,\n// are represented by the KEY and VALUE tokens.\n//\n// The following examples show flow collections:\n//\n//      1. A flow sequence:\n//\n//          [item 1, item 2, item 3]\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          FLOW-SEQUENCE-START\n//          SCALAR(\"item 1\",plain)\n//          FLOW-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          FLOW-ENTRY\n//          SCALAR(\"item 3\",plain)\n//          FLOW-SEQUENCE-END\n//          STREAM-END\n//\n//      2. A flow mapping:\n//\n//          {\n//              a simple key: a value,  # Note that the KEY token is produced.\n//              ? a complex key: another value,\n//          }\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          FLOW-MAPPING-START\n//          KEY\n//          SCALAR(\"a simple key\",plain)\n//          VALUE\n//          SCALAR(\"a value\",plain)\n//          FLOW-ENTRY\n//          KEY\n//          SCALAR(\"a complex key\",plain)\n//          VALUE\n//          SCALAR(\"another value\",plain)\n//          FLOW-ENTRY\n//          FLOW-MAPPING-END\n//          STREAM-END\n//\n// A simple key is a key which is not denoted by the '?' indicator.  Note that\n// the Scanner still produce the KEY token whenever it encounters a simple key.\n//\n// For scanning block collections, the following tokens are used (note that we\n// repeat KEY and VALUE here):\n//\n//      BLOCK-SEQUENCE-START\n//      BLOCK-MAPPING-START\n//      BLOCK-END\n//      BLOCK-ENTRY\n//      KEY\n//      VALUE\n//\n// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation\n// increase that precedes a block collection (cf. the INDENT token in Python).\n// The token BLOCK-END denote indentation decrease that ends a block collection\n// (cf. the DEDENT token in Python).  However YAML has some syntax pecularities\n// that makes detections of these tokens more complex.\n//\n// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators\n// '-', '?', and ':' correspondingly.\n//\n// The following examples show how the tokens BLOCK-SEQUENCE-START,\n// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner:\n//\n//      1. Block sequences:\n//\n//          - item 1\n//          - item 2\n//          -\n//            - item 3.1\n//            - item 3.2\n//          -\n//            key 1: value 1\n//            key 2: value 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-ENTRY\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 3.1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 3.2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n//      2. Block mappings:\n//\n//          a simple key: a value   # The KEY token is produced here.\n//          ? a complex key\n//          : another value\n//          a mapping:\n//            key 1: value 1\n//            key 2: value 2\n//          a sequence:\n//            - item 1\n//            - item 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"a simple key\",plain)\n//          VALUE\n//          SCALAR(\"a value\",plain)\n//          KEY\n//          SCALAR(\"a complex key\",plain)\n//          VALUE\n//          SCALAR(\"another value\",plain)\n//          KEY\n//          SCALAR(\"a mapping\",plain)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          KEY\n//          SCALAR(\"a sequence\",plain)\n//          VALUE\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n// YAML does not always require to start a new block collection from a new\n// line.  If the current line contains only '-', '?', and ':' indicators, a new\n// block collection may start at the current line.  The following examples\n// illustrate this case:\n//\n//      1. Collections in a sequence:\n//\n//          - - item 1\n//            - item 2\n//          - key 1: value 1\n//            key 2: value 2\n//          - ? complex key\n//            : complex value\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-ENTRY\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"complex key\")\n//          VALUE\n//          SCALAR(\"complex value\")\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n//      2. Collections in a mapping:\n//\n//          ? a sequence\n//          : - item 1\n//            - item 2\n//          ? a mapping\n//          : key 1: value 1\n//            key 2: value 2\n//\n//      Tokens:\n//\n//          STREAM-START(utf-8)\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"a sequence\",plain)\n//          VALUE\n//          BLOCK-SEQUENCE-START\n//          BLOCK-ENTRY\n//          SCALAR(\"item 1\",plain)\n//          BLOCK-ENTRY\n//          SCALAR(\"item 2\",plain)\n//          BLOCK-END\n//          KEY\n//          SCALAR(\"a mapping\",plain)\n//          VALUE\n//          BLOCK-MAPPING-START\n//          KEY\n//          SCALAR(\"key 1\",plain)\n//          VALUE\n//          SCALAR(\"value 1\",plain)\n//          KEY\n//          SCALAR(\"key 2\",plain)\n//          VALUE\n//          SCALAR(\"value 2\",plain)\n//          BLOCK-END\n//          BLOCK-END\n//          STREAM-END\n//\n// YAML also permits non-indented sequences if they are included into a block\n// mapping.  In this case, the token BLOCK-SEQUENCE-START is not produced:\n//\n//      key:\n//      - item 1    # BLOCK-SEQUENCE-START is NOT produced here.\n//      - item 2\n//\n// Tokens:\n//\n//      STREAM-START(utf-8)\n//      BLOCK-MAPPING-START\n//      KEY\n//      SCALAR(\"key\",plain)\n//      VALUE\n//      BLOCK-ENTRY\n//      SCALAR(\"item 1\",plain)\n//      BLOCK-ENTRY\n//      SCALAR(\"item 2\",plain)\n//      BLOCK-END\n//\n\n// Ensure that the buffer contains the required number of characters.\n// Return true on success, false on failure (reader error or memory error).\nfunc cache(parser *yaml_parser_t, length int) bool {\n\t// [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B)\n\treturn parser.unread >= length || yaml_parser_update_buffer(parser, length)\n}\n\n// Advance the buffer pointer.\nfunc skip(parser *yaml_parser_t) {\n\tparser.mark.index++\n\tparser.mark.column++\n\tparser.unread--\n\tparser.buffer_pos += width(parser.buffer[parser.buffer_pos])\n}\n\nfunc skip_line(parser *yaml_parser_t) {\n\tif is_crlf(parser.buffer, parser.buffer_pos) {\n\t\tparser.mark.index += 2\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t\tparser.unread -= 2\n\t\tparser.buffer_pos += 2\n\t} else if is_break(parser.buffer, parser.buffer_pos) {\n\t\tparser.mark.index++\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t\tparser.unread--\n\t\tparser.buffer_pos += width(parser.buffer[parser.buffer_pos])\n\t}\n}\n\n// Copy a character to a string buffer and advance pointers.\nfunc read(parser *yaml_parser_t, s []byte) []byte {\n\tw := width(parser.buffer[parser.buffer_pos])\n\tif w == 0 {\n\t\tpanic(\"invalid character sequence\")\n\t}\n\tif len(s) == 0 {\n\t\ts = make([]byte, 0, 32)\n\t}\n\tif w == 1 && len(s)+w <= cap(s) {\n\t\ts = s[:len(s)+1]\n\t\ts[len(s)-1] = parser.buffer[parser.buffer_pos]\n\t\tparser.buffer_pos++\n\t} else {\n\t\ts = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...)\n\t\tparser.buffer_pos += w\n\t}\n\tparser.mark.index++\n\tparser.mark.column++\n\tparser.unread--\n\treturn s\n}\n\n// Copy a line break character to a string buffer and advance pointers.\nfunc read_line(parser *yaml_parser_t, s []byte) []byte {\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\tswitch {\n\tcase buf[pos] == '\\r' && buf[pos+1] == '\\n':\n\t\t// CR LF . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 2\n\t\tparser.mark.index++\n\t\tparser.unread--\n\tcase buf[pos] == '\\r' || buf[pos] == '\\n':\n\t\t// CR|LF . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 1\n\tcase buf[pos] == '\\xC2' && buf[pos+1] == '\\x85':\n\t\t// NEL . LF\n\t\ts = append(s, '\\n')\n\t\tparser.buffer_pos += 2\n\tcase buf[pos] == '\\xE2' && buf[pos+1] == '\\x80' && (buf[pos+2] == '\\xA8' || buf[pos+2] == '\\xA9'):\n\t\t// LS|PS . LS|PS\n\t\ts = append(s, buf[parser.buffer_pos:pos+3]...)\n\t\tparser.buffer_pos += 3\n\tdefault:\n\t\treturn s\n\t}\n\tparser.mark.index++\n\tparser.mark.column = 0\n\tparser.mark.line++\n\tparser.unread--\n\treturn s\n}\n\n// Get the next token.\nfunc yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool {\n\t// Erase the token object.\n\t*token = yaml_token_t{} // [Go] Is this necessary?\n\n\t// No tokens after STREAM-END or error.\n\tif parser.stream_end_produced || parser.error != yaml_NO_ERROR {\n\t\treturn true\n\t}\n\n\t// Ensure that the tokens queue contains enough tokens.\n\tif !parser.token_available {\n\t\tif !yaml_parser_fetch_more_tokens(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Fetch the next token from the queue.\n\t*token = parser.tokens[parser.tokens_head]\n\tparser.tokens_head++\n\tparser.tokens_parsed++\n\tparser.token_available = false\n\n\tif token.typ == yaml_STREAM_END_TOKEN {\n\t\tparser.stream_end_produced = true\n\t}\n\treturn true\n}\n\n// Set the scanner error and return false.\nfunc yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool {\n\tparser.error = yaml_SCANNER_ERROR\n\tparser.context = context\n\tparser.context_mark = context_mark\n\tparser.problem = problem\n\tparser.problem_mark = parser.mark\n\treturn false\n}\n\nfunc yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool {\n\tcontext := \"while parsing a tag\"\n\tif directive {\n\t\tcontext = \"while parsing a %TAG directive\"\n\t}\n\treturn yaml_parser_set_scanner_error(parser, context, context_mark, problem)\n}\n\nfunc trace(args ...interface{}) func() {\n\tpargs := append([]interface{}{\"+++\"}, args...)\n\tfmt.Println(pargs...)\n\tpargs = append([]interface{}{\"---\"}, args...)\n\treturn func() { fmt.Println(pargs...) }\n}\n\n// Ensure that the tokens queue contains at least one token which can be\n// returned to the Parser.\nfunc yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool {\n\t// While we need more tokens to fetch, do it.\n\tfor {\n\t\tif parser.tokens_head != len(parser.tokens) {\n\t\t\t// If queue is non-empty, check if any potential simple key may\n\t\t\t// occupy the head position.\n\t\t\thead_tok_idx, ok := parser.simple_keys_by_tok[parser.tokens_parsed]\n\t\t\tif !ok {\n\t\t\t\tbreak\n\t\t\t} else if valid, ok := yaml_simple_key_is_valid(parser, &parser.simple_keys[head_tok_idx]); !ok {\n\t\t\t\treturn false\n\t\t\t} else if !valid {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Fetch the next token.\n\t\tif !yaml_parser_fetch_next_token(parser) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tparser.token_available = true\n\treturn true\n}\n\n// The dispatcher for token fetchers.\nfunc yaml_parser_fetch_next_token(parser *yaml_parser_t) bool {\n\t// Ensure that the buffer is initialized.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// Check if we just started scanning.  Fetch STREAM-START then.\n\tif !parser.stream_start_produced {\n\t\treturn yaml_parser_fetch_stream_start(parser)\n\t}\n\n\t// Eat whitespaces and comments until we reach the next token.\n\tif !yaml_parser_scan_to_next_token(parser) {\n\t\treturn false\n\t}\n\n\t// Check the indentation level against the current column.\n\tif !yaml_parser_unroll_indent(parser, parser.mark.column) {\n\t\treturn false\n\t}\n\n\t// Ensure that the buffer contains at least 4 characters.  4 is the length\n\t// of the longest indicators ('--- ' and '... ').\n\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\treturn false\n\t}\n\n\t// Is it the end of the stream?\n\tif is_z(parser.buffer, parser.buffer_pos) {\n\t\treturn yaml_parser_fetch_stream_end(parser)\n\t}\n\n\t// Is it a directive?\n\tif parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' {\n\t\treturn yaml_parser_fetch_directive(parser)\n\t}\n\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\n\t// Is it the document start indicator?\n\tif parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN)\n\t}\n\n\t// Is it the document end indicator?\n\tif parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN)\n\t}\n\n\t// Is it the flow sequence start indicator?\n\tif buf[pos] == '[' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN)\n\t}\n\n\t// Is it the flow mapping start indicator?\n\tif parser.buffer[parser.buffer_pos] == '{' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN)\n\t}\n\n\t// Is it the flow sequence end indicator?\n\tif parser.buffer[parser.buffer_pos] == ']' {\n\t\treturn yaml_parser_fetch_flow_collection_end(parser,\n\t\t\tyaml_FLOW_SEQUENCE_END_TOKEN)\n\t}\n\n\t// Is it the flow mapping end indicator?\n\tif parser.buffer[parser.buffer_pos] == '}' {\n\t\treturn yaml_parser_fetch_flow_collection_end(parser,\n\t\t\tyaml_FLOW_MAPPING_END_TOKEN)\n\t}\n\n\t// Is it the flow entry indicator?\n\tif parser.buffer[parser.buffer_pos] == ',' {\n\t\treturn yaml_parser_fetch_flow_entry(parser)\n\t}\n\n\t// Is it the block entry indicator?\n\tif parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) {\n\t\treturn yaml_parser_fetch_block_entry(parser)\n\t}\n\n\t// Is it the key indicator?\n\tif parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_key(parser)\n\t}\n\n\t// Is it the value indicator?\n\tif parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_value(parser)\n\t}\n\n\t// Is it an alias?\n\tif parser.buffer[parser.buffer_pos] == '*' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN)\n\t}\n\n\t// Is it an anchor?\n\tif parser.buffer[parser.buffer_pos] == '&' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN)\n\t}\n\n\t// Is it a tag?\n\tif parser.buffer[parser.buffer_pos] == '!' {\n\t\treturn yaml_parser_fetch_tag(parser)\n\t}\n\n\t// Is it a literal scalar?\n\tif parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 {\n\t\treturn yaml_parser_fetch_block_scalar(parser, true)\n\t}\n\n\t// Is it a folded scalar?\n\tif parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 {\n\t\treturn yaml_parser_fetch_block_scalar(parser, false)\n\t}\n\n\t// Is it a single-quoted scalar?\n\tif parser.buffer[parser.buffer_pos] == '\\'' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, true)\n\t}\n\n\t// Is it a double-quoted scalar?\n\tif parser.buffer[parser.buffer_pos] == '\"' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, false)\n\t}\n\n\t// Is it a plain scalar?\n\t//\n\t// A plain scalar may start with any non-blank characters except\n\t//\n\t//      '-', '?', ':', ',', '[', ']', '{', '}',\n\t//      '#', '&', '*', '!', '|', '>', '\\'', '\\\"',\n\t//      '%', '@', '`'.\n\t//\n\t// In the block context (and, for the '-' indicator, in the flow context\n\t// too), it may also start with the characters\n\t//\n\t//      '-', '?', ':'\n\t//\n\t// if it is followed by a non-space character.\n\t//\n\t// The last rule is more restrictive than the specification requires.\n\t// [Go] Make this logic more reasonable.\n\t//switch parser.buffer[parser.buffer_pos] {\n\t//case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '\"', '\\'', '@', '%', '-', '`':\n\t//}\n\tif !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' ||\n\t\tparser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' ||\n\t\tparser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' ||\n\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||\n\t\tparser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' ||\n\t\tparser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' ||\n\t\tparser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' ||\n\t\tparser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\\'' ||\n\t\tparser.buffer[parser.buffer_pos] == '\"' || parser.buffer[parser.buffer_pos] == '%' ||\n\t\tparser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') ||\n\t\t(parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) ||\n\t\t(parser.flow_level == 0 &&\n\t\t\t(parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') &&\n\t\t\t!is_blankz(parser.buffer, parser.buffer_pos+1)) {\n\t\treturn yaml_parser_fetch_plain_scalar(parser)\n\t}\n\n\t// If we don't determine the token type so far, it is an error.\n\treturn yaml_parser_set_scanner_error(parser,\n\t\t\"while scanning for the next token\", parser.mark,\n\t\t\"found character that cannot start any token\")\n}\n\nfunc yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) (valid, ok bool) {\n\tif !simple_key.possible {\n\t\treturn false, true\n\t}\n\n\t// The 1.2 specification says:\n\t//\n\t//     \"If the ? indicator is omitted, parsing needs to see past the\n\t//     implicit key to recognize it as such. To limit the amount of\n\t//     lookahead required, the “:” indicator must appear at most 1024\n\t//     Unicode characters beyond the start of the key. In addition, the key\n\t//     is restricted to a single line.\"\n\t//\n\tif simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index {\n\t\t// Check if the potential simple key to be removed is required.\n\t\tif simple_key.required {\n\t\t\treturn false, yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while scanning a simple key\", simple_key.mark,\n\t\t\t\t\"could not find expected ':'\")\n\t\t}\n\t\tsimple_key.possible = false\n\t\treturn false, true\n\t}\n\treturn true, true\n}\n\n// Check if a simple key may start at the current position and add it if\n// needed.\nfunc yaml_parser_save_simple_key(parser *yaml_parser_t) bool {\n\t// A simple key is required at the current position if the scanner is in\n\t// the block context and the current column coincides with the indentation\n\t// level.\n\n\trequired := parser.flow_level == 0 && parser.indent == parser.mark.column\n\n\t//\n\t// If the current position may start a simple key, save it.\n\t//\n\tif parser.simple_key_allowed {\n\t\tsimple_key := yaml_simple_key_t{\n\t\t\tpossible:     true,\n\t\t\trequired:     required,\n\t\t\ttoken_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),\n\t\t\tmark:         parser.mark,\n\t\t}\n\n\t\tif !yaml_parser_remove_simple_key(parser) {\n\t\t\treturn false\n\t\t}\n\t\tparser.simple_keys[len(parser.simple_keys)-1] = simple_key\n\t\tparser.simple_keys_by_tok[simple_key.token_number] = len(parser.simple_keys) - 1\n\t}\n\treturn true\n}\n\n// Remove a potential simple key at the current flow level.\nfunc yaml_parser_remove_simple_key(parser *yaml_parser_t) bool {\n\ti := len(parser.simple_keys) - 1\n\tif parser.simple_keys[i].possible {\n\t\t// If the key is required, it is an error.\n\t\tif parser.simple_keys[i].required {\n\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while scanning a simple key\", parser.simple_keys[i].mark,\n\t\t\t\t\"could not find expected ':'\")\n\t\t}\n\t\t// Remove the key from the stack.\n\t\tparser.simple_keys[i].possible = false\n\t\tdelete(parser.simple_keys_by_tok, parser.simple_keys[i].token_number)\n\t}\n\treturn true\n}\n\n// max_flow_level limits the flow_level\nconst max_flow_level = 10000\n\n// Increase the flow level and resize the simple key list if needed.\nfunc yaml_parser_increase_flow_level(parser *yaml_parser_t) bool {\n\t// Reset the simple key on the next level.\n\tparser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{\n\t\tpossible:     false,\n\t\trequired:     false,\n\t\ttoken_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),\n\t\tmark:         parser.mark,\n\t})\n\n\t// Increase the flow level.\n\tparser.flow_level++\n\tif parser.flow_level > max_flow_level {\n\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\"while increasing flow level\", parser.simple_keys[len(parser.simple_keys)-1].mark,\n\t\t\tfmt.Sprintf(\"exceeded max depth of %d\", max_flow_level))\n\t}\n\treturn true\n}\n\n// Decrease the flow level.\nfunc yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool {\n\tif parser.flow_level > 0 {\n\t\tparser.flow_level--\n\t\tlast := len(parser.simple_keys) - 1\n\t\tdelete(parser.simple_keys_by_tok, parser.simple_keys[last].token_number)\n\t\tparser.simple_keys = parser.simple_keys[:last]\n\t}\n\treturn true\n}\n\n// max_indents limits the indents stack size\nconst max_indents = 10000\n\n// Push the current indentation level to the stack and set the new level\n// the current column is greater than the indentation level.  In this case,\n// append or insert the specified token into the token queue.\nfunc yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool {\n\t// In the flow context, do nothing.\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\tif parser.indent < column {\n\t\t// Push the current indentation level to the stack and set the new\n\t\t// indentation level.\n\t\tparser.indents = append(parser.indents, parser.indent)\n\t\tparser.indent = column\n\t\tif len(parser.indents) > max_indents {\n\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\"while increasing indent level\", parser.simple_keys[len(parser.simple_keys)-1].mark,\n\t\t\t\tfmt.Sprintf(\"exceeded max depth of %d\", max_indents))\n\t\t}\n\n\t\t// Create a token and insert it into the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        typ,\n\t\t\tstart_mark: mark,\n\t\t\tend_mark:   mark,\n\t\t}\n\t\tif number > -1 {\n\t\t\tnumber -= parser.tokens_parsed\n\t\t}\n\t\tyaml_insert_token(parser, number, &token)\n\t}\n\treturn true\n}\n\n// Pop indentation levels from the indents stack until the current level\n// becomes less or equal to the column.  For each indentation level, append\n// the BLOCK-END token.\nfunc yaml_parser_unroll_indent(parser *yaml_parser_t, column int) bool {\n\t// In the flow context, do nothing.\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\t// Loop through the indentation levels in the stack.\n\tfor parser.indent > column {\n\t\t// Create a token and append it to the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        yaml_BLOCK_END_TOKEN,\n\t\t\tstart_mark: parser.mark,\n\t\t\tend_mark:   parser.mark,\n\t\t}\n\t\tyaml_insert_token(parser, -1, &token)\n\n\t\t// Pop the indentation level.\n\t\tparser.indent = parser.indents[len(parser.indents)-1]\n\t\tparser.indents = parser.indents[:len(parser.indents)-1]\n\t}\n\treturn true\n}\n\n// Initialize the scanner and produce the STREAM-START token.\nfunc yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool {\n\n\t// Set the initial indentation.\n\tparser.indent = -1\n\n\t// Initialize the simple key stack.\n\tparser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{})\n\n\tparser.simple_keys_by_tok = make(map[int]int)\n\n\t// A simple key is allowed at the beginning of the stream.\n\tparser.simple_key_allowed = true\n\n\t// We have started.\n\tparser.stream_start_produced = true\n\n\t// Create the STREAM-START token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_STREAM_START_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t\tencoding:   parser.encoding,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the STREAM-END token and shut down the scanner.\nfunc yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool {\n\n\t// Force new line.\n\tif parser.mark.column != 0 {\n\t\tparser.mark.column = 0\n\t\tparser.mark.line++\n\t}\n\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Create the STREAM-END token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_STREAM_END_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token.\nfunc yaml_parser_fetch_directive(parser *yaml_parser_t) bool {\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Create the YAML-DIRECTIVE or TAG-DIRECTIVE token.\n\ttoken := yaml_token_t{}\n\tif !yaml_parser_scan_directive(parser, &token) {\n\t\treturn false\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the DOCUMENT-START or DOCUMENT-END token.\nfunc yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// Reset the indentation level.\n\tif !yaml_parser_unroll_indent(parser, -1) {\n\t\treturn false\n\t}\n\n\t// Reset simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\tparser.simple_key_allowed = false\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\n\tskip(parser)\n\tskip(parser)\n\tskip(parser)\n\n\tend_mark := parser.mark\n\n\t// Create the DOCUMENT-START or DOCUMENT-END token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token.\nfunc yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// The indicators '[' and '{' may start a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Increase the flow level.\n\tif !yaml_parser_increase_flow_level(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key may follow the indicators '[' and '{'.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token.\nfunc yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// Reset any potential simple key on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Decrease the flow level.\n\tif !yaml_parser_decrease_flow_level(parser) {\n\t\treturn false\n\t}\n\n\t// No simple keys after the indicators ']' and '}'.\n\tparser.simple_key_allowed = false\n\n\t// Consume the token.\n\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token.\n\ttoken := yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\t// Append the token to the queue.\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the FLOW-ENTRY token.\nfunc yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool {\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after ','.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the FLOW-ENTRY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_FLOW_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the BLOCK-ENTRY token.\nfunc yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool {\n\t// Check if the scanner is in the block context.\n\tif parser.flow_level == 0 {\n\t\t// Check if we are allowed to start a new entry.\n\t\tif !parser.simple_key_allowed {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\"block sequence entries are not allowed in this context\")\n\t\t}\n\t\t// Add the BLOCK-SEQUENCE-START token if needed.\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\t// It is an error for the '-' indicator to occur in the flow context,\n\t\t// but we let the Parser detect and report about it because the Parser\n\t\t// is able to point to the context.\n\t}\n\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after '-'.\n\tparser.simple_key_allowed = true\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the BLOCK-ENTRY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_BLOCK_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the KEY token.\nfunc yaml_parser_fetch_key(parser *yaml_parser_t) bool {\n\n\t// In the block context, additional checks are required.\n\tif parser.flow_level == 0 {\n\t\t// Check if we are allowed to start a new key (not nessesary simple).\n\t\tif !parser.simple_key_allowed {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\"mapping keys are not allowed in this context\")\n\t\t}\n\t\t// Add the BLOCK-MAPPING-START token if needed.\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Reset any potential simple keys on the current flow level.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// Simple keys are allowed after '?' in the block context.\n\tparser.simple_key_allowed = parser.flow_level == 0\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the KEY token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_KEY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the VALUE token.\nfunc yaml_parser_fetch_value(parser *yaml_parser_t) bool {\n\n\tsimple_key := &parser.simple_keys[len(parser.simple_keys)-1]\n\n\t// Have we found a simple key?\n\tif valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok {\n\t\treturn false\n\n\t} else if valid {\n\n\t\t// Create the KEY token and insert it into the queue.\n\t\ttoken := yaml_token_t{\n\t\t\ttyp:        yaml_KEY_TOKEN,\n\t\t\tstart_mark: simple_key.mark,\n\t\t\tend_mark:   simple_key.mark,\n\t\t}\n\t\tyaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token)\n\n\t\t// In the block context, we may need to add the BLOCK-MAPPING-START token.\n\t\tif !yaml_parser_roll_indent(parser, simple_key.mark.column,\n\t\t\tsimple_key.token_number,\n\t\t\tyaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Remove the simple key.\n\t\tsimple_key.possible = false\n\t\tdelete(parser.simple_keys_by_tok, simple_key.token_number)\n\n\t\t// A simple key cannot follow another simple key.\n\t\tparser.simple_key_allowed = false\n\n\t} else {\n\t\t// The ':' indicator follows a complex key.\n\n\t\t// In the block context, extra checks are required.\n\t\tif parser.flow_level == 0 {\n\n\t\t\t// Check if we are allowed to start a complex value.\n\t\t\tif !parser.simple_key_allowed {\n\t\t\t\treturn yaml_parser_set_scanner_error(parser, \"\", parser.mark,\n\t\t\t\t\t\"mapping values are not allowed in this context\")\n\t\t\t}\n\n\t\t\t// Add the BLOCK-MAPPING-START token if needed.\n\t\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Simple keys after ':' are allowed in the block context.\n\t\tparser.simple_key_allowed = parser.flow_level == 0\n\t}\n\n\t// Consume the token.\n\tstart_mark := parser.mark\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create the VALUE token and append it to the queue.\n\ttoken := yaml_token_t{\n\t\ttyp:        yaml_VALUE_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the ALIAS or ANCHOR token.\nfunc yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool {\n\t// An anchor or an alias could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow an anchor or an alias.\n\tparser.simple_key_allowed = false\n\n\t// Create the ALIAS or ANCHOR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_anchor(parser, &token, typ) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the TAG token.\nfunc yaml_parser_fetch_tag(parser *yaml_parser_t) bool {\n\t// A tag could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a tag.\n\tparser.simple_key_allowed = false\n\n\t// Create the TAG token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_tag(parser, &token) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens.\nfunc yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool {\n\t// Remove any potential simple keys.\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key may follow a block scalar.\n\tparser.simple_key_allowed = true\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_block_scalar(parser, &token, literal) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens.\nfunc yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool {\n\t// A plain scalar could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a flow scalar.\n\tparser.simple_key_allowed = false\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_flow_scalar(parser, &token, single) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Produce the SCALAR(...,plain) token.\nfunc yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool {\n\t// A plain scalar could be a simple key.\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t// A simple key cannot follow a flow scalar.\n\tparser.simple_key_allowed = false\n\n\t// Create the SCALAR token and append it to the queue.\n\tvar token yaml_token_t\n\tif !yaml_parser_scan_plain_scalar(parser, &token) {\n\t\treturn false\n\t}\n\tyaml_insert_token(parser, -1, &token)\n\treturn true\n}\n\n// Eat whitespaces and comments until the next token is found.\nfunc yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool {\n\n\t// Until the next token is not found.\n\tfor {\n\t\t// Allow the BOM mark to start a line.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t}\n\n\t\t// Eat whitespaces.\n\t\t// Tabs are allowed:\n\t\t//  - in the flow context\n\t\t//  - in the block context, but not at the beginning of the line or\n\t\t//  after '-', '?', or ':' (complex value).\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\\t') {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Eat a comment until a line break.\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\t\tskip(parser)\n\t\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If it is a line break, eat it.\n\t\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tskip_line(parser)\n\n\t\t\t// In the block context, a new line may start a simple key.\n\t\t\tif parser.flow_level == 0 {\n\t\t\t\tparser.simple_key_allowed = true\n\t\t\t}\n\t\t} else {\n\t\t\tbreak // We have found a token.\n\t\t}\n\t}\n\n\treturn true\n}\n\n// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token.\n//\n// Scope:\n//      %YAML    1.1    # a comment \\n\n//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//\nfunc yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool {\n\t// Eat '%'.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Scan the directive name.\n\tvar name []byte\n\tif !yaml_parser_scan_directive_name(parser, start_mark, &name) {\n\t\treturn false\n\t}\n\n\t// Is it a YAML directive?\n\tif bytes.Equal(name, []byte(\"YAML\")) {\n\t\t// Scan the VERSION directive value.\n\t\tvar major, minor int8\n\t\tif !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) {\n\t\t\treturn false\n\t\t}\n\t\tend_mark := parser.mark\n\n\t\t// Create a VERSION-DIRECTIVE token.\n\t\t*token = yaml_token_t{\n\t\t\ttyp:        yaml_VERSION_DIRECTIVE_TOKEN,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tmajor:      major,\n\t\t\tminor:      minor,\n\t\t}\n\n\t\t// Is it a TAG directive?\n\t} else if bytes.Equal(name, []byte(\"TAG\")) {\n\t\t// Scan the TAG directive value.\n\t\tvar handle, prefix []byte\n\t\tif !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) {\n\t\t\treturn false\n\t\t}\n\t\tend_mark := parser.mark\n\n\t\t// Create a TAG-DIRECTIVE token.\n\t\t*token = yaml_token_t{\n\t\t\ttyp:        yaml_TAG_DIRECTIVE_TOKEN,\n\t\t\tstart_mark: start_mark,\n\t\t\tend_mark:   end_mark,\n\t\t\tvalue:      handle,\n\t\t\tprefix:     prefix,\n\t\t}\n\n\t\t// Unknown directive.\n\t} else {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"found unknown directive name\")\n\t\treturn false\n\t}\n\n\t// Eat the rest of the line including any comments.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check if we are at the end of the line.\n\tif !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"did not find expected comment or line break\")\n\t\treturn false\n\t}\n\n\t// Eat a line break.\n\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\tskip_line(parser)\n\t}\n\n\treturn true\n}\n\n// Scan the directive name.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//       ^^^^\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//       ^^^\n//\nfunc yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool {\n\t// Consume the directive name.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tvar s []byte\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the name is empty.\n\tif len(s) == 0 {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"could not find expected directive name\")\n\t\treturn false\n\t}\n\n\t// Check for an blank character after the name.\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"found unexpected non-alphabetical character\")\n\t\treturn false\n\t}\n\t*name = s\n\treturn true\n}\n\n// Scan the value of VERSION-DIRECTIVE.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//           ^^^^^^\nfunc yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool {\n\t// Eat whitespaces.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Consume the major version number.\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, major) {\n\t\treturn false\n\t}\n\n\t// Eat '.'.\n\tif parser.buffer[parser.buffer_pos] != '.' {\n\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\tstart_mark, \"did not find expected digit or '.' character\")\n\t}\n\n\tskip(parser)\n\n\t// Consume the minor version number.\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, minor) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nconst max_number_length = 2\n\n// Scan the version number of VERSION-DIRECTIVE.\n//\n// Scope:\n//      %YAML   1.1     # a comment \\n\n//              ^\n//      %YAML   1.1     # a comment \\n\n//                ^\nfunc yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool {\n\n\t// Repeat while the next character is digit.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tvar value, length int8\n\tfor is_digit(parser.buffer, parser.buffer_pos) {\n\t\t// Check if the number is too long.\n\t\tlength++\n\t\tif length > max_number_length {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\t\tstart_mark, \"found extremely long version number\")\n\t\t}\n\t\tvalue = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos))\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the number was present.\n\tif length == 0 {\n\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a %YAML directive\",\n\t\t\tstart_mark, \"did not find expected version number\")\n\t}\n\t*number = value\n\treturn true\n}\n\n// Scan the value of a TAG-DIRECTIVE token.\n//\n// Scope:\n//      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n//\nfunc yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool {\n\tvar handle_value, prefix_value []byte\n\n\t// Eat whitespaces.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Scan a handle.\n\tif !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) {\n\t\treturn false\n\t}\n\n\t// Expect a whitespace.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blank(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a %TAG directive\",\n\t\t\tstart_mark, \"did not find expected whitespace\")\n\t\treturn false\n\t}\n\n\t// Eat whitespaces.\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Scan a prefix.\n\tif !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) {\n\t\treturn false\n\t}\n\n\t// Expect a whitespace or line break.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a %TAG directive\",\n\t\t\tstart_mark, \"did not find expected whitespace or line break\")\n\t\treturn false\n\t}\n\n\t*handle = handle_value\n\t*prefix = prefix_value\n\treturn true\n}\n\nfunc yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool {\n\tvar s []byte\n\n\t// Eat the indicator character.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Consume the value.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tend_mark := parser.mark\n\n\t/*\n\t * Check if length of the anchor is greater than 0 and it is followed by\n\t * a whitespace character or one of the indicators:\n\t *\n\t *      '?', ':', ',', ']', '}', '%', '@', '`'.\n\t */\n\n\tif len(s) == 0 ||\n\t\t!(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' ||\n\t\t\tparser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' ||\n\t\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' ||\n\t\t\tparser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' ||\n\t\t\tparser.buffer[parser.buffer_pos] == '`') {\n\t\tcontext := \"while scanning an alias\"\n\t\tif typ == yaml_ANCHOR_TOKEN {\n\t\t\tcontext = \"while scanning an anchor\"\n\t\t}\n\t\tyaml_parser_set_scanner_error(parser, context, start_mark,\n\t\t\t\"did not find expected alphabetic or numeric character\")\n\t\treturn false\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        typ,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t}\n\n\treturn true\n}\n\n/*\n * Scan a TAG token.\n */\n\nfunc yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool {\n\tvar handle, suffix []byte\n\n\tstart_mark := parser.mark\n\n\t// Check if the tag is in the canonical form.\n\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\treturn false\n\t}\n\n\tif parser.buffer[parser.buffer_pos+1] == '<' {\n\t\t// Keep the handle as ''\n\n\t\t// Eat '!<'\n\t\tskip(parser)\n\t\tskip(parser)\n\n\t\t// Consume the tag value.\n\t\tif !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check for '>' and eat it.\n\t\tif parser.buffer[parser.buffer_pos] != '>' {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a tag\",\n\t\t\t\tstart_mark, \"did not find the expected '>'\")\n\t\t\treturn false\n\t\t}\n\n\t\tskip(parser)\n\t} else {\n\t\t// The tag has either the '!suffix' or the '!handle!suffix' form.\n\n\t\t// First, try to scan a handle.\n\t\tif !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check if it is, indeed, handle.\n\t\tif handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' {\n\t\t\t// Scan the suffix now.\n\t\t\tif !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\t// It wasn't a handle after all.  Scan the rest of the tag.\n\t\t\tif !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Set the handle to '!'.\n\t\t\thandle = []byte{'!'}\n\n\t\t\t// A special case: the '!' tag.  Set the handle to '' and the\n\t\t\t// suffix to '!'.\n\t\t\tif len(suffix) == 0 {\n\t\t\t\thandle, suffix = suffix, handle\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check the character which ends the tag.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a tag\",\n\t\t\tstart_mark, \"did not find expected whitespace or line break\")\n\t\treturn false\n\t}\n\n\tend_mark := parser.mark\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_TAG_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      handle,\n\t\tsuffix:     suffix,\n\t}\n\treturn true\n}\n\n// Scan a tag handle.\nfunc yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool {\n\t// Check the initial '!' character.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tif parser.buffer[parser.buffer_pos] != '!' {\n\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\tstart_mark, \"did not find expected '!'\")\n\t\treturn false\n\t}\n\n\tvar s []byte\n\n\t// Copy the '!' character.\n\ts = read(parser, s)\n\n\t// Copy all subsequent alphabetical and numerical characters.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_alpha(parser.buffer, parser.buffer_pos) {\n\t\ts = read(parser, s)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Check if the trailing character is '!' and copy it.\n\tif parser.buffer[parser.buffer_pos] == '!' {\n\t\ts = read(parser, s)\n\t} else {\n\t\t// It's either the '!' tag or not really a tag handle.  If it's a %TAG\n\t\t// directive, it's an error.  If it's a tag token, it must be a part of URI.\n\t\tif directive && string(s) != \"!\" {\n\t\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\tstart_mark, \"did not find expected '!'\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\t*handle = s\n\treturn true\n}\n\n// Scan a tag.\nfunc yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool {\n\t//size_t length = head ? strlen((char *)head) : 0\n\tvar s []byte\n\thasTag := len(head) > 0\n\n\t// Copy the head if needed.\n\t//\n\t// Note that we don't copy the leading '!' character.\n\tif len(head) > 1 {\n\t\ts = append(s, head[1:]...)\n\t}\n\n\t// Scan the tag.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// The set of characters that may appear in URI is as follows:\n\t//\n\t//      '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&',\n\t//      '=', '+', '$', ',', '.', '!', '~', '*', '\\'', '(', ')', '[', ']',\n\t//      '%'.\n\t// [Go] Convert this into more reasonable logic.\n\tfor is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' ||\n\t\tparser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' ||\n\t\tparser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' ||\n\t\tparser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' ||\n\t\tparser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' ||\n\t\tparser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' ||\n\t\tparser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' ||\n\t\tparser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\\'' ||\n\t\tparser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' ||\n\t\tparser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' ||\n\t\tparser.buffer[parser.buffer_pos] == '%' {\n\t\t// Check if it is a URI-escape sequence.\n\t\tif parser.buffer[parser.buffer_pos] == '%' {\n\t\t\tif !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\ts = read(parser, s)\n\t\t}\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\thasTag = true\n\t}\n\n\tif !hasTag {\n\t\tyaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\tstart_mark, \"did not find expected tag URI\")\n\t\treturn false\n\t}\n\t*uri = s\n\treturn true\n}\n\n// Decode an URI-escape sequence corresponding to a single UTF-8 character.\nfunc yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool {\n\n\t// Decode the required number of characters.\n\tw := 1024\n\tfor w > 0 {\n\t\t// Check for a URI-escaped octet.\n\t\tif parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {\n\t\t\treturn false\n\t\t}\n\n\t\tif !(parser.buffer[parser.buffer_pos] == '%' &&\n\t\t\tis_hex(parser.buffer, parser.buffer_pos+1) &&\n\t\t\tis_hex(parser.buffer, parser.buffer_pos+2)) {\n\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\tstart_mark, \"did not find URI escaped octet\")\n\t\t}\n\n\t\t// Get the octet.\n\t\toctet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2))\n\n\t\t// If it is the leading octet, determine the length of the UTF-8 sequence.\n\t\tif w == 1024 {\n\t\t\tw = width(octet)\n\t\t\tif w == 0 {\n\t\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\t\tstart_mark, \"found an incorrect leading UTF-8 octet\")\n\t\t\t}\n\t\t} else {\n\t\t\t// Check if the trailing octet is correct.\n\t\t\tif octet&0xC0 != 0x80 {\n\t\t\t\treturn yaml_parser_set_scanner_tag_error(parser, directive,\n\t\t\t\t\tstart_mark, \"found an incorrect trailing UTF-8 octet\")\n\t\t\t}\n\t\t}\n\n\t\t// Copy the octet and move the pointers.\n\t\t*s = append(*s, octet)\n\t\tskip(parser)\n\t\tskip(parser)\n\t\tskip(parser)\n\t\tw--\n\t}\n\treturn true\n}\n\n// Scan a block scalar.\nfunc yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool {\n\t// Eat the indicator '|' or '>'.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Scan the additional block scalar indicators.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\n\t// Check for a chomping indicator.\n\tvar chomping, increment int\n\tif parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {\n\t\t// Set the chomping method and eat the indicator.\n\t\tif parser.buffer[parser.buffer_pos] == '+' {\n\t\t\tchomping = +1\n\t\t} else {\n\t\t\tchomping = -1\n\t\t}\n\t\tskip(parser)\n\n\t\t// Check for an indentation indicator.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif is_digit(parser.buffer, parser.buffer_pos) {\n\t\t\t// Check that the indentation is greater than 0.\n\t\t\tif parser.buffer[parser.buffer_pos] == '0' {\n\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\t\tstart_mark, \"found an indentation indicator equal to 0\")\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Get the indentation level and eat the indicator.\n\t\t\tincrement = as_digit(parser.buffer, parser.buffer_pos)\n\t\t\tskip(parser)\n\t\t}\n\n\t} else if is_digit(parser.buffer, parser.buffer_pos) {\n\t\t// Do the same as above, but in the opposite order.\n\n\t\tif parser.buffer[parser.buffer_pos] == '0' {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\tstart_mark, \"found an indentation indicator equal to 0\")\n\t\t\treturn false\n\t\t}\n\t\tincrement = as_digit(parser.buffer, parser.buffer_pos)\n\t\tskip(parser)\n\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {\n\t\t\tif parser.buffer[parser.buffer_pos] == '+' {\n\t\t\t\tchomping = +1\n\t\t\t} else {\n\t\t\t\tchomping = -1\n\t\t\t}\n\t\t\tskip(parser)\n\t\t}\n\t}\n\n\t// Eat whitespaces and comments to the end of the line.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tfor is_blank(parser.buffer, parser.buffer_pos) {\n\t\tskip(parser)\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check if we are at the end of the line.\n\tif !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\tstart_mark, \"did not find expected comment or line break\")\n\t\treturn false\n\t}\n\n\t// Eat a line break.\n\tif is_break(parser.buffer, parser.buffer_pos) {\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\tskip_line(parser)\n\t}\n\n\tend_mark := parser.mark\n\n\t// Set the indentation level if it was specified.\n\tvar indent int\n\tif increment > 0 {\n\t\tif parser.indent >= 0 {\n\t\t\tindent = parser.indent + increment\n\t\t} else {\n\t\t\tindent = increment\n\t\t}\n\t}\n\n\t// Scan the leading line breaks and determine the indentation level if needed.\n\tvar s, leading_break, trailing_breaks []byte\n\tif !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {\n\t\treturn false\n\t}\n\n\t// Scan the block scalar content.\n\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\treturn false\n\t}\n\tvar leading_blank, trailing_blank bool\n\tfor parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) {\n\t\t// We are at the beginning of a non-empty line.\n\n\t\t// Is it a trailing whitespace?\n\t\ttrailing_blank = is_blank(parser.buffer, parser.buffer_pos)\n\n\t\t// Check if we need to fold the leading line break.\n\t\tif !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\\n' {\n\t\t\t// Do we need to join the lines by space?\n\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\ts = append(s, ' ')\n\t\t\t}\n\t\t} else {\n\t\t\ts = append(s, leading_break...)\n\t\t}\n\t\tleading_break = leading_break[:0]\n\n\t\t// Append the remaining line breaks.\n\t\ts = append(s, trailing_breaks...)\n\t\ttrailing_breaks = trailing_breaks[:0]\n\n\t\t// Is it a leading whitespace?\n\t\tleading_blank = is_blank(parser.buffer, parser.buffer_pos)\n\n\t\t// Consume the current line.\n\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\ts = read(parser, s)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Consume the line break.\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\n\t\tleading_break = read_line(parser, leading_break)\n\n\t\t// Eat the following indentation spaces and line breaks.\n\t\tif !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// Chomp the tail.\n\tif chomping != -1 {\n\t\ts = append(s, leading_break...)\n\t}\n\tif chomping == 1 {\n\t\ts = append(s, trailing_breaks...)\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_LITERAL_SCALAR_STYLE,\n\t}\n\tif !literal {\n\t\ttoken.style = yaml_FOLDED_SCALAR_STYLE\n\t}\n\treturn true\n}\n\n// Scan indentation spaces and line breaks for a block scalar.  Determine the\n// indentation level if needed.\nfunc yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool {\n\t*end_mark = parser.mark\n\n\t// Eat the indentation spaces and line breaks.\n\tmax_indent := 0\n\tfor {\n\t\t// Eat the indentation spaces.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tfor (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif parser.mark.column > max_indent {\n\t\t\tmax_indent = parser.mark.column\n\t\t}\n\n\t\t// Check for a tab character messing the indentation.\n\t\tif (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) {\n\t\t\treturn yaml_parser_set_scanner_error(parser, \"while scanning a block scalar\",\n\t\t\t\tstart_mark, \"found a tab character where an indentation space is expected\")\n\t\t}\n\n\t\t// Have we found a non-empty line?\n\t\tif !is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume the line break.\n\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\t// [Go] Should really be returning breaks instead.\n\t\t*breaks = read_line(parser, *breaks)\n\t\t*end_mark = parser.mark\n\t}\n\n\t// Determine the indentation level if needed.\n\tif *indent == 0 {\n\t\t*indent = max_indent\n\t\tif *indent < parser.indent+1 {\n\t\t\t*indent = parser.indent + 1\n\t\t}\n\t\tif *indent < 1 {\n\t\t\t*indent = 1\n\t\t}\n\t}\n\treturn true\n}\n\n// Scan a quoted scalar.\nfunc yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool {\n\t// Eat the left quote.\n\tstart_mark := parser.mark\n\tskip(parser)\n\n\t// Consume the content of the quoted scalar.\n\tvar s, leading_break, trailing_breaks, whitespaces []byte\n\tfor {\n\t\t// Check that there are no document indicators at the beginning of the line.\n\t\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\t\treturn false\n\t\t}\n\n\t\tif parser.mark.column == 0 &&\n\t\t\t((parser.buffer[parser.buffer_pos+0] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+1] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+2] == '-') ||\n\t\t\t\t(parser.buffer[parser.buffer_pos+0] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+1] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+2] == '.')) &&\n\t\t\tis_blankz(parser.buffer, parser.buffer_pos+3) {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a quoted scalar\",\n\t\t\t\tstart_mark, \"found unexpected document indicator\")\n\t\t\treturn false\n\t\t}\n\n\t\t// Check for EOF.\n\t\tif is_z(parser.buffer, parser.buffer_pos) {\n\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a quoted scalar\",\n\t\t\t\tstart_mark, \"found unexpected end of stream\")\n\t\t\treturn false\n\t\t}\n\n\t\t// Consume non-blank characters.\n\t\tleading_blanks := false\n\t\tfor !is_blankz(parser.buffer, parser.buffer_pos) {\n\t\t\tif single && parser.buffer[parser.buffer_pos] == '\\'' && parser.buffer[parser.buffer_pos+1] == '\\'' {\n\t\t\t\t// Is is an escaped single quote.\n\t\t\t\ts = append(s, '\\'')\n\t\t\t\tskip(parser)\n\t\t\t\tskip(parser)\n\n\t\t\t} else if single && parser.buffer[parser.buffer_pos] == '\\'' {\n\t\t\t\t// It is a right single quote.\n\t\t\t\tbreak\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\"' {\n\t\t\t\t// It is a right double quote.\n\t\t\t\tbreak\n\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' && is_break(parser.buffer, parser.buffer_pos+1) {\n\t\t\t\t// It is an escaped line break.\n\t\t\t\tif parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tskip(parser)\n\t\t\t\tskip_line(parser)\n\t\t\t\tleading_blanks = true\n\t\t\t\tbreak\n\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' {\n\t\t\t\t// It is an escape sequence.\n\t\t\t\tcode_length := 0\n\n\t\t\t\t// Check the escape character.\n\t\t\t\tswitch parser.buffer[parser.buffer_pos+1] {\n\t\t\t\tcase '0':\n\t\t\t\t\ts = append(s, 0)\n\t\t\t\tcase 'a':\n\t\t\t\t\ts = append(s, '\\x07')\n\t\t\t\tcase 'b':\n\t\t\t\t\ts = append(s, '\\x08')\n\t\t\t\tcase 't', '\\t':\n\t\t\t\t\ts = append(s, '\\x09')\n\t\t\t\tcase 'n':\n\t\t\t\t\ts = append(s, '\\x0A')\n\t\t\t\tcase 'v':\n\t\t\t\t\ts = append(s, '\\x0B')\n\t\t\t\tcase 'f':\n\t\t\t\t\ts = append(s, '\\x0C')\n\t\t\t\tcase 'r':\n\t\t\t\t\ts = append(s, '\\x0D')\n\t\t\t\tcase 'e':\n\t\t\t\t\ts = append(s, '\\x1B')\n\t\t\t\tcase ' ':\n\t\t\t\t\ts = append(s, '\\x20')\n\t\t\t\tcase '\"':\n\t\t\t\t\ts = append(s, '\"')\n\t\t\t\tcase '\\'':\n\t\t\t\t\ts = append(s, '\\'')\n\t\t\t\tcase '\\\\':\n\t\t\t\t\ts = append(s, '\\\\')\n\t\t\t\tcase 'N': // NEL (#x85)\n\t\t\t\t\ts = append(s, '\\xC2')\n\t\t\t\t\ts = append(s, '\\x85')\n\t\t\t\tcase '_': // #xA0\n\t\t\t\t\ts = append(s, '\\xC2')\n\t\t\t\t\ts = append(s, '\\xA0')\n\t\t\t\tcase 'L': // LS (#x2028)\n\t\t\t\t\ts = append(s, '\\xE2')\n\t\t\t\t\ts = append(s, '\\x80')\n\t\t\t\t\ts = append(s, '\\xA8')\n\t\t\t\tcase 'P': // PS (#x2029)\n\t\t\t\t\ts = append(s, '\\xE2')\n\t\t\t\t\ts = append(s, '\\x80')\n\t\t\t\t\ts = append(s, '\\xA9')\n\t\t\t\tcase 'x':\n\t\t\t\t\tcode_length = 2\n\t\t\t\tcase 'u':\n\t\t\t\t\tcode_length = 4\n\t\t\t\tcase 'U':\n\t\t\t\t\tcode_length = 8\n\t\t\t\tdefault:\n\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\tstart_mark, \"found unknown escape character\")\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tskip(parser)\n\t\t\t\tskip(parser)\n\n\t\t\t\t// Consume an arbitrary escape code.\n\t\t\t\tif code_length > 0 {\n\t\t\t\t\tvar value int\n\n\t\t\t\t\t// Scan the character value.\n\t\t\t\t\tif parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tfor k := 0; k < code_length; k++ {\n\t\t\t\t\t\tif !is_hex(parser.buffer, parser.buffer_pos+k) {\n\t\t\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\t\t\tstart_mark, \"did not find expected hexdecimal number\")\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check the value and write the character.\n\t\t\t\t\tif (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF {\n\t\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while parsing a quoted scalar\",\n\t\t\t\t\t\t\tstart_mark, \"found invalid Unicode character escape code\")\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tif value <= 0x7F {\n\t\t\t\t\t\ts = append(s, byte(value))\n\t\t\t\t\t} else if value <= 0x7FF {\n\t\t\t\t\t\ts = append(s, byte(0xC0+(value>>6)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t} else if value <= 0xFFFF {\n\t\t\t\t\t\ts = append(s, byte(0xE0+(value>>12)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>6)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = append(s, byte(0xF0+(value>>18)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>12)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+((value>>6)&0x3F)))\n\t\t\t\t\t\ts = append(s, byte(0x80+(value&0x3F)))\n\t\t\t\t\t}\n\n\t\t\t\t\t// Advance the pointer.\n\t\t\t\t\tfor k := 0; k < code_length; k++ {\n\t\t\t\t\t\tskip(parser)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// It is a non-escaped non-blank character.\n\t\t\t\ts = read(parser, s)\n\t\t\t}\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check if we are at the end of the scalar.\n\t\tif single {\n\t\t\tif parser.buffer[parser.buffer_pos] == '\\'' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tif parser.buffer[parser.buffer_pos] == '\"' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Consume blank characters.\n\t\tfor is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif is_blank(parser.buffer, parser.buffer_pos) {\n\t\t\t\t// Consume a space or a tab character.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = read(parser, whitespaces)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Check if it is a first line break.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t\tleading_break = read_line(parser, leading_break)\n\t\t\t\t\tleading_blanks = true\n\t\t\t\t} else {\n\t\t\t\t\ttrailing_breaks = read_line(parser, trailing_breaks)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Join the whitespaces or fold line breaks.\n\t\tif leading_blanks {\n\t\t\t// Do we need to fold line breaks?\n\t\t\tif len(leading_break) > 0 && leading_break[0] == '\\n' {\n\t\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\t\ts = append(s, ' ')\n\t\t\t\t} else {\n\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ts = append(s, leading_break...)\n\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t}\n\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\tleading_break = leading_break[:0]\n\t\t} else {\n\t\t\ts = append(s, whitespaces...)\n\t\t\twhitespaces = whitespaces[:0]\n\t\t}\n\t}\n\n\t// Eat the right quote.\n\tskip(parser)\n\tend_mark := parser.mark\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_SINGLE_QUOTED_SCALAR_STYLE,\n\t}\n\tif !single {\n\t\ttoken.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\treturn true\n}\n\n// Scan a plain scalar.\nfunc yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool {\n\n\tvar s, leading_break, trailing_breaks, whitespaces []byte\n\tvar leading_blanks bool\n\tvar indent = parser.indent + 1\n\n\tstart_mark := parser.mark\n\tend_mark := parser.mark\n\n\t// Consume the content of the plain scalar.\n\tfor {\n\t\t// Check for a document indicator.\n\t\tif parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {\n\t\t\treturn false\n\t\t}\n\t\tif parser.mark.column == 0 &&\n\t\t\t((parser.buffer[parser.buffer_pos+0] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+1] == '-' &&\n\t\t\t\tparser.buffer[parser.buffer_pos+2] == '-') ||\n\t\t\t\t(parser.buffer[parser.buffer_pos+0] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+1] == '.' &&\n\t\t\t\t\tparser.buffer[parser.buffer_pos+2] == '.')) &&\n\t\t\tis_blankz(parser.buffer, parser.buffer_pos+3) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Check for a comment.\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume non-blank characters.\n\t\tfor !is_blankz(parser.buffer, parser.buffer_pos) {\n\n\t\t\t// Check for indicators that may end a plain scalar.\n\t\t\tif (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) ||\n\t\t\t\t(parser.flow_level > 0 &&\n\t\t\t\t\t(parser.buffer[parser.buffer_pos] == ',' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||\n\t\t\t\t\t\tparser.buffer[parser.buffer_pos] == '}')) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// Check if we need to join whitespaces and breaks.\n\t\t\tif leading_blanks || len(whitespaces) > 0 {\n\t\t\t\tif leading_blanks {\n\t\t\t\t\t// Do we need to fold line breaks?\n\t\t\t\t\tif leading_break[0] == '\\n' {\n\t\t\t\t\t\tif len(trailing_breaks) == 0 {\n\t\t\t\t\t\t\ts = append(s, ' ')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = append(s, leading_break...)\n\t\t\t\t\t\ts = append(s, trailing_breaks...)\n\t\t\t\t\t}\n\t\t\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\t\t\tleading_break = leading_break[:0]\n\t\t\t\t\tleading_blanks = false\n\t\t\t\t} else {\n\t\t\t\t\ts = append(s, whitespaces...)\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Copy the character.\n\t\t\ts = read(parser, s)\n\n\t\t\tend_mark = parser.mark\n\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Is it the end?\n\t\tif !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) {\n\t\t\tbreak\n\t\t}\n\n\t\t// Consume blank characters.\n\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {\n\t\t\tif is_blank(parser.buffer, parser.buffer_pos) {\n\n\t\t\t\t// Check for tab characters that abuse indentation.\n\t\t\t\tif leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) {\n\t\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a plain scalar\",\n\t\t\t\t\t\tstart_mark, \"found a tab character that violates indentation\")\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Consume a space or a tab character.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = read(parser, whitespaces)\n\t\t\t\t} else {\n\t\t\t\t\tskip(parser)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Check if it is a first line break.\n\t\t\t\tif !leading_blanks {\n\t\t\t\t\twhitespaces = whitespaces[:0]\n\t\t\t\t\tleading_break = read_line(parser, leading_break)\n\t\t\t\t\tleading_blanks = true\n\t\t\t\t} else {\n\t\t\t\t\ttrailing_breaks = read_line(parser, trailing_breaks)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Check indentation level.\n\t\tif parser.flow_level == 0 && parser.mark.column < indent {\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Create a token.\n\t*token = yaml_token_t{\n\t\ttyp:        yaml_SCALAR_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\tvalue:      s,\n\t\tstyle:      yaml_PLAIN_SCALAR_STYLE,\n\t}\n\n\t// Note that we change the 'simple_key_allowed' flag.\n\tif leading_blanks {\n\t\tparser.simple_key_allowed = true\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/sorter.go",
    "content": "package yaml\n\nimport (\n\t\"reflect\"\n\t\"unicode\"\n)\n\ntype keyList []reflect.Value\n\nfunc (l keyList) Len() int      { return len(l) }\nfunc (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] }\nfunc (l keyList) Less(i, j int) bool {\n\ta := l[i]\n\tb := l[j]\n\tak := a.Kind()\n\tbk := b.Kind()\n\tfor (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() {\n\t\ta = a.Elem()\n\t\tak = a.Kind()\n\t}\n\tfor (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() {\n\t\tb = b.Elem()\n\t\tbk = b.Kind()\n\t}\n\taf, aok := keyFloat(a)\n\tbf, bok := keyFloat(b)\n\tif aok && bok {\n\t\tif af != bf {\n\t\t\treturn af < bf\n\t\t}\n\t\tif ak != bk {\n\t\t\treturn ak < bk\n\t\t}\n\t\treturn numLess(a, b)\n\t}\n\tif ak != reflect.String || bk != reflect.String {\n\t\treturn ak < bk\n\t}\n\tar, br := []rune(a.String()), []rune(b.String())\n\tfor i := 0; i < len(ar) && i < len(br); i++ {\n\t\tif ar[i] == br[i] {\n\t\t\tcontinue\n\t\t}\n\t\tal := unicode.IsLetter(ar[i])\n\t\tbl := unicode.IsLetter(br[i])\n\t\tif al && bl {\n\t\t\treturn ar[i] < br[i]\n\t\t}\n\t\tif al || bl {\n\t\t\treturn bl\n\t\t}\n\t\tvar ai, bi int\n\t\tvar an, bn int64\n\t\tif ar[i] == '0' || br[i] == '0' {\n\t\t\tfor j := i-1; j >= 0 && unicode.IsDigit(ar[j]); j-- {\n\t\t\t\tif ar[j] != '0' {\n\t\t\t\t\tan = 1\n\t\t\t\t\tbn = 1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ {\n\t\t\tan = an*10 + int64(ar[ai]-'0')\n\t\t}\n\t\tfor bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ {\n\t\t\tbn = bn*10 + int64(br[bi]-'0')\n\t\t}\n\t\tif an != bn {\n\t\t\treturn an < bn\n\t\t}\n\t\tif ai != bi {\n\t\t\treturn ai < bi\n\t\t}\n\t\treturn ar[i] < br[i]\n\t}\n\treturn len(ar) < len(br)\n}\n\n// keyFloat returns a float value for v if it is a number/bool\n// and whether it is a number/bool or not.\nfunc keyFloat(v reflect.Value) (f float64, ok bool) {\n\tswitch v.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn float64(v.Int()), true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float(), true\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn float64(v.Uint()), true\n\tcase reflect.Bool:\n\t\tif v.Bool() {\n\t\t\treturn 1, true\n\t\t}\n\t\treturn 0, true\n\t}\n\treturn 0, false\n}\n\n// numLess returns whether a < b.\n// a and b must necessarily have the same kind.\nfunc numLess(a, b reflect.Value) bool {\n\tswitch a.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn a.Int() < b.Int()\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn a.Float() < b.Float()\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn a.Uint() < b.Uint()\n\tcase reflect.Bool:\n\t\treturn !a.Bool() && b.Bool()\n\t}\n\tpanic(\"not a number\")\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/writerc.go",
    "content": "package yaml\n\n// Set the writer error and return false.\nfunc yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool {\n\temitter.error = yaml_WRITER_ERROR\n\temitter.problem = problem\n\treturn false\n}\n\n// Flush the output buffer.\nfunc yaml_emitter_flush(emitter *yaml_emitter_t) bool {\n\tif emitter.write_handler == nil {\n\t\tpanic(\"write handler not set\")\n\t}\n\n\t// Check if the buffer is empty.\n\tif emitter.buffer_pos == 0 {\n\t\treturn true\n\t}\n\n\tif err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil {\n\t\treturn yaml_emitter_set_writer_error(emitter, \"write error: \"+err.Error())\n\t}\n\temitter.buffer_pos = 0\n\treturn true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/yaml.go",
    "content": "// Package yaml implements YAML support for the Go language.\n//\n// Source code and other details for the project are available at GitHub:\n//\n//   https://github.com/go-yaml/yaml\n//\npackage yaml\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n)\n\n// MapSlice encodes and decodes as a YAML map.\n// The order of keys is preserved when encoding and decoding.\ntype MapSlice []MapItem\n\n// MapItem is an item in a MapSlice.\ntype MapItem struct {\n\tKey, Value interface{}\n}\n\n// The Unmarshaler interface may be implemented by types to customize their\n// behavior when being unmarshaled from a YAML document. The UnmarshalYAML\n// method receives a function that may be called to unmarshal the original\n// YAML value into a field or variable. It is safe to call the unmarshal\n// function parameter more than once if necessary.\ntype Unmarshaler interface {\n\tUnmarshalYAML(unmarshal func(interface{}) error) error\n}\n\n// The Marshaler interface may be implemented by types to customize their\n// behavior when being marshaled into a YAML document. The returned value\n// is marshaled in place of the original value implementing Marshaler.\n//\n// If an error is returned by MarshalYAML, the marshaling procedure stops\n// and returns with the provided error.\ntype Marshaler interface {\n\tMarshalYAML() (interface{}, error)\n}\n\n// Unmarshal decodes the first document found within the in byte slice\n// and assigns decoded values into the out value.\n//\n// Maps and pointers (to a struct, string, int, etc) are accepted as out\n// values. If an internal pointer within a struct is not initialized,\n// the yaml package will initialize it if necessary for unmarshalling\n// the provided data. The out parameter must not be nil.\n//\n// The type of the decoded values should be compatible with the respective\n// values in out. If one or more values cannot be decoded due to a type\n// mismatches, decoding continues partially until the end of the YAML\n// content, and a *yaml.TypeError is returned with details for all\n// missed values.\n//\n// Struct fields are only unmarshalled if they are exported (have an\n// upper case first letter), and are unmarshalled using the field name\n// lowercased as the default key. Custom keys may be defined via the\n// \"yaml\" name in the field tag: the content preceding the first comma\n// is used as the key, and the following comma-separated options are\n// used to tweak the marshalling process (see Marshal).\n// Conflicting names result in a runtime error.\n//\n// For example:\n//\n//     type T struct {\n//         F int `yaml:\"a,omitempty\"`\n//         B int\n//     }\n//     var t T\n//     yaml.Unmarshal([]byte(\"a: 1\\nb: 2\"), &t)\n//\n// See the documentation of Marshal for the format of tags and a list of\n// supported tag options.\n//\nfunc Unmarshal(in []byte, out interface{}) (err error) {\n\treturn unmarshal(in, out, false)\n}\n\n// UnmarshalStrict is like Unmarshal except that any fields that are found\n// in the data that do not have corresponding struct members, or mapping\n// keys that are duplicates, will result in\n// an error.\nfunc UnmarshalStrict(in []byte, out interface{}) (err error) {\n\treturn unmarshal(in, out, true)\n}\n\n// A Decoder reads and decodes YAML values from an input stream.\ntype Decoder struct {\n\tstrict bool\n\tparser *parser\n}\n\n// NewDecoder returns a new decoder that reads from r.\n//\n// The decoder introduces its own buffering and may read\n// data from r beyond the YAML values requested.\nfunc NewDecoder(r io.Reader) *Decoder {\n\treturn &Decoder{\n\t\tparser: newParserFromReader(r),\n\t}\n}\n\n// SetStrict sets whether strict decoding behaviour is enabled when\n// decoding items in the data (see UnmarshalStrict). By default, decoding is not strict.\nfunc (dec *Decoder) SetStrict(strict bool) {\n\tdec.strict = strict\n}\n\n// Decode reads the next YAML-encoded value from its input\n// and stores it in the value pointed to by v.\n//\n// See the documentation for Unmarshal for details about the\n// conversion of YAML into a Go value.\nfunc (dec *Decoder) Decode(v interface{}) (err error) {\n\td := newDecoder(dec.strict)\n\tdefer handleErr(&err)\n\tnode := dec.parser.parse()\n\tif node == nil {\n\t\treturn io.EOF\n\t}\n\tout := reflect.ValueOf(v)\n\tif out.Kind() == reflect.Ptr && !out.IsNil() {\n\t\tout = out.Elem()\n\t}\n\td.unmarshal(node, out)\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\nfunc unmarshal(in []byte, out interface{}, strict bool) (err error) {\n\tdefer handleErr(&err)\n\td := newDecoder(strict)\n\tp := newParser(in)\n\tdefer p.destroy()\n\tnode := p.parse()\n\tif node != nil {\n\t\tv := reflect.ValueOf(out)\n\t\tif v.Kind() == reflect.Ptr && !v.IsNil() {\n\t\t\tv = v.Elem()\n\t\t}\n\t\td.unmarshal(node, v)\n\t}\n\tif len(d.terrors) > 0 {\n\t\treturn &TypeError{d.terrors}\n\t}\n\treturn nil\n}\n\n// Marshal serializes the value provided into a YAML document. The structure\n// of the generated document will reflect the structure of the value itself.\n// Maps and pointers (to struct, string, int, etc) are accepted as the in value.\n//\n// Struct fields are only marshalled if they are exported (have an upper case\n// first letter), and are marshalled using the field name lowercased as the\n// default key. Custom keys may be defined via the \"yaml\" name in the field\n// tag: the content preceding the first comma is used as the key, and the\n// following comma-separated options are used to tweak the marshalling process.\n// Conflicting names result in a runtime error.\n//\n// The field tag format accepted is:\n//\n//     `(...) yaml:\"[<key>][,<flag1>[,<flag2>]]\" (...)`\n//\n// The following flags are currently supported:\n//\n//     omitempty    Only include the field if it's not set to the zero\n//                  value for the type or to empty slices or maps.\n//                  Zero valued structs will be omitted if all their public\n//                  fields are zero, unless they implement an IsZero\n//                  method (see the IsZeroer interface type), in which\n//                  case the field will be excluded if IsZero returns true.\n//\n//     flow         Marshal using a flow style (useful for structs,\n//                  sequences and maps).\n//\n//     inline       Inline the field, which must be a struct or a map,\n//                  causing all of its fields or keys to be processed as if\n//                  they were part of the outer struct. For maps, keys must\n//                  not conflict with the yaml keys of other struct fields.\n//\n// In addition, if the key is \"-\", the field is ignored.\n//\n// For example:\n//\n//     type T struct {\n//         F int `yaml:\"a,omitempty\"`\n//         B int\n//     }\n//     yaml.Marshal(&T{B: 2}) // Returns \"b: 2\\n\"\n//     yaml.Marshal(&T{F: 1}} // Returns \"a: 1\\nb: 0\\n\"\n//\nfunc Marshal(in interface{}) (out []byte, err error) {\n\tdefer handleErr(&err)\n\te := newEncoder()\n\tdefer e.destroy()\n\te.marshalDoc(\"\", reflect.ValueOf(in))\n\te.finish()\n\tout = e.out\n\treturn\n}\n\n// An Encoder writes YAML values to an output stream.\ntype Encoder struct {\n\tencoder *encoder\n}\n\n// NewEncoder returns a new encoder that writes to w.\n// The Encoder should be closed after use to flush all data\n// to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\treturn &Encoder{\n\t\tencoder: newEncoderWithWriter(w),\n\t}\n}\n\n// Encode writes the YAML encoding of v to the stream.\n// If multiple items are encoded to the stream, the\n// second and subsequent document will be preceded\n// with a \"---\" document separator, but the first will not.\n//\n// See the documentation for Marshal for details about the conversion of Go\n// values to YAML.\nfunc (e *Encoder) Encode(v interface{}) (err error) {\n\tdefer handleErr(&err)\n\te.encoder.marshalDoc(\"\", reflect.ValueOf(v))\n\treturn nil\n}\n\n// Close closes the encoder by writing any remaining data.\n// It does not write a stream terminating string \"...\".\nfunc (e *Encoder) Close() (err error) {\n\tdefer handleErr(&err)\n\te.encoder.finish()\n\treturn nil\n}\n\nfunc handleErr(err *error) {\n\tif v := recover(); v != nil {\n\t\tif e, ok := v.(yamlError); ok {\n\t\t\t*err = e.err\n\t\t} else {\n\t\t\tpanic(v)\n\t\t}\n\t}\n}\n\ntype yamlError struct {\n\terr error\n}\n\nfunc fail(err error) {\n\tpanic(yamlError{err})\n}\n\nfunc failf(format string, args ...interface{}) {\n\tpanic(yamlError{fmt.Errorf(\"yaml: \"+format, args...)})\n}\n\n// A TypeError is returned by Unmarshal when one or more fields in\n// the YAML document cannot be properly decoded into the requested\n// types. When this error is returned, the value is still\n// unmarshaled partially.\ntype TypeError struct {\n\tErrors []string\n}\n\nfunc (e *TypeError) Error() string {\n\treturn fmt.Sprintf(\"yaml: unmarshal errors:\\n  %s\", strings.Join(e.Errors, \"\\n  \"))\n}\n\n// --------------------------------------------------------------------------\n// Maintain a mapping of keys to structure field indexes\n\n// The code in this section was copied from mgo/bson.\n\n// structInfo holds details for the serialization of fields of\n// a given struct.\ntype structInfo struct {\n\tFieldsMap  map[string]fieldInfo\n\tFieldsList []fieldInfo\n\n\t// InlineMap is the number of the field in the struct that\n\t// contains an ,inline map, or -1 if there's none.\n\tInlineMap int\n}\n\ntype fieldInfo struct {\n\tKey       string\n\tNum       int\n\tOmitEmpty bool\n\tFlow      bool\n\t// Id holds the unique field identifier, so we can cheaply\n\t// check for field duplicates without maintaining an extra map.\n\tId int\n\n\t// Inline holds the field index if the field is part of an inlined struct.\n\tInline []int\n}\n\nvar structMap = make(map[reflect.Type]*structInfo)\nvar fieldMapMutex sync.RWMutex\n\nfunc getStructInfo(st reflect.Type) (*structInfo, error) {\n\tfieldMapMutex.RLock()\n\tsinfo, found := structMap[st]\n\tfieldMapMutex.RUnlock()\n\tif found {\n\t\treturn sinfo, nil\n\t}\n\n\tn := st.NumField()\n\tfieldsMap := make(map[string]fieldInfo)\n\tfieldsList := make([]fieldInfo, 0, n)\n\tinlineMap := -1\n\tfor i := 0; i != n; i++ {\n\t\tfield := st.Field(i)\n\t\tif field.PkgPath != \"\" && !field.Anonymous {\n\t\t\tcontinue // Private field\n\t\t}\n\n\t\tinfo := fieldInfo{Num: i}\n\n\t\ttag := field.Tag.Get(\"yaml\")\n\t\tif tag == \"\" && strings.Index(string(field.Tag), \":\") < 0 {\n\t\t\ttag = string(field.Tag)\n\t\t}\n\t\tif tag == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tinline := false\n\t\tfields := strings.Split(tag, \",\")\n\t\tif len(fields) > 1 {\n\t\t\tfor _, flag := range fields[1:] {\n\t\t\t\tswitch flag {\n\t\t\t\tcase \"omitempty\":\n\t\t\t\t\tinfo.OmitEmpty = true\n\t\t\t\tcase \"flow\":\n\t\t\t\t\tinfo.Flow = true\n\t\t\t\tcase \"inline\":\n\t\t\t\t\tinline = true\n\t\t\t\tdefault:\n\t\t\t\t\treturn nil, errors.New(fmt.Sprintf(\"Unsupported flag %q in tag %q of type %s\", flag, tag, st))\n\t\t\t\t}\n\t\t\t}\n\t\t\ttag = fields[0]\n\t\t}\n\n\t\tif inline {\n\t\t\tswitch field.Type.Kind() {\n\t\t\tcase reflect.Map:\n\t\t\t\tif inlineMap >= 0 {\n\t\t\t\t\treturn nil, errors.New(\"Multiple ,inline maps in struct \" + st.String())\n\t\t\t\t}\n\t\t\t\tif field.Type.Key() != reflect.TypeOf(\"\") {\n\t\t\t\t\treturn nil, errors.New(\"Option ,inline needs a map with string keys in struct \" + st.String())\n\t\t\t\t}\n\t\t\t\tinlineMap = info.Num\n\t\t\tcase reflect.Struct:\n\t\t\t\tsinfo, err := getStructInfo(field.Type)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tfor _, finfo := range sinfo.FieldsList {\n\t\t\t\t\tif _, found := fieldsMap[finfo.Key]; found {\n\t\t\t\t\t\tmsg := \"Duplicated key '\" + finfo.Key + \"' in struct \" + st.String()\n\t\t\t\t\t\treturn nil, errors.New(msg)\n\t\t\t\t\t}\n\t\t\t\t\tif finfo.Inline == nil {\n\t\t\t\t\t\tfinfo.Inline = []int{i, finfo.Num}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfinfo.Inline = append([]int{i}, finfo.Inline...)\n\t\t\t\t\t}\n\t\t\t\t\tfinfo.Id = len(fieldsList)\n\t\t\t\t\tfieldsMap[finfo.Key] = finfo\n\t\t\t\t\tfieldsList = append(fieldsList, finfo)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\t//return nil, errors.New(\"Option ,inline needs a struct value or map field\")\n\t\t\t\treturn nil, errors.New(\"Option ,inline needs a struct value field\")\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif tag != \"\" {\n\t\t\tinfo.Key = tag\n\t\t} else {\n\t\t\tinfo.Key = strings.ToLower(field.Name)\n\t\t}\n\n\t\tif _, found = fieldsMap[info.Key]; found {\n\t\t\tmsg := \"Duplicated key '\" + info.Key + \"' in struct \" + st.String()\n\t\t\treturn nil, errors.New(msg)\n\t\t}\n\n\t\tinfo.Id = len(fieldsList)\n\t\tfieldsList = append(fieldsList, info)\n\t\tfieldsMap[info.Key] = info\n\t}\n\n\tsinfo = &structInfo{\n\t\tFieldsMap:  fieldsMap,\n\t\tFieldsList: fieldsList,\n\t\tInlineMap:  inlineMap,\n\t}\n\n\tfieldMapMutex.Lock()\n\tstructMap[st] = sinfo\n\tfieldMapMutex.Unlock()\n\treturn sinfo, nil\n}\n\n// IsZeroer is used to check whether an object is zero to\n// determine whether it should be omitted when marshaling\n// with the omitempty flag. One notable implementation\n// is time.Time.\ntype IsZeroer interface {\n\tIsZero() bool\n}\n\nfunc isZero(v reflect.Value) bool {\n\tkind := v.Kind()\n\tif z, ok := v.Interface().(IsZeroer); ok {\n\t\tif (kind == reflect.Ptr || kind == reflect.Interface) && v.IsNil() {\n\t\t\treturn true\n\t\t}\n\t\treturn z.IsZero()\n\t}\n\tswitch kind {\n\tcase reflect.String:\n\t\treturn len(v.String()) == 0\n\tcase reflect.Interface, reflect.Ptr:\n\t\treturn v.IsNil()\n\tcase reflect.Slice:\n\t\treturn v.Len() == 0\n\tcase reflect.Map:\n\t\treturn v.Len() == 0\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn v.Int() == 0\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float() == 0\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn v.Uint() == 0\n\tcase reflect.Bool:\n\t\treturn !v.Bool()\n\tcase reflect.Struct:\n\t\tvt := v.Type()\n\t\tfor i := v.NumField() - 1; i >= 0; i-- {\n\t\t\tif vt.Field(i).PkgPath != \"\" {\n\t\t\t\tcontinue // Private field\n\t\t\t}\n\t\t\tif !isZero(v.Field(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n\n// FutureLineWrap globally disables line wrapping when encoding long strings.\n// This is a temporary and thus deprecated method introduced to faciliate\n// migration towards v3, which offers more control of line lengths on\n// individual encodings, and has a default matching the behavior introduced\n// by this function.\n//\n// The default formatting of v2 was erroneously changed in v2.3.0 and reverted\n// in v2.4.0, at which point this function was introduced to help migration.\nfunc FutureLineWrap() {\n\tdisableLineWrapping = true\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/yamlh.go",
    "content": "package yaml\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n// The version directive data.\ntype yaml_version_directive_t struct {\n\tmajor int8 // The major version number.\n\tminor int8 // The minor version number.\n}\n\n// The tag directive data.\ntype yaml_tag_directive_t struct {\n\thandle []byte // The tag handle.\n\tprefix []byte // The tag prefix.\n}\n\ntype yaml_encoding_t int\n\n// The stream encoding.\nconst (\n\t// Let the parser choose the encoding.\n\tyaml_ANY_ENCODING yaml_encoding_t = iota\n\n\tyaml_UTF8_ENCODING    // The default UTF-8 encoding.\n\tyaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM.\n\tyaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM.\n)\n\ntype yaml_break_t int\n\n// Line break types.\nconst (\n\t// Let the parser choose the break type.\n\tyaml_ANY_BREAK yaml_break_t = iota\n\n\tyaml_CR_BREAK   // Use CR for line breaks (Mac style).\n\tyaml_LN_BREAK   // Use LN for line breaks (Unix style).\n\tyaml_CRLN_BREAK // Use CR LN for line breaks (DOS style).\n)\n\ntype yaml_error_type_t int\n\n// Many bad things could happen with the parser and emitter.\nconst (\n\t// No error is produced.\n\tyaml_NO_ERROR yaml_error_type_t = iota\n\n\tyaml_MEMORY_ERROR   // Cannot allocate or reallocate a block of memory.\n\tyaml_READER_ERROR   // Cannot read or decode the input stream.\n\tyaml_SCANNER_ERROR  // Cannot scan the input stream.\n\tyaml_PARSER_ERROR   // Cannot parse the input stream.\n\tyaml_COMPOSER_ERROR // Cannot compose a YAML document.\n\tyaml_WRITER_ERROR   // Cannot write to the output stream.\n\tyaml_EMITTER_ERROR  // Cannot emit a YAML stream.\n)\n\n// The pointer position.\ntype yaml_mark_t struct {\n\tindex  int // The position index.\n\tline   int // The position line.\n\tcolumn int // The position column.\n}\n\n// Node Styles\n\ntype yaml_style_t int8\n\ntype yaml_scalar_style_t yaml_style_t\n\n// Scalar styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_SCALAR_STYLE yaml_scalar_style_t = iota\n\n\tyaml_PLAIN_SCALAR_STYLE         // The plain scalar style.\n\tyaml_SINGLE_QUOTED_SCALAR_STYLE // The single-quoted scalar style.\n\tyaml_DOUBLE_QUOTED_SCALAR_STYLE // The double-quoted scalar style.\n\tyaml_LITERAL_SCALAR_STYLE       // The literal scalar style.\n\tyaml_FOLDED_SCALAR_STYLE        // The folded scalar style.\n)\n\ntype yaml_sequence_style_t yaml_style_t\n\n// Sequence styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota\n\n\tyaml_BLOCK_SEQUENCE_STYLE // The block sequence style.\n\tyaml_FLOW_SEQUENCE_STYLE  // The flow sequence style.\n)\n\ntype yaml_mapping_style_t yaml_style_t\n\n// Mapping styles.\nconst (\n\t// Let the emitter choose the style.\n\tyaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota\n\n\tyaml_BLOCK_MAPPING_STYLE // The block mapping style.\n\tyaml_FLOW_MAPPING_STYLE  // The flow mapping style.\n)\n\n// Tokens\n\ntype yaml_token_type_t int\n\n// Token types.\nconst (\n\t// An empty token.\n\tyaml_NO_TOKEN yaml_token_type_t = iota\n\n\tyaml_STREAM_START_TOKEN // A STREAM-START token.\n\tyaml_STREAM_END_TOKEN   // A STREAM-END token.\n\n\tyaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token.\n\tyaml_TAG_DIRECTIVE_TOKEN     // A TAG-DIRECTIVE token.\n\tyaml_DOCUMENT_START_TOKEN    // A DOCUMENT-START token.\n\tyaml_DOCUMENT_END_TOKEN      // A DOCUMENT-END token.\n\n\tyaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token.\n\tyaml_BLOCK_MAPPING_START_TOKEN  // A BLOCK-SEQUENCE-END token.\n\tyaml_BLOCK_END_TOKEN            // A BLOCK-END token.\n\n\tyaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token.\n\tyaml_FLOW_SEQUENCE_END_TOKEN   // A FLOW-SEQUENCE-END token.\n\tyaml_FLOW_MAPPING_START_TOKEN  // A FLOW-MAPPING-START token.\n\tyaml_FLOW_MAPPING_END_TOKEN    // A FLOW-MAPPING-END token.\n\n\tyaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token.\n\tyaml_FLOW_ENTRY_TOKEN  // A FLOW-ENTRY token.\n\tyaml_KEY_TOKEN         // A KEY token.\n\tyaml_VALUE_TOKEN       // A VALUE token.\n\n\tyaml_ALIAS_TOKEN  // An ALIAS token.\n\tyaml_ANCHOR_TOKEN // An ANCHOR token.\n\tyaml_TAG_TOKEN    // A TAG token.\n\tyaml_SCALAR_TOKEN // A SCALAR token.\n)\n\nfunc (tt yaml_token_type_t) String() string {\n\tswitch tt {\n\tcase yaml_NO_TOKEN:\n\t\treturn \"yaml_NO_TOKEN\"\n\tcase yaml_STREAM_START_TOKEN:\n\t\treturn \"yaml_STREAM_START_TOKEN\"\n\tcase yaml_STREAM_END_TOKEN:\n\t\treturn \"yaml_STREAM_END_TOKEN\"\n\tcase yaml_VERSION_DIRECTIVE_TOKEN:\n\t\treturn \"yaml_VERSION_DIRECTIVE_TOKEN\"\n\tcase yaml_TAG_DIRECTIVE_TOKEN:\n\t\treturn \"yaml_TAG_DIRECTIVE_TOKEN\"\n\tcase yaml_DOCUMENT_START_TOKEN:\n\t\treturn \"yaml_DOCUMENT_START_TOKEN\"\n\tcase yaml_DOCUMENT_END_TOKEN:\n\t\treturn \"yaml_DOCUMENT_END_TOKEN\"\n\tcase yaml_BLOCK_SEQUENCE_START_TOKEN:\n\t\treturn \"yaml_BLOCK_SEQUENCE_START_TOKEN\"\n\tcase yaml_BLOCK_MAPPING_START_TOKEN:\n\t\treturn \"yaml_BLOCK_MAPPING_START_TOKEN\"\n\tcase yaml_BLOCK_END_TOKEN:\n\t\treturn \"yaml_BLOCK_END_TOKEN\"\n\tcase yaml_FLOW_SEQUENCE_START_TOKEN:\n\t\treturn \"yaml_FLOW_SEQUENCE_START_TOKEN\"\n\tcase yaml_FLOW_SEQUENCE_END_TOKEN:\n\t\treturn \"yaml_FLOW_SEQUENCE_END_TOKEN\"\n\tcase yaml_FLOW_MAPPING_START_TOKEN:\n\t\treturn \"yaml_FLOW_MAPPING_START_TOKEN\"\n\tcase yaml_FLOW_MAPPING_END_TOKEN:\n\t\treturn \"yaml_FLOW_MAPPING_END_TOKEN\"\n\tcase yaml_BLOCK_ENTRY_TOKEN:\n\t\treturn \"yaml_BLOCK_ENTRY_TOKEN\"\n\tcase yaml_FLOW_ENTRY_TOKEN:\n\t\treturn \"yaml_FLOW_ENTRY_TOKEN\"\n\tcase yaml_KEY_TOKEN:\n\t\treturn \"yaml_KEY_TOKEN\"\n\tcase yaml_VALUE_TOKEN:\n\t\treturn \"yaml_VALUE_TOKEN\"\n\tcase yaml_ALIAS_TOKEN:\n\t\treturn \"yaml_ALIAS_TOKEN\"\n\tcase yaml_ANCHOR_TOKEN:\n\t\treturn \"yaml_ANCHOR_TOKEN\"\n\tcase yaml_TAG_TOKEN:\n\t\treturn \"yaml_TAG_TOKEN\"\n\tcase yaml_SCALAR_TOKEN:\n\t\treturn \"yaml_SCALAR_TOKEN\"\n\t}\n\treturn \"<unknown token>\"\n}\n\n// The token structure.\ntype yaml_token_t struct {\n\t// The token type.\n\ttyp yaml_token_type_t\n\n\t// The start/end of the token.\n\tstart_mark, end_mark yaml_mark_t\n\n\t// The stream encoding (for yaml_STREAM_START_TOKEN).\n\tencoding yaml_encoding_t\n\n\t// The alias/anchor/scalar value or tag/tag directive handle\n\t// (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN).\n\tvalue []byte\n\n\t// The tag suffix (for yaml_TAG_TOKEN).\n\tsuffix []byte\n\n\t// The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN).\n\tprefix []byte\n\n\t// The scalar style (for yaml_SCALAR_TOKEN).\n\tstyle yaml_scalar_style_t\n\n\t// The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN).\n\tmajor, minor int8\n}\n\n// Events\n\ntype yaml_event_type_t int8\n\n// Event types.\nconst (\n\t// An empty event.\n\tyaml_NO_EVENT yaml_event_type_t = iota\n\n\tyaml_STREAM_START_EVENT   // A STREAM-START event.\n\tyaml_STREAM_END_EVENT     // A STREAM-END event.\n\tyaml_DOCUMENT_START_EVENT // A DOCUMENT-START event.\n\tyaml_DOCUMENT_END_EVENT   // A DOCUMENT-END event.\n\tyaml_ALIAS_EVENT          // An ALIAS event.\n\tyaml_SCALAR_EVENT         // A SCALAR event.\n\tyaml_SEQUENCE_START_EVENT // A SEQUENCE-START event.\n\tyaml_SEQUENCE_END_EVENT   // A SEQUENCE-END event.\n\tyaml_MAPPING_START_EVENT  // A MAPPING-START event.\n\tyaml_MAPPING_END_EVENT    // A MAPPING-END event.\n)\n\nvar eventStrings = []string{\n\tyaml_NO_EVENT:             \"none\",\n\tyaml_STREAM_START_EVENT:   \"stream start\",\n\tyaml_STREAM_END_EVENT:     \"stream end\",\n\tyaml_DOCUMENT_START_EVENT: \"document start\",\n\tyaml_DOCUMENT_END_EVENT:   \"document end\",\n\tyaml_ALIAS_EVENT:          \"alias\",\n\tyaml_SCALAR_EVENT:         \"scalar\",\n\tyaml_SEQUENCE_START_EVENT: \"sequence start\",\n\tyaml_SEQUENCE_END_EVENT:   \"sequence end\",\n\tyaml_MAPPING_START_EVENT:  \"mapping start\",\n\tyaml_MAPPING_END_EVENT:    \"mapping end\",\n}\n\nfunc (e yaml_event_type_t) String() string {\n\tif e < 0 || int(e) >= len(eventStrings) {\n\t\treturn fmt.Sprintf(\"unknown event %d\", e)\n\t}\n\treturn eventStrings[e]\n}\n\n// The event structure.\ntype yaml_event_t struct {\n\n\t// The event type.\n\ttyp yaml_event_type_t\n\n\t// The start and end of the event.\n\tstart_mark, end_mark yaml_mark_t\n\n\t// The document encoding (for yaml_STREAM_START_EVENT).\n\tencoding yaml_encoding_t\n\n\t// The version directive (for yaml_DOCUMENT_START_EVENT).\n\tversion_directive *yaml_version_directive_t\n\n\t// The list of tag directives (for yaml_DOCUMENT_START_EVENT).\n\ttag_directives []yaml_tag_directive_t\n\n\t// The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT).\n\tanchor []byte\n\n\t// The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).\n\ttag []byte\n\n\t// The scalar value (for yaml_SCALAR_EVENT).\n\tvalue []byte\n\n\t// Is the document start/end indicator implicit, or the tag optional?\n\t// (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT).\n\timplicit bool\n\n\t// Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT).\n\tquoted_implicit bool\n\n\t// The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).\n\tstyle yaml_style_t\n}\n\nfunc (e *yaml_event_t) scalar_style() yaml_scalar_style_t     { return yaml_scalar_style_t(e.style) }\nfunc (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) }\nfunc (e *yaml_event_t) mapping_style() yaml_mapping_style_t   { return yaml_mapping_style_t(e.style) }\n\n// Nodes\n\nconst (\n\tyaml_NULL_TAG      = \"tag:yaml.org,2002:null\"      // The tag !!null with the only possible value: null.\n\tyaml_BOOL_TAG      = \"tag:yaml.org,2002:bool\"      // The tag !!bool with the values: true and false.\n\tyaml_STR_TAG       = \"tag:yaml.org,2002:str\"       // The tag !!str for string values.\n\tyaml_INT_TAG       = \"tag:yaml.org,2002:int\"       // The tag !!int for integer values.\n\tyaml_FLOAT_TAG     = \"tag:yaml.org,2002:float\"     // The tag !!float for float values.\n\tyaml_TIMESTAMP_TAG = \"tag:yaml.org,2002:timestamp\" // The tag !!timestamp for date and time values.\n\n\tyaml_SEQ_TAG = \"tag:yaml.org,2002:seq\" // The tag !!seq is used to denote sequences.\n\tyaml_MAP_TAG = \"tag:yaml.org,2002:map\" // The tag !!map is used to denote mapping.\n\n\t// Not in original libyaml.\n\tyaml_BINARY_TAG = \"tag:yaml.org,2002:binary\"\n\tyaml_MERGE_TAG  = \"tag:yaml.org,2002:merge\"\n\n\tyaml_DEFAULT_SCALAR_TAG   = yaml_STR_TAG // The default scalar tag is !!str.\n\tyaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq.\n\tyaml_DEFAULT_MAPPING_TAG  = yaml_MAP_TAG // The default mapping tag is !!map.\n)\n\ntype yaml_node_type_t int\n\n// Node types.\nconst (\n\t// An empty node.\n\tyaml_NO_NODE yaml_node_type_t = iota\n\n\tyaml_SCALAR_NODE   // A scalar node.\n\tyaml_SEQUENCE_NODE // A sequence node.\n\tyaml_MAPPING_NODE  // A mapping node.\n)\n\n// An element of a sequence node.\ntype yaml_node_item_t int\n\n// An element of a mapping node.\ntype yaml_node_pair_t struct {\n\tkey   int // The key of the element.\n\tvalue int // The value of the element.\n}\n\n// The node structure.\ntype yaml_node_t struct {\n\ttyp yaml_node_type_t // The node type.\n\ttag []byte           // The node tag.\n\n\t// The node data.\n\n\t// The scalar parameters (for yaml_SCALAR_NODE).\n\tscalar struct {\n\t\tvalue  []byte              // The scalar value.\n\t\tlength int                 // The length of the scalar value.\n\t\tstyle  yaml_scalar_style_t // The scalar style.\n\t}\n\n\t// The sequence parameters (for YAML_SEQUENCE_NODE).\n\tsequence struct {\n\t\titems_data []yaml_node_item_t    // The stack of sequence items.\n\t\tstyle      yaml_sequence_style_t // The sequence style.\n\t}\n\n\t// The mapping parameters (for yaml_MAPPING_NODE).\n\tmapping struct {\n\t\tpairs_data  []yaml_node_pair_t   // The stack of mapping pairs (key, value).\n\t\tpairs_start *yaml_node_pair_t    // The beginning of the stack.\n\t\tpairs_end   *yaml_node_pair_t    // The end of the stack.\n\t\tpairs_top   *yaml_node_pair_t    // The top of the stack.\n\t\tstyle       yaml_mapping_style_t // The mapping style.\n\t}\n\n\tstart_mark yaml_mark_t // The beginning of the node.\n\tend_mark   yaml_mark_t // The end of the node.\n\n}\n\n// The document structure.\ntype yaml_document_t struct {\n\n\t// The document nodes.\n\tnodes []yaml_node_t\n\n\t// The version directive.\n\tversion_directive *yaml_version_directive_t\n\n\t// The list of tag directives.\n\ttag_directives_data  []yaml_tag_directive_t\n\ttag_directives_start int // The beginning of the tag directives list.\n\ttag_directives_end   int // The end of the tag directives list.\n\n\tstart_implicit int // Is the document start indicator implicit?\n\tend_implicit   int // Is the document end indicator implicit?\n\n\t// The start/end of the document.\n\tstart_mark, end_mark yaml_mark_t\n}\n\n// The prototype of a read handler.\n//\n// The read handler is called when the parser needs to read more bytes from the\n// source. The handler should write not more than size bytes to the buffer.\n// The number of written bytes should be set to the size_read variable.\n//\n// [in,out]   data        A pointer to an application data specified by\n//                        yaml_parser_set_input().\n// [out]      buffer      The buffer to write the data from the source.\n// [in]       size        The size of the buffer.\n// [out]      size_read   The actual number of bytes read from the source.\n//\n// On success, the handler should return 1.  If the handler failed,\n// the returned value should be 0. On EOF, the handler should set the\n// size_read to 0 and return 1.\ntype yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error)\n\n// This structure holds information about a potential simple key.\ntype yaml_simple_key_t struct {\n\tpossible     bool        // Is a simple key possible?\n\trequired     bool        // Is a simple key required?\n\ttoken_number int         // The number of the token.\n\tmark         yaml_mark_t // The position mark.\n}\n\n// The states of the parser.\ntype yaml_parser_state_t int\n\nconst (\n\tyaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota\n\n\tyaml_PARSE_IMPLICIT_DOCUMENT_START_STATE           // Expect the beginning of an implicit document.\n\tyaml_PARSE_DOCUMENT_START_STATE                    // Expect DOCUMENT-START.\n\tyaml_PARSE_DOCUMENT_CONTENT_STATE                  // Expect the content of a document.\n\tyaml_PARSE_DOCUMENT_END_STATE                      // Expect DOCUMENT-END.\n\tyaml_PARSE_BLOCK_NODE_STATE                        // Expect a block node.\n\tyaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence.\n\tyaml_PARSE_FLOW_NODE_STATE                         // Expect a flow node.\n\tyaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE        // Expect the first entry of a block sequence.\n\tyaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE              // Expect an entry of a block sequence.\n\tyaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE         // Expect an entry of an indentless sequence.\n\tyaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE           // Expect the first key of a block mapping.\n\tyaml_PARSE_BLOCK_MAPPING_KEY_STATE                 // Expect a block mapping key.\n\tyaml_PARSE_BLOCK_MAPPING_VALUE_STATE               // Expect a block mapping value.\n\tyaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE         // Expect the first entry of a flow sequence.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE               // Expect an entry of a flow sequence.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE   // Expect a key of an ordered mapping.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping.\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE   // Expect the and of an ordered mapping entry.\n\tyaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE            // Expect the first key of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_KEY_STATE                  // Expect a key of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_VALUE_STATE                // Expect a value of a flow mapping.\n\tyaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE          // Expect an empty value of a flow mapping.\n\tyaml_PARSE_END_STATE                               // Expect nothing.\n)\n\nfunc (ps yaml_parser_state_t) String() string {\n\tswitch ps {\n\tcase yaml_PARSE_STREAM_START_STATE:\n\t\treturn \"yaml_PARSE_STREAM_START_STATE\"\n\tcase yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:\n\t\treturn \"yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\"\n\tcase yaml_PARSE_DOCUMENT_START_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_START_STATE\"\n\tcase yaml_PARSE_DOCUMENT_CONTENT_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_CONTENT_STATE\"\n\tcase yaml_PARSE_DOCUMENT_END_STATE:\n\t\treturn \"yaml_PARSE_DOCUMENT_END_STATE\"\n\tcase yaml_PARSE_BLOCK_NODE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_NODE_STATE\"\n\tcase yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE\"\n\tcase yaml_PARSE_FLOW_NODE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_NODE_STATE\"\n\tcase yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\"\n\tcase yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_BLOCK_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:\n\t\treturn \"yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_KEY_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_KEY_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_VALUE_STATE\"\n\tcase yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:\n\t\treturn \"yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE\"\n\tcase yaml_PARSE_END_STATE:\n\t\treturn \"yaml_PARSE_END_STATE\"\n\t}\n\treturn \"<unknown parser state>\"\n}\n\n// This structure holds aliases data.\ntype yaml_alias_data_t struct {\n\tanchor []byte      // The anchor.\n\tindex  int         // The node id.\n\tmark   yaml_mark_t // The anchor mark.\n}\n\n// The parser structure.\n//\n// All members are internal. Manage the structure using the\n// yaml_parser_ family of functions.\ntype yaml_parser_t struct {\n\n\t// Error handling\n\n\terror yaml_error_type_t // Error type.\n\n\tproblem string // Error description.\n\n\t// The byte about which the problem occurred.\n\tproblem_offset int\n\tproblem_value  int\n\tproblem_mark   yaml_mark_t\n\n\t// The error context.\n\tcontext      string\n\tcontext_mark yaml_mark_t\n\n\t// Reader stuff\n\n\tread_handler yaml_read_handler_t // Read handler.\n\n\tinput_reader io.Reader // File input data.\n\tinput        []byte    // String input data.\n\tinput_pos    int\n\n\teof bool // EOF flag\n\n\tbuffer     []byte // The working buffer.\n\tbuffer_pos int    // The current position of the buffer.\n\n\tunread int // The number of unread characters in the buffer.\n\n\traw_buffer     []byte // The raw buffer.\n\traw_buffer_pos int    // The current position of the buffer.\n\n\tencoding yaml_encoding_t // The input encoding.\n\n\toffset int         // The offset of the current position (in bytes).\n\tmark   yaml_mark_t // The mark of the current position.\n\n\t// Scanner stuff\n\n\tstream_start_produced bool // Have we started to scan the input stream?\n\tstream_end_produced   bool // Have we reached the end of the input stream?\n\n\tflow_level int // The number of unclosed '[' and '{' indicators.\n\n\ttokens          []yaml_token_t // The tokens queue.\n\ttokens_head     int            // The head of the tokens queue.\n\ttokens_parsed   int            // The number of tokens fetched from the queue.\n\ttoken_available bool           // Does the tokens queue contain a token ready for dequeueing.\n\n\tindent  int   // The current indentation level.\n\tindents []int // The indentation levels stack.\n\n\tsimple_key_allowed bool                // May a simple key occur at the current position?\n\tsimple_keys        []yaml_simple_key_t // The stack of simple keys.\n\tsimple_keys_by_tok map[int]int         // possible simple_key indexes indexed by token_number\n\n\t// Parser stuff\n\n\tstate          yaml_parser_state_t    // The current parser state.\n\tstates         []yaml_parser_state_t  // The parser states stack.\n\tmarks          []yaml_mark_t          // The stack of marks.\n\ttag_directives []yaml_tag_directive_t // The list of TAG directives.\n\n\t// Dumper stuff\n\n\taliases []yaml_alias_data_t // The alias data.\n\n\tdocument *yaml_document_t // The currently parsed document.\n}\n\n// Emitter Definitions\n\n// The prototype of a write handler.\n//\n// The write handler is called when the emitter needs to flush the accumulated\n// characters to the output.  The handler should write @a size bytes of the\n// @a buffer to the output.\n//\n// @param[in,out]   data        A pointer to an application data specified by\n//                              yaml_emitter_set_output().\n// @param[in]       buffer      The buffer with bytes to be written.\n// @param[in]       size        The size of the buffer.\n//\n// @returns On success, the handler should return @c 1.  If the handler failed,\n// the returned value should be @c 0.\n//\ntype yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error\n\ntype yaml_emitter_state_t int\n\n// The emitter states.\nconst (\n\t// Expect STREAM-START.\n\tyaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota\n\n\tyaml_EMIT_FIRST_DOCUMENT_START_STATE       // Expect the first DOCUMENT-START or STREAM-END.\n\tyaml_EMIT_DOCUMENT_START_STATE             // Expect DOCUMENT-START or STREAM-END.\n\tyaml_EMIT_DOCUMENT_CONTENT_STATE           // Expect the content of a document.\n\tyaml_EMIT_DOCUMENT_END_STATE               // Expect DOCUMENT-END.\n\tyaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE   // Expect the first item of a flow sequence.\n\tyaml_EMIT_FLOW_SEQUENCE_ITEM_STATE         // Expect an item of a flow sequence.\n\tyaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE     // Expect the first key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_KEY_STATE           // Expect a key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE  // Expect a value for a simple key of a flow mapping.\n\tyaml_EMIT_FLOW_MAPPING_VALUE_STATE         // Expect a value of a flow mapping.\n\tyaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE  // Expect the first item of a block sequence.\n\tyaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE        // Expect an item of a block sequence.\n\tyaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE    // Expect the first key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_KEY_STATE          // Expect the key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping.\n\tyaml_EMIT_BLOCK_MAPPING_VALUE_STATE        // Expect a value of a block mapping.\n\tyaml_EMIT_END_STATE                        // Expect nothing.\n)\n\n// The emitter structure.\n//\n// All members are internal.  Manage the structure using the @c yaml_emitter_\n// family of functions.\ntype yaml_emitter_t struct {\n\n\t// Error handling\n\n\terror   yaml_error_type_t // Error type.\n\tproblem string            // Error description.\n\n\t// Writer stuff\n\n\twrite_handler yaml_write_handler_t // Write handler.\n\n\toutput_buffer *[]byte   // String output data.\n\toutput_writer io.Writer // File output data.\n\n\tbuffer     []byte // The working buffer.\n\tbuffer_pos int    // The current position of the buffer.\n\n\traw_buffer     []byte // The raw buffer.\n\traw_buffer_pos int    // The current position of the buffer.\n\n\tencoding yaml_encoding_t // The stream encoding.\n\n\t// Emitter stuff\n\n\tcanonical   bool         // If the output is in the canonical style?\n\tbest_indent int          // The number of indentation spaces.\n\tbest_width  int          // The preferred width of the output lines.\n\tunicode     bool         // Allow unescaped non-ASCII characters?\n\tline_break  yaml_break_t // The preferred line break.\n\n\tstate  yaml_emitter_state_t   // The current emitter state.\n\tstates []yaml_emitter_state_t // The stack of states.\n\n\tevents      []yaml_event_t // The event queue.\n\tevents_head int            // The head of the event queue.\n\n\tindents []int // The stack of indentation levels.\n\n\ttag_directives []yaml_tag_directive_t // The list of tag directives.\n\n\tindent int // The current indentation level.\n\n\tflow_level int // The current flow level.\n\n\troot_context       bool // Is it the document root context?\n\tsequence_context   bool // Is it a sequence context?\n\tmapping_context    bool // Is it a mapping context?\n\tsimple_key_context bool // Is it a simple mapping key context?\n\n\tline       int  // The current line.\n\tcolumn     int  // The current column.\n\twhitespace bool // If the last character was a whitespace?\n\tindention  bool // If the last character was an indentation character (' ', '-', '?', ':')?\n\topen_ended bool // If an explicit document end is required?\n\n\t// Anchor analysis.\n\tanchor_data struct {\n\t\tanchor []byte // The anchor value.\n\t\talias  bool   // Is it an alias?\n\t}\n\n\t// Tag analysis.\n\ttag_data struct {\n\t\thandle []byte // The tag handle.\n\t\tsuffix []byte // The tag suffix.\n\t}\n\n\t// Scalar analysis.\n\tscalar_data struct {\n\t\tvalue                 []byte              // The scalar value.\n\t\tmultiline             bool                // Does the scalar contain line breaks?\n\t\tflow_plain_allowed    bool                // Can the scalar be expessed in the flow plain style?\n\t\tblock_plain_allowed   bool                // Can the scalar be expressed in the block plain style?\n\t\tsingle_quoted_allowed bool                // Can the scalar be expressed in the single quoted style?\n\t\tblock_allowed         bool                // Can the scalar be expressed in the literal or folded styles?\n\t\tstyle                 yaml_scalar_style_t // The output style.\n\t}\n\n\t// Dumper stuff\n\n\topened bool // If the stream was already opened?\n\tclosed bool // If the stream was already closed?\n\n\t// The information associated with the document nodes.\n\tanchors *struct {\n\t\treferences int  // The number of references.\n\t\tanchor     int  // The anchor id.\n\t\tserialized bool // If the node has been emitted?\n\t}\n\n\tlast_anchor_id int // The last assigned anchor id.\n\n\tdocument *yaml_document_t // The currently emitted document.\n}\n"
  },
  {
    "path": "vendor/gopkg.in/yaml.v2/yamlprivateh.go",
    "content": "package yaml\n\nconst (\n\t// The size of the input raw buffer.\n\tinput_raw_buffer_size = 512\n\n\t// The size of the input buffer.\n\t// It should be possible to decode the whole raw buffer.\n\tinput_buffer_size = input_raw_buffer_size * 3\n\n\t// The size of the output buffer.\n\toutput_buffer_size = 128\n\n\t// The size of the output raw buffer.\n\t// It should be possible to encode the whole output buffer.\n\toutput_raw_buffer_size = (output_buffer_size*2 + 2)\n\n\t// The size of other stacks and queues.\n\tinitial_stack_size  = 16\n\tinitial_queue_size  = 16\n\tinitial_string_size = 16\n)\n\n// Check if the character at the specified position is an alphabetical\n// character, a digit, '_', or '-'.\nfunc is_alpha(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-'\n}\n\n// Check if the character at the specified position is a digit.\nfunc is_digit(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9'\n}\n\n// Get the value of a digit.\nfunc as_digit(b []byte, i int) int {\n\treturn int(b[i]) - '0'\n}\n\n// Check if the character at the specified position is a hex-digit.\nfunc is_hex(b []byte, i int) bool {\n\treturn b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f'\n}\n\n// Get the value of a hex-digit.\nfunc as_hex(b []byte, i int) int {\n\tbi := b[i]\n\tif bi >= 'A' && bi <= 'F' {\n\t\treturn int(bi) - 'A' + 10\n\t}\n\tif bi >= 'a' && bi <= 'f' {\n\t\treturn int(bi) - 'a' + 10\n\t}\n\treturn int(bi) - '0'\n}\n\n// Check if the character is ASCII.\nfunc is_ascii(b []byte, i int) bool {\n\treturn b[i] <= 0x7F\n}\n\n// Check if the character at the start of the buffer can be printed unescaped.\nfunc is_printable(b []byte, i int) bool {\n\treturn ((b[i] == 0x0A) || // . == #x0A\n\t\t(b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E\n\t\t(b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF\n\t\t(b[i] > 0xC2 && b[i] < 0xED) ||\n\t\t(b[i] == 0xED && b[i+1] < 0xA0) ||\n\t\t(b[i] == 0xEE) ||\n\t\t(b[i] == 0xEF && // #xE000 <= . <= #xFFFD\n\t\t\t!(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF\n\t\t\t!(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF))))\n}\n\n// Check if the character at the specified position is NUL.\nfunc is_z(b []byte, i int) bool {\n\treturn b[i] == 0x00\n}\n\n// Check if the beginning of the buffer is a BOM.\nfunc is_bom(b []byte, i int) bool {\n\treturn b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF\n}\n\n// Check if the character at the specified position is space.\nfunc is_space(b []byte, i int) bool {\n\treturn b[i] == ' '\n}\n\n// Check if the character at the specified position is tab.\nfunc is_tab(b []byte, i int) bool {\n\treturn b[i] == '\\t'\n}\n\n// Check if the character at the specified position is blank (space or tab).\nfunc is_blank(b []byte, i int) bool {\n\t//return is_space(b, i) || is_tab(b, i)\n\treturn b[i] == ' ' || b[i] == '\\t'\n}\n\n// Check if the character at the specified position is a line break.\nfunc is_break(b []byte, i int) bool {\n\treturn (b[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029)\n}\n\nfunc is_crlf(b []byte, i int) bool {\n\treturn b[i] == '\\r' && b[i+1] == '\\n'\n}\n\n// Check if the character is a line break or NUL.\nfunc is_breakz(b []byte, i int) bool {\n\t//return is_break(b, i) || is_z(b, i)\n\treturn (        // is_break:\n\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\t// is_z:\n\t\tb[i] == 0)\n}\n\n// Check if the character is a line break, space, or NUL.\nfunc is_spacez(b []byte, i int) bool {\n\t//return is_space(b, i) || is_breakz(b, i)\n\treturn ( // is_space:\n\tb[i] == ' ' ||\n\t\t// is_breakz:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\tb[i] == 0)\n}\n\n// Check if the character is a line break, space, tab, or NUL.\nfunc is_blankz(b []byte, i int) bool {\n\t//return is_blank(b, i) || is_breakz(b, i)\n\treturn ( // is_blank:\n\tb[i] == ' ' || b[i] == '\\t' ||\n\t\t// is_breakz:\n\t\tb[i] == '\\r' || // CR (#xD)\n\t\tb[i] == '\\n' || // LF (#xA)\n\t\tb[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)\n\t\tb[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)\n\t\tb[i] == 0)\n}\n\n// Determine the width of the character.\nfunc width(b byte) int {\n\t// Don't replace these by a switch without first\n\t// confirming that it is being inlined.\n\tif b&0x80 == 0x00 {\n\t\treturn 1\n\t}\n\tif b&0xE0 == 0xC0 {\n\t\treturn 2\n\t}\n\tif b&0xF0 == 0xE0 {\n\t\treturn 3\n\t}\n\tif b&0xF8 == 0xF0 {\n\t\treturn 4\n\t}\n\treturn 0\n\n}\n"
  },
  {
    "path": "vendor/modules.txt",
    "content": "# github.com/BurntSushi/toml v1.3.2\n## explicit; go 1.16\ngithub.com/BurntSushi/toml\ngithub.com/BurntSushi/toml/internal\n# github.com/armon/go-metrics v0.4.1\n## explicit; go 1.12\ngithub.com/armon/go-metrics\n# github.com/aws/aws-sdk-go v1.48.16\n## explicit; go 1.19\ngithub.com/aws/aws-sdk-go/aws\ngithub.com/aws/aws-sdk-go/aws/auth/bearer\ngithub.com/aws/aws-sdk-go/aws/awserr\ngithub.com/aws/aws-sdk-go/aws/awsutil\ngithub.com/aws/aws-sdk-go/aws/client\ngithub.com/aws/aws-sdk-go/aws/client/metadata\ngithub.com/aws/aws-sdk-go/aws/corehandlers\ngithub.com/aws/aws-sdk-go/aws/credentials\ngithub.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds\ngithub.com/aws/aws-sdk-go/aws/credentials/endpointcreds\ngithub.com/aws/aws-sdk-go/aws/credentials/processcreds\ngithub.com/aws/aws-sdk-go/aws/credentials/ssocreds\ngithub.com/aws/aws-sdk-go/aws/credentials/stscreds\ngithub.com/aws/aws-sdk-go/aws/crr\ngithub.com/aws/aws-sdk-go/aws/csm\ngithub.com/aws/aws-sdk-go/aws/defaults\ngithub.com/aws/aws-sdk-go/aws/ec2metadata\ngithub.com/aws/aws-sdk-go/aws/endpoints\ngithub.com/aws/aws-sdk-go/aws/request\ngithub.com/aws/aws-sdk-go/aws/session\ngithub.com/aws/aws-sdk-go/aws/signer/v4\ngithub.com/aws/aws-sdk-go/internal/context\ngithub.com/aws/aws-sdk-go/internal/ini\ngithub.com/aws/aws-sdk-go/internal/sdkio\ngithub.com/aws/aws-sdk-go/internal/sdkmath\ngithub.com/aws/aws-sdk-go/internal/sdkrand\ngithub.com/aws/aws-sdk-go/internal/sdkuri\ngithub.com/aws/aws-sdk-go/internal/shareddefaults\ngithub.com/aws/aws-sdk-go/internal/strings\ngithub.com/aws/aws-sdk-go/internal/sync/singleflight\ngithub.com/aws/aws-sdk-go/private/protocol\ngithub.com/aws/aws-sdk-go/private/protocol/json/jsonutil\ngithub.com/aws/aws-sdk-go/private/protocol/jsonrpc\ngithub.com/aws/aws-sdk-go/private/protocol/query\ngithub.com/aws/aws-sdk-go/private/protocol/query/queryutil\ngithub.com/aws/aws-sdk-go/private/protocol/rest\ngithub.com/aws/aws-sdk-go/private/protocol/restjson\ngithub.com/aws/aws-sdk-go/private/protocol/xml/xmlutil\ngithub.com/aws/aws-sdk-go/service/dynamodb\ngithub.com/aws/aws-sdk-go/service/ssm\ngithub.com/aws/aws-sdk-go/service/sso\ngithub.com/aws/aws-sdk-go/service/sso/ssoiface\ngithub.com/aws/aws-sdk-go/service/ssooidc\ngithub.com/aws/aws-sdk-go/service/sts\ngithub.com/aws/aws-sdk-go/service/sts/stsiface\n# github.com/cenkalti/backoff/v3 v3.2.2\n## explicit; go 1.12\ngithub.com/cenkalti/backoff/v3\n# github.com/coreos/go-semver v0.3.1\n## explicit; go 1.8\ngithub.com/coreos/go-semver/semver\n# github.com/coreos/go-systemd/v22 v22.5.0\n## explicit; go 1.12\ngithub.com/coreos/go-systemd/v22/journal\n# github.com/fatih/color v1.16.0\n## explicit; go 1.17\ngithub.com/fatih/color\n# github.com/fsnotify/fsnotify v1.7.0\n## explicit; go 1.17\ngithub.com/fsnotify/fsnotify\n# github.com/garyburd/redigo v1.6.4\n## explicit; go 1.17\ngithub.com/garyburd/redigo/internal\ngithub.com/garyburd/redigo/redis\n# github.com/go-jose/go-jose/v3 v3.0.1\n## explicit; go 1.12\ngithub.com/go-jose/go-jose/v3\ngithub.com/go-jose/go-jose/v3/cipher\ngithub.com/go-jose/go-jose/v3/json\ngithub.com/go-jose/go-jose/v3/jwt\n# github.com/go-test/deep v1.1.0\n## explicit; go 1.16\n# github.com/gogo/protobuf v1.3.2\n## explicit; go 1.15\ngithub.com/gogo/protobuf/gogoproto\ngithub.com/gogo/protobuf/proto\ngithub.com/gogo/protobuf/protoc-gen-gogo/descriptor\n# github.com/golang/protobuf v1.5.3\n## explicit; go 1.9\ngithub.com/golang/protobuf/jsonpb\ngithub.com/golang/protobuf/proto\ngithub.com/golang/protobuf/ptypes\ngithub.com/golang/protobuf/ptypes/any\ngithub.com/golang/protobuf/ptypes/duration\ngithub.com/golang/protobuf/ptypes/timestamp\n# github.com/hashicorp/consul/api v1.26.1\n## explicit; go 1.19\ngithub.com/hashicorp/consul/api\n# github.com/hashicorp/errwrap v1.1.0\n## explicit\ngithub.com/hashicorp/errwrap\n# github.com/hashicorp/go-cleanhttp v0.5.2\n## explicit; go 1.13\ngithub.com/hashicorp/go-cleanhttp\n# github.com/hashicorp/go-hclog v1.6.1\n## explicit; go 1.13\ngithub.com/hashicorp/go-hclog\n# github.com/hashicorp/go-immutable-radix v1.3.1\n## explicit\ngithub.com/hashicorp/go-immutable-radix\n# github.com/hashicorp/go-multierror v1.1.1\n## explicit; go 1.13\ngithub.com/hashicorp/go-multierror\n# github.com/hashicorp/go-retryablehttp v0.7.5\n## explicit; go 1.13\ngithub.com/hashicorp/go-retryablehttp\n# github.com/hashicorp/go-rootcerts v1.0.2\n## explicit; go 1.12\ngithub.com/hashicorp/go-rootcerts\n# github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8\n## explicit; go 1.20\ngithub.com/hashicorp/go-secure-stdlib/parseutil\n# github.com/hashicorp/go-secure-stdlib/strutil v0.1.2\n## explicit; go 1.16\ngithub.com/hashicorp/go-secure-stdlib/strutil\n# github.com/hashicorp/go-sockaddr v1.0.6\n## explicit; go 1.19\ngithub.com/hashicorp/go-sockaddr\n# github.com/hashicorp/go-version v1.6.0\n## explicit\n# github.com/hashicorp/golang-lru v1.0.2\n## explicit; go 1.12\ngithub.com/hashicorp/golang-lru/simplelru\n# github.com/hashicorp/hcl v1.0.1-vault-5\n## explicit; go 1.15\ngithub.com/hashicorp/hcl\ngithub.com/hashicorp/hcl/hcl/ast\ngithub.com/hashicorp/hcl/hcl/parser\ngithub.com/hashicorp/hcl/hcl/scanner\ngithub.com/hashicorp/hcl/hcl/strconv\ngithub.com/hashicorp/hcl/hcl/token\ngithub.com/hashicorp/hcl/json/parser\ngithub.com/hashicorp/hcl/json/scanner\ngithub.com/hashicorp/hcl/json/token\n# github.com/hashicorp/serf v0.10.1\n## explicit; go 1.12\ngithub.com/hashicorp/serf/coordinate\n# github.com/hashicorp/vault/api v1.10.0\n## explicit; go 1.19\ngithub.com/hashicorp/vault/api\n# github.com/jmespath/go-jmespath v0.4.0\n## explicit; go 1.14\ngithub.com/jmespath/go-jmespath\n# github.com/kelseyhightower/memkv v0.1.1\n## explicit\ngithub.com/kelseyhightower/memkv\n# github.com/mattn/go-colorable v0.1.13\n## explicit; go 1.15\ngithub.com/mattn/go-colorable\n# github.com/mattn/go-isatty v0.0.20\n## explicit; go 1.15\ngithub.com/mattn/go-isatty\n# github.com/mitchellh/go-homedir v1.1.0\n## explicit\ngithub.com/mitchellh/go-homedir\n# github.com/mitchellh/mapstructure v1.5.0\n## explicit; go 1.14\ngithub.com/mitchellh/mapstructure\n# github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e\n## explicit; go 1.12\n# github.com/ryanuber/go-glob v1.0.0\n## explicit\ngithub.com/ryanuber/go-glob\n# github.com/samuel/go-zookeeper v0.0.0-20201211165307-7117e9ea2414\n## explicit\ngithub.com/samuel/go-zookeeper/zk\n# github.com/sirupsen/logrus v1.9.3\n## explicit; go 1.13\ngithub.com/sirupsen/logrus\n# go.etcd.io/etcd/api/v3 v3.5.11\n## explicit; go 1.20\ngo.etcd.io/etcd/api/v3/authpb\ngo.etcd.io/etcd/api/v3/etcdserverpb\ngo.etcd.io/etcd/api/v3/membershippb\ngo.etcd.io/etcd/api/v3/mvccpb\ngo.etcd.io/etcd/api/v3/v3rpc/rpctypes\ngo.etcd.io/etcd/api/v3/version\n# go.etcd.io/etcd/client/pkg/v3 v3.5.11\n## explicit; go 1.20\ngo.etcd.io/etcd/client/pkg/v3/logutil\ngo.etcd.io/etcd/client/pkg/v3/systemd\ngo.etcd.io/etcd/client/pkg/v3/types\n# go.etcd.io/etcd/client/v3 v3.5.11\n## explicit; go 1.20\ngo.etcd.io/etcd/client/v3\ngo.etcd.io/etcd/client/v3/credentials\ngo.etcd.io/etcd/client/v3/internal/endpoint\ngo.etcd.io/etcd/client/v3/internal/resolver\n# go.uber.org/multierr v1.11.0\n## explicit; go 1.19\ngo.uber.org/multierr\n# go.uber.org/zap v1.26.0\n## explicit; go 1.19\ngo.uber.org/zap\ngo.uber.org/zap/buffer\ngo.uber.org/zap/internal\ngo.uber.org/zap/internal/bufferpool\ngo.uber.org/zap/internal/color\ngo.uber.org/zap/internal/exit\ngo.uber.org/zap/internal/pool\ngo.uber.org/zap/internal/stacktrace\ngo.uber.org/zap/zapcore\ngo.uber.org/zap/zapgrpc\n# golang.org/x/crypto v0.16.0\n## explicit; go 1.18\ngolang.org/x/crypto/pbkdf2\n# golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb\n## explicit; go 1.20\ngolang.org/x/exp/constraints\ngolang.org/x/exp/slices\n# golang.org/x/net v0.19.0\n## explicit; go 1.18\ngolang.org/x/net/http/httpguts\ngolang.org/x/net/http2\ngolang.org/x/net/http2/hpack\ngolang.org/x/net/idna\ngolang.org/x/net/internal/timeseries\ngolang.org/x/net/trace\n# golang.org/x/sys v0.15.0\n## explicit; go 1.18\ngolang.org/x/sys/unix\ngolang.org/x/sys/windows\n# golang.org/x/text v0.14.0\n## explicit; go 1.18\ngolang.org/x/text/secure/bidirule\ngolang.org/x/text/transform\ngolang.org/x/text/unicode/bidi\ngolang.org/x/text/unicode/norm\n# golang.org/x/time v0.5.0\n## explicit; go 1.18\ngolang.org/x/time/rate\n# google.golang.org/genproto v0.0.0-20231127180814-3a041ad873d4\n## explicit; go 1.19\ngoogle.golang.org/genproto/internal\n# google.golang.org/genproto/googleapis/api v0.0.0-20231127180814-3a041ad873d4\n## explicit; go 1.19\ngoogle.golang.org/genproto/googleapis/api\ngoogle.golang.org/genproto/googleapis/api/annotations\n# google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4\n## explicit; go 1.19\ngoogle.golang.org/genproto/googleapis/rpc/status\n# google.golang.org/grpc v1.59.0\n## explicit; go 1.19\ngoogle.golang.org/grpc\ngoogle.golang.org/grpc/attributes\ngoogle.golang.org/grpc/backoff\ngoogle.golang.org/grpc/balancer\ngoogle.golang.org/grpc/balancer/base\ngoogle.golang.org/grpc/balancer/grpclb/state\ngoogle.golang.org/grpc/balancer/roundrobin\ngoogle.golang.org/grpc/binarylog/grpc_binarylog_v1\ngoogle.golang.org/grpc/channelz\ngoogle.golang.org/grpc/codes\ngoogle.golang.org/grpc/connectivity\ngoogle.golang.org/grpc/credentials\ngoogle.golang.org/grpc/credentials/insecure\ngoogle.golang.org/grpc/encoding\ngoogle.golang.org/grpc/encoding/proto\ngoogle.golang.org/grpc/grpclog\ngoogle.golang.org/grpc/internal\ngoogle.golang.org/grpc/internal/backoff\ngoogle.golang.org/grpc/internal/balancer/gracefulswitch\ngoogle.golang.org/grpc/internal/balancerload\ngoogle.golang.org/grpc/internal/binarylog\ngoogle.golang.org/grpc/internal/buffer\ngoogle.golang.org/grpc/internal/channelz\ngoogle.golang.org/grpc/internal/credentials\ngoogle.golang.org/grpc/internal/envconfig\ngoogle.golang.org/grpc/internal/grpclog\ngoogle.golang.org/grpc/internal/grpcrand\ngoogle.golang.org/grpc/internal/grpcsync\ngoogle.golang.org/grpc/internal/grpcutil\ngoogle.golang.org/grpc/internal/idle\ngoogle.golang.org/grpc/internal/metadata\ngoogle.golang.org/grpc/internal/pretty\ngoogle.golang.org/grpc/internal/resolver\ngoogle.golang.org/grpc/internal/resolver/dns\ngoogle.golang.org/grpc/internal/resolver/passthrough\ngoogle.golang.org/grpc/internal/resolver/unix\ngoogle.golang.org/grpc/internal/serviceconfig\ngoogle.golang.org/grpc/internal/status\ngoogle.golang.org/grpc/internal/syscall\ngoogle.golang.org/grpc/internal/transport\ngoogle.golang.org/grpc/internal/transport/networktype\ngoogle.golang.org/grpc/keepalive\ngoogle.golang.org/grpc/metadata\ngoogle.golang.org/grpc/peer\ngoogle.golang.org/grpc/resolver\ngoogle.golang.org/grpc/resolver/manual\ngoogle.golang.org/grpc/serviceconfig\ngoogle.golang.org/grpc/stats\ngoogle.golang.org/grpc/status\ngoogle.golang.org/grpc/tap\n# google.golang.org/protobuf v1.31.0\n## explicit; go 1.11\ngoogle.golang.org/protobuf/encoding/protojson\ngoogle.golang.org/protobuf/encoding/prototext\ngoogle.golang.org/protobuf/encoding/protowire\ngoogle.golang.org/protobuf/internal/descfmt\ngoogle.golang.org/protobuf/internal/descopts\ngoogle.golang.org/protobuf/internal/detrand\ngoogle.golang.org/protobuf/internal/encoding/defval\ngoogle.golang.org/protobuf/internal/encoding/json\ngoogle.golang.org/protobuf/internal/encoding/messageset\ngoogle.golang.org/protobuf/internal/encoding/tag\ngoogle.golang.org/protobuf/internal/encoding/text\ngoogle.golang.org/protobuf/internal/errors\ngoogle.golang.org/protobuf/internal/filedesc\ngoogle.golang.org/protobuf/internal/filetype\ngoogle.golang.org/protobuf/internal/flags\ngoogle.golang.org/protobuf/internal/genid\ngoogle.golang.org/protobuf/internal/impl\ngoogle.golang.org/protobuf/internal/order\ngoogle.golang.org/protobuf/internal/pragma\ngoogle.golang.org/protobuf/internal/set\ngoogle.golang.org/protobuf/internal/strs\ngoogle.golang.org/protobuf/internal/version\ngoogle.golang.org/protobuf/proto\ngoogle.golang.org/protobuf/reflect/protodesc\ngoogle.golang.org/protobuf/reflect/protoreflect\ngoogle.golang.org/protobuf/reflect/protoregistry\ngoogle.golang.org/protobuf/runtime/protoiface\ngoogle.golang.org/protobuf/runtime/protoimpl\ngoogle.golang.org/protobuf/types/descriptorpb\ngoogle.golang.org/protobuf/types/known/anypb\ngoogle.golang.org/protobuf/types/known/durationpb\ngoogle.golang.org/protobuf/types/known/timestamppb\n# gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f\n## explicit\n# gopkg.in/yaml.v2 v2.4.0\n## explicit; go 1.15\ngopkg.in/yaml.v2\n"
  },
  {
    "path": "version.go",
    "content": "package main\n\nconst Version = \"0.17.0-dev\"\n\n// We want to replace this variable at build time with \"-ldflags -X main.GitSHA=xxx\", where const is not supported.\nvar GitSHA = \"\"\n"
  }
]